From xen-devel-bounces@lists.xenproject.org Tue Oct 01 03:12:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 03:12:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807683.1219281 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svTIu-0004xi-DS; Tue, 01 Oct 2024 03:12:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807683.1219281; Tue, 01 Oct 2024 03: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 1svTIu-0004xb-9t; Tue, 01 Oct 2024 03:12:00 +0000
Received: by outflank-mailman (input) for mailman id 807683;
 Tue, 01 Oct 2024 03:11: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 1svTIs-0004wu-E1; Tue, 01 Oct 2024 03:11: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 1svTIs-0007X1-CM; Tue, 01 Oct 2024 03:11: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 1svTIs-0003sx-1S; Tue, 01 Oct 2024 03:11:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svTIs-0004ZT-0J; Tue, 01 Oct 2024 03:11: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=VlwzKtSYCxhxhQZvzx7qZUJ3vhKOtzLwuz5UgsvM4GI=; b=oNMPZdtlYhYS5RkN9bP/JJXsLd
	9NOu6uUeehGWafqTYCp9Chf3chV+j618ssxS8kt6mQl1LoS/1UXR6PIbstS5wPrqOQgnFy12ZMU1K
	KV3xt9jEbkl+YQstFixs1BCtwWIlGbSbst3xyx7fJPYF2w8aidYoBbruUx1TfHVZS/jA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187908-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187908: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-arm64-arm64-xl-xsm:xen-boot:fail:heisenbug
    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-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl: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-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-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2: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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=f97f885c719849f55bade3b6303206e7717ecff8
X-Osstest-Versions-That:
    xen=457052167b4dbcda59e06300039302479cc1debf
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 01 Oct 2024 03:11:58 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-xl-xsm       8 xen-boot            fail pass in 187915-retest

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-xl-xsm     15 migrate-support-check fail in 187915 never pass
 test-arm64-arm64-xl-xsm 16 saverestore-support-check fail in 187915 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187899
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187899
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187899
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187899
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187899
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187899
 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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-arndale  16 saverestore-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  f97f885c719849f55bade3b6303206e7717ecff8
baseline version:
 xen                  457052167b4dbcda59e06300039302479cc1debf

Last test of basis   187899  2024-09-30 01:54:07 Z    1 days
Testing same since   187908  2024-09-30 13:10:49 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Chen Jiqian <Jiqian.Chen@amd.com>
  Huang Rui <ray.huang@amd.com>
  Jan Beulich <jbeulich@suse.com>
  Jiqian Chen <Jiqian.Chen@amd.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Sergiy Kibrik <Sergiy_Kibrik@epam.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-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                                      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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   457052167b..f97f885c71  f97f885c719849f55bade3b6303206e7717ecff8 -> master


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 03:18:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 03:18:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807693.1219307 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svTPI-0005sB-9Y; Tue, 01 Oct 2024 03:18:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807693.1219307; Tue, 01 Oct 2024 03:18: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 1svTPI-0005s4-6f; Tue, 01 Oct 2024 03:18:36 +0000
Received: by outflank-mailman (input) for mailman id 807693;
 Tue, 01 Oct 2024 03:18: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 1svTPH-0005ru-Ei; Tue, 01 Oct 2024 03:18: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 1svTPH-0007jl-4A; Tue, 01 Oct 2024 03:18: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 1svTPG-00042L-OJ; Tue, 01 Oct 2024 03:18:34 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svTPG-0007Dt-No; Tue, 01 Oct 2024 03:18: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=2l13ge6DSvYmiEalhK+vG83aIRsylpOWWUYdUuhtZ2U=; b=dlK4YkX9R1av5PFrhQE2w6POVz
	VdIm5kvf1ryTuBvKeADpVHhsw7wifNqPXZ7syrSWpwAFuE3PxdITskLrpuO3fUZXwacR7GKP6Q1Da
	tugYYZYDyCGGXCYUnrBnJyS3kQ6nkKa58FBSeTZbfAg5lMp6qOEYraJyLUYPO+9XUSDE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187914-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187914: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=4f4673846fc9d6fc1c10a6c025da4739d872a6a0
X-Osstest-Versions-That:
    ovmf=c95233b8525ca6828921affd1496146cff262e65
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 01 Oct 2024 03:18:34 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 4f4673846fc9d6fc1c10a6c025da4739d872a6a0
baseline version:
 ovmf                 c95233b8525ca6828921affd1496146cff262e65

Last test of basis   187911  2024-09-30 18:43:17 Z    0 days
Testing same since   187914  2024-10-01 01:43:57 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    


------------------------------------------------------------
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
   c95233b852..4f4673846f  4f4673846fc9d6fc1c10a6c025da4739d872a6a0 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 05:25:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 05:25:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807703.1219317 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svVO9-0004LO-5U; Tue, 01 Oct 2024 05:25:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807703.1219317; Tue, 01 Oct 2024 05: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 1svVO9-0004LH-1f; Tue, 01 Oct 2024 05:25:33 +0000
Received: by outflank-mailman (input) for mailman id 807703;
 Tue, 01 Oct 2024 05:25: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=t6QT=Q5=bugseng.com=roberto.bagnara@srs-se1.protection.inumbo.net>)
 id 1svVO7-0004LB-FA
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 05:25:31 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 91823bc6-7fb5-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 07:25:28 +0200 (CEST)
Received: from [192.168.1.219] (unknown [176.206.49.208])
 by support.bugseng.com (Postfix) with ESMTPSA id DB6034EE0744;
 Tue,  1 Oct 2024 07:25:26 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91823bc6-7fb5-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1727760327; bh=54FFJV/NJX54G+G6luBnoK5AHBpf3668S/97M0l0ErQ=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=JznBYWrhqlBRnfvlSFUc+d9EkUhjKHXZ4FglHFj6rs2YFD2Gb37+bdbYIHXMlwgxd
	 F4oeOfq4U1uq/gBNuQQLwVpiaaSBV1+CZzP3KjziRY7PH7VfClYd3aoLz2uyfBan0P
	 G4dJPNUDOMsd8XjTyg0IGR3xRIUKHkPieB680LReb7spzY2JQxIzBGe2yPMhIjBUSw
	 TwS/PuCCbEXGX8ZiFLlaBDfB8cFemhBZsYTBt4iJ6bNStju/YmdnjWg9lVJUo/4F7c
	 G/hVdr8s/7BpQM7zVfFFCrSrdsX4ZQ6kpdSjata4oKvFVSksaPUsWWeL4qXBIGtAKb
	 7oMe4QvWtLo4g==
Message-ID: <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
Date: Tue, 1 Oct 2024 07:25:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
To: Jan Beulich <jbeulich@suse.com>,
 Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
Content-Language: en-US
From: Roberto Bagnara <roberto.bagnara@bugseng.com>
In-Reply-To: <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2024-09-30 15:07, Jan Beulich wrote:
> On 30.09.2024 14:49, Federico Serafini wrote:
>> guest_handle_ok()'s expansion contains a sizeof() involving its
>> first argument which is guest_handle_cast().
>> The expansion of the latter, in turn, contains a variable
>> initialization.
>>
>> Since MISRA considers the initialization (even of a local variable)
>> a side effect, the chain of expansions mentioned above violates
>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
>> contain any expression which has potential side effect).
> 
> I'm afraid I need to ask for clarification of terminology and alike here.
> While the Misra doc has a section on Persistent Side Effects in its
> Glossary appendix, what constitutes a side effect from its pov isn't
> really spelled out anywhere. Which in turn raises the question whether it
> is indeed Misra (and not just Eclair) which deems initialization a side
> effect. This is even more so relevant as 13.6 talks of only expressions,
> yet initializers fall under declarations (in turn involving an expression
> on the rhs of the equal sign).
> 
> All the same of course affects patch 2 then, too.

MISRA C leaves the definition of "side effect" to the C Standard.
E.g., C18 5.1.2.3p2:

   Accessing a volatile object, modifying an object, modifying a file,
   or calling a function that does any of those operations are all
   side effects,[omitted irrelevant footnote reference] which are
   changes in the state of the execution environment.

The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
indirectly confirms that initialization is always a side effect.

Kind regards,

    Roberto


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 05:33:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 05:33:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807711.1219328 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svVVn-00065Z-VU; Tue, 01 Oct 2024 05:33:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807711.1219328; Tue, 01 Oct 2024 05:33: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 1svVVn-00065S-RI; Tue, 01 Oct 2024 05:33:27 +0000
Received: by outflank-mailman (input) for mailman id 807711;
 Tue, 01 Oct 2024 05:33: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=kbpD=Q5=kernel.org=jpoimboe@srs-se1.protection.inumbo.net>)
 id 1svVVm-00065L-Hh
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 05:33:26 +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 acecdf87-7fb6-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 07:33:24 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 3C7E15C43EF;
 Tue,  1 Oct 2024 05:33:18 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 746B3C4CEC6;
 Tue,  1 Oct 2024 05:33: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: acecdf87-7fb6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727760801;
	bh=ALkA67D2rrKVC3yq6JegYHLnnbAgFq9HD2IAj9UHyx0=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=kaVQMaga3ThzkwWDWuQk6rDB3RSXwRBcTwVGj8nhKaCxd8DGvY0nFCd3IYRsTljub
	 AZKP4ayTicXJrMtWGj3619WfldHuCsfWcGmrgx6E5KyTalkkIaPvDa79j8IX7+KCf9
	 tyL1xiG/I6r77qcfTBBo8IHr09HTVxQ5ElVlGqCP6PER85aneiWgpkfNVBK7/pOc2d
	 0IB7OJr+GBkkTfq3dlA5pz5ppoFJHfbV+YEe6fDprG8RfaDEijzbt4+Mc2WLN9Cu7U
	 G+M9qW3AxZz15VbiWMQ7LPrCzm4ijKVB3gpMkuSL/R/mT8sVLa15UwdAicPRjd0T7A
	 AapjojwaZZpvA==
Date: Mon, 30 Sep 2024 22:33:18 -0700
From: Josh Poimboeuf <jpoimboe@kernel.org>
To: Ard Biesheuvel <ardb+git@google.com>
Cc: linux-kernel@vger.kernel.org, Ard Biesheuvel <ardb@kernel.org>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Andy Lutomirski <luto@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Uros Bizjak <ubizjak@gmail.com>, Dennis Zhou <dennis@kernel.org>,
	Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Keith Packard <keithp@keithp.com>,
	Justin Stitt <justinstitt@google.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org,
	linux-pm@vger.kernel.org, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-efi@vger.kernel.org,
	linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org,
	linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org,
	rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [RFC PATCH 04/28] x86/boot: Permit GOTPCREL relocations for
 x86_64 builds
Message-ID: <20241001053318.elfwwiyluw6rlynz@treble>
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-34-ardb+git@google.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20240925150059.3955569-34-ardb+git@google.com>

On Wed, Sep 25, 2024 at 05:01:04PM +0200, Ard Biesheuvel wrote:
> +		if (r_type == R_X86_64_GOTPCREL) {
> +			Elf_Shdr *s = &secs[sec->shdr.sh_info].shdr;
> +			unsigned file_off = offset - s->sh_addr + s->sh_offset;
> +
> +			/*
> +			 * GOTPCREL relocations refer to instructions that load
> +			 * a 64-bit address via a 32-bit relative reference to
> +			 * the GOT.  In this case, it is the GOT entry that
> +			 * needs to be fixed up, not the immediate offset in
> +			 * the opcode. Note that the linker will have applied an
> +			 * addend of -4 to compensate for the delta between the
> +			 * relocation offset and the value of RIP when the
> +			 * instruction executes, and this needs to be backed out
> +			 * again. (Addends other than -4 are permitted in
> +			 * principle, but make no sense in practice so they are
> +			 * not supported.)
> +                         */
> +			if (rel->r_addend != -4) {
> +				die("invalid addend (%ld) for %s relocation: %s\n",
> +				    rel->r_addend, rel_type(r_type), symname);
> +				break;
> +			}

For x86 PC-relative addressing, the addend is <reloc offset> -
<subsequent insn offset>.  So a PC-relative addend can be something
other than -4 when the relocation applies to the middle of an
instruction, e.g.:

   5b381:	66 81 3d 00 00 00 00 01 06 	cmpw   $0x601,0x0(%rip)        # 5b38a <generic_validate_add_page+0x4a>	5b384: R_X86_64_PC32	boot_cpu_data-0x6

   5f283:	81 3d 00 00 00 00 ff ff ff 00 	cmpl   $0xffffff,0x0(%rip)        # 5f28d <x86_acpi_suspend_lowlevel+0x9d>	5f285: R_X86_64_PC32	smpboot_control-0x8

   72f67:       c6 05 00 00 00 00 01    movb   $0x1,0x0(%rip)        # 72f6e <sched_itmt_update_handler+0x6e>   72f69: R_X86_64_PC32    x86_topology_update-0x5

Presumably that could also happen with R_X86_64_GOTPCREL?

-- 
Josh


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 06:21:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 06:21:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807717.1219337 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svWFy-00048k-EC; Tue, 01 Oct 2024 06:21:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807717.1219337; Tue, 01 Oct 2024 06:21: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 1svWFy-00048d-BI; Tue, 01 Oct 2024 06:21:10 +0000
Received: by outflank-mailman (input) for mailman id 807717;
 Tue, 01 Oct 2024 06:21: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 1svWFw-00048T-UC; Tue, 01 Oct 2024 06:21: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 1svWFw-00030R-Mm; Tue, 01 Oct 2024 06: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 1svWFw-0002vd-6d; Tue, 01 Oct 2024 06:21:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svWFw-00040O-5v; Tue, 01 Oct 2024 06: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=e3212JKtJGMWwOkzLmVplpC3CX2FhB4/drDVu7SJxnI=; b=0aWpa74S8MHoHB7HKZRcSMhjKd
	QugeBjyA5Nz1tVR4zsSrAhk5ooiregE/ErPzLaX40IS5RhrcyatQOv6RYtmScBEpys1kzwhD4dpm2
	t8VwVbLPH/E89M8QgN6A7DyatXln64kQLIVhLVa8dakYb9wp4WNWY7eNp/2cHpuTh3Uw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187909-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-6.1 test] 187909: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-6.1:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=aa4cd140bba57b7064b4c7a7141bebd336d32087
X-Osstest-Versions-That:
    linux=e526b12bf9169887f8cfe5afed2b10e56bdca4c3
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 01 Oct 2024 06:21:08 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187749
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187749
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187749
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187749
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187749
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187749
 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     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-thunderx 15 migrate-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-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-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-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-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-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-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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                aa4cd140bba57b7064b4c7a7141bebd336d32087
baseline version:
 linux                e526b12bf9169887f8cfe5afed2b10e56bdca4c3

Last test of basis   187749  2024-09-18 17:43:23 Z   12 days
Testing same since   187909  2024-09-30 14:42:22 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Albert Jakieła <jakiela@google.com>
  Allen Pais <apais@linux.microsoft.com>
  Andrew Morton <akpm@linux-foundation.org>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Berg <benjamin.berg@intel.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chandan Babu R <chandanbabu@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Gabay <daniel.gabay@intel.com>
  Darrick J. Wong <djwong@kernel.org>
  Dave Chinner <david@fromorbit.com>
  Dave Chinner <dchinner@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Diogo Jahchan Koike <djahchankoike@gmail.com>
  Dmitry Antipov <dmantipov@yandex.ru>
  Edward Adam Davis <eadavis@qq.com>
  Emmanuel Grumbach <emmanuel.grumbach@intel.com>
  Eugene Shalygin <eugene.shalygin@gmail.com>
  Fabio Estevam <festevam@gmail.com>
  Ferry Meng <mengferry@linux.alibaba.com>
  Filipe Manana <fdmanana@suse.com>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Westphal <fw@strlen.de>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Guenter Roeck <linux@roeck-us.net>
  Hagar Hemdan <hagarhem@amazon.com>
  Hans de Goede <hdegoede@redhat.com>
  Hongbo Li <lihongbo22@huawei.com>
  hongchi.peng <hongchi.peng@siengine.com>
  Hongyu Jin <hongyu.jin@unisoc.com>
  Huacai Chen <chenhuacai@loongson.cn>
  Hugo SIMELIERE <hsimeliere.opensource@witekio.com>
  Jacky Chou <jacky_chou@aspeedtech.com>
  Jakub Kicinski <kuba@kernel.org>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jon Hunter <jonathanh@nvidia.com>
  Joseph Qi <joseph.qi@linux.alibaba.com>
  Junhao Xie <bigfoot@classfun.cn>
  Kailang Yang <kailang@realtek.com>
  Kent Gibson <warthog618@gmail.com>
  kernelci.org bot <bot@kernelci.org>
  Leah Rumancik <leah.rumancik@gmail.com>
  Liao Chen <liaochen4@huawei.com>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liviu Dudau <liviu.dudau@arm.com>
  Long Li <leo.lilong@huawei.com>
  Long Li <leo.lilong@huaweicloud.com>
  Luis Chamberlain <mcgrof@kernel.org>
  Marc Kleine-Budde <mkl@pengutronix.de>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Matthieu Baerts (NGI0) <matttbe@kernel.org>
  Michael Kelley <mhklinux@outlook.com>
  Mike Rapoport <rppt@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paulo Alcantara (Red Hat) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Pavel Machek (CIP) <pavel@denx.de>
  Peter Schneider <pschneider1968@googlemail.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
  Ron Economos <re@w6rz.net>
  Ross Brown <true.robot.ross@gmail.com>
  Salvatore Bonaccorso <carnil@debian.org>
  Sasha Levin <sashal@kernel.org>
  Sherry Yang <sherry.yang@oracle.com>
  Shiyang Ruan <ruansy.fnst@fujitsu.com>
  Shuah Khan <skhan@linuxfoundation.org>
  Steve French <stfrench@microsoft.com>
  Sumeet Pawnikar <sumeet.r.pawnikar@intel.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Blocher <thomas.blocher@ek-dev.de>
  Tianyang Zhang <zhangtianyang@loongson.cn>
  Tony Luck <tony.luck@intel.com>
  Wei Liu <wei.liu@kernel.org>
  Wengang Wang <wen.gang.wang@oracle.com>
  Wu Guanghao <wuguanghao3@huawei.com>
  Ye Bin <yebin10@huawei.com>
  Yibin Ding <yibin.ding@unisoc.com>
  zhang jiao <zhangjiao2@cmss.chinamobile.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   e526b12bf916..aa4cd140bba5  aa4cd140bba57b7064b4c7a7141bebd336d32087 -> tested/linux-6.1


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 06:27:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 06:27:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807727.1219347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svWMF-0004sf-3v; Tue, 01 Oct 2024 06:27:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807727.1219347; Tue, 01 Oct 2024 06: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 1svWMF-0004sY-0j; Tue, 01 Oct 2024 06:27:39 +0000
Received: by outflank-mailman (input) for mailman id 807727;
 Tue, 01 Oct 2024 06:27: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svWMD-0004sS-79
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 06:27:37 +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 3fa5a6a0-7fbe-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 08:27:36 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a93c1cc74fdso773553166b.3
 for <xen-devel@lists.xenproject.org>; Mon, 30 Sep 2024 23:27:36 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297be12sm657189566b.179.2024.09.30.23.27.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 30 Sep 2024 23:27:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3fa5a6a0-7fbe-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727764055; x=1728368855; 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=jdpED8HK8tuc9VWQI7WO7MSrDU0AXIkbbzAiwhTKjpY=;
        b=esNtJFYT5HQYpLOIsu4H2iXrA4JhyIx7P3UiOVMmqvsOs4iLbATsawyh4wQ1XW+Fub
         +eZ2zkSPEb4eQFmw20UJq4Z8JAOuOzG21uJ8UZivNsVBwjtFcMhqyhOJiljmaErEQuSo
         axzlHWFRZ5pejZfRYMWVijyhPGthtI0dUk7zzuFLdAWM1yfbsOzeUENIfMS8VPBLjqJa
         XeNzIdGj2TcClluGiyq6rAzDFQ42zGxMCPRNUEYLTsTDvxBjnL2USOgklghpAvGnkh2O
         /jrYRtFK52SZ50uKz085nKULCLVkaxDaYA6l6/i0MUpy7KnD6gAvf3xDkzxj4pr1OppW
         dM2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727764055; x=1728368855;
        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=jdpED8HK8tuc9VWQI7WO7MSrDU0AXIkbbzAiwhTKjpY=;
        b=AjX7tIB9LCAUrdfY/A0bR+P1TXVI+xf09zxgyhZF/y4m5GZfypSKzGj+Rh432wd101
         yv1NYPeexVY4cBEi8DYsgBXch+Um8jtrthK8p3b48+KZQa8bxDKVxUy916e936HIkcCP
         HpCYwIr5mMboD/NQIoLBYoxKLbYouYZsOz4ADfbwXT8Jtm3eL8ojNAJKC7Pg8tfZBUx1
         ou43eGnGAgYJLQ6NuW+OYywvNDXrEfizgtDDHA6ch5GdUjcQCyJnnTlK/1nrIGbw885n
         eDPbkTaKRhpP4UvHj1yGPmOLU8+v7hPkJLd3hAm6U1Gfb70OGNIsqaAvVRXa8QisaGBY
         pzLA==
X-Forwarded-Encrypted: i=1; AJvYcCW2TluIilsHQojJAwogwj+uh8jH+IIuvWkqarPhWAppJtuBaJonpFeRT91OR03m6FEFV8iZAuFUwH4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyK+8wVfBLdSJDKotVkAZDwHhHO1TFsR7kakJr5QqVwLfJeFZOd
	He2cMI5LIYj5Pf6PrZPxl2Sm5jxOHcEp4haJDeGHTgBuS/kXeF64hT3CycL7jw==
X-Google-Smtp-Source: AGHT+IEtaQ5mTvoa+jVWlhnf+xIWnX4zh430leC/vClMBJ2SI3D6hY/W9rWD+fn+ncpfwWyUgBVelA==
X-Received: by 2002:a17:907:1c24:b0:a8d:2faf:d341 with SMTP id a640c23a62f3a-a93c48ee926mr1658562366b.10.1727764055504;
        Mon, 30 Sep 2024 23:27:35 -0700 (PDT)
Message-ID: <f696a8b4-02f5-4b2e-9417-db94bf354a32@suse.com>
Date: Tue, 1 Oct 2024 08:27:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v6] CODING_STYLE: Add a section on header guards
 naming conventions
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Alessandro Zucchelli <alessandro.zucchelli@bugseng.com>,
 consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
References: <a68267c7465a9b0d2ed8f844a5e0145de50b0f3a.1725550985.git.alessandro.zucchelli@bugseng.com>
 <7357f6e8-2630-4027-b339-eedab9ae48c5@suse.com>
 <alpine.DEB.2.22.394.2409092149210.3672@ubuntu-linux-20-04-desktop>
 <44738f93-e99b-4f1c-9ed3-59dd2eac7aff@suse.com>
 <alpine.DEB.2.22.394.2409111808580.611587@ubuntu-linux-20-04-desktop>
 <24e33cc2-c9eb-4609-a074-51df81997aba@suse.com>
 <alpine.DEB.2.22.394.2409301430090.451631@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.2409301430090.451631@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 23:40, Stefano Stabellini wrote:
> On Mon, 30 Sep 2024, Jan Beulich wrote:
>> On 12.09.2024 03:13, Stefano Stabellini wrote:
>>> Hi Jan, we have gone back and forth on this a few times, but neither
>>> Alessandro nor I fully understand your perspective. To help streamline
>>> the process and save time for everyone, I suggest you provide an example
>>> of the rules written in the style you believe is appropriate. Once you
>>> set the initial direction, Alessandro and I can continue and complete
>>> the rest in that preferred style.
>>
>> Header inclusion guards
>> -----------------------
>>
>> Unless otherwise specified, all header files should include proper
>> guards to prevent multiple inclusions. The following naming conventions
>> apply:
>>
>> - Guard names are derived from directory path underneath xen/ and the
>>   actual file name.  Path components are separated by double underscores.
>>   Alphabetic characters are converted to upper case.  Non-alphanumeric
>>   characters are replaced by single underscores.
>> - Certain directory components are omitted, to keep identifier length
>>   bounded:
>>   - The top level include/,
>>   - Any architecture's arch/<arch>/include/asm/ collapses to
>>     ASM__<ARCH>__,
>>   - Architecture-specific private files' arch/.
>>
>> For example:
>>
>> - Xen headers: XEN__<filename>_H
>>   - include/xen/something.h -> XEN__SOMETHING_H
>>
>> - asm-generic headers: ASM_GENERIC__<filename>_H
>>   - include/asm-generic/something.h -> ASM_GENERIC__SOMETHING_H
>>
>> - arch-specific headers: ASM__<architecture>__<subdir>__<filename>_H
>>   - arch/x86/include/asm/something.h -> ASM__X86__SOMETHING_H
>>
>> - Private headers: <dir>__<filename>_H
>>   - arch/arm/arm64/lib/something.h -> ARM__ARM64__LIB__SOMETHING_H
>>   - arch/x86/lib/something.h -> X86__LIB__SOMETHING_H
>>   - common/something.h -> COMMON__SOMETHING_H
>>
>> Note that this requires some discipline on the naming of future new
>> sub-directories: There shouldn't be any random asm/ one anywhere, for
> 
> I would remove the word "random"

Fine with me; perhaps use "other" in its place?

>> example.  Nor should any new ports be named the same as top-level (within
>> xen/) directories.  Which may in turn require some care if any new top-
>> level directories were to be added.  Rule of thumb: Whenever a new sub-
>> directory is added, check the rules for no collisions to result.
> 
> I guess you meant "no collisions among the results" ?

No, that would be insufficient. I specifically mean to say that there
should be no _potential_ for collisions, i.e. not just "among the
results", but also for hypothetical files added underneath such new
subdirs. Would "for no collisions to potentially result" be more clear
from you perspective?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 06:32:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 06:32:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807734.1219357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svWQk-0006Pq-NX; Tue, 01 Oct 2024 06:32:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807734.1219357; Tue, 01 Oct 2024 06:32: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 1svWQk-0006Pj-Kk; Tue, 01 Oct 2024 06:32:18 +0000
Received: by outflank-mailman (input) for mailman id 807734;
 Tue, 01 Oct 2024 06:32: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svWQj-0006Pd-Ba
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 06:32: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 e62553c6-7fbe-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 08:32:15 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so967768566b.1
 for <xen-devel@lists.xenproject.org>; Mon, 30 Sep 2024 23:32:15 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2775d23sm652331166b.4.2024.09.30.23.32.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 30 Sep 2024 23:32:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e62553c6-7fbe-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727764335; x=1728369135; 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=rPf8JphMMaG1HIFqoHxUuiHW3PDeMWgjRaCIs+S372U=;
        b=aLKAepyRiOnDRcagMf5E/gIzgixZbxM4DayeRs+xyOuE0HaUOL3LyowiXrEyQ4rm6l
         r6+Ewo+Qjzjn9V07oEAnvEeqO8kmnix9Hd2PwtXywFaYR2NjtrwqdQrb6EicDnlu13j0
         XelHr5sSSb14wbWSxDhjcOC+plJuivEYq4yiG4U8Xxls65Z40JJZGgZHbx+xGciKA0zj
         lxfLLZP+74VdPL2XZX1Z3sdBIvZv65FoS5+ee+3GwGMKnoqeo8YdDgDSZmK55v3ABgSA
         26cXO4U23bUTDoeGWv7Go1T2KS8t8n++boQU5Qk6CYHdINsPJJx10aKNCyv3wWZTB4Wk
         MKWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727764335; x=1728369135;
        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=rPf8JphMMaG1HIFqoHxUuiHW3PDeMWgjRaCIs+S372U=;
        b=RbkCBbyihEF8iyzQJDr86fGUZJ1KF1NZ53zBFB3QDzi33MTxc192AP/MPA2oIN3wiT
         ro3cd76Hk0rla3xcBTbUCLPY2aNzXUdf/d3TXX41h0dTcEDgY1pabntDEgw0wwbV6Zz/
         75BSuuGpGRC6U1CtLV4TAaZKaJ0/eEjAlmUE2pvhnSmxK1YF3glhVEeC1QeYiIjAIQul
         gTMFkQGkbgDjoMSlHvZ1gtsOOXOPdtAegnTsyjQPSN7kQv9+v2Xo8CXsAXTjmIIQEKro
         cH3EMJD+k52uwp08w7yuz+ZdPv/imyp6zQySg+mvtN6ff6or5bcff+i9hQ8i5piw+WgP
         Ci8g==
X-Forwarded-Encrypted: i=1; AJvYcCV49ixHaZbQ3TCXkKsMi8ZlIwO108pDth9gFiyKjGP/YTk6ZGCY3CmhU4dxllXGwRcvKz7KI6XIZds=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywt6zMxZcZZwdN2+csWMxzMC542j1ApFc9CR/aCmUgRITymJ3ch
	vJQ1S6VLNbxTolujmNMoaLIUNIwT9IE5NRQTfie6usciueKXy7my/LnW8ljT6Q==
X-Google-Smtp-Source: AGHT+IGKli2++IfpWNTtTd9sMbTfHPF5i+latI4NG+eq5cx9vJnd5La69x9uR5j9fS7vYnVZl4blug==
X-Received: by 2002:a17:907:1ca7:b0:a8d:28dc:9e2b with SMTP id a640c23a62f3a-a93c4a68381mr1783607766b.44.1727764334930;
        Mon, 30 Sep 2024 23:32:14 -0700 (PDT)
Message-ID: <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
Date: Tue, 1 Oct 2024 08:32:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
To: Roberto Bagnara <roberto.bagnara@bugseng.com>,
 Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
 <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.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: <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 07:25, Roberto Bagnara wrote:
> On 2024-09-30 15:07, Jan Beulich wrote:
>> On 30.09.2024 14:49, Federico Serafini wrote:
>>> guest_handle_ok()'s expansion contains a sizeof() involving its
>>> first argument which is guest_handle_cast().
>>> The expansion of the latter, in turn, contains a variable
>>> initialization.
>>>
>>> Since MISRA considers the initialization (even of a local variable)
>>> a side effect, the chain of expansions mentioned above violates
>>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
>>> contain any expression which has potential side effect).
>>
>> I'm afraid I need to ask for clarification of terminology and alike here.
>> While the Misra doc has a section on Persistent Side Effects in its
>> Glossary appendix, what constitutes a side effect from its pov isn't
>> really spelled out anywhere. Which in turn raises the question whether it
>> is indeed Misra (and not just Eclair) which deems initialization a side
>> effect. This is even more so relevant as 13.6 talks of only expressions,
>> yet initializers fall under declarations (in turn involving an expression
>> on the rhs of the equal sign).
>>
>> All the same of course affects patch 2 then, too.
> 
> MISRA C leaves the definition of "side effect" to the C Standard.
> E.g., C18 5.1.2.3p2:
> 
>    Accessing a volatile object, modifying an object, modifying a file,
>    or calling a function that does any of those operations are all
>    side effects,[omitted irrelevant footnote reference] which are
>    changes in the state of the execution environment.
> 
> The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
> indirectly confirms that initialization is always a side effect.

Hmm, that's interesting: There's indeed an example with an initializer
there. Yet to me the text you quote from the C standard does not say
that initialization is a side effect - it would be "modifying an
object" aiui, yet ahead of initialization being complete the object
doesn't "exist" imo, and hence can be "modified" only afterwards.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 06:51:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 06:51:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807744.1219366 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svWjZ-0000zR-3p; Tue, 01 Oct 2024 06:51:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807744.1219366; Tue, 01 Oct 2024 06:51: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 1svWjZ-0000zK-0p; Tue, 01 Oct 2024 06:51:45 +0000
Received: by outflank-mailman (input) for mailman id 807744;
 Tue, 01 Oct 2024 06:51: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svWjX-0000zE-Jq
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 06:51:43 +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 9d977090-7fc1-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 08:51:42 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so752785066b.0
 for <xen-devel@lists.xenproject.org>; Mon, 30 Sep 2024 23:51:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c277723esm652918666b.7.2024.09.30.23.51.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 30 Sep 2024 23:51:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d977090-7fc1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727765502; x=1728370302; 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=8zGY+OJrdYmX0G9sEikgnWJLXAaxn5SiznBF4h7VZG4=;
        b=WWKFuN9ZufxlKwCvT2tvXkD1QBawc4kXm10JWYxUrtWkOe3yYX7AvDlDzqbCBrnyAx
         tCQu7lwzfI0jn+KTA10XUai8j7kZfYdNXHNexjt+jlmdzrbbShVJFHjqHgWvVFjlrPiK
         je9N9olGZCefgX9ACXnj/KxhffgxDPNRi25A9bbQ2p93oWSqDmPiLPTYooshFuMAZO2Z
         wroGBDwujEZI8m4tKH8JwsYvNzdeIKP7CRuPV5yaECBfKWn5Hmnx3NZcrzgXfly1OJl9
         T0EvMVtm6a21px7IU23AlGtbnm7FtL69cX2nPh+JINInBkpSr60YWCqFw16/dD9hDJNS
         jpxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727765502; x=1728370302;
        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=8zGY+OJrdYmX0G9sEikgnWJLXAaxn5SiznBF4h7VZG4=;
        b=DTt4fHKEfPFpgJ8UG3PBdivMs/W1AnjHlG2oLf445XyZ8Ep4Vik2Tfwa2yYSU3i3gj
         ik3KxBDIf06/qj43Q4d814KgP6a5vEzhDP06mtLLwkHERmigJ4eUDpjhfYbr/ka1SSm9
         9MfEtzPAtchJ5hMV3Z5XMfLUhRAj1ShvAbwqtXy54zWXGVOp+agpsmDwBD8mbAQIFR06
         R5IbP5e5kcAekevweqtKOEzhskddRHODwYH6/BXIdRhbpHVA1J1nbo1+mSDLidGwNJOg
         AHgpP810mr87Gf+F+24fY5g8Ih0612u6LWAwe0m8KW4j7G3NdcX4JF1TFn3JbAvofRlX
         9Dig==
X-Forwarded-Encrypted: i=1; AJvYcCXoJJx7ZksmCbd/V3LMDxAVrZd1Fr77ozmi5dE4oMSye2vGLgVB3/W2EJkQnm/4LISWko6n4WkAVNA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzQdu5D9BaH5yBAxGPAajxCnpAn87gvxyFgWRVfOSTLotbzy0ke
	VMa/e4Zfq7Jtpsa6QrvjKzRX1PyUrTIPNhZrL/o66yWFLy8O7jpzDp3Ium3T6w==
X-Google-Smtp-Source: AGHT+IE6MykuZp/13za5xckSxXeSQIN4HmiPcMGcWZ6OoDrJDNMjr1wls2EIzmhOTW7LbpSfZQVC5Q==
X-Received: by 2002:a17:907:9450:b0:a8a:8d81:97b2 with SMTP id a640c23a62f3a-a93c4946cebmr1495065566b.34.1727765501619;
        Mon, 30 Sep 2024 23:51:41 -0700 (PDT)
Message-ID: <60eb8a53-20b3-4b34-91f0-8d22332cf119@suse.com>
Date: Tue, 1 Oct 2024 08:51:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen: move per-cpu area management into common code
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>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <584dab4111041a660377f677cd829d4b2b4b8b2d.1727714022.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: <584dab4111041a660377f677cd829d4b2b4b8b2d.1727714022.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 18:39, Oleksii Kurochko wrote:
> Centralize per-cpu area management to reduce code duplication and
> enhance maintainability across architectures.
> 
> The per-cpu area management code, which is largely common among
> architectures, is moved to a shared implementation in
> xen/common/percpu.c. This change includes:
>  * Remove percpu.c from the X86 and Arm architectures.
>  * For x86, define INVALID_PERCPU_AREAS and PARK_OFFLINE_CPUS_VAR.
>  * Drop the declaration of __per_cpu_offset[] from stubs.c in
>    PPC and RISC-V to facilitate the build of the common per-cpu code.
> 
> No functional changes for x86.
> 
> For Arm add support of CPU_RESUME_FAILED, CPU_REMOVE and freeing of
> percpu in the case when system_state != SYS_STATE_suspend.
> 
> Move the asm-generic/percpu.h definitions to xen/percpu.h, except for
> __per_cpu_start[] and __per_cpu_data_end[], which are moved to
> common/percpu.c as they are only used in common/percpu.c.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 01 06:56:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 06:56:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807748.1219376 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svWoB-0001fH-Lz; Tue, 01 Oct 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 807748.1219376; Tue, 01 Oct 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 1svWoB-0001fA-JD; Tue, 01 Oct 2024 06:56:31 +0000
Received: by outflank-mailman (input) for mailman id 807748;
 Tue, 01 Oct 2024 06:56: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=AZty=Q5=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1svWoA-0001aF-Gv
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 06:56: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 47efcbc5-7fc2-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 08:56:29 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 293955C542D
 for <xen-devel@lists.xenproject.org>; Tue,  1 Oct 2024 06:56:23 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6D65BC4CEE6
 for <xen-devel@lists.xenproject.org>; Tue,  1 Oct 2024 06:56:26 +0000 (UTC)
Received: by mail-lj1-f171.google.com with SMTP id
 38308e7fff4ca-2fad75b46a3so10498051fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 30 Sep 2024 23:56:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47efcbc5-7fc2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727765786;
	bh=D6cq+9W5AquN6Xivssj0gJ1Jk4JQ0mfYEn2CA9+npXI=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=XwBYHQazazbTC4OwId3vnrFAgc6CpLItRV3CT+Z8Gu23wph58CKcedFo7OLdarXFj
	 CfBr/fhizt+I319h5X05aQeNiGEwLpOlTkxFwdMvZp5tn26hL9grIrgluiUanZgVrj
	 0ryllcIGgHjRky7zD5Cq7OsKZqK4RkRI4/CJstCL2fYk+KBEVoQob6cme8zRgaORsv
	 8IC6faZd2aGl4jfIjpTmpGu86/o4/aahDo/ckVnRLhdwe1cSJTcyxtGmwBVe5kWta6
	 zAbfWFj5Dzv5UH3KDkLJ7Igmws7XQ8kbnjqJSF3yJWaphRu3BKFYLpSFA19jzUWCHz
	 4bi5hwVR6eikg==
X-Forwarded-Encrypted: i=1; AJvYcCVg/TAnaeJ5Y1F6++ObZkjkVWvlae+1RhtHfVVKfRZ9k9Gs+nLmcH42baUBJIrQOUkR9mC1w3sNT6M=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx3xwHXHCc5FBbCdleURx7jMu5UwsI2O73EemMTO3P/EV93DEAa
	a98RDNdTNXiCxEHjlH01SFgVfprX7rSHhJ7us/igIv+rwRQHSZjYg9vb+TOzk6aXUdZRhRCOWwQ
	ugms8nSXJX09gWjmxIna/Bef+zx8=
X-Google-Smtp-Source: AGHT+IGjtx2HGlRUUxfHLsgxZrMc5HOLfFzS5jvtirjyIPXJpZcKEYpq6gBAXQaDQEq6eyp0Tbbah6SY1D/EzYnBAjs=
X-Received: by 2002:a05:6512:3b8d:b0:52b:bf8e:ffea with SMTP id
 2adb3069b0e04-5389fc6429dmr8367147e87.40.1727765784329; Mon, 30 Sep 2024
 23:56:24 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-34-ardb+git@google.com> <20241001053318.elfwwiyluw6rlynz@treble>
In-Reply-To: <20241001053318.elfwwiyluw6rlynz@treble>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Tue, 1 Oct 2024 08:56:12 +0200
X-Gmail-Original-Message-ID: <CAMj1kXFyd7zDqnFzHTZmcR+ktxRVdOnuF-VOW+E0PYPNaQGXzQ@mail.gmail.com>
Message-ID: <CAMj1kXFyd7zDqnFzHTZmcR+ktxRVdOnuF-VOW+E0PYPNaQGXzQ@mail.gmail.com>
Subject: Re: [RFC PATCH 04/28] x86/boot: Permit GOTPCREL relocations for
 x86_64 builds
To: Josh Poimboeuf <jpoimboe@kernel.org>
Cc: Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, x86@kernel.org, 
	"H. Peter Anvin" <hpa@zytor.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, 
	Uros Bizjak <ubizjak@gmail.com>, Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, 
	Christoph Lameter <cl@linux.com>, Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, 
	Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>, 
	Adrian Hunter <adrian.hunter@intel.com>, Kan Liang <kan.liang@linux.intel.com>, 
	linux-doc@vger.kernel.org, linux-pm@vger.kernel.org, kvm@vger.kernel.org, 
	xen-devel@lists.xenproject.org, linux-efi@vger.kernel.org, 
	linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org, 
	linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, 
	rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"

On Tue, 1 Oct 2024 at 07:33, Josh Poimboeuf <jpoimboe@kernel.org> wrote:
>
> On Wed, Sep 25, 2024 at 05:01:04PM +0200, Ard Biesheuvel wrote:
> > +             if (r_type == R_X86_64_GOTPCREL) {
> > +                     Elf_Shdr *s = &secs[sec->shdr.sh_info].shdr;
> > +                     unsigned file_off = offset - s->sh_addr + s->sh_offset;
> > +
> > +                     /*
> > +                      * GOTPCREL relocations refer to instructions that load
> > +                      * a 64-bit address via a 32-bit relative reference to
> > +                      * the GOT.  In this case, it is the GOT entry that
> > +                      * needs to be fixed up, not the immediate offset in
> > +                      * the opcode. Note that the linker will have applied an
> > +                      * addend of -4 to compensate for the delta between the
> > +                      * relocation offset and the value of RIP when the
> > +                      * instruction executes, and this needs to be backed out
> > +                      * again. (Addends other than -4 are permitted in
> > +                      * principle, but make no sense in practice so they are
> > +                      * not supported.)
> > +                         */
> > +                     if (rel->r_addend != -4) {
> > +                             die("invalid addend (%ld) for %s relocation: %s\n",
> > +                                 rel->r_addend, rel_type(r_type), symname);
> > +                             break;
> > +                     }
>
> For x86 PC-relative addressing, the addend is <reloc offset> -
> <subsequent insn offset>.  So a PC-relative addend can be something
> other than -4 when the relocation applies to the middle of an
> instruction, e.g.:
>
>    5b381:       66 81 3d 00 00 00 00 01 06      cmpw   $0x601,0x0(%rip)        # 5b38a <generic_validate_add_page+0x4a> 5b384: R_X86_64_PC32    boot_cpu_data-0x6
>
>    5f283:       81 3d 00 00 00 00 ff ff ff 00   cmpl   $0xffffff,0x0(%rip)        # 5f28d <x86_acpi_suspend_lowlevel+0x9d>      5f285: R_X86_64_PC32    smpboot_control-0x8
>
>    72f67:       c6 05 00 00 00 00 01    movb   $0x1,0x0(%rip)        # 72f6e <sched_itmt_update_handler+0x6e>   72f69: R_X86_64_PC32    x86_topology_update-0x5
>
> Presumably that could also happen with R_X86_64_GOTPCREL?
>

In theory, yes.

But for the class of GOTPCREL relaxable instructions listed in the
psABI, the addend is always -4, and these are the only ones we might
expect from the compiler when using -fpic with 'hidden' visibility
and/or -mdirect-extern-access. Note that the memory operand
foo@GOTPCREL(%rip) produces the *address* of foo, and so it is always
the source operand, appearing at the end of the encoding.

Alternatively, we might simply subtract the addend from 'offset'
before applying the displacement from the opcode.

Note that this code gets removed again in the last patch, after
switching to PIE linking.


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 07:11:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 07:11:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807753.1219387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svX2j-0004e4-Uf; Tue, 01 Oct 2024 07:11:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807753.1219387; Tue, 01 Oct 2024 07:11: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 1svX2j-0004dx-R8; Tue, 01 Oct 2024 07:11:33 +0000
Received: by outflank-mailman (input) for mailman id 807753;
 Tue, 01 Oct 2024 07:11: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svX2i-0004dr-Gr
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 07:11:32 +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 6168369a-7fc4-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 09:11:31 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a8a6d1766a7so752037266b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 00:11:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2978f14sm666055766b.149.2024.10.01.00.11.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 00:11:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6168369a-7fc4-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727766689; x=1728371489; 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=f5j8pXeTpP1J7tFjGmhfnuw1XIVE3NwwH4Cee95KIrQ=;
        b=Fc4z/BLtjdTdHUcmJX9ffzzySOn4O1IZj7ZktnFAeHF26THiZVv0yKXv4zeZyIztFh
         MF7T/d58UYXfLdIZB9lnAQagfBycre0Z6SgQA++0FAFcuieg1sKQgNCLyDHcRXIwvE7A
         XCUpmMCyjTLk1PXUtcjcsOduiAdPE/d9EtMx64CZA/mI3QUnIOkYCkswMtY0wILmsYK9
         +rpy33LEYmVSNrY++heCU8XWZ8X/ORV7oNDm2w940syMHH7a/yLrQLVIZoTCuok8qLjn
         4gnH7+Zrc6gez6x9l0DMes+Zpmb+BnzVCZ1JbaVHSj/N+r5dYRIF+5GtkX1Fd42IeW8K
         Tpkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727766689; x=1728371489;
        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=f5j8pXeTpP1J7tFjGmhfnuw1XIVE3NwwH4Cee95KIrQ=;
        b=hlDxYbtlC42NT4BsFofwKkqhyRG3Lx+uuv8Iyl9zYREf4Q40UrOVH1M1I8bZBiOn5N
         k771fDOIDeeTEXWm/q+w+4jqiriRFaXBUKE5i80kngT+f777x3Jta+1l0wUuDQWfCCpq
         32rWu/UGZ7TddNaaUO4yJwLje8CGMdeovEVjPFeNY4meIio3CdqSJRdf93iLEYZjyNyZ
         KyPN5QeuNyn+wKxM0+TmovtSVMcMButGV1Z9iskm4fZkJ3BdgD1jwBEuvQAMw7kpTV6G
         hbNiaqJMifYS6NKGL5x8k4EQWl/jS/2j5cxTnFkexLvsn+kbAVFPXS+uHn7DLtrSzN04
         lkZw==
X-Forwarded-Encrypted: i=1; AJvYcCXp2M6R1Pw9408e9ovYBwqJCzIZWjO2QJ8YpeDgsxOwoHDy2ximeoCiS7xuD1lNgLcVZY9KHZ9NNs8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxAQDEAkUsaI0Zxrcz32SZdCyjIaT0ri20JrCNCbzBMFkEXuYhL
	FiTEOy49qtZLwV6gTj2Mu0yHttieRmDqZegcj5nExolmgiVO9F2ZlB86M9WNo3w7I6Ft9xY0IkA
	=
X-Google-Smtp-Source: AGHT+IFMSBsomuLjw+G2UfMZkYZqe5S9EgG5MkonLuzeOs5b8IPGch+b1kC6RDY1t+LFHTqYfG864g==
X-Received: by 2002:a17:907:948a:b0:a86:8917:fcd6 with SMTP id a640c23a62f3a-a93c4c2ef49mr1424803666b.60.1727766689157;
        Tue, 01 Oct 2024 00:11:29 -0700 (PDT)
Message-ID: <76819790-abde-4b61-8dd7-68dd9db8cfd1@suse.com>
Date: Tue, 1 Oct 2024 09:11:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/pv: Rework guest_io_okay() to return X86EMUL_*
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20240930161837.1248144-2-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: <20240930161837.1248144-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 18:18, Andrew Cooper wrote:
> In order to fix a bug with guest_io_okay() (subsequent patch), rework
> guest_io_okay() to take in an emulation context, and return X86EMUL_* rather
> than a boolean.
> 
> For the failing case, take the opporunity to inject #GP explicitly, rather
> than returning X86EMUL_UNHANDLEABLE.  There is a logical difference between
> "we know what this is, and it's #GP", vs "we don't know what this is".
> 
> There is no change in practice as emulation is the final step on general #GP
> resolution, but returning X86EMUL_UNHANDLEABLE would be a latent bug if a
> subsequent action were to appear.
> 
> No practical change.

I think there is a small functional difference, see below.

> --- a/xen/arch/x86/pv/emul-priv-op.c
> +++ b/xen/arch/x86/pv/emul-priv-op.c
> @@ -156,14 +156,16 @@ static bool iopl_ok(const struct vcpu *v, const struct cpu_user_regs *regs)
>  }
>  
>  /* Has the guest requested sufficient permission for this I/O access? */
> -static bool guest_io_okay(unsigned int port, unsigned int bytes,
> -                          struct vcpu *v, struct cpu_user_regs *regs)
> +static int guest_io_okay(unsigned int port, unsigned int bytes,
> +                         struct x86_emulate_ctxt *ctxt)
>  {
> +    struct cpu_user_regs *regs = ctxt->regs;

const?

> @@ -190,10 +192,12 @@ static bool guest_io_okay(unsigned int port, unsigned int bytes,
>              toggle_guest_pt(v);
>  
>          if ( (x.mask & (((1 << bytes) - 1) << (port & 7))) == 0 )
> -            return true;
> +            return X86EMUL_OKAY;
>      }
>  
> -    return false;
> +    x86_emul_hw_exception(X86_EXC_GP, 0, ctxt);

do_general_protection() has

    /* Pass on GPF as is. */
    pv_inject_hw_exception(X86_EXC_GP, regs->error_code);

which may make a difference in case the insn changes under our feet.
The new behavior may even be deemed better, but the description then
would want to admit to this slight functional change. Then
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 07:18:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 07:18:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807762.1219398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svX9l-0005al-Ou; Tue, 01 Oct 2024 07:18:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807762.1219398; Tue, 01 Oct 2024 07:18: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 1svX9l-0005ae-Kj; Tue, 01 Oct 2024 07:18:49 +0000
Received: by outflank-mailman (input) for mailman id 807762;
 Tue, 01 Oct 2024 07:18: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=kbpD=Q5=kernel.org=jpoimboe@srs-se1.protection.inumbo.net>)
 id 1svX9k-0005aY-G8
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 07:18:48 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 656c3fe1-7fc5-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 09:18:46 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id BCA82A418C7;
 Tue,  1 Oct 2024 07:18:36 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5A764C4CEC6;
 Tue,  1 Oct 2024 07:18: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: 656c3fe1-7fc5-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727767124;
	bh=THnBpzHxCYIjdDtD+X6PsiIrzTiH+/AUT0R8bh8DnZw=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=h6hjsjhGiADhlEEyGcXO6Vn/U+HfO58lVjBiMdO8Rh1hG0Kwr+B3a+z+ZWeM46Nd2
	 cItPv6ENWSWMQ0EAZ+mfPykG1Z/dv4OqNqcdt+yMlbCd69OnjWC/b5VcZrbXCaSBxH
	 guR9eCirZTNct+9JbfDvcpeauWqAWJTLcWWKP93JPyHhe3mPaNzJCsmRSftnLrhzXA
	 NHzqwCqh/jeM5MxuBxi9N0MWlSF0ed2poDEBcOWpsi8qnrt1reKFuPIVx0Ck0B2F2W
	 JKPrHaJBDmNfjgf6moEX5kDawn6X99emoE1WKhyjmo6Jyj+hnfFNqmQLJMNScwlgJ+
	 v0Sdps/sNMDIA==
Date: Tue, 1 Oct 2024 00:18:41 -0700
From: Josh Poimboeuf <jpoimboe@kernel.org>
To: Ard Biesheuvel <ardb+git@google.com>
Cc: linux-kernel@vger.kernel.org, Ard Biesheuvel <ardb@kernel.org>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	Andy Lutomirski <luto@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Uros Bizjak <ubizjak@gmail.com>, Dennis Zhou <dennis@kernel.org>,
	Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>,
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Keith Packard <keithp@keithp.com>,
	Justin Stitt <justinstitt@google.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org,
	linux-pm@vger.kernel.org, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-efi@vger.kernel.org,
	linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org,
	linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org,
	rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
Subject: Re: [RFC PATCH 24/28] tools/objtool: Treat indirect ftrace calls as
 direct calls
Message-ID: <20241001071841.yrc7cxdp2unnzju7@treble>
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-54-ardb+git@google.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20240925150059.3955569-54-ardb+git@google.com>

On Wed, Sep 25, 2024 at 05:01:24PM +0200, Ard Biesheuvel wrote:
> +		if (insn->type == INSN_CALL_DYNAMIC) {
> +			if (!reloc)
> +				continue;
> +
> +			/*
> +			 * GCC 13 and older on x86 will always emit the call to
> +			 * __fentry__ using a relaxable GOT-based symbol
> +			 * reference when operating in PIC mode, i.e.,
> +			 *
> +			 *   call   *0x0(%rip)
> +			 *             R_X86_64_GOTPCRELX  __fentry__-0x4
> +			 *
> +			 * where it is left up to the linker to relax this into
> +			 *
> +			 *   call   __fentry__
> +			 *   nop
> +			 *
> +			 * if __fentry__ turns out to be DSO local, which is
> +			 * always the case for vmlinux. Given that this
> +			 * relaxation is mandatory per the x86_64 psABI, these
> +			 * calls can simply be treated as direct calls.
> +			 */
> +			if (arch_ftrace_match(reloc->sym->name)) {
> +				insn->type = INSN_CALL;
> +				add_call_dest(file, insn, reloc->sym, false);
> +			}

Can the compiler also do this for non-fentry direct calls?  If so would
it make sense to generalize this by converting all
INSN_CALL_DYNAMIC+reloc to INSN_CALL?

And maybe something similar for add_jump_destinations().

-- 
Josh


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 07:36:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 07:36:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807773.1219407 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svXQS-0008S1-1g; Tue, 01 Oct 2024 07:36:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807773.1219407; Tue, 01 Oct 2024 07:36: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 1svXQR-0008Ru-UB; Tue, 01 Oct 2024 07:36:03 +0000
Received: by outflank-mailman (input) for mailman id 807773;
 Tue, 01 Oct 2024 07:36: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svXQQ-0008Ro-OC
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 07:36:02 +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 ceada99e-7fc7-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 09:36:01 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8a897bd4f1so783136066b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 00:36:01 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2775b47sm670143366b.19.2024.10.01.00.36.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 00:36:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ceada99e-7fc7-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727768161; x=1728372961; 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=58jZ5FooZDBgSInjg3t7huQ/UIcBWOZEXlZDn2KMdWg=;
        b=bgDrNdMxgxvZU/UDXgBGYlW2g5xRt0h5U3yevV/oMvM7IMrwQ56adR3yQP2Cq83KID
         gWNNLE+73TEo23/LlkaYoDAfeKkvnyzeobnB+eYXhmPPCic0vGx0CKYgv2C1/ftC43Mi
         c0TScom2Mr2ypiltQ2YGZjaPZuEBNyGOoPKvihi0jnm5MicE+st30HdWrvSsgbmDXn86
         OuMsrSbOxa6uKyIQwZrc4+7xtSVbFjhFQza/9YtIcQHnIzy/TEbhM+AXzzZH+9FA7nCe
         ewWH/XIbHa9rFiKRsdzJk9ZlDsmbCCeptgtYdbDWESw7XK+TvmucKl+kLLu9bbqcjcAc
         rVwg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727768161; x=1728372961;
        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=58jZ5FooZDBgSInjg3t7huQ/UIcBWOZEXlZDn2KMdWg=;
        b=WrOeUATfaUSB2I84PpDRTxoBd4Le3aGlLEPIiawOEKbXzGhQHy5LRQbRZof6vWPIsJ
         F7kIJABS5OjC64ljHfjl9VWUHJHemc3+syNUwBCisfICvhulQUjD0Uy0icnvxxSViJHe
         ZcbWbfWsg5h+lcLEdJaYzTBCvXQGUeV7eEVKhNJAFKdFuRCxNh9/9YyuDMbvQa8Pd5wv
         IKUgN5RU4ajULHiAAi9ze5PVf4g97EUD3H9rZ4qYGQz3P0pUfb2xruuTLJ77ac26k/Yf
         hV1vRnelTHP3FnrZxzheGfDl5Q9iEHdEnOdZ8t25yb1hxkD2Lun1y/YPq2j9UuklZt/s
         ltVw==
X-Forwarded-Encrypted: i=1; AJvYcCVKi4f51DMlrwWmx6MXlf5IzSxlVn58/v2kg6X6eDKvrEMpnR6TNoy9G7hzBB62mB0fH8a3myR1WJ8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzgM21tV08xUoxk3vzMpz/IDwSC/KGpwcrhY5CkTLeMjACNVf9o
	nRZBkWtnatH1lwHxX80Ec+L3YARJcmbygOMhd/JYvaMel4o1xNkbSdli3SKp2Q==
X-Google-Smtp-Source: AGHT+IHC/4RHESF/zl2gZyRApuXHM7Id2xEpFEM7DqXsfhKIvsv/ph3l63u/vzd6anBFArIv/ANI2w==
X-Received: by 2002:a17:907:3ea7:b0:a77:e2e3:354d with SMTP id a640c23a62f3a-a93c490996bmr1678404466b.23.1727768160837;
        Tue, 01 Oct 2024 00:36:00 -0700 (PDT)
Message-ID: <4045d42b-76dd-464d-af26-85fd9b0b9f05@suse.com>
Date: Tue, 1 Oct 2024 09:36:00 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] x86/pv: Handle #PF correctly when reading the IO
 permission bitmap
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20240930161837.1248144-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: <20240930161837.1248144-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 18:18, Andrew Cooper wrote:
> RFC: Should we make the boundary check be (port + bytes + 8)?  That would be
> more correct, but liable to break unsuspecting VMs.  Maybe we should just
> comment our way out of it.

What would the "+ 8" be intended to express? (I take it you mean ...

> --- a/xen/arch/x86/pv/emul-priv-op.c
> +++ b/xen/arch/x86/pv/emul-priv-op.c
> @@ -169,29 +169,26 @@ static intguest_io_okay(unsigned int port, unsigned int bytes,
>  
>      if ( (port + bytes) <= v->arch.pv.iobmp_limit )

... this check, which looks correct to me as is. In particular with the
"+ 8" there would appear to be no way to access ports at the very top of
the 64k range anymore, as PHYSDEVOP_set_iobitmap handling caps nr_ports
at 64k. IOW I think "commenting our way out of it" is the only possible
approach.)

With or without such a comment added
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 07:40:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 07:40:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807777.1219416 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svXUK-0001NJ-Fi; Tue, 01 Oct 2024 07:40:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807777.1219416; Tue, 01 Oct 2024 07:40: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 1svXUK-0001Mm-D7; Tue, 01 Oct 2024 07:40:04 +0000
Received: by outflank-mailman (input) for mailman id 807777;
 Tue, 01 Oct 2024 07:40: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=AZty=Q5=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1svXUI-00012B-Re
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 07:40:02 +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 5d30807a-7fc8-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 09:40:01 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id C366D5C54BC
 for <xen-devel@lists.xenproject.org>; Tue,  1 Oct 2024 07:39:55 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 05D89C4CEE0
 for <xen-devel@lists.xenproject.org>; Tue,  1 Oct 2024 07:39:59 +0000 (UTC)
Received: by mail-lj1-f169.google.com with SMTP id
 38308e7fff4ca-2fabfc06de3so28969671fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 00:39:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d30807a-7fc8-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727768399;
	bh=za16NxIQDUGjjHP2c29sw6PI8ZU3lXszSx4jSWmr5Jk=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=aDEbkzH31TMYxyPZ0U4IqFDz2ggAiyQ93AuGH6DFWD852wq66X3Juctv++qrVnY1E
	 6ZxaDC6+h3KE0C3l6NuZeDDiDBRF3EQr23e6H7GtHVX072wWjX7iI/+gFopMi4XBCn
	 BQre8YouOhT4yPxzR2ekUT/nh48OGc3LLs9GaU55B4BLhQp30yz1hZOr+kIXvYG3ih
	 OZ3IX+Rt7jhZPHye/HmzQ++7Vy95pRJ5j3zgDMATlOYnW26kd2Y9d5yDOCNbt7sReu
	 G4umcThdYU5KCIUGRK/jsPgHtwnY8ozG6RFsniIyYbjsaaJ8GQzJdc9VLHuOINxJqx
	 dhb3f3MUsJE9A==
X-Forwarded-Encrypted: i=1; AJvYcCVr9R8O7sipGr+9Ntw37nntf8hsP4s0gIx07SHPQNkL2dm+UyNknZZ/7EtaINrPcRJlVDNleWbW/I4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKhJ9ZwH0DRfO8UNX6QDFXRkPEFLaSbRd5WWkFCrnCIqqj7AYA
	ix6SiQaElc1NG//VDYV1i5kGmhvEc53SRzCKA6VDfQW7wwy5W6K+0yP4mUUsCRC5FqjDzdagktI
	OBOuwV3Zz6CQIOnY6QYbekWqwzRM=
X-Google-Smtp-Source: AGHT+IGSGW+uzmUjxyeIFaLft3PnZ2kaCaMuKqb2T+GLgytq3+U5XTQLxKYTu05fD4+Ir4Uuwo1LuIK4EgJ7mk97UG4=
X-Received: by 2002:a05:6512:b9e:b0:539:8e20:105 with SMTP id
 2adb3069b0e04-5398e200266mr5005657e87.28.1727768396993; Tue, 01 Oct 2024
 00:39:56 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-54-ardb+git@google.com> <20241001071841.yrc7cxdp2unnzju7@treble>
In-Reply-To: <20241001071841.yrc7cxdp2unnzju7@treble>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Tue, 1 Oct 2024 09:39:45 +0200
X-Gmail-Original-Message-ID: <CAMj1kXGA785Z2_AWuTTXPkvH9Mis=28rn_paOZe=gdaXjpu-=A@mail.gmail.com>
Message-ID: <CAMj1kXGA785Z2_AWuTTXPkvH9Mis=28rn_paOZe=gdaXjpu-=A@mail.gmail.com>
Subject: Re: [RFC PATCH 24/28] tools/objtool: Treat indirect ftrace calls as
 direct calls
To: Josh Poimboeuf <jpoimboe@kernel.org>
Cc: Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, x86@kernel.org, 
	"H. Peter Anvin" <hpa@zytor.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, 
	Uros Bizjak <ubizjak@gmail.com>, Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, 
	Christoph Lameter <cl@linux.com>, Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, 
	Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>, 
	Adrian Hunter <adrian.hunter@intel.com>, Kan Liang <kan.liang@linux.intel.com>, 
	linux-doc@vger.kernel.org, linux-pm@vger.kernel.org, kvm@vger.kernel.org, 
	xen-devel@lists.xenproject.org, linux-efi@vger.kernel.org, 
	linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org, 
	linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org, 
	rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"

On Tue, 1 Oct 2024 at 09:18, Josh Poimboeuf <jpoimboe@kernel.org> wrote:
>
> On Wed, Sep 25, 2024 at 05:01:24PM +0200, Ard Biesheuvel wrote:
> > +             if (insn->type == INSN_CALL_DYNAMIC) {
> > +                     if (!reloc)
> > +                             continue;
> > +
> > +                     /*
> > +                      * GCC 13 and older on x86 will always emit the call to
> > +                      * __fentry__ using a relaxable GOT-based symbol
> > +                      * reference when operating in PIC mode, i.e.,
> > +                      *
> > +                      *   call   *0x0(%rip)
> > +                      *             R_X86_64_GOTPCRELX  __fentry__-0x4
> > +                      *
> > +                      * where it is left up to the linker to relax this into
> > +                      *
> > +                      *   call   __fentry__
> > +                      *   nop
> > +                      *
> > +                      * if __fentry__ turns out to be DSO local, which is
> > +                      * always the case for vmlinux. Given that this
> > +                      * relaxation is mandatory per the x86_64 psABI, these
> > +                      * calls can simply be treated as direct calls.
> > +                      */
> > +                     if (arch_ftrace_match(reloc->sym->name)) {
> > +                             insn->type = INSN_CALL;
> > +                             add_call_dest(file, insn, reloc->sym, false);
> > +                     }
>
> Can the compiler also do this for non-fentry direct calls?

No, it is essentially an oversight in GCC that this happens at all,
and I fixed it [0] for GCC 14, i.e., to honour -mdirect-extern-access
when emitting these calls.

But even without that, it is peculiar at the very least that the
compiler would emit GOT based indirect calls at all.

Instead of

  call *__fentry__@GOTPCREL(%rip)

it should simply emit

  call __fentry__@PLT

and leave it up to the linker to resolve this directly or
lazily/eagerly via a PLT jump (assuming -fno-plt is not being used)

> If so would
> it make sense to generalize this by converting all
> INSN_CALL_DYNAMIC+reloc to INSN_CALL?
>
> And maybe something similar for add_jump_destinations().
>

I suppose that the pattern INSN_CALL_DYNAMIC+reloc is unambiguous, and
can therefore always be treated as INSN_CALL. But I don't anticipate
any other occurrences here, and if they do exist, they indicate some
other weirdness in the compiler, so perhaps it is better not to add
general support for these.


[0] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=bde21de1205c0456f6df68c950fb7ee631fcfa93


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:13:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:13:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807793.1219446 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svY08-0006yS-86; Tue, 01 Oct 2024 08:12:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807793.1219446; Tue, 01 Oct 2024 08:12: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 1svY08-0006yL-5T; Tue, 01 Oct 2024 08:12:56 +0000
Received: by outflank-mailman (input) for mailman id 807793;
 Tue, 01 Oct 2024 08:12: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svY07-0006yF-0l
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:12: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 f4a16134-7fcc-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 10:12:52 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-5398f3be400so2605008e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:12:52 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2777214sm656684866b.36.2024.10.01.01.12.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:12:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4a16134-7fcc-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727770372; x=1728375172; 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=ptyCDjr08E7ZLdtcQ9d416q/EwigsEhh/l8BdRITrf0=;
        b=eiD13FL22jsLvontiiQqkwKDoZEuUQSRhI/SHcZ88HVQHvDqPyM+hNaF8qbQtgFoJV
         IPDGWtL3IZqgE4QkZQusGvM7IhJEv1gz7CZCBO2XSBJhusPbT4drKmOhNGu1n77ATUFN
         VuQb6YSlfV0FEIbzYYo5SHQk40/EJ62XZp+R3bqy0VKbuyvpkW+tnphIrM+U+MpK3FTM
         SS6y6OscHEfIu8vR/F4+CR258/hsnzWJhQ70TZOhHY3Ft/atA5x+B44zCBDXY3c+1CTq
         mMVmp+Udwegg0rdb5nZw/6V7PMO/v/i3k0AXPkbgPs8SWJFGaDgFZZZX4LqWfQdG9aXt
         jCbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727770372; x=1728375172;
        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=ptyCDjr08E7ZLdtcQ9d416q/EwigsEhh/l8BdRITrf0=;
        b=nKEPlpJfriYpbhG3UcZtHcBE4U5YysjJWuvFBsn5hZ8BzN3L9lxha/uUN/Z+s/Kz5P
         3emTMzd32SCAnR2juRC9PBOq/wsNAlDWun//rvC+sUMCxoZFUPBBcLYES94t78nrbnMk
         2Zz0iQ2B3acTgh+J4DJr4teO3Vd3+l3UCo9Zv+wg2RDAKZRlGn6zDD/+cJdeOgELQ7bh
         iIuQhA5OV4Z3xMXGssyTG97dxdgnVc79twssAUyeuHtF4KuJY96wF+/x07GqXfZ4tfwA
         bhbdFwhjpdJgi0I/41w7zCpBBbq0zoTvxGMKzlXVZ9Q/Fd2iE7UerqHDWBPQ6ShYamCc
         D1Zg==
X-Forwarded-Encrypted: i=1; AJvYcCV+wiMkAE48rrQjHIqLyr7WmaJXZe2o9ZGrvpbfZfFhxqgQvSg+77rkA647GvqSikt/gOlA6nenDNk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz4oNVbhW0MAPqBl28Bwh9eWAwa7NTFtJucQbkQYNuXlGaFLX0h
	HPnSQFIHcT1i2dFSY0a0Ia5GIdK7V9IpOfiPCbo27Jk8V7oYfactjcPEVyDFi+Q4ZAIFkNq2hj0
	=
X-Google-Smtp-Source: AGHT+IGGl389rAG28jfC+ZRJfduYAi2fLPRxQNFmYBy+W9JHoN9xRooMyqwVJk/OjSKWcj03/lZbRQ==
X-Received: by 2002:a05:6512:3f0d:b0:52e:7656:a0f4 with SMTP id 2adb3069b0e04-5389fc643a0mr8634091e87.41.1727770371965;
        Tue, 01 Oct 2024 01:12:51 -0700 (PDT)
Message-ID: <90f1dda1-b06e-40e6-be6b-ea99acba875f@suse.com>
Date: Tue, 1 Oct 2024 10:12:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: prefer RDTSCP in rdtsc_ordered()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cae006a7-c1be-4608-a011-dda1fb4a0312@suse.com>
 <14ab2f50-e58c-4cb4-b976-4cb5ec14d908@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: <14ab2f50-e58c-4cb4-b976-4cb5ec14d908@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.09.2024 18:40, Andrew Cooper wrote:
> On 30/09/2024 4:08 pm, Jan Beulich wrote:
>> If available, its use is supposed to be cheaper than LFENCE+RDTSC, and
>> is virtually guaranteed to be cheaper than MFENCE+RDTSC.
>>
>> Unlike in rdtsc() use 64-bit local variables, eliminating the need for
> 
> I'd drop this reference to rdtsc() seeing as you adjust it in a parallel
> patch.

Already done, with that other commit now having gone in. When I wrote this,
I wasn't finally decided yet whether to also make that other adjustment.

>> --- a/xen/arch/x86/include/asm/msr.h
>> +++ b/xen/arch/x86/include/asm/msr.h
>> @@ -108,18 +108,30 @@ static inline uint64_t rdtsc(void)
>>  
>>  static inline uint64_t rdtsc_ordered(void)
>>  {
>> -	/*
>> -	 * The RDTSC instruction is not ordered relative to memory access.
>> -	 * The Intel SDM and the AMD APM are both vague on this point, but
>> -	 * empirically an RDTSC instruction can be speculatively executed
>> -	 * before prior loads.  An RDTSC immediately after an appropriate
>> -	 * barrier appears to be ordered as a normal load, that is, it
>> -	 * provides the same ordering guarantees as reading from a global
>> -	 * memory location that some other imaginary CPU is updating
>> -	 * continuously with a time stamp.
>> -	 */
>> -	alternative("lfence", "mfence", X86_FEATURE_MFENCE_RDTSC);
>> -	return rdtsc();
>> +    uint64_t low, high, aux;
>> +
>> +    /*
>> +     * The RDTSC instruction is not ordered relative to memory access.
>> +     * The Intel SDM and the AMD APM are both vague on this point, but
>> +     * empirically an RDTSC instruction can be speculatively executed
>> +     * before prior loads.
> 
> This part of the comment is stale now.  For RDTSC, AMD state:
> 
> "This instruction is not serializing. Therefore, there is no guarantee
> that all instructions have completed at the time the time-stamp counter
> is read."
> 
> and for RDTSCP:
> 
> "Unlike the RDTSC instruction, RDTSCP forces all older instructions to
> retire before reading the time-stamp counter."
> 
> i.e. it's dispatch serialising, given our new post-Spectre terminology.

I don't read that as truly "dispatch serializing"; both Intel and AMD
leave open whether subsequent insns would also be affected, or whether
those could pass the RDTSCP. Either form is fine for our purposes here
aiui.

> Intel OTOH have much more extensive information.  For RDTSC:
> 
> The RDTSC instruction is not a serializing instruction. It does not
> necessarily wait until all previous instructions have been executed
> before reading the counter. Similarly, subsequent instructions may begin
> execution before the read operation is performed. The following items
> may guide software seeking to order executions of RDTSC:
> 
> •If software requires RDTSC to be executed only after all previous
> instructions have executed and all previous loads are globally visible,1
> it can execute LFENCE immediately before RDTSC.
> 
> •If software requires RDTSC to be executed only after all previous
> instructions have executed and all previous loads and stores are
> globally visible, it can execute the sequence MFENCE;LFENCE immediately
> before RDTSC.
> 
> •If software requires RDTSC to be executed prior to execution of any
> subsequent instruction (including any memory accesses), it can execute
> the sequence LFENCE immediately after RDTSC.
> 
> Similarly, for RDTSCP:
> 
> The RDTSCP instruction is not a serializing instruction, but it does
> wait until all previous instructions have executed and all previous
> loads are globally visible.  But it does not wait for previous stores to
> be globally visible, and subsequent instructions may begin execution
> before the read operation is performed. The following items may guide
> software seeking to order executions of RDTSCP:
> 
> •If software requires RDTSCP to be executed only after all previous
> stores are globally visible, it can execute MFENCE immediately before
> RDTSCP.
> 
> •If software requires RDTSCP to be executed prior to execution of any
> subsequent instruction (including any memory accesses), it can execute
> LFENCE immediately after RDTSCP.
> 
> 
> 
> I'd delete most of the paragraph, and just state the recommendation to
> use LFENCE.

I was in fact wondering whether to. I'll send a v2 with updated (and
shortened) commentary. I think I will want to keep mentioning MFENCE
there though, ...

> In truth, X86_FEATURE_MFENCE_RDTSC is useless now that we unilaterally
> activate LFENCE_DISPATCH on CPUs where it's optional.  Linux went as far
> as removing the case entirely, because if you're running under a
> hypervisor which hasn't set LFENCE_DISPATCH, then the misbehaviour of
> lfence;rdtsc is the least of your problems.

... despite this (orthogonal) observation. We can independently decide
whether to drop MFENCE_RDTSC.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:16:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:16:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807800.1219456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svY35-0007bk-PP; Tue, 01 Oct 2024 08:15:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807800.1219456; Tue, 01 Oct 2024 08:15: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 1svY35-0007bd-MM; Tue, 01 Oct 2024 08:15:59 +0000
Received: by outflank-mailman (input) for mailman id 807800;
 Tue, 01 Oct 2024 08:15: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svY34-0007bX-Ii
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:15:58 +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 624beb2a-7fcd-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 10:15:56 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c5bca59416so6391686a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:15:56 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297a2ffsm664129266b.157.2024.10.01.01.15.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:15:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 624beb2a-7fcd-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727770556; x=1728375356; 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=a4gMfIFPUAaK2nqbir6IXSjpJskN0iJBMl8Ep6+D95o=;
        b=CNtVr4IjQBNzO2N0+aII+ussugw+vOQGTs5+FxYS8BV6f+mhiQSDrDVJMXTbJBo5Vx
         9DU6uuMkaycycZJnbTKUT5AF3HbB0zsmzih9bAgRQiGzzC3BnO07fi87morxJo98zpH+
         86Y73N/M1u59VIcWvVhxAszFWLDLzjDGE7VUIg5xIGshwIq+hdcTlc7nBJ6SIuGvHRwn
         ZngjOrTHd9stZtJPd3YM8eTIxZRN2v4QPJ5SGMy7a9EzhT/cxaes08ZToORfDN103bRg
         yHvLVjvzMeyLPHn4EBQlUWOfDfUY91THOSort4hTJzMZM5Yxdkn1VyfmhUYNKTKS4Ewq
         RbCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727770556; x=1728375356;
        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=a4gMfIFPUAaK2nqbir6IXSjpJskN0iJBMl8Ep6+D95o=;
        b=RX/Io4YKDi7prQfyhWYxBoMrQRMPSTgAUglDY1uyn6Y+BYed0WprUQu1aYNfhOkYVj
         7Mgz5iyTh8karDqz3c5/yraeIV5jEcf/Lb0Viz3U3CoNFfmTpd/X3TAtEP53OLXCfsN/
         Ywt+h3slgIPhkmiPHxb6DC9kwuHPwN77can84wwOwgOc5xqApnCQ0xYIUhP9zkalYh2I
         yUbI2cr/txeaX7Ku/45Tnw03EBl3T4TALGtxZZCHSrW32PuxyDvmdRIlBKP5IRmFAy1U
         Hae8CTTNC8dQqbRe9d9D1gtm6gHTuG4dji3NoWOcvGRLL9s+ckQ1Ctt7Rz7Z9oEjw3ww
         u3Aw==
X-Gm-Message-State: AOJu0YzokSJyzbIhoMEHq73h6DvE+jXcneHllvERtrvtWUSrP7u7iAm5
	cbvfYk4eYkVb6kuf9T6HTTC7ZRaIWvh+DMLQXM4Zwg23twRbgrOVYD5KCiaCwZqW3q9hkkWyprc
	=
X-Google-Smtp-Source: AGHT+IGtdvRwTtTL1Xzfs8DVctFj6Tmsn7Mq9t9PLMvIgunZfoB/fDzcq3OeO58+QrKeOochSazeDQ==
X-Received: by 2002:a17:907:7d93:b0:a8d:2faf:d333 with SMTP id a640c23a62f3a-a93c4967988mr1351988366b.35.1727770556138;
        Tue, 01 Oct 2024 01:15:56 -0700 (PDT)
Message-ID: <7d60fb7a-8db2-49cc-b7ba-bab023c6ed1f@suse.com>
Date: Tue, 1 Oct 2024 10:15:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] x86: prefer RDTSCP in rdtsc_ordered()
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?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

If available, its use is supposed to be cheaper than LFENCE+RDTSC, and
is virtually guaranteed to be cheaper than MFENCE+RDTSC.

Update commentary (and indentation) while there.

Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Replace original part of the comment with more up-to-date info.

--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -108,18 +108,24 @@ static inline uint64_t rdtsc(void)
 
 static inline uint64_t rdtsc_ordered(void)
 {
-	/*
-	 * The RDTSC instruction is not ordered relative to memory access.
-	 * The Intel SDM and the AMD APM are both vague on this point, but
-	 * empirically an RDTSC instruction can be speculatively executed
-	 * before prior loads.  An RDTSC immediately after an appropriate
-	 * barrier appears to be ordered as a normal load, that is, it
-	 * provides the same ordering guarantees as reading from a global
-	 * memory location that some other imaginary CPU is updating
-	 * continuously with a time stamp.
-	 */
-	alternative("lfence", "mfence", X86_FEATURE_MFENCE_RDTSC);
-	return rdtsc();
+    uint64_t low, high, aux;
+
+    /*
+     * The RDTSC instruction is not serializing.  Make it dispatch serializing
+     * for the purposes here by issuing LFENCE (or MFENCE if necessary) ahead
+     * of it.
+     *
+     * RDTSCP, otoh, "does wait until all previous instructions have executed
+     * and all previous loads are globally visible" (SDM) / "forces all older
+     * instructions to retire before reading the timestamp counter" (APM).
+     */
+    alternative_io_2("lfence; rdtsc",
+                     "mfence; rdtsc", X86_FEATURE_MFENCE_RDTSC,
+                     "rdtscp",        X86_FEATURE_RDTSCP,
+                     ASM_OUTPUT2("=a" (low), "=d" (high), "=c" (aux)),
+                     /* no inputs */);
+
+    return (high << 32) | low;
 }
 
 #define __write_tsc(val) wrmsrl(MSR_IA32_TSC, val)


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:35:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:35:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807810.1219467 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYM6-0002Jz-B9; Tue, 01 Oct 2024 08:35:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807810.1219467; Tue, 01 Oct 2024 08:35: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 1svYM6-0002Js-7P; Tue, 01 Oct 2024 08:35:38 +0000
Received: by outflank-mailman (input) for mailman id 807810;
 Tue, 01 Oct 2024 08: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=i7H1=Q5=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1svYM4-0002Jm-HY
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:35:36 +0000
Received: from mail-ot1-x333.google.com (mail-ot1-x333.google.com
 [2607:f8b0:4864:20::333])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1ff7afbd-7fd0-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 10:35:34 +0200 (CEST)
Received: by mail-ot1-x333.google.com with SMTP id
 46e09a7af769-710e14e2134so2888044a34.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:35:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ff7afbd-7fd0-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727771733; x=1728376533; 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=bR/E6Kd3KorSxT+iMi28Cu97at4KfTtYRUNGDauOYMI=;
        b=Inc4EwXRaFETj66Iky1lxzmAof97KpdH26Fs7ujsRZ5jxj2js2FenFF1s1kSA1Qykj
         CS2uBLUhWempgEmTzI/horJ3hbI36Y+e+83lp6nbAIevDwQMzATYZIMfa+6nCgm1xSy0
         sLGpKiorlsjVZPDrnjKEn/q9OBZC/O5WsDmMI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727771733; x=1728376533;
        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=bR/E6Kd3KorSxT+iMi28Cu97at4KfTtYRUNGDauOYMI=;
        b=wU9qcw8/UP2/NNoFw0IW/zUzOn0Q+4p9TDb767/zDGrThJ81Y3sgQ8lgCiEdvh3Tk8
         X5XYYQI1Si9KavZ7nwWLI5HlQDRxVEIWn0YymssNowtM7iMLIjDeUhVUhMPGmPc/S5jk
         J2XEX62d0YKeEukW1gG+K159qkeH5ZOh9XdmPXz5HEhIWAitwdWlUrL476hz98Z9gXlG
         yKT3TyKPrEXLvm6pmWXmVHAFw3x+O4WzMF2WOGRMYazRJX7KQDVOPDzpT8vdDTRHgC+P
         SYJ20nOep9tcIBPms9WZ15sbjijXeRK27rlJAXD317DtBGPYgeH/9M44elM+UWm96rXJ
         Rc/Q==
X-Forwarded-Encrypted: i=1; AJvYcCWHjKtgAIafjdWaR7Rn5HvlwVpX2dC8NG2qO3SBUSB3lCwknigMtSUIB2GwHbHoDTySsIUoW3EoyEM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx5luNU2OuTT21XHOJwkRDpZ8QFB3IWuYf8VdrE7YzYXPlErMJT
	fOboJxLYkCWFogfLpbto0IQVVpi1SpnaBkSV4bPQ/yNpUCIpv3lWkn7xgDObDLfihPp+umqgq9Z
	VlTRWMdTraqFp5WnJN5c8oe3/g7X3UQsRcpZrmQ==
X-Google-Smtp-Source: AGHT+IFF5nOk65nGqZm7GXuwxvW/NHGNCBryeRX/qvX6aChuEXzvptNJL4SoahhWDkyuI72p4yUd7gIpyGpBKbAi3W0=
X-Received: by 2002:a05:6870:e310:b0:25e:23b4:cf3e with SMTP id
 586e51a60fabf-28710bd9a0fmr9272218fac.44.1727771733174; Tue, 01 Oct 2024
 01:35:33 -0700 (PDT)
MIME-Version: 1.0
References: <20240926092109.475271-1-frediano.ziglio@cloud.com>
 <20240926092109.475271-3-frediano.ziglio@cloud.com> <e17b2afc-3647-4472-9d37-1510b40ff23d@suse.com>
In-Reply-To: <e17b2afc-3647-4472-9d37-1510b40ff23d@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Tue, 1 Oct 2024 09:35:22 +0100
Message-ID: <CACHz=ZhtYik3p4z2mc1PYG9M68Mwap68_DdoE7MWksW0VW+BTw@mail.gmail.com>
Subject: Re: [PATCH v6 2/3] x86/boot: Rewrite EFI/MBI2 code partly in C
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>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Sep 30, 2024 at 4:51=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 26.09.2024 11:21, Frediano Ziglio wrote:
> > @@ -243,7 +234,7 @@ __efi64_mb2_start:
> >          /*
> >           * Initialize BSS (no nasty surprises!).
> >           * It must be done earlier than in BIOS case
> > -         * because efi_multiboot2() touches it.
> > +         * because efi_multiboot2_prelude() touches it.
> >           */
> >          mov     %eax, %edx
>
> I think this MOV wants to gain a comment, now that ...
>
> >          lea     __bss_start(%rip), %edi
> > @@ -252,36 +243,30 @@ __efi64_mb2_start:
> >          shr     $3, %ecx
> >          xor     %eax, %eax
> >          rep stosq
> > -        mov     %edx, %eax
>
> ... this one's going away.
>

What about

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 89b5e2af88..6fa6ea93e5 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -231,12 +231,14 @@ __efi64_mb2_start:
         */
        and     $~15, %rsp

+       /* Move away magic number, we need it later but we need to use %eax=
 */
+        mov     %eax, %edx
+
        /*
         * Initialize BSS (no nasty surprises!).
         * It must be done earlier than in BIOS case
         * because efi_multiboot2_prelude() touches it.
         */
-        mov     %eax, %edx
        lea     __bss_start(%rip), %edi
        lea     __bss_end(%rip), %ecx
        sub     %edi, %ecx

??

> > --- a/xen/arch/x86/efi/stub.c
> > +++ b/xen/arch/x86/efi/stub.c
> > @@ -17,7 +17,8 @@
> >   */
> >
> >  void __init noreturn efi_multiboot2(EFI_HANDLE ImageHandle,
> > -                                    EFI_SYSTEM_TABLE *SystemTable)
> > +                                    EFI_SYSTEM_TABLE *SystemTable,
> > +                                    const char *cmdline)
>
> While with ...
>
> > --- /dev/null
> > +++ b/xen/arch/x86/include/asm/efi.h
> > @@ -0,0 +1,18 @@
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +
> > +#ifndef X86_ASM_EFI_H
> > +#define X86_ASM_EFI_H
> > +
> > +#include <xen/types.h>
> > +#include <asm/x86_64/efibind.h>
> > +#include <efi/efidef.h>
> > +#include <efi/eficapsule.h>
> > +#include <efi/eficon.h>
> > +#include <efi/efidevp.h>
> > +#include <efi/efiapi.h>
> > +
> > +void efi_multiboot2(EFI_HANDLE ImageHandle,
> > +                    EFI_SYSTEM_TABLE *SystemTable,
> > +                    const char *cmdline);
>
> ... the declaration now (supposedly) in scope the need for that earlier
> adjustment may be a little more obvious, you still ought to mention it
> in the description. If you did, you'd might have noticed that stub.c now
> also needs to include the new asm/efi.h, for the declaration to actually
> have its full intended effect.
>
> Jan

Done, both stub and normal code.

Frediano


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:42:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:42:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807817.1219476 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYSB-00048s-UO; Tue, 01 Oct 2024 08:41:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807817.1219476; Tue, 01 Oct 2024 08:41: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 1svYSB-00048l-Re; Tue, 01 Oct 2024 08:41:55 +0000
Received: by outflank-mailman (input) for mailman id 807817;
 Tue, 01 Oct 2024 08:41: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=i7H1=Q5=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1svYSA-00048f-Dh
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:41:54 +0000
Received: from mail-ot1-x331.google.com (mail-ot1-x331.google.com
 [2607:f8b0:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 01db6d60-7fd1-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 10:41:53 +0200 (CEST)
Received: by mail-ot1-x331.google.com with SMTP id
 46e09a7af769-710d5d9aac1so2121968a34.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:41:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 01db6d60-7fd1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727772112; x=1728376912; 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=ooJkGzXfRVbKeOOteEuZ0xqFg0WE6wVrHlIQ3sOznq4=;
        b=jkCrfoRAJOLLGHPdLcvC7w2+xkEnGlN6AguxZCcuIgWEz674hfDT5syP6eL9ooqKbk
         rLASd3lgbR0J7V7NTrT51Irt/Vq65aBPda0duudt63Aj8SY0HdyhXdkAwD8yrq/uFcjz
         xB0SxPuoPSh+x/9XdV1KVohINQ2ABD5szUlPQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772112; x=1728376912;
        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=ooJkGzXfRVbKeOOteEuZ0xqFg0WE6wVrHlIQ3sOznq4=;
        b=mwjgoLFPJnFFQEEITJn5dikdLNyLb5FY5p4PL4epevz+1eEul3xdmK4yR9CLqz8pMw
         TpI0VcQb8O2ZozoG39237DuP8o+e9FBRAIorSyddrd7kLjO4qvwiIir/zeDwe5PhER8j
         /rBMhScFKBoifMNTp1e7WSh0M1vXYsH2RfzBtfaqN6q7LdDchh+YCGClp1fvK6fFCJki
         9mCfmE0AgMKa0+6dRGTVz6nrljzYheOmcR4pN4iSxOUp16tTjeKByxOvgkrpY2PzuFFJ
         nDdFXt+iUHvtQvr9Vx13qjrWJBtdRAQXGjr/wn/sfBdDxZoA0FTxDae/nJfdfTCfp3cF
         /kFg==
X-Forwarded-Encrypted: i=1; AJvYcCWdWQ01Z/HYEDrZfSeWZlTYPtCh6Akc+s0Da9C4oXXhO3xIoCWlpBB+RntvXaOSUj5nthX/k+NAAJ0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwOiYP8lbcfcVvHVUz2UDS1sZpt3ypYoQUeBCBmvfyx8rroh8R8
	dGlWnL2IFQx+qk2Wqdarm/v5YFvEd2AseJE1KBTIvSk0/xi82jHWc6wHBjsRoT6vWJYBJciqoLy
	0VB80NUQMT6WzcpfGROHZX1i52fBeRMUeoOfwjg==
X-Google-Smtp-Source: AGHT+IE8pjum6ICxqJO3TXiRL/kIdvAgvpx7hd1TO0Q1JEwHHYbNMB+3064mlxw4LZKswt7I1Kx6hCu4VKKV7Xlks6A=
X-Received: by 2002:a05:6870:f695:b0:277:e7bc:69fd with SMTP id
 586e51a60fabf-28710a70e50mr7704699fac.13.1727772112177; Tue, 01 Oct 2024
 01:41:52 -0700 (PDT)
MIME-Version: 1.0
References: <20240926092109.475271-1-frediano.ziglio@cloud.com>
 <20240926092109.475271-4-frediano.ziglio@cloud.com> <b68528a0-0e0b-4b8c-bd9d-b7d845905711@suse.com>
In-Reply-To: <b68528a0-0e0b-4b8c-bd9d-b7d845905711@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Tue, 1 Oct 2024 09:41:41 +0100
Message-ID: <CACHz=ZjwTJRwaSXf5GB5WPByxHy0unjZw0ysUNWFEkpm3VAwKg@mail.gmail.com>
Subject: Re: [PATCH v6 3/3] x86/boot: Improve MBI2 structure check
To: Jan Beulich <jbeulich@suse.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Sep 30, 2024 at 4:55=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 26.09.2024 11:21, Frediano Ziglio wrote:
> > --- a/xen/arch/x86/efi/parse-mbi2.c
> > +++ b/xen/arch/x86/efi/parse-mbi2.c
> > @@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboo=
t2_fixed_t *mbi)
> >      EFI_HANDLE ImageHandle =3D NULL;
> >      EFI_SYSTEM_TABLE *SystemTable =3D NULL;
> >      const char *cmdline =3D NULL;
> > +    const void *const mbi_end =3D (const void *)mbi + mbi->total_size;
> >      bool have_bs =3D false;
> >
> >      if ( magic !=3D MULTIBOOT2_BOOTLOADER_MAGIC )
> > @@ -21,7 +22,9 @@ efi_multiboot2_prelude(uint32_t magic, const multiboo=
t2_fixed_t *mbi)
> >      /* Skip Multiboot2 information fixed part. */
> >      tag =3D _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN)=
);
> >
> > -    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
> > +    for ( ; (const void *)(tag + 1) <=3D mbi_end &&
>
> It may be possible to argue away overflow concerns here. I'm not so sure =
though
> for the case ...
>

Do you mean tag + 1 ?
For the same reason, computing tag above could have an overflow.
If the caller pass invalid data range, we will have overflows in either cas=
e.

> > +            tag->size >=3D sizeof(*tag) &&
> > +            (const void *)tag + tag->size <=3D mbi_end &&
>
> ... here. The earlier logic subtracting pointers wasn't susceptible to su=
ch.
>
> Jan

Can you suggest a change ?

Frediano


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:47:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:47:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807822.1219487 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYXe-0004v4-CP; Tue, 01 Oct 2024 08:47:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807822.1219487; Tue, 01 Oct 2024 08:47: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 1svYXe-0004ux-8y; Tue, 01 Oct 2024 08:47:34 +0000
Received: by outflank-mailman (input) for mailman id 807822;
 Tue, 01 Oct 2024 08:47: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYXd-0004ur-9h
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:47:33 +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 cc30df6a-7fd1-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 10:47:32 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c87ab540b3so7992714a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:47:32 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248af7dsm5849487a12.78.2024.10.01.01.47.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:47:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cc30df6a-7fd1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772452; x=1728377252; 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=Yx3djm+KgRN0/wMPIxYFQPNTLNEWcKl1KUaoaIpX+h4=;
        b=EN92oQpLimCCemlGkSiOkIv4sKr8iz7mGf0S41/O18a70/f1dFYMT4IbDhpvxQz7/p
         KSWFROK/IWzpYdRnc3SVeERVTAVZupNL+9106Jyfvs/+yPrNSCB8eRYLAgwvmVZdbRnk
         wJxi/1J2xngNKU2PLfG+HDb0bVtNiKOUorSyfy5e+c7897O0IJWxq1dYC4g0dlYjxriI
         xXlQbHPBpQjyiViAVZvVeDX59KO3GqVWC5e4qSQbf05vVIGv4DtAlJwhOIxaevrRDZFj
         jEr+8jAq78guG5DwN/zO90QE+LhtnqN3FiM8HQx1+6LPt+OI0jNF3uW4Op0JPaHN5iL3
         S29g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772452; x=1728377252;
        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=Yx3djm+KgRN0/wMPIxYFQPNTLNEWcKl1KUaoaIpX+h4=;
        b=wZo+kXzbHe9F46ebPBmU+kTozwMmhx5DcNvBczPyf4zxrUzxDEx/VggngsIgR/PqzT
         /tKxvHxWYLRjkQ9jzfUpMUy6Fy6vRRLsvmPAQAM77m8CagBFtQ2WkIGXlh2rzpz8gF0g
         sbdbbR4IH1qJVxYSBdWR672eLiTBi3YE83WuVUptTZ5R4yF4ofu7u99bMPPyg4MA/Hhy
         miN07fFrLZTM+BBcxYzhpv9/LxBAG7aY+spfuTPAIhlyori/j5Tn+odWPUXwyNw4pvUp
         F8anR/TRrp/QTj40TiPtuRc1X306zGMYT/LqamRwEErXmxQyg4ChvtRs/7tRaXGv5ztV
         y9ew==
X-Gm-Message-State: AOJu0YxtvASXnsU18ZBJZIId5QH/rngb+4kcynQ1s61h/OAGKVCiZGF5
	bStZECSw0n1xMbEjyBFPEz2SSlQCugY7Sh3BiHs0zb5KnXn+7zNBiecwQ1D2eeUv70/giWEVKD8
	=
X-Google-Smtp-Source: AGHT+IHa6JVDOBiROhK2soMZLF/XMrCFTzZLC4qSw/x1Fk8FegmkGB4C12n1NOcZ2p1WQFEnvsegOQ==
X-Received: by 2002:a05:6402:50d3:b0:5c8:843c:7a74 with SMTP id 4fb4d7f45d1cf-5c8a2a558e3mr2460688a12.12.1727772451801;
        Tue, 01 Oct 2024 01:47:31 -0700 (PDT)
Message-ID: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@suse.com>
Date: Tue, 1 Oct 2024 10:47:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2 0/5] x86/HVM: emulation (MMIO) improvements
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?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

The main fix is patch 3, with the earlier patches setting the stage
and the latter ones simplifying other things at least a little in
exchange.

1: correct MMIO emulation cache bounds check
2: allocate emulation cache entries dynamically
3: correct read/write split at page boundaries
4: slightly improve CMPXCHG16B emulation
5: drop redundant access splitting

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:48:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:48:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807825.1219498 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYYS-0005Z4-Lk; Tue, 01 Oct 2024 08:48:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807825.1219498; Tue, 01 Oct 2024 08: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 1svYYS-0005Yx-HS; Tue, 01 Oct 2024 08:48:24 +0000
Received: by outflank-mailman (input) for mailman id 807825;
 Tue, 01 Oct 2024 08:48: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYYR-0005SS-AU
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:48:23 +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 e9ac109a-7fd1-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 10:48:21 +0200 (CEST)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2facf481587so17435401fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:48:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88245e9a9sm5725263a12.45.2024.10.01.01.48.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:48:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e9ac109a-7fd1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772501; x=1728377301; 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=JsdkVH+X0fQ3rqwF8jUU29eSJxEXcZhVYOG6vCFDcVQ=;
        b=H7zTi2EG24CyP4nES8R2CQYbNevenAxRFdWLwyJyqKNov0duQwdM0dNKzFwynyFet/
         OXw1lIviDgLAE1oOZHMP8qU8l/GS8uTxDbD1MwA6ZhEmgrbzOAnZCTM0+oNUjTNLCda8
         pxpgh9nuNTNs2KDhuZURQY+yS+cr/Vxk6gGrY49ADMUNGhREazv7IHDBBdVaLGsnGluz
         qSmqtYm9lTdd3KnxyuOrBa5TATDmH0aPNEsdSuYU78ZNd7/85k1Q4S4pRnlTR0fUk4El
         w4mJgZe/CdVvFeCGJ60FuhrJTC/nv6jD5DqG0wD3nna9nV+iu9iKS0okBykZPagQjpGN
         /qPQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772501; x=1728377301;
        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=JsdkVH+X0fQ3rqwF8jUU29eSJxEXcZhVYOG6vCFDcVQ=;
        b=TtVybr2juXmkMroH0kL7ZkJf9t18Bxy7sUBrYdUTqp+XnKdsFGN32Q8sotNyqVEGjt
         FLWP473LjG08xWTMjmF3g53dydMGQBv1SwSObLbEp+x710lOsBLrXsuTj0XAJGx/dF30
         zf+lBYkKeSJlR/kLFufw4jPWynfPVUx7hcw3lKskeDgKR2CbgAXN7d/TuwAmLr2E0DSa
         k7gp2hyZYmnT8ZtTrOxPlEJUd1/ZHRT3+9+znaighreGyIebnZt/hhUTca/eTyWNGJig
         ddpI9V2P07HEWCZe6VDuLscaLdkwczRxKlw0VB7YxYxX2r7CKk+Xd10hjD4nRJMrU6fE
         7iHg==
X-Gm-Message-State: AOJu0Yz1ExfKpRHBgyLcgF4RyyqMgSVbVZHgQ5Rr5ZiUrx0lRQlSEi/e
	Y3QRTk8Oa++bLM9mC6UhyI4NVLkCdW1HG26c+JTO6OLWoOjCDyY5lg2T7js/DfKng+WUFodtgys
	=
X-Google-Smtp-Source: AGHT+IGanKpX2xFoj2bmLlkMMYkH3lGBJI+CvYWvEEARMiaH8VhUZE63n7rEvefc4wnlZsd4hjBUmA==
X-Received: by 2002:a2e:4e11:0:b0:2f3:f7cf:2f01 with SMTP id 38308e7fff4ca-2f9d419888fmr60033161fa.41.1727772501003;
        Tue, 01 Oct 2024 01:48:21 -0700 (PDT)
Message-ID: <c7f78078-e0ab-40a7-8624-167512cbe1cf@suse.com>
Date: Tue, 1 Oct 2024 10:48:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 1/5] x86/HVM: correct MMIO emulation cache bounds check
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@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: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

To avoid overrunning the internal buffer we need to take the offset into
the buffer into account.

Fixes: d95da91fb497 ("x86/HVM: grow MMIO cache data size to 64 bytes")
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: New.

--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -935,7 +935,7 @@ static int hvmemul_phys_mmio_access(
     }
 
     /* Accesses must not overflow the cache's buffer. */
-    if ( size > sizeof(cache->buffer) )
+    if ( offset + size > sizeof(cache->buffer) )
     {
         ASSERT_UNREACHABLE();
         return X86EMUL_UNHANDLEABLE;



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:49:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:49:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807830.1219507 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYZF-00068y-0l; Tue, 01 Oct 2024 08:49:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807830.1219507; Tue, 01 Oct 2024 08:49: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 1svYZE-00068r-UI; Tue, 01 Oct 2024 08:49:12 +0000
Received: by outflank-mailman (input) for mailman id 807830;
 Tue, 01 Oct 2024 08:49: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYZE-0005xu-GF
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:49:12 +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 077e39b4-7fd2-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 10:49:11 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8d43657255so2723566b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:49:11 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bceesm667113466b.187.2024.10.01.01.49.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:49:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 077e39b4-7fd2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772551; x=1728377351; 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=3YQovV+n3e2iZoKriHprGKyGT3fX/RYDEQo1G3heG+M=;
        b=VeICNJFLWJRLDHSf8G3YvQabsiASW8ilGMieXUgts7KZyQL/YOk3HP0TTHHQqZVCLX
         7QPnh8ISgCP/rPM+IOxO9/QbZLy2EA7MGNZ2FVcDIx9bQjpZdXYtmI/BXqfKDv1Clu/k
         hE8ugXBIt78pg5DiGXh3kwm+NiS1EtCGedVOCgDUWgBKIfrDmPw77WyfRpLxjRkIgl6Y
         5ejehbmdmgYZPduMM5TYYlK3g+fFHoCsarhtyUVdibeTmo0JIiQckBp8BzIH5gcjeWzB
         z2UxIsYMqT/qA3TFUTi5RWXggPVNd4ef8b9nltmOFWDP6ITNxjHVo2jZsFsTS1O9dT+1
         LfkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772551; x=1728377351;
        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=3YQovV+n3e2iZoKriHprGKyGT3fX/RYDEQo1G3heG+M=;
        b=FnambsO4GkDfGId3FE868L8IMetrIdfLy0ED8YSN4Yszyuie335P/HWIth5r13CjYG
         51GQEYWmzzSzZtYheStplHO85TTli5VcoJd+uokFIyFGYdHlw7xebAAeGszcmT99P+g8
         PJY8zJxCd0LJmzwd3bPB6on8MEHs8kPELA9rGDNcAUfxHR44Lu7af1wrMPBDWNvQZ1N8
         pHFvl9lPEOo02nFukbZvUjkuvQi3T2Nl55YAlc0g6RRJv7ZIv/Js5pXQJIl5DKPiP4Yp
         q6ixdJcYrdgoUcTBahu90uMeuB1yYuto5oATeCygQWz0ftqEEiWi3URVOv7cGkX2yyPD
         eOWQ==
X-Gm-Message-State: AOJu0Yzdp1OsK58fUIaKeJfcKy1YUvwtR9/EUlPCLmmiRU5paJVS5Pvy
	msPN6Ah+fa2orUmXR/ed1s6kjvSTvpDH0hZaT5ToPPzmWIFB70wv6dBK9o86FY1b9dRrUAepmHA
	=
X-Google-Smtp-Source: AGHT+IGyNaxk4OM2kTSilCgOMgWlxucjmHDanSRs6cLmLVChamA1zxHSl//IbDUHLBjvrDA7Miy/Dw==
X-Received: by 2002:a17:907:3e86:b0:a90:d1e1:eeb3 with SMTP id a640c23a62f3a-a93c4a60d33mr1767106666b.44.1727772551088;
        Tue, 01 Oct 2024 01:49:11 -0700 (PDT)
Message-ID: <93967ab8-a472-475a-bdd6-41dfc3afa895@suse.com>
Date: Tue, 1 Oct 2024 10:49:10 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 2/5] x86/HVM: allocate emulation cache entries dynamically
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@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: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Both caches may need higher capacity, and the upper bound will need to
be determined dynamically based on CPUID policy (for AMX'es TILELOAD /
TILESTORE at least).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
This is a patch taken from the AMX series, but wasn't part of the v3
submission. All I did is strip out the actual AMX bits (from
hvmemul_cache_init()), plus of course change the description. As a
result some local variables there may look unnecessary, but this way
it's going to be less churn when the AMX bits are added. The next patch
pretty strongly depends on the changed approach (contextually, not so
much functionally), and I'd really like to avoid rebasing that one ahead
of this one, and then this one on top of that.

TBD: For AMX hvmemul_cache_init() will become CPUID policy dependent. We
     could of course take the opportunity and also reduce overhead when
     AVX-512 (and maybe even AVX) is unavailable (in the future: to the
     guest).
---
v2: Split off cache bounds check fix.

--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -26,6 +26,18 @@
 #include <asm/iocap.h>
 #include <asm/vm_event.h>
 
+/*
+ * We may read or write up to m512 or up to a tile row as a number of
+ * device-model transactions.
+ */
+struct hvm_mmio_cache {
+    unsigned long gla;
+    unsigned int size;
+    unsigned int space:31;
+    unsigned int dir:1;
+    uint8_t buffer[] __aligned(sizeof(long));
+};
+
 struct hvmemul_cache
 {
     /* The cache is disabled as long as num_ents > max_ents. */
@@ -935,7 +947,7 @@ static int hvmemul_phys_mmio_access(
     }
 
     /* Accesses must not overflow the cache's buffer. */
-    if ( offset + size > sizeof(cache->buffer) )
+    if ( offset + size > cache->space )
     {
         ASSERT_UNREACHABLE();
         return X86EMUL_UNHANDLEABLE;
@@ -1011,7 +1023,7 @@ static struct hvm_mmio_cache *hvmemul_fi
 
     for ( i = 0; i < hvio->mmio_cache_count; i ++ )
     {
-        cache = &hvio->mmio_cache[i];
+        cache = hvio->mmio_cache[i];
 
         if ( gla == cache->gla &&
              dir == cache->dir )
@@ -1027,10 +1039,11 @@ static struct hvm_mmio_cache *hvmemul_fi
 
     ++hvio->mmio_cache_count;
 
-    cache = &hvio->mmio_cache[i];
-    memset(cache, 0, sizeof (*cache));
+    cache = hvio->mmio_cache[i];
+    memset(cache->buffer, 0, cache->space);
 
     cache->gla = gla;
+    cache->size = 0;
     cache->dir = dir;
 
     return cache;
@@ -2978,16 +2991,21 @@ void hvm_dump_emulation_state(const char
 int hvmemul_cache_init(struct vcpu *v)
 {
     /*
-     * No insn can access more than 16 independent linear addresses (AVX512F
-     * scatters/gathers being the worst). Each such linear range can span a
-     * page boundary, i.e. may require two page walks. Account for each insn
-     * byte individually, for simplicity.
+     * AVX512F scatter/gather insns can access up to 16 independent linear
+     * addresses, up to 8 bytes size. Each such linear range can span a page
+     * boundary, i.e. may require two page walks.
+     */
+    unsigned int nents = 16 * 2 * (CONFIG_PAGING_LEVELS + 1);
+    unsigned int i, max_bytes = 64;
+    struct hvmemul_cache *cache;
+
+    /*
+     * Account for each insn byte individually, both for simplicity and to
+     * leave some slack space.
      */
-    const unsigned int nents = (CONFIG_PAGING_LEVELS + 1) *
-                               (MAX_INST_LEN + 16 * 2);
-    struct hvmemul_cache *cache = xmalloc_flex_struct(struct hvmemul_cache,
-                                                      ents, nents);
+    nents += MAX_INST_LEN * (CONFIG_PAGING_LEVELS + 1);
 
+    cache = xvmalloc_flex_struct(struct hvmemul_cache, ents, nents);
     if ( !cache )
         return -ENOMEM;
 
@@ -2997,6 +3015,15 @@ int hvmemul_cache_init(struct vcpu *v)
 
     v->arch.hvm.hvm_io.cache = cache;
 
+    for ( i = 0; i < ARRAY_SIZE(v->arch.hvm.hvm_io.mmio_cache); ++i )
+    {
+        v->arch.hvm.hvm_io.mmio_cache[i] =
+            xmalloc_flex_struct(struct hvm_mmio_cache, buffer, max_bytes);
+        if ( !v->arch.hvm.hvm_io.mmio_cache[i] )
+            return -ENOMEM;
+        v->arch.hvm.hvm_io.mmio_cache[i]->space = max_bytes;
+    }
+
     return 0;
 }
 
--- a/xen/arch/x86/include/asm/hvm/emulate.h
+++ b/xen/arch/x86/include/asm/hvm/emulate.h
@@ -15,6 +15,7 @@
 #include <xen/err.h>
 #include <xen/mm.h>
 #include <xen/sched.h>
+#include <xen/xvmalloc.h>
 #include <asm/hvm/hvm.h>
 #include <asm/x86_emulate.h>
 
@@ -119,7 +120,11 @@ int hvmemul_do_pio_buffer(uint16_t port,
 int __must_check hvmemul_cache_init(struct vcpu *v);
 static inline void hvmemul_cache_destroy(struct vcpu *v)
 {
-    XFREE(v->arch.hvm.hvm_io.cache);
+    unsigned int i;
+
+    for ( i = 0; i < ARRAY_SIZE(v->arch.hvm.hvm_io.mmio_cache); ++i )
+        XFREE(v->arch.hvm.hvm_io.mmio_cache[i]);
+    XVFREE(v->arch.hvm.hvm_io.cache);
 }
 bool hvmemul_read_cache(const struct vcpu *v, paddr_t gpa,
                         void *buffer, unsigned int size);
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -22,17 +22,6 @@ struct hvm_vcpu_asid {
     uint32_t asid;
 };
 
-/*
- * We may read or write up to m512 as a number of device-model
- * transactions.
- */
-struct hvm_mmio_cache {
-    unsigned long gla;
-    unsigned int size;
-    uint8_t dir;
-    uint8_t buffer[64] __aligned(sizeof(long));
-};
-
 struct hvm_vcpu_io {
     /*
      * HVM emulation:
@@ -48,7 +37,7 @@ struct hvm_vcpu_io {
      * We may need to handle up to 3 distinct memory accesses per
      * instruction.
      */
-    struct hvm_mmio_cache mmio_cache[3];
+    struct hvm_mmio_cache *mmio_cache[3];
     unsigned int mmio_cache_count;
 
     /* For retries we shouldn't re-fetch the instruction. */



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:49:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:49:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807835.1219516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYZl-0006e3-9N; Tue, 01 Oct 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 807835.1219516; Tue, 01 Oct 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 1svYZl-0006dw-6k; Tue, 01 Oct 2024 08:49:45 +0000
Received: by outflank-mailman (input) for mailman id 807835;
 Tue, 01 Oct 2024 08:49: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYZj-0006bI-OX
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:49:43 +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 197e047e-7fd2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 10:49:42 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c8967dd2c7so2508712a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:49:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c882405127sm5817163a12.5.2024.10.01.01.49.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:49:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 197e047e-7fd2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772581; x=1728377381; 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=5sy4Y2cQJ7dlapUfnU+5xbF/96+httzMJp8tshXNPzQ=;
        b=Bqp6OcdzGw4arrgufQrkve60975UYBeamfSyt9Xx3lH0HdGS6+5MjPXeBBREOgv8gP
         T/CEKMLLwgu/c07ecPAcgZZkwzTW2pR4QosveJCjD0IHFUredHEVGHrLCv2tAzjS49Lp
         IUbgxKetT6ilaUSBRSuLhoJsyNyxM9zIg0EXreZnXPyMSlph/Hbd01/CIOtPrGDfCy5D
         vYPgdHOIw5m6rUG9iPVvKh89BZnIGm8HL2RChGpi6Zg6vuLzGeB6o2Dt23sNvq4gbqeO
         KVeoeVzdOVulBPEZPPRdRL1EKrE7O3EyKuqX3XurXI53AsCBqWE6GXc2lIg2VNUghhLe
         zLDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772581; x=1728377381;
        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=5sy4Y2cQJ7dlapUfnU+5xbF/96+httzMJp8tshXNPzQ=;
        b=tWv+/QJg5Vn/OYhvjacZHenh6hgFe3kMVBw2CoDEvPk1c6/lJLhOPw5OOZeLqbHWPZ
         7sWKrlniLbbT56VswlNMD6sfMN7VNzlExFRX2KgRxXxpX7FTtoQgmnUQkNKDlvhIJn4e
         BsIRzbzN3j17I8HdWPsYcLJYtIQ+NY2ye+T2zO0aZgvw/y3IQzOk/JzFO3xdGw33lzXY
         jU480hVbFykgES45rUS6S5N5JieWLaN9ZeFrJ4W9Xg25HXbAWWgBTD1SVcWpMH55BcZV
         wrDsnA9WaiLLOCP11WxpWrmlFxi1rPBxAJ0Skzdd8mUYgOMQiJ++jREdhywdXOJfNanD
         nIkA==
X-Gm-Message-State: AOJu0YwvnlkcLgkAdEo1RGILyG1InESU3a/5YhvZk+1PF04yZlxQna2O
	rbyqa4TFFiXvcdoNIOHtZD1X1g4MiL4Otjejp1D5sHtMFOsOlJAIo4eW5OpcQtMAmsa6On4cPMo
	=
X-Google-Smtp-Source: AGHT+IGQPlGi3cNhIbxFtM3X3YFSx+ml3Hlc8kElg5Kvq4VXtnFPQLN5L2zIQlBR/8DKM+2HiKHXOQ==
X-Received: by 2002:a05:6402:1ecf:b0:5c8:7a90:6a71 with SMTP id 4fb4d7f45d1cf-5c8824d4d54mr13893482a12.13.1727772581331;
        Tue, 01 Oct 2024 01:49:41 -0700 (PDT)
Message-ID: <fde70079-4084-4aa6-b76e-becd62a71ddb@suse.com>
Date: Tue, 1 Oct 2024 10:49:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 3/5] x86/HVM: correct read/write split at page boundaries
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Manuel Andreas <manuel.andreas@tum.de>
References: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@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: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The MMIO cache is intended to have one entry used per independent memory
access that an insn does. This, in particular, is supposed to be
ignoring any page boundary crossing. Therefore when looking up a cache
entry, the access'es starting (linear) address is relevant, not the one
possibly advanced past a page boundary.

In order for the same offset-into-buffer variable to be usable in
hvmemul_phys_mmio_access() for both the caller's buffer and the cache
entry's it is further necessary to have the un-adjusted caller buffer
passed into there.

Fixes: 2d527ba310dc ("x86/hvm: split all linear reads and writes at page boundary")
Reported-by: Manuel Andreas <manuel.andreas@tum.de>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
This way problematic overlaps are only reduced (to ones starting at the
same address), not eliminated: Assumptions in hvmemul_phys_mmio_access()
go further - if a subsequent access is larger than an earlier one, but
the splitting results in a chunk to cross the end "boundary" of the
earlier access, an assertion will still trigger. Explicit memory
accesses (ones encoded in an insn by explicit or implicit memory
operands) match the assumption afaict (i.e. all those accesses are of
uniform size, and hence they either fully overlap or are mapped to
distinct cache entries).

Insns accessing descriptor tables, otoh, don't fulfill these
expectations: The selector read (if coming from memory) will always be
smaller than the descriptor being read, and if both (insanely) start at
the same linear address (in turn mapping MMIO), said assertion will kick
in. (The same would be true for an insn trying to access itself as data,
as long as certain size "restrictions" between insn and memory operand
are met. Except that linear_read() disallows insn fetches from MMIO.) To
deal with such, I expect we will need to further qualify (tag) cache
entries, such that reads/writes won't use insn fetch entries, and
implicit-supervisor-mode accesses won't use entries of ordinary
accesses. (Page table accesses don't need considering here for now, as
our page walking code demands page tables to be mappable, implying
they're in guest RAM; such accesses also don't take the path here.)
Thoughts anyone, before I get to making another patch?

Considering the insn fetch aspect mentioned above I'm having trouble
following why the cache has 3 entries. With insn fetches permitted,
descriptor table accesses where the accessed bit needs setting may also
fail because of that limited capacity of the cache, due to the way the
accesses are done. The read and write (cmpxchg) are independent accesses
from the cache's perspective, and hence we'd need another entry there.
If, otoh, the 3 entries are there to account for precisely this (which
seems unlikely with commit e101123463d2 ["x86/hvm: track large memory
mapped accesses by buffer offset"] not saying anything at all), then we
should be fine in this regard. If we were to permit insn fetches, which
way to overcome this (possibly by allowing the write to re-use the
earlier read's entry in this special situation) would remain to be
determined.

--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -31,8 +31,9 @@
  * device-model transactions.
  */
 struct hvm_mmio_cache {
-    unsigned long gla;
-    unsigned int size;
+    unsigned long gla;     /* Start of original access (e.g. insn operand) */
+    unsigned int skip;     /* Offset to start of MMIO */
+    unsigned int size;     /* Populated space, including @skip */
     unsigned int space:31;
     unsigned int dir:1;
     uint8_t buffer[] __aligned(sizeof(long));
@@ -953,6 +954,13 @@ static int hvmemul_phys_mmio_access(
         return X86EMUL_UNHANDLEABLE;
     }
 
+    /* Accesses must not be to the unused leading space. */
+    if ( offset < cache->skip )
+    {
+        ASSERT_UNREACHABLE();
+        return X86EMUL_UNHANDLEABLE;
+    }
+
     /*
      * hvmemul_do_io() cannot handle non-power-of-2 accesses or
      * accesses larger than sizeof(long), so choose the highest power
@@ -1010,13 +1018,15 @@ static int hvmemul_phys_mmio_access(
 
 /*
  * Multi-cycle MMIO handling is based upon the assumption that emulation
- * of the same instruction will not access the same MMIO region more
- * than once. Hence we can deal with re-emulation (for secondary or
- * subsequent cycles) by looking up the result or previous I/O in a
- * cache indexed by linear MMIO address.
+ * of the same instruction will not access the exact same MMIO region
+ * more than once in exactly the same way (if it does, the accesses will
+ * be "folded"). Hence we can deal with re-emulation (for secondary or
+ * subsequent cycles) by looking up the result of previous I/O in a cache
+ * indexed by linear address and access type.
  */
 static struct hvm_mmio_cache *hvmemul_find_mmio_cache(
-    struct hvm_vcpu_io *hvio, unsigned long gla, uint8_t dir, bool create)
+    struct hvm_vcpu_io *hvio, unsigned long gla, uint8_t dir,
+    unsigned int skip)
 {
     unsigned int i;
     struct hvm_mmio_cache *cache;
@@ -1030,7 +1040,11 @@ static struct hvm_mmio_cache *hvmemul_fi
             return cache;
     }
 
-    if ( !create )
+    /*
+     * Bail if a new entry shouldn't be allocated, utilizing that ->space has
+     * the same value for all entries.
+     */
+    if ( skip >= hvio->mmio_cache[0]->space )
         return NULL;
 
     i = hvio->mmio_cache_count;
@@ -1043,7 +1057,8 @@ static struct hvm_mmio_cache *hvmemul_fi
     memset(cache->buffer, 0, cache->space);
 
     cache->gla = gla;
-    cache->size = 0;
+    cache->skip = skip;
+    cache->size = skip;
     cache->dir = dir;
 
     return cache;
@@ -1064,12 +1079,14 @@ static void latch_linear_to_phys(struct
 
 static int hvmemul_linear_mmio_access(
     unsigned long gla, unsigned int size, uint8_t dir, void *buffer,
-    uint32_t pfec, struct hvm_emulate_ctxt *hvmemul_ctxt, bool known_gpfn)
+    uint32_t pfec, struct hvm_emulate_ctxt *hvmemul_ctxt,
+    unsigned long start, bool known_gpfn)
 {
     struct hvm_vcpu_io *hvio = &current->arch.hvm.hvm_io;
     unsigned long offset = gla & ~PAGE_MASK;
-    struct hvm_mmio_cache *cache = hvmemul_find_mmio_cache(hvio, gla, dir, true);
-    unsigned int chunk, buffer_offset = 0;
+    unsigned int chunk, buffer_offset = gla - start;
+    struct hvm_mmio_cache *cache = hvmemul_find_mmio_cache(hvio, start, dir,
+                                                           buffer_offset);
     paddr_t gpa;
     unsigned long one_rep = 1;
     int rc;
@@ -1117,19 +1134,19 @@ static int hvmemul_linear_mmio_access(
 static inline int hvmemul_linear_mmio_read(
     unsigned long gla, unsigned int size, void *buffer,
     uint32_t pfec, struct hvm_emulate_ctxt *hvmemul_ctxt,
-    bool translate)
+    unsigned long start, bool translate)
 {
     return hvmemul_linear_mmio_access(gla, size, IOREQ_READ, buffer,
-                                      pfec, hvmemul_ctxt, translate);
+                                      pfec, hvmemul_ctxt, start, translate);
 }
 
 static inline int hvmemul_linear_mmio_write(
     unsigned long gla, unsigned int size, void *buffer,
     uint32_t pfec, struct hvm_emulate_ctxt *hvmemul_ctxt,
-    bool translate)
+    unsigned long start, bool translate)
 {
     return hvmemul_linear_mmio_access(gla, size, IOREQ_WRITE, buffer,
-                                      pfec, hvmemul_ctxt, translate);
+                                      pfec, hvmemul_ctxt, start, translate);
 }
 
 static bool known_gla(unsigned long addr, unsigned int bytes, uint32_t pfec)
@@ -1158,7 +1175,10 @@ static int linear_read(unsigned long add
 {
     pagefault_info_t pfinfo;
     struct hvm_vcpu_io *hvio = &current->arch.hvm.hvm_io;
+    void *buffer = p_data;
+    unsigned long start = addr;
     unsigned int offset = addr & ~PAGE_MASK;
+    const struct hvm_mmio_cache *cache;
     int rc;
 
     if ( offset + bytes > PAGE_SIZE )
@@ -1182,8 +1202,17 @@ static int linear_read(unsigned long add
      * an access that was previously handled as MMIO. Thus it is imperative that
      * we handle this access in the same way to guarantee completion and hence
      * clean up any interim state.
+     *
+     * Care must be taken, however, to correctly deal with crossing RAM/MMIO or
+     * MMIO/RAM boundaries. While we want to use a single cache entry (tagged
+     * by the starting linear address), we need to continue issuing (i.e. also
+     * upon replay) the RAM access for anything that's ahead of or past MMIO,
+     * i.e. in RAM.
      */
-    if ( !hvmemul_find_mmio_cache(hvio, addr, IOREQ_READ, false) )
+    cache = hvmemul_find_mmio_cache(hvio, start, IOREQ_READ, ~0);
+    if ( !cache ||
+         addr + bytes <= start + cache->skip ||
+         addr >= start + cache->size )
         rc = hvm_copy_from_guest_linear(p_data, addr, bytes, pfec, &pfinfo);
 
     switch ( rc )
@@ -1199,8 +1228,8 @@ static int linear_read(unsigned long add
         if ( pfec & PFEC_insn_fetch )
             return X86EMUL_UNHANDLEABLE;
 
-        return hvmemul_linear_mmio_read(addr, bytes, p_data, pfec,
-                                        hvmemul_ctxt,
+        return hvmemul_linear_mmio_read(addr, bytes, buffer, pfec,
+                                        hvmemul_ctxt, start,
                                         known_gla(addr, bytes, pfec));
 
     case HVMTRANS_gfn_paged_out:
@@ -1217,7 +1246,10 @@ static int linear_write(unsigned long ad
 {
     pagefault_info_t pfinfo;
     struct hvm_vcpu_io *hvio = &current->arch.hvm.hvm_io;
+    void *buffer = p_data;
+    unsigned long start = addr;
     unsigned int offset = addr & ~PAGE_MASK;
+    const struct hvm_mmio_cache *cache;
     int rc;
 
     if ( offset + bytes > PAGE_SIZE )
@@ -1236,13 +1268,11 @@ static int linear_write(unsigned long ad
 
     rc = HVMTRANS_bad_gfn_to_mfn;
 
-    /*
-     * If there is an MMIO cache entry for the access then we must be re-issuing
-     * an access that was previously handled as MMIO. Thus it is imperative that
-     * we handle this access in the same way to guarantee completion and hence
-     * clean up any interim state.
-     */
-    if ( !hvmemul_find_mmio_cache(hvio, addr, IOREQ_WRITE, false) )
+    /* See commentary in linear_read(). */
+    cache = hvmemul_find_mmio_cache(hvio, start, IOREQ_WRITE, ~0);
+    if ( !cache ||
+         addr + bytes <= start + cache->skip ||
+         addr >= start + cache->size )
         rc = hvm_copy_to_guest_linear(addr, p_data, bytes, pfec, &pfinfo);
 
     switch ( rc )
@@ -1255,8 +1285,8 @@ static int linear_write(unsigned long ad
         return X86EMUL_EXCEPTION;
 
     case HVMTRANS_bad_gfn_to_mfn:
-        return hvmemul_linear_mmio_write(addr, bytes, p_data, pfec,
-                                         hvmemul_ctxt,
+        return hvmemul_linear_mmio_write(addr, bytes, buffer, pfec,
+                                         hvmemul_ctxt, start,
                                          known_gla(addr, bytes, pfec));
 
     case HVMTRANS_gfn_paged_out:
@@ -1643,7 +1673,7 @@ static int cf_check hvmemul_cmpxchg(
     {
         /* Fix this in case the guest is really relying on r-m-w atomicity. */
         return hvmemul_linear_mmio_write(addr, bytes, p_new, pfec,
-                                         hvmemul_ctxt,
+                                         hvmemul_ctxt, addr,
                                          hvio->mmio_access.write_access &&
                                          hvio->mmio_gla == (addr & PAGE_MASK));
     }



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:50:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:50:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807837.1219527 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYa5-0007iO-J8; Tue, 01 Oct 2024 08:50:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807837.1219527; Tue, 01 Oct 2024 08: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 1svYa5-0007hw-Ez; Tue, 01 Oct 2024 08:50:05 +0000
Received: by outflank-mailman (input) for mailman id 807837;
 Tue, 01 Oct 2024 08:50: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYa3-0006bI-RB
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:50:03 +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 2594c7fa-7fd2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 10:50:02 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8a897bd4f1so793412066b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:50:02 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2947fbesm670219666b.128.2024.10.01.01.50.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:50:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2594c7fa-7fd2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772602; x=1728377402; 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=GkPtOo84ZGrBaC3bJPX3VZcUrguvma+CLYeb6XeRzK8=;
        b=dv1cfrWlDJoUIYzZwiHYlkC12QAv2G45xytWcLc6+x0XrMjvhLy1CHVc7+dw76dREe
         2IHbLNUuPRBydlhOudebG9DiYiaZlVKREiukR96J+BjvxuuIevrypqK/hX4FfCL0u3ep
         jrILkBUkw1ZDDVec2AlP+sq4/YYhS9kDAcL2abbOjXDkZb1VwFyvnayUVZfWcnezVO8L
         IH1t5p8Jm1ViH9jyQzE362fLTTHkGc8VKvHifmJViEwXuPgXMbSWMUakznIRiZGFkLSF
         Ki3X9x8b+R/fnisInAOtOCDFstfxJwwARaYieCa+CYQrzgRmzNuoP2wSV1WIftSqFC3l
         JYng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772602; x=1728377402;
        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=GkPtOo84ZGrBaC3bJPX3VZcUrguvma+CLYeb6XeRzK8=;
        b=DT5pvxlaPakwbfnWx+Tm+rGJoD0eqN81k7Z+7CV+LEs/vIh2tJXxSnJEKzZ6+GSIBo
         4qDSsKeEuCqIN8dvmkgW58dQYyCtziTVKXFEHMkGudHzQJfhS/ibnrkcJ8O/BBp/0Dzw
         nb5u7O0s2YIM+g8/TtIcRCj7Wp5M3ou7G0rGdeBZ2JddaFPV72GCuQEhsrFnA2r4vAQf
         L53jH+vgOX+WfVaBUyagSO36+fzl48kNapaC4fq+OTkRUBR15mQ0UcdcjC7RO46Q9738
         XInSde3bQ0fUrv5fgCseRjlEjVMZx+RAF5ILE9OFQlQQOAOgEyLl5xyGWz+hgsHvH6RA
         G95g==
X-Gm-Message-State: AOJu0YwOAj9Y0SyvmwCbWcOgJlDyHRJrVGRFi1LxYLVLlV6hSsPZLijO
	fyb/tdXhlOCFbobaJSOnDmzPqdKobJ+G9FnYsXdPTlD3sCPexB7/R3473v6LAPg/spT0/PHlvms
	=
X-Google-Smtp-Source: AGHT+IHYhewCLx3i4KL7jhtK7CRblhqhwGSI+ZXE8ao/Mp72DnePL2E5exZZNGhbYERJUCgWbYAlnA==
X-Received: by 2002:a17:906:dc92:b0:a86:8b7b:7880 with SMTP id a640c23a62f3a-a93c4aab863mr1531947766b.63.1727772601745;
        Tue, 01 Oct 2024 01:50:01 -0700 (PDT)
Message-ID: <3cfb6c97-26c4-4914-ac3c-2c0f39e8659e@suse.com>
Date: Tue, 1 Oct 2024 10:50:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 4/5] x86/HVM: slightly improve CMPXCHG16B emulation
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@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: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Using hvmemul_linear_mmio_write() directly (as fallback when mapping the
memory operand isn't possible) won't work properly when the access
crosses a RAM/MMIO boundary. Use linear_write() instead, which splits at
such boundaries as necessary.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -1645,10 +1645,8 @@ static int cf_check hvmemul_cmpxchg(
 {
     struct hvm_emulate_ctxt *hvmemul_ctxt =
         container_of(ctxt, struct hvm_emulate_ctxt, ctxt);
-    struct vcpu *curr = current;
     unsigned long addr;
     uint32_t pfec = PFEC_page_present | PFEC_write_access;
-    struct hvm_vcpu_io *hvio = &curr->arch.hvm.hvm_io;
     int rc;
     void *mapping = NULL;
 
@@ -1672,10 +1670,7 @@ static int cf_check hvmemul_cmpxchg(
     if ( !mapping )
     {
         /* Fix this in case the guest is really relying on r-m-w atomicity. */
-        return hvmemul_linear_mmio_write(addr, bytes, p_new, pfec,
-                                         hvmemul_ctxt, addr,
-                                         hvio->mmio_access.write_access &&
-                                         hvio->mmio_gla == (addr & PAGE_MASK));
+        return linear_write(addr, bytes, p_new, pfec, hvmemul_ctxt);
     }
 
     switch ( bytes )



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:50:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:50:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807843.1219537 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYaT-00007p-UR; Tue, 01 Oct 2024 08:50:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807843.1219537; Tue, 01 Oct 2024 08: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 1svYaT-00007i-RW; Tue, 01 Oct 2024 08:50:29 +0000
Received: by outflank-mailman (input) for mailman id 807843;
 Tue, 01 Oct 2024 08: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYaR-0006bI-SH
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:50:27 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 33e95ba1-7fd2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 10:50:26 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a8d60e23b33so785864566b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:50:26 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2775b3csm668996866b.27.2024.10.01.01.50.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:50:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 33e95ba1-7fd2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772626; x=1728377426; 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=LME1v2y5K47DGz0uUCZNveBYET3FXFVivr3ZLArlZP4=;
        b=TkOrNyykSRdOgaoDKVVAjI61rudCr4SdDLjU29ABOjfMkkuRGqjSdyccxAO7cdBNcP
         gY4wFdU39114owEj+nd3gXmr2dnAXz0dlldyGmq/FK13DzAme0rdWe5MK1D0jYgSd1eK
         r6UdkPbu8JJvVKWV0F2cASdTQkBsz9D9YWQufsTrXC7BErJtiv4crqcmRdpIk0vcWF21
         pPy5NPrtAzwQU6HIidXHJWUk3PAmfOqzVyGfijq2aKqq4TXrh+Yo2d8mjg1ohLo75gIm
         SnZV6G88HHnRI9hlNyyzpNkx9Rtf+51IuMT6hk4Mjuxef7bZg1m5JA4oYaEQVFIXXM3o
         xc4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772626; x=1728377426;
        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=LME1v2y5K47DGz0uUCZNveBYET3FXFVivr3ZLArlZP4=;
        b=B8Zi6S5Sqa9PLMj0s6p843pBLozjc6pHs5I/q1UuGlxdAzbNUrxf3Y+gRJgFVRe27u
         Oq3ll2wUX6EnavvVmMnhBV78NA1qoUAN2MHAffpWr1enF0kezM5TgdIcO0UG+y40eUrW
         fMrbaHB8X1QJ/9O3rNiiXD8CWorv8WOhkdHtKo2WAUoVsdIHdXYunXJfm3cmf9GvX5Cp
         i+h2iWwBZiFtfMDJHghGUDzwgp2qaXt4VXupjlQxS52BHzzpa5r40GwH0DYCMPhVV4i2
         OvSglkdz4Tt4LmKk1bFAEV0n4f4jjFjzPWVUF2VhaGhDOIOerSY19w1NgDC/ZKsj07Xj
         lObA==
X-Gm-Message-State: AOJu0Yy8ipGaOgCflMniQS++RcjDJ6J1SP7dmfclFhGTuCClBct1aSPR
	m1v6+D6Uo7xfmlAR/lwVpBGOuxpUAKKf6OoK5GwKIhMwmoGURz+yB8HsMatsGIbXY6iUFp4uHq0
	=
X-Google-Smtp-Source: AGHT+IGRvliJJXGYn8enUcuI2BUAJAWEKNN1SLxvmIKQ4ZJBZ8WCEKTZ8tZ54H0cF+46lkmtTHWbww==
X-Received: by 2002:a17:907:2cc5:b0:a86:a1cd:5a8c with SMTP id a640c23a62f3a-a93c49218b7mr1624745366b.22.1727772625801;
        Tue, 01 Oct 2024 01:50:25 -0700 (PDT)
Message-ID: <7d73f0c5-3d16-4cf3-b8de-e45f539e8916@suse.com>
Date: Tue, 1 Oct 2024 10:50:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 5/5] x86/HVM: drop redundant access splitting
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@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: <3294f629-f91f-4b5d-9eb0-40a34aa2ec3e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

With all paths into hvmemul_linear_mmio_access() coming through
linear_{read,write}(), there's no need anymore to split accesses at
page boundaries there. Leave an assertion, though.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Replace ASSERT() by more safe construct.

--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -1084,7 +1084,7 @@ static int hvmemul_linear_mmio_access(
 {
     struct hvm_vcpu_io *hvio = &current->arch.hvm.hvm_io;
     unsigned long offset = gla & ~PAGE_MASK;
-    unsigned int chunk, buffer_offset = gla - start;
+    unsigned int buffer_offset = gla - start;
     struct hvm_mmio_cache *cache = hvmemul_find_mmio_cache(hvio, start, dir,
                                                            buffer_offset);
     paddr_t gpa;
@@ -1094,13 +1094,17 @@ static int hvmemul_linear_mmio_access(
     if ( cache == NULL )
         return X86EMUL_UNHANDLEABLE;
 
-    chunk = min_t(unsigned int, size, PAGE_SIZE - offset);
+    if ( size > PAGE_SIZE - offset )
+    {
+        ASSERT_UNREACHABLE();
+        return X86EMUL_UNHANDLEABLE;
+    }
 
     if ( known_gpfn )
         gpa = pfn_to_paddr(hvio->mmio_gpfn) | offset;
     else
     {
-        rc = hvmemul_linear_to_phys(gla, &gpa, chunk, &one_rep, pfec,
+        rc = hvmemul_linear_to_phys(gla, &gpa, size, &one_rep, pfec,
                                     hvmemul_ctxt);
         if ( rc != X86EMUL_OKAY )
             return rc;
@@ -1108,27 +1112,8 @@ static int hvmemul_linear_mmio_access(
         latch_linear_to_phys(hvio, gla, gpa, dir == IOREQ_WRITE);
     }
 
-    for ( ;; )
-    {
-        rc = hvmemul_phys_mmio_access(cache, gpa, chunk, dir, buffer, buffer_offset);
-        if ( rc != X86EMUL_OKAY )
-            break;
-
-        gla += chunk;
-        buffer_offset += chunk;
-        size -= chunk;
-
-        if ( size == 0 )
-            break;
-
-        chunk = min_t(unsigned int, size, PAGE_SIZE);
-        rc = hvmemul_linear_to_phys(gla, &gpa, chunk, &one_rep, pfec,
-                                    hvmemul_ctxt);
-        if ( rc != X86EMUL_OKAY )
-            return rc;
-    }
-
-    return rc;
+    return hvmemul_phys_mmio_access(cache, gpa, size, dir, buffer,
+                                    buffer_offset);
 }
 
 static inline int hvmemul_linear_mmio_read(



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:52:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:52:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807848.1219547 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYcc-0000nu-BX; Tue, 01 Oct 2024 08:52:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807848.1219547; Tue, 01 Oct 2024 08: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 1svYcc-0000nn-7k; Tue, 01 Oct 2024 08:52:42 +0000
Received: by outflank-mailman (input) for mailman id 807848;
 Tue, 01 Oct 2024 08: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYcb-0000nh-D5
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:52:41 +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 8353bf82-7fd2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 10:52:39 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-53959a88668so4565332e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:52:39 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8ae440857sm176181a12.13.2024.10.01.01.52.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:52:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8353bf82-7fd2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772759; x=1728377559; 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=YXW502KHO7TrBBjtU7liWw5he436NlY4BeR9yb3ZT8U=;
        b=XsK6musthvzg/xqDwrBhFn1vsOf8DkeFmnOB2wyL+jKFq6Wyb6uWMJzCQHjZzoiVoy
         a92wER9ZbRBSIgjHrY3Y17YbAxQpdrOUtFiMIY6BGx3gc+9Vvfgy6A4iEwcS1UotFjQl
         t6NBfJ8i9oOS47O+ood6hOlPJSPM8sKGmqfIe/T9UQj9R5LrZBP7E4KTC2b5EHt+Kzlr
         TKAWtQgZcloDwsLo5O3h5yBYiDPINMwecElHF8swnhzyWBl7E6r40sRAOSxYZwp32x2u
         xiWyRjxTs3dC96ns7GKfLKkymNSjyYgJguPNf4VdpN9I+iVu6UAEGX+ESXSGwRPs0ve/
         5BlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772759; x=1728377559;
        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=YXW502KHO7TrBBjtU7liWw5he436NlY4BeR9yb3ZT8U=;
        b=a29PL+Hyjj8uaR4PFRXPzc0jowD+BW5i0jZ6vBNTMdmSDJIXsuYKLlNEf0j1MTbYym
         bl8dZ53SPuI7SbmhtDOVyIrNNmbt3HJSTDmzixMdkUZzUN2Mq+Qf4oFwkubZcrXrYL79
         MZsnZizWBg7sPk1HFMWfa57OuuXGF4MyIvC3lB87RzMdgUa78ildgH4QrJlZg1keQ6rq
         UqpKyGjPHl+flstOdqv1eJGJzDn+JU/rlSeHmyxYdbRoMzRIqEfV3wNnwQdTFvkRnBHj
         xZNjxH8/fbzF3/R+l7WuV5d+UMVXQnNOZf/YusvLLRhpuTeTpnsAQp872seLEW+czjuG
         3I0A==
X-Forwarded-Encrypted: i=1; AJvYcCXSdZQo0LQcFNTSQrv1Yc9khEjwkh/15kj/k57snojkpUwSZ/mjULY1G/a/fRKZNxAHro7oioQUMuE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx6oBBJlSZVm+btVTlVNkEOmonnfmp10QDbXxVq0Mya8phADQPC
	9wxiJj47xW1jyav5VxAQHUrGRB49+3Ki2xtaFimb6KGrIfCM08RsSNsRYmVoFw==
X-Google-Smtp-Source: AGHT+IGDSTo5nyioBULbzM/R/TnlvCqxO8e0BBI4gpdie0yfhyG2hEmigQCFpK5rgIC4wI3icJbkCg==
X-Received: by 2002:a05:6512:33d3:b0:539:944c:1543 with SMTP id 2adb3069b0e04-539944c1822mr3809625e87.33.1727772758900;
        Tue, 01 Oct 2024 01:52:38 -0700 (PDT)
Message-ID: <b2a8b468-5745-4f58-bb86-721ea055c1b1@suse.com>
Date: Tue, 1 Oct 2024 10:52:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 2/3] x86/boot: Rewrite EFI/MBI2 code partly in C
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
References: <20240926092109.475271-1-frediano.ziglio@cloud.com>
 <20240926092109.475271-3-frediano.ziglio@cloud.com>
 <e17b2afc-3647-4472-9d37-1510b40ff23d@suse.com>
 <CACHz=ZhtYik3p4z2mc1PYG9M68Mwap68_DdoE7MWksW0VW+BTw@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: <CACHz=ZhtYik3p4z2mc1PYG9M68Mwap68_DdoE7MWksW0VW+BTw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01.10.2024 10:35, Frediano Ziglio wrote:
> On Mon, Sep 30, 2024 at 4:51 PM Jan Beulich <jbeulich@suse.com> wrote:
>> On 26.09.2024 11:21, Frediano Ziglio wrote:
>>> @@ -243,7 +234,7 @@ __efi64_mb2_start:
>>>          /*
>>>           * Initialize BSS (no nasty surprises!).
>>>           * It must be done earlier than in BIOS case
>>> -         * because efi_multiboot2() touches it.
>>> +         * because efi_multiboot2_prelude() touches it.
>>>           */
>>>          mov     %eax, %edx
>>
>> I think this MOV wants to gain a comment, now that ...
>>
>>>          lea     __bss_start(%rip), %edi
>>> @@ -252,36 +243,30 @@ __efi64_mb2_start:
>>>          shr     $3, %ecx
>>>          xor     %eax, %eax
>>>          rep stosq
>>> -        mov     %edx, %eax
>>
>> ... this one's going away.
>>
> 
> What about
> 
> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> index 89b5e2af88..6fa6ea93e5 100644
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -231,12 +231,14 @@ __efi64_mb2_start:
>          */
>         and     $~15, %rsp
> 
> +       /* Move away magic number, we need it later but we need to use %eax */
> +        mov     %eax, %edx
> +
>         /*
>          * Initialize BSS (no nasty surprises!).
>          * It must be done earlier than in BIOS case
>          * because efi_multiboot2_prelude() touches it.
>          */
> -        mov     %eax, %edx
>         lea     __bss_start(%rip), %edi
>         lea     __bss_end(%rip), %ecx
>         sub     %edi, %ecx
> 
> ??

Fine with me. Maybe s/Move away/Save"?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 08:56:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 08:56:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807854.1219556 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYg7-0001Nu-P3; Tue, 01 Oct 2024 08:56:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807854.1219556; Tue, 01 Oct 2024 08:56: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 1svYg7-0001Nn-MY; Tue, 01 Oct 2024 08:56:19 +0000
Received: by outflank-mailman (input) for mailman id 807854;
 Tue, 01 Oct 2024 08:56: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svYg6-0001NX-QC
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 08:56:18 +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 0595ce4e-7fd3-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 10:56:18 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a8d56155f51so672954266b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 01:56:18 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2946bddsm666771266b.123.2024.10.01.01.56.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 01:56:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0595ce4e-7fd3-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727772977; x=1728377777; 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=GwsTVlUE+WfxHpR9ah13NBsnzeAKuqVnUxQdij3tlUk=;
        b=d3neXUEe4lGwtdZJ5Pa9dn7u3bzOVkNDWk5ZnZPqYgwVm4OKm3OEoJebPdwTusEYlC
         6E6hMKZVaT/Yj1LRDPdFPvH2fMwlR7DG0hOKL3ZlDkqPQlk8uB2/lJ1AeMzS8Hmf7P+y
         sgVX8uaBmOAa+XkA3hKgeXVV1CfIWVIsKl+SuC7RwppORbts1Y7pieYurDdUS64zJQOd
         sxSZ+3slAurzj0NRJJmUEvY8kakis9R1BvTUY5G71sOs5X+2DlAP5LiuGjKDPCny9KkX
         6U0XPK40QuI2mAynr07z1m5+/l6ASjLaD1rpvPcH6SBuykZBxK1IqS/utJjX/8ZBtBdN
         GuUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727772977; x=1728377777;
        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=GwsTVlUE+WfxHpR9ah13NBsnzeAKuqVnUxQdij3tlUk=;
        b=lfaFSELK0qEHoqh5/J+i6mY6/vOWQtuE2aQj9XXby9ysPSy4wxTu2OPoyYWoU5NoaW
         Gz5D0C6V7JzQuxLT0yGkYn3EJ6rVvEOFrhuck52rKR9OjGhQS2kvBUNnDvhFHCHWEdJY
         VaSBVNGuftlii3N1Gzy6ZsG9YCpMg/TI0ppbhS10HZPtoAUqoZKJN7wQ9fwZR10ocT8k
         e4ScxefFHSgZURCvy1FPCErgXg7h+V8Ziz/WajSgbS4XsY3/Gcrmo1gmSFJdAeNmsxx+
         EMzroQURY84wAeFLOkQTMMeD0h5uy9UwqXN+DiUePvVZUr79akf6/OVhrJnb+1EJGO3V
         LO9w==
X-Forwarded-Encrypted: i=1; AJvYcCUSJxSeKxjWNPyEMMcL1teGK3vXzMxTblqvQv58LbES/yR9O6yW2vIWfiieOsCt4fCN5QsYRweFo1I=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwY3r+FHSMPSoUI24xWI2c+T/qHT5iZ3mDzdwZjgp75CpZ5UeOG
	BWhcwF+qZCXkiUrMINyW8hhqGDyyYlzHleIuE7PQX5qLkNRFoZtCCVv9mXxiaGMcZN7ZwR/yVfY
	=
X-Google-Smtp-Source: AGHT+IFiL2jTMxYrsdRgTjUW2kw9ONVv/pD4tP0Tr/z2o/g5b1TUqYe1+mCZNcQA/aEs+lNoFwYf0Q==
X-Received: by 2002:a17:907:d14:b0:a8a:83e9:43e2 with SMTP id a640c23a62f3a-a93c48f926amr1330412266b.12.1727772977561;
        Tue, 01 Oct 2024 01:56:17 -0700 (PDT)
Message-ID: <ad7f22ad-0373-45d7-943e-816d385e6750@suse.com>
Date: Tue, 1 Oct 2024 10:56:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 3/3] x86/boot: Improve MBI2 structure check
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20240926092109.475271-1-frediano.ziglio@cloud.com>
 <20240926092109.475271-4-frediano.ziglio@cloud.com>
 <b68528a0-0e0b-4b8c-bd9d-b7d845905711@suse.com>
 <CACHz=ZjwTJRwaSXf5GB5WPByxHy0unjZw0ysUNWFEkpm3VAwKg@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: <CACHz=ZjwTJRwaSXf5GB5WPByxHy0unjZw0ysUNWFEkpm3VAwKg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01.10.2024 10:41, Frediano Ziglio wrote:
> On Mon, Sep 30, 2024 at 4:55 PM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 26.09.2024 11:21, Frediano Ziglio wrote:
>>> --- a/xen/arch/x86/efi/parse-mbi2.c
>>> +++ b/xen/arch/x86/efi/parse-mbi2.c
>>> @@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
>>>      EFI_HANDLE ImageHandle = NULL;
>>>      EFI_SYSTEM_TABLE *SystemTable = NULL;
>>>      const char *cmdline = NULL;
>>> +    const void *const mbi_end = (const void *)mbi + mbi->total_size;
>>>      bool have_bs = false;
>>>
>>>      if ( magic != MULTIBOOT2_BOOTLOADER_MAGIC )
>>> @@ -21,7 +22,9 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
>>>      /* Skip Multiboot2 information fixed part. */
>>>      tag = _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN));
>>>
>>> -    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
>>> +    for ( ; (const void *)(tag + 1) <= mbi_end &&
>>
>> It may be possible to argue away overflow concerns here. I'm not so sure though
>> for the case ...
> 
> Do you mean tag + 1 ?

Yes.

> For the same reason, computing tag above could have an overflow.
> If the caller pass invalid data range, we will have overflows in either case.

Indeed. Yet as said, for these "+ 1" it may be okay to keep them like
that; the check below is certainly more risky.

>>> +            tag->size >= sizeof(*tag) &&
>>> +            (const void *)tag + tag->size <= mbi_end &&
>>
>> ... here. The earlier logic subtracting pointers wasn't susceptible to such.
> 
> Can you suggest a change ?

Keep comparing (pointer differences) against mbi->total_size.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:12:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:12:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807867.1219566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svYw3-0005MS-5V; Tue, 01 Oct 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 807867.1219566; Tue, 01 Oct 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 1svYw3-0005ML-2p; Tue, 01 Oct 2024 09:12:47 +0000
Received: by outflank-mailman (input) for mailman id 807867;
 Tue, 01 Oct 2024 09:12: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 1svYw2-0005MF-0h
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:12: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 1svYw1-00075v-BX; Tue, 01 Oct 2024 09:12:45 +0000
Received: from [15.248.2.236] (helo=[10.24.67.28])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1svYw1-0003qj-2K; Tue, 01 Oct 2024 09:12: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=csZCI8Gq00QAqNb7SpGmQwLVhp4ks4e97yTsLBvxtZI=; b=wY+JKVlkQS+6B+njQAk6qs5H28
	29bRrSJF9sB39Y8QSeKO7mdC5dGs8skg74/IjXTr7vHeOxS50gAxjhE+Ydu63Vgz+tiFGUm6GX5Z4
	IpkAuspp/jLiPebA2ESbTJVIPM8muHkJ0e/hgfkannffh0+7DNip27+KS2PC/U69NLt8=;
Message-ID: <40a44ce9-6804-4380-a660-abf5276e7790@xen.org>
Date: Tue, 1 Oct 2024 10:12:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] types: replace remaining uses of s64
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>
References: <ab2d325e-0d91-4308-b4d1-06314ad5ba0c@suse.com>
 <a6126dc2-a10f-4a90-9d2f-80f6f32f1386@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <a6126dc2-a10f-4a90-9d2f-80f6f32f1386@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 12/09/2024 13:20, Jan Beulich wrote:
> ... and move the type itself to linux-compat.h.
> 
> While doing so
> - correct the type of union uu's uq field in lib/divmod.c,
> - switch a few adjacent types as well, for (a little bit of)
>    consistency.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> v2: Split off ubsan.[ch] adjustments. Re-base.
> 
> --- a/xen/arch/arm/arm64/cpufeature.c
> +++ b/xen/arch/arm/arm64/cpufeature.c

This file is meant to follow the Linux coding style so it is easier to 
re-sync. Therefore I think we want to keep s64/u64 and include 
linux-compat.h.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:20:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:20:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807875.1219577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZ37-0007Nd-SB; Tue, 01 Oct 2024 09:20:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807875.1219577; Tue, 01 Oct 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 1svZ37-0007N4-Ov; Tue, 01 Oct 2024 09:20:05 +0000
Received: by outflank-mailman (input) for mailman id 807875;
 Tue, 01 Oct 2024 09:20: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 1svZ35-0006z1-V7
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:20: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 1svZ35-0007D3-5D; Tue, 01 Oct 2024 09:20:03 +0000
Received: from [15.248.2.236] (helo=[10.24.67.28])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1svZ34-0004Lm-Tz; Tue, 01 Oct 2024 09:20: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=DSYL+i0P78OGlK0q+SoD75JOvetdKVRfzR6GpP3kp+0=; b=pY+iGIJz+WeVVa/Dv5kmsZCw3M
	36XdOdDlQCv76bCXyVUNAGvJedsymDtAy8V2yavTqhr1qldZcsBHwL5v2hhceA7Nnoqr4az/To4jO
	OG0cmxuFymBogEiJLdIUOaQuHvgQKQNQnMRDUoY1a23RWTuu5d+oUw+hYLBrDHr5Sf4U=;
Message-ID: <b0e2f8d8-5cc2-46dd-90fb-47c61d79f703@xen.org>
Date: Tue, 1 Oct 2024 10:20:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/8] xen/arm: Add NXP LINFlexD UART Driver
Content-Language: en-GB
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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>, Jan Beulich <jbeulich@suse.com>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-2-andrei.cherechesu@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240930114715.642978-2-andrei.cherechesu@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Andrei,

On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
> +static void __init linflex_uart_init_preirq(struct serial_port *port)
> +{
> +    struct linflex_uart *uart = port->uart;
> +    uint32_t ibr, fbr, divisr, dividr, ctrl;
> +
> +    /* Disable RX/TX before init mode */
> +    ctrl = linflex_uart_readl(uart, UARTCR);
> +    ctrl &= ~(UARTCR_RXEN | UARTCR_TXEN);
> +    linflex_uart_writel(uart, UARTCR, ctrl);
> +
> +    /*
> +     * Smoothen the transition from early_printk by waiting
> +     * for all pending characters to transmit
> +     */

Just to note that early_printk() will still be used by secondary CPUs 
when booting which happens after init_preirq() is called. Will this be a 
problem for you?

I haven't compared the code against the specification. But the logic 
LGTM from a Xen PoV. So:

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:30:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:30:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807884.1219588 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZCi-0000Rl-U4; Tue, 01 Oct 2024 09:30:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807884.1219588; Tue, 01 Oct 2024 09: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 1svZCi-0000Re-Po; Tue, 01 Oct 2024 09:30:00 +0000
Received: by outflank-mailman (input) for mailman id 807884;
 Tue, 01 Oct 2024 09:29: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=Um4/=Q5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svZCh-0000RY-Ft
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:29:59 +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 b9599d6a-7fd7-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 11:29:57 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-53992157528so2467772e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 02:29:57 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-538a043be2dsm1505299e87.236.2024.10.01.02.29.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 02:29:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9599d6a-7fd7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727774997; x=1728379797; 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=0/0V3xg4BG1KgG+Byd/FPTkPwQH3pdxZB7W62BGif+I=;
        b=cADZ9TWCX/oaJHeoI2z4RLmQY5NGq0mtZ/pzCUSqWz50T9mUAfGPpeL87hEcnu4nDw
         w6qxf5bsIhGuaqvpdj68VE+6KrcOcu1xuUqwh03tobqw+NiXsKooUsq+YaeuYp3/Aiwr
         eNy/UrLYeGAcwvkqoMV1Gz1cHgj4kWJaiUe+jWnXH3aUmQsP8um17eBLoyZ9tqusem/k
         fsRN6nj4wWsx40boiCM4D3OhZSPFVTnAI3tPlfTqlrD00B8dk9l1xG+yKEn6mZiO9hG7
         EVl9Q6vbhU55Oaw3od5Jk1w0l49/PQJqPKMbOwy5Br61gFYOBriIP1C2JpMsy19eWuZ+
         VUTA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727774997; x=1728379797;
        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=0/0V3xg4BG1KgG+Byd/FPTkPwQH3pdxZB7W62BGif+I=;
        b=NNUff4jXy4LXFejmFCRd4r4C7gxoMpQniwCE9RM8MJhZpmJvzKEwuVmCykQa3HL7m9
         gqy1x/cqaONASVOzsUq0SCxk5cjTxKVwmRZMWwtw8scO237qUUctFZ7DuLAQPwtfDko3
         eEJRuAsAMojaScS9fn3oZantOgVRHZ3EK5WKkwDYZtuJnVjvSTd5R4bw6ZvxuGyiR7Yt
         MnClODNp/qSiojWRWP1FiB67M4Xp/ExteyQ6egHdmdtP6FlHDa+nXHvJXoItFI/28EBo
         r/xHSHkbM52YDr9q8TvATt56QzlwK2b9q+MDdxiPWlmXzNAZVofObHd33xWcBS77O0BN
         P6ew==
X-Forwarded-Encrypted: i=1; AJvYcCX5atfd7o820nuuUWK76Z+EjNwdVUpawenlz/CvJLcDCTlPe8pXDmrGPnlYTgh8OEEU6qP+DCC0SaY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzYrOnmteMygNETVbfDWfMKI86sysMDQL8PEiMVeenmqf+4GDvt
	NK+az54XMV4Soom9plXMlqvpQBmV52uImD0sXi2gC1gHQYYO+/6F
X-Google-Smtp-Source: AGHT+IFgaGsGaW0jGdIazX+Bwp+Kyx73Ol6KAfYn7oJ0YwVVqWuqIfZY0j6ENfPbkwEKcG+P2FFAbQ==
X-Received: by 2002:a05:6512:23a8:b0:535:6a4d:ed74 with SMTP id 2adb3069b0e04-5389fc6e871mr7399563e87.51.1727774996719;
        Tue, 01 Oct 2024 02:29:56 -0700 (PDT)
Message-ID: <24bc989b205d791dca3cf99935ed6eaf347b0298.camel@gmail.com>
Subject: Re: [PATCH v8 6/7] xen/riscv: page table handling
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Tue, 01 Oct 2024 11:29:55 +0200
In-Reply-To: <1fabd6e5-4c90-4415-8748-bab53145c1a3@suse.com>
References: <cover.1727449154.git.oleksii.kurochko@gmail.com>
	 <ead52f68ce47d55a78e2062aa4ef4d8675258091.1727449154.git.oleksii.kurochko@gmail.com>
	 <1fabd6e5-4c90-4415-8748-bab53145c1a3@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Mon, 2024-09-30 at 17:30 +0200, Jan Beulich wrote:
> > + */
> > +static int pt_next_level(bool alloc_tbl, pte_t **table, unsigned
> > int offset)
> > +{
> > +=C2=A0=C2=A0=C2=A0 pte_t *entry;
> > +=C2=A0=C2=A0=C2=A0 mfn_t mfn;
> > +
> > +=C2=A0=C2=A0=C2=A0 entry =3D *table + offset;
> > +
> > +=C2=A0=C2=A0=C2=A0 if ( !pte_is_valid(*entry) )
> > +=C2=A0=C2=A0=C2=A0 {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( !alloc_tbl )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ret=
urn XEN_TABLE_MAP_NONE;
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( create_table(entry) )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ret=
urn XEN_TABLE_MAP_NOMEM;
>=20
> At the risk of being overly picky: You still lose -ENOMEM here. I'd
> suggest
> to make create_table() return boolean (success / fail) to eliminate
> that
> concern. Any hypothetical plan for someone to add another error code
> there
> will then hit the return type aspect, pointing out that call sites
> need
> looking at for such a change to be correct.
I agree with these changes. Let's go with this approach.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:36:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:36:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807887.1219597 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZIa-0001wZ-HI; Tue, 01 Oct 2024 09:36:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807887.1219597; Tue, 01 Oct 2024 09:36: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 1svZIa-0001wS-Ea; Tue, 01 Oct 2024 09:36:04 +0000
Received: by outflank-mailman (input) for mailman id 807887;
 Tue, 01 Oct 2024 09:36: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 1svZIZ-0001w2-67
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:36: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 1svZIY-0007Sv-7y; Tue, 01 Oct 2024 09:36:02 +0000
Received: from [15.248.2.236] (helo=[10.24.67.28])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1svZIY-0005xe-0L; Tue, 01 Oct 2024 09:36: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=N6bl6iXNByHXOAv/LlmIckeETqGOSdMRyt+qALJ1Gb0=; b=tb5TC/Z5NPEumbLLCobLq+/zOf
	0l6VDnMz7ELjs1VQAUsO7kdEh3Jmjdx938PCmAmTqxhOnH+xJsT6bwOcAZmgK0g0NUnlU18ZfBXmz
	NKPs1rxRr6xT5COE77aI8LWTJ3MGP7pd/klSg1CDYL7o08P7lSR5Rgm4M+35vqHbdJAA=;
Message-ID: <e713ae46-104a-4414-8ad3-02ca8b0a521d@xen.org>
Date: Tue, 1 Oct 2024 10:35:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/8] xen/arm: Add SCMI over SMC calls handling layer
Content-Language: en-GB
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
> 
> Introduce the SCMI layer to have some basic degree of awareness
> about SMC calls that are based on the ARM System Control and
> Management Interface (SCMI) specification (DEN0056E).
> 
> The SCMI specification includes various protocols for managing
> system-level resources, such as: clocks, pins, reset, system power,
> power domains, performance domains, etc. The clients are named
> "SCMI agents" and the server is named "SCMI platform".
> 
> Only support the shared-memory based transport with SMCs as
> the doorbell mechanism for notifying the platform. Also, this
> implementation only handles the "arm,scmi-smc" compatible,
> requiring the following properties:
> 	- "arm,smc-id" (unique SMC ID)
> 	- "shmem" (one or more phandles pointing to shmem zones
> 	for each channel)
> 
> The initialization is done as 'presmp_initcall', since we need
> SMCs and PSCI should already probe EL3 FW for supporting SMCCC.

presmp_initcall() should only be used when we really need to initialize 
a subsytem very early. But it is not clear why this can't be called in 
initcall. Can you clarify?

> If no "arm,scmi-smc" compatible node is found in Dom0's
> DT

You are checking the host device tree. Dom0's DT will be created by Xen 
based on the host device tree when the domain is ceated.

>, the initialization fails silently, as it's not mandatory.
> Otherwise, we get the 'arm,smc-id' DT property from the node,
> to know the SCMI SMC ID we handle. The 'shmem' memory ranges
> are not validated, as the SMC calls are only passed through
> to EL3 FW if coming from Dom0 and as if Dom0 would be natively
> running.
> 
> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
> ---
>   xen/arch/arm/Kconfig                |  10 ++
>   xen/arch/arm/Makefile               |   1 +
>   xen/arch/arm/include/asm/scmi-smc.h |  52 +++++++++
>   xen/arch/arm/scmi-smc.c             | 163 ++++++++++++++++++++++++++++
>   4 files changed, 226 insertions(+)
>   create mode 100644 xen/arch/arm/include/asm/scmi-smc.h
>   create mode 100644 xen/arch/arm/scmi-smc.c
> 
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 323c967361..adf53e2de1 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -245,6 +245,16 @@ config PARTIAL_EMULATION
>   	  not been emulated to their complete functionality. Enabling this might
>   	  result in unwanted/non-spec compliant behavior.
>   
> +config SCMI_SMC
> +	bool "Enable forwarding SCMI over SMC calls from Dom0 to EL3 firmware"

Strictly speaking you are forwarding SMC from the hardware domain. For 
Arm, it is dom0 but it doesn't need to.

> +	default y
 > +	help> +	  This option enables basic awareness for SCMI calls using 
SMC as
> +	  doorbell mechanism and Shared Memory for transport ("arm,scmi-smc"
> +	  compatible only). The value of "arm,smc-id" DT property from SCMI
> +	  firmware node is used to trap and forward corresponding SCMI SMCs
> +	  to firmware running at EL3, if the call comes from Dom0.

Same here.

 > +>   endmenu
>   
>   menu "ARM errata workaround via the alternative framework"
> diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
> index 7792bff597..b85ad9c13f 100644
> --- a/xen/arch/arm/Makefile
> +++ b/xen/arch/arm/Makefile
> @@ -45,6 +45,7 @@ obj-y += platform_hypercall.o
>   obj-y += physdev.o
>   obj-y += processor.o
>   obj-y += psci.o
> +obj-$(CONFIG_SCMI_SMC) += scmi-smc.o
>   obj-y += setup.o
>   obj-y += shutdown.o
>   obj-y += smp.o
> diff --git a/xen/arch/arm/include/asm/scmi-smc.h b/xen/arch/arm/include/asm/scmi-smc.h
> new file mode 100644
> index 0000000000..c6c0079e86
> --- /dev/null
> +++ b/xen/arch/arm/include/asm/scmi-smc.h
> @@ -0,0 +1,52 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * xen/arch/arm/include/asm/scmi-smc.h
> + *
> + * ARM System Control and Management Interface (SCMI) over SMC
> + * Generic handling layer
> + *
> + * Andrei Cherechesu <andrei.cherechesu@nxp.com>
> + * Copyright 2024 NXP
> + */
> +
> +#ifndef __ASM_SCMI_SMC_H__
> +#define __ASM_SCMI_SMC_H__
> +
> +#include <xen/types.h>
> +#include <asm/regs.h>
> +
> +#ifdef CONFIG_SCMI_SMC
> +
> +bool scmi_is_enabled(void);
> +bool scmi_is_valid_smc_id(uint32_t fid);
> +bool scmi_handle_smc(struct cpu_user_regs *regs);
> +
> +#else
> +
> +static inline bool scmi_is_enabled(void)
> +{
> +    return false;
> +}
> +
> +static inline bool scmi_is_valid_smc_id(uint32_t fid)
> +{
> +    return false;
> +}
> +
> +static inline bool scmi_handle_smc(struct cpu_user_regs *regs)
> +{
> +    return false;
> +}
> +
> +#endif /* CONFIG_SCMI_SMC */
> +
> +#endif /* __ASM_SCMI_H__ */
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/arch/arm/scmi-smc.c b/xen/arch/arm/scmi-smc.c
> new file mode 100644
> index 0000000000..373ca7ba5f
> --- /dev/null
> +++ b/xen/arch/arm/scmi-smc.c
> @@ -0,0 +1,163 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * xen/arch/arm/scmi-smc.c
> + *
> + * ARM System Control and Management Interface (SCMI) over SMC
> + * Generic handling layer
> + *
> + * Andrei Cherechesu <andrei.cherechesu@nxp.com>
> + * Copyright 2024 NXP
> + */
> +
> +#include <xen/acpi.h>
> +#include <xen/device_tree.h>
> +#include <xen/errno.h>
> +#include <xen/init.h>
> +#include <xen/sched.h>
> +#include <xen/types.h>
> +
> +#include <asm/scmi-smc.h>
> +#include <asm/smccc.h>
> +
> +#define SCMI_SMC_ID_PROP   "arm,smc-id"
> +
> +static bool scmi_support;
> +static uint32_t scmi_smc_id;

AFAICT, the two variables should not change after boot. So they should 
be marked __ro_after_init.

> +
> +/* Check if SCMI layer correctly initialized and can be used. */
> +bool scmi_is_enabled(void)
> +{
> +    return scmi_support;
> +}
> +
> +/*
> + * Check if provided SMC Function Identifier matches the one known by the SCMI
> + * layer, as read from DT prop 'arm,smc-id' during initialiation.
> + */
> +bool scmi_is_valid_smc_id(uint32_t fid)
> +{
> +    return (fid == scmi_smc_id);
> +}
> +
> +/*
> + * Generic handler for SCMI-SMC requests, currently only forwarding the
> + * request to FW running at EL3 if it came from Dom0. Is called from the vSMC

s/dom0/hardware domain/

> + * layer for SiP SMCs, since SCMI calls are usually provided this way.
> + * Can also be called from `platform_smc()` plat-specific callback.

I am not entirely sure I understand the value of calling the function 
from platform_smc(). I also don't see any use of it in this series, so 
probably best to remove the sentence for now.

 > + *> + * Returns true if SMC was handled (regardless of response), 
false otherwise.
> + */
> +bool scmi_handle_smc(struct cpu_user_regs *regs)
> +{
> +    struct arm_smccc_res res;
> +
> +    /* Only the hardware domain should use SCMI calls */
> +    if ( !is_hardware_domain(current->domain) )
> +    {
> +        gprintk(XENLOG_ERR, "SCMI: Unprivileged d%d cannot use SCMI.\n",

Please use %pd instead d%d. With that you can simply use...

> +                current->domain->domain_id);

... current->domain here.

 > +        return false;> +    }
> +
> +    /* For the moment, forward the SCMI Request to FW running at EL3 */
> +    arm_smccc_1_1_smc(scmi_smc_id,
> +                      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;
> +}
> +
> +static int __init scmi_check_smccc_ver(void)
> +{
> +    if ( smccc_ver < ARM_SMCCC_VERSION_1_1 )
> +    {
> +        printk(XENLOG_ERR
 > +               "SCMI: No SMCCC 1.1 support, SCMI calls forwarding 
disabled\n");> +        return -ENOSYS;
> +    }
> +
> +    return 0;
> +}
> +
> +static int __init scmi_dt_init_smccc(void)
> +{
> +    static const struct dt_device_match scmi_ids[] __initconst =
> +    {
> +        /* We only support "arm,scmi-smc" binding for now */
> +        DT_MATCH_COMPATIBLE("arm,scmi-smc"),
> +        { /* sentinel */ },
> +    };
> +    const struct dt_device_node *scmi_node;
> +    const char *smc_id_prop = SCMI_SMC_ID_PROP;

NIT: I would remove smc_id_prop and use SCMI_SMC_ID_PROP directly.

> +    int ret;
> +
> +    /* If no SCMI firmware node found, fail silently as it's not mandatory */
 > +    scmi_node = dt_find_matching_node(NULL, scmi_ids);> +    if ( 
!scmi_node )
> +        return -EOPNOTSUPP;
> +
> +    ret = dt_property_read_u32(scmi_node, smc_id_prop, &scmi_smc_id);
> +    if ( !ret )
> +    {
> +        printk(XENLOG_ERR "SCMI: No valid \"%s\" property in \"%s\" DT node\n",
> +               smc_id_prop, scmi_node->full_name);
> +        return -ENOENT;
> +    }
> +
> +    scmi_support = true;
> +
> +    return 0;
> +}
> +
> +/* Initialize the SCMI layer based on SMCs and Device-tree */
> +static int __init scmi_init(void)
> +{
> +    int ret;
> +
> +    if ( !acpi_disabled )
> +    {
> +        printk("SCMI is not supported when using ACPI\n");

NIT: Can you use XENLOG_WARN in front?

> +        return -EINVAL;
> +    }
> +
> +    ret = scmi_check_smccc_ver();
> +    if ( ret )
> +        goto err;
> +
> +    ret = scmi_dt_init_smccc();
> +    if ( ret == -EOPNOTSUPP )
> +        return ret;
> +    if ( ret )
> +        goto err;
> +
> +    printk(XENLOG_INFO "Using SCMI with SMC ID: 0x%x\n", scmi_smc_id);
> +
> +    return 0;
> +
> +err:
> +    printk(XENLOG_ERR "SCMI: Initialization failed (ret = %d)\n", ret);

In the commit message, you said the SCMI subsystem was optional. But 
here you use XENLOG_ERR. Shouldn't it be a warn or XENLOG_INFO/XENLOG_WARN?

> +    return ret;
> +}
> +
> +presmp_initcall(scmi_init);

See my question above about using __initcall.

> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * tab-width: 4
> + * indent-tabs-mode: nil
> + * End:
> + */

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:46:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:46:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807895.1219616 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZSO-0004TL-Kf; Tue, 01 Oct 2024 09:46:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807895.1219616; Tue, 01 Oct 2024 09: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 1svZSO-0004TE-I3; Tue, 01 Oct 2024 09:46:12 +0000
Received: by outflank-mailman (input) for mailman id 807895;
 Tue, 01 Oct 2024 09:46: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 1svZSN-0004SB-H6
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:46: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 1svZSM-0007d2-Sb; Tue, 01 Oct 2024 09:46:10 +0000
Received: from [15.248.2.236] (helo=[10.24.67.28])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1svZSM-0006zC-M5; Tue, 01 Oct 2024 09:46: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=0txoPtOHdRdaSTB+EZ4HbLtXcesaOfu4P6wllQDza0g=; b=J/FOXokXrTjLSTJ1Z3nERJPaYt
	fpoGU8DvBNj6njfNb0bcHkNT9AWYd4C2auLVaLsPvWjqVYTxNb7B0jwB9gF8RFHvKbDWlYACXEJhB
	jRIE9RljHGWsyCMiTlBAapddPLas/Tk9VulxVNgopeKmcDwHYJ+nwW+08f9ILMNDtZYw=;
Message-ID: <7878c251-7b26-47e0-a79c-4e563ee1e9f9@xen.org>
Date: Tue, 1 Oct 2024 10:46:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/8] xen/arm: vsmc: Enable handling SiP-owned SCMI SMC
 calls
Content-Language: en-GB
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-5-andrei.cherechesu@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240930114715.642978-5-andrei.cherechesu@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
> 
> Change the handling of SiP SMC calls to be more generic,
> instead of directly relying on the `platform_smc()` callback
> implementation.
> 
> Try to handle the SiP SMC first through the `platform_smc()`
> callback (if implemented). If not handled, check if the
> SCMI layer is available and that the SMC is a valid SCMI
> message. Handle it then within the SCMI layer which forwards
> it to EL3 FW, only if the SMC comes from Dom0.

NIT: I would remove the last sentence as this is implementation details. 
But if you want to keep it, then s/Dom0/Hardware domain/

> 
> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
> ---
>   xen/arch/arm/vsmc.c | 19 ++++++++++++++++++-
>   1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
> index 7f2f5eb9ce..0de194a132 100644
> --- a/xen/arch/arm/vsmc.c
> +++ b/xen/arch/arm/vsmc.c
> @@ -14,6 +14,7 @@
>   #include <asm/cpufeature.h>
>   #include <asm/monitor.h>
>   #include <asm/regs.h>
> +#include <asm/scmi-smc.h>
>   #include <asm/smccc.h>
>   #include <asm/tee/ffa.h>
>   #include <asm/tee/tee.h>
> @@ -224,6 +225,22 @@ static bool handle_sssc(struct cpu_user_regs *regs)
>       }
>   }
>   
> +/* Secure Calls defined by the Silicon Provider (SiP) */
> +static bool handle_sip(struct cpu_user_regs *regs)
> +{
> +    uint32_t fid = (uint32_t)get_user_reg(regs, 0);
> +
> +    /* Firstly, let each platform define custom handling for these SMCs */
> +    if ( platform_smc(regs) )
> +        return true;
> +
> +    /* Otherwise, if valid SCMI SMC, forward the call to EL3 */

This comment is likely going to stale. This is up to smci_handle_smc() 
to decide what to do. So I would remove this comment.

With that:

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:46:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:46:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807894.1219607 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZSB-0004B6-DV; Tue, 01 Oct 2024 09:45:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807894.1219607; Tue, 01 Oct 2024 09:45: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 1svZSB-0004Ax-A4; Tue, 01 Oct 2024 09:45:59 +0000
Received: by outflank-mailman (input) for mailman id 807894;
 Tue, 01 Oct 2024 09:45: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svZSA-0004An-4X
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:45:58 +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 f2fa6d9b-7fd9-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 11:45:53 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b3e1so3043530a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 02:45:53 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27c5c5dsm682386866b.72.2024.10.01.02.45.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 02:45:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f2fa6d9b-7fd9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727775953; x=1728380753; 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=UkXBtiaWTQJS5Swkz/sSCAvSUydL0jNvY3fFRieBCdg=;
        b=V4QWHgGJ1GercDRcavWeSJwgdlepcm78NVaUTBTV6VcuuVOrns6ZQusNDMtaMYLBss
         OUfyO5JWuDF6R2pPMlTbiXAxr7iEgvwladsz0JFalY5B+ZuPFIh2vPPNSEzhTc00K9Wj
         VQPwbC9NGK2+e2yyrMnDla0mTBc0tBYZOYAnE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727775953; x=1728380753;
        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=UkXBtiaWTQJS5Swkz/sSCAvSUydL0jNvY3fFRieBCdg=;
        b=wga4t6ll9v0RdYn8s5YRM6k2w29Djz9NzaNnc8fc1cGsalGACLXqL3sBYI6U0mWp28
         5e2wN15XmjIZv44cdtJ+DJaGMXBYk7g5FSdPXU9u84g35N6VR45WITnKkH0Zv/LKmu6w
         FTyVtMa5vUHZfRW88eAHJn6AOXOAlXG0KPi9D2SGXKnUwtsf9gNMgUNqCpn/p1uqM6Oq
         xcQGz2PkhHRBeVkBSneByPOxEJNlV/xM3psJ2p6i2itGLcc2rc3ggOSDQvmi1fCKCXc6
         diV2+e2Y3VkZFeqAM8gT2mVaOKwQekguR0w1S6/Uhxn9Ek8Qrbv++gA5ZmObk6iTewhr
         x4Lw==
X-Forwarded-Encrypted: i=1; AJvYcCUAy67K4HF6raB3RTiF4AqfTUm8vbuEh/zIT5MuAw1bKvinAWZWZOTYbujvzTaGRw/nsIgqbUe6ePs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxGXwTRcHeTQ+Xts+mnoHJSoFgAJunErWvdXbl1jmwA/JNkQFji
	CRB7IrphfIhlLTXgtPQHt+XwkF++ogK6V8Hp9wQoOQZosvsvxbLrVSb0PCXyP0w=
X-Google-Smtp-Source: AGHT+IGS9pH7aAwDWxkYu2IOg6mZ4ULg4QUxlKpTMWdsWFTIc4YoPt+BbiAXndK9vU7UAZa4b/Qz9w==
X-Received: by 2002:a17:907:74b:b0:a8a:53fb:d571 with SMTP id a640c23a62f3a-a93c48e8009mr1806414466b.11.1727775952735;
        Tue, 01 Oct 2024 02:45:52 -0700 (PDT)
Message-ID: <07699749-f9b6-4d78-874c-ff61d76810dc@citrix.com>
Date: Tue, 1 Oct 2024 10:45:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: prefer RDTSCP in rdtsc_ordered()
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cae006a7-c1be-4608-a011-dda1fb4a0312@suse.com>
 <14ab2f50-e58c-4cb4-b976-4cb5ec14d908@citrix.com>
 <90f1dda1-b06e-40e6-be6b-ea99acba875f@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <90f1dda1-b06e-40e6-be6b-ea99acba875f@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01/10/2024 9:12 am, Jan Beulich wrote:
> On 30.09.2024 18:40, Andrew Cooper wrote:
>> On 30/09/2024 4:08 pm, Jan Beulich wrote:
>>> --- a/xen/arch/x86/include/asm/msr.h
>>> +++ b/xen/arch/x86/include/asm/msr.h
>>> @@ -108,18 +108,30 @@ static inline uint64_t rdtsc(void)
>>>  
>>>  static inline uint64_t rdtsc_ordered(void)
>>>  {
>>> -	/*
>>> -	 * The RDTSC instruction is not ordered relative to memory access.
>>> -	 * The Intel SDM and the AMD APM are both vague on this point, but
>>> -	 * empirically an RDTSC instruction can be speculatively executed
>>> -	 * before prior loads.  An RDTSC immediately after an appropriate
>>> -	 * barrier appears to be ordered as a normal load, that is, it
>>> -	 * provides the same ordering guarantees as reading from a global
>>> -	 * memory location that some other imaginary CPU is updating
>>> -	 * continuously with a time stamp.
>>> -	 */
>>> -	alternative("lfence", "mfence", X86_FEATURE_MFENCE_RDTSC);
>>> -	return rdtsc();
>>> +    uint64_t low, high, aux;
>>> +
>>> +    /*
>>> +     * The RDTSC instruction is not ordered relative to memory access.
>>> +     * The Intel SDM and the AMD APM are both vague on this point, but
>>> +     * empirically an RDTSC instruction can be speculatively executed
>>> +     * before prior loads.
>> This part of the comment is stale now.  For RDTSC, AMD state:
>>
>> "This instruction is not serializing. Therefore, there is no guarantee
>> that all instructions have completed at the time the time-stamp counter
>> is read."
>>
>> and for RDTSCP:
>>
>> "Unlike the RDTSC instruction, RDTSCP forces all older instructions to
>> retire before reading the time-stamp counter."
>>
>> i.e. it's dispatch serialising, given our new post-Spectre terminology.
> I don't read that as truly "dispatch serializing";

That is precisely what dispatch serialising is and means.

Both LFENCE and RDTSCP wait at dispatch until they're the only
instruction in the pipeline.  That is how they get the property of
waiting for all older instructions to retire before executing.

> both Intel and AMD
> leave open whether subsequent insns would also be affected, or whether
> those could pass the RDTSCP.

Superscalar pipelines which can dispatch more than one uop per cycle can
issue LFENCE/RDTSCP concurrently with younger instructions.

This is why LFENCE; JMP * was retracted as safe alternative to
retpoline, and why the Intel docs call out explicitly that you need
LFENCE following the RDTSC(P) if you want it to complete before
subsequent instructions start.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:46:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:46:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807905.1219627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZT9-0005Lm-2b; Tue, 01 Oct 2024 09:46:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807905.1219627; Tue, 01 Oct 2024 09:46: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 1svZT8-0005Lf-UQ; Tue, 01 Oct 2024 09:46:58 +0000
Received: by outflank-mailman (input) for mailman id 807905;
 Tue, 01 Oct 2024 09:46: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svZT7-0004An-2A
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:46:57 +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 1807eee7-7fda-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 11:46:55 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a8d29b7edc2so743186966b.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 02:46:55 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27c5954sm679364366b.61.2024.10.01.02.46.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 02:46:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1807eee7-7fda-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727776015; x=1728380815; 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=7x5mVBzXerdxXM7kG7PWjyWocPZm1z2DM5/gObxzCnc=;
        b=j1LgsxxqH43GHCsGC3f2/RPVU5IvDmwzwoK33baEwulJiLCO6RKNOWs3JzfE0h2OHM
         ahspKucnzFfRhNXDKU5G1YwhpJTwmW15Z2U4Ry1VuYj3uSzc9cqOCGCKziEnZRvOpiqA
         V6PsQCMmQ4q5XD7PPruiS1Os4RsOOk9XX39RA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727776015; x=1728380815;
        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=7x5mVBzXerdxXM7kG7PWjyWocPZm1z2DM5/gObxzCnc=;
        b=qOMPBCQB1uN7FCOZz5O+wTH4Fp8p34rbeD9mr3+uVpR+HHMVR45ZFSJTr9/A5D3cm6
         j/dczWZXuvVUpnvdzhD3F/Cn9R3srLlZtdlP8cSxsByFi/HxwQAnvZXj8F+kteWI+a7L
         68oyAHmw6o9UQZmDrTP39gpV/Os5fvOCVJn5Q4xXIW3TtiDBz/57cPIQDlcxFxc7Hunz
         NW4NgNF/H39UpMYGhN8ittN60AYzVrFLwK3hnPiI0F7iPeQNKy+aMqX4kxnVI+S8vWbF
         7ecvY3472FO0nQ4AQaS5oDA8DY3g7GwZPeJxHLHIF6HTriLBi7Q42LcvJeAABTH3aLOP
         CJxQ==
X-Forwarded-Encrypted: i=1; AJvYcCV7Ue+UWD87R8gwyqCKndrzyd8j2KZ7HzqDdLqn4eNbenC0taz6mDhZgTnw6Q/1SFRXLuz7DIdN1YE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YySKh6pv94vHf10a4zHCZ1GadRKFtJDbQi8tptgu7NCuMDwztmW
	Rbz+iePetoXfV+OMX7h90scDsLI/TWCy4R5X/oeH+L5LKRjYj1zLGIr52MBpPqp8AUG41JJ348k
	I3KQ=
X-Google-Smtp-Source: AGHT+IFLY/BcW5B05yd+doO0vCpuXxSUHLlpD8eOuGWM5Bx4XNj1SJkMsHO8ADJS0pM6pUnn1tFyjw==
X-Received: by 2002:a17:907:7207:b0:a8a:7549:2a25 with SMTP id a640c23a62f3a-a93c4969f4emr1473975366b.36.1727776014872;
        Tue, 01 Oct 2024 02:46:54 -0700 (PDT)
Message-ID: <34935662-873a-47fa-b162-435864a415f6@citrix.com>
Date: Tue, 1 Oct 2024 10:46:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86: prefer RDTSCP in rdtsc_ordered()
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <7d60fb7a-8db2-49cc-b7ba-bab023c6ed1f@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <7d60fb7a-8db2-49cc-b7ba-bab023c6ed1f@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01/10/2024 9:15 am, Jan Beulich wrote:
> If available, its use is supposed to be cheaper than LFENCE+RDTSC, and
> is virtually guaranteed to be cheaper than MFENCE+RDTSC.
>
> Update commentary (and indentation) while there.
>
> Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:49:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:49:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807913.1219637 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZV7-0006UB-DD; Tue, 01 Oct 2024 09:49:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807913.1219637; Tue, 01 Oct 2024 09:49: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 1svZV7-0006U4-A5; Tue, 01 Oct 2024 09:49:01 +0000
Received: by outflank-mailman (input) for mailman id 807913;
 Tue, 01 Oct 2024 09:49: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=i7H1=Q5=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1svZV6-0006Ty-V2
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:49:00 +0000
Received: from mail-oo1-xc2c.google.com (mail-oo1-xc2c.google.com
 [2607:f8b0:4864:20::c2c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 613b992a-7fda-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 11:48:59 +0200 (CEST)
Received: by mail-oo1-xc2c.google.com with SMTP id
 006d021491bc7-5e5568f1baaso2977111eaf.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 02:48:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 613b992a-7fda-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727776138; x=1728380938; 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=S2OPky1tKXNS30zPjRBLklo1lhvYkAIlQSZFkaFbs0k=;
        b=M4MGkS+R4tQzTjPtH+SQNZeIcpyzrYuZueO76dq+fQtmnmYP3v6ihqGLAL4PZDhmmr
         N2Hi94xxl/sT1ox5wfOUIMEv5vI5giP7BJiZdkaH4yJ1R9L8auzW0KPa7HrRB+baCeic
         F3OodTo7WubOKVGuSDW14+efz/o1BbIFr+Rxg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727776138; x=1728380938;
        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=S2OPky1tKXNS30zPjRBLklo1lhvYkAIlQSZFkaFbs0k=;
        b=uQ941F3pyuY184cOcPrYKG2IyC1rrOWLck1OaJGzjtGvbeLoHngwR1vQQgme0SFbe6
         TrzOfmc6EuMCdWPe3HmrrKzJIIaQ9V9CX/i6PMr7EkPtIPYsN+ru7EKcFZRPQrGdTTGs
         FY0jtY5kmjHEHDRQfKESoe9KCzzN8S2FOtfV4hNsjixmFt9wuzAqc4vI5WKZLQX8bcJo
         V+nXMySeGmTIkeeTqyor65K+KvoA1qHK0b+y+2HPtm8fOpSJ0LQnhRFkgfgbt5vgHP6D
         dwL6wlGbQH6XoeD30yiNv2Z8pESnpHQpTGk9mI1uiJTtqxbymfMUg4okfqx7oWmjMt3Z
         +zZA==
X-Forwarded-Encrypted: i=1; AJvYcCXFmxgPSZ3Ikg2b+vph7nTOKoi8VqkvTAI8uZBD0GN7P+g/nBD5Y7Yo/JOlLSOkPPYMU0GqFhjw0Jk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxAReZjFV8l+gAMGawH2ZRtdeP4YS+5KO0ACVHwFGahV5a5HULU
	lthEscZdB7lAjgAfA82Ok0OMgg59jxujLlTcBwzGBfcTLslaJ4eJZKa139LFwzLul5kpy1qjxHj
	PW4QP+nIqsEUdP3mOw7xJbs8lqykH/xNSOoewhQ==
X-Google-Smtp-Source: AGHT+IEC8eyPCTOfETpac4uXI7wfoo5x9sd7eq8Ty8BPQ4QQRkX4oR2aBgriHj3kLZO69nRZrZ9K0tHj5OplVHxsJew=
X-Received: by 2002:a05:6820:829:b0:5e1:d741:6f04 with SMTP id
 006d021491bc7-5e7727a2584mr9625645eaf.3.1727776137724; Tue, 01 Oct 2024
 02:48:57 -0700 (PDT)
MIME-Version: 1.0
References: <20240926092109.475271-1-frediano.ziglio@cloud.com>
 <20240926092109.475271-3-frediano.ziglio@cloud.com> <e17b2afc-3647-4472-9d37-1510b40ff23d@suse.com>
 <CACHz=ZhtYik3p4z2mc1PYG9M68Mwap68_DdoE7MWksW0VW+BTw@mail.gmail.com> <b2a8b468-5745-4f58-bb86-721ea055c1b1@suse.com>
In-Reply-To: <b2a8b468-5745-4f58-bb86-721ea055c1b1@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Tue, 1 Oct 2024 10:48:46 +0100
Message-ID: <CACHz=ZhhpU2S1Nt2EW-LL=r8fZSbCLMhFMWD2SWvPP094gc1rQ@mail.gmail.com>
Subject: Re: [PATCH v6 2/3] x86/boot: Rewrite EFI/MBI2 code partly in C
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>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Oct 1, 2024 at 9:52=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 01.10.2024 10:35, Frediano Ziglio wrote:
> > On Mon, Sep 30, 2024 at 4:51=E2=80=AFPM Jan Beulich <jbeulich@suse.com>=
 wrote:
> >> On 26.09.2024 11:21, Frediano Ziglio wrote:
> >>> @@ -243,7 +234,7 @@ __efi64_mb2_start:
> >>>          /*
> >>>           * Initialize BSS (no nasty surprises!).
> >>>           * It must be done earlier than in BIOS case
> >>> -         * because efi_multiboot2() touches it.
> >>> +         * because efi_multiboot2_prelude() touches it.
> >>>           */
> >>>          mov     %eax, %edx
> >>
> >> I think this MOV wants to gain a comment, now that ...
> >>
> >>>          lea     __bss_start(%rip), %edi
> >>> @@ -252,36 +243,30 @@ __efi64_mb2_start:
> >>>          shr     $3, %ecx
> >>>          xor     %eax, %eax
> >>>          rep stosq
> >>> -        mov     %edx, %eax
> >>
> >> ... this one's going away.
> >>
> >
> > What about
> >
> > diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> > index 89b5e2af88..6fa6ea93e5 100644
> > --- a/xen/arch/x86/boot/head.S
> > +++ b/xen/arch/x86/boot/head.S
> > @@ -231,12 +231,14 @@ __efi64_mb2_start:
> >          */
> >         and     $~15, %rsp
> >
> > +       /* Move away magic number, we need it later but we need to use =
%eax */
> > +        mov     %eax, %edx
> > +
> >         /*
> >          * Initialize BSS (no nasty surprises!).
> >          * It must be done earlier than in BIOS case
> >          * because efi_multiboot2_prelude() touches it.
> >          */
> > -        mov     %eax, %edx
> >         lea     __bss_start(%rip), %edi
> >         lea     __bss_end(%rip), %ecx
> >         sub     %edi, %ecx
> >
> > ??
>
> Fine with me. Maybe s/Move away/Save"?
>
> Jan

Done.

One last though. Do you think I should now rename
xen/arch/x86/efi/parse-mbi2.c file ?

Frediano


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:54:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:54:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807917.1219647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZaB-0007xb-0l; Tue, 01 Oct 2024 09:54:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807917.1219647; Tue, 01 Oct 2024 09:54: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 1svZaA-0007xU-T1; Tue, 01 Oct 2024 09:54:14 +0000
Received: by outflank-mailman (input) for mailman id 807917;
 Tue, 01 Oct 2024 09:54: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svZaA-0007xO-7X
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:54:14 +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 1ce5e722-7fdb-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 11:54:13 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c71f1396e4so6806230a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 02:54:13 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88240a325sm5932262a12.33.2024.10.01.02.54.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 02:54:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ce5e722-7fdb-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727776453; x=1728381253; 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=WNJiA63kD4vymkJd/rZ5UAhqsoGGtsreD6aHVmqYDZg=;
        b=YgOfIddxqxTgWHUyQhLfcTnvXxX4syi9n9DDdvezvgwZsw3bzMiAQGUko1GcupE8PA
         M/x3q2825o2Ef3U7gqd4aMQb6yzO5Po/R+r/eyPKq7rJ3TrjaKE7lQCWDMaMBy/YJK4x
         qztHFAVYNdyB5JAvjedNGVdrQzrAe6NfGSv9pAGvm37to+e66LXaJ5tWDEXOKWLlMra3
         9oEvftj6fUdZaPnppnrUb9ij87i4I8pMezUqJbBwMlUGhf9vouOLDmkNdsirOtxKvB1a
         R5ZqlhxqsGz/cD6D9c1FulaHOMQN3ctNv3BhX7Vkh45AWoaCQxB3gc+gndngFeLH1h+S
         E6Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727776453; x=1728381253;
        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=WNJiA63kD4vymkJd/rZ5UAhqsoGGtsreD6aHVmqYDZg=;
        b=lltbXIs7iBBRRiIQxXiXT5Wt/hklv4aKm18bk2uFaBVIIfmKnOOhWEWr05grN6JlEe
         6Zz+Gu+RQY4Cqs17Y9dJ/qR0kqbkRwzP14ZcMEmvZ8leXVt3IpHUFDdjwXWzHuMBXkRf
         tmqyarzdByl/cGqpIqwJpTZDO/X5qNCinT2mAhImfaAWDWtoBXI9ro1xj25Cpi974Nbr
         d2YoeVoyDLl315LjkymfxTmjvSDgPVJTWv00WoUhpphG+p2z/ZRO7u0Kls1utuMtzJrX
         h8EPJMGuzcRgcDSu9uZcYdo1OC7wktPFWi9vw98CflXPBNXyXaifNya94pSIzEGD1ziI
         WaFg==
X-Gm-Message-State: AOJu0YyuFoUqKeXFcXy9u6STehqni616qKEO8UJPJfmKkrPuZRN42IfX
	Z1vFQ+D+oZbYf4/dx7UKC/icPH3AxW9K7v0lKeda5aHJssrh+4sImxl3BAGNIg==
X-Google-Smtp-Source: AGHT+IGD0B5Hm7VVr72fABC2wtCzH+bJb4g+dfqwP+M1vNPMHXb70CE/dyHXnzQVrsFTZtWl5qDByQ==
X-Received: by 2002:a05:6402:371b:b0:5c4:a62:e1f1 with SMTP id 4fb4d7f45d1cf-5c882603c1amr12331372a12.29.1727776452672;
        Tue, 01 Oct 2024 02:54:12 -0700 (PDT)
Message-ID: <f54ffc9e-3721-412e-be52-c93a1a801cca@suse.com>
Date: Tue, 1 Oct 2024 11:54:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 2/3] xen/gnttab: address a violation of MISRA C
 Rule 13.6
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, consulting@bugseng.com,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Federico Serafini <federico.serafini@bugseng.com>
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <cfd2873eb69707ec3f33ea888951ae5676c43bab.1727690180.git.federico.serafini@bugseng.com>
 <alpine.DEB.2.22.394.2409301549100.451631@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.2409301549100.451631@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 00:53, Stefano Stabellini wrote:
> On Mon, 30 Sep 2024, Federico Serafini wrote:
>> --- a/xen/common/compat/grant_table.c
>> +++ b/xen/common/compat/grant_table.c
>> @@ -78,12 +78,15 @@ int compat_grant_table_op(
>>          cmd_op = cmd;
>>      switch ( cmd_op )
>>      {
>> -#define CASE(name) \
>> -    case GNTTABOP_##name: \
>> -        if ( unlikely(!guest_handle_okay(guest_handle_cast(uop, \
>> -                                                           gnttab_##name##_compat_t), \
>> -                                         count)) ) \
>> -            rc = -EFAULT; \
>> +#define CASE(name)                                                  \
>> +    case GNTTABOP_ ## name:                                         \
>> +    {                                                               \
>> +        XEN_GUEST_HANDLE_PARAM(gnttab_ ## name ## _compat_t) h =    \
>> +            guest_handle_cast(uop, gnttab_ ## name ## _compat_t);   \
>> +                                                                    \
>> +        if ( unlikely(!guest_handle_okay(h, count)) )               \
>> +            rc = -EFAULT;                                           \
>> +    }                                                               \
>>          break
> 
> We would typically put the break within the case { }

That won't work very well with the break not having a semicolon, for the
semicolon to actually be used when invoking the macro. Moving the break
(while adding a semicolon there) as you suggest would then mean the use
site semicolon to end up being an unreachable statement.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 09:59:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 09:59:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807926.1219656 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZey-0000pp-HC; Tue, 01 Oct 2024 09:59:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807926.1219656; Tue, 01 Oct 2024 09: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 1svZey-0000pi-Ef; Tue, 01 Oct 2024 09:59:12 +0000
Received: by outflank-mailman (input) for mailman id 807926;
 Tue, 01 Oct 2024 09:59: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 1svZew-0000pc-UT
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 09:59:10 +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 1svZew-0007qd-5E; Tue, 01 Oct 2024 09:59:10 +0000
Received: from [15.248.2.236] (helo=[10.24.67.28])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1svZev-0008KH-TG; Tue, 01 Oct 2024 09:59: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=jDaGoK8BkK7EgKhZMDc++1g0Km/DRcTRj6IPdmGIrks=; b=GKG3pyt1Sh6+STQd74qZyk3rSV
	DnNswx6yLbysyyXa6sdncWMSJvuvSgiqG2wqYRMApH5EhZubUuYjdgeuqXfw3qD+cCLIT0QWMnQKQ
	io7n6ce//CGBxIKqWFvKjKAUnUP2l6E2U07PeERierCPzATg/5vVqjwaAHxmYJkd74jU=;
Message-ID: <b06a2506-92d0-4bd2-b377-c9d140c0d6ce@xen.org>
Date: Tue, 1 Oct 2024 10:59:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/8] xen/arm: Add SCMI over SMC calls handling layer
Content-Language: en-GB
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Andrei,

On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
> +/*
> + * Generic handler for SCMI-SMC requests, currently only forwarding the
> + * request to FW running at EL3 if it came from Dom0. Is called from the vSMC
> + * layer for SiP SMCs, since SCMI calls are usually provided this way.
> + * Can also be called from `platform_smc()` plat-specific callback.
> + *
> + * Returns true if SMC was handled (regardless of response), false otherwise.
> + */
> +bool scmi_handle_smc(struct cpu_user_regs *regs)
> +{
> +    struct arm_smccc_res res;
> +
> +    /* Only the hardware domain should use SCMI calls */
> +    if ( !is_hardware_domain(current->domain) )
> +    {
> +        gprintk(XENLOG_ERR, "SCMI: Unprivileged d%d cannot use SCMI.\n",
> +                current->domain->domain_id);
> +        return false;
> +    }
> +
> +    /* For the moment, forward the SCMI Request to FW running at EL3 */
> +    arm_smccc_1_1_smc(scmi_smc_id,

Actually, shouldn't this be get_user_reg(regs, 0) so we don't rely on 
scmi_handle_smc() to be called only when this is equal to scmi_smc_id?

The other option is to move the check for scmi_smc_id in this function.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:01:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:01:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807930.1219667 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZhD-0002L1-TY; Tue, 01 Oct 2024 10:01:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807930.1219667; Tue, 01 Oct 2024 10:01: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 1svZhD-0002Ku-Qc; Tue, 01 Oct 2024 10:01:31 +0000
Received: by outflank-mailman (input) for mailman id 807930;
 Tue, 01 Oct 2024 10:01: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 1svZhC-0002Ko-0k
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:01: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 1svZhB-0007yx-8L; Tue, 01 Oct 2024 10:01:29 +0000
Received: from [15.248.2.236] (helo=[10.24.67.28])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1svZhB-0000LB-2B; Tue, 01 Oct 2024 10:01: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=zlrRLOtlPJNj8d4BaX3pPVvL0/9TzwrxxVmjdq/GVi8=; b=Rt2oHciDRefw9pYAX6+nyeI4uw
	mw/k4JQQW5pn8SvF2TFHj5nxQ7xdZvh2fxpHQSOzHGfHy3zB5fdff6op+Vk/Nw21/2KJBFKS7kx7i
	oeeebUV9tE5DmC4vdXTbbODsouH5qEyhz3eMM2xJ0kP906e/T2ld32fBj4D0LvQFzD6c=;
Message-ID: <94dc1668-5215-424c-9dcb-1e343451d464@xen.org>
Date: Tue, 1 Oct 2024 11:01:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/8] xen/arm: platforms: Add NXP S32CC platform code
Content-Language: en-GB
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-6-andrei.cherechesu@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240930114715.642978-6-andrei.cherechesu@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Andrei,

On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
> 
> Add code for NXP S32CC platforms (S32G2, S32G3, S32R45).
> 
> S32CC platforms use the NXP LINFlexD UART driver for
> console by default, and rely on Dom0 having access to
> SCMI services for system-level resources from firmware
> at EL3.
> 
> Platform-related quirks will be addressed in following
> commits.

I don't see any specific quirks in the series. Are you intended to send 
follow-up?

[...]

> diff --git a/xen/arch/arm/platforms/Makefile b/xen/arch/arm/platforms/Makefile
> index bec6e55d1f..2c304b964d 100644
> --- a/xen/arch/arm/platforms/Makefile
> +++ b/xen/arch/arm/platforms/Makefile
> @@ -10,5 +10,6 @@ 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_S32CC_PLATFORM)  += s32cc.o
>   obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp.o
>   obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp-eemi.o
> diff --git a/xen/arch/arm/platforms/s32cc.c b/xen/arch/arm/platforms/s32cc.c
> new file mode 100644
> index 0000000000..f99a2d56f6
> --- /dev/null
> +++ b/xen/arch/arm/platforms/s32cc.c

We only add a new platform if there are platform specific hook to 
implement. AFAICT, you don't implement any, so it should not be necessary.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:02:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:02:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807934.1219677 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZi7-0002qK-5G; Tue, 01 Oct 2024 10:02:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807934.1219677; Tue, 01 Oct 2024 10: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 1svZi7-0002qD-2f; Tue, 01 Oct 2024 10:02:27 +0000
Received: by outflank-mailman (input) for mailman id 807934;
 Tue, 01 Oct 2024 10: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svZi5-0002lV-BH
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:02:25 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 413b715c-7fdc-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:02:23 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a8d0d82e76aso869104266b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:02:23 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93e9f9aed3sm420370566b.31.2024.10.01.03.02.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 03:02:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 413b715c-7fdc-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727776943; x=1728381743; 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=RadLtHikHNn96wg7EEGjuSokSf70lW0ugmYKF3APxmY=;
        b=kqPoC8aeKt9sB+8qLB3VCWkLkywFC1N0hNTxylq5Hwo/SEkGLG6dlhN/OFvY3P0omN
         vCMxALbJ9dydVuVvanWRL20l2Qo1gLNPLx478kQkIo+4A8yXZuXWVodN8Fgz5UAI8ErI
         mzMNaER/dhaWEwS/3CdhlMoEkPlq8Wgp9JPxY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727776943; x=1728381743;
        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=RadLtHikHNn96wg7EEGjuSokSf70lW0ugmYKF3APxmY=;
        b=MztsUbq7NfEFygA86kNwSvnsyhL6mmbD2NtUoMpxggL3NJnPL25VUsBl0c+Un5/DRZ
         Ob+zSDyOkJGKX0l9QF9MsBYqwpeN5l72Xky+Y9RXMyX7+lS4sIor722pjxplW3wwoXeP
         mbuuALFlV1LREbftKqnhEEj1MHTnxTJ+1JgK8URr0Oii4MmWMomqlCf6oReBHcOWk97Q
         DrKPDSoePYQ19QnyFq4YQ+F/lZkcr/om6xqqQbHQ3DPCsVRDi2yPJXhl3lVUac8c52Rv
         bcWR52oYmputHYyy/hMEyfA0sMcBAXH7/s8HzRh/wrHfdvcRPNN6addXVr+ISoV/KaYN
         xQ8g==
X-Forwarded-Encrypted: i=1; AJvYcCVAlKnfM4JCVD4KxQL6Fo4CIo/23m/8dYM2YP0ShSLjFcliUMJy893BghPUkCefNhonAuehGLZXq84=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxQP/tX8Q8ORXFVepkm5SXESHx4874o3uwKjHMbOfJGhYukaKUO
	bGNu26WaXkLdcixYJnHwH62hu7pfErAy7f259dPEjZ7SORO16uaq1A0jwu4nYFs=
X-Google-Smtp-Source: AGHT+IGFXKSHILTNi1sDC2l2GPFS5UjbMT5ufHXyt6rObGvwCcCkHRZ9XPaAUvijISaRWg24Vz5ecA==
X-Received: by 2002:a17:907:7fa5:b0:a86:820e:2ac6 with SMTP id a640c23a62f3a-a93c49087ffmr1843767666b.22.1727776943014;
        Tue, 01 Oct 2024 03:02:23 -0700 (PDT)
Message-ID: <e31a6eaa-2f19-479b-8e1f-ae7d7743d27f@citrix.com>
Date: Tue, 1 Oct 2024 11:02:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/pv: Rework guest_io_okay() to return X86EMUL_*
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20240930161837.1248144-2-andrew.cooper3@citrix.com>
 <76819790-abde-4b61-8dd7-68dd9db8cfd1@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <76819790-abde-4b61-8dd7-68dd9db8cfd1@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01/10/2024 8:11 am, Jan Beulich wrote:
> On 30.09.2024 18:18, Andrew Cooper wrote:
>> @@ -190,10 +192,12 @@ static bool guest_io_okay(unsigned int port, unsigned int bytes,
>>              toggle_guest_pt(v);
>>  
>>          if ( (x.mask & (((1 << bytes) - 1) << (port & 7))) == 0 )
>> -            return true;
>> +            return X86EMUL_OKAY;
>>      }
>>  
>> -    return false;
>> +    x86_emul_hw_exception(X86_EXC_GP, 0, ctxt);
> do_general_protection() has
>
>     /* Pass on GPF as is. */
>     pv_inject_hw_exception(X86_EXC_GP, regs->error_code);
>
> which may make a difference in case the insn changes under our feet.

It would make a difference if we chose to raise #GP[non-0].

But, see how the call to pv_emulate_privileged_op() is guarded on
error_code == 0.

Prior X86EMUL_UNHANDLEABLE can't ever have raised anything other than
#GP[0], (excusing cases of memory corruption in regs->error_code).

So, there is not a change in behaviour, even if the reason why is
less-than-obvious.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:02:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:02:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807935.1219686 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZiD-00037X-Fd; Tue, 01 Oct 2024 10:02:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807935.1219686; Tue, 01 Oct 2024 10:02: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 1svZiD-00037Q-D4; Tue, 01 Oct 2024 10:02:33 +0000
Received: by outflank-mailman (input) for mailman id 807935;
 Tue, 01 Oct 2024 10:02: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svZiC-0002lV-A0
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:02:32 +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 454b987c-7fdc-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:02:30 +0200 (CEST)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2fad0f66d49so24495731fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:02:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c882493f55sm5860178a12.91.2024.10.01.03.02.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 03:02:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 454b987c-7fdc-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727776950; x=1728381750; 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=tBIx8GPJJAtTCQFodTs58TUD4e2AjPcASpgsKDe1cLQ=;
        b=BMVwAQL7XUH5AsSDAZs+nbY6UoiIgNsbw/S4nh4Dx+2qKYeon8vaDSnVGRLZTgDzvV
         kaXgU5U8SzrV5HrcnmWZ25sGjcYVZtwpTZzUo9GCH1+KoI0z5JPLyPB57GSLoYG+PQeH
         +invP9WDR9FlaC8X3+4/x8B6KUertCvjQj2vFaN9m6V9dqtA31SuFbGe2pjQb4ansFuG
         oEST3UYQk5BjNA+C6q8SdSoA+M4zrK4ZV4WCN7i1VNOBJdlu1KnXFE2R4weYniCOMDS5
         Dtxlq8XcquG8/7EC4gstQc9yZSU3oo/1ZqnfiV6/B5mMUXaY31QTgS7YbKjMw4xdMciZ
         q23w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727776950; x=1728381750;
        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=tBIx8GPJJAtTCQFodTs58TUD4e2AjPcASpgsKDe1cLQ=;
        b=iObtKslAB5+uDgYUU9c1B1McZr7UlAgIg0oPRONtc4nhuM2j4hCko18GzBcNkAuH05
         YoASdNj72BqZ1y0YMU8x/aGi9mjuiywfMbgGaI5s0PHwaAtp2Q6ritNymB/61OHYRBZ/
         sqd5VWuBJck9dV1WcJETuG4PVnat5y0gpkt1yhR8DB68xHJjA+BR2rOzOVovM83ruS1m
         eVSBzBK/rneCclOg90ht1yThhoF22IftQPtksm6Gc+YQFpLL9TMYmJZRXLPWXb52SezD
         AQa34XvYbvBwh3LR64WPpCXtrviqvdded9sTHJ1+TIdn6SlJNJuIe8RjFcABw/QzLWr6
         +uMA==
X-Forwarded-Encrypted: i=1; AJvYcCWXHOfNUZdY7U3D/wxYPxN38tkeNZVkbEi+tJYnmCZQE/TdrA23hqmX7Jz3FpOcxZWvgmDZ0XHYAU0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxE6Hhso2bsGmrXQXMpn/kheQHNDJoh7UJ+B+gbNYnF/QGiNEzx
	XQcIUhprWV6DySCKFnXBx0MCiscm4HEal4ZKbIl0xUBdSh7B51qESQ352TU1oA==
X-Google-Smtp-Source: AGHT+IFskN06foou3y6MoShSmM9vm8SlD+9ZWBlHra4NZF7WJT/v1Y5qe1r32SnF+M2wlWcPTfCc1w==
X-Received: by 2002:a05:651c:19ac:b0:2fa:cc64:616c with SMTP id 38308e7fff4ca-2facc646480mr34017861fa.15.1727776949278;
        Tue, 01 Oct 2024 03:02:29 -0700 (PDT)
Message-ID: <a1b772bb-113b-4bb3-b58a-09bda98f5c2b@suse.com>
Date: Tue, 1 Oct 2024 12:02:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: prefer RDTSCP in rdtsc_ordered()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cae006a7-c1be-4608-a011-dda1fb4a0312@suse.com>
 <14ab2f50-e58c-4cb4-b976-4cb5ec14d908@citrix.com>
 <90f1dda1-b06e-40e6-be6b-ea99acba875f@suse.com>
 <07699749-f9b6-4d78-874c-ff61d76810dc@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: <07699749-f9b6-4d78-874c-ff61d76810dc@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01.10.2024 11:45, Andrew Cooper wrote:
> On 01/10/2024 9:12 am, Jan Beulich wrote:
>> On 30.09.2024 18:40, Andrew Cooper wrote:
>>> On 30/09/2024 4:08 pm, Jan Beulich wrote:
>>>> --- a/xen/arch/x86/include/asm/msr.h
>>>> +++ b/xen/arch/x86/include/asm/msr.h
>>>> @@ -108,18 +108,30 @@ static inline uint64_t rdtsc(void)
>>>>  
>>>>  static inline uint64_t rdtsc_ordered(void)
>>>>  {
>>>> -	/*
>>>> -	 * The RDTSC instruction is not ordered relative to memory access.
>>>> -	 * The Intel SDM and the AMD APM are both vague on this point, but
>>>> -	 * empirically an RDTSC instruction can be speculatively executed
>>>> -	 * before prior loads.  An RDTSC immediately after an appropriate
>>>> -	 * barrier appears to be ordered as a normal load, that is, it
>>>> -	 * provides the same ordering guarantees as reading from a global
>>>> -	 * memory location that some other imaginary CPU is updating
>>>> -	 * continuously with a time stamp.
>>>> -	 */
>>>> -	alternative("lfence", "mfence", X86_FEATURE_MFENCE_RDTSC);
>>>> -	return rdtsc();
>>>> +    uint64_t low, high, aux;
>>>> +
>>>> +    /*
>>>> +     * The RDTSC instruction is not ordered relative to memory access.
>>>> +     * The Intel SDM and the AMD APM are both vague on this point, but
>>>> +     * empirically an RDTSC instruction can be speculatively executed
>>>> +     * before prior loads.
>>> This part of the comment is stale now.  For RDTSC, AMD state:
>>>
>>> "This instruction is not serializing. Therefore, there is no guarantee
>>> that all instructions have completed at the time the time-stamp counter
>>> is read."
>>>
>>> and for RDTSCP:
>>>
>>> "Unlike the RDTSC instruction, RDTSCP forces all older instructions to
>>> retire before reading the time-stamp counter."
>>>
>>> i.e. it's dispatch serialising, given our new post-Spectre terminology.
>> I don't read that as truly "dispatch serializing";
> 
> That is precisely what dispatch serialising is and means.
> 
> Both LFENCE and RDTSCP wait at dispatch until they're the only
> instruction in the pipeline.  That is how they get the property of
> waiting for all older instructions to retire before executing.
> 
>> both Intel and AMD
>> leave open whether subsequent insns would also be affected, or whether
>> those could pass the RDTSCP.
> 
> Superscalar pipelines which can dispatch more than one uop per cycle can
> issue LFENCE/RDTSCP concurrently with younger instructions.
> 
> This is why LFENCE; JMP * was retracted as safe alternative to
> retpoline, and why the Intel docs call out explicitly that you need
> LFENCE following the RDTSC(P) if you want it to complete before
> subsequent instructions start.

Yet what you describe still only puts in place a relationship between
RDTSCP and what follows. What I was saying is that there's no guarantee
that insns following RDTSCP can't actually execute not only in parallel
with RDTSCP, but also in parallel with / ahead of earlier insns. Aiui
LFENCE makes this guarantee. IOW in

	ADD ...; LFENCE; SUB ...

the SUB is guaranteed to dispatch only after the ADD, whereas in

	ADD ...; RDTSCP; SUB ...

there doesn't appear to be such a guarantee; the only guarantee here is
for RDTSCP to dispatch after the ADD.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:03:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:03:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807944.1219698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZjB-0003wd-R2; Tue, 01 Oct 2024 10:03:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807944.1219698; Tue, 01 Oct 2024 10:03: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 1svZjB-0003wW-MX; Tue, 01 Oct 2024 10:03:33 +0000
Received: by outflank-mailman (input) for mailman id 807944;
 Tue, 01 Oct 2024 10:03: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 1svZjA-0003wK-Po
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:03: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 1svZjA-000822-HQ; Tue, 01 Oct 2024 10:03:32 +0000
Received: from [15.248.2.236] (helo=[10.24.67.28])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1svZjA-0000Tc-Bu; Tue, 01 Oct 2024 10:03: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=KzG84CFHhf8ImG3UXuRJ3MleZT8ENtynsbFHdWvpbm0=; b=X1LUMknm7KChah647BHjB94muh
	qkb+rshGRO8ok6vRK7/UHZR9S6XE1sndNG2vvCrWEm6KGGL7mWdze9DLAm7pPf43c1vLXn5U033GT
	NJIcYhQL1kq0xt5FVNBS8eD/rBMr49MXl7LdOSFnji1nu0kWiqAC8u9NS0cJxlvszDOE=;
Message-ID: <ed4c51f6-9412-4698-9408-feb88e2cd5da@xen.org>
Date: Tue, 1 Oct 2024 11:03:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 7/8] SUPPORT.md: Describe SCMI-SMC layer feature
Content-Language: en-GB
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-8-andrei.cherechesu@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240930114715.642978-8-andrei.cherechesu@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
> 
> Describe the layer which enables SCMI over SMC calls forwarding
> to EL3 FW if issued by Dom0. 

s/Dom0/Hardware domain/ and everywhere else below.

> If the SCMI firmware node is not
> found in Dom0's DT during initialization, it fails silently
> as it's not mandatory.

You are looking for the node in the host's DT.

> 
> The SCMI SMCs trapping at EL2 now lets Dom0 perform SCMI ops for
> interacting with system-level resources almost as if it would be
> running natively.
> 
> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
> ---
>   SUPPORT.md | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/SUPPORT.md b/SUPPORT.md
> index 23dd7e6424..d8ffddfc44 100644
> --- a/SUPPORT.md
> +++ b/SUPPORT.md
> @@ -927,6 +927,14 @@ Add/Remove device tree nodes using a device tree overlay binary (.dtbo).
>   
>       Status: Tech Preview
>   
> +### Arm: SCMI over SMC calls forwarding to EL3 Firmware
> +
> +Enable SCMI calls using SMC as doorbell mechanism and Shared Memory for
> +transport ("arm,scmi-smc" compatible only) to reach EL3 Firmware if issued
> +by Dom0. Some platforms use SCMI for access to system-level resources.
> +
> +    Status: Supported

Bertrand, can you confirm this should be ok to support it (includingn 
security support)?

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807948.1219707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZkJ-0004Vf-25; Tue, 01 Oct 2024 10:04:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807948.1219707; Tue, 01 Oct 2024 10: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 1svZkI-0004VY-VP; Tue, 01 Oct 2024 10:04:42 +0000
Received: by outflank-mailman (input) for mailman id 807948;
 Tue, 01 Oct 2024 10:04: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svZkH-0004VS-FO
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:04:41 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 92436e81-7fdc-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:04:39 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a8a6d1766a7so774413566b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:04:39 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27ed053sm685985066b.93.2024.10.01.03.04.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 03:04:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 92436e81-7fdc-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727777079; x=1728381879; 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=RZCXAbrHKz7DVVCCaFP9YEWhq0hbpxKqJljgHoXZMMk=;
        b=S4zoYsRTOLOuQirabxdu14Jsa65c4WVKKkqK3eoTB/r8KmUrvRZa9ivwzOsbtE+Heg
         D/EoivjoLn+PmqGDIcg3WwWyE6Tl9sUCWG5EpSoN/zGwWJ7LO+Zov9DsGjSthf51XTMH
         3umA27ybvpgBQVlE6xUuzeX7+cmrawVwbGOTrM48y5gtbxhDeqd19QrgqTaMjqY6b6ZA
         YXzODWqibMCobOK+ABVBemDafUwwveq6DXryG8r1Xo1UkuPFkY0oQNT6DW6cQlq5SHAB
         qgfgG4ThNJ0T7A2SK3PkBR3sJpmm8WacNkuQ5RdQTLlD9VqrQoU0xy7fMsaHfBbEQb+N
         IdVg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727777079; x=1728381879;
        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=RZCXAbrHKz7DVVCCaFP9YEWhq0hbpxKqJljgHoXZMMk=;
        b=aLpauGZka6TtvNM4GiJ3K/F1nnkCDuOKGMOiUM1/Tfup/2Z200P+h25MHPdH2CLVmi
         5y1t+fWbNRvdA2GGCPyBvhAsWbHFWTEXOe2uw7oPJz9Ilu0IOex111gKLRwkGmfplVtH
         LXpCg0Y0rmluNA2HRvAZH7ftSTNWMXJxVFZaNW1C+y6R7MIXFDzGi38fK+kI761xajjb
         Ri6io14JDOmWjsnxdWeq/pbu/j4zWAN3DPDANLcFKcIo22y3H5hkWFeJ+rOiRB027b2Q
         jI/O2jmcFzWPLXEhTQQiyhRGyjn/qDqF7sZORCSLLqQFxQ7XVAGZTNVSV+MJBp4/ilnp
         3I9g==
X-Forwarded-Encrypted: i=1; AJvYcCVNTs+c3vrdA9lwnHokOPsZKbP4Y4q3K3dOEudCS2ZuOKDq2akLDMBbvhMicNhQGQSZ7pVkMTC/AdA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz4PqEW31I0w/aGDksz490YH9TIS9lsg42xjoHwRFK4+GnrdrFK
	wRpQw74Bhp73tQ8x50LvOaPZnJdQJGaiO87UEDKvljVBT8FcXRcz3vb+LzjjEA==
X-Google-Smtp-Source: AGHT+IFPPhcqAh/86G2qQsEoeh4IgMLieY9t/yfm20AEhodZej+KjfAssVGvY3uI+OB1+7fXAiIrjg==
X-Received: by 2002:a17:907:9344:b0:a8d:55ce:fb7f with SMTP id a640c23a62f3a-a93c4c40561mr1521495666b.62.1727777079046;
        Tue, 01 Oct 2024 03:04:39 -0700 (PDT)
Message-ID: <2f1bb7ef-01f4-443e-8be5-5459fb6e618b@suse.com>
Date: Tue, 1 Oct 2024 12:04:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/pv: Rework guest_io_okay() to return X86EMUL_*
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20240930161837.1248144-2-andrew.cooper3@citrix.com>
 <76819790-abde-4b61-8dd7-68dd9db8cfd1@suse.com>
 <e31a6eaa-2f19-479b-8e1f-ae7d7743d27f@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: <e31a6eaa-2f19-479b-8e1f-ae7d7743d27f@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 12:02, Andrew Cooper wrote:
> On 01/10/2024 8:11 am, Jan Beulich wrote:
>> On 30.09.2024 18:18, Andrew Cooper wrote:
>>> @@ -190,10 +192,12 @@ static bool guest_io_okay(unsigned int port, unsigned int bytes,
>>>              toggle_guest_pt(v);
>>>  
>>>          if ( (x.mask & (((1 << bytes) - 1) << (port & 7))) == 0 )
>>> -            return true;
>>> +            return X86EMUL_OKAY;
>>>      }
>>>  
>>> -    return false;
>>> +    x86_emul_hw_exception(X86_EXC_GP, 0, ctxt);
>> do_general_protection() has
>>
>>     /* Pass on GPF as is. */
>>     pv_inject_hw_exception(X86_EXC_GP, regs->error_code);
>>
>> which may make a difference in case the insn changes under our feet.
> 
> It would make a difference if we chose to raise #GP[non-0].
> 
> But, see how the call to pv_emulate_privileged_op() is guarded on
> error_code == 0.

Oh, good point - I overlooked that.

> Prior X86EMUL_UNHANDLEABLE can't ever have raised anything other than
> #GP[0], (excusing cases of memory corruption in regs->error_code).
> 
> So, there is not a change in behaviour, even if the reason why is
> less-than-obvious.

I agree then.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:07:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:07:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807957.1219716 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZmx-0005Rh-ER; Tue, 01 Oct 2024 10:07:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807957.1219716; Tue, 01 Oct 2024 10: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 1svZmx-0005Ra-BW; Tue, 01 Oct 2024 10:07:27 +0000
Received: by outflank-mailman (input) for mailman id 807957;
 Tue, 01 Oct 2024 10:07: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svZmv-0005QH-Oj
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:07:25 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f43ceb76-7fdc-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:07:24 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a7a843bef98so772197966b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:07:24 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2947e49sm683550366b.135.2024.10.01.03.07.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 03:07:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f43ceb76-7fdc-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727777243; x=1728382043; 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=CEMFbpLXOkPdN8935sPXKcLmYx/DtVHcb9gVW2NXeuQ=;
        b=Sr9o39M1TFNCPUI8YP7VGRljmqq81c/Tk7PK+xAskPhsflCrmfe9cpE2d9GDKjf5bh
         YoUfkU7XpUHR8/Md9VnZjXqgQ2hJf6KI/jlYQywzwAH7YgK8EmeojCFlQKRkzTyZPJxd
         NJR1Gl5wHIs/X7SkiY+c/IZbbm5nqLuUWl7p4fgqL2CjNPrq5DRu4I1YkbbTndKW0shV
         +1gGRGqqu2dyab5KN5iEi0oJ6RiZFKlQaQEei5IPWEqVuTr67WPoLks0/HkqnG9kGvCD
         szbT/SEA7zBFickv4VKmJihOSgBymbfuN3YEsNfLVkw7Naa3YDV9dTWmeeqkA2O8xf0H
         lcXw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727777243; x=1728382043;
        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=CEMFbpLXOkPdN8935sPXKcLmYx/DtVHcb9gVW2NXeuQ=;
        b=Nnv/jBZWtexeFhBaItEashbGd+O6SEUhdK/mh4yOvc1uvnwskfRwvttBm6kNT3sbiw
         6YfAKekIjQwo6gbMNMcCqVnK11VEuJxCfAN/+4pppCgUushejEDFUWCZzJ90Ff6OjV7E
         Nkecn0XubM8VYXFSi8V2W/CwZXHVH2/Kn5hDMafSyMnyqfZWz6Kk6egUCNV6ggxAAo2i
         fR50xu1C8U4GSe5wQolJckv/J0V0FjOrsIIrwCwQEdhaJ0X7qGIeIbU7o/FbOhiVXrkM
         3wmjz13MUqpK403kyGkxckuc7WhxkqIlW2Xw1TABxYBaoanBKUZbiErl03W93U1JgeJV
         EUiQ==
X-Forwarded-Encrypted: i=1; AJvYcCWO4z88dudXycPYwY9nqPA6t8vAcsfaH74qMzOXOyvkFXbyb7+xSgb+PeedLJZv2W69fZtrUmSy34A=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyuoun95RYv7xV6PxoUf8uBCecmFu+8gjSvj2vDyDFXkdLain1+
	wS9ryL/FH+QEgV2C8rXR57s3hK4VSly7QQYf9USvz5v0xQChBuMt0ay7bl7xMg==
X-Google-Smtp-Source: AGHT+IFVwxDjlK0o4yqAL/lbs+m9ihgjS659KCs6LdXUjJWDYOVbz0D5Ng/c8NH0aKPu3kczavdIKQ==
X-Received: by 2002:a17:906:7946:b0:a8e:a578:29d8 with SMTP id a640c23a62f3a-a93c4acab60mr1486764066b.64.1727777243466;
        Tue, 01 Oct 2024 03:07:23 -0700 (PDT)
Message-ID: <e1c8d10b-7926-4f62-8421-ad2ba55573c7@suse.com>
Date: Tue, 1 Oct 2024 12:07:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 2/3] x86/boot: Rewrite EFI/MBI2 code partly in C
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
References: <20240926092109.475271-1-frediano.ziglio@cloud.com>
 <20240926092109.475271-3-frediano.ziglio@cloud.com>
 <e17b2afc-3647-4472-9d37-1510b40ff23d@suse.com>
 <CACHz=ZhtYik3p4z2mc1PYG9M68Mwap68_DdoE7MWksW0VW+BTw@mail.gmail.com>
 <b2a8b468-5745-4f58-bb86-721ea055c1b1@suse.com>
 <CACHz=ZhhpU2S1Nt2EW-LL=r8fZSbCLMhFMWD2SWvPP094gc1rQ@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: <CACHz=ZhhpU2S1Nt2EW-LL=r8fZSbCLMhFMWD2SWvPP094gc1rQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 11:48, Frediano Ziglio wrote:
> One last though. Do you think I should now rename
> xen/arch/x86/efi/parse-mbi2.c file ?

I wouldn't mind if it was named just mbi2.c, but the ultimate decision is
with the EFI maintainers.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:10:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:10:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807962.1219727 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svZpy-0007YA-TF; Tue, 01 Oct 2024 10:10:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807962.1219727; Tue, 01 Oct 2024 10: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 1svZpy-0007Y3-Pv; Tue, 01 Oct 2024 10:10:34 +0000
Received: by outflank-mailman (input) for mailman id 807962;
 Tue, 01 Oct 2024 10: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svZpx-0007Xx-15
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:10:33 +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 6414bf63-7fdd-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 12:10:31 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a90188ae58eso679089366b.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:10:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297c2d2sm681559266b.183.2024.10.01.03.10.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 03:10:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6414bf63-7fdd-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727777431; x=1728382231; 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=atOslSW3AtxX2me6x5sBuob6Y4+ZjY9ICKjrMew4/uw=;
        b=DUDxzIJXBrdZjTUCypgv29yEzM2yyEU26fQE97pp4JyYqwHYFN2KtFHYveFl5Vj8AR
         nWSFA+CSDUYGdmV8V2gEEOANaff90YYIC1vRdIFzYVFliyLvGClJ4RsMIuY/1quahQiT
         ykmCBOqYC6lQJhrK3acgp+z8vbwzK1mtn3L8yqncBc8lyakQDBchPtzaWbMrBOoru0ZO
         TXfak9jhmSjJjDf2K4wirCiw9ROLxidbPPMuA6w4sdvywcWtp7H6GmAoVAQSiyCSJ0os
         6zWebRReNS3pF4PdA9GPPYiX/FNWw9bxVA5snUcXMvsEG/bbARbWTyUaL9YICr+GEiM7
         4PYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727777431; x=1728382231;
        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=atOslSW3AtxX2me6x5sBuob6Y4+ZjY9ICKjrMew4/uw=;
        b=dV65iOhlKvR5f06tRrIt4VBwPRcfhNSyTseT6cP3fRy1AGIVsSnE1uccB3sfRaIGMG
         FdB8Y1nNUjZJLvFtghzT8j+FsU5MAhIf5TXZfYQai0l0lpQdcDFiy/7FHSr1E74KW2mz
         pvawwpVgiarEeac7WoLGLGiDjA4E/Ew+j35i2Vssh9orC8qaQn3YWKWrDYXntTuhmGS8
         OXDzqb/WLAwh4pkw3OGz927wabVrF8Y8ikxkm1/EZ3B9WX7ubzxtTR11fbbHjW5E2Hfw
         tcsVhbC2UHk/lpWbmltNWhvTrJ+9UGWNvdzZmadqx0BNKxKR0DeQ0nta+1CkEX9UghLp
         gFEQ==
X-Forwarded-Encrypted: i=1; AJvYcCXZh9iAu9SwP+FEqaJxR/YzCkWk3M0RIZIkT/2NH5ZU06NuQaunY6fiNHA1UvUQpk6+yW2qUchA7C4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyDhfEEUxmHnJKfrFRUT25E6HLdPdChAIZfL9WHrGijZZUqzg9B
	jGSfKKLU6Q2Oh9fOWTFeGoSWX7OOvVoWqsaRFnvW+6lNDFObQGyfWo2CW1I/Zw==
X-Google-Smtp-Source: AGHT+IGtKAJQiZOtQl7EHpRDFj7csdz0MZxIUW8EKHW1OWdg5WUKZ/2zKwNyTqjXt4rYMbepLy4FEQ==
X-Received: by 2002:a17:907:7283:b0:a8d:2faf:d33d with SMTP id a640c23a62f3a-a93c48f1d0dmr1356728166b.9.1727777431138;
        Tue, 01 Oct 2024 03:10:31 -0700 (PDT)
Message-ID: <7bb25b6d-3905-4d5a-a8df-6d258ce7b001@suse.com>
Date: Tue, 1 Oct 2024 12:10:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: prefer RDTSCP in rdtsc_ordered()
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>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cae006a7-c1be-4608-a011-dda1fb4a0312@suse.com>
 <14ab2f50-e58c-4cb4-b976-4cb5ec14d908@citrix.com>
 <90f1dda1-b06e-40e6-be6b-ea99acba875f@suse.com>
 <07699749-f9b6-4d78-874c-ff61d76810dc@citrix.com>
 <a1b772bb-113b-4bb3-b58a-09bda98f5c2b@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: <a1b772bb-113b-4bb3-b58a-09bda98f5c2b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01.10.2024 12:02, Jan Beulich wrote:
> On 01.10.2024 11:45, Andrew Cooper wrote:
>> On 01/10/2024 9:12 am, Jan Beulich wrote:
>>> On 30.09.2024 18:40, Andrew Cooper wrote:
>>>> On 30/09/2024 4:08 pm, Jan Beulich wrote:
>>>>> --- a/xen/arch/x86/include/asm/msr.h
>>>>> +++ b/xen/arch/x86/include/asm/msr.h
>>>>> @@ -108,18 +108,30 @@ static inline uint64_t rdtsc(void)
>>>>>  
>>>>>  static inline uint64_t rdtsc_ordered(void)
>>>>>  {
>>>>> -	/*
>>>>> -	 * The RDTSC instruction is not ordered relative to memory access.
>>>>> -	 * The Intel SDM and the AMD APM are both vague on this point, but
>>>>> -	 * empirically an RDTSC instruction can be speculatively executed
>>>>> -	 * before prior loads.  An RDTSC immediately after an appropriate
>>>>> -	 * barrier appears to be ordered as a normal load, that is, it
>>>>> -	 * provides the same ordering guarantees as reading from a global
>>>>> -	 * memory location that some other imaginary CPU is updating
>>>>> -	 * continuously with a time stamp.
>>>>> -	 */
>>>>> -	alternative("lfence", "mfence", X86_FEATURE_MFENCE_RDTSC);
>>>>> -	return rdtsc();
>>>>> +    uint64_t low, high, aux;
>>>>> +
>>>>> +    /*
>>>>> +     * The RDTSC instruction is not ordered relative to memory access.
>>>>> +     * The Intel SDM and the AMD APM are both vague on this point, but
>>>>> +     * empirically an RDTSC instruction can be speculatively executed
>>>>> +     * before prior loads.
>>>> This part of the comment is stale now.  For RDTSC, AMD state:
>>>>
>>>> "This instruction is not serializing. Therefore, there is no guarantee
>>>> that all instructions have completed at the time the time-stamp counter
>>>> is read."
>>>>
>>>> and for RDTSCP:
>>>>
>>>> "Unlike the RDTSC instruction, RDTSCP forces all older instructions to
>>>> retire before reading the time-stamp counter."
>>>>
>>>> i.e. it's dispatch serialising, given our new post-Spectre terminology.
>>> I don't read that as truly "dispatch serializing";
>>
>> That is precisely what dispatch serialising is and means.
>>
>> Both LFENCE and RDTSCP wait at dispatch until they're the only
>> instruction in the pipeline.  That is how they get the property of
>> waiting for all older instructions to retire before executing.
>>
>>> both Intel and AMD
>>> leave open whether subsequent insns would also be affected, or whether
>>> those could pass the RDTSCP.
>>
>> Superscalar pipelines which can dispatch more than one uop per cycle can
>> issue LFENCE/RDTSCP concurrently with younger instructions.
>>
>> This is why LFENCE; JMP * was retracted as safe alternative to
>> retpoline, and why the Intel docs call out explicitly that you need
>> LFENCE following the RDTSC(P) if you want it to complete before
>> subsequent instructions start.
> 
> Yet what you describe still only puts in place a relationship between
> RDTSCP and what follows. What I was saying is that there's no guarantee
> that insns following RDTSCP can't actually execute not only in parallel
> with RDTSCP, but also in parallel with / ahead of earlier insns. Aiui
> LFENCE makes this guarantee. IOW in
> 
> 	ADD ...; LFENCE; SUB ...
> 
> the SUB is guaranteed to dispatch only after the ADD, whereas in
> 
> 	ADD ...; RDTSCP; SUB ...
> 
> there doesn't appear to be such a guarantee; the only guarantee here is
> for RDTSCP to dispatch after the ADD.

And btw, if there wasn't this difference, why would RDTSCP be any better
than LFENCE; RDTSC?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:22:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:22:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807973.1219754 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sva1u-00021N-J6; Tue, 01 Oct 2024 10:22:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807973.1219754; Tue, 01 Oct 2024 10:22: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 1sva1u-00020W-C6; Tue, 01 Oct 2024 10:22:54 +0000
Received: by outflank-mailman (input) for mailman id 807973;
 Tue, 01 Oct 2024 10:22: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=i7H1=Q5=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sva1s-0001jj-MN
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:22:52 +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 1cb7d0aa-7fdf-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:22:50 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a90188ae58eso680523466b.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:22:50 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bceesm681772966b.187.2024.10.01.03.22.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 03:22:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1cb7d0aa-7fdf-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727778170; x=1728382970; 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=wTCCxi5lp62S3XySu5dYlMTj/vcJapNsffY+wfD9Y/0=;
        b=dKoVZNozfr9ttB5h8Wk5ULQdyOFEUIEG9FnYIothl75Sljl2e7hPc+ybOL7sXjYovh
         jE1vdIY7rEDaaxKnpRVO8wcn5QOCPQ5AdoC9ajHlRCqerYuS43EumBiIXtzdrSMddxeO
         kKClzYoMPtSU1Pu/goKcDDMEb7IdRcKb1wnrY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727778170; x=1728382970;
        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=wTCCxi5lp62S3XySu5dYlMTj/vcJapNsffY+wfD9Y/0=;
        b=my+dLFpi5NvSbWTCJYK5foCd0+3wZJMMAhkMgsslcpFD/lNsj3+LRf66dCZKKUlRc5
         Jb8/RR6QJ00I+GkRubThSUNtXFVT45NDT6U01kP7rfgleTURjYFPZ1UJUsGV5CP/NGmO
         r+wqHOY208RxDpJpHbwTTr0sGl9YYTnqED759ksyA+oIjJE0lgwTBJgjyOi8sG6FmOYC
         P5IjA7Z5WOA9x7iZdl2U6hW8wDESj34TRA4eqYfwN/gMUxQ3qjI5llxY5QlZ8fHNZdFf
         SKCztIeG45/zA7xb1PTCZxYMRRwdgx8EMEwm6zL3dEQaelbs67Dj2qvH4QSTqj83t3WS
         ev3g==
X-Gm-Message-State: AOJu0YxzZ7ZTSr76m0LPSvYf0iNi55nHiAPRXxThPan5EQueftrLPqZ+
	hkvu64r/Ku2n82CO20iUzoYSy5kkoW+jfZv3eg7oONEMb+B/2Umky4DAvOU6diTcmF+uM+Ozebz
	w
X-Google-Smtp-Source: AGHT+IEJzjomJ7TXIa8pMgT5wn4fX+8bCCU+rjdDRd03cYaNUD2VVXqiNC2wZYvke8YoPlTPNq0AVA==
X-Received: by 2002:a17:906:dac3:b0:a8a:5bfb:7d1a with SMTP id a640c23a62f3a-a93c4946e47mr1516302666b.35.1727778169915;
        Tue, 01 Oct 2024 03:22:49 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v7 1/2] x86/boot: Rewrite EFI/MBI2 code partly in C
Date: Tue,  1 Oct 2024 11:22:38 +0100
Message-Id: <20241001102239.2609631-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No need to have it coded in assembly.
Declare efi_multiboot2 in a new header to reuse between implementations
and caller.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- update some comments;
- explain why %ebx is saved before calling efi_parse_mbi2;
- move lea before test instruction;
- removed asmlinkage from efi_multiboot2 and add to efi_parse_mbi2;
- fix line length;
- update an error message specifying "Multiboot2" instead of "Multiboot";
- use obj-bin-X instead of obj-X in Makefile;
- avoid restoring %eax (MBI magic).

Changes since v3:
- rename new function to efi_multiboot2_prelude;
- declare efi_multiboot2 in a separate header.

Changes since v4:
- fix some style and space;
- fix MISRA requirement.

Changes since v6:
- include new header to get common declaration;
- add a comment in assembly code;
- rename parse-mbi2.c to mbi2.c.
---
 xen/arch/x86/boot/head.S       | 146 +++++++--------------------------
 xen/arch/x86/efi/Makefile      |   1 +
 xen/arch/x86/efi/efi-boot.h    |   7 +-
 xen/arch/x86/efi/mbi2.c        |  63 ++++++++++++++
 xen/arch/x86/efi/stub.c        |  10 +--
 xen/arch/x86/include/asm/efi.h |  18 ++++
 6 files changed, 120 insertions(+), 125 deletions(-)
 create mode 100644 xen/arch/x86/efi/mbi2.c
 create mode 100644 xen/arch/x86/include/asm/efi.h

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0901ee400..987345fa34 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -121,8 +121,6 @@ multiboot2_header:
 .Lbad_cpu_msg: .asciz "ERR: Not a 64-bit CPU!"
 .Lbad_ldr_msg: .asciz "ERR: Not a Multiboot bootloader!"
 .Lbad_ldr_nbs: .asciz "ERR: Bootloader shutdown EFI x64 boot services!"
-.Lbad_ldr_nst: .asciz "ERR: EFI SystemTable is not provided by bootloader!"
-.Lbad_ldr_nih: .asciz "ERR: EFI ImageHandle is not provided by bootloader!"
 .Lbad_efi_msg: .asciz "ERR: EFI IA-32 platforms are not supported!"
 .Lbag_alg_msg: .asciz "ERR: Xen must be loaded at a 2Mb boundary!"
 .Lno_nx_msg:   .asciz "ERR: Not an NX-capable CPU!"
@@ -161,17 +159,6 @@ early_error: /* Here to improve the disassembly. */
         mov     $sym_offs(.Lno_nx_msg), %ecx
         jmp     .Lget_vtb
 #endif
-.Lmb2_no_st:
-        /*
-         * Here we are on EFI platform. vga_text_buffer was zapped earlier
-         * because there is pretty good chance that VGA is unavailable.
-         */
-        mov     $sym_offs(.Lbad_ldr_nst), %ecx
-        jmp     .Lget_vtb
-.Lmb2_no_ih:
-        /* Ditto. */
-        mov     $sym_offs(.Lbad_ldr_nih), %ecx
-        jmp     .Lget_vtb
 .Lmb2_no_bs:
         /*
          * Ditto. Additionally, here there is a chance that Xen was started
@@ -189,6 +176,10 @@ early_error: /* Here to improve the disassembly. */
         mov     $sym_offs(.Lbad_efi_msg), %ecx
         xor     %edi,%edi                       # No VGA text buffer
         jmp     .Lprint_err
+.Ldirect_error:
+        mov     sym_esi(vga_text_buffer), %edi
+        mov     %eax, %esi
+        jmp     1f
 .Lget_vtb:
         mov     sym_esi(vga_text_buffer), %edi
 .Lprint_err:
@@ -235,53 +226,49 @@ __efi64_mb2_start:
 
         /*
          * Align the stack as UEFI spec requires. Keep it aligned
-         * before efi_multiboot2() call by pushing/popping even
+         * before efi_multiboot2_prelude() call by pushing/popping even
          * numbers of items on it.
          */
         and     $~15, %rsp
 
+        /* Save magic number, we need it later but we need to use %eax. */
+        mov     %eax, %edx
+
         /*
          * Initialize BSS (no nasty surprises!).
          * It must be done earlier than in BIOS case
-         * because efi_multiboot2() touches it.
+         * because efi_multiboot2_prelude() touches it.
          */
-        mov     %eax, %edx
         lea     __bss_start(%rip), %edi
         lea     __bss_end(%rip), %ecx
         sub     %edi, %ecx
         shr     $3, %ecx
         xor     %eax, %eax
         rep stosq
-        mov     %edx, %eax
-
-        /* Check for Multiboot2 bootloader. */
-        cmp     $MULTIBOOT2_BOOTLOADER_MAGIC,%eax
-        je      .Lefi_multiboot2_proto
-
-        /* Jump to .Lnot_multiboot after switching CPU to x86_32 mode. */
-        lea     .Lnot_multiboot(%rip), %r15
-        jmp     x86_32_switch
 
-.Lefi_multiboot2_proto:
-        /* Zero EFI SystemTable, EFI ImageHandle addresses and cmdline. */
-        xor     %esi,%esi
-        xor     %edi,%edi
-        xor     %edx,%edx
-
-        /* Skip Multiboot2 information fixed part. */
-        lea     (MB2_fixed_sizeof+MULTIBOOT2_TAG_ALIGN-1)(%rbx),%ecx
-        and     $~(MULTIBOOT2_TAG_ALIGN-1),%ecx
-
-.Lefi_mb2_tsize:
-        /* Check Multiboot2 information total size. */
-        mov     %ecx,%r8d
-        sub     %ebx,%r8d
-        cmp     %r8d,MB2_fixed_total_size(%rbx)
-        jbe     .Lrun_bs
+        /*
+         * Spill MB2 magic.
+         * Spill the pointer too, to keep the stack aligned.
+         */
+        push    %rdx
+        push    %rbx
 
-        /* Are EFI boot services available? */
-        cmpl    $MULTIBOOT2_TAG_TYPE_EFI_BS,MB2_tag_type(%rcx)
-        jne     .Lefi_mb2_st
+        /*
+         * efi_multiboot2_prelude() is called according to System V AMD64 ABI:
+         *   - IN:  %edi - Multiboot2 magic,
+         *          %rsi - Multiboot2 pointer.
+         *   - OUT: %rax - error string.
+         */
+        mov     %edx, %edi
+        mov     %rbx, %rsi
+        call    efi_multiboot2_prelude
+        lea     .Ldirect_error(%rip), %r15
+        test    %rax, %rax
+        jnz     x86_32_switch
+
+        /* Restore Multiboot2 pointer and magic. */
+        pop     %rbx
+        pop     %rax
 
         /* We are on EFI platform and EFI boot services are available. */
         incb    efi_platform(%rip)
@@ -291,77 +278,6 @@ __efi64_mb2_start:
          * be run on EFI platforms.
          */
         incb    skip_realmode(%rip)
-        jmp     .Lefi_mb2_next_tag
-
-.Lefi_mb2_st:
-        /* Get EFI SystemTable address from Multiboot2 information. */
-        cmpl    $MULTIBOOT2_TAG_TYPE_EFI64,MB2_tag_type(%rcx)
-        cmove   MB2_efi64_st(%rcx),%rsi
-        je      .Lefi_mb2_next_tag
-
-        /* Get EFI ImageHandle address from Multiboot2 information. */
-        cmpl    $MULTIBOOT2_TAG_TYPE_EFI64_IH,MB2_tag_type(%rcx)
-        cmove   MB2_efi64_ih(%rcx),%rdi
-        je      .Lefi_mb2_next_tag
-
-        /* Get command line from Multiboot2 information. */
-        cmpl    $MULTIBOOT2_TAG_TYPE_CMDLINE, MB2_tag_type(%rcx)
-        jne     .Lno_cmdline
-        lea     MB2_tag_string(%rcx), %rdx
-        jmp     .Lefi_mb2_next_tag
-.Lno_cmdline:
-
-        /* Is it the end of Multiboot2 information? */
-        cmpl    $MULTIBOOT2_TAG_TYPE_END,MB2_tag_type(%rcx)
-        je      .Lrun_bs
-
-.Lefi_mb2_next_tag:
-        /* Go to next Multiboot2 information tag. */
-        add     MB2_tag_size(%rcx),%ecx
-        add     $(MULTIBOOT2_TAG_ALIGN-1),%ecx
-        and     $~(MULTIBOOT2_TAG_ALIGN-1),%ecx
-        jmp     .Lefi_mb2_tsize
-
-.Lrun_bs:
-        /* Are EFI boot services available? */
-        cmpb    $0,efi_platform(%rip)
-
-        /* Jump to .Lmb2_no_bs after switching CPU to x86_32 mode. */
-        lea     .Lmb2_no_bs(%rip),%r15
-        jz      x86_32_switch
-
-        /* Is EFI SystemTable address provided by boot loader? */
-        test    %rsi,%rsi
-
-        /* Jump to .Lmb2_no_st after switching CPU to x86_32 mode. */
-        lea     .Lmb2_no_st(%rip),%r15
-        jz      x86_32_switch
-
-        /* Is EFI ImageHandle address provided by boot loader? */
-        test    %rdi,%rdi
-
-        /* Jump to .Lmb2_no_ih after switching CPU to x86_32 mode. */
-        lea     .Lmb2_no_ih(%rip),%r15
-        jz      x86_32_switch
-
-        /* Save Multiboot2 magic on the stack. */
-        push    %rax
-
-        /* Save EFI ImageHandle on the stack. */
-        push    %rdi
-
-        /*
-         * efi_multiboot2() is called according to System V AMD64 ABI:
-         *   - IN:  %rdi - EFI ImageHandle, %rsi - EFI SystemTable,
-         *          %rdx - MB2 cmdline
-         */
-        call    efi_multiboot2
-
-        /* Just pop an item from the stack. */
-        pop     %rax
-
-        /* Restore Multiboot2 magic. */
-        pop     %rax
 
         /* Jump to trampoline_setup after switching CPU to x86_32 mode. */
         lea     trampoline_setup(%rip),%r15
diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 24dfecfad1..7e2b5c07de 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -14,5 +14,6 @@ $(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary := $(cflags-stack-bounda
 obj-y := common-stub.o stub.o
 obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))
 obj-bin-$(XEN_BUILD_EFI) := $(filter %.init.o,$(EFIOBJ-y))
+obj-bin-y += mbi2.o
 extra-$(XEN_BUILD_EFI) += buildid.o relocs-dummy.o
 nocov-$(XEN_BUILD_EFI) += stub.o
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 7aa55e7aaf..94f3443364 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -10,6 +10,7 @@
 #include <asm/msr.h>
 #include <asm/setup.h>
 #include <asm/trampoline.h>
+#include <asm/efi.h>
 
 static struct file __initdata ucode;
 static multiboot_info_t __initdata mbi = {
@@ -816,9 +817,9 @@ static const char *__init get_option(const char *cmd, const char *opt)
     return o;
 }
 
-void asmlinkage __init efi_multiboot2(EFI_HANDLE ImageHandle,
-                                      EFI_SYSTEM_TABLE *SystemTable,
-                                      const char *cmdline)
+void __init efi_multiboot2(EFI_HANDLE ImageHandle,
+                           EFI_SYSTEM_TABLE *SystemTable,
+                           const char *cmdline)
 {
     EFI_GRAPHICS_OUTPUT_PROTOCOL *gop;
     EFI_HANDLE gop_handle;
diff --git a/xen/arch/x86/efi/mbi2.c b/xen/arch/x86/efi/mbi2.c
new file mode 100644
index 0000000000..55a1777483
--- /dev/null
+++ b/xen/arch/x86/efi/mbi2.c
@@ -0,0 +1,63 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/efi.h>
+#include <xen/init.h>
+#include <xen/multiboot2.h>
+#include <asm/asm_defns.h>
+#include <asm/efi.h>
+
+const char * asmlinkage __init
+efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
+{
+    const multiboot2_tag_t *tag;
+    EFI_HANDLE ImageHandle = NULL;
+    EFI_SYSTEM_TABLE *SystemTable = NULL;
+    const char *cmdline = NULL;
+    bool have_bs = false;
+
+    if ( magic != MULTIBOOT2_BOOTLOADER_MAGIC )
+        return "ERR: Not a Multiboot2 bootloader!";
+
+    /* Skip Multiboot2 information fixed part. */
+    tag = _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN));
+
+    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
+            tag->type != MULTIBOOT2_TAG_TYPE_END;
+          tag = _p(ROUNDUP((unsigned long)tag + tag->size,
+                   MULTIBOOT2_TAG_ALIGN)) )
+    {
+        switch ( tag->type )
+        {
+        case MULTIBOOT2_TAG_TYPE_EFI_BS:
+            have_bs = true;
+            break;
+
+        case MULTIBOOT2_TAG_TYPE_EFI64:
+            SystemTable = _p(((const multiboot2_tag_efi64_t *)tag)->pointer);
+            break;
+
+        case MULTIBOOT2_TAG_TYPE_EFI64_IH:
+            ImageHandle = _p(((const multiboot2_tag_efi64_ih_t *)tag)->pointer);
+            break;
+
+        case MULTIBOOT2_TAG_TYPE_CMDLINE:
+            cmdline = ((const multiboot2_tag_string_t *)tag)->string;
+            break;
+
+        default:
+            /* Satisfy MISRA requirement. */
+            break;
+        }
+    }
+
+    if ( !have_bs )
+        return "ERR: Bootloader shutdown EFI x64 boot services!";
+    if ( !SystemTable )
+        return "ERR: EFI SystemTable is not provided by bootloader!";
+    if ( !ImageHandle )
+        return "ERR: EFI ImageHandle is not provided by bootloader!";
+
+    efi_multiboot2(ImageHandle, SystemTable, cmdline);
+
+    return NULL;
+}
diff --git a/xen/arch/x86/efi/stub.c b/xen/arch/x86/efi/stub.c
index 2cd5c8d4dc..7d824151a7 100644
--- a/xen/arch/x86/efi/stub.c
+++ b/xen/arch/x86/efi/stub.c
@@ -1,13 +1,8 @@
 #include <xen/efi.h>
 #include <xen/init.h>
 #include <asm/asm_defns.h>
-#include <asm/efibind.h>
+#include <asm/efi.h>
 #include <asm/page.h>
-#include <efi/efidef.h>
-#include <efi/eficapsule.h>
-#include <efi/eficon.h>
-#include <efi/efidevp.h>
-#include <efi/efiapi.h>
 
 /*
  * Here we are in EFI stub. EFI calls are not supported due to lack
@@ -17,7 +12,8 @@
  */
 
 void __init noreturn efi_multiboot2(EFI_HANDLE ImageHandle,
-                                    EFI_SYSTEM_TABLE *SystemTable)
+                                    EFI_SYSTEM_TABLE *SystemTable,
+                                    const char *cmdline)
 {
     static const CHAR16 __initconst err[] =
         L"Xen does not have EFI code build in!\r\nSystem halted!\r\n";
diff --git a/xen/arch/x86/include/asm/efi.h b/xen/arch/x86/include/asm/efi.h
new file mode 100644
index 0000000000..575a33e302
--- /dev/null
+++ b/xen/arch/x86/include/asm/efi.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef X86_ASM_EFI_H
+#define X86_ASM_EFI_H
+
+#include <xen/types.h>
+#include <asm/x86_64/efibind.h>
+#include <efi/efidef.h>
+#include <efi/eficapsule.h>
+#include <efi/eficon.h>
+#include <efi/efidevp.h>
+#include <efi/efiapi.h>
+
+void efi_multiboot2(EFI_HANDLE ImageHandle,
+                    EFI_SYSTEM_TABLE *SystemTable,
+                    const char *cmdline);
+
+#endif /* X86_ASM_EFI_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:22:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:22:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807972.1219747 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sva1u-0001yB-7q; Tue, 01 Oct 2024 10:22:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807972.1219747; Tue, 01 Oct 2024 10:22: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 1sva1u-0001y4-5E; Tue, 01 Oct 2024 10:22:54 +0000
Received: by outflank-mailman (input) for mailman id 807972;
 Tue, 01 Oct 2024 10:22: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=i7H1=Q5=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sva1s-0001jp-Oe
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:22:52 +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 1d165702-7fdf-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 12:22:51 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a910860e4dcso12575966b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:22:51 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bceesm681772966b.187.2024.10.01.03.22.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 03:22:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d165702-7fdf-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727778171; x=1728382971; 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=ec7IJ82TAUIZ24f2ims91e1OgLvu1KLsDjKQelIoz6M=;
        b=AxfW4w+Ek5GuRpQAUFLX3Ylx2uWAv66BDdWLSHWUf5Qim9Jjivudazw/TPHTv1GDoO
         x3Qpn1Hu/0oJazBtRhhYzLxQS+63GyJv6tYwDXdT69FHCwkofJFPexcxYZHk6SDIoc05
         /N5tSXASTkc6xQsivUGyUNWP+YSfUw0NemRao=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727778171; x=1728382971;
        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=ec7IJ82TAUIZ24f2ims91e1OgLvu1KLsDjKQelIoz6M=;
        b=jKL6EznCconoWSnirehBToE1JEvItmJZeUcK71Z5XmIaJPXoPjc95EjjxAKrgjBEjq
         VdTKVg+OipCY5BwjrhoV/bOUR7cZQKzwbwXDSOhYB93zZ/DBf21PmI/xEKUYHG6CCtOT
         i064mYENkWNT3v5cqn26SJHyIrBbSOgcY4k/zN2Q+s6geGrZ5d6ZRmwopIPRcZE1KnOy
         dWDODit2Dx0enxFIXEVXiFNkJ9gTD5/gJEOSyNb4zAqgIqS4mSM+S4Z7RYVF2GaaTFzX
         k7zrJEcfIcv5mOUymGZNNbLCp/qxxFWSvPDgyGhSoG8RXXZNgCX678Odi8L4vu9IO6aT
         /8Sw==
X-Gm-Message-State: AOJu0YzQa5PMq1HYmdqicFivO3KU7YIIsIXomVKCXkaWZl9AFkPVbDAC
	DsOyVtFBGzp9mtQwtgjl03ktVCoWBi53G7dIJukCOvbqLjyeTfZN4zcvY4pU6A6sdoNbrE4P2Pj
	i
X-Google-Smtp-Source: AGHT+IF1U8NDFlUm54dcpcQqlhSm+jEmpqFqtZ2h9Gbsw0Pp3jHFUvwvT3lgGlczbatDf8BJACaBqw==
X-Received: by 2002:a17:907:7e8e:b0:a8d:555f:eeda with SMTP id a640c23a62f3a-a93c48e7fc2mr1768741066b.8.1727778170687;
        Tue, 01 Oct 2024 03:22:50 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v7 2/2] x86/boot: Improve MBI2 structure check
Date: Tue,  1 Oct 2024 11:22:39 +0100
Message-Id: <20241001102239.2609631-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Tag structure should contain at least the tag header.
Entire tag structure must be contained inside MBI2 data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v6:
- compare against total_size every time to avoid overflows.
---
 xen/arch/x86/efi/mbi2.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/efi/mbi2.c b/xen/arch/x86/efi/mbi2.c
index 55a1777483..935f3ae5d0 100644
--- a/xen/arch/x86/efi/mbi2.c
+++ b/xen/arch/x86/efi/mbi2.c
@@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     EFI_HANDLE ImageHandle = NULL;
     EFI_SYSTEM_TABLE *SystemTable = NULL;
     const char *cmdline = NULL;
+    const void *const mbi_raw = (const void *)mbi;
     bool have_bs = false;
 
     if ( magic != MULTIBOOT2_BOOTLOADER_MAGIC )
@@ -21,7 +22,9 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     /* Skip Multiboot2 information fixed part. */
     tag = _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN));
 
-    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
+    for ( ; (const void *)(tag + 1) - mbi_raw <= mbi->total_size &&
+            tag->size >= sizeof(*tag) &&
+            (const void *)tag + tag->size - mbi_raw <= mbi->total_size &&
             tag->type != MULTIBOOT2_TAG_TYPE_END;
           tag = _p(ROUNDUP((unsigned long)tag + tag->size,
                    MULTIBOOT2_TAG_ALIGN)) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:22:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:22:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807971.1219737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sva1t-0001k7-1j; Tue, 01 Oct 2024 10:22:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807971.1219737; Tue, 01 Oct 2024 10:22: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 1sva1s-0001jz-Uy; Tue, 01 Oct 2024 10:22:52 +0000
Received: by outflank-mailman (input) for mailman id 807971;
 Tue, 01 Oct 2024 10:22: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=i7H1=Q5=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sva1s-0001jj-1R
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:22:52 +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 1c156599-7fdf-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:22:49 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a8a897bd4f1so805995666b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:22:49 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bceesm681772966b.187.2024.10.01.03.22.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 03:22:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c156599-7fdf-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727778169; x=1728382969; 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=eUcmc6Mu2acDS7R5soe8iHrJBA3YNhBJnOk4lBLiwKQ=;
        b=e+OmQVaW2cIYrLy0PipAxTlyWAlqzQ8EhA/scXyFprl9581hKDW7py6cMa5lOeOB1G
         T7Wu5r6mxfSRHIGT1YfWiv+rCsfujxZd2Qwvy/llPkL90+iJ71bP2+jcelOZ7fJJYfO4
         ZbqKI7Z5l5T4HkwBP8VSY2GVVa1L9DbmvFgyo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727778169; x=1728382969;
        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=eUcmc6Mu2acDS7R5soe8iHrJBA3YNhBJnOk4lBLiwKQ=;
        b=uF5/ngHfynOyFKCvuzRjI8ijXlKDj59SonkscFC8KqJgZKs5CBKkVKpJ+Xwh/E2REh
         LH6mP/fkqI13qUSQ+j9HSaYCFoArGm+9crq7moF1COQgyNvhZNsFz7OsQu25B1wR+iMg
         87JSXM1174f8n4ffOsmimrn/ea0jt5RqS9ReVhMVbog52z7dfs0Cmk40pGt/3ucA8gPp
         aavWfZ3X/nbYaYXkScvJeh6RPo8QYnnjeio3Xk/HbrfPv5fPRBCmVCs6fNL7ZskkMqk5
         r0bv0aYGgsaOA0e171Ol+DK+L1aon2il7ESXss9qnjc9GJcqi3K2+WN6APrzNWOjcnhF
         oxmA==
X-Gm-Message-State: AOJu0YxFLQMBHxJdT4jFjKlaW3LFpiIDv/0X7w9isQ/kGChAoIoEAesa
	voJQLo2RGGsHi9/teS/8ecKQT9btmU3TRRl7zMHhv1+ac1kF4mkanrInVoQCpBuHYR/gpQrxvh9
	m
X-Google-Smtp-Source: AGHT+IGM3oiRAZWP3Yh57gYLyxG8rdQf6QI0EzQ9bvtGLBsIczXlvBfUScpmjgXArtV0xbnlLLbI5A==
X-Received: by 2002:a17:907:7f8a:b0:a86:82e2:8c64 with SMTP id a640c23a62f3a-a93c492a76amr1688049766b.35.1727778169071;
        Tue, 01 Oct 2024 03:22:49 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v7 0/2] x86/boot: Reduce assembly code
Date: Tue,  1 Oct 2024 11:22:37 +0100
Message-Id: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series came from part of the work of removing duplications between
boot code and rewriting part of code from assembly to C.
Rewrites EFI code in pure C.

Changes since v1, more details in specific commits:
- style updates;
- comments and descriptions improvements;
- other improvements.

Changes since v2:
- rebased on master, resolved conflicts;
- add comment on trampoline section.

Changes since v3:
- changed new function name;
- declare efi_multiboot2 in a separate header;
- distinguish entry point from using magic number;
- other minor changes (see commens in commits).

Changes since v4:
- rebase on staging;
- set %fs and %gs as other segment registers;
- style and other changes.

Changes since v5:
- fixed a typo.

Changes since v6:
- remove merged patch;
- comment and style;
- change some pointer checks to avoid overflows;
- rename parse-mbi2.c to mbi2.c.

Frediano Ziglio (2):
  x86/boot: Rewrite EFI/MBI2 code partly in C
  x86/boot: Improve MBI2 structure check

 xen/arch/x86/boot/head.S       | 146 +++++++--------------------------
 xen/arch/x86/efi/Makefile      |   1 +
 xen/arch/x86/efi/efi-boot.h    |   7 +-
 xen/arch/x86/efi/mbi2.c        |  66 +++++++++++++++
 xen/arch/x86/efi/stub.c        |  10 +--
 xen/arch/x86/include/asm/efi.h |  18 ++++
 6 files changed, 123 insertions(+), 125 deletions(-)
 create mode 100644 xen/arch/x86/efi/mbi2.c
 create mode 100644 xen/arch/x86/include/asm/efi.h

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:42:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:42:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807988.1219767 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svaKE-00076v-0q; Tue, 01 Oct 2024 10:41:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807988.1219767; Tue, 01 Oct 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 1svaKD-00076o-UE; Tue, 01 Oct 2024 10:41:49 +0000
Received: by outflank-mailman (input) for mailman id 807988;
 Tue, 01 Oct 2024 10:41: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svaKC-00076i-ML
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:41:48 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c18d6e69-7fe1-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:41:46 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a8d6d0fe021so932203966b.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:41:46 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2997507sm685061966b.204.2024.10.01.03.41.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 03:41:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c18d6e69-7fe1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727779306; x=1728384106; 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=U7dYBa1OCF97IFZB5isrQzgpYlDBKbJlJLWcO7+y57k=;
        b=E9UTJ1TwCTm6ELuc/x5EigqTlcYDZ4UNi43DoroOLn0sAENGUnLw2XBdtXcxb9WktE
         kP3fTtK7qsFcyN9H4wsQjmLdQPeI5B2Xu00WmuhWL/sKtcpikg0jD4rIpr+3zEaLWfbF
         v5uQ8FEnZV5s4AoQgkFxU3paFQPnwDV93pvYg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727779306; x=1728384106;
        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=U7dYBa1OCF97IFZB5isrQzgpYlDBKbJlJLWcO7+y57k=;
        b=rXLSMAlEYsfxO/OCFI+bHEzQuqujPEg6EPjTPrSLJnn7RE+U6LigRd49UeoNjuaL8S
         userUceiNFfrAjJFmtarrrkYFpfWr29jIaHMQC0vcYHLQZ8gK7w249ODFYxDfpHwvmcr
         wkGdAdPoq+Ts8rr++0pXdWHPwjtqAwSOom1Pe0S7lszhccNY735VFKU/Z/TRpfcVKsGD
         ytcIlWVc9E0/Vmv15k16AlN1ihgCgVjftXB+TJxZqqbagmGjSNrp5wl1ZoTt4nxshhR0
         BDXpVBwMRaSSaAtF3t8/o5K6uZ8N6Snr6LGkIWcs+7KgJ76v+LPle68BrZWXrJA8p6Va
         uRUQ==
X-Forwarded-Encrypted: i=1; AJvYcCWF9Tbf8dxPqy7T9jhJTHe5i5getwMzyVVA3M6gDurUcn9nrzvyzgS8SBk23VXv+KZs9y/UIyhgsr0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxkQ58VZzVpKLEqksVw/yW2lFE0jH6sVbXE+8GrZTvi4hepszLj
	xlGldC0373pHehnZNIJ6kWI0vSpvotREQvhD7HCCfHQiebW4elspkAFrzEQKh6JaCD2fmiBHrGW
	sGbA=
X-Google-Smtp-Source: AGHT+IFA+wQltF9yXP8Opi96p5KojU3zgbE9NzIOmJUnJsFQNdf2AagdRkQFZ7mxUNLeTPg78eyjfA==
X-Received: by 2002:a17:907:7fa9:b0:a7a:b561:3575 with SMTP id a640c23a62f3a-a93c4aec902mr1777075466b.56.1727779305806;
        Tue, 01 Oct 2024 03:41:45 -0700 (PDT)
Message-ID: <5cf7ef35-1887-494a-89c4-faa8f4f3e575@citrix.com>
Date: Tue, 1 Oct 2024 11:41:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] x86/pv: Handle #PF correctly when reading the IO
 permission bitmap
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20240930161837.1248144-3-andrew.cooper3@citrix.com>
 <4045d42b-76dd-464d-af26-85fd9b0b9f05@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <4045d42b-76dd-464d-af26-85fd9b0b9f05@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01/10/2024 8:36 am, Jan Beulich wrote:
> On 30.09.2024 18:18, Andrew Cooper wrote:
>> RFC: Should we make the boundary check be (port + bytes + 8)?  That would be
>> more correct, but liable to break unsuspecting VMs.  Maybe we should just
>> comment our way out of it.
> What would the "+ 8" be intended to express? (I take it you mean ...
>
>> --- a/xen/arch/x86/pv/emul-priv-op.c
>> +++ b/xen/arch/x86/pv/emul-priv-op.c
>> @@ -169,29 +169,26 @@ static intguest_io_okay(unsigned int port, unsigned int bytes,
>>  
>>      if ( (port + bytes) <= v->arch.pv.iobmp_limit )
> ... this check, which looks correct to me as is. In particular with the
> "+ 8" there would appear to be no way to access ports at the very top of
> the 64k range anymore, as PHYSDEVOP_set_iobitmap handling caps nr_ports
> at 64k. IOW I think "commenting our way out of it" is the only possible
> approach.)

This is actually a horrid corner case, different to what I was thinking
yesterday.

In a real TSS, the CPU doesn't read past the TR limit.  Such accesses
are turned into a permission failure.

But in Xen, guest_io_okay() does read one byte past iobmp_limit.

Previously, we'd consume what was there if it was accessible, or declare
a permissions failure if it was inaccessible.  Now, we'll throw #PF back
to the kernel with %cr2 beyond the the limit.


It's not OK for Xen to be reading past the given limit; it's not how
real CPUs behave.  Part of the problem is that, even since it's
introduction in 013351bd7 (2006), the public interface was named
nr_ports while Xen's internal field was called iobmp_limit.

In terms of how it's used these days in PV guests:

Linux points the bitmap into it's real TSS, and sets nr_ports to either
0 or 65536 depending on whether the userspace task is permitted to use
IO ports or not.

NetBSD doesn't seem to use PHYSDEVOP_set_iobitmap at all, and only uses
PHYSDEVOP_set_iopl.

MiniOS uses neither.


I think Xen's internal variable wants renaming to not be a limit, and
the comment for PHYSDEVOP_set_iobitmap wants extending to note that,
like a real TSS, Xen might read one byte beyond the end of the bitmap.

I think this wants doing in a separate patch.  Thoughts?

> With or without such a comment added
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:56:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:56:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.807999.1219776 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svaY8-0000rt-Ax; Tue, 01 Oct 2024 10:56:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 807999.1219776; Tue, 01 Oct 2024 10:56: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 1svaY8-0000rm-8K; Tue, 01 Oct 2024 10:56:12 +0000
Received: by outflank-mailman (input) for mailman id 807999;
 Tue, 01 Oct 2024 10:56: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=qOtZ=Q5=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1svaY6-0000rg-Rq
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:56:10 +0000
Received: from DU2PR03CU002.outbound.protection.outlook.com
 (mail-northeuropeazlp170120003.outbound.protection.outlook.com
 [2a01:111:f403:c200::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c191d658-7fe3-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 12:56:05 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by AM7PR04MB6902.eurprd04.prod.outlook.com (2603:10a6:20b:107::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.27; Tue, 1 Oct
 2024 10:56:02 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8005.024; Tue, 1 Oct 2024
 10:56: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: c191d658-7fe3-11ef-a0ba-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=AP+Ebn/6o+3wuojRyOQhNt1TctCqxV8hndwCuP+X/KccvukWtESi0JF6Qo8v1dSqT3ZklU+EFFkq/ImINOzAVMz3K1YxAyGB1V9fL1Gqi1x04UV6Xf7Os441vRfZeNXGCcJ24UtwxFM/4mlyRcLWUu2dUeeVK+WDWDJDP5BJ4p7hM5Z0JJQDhNDdNOlyrBhzO5Mw4Q0/lPpdX6f20gJnT+sQBkI8UZtOBsU+YV7SpIhbb+OQFQVWxl62OawcpWBdH5bpzjeNky9UveP21Q6tur9RbDnVDEV/tGQWk5TSOx4wqnbzOlBgoBH7lXcQ8iOR6P3YH00zGYnZLE0KHfHwkw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=AY1cWoeqTg004FL28fLqPm2SsocyiN0Sm9IalwiR7dM=;
 b=VEthfYFGT7WWbNw1tGClsMl6zhkm/0donYKycq0+XXBk7IfWcKMJNK2UX2BttkD7M9jZlSe7Kh+4x2d/YTyHwmq/YwuBkwvfp4A6BBpso6teOQBvwsJy5ADYyQoFtOw40ga0YoQEof7eyaa3/ul4IiInqLq6OCWroktTEag7avkfvnNhUfektThPMBVhRpb52e8kfQidSoWRHfVVWy44GlG0bLEhg2m/1Q0IY1ouQJhG3cmi9IlUAqeVTRm1ccoh0+F2ekt/af4svoIZ+FAUVZIJZ6NlxkOgncPbPv3yAZS8mpDYoZ6s3O1GxMCP2p8wskd5pdkyAjnoAKi6BiZZCg==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=AY1cWoeqTg004FL28fLqPm2SsocyiN0Sm9IalwiR7dM=;
 b=l1wjGEDkOHnhPjXIn03wBu3JAOMQJYhd0IrnWADtDAgzdN81eRVeRiwiVnSNJVKz4gd3wRSh5PwJtP7uoGE0hCf+r8zSM1FSyzU6xhihm2R3CKnf0dNrL2AtMpP8vxunzUhcDaO+RJcZjrD1jLdEdTvMudFwbzvHJIsnxBCt3b+Kw0pnxEnnaJj4HnDvCiWEDubW1dD11caSAluoIGlhP/wUzWFkdzKaNDqVEJ8wXJNvLtFJoww64kZzIkBFWVSfQfss3Qna8LQPVArkgt6Zfq5QE8g+Bqej9O6ArzLWVdaaR61s9q63dimbjbOGTHSO9XlyoFernEgqYY3oQTa+/Q==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <737f810c-c469-4ebb-9b93-c5316987187a@oss.nxp.com>
Date: Tue, 1 Oct 2024 13:55:23 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/8] xen/arm: Add NXP LINFlexD UART Driver
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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>, Jan Beulich <jbeulich@suse.com>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-2-andrei.cherechesu@oss.nxp.com>
 <b0e2f8d8-5cc2-46dd-90fb-47c61d79f703@xen.org>
Content-Language: en-US
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
In-Reply-To: <b0e2f8d8-5cc2-46dd-90fb-47c61d79f703@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AS4P191CA0008.EURP191.PROD.OUTLOOK.COM
 (2603:10a6:20b:5d5::19) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|AM7PR04MB6902:EE_
X-MS-Office365-Filtering-Correlation-Id: 79b58207-8af0-4a47-2c73-08dce207a3ae
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?c3NIcmwzKzBrTHRBdnlyZUQyY2Y0Yk8vMHBzVDdpNXFCOVJUa2VrclRZdTdu?=
 =?utf-8?B?c1lwOHlCdjdHWDhTbTIwU3ErZkNBc0NjSUZNSEJxVzJ4LzNUUE95cHQ2MTha?=
 =?utf-8?B?eWpPYWpWWC9ndXRBTUNRL0w5a3drTlhFSHdTZExSSkpCWk1GTk9KZ0NqVUpU?=
 =?utf-8?B?bUg1UFU5eE1HbjVlSFpsbEZJQ3J1Q09pRjhkdDBDbm8yaFdtN2ROVVM1WFda?=
 =?utf-8?B?N2JTSkY2OHg4N0hNZmZ6alB0M2kvVG5IZGp4REdxc0dZTXlxcHkwWHVBYUhr?=
 =?utf-8?B?ekZEUnFVMU1OZFh1UFJQSnVnaUNORGg3cDBzUXhYRTFnbnNITTU3UXhQSGN2?=
 =?utf-8?B?elJYdkNVR2dyQ3FQRjRUVlR4ZXZhYVE2RGJhUVlRMWRXRDZpWDZXV0w0Y1dM?=
 =?utf-8?B?SjQ1MFErZjRxSnRVVklJN1d2Z25LMHF4NnovMlJaNVdrTXdSM2w4S1RxbnUw?=
 =?utf-8?B?cEh4azlXMFloWkF4U3J2MFp4bEpXcU1SMERXaDFWRzJicy9Ub1BYWVhMMFdS?=
 =?utf-8?B?TW5CWjFzTjBsQUlYUzcrUmtxNUdFOVRPSSt2eUN1YkZPZUVabW9aYjFQWm9O?=
 =?utf-8?B?a1lmcWszVzBkYjZEVmxkeGRqMi9JNFVQU3RYV0hkK2ZMOWZzanRxR3FOUjcz?=
 =?utf-8?B?eWZqMDB2azlEalFtVnp2ek04c0RhTVhuN0xPQXNJaDVCNHNJa2ZmSndZck9z?=
 =?utf-8?B?S2JzZVFONmh4ajc3bTNkWWNNU2ZMNGVDR3B6aTBQMmczWS8raHVRM2lwbUxj?=
 =?utf-8?B?VWNZYzFZbEc4VmRyZDVLU2VsdFg4cDJGcUNzUm96NFZTWTdmTmJ0S2kzRUlX?=
 =?utf-8?B?SFFrS053MkRiZFBlbjVpNUhVZGV6ZnZlWjRZTUhOSi93Ryt6d29qWWpqN21L?=
 =?utf-8?B?UjAwTnhPTzNTNk9adkYyVm9uRzZoNnp2SDEvRWE4eXBGY2haSGNNS2psTC9q?=
 =?utf-8?B?K0hVdWpUWDV6VkQzeDgwOS9OdnNqaDJHRmNnTW9zZzRVYjJTUUNRaXhpSlFw?=
 =?utf-8?B?ZFgxU3JHSm5kZlhaNmQzYkZHRGZVb2tHWUtjRm5ZME9SblRibTNWK3l2UEZm?=
 =?utf-8?B?K1ptV3ZGY2JiVjNKblU4U0RpZjhZYzFXUno1b3NsSERTVkpyWE1OWWN2TWJ6?=
 =?utf-8?B?dG8rM2JuWEpSeU9nK1JEZ2c3cWhPMXY1N3g2dlF2ZkxWUzhrVmpVMW94blNy?=
 =?utf-8?B?enJHNHg2eTV4Y1k4VFZGenNrOGlKN3lNNm00YTQ2cjhqQytCMFhmUkZKZU9I?=
 =?utf-8?B?UGNiN0FNNUdRSEpFWHg2Q1YrNUdBVW5BWktIbEdrVFVoYW92Nm1lV0ZtZ2d3?=
 =?utf-8?B?RzI2dFVGLzlCVlhZVTdDTUYybzhDdmVmSTRVMG9FNEVHTW5lZE5Ia25KVy9V?=
 =?utf-8?B?azhtRlNnVTdWZmJSaThUZHlWR2c0MytpZnZvdUVlUzdNMCs3VFFQbjcwTGIz?=
 =?utf-8?B?UVc1Vm9VSmM1dWd4UG9KbllhcHhkTnIyR2lGUGkwYWVZeVd6YWFxQ1BzUDJJ?=
 =?utf-8?B?VzNueEIvNEZCd0xtTG1hbXMrRzU0SlV0UC9vTGdJbFFGNW5sSDhlRGtYM3lS?=
 =?utf-8?B?UjlLM3BFNDdBTW9aQ2U3WG1OaTRoMW52QjhBdEpKWkxrelgwOWt6MkdHaStL?=
 =?utf-8?B?d2ZscncwWFVvUVlVRC9NU2VZOTFjSkVPVXBpYVdLWGQwUk04alJITTd0ZTZS?=
 =?utf-8?B?TXdNT2VNaWt0aTFMVWhmaUMwY2ZZNGpDTTQyenNwbkRvOVAwZ1pQbXNkczRw?=
 =?utf-8?B?WnNYM2lPUStRRU1CZmVVUFVKN0dsME5PZ1gxdWFocWdMTTRBMlhRbitxSXBq?=
 =?utf-8?B?T0tDYjNrRmdmV3ZvcWdvZz09?=
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:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?NjhISlloVzc2RGh6dk93V2FkeitOV01CcUdXT3hxYk5YRVF6UFJ2V2liRDIr?=
 =?utf-8?B?QWMwQk1EVi9nMUtBZnA2bmtpUlk0NTExQmYreHE4V2UrN0RTck0yVVZSRGIz?=
 =?utf-8?B?UnZERE9jM2JjRzNqVjlyNk5iM2t0N1V1Z09iK000NWl5SWk3Q0xEVEYzUnpU?=
 =?utf-8?B?RXV3Nmk4aHlEWlJHcDN1b3RFbnlJVDVNSVJ1Nmw5a1RxdW8vMVI4Qm0vcjQx?=
 =?utf-8?B?M3JHcDg4cmlMc1pnMjZWb0dhYXFVb0lyWWx3b3VQSTZPMzl3RG5lOUZqUXVY?=
 =?utf-8?B?V2EybFBZYkwyNEE3TUc4aTVsQWFCVVpzR21JL0NlRWVkdnhORW9WeFJKRUl2?=
 =?utf-8?B?QWlWRTJ0MStaekpReGtid2tyc2l0ejgxTlY1SEdCQnl1Qk9aTnJGeW5TUUxB?=
 =?utf-8?B?VlA0ektRRjJhMWpqWDkyWTRCNGZLVkZpZGovQndUdnJRUE4waHZuOGVGckdM?=
 =?utf-8?B?a3JYRHlNMTIzYlFuN3cxeDhQOUtXVXo2VlVsbWdvampXazBuaDhEYjFoUGhu?=
 =?utf-8?B?QWczaTRjdkdxZEZmbnMrdVhjanJMSGdLZjhrcWtxbTdpbzZuOWN1UXEwM0JZ?=
 =?utf-8?B?YXkreS9CVFVFUFVaQ2RmUGxLQSthUWppbDRjSEQzc0JpeFM5b3NhK2pZWjlY?=
 =?utf-8?B?RVQ0RUNsUmMxbk9jQVVWY0tqdklCTTFzWVZoeVhEaUI3LzQ4SGExaFFhbkhx?=
 =?utf-8?B?NC9UM2FmSmNnUzgrNE8zWjlQZldxRzlKNFB2WFhHazRveGV6SzEyRHdOdHN1?=
 =?utf-8?B?a2dLY1VRVFFmUlRQbzlTSHlYRXRLK0tqdDFISVhUUDJlSURxWUVqYTJxTkho?=
 =?utf-8?B?M0VidHBWd0s5cWZvK2tEMVRuLytFOElqZkZWcHlMN3FSeFU3WkV6SnF1enFK?=
 =?utf-8?B?WXlGQy82Q2tmazdocTJwT3ZmL2xtNGFGMnRlSWNtWWhSdFpDMjY4M21Zdi9J?=
 =?utf-8?B?Ry90M2w2TFhlL2ttdWZMcGlCNldFMnZielh3QXp0K2I2VEpPbzBRWDB1YW9u?=
 =?utf-8?B?eFBCUXRTSzc4a2k3TnVPVG5qRDJVYVFIVjM5TWQ3M3prODZwa0xERkQ0REZO?=
 =?utf-8?B?YnBINzdORlZiWk5pVVpyeG82S05Da1N1L1QxZEo5N3dwN1RKM2xST3J0WENE?=
 =?utf-8?B?a1V0SzVPTTh6QThiVGw5SEM4cjdicXY0SFpTdEtQc3NxMkhtY1hhVjRKUEE5?=
 =?utf-8?B?NWlWeEpQWFJMNzRyc2lpZTlaRzd4UFZvZE9XbUhObkZOS1NzcFhhRGcxOWJt?=
 =?utf-8?B?SVJrQ1NKbWR0dytWaFVaTUVCaXZzRTY1U21yUlFNVi9rREo2VlgzTE5IS1VI?=
 =?utf-8?B?eXRwSm0wbEo4SWVNK3UvVU1wRWRQbE5SY3ZDeVpXejhyY3ZjRGZFQXVzOGN4?=
 =?utf-8?B?MlA4bVpLUERQWlRrTkp3aXBlank4eWVrZE9GcVdaNDhDV0IrQStoQ3JVTHpl?=
 =?utf-8?B?aTk2cndKcWV6UzZjd2N1cDhrN2t6ekhXUlp0MlJaOE5raTFNR0pOKzlULy9M?=
 =?utf-8?B?T2xDc2w1aG5TMVY0eXM2L2N2ZG9Pdmtsclp6Zm01eENKeFhzaCs4c3lkU2kw?=
 =?utf-8?B?S0cxZjFoVnJiSmMya2h1RVk0ZEVTdmlJWjlXN0Mzd25MZjBzaFFBSjEzYnZD?=
 =?utf-8?B?YUhvQmJmRFJYR2d4NWU0eC9GUjV6blR1UVZSU0U3czdrMW91WlJxL1NPMHJ1?=
 =?utf-8?B?Q0xDamh6QWJQOWpYVWJtaDBNNWdoUWRDejI5QU00Qks5b0VnMVB6dWdZMEU1?=
 =?utf-8?B?NVFpZkl5bkhxMi9CVC9VM1YxVUU1enQ4UHA5OFVBL1Q1S2lCWkltZ2RqQU5N?=
 =?utf-8?B?Nko0NU5TakNJZWU3M2FMalhZSStmS0RmaXRVSyt1cFdWSGtLRDBNd2NObnVa?=
 =?utf-8?B?dk5ibnluZWx0TkdqZmVJUGVNVWZHWkZRTlZCTEMrMzM5Q01zUmN5UUdhZDNC?=
 =?utf-8?B?Qjg1L1lYWURlQzFCS0dzQVcxdXVQYURyNkZqd3RMVEhCdW10WEdsSkJDdGxj?=
 =?utf-8?B?bXo0aVFLS0ZHSDlvdC9KL0hvSHhlWlpsQTdLdGRKbXQ1eGZ6aHZvMlM1MVdz?=
 =?utf-8?B?cHM2MnNSd25nOHFCVDR3MmVnWXo3RVZMWW5Wb3hMb0RmYjRzVWxtb2RkTkJK?=
 =?utf-8?B?UWlaNGN6M1Q1eXFCcFRDVnRuMFQzR0RuVTB2aS82b3hpem11Y3lpZFdPMzhl?=
 =?utf-8?B?Y3c9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 79b58207-8af0-4a47-2c73-08dce207a3ae
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 10:56:02.1130
 (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: 80yNBeLhjsIB/ij+9OYE7mDm5F+4qpEW/KiOwyhdA05foozUwmGWZSkURMqnzLBuQkEJLfMOSAeNyRwf4y2lgL74lB8ORH8OoPvtExjEfOM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6902

Hi Julien,

On 01/10/2024 12:20, Julien Grall wrote:
> Hi Andrei,
>
> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>> +static void __init linflex_uart_init_preirq(struct serial_port *port)
>> +{
>> +    struct linflex_uart *uart = port->uart;
>> +    uint32_t ibr, fbr, divisr, dividr, ctrl;
>> +
>> +    /* Disable RX/TX before init mode */
>> +    ctrl = linflex_uart_readl(uart, UARTCR);
>> +    ctrl &= ~(UARTCR_RXEN | UARTCR_TXEN);
>> +    linflex_uart_writel(uart, UARTCR, ctrl);
>> +
>> +    /*
>> +     * Smoothen the transition from early_printk by waiting
>> +     * for all pending characters to transmit
>> +     */
>
> Just to note that early_printk() will still be used by secondary CPUs when booting which happens after init_preirq() is called. Will this be a problem for you?
>

No, there's no problem with that. At the end of init_preirq() the
UART can still be used via early_printk(). I know the secondary
cores have a mechanism to print some messages themselves when
being brought up, otherwise their initialization fails. 

But they're being enabled correctly in our case:
(XEN) Bringing up CPU1
- CPU 0000000000000001 booting -
- Current EL 0000000000000008 -
- Initialize CPU -
- Turning on paging -
- Paging turned on -
- Ready -
(XEN) GICv3: CPU1: Found redistributor in region 0 @00000a004003e000
(XEN) CPU1: Guest atomics will try 13 times before pausing the domain
(XEN) CPU 1 booted.
(XEN) Bringing up CPU2
- CPU 0000000000000002 booting -
- Current EL 0000000000000008 -
- Initialize CPU -
- Turning on paging -
- Paging turned on -
- Ready -
(XEN) GICv3: CPU2: Found redistributor in region 0 @00000a004005e000
(XEN) CPU2: Guest atomics will try 13 times before pausing the domain
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
...

> I haven't compared the code against the specification. But the logic LGTM from a Xen PoV. So:
>
> Acked-by: Julien Grall <jgrall@amazon.com>
>
> Cheers,
>

Thank you for the review!

Regards,
Andrei Cherechesu



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 10:56:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 10:56:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808000.1219786 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svaYI-00018P-Im; Tue, 01 Oct 2024 10:56:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808000.1219786; Tue, 01 Oct 2024 10:56: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 1svaYI-00018I-G1; Tue, 01 Oct 2024 10:56:22 +0000
Received: by outflank-mailman (input) for mailman id 808000;
 Tue, 01 Oct 2024 10:56: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svaYG-00017M-TD
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 10:56:20 +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 c5fc3b52-7fe3-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 12:56:18 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a8d2daa2262so617986566b.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 03:56:12 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bc6fsm684867866b.184.2024.10.01.03.56.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 03:56:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5fc3b52-7fe3-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727780172; x=1728384972; 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=iUun+lrwmpBBe72wDTtf+uLOH4m8joMfYJjJkNv/w4o=;
        b=Z7xlO4AFrb29QlFBuQ1Ubl4SOeAC7sR7EQrBvc3hdfZBBB5ELVYjoqWXMj/zqfIRM4
         5JqkIX6KJYjCMb8jkFW1/wiWRyU4OlMVST/NTmFanhLKsGKSVrcPA2qHPVd2XBsExLeN
         4dN84Erinw02q18r30ukyX/aIVWKDTqQKarIPYHxoYTcRJkEpF4RLyEn+sygeLFpJR5l
         ok49qUnC78JV1pXA28B4J5/fP/GggJqGvG3sV428TxheeqU1471QD7dMuVT+7Hqy6qnw
         i0sm1qOSba7ev23OZMu+pOQ6x0o0dMmCPbyOP8mGDFHIIayQIrheDdBwhFKAWIRuuBiy
         19Ow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727780172; x=1728384972;
        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=iUun+lrwmpBBe72wDTtf+uLOH4m8joMfYJjJkNv/w4o=;
        b=AaQ7qXu7xHLUITJOx6n5Ec2yMLXgzRsNmMbxAiFIYhco5mbmoIwfPg6fb2WQhfulA5
         uBQU2HYpp4NuFQsppviKo9GlEEltIiQUlbDY1XUNKpDoFmNkAsw4JJr+XSyUOh2tyaIi
         zvml/mdmd0/hLYSno4flaM8CTH0kPBD/tcN74dC8EZVpACQAi1OKkgbJRV9A7E/5a0MV
         8kK4gLBwCs5Pj7y8ikWF9rAesB0c+1qP+rRqnOfdfSjhFhQ7qzuIr1ko+9tJlRe0ZJn8
         0GhTxHA8tzmmViORETpRPn9CA+SjBwKVdyMaHH4S8noFzHITuVK7q8cy5SN1IqTvkv7f
         lyQg==
X-Forwarded-Encrypted: i=1; AJvYcCW30riprGnIUHjHHWhtcpLv5G5zUm4ebJDrR0k9dx30j8CL3ooYf4X/qeP99zo2/Z0SA2RkCeiaMpo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz52DX5Ta7z3f5wVvqtLCiyyEik5IH5rBs6ntWXDTOP+AjeuVzV
	IMwIT/rRoY0Bsyqfth0cZJJQdyowYu+UfmmP1assprpjpj3aVgLn/bqqzexRlA==
X-Google-Smtp-Source: AGHT+IEBZHfLUy4AuHvzrxrINutcel8aHHxjJL2UY7F8v0bxesmiOYfFoz9Cs6pF0JT9cF/oemSDdw==
X-Received: by 2002:a17:907:a0b:b0:a8d:2c3e:7ece with SMTP id a640c23a62f3a-a93c492d4e1mr1650231466b.31.1727780172327;
        Tue, 01 Oct 2024 03:56:12 -0700 (PDT)
Message-ID: <14f5fee5-778a-48bb-9952-7e390a020f95@suse.com>
Date: Tue, 1 Oct 2024 12:56:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] x86/pv: Handle #PF correctly when reading the IO
 permission bitmap
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20240930161837.1248144-3-andrew.cooper3@citrix.com>
 <4045d42b-76dd-464d-af26-85fd9b0b9f05@suse.com>
 <5cf7ef35-1887-494a-89c4-faa8f4f3e575@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: <5cf7ef35-1887-494a-89c4-faa8f4f3e575@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01.10.2024 12:41, Andrew Cooper wrote:
> I think Xen's internal variable wants renaming to not be a limit, and
> the comment for PHYSDEVOP_set_iobitmap wants extending to note that,
> like a real TSS, Xen might read one byte beyond the end of the bitmap.
> 
> I think this wants doing in a separate patch.  Thoughts?

That's probably going to be best.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 11:22:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 11:22:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808010.1219796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svax8-0006Kh-Gq; Tue, 01 Oct 2024 11:22:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808010.1219796; Tue, 01 Oct 2024 11:22: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 1svax8-0006Ka-EL; Tue, 01 Oct 2024 11:22:02 +0000
Received: by outflank-mailman (input) for mailman id 808010;
 Tue, 01 Oct 2024 11:22: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=Um4/=Q5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svax7-0006KJ-5j
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 11:22:01 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5f9cd9c8-7fe7-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 13:21:59 +0200 (CEST)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-5398996acbeso4572534e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 04:21:59 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53980fcdcd6sm1445087e87.153.2024.10.01.04.21.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 04:21:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f9cd9c8-7fe7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727781718; x=1728386518; 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=Plfr71v2bxYhURdWj2jJFNZX3VR3MQK5x6JBIYFkLTk=;
        b=R/P4UFOOW2vBvW/qOcIl0TuEso3iHwknTrc4H4wKBvn5qO0ML1Uh2sWqa2zgCK3hVl
         uxIKi+nEOp8W6qn2qVUAlrioO68X3viIqwOJXUj+vRlVbogOGq2CalhiF94ElGsrRrsm
         KnEXzlsT4ex673bdQomuVfkj0wBp7+DLjbgHfajFXuAyeNkPbWTasSVMpYheI4lgPxa1
         7S3sZ/ouI+xKD11yHoC47YXx5zJWUED7hq1uQrxYDYq7ZDi65hx9i0DAyi/tWnfAUysA
         u4T6D4PJTznSausGbGU1CULrfZ0o5MEMNtUvH2aXLfzM3rCwtMiBNTiEFo5pec5Ep8O5
         c3Lg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727781718; x=1728386518;
        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=Plfr71v2bxYhURdWj2jJFNZX3VR3MQK5x6JBIYFkLTk=;
        b=OwVZEuprgiW0Hm4wugjVb5rUGf8mnoQf1J7JFVkyBC69pNtIHJ+bSx4t63THnbTlbO
         prAL38XKRTfLNTCQOUWzeB+MuBK1ygqSXoxacw8023Xx7AjQ9YvBOBLZKDWoHPkedGm1
         RL6Yxbb4bMiZfoUHncXFn5E+t189zfEzO9XglGnRPN9CFPYfFkxJssITRW65Qu4ns5iB
         M/QWimuY4bIMcOa7D1fyiVPggkN0kcyzLywWssTS/lN/sVzvn4fp2JHqXfHPLiHOffyY
         MYjeAbnHi9oLAjZAckR9Ty1Px80byAB8BPCZEDd0hp5xZo9p86isXpvG1k42Wk1ZgdAR
         XUzQ==
X-Gm-Message-State: AOJu0YwaQdFf1pwDAg/hKGuIeN9ZQ3mqd2NbLntxM9qG2pWBTWQ8Jsqr
	U4Pv/JJeM3jrmsJE87e8/uoFDV6a0uiQL9EuE3Mb88vMuPLsP5l5HpOs1A==
X-Google-Smtp-Source: AGHT+IGNi4hAvrt+/eJtatVzYfC0hbEH8cw/laLW2MdjOnTm8D1IHIx8fdl0eThCt5PVq/AJTPX+qA==
X-Received: by 2002:a05:6512:10c6:b0:539:8e77:9129 with SMTP id 2adb3069b0e04-5398e7791c7mr4908877e87.44.1727781717948;
        Tue, 01 Oct 2024 04:21:57 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v9 0/2] device tree mapping
Date: Tue,  1 Oct 2024 13:21:20 +0200
Message-ID: <cover.1727781468.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Current patch series introduces device tree mapping for RISC-V
and necessary things for that such as:
- Fixmap mapping
- pmap
- Xen page table processing

---
Changes in v9:
 - The following patch was merged to staging:
   - [PATCH v6 2/8] xen/riscv: allow write_atomic() to work with non-scalar type
   - [PATCH v2 4/8] xen/riscv: setup fixmap mapping
   - [PATCH v2 5/8] xen/riscv: introduce asm/pmap.h header
   - [PATCH v3 6/9] xen/riscv: introduce functionality to work with cpu info
   - [PATCH v3 7/9] xen/riscv: introduce and init SBI RFENCE extension
 - All other changes are patch specific so please look at the patch.
---
Changes in v8:
 - The following patch was merged to staging:
     [PATCH v5 1/7] xen/riscv: use {read,write}{b,w,l,q}_cpu() to define {read,write}_atomic()
 - All other changes are patch specific so please look at the patch.
---
Changes in v7:
 - Drop the patch "xen/riscv: prevent recursion when ASSERT(), BUG*(), or panic() are called"
 - All other changes are patch specific so please look at the patch.
---
Changes in v6:
 - Add patch to fix recursion when ASSERT(), BUG*(), panic() are called.
 - Add patch to allow write_atomic() to work with  non-scalar types for consistence
   with read_atomic().
 - All other changes are patch specific so please look at the patch. 
---
Changes in v5:
 - The following patch was merged to staging:
     [PATCH v3 3/9] xen/riscv: enable CONFIG_HAS_DEVICE_TREE
 - Drop depedency from "RISCV basic exception handling implementation" as
   it was meged to staging branch.
 - All other changes are patch specific so please look at the patch.
---
Changes in v4:
 - Drop depedency from common devicre tree patch series as it was merged to
   staging.
 - Update the cover letter message.
 - All other changes are patch specific so please look at the patch.
---
Changes in v3:
 - Introduce SBI RFENCE extension support.
 - Introduce and initialize pcpu_info[] and __cpuid_to_hartid_map[] and functionality
   to work with this arrays.
 - Make page table handling arch specific instead of trying to make it generic.
 - All other changes are patch specific so please look at the patch.
---
Changes in v2:
 - Update the cover letter message
 - introduce fixmap mapping
 - introduce pmap
 - introduce CONFIG_GENREIC_PT
 - update use early_fdt_map() after MMU is enabled.
---

Oleksii Kurochko (2):
  xen/riscv: page table handling
  xen/riscv: introduce early_fdt_map()

 xen/arch/riscv/Makefile                     |   1 +
 xen/arch/riscv/include/asm/flushtlb.h       |   9 +
 xen/arch/riscv/include/asm/mm.h             |   4 +
 xen/arch/riscv/include/asm/page.h           |  80 ++++
 xen/arch/riscv/include/asm/riscv_encoding.h |   2 +
 xen/arch/riscv/mm.c                         |  58 ++-
 xen/arch/riscv/pt.c                         | 421 ++++++++++++++++++++
 xen/arch/riscv/setup.c                      |   7 +
 8 files changed, 576 insertions(+), 6 deletions(-)
 create mode 100644 xen/arch/riscv/pt.c

-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 11:22:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 11:22:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808011.1219807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svax9-0006Yk-OF; Tue, 01 Oct 2024 11:22:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808011.1219807; Tue, 01 Oct 2024 11:22: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 1svax9-0006Yd-Km; Tue, 01 Oct 2024 11:22:03 +0000
Received: by outflank-mailman (input) for mailman id 808011;
 Tue, 01 Oct 2024 11:22: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=Um4/=Q5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svax7-0006KO-KI
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 11:22:01 +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 60815ba0-7fe7-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 13:22:00 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5398e58ceebso2489856e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 04:22:00 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53980fcdcd6sm1445087e87.153.2024.10.01.04.21.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 04:21:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 60815ba0-7fe7-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727781720; x=1728386520; 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=pzyb+S2cXg2nYubA3PbWR50woG4ltgAkzmb2CBniKuU=;
        b=J54fvM7AU93cR4kFdS9MEhxffuYvw+OZxuleeuNIH6uU2GNLufqm/iTR42zpOm34Zw
         6Fc6c8IvpfljlnRQv6XH9yJDuTfZbn7wYiioUX9A/KtbErLfbHP1qyx/EFulbwQpoAFo
         C1tNK19fP4zzWH6/pRgu1VODMrm4kZUOdo9L46giifwaGzZqquuxugUZnuG4EQwlyXBv
         mJ2u2P9VveZxqLflzJo8GMxfgj5MtwxqyrC1QA3ikWUK2p0O3I6n9CkjrMwx+Yb7W46Y
         Fa+jpPpibkOMl8YGBWF7+3WOewzaKqqicbOXw/lVAWJYebPe+PGubAJqb93b+xi2aros
         yTRQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727781720; x=1728386520;
        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=pzyb+S2cXg2nYubA3PbWR50woG4ltgAkzmb2CBniKuU=;
        b=Oylu2ytpVqcNTorHuaB6WBUSI3DpjkPaxcKQy5aYKAZEPywJFrm/DKzb3L1ZRF7C12
         rUq6mi2JTW0ZVfQVuxb+CT2jcamRo2HiLWommbSExQG/F8S8PacXszZ5fRAQekEfFHZX
         ftVjhyGbXGkJWFLyjpdgcfIybMmj5juJyg/4+zC4loFfKXY7QYfQuP7o4EuZMe9UnHzZ
         oxxFSpr0hdQ2l74w7vTAQsSJLSjO7VGeIi7vm4R2jKe/M9cu2ILMC/VF2VQE2XtSEgDO
         TibkywmsQ4QnO++nC8BvqY5/6Y7XnVzpLtdOKUUDiC2B3eefQAZ8CBLpKA801HXq0nTd
         jGFw==
X-Gm-Message-State: AOJu0YzQVbOXYZb8IzF3oqjjpSBatYG10m7WzuJSI7G7ipHB2mhukznv
	mSWs9RPMjpXu8UgXMfIiOy6JT/zzzXQBSPZzIQdduRZXxIzFo2R8IvVyDw==
X-Google-Smtp-Source: AGHT+IGZID+EOqA1XEWrqtW7RXPGrTlUIDK3EMOVPHyIL1V8s7ekWo/LA+b89W1g/IOIOD6BsSXe3g==
X-Received: by 2002:a05:6512:2203:b0:52f:260:c459 with SMTP id 2adb3069b0e04-5399a25bc6fmr1061039e87.22.1727781719520;
        Tue, 01 Oct 2024 04:21:59 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v9 2/2] xen/riscv: introduce early_fdt_map()
Date: Tue,  1 Oct 2024 13:21:22 +0200
Message-ID: <921235d8075bdd296752a7cbe0fa70b728a57b58.1727781468.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <cover.1727781468.git.oleksii.kurochko@gmail.com>
References: <cover.1727781468.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce function which allows to map FDT to Xen.

Also, initialization of device_tree_flattened happens using
early_fdt_map().

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in V6-V9:
 - Nothing changed. Only rebase.
---
Changes in V5:
 - drop usage of PTE_BLOCK for flag argument of map_pages_to_xen() in early_fdt_map()
   as block mapping is now default behaviour. Also PTE_BLOCK was dropped in the patch
   "xen/riscv: page table handling".
---
Changes in V4:
 - s/_PAGE_BLOCK/PTE_BLOCK
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>
 - unwarap two lines in panic() in case when device_tree_flattened is NULL
   so  grep-ing for any part of the message line will always produce a hit.
 - slightly update the commit message.
---
Changes in V3:
 - Code style fixes
 - s/SZ_2M/MB(2)
 - fix condition to check if early_fdt_map() in setup.c return NULL or not.
---
Changes in V2:
 - rework early_fdt_map to use map_pages_to_xen()
 - move call early_fdt_map() to C code after MMU is enabled.
---
 xen/arch/riscv/include/asm/mm.h |  2 ++
 xen/arch/riscv/mm.c             | 55 +++++++++++++++++++++++++++++++++
 xen/arch/riscv/setup.c          |  7 +++++
 3 files changed, 64 insertions(+)

diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index ce1557bb27..4b7b00b850 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -259,4 +259,6 @@ static inline unsigned int arch_get_dma_bitsize(void)
 
 void setup_fixmap_mappings(void);
 
+void *early_fdt_map(paddr_t fdt_paddr);
+
 #endif /* _ASM_RISCV_MM_H */
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index e8430def14..4a628aef83 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -1,13 +1,16 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
+#include <xen/bootfdt.h>
 #include <xen/bug.h>
 #include <xen/compiler.h>
 #include <xen/init.h>
 #include <xen/kernel.h>
+#include <xen/libfdt/libfdt.h>
 #include <xen/macros.h>
 #include <xen/mm.h>
 #include <xen/pfn.h>
 #include <xen/sections.h>
+#include <xen/sizes.h>
 
 #include <asm/early_printk.h>
 #include <asm/csr.h>
@@ -369,3 +372,55 @@ int destroy_xen_mappings(unsigned long s, unsigned long e)
     BUG_ON("unimplemented");
     return -1;
 }
+
+void * __init early_fdt_map(paddr_t fdt_paddr)
+{
+    /* We are using 2MB superpage for mapping the FDT */
+    paddr_t base_paddr = fdt_paddr & XEN_PT_LEVEL_MAP_MASK(1);
+    paddr_t offset;
+    void *fdt_virt;
+    uint32_t size;
+    int rc;
+
+    /*
+     * Check whether the physical FDT address is set and meets the minimum
+     * alignment requirement. Since we are relying on MIN_FDT_ALIGN to be at
+     * least 8 bytes so that we always access the magic and size fields
+     * of the FDT header after mapping the first chunk, double check if
+     * that is indeed the case.
+     */
+    BUILD_BUG_ON(MIN_FDT_ALIGN < 8);
+    if ( !fdt_paddr || fdt_paddr % MIN_FDT_ALIGN )
+        return NULL;
+
+    /* The FDT is mapped using 2MB superpage */
+    BUILD_BUG_ON(BOOT_FDT_VIRT_START % MB(2));
+
+    rc = map_pages_to_xen(BOOT_FDT_VIRT_START, maddr_to_mfn(base_paddr),
+                          MB(2) >> PAGE_SHIFT,
+                          PAGE_HYPERVISOR_RO);
+    if ( rc )
+        panic("Unable to map the device-tree.\n");
+
+    offset = fdt_paddr % XEN_PT_LEVEL_SIZE(1);
+    fdt_virt = (void *)BOOT_FDT_VIRT_START + offset;
+
+    if ( fdt_magic(fdt_virt) != FDT_MAGIC )
+        return NULL;
+
+    size = fdt_totalsize(fdt_virt);
+    if ( size > BOOT_FDT_VIRT_SIZE )
+        return NULL;
+
+    if ( (offset + size) > MB(2) )
+    {
+        rc = map_pages_to_xen(BOOT_FDT_VIRT_START + MB(2),
+                              maddr_to_mfn(base_paddr + MB(2)),
+                              MB(2) >> PAGE_SHIFT,
+                              PAGE_HYPERVISOR_RO);
+        if ( rc )
+            panic("Unable to map the device-tree\n");
+    }
+
+    return fdt_virt;
+}
diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 1d81e0b64f..6d156c3a40 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -2,6 +2,7 @@
 
 #include <xen/bug.h>
 #include <xen/compile.h>
+#include <xen/device_tree.h>
 #include <xen/init.h>
 #include <xen/mm.h>
 #include <xen/shutdown.h>
@@ -37,6 +38,12 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
 
     setup_fixmap_mappings();
 
+    device_tree_flattened = early_fdt_map(dtb_addr);
+    if ( !device_tree_flattened )
+        panic("Invalid device tree blob at physical address %#lx. The DTB must be 8-byte aligned and must not exceed %lld bytes in size.\n\n"
+              "Please check your bootloader.\n",
+              dtb_addr, BOOT_FDT_VIRT_SIZE);
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 11:22:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 11:22:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808012.1219813 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svaxA-0006bx-0x; Tue, 01 Oct 2024 11:22:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808012.1219813; Tue, 01 Oct 2024 11:22: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 1svax9-0006ag-Ri; Tue, 01 Oct 2024 11:22:03 +0000
Received: by outflank-mailman (input) for mailman id 808012;
 Tue, 01 Oct 2024 11:22: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=Um4/=Q5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svax8-0006KJ-0W
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 11:22:02 +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 602c978b-7fe7-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 13:22:00 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-539885dd4bcso4419795e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 04:22:00 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53980fcdcd6sm1445087e87.153.2024.10.01.04.21.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 04:21:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 602c978b-7fe7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727781719; x=1728386519; 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=rEDhR/79dEYv5D4TyLlFyLvFsiBEwyjBpV/3OO5dpSU=;
        b=k4PsK7z3CLY8bNcABin6UEQJ6WSU/VT/S4h2xysWzgr2CHWfi3mH2fyiMWnVSqmh3E
         snA65CUk0KVwixd02+K13xC3CxLk8o/zGokGVLaF6qtXRZZWuobUPxpmTBSuDV+GeTHx
         qQN/OnjewWquItcvKWxc4K/jZ7uvPuptP0jaEPyc/ALXDq/QvNy4LOIWyTTBiMsCTJMt
         kZ50rC53flnG6+KNxX6onvCyQ7N4Ts/VYZBSVAmPybJLw+CwTOdUd+sHSISSHvrmKApa
         KNLSjrQNkpk5dMsWnvQeDiiR1v1eyu+ssZH8IX49UAsglZz+zIriorHaIJnRe4VKmC1I
         Wf4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727781719; x=1728386519;
        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=rEDhR/79dEYv5D4TyLlFyLvFsiBEwyjBpV/3OO5dpSU=;
        b=ZoChhJ6qXH4vbovpA0xs4IPtE5DTuKI91iWgkk2HY+zRKQW/zgPM8MQhrh7tToK4kM
         akaKxFEUjcwOjkUO91+FOZr0C7ueChlq8O134gxpjmlicW8p4/olrH0Sry/9nv2J1cNT
         IyZ1kvbILpxz7330vo7GS3VBWvidx/uoqTdTWUfAc8SzqLlWSry4gVG4mCyWVLysz06c
         Z2D/bq5ySkUw1Gg96wIUWcCj4V4lFODf1YlCXGGV5V5kHJ1SgUmWAbC2DDWv5HPqaHpk
         6XvpDFfIxh3ema5dJrHlhux+8xSzPOjzPzKk1hyzwG2wUbCwqOZH7GDS5sA+X0186STh
         CAmw==
X-Gm-Message-State: AOJu0Yz+ykHQHwiF74eZo7u4WrPFxYvUxpTBD4Y2jHwpWZ3fOIXIMX5f
	E6tARUbSH/O+pJH6myI2tQVgBSpOPVc/AWQyOMw3BUnoX+SW/tTkIh+v9A==
X-Google-Smtp-Source: AGHT+IF5oYkm6kQutY7dZnu3s/V97yqwlb1ymdYtJ2tGqcu6FzgRWFayCNvxKBycOmEJCNHwFQbEiA==
X-Received: by 2002:a05:6512:6c2:b0:52f:1ef:bafe with SMTP id 2adb3069b0e04-5389fc3dc56mr8023263e87.22.1727781718743;
        Tue, 01 Oct 2024 04:21:58 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v9 1/2] xen/riscv: page table handling
Date: Tue,  1 Oct 2024 13:21:21 +0200
Message-ID: <55244e67032d3a8f6064aeccff44ebb0138cafaf.1727781468.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <cover.1727781468.git.oleksii.kurochko@gmail.com>
References: <cover.1727781468.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Implement map_pages_to_xen() which requires several
functions to manage page tables and entries:
- pt_update()
- pt_mapping_level()
- pt_update_entry()
- pt_next_level()
- pt_check_entry()

To support these operations, add functions for creating,
mapping, and unmapping Xen tables:
- create_table()
- map_table()
- unmap_table()

Introduce PTE_SMALL to indicate that 4KB mapping is needed
and PTE_POPULATE.

In addition introduce flush_tlb_range_va() for TLB flushing across
CPUs after updating the PTE for the requested mapping.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V9:
 - fix indentation alignment for dprintk() in pt_check_entry().
 - update the stale comment ( add explanation for XEN_TABLE_MAP_NOMEM and
   XEN_TABLE_MAP_NONE )
 - change return type to bool for create_table() so it returns false when
   allocation is falied; otherwise - true.
---
Changes in V8:
 - drop PTE_LEAF_MASK.
 - update the comment above pte_is_table(): drop table number and use
   just "the encoding of the permission bits".
 - declare pte_is_table() as static.
 - drop const from the argument of pte_is_table
 - drop the "const" comment before the argument of pte_is_mapping().
 - update the comment above ASSERT() in pte_is_mapping() to : See pte_is_table().
 - drop "const" from the return type of get_root_page().
 - update the comment above "pt_check_entry()".
 - start the comment with capital letter.
 - update the way how PTE_ACCESS_MASK bits are cleared before being updated by
   the value in flags.
 - use dprintk() instead of printk() in riscv/pt.c
 - introduce XEN_TABLE_MAP_NONE and XEN_TABLE_MAP_NOMEM instead of XEN_TABLE_MAP_FAILED
   and correspondingly update part of the code of pt_next_level()'s return value
   handling in pt_update_entry.
 - update type of virt to vaddr_t for pt_update_entry()
---
Changes in V7:
 - rename PTE_XWV_BITS to PTE_LEAF_MASK.
 - drop PTE_XWV_MASK, PTE_RWX_MASK.
 - introduce PTE_ACCESS_MASK.
 - update the ASSERT and the comment about it in pte_is_mapping().
 - add the same ASSERT as in pte_is_mapping() to pte_is_table().
 - update the comment above pte_is_table().
 - use PTE_ACCESS_MASK inside pte_is_{table,mapping} instead of encoding
   access bit explicitly.
 - define SATP_PPN_MASK using SATP{32,64}_PPN.
 - drop inclusion of #include <xen/mm-frame.h> in riscv/pt.c as xen/mm.h is
   included.
 - use pfn_to_paddr() in get_root_page() instead of open-coding of pfn_to_paddr().
 - update if the comment and the if (...) in pt_update_entry() above the check
   in case of pt_next_level() returns XEN_TABLE_MAP_FAILED.
 - update the the comment above pt_update(): drop unecessary mentioning of INVALID_MFN
   and blanks inside parentheses.
 - drop "full stops" in printk().
 - correct the condition in ASSERT() in map_pages_to_xen().
 - clear permission bits before updating the permissions in pt_update_entry().
---
Changes in V6:
 - update the commit message.
 - correct the comment above flush_tlb_range_va().
 - add PTE_READABLE to the check of pte.rwx permissions in
   pte_is_mapping().
 - s/printk/dprintk in pt_check_entry().
 - drop unnecessary ASSERTS() in pt_check_entry().
 - drop checking of PTE_VALID flags in /* Sanity check when removing
   a mapping */ because of the earlier check.
 - drop ASSERT(flags & PTE_POPULATE) in /* Sanity check when populating the page-table */
   section as in the earlier if it is checked.
 - pt_next_level() changes:
   - invert if ( alloc_tbl ) condition.
   - drop local variable ret.
 - pt_update_entry() changes:
   - invert definition of alloc_tbl.
   - update the comment inside "if ( rc == XEN_TABLE_MAP_FAILED )".
   - drop else for mentioned above if (...).
   - clear some PTE flags before update.
 - s/xen_pt_lock/pt_lock
 - use PFN_DOWN() for vfn variable definition in pt_update().
 - drop definition of PTE_{R,W,X}_MASK.
 - introduce PTE_XWV_BITS and PTE_XWV_MASK() for convenience and use them in if (...)
   in pt_update().
 - update the comment above pt_update().
 - change memset(&pte, 0x00, sizeof(pte)) to pte.pte = 0.
 - add the comment above pte_is_table().
 - add ASSERT in pte_is_mapping() to check the cases which are reserved for future
   use.
---
Changes in V5:
 - s/xen_{un}map/{un}map
 - introduce PTE_SMALL instead of PTE_BLOCK.
 - update the comment above defintion of PTE_4K_PAGES.
 - code style fixes.
 - s/RV_STAGE1_MODE > SATP_MODE_SV48/RV_STAGE1_MODE > SATP_MODE_SV39 around
   DECLARE_OFFSETS macros.
 - change type of root_maddr from unsgined long to maddr_t.
 - drop duplicated check ( if (rc) break ) in pt_update() inside while cycle.
 - s/1U/1UL
 - put 'spin_unlock(&xen_pt_lock);' ahead of TLB flush in pt_update().
 - update the commit message.
 - update the comment above ASSERT() in map_pages_to_xen() and also update
   the check within ASSERT() to check that flags has PTE_VALID bit set.
 - update the comment above pt_update() function.
 - add the comment inside pt_check_entry().
 - update the TLB flushing region in pt_update().
 - s/alloc_only/alloc_tbl
---
Changes in V4:
 - update the commit message.
 - drop xen_ prefix for functions: xen_pt_update(), xen_pt_mapping_level(),
   xen_pt_update_entry(), xen_pt_next_level(), xen_pt_check_entry().
 - drop 'select GENERIC_PT' for CONFIG_RISCV. There is no GENERIC_PT anymore.
 - update implementation of flush_xen_tlb_range_va and s/flush_xen_tlb_range_va/flush_tlb_range_va
 - s/pte_get_mfn/mfn_from_pte. Others similar definitions I decided not to touch as
   they were introduced before and this patter of naming such type of macros will be applied
   for newly introduced macros.
 - drop _PAGE_* definitions and use analogues of PTE_*.
 - introduce PTE_{W,X,R}_MASK and drop PAGE_{XN,W,X}_MASK. Also drop _PAGE_{*}_BIT
 - introduce PAGE_HYPERVISOR_RX.
 - drop unused now l3_table_offset.
 - drop struct pt_t as it was used only for one function. If it will be needed in the future
   pt_t will be re-introduced.
 - code styles fixes in pte_is_table(). drop level argument from t.
 - update implementation and prototype of pte_is_mapping().
 - drop level argument from pt_next_level().
 - introduce definition of SATP_PPN_MASK.
 - isolate PPN of CSR_SATP before shift by PAGE_SHIFT.
 - drop set_permission() functions as it is not used more then once.
 - update prototype of pt_check_entry(): drop level argument as it is not used.
 - pt_check_entry():
   - code style fixes
   - update the sanity check when modifying an entry
   - update the sanity check when when removing a mapping.
 - s/read_only/alloc_only.
 - code style fixes for pt_next_level().
 - pt_update_entry() changes:
   - drop arch_level variable inisde pt_update_entry()
   - drop convertion near virt to paddr_t in DECLARE_OFFSETS(offsets, virt);
   - pull out "goto out inside first 'for' cycle.
   - drop braces for 'if' cases which has only one line.
   - ident 'out' label with one blank.
   - update the comment above alloc_only and also definition to take into
     account  that if pte population was requested or not.
   - drop target variable and rename arch_target argument of the function to
     target.
 - pt_mapping_level() changes:
   - move the check if PTE_BLOCK should be mapped on the top of the function.
   - change int i to unsigned int and update 'for' cycle correspondingly.
 - update prototye of pt_update():
   - drop the comment  above nr_mfns and drop const to be consistent with other
     arguments.
   - always flush TLB at the end of the function as non-present entries can be put
     in the TLB.
   - add fence before TLB flush to ensure that PTEs are all updated before flushing.
 - s/XEN_TABLE_NORMAL_PAGE/XEN_TABLE_NORMAL
 - add a check in map_pages_to_xen() the mfn is not INVALID_MFN.
 - add the comment on top of pt_update() how mfn = INVALID_MFN is considered.
 - s/_PAGE_BLOCK/PTE_BLOCK.
 - add the comment with additional explanation for PTE_BLOCK.
 - drop defintion of FIRST_SIZE as it isn't used.
---
Changes in V3:
 - new patch. ( Technically it is reworked version of the generic approach
   which I tried to suggest in the previous version )
---
 xen/arch/riscv/Makefile                     |   1 +
 xen/arch/riscv/include/asm/flushtlb.h       |   9 +
 xen/arch/riscv/include/asm/mm.h             |   2 +
 xen/arch/riscv/include/asm/page.h           |  80 ++++
 xen/arch/riscv/include/asm/riscv_encoding.h |   2 +
 xen/arch/riscv/mm.c                         |   9 -
 xen/arch/riscv/pt.c                         | 421 ++++++++++++++++++++
 7 files changed, 515 insertions(+), 9 deletions(-)
 create mode 100644 xen/arch/riscv/pt.c

diff --git a/xen/arch/riscv/Makefile b/xen/arch/riscv/Makefile
index 6832549133..a5eb2aed4b 100644
--- a/xen/arch/riscv/Makefile
+++ b/xen/arch/riscv/Makefile
@@ -1,6 +1,7 @@
 obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
 obj-y += entry.o
 obj-y += mm.o
+obj-y += pt.o
 obj-$(CONFIG_RISCV_64) += riscv64/
 obj-y += sbi.o
 obj-y += setup.o
diff --git a/xen/arch/riscv/include/asm/flushtlb.h b/xen/arch/riscv/include/asm/flushtlb.h
index f4a735fd6c..43214f5e95 100644
--- a/xen/arch/riscv/include/asm/flushtlb.h
+++ b/xen/arch/riscv/include/asm/flushtlb.h
@@ -5,12 +5,21 @@
 #include <xen/bug.h>
 #include <xen/cpumask.h>
 
+#include <asm/sbi.h>
+
 /* Flush TLB of local processor for address va. */
 static inline void flush_tlb_one_local(vaddr_t va)
 {
     asm volatile ( "sfence.vma %0" :: "r" (va) : "memory" );
 }
 
+/* Flush a range of VA's hypervisor mappings from the TLB of all processors. */
+static inline void flush_tlb_range_va(vaddr_t va, size_t size)
+{
+    BUG_ON(!sbi_has_rfence());
+    sbi_remote_sfence_vma(NULL, va, size);
+}
+
 /*
  * Filter the given set of CPUs, removing those that definitely flushed their
  * TLB since @page_timestamp.
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index a0bdc2bc3a..ce1557bb27 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -42,6 +42,8 @@ static inline void *maddr_to_virt(paddr_t ma)
 #define virt_to_mfn(va)     __virt_to_mfn(va)
 #define mfn_to_virt(mfn)    __mfn_to_virt(mfn)
 
+#define mfn_from_pte(pte) maddr_to_mfn(pte_to_paddr(pte))
+
 struct page_info
 {
     /* Each frame can be threaded onto a doubly-linked list. */
diff --git a/xen/arch/riscv/include/asm/page.h b/xen/arch/riscv/include/asm/page.h
index eb79cb9409..89fa290697 100644
--- a/xen/arch/riscv/include/asm/page.h
+++ b/xen/arch/riscv/include/asm/page.h
@@ -21,6 +21,11 @@
 #define XEN_PT_LEVEL_MAP_MASK(lvl)  (~(XEN_PT_LEVEL_SIZE(lvl) - 1))
 #define XEN_PT_LEVEL_MASK(lvl)      (VPN_MASK << XEN_PT_LEVEL_SHIFT(lvl))
 
+/*
+ * PTE format:
+ * | XLEN-1  10 | 9             8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
+ *       PFN      reserved for SW   D   A   G   U   X   W   R   V
+ */
 #define PTE_VALID                   BIT(0, UL)
 #define PTE_READABLE                BIT(1, UL)
 #define PTE_WRITABLE                BIT(2, UL)
@@ -34,15 +39,49 @@
 #define PTE_LEAF_DEFAULT            (PTE_VALID | PTE_READABLE | PTE_WRITABLE)
 #define PTE_TABLE                   (PTE_VALID)
 
+#define PAGE_HYPERVISOR_RO          (PTE_VALID | PTE_READABLE)
 #define PAGE_HYPERVISOR_RW          (PTE_VALID | PTE_READABLE | PTE_WRITABLE)
+#define PAGE_HYPERVISOR_RX          (PTE_VALID | PTE_READABLE | PTE_EXECUTABLE)
 
 #define PAGE_HYPERVISOR             PAGE_HYPERVISOR_RW
 
+/*
+ * The PTE format does not contain the following bits within itself;
+ * they are created artificially to inform the Xen page table
+ * handling algorithm. These bits should not be explicitly written
+ * to the PTE entry.
+ */
+#define PTE_SMALL       BIT(10, UL)
+#define PTE_POPULATE    BIT(11, UL)
+
+#define PTE_ACCESS_MASK (PTE_READABLE | PTE_WRITABLE | PTE_EXECUTABLE)
+
 /* Calculate the offsets into the pagetables for a given VA */
 #define pt_linear_offset(lvl, va)   ((va) >> XEN_PT_LEVEL_SHIFT(lvl))
 
 #define pt_index(lvl, va) (pt_linear_offset((lvl), (va)) & VPN_MASK)
 
+#define PAGETABLE_ORDER_MASK ((_AC(1, U) << PAGETABLE_ORDER) - 1)
+#define TABLE_OFFSET(offs) (_AT(unsigned int, offs) & PAGETABLE_ORDER_MASK)
+
+#if RV_STAGE1_MODE > SATP_MODE_SV39
+#error "need to to update DECLARE_OFFSETS macros"
+#else
+
+#define l0_table_offset(va) TABLE_OFFSET(pt_linear_offset(0, va))
+#define l1_table_offset(va) TABLE_OFFSET(pt_linear_offset(1, va))
+#define l2_table_offset(va) TABLE_OFFSET(pt_linear_offset(2, va))
+
+/* Generate an array @var containing the offset for each level from @addr */
+#define DECLARE_OFFSETS(var, addr)          \
+    const unsigned int var[] = {            \
+        l0_table_offset(addr),              \
+        l1_table_offset(addr),              \
+        l2_table_offset(addr),              \
+    }
+
+#endif
+
 /* Page Table entry */
 typedef struct {
 #ifdef CONFIG_RISCV_64
@@ -68,6 +107,47 @@ static inline bool pte_is_valid(pte_t p)
     return p.pte & PTE_VALID;
 }
 
+/*
+ * From the RISC-V spec:
+ *   The V bit indicates whether the PTE is valid; if it is 0, all other bits
+ *   in the PTE are don’t-cares and may be used freely by software.
+ *
+ *   If V=1 the encoding of PTE R/W/X bits could be find in "the encoding
+ *   of the permission bits" table.
+ *
+ *   The encoding of the permission bits table:
+ *      X W R Meaning
+ *      0 0 0 Pointer to next level of page table.
+ *      0 0 1 Read-only page.
+ *      0 1 0 Reserved for future use.
+ *      0 1 1 Read-write page.
+ *      1 0 0 Execute-only page.
+ *      1 0 1 Read-execute page.
+ *      1 1 0 Reserved for future use.
+ *      1 1 1 Read-write-execute page.
+ */
+static inline bool pte_is_table(pte_t p)
+{
+    /*
+     * According to the spec if V=1 and W=1 then R also needs to be 1 as
+     * R = 0 is reserved for future use ( look at the Table 4.5 ) so check
+     * in ASSERT that if (V==1 && W==1) then R isn't 0.
+     *
+     * PAGE_HYPERVISOR_RW contains PTE_VALID too.
+     */
+    ASSERT(((p.pte & PAGE_HYPERVISOR_RW) != (PTE_VALID | PTE_WRITABLE)));
+
+    return ((p.pte & (PTE_VALID | PTE_ACCESS_MASK)) == PTE_VALID);
+}
+
+static inline bool pte_is_mapping(pte_t p)
+{
+    /* See pte_is_table() */
+    ASSERT(((p.pte & PAGE_HYPERVISOR_RW) != (PTE_VALID | PTE_WRITABLE)));
+
+    return (p.pte & PTE_VALID) && (p.pte & PTE_ACCESS_MASK);
+}
+
 static inline void invalidate_icache(void)
 {
     BUG_ON("unimplemented");
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index 58abe5eccc..e31e94e77e 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -164,6 +164,7 @@
 #define SSTATUS_SD			SSTATUS64_SD
 #define SATP_MODE			SATP64_MODE
 #define SATP_MODE_SHIFT			SATP64_MODE_SHIFT
+#define SATP_PPN_MASK			SATP64_PPN
 
 #define HGATP_PPN			HGATP64_PPN
 #define HGATP_VMID_SHIFT		HGATP64_VMID_SHIFT
@@ -174,6 +175,7 @@
 #define SSTATUS_SD			SSTATUS32_SD
 #define SATP_MODE			SATP32_MODE
 #define SATP_MODE_SHIFT			SATP32_MODE_SHIFT
+#define SATP_PPN_MASK			SATP32_PPN
 
 #define HGATP_PPN			HGATP32_PPN
 #define HGATP_VMID_SHIFT		HGATP32_VMID_SHIFT
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index b8ff91cf4e..e8430def14 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -369,12 +369,3 @@ int destroy_xen_mappings(unsigned long s, unsigned long e)
     BUG_ON("unimplemented");
     return -1;
 }
-
-int map_pages_to_xen(unsigned long virt,
-                     mfn_t mfn,
-                     unsigned long nr_mfns,
-                     unsigned int flags)
-{
-    BUG_ON("unimplemented");
-    return -1;
-}
diff --git a/xen/arch/riscv/pt.c b/xen/arch/riscv/pt.c
new file mode 100644
index 0000000000..cc5e2d3266
--- /dev/null
+++ b/xen/arch/riscv/pt.c
@@ -0,0 +1,421 @@
+#include <xen/bug.h>
+#include <xen/domain_page.h>
+#include <xen/errno.h>
+#include <xen/lib.h>
+#include <xen/mm.h>
+#include <xen/pfn.h>
+#include <xen/pmap.h>
+#include <xen/spinlock.h>
+
+#include <asm/flushtlb.h>
+#include <asm/page.h>
+
+static inline mfn_t get_root_page(void)
+{
+    paddr_t root_maddr = pfn_to_paddr(csr_read(CSR_SATP) & SATP_PPN_MASK);
+
+    return maddr_to_mfn(root_maddr);
+}
+
+/*
+ * Sanity check a page table entry about to be updated as per an (MFN,flags)
+ * tuple.
+ * See the comment about the possible combination of (mfn, flags) in
+ * the comment above pt_update().
+ */
+static bool pt_check_entry(pte_t entry, mfn_t mfn, unsigned int flags)
+{
+    /* Sanity check when modifying an entry. */
+    if ( (flags & PTE_VALID) && mfn_eq(mfn, INVALID_MFN) )
+    {
+        /* We don't allow modifying an invalid entry. */
+        if ( !pte_is_valid(entry) )
+        {
+            dprintk(XENLOG_ERR, "Modifying invalid entry is not allowed\n");
+            return false;
+        }
+
+        /* We don't allow modifying a table entry */
+        if ( pte_is_table(entry) )
+        {
+            dprintk(XENLOG_ERR, "Modifying a table entry is not allowed\n");
+            return false;
+        }
+    }
+    /* Sanity check when inserting a mapping */
+    else if ( flags & PTE_VALID )
+    {
+        /*
+         * We don't allow replacing any valid entry.
+         *
+         * Note that the function pt_update() relies on this
+         * assumption and will skip the TLB flush (when Svvptc
+         * extension will be ratified). The function will need
+         * to be updated if the check is relaxed.
+         */
+        if ( pte_is_valid(entry) )
+        {
+            if ( pte_is_mapping(entry) )
+                dprintk(XENLOG_ERR, "Changing MFN for valid PTE is not allowed (%#"PRI_mfn" -> %#"PRI_mfn")\n",
+                        mfn_x(mfn_from_pte(entry)), mfn_x(mfn));
+            else
+                dprintk(XENLOG_ERR, "Trying to replace table with mapping\n");
+            return false;
+        }
+    }
+    /* Sanity check when removing a mapping. */
+    else if ( !(flags & PTE_POPULATE) )
+    {
+        /* We should be here with an invalid MFN. */
+        ASSERT(mfn_eq(mfn, INVALID_MFN));
+
+        /* We don't allow removing a table */
+        if ( pte_is_table(entry) )
+        {
+            dprintk(XENLOG_ERR, "Removing a table is not allowed\n");
+            return false;
+        }
+    }
+    /* Sanity check when populating the page-table. No check so far. */
+    else
+    {
+        /* We should be here with an invalid MFN */
+        ASSERT(mfn_eq(mfn, INVALID_MFN));
+    }
+
+    return true;
+}
+
+static pte_t *map_table(mfn_t mfn)
+{
+    /*
+     * During early boot, map_domain_page() may be unusable. Use the
+     * PMAP to map temporarily a page-table.
+     */
+    if ( system_state == SYS_STATE_early_boot )
+        return pmap_map(mfn);
+
+    return map_domain_page(mfn);
+}
+
+static void unmap_table(const pte_t *table)
+{
+    /*
+     * During early boot, map_table() will not use map_domain_page()
+     * but the PMAP.
+     */
+    if ( system_state == SYS_STATE_early_boot )
+        pmap_unmap(table);
+    else
+        unmap_domain_page(table);
+}
+
+static bool create_table(pte_t *entry)
+{
+    mfn_t mfn;
+    void *p;
+    pte_t pte;
+
+    if ( system_state != SYS_STATE_early_boot )
+    {
+        struct page_info *pg = alloc_domheap_page(NULL, 0);
+
+        if ( pg == NULL )
+            return false;
+
+        mfn = page_to_mfn(pg);
+    }
+    else
+        mfn = alloc_boot_pages(1, 1);
+
+    p = map_table(mfn);
+    clear_page(p);
+    unmap_table(p);
+
+    pte = pte_from_mfn(mfn, PTE_TABLE);
+    write_pte(entry, pte);
+
+    return true;
+}
+
+#define XEN_TABLE_MAP_NONE 0
+#define XEN_TABLE_MAP_NOMEM 1
+#define XEN_TABLE_SUPER_PAGE 2
+#define XEN_TABLE_NORMAL 3
+
+/*
+ * Take the currently mapped table, find the corresponding entry,
+ * and map the next table, if available.
+ *
+ * The alloc_tbl parameters indicates whether intermediate tables should
+ * be allocated when not present.
+ *
+ * Return values:
+ *  XEN_TABLE_MAP_NONE: a table allocation isn't permitted.
+ *  XEN_TABLE_MAP_NOMEM: allocating a new page failed.
+ *  XEN_TABLE_NORMAL: next level or leaf mapped normally.
+ *  XEN_TABLE_SUPER_PAGE: The next entry points to a superpage.
+ */
+static int pt_next_level(bool alloc_tbl, pte_t **table, unsigned int offset)
+{
+    pte_t *entry;
+    mfn_t mfn;
+
+    entry = *table + offset;
+
+    if ( !pte_is_valid(*entry) )
+    {
+        if ( !alloc_tbl )
+            return XEN_TABLE_MAP_NONE;
+
+        if ( !create_table(entry) )
+            return XEN_TABLE_MAP_NOMEM;
+    }
+
+    if ( pte_is_mapping(*entry) )
+        return XEN_TABLE_SUPER_PAGE;
+
+    mfn = mfn_from_pte(*entry);
+
+    unmap_table(*table);
+    *table = map_table(mfn);
+
+    return XEN_TABLE_NORMAL;
+}
+
+/* Update an entry at the level @target. */
+static int pt_update_entry(mfn_t root, vaddr_t virt,
+                           mfn_t mfn, unsigned int target,
+                           unsigned int flags)
+{
+    int rc;
+    unsigned int level = HYP_PT_ROOT_LEVEL;
+    pte_t *table;
+    /*
+     * The intermediate page table shouldn't be allocated when MFN isn't
+     * valid and we are not populating page table.
+     * This means we either modify permissions or remove an entry, or
+     * inserting brand new entry.
+     *
+     * See the comment above pt_update() for an additional explanation about
+     * combinations of (mfn, flags).
+    */
+    bool alloc_tbl = !mfn_eq(mfn, INVALID_MFN) || (flags & PTE_POPULATE);
+    pte_t pte, *entry;
+
+    /* convenience aliases */
+    DECLARE_OFFSETS(offsets, virt);
+
+    table = map_table(root);
+    for ( ; level > target; level-- )
+    {
+        rc = pt_next_level(alloc_tbl, &table, offsets[level]);
+        if ( rc == XEN_TABLE_MAP_NOMEM )
+        {
+            rc = -ENOMEM;
+            goto out;
+        }
+
+        if ( rc == XEN_TABLE_MAP_NONE )
+        {
+            rc = 0;
+            goto out;
+        }
+
+        if ( rc != XEN_TABLE_NORMAL )
+            break;
+    }
+
+    if ( level != target )
+    {
+        dprintk(XENLOG_ERR,
+                "%s: Shattering superpage is not supported\n", __func__);
+        rc = -EOPNOTSUPP;
+        goto out;
+    }
+
+    entry = table + offsets[level];
+
+    rc = -EINVAL;
+    if ( !pt_check_entry(*entry, mfn, flags) )
+        goto out;
+
+    /* We are removing the page */
+    if ( !(flags & PTE_VALID) )
+        /*
+         * There is also a check in pt_check_entry() which check that
+         * mfn=INVALID_MFN
+         */
+        pte.pte = 0;
+    else
+    {
+        /* We are inserting a mapping => Create new pte. */
+        if ( !mfn_eq(mfn, INVALID_MFN) )
+            pte = pte_from_mfn(mfn, PTE_VALID);
+        else /* We are updating the permission => Copy the current pte. */
+        {
+            pte = *entry;
+            pte.pte &= ~PTE_ACCESS_MASK;
+        }
+
+        /* update permission according to the flags */
+        pte.pte |= (flags & PTE_ACCESS_MASK) | PTE_ACCESSED | PTE_DIRTY;
+    }
+
+    write_pte(entry, pte);
+
+    rc = 0;
+
+ out:
+    unmap_table(table);
+
+    return rc;
+}
+
+/* Return the level where mapping should be done */
+static int pt_mapping_level(unsigned long vfn, mfn_t mfn, unsigned long nr,
+                            unsigned int flags)
+{
+    unsigned int level = 0;
+    unsigned long mask;
+    unsigned int i;
+
+    /*
+     * Use a larger mapping than 4K unless the caller specifically requests
+     * 4K mapping
+     */
+    if ( unlikely(flags & PTE_SMALL) )
+        return level;
+
+    /*
+     * Don't take into account the MFN when removing mapping (i.e
+     * MFN_INVALID) to calculate the correct target order.
+     *
+     * `vfn` and `mfn` must be both superpage aligned.
+     * They are or-ed together and then checked against the size of
+     * each level.
+     *
+     * `left` ( variable declared in pt_update() ) is not included
+     * and checked separately to allow superpage mapping even if it
+     * is not properly aligned (the user may have asked to map 2MB + 4k).
+     */
+    mask = !mfn_eq(mfn, INVALID_MFN) ? mfn_x(mfn) : 0;
+    mask |= vfn;
+
+    for ( i = HYP_PT_ROOT_LEVEL; i != 0; i-- )
+    {
+        if ( !(mask & (BIT(XEN_PT_LEVEL_ORDER(i), UL) - 1)) &&
+             (nr >= BIT(XEN_PT_LEVEL_ORDER(i), UL)) )
+        {
+            level = i;
+            break;
+        }
+    }
+
+    return level;
+}
+
+static DEFINE_SPINLOCK(pt_lock);
+
+/*
+ * If `mfn` equals `INVALID_MFN`, it indicates that the following page table
+ * update operation might be related to either:
+ *   - populating the table (PTE_POPULATE will be set additionaly),
+ *   - destroying a mapping (PTE_VALID=0),
+ *   - modifying an existing mapping (PTE_VALID=1).
+ *
+ * If `mfn` != INVALID_MFN and flags has PTE_VALID bit set then it means that
+ * inserting will be done.
+ */
+static int pt_update(vaddr_t virt, mfn_t mfn,
+                     unsigned long nr_mfns, unsigned int flags)
+{
+    int rc = 0;
+    unsigned long vfn = PFN_DOWN(virt);
+    unsigned long left = nr_mfns;
+    const mfn_t root = get_root_page();
+
+    /*
+     * It is bad idea to have mapping both writeable and
+     * executable.
+     * When modifying/creating mapping (i.e PTE_VALID is set),
+     * prevent any update if this happen.
+     */
+    if ( (flags & PTE_VALID) && (flags & PTE_WRITABLE) &&
+         (flags & PTE_EXECUTABLE) )
+    {
+        dprintk(XENLOG_ERR,
+                "Mappings should not be both Writeable and Executable\n");
+        return -EINVAL;
+    }
+
+    if ( !IS_ALIGNED(virt, PAGE_SIZE) )
+    {
+        dprintk(XENLOG_ERR,
+                "The virtual address is not aligned to the page-size\n");
+        return -EINVAL;
+    }
+
+    spin_lock(&pt_lock);
+
+    while ( left )
+    {
+        unsigned int order, level;
+
+        level = pt_mapping_level(vfn, mfn, left, flags);
+        order = XEN_PT_LEVEL_ORDER(level);
+
+        ASSERT(left >= BIT(order, UL));
+
+        rc = pt_update_entry(root, vfn << PAGE_SHIFT, mfn, level, flags);
+        if ( rc )
+            break;
+
+        vfn += 1UL << order;
+        if ( !mfn_eq(mfn, INVALID_MFN) )
+            mfn = mfn_add(mfn, 1UL << order);
+
+        left -= (1UL << order);
+    }
+
+    /* Ensure that PTEs are all updated before flushing */
+    RISCV_FENCE(rw, rw);
+
+    spin_unlock(&pt_lock);
+
+    /*
+     * Always flush TLB at the end of the function as non-present entries
+     * can be put in the TLB.
+     *
+     * The remote fence operation applies to the entire address space if
+     * either:
+     *  - start and size are both 0, or
+     *  - size is equal to 2^XLEN-1.
+     *
+     * TODO: come up with something which will allow not to flash the entire
+     *       address space.
+     */
+    flush_tlb_range_va(0, 0);
+
+    return rc;
+}
+
+int map_pages_to_xen(unsigned long virt,
+                     mfn_t mfn,
+                     unsigned long nr_mfns,
+                     unsigned int flags)
+{
+    /*
+     * Ensure that flags has PTE_VALID bit as map_pages_to_xen() is supposed
+     * to create a mapping.
+     *
+     * Ensure that we have a valid MFN before proceeding.
+     *
+     * If the MFN is invalid, pt_update() might misinterpret the operation,
+     * treating it as either a population, a mapping destruction,
+     * or a mapping modification.
+     */
+    ASSERT(!mfn_eq(mfn, INVALID_MFN) && (flags & PTE_VALID));
+
+    return pt_update(virt, mfn, nr_mfns, flags);
+}
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 11:56:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 11:56:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808037.1219826 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svbU8-00043r-Rm; Tue, 01 Oct 2024 11:56:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808037.1219826; Tue, 01 Oct 2024 11:56: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 1svbU8-00043k-OZ; Tue, 01 Oct 2024 11:56:08 +0000
Received: by outflank-mailman (input) for mailman id 808037;
 Tue, 01 Oct 2024 11:56: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svbU7-00043e-C4
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 11:56:07 +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 22201205-7fec-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 13:56:03 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8d56155f51so695984866b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 04:56:03 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27776fasm716429866b.13.2024.10.01.04.56.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 04:56:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 22201205-7fec-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727783763; x=1728388563; 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=UXICX8vPOUGxDg+RsPLQAK9gx4jRn3grIFvjbXWpwIg=;
        b=T7B5Ng3Pbw7NMWEqQMf7NVW7DgU8Pp204VWAk1V3kseJmihiO2EZxcWuj78i1m/Jeo
         GN2B460AydRteIz6jVxsevkUJmW3q7a/FjuKP24I6UTcQ7dpKho8mKqpoZiRczCmSEAC
         RuwYvJdJ69ajsU+VA2vG9PXDy/Pop8gm8jpQI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727783763; x=1728388563;
        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=UXICX8vPOUGxDg+RsPLQAK9gx4jRn3grIFvjbXWpwIg=;
        b=QTLW6OtYgztRPhvYu+5fpV0MV6rdy39mvVDQbZ9IdpcEbwA1OMNwPWTb6o5eiKylc9
         Kr3aN0Qs+nUN+OYaFzPQHLBIXIkUx1EZ/y7p23oPcVrz7TXeFBExEH0WG5D2hRMjcTLi
         DllRUEH5R5uM/pQYQJn7YcyKVzr1Dwsep/jEjiHd/NeLS88s2UopjpvDXf6iah/thhji
         5vCFMx2EKsJbbE3KxA/v9wJTucEZB/ujCfsbiFaVD2zkC8rQvMbPBXmMPh5dEKWQYQn+
         t1m3VxZs4uFkkXycI188zzFmVrBHp3g+K/SkO2fyMfR/K9ZprdwAXBTZhm8bC3RkXmpO
         DtDg==
X-Forwarded-Encrypted: i=1; AJvYcCXovE7OoY8Yv41ipr3FK8hve9SkSmHUjKvnlcQrekHUc+fR0NMw7XQ4RnONuMM/xEo4JT+j2YwupOY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKwkvH8LGZ8fwjDRd530my+1b3a7wWK8A1h0Gv9DDZ4RAfkyGi
	57wEoJRBXe1jBLpRc8Bwjow1h0LWxeXAu0vHeZ18ynYY0Q2GQdRtiL7cESDFfVg=
X-Google-Smtp-Source: AGHT+IEjnjOCPl54cTwym5nrpi2Fn6xMahfhDrnVITAqN7CwEtxJhB3Xkqj/ct3YB5byuzJ8rJoA6A==
X-Received: by 2002:a17:906:7946:b0:a8a:7897:c043 with SMTP id a640c23a62f3a-a93c4ae12c7mr1800813466b.43.1727783762833;
        Tue, 01 Oct 2024 04:56:02 -0700 (PDT)
Message-ID: <f0ea6ed8-642e-49b7-914d-33e112c3ee10@citrix.com>
Date: Tue, 1 Oct 2024 12:56:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: prefer RDTSCP in rdtsc_ordered()
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cae006a7-c1be-4608-a011-dda1fb4a0312@suse.com>
 <14ab2f50-e58c-4cb4-b976-4cb5ec14d908@citrix.com>
 <90f1dda1-b06e-40e6-be6b-ea99acba875f@suse.com>
 <07699749-f9b6-4d78-874c-ff61d76810dc@citrix.com>
 <a1b772bb-113b-4bb3-b58a-09bda98f5c2b@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <a1b772bb-113b-4bb3-b58a-09bda98f5c2b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01/10/2024 11:02 am, Jan Beulich wrote:
> On 01.10.2024 11:45, Andrew Cooper wrote:
>> On 01/10/2024 9:12 am, Jan Beulich wrote:
>>> On 30.09.2024 18:40, Andrew Cooper wrote:
>>>> On 30/09/2024 4:08 pm, Jan Beulich wrote:
>>>>> --- a/xen/arch/x86/include/asm/msr.h
>>>>> +++ b/xen/arch/x86/include/asm/msr.h
>>>>> @@ -108,18 +108,30 @@ static inline uint64_t rdtsc(void)
>>>>>  
>>>>>  static inline uint64_t rdtsc_ordered(void)
>>>>>  {
>>>>> -	/*
>>>>> -	 * The RDTSC instruction is not ordered relative to memory access.
>>>>> -	 * The Intel SDM and the AMD APM are both vague on this point, but
>>>>> -	 * empirically an RDTSC instruction can be speculatively executed
>>>>> -	 * before prior loads.  An RDTSC immediately after an appropriate
>>>>> -	 * barrier appears to be ordered as a normal load, that is, it
>>>>> -	 * provides the same ordering guarantees as reading from a global
>>>>> -	 * memory location that some other imaginary CPU is updating
>>>>> -	 * continuously with a time stamp.
>>>>> -	 */
>>>>> -	alternative("lfence", "mfence", X86_FEATURE_MFENCE_RDTSC);
>>>>> -	return rdtsc();
>>>>> +    uint64_t low, high, aux;
>>>>> +
>>>>> +    /*
>>>>> +     * The RDTSC instruction is not ordered relative to memory access.
>>>>> +     * The Intel SDM and the AMD APM are both vague on this point, but
>>>>> +     * empirically an RDTSC instruction can be speculatively executed
>>>>> +     * before prior loads.
>>>> This part of the comment is stale now.  For RDTSC, AMD state:
>>>>
>>>> "This instruction is not serializing. Therefore, there is no guarantee
>>>> that all instructions have completed at the time the time-stamp counter
>>>> is read."
>>>>
>>>> and for RDTSCP:
>>>>
>>>> "Unlike the RDTSC instruction, RDTSCP forces all older instructions to
>>>> retire before reading the time-stamp counter."
>>>>
>>>> i.e. it's dispatch serialising, given our new post-Spectre terminology.
>>> I don't read that as truly "dispatch serializing";
>> That is precisely what dispatch serialising is and means.
>>
>> Both LFENCE and RDTSCP wait at dispatch until they're the only
>> instruction in the pipeline.  That is how they get the property of
>> waiting for all older instructions to retire before executing.
>>
>>> both Intel and AMD
>>> leave open whether subsequent insns would also be affected, or whether
>>> those could pass the RDTSCP.
>> Superscalar pipelines which can dispatch more than one uop per cycle can
>> issue LFENCE/RDTSCP concurrently with younger instructions.
>>
>> This is why LFENCE; JMP * was retracted as safe alternative to
>> retpoline, and why the Intel docs call out explicitly that you need
>> LFENCE following the RDTSC(P) if you want it to complete before
>> subsequent instructions start.
> Yet what you describe still only puts in place a relationship between
> RDTSCP and what follows. What I was saying is that there's no guarantee
> that insns following RDTSCP can't actually execute not only in parallel
> with RDTSCP, but also in parallel with / ahead of earlier insns.

I think you're reading too much into the fact that these passages aren't
identical.

They were written years apart, most likely by different authors.

>  Aiui
> LFENCE makes this guarantee. IOW in
>
> 	ADD ...; LFENCE; SUB ...
>
> the SUB is guaranteed to dispatch only after the ADD, 

The guarantee made is that ADD has retired before LFENCE executes.

SDM: "Specifically, LFENCE does not execute until all prior instructions
have completed locally, and no later instruction begins execution until
LFENCE completes."

"completed locally" == "retired".

The APM doesn't have a description of "dispatch serialising" attached to
LFENCE.  However, the Managing Speculation whitepaper does state:

"Set an MSR in the processor so that LFENCE is a dispatch serializing
instruction and then use LFENCE in code streams to serialize dispatch
(LFENCE is faster than RDTSCP which is also dispatch serializing)."

which also doesn't define dispatch serialising, but does make the
statement which started this debate.

That said, the LFENCE_DISPATCH chicken really was AMD's "behave like
Intel" bit.

> whereas in
>
> 	ADD ...; RDTSCP; SUB ...
>
> there doesn't appear to be such a guarantee; the only guarantee here is
> for RDTSCP to dispatch after the ADD.

SDM: "The RDTSCP instruction is not a serializing instruction, but it
does wait until all previous instructions have executed and all previous
loads are globally visible."

APM: "RDTSCP forces all older instructions to retire before reading the
timestamp counter."

Both have an explicit written guarantee that the ADD retires before
RDTSCP starts.


The thing which neither manual states, probably because the authors
thought it was too obvious to mention, is that dispatch is always in
(predicted) program order.  Consider the implications on dependency
tracking if the CPUs were to dispatch uops out of program order.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:13:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:13:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808051.1219837 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svbk9-0007Ka-98; Tue, 01 Oct 2024 12:12:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808051.1219837; Tue, 01 Oct 2024 12:12: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 1svbk9-0007KT-6Y; Tue, 01 Oct 2024 12:12:41 +0000
Received: by outflank-mailman (input) for mailman id 808051;
 Tue, 01 Oct 2024 12:12: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 1svbk7-0007KJ-G2; Tue, 01 Oct 2024 12:12: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 1svbk7-0001mz-8v; Tue, 01 Oct 2024 12:12: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 1svbk6-0004ne-S8; Tue, 01 Oct 2024 12:12:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svbk6-000382-Rk; Tue, 01 Oct 2024 12:12: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=HsfXi+OoEWmQYkYvGYpmRPU8QAI9jox9ifTqxyxEFwQ=; b=XBl88XbnRyzqbkXVyJNhCTcqxr
	W6dKwvF5mzCrs9yovzHJZqOP8f+/4xap+uI5fLoVJMfjX3JOqlqAEcF2iyxBCUJ4tUy66jCXWRaVy
	uWaD4vI3WHEPu6Nk5QYyBURWK61TKkHZGN2WalOr4d7aIf7raDE6iw7NGuhVRoPnfUbM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187918-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187918: 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=66878a8b7566e9a98d20b69ab95ddaffe1130683
X-Osstest-Versions-That:
    xen=94423b8f75bd786043f8e9bb2809675007225329
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 01 Oct 2024 12:12:38 +0000

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

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                  66878a8b7566e9a98d20b69ab95ddaffe1130683
baseline version:
 xen                  94423b8f75bd786043f8e9bb2809675007225329

Last test of basis   187910  2024-09-30 17:04:05 Z    0 days
Testing same since   187918  2024-10-01 08:04:04 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alejandro Vallejo <alejandro.vallejo@cloud.com>
  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
   94423b8f75..66878a8b75  66878a8b7566e9a98d20b69ab95ddaffe1130683 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:24:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:24:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808059.1219846 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svbvp-0000kv-AA; Tue, 01 Oct 2024 12:24:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808059.1219846; Tue, 01 Oct 2024 12: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 1svbvp-0000ko-7R; Tue, 01 Oct 2024 12:24:45 +0000
Received: by outflank-mailman (input) for mailman id 808059;
 Tue, 01 Oct 2024 12: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svbvo-0000ki-ER
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:24:44 +0000
Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com
 [2a00:1450:4864:20::642])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 22a4f42b-7ff0-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:24:42 +0200 (CEST)
Received: by mail-ej1-x642.google.com with SMTP id
 a640c23a62f3a-a93c1cc74fdso830994566b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:24:42 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27c70fesm700089266b.57.2024.10.01.05.24.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:24:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 22a4f42b-7ff0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727785481; x=1728390281; 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=qHkm+gTmN+S5hP1Q9mE4edudlBV+IDvZ/Wxl24devZo=;
        b=ugbyEaEGFXDTnyR8o+7bO1koejkUPi1y6jVcxTF7fHmUgfYIC3MsSJR3u2qjqlESnf
         R8IFNMxla3Byb70AGDjfUO+pVQZJ7mxWLyDW511zcL5urh4TpJ/qzay6Wf6URpwgjngs
         8MjZlGeQhBF/2dQ4EARrkLdwrXroTRWkoauLs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727785481; x=1728390281;
        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=qHkm+gTmN+S5hP1Q9mE4edudlBV+IDvZ/Wxl24devZo=;
        b=FmRK7QVnSswq0mY51VAYV51GrqzAHgxE2PzMT+kzDUYqFbQNE66OwDxMt3WmvpAj7m
         wb0ZWom7gUKO1WWEVi1CS0L93PduuoxpdYZH04+hkHDWOyUddvgfLYvrEUozphcQ9n9y
         KIj5MddKcnjyPt5s2UFZpF4pzM7za4yTmlHDWjxHcZDBrgdF1izkmzR+UiBnRc+CHIkc
         bt8ju6butepMMEvX7MXtTdJB41b/JA4yqQ6XZZW0bK087utx/ybs/wyo7NO8GnqCf1uU
         T/cCp/HEAfSNfae5Pr1v04rUHU1/6YWohexeCXSkFCNjIx/6v5usmwLpUQDb9FDziF5o
         WeLg==
X-Gm-Message-State: AOJu0Yw2CeZLPH57fLpjz4DwNP7BscyLBbKsd0vA/vUIdd5+gIW2OyDg
	OM1oE9+vl+wI5++G1e973xsKoOG/8jK2LvFZlrC974RAud34VZ0jNe5Px4M2OHo2QJQYq+BFvmk
	Tf3QFnA==
X-Google-Smtp-Source: AGHT+IFXb+nZshPjMeWW4itYiYhIxAwo6/5FdstYB+n+kXcxh8r2whiBxQZfHzyKz+GNVCW6/W4dzw==
X-Received: by 2002:a17:907:7e8c:b0:a8d:2ab2:c9a0 with SMTP id a640c23a62f3a-a93c4aae066mr1531904366b.53.1727785481370;
        Tue, 01 Oct 2024 05:24:41 -0700 (PDT)
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>
Subject: [PATCH 3/2] x86/pv: Rename pv.iobmp_limit to iobmp_nr and clarify behaviour
Date: Tue,  1 Oct 2024 13:24:38 +0100
Message-Id: <20241001122438.1454218-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Ever since it's introduction in commit 013351bd7ab3 ("Define new event-channel
and physdev hypercalls"), the public interface was named nr_ports while the
internal field was called iobmp_limit.

Rename the intenral field to iobmp_nr to match the public interface, and
clarify that, when nonzero, Xen will read 2 bytes.

There isn't a perfect parallel with a real TSS, but iobmp_nr being 0 is the
paravirt "no IOPB" case, and it is important that no read occurs in this case.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/include/asm/domain.h | 2 +-
 xen/arch/x86/physdev.c            | 2 +-
 xen/arch/x86/pv/emul-priv-op.c    | 7 ++++++-
 xen/include/public/physdev.h      | 3 +++
 4 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 811251852f79..bdcdb8de09f1 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -573,7 +573,7 @@ struct pv_vcpu
 
     /* I/O-port access bitmap. */
     XEN_GUEST_HANDLE(uint8) iobmp; /* Guest kernel vaddr of the bitmap. */
-    unsigned int iobmp_limit; /* Number of ports represented in the bitmap. */
+    unsigned int iobmp_nr;    /* Number of ports represented in the bitmap. */
 #define IOPL(val) MASK_INSR(val, X86_EFLAGS_IOPL)
     unsigned int iopl;        /* Current IOPL for this VCPU, shifted left by
                                * 12 to match the eflags register. */
diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
index d6dd622952a9..69fd42667c69 100644
--- a/xen/arch/x86/physdev.c
+++ b/xen/arch/x86/physdev.c
@@ -436,7 +436,7 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 #else
         guest_from_compat_handle(curr->arch.pv.iobmp, set_iobitmap.bitmap);
 #endif
-        curr->arch.pv.iobmp_limit = set_iobitmap.nr_ports;
+        curr->arch.pv.iobmp_nr = set_iobitmap.nr_ports;
         break;
     }
 
diff --git a/xen/arch/x86/pv/emul-priv-op.c b/xen/arch/x86/pv/emul-priv-op.c
index e35285d4ab69..cefa38d56138 100644
--- a/xen/arch/x86/pv/emul-priv-op.c
+++ b/xen/arch/x86/pv/emul-priv-op.c
@@ -167,7 +167,12 @@ static int guest_io_okay(unsigned int port, unsigned int bytes,
     if ( iopl_ok(v, regs) )
         return X86EMUL_OKAY;
 
-    if ( (port + bytes) <= v->arch.pv.iobmp_limit )
+    /*
+     * When @iobmp_nr is non-zero, Xen, like real CPUs and the TSS IOPB,
+     * always reads 2 bytes from @iobmp, which might be one byte beyond
+     * @nr_ports.
+     */
+    if ( (port + bytes) <= v->arch.pv.iobmp_nr )
     {
         const void *__user addr = v->arch.pv.iobmp.p + (port >> 3);
         uint16_t mask;
diff --git a/xen/include/public/physdev.h b/xen/include/public/physdev.h
index 45e1c18541c8..3149049a9a57 100644
--- a/xen/include/public/physdev.h
+++ b/xen/include/public/physdev.h
@@ -87,6 +87,9 @@ DEFINE_XEN_GUEST_HANDLE(physdev_set_iopl_t);
 /*
  * Set the current VCPU's I/O-port permissions bitmap.
  * @arg == pointer to physdev_set_iobitmap structure.
+ *
+ * When @nr_ports is non-zero, Xen, like real CPUs and the TSS IOPB, always
+ * reads 2 bytes from @bitmap, which might be one byte beyond @nr_ports.
  */
 #define PHYSDEVOP_set_iobitmap           7
 struct physdev_set_iobitmap {
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808068.1219871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9E-0003Dh-31; Tue, 01 Oct 2024 12:38:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808068.1219871; Tue, 01 Oct 2024 12: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 1svc9D-0003Co-Ub; Tue, 01 Oct 2024 12:38:35 +0000
Received: by outflank-mailman (input) for mailman id 808068;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9C-0002vk-DU
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:34 +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 11da5997-7ff2-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 14:38:33 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c88c9e45c2so4808893a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:33 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 11da5997-7ff2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786312; x=1728391112; 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=D90t4YTJEGwdBnk8XSsABj6XnnDwF6CKUln1kNou/II=;
        b=hVDnUuSiS1c4cthZvqqIznEOGXf4QGMTY1zw0NpGLEoHXax0shQYClQHCVrU1TGV8S
         l0aOAXh7Ou/LAjUh7kDpyilFBiDUL4glmqK4A50SJK4m5hQ/ytpGYuue4dUGC9wJfYag
         S55jIESnsQMb/7wygt9dvlAOlVvhrPckST42I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786312; x=1728391112;
        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=D90t4YTJEGwdBnk8XSsABj6XnnDwF6CKUln1kNou/II=;
        b=pOPbnOq9VD+x90NdGlkyDTKTX2Ss71MKoew+0bVCdiF1GJ2xmQWTpcnGOtv7E6zWF3
         1eBx8qJSWLJmAroSY8wcRmxItkCd3sB4l+ZezlucaAdKAJHYbifnU9yrDCqCNsGEHbkH
         yDyGacHVvggbH5XR71syS2pQiv0njE0WSbXkWlGUadyZ3V+ydmcclWUpZ6ezDTWgq24I
         3I7XaGv2O5WlUDfU4YZJDgRuMnXgUJUKHU3TXoNCAa+8yPxM6gQTlIxxwd9aDubFBSVI
         QoSjmPEbKWDAAyOvQZVYRMDcuf1gZmiMhgOsY7YT5rK6hu6ZCJXXzhL+3Yne2jm3C88h
         4dCg==
X-Gm-Message-State: AOJu0YyZMzAVDbB8zWQRYms7fvbYW4AYwY1a8wp+j//Gs7VUqQ83FAQf
	AyCE/KKpF4xCocp5G5jdieR4i42MWRD1AaI59bsv2uQgWjaOlvuMhPhrt95Gr8JFwGzAJXqJhZS
	M5Ug=
X-Google-Smtp-Source: AGHT+IGBNNwmvNBx4ZTClnC8czS1nkcnS+4eIgXWGX+u53rZMl9rdxum7DUhCOTHoUuAEXC+gEHh3g==
X-Received: by 2002:a05:6402:3507:b0:5c8:9f3e:5efc with SMTP id 4fb4d7f45d1cf-5c8a2a04200mr3054439a12.6.1727786312168;
        Tue, 01 Oct 2024 05:38:32 -0700 (PDT)
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>
Subject: [PATCH v6 03/11] xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
Date: Tue,  1 Oct 2024 13:37:59 +0100
Message-ID: <20241001123807.605-4-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-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.
This allows further changes to topology and APIC ID assignment without
breaking existing hosts. 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.

The hardcoded mapping x2apic_id=2*vcpu_id is kept for the time being,
but it's meant to be overriden by toolstack on a later patch with
appropriate values.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/cpuid.c                   | 14 +++++---------
 xen/arch/x86/hvm/vlapic.c              | 22 ++++++++++++++++++++--
 xen/arch/x86/include/asm/hvm/vlapic.h  |  1 +
 xen/include/public/arch-x86/hvm/save.h |  2 ++
 4 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c
index 2a777436ee27..dcbdeabadce9 100644
--- a/xen/arch/x86/cpuid.c
+++ b/xen/arch/x86/cpuid.c
@@ -138,10 +138,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 |= vlapic_x2apic_id(vcpu_vlapic(v)) << 24;
 
         /* TODO: Rework vPMU control in terms of toolstack choices. */
         if ( vpmu_available(v) &&
@@ -311,18 +310,15 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
 
     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.
+         * Don't expose topology information to PV guests. Exposed on HVM
+         * along with x2APIC because they are tightly coupled.
          */
-        if ( p->basic.x2apic )
+        if ( is_hvm_domain(d) && p->basic.x2apic )
         {
             *(uint8_t *)&res->c = subleaf;
 
             /* Fix the x2APIC identifier. */
-            res->d = v->vcpu_id * 2;
+            res->d = vlapic_x2apic_id(vcpu_vlapic(v));
         }
         break;
 
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 101902cff889..02570f9dd63a 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1090,7 +1090,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);
 
     /*
@@ -1470,7 +1470,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);
 }
 
@@ -1538,6 +1538,16 @@ 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);
 
+    /*
+     * Loading record without hw.x2apic_id in the save stream, calculate using
+     * the traditional "vcpu_id * 2" relation. There's an implicit assumption
+     * that vCPU0 always has x2APIC0, which is true for the old relation, and
+     * still holds under the new x2APIC generation algorithm. While that case
+     * goes through the conditional it's benign because it still maps to zero.
+     */
+    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) )
@@ -1606,6 +1616,13 @@ static int cf_check lapic_check_hidden(const struct domain *d,
          APIC_BASE_EXTD )
         return -EINVAL;
 
+    /*
+     * Fail migrations from newer versions of Xen where
+     * rsvd_zero is interpreted as something else.
+     */
+    if ( s.rsvd_zero )
+        return -EINVAL;
+
     return 0;
 }
 
@@ -1687,6 +1704,7 @@ int vlapic_init(struct vcpu *v)
     }
 
     vlapic->pt.source = PTSRC_lapic;
+    vlapic->hw.x2apic_id = 2 * v->vcpu_id;
 
     vlapic->regs_page = alloc_domheap_page(v->domain, MEMF_no_owner);
     if ( !vlapic->regs_page )
diff --git a/xen/arch/x86/include/asm/hvm/vlapic.h b/xen/arch/x86/include/asm/hvm/vlapic.h
index 2c4ff94ae7a8..85c4a236b9f6 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.
diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/public/arch-x86/hvm/save.h
index 7ecacadde165..1c2ec669ffc9 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);
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808069.1219882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9E-0003OB-Ku; Tue, 01 Oct 2024 12:38:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808069.1219882; Tue, 01 Oct 2024 12: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 1svc9E-0003L6-DF; Tue, 01 Oct 2024 12:38:36 +0000
Received: by outflank-mailman (input) for mailman id 808069;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9D-0002va-1i
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:35 +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 1186ec32-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:32 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c87853df28so6153650a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:32 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1186ec32-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786311; x=1728391111; 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=UB02sToOMWoS+3+bvVBptWjoHbPyERDalpALvStk7iE=;
        b=C26rpQfH5gIZ6gzOlY/vAxSiFxOAwu9t2tAqKdVoQqAWCG81shbNyXSIuOuc/LhBDO
         agnwLrAiAU5AQ3FtoggFyG+zXSv1YKMnG3J5IuQkYDb43EWqV8wY1qgufm5rwl4ig1TE
         ub3ycllDRLekx/BIw46uQvgoyDKWE56yk0mXg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786311; x=1728391111;
        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=UB02sToOMWoS+3+bvVBptWjoHbPyERDalpALvStk7iE=;
        b=aU0/p8yTG7zKpUHGkeWzAFWqsWoZIfhn2ocgDhAsmj2lZ1bUGbKedkpIqow0gbThK+
         3rb1eUoOS8vzIvBJhbPfMEuOUk6y9ZQ6iZn1G/dn/+kGlfO97tEBCC7VerTUYclJ2WWq
         tYzb6G3/5VbZT/LOuuIeXbLbkWsQmaeqPSd9DpYL6cjYXZq0sszGtodpNfZrAM4ylu1Y
         6ywjEys9ac3oTbakS1m/qNvCjruWgdjv5r/jCymZQi2F52zQrVbGUCFKXRaMpZNW0ysj
         lmIHib+43l4X2wMOXjZ0nNBTnVbjBVoE0ac60Og7vtQrMC9YAZi479c52FDOdKOkAioe
         Wn3A==
X-Gm-Message-State: AOJu0YzI7TJ2wcNG7QcveW5g2t1cODf35fWC2p2aLl3K2JBFsYl7KBxM
	K00XQN9gV6S1eB3yR6PMxAXFryjT2WyRHqHBXERmVryBms4NGN8WhgWBh9NRqDKYgB4ScYIsArk
	u6+k=
X-Google-Smtp-Source: AGHT+IGO1GpmPkOQcfrmzXZzq9xBvb8Osa2Y450r5q4s9sfSXZx7bSEFH+ArJLFDVvvgsLXIky/HWQ==
X-Received: by 2002:a05:6402:26c8:b0:5c4:1320:e5a3 with SMTP id 4fb4d7f45d1cf-5c8824e7972mr14658094a12.16.1727786311392;
        Tue, 01 Oct 2024 05:38:31 -0700 (PDT)
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>
Subject: [PATCH v6 02/11] x86/vlapic: Move lapic migration checks to the check hooks
Date: Tue,  1 Oct 2024 13:37:58 +0100
Message-ID: <20241001123807.605-3-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

While doing this, factor out checks common to architectural and hidden
state.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
--
Last reviewed in the topology series v3. Fell under the cracks.

  https://lore.kernel.org/xen-devel/ZlhP11Vvk6c1Ix36@macbook/
---
 xen/arch/x86/hvm/vlapic.c | 84 ++++++++++++++++++++++++++-------------
 1 file changed, 56 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 992355e511cd..101902cff889 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1571,60 +1571,88 @@ static void lapic_load_fixup(struct vlapic *vlapic)
                v, vlapic->loaded.id, vlapic->loaded.ldr, good_ldr);
 }
 
-static int cf_check lapic_load_hidden(struct domain *d, hvm_domain_context_t *h)
-{
-    unsigned int vcpuid = hvm_load_instance(h);
-    struct vcpu *v;
-    struct vlapic *s;
 
+static int lapic_check_common(const struct domain *d, unsigned int vcpuid)
+{
     if ( !has_vlapic(d) )
         return -ENODEV;
 
     /* Which vlapic to load? */
-    if ( vcpuid >= d->max_vcpus || (v = d->vcpu[vcpuid]) == NULL )
+    if ( !domain_vcpu(d, vcpuid) )
     {
-        dprintk(XENLOG_G_ERR, "HVM restore: dom%d has no apic%u\n",
+        dprintk(XENLOG_G_ERR, "HVM restore: dom%d has no vCPU %u\n",
                 d->domain_id, vcpuid);
         return -EINVAL;
     }
-    s = vcpu_vlapic(v);
+
+    return 0;
+}
+
+static int cf_check lapic_check_hidden(const struct domain *d,
+                                       hvm_domain_context_t *h)
+{
+    unsigned int vcpuid = hvm_load_instance(h);
+    struct hvm_hw_lapic s;
+    int rc = lapic_check_common(d, vcpuid);
+
+    if ( rc )
+        return rc;
+
+    if ( hvm_load_entry_zeroextend(LAPIC, h, &s) != 0 )
+        return -ENODATA;
+
+    /* EN=0 with EXTD=1 is illegal */
+    if ( (s.apic_base_msr & (APIC_BASE_ENABLE | APIC_BASE_EXTD)) ==
+         APIC_BASE_EXTD )
+        return -EINVAL;
+
+    return 0;
+}
+
+static int cf_check lapic_load_hidden(struct domain *d, hvm_domain_context_t *h)
+{
+    unsigned int vcpuid = hvm_load_instance(h);
+    struct vcpu *v = d->vcpu[vcpuid];
+    struct vlapic *s = vcpu_vlapic(v);
 
     if ( hvm_load_entry_zeroextend(LAPIC, h, &s->hw) != 0 )
+    {
+        ASSERT_UNREACHABLE();
         return -EINVAL;
+    }
 
     s->loaded.hw = 1;
     if ( s->loaded.regs )
         lapic_load_fixup(s);
 
-    if ( !(s->hw.apic_base_msr & APIC_BASE_ENABLE) &&
-         unlikely(vlapic_x2apic_mode(s)) )
-        return -EINVAL;
-
     hvm_update_vlapic_mode(v);
 
     return 0;
 }
 
-static int cf_check lapic_load_regs(struct domain *d, hvm_domain_context_t *h)
+static int cf_check lapic_check_regs(const struct domain *d,
+                                     hvm_domain_context_t *h)
 {
     unsigned int vcpuid = hvm_load_instance(h);
-    struct vcpu *v;
-    struct vlapic *s;
+    int rc;
 
-    if ( !has_vlapic(d) )
-        return -ENODEV;
+    if ( (rc = lapic_check_common(d, vcpuid)) )
+        return rc;
 
-    /* Which vlapic to load? */
-    if ( vcpuid >= d->max_vcpus || (v = d->vcpu[vcpuid]) == NULL )
-    {
-        dprintk(XENLOG_G_ERR, "HVM restore: dom%d has no apic%u\n",
-                d->domain_id, vcpuid);
-        return -EINVAL;
-    }
-    s = vcpu_vlapic(v);
+    if ( !hvm_get_entry(LAPIC_REGS, h) )
+        return -ENODATA;
+
+    return 0;
+}
+
+static int cf_check lapic_load_regs(struct domain *d, hvm_domain_context_t *h)
+{
+    unsigned int vcpuid = hvm_load_instance(h);
+    struct vcpu *v = d->vcpu[vcpuid];
+    struct vlapic *s = vcpu_vlapic(v);
 
     if ( hvm_load_entry(LAPIC_REGS, h, s->regs) != 0 )
-        return -EINVAL;
+        ASSERT_UNREACHABLE();
 
     s->loaded.id = vlapic_get_reg(s, APIC_ID);
     s->loaded.ldr = vlapic_get_reg(s, APIC_LDR);
@@ -1641,9 +1669,9 @@ static int cf_check lapic_load_regs(struct domain *d, hvm_domain_context_t *h)
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(LAPIC, lapic_save_hidden, NULL,
+HVM_REGISTER_SAVE_RESTORE(LAPIC, lapic_save_hidden, lapic_check_hidden,
                           lapic_load_hidden, 1, HVMSR_PER_VCPU);
-HVM_REGISTER_SAVE_RESTORE(LAPIC_REGS, lapic_save_regs, NULL,
+HVM_REGISTER_SAVE_RESTORE(LAPIC_REGS, lapic_save_regs, lapic_check_regs,
                           lapic_load_regs, 1, HVMSR_PER_VCPU);
 
 int vlapic_init(struct vcpu *v)
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808066.1219857 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9C-0002vx-J8; Tue, 01 Oct 2024 12:38:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808066.1219857; Tue, 01 Oct 2024 12: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 1svc9C-0002vq-FH; Tue, 01 Oct 2024 12:38:34 +0000
Received: by outflank-mailman (input) for mailman id 808066;
 Tue, 01 Oct 2024 12: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9B-0002va-CX
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:33 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 10b62fee-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:31 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-5398d171fa2so3118499e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:31 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10b62fee-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786310; x=1728391110; 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=8I9vUyTCDxKTgbtQS46FbfAQY00LnIcMBSmmBqvIyVY=;
        b=e2Z7T0gk5do8F7INwq+nCXCsNsnUDJVCcWEG7lQ32Y0XULh/sYC3X2G4xq5jdk+eWt
         bC20cg6oaFCOOugZQ+aIGV0TCS8UeKrz2ZCuAnkOV38tlXBXJydnt9AWGFMFNnG+mAWd
         MyYgRoVALaxexg486gTr1P81A4WV2n/171PgY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786310; x=1728391110;
        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=8I9vUyTCDxKTgbtQS46FbfAQY00LnIcMBSmmBqvIyVY=;
        b=wrz3eq+l7v2IQB4kiqU0INkinvSlOO/qgIlP3hYHphAu8AeFT+PFxHxy6Lxompys2w
         rLBlI2jBmsCjza3qHwfhzhGbts4W46Lk4i9bKbyX1MM6KAkMQOBzRNYbtqr2kyh8LXI7
         R2CzLyMgtKvw+pTMDjs/E0AZAqJacrk2K8qoqyj1waOTJb8YlIzDOeUz4E16KBt0F6gf
         jpeRkADcZ2Y6KZVNLZUw8G4XR4IZvUanO2F/iG8HHNzqP9svXOCJAI0JZfshdhXnsSbg
         C2hcfyTTYFGlIrX9jr76RJ8xPy3tKlx7Sw3jojxfkk54rwXXVzmQL3+i9xxFuDWeNShB
         0NuA==
X-Gm-Message-State: AOJu0YzuZVFpfKDkQKs8IpuUUx1cdof07O8cndfCUQCrjJxHSkYkJd9D
	WY4Hm5rYaYZI5V1Nt/p+5Bzvvilp/xRowl9kzgsxdCX3POmWqN3KvLLNUF0aIih5aRBl+imv1nx
	M9rQ=
X-Google-Smtp-Source: AGHT+IGNh8YiqZHSmXP3SfZkvWfUZMCy3tQ19UeQ739eGYUvmnyI9eLXyq0bUf23ifScRMo8J0LKIQ==
X-Received: by 2002:a05:6512:3d93:b0:530:abec:9a23 with SMTP id 2adb3069b0e04-5389fc3b407mr8096417e87.17.1727786310063;
        Tue, 01 Oct 2024 05:38:30 -0700 (PDT)
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>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v6 00/11] x86: Expose consistent topology to guests
Date: Tue,  1 Oct 2024 13:37:56 +0100
Message-ID: <20241001123807.605-1-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

(original cover letter at the bottom)

The series wasn't taking proper precautions to not break PVH. In particular,
because new APIC IDs break with the old convention, PVH is not something that
can be left for later as it otherwise suffers a mismatch between APIC IDs in
the vLAPICs and the MADT table.

This version is a rebased v5 with the additional fixes of:
  1. PVH should now work, because libacpi was refactored to stop taking a
     function pointer and start taking a LUT for the cpu->apic_id mapping.
  2. Expose leaf 0xb to guests even on hosts that don't themselves do so.
     (e.g: AMD Lisbon). Otherwise all such hosts are unable to create
     guests with this patch series on, and there's no good reason not to do so.

Hypervisor prerequisites:

  patch 1: lib/x86: Relax checks about policy compatibility
    * new patch to properly operate (after this series) on older AMD hardware. 
  patch 2: x86/vlapic: Move lapic migration checks to the check hooks
    * Same as in v5
  patch 3: xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
    * Same as in v5.
  patch 4: xen/x86: Add supporting code for uploading LAPIC contexts during
           domain create
    * Same as in v5.

hvmloader prerequisites

  patch 5: tools/hvmloader: Retrieve (x2)APIC IDs from the APs themselves
    * Same as in v5.

Toolstack prerequisites:

  patch 6: tools/libacpi: Use LUT of APIC IDs rather than function pointer
    * new patch to enable proper topology reporting to PVH guests.
  patch 7: tools/libguest: Always set vCPU context in vcpu_hvm()
    * Same as in v5.

No functional changes:

  patch 8: xen/lib: Add topology generator for x86
    * Same as in v5.
  patch 9: xen/x86: Derive topologically correct x2APIC IDs from the policy
    * Same as in v5.

Final toolstack/xen stitching:

  patch 10: tools/libguest: Set distinct x2APIC IDs for each vCPU
    * Unlikely in v5, this patch takes the APIC IDs from a LUT stored in
      the xc_dom_image structure.
  patch 11: xen/x86: Synthesise domain topologies
    * Same as v5.

====================================================================

v5: https://lore.kernel.org/xen-devel/20240808134251.29995-1-alejandro.vallejo@cloud.com/
v4 -> v5:

Largely unchanged and resent for review after the 4.20 dev cycle started.

  * Addressed Andrew's nits in v4/patch1
  * Addressed Jan's concern with MTRR overrides in v4/patch6 by keeping the
    same MTRR data in the vCPU contexts for HVM domain creations.

v4: https://lore.kernel.org/xen-devel/cover.1719416329.git.alejandro.vallejo@cloud.com/
v3 -> v4:

  * Fixed cpuid() bug in hvmloader, causing UB in v3
  * Fixed a bogus assert in hvmloader, also causing a crash in v3
  * Used HVM contexts rather than sync'd algos between Xen and toolstack in
    order to initialise the per-vCPU LAPIC state.
  * Formatting asjustments.

v3: https://lore.kernel.org/xen-devel/cover.1716976271.git.alejandro.vallejo@cloud.com/
v2 -> v3:

  (v2/patch2 and v2/patch4 are already committed)

  * Moved the vlapic check hook addition to v3/patch1
    * And created a check hook for the architectural state too for consistency.
  * Fixed migrations from Xen <= 4.13 by reconstructing the previous topology.
  * Correctly set the APIC ID after a policy change when vlapic is already in
    x2APIC mode.
  * Removed bogus assumption introduced in v1 and v2 on hvmloader about which
    8bit APIC IDs represent ids > 254. (it's "id % 0xff", not "min(id, 0xff)".
        * Used an x2apic flag check instead.
  * Various formatting adjustments.

v2: https://lore.kernel.org/xen-devel/cover.1715102098.git.alejandro.vallejo@cloud.com/
v1 -> v2:

  * v1/patch 4 replaced by a different strategy (See patches 4 and 5 in v2):
      * Have hvmloader populate MADT with the real APIC IDs as read by the APs
        themselves rather than giving it knowledge on how to derive them.
  * Removed patches 2 and 3 in v1, as no longer relevant.
  * Split v1/patch6 in two parts ((a) creating the generator and (b) plugging it
    in) and use the generator in the unit tests of the vcpuid->apicid mapping
    function. Becomes patches 6 and 8 in v2.

  Patch 1: Same as v1/patch1.
  Patch 2: Header dependency cleanup in preparation for patch3.
  Patch 3: Adds vlapic_hidden check for the newly introduced reserved area.
  Patch 4: [hvmloader] Replaces INIT+SIPI+SIPI sequences with hypercalls.
  Patch 5: [hvmloader] Retrieve the per-CPU APIC IDs from the APs themselves.
  Patch 6: Split from v1/patch6.
  Patch 7: Logically matching v1/patch5, but using v2/patch6 for testing.
  Patch 8: Split from v1/patch6.

v1: https://lore.kernel.org/xen-devel/20240109153834.4192-1-alejandro.vallejo@cloud.com/
=== Original cover letter ===

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

===================================================================
v6:

Alejandro Vallejo (11):
  lib/x86: Relax checks about policy compatibility
  x86/vlapic: Move lapic migration checks to the check hooks
  xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
  xen/x86: Add supporting code for uploading LAPIC contexts during
    domain create
  tools/hvmloader: Retrieve (x2)APIC IDs from the APs themselves
  tools/libacpi: Use LUT of APIC IDs rather than function pointer
  tools/libguest: Always set vCPU context in vcpu_hvm()
  xen/lib: Add topology generator for x86
  xen/x86: Derive topologically correct x2APIC IDs from the policy
  tools/libguest: Set distinct x2APIC IDs for each vCPU
  xen/x86: Synthesise domain topologies

 tools/firmware/hvmloader/config.h        |   5 +-
 tools/firmware/hvmloader/hvmloader.c     |   6 +-
 tools/firmware/hvmloader/mp_tables.c     |   4 +-
 tools/firmware/hvmloader/smp.c           |  54 ++++--
 tools/firmware/hvmloader/util.c          |   7 +-
 tools/include/xen-tools/common-macros.h  |   5 +
 tools/include/xenguest.h                 |   8 +
 tools/libacpi/build.c                    |   6 +-
 tools/libacpi/libacpi.h                  |   2 +-
 tools/libs/guest/xg_cpuid_x86.c          |  29 +++-
 tools/libs/guest/xg_dom_x86.c            |  93 ++++++----
 tools/libs/light/libxl_dom.c             |  25 +++
 tools/libs/light/libxl_x86_acpi.c        |   7 +-
 tools/tests/cpu-policy/test-cpu-policy.c | 207 ++++++++++++++++++++++-
 xen/arch/x86/cpu-policy.c                |   9 +-
 xen/arch/x86/cpuid.c                     |  14 +-
 xen/arch/x86/hvm/vlapic.c                | 126 ++++++++++----
 xen/arch/x86/include/asm/hvm/vlapic.h    |   1 +
 xen/include/public/arch-x86/hvm/save.h   |   2 +
 xen/include/xen/lib/x86/cpu-policy.h     |  27 +++
 xen/lib/x86/policy.c                     | 175 ++++++++++++++++++-
 xen/lib/x86/private.h                    |   4 +
 22 files changed, 704 insertions(+), 112 deletions(-)

-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808067.1219867 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9D-0003AC-QD; Tue, 01 Oct 2024 12:38:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808067.1219867; Tue, 01 Oct 2024 12:38: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 1svc9D-0003A5-N3; Tue, 01 Oct 2024 12:38:35 +0000
Received: by outflank-mailman (input) for mailman id 808067;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9C-0002va-1O
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:34 +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 10f95c99-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:31 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8a706236bfso450422566b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:31 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10f95c99-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786311; x=1728391111; 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=6CLVhmVmABNvSZWpsVfABNNcbL+sBo7kkWt6jjP+OBE=;
        b=NJ/szdGP36LpKNG2bVcKYbzIORaDGjl3I5iEdHoxURAQ+JQDnqAMWBSSWAd4XGInYj
         FUTUEwaXk46QijxCWi+MwoZna31DnD6ooBABZMFT0OfG2+QRx/Ei2vvvraqell4aAfMd
         WpgPdoe3mie20w0bFOYjwOAbdVcYY6XfD3XHk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786311; x=1728391111;
        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=6CLVhmVmABNvSZWpsVfABNNcbL+sBo7kkWt6jjP+OBE=;
        b=YsYFmaE5QVS03GvPJYvGQAMWwWBavPBxXVQRhUCyGJY7YvrTFicZns+6L4nuSlLSPf
         iV9yMc1qvfthAZOv/qYPPwax28NAG/S/5/9RmcGimBmbMiu12N4QVTZBD1KosjLASQSq
         espHzA95wfEoHV88j7DHRkwU7YSfLW5KdAF+PcJdgBXCfw2R4f3ShaGSEunpica7rWWS
         SYJUeoJpA0duHq9OAz9CDOBLjQgxfUKItlmmvUiiRRT8OsgYY8qHGJLDdIZYMy+sd20X
         dcaZ5m6WdCJTccguUVcPUHcA+NsJZjJFy8g9vZh5b3tXmM/13s13XlvzATAywNfuHhSp
         GJQA==
X-Gm-Message-State: AOJu0YzYinCn532Z0LEhSC4Dg12R30Adfnqi5AAxo3w46dTe9KQfNrdx
	Ag7SZz7+i02fsLxnJ+DzC3PO954TgJqB34i5RP95It9L1z6mO3IqeDwVvL7FoD/xzmSiL3yKuPo
	kA2U=
X-Google-Smtp-Source: AGHT+IGBeJtPNsZn+19IIMd92YMaOk91ubtWYoKiFy2/Ft20p7KGSCFMPdE+4Gfcl9TA9oN7LlEddw==
X-Received: by 2002:a05:6402:2743:b0:5c8:9553:a1fb with SMTP id 4fb4d7f45d1cf-5c89553a26emr13424439a12.9.1727786310712;
        Tue, 01 Oct 2024 05:38:30 -0700 (PDT)
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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v6 01/11] lib/x86: Relax checks about policy compatibility
Date: Tue,  1 Oct 2024 13:37:57 +0100
Message-ID: <20241001123807.605-2-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Allow a guest policy have up to leaf 0xb even if the host doesn't.
Otherwise it's not possible to show leaf 0xb to guests we're emulating
an x2APIC for on old AMD machines.

No externally visible changes though because toolstack doesn't yet
populate that leaf.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/tests/cpu-policy/test-cpu-policy.c |  6 +++++-
 xen/lib/x86/policy.c                     | 11 ++++++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c
index 301df2c00285..9216010b1c5d 100644
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -586,6 +586,10 @@ static void test_is_compatible_success(void)
                 .platform_info.cpuid_faulting = true,
             },
         },
+        {
+            .name = "Host missing leaf 0xb, Guest wanted",
+            .guest.basic.max_leaf = 0xb,
+        },
     };
     struct cpu_policy_errors no_errors = INIT_CPU_POLICY_ERRORS;
 
@@ -614,7 +618,7 @@ static void test_is_compatible_failure(void)
     } tests[] = {
         {
             .name = "Host basic.max_leaf out of range",
-            .guest.basic.max_leaf = 1,
+            .guest.basic.max_leaf = 0xc,
             .e = { 0, -1, -1 },
         },
         {
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index f033d22785be..63bc96451d2c 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -15,7 +15,16 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
 #define FAIL_MSR(m) \
     do { e.msr = (m); goto out; } while ( 0 )
 
-    if ( guest->basic.max_leaf > host->basic.max_leaf )
+    /*
+     * Old AMD hardware doesn't expose topology information in leaf 0xb. We
+     * want to emulate that leaf with credible information because it must be
+     * present on systems in which we emulate the x2APIC.
+     *
+     * For that reason, allow the max basic guest leaf to be larger than the
+     * hosts' up until 0xb.
+     */
+    if ( guest->basic.max_leaf > 0xb &&
+         guest->basic.max_leaf > host->basic.max_leaf )
         FAIL_CPUID(0, NA);
 
     if ( guest->feat.max_subleaf > host->feat.max_subleaf )
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808070.1219888 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9F-0003UZ-1l; Tue, 01 Oct 2024 12:38:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808070.1219888; Tue, 01 Oct 2024 12: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 1svc9E-0003TD-PC; Tue, 01 Oct 2024 12:38:36 +0000
Received: by outflank-mailman (input) for mailman id 808070;
 Tue, 01 Oct 2024 12: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9D-0002vk-2Y
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:35 +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 12413986-7ff2-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 14:38:33 +0200 (CEST)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5c88b5c375fso4186274a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:33 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 12413986-7ff2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786313; x=1728391113; 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=GfxQ3gahpFHXiNK/v5LJIeKG4M7IQS/lIxTTHFsFmsQ=;
        b=WJP0XnI7o5Hq4PzXexDYaOXAjpeaJRb9nQlSR/vBUiyVjj2Ep7iB8NYG/7M0zkihB9
         K4eNxacHOQ1CfvD9Odha4U9D5Q4P4kagHCDDn+u5fGm6NpMUPpr92fnjbRYNCC6zjD9C
         LfVBNfBnOJXKhFtrk516cZDbM7WAe9f5L9gTk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786313; x=1728391113;
        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=GfxQ3gahpFHXiNK/v5LJIeKG4M7IQS/lIxTTHFsFmsQ=;
        b=Aso8bWHj947CPHtwYIkNOZpXwYJ6IcQlK85+GpDxT3WOFM6HpqYadMDBpCVJIkzMnU
         vZRcTf3QQ7uiFdHkdRKW+Dhqj0/1O+AHUN9QIjsIOZuQ2ZDuUIjsmvAUi8k9AfbGvv1z
         fc+jfTcfhtKMKIenJfbAFCzV/8BguvwD3a/OirbW3s/o4kABOIY4hlXmBBSA09+tWvxc
         bYqVJ0VpIZBylhx7ZxZoyXQc3BI7gdMO4ch/Ufd4LQ+VsDMyA6TuEwHIcuyWKeTf2nwT
         +1JKgRmLcTpDXkT7tdpcF9Sp1fLSRWnFSjaOt6griUdc0iU9EmzL2G5LD9OukHPrW5Tp
         gc/g==
X-Gm-Message-State: AOJu0YxZCGfcXlylURgyAhidVIU9xN3Oo4ldDak4ALaOc/iyzDKFxCpf
	A67KuDR72rQ1azfLDMAYsMG3IFHE6SBFmzse+hW2PB74XyTWOvQ79Vxgpcok//03RLw9HT70cX6
	u078=
X-Google-Smtp-Source: AGHT+IHYv9UQ1NH0BPBBzMwPwVzMJinEFh4rgxIxc5jc8prduA3Nll6k7VEnn7OBCAcZK3PkJF/3yA==
X-Received: by 2002:a05:6402:2812:b0:5c8:8538:b770 with SMTP id 4fb4d7f45d1cf-5c88538bbbfmr13313247a12.8.1727786312880;
        Tue, 01 Oct 2024 05:38:32 -0700 (PDT)
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>
Subject: [PATCH v6 04/11] xen/x86: Add supporting code for uploading LAPIC contexts during domain create
Date: Tue,  1 Oct 2024 13:38:00 +0100
Message-ID: <20241001123807.605-5-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

If toolstack were to upload LAPIC contexts as part of domain creation it
would encounter a problem were the architectural state does not reflect
the APIC ID in the hidden state. This patch ensures updates to the
hidden state trigger an update in the architectural registers so the
APIC ID in both is consistent.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/hvm/vlapic.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 02570f9dd63a..a8183c3023da 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1640,7 +1640,27 @@ static int cf_check lapic_load_hidden(struct domain *d, hvm_domain_context_t *h)
 
     s->loaded.hw = 1;
     if ( s->loaded.regs )
+    {
+        /*
+         * We already processed architectural regs in lapic_load_regs(), so
+         * this must be a migration. Fix up inconsistencies from any older Xen.
+         */
         lapic_load_fixup(s);
+    }
+    else
+    {
+        /*
+         * We haven't seen architectural regs so this could be a migration or a
+         * plain domain create. In the domain create case it's fine to modify
+         * the architectural state to align it to the APIC ID that was just
+         * uploaded and in the migrate case it doesn't matter because the
+         * architectural state will be replaced by the LAPIC_REGS ctx later on.
+         */
+        if ( vlapic_x2apic_mode(s) )
+            set_x2apic_id(s);
+        else
+            vlapic_set_reg(s, APIC_ID, SET_xAPIC_ID(s->hw.x2apic_id));
+    }
 
     hvm_update_vlapic_mode(v);
 
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808071.1219904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9G-00043H-9c; Tue, 01 Oct 2024 12:38:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808071.1219904; Tue, 01 Oct 2024 12: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 1svc9G-000424-5E; Tue, 01 Oct 2024 12:38:38 +0000
Received: by outflank-mailman (input) for mailman id 808071;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9E-0002va-J8
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:36 +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 12f91f00-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:35 +0200 (CEST)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-539983beb19so2209963e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:34 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 12f91f00-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786314; x=1728391114; 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=PVd0quTcANw6t1kPQZgBl2vPnkcivNSH35qvlQWbNfA=;
        b=d1p7yQe3xHatPjEYCzn6b2xgMpJ0fz4dbYZ11N/EwPxxg0+YPYeSu/rQDyinPWgD/y
         xyfdA5Cyqxb3P1mqKagn1u0BvTV8WaIKw0zsvsEMsGta6ucHyIptU+kROKjiluRjqg2I
         hwP6TO79KTfoFhiLEw4digJ1Uh/V+HRdUQI/M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786314; x=1728391114;
        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=PVd0quTcANw6t1kPQZgBl2vPnkcivNSH35qvlQWbNfA=;
        b=wYoHyKABAPFzqjQ6TpAvUyKsZzhlTWfV5YE6cPrhqLF68f3n7oKULeXH7jg043ypx2
         NJAZfU6gNlrV+oPLc16CLnvL6M+QFieD7Exu2VmsAUVfgTp7FQgPKQ0AoifnKHe08ce9
         unP3UwPQistP5m4/l4Y3oUebC/nYMyqx7PunWK+6Ln+0NUkz+f9jD1lsxeweFeTIbTkZ
         bOmTKymlYQeugrzjicsaqbWuiNbzzC2/rUGAwPUxnaQSxcWfeSEC28t6lH+ITuO6eofe
         uG9roLs7mUtpGVzm3djjByU1Qtf2vhM8WYfWrrOFtkm5lBHAgH49N/E5KtBSZW8XoFzV
         uBdw==
X-Gm-Message-State: AOJu0Yxs09mBlSn2FBWOODqkpcYgud/SlF+xn8X3glJuNZuHXNuDb3KG
	RpZugWBzZpzmYPdVamTJ/Hy03J0kGygdJkoaBCQdug5sGJ7F7r3alhc4y9vqVVSwDDSVANSerwk
	k0XU=
X-Google-Smtp-Source: AGHT+IFIZdsgDe7OkBunGV418GKNfPWk9qD5xmnGo3xLqm5hKLnrUAbXKEYZofkVNRAbG8Z0A2xCSg==
X-Received: by 2002:a05:6512:401e:b0:536:a4d8:917b with SMTP id 2adb3069b0e04-5389fc3a859mr8129082e87.19.1727786313930;
        Tue, 01 Oct 2024 05:38:33 -0700 (PDT)
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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v6 05/11] tools/hvmloader: Retrieve (x2)APIC IDs from the APs themselves
Date: Tue,  1 Oct 2024 13:38:01 +0100
Message-ID: <20241001123807.605-6-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Make it so the APs expose their own APIC IDs in a LUT. We can use that
LUT to populate the MADT, decoupling the algorithm that relates CPU IDs
and APIC IDs from hvmloader.

While at this also remove ap_callin, as writing the APIC ID may serve
the same purpose.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/firmware/hvmloader/config.h       |  5 ++-
 tools/firmware/hvmloader/hvmloader.c    |  6 +--
 tools/firmware/hvmloader/mp_tables.c    |  4 +-
 tools/firmware/hvmloader/smp.c          | 54 ++++++++++++++++++++-----
 tools/firmware/hvmloader/util.c         |  2 +-
 tools/include/xen-tools/common-macros.h |  5 +++
 6 files changed, 60 insertions(+), 16 deletions(-)

diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h
index cd716bf39245..17666a1fdb01 100644
--- a/tools/firmware/hvmloader/config.h
+++ b/tools/firmware/hvmloader/config.h
@@ -4,6 +4,8 @@
 #include <stdint.h>
 #include <stdbool.h>
 
+#include <xen/hvm/hvm_info_table.h>
+
 enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt };
 extern enum virtual_vga virtual_vga;
 
@@ -48,8 +50,9 @@ extern uint8_t ioapic_version;
 
 #define IOAPIC_ID           0x01
 
+extern uint32_t CPU_TO_X2APICID[HVM_MAX_VCPUS];
+
 #define LAPIC_BASE_ADDRESS  0xfee00000
-#define LAPIC_ID(vcpu_id)   ((vcpu_id) * 2)
 
 #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 f8af88fabf24..0ff190ff4ec0 100644
--- a/tools/firmware/hvmloader/hvmloader.c
+++ b/tools/firmware/hvmloader/hvmloader.c
@@ -224,7 +224,7 @@ static void apic_setup(void)
 
     /* 8259A ExtInts are delivered through IOAPIC pin 0 (Virtual Wire Mode). */
     ioapic_write(0x10, APIC_DM_EXTINT);
-    ioapic_write(0x11, SET_APIC_ID(LAPIC_ID(0)));
+    ioapic_write(0x11, SET_APIC_ID(CPU_TO_X2APICID[0]));
 }
 
 struct bios_info {
@@ -341,11 +341,11 @@ int main(void)
 
     printf("CPU speed is %u MHz\n", get_cpu_mhz());
 
+    smp_initialise();
+
     apic_setup();
     pci_setup();
 
-    smp_initialise();
-
     perform_tests();
 
     if ( bios->bios_info_setup )
diff --git a/tools/firmware/hvmloader/mp_tables.c b/tools/firmware/hvmloader/mp_tables.c
index 77d3010406d0..494f5bb3d813 100644
--- a/tools/firmware/hvmloader/mp_tables.c
+++ b/tools/firmware/hvmloader/mp_tables.c
@@ -198,8 +198,10 @@ static void fill_mp_config_table(struct mp_config_table *mpct, int length)
 /* fills in an MP processor entry for VCPU 'vcpu_id' */
 static void fill_mp_proc_entry(struct mp_proc_entry *mppe, int vcpu_id)
 {
+    ASSERT(CPU_TO_X2APICID[vcpu_id] < 0xFF );
+
     mppe->type = ENTRY_TYPE_PROCESSOR;
-    mppe->lapic_id = LAPIC_ID(vcpu_id);
+    mppe->lapic_id = CPU_TO_X2APICID[vcpu_id];
     mppe->lapic_version = 0x11;
     mppe->cpu_flags = CPU_FLAG_ENABLED;
     if ( vcpu_id == 0 )
diff --git a/tools/firmware/hvmloader/smp.c b/tools/firmware/hvmloader/smp.c
index 1b940cefd071..b0d4da111904 100644
--- a/tools/firmware/hvmloader/smp.c
+++ b/tools/firmware/hvmloader/smp.c
@@ -29,7 +29,34 @@
 
 #include <xen/vcpu.h>
 
-static int ap_callin;
+/**
+ * Lookup table of x2APIC IDs.
+ *
+ * Each entry is populated its respective CPU as they come online. This is required
+ * for generating the MADT with minimal assumptions about ID relationships.
+ */
+uint32_t CPU_TO_X2APICID[HVM_MAX_VCPUS];
+
+/** Tristate about x2apic being supported. -1=unknown */
+static int has_x2apic = -1;
+
+static uint32_t read_apic_id(void)
+{
+    uint32_t apic_id;
+
+    if ( has_x2apic )
+        cpuid(0xb, NULL, NULL, NULL, &apic_id);
+    else
+    {
+        cpuid(1, NULL, &apic_id, NULL, NULL);
+        apic_id >>= 24;
+    }
+
+    /* Never called by cpu0, so should never return 0 */
+    ASSERT(apic_id);
+
+    return apic_id;
+}
 
 static void cpu_setup(unsigned int cpu)
 {
@@ -37,13 +64,17 @@ static void cpu_setup(unsigned int cpu)
     cacheattr_init();
     printf("done.\n");
 
-    if ( !cpu ) /* Used on the BSP too */
+    /* The BSP exits early because its APIC ID is known to be zero */
+    if ( !cpu )
         return;
 
     wmb();
-    ap_callin = 1;
+    ACCESS_ONCE(CPU_TO_X2APICID[cpu]) = read_apic_id();
 
-    /* After this point, the BSP will shut us down. */
+    /*
+     * After this point the BSP will shut us down. A write to
+     * CPU_TO_X2APICID[cpu] signals the BSP to bring down `cpu`.
+     */
 
     for ( ;; )
         asm volatile ( "hlt" );
@@ -54,10 +85,6 @@ static void boot_cpu(unsigned int cpu)
     static uint8_t ap_stack[PAGE_SIZE] __attribute__ ((aligned (16)));
     static struct vcpu_hvm_context ap;
 
-    /* Initialise shared variables. */
-    ap_callin = 0;
-    wmb();
-
     /* Wake up the secondary processor */
     ap = (struct vcpu_hvm_context) {
         .mode = VCPU_HVM_MODE_32B,
@@ -90,10 +117,11 @@ static void boot_cpu(unsigned int cpu)
         BUG();
 
     /*
-     * Wait for the secondary processor to complete initialisation.
+     * Wait for the secondary processor to complete initialisation,
+     * which is signaled by its x2APIC ID being written to the LUT.
      * Do not touch shared resources meanwhile.
      */
-    while ( !ap_callin )
+    while ( !ACCESS_ONCE(CPU_TO_X2APICID[cpu]) )
         cpu_relax();
 
     /* Take the secondary processor offline. */
@@ -104,6 +132,12 @@ static void boot_cpu(unsigned int cpu)
 void smp_initialise(void)
 {
     unsigned int i, nr_cpus = hvm_info->nr_vcpus;
+    uint32_t ecx;
+
+    cpuid(1, NULL, NULL, &ecx, NULL);
+    has_x2apic = (ecx >> 21) & 1;
+    if ( has_x2apic )
+        printf("x2APIC supported\n");
 
     printf("Multiprocessor initialisation:\n");
     cpu_setup(0);
diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
index d3b3f9038e64..7e1e105d79dd 100644
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -827,7 +827,7 @@ static void acpi_mem_free(struct acpi_ctxt *ctxt,
 
 static uint32_t acpi_lapic_id(unsigned cpu)
 {
-    return LAPIC_ID(cpu);
+    return CPU_TO_X2APIC_ID[cpu];
 }
 
 void hvmloader_acpi_build_tables(struct acpi_config *config,
diff --git a/tools/include/xen-tools/common-macros.h b/tools/include/xen-tools/common-macros.h
index 60912225cb7a..336c6309d96e 100644
--- a/tools/include/xen-tools/common-macros.h
+++ b/tools/include/xen-tools/common-macros.h
@@ -108,4 +108,9 @@
 #define get_unaligned(ptr)      get_unaligned_t(typeof(*(ptr)), ptr)
 #define put_unaligned(val, ptr) put_unaligned_t(typeof(*(ptr)), val, ptr)
 
+#define __ACCESS_ONCE(x) ({                             \
+            (void)(typeof(x))0; /* Scalar typecheck. */ \
+            (volatile typeof(x) *)&(x); })
+#define ACCESS_ONCE(x) (*__ACCESS_ONCE(x))
+
 #endif	/* __XEN_TOOLS_COMMON_MACROS__ */
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808072.1219917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9I-0004Sl-Uv; Tue, 01 Oct 2024 12:38:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808072.1219917; Tue, 01 Oct 2024 12:38: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 1svc9I-0004Sa-Qg; Tue, 01 Oct 2024 12:38:40 +0000
Received: by outflank-mailman (input) for mailman id 808072;
 Tue, 01 Oct 2024 12: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9F-0002va-LL
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:37 +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 13ab85fd-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:36 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fad100dd9eso21654871fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:36 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13ab85fd-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786315; x=1728391115; 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=9yI0HSpcntLJIYW3VaOO9aCgh2JBlz3FO3H/5MUH+To=;
        b=RV9+Jl1CwV5JzEnT1G2R8/wf0h5dCEfOrP23lrcAV/KD3/oWmImePzp6UBlaTXYd44
         6aHuIi6wSUqkzDCOOLQq0axEwsarPe3auS8mg96acvWo86dj6Z9A3fpeMICQG+S1Ycm9
         pVWa9NWHBExH7fPG51ub/+xUwEhe9pIEbAutA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786315; x=1728391115;
        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=9yI0HSpcntLJIYW3VaOO9aCgh2JBlz3FO3H/5MUH+To=;
        b=BqGVgZlrzyhPROVAJqDsV1eX3YAHTb/iAvgqpMZicSGg8ZDMXOeEWH1dZxODDvF5Rv
         /POfoaoMDmx4pqqNO/H3VMNEx+kgCynHwiLmJfxaig09lKCsEEqTlL9553TW+LyHhPmf
         093EuwuUK8gh8UyPoc8t62kZgEzbk+H5uI1BycY50tbSXILcNH48HyRfYPNQ01ig8YyR
         NrKrjmuMgrvnMMnShRClXafG/KCqSwktGaOj7aD3uckytglaPpibUMDEDGdMaBFLOceB
         vTS+ZlqeBEe5tuENjNkUUDGnOZXYwlqjSiq8FtJqUE5oS9c+VJ+RZ3yBhcTh8u6C0ame
         hXYg==
X-Gm-Message-State: AOJu0YzUtWnGzJbPJ7u471q/8dpfzjlntU0AvxzWG2n73qDuyz2E37yx
	csnpjgPBkIzHxRl+mVKhTk/ZBkXwNMieIVif89JKiWX/NphSfDX0c/VQLNZCgvJrlG57ojnHPEl
	tvY4=
X-Google-Smtp-Source: AGHT+IGswhbqCcBlXpdoQJzmjI32zdk/Fk5jlyLkCAjcdzHhOpmY1QgcPMuevLyWV+yJ/44rfe98Vw==
X-Received: by 2002:a2e:be0d:0:b0:2fa:c49b:d14f with SMTP id 38308e7fff4ca-2fac49bd8f2mr50165401fa.2.1727786315182;
        Tue, 01 Oct 2024 05:38:35 -0700 (PDT)
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>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v6 06/11] tools/libacpi: Use LUT of APIC IDs rather than function pointer
Date: Tue,  1 Oct 2024 13:38:02 +0100
Message-ID: <20241001123807.605-7-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Refactors libacpi so that a single LUT is the authoritative source of
truth for the CPU to APIC ID mappings. This has a know-on effect in
reducing complexity on future patches, as the same LUT can be used for
configuring the APICs and configuring the ACPI tables for PVH.

Not functional change intended, because the same mappings are preserved.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/firmware/hvmloader/util.c   | 7 +------
 tools/include/xenguest.h          | 5 +++++
 tools/libacpi/build.c             | 6 +++---
 tools/libacpi/libacpi.h           | 2 +-
 tools/libs/light/libxl_dom.c      | 5 +++++
 tools/libs/light/libxl_x86_acpi.c | 7 +------
 6 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
index 7e1e105d79dd..4a6303bbae8c 100644
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -825,11 +825,6 @@ static void acpi_mem_free(struct acpi_ctxt *ctxt,
     /* ACPI builder currently doesn't free memory so this is just a stub */
 }
 
-static uint32_t acpi_lapic_id(unsigned cpu)
-{
-    return CPU_TO_X2APIC_ID[cpu];
-}
-
 void hvmloader_acpi_build_tables(struct acpi_config *config,
                                  unsigned int physical)
 {
@@ -859,7 +854,7 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
     }
 
     config->lapic_base_address = LAPIC_BASE_ADDRESS;
-    config->lapic_id = acpi_lapic_id;
+    config->cpu_to_apicid = CPU_TO_X2APICID;
     config->ioapic_base_address = IOAPIC_BASE_ADDRESS;
     config->ioapic_id = IOAPIC_ID;
     config->pci_isa_irq_mask = PCI_ISA_IRQ_MASK; 
diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index e01f494b772a..aa50b78dfb89 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -22,6 +22,8 @@
 #ifndef XENGUEST_H
 #define XENGUEST_H
 
+#include "xen/hvm/hvm_info_table.h"
+
 #define XC_NUMA_NO_NODE   (~0U)
 
 #define XCFLAGS_LIVE      (1 << 0)
@@ -236,6 +238,9 @@ struct xc_dom_image {
 #if defined(__i386__) || defined(__x86_64__)
     struct e820entry *e820;
     unsigned int e820_entries;
+
+    /* LUT mapping cpu id to (x2)APIC ID */
+    uint32_t cpu_to_apicid[HVM_MAX_VCPUS];
 #endif
 
     xen_pfn_t vuart_gfn;
diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c
index 2f29863db154..2ad1d461a2ec 100644
--- a/tools/libacpi/build.c
+++ b/tools/libacpi/build.c
@@ -74,7 +74,7 @@ static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
     const struct hvm_info_table   *hvminfo = config->hvminfo;
     int i, sz;
 
-    if ( config->lapic_id == NULL )
+    if ( config->cpu_to_apicid == NULL )
         return NULL;
 
     sz  = sizeof(struct acpi_20_madt);
@@ -148,7 +148,7 @@ static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
         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 = config->cpu_to_apicid[i];
         lapic->flags = (test_bit(i, hvminfo->vcpu_online)
                         ? ACPI_LOCAL_APIC_ENABLED : 0);
         lapic++;
@@ -236,7 +236,7 @@ static struct acpi_20_srat *construct_srat(struct acpi_ctxt *ctxt,
         processor->type     = ACPI_PROCESSOR_AFFINITY;
         processor->length   = sizeof(*processor);
         processor->domain   = config->numa.vcpu_to_vnode[i];
-        processor->apic_id  = config->lapic_id(i);
+        processor->apic_id  = config->cpu_to_apicid[i];
         processor->flags    = ACPI_LOCAL_APIC_AFFIN_ENABLED;
         processor++;
     }
diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h
index deda39e5dbc4..8b010212448c 100644
--- a/tools/libacpi/libacpi.h
+++ b/tools/libacpi/libacpi.h
@@ -84,7 +84,7 @@ struct acpi_config {
     unsigned long rsdp;
 
     /* x86-specific parameters */
-    uint32_t (*lapic_id)(unsigned cpu);
+    uint32_t *cpu_to_apicid; /* LUT mapping cpu id to (x2)APIC ID */
     uint32_t lapic_base_address;
     uint32_t ioapic_base_address;
     uint16_t pci_isa_irq_mask;
diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c
index 94fef374014e..7f9c6eaa8b24 100644
--- a/tools/libs/light/libxl_dom.c
+++ b/tools/libs/light/libxl_dom.c
@@ -1082,6 +1082,11 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
 
     dom->container_type = XC_DOM_HVM_CONTAINER;
 
+#if defined(__i386__) || defined(__x86_64__)
+    for ( uint32_t i = 0; i < info->max_vcpus; i++ )
+        dom->cpu_to_apicid[i] = 2 * i; /* TODO: Replace by topo calculation */
+#endif
+
     /* The params from the configuration file are in Mb, which are then
      * multiplied by 1 Kb. This was then divided off when calling
      * the old xc_hvm_build_target_mem() which then turned them to bytes.
diff --git a/tools/libs/light/libxl_x86_acpi.c b/tools/libs/light/libxl_x86_acpi.c
index 5cf261bd6794..585d4c8755cb 100644
--- a/tools/libs/light/libxl_x86_acpi.c
+++ b/tools/libs/light/libxl_x86_acpi.c
@@ -75,11 +75,6 @@ static void acpi_mem_free(struct acpi_ctxt *ctxt,
 {
 }
 
-static uint32_t acpi_lapic_id(unsigned cpu)
-{
-    return cpu * 2;
-}
-
 static int init_acpi_config(libxl__gc *gc, 
                             struct xc_dom_image *dom,
                             const libxl_domain_build_info *b_info,
@@ -144,7 +139,7 @@ static int init_acpi_config(libxl__gc *gc,
     config->hvminfo = hvminfo;
 
     config->lapic_base_address = LAPIC_BASE_ADDRESS;
-    config->lapic_id = acpi_lapic_id;
+    config->cpu_to_apicid = dom->cpu_to_apicid;
     config->acpi_revision = 5;
 
     rc = 0;
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808073.1219922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9J-0004WF-BC; Tue, 01 Oct 2024 12:38:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808073.1219922; Tue, 01 Oct 2024 12:38: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 1svc9J-0004V1-4f; Tue, 01 Oct 2024 12:38:41 +0000
Received: by outflank-mailman (input) for mailman id 808073;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9G-0002va-B5
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:38 +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 140ead2b-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:36 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3f28b6so1950566a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:36 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 140ead2b-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786316; x=1728391116; 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=YuObzAPBZ9nf14Sh2mL9KT1PN35RQIsHwQXw8tfgbuc=;
        b=PEukFMJAh4ga/5xZMwdG5tBito/abC3MmAc7XEKC8ymZE6meQz9CIZ7+SiDHPfV9Yg
         mJNwszAzZtcGHtegt/QMb73APYZ8xXPoXfDiS2GMRIhvHpg1gRti/GBhskeGGZ/GcRJk
         8ghWpfZYTvUGo4j5oGDlDwXKm5wGvOqds/koc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786316; x=1728391116;
        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=YuObzAPBZ9nf14Sh2mL9KT1PN35RQIsHwQXw8tfgbuc=;
        b=u+dbNmyZApopP81cLL6SGYi2REWfuBtBOuHY+BJJkQ9HV53ZwZSMW71xJ6zyr9Xrqq
         o2WU/YbGkr72e7nmi91kDlgh9YBdjQZcZcES1Hw9liQ5Vcg3HF23zwz3DYn9tLj6/GHl
         Xhu5PaQFJqWMtGWX8W3QX21fI6wFRNS9FAnfCOVQ30r2aKeUQvlFBESQ9aPKKR8IJuyO
         /UVxHHSSaAzEbYhR4Hzl5HKhTPBjZQqWsdMm/xhgzDqtnXscOQwFNOUFJLf6KKEtNwDG
         SHBKANQg15xjtS8vhaf4xoLf1EHC7g1Eba1RqHCCGxfT62ZtIrOo6jZMqMjmdIeDt+1p
         zI0A==
X-Gm-Message-State: AOJu0YzoCzxlfJ3+DeniS8ptb0sTh7eH7PH010RlaNlhEKyyz/5yqyTm
	T/XRk0jbKJFvmHrR+PNXIv6ZDLYtLvOS0RXnd4ZUJ2Wxc4aa7NYbzPte5+QIhwdkcEsqSE8FkJw
	IVrM=
X-Google-Smtp-Source: AGHT+IG4jKYDXno4LWgH1e+P0gCG5KDXkdl4Ia0ars1LxyfAinjMa0gyexBSI2sdIQS2YMCCSAaEcg==
X-Received: by 2002:a05:6402:27c6:b0:5c7:1911:f134 with SMTP id 4fb4d7f45d1cf-5c8824e51camr13023489a12.9.1727786315912;
        Tue, 01 Oct 2024 05:38:35 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v6 07/11] tools/libguest: Always set vCPU context in vcpu_hvm()
Date: Tue,  1 Oct 2024 13:38:03 +0100
Message-ID: <20241001123807.605-8-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Currently used by PVH to set MTRR, will be used by a later patch to set
APIC state. Unconditionally send the hypercall, and gate overriding the
MTRR so it remains functionally equivalent.

While at it, add a missing "goto out" to what was the error condition
in the loop.

In principle this patch shouldn't affect functionality. An extra record
(the MTRR) is sent to the hypervisor per vCPU on HVM, but these records
are identical to those retrieved in the first place so there's no
expected functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/libs/guest/xg_dom_x86.c | 84 ++++++++++++++++++-----------------
 1 file changed, 44 insertions(+), 40 deletions(-)

diff --git a/tools/libs/guest/xg_dom_x86.c b/tools/libs/guest/xg_dom_x86.c
index cba01384ae75..c98229317db7 100644
--- a/tools/libs/guest/xg_dom_x86.c
+++ b/tools/libs/guest/xg_dom_x86.c
@@ -989,6 +989,7 @@ const static void *hvm_get_save_record(const void *ctx, unsigned int type,
 
 static int vcpu_hvm(struct xc_dom_image *dom)
 {
+    /* Initialises the BSP */
     struct {
         struct hvm_save_descriptor header_d;
         HVM_SAVE_TYPE(HEADER) header;
@@ -997,6 +998,18 @@ static int vcpu_hvm(struct xc_dom_image *dom)
         struct hvm_save_descriptor end_d;
         HVM_SAVE_TYPE(END) end;
     } bsp_ctx;
+    /* Initialises APICs and MTRRs of every vCPU */
+    struct {
+        struct hvm_save_descriptor header_d;
+        HVM_SAVE_TYPE(HEADER) header;
+        struct hvm_save_descriptor mtrr_d;
+        HVM_SAVE_TYPE(MTRR) mtrr;
+        struct hvm_save_descriptor end_d;
+        HVM_SAVE_TYPE(END) end;
+    } vcpu_ctx;
+    /* Context from full_ctx */
+    const HVM_SAVE_TYPE(MTRR) *mtrr_record;
+    /* Raw context as taken from Xen */
     uint8_t *full_ctx = NULL;
     int rc;
 
@@ -1083,51 +1096,42 @@ static int vcpu_hvm(struct xc_dom_image *dom)
     bsp_ctx.end_d.instance = 0;
     bsp_ctx.end_d.length = HVM_SAVE_LENGTH(END);
 
-    /* TODO: maybe this should be a firmware option instead? */
-    if ( !dom->device_model )
+    /* TODO: maybe setting MTRRs should be a firmware option instead? */
+    mtrr_record = hvm_get_save_record(full_ctx, HVM_SAVE_CODE(MTRR), 0);
+
+    if ( !mtrr_record)
     {
-        struct {
-            struct hvm_save_descriptor header_d;
-            HVM_SAVE_TYPE(HEADER) header;
-            struct hvm_save_descriptor mtrr_d;
-            HVM_SAVE_TYPE(MTRR) mtrr;
-            struct hvm_save_descriptor end_d;
-            HVM_SAVE_TYPE(END) end;
-        } mtrr = {
-            .header_d = bsp_ctx.header_d,
-            .header = bsp_ctx.header,
-            .mtrr_d.typecode = HVM_SAVE_CODE(MTRR),
-            .mtrr_d.length = HVM_SAVE_LENGTH(MTRR),
-            .end_d = bsp_ctx.end_d,
-            .end = bsp_ctx.end,
-        };
-        const HVM_SAVE_TYPE(MTRR) *mtrr_record =
-            hvm_get_save_record(full_ctx, HVM_SAVE_CODE(MTRR), 0);
-        unsigned int i;
-
-        if ( !mtrr_record )
-        {
-            xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
-                         "%s: unable to get MTRR save record", __func__);
-            goto out;
-        }
+        xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
+                     "%s: unable to get MTRR save record", __func__);
+        goto out;
+    }
 
-        memcpy(&mtrr.mtrr, mtrr_record, sizeof(mtrr.mtrr));
+    vcpu_ctx.header_d = bsp_ctx.header_d;
+    vcpu_ctx.header = bsp_ctx.header;
+    vcpu_ctx.mtrr_d.typecode = HVM_SAVE_CODE(MTRR);
+    vcpu_ctx.mtrr_d.length = HVM_SAVE_LENGTH(MTRR);
+    vcpu_ctx.mtrr = *mtrr_record;
+    vcpu_ctx.end_d = bsp_ctx.end_d;
+    vcpu_ctx.end = bsp_ctx.end;
 
-        /*
-         * Enable MTRR, set default type to WB.
-         * TODO: add MMIO areas as UC when passthrough is supported.
-         */
-        mtrr.mtrr.msr_mtrr_def_type = MTRR_TYPE_WRBACK | MTRR_DEF_TYPE_ENABLE;
+    /*
+     * Enable MTRR, set default type to WB.
+     * TODO: add MMIO areas as UC when passthrough is supported in PVH
+     */
+    if ( !dom->device_model )
+        vcpu_ctx.mtrr.msr_mtrr_def_type = MTRR_TYPE_WRBACK | MTRR_DEF_TYPE_ENABLE;
+
+    for ( unsigned int i = 0; i < dom->max_vcpus; i++ )
+    {
+        vcpu_ctx.mtrr_d.instance = i;
 
-        for ( i = 0; i < dom->max_vcpus; i++ )
+        rc = xc_domain_hvm_setcontext(dom->xch, dom->guest_domid,
+                                      (uint8_t *)&vcpu_ctx, sizeof(vcpu_ctx));
+        if ( rc != 0 )
         {
-            mtrr.mtrr_d.instance = i;
-            rc = xc_domain_hvm_setcontext(dom->xch, dom->guest_domid,
-                                          (uint8_t *)&mtrr, sizeof(mtrr));
-            if ( rc != 0 )
-                xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
-                             "%s: SETHVMCONTEXT failed (rc=%d)", __func__, rc);
+            xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
+                         "%s: SETHVMCONTEXT failed (rc=%d)", __func__, rc);
+            goto out;
         }
     }
 
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808074.1219928 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9J-0004c5-Ty; Tue, 01 Oct 2024 12:38:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808074.1219928; Tue, 01 Oct 2024 12:38: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 1svc9J-0004Yf-Ek; Tue, 01 Oct 2024 12:38:41 +0000
Received: by outflank-mailman (input) for mailman id 808074;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9G-0002vk-7t
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:38 +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 14728a14-7ff2-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 14:38:37 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c89bdb9019so2448858a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:37 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 14728a14-7ff2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786316; x=1728391116; 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=I0GTGzwtafoymMbnFaFTF4qE2IIeqafzC6RojYeuQKU=;
        b=AwiOS6qOydFTRHg9bXtAWrwaEWPgF+IjbmwKHWbkEXaUYTo9grNcGEaJJYEJDmD1EB
         0tx6iKHiUn6cipPyuCetJn4aYk1st9mIVIWhWqXP/O9a10k7l7kxMM25ZDdwpBJxnmD2
         BE02nwmLi488m2BaEOeYXx1x8pQONGklPUVPY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786316; x=1728391116;
        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=I0GTGzwtafoymMbnFaFTF4qE2IIeqafzC6RojYeuQKU=;
        b=YgIHWBCDSsH2vq2LW3q+nsRY7nYbBx/uD47/6dG8KkjrDvg4QmuPSEvRQ10ezVqpok
         k+Eq0TsPXJXd7xyim4iSUdV4SLACPAW1Jy38nHQ9T2yZJfGdZjg4nTGIJeBCK4pJhmXB
         Zmt/cT9dX8siidW8pVyENlOWsiOLftDrJluDdEQnYCJyQryJ/VKx6OnfQCVkxi87d/aQ
         mlrywDIXcVkHnIHhc+0gMQbLPcuUulsH4JlQEgEBlQZ8hwZcKLNE2wEXWWqK7q6oU9RH
         oeeePA3WadzEPcHK8UrkfrrazOSE/PSJAUO9teYWuWZgomrDQ9j3tVkyATQ7ouLIL2TO
         9aEw==
X-Gm-Message-State: AOJu0YyZ7p31FyhP881H87HjulOqZdD6E1AteK7crd/qTO2Bar+sUjHT
	MUKmvmhz717rXpGGg2pooPktFENs0MbYKcCyCBLfZfb1FWiFgqWFOtEd0IjPusD2OShmaw3gEcm
	fTeY=
X-Google-Smtp-Source: AGHT+IGWrWoMczYC8L5QGRHinswuT9xtxfIlrvUWsBpMhVKDaFNgWGraiocX4r5UXEHrGxfyPE6g9A==
X-Received: by 2002:a50:951a:0:b0:5c8:81bd:ac90 with SMTP id 4fb4d7f45d1cf-5c8825fd826mr11229511a12.27.1727786316561;
        Tue, 01 Oct 2024 05:38:36 -0700 (PDT)
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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v6 08/11] xen/lib: Add topology generator for x86
Date: Tue,  1 Oct 2024 13:38:04 +0100
Message-ID: <20241001123807.605-9-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a helper to populate topology leaves in the cpu policy from
threads/core and cores/package counts. It's unit-tested in
test-cpu-policy.c,
but it's not connected to the rest of the code yet.

Adds the ASSERT() macro to xen/lib/x86/private.h, as it was missing.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/tests/cpu-policy/test-cpu-policy.c | 133 +++++++++++++++++++++++
 xen/include/xen/lib/x86/cpu-policy.h     |  16 +++
 xen/lib/x86/policy.c                     |  88 +++++++++++++++
 xen/lib/x86/private.h                    |   4 +
 4 files changed, 241 insertions(+)

diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c
index 9216010b1c5d..870f7ecee0e5 100644
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -654,6 +654,137 @@ static void test_is_compatible_failure(void)
     }
 }
 
+static void test_topo_from_parts(void)
+{
+    static const struct test {
+        unsigned int threads_per_core;
+        unsigned int cores_per_pkg;
+        struct cpu_policy policy;
+    } tests[] = {
+        {
+            .threads_per_core = 3, .cores_per_pkg = 1,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    { .nr_logical = 1, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 1, .cores_per_pkg = 3,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 1, .level = 0, .type = 1, .id_shift = 0, },
+                    { .nr_logical = 3, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 7, .cores_per_pkg = 5,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 7, .level = 0, .type = 1, .id_shift = 3, },
+                    { .nr_logical = 5, .level = 1, .type = 2, .id_shift = 6, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 2, .cores_per_pkg = 128,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 2, .level = 0, .type = 1, .id_shift = 1, },
+                    { .nr_logical = 128, .level = 1, .type = 2,
+                      .id_shift = 8, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 3, .cores_per_pkg = 1,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    { .nr_logical = 3, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 1, .cores_per_pkg = 3,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 1, .level = 0, .type = 1, .id_shift = 0, },
+                    { .nr_logical = 3, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 7, .cores_per_pkg = 5,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 7, .level = 0, .type = 1, .id_shift = 3, },
+                    { .nr_logical = 35, .level = 1, .type = 2, .id_shift = 6, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 2, .cores_per_pkg = 128,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 2, .level = 0, .type = 1, .id_shift = 1, },
+                    { .nr_logical = 256, .level = 1, .type = 2,
+                      .id_shift = 8, },
+                },
+            },
+        },
+    };
+
+    printf("Testing topology synthesis from parts:\n");
+
+    for ( size_t i = 0; i < ARRAY_SIZE(tests); ++i )
+    {
+        const struct test *t = &tests[i];
+        struct cpu_policy actual = { .x86_vendor = t->policy.x86_vendor };
+        int rc = x86_topo_from_parts(&actual, t->threads_per_core,
+                                     t->cores_per_pkg);
+
+        if ( rc || memcmp(&actual.topo, &t->policy.topo, sizeof(actual.topo)) )
+        {
+#define TOPO(n, f)  t->policy.topo.subleaf[(n)].f, actual.topo.subleaf[(n)].f
+            fail("FAIL[%d] - '%s %u t/c, %u c/p'\n",
+                 rc,
+                 x86_cpuid_vendor_to_str(t->policy.x86_vendor),
+                 t->threads_per_core, t->cores_per_pkg);
+            printf("  subleaf=%u  expected_n=%u actual_n=%u\n"
+                   "             expected_lvl=%u actual_lvl=%u\n"
+                   "             expected_type=%u actual_type=%u\n"
+                   "             expected_shift=%u actual_shift=%u\n",
+                   0,
+                   TOPO(0, nr_logical),
+                   TOPO(0, level),
+                   TOPO(0, type),
+                   TOPO(0, id_shift));
+
+            printf("  subleaf=%u  expected_n=%u actual_n=%u\n"
+                   "             expected_lvl=%u actual_lvl=%u\n"
+                   "             expected_type=%u actual_type=%u\n"
+                   "             expected_shift=%u actual_shift=%u\n",
+                   1,
+                   TOPO(1, nr_logical),
+                   TOPO(1, level),
+                   TOPO(1, type),
+                   TOPO(1, id_shift));
+#undef TOPO
+        }
+    }
+}
+
 int main(int argc, char **argv)
 {
     printf("CPU Policy unit tests\n");
@@ -671,6 +802,8 @@ int main(int argc, char **argv)
     test_is_compatible_success();
     test_is_compatible_failure();
 
+    test_topo_from_parts();
+
     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 f43e1a3b21e9..116b305a1d7f 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -542,6 +542,22 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err);
 
+/**
+ * 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.
+ * @return                    0 on success; -errno on failure
+ */
+int x86_topo_from_parts(struct cpu_policy *p,
+                        unsigned int threads_per_core,
+                        unsigned int cores_per_pkg);
+
 #endif /* !XEN_LIB_X86_POLICIES_H */
 
 /*
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index 63bc96451d2c..16b09a427841 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -2,6 +2,94 @@
 
 #include <xen/lib/x86/cpu-policy.h>
 
+static unsigned int order(unsigned int n)
+{
+    ASSERT(n); /* clz(0) is UB */
+
+    return 8 * sizeof(n) - __builtin_clz(n);
+}
+
+int x86_topo_from_parts(struct cpu_policy *p,
+                        unsigned int threads_per_core,
+                        unsigned int cores_per_pkg)
+{
+    unsigned int threads_per_pkg = threads_per_core * cores_per_pkg;
+    unsigned int apic_id_size;
+
+    if ( !p || !threads_per_core || !cores_per_pkg )
+        return -EINVAL;
+
+    p->basic.max_leaf = MAX(0xb, p->basic.max_leaf);
+
+    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 = MIN(0xff, 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 = MIN(0xff, threads_per_pkg - 1);
+
+        /* TODO: Expose leaf e1E */
+        p->extd.topoext = false;
+
+        /*
+         * Clip APIC ID to 8 bits, as that's what high core-count machines do.
+         *
+         * That's what AMD EPYC 9654 does with >256 CPUs.
+         */
+        p->extd.apic_id_size = MIN(8, apic_id_size);
+
+        break;
+    }
+
+    return 0;
+}
+
 int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err)
diff --git a/xen/lib/x86/private.h b/xen/lib/x86/private.h
index 60bb82a400b7..2ec9dbee33c2 100644
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -4,6 +4,7 @@
 #ifdef __XEN__
 
 #include <xen/bitops.h>
+#include <xen/bug.h>
 #include <xen/guest_access.h>
 #include <xen/kernel.h>
 #include <xen/lib.h>
@@ -17,6 +18,7 @@
 
 #else
 
+#include <assert.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <stdbool.h>
@@ -28,6 +30,8 @@
 
 #include <xen-tools/common-macros.h>
 
+#define ASSERT(x) assert(x)
+
 static inline bool test_bit(unsigned int bit, const void *vaddr)
 {
     const char *addr = vaddr;
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808075.1219935 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9K-0004ip-Bz; Tue, 01 Oct 2024 12:38:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808075.1219935; Tue, 01 Oct 2024 12: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 1svc9K-0004fx-0D; Tue, 01 Oct 2024 12:38:42 +0000
Received: by outflank-mailman (input) for mailman id 808075;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9I-0002va-5g
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:40 +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 151b346c-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:38 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c88370ad7bso5521583a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:38 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 151b346c-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786318; x=1728391118; 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=H8EtNk4UqEXSM3dt95fWtQHR5BEwc5KpYhDQ/7z9ZIg=;
        b=goCwjj2dpIOVLsDW/6sF3h7MStEiElPR8T7ZoSYDURY6h8XAEzAq6aHSB4KYggVUyS
         yDhMyyP4ICusImwxclGhYCJ6DPskEc0VnwQzxZxpo6Yt2yDDainjHSHR5PYhrmxqHH80
         3cVVqsc4iv6ZrSlGM2jxjNbrYLELGdz8Szt44=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786318; x=1728391118;
        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=H8EtNk4UqEXSM3dt95fWtQHR5BEwc5KpYhDQ/7z9ZIg=;
        b=XN3DiPZ36q7UdDjy/S39tAG4YW8vPxHUzgU28wH7HAvim8fy71f0BjmvqKa0zcyNLf
         VW92inYJoUijoP2Qwz+ZUiHqwFxaWrIC3PqFoujIFlnWESfvqWlBJ1U3rki1TiGa6XCq
         gH/dRHvpIw0VdvQrROw9iONiNXLZE+rtfu6CSGE2Mb832SIjxHVtneiHb9Om32/byIzl
         mhWdJS4m+RnI7TgpfsoYTRF4yEkySj1RuxZah3MhkkjyI80U0mDHxyAJ0PtYFAT54Hzo
         b5P34n37HQL4w+atCY4kEV1PiRT8EMGMljKzf23hB6p1Zuk8NGML3gPhxIsBota8aJIs
         R4+A==
X-Gm-Message-State: AOJu0Yxi7s+tHuJO9QbHaCZfvX8zFQ3pKqvYH2Km8+FYda2/CS5G4FG/
	ZU/r3EQGKWbNXh0W9NmaHBOuvgGTfKFCNOx71yx+uJoLjnnoGHbmY9vdaawJqhO1ZUA4lRlz0zP
	cbiI=
X-Google-Smtp-Source: AGHT+IFMXDOf/Otw2ehiWab//1ldD17rCzZeR9uZJz+L6BvKjmRUSVvVl6d+NaZy3/Zdw6iDz2ysIA==
X-Received: by 2002:a05:6402:518b:b0:5c8:957a:b1e5 with SMTP id 4fb4d7f45d1cf-5c8957ab4fdmr6601697a12.16.1727786317202;
        Tue, 01 Oct 2024 05:38:37 -0700 (PDT)
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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v6 09/11] xen/x86: Derive topologically correct x2APIC IDs from the policy
Date: Tue,  1 Oct 2024 13:38:05 +0100
Message-ID: <20241001123807.605-10-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-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 extended 0x26 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 | 68 +++++++++++++++++++++
 xen/include/xen/lib/x86/cpu-policy.h     | 11 ++++
 xen/lib/x86/policy.c                     | 76 ++++++++++++++++++++++++
 3 files changed, 155 insertions(+)

diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c
index 870f7ecee0e5..ae7fc46a47d2 100644
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -785,6 +785,73 @@ static void test_topo_from_parts(void)
     }
 }
 
+static void test_x2apic_id_from_vcpu_id_success(void)
+{
+    static const struct test {
+        unsigned int vcpu_id;
+        unsigned int threads_per_core;
+        unsigned int cores_per_pkg;
+        uint32_t x2apic_id;
+        uint8_t x86_vendor;
+    } tests[] = {
+        {
+            .vcpu_id = 3, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = 1 << 2,
+        },
+        {
+            .vcpu_id = 6, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = 2 << 2,
+        },
+        {
+            .vcpu_id = 24, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = 1 << 5,
+        },
+        {
+            .vcpu_id = 35, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = (35 % 3) | (((35 / 3) % 8) << 2) | ((35 / 24) << 5),
+        },
+        {
+            .vcpu_id = 96, .threads_per_core = 7, .cores_per_pkg = 3,
+            .x2apic_id = (96 % 7) | (((96 / 7) % 3) << 3) | ((96 / 21) << 5),
+        },
+    };
+
+    const uint8_t vendors[] = {
+        X86_VENDOR_INTEL,
+        X86_VENDOR_AMD,
+        X86_VENDOR_CENTAUR,
+        X86_VENDOR_SHANGHAI,
+        X86_VENDOR_HYGON,
+    };
+
+    printf("Testing x2apic id from vcpu id success:\n");
+
+    /* Perform the test run on every vendor we know about */
+    for ( size_t i = 0; i < ARRAY_SIZE(vendors); ++i )
+    {
+        for ( size_t j = 0; j < ARRAY_SIZE(tests); ++j )
+        {
+            struct cpu_policy policy = { .x86_vendor = vendors[i] };
+            const struct test *t = &tests[j];
+            uint32_t x2apic_id;
+            int rc = x86_topo_from_parts(&policy, t->threads_per_core,
+                                         t->cores_per_pkg);
+
+            if ( rc ) {
+                fail("FAIL[%d] - 'x86_topo_from_parts() failed", rc);
+                continue;
+            }
+
+            x2apic_id = x86_x2apic_id_from_vcpu_id(&policy, t->vcpu_id);
+            if ( x2apic_id != t->x2apic_id )
+                fail("FAIL - '%s cpu%u %u t/c %u c/p'. bad x2apic_id: expected=%u actual=%u\n",
+                     x86_cpuid_vendor_to_str(policy.x86_vendor),
+                     t->vcpu_id, t->threads_per_core, t->cores_per_pkg,
+                     t->x2apic_id, x2apic_id);
+        }
+    }
+}
+
 int main(int argc, char **argv)
 {
     printf("CPU Policy unit tests\n");
@@ -803,6 +870,7 @@ int main(int argc, char **argv)
     test_is_compatible_failure();
 
     test_topo_from_parts();
+    test_x2apic_id_from_vcpu_id_success();
 
     if ( nr_failures )
         printf("Done: %u failures\n", nr_failures);
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index 116b305a1d7f..6fe19490d290 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -542,6 +542,17 @@ 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
+ *
+ * If the policy lacks leaf 0xb falls back to legacy mapping of apic_id=cpu*2
+ *
+ * @param p          CPU policy of the domain.
+ * @param 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 id);
+
 /**
  * Synthesise topology information in `p` given high-level constraints
  *
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index 16b09a427841..6dd9a2900ad7 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -2,6 +2,82 @@
 
 #include <xen/lib/x86/cpu-policy.h>
 
+static uint32_t parts_per_higher_scoped_level(const struct cpu_policy *p,
+                                              size_t lvl)
+{
+    /*
+     * `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.
+     */
+    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 extended 0x26) 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;
+}
+
 static unsigned int order(unsigned int n)
 {
     ASSERT(n); /* clz(0) is UB */
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808076.1219942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9L-00050p-8Q; Tue, 01 Oct 2024 12:38:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808076.1219942; Tue, 01 Oct 2024 12: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 1svc9K-0004wn-VF; Tue, 01 Oct 2024 12:38:42 +0000
Received: by outflank-mailman (input) for mailman id 808076;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9J-0002va-D8
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:41 +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 15db92a5-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:39 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c88e6926e5so3117056a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:39 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15db92a5-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786319; x=1728391119; 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=loD1s7lD9RQwYiYkR/KqljzHBIRiq3F0/w5l0wcOKk4=;
        b=lRwPWjC1+GOBooJw/ZmNT+yNRs05ArKUQsNLISw6uXzXqC2jdScaOMETJ81FFBCA8C
         DfQkVa5FjVyn1tPEgmncZFUIsno27vtgSuTx3XssHEK61CrC/mUGwnwttKPf3z7hXTBE
         DNO2L5DLtee9zSoSKDLmeL4UVVS+ZkGMlxPvQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786319; x=1728391119;
        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=loD1s7lD9RQwYiYkR/KqljzHBIRiq3F0/w5l0wcOKk4=;
        b=v1EgebWgAmGafu0FaOvBXfPtB+1iw4StY87of7JJCCeDWxqpcxzF5NYZDF/9otwJeJ
         V0jr/o8k5VHun30fDICF5vvc5L+3YqBIj17pdzAW9H85jUA2cvcG1JG8z8fkp2vB2WUz
         b/lV8ROxLpx8ax05bNZ6jLrOmSqeSvYqer+UnuZIVwvgYavQ9rasMrPSLJ/ejTa7DfUp
         yrcUXqXOPchOEtnJYSTbv19eINEyRyWcPyrSL7tUII6+nbAoUhnTH0hF6Y/XPbKNa4pD
         UwooYLJaGw/cToir9qI1CyRIHPutKU2mVpVmliJtvs8heT2NnwxzWOcgDwhBbHuiIfQt
         8EYA==
X-Gm-Message-State: AOJu0Yz5ACvoeBRIlUQ8X4sHQDHGDqK6m6+qQqRPXSCxVZcm4SR4nzcm
	HRhTO/WnQ13pYAzr4utXLljHClfSSuWldrLn+juOcWcUXHAOaGty0miR+0ulPJH9i3kTOSytDtP
	vhUQ=
X-Google-Smtp-Source: AGHT+IH7TXEWvP98DHoKzQLTgruBwNIYgU5z1sa88Jq6yvRRgPSXxfpVWGnb88wWJ82YX1JB5jB/dA==
X-Received: by 2002:a05:6402:3584:b0:5c5:cf0b:b515 with SMTP id 4fb4d7f45d1cf-5c8824cc677mr11031275a12.1.1727786318964;
        Tue, 01 Oct 2024 05:38:38 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	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 v6 11/11] tools/x86: Synthesise domain topologies
Date: Tue,  1 Oct 2024 13:38:07 +0100
Message-ID: <20241001123807.605-12-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Expose sensible topologies in leaf 0xb. At the moment it synthesises
non-HT systems, in line with the previous code intent.

Leaf 0xb in the host policy is no longer zapped and the guest {max,def}
policies have their topology leaves zapped instead. The intent is for
toolstack to populate them. There's no current use for the topology
information in the host policy, but it makes no harm.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v6:
  * Assign accurate APIC IDs to xc_dom_img->cpu_to_apicid
    * New field in v6. Allows ACPI generation to be correct on PVH too.
---
 tools/include/xenguest.h        |  3 +++
 tools/libs/guest/xg_cpuid_x86.c | 29 ++++++++++++++++++++++++++++-
 tools/libs/light/libxl_dom.c    | 22 +++++++++++++++++++++-
 xen/arch/x86/cpu-policy.c       |  9 ++++++---
 4 files changed, 58 insertions(+), 5 deletions(-)

diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index aa50b78dfb89..dcabf219b9cb 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -831,6 +831,9 @@ int xc_set_domain_cpu_policy(xc_interface *xch, uint32_t domid,
 
 uint32_t xc_get_cpu_featureset_size(void);
 
+/* Returns the APIC ID of the `cpu`-th CPU according to `policy` */
+uint32_t xc_cpu_to_apicid(const xc_cpu_policy_t *policy, unsigned int cpu);
+
 enum xc_static_cpu_featuremask {
     XC_FEATUREMASK_KNOWN,
     XC_FEATUREMASK_SPECIAL,
diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c
index 4453178100ad..c591f8732a1a 100644
--- a/tools/libs/guest/xg_cpuid_x86.c
+++ b/tools/libs/guest/xg_cpuid_x86.c
@@ -725,8 +725,16 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
         p->policy.basic.htt       = test_bit(X86_FEATURE_HTT, host_featureset);
         p->policy.extd.cmp_legacy = test_bit(X86_FEATURE_CMP_LEGACY, host_featureset);
     }
-    else
+    else if ( restore )
     {
+        /*
+         * Reconstruct the topology exposed on Xen <= 4.13. It makes very little
+         * sense, but it's what those guests saw so it's set in stone now.
+         *
+         * Guests from Xen 4.14 onwards carry their own CPUID leaves in the
+         * migration stream so they don't need special treatment.
+         */
+
         /*
          * 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.
@@ -782,6 +790,20 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
             break;
         }
     }
+    else
+    {
+        /* TODO: Expose the ability to choose a custom topology for HVM/PVH */
+        unsigned int threads_per_core = 1;
+        unsigned int cores_per_pkg = di.max_vcpu_id + 1;
+
+        rc = x86_topo_from_parts(&p->policy, threads_per_core, cores_per_pkg);
+        if ( rc )
+        {
+            ERROR("Failed to generate topology: rc=%d t/c=%u c/p=%u",
+                  rc, threads_per_core, cores_per_pkg);
+            goto out;
+        }
+    }
 
     nr_leaves = ARRAY_SIZE(p->leaves);
     rc = x86_cpuid_copy_to_buffer(&p->policy, p->leaves, &nr_leaves);
@@ -1028,3 +1050,8 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host,
 
     return false;
 }
+
+uint32_t xc_cpu_to_apicid(const xc_cpu_policy_t *policy, unsigned int cpu)
+{
+    return x86_x2apic_id_from_vcpu_id(&policy->policy, cpu);
+}
diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c
index 7f9c6eaa8b24..8dbfc5b7df61 100644
--- a/tools/libs/light/libxl_dom.c
+++ b/tools/libs/light/libxl_dom.c
@@ -1063,6 +1063,9 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
     libxl_domain_build_info *const info = &d_config->b_info;
     struct xc_dom_image *dom = NULL;
     bool device_model = info->type == LIBXL_DOMAIN_TYPE_HVM ? true : false;
+#if defined(__i386__) || defined(__x86_64__)
+    struct xc_cpu_policy *policy = NULL;
+#endif
 
     xc_dom_loginit(ctx->xch);
 
@@ -1083,8 +1086,22 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
     dom->container_type = XC_DOM_HVM_CONTAINER;
 
 #if defined(__i386__) || defined(__x86_64__)
+    policy = xc_cpu_policy_init();
+    if (!policy) {
+        LOGE(ERROR, "xc_cpu_policy_get_domain failed d%u", domid);
+        rc = ERROR_NOMEM;
+        goto out;
+    }
+
+    rc = xc_cpu_policy_get_domain(ctx->xch, domid, policy);
+    if (rc != 0) {
+        LOGE(ERROR, "xc_cpu_policy_get_domain failed d%u", domid);
+        rc = ERROR_FAIL;
+        goto out;
+    }
+
     for ( uint32_t i = 0; i < info->max_vcpus; i++ )
-        dom->cpu_to_apicid[i] = 2 * i; /* TODO: Replace by topo calculation */
+        dom->cpu_to_apicid[i] = xc_cpu_to_apicid(policy, i);
 #endif
 
     /* The params from the configuration file are in Mb, which are then
@@ -1214,6 +1231,9 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
 out:
     assert(rc != 0);
     if (dom != NULL) xc_dom_release(dom);
+#if defined(__i386__) || defined(__x86_64__)
+    xc_cpu_policy_destroy(policy);
+#endif
     return rc;
 }
 
diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index b6d9fad56773..39c0aba9ea36 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -266,9 +266,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;
@@ -616,6 +613,9 @@ static void __init calculate_pv_max_policy(void)
     recalculate_xstate(p);
 
     p->extd.raw[0xa] = EMPTY_LEAF; /* No SVM for PV guests. */
+
+    /* Wipe host topology. Populated by toolstack */
+    memset(p->topo.raw, 0, sizeof(p->topo.raw));
 }
 
 static void __init calculate_pv_def_policy(void)
@@ -779,6 +779,9 @@ static void __init calculate_hvm_max_policy(void)
 
     /* It's always possible to emulate CPUID faulting for HVM guests */
     p->platform_info.cpuid_faulting = true;
+
+    /* Wipe host topology. Populated by toolstack */
+    memset(p->topo.raw, 0, sizeof(p->topo.raw));
 }
 
 static void __init calculate_hvm_def_policy(void)
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 12:38:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 12:38:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808077.1219950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svc9L-00057q-SQ; Tue, 01 Oct 2024 12:38:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808077.1219950; Tue, 01 Oct 2024 12: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 1svc9L-000568-Dt; Tue, 01 Oct 2024 12:38:43 +0000
Received: by outflank-mailman (input) for mailman id 808077;
 Tue, 01 Oct 2024 12:38: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=qrgx=Q5=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1svc9J-0002va-KC
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 12:38:41 +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 15ebfffa-7ff2-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 14:38:40 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c5b954c359so6038464a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 05:38:40 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.166.251.127])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6132630a12.70.2024.10.01.05.38.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Oct 2024 05:38:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15ebfffa-7ff2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727786318; x=1728391118; 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=8x1lOX8g1vjbtkMDhxskapyryrttGg/PykaAfYqF8tI=;
        b=baxaGIXcP3jQ933yqIwqo9lTTvGoIHP0N/hxtz3HgtD0xPMU8qCCc4+mAvkAELhrSs
         qtGoo30FCpRS0LoLJY2W4at9TnoCtg6gjIBs2e0RbhFcVGaLp+EDYVzSRE9Ae19jlZS5
         0pw17vyu8mcfnSdCmmTwqLNf1oRdLTebJb8T0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727786318; x=1728391118;
        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=8x1lOX8g1vjbtkMDhxskapyryrttGg/PykaAfYqF8tI=;
        b=GetAM0vYdt1nqzwHJd9CQV0JlH8rGfIGdeH19jYVeBFLlXZto8D6GHy77JwSe7uRzH
         3Wcz7oDtgbGrnFSmfqN+m71hDDTBdKWoaOFJvOhNUOkv83IJvAu+5QM0v+gVWCYZg/xK
         E4IDAVGy63GQVaYy+Twgw3xoi1Bn+JGdDbWrHFVhcC4w/RwsAkNiGcx8lXfSR+0dzaJa
         RZToGAzeJijzAPQLYoh31dFscLgeDwVuq3v3PPh58F8zs0qumbn/OLaP/IIl9BXaHUM1
         vD9LpTGhTOWGK/JP4n1ZSkPZm+hhATkKWKrhATFxpWHjZqSMoPpoR9mW5vbzlsz9Wxa6
         uFXg==
X-Gm-Message-State: AOJu0YwLa2eaHso3jE51RSLZAVCiSIlr7OzEGmiNYmxfXhP/SqRnzRRx
	ERKGaQopARRLGSAIHTXkAzTBrpU9hNEGvBmZZ0XHV5dwAmMaD0kTtzmDK4qBGb90888SFeyfq4y
	nSV0=
X-Google-Smtp-Source: AGHT+IFRKz3oQ8e7LGS9CnwBZ3WyAqbsPQuyesyNlrJd3Sb7NZ9423l2OBIfQ/GVRadeo1LeO5YZEQ==
X-Received: by 2002:a05:6402:40c5:b0:5c0:b793:df4e with SMTP id 4fb4d7f45d1cf-5c8825fd1eemr13517406a12.22.1727786317828;
        Tue, 01 Oct 2024 05:38:37 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v6 10/11] tools/libguest: Set distinct x2APIC IDs for each vCPU
Date: Tue,  1 Oct 2024 13:38:06 +0100
Message-ID: <20241001123807.605-11-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241001123807.605-1-alejandro.vallejo@cloud.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Have toolstack populate the new x2APIC ID in the LAPIC save record with
the proper IDs intended for each vCPU.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v6:
  * Rely on the new LUT in xc_dom_image rather than recalculating APIC IDs.
---
 tools/libs/guest/xg_dom_x86.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/tools/libs/guest/xg_dom_x86.c b/tools/libs/guest/xg_dom_x86.c
index c98229317db7..38486140ed15 100644
--- a/tools/libs/guest/xg_dom_x86.c
+++ b/tools/libs/guest/xg_dom_x86.c
@@ -1004,11 +1004,14 @@ static int vcpu_hvm(struct xc_dom_image *dom)
         HVM_SAVE_TYPE(HEADER) header;
         struct hvm_save_descriptor mtrr_d;
         HVM_SAVE_TYPE(MTRR) mtrr;
+        struct hvm_save_descriptor lapic_d;
+        HVM_SAVE_TYPE(LAPIC) lapic;
         struct hvm_save_descriptor end_d;
         HVM_SAVE_TYPE(END) end;
     } vcpu_ctx;
-    /* Context from full_ctx */
+    /* Contexts from full_ctx */
     const HVM_SAVE_TYPE(MTRR) *mtrr_record;
+    const HVM_SAVE_TYPE(LAPIC) *lapic_record;
     /* Raw context as taken from Xen */
     uint8_t *full_ctx = NULL;
     int rc;
@@ -1111,6 +1114,8 @@ static int vcpu_hvm(struct xc_dom_image *dom)
     vcpu_ctx.mtrr_d.typecode = HVM_SAVE_CODE(MTRR);
     vcpu_ctx.mtrr_d.length = HVM_SAVE_LENGTH(MTRR);
     vcpu_ctx.mtrr = *mtrr_record;
+    vcpu_ctx.lapic_d.typecode = HVM_SAVE_CODE(LAPIC);
+    vcpu_ctx.lapic_d.length = HVM_SAVE_LENGTH(LAPIC);
     vcpu_ctx.end_d = bsp_ctx.end_d;
     vcpu_ctx.end = bsp_ctx.end;
 
@@ -1125,6 +1130,18 @@ static int vcpu_hvm(struct xc_dom_image *dom)
     {
         vcpu_ctx.mtrr_d.instance = i;
 
+        lapic_record = hvm_get_save_record(full_ctx, HVM_SAVE_CODE(LAPIC), i);
+        if ( !lapic_record )
+        {
+            xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
+                         "%s: unable to get LAPIC[%d] save record", __func__, i);
+            goto out;
+        }
+
+        vcpu_ctx.lapic = *lapic_record;
+        vcpu_ctx.lapic.x2apic_id = dom->cpu_to_apicid[i];
+        vcpu_ctx.lapic_d.instance = i;
+
         rc = xc_domain_hvm_setcontext(dom->xch, dom->guest_domid,
                                       (uint8_t *)&vcpu_ctx, sizeof(vcpu_ctx));
         if ( rc != 0 )
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 13:03:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 13:03:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808138.1219977 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svcXU-0005m7-S5; Tue, 01 Oct 2024 13:03:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808138.1219977; Tue, 01 Oct 2024 13: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 1svcXU-0005m0-PT; Tue, 01 Oct 2024 13:03:40 +0000
Received: by outflank-mailman (input) for mailman id 808138;
 Tue, 01 Oct 2024 13: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 1svcXT-0005lq-O4; Tue, 01 Oct 2024 13: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 1svcXT-0002nJ-HW; Tue, 01 Oct 2024 13: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 1svcXT-00067W-4c; Tue, 01 Oct 2024 13:03:39 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svcXT-0003y5-48; Tue, 01 Oct 2024 13: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=8GvsMSoMf32LHl/GLbx1UZWynufNjShakodOFt6DV5E=; b=1naVJO28dBnWo9xjpzkA6Wu+5y
	Ia0A1w3XFa7AUodKGCed9EeFZHoSPEzeKkwdXXsJq0CNK6pi9yuLQCDGeDfBRS0mHx5GwFP2kiEq2
	Aje51IpRFY9eY+wCJm6lc/ynGgyO5FpzrxVdeEcD0F/YrRYsAmlKw7ZDjgfqsvP76jm4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187912-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187912: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-libvirt-raw:guest-saverestore:fail:heisenbug
    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: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-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-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-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-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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-libvirt: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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=e32cde8d2bd7d251a8f9b434143977ddf13dcec6
X-Osstest-Versions-That:
    linux=9852d85ec9d492ebef56dc5f229416c925758edc
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 01 Oct 2024 13:03:39 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-raw 16 guest-saverestore   fail pass in 187923-retest
 test-armhf-armhf-xl          10 host-ping-check-xen fail pass in 187923-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl         15 migrate-support-check fail in 187923 never pass
 test-armhf-armhf-xl     16 saverestore-support-check fail in 187923 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187902
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187902
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187902
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187902
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187902
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187902
 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-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                e32cde8d2bd7d251a8f9b434143977ddf13dcec6
baseline version:
 linux                9852d85ec9d492ebef56dc5f229416c925758edc

Last test of basis   187902  2024-09-30 04:04:48 Z    1 days
Testing same since   187912  2024-09-30 20:42:51 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Baokun Li <libaokun1@huawei.com>
  Christian Brauner <brauner@kernel.org>
  David Howells <dhowells@redhat.com>
  David Vernet <void@manifault.com>
  Guenter Roeck <linux@roeck-us.net>
  Kent Overstreet <kent.overstreet@linux.dev>
  Linus Torvalds <torvalds@linux-foundation.org>
  Marc Dionne <marc.dionne@auristor.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Oleg Nesterov <oleg@redhat.com>
  Tejun Heo <tj@kernel.org>
  Thorsten Blum <thorsten.blum@toblux.com>
  Zhang Qiao <zhangqiao22@huawei.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                                          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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 fail    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   9852d85ec9d4..e32cde8d2bd7  e32cde8d2bd7d251a8f9b434143977ddf13dcec6 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 13:27:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 13:27:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808149.1219995 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svcuY-0001Xx-CI; Tue, 01 Oct 2024 13:27:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808149.1219995; Tue, 01 Oct 2024 13:27: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 1svcuY-0001Xg-4E; Tue, 01 Oct 2024 13:27:30 +0000
Received: by outflank-mailman (input) for mailman id 808149;
 Tue, 01 Oct 2024 13:27: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=/tO+=Q5=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1svcuW-0001Sn-Mf
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 13:27:28 +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 e6288736-7ff8-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 15:27:26 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c88b5c375fso4253656a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 06:27:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e6288736-7ff8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727789245; x=1728394045; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=Dt3C/NC9vPU0cHuCkTJoUbi8OAiwoNFojZ4xIPKaIu0=;
        b=ThTw2csxBKYz2AwmaaC3Hob2Uwtj3XPjteaFbiP5R1RScxnyhSvm0dEX2yMEAUkf7Q
         kEvJ2Oa1crWRnFhyy6qY908e9OLMkN9Z7Y/4CzPxSZZcmNKgzI18W3xGkxdvRadRiZOc
         kDDLUa+2h43jeTSZdrStd5YLZcmztxSkx2L0o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727789245; x=1728394045;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Dt3C/NC9vPU0cHuCkTJoUbi8OAiwoNFojZ4xIPKaIu0=;
        b=CoDgucNHk1fsGdYAL6y6ADvIgwJ4PK+2Bjgg/E6ghddYWh8LAmOqMqqyGZS8lzJrYC
         JLQz7kFamQWOpYwTEnNNw2QZbFUBoOCaJiWzLWYIIs095yNnt49DllVeXo3zRtpE1wU7
         RC1ZjPprFwyH0PngqOCktTc8uA+1mfI7KmKaLDkbhykjvukO/iqeqBCsG9Cz0UE7UHsa
         ZKhopCu96aQHPgeDql9Xb4d1Dz9i9po7g+scpM0iT300N1hYiXKmjdffiu9Hra9nNEhl
         fR0/Rb35BNtVC5fuD6DPvtK4ISaspkei/qLl+V32ATDy55mvEa+/2rvp0cHXq67kDki0
         LIKQ==
X-Gm-Message-State: AOJu0YzrROw73SviPhBwRFwsghGkRofyrAjO/ds2VLQF6+YzW2fQ5DfW
	0KlmiiaJxFiFQMe0LDB9lcGapUN+nH/7Ty/qug/hwHyRw8/mKZnaJcFiA661jwehkqpOH4QHNFn
	s8mtlFnU5xdxPCQ07KYKUsXHThM9GIOmCZjUWxjmhK4pG7LtB
X-Google-Smtp-Source: AGHT+IEXA8DCHn0NHJChL3tCzBrHaDTZlunllMLVC4+ksJOsR9sk054DjbzjHalcNeyhxiXL5I768uhneRTsaZXqHW4=
X-Received: by 2002:a05:6402:3890:b0:5c7:227f:39e4 with SMTP id
 4fb4d7f45d1cf-5c882603b44mr14313532a12.31.1727789245275; Tue, 01 Oct 2024
 06:27:25 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 1 Oct 2024 14:26:49 +0100
Message-ID: <CAO-mL=xm_C_0XNy49hQjtrOqDs_di4LT4fK-WTbhVXtnddQ_bw@mail.gmail.com>
Subject: SAVE THE DATE - Next Xen Project Meetup (Cambridge)
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org
Cc: Xen Project Advisory Board <advisory-board@lists.xenproject.org>, 
	"committers @ xenproject . org" <committers@xenproject.org>
Content-Type: multipart/alternative; boundary="00000000000036515706236a486d"

--00000000000036515706236a486d
Content-Type: text/plain; charset="UTF-8"

Hi all,

I'm pleased to announce the next Xen Project meetup in Cambridge!


*Please save the date: Thursday 24th October 2024*

*Location: XenServer office (Citrix), 101 Cambridge Science Park Rd,
Milton, Cambridge CB4 0FY*
*Time: 18:00 - 20:00 *

What to expect?
A developer social with food and drinks included!
Informative sessions from speakers within the community (more details to
follow).
This is free to attend, but you will need to register *HERE
<https://docs.google.com/forms/d/e/1FAIpQLScQS15qh_IAUhmbTy2gNmfxNzaVuI5QDw3G6oBa0rmrVt5-2w/viewform?usp=sf_link>.
*

We are looking for a sponsor, so if your company wishes to support us
please get in touch with me.

Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>

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

<div dir=3D"ltr">Hi all,<div><br></div><div>I&#39;m pleased to announce the=
 next Xen Project meetup in Cambridge!=C2=A0</div><div><br></div><div><b>Pl=
ease save the date: <br>Thursday 24th October 2024</b></div><div><b>Locatio=
n: <br>XenServer office (Citrix), 101 Cambridge Science Park Rd, Milton, Ca=
mbridge CB4 0FY</b></div><div><b>Time: 18:00 - 20:00=C2=A0</b></div><div><b=
><br></b></div><div>What to expect?</div><div>A developer social with food =
and drinks included!</div><div>Informative sessions from speakers within th=
e community (more details to follow).</div><div>This is free to attend,=C2=
=A0but <font color=3D"#ff0000">you will need to register=C2=A0<b><a href=3D=
"https://docs.google.com/forms/d/e/1FAIpQLScQS15qh_IAUhmbTy2gNmfxNzaVuI5QDw=
3G6oBa0rmrVt5-2w/viewform?usp=3Dsf_link" target=3D"_blank">HERE</a>.=C2=A0<=
/b></font></div><div><br></div><div>We are looking for a sponsor, so if you=
r company wishes to support us please get in touch with me.</div><div><br><=
/div><div><div><div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D=
"gmail_signature"><div dir=3D"ltr"><div>Kelly Choi<br></div><div><div style=
=3D"color:rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(=
136,136,136)"><a href=3D"https://xenproject.org/" target=3D"_blank">Xen Pro=
ject</a><br></div></div></div></div></div></div></div>

--00000000000036515706236a486d--


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 13:30:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 13:30:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808175.1220015 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svcxn-0003wk-Le; Tue, 01 Oct 2024 13:30:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808175.1220015; Tue, 01 Oct 2024 13:30: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 1svcxn-0003wd-Il; Tue, 01 Oct 2024 13:30:51 +0000
Received: by outflank-mailman (input) for mailman id 808175;
 Tue, 01 Oct 2024 13:30: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svcxm-0003uV-Py
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 13:30:50 +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 5efe9cf7-7ff9-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 15:30:49 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a8d56155f51so709880066b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 06:30:49 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2948231sm715824766b.99.2024.10.01.06.30.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 06:30:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5efe9cf7-7ff9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727789448; x=1728394248; 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=S5WuTphazNZYZ0CgrYRJBRQ/yCKD6Pl2sAhjVGoogdQ=;
        b=g9Eo62umjCgTTyR37b/2S4qetKG1ySr21IOUj1zE7TJeRRiagGRk0VuVu9zq+s8bkQ
         n/OSJ8dsfDUV1Udwwd41ogOBX0TnGI/8/vhB0f+QuZEs8JFihOcd8DjRTKR+LUZMl7fY
         pe7tvX/IWjT+JKgRAB91moZeOPaPKhIvzKO7CnCCnW5ttlSHng0F4QCgmAJE+l2+41uC
         JAcgQK0VtksAmKgWJMKPB2Xc7YlhUxgOoopQN1IlENc+8hf8XgSB2lMArriVCS02yuDp
         /P8Qh2pYwcbgCHLRbIrt5ILsrreMv14fe9W7bzBxADEZWjuSf2GqCG9mbjrOf3X+5Waa
         UYaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727789448; x=1728394248;
        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=S5WuTphazNZYZ0CgrYRJBRQ/yCKD6Pl2sAhjVGoogdQ=;
        b=gUDzrB+gGuusbJ0NRIVO52NilFm7H6l8sRtuAVEwESwn7PfX9OcPtx1p06wckax2mt
         gpFRG+FY/bJVy45BTKh+FDqXns3Wg5Qu3L0/pW81XPlu7tkFt6ZTTYmMOa5tK2oFXwnN
         4t/sfq+kH9W2I3APxo7qWi/6cQx57XG0F07WB+YfKz99/slAO80dyO6oPu3h4FktOZrF
         5au2QB4JhnzxxkKJLIrpuOVjyp+1uMCcOeg98pTRwzAoDCjS3k1OlJfEttLdX8b7Fg9K
         8xv0ERB0tah/bs1+HQhK73k68PQ/EpKSVlOMN07X7koPLWfRd+bBKit5A1qryQv0RG45
         hVtw==
X-Gm-Message-State: AOJu0YxjUqVM1k51YT4BtMvDNOKr7o+m8heLXApqGydInXOMlv1zA8qV
	JfNLvqBKN0LUM/saeLQbQnUWnMK+5TxSe0eqVZrY2lIFGboB5ypw+4vyph1GILoQnoYPqv+Bw7o
	=
X-Google-Smtp-Source: AGHT+IGouu6gIMK8rlU06Z13YdQrYPPpL8KYQyFMX697AYjdT8Va0+HSXUQMN0TNJWZ8RRyS4kxiog==
X-Received: by 2002:a17:907:7fa9:b0:a8d:4db8:9edf with SMTP id a640c23a62f3a-a93c4ae1292mr1832424466b.42.1727789448314;
        Tue, 01 Oct 2024 06:30:48 -0700 (PDT)
Message-ID: <e3ba27ee-1534-40c1-b635-17ff89f50a6b@suse.com>
Date: Tue, 1 Oct 2024 15:30:46 +0200
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>,
 =?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>,
 Michal Orzel <michal.orzel@amd.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v3] types: replace remaining uses of s64
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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

... and move the type itself to linux-compat.h. An exception being
arch/arm/arm64/cpufeature.c, which is to use linux-compat.h instead.

While doing so
- correct the type of union uu's uq field in lib/divmod.c,
- switch a few adjacent types as well, for (a little bit of)
  consistency.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
v3: Use linux-compat.h in arch/arm/arm64/cpufeature.c.
v2: Split off ubsan.[ch] adjustments. Re-base.

--- a/xen/arch/arm/arm64/cpufeature.c
+++ b/xen/arch/arm/arm64/cpufeature.c
@@ -72,6 +72,7 @@
 #include <xen/bug.h>
 #include <xen/types.h>
 #include <xen/kernel.h>
+#include <xen/linux-compat.h>
 #include <asm/sysregs.h>
 #include <asm/cpufeature.h>
 #include <asm/arm64/cpufeature.h>
--- a/xen/arch/arm/arm64/livepatch.c
+++ b/xen/arch/arm/arm64/livepatch.c
@@ -119,7 +119,7 @@ static u64 do_reloc(enum aarch64_reloc_o
 
 static int reloc_data(enum aarch64_reloc_op op, void *place, u64 val, int len)
 {
-    s64 sval = do_reloc(op, place, val);
+    int64_t sval = do_reloc(op, place, val);
 
     switch ( len )
     {
@@ -136,7 +136,7 @@ static int reloc_data(enum aarch64_reloc
         break;
 
     case 64:
-        *(s64 *)place = sval;
+        *(int64_t *)place = sval;
         break;
 
     default:
@@ -155,9 +155,9 @@ enum aarch64_insn_movw_imm_type {
 static int reloc_insn_movw(enum aarch64_reloc_op op, void *dest, u64 val,
                            int lsb, enum aarch64_insn_movw_imm_type imm_type)
 {
-    u64 imm;
-    s64 sval;
-    u32 insn = *(u32 *)dest;
+    uint64_t imm;
+    int64_t sval;
+    uint32_t insn = *(uint32_t *)dest;
 
     sval = do_reloc(op, dest, val);
     imm = sval >> lsb;
@@ -200,9 +200,9 @@ static int reloc_insn_movw(enum aarch64_
 static int reloc_insn_imm(enum aarch64_reloc_op op, void *dest, u64 val,
                           int lsb, int len, enum aarch64_insn_imm_type imm_type)
 {
-    u64 imm, imm_mask;
-    s64 sval;
-    u32 insn = *(u32 *)dest;
+    uint64_t imm, imm_mask;
+    int64_t sval;
+    uint32_t insn = *(uint32_t *)dest;
 
     /* Calculate the relocation value. */
     sval = do_reloc(op, dest, val);
@@ -220,7 +220,7 @@ static int reloc_insn_imm(enum aarch64_r
      * Extract the upper value bits (including the sign bit) and
      * shift them to bit 0.
      */
-    sval = (s64)(sval & ~(imm_mask >> 1)) >> (len - 1);
+    sval = (int64_t)(sval & ~(imm_mask >> 1)) >> (len - 1);
 
     /*
      * Overflow has occurred if the upper bits are not all equal to
--- a/xen/arch/arm/include/asm/arm64/cpufeature.h
+++ b/xen/arch/arm/include/asm/arm64/cpufeature.h
@@ -39,15 +39,15 @@ struct arm64_ftr_bits {
 	bool		visible;
 	bool		strict;	/* CPU Sanity check: strict matching required ? */
 	enum ftr_type	type;
-	u8		shift;
-	u8		width;
-	s64		safe_val; /* safe value for FTR_EXACT features */
+	uint8_t		shift;
+	uint8_t		width;
+	int64_t		safe_val; /* safe value for FTR_EXACT features */
 };
 
 static inline int attr_const
 cpuid_feature_extract_signed_field_width(u64 features, int field, int width)
 {
-	return (s64)(features << (64 - width - field)) >> (64 - width);
+	return (int64_t)(features << (64 - width - field)) >> (64 - width);
 }
 
 static inline int attr_const
@@ -87,9 +87,12 @@ cpuid_feature_extract_field(u64 features
 	return cpuid_feature_extract_field_width(features, field, 4, sign);
 }
 
-static inline s64 arm64_ftr_value(const struct arm64_ftr_bits *ftrp, u64 val)
+static inline int64_t arm64_ftr_value(const struct arm64_ftr_bits *ftrp,
+                                      uint64_t val)
 {
-	return (s64)cpuid_feature_extract_field_width(val, ftrp->shift, ftrp->width, ftrp->sign);
+	return (int64_t)cpuid_feature_extract_field_width(val, ftrp->shift,
+							  ftrp->width,
+							  ftrp->sign);
 }
 
 #endif /* _ASM_ARM_ARM64_CPUFEATURES_H */
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1223,7 +1223,7 @@ void vlapic_tdt_msr_set(struct vlapic *v
     if ( value > guest_tsc )
     {
         uint64_t delta = gtsc_to_gtime(v->domain, value - guest_tsc);
-        delta = max_t(s64, delta, 0);
+        delta = max_t(int64_t, delta, 0);
 
         HVM_DBG_LOG(DBG_LEVEL_VLAPIC_TIMER, "delta[0x%016"PRIx64"]", delta);
 
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -134,8 +134,8 @@ struct hvm_vcpu {
     unsigned long       hw_cr[5];
 
     struct vlapic       vlapic;
-    s64                 cache_tsc_offset;
-    u64                 guest_time;
+    int64_t             cache_tsc_offset;
+    uint64_t            guest_time;
 
     /* Lock and list for virtual platform timers. */
     spinlock_t          tm_lock;
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -66,10 +66,10 @@ struct cpu_time {
 struct platform_timesource {
     const char *id;
     const char *name;
-    u64 frequency;
+    uint64_t frequency;
     /* Post-init this hook may only be invoked via the read_counter() wrapper! */
-    u64 (*read_counter)(void);
-    s64 (*init)(struct platform_timesource *);
+    uint64_t (*read_counter)(void);
+    int64_t (*init)(struct platform_timesource *);
     void (*resume)(struct platform_timesource *);
     int counter_bits;
 };
@@ -368,7 +368,7 @@ static u64 cf_check read_pit_count(void)
     return count32;
 }
 
-static s64 __init cf_check init_pit(struct platform_timesource *pts)
+static int64_t __init cf_check init_pit(struct platform_timesource *pts)
 {
     u8 portb = inb(0x61);
     u64 start, end;
@@ -610,7 +610,7 @@ static u64 cf_check read_pmtimer_count(v
     return inl(pmtmr_ioport);
 }
 
-static s64 __init cf_check init_pmtimer(struct platform_timesource *pts)
+static int64_t __init cf_check init_pmtimer(struct platform_timesource *pts)
 {
     if ( !pmtmr_ioport || (pmtmr_width != 24 && pmtmr_width != 32) )
         return 0;
@@ -655,7 +655,7 @@ static unsigned int __initdata tsc_flags
  * Called in verify_tsc_reliability() under reliable TSC conditions
  * thus reusing all the checks already performed there.
  */
-static s64 __init cf_check init_tsc(struct platform_timesource *pts)
+static int64_t __init cf_check init_tsc(struct platform_timesource *pts)
 {
     u64 ret = pts->frequency;
 
@@ -1034,9 +1034,9 @@ static void __init reset_platform_timer(
     spin_unlock_irq(&platform_timer_lock);
 }
 
-static s64 __init try_platform_timer(struct platform_timesource *pts)
+static int64_t __init try_platform_timer(struct platform_timesource *pts)
 {
-    s64 rc = pts->init(pts);
+    int64_t rc = pts->init(pts);
 
     if ( rc <= 0 )
         return rc;
@@ -1070,7 +1070,7 @@ static u64 __init init_platform_timer(vo
 
     struct platform_timesource *pts = NULL;
     unsigned int i;
-    s64 rc = -1;
+    int64_t rc = -1;
 
     /* clocksource=tsc is initialized via __initcalls (when CPUs are up). */
     if ( (opt_clocksource[0] != '\0') && strcmp(opt_clocksource, "tsc") )
@@ -1923,7 +1923,7 @@ static void cf_check local_time_calibrat
      * Weirdness can happen if we lose sync with the platform timer.
      * We could be smarter here: resync platform timer with local timer?
      */
-    if ( ((s64)stime_elapsed64 < (EPOCH / 2)) )
+    if ( ((int64_t)stime_elapsed64 < (EPOCH / 2)) )
         goto out;
 
     /*
@@ -2398,7 +2398,7 @@ static void __init tsc_check_writability
 
         write_tsc(tsc | (1ULL << 32));
         tmp = rdtsc();
-        if ( ABS((s64)tmp - (s64)tmp2) < (1LL << 31) )
+        if ( ABS((int64_t)tmp - (int64_t)tmp2) < (1LL << 31) )
             what = "only partially";
     }
     else
--- a/xen/drivers/acpi/apei/erst.c
+++ b/xen/drivers/acpi/apei/erst.c
@@ -105,7 +105,7 @@ static inline int erst_errno(int command
 
 static int erst_timedout(u64 *t, u64 spin_unit)
 {
-	if ((s64)*t < spin_unit) {
+	if ((int64_t)*t < spin_unit) {
 		printk(XENLOG_WARNING "Firmware does not respond in time\n");
 		return 1;
 	}
--- a/xen/include/acpi/actypes.h
+++ b/xen/include/acpi/actypes.h
@@ -147,8 +147,8 @@ typedef int INT32;
 
 /*! [End] no source code translation !*/
 
-typedef u64 acpi_native_uint;
-typedef s64 acpi_native_int;
+typedef uint64_t acpi_native_uint;
+typedef int64_t acpi_native_int;
 
 typedef u64 acpi_io_address;
 typedef u64 acpi_physical_address;
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -15,7 +15,7 @@ typedef int8_t  s8, __s8;
 typedef uint8_t __u8;
 typedef int16_t s16, __s16;
 typedef int32_t s32, __s32;
-typedef int64_t __s64;
+typedef int64_t s64, __s64;
 
 typedef paddr_t phys_addr_t;
 
--- a/xen/include/xen/time.h
+++ b/xen/include/xen/time.h
@@ -29,7 +29,7 @@ struct vcpu;
  * of real time into system time 
  */
 
-typedef s64 s_time_t;
+typedef int64_t s_time_t;
 #define PRI_stime PRId64
 
 s_time_t get_s_time_fixed(u64 at_tick);
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -8,7 +8,6 @@
 typedef uint8_t u8;
 typedef uint16_t u16, __u16;
 typedef uint32_t u32, __u32;
-typedef int64_t s64;
 typedef uint64_t u64, __u64;
 
 #include <asm/types.h>
--- a/xen/lib/divmod.c
+++ b/xen/lib/divmod.c
@@ -46,8 +46,8 @@
  * one or more of the following formats.
  */
 union uu {
-    s64            q;              /* as a (signed) quad */
-    s64            uq;             /* as an unsigned quad */
+    int64_t        q;              /* as a (signed) quad */
+    uint64_t       uq;             /* as an unsigned quad */
     long           sl[2];          /* as two signed longs */
     unsigned long  ul[2];          /* as two unsigned longs */
 };
@@ -72,7 +72,7 @@ union uu {
  * and assembly.
  */
 #define CHAR_BIT        8               /* number of bits in a char */
-#define QUAD_BITS       (sizeof(s64) * CHAR_BIT)
+#define QUAD_BITS       (sizeof(int64_t) * CHAR_BIT)
 #define LONG_BITS       (sizeof(long) * CHAR_BIT)
 #define HALF_BITS       (sizeof(long) * CHAR_BIT / 2)
 
@@ -324,7 +324,7 @@ u64 __qdivrem(u64 uq, u64 vq, u64 *arq)
  * Divide two signed quads.
  * Truncates towards zero, as required by C99.
  */
-s64 __divdi3(s64 a, s64 b)
+int64_t __divdi3(int64_t a, int64_t b)
 {
     u64 ua, ub, uq;
     int neg = (a < 0) ^ (b < 0);
@@ -361,7 +361,7 @@ u64 __umoddi3(u64 a, u64 b)
  *  11 % -5 =  1
  * -11 % -5 = -1
  */
-s64 __moddi3(s64 a, s64 b)
+int64_t __moddi3(int64_t a, int64_t b)
 {
     u64 ua, ub, urem;
     int neg = (a < 0);
@@ -374,7 +374,7 @@ s64 __moddi3(s64 a, s64 b)
 /*
  * Quotient and remainder of unsigned long long division
  */
-s64 __ldivmod_helper(s64 a, s64 b, s64 *r)
+int64_t __ldivmod_helper(int64_t a, int64_t b, int64_t *r)
 {
     u64 ua, ub, rem, quot;
 


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 13:35:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 13:35:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808184.1220026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svd2V-0004Z6-71; Tue, 01 Oct 2024 13:35:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808184.1220026; Tue, 01 Oct 2024 13: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 1svd2V-0004Yz-3P; Tue, 01 Oct 2024 13:35:43 +0000
Received: by outflank-mailman (input) for mailman id 808184;
 Tue, 01 Oct 2024 13: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svd2T-0004Yt-RW
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 13:35:41 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0c6b00e0-7ffa-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 15:35:40 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a8a789c4fc5so1121073966b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 06:35:40 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2776dd4sm725005866b.16.2024.10.01.06.35.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 06:35:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0c6b00e0-7ffa-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727789739; x=1728394539; 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=+vbw+lMFDmqo53s3889EQkc0Oh3EURA3mSdEu3yW7/w=;
        b=Cap6NnSk6DeNUzMjZBlrVMYDacMKObpRdOwGAuuoXmjr1VEkq26TaBenD9Y6e6ckRv
         eZnB+N17KLzVjW28huCIT/+CJaufC0P3Uv2jBt0z6uVb6K6OQrsbEVW7QfMhcBzzUtPF
         egGLj5yyDX7RQtpDvWgZS33YwueJf4ZDLafWcjNGBJ4t48wxSucCtbKQVpSrBZ0ORzAK
         nNhCEmVOYh/foyZIZQ0Ru9+Dl33Vo6aQ/I/qK1wmu4KofEhp4g3dJgP19OGLOLrursC8
         bGX5rJE/W3SlGSOxlsfSfWS+7YtpWEkdcoSX4eMqUQ1m71jsSJM5Y8XubzRtpBhhdeFQ
         mymA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727789739; x=1728394539;
        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=+vbw+lMFDmqo53s3889EQkc0Oh3EURA3mSdEu3yW7/w=;
        b=YnUi1zNJ1f0QgnNRJOcHHTXjam+DMGNFiAFIIl3qWZ5DwbIUomBkvRX/oVms9GLcNK
         3l3qJvA6TuWvEA7rVDFWVs4N4BJbqUDMh/lRXsBjV4W5dC3NOLRR9CUYJXwiZ4vs65Zm
         I8Rp+OUX2TEaI5SMkJaHujwkpXOOwGPefGEHD91QPMcckbMBrLUbUzJ4kInK3Ax6wpPC
         TMKEGZzUibp1jT0KIKIi6GchL1my3gruvmbGVc1WMhN0pkvnRFiqMRWH5n8BiASHQQrL
         9uFtQpoDKNHENb2GF71VQ0hy99z+8V5FHLI2v2IMwqybAJ4O0UrJOVSpH22K5UddEJAi
         0RpA==
X-Forwarded-Encrypted: i=1; AJvYcCWrnGryYm0BW7z92Wjl0XsjGt3ViIMJPbBMwubWU3UigGuhmXaClPoFVj21Xq/nrjNN114iWIU42uU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzzjmIdA4Ap/1ggbZcG/XegQk1Ob0922vRgaoHLT1nKklVl3t8P
	9KLkdwtILbUU/uoS+lsdt8RjBucOzdA0F21pYLegJimgI8jZ8Pnrs76k7fpbNQ==
X-Google-Smtp-Source: AGHT+IE6x5FyMV073OEwfjKOOmVekEj8p5vNVy84etjdMH0jS47TSuCBlcaFc+dDKWUXN1rnk04AGw==
X-Received: by 2002:a17:907:745:b0:a72:7a71:7f4f with SMTP id a640c23a62f3a-a967be95218mr331903166b.7.1727789739449;
        Tue, 01 Oct 2024 06:35:39 -0700 (PDT)
Message-ID: <ddc83900-c91b-45df-af79-a3e078500f65@suse.com>
Date: Tue, 1 Oct 2024 15:35:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/2] x86/pv: Rename pv.iobmp_limit to iobmp_nr and clarify
 behaviour
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20241001122438.1454218-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: <20241001122438.1454218-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:24, Andrew Cooper wrote:
> Ever since it's introduction in commit 013351bd7ab3 ("Define new event-channel
> and physdev hypercalls"), the public interface was named nr_ports while the
> internal field was called iobmp_limit.
> 
> Rename the intenral field to iobmp_nr to match the public interface, and
> clarify that, when nonzero, Xen will read 2 bytes.
> 
> There isn't a perfect parallel with a real TSS, but iobmp_nr being 0 is the
> paravirt "no IOPB" case, and it is important that no read occurs in this case.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>
with one cosmetic request:

> --- a/xen/arch/x86/pv/emul-priv-op.c
> +++ b/xen/arch/x86/pv/emul-priv-op.c
> @@ -167,7 +167,12 @@ static int guest_io_okay(unsigned int port, unsigned int bytes,
>      if ( iopl_ok(v, regs) )
>          return X86EMUL_OKAY;
>  
> -    if ( (port + bytes) <= v->arch.pv.iobmp_limit )
> +    /*
> +     * When @iobmp_nr is non-zero, Xen, like real CPUs and the TSS IOPB,
> +     * always reads 2 bytes from @iobmp, which might be one byte beyond
> +     * @nr_ports.
> +     */
> +    if ( (port + bytes) <= v->arch.pv.iobmp_nr )

If you use @nr_ports in the comment here, then I think some connection wants
establishing as to where this comes from. Otherwise use @iobmp_nr a 2nd time.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 13:37:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 13:37:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808193.1220036 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svd3n-0005IN-Gg; Tue, 01 Oct 2024 13:37:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808193.1220036; Tue, 01 Oct 2024 13:37: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 1svd3n-0005IG-Db; Tue, 01 Oct 2024 13:37:03 +0000
Received: by outflank-mailman (input) for mailman id 808193;
 Tue, 01 Oct 2024 13:37: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svd3l-0005IA-MJ
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 13:37:01 +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 3c680953-7ffa-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 15:37:00 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-53997328633so3000443e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 06:37:00 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2947a3csm715139366b.133.2024.10.01.06.36.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 06:36:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3c680953-7ffa-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727789820; x=1728394620; 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=HnSW5at8Js2aaU5qBg8TSBlZ7uIBX9TPZl0smVm3b6g=;
        b=Jy6R6EuDTJS+Wqt3t35ywAZOWG7vzUFD9BjoGuC65NGKnVfhxK6V7CFevGMuna6vdG
         5gTvY6iic+gdjfZEj+i5upkadAI+EgG5y0EruS+pRyZoI2IzC5EimOMQRljjkJvq2VXz
         aWoN1dJGFulKAlSFGL88bO+6vtVeR2ZSSP63Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727789820; x=1728394620;
        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=HnSW5at8Js2aaU5qBg8TSBlZ7uIBX9TPZl0smVm3b6g=;
        b=cG6mIbCLmdh/F6Jvt8ZwEfeXnH13oaTcG1wQ8tmDwxgJlHsFIVr+siYzLcyuZSRdES
         S0uM57kfsmpvQ2Jffrvuk0Cgm3yUtvpB3+b5PDtLX6b1Tt7VPP3tQ6+w6uaWsNbzA0cR
         aje2XqTHDylB68x7W5Pn3cNskdwxh6n5Yuyz8HxPhB/Ypd2Yqt7n6yXBOkaydlQjKIgo
         KocugZ+5/+4mHBHhKNCR4ZxEIbzM1B2U0h+9pqFii9VoOH8zmQgmPRs8DWRXCGBRrLZF
         jS4DoHP8/PzMbe9ygMLiDQ9cbC4ojN3mZwSeR6FhmDlcVr3s9resn8wXm3OJ1JX5+la9
         LhdQ==
X-Forwarded-Encrypted: i=1; AJvYcCU7Wgy2a5kei4llqV8A/+OCZZXdURsUbGdZlUswN/Htzy2oZAwxz1Sn70oHP+gEO8dxWIgWk4uoRJ8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz+VEby5R2QBX3Trp1qvC1oHoqy+Zdbl46AovYP1/DEqkZgu9zg
	HpESBVrh7C9KXbZfJ9RaDQM8GDIZQfGfdRuyDcC38vUb3mfp2mGsKJqJmFiJzZU=
X-Google-Smtp-Source: AGHT+IEUrd7fYsvD1516ZAUnf+2ewJUHgttmomeHcpVJFTIvsmlsDiUxwC3x4jvO3dQnPaJC0euctg==
X-Received: by 2002:a05:6512:1296:b0:530:b773:b4ce with SMTP id 2adb3069b0e04-5389fc4ca33mr10456473e87.33.1727789819835;
        Tue, 01 Oct 2024 06:36:59 -0700 (PDT)
Message-ID: <2dcf9ea5-f164-45d2-b695-d2d6ab5fe499@citrix.com>
Date: Tue, 1 Oct 2024 14:36:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/2] x86/pv: Rename pv.iobmp_limit to iobmp_nr and clarify
 behaviour
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240930161837.1248144-1-andrew.cooper3@citrix.com>
 <20241001122438.1454218-1-andrew.cooper3@citrix.com>
 <ddc83900-c91b-45df-af79-a3e078500f65@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ddc83900-c91b-45df-af79-a3e078500f65@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01/10/2024 2:35 pm, Jan Beulich wrote:
> On 01.10.2024 14:24, Andrew Cooper wrote:
>> Ever since it's introduction in commit 013351bd7ab3 ("Define new event-channel
>> and physdev hypercalls"), the public interface was named nr_ports while the
>> internal field was called iobmp_limit.
>>
>> Rename the intenral field to iobmp_nr to match the public interface, and
>> clarify that, when nonzero, Xen will read 2 bytes.
>>
>> There isn't a perfect parallel with a real TSS, but iobmp_nr being 0 is the
>> paravirt "no IOPB" case, and it is important that no read occurs in this case.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

> with one cosmetic request:
>
>> --- a/xen/arch/x86/pv/emul-priv-op.c
>> +++ b/xen/arch/x86/pv/emul-priv-op.c
>> @@ -167,7 +167,12 @@ static int guest_io_okay(unsigned int port, unsigned int bytes,
>>      if ( iopl_ok(v, regs) )
>>          return X86EMUL_OKAY;
>>  
>> -    if ( (port + bytes) <= v->arch.pv.iobmp_limit )
>> +    /*
>> +     * When @iobmp_nr is non-zero, Xen, like real CPUs and the TSS IOPB,
>> +     * always reads 2 bytes from @iobmp, which might be one byte beyond
>> +     * @nr_ports.
>> +     */
>> +    if ( (port + bytes) <= v->arch.pv.iobmp_nr )
> If you use @nr_ports in the comment here, then I think some connection wants
> establishing as to where this comes from. Otherwise use @iobmp_nr a 2nd time.

Oops, that was a copy&paste error from the header.  I'll switch it back
to @iobmp_nr.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:12:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:12:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808219.1220051 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sveXJ-00045u-6E; Tue, 01 Oct 2024 15:11:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808219.1220051; Tue, 01 Oct 2024 15:11: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 1sveXJ-00045n-3d; Tue, 01 Oct 2024 15:11:37 +0000
Received: by outflank-mailman (input) for mailman id 808219;
 Tue, 01 Oct 2024 15:11: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sveXH-00045g-St
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:11:35 +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 728c0113-8007-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:11:34 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a83562f9be9so29471266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:11:34 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2775d2esm723514866b.24.2024.10.01.08.11.33
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:11:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 728c0113-8007-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795494; x=1728400294; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:to:subject:from:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=oLcHjKU9bHH4dzp3SfypEfkLtBl/1ueSO6Oo/myeT/0=;
        b=YQwhHUUTFpS6pRIEqiaaV+ZJEeoJIf8xvh7V/59n8jVXYGW1CDP2ZX+2+3sKDiJK7C
         LBF8DfH/dil6gGTO1lGUDaAQhyntvKxn1pDNxIWxFEvtZ3faWcoNMPlYgUEJDSbFa+kj
         03LRwrjcLJnKUI+/FpGgsGMuFpmy1PxwH57r0lK35N2wkM0cymI9wS1uTQQ9CeKoAbzY
         4pTk8KWQhA9t5IfClCFKrUowOKc5vqIyYClVzjnkvCXT2cYjKcncLjGyWP03pZl5ct/z
         AVqy/3FPjEkAYfmGnFRYR/NOPDeUDqNv9ry71hSK8MRmAgMU8ZzOOejoVdZ3C9wofNhD
         4KEA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795494; x=1728400294;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:to:subject:from:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=oLcHjKU9bHH4dzp3SfypEfkLtBl/1ueSO6Oo/myeT/0=;
        b=bNrymUzU02YKIh0yJtOp46XcMplkOM1S4J7ZUoSrOha+vPz1zWjyo5KbxyVbHDzJC3
         bS/ISXX7BRE3PTAzKZpurcyvzEoTW5RKJbw7WDTw+ikI6al56KsV1/xMIcMElkguZGzi
         JASR0GRls0mU5PT1Cwe2x0l6LcOcDYNiJVXj+Q1PAynF7DPPbKOe5fPCQoCX1mv+g6aN
         cR2dX+sFTfww8Hq6aZiIG7N6m3ooljFLUK2BJhTTROYJO05wpflVYlnIAE0njjvdi7HW
         XEf26RXGyzWzHBxm9hI5b/gZ71GrX4ye44BfgzhTN4xI76Hx/pi1fD/Fgqz3/8BD/qwB
         QszA==
X-Gm-Message-State: AOJu0YwsGcgLLEwSLohKAPNCMPmGi2MJtN7NM1ZGBo0E4vepfDDphDcE
	miVp+7pJtaUjnxW2B6QrI91GJ9crEHecWXzJyCmDPOpKBMBvoyyZuetHbcNJS4/ERjk/Y7QPNjc
	=
X-Google-Smtp-Source: AGHT+IETOkC6bVNoyXggiNR/eFjkuTzwAQ006dAW/F+uPYqXRLyI2seXuK4T+yXKu2IKVjKMrIkRBQ==
X-Received: by 2002:a17:907:1c88:b0:a8d:2a46:606f with SMTP id a640c23a62f3a-a93c4970730mr1580011066b.38.1727795494204;
        Tue, 01 Oct 2024 08:11:34 -0700 (PDT)
Message-ID: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Date: Tue, 1 Oct 2024 17:11:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v7 00/11] (mostly) x86+Arm32: add/convert entry point
 annotations
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
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

01: common: honor CONFIG_CC_SPLIT_SECTIONS also for assembly functions
02: VMX: convert entry point annotations
03: x86/ACPI: annotate assembly functions with type and size
04: x86/kexec: convert entry point annotations
05: x86: convert dom_crash_sync_extable() annotation
06: x86: move ENTRY(), GLOBAL(), and ALIGN
07: Arm32: use new-style entry annotations for library code
08: Arm32: use new-style entry annotations for MMU code
09: Arm32: use new-style entry annotations for entry code
10: Arm32: use new-style entry annotations in head.S
11: Arm: purge ENTRY(), ENDPROC(), and ALIGN

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:13:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:13:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808222.1220061 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sveZA-0004e1-Ho; Tue, 01 Oct 2024 15:13:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808222.1220061; Tue, 01 Oct 2024 15:13: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 1sveZA-0004du-E6; Tue, 01 Oct 2024 15:13:32 +0000
Received: by outflank-mailman (input) for mailman id 808222;
 Tue, 01 Oct 2024 15: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sveZ8-0004dm-Vz
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:13:30 +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 b70f189b-8007-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:13:29 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c8a2579d94so1558032a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:13:29 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248ac03sm6322625a12.70.2024.10.01.08.13.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:13:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b70f189b-8007-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795609; x=1728400409; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=MFMsW/wRbAntN1ywNrqdWfg/vYh1ksc4dUgSKs8Nz/g=;
        b=C74fy+M5qWT+Wp/qu5uwiw/PAgn9EtntkNjQ/1PX/7TlAMlCjAKhXRThztwqceHbAl
         Hox+/JFdytGw8bqpo6lnD/mQKgvIjO98jAnoQXrUDTTmLTPc24j4930zbpae3AYBh+x7
         0GlHJNr9YF1+NLFE1DoZgAxVn797PFw8qGVcWkdM1j8Zz9kVmR2BS5vMqGKOCIOoKM9A
         qrMkQ5PVxNI5SujjolkU3XJeyd1rHbHuzbwjxvacLgOyWdSGkYuaWzCBjWjkVgv+FDJM
         VS2JczWauQ2WhLuChRydkL4zh0UyXftrQRfM1qQ9je7X9nNWJL3ake5zWqe8WyQdBWJP
         OVFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795609; x=1728400409;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=MFMsW/wRbAntN1ywNrqdWfg/vYh1ksc4dUgSKs8Nz/g=;
        b=cwWr1/XO+zj2zBuTHnsj6DzgwjlrI6F5mZF+bdl41GcqbGAoH5p+NaxYfsN8j4IrdB
         f8nDtGv1XWaMe8VLGGUDwELelQ3RZtYRyEoY8wImb/reBn4zaVS2TDRoenLNyUFwedbx
         TjNxEOBgrimhb7+JoijLS7XW+yD+lgdJaoa3rThQAtn9gzW4ePQOAAv6IwxYBjfJrqR1
         iGWKw7Vwcucv9G/iTCCP1l6qNgZbscKQ58p9vQvz855O5mbZkxLfY4JMJQQmb+zTpAe/
         /VjrKl+5yqf1a2UhAsBclwp8nJErBqNvg22tnIiDSfxVq6FCcJvF3jx/7iTxERq+agNe
         lpuA==
X-Gm-Message-State: AOJu0YxUgKdi6YKfKgkKwQiQUWDltiUGTBsJUvkwnRYjgCGaM9jUADzq
	TFJf1NjV84HqDV43W5JTLJ+TFgMUQUE8rhJDfJl9Z+ya3xKiFKkyKEdAv2eI77yyugZOVMuTdzs
	=
X-Google-Smtp-Source: AGHT+IF06nAhQG8jhYQjzfuEodRaIskf0J+EBXEzZkU3KoNpcmp++Qo7IYv2rGM1Zl99zwK+tnYlJw==
X-Received: by 2002:a05:6402:3605:b0:5c8:75e1:da28 with SMTP id 4fb4d7f45d1cf-5c882602bfdmr12488368a12.22.1727795609002;
        Tue, 01 Oct 2024 08:13:29 -0700 (PDT)
Message-ID: <f06462e8-1a2a-4f2e-b728-c2bc42f73f7d@suse.com>
Date: Tue, 1 Oct 2024 17:13:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 01/11] common: honor CONFIG_CC_SPLIT_SECTIONS also for
 assembly functions
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?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>,
 Michal Orzel <michal.orzel@amd.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@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)). In fact Roger wants the detection to
     be in Kconfig, for LIVEPATCH to depend on it. Yet the whole
     underlying discussion there imo would first need settling (and
     therefore reviving).

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.
---
v7: Override SYM_PUSH_SECTION() in arch/x86/indirect-thunk.S. Re-base,
    notably to deal with fallout from fba250ae604e ("xen/arm64: head:
    Add missing code symbol annotations").
v6: Deal with x86'es entry_PF() and entry_int82() falling through to the
    next "function". Re-base.
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
@@ -412,6 +412,9 @@ AFLAGS += -D__ASSEMBLY__
 
 $(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--noexecstack)
 
+# Check to see whether the assembler 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/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -90,7 +90,7 @@
  * 4K-aligned address.
  */
 
-FUNC(start)
+LABEL(start)
         /*
          * DO NOT MODIFY. Image header expected by Linux boot-loaders.
          */
@@ -224,7 +224,7 @@ section_table:
         .align  5
 #endif /* CONFIG_ARM_EFI */
 
-FUNC_LOCAL(real_start)
+LABEL_LOCAL(real_start)
         /* BSS should be zeroed when booting without EFI */
         mov   x26, #0                /* x26 := skip_zero_bss */
 
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -152,6 +152,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
@@ -99,6 +99,9 @@ SECTIONS
     DECL_SECTION(.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
@@ -96,6 +96,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/indirect-thunk.S
+++ b/xen/arch/x86/indirect-thunk.S
@@ -11,6 +11,10 @@
 
 #include <asm/asm_defns.h>
 
+/* Section placement is done explicitly here; override the respective macro. */
+#undef SYM_PUSH_SECTION
+#define SYM_PUSH_SECTION(name, attr)
+
 .macro IND_THUNK_RETPOLINE reg:req
         call 1f
         int3
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -31,6 +31,9 @@ FUNC(entry_int82)
 
         mov   %rsp, %rdi
         call  do_entry_int82
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+        jmp   compat_test_all_events
+#endif
 END(entry_int82)
 
 /* %rbx: struct vcpu */
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -771,6 +771,9 @@ END(common_interrupt)
 FUNC(entry_PF)
         ENDBR64
         movb  $X86_EXC_PF, EFRAME_entry_vector(%rsp)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+        jmp   handle_exception
+#endif
 END(entry_PF)
 /* No special register assumptions. */
 FUNC(handle_exception, 0)
@@ -1084,8 +1087,11 @@ FUNC(entry_NMI)
         ENDBR64
         pushq $0
         movb  $X86_EXC_NMI, EFRAME_entry_vector(%rsp)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+        jmp   handle_ist_exception
+#endif
 END(entry_NMI)
-
+/* No special register assumptions. */
 FUNC(handle_ist_exception)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         SAVE_ALL
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -82,6 +82,9 @@ SECTIONS
        . = ALIGN(PAGE_SIZE);
        _stextentry = .;
        *(.text.entry)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+       *(.text.entry.*)
+#endif
        . = ALIGN(PAGE_SIZE);
        _etextentry = .;
 
@@ -201,6 +204,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
@@ -18,6 +18,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 */
@@ -32,7 +40,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 Tue Oct 01 15:14:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:14:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808226.1220071 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sveZd-00056d-Oh; Tue, 01 Oct 2024 15:14:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808226.1220071; Tue, 01 Oct 2024 15: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 1sveZd-00056W-Ly; Tue, 01 Oct 2024 15:14:01 +0000
Received: by outflank-mailman (input) for mailman id 808226;
 Tue, 01 Oct 2024 15: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sveZc-00051V-3l
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:14:00 +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 c7c10f49-8007-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:13:57 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-5398996acbeso4945424e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:13:57 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88240bcb3sm6323501a12.35.2024.10.01.08.13.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:13:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c7c10f49-8007-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795637; x=1728400437; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=yPkRVBGZm7hqHqqgHn2aC/nE9IDDfzz/HhzgGNJprN4=;
        b=f0yyIbKng5kJaIDgnms1znujSKYqd7vWaCrFE58zRKVOfwROOYbe0FG78OReVlbQC1
         SdfgCpHzjX72eP4Dfe9SDQfZkB+OJF+hGBuGDPl9QD3HjyqDIDFSrojPDx6js1SGjcc5
         LLADotXl/MuG3W8wrsy0xCA840tWBEKCnUtJu5pUqh3K9wiUAnK7tVQtPuTFDMkBhy6S
         SdN9XyPkaUUIq778E32vBBWEczUq/7HvUC6PTMrLMv/eTndqTNvasRb39wvKCjbCXolb
         aQEibl7zRFokWEXCb82UvXGtqdfI/95W5I4ivSu/IKIpNTdsMcQRmiKUrnhaIP74NIwF
         +MDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795637; x=1728400437;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=yPkRVBGZm7hqHqqgHn2aC/nE9IDDfzz/HhzgGNJprN4=;
        b=Ah7htXyAeG9ad1Db9Dys+q9abXJ/5qNbNzJu6OW8ikvolimd3bPR9XEgmrEtl/9mBm
         Krv1pl3ahbwyatugc16B5jRnEiXC3CBfFNlVjqP6V3Ny8/Fh4FsVB5LgXFqwsA1vxGmW
         MhnPWRIJ3AKtybYFs67FFZrEX8dncMAOKGN+a1jFSzB8JLzOy/k2qVkwoimyI8dFVghn
         LCrduHrPS+shX8GH9uzzxT/i2o8hnYWk5YjsXyVDHIjqnht/YP9DD8QiQZNmfbvgdrTi
         UeGO08oLh6V5lVcGDVRKN1g5PsurLs3h2m+RCmWKoJH9w9bGcvAJSqpQg2FXG9hkB4Lb
         LavQ==
X-Gm-Message-State: AOJu0YwKizJpgPPgA96GdciUzKdVmZ4LGGBehg4cO07dlmFfp8Wmws4z
	4UueSZcCjjnmrfKn6CoBsFXhpObMo8eP0z4CBp6+aL4Zm7pEnyrbkgOOk+inlWfG10UkkBndp7c
	=
X-Google-Smtp-Source: AGHT+IHlf3KR50LBsw4IisozyncxHhCUhdtsw8e0/KASYpXc0CkFV5Lw8NG96xYbDimz+GTf6EYVAw==
X-Received: by 2002:a05:6512:1155:b0:536:568f:c5ed with SMTP id 2adb3069b0e04-5389fc32b18mr7568777e87.1.1727795637058;
        Tue, 01 Oct 2024 08:13:57 -0700 (PDT)
Message-ID: <ce312e31-992c-4e8c-81db-eb291c457680@suse.com>
Date: Tue, 1 Oct 2024 17:13:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 02/11] VMX: convert entry point annotations
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use the generic framework from xen/linkage.h.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v6: New.

--- a/xen/arch/x86/hvm/vmx/entry.S
+++ b/xen/arch/x86/hvm/vmx/entry.S
@@ -24,7 +24,7 @@
 #define VMRESUME     .byte 0x0f,0x01,0xc3
 #define VMLAUNCH     .byte 0x0f,0x01,0xc2
 
-ENTRY(vmx_asm_vmexit_handler)
+FUNC(vmx_asm_vmexit_handler)
         SAVE_ALL
 
         mov  %cr2,%rax
@@ -187,7 +187,7 @@ UNLIKELY_END(realmode)
         call vmx_vmentry_failure
         jmp  .Lvmx_process_softirqs
 
-ENTRY(vmx_asm_do_vmentry)
+LABEL(vmx_asm_do_vmentry)
         GET_CURRENT(bx)
         jmp  .Lvmx_do_vmentry
 
@@ -205,6 +205,4 @@ ENTRY(vmx_asm_do_vmentry)
         sti
         call do_softirq
         jmp  .Lvmx_do_vmentry
-
-        .type vmx_asm_vmexit_handler, @function
-        .size vmx_asm_vmexit_handler, . - vmx_asm_vmexit_handler
+END(vmx_asm_vmexit_handler)



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:14:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:14:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808230.1220081 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svea7-0005bv-1I; Tue, 01 Oct 2024 15:14:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808230.1220081; Tue, 01 Oct 2024 15:14: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 1svea6-0005bo-Up; Tue, 01 Oct 2024 15:14:30 +0000
Received: by outflank-mailman (input) for mailman id 808230;
 Tue, 01 Oct 2024 15: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svea5-0004dm-I5
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:14:29 +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 da5d649d-8007-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:14:29 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8a7b1c2f2bso925675966b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:14:29 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a98f03d2d09sm98861766b.142.2024.10.01.08.14.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:14:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: da5d649d-8007-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795668; x=1728400468; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=b1sMHq5SkOLfKERWmUNKjj0SjILhRkZ7SZvJKkcD0p8=;
        b=K+fNZCDLSaROg2g7ct8gy4SPAz4r6YI43y+FMs8VFMYmEWPGg0btJh3zOgcuqn3Bmi
         u4pFWGAgbipygFkKINDCj+OhNNDeNsjhB7eyWXwfmnHf0FpkOGBuuvvKisQhj95ss5pc
         /FB4+hF9Mz+xDV+aFoSSL9ULBKrxK4JvtLG5z0erxkBxV85mh8TjWSeOYF20Q/ij9Rph
         Z0LMqgDVMwhoGFZKPWQYqLSCMvHIA/SjsSsSJJohqn5NknqZ4As+hM0q6U2GsuOZUY3i
         NNpnv1ZPwWji9+LWwuB7lnMJLBCTn2hXjZAM7G4VV0dyQmpU6+/DyYrjrtnEBZWCHTLR
         rpGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795668; x=1728400468;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=b1sMHq5SkOLfKERWmUNKjj0SjILhRkZ7SZvJKkcD0p8=;
        b=vON2NyeQDMm2CWs4ZVl+tzb7j63dT93QHKQrlyEHSxVR2SvR3MelRJ+mdTNvyVUQIR
         Opi8iguCPPgPnp/gNrtByfxpfTxYMzyMoQ2tll1nWPyDuSE0j7+h+KK3HYxNLqBvPrti
         FVU5gqeUH+B+z1jAbIX5dsAHZVhjYFMnmRAXTuZ4tVtGdNsBgA4f1y1FeTo3ZvGhIyJ8
         nLrlSJuVC1WXbeu5LsJq8paT8hp3cWuvRaUqBiAi9+wSIHCeKklYI4jX9C/LJDVPacZX
         hwVaqKc+bFpOrSk57R7dzPZUQAblEHKAUiHLs6ufXifYoa3yq7lC+NccMV6yQzLqpDa8
         /NAQ==
X-Gm-Message-State: AOJu0YwIHWPq+85OLEu0p0fvvq/N88DdUAuRD6LFWnwGq1MEunMQjEZG
	Q8t8/NyubvrjDuYquptZ0BPBhoO52sDxpoZdczwkdmS+7qv5hXyaUe0NvltfPDNFz7dpasiQDXQ
	=
X-Google-Smtp-Source: AGHT+IH3vPayacs67JqhwZPHClOh3KvjoiHo+KWHRNUAlmyuxDfmeDMTzhLKW/7A+aiULAqmoZ2RLw==
X-Received: by 2002:a17:907:9493:b0:a8d:4db8:9eed with SMTP id a640c23a62f3a-a93c4a67777mr1601806866b.51.1727795668395;
        Tue, 01 Oct 2024 08:14:28 -0700 (PDT)
Message-ID: <4f828e91-aa90-4b44-b778-234812e4f8e1@suse.com>
Date: Tue, 1 Oct 2024 17:14:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 03/11] x86/ACPI: annotate assembly function/data with type
 and size
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use the generic framework from xen/linkage.h.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v7: Make do_suspend_lowlevel() a single function.
v6: New.

--- a/xen/arch/x86/acpi/wakeup_prot.S
+++ b/xen/arch/x86/acpi/wakeup_prot.S
@@ -7,7 +7,7 @@
         .text
         .code64
 
-ENTRY(do_suspend_lowlevel)
+FUNC(do_suspend_lowlevel)
         push    %rbp
         push    %rbx
         push    %r12
@@ -43,7 +43,7 @@ ENTRY(do_suspend_lowlevel)
          *
          * Everything else, including the stack, needs restoring.
          */
-ENTRY(s3_resume)
+LABEL(s3_resume)
         lgdt    boot_gdtr(%rip)
 
         mov     saved_cr0(%rip), %rax
@@ -132,6 +132,7 @@ ENTRY(s3_resume)
         pop     %rbx
         pop     %rbp
         ret
+END(do_suspend_lowlevel)
 
 .data
         .align 16
@@ -142,5 +143,4 @@ saved_cr0:      .quad   0
 saved_ssp:      .quad   0
 #endif
 
-GLOBAL(saved_magic)
-        .long   0x9abcdef0
+ASM_INT(saved_magic, 0x9abcdef0)



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:15:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:15:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808236.1220091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sveai-0006Ec-C3; Tue, 01 Oct 2024 15:15:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808236.1220091; Tue, 01 Oct 2024 15:15: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 1sveai-0006EV-97; Tue, 01 Oct 2024 15:15:08 +0000
Received: by outflank-mailman (input) for mailman id 808236;
 Tue, 01 Oct 2024 15:15: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sveah-000652-Fi
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:15:07 +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 f06c1a44-8007-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:15:06 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8a789c4fc5so1141308466b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:15:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c29481edsm723426566b.131.2024.10.01.08.15.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:15:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f06c1a44-8007-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795705; x=1728400505; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=rufSU9IFyOi2Hu7y05gtjyGOO2lB8zNytXCa+p88a/8=;
        b=eArXq2/ZvPLJZ9BmLXPKk7I/Pllh8f3sG99FBFNGu0GDIGRv10lH+oc/8V24nBXCZk
         0KDYK0+JVTe48P1DpEfeRpCK2gxVZAorDWCbOJyql8XlN6ySjbeGcX9GMA4Bflj/vaPf
         Z+XsBN6jQH4rzezGbUMhuQWJPDHqzqYBwmn5ktibKcfNpcvaCY1v1EaPGRS1Y6nm4Hpv
         gaVgesvfNdBlZKdP1jcJaw66E0+pehMUQcbmRgEsOr7n10CkvSty3gTzaHxD5PFdCn7j
         sxgg8QIPQ3pnJGAxC+az+UfFR49Usa3bt+B1/bBsvF9MLz7RtCUWqXRo7R9SLsMWZJNZ
         jO2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795705; x=1728400505;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=rufSU9IFyOi2Hu7y05gtjyGOO2lB8zNytXCa+p88a/8=;
        b=nIpHxcZLu0JY+Wr/HcUl+5Dh/FUNw36/UzWbTIyB4fH4ryaqusepC16O7mhle8WQ0b
         Nj3liu0aB47z65i3cUaq5oZVAyTMSXGb3/ZSHIQjIH5YhNCk66CIwybmADg/OOxl6pRM
         VFYY9cqbWT9SAoUmtCcXkUkgpQyy/xg+ClW2XcSj5GX6DG+CKII0wDe9RK08WwQehVhA
         AAd6873T2qMxuMZDMt4/Umj4lssLZhhGOZ/BD6071AIj4GFEHlOsjpjQFkPSKlw2UXlk
         Rd4XvwcCPi4YZQBBDY2Br+qljvhAN8nuEzDhdC0j1cOI9NqkDdUOSazaccyfRZstYeF8
         dHQw==
X-Gm-Message-State: AOJu0Yw/KHZnlClM2La/ewWSbVDmuzXuDdOskYW+Vox1UFObBTrEOk8N
	LEwxjLBrcrvPXdkzc+UXz3c46101/2wOGORrc+qM+rXlNUQmByLOTzLNAjQmFwxk8nakmIE4+Vw
	=
X-Google-Smtp-Source: AGHT+IHd/zr4PPoUeuPQMUipHdxm8EYs/MIwjHh9EhCFeRC1P/5NbxohnSK5+Dl64gnvHUT0/tp/3w==
X-Received: by 2002:a17:907:3e85:b0:a8d:505a:5458 with SMTP id a640c23a62f3a-a967bf10f20mr463446266b.10.1727795705438;
        Tue, 01 Oct 2024 08:15:05 -0700 (PDT)
Message-ID: <6b66c48e-241e-4a8f-9221-4693e92f50ba@suse.com>
Date: Tue, 1 Oct 2024 17:15:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 04/11] x86/kexec: convert entry point annotations
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use the generic framework from xen/linkage.h.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v7: Use alternative approach, un-defining CONFIG_CC_SPLIT_SECTIONS.
v6: New.

--- a/xen/arch/x86/x86_64/kexec_reloc.S
+++ b/xen/arch/x86/x86_64/kexec_reloc.S
@@ -13,6 +13,9 @@
 
         .file __FILE__
 
+/* All contents of .text.kexec wants to be kept together. */
+#undef CONFIG_CC_SPLIT_SECTIONS
+
 #include <xen/kimage.h>
 
 #include <asm/asm_defns.h>
@@ -21,10 +24,9 @@
 #include <asm/machine_kexec.h>
 
         .section .text.kexec, "ax", @progbits
-        .align PAGE_SIZE
         .code64
 
-ENTRY(kexec_reloc)
+FUNC(kexec_reloc, PAGE_SIZE)
         /* %rdi - code page maddr */
         /* %rsi - page table maddr */
         /* %rdx - indirection page maddr */
@@ -91,8 +93,9 @@ ENTRY(kexec_reloc)
         push    $0x10
         push    %rax
         lretq
+END(kexec_reloc)
 
-relocate_pages:
+FUNC_LOCAL(relocate_pages)
         /* %rdi - indirection page maddr */
         pushq   %rbx
 
@@ -138,10 +141,11 @@ relocate_pages:
 .L_done:
         popq    %rbx
         ret
+END(relocate_pages)
 
         .code32
 
-compatibility_mode:
+FUNC_LOCAL(compatibility_mode)
         /* Setup some sane segments. */
         movl    $0x0008, %eax
         movl    %eax, %ds
@@ -168,39 +172,29 @@ compatibility_mode:
         /* Call the image entry point.  This should never return. */
         call    *%ebp
         ud2
+END(compatibility_mode)
 
-        .align 4
-compat_mode_gdt_desc:
+DATA_LOCAL(compat_mode_gdt_desc, 4)
         .word .Lcompat_mode_gdt_end - compat_mode_gdt -1
         .quad 0x0000000000000000     /* set in call_32_bit above */
+END(compat_mode_gdt_desc)
 
-        .type compat_mode_gdt_desc, @object
-        .size compat_mode_gdt_desc, . - compat_mode_gdt_desc
-
-        .align 8
-compat_mode_gdt:
+DATA_LOCAL(compat_mode_gdt, 8)
         .quad 0x0000000000000000     /* null                              */
         .quad 0x00cf93000000ffff     /* 0x0008 ring 0 data                */
         .quad 0x00cf9b000000ffff     /* 0x0010 ring 0 code, compatibility */
 .Lcompat_mode_gdt_end:
+END(compat_mode_gdt)
 
-        .type compat_mode_gdt, @object
-        .size compat_mode_gdt, . - compat_mode_gdt
-
-compat_mode_idt:
+DATA_LOCAL(compat_mode_idt)
         .word 0                      /* limit */
         .long 0                      /* base */
-
-        .type compat_mode_idt, @object
-        .size compat_mode_idt, . - compat_mode_idt
+END(compat_mode_idt)
 
         /*
          * 16 words of stack are more than enough.
          */
-        .align 8
-reloc_stack:
+DATA_LOCAL(reloc_stack, 8)
         .fill 16,8,0
 .Lreloc_stack_base:
-
-        .type reloc_stack, @object
-        .size reloc_stack, . - reloc_stack
+END(reloc_stack)



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:15:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:15:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808237.1220101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sveb3-0006gr-KG; Tue, 01 Oct 2024 15:15:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808237.1220101; Tue, 01 Oct 2024 15: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 1sveb3-0006gk-GK; Tue, 01 Oct 2024 15:15:29 +0000
Received: by outflank-mailman (input) for mailman id 808237;
 Tue, 01 Oct 2024 15:15: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sveb2-0006cV-2K
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:15:28 +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 fd274737-8007-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:15:27 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-53994aadb66so2440231e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:15:27 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88249479csm6308383a12.86.2024.10.01.08.15.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:15:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd274737-8007-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795727; x=1728400527; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=GYaugTRe75GrNYlcI6QrJSs2uMegyQOi+KXTpy3i8Tw=;
        b=QwQlJklQKo6iJlVO4oi0ZV3djjDHI3PGg2kn/DWk/AsNs2KeXOLrXbkVaAPWoo6iiL
         Q5cnCIrMC2Cz2hUWhr4mulE/tOPy0Dnbnw9xkLrZOPJKJPaI9gBsNVLLYxzH4TvkSXDP
         TjAeIayPbrY10XnlbnH4vydxfE75t+LyMBzWEzv6CqmoXMwQksosMRlXwU9ZvTrrEJx9
         K3QYFStDkAKn9QAMuVNq50+nij9EVQNeSsg0uj7uuYw/QzRO1De9/O29aDnqE9kI58E1
         9YpM/SEiWjamXQ3QJ4q07d6YTTJiLRncqhZ49NNN7wC6u3hH5Bt2d0LzOPiMjf9lkKun
         NmxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795727; x=1728400527;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=GYaugTRe75GrNYlcI6QrJSs2uMegyQOi+KXTpy3i8Tw=;
        b=A/o3Nv9jkUCqUu5YJrhHzNUuR8+TWQi9JIOsOLXGe7gZGOXt6lXFlR50ijN+cZzqm8
         2vkMH+MB8hLmo9DHRUHzSLbQO1HQ9mTaVmRihc0dMA93GjZi313IEL5BW6Hw2+o2sj2i
         ZkNm4W+XxkkLk9gFSLPBvot8C1c6sLNQBhH2hOdJmAaD2SGMwH22aahmt38IZ7ttiZKc
         0guWoBRRMvVaIwevR27YRTdRZoftwpUw/6svRo25kpUU0xCBYemYjVb6hke/YKAKE4Ud
         x7A9IITmQoGPgxMuYw/kJ9wXiTrm0QuJ98ICLrgDm9/GF4d8kMsW2xBWYrxtifWYrhRa
         FJ0Q==
X-Gm-Message-State: AOJu0Yz4LCq2KrxReA1TZYF66arPd3/j32nEbPRT1UlPsZKYvvXpEp5q
	UemVx09hi1K98fw56tSCJRU96+pxhOy9zE7UKOV2MxW8j7UY4aiBoBCbOb7JNWfPRLrvpDKVcNo
	=
X-Google-Smtp-Source: AGHT+IHXAI56HklnkMwoY6mg2bHEa4L3szOMSLOUcGhzrytzQ9v7xzmhFml2k6/vrt0EB2aX27EL6g==
X-Received: by 2002:ac2:4f01:0:b0:52f:c27b:d572 with SMTP id 2adb3069b0e04-5389fc7d5bbmr8083293e87.59.1727795726701;
        Tue, 01 Oct 2024 08:15:26 -0700 (PDT)
Message-ID: <165b8dcb-0fa9-42f3-a7cf-16136ed78921@suse.com>
Date: Tue, 1 Oct 2024 17:15:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 05/11] x86: convert dom_crash_sync_extable() annotation
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

... to that from the generic framework in xen/linkage.h.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v7: Split from larger patch.

--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -624,7 +624,7 @@ domain_crash_page_fault_0x8:
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         movq  %rsi,%rdi
         call  show_page_walk
-ENTRY(dom_crash_sync_extable)
+LABEL(dom_crash_sync_extable, 0)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         # Get out of the guest-save area of the stack.
         GET_STACK_END(ax)



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:15:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:15:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808243.1220111 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svebV-0007F2-Sy; Tue, 01 Oct 2024 15:15:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808243.1220111; Tue, 01 Oct 2024 15:15: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 1svebV-0007Ev-P9; Tue, 01 Oct 2024 15:15:57 +0000
Received: by outflank-mailman (input) for mailman id 808243;
 Tue, 01 Oct 2024 15:15: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svebU-0006cV-RY
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:15:56 +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 0e75d128-8008-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:15:56 +0200 (CEST)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-537a399e06dso6505097e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:15:56 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299aca5sm729826066b.224.2024.10.01.08.15.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:15:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e75d128-8008-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795756; x=1728400556; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sjsBqq7ERY0I9Pp9VoYjNgavFM9yKqdiMFCtPcKDqbg=;
        b=IuBv05IGNrT/veMfo9wpWIup1x89loxU5JWxWqeczPFVTWg03Ruezokr28PaDKUrgF
         hSyRgM19eNrwnEcPQrfgPE88Gpx6QUwT58CH0yvzer/xxhKX46+uAyyFiZKjP+rnDKca
         uJ1j/UYP5nlq0UH8ortmGVgpfoe4E2kJ97zyISJaZRDwsDHnNR7BQrTmUQ6sSoWPUliQ
         ns5L/F0Of9Wdbnm3FDLW0BnADd0gJa1OfBDlnfW4RBJQ6zabgPBOQJcEUPFBgGaWsGm/
         SiN4ctTH0k/oGqecegZbdkooo3CddGeJ3ELLugHov4bOO8kiQmB4/XdW1Lv3kqKtnWXs
         9lxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795756; x=1728400556;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=sjsBqq7ERY0I9Pp9VoYjNgavFM9yKqdiMFCtPcKDqbg=;
        b=ATB5h3b8TiSc/t3r7z1uYFxWts493k1PM9WUjmyuFxvckigLMOpKwIpwoL6vGYT+ee
         FBN6ub3xmzb74tBDDnVitWTayaKxjYGe5W8EZlr8NmV+kvuc7vcvL6xCKjYUuPhBA+WJ
         N741/K7H7BxNMHCRnZZGwut94asSYTgwu/Rkz40/QbaKBUshF2zlf1bSViY9pBe8ObzY
         Ifhy6l2qQqWxEJ/CKkMq/4iskur45UiM3jm112Nf9FYubig2Vgxj+3KmQl9aNsb37ltd
         r7bWhU5i0h/BvALngcfgN1nO8xtyBRa6bFmyA7Q4txiWLt8cXFcv8neMyAIQFEPh2m59
         76sg==
X-Gm-Message-State: AOJu0Ywli16MeLwiv+AsVsvA9nQ5MC+0Pr7Ks9Hvl7kxlQAn0g9JO9zN
	ENjXhcqYkjDdOwZGNo06iFmE/LMSg171H9WqyJoFaLb2nO8FJRqp5152Y7C01sgJN7jARTQ6QoY
	=
X-Google-Smtp-Source: AGHT+IHq5yhz7ot9y7JTTyL6KR2Wcrx/BJ+S0h8LRDuZX50qvlrPYnDnE9WmfuzmRniHPmQ6xKa2rA==
X-Received: by 2002:a05:6512:3b8d:b0:52b:bf8e:ffea with SMTP id 2adb3069b0e04-5389fc6429dmr9702674e87.40.1727795755726;
        Tue, 01 Oct 2024 08:15:55 -0700 (PDT)
Message-ID: <b0d5a6d5-e6ee-4281-8d33-b90444633373@suse.com>
Date: Tue, 1 Oct 2024 17:15:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 06/11] x86: move ENTRY(), GLOBAL(), and ALIGN
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

... to boot code, limiting their scope and thus allowing to drop
respective #undef-s from the linker script.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
An obvious alternative would be to convert boot code right away too, but
I think this has lower priority for now.
---
v7: Re-base.
v6: New.

--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -10,6 +10,15 @@
 #include <asm/cpufeature.h>
 #include <public/elfnote.h>
 
+#define ALIGN .align CONFIG_FUNCTION_ALIGNMENT, CODE_FILL
+#define ENTRY(name)                             \
+  ALIGN;                                        \
+  GLOBAL(name)
+#define GLOBAL(name)                            \
+  .globl name;                                  \
+  .hidden name;                                 \
+  name:
+
         .section .text.header, "ax", @progbits
         .code32
 
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -42,14 +42,6 @@
 /* Linkage for x86 */
 #ifdef __ASSEMBLY__
 #define CODE_FILL 0x90
-#define ALIGN .align CONFIG_FUNCTION_ALIGNMENT, CODE_FILL
-#define ENTRY(name)                             \
-  ALIGN;                                        \
-  GLOBAL(name)
-#define GLOBAL(name)                            \
-  .globl name;                                  \
-  .hidden name;                                 \
-  name:
 #endif
 
 #define NR_hypercalls 64
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -1260,7 +1260,7 @@ FUNC_LOCAL(autogen_stubs, 0) /* Automati
         .if vec >= FIRST_IRQ_VECTOR
 #endif
 
-        ALIGN
+        .align CONFIG_FUNCTION_ALIGNMENT, CODE_FILL
 1:
         ENDBR64
         pushq $0
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -5,8 +5,6 @@
 #include <xen/lib.h>
 #include <xen/xen.lds.h>
 #include <asm/page.h>
-#undef ENTRY
-#undef ALIGN
 
 #ifdef EFI
 



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:16:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:16:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808248.1220121 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svebx-0007mS-4d; Tue, 01 Oct 2024 15:16:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808248.1220121; Tue, 01 Oct 2024 15:16: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 1svebx-0007mL-1C; Tue, 01 Oct 2024 15:16:25 +0000
Received: by outflank-mailman (input) for mailman id 808248;
 Tue, 01 Oct 2024 15:16: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svebv-000652-84
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:16:23 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1d7b5849-8008-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:16:21 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a8d3cde1103so787256666b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:16:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c277726asm740564466b.10.2024.10.01.08.16.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:16:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d7b5849-8008-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795781; x=1728400581; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=BX0i4gwb1cYoJ/9L+SuI1WkYU5iQtnN3mUAMKMP97s4=;
        b=RCkpJqD4xIV3qoz9o5TYKwjnm6t33RQWWkza3RWRzEF1hQcxJU9wTthbP6YanWda+t
         +V8pilSc/1PqCXhxfGdMStfqQugAm4Gatm2juCzebHNb8fjicE4aovikizZHlDXbHk9X
         MtI+D24URGl9Q6yiP3T201EQXVRIJGCVt4CJVHGwQEUwQuxZ/5ZsjgAQ2FbIcQ5rsiEh
         cfj7yYJytA8lGJ82N68cT4+RKruAhOEBRTf6TRt3dhCkTw7rP5dveDs+tvcStNjClkkY
         VI5ziaf6mUMFHzltTpeHW44onGSy37zbp6mr1JpNrGjcZrfQR1DBc0nEDILyRGWpDpm2
         g6AA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795781; x=1728400581;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=BX0i4gwb1cYoJ/9L+SuI1WkYU5iQtnN3mUAMKMP97s4=;
        b=H6zTR5fVCdmBRuwwcTHV88QmJZ1LKt5IKopOHp3PwZ3uYLKKONSw9XWRlKJAzlnnHM
         cJVThlzwkdVgcsjOF+5Sw9rFFVeJlfduexoGZzMLp2GHzmHEVzjeBZ9Ho4LKtDHQvOJc
         jv9KKwZGC2aBjOw/clUmzWAesmWNOCFCwRtUZJv5VR3RBPUu1NkgjzjmcOGUBvoTG8nQ
         VJgebEyPSy3sIkU8Zv5FaAT7TmgFNCFo2uEDEer4JsyomDQwJ6GFwewgFVaVbAwsfizy
         MrVXN6ifpeF7zqGLBIi95KQwzjxbdqVsRTaS2WqphV0aO4qsu4FEJkFJaNneXl2dVAFg
         OjMQ==
X-Gm-Message-State: AOJu0Yxm+4DMmvdeSe0qrc8CC0LCZ3Mtb9lykVj8iBsIeilZws1tJ/7w
	1YbbC8BtQ4lvC5LJXHpvUudyIm7QHMhIrXS/FaJp+aRessRYn/u7571HevxU0X4XQXuR4ujqsc4
	=
X-Google-Smtp-Source: AGHT+IGSYutHKb4XFDRcmSZy3Dt2qYEdryrw5csvUvdUfLvAN9tiw5+P5gaQxuPH47XeibDLk3EvaA==
X-Received: by 2002:a17:907:1c17:b0:a90:13b6:3ece with SMTP id a640c23a62f3a-a93c49044a8mr1865128966b.15.1727795780961;
        Tue, 01 Oct 2024 08:16:20 -0700 (PDT)
Message-ID: <658f0a05-742e-44ed-bf3f-bd6bb8c694a7@suse.com>
Date: Tue, 1 Oct 2024 17:16:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 07/11] Arm32: use new-style entry annotations for library
 code
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Julien Grall <julien@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>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

No functional change, albeit all globals now become hidden, and aliasing
symbols (__aeabi_{u,}idiv) as well as __memzero lose their function-ness
and size.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
If the function-ness is important, some new construct would need
inventing. Not setting size for the aliases may even be desirable, as
I'm uncertain whether it is really legal in ELF that two entities
overlap in space.

I fear I'm breaking __memzero(), as I don't understand the purpose of
the ".word 0" next to where the FUNC_LOCAL() appears.
---
v7: New.

--- a/xen/arch/arm/arm32/lib/findbit.S
+++ b/xen/arch/arm/arm32/lib/findbit.S
@@ -20,7 +20,7 @@
  * Purpose  : Find a 'zero' bit
  * Prototype: int find_first_zero_bit(void *addr, unsigned int maxbit);
  */
-ENTRY(_find_first_zero_bit_le)
+FUNC(_find_first_zero_bit_le)
 		teq	r1, #0	
 		beq	3f
 		mov	r2, #0
@@ -35,13 +35,13 @@ ENTRY(_find_first_zero_bit_le)
 		blo	1b
 3:		mov	r0, r1			@ no free bits
 		mov	pc, lr
-ENDPROC(_find_first_zero_bit_le)
+END(_find_first_zero_bit_le)
 
 /*
  * Purpose  : Find next 'zero' bit
  * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
  */
-ENTRY(_find_next_zero_bit_le)
+FUNC(_find_next_zero_bit_le)
 		cmp	r1, r2
 		bls	3b
 		ands	ip, r2, #7
@@ -55,13 +55,13 @@ ENTRY(_find_next_zero_bit_le)
 		orr	r2, r2, #7		@ if zero, then no bits here
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
-ENDPROC(_find_next_zero_bit_le)
+END(_find_next_zero_bit_le)
 
 /*
  * Purpose  : Find a 'one' bit
  * Prototype: int find_first_bit(const unsigned long *addr, unsigned int maxbit);
  */
-ENTRY(_find_first_bit_le)
+FUNC(_find_first_bit_le)
 		teq	r1, #0	
 		beq	3f
 		mov	r2, #0
@@ -76,13 +76,13 @@ ENTRY(_find_first_bit_le)
 		blo	1b
 3:		mov	r0, r1			@ no free bits
 		mov	pc, lr
-ENDPROC(_find_first_bit_le)
+END(_find_first_bit_le)
 
 /*
  * Purpose  : Find next 'one' bit
  * Prototype: int find_next_zero_bit(void *addr, unsigned int maxbit, int offset)
  */
-ENTRY(_find_next_bit_le)
+FUNC(_find_next_bit_le)
 		cmp	r1, r2
 		bls	3b
 		ands	ip, r2, #7
@@ -95,11 +95,11 @@ ENTRY(_find_next_bit_le)
 		orr	r2, r2, #7		@ if zero, then no bits here
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
-ENDPROC(_find_next_bit_le)
+END(_find_next_bit_le)
 
 #ifdef __ARMEB__
 
-ENTRY(_find_first_zero_bit_be)
+FUNC(_find_first_zero_bit_be)
 		teq	r1, #0
 		beq	3f
 		mov	r2, #0
@@ -114,9 +114,9 @@ ENTRY(_find_first_zero_bit_be)
 		blo	1b
 3:		mov	r0, r1			@ no free bits
 		mov	pc, lr
-ENDPROC(_find_first_zero_bit_be)
+END(_find_first_zero_bit_be)
 
-ENTRY(_find_next_zero_bit_be)
+FUNC(_find_next_zero_bit_be)
 		cmp	r1, r2
 		bls	3b
 		ands	ip, r2, #7
@@ -131,9 +131,9 @@ ENTRY(_find_next_zero_bit_be)
 		orr	r2, r2, #7		@ if zero, then no bits here
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
-ENDPROC(_find_next_zero_bit_be)
+END(_find_next_zero_bit_be)
 
-ENTRY(_find_first_bit_be)
+FUNC(_find_first_bit_be)
 		teq	r1, #0
 		beq	3f
 		mov	r2, #0
@@ -148,9 +148,9 @@ ENTRY(_find_first_bit_be)
 		blo	1b
 3:		mov	r0, r1			@ no free bits
 		mov	pc, lr
-ENDPROC(_find_first_bit_be)
+END(_find_first_bit_be)
 
-ENTRY(_find_next_bit_be)
+FUNC(_find_next_bit_be)
 		cmp	r1, r2
 		bls	3b
 		ands	ip, r2, #7
@@ -164,7 +164,7 @@ ENTRY(_find_next_bit_be)
 		orr	r2, r2, #7		@ if zero, then no bits here
 		add	r2, r2, #1		@ align bit pointer
 		b	2b			@ loop for next bit
-ENDPROC(_find_next_bit_be)
+END(_find_next_bit_be)
 
 #endif
 
--- a/xen/arch/arm/arm32/lib/lib1funcs.S
+++ b/xen/arch/arm/arm32/lib/lib1funcs.S
@@ -201,8 +201,8 @@ along with this program; see the file CO
 .endm
 
 
-ENTRY(__udivsi3)
-ENTRY(__aeabi_uidiv)
+FUNC(__udivsi3)
+LABEL(__aeabi_uidiv)
 UNWIND(.fnstart)
 
 	subs	r2, r1, #1
@@ -228,10 +228,9 @@ UNWIND(.fnstart)
 	mov	pc, lr
 
 UNWIND(.fnend)
-ENDPROC(__udivsi3)
-ENDPROC(__aeabi_uidiv)
+END(__udivsi3)
 
-ENTRY(__umodsi3)
+FUNC(__umodsi3)
 UNWIND(.fnstart)
 
 	subs	r2, r1, #1			@ compare divisor with 1
@@ -247,10 +246,10 @@ UNWIND(.fnstart)
 	mov	pc, lr
 
 UNWIND(.fnend)
-ENDPROC(__umodsi3)
+END(__umodsi3)
 
-ENTRY(__divsi3)
-ENTRY(__aeabi_idiv)
+FUNC(__divsi3)
+LABEL(__aeabi_idiv)
 UNWIND(.fnstart)
 
 	cmp	r1, #0
@@ -289,10 +288,9 @@ UNWIND(.fnstart)
 	mov	pc, lr
 
 UNWIND(.fnend)
-ENDPROC(__divsi3)
-ENDPROC(__aeabi_idiv)
+END(__divsi3)
 
-ENTRY(__modsi3)
+FUNC(__modsi3)
 UNWIND(.fnstart)
 
 	cmp	r1, #0
@@ -314,11 +312,11 @@ UNWIND(.fnstart)
 	mov	pc, lr
 
 UNWIND(.fnend)
-ENDPROC(__modsi3)
+END(__modsi3)
 
 #ifdef CONFIG_AEABI
 
-ENTRY(__aeabi_uidivmod)
+FUNC(__aeabi_uidivmod)
 UNWIND(.fnstart)
 UNWIND(.save {r0, r1, ip, lr}	)
 
@@ -330,9 +328,9 @@ UNWIND(.save {r0, r1, ip, lr}	)
 	mov	pc, lr
 
 UNWIND(.fnend)
-ENDPROC(__aeabi_uidivmod)
+END(__aeabi_uidivmod)
 
-ENTRY(__aeabi_idivmod)
+FUNC(__aeabi_idivmod)
 UNWIND(.fnstart)
 UNWIND(.save {r0, r1, ip, lr}	)
 	stmfd	sp!, {r0, r1, ip, lr}
@@ -343,9 +341,9 @@ UNWIND(.save {r0, r1, ip, lr}	)
 	mov	pc, lr
 
 UNWIND(.fnend)
-ENDPROC(__aeabi_idivmod)
+END(__aeabi_idivmod)
 
-ENTRY(__aeabi_uldivmod)
+FUNC(__aeabi_uldivmod)
 UNWIND(.fnstart)
 UNWIND(.save {lr}	)
 	sub sp, sp, #8
@@ -357,9 +355,9 @@ UNWIND(.save {lr}	)
 	mov	pc, lr
 
 UNWIND(.fnend)
-ENDPROC(__aeabi_uldivmod)
+END(__aeabi_uldivmod)
 
-ENTRY(__aeabi_ldivmod)
+FUNC(__aeabi_ldivmod)
 UNWIND(.fnstart)
 UNWIND(.save {lr}	)
 	sub sp, sp, #16
@@ -371,10 +369,10 @@ UNWIND(.save {lr}	)
 	mov	pc, lr
 	
 UNWIND(.fnend)
-ENDPROC(__aeabi_ldivmod)
+END(__aeabi_ldivmod)
 #endif
 
-Ldiv0:
+FUNC_LOCAL(Ldiv0)
 UNWIND(.fnstart)
 UNWIND(.pad #4)
 UNWIND(.save {lr})
@@ -383,4 +381,4 @@ UNWIND(.save {lr})
 	mov	r0, #0			@ About as wrong as it could be.
 	ldr	pc, [sp], #8
 UNWIND(.fnend)
-ENDPROC(Ldiv0)
+END(Ldiv0)
--- a/xen/arch/arm/arm32/lib/lshrdi3.S
+++ b/xen/arch/arm/arm32/lib/lshrdi3.S
@@ -34,8 +34,8 @@ along with this program; see the file CO
 #define ah r1
 #endif
 
-ENTRY(__lshrdi3)
-ENTRY(__aeabi_llsr)
+FUNC(__lshrdi3)
+LABEL(__aeabi_llsr)
 
 	subs	r3, r2, #32
 	rsb	ip, r2, #32
@@ -47,5 +47,4 @@ ENTRY(__aeabi_llsr)
 	mov	ah, ah, lsr r2
 	mov	pc, lr
 
-ENDPROC(__lshrdi3)
-ENDPROC(__aeabi_llsr)
+END(__lshrdi3)
--- a/xen/arch/arm/arm32/lib/memchr.S
+++ b/xen/arch/arm/arm32/lib/memchr.S
@@ -12,8 +12,7 @@
 #include "assembler.h"
 
 	.text
-	.align	5
-ENTRY(memchr)
+FUNC(memchr, 32)
 	and	r1, r1, #0xff
 1:	subs	r2, r2, #1
 	bmi	2f
@@ -23,4 +22,4 @@ ENTRY(memchr)
 	sub	r0, r0, #1
 2:	movne	r0, #0
 	mov	pc, lr
-ENDPROC(memchr)
+END(memchr)
--- a/xen/arch/arm/arm32/lib/memcpy.S
+++ b/xen/arch/arm/arm32/lib/memcpy.S
@@ -54,8 +54,8 @@
 
 /* Prototype: void *memcpy(void *dest, const void *src, size_t n); */
 
-ENTRY(memcpy)
+FUNC(memcpy)
 
 #include "copy_template.S"
 
-ENDPROC(memcpy)
+END(memcpy)
--- a/xen/arch/arm/arm32/lib/memmove.S
+++ b/xen/arch/arm/arm32/lib/memmove.S
@@ -24,7 +24,7 @@
  * occurring in the opposite direction.
  */
 
-ENTRY(memmove)
+FUNC(memmove)
 
 		subs	ip, r0, r1
 		cmphi	r2, ip
@@ -194,4 +194,4 @@ ENTRY(memmove)
 
 18:		backward_copy_shift	push=24	pull=8
 
-ENDPROC(memmove)
+END(memmove)
--- a/xen/arch/arm/arm32/lib/memset.S
+++ b/xen/arch/arm/arm32/lib/memset.S
@@ -12,9 +12,8 @@
 #include "assembler.h"
 
 	.text
-	.align	5
 
-ENTRY(memset)
+FUNC(memset, 32)
 	and	r1, r1, #0xff
 	ands	r3, r0, #3		@ 1 unaligned?
 	mov	ip, r0			@ preserve r0 as return value
@@ -120,4 +119,4 @@ ENTRY(memset)
 	strb	r1, [ip], #1		@ 1
 	add	r2, r2, r3		@ 1 (r2 = r2 - (4 - r3))
 	b	1b
-ENDPROC(memset)
+END(memset)
--- a/xen/arch/arm/arm32/lib/memzero.S
+++ b/xen/arch/arm/arm32/lib/memzero.S
@@ -10,7 +10,7 @@
 #include "assembler.h"
 
 	.text
-	.align	5
+FUNC_LOCAL(_memzero_, 32)
 	.word	0
 /*
  * Align the pointer in r0.  r3 contains the number of bytes that we are
@@ -29,7 +29,7 @@
  * memzero again.
  */
 
-ENTRY(__memzero)
+LABEL(__memzero)
 	mov	r2, #0			@ 1
 	ands	r3, r0, #3		@ 1 unaligned?
 	bne	1b			@ 1
@@ -121,4 +121,4 @@ ENTRY(__memzero)
 	tst	r1, #1			@ 1 a byte left over
 	strneb	r2, [r0], #1		@ 1
 	mov	pc, lr			@ 1
-ENDPROC(__memzero)
+END(_memzero_)
--- a/xen/arch/arm/arm32/lib/strchr.S
+++ b/xen/arch/arm/arm32/lib/strchr.S
@@ -14,8 +14,7 @@
 #include "assembler.h"
 
 		.text
-		.align	5
-ENTRY(strchr)
+FUNC(strchr, 32)
 		and	r1, r1, #0xff
 1:		ldrb	r2, [r0], #1
 		teq	r2, r1
@@ -25,4 +24,4 @@ ENTRY(strchr)
 		movne	r0, #0
 		subeq	r0, r0, #1
 		mov	pc, lr
-ENDPROC(strchr)
+END(strchr)
--- a/xen/arch/arm/arm32/lib/strrchr.S
+++ b/xen/arch/arm/arm32/lib/strrchr.S
@@ -12,8 +12,7 @@
 #include "assembler.h"
 
 		.text
-		.align	5
-ENTRY(strrchr)
+FUNC(strrchr, 32)
 		and	r1, r1, #0xff
 		mov	r3, #0
 1:		ldrb	r2, [r0], #1
@@ -23,4 +22,4 @@ ENTRY(strrchr)
 		bne	1b
 		mov	r0, r3
 		mov	pc, lr
-ENDPROC(strrchr)
+END(strrchr)



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:16:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:16:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808250.1220131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svecG-0008QA-GQ; Tue, 01 Oct 2024 15:16:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808250.1220131; Tue, 01 Oct 2024 15: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 1svecG-0008Q3-CN; Tue, 01 Oct 2024 15:16:44 +0000
Received: by outflank-mailman (input) for mailman id 808250;
 Tue, 01 Oct 2024 15:16: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svecF-0006cV-0f
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:16:43 +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 29de12a4-8008-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:16:42 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a910860e4dcso64690766b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:16:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27773c0sm736022166b.1.2024.10.01.08.16.41
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:16:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 29de12a4-8008-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795802; x=1728400602; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=kDmhaPLV1KBtugpOb/drJdwa74rwyXxXKWWSRWQJz04=;
        b=gF6krIrkP04Jda1lqW/drHBWTGFao1i/PTzNje2T5bOgta03uVvNVlqmhpYoYD/PyY
         zSxmRYU6KfWJYoTvHRwSOK3O36jcH3Je5UtXAOZS/bNxR74zjeVHOml2coPMolirkr1D
         fPrKx3ihExfS5gH1UjFKjUTkzWSgNLnmfFxsb4GC5IACbcclLSTzJqgaUP+l8gmwaYup
         v8U7wXG58Nl5QFO2M2KSDw6K5FEKwsyLK/KHyfjTtrSAq84gEF88l7kACnRGld8QZHB0
         aeFB+mWpKSGc1XPpPdMLiD8yWcbNmTUu1VRzFzZnVreTAknkydt+reWes4nSnckwt8JF
         XTIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795802; x=1728400602;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=kDmhaPLV1KBtugpOb/drJdwa74rwyXxXKWWSRWQJz04=;
        b=jySsXXIG5N00sZzCMdCHvDFjZpIhWsNqd/Q0HQM0QZqhtmboStw857lspcxcX+bHjW
         giiZ6Yz1NI8SWd6K97LsV5K1YZm0FdhesTU8gPpMHutCiSWSE9YT4Dw4ceYcI6Vi3jOA
         h0RM6LW0Pn8ZlKsi74Qu9OhtwIBvSJLxAZQZgPQfTmY7fqIvq4c3tVz5GR0UrK0wkMbQ
         NvoPwh62kc+GAeWw4Wi2ZOkSa2IQIB4Gwv4JynY1yW6DhAwcCdLV3/lk1I8ly/gGwFwW
         cI+3ZWvmPIZLPeaiVXgwOpCjS1DDAX+zOcGlb3kXQmOzq3QQ4lCVp5bf7HU7LJr0CmPP
         YptA==
X-Gm-Message-State: AOJu0Yy75Fa3nWLD7MRcTczyp38odbCCUiSowdA97uP3ooM2cFGpmnIx
	q6y/8i596y+CsdQ9a4pkFHavlPEr1AjIb0NDi/1yf7yjtk2p4rRldejopTnjWs6Idisr5RmdHcw
	=
X-Google-Smtp-Source: AGHT+IHOnm+9ZIJSbtd230MU90VUrqhjUsU9nVNxewRyh0vxzPstKQDAAw2vZdHSfRUktn4qz3+ZIg==
X-Received: by 2002:a17:906:f59b:b0:a83:94bd:d913 with SMTP id a640c23a62f3a-a93c48e80d3mr1803406266b.10.1727795801661;
        Tue, 01 Oct 2024 08:16:41 -0700 (PDT)
Message-ID: <7edbc094-6b3a-47f0-92b7-879ca1d76548@suse.com>
Date: Tue, 1 Oct 2024 17:16:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 08/11] Arm32: use new-style entry annotations for MMU code
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@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: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Locally override SYM_PUSH_SECTION() to retain the intended section
association.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v7: New.

--- a/xen/arch/arm/arm32/mmu/head.S
+++ b/xen/arch/arm/arm32/mmu/head.S
@@ -160,6 +160,13 @@
 .endm
 
 .section .text.idmap, "ax", %progbits
+/*
+ * Code below wants to all live in the section established above.  Annotations
+ * from xen/linkage.h therefore may not switch sections (honoring
+ * CONFIG_CC_SPLIT_SECTIONS).  Override the respective macro.
+ */
+#undef SYM_PUSH_SECTION
+#define SYM_PUSH_SECTION(name, attr)
 
 /*
  * Rebuild the boot pagetable's first-level entries. The structure
@@ -174,7 +181,7 @@
  *
  * Clobbers r0 - r5
  */
-create_page_tables:
+FUNC_LOCAL(create_page_tables)
         /* Prepare the page-tables for mapping Xen */
         mov_w r0, XEN_VIRT_START
 
@@ -263,7 +270,7 @@ use_temporary_mapping:
 
         mov   r12, #1                /* r12 := temporary mapping created */
         mov   pc, lr
-ENDPROC(create_page_tables)
+END(create_page_tables)
 
 /*
  * Turn on the Data Cache and the MMU. The function will return
@@ -276,7 +283,7 @@ ENDPROC(create_page_tables)
  *
  * Clobbers r0 - r5
  */
-enable_mmu:
+FUNC_LOCAL(enable_mmu)
         PRINT("- Turning on paging -\r\n")
 
         /*
@@ -346,7 +353,7 @@ enable_mmu:
         teq   r12, #0
         beq   remove_identity_mapping
         b     remove_temporary_mapping
-ENDPROC(enable_mmu)
+END(enable_mmu)
 
 /*
  * Switch to the runtime mapping. The logic depends on whether the
@@ -366,7 +373,7 @@ ENDPROC(enable_mmu)
  *
  * Clobbers r0 - r4
  */
-switch_to_runtime_mapping:
+FUNC_LOCAL(switch_to_runtime_mapping)
         /*
          * Jump to the runtime mapping if the virt and phys are not
          * clashing
@@ -411,7 +418,7 @@ ready_to_switch:
         PRINT_ID("- Jumping to runtime address -\r\n")
 
         mov   pc, lr
-ENDPROC(switch_to_runtime_mapping)
+END(switch_to_runtime_mapping)
 
 /*
  * Enable mm (turn on the data cache and the MMU) for secondary CPUs.
@@ -428,7 +435,7 @@ ENDPROC(switch_to_runtime_mapping)
  *
  * Clobbers r0 - r6
  */
-ENTRY(enable_secondary_cpu_mm)
+FUNC(enable_secondary_cpu_mm)
         mov   r6, lr
 
         bl    create_page_tables
@@ -456,7 +463,7 @@ ENTRY(enable_secondary_cpu_mm)
 
         /* Return to the virtual address requested by the caller. */
         mov   pc, r6
-ENDPROC(enable_secondary_cpu_mm)
+END(enable_secondary_cpu_mm)
 
 /*
  * Enable mm (turn on the data cache and the MMU) for the boot CPU.
@@ -474,7 +481,7 @@ ENDPROC(enable_secondary_cpu_mm)
  *
  * Clobbers r0 - r6
  */
-ENTRY(enable_boot_cpu_mm)
+FUNC(enable_boot_cpu_mm)
         mov   r6, lr
 
 #ifdef CONFIG_EARLY_PRINTK
@@ -491,7 +498,7 @@ ENTRY(enable_boot_cpu_mm)
         /* Address in the runtime mapping to jump to after the MMU is enabled */
         mov   lr, r6
         b     enable_mmu
-ENDPROC(enable_boot_cpu_mm)
+END(enable_boot_cpu_mm)
 
 /*
  * Remove the 1:1 map from the page-tables. It is not easy to keep track
@@ -503,7 +510,7 @@ ENDPROC(enable_boot_cpu_mm)
  *
  * Clobbers r0 - r3
  */
-remove_identity_mapping:
+FUNC_LOCAL(remove_identity_mapping)
         PRINT("- Removing the identity mapping -\r\n")
 
         /* r2:r3 := invalid page-table entry */
@@ -518,14 +525,14 @@ remove_identity_mapping:
 
         flush_xen_tlb_local r0
         mov   pc, lr
-ENDPROC(remove_identity_mapping)
+END(remove_identity_mapping)
 
 /*
  * Remove the temporary mapping of Xen starting at TEMPORARY_XEN_VIRT_START.
  *
  * Clobbers r0 - r3
  */
-remove_temporary_mapping:
+FUNC_LOCAL(remove_temporary_mapping)
         PRINT("- Removing the temporary mapping -\r\n")
 
         /* r2:r3 := invalid page-table entry */
@@ -541,13 +548,14 @@ remove_temporary_mapping:
         flush_xen_tlb_local r0
 
         mov  pc, lr
-ENDPROC(remove_temporary_mapping)
+END(remove_temporary_mapping)
 
 /* Fail-stop */
-fail:   PRINT("- Boot failed -\r\n")
+FUNC_LOCAL(fail)
+        PRINT("- Boot failed -\r\n")
 1:      wfe
         b     1b
-ENDPROC(fail)
+END(fail)
 
 /*
  * Switch TTBR
@@ -555,7 +563,7 @@ ENDPROC(fail)
  *
  * TODO: This code does not comply with break-before-make.
  */
-ENTRY(switch_ttbr)
+FUNC(switch_ttbr)
         dsb                            /* Ensure the flushes happen before
                                         * continuing */
         isb                            /* Ensure synchronization with previous
@@ -579,4 +587,4 @@ ENTRY(switch_ttbr)
         isb
 
         mov pc, lr
-ENDPROC(switch_ttbr)
+END(switch_ttbr)



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:18:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:18:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808254.1220141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svedb-0001DA-PK; Tue, 01 Oct 2024 15:18:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808254.1220141; Tue, 01 Oct 2024 15:18: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 1svedb-0001D3-Mh; Tue, 01 Oct 2024 15:18:07 +0000
Received: by outflank-mailman (input) for mailman id 808254;
 Tue, 01 Oct 2024 15:18: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sveda-0001Ce-QN
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:18:06 +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 5bb4648a-8008-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:18:06 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c8952f7f95so3115911a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:18:05 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8ad571a92sm928966a12.51.2024.10.01.08.18.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:18:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5bb4648a-8008-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795885; x=1728400685; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=e60l8OM3J3mEWjrRG/wj+VAi+SfyVlJ4UmMEasaEyyg=;
        b=dePLSNEsS96r8zqVwiEy9Rx7nPpg8B0vg/W94O+vRHWxOdjHzKIG47C9P+PnZA1VnE
         V1OBoKM9wET0Cu4TAL9yaHS8vUcDNP/GE+fU8rP+g9AhsGZskQK2sViCcDsZ1UizejTo
         8lQYyhCrWYvk0jxhuYTQwlNGzfIcUMMDyVMFaBJB+4lh6TSE+xYWXIylI4PVv5B7+YyS
         0J2atldS8P+2CsmRWIUkaHXcU5EVTJOyR+qI7WESoxUDedRCjHVtKvgu+/VCnJvE2FuD
         elPKgoSJ+SagmT4ch3Hbz6Xg9fhKspG6yQaPwzfnn4MWSjZfbMeuonEzm/r4G9Pivyb3
         BFtQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795885; x=1728400685;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=e60l8OM3J3mEWjrRG/wj+VAi+SfyVlJ4UmMEasaEyyg=;
        b=gcTfwjw51HTMVOLbwg6Jb1/cuMNNm+QW1/OkfBzAuXzbrxt6lmEH5fAeHjiETSj06v
         dFd/3fXhwYcvbk7B9cleR3g6cVs1D8FShXhjqhD2SaaJM/X4uGBu4+3TCQtMEj4ipdHG
         c738vnTWmMoBSqjv+ibuFEVRa4Puj1Js/Da2VKZGSl2AsQIa+3wBq5xfQwRfeQH8nug7
         IBOHdH8ksGIrthgT84BMmwm4jbmIvIu5IkOfTw8sYyDbaHYwR4osB3AEktFNgH4TTgVx
         Qs/Xg2F/3odnLvI2Wr55TBoGl/FzedyQUyaNTFRmXsFsAnGgajTVm8oS330V6AOOXrrS
         ZePw==
X-Gm-Message-State: AOJu0YzYxkciiLho7Jjtu/1h4R9X0tnz2YfYLCqfcn3Ow3cXm0/Vbd/S
	FlDwKY82h7ThL05CBOxg7OuQb9/wye/c7EzHtAR4jgeRvHWbzwUTg7Goy4QdIuWgkd1RUQanN4A
	=
X-Google-Smtp-Source: AGHT+IGTJBIaSZgiJPEF9LAypFy2KxDlEDBhqAZMPtPgmQ0OlaNYU5UV30P3VinNj93wIdCp46NojQ==
X-Received: by 2002:a05:6402:1e92:b0:5c8:9861:a2aa with SMTP id 4fb4d7f45d1cf-5c89861a5c0mr4560235a12.21.1727795885361;
        Tue, 01 Oct 2024 08:18:05 -0700 (PDT)
Message-ID: <07da5e97-42f6-49cc-8309-5ea64e2d3567@suse.com>
Date: Tue, 1 Oct 2024 17:18:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 11/11] Arm: purge ENTRY(), ENDPROC(), and ALIGN
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Julien Grall <julien@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>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

They're no longer used. This also makes it unnecessary to #undef two of
them in the linker script.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v7: New.

--- a/xen/arch/arm/include/asm/config.h
+++ b/xen/arch/arm/include/asm/config.h
@@ -53,17 +53,9 @@
 
 /* Linkage for ARM */
 #ifdef __ASSEMBLY__
-#define ALIGN .balign CONFIG_FUNCTION_ALIGNMENT
-#define ENTRY(name)                             \
-  .globl name;                                  \
-  ALIGN;                                        \
-  name:
 #define GLOBAL(name)                            \
   .globl name;                                  \
   name:
-#define ENDPROC(name) \
-  .type name, %function; \
-  END(name)
 #endif
 
 #include <xen/const.h>
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -6,8 +6,6 @@
 #include <xen/lib.h>
 #include <xen/xen.lds.h>
 #include <asm/page.h>
-#undef ENTRY
-#undef ALIGN
 
 ENTRY(start)
 



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:19:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:19:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808258.1220151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sveea-0001mL-1U; Tue, 01 Oct 2024 15:19:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808258.1220151; Tue, 01 Oct 2024 15:19: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 1sveeZ-0001mE-Up; Tue, 01 Oct 2024 15:19:07 +0000
Received: by outflank-mailman (input) for mailman id 808258;
 Tue, 01 Oct 2024 15:19: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sveeY-0001ls-Uj
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:19: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 7f76deb9-8008-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:19:05 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a90349aa7e5so834282666b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:19:05 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297c2d2sm725075066b.183.2024.10.01.08.19.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:19:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f76deb9-8008-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795945; x=1728400745; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=V/W2MGkOKCC7HA+r97/iJEcUmEuwF1UEgHjuvx0Yn3U=;
        b=ZoOkrdWwKPwxL5ALEvaIuyiyZKLl8BZCl6pnYJbmGwfs0qQuuO7CA90/Ng2uvT+8To
         QmBJ74DEDvN8EmbQ6JPWMvqM5KQ8UilEIBRnNDKavutqZOkJ51RRVsYWTZ4A/GzMqeUI
         hi1VMXu5qdqx/DFpW/6/5368OV4weIjrG7NYzlddS24wMXNtmQH2emdTpsvtKUCXRg4F
         VB5kCnqPW4mabaPKkGrdYzh3FmO3xyfGvzn9cNCpUwx5g1iCCM67Il5DG4GjC6EIHH4L
         1kNci019HHCoNg6GnRJlr6PZZTtuHtS5D+01aoLROqkFHIjU20xWlkytyexojke7K3EH
         EtXQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795945; x=1728400745;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=V/W2MGkOKCC7HA+r97/iJEcUmEuwF1UEgHjuvx0Yn3U=;
        b=SntNmaQZ+Hcdo6im2VvwpWlEQhjJ5zy3YE5v+BJbC3bnesPXrrXlYdW8r1FIawAc/A
         px7Q7yzQPx3dXRJubMUimqaYFfBNfV4FFNkGIITugQHZZupTifv6fShRtyea7P0I4ert
         2PFgHe2ncUlJ3pUymrrJ/UY6DoLLxrOF4TOzwtkiOrOwptWU9pWE9xXGPFnkb5y80Ys5
         prjDT/R6GR52KxUhBvH10RRgRK34Fp6Ls97ZYPSpVOIiqA7tN3a4jv+58LZrXuOHCjpD
         psRGdi79SSIz5tIvm+ciuMBRqWxhG7jcFAeolSL/wbM3y2KZpazFRW5Va/WVhWJBRqYv
         fJSA==
X-Gm-Message-State: AOJu0Yx5LVzi2hhvusGmJJH4IGNSUwl/EgJOawl5P/l0xA3EhVpKQHYh
	VRotlU8vYTbkUsI/EnXkcSrG2kLYH1tS25stKHhM4yiMDTfqLKxfwxiMiP05B/YODzW/CjNIexs
	=
X-Google-Smtp-Source: AGHT+IEbHVdnUggGlB83ijvqXR1ftyHB7ckJZzdQ4LyRQ3fVpIVcltcTtnmDJrjYlfwU8HW3Itl7Qg==
X-Received: by 2002:a17:907:748:b0:a86:a30f:4aef with SMTP id a640c23a62f3a-a93c49199b6mr1727170966b.22.1727795945296;
        Tue, 01 Oct 2024 08:19:05 -0700 (PDT)
Message-ID: <aa87726e-3638-4ec6-9757-8cafcdd3b464@suse.com>
Date: Tue, 1 Oct 2024 17:19:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 08/11] Arm32: use new-style entry annotations for MMU
 code
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
 <7edbc094-6b3a-47f0-92b7-879ca1d76548@suse.com>
Content-Language: en-US
Cc: Julien Grall <julien@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>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7edbc094-6b3a-47f0-92b7-879ca1d76548@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 17:16, Jan Beulich wrote:
> Locally override SYM_PUSH_SECTION() to retain the intended section
> association.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> v7: New.

I'm sorry, I failed to Cc maintainers here.

Jan

> --- a/xen/arch/arm/arm32/mmu/head.S
> +++ b/xen/arch/arm/arm32/mmu/head.S
> @@ -160,6 +160,13 @@
>  .endm
>  
>  .section .text.idmap, "ax", %progbits
> +/*
> + * Code below wants to all live in the section established above.  Annotations
> + * from xen/linkage.h therefore may not switch sections (honoring
> + * CONFIG_CC_SPLIT_SECTIONS).  Override the respective macro.
> + */
> +#undef SYM_PUSH_SECTION
> +#define SYM_PUSH_SECTION(name, attr)
>  
>  /*
>   * Rebuild the boot pagetable's first-level entries. The structure
> @@ -174,7 +181,7 @@
>   *
>   * Clobbers r0 - r5
>   */
> -create_page_tables:
> +FUNC_LOCAL(create_page_tables)
>          /* Prepare the page-tables for mapping Xen */
>          mov_w r0, XEN_VIRT_START
>  
> @@ -263,7 +270,7 @@ use_temporary_mapping:
>  
>          mov   r12, #1                /* r12 := temporary mapping created */
>          mov   pc, lr
> -ENDPROC(create_page_tables)
> +END(create_page_tables)
>  
>  /*
>   * Turn on the Data Cache and the MMU. The function will return
> @@ -276,7 +283,7 @@ ENDPROC(create_page_tables)
>   *
>   * Clobbers r0 - r5
>   */
> -enable_mmu:
> +FUNC_LOCAL(enable_mmu)
>          PRINT("- Turning on paging -\r\n")
>  
>          /*
> @@ -346,7 +353,7 @@ enable_mmu:
>          teq   r12, #0
>          beq   remove_identity_mapping
>          b     remove_temporary_mapping
> -ENDPROC(enable_mmu)
> +END(enable_mmu)
>  
>  /*
>   * Switch to the runtime mapping. The logic depends on whether the
> @@ -366,7 +373,7 @@ ENDPROC(enable_mmu)
>   *
>   * Clobbers r0 - r4
>   */
> -switch_to_runtime_mapping:
> +FUNC_LOCAL(switch_to_runtime_mapping)
>          /*
>           * Jump to the runtime mapping if the virt and phys are not
>           * clashing
> @@ -411,7 +418,7 @@ ready_to_switch:
>          PRINT_ID("- Jumping to runtime address -\r\n")
>  
>          mov   pc, lr
> -ENDPROC(switch_to_runtime_mapping)
> +END(switch_to_runtime_mapping)
>  
>  /*
>   * Enable mm (turn on the data cache and the MMU) for secondary CPUs.
> @@ -428,7 +435,7 @@ ENDPROC(switch_to_runtime_mapping)
>   *
>   * Clobbers r0 - r6
>   */
> -ENTRY(enable_secondary_cpu_mm)
> +FUNC(enable_secondary_cpu_mm)
>          mov   r6, lr
>  
>          bl    create_page_tables
> @@ -456,7 +463,7 @@ ENTRY(enable_secondary_cpu_mm)
>  
>          /* Return to the virtual address requested by the caller. */
>          mov   pc, r6
> -ENDPROC(enable_secondary_cpu_mm)
> +END(enable_secondary_cpu_mm)
>  
>  /*
>   * Enable mm (turn on the data cache and the MMU) for the boot CPU.
> @@ -474,7 +481,7 @@ ENDPROC(enable_secondary_cpu_mm)
>   *
>   * Clobbers r0 - r6
>   */
> -ENTRY(enable_boot_cpu_mm)
> +FUNC(enable_boot_cpu_mm)
>          mov   r6, lr
>  
>  #ifdef CONFIG_EARLY_PRINTK
> @@ -491,7 +498,7 @@ ENTRY(enable_boot_cpu_mm)
>          /* Address in the runtime mapping to jump to after the MMU is enabled */
>          mov   lr, r6
>          b     enable_mmu
> -ENDPROC(enable_boot_cpu_mm)
> +END(enable_boot_cpu_mm)
>  
>  /*
>   * Remove the 1:1 map from the page-tables. It is not easy to keep track
> @@ -503,7 +510,7 @@ ENDPROC(enable_boot_cpu_mm)
>   *
>   * Clobbers r0 - r3
>   */
> -remove_identity_mapping:
> +FUNC_LOCAL(remove_identity_mapping)
>          PRINT("- Removing the identity mapping -\r\n")
>  
>          /* r2:r3 := invalid page-table entry */
> @@ -518,14 +525,14 @@ remove_identity_mapping:
>  
>          flush_xen_tlb_local r0
>          mov   pc, lr
> -ENDPROC(remove_identity_mapping)
> +END(remove_identity_mapping)
>  
>  /*
>   * Remove the temporary mapping of Xen starting at TEMPORARY_XEN_VIRT_START.
>   *
>   * Clobbers r0 - r3
>   */
> -remove_temporary_mapping:
> +FUNC_LOCAL(remove_temporary_mapping)
>          PRINT("- Removing the temporary mapping -\r\n")
>  
>          /* r2:r3 := invalid page-table entry */
> @@ -541,13 +548,14 @@ remove_temporary_mapping:
>          flush_xen_tlb_local r0
>  
>          mov  pc, lr
> -ENDPROC(remove_temporary_mapping)
> +END(remove_temporary_mapping)
>  
>  /* Fail-stop */
> -fail:   PRINT("- Boot failed -\r\n")
> +FUNC_LOCAL(fail)
> +        PRINT("- Boot failed -\r\n")
>  1:      wfe
>          b     1b
> -ENDPROC(fail)
> +END(fail)
>  
>  /*
>   * Switch TTBR
> @@ -555,7 +563,7 @@ ENDPROC(fail)
>   *
>   * TODO: This code does not comply with break-before-make.
>   */
> -ENTRY(switch_ttbr)
> +FUNC(switch_ttbr)
>          dsb                            /* Ensure the flushes happen before
>                                          * continuing */
>          isb                            /* Ensure synchronization with previous
> @@ -579,4 +587,4 @@ ENTRY(switch_ttbr)
>          isb
>  
>          mov pc, lr
> -ENDPROC(switch_ttbr)
> +END(switch_ttbr)
> 



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:28:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:28:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808279.1220165 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svenD-0004Cj-TX; Tue, 01 Oct 2024 15:28:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808279.1220165; Tue, 01 Oct 2024 15:28: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 1svenD-0004Cf-QG; Tue, 01 Oct 2024 15:28:03 +0000
Received: by outflank-mailman (input) for mailman id 808279;
 Tue, 01 Oct 2024 15:28: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svecd-0006cV-Oe
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:17:07 +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 38ca8408-8008-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:17:07 +0200 (CEST)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-53991d05416so3255659e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:17:07 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27c7237sm726038666b.81.2024.10.01.08.17.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:17:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38ca8408-8008-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795827; x=1728400627; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=lu1GiGzAFS51pwrdfGOQ2MVzi5IX7VZ3x23jbu0DltE=;
        b=J84oErtiXB4nCwPxvON+mIK9PjO7NimHfm37YV2u7LSFhCKentiYDRD5mWk7T7F2wS
         vSekOxFkLjJiZn0KtKm8CKNk/sKqmujs+MhX1OLb+/3SYlHcR/bq5zplmFydZpgRk9Q8
         W40BSWFLlTSB4LG2NRMH+nyJjZofVTXZgqfpvdZW0MDKbruHTW/SdsiToiE9gXnbZnUX
         ACKKfBk4Xx36us24uoFaXxzRNLr6qLyUF+jrSuf+x8cOh1hPrfzD7hIZKyLM3vfD8T+t
         WHhQQHnkFzWpZE358Q4AsZmEAh7uCtaJukr1a4WuvviX6bo6Bgi8dT52WQXpk/W1Y50e
         HyLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795827; x=1728400627;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lu1GiGzAFS51pwrdfGOQ2MVzi5IX7VZ3x23jbu0DltE=;
        b=VlRjZqZ8fHtE6HxVgOhh4IuADdcWHWZLkgseIHHJK87DanOxXcmqHCGvXn3t4JdfVs
         iriR7O9DC6XEcMz+c4G0zRTiYyuBtbo9htfuWFO8g/a41SdpuuvDQ/OKULW8NgKnS6Z7
         yqpvGwq5zPJG8/OL7+knfrejbMwRxK+K114iuDEGhAcjFMsg4DUgSKPRKzWe/OH/7n2H
         b0BEBHQAxVwEGWa7NLWAgLj7/JC8ihgIOu0fFdnIu3mfq4ScCn6jP34mcgmsucK7vAqx
         K4BmDu1ffkgzjFKa4nt+lUvjl6ZGq1KoNUc6ZFQ4+5aFay97UrD5wlQFgzZkL3I2xXli
         UvUQ==
X-Gm-Message-State: AOJu0Yy/3WiT25dYQ7jAgnWqUqDf1LgEohCPoqjYyEpKhUrQUQafNJPF
	HJoBlqfHGxz4YlASMMktgeicet1JBcK3Iu/eNl0bKoqxm5W1SnmhRXf4WhnXGVSXB9kV0G6cGpw
	=
X-Google-Smtp-Source: AGHT+IH1yhA3GKtrE6RLkZbejkuaUwppYDkJvGUPZMdydy8S+YzLIM08SNZmB+jcjU3iU8V428hzSA==
X-Received: by 2002:a05:6512:ba3:b0:539:8fcd:520 with SMTP id 2adb3069b0e04-5398fcd0637mr7453767e87.36.1727795826770;
        Tue, 01 Oct 2024 08:17:06 -0700 (PDT)
Message-ID: <74c761c9-41b1-4397-aec2-95558d53a7cc@suse.com>
Date: Tue, 1 Oct 2024 17:17:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 09/11] Arm32: use new-style entry annotations for entry
 code
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Julien Grall <julien@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>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Should the GLOBAL()s also be replaced?
---
v7: New.

--- a/xen/arch/arm/arm32/entry.S
+++ b/xen/arch/arm/arm32/entry.S
@@ -31,7 +31,7 @@
  *  r4: Set to a non-zero value if a pending Abort exception took place.
  *      Otherwise, it will be set to zero.
  */
-prepare_context_from_guest:
+FUNC_LOCAL(prepare_context_from_guest)
 #ifdef CONFIG_ARM32_HARDEN_BRANCH_PREDICTOR
         /*
          * Restore vectors table to the default as it may have been
@@ -140,7 +140,7 @@ abort_guest_exit_end:
 
 skip_check:
         b   enter_hypervisor_from_guest_preirq
-ENDPROC(prepare_context_from_guest)
+END(prepare_context_from_guest)
 
         /*
          * Macro to define a trap entry.
@@ -362,13 +362,13 @@ trap_irq:
 trap_fiq:
         vector fiq
 
-return_from_trap:
+LABEL_LOCAL(return_from_trap)
         /*
          * Restore the stack pointer from r11. It was saved on exception
          * entry (see __DEFINE_TRAP_ENTRY).
          */
         mov sp, r11
-ENTRY(return_to_new_vcpu32)
+LABEL(return_to_new_vcpu32)
         ldr r11, [sp, #UREGS_cpsr]
         and r11, #PSR_MODE_MASK
         cmp r11, #PSR_MODE_HYP
@@ -426,6 +426,7 @@ return_to_hypervisor:
         clrex
         eret
         sb
+END(return_from_trap)
 
 /*
  * struct vcpu *__context_switch(struct vcpu *prev, struct vcpu *next)
@@ -435,12 +436,13 @@ return_to_hypervisor:
  *
  * Returns prev in r0
  */
-ENTRY(__context_switch)
+FUNC(__context_switch)
         add     ip, r0, #VCPU_arch_saved_context
         stmia   ip!, {r4 - sl, fp, sp, lr}      /* Save register state */
 
         add     r4, r1, #VCPU_arch_saved_context
         ldmia   r4, {r4 - sl, fp, sp, pc}       /* Load registers and return */
+END(__context_switch)
 
 /*
  * Local variables:



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:28:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:28:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808287.1220176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svenj-0004uw-7j; Tue, 01 Oct 2024 15:28:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808287.1220176; Tue, 01 Oct 2024 15:28: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 1svenj-0004up-4j; Tue, 01 Oct 2024 15:28:35 +0000
Received: by outflank-mailman (input) for mailman id 808287;
 Tue, 01 Oct 2024 15:28: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sved6-0006cV-1a
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:17:36 +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 49877fcf-8008-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:17:35 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8d3cde1103so787445166b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:17:35 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93d4bd51f3sm597889266b.92.2024.10.01.08.17.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:17:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49877fcf-8008-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727795855; x=1728400655; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Igjx5Ygf4iYuyInfSXDjG9RY29JPrQg7L1HnVgD7deI=;
        b=dBI7iHPNDsztPyOvK3J2YMEo87VbKPTH/HgSWexiycU0pHuqZxnJzSLZ0o+Hq1nss5
         nWMfFZCSkfYzGVo2kG5NvTHUwS9NTL+NYAyW9ledGh0c8AdA42lndZIZfmM2pEME+E4r
         shpWbvfJVQqYmhaWDrGm9w2/NpvlnW2TU2befRhoK1RyX8WGlqTCw9UvIJvD7VJEfKZs
         d9SyRCzVVjy999nkyWFwQNoiW1nTRtKLXdwi39ZiVPusdTn+ui6tcIOom6xb6zpzlWeT
         0IWEMpHpW+jJXmne08teCyJqm6bCDStJHEDmD8cP1vam8Smz4INStmPOGg/fePhUFf9D
         oEzQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727795855; x=1728400655;
        h=content-transfer-encoding:in-reply-to:autocrypt:cc:content-language
         :references:to:from:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Igjx5Ygf4iYuyInfSXDjG9RY29JPrQg7L1HnVgD7deI=;
        b=v6/sksA1KB9ZotLe9fVmS22VIJ4uTNW/cQ2LhK3scJbnyPVAt6DdbSL8RzFjYBQaLV
         uHJq6nllw9LX/59XeaYQWUCX0WnkbAV4JqV+RW4JgXmI9nn7jVBTLfudUZ2QbmzvExxS
         hoaFNJTwVUxe3U9TUoT5MaNGtq9bYMPj88pwxBgt6o12EFS88tQA3SfZ5uU7Vt/cdk/g
         hj/rLDJt+cce5Sl8WZFXoFz4zy1NcHCcpqJcDmNUkxDffBV40IRQML7luLuwNyXCw2qD
         AtG4DuMVlaPM2Q7DnEJLmx6k1qODjJOgi6XX8HTql18HvBBloHCjPd8dePsQAsW299FU
         Rpvw==
X-Gm-Message-State: AOJu0YzyyiqaoE9dHMEapXshL7AFcCoMD5WS9W8qHFlzClwNvjQJOI1m
	mK5JR6IxXs/ktH9c48+o+3a0dI+y+jRCj5ULJGFkAegrLfek7bVCEdVWPca7yn9gkpxp4Cvj0y0
	=
X-Google-Smtp-Source: AGHT+IHUFohKlSuI+zxUu88VfpkhFnhONkrYvQLcLjxd1JMRQR50w3ULY7OkI2Th4nvtVFFNC2377w==
X-Received: by 2002:a17:907:9349:b0:a7a:3928:3529 with SMTP id a640c23a62f3a-a93c48e80b2mr1975647566b.13.1727795854922;
        Tue, 01 Oct 2024 08:17:34 -0700 (PDT)
Message-ID: <01eb936e-71f4-43b3-b753-5b8a6ecf5d66@suse.com>
Date: Tue, 1 Oct 2024 17:17:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v7 10/11] Arm32: use new-style entry annotations in head.S
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Language: en-US
Cc: Julien Grall <julien@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>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Locally override SYM_PUSH_SECTION() to retain the intended section
association.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v7: New.

--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -48,13 +48,20 @@
 
         .section .text.header, "ax", %progbits
         .arm
+/*
+ * Code below wants to all live in the section established above.  Annotations
+ * from xen/linkage.h therefore may not switch sections (honoring
+ * CONFIG_CC_SPLIT_SECTIONS).  Override the respective macro.
+ */
+#undef SYM_PUSH_SECTION
+#define SYM_PUSH_SECTION(name, attr)
 
         /*
          * This must be the very first address in the loaded image.
          * It should be linked at XEN_VIRT_START, and loaded at any
          * 4K-aligned address.
          */
-GLOBAL(start)
+FUNC(start)
         /*
          * zImage magic header, see:
          * http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html#d0e309
@@ -104,9 +111,9 @@ primary_switched:
         mov   r0, r8                 /* r0 := paddr(FDT) */
         mov_w r1, start_xen
         b     launch
-ENDPROC(start)
+END(start)
 
-GLOBAL(init_secondary)
+FUNC(init_secondary)
         cpsid aif                    /* Disable all interrupts */
 
         /* Find out where we are */
@@ -142,7 +149,7 @@ secondary_switched:
         /* Jump to C world */
         mov_w r1, start_secondary
         b     launch
-ENDPROC(init_secondary)
+END(init_secondary)
 
 /*
  * Check if the CPU supports virtualization extensions and has been booted
@@ -154,7 +161,7 @@ ENDPROC(init_secondary)
  *
  * Clobbers r0 - r3
  */
-check_cpu_mode:
+FUNC_LOCAL(check_cpu_mode)
         /* Check that this CPU has Hyp mode */
         mrc   CP32(r0, ID_PFR1)
         and   r0, r0, #0xf000        /* Bits 12-15 define virt extensions */
@@ -174,14 +181,14 @@ check_cpu_mode:
         PRINT("- Xen must be entered in NS Hyp mode -\r\n")
         PRINT("- Please update the bootloader -\r\n")
         b     fail
-ENDPROC(check_cpu_mode)
+END(check_cpu_mode)
 
 /*
  * Zero BSS
  *
  * Clobbers r0 - r3
  */
-zero_bss:
+FUNC_LOCAL(zero_bss)
         PRINT("- Zero BSS -\r\n")
         mov_w r0, __bss_start        /* r0 := vaddr(__bss_start) */
         mov_w r1, __bss_end          /* r1 := vaddr(__bss_end)   */
@@ -192,9 +199,9 @@ zero_bss:
         blo   1b
 
         mov   pc, lr
-ENDPROC(zero_bss)
+END(zero_bss)
 
-cpu_init:
+FUNC_LOCAL(cpu_init)
         PRINT("- Setting up control registers -\r\n")
 
         mov   r5, lr                       /* r5 := return address */
@@ -235,7 +242,7 @@ cpu_init_done:
         isb
 
         mov   pc, r5                        /* Return address is in r5 */
-ENDPROC(cpu_init)
+END(cpu_init)
 
 /*
  * Setup the initial stack and jump to the C world
@@ -246,7 +253,7 @@ ENDPROC(cpu_init)
  *
  * Clobbers r3
  */
-launch:
+FUNC_LOCAL(launch)
         mov_w r3, init_data
         add   r3, #INITINFO_stack    /* Find the boot-time stack */
         ldr   sp, [r3]
@@ -255,13 +262,14 @@ launch:
 
         /* Jump to C world */
        bx    r1
-ENDPROC(launch)
+END(launch)
 
 /* Fail-stop */
-fail:   PRINT("- Boot failed -\r\n")
+FUNC_LOCAL(fail)
+        PRINT("- Boot failed -\r\n")
 1:      wfe
         b     1b
-ENDPROC(fail)
+END(fail)
 
 #ifdef CONFIG_EARLY_PRINTK
 /*
@@ -272,14 +280,14 @@ ENDPROC(fail)
  *
  * Clobbers r0 - r3
  */
-init_uart:
+FUNC_LOCAL(init_uart)
         mov_w r11, CONFIG_EARLY_UART_BASE_ADDRESS
 #ifdef CONFIG_EARLY_UART_INIT
         early_uart_init r11, r1, r2
 #endif
         PRINT("- UART enabled -\r\n")
         mov   pc, lr
-ENDPROC(init_uart)
+END(init_uart)
 
 /*
  * Print early debug messages.
@@ -288,14 +296,14 @@ ENDPROC(init_uart)
  * r11: Early UART base address
  * Clobbers r0-r1
  */
-ENTRY(asm_puts)
+FUNC(asm_puts)
         early_uart_ready r11, r1
         ldrb  r1, [r0], #1           /* Load next char */
         teq   r1, #0                 /* Exit on nul */
         moveq pc, lr
         early_uart_transmit r11, r1
         b asm_puts
-ENDPROC(asm_puts)
+END(asm_puts)
 
 /*
  * Print a 32-bit number in hex.
@@ -304,7 +312,7 @@ ENDPROC(asm_puts)
  * r11: Early UART base address
  * Clobbers r0-r3
  */
-ENTRY(asm_putn)
+FUNC(asm_putn)
         adr_l r1, hex
         mov   r3, #8
 1:
@@ -316,18 +324,19 @@ ENTRY(asm_putn)
         subs  r3, r3, #1
         bne   1b
         mov   pc, lr
-ENDPROC(asm_putn)
+END(asm_putn)
 
 RODATA_SECT(.rodata.idmap, hex, "0123456789abcdef")
 
 #endif /* CONFIG_EARLY_PRINTK */
 
 /* This provides a C-API version of __lookup_processor_type */
-ENTRY(lookup_processor_type)
+FUNC(lookup_processor_type)
         stmfd sp!, {r4, lr}
         bl    __lookup_processor_type
         mov r0, r1
         ldmfd sp!, {r4, pc}
+END(lookup_processor_type)
 
 /*
  * Read processor ID register (CP#15, CR0), and Look up in the linker-built
@@ -338,7 +347,7 @@ ENTRY(lookup_processor_type)
  * r1: proc_info pointer
  * Clobbers r2-r4
  */
-__lookup_processor_type:
+FUNC_LOCAL(__lookup_processor_type)
         mrc   CP32(r0, MIDR)                /* r0 := our cpu id */
         adr_l r1, __proc_info_start
         adr_l r2, __proc_info_end
@@ -354,7 +363,7 @@ __lookup_processor_type:
         mov   r1, #0
 2:
         mov   pc, lr
-ENDPROC(__lookup_processor_type)
+END(__lookup_processor_type)
 
 /*
  * Local variables:



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:32:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:32:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808295.1220186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sverO-0006VL-NP; Tue, 01 Oct 2024 15:32:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808295.1220186; Tue, 01 Oct 2024 15:32: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 1sverO-0006VE-KU; Tue, 01 Oct 2024 15:32:22 +0000
Received: by outflank-mailman (input) for mailman id 808295;
 Tue, 01 Oct 2024 15:32: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sverN-0006V8-Rq
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:32:21 +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 58bde725-800a-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:32:20 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c88c9e45c2so5202965a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:32:20 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c294834asm728528166b.108.2024.10.01.08.32.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:32:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58bde725-800a-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727796739; x=1728401539; 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=HMddPRirk9O8o1+nW/AzFzSC2Pb05IM6+++jYd0CHEE=;
        b=YzmmZxY+Z8kxjYzGVxPp186SkqwnsugMrFUvWYfe9kgUWv/EkW3Ac6iHuH9wfRTnD+
         YqZqTHkvbgUmHy9XUxcua1AiS9tGSqMbE2i0AzVwmlSBvb6mBI+d32EzdJUSARGT58fT
         E3GpU/X3Xwq1OtpinjymzO3Zh9IUG5WKhMPxl/GdXrthdctdwa4czVLG9OD0xmV5LCMB
         ccy25pSUuQq1xiyvYKyzZz4wv3P/8tkAeYelHdcPTI9lgxLXGgSP/Y6JSEiVp3X2YhIg
         b2y4JmjLi0G6kkkbX1/kIc/US8uEQg68lYmid7Kvaz98ta9FlDp2tcOAlB3FZ03+5f9l
         EmvQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727796739; x=1728401539;
        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=HMddPRirk9O8o1+nW/AzFzSC2Pb05IM6+++jYd0CHEE=;
        b=SgspMPdJIt2CRH8gyPpSIxs1mMspcLy/WIEl4jF7KxIndBNrfRDmoNVyGubZkliSTx
         SkI7B6vpWzGeanJrph6KM9ue9QIjhXWh2p9iAquSo3Lfr6WOcnHtwZ5FnaTAtO/S/YgI
         BJOtcPSii+/hPLZCvzRB2KPexEAEpnhAIOXmom9OhZeTIkcHv5zBfoL1k9bfHWKPMz1h
         9yHlhqXhiFhmCuecu7F+EKkTaV9sggiiae+ZxCvGUz8d5PVf63RAlqvheWRGoRsa9plG
         84xi4nZQA29cUQJWovpfA7+EQwLANw0aVwu7HemHT2Ee7hDOBQTizOax8Or+yGg+qGEt
         KycQ==
X-Forwarded-Encrypted: i=1; AJvYcCV398iiG5ADVyIePEu1lUqTIb/SAVw4I6m6C+y4hCQtUSVuoKUUQxo1EcOyEn/LT6lOyw051y7pnbU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz7BxKDroRKdHtz8L3NG4EftaEVsRDy4dQhOqvWK27Sa3huqdWi
	qLcfX0y1XgA67QWXseaQZge7ncHTE9p06zlJg4vlwmVSjpUVUP4dCnsosIOPJA==
X-Google-Smtp-Source: AGHT+IFG82M5uShHaZC479IGe3GGSILZSwF/byMPNoGga8U1Dwa76J1utt43S00cJjQU9/MTpAptOA==
X-Received: by 2002:a17:907:60d4:b0:a8d:2281:94d9 with SMTP id a640c23a62f3a-a967c086898mr393659866b.23.1727796739453;
        Tue, 01 Oct 2024 08:32:19 -0700 (PDT)
Message-ID: <2e366771-31d4-471f-89d4-6076cf024de8@suse.com>
Date: Tue, 1 Oct 2024 17:32:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v9 1/2] xen/riscv: page table handling
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727781468.git.oleksii.kurochko@gmail.com>
 <55244e67032d3a8f6064aeccff44ebb0138cafaf.1727781468.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: <55244e67032d3a8f6064aeccff44ebb0138cafaf.1727781468.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 13:21, Oleksii Kurochko wrote:
> Implement map_pages_to_xen() which requires several
> functions to manage page tables and entries:
> - pt_update()
> - pt_mapping_level()
> - pt_update_entry()
> - pt_next_level()
> - pt_check_entry()
> 
> To support these operations, add functions for creating,
> mapping, and unmapping Xen tables:
> - create_table()
> - map_table()
> - unmap_table()
> 
> Introduce PTE_SMALL to indicate that 4KB mapping is needed
> and PTE_POPULATE.
> 
> In addition introduce flush_tlb_range_va() for TLB flushing across
> CPUs after updating the PTE for the requested mapping.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:41:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:41:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808302.1220196 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svf04-0000Wn-FB; Tue, 01 Oct 2024 15:41:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808302.1220196; Tue, 01 Oct 2024 15: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 1svf04-0000Wg-CE; Tue, 01 Oct 2024 15:41:20 +0000
Received: by outflank-mailman (input) for mailman id 808302;
 Tue, 01 Oct 2024 15:41: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svf03-0000Wa-EM
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:41:19 +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 991fd25c-800b-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:41:17 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so10421741a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:41:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c882494856sm6321957a12.94.2024.10.01.08.41.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:41:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 991fd25c-800b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727797277; x=1728402077; 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/OOOJXTELjQOK5vmJZ1RKF7zyc3Z5muk0aShovUEyk=;
        b=P0eMLZMuqeXy+9HH/FLWVUWWSFBzkzrWEMz1w2ve+yfKb8+oydjRGsIgSKSMRfVxJV
         IfpDUAcxoRrXG2PbiJeGjn/+PG4zoZXj1iR0tzyfxgL1fxWCJjJAL4wsfxfH9FbydFkB
         6mTgn5J+xHJ/8EbgFutgZdGo2YYsXDRFH0N4SBASgn/cUMBQGu/DE9gmNNBLv7HYMc76
         sFNHqwAQ0ELqNADQnJmgJF2sxUBehPU8DwdRbXOVkC4e9xEbVq8LNf/hm5Yb8WOtjaqq
         SGmIA78ZP7O8r+GaMe3r1L7YsSlIrFqcIdQsJU09onPTT5q9qD/zvjYu9JWR8TYKhRBH
         u+VQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727797277; x=1728402077;
        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/OOOJXTELjQOK5vmJZ1RKF7zyc3Z5muk0aShovUEyk=;
        b=uNJJcYBP7rX7ig7QlUvx2D3uDVXK69REVJrTxIB0zAcR8HWTxZsjwXdrVUi57m37Ns
         UABIeyalqkCSzKsJYGDhMjYIo9XxxCnobUXmeSp5k3qbx2s2OnALjpGoCS8757NwU0lD
         /s5Q3yYHAsogM+qcofaI9rtZ3GG/hKUbc8DcMpEm3/ozspI7g4EJLnqqJN4YPwZ1/4Xk
         ciy6iwknHyBXkqO7x/JoX5qTFja8rY16dWgh5h+wAwU/0tALZ50qun1i9EQEQ5SuaCU1
         4CyPQ3dROXYIocQ+FPKzhG8kdL3Z7v5YsrQo1Slg3x30M/fDl8QA0KxO6wjf7CQLOiIj
         AtxQ==
X-Forwarded-Encrypted: i=1; AJvYcCVaucBeR8Hkn5EGHNZXT8FiZyyimYC/e4kynvbn+/md8olkW5PmK54HlTBCcDVwK94tQ3/Dxq+7WbE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyCIR2w8QZSGm0pvRB3VGTmf5qPrrIsnaMUIEdIitxTiXqLIH53
	HhXfKXtJ/xCPk/O1ucVOD7bH+bgpluq9nk5LunLrYQVUn99DV4CTjfVhH74M3Q==
X-Google-Smtp-Source: AGHT+IFojidQ4FhOjo4QXrIrUkLsOSwhqOgXjMNEKNxO+JEeBHS+43la7nf0xRRpTmmsdiDgvgRPUQ==
X-Received: by 2002:a05:6402:5ca:b0:5c5:bda7:c839 with SMTP id 4fb4d7f45d1cf-5c8a2a782bamr3531569a12.17.1727797276889;
        Tue, 01 Oct 2024 08:41:16 -0700 (PDT)
Message-ID: <61347488-6b4b-442d-9058-cafd65b0834d@suse.com>
Date: Tue, 1 Oct 2024 17:41:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/3] xen/riscv: implement virt_to_maddr()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
 <1d4270af6469af2f95ede34abd8e9f98f775c1f1.1727708665.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: <1d4270af6469af2f95ede34abd8e9f98f775c1f1.1727708665.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 17:08, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/include/asm/mm.h
> +++ b/xen/arch/riscv/include/asm/mm.h
> @@ -28,7 +28,20 @@ static inline void *maddr_to_virt(paddr_t ma)
>      return NULL;
>  }
>  
> -#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
> +static inline unsigned long virt_to_maddr(unsigned long va)
> +{
> +    ASSERT(va >= (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE));
> +    if ((va >= DIRECTMAP_VIRT_START) &&
> +        (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
> +        return directmapoff_to_maddr(va - DIRECTMAP_VIRT_START);

While the cover letter states a dependency on another series, I'm unable
to spot directmapoff_to_maddr() in the tree or in that other series.

> +    BUILD_BUG_ON(XEN_VIRT_SIZE != MB(2));
> +    ASSERT(((long)va >> (PAGETABLE_ORDER + PAGE_SHIFT)) ==
> +           ((long)XEN_VIRT_START >> (PAGETABLE_ORDER + PAGE_SHIFT)));

What's the point of the casts here? va is unsigned long and XEN_VIRT_START
is a literal number (which probably ought to have a UL suffix).

> +    return phys_offset + va;

Don't you need to subtract XEN_VIRT_START here?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:44:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:44:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808306.1220205 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svf3R-000162-So; Tue, 01 Oct 2024 15:44:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808306.1220205; Tue, 01 Oct 2024 15:44: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 1svf3R-00015v-QF; Tue, 01 Oct 2024 15:44:49 +0000
Received: by outflank-mailman (input) for mailman id 808306;
 Tue, 01 Oct 2024 15:44: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svf3Q-00015p-Lc
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:44:48 +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 1673cc4b-800c-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:44:47 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3e8a74so2554247a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:44:47 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c882c7d23asm6251050a12.32.2024.10.01.08.44.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:44:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1673cc4b-800c-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727797487; x=1728402287; 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=tnmCKXbU4lxxNYvMon/HLz6AQJ1irS12uZOKgrfmjwI=;
        b=OAI34R3jGO+rkVwVKn8Z8xFOcRvG5O+jR9zES1IAVvnP7kT9/ZQMJ5f24ljT7HkLLm
         0WDoLC0bt2gOf7axX87lvB3PUMDFaeAAFtCOvWZfGFMrvu4b1em9/+aIZZvnou5S21+N
         Ny8OCDlzp8/mrZuRHPl7bH0y0pB0HKptgTH8FV83gJjbenU9EsUH+12IZ0ww0jTxpvst
         5gnwqNq/NtZ+j2zdSBWlnLSXNpLDYDkBqz2iap4bNW2cN4+NShp6luhX0R9C7/lAGIz+
         YJJHxwKPgM78rHEye6+oyBBfwNDefB5sdZ7zt39a1+lOyTorbEWLaI/hLVFIOssDhbh4
         QP+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727797487; x=1728402287;
        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=tnmCKXbU4lxxNYvMon/HLz6AQJ1irS12uZOKgrfmjwI=;
        b=uOm0FwF4CXGVmGf+P2ZlD6h/ULpSsVVp5Ran28bRcPn6styavwCLwzTcIwNqC2LI+4
         tjwl5xdRMy0sjc4q+Cz/mWSmWPpZ27ROKcAjXYYbVS0/7tTOu3mVFnYzL4TkWla+o6dl
         y+BApMnNKbx1on+6T8mRzfczpF3daN7J1JaaeFVonK9bVK4OjYTxp6zcTlzb9wtyzqe9
         xg6syVJ70nlgDylH/BrWT40qcGjbrOwkgjJ5U8whAxP4bVaE/x6uQDO96FaXJ3UzaJL+
         KQnWPP/AeQHKKqP64M+eTc4X1TZQFDx/I2CbJWQzjKhZurMq9FyaDlpm82Hl1q9pvqzP
         ltTA==
X-Forwarded-Encrypted: i=1; AJvYcCVJTVpy4/EDB4ChUnTE0OVaHmtegG2A5QhbtcO7N8VQjsUZUXF/mVrHYIVUhMD6IAm8b19fYM5XKZY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyFNE1cb77cbb23o5DoiwczdlwRTcwECgNKRitx6jxvnTYXixFd
	8glAD+eToWvdp7LmZ0FPOPwSvoK771HPnHHRuJSdjf493c/Fa+hVPIpj0EuU7g==
X-Google-Smtp-Source: AGHT+IE67JLx/MlFiHeNIrB+OK6iNr0pI3M2NFd/ODRtulDhfRAmixvxEb0q+7GXFtpkTuaJK2dlWg==
X-Received: by 2002:a05:6402:1ec5:b0:5c8:aecf:8e93 with SMTP id 4fb4d7f45d1cf-5c8aecf9a9cmr1181738a12.0.1727797487184;
        Tue, 01 Oct 2024 08:44:47 -0700 (PDT)
Message-ID: <c5b75ca4-7fe2-4919-a9b0-0bf56947a247@suse.com>
Date: Tue, 1 Oct 2024 17:44:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/3] xen/riscv: switch LINK_TO_LOAD() to
 virt_to_maddr()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
 <9a462c58f3af0ff5e5d312777cd1552b2a5a930c.1727708665.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: <9a462c58f3af0ff5e5d312777cd1552b2a5a930c.1727708665.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 17:08, Oleksii Kurochko wrote:
> Except for switching LINK_TO_LOAD() to virt_to_maddr(),
> LINK_TO_LOAD() is dropped, as virt_to_maddr() covers all
> the cases where LINK_TO_LOAD() is used.

Why "Except for ..."? I'm afraid I can'rt make sense of this.

> @@ -225,7 +224,7 @@ void __init setup_fixmap_mappings(void)
>  
>      BUG_ON(pte_is_valid(*pte));
>  
> -    tmp = paddr_to_pte(LINK_TO_LOAD((unsigned long)&xen_fixmap), PTE_TABLE);
> +    tmp = paddr_to_pte(virt_to_maddr(&xen_fixmap), PTE_TABLE);

Just like you don't open-code a cast here, ...

> @@ -312,7 +311,7 @@ void __init remove_identity_mapping(void)
>      pte_t *pgtbl;
>      unsigned int index, xen_index;
>      unsigned long ident_start =
> -        LINK_TO_LOAD(turn_on_mmu) & XEN_PT_LEVEL_MAP_MASK(0);
> +        virt_to_maddr((unsigned long)turn_on_mmu) & XEN_PT_LEVEL_MAP_MASK(0);

... you shouldn't do so here. The virt_to_maddr() wrapper macro does so already.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:46:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:46:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808312.1220216 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svf51-0001gi-Am; Tue, 01 Oct 2024 15:46:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808312.1220216; Tue, 01 Oct 2024 15:46: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 1svf51-0001gb-7i; Tue, 01 Oct 2024 15:46:27 +0000
Received: by outflank-mailman (input) for mailman id 808312;
 Tue, 01 Oct 2024 15:46: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svf4z-0001gT-Hz
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:46:25 +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 4f97237c-800c-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:46:23 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c87c7d6ad4so5833167a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:46:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8831c9055sm6231060a12.31.2024.10.01.08.46.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:46:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f97237c-800c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727797583; x=1728402383; 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=pt4WxeG269rjnvpGpYIsW0dDJqXjk2pp6L+bUkiEgBs=;
        b=CZfM1IR4EcF2bB5/NRxXGkr94iE0zmlv+PXcWl+hlLnpmNxmI3xFk5NbarWEYP2g/a
         /qNu8UJ4zrKjUy6k/wVhXhHQBvb/MYc37ELXdJkq7GlzlMRR7nnQxUPyFA2FFQcyPlO+
         U8Niz9CFLgbzYKW5aYAKNLPgZu+iTCOECSgLGY+i3m+zykIwrdfTvZjmXr6EdwHHkIFq
         AJVk0VRDr5SQFhHaoAUWCJ7R0j+wSXvO116uWHIgcMDsD71il0dJ1im0XeMJXUiHqSgZ
         BlpvA4xxJ/OJYy20lfYUCzETv3rZ7Ew4zW4g4Own5l97XPzNRyVG4EWtWajFEqrd6QeN
         qTrA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727797583; x=1728402383;
        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=pt4WxeG269rjnvpGpYIsW0dDJqXjk2pp6L+bUkiEgBs=;
        b=P1V20PJR0/yUc3szypRq8z9c8TeazQpsAdyMyFxjY7Jc5MwO1AAUi7A4W4ZVKK1WJa
         4WhjD1crW54aDeoVaqIGkx8y3ARfxPEj63EuAQRvun3kJO1NrPjOaJt7DOsvDYks9DfP
         /PZ5thsX4a/oa2RXk9FB5//BCvvQSftCpG/vQVpWVQPtgelkLtyT0xuLEfmfgxV9rjtr
         4+gms8H0iVjMxqeuyr1ePwzcD05fNFEG7kxEGpSY9NHip6Ql71uYOTvK8NGGGwU/z8gM
         y6rh5mQQCWLAwRPl5ZpIpXx9/fom6W4FX8PCbn8tbP6tGWpEgSz6CEgQmoR1XVFCSaae
         tsXg==
X-Forwarded-Encrypted: i=1; AJvYcCVQ+ZLAKazR4IfZo1CREEr0YoXiJj9wKc/mneuXcGc5pPFPsRe6VCgAKFKu6jTDzxfDHVrIDbQnhK4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwXRDXl8QuQXtEGXulD9R6krXYf6KvZxKFO03q79aHM9oJ8P252
	qqEYJ1f1fBtgG+z0LCfuO6mU677qu0vEon8AvTxFNcqecrIwvTQNOVM+ho2NZw==
X-Google-Smtp-Source: AGHT+IF/qjxCsLRSFPJlDjrF8qxfmVNh1sz8Z6idB2Y4OgyvQrnv9O8ZlY52erpNvuYFecBTAkYxtg==
X-Received: by 2002:a05:6402:1947:b0:5bf:50:266b with SMTP id 4fb4d7f45d1cf-5c8824e7f04mr14748391a12.19.1727797583016;
        Tue, 01 Oct 2024 08:46:23 -0700 (PDT)
Message-ID: <e210faa2-ffb3-4572-afc6-62fd622fba68@suse.com>
Date: Tue, 1 Oct 2024 17:46:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/3] xen/riscv: implement virt_to_maddr()
From: Jan Beulich <jbeulich@suse.com>
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
 <1d4270af6469af2f95ede34abd8e9f98f775c1f1.1727708665.git.oleksii.kurochko@gmail.com>
 <61347488-6b4b-442d-9058-cafd65b0834d@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: <61347488-6b4b-442d-9058-cafd65b0834d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 17:41, Jan Beulich wrote:
> On 30.09.2024 17:08, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/include/asm/mm.h
>> +++ b/xen/arch/riscv/include/asm/mm.h
>> @@ -28,7 +28,20 @@ static inline void *maddr_to_virt(paddr_t ma)
>>      return NULL;
>>  }
>>  
>> -#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
>> +static inline unsigned long virt_to_maddr(unsigned long va)
>> +{
>> +    ASSERT(va >= (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE));
>> +    if ((va >= DIRECTMAP_VIRT_START) &&
>> +        (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
>> +        return directmapoff_to_maddr(va - DIRECTMAP_VIRT_START);
> 
> While the cover letter states a dependency on another series, I'm unable
> to spot directmapoff_to_maddr() in the tree or in that other series.
> 
>> +    BUILD_BUG_ON(XEN_VIRT_SIZE != MB(2));
>> +    ASSERT(((long)va >> (PAGETABLE_ORDER + PAGE_SHIFT)) ==
>> +           ((long)XEN_VIRT_START >> (PAGETABLE_ORDER + PAGE_SHIFT)));
> 
> What's the point of the casts here? va is unsigned long and XEN_VIRT_START
> is a literal number (which probably ought to have a UL suffix).
> 
>> +    return phys_offset + va;
> 
> Don't you need to subtract XEN_VIRT_START here?

Oh, that subtraction is part of the calculation of phys_offset. The variable's
name then doesn't really reflect its purpose, imo.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:49:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:49:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808320.1220227 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svf83-00030W-Qc; Tue, 01 Oct 2024 15:49:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808320.1220227; Tue, 01 Oct 2024 15:49: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 1svf83-00030P-Lv; Tue, 01 Oct 2024 15:49:35 +0000
Received: by outflank-mailman (input) for mailman id 808320;
 Tue, 01 Oct 2024 15:49: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svf82-0002yz-Dn
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:49:34 +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 c0346f60-800c-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:49:32 +0200 (CEST)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b3e1so3530279a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:49:32 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248abf5sm6356806a12.77.2024.10.01.08.49.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:49:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0346f60-800c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727797772; x=1728402572; 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=RFIZ8Z4CFYIEZ+qNDXiCK8ID3k/lwBX2+rAOICZEhGU=;
        b=DHuxBMurw7VNCRWJwS2HaOl0s4OiKPCTFRlWSIYQwksOJs7j0X5L02qfDrS6m4CNB3
         gTLOP5RnS+dH3MQZGYiCu4RCUGOYgaBABr1bFv4bWZel4c6oK7gdiWxrkqSj683rP/LA
         fsuxushutF3QnkFt5oB8356mCVD7IC6LuH2Zl6PrHzOHL2WkbGoYLJhA496VDshzLFWc
         UYuRjG/aovPLfe2OmVfU4lx0iREkqO70/gr1HE8+n8guApWS3fTjgdXgSktFCwK550Fo
         p5kn6z62bcPKWgwjXoQDb858lJ1fHWHgDZpz9vRNdkXiruPHA60JREzRUIpEDRUL550l
         OyEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727797772; x=1728402572;
        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=RFIZ8Z4CFYIEZ+qNDXiCK8ID3k/lwBX2+rAOICZEhGU=;
        b=Ir4jAHGIN2fViDdlijdU+XBGwb6WXKnU4e3BKzoMRM2m4cgVSGep87t608uVjY0h2f
         tQcSDuIz+F+nUA7SVt4iL3MJtGwIKm/mFZoWknKvZIWQUdg+kDoKwGJqI9jJsi5h/w1t
         JT+TFdbw9hqzDy/OF8pCzUdsXCU+vYtedVemcbNtmb6c+PHolFmcd/NRwhzQiIffnDIv
         EiY2qO5ZkuSMciSNTVOfc0ZVcaGZMQb4yhsdF8RvwnM0AR+rJBzCxQAu1JJfi/IglD+7
         DwZ6VdFUP4cfoyvVpWxiiZ+s4b3Fix3fGjCkbPewVO1DU5wajY59PlsqnRCS78i6x5Ac
         ONZQ==
X-Forwarded-Encrypted: i=1; AJvYcCVoE4QbeqO3S2J9hGmBujV9sE5iwVMTVDBoh3RIGPTGm6eJaumIq5eUCmnoPAt5BUtnrBvgiZObpVg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz+A/GREn5uujxtOwB76sC7yeqh6xIll7f6KbAJhKmyIyKkaEuF
	KRvqAKapC9P4tsD2KPW+c73iPhG/79souo2+JFIL9qKoaebekutseZMYkgPrEA==
X-Google-Smtp-Source: AGHT+IGpz/g1G8ffCXHjZgrPz9VLwu1/4htEdHpKEEmfU1acSzDYI6EUjgCM3DbkMfOSWyFVOFfAgg==
X-Received: by 2002:a50:85c3:0:b0:5c8:7696:79f1 with SMTP id 4fb4d7f45d1cf-5c8826084e5mr11379963a12.33.1727797772023;
        Tue, 01 Oct 2024 08:49:32 -0700 (PDT)
Message-ID: <178b61bc-d3e5-4c9d-a8c0-88363911bc8f@suse.com>
Date: Tue, 1 Oct 2024 17:49:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen/riscv: register Xen's load address as a boot
 module
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
 <2bd3589f322d30e93d81d091ca64439048c068fc.1727708665.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: <2bd3589f322d30e93d81d091ca64439048c068fc.1727708665.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 17:08, Oleksii Kurochko wrote:
> @@ -26,6 +27,8 @@ unsigned char __initdata cpu0_boot_stack[STACK_SIZE]
>  void __init noreturn start_xen(unsigned long bootcpu_id,
>                                 paddr_t dtb_addr)
>  {
> +    struct bootmodule *xen_bootmodule;

With just the uses below this can be pointer-to-const. Question of course
is whether you already know of further uses.

> @@ -44,6 +47,13 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
>                "Please check your bootloader.\n",
>                dtb_addr, BOOT_FDT_VIRT_SIZE);
>  
> +    /* Register Xen's load address as a boot module. */
> +    xen_bootmodule = add_boot_module(BOOTMOD_XEN,
> +                                     virt_to_maddr(_start),
> +                                     (paddr_t)(_end - _start), false);

There's no real need for the cast, is there? Plus if anything, it would be
more to size_t than to paddr_t.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:54:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:54:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808325.1220236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svfCs-0004eq-AU; Tue, 01 Oct 2024 15:54:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808325.1220236; Tue, 01 Oct 2024 15:54: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 1svfCs-0004ej-7M; Tue, 01 Oct 2024 15:54:34 +0000
Received: by outflank-mailman (input) for mailman id 808325;
 Tue, 01 Oct 2024 15:54: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svfCq-0004ed-Sf
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:54:32 +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 7297235f-800d-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 17:54:31 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a98f6f777f1so15596366b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:54:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2775c2dsm731582166b.38.2024.10.01.08.54.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:54:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7297235f-800d-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727798071; x=1728402871; 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=drE2WmsZrTEqp5q6o0pgSzRjvGJLyPArM1st1iYNJOo=;
        b=cvznw9xA8pDbmUxxBYaS+bEdYsqxCTYWkyQJo/EyJNR2HnoQt26KasOhrRBv14Xh7/
         99GhLq9WxnFxdtYKLDHCDvCrn3ElBmNPbJGgUnLy/sgUikaECPTjHTZ7dHQQMz2cvz79
         XB89QlkLdZbP+eHP5NpxfR2hIJTFGJobuxGb9wL8tSfJ5llo877Ji0SnXExM11Ga0C3k
         sBb3gUQexx9Of4MTUxRII4ER679YT7M3TNLsXokZ/8MQ9DHu3Opa9toDZQ3hyRfGEPpK
         uYFvehsMN9n5e+XZkwGXW0iC/vfmmy7lexmfI6LDpI0iB1CwLpxYhpHCFWlbB1nI7gBu
         wgyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727798071; x=1728402871;
        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=drE2WmsZrTEqp5q6o0pgSzRjvGJLyPArM1st1iYNJOo=;
        b=J5umTryjoNK+RZA5rE9Vem44mA+R/LyMf4E2vSc/KanfAMg8pVObjbG+AJFt2uzKuQ
         cJBrrsNu/xW0qO5xzfNhHWAEkpNylNIa5kPYSZef98yHrYwOZpDqYpbQfq4M0UgvAqgJ
         GgftZBAjSIelYGTUQZYkigTv3cB/J5d6x4kh+SnSs7pwSsugxSm+eIUqiAGmeZFjT9jc
         RBmxGLANpNBDy9gDtrjtifzFy/1dS27sgrI4m/qbmMnx3MbJyjR69l7goJuFW6QkmQ0J
         0AXteGG32BufxYXnIafJXNBhmIkMezsUC6aXdjcfQpcNDeZeM13XyK2x8U449RuTfwH2
         2mgw==
X-Forwarded-Encrypted: i=1; AJvYcCVMvyXYMcMCPYZoM4CgZgoKvGCM8JTDmMUcrgvuWlBc15nwnpc258lPneh6OmFaYev6I78Ld/b6Kqo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywrw85dAN56bz1KvRWf1j9fyPku81DHJsUb6ABoqAtslGHVN0E7
	3mYk/IwHrdZKEciGWPdEYWRbeldmMt/ba30AbrVbSf8oQ/DiNvPdxtBwakO4ZQ==
X-Google-Smtp-Source: AGHT+IE2w36jxuIUA0eucIryh8EK2sAAp0GA/DBo/07YFX4E4Bc30fHvhmySzkz0j4GOuiW2/261zw==
X-Received: by 2002:a17:907:745:b0:a91:1592:f5cf with SMTP id a640c23a62f3a-a98f8225973mr4553066b.15.1727798071314;
        Tue, 01 Oct 2024 08:54:31 -0700 (PDT)
Message-ID: <18cfcda5-d2b4-47d6-9f5e-a240e46661c1@suse.com>
Date: Tue, 1 Oct 2024 17:54:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/2] xen/riscv: initialize bootinfo from dtb
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727708956.git.oleksii.kurochko@gmail.com>
 <f04a3cc3e543298f63845728c599410258a336ca.1727708956.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: <f04a3cc3e543298f63845728c599410258a336ca.1727708956.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 17:13, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/setup.c
> +++ b/xen/arch/riscv/setup.c
> @@ -28,6 +28,7 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
>                                 paddr_t dtb_addr)
>  {
>      struct bootmodule *xen_bootmodule;
> +    size_t fdt_size;
>  
>      remove_identity_mapping();
>  
> @@ -54,6 +55,9 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
>  
>      BUG_ON(!xen_bootmodule);
>  
> +    fdt_size = boot_fdt_info(device_tree_flattened, dtb_addr);
> +    BUG_ON(!fdt_size);
> +
>      printk("All set up\n");
>  
>      machine_halt();

Looks plausible, and judging from Arm code there'll be an actual use of fdt_size
down the road. Or else I would have asked what use the local variable is. In
fact, again from looking at Arm code, I now question the need for the
xen_bootmodule local var - that has no further use in Arm, and hence that's
likely going to be the case for RISC-V, too.

However, may I ask that you limit the dependency trees in what you submit? This
series depends on another series, which in turn depends on yet something else,
all not yet committed. That's getting unwieldy, I'm afraid.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 15:55:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 15:55:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808328.1220246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svfDb-00058k-JD; Tue, 01 Oct 2024 15:55:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808328.1220246; Tue, 01 Oct 2024 15: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 1svfDb-00058d-Fg; Tue, 01 Oct 2024 15:55:19 +0000
Received: by outflank-mailman (input) for mailman id 808328;
 Tue, 01 Oct 2024 15:55: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svfDa-00058U-S5
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 15:55:18 +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 8d910834-800d-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 17:55:17 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5399041167cso4177007e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 08:55:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2978a71sm731911366b.161.2024.10.01.08.55.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 08:55:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d910834-800d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727798116; x=1728402916; 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=BjyQZ0fV2393b3M8XEjuSgwsSBhv9Smv8eLNwLejmIQ=;
        b=QxfyhN+4RkV6z/Wf9zmJe6yiGG6cI8MZy5n9yfAxKUW6QMcDcc2a63KJpnvQXAgiBK
         GWpavu5QoGXbbfUByaeHCRg6t5X/c+H7robDURUnb4zz4zISZyHM66pXPsfvbIezAA5N
         TuvOrlHYDHSNJHm/zRnwi6sX9P2fpRCU8pjn9InC92uGGFhyZyP7MEB09xIAArnmSeki
         6XtwGR3xhwrs8bcyBuAWxJJQhR4aDY4Ftvh5ST8B8mn8yT/8ioBz+kpHvhpKLwNc8nIN
         29+Ja+x1XnHUUOwuBCqOmD6sfqzRWlX/Gt6MLt+4NeHY5sBL05cw1b4+Ewhzk9kpiEuq
         UefQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727798116; x=1728402916;
        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=BjyQZ0fV2393b3M8XEjuSgwsSBhv9Smv8eLNwLejmIQ=;
        b=uSeIusiMW2zFA7AaNT0wkxLdVX1FbIGY24YfremxkW0LEULeooBaNbc8O08gqENSs6
         s/WShkj/WXKYZ8zqRadiRDg+pL67cb7FScontcGYgP6Z3QxBfeoY5LTIeLyR39gUrLso
         kpBL+wSE2KTwUijBJXJl3yHMOEIhzb/efH5sAF+o3P7JAbF57bLMeIvEwiuSRIdZhSPA
         UJYV5dNcBF4WOkCsB42QfljvNEmbfugQM5+41qSBBHQH3qkVdttr0z5CZUVAbRIhpfoM
         LQhe8L5T+T5CGw2KhtDqtZH5lcvlZYUpECajCretTGegzOBRgpwwLwVJsGIQuWOojcDD
         FEzw==
X-Forwarded-Encrypted: i=1; AJvYcCVbDDwyt1rsNV6ERiuRB8jJXPjrnm0KNqtVxOjCR0fEp8KJcYsaab0o2rUNxuHoM/6QlvcivLvp0Cc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzxJomHB5Yw8cj1UHU9JpIE/GC8b3lUjXfH12sDiY9S9wrhNKgk
	DLdc6shkg2+WHIoI2HFy+0MkeutPDJS4pO6C8C50P0++A8enlrPmWpKkZCc8EA==
X-Google-Smtp-Source: AGHT+IFwyjtHXnRyRg1DiGGSpL0zwzOvVyAOqMab7D4uSm/k+1NkKsjCPIZSu2O0llnfGSxVEPWaUA==
X-Received: by 2002:a05:6512:3996:b0:539:8f68:e036 with SMTP id 2adb3069b0e04-5398f68e084mr6819510e87.34.1727798116343;
        Tue, 01 Oct 2024 08:55:16 -0700 (PDT)
Message-ID: <68c8b84a-fe05-46fa-b084-ee4ea601b27b@suse.com>
Date: Tue, 1 Oct 2024 17:55:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/2] xen/riscv: parse and handle fdt command line
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727708956.git.oleksii.kurochko@gmail.com>
 <e914d15b82d2a28fcd1690dd68af9a61c4cb272e.1727708956.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: <e914d15b82d2a28fcd1690dd68af9a61c4cb272e.1727708956.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.09.2024 17:13, Oleksii Kurochko wrote:
> Receive Xen's command line passed by DTB using boot_fdt_cmdline()
> and passed it to cmdline_parse() for further procesinng and setup
> of Xen-specific parameters.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 01 16:03:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 16:03:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808336.1220256 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svfL0-0008Hw-AV; Tue, 01 Oct 2024 16:02:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808336.1220256; Tue, 01 Oct 2024 16: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 1svfL0-0008Hp-7L; Tue, 01 Oct 2024 16:02:58 +0000
Received: by outflank-mailman (input) for mailman id 808336;
 Tue, 01 Oct 2024 16:02: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=jjk+=Q5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svfKz-0008Hf-Lb
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 16:02:57 +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 9f123c90-800e-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 18:02:56 +0200 (CEST)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2fabd2c4ac0so40582171fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 09:02:55 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88245ea57sm6357326a12.55.2024.10.01.09.02.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 09:02:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9f123c90-800e-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727798575; x=1728403375; 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=lzPTkHfSbyTni4eb9B9/vAO9Elzqh50Bauo7x+cTXls=;
        b=D8QWSm4JVHmsRP703KEmsylapyrhL2nKIsx9gJ6yTI4BIfhzOU//YR/vOC8gHcr1Ik
         aNInfRp2/ANxzAGEA/XAcRhwoy3RTqpe/93sCpj1NGRMtrDK/oy1MiMuO6EgYMXwZMkc
         2awVhXpktXjsNMLRDg6DoE6plx/HmF9MaaXqdlddFkVf/0KTWpk2hjS+lo3KLMJPLAym
         uy9MhzV2grHt8QpyeDPbOxIBJogcXCQzVFp9ZDmv90L4x6eUtGbj5npaGoPCQQLrTQGd
         vJQrPBhyFQIvS+AthPEC2iIHnlAevdnQ45bU7tUR/SNS/gbLJ4lniDxTbM9lu5GNuIEE
         s4iQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727798575; x=1728403375;
        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=lzPTkHfSbyTni4eb9B9/vAO9Elzqh50Bauo7x+cTXls=;
        b=sVaQvHjx3uXIteIeq5vN/PcmaE+XYNG+9wOCZfdxOyPDptd2/pvL8ORXm/dexlfCqe
         dWC1b/lXMmy96iQCXG0/4i2XwG8pxJ24IUzyFJTuRKBVMitEIxwPE5H/4irtFxRx9LkL
         kwzl2jdDCQaxPcbH7Ezjoptoqb07MIwUq8eem7yrW74pSUxelTHFgbevmfyMZCPiZzrR
         yt991QxZNJmYNgbStPWcTaWE5jc55Y4oLcWJz+uOVR1TOgiuW7zHUReNuK93qaNGIRCG
         HcQsMUtIJxz8KCGxvxY099bYIkUPHLbBkko9DkP6WIiBR/9JYcc/HI5j77ZSHd9XGKs/
         v52A==
X-Forwarded-Encrypted: i=1; AJvYcCW7oZ7qBMCuilqfTq/MDHKig+mRSRdQ2iYrU16d13LKIRozKJJ6zPDSAUFpQmtey7w+S1zyrT1f5EE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw3edaBrNrWh2y9JTp3l88BIGlrSCFLdIXcR1CY2cPUXwk9daiK
	yRfQoRLIAf4BtVDOuBZZEC5Re+qD3Bkpo+g1DFipwylQwMIeI1nt41YeYLlxwg==
X-Google-Smtp-Source: AGHT+IEK6gITCp6ea0CUX0obcR/XzNLNEbEZRppBofyUvvm763aOsPd9evsMF0yOvioOf4QKGpkbGw==
X-Received: by 2002:a2e:be24:0:b0:2f6:4f17:aeaf with SMTP id 38308e7fff4ca-2fae10ba2e6mr1689891fa.45.1727798575204;
        Tue, 01 Oct 2024 09:02:55 -0700 (PDT)
Message-ID: <0d49ee74-9e19-4f77-9c5c-cbd86cac4b0d@suse.com>
Date: Tue, 1 Oct 2024 18:02:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 2/2] x86/boot: Improve MBI2 structure check
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <20241001102239.2609631-3-frediano.ziglio@cloud.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: <20241001102239.2609631-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 12:22, Frediano Ziglio wrote:
> --- a/xen/arch/x86/efi/mbi2.c
> +++ b/xen/arch/x86/efi/mbi2.c
> @@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
>      EFI_HANDLE ImageHandle = NULL;
>      EFI_SYSTEM_TABLE *SystemTable = NULL;
>      const char *cmdline = NULL;
> +    const void *const mbi_raw = (const void *)mbi;
>      bool have_bs = false;
>  
>      if ( magic != MULTIBOOT2_BOOTLOADER_MAGIC )
> @@ -21,7 +22,9 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
>      /* Skip Multiboot2 information fixed part. */
>      tag = _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN));
>  
> -    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
> +    for ( ; (const void *)(tag + 1) - mbi_raw <= mbi->total_size &&
> +            tag->size >= sizeof(*tag) &&
> +            (const void *)tag + tag->size - mbi_raw <= mbi->total_size &&
>              tag->type != MULTIBOOT2_TAG_TYPE_END;
>            tag = _p(ROUNDUP((unsigned long)tag + tag->size,
>                     MULTIBOOT2_TAG_ALIGN)) )

Hmm, looks like what I said on the earlier version still wasn't unambiguous
enough; I'm sorry. There is still potential for intermediate overflows in
the calculations. _If_ we care about avoiding overflows, we need to avoid
all of that. Even more so that Misra may not like this sort of pointer
calculations. You know tag >= mbi_raw, so tag - mbi_raw is always valid to
calculate. tag->size can further be checked to be less than mbi->total_size,
at which point mbi->total_size - tag->size can also be calculated without
risking {over,under}flow. (Similar then for the earlier (tag + 1) check.)

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 16:21:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 16:21:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808347.1220285 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svfcP-0004x3-6I; Tue, 01 Oct 2024 16:20:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808347.1220285; Tue, 01 Oct 2024 16: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 1svfcP-0004ww-34; Tue, 01 Oct 2024 16:20:57 +0000
Received: by outflank-mailman (input) for mailman id 808347;
 Tue, 01 Oct 2024 16: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=/tO+=Q5=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1svfcO-0004Y5-97
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 16:20:56 +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 2192d506-8011-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 18:20:53 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-5398e7dda5fso2963492e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 09:20:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2192d506-8011-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727799653; x=1728404453; 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=YIiU4zAZeAcgT2puQqCLsgQepdmVpsQ39Ss8uXbdIYA=;
        b=UjpLPusXXXwDzTuVGP0A3Cx4XyyVamtO+UTUmET/WyBXUYqDJbukp2ymkVNex6XZi/
         Dagq8wT79I262cx1I+GYV2dYCbl9GBN0b+FYyeeyztQaOR41t6la1qBMzdccB9vgUTdd
         ZQfc7HQR3qFLooWN0m2xGhEe9TmDRHdUH5C/w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727799653; x=1728404453;
        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=YIiU4zAZeAcgT2puQqCLsgQepdmVpsQ39Ss8uXbdIYA=;
        b=NVZiazFa7gctmioFolF3QhC5y9XjSKeOjE6Dbp5XZKVtoUtREKfUea2rp01dHuuwu4
         SfnpUe1VWK4tM8WkQipLtNLkqwCyVCJRafhqu6VLFnTByX47QOpnWzJFrqgwOhr4kKis
         sI/oDIgx0AGP/8UJpSD91hKVUlFz8TMIEiDE8mCWndgQZIMabmM8neSg78GEllA5QIV+
         XnKG6akj7c6+GerEJhQ13uFmMcPoXClkmOzBosJbt8U6Jjrl0TuKzeEQxHPyJdNvHHdS
         fLLC+GmmyzRHEFYHMdFfUzOgVU8xKrONh09WXZH1oV4P3owKrrv9gA1+MvixWZU6cs2g
         +G4g==
X-Gm-Message-State: AOJu0Yy8t+jjefC6PobR2SQuqy48/6axxkIkYhI8qHXgjWAc7rBH9aRk
	g662+C4riMdvx8yAGZXq4IpluFAMaad8zlMK3n4p2ZnFK0H/Y6unYiD7wzLeF48/UbeuwCO3Nby
	Bd4isjKIkLAU26pcT+gC/lZ2fdr8uqkQ++b9V/ryQ1SHXDoln
X-Google-Smtp-Source: AGHT+IHYWBgmlmS1Rx9bVIs+Fpd9SeJV+HE5jH6/z1jN1uZXis9r17SAoRBq+FINmZdXWZwJ0lr+eHBCp3YrDqrNk1E=
X-Received: by 2002:a05:6512:401e:b0:52c:dfa0:dca0 with SMTP id
 2adb3069b0e04-5389fc634c5mr8388716e87.43.1727799652783; Tue, 01 Oct 2024
 09:20:52 -0700 (PDT)
MIME-Version: 1.0
References: <CAO-mL=xm_C_0XNy49hQjtrOqDs_di4LT4fK-WTbhVXtnddQ_bw@mail.gmail.com>
In-Reply-To: <CAO-mL=xm_C_0XNy49hQjtrOqDs_di4LT4fK-WTbhVXtnddQ_bw@mail.gmail.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 1 Oct 2024 17:20:16 +0100
Message-ID: <CAO-mL=xqc153b4w_rmjhZWbGpgCeWV7qUU+mV79Z7Q36ZzBW0g@mail.gmail.com>
Subject: Re: SAVE THE DATE - Next Xen Project Meetup (Cambridge)
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org
Cc: Xen Project Advisory Board <advisory-board@lists.xenproject.org>, 
	"committers @ xenproject . org" <committers@xenproject.org>
Content-Type: multipart/alternative; boundary="0000000000008c489506236cb42c"

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

Hi all,

There seems to be an issue with the previous link.

Please register using this new link* HERE
<https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8AP+Haft0+RwozJMKojY5lVs=
7waL-xDY/>*

Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>


On Tue, Oct 1, 2024 at 2:26=E2=80=AFPM Kelly Choi <kelly.choi@cloud.com> wr=
ote:

> Hi all,
>
> I'm pleased to announce the next Xen Project meetup in Cambridge!
>
>
> *Please save the date: Thursday 24th October 2024*
>
> *Location: XenServer office (Citrix), 101 Cambridge Science Park Rd,
> Milton, Cambridge CB4 0FY*
> *Time: 18:00 - 20:00 *
>
> What to expect?
> A developer social with food and drinks included!
> Informative sessions from speakers within the community (more details to
> follow).
> This is free to attend, but you will need to register *HERE
> <https://docs.google.com/forms/d/e/1FAIpQLScQS15qh_IAUhmbTy2gNmfxNzaVuI5Q=
Dw3G6oBa0rmrVt5-2w/viewform?usp=3Dsf_link>. *
>
> We are looking for a sponsor, so if your company wishes to support us
> please get in touch with me.
>
> Kelly Choi
> Community Manager
> Xen Project <https://xenproject.org/>
>

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

<div dir=3D"ltr">Hi all,<div><br></div><div>There seems to be an issue with=
 the previous link.</div><div><br></div><div>Please register using this new=
 link<b> <a href=3D"https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8AP+H=
aft0+RwozJMKojY5lVs7waL-xDY/">HERE</a></b><br clear=3D"all"><div><div dir=
=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div =
dir=3D"ltr"><div><br></div><div>Kelly Choi<br></div><div><div style=3D"colo=
r:rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(136,136,=
136)"><a href=3D"https://xenproject.org/" target=3D"_blank">Xen Project</a>=
<br></div></div></div></div></div><br></div></div><br><div class=3D"gmail_q=
uote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Oct 1, 2024 at 2:26=E2=
=80=AFPM Kelly Choi &lt;<a href=3D"mailto:kelly.choi@cloud.com">kelly.choi@=
cloud.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">Hi all,<div><br></div><div>I&#39;m pleased to a=
nnounce the next Xen Project meetup in Cambridge!=C2=A0</div><div><br></div=
><div><b>Please save the date: <br>Thursday 24th October 2024</b></div><div=
><b>Location: <br>XenServer office (Citrix), 101 Cambridge Science Park Rd,=
 Milton, Cambridge CB4 0FY</b></div><div><b>Time: 18:00 - 20:00=C2=A0</b></=
div><div><b><br></b></div><div>What to expect?</div><div>A developer social=
 with food and drinks included!</div><div>Informative sessions from speaker=
s within the community (more details to follow).</div><div>This is free to =
attend,=C2=A0but <font color=3D"#ff0000">you will need to register=C2=A0<b>=
<a href=3D"https://docs.google.com/forms/d/e/1FAIpQLScQS15qh_IAUhmbTy2gNmfx=
NzaVuI5QDw3G6oBa0rmrVt5-2w/viewform?usp=3Dsf_link" target=3D"_blank">HERE</=
a>.=C2=A0</b></font></div><div><br></div><div>We are looking for a sponsor,=
 so if your company wishes to support us please get in touch with me.</div>=
<div><br></div><div><div><div dir=3D"ltr" class=3D"gmail_signature"><div di=
r=3D"ltr"><div>Kelly Choi<br></div><div><div style=3D"color:rgb(136,136,136=
)">Community Manager</div><div style=3D"color:rgb(136,136,136)"><a href=3D"=
https://xenproject.org/" target=3D"_blank">Xen Project</a><br></div></div><=
/div></div></div></div></div>
</blockquote></div>

--0000000000008c489506236cb42c--


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 16:51:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 16:51:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808398.1220295 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svg5z-00038p-GZ; Tue, 01 Oct 2024 16:51:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808398.1220295; Tue, 01 Oct 2024 16:51: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 1svg5z-00038i-Df; Tue, 01 Oct 2024 16:51:31 +0000
Received: by outflank-mailman (input) for mailman id 808398;
 Tue, 01 Oct 2024 16:51: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svg5y-00038c-R1
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 16:51:30 +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 67a5cf64-8015-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 18:51:29 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a8d4979b843so831387966b.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 09:51:29 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27773c0sm747303366b.1.2024.10.01.09.51.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 09:51:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 67a5cf64-8015-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727801489; x=1728406289; 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=xv3rrZiNcm+n2nqp2GvJrpbr4TIBAARtZcc3Wfzj5gs=;
        b=qDBOBDHAyY45BOS7mVUwbQvcLvvmn8XkKgPrPm4tCqbtUh0LIprwp+DdfgujzU8Z/a
         ksoPRPAjfqZbh381O0t+FenGMvmNV2cw/jx9bVy/jkD+A6vWIoqgQ7cQmR/2+P6ZCfgd
         1ptgFijmPlen8bV4MbR1j12mPqX4KNlk3CuRs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727801489; x=1728406289;
        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=xv3rrZiNcm+n2nqp2GvJrpbr4TIBAARtZcc3Wfzj5gs=;
        b=v5Z1sggLpmBn/tlDfMcIzg7a4EqzSKwqr5QdvrrKJpZlUEkUwdL/S0oOO3gn4UOrEa
         YI/wLzh1vJDSIfdE0cVj9vLLOy1NneIZhfJwqx5yo+vhU2bmR9qAIjZy8pFsvf73ibMu
         rr/YbuWvJJzS1hDm9H2XKKGTUsbT7yiCxEA8XmGUbLH4bxVHU+VXzCu41Ac72e9uAYhb
         heajeBKBu9affirJr46vKxjllFond6x3BpVrEUhFhV4RPRszW/6zu8n0eBXGfs3/RIUK
         d16poOFWf6cq0gMBq29MXyNgmrwzVk7wbFkkm2+bmhmQJLTxwfPYeioHLFAeE0v906wx
         +Ziw==
X-Forwarded-Encrypted: i=1; AJvYcCX83NnBVTmJrG7c+EFhxEqXfqpU5gee/GLsSKFyy5g6ky/j7cRJiCk3jrsPsGrLaLa6/y1K8hMfLuQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyM5t9ZTMweDB5fGtEh77jrkV5bHUso5ai/prmLwmPs4ixIdbpE
	QbTxN1iVHjvE8SewqmAibTyobOfOZNs4HhIuiP9CRx0mAnWb70duc1Jy+gq/oRlO6883kJaoRmq
	E3xI=
X-Google-Smtp-Source: AGHT+IEP98NygWggo87c3QYABHFfJ90JDiaCssRZb462dr0n4nIJFhdZIOdt02gr0N/Plwzek3mcTg==
X-Received: by 2002:a17:906:6a11:b0:a86:b38d:d703 with SMTP id a640c23a62f3a-a98f836ee33mr19665366b.50.1727801488857;
        Tue, 01 Oct 2024 09:51:28 -0700 (PDT)
Message-ID: <13168581-c5b1-4c85-a7bf-a865914ad9e4@citrix.com>
Date: Tue, 1 Oct 2024 17:51:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 03/11] x86/ACPI: annotate assembly function/data with
 type and size
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
 <4f828e91-aa90-4b44-b778-234812e4f8e1@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <4f828e91-aa90-4b44-b778-234812e4f8e1@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01/10/2024 4:14 pm, Jan Beulich wrote:
> Use the generic framework from xen/linkage.h.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> although...

> ---
> v7: Make do_suspend_lowlevel() a single function.
> v6: New.
>
> --- a/xen/arch/x86/acpi/wakeup_prot.S
> +++ b/xen/arch/x86/acpi/wakeup_prot.S
> @@ -7,7 +7,7 @@
>          .text
>          .code64
>  
> -ENTRY(do_suspend_lowlevel)
> +FUNC(do_suspend_lowlevel)
>          push    %rbp
>          push    %rbx
>          push    %r12
> @@ -43,7 +43,7 @@ ENTRY(do_suspend_lowlevel)
>           *
>           * Everything else, including the stack, needs restoring.
>           */
> -ENTRY(s3_resume)
> +LABEL(s3_resume)
>          lgdt    boot_gdtr(%rip)
>  
>          mov     saved_cr0(%rip), %rax
> @@ -132,6 +132,7 @@ ENTRY(s3_resume)
>          pop     %rbx
>          pop     %rbp
>          ret
> +END(do_suspend_lowlevel)
>  
>  .data
>          .align 16
> @@ -142,5 +143,4 @@ saved_cr0:      .quad   0
>  saved_ssp:      .quad   0
>  #endif

... we do need something for these 3 variables, or they want to move
into a C file.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 17:03:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 17:03:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808405.1220305 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svgHk-0005Z6-Fo; Tue, 01 Oct 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 808405.1220305; Tue, 01 Oct 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 1svgHk-0005Yz-Bs; Tue, 01 Oct 2024 17:03:40 +0000
Received: by outflank-mailman (input) for mailman id 808405;
 Tue, 01 Oct 2024 17:03: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svgHi-0005Yt-Tb
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 17:03:38 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 192b77c5-8017-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 19:03:36 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a8d43657255so85673666b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 10:03:36 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27c5a7dsm740666266b.62.2024.10.01.10.03.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 10:03:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 192b77c5-8017-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727802216; x=1728407016; 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=dzIIEISoyXmQZVmPjygZKbsGQgP803idlo36mQNq+IY=;
        b=OJIYYgn/H+lTfEsyBBuv+msrJFndbvGR2j5VI/b+3kRI7me57pDu399doIjbumVL6S
         7meEXQ9tkCOr9S3LTrKlq6cXkHYExresKgiFBqI6UwKWAutMGU1qf+NnlN6mbji7gNFF
         S2wEptsypAAMywn9VTFQHBzMQjKtTSNa9qOqM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727802216; x=1728407016;
        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=dzIIEISoyXmQZVmPjygZKbsGQgP803idlo36mQNq+IY=;
        b=XNSnDNJErrw5+scAok0+QFR94Wczd5F55s6oQLZ+A4Se3fZGsxfuH0lAPjxacNRrEF
         FlQ2B2ppJKeoJALy5U6qCM9iAptGjAdnMLLY1PWqB6fuCLaHYq1wJK4svabX8oVirG/R
         /7WUdmvsG5Aye9Ut8yrje9sLXgBLOVdmkiXGjdavFqwUzGvVzFBACjmUAFMpK6j/KqMu
         tTatJiTnvWibAIw/zRaSZVf7AhQGvFiqHMHZ/P1kRB5lSfhfh6e/kGRj/hvKju5sE4Hl
         kjfvujW8xO8k3U9nSJsghDjfRZqkbWtlk5tYZSHcfKODqZsNY5liX+OOYulCDJ7LJn9P
         8X1g==
X-Forwarded-Encrypted: i=1; AJvYcCVuaE6QIHbuKd7hjCXG4oJV7gVQA/m5Zp3j7HMs+rHPC40eRxsM1CqiFPBwEGb/GlBMzPYGbUbqBQ0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy6w3psgP2d0llwM/978EQX05cFyolf0haEApOcaWO8QwgMuByj
	uyuZmjuRUfQax3GHniW4Z2ZC0o6AyQYq+4EvwA/D1s+Oj5+uZnKKJb1uf5jl/c8=
X-Google-Smtp-Source: AGHT+IFebA+A+JVWAjcbzeynU005pO1VGiEVPBEj30eYMd4VmDtt3IHmbvwYfC/0zfDqX/P/bvmpTw==
X-Received: by 2002:a17:907:1c10:b0:a8a:86f8:4eed with SMTP id a640c23a62f3a-a98f82008a6mr29846566b.10.1727802216190;
        Tue, 01 Oct 2024 10:03:36 -0700 (PDT)
Message-ID: <90a07e28-395a-4cbb-826c-8b12ddfdafcf@citrix.com>
Date: Tue, 1 Oct 2024 18:03:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 02/11] VMX: convert entry point annotations
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
 <ce312e31-992c-4e8c-81db-eb291c457680@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ce312e31-992c-4e8c-81db-eb291c457680@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01/10/2024 4:13 pm, Jan Beulich wrote:
> Use the generic framework from xen/linkage.h.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 17:05:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 17:05:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808408.1220315 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svgJL-00065I-PJ; Tue, 01 Oct 2024 17:05:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808408.1220315; Tue, 01 Oct 2024 17: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 1svgJL-00065B-Kt; Tue, 01 Oct 2024 17:05:19 +0000
Received: by outflank-mailman (input) for mailman id 808408;
 Tue, 01 Oct 2024 17:05: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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svgJK-000655-UU
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 17:05:18 +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 5502caad-8017-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 19:05:17 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a8a7cdfdd80so959410266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 10:05:17 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c29481edsm736184266b.131.2024.10.01.10.05.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 10:05:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5502caad-8017-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727802317; x=1728407117; 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=P1El+GVsBPPI0Ox867VKBe7hQZLPcYjvL6kbBVOQ3BI=;
        b=oatFLQ192kA9Hh+sTOnlnSS8xPw/AwrJPXBDvyHe5tDWHYuC0s6oU12otkdfW9783u
         xeX6aLGBKG5Hc7N2pL4b2Mg60SFR4FQoNFPG0F+mtiu7AY7JK4Ah/nrc7aTu4BZ/aS+V
         nn8aIzqfLICEYayzooNAugk7T9+CKRjA7Gbzg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727802317; x=1728407117;
        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=P1El+GVsBPPI0Ox867VKBe7hQZLPcYjvL6kbBVOQ3BI=;
        b=viSfMvqrc81GzRoDwhwsgr/121Exye1z0gl3dx2Xn6hZesnw76rwSYGKIbGTxiTkZx
         cI1q7CGfzGmtwRlYGJ6plMA6DKR7YWNqJGKPtrL/7NzRuIUy11lCOw4JFoybpMtHv6t2
         1/EKL6ixupUf88e/CXfjWDPFjhHjAPVPaEReT5oIyvRbgMTqoNqBt8jEZkOpAhwkQVuc
         vQH7FlQGDp4INtBYK47ijTmuhxgpkIVwFYaAUQaTyWgEL4f0PAzVwsnjPKNO0HMn2iAQ
         yGSrwuDJNtHCPxUbZfphSLB46RbMPZh5iPWZiRnoDthYblh+ZkpbPrPonboE5D+flYpJ
         ebtw==
X-Forwarded-Encrypted: i=1; AJvYcCWq98sF0++G7jp+CscoPl3IWbBuyqNNCIN3WVmRiCmYuUTh6PqKiOxWDjyjOnjV0dCNhCNm+VuSjoU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxSP4bgqgEplbbj77QBog46OL/CwiPKncfjNLscIOnRh1S5ER+l
	a6sxWqkBL20gTk+Ssxh9FN6d4Lr8kffaAiPrWeShBSLDF3lE1nNalkYPjYZ7Uak=
X-Google-Smtp-Source: AGHT+IFR6WSTlZy+HGmZfnE5sFAspfmCKKSIKjv3EO/H0S4zyQZdv8hl2gA3FmnARiCuia5HWXGWxw==
X-Received: by 2002:a17:907:944c:b0:a8a:9054:8394 with SMTP id a640c23a62f3a-a98f80141abmr34438866b.0.1727802316614;
        Tue, 01 Oct 2024 10:05:16 -0700 (PDT)
Message-ID: <e70c9a32-61df-45e4-89e6-22d2df8379da@citrix.com>
Date: Tue, 1 Oct 2024 18:05:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 05/11] x86: convert dom_crash_sync_extable() annotation
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
 <165b8dcb-0fa9-42f3-a7cf-16136ed78921@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <165b8dcb-0fa9-42f3-a7cf-16136ed78921@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01/10/2024 4:15 pm, Jan Beulich wrote:
> ... to that from the generic framework in xen/linkage.h.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 17:19:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 17:19:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808420.1220336 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svgX4-0000d2-3Q; Tue, 01 Oct 2024 17:19:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808420.1220336; Tue, 01 Oct 2024 17:19: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 1svgX3-0000cv-VZ; Tue, 01 Oct 2024 17:19:29 +0000
Received: by outflank-mailman (input) for mailman id 808420;
 Tue, 01 Oct 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=+oTF=Q5=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svgX2-0000cp-4w
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 17:19:28 +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 4efb9a8b-8019-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 19:19:26 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a8d446adf6eso89432366b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 10:19:26 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297b597sm733283366b.182.2024.10.01.10.19.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 10:19:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4efb9a8b-8019-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727803165; x=1728407965; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=L5DcI9RV2wRfM07CxfMqSPKkLg4r1I2zlzdVnkRDdTQ=;
        b=FHnBxSbdZZlDGsixc6boQ3BcxxCW4bRNq3/99BmGsNg6RM1imylOCJRxOPR2ih6whB
         zR5DYQU7SVgzmsnKGK2lXShahuA18NWxYBxo4mS5nKsOo7SpFhWCSHrM7WuFdc5wxc43
         Vhad+ku1eeCIHDTdj+HF5ctb3j3fSVcNVPfIU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727803165; x=1728407965;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=L5DcI9RV2wRfM07CxfMqSPKkLg4r1I2zlzdVnkRDdTQ=;
        b=E28WF6VfbLwCfGwVm8PEkdqNyo20Vw9ref4hBPoikcqSl29tqbRpuY2RWJCZ8qe1jE
         05wy2XahcGTdnDu9KT9M2GYv5tB90T95VJE/Gpmvcfa+jN/sdUrsivNp5OgSEdl3YwI3
         D6v8ig/Rb3nUR4Xw4K234W8ORl4VIFbPTcFAjmA6bdz84PLpHcYaFTC9tnw1LohrZosA
         u2EE5Z/UG0gad4MpSoNLf1CutLcX85YuyCcEdOjxo4hPZdg/Shp5ADv03etxm+xjkkRH
         Zkdbbe7QcWUIXuP3VpbJfpg0+3fzEmIoV07JeepXYZkQ6OpQVb1LN5t7r+67I5O4jr0s
         zbxw==
X-Forwarded-Encrypted: i=1; AJvYcCUP9YVtJJFREUmixs02qOS07CMekPkm5Ulq1LFrdb9lMQE9RQgL4xq9PAJbjFYi8Ha3R+GkA9I3Gmg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyrN+CGWv2X0Z7k1d5ouPW4UlLYvAzj/gXzSE6/KRUs+qUNm0ax
	vO1oO/QrohM9lgHfPqlawdE5S8LEh+POdYLC/mXEYjxAU3xsw/YbhJA/++nIa3w=
X-Google-Smtp-Source: AGHT+IEZJzWM9FClFDMucsX2wpxGAQ3bz+axBA1bhEL2FiIKYSjdDbTFZKIDa+jW3l4rB4gyOURFNQ==
X-Received: by 2002:a17:907:3f1d:b0:a88:b90a:ff30 with SMTP id a640c23a62f3a-a98f83705ecmr26115666b.50.1727803165485;
        Tue, 01 Oct 2024 10:19:25 -0700 (PDT)
Message-ID: <c21a8966-2231-4576-9cfe-5f37f6311141@citrix.com>
Date: Tue, 1 Oct 2024 18:19:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 04/11] x86/kexec: convert entry point annotations
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
 <6b66c48e-241e-4a8f-9221-4693e92f50ba@suse.com>
Content-Language: en-GB
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: <6b66c48e-241e-4a8f-9221-4693e92f50ba@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01/10/2024 4:15 pm, Jan Beulich wrote:
> Use the generic framework from xen/linkage.h.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 17:47:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 17:47:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808456.1220363 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svgxx-0006Nw-Fj; Tue, 01 Oct 2024 17:47:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808456.1220363; Tue, 01 Oct 2024 17:47: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 1svgxx-0006Np-Cj; Tue, 01 Oct 2024 17:47:17 +0000
Received: by outflank-mailman (input) for mailman id 808456;
 Tue, 01 Oct 2024 17:47: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=/tO+=Q5=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1svgxv-0006Nd-OP
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 17:47:15 +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 3160f776-801d-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 19:47:14 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c87853df28so6513249a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 10:47:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3160f776-801d-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727804833; x=1728409633; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=Jl2Gb6C5bvKqPMtpXy61q0ZvttUp6tH0xc6wlUxox7U=;
        b=VrAx3IEn3wlE+sQbOHJe62C932bSokZ0joU+Sv1/Ob5J4Wc5zxbDTfiLoTTgqaxQMH
         dStpw8NrSz+muqbSIaUUP6MFczf+ppkfn4/FvjpAg0Ud0eUiUh5X5ohc95dAbn0uTHFL
         lcTQ6k62lHkhfsl5OIJ+DfYwI16a6AGkN4rfk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727804833; x=1728409633;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Jl2Gb6C5bvKqPMtpXy61q0ZvttUp6tH0xc6wlUxox7U=;
        b=NbXVaN9C1cO4Cudy2JEI8g/n1MRGR+WgibMG/RviZLr46U+lAAI5+MCAErM5WM5dyu
         GA7jGD30ELxn1TqDOZgA2rFKW9TCBxPxoajfTEsbrGF3SWD4XmoG5Tz9WC4VVu+KCZtT
         8/QAlmU2Qgml00KXvC8uiDQVuL2IF94MGraPFx7bemG2Gv3qkr+OWiuW4T5oRlAavz6h
         YCrszoolxXUZp3E3gZ4htSrBBrp4UwP71hw4SolUE0d5t6c3Q3dJYSb4SL91bxs3z8fp
         6DztnG8LLckAUln3LTclq+POGq4Jht1lTchqCNgDO6I7QHKQkY+m3iRmPH2m+BuIXISD
         QOjA==
X-Gm-Message-State: AOJu0YyKIitV5s2BIbzlyH4S0PLrTLSAyu4673VdV0WgMpgDeywvBLsT
	5dEcpZ8+N3Y/ALTI3ETPK5Uhcf33YU/TIyrG9ZWF408xQEYynsTdBLFq0P7b1hEKuHS1gHkdS7O
	G9DynoqylLoOUTa87yuYVQjV0lrMn9e5RmNodLlZ6oZclGMg1iaU+euc8
X-Google-Smtp-Source: AGHT+IHYK9dQYCFV/GS6W46iA8H6bUb8Sa7vTLNlTKeo0dD2OIXKsi9A4/M+kJ+BZR/dPsvpqh9UauwwWje9QcF5hUM=
X-Received: by 2002:a05:6402:51cc:b0:5c8:957a:b1e2 with SMTP id
 4fb4d7f45d1cf-5c8b1728940mr212804a12.0.1727804833173; Tue, 01 Oct 2024
 10:47:13 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 1 Oct 2024 18:46:37 +0100
Message-ID: <CAO-mL=xm6RhRpQ2rYskAr3575-rm98FqE98pyYn0zknGvn3uMA@mail.gmail.com>
Subject: [ANNOUNCE] Call for agenda items - Community Call 3rd October 2024
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000052ccb106236de980"

--00000000000052ccb106236de980
Content-Type: text/plain; charset="UTF-8"

Hi all,

Please add your proposed agenda items below:

https://cryptpad.fr/pad/#/2/pad/edit/d2n-WLcNd-u1HvPd3g5Mpu7-/

*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 3rd October 2024*

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


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








** If you want to be CC'ed please add or remove yourself from
thesign-up-sheet
at https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/
<https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/>== Dial-in
Information ==## Meeting time16:00 - 17:00 British timeFurther
International meeting times:*
https://www.timeanddate.com/worldclock/meetingdetails.html?year=2024&month=10&day=3=4&hour=15&min=0&sec=0&p1=1234&p2=37&p3=224&p4=179

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

Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>

--00000000000052ccb106236de980
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:=C2=A0</p><p><a href=3D"https://cryptpad.fr/pad/#/2/pad/edit/d2n-WLcNd=
-u1HvPd3g5Mpu7-/">https://cryptpad.fr/pad/#/2/pad/edit/d2n-WLcNd-u1HvPd3g5M=
pu7-/</a></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: Thursday 3rd October 2024</b></p=
><p><b>TIME: 1500 UTC (4 pm UK time)</b></p><i>Note the following administr=
ative conventions for the=C2=A0<span class=3D"gmail-il">call</span>:</i></d=
iv><div><div><i>* To allow time to switch between meetings, we plan on star=
ting the<br>agenda at 15:05 UTC sharp.=C2=A0 Aim to join by 15:03 UTC if po=
ssible to allocate<br>time to sort out technical difficulties.</i></div><di=
v><i><br>* If you want to be CC&#39;ed please add or remove yourself from t=
he<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://cr=
yptpad.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></i><a href=3D"https://www.timeanddate.com/worldclock/meetingdetails.ht=
ml?year=3D2024&amp;month=3D10&amp;day=3D3=3D4&amp;hour=3D15&amp;min=3D0&amp=
;sec=3D0&amp;p1=3D1234&amp;p2=3D37&amp;p3=3D224&amp;p4=3D179" target=3D"_bl=
ank">https://www.timeanddate.com/worldclock/meetingdetails.html?year=3D2024=
&amp;month=3D10&amp;day=3D3=3D4&amp;hour=3D15&amp;min=3D0&amp;sec=3D0&amp;p=
1=3D1234&amp;p2=3D37&amp;p3=3D224&amp;p4=3D179</a><br><br>##=C2=A0<span cla=
ss=3D"gmail-il">Dial</span>=C2=A0in details<br><a href=3D"https://meet.jit.=
si/static/dialInInfo.html?room=3DXenProjectCommunityCall" rel=3D"noreferrer=
" target=3D"_blank">https://meet.jit.si/static/dialInInfo.html?room=3DXenPr=
ojectCommunityCal</a></div></div><div><div dir=3D"ltr" class=3D"gmail_signa=
ture"><div dir=3D"ltr"><div><br></div></div></div></div><div><div dir=3D"lt=
r" class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=3D=
"ltr"><div>Kelly Choi<br></div><div><div style=3D"color:rgb(136,136,136)">C=
ommunity Manager</div><div style=3D"color:rgb(136,136,136)"><a href=3D"http=
s://xenproject.org/" target=3D"_blank">Xen Project</a><br></div></div></div=
></div></div></div>

--00000000000052ccb106236de980--


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 19:31:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 19:31:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808492.1220389 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svia2-0007Yh-Lf; Tue, 01 Oct 2024 19:30:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808492.1220389; Tue, 01 Oct 2024 19: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 1svia2-0007Ya-IS; Tue, 01 Oct 2024 19:30:42 +0000
Received: by outflank-mailman (input) for mailman id 808492;
 Tue, 01 Oct 2024 19: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=eMg8=Q5=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1svia1-0007YU-1U
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 19:30:41 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on2062e.outbound.protection.outlook.com
 [2a01:111:f403:2009::62e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a2a71416-802b-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 21:30:38 +0200 (CEST)
Received: from MW4PR03CA0256.namprd03.prod.outlook.com (2603:10b6:303:b4::21)
 by IA1PR12MB8333.namprd12.prod.outlook.com (2603:10b6:208:3fe::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.26; Tue, 1 Oct
 2024 19:30:33 +0000
Received: from MWH0EPF000A6735.namprd04.prod.outlook.com
 (2603:10b6:303:b4:cafe::66) by MW4PR03CA0256.outlook.office365.com
 (2603:10b6:303:b4::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16 via Frontend
 Transport; Tue, 1 Oct 2024 19:30:33 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MWH0EPF000A6735.mail.protection.outlook.com (10.167.249.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8026.11 via Frontend Transport; Tue, 1 Oct 2024 19:30:33 +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.39; Tue, 1 Oct
 2024 14:30:32 -0500
Received: from [172.30.194.120] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 1 Oct 2024 14:30:31 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a2a71416-802b-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=URVL9BRF5g+3/453yv+XgVlvsr6YERJGdBcbkZehjHnzRTOnYazMsobW8O7FFVmaGeUOZ8CbaGou1W04of5pqbi8tX/46Ip3rCVCFjftcP9f1Hjpr61vk/Z2PriGcEtniK0i+iPXs9ZHJVRTHkhh2g/Zgkz81vNAqmz4/uZ0l+dbga16dJ4154ybmhinNM8B2fLqyrkQcbekLfh+S28FGzXhdc4qK4B6JcajStTFTEJObz4ibxtDDtLvrLlmzTc1VTETbNIsBGh0lQfySfGyRQOtpwpCJMQNn1Ad1rh1YjjhZ3wf29MDhAcQ+0zIDj2Rho3qFoEb383/NwdyDFWFvg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=DIGfvN+rRVqlOhjfJJqu1l0NsjX7EGw/d/MABEMRqs8=;
 b=y1WqywAvTZwvEUUxKxZlZJhP24k2Hg7C/ob/eAOmS0dcnZ9/NRfoHKkMT6kdXt1Id3D0qb0HE015QdlDFZMD+KC1pxL41VEbu59Sv4N0/HPchZ9fDror7QGY+Q6AmZvaMLjWqc7rQjaKsnPxoU/0Q8/I2ml8rwf3dWWnEyzqcLD+/ThC3U5s5Rwy023/hbyYZYzr0HYKfV9z8OrWA+FALaRCqrsGTbK6ndYMsPOTgQWT/gNda0+8F1lXQzrcNKR6V+FBZ5nQz/F9nNFp9udv/Xc0gV1pH5fEwoWi1NzWfkpzcZpDw4lTYXtcxtX+HfYhz9p1PbbnaqJHpZOibOuMfQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=DIGfvN+rRVqlOhjfJJqu1l0NsjX7EGw/d/MABEMRqs8=;
 b=0s6/Hat4UqYj6q0wOa0k95Yqie5efS6tCXB/RgGXfbuA0tAiXQlDsvBrEX43xKPtwaxTNFvoZODN0aZiJeiiQAa5jwQH+/+lMklUAsGAQGiJfMknbKLV6z+ijdza/ZqT+kLDhKDAd5d1nvL7QyGzTMep/83t4PIdrjqKCmr9+3M=
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: <4d3b6a4e-4731-4d37-a2c2-855408fb610a@amd.com>
Date: Tue, 1 Oct 2024 15:30:30 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/6] xen/arm: create dom0less virtio-pci DT node
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	<xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <julien@xen.org>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, <Volodymyr_Babchuk@epam.com>,
	<dpsmith@apertussolutions.com>, <edgar.iglesias@amd.com>
References: <20240924162359.1390487-1-edgar.iglesias@gmail.com>
 <20240924162359.1390487-4-edgar.iglesias@gmail.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20240924162359.1390487-4-edgar.iglesias@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000A6735:EE_|IA1PR12MB8333:EE_
X-MS-Office365-Filtering-Correlation-Id: db69b658-646c-4b01-f0b0-08dce24f8490
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZjR1SnduUGJUb3JzSnVHT21uSHdQVmZPMGV6KzBDMW5VN2JoQ1NmQ1hTMWxj?=
 =?utf-8?B?SjZkc2RvcWJRdmY1aFZlNE5mWkZkNEdWa29kYXJyNzJGVFkxOFpSKzdDN1li?=
 =?utf-8?B?TUFqUmdka1lVTiswMHhWZ3RDWktnOWZjVHl0WDN5Y2pjNzUvcUhXcVhudkxs?=
 =?utf-8?B?b25zSWd1YmpJTk1qd2RZTS82eUxlZWM0WnZ6RHl1cS91QndtbGZIYXpWWVlG?=
 =?utf-8?B?UlVQZlhsaFBsWjN0T3AvUlNtaEpOcU1mUFdyZVUxNXpKWlh6NiszTFZHaVl6?=
 =?utf-8?B?SlhKZlpaeDh3WUpaUW80akVxVEZMUSs4Y3UwZldoV2Q3L2I5OXlrRlF3RWhV?=
 =?utf-8?B?Mkd1ZEhaeVo3Yy9UV0d6QjMrTlZPSWhkcy9pOUZjYkRMNDUxYURvK1ZqYWlz?=
 =?utf-8?B?ZkhXYytEYlh6MS9jU05JWkJEdzhxMjdadDJKM1hCOXBTSXRoK1B4enpvaHhz?=
 =?utf-8?B?eGdWb0NoUkpKQ3VWcy9QZXpCRTBYTmFuSG1zWWQrYURXMVlQQWpyT0dZQWhN?=
 =?utf-8?B?VzNPNFNvYzNSaUFWcVpHcUxic0NuQ1VEcm1hdU1NM3EwSEN4ek15c3pVeUsw?=
 =?utf-8?B?Ui9vSGlac20wRTVEUWlTL0ZDbzdlV0djOW94ZjExb1JCL2xhUUMxdEp5K1lG?=
 =?utf-8?B?dHhyVk5LNEFWL2wxSlBFdFY0MkFxUjFzVzhmVnRUckh5QUtTcnVQQlFZeHYw?=
 =?utf-8?B?dmp5Y20wMG1tVDBCWm5vdDhWMmlPaGpkZ1BwUU5YM3Y4Y0xPTUVsemRHeE1m?=
 =?utf-8?B?QXNmdmZkQXIxVHpKR2loSFNpNVJMd2tyZWZsWGEzK0JOTWl4VXhpZXhIWERk?=
 =?utf-8?B?M0ZhYjNUUDB5WnJTNEhTYmt1OVBtR3ZkMk52UmxHWXplby92aDVtL0xPSnNR?=
 =?utf-8?B?UnlhRUs5MUxxNFZjNDMrSlhaUWlYbUpycWhWVm5WTlAzNWt6a0IvZU5jTW56?=
 =?utf-8?B?U05qVnVqd0JYNmtlaERIR3R1dDFWbllYbytHbDFOYnlORHR4aHE4T1pXYWFz?=
 =?utf-8?B?OUljUGFRRlJSeUh1ZTV4UlhiWTdUQ3AxZkRmd3pMSFFRbnhramlweHZuYU53?=
 =?utf-8?B?bjBFdWg4VFN0UFZpbWNxczYraUVCL1dSZmg0RU1vcTI4ZHduWGdWSU5tRjQv?=
 =?utf-8?B?aWhSN3AvVDY2a0NoT1RBZlVtYVBwNW1XVkh2aE9EaUt6Ym9KK0kzYlJZeXlY?=
 =?utf-8?B?RkJ0alB3K0hoOXdxRzlsUDk0aEgyUy9tV1hIOFJ0UWx0M1MyZUVnYkFra3Nh?=
 =?utf-8?B?dkE5NzAvYjdRWTd6RDNiVkhQZUhRbU1hKzhEMHptSHhFV1dZT2lqd2JiYTh3?=
 =?utf-8?B?VU1Dak9hcmxoWWowU1BkcVppUG1VSS9laTVqclBrOWQzcGczN2NvbDAwR3ZF?=
 =?utf-8?B?QWZ6T0Z1MmpVOGQwQ25tKzcyYUo4Z25sZFdmcXdKZkgxVFZNcFcrajRYdjU4?=
 =?utf-8?B?VEhLV1FNQ09vZjVqckRSWHhrQlNubS9rNW82RmxzRG04MGMwVGNTSEtrT3Jy?=
 =?utf-8?B?bHpra2FYMzVKSWo3bmhUUXU3c0dsK1dmbzJQZWJZdjY5eXR0TVRxUnVtcUlJ?=
 =?utf-8?B?NE4yUkJadnBtbjdlTDJhVVRXUVVTVTJ3cUhhc0xUSzIyN1JsUkdmMDcxMGJC?=
 =?utf-8?B?a1BJOXRVWndoYmdpdGZReVFUTjRldlFoOHpjdko3SlhrSEFzenh0SndBY0dV?=
 =?utf-8?B?UjkzM2kzdStRVDZ5OWRRRkpyOG13S2dLcWVVK2FkdGpoSDdYMFZWT3ZvaHdT?=
 =?utf-8?B?S2JGUGJkZVFRdllQbk9nZUo0WG12b1ZrZmR5d1l3NmVaZjFWUGNQVFNRRXo5?=
 =?utf-8?Q?lPcf+rTKVMlAHW3HLBqDC61Uwr1YarR1ywxic=3D?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2024 19:30:33.2121
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: db69b658-646c-4b01-f0b0-08dce24f8490
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:
	MWH0EPF000A6735.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8333

On 9/24/24 12:23, Edgar E. Iglesias wrote:
> diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
> index 09b65e44ae..dab24fa9e2 100644
> --- a/xen/arch/arm/dom0less-build.c
> +++ b/xen/arch/arm/dom0less-build.c
> @@ -586,6 +586,189 @@ static int __init domain_handle_dtb_bootmodule(struct domain *d,
>      return res;
>  }
>  
> +static int __init make_virtio_pci_domU_node(const struct kernel_info *kinfo)
> +{
> +    void *fdt = kinfo->fdt;
> +    /* reg is sized to be used for all the needed properties below */
> +    __be32 reg[(1 + (GUEST_ROOT_ADDRESS_CELLS * 2) + GUEST_ROOT_SIZE_CELLS)
> +               * 2];
> +    __be32 irq_map[4 * 4 * 8];

Why two separate arrays on the stack? It looks like they're used for the
same purpose, so I think we may as well keep the bigger one and get rid
of the smaller.


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 20:46:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 20:46:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808497.1220398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svjl1-0000zp-0W; Tue, 01 Oct 2024 20:46:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808497.1220398; Tue, 01 Oct 2024 20:46: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 1svjl0-0000zi-UD; Tue, 01 Oct 2024 20:46:06 +0000
Received: by outflank-mailman (input) for mailman id 808497;
 Tue, 01 Oct 2024 20:46: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 1svjl0-0000zY-3g; Tue, 01 Oct 2024 20:46: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 1svjkz-0003GQ-Se; Tue, 01 Oct 2024 20:46: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 1svjkz-0004Pk-AJ; Tue, 01 Oct 2024 20:46:05 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svjkz-0004gL-9q; Tue, 01 Oct 2024 20:46: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=7FtiSqY0jQ7Z9i9ux4ssWUa/mJK8lbSlty/8W6VBwnw=; b=U97h6r5JVoQPGq41PF/s4xinFI
	lS67ks1YWG/CKdk1HimyFEkXUtRlPQJr3y7J08wwp1sgWVkRLpRx4IUgS/V7qECxdzWjVrcnphmxA
	WaTEwX8no09m/I0iwip468/D1xYhRq+FSglNonh/YOvj8DWypwwWWKw8ciFBFhwMj4jE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187913-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187913: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-amd64-amd64-xl-qcow2:guest-start/debian.repeat:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=3b14a767eaca3df5534a162851f04787b363670e
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 01 Oct 2024 20:46:05 +0000

flight 187913 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/187913/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check fail in 187903 pass in 187913
 test-amd64-amd64-xl-qcow2    21 guest-start/debian.repeat  fail pass in 187903

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-thunderx 15 migrate-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-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-amd64-libvirt-qcow2 14 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-amd64-amd64-libvirt-raw 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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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

version targeted for testing:
 qemuu                3b14a767eaca3df5534a162851f04787b363670e
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   15 days
Failing since        187731  2024-09-17 13:11:20 Z   14 days   24 attempts
Testing same since   187891  2024-09-28 22:11:07 Z    2 days    6 attempts

------------------------------------------------------------
People who touched revisions under test:
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alex Bennée <alex.bennee@linaro.org>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Juraj Marcin <jmarcin@redhat.com>
  Laurent Vivier <laurent@vivier.eu>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    fail    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 4240 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 20:55:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 20:55:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808507.1220408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svju5-0002rW-0N; Tue, 01 Oct 2024 20:55:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808507.1220408; Tue, 01 Oct 2024 20:55: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 1svju4-0002rP-U4; Tue, 01 Oct 2024 20:55:28 +0000
Received: by outflank-mailman (input) for mailman id 808507;
 Tue, 01 Oct 2024 20:55: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 1svju3-0002rF-2Y; Tue, 01 Oct 2024 20:55: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 1svju2-0003PX-RF; Tue, 01 Oct 2024 20:55: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 1svju2-0004dT-FW; Tue, 01 Oct 2024 20:55:26 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svju2-0008G0-Eu; Tue, 01 Oct 2024 20:55: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=W5L5+y03h2HI16t39IxRIIpSSe+DmpNfK6jsQoCxuEk=; b=Ycq0jTg/Yoq6D0TYgupsnEqk0F
	t+x+nX4V+mq2a7fTphgxYG67RMdmkSDs0flMScNQVLS5+lLvFjNe+RNcZg89cyGp/0fmqcj0nEc9i
	+TMadQm6QQfdsdQ1o9zt0xV5BCI/KQITLEAzvxeBmW3C7pIC0frR6Wj6gK72b4Hd+nmI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187927-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187927: 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=633ee8b2df963f7e5cb8de1219c1a48bfb4447f6
X-Osstest-Versions-That:
    xen=66878a8b7566e9a98d20b69ab95ddaffe1130683
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 01 Oct 2024 20:55:26 +0000

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

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                  633ee8b2df963f7e5cb8de1219c1a48bfb4447f6
baseline version:
 xen                  66878a8b7566e9a98d20b69ab95ddaffe1130683

Last test of basis   187918  2024-10-01 08:04:04 Z    0 days
Testing same since   187927  2024-10-01 18:04:04 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
   66878a8b75..633ee8b2df  633ee8b2df963f7e5cb8de1219c1a48bfb4447f6 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 21:13:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 21:13:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808514.1220418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svkBk-0005xM-FI; Tue, 01 Oct 2024 21:13:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808514.1220418; Tue, 01 Oct 2024 21:13: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 1svkBk-0005xF-Co; Tue, 01 Oct 2024 21:13:44 +0000
Received: by outflank-mailman (input) for mailman id 808514;
 Tue, 01 Oct 2024 21:13: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=NDke=Q5=zytor.com=hpa@srs-se1.protection.inumbo.net>)
 id 1svkBi-0005x9-5m
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 21:13:42 +0000
Received: from mail.zytor.com (unknown [2607:7c80:54:3::138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0617c413-803a-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 23:13:39 +0200 (CEST)
Received: from [172.27.3.244] ([76.133.66.138]) (authenticated bits=0)
 by mail.zytor.com (8.18.1/8.17.1) with ESMTPSA id 491LD64E3981901
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NO);
 Tue, 1 Oct 2024 14:13:06 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0617c413-803a-11ef-99a2-01e77a169b0f
DKIM-Filter: OpenDKIM Filter v2.11.0 mail.zytor.com 491LD64E3981901
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zytor.com;
	s=2024091601; t=1727817189;
	bh=wg2nnHYJORGEr++gsU/2zXcuEVhCMPKS9pnMCvzGs8c=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=fFyy47TSOntzOAbS8blAkeCl3x/YS5bSFuROsOg+3vqmY7On1biRz2UTqs/9m38X8
	 nRscKmyWainHTfaY3YP7t1lB5f0PwyK8Aa8UwTBK3xVt41BmFDAR0Um12z0DGAw83q
	 rwR5I38BRHrDozoz5SrS6vamdT7nw+/vhni+WCK/fVluUznobKmjSIoBtoiVawRvP+
	 PUadiCuuNcRhOsdYeao3WLhh4ZW9WjTBE8wKA16DWrk/uqHDWUrIlDPNYSPdY4zgNa
	 7+S7kpQ6qLWXT6nHjxx8l5aWS59Y1Fee+kpF52DDp2Ey5vGtIiW4dMiN+Lin831+/a
	 7/yrVpIWWLvhA==
Message-ID: <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
Date: Tue, 1 Oct 2024 14:13:05 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, x86@kernel.org,
        Andy Lutomirski <luto@kernel.org>,
        Peter Zijlstra <peterz@infradead.org>, Uros Bizjak <ubizjak@gmail.com>,
        Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>,
        Christoph Lameter <cl@linux.com>,
        Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
        Paolo Bonzini <pbonzini@redhat.com>,
        Vitaly Kuznetsov <vkuznets@redhat.com>,
        Juergen Gross <jgross@suse.com>,
        Boris Ostrovsky
 <boris.ostrovsky@oracle.com>,
        Greg Kroah-Hartman
 <gregkh@linuxfoundation.org>,
        Arnd Bergmann <arnd@arndb.de>, Masahiro Yamada <masahiroy@kernel.org>,
        Kees Cook <kees@kernel.org>, Nathan Chancellor <nathan@kernel.org>,
        Keith Packard <keithp@keithp.com>,
        Justin Stitt <justinstitt@google.com>,
        Josh Poimboeuf <jpoimboe@kernel.org>,
        Arnaldo Carvalho de Melo <acme@kernel.org>,
        Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
        Ian Rogers <irogers@google.com>,
        Adrian Hunter <adrian.hunter@intel.com>,
        Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org,
        linux-pm@vger.kernel.org, kvm@vger.kernel.org,
        xen-devel@lists.xenproject.org, linux-efi@vger.kernel.org,
        linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org,
        linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org,
        rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com>
Content-Language: en-US
From: "H. Peter Anvin" <hpa@zytor.com>
In-Reply-To: <20240925150059.3955569-55-ardb+git@google.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 9/25/24 08:01, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb@kernel.org>
> 
> As an intermediate step towards enabling PIE linking for the 64-bit x86
> kernel, enable PIE codegen for all objects that are linked into the
> kernel proper.
> 
> This substantially reduces the number of relocations that need to be
> processed when booting a relocatable KASLR kernel.
> 

This really seems like going completely backwards to me.

You are imposing a more restrictive code model on the kernel, optimizing 
for boot time in a way that will exert a permanent cost on the running 
kernel.

There is a *huge* difference between the kernel and user space here:

KERNEL MEMORY IS PERMANENTLY ALLOCATED, AND IS NEVER SHARED.

Dirtying user pages requires them to be unshared and dirty, which is 
undesirable. Kernel pages are *always* unshared and dirty.

> It also brings us much closer to the ordinary PIE relocation model used
> for most of user space, which is therefore much better supported and
> less likely to create problems as we increase the range of compilers and
> linkers that need to be supported.

We have been resisting *for ages* making the kernel worse to accomodate 
broken compilers. We don't "need" to support more compilers -- we need 
the compilers to support us. We have working compilers; any new compiler 
that wants to play should be expected to work correctly.

	-hpa



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 21:31:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 21:31:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808519.1220429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svkSr-0000e0-Uv; Tue, 01 Oct 2024 21:31:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808519.1220429; Tue, 01 Oct 2024 21: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 1svkSr-0000dt-Qi; Tue, 01 Oct 2024 21:31:25 +0000
Received: by outflank-mailman (input) for mailman id 808519;
 Tue, 01 Oct 2024 21:31: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=O0ff=Q5=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1svkSq-0000dn-Gp
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 21:31:24 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 808eccbc-803c-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 23:31:22 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 5FA51A4057D;
 Tue,  1 Oct 2024 21:31:12 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7716DC4CEC6;
 Tue,  1 Oct 2024 21:31: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: 808eccbc-803c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727818280;
	bh=9eQP6f8wwVGG8Yk+lo3Nwnmtlgo+SOCG8lkpdOlRpqs=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=uYgGLaxw1j43pJjlg8a0EyOCGd1gnMezEEC18PQuSifbR0ZpFuWHTOt+Uef6g5lGO
	 7s+o7fWyAprQiPPHnfiVjDtbTaCp6/Z+hfloKU3XpQEXSMvvFQpzSRo16H22FmcWvk
	 k2/ewCARSgxpxf2cv8WmeV//tzJF+xI+PTEbhiSVdJBEUN0FZIA9X/whv5rHELLx0E
	 H7UcWp3Ru4d0B0oWhUGwuCgogltQS+e2GZvdH+sE4W1gu/kysCggbMfhQ5BioXwKX1
	 y/65QXKH5O9+Ag2N6DNYiB4ccfjyDWxQaKZ009N8a4kZ+KxRefSoRTWwfd9RUi2Gun
	 VkvsJw1CiOGTA==
Date: Tue, 1 Oct 2024 14:31:18 -0700 (PDT)
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>, 
    Alessandro Zucchelli <alessandro.zucchelli@bugseng.com>, 
    consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>, 
    Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Subject: Re: [XEN PATCH v6] CODING_STYLE: Add a section on header guards
 naming conventions
In-Reply-To: <f696a8b4-02f5-4b2e-9417-db94bf354a32@suse.com>
Message-ID: <alpine.DEB.2.22.394.2410011431110.451631@ubuntu-linux-20-04-desktop>
References: <a68267c7465a9b0d2ed8f844a5e0145de50b0f3a.1725550985.git.alessandro.zucchelli@bugseng.com> <7357f6e8-2630-4027-b339-eedab9ae48c5@suse.com> <alpine.DEB.2.22.394.2409092149210.3672@ubuntu-linux-20-04-desktop> <44738f93-e99b-4f1c-9ed3-59dd2eac7aff@suse.com>
 <alpine.DEB.2.22.394.2409111808580.611587@ubuntu-linux-20-04-desktop> <24e33cc2-c9eb-4609-a074-51df81997aba@suse.com> <alpine.DEB.2.22.394.2409301430090.451631@ubuntu-linux-20-04-desktop> <f696a8b4-02f5-4b2e-9417-db94bf354a32@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, 1 Oct 2024, Jan Beulich wrote:
> On 30.09.2024 23:40, Stefano Stabellini wrote:
> > On Mon, 30 Sep 2024, Jan Beulich wrote:
> >> On 12.09.2024 03:13, Stefano Stabellini wrote:
> >>> Hi Jan, we have gone back and forth on this a few times, but neither
> >>> Alessandro nor I fully understand your perspective. To help streamline
> >>> the process and save time for everyone, I suggest you provide an example
> >>> of the rules written in the style you believe is appropriate. Once you
> >>> set the initial direction, Alessandro and I can continue and complete
> >>> the rest in that preferred style.
> >>
> >> Header inclusion guards
> >> -----------------------
> >>
> >> Unless otherwise specified, all header files should include proper
> >> guards to prevent multiple inclusions. The following naming conventions
> >> apply:
> >>
> >> - Guard names are derived from directory path underneath xen/ and the
> >>   actual file name.  Path components are separated by double underscores.
> >>   Alphabetic characters are converted to upper case.  Non-alphanumeric
> >>   characters are replaced by single underscores.
> >> - Certain directory components are omitted, to keep identifier length
> >>   bounded:
> >>   - The top level include/,
> >>   - Any architecture's arch/<arch>/include/asm/ collapses to
> >>     ASM__<ARCH>__,
> >>   - Architecture-specific private files' arch/.
> >>
> >> For example:
> >>
> >> - Xen headers: XEN__<filename>_H
> >>   - include/xen/something.h -> XEN__SOMETHING_H
> >>
> >> - asm-generic headers: ASM_GENERIC__<filename>_H
> >>   - include/asm-generic/something.h -> ASM_GENERIC__SOMETHING_H
> >>
> >> - arch-specific headers: ASM__<architecture>__<subdir>__<filename>_H
> >>   - arch/x86/include/asm/something.h -> ASM__X86__SOMETHING_H
> >>
> >> - Private headers: <dir>__<filename>_H
> >>   - arch/arm/arm64/lib/something.h -> ARM__ARM64__LIB__SOMETHING_H
> >>   - arch/x86/lib/something.h -> X86__LIB__SOMETHING_H
> >>   - common/something.h -> COMMON__SOMETHING_H
> >>
> >> Note that this requires some discipline on the naming of future new
> >> sub-directories: There shouldn't be any random asm/ one anywhere, for
> > 
> > I would remove the word "random"
> 
> Fine with me; perhaps use "other" in its place?

yes, that's better


> >> example.  Nor should any new ports be named the same as top-level (within
> >> xen/) directories.  Which may in turn require some care if any new top-
> >> level directories were to be added.  Rule of thumb: Whenever a new sub-
> >> directory is added, check the rules for no collisions to result.
> > 
> > I guess you meant "no collisions among the results" ?
> 
> No, that would be insufficient. I specifically mean to say that there
> should be no _potential_ for collisions, i.e. not just "among the
> results", but also for hypothetical files added underneath such new
> subdirs. Would "for no collisions to potentially result" be more clear
> from you perspective?

Yes that's clearer. Maybe this works better from an English point of
view:

Rule of thumb: Whenever adding a new subdirectory, check the rules to
prevent any potential collisions.



From xen-devel-bounces@lists.xenproject.org Tue Oct 01 21:35:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 21:35:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808523.1220438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svkWn-0001DM-CN; Tue, 01 Oct 2024 21:35:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808523.1220438; Tue, 01 Oct 2024 21:35: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 1svkWn-0001DF-9w; Tue, 01 Oct 2024 21:35:29 +0000
Received: by outflank-mailman (input) for mailman id 808523;
 Tue, 01 Oct 2024 21:35: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=O0ff=Q5=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1svkWm-0001D9-0L
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 21:35:28 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org
 [2604:1380:4641:c500::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 12282c20-803d-11ef-a0ba-8be0dac302b0;
 Tue, 01 Oct 2024 23:35:26 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 18F4E5C0252;
 Tue,  1 Oct 2024 21:35:21 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id F3EACC4CEC6;
 Tue,  1 Oct 2024 21: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: 12282c20-803d-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727818524;
	bh=6I4dXHMTxzj/LFVucix2L+nSq/dLwqUZqHSBO22muLk=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=FBy807igMdBHqxSng0+wlZn0bkltRg9xi3XBzf8TkqioEd538jXs0XUNfsGzyBX5N
	 sF4TEBywDfCjiIq9dVIx09qbTBsbpi8ghs1Gal47MqVG5VuQa1U1dgeqNWrPJjUkJV
	 w6QqNu0qT8duX38A5YfrHOtGV/mZKoYYEqo+kq6PS5LZiLf2oIyFpsFnIzR4FHYoRV
	 PUecn93GVKffB9qb4vQctDzPAB9AUKu+VdhzLRhkX9HpuXedCr+3kem9KZnIL0WsF1
	 n2c+giaL+hw1TViqK+6wKm6HyrvczCDSkeBIZGT8hy2PjYpijH4GVue+ym8rsKbMu0
	 hb4pJ/OVQR1ng==
Date: Tue, 1 Oct 2024 14:35:22 -0700 (PDT)
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>, 
    xen-devel@lists.xenproject.org, consulting@bugseng.com, 
    Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, 
    Federico Serafini <federico.serafini@bugseng.com>
Subject: Re: [XEN PATCH v2 2/3] xen/gnttab: address a violation of MISRA C
 Rule 13.6
In-Reply-To: <f54ffc9e-3721-412e-be52-c93a1a801cca@suse.com>
Message-ID: <alpine.DEB.2.22.394.2410011433361.451631@ubuntu-linux-20-04-desktop>
References: <cover.1727690180.git.federico.serafini@bugseng.com> <cfd2873eb69707ec3f33ea888951ae5676c43bab.1727690180.git.federico.serafini@bugseng.com> <alpine.DEB.2.22.394.2409301549100.451631@ubuntu-linux-20-04-desktop>
 <f54ffc9e-3721-412e-be52-c93a1a801cca@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, 1 Oct 2024, Jan Beulich wrote:
> On 01.10.2024 00:53, Stefano Stabellini wrote:
> > On Mon, 30 Sep 2024, Federico Serafini wrote:
> >> --- a/xen/common/compat/grant_table.c
> >> +++ b/xen/common/compat/grant_table.c
> >> @@ -78,12 +78,15 @@ int compat_grant_table_op(
> >>          cmd_op = cmd;
> >>      switch ( cmd_op )
> >>      {
> >> -#define CASE(name) \
> >> -    case GNTTABOP_##name: \
> >> -        if ( unlikely(!guest_handle_okay(guest_handle_cast(uop, \
> >> -                                                           gnttab_##name##_compat_t), \
> >> -                                         count)) ) \
> >> -            rc = -EFAULT; \
> >> +#define CASE(name)                                                  \
> >> +    case GNTTABOP_ ## name:                                         \
> >> +    {                                                               \
> >> +        XEN_GUEST_HANDLE_PARAM(gnttab_ ## name ## _compat_t) h =    \
> >> +            guest_handle_cast(uop, gnttab_ ## name ## _compat_t);   \
> >> +                                                                    \
> >> +        if ( unlikely(!guest_handle_okay(h, count)) )               \
> >> +            rc = -EFAULT;                                           \
> >> +    }                                                               \
> >>          break
> > 
> > We would typically put the break within the case { }
> 
> That won't work very well with the break not having a semicolon, for the
> semicolon to actually be used when invoking the macro. Moving the break
> (while adding a semicolon there) as you suggest would then mean the use
> site semicolon to end up being an unreachable statement.

I didn't think of the extra semicolon posing a problem. In that case, it
is better as it is in this patch


From xen-devel-bounces@lists.xenproject.org Tue Oct 01 21:37:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 01 Oct 2024 21:37:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808527.1220448 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svkYG-0002A7-Me; Tue, 01 Oct 2024 21:37:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808527.1220448; Tue, 01 Oct 2024 21:37: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 1svkYG-0002A0-Jw; Tue, 01 Oct 2024 21:37:00 +0000
Received: by outflank-mailman (input) for mailman id 808527;
 Tue, 01 Oct 2024 21:36: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=O0ff=Q5=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1svkYF-00029u-Iz
 for xen-devel@lists.xenproject.org; Tue, 01 Oct 2024 21:36:59 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 48677568-803d-11ef-99a2-01e77a169b0f;
 Tue, 01 Oct 2024 23:36:57 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id EB4AAA432DF;
 Tue,  1 Oct 2024 21:36:47 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C1323C4CEC6;
 Tue,  1 Oct 2024 21:36: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: 48677568-803d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727818615;
	bh=Gk6tXihXCvSCwPFumkL2CxhYEa/MIBNmXvWuzxB88R8=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=rWdwbNEHngt+u9fVprukPnaqMg6WWy9uMP+562LxH2DJ/3A7RsFmdonct6eYK2eqD
	 PqQRTZmi2W/XypWFIaiL8tivuSIAWVOW/oaCAD6+S9q15Cl/Y6OCqq0DzTCj/tQISc
	 kFjt/0NddIO8KY5qbViEAOmP0fDgMGlm7liTxZBge8meVfP3mItn4brsl6Jzp0gkRI
	 Vt7ZvDqxdL7mw0NFDs6rTW/md8jUaoTHRVnRFMeI/Qcqidy6Wenb9sz8pUnBPOKwuc
	 R65y2Mvu465/aBwemun3G+JsdjHZSoFrI1bobY+gG+tRhMcldGvNGmfX61VrnBoVJc
	 d1rTvRyPdXc9Q==
Date: Tue, 1 Oct 2024 14:36:53 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: Roberto Bagnara <roberto.bagnara@bugseng.com>, 
    Federico Serafini <federico.serafini@bugseng.com>, consulting@bugseng.com, 
    "Daniel P. Smith" <dpsmith@apertussolutions.com>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule
 13.6
In-Reply-To: <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
Message-ID: <alpine.DEB.2.22.394.2410011431360.451631@ubuntu-linux-20-04-desktop>
References: <cover.1727690180.git.federico.serafini@bugseng.com> <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com> <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com> <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
 <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@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, 1 Oct 2024, Jan Beulich wrote:
> On 01.10.2024 07:25, Roberto Bagnara wrote:
> > On 2024-09-30 15:07, Jan Beulich wrote:
> >> On 30.09.2024 14:49, Federico Serafini wrote:
> >>> guest_handle_ok()'s expansion contains a sizeof() involving its
> >>> first argument which is guest_handle_cast().
> >>> The expansion of the latter, in turn, contains a variable
> >>> initialization.
> >>>
> >>> Since MISRA considers the initialization (even of a local variable)
> >>> a side effect, the chain of expansions mentioned above violates
> >>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
> >>> contain any expression which has potential side effect).
> >>
> >> I'm afraid I need to ask for clarification of terminology and alike here.
> >> While the Misra doc has a section on Persistent Side Effects in its
> >> Glossary appendix, what constitutes a side effect from its pov isn't
> >> really spelled out anywhere. Which in turn raises the question whether it
> >> is indeed Misra (and not just Eclair) which deems initialization a side
> >> effect. This is even more so relevant as 13.6 talks of only expressions,
> >> yet initializers fall under declarations (in turn involving an expression
> >> on the rhs of the equal sign).
> >>
> >> All the same of course affects patch 2 then, too.
> > 
> > MISRA C leaves the definition of "side effect" to the C Standard.
> > E.g., C18 5.1.2.3p2:
> > 
> >    Accessing a volatile object, modifying an object, modifying a file,
> >    or calling a function that does any of those operations are all
> >    side effects,[omitted irrelevant footnote reference] which are
> >    changes in the state of the execution environment.
> > 
> > The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
> > indirectly confirms that initialization is always a side effect.
> 
> Hmm, that's interesting: There's indeed an example with an initializer
> there. Yet to me the text you quote from the C standard does not say
> that initialization is a side effect - it would be "modifying an
> object" aiui, yet ahead of initialization being complete the object
> doesn't "exist" imo, and hence can be "modified" only afterwards.

Hi Jan,

I feel it's becoming a bit too philosophical. Since there's some room
for interpretation and only two violations left to address, I believe
it's best to stick with the stricter interpretation of the definition.
Therefore, I'd proceed with this series in its current form.


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 01:14:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 01:14:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808542.1220467 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svnwa-0006j0-6M; Wed, 02 Oct 2024 01:14:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808542.1220467; Wed, 02 Oct 2024 01:14: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 1svnwa-0006it-3R; Wed, 02 Oct 2024 01:14:20 +0000
Received: by outflank-mailman (input) for mailman id 808542;
 Wed, 02 Oct 2024 01:14: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 1svnwY-0006ij-DE; Wed, 02 Oct 2024 01:14: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 1svnwY-00016S-BW; Wed, 02 Oct 2024 01:14: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 1svnwX-0005p1-TG; Wed, 02 Oct 2024 01:14:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svnwX-0006W0-SX; Wed, 02 Oct 2024 01:14: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=zAAcZUcAMW9j+oTh6mV+yjWVTpk+g3JZz6UIT1SP6m0=; b=S1TLTGOprULJbr87Slgrxu62CI
	3brYy8GRY4p+9LbEMvgLHwga255m+71U+jk6LxxN9zcp8iUeLt+RMH47tAUQRDixwLig4YKcgZkrn
	hCDXq6UzFprzTHVfIxPOLOr29SaN9/T5WOj4bJxV+1d00gWCfrce5O5D6Cs5zllmzFtw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187916-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187916: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl: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-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-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2: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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=94423b8f75bd786043f8e9bb2809675007225329
X-Osstest-Versions-That:
    xen=f97f885c719849f55bade3b6303206e7717ecff8
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 01:14:17 +0000

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

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 187908
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187908
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187908
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187908
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187908
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187908
 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-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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-arndale  16 saverestore-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  94423b8f75bd786043f8e9bb2809675007225329
baseline version:
 xen                  f97f885c719849f55bade3b6303206e7717ecff8

Last test of basis   187908  2024-09-30 13:10:49 Z    1 days
Testing same since   187916  2024-10-01 03:16:10 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Frediano Ziglio <frediano.ziglio@cloud.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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   f97f885c71..94423b8f75  94423b8f75bd786043f8e9bb2809675007225329 -> master


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 03:57:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 03:57:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808564.1220478 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svqTv-0001Gv-AS; Wed, 02 Oct 2024 03:56:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808564.1220478; Wed, 02 Oct 2024 03: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 1svqTv-0001Go-5x; Wed, 02 Oct 2024 03:56:55 +0000
Received: by outflank-mailman (input) for mailman id 808564;
 Wed, 02 Oct 2024 03:56: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 1svqTt-0001Ge-Nb; Wed, 02 Oct 2024 03:56: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 1svqTt-0004Gt-Hy; Wed, 02 Oct 2024 03:56: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 1svqTt-0003k7-7l; Wed, 02 Oct 2024 03:56:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svqTt-0002eU-7J; Wed, 02 Oct 2024 03:56: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=aiyPkUoIXmkAiHf0sk/tSeBQwvEynUVlz/rHs5iyNrc=; b=VxIJA6PGEDsJgYF4K0Rr15ZMKP
	v7H69SmcwFJGPy3cUGCTicp+u97TsarkI+cZjJ7UJqDcBVKhNPAIZghI/i9KoPomnbd31zRHEQ1t1
	bkvwEHr9ksbZKRMGXsyaMI4Gmvl58y676whQKaYnfZ63WOh3ggXZaExYoqyQQuGHlXwA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187929-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187929: 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=f9ce66ea9d24aa8b26fcb2c18828caf314328ca3
X-Osstest-Versions-That:
    xen=633ee8b2df963f7e5cb8de1219c1a48bfb4447f6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 03:56:53 +0000

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

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                  f9ce66ea9d24aa8b26fcb2c18828caf314328ca3
baseline version:
 xen                  633ee8b2df963f7e5cb8de1219c1a48bfb4447f6

Last test of basis   187927  2024-10-01 18:04:04 Z    0 days
Testing same since   187929  2024-10-02 01:03:53 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ayan Kumar Halder <ayan.kumar.halder@amd.com>
  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
   633ee8b2df..f9ce66ea9d  f9ce66ea9d24aa8b26fcb2c18828caf314328ca3 -> smoke


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 04:14:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 04:14:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808571.1220487 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svqke-0004CT-Mu; Wed, 02 Oct 2024 04:14:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808571.1220487; Wed, 02 Oct 2024 04: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 1svqke-0004CM-JO; Wed, 02 Oct 2024 04:14:12 +0000
Received: by outflank-mailman (input) for mailman id 808571;
 Wed, 02 Oct 2024 04:14: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 1svqkd-0004CC-54; Wed, 02 Oct 2024 04:14: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 1svqkc-0004rx-Qp; Wed, 02 Oct 2024 04:14: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 1svqkc-0004g4-CZ; Wed, 02 Oct 2024 04:14:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svqkc-0002Tx-CE; Wed, 02 Oct 2024 04:14: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=o3KVb+fU9Vsa+vkadYliRu+yhAkLH9/c72lh4YtFlgE=; b=58spJBAKGg9a1Bj0YgtFcyo7IZ
	fJZmYZqxwgAG0iqTv6A3PctI+o0gGGH60nW1ngjFbhNacJDhQbdu0mHMC58ihqvooPxfl8PEIRFEo
	h35R+E8TM5d7ivcs6/x0w25jO32kh6puDxwNfHNSOlJErCQtGmR79iToKlzT+9YnE9gQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187917-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 187917: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt: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-amd64-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-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-raw: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=ded649c09e18bf9d77b13e183e8e06be007efcc4
X-Osstest-Versions-That:
    libvirt=8efd3762db292ef70a7fdd52031c5e181b8175cd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 04:14:10 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187886
 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-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-armhf-armhf-libvirt     15 migrate-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              ded649c09e18bf9d77b13e183e8e06be007efcc4
baseline version:
 libvirt              8efd3762db292ef70a7fdd52031c5e181b8175cd

Last test of basis   187886  2024-09-28 04:20:42 Z    3 days
Testing same since   187917  2024-10-01 04:20:39 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  Göran Uddeborg <goeran@uddeborg.se>
  Ján Tomko <jtomko@redhat.com>
  Laine Stump <laine@redhat.com>
  Martin Kletzander <mkletzan@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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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
   8efd3762db..ded649c09e  ded649c09e18bf9d77b13e183e8e06be007efcc4 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 04:45:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 04:45:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808578.1220497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svrFE-0008Eo-37; Wed, 02 Oct 2024 04:45:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808578.1220497; Wed, 02 Oct 2024 04: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 1svrFE-0008Eh-01; Wed, 02 Oct 2024 04:45:48 +0000
Received: by outflank-mailman (input) for mailman id 808578;
 Wed, 02 Oct 2024 04:45: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 1svrFC-0008EU-8d; Wed, 02 Oct 2024 04:45: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 1svrFB-0005Uv-UL; Wed, 02 Oct 2024 04:45: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 1svrFB-0006H2-LJ; Wed, 02 Oct 2024 04:45:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svrFB-0007BY-Kn; Wed, 02 Oct 2024 04:45: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=QC3TpEyXrjKHCblfSmL21UKbHD9JZcKnJFlo9OFUewE=; b=a7eFVU43aKu6cSHmSBEB8HsCee
	FECrhGxON+Q2/oC9Pau19sxP1iItSWBmhUQD5tpLqdtqke1DLQHTaIPgUy6DIskFlCky3v7AI68gY
	ZWVgIAF/Q+bWNX5BTF25WzXSLIVi/TfBVBEjn4zk8zAPTkcgH1Exm6wS5+c4spi2aQto=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187931-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187931: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=3297be20bb8f575feb79ef782bd1c41eeb2feced
X-Osstest-Versions-That:
    ovmf=4f4673846fc9d6fc1c10a6c025da4739d872a6a0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 04:45:45 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 3297be20bb8f575feb79ef782bd1c41eeb2feced
baseline version:
 ovmf                 4f4673846fc9d6fc1c10a6c025da4739d872a6a0

Last test of basis   187914  2024-10-01 01:43:57 Z    1 days
Testing same since   187931  2024-10-02 03:13:38 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Leif Lindholm <quic_llindhol@quicinc.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    


------------------------------------------------------------
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
   4f4673846f..3297be20bb  3297be20bb8f575feb79ef782bd1c41eeb2feced -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 05:56:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 05:56:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808587.1220507 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svsLO-0000J6-0U; Wed, 02 Oct 2024 05:56:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808587.1220507; Wed, 02 Oct 2024 05:56: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 1svsLN-0000Iz-Tu; Wed, 02 Oct 2024 05:56:13 +0000
Received: by outflank-mailman (input) for mailman id 808587;
 Wed, 02 Oct 2024 05:56: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svsLL-0000It-VJ
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 05:56:11 +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 05b995d1-8083-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 07:56:09 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a98f6f777f1so85988566b.2
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 22:56:09 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bd26sm809675166b.164.2024.10.01.22.56.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 22:56:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05b995d1-8083-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727848569; x=1728453369; 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=6Y9rvVIdg/iEWvAzvOYjdogVh8CBWNMJBYTDa+w02eA=;
        b=dVo9Fbm7kb4SQQy4Hs/pmJlZCP9XXk3UjUR8mCUpUSN+PHPrBv8g9tTziQlaDLPTH7
         KZZrTtgMdsansa756gaoic3eT7FxsyBfDUXUZ+02ECpjpDMAxppBe3JyR9fTEARaivoM
         tpxOfQonCbhSs70dNSeauk7wSsUWAkw+knEee44c+o+vI59aVlv+DNjfTOtJsXHaEGrR
         e5f1XEik1sws5uU/Rj1OBIYz7aChg+0jY41M8YFHjcSMpaZ+5TiNU8F8daPYzmhQiF5O
         rLKG2TUu/J8Tyc0BHOpjQTR7Evdv5+ReX3+zZl5TuSh+96FgPbjkqUS8NjDIyrrL6Vre
         ud+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727848569; x=1728453369;
        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=6Y9rvVIdg/iEWvAzvOYjdogVh8CBWNMJBYTDa+w02eA=;
        b=izEMah0rUFrpaFpWRHj9NadnE/qOUyjxwHidIPtih31mV20fIb43A6t2+LHqL7/olz
         Mrvh7SPRMStJ+3UIdP2U3iYxhiwXzeqqc1rhcliWHBkDmfCtDK7itlI7zsJlYD4DUWCJ
         3qY7pY+jJu6qjU4fJ4uSPKy88+u5eMUd9nYUkOw88ChJBhuMFPh3GvYa/VhcG2o8hi5l
         Ugi0l6iEwd4AA9oocgWb6VDquMzjsN+iTrwH3jAetrkI531sWx9VWpkAfis0jg9yeO4O
         XgyTEVMJwkSvub13Z0STsgjEpSh5v7TiFF3djWsvgf7gGH54u5B+NoOtAXHbv1yz+y5x
         tlLQ==
X-Forwarded-Encrypted: i=1; AJvYcCUAWYcF+5GcdOZEP/fcTUwfRkAf9l3bcWafzmDvipYHvKtzRw7lm2HUMVtTj3OyEQb7YjnT7pVZNbY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx6nzQVqnO7EABGyvN3r+vAV70kiC2YUfX/aIEHOiDL/eogchQR
	buY5xrOL3hu01ahRSBCViHK+gPq9Apzw7kK8dEapmTZYEpUxgSX3xRFgALDk1g==
X-Google-Smtp-Source: AGHT+IFgE5ALGcm/Evd/st7Sv12iupCZ+hS1NjjdbJlLsJr0mfT9VUmhmzysxx3Xkwehdx+hobyR9Q==
X-Received: by 2002:a17:906:6a19:b0:a86:743e:7a08 with SMTP id a640c23a62f3a-a98f825a9d4mr174251866b.31.1727848569202;
        Tue, 01 Oct 2024 22:56:09 -0700 (PDT)
Message-ID: <0099629c-90eb-4a85-9c23-c1e57c754768@suse.com>
Date: Wed, 2 Oct 2024 07:56:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 03/11] x86/ACPI: annotate assembly function/data with
 type and size
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <98590a41-cee7-4ba3-a723-4e3ee3b55357@suse.com>
 <4f828e91-aa90-4b44-b778-234812e4f8e1@suse.com>
 <13168581-c5b1-4c85-a7bf-a865914ad9e4@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: <13168581-c5b1-4c85-a7bf-a865914ad9e4@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 18:51, Andrew Cooper wrote:
> On 01/10/2024 4:14 pm, Jan Beulich wrote:
>> Use the generic framework from xen/linkage.h.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> although...

Thanks.

>> @@ -132,6 +132,7 @@ ENTRY(s3_resume)
>>          pop     %rbx
>>          pop     %rbp
>>          ret
>> +END(do_suspend_lowlevel)
>>  
>>  .data
>>          .align 16
>> @@ -142,5 +143,4 @@ saved_cr0:      .quad   0
>>  saved_ssp:      .quad   0
>>  #endif
> 
> ... we do need something for these 3 variables, or they want to move
> into a C file.

We have DATA_LOCAL(). Moving to a C file would be odd, as they're not used
outside of this file (and hence aren't global).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 06:09:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 06:09:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808591.1220516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svsY4-0002Qp-2p; Wed, 02 Oct 2024 06:09:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808591.1220516; Wed, 02 Oct 2024 06:09: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 1svsY4-0002Qi-0L; Wed, 02 Oct 2024 06:09:20 +0000
Received: by outflank-mailman (input) for mailman id 808591;
 Wed, 02 Oct 2024 06:09: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svsY3-0002Qc-F9
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 06:09:19 +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 db01ddf9-8084-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 08:09:17 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a8d29b7edc2so865895566b.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 23:09:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bd26sm811081966b.164.2024.10.01.23.09.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 23:09:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db01ddf9-8084-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727849356; x=1728454156; 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=rsuvjbu+aIj57I/2FWpYkZdGJ/PRVI4xWWPfN4cBu/o=;
        b=GWSqLPhWhOQN4Rc3ElNUEYhdsfWDRSUakA001WM5nfhV00xqReRGnuBtu80HsccZBx
         +NbPxNL5Kl0DZsjW+olQSFZTZ9S/qZxqNlfXaBe8HkHrApe93CxD9ZMO9tOoMGFlOJeK
         VNK0IhHkPNEK/pvFweJ3JuODT3iU0JAHawcrC2R81e5KmDGuTAns1ebK2BCIuyuHgBBK
         xcEJ/hTDBXFnlnxD5O/v4ZZCNlKe2+fflG1Uwaabg2PvIfxRBM9h2Y2sz0lYqfnEi82m
         uNQMdYfDB8fG+elmLcolDKcwp1HGbmrdda4ScVjFt9jvgdoiVfzoaClM9No1bmL/AMWM
         5RdA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727849356; x=1728454156;
        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=rsuvjbu+aIj57I/2FWpYkZdGJ/PRVI4xWWPfN4cBu/o=;
        b=ox+IFm/OKGCPFM9toQKUqtnbOaENkAKM1gizciBsAvMFR8KHTgvYBCWxnIC1fVTs6E
         MZY57UpSjRp+1LAL/mgJQ25hTwSQnd1atDjsKEYeqvoOgDFA+5daeZvQ261mUUnSrmOY
         hWoK2WJgCrdCbDBiJBd187C9vlG5wkg5E3sZKXgy+nYY6Tejv7ADnD45DYq8xZQH3Ez+
         a5MH2eS5Fe7aQqdIoM2qkPVgpf9aJUe/kT+eyufE34sfzY6GEQu1eGl8Xh5zGlzaLwq4
         rmtPHmggufL+eSc0O1mAyPKQfDs8iSNaUx9jED3v7V3ULji1jiVKwq3GE5zWcVSOHeP9
         pcbg==
X-Forwarded-Encrypted: i=1; AJvYcCXxoVS+2Ay24ti+3vFFfLFedHtnn5DvRCKo/UTeQgZai8GpwlrZZsN45p36pTSY3JDd/DricIZbuLY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwlQYSFaY8YrrNni3/xWsysQRxWKc2owDwPk+sseJXsKD+f/WhR
	Z0VpPx72V9Ka+TSsRBFKltNv1o+ie0bxHOK38Sz/d76GBBLkpwgeA+PiBaTf8g==
X-Google-Smtp-Source: AGHT+IEWKNLms4rDM0WVUmocWxzsq1EqA9RzC66Z+KfPBOwQLKvUL8d4xhzkR4M3csxMQOVWB+2+4g==
X-Received: by 2002:a17:907:7fa7:b0:a90:b67e:7aa9 with SMTP id a640c23a62f3a-a98f838b0b8mr181209166b.55.1727849356472;
        Tue, 01 Oct 2024 23:09:16 -0700 (PDT)
Message-ID: <02833aad-d6f1-4ffa-8d4a-d8c31e9b0524@suse.com>
Date: Wed, 2 Oct 2024 08:09:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Roberto Bagnara <roberto.bagnara@bugseng.com>,
 Federico Serafini <federico.serafini@bugseng.com>, consulting@bugseng.com,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
 <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
 <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
 <alpine.DEB.2.22.394.2410011431360.451631@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.2410011431360.451631@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 23:36, Stefano Stabellini wrote:
> On Tue, 1 Oct 2024, Jan Beulich wrote:
>> On 01.10.2024 07:25, Roberto Bagnara wrote:
>>> On 2024-09-30 15:07, Jan Beulich wrote:
>>>> On 30.09.2024 14:49, Federico Serafini wrote:
>>>>> guest_handle_ok()'s expansion contains a sizeof() involving its
>>>>> first argument which is guest_handle_cast().
>>>>> The expansion of the latter, in turn, contains a variable
>>>>> initialization.
>>>>>
>>>>> Since MISRA considers the initialization (even of a local variable)
>>>>> a side effect, the chain of expansions mentioned above violates
>>>>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
>>>>> contain any expression which has potential side effect).
>>>>
>>>> I'm afraid I need to ask for clarification of terminology and alike here.
>>>> While the Misra doc has a section on Persistent Side Effects in its
>>>> Glossary appendix, what constitutes a side effect from its pov isn't
>>>> really spelled out anywhere. Which in turn raises the question whether it
>>>> is indeed Misra (and not just Eclair) which deems initialization a side
>>>> effect. This is even more so relevant as 13.6 talks of only expressions,
>>>> yet initializers fall under declarations (in turn involving an expression
>>>> on the rhs of the equal sign).
>>>>
>>>> All the same of course affects patch 2 then, too.
>>>
>>> MISRA C leaves the definition of "side effect" to the C Standard.
>>> E.g., C18 5.1.2.3p2:
>>>
>>>    Accessing a volatile object, modifying an object, modifying a file,
>>>    or calling a function that does any of those operations are all
>>>    side effects,[omitted irrelevant footnote reference] which are
>>>    changes in the state of the execution environment.
>>>
>>> The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
>>> indirectly confirms that initialization is always a side effect.
>>
>> Hmm, that's interesting: There's indeed an example with an initializer
>> there. Yet to me the text you quote from the C standard does not say
>> that initialization is a side effect - it would be "modifying an
>> object" aiui, yet ahead of initialization being complete the object
>> doesn't "exist" imo, and hence can be "modified" only afterwards.
> 
> I feel it's becoming a bit too philosophical. Since there's some room
> for interpretation and only two violations left to address, I believe
> it's best to stick with the stricter interpretation of the definition.
> Therefore, I'd proceed with this series in its current form.

Proceeding with the series in its current form may be okay (as you say,
you view the changes as readability improvements anyway), but imo the
interpretation needs settling on no matter what. In fact even for these
two patches it may affect what their descriptions ought to say (would
be nice imo to avoid permanently recording potentially misleading
information by committing as is). And of course clarity would help
dealing with future instances that might appear. I take it you realize
that if someone had submitted a patch adding code similar to the
original forms of what's being altered here, it would be relatively
unlikely for a reviewer to spot the issue. IOW here we're making
ourselves heavily dependent upon Eclair spotting (supposed) issues,
adding extra work and delays for such changes to go in.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 06:48:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 06:48:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808602.1220528 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svtAK-00081Y-2S; Wed, 02 Oct 2024 06:48:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808602.1220528; Wed, 02 Oct 2024 06: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 1svtAJ-00081Q-Se; Wed, 02 Oct 2024 06:48:51 +0000
Received: by outflank-mailman (input) for mailman id 808602;
 Wed, 02 Oct 2024 06:48: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svtAI-00080W-KE
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 06:48:50 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5f8b369e-808a-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 08:48:47 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a8d6d0fe021so1082333966b.1
 for <xen-devel@lists.xenproject.org>; Tue, 01 Oct 2024 23:48:47 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c27d42e3sm819235466b.82.2024.10.01.23.48.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 01 Oct 2024 23:48:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f8b369e-808a-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727851726; x=1728456526; 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=FlWFXIjnCDKjAtOuPtExjYh4CMIMeQIKG+6CBXp26bU=;
        b=aoVxyT/KJzmyyqccsgN/x6FLibRxblsn4GbF6yX996+Rx5+sD6qZk4Xt0dEQCrRP6+
         luhInC3VIQxTCcIdLQ8WoGTfVhaT9xGjIbIbUUDAWhj6oA4RLmxbGsVOgWc7LFKh8mqU
         Ezv2z8ZJp3DpJ56oi26SQ/BeDIzMBkpM3WDFEZghdSNnMhpjys/FU5xAYH/YFSmA2ngN
         8NzvwR77J4OGMC1rwKwwC3Zt6xUJkCJY+Hv94M78Q+ogZcceyx1GI3J2Z7WCjhzOib9a
         QrnMjNfkdSmFK2rSN7xg3MymfjqGzloH+gQfeGMSLLOLGJwinBBIWOewb3/ZOT9304YB
         U8ag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727851726; x=1728456526;
        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=FlWFXIjnCDKjAtOuPtExjYh4CMIMeQIKG+6CBXp26bU=;
        b=xC5x5R87IMoz82B6H5l1aps+CH6oJMp5zW6AP/1WI5aTqRMCsLa3HXSzaf1mfPK3lk
         N/CHcCINQeYZeFe4YWBR5xPyPirx+Fusd0qsuQCSwgpbBACkE12YxF+4n6ErtI/ttkOy
         Rkl3my9LK8gcLmVnNpp7jZeVjwAw7m0QmcwFoKWn1edykuGWq1NIXJWSm2oMBaKlCqyh
         CbbLUFGHIgfhxpbY87Ep7Ag5yp9jkMhf8ZH+IXZw9Xflocq3sx8PY76+bOpzBeI0GWEN
         KABy7wl35D8qa0695ZGdqg0q1d2WUfnGy2r76TmAYxbVmP2ZkgXzTRxnw1rK+TvRYSOy
         Soig==
X-Forwarded-Encrypted: i=1; AJvYcCWpyI0HGd6c4C+ZdM47uifP4GNcLvAjNZll2svk0qqMDe8dekZZFYwjKOQBzm75toY7TCF+aPYAu5w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyBad7nOoCRpaIUqQWOC+kW14yEKZCQbz4sAQxTTCcL0ZYRLzTM
	GucykMWOC4ymUni0u6+ubgvMSb9AMskQ4WZhNCb1Gu07fla0LQwUWAvOO0wJZw==
X-Google-Smtp-Source: AGHT+IFQKLmxoMIFt47Wl37195TQtKmR2mLHZ5RYvOLeuZEF4WZ84B3li2hma6M+knOfyi7oEhJvlw==
X-Received: by 2002:a17:907:9495:b0:a8a:9207:c4c1 with SMTP id a640c23a62f3a-a98f839e360mr169688366b.58.1727851725217;
        Tue, 01 Oct 2024 23:48:45 -0700 (PDT)
Message-ID: <a13f5f67-8ea7-44a5-ad44-7866786cdf50@suse.com>
Date: Wed, 2 Oct 2024 08:48:44 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 1/2] x86/boot: Rewrite EFI/MBI2 code partly in C
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <20241001102239.2609631-2-frediano.ziglio@cloud.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: <20241001102239.2609631-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 12:22, Frediano Ziglio wrote:
> No need to have it coded in assembly.
> Declare efi_multiboot2 in a new header to reuse between implementations
> and caller.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 06:54:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 06:54:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808606.1220536 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svtG0-00014s-Ia; Wed, 02 Oct 2024 06:54:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808606.1220536; Wed, 02 Oct 2024 06:54: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 1svtG0-00014l-G0; Wed, 02 Oct 2024 06:54:44 +0000
Received: by outflank-mailman (input) for mailman id 808606;
 Wed, 02 Oct 2024 06:54: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=rPwV=Q6=bugseng.com=roberto.bagnara@srs-se1.protection.inumbo.net>)
 id 1svtFy-00014f-Mx
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 06:54:43 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 329d921c-808b-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 08:54:41 +0200 (CEST)
Received: from [192.168.1.219] (unknown [151.29.43.51])
 by support.bugseng.com (Postfix) with ESMTPSA id 066084EE074C;
 Wed,  2 Oct 2024 08:54:39 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 329d921c-808b-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1727852080; bh=EFK1xSYGTFm+LmtERkuDouaDigxIhlgited0wBLzOis=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=B16YTrz3OVxhQ9fkhcvjrsme6hD+hOmDW5T+3WTFbSF1Bl/+gRQwr1KQHG6Y74DqW
	 tqB0vGA5qwejxqzLjYgzjEhnkI2fT7l6MHkS+TLSGPvaX5gua6Khx3XRSH7BpZ6WGH
	 CPmbyhFbTEBAN7kULiCtsLhOvK6QkFTH4vKKgIzgT8qdMLZj8ZNlW9HzZgOfBFEgzO
	 IYq0KovjdGLN4LgKS/egvi6rfGTediZs4IEKDpZRjXO6+WnCFr3rJwH5G+5KPa/sV9
	 uMylmL7ibXImdR0IhJUXf1RiRmkyNHwIP0mVAQsvg92IsPiDAYtgtymgHcP3JwudWz
	 YurnnknkaigCQ==
Message-ID: <2f51a8e7-4044-4a84-a541-100799a28012@bugseng.com>
Date: Wed, 2 Oct 2024 08:54:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
To: Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
 consulting@bugseng.com, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
 <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
 <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
 <alpine.DEB.2.22.394.2410011431360.451631@ubuntu-linux-20-04-desktop>
 <02833aad-d6f1-4ffa-8d4a-d8c31e9b0524@suse.com>
Content-Language: en-US
From: Roberto Bagnara <roberto.bagnara@bugseng.com>
In-Reply-To: <02833aad-d6f1-4ffa-8d4a-d8c31e9b0524@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2024-10-02 08:09, Jan Beulich wrote:
> On 01.10.2024 23:36, Stefano Stabellini wrote:
>> On Tue, 1 Oct 2024, Jan Beulich wrote:
>>> On 01.10.2024 07:25, Roberto Bagnara wrote:
>>>> On 2024-09-30 15:07, Jan Beulich wrote:
>>>>> On 30.09.2024 14:49, Federico Serafini wrote:
>>>>>> guest_handle_ok()'s expansion contains a sizeof() involving its
>>>>>> first argument which is guest_handle_cast().
>>>>>> The expansion of the latter, in turn, contains a variable
>>>>>> initialization.
>>>>>>
>>>>>> Since MISRA considers the initialization (even of a local variable)
>>>>>> a side effect, the chain of expansions mentioned above violates
>>>>>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
>>>>>> contain any expression which has potential side effect).
>>>>>
>>>>> I'm afraid I need to ask for clarification of terminology and alike here.
>>>>> While the Misra doc has a section on Persistent Side Effects in its
>>>>> Glossary appendix, what constitutes a side effect from its pov isn't
>>>>> really spelled out anywhere. Which in turn raises the question whether it
>>>>> is indeed Misra (and not just Eclair) which deems initialization a side
>>>>> effect. This is even more so relevant as 13.6 talks of only expressions,
>>>>> yet initializers fall under declarations (in turn involving an expression
>>>>> on the rhs of the equal sign).
>>>>>
>>>>> All the same of course affects patch 2 then, too.
>>>>
>>>> MISRA C leaves the definition of "side effect" to the C Standard.
>>>> E.g., C18 5.1.2.3p2:
>>>>
>>>>     Accessing a volatile object, modifying an object, modifying a file,
>>>>     or calling a function that does any of those operations are all
>>>>     side effects,[omitted irrelevant footnote reference] which are
>>>>     changes in the state of the execution environment.
>>>>
>>>> The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
>>>> indirectly confirms that initialization is always a side effect.
>>>
>>> Hmm, that's interesting: There's indeed an example with an initializer
>>> there. Yet to me the text you quote from the C standard does not say
>>> that initialization is a side effect - it would be "modifying an
>>> object" aiui, yet ahead of initialization being complete the object
>>> doesn't "exist" imo, and hence can be "modified" only afterwards.
>>
>> I feel it's becoming a bit too philosophical. Since there's some room
>> for interpretation and only two violations left to address, I believe
>> it's best to stick with the stricter interpretation of the definition.
>> Therefore, I'd proceed with this series in its current form.
> 
> Proceeding with the series in its current form may be okay (as you say,
> you view the changes as readability improvements anyway), but imo the
> interpretation needs settling on no matter what. In fact even for these
> two patches it may affect what their descriptions ought to say (would
> be nice imo to avoid permanently recording potentially misleading
> information by committing as is). And of course clarity would help
> dealing with future instances that might appear. I take it you realize
> that if someone had submitted a patch adding code similar to the
> original forms of what's being altered here, it would be relatively
> unlikely for a reviewer to spot the issue. IOW here we're making
> ourselves heavily dependent upon Eclair spotting (supposed) issues,
> adding extra work and delays for such changes to go in.

You can do two things to obtain a second opinion:

1) Use the MISRA forum (here is the link to the forum
    section devoted to the side-effect rules of MISRA C:2012
    and MISRA C:2023 (https://forum.misra.org.uk/forumdisplay.php?fid=168).
    The MISRA C Working Group will, in due course, provide
    you with an official answer to your questions about what,
    for the interpretation of Rule 13.6, has to be considered
    a side effect.

2) Reach out to your ISO National Body and try to obtain
    an official answer from ISO/IEC JTC1/SC22/WG14 (the
    international standardization working group for the
    programming language C) to your questions about what the
    C Standard considers to be side effects.

Kind regards,

    Roberto

Roberto Bagnara, Ph.D.

Software Verification Expert and Evangelist, BUGSENG (http://bugseng.com)
Professor of Computer Science, University of Parma
Member, ISO/IEC JTC1/SC22/WG14 - C Standardization Working Group
Member, MISRA C Working Group


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 07:13:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 07:13:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808621.1220579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svtXx-0004g3-Bw; Wed, 02 Oct 2024 07:13:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808621.1220579; Wed, 02 Oct 2024 07:13: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 1svtXx-0004fw-9G; Wed, 02 Oct 2024 07:13:17 +0000
Received: by outflank-mailman (input) for mailman id 808621;
 Wed, 02 Oct 2024 07:13: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svtXv-0004fn-GR
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 07:13:15 +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 ca23618e-808d-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 09:13:14 +0200 (CEST)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2fad6de2590so32356321fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 00:13:14 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299aca5sm822545666b.224.2024.10.02.00.13.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 00:13:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca23618e-808d-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727853194; x=1728457994; 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=GiX/v88DnQtK6zdQ+BL0d3mjMtINKCgQD8boqnd4tE4=;
        b=WdAg52U16p8YPjE37Oa8mVOg6eoQhHFMNIUPOThYm4fejr900TZX4MO9Y9W762pDr/
         dqaMq8rnHm3EyfTZE2gFUQsBpRA30abryiwsKYDZcv40T6GwI5sBclmBvvGbwYTrG/+m
         lbZEcNn8dLxm1BkKr08ntgecKlsDLu5v3zh8acuY77NceXUtFC/FMyY5s4BKKfg6pU41
         Yf/dlhnBHMg0NLqS09/9wuMj7EYmuE7f7j0VRcQG1Vcwai1GEMDYFsitZIijEe8p2/OM
         SFYHp3KG/55fAD68IvYZ6pKvsrrlOtM80AMm+lTmF3Q83zsApmDCvtXMwN4doRSvXWNA
         Y/Xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727853194; x=1728457994;
        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=GiX/v88DnQtK6zdQ+BL0d3mjMtINKCgQD8boqnd4tE4=;
        b=GeZWiR4h0Sf5GGSkmb+HWhHSmEiL4PazFyzM0yNB3nuZKZzHpbqhyM5kgPYaX0uvLN
         8GXQi/bOcASPtndnqZ7TR8uQFsCL3HrpmqEp9BVtd2CQ2FFeSkpClAOMmSzI26Ut/4ge
         vjAHwpzdjoVMJKb99t4JmHiGn3HTSKYmjJk6FHhhdKzufYCFSIXqtmGcF5ud2aRtkwV5
         JLfxfKUBTinHIUA83xpjVQHuSc/WtZn4EQzO6pg9y9ZdhmrwZWc05UjVWV7G9CZqE0wG
         T2/Z9Q4N86I6D2zqJEHn03ttiVfgLFhs1ZIJ9jvatFPuFwhJDutT/L19EFepPgrVhyn2
         iQkw==
X-Gm-Message-State: AOJu0Yw71gqkieexAW45ZuZD6gA0GQZAJ48nrECHcSQ/FGgXtcfkofZm
	P7rBgUYEaaYAXXX8aqQXsC2JAABqtZQBt8T7cx3B0UaFOme86lHnCzqZT8xuJlAqbHK5EwTQd8s
	=
X-Google-Smtp-Source: AGHT+IEVfuctcUZTyYMDMNLWyveaQtojzbMJOtuS4RsbeOQLkQic3v0qoT1Ct0tYQn6M+yHeBiThFg==
X-Received: by 2002:a2e:9907:0:b0:2fa:bd56:98c5 with SMTP id 38308e7fff4ca-2fae10a628cmr15409081fa.33.1727853193507;
        Wed, 02 Oct 2024 00:13:13 -0700 (PDT)
Message-ID: <bf96d727-77d1-4aa3-b81b-3fc32e602fe0@suse.com>
Date: Wed, 2 Oct 2024 09:13:12 +0200
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>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "consulting@bugseng.com" <consulting@bugseng.com>,
 Alessandro Zucchelli <alessandro.zucchelli@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] CODING_STYLE: header file guard naming rules
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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

Provide a (small) set of rules on how header guard identifiers ought to
be spelled and what precautions ought to be taken to avoid name
collisions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>

--- a/CODING_STYLE
+++ b/CODING_STYLE
@@ -153,6 +153,48 @@ E.g. timer-works.
 Note that some of the options and filenames are using '_'. This is now
 deprecated.
 
+Header inclusion guards
+-----------------------
+
+Unless otherwise specified, all header files should include proper
+guards to prevent multiple inclusions. The following naming conventions
+apply:
+
+- Guard names are derived from directory path underneath xen/ and the
+  actual file name.  Path components are separated by double
+  underscores.  Alphabetic characters are converted to upper case.  Non-
+  alphanumeric characters are replaced by single underscores.
+- Certain directory components are omitted, to keep identifier length
+  bounded:
+  - the top level include/,
+  - architecture-specific private files' arch/,
+  - any architecture's arch/<arch>/include/asm/ collapses to
+    ASM__<ARCH>__.
+
+For example:
+
+- Xen headers: XEN__<filename>_H
+  - include/xen/something.h -> XEN__SOMETHING_H
+
+- asm-generic headers: ASM_GENERIC__<filename>_H
+  - include/asm-generic/something.h -> ASM_GENERIC__SOMETHING_H
+
+- arch-specific headers: ASM__<architecture>__<subdir>__<filename>_H
+  - arch/x86/include/asm/something.h -> ASM__X86__SOMETHING_H
+
+- Private headers: <dir>__<filename>_H
+  - arch/arm/arm64/lib/something.h -> ARM__ARM64__LIB__SOMETHING_H
+  - arch/x86/lib/something.h -> X86__LIB__SOMETHING_H
+  - common/something.h -> COMMON__SOMETHING_H
+
+Note that this requires some discipline on the naming of future new
+sub-directories: There shouldn't be any other asm/ one anywhere, for
+example.  Nor should any new ports be named the same as top-level
+(within xen/) directories.  Which may in turn require some care if any
+new top-level directories were to be added.  Rule of thumb: Whenever
+adding a new subdirectory, check the rules to prevent any potential
+collisions.
+
 Emacs local variables
 ---------------------
 


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 07:41:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 07:41:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808628.1220588 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svtzH-0000h1-Fb; Wed, 02 Oct 2024 07:41:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808628.1220588; Wed, 02 Oct 2024 07:41: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 1svtzH-0000gu-D7; Wed, 02 Oct 2024 07:41:31 +0000
Received: by outflank-mailman (input) for mailman id 808628;
 Wed, 02 Oct 2024 07:41: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svtzG-0000go-Uu
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 07:41:30 +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 bcf1b238-8091-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 09:41:30 +0200 (CEST)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-5399651d21aso2663791e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 00:41:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2776d92sm815990766b.29.2024.10.02.00.41.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 00:41:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bcf1b238-8091-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727854889; x=1728459689; 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=W5CHaMSAiL5AEl471kqqmTQg9/r6lFXAI5Aki2hX8i4=;
        b=JoSphJNJjP6rZXngSYoXTQaPWWXR00Jz0V9iDVSvDGotlTE/ttVPogmTGuejwGQMOC
         A0r01jX1hfMBk28GM3vBs01l45it6hJWVW07FnSMVaIUt45eCPK1pNunXG+FJklBXG/f
         6tl4+3BM36elsEWyaZ+GxrJ5glm2ow/qOCdF9qIzDodA5mnLTdIfSOC5UgKrO5N1jUgZ
         O0skjRrPJHLQZ8j9nrXmsCnA6T+yygw3DVYuU7WnIYfkrp21NqcEnUNuolWdp1K0YQ4T
         Kb4ne63jKmXtqVD2X0oIIFOY7relSwj4ae8Q+cmg3UAh+3CL67tehmSHh5DpAUBKsRXu
         FO1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727854889; x=1728459689;
        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=W5CHaMSAiL5AEl471kqqmTQg9/r6lFXAI5Aki2hX8i4=;
        b=SLTQNp9ZUAFae7Q+3XjPBiLIg+3iNZPryyYd4cVuloc/tR1mKsIa0KfXUCBryEmXqn
         PpkYQ5B/Fwe88rMmfzwrsAzznDtK99pKBY4YZ6RR2X15j8ESIiI5W1Q/Ga1RYVAIWMkV
         AMyqOBuKr/Xka3cJ2CnZ63562/r96V1x8MWGBACu9waC3GJ9RYoxNJR0EObDqZw5Erup
         AkAsAGi/w8wH9n2JHuj0T7hDvvE7piktL5THUTj0o6K33GMn6Kj8DHZ/9wmkMpnJMG2d
         15uRmQRKRqozqMieQ0Ymnoir2UyTqAvzHcwCJtbkWp5pdsjAVQim0IlF3VOUoGZ8eatO
         fyyg==
X-Gm-Message-State: AOJu0Yx7CSimLwPla1YCZa6Dyq44DGzQ88kLDKZ9aT8fH5Bn+3MpLK9B
	qskjlftpIKo5f3zslbrASACFP1IcC2BPZO2QkBqhLPpye03QNw34RLFc8lgaRQQgmBDqvqX4OeM
	=
X-Google-Smtp-Source: AGHT+IERdqb9qdHStl8or4ETA8QyqQH0N09K/GXe6HtT9FCs2ZdArU+R3G+yiOCIJZXE2u5kWS7jGQ==
X-Received: by 2002:a05:6512:1245:b0:538:9b5d:9885 with SMTP id 2adb3069b0e04-539a0601d0amr1167689e87.0.1727854889539;
        Wed, 02 Oct 2024 00:41:29 -0700 (PDT)
Message-ID: <26cfd90a-91f2-4bf4-9607-8ab6c7823048@suse.com>
Date: Wed, 2 Oct 2024 09:41:28 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/ACPI: annotate assembly data with type and size
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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

Further use the generic framework from xen/linkage.h. While there drop
excess alignment and move to .bss.

Requested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Of course alongside ASM_INT() we could introduce ASM_QUAD() and
ASM_QUAD_LOCAL() (only the latter needed right here) to aid readability.
Thoughts?

--- a/xen/arch/x86/acpi/wakeup_prot.S
+++ b/xen/arch/x86/acpi/wakeup_prot.S
@@ -1,3 +1,5 @@
+#define DATA_FILL 0 /* For the .bss contributions at the bottom. */
+
 #include <asm/asm_defns.h>
 #include <asm/msr-index.h>
 #include <asm/page.h>
@@ -134,13 +136,20 @@ LABEL(s3_resume)
         ret
 END(do_suspend_lowlevel)
 
-.data
-        .align 16
+        .bss
 
-saved_rsp:      .quad   0
-saved_cr0:      .quad   0
+DATA_LOCAL(saved_rsp, 8)
+        .quad   0
+END(saved_rsp)
+DATA_LOCAL(saved_cr0, 8)
+        .quad   0
+END(saved_cr0)
 #ifdef CONFIG_XEN_SHSTK
-saved_ssp:      .quad   0
+DATA_LOCAL(saved_ssp, 8)
+        .quad   0
+END(saved_ssp)
 #endif
 
+        .data
+
 ASM_INT(saved_magic, 0x9abcdef0)


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 08:27:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 08:27:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808635.1220599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svuh5-000781-Rd; Wed, 02 Oct 2024 08:26:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808635.1220599; Wed, 02 Oct 2024 08:26: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 1svuh5-00077u-OI; Wed, 02 Oct 2024 08:26:47 +0000
Received: by outflank-mailman (input) for mailman id 808635;
 Wed, 02 Oct 2024 08: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=Tl1C=Q6=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svuh4-00077o-Ty
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 08:26:46 +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 0efea913-8098-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 10:26:44 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-5389e24a4d1so6410499e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 01:26:44 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5389fd54e80sm1848077e87.43.2024.10.02.01.26.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 01:26:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0efea913-8098-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727857604; x=1728462404; 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=E+zDyLfjwAZ8Q/13bnws/oxcrTUQAX3DXSXjHlzhBso=;
        b=AvuHlXHLnc1M5F00CkuskHLXTeU45uNUP2FaMV7rtZs4w4tOJgKPLhN2j4DiFM9PzH
         hRnizW0RWpOwf53UQHFDB3YlW8jzkheZgSmf6a1TA/i9P90RZqUF2Ie1h1fjUFPSfXav
         fNGELD4Sp/jQyH06Adu+vLGHLhxMZvcRJgybctlWINj2ZceJWc99mo7gS5lIC/OgqEbj
         lYC/7ZLiHWiWq3kfOgLujqE549u/y1xLMTImVhb/JdkVr+TF/TdzGNtWQpShvJ9YwF2z
         KN2GOT6FA1hpYEAhwm0pNYtjvjPnMmkl2ziD9iCryTU/bM+yrwdsup/7Juw4CqtU/g9/
         WrPQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727857604; x=1728462404;
        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=E+zDyLfjwAZ8Q/13bnws/oxcrTUQAX3DXSXjHlzhBso=;
        b=RDOjhN6wigQvUNmGD/pAdCy/SMEmBhNQ+EtQuVpzqrsmdCBe355N4ImBOU4ketrZER
         9brLd8lMczS/gL9ivtl9vgB3Opb3mcCZzasf0fv/3KLHd63HRnn0Ole7rFC7StRmveUP
         Heyu8eT580Z4re9quukIWFVESDWvTs/5Ee4/dLqSkUhKoqsXjOBKRHTeLvBu2V3HH9SZ
         vxWU7V5IxRV0BqAB7RY+3nGmOatJinjLs0HBYV885yK9LF29/tPG76c5vSaTKiQENefX
         ikIwgz7iJwWaLE5DoFo19JH1B6LlR4iZDWHHU+u1wxRne0csBOcURmdQJ7ac70LYeph5
         GT5g==
X-Forwarded-Encrypted: i=1; AJvYcCWyTt83N33BJZ2/tkw24wEuENHZjJ8QEZ7szjfnDqt5XTXaTt72LVJOUuk6gKhtV1W1eaiHPzkvZvo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy4EdByiktSjyUMXj2voRzRJvY74zNdTbg8pHYDAxl2z9tBkho0
	W1o2abNMn//iQTFabsckrE4qS/W5lZHb1VIm6oxt8ACD3YdwRE0N
X-Google-Smtp-Source: AGHT+IHt87KSLVJ3w9ZYoEPF8AyowUnlKq/KglRob5/YaQyXpDBjlAm839otyfgWpQqody4xclBXhw==
X-Received: by 2002:a05:6512:114c:b0:539:8aec:ecd3 with SMTP id 2adb3069b0e04-539a07a8384mr1240051e87.55.1727857603764;
        Wed, 02 Oct 2024 01:26:43 -0700 (PDT)
Message-ID: <062739b1537c64690cd969b3262d5b677cf15ac4.camel@gmail.com>
Subject: Re: [PATCH v1 1/2] xen/riscv: initialize bootinfo from dtb
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 02 Oct 2024 10:26:42 +0200
In-Reply-To: <18cfcda5-d2b4-47d6-9f5e-a240e46661c1@suse.com>
References: <cover.1727708956.git.oleksii.kurochko@gmail.com>
	 <f04a3cc3e543298f63845728c599410258a336ca.1727708956.git.oleksii.kurochko@gmail.com>
	 <18cfcda5-d2b4-47d6-9f5e-a240e46661c1@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-01 at 17:54 +0200, Jan Beulich wrote:
> On 30.09.2024 17:13, Oleksii Kurochko wrote:
> > --- a/xen/arch/riscv/setup.c
> > +++ b/xen/arch/riscv/setup.c
> > @@ -28,6 +28,7 @@ void __init noreturn start_xen(unsigned long
> > bootcpu_id,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 paddr_t dtb_addr)
> > =C2=A0{
> > =C2=A0=C2=A0=C2=A0=C2=A0 struct bootmodule *xen_bootmodule;
> > +=C2=A0=C2=A0=C2=A0 size_t fdt_size;
> > =C2=A0
> > =C2=A0=C2=A0=C2=A0=C2=A0 remove_identity_mapping();
> > =C2=A0
> > @@ -54,6 +55,9 @@ void __init noreturn start_xen(unsigned long
> > bootcpu_id,
> > =C2=A0
> > =C2=A0=C2=A0=C2=A0=C2=A0 BUG_ON(!xen_bootmodule);
> > =C2=A0
> > +=C2=A0=C2=A0=C2=A0 fdt_size =3D boot_fdt_info(device_tree_flattened, d=
tb_addr);
> > +=C2=A0=C2=A0=C2=A0 BUG_ON(!fdt_size);
> > +
> > =C2=A0=C2=A0=C2=A0=C2=A0 printk("All set up\n");
> > =C2=A0
> > =C2=A0=C2=A0=C2=A0=C2=A0 machine_halt();
>=20
> Looks plausible, and judging from Arm code there'll be an actual use
> of fdt_size
> down the road. Or else I would have asked what use the local variable
> is. In
> fact, again from looking at Arm code, I now question the need for the
> xen_bootmodule local var - that has no further use in Arm, and hence
> that's
> likely going to be the case for RISC-V, too.
fdt_size and xen_bootmodule are used only for BUG_ON() now and in
future ( the same as you mentioned as in Arm ). They could be dropped.
I'll do that in the next patch version.

>=20
> However, may I ask that you limit the dependency trees in what you
> submit? This
> series depends on another series, which in turn depends on yet
> something else,
> all not yet committed. That's getting unwieldy, I'm afraid.
Sure, sorry for that. I will limit the depedency trees in future.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 09:07:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 09:07:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808650.1220614 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svvKY-0004Xa-Td; Wed, 02 Oct 2024 09:07:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808650.1220614; Wed, 02 Oct 2024 09:07: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 1svvKY-0004XT-R0; Wed, 02 Oct 2024 09:07:34 +0000
Received: by outflank-mailman (input) for mailman id 808650;
 Wed, 02 Oct 2024 09:07: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svvKX-0004XN-Fo
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 09:07:33 +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 c123f590-809d-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 11:07:31 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3e8a74so3507126a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 02:07:31 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88248af31sm7337246a12.74.2024.10.02.02.07.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 02:07:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c123f590-809d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727860050; x=1728464850; 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=mDbX1tcOTi5+2mMgw3mQl0d2LjdWd8gqImlPmCC0xjI=;
        b=CYhj3zbk13Y8AuREF4Be9IahOfvFsYGGFWaSOrDKUyfINXdZah/441yUJHtbDo/eyX
         AQJU2WZDREstotzJ07vpbdB5mSmpfwVSsC/3jOt50mmAVaPMPkOF6tVtrDlzEu+vlLBx
         jsHiRjzLTwANzDmxAHq9FCOeSY1z9KuHdcS2M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727860050; x=1728464850;
        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=mDbX1tcOTi5+2mMgw3mQl0d2LjdWd8gqImlPmCC0xjI=;
        b=l7CMUpi2Ud7TThzsw5207/xJgaWF4ZieZWjdqufUCiucrng7NyvqiZ4MjAugVTIKv3
         0UwR9WJdUhvTIPIIwzONv1267q9weftKBRNlbpLQTbZJX9JXBH2MbYTwe0k5gtxX6dC6
         EtmM15H93m6OkKtJh9wwkBk0RwErI77sMHiu/DRo/2S8mkXu0OmC4Pr9mhKOJOYb/EBr
         ZOjLyHyu8y4B5Ec0d07VspsfzKhfZEazHTLKwmCLrGl85yf0XxhHjBOXeBjQ5FIVRuOc
         jDswOFPJ5+i8xciEsjo+/UIeMg9/90PFdHa5bdRQVo912QlaK/4anVWpVSAbs6+00o9O
         3V1g==
X-Forwarded-Encrypted: i=1; AJvYcCW6csEonS9IAYx7tCVvw/cNplm7k/qFu4WrbfL+eZkUqTQ9ISr3ImRzs+g3vx6WgLMPtxjfABtkw/g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzTwGV8KdNptGzeODBXwppFHmSuzhrJIUM2XEE77J8dm6LvNnj5
	3CP/02QoM6cCfSqkR/zlS4jGu0AoQO4avqVfRZ+iwIxVBXhty7nAjNeC8QBo08M=
X-Google-Smtp-Source: AGHT+IG7lijoTDKil6g7OwpN9vTvC9NjjwBrddhPtSj58gMvu4Lk1y4bypt4UFoedNf4aVouepurIA==
X-Received: by 2002:a05:6402:4343:b0:5c8:8e62:9d86 with SMTP id 4fb4d7f45d1cf-5c8b1a34d3amr1902571a12.16.1727860050552;
        Wed, 02 Oct 2024 02:07:30 -0700 (PDT)
Message-ID: <d3fbcc9a-b85c-4cde-8559-e726670dbedb@citrix.com>
Date: Wed, 2 Oct 2024 10:07:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/ACPI: annotate assembly data with type and size
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <26cfd90a-91f2-4bf4-9607-8ab6c7823048@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <26cfd90a-91f2-4bf4-9607-8ab6c7823048@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02/10/2024 8:41 am, Jan Beulich wrote:
> Further use the generic framework from xen/linkage.h. While there drop
> excess alignment and move to .bss.
>
> Requested-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Of course alongside ASM_INT() we could introduce ASM_QUAD() and
> ASM_QUAD_LOCAL() (only the latter needed right here) to aid readability.
> Thoughts?

Honestly, ASM_INT() hiding a .long is confusing enough already.

ASM_C_{INT,LONG}() wouldn't be as bad.  At least they're clear about
being a particular type in another language.

> --- a/xen/arch/x86/acpi/wakeup_prot.S
> +++ b/xen/arch/x86/acpi/wakeup_prot.S
> @@ -1,3 +1,5 @@
> +#define DATA_FILL 0 /* For the .bss contributions at the bottom. */
> +

I really feel that here is the wrong place for this to live.

Why isn't it in xen/linkage.h?  When is data typically padded with
anything other than 0's?

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 09:14:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 09:14:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808653.1220623 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svvR8-000648-J3; Wed, 02 Oct 2024 09:14:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808653.1220623; Wed, 02 Oct 2024 09:14: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 1svvR8-000641-GW; Wed, 02 Oct 2024 09:14:22 +0000
Received: by outflank-mailman (input) for mailman id 808653;
 Wed, 02 Oct 2024 09:14: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svvR7-00063v-44
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 09:14:21 +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 b4bc5da1-809e-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 11:14:19 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c88b5c375fso5279031a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 02:14:19 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88240bcb3sm7320726a12.35.2024.10.02.02.14.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 02:14:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b4bc5da1-809e-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727860459; x=1728465259; 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=Es+cx9QAvki3uwZVvw/d1lfPnyI3DqKr0wQF1TFNloE=;
        b=IDErZy7EIqnIyCm2SRyI/+11tvSztXZAOQ4iqABC9Z6z8b9d9vpVo0fltHP3CiCthu
         FhFAtnc3Y3DHika63RDvdLryIy9Qvk+5WvZGE2wWIoKj2xMLtPLqkiZRdaEgcb65gvjb
         KtoRsgE1JBWGlHwPk5KRAqZZzCvnXhqnCYjkrI0ot5E6MpVBRNVDLAY25GPS2W/Fh+2s
         MnsJ3rUbftEmsNMdWsW/PsTS5WqkVG5ZWoSsFJQ7HREYU1hE+0xKWvatNdv04SOSF0lN
         PcYZRwk4gHM21neTgO7CYXio4mo+v17cht6feyDZurytWjumiC2RU4lQiekBPUxPEbsW
         RZxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727860459; x=1728465259;
        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=Es+cx9QAvki3uwZVvw/d1lfPnyI3DqKr0wQF1TFNloE=;
        b=v8oNfnpE/cAanM8Kl1O69v55yGy2qzeCyGRjOhsowS2ntbmz27ckzVzsfg5ekpkCaL
         5tCV0++PwRxGer+rrOG5+AzqLWedRlwuAeomBsQBNTpCx8zCWS0ktEavkp6wqNFsVMMs
         D1xHGydbS7sFkTMLRL3wwalybJcKYQN8F/3LSTGKNrwYvA9im8xxQUNigd5VHSFa9GcS
         mbgJUn3aZcRst+TD0Vf7mPOLTTst52geAeIbUPUgpjghrWidqecPXgunTAhseBGqUUXF
         LLxGnVtyedJE0XP8mJn0/F/tu8OcuBqHnfxQZUVIMUkDPp2xd8pZ4hOgIcV3LjoddQJV
         wTqg==
X-Forwarded-Encrypted: i=1; AJvYcCVoCVXxxMnGbkbPXfcRZVErTDun6inBz585ceMB3AioYbLrtfAQRKQLcJ1uUw1FSIXvNZGBGgRdW8A=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzyGDQuvo3tI0vSEIysv319bsgnUAp6X4nP2HIkrQ1SvvRbtDQm
	pGJNr8i9GQ/ogmIDqdodtGlc6iAh8lgWF/IFxAhKiKXJ6i13gp7LEoOvpWQH8w==
X-Google-Smtp-Source: AGHT+IFiIUyNq73VSAnR1UvI4/HOpH1YhKIqXig370+VQJsgt1sR1QRNlE5QlDKBS1rOy57F2c43RA==
X-Received: by 2002:a05:6402:1d55:b0:5c4:4e2b:7553 with SMTP id 4fb4d7f45d1cf-5c8b191d271mr1949151a12.10.1727860459159;
        Wed, 02 Oct 2024 02:14:19 -0700 (PDT)
Message-ID: <123070a3-0d45-4165-8343-a2fe7c235d0d@suse.com>
Date: Wed, 2 Oct 2024 11:14:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/ACPI: annotate assembly data with type and size
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <26cfd90a-91f2-4bf4-9607-8ab6c7823048@suse.com>
 <d3fbcc9a-b85c-4cde-8559-e726670dbedb@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: <d3fbcc9a-b85c-4cde-8559-e726670dbedb@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02.10.2024 11:07, Andrew Cooper wrote:
> On 02/10/2024 8:41 am, Jan Beulich wrote:
>> Further use the generic framework from xen/linkage.h. While there drop
>> excess alignment and move to .bss.
>>
>> Requested-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> Of course alongside ASM_INT() we could introduce ASM_QUAD() and
>> ASM_QUAD_LOCAL() (only the latter needed right here) to aid readability.
>> Thoughts?
> 
> Honestly, ASM_INT() hiding a .long is confusing enough already.
> 
> ASM_C_{INT,LONG}() wouldn't be as bad.  At least they're clear about
> being a particular type in another language.

I don't think the _C_ would add much; we all know C is the language Xen
is written in. ASM_LONG() / ASM_C_LONG() would not be generalizable, i.e.
couldn't be put in xen/linkage.h without arch customization, as that can
neither expand uniformly to .long nor to .quad. It's all solvable, but
would be getting involved.

>> --- a/xen/arch/x86/acpi/wakeup_prot.S
>> +++ b/xen/arch/x86/acpi/wakeup_prot.S
>> @@ -1,3 +1,5 @@
>> +#define DATA_FILL 0 /* For the .bss contributions at the bottom. */
>> +
> 
> I really feel that here is the wrong place for this to live.
> 
> Why isn't it in xen/linkage.h?  When is data typically padded with
> anything other than 0's?

As per what we currently have, the default data padding is ~0. Personally
I consider this marginally better than 0, but it could of course be
changed.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 09:57:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 09:57:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808661.1220634 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svw6K-0003ef-K4; Wed, 02 Oct 2024 09:56:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808661.1220634; Wed, 02 Oct 2024 09:56: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 1svw6K-0003eY-HN; Wed, 02 Oct 2024 09:56:56 +0000
Received: by outflank-mailman (input) for mailman id 808661;
 Wed, 02 Oct 2024 09:56: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 1svw6J-0003eO-2B; Wed, 02 Oct 2024 09:56: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 1svw6I-0005Ba-Kl; Wed, 02 Oct 2024 09:56: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 1svw6I-00065T-7t; Wed, 02 Oct 2024 09:56:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svw6I-0005v2-7Q; Wed, 02 Oct 2024 09:56: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=hjUiTj47aKY5zUMSSta5QBtzdixicVc3HtDXY+sZJ5E=; b=DVgsDWQinMnvgmpDHO/YW2cXnc
	ZGK1lnrrY0rlQM9ShbevPF/SnWrrqP7kJqvBSIJxJ8wTtGl14/eauHN7HB7L90nckDh/Mg8Uicgfc
	LO2NoK2yt+vQjNBwmroTMPVdwNjXl3OowKb7TeKKE09Kg9SPWScpFnwoj6qTMx0a+pc4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187934-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187934: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=cac73c45c4a9eaf81613260fb52bfc990e59bc0d
X-Osstest-Versions-That:
    ovmf=3297be20bb8f575feb79ef782bd1c41eeb2feced
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 09:56:54 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 cac73c45c4a9eaf81613260fb52bfc990e59bc0d
baseline version:
 ovmf                 3297be20bb8f575feb79ef782bd1c41eeb2feced

Last test of basis   187931  2024-10-02 03:13:38 Z    0 days
Testing same since   187934  2024-10-02 08:13:17 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Leif Lindholm <quic_llindhol@quicinc.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    


------------------------------------------------------------
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
   3297be20bb..cac73c45c4  cac73c45c4a9eaf81613260fb52bfc990e59bc0d -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 10:23:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 10:23:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808673.1220643 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svwWB-0007ZI-JP; Wed, 02 Oct 2024 10:23:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808673.1220643; Wed, 02 Oct 2024 10:23: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 1svwWB-0007ZB-Gs; Wed, 02 Oct 2024 10:23:39 +0000
Received: by outflank-mailman (input) for mailman id 808673;
 Wed, 02 Oct 2024 10:23: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=EZat=Q6=cloud.com=bernhard.kaindl@srs-se1.protection.inumbo.net>)
 id 1svwWA-0007Z5-VE
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 10:23:39 +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 6283a3dc-80a8-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 12:23:36 +0200 (CEST)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-42e7b7bef42so53497685e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 03:23:36 -0700 (PDT)
Received: from localhost ([185.68.248.203]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37cd56e665asm13574771f8f.64.2024.10.02.03.23.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 03:23:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6283a3dc-80a8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727864616; x=1728469416; 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=i3dytcXupu0AH5/QMew4Y81Jyx0J2onhJqoKwISlucU=;
        b=PJa5eqQwyU0GXaU2rBdon+t6Fp5UCzQWa7datvAKCwQRxQGeTuPJZGfzyLGK6bsJUk
         IFLwJiUlYjbUHkpDId/QnFgZu5DOXdYDafp460xtL1YnzTQbrc6FkhSRaVxeJMdEL5R9
         YSXw4D6iPJWr76omYZHHhRw+NWXtOHe6zBhwE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727864616; x=1728469416;
        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=i3dytcXupu0AH5/QMew4Y81Jyx0J2onhJqoKwISlucU=;
        b=aN9X84DraZyoAWzBWhlyYt+H+B1lI5+aIXtjHgxsrHVCtgVSgdjjPMZEqsZSsc/osc
         x9DvE4UL03iS3k6QJlqQTqc45mkdg6davhXIea7EqVlPbZLtacOstId73K76hY1enAlx
         fRuuQTu2Qs3Dq4dsJqWIgSaqj5tGwdNXVKdFZ1E0UEHePA8JMhekDx/ZI6Ynygb1lHBi
         g6lYHOXwbZBDE1h5DYckGs9RVZdGp9SIM+nQd9wMW5r4bOfrnO4TT18AZKot+Tr+MKH4
         0mrYxthWdVJz2jStG/JFrgajuyaHE2xqY86TYbumVPbeiXyKM5jkmcPza/OsM+oJ1sjw
         Y8Dg==
X-Gm-Message-State: AOJu0YxvYbkxf8Z8tPPfSLbDZayskWRITNtd4x0c0RFe8HEhY4rrZn5d
	ZeLLI5OZ4/IGri780bPzVUqENJu1RJCDvUe82QQplum4cfK361h4SFm+ZBOwn+pRiG9lulY/wfS
	W5iIQ0g==
X-Google-Smtp-Source: AGHT+IFsrmKU8Hk0QWiWtinn1M7qviASSXruqP9RnmywcZNdp9tsBShsj6R2k5quVL6Z85dR0eesyA==
X-Received: by 2002:a05:600c:19c6:b0:426:60b8:d8ba with SMTP id 5b1f17b1804b1-42f777ec6b3mr17487395e9.28.1727864615981;
        Wed, 02 Oct 2024 03:23:35 -0700 (PDT)
From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
X-Google-Original-From: Bernhard Kaindl <bernhardkaindl7@gmail.com>
To: xen-devel@lists.xenproject.org,
	Jan Beulich <jbeulich@suse.com>
Cc: Bernhard Kaindl <bernhard.kaindl@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2] NUMA: Introduce NODE_DATA->node_present_pages(RAM pages)
Date: Wed,  2 Oct 2024 12:23:31 +0200
Message-ID: <20241002102331.437048-1-bernhardkaindl7@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Bernhard Kaindl <bernhard.kaindl@cloud.com>

Changes in v2:
- Remove update of numainfo call, only calculate RAM for each node.
- Calculate RAM based on page boundaries, coding style fixes

Some admin tools like 'xl info -n' like to display the total memory
for each NUMA node. The Xen backend[1] of hwloc comes to mind too.

The total amount of RAM on a NUMA node is not needed by Xen internally:
Xen only uses NODE_DATA->node_spanned_pages, but that can be confusing
for users as it includes memory holes (can be as large as 2GB on x86).

Calculate the RAM per NUMA node by iterating over arch_get_ram_range()
which returns the e820 RAM entries on x86 and update it on memory_add().

Use NODE_DATA->node_present_pages (like in the Linux kernel) to hold
this info and in a later commit, find a way for tools to read it.

[1] hwloc with Xen backend: https://github.com/xenserver-next/hwloc/

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
---
 xen/arch/x86/x86_64/mm.c |  3 +++
 xen/common/numa.c        | 28 +++++++++++++++++++++++++++-
 xen/include/xen/numa.h   |  3 +++
 3 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index b2a280fba3..66b9bed057 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -1334,6 +1334,9 @@ int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm)
     share_hotadd_m2p_table(&info);
     transfer_pages_to_heap(&info);
 
+    /* Update the node's present pages (like the total_pages of the system) */
+    NODE_DATA(node)->node_present_pages += epfn - spfn;
+
     return 0;
 
 destroy_m2p:
diff --git a/xen/common/numa.c b/xen/common/numa.c
index 28a09766fa..1b0f8180a0 100644
--- a/xen/common/numa.c
+++ b/xen/common/numa.c
@@ -499,15 +499,41 @@ int __init compute_hash_shift(const struct node *nodes,
     return shift;
 }
 
-/* Initialize NODE_DATA given nodeid and start/end */
+/**
+ * @brief Initialize a NUMA node's NODE_DATA given nodeid and start/end addrs.
+ *
+ * This function sets up the boot memory for a given NUMA node by calculating
+ * the node's start and end page frame numbers (PFNs) and determining
+ * the number of present RAM pages within the node's memory range.
+ *
+ * @param nodeid The identifier of the node to initialize.
+ * @param start The starting physical address of the node's memory range.
+ * @param end The ending physical address of the node's memory range.
+ */
 void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end)
 {
     unsigned long start_pfn = paddr_to_pfn(start);
     unsigned long end_pfn = paddr_to_pfn(end);
+    unsigned long ram_start_pfn, ram_end_pfn;
+    unsigned int idx = 0;
+    int err;
+    paddr_t ram_start, ram_end;
 
     NODE_DATA(nodeid)->node_start_pfn = start_pfn;
     NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
 
+    /* Calculate the numer of present RAM pages within the node: */
+    NODE_DATA(nodeid)->node_present_pages = 0;
+    while ( (err = arch_get_ram_range(idx++, &ram_start, &ram_end)) != -ENOENT )
+    {
+        if ( err || ram_start >= end || ram_end <= start )
+            continue;  /* Not RAM (err != 0) or range is outside the node */
+
+        /* Add RAM that in the node's memory range (within start and end): */
+        ram_end_pfn = min(ram_end, end) >> PAGE_SHIFT;
+        ram_start_pfn = (PAGE_ALIGN(max(ram_start, start))) >> PAGE_SHIFT;
+        NODE_DATA(nodeid)->node_present_pages += ram_end_pfn - ram_start_pfn;
+    }
     node_set_online(nodeid);
 }
 
diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
index fd1511a6fb..c860f3ad1c 100644
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -71,6 +71,7 @@ extern nodeid_t *memnodemap;
 struct node_data {
     unsigned long node_start_pfn;
     unsigned long node_spanned_pages;
+    unsigned long node_present_pages;
 };
 
 extern struct node_data node_data[];
@@ -91,6 +92,7 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
 
 #define node_start_pfn(nid)     (NODE_DATA(nid)->node_start_pfn)
 #define node_spanned_pages(nid) (NODE_DATA(nid)->node_spanned_pages)
+#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
 #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn + \
                                  NODE_DATA(nid)->node_spanned_pages)
 
@@ -123,6 +125,7 @@ extern void numa_set_processor_nodes_parsed(nodeid_t node);
 extern mfn_t first_valid_mfn;
 
 #define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
+#define node_present_pages(nid) total_pages
 #define node_start_pfn(nid) mfn_x(first_valid_mfn)
 #define __node_distance(a, b) 20
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 10:25:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 10:25:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808678.1220654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svwYM-00086f-Vv; Wed, 02 Oct 2024 10:25:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808678.1220654; Wed, 02 Oct 2024 10: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 1svwYM-00086Y-TC; Wed, 02 Oct 2024 10:25:54 +0000
Received: by outflank-mailman (input) for mailman id 808678;
 Wed, 02 Oct 2024 10:25: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=dlN+=Q6=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1svwYM-00086S-4S
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 10:25:54 +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 b298abb4-80a8-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 12:25:52 +0200 (CEST)
Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com
 [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-589-OuKjrCFRPf-1wKQBz_-ajg-1; Wed, 02 Oct 2024 06:25:49 -0400
Received: by mail-wm1-f69.google.com with SMTP id
 5b1f17b1804b1-42cb6f3c476so49846455e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 03:25:49 -0700 (PDT)
Received: from [192.168.0.7] (ip-109-42-49-143.web.vodafone.de.
 [109.42.49.143]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-42f79ff92desm14912885e9.40.2024.10.02.03.25.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 03:25:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b298abb4-80a8-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1727864751;
	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=XMwMtz76lfJcPKySIzdnPKszxiHpDniIFN0UI66uwGE=;
	b=e6OhCbAA/jkESTbyBJN86dZTTD99WkoBrWBHTrv7g+JdLdLBvqgSyHRhGevRGA+8yuq6G1
	IFBlrCRDczN/C82Y8FaDmzNXIw6LRGSXr0I/usFugAAmRKyORcxg2nO9l4gq/915CRsOSq
	SgRI+u+3II25hawtCkK71hXOX5CtcI4=
X-MC-Unique: OuKjrCFRPf-1wKQBz_-ajg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727864748; x=1728469548;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :from: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=XMwMtz76lfJcPKySIzdnPKszxiHpDniIFN0UI66uwGE=;
        b=vcqs/EO88PDI51BOV5HRX1cBfPRi+a9/5HuoXdk5mO6mKvY5BZeLPLcphG62muvYyS
         3wHGmBgsaz0mYwN3mgT/tsvsNWLPYArmqh/fz7bO7+9fueMPa3krVlM2AA7BdSalNJmL
         TDuNfX814UkReuYRHRgPqupv4oAEe0ecj25yBBT9ztUwg4nriH7gKvcva+ZXiHGW0D2D
         nnRtJVsB3Hcx1RpOUI61cj+ucz/mT+oJX68XYq7sfTnRmfuVIh4lIDz/NgZGNFSG2gs+
         k4Rg8n0STu6hVzpkBiifx9hEEvcI7M8Dy/hftuVJxfGa6VdTanjsFRgV0j5DDF0/bVDs
         Cs2A==
X-Gm-Message-State: AOJu0YxMTBwGtx5XjxAQmiX9D0AIa4sBlH0Q1wuHzaGtkylHdWODh/VJ
	hV3Xz4UualWe5iyQdyrZ/PVGUhWBqE/BxTmYWUhD6PtpQ2DQVwWdjQ6pADcymJWcxTiokHhGWn9
	zTdkuOELnvWSmngutzlwhGeSbvTAB9YAluQoD9/s6mQ4kmI6kTt2ONhvOzKS1s8pfYufkF4sHsV
	U=
X-Received: by 2002:a05:600c:3b03:b0:42c:b63e:fea6 with SMTP id 5b1f17b1804b1-42f777ee31amr21694765e9.22.1727864748358;
        Wed, 02 Oct 2024 03:25:48 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IF+jLvOZbOcEN+T8mygG4Xp+1ksnZoFvPLzjm0Rx8NQIi1TBH5V/5NqSM0WWZG1ZJ6kX9tmgw==
X-Received: by 2002:a05:600c:3b03:b0:42c:b63e:fea6 with SMTP id 5b1f17b1804b1-42f777ee31amr21694565e9.22.1727864747907;
        Wed, 02 Oct 2024 03:25:47 -0700 (PDT)
Message-ID: <408f72f4-4d18-46e6-9e8a-89542acaa306@redhat.com>
Date: Wed, 2 Oct 2024 12:25:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] hw/xen: Remove deadcode
To: dave@treblig.org, sstabellini@kernel.org, anthony@xenproject.org,
 paul@xen.org, edgar.iglesias@gmail.com
Cc: xen-devel@lists.xenproject.org, qemu-devel@nongnu.org,
 QEMU Trivial <qemu-trivial@nongnu.org>
References: <20240917002212.330893-1-dave@treblig.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 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
In-Reply-To: <20240917002212.330893-1-dave@treblig.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 17/09/2024 02.22, dave@treblig.org wrote:
> From: "Dr. David Alan Gilbert" <dave@treblig.org>
> 
> xen_be_copy_grant_refs is unused since 2019's
>    19f87870ba ("xen: remove the legacy 'xen_disk' backend")
> 
> xen_config_dev_console is unused since 2018's
>    6d7c06c213 ("Remove broken Xen PV domain builder")
> 
> Remove them.
> 
> Signed-off-by: Dr. David Alan Gilbert <dave@treblig.org>
> ---
>   hw/xen/xen-legacy-backend.c         | 18 ------------------
>   hw/xen/xen_devconfig.c              |  8 --------
>   include/hw/xen/xen-legacy-backend.h |  5 -----
>   3 files changed, 31 deletions(-)
> 
> diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c
> index 5514184f9c..e8e1ee4f7d 100644
> --- a/hw/xen/xen-legacy-backend.c
> +++ b/hw/xen/xen-legacy-backend.c
> @@ -147,24 +147,6 @@ void xen_be_unmap_grant_refs(struct XenLegacyDevice *xendev, void *ptr,
>       }
>   }
>   
> -int xen_be_copy_grant_refs(struct XenLegacyDevice *xendev,
> -                           bool to_domain,
> -                           XenGrantCopySegment segs[],
> -                           unsigned int nr_segs)
> -{
> -    int rc;
> -
> -    assert(xendev->ops->flags & DEVOPS_FLAG_NEED_GNTDEV);
> -
> -    rc = qemu_xen_gnttab_grant_copy(xendev->gnttabdev, to_domain, xen_domid,
> -                                    segs, nr_segs, NULL);
> -    if (rc) {
> -        xen_pv_printf(xendev, 0, "xengnttab_grant_copy failed: %s\n",
> -                      strerror(-rc));
> -    }
> -    return rc;
> -}
> -
>   /*
>    * get xen backend device, allocate a new one if it doesn't exist.
>    */
> diff --git a/hw/xen/xen_devconfig.c b/hw/xen/xen_devconfig.c
> index 2150869f60..45ae134b84 100644
> --- a/hw/xen/xen_devconfig.c
> +++ b/hw/xen/xen_devconfig.c
> @@ -66,11 +66,3 @@ int xen_config_dev_vkbd(int vdev)
>       xen_config_dev_dirs("vkbd", "vkbd", vdev, fe, be, sizeof(fe));
>       return xen_config_dev_all(fe, be);
>   }
> -
> -int xen_config_dev_console(int vdev)
> -{
> -    char fe[256], be[256];
> -
> -    xen_config_dev_dirs("console", "console", vdev, fe, be, sizeof(fe));
> -    return xen_config_dev_all(fe, be);
> -}
> diff --git a/include/hw/xen/xen-legacy-backend.h b/include/hw/xen/xen-legacy-backend.h
> index 943732b8d1..e198b120c5 100644
> --- a/include/hw/xen/xen-legacy-backend.h
> +++ b/include/hw/xen/xen-legacy-backend.h
> @@ -50,10 +50,6 @@ void *xen_be_map_grant_refs(struct XenLegacyDevice *xendev, uint32_t *refs,
>   void xen_be_unmap_grant_refs(struct XenLegacyDevice *xendev, void *ptr,
>                                uint32_t *refs, unsigned int nr_refs);
>   
> -int xen_be_copy_grant_refs(struct XenLegacyDevice *xendev,
> -                           bool to_domain, XenGrantCopySegment segs[],
> -                           unsigned int nr_segs);
> -
>   static inline void *xen_be_map_grant_ref(struct XenLegacyDevice *xendev,
>                                            uint32_t ref, int prot)
>   {
> @@ -70,6 +66,5 @@ static inline void xen_be_unmap_grant_ref(struct XenLegacyDevice *xendev,
>   void xen_config_cleanup(void);
>   int xen_config_dev_vfb(int vdev, const char *type);
>   int xen_config_dev_vkbd(int vdev);
> -int xen_config_dev_console(int vdev);
>   
>   #endif /* HW_XEN_LEGACY_BACKEND_H */

Reviewed-by: Thomas Huth <thuth@redhat.com>



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 10:27:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 10:27:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808685.1220664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svwZS-0000Xn-C5; Wed, 02 Oct 2024 10:27:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808685.1220664; Wed, 02 Oct 2024 10:27: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 1svwZS-0000Xg-9A; Wed, 02 Oct 2024 10:27:02 +0000
Received: by outflank-mailman (input) for mailman id 808685;
 Wed, 02 Oct 2024 10:27: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=Tl1C=Q6=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svwZR-0000Xa-E6
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 10:27:01 +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 db5b70f6-80a8-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 12:26:59 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-5399041167cso5414285e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 03:26:59 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-538a0439a98sm1880888e87.211.2024.10.02.03.26.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 03:26:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db5b70f6-80a8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727864819; x=1728469619; 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=NGOJlVwtKFRB2vOSAddY/X76t5Zsej5l4QecAB/2cS0=;
        b=hH6duw6P+l9No3Za4pRGyJLO0fxCBSfZNeUInkvF/31qbMLTNeztoL5zgjRytgPNAk
         JNM/iIHDTXkdMAQ4kBuRs/d6QztBAEdY1maO9TPLdjWGlVwAo71zKOrlITlJ7YF/oKmV
         d74yss/BzCBxKN07/gNIJwBhxKD7YE1OQJ0SkVgiFnkEMTRJRUssD4hedDZTWTcmRMMs
         9Z/TY3oxZYhNnslpXjDZMvCBwrgrQgXqqcfqUVR+TLrsBqMEkHtBCLV2evmcc54NM9zK
         cnq9RQDEvzMDm5lIO+AHmKI65R4rvg6hTijeVZvWkUNZkQtl7+yWpLuvUMHniRMfmlsd
         QvbA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727864819; x=1728469619;
        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=NGOJlVwtKFRB2vOSAddY/X76t5Zsej5l4QecAB/2cS0=;
        b=V+Iqsr5HKMho9M8y1IV6lgqyvDx2lCQV65VLoDW/N7GTryy0OPYByjJEEa4bxS+yjD
         NG/v7JUarUJ4RJcML5/DuUmyGNSBQnCrSpinsiZXorXA8F0Gx6at3MRRro5oKxzA+lMO
         K82ksLPisBmoRIInu5Pg+MFsZ2U0d/+7o+9LMTTCW6xd9jfciatx8icH69DM4v/mNbNM
         jbpiFsGB9bdnAkldeT8mijiv47fWgFgzdmMi4NHuk04m19aQyfHc4eyH636KPMO4fsl1
         q0gcDTJ96wvZy61NCI2+CA7QI61L5mks6u7kPzzKmL7pSfuFMZGjuyI0phAiUYHGlwhL
         ltAQ==
X-Forwarded-Encrypted: i=1; AJvYcCVsmowO1EdQgl3XwQRGpJCj+DAfc//YV47lQkVjtG/5atZefU9N7j2dTmVpFsJkpbpBEqsBf/3xlZM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzWDKJa15LL7WO+UtrSEq8ycWjnz/veea4p2KkjKd3pfRtXhOWK
	5pHhnmxMFAwauikADbf1zTslU529M1TPJIn+87gR1jQjBxClBUZx
X-Google-Smtp-Source: AGHT+IEjFUx8xXeBPD/Isk6XhbDoXjP16lyY1+kvq71M6jksqT9kmx7S/bnU1SOieMD49WXETyUcEw==
X-Received: by 2002:a05:6512:31cc:b0:539:9767:903d with SMTP id 2adb3069b0e04-539a07a66b3mr1541597e87.60.1727864818735;
        Wed, 02 Oct 2024 03:26:58 -0700 (PDT)
Message-ID: <6aa27e6f75af3ad2f81eb5e43e213aa386460ed5.camel@gmail.com>
Subject: Re: [PATCH v1 1/3] xen/riscv: implement virt_to_maddr()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 02 Oct 2024 12:26:57 +0200
In-Reply-To: <61347488-6b4b-442d-9058-cafd65b0834d@suse.com>
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
	 <1d4270af6469af2f95ede34abd8e9f98f775c1f1.1727708665.git.oleksii.kurochko@gmail.com>
	 <61347488-6b4b-442d-9058-cafd65b0834d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-01 at 17:41 +0200, Jan Beulich wrote:
> On 30.09.2024 17:08, Oleksii Kurochko wrote:
> > --- a/xen/arch/riscv/include/asm/mm.h
> > +++ b/xen/arch/riscv/include/asm/mm.h
> > @@ -28,7 +28,20 @@ static inline void *maddr_to_virt(paddr_t ma)
> > =C2=A0=C2=A0=C2=A0=C2=A0 return NULL;
> > =C2=A0}
> > =C2=A0
> > -#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
> > +static inline unsigned long virt_to_maddr(unsigned long va)
> > +{
> > +=C2=A0=C2=A0=C2=A0 ASSERT(va >=3D (DIRECTMAP_VIRT_START + DIRECTMAP_SI=
ZE));
> > +=C2=A0=C2=A0=C2=A0 if ((va >=3D DIRECTMAP_VIRT_START) &&
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (va < (DIRECTMAP_VIRT_START=
 + DIRECTMAP_SIZE)))
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return directmapoff_to_madd=
r(va - DIRECTMAP_VIRT_START);
>=20
> While the cover letter states a dependency on another series, I'm
> unable
> to spot directmapoff_to_maddr() in the tree or in that other series.
The definition of directmap_off_to_maddr() is in xen/pdx.h:

#ifdef CONFIG_PDX_COMPRESSION
...
/**
 * Computes a machine address given a direct map offset
 *
 * @param offset Offset into the direct map
 * @return Corresponding machine address of that virtual location
 */
static inline paddr_t directmapoff_to_maddr(unsigned long offset)
{
    return ((((paddr_t)offset << pfn_pdx_hole_shift) & ma_top_mask) |
            (offset & ma_va_bottom_mask));
}
...
#else /* !CONFIG_PDX_COMPRESSION */
...
/* directmap is indexed by by maddr */
#define maddr_to_directmapoff(x) (x)
#define directmapoff_to_maddr(x) (x)
...
#endif

>=20
> > +=C2=A0=C2=A0=C2=A0 BUILD_BUG_ON(XEN_VIRT_SIZE !=3D MB(2));
> > +=C2=A0=C2=A0=C2=A0 ASSERT(((long)va >> (PAGETABLE_ORDER + PAGE_SHIFT))=
 =3D=3D
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ((long)XE=
N_VIRT_START >> (PAGETABLE_ORDER +
> > PAGE_SHIFT)));
>=20
> What's the point of the casts here? va is unsigned long and
> XEN_VIRT_START
> is a literal number (which probably ought to have a UL suffix).
I thought that it could be the same as for x86 that:
 /* Signed, so ((long)XEN_VIRT_START >> 30) fits in an imm32. */
But checking the generated code for RISC-V casts could be dropped
as the generated code is the same.

Regarding UL, I will update to _AC(XEN_VIRT_START, UL).

>=20
> > +=C2=A0=C2=A0=C2=A0 return phys_offset + va;
>=20
> Don't you need to subtract XEN_VIRT_START here?
It shouldn't as XEN_VIRT_START is taken into account during phys_offset
calculation ( as you mentioned in the reply ).

Regarding the name of phys_offset variable, could it be better to
rename it to load_offset?

As an option I can just add the comment above return:
 /* phys_offset =3D load_start - XEN_VIRT_START */

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 10:28:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 10:28:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808690.1220674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svwan-00014p-M7; Wed, 02 Oct 2024 10:28:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808690.1220674; Wed, 02 Oct 2024 10:28: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 1svwan-00014i-J4; Wed, 02 Oct 2024 10:28:25 +0000
Received: by outflank-mailman (input) for mailman id 808690;
 Wed, 02 Oct 2024 10: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 1svwam-00014Y-6N; Wed, 02 Oct 2024 10: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 1svwal-0005p1-VV; Wed, 02 Oct 2024 10:28: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 1svwal-0006o0-MU; Wed, 02 Oct 2024 10:28:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svwal-0008Ms-M5; Wed, 02 Oct 2024 10:28: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=zfoA8uJ4PGB7JJkgr8MTzGYSNgaaETo0SmXCS4k54Fk=; b=ZPclp6yxFRzrkB+kYaZkZ2J0mn
	Db9/hoHWwhS33Y6jydnNHj2YXSb7jZST6pV/GQOx5kjn1Cj9HuEb+7mKeC3QiiDnbPFhFKb/DTIqQ
	1jLcRwVqBYKaYvSIUnIONl+9+nfR3zFRCcEDHZwVBOGxPDiakrlLnxgcqRBt50UcF5VQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187933-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187933: 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=b102c9f1ce29262f33400920eeb41f23394ea99d
X-Osstest-Versions-That:
    xen=f9ce66ea9d24aa8b26fcb2c18828caf314328ca3
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 10:28:23 +0000

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

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                  b102c9f1ce29262f33400920eeb41f23394ea99d
baseline version:
 xen                  f9ce66ea9d24aa8b26fcb2c18828caf314328ca3

Last test of basis   187929  2024-10-02 01:03:53 Z    0 days
Testing same since   187933  2024-10-02 07:02:09 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-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
   f9ce66ea9d..b102c9f1ce  b102c9f1ce29262f33400920eeb41f23394ea99d -> smoke


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 10:31:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 10:31:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808696.1220684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svwdH-0002ZK-4G; Wed, 02 Oct 2024 10:30:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808696.1220684; Wed, 02 Oct 2024 10:30: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 1svwdH-0002ZD-0S; Wed, 02 Oct 2024 10:30:59 +0000
Received: by outflank-mailman (input) for mailman id 808696;
 Wed, 02 Oct 2024 10:30: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svwdF-0002Z7-KL
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 10:30:57 +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 685baa3b-80a9-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 12:30:56 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b4e0so4829332a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 03:30:56 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2945f2esm840491666b.117.2024.10.02.03.30.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 03:30:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 685baa3b-80a9-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727865055; x=1728469855; 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=5wGju39Hmhcid0JvQ/mxq0sNrfsihG52p86ltXcpmmE=;
        b=cOjJrCg3ACN4/Bo0I7i8stYbe+Lotov1QjKNlhknQf7CXFLlMWhEMmGGFNifSPL6gm
         iNn642zNoBiUn4LZ0Mgv0mO+MCkxKQvITgpECLTvYsdVCzOxrskwPEdaAc9Zygao1Niv
         TZQiyYcIXQqX9IxHgDnB7McrT5rudoJmFEClg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727865055; x=1728469855;
        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=5wGju39Hmhcid0JvQ/mxq0sNrfsihG52p86ltXcpmmE=;
        b=wNupMz3JfR6HtCWQa07PAQS7dE7O28bvOpSoxv6gfBRN1Lh+QbAJUvmn/1ZUpIhYVJ
         K2gLC/e3ER4+m75zjbTPVuRYPwiytBUWPh2v/DYYKkW/f7uM1IKotKp5wFcKUke2XU8p
         58xf7MHtkvzx3g+M9UHIgEgTj/XrPnGwdI1tzbsJP5hPJ1pbRqSOrWCNZDcaq7dVYfum
         OsST2rpKoLgDh7afRrl0q9A/7z6Pe6eUoDpoYG26wKw03BY9v65FpYGOH5QwocFpJy3X
         QPOrjniB9+/hxAx4bcpu/2bCgb5sxfo4eyCq8ONaYO+NYvbLstfpoyokKnp/xarPR88w
         DoRQ==
X-Gm-Message-State: AOJu0Yx6p5ErM/VjImfxsWX1u9lf7XbWpYer/hDXMbigNKkCEUqFHSld
	SZTwqYVCrsYezAdrM+1r2QYmGCZ47LKTOClNvZ7eqB+onY8Mz83pLgDuZS0/n12y8FVEUfNztqx
	fgPo=
X-Google-Smtp-Source: AGHT+IFSYEW9xCt3tR2WKTM4I5ZMGDYARk/8qxPUmTem2hQOOjjnA+ooG1GRWuwe9193xsaYEt0O4g==
X-Received: by 2002:a17:906:4fd0:b0:a90:c710:6f3c with SMTP id a640c23a62f3a-a98f824e957mr275880766b.19.1727865055324;
        Wed, 02 Oct 2024 03:30:55 -0700 (PDT)
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>
Subject: [PATCH] x86/kexec: Separate code and data by at least 1 cacheline
Date: Wed,  2 Oct 2024 11:30:52 +0100
Message-Id: <20241002103052.1797237-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

No functional change, but it performs a bit better.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

v2:
 * Rebase over metadata changes.
---
 xen/arch/x86/x86_64/kexec_reloc.S | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/xen/arch/x86/x86_64/kexec_reloc.S b/xen/arch/x86/x86_64/kexec_reloc.S
index 9f40c80d7c4b..50ba454abd48 100644
--- a/xen/arch/x86/x86_64/kexec_reloc.S
+++ b/xen/arch/x86/x86_64/kexec_reloc.S
@@ -19,6 +19,7 @@
 #include <xen/kimage.h>
 
 #include <asm/asm_defns.h>
+#include <asm/cache.h>
 #include <asm/msr-index.h>
 #include <asm/page.h>
 #include <asm/machine_kexec.h>
@@ -174,6 +175,9 @@ FUNC_LOCAL(compatibility_mode)
         ud2
 END(compatibility_mode)
 
+        /* Separate code and data into into different cache lines */
+        .balign L1_CACHE_BYTES
+
 DATA_LOCAL(compat_mode_gdt_desc, 4)
         .word .Lcompat_mode_gdt_end - compat_mode_gdt -1
         .quad 0x0000000000000000     /* set in call_32_bit above */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 11:02:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 11:02:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808705.1220694 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svx7k-0007Kr-2Q; Wed, 02 Oct 2024 11:02:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808705.1220694; Wed, 02 Oct 2024 11: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 1svx7j-0007Kk-V5; Wed, 02 Oct 2024 11:02:27 +0000
Received: by outflank-mailman (input) for mailman id 808705;
 Wed, 02 Oct 2024 11:02: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svx7i-0007Kc-3C
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 11:02:26 +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 ccc6b99a-80ad-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 13:02:23 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c88e45f467so1153486a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 04:02:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88240543csm7483986a12.6.2024.10.02.04.02.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 04:02:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ccc6b99a-80ad-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727866942; x=1728471742; 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=CusrC6wfqJFEuuEHwMe9BQ1mFEgvQcg3FQVAGhQFz78=;
        b=D+OtEJ52ItzSXd0GEUSSrZiWDvxzdi+ys7FplXdMBonW5TQ1FolM3yNzHWuPpKWl7D
         23FgGOA3XBpS7Y4+g63P5Z+O+wfPFhVE44XJTSLcVFZWKpBsTAaOtHWjxfr26rhCtTmL
         zEmZub+kNjmsrf5O9CFaRxDOrBmT+ga9ZRbdnwOO7eZj8vWMplqaIA3dVVDzbYQtfEJ5
         s2dWyxhWydf9Gyb5BUX46qhi45EoYLR5CxTuCUKfdlBildFDaAkWC7Q/1uvHbQfaGgVP
         40QcFibkWsQmaOfNLuPgZK6sfQuy/yl6e3FrXqfqwIMNxk6RN+KaAjw3Cf0NZ/Obdeap
         VI3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727866942; x=1728471742;
        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=CusrC6wfqJFEuuEHwMe9BQ1mFEgvQcg3FQVAGhQFz78=;
        b=DIQv5S8JyMz6Do5iej/3OSPA9jcJ+vRr4LlRkkZlYtt7JD5bwDNlN1N+O+wXWrhvA2
         7VxqClqsH/hGHSXygnziiJfzfifKtye23C1rTpDaR6ueYnTBc1rmRceFdyt44t2+sCHU
         3UbTfOQUwSR+OgO9G9k0KAGY6ASvdD/Ylql+KXYBRnBITzmFmhKqEo+YGvhZ+3vVxYGa
         SG4bTf0Vq80EglYW4GsqomkKJSZNNX4o5aLfA+xEPhClh9ZOsbeI+3fAZK0/yLkB39IW
         mbfZ6a0sEuhn/Pc75Px4DDybFR9HUUkRxbyqVAzO+RBlxAsj4BTOH5ReU7snUfE/bMkw
         hbsQ==
X-Forwarded-Encrypted: i=1; AJvYcCUH2Pmn0Hsd3Ohk2bQ4S0+AE+f9Zu/LvsfwtgyFBWgGPh2PBA8UaQJBPLUQZfI6x2g41vpbWhjGlDM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw41SWkFrnu+OcVLitFdegO0I2fP3ISXSj+V7az7ovoLa3FgJwu
	FcXkkw4QzAbgSVilnBSOi60RM3QCtGpdm3oviK0BEOcTIbrJvR0YbzmhjE6lRnYEvaZhCceMTko
	=
X-Google-Smtp-Source: AGHT+IEk+ESlIoEYagnJZ73sL2WuSKUlA04EY6CACjpAF7gNUkhG1gNcSnlJS+k15IpZvFCKcavpDg==
X-Received: by 2002:a05:6402:5215:b0:5c5:b90a:5803 with SMTP id 4fb4d7f45d1cf-5c8b115e626mr3159124a12.7.1727866941522;
        Wed, 02 Oct 2024 04:02:21 -0700 (PDT)
Message-ID: <c618d4ac-0735-44ac-9f37-f3146039d0d7@suse.com>
Date: Wed, 2 Oct 2024 13:02:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC-for-4.20 v2 1/1] x86/hvm: Introduce Xen-wide ASID allocator
To: Vaishali Thakkar <vaishali.thakkar@vates.tech>
Cc: andrew.cooper3@citrix.com, roger.pau@citrix.com,
 xen-devel@lists.xenproject.org
References: <cover.1723574652.git.vaishali.thakkar@vates.tech>
 <8512ff4c4d78fcd59e6f3185d8a5abd9ef3168b8.1723574652.git.vaishali.thakkar@vates.tech>
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: <8512ff4c4d78fcd59e6f3185d8a5abd9ef3168b8.1723574652.git.vaishali.thakkar@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 13.08.2024 21:01, Vaishali Thakkar wrote:
> Currently ASID generation and management is done per-PCPU. This
> scheme is incompatible with SEV technologies as SEV VMs need to
> have a fixed ASID associated with all vcpus of the VM throughout
> it's lifetime.
> 
> This commit introduces a Xen-wide allocator which initializes
> the asids at the start of xen and allows to have a fixed asids
> throughout the lifecycle of all domains. Having a fixed asid
> for non-SEV domains also presents us with the opportunity to
> further take use of AMD instructions like TLBSYNC and INVLPGB
> for broadcasting the TLB invalidations.
> 
> Signed-off-by: Vaishali Thakkar <vaishali.thakkar@vates.tech>

I'm afraid some aspects / intentions remain unclear because of commentary
apparently contradicting what's said above. With that it's hard to give
back an "overall looks okay" or alike.

Of course the change could do with splitting some, if at all possible.

> @@ -784,6 +785,7 @@ int arch_domain_create(struct domain *d,
>                         unsigned int flags)
>  {
>      bool paging_initialised = false;
> +    struct hvm_domain_asid *p_asid;
>      uint32_t emflags;
>      int rc;
>  
> @@ -898,6 +900,11 @@ int arch_domain_create(struct domain *d,
>  
>      spec_ctrl_init_domain(d);
>  
> +    if ( is_hvm_domain(d) ) {
> +        p_asid = &d->arch.hvm.n1asid;
> +        hvm_asid_domain_create(p_asid);
> +    }

I don't see a need for the local variable. If you absolutely want one, it
would want to be limited in scope.

I further don't see why this lives here. Would seem to belong into
hvm_domain_initialise().

Also style-wise please have opening figure braces on their own lines
(applicable in several further places).

> --- a/xen/arch/x86/hvm/asid.c
> +++ b/xen/arch/x86/hvm/asid.c
> @@ -11,51 +11,66 @@
>  #include <xen/sched.h>
>  #include <xen/smp.h>
>  #include <xen/percpu.h>
> +
> +#include <asm/bitops.h>
>  #include <asm/hvm/asid.h>
>  
>  /* Xen command-line option to enable ASIDs */
>  static bool __read_mostly opt_asid_enabled = true;
>  boolean_param("asid", opt_asid_enabled);
>  
> +unsigned long *hvm_asid_bitmap;
> +unsigned long *hvm_reclaim_asid_bitmap;

Both __ro_after_init?

> +static DEFINE_SPINLOCK(hvm_asid_lock);
> +
>  /*
> - * ASIDs partition the physical TLB.  In the current implementation ASIDs are
> - * introduced to reduce the number of TLB flushes.  Each time the guest's
> - * virtual address space changes (e.g. due to an INVLPG, MOV-TO-{CR3, CR4}
> - * operation), instead of flushing the TLB, a new ASID is assigned.  This
> - * reduces the number of TLB flushes to at most 1/#ASIDs.  The biggest
> - * advantage is that hot parts of the hypervisor's code and data retain in
> - * the TLB.
> - *
>   * Sketch of the Implementation:
> - *
> - * ASIDs are a CPU-local resource.  As preemption of ASIDs is not possible,
> - * ASIDs are assigned in a round-robin scheme.  To minimize the overhead of
> - * ASID invalidation, at the time of a TLB flush,  ASIDs are tagged with a
> - * 64-bit generation.  Only on a generation overflow the code needs to
> - * invalidate all ASID information stored at the VCPUs with are run on the
> - * specific physical processor.  This overflow appears after about 2^80
> - * host processor cycles, so we do not optimize this case, but simply disable
> - * ASID useage to retain correctness.
> + * ASIDs are assigned in a round-robin scheme per domain as part of
> + * global allocator scheme and doesn't change during the lifecycle of
> + * the domain. Once vcpus are initialized and are up, we assign the
> + * same ASID to all vcpus of that domain at the first VMRUN. With the
> + * new scheme, we don't need to assign the new ASID during MOV-TO-{CR3,
> + * CR4}. In the case of INVLPG, we flush the TLB entries belonging to
> + * the vcpu and do the reassignment of the ASID belonging to the given
> + * domain.

Why reassignment? In the description you say that ASIDs no longer change while
a domain exists.

>  Currently we do not do anything special for flushing guest
> + * TLBs in flush_area_local as wbinvd() should able to handle this.

How's WBINVD coming into the picture here? Here we solely care about TLBs,
which WBINVD is solely about caches.

> In
> + * the future Xen should be able to take an advantage of TLBSYNC and
> + * INVLPGB (AMD SVM) with this scheme.
> +
> + * When the domain is destroyed, ASID goes to the reclaimable ASID pool
> + * for the reuse. We only go for checking in the reclaimable ASID pool
> + * when we run out of ASIDs in the hvm_asid_bitmap.
>   */
>  
> -/* Per-CPU ASID management. */
> +/* Xen-wide ASID management */
>  struct hvm_asid_data {
> -   uint64_t core_asid_generation;
>     uint32_t next_asid;
>     uint32_t max_asid;
>     bool disabled;
>  };
>  
> -static DEFINE_PER_CPU(struct hvm_asid_data, hvm_asid_data);
> +static struct hvm_asid_data asid_data;
>  
> -void hvm_asid_init(int nasids)
> +int hvm_asid_init(int nasids)

While touching this, would you mind also switching the parameter to unsigned
int? (May also apply elsewhere.)

I also can't spot any change to the VMX caller of this function. Right now
it's called as CPUs come online, whereas you now want to have this called
only once (as you apparently do for SVM). Presumably the function then should
become __init.

>  {
> +    struct hvm_asid_data *data = &asid_data;
>      static int8_t g_disabled = -1;
> -    struct hvm_asid_data *data = &this_cpu(hvm_asid_data);
>  
>      data->max_asid = nasids - 1;
>      data->disabled = !opt_asid_enabled || (nasids <= 1);
>  
> +    hvm_asid_bitmap = xzalloc_array(unsigned long,
> +                                    BITS_TO_LONGS(data->max_asid));

xv{m,z}alloc() and friends please going forward.

> +    if ( !hvm_asid_bitmap )
> +        return -ENOMEM;
> +
> +    hvm_reclaim_asid_bitmap = xzalloc_array(unsigned long,
> +                                            BITS_TO_LONGS(data->max_asid));
> +    if ( !hvm_reclaim_asid_bitmap ) {
> +        xfree(hvm_asid_bitmap);
> +        hvm_asid_bitmap = NULL;

Please use XFREE() in cases like this one.

> +    }

Missing "return -ENOMEM" here?

> @@ -63,74 +78,67 @@ void hvm_asid_init(int nasids)
>              g_disabled = data->disabled;
>      }
>  
> -    /* Zero indicates 'invalid generation', so we start the count at one. */
> -    data->core_asid_generation = 1;
> +    /* ASID 0 is reserved, so we start the counting from 1 */
> +    data->next_asid = find_first_zero_bit(hvm_asid_bitmap, data->max_asid ) + 1;

Wouldn't you better permanently mark ASID 0 as used in the bitmap?

> -    /* Zero indicates 'ASIDs disabled', so we start the count at one. */
> -    data->next_asid = 1;
> +    return 0;
>  }
>  
> -void hvm_asid_flush_vcpu_asid(struct hvm_vcpu_asid *asid)
> +void hvm_asid_flush_domain_asid(struct hvm_domain_asid *asid)
>  {
>      write_atomic(&asid->generation, 0);
>  }

Can't this function (and the struct field) go away altogether? ->generation
looks to not otherwise be used anymore. Of course given ...

> -void hvm_asid_flush_vcpu(struct vcpu *v)
> +void hvm_asid_flush_domain(struct domain *d)
>  {
> -    hvm_asid_flush_vcpu_asid(&v->arch.hvm.n1asid);
> -    hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(v).nv_n2asid);
> +    hvm_asid_flush_domain_asid(&d->arch.hvm.n1asid);
> +    hvm_asid_flush_domain_asid(&d->arch.hvm.nv_n2asid);
>  }

... this I suspect the function needs to survive, but do something different
now.

> -void hvm_asid_flush_core(void)
> +/* We still allow flushing on vcpu level for non-SEV domain */
> +void hvm_asid_flush_vcpu(struct vcpu *v)
>  {
> -    struct hvm_asid_data *data = &this_cpu(hvm_asid_data);
> -
> -    if ( data->disabled )
> -        return;
> -
> -    if ( likely(++data->core_asid_generation != 0) )
> -        return;
> -
> -    /*
> -     * ASID generations are 64 bit.  Overflow of generations never happens.
> -     * For safety, we simply disable ASIDs, so correctness is established; it
> -     * only runs a bit slower.
> -     */
> -    printk("HVM: ASID generation overrun. Disabling ASIDs.\n");
> -    data->disabled = 1;
> +    hvm_asid_flush_domain_asid(&v->domain->arch.hvm.n1asid);
> +    hvm_asid_flush_domain_asid(&v->domain->arch.hvm.nv_n2asid);
>  }

The new comment ahead of the function is somewhat confusing, considering
that you flush at domain scope here. Also - any reason not to simply
forward to hvm_asid_flush_domain() then (as long as finer granularity
aren't possible)?

> -bool hvm_asid_handle_vmenter(struct hvm_vcpu_asid *asid)
> +/* This function is called while creating a new domain */
> +bool hvm_asid_domain_create(struct hvm_domain_asid *asid)
>  {
> -    struct hvm_asid_data *data = &this_cpu(hvm_asid_data);
> +    struct hvm_asid_data *data = &asid_data;
>  
>      /* On erratum #170 systems we must flush the TLB. 
>       * Generation overruns are taken here, too. */
>      if ( data->disabled )
>          goto disabled;
>  
> -    /* Test if VCPU has valid ASID. */
> -    if ( read_atomic(&asid->generation) == data->core_asid_generation )
> -        return 0;
> +    spin_lock(&hvm_asid_lock);
> +
> +    /* We assume that next_asid > max_asid is unlikely at this point*/

Nit: Missing blank at the end of the comment (also elsewhere).

> +    arch__test_and_set_bit(data->next_asid, hvm_asid_bitmap);

No direct calls of such arch__* functions please. __test_and_set_bit() is
what you want to use here, assuming you actually use the result. If the
result isn't needed, __set_bit() is what you want.

As to what the comment says - "unlikely" doesn't mean "impossible", yet
if it was you'd end up with a buffer overrun if I'm not mistaken.

> +    /* Find the next available asid to assign to the domain*/
> +    data->next_asid = find_next_zero_bit(hvm_asid_bitmap, data->next_asid,
> +                                         data->max_asid) + 1;
> +
> +    /* Check if there are any ASIDs to reclaim */
> +    if ( data->next_asid > data->max_asid ) {
> +        data->next_asid = find_next_bit(hvm_reclaim_asid_bitmap, 0,
> +                                             data->max_asid+1);

You don't record that you've used the bit, so the next time we make it
here we'll use the same ASID again.

I wonder anyway: Wouldn't it make sense to move the reclaim bitmap
wholesale to the "normal" one when nothing's left available there, and
clear it afterwards, for bits to then accumulate anew?

> +        spin_unlock(&hvm_asid_lock);
>  
> -    /* If there are no free ASIDs, need to go to a new generation */
> -    if ( unlikely(data->next_asid > data->max_asid) )
> -    {
> -        hvm_asid_flush_core();
> -        data->next_asid = 1;
>          if ( data->disabled )
>              goto disabled;

Is the "disabled" state actually still possible to encounter?

> +
> +        if ( data->next_asid > data->max_asid )
> +            return -EBUSY;
>      }

If you fall out of this if(), ...

> -    /* Now guaranteed to be a free ASID. */
> -    asid->asid = data->next_asid++;
> -    write_atomic(&asid->generation, data->core_asid_generation);
> +    spin_unlock(&hvm_asid_lock);

... you'll end up unlocking this lock a 2nd time.

> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -777,6 +777,10 @@ void hvm_domain_destroy(struct domain *d)
>      }
>  
>      destroy_vpci_mmcfg(d);
> +
> +    /* Clear the asid and put it in the reclaimable ASID pool */
> +    clear_bit(d->arch.hvm.n1asid.asid, hvm_asid_bitmap);
> +    set_bit(d->arch.hvm.n1asid.asid, hvm_reclaim_asid_bitmap);
>  }

This feels like a layering violation - I think you want to have
hvm_asid_domain_destroy() for that purpose.

> --- a/xen/arch/x86/hvm/nestedhvm.c
> +++ b/xen/arch/x86/hvm/nestedhvm.c
> @@ -41,8 +41,6 @@ nestedhvm_vcpu_reset(struct vcpu *v)
>      nv->stale_np2m = false;
>      nv->np2m_generation = 0;
>  
> -    hvm_asid_flush_vcpu_asid(&nv->nv_n2asid);

Can this really be dropped without replacement?

> --- a/xen/arch/x86/hvm/svm/asid.c
> +++ b/xen/arch/x86/hvm/svm/asid.c
> @@ -4,16 +4,23 @@
>   * Copyright (c) 2007, Advanced Micro Devices, Inc.
>   */
>  
> +#include <xen/cpumask.h>
> +
> +#include <asm/processor.h>

Please move this latter one ...

>  #include <asm/amd.h>
>  #include <asm/hvm/nestedhvm.h>
>  #include <asm/hvm/svm/svm.h>

... down here, to retain alphabetic sorting.

>  #include "svm.h"
>  
> -void svm_asid_init(const struct cpuinfo_x86 *c)
> +void __init svm_asid_init(void)
>  {
> +    unsigned int cpu = smp_processor_id();
> +    const struct cpuinfo_x86 *c;
>      int nasids = 0;
>  
> +    c = &cpu_data[cpu];
> +
>      /* Check for erratum #170, and leave ASIDs disabled if it's present. */
>      if ( !cpu_has_amd_erratum(c, AMD_ERRATUM_170) )
>          nasids = cpuid_ebx(0x8000000aU);

See also the comment at the very bottom: an invocation of the CPUID instruction
needs to run _on_ the CPU in question. Yet I don't see why this function would
need calling more than once anyway. (If it did, you'd have an issue with CPUs
being brought up later.)

> @@ -22,33 +29,31 @@ void svm_asid_init(const struct cpuinfo_x86 *c)
>  }
>  
>  /*
> - * Called directly before VMRUN.  Checks if the VCPU needs a new ASID,
> - * assigns it, and if required, issues required TLB flushes.
> + * Called directly at the VMRUN of a domain to assign
> + * the asid to all associated vcpus of that domain

With that, ...

>   */
> -void svm_asid_handle_vmrun(void)
> +void svm_vcpu_assign_asid(struct vcpu *v)

... why struct vcpu * as parameter, and why "vcpu" in the name?

>  {
> -    struct vcpu *curr = current;
> -    struct vmcb_struct *vmcb = curr->arch.hvm.svm.vmcb;
> -    struct hvm_vcpu_asid *p_asid =
> -        nestedhvm_vcpu_in_guestmode(curr)
> -        ? &vcpu_nestedhvm(curr).nv_n2asid : &curr->arch.hvm.n1asid;
> -    bool need_flush = hvm_asid_handle_vmenter(p_asid);
> +    struct vmcb_struct *vmcb = v->arch.hvm.svm.vmcb;
> +    struct hvm_domain_asid *p_asid = &v->domain->arch.hvm.n1asid;
>  
>      /* ASID 0 indicates that ASIDs are disabled. */
>      if ( p_asid->asid == 0 )
>      {
>          vmcb_set_asid(vmcb, true);
>          vmcb->tlb_control =
> -            cpu_has_svm_flushbyasid ? TLB_CTRL_FLUSH_ASID : TLB_CTRL_FLUSH_ALL;
> +            cpu_has_svm_flushbyasid ? TLB_CTRL_FLUSH_ASID :
> +            TLB_CTRL_FLUSH_ALL;

Please avoid making unrelated changes especially in already involved patches.

>          return;
>      }
>  
> -    if ( vmcb_get_asid(vmcb) != p_asid->asid )
> +    if ( vmcb_get_asid(vmcb) != p_asid->asid ) {
>          vmcb_set_asid(vmcb, p_asid->asid);
> -
> -    vmcb->tlb_control =
> -        !need_flush ? TLB_CTRL_NO_FLUSH :
> -        cpu_has_svm_flushbyasid ? TLB_CTRL_FLUSH_ASID : TLB_CTRL_FLUSH_ALL;
> +        vmcb->tlb_control = cpu_has_svm_flushbyasid ? TLB_CTRL_FLUSH_ASID :
> +                            TLB_CTRL_FLUSH_ALL;
> +    }
> +    else
> +        return;
>  }

What's this "else return" about, when the function ends here anyway?

Overall I'm struggling with what this function is (supposed to be) doing.

> --- a/xen/arch/x86/hvm/svm/nestedsvm.c
> +++ b/xen/arch/x86/hvm/svm/nestedsvm.c
> @@ -486,7 +486,7 @@ static int nsvm_vmcb_prepare4vmrun(struct vcpu *v, struct cpu_user_regs *regs)
>      if ( rc )
>          return rc;
>  
> -    /* ASID - Emulation handled in hvm_asid_handle_vmenter() */
> +    /* ASID - Emulation handled in hvm_asid_domain_create */

As it was before, please have the () there to indicate it's a function
the comment talks about.

> @@ -681,6 +681,7 @@ nsvm_vcpu_vmentry(struct vcpu *v, struct cpu_user_regs *regs,
>      struct nestedvcpu *nv = &vcpu_nestedhvm(v);
>      struct nestedsvm *svm = &vcpu_nestedsvm(v);
>      struct vmcb_struct *ns_vmcb;
> +    struct domain *d = v->domain;

I don't think you need this local var, when you use it ...

> @@ -699,7 +700,7 @@ nsvm_vcpu_vmentry(struct vcpu *v, struct cpu_user_regs *regs,
>      if ( svm->ns_asid != vmcb_get_asid(ns_vmcb))
>      {
>          nv->nv_flushp2m = 1;
> -        hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(v).nv_n2asid);
> +        hvm_asid_flush_domain_asid(&d->arch.hvm.nv_n2asid);

... solely here.

> @@ -179,17 +180,7 @@ static void cf_check svm_update_guest_cr(
>          break;
>      case 3:
>          vmcb_set_cr3(vmcb, v->arch.hvm.hw_cr[3]);
> -        if ( !nestedhvm_enabled(v->domain) )
> -        {
> -            if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
> -                hvm_asid_flush_vcpu(v);
> -        }
> -        else if ( nestedhvm_vmswitch_in_progress(v) )
> -            ; /* CR3 switches during VMRUN/VMEXIT do not flush the TLB. */
> -        else if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
> -            hvm_asid_flush_vcpu_asid(
> -                nestedhvm_vcpu_in_guestmode(v)
> -                ? &vcpu_nestedhvm(v).nv_n2asid : &v->arch.hvm.n1asid);
> +        /* Do not flush during the CR3 switch */
>          break;

I think it would help if the comment would briefly mention how / where else
the necessary flushing is going to be carried out.

> @@ -1017,7 +1006,7 @@ void asmlinkage svm_vmenter_helper(void)
>  
>      ASSERT(hvmemul_cache_disabled(curr));
>  
> -    svm_asid_handle_vmrun();
> +    svm_vcpu_assign_asid(curr);

I don't think we want to call such a function for every VM entry, when the
ASID needs determining just once (before the guest even starts).

> @@ -2359,8 +2345,8 @@ static bool cf_check is_invlpg(
>  
>  static void cf_check svm_invlpg(struct vcpu *v, unsigned long linear)
>  {
> -    /* Safe fallback. Take a new ASID. */
> -    hvm_asid_flush_vcpu(v);
> +    /* Flush the TLB entries belonging to the vcpu and reassign the asid. */
> +    hvm_asid_flush_domain(v->domain);
>  }

Again: reassign?

> @@ -2929,7 +2915,7 @@ void asmlinkage svm_vmexit_handler(void)
>          }
>          if ( (insn_len = svm_get_insn_len(v, INSTR_INVLPGA)) == 0 )
>              break;
> -        svm_invlpga_intercept(v, regs->rax, regs->ecx);
> +        svm_invlpga_intercept(v->domain, regs->rax, regs->ecx);

I don't think such an intercept function should take a struct domain *. If
the determination of ASID is domain-based now, that ought to be handled
inside the function.

> --- a/xen/arch/x86/hvm/svm/svm.h
> +++ b/xen/arch/x86/hvm/svm/svm.h
> @@ -15,9 +15,6 @@ struct cpu_user_regs;
>  struct cpuinfo_x86;
>  struct vcpu;
>  
> -void svm_asid_init(const struct cpuinfo_x86 *c);

This (private to SVM) declaration shouldn't move to a non-private header.

> --- a/xen/arch/x86/hvm/vmx/vmcs.c
> +++ b/xen/arch/x86/hvm/vmx/vmcs.c
> @@ -1957,8 +1957,6 @@ void cf_check vmx_do_resume(void)
>           * but the action of another VMCS is deferred till it is switched in.
>           */
>          v->arch.hvm.vmx.hostenv_migrated = 1;
> -
> -        hvm_asid_flush_vcpu(v);

Can this really be left without replacement?

> @@ -1832,8 +1832,6 @@ static void cf_check vmx_update_guest_cr(
>  
>          __vmwrite(GUEST_CR3, v->arch.hvm.hw_cr[3]);
>  
> -        if ( !(flags & HVM_UPDATE_GUEST_CR3_NOFLUSH) )
> -            hvm_asid_flush_vcpu(v);
>          break;

Like for SVM please indicate in a comment where else the flushing then
happens. It's not at all obvious to me, I'm afraid.

> @@ -4809,9 +4807,8 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
>  {
>      struct vcpu *curr = current;
>      struct domain *currd = curr->domain;
> -    u32 new_asid, old_asid;
> -    struct hvm_vcpu_asid *p_asid;
> -    bool need_flush;
> +    u32 asid;

Please can you switch to uint32_t when touching such code anyway?

> @@ -4825,36 +4822,22 @@ bool asmlinkage vmx_vmenter_helper(const struct cpu_user_regs *regs)
>      if ( !cpu_has_vmx_vpid )
>          goto out;
>      if ( nestedhvm_vcpu_in_guestmode(curr) )
> -        p_asid = &vcpu_nestedhvm(curr).nv_n2asid;
> +        p_asid = &currd->arch.hvm.nv_n2asid;
>      else
> -        p_asid = &curr->arch.hvm.n1asid;
> +        p_asid = &currd->arch.hvm.n1asid;
>  
> -    old_asid = p_asid->asid;
> -    need_flush = hvm_asid_handle_vmenter(p_asid);
> -    new_asid = p_asid->asid;
> -
> -    if ( unlikely(new_asid != old_asid) )
> +    if ( unlikely(asid = p_asid->asid) )
>      {
> -        __vmwrite(VIRTUAL_PROCESSOR_ID, new_asid);
> -        if ( !old_asid && new_asid )
> +        __vmwrite(VIRTUAL_PROCESSOR_ID, asid);
> +        if (!asid) 
>          {
> -            /* VPID was disabled: now enabled. */
> +            /* VPID was disabled: now enabled */
>              curr->arch.hvm.vmx.secondary_exec_control |=
>                  SECONDARY_EXEC_ENABLE_VPID;
>              vmx_update_secondary_exec_control(curr);
>          }
> -        else if ( old_asid && !new_asid )
> -        {
> -            /* VPID was enabled: now disabled. */
> -            curr->arch.hvm.vmx.secondary_exec_control &=
> -                ~SECONDARY_EXEC_ENABLE_VPID;
> -            vmx_update_secondary_exec_control(curr);
> -        }
>      }

I'm afraid I don't understand this change: Shouldn't arrangements once
again be made as the domain is (and vCPU-s are) being constructed?

> @@ -2055,8 +2056,8 @@ static int nvmx_handle_invvpid(struct cpu_user_regs *regs)
>      case INVVPID_INDIVIDUAL_ADDR:
>      case INVVPID_SINGLE_CONTEXT:
>      case INVVPID_ALL_CONTEXT:
> -        hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(current).nv_n2asid);
> -        break;
> +        hvm_asid_flush_domain_asid(&currd->arch.hvm.nv_n2asid);
> +      break;

Please don't screw up indentation.

> --- a/xen/arch/x86/include/asm/hvm/asid.h
> +++ b/xen/arch/x86/include/asm/hvm/asid.h
> @@ -8,25 +8,25 @@
>  #ifndef __ASM_X86_HVM_ASID_H__
>  #define __ASM_X86_HVM_ASID_H__
>  
> +struct hvm_domain_asid;

Blank line here please.

> --- a/xen/arch/x86/include/asm/hvm/svm/svm.h
> +++ b/xen/arch/x86/include/asm/hvm/svm/svm.h
> @@ -21,6 +21,8 @@ bool svm_load_segs(unsigned int ldt_ents, unsigned long ldt_base,
>                     unsigned long fs_base, unsigned long gs_base,
>                     unsigned long gs_shadow);
>  
> +extern void svm_asid_init(void);
> +extern void svm_vcpu_assign_asid(struct vcpu *v);

As indicated, these should live in SVM's private header. Please also omit
"extern" on function decls.

> --- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
> +++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
> @@ -525,6 +525,7 @@ void ept_sync_domain(struct p2m_domain *p2m);
>  
>  static inline void vpid_sync_vcpu_gva(struct vcpu *v, unsigned long gva)
>  {
> +    struct domain *d = v->domain;

const (if the variable is needed at all)?

> @@ -544,7 +545,7 @@ static inline void vpid_sync_vcpu_gva(struct vcpu *v, unsigned long gva)
>          type = INVVPID_ALL_CONTEXT;
>  
>  execute_invvpid:
> -    __invvpid(type, v->arch.hvm.n1asid.asid, (u64)gva);
> +    __invvpid(type, d->arch.hvm.n1asid.asid, (u64)gva);

Please can you drop the pointless cast while touching the line?

> --- a/xen/arch/x86/mm/hap/hap.c
> +++ b/xen/arch/x86/mm/hap/hap.c
> @@ -739,13 +739,14 @@ static bool cf_check flush_tlb(const unsigned long *vcpu_bitmap)
>          if ( !flush_vcpu(v, vcpu_bitmap) )
>              continue;
>  
> -        hvm_asid_flush_vcpu(v);
> -
>          cpu = read_atomic(&v->dirty_cpu);
>          if ( cpu != this_cpu && is_vcpu_dirty_cpu(cpu) && v->is_running )
>              __cpumask_set_cpu(cpu, mask);
>      }
>  
> +    printk(XENLOG_INFO "hvm_asid_flush_vcpu called in HAP code");
> +    hvm_asid_flush_vcpu(v);

Why the printk()?

> --- a/xen/arch/x86/mm/p2m.c
> +++ b/xen/arch/x86/mm/p2m.c
> @@ -1395,7 +1395,8 @@ p2m_flush(struct vcpu *v, struct p2m_domain *p2m)
>      ASSERT(v->domain == p2m->domain);
>      vcpu_nestedhvm(v).nv_p2m = NULL;
>      p2m_flush_table(p2m);
> -    hvm_asid_flush_vcpu(v);
> +    printk(XENLOG_INFO "hvm_asid_flush_domain called in p2m_flush");
> +    hvm_asid_flush_domain(v->domain);
>  }

Same question here.

> @@ -1573,8 +1574,7 @@ void np2m_schedule(int dir)
>          {
>              if ( !np2m_valid )
>              {
> -                /* This vCPU's np2m was flushed while it was not runnable */
> -                hvm_asid_flush_core();
> +                /* This vCPU's np2m was flushed while it was not runnable */ 

Please don't introduce trailing whitespace.

> --- a/xen/arch/x86/pv/domain.c
> +++ b/xen/arch/x86/pv/domain.c
> @@ -305,6 +305,7 @@ int pv_vcpu_initialise(struct vcpu *v)
>      struct domain *d = v->domain;
>      int rc;
>  
> +    printk(XENLOG_INFO "pv_vcpu_initialise called for domain %u", d->domain_id);
>      ASSERT(!is_idle_domain(d));
>  
>      rc = pv_create_gdt_ldt_l1tab(v);

???

> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -59,6 +59,7 @@
>  #include <asm/microcode.h>
>  #include <asm/prot-key.h>
>  #include <asm/pv/domain.h>
> +#include <asm/hvm/svm/svm.h>
>  
>  /* opt_nosmp: If true, secondary processors are ignored. */
>  static bool __initdata opt_nosmp;
> @@ -2015,6 +2016,15 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>          printk(XENLOG_INFO "Parked %u CPUs\n", num_parked);
>      smp_cpus_done();
>  
> +    /* Initialize xen-wide ASID handling */
> +    #ifdef CONFIG_HVM
> +    for_each_present_cpu ( i )
> +    {
> +        if ( cpu_has_svm )
> +            svm_asid_init();
> +    }
> +    #endif

Why in a loop? And why for SVM only? (If an #ifdef was really needed here, it
should start in the first column.)

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 11:13:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 11:13:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808713.1220705 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svxIR-0000q7-6x; Wed, 02 Oct 2024 11:13:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808713.1220705; Wed, 02 Oct 2024 11: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 1svxIR-0000q0-2N; Wed, 02 Oct 2024 11:13:31 +0000
Received: by outflank-mailman (input) for mailman id 808713;
 Wed, 02 Oct 2024 11: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=Tl1C=Q6=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svxIQ-0000pu-7L
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 11:13:30 +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 5a144df3-80af-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 13:13:29 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-5389917ef34so7642918e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 04:13:29 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-538a0437f3dsm1870800e87.182.2024.10.02.04.13.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 04:13:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5a144df3-80af-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727867608; x=1728472408; 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=B1tSowlRQ/pK7K2eEpINDAKmdVjyuKuD8ybD0Adm3gw=;
        b=JIAaj8b1OlhqEkFUdBvOzVJyD7T0lOTn+5Kj0V9FUPwgETB3IlyXJ50iDqvCAqkD8r
         xVIcyNXPtIl1SsEWBLibANTn+SS1K7U32gz9Ey7JxzjhyUXzNYsGmoB7JbMdsBTtNpUV
         P+wI7GrIMM2d0xz91c+KPsxN4WWZvoU0XTJZxgm+G3u0UAwBbnhhW2UcNiwsxuSj8QdP
         msbH49ede8kglS1pmdQyrV4Sx365vvEh+n3TX5yQe2gzHHhliAjRWc6WEiQhy+cwpp12
         LB7whSuizR7Su+YI6Gi73OZT0Gm99T9QpEmrl4XwJzn1foiRTzJ//q2PX0Fji0SQ2Epw
         Ru1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727867608; x=1728472408;
        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=B1tSowlRQ/pK7K2eEpINDAKmdVjyuKuD8ybD0Adm3gw=;
        b=s5IEVnKo7LEPfsJpENq37PuoTM9nCyTC9S2Ghd83vCdrwfEhGSSkfCM/BnKZ/0HLZK
         4Ybbxr6W7WBZJReJjcV/Zk/lomniMu4mOH80qITgkF4IiviSGIKroBGfSj+6+88SUFxx
         QWnmT8ah7X102wp4rjXHlvk5ZWcZ5yeIQbK+5Lad7zBHQr2bxEgrb8WAeILic0KFKGgP
         NlOBX2fh8Mc6rZwuH1S9sZLqercE/aG3fPtxAg/HsL4hhAFX5s6SYkio2tAml4k5MXH9
         uRiuWrHYZ47jNGwwlQyMc5vdTC90+1zPcb2xHh79XPTv1z8lVooRAoJmYYI4II3sox5B
         4gww==
X-Forwarded-Encrypted: i=1; AJvYcCUxiuuurfHT2AnPD5dUfUxSyMHJshgZyiRcMe4B1qL7oFGpuTtPAcjaQ6ddDalqM7b1HsZSyoRsEkE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwbPR170nHnH8mnWv6s68PCsw1WCySKwW8hEkWatCZNLZLH2PJe
	eXmddq8HVCh/yTQJD5wk5YezJcVSElvbSN0RgLKwesQOXG3I4l4M
X-Google-Smtp-Source: AGHT+IHMOwr+pz24TUijjO07qY2zthSHeJHPbzM/izMDRRPBuA6mE3wsvUa4eMccNDHC+EO9h/C3MQ==
X-Received: by 2002:a05:6512:3501:b0:538:9e24:a3c9 with SMTP id 2adb3069b0e04-539a0663caemr1638675e87.20.1727867608191;
        Wed, 02 Oct 2024 04:13:28 -0700 (PDT)
Message-ID: <05fba591db1efdd97ec2ac48fdc99f4ec6ab6ba0.camel@gmail.com>
Subject: Re: [PATCH v1 2/3] xen/riscv: switch LINK_TO_LOAD() to
 virt_to_maddr()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 02 Oct 2024 13:13:26 +0200
In-Reply-To: <c5b75ca4-7fe2-4919-a9b0-0bf56947a247@suse.com>
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
	 <9a462c58f3af0ff5e5d312777cd1552b2a5a930c.1727708665.git.oleksii.kurochko@gmail.com>
	 <c5b75ca4-7fe2-4919-a9b0-0bf56947a247@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-01 at 17:44 +0200, Jan Beulich wrote:
> On 30.09.2024 17:08, Oleksii Kurochko wrote:
> > Except for switching LINK_TO_LOAD() to virt_to_maddr(),
> > LINK_TO_LOAD() is dropped, as virt_to_maddr() covers all
> > the cases where LINK_TO_LOAD() is used.
>=20
> Why "Except for ..."? I'm afraid I can'rt make sense of this.
I will reword that for clarity:
   Use virt_to_maddr() instead of LINK_TO_LOAD as virt_to_maddr()
   covers all the cases where LINK_TO_LOAD() is used.
  =20
Thanks.

~ Oleksii
>=20
> > @@ -225,7 +224,7 @@ void __init setup_fixmap_mappings(void)
> > =C2=A0
> > =C2=A0=C2=A0=C2=A0=C2=A0 BUG_ON(pte_is_valid(*pte));
> > =C2=A0
> > -=C2=A0=C2=A0=C2=A0 tmp =3D paddr_to_pte(LINK_TO_LOAD((unsigned long)&x=
en_fixmap),
> > PTE_TABLE);
> > +=C2=A0=C2=A0=C2=A0 tmp =3D paddr_to_pte(virt_to_maddr(&xen_fixmap), PT=
E_TABLE);
>=20
> Just like you don't open-code a cast here, ...
>=20
> > @@ -312,7 +311,7 @@ void __init remove_identity_mapping(void)
> > =C2=A0=C2=A0=C2=A0=C2=A0 pte_t *pgtbl;
> > =C2=A0=C2=A0=C2=A0=C2=A0 unsigned int index, xen_index;
> > =C2=A0=C2=A0=C2=A0=C2=A0 unsigned long ident_start =3D
> > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 LINK_TO_LOAD(turn_on_mmu) &=
 XEN_PT_LEVEL_MAP_MASK(0);
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 virt_to_maddr((unsigned lon=
g)turn_on_mmu) &
> > XEN_PT_LEVEL_MAP_MASK(0);
>=20
> ... you shouldn't do so here. The virt_to_maddr() wrapper macro does
> so already.
>=20
> Jan



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 11:25:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 11:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808720.1220714 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svxTv-0002j0-6b; Wed, 02 Oct 2024 11:25:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808720.1220714; Wed, 02 Oct 2024 11:25: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 1svxTv-0002it-2h; Wed, 02 Oct 2024 11:25:23 +0000
Received: by outflank-mailman (input) for mailman id 808720;
 Wed, 02 Oct 2024 11:25: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=Tl1C=Q6=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svxTu-0002in-5T
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 11:25:22 +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 0121d835-80b1-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 13:25:20 +0200 (CEST)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2fac63abf63so36461611fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 04:25:18 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2f9d461982asm18872011fa.109.2024.10.02.04.25.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 04:25:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0121d835-80b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727868318; x=1728473118; 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=eqrFAfrzjZeDi8Pum9/LInoq0D3Apz8MP5tO7H6DGz8=;
        b=bI2UOz1aCccYs0DzRjK0aMD+3d4DHM2yTjpueWM65Nf6NNrM6ypVtQqWr/OM0UKldf
         yvSlIInd2yeHB+Eo7Q2ICCLKfDcNY1LZgrtYqln1+1Vdgd0shRcGD9DtCNpSzTHC61pU
         BWv2dGM79O87uHkffT2x/0TN0EWkhIxO/GSGLDnkfW7nfmTWI50oHykh2ej41sgZinZT
         d9B5ur4EhxYqck2wrRv8YlsUsICviU2APVTGafK7irGzoH/Xa28vQI/iMV/I6fTN8UKl
         +4TrTHhRsaVqD4ueciJIVECaL9HrSmTbvSmx08cVI4rFz+GK4bjtijarhpp7Qpjj1rHo
         bLBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727868318; x=1728473118;
        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=eqrFAfrzjZeDi8Pum9/LInoq0D3Apz8MP5tO7H6DGz8=;
        b=RNNcRj1U3bRGc14+VnawojwS8DZyVsBWPw+4EXvrBg+qJUiezRioEL1ySUgf1KBure
         eaNcyk6gA3Zmolf1F5UQVf5k0iN3UR4b3FMB2lBp8IUyiUJVNhUn+DMtrTcpkIfWNiPO
         to6DY7pkKRk08wXYnjFUBEDX3A9DCPZPL4NIuX7Bm0BODZTvoT3BCbPZlQ8qpZrGFAgb
         8+ZThctccUaLvT/BF4sLl1emCazLWT63+VPnGJgAlKj7oYawvh9ScBR95JcTGBg7dWAB
         0oGZNk2sB63T2U59F4SMVEe0lcUC5rvg5tX1VtKhdeAHHhFIhLUcyjHImekGIADzbn0x
         6HoA==
X-Forwarded-Encrypted: i=1; AJvYcCUO8pmRI9wu2//I03/zcfEcjmpfGOQF2GmnyDLQFQJM7M06Vk8Dvo7WDzDsMVLyL9g3UoF5WQEMVnU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxdOl/rLSI0ceU7C3jvJa39wxWAZh90MK515T9UMJ3p3779XxyR
	JbfPvB2xvrA6nXzUDomACmvaGwaMc3mFv4AjnEEjCbeW3A56CUp/
X-Google-Smtp-Source: AGHT+IE+4OfmtUbxgfRf7Oc5y8U7QWo98tR5EtvrcUbR0NO/wImC14LBHZawaDIS7DSVInPZO+eUrw==
X-Received: by 2002:a2e:a99f:0:b0:2fa:e4ae:3342 with SMTP id 38308e7fff4ca-2fae4ae38cemr10095771fa.12.1727868317937;
        Wed, 02 Oct 2024 04:25:17 -0700 (PDT)
Message-ID: <418443ea4017c401d944971898cb298ef2f826d6.camel@gmail.com>
Subject: Re: [PATCH v1 3/3] xen/riscv: register Xen's load address as a boot
 module
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 02 Oct 2024 13:25:16 +0200
In-Reply-To: <178b61bc-d3e5-4c9d-a8c0-88363911bc8f@suse.com>
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
	 <2bd3589f322d30e93d81d091ca64439048c068fc.1727708665.git.oleksii.kurochko@gmail.com>
	 <178b61bc-d3e5-4c9d-a8c0-88363911bc8f@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

T24gVHVlLCAyMDI0LTEwLTAxIGF0IDE3OjQ5ICswMjAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAzMC4wOS4yMDI0IDE3OjA4LCBPbGVrc2lpIEt1cm9jaGtvIHdyb3RlOgo+ID4gQEAgLTI2LDYg
KzI3LDggQEAgdW5zaWduZWQgY2hhciBfX2luaXRkYXRhCj4gPiBjcHUwX2Jvb3Rfc3RhY2tbU1RB
Q0tfU0laRV0KPiA+IMKgdm9pZCBfX2luaXQgbm9yZXR1cm4gc3RhcnRfeGVuKHVuc2lnbmVkIGxv
bmcgYm9vdGNwdV9pZCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhZGRyX3QgZHRiX2FkZHIpCj4gPiDCoHsKPiA+ICvC
oMKgwqAgc3RydWN0IGJvb3Rtb2R1bGUgKnhlbl9ib290bW9kdWxlOwo+IAo+IFdpdGgganVzdCB0
aGUgdXNlcyBiZWxvdyB0aGlzIGNhbiBiZSBwb2ludGVyLXRvLWNvbnN0LiBRdWVzdGlvbiBvZgo+
IGNvdXJzZQo+IGlzIHdoZXRoZXIgeW91IGFscmVhZHkga25vdyBvZiBmdXJ0aGVyIHVzZXMuCkl0
IGNvdWxkIGJlIGRyb3BwZWQgYXMgaXQgaXMgdXNlZCBvbmx5IGZvciBCVUdfT04oIXhlbl9ib290
bW9kdWxlKSBhcwppdCBsb29rcyB0byBtZSBhIGxpdHRsZSBiaXQgYmV0dGVyIHRoZW46CiAgICBC
VUdfT04oIWFkZF9ib290X21vZHVsZShCT09UTU9EX1hFTiwgdmlydF90b19tYWRkcihfc3RhcnQp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9lbmQgLSBfc3RhcnQpLCBmYWxzZSkpOwpC
dXQgSSBhbSBva2F5IHRvIGRyb3AgeGVuX2Jvb3Rtb2R1bGUgdmFyaWFibGUuCgo+IAo+ID4gQEAg
LTQ0LDYgKzQ3LDEzIEBAIHZvaWQgX19pbml0IG5vcmV0dXJuIHN0YXJ0X3hlbih1bnNpZ25lZCBs
b25nCj4gPiBib290Y3B1X2lkLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiUGxl
YXNlIGNoZWNrIHlvdXIgYm9vdGxvYWRlci5cbiIsCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIGR0Yl9hZGRyLCBCT09UX0ZEVF9WSVJUX1NJWkUpOwo+ID4gwqAKPiA+ICvCoMKgwqAg
LyogUmVnaXN0ZXIgWGVuJ3MgbG9hZCBhZGRyZXNzIGFzIGEgYm9vdCBtb2R1bGUuICovCj4gPiAr
wqDCoMKgIHhlbl9ib290bW9kdWxlID0gYWRkX2Jvb3RfbW9kdWxlKEJPT1RNT0RfWEVOLAo+ID4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCB2aXJ0X3RvX21hZGRyKF9zdGFydCksCj4gPiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIChwYWRkcl90KShfZW5kIC0gX3N0YXJ0KSwKPiA+IGZhbHNlKTsKPiAKPiBUaGVyZSdzIG5v
IHJlYWwgbmVlZCBmb3IgdGhlIGNhc3QsIGlzIHRoZXJlPyBQbHVzIGlmIGFueXRoaW5nLCBpdAo+
IHdvdWxkIGJlCj4gbW9yZSB0byBzaXplX3QgdGhhbiB0byBwYWRkcl90LgpJbiB0aGlzIGNhc2Ug
dGhlIGNhc3QgaXNuJ3QgcmVhbGx5IG5lZWRlZC4gSSB3aWxsIGRyb3AgaXQuCgpUaGFua3MuCgp+
IE9sZWtzaWkK



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 11:53:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 11:53:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808725.1220724 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svxvK-0007NL-Bc; Wed, 02 Oct 2024 11:53:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808725.1220724; Wed, 02 Oct 2024 11:53: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 1svxvK-0007NE-7X; Wed, 02 Oct 2024 11:53:42 +0000
Received: by outflank-mailman (input) for mailman id 808725;
 Wed, 02 Oct 2024 11:53: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 1svxvJ-0007N4-Bu; Wed, 02 Oct 2024 11:53: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 1svxvI-0007J2-WF; Wed, 02 Oct 2024 11:53: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 1svxvI-0000Od-HX; Wed, 02 Oct 2024 11:53:40 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1svxvI-0000xT-H5; Wed, 02 Oct 2024 11:53: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=GeUgBLcjsw1TsGCvSqvURNVtuXajqozKI1R0pCPw92Q=; b=O25+Pj36t17gSdfHiTkvNw9tKj
	2FVW3Xa6jn1F77hXYf+qz53engDUlxMmQZiGGSo8yqIcTJa1hGMCH9Qr2579xpM3Me2OdeSmSrYVC
	k8e4gJ7vorMZ6RA5/A9ZbUHObFMJuPJmeOB/1L2ERUURum1qYke6WFvE6wb6DfVP7708=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187928-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187928: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:host-ping-check-xen:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=718780d20470c66a3a36d036b29148d5809dc855
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 11:53:40 +0000

flight 187928 qemu-mainline real [real]
flight 187937 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187928/
http://logs.test-lab.xenproject.org/osstest/logs/187937/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt     10 host-ping-check-xen fail pass in 187937-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt 16 saverestore-support-check fail in 187937 like 187720
 test-armhf-armhf-libvirt    15 migrate-support-check fail in 187937 never pass
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-thunderx 15 migrate-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-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-amd64-libvirt-qcow2 14 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-amd64-amd64-libvirt-raw 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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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

version targeted for testing:
 qemuu                718780d20470c66a3a36d036b29148d5809dc855
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   16 days
Failing since        187731  2024-09-17 13:11:20 Z   14 days   25 attempts
Testing same since   187928  2024-10-01 20:50:28 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Arun Kumar <arun.kka@samsung.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 4559 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 12:08:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 12:08:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808742.1220734 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svy9N-0001Lo-0A; Wed, 02 Oct 2024 12:08:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808742.1220734; Wed, 02 Oct 2024 12:08: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 1svy9M-0001Lh-T2; Wed, 02 Oct 2024 12:08:12 +0000
Received: by outflank-mailman (input) for mailman id 808742;
 Wed, 02 Oct 2024 12:08: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svy9M-0001Lb-49
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 12:08:12 +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 fe00a86f-80b6-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 14:08:10 +0200 (CEST)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-53995380bb3so3830284e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 05:08:10 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297c2c7sm849725366b.180.2024.10.02.05.08.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 05:08:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fe00a86f-80b6-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727870890; x=1728475690; 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=BSpaNHtVe2VYxXwXm6BRwx2bRh43b6VH6C+y2IpSS9A=;
        b=PF4ASNPTop2EGUrjWUU8kzmnMC2d19su0OJoZ7gpZpppCpM+X5NKQT2tVfp5Pvw/MK
         Xge4HykPkjGxyjdpdKet8/RIXDtDO8ZNU+tEQ0C/madrrlHiOxbkrvHltSv+7ULG0XfB
         aGiXn/CPwdSsAwNulpr2iIKRAHiF9GUjXCssjMkgs+zU86LcNiaMcZiRtvhstACzDxU1
         pdWWc0EYz2/sdfITG+2cVtvJwVH6ZXlwIKyzPz0Xyz7hzCAIcfmUWy6C03Pdr258qzph
         j9Gsa3w5tf+bUcQZgXzJbSLrrnlJZz5nXNuBUUabaeF3ZskPJGRnrLl73TbW8eEU3IEK
         zPvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727870890; x=1728475690;
        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=BSpaNHtVe2VYxXwXm6BRwx2bRh43b6VH6C+y2IpSS9A=;
        b=RCb6WvLdT0HcSgEsghD1w7UkajFSYQRoG/hV1fkkwa8gSwLQb/TEYkJV90nI4HHe/g
         INnjTDTjKaSWwEWJ/HgaJrNiMKN+xgwOpaIfnrmpWDeqHrMc0lSVGfzd1DT6DQilsv9z
         KlmM9RsigT1kW3cVQ3f/16IgTJlGRVSyzq+NE9ijQj9X1qdUNc7P3QKiKbDp9B5teTtI
         ZJqhmnDeKDj6Q7Xny/AkziWA0IEoNnCM7Qud8Y59USDoxCYozZ6VV3g1tevDFLwhcGnb
         7S2sGroCeyElOEivdKjhHYLR0x4LQMtIHYDYyZ2TZCoq34t2Unnwk2cSj4bbhyb3XKMK
         zHpQ==
X-Forwarded-Encrypted: i=1; AJvYcCXxx5n57hT6Ab+dKIm/MZOjgo68vJ0pF+NrOEY0fTBQuFQATDZbhAUBap0cRsIOHz9UvWZ3DalUSY4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyHQUKvfofWrnaN7BpZPz9Plu57qyHJ4j65DmNnta6s4D7F8MZi
	nT64+J/ps7nttnONFWgCEtchIHjd6MU+VoYYOOYWKxeqwtt2jYxDS2viTBagWQ==
X-Google-Smtp-Source: AGHT+IHvlr0NVUD6CsoIEtC8U9V3Wt0Ud3GgZQ4YfxV0HFLyngouWXfK90AvVa9wQGMb73N62eLg+w==
X-Received: by 2002:a05:6512:1054:b0:530:e323:b1cd with SMTP id 2adb3069b0e04-539a07a1dffmr1917029e87.40.1727870889930;
        Wed, 02 Oct 2024 05:08:09 -0700 (PDT)
Message-ID: <b917b21a-6d2b-46b2-a30d-7bab5ebff631@suse.com>
Date: Wed, 2 Oct 2024 14:08:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/kexec: Separate code and data by at least 1 cacheline
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002103052.1797237-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: <20241002103052.1797237-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.10.2024 12:30, Andrew Cooper wrote:
> No functional change, but it performs a bit better.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

A question nevertheless:

> --- a/xen/arch/x86/x86_64/kexec_reloc.S
> +++ b/xen/arch/x86/x86_64/kexec_reloc.S
> @@ -19,6 +19,7 @@
>  #include <xen/kimage.h>
>  
>  #include <asm/asm_defns.h>
> +#include <asm/cache.h>
>  #include <asm/msr-index.h>
>  #include <asm/page.h>
>  #include <asm/machine_kexec.h>
> @@ -174,6 +175,9 @@ FUNC_LOCAL(compatibility_mode)
>          ud2
>  END(compatibility_mode)
>  
> +        /* Separate code and data into into different cache lines */
> +        .balign L1_CACHE_BYTES
> +
>  DATA_LOCAL(compat_mode_gdt_desc, 4)
>          .word .Lcompat_mode_gdt_end - compat_mode_gdt -1
>          .quad 0x0000000000000000     /* set in call_32_bit above */

Because of L1_CACHE_BYTES being 128, you indeed put at least 1 cache line in
between. Is that necessary, though? Just starting data on the next cache line
ought to be enough? IOW if and when we adjust L1_CACHE_BYTES, we won't need
to touch this again, just that the title here then would end up slightly
misleading.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 12:12:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 12:12:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808747.1220744 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svyD2-0002o9-Fy; Wed, 02 Oct 2024 12:12:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808747.1220744; Wed, 02 Oct 2024 12: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 1svyD2-0002o2-CQ; Wed, 02 Oct 2024 12:12:00 +0000
Received: by outflank-mailman (input) for mailman id 808747;
 Wed, 02 Oct 2024 12:11: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=RwxN=Q6=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1svyD0-0002nw-U6
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 12:11:58 +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 859d7f64-80b7-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 14:11:58 +0200 (CEST)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-53995380bb3so3835148e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 05:11:58 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88245e9efsm7539974a12.58.2024.10.02.05.11.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 05:11:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 859d7f64-80b7-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1727871117; x=1728475917; 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=DOKb6zVDn/0VH4+KbpW87lTh/3r6c/GObL88XQjIbzs=;
        b=P3Yfp/xrGR5cbYxU+Gzk7R549XJPidV8I0m2+p0mBAqrk/NSrghq85TXJsCC0kOCe3
         wgVpbGzVD3nE9H2961Xk9CTLDaHnzto+LINCAKkjOSEU1sY0BsfKdBL8bBk79GktG/dn
         7j6pOr8i5TGABXwyGVyVU3str+TvXhZF7JSZCnH7668z7x57O5EI5vyXfsASQhObd8yi
         3hJ+0wKREmjiqJ2e5p1NzRMOjATmJQoE+jKjaIoAa4QLPoVaAvf3/oihJC07n4Dt3O2T
         DHCVZ1g7aOJXw+fgQ5fPGijnQIcNzHEPPdh8norlVSmr33uOAH1JwOHGq+0vezRqnbXf
         hRqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727871117; x=1728475917;
        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=DOKb6zVDn/0VH4+KbpW87lTh/3r6c/GObL88XQjIbzs=;
        b=GTUNM8jzPjtHckOQZrBH/enMHmw1PiB8L/ZM88yZ5eNOxuWI6IyfP5AFjHMkAIVMFa
         FFNq6p6jBUPtlmkaFsjOdu7OS2St3M/vBECrTgssFFxr1JEaLeUJksGaKoN+a1k+Dk9q
         CACtnlPJAr3aJGvXLpL5wc50G0ULo7fZIWZ5HfOF/QEyGb3y/j1E8kvObJOpM/s8YKLS
         tQG79woTwvREIfsv/GLF2DhYY+8dpft1ycRo+1LGi8tPuAi3N10NYH5KeU8YZUmgfJr9
         9y8Gu+qBKeF/U7KP0R0+O1M9CkDD6XluoLd0AHF4IkUTC6jfoT6FLQ0NGT+SjBeibpvM
         b2bQ==
X-Forwarded-Encrypted: i=1; AJvYcCVCTyJNVNPf2LvkLNLxmGKulqOI+cQVqjcEsL4HYZ69oiPq6OeNcE+hhwXjPWnogu2G/DPVrcTocK4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxZOpzMUiCF0WYWxTesWq5T2UeCSlSaZ6k+s3KkP7RaaDPkcpjJ
	a0K45yN/X8Yt2xD/klRmtf7Fw8qUOJLs5BSHBOQqXP3hgKj75/ppW7ti0ABMfw==
X-Google-Smtp-Source: AGHT+IHIgXoNl9eAE+xXw2Lbpvd2QKnez2zgZHCakzLxuK7hN1DxtPCZzvib/32St1X9VkwpSrTFsQ==
X-Received: by 2002:a05:6512:2387:b0:530:c239:6fad with SMTP id 2adb3069b0e04-539a05fffc0mr1789223e87.0.1727871117518;
        Wed, 02 Oct 2024 05:11:57 -0700 (PDT)
Message-ID: <1bd67367-0928-4f16-958c-f45612689346@suse.com>
Date: Wed, 2 Oct 2024 14:11:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/3] xen/riscv: register Xen's load address as a boot
 module
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
 <2bd3589f322d30e93d81d091ca64439048c068fc.1727708665.git.oleksii.kurochko@gmail.com>
 <178b61bc-d3e5-4c9d-a8c0-88363911bc8f@suse.com>
 <418443ea4017c401d944971898cb298ef2f826d6.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: <418443ea4017c401d944971898cb298ef2f826d6.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02.10.2024 13:25, oleksii.kurochko@gmail.com wrote:
> On Tue, 2024-10-01 at 17:49 +0200, Jan Beulich wrote:
>> On 30.09.2024 17:08, Oleksii Kurochko wrote:
>>> @@ -26,6 +27,8 @@ unsigned char __initdata
>>> cpu0_boot_stack[STACK_SIZE]
>>>  void __init noreturn start_xen(unsigned long bootcpu_id,
>>>                                 paddr_t dtb_addr)
>>>  {
>>> +    struct bootmodule *xen_bootmodule;
>>
>> With just the uses below this can be pointer-to-const. Question of
>> course
>> is whether you already know of further uses.
> It could be dropped as it is used only for BUG_ON(!xen_bootmodule) as
> it looks to me a little bit better then:
>     BUG_ON(!add_boot_module(BOOTMOD_XEN, virt_to_maddr(_start),
>                             (_end - _start), false));

Yet that's undesirable for other reasons. Did you consider

    if ( !add_boot_module(BOOTMOD_XEN, virt_to_maddr(_start),
                          _end - _start, false) )
        BUG();

? Maybe panic() would be even better for cases like this one.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 12:42:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 12:42:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808759.1220754 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svygG-0007Lv-QL; Wed, 02 Oct 2024 12:42:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808759.1220754; Wed, 02 Oct 2024 12: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 1svygG-0007Lo-NB; Wed, 02 Oct 2024 12:42:12 +0000
Received: by outflank-mailman (input) for mailman id 808759;
 Wed, 02 Oct 2024 12: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=3lMz=Q6=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1svygF-0007Li-Jr
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 12:42:11 +0000
Received: from fout-a2-smtp.messagingengine.com
 (fout-a2-smtp.messagingengine.com [103.168.172.145])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bce199b1-80bb-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 14:42:09 +0200 (CEST)
Received: from phl-compute-11.internal (phl-compute-11.phl.internal
 [10.202.2.51])
 by mailfout.phl.internal (Postfix) with ESMTP id 3DC0E1380198;
 Wed,  2 Oct 2024 08:42:08 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-11.internal (MEProxy); Wed, 02 Oct 2024 08:42:08 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 08:42:07 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bce199b1-80bb-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	:content-type:content-type:date:date:from:from:in-reply-to
	:message-id:mime-version:reply-to:subject:subject:to:to; s=fm2;
	 t=1727872928; x=1727959328; bh=aS+PJ7LKA9tUCRQKTc93IyrC3+X3cz76
	nEll6rzei8A=; b=GlpGjK8P0qbYCEXK0eoXL2W3hGksPF62OP3cgnhVEJfulYoe
	nPmG0wOkg8yoMzEGjUtV0wINsVGij2RDpxv373+0m+F3SChKMrbE/wPJ6y2WyvXO
	VJ0Bw6+JZFIlToOW0s6aQoc1XPdsOScRU2H3dGFpz45LTH9opFo4jevbKQEa+x1j
	zyQ39tkQr11f/W+fkt2tKMG4ZkkVOSQGXkK1GzJVSqRo3lx8o+M1qdJAdXjESrPd
	ESRl0400UTZzKu9LLjIWMmpIc09mngFC4UtOW80Lm/wAu65JyuB5AGt1LDX2RaHX
	cMGl+avIM2Nyt3EFXS9D24GtQ0C9klgBkce9pQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=fm2; t=1727872928; x=1727959328; bh=aS+PJ7LKA9tUC
	RQKTc93IyrC3+X3cz76nEll6rzei8A=; b=DWLi9o7VdfMGSkzNIAUMZqVf12Z83
	Ssrq7PRdnLTIpQrxNjiQtiGAsRn05N3I9/we3WeCcrSng+Kb1mgw7s8cca5mxHH7
	/SlJlNn2JFlm68PIYTne+PcaGCeoz+nO+iLftkfHAjAzs56bI4Ia12CA84iJWdmG
	/T/uxMs+xBW+djZWiPpCRWFn/FBcuYgeR3fCDbbfRRbZ6NgrmFEkRpSYqLZbuWd3
	lUC7cmRJPnwpfyrEfB/3HOqVO73sdo++hP66+4fAR+cfr2TzRgXMsc2FqCL+2hBd
	odpG3Napq2iqv5+u0ZS5GcyfD0nUjJw4Epilz/zmqnOI0qA7fD3fancpQ==
X-ME-Sender: <xms:nz_9Zrbnpf2PQOX-ZB_SbztiXAKv7II7ZILUPdI8LGzTeMQMziruFQ>
    <xme:nz_9ZqZIj8XD8sGNdJQ--rf5ktL9I9j9-tD29gEB1q3oLt5IrA3NkS12dW-UvdDGI
    c01cp4h4qCs_Q>
X-ME-Received: <xmr:nz_9Zt9qr71lNBjrkWlQIQrMeLkznv7Niow0RhSn-GX_sUw7nRc9sMJWIGaPvwVEcmcywcOs6zucOegeh2gu1xG18ZGdXTLUFiv__QKDk5acepLp_V8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdduledghedvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofggtgfgsehtkeertdertdejnecu
    hfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrg
    hrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffr
    rghtthgvrhhnpefhkeduleeggfeihedtvddvveeileduueeugefftddvfeelkeeggfehje
    ffhfetkeenucffohhmrghinhepghhithhlrggsrdgtohhmpdigvghnrdhorhhgnecuvehl
    uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvg
    hksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohep
    gedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhish
    htshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepmhgrrhhmrghrvghksehi
    nhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdprhgtphhtthhopegtrghrughovg
    estggrrhguohgvrdgtohhmpdhrtghpthhtohepshhsthgrsggvlhhlihhniheskhgvrhhn
    vghlrdhorhhg
X-ME-Proxy: <xmx:oD_9ZhpHLIpa-f6cgWc4Ek07QSSFnKnRMpzmRwX2_6UHc8709KFYpg>
    <xmx:oD_9Zmpm9_Aj5H-SBck9b83cYp9Hdhx1R98o8jevHBYAyIOh3lYhDQ>
    <xmx:oD_9ZnRz-LU-T2-NmyRpE28Iym2r_BZ_QNiXk61epW_tu2OSaA0sQA>
    <xmx:oD_9ZurxECwbQYLWzql-_nKIIgsvlbBNDM6LF3D_eVrY0kK5GnPRnw>
    <xmx:oD_9ZpVTKGZUcPibiLbyGTBs_EVlfQ9I7eer0fCUUoOYmwLLYT30HWIL>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] automation: add a smoke test for xen.efi on X86
Date: Wed,  2 Oct 2024 14:41:55 +0200
Message-ID: <20241002124159.716270-1-marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Check if xen.efi is bootable with an XTF dom0.

The TEST_TIMEOUT is set in the script to override project-global value.
Setting it in the gitlab yaml file doesn't work, as it's too low
priority
(https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).

The multiboot2+EFI path is tested on hardware tests already.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
This requires rebuilding debian:bookworm container.

The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
not clear to me why the default TEST_TIMEOUT is set at the group level
instead of in the yaml file, so I'm not adjusting the other places.
---
 automation/build/debian/bookworm.dockerfile |  1 +
 automation/gitlab-ci/test.yaml              |  7 ++++
 automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh

diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
index 3dd70cb6b2e3..061114ba522d 100644
--- a/automation/build/debian/bookworm.dockerfile
+++ b/automation/build/debian/bookworm.dockerfile
@@ -46,6 +46,7 @@ RUN apt-get update && \
         # for test phase, qemu-smoke-* jobs
         qemu-system-x86 \
         expect \
+        ovmf \
         # for test phase, qemu-alpine-* jobs
         cpio \
         busybox-static \
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 8675016b6a37..74fd3f3109ae 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
   needs:
     - debian-bookworm-clang-debug
 
+qemu-smoke-x86-64-gcc-efi:
+  extends: .qemu-x86-64
+  script:
+    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
+  needs:
+    - debian-bookworm-gcc-debug
+
 qemu-smoke-riscv64-gcc:
   extends: .qemu-riscv64
   script:
diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh
new file mode 100755
index 000000000000..e053cfa995ba
--- /dev/null
+++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+set -ex -o pipefail
+
+# variant should be either pv or pvh
+variant=$1
+
+# Clone and build XTF
+git clone https://xenbits.xen.org/git-http/xtf.git
+cd xtf && make -j$(nproc) && cd -
+
+case $variant in
+    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
+    *)   k=test-pv64-example     extra= ;;
+esac
+
+mkdir -p boot-esp/EFI/BOOT
+cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
+cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
+
+cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
+[global]
+default=test
+
+[test]
+options=loglvl=all console=com1 noreboot console_timestamps=boot $extra
+kernel=kernel
+EOF
+
+cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
+cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
+
+rm -f smoke.serial
+export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
+        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
+        -drive if=pflash,format=raw,file=OVMF_VARS.fd \
+        -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \
+        -m 512 -monitor none -serial stdio"
+
+export TEST_LOG="smoke.serial"
+export PASSED="Test result: SUCCESS"
+export TEST_TIMEOUT=120
+
+./automation/scripts/console.exp | sed 's/\r\+$//'
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 12:42:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 12:42:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808762.1220764 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svygy-0007pH-2b; Wed, 02 Oct 2024 12:42:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808762.1220764; Wed, 02 Oct 2024 12: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 1svygx-0007pA-Vo; Wed, 02 Oct 2024 12:42:55 +0000
Received: by outflank-mailman (input) for mailman id 808762;
 Wed, 02 Oct 2024 12: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=3lMz=Q6=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1svygv-0007Li-V8
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 12:42:53 +0000
Received: from fout-a2-smtp.messagingengine.com
 (fout-a2-smtp.messagingengine.com [103.168.172.145])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d71c58db-80bb-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 14:42:53 +0200 (CEST)
Received: from phl-compute-09.internal (phl-compute-09.phl.internal
 [10.202.2.49])
 by mailfout.phl.internal (Postfix) with ESMTP id 826181380212;
 Wed,  2 Oct 2024 08:42:52 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-09.internal (MEProxy); Wed, 02 Oct 2024 08:42:52 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 08:42:51 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d71c58db-80bb-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	:content-type:content-type:date:date:from:from:in-reply-to
	:message-id:mime-version:reply-to:subject:subject:to:to; s=fm2;
	 t=1727872972; x=1727959372; bh=x3J25cRrdod2hsekofuGMbdpEOwomA7e
	e/WxHRc5eEM=; b=XOymqohwcNXKq4AZFF/6a+n3XxUg3wBi+aJAu/Mwyz2G5N0a
	kadtSmQBd+HaBuYGQgGPaCKEmUBTx83UA2EQs9YHqYQ19dYse/L8sTM0tYn3tQgj
	Su6kac/1hU0HiiE+hopMIk2o0lGo1aYo3n4zyT4Uo+NhaUGCtsRoA83bkrYEUXmY
	gPLDqckouu+5euon93WN730IL+vldMmfPV3X35bZ9YQzG6stFzuzMtKFszL1YDU+
	EoZztoNlTEBO3TVl7TnFSqoWEW37art/n6YDFa0ePtyxIekgCItwPf12msELgmw+
	QW7VY9mfMr/37DWWB5w9/tEcix++5jPLlGB4pA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=fm2; t=1727872972; x=1727959372; bh=x3J25cRrdod2h
	sekofuGMbdpEOwomA7ee/WxHRc5eEM=; b=ecfT9PBSaamQBvX/Sd1cayB+Cm6HQ
	w30l1DhqRGIbWzW0rd98umFZt9plZM77xnUS5ntvdGWekMwQ96Rai5qYI/yJZihn
	ZndaGedKMq4pKsxNz4aob/93G20dH0CNi8RDJ2b7cgrTyU5XwfmALS1aYCjW18/n
	ErO0f/qJ65an913kD5Z5W8/mH7N86YNlR7i2A0+gtgAhB1PoetR8rNJoZ3DhB6UJ
	Ea25zTXL+ErBzDDPSN6gRUkCOl7500pOiXg9ZArtp9MsUsYxnmDQeZojy8pzDxOC
	blEyXmznf5QfVflH4WkWJDnQQ9TuzJvrNH7Tsrxw84xgrMvVuxEytqYoQ==
X-ME-Sender: <xms:zD_9Zn_9dLrzU0GABZkpwefMBjdt8pHeB7DKO8hUtSMB8GpMfWimrw>
    <xme:zD_9ZjslmprYB0pITFylEpV9V08RZYf6_oM55AFzbXQ3edd1kl0ByRZ_hpD4B5Kmy
    Jf3X-fVhj7-Rg>
X-ME-Received: <xmr:zD_9ZlA02cQ0nVIo8gpq_ZWonyztY5shl8yXUxt_kVXqlkcVGbtwRSmak5sm7NWng4bybXOR8xU6JYzX0o1xv-k_J-CAqrHagRNSnUrIWL18aq2wnI8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdduledghedvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofggtgfgsehtkeertdertdejnecu
    hfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrg
    hrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffr
    rghtthgvrhhnpeelkefhudelteelleelteetveeffeetffekteetjeehlefggeekleeghe
    fhtdehvdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhm
    pehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsg
    gprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeigvghnqdgu
    vghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehmrg
    hrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhrtghpthht
    oheptggrrhguohgvsegtrghrughovgdrtghomhdprhgtphhtthhopehsshhtrggsvghllh
    hinhhisehkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:zD_9ZjeSHtQLSrqDEVShjsocqcLatrWmxivIWj_wZwtfJRuW6EJu_w>
    <xmx:zD_9ZsNvWYGJToKYyLrj-dgI2TPUgCt41i5tajsQ901T6nlHUkRwnQ>
    <xmx:zD_9ZllkKBDb0qzcSTLam0ufUsbbiulBhbJ5bBLCqofViU7pGziUDQ>
    <xmx:zD_9ZmtBBE6WagAaUqcUpp5GxnqpLaLfSjjd_177UHOherGA_q1LrA>
    <xmx:zD_9ZhqcDdnO6NQR3v_ehPXm6UfZ_bOZbViO0OzmzIlYGcspW5ppEUxU>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/2] automation: preserve built xen.efi
Date: Wed,  2 Oct 2024 14:42:40 +0200
Message-ID: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It will be useful for further tests.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 automation/scripts/build | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/automation/scripts/build b/automation/scripts/build
index b3c71fb6fb60..4cd41cb2c471 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -47,6 +47,7 @@ if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
 
     # Preserve artefacts
     cp xen/xen binaries/xen
+    if [[ -f xen/xen.efi ]]; then cp xen/xen.efi binaries/xen.efi; fi
     cp xen/cppcheck-report/xen-cppcheck.txt xen-cppcheck.txt
 elif [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
     # Xen-only build
@@ -54,6 +55,7 @@ elif [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
 
     # Preserve artefacts
     cp xen/xen binaries/xen
+    if [[ -f xen/xen.efi ]]; then cp xen/xen.efi binaries/xen.efi; fi
 else
     # Full build.  Figure out our ./configure options
     cfgargs=()
@@ -101,5 +103,8 @@ else
     # even though dist/ contains everything, while some containers don't even
     # build Xen
     cp -r dist binaries/
-    if [[ -f xen/xen ]] ; then cp xen/xen binaries/xen; fi
+    if [[ -f xen/xen ]] ; then
+        cp xen/xen binaries/xen
+        if [[ -f xen/xen.efi ]]; then cp xen/xen.efi binaries/xen.efi; fi
+    fi
 fi
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 12:42:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 12:42:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808763.1220774 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svyh1-00084t-9v; Wed, 02 Oct 2024 12:42:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808763.1220774; Wed, 02 Oct 2024 12: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 1svyh1-00084k-5y; Wed, 02 Oct 2024 12:42:59 +0000
Received: by outflank-mailman (input) for mailman id 808763;
 Wed, 02 Oct 2024 12:42: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=3lMz=Q6=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1svygz-0007os-HO
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 12:42:57 +0000
Received: from fhigh-a8-smtp.messagingengine.com
 (fhigh-a8-smtp.messagingengine.com [103.168.172.159])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d7d67e60-80bb-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 14:42:54 +0200 (CEST)
Received: from phl-compute-01.internal (phl-compute-01.phl.internal
 [10.202.2.41])
 by mailfhigh.phl.internal (Postfix) with ESMTP id D44A21140124;
 Wed,  2 Oct 2024 08:42:53 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-01.internal (MEProxy); Wed, 02 Oct 2024 08:42:53 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 08:42:52 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d7d67e60-80bb-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	: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=1727872973; x=1727959373; bh=aS+PJ7LKA9
	tUCRQKTc93IyrC3+X3cz76nEll6rzei8A=; b=OBJHHA3UQea2mdal7HuDJIWLIu
	y2tOnlMGA42dh03CLQ7ZIAFwgk5HG+Dz15f8SvHYLCQYtVIInNiWGNphzKH+BKGZ
	Rc+aB+p9Y2cmz0EN+UK1NV0XZD+5qIWLM+rWWO8ajwOSd8H3m+wvk0kevn9EcaCy
	Y/QOoW0Kp5BB1qZ4X92WlHPNjcX1ljm0eEv1Ejd38X7DaJRPeVqlYl6BflkTQ6+G
	bW4ql2p2PshX3AAEt0s1cpGGCV+E64dTyMaPsXLrw6bE4mPXuB/psiS1D4KCxUjS
	SFkzUokzpQvIpfYicNwO18ZK2QUQAp1Az4brZxddtPC7gbc8CHZGzQieN3Kw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1727872973; x=
	1727959373; bh=aS+PJ7LKA9tUCRQKTc93IyrC3+X3cz76nEll6rzei8A=; b=c
	q9oC+U7HD+MfDspTnAsqGhyZqS3HOIdJAQsWPZMf+nvSjgSmUxp2Ayurp/o2tFfo
	CK2GUZLo+bMHKI6sxAh/iG1MHntRQ3aVeZwjGdrYxcQ0C6LohzCMvU9ydTFPVqj/
	TSt+E6vKN40athXV+dJZuO39hJE3pyP6QvA2BS3kRAet7xEpklQ0KWTAUsZdW/k0
	dRlYysEXWtttvd7929q6UApCNs1vDsjHYf1MWdVn6xd02ppnK7F+EvLZ458uGdwr
	ikZOtfZZfU11ItGAEyTkGKLoAvtdF6l0aXWG8w8UlOTbyZ/On55rzZsJtWbBL00l
	a/DfPdglwQRSUpfnTjMOQ==
X-ME-Sender: <xms:zT_9Zm0sEBP6DXctIXG8AgIA8KDm7yLVUCMh19J-C7jJ41U078HmCg>
    <xme:zT_9ZpH0PmiLD8Yql1UqwmKZQqherz3bjMpWTB5tPV6vxKascx4TXG56q1dyF9IPO
    QyaQSh8bprxow>
X-ME-Received: <xmr:zT_9Zu6_lB0psmOvLmSXGxdwrSAcxT-E-sGkV0BP66I4EpYmMHMHWrxNUorLefRxvzA-y0DlbVl8w6zysWjmTfzFRU3RR0ENtriOiksHe4eEr0kSbxM>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdduledghedvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpedtfffgleejfffhhfdvkeehieeuuefhveffjeejledvtdetgefhie
    ejteelhedvhfenucffohhmrghinhepghhithhlrggsrdgtohhmpdigvghnrdhorhhgnecu
    vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrg
    hrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthht
    ohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepgigvnhdquggvvhgvlheslh
    hishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepmhgrrhhmrghrvghk
    sehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdprhgtphhtthhopegtrghrug
    hovgestggrrhguohgvrdgtohhmpdhrtghpthhtohepshhsthgrsggvlhhlihhniheskhgv
    rhhnvghlrdhorhhg
X-ME-Proxy: <xmx:zT_9Zn34ENXD8VfL9yFc4yH84BKMis3r6wTeUVaL5FDHc0ALFAu0Uw>
    <xmx:zT_9ZpHf-ay-c-Ln8vz0t24Tkr1K9XOn7RRzeZDnHeD94hPydJP3-A>
    <xmx:zT_9Zg8T033pcw2lygKm-8jmA7dC8uwwdFDhD-ErclLjLZAydlKzZg>
    <xmx:zT_9ZukocDydFZr3UXodnY2z6eWOE97Qw5Ky9U1rpcO_rmeZiNJbmw>
    <xmx:zT_9ZpAr30gx8bdNWpemxsFcuIARioejFqwlazaiMgk3vrk8U5YBrrg8>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
Date: Wed,  2 Oct 2024 14:42:41 +0200
Message-ID: <20241002124245.716302-2-marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Check if xen.efi is bootable with an XTF dom0.

The TEST_TIMEOUT is set in the script to override project-global value.
Setting it in the gitlab yaml file doesn't work, as it's too low
priority
(https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).

The multiboot2+EFI path is tested on hardware tests already.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
This requires rebuilding debian:bookworm container.

The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
not clear to me why the default TEST_TIMEOUT is set at the group level
instead of in the yaml file, so I'm not adjusting the other places.
---
 automation/build/debian/bookworm.dockerfile |  1 +
 automation/gitlab-ci/test.yaml              |  7 ++++
 automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh

diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
index 3dd70cb6b2e3..061114ba522d 100644
--- a/automation/build/debian/bookworm.dockerfile
+++ b/automation/build/debian/bookworm.dockerfile
@@ -46,6 +46,7 @@ RUN apt-get update && \
         # for test phase, qemu-smoke-* jobs
         qemu-system-x86 \
         expect \
+        ovmf \
         # for test phase, qemu-alpine-* jobs
         cpio \
         busybox-static \
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 8675016b6a37..74fd3f3109ae 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
   needs:
     - debian-bookworm-clang-debug
 
+qemu-smoke-x86-64-gcc-efi:
+  extends: .qemu-x86-64
+  script:
+    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
+  needs:
+    - debian-bookworm-gcc-debug
+
 qemu-smoke-riscv64-gcc:
   extends: .qemu-riscv64
   script:
diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh
new file mode 100755
index 000000000000..e053cfa995ba
--- /dev/null
+++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+set -ex -o pipefail
+
+# variant should be either pv or pvh
+variant=$1
+
+# Clone and build XTF
+git clone https://xenbits.xen.org/git-http/xtf.git
+cd xtf && make -j$(nproc) && cd -
+
+case $variant in
+    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
+    *)   k=test-pv64-example     extra= ;;
+esac
+
+mkdir -p boot-esp/EFI/BOOT
+cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
+cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
+
+cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
+[global]
+default=test
+
+[test]
+options=loglvl=all console=com1 noreboot console_timestamps=boot $extra
+kernel=kernel
+EOF
+
+cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
+cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
+
+rm -f smoke.serial
+export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
+        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
+        -drive if=pflash,format=raw,file=OVMF_VARS.fd \
+        -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \
+        -m 512 -monitor none -serial stdio"
+
+export TEST_LOG="smoke.serial"
+export PASSED="Test result: SUCCESS"
+export TEST_TIMEOUT=120
+
+./automation/scripts/console.exp | sed 's/\r\+$//'
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 12:43:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 12:43:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808770.1220784 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svyhZ-0000S1-MT; Wed, 02 Oct 2024 12:43:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808770.1220784; Wed, 02 Oct 2024 12:43: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 1svyhZ-0000Rs-JD; Wed, 02 Oct 2024 12:43:33 +0000
Received: by outflank-mailman (input) for mailman id 808770;
 Wed, 02 Oct 2024 12:43: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=3lMz=Q6=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1svyhY-0007os-Os
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 12:43:32 +0000
Received: from fhigh-a8-smtp.messagingengine.com
 (fhigh-a8-smtp.messagingengine.com [103.168.172.159])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ed9a28da-80bb-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 14:43:31 +0200 (CEST)
Received: from phl-compute-12.internal (phl-compute-12.phl.internal
 [10.202.2.52])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 5E2DF114011C;
 Wed,  2 Oct 2024 08:43:30 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-12.internal (MEProxy); Wed, 02 Oct 2024 08:43:30 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 08:43:29 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ed9a28da-80bb-11ef-99a2-01e77a169b0f
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=1727873010;
	 x=1727959410; bh=7/0UCJCwm6rA/xWNes7/Pozgf1OPFzbyYIgmccNS0Po=; b=
	I7trwh/DcATFYaHTbFxvB+D96Rftfw0iREnhTIHVv/+dGSQVODnNYanzA6xOygB1
	KYYlRLhGVKeBK6HMzCiNQ17vJCr/734FRAeHG90+YvNI7ogPgYF52DWe5SksQsZe
	1ZOS3IbcqUxruCwOmWm5wgThLE0DS8jgl6HqTKpHolR2060lVKNJQoxzNQI8YO/t
	PtopcYBcw1NI4t2Ftx0qi95inyCeRwZpRgV52Gplx3EZtXx00zlKA94JeGqEd3Xj
	VPRtugbSdZBGcXR8+Z2sCuakGIGUVCyTgOhCo9BR/MsHuJYbLghp2R9pqrHJw67p
	EFQXAzaz7Oter+IRK+SqxA==
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=1727873010; x=1727959410; bh=7/0UCJCwm6rA/xWNes7/Pozgf1OP
	FzbyYIgmccNS0Po=; b=asCV7gU4rnJexzSLVgFVszDPfc3r5QSHTsIQjGxHqis6
	YLeJpJcUckiKf2eCcycIXde0vRxbKfYU0ogf7c16hBocwGX2ZyLSidKgY1NXUsnB
	UzOkvSUDSb/aoZyh2ASzXkYJLR1I//2eAfWEU5eO/Gu69dOli5LBxwt3NqKvVxwR
	l24J9UitJp867LG3HLs0xglvjaI9w+Np9KwzGZmWU5uXnTWalVmeLVo2yE27khTZ
	p8X5AMX+k3HftYtZu+0ZY0FLSXf6GJX5cAywtRsh8rQxt5tTIOkYmD2m/Tt76VGm
	ZS2CCsbFjAyw/Qa2YJvPBb9YbhSBU2qtGvppu6a9WQ==
X-ME-Sender: <xms:8j_9ZjipaOhoTtqjoRh6peq2IC-MsZ3Q2FFrc8h7fz8EDM78FQ1Tig>
    <xme:8j_9ZgB5LtS3zsm5s9bLrYudazaeWYeTA_CI3Kv5BsjebN0SyKQm9aDtgQpCptffR
    sHJ_2ytarYGrg>
X-ME-Received: <xmr:8j_9ZjHd35vNUcgIqIKM1pHriALZmIxOv7M4INeUTgdu3wUrId6cItxRwvPdVpP_HnQqHNnUEbtJ8ySATtQbz6K_XMXoEFfpDw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdduledghedvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepuddtudeuffeggeejudeftedvueehudekueelleekgffgjeegveehhf
    evfeejheelnecuffhomhgrihhnpehgihhtlhgrsgdrtghomhdpgigvnhdrohhrghenucev
    lhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrh
    gvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthho
    peefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeigvghnqdguvghvvghlsehlih
    hsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopegtrghrughovgestggr
    rhguohgvrdgtohhmpdhrtghpthhtohepshhsthgrsggvlhhlihhniheskhgvrhhnvghlrd
    horhhg
X-ME-Proxy: <xmx:8j_9ZgSgGivOrdzYYnAtogLaM-OI1J66AZdBnbMjx1k-Yvk8T--C8Q>
    <xmx:8j_9Zgx-DX4_DYz69uGVhBrOYAlEMDdjOFe0ERlWCUbp1yQbgYaaWw>
    <xmx:8j_9Zm4P9OZfqq02dXj8OGpq-ei1WbJyQh97SYeU9muWaQWwjZdeHQ>
    <xmx:8j_9Zlz3zKtpIjy0kzkOvzehL_UDV8CwESHpGj59s1dQAFBvI4h23A>
    <xmx:8j_9Zr_AjQlQnh--11q7kIO0sYs9XZNWouPmSMqngvpxd3BDInsDebkF>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 2 Oct 2024 14:43:27 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] automation: add a smoke test for xen.efi on X86
Message-ID: <Zv0_7636eK87pQqd@mail-itl>
References: <20241002124159.716270-1-marmarek@invisiblethingslab.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="gydAsc5+2+Zddl6P"
Content-Disposition: inline
In-Reply-To: <20241002124159.716270-1-marmarek@invisiblethingslab.com>


--gydAsc5+2+Zddl6P
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 2 Oct 2024 14:43:27 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] automation: add a smoke test for xen.efi on X86

On Wed, Oct 02, 2024 at 02:41:55PM +0200, Marek Marczykowski-G=C3=B3recki w=
rote:
> Check if xen.efi is bootable with an XTF dom0.
>=20
> The TEST_TIMEOUT is set in the script to override project-global value.
> Setting it in the gitlab yaml file doesn't work, as it's too low
> priority
> (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
>=20
> The multiboot2+EFI path is tested on hardware tests already.
>=20
> Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingsl=
ab.com>

Sorry, forgot a prerequisite patch - resent now as 2 patch series.

> ---
> This requires rebuilding debian:bookworm container.
>=20
> The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
> not clear to me why the default TEST_TIMEOUT is set at the group level
> instead of in the yaml file, so I'm not adjusting the other places.
> ---
>  automation/build/debian/bookworm.dockerfile |  1 +
>  automation/gitlab-ci/test.yaml              |  7 ++++
>  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
>  3 files changed, 52 insertions(+)
>  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
>=20
> diff --git a/automation/build/debian/bookworm.dockerfile b/automation/bui=
ld/debian/bookworm.dockerfile
> index 3dd70cb6b2e3..061114ba522d 100644
> --- a/automation/build/debian/bookworm.dockerfile
> +++ b/automation/build/debian/bookworm.dockerfile
> @@ -46,6 +46,7 @@ RUN apt-get update && \
>          # for test phase, qemu-smoke-* jobs
>          qemu-system-x86 \
>          expect \
> +        ovmf \
>          # for test phase, qemu-alpine-* jobs
>          cpio \
>          busybox-static \
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.y=
aml
> index 8675016b6a37..74fd3f3109ae 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
>    needs:
>      - debian-bookworm-clang-debug
> =20
> +qemu-smoke-x86-64-gcc-efi:
> +  extends: .qemu-x86-64
> +  script:
> +    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGF=
ILE}
> +  needs:
> +    - debian-bookworm-gcc-debug
> +
>  qemu-smoke-riscv64-gcc:
>    extends: .qemu-riscv64
>    script:
> diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scr=
ipts/qemu-smoke-x86-64-efi.sh
> new file mode 100755
> index 000000000000..e053cfa995ba
> --- /dev/null
> +++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
> @@ -0,0 +1,44 @@
> +#!/bin/bash
> +
> +set -ex -o pipefail
> +
> +# variant should be either pv or pvh
> +variant=3D$1
> +
> +# Clone and build XTF
> +git clone https://xenbits.xen.org/git-http/xtf.git
> +cd xtf && make -j$(nproc) && cd -
> +
> +case $variant in
> +    pvh) k=3Dtest-hvm64-example    extra=3D"dom0-iommu=3Dnone dom0=3Dpvh=
" ;;
> +    *)   k=3Dtest-pv64-example     extra=3D ;;
> +esac
> +
> +mkdir -p boot-esp/EFI/BOOT
> +cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
> +cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
> +
> +cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
> +[global]
> +default=3Dtest
> +
> +[test]
> +options=3Dloglvl=3Dall console=3Dcom1 noreboot console_timestamps=3Dboot=
 $extra
> +kernel=3Dkernel
> +EOF
> +
> +cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
> +cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
> +
> +rm -f smoke.serial
> +export TEST_CMD=3D"qemu-system-x86_64 -nographic -M q35,kernel-irqchip=
=3Dsplit \
> +        -drive if=3Dpflash,format=3Draw,readonly=3Don,file=3DOVMF_CODE.f=
d \
> +        -drive if=3Dpflash,format=3Draw,file=3DOVMF_VARS.fd \
> +        -drive file=3Dfat:rw:boot-esp,media=3Ddisk,index=3D0,format=3Dra=
w \
> +        -m 512 -monitor none -serial stdio"
> +
> +export TEST_LOG=3D"smoke.serial"
> +export PASSED=3D"Test result: SUCCESS"
> +export TEST_TIMEOUT=3D120
> +
> +./automation/scripts/console.exp | sed 's/\r\+$//'
> --=20
> 2.46.0
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--gydAsc5+2+Zddl6P
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb9P+8ACgkQ24/THMrX
1ywMOAf/QfekrM0rpsAUDKZONFDBNhhI11Zs1LDCgAwOPCq2QdWU7Q5QPv6nawl2
NnIgdvfpq9fRV4ogCh/KpO6bpsij1Uxls+bi8grPi63X6Uv2fZ3+2PfYvZaYqSED
AdeqsS2owrCTbazSinimAMvVEn85ev6TrTtwk9TJMk2ADVkoFgCfyX0nE5uVaBzg
BiFTpNubhEGoKr4OGX+jsdOUP5zX7sbplGBy3F6R4ZJ6nKqIyTAnZB/62lZOhKT4
m3LedikJpSLQJCpj2Lz2XCVxNJyP9qIQ885mWu1NMrDxpb/NgFFZO/+D63DgDmHh
UW31TSQaL+ly+IzUN1nRE/a3KZ8ETw==
=hhu+
-----END PGP SIGNATURE-----

--gydAsc5+2+Zddl6P--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 13:08:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 13:08:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808786.1220794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svz5Y-0004aI-GO; Wed, 02 Oct 2024 13:08:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808786.1220794; Wed, 02 Oct 2024 13:08: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 1svz5Y-0004aB-Dj; Wed, 02 Oct 2024 13:08:20 +0000
Received: by outflank-mailman (input) for mailman id 808786;
 Wed, 02 Oct 2024 13:08: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1svz5X-0004a5-G7
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 13:08:19 +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 63ecb6cf-80bf-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 15:08:17 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-53959a88668so6371709e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 06:08:17 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88570261bsm6934734a12.89.2024.10.02.06.08.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 06:08:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 63ecb6cf-80bf-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727874497; x=1728479297; 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=ij3bX1ryoi5r5bo3NWs8NNPzHhMdxDOp9tqLc+uQiME=;
        b=VF8GTQGDHnWGP30i+32+0CV+Rv1m2oYmXJO6oifPwqoDER2WAftI0W+31g43YnVo23
         9C8OpZpoVsDGA+neSGbPmXO2kBf3lyrfFhaTQkuQ1gDMqRwV6tj+rcszQblsosgoCLgt
         BXbRGeDRtAV7FUfccd9UnBTKF/l5Nk2UP+dJs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727874497; x=1728479297;
        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=ij3bX1ryoi5r5bo3NWs8NNPzHhMdxDOp9tqLc+uQiME=;
        b=xS3Vwyn9GKkNsEBy4EAfnn8/Gkj6LphmpTydhe2iEddK+yCf1pNurVeuPUnaZ1kAoI
         dBoV6xVp9m3Ubaoq6Y2GaGJ/CUb8pTfYvR/KcF2BqsnmGrVMvkiO+tUwiUa+jyVfeMIm
         twYW3lK9d+JgHcXW5G6g2y6dq2TrXU8976KSdgXFF48KdezQGPjcdU+fmij4exeYbANZ
         ylQWxgr+jU6RsxdMPkmAYh/gcV8iHS9fdXp4siJP3n+H4rIlLOl+J6pOKBtF/nrSngOV
         PZZcIbB9AqDeBdOkgaZtG88XJLHawnT3N7RUSdHUV5DUtnC89pbvKf7tHiPfs+JtrYdG
         sHsQ==
X-Forwarded-Encrypted: i=1; AJvYcCVNtTSesiHYACUCv3ekuhg899LWS00pX9BB4k9Mz4UVS0VgkSgMQNkBoTG5X95OKcYmhmzy+BjtYoU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxLcJyAmB+BUh8seXeBGaQtL9pVSOvYHIYE54JuA3UZalRlT81z
	Hl4pFJosG+BKQPRh1i3jeQNbUOyS9KnNoeJE5AspNg9AoemYhTdQo4LQ1znW+jw=
X-Google-Smtp-Source: AGHT+IHTMhGMSjFqN+ZdRPD1aUJICMRam0JsvzbB/sLN0DfDWqzETOHhgQ2U9U92xGtTsuxEdxtYHg==
X-Received: by 2002:a2e:4619:0:b0:2fa:c014:4b6b with SMTP id 38308e7fff4ca-2fae10a90c5mr13897491fa.41.1727874496867;
        Wed, 02 Oct 2024 06:08:16 -0700 (PDT)
Message-ID: <de6809f6-de70-457d-a430-774d6b2b94b6@citrix.com>
Date: Wed, 2 Oct 2024 14:08:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/kexec: Separate code and data by at least 1 cacheline
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002103052.1797237-1-andrew.cooper3@citrix.com>
 <b917b21a-6d2b-46b2-a30d-7bab5ebff631@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <b917b21a-6d2b-46b2-a30d-7bab5ebff631@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02/10/2024 1:08 pm, Jan Beulich wrote:
> On 02.10.2024 12:30, Andrew Cooper wrote:
>> No functional change, but it performs a bit better.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

>
> A question nevertheless:
>
>> --- a/xen/arch/x86/x86_64/kexec_reloc.S
>> +++ b/xen/arch/x86/x86_64/kexec_reloc.S
>> @@ -19,6 +19,7 @@
>>  #include <xen/kimage.h>
>>  
>>  #include <asm/asm_defns.h>
>> +#include <asm/cache.h>
>>  #include <asm/msr-index.h>
>>  #include <asm/page.h>
>>  #include <asm/machine_kexec.h>
>> @@ -174,6 +175,9 @@ FUNC_LOCAL(compatibility_mode)
>>          ud2
>>  END(compatibility_mode)
>>  
>> +        /* Separate code and data into into different cache lines */
>> +        .balign L1_CACHE_BYTES
>> +
>>  DATA_LOCAL(compat_mode_gdt_desc, 4)
>>          .word .Lcompat_mode_gdt_end - compat_mode_gdt -1
>>          .quad 0x0000000000000000     /* set in call_32_bit above */
> Because of L1_CACHE_BYTES being 128, you indeed put at least 1 cache line in
> between. Is that necessary, though? Just starting data on the next cache line
> ought to be enough?

Correct.  Specifically, we want the write into compat_mode_gdt_desc not
hitting a line in L1i.

> IOW if and when we adjust L1_CACHE_BYTES, we won't need
> to touch this again, just that the title here then would end up slightly
> misleading.

Oh - I'll just copy the comment and say "different".  That is slightly
poor grammar.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 13:41:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 13:41:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808792.1220804 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svzbv-0001kc-Sk; Wed, 02 Oct 2024 13:41:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808792.1220804; Wed, 02 Oct 2024 13:41: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 1svzbv-0001kV-Pr; Wed, 02 Oct 2024 13:41:47 +0000
Received: by outflank-mailman (input) for mailman id 808792;
 Wed, 02 Oct 2024 13:41: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=UKgj=Q6=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1svzbu-0001kP-Kg
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 13:41:46 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20631.outbound.protection.outlook.com
 [2a01:111:f403:2415::631])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0fdaab1f-80c4-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 15:41:45 +0200 (CEST)
Received: from PH0PR07CA0051.namprd07.prod.outlook.com (2603:10b6:510:e::26)
 by CY5PR12MB6432.namprd12.prod.outlook.com (2603:10b6:930:38::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.27; Wed, 2 Oct
 2024 13:41:36 +0000
Received: from SN1PEPF000397B2.namprd05.prod.outlook.com
 (2603:10b6:510:e:cafe::46) by PH0PR07CA0051.outlook.office365.com
 (2603:10b6:510:e::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16 via Frontend
 Transport; Wed, 2 Oct 2024 13:41:36 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SN1PEPF000397B2.mail.protection.outlook.com (10.167.248.56) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8026.11 via Frontend Transport; Wed, 2 Oct 2024 13:41:36 +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.39; Wed, 2 Oct
 2024 08:41:34 -0500
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.39; Wed, 2 Oct
 2024 08:41:34 -0500
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.39 via Frontend
 Transport; Wed, 2 Oct 2024 08:41:32 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0fdaab1f-80c4-11ef-a0ba-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=AIsBVZPGf3ZFKznco2wv+nJYU1sAd4rwsiPolXbHlEIou2H3LfJTw5zMD0lgy7uLqDBrEK4UpwSVtEGacJBNpt5JVfNGjI+l/tJhLOW/Rxk9/F+uvljmGjzx49C1j4lhLJoOUysLY3o2OTuhGF5aI3B4uI55ZYcmwFyGyMG1NrywgtG6HR4JTFBmCEj72QxpFsils4i/bIOH7sEJA5H3l3pZ3DX/uMDhnbjrG21YQWGVfgReIFwmdKSvK8c2GwOU/PKx+Knt+xnsDoj6BmmRjbBTpU9+ZVwH5qA8M+GuIY3UHUkry0XwwHXmZM9tADqu4udMnqN2XIv/Xp+eTKjY5A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=WVJo00h3ominfYVlQ3abMRqffcTEP869XveZHmn3nKE=;
 b=DiyebR3vTvYxPnyySl5/sc0RgJ83HgrmxNU0lwww1o2nOQQEV2c7aA0ayWQ7NsL3S6+LnhhSomEt6E/B7XZyDzEQNNFuU62rzO/waAO6anEgiWrRnStBzTvMT5B2HGlEVuGZymkiBZaRggFw0Nkt0Fktc/90sOndOndiwHZCfNpxG3k7+qZ83XFDzYhOUNJs5Wr2Pq5wmgEwWt1O/TIwXGvHQJLevdb9V/PksRmmNUdcNwUVjKdBIRd/gCc5Y/40a/NGkTus6kM7AoYo0BpybHYxrbIBHrNFH7nVyFEjqHaGbhylGZc5ae1+Feveg+m3SOG4k7d/ZNDheXWURB8zwA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=WVJo00h3ominfYVlQ3abMRqffcTEP869XveZHmn3nKE=;
 b=yUlqJQyf/hUXxj5qBid5DMCwW4OHkeNcqb7vq/n9ihTVI51rPStIZfSciNZmWtsoK+R+ojIJLMfgv6zjCaMVYxE0olUSYMqSinTJFjx2S6rjUgYSwxqY+KWy+MsskNQxjqtiIbyvW4P/giWsy8K1YqnfjpKt/S0hRSmBmaIITwo=
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: <1c930c7a-50a4-403d-a867-b569e1efced6@amd.com>
Date: Wed, 2 Oct 2024 15:41:31 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen: move per-cpu area management into common code
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>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Shawn Anastasio
	<sanastasio@raptorengineering.com>, Alistair Francis
	<alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, "Connor
 Davis" <connojdavis@gmail.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>
References: <584dab4111041a660377f677cd829d4b2b4b8b2d.1727714022.git.oleksii.kurochko@gmail.com>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <584dab4111041a660377f677cd829d4b2b4b8b2d.1727714022.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397B2:EE_|CY5PR12MB6432:EE_
X-MS-Office365-Filtering-Correlation-Id: 31384350-8ffd-4550-24b8-08dce2e7ef5e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|7416014|376014|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?U0p3Mk1UOU10b1YxaUw4SmpJRXFpZSs0eERSMEczS3dReUgrVzAyTCtZNVo4?=
 =?utf-8?B?Zko2ZlRZbnZmTDc5cVlaU1hERHo3cVB0aHk4UkZoSUpPVEUwL0ZieHhXaHVm?=
 =?utf-8?B?Uk1hYnRZUXRROVNjNWRiQlBmMFY4WmxTYXc1eExJYWJpVG55MWpnczYyby9C?=
 =?utf-8?B?SHRSVHkvRkxqSzFvRUh4V3kyY3g1czVibFVTeHBaTm4ybEdKT2hjUUdOc200?=
 =?utf-8?B?Y211M1pKUElZNitabkJ3SklPZE5oeWNlWUIyQjY3VFdpenE3Tm9NYUx2VExB?=
 =?utf-8?B?R1MxRXFkNnhhRjZwMkJzT1VyMHFMWjZhTzB0aG1ENFNUYzBRM1YxekdIVC81?=
 =?utf-8?B?azRhN0FtbHpad0xUN2VFMEd5R1hFaUs0cjdwUnUvc0d5VHhRVVd2UXhKa2Uv?=
 =?utf-8?B?QjVwUlYrMGZqcEU4c3E5eER0NU8ySzk3bVFJKzRkbkd6RktKM1dqZis2RHlJ?=
 =?utf-8?B?WGQvSERma1JRMk1wdDVydTZpR0M1UFRVYWVzUFM4UHFOQ3czaE5Ed2E5bE9H?=
 =?utf-8?B?dWx0cVBnVHpBRm5Xck53dnRkREp3OVVvc1ByWkpBUzQ2OFlDOVdmRk5XZUxS?=
 =?utf-8?B?UlFMOGxJRitOS29rR0xoR3YvL2RoNkxDUjRGeVFJUDBJcVJ1N01EVnM4MTVn?=
 =?utf-8?B?WXVjeUc2dFpCQ2VvSENNZEJxbCt3SEplS1JVSklmT1BrYmxhZ2hnWk5PK0Mr?=
 =?utf-8?B?K0h6MW5FRGpWZU9zKzRYN3licWtBMWY3c2JLVFVTT2RMV3FZSmRUUWZVZDcy?=
 =?utf-8?B?WmIzWlprYjdRbTd2OFlOUFRKYmV6VXA4Tm9sNDJEKzBLcEdPN3FHM0RsZUt4?=
 =?utf-8?B?elNIMFJnUHowUmVsZ3E2S2hEQmJWejBBdGNmMHBmVHUyQnFDUFJRcmErVjBI?=
 =?utf-8?B?enNEZVJabisrV1BKdFZjNUdqWlV4YTczQk9KcllVY2I4OWpwZmVHOUN5NEhy?=
 =?utf-8?B?K3hzZG1ZdVBRKzd5WmR6OHN5NEpTa0ZmbHZiSEFBWUY2a2xOZ0dFRFJMMUt2?=
 =?utf-8?B?em04cHlhTjNMN3ljei81TFNybGtXcWRpUUZkZDVKWjZtdC9uQnJ0ZDZyRGdE?=
 =?utf-8?B?Q0JhNHZzWXMxbkx1Rjg0QVZoT2g5a0RrY0pSS1ExQVVPVDNaUmRuOFg3Q21k?=
 =?utf-8?B?TTJzUnY0NXI2ejZmRDBFcDgwL0tXSmU0dDBVSGtTbHE5TVNha0hyVW9hL3dq?=
 =?utf-8?B?aGJxZDFva05Cd0taaG95cVVGUjhqRFpTUTFRNnpPSTlBVS9hRHhvRlpTcnlL?=
 =?utf-8?B?YlZzVFpMMm5jejB3Y0ZTclYxK01uc282V1AxbkR4ZXJmWDhtUlNuQWV6ZWNh?=
 =?utf-8?B?RXErOXVuMG82Yzc3UW5DdkhWOVVBZWZkSDBKM1liUktEcTAxOUxPVWRNdXRa?=
 =?utf-8?B?SENrZm4yQkhHWkR5dzE0UW8ya0N1VWpxQ1VmSXlmNS95Qjhuc2dVcjk5MVJ0?=
 =?utf-8?B?VExCeGhNQmxOR0xTcGRVanlvT0o0Mnd4MlIrSmVFY3VuTWlRUjZmUitQT1Fk?=
 =?utf-8?B?MmVrNEpjdjVZRVBDcHg1emRRNHloTDZmYVlkcWJJRXNZYjhxOThpU2xGNklK?=
 =?utf-8?B?ODBzeFBmTVlpZ2ZtR0xHSG1hVWhzSXo2ZVZiaUhiRkZ1a2pzb3dNbm5QZkJK?=
 =?utf-8?B?cUdjVXRWVHV6UVJwbzdJZC9TSXZtVFl5aWJWU2hRZkczRm9KeGlPZTVnK3Ew?=
 =?utf-8?B?NzkwY1BSMmJaKzFyWHVucXFTZmtlNndBc1ozeUhlMXBFamV2T292Ulk2VE55?=
 =?utf-8?B?eEdLZTBsV1NlQnNNQTE1b0NuTXRvbEtrdFlGcWxXQUtGYWVlR1NoRGZsMHQr?=
 =?utf-8?B?VlhSSVIxYlZibU1RTVZOa2ovSHdSd3dMQ1VLdkxPVE1rK292YTFacC8rc0JZ?=
 =?utf-8?Q?/fX8v2oNlHUve?=
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:(13230040)(82310400026)(7416014)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2024 13:41:36.0233
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 31384350-8ffd-4550-24b8-08dce2e7ef5e
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:
	SN1PEPF000397B2.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6432



On 30/09/2024 18:39, Oleksii Kurochko wrote:
> 
> 
> Centralize per-cpu area management to reduce code duplication and
> enhance maintainability across architectures.
> 
> The per-cpu area management code, which is largely common among
> architectures, is moved to a shared implementation in
> xen/common/percpu.c. This change includes:
>  * Remove percpu.c from the X86 and Arm architectures.
>  * For x86, define INVALID_PERCPU_AREAS and PARK_OFFLINE_CPUS_VAR.
>  * Drop the declaration of __per_cpu_offset[] from stubs.c in
>    PPC and RISC-V to facilitate the build of the common per-cpu code.
> 
> No functional changes for x86.
> 
> For Arm add support of CPU_RESUME_FAILED, CPU_REMOVE and freeing of
> percpu in the case when system_state != SYS_STATE_suspend.
Behaviorwise there is no change for Arm given that none of these actions can be executed.
That said, by looking at the code I realized that we never call CPU_REMOVE so it is effectively
a dead code.

As for the change itself:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

with one question below ...

[...]

> +static int cf_check cpu_percpu_callback(
> +    struct notifier_block *nfb, unsigned long action, void *hcpu)
> +{
> +    unsigned int cpu = (unsigned long)hcpu;
> +    int rc = 0;
> +
> +    switch ( action )
> +    {
> +    case CPU_UP_PREPARE:
> +        rc = init_percpu_area(cpu);
> +        break;
> +    case CPU_UP_CANCELED:
> +    case CPU_DEAD:
> +    case CPU_RESUME_FAILED:
> +        if ( !park_offline_cpus && system_state != SYS_STATE_suspend )
> +            free_percpu_area(cpu);
> +        break;
> +    case CPU_REMOVE:
> +        if ( park_offline_cpus )
> +            free_percpu_area(cpu);
> +        break;
Aren't we missing default statement here as per MISRA C 16.4?
I think we only allow to drop it for enums.

~Michal


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 13:42:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 13:42:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808798.1220813 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svzcf-0002I0-8o; Wed, 02 Oct 2024 13:42:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808798.1220813; Wed, 02 Oct 2024 13:42: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 1svzcf-0002Ht-6H; Wed, 02 Oct 2024 13:42:33 +0000
Received: by outflank-mailman (input) for mailman id 808798;
 Wed, 02 Oct 2024 13:42: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=Tl1C=Q6=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1svzcd-0001kP-FH
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 13:42:31 +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 2bb58680-80c4-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 15:42:30 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-5398df2c871so4551256e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 06:42:30 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5399f98281bsm333352e87.210.2024.10.02.06.42.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 06:42:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2bb58680-80c4-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727876550; x=1728481350; 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=hpzR6wPZSpC4EkfaQznkhdhnQj6hr870Dz8nP0zCGCg=;
        b=FBG/D25v3aBwb+aJM9QFuH2REy1y2PiDEJXxrlTiuu58OIBLpk9PerUH+sm+klgEdg
         trpu/fz8X6jiFNkQlRVuxgxZi3/4t0cztge0MQ2DJpEMSjsebJeS8NYJJNGP0ggJ8/ta
         bsc7aogtDRw87odHUSRZeSGwRSRWS8Rwk6JrqRKaB1lVZ3XRTuAxoDkDOpR6NfDDxdbK
         m6NzfUCt5dAqfhnbjfoOvnqFL6WacWnqVodjXAQ0rsoebaJJNPDptUkAlJd1qaDVapLq
         M1C5kb/tEnxXAL0RWOy+a99kpuEeFm4KfKC+VtJ+w1Os3qGh39DYD9OdeTJZsy9njQAp
         lB7A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727876550; x=1728481350;
        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=hpzR6wPZSpC4EkfaQznkhdhnQj6hr870Dz8nP0zCGCg=;
        b=Kf6dfQwmNB8RjgEe77ZSzGBx9/yu0wehWpaD8mYmng3CbH3YvwERX63TYJbwmzURRe
         UbZ02utAs5QV7WerST/4stGUZfkikpUS6yNaq6uXGhkqpFIw/rYOAdzN9BjImec9r0Sy
         OGHvu1B/Z86hOMCrl/mO1O/3tym12FzrnFIQIXIEPWGGWFoWSWQSRrujisSJ8awlz9Nk
         LySspYRDslzvjfb3PITVCbhExxpWlWczWWw1wXHlvK2QMFKStoSFniVgB7+r2V9hciOM
         ZgkrVuqz6Ce0y3Vrh4LQLtzkAQNLztSIyX2/MUsF7Z6JWtG/7f+Ha36kWIaTKxpXq69y
         Y5qA==
X-Forwarded-Encrypted: i=1; AJvYcCUJvJuXYn/i9Xq6zbgo3pYkSmQ8AavJ2al7quKKZXmS4O6c1iLQGRvxPq5pjVVnASQZ3aE4rY5xLzg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyXQ8iOxCPJVfJil4fxY2VH0AvrazsJFo8ttuTfMG8oP3wePSNt
	Et8el8MHBz5nPXCbxNvk/bWMrD+8Eu7cV9OdQIjYbIsYl3VSI5L4
X-Google-Smtp-Source: AGHT+IEcFwz9+hVWJOrZwKEt48jDUpN6pHVx4WPM5yPMO69a6N610bxj6RquaB/mFFan5/ZIbSazvg==
X-Received: by 2002:a05:6512:3088:b0:533:46cc:a736 with SMTP id 2adb3069b0e04-539a0795bbdmr1926895e87.37.1727876549808;
        Wed, 02 Oct 2024 06:42:29 -0700 (PDT)
Message-ID: <7a087c1844019ea49757b1390ad3fe496b7b2c35.camel@gmail.com>
Subject: Re: [PATCH v1 3/3] xen/riscv: register Xen's load address as a boot
 module
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 02 Oct 2024 15:42:28 +0200
In-Reply-To: <1bd67367-0928-4f16-958c-f45612689346@suse.com>
References: <cover.1727708665.git.oleksii.kurochko@gmail.com>
	 <2bd3589f322d30e93d81d091ca64439048c068fc.1727708665.git.oleksii.kurochko@gmail.com>
	 <178b61bc-d3e5-4c9d-a8c0-88363911bc8f@suse.com>
	 <418443ea4017c401d944971898cb298ef2f826d6.camel@gmail.com>
	 <1bd67367-0928-4f16-958c-f45612689346@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Wed, 2024-10-02 at 14:11 +0200, Jan Beulich wrote:
> On 02.10.2024 13:25, oleksii.kurochko@gmail.com=C2=A0wrote:
> > On Tue, 2024-10-01 at 17:49 +0200, Jan Beulich wrote:
> > > On 30.09.2024 17:08, Oleksii Kurochko wrote:
> > > > @@ -26,6 +27,8 @@ unsigned char __initdata
> > > > cpu0_boot_stack[STACK_SIZE]
> > > > =C2=A0void __init noreturn start_xen(unsigned long bootcpu_id,
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 paddr_t dtb_addr)
> > > > =C2=A0{
> > > > +=C2=A0=C2=A0=C2=A0 struct bootmodule *xen_bootmodule;
> > >=20
> > > With just the uses below this can be pointer-to-const. Question
> > > of
> > > course
> > > is whether you already know of further uses.
> > It could be dropped as it is used only for BUG_ON(!xen_bootmodule)
> > as
> > it looks to me a little bit better then:
> > =C2=A0=C2=A0=C2=A0 BUG_ON(!add_boot_module(BOOTMOD_XEN, 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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 (_end - _start), false));
>=20
> Yet that's undesirable for other reasons. Did you consider
>=20
> =C2=A0=C2=A0=C2=A0 if ( !add_boot_module(BOOTMOD_XEN, virt_to_maddr(_star=
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 _end - _start, false) )
> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 BUG();
>=20
> ? Maybe panic() would be even better for cases like this one.
It looks fine to me. Thanks for suggestion.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 14:04:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 14:04:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808807.1220824 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1svzy7-0005r9-VA; Wed, 02 Oct 2024 14:04:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808807.1220824; Wed, 02 Oct 2024 14: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 1svzy7-0005r2-SI; Wed, 02 Oct 2024 14:04:43 +0000
Received: by outflank-mailman (input) for mailman id 808807;
 Wed, 02 Oct 2024 14:04: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=3lMz=Q6=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1svzy6-0005qw-Uq
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 14:04:43 +0000
Received: from fhigh-a1-smtp.messagingengine.com
 (fhigh-a1-smtp.messagingengine.com [103.168.172.152])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4396be8c-80c7-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 16:04:40 +0200 (CEST)
Received: from phl-compute-04.internal (phl-compute-04.phl.internal
 [10.202.2.44])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 10A4C114009C;
 Wed,  2 Oct 2024 10:04:39 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-04.internal (MEProxy); Wed, 02 Oct 2024 10:04:39 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 10:04:36 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4396be8c-80c7-11ef-99a2-01e77a169b0f
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=1727877879;
	 x=1727964279; bh=5lQqEsdx0CFV7+w9KNwfj3mLkJMhU7CBwPratBvDi3w=; b=
	hIV9z2B9/BLfUEiQ2A3FY1yj2FEym8969VU9WjG4M1gu13dm0gxmzuqrHJcRU/O5
	SqIG1JxbrKnzlB3tKfPv8UWE/8nhSe8SyaJsIRGMeucdJxVqOzZX6ivAqbFV2tGz
	O1JN9b/TrK8PpPlhLPcptJj1+97XQlb0hMFnr1R+tR8pE2XwmW6ip2/e34hrs2lq
	CUX6ItowRkMCqpeN26vhXrhbjJr39QjjcVN+abrkoB39Z2mrCrdgUC1PdaSWESVU
	2yX1kbCGOi1GObzib/WjXyLg9LrOmynlzOuESMWz5k5VNztNCimMFf4vmEWZV+my
	SqAEXiPtnR8dPlB2HWJTDQ==
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=1727877879; x=1727964279; bh=5lQqEsdx0CFV7+w9KNwfj3mLkJMh
	U7CBwPratBvDi3w=; b=Clu1G4ssXZiZYzbTV9Aj0+kiLiZsk/b3f2iqksUTW+Fb
	KUDu/YSGJsKwdMCm4RzgcMCjgvfiZQEfu+WPW1G+JMupCa2TBzB9C+0Skm8DlYNE
	M6RayYC0nW35MzhCrtytANztPlstxCfAeeFo7YdfFX1D1C5BzMt2rse4XC5LTx20
	iiazTmdfudiTjx72wfKXdgaUxNt+rXwbLR4lSmG2Ym9pSvz8EoB/Q7+kRbMy3egd
	L1zklEytOfQ1gqX9PzFRD2rZikDvyG6+zA/cwYpsS4amfBtWdF4dWMmNtDL7pGAL
	/HKOeaweSEsCz4D2p+CgURwR1FdAv0SQ01ptnfxYfQ==
X-ME-Sender: <xms:9lL9Ztoh5_cqA6p9uX7E_xxlzgcoBd4RPpKKop9h5tihzjByNMlHyw>
    <xme:9lL9Zvphwb6s6GfD6vWHvlm-kEODFoV9XlTpHE88OwSs-S5sGncKWlCL-hwhhSwll
    wfR1tO8gxpExA>
X-ME-Received: <xmr:9lL9ZqOrNQwUt7mmnFOKeasAF_uI5m0CfWX9CUz3LcOFr7nYo46nyIOafmNT-oPuJONFYeCZwMY9lLsGugKzUJELzuhBrckiRg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdduledgieekucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepveeujeetgeelleetudeuvefhtefgffejvedtvdfgieevheetheelge
    euledvjeevnecuffhomhgrihhnpehgihhtlhgrsgdrtghomhenucevlhhushhtvghrufhi
    iigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeeipdhmohguvgep
    shhmthhpohhuthdprhgtphhtthhopehfrhgvughirghnohdriihighhlihhosegtlhhouh
    gurdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhho
    jhgvtghtrdhorhhgpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdprh
    gtphhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghp
    thhtoheprhhoghgvrhdrphgruhestghithhrihigrdgtohhmpdhrtghpthhtohepughpsh
    hmihhthhesrghpvghrthhushhsohhluhhtihhonhhsrdgtohhm
X-ME-Proxy: <xmx:9lL9Zo7yNUTsyBKgg6Oj-ja8kOewXC-3SAl-Wkybq-jhXQ75Z1PHGQ>
    <xmx:9lL9Zs6eD35TrZTW5KZBtwI1R6w7jhy2xi6-p7cXfLGB5BnOxeskdA>
    <xmx:9lL9ZghOIkCSZIUYYe060OaBOhauIF01-CusklEWy1ZISp0ALmmJlA>
    <xmx:9lL9Zu76s3JMSe1AA5uUNp9mFkNtQ2HA2Pl9HLQaxASN8gkGKOfTZw>
    <xmx:91L9ZmQ-DvyKz3ePyF3Z-aWrwz76T0nd-EscQ-MYrcvOQzE7cAA1GeQY>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 2 Oct 2024 16:04:34 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code
Message-ID: <Zv1S88isxSSMuqqk@mail-itl>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="o0uWTmDI7XYT7Mcq"
Content-Disposition: inline
In-Reply-To: <20241001102239.2609631-1-frediano.ziglio@cloud.com>


--o0uWTmDI7XYT7Mcq
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 2 Oct 2024 16:04:34 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code

On Tue, Oct 01, 2024 at 11:22:37AM +0100, Frediano Ziglio wrote:
> This series came from part of the work of removing duplications between
> boot code and rewriting part of code from assembly to C.
> Rewrites EFI code in pure C.

The MB2+EFI tests on Adler Lake fail with this series:
https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/1478766782
Looking at the VGA output (unfortunately not collected by the test
itself) it hangs just after bootloader, before printing anything on the
screen (or even clearing it after bootloader). The serial is silent too.

It does pass on Zen 3+ runners.

Since there were some issues with the ADL runner today on plain staging,
I'm not 100% sure if it isn't some infrastructure issue yet. But the
symptoms look different than usual infra issues (and different than
todays failures on staging), so I think it's more likely an issue with
the patches here.

> Changes since v1, more details in specific commits:
> - style updates;
> - comments and descriptions improvements;
> - other improvements.
>=20
> Changes since v2:
> - rebased on master, resolved conflicts;
> - add comment on trampoline section.
>=20
> Changes since v3:
> - changed new function name;
> - declare efi_multiboot2 in a separate header;
> - distinguish entry point from using magic number;
> - other minor changes (see commens in commits).
>=20
> Changes since v4:
> - rebase on staging;
> - set %fs and %gs as other segment registers;
> - style and other changes.
>=20
> Changes since v5:
> - fixed a typo.
>=20
> Changes since v6:
> - remove merged patch;
> - comment and style;
> - change some pointer checks to avoid overflows;
> - rename parse-mbi2.c to mbi2.c.
>=20
> Frediano Ziglio (2):
>   x86/boot: Rewrite EFI/MBI2 code partly in C
>   x86/boot: Improve MBI2 structure check
>=20
>  xen/arch/x86/boot/head.S       | 146 +++++++--------------------------
>  xen/arch/x86/efi/Makefile      |   1 +
>  xen/arch/x86/efi/efi-boot.h    |   7 +-
>  xen/arch/x86/efi/mbi2.c        |  66 +++++++++++++++
>  xen/arch/x86/efi/stub.c        |  10 +--
>  xen/arch/x86/include/asm/efi.h |  18 ++++
>  6 files changed, 123 insertions(+), 125 deletions(-)
>  create mode 100644 xen/arch/x86/efi/mbi2.c
>  create mode 100644 xen/arch/x86/include/asm/efi.h
>=20
> --=20
> 2.34.1
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb9UvMACgkQ24/THMrX
1yxxXggAhkNXUPwtMm5WYb8vxh4ORDoIB8O8LA5pWsByrw8xz6e78rfLtnW9AAsO
ZEpuyWSVhaie8jPzM1HTIUbxyBteSlbsRIIsR9mjoMlgEp5DUgEP6HCLKSiPs2H3
YXPchdg0Q3xOui31+L9hD9OF5m+gLOn+vpKZLErLAFuzA5tGhQU3aRL+3T2frgCH
TkHWbReFX/Yp31QBPXg8GKhKjnBmwnwG7SMWs17nD9dVd7ORlJqgIQkfDMr7icaD
IAcZPbvwRnlh37nhTsEhRUqZ5GClKWCIo8T7wI9x4/TnMST/RhoZjiJf9YTWEO+n
lUjF0E4LjYYd29zymMLUBiNTbZ6c1g==
=ZRAU
-----END PGP SIGNATURE-----

--o0uWTmDI7XYT7Mcq--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 14:15:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 14:15:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808821.1220866 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw08S-0008HE-7j; Wed, 02 Oct 2024 14:15:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808821.1220866; Wed, 02 Oct 2024 14:15: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 1sw08S-0008H7-2o; Wed, 02 Oct 2024 14:15:24 +0000
Received: by outflank-mailman (input) for mailman id 808821;
 Wed, 02 Oct 2024 14:15: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 1sw08Q-0008Gw-SK; Wed, 02 Oct 2024 14:15: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 1sw08Q-0001TH-Qk; Wed, 02 Oct 2024 14:15:22 +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 1sw08Q-0006nr-5W; Wed, 02 Oct 2024 14:15:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sw08Q-0007oT-4y; Wed, 02 Oct 2024 14:15: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=FoFyAkAo68YB72tmO5EWbC+JkL3DRK7aIU4pXK8zpeM=; b=OV4hhSLZrYenfdu0NZCiTUVVLm
	KB1WKEqon4ekBoLP1J3aYr9fMt2g2Dmok86qDqqt9U9RAFA/463ZFE4GsbLMNiFGkyFR7xuS1g/9x
	JlGcONM74jASjJIPDkUuvRfSUbn1ahDPgQjPbT3DNb/XvCIvTOc19QYDVs0hWRbX7oLo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187930-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187930: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl: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-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-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2: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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=633ee8b2df963f7e5cb8de1219c1a48bfb4447f6
X-Osstest-Versions-That:
    xen=94423b8f75bd786043f8e9bb2809675007225329
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 14:15:22 +0000

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

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 187916
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187916
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187916
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187916
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187916
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187916
 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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-arndale  16 saverestore-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  633ee8b2df963f7e5cb8de1219c1a48bfb4447f6
baseline version:
 xen                  94423b8f75bd786043f8e9bb2809675007225329

Last test of basis   187916  2024-10-01 03:16:10 Z    1 days
Testing same since   187930  2024-10-02 01:39:53 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alejandro Vallejo <alejandro.vallejo@cloud.com>
  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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   94423b8f75..633ee8b2df  633ee8b2df963f7e5cb8de1219c1a48bfb4447f6 -> master


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 14:32:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 14:32:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808831.1220875 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw0Oe-0003B6-KT; Wed, 02 Oct 2024 14:32:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808831.1220875; Wed, 02 Oct 2024 14: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 1sw0Oe-0003Az-Hm; Wed, 02 Oct 2024 14:32:08 +0000
Received: by outflank-mailman (input) for mailman id 808831;
 Wed, 02 Oct 2024 14:32: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=0dTQ=Q6=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sw0Od-0003Ar-32
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 14:32:07 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 17098849-80cb-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 16:32:04 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1727879517723838.4524839346197;
 Wed, 2 Oct 2024 07:31:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 17098849-80cb-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1727879519; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Yz+QYC9ymBwvZKj43kKwKFR9mbNoT6jw4xhPuxZ+7PRHbg5ph0fJ2oT9fzwgXzWOi4HeFO8/3RG+36ulndY6lvPe6JuSf5Mm8NwUIWchz7XlHs5GbKMO8bYgqkEpq252iSn1IS6pymnqsnEcrfWtXq6yHZfYG39ZVFrHQd4L1Es=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1727879519; 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=i35ARlYwDuWmwyEfs1kR/M+7Lobwd15oia36lQLOm/s=; 
	b=OWLIacYWFnATDgU58ixgAocfdecVCsztsrbNdKyN6Uchqw/gSks66lafbOQ+JrhEVSZb2gd+rU/VioCs5ElYTiz6QBN+2XRLNgjRKIjYAeunkDSGOP9mKxwVJ5jKxFu+Utk1E2LcRaKYSITTMI2jmo3eriFVjwVgSphLN2fZl4k=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1727879519;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=i35ARlYwDuWmwyEfs1kR/M+7Lobwd15oia36lQLOm/s=;
	b=gii2Zt6lA1Rpgm9l3mYmlAOuvvCwqNCrk0BcdsyiArqR+iODiklEsK+s8lgC7O8J
	wmr326Tzfuaze9Ptd8QasB+g4mdCf1otl0J0h7aUb52+9j7ZnwA1rQukF4oudB5Yzva
	tzoVH64soLH+YObXvKstVedBlpoOk6kJzZzAn2Pk=
Message-ID: <1adbaea9-40b8-4cec-9871-599fde168925@apertussolutions.com>
Date: Wed, 2 Oct 2024 10:31:50 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 1/2] x86/boot: Rewrite EFI/MBI2 code partly in C
To: Frediano Ziglio <frediano.ziglio@cloud.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>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <20241001102239.2609631-2-frediano.ziglio@cloud.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241001102239.2609631-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/1/24 06:22, Frediano Ziglio wrote:
> No need to have it coded in assembly.
> Declare efi_multiboot2 in a new header to reuse between implementations
> and caller.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

I unfortunately do not have time to test this myself, but I have given a 
read through and it looks good to me. I will give it an R-b and let 
Marek provide the A-b when he is comfortable that CI failure is an 
artifact of the test system and not this series.

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 14:35:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 14:35:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808834.1220886 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw0RP-0003jR-0q; Wed, 02 Oct 2024 14:34:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808834.1220886; Wed, 02 Oct 2024 14: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 1sw0RO-0003jK-UG; Wed, 02 Oct 2024 14:34:58 +0000
Received: by outflank-mailman (input) for mailman id 808834;
 Wed, 02 Oct 2024 14: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=4Yge=Q6=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1sw0RN-0003j7-Op
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 14:34:57 +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 7e213ec4-80cb-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 16:34:55 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c42e7adbddso9399407a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 07:34:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e213ec4-80cb-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727879695; x=1728484495; 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=VH2M/dzC5ntDec72HPj4BfYpAj12Irby0g+PDxU5/s0=;
        b=NwtKNDqCYDUTSMTNSMGoEPg1+FQtFce7zp1k3/cq4RGsZMeRJYrT3sYkr/0hFAmF1+
         0UjkHkBQxx9mGM5r6Knp1XKm+TG0TnIKf09LjOAknPHJDq+Ro8z9ylwIaLj/nVyjg/jl
         1FMX5Al0xa31f7CDcQBJypq+Kql11nPXt28bk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727879695; x=1728484495;
        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=VH2M/dzC5ntDec72HPj4BfYpAj12Irby0g+PDxU5/s0=;
        b=uf2bthVaeKUnX9dBhL+FsP70T1yxEiBoTBwlyn60Q15fXUef7gvRbZ1UFsNCiHAsGt
         ilXy3ivIQkmhuijpi4OFhJXBtHd/CwjV8+9YvFB38WCpILpowk5Tnegh5IxDs/pAHpAM
         cSiWSsTuFElcUpJw+4s1VtOyrf/O4B8h0Zki242OddcQMIFxIiAQavn91tYgKpZ1Z//m
         6ZaY+xo0KiyHsSB5OCoXz4DY5rFgvWe4UqdsdzDM48PhD6GTtOlKkoL1hE8hB00HFXGc
         rY5DnsbnzGdIfiEckGm3X5HjiObF7bAj8SotICImvaxeeQ3IhYybjtYsPkypVqzFxd/8
         fNdA==
X-Gm-Message-State: AOJu0Yxd5enBSlLQUKJwbg7z/rTrYt5E5IzOuZUCxvT3V35pVKIcRG/D
	Nk0PCa77kN5K6iFNXw60RWUKiTryxLBIMuoeyldgOX4k7YpEWoDgmq5/ihndhHjWxx0RBFCjwB5
	gscjTHPsbg35eAQrPdxuriZw++nhTy1EFvIq6WT+OsPExWpFGBzUCcg==
X-Google-Smtp-Source: AGHT+IFbr58TRMkEuCZetxEG3M2wxV788I+bkyKOQ12KtRiBRU8OW0dELx5alBDuns9sWhG0URltLk+QFO8EOZhfplc=
X-Received: by 2002:a05:6402:e07:b0:5c7:20f9:f556 with SMTP id
 4fb4d7f45d1cf-5c8b1a378f3mr2324070a12.21.1727879694681; Wed, 02 Oct 2024
 07:34:54 -0700 (PDT)
MIME-Version: 1.0
References: <CAO-mL=xm6RhRpQ2rYskAr3575-rm98FqE98pyYn0zknGvn3uMA@mail.gmail.com>
In-Reply-To: <CAO-mL=xm6RhRpQ2rYskAr3575-rm98FqE98pyYn0zknGvn3uMA@mail.gmail.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Wed, 2 Oct 2024 15:34:18 +0100
Message-ID: <CAO-mL=wfZKqRA+_3k2cwAxrtycfUFk1o_5Wn91SVe3dMiwqCGw@mail.gmail.com>
Subject: Re: [ANNOUNCE] Call for agenda items - Community Call 3rd October 2024
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org
Cc: "committers @ xenproject . org" <committers@xenproject.org>
Content-Type: multipart/alternative; boundary="0000000000006aa50306237f57e5"

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

Hi all,

As the 3rd of October is a public holiday in Germany, I propose we postpone
the call by a week to the *10th October.*
If there are any urgent issues to discuss or objections, please reply to
this email.

Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>


On Tue, Oct 1, 2024 at 6:46=E2=80=AFPM Kelly Choi <kelly.choi@cloud.com> wr=
ote:

> Hi all,
>
> Please add your proposed agenda items below:
>
> https://cryptpad.fr/pad/#/2/pad/edit/d2n-WLcNd-u1HvPd3g5Mpu7-/
>
> *CALL LINK: https://meet.jit.si/XenProjectCommunityCall
> <https://www.google.com/url?q=3Dhttps://meet.jit.si/XenProjectCommunityCa=
ll&sa=3DD&source=3Dcalendar&ust=3D1699196661201312&usg=3DAOvVaw1FcogEsMjFSd=
1Pmi7V0cBc>*
>
> *DATE: Thursday 3rd October 2024*
>
> *TIME: 1500 UTC (4 pm UK time)*
> *Note the following administrative conventions for the call:*
>
>
> ** To allow time to switch between meetings, we plan on starting theagend=
a
> at 15:05 UTC sharp.  Aim to join by 15:03 UTC if possible to allocatetime
> to sort out technical difficulties.*
>
>
>
>
>
>
>
>
> ** If you want to be CC'ed please add or remove yourself from
> thesign-up-sheet
> at https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/
> <https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/>=3D=3D Di=
al-in
> Information =3D=3D## Meeting time16:00 - 17:00 British timeFurther
> International meeting times:*
> https://www.timeanddate.com/worldclock/meetingdetails.html?year=3D2024&mo=
nth=3D10&day=3D3=3D4&hour=3D15&min=3D0&sec=3D0&p1=3D1234&p2=3D37&p3=3D224&p=
4=3D179
>
> ## Dial in details
> https://meet.jit.si/static/dialInInfo.html?room=3DXenProjectCommunityCal
> <https://meet.jit.si/static/dialInInfo.html?room=3DXenProjectCommunityCal=
l>
>
> Kelly Choi
> Community Manager
> Xen Project <https://xenproject.org/>
>

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

<div dir=3D"ltr">Hi all,<div><br></div><div>As the 3rd of October is a publ=
ic holiday in Germany, I propose we postpone the call by a week to the <b>1=
0th=C2=A0October.</b>=C2=A0</div><div>If there are any urgent issues to dis=
cuss or objections, please reply to this email.=C2=A0</div><div><div><div d=
ir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><di=
v dir=3D"ltr"><div><br></div><div>Kelly Choi<br></div><div><div style=3D"co=
lor:rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(136,13=
6,136)"><a href=3D"https://xenproject.org/" target=3D"_blank">Xen Project</=
a><br></div></div></div></div></div><br></div></div><br><div class=3D"gmail=
_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Tue, Oct 1, 2024 at 6:46=
=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>Hi all,<br><p>Please add your proposed ag=
enda items below:=C2=A0</p><p><a href=3D"https://cryptpad.fr/pad/#/2/pad/ed=
it/d2n-WLcNd-u1HvPd3g5Mpu7-/" target=3D"_blank">https://cryptpad.fr/pad/#/2=
/pad/edit/d2n-WLcNd-u1HvPd3g5Mpu7-/</a></p><p><b><span>CALL</span>=C2=A0LIN=
K:=C2=A0<a href=3D"https://www.google.com/url?q=3Dhttps://meet.jit.si/XenPr=
ojectCommunityCall&amp;sa=3DD&amp;source=3Dcalendar&amp;ust=3D1699196661201=
312&amp;usg=3DAOvVaw1FcogEsMjFSd1Pmi7V0cBc" target=3D"_blank">https://meet.=
jit.si/XenProjectCommunityCall</a></b></p><p><b>DATE: Thursday 3rd October =
2024</b></p><p><b>TIME: 1500 UTC (4 pm UK time)</b></p><i>Note the followin=
g administrative conventions for the=C2=A0<span>call</span>:</i></div><div>=
<div><i>* To allow time to switch between meetings, we plan on starting the=
<br>agenda at 15:05 UTC sharp.=C2=A0 Aim to join by 15:03 UTC if possible t=
o allocate<br>time to sort out technical difficulties.</i></div><div><i><br=
>* If you want to be CC&#39;ed please add or remove yourself from the<br>si=
gn-up-sheet at=C2=A0<a href=3D"https://cryptpad.fr/pad/#/2/pad/edit/D9vGzih=
PxxAOe6RFPz0sRCf+/" rel=3D"noreferrer" target=3D"_blank">https://cryptpad.f=
r/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/</a><br><br>=3D=3D=C2=A0<span>D=
ial</span>-in Information =3D=3D<br>## Meeting time<br>16:00 - 17:00 Britis=
h time<br>Further International meeting times:<br></i><a href=3D"https://ww=
w.timeanddate.com/worldclock/meetingdetails.html?year=3D2024&amp;month=3D10=
&amp;day=3D3=3D4&amp;hour=3D15&amp;min=3D0&amp;sec=3D0&amp;p1=3D1234&amp;p2=
=3D37&amp;p3=3D224&amp;p4=3D179" target=3D"_blank">https://www.timeanddate.=
com/worldclock/meetingdetails.html?year=3D2024&amp;month=3D10&amp;day=3D3=
=3D4&amp;hour=3D15&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/static/dialInInfo.html?room=3DXenProjectCom=
munityCall" rel=3D"noreferrer" target=3D"_blank">https://meet.jit.si/static=
/dialInInfo.html?room=3DXenProjectCommunityCal</a></div></div><div><div dir=
=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div><br></div></div></=
div></div><div><div dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr">=
<div>Kelly Choi<br></div><div><div style=3D"color:rgb(136,136,136)">Communi=
ty Manager</div><div style=3D"color:rgb(136,136,136)"><a href=3D"https://xe=
nproject.org/" target=3D"_blank">Xen Project</a><br></div></div></div></div=
></div></div>
</blockquote></div>

--0000000000006aa50306237f57e5--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:25:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:25:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808873.1220911 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1EK-0004Si-Lk; Wed, 02 Oct 2024 15:25:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808873.1220911; Wed, 02 Oct 2024 15: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 1sw1EK-0004Sb-It; Wed, 02 Oct 2024 15:25:32 +0000
Received: by outflank-mailman (input) for mailman id 808873;
 Wed, 02 Oct 2024 15:25: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=6go0=Q6=cloud.com=matthew.barnes@srs-se1.protection.inumbo.net>)
 id 1sw1EI-0004SG-S5
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:25:30 +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 8ea40ae1-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:25:29 +0200 (CEST)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2fad100dd9fso48256851fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:25:29 -0700 (PDT)
Received: from mbarnes-x-u.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c277726asm894554866b.10.2024.10.02.08.25.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:25:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ea40ae1-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727882729; x=1728487529; 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=z7tveJz4AVmA+fvVj1KascSk3DY+D3COltbd+Dsh+Zo=;
        b=GoOVP8249iQA8uIStLR6G8fM5N0xPSLdo1MoveZ8SfwxQmHaE53tSfOi2y7UJ6AD6z
         pYlgaoLUeaZGIVsT6/mId4pE0ZTddESAjj9YvZTn5EQuG75HuUs3bFbtAwwTEOFd/F6S
         scFdI2J4wPJAkijEVNZKu09NQDZEE6eDh+w8c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882729; x=1728487529;
        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=z7tveJz4AVmA+fvVj1KascSk3DY+D3COltbd+Dsh+Zo=;
        b=gbt+4suOuvHqS2Nma3YUmFkivGHYG0u9FgSWQKzw3UBUlv4IF3itE+ivcgBafRj2U4
         hsFspOLUuwFpSQsAd9/Nlat6t0G9jDK8udsdtNKVfo9jlFxzUNOAStfNSgBgklBvk5Wf
         M9JOETO/6o90lD7NDu0UuQU8wSfebGOVv518xIfqxdsXEhUVecY/ecp5eXciZ+AxKcsp
         uw6lgfKjLHoHYa5j6Tx64P/O1XdyjYT1q6qYPlKeWW4voorobJ4w4pZlmLArYwnKo+IB
         fUUtHoPfjEGcc0U5MLczR1rQAE/F10tORZ3ZFDcBrldAzzVe5C7l2zjMrlfrW/UVo+GJ
         pflg==
X-Gm-Message-State: AOJu0YxZ/Z/rv4buYb7Ny/AYpM4gJwVEWtw+5h81XpFAfhR5c/VhBjMP
	2a7AD9pWzz0GPtyPYDt0CNbBx6Zd/pGYSlNy595zgeUb6NNXV3Ui0AE0mYX9s8rlnvpXA2NruMG
	O
X-Google-Smtp-Source: AGHT+IGTpHhHRSgEIQmCiEeM79gYhCjEjG+ivRv33A60tPr8Q2Unt7QLjiqqC0VIdKkesSVHQDT5kw==
X-Received: by 2002:a05:651c:210b:b0:2fa:d75b:2ef5 with SMTP id 38308e7fff4ca-2fae10a64camr28637231fa.32.1727882728770;
        Wed, 02 Oct 2024 08:25:28 -0700 (PDT)
From: Matthew Barnes <matthew.barnes@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Matthew Barnes <matthew.barnes@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>
Subject: [PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext ints
Date: Wed,  2 Oct 2024 16:17:24 +0100
Message-Id: <8c6d1fee5261169a9bbc62ed1bafd2c32406fb4c.1727880621.git.matthew.barnes@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1727880621.git.matthew.barnes@cloud.com>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
MIME-Version: 1.0
Bcc: Matthew Barnes <matthew.barnes@cloud.com>
Content-Transfer-Encoding: 8bit

Resolves: https://gitlab.com/xen-project/xen/-/issues/194
Signed-off-by: Matthew Barnes <matthew.barnes@cloud.com>
---
 xen/arch/x86/include/asm/genapic.h | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index a694371c6d16..d29bccc39b4b 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -45,21 +45,21 @@ void cf_check send_IPI_self_legacy(uint8_t vector);
 
 void cf_check init_apic_ldr_flat(void);
 unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask);
+const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
 void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector);
 const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu);
 #define GENAPIC_FLAT \
-	.int_delivery_mode = dest_LowestPrio, \
-	.int_dest_mode = 1 /* logical delivery */, \
+	.int_delivery_mode = dest_Fixed, \
+	.int_dest_mode = 0 /* physical delivery */, \
 	.init_apic_ldr = init_apic_ldr_flat, \
-	.vector_allocation_cpumask = vector_allocation_cpumask_flat, \
-	.cpu_mask_to_apicid = cpu_mask_to_apicid_flat, \
+	.vector_allocation_cpumask = vector_allocation_cpumask_phys, \
+	.cpu_mask_to_apicid = cpu_mask_to_apicid_phys, \
 	.send_IPI_mask = send_IPI_mask_flat, \
 	.send_IPI_self = send_IPI_self_legacy
 
 void cf_check init_apic_ldr_phys(void);
 unsigned int cf_check cpu_mask_to_apicid_phys(const cpumask_t *cpumask);
 void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector);
-const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
 #define GENAPIC_PHYS \
 	.int_delivery_mode = dest_Fixed, \
 	.int_dest_mode = 0 /* physical delivery */, \
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:25:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:25:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808876.1220929 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1EL-0004hF-I2; Wed, 02 Oct 2024 15:25:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808876.1220929; Wed, 02 Oct 2024 15: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 1sw1EL-0004fi-A7; Wed, 02 Oct 2024 15:25:33 +0000
Received: by outflank-mailman (input) for mailman id 808876;
 Wed, 02 Oct 2024 15:25: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=6go0=Q6=cloud.com=matthew.barnes@srs-se1.protection.inumbo.net>)
 id 1sw1EK-0004SG-Go
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:25:32 +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 8f2d3ef2-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:25:30 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8a789c4fc5so176875366b.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:25:30 -0700 (PDT)
Received: from mbarnes-x-u.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c277726asm894554866b.10.2024.10.02.08.25.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:25:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f2d3ef2-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727882730; x=1728487530; 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=AoQRiycGbrcRIfQe1rR1oSXPiTIGCUmJQ2PUwiSd4cc=;
        b=BpbwG7lnG3jUtXaxF22qbFgjXEzvA4jUyO57fKsE4o52TsZjOyvcTkJ3hBl65wWRym
         o+AK1YuUI1u4192miGJcwu7m7glcmHkQ5xb6vjbpVECd+p3rLIF5/BOOykRZF2KcvCUN
         iIseLyj2/4C+SyUHP8gXdQMsYiIv/iU3P1rSQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882730; x=1728487530;
        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=AoQRiycGbrcRIfQe1rR1oSXPiTIGCUmJQ2PUwiSd4cc=;
        b=dH7lTOkkCxRC+OOs6PYf+SWYdtYcgp9SdhklEQaH9pfcTHzmMmy3oxOemtNBGG0aGV
         d1C/0Fv9bH4e9DfEhqfPIWYkXaZ/Gc73zTPA8URl02x8vcUvTPfMTW+Awven7jNipntt
         9pnz2PSMae2IkX19w39KN9SPqIKAeuxpL6wBwaV3lT3uIjfcGvFwnBOYPSeJqvxbNLlR
         2lUzkMnzLra7ATah8tDWYn0YxOpqVIuWlBa66H4wKRzoJnfoJouAO+rrVW2usm3h1ZFA
         aPF094rEvc85vSw5OPPzLyrd8B+MAVYQqxaiKBKDDHEaPLv3RCY0L6yu0GMDzlMX4Jsa
         k60w==
X-Gm-Message-State: AOJu0Yybp4Iavzm7Z3nL062NdU7WIXl7ki288dD8mbE6dBZjsw23x6+W
	WRPsRCxGQvHSaj0VCVRvVAeMs9r/Ndj1v1ecy5LF2HAjEY9yvVBMHzMkVuuw4s4XBh9eyMYSHz4
	7
X-Google-Smtp-Source: AGHT+IGnyWJ2DJZlijMwNWhhfiN2aSGJwUSG7Zu+RTkUqbqT8HhbbkpU/+XMfJltf1qO3GBjT+6XZQ==
X-Received: by 2002:a17:906:c52:b0:a98:c4b7:7971 with SMTP id a640c23a62f3a-a98c4b787b9mr561548166b.32.1727882729807;
        Wed, 02 Oct 2024 08:25:29 -0700 (PDT)
From: Matthew Barnes <matthew.barnes@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Matthew Barnes <matthew.barnes@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>
Subject: [PATCH 3/3] x86/APIC: Refactor GENAPIC_FLAT -> GENAPIC_MIXED
Date: Wed,  2 Oct 2024 16:17:26 +0100
Message-Id: <4db841d51630263204dad2bec571462c031e30c9.1727880621.git.matthew.barnes@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1727880621.git.matthew.barnes@cloud.com>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
MIME-Version: 1.0
Bcc: Matthew Barnes <matthew.barnes@cloud.com>
Content-Transfer-Encoding: 8bit

The macro name is changed to somewhat mirror x2apic driver code,
as logical flat is no longer used for external interrupts for this
mode.

No functional change.

Signed-off-by: Matthew Barnes <matthew.barnes@cloud.com>
---
 xen/arch/x86/genapic/default.c     | 2 +-
 xen/arch/x86/include/asm/genapic.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/genapic/default.c b/xen/arch/x86/genapic/default.c
index a968836a1878..3f0d57ea5e25 100644
--- a/xen/arch/x86/genapic/default.c
+++ b/xen/arch/x86/genapic/default.c
@@ -16,5 +16,5 @@
 /* should be called last. */
 const struct genapic __initconst_cf_clobber apic_default = {
 	APIC_INIT("default", NULL),
-	GENAPIC_FLAT
+	GENAPIC_MIXED
 };
diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index 91fdeaca47b3..fcb3eb04db7b 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -46,7 +46,7 @@ void cf_check send_IPI_self_legacy(uint8_t vector);
 void cf_check init_apic_ldr_flat(void);
 const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
 void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector);
-#define GENAPIC_FLAT \
+#define GENAPIC_MIXED \
 	.int_delivery_mode = dest_Fixed, \
 	.int_dest_mode = 0 /* physical delivery */, \
 	.init_apic_ldr = init_apic_ldr_flat, \
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:25:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:25:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808874.1220917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1EK-0004V7-Vc; Wed, 02 Oct 2024 15:25:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808874.1220917; Wed, 02 Oct 2024 15: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 1sw1EK-0004UO-Pe; Wed, 02 Oct 2024 15:25:32 +0000
Received: by outflank-mailman (input) for mailman id 808874;
 Wed, 02 Oct 2024 15:25: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=6go0=Q6=cloud.com=matthew.barnes@srs-se1.protection.inumbo.net>)
 id 1sw1EJ-0004SM-Cw
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:25:31 +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 8e89f176-80d2-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 17:25:29 +0200 (CEST)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2fad8337aa4so28270961fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:25:29 -0700 (PDT)
Received: from mbarnes-x-u.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c277726asm894554866b.10.2024.10.02.08.25.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:25:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8e89f176-80d2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727882728; x=1728487528; 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=Cthy4vBlSFT64QTX1AaTyw/nOCRFjR3Hlujb8NnYXGM=;
        b=kiEdgPboo/AZW+gVHYpLxpx2svSBAmFYjZO+qgc/xXtYesHQiE1rGcG7DlrrBwCeUP
         7EbwU0iQRVbF9mQIjXh8XOD996dASJg2+EhHgkelBkT0LpogCBYixHrf6ouWIeLfa7sw
         UEb3jyeE3Eei8oajQdLahk+QRotXda+sLCJ2c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882728; x=1728487528;
        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=Cthy4vBlSFT64QTX1AaTyw/nOCRFjR3Hlujb8NnYXGM=;
        b=LLld1q2XLIB3Uic2VUbG9w6skjNH2LpTVThoEz4KWFDTEBRC1+hhp5QndCWR9wAf4V
         C2dlMBSj9z2PPz0wcCGTeUUSxzha/R8B8wZCUwr6nZdjVaL03ozQ236XO26oajuXdRPe
         2SKuP6pOvFZjE7iGJEJCmXsL2vfA+IQvtmVdciB9VK1HdJZz30Qr9FgOhgPwu+JdHfO+
         VwhlT8GYleGYSR22nKaf4we0Ksq64+3paG2Fx75yub+QpPUz7Dqk5Su2uX3u6P8C8P1M
         oxKx8wPrpIWed28/evq6xjWNE9VPK+LBxiDrZvWW8mH+w+av+ntCdLHmiRVTmHVgMWrH
         wDEA==
X-Gm-Message-State: AOJu0YyQSYDBb4owssFQ8gpRhc0jlPHkyt8wYLOrg0RNGIunAALGVyOA
	uUZZXI+5ys7tb13h50aPbBLW8IjDb4W8Zu10ob9FWgHBIeznrULOqDhMOV/bwNcwKnr4/yNjHmr
	U
X-Google-Smtp-Source: AGHT+IHfga+gEcT+7zo55/f7ywfuUOIqls64d/FukL2mSr6fMabMWWjWJ8Qqn1Huyl3ZkJ1koUlAaw==
X-Received: by 2002:a05:6512:3e26:b0:533:40dc:8248 with SMTP id 2adb3069b0e04-539a0658ba0mr2179509e87.11.1727882728297;
        Wed, 02 Oct 2024 08:25:28 -0700 (PDT)
From: Matthew Barnes <matthew.barnes@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Matthew Barnes <matthew.barnes@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>
Subject: [PATCH 0/3] Switch flat driver to use phys dst for ext ints
Date: Wed,  2 Oct 2024 16:17:23 +0100
Message-Id: <cover.1727880621.git.matthew.barnes@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Bcc: Matthew Barnes <matthew.barnes@cloud.com>
Content-Transfer-Encoding: 8bit

This patch series switches the apic_default APIC driver from using
logical flat destination mode for external interrupts, to using
physical destination mode for external interrupts.

This is followed up by two non-functional cleanup commits.

Matthew Barnes (3):
  x86/APIC: Switch flat driver to use phys dst for ext ints
  x86/APIC: Remove unnecessary logical flat functions
  x86/APIC: Refactor GENAPIC_FLAT -> GENAPIC_MIXED

 xen/arch/x86/genapic/default.c     |  2 +-
 xen/arch/x86/genapic/delivery.c    | 10 ----------
 xen/arch/x86/include/asm/genapic.h | 14 ++++++--------
 3 files changed, 7 insertions(+), 19 deletions(-)

-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:25:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:25:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808875.1220923 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1EL-0004au-8w; Wed, 02 Oct 2024 15:25:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808875.1220923; Wed, 02 Oct 2024 15: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 1sw1EL-0004Z5-1e; Wed, 02 Oct 2024 15:25:33 +0000
Received: by outflank-mailman (input) for mailman id 808875;
 Wed, 02 Oct 2024 15:25: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=6go0=Q6=cloud.com=matthew.barnes@srs-se1.protection.inumbo.net>)
 id 1sw1EJ-0004SG-GU
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:25:31 +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 8ee4fa98-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:25:30 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a8d3cde1103so938887566b.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:25:30 -0700 (PDT)
Received: from mbarnes-x-u.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c277726asm894554866b.10.2024.10.02.08.25.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:25:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ee4fa98-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727882729; x=1728487529; 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=ftVpwFrv3Tr8Qw6HD3kvpMxXyPv+rWBj3ohY8visQ1w=;
        b=QggERJCgFg8Dev4d9Nc6ZWTYN8DO1fqG2JFIWphCoaBwpXWD2Ws3+F1fgExZwgnYWj
         hg0QcsrKdcGE1msIY8EQk9ISo+I2ckzltQMNRJNhjuzHQ4Hqb+nQXXrS83wbHEYJLgPz
         6TK1mE39azLROGLX4sHZnj2F/vhAQbtHNnb+Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882729; x=1728487529;
        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=ftVpwFrv3Tr8Qw6HD3kvpMxXyPv+rWBj3ohY8visQ1w=;
        b=q+nOnSt2rqaaiDC791uuCCY9QA5y5bS2DkQ3OzOGw51CG5nGyaynDFSxZ8t26+hREa
         XVfSEdfAHYKoWCsZkY47FiwBOw3U+FpmnoEzZbP/H5nzu4tQiqiHc0fjn2gn7RLYszPq
         C0CrB51WAO77wJ1tQBv52oFxsRT8tREV1XeKtJ8arzGmeKMX8sjJzS+1qaKELVE7GPvc
         NWmT5iZE7+b5ZnqyEOZZ2OG4xkX9AISJOoBk5bJNFa40t/FqI7pdxfVb2Pe02iDFLmsg
         yiD2miCg2ayE43Y/6A4CU7cPj3LNwEdtPDRLbR++TNw9XwcQJ9kDB7BHaxb9y5Ew4/EL
         9Yaw==
X-Gm-Message-State: AOJu0YyCItxbbCEAgpcFWlTvtQcRDsfFCUlkdGAKB0TwUOKM/zjfMqzZ
	Al0unUX6KwhBbGlq3pYLUnbDIDUe9d4S8VHB9AmJHNaEYMOluI2yR/X/Ez13l3pGwH3mjXwy/dp
	O
X-Google-Smtp-Source: AGHT+IFcJ6SivyjVc79Wr7urQz7+iHwEd2Xh8Ovp8EG6CvbeoDPUS6f5sl5feOgPr0mdny2zdjTWow==
X-Received: by 2002:a17:907:3f86:b0:a98:f1b3:83d5 with SMTP id a640c23a62f3a-a98f8206930mr331064266b.2.1727882729222;
        Wed, 02 Oct 2024 08:25:29 -0700 (PDT)
From: Matthew Barnes <matthew.barnes@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Matthew Barnes <matthew.barnes@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>
Subject: [PATCH 2/3] x86/APIC: Remove unnecessary logical flat functions
Date: Wed,  2 Oct 2024 16:17:25 +0100
Message-Id: <fc3176baecd67c23dff710e4a1934c2caae47ebd.1727880621.git.matthew.barnes@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1727880621.git.matthew.barnes@cloud.com>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
MIME-Version: 1.0
Bcc: Matthew Barnes <matthew.barnes@cloud.com>
Content-Transfer-Encoding: 8bit

Now that GENAPIC_FLAT uses physical destination for external interrupts,
these functions implementing logical flat for external interrupts are no
longer used.

No functional change.

Signed-off-by: Matthew Barnes <matthew.barnes@cloud.com>
---
 xen/arch/x86/genapic/delivery.c    | 10 ----------
 xen/arch/x86/include/asm/genapic.h |  2 --
 2 files changed, 12 deletions(-)

diff --git a/xen/arch/x86/genapic/delivery.c b/xen/arch/x86/genapic/delivery.c
index d1f99bf6834a..3def78f380d3 100644
--- a/xen/arch/x86/genapic/delivery.c
+++ b/xen/arch/x86/genapic/delivery.c
@@ -19,16 +19,6 @@ void cf_check init_apic_ldr_flat(void)
 	apic_write(APIC_LDR, val);
 }
 
-const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu)
-{
-	return &cpu_online_map;
-} 
-
-unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask)
-{
-	return cpumask_bits(cpumask)[0]&0xFF;
-}
-
 /*
  * PHYSICAL DELIVERY MODE (unicast to physical APIC IDs).
  */
diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index d29bccc39b4b..91fdeaca47b3 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -44,10 +44,8 @@ extern const struct genapic apic_bigsmp;
 void cf_check send_IPI_self_legacy(uint8_t vector);
 
 void cf_check init_apic_ldr_flat(void);
-unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask);
 const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
 void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector);
-const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu);
 #define GENAPIC_FLAT \
 	.int_delivery_mode = dest_Fixed, \
 	.int_dest_mode = 0 /* physical delivery */, \
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:26:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:26:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808890.1220952 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1FK-0006XQ-Ux; Wed, 02 Oct 2024 15:26:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808890.1220952; Wed, 02 Oct 2024 15: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 1sw1FK-0006XJ-SH; Wed, 02 Oct 2024 15:26:34 +0000
Received: by outflank-mailman (input) for mailman id 808890;
 Wed, 02 Oct 2024 15: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=qBk0=Q6=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1sw1Ey-0004SG-8p
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:26:12 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a712d4ae-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:26:11 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 94CF0A43E41
 for <xen-devel@lists.xenproject.org>; Wed,  2 Oct 2024 15:26:01 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83D1CC4CED6
 for <xen-devel@lists.xenproject.org>; Wed,  2 Oct 2024 15:26:08 +0000 (UTC)
Received: by mail-lj1-f182.google.com with SMTP id
 38308e7fff4ca-2fad15b3eeeso33591811fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:26:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a712d4ae-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727882768;
	bh=h4ubFnE46xeI8wN9+4BYkWAbARBnOtNFKXLTjQ3iYxs=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=KFl7hH8baEyBXLc9YdutCabBIIsebd7h0c09OkpKue3HyYk0dPbzyKEPIAYZw8EA0
	 OSqK38e9b/ZQqENWs+TnswX2GzFQqN2nL0SRR4IVxtTfVUlSFGfffBS7Jg4BMNQIz8
	 HMkEBAAndduR9nNbwqZIze+PTqfQzCMnCy8hpJdW/BS84scv9IwY4mniaBcqBDDZua
	 ZBd9lUJThYLwrBMX2si1+483PfVcboCG4r+GJNcdiKhotGYBsctAy1Sareu7r1J5jh
	 Wd6eNnpiy5IQorN76AsuNn8HDWHvuwIblRMKj84P4HPuwkx+3e6SIsEVpTzuDrCbzg
	 6kBiHvv5uu5wg==
X-Forwarded-Encrypted: i=1; AJvYcCXZp675azna1l5vzhhkhNCfOgoOaQAK5EOUeyioq2PEm52aZ0XKc0BpULoa5iDzHbfN6TsFIeKdwcA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvYfK2KM5B3fNYkg1OuNsxyQG68AiADTXebokrNLtoydUktwBT
	572gCWSmArlRSsIjwqr72Sa8g9XYPZc8nAhrWRNCUoSInuZ8nhoy/7boV8K821vxEzBzIsJE4Er
	3t6rGa2gC3XfjWsJwLSDqJjWAJZE=
X-Google-Smtp-Source: AGHT+IFjphesp/WsGS3U0PINOY0QAoUmw2aq4caedP0chVHCCyNa6a0rrCXQNZVU8wv2cCgEaQKnFwQhCH9Io7gBKbI=
X-Received: by 2002:a05:651c:1502:b0:2fa:d84a:bd83 with SMTP id
 38308e7fff4ca-2fae106e266mr23266981fa.24.1727882766692; Wed, 02 Oct 2024
 08:26:06 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
In-Reply-To: <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Wed, 2 Oct 2024 17:25:54 +0200
X-Gmail-Original-Message-ID: <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
Message-ID: <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, x86@kernel.org, 
	Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Uros Bizjak <ubizjak@gmail.com>, 
	Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, 
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"

Hi Peter,

Thanks for taking a look.

On Tue, 1 Oct 2024 at 23:13, H. Peter Anvin <hpa@zytor.com> wrote:
>
> On 9/25/24 08:01, Ard Biesheuvel wrote:
> > From: Ard Biesheuvel <ardb@kernel.org>
> >
> > As an intermediate step towards enabling PIE linking for the 64-bit x86
> > kernel, enable PIE codegen for all objects that are linked into the
> > kernel proper.
> >
> > This substantially reduces the number of relocations that need to be
> > processed when booting a relocatable KASLR kernel.
> >
>
> This really seems like going completely backwards to me.
>
> You are imposing a more restrictive code model on the kernel, optimizing
> for boot time in a way that will exert a permanent cost on the running
> kernel.
>

Fair point about the boot time. This is not the only concern, though,
and arguably the least important one.

As I responded to Andi before, it is also about using a code model and
relocation model that matches the reality of how the code is executed:
- the early C code runs from the 1:1 mapping, and needs special hacks
to accommodate this
- KASLR runs the kernel from a different virtual address than the one
we told the linker about

> There is a *huge* difference between the kernel and user space here:
>
> KERNEL MEMORY IS PERMANENTLY ALLOCATED, AND IS NEVER SHARED.
>

No need to shout.

> Dirtying user pages requires them to be unshared and dirty, which is
> undesirable. Kernel pages are *always* unshared and dirty.
>

I guess you are referring to the use of a GOT? That is a valid
concern, but it does not apply here. With hidden visibility and
compiler command line options like -mdirect-access-extern, all emitted
symbol references are direct. Disallowing text relocations could be
trivially enabled with this series if desired, and actually helps
avoid the tricky bugs we keep fixing in the early startup code that
executes from the 1:1 mapping (the C code in .head.text)

So it mostly comes down to minor differences in addressing modes, e.g.,

  movq $sym, %reg

actually uses more bytes than

  leaq sym(%rip), %reg

whereas

  movq sym, %reg

and

  movq sym(%rip), %reg

are the same length.

OTOH, indexing a statically allocated global array like

  movl array(,%reg1,4), %reg2

will be converted into

  leaq array(%rip), %reg2
  movl (%reg2,%reg1,4), %reg2

and is therefore less efficient in terms of code footprint. But in
general, the x86_64 ISA and psABI are quite flexible in this regard,
and extrapolating from past experiences with PIC code on i386 is not
really justified here.

As Andi also pointed out, what ultimately matters is the performance,
as well as code size where it impacts performance, through the I-cache
footprint. I'll do some testing before reposting, and maybe not bother
if the impact is negative.

> > It also brings us much closer to the ordinary PIE relocation model used
> > for most of user space, which is therefore much better supported and
> > less likely to create problems as we increase the range of compilers and
> > linkers that need to be supported.
>
> We have been resisting *for ages* making the kernel worse to accomodate
> broken compilers. We don't "need" to support more compilers -- we need
> the compilers to support us. We have working compilers; any new compiler
> that wants to play should be expected to work correctly.
>

We are in a much better place now than we were before in that regard,
which is actually how this effort came about: instead of lying to the
compiler, and maintaining our own pile of scripts and relocation
tools, we can just do what other arches are doing in Linux, and let
the toolchain do it for us.


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808897.1220962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GH-0007RQ-7D; Wed, 02 Oct 2024 15:27:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808897.1220962; Wed, 02 Oct 2024 15:27: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 1sw1GH-0007RJ-4R; Wed, 02 Oct 2024 15:27:33 +0000
Received: by outflank-mailman (input) for mailman id 808897;
 Wed, 02 Oct 2024 15: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=i1FR=Q6=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sw1GG-00070n-MP
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:32 +0000
Received: from mail-oa1-x32.google.com (mail-oa1-x32.google.com
 [2001:4860:4864:20::32])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d72d1ff1-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:27:32 +0200 (CEST)
Received: by mail-oa1-x32.google.com with SMTP id
 586e51a60fabf-286f0dcead5so562473fac.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d72d1ff1-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727882851; x=1728487651; 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=rDcKdH3ZCQXr4hCeS6SQ+kbPq5YMkFyq93jfMv0LjVQ=;
        b=B0UnMzqr37ZbkVbbX+InKSu+YPUdFTUi49mTxLORKr2KzUSt5LujrT0EByaP+3JWFg
         990TADrezqO3gGBGbjZDrmPf/I1UutuBWNI/7EaTYHT+SMM5GiPPbRaSX5OT+Obb7GrZ
         06F1DBSQVof2Gd97NdfWJPYcLVNaWiRGREWtc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882851; x=1728487651;
        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=rDcKdH3ZCQXr4hCeS6SQ+kbPq5YMkFyq93jfMv0LjVQ=;
        b=GzshRJJkEbgrTu/lN1WY/QkZ9NR3Lu4Lub2SrLxfCASzcd4F1uOllKTTXlxoys+T+R
         Jd5L+PHbQGo0AXtceBUPv7WSOu3W5V0VQXTForOVuqEzt9P40pOtf5qP5ZVl4S+XcaPw
         gsmkM62HHyO5a7gPNpfHKx41daWMId2tAhbJs1HzjeU7c2OAV2LhJ7+m4zmgU8G/y8ol
         UwuleBsTSdsesyZNdsXx+mtyw9LwZk1ztAV5cxcKqZuIPr0SxIUXDfBVt976/pV6rKl3
         k7CcPBzrn1MPsmtyWlStcZAM2hj7wuqZY2glV38lKdL1YazDY7JKc7olWqEVQSsbg/Fz
         S3mg==
X-Gm-Message-State: AOJu0Ywi+UC5mraLDhC2Q5QjOYcBN/AzFAb16Om357cpYTDoZCC8DS88
	KuizW6B5qhcCheEi8vdl5kInushVZ+fkERGeF8zawQQHYXnNM7mPLZRViNYtnF7RVLwADwlUDPC
	RQ06iq8wRgIzPBkbUYuiR4NCeB0P1rOcROcfaUQ==
X-Google-Smtp-Source: AGHT+IHeDZfVhD2/pUIl4ebalEfh7C5fRGcR+7m/RJw5vjn3kunsmHHALJsZ3GwQmKb0aL9+s0s/SaZV0L9s6QU+kzQ=
X-Received: by 2002:a05:6871:4147:b0:259:8858:a330 with SMTP id
 586e51a60fabf-287879b1fa8mr1744396fac.22.1727882850642; Wed, 02 Oct 2024
 08:27:30 -0700 (PDT)
MIME-Version: 1.0
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com> <Zv1S88isxSSMuqqk@mail-itl>
In-Reply-To: <Zv1S88isxSSMuqqk@mail-itl>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 2 Oct 2024 16:27:19 +0100
Message-ID: <CACHz=ZhmsA_7eiV+MXi6=3NRzro_sZZK+-Kt-PJ_FS6RfZPZ6g@mail.gmail.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code
To: =?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.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>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 2, 2024 at 3:04=E2=80=AFPM Marek Marczykowski-G=C3=B3recki
<marmarek@invisiblethingslab.com> wrote:
>
> On Tue, Oct 01, 2024 at 11:22:37AM +0100, Frediano Ziglio wrote:
> > This series came from part of the work of removing duplications between
> > boot code and rewriting part of code from assembly to C.
> > Rewrites EFI code in pure C.
>
> The MB2+EFI tests on Adler Lake fail with this series:
> https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/1478766782
> Looking at the VGA output (unfortunately not collected by the test
> itself) it hangs just after bootloader, before printing anything on the
> screen (or even clearing it after bootloader). The serial is silent too.
>

I tried multiple times to take a look at the logs, but I keep getting error=
 500.

> It does pass on Zen 3+ runners.
>
> Since there were some issues with the ADL runner today on plain staging,
> I'm not 100% sure if it isn't some infrastructure issue yet. But the
> symptoms look different than usual infra issues (and different than
> todays failures on staging), so I think it's more likely an issue with
> the patches here.
>
> > Changes since v1, more details in specific commits:
> > - style updates;
> > - comments and descriptions improvements;
> > - other improvements.
> >
> > Changes since v2:
> > - rebased on master, resolved conflicts;
> > - add comment on trampoline section.
> >
> > Changes since v3:
> > - changed new function name;
> > - declare efi_multiboot2 in a separate header;
> > - distinguish entry point from using magic number;
> > - other minor changes (see commens in commits).
> >
> > Changes since v4:
> > - rebase on staging;
> > - set %fs and %gs as other segment registers;
> > - style and other changes.
> >
> > Changes since v5:
> > - fixed a typo.
> >
> > Changes since v6:
> > - remove merged patch;
> > - comment and style;
> > - change some pointer checks to avoid overflows;
> > - rename parse-mbi2.c to mbi2.c.
> >
> > Frediano Ziglio (2):
> >   x86/boot: Rewrite EFI/MBI2 code partly in C
> >   x86/boot: Improve MBI2 structure check
> >
> >  xen/arch/x86/boot/head.S       | 146 +++++++--------------------------
> >  xen/arch/x86/efi/Makefile      |   1 +
> >  xen/arch/x86/efi/efi-boot.h    |   7 +-
> >  xen/arch/x86/efi/mbi2.c        |  66 +++++++++++++++
> >  xen/arch/x86/efi/stub.c        |  10 +--
> >  xen/arch/x86/include/asm/efi.h |  18 ++++
> >  6 files changed, 123 insertions(+), 125 deletions(-)
> >  create mode 100644 xen/arch/x86/efi/mbi2.c
> >  create mode 100644 xen/arch/x86/include/asm/efi.h
> >

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808898.1220972 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GL-0007jD-Dr; Wed, 02 Oct 2024 15:27:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808898.1220972; Wed, 02 Oct 2024 15:27: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 1sw1GL-0007j6-Ax; Wed, 02 Oct 2024 15:27:37 +0000
Received: by outflank-mailman (input) for mailman id 808898;
 Wed, 02 Oct 2024 15:27: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GK-00070n-KU
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:36 +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 d9c8d053-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:27:35 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a8a6d1766a7so209487966b.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:35 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d9c8d053-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882854; x=1728487654; 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=rlmcJP5mMuj8YOO1ECpxCc4uELbVcUcDRHL7JcNsxfM=;
        b=ZFPUcU74VORnkol19GRXes2cxs8IQ63GX56evcdMmctNAjjU7ogZFjFcs8pN9b99Hz
         Ub6BwdXlVhyAAengU6yxljJ5jL/a26+lSt8eUVhkfiWc1hd+i5UswKje0Yu21J+w2KMb
         e8Xz/gbDBLN/9x/oMtLVkJBjtnxmhOT8vptqY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882854; x=1728487654;
        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=rlmcJP5mMuj8YOO1ECpxCc4uELbVcUcDRHL7JcNsxfM=;
        b=noWsJtqarE4oUMBeF16yd/ij94Pnpn2MfQcTSdSSmX7Ob9b0PKxTDeTPoyKCgCZuew
         m7IH/drQ71U/4YcCFD+INKXznhh79LFfcPlphtUB8ObTKdEzX1gfiXeTrzY5LiFbZxT+
         LHqsqKYzxfW8LppzmGC6XmyF73fIEdeV+SaPTHJ9qxW/XgC+4EmhphJ6E32WNKlYjSCg
         NyuosxJGbmDuPxbn8M+kIgIhCmZU5y+KesGx7Q2mR9nCzocHQGGe0lNNavLRkOCP89co
         Tw4Hy50Iy8YEWy2txSnmrmS/KcJpvi5oCNsJ8YqMrnNvbfRN6V7xVGvzyFrqpZMb8/qI
         qFMw==
X-Gm-Message-State: AOJu0YzF0P8e7PNtSAOicm753r3vB6DzDebVLklqKoim7hVbWdd8+87P
	BP8JEA8JtSj3e3MRxifdSKmfVpP5KJ1I5q9r0jWa5pHUx2ZeweKnApNUWNB5Zhw9EetZBhUhZZr
	Plxo=
X-Google-Smtp-Source: AGHT+IHi8P0+vnqz5tpmJRAAFAvo+luLXAKjODyxsKPUmGnaXXk/W1w7BJkeS7/jdbD1VPXtF1hdeA==
X-Received: by 2002:a17:906:db08:b0:a8a:7e24:3230 with SMTP id a640c23a62f3a-a98f8264eddmr337887466b.28.1727882854198;
        Wed, 02 Oct 2024 08:27:34 -0700 (PDT)
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>
Subject: [PATCH v2 1/7] x86: Introduce x86_decode_lite()
Date: Wed,  2 Oct 2024 16:27:19 +0100
Message-Id: <20241002152725.1841575-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

In order to relocate all IP-relative fields in an alternative replacement
block, we need to decode the instructions enough to obtain their length and
any relative fields.

Full x86_decode() is far too heavyweight, so introduce a minimal form which
can make several simplifying assumptions.

This a mostly-complete decoder for integer instruction in the onebyte and
twobyte maps.  Some instructions are intentionally unsupported, owing to being
unlikely to find in alternatives, and so as to reduce decode complexity.  See
the subsequent patch adding a userspace test harness for further details.

This logic can decode all alternative blocks that exist in Xen right now.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

v2:
 * Switch to 0 on failure, rel_sz in bytes
 * Mostly complete the integer instructions; paird with userspace harness
 * Put in .init when !CONFIG_LIVEPATCH
---
 xen/arch/x86/x86_emulate/Makefile      |   6 +
 xen/arch/x86/x86_emulate/decode-lite.c | 311 +++++++++++++++++++++++++
 xen/arch/x86/x86_emulate/private.h     |   2 +
 xen/arch/x86/x86_emulate/x86_emulate.h |  14 ++
 4 files changed, 333 insertions(+)
 create mode 100644 xen/arch/x86/x86_emulate/decode-lite.c

diff --git a/xen/arch/x86/x86_emulate/Makefile b/xen/arch/x86/x86_emulate/Makefile
index 2e20d65d788a..7a56de877f25 100644
--- a/xen/arch/x86/x86_emulate/Makefile
+++ b/xen/arch/x86/x86_emulate/Makefile
@@ -6,3 +6,9 @@ obj-y += decode.o
 obj-$(CONFIG_HVM) += fpu.o
 obj-y += util.o
 obj-y += util-xen.o
+
+ifeq ($(CONFIG_LIVEPATCH),y)
+obj-y += decode-lite.o
+else
+obj-bin-y += decode-lite.init.o
+endif
diff --git a/xen/arch/x86/x86_emulate/decode-lite.c b/xen/arch/x86/x86_emulate/decode-lite.c
new file mode 100644
index 000000000000..6e2581eeab83
--- /dev/null
+++ b/xen/arch/x86/x86_emulate/decode-lite.c
@@ -0,0 +1,311 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include "private.h"
+
+#define Imm8   (1 << 0)
+#define Imm    (1 << 1)
+#define Moffs  (1 << 2)
+#define Branch (1 << 5) /* ... that we care about */
+/*      ModRM  (1 << 6) */
+#define Known  (1 << 7)
+
+#define ALU_OPS                                 \
+    (Known|ModRM),                              \
+    (Known|ModRM),                              \
+    (Known|ModRM),                              \
+    (Known|ModRM),                              \
+    (Known|Imm8),                               \
+    (Known|Imm)
+
+static const uint8_t init_or_livepatch_const onebyte[256] = {
+    [0x00] = ALU_OPS, /* ADD */ [0x08] = ALU_OPS, /* OR  */
+    [0x10] = ALU_OPS, /* ADC */ [0x18] = ALU_OPS, /* SBB */
+    [0x20] = ALU_OPS, /* AND */ [0x28] = ALU_OPS, /* SUB */
+    [0x30] = ALU_OPS, /* XOR */ [0x38] = ALU_OPS, /* CMP */
+/*  [0x40 ... 0x4f] = REX prefixes */
+    [0x50 ... 0x5f] = (Known),             /* PUSH/POP %reg */
+
+    [0x63]          = (Known|ModRM),       /* MOVSxd */
+
+    [0x68]          = (Known|Imm),         /* PUSH $imm */
+    [0x69]          = (Known|ModRM|Imm),   /* IMUL $imm/r/rm */
+    [0x6a]          = (Known|Imm8),        /* PUSH $imm8 */
+    [0x6b]          = (Known|ModRM|Imm8),  /* PUSH $imm8/r/rm */
+    [0x6c ... 0x6f] = (Known),             /* INS/OUTS */
+
+    [0x70 ... 0x7f] = (Known|Branch|Imm8), /* Jcc disp8 */
+    [0x80]          = (Known|ModRM|Imm8),  /* Grp1 */
+    [0x81]          = (Known|ModRM|Imm),   /* Grp1 */
+
+    [0x83]          = (Known|ModRM|Imm8),  /* Grp1 */
+    [0x84 ... 0x8e] = (Known|ModRM),       /* TEST/XCHG/MOV/MOV-SREG/LEA r/rm */
+
+    [0x90 ... 0x99] = (Known),             /* NOP/XCHG rAX/CLTQ/CQTO */
+
+    [0x9b ... 0x9f] = (Known),             /* FWAIT/PUSHF/POPF/SAHF/LAHF */
+
+    [0xa0 ... 0xa3] = (Known|Moffs),       /* MOVABS */
+    [0xa4 ... 0xa7] = (Known),             /* MOVS/CMPS */
+    [0xa8]          = (Known|Imm8),        /* TEST %al */
+    [0xa9]          = (Known|Imm),         /* TEST %al */
+    [0xaa ... 0xaf] = (Known),             /* STOS/LODS/SCAS */
+    [0xb0 ... 0xb7] = (Known|Imm8),        /* MOV $imm8, %reg */
+    [0xb8 ... 0xbf] = (Known|Imm),         /* MOV $imm{16,32,64}, %reg */
+    [0xc0 ... 0xc1] = (Known|ModRM|Imm8),  /* Grp2 (ROL..SAR $imm8, %reg) */
+
+    [0xc3]          = (Known),             /* RET */
+    [0xc6]          = (Known|ModRM|Imm8),  /* Grp11, Further ModRM decode */
+    [0xc7]          = (Known|ModRM|Imm),   /* Grp11, Further ModRM decode */
+
+    [0xcb ... 0xcc] = (Known),             /* LRET/INT3 */
+    [0xcd]          = (Known|Imm8),        /* INT $imm8 */
+
+    [0xd0 ... 0xd3] = (Known|ModRM),       /* Grp2 (ROL..SAR {$1,%cl}, %reg) */
+
+    [0xe4 ... 0xe7] = (Known|Imm8),        /* IN/OUT $imm8 */
+    [0xe8 ... 0xe9] = (Known|Branch|Imm),  /* CALL/JMP disp32 */
+    [0xeb]          = (Known|Branch|Imm8), /* JMP disp8 */
+    [0xec ... 0xef] = (Known),             /* IN/OUT %dx */
+
+    [0xf1]          = (Known),             /* ICEBP */
+    [0xf4]          = (Known),             /* HLT */
+    [0xf5]          = (Known),             /* CMC */
+    [0xf6 ... 0xf7] = (Known|ModRM),       /* Grp3, Further ModRM decode */
+    [0xf8 ... 0xfd] = (Known),             /* CLC ... STD */
+    [0xfe ... 0xff] = (Known|ModRM),       /* Grp4 */
+};
+static const uint8_t init_or_livepatch_const twobyte[256] = {
+    [0x00 ... 0x03] = (Known|ModRM),       /* Grp6/Grp7/LAR/LSL */
+    [0x06]          = (Known),             /* CLTS */
+    [0x09]          = (Known),             /* WBINVD */
+    [0x0b]          = (Known),             /* UD2 */
+
+    [0x18 ... 0x1f] = (Known|ModRM),       /* Grp16 (Hint Nop) */
+    [0x20 ... 0x23] = (Known|ModRM),       /* MOV %cr/%dr */
+
+    [0x30 ... 0x33] = (Known),             /* WRMSR/RDTSC/RDMSR/RDPMC */
+
+    [0x40 ... 0x4f] = (Known|ModRM),       /* CMOVcc */
+
+    [0x80 ... 0x8f] = (Known|Branch|Imm),  /* Jcc disp32 */
+    [0x90 ... 0x9f] = (Known|ModRM),       /* SETcc */
+
+    [0xa0 ... 0xa2] = (Known),             /* PUSH/POP %fs/CPUID */
+    [0xa3]          = (Known|ModRM),       /* BT r/rm */
+    [0xa4]          = (Known|ModRM|Imm8),  /* SHLD $imm8 */
+    [0xa5]          = (Known|ModRM),       /* SHLD %cl */
+
+    [0xa8 ... 0xa9] = (Known),             /* PUSH/POP %gs */
+
+    [0xab]          = (Known|ModRM),       /* BTS */
+    [0xac]          = (Known|ModRM|Imm8),  /* SHRD $imm8 */
+    [0xad ... 0xaf] = (Known|ModRM),       /* SHRD %cl/Grp15/IMUL */
+
+    [0xb0 ... 0xb9] = (Known|ModRM),       /* CMPXCHG/LSS/BTR/LFS/LGS/MOVZxx/POPCNT/Grp10 */
+    [0xba]          = (Known|ModRM|Imm8),  /* Grp8 */
+    [0xbb ... 0xbf] = (Known|ModRM),       /* BSR/BSF/BSR/MOVSX */
+    [0xc0 ... 0xc1] = (Known|ModRM),       /* XADD */
+    [0xc7]          = (Known|ModRM),       /* Grp9 */
+    [0xc8 ... 0xcf] = (Known),             /* BSWAP */
+};
+
+/*
+ * Bare minimum x86 instruction decoder to parse the alternative replacement
+ * instructions and locate the IP-relative references that may need updating.
+ *
+ * These are:
+ *  - disp8/32 from near branches
+ *  - RIP-relative memory references
+ *
+ * The following simplifications are used:
+ *  - All code is 64bit, and the instruction stream is safe to read.
+ *  - The 67 prefix is not implemented, so the address size is only 64bit.
+ *
+ * Inputs:
+ *  @ip  The position to start decoding from.
+ *  @end End of the replacement block.  Exceeding this is considered an error.
+ *
+ * Returns: x86_decode_lite_t
+ *  - On failure, length of 0.
+ *  - On success, length > 0.  For rel_sz > 0, rel points at the relative
+ *    field in the instruction stream.
+ */
+x86_decode_lite_t init_or_livepatch x86_decode_lite(void *ip, void *end)
+{
+    void *start = ip, *rel = NULL;
+    unsigned int opc, rel_sz = 0;
+    uint8_t b, d, rex = 0, osize = 4;
+
+#define OPC_TWOBYTE (1 << 8)
+
+    /* Mutates IP, uses END. */
+#define FETCH(ty)                                       \
+    ({                                                  \
+        ty _val;                                        \
+                                                        \
+        if ( (ip + sizeof(ty)) > end )                  \
+            goto overrun;                               \
+        _val = *(ty *)ip;                               \
+        ip += sizeof(ty);                               \
+        _val;                                           \
+    })
+
+    for ( ;; ) /* Prefixes */
+    {
+        switch ( b = FETCH(uint8_t) )
+        {
+        case 0x26: /* ES override */
+        case 0x2e: /* CS override */
+        case 0x36: /* DS override */
+        case 0x3e: /* SS override */
+        case 0x64: /* FS override */
+        case 0x65: /* GS override */
+        case 0xf0: /* LOCK */
+        case 0xf2: /* REPNE */
+        case 0xf3: /* REP */
+            break;
+
+        case 0x66: /* Operand size override */
+            osize = 2;
+            break;
+
+        /* case 0x67: Address size override, not implemented */
+
+        case 0x40 ... 0x4f: /* REX */
+            rex = b;
+            continue;
+
+        default:
+            goto prefixes_done;
+        }
+        rex = 0; /* REX cancelled by subsequent legacy prefix. */
+    }
+ prefixes_done:
+
+    if ( rex & 0x08 ) /* REX.W */
+        osize = 8;
+
+    /* Fetch the main opcode byte(s) */
+    if ( b == 0x0f )
+    {
+        b = FETCH(uint8_t);
+        opc = OPC_TWOBYTE | b;
+
+        d = twobyte[b];
+    }
+    else
+    {
+        opc = b;
+        d = onebyte[b];
+    }
+
+    if ( unlikely(!(d & Known)) )
+        goto unknown;
+
+    if ( d & ModRM )
+    {
+        uint8_t modrm = FETCH(uint8_t);
+        uint8_t mod = modrm >> 6;
+        uint8_t reg = (modrm >> 3) & 7;
+        uint8_t rm = modrm & 7;
+
+        /* ModRM/SIB decode */
+        if ( mod == 0 && rm == 5 ) /* RIP relative */
+        {
+            rel = ip;
+            rel_sz = 4;
+            FETCH(uint32_t);
+        }
+        else if ( mod != 3 && rm == 4 ) /* SIB */
+        {
+            uint8_t sib = FETCH(uint8_t);
+            uint8_t base = sib & 7;
+
+            if ( mod == 0 && base == 5 )
+                goto disp32;
+        }
+
+        if ( mod == 1 ) /* disp8 */
+            FETCH(uint8_t);
+        else if ( mod == 2 ) /* disp32 */
+        {
+        disp32:
+            FETCH(uint32_t);
+        }
+
+        /* ModRM based decode adjustements */
+        switch ( opc )
+        {
+        case 0xc7: /* Grp11 XBEGIN is a branch. */
+            if ( modrm == 0xf8 )
+                d |= Branch;
+            break;
+        case 0xf6: /* Grp3 TEST(s) have extra Imm8 */
+            if ( reg == 0 || reg == 1 )
+                d |= Imm8;
+            break;
+        case 0xf7: /* Grp3 TEST(s) have extra Imm */
+            if ( reg == 0 || reg == 1 )
+                d |= Imm;
+            break;
+        }
+    }
+
+    if ( d & Branch )
+    {
+        /*
+         * We don't tolerate 66-prefixed call/jmp in alternatives.  Some are
+         * genuinely decoded differently between Intel and AMD CPUs.
+         *
+         * We also don't support APX instructions, so don't have to cope with
+         * JMPABS which is the first branch to have an 8-byte immediate.
+         */
+        if ( osize < 4 )
+            goto bad_osize;
+
+        rel = ip;
+        rel_sz = (d & Imm8) ? 1 : 4;
+    }
+
+    if ( d & (Imm | Imm8 | Moffs) )
+    {
+        if ( d & Imm8 )
+            osize = 1;
+        else if ( d & Moffs )
+            osize = 8;
+        else if ( osize == 8 && !(opc >= 0xb8 && opc <= 0xbf) )
+            osize = 4;
+
+        switch ( osize )
+        {
+        case 1: FETCH(uint8_t);  break;
+        case 2: FETCH(uint16_t); break;
+        case 4: FETCH(uint32_t); break;
+        case 8: FETCH(uint64_t); break;
+        default: goto bad_osize;
+        }
+    }
+
+    return (x86_decode_lite_t){ ip - start, rel_sz, rel };
+
+ bad_osize:
+    printk(XENLOG_ERR "%s() Bad osize %u in %*ph\n",
+           __func__, osize,
+           (int)(unsigned long)(end - start), start);
+    return (x86_decode_lite_t){ 0, 0, NULL };
+
+ unknown:
+    printk(XENLOG_ERR "%s() Unknown opcode in %*ph <%02x> %*ph\n",
+           __func__,
+           (int)(unsigned long)(ip - 1 - start), start, b,
+           (int)(unsigned long)(end - ip), ip);
+    return (x86_decode_lite_t){ 0, 0, NULL };
+
+ overrun:
+    printk(XENLOG_ERR "%s() Decode overrun, got %*ph\n",
+           __func__,
+           (int)(unsigned long)(end - start), start);
+    return (x86_decode_lite_t){ 0, 0, NULL };
+
+#undef FETCH
+}
diff --git a/xen/arch/x86/x86_emulate/private.h b/xen/arch/x86/x86_emulate/private.h
index 172270a458bd..c5e0983948ce 100644
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -9,7 +9,9 @@
 #ifdef __XEN__
 
 # include <xen/bug.h>
+# include <xen/init.h>
 # include <xen/kernel.h>
+# include <xen/livepatch.h>
 # include <asm/endbr.h>
 # include <asm/msr-index.h>
 # include <asm/x86-vendors.h>
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emulate/x86_emulate.h
index 3e819d41746e..01c371057626 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.h
+++ b/xen/arch/x86/x86_emulate/x86_emulate.h
@@ -846,4 +846,18 @@ static inline void x86_emul_reset_event(struct x86_emulate_ctxt *ctxt)
     ctxt->event = (struct x86_event){};
 }
 
+/*
+ * x86_decode_lite().  Very minimal decoder for managing alternatives.
+ *
+ * @len is 0 on error, or nonzero on success.  If the instruction has a
+ * relative field, @rel_sz is nonzero, and @rel points at the field.
+ */
+typedef struct {
+    uint8_t len;
+    uint8_t rel_sz; /* bytes: 0, 1 or 4 */
+    void *rel;
+} x86_decode_lite_t;
+
+x86_decode_lite_t x86_decode_lite(void *ip, void *end);
+
 #endif /* __X86_EMULATE_H__ */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808899.1220981 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GM-0007yY-Od; Wed, 02 Oct 2024 15:27:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808899.1220981; Wed, 02 Oct 2024 15:27: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 1sw1GM-0007yP-L1; Wed, 02 Oct 2024 15:27:38 +0000
Received: by outflank-mailman (input) for mailman id 808899;
 Wed, 02 Oct 2024 15:27: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GK-0007h7-VB
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:36 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d9347e47-80d2-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 17:27:34 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a8d60e23b33so996971366b.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:34 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d9347e47-80d2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882853; x=1728487653; 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=QNpzenwNX1xQ9mu7HMeabzs8vltFJnRXlsr3r5RUzqo=;
        b=BHcqN9ciFN1OnXnQ2n7ibhwEDFrBO8RU2exthpJ9CJqdCkzVaGk0LE7E4uyr7ehE/m
         cKWe/UwhpBstNSQsZnP/3OHlfH3qv6qmDm0Krh7obGtDiUZiFpbIq+5yoBU/zxY/i3F5
         4sNSibCxFeU5CcTe4h7U2JomL3AmTl8emlTgw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882853; x=1728487653;
        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=QNpzenwNX1xQ9mu7HMeabzs8vltFJnRXlsr3r5RUzqo=;
        b=htTQzGN3mrdrqKz5d7Ot7Hfkxu4D2BXjDXC1qyPn05ZodYf6l5A2JPhJkKTgcdL0NL
         +64FoXXmedxqh+9YGZjiJDcp3cDnCvTbWbvnsBR3G8R1dxaOl143liu9Ve/qMBQUd0gc
         DsqxgJmxu3dEwHN1N5PIUjA2NoXMvoKqiXnAkoLBwN2uZwVhX+Uy5OHaQzTCb6mzjyTr
         YhH+TUjBcUQYBxZAVaIlfSRWWcwhJ2pTovnp9UiCQPqgcYG4rP7QIGh8iiZeYcSeMOTa
         1rGr9OgVvkVJObNkpTPH31eDODVDqpvcFq09ynfpHqhFnMRfLJNuMHOQINh/pPAzwGKa
         2+2A==
X-Gm-Message-State: AOJu0YydX/+D4tgph+20Tlyrnc2IvFQVSEI+gGeBoivs4rv85J9At/r3
	FZyoHfJgA68+iVBaG8yvND8Vax5Jajo04eQ5DOUKVbvQy1oLyFBZP54NkJuG9dZ27TlwtyIOBYb
	QuII=
X-Google-Smtp-Source: AGHT+IFQ2XX6ISngkSTnqF89HuOKeJjRhoa7+qtvJ67fSE4AOF1Zgmx8YWcGi7gmdPIBoldy4uAzPw==
X-Received: by 2002:a17:907:6d1b:b0:a86:a1cd:5a8c with SMTP id a640c23a62f3a-a98f823cbb3mr296401266b.22.1727882853483;
        Wed, 02 Oct 2024 08:27:33 -0700 (PDT)
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>
Subject: [PATCH v2 0/7] x86/alternatives: Adjust all insn-relative fields
Date: Wed,  2 Oct 2024 16:27:18 +0100
Message-Id: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Alternatives have had a reasonably severe restriction since their
introduction.  This has been the source of several bugs, and several
inefficiencies particularly in the speculative safety paths.

v2:
  Most work is in patch 1 and the new patch 2 (userspace harness).  Other
  patches with minor or no change.

Andrew Cooper (7):
  x86: Introduce x86_decode_lite()
  tests/x86: Introduce a userspace test harness for x86_decode_lite()
  x86/alternative: Walk all replacements during self tests
  x86/alternative: Indent the relocation logic
  x86/alternative: Replace a continue with a goto
  x86/alternative: Relocate all insn-relative fields
  x86/spec-ctrl: Introduce and use DO_COND_BHB_SEQ

 tools/tests/Makefile                      |   1 +
 tools/tests/x86-decode-lite/.gitignore    |   1 +
 tools/tests/x86-decode-lite/Makefile      |  45 ++
 tools/tests/x86-decode-lite/insns.S       | 703 ++++++++++++++++++++++
 tools/tests/x86-decode-lite/macro-magic.h |  52 ++
 tools/tests/x86-decode-lite/main.c        | 111 ++++
 tools/tests/x86-decode-lite/x86-emulate.h |  27 +
 xen/arch/x86/alternative.c                | 213 +++++--
 xen/arch/x86/hvm/vmx/entry.S              |  12 +-
 xen/arch/x86/include/asm/spec_ctrl_asm.h  |  43 +-
 xen/arch/x86/x86_emulate/Makefile         |   6 +
 xen/arch/x86/x86_emulate/decode-lite.c    | 311 ++++++++++
 xen/arch/x86/x86_emulate/private.h        |   2 +
 xen/arch/x86/x86_emulate/x86_emulate.h    |  14 +
 14 files changed, 1456 insertions(+), 85 deletions(-)
 create mode 100644 tools/tests/x86-decode-lite/.gitignore
 create mode 100644 tools/tests/x86-decode-lite/Makefile
 create mode 100644 tools/tests/x86-decode-lite/insns.S
 create mode 100644 tools/tests/x86-decode-lite/macro-magic.h
 create mode 100644 tools/tests/x86-decode-lite/main.c
 create mode 100644 tools/tests/x86-decode-lite/x86-emulate.h
 create mode 100644 xen/arch/x86/x86_emulate/decode-lite.c

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808901.1220992 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GP-0008Jd-0j; Wed, 02 Oct 2024 15:27:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808901.1220992; Wed, 02 Oct 2024 15:27: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 1sw1GO-0008JM-TT; Wed, 02 Oct 2024 15:27:40 +0000
Received: by outflank-mailman (input) for mailman id 808901;
 Wed, 02 Oct 2024 15:27: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GN-0007h7-IP
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:39 +0000
Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com
 [2a00:1450:4864:20::644])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dade0930-80d2-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 17:27:37 +0200 (CEST)
Received: by mail-ej1-x644.google.com with SMTP id
 a640c23a62f3a-a8a7cdfdd80so1116046666b.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:37 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dade0930-80d2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882856; x=1728487656; 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=BltK+sBNZSyWmrxnW27KxfncArL/nZis+9sjT7JLt9M=;
        b=uXIT7NRw9hnvWJfJ5XhJ4nTEdBKGqdqnvw19b99x/V/n3HfCpczFQREZxZPtj8bLF+
         /YMWVcxM4VCgJPGEa62cop5U7ravFLZCazyW2mwqe0DyBroaoIiAvOKb8B23/Dn+PwbD
         Yx+N+5VG10IfwnIJsPMVAl11vvsoX+4Aua5Zc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882856; x=1728487656;
        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=BltK+sBNZSyWmrxnW27KxfncArL/nZis+9sjT7JLt9M=;
        b=d9U9Y9Zmm62q2NreFUN95Lhq+0dbZuVEGOVAlH8+I7JPKiTbUi+2rs97hKWiKSm4ix
         2OKccRV5xPAxk55EuVKTYGVHLaTWcG5czsdrRkWe4Mrqynuglq/ELDVVYngdLOUKpOcS
         7QwXmoy1z8jYYPtFK9n+msit8a+nAZVb9ThkhhpBl7HEytzzsAssb22trr7LJsoG1HcH
         oUSAFzb/fkoXAPRoW6ApBDqEPrOYkz/Twhy+nXOvvXwdVUHtYGX0HDXP+eDPEboFrirg
         HKTKNnm+84bLWhfEHFP61WPfaRB3pb2jESmoKeWkQyh6wnJDJCF7gM5Gzv3sy4Gi3GGK
         3GcQ==
X-Gm-Message-State: AOJu0YwQS+p0XKe/NDyZz4ImOGb3e/jlp+RUXibdZbUf6uFZ98CBfYaq
	RsdSpX3bX/wIfEnrnEsu+CBRu9T2C7ys6aMWecgzzqn/Y4vqDewqUpvQSNigvLEDzc091SdEnRF
	NF5EubA==
X-Google-Smtp-Source: AGHT+IFfIxycWefXjCr/rq9pvUidEXWNsEmaJjE9ByX/OdNQkr1mKl8cl7dYCbuq0x4vCOupuQsE7g==
X-Received: by 2002:a17:907:7d87:b0:a8a:6db5:7e42 with SMTP id a640c23a62f3a-a98f821cc3fmr345093266b.9.1727882856284;
        Wed, 02 Oct 2024 08:27:36 -0700 (PDT)
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>
Subject: [PATCH v2 2/7] tests/x86: Introduce a userspace test harness for x86_decode_lite()
Date: Wed,  2 Oct 2024 16:27:20 +0100
Message-Id: <20241002152725.1841575-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

All the interesting behaviour is in insns.S.

There are 4 interesting cases; "not an instruction we tolerate", or one we do
tolerate, split by no relation, disp8 or disp32.  The DECL()/END() macros
start and terminate the tests_*[] arrays used by C.

Between DECL()/END(), a macro named _ adds an entry into the array, including
a name and the length of the instruction according to the assembler, while
being as visually unintrusive as possible.

Plain labels are ad-hoc and there to aid legibility during disassembly.  In a
couple of cases, the macro named n (for name) allows for choosing a name
manually, and is used for cases where the assembler doesn't like the mnemonic.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

v2:
 * New

Despite claiming full APX support in the 2.43 release, binutils trunk doesn't
tolerate JMPABS at all.  Clang-IAS like it but only when encoded as an
immediate, despite the fact the operand should be a moffset and encoded
without a $ prefix.  https://godbolt.org/z/P4Ph3svha

Back to this patch, I can't find any way to get Clang happy with rex.w for
explicit prefixing.  I suspect we're just going to need to ignore this test
case for clang=y.

Also, Clang and GAS disagree on needing .allow_index_reg for %riz.
---
 tools/tests/Makefile                      |   1 +
 tools/tests/x86-decode-lite/.gitignore    |   1 +
 tools/tests/x86-decode-lite/Makefile      |  45 ++
 tools/tests/x86-decode-lite/insns.S       | 703 ++++++++++++++++++++++
 tools/tests/x86-decode-lite/macro-magic.h |  52 ++
 tools/tests/x86-decode-lite/main.c        | 111 ++++
 tools/tests/x86-decode-lite/x86-emulate.h |  27 +
 7 files changed, 940 insertions(+)
 create mode 100644 tools/tests/x86-decode-lite/.gitignore
 create mode 100644 tools/tests/x86-decode-lite/Makefile
 create mode 100644 tools/tests/x86-decode-lite/insns.S
 create mode 100644 tools/tests/x86-decode-lite/macro-magic.h
 create mode 100644 tools/tests/x86-decode-lite/main.c
 create mode 100644 tools/tests/x86-decode-lite/x86-emulate.h

diff --git a/tools/tests/Makefile b/tools/tests/Makefile
index 1319c3a9d88c..6a8844673abc 100644
--- a/tools/tests/Makefile
+++ b/tools/tests/Makefile
@@ -5,6 +5,7 @@ SUBDIRS-y :=
 SUBDIRS-y += resource
 SUBDIRS-$(CONFIG_X86) += cpu-policy
 SUBDIRS-$(CONFIG_X86) += tsx
+SUBDIRS-$(CONFIG_X86) += x86-decode-lite
 ifneq ($(clang),y)
 SUBDIRS-$(CONFIG_X86) += x86_emulator
 endif
diff --git a/tools/tests/x86-decode-lite/.gitignore b/tools/tests/x86-decode-lite/.gitignore
new file mode 100644
index 000000000000..e726b493c993
--- /dev/null
+++ b/tools/tests/x86-decode-lite/.gitignore
@@ -0,0 +1 @@
+test-x86-decode-lite
diff --git a/tools/tests/x86-decode-lite/Makefile b/tools/tests/x86-decode-lite/Makefile
new file mode 100644
index 000000000000..6e8ef21e1c29
--- /dev/null
+++ b/tools/tests/x86-decode-lite/Makefile
@@ -0,0 +1,45 @@
+XEN_ROOT = $(CURDIR)/../../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+TARGET := test-x86-decode-lite
+
+.PHONY: all
+all: $(TARGET)
+
+.PHONY: run
+run: $(TARGET)
+	./$<
+
+.PHONY: clean
+clean:
+	$(RM) -- *.o $(TARGET) $(DEPS_RM)
+
+.PHONY: distclean
+distclean: clean
+	$(RM) -- *~
+
+.PHONY: install
+install: all
+	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
+	$(INSTALL_PROG) $(TARGET) $(DESTDIR)$(LIBEXEC_BIN)
+
+.PHONY: uninstall
+uninstall:
+	$(RM) -- $(DESTDIR)$(LIBEXEC_BIN)/$(TARGET)
+
+.PHONY: uninstall
+uninstall:
+
+vpath %.c ../../../xen/arch/x86/x86_emulate
+
+CFLAGS += $(CFLAGS_xeninclude) -I. -I../../../xen/arch/x86/
+CFLAGS += $(APPEND_CFLAGS)
+
+LDFLAGS += $(APPEND_LDFLAGS)
+
+%.o: Makefile
+
+$(TARGET): main.o insns.o decode-lite.o
+	$(CC) -o $@ $^ $(LDFLAGS)
+
+-include $(DEPS_INCLUDE)
diff --git a/tools/tests/x86-decode-lite/insns.S b/tools/tests/x86-decode-lite/insns.S
new file mode 100644
index 000000000000..a0f938d76905
--- /dev/null
+++ b/tools/tests/x86-decode-lite/insns.S
@@ -0,0 +1,703 @@
+#include "macro-magic.h"
+
+        .code64
+
+#ifndef __clang__
+        .allow_index_reg
+#endif
+        .text
+
+DECL(tests_rel0)
+modrm:
+        /* Mod=0, Reg=0, RM {0..f} */
+        _ add %al, (%rax)
+        _ add %al, (%rcx)
+        _ add %al, (%rdx)
+        _ add %al, (%rbx)
+        _ add %al, (%rsp) /* SIB */
+        /*add %al, (%rbp)    RIP --> tests_rel4 */
+        _ add %al, (%rsi)
+        _ add %al, (%rdi)
+        _ add %al, (%r8)
+        _ add %al, (%r9)
+        _ add %al, (%r10)
+        _ add %al, (%r11)
+        _ add %al, (%r12) /* SIB */
+        /*add %al, (%r13)    RIP --> tests_rel4 */
+        _ add %al, (%r14)
+        _ add %al, (%r15)
+
+        /* Mod=1, Reg=0, RM {0..f} */
+        _ add %al, 0x01(%rax)
+        _ add %al, 0x01(%rcx)
+        _ add %al, 0x01(%rdx)
+        _ add %al, 0x01(%rbx)
+        _ add %al, 0x01(%rsp) /* SIB */
+        _ add %al, 0x01(%rbp)
+        _ add %al, 0x01(%rsi)
+        _ add %al, 0x01(%rdi)
+        _ add %al, 0x01(%r8)
+        _ add %al, 0x01(%r9)
+        _ add %al, 0x01(%r10)
+        _ add %al, 0x01(%r11)
+        _ add %al, 0x01(%r12) /* SIB */
+        _ add %al, 0x01(%r13)
+        _ add %al, 0x01(%r14)
+        _ add %al, 0x01(%r15)
+
+        /* Mod=2, Reg=0, RM {0..f} */
+        _ add %al, 0x7f000001(%rax)
+        _ add %al, 0x7f000001(%rcx)
+        _ add %al, 0x7f000001(%rdx)
+        _ add %al, 0x7f000001(%rbx)
+        _ add %al, 0x7f000001(%rsp) /* SIB */
+        _ add %al, 0x7f000001(%rbp)
+        _ add %al, 0x7f000001(%rsi)
+        _ add %al, 0x7f000001(%rdi)
+        _ add %al, 0x7f000001(%r8)
+        _ add %al, 0x7f000001(%r9)
+        _ add %al, 0x7f000001(%r10)
+        _ add %al, 0x7f000001(%r11)
+        _ add %al, 0x7f000001(%r12) /* SIB */
+        _ add %al, 0x7f000001(%r13)
+        _ add %al, 0x7f000001(%r14)
+        _ add %al, 0x7f000001(%r15)
+
+        /* Mod=3, Reg=0, RM {0..f} */
+        _ add %al, %al
+        _ add %al, %cl
+        _ add %al, %dl
+        _ add %al, %bl
+        _ add %al, %ah
+        _ add %al, %ch
+        _ add %al, %dh
+        _ add %al, %dl
+        _ add %al, %r8b
+        _ add %al, %r9b
+        _ add %al, %r10b
+        _ add %al, %r11b
+        _ add %al, %r12b
+        _ add %al, %r13b
+        _ add %al, %r14b
+        _ add %al, %r15b
+
+sib:
+        /* Mod=0, Reg=0, RM=4, SIB S=3, I=0, B {0..f} */
+        _ add %al, (%rax, %rax, 8)
+        _ add %al, (%rcx, %rax, 8)
+        _ add %al, (%rdx, %rax, 8)
+        _ add %al, (%rbx, %rax, 8)
+        _ add %al, (%rsp, %rax, 8)
+        _ add %al, (    , %rax, 8) /* "none", %rbp encoded with mod=1/2 */
+        _ add %al, (%rsi, %rax, 8)
+        _ add %al, (%rdi, %rax, 8)
+        _ add %al, (%r8,  %rax, 8)
+        _ add %al, (%r9,  %rax, 8)
+        _ add %al, (%r10, %rax, 8)
+        _ add %al, (%r11, %rax, 8)
+        _ add %al, (%r12, %rax, 8)
+        _ rex.b add %al,(,%rax, 8) /* "none", %r13 encoded with mod=1/2 */
+        _ add %al, (%r14, %rax, 8)
+        _ add %al, (%r15, %rax, 8)
+
+        /* Mod=1, Reg=0, RM=4, SIB S=3, I=0, B {0..f} */
+        _ add %al, 0x01(%rax, %rax, 8)
+        _ add %al, 0x01(%rcx, %rax, 8)
+        _ add %al, 0x01(%rdx, %rax, 8)
+        _ add %al, 0x01(%rbx, %rax, 8)
+        _ add %al, 0x01(%rsp, %rax, 8)
+        _ add %al, 0x01(%rbp, %rax, 8)
+        _ add %al, 0x01(%rsi, %rax, 8)
+        _ add %al, 0x01(%rdi, %rax, 8)
+        _ add %al, 0x01(%r8,  %rax, 8)
+        _ add %al, 0x01(%r9,  %rax, 8)
+        _ add %al, 0x01(%r10, %rax, 8)
+        _ add %al, 0x01(%r11, %rax, 8)
+        _ add %al, 0x01(%r12, %rax, 8)
+        _ add %al, 0x01(%r13, %rax, 8)
+        _ add %al, 0x01(%r14, %rax, 8)
+        _ add %al, 0x01(%r15, %rax, 8)
+
+        /* Mod=2, Reg=0, RM=4, SIB S=3, I=0, B {0..f} */
+        _ add %al, 0x7f000001(%rax, %rax, 8)
+        _ add %al, 0x7f000001(%rcx, %rax, 8)
+        _ add %al, 0x7f000001(%rdx, %rax, 8)
+        _ add %al, 0x7f000001(%rbx, %rax, 8)
+        _ add %al, 0x7f000001(%rsp, %rax, 8)
+        _ add %al, 0x7f000001(%rbp, %rax, 8)
+        _ add %al, 0x7f000001(%rsi, %rax, 8)
+        _ add %al, 0x7f000001(%rdi, %rax, 8)
+        _ add %al, 0x7f000001(%r8,  %rax, 8)
+        _ add %al, 0x7f000001(%r9,  %rax, 8)
+        _ add %al, 0x7f000001(%r10, %rax, 8)
+        _ add %al, 0x7f000001(%r11, %rax, 8)
+        _ add %al, 0x7f000001(%r12, %rax, 8)
+        _ add %al, 0x7f000001(%r13, %rax, 8)
+        _ add %al, 0x7f000001(%r14, %rax, 8)
+        _ add %al, 0x7f000001(%r15, %rax, 8)
+
+        /* Mod=0, Reg=0, RM=4, SIB S=3, I=4, B {0..f} */
+        _ add %al, (%rax, %riz, 8)
+        _ add %al, (%rcx, %riz, 8)
+        _ add %al, (%rdx, %riz, 8)
+        _ add %al, (%rbx, %riz, 8)
+        _ add %al, (%rsp, %riz, 8)
+        _ add %al, (    , %riz, 8) /* %rbp encoded with mod=1/2 */
+        _ add %al, (%rsi, %riz, 8)
+        _ add %al, (%rdi, %riz, 8)
+        _ add %al, (%r8,  %riz, 8)
+        _ add %al, (%r9,  %riz, 8)
+        _ add %al, (%r10, %riz, 8)
+        _ add %al, (%r11, %riz, 8)
+        _ add %al, (%r12, %riz, 8)
+        _ rex.b add %al,(,%riz, 8) /* %r13 encoded with mod=1/2 */
+        _ add %al, (%r14, %riz, 8)
+        _ add %al, (%r15, %riz, 8)
+
+        /* Mod=1, Reg=0, RM=4, SIB S=3, I=4, B {0..f} */
+        _ add %al, 0x01(%rax, %riz, 8)
+        _ add %al, 0x01(%rcx, %riz, 8)
+        _ add %al, 0x01(%rdx, %riz, 8)
+        _ add %al, 0x01(%rbx, %riz, 8)
+        _ add %al, 0x01(%rsp, %riz, 8)
+        _ add %al, 0x01(%rbp, %riz, 8)
+        _ add %al, 0x01(%rsi, %riz, 8)
+        _ add %al, 0x01(%rdi, %riz, 8)
+        _ add %al, 0x01(%r8,  %riz, 8)
+        _ add %al, 0x01(%r9,  %riz, 8)
+        _ add %al, 0x01(%r10, %riz, 8)
+        _ add %al, 0x01(%r11, %riz, 8)
+        _ add %al, 0x01(%r12, %riz, 8)
+        _ add %al, 0x01(%r13, %riz, 8)
+        _ add %al, 0x01(%r14, %riz, 8)
+        _ add %al, 0x01(%r15, %riz, 8)
+
+        /* Mod=2, Reg=0, RM=4, SIB S=3, I=4, B {0..f} */
+        _ add %al, 0x7f000001(%rax, %riz, 8)
+        _ add %al, 0x7f000001(%rcx, %riz, 8)
+        _ add %al, 0x7f000001(%rdx, %riz, 8)
+        _ add %al, 0x7f000001(%rbx, %riz, 8)
+        _ add %al, 0x7f000001(%rsp, %riz, 8)
+        _ add %al, 0x7f000001(%rbp, %riz, 8)
+        _ add %al, 0x7f000001(%rsi, %riz, 8)
+        _ add %al, 0x7f000001(%rdi, %riz, 8)
+        _ add %al, 0x7f000001(%r8,  %riz, 8)
+        _ add %al, 0x7f000001(%r9,  %riz, 8)
+        _ add %al, 0x7f000001(%r10, %riz, 8)
+        _ add %al, 0x7f000001(%r11, %riz, 8)
+        _ add %al, 0x7f000001(%r12, %riz, 8)
+        _ add %al, 0x7f000001(%r13, %riz, 8)
+        _ add %al, 0x7f000001(%r14, %riz, 8)
+        _ add %al, 0x7f000001(%r15, %riz, 8)
+
+        .macro alu_ops op
+        _ \op %al, (%rax)
+        _ \op %eax, (%rax)
+        _ \op (%rax), %al
+        _ \op (%rax), %eax
+        _ \op $1, %al
+        _ \op $0x7f000001, %eax
+
+        /* Vary osize on imm fields */
+        _ data16 \op $1, %al
+        _ rex.w \op $1, %al
+        _ data16 rex.w \op $1, %al
+
+        _ \op $0x7f01, %ax
+        _ \op $0x7f000001, %rax
+        _ data16 \op $0x7f000001, %rax
+        .endm
+
+onebyte_row_0x:
+        alu_ops add
+        alu_ops or
+
+onebyte_row_1x:
+        alu_ops adc
+        alu_ops sbb
+
+onebyte_row_2x:
+        alu_ops and
+        .code32
+        _ es nop
+        .code64
+        alu_ops sub
+        _ cs nop
+
+onebyte_row_3x:
+        alu_ops xor
+        .code32
+        _ ss nop
+        .code64
+        alu_ops cmp
+        _ ds nop
+
+/* onebyte_row_4x --> rex prefixes */
+
+onebyte_row_5x:
+        _ push %rax
+        _ push %rcx
+        _ push %rdx
+        _ push %rbx
+        _ push %rsp
+        _ push %rbp
+        _ push %rsi
+        _ push %rdi
+        _ pop %rax
+        _ pop %rcx
+        _ pop %rdx
+        _ pop %rbx
+        _ pop %rsp
+        _ pop %rbp
+        _ pop %rsi
+        _ pop %rdi
+
+onebyte_row_6x:
+        /*pusha,popa,bound --> not supported */
+        _ movsxd (%rax), %eax
+        _ movslq (%rax), %rax
+        _ fs nop
+        _ gs nop
+        _ data16 nop
+        /* addr32 --> not supported */
+        _ pushq $0x7f000001
+        _ pushw $0x7f01
+        _ rex.w pushq $0x7f000001
+        _ imul $0x7f01, %ax, %ax
+        _ imul $0x7f000001, %eax, %eax
+        _ imul $0x7f000001, %rax, %rax
+        _ pushq $0
+        _ pushw $0
+        _ rex.w pushq $0
+        _ imul $0, %ax, %ax
+        _ imul $0, %eax, %eax
+        _ imul $0, %rax, %rax
+        _ insb
+        _ insw
+        _ insl
+        _ outsb
+        _ outsw
+        _ outsl
+
+/* onebyte_row_7x: --> Jcc disp8 */
+
+onebyte_row_8x:
+        _ add $0, %cl /* Grp1 */
+        _ data16 add $0, %cl
+        _ rex.w add $0, %cl
+        _ add $0x7f01, %cx
+        _ add $0x7f000001, %ecx
+        _ add $0x7f000001, %rcx
+        _ add $0, %cx
+        _ add $0, %ecx
+        _ add $0, %rcx
+        _ test %cl, %cl
+        _ test %ecx, %ecx
+        _ xchg %cl, %cl
+        _ xchg %ecx, %ecx
+        _ mov %cl, (%rax)
+        _ mov %ecx, (%rax)
+        _ mov (%rax), %cl
+        _ mov (%rax), %ecx
+        _ mov %cs, (%rax)
+        _ lea (%rax), %eax
+        _ mov (%rax), %cs
+        /*pop mem --> Grp1a, Not supported (XOP prefix adjacent) */
+
+onebyte_row_9x:
+        _ nop
+        _ pause
+        _ xchg %ax, %ax
+        _ xchg %eax, %eax
+        _ xchg %rax, %rax
+        _ rex.w xchg %rax, %rax
+        _ cltq
+        _ cqto
+        _ wait
+        _ pushf
+        _ popf
+        _ sahf
+        _ lahf
+
+onebyte_row_ax:
+        _ mov 0x8000000000000001, %al
+        _ mov 0x8000000000000001, %ax
+        _ mov 0x8000000000000001, %eax
+        _ mov 0x8000000000000001, %rax
+        _ mov %al,  0x8000000000000001
+        _ mov %ax,  0x8000000000000001
+        _ mov %eax, 0x8000000000000001
+        _ mov %rax, 0x8000000000000001
+        _ movsb
+        _ movsl
+        _ cmpsb
+        _ cmpsl
+        _ test $0, %al
+        _ test $0x80000001, %eax
+        _ test $0x7f000001, %rax
+        _ stosb
+        _ stosl
+        _ lodsb
+        _ lodsl
+        _ scasb
+        _ scasl
+
+onebyte_row_bx:
+        _ mov $0, %al
+        _ mov $0, %cl
+        _ mov $0x7f01, %ax
+        _ mov $0x7f01, %cx
+        _ mov $0x7f000001, %eax
+        _ mov $0x7f000001, %ecx
+        _ mov $0x7f00000000000001, %rax
+        _ mov $0x7f00000000000001, %rcx
+
+onebyte_row_cx:
+        _ rol $0, %al /* Grp2 */
+        _ rol $0, %ax
+        _ rol $0, %eax
+        _ rol $0, %rax
+        /*ret $0 --> not supported */
+        _ ret
+        /*les,lds --> not supported */
+        _ movb $0, (%rax) /* Grp11 */
+        _ movw $0, (%rax)
+        _ movl $0, (%rax)
+        _ movq $0, (%rax)
+        /*xbegin (Grp11) --> disp32 */
+        /*enter,leave,lretq $0 --> not supported */
+        _ lretq
+        _ int3
+        _ int $0
+        /*into,iret --> not supported */
+
+onebyte_row_dx:
+        _ rol $1, %al /* Grp2 */
+        _ rol $1, %ax
+        _ rol $1, %eax
+        _ rol $1, %rax
+        _ rol %cl, %al
+        _ rol %cl, %ax
+        _ rol %cl, %eax
+        _ rol %cl, %rax
+        /*aam,aad,setalc,xlat,d8...df --> not supported */
+
+onebyte_row_ex:
+        /*loop{ne,e,},jrcxz --> not supported */
+        _ in $0, %al
+        _ in $0, %eax
+        _ out %al,  $0
+        _ out %eax, $0
+        /*call,jmp --> disp32 */
+        /*ljmp --> not supported */
+        /*jmp --> disp8 */
+        _ in %dx, %al
+        _ in %dx, %eax
+        _ out %al,  %dx
+        _ out %eax, %dx
+
+onebyte_row_fx:
+        _ lock addb $0, (%rax)
+        n "icebp" .byte 0xf1 /* icebp */
+        _ repne nop
+        _ repe nop
+        _ hlt
+        _ cmc
+        _ test $0, %cl /* Grp3, /0 has extra Imm{8,} */
+        _ not %cl
+        _ test $0x7f01, %cx
+        _ not %cx
+        _ test $0x7f000001, %ecx
+        _ not %ecx
+        _ test $0x7f000001, %rcx
+        _ not %rcx
+        _ clc
+        _ stc
+        _ cli
+        _ sti
+        _ cld
+        _ std
+        _ inc %cl /* Grp4 */
+        _ dec %cl
+        _ inc %ecx /* Grp5 */
+        _ dec %ecx
+        _ call *(%rax)
+        _ lcall *(%rax)
+        _ jmp *(%rax)
+        _ ljmp *(%rax)
+        _ push (%rax)
+
+twobyte_row_0x:
+        _ sldt (%rax) /* Grp6 */
+        _ sgdt (%rax) /* Grp7 */
+        _ lar (%rax), %eax
+        _ lsl (%rax), %eax
+        _ clts
+        _ wbinvd
+        _ ud2a
+
+twobyte_row_1x:
+        _ prefetchnta (%rax) /* Grp16 (Hint Nop) */
+        _ nopl (%rax)
+
+twobyte_row_2x:
+        _ mov %cr0, %rax
+        _ mov %dr0, %rax
+        _ mov %rax, %cr0
+        _ mov %rax, %dr0
+
+twobyte_row_3x:
+        _ wrmsr
+        _ rdtsc
+        _ rdmsr
+        _ rdpmc
+
+twobyte_row_4x:
+        _ cmovo (%rax), %eax
+        _ cmovg (%rax), %eax
+
+/* twobyte_row_8x: --> Jcc disp32 */
+
+twobyte_row_9x:
+        _ seto (%rax)
+        _ setg (%rax)
+
+twobyte_row_ax:
+        _ push %fs
+        _ pop %fs
+        _ cpuid
+        _ bt %eax, (%rax)
+        _ shld $0, %ax, (%rax)
+        _ shld $0, %eax, (%rax)
+        _ shld $0, %rax, (%rax)
+        _ shld %cl, %ax, (%rax)
+        _ shld %cl, %eax, (%rax)
+        _ shld %cl, %rax, (%rax)
+        _ push %gs
+        _ pop %gs
+        /*rsm --> not supported */
+        _ bts %eax, (%rax)
+        _ shrd $0, %ax, (%rax)
+        _ shrd $0, %eax, (%rax)
+        _ shrd $0, %rax, (%rax)
+        _ shrd %cl, %ax, (%rax)
+        _ shrd %cl, %eax, (%rax)
+        _ shrd %cl, %rax, (%rax)
+        _ fxsave (%rax) /* Grp15 */
+        _ imul (%rax), %eax
+
+twobyte_row_bx:
+        _ cmpxchg %al, (%rax)
+        _ cmpxchg %eax, (%rax)
+        _ lss (%rax), %eax
+        _ btr %eax, (%rax)
+        _ lfs (%rax), %eax
+        _ lgs (%rax), %eax
+        _ movzbl (%rax), %eax
+        _ movzwl (%rax), %eax
+        _ popcnt (%rax), %eax
+        _ ud1 (%rax), %eax /* Grp10 */
+        _ bt $0, %ax /* Grp8 */
+        _ bt $0, %eax
+        _ bt $0, %rax
+        _ btc %eax, (%rax)
+        _ bsf (%rax), %eax
+        _ bsr (%rax), %eax
+        _ movsbl (%rax), %eax
+        _ movswl (%rax), %eax
+
+twobyte_row_cx:
+        _ xadd %al, (%rax)
+        _ xadd %eax, (%rax)
+        _ cmpxchg8b (%rax) /* Grp9 */
+        _ bswap %eax
+        _ bswap %edi
+
+END(tests_rel0)
+
+DECL(tests_rel1)
+disp8:
+1:
+        _ jo   1b
+        _ jno  1b
+        _ jb   1b
+        _ jae  1b
+        _ je   1b
+        _ jne  1b
+        _ jbe  1b
+        _ ja   1b
+        _ js   1b
+        _ jns  1b
+        _ jp   1b
+        _ jnp  1b
+        _ jl   1b
+        _ jge  1b
+        _ jle  1b
+        _ jg   1b
+        _ jmp  1b
+
+disp8_rex:
+        _ rex.w jo   1b
+        _ rex.w jno  1b
+        _ rex.w jb   1b
+        _ rex.w jae  1b
+        _ rex.w je   1b
+        _ rex.w jne  1b
+        _ rex.w jbe  1b
+        _ rex.w ja   1b
+        _ rex.w js   1b
+        _ rex.w jns  1b
+        _ rex.w jp   1b
+        _ rex.w jnp  1b
+        _ rex.w jl   1b
+        _ rex.w jge  1b
+        _ rex.w jle  1b
+        _ rex.w jg   1b
+        _ rex.w jmp  1b
+END(tests_rel1)
+
+DECL(tests_rel4)
+disp32:
+        _ call   other_section
+        _ jmp    other_section
+        _ jo     other_section
+        _ jno    other_section
+        _ jb     other_section
+        _ jae    other_section
+        _ je     other_section
+        _ jne    other_section
+        _ jbe    other_section
+        _ ja     other_section
+        _ js     other_section
+        _ jns    other_section
+        _ jp     other_section
+        _ jnp    other_section
+        _ jl     other_section
+        _ jge    other_section
+        _ jle    other_section
+        _ jg     other_section
+        _ xbegin other_section
+
+disp32_rex:
+        _ rex.w call   other_section
+        _ rex.w jmp    other_section
+        _ rex.w jo     other_section
+        _ rex.w jno    other_section
+        _ rex.w jb     other_section
+        _ rex.w jae    other_section
+        _ rex.w je     other_section
+        _ rex.w jne    other_section
+        _ rex.w jbe    other_section
+        _ rex.w ja     other_section
+        _ rex.w js     other_section
+        _ rex.w jns    other_section
+        _ rex.w jp     other_section
+        _ rex.w jnp    other_section
+        _ rex.w jl     other_section
+        _ rex.w jge    other_section
+        _ rex.w jle    other_section
+        _ rex.w jg     other_section
+        _ rex.w xbegin other_section
+
+riprel:
+        _ add %al, 0(%rip)
+        _ rex.b add %al, 0(%rip)
+
+        _ addb $1, 0(%rip)
+        _ rex.b addb $1, 0(%rip)
+
+        _ addl $0x7f000001, 0(%rip)
+        _ rex.b addl $0x7f000001, 0(%rip)
+END(tests_rel4)
+
+DECL(tests_unsup)
+
+unsup_prefix: /* Prefixes unimplemented for simplicity. */
+        _ vaddpd %zmm0, %zmm0, %zmm0 /* 0x62 EVEX */
+        _ addr32 nop                 /* 0x67 Address size override */
+        _ bextr $0, %eax, %eax       /* 0x8f XOP */
+        _ bextr %eax, %eax, %eax     /* 0xc4 VEX3 */
+        _ vaddpd %ymm0, %ymm0, %ymm0 /* 0xc5 VEX2 */
+        n "jmpabs 0" .byte 0xd5, 0x00, 0xa1, 0x01, 0, 0, 0, 0, 0, 0, 0x80 /* 0xd5 REX2 */
+        _ fadds (%rax)               /* 0xd8 ... 0xdf ESCAPE (x87) */
+        _ femms                      /* 0x0f,0x0e ... 0x0f 3DNOW */
+
+unsup_branch:
+1:
+        _ loopne 1b
+        _ loope  1b
+        _ loop   1b
+        _ jrcxz  1b
+
+opsize_branch: /* 66-prefixed branches are decoded differently by vendors */
+        _ data16 call   other_section
+        _ data16 jmp    other_section
+        _ data16 jo     other_section
+        _ data16 jno    other_section
+        _ data16 jb     other_section
+        _ data16 jae    other_section
+        _ data16 je     other_section
+        _ data16 jne    other_section
+        _ data16 jbe    other_section
+        _ data16 ja     other_section
+        _ data16 js     other_section
+        _ data16 jns    other_section
+        _ data16 jp     other_section
+        _ data16 jnp    other_section
+        _ data16 jl     other_section
+        _ data16 jge    other_section
+        _ data16 jle    other_section
+        _ data16 jg     other_section
+        _ data16 xbegin other_section
+
+not_64bit: /* Not valid/encodable in 64bit mode */
+        .code32
+        _ push %es
+        _ pop %es
+        _ push %cs
+        _ push %ss
+        _ pop %ss
+        _ push %ds
+        _ pop %ds
+        _ daa
+        _ das
+        _ aaa
+        _ aas
+        _ pusha
+        _ popa
+        _ bound %eax, (%eax)
+        /*arpl %ax, %ax --> movsxd in 64bit mode */
+        /* Grp1 */
+        _ lcall $-1, $-1
+        _ les (%eax), %eax
+        _ lds (%eax), %eax
+        _ into
+        _ aam $0
+        _ aad $0 /* Also REX2, also not supported */
+        n "salc" .byte 0xd6
+        _ ljmp $-1, $-1
+        .code64
+
+unsup_insn: /* Instructions that would complicated decode, or shouldn't be used */
+        _ ret $0
+        _ enter $0, $0
+        _ leave
+        _ lretq $0
+        _ iretq
+        _ xlat
+        _ syscall
+        _ sysretl
+        _ invd
+        _ sysenter
+        _ sysexitl
+        _ rsm
+
+END(tests_unsup)
+
+        /* This is here to cause jmps to use their disp32 form. */
+        .section .text.other_section, "ax", @progbits
+other_section:
+        int3
+
+        /* Mark this file as not needing executable stacks. */
+        .section  .note.GNU-stack, "", @progbits
diff --git a/tools/tests/x86-decode-lite/macro-magic.h b/tools/tests/x86-decode-lite/macro-magic.h
new file mode 100644
index 000000000000..b6b59906c941
--- /dev/null
+++ b/tools/tests/x86-decode-lite/macro-magic.h
@@ -0,0 +1,52 @@
+#ifndef X86_DECODE_LITE_LINKAGE_H
+#define X86_DECODE_LITE_LINKAGE_H
+
+/* Start a 'struct test' array */
+.macro start_arr aname
+    .pushsection .data.rel.ro.\aname, "aw", @progbits
+    .globl \aname
+    .type \aname, STT_OBJECT
+\aname:
+    .popsection
+
+    /* Declare a macro wrapping \aname */
+    .macro pushsection_arr
+    .pushsection .data.rel.ro.\aname, "aw", @progbits
+    .endm
+.endm
+
+/* Macro 'n' to wrap the metadata of an instruction.  Name can be different. */
+.macro n name:req insn:vararg
+    /* Emit the instruction, with start & end markers. */
+.Ls\@: \insn
+.Le\@:
+
+    /* Emit \name as a string. */
+    .pushsection .rosdata.str1, "aMS", @progbits, 1
+.Ln\@: .asciz "\name"
+    .popsection
+
+    /* Emit an entry into the array. */
+    pushsection_arr
+    .quad .Ln\@, .Ls\@, .Le\@ - .Ls\@
+    .popsection
+.endm
+
+/* Macro '_' where the name is the instruction itself. */
+.macro _ insn:vararg
+    n "\insn" \insn
+.endm
+
+/* Finish a 'struct test' array */
+.macro finish_arr aname
+    pushsection_arr
+    .quad 0, 0, 0
+    .size \aname, . - \aname
+    .popsection
+    .purgem pushsection_arr
+.endm
+
+#define DECL(aname) start_arr aname
+#define END(aname) finish_arr aname
+
+#endif /* X86_DECODE_LITE_LINKAGE_H */
diff --git a/tools/tests/x86-decode-lite/main.c b/tools/tests/x86-decode-lite/main.c
new file mode 100644
index 000000000000..cdae7de8e90e
--- /dev/null
+++ b/tools/tests/x86-decode-lite/main.c
@@ -0,0 +1,111 @@
+/*
+ * Userspace test harness for x86_decode_lite().
+ */
+#include <stdio.h>
+
+#include "x86-emulate.h"
+
+static unsigned int nr_failures;
+#define fail(t, fmt, ...)                                       \
+({                                                              \
+    const unsigned char *insn = (t)->ip;                        \
+                                                                \
+    nr_failures++;                                              \
+                                                                \
+    (void)printf("  Fail '%s' [%02x", (t)->name, *insn);        \
+    for ( unsigned int i = 1; i < (t)->len; i++ )               \
+        printf(" %02x", insn[i]);                               \
+    printf("]\n");                                              \
+                                                                \
+    (void)printf(fmt, ##__VA_ARGS__);                           \
+})
+
+struct test {
+    const char *name;
+    void *ip;
+    unsigned long len;
+};
+
+extern const struct test
+/* Defined in insns.S, ends with sentinel */
+    tests_rel0[], /* No relocatable entry */
+    tests_rel1[], /* disp8 */
+    tests_rel4[], /* disp32 or RIP-relative */
+    tests_unsup[]; /* Unsupported instructions */
+
+static inline void run_tests(const struct test *tests, unsigned int rel_sz)
+{
+    printf("Test rel%u\n", rel_sz);
+
+    for ( unsigned int i = 0; tests[i].name; ++i )
+    {
+        const struct test *t = &tests[i];
+        x86_decode_lite_t r;
+
+        /*
+         * Don't end strictly at t->len.  This provides better diagnostics if
+         * too many bytes end up getting consumed.
+         */
+        r = x86_decode_lite(t->ip, t->ip + /* t->len */ 20);
+
+        if ( r.len == 0 )
+        {
+            fail(t, "    Failed to decode instruction\n");
+
+            if ( r.rel_sz != 0 || r.rel )
+                fail(t, "    Rel/sz despite no decode\n");
+
+            continue;
+        }
+
+        if ( r.len != t->len )
+        {
+            fail(t, "    Expected length %lu, got %u\n",
+                 t->len, r.len);
+            continue;
+        }
+
+        if ( r.rel_sz != rel_sz )
+        {
+            fail(t, "    Expected relocation size %u, got %u\n",
+                 rel_sz, r.rel_sz);
+            continue;
+        }
+
+        if ( r.rel_sz &&
+             (r.rel < t->ip ||
+              r.rel > t->ip + t->len ||
+              r.rel + r.rel_sz > t->ip + t->len) )
+        {
+            fail(t, "    Rel [%p,+%u) outside insn [%p,+%lu)\n",
+                 r.rel, r.rel_sz, t->ip, t->len);
+            continue;
+        }
+    }
+}
+
+static void run_tests_unsup(const struct test *tests)
+{
+    printf("Test unsup\n");
+
+    for ( unsigned int i = 0; tests[i].name; ++i )
+    {
+        const struct test *t = &tests[i];
+        x86_decode_lite_t r = x86_decode_lite(t->ip, t->ip + t->len);
+
+        if ( r.len )
+            fail(t, "    Got len %u\n", r.len);
+    }
+}
+
+int main(int argc, char **argv)
+{
+    printf("Tests for x86_decode_lite()\n");
+
+    run_tests(tests_rel0, 0);
+    run_tests(tests_rel1, 1);
+    run_tests(tests_rel4, 4);
+    run_tests_unsup(tests_unsup);
+
+    return !!nr_failures;
+}
diff --git a/tools/tests/x86-decode-lite/x86-emulate.h b/tools/tests/x86-decode-lite/x86-emulate.h
new file mode 100644
index 000000000000..558dab1b768e
--- /dev/null
+++ b/tools/tests/x86-decode-lite/x86-emulate.h
@@ -0,0 +1,27 @@
+#ifndef X86_EMULATE_H
+#define X86_EMULATE_H
+
+#include <assert.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <xen/asm/x86-defns.h>
+#include <xen/asm/x86-vendors.h>
+
+#include <xen-tools/common-macros.h>
+
+#define ASSERT assert
+
+#define printk(...)
+
+#define likely
+#define unlikely
+#define cf_check
+#define init_or_livepatch
+#define init_or_livepatch_const
+
+#include "x86_emulate/x86_emulate.h"
+
+#endif /* X86_EMULATE_H */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808902.1220998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GP-0008RA-K4; Wed, 02 Oct 2024 15:27:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808902.1220998; Wed, 02 Oct 2024 15: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 1sw1GP-0008Pb-Dr; Wed, 02 Oct 2024 15:27:41 +0000
Received: by outflank-mailman (input) for mailman id 808902;
 Wed, 02 Oct 2024 15: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GN-0007h7-Vx
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:39 +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 db2f3685-80d2-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 17:27:38 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a7a843bef98so986424266b.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:38 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db2f3685-80d2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882857; x=1728487657; 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=/OYNqhpKRgZXD8+6+AhbIpT8QNeVjNGqQsR7u8ru59I=;
        b=bgZ6vCv6CL3Yk4zQrlPy9O+4COEFiqNa2NUzpA3sziLKHuovyQmdlHA/8ge3XwFeQw
         SOs2o4DqyIXezOuCPbnD17FpHtV3J1iZzuxunOsCQNJLPQBbQ1/yDWy+P4f8L0eKCnNx
         4wLCaaiSVI8uebUwmjj0nOCtrxAUJx+jNosuk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882857; x=1728487657;
        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=/OYNqhpKRgZXD8+6+AhbIpT8QNeVjNGqQsR7u8ru59I=;
        b=lyqkjF9C4IY0B5hxgilOpGRA3nCV5MkZWzvbOldh7PTWzLVe0BFvjtW/LijU78NKnH
         ugg0uJP/49KHp77yY75+h68x8n0aRSsAV23rodPSK6QMAd+NRWE+3o/IH6fP8YqmxFxP
         R0Xz6GKqALvfq8XHTcaX7YsmGtu/ZsiKVzjZ5pNMU+uoSpZxhGvaR8UAcix8YPbrrwN9
         kjyhVyaGABxBjcuL5lvR62w3RAtBqxJGtqe33k0/vvf0/qRNTJWjv5Fw8f7Aih3W7C+H
         IfJ4Ry34huY15OYVP3jhKfDNN6DwvuQ9MhERN/d+LxSWl+RUd4XoJaCrkyWGSJNrV6tF
         peMw==
X-Gm-Message-State: AOJu0YzR3Ujw5VrCSr8lX1RAS3R8Sy7OublKndq3DFW7k+IdsmH0xhkH
	zoIQkOD4uytE5E092WTHxA3FJhk+K93KEG/NzXBduznnZRkoNjytybv3Ni9fdbLgxgSunV6cvmp
	0dDc=
X-Google-Smtp-Source: AGHT+IGyps52t9eHsJjMQR/F6NQEncBxc2igwnQUXEn+2dI/dBTnAiVOxq0yisZwo57aulhs1Sa6DQ==
X-Received: by 2002:a17:907:703:b0:a8b:6ee7:ba17 with SMTP id a640c23a62f3a-a98f83ff431mr349107466b.55.1727882856976;
        Wed, 02 Oct 2024 08:27:36 -0700 (PDT)
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>
Subject: [PATCH v2 3/7] x86/alternative: Walk all replacements during self tests
Date: Wed,  2 Oct 2024 16:27:21 +0100
Message-Id: <20241002152725.1841575-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When self tests are active, walk all alternative replacements with
x86_decode_lite().

This checks that we can decode all instructions, and also lets us check that
disp8's don't leave the replacement block as such a case will definitely
malfunction.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <JBeulich@suse.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

v2:
 * Rebase over API changes in patch 1
 * Use +%lu and drop casts
 * Swap to CONFIG_SELF_TESTS
---
 xen/arch/x86/alternative.c | 52 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c
index 1ba35cb9ede9..2dc759abd858 100644
--- a/xen/arch/x86/alternative.c
+++ b/xen/arch/x86/alternative.c
@@ -15,6 +15,7 @@
 #include <asm/traps.h>
 #include <asm/nmi.h>
 #include <asm/nops.h>
+#include <asm/x86_emulate.h>
 #include <xen/livepatch.h>
 
 #define MAX_PATCH_LEN (255-1)
@@ -490,6 +491,57 @@ static void __init _alternative_instructions(bool force)
 void __init alternative_instructions(void)
 {
     arch_init_ideal_nops();
+
+    /*
+     * Walk all replacement instructions with x86_decode_lite().  This checks
+     * both that we can decode all instructions within the replacement, and
+     * that any near branch with a disp8 stays within the alternative itself.
+     */
+    if ( IS_ENABLED(CONFIG_SELF_TESTS) )
+    {
+        struct alt_instr *a;
+
+        for ( a = __alt_instructions;
+              a < __alt_instructions_end; ++a )
+        {
+            void *repl = ALT_REPL_PTR(a);
+            void *ip = repl, *end = ip + a->repl_len;
+
+            if ( !a->repl_len )
+                continue;
+
+            for ( x86_decode_lite_t res; ip < end; ip += res.len )
+            {
+                const int8_t *d8;
+                const void *target;
+
+                res = x86_decode_lite(ip, end);
+
+                if ( res.len == 0 )
+                {
+                    printk("Alt for %ps [%*ph]\n",
+                           ALT_ORIG_PTR(a), a->repl_len, repl);
+                    panic("  Unable to decode instruction at +%lu in alternative\n",
+                          ip - repl);
+                }
+
+                if ( res.rel_sz != 1 )
+                    continue;
+
+                d8 = res.rel;
+                target = ip + res.len + *d8;
+
+                if ( target < repl || target > end )
+                {
+                    printk("Alt for %ps [%*ph]\n",
+                           ALT_ORIG_PTR(a), a->repl_len, repl);
+                    panic("  'JMP/Jcc disp8' at +%lu leaves alternative block\n",
+                          ip - repl);
+                }
+            }
+        }
+    }
+
     _alternative_instructions(false);
 }
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808903.1221011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GQ-0000NZ-Om; Wed, 02 Oct 2024 15:27:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808903.1221011; Wed, 02 Oct 2024 15:27: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 1sw1GQ-0000Mo-L1; Wed, 02 Oct 2024 15:27:42 +0000
Received: by outflank-mailman (input) for mailman id 808903;
 Wed, 02 Oct 2024 15:27: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GP-0007h7-1W
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:41 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dc034904-80d2-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 17:27:39 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so972951566b.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:39 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dc034904-80d2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882858; x=1728487658; 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=Kg1YWqxiODnPwg0lFMS5tFuPYMahV9xXqAF9qlsMRt8=;
        b=Q+JcH8yGgr2yd5wTyIbo+x6Uqnt8CWHYOQBl5/BmO9/oQxBS8Py9rMn0jRA5OqI96L
         eUhF25obs0iEM8tC63pDo/u2riF1Xs1QOk2zhhVdkvrNRTiLg2YtfVWgnfNgNVk9RIJr
         oYRhOcHXgDrdCHLUvJ1HrPf5/4AUpYn8PQMn8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882858; x=1728487658;
        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=Kg1YWqxiODnPwg0lFMS5tFuPYMahV9xXqAF9qlsMRt8=;
        b=cBg9aVY8pYeI/YhNOy1zn9+xhSgiMnEAyNGsyklMuxH+4eliCXhKvo3xOhade1aU8/
         aTmWyQ3coqF+JNNjcqM5QOSBOtl405JwwBxR2qFj2mjWDeN6vGGa8D9G92xwi0JWkg9I
         1MnoK2eUWs3aDnc6c/bsjNeqq5UCV9uzB+IpsutaPpMGZnMtYRsstNiY2TFj13zpAPDE
         nKEe0rF+j/4PhvnsSJyOyY0LekVxA/EpqnDrNxEGGk6XNZDFVzrGK/avIQEDR930HNVG
         8DlOsS7GDaVWB8vaoVmr5ZhOUHpDm1p1fNLNjXWd47KXD7/wt0XVFveYhWWh0xK7I3Ig
         ZNaQ==
X-Gm-Message-State: AOJu0YyKxG8EHwoT+x+4R1RY2wg/MVlnvGK99/VAhKMXibeppcJRD6Rm
	dRtoaAfJoc0Fk1MuO2pYXeyfDHSJOMLTHAAR7BO+Gy3P+rSlg2UlDm5YRZOD8bF6A9BnLKsf5tG
	lWgI=
X-Google-Smtp-Source: AGHT+IHTV3eeo5X12pIQK8EIKOA8qaSxG31trYp1WwulYTh2n8MBG0DiWK277bEIyrZ7R7rCYZLcFg==
X-Received: by 2002:a17:907:8690:b0:a8b:6ee7:ba10 with SMTP id a640c23a62f3a-a98f8270815mr332802566b.33.1727882858549;
        Wed, 02 Oct 2024 08:27:38 -0700 (PDT)
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>,
	Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 4/7] x86/alternative: Indent the relocation logic
Date: Wed,  2 Oct 2024 16:27:22 +0100
Message-Id: <20241002152725.1841575-5-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

... to make subsequent patches legible.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/alternative.c | 124 +++++++++++++++++++------------------
 1 file changed, 63 insertions(+), 61 deletions(-)

diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c
index 2dc759abd858..5ea7f51b007c 100644
--- a/xen/arch/x86/alternative.c
+++ b/xen/arch/x86/alternative.c
@@ -264,78 +264,80 @@ static int init_or_livepatch _apply_alternatives(struct alt_instr *start,
 
         memcpy(buf, repl, a->repl_len);
 
-        /* 0xe8/0xe9 are relative branches; fix the offset. */
-        if ( a->repl_len >= 5 && (*buf & 0xfe) == 0xe8 )
         {
-            /*
-             * Detect the special case of indirect-to-direct branch patching:
-             * - replacement is a direct CALL/JMP (opcodes 0xE8/0xE9; already
-             *   checked above),
-             * - replacement's displacement is -5 (pointing back at the very
-             *   insn, which makes no sense in a real replacement insn),
-             * - original is an indirect CALL/JMP (opcodes 0xFF/2 or 0xFF/4)
-             *   using RIP-relative addressing.
-             * Some branch destinations may still be NULL when we come here
-             * the first time. Defer patching of those until the post-presmp-
-             * initcalls re-invocation (with force set to true). If at that
-             * point the branch destination is still NULL, insert "UD2; UD0"
-             * (for ease of recognition) instead of CALL/JMP.
-             */
-            if ( a->cpuid == X86_FEATURE_ALWAYS &&
-                 *(int32_t *)(buf + 1) == -5 &&
-                 a->orig_len >= 6 &&
-                 orig[0] == 0xff &&
-                 orig[1] == (*buf & 1 ? 0x25 : 0x15) )
+            /* 0xe8/0xe9 are relative branches; fix the offset. */
+            if ( a->repl_len >= 5 && (*buf & 0xfe) == 0xe8 )
             {
-                long disp = *(int32_t *)(orig + 2);
-                const uint8_t *dest = *(void **)(orig + 6 + disp);
-
-                if ( dest )
+                /*
+                 * Detect the special case of indirect-to-direct branch patching:
+                 * - replacement is a direct CALL/JMP (opcodes 0xE8/0xE9; already
+                 *   checked above),
+                 * - replacement's displacement is -5 (pointing back at the very
+                 *   insn, which makes no sense in a real replacement insn),
+                 * - original is an indirect CALL/JMP (opcodes 0xFF/2 or 0xFF/4)
+                 *   using RIP-relative addressing.
+                 * Some branch destinations may still be NULL when we come here
+                 * the first time. Defer patching of those until the post-presmp-
+                 * initcalls re-invocation (with force set to true). If at that
+                 * point the branch destination is still NULL, insert "UD2; UD0"
+                 * (for ease of recognition) instead of CALL/JMP.
+                 */
+                if ( a->cpuid == X86_FEATURE_ALWAYS &&
+                     *(int32_t *)(buf + 1) == -5 &&
+                     a->orig_len >= 6 &&
+                     orig[0] == 0xff &&
+                     orig[1] == (*buf & 1 ? 0x25 : 0x15) )
                 {
-                    /*
-                     * When building for CET-IBT, all function pointer targets
-                     * should have an endbr64 instruction.
-                     *
-                     * If this is not the case, leave a warning because
-                     * something is probably wrong with the build.  A CET-IBT
-                     * enabled system might have exploded already.
-                     *
-                     * Otherwise, skip the endbr64 instruction.  This is a
-                     * marginal perf improvement which saves on instruction
-                     * decode bandwidth.
-                     */
-                    if ( IS_ENABLED(CONFIG_XEN_IBT) )
+                    long disp = *(int32_t *)(orig + 2);
+                    const uint8_t *dest = *(void **)(orig + 6 + disp);
+
+                    if ( dest )
                     {
-                        if ( is_endbr64(dest) )
-                            dest += ENDBR64_LEN;
-                        else
-                            printk(XENLOG_WARNING
-                                   "altcall %ps dest %ps has no endbr64\n",
-                                   orig, dest);
+                        /*
+                         * When building for CET-IBT, all function pointer targets
+                         * should have an endbr64 instruction.
+                         *
+                         * If this is not the case, leave a warning because
+                         * something is probably wrong with the build.  A CET-IBT
+                         * enabled system might have exploded already.
+                         *
+                         * Otherwise, skip the endbr64 instruction.  This is a
+                         * marginal perf improvement which saves on instruction
+                         * decode bandwidth.
+                         */
+                        if ( IS_ENABLED(CONFIG_XEN_IBT) )
+                        {
+                            if ( is_endbr64(dest) )
+                                dest += ENDBR64_LEN;
+                            else
+                                printk(XENLOG_WARNING
+                                       "altcall %ps dest %ps has no endbr64\n",
+                                       orig, dest);
+                        }
+
+                        disp = dest - (orig + 5);
+                        ASSERT(disp == (int32_t)disp);
+                        *(int32_t *)(buf + 1) = disp;
                     }
-
-                    disp = dest - (orig + 5);
-                    ASSERT(disp == (int32_t)disp);
-                    *(int32_t *)(buf + 1) = disp;
-                }
-                else if ( force )
-                {
-                    buf[0] = 0x0f;
-                    buf[1] = 0x0b;
-                    buf[2] = 0x0f;
-                    buf[3] = 0xff;
-                    buf[4] = 0xff;
+                    else if ( force )
+                    {
+                        buf[0] = 0x0f;
+                        buf[1] = 0x0b;
+                        buf[2] = 0x0f;
+                        buf[3] = 0xff;
+                        buf[4] = 0xff;
+                    }
+                    else
+                        continue;
                 }
+                else if ( force && system_state < SYS_STATE_active )
+                    ASSERT_UNREACHABLE();
                 else
-                    continue;
+                    *(int32_t *)(buf + 1) += repl - orig;
             }
             else if ( force && system_state < SYS_STATE_active )
                 ASSERT_UNREACHABLE();
-            else
-                *(int32_t *)(buf + 1) += repl - orig;
         }
-        else if ( force && system_state < SYS_STATE_active  )
-            ASSERT_UNREACHABLE();
 
         a->priv = 1;
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808904.1221023 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GS-0000h4-4n; Wed, 02 Oct 2024 15:27:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808904.1221023; Wed, 02 Oct 2024 15:27: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 1sw1GR-0000g7-V4; Wed, 02 Oct 2024 15:27:43 +0000
Received: by outflank-mailman (input) for mailman id 808904;
 Wed, 02 Oct 2024 15: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GQ-00070n-E7
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:42 +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 dd84ee6f-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:27:42 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-5389917ef34so8060512e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:42 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dd84ee6f-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882861; x=1728487661; 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=5lEtOt7sJb/gqHGmXN1HeKQkSgPlz46zJUquNaFSqHg=;
        b=IbFFFTol0BkenkkcaEl9GD18KalA1qN950jkkIiCGZBZLpQ1CgdChHaWMFoZ98poQa
         Msg/0RAktQZsO+mqeNsa6rbEAqKYE1dRSC36c+ySkBCSVc31UiHPp3aV5fiWH4VbVKt/
         CmmZGLHLJqkzarLYyH+TXX22F2LRE6T6idtSM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882861; x=1728487661;
        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=5lEtOt7sJb/gqHGmXN1HeKQkSgPlz46zJUquNaFSqHg=;
        b=H32bKwzqbi61V65LLz099JrvCCu+s2SIoJNNmFYfihgmDn3mKcn4CRp/QroRqFlueH
         /DoaTLixsBBLYYGR157uZ0OO2Aj2VDTLDK1ChEISli7RrPReraVX51OZaqWjZ+QYL6oC
         bO7dFbz2mXGJ3L37Pf01gw/+s5V0vwKIhQaLecRO/aXuAT2KJpUu/X0/6+gV+31KZMTq
         Msalk85ynxWKmDSnUsbSIzATv3KE6GOAdkFxxIez8X3H9Y7vOGpRzD9yTHEZx0K5Qmof
         pMhsmMaoi1GsVvJUk0qxUNUSqnVsbXhkjMKD/OtyaUUMM0VgGAgQ8f4gNbP+VW9IyZhl
         8a0w==
X-Gm-Message-State: AOJu0Yxpn9LAlznVmOAjrmQdYINIwPYX+ABVfgQohZw8zyyHHlqaXrxY
	8agYCsc+OeTehIHBcY6kzBqBUDv2QF17IJ6lu6Ow/PPFnWRZWRLe3gn+TU8XwDnpPSnRxyabwJ9
	C4qg=
X-Google-Smtp-Source: AGHT+IFMz20lzYRyDTFBCZuZGX8TbKWpGePrGdiPdDMdq/Mk7wnanI7JzKks4Wc91CB+zV8GtQaQpg==
X-Received: by 2002:a05:6512:2245:b0:535:6cde:5c4d with SMTP id 2adb3069b0e04-539a065c3e0mr2158383e87.3.1727882860654;
        Wed, 02 Oct 2024 08:27:40 -0700 (PDT)
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>,
	Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 5/7] x86/alternative: Replace a continue with a goto
Date: Wed,  2 Oct 2024 16:27:23 +0100
Message-Id: <20241002152725.1841575-6-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

A subsequent patch is going to insert a loop, which interferes with the
continue in the devirtualisation logic.

Replace it with a goto, and a paragraph explaining why we intentionally avoid
setting a->priv = 1.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/alternative.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c
index 5ea7f51b007c..b745f112154a 100644
--- a/xen/arch/x86/alternative.c
+++ b/xen/arch/x86/alternative.c
@@ -328,7 +328,15 @@ static int init_or_livepatch _apply_alternatives(struct alt_instr *start,
                         buf[4] = 0xff;
                     }
                     else
-                        continue;
+                    {
+                        /*
+                         * The function pointer we're wanting to devirtualise
+                         * is still NULL, and we're not sealing yet.  Leave
+                         * the alternative fully un-processed, in order to try
+                         * again next time around.
+                         */
+                        goto skip_this_alternative;
+                    }
                 }
                 else if ( force && system_state < SYS_STATE_active )
                     ASSERT_UNREACHABLE();
@@ -343,6 +351,7 @@ static int init_or_livepatch _apply_alternatives(struct alt_instr *start,
 
         add_nops(buf + a->repl_len, total_len - a->repl_len);
         text_poke(orig, buf, total_len);
+    skip_this_alternative:;
     }
 
     /*
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808905.1221032 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GU-00014w-D8; Wed, 02 Oct 2024 15:27:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808905.1221032; Wed, 02 Oct 2024 15:27: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 1sw1GU-00014a-79; Wed, 02 Oct 2024 15:27:46 +0000
Received: by outflank-mailman (input) for mailman id 808905;
 Wed, 02 Oct 2024 15:27: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GS-0007h7-2V
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:44 +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 ddca10f1-80d2-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 17:27:42 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a8d24f98215so232419666b.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:42 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ddca10f1-80d2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882861; x=1728487661; 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=kKsfnfRQgiEGAkaEc12PpOtnWnQ5PN0UH+J+RGQf2wM=;
        b=p39tyRywlNP6KMhvZaoy8017ChgOGyzamCzTw7owvE7vfz1AU872Ibo4WW3NY3W5K8
         lWDK3yBwt5EU21pgZHdWcjiftI7Z1I2GhfVr7DeOyZRnc6yhkLwr9R/a66J2Un1yHq0J
         o3r5elTtpLZP7E0EoZITdQQhH2p2MEMrAQ1r4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882861; x=1728487661;
        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=kKsfnfRQgiEGAkaEc12PpOtnWnQ5PN0UH+J+RGQf2wM=;
        b=m/ljHGeKeWTJaJ2ZX3l03glw6plOCn+2i1+pPdELW/fS5VJ4jAYYnVxxNOg7UDRcze
         PB7kvLtE5xcqK2eHoafnZVN6MDnv66rrmlGl99CiUrx/C+RRuOevdnhu/GIFattr1Nfh
         9MntphfLc4s8KUxRCclTai5XoHiYHMipOV9RtjaIUQz7mxAjo2s6MLlLoSEaWCueXfUh
         FlDebufl6NDrAxScoSIyoozBKZ0bWCwTOx6qfRR0KmzBL7NONHJ6BkDwaDi18d1fjz23
         gi2zSNf5FSAFrefLNTPpjHj797EnwPmNvsmJOQMiH+6jr73ihy0k7MLUN/W7fMqNkhQv
         df6Q==
X-Gm-Message-State: AOJu0Yw0fRVAnL9U7UEHLYWnThbsLG1SKpKZEo3dYi0txXJLzBfSruRK
	0CH60hazesz7YJz84O7mkQvjv35S+zb4RJOZ2tt8IJRAdQcDxftqt+KUXaWE8ZZzqxYAMn2xseh
	KS6E=
X-Google-Smtp-Source: AGHT+IH8hwKmXlccN1whSvfTN4yPqkVDyedjNvhrBux41Exg2tJba+6aRWj33Y7UXrUf1gJuuf5KpA==
X-Received: by 2002:a17:906:794c:b0:a90:b6e8:6919 with SMTP id a640c23a62f3a-a98f83615e1mr357768666b.48.1727882861402;
        Wed, 02 Oct 2024 08:27:41 -0700 (PDT)
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>
Subject: [PATCH v2 6/7] x86/alternative: Relocate all insn-relative fields
Date: Wed,  2 Oct 2024 16:27:24 +0100
Message-Id: <20241002152725.1841575-7-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Right now, relocation of displacements is restricted to finding 0xe8/e9 as the
first byte of the replacement, but this is overly restrictive.

Use x86_decode_lite() to find and adjust all insn-relative fields.

As with disp8's not leaving the replacemnet block, some disp32's don't either.
e.g. the RSB stuffing loop.  These stay unmodified.

For now, leave the altcall devirtualisation alone.  These require more care to
transform into the new scheme.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/alternative.c | 46 +++++++++++++++++++++++++++++++-------
 1 file changed, 38 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/alternative.c b/xen/arch/x86/alternative.c
index b745f112154a..da1a4af56377 100644
--- a/xen/arch/x86/alternative.c
+++ b/xen/arch/x86/alternative.c
@@ -264,10 +264,31 @@ static int init_or_livepatch _apply_alternatives(struct alt_instr *start,
 
         memcpy(buf, repl, a->repl_len);
 
+        /* Walk buf[] and adjust any insn-relative operands. */
+        if ( a->repl_len )
         {
-            /* 0xe8/0xe9 are relative branches; fix the offset. */
-            if ( a->repl_len >= 5 && (*buf & 0xfe) == 0xe8 )
+            uint8_t *ip = buf, *end = ip + a->repl_len;
+
+            for ( x86_decode_lite_t res; ip < end; ip += res.len )
             {
+                int32_t *d32;
+                const uint8_t *target;
+
+                res = x86_decode_lite(ip, end);
+
+                if ( res.len == 0 )
+                {
+                    printk("Alt for %ps [%*ph]\n"
+                           "  Unable to decode instruction at +%lu in alternative\n",
+                           ALT_ORIG_PTR(a), a->repl_len, repl, ip - repl);
+                    return -EINVAL;
+                }
+
+                if ( res.rel_sz != 4 )
+                    continue;
+
+                d32 = res.rel;
+
                 /*
                  * Detect the special case of indirect-to-direct branch patching:
                  * - replacement is a direct CALL/JMP (opcodes 0xE8/0xE9; already
@@ -337,14 +358,23 @@ static int init_or_livepatch _apply_alternatives(struct alt_instr *start,
                          */
                         goto skip_this_alternative;
                     }
+
+                    continue;
+                }
+
+                target = ip + res.len + *d32;
+
+                if ( target >= buf && target <= end )
+                {
+                    /*
+                     * Target doesn't leave the replacement block.  e.g. RSB
+                     * stuffing.  Leave it unmodified.
+                     */
+                    continue;
                 }
-                else if ( force && system_state < SYS_STATE_active )
-                    ASSERT_UNREACHABLE();
-                else
-                    *(int32_t *)(buf + 1) += repl - orig;
+
+                *d32 += repl - orig;
             }
-            else if ( force && system_state < SYS_STATE_active )
-                ASSERT_UNREACHABLE();
         }
 
         a->priv = 1;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:27:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:27:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808906.1221036 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1GU-0001A8-Qt; Wed, 02 Oct 2024 15:27:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808906.1221036; Wed, 02 Oct 2024 15:27: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 1sw1GU-00018O-J8; Wed, 02 Oct 2024 15:27:46 +0000
Received: by outflank-mailman (input) for mailman id 808906;
 Wed, 02 Oct 2024 15:27: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1GS-00070n-G8
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:27:44 +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 deb2ef59-80d2-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:27:44 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso187271366b.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:27:44 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299ac8esm880024566b.222.2024.10.02.08.27.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 08:27:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: deb2ef59-80d2-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727882863; x=1728487663; 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=bUmCjdSTNNz/bYZNosiPwxy4sAkcSDlDvTaqnGpBKLQ=;
        b=SwZhQ+6WsrrkThYLfUhF3ZhBf8FNy1hE+2faWX3m0EMLqLW9B7Hqr+oar23AjEF9iw
         r9XJisJBpLM56SvmCiI4blgEfi+7vubVrAemYaQfMA7LUdr3mdv1A4o2FKb+LjSL7o9s
         1bwTmds51XIq55tobkeJwhbTUD0HINeLit00o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727882863; x=1728487663;
        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=bUmCjdSTNNz/bYZNosiPwxy4sAkcSDlDvTaqnGpBKLQ=;
        b=iyW51Zk88pbF4VzDjsD0cBk6XxPjSxBbJVgoWif/vGGZWWXI0nq/cdbiey7rd1QRZO
         HM4Ug/bRNe40NzfHtbIrLZRI/YDfTH7rBPkoiTnSo2eQTa/IiBtxqsqVXP6MYuIWqkvL
         PFSoUN0ov+reeGcCNvqhe2MuP2rkMNk7EZrlzPqw5Z0gB2M9+PvzyyJ1flFpdj/Qs1ig
         wyG/OzmdwdIbVPK2Xft/Cd1im9/zTZr9uhMPP9cQbx2XMfPr+hCNHqzCgcH5/+W4eu1I
         2nietFMwv5u0P78hnIwUj2itKQ+MOQUjiSuyr6zRPvzd8wuUP4J48CmgbpUl511PBNAz
         lQrg==
X-Gm-Message-State: AOJu0YwFk3y8smbOb1yUTGvVA0PDxw75o6rdtib9WAqubdTmag5h5lqJ
	+KaOs42EfGPHqmQsK9pZE1KyK3i3HL/23STlqgLj94oSP4WY+XhZYGbSfYKUr3tmJ5nifVydWgL
	aP/I=
X-Google-Smtp-Source: AGHT+IGpegr0xxYsCZ+z9qYO4dCzrS7LRSj3afqU4XsleDv+WYP+JIFC1n1LDhSpV8GKeuZQvfoQzg==
X-Received: by 2002:a17:906:c107:b0:a90:3494:2aa9 with SMTP id a640c23a62f3a-a990a03470emr1993866b.2.1727882863066;
        Wed, 02 Oct 2024 08:27:43 -0700 (PDT)
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>
Subject: [PATCH v2 7/7] x86/spec-ctrl: Introduce and use DO_COND_BHB_SEQ
Date: Wed,  2 Oct 2024 16:27:25 +0100
Message-Id: <20241002152725.1841575-8-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Now that alternatives can fix up call displacements even when they're not the
first instruction of the replacement, move the SCF_entry_bhb conditional
inside the replacement block.

This removes a conditional branch from the fastpaths of BHI-unaffected
hardware.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/hvm/vmx/entry.S             | 12 +++----
 xen/arch/x86/include/asm/spec_ctrl_asm.h | 43 +++++++++++++-----------
 2 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/entry.S b/xen/arch/x86/hvm/vmx/entry.S
index 6aaeb28a5b96..e901a41f252a 100644
--- a/xen/arch/x86/hvm/vmx/entry.S
+++ b/xen/arch/x86/hvm/vmx/entry.S
@@ -62,12 +62,12 @@ FUNC(vmx_asm_vmexit_handler)
          * Clear the BHB to mitigate BHI.  Used on eIBRS parts, and uses RETs
          * itself so must be after we've perfomed all the RET-safety we can.
          */
-        testb $SCF_entry_bhb, CPUINFO_scf(%rsp)
-        jz .L_skip_bhb
-        ALTERNATIVE_2 "",                                    \
-            "call clear_bhb_loops", X86_SPEC_BHB_LOOPS,      \
-            "call clear_bhb_tsx", X86_SPEC_BHB_TSX
-.L_skip_bhb:
+        .macro VMX_BHB_SEQ fn:req
+            DO_COND_BHB_SEQ \fn scf=CPUINFO_scf(%rsp)
+        .endm
+        ALTERNATIVE_2 "",                                         \
+            "VMX_BHB_SEQ fn=clear_bhb_loops", X86_SPEC_BHB_LOOPS, \
+            "VMX_BHB_SEQ fn=clear_bhb_tsx",   X86_SPEC_BHB_TSX
 
         ALTERNATIVE "lfence", "", X86_SPEC_NO_LFENCE_ENTRY_VMX
         /* WARNING! `ret`, `call *`, `jmp *` not safe before this point. */
diff --git a/xen/arch/x86/include/asm/spec_ctrl_asm.h b/xen/arch/x86/include/asm/spec_ctrl_asm.h
index 729a830411eb..559dad88f967 100644
--- a/xen/arch/x86/include/asm/spec_ctrl_asm.h
+++ b/xen/arch/x86/include/asm/spec_ctrl_asm.h
@@ -92,6 +92,21 @@
 .L\@_skip:
 .endm
 
+.macro DO_COND_BHB_SEQ fn:req, scf=%bl
+/*
+ * Requires SCF (defaults to %rbx), fn=clear_bhb_{loops,tsx}
+ * Clobbers %rax, %rcx
+ *
+ * Conditionally use a BHB clearing software sequence.
+ */
+    testb  $SCF_entry_bhb, \scf
+    jz     .L\@_skip_bhb
+
+    call   \fn
+
+.L\@_skip_bhb:
+.endm
+
 .macro DO_OVERWRITE_RSB tmp=rax, xu
 /*
  * Requires nothing
@@ -277,12 +292,9 @@
      * Clear the BHB to mitigate BHI.  Used on eIBRS parts, and uses RETs
      * itself so must be after we've perfomed all the RET-safety we can.
      */
-    testb $SCF_entry_bhb, %bl
-    jz .L\@_skip_bhb
-    ALTERNATIVE_2 "",                                    \
-        "call clear_bhb_loops", X86_SPEC_BHB_LOOPS,      \
-        "call clear_bhb_tsx", X86_SPEC_BHB_TSX
-.L\@_skip_bhb:
+    ALTERNATIVE_2 "",                                          \
+        "DO_COND_BHB_SEQ clear_bhb_loops", X86_SPEC_BHB_LOOPS, \
+        "DO_COND_BHB_SEQ clear_bhb_tsx",   X86_SPEC_BHB_TSX
 
     ALTERNATIVE "lfence", "", X86_SPEC_NO_LFENCE_ENTRY_PV
 .endm
@@ -322,12 +334,9 @@
     ALTERNATIVE "", __stringify(DO_SPEC_CTRL_ENTRY maybexen=1),         \
         X86_FEATURE_SC_MSR_PV
 
-    testb $SCF_entry_bhb, %bl
-    jz .L\@_skip_bhb
-    ALTERNATIVE_2 "",                                    \
-        "call clear_bhb_loops", X86_SPEC_BHB_LOOPS,      \
-        "call clear_bhb_tsx", X86_SPEC_BHB_TSX
-.L\@_skip_bhb:
+    ALTERNATIVE_2 "",                                          \
+        "DO_COND_BHB_SEQ clear_bhb_loops", X86_SPEC_BHB_LOOPS, \
+        "DO_COND_BHB_SEQ clear_bhb_tsx",   X86_SPEC_BHB_TSX
 
     ALTERNATIVE "lfence", "", X86_SPEC_NO_LFENCE_ENTRY_INTR
 .endm
@@ -433,13 +442,9 @@
      * Clear the BHB to mitigate BHI.  Used on eIBRS parts, and uses RETs
      * itself so must be after we've perfomed all the RET-safety we can.
      */
-    testb $SCF_entry_bhb, %bl
-    jz .L\@_skip_bhb
-
-    ALTERNATIVE_2 "",                                    \
-        "call clear_bhb_loops", X86_SPEC_BHB_LOOPS,      \
-        "call clear_bhb_tsx", X86_SPEC_BHB_TSX
-.L\@_skip_bhb:
+    ALTERNATIVE_2 "",                                          \
+        "DO_COND_BHB_SEQ clear_bhb_loops", X86_SPEC_BHB_LOOPS, \
+        "DO_COND_BHB_SEQ clear_bhb_tsx",   X86_SPEC_BHB_TSX
 
     lfence
 .endm
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 15:38:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 15:38:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808936.1221053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw1Qi-0005eq-4H; Wed, 02 Oct 2024 15:38:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808936.1221053; Wed, 02 Oct 2024 15:38: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 1sw1Qh-0005ej-Vs; Wed, 02 Oct 2024 15:38:19 +0000
Received: by outflank-mailman (input) for mailman id 808936;
 Wed, 02 Oct 2024 15:38: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw1Qg-0005ed-8e
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 15:38:18 +0000
Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com
 [2a00:1450:4864:20::642])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 57fbf788-80d4-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 17:38:17 +0200 (CEST)
Received: by mail-ej1-x642.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso189477866b.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 08:38:17 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c2997d20sm874817666b.196.2024.10.02.08.38.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 08:38:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 57fbf788-80d4-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727883495; x=1728488295; 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=hdOPL7AftgZQrQMFkTjChNLFVT380AYsuZ/+lmmki/o=;
        b=AcNJBUaFDY5x2YRclQPO/wjJSDYrhp2ShjiRGO13uA2KmzP4OzColjMW4x+13OqcJI
         ijDwOGY5sR6YPat12lMXzQ8cLhcmKE5eqWtKT63T/Qp6okeNXyyYoWRpwsYKTuIOh86n
         zk7d8M40w0G/eBr+kj4hd3Q8BfqyBk/YUHZ9k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727883495; x=1728488295;
        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=hdOPL7AftgZQrQMFkTjChNLFVT380AYsuZ/+lmmki/o=;
        b=l5de+ouGTv7rl73VRUaHMqGxfeSHHo36XTSkQBXeH3zhSukIOjAXU3jPZpL4eB5aJi
         r2iRtQvgTfY8qP+Kl7ON2UHm+KcivQSXaZfghHsyTFS8r2HuvgLsGoIR686BLcJXZaTk
         aPvSMLiNIUweLQa2kPDbwR/paU3mqVX2qiaAwfu8RtIQmKPt5vFO134BC+mmvVZSksKr
         s313HkxF5Rd6Z8pRRCigDTs+o+6gvQSbTKobSNKhdAADPq8O7gsVx+kQvimtnf200i7o
         AVgiK5X6WDx8piWLj3t+lX5Rl/lBYaVUE6inf/iBQiBZ4oI/ffeGRlp8doXQ+SxygGAf
         VLFw==
X-Gm-Message-State: AOJu0Yzu3+zrRsvZvOlEoO5y6x5uhmxCKuscK5e52uje9vbNp+/pN4tm
	aEtfJp+AFwCPeEHaMkeKkWNk+LIBB2GXfydTp5EFPABbInJqBxtsLtCCdU3rDDNuZUblumDSO2R
	fV1j1yA==
X-Google-Smtp-Source: AGHT+IEgG3gVGHpXbtKSWRX1Dpck3IT28Ykzdks3I+UaWSjvOfCEa7jh5zJct3Ji73uo5yiLGMEj5Q==
X-Received: by 2002:a17:907:3f9d:b0:a98:f6dc:6cf3 with SMTP id a640c23a62f3a-a990a21d55emr3303666b.21.1727883495366;
        Wed, 02 Oct 2024 08:38:15 -0700 (PDT)
Message-ID: <8827ea2c-bac3-47c1-b1b1-9a2a02168c43@citrix.com>
Date: Wed, 2 Oct 2024 16:38:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/7] tests/x86: Introduce a userspace test harness for
 x86_decode_lite()
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>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-3-andrew.cooper3@citrix.com>
Content-Language: en-GB
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: <20241002152725.1841575-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02/10/2024 4:27 pm, Andrew Cooper wrote:
> Despite claiming full APX support in the 2.43 release, binutils trunk doesn't
> tolerate JMPABS at all.  Clang-IAS like it but only when encoded as an
> immediate, despite the fact the operand should be a moffset and encoded
> without a $ prefix.  https://godbolt.org/z/P4Ph3svha

Actually, no.  Despite overlaying MOV moffs/rax, to share decode with
another instruction that has a forced 8-byte immedate operation, it's
used as a proper immediate, not a memory address.

So on further consideration, the $ prefix is correct.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 16:29:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 16:29:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808966.1221062 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw2E8-00009K-Jy; Wed, 02 Oct 2024 16:29:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808966.1221062; Wed, 02 Oct 2024 16:29: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 1sw2E8-00009D-HK; Wed, 02 Oct 2024 16:29:24 +0000
Received: by outflank-mailman (input) for mailman id 808966;
 Wed, 02 Oct 2024 16:29: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 1sw2E6-00008n-VI; Wed, 02 Oct 2024 16:29: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 1sw2E6-0004LT-Oq; Wed, 02 Oct 2024 16:29:22 +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 1sw2E6-0003e3-1m; Wed, 02 Oct 2024 16:29:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sw2E6-0004AX-1H; Wed, 02 Oct 2024 16:29: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=2uXH244xAg9DCxX0Ff+FlFxgXVaLOWPHsAcgBLQV+EA=; b=TAElxIvi+Wbm5+qCHn248CuM/i
	xqSvvrtIXbJe7+/QhWKF3z94dFXuvXrH5ohG3TJe2U1urz9UuJvVfTuWI62zv0NoBZsv66DlfLv2W
	YDz8v6GJ/DJswJdMArlWaGDHignxiygisTMuGA0XgxpGh/2kRWUjHSDOL19Fh7lF+/jw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187932-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 187932: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt: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-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-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-raw: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=5f81aa953e614546fc09d30e6270ce5ecb4decdb
X-Osstest-Versions-That:
    libvirt=ded649c09e18bf9d77b13e183e8e06be007efcc4
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 16:29:22 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187917
 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-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-armhf-armhf-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-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              5f81aa953e614546fc09d30e6270ce5ecb4decdb
baseline version:
 libvirt              ded649c09e18bf9d77b13e183e8e06be007efcc4

Last test of basis   187917  2024-10-01 04:20:39 Z    1 days
Testing same since   187932  2024-10-02 04:22:21 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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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
   ded649c09e..5f81aa953e  5f81aa953e614546fc09d30e6270ce5ecb4decdb -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 17:46:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 17:46:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808977.1221072 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw3QD-0002pu-Qo; Wed, 02 Oct 2024 17:45:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808977.1221072; Wed, 02 Oct 2024 17:45: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 1sw3QD-0002pn-Nf; Wed, 02 Oct 2024 17:45:57 +0000
Received: by outflank-mailman (input) for mailman id 808977;
 Wed, 02 Oct 2024 17:45: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw3QC-0002ph-H1
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 17:45:56 +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 2c609aa1-80e6-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 19:45:54 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a910860e4dcso277875866b.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 10:45:54 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c299abd0sm892607166b.213.2024.10.02.10.45.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 10:45:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c609aa1-80e6-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727891154; x=1728495954; 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=N2Zr1TklHm//8JxeVaFlvIVX1fKrExyeXb4EIUnAOB0=;
        b=eJjK7fyUfoCmKzfAy0CzmBqVRCUf6fKtbtuH9wnN7ZIIzzK0UtOVTG4BDyOOINL3At
         oDCdvAg7tO+lHSqJlwxMud/xP3UhsoZyKLo5ykZm3DOWYBN+TjC9KlP7+9fpVUc0OPTR
         hsycTfgjcV4aui7Uupep3jkGV3plSG9lR2+TQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727891154; x=1728495954;
        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=N2Zr1TklHm//8JxeVaFlvIVX1fKrExyeXb4EIUnAOB0=;
        b=K9cu4G0zKwOmAIRsWxdaL4Eva3B0g1M/ptv/9iVyhK7eFl1VDHUZaNunQ4hp6vxn+c
         QX+/fyRtVfmNzo41FZo4RURfmP2VqLftHeCposPRMXgTt+ncYYYsvsiNwPgA7cC2qIG8
         HrIpZ5IMDVAkghlO5sol9faS/wF/ZP8E+VHFlLafOJICcDfP2gE0GRUgY06EEPQUEiCQ
         vVqHU1rjBar0b6JcZADPfHlHvEyHpL4+VT+TW2djkuFolMwmB2rgbLmXp4Bn37xVkHb5
         s2S+vpeHYmK4FzYJHwcFZ7GOfp2rSpghuAptWVbSlno8favzyy13pq48CBOkSpOmVS4o
         fyjw==
X-Forwarded-Encrypted: i=1; AJvYcCW4ADqWpz/J9kgDhUkGcH570c2ntvPRTZkvPC5oGHHU8Dk+2q4FFfvsahsL/D51H1p8s8y3GCd7Dt4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx0jK+dtIgJyNL/iVYMUd9YVPn+m1qmwtKH8sxR5gdo64Rk8cA4
	QS0/D+F1EG8SycSxz3V5oJfxwZaeP0u8cxHX1H4r2FcAIgryHzPp2UyPShBDGFA=
X-Google-Smtp-Source: AGHT+IFt1NEuH6GNihkZ0Fauk4j0o89CLh/XuXGoQnq88JOW6A0ArpbnWo3SeKemTClNkpchBgbffA==
X-Received: by 2002:a17:907:745:b0:a8d:250a:52a8 with SMTP id a640c23a62f3a-a98f81f6519mr391059766b.3.1727891154261;
        Wed, 02 Oct 2024 10:45:54 -0700 (PDT)
Message-ID: <2640346b-495d-4612-abfc-304d71efe7e9@citrix.com>
Date: Wed, 2 Oct 2024 18:45:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/3] Switch flat driver to use phys dst for ext ints
To: Matthew Barnes <matthew.barnes@cloud.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: <cover.1727880621.git.matthew.barnes@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <cover.1727880621.git.matthew.barnes@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02/10/2024 4:17 pm, Matthew Barnes wrote:
> This patch series switches the apic_default APIC driver from using
> logical flat destination mode for external interrupts, to using
> physical destination mode for external interrupts.
>
> This is followed up by two non-functional cleanup commits.
>
> Matthew Barnes (3):
>   x86/APIC: Switch flat driver to use phys dst for ext ints
>   x86/APIC: Remove unnecessary logical flat functions
>   x86/APIC: Refactor GENAPIC_FLAT -> GENAPIC_MIXED

Patches 1 and 2 look fine.

For patch 3, can't we just delete the macro and expand it in it's single
location?

It's a bigger patch, but a better improvement in genapic.h

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 18:22:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 18:22:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808988.1221086 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw3zO-0000C3-MJ; Wed, 02 Oct 2024 18:22:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808988.1221086; Wed, 02 Oct 2024 18: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 1sw3zO-0000Bw-IR; Wed, 02 Oct 2024 18:22:18 +0000
Received: by outflank-mailman (input) for mailman id 808988;
 Wed, 02 Oct 2024 18:22: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=pPkN=Q6=linux.intel.com=ville.syrjala@srs-se1.protection.inumbo.net>)
 id 1sw3zN-0000Bj-CN
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 18:22:17 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3e9d9323-80eb-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 20:22:14 +0200 (CEST)
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
 by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 02 Oct 2024 11:22:11 -0700
Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74])
 by fmviesa008.fm.intel.com with SMTP; 02 Oct 2024 11:22:01 -0700
Received: by stinkbox (sSMTP sendmail emulation);
 Wed, 02 Oct 2024 21:22:00 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3e9d9323-80eb-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1727893335; x=1759429335;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=t01JDmHT3zLNfz8gKoJAfjyhjpNElz/ODXlRagJHKXg=;
  b=W7WnAqapHX1ZKggy0y3gTqJjjRS1I7UJaSy6LQ8iodS5bTNDg7GBJ1Cq
   rjuL07lJ+8WFxtFaavkJJtgeJPGipkac4P8H4zFItdK3gR53V1RdYCffJ
   lUdVkZrmCsz9K9bjemI5folkSGighiQbHYotHMwXbFDlCmN/B51tz5zKT
   YweTN27010zu1PjNhyc3LnPWbtGlFBjwbl2WotVr37lDyYAka7dADHstY
   fy3rmChLs5uNP41VFkmaQpocEGVTnjT0KANJYFoV9f7g5umjkw0v953c4
   cO2gPBDFAIKU4IA9rsGAZOgmn9VQoPcF1H4rF3mw3l1vkU+duzVim/T+t
   Q==;
X-CSE-ConnectionGUID: Ka9pW3qwRKGCUfu8WLwnBQ==
X-CSE-MsgGUID: tX4KPOKsSVyVN6n/iI+vLg==
X-IronPort-AV: E=McAfee;i="6700,10204,11213"; a="26957552"
X-IronPort-AV: E=Sophos;i="6.11,172,1725346800"; 
   d="scan'208";a="26957552"
X-CSE-ConnectionGUID: RuSvj+gXSm+hT8AukyUnKw==
X-CSE-MsgGUID: k8M7o8nlSyG/VQl44AXurg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,172,1725346800"; 
   d="scan'208";a="74202322"
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org,
	Abhinav Kumar <quic_abhinavk@quicinc.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Alex Deucher <alexander.deucher@amd.com>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	amd-gfx@lists.freedesktop.org,
	Andy Yan <andy.yan@rock-chips.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Danilo Krummrich <dakr@redhat.com>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	freedreno@lists.freedesktop.org,
	Hans de Goede <hdegoede@redhat.com>,
	=?UTF-8?q?Heiko=20St=C3=BCbner?= <heiko@sntech.de>,
	Inki Dae <inki.dae@samsung.com>,
	Jyri Sarha <jyri.sarha@iki.fi>,
	Karol Herbst <kherbst@redhat.com>,
	linux-amlogic@lists.infradead.org,
	linux-arm-msm@vger.kernel.org,
	linux-arm-msm@vger.kernel.orga,
	linux-mediatek@lists.infradead.org,
	linux-renesas-soc@vger.kernel.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Lyude Paul <lyude@redhat.com>,
	=?UTF-8?q?Ma=C3=ADra=20Canal?= <mairacanal@riseup.net>,
	Marijn Suijten <marijn.suijten@somainline.org>,
	nouveau@lists.freedesktop.org,
	nouveau@lists.freedesktop.orga,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Rob Clark <robdclark@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	Sandy Huang <hjc@rock-chips.com>,
	Sean Paul <sean@poorly.run>,
	spice-devel@lists.freedesktop.org,
	virtualization@lists.linux.dev,
	xen-devel@lists.xenproject.org,
	Xinhui Pan <Xinhui.Pan@amd.com>,
	Zack Rusin <zack.rusin@broadcom.com>
Subject: [PATCH 0/2] drm: Treewide plane/crtc legacy state sweeping
Date: Wed,  2 Oct 2024 21:21:58 +0300
Message-ID: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
X-Mailer: git-send-email 2.45.2
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

An attempt to hide the drm_plane/crtc legacy state better.

This also highlights the fact that a lot of supposedly
atomic drivers are poking around in the legacy crtc state,
which is rather questionable. For planes we did force the
legacy state to NULL already to force drivers to behave.
But even then it seems capable of confusing people with
its high profile location directly under drm_plane.

This might end up as some kind of conflict
galore, but the alternative would involve trying
to wean the atomic drivers off one by one,
which would probably take forever. At least with
this the issue becomes visible and shouldn't be
forgotten as easily.

The cc list was getting way out of hand, so I had
to trim it a bit. Hopefully I didn't chop off too
many names...

Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Alexey Brodkin <abrodkin@synopsys.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: Andy Yan <andy.yan@rock-chips.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Danilo Krummrich <dakr@redhat.com>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: freedreno@lists.freedesktop.org
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: "Heiko Stübner" <heiko@sntech.de>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Jyri Sarha <jyri.sarha@iki.fi>
Cc: Karol Herbst <kherbst@redhat.com>
Cc: linux-amlogic@lists.infradead.org
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.orga
Cc: linux-mediatek@lists.infradead.org
Cc: linux-renesas-soc@vger.kernel.org
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: "Maíra Canal" <mairacanal@riseup.net>
Cc: Marijn Suijten <marijn.suijten@somainline.org>
Cc: nouveau@lists.freedesktop.org
Cc: nouveau@lists.freedesktop.orga
Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Sandy Huang <hjc@rock-chips.com>
Cc: Sean Paul <sean@poorly.run>
Cc: spice-devel@lists.freedesktop.org
Cc: virtualization@lists.linux.dev
Cc: xen-devel@lists.xenproject.org
Cc: Xinhui Pan <Xinhui.Pan@amd.com>
Cc: Zack Rusin <zack.rusin@broadcom.com>

Ville Syrjälä (2):
  drm: Move plane->{fb,old_fb,crtc} to legacy sub-structure
  drm: Move crtc->{x,y,mode,enabled} to legacy sub-structure

 .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    |  7 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   | 20 ++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c       |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c      |  2 +-
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c        | 35 ++++----
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c        | 35 ++++----
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c         | 37 ++++-----
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c         | 35 ++++----
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++--
 .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c    |  2 +-
 drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c  |  4 +-
 drivers/gpu/drm/arm/hdlcd_drv.c               |  2 +-
 drivers/gpu/drm/arm/malidp_hw.c               |  2 +-
 drivers/gpu/drm/armada/armada_crtc.c          | 12 ++-
 drivers/gpu/drm/ast/ast_dp.c                  |  8 +-
 drivers/gpu/drm/drm_atomic.c                  |  6 +-
 drivers/gpu/drm/drm_atomic_helper.c           |  8 +-
 drivers/gpu/drm/drm_client_modeset.c          | 10 +--
 drivers/gpu/drm/drm_crtc.c                    | 31 +++----
 drivers/gpu/drm/drm_crtc_helper.c             | 80 ++++++++++---------
 drivers/gpu/drm/drm_fb_helper.c               | 12 +--
 drivers/gpu/drm/drm_framebuffer.c             |  4 +-
 drivers/gpu/drm/drm_plane.c                   | 69 ++++++++--------
 drivers/gpu/drm/drm_plane_helper.c            |  6 +-
 drivers/gpu/drm/drm_vblank.c                  |  2 +-
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c |  4 +-
 drivers/gpu/drm/gma500/cdv_intel_display.c    |  2 +-
 drivers/gpu/drm/gma500/cdv_intel_dp.c         |  6 +-
 drivers/gpu/drm/gma500/cdv_intel_hdmi.c       |  3 +-
 drivers/gpu/drm/gma500/cdv_intel_lvds.c       |  6 +-
 drivers/gpu/drm/gma500/gma_display.c          | 22 ++---
 drivers/gpu/drm/gma500/oaktrail_crtc.c        |  2 +-
 drivers/gpu/drm/gma500/psb_intel_display.c    |  2 +-
 drivers/gpu/drm/gma500/psb_intel_lvds.c       |  6 +-
 drivers/gpu/drm/gma500/psb_intel_sdvo.c       |  8 +-
 drivers/gpu/drm/i2c/ch7006_drv.c              |  7 +-
 drivers/gpu/drm/i2c/sil164_drv.c              |  2 +-
 .../drm/i915/display/intel_modeset_setup.c    |  4 +-
 drivers/gpu/drm/imx/lcdc/imx-lcdc.c           | 31 ++++---
 drivers/gpu/drm/mediatek/mtk_crtc.c           |  6 +-
 drivers/gpu/drm/meson/meson_overlay.c         |  2 +-
 drivers/gpu/drm/meson/meson_plane.c           |  8 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 18 +++--
 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c       |  6 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c     | 16 ++--
 drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c     |  4 +-
 drivers/gpu/drm/nouveau/dispnv04/crtc.c       | 25 +++---
 drivers/gpu/drm/nouveau/dispnv04/cursor.c     |  2 +-
 drivers/gpu/drm/nouveau/dispnv04/dfp.c        |  2 +-
 drivers/gpu/drm/nouveau/dispnv04/disp.c       |  4 +-
 .../gpu/drm/nouveau/dispnv04/tvmodesnv17.c    |  4 +-
 drivers/gpu/drm/nouveau/dispnv04/tvnv17.c     |  7 +-
 drivers/gpu/drm/nouveau/nouveau_connector.c   |  6 +-
 drivers/gpu/drm/qxl/qxl_display.c             |  6 +-
 drivers/gpu/drm/radeon/atombios_crtc.c        | 28 +++----
 drivers/gpu/drm/radeon/cik.c                  | 12 +--
 drivers/gpu/drm/radeon/evergreen.c            | 16 ++--
 drivers/gpu/drm/radeon/r100.c                 | 16 ++--
 drivers/gpu/drm/radeon/r600_cs.c              |  2 +-
 drivers/gpu/drm/radeon/r600_dpm.c             |  4 +-
 drivers/gpu/drm/radeon/radeon_connectors.c    |  7 +-
 drivers/gpu/drm/radeon/radeon_cursor.c        | 29 +++----
 drivers/gpu/drm/radeon/radeon_device.c        |  2 +-
 drivers/gpu/drm/radeon/radeon_display.c       | 26 +++---
 drivers/gpu/drm/radeon/radeon_drv.c           |  2 +-
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c   | 16 ++--
 .../gpu/drm/radeon/radeon_legacy_encoders.c   |  2 +-
 drivers/gpu/drm/radeon/radeon_pm.c            |  2 +-
 drivers/gpu/drm/radeon/rs600.c                | 10 +--
 drivers/gpu/drm/radeon/rs690.c                | 22 ++---
 drivers/gpu/drm/radeon/rs780_dpm.c            |  6 +-
 drivers/gpu/drm/radeon/rv515.c                | 30 +++----
 drivers/gpu/drm/radeon/rv770.c                |  2 +-
 drivers/gpu/drm/radeon/si.c                   | 14 ++--
 .../gpu/drm/renesas/rcar-du/rcar_du_crtc.c    |  2 +-
 .../gpu/drm/renesas/shmobile/shmob_drm_crtc.c |  2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c   |  6 +-
 drivers/gpu/drm/sti/sti_crtc.c                |  4 +-
 drivers/gpu/drm/sti/sti_cursor.c              |  2 +-
 drivers/gpu/drm/sti/sti_gdp.c                 |  2 +-
 drivers/gpu/drm/sti/sti_hqvdp.c               |  2 +-
 drivers/gpu/drm/sti/sti_tvout.c               |  6 +-
 drivers/gpu/drm/sti/sti_vid.c                 |  2 +-
 drivers/gpu/drm/tilcdc/tilcdc_crtc.c          | 10 +--
 drivers/gpu/drm/tiny/arcpgu.c                 |  2 +-
 drivers/gpu/drm/vboxvideo/vbox_mode.c         |  2 +-
 drivers/gpu/drm/vc4/vc4_dpi.c                 |  2 +-
 drivers/gpu/drm/vc4/vc4_plane.c               |  4 +-
 drivers/gpu/drm/virtio/virtgpu_display.c      |  4 +-
 drivers/gpu/drm/vkms/vkms_composer.c          |  4 +-
 drivers/gpu/drm/vkms/vkms_crtc.c              |  2 +-
 drivers/gpu/drm/vkms/vkms_writeback.c         |  4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c           |  8 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c           | 18 +++--
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c          |  9 ++-
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c          |  4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c          |  2 +-
 drivers/gpu/drm/xen/xen_drm_front_kms.c       |  2 +-
 include/drm/drm_crtc.h                        | 75 ++++++++---------
 include/drm/drm_plane.h                       | 52 ++++++------
 100 files changed, 599 insertions(+), 547 deletions(-)

-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 18:22:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 18:22:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.808989.1221096 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw3zc-0000Vt-T8; Wed, 02 Oct 2024 18:22:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 808989.1221096; Wed, 02 Oct 2024 18:22: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 1sw3zc-0000Vi-Q0; Wed, 02 Oct 2024 18:22:32 +0000
Received: by outflank-mailman (input) for mailman id 808989;
 Wed, 02 Oct 2024 18: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=pPkN=Q6=linux.intel.com=ville.syrjala@srs-se1.protection.inumbo.net>)
 id 1sw3za-0000Bj-Rj
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 18:22:31 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 46bb1973-80eb-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 20:22:28 +0200 (CEST)
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
 by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 02 Oct 2024 11:22:25 -0700
Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74])
 by fmviesa008.fm.intel.com with SMTP; 02 Oct 2024 11:22:18 -0700
Received: by stinkbox (sSMTP sendmail emulation);
 Wed, 02 Oct 2024 21:22:17 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 46bb1973-80eb-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1727893348; x=1759429348;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=c0QXKhwci/Izzy1OlI144ahqJ09nmvEd0qo81iaK+oA=;
  b=d03mtRa9qMt0+9A7Hsc7tbj2wfwd/Hy2lF66/t+EryAQWjn1XKVjchWG
   YVDoT9HwmELoP0u0hkTQFXkyCLe46UudxrVMLtNTb/IN/CZ9dEzrqFkg9
   BIyA6HAh0PCZWDQPbtj0mQf07hCQ3E2amrdSfAhIsdFOvPOvM4LbNqsnq
   3gSWOkliYbq5P42+4ZQ9qnuAGhudJuVdWvLZTHelib9QeKMdMaTG7UYOH
   wkWJdpvC0HuaiAxYdE4bQjWMAe2x4mJ9iO9nPCUXQnt3nDGlx9FfGqWdO
   mAWXmFihFmKoT1ZumUgnxJnB+vgdA+EfovnGYQ64JRa9/kCGgShqS+aBs
   g==;
X-CSE-ConnectionGUID: MMMPA9UATaWG9TIlIMyFmQ==
X-CSE-MsgGUID: SAAIeHkaRtqFLCahKQ4mSw==
X-IronPort-AV: E=McAfee;i="6700,10204,11213"; a="26957614"
X-IronPort-AV: E=Sophos;i="6.11,172,1725346800"; 
   d="scan'208";a="26957614"
X-CSE-ConnectionGUID: KgWmmX8iTF2bpIYtU4YHSg==
X-CSE-MsgGUID: 44OP74LUT6ClRqxjDpf5uA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,172,1725346800"; 
   d="scan'208";a="74202342"
From: Ville Syrjala <ville.syrjala@linux.intel.com>
To: dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>,
	Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?UTF-8?q?Ma=C3=ADra=20Canal?= <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>,
	amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org,
	linux-arm-msm@vger.kernel.orga,
	freedreno@lists.freedesktop.org,
	nouveau@lists.freedesktop.orga,
	virtualization@lists.linux.dev,
	spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH 2/2] drm: Move crtc->{x,y,mode,enabled} to legacy sub-structure
Date: Wed,  2 Oct 2024 21:22:00 +0300
Message-ID: <20241002182200.15363-3-ville.syrjala@linux.intel.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Atomic drivers shouldn't be using the legacy state stored
directly under drm_crtc. Move that junk into a 'legacy' sub
structure to highlight the offenders, of which there are
quite a few unfortunately.

I'm hoping we could get all these fixed and then declare
the legacy state off limits for atomic drivers (which is
what did long ago for plane->fb/etc). And maybe eventually
turn crtc->legacy into a pointer and only allocate it on
legacy drivers.

TODO: hwmode should probably go there too but it probably
      needs a closer look, maybe other stuff too...

Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Sandy Huang <hjc@rock-chips.com>
Cc: Jyri Sarha <jyri.sarha@iki.fi>
Cc: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: "Maíra Canal" <mairacanal@riseup.net>
Cc: Zack Rusin <zack.rusin@broadcom.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: linux-mediatek@lists.infradead.org
Cc: linux-amlogic@lists.infradead.org
Cc: linux-arm-msm@vger.kernel.orga
Cc: freedreno@lists.freedesktop.org
Cc: nouveau@lists.freedesktop.orga
Cc: virtualization@lists.linux.dev
Cc: spice-devel@lists.freedesktop.org
Cc: linux-renesas-soc@vger.kernel.org
Cc: xen-devel@lists.xenproject.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    |  7 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   | 14 ++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c       |  2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c      |  2 +-
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c        | 23 +++---
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c        | 23 +++---
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c         | 25 ++++---
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c         | 23 +++---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++--
 .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c    |  2 +-
 drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c  |  4 +-
 drivers/gpu/drm/arm/hdlcd_drv.c               |  2 +-
 drivers/gpu/drm/arm/malidp_hw.c               |  2 +-
 drivers/gpu/drm/armada/armada_crtc.c          | 12 ++-
 drivers/gpu/drm/ast/ast_dp.c                  |  8 +-
 drivers/gpu/drm/drm_atomic_helper.c           |  8 +-
 drivers/gpu/drm/drm_client_modeset.c          | 10 +--
 drivers/gpu/drm/drm_crtc.c                    |  9 ++-
 drivers/gpu/drm/drm_crtc_helper.c             | 62 +++++++--------
 drivers/gpu/drm/drm_fb_helper.c               | 10 ++-
 drivers/gpu/drm/drm_plane.c                   |  5 +-
 drivers/gpu/drm/drm_plane_helper.c            |  6 +-
 drivers/gpu/drm/drm_vblank.c                  |  2 +-
 drivers/gpu/drm/exynos/exynos5433_drm_decon.c |  4 +-
 drivers/gpu/drm/gma500/cdv_intel_dp.c         |  4 +-
 drivers/gpu/drm/gma500/cdv_intel_hdmi.c       |  2 +-
 drivers/gpu/drm/gma500/cdv_intel_lvds.c       |  4 +-
 drivers/gpu/drm/gma500/gma_display.c          |  8 +-
 drivers/gpu/drm/gma500/psb_intel_lvds.c       |  4 +-
 drivers/gpu/drm/gma500/psb_intel_sdvo.c       |  8 +-
 drivers/gpu/drm/i2c/ch7006_drv.c              |  5 +-
 drivers/gpu/drm/i2c/sil164_drv.c              |  2 +-
 .../drm/i915/display/intel_modeset_setup.c    |  4 +-
 drivers/gpu/drm/imx/lcdc/imx-lcdc.c           | 31 +++++---
 drivers/gpu/drm/mediatek/mtk_crtc.c           |  6 +-
 drivers/gpu/drm/meson/meson_overlay.c         |  2 +-
 drivers/gpu/drm/meson/meson_plane.c           |  8 +-
 drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 18 +++--
 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c     | 16 ++--
 drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c     |  4 +-
 drivers/gpu/drm/nouveau/dispnv04/crtc.c       |  9 ++-
 drivers/gpu/drm/nouveau/dispnv04/cursor.c     |  2 +-
 .../gpu/drm/nouveau/dispnv04/tvmodesnv17.c    |  4 +-
 drivers/gpu/drm/nouveau/dispnv04/tvnv17.c     |  5 +-
 drivers/gpu/drm/nouveau/nouveau_connector.c   |  6 +-
 drivers/gpu/drm/qxl/qxl_display.c             |  6 +-
 drivers/gpu/drm/radeon/atombios_crtc.c        | 12 +--
 drivers/gpu/drm/radeon/cik.c                  | 12 +--
 drivers/gpu/drm/radeon/evergreen.c            | 14 ++--
 drivers/gpu/drm/radeon/r100.c                 | 10 +--
 drivers/gpu/drm/radeon/r600_cs.c              |  2 +-
 drivers/gpu/drm/radeon/r600_dpm.c             |  4 +-
 drivers/gpu/drm/radeon/radeon_connectors.c    |  6 +-
 drivers/gpu/drm/radeon/radeon_cursor.c        | 29 +++----
 drivers/gpu/drm/radeon/radeon_display.c       | 22 +++---
 drivers/gpu/drm/radeon/radeon_drv.c           |  2 +-
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c   |  2 +-
 .../gpu/drm/radeon/radeon_legacy_encoders.c   |  2 +-
 drivers/gpu/drm/radeon/radeon_pm.c            |  2 +-
 drivers/gpu/drm/radeon/rs600.c                |  8 +-
 drivers/gpu/drm/radeon/rs690.c                | 22 +++---
 drivers/gpu/drm/radeon/rs780_dpm.c            |  6 +-
 drivers/gpu/drm/radeon/rv515.c                | 30 ++++----
 drivers/gpu/drm/radeon/si.c                   | 14 ++--
 .../gpu/drm/renesas/rcar-du/rcar_du_crtc.c    |  2 +-
 .../gpu/drm/renesas/shmobile/shmob_drm_crtc.c |  2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_vop.c   |  4 +-
 drivers/gpu/drm/sti/sti_crtc.c                |  4 +-
 drivers/gpu/drm/sti/sti_cursor.c              |  2 +-
 drivers/gpu/drm/sti/sti_gdp.c                 |  2 +-
 drivers/gpu/drm/sti/sti_hqvdp.c               |  2 +-
 drivers/gpu/drm/sti/sti_tvout.c               |  6 +-
 drivers/gpu/drm/sti/sti_vid.c                 |  2 +-
 drivers/gpu/drm/tilcdc/tilcdc_crtc.c          | 10 +--
 drivers/gpu/drm/tiny/arcpgu.c                 |  2 +-
 drivers/gpu/drm/vboxvideo/vbox_mode.c         |  2 +-
 drivers/gpu/drm/vc4/vc4_dpi.c                 |  2 +-
 drivers/gpu/drm/vc4/vc4_plane.c               |  4 +-
 drivers/gpu/drm/virtio/virtgpu_display.c      |  4 +-
 drivers/gpu/drm/vkms/vkms_composer.c          |  4 +-
 drivers/gpu/drm/vkms/vkms_crtc.c              |  2 +-
 drivers/gpu/drm/vkms/vkms_writeback.c         |  4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_kms.c           |  8 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c           | 18 +++--
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c          |  9 ++-
 drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c          |  4 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c          |  2 +-
 drivers/gpu/drm/xen/xen_drm_front_kms.c       |  2 +-
 include/drm/drm_crtc.h                        | 75 ++++++++++---------
 89 files changed, 431 insertions(+), 383 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
index 90973470b6da..5a3152ee1477 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
@@ -92,9 +92,10 @@ static void amdgpu_connector_property_change_mode(struct drm_encoder *encoder)
 {
 	struct drm_crtc *crtc = encoder->crtc;
 
-	if (crtc && crtc->enabled) {
-		drm_crtc_helper_set_mode(crtc, &crtc->mode,
-					 crtc->x, crtc->y, crtc->primary->legacy.fb);
+	if (crtc && crtc->legacy.enabled) {
+		drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode,
+					 crtc->legacy.x, crtc->legacy.y,
+					 crtc->primary->legacy.fb);
 	}
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
index 1b1448a58543..8c54fff945ec 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
@@ -328,7 +328,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set,
 	ret = drm_crtc_helper_set_config(set, ctx);
 
 	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
-		if (crtc->enabled)
+		if (crtc->legacy.enabled)
 			active = true;
 
 	pm_runtime_mark_last_busy(dev->dev);
@@ -1466,9 +1466,9 @@ bool amdgpu_display_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
 		memcpy(&amdgpu_crtc->native_mode,
 		       &amdgpu_encoder->native_mode,
 		       sizeof(struct drm_display_mode));
-		src_v = crtc->mode.vdisplay;
+		src_v = crtc->legacy.mode.vdisplay;
 		dst_v = amdgpu_crtc->native_mode.vdisplay;
-		src_h = crtc->mode.hdisplay;
+		src_h = crtc->legacy.mode.hdisplay;
 		dst_h = amdgpu_crtc->native_mode.hdisplay;
 
 		/* fix up for overscan on hdmi */
@@ -1486,10 +1486,10 @@ bool amdgpu_display_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
 			else
 				amdgpu_crtc->v_border = (mode->vdisplay >> 5) + 16;
 			amdgpu_crtc->rmx_type = RMX_FULL;
-			src_v = crtc->mode.vdisplay;
-			dst_v = crtc->mode.vdisplay - (amdgpu_crtc->v_border * 2);
-			src_h = crtc->mode.hdisplay;
-			dst_h = crtc->mode.hdisplay - (amdgpu_crtc->h_border * 2);
+			src_v = crtc->legacy.mode.vdisplay;
+			dst_v = crtc->legacy.mode.vdisplay - (amdgpu_crtc->v_border * 2);
+			src_h = crtc->legacy.mode.hdisplay;
+			dst_h = crtc->legacy.mode.hdisplay - (amdgpu_crtc->h_border * 2);
 		}
 	}
 	if (amdgpu_crtc->rmx_type != RMX_OFF) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c
index 675aa138ea11..212d8328e741 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c
@@ -348,7 +348,7 @@ int amdgpu_pll_get_shared_nondp_ppll(struct drm_crtc *crtc)
 			}
 			/* for non-DP check the clock */
 			test_adjusted_clock = test_amdgpu_crtc->adjusted_clock;
-			if ((crtc->mode.clock == test_crtc->mode.clock) &&
+			if ((crtc->legacy.mode.clock == test_crtc->legacy.mode.clock) &&
 			    (adjusted_clock == test_adjusted_clock) &&
 			    (amdgpu_crtc->ss_enabled == test_amdgpu_crtc->ss_enabled) &&
 			    (test_amdgpu_crtc->pll_id != ATOM_PPLL_INVALID))
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
index d4c2afafbb73..9c745b7640c3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
@@ -70,7 +70,7 @@ static int amdgpu_vkms_enable_vblank(struct drm_crtc *crtc)
 	struct amdgpu_vkms_output *out = drm_crtc_to_amdgpu_vkms_output(crtc);
 	struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
 
-	drm_calc_timestamping_constants(crtc, &crtc->mode);
+	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);
 
 	out->period_ns = ktime_set(0, vblank->framedur_ns);
 	hrtimer_start(&amdgpu_crtc->vblank_timer, out->period_ns, HRTIMER_MODE_REL);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index db19854f04f2..e3bf71b674e5 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -605,7 +605,7 @@ static u32 dce_v10_0_line_buffer_adjust(struct amdgpu_device *adev,
 	 * than 4096, you need use to use 2 display controllers and combine
 	 * them using the stereo blender.
 	 */
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		if (mode->crtc_hdisplay < 1920) {
 			mem_cfg = 1;
 			buffer_alloc = 2;
@@ -640,7 +640,7 @@ static u32 dce_v10_0_line_buffer_adjust(struct amdgpu_device *adev,
 		udelay(1);
 	}
 
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		switch (mem_cfg) {
 		case 0:
 		default:
@@ -1027,14 +1027,14 @@ static void dce_v10_0_program_watermarks(struct amdgpu_device *adev,
 					struct amdgpu_crtc *amdgpu_crtc,
 					u32 lb_size, u32 num_heads)
 {
-	struct drm_display_mode *mode = &amdgpu_crtc->base.mode;
+	struct drm_display_mode *mode = &amdgpu_crtc->base.legacy.mode;
 	struct dce10_wm_params wm_low, wm_high;
 	u32 active_time;
 	u32 line_time = 0;
 	u32 latency_watermark_a = 0, latency_watermark_b = 0;
 	u32 tmp, wm_mask, lb_vblank_lead_lines = 0;
 
-	if (amdgpu_crtc->base.enabled && num_heads && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && num_heads && mode) {
 		active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
 					    (u32)mode->clock);
 		line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
@@ -1164,11 +1164,11 @@ static void dce_v10_0_bandwidth_update(struct amdgpu_device *adev)
 	amdgpu_display_update_priority(adev);
 
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
-		if (adev->mode_info.crtcs[i]->base.enabled)
+		if (adev->mode_info.crtcs[i]->base.legacy.enabled)
 			num_heads++;
 	}
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
-		mode = &adev->mode_info.crtcs[i]->base.mode;
+		mode = &adev->mode_info.crtcs[i]->base.legacy.mode;
 		lb_size = dce_v10_0_line_buffer_adjust(adev, adev->mode_info.crtcs[i], mode);
 		dce_v10_0_program_watermarks(adev, adev->mode_info.crtcs[i],
 					    lb_size, num_heads);
@@ -2066,8 +2066,8 @@ static int dce_v10_0_crtc_do_set_base(struct drm_crtc *crtc,
 	y &= ~1;
 	WREG32(mmVIEWPORT_START + amdgpu_crtc->crtc_offset,
 	       (x << 16) | y);
-	viewport_w = crtc->mode.hdisplay;
-	viewport_h = (crtc->mode.vdisplay + 1) & ~1;
+	viewport_w = crtc->legacy.mode.hdisplay;
+	viewport_h = (crtc->legacy.mode.vdisplay + 1) & ~1;
 	WREG32(mmVIEWPORT_SIZE + amdgpu_crtc->crtc_offset,
 	       (viewport_w << 16) | viewport_h);
 
@@ -2330,9 +2330,10 @@ static int dce_v10_0_cursor_move_locked(struct drm_crtc *crtc,
 	amdgpu_crtc->cursor_y = y;
 
 	/* avivo cursor are offset into the total surface */
-	x += crtc->x;
-	y += crtc->y;
-	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y);
+	x += crtc->legacy.x;
+	y += crtc->legacy.y;
+	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->legacy.x,
+		  crtc->legacy.y);
 
 	if (x < 0) {
 		xorigin = min(-x, amdgpu_crtc->max_cursor_width - 1);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index af889d0b6826..a2a8775fcfc0 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -637,7 +637,7 @@ static u32 dce_v11_0_line_buffer_adjust(struct amdgpu_device *adev,
 	 * than 4096, you need use to use 2 display controllers and combine
 	 * them using the stereo blender.
 	 */
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		if (mode->crtc_hdisplay < 1920) {
 			mem_cfg = 1;
 			buffer_alloc = 2;
@@ -672,7 +672,7 @@ static u32 dce_v11_0_line_buffer_adjust(struct amdgpu_device *adev,
 		udelay(1);
 	}
 
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		switch (mem_cfg) {
 		case 0:
 		default:
@@ -1059,14 +1059,14 @@ static void dce_v11_0_program_watermarks(struct amdgpu_device *adev,
 					struct amdgpu_crtc *amdgpu_crtc,
 					u32 lb_size, u32 num_heads)
 {
-	struct drm_display_mode *mode = &amdgpu_crtc->base.mode;
+	struct drm_display_mode *mode = &amdgpu_crtc->base.legacy.mode;
 	struct dce10_wm_params wm_low, wm_high;
 	u32 active_time;
 	u32 line_time = 0;
 	u32 latency_watermark_a = 0, latency_watermark_b = 0;
 	u32 tmp, wm_mask, lb_vblank_lead_lines = 0;
 
-	if (amdgpu_crtc->base.enabled && num_heads && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && num_heads && mode) {
 		active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
 					    (u32)mode->clock);
 		line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
@@ -1196,11 +1196,11 @@ static void dce_v11_0_bandwidth_update(struct amdgpu_device *adev)
 	amdgpu_display_update_priority(adev);
 
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
-		if (adev->mode_info.crtcs[i]->base.enabled)
+		if (adev->mode_info.crtcs[i]->base.legacy.enabled)
 			num_heads++;
 	}
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
-		mode = &adev->mode_info.crtcs[i]->base.mode;
+		mode = &adev->mode_info.crtcs[i]->base.legacy.mode;
 		lb_size = dce_v11_0_line_buffer_adjust(adev, adev->mode_info.crtcs[i], mode);
 		dce_v11_0_program_watermarks(adev, adev->mode_info.crtcs[i],
 					    lb_size, num_heads);
@@ -2116,8 +2116,8 @@ static int dce_v11_0_crtc_do_set_base(struct drm_crtc *crtc,
 	y &= ~1;
 	WREG32(mmVIEWPORT_START + amdgpu_crtc->crtc_offset,
 	       (x << 16) | y);
-	viewport_w = crtc->mode.hdisplay;
-	viewport_h = (crtc->mode.vdisplay + 1) & ~1;
+	viewport_w = crtc->legacy.mode.hdisplay;
+	viewport_h = (crtc->legacy.mode.vdisplay + 1) & ~1;
 	WREG32(mmVIEWPORT_SIZE + amdgpu_crtc->crtc_offset,
 	       (viewport_w << 16) | viewport_h);
 
@@ -2414,9 +2414,10 @@ static int dce_v11_0_cursor_move_locked(struct drm_crtc *crtc,
 	amdgpu_crtc->cursor_y = y;
 
 	/* avivo cursor are offset into the total surface */
-	x += crtc->x;
-	y += crtc->y;
-	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y);
+	x += crtc->legacy.x;
+	y += crtc->legacy.y;
+	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->legacy.x,
+		  crtc->legacy.y);
 
 	if (x < 0) {
 		xorigin = min(-x, amdgpu_crtc->max_cursor_width - 1);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index d55be18957b3..0dc970b66120 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -845,7 +845,7 @@ static void dce_v6_0_program_watermarks(struct amdgpu_device *adev,
 					struct amdgpu_crtc *amdgpu_crtc,
 					u32 lb_size, u32 num_heads)
 {
-	struct drm_display_mode *mode = &amdgpu_crtc->base.mode;
+	struct drm_display_mode *mode = &amdgpu_crtc->base.legacy.mode;
 	struct dce6_wm_params wm_low, wm_high;
 	u32 dram_channels;
 	u32 active_time;
@@ -857,7 +857,7 @@ static void dce_v6_0_program_watermarks(struct amdgpu_device *adev,
 	u32 tmp, arb_control3, lb_vblank_lead_lines = 0;
 	fixed20_12 a, b, c;
 
-	if (amdgpu_crtc->base.enabled && num_heads && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && num_heads && mode) {
 		active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
 					    (u32)mode->clock);
 		line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
@@ -1026,7 +1026,7 @@ static u32 dce_v6_0_line_buffer_adjust(struct amdgpu_device *adev,
 	 * of crtcs.  Ideally for multiple large displays we'd assign them to
 	 * non-linked crtcs for maximum line buffer allocation.
 	 */
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		if (other_mode) {
 			tmp = 0; /* 1/2 */
 			buffer_alloc = 1;
@@ -1051,7 +1051,7 @@ static u32 dce_v6_0_line_buffer_adjust(struct amdgpu_device *adev,
 		udelay(1);
 	}
 
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		switch (tmp) {
 		case 0:
 		default:
@@ -1087,12 +1087,12 @@ static void dce_v6_0_bandwidth_update(struct amdgpu_device *adev)
 	amdgpu_display_update_priority(adev);
 
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
-		if (adev->mode_info.crtcs[i]->base.enabled)
+		if (adev->mode_info.crtcs[i]->base.legacy.enabled)
 			num_heads++;
 	}
 	for (i = 0; i < adev->mode_info.num_crtc; i += 2) {
-		mode0 = &adev->mode_info.crtcs[i]->base.mode;
-		mode1 = &adev->mode_info.crtcs[i+1]->base.mode;
+		mode0 = &adev->mode_info.crtcs[i]->base.legacy.mode;
+		mode1 = &adev->mode_info.crtcs[i+1]->base.legacy.mode;
 		lb_size = dce_v6_0_line_buffer_adjust(adev, adev->mode_info.crtcs[i], mode0, mode1);
 		dce_v6_0_program_watermarks(adev, adev->mode_info.crtcs[i], lb_size, num_heads);
 		lb_size = dce_v6_0_line_buffer_adjust(adev, adev->mode_info.crtcs[i+1], mode1, mode0);
@@ -2023,8 +2023,8 @@ static int dce_v6_0_crtc_do_set_base(struct drm_crtc *crtc,
 	y &= ~1;
 	WREG32(mmVIEWPORT_START + amdgpu_crtc->crtc_offset,
 	       (x << 16) | y);
-	viewport_w = crtc->mode.hdisplay;
-	viewport_h = (crtc->mode.vdisplay + 1) & ~1;
+	viewport_w = crtc->legacy.mode.hdisplay;
+	viewport_h = (crtc->legacy.mode.vdisplay + 1) & ~1;
 
 	WREG32(mmVIEWPORT_SIZE + amdgpu_crtc->crtc_offset,
 	       (viewport_w << 16) | viewport_h);
@@ -2250,9 +2250,10 @@ static int dce_v6_0_cursor_move_locked(struct drm_crtc *crtc,
 	amdgpu_crtc->cursor_y = y;
 
 	/* avivo cursor are offset into the total surface */
-	x += crtc->x;
-	y += crtc->y;
-	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y);
+	x += crtc->legacy.x;
+	y += crtc->legacy.y;
+	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->legacy.x,
+		  crtc->legacy.y);
 
 	if (x < 0) {
 		xorigin = min(-x, amdgpu_crtc->max_cursor_width - 1);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index 7a24d5835107..6424a1a40949 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -560,7 +560,7 @@ static u32 dce_v8_0_line_buffer_adjust(struct amdgpu_device *adev,
 	 * than 4096, you need use to use 2 display controllers and combine
 	 * them using the stereo blender.
 	 */
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		if (mode->crtc_hdisplay < 1920) {
 			tmp = 1;
 			buffer_alloc = 2;
@@ -593,7 +593,7 @@ static u32 dce_v8_0_line_buffer_adjust(struct amdgpu_device *adev,
 		udelay(1);
 	}
 
-	if (amdgpu_crtc->base.enabled && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && mode) {
 		switch (tmp) {
 		case 0:
 		default:
@@ -980,14 +980,14 @@ static void dce_v8_0_program_watermarks(struct amdgpu_device *adev,
 					struct amdgpu_crtc *amdgpu_crtc,
 					u32 lb_size, u32 num_heads)
 {
-	struct drm_display_mode *mode = &amdgpu_crtc->base.mode;
+	struct drm_display_mode *mode = &amdgpu_crtc->base.legacy.mode;
 	struct dce8_wm_params wm_low, wm_high;
 	u32 active_time;
 	u32 line_time = 0;
 	u32 latency_watermark_a = 0, latency_watermark_b = 0;
 	u32 tmp, wm_mask, lb_vblank_lead_lines = 0;
 
-	if (amdgpu_crtc->base.enabled && num_heads && mode) {
+	if (amdgpu_crtc->base.legacy.enabled && num_heads && mode) {
 		active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
 					    (u32)mode->clock);
 		line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
@@ -1119,11 +1119,11 @@ static void dce_v8_0_bandwidth_update(struct amdgpu_device *adev)
 	amdgpu_display_update_priority(adev);
 
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
-		if (adev->mode_info.crtcs[i]->base.enabled)
+		if (adev->mode_info.crtcs[i]->base.legacy.enabled)
 			num_heads++;
 	}
 	for (i = 0; i < adev->mode_info.num_crtc; i++) {
-		mode = &adev->mode_info.crtcs[i]->base.mode;
+		mode = &adev->mode_info.crtcs[i]->base.legacy.mode;
 		lb_size = dce_v8_0_line_buffer_adjust(adev, adev->mode_info.crtcs[i], mode);
 		dce_v8_0_program_watermarks(adev, adev->mode_info.crtcs[i],
 					    lb_size, num_heads);
@@ -1993,8 +1993,8 @@ static int dce_v8_0_crtc_do_set_base(struct drm_crtc *crtc,
 	y &= ~1;
 	WREG32(mmVIEWPORT_START + amdgpu_crtc->crtc_offset,
 	       (x << 16) | y);
-	viewport_w = crtc->mode.hdisplay;
-	viewport_h = (crtc->mode.vdisplay + 1) & ~1;
+	viewport_w = crtc->legacy.mode.hdisplay;
+	viewport_h = (crtc->legacy.mode.vdisplay + 1) & ~1;
 	WREG32(mmVIEWPORT_SIZE + amdgpu_crtc->crtc_offset,
 	       (viewport_w << 16) | viewport_h);
 
@@ -2249,9 +2249,10 @@ static int dce_v8_0_cursor_move_locked(struct drm_crtc *crtc,
 	amdgpu_crtc->cursor_y = y;
 
 	/* avivo cursor are offset into the total surface */
-	x += crtc->x;
-	y += crtc->y;
-	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y);
+	x += crtc->legacy.x;
+	y += crtc->legacy.y;
+	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->legacy.x,
+		  crtc->legacy.y);
 
 	if (x < 0) {
 		xorigin = min(-x, amdgpu_crtc->max_cursor_width - 1);
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 6e79028c5d78..60f20fd287b1 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -8498,8 +8498,8 @@ static bool is_content_protection_different(struct drm_crtc_state *new_crtc_stat
 	 *
 	 * Handles:	DESIRED -> DESIRED (Special case)
 	 */
-	if (!(old_conn_state->crtc && old_conn_state->crtc->enabled) &&
-		new_conn_state->crtc && new_conn_state->crtc->enabled &&
+	if (!(old_conn_state->crtc && old_conn_state->crtc->legacy.enabled) &&
+		new_conn_state->crtc && new_conn_state->crtc->legacy.enabled &&
 		connector->state->content_protection == DRM_MODE_CONTENT_PROTECTION_DESIRED) {
 		dm_con_state->update_hdcp = false;
 		pr_debug("[HDCP_DM] DESIRED->DESIRED (Stream removed and re-enabled) %s :true\n",
@@ -9635,10 +9635,10 @@ static void dm_set_writeback(struct amdgpu_display_manager *dm,
 	wb_info->dwb_params.cnv_params.cnv_out_bpc = DWB_CNV_OUT_BPC_10BPC;
 
 	/* width & height from crtc */
-	wb_info->dwb_params.cnv_params.src_width = acrtc->base.mode.crtc_hdisplay;
-	wb_info->dwb_params.cnv_params.src_height = acrtc->base.mode.crtc_vdisplay;
-	wb_info->dwb_params.dest_width = acrtc->base.mode.crtc_hdisplay;
-	wb_info->dwb_params.dest_height = acrtc->base.mode.crtc_vdisplay;
+	wb_info->dwb_params.cnv_params.src_width = acrtc->base.legacy.mode.crtc_hdisplay;
+	wb_info->dwb_params.cnv_params.src_height = acrtc->base.legacy.mode.crtc_vdisplay;
+	wb_info->dwb_params.dest_width = acrtc->base.legacy.mode.crtc_hdisplay;
+	wb_info->dwb_params.dest_height = acrtc->base.legacy.mode.crtc_vdisplay;
 
 	wb_info->dwb_params.cnv_params.crop_en = false;
 	wb_info->dwb_params.stereo_params.stereo_enabled = false;
@@ -9880,7 +9880,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
 
 		stream_update.stream = dm_new_crtc_state->stream;
 		if (scaling_changed) {
-			update_stream_scaling_settings(&dm_new_con_state->base.crtc->mode,
+			update_stream_scaling_settings(&dm_new_con_state->base.crtc->legacy.mode,
 					dm_new_con_state, dm_new_crtc_state->stream);
 
 			stream_update.src = dm_new_crtc_state->stream->src;
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
index a2cf2c066a76..b543d70c1883 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
@@ -721,7 +721,7 @@ int amdgpu_dm_crtc_init(struct amdgpu_display_manager *dm,
 	acrtc->max_cursor_height = dm->adev->dm.dc->caps.max_cursor_size;
 
 	acrtc->crtc_id = crtc_index;
-	acrtc->base.enabled = false;
+	acrtc->base.legacy.enabled = false;
 	acrtc->otg_inst = -1;
 
 	dm->adev->mode_info.crtcs[crtc_index] = acrtc;
diff --git a/drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c b/drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c
index 42efe838fa85..15ff0fd2157b 100644
--- a/drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c
+++ b/drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c
@@ -58,7 +58,7 @@ u32 amdgpu_dpm_get_vblank_time(struct amdgpu_device *adev)
 	if (adev->mode_info.num_crtc && adev->mode_info.mode_config_initialized) {
 		list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 			amdgpu_crtc = to_amdgpu_crtc(crtc);
-			if (crtc->enabled && amdgpu_crtc->enabled && amdgpu_crtc->hw_mode.clock) {
+			if (crtc->legacy.enabled && amdgpu_crtc->enabled && amdgpu_crtc->hw_mode.clock) {
 				vblank_in_pixels =
 					amdgpu_crtc->hw_mode.crtc_htotal *
 					(amdgpu_crtc->hw_mode.crtc_vblank_end -
@@ -84,7 +84,7 @@ u32 amdgpu_dpm_get_vrefresh(struct amdgpu_device *adev)
 	if (adev->mode_info.num_crtc && adev->mode_info.mode_config_initialized) {
 		list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 			amdgpu_crtc = to_amdgpu_crtc(crtc);
-			if (crtc->enabled && amdgpu_crtc->enabled && amdgpu_crtc->hw_mode.clock) {
+			if (crtc->legacy.enabled && amdgpu_crtc->enabled && amdgpu_crtc->hw_mode.clock) {
 				vrefresh = drm_mode_vrefresh(&amdgpu_crtc->hw_mode);
 				break;
 			}
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index f5d358f3893b..ba1f196745bd 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -211,7 +211,7 @@ static int hdlcd_show_pxlclock(struct seq_file *m, void *arg)
 	struct drm_device *drm = entry->dev;
 	struct hdlcd_drm_private *hdlcd = drm_to_hdlcd_priv(drm);
 	unsigned long clkrate = clk_get_rate(hdlcd->clk);
-	unsigned long mode_clock = hdlcd->crtc.mode.crtc_clock * 1000;
+	unsigned long mode_clock = hdlcd->crtc.legacy.mode.crtc_clock * 1000;
 
 	seq_printf(m, "hw  : %lu\n", clkrate);
 	seq_printf(m, "mode: %lu\n", mode_clock);
diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_hw.c
index 9b845d3f34e1..84eed9cdc6bb 100644
--- a/drivers/gpu/drm/arm/malidp_hw.c
+++ b/drivers/gpu/drm/arm/malidp_hw.c
@@ -1209,7 +1209,7 @@ static irqreturn_t malidp_de_irq(int irq, void *arg)
 	mask = malidp_hw_read(hwdev, MALIDP_REG_MASKIRQ);
 	/* keep the status of the enabled interrupts, plus the error bits */
 	status &= (mask | de->err_mask);
-	if ((status & de->vsync_irq) && malidp->crtc.enabled)
+	if ((status & de->vsync_irq) && malidp->crtc.legacy.enabled)
 		drm_crtc_handle_vblank(&malidp->crtc);
 
 #ifdef CONFIG_DEBUG_FS
diff --git a/drivers/gpu/drm/armada/armada_crtc.c b/drivers/gpu/drm/armada/armada_crtc.c
index c78687c755a8..7d1ce5e15118 100644
--- a/drivers/gpu/drm/armada/armada_crtc.c
+++ b/drivers/gpu/drm/armada/armada_crtc.c
@@ -613,10 +613,12 @@ static int armada_drm_crtc_cursor_update(struct armada_crtc *dcrtc, bool reload)
 		xoff = -dcrtc->cursor_x;
 		xscr = 0;
 		w -= min(xoff, w);
-	} else if (dcrtc->cursor_x + w > dcrtc->crtc.mode.hdisplay) {
+	} else if (dcrtc->cursor_x + w > dcrtc->crtc.legacy.mode.hdisplay) {
 		xoff = 0;
 		xscr = dcrtc->cursor_x;
-		w = max_t(int, dcrtc->crtc.mode.hdisplay - dcrtc->cursor_x, 0);
+		w = max_t(int,
+			  dcrtc->crtc.legacy.mode.hdisplay - dcrtc->cursor_x,
+			  0);
 	} else {
 		xoff = 0;
 		xscr = dcrtc->cursor_x;
@@ -626,10 +628,12 @@ static int armada_drm_crtc_cursor_update(struct armada_crtc *dcrtc, bool reload)
 		yoff = -dcrtc->cursor_y;
 		yscr = 0;
 		h -= min(yoff, h);
-	} else if (dcrtc->cursor_y + h > dcrtc->crtc.mode.vdisplay) {
+	} else if (dcrtc->cursor_y + h > dcrtc->crtc.legacy.mode.vdisplay) {
 		yoff = 0;
 		yscr = dcrtc->cursor_y;
-		h = max_t(int, dcrtc->crtc.mode.vdisplay - dcrtc->cursor_y, 0);
+		h = max_t(int,
+			  dcrtc->crtc.legacy.mode.vdisplay - dcrtc->cursor_y,
+			  0);
 	} else {
 		yoff = 0;
 		yscr = dcrtc->cursor_y;
diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c
index 0e282b7b167c..eed3e44bb0a2 100644
--- a/drivers/gpu/drm/ast/ast_dp.c
+++ b/drivers/gpu/drm/ast/ast_dp.c
@@ -230,7 +230,7 @@ static void ast_dp_set_mode(struct drm_crtc *crtc, struct ast_vbios_mode_info *v
 
 	ulRefreshRateIndex = vbios_mode->enh_table->refresh_rate_index - 1;
 
-	switch (crtc->mode.crtc_hdisplay) {
+	switch (crtc->legacy.mode.crtc_hdisplay) {
 	case 320:
 		ModeIdx = ASTDP_320x240_60;
 		break;
@@ -253,7 +253,7 @@ static void ast_dp_set_mode(struct drm_crtc *crtc, struct ast_vbios_mode_info *v
 		ModeIdx = ASTDP_1152x864_75;
 		break;
 	case 1280:
-		if (crtc->mode.crtc_vdisplay == 800)
+		if (crtc->legacy.mode.crtc_vdisplay == 800)
 			ModeIdx = (ASTDP_1280x800_60_RB - (u8) ulRefreshRateIndex);
 		else		// 1024
 			ModeIdx = (ASTDP_1280x1024_60 + (u8) ulRefreshRateIndex);
@@ -266,7 +266,7 @@ static void ast_dp_set_mode(struct drm_crtc *crtc, struct ast_vbios_mode_info *v
 		ModeIdx = (ASTDP_1440x900_60_RB - (u8) ulRefreshRateIndex);
 		break;
 	case 1600:
-		if (crtc->mode.crtc_vdisplay == 900)
+		if (crtc->legacy.mode.crtc_vdisplay == 900)
 			ModeIdx = (ASTDP_1600x900_60_RB - (u8) ulRefreshRateIndex);
 		else		//1200
 			ModeIdx = ASTDP_1600x1200_60;
@@ -275,7 +275,7 @@ static void ast_dp_set_mode(struct drm_crtc *crtc, struct ast_vbios_mode_info *v
 		ModeIdx = (ASTDP_1680x1050_60_RB - (u8) ulRefreshRateIndex);
 		break;
 	case 1920:
-		if (crtc->mode.crtc_vdisplay == 1080)
+		if (crtc->legacy.mode.crtc_vdisplay == 1080)
 			ModeIdx = ASTDP_1920x1080_60;
 		else		//1200
 			ModeIdx = ASTDP_1920x1200_60;
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 5186d2114a50..79b3f2b4cdb5 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1301,15 +1301,15 @@ drm_atomic_helper_update_legacy_modeset_state(struct drm_device *dev,
 		struct drm_plane *primary = crtc->primary;
 		struct drm_plane_state *new_plane_state;
 
-		crtc->mode = new_crtc_state->mode;
-		crtc->enabled = new_crtc_state->enable;
+		crtc->legacy.mode = new_crtc_state->mode;
+		crtc->legacy.enabled = new_crtc_state->enable;
 
 		new_plane_state =
 			drm_atomic_get_new_plane_state(old_state, primary);
 
 		if (new_plane_state && new_plane_state->crtc == crtc) {
-			crtc->x = new_plane_state->src_x >> 16;
-			crtc->y = new_plane_state->src_y >> 16;
+			crtc->legacy.x = new_plane_state->src_x >> 16;
+			crtc->legacy.y = new_plane_state->src_y >> 16;
 		}
 	}
 }
diff --git a/drivers/gpu/drm/drm_client_modeset.c b/drivers/gpu/drm/drm_client_modeset.c
index cee5eafbfb81..69af71e2b131 100644
--- a/drivers/gpu/drm/drm_client_modeset.c
+++ b/drivers/gpu/drm/drm_client_modeset.c
@@ -703,17 +703,17 @@ static bool drm_client_firmware_config(struct drm_client_dev *client,
 			/*
 			 * IMPORTANT: We want to use the adjusted mode (i.e.
 			 * after the panel fitter upscaling) as the initial
-			 * config, not the input mode, which is what crtc->mode
+			 * config, not the input mode, which is what crtc->legacy.mode
 			 * usually contains. But since our current
 			 * code puts a mode derived from the post-pfit timings
-			 * into crtc->mode this works out correctly.
+			 * into crtc->legacy.mode this works out correctly.
 			 *
-			 * This is crtc->mode and not crtc->state->mode for the
+			 * This is crtc->legacy.mode and not crtc->state->mode for the
 			 * fastboot check to work correctly.
 			 */
 			drm_dbg_kms(dev, "[CONNECTOR:%d:%s] looking for current mode\n",
 				    connector->base.id, connector->name);
-			modes[i] = &connector->state->crtc->mode;
+			modes[i] = &connector->state->crtc->legacy.mode;
 		}
 		/*
 		 * In case of tiled modes, if all tiles are not present
@@ -1213,7 +1213,7 @@ static void drm_client_modeset_dpms_legacy(struct drm_client_dev *client, int dp
 
 	DRM_MODESET_LOCK_ALL_BEGIN(dev, ctx, 0, ret);
 	drm_client_for_each_modeset(modeset, client) {
-		if (!modeset->crtc->enabled)
+		if (!modeset->crtc->legacy.enabled)
 			continue;
 
 		for (j = 0; j < modeset->num_connectors; j++) {
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index db9e6253949f..6c317d6afc65 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -564,11 +564,12 @@ int drm_mode_getcrtc(struct drm_device *dev,
 			crtc_resp->mode_valid = 0;
 		}
 	} else {
-		crtc_resp->x = crtc->x;
-		crtc_resp->y = crtc->y;
+		crtc_resp->x = crtc->legacy.x;
+		crtc_resp->y = crtc->legacy.y;
 
-		if (crtc->enabled) {
-			drm_mode_convert_to_umode(&crtc_resp->mode, &crtc->mode);
+		if (crtc->legacy.enabled) {
+			drm_mode_convert_to_umode(&crtc_resp->mode,
+						  &crtc->legacy.mode);
 			crtc_resp->mode_valid = 1;
 
 		} else {
diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 1df4a05f7a01..f6161377d576 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -198,8 +198,8 @@ static void __drm_helper_disable_unused_functions(struct drm_device *dev)
 	drm_for_each_crtc(crtc, dev) {
 		const struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
 
-		crtc->enabled = drm_helper_crtc_in_use(crtc);
-		if (!crtc->enabled) {
+		crtc->legacy.enabled = drm_helper_crtc_in_use(crtc);
+		if (!crtc->legacy.enabled) {
 			if (crtc_funcs->disable)
 				(*crtc_funcs->disable)(crtc);
 			else
@@ -298,28 +298,28 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
 
 	drm_warn_on_modeset_not_all_locked(dev);
 
-	saved_enabled = crtc->enabled;
-	crtc->enabled = drm_helper_crtc_in_use(crtc);
-	if (!crtc->enabled)
+	saved_enabled = crtc->legacy.enabled;
+	crtc->legacy.enabled = drm_helper_crtc_in_use(crtc);
+	if (!crtc->legacy.enabled)
 		return true;
 
 	adjusted_mode = drm_mode_duplicate(dev, mode);
 	if (!adjusted_mode) {
-		crtc->enabled = saved_enabled;
+		crtc->legacy.enabled = saved_enabled;
 		return false;
 	}
 
-	drm_mode_init(&saved_mode, &crtc->mode);
+	drm_mode_init(&saved_mode, &crtc->legacy.mode);
 	drm_mode_init(&saved_hwmode, &crtc->hwmode);
-	saved_x = crtc->x;
-	saved_y = crtc->y;
+	saved_x = crtc->legacy.x;
+	saved_y = crtc->legacy.y;
 
 	/* Update crtc values up front so the driver can rely on them for mode
 	 * setting.
 	 */
-	drm_mode_copy(&crtc->mode, mode);
-	crtc->x = x;
-	crtc->y = y;
+	drm_mode_copy(&crtc->legacy.mode, mode);
+	crtc->legacy.x = x;
+	crtc->legacy.y = y;
 
 	/* Pass our mode to the connectors and the CRTC to give them a chance to
 	 * adjust it according to limitations or connector properties, and also
@@ -424,11 +424,11 @@ bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
 done:
 	drm_mode_destroy(dev, adjusted_mode);
 	if (!ret) {
-		crtc->enabled = saved_enabled;
-		drm_mode_copy(&crtc->mode, &saved_mode);
+		crtc->legacy.enabled = saved_enabled;
+		drm_mode_copy(&crtc->legacy.mode, &saved_mode);
 		drm_mode_copy(&crtc->hwmode, &saved_hwmode);
-		crtc->x = saved_x;
-		crtc->y = saved_y;
+		crtc->legacy.x = saved_x;
+		crtc->legacy.y = saved_y;
 	}
 
 	return ret;
@@ -632,9 +632,9 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set,
 	drm_connector_list_iter_end(&conn_iter);
 
 	save_set.crtc = set->crtc;
-	save_set.mode = &set->crtc->mode;
-	save_set.x = set->crtc->x;
-	save_set.y = set->crtc->y;
+	save_set.mode = &set->crtc->legacy.mode;
+	save_set.x = set->crtc->legacy.x;
+	save_set.y = set->crtc->legacy.y;
 	save_set.fb = set->crtc->primary->legacy.fb;
 
 	/* We should be able to check here if the fb has the same properties
@@ -651,13 +651,14 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set,
 			fb_changed = true;
 	}
 
-	if (set->x != set->crtc->x || set->y != set->crtc->y)
+	if (set->x != set->crtc->legacy.x || set->y != set->crtc->legacy.y)
 		fb_changed = true;
 
-	if (!drm_mode_equal(set->mode, &set->crtc->mode)) {
+	if (!drm_mode_equal(set->mode, &set->crtc->legacy.mode)) {
 		drm_dbg_kms(dev, "[CRTC:%d:%s] modes are different, full mode set:\n",
 			    set->crtc->base.id, set->crtc->name);
-		drm_dbg_kms(dev, DRM_MODE_FMT "\n", DRM_MODE_ARG(&set->crtc->mode));
+		drm_dbg_kms(dev, DRM_MODE_FMT "\n",
+			    DRM_MODE_ARG(&set->crtc->legacy.mode));
 		drm_dbg_kms(dev, DRM_MODE_FMT "\n", DRM_MODE_ARG(set->mode));
 		mode_changed = true;
 	}
@@ -788,14 +789,14 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set,
 		}
 		__drm_helper_disable_unused_functions(dev);
 	} else if (fb_changed) {
-		set->crtc->x = set->x;
-		set->crtc->y = set->y;
+		set->crtc->legacy.x = set->x;
+		set->crtc->legacy.y = set->y;
 		set->crtc->primary->legacy.fb = set->fb;
 		ret = crtc_funcs->mode_set_base(set->crtc,
 						set->x, set->y, save_set.fb);
 		if (ret != 0) {
-			set->crtc->x = save_set.x;
-			set->crtc->y = save_set.y;
+			set->crtc->legacy.x = save_set.x;
+			set->crtc->legacy.y = save_set.y;
 			set->crtc->primary->legacy.fb = save_set.fb;
 			goto fail;
 		}
@@ -993,11 +994,12 @@ void drm_helper_resume_force_mode(struct drm_device *dev)
 	drm_modeset_lock_all(dev);
 	drm_for_each_crtc(crtc, dev) {
 
-		if (!crtc->enabled)
+		if (!crtc->legacy.enabled)
 			continue;
 
-		ret = drm_crtc_helper_set_mode(crtc, &crtc->mode,
-					       crtc->x, crtc->y, crtc->primary->legacy.fb);
+		ret = drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode,
+					       crtc->legacy.x, crtc->legacy.y,
+					       crtc->primary->legacy.fb);
 
 		/* Restoring the old config should never fail! */
 		if (ret == false)
@@ -1049,7 +1051,7 @@ int drm_helper_force_disable_all(struct drm_device *dev)
 
 	drm_modeset_lock_all(dev);
 	drm_for_each_crtc(crtc, dev)
-		if (crtc->enabled) {
+		if (crtc->legacy.enabled) {
 			struct drm_mode_set set = {
 				.crtc = crtc,
 			};
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index fd9d804e3672..59cc05ed5115 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -145,7 +145,7 @@ int drm_fb_helper_debug_enter(struct fb_info *info)
 	list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) {
 		mutex_lock(&helper->client.modeset_mutex);
 		drm_client_for_each_modeset(mode_set, &helper->client) {
-			if (!mode_set->crtc->enabled)
+			if (!mode_set->crtc->legacy.enabled)
 				continue;
 
 			funcs =	mode_set->crtc->helper_private;
@@ -191,7 +191,7 @@ int drm_fb_helper_debug_leave(struct fb_info *info)
 		funcs = crtc->helper_private;
 		fb = crtc->primary->legacy.fb;
 
-		if (!crtc->enabled)
+		if (!crtc->legacy.enabled)
 			continue;
 
 		if (!fb) {
@@ -203,8 +203,10 @@ int drm_fb_helper_debug_leave(struct fb_info *info)
 			continue;
 
 		drm_fb_helper_restore_lut_atomic(mode_set->crtc);
-		funcs->mode_set_base_atomic(mode_set->crtc, fb, crtc->x,
-					    crtc->y, LEAVE_ATOMIC_MODE_SET);
+		funcs->mode_set_base_atomic(mode_set->crtc, fb,
+					    crtc->legacy.x,
+					    crtc->legacy.y,
+					    LEAVE_ATOMIC_MODE_SET);
 	}
 	mutex_unlock(&client->modeset_mutex);
 
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 4b077110238a..e46f1732f55b 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -1467,8 +1467,9 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
 						       state->src_h,
 						       fb);
 	} else {
-		ret = drm_crtc_check_viewport(crtc, crtc->x, crtc->y,
-					      &crtc->mode, fb);
+		ret = drm_crtc_check_viewport(crtc, crtc->legacy.x,
+					      crtc->legacy.y,
+					      &crtc->legacy.mode, fb);
 	}
 	if (ret)
 		goto out;
diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
index 7982be4b0306..6fe690e5107b 100644
--- a/drivers/gpu/drm/drm_plane_helper.c
+++ b/drivers/gpu/drm/drm_plane_helper.c
@@ -119,8 +119,8 @@ static int drm_plane_helper_check_update(struct drm_plane *plane,
 	};
 	struct drm_crtc_state crtc_state = {
 		.crtc = crtc,
-		.enable = crtc->enabled,
-		.mode = crtc->mode,
+		.enable = crtc->legacy.enabled,
+		.mode = crtc->legacy.mode,
 	};
 	int ret;
 
@@ -172,7 +172,7 @@ int drm_plane_helper_update_primary(struct drm_plane *plane, struct drm_crtc *cr
 	struct drm_mode_set set = {
 		.crtc = crtc,
 		.fb = fb,
-		.mode = &crtc->mode,
+		.mode = &crtc->legacy.mode,
 		.x = src_x >> 16,
 		.y = src_y >> 16,
 	};
diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c
index 94e45ed6869d..440411ae05c0 100644
--- a/drivers/gpu/drm/drm_vblank.c
+++ b/drivers/gpu/drm/drm_vblank.c
@@ -2042,7 +2042,7 @@ int drm_crtc_get_sequence_ioctl(struct drm_device *dev, void *data,
 	if (crtc->state)
 		get_seq->active = crtc->state->enable;
 	else
-		get_seq->active = crtc->enabled;
+		get_seq->active = crtc->legacy.enabled;
 	drm_modeset_unlock(&crtc->mutex);
 	get_seq->sequence = drm_vblank_count_and_time(dev, pipe, &now);
 	get_seq->sequence_ns = ktime_to_ns(now);
diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
index 0ef7bc8848b0..fccc731d83f0 100644
--- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
@@ -196,7 +196,7 @@ static void decon_setup_trigger(struct decon_context *ctx)
 static void decon_commit(struct exynos_drm_crtc *crtc)
 {
 	struct decon_context *ctx = crtc->ctx;
-	struct drm_display_mode *m = &crtc->base.mode;
+	struct drm_display_mode *m = &crtc->base.legacy.mode;
 	bool interlaced = false;
 	u32 val;
 
@@ -410,7 +410,7 @@ static void decon_update_plane(struct exynos_drm_crtc *crtc,
 	dma_addr_t dma_addr = exynos_drm_fb_dma_addr(fb, 0);
 	u32 val;
 
-	if (crtc->base.mode.flags & DRM_MODE_FLAG_INTERLACE) {
+	if (crtc->base.legacy.mode.flags & DRM_MODE_FLAG_INTERLACE) {
 		val = COORDINATE_X(state->crtc.x) |
 			COORDINATE_Y(state->crtc.y / 2);
 		writel(val, ctx->addr + DECON_VIDOSDxA(win));
diff --git a/drivers/gpu/drm/gma500/cdv_intel_dp.c b/drivers/gpu/drm/gma500/cdv_intel_dp.c
index 49851881e41e..e43a1247bd92 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_dp.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_dp.c
@@ -1847,8 +1847,8 @@ cdv_intel_dp_set_property(struct drm_connector *connector,
 done:
 	if (encoder->base.crtc) {
 		struct drm_crtc *crtc = encoder->base.crtc;
-		drm_crtc_helper_set_mode(crtc, &crtc->mode,
-					 crtc->x, crtc->y,
+		drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode,
+					 crtc->legacy.x, crtc->legacy.y,
 					 crtc->primary->legacy.fb);
 	}
 
diff --git a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
index 16968c94bfd3..5d6814f16093 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c
@@ -191,7 +191,7 @@ static int cdv_hdmi_set_property(struct drm_connector *connector,
 		    crtc->saved_mode.vdisplay != 0) {
 			if (centre) {
 				if (!drm_crtc_helper_set_mode(encoder->crtc, &crtc->saved_mode,
-							      encoder->crtc->x, encoder->crtc->y,
+							      encoder->crtc->legacy.x, encoder->crtc->legacy.y,
 							      encoder->crtc->primary->legacy.fb))
 					return -1;
 			} else {
diff --git a/drivers/gpu/drm/gma500/cdv_intel_lvds.c b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
index b607355b85dd..d1e29d4f5ba6 100644
--- a/drivers/gpu/drm/gma500/cdv_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/cdv_intel_lvds.c
@@ -373,8 +373,8 @@ static int cdv_intel_lvds_set_property(struct drm_connector *connector,
 		    crtc->saved_mode.vdisplay != 0) {
 			if (!drm_crtc_helper_set_mode(encoder->crtc,
 						      &crtc->saved_mode,
-						      encoder->crtc->x,
-						      encoder->crtc->y,
+						      encoder->crtc->legacy.x,
+						      encoder->crtc->legacy.y,
 						      encoder->crtc->primary->legacy.fb))
 				return -1;
 		}
diff --git a/drivers/gpu/drm/gma500/gma_display.c b/drivers/gpu/drm/gma500/gma_display.c
index f2f8a95c8d39..6410ba1a3766 100644
--- a/drivers/gpu/drm/gma500/gma_display.c
+++ b/drivers/gpu/drm/gma500/gma_display.c
@@ -152,7 +152,7 @@ void gma_crtc_load_lut(struct drm_crtc *crtc)
 	int i;
 
 	/* The clocks have to be on to load the palette. */
-	if (!crtc->enabled)
+	if (!crtc->legacy.enabled)
 		return;
 
 	r = crtc->gamma_store;
@@ -537,7 +537,8 @@ int gma_crtc_page_flip(struct drm_crtc *crtc,
 		spin_unlock_irqrestore(&dev->event_lock, flags);
 
 		/* Call this locked if we want an event at vblank interrupt. */
-		ret = crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, old_fb);
+		ret = crtc_funcs->mode_set_base(crtc, crtc->legacy.x,
+						crtc->legacy.y, old_fb);
 		if (ret) {
 			spin_lock_irqsave(&dev->event_lock, flags);
 			if (gma_crtc->page_flip_event) {
@@ -547,7 +548,8 @@ int gma_crtc_page_flip(struct drm_crtc *crtc,
 			spin_unlock_irqrestore(&dev->event_lock, flags);
 		}
 	} else {
-		ret = crtc_funcs->mode_set_base(crtc, crtc->x, crtc->y, old_fb);
+		ret = crtc_funcs->mode_set_base(crtc, crtc->legacy.x,
+						crtc->legacy.y, old_fb);
 	}
 
 	/* Restore previous fb in case of failure. */
diff --git a/drivers/gpu/drm/gma500/psb_intel_lvds.c b/drivers/gpu/drm/gma500/psb_intel_lvds.c
index 1e80bc865843..8dee9d211537 100644
--- a/drivers/gpu/drm/gma500/psb_intel_lvds.c
+++ b/drivers/gpu/drm/gma500/psb_intel_lvds.c
@@ -568,8 +568,8 @@ int psb_intel_lvds_set_property(struct drm_connector *connector,
 		    crtc->saved_mode.vdisplay != 0) {
 			if (!drm_crtc_helper_set_mode(encoder->crtc,
 						      &crtc->saved_mode,
-						      encoder->crtc->x,
-						      encoder->crtc->y,
+						      encoder->crtc->legacy.x,
+						      encoder->crtc->legacy.y,
 						      encoder->crtc->primary->legacy.fb))
 				goto set_prop_error;
 		}
diff --git a/drivers/gpu/drm/gma500/psb_intel_sdvo.c b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
index 9fab87f17dc9..2a6cb2ae2f50 100644
--- a/drivers/gpu/drm/gma500/psb_intel_sdvo.c
+++ b/drivers/gpu/drm/gma500/psb_intel_sdvo.c
@@ -1726,8 +1726,10 @@ psb_intel_sdvo_set_property(struct drm_connector *connector,
 done:
 	if (psb_intel_sdvo->base.base.crtc) {
 		struct drm_crtc *crtc = psb_intel_sdvo->base.base.crtc;
-		drm_crtc_helper_set_mode(crtc, &crtc->mode, crtc->x,
-					 crtc->y, crtc->primary->legacy.fb);
+		drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode,
+					 crtc->legacy.x,
+					 crtc->legacy.y,
+					 crtc->primary->legacy.fb);
 	}
 
 	return 0;
@@ -1755,7 +1757,7 @@ static void psb_intel_sdvo_restore(struct drm_connector *connector)
 	/* Force a full mode set on the crtc. We're supposed to have the
 	   mode_config lock already. */
 	if (connector->status == connector_status_connected)
-		drm_crtc_helper_set_mode(crtc, &crtc->mode, crtc->x, crtc->y,
+		drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode, crtc->legacy.x, crtc->legacy.y,
 					 NULL);
 }
 
diff --git a/drivers/gpu/drm/i2c/ch7006_drv.c b/drivers/gpu/drm/i2c/ch7006_drv.c
index 058cb389b8ec..48a7b50b83f4 100644
--- a/drivers/gpu/drm/i2c/ch7006_drv.c
+++ b/drivers/gpu/drm/i2c/ch7006_drv.c
@@ -362,8 +362,9 @@ static int ch7006_encoder_set_property(struct drm_encoder *encoder,
 		drm_helper_probe_single_connector_modes(connector, 0, 0);
 
 		if (crtc)
-			drm_crtc_helper_set_mode(crtc, &crtc->mode,
-						 crtc->x, crtc->y,
+			drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode,
+						 crtc->legacy.x,
+						 crtc->legacy.y,
 						 crtc->primary->legacy.fb);
 	}
 
diff --git a/drivers/gpu/drm/i2c/sil164_drv.c b/drivers/gpu/drm/i2c/sil164_drv.c
index ff23422727fc..860e1cb6d753 100644
--- a/drivers/gpu/drm/i2c/sil164_drv.c
+++ b/drivers/gpu/drm/i2c/sil164_drv.c
@@ -219,7 +219,7 @@ sil164_encoder_dpms(struct drm_encoder *encoder, int mode)
 {
 	struct sil164_priv *priv = to_sil164_priv(encoder);
 	bool on = (mode == DRM_MODE_DPMS_ON);
-	bool duallink = (on && encoder->crtc->mode.clock > 165000);
+	bool duallink = (on && encoder->crtc->legacy.mode.clock > 165000);
 
 	sil164_set_power_state(drm_i2c_encoder_get_client(encoder), on);
 
diff --git a/drivers/gpu/drm/i915/display/intel_modeset_setup.c b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
index bcc5cf137a88..bfd9da71e8e9 100644
--- a/drivers/gpu/drm/i915/display/intel_modeset_setup.c
+++ b/drivers/gpu/drm/i915/display/intel_modeset_setup.c
@@ -88,7 +88,7 @@ static void intel_crtc_disable_noatomic_begin(struct intel_crtc *crtc,
 		    crtc->base.base.id, crtc->base.name);
 
 	crtc->active = false;
-	crtc->base.enabled = false;
+	crtc->base.legacy.enabled = false;
 
 	if (crtc_state->shared_dpll)
 		intel_unreference_shared_dpll_crtc(crtc,
@@ -725,7 +725,7 @@ static void intel_modeset_readout_hw_state(struct drm_i915_private *i915)
 
 		crtc_state->hw.enable = crtc_state->hw.active;
 
-		crtc->base.enabled = crtc_state->hw.enable;
+		crtc->base.legacy.enabled = crtc_state->hw.enable;
 		crtc->active = crtc_state->hw.active;
 
 		if (crtc_state->hw.active)
diff --git a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c b/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
index 3215c4acd675..7e5ed8864d6a 100644
--- a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
+++ b/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
@@ -154,24 +154,31 @@ static void imx_lcdc_update_hw_registers(struct drm_simple_display_pipe *pipe,
 		return;
 
 	/* Disable PER clock to make register write possible */
-	if (old_state && old_state->crtc && old_state->crtc->enabled)
+	if (old_state && old_state->crtc && old_state->crtc->legacy.enabled)
 		clk_disable_unprepare(lcdc->clk_per);
 
 	/* Framesize */
-	framesize = FIELD_PREP(IMX21LCDC_LSR_XMAX, crtc->mode.hdisplay >> 4) |
-		FIELD_PREP(IMX21LCDC_LSR_YMAX, crtc->mode.vdisplay);
+	framesize = FIELD_PREP(IMX21LCDC_LSR_XMAX,
+		               crtc->legacy.mode.hdisplay >> 4) |
+		FIELD_PREP(IMX21LCDC_LSR_YMAX, crtc->legacy.mode.vdisplay);
 	writel(framesize, lcdc->base + IMX21LCDC_LSR);
 
 	/* HSYNC */
-	lhcr = FIELD_PREP(IMX21LCDC_LHCR_HFPORCH, crtc->mode.hsync_start - crtc->mode.hdisplay - 1) |
-		FIELD_PREP(IMX21LCDC_LHCR_HWIDTH, crtc->mode.hsync_end - crtc->mode.hsync_start - 1) |
-		FIELD_PREP(IMX21LCDC_LHCR_HBPORCH, crtc->mode.htotal - crtc->mode.hsync_end - 3);
+	lhcr = FIELD_PREP(IMX21LCDC_LHCR_HFPORCH,
+		          crtc->legacy.mode.hsync_start - crtc->legacy.mode.hdisplay - 1) |
+		FIELD_PREP(IMX21LCDC_LHCR_HWIDTH,
+		           crtc->legacy.mode.hsync_end - crtc->legacy.mode.hsync_start - 1) |
+		FIELD_PREP(IMX21LCDC_LHCR_HBPORCH,
+		           crtc->legacy.mode.htotal - crtc->legacy.mode.hsync_end - 3);
 	writel(lhcr, lcdc->base + IMX21LCDC_LHCR);
 
 	/* VSYNC */
-	lvcr = FIELD_PREP(IMX21LCDC_LVCR_VFPORCH, crtc->mode.vsync_start - crtc->mode.vdisplay) |
-		FIELD_PREP(IMX21LCDC_LVCR_VWIDTH, crtc->mode.vsync_end - crtc->mode.vsync_start) |
-		FIELD_PREP(IMX21LCDC_LVCR_VBPORCH, crtc->mode.vtotal - crtc->mode.vsync_end);
+	lvcr = FIELD_PREP(IMX21LCDC_LVCR_VFPORCH,
+		          crtc->legacy.mode.vsync_start - crtc->legacy.mode.vdisplay) |
+		FIELD_PREP(IMX21LCDC_LVCR_VWIDTH,
+		           crtc->legacy.mode.vsync_end - crtc->legacy.mode.vsync_start) |
+		FIELD_PREP(IMX21LCDC_LVCR_VBPORCH,
+		           crtc->legacy.mode.vtotal - crtc->legacy.mode.vsync_end);
 	writel(lvcr, lcdc->base + IMX21LCDC_LVCR);
 
 	lpcr = readl(lcdc->base + IMX21LCDC_LPCR);
@@ -183,7 +190,7 @@ static void imx_lcdc_update_hw_registers(struct drm_simple_display_pipe *pipe,
 	writel(new_state->fb->pitches[0] / 4, lcdc->base + IMX21LCDC_LVPWR);
 
 	/* Enable PER clock */
-	if (new_state->crtc->enabled)
+	if (new_state->crtc->legacy.enabled)
 		clk_prepare_enable(lcdc->clk_per);
 }
 
@@ -195,7 +202,7 @@ static void imx_lcdc_pipe_enable(struct drm_simple_display_pipe *pipe,
 	int clk_div;
 	int bpp;
 	struct imx_lcdc *lcdc = imx_lcdc_from_drmdev(pipe->crtc.dev);
-	struct drm_display_mode *mode = &pipe->crtc.mode;
+	struct drm_display_mode *mode = &pipe->crtc.legacy.mode;
 	struct drm_display_info *disp_info = &lcdc->connector->display_info;
 	const int hsync_pol = (mode->flags & DRM_MODE_FLAG_PHSYNC) ? 0 : 1;
 	const int vsync_pol = (mode->flags & DRM_MODE_FLAG_PVSYNC) ? 0 : 1;
@@ -257,7 +264,7 @@ static void imx_lcdc_pipe_disable(struct drm_simple_display_pipe *pipe)
 	clk_disable_unprepare(lcdc->clk_ahb);
 	clk_disable_unprepare(lcdc->clk_ipg);
 
-	if (pipe->crtc.enabled)
+	if (pipe->crtc.legacy.enabled)
 		clk_disable_unprepare(lcdc->clk_per);
 
 	spin_lock_irq(&lcdc->drm.event_lock);
diff --git a/drivers/gpu/drm/mediatek/mtk_crtc.c b/drivers/gpu/drm/mediatek/mtk_crtc.c
index 175b00e5a253..5496ea981370 100644
--- a/drivers/gpu/drm/mediatek/mtk_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_crtc.c
@@ -211,9 +211,9 @@ static void mtk_crtc_mode_set_nofb(struct drm_crtc *crtc)
 {
 	struct mtk_crtc_state *state = to_mtk_crtc_state(crtc->state);
 
-	state->pending_width = crtc->mode.hdisplay;
-	state->pending_height = crtc->mode.vdisplay;
-	state->pending_vrefresh = drm_mode_vrefresh(&crtc->mode);
+	state->pending_width = crtc->legacy.mode.hdisplay;
+	state->pending_height = crtc->legacy.mode.vdisplay;
+	state->pending_vrefresh = drm_mode_vrefresh(&crtc->legacy.mode);
 	wmb();	/* Make sure the above parameters are set before update */
 	state->pending_config = true;
 }
diff --git a/drivers/gpu/drm/meson/meson_overlay.c b/drivers/gpu/drm/meson/meson_overlay.c
index 7f98de38842b..1d6119c8d567 100644
--- a/drivers/gpu/drm/meson/meson_overlay.c
+++ b/drivers/gpu/drm/meson/meson_overlay.c
@@ -482,7 +482,7 @@ static void meson_overlay_atomic_update(struct drm_plane *plane,
 
 	DRM_DEBUG_DRIVER("\n");
 
-	interlace_mode = new_state->crtc->mode.flags & DRM_MODE_FLAG_INTERLACE;
+	interlace_mode = new_state->crtc->legacy.mode.flags & DRM_MODE_FLAG_INTERLACE;
 
 	spin_lock_irqsave(&priv->drm->event_lock, flags);
 
diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c
index b43ac61201f3..35ea994057b0 100644
--- a/drivers/gpu/drm/meson/meson_plane.c
+++ b/drivers/gpu/drm/meson/meson_plane.c
@@ -251,7 +251,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane,
 	hf_bank_len = 4;
 	vf_bank_len = 4;
 
-	if (new_state->crtc->mode.flags & DRM_MODE_FLAG_INTERLACE) {
+	if (new_state->crtc->legacy.mode.flags & DRM_MODE_FLAG_INTERLACE) {
 		vsc_bot_rcv_num = 6;
 		vsc_bot_rpt_p0_num = 2;
 	}
@@ -273,7 +273,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane,
 	 * But the vertical scaler can provide such funtionnality if
 	 * is configured for 2:1 scaling with interlace options enabled.
 	 */
-	if (new_state->crtc->mode.flags & DRM_MODE_FLAG_INTERLACE) {
+	if (new_state->crtc->legacy.mode.flags & DRM_MODE_FLAG_INTERLACE) {
 		dest.y1 /= 2;
 		dest.y2 /= 2;
 		dst_h /= 2;
@@ -282,7 +282,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane,
 	hf_phase_step = ((src_w << 18) / dst_w) << 6;
 	vf_phase_step = (src_h << 20) / dst_h;
 
-	if (new_state->crtc->mode.flags & DRM_MODE_FLAG_INTERLACE)
+	if (new_state->crtc->legacy.mode.flags & DRM_MODE_FLAG_INTERLACE)
 		bot_ini_phase = ((vf_phase_step / 2) >> 4);
 	else
 		bot_ini_phase = 0;
@@ -314,7 +314,7 @@ static void meson_plane_atomic_update(struct drm_plane *plane,
 					VSC_TOP_RPT_L0_NUM(vsc_ini_rpt_p0_num) |
 					VSC_VERTICAL_SCALER_EN;
 
-		if (new_state->crtc->mode.flags & DRM_MODE_FLAG_INTERLACE)
+		if (new_state->crtc->legacy.mode.flags & DRM_MODE_FLAG_INTERLACE)
 			priv->viu.osd_sc_v_ctrl0 |=
 					VSC_BOT_INI_RCV_NUM(vsc_bot_rcv_num) |
 					VSC_BOT_RPT_L0_NUM(vsc_bot_rpt_p0_num) |
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
index 68fae048a9a8..a415f2001db8 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c
@@ -170,7 +170,7 @@ int dpu_core_perf_crtc_check(struct drm_crtc *crtc,
 	curr_client_type = dpu_crtc_get_client_type(crtc);
 
 	drm_for_each_crtc(tmp_crtc, crtc->dev) {
-		if (tmp_crtc->enabled &&
+		if (tmp_crtc->legacy.enabled &&
 		    dpu_crtc_get_client_type(tmp_crtc) == curr_client_type &&
 		    tmp_crtc != crtc) {
 			struct dpu_crtc_state *tmp_cstate =
@@ -219,7 +219,7 @@ static int _dpu_core_perf_crtc_update_bus(struct dpu_kms *kms,
 		return 0;
 
 	drm_for_each_crtc(tmp_crtc, crtc->dev) {
-		if (tmp_crtc->enabled &&
+		if (tmp_crtc->legacy.enabled &&
 			curr_client_type ==
 				dpu_crtc_get_client_type(tmp_crtc)) {
 			dpu_cstate = to_dpu_crtc_state(tmp_crtc->state);
@@ -291,7 +291,7 @@ static u64 _dpu_core_perf_get_core_clk_rate(struct dpu_kms *kms)
 
 	clk_rate = 0;
 	drm_for_each_crtc(crtc, kms->dev) {
-		if (crtc->enabled) {
+		if (crtc->legacy.enabled) {
 			dpu_cstate = to_dpu_crtc_state(crtc->state);
 			clk_rate = max(dpu_cstate->new_perf.core_clk_rate,
 							clk_rate);
@@ -323,12 +323,13 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc,
 	dpu_cstate = to_dpu_crtc_state(crtc->state);
 
 	DRM_DEBUG_ATOMIC("crtc:%d enabled:%d core_clk:%llu\n",
-			crtc->base.id, crtc->enabled, kms->perf.core_clk_rate);
+			crtc->base.id, crtc->legacy.enabled,
+			kms->perf.core_clk_rate);
 
 	old = &dpu_crtc->cur_perf;
 	new = &dpu_cstate->new_perf;
 
-	if (crtc->enabled) {
+	if (crtc->legacy.enabled) {
 		/*
 		 * cases for bus bandwidth update.
 		 * 1. new bandwidth vote - "ab or ib vote" is higher
@@ -361,7 +362,8 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc,
 	}
 
 	trace_dpu_perf_crtc_update(crtc->base.id, new->bw_ctl,
-		new->core_clk_rate, !crtc->enabled, update_bus, update_clk);
+		new->core_clk_rate, !crtc->legacy.enabled, update_bus,
+		update_clk);
 
 	if (update_bus) {
 		ret = _dpu_core_perf_crtc_update_bus(kms, crtc);
@@ -381,7 +383,9 @@ int dpu_core_perf_crtc_update(struct drm_crtc *crtc,
 
 		DRM_DEBUG_ATOMIC("clk:%llu\n", clk_rate);
 
-		trace_dpu_core_perf_update_clk(kms->dev, !crtc->enabled, clk_rate);
+		trace_dpu_core_perf_update_clk(kms->dev,
+					       !crtc->legacy.enabled,
+					       clk_rate);
 
 		clk_rate = min(clk_rate, kms->perf.max_core_clk_rate);
 		ret = dev_pm_opp_set_rate(&kms->pdev->dev, clk_rate);
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index 29298e066163..f249288ab042 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -1139,12 +1139,12 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
 			&fmt->pixel_format, MSM_FORMAT_IS_UBWC(fmt));
 
 	dpu_plane_sspp_update_pipe(plane, pipe, pipe_cfg, fmt,
-				   drm_mode_vrefresh(&crtc->mode),
+				   drm_mode_vrefresh(&crtc->legacy.mode),
 				   layout_valid ? &layout : NULL);
 
 	if (r_pipe->sspp) {
 		dpu_plane_sspp_update_pipe(plane, r_pipe, r_pipe_cfg, fmt,
-					   drm_mode_vrefresh(&crtc->mode),
+					   drm_mode_vrefresh(&crtc->legacy.mode),
 					   layout_valid ? &layout : NULL);
 	}
 
@@ -1152,14 +1152,18 @@ static void dpu_plane_sspp_atomic_update(struct drm_plane *plane)
 		pstate->needs_qos_remap = false;
 
 	pstate->plane_fetch_bw = _dpu_plane_calc_bw(pdpu->catalog, fmt,
-						    &crtc->mode, pipe_cfg);
+						    &crtc->legacy.mode,
+						    pipe_cfg);
 
-	pstate->plane_clk = _dpu_plane_calc_clk(&crtc->mode, pipe_cfg);
+	pstate->plane_clk = _dpu_plane_calc_clk(&crtc->legacy.mode, pipe_cfg);
 
 	if (r_pipe->sspp) {
-		pstate->plane_fetch_bw += _dpu_plane_calc_bw(pdpu->catalog, fmt, &crtc->mode, r_pipe_cfg);
+		pstate->plane_fetch_bw += _dpu_plane_calc_bw(pdpu->catalog, fmt,
+							     &crtc->legacy.mode,
+							     r_pipe_cfg);
 
-		pstate->plane_clk = max(pstate->plane_clk, _dpu_plane_calc_clk(&crtc->mode, r_pipe_cfg));
+		pstate->plane_clk = max(pstate->plane_clk,
+					_dpu_plane_calc_clk(&crtc->legacy.mode, r_pipe_cfg));
 	}
 }
 
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
index 0f653e62b4a0..382939ab23ac 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c
@@ -842,8 +842,8 @@ static void mdp5_crtc_atomic_flush(struct drm_crtc *crtc,
 static void get_roi(struct drm_crtc *crtc, uint32_t *roi_w, uint32_t *roi_h)
 {
 	struct mdp5_crtc *mdp5_crtc = to_mdp5_crtc(crtc);
-	uint32_t xres = crtc->mode.hdisplay;
-	uint32_t yres = crtc->mode.vdisplay;
+	uint32_t xres = crtc->legacy.mode.hdisplay;
+	uint32_t yres = crtc->legacy.mode.vdisplay;
 
 	/*
 	 * Cursor Region Of Interest (ROI) is a plane read from cursor
diff --git a/drivers/gpu/drm/nouveau/dispnv04/crtc.c b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
index 4cbc3976b180..35e66559b1f6 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/crtc.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/crtc.c
@@ -735,7 +735,7 @@ static void nv_crtc_commit(struct drm_crtc *crtc)
 	struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc);
 
 	nouveau_hw_load_state(dev, nv_crtc->index, &nv04_display(dev)->mode_reg);
-	nv04_crtc_mode_set_base(crtc, crtc->x, crtc->y, NULL);
+	nv04_crtc_mode_set_base(crtc, crtc->legacy.x, crtc->legacy.y, NULL);
 
 #ifdef __BIG_ENDIAN
 	/* turn on LFB swapping */
@@ -899,7 +899,8 @@ nv04_crtc_do_mode_set_base(struct drm_crtc *crtc,
 	nv_set_crtc_base(dev, nv_crtc->index, regp->fb_start);
 
 	/* Update the arbitration parameters. */
-	nouveau_calc_arb(dev, crtc->mode.clock, drm_fb->format->cpp[0] * 8,
+	nouveau_calc_arb(dev, crtc->legacy.mode.clock,
+			 drm_fb->format->cpp[0] * 8,
 			 &arb_burst, &arb_lwm);
 
 	regp->CRTC[NV_CIO_CRE_FF_INDEX] = arb_burst;
@@ -1097,8 +1098,8 @@ nv04_flip_complete(struct nvif_event *event, void *argv, u32 argc)
 
 	if (!nv04_finish_page_flip(chan, &state)) {
 		nv_set_crtc_base(drm->dev, drm_crtc_index(state.crtc),
-				 state.offset + state.crtc->y *
-				 state.pitch + state.crtc->x *
+				 state.offset + state.crtc->legacy.y *
+				 state.pitch + state.crtc->legacy.x *
 				 state.bpp / 8);
 	}
 
diff --git a/drivers/gpu/drm/nouveau/dispnv04/cursor.c b/drivers/gpu/drm/nouveau/dispnv04/cursor.c
index 4c6440d29c3f..2a87b3256c29 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/cursor.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/cursor.c
@@ -47,7 +47,7 @@ nv04_cursor_set_offset(struct nouveau_crtc *nv_crtc, uint32_t offset)
 		XLATE(offset, 17, NV_CIO_CRE_HCUR_ADDR0_ADR);
 	regp->CRTC[NV_CIO_CRE_HCUR_ADDR1_INDEX] =
 		XLATE(offset, 11, NV_CIO_CRE_HCUR_ADDR1_ADR);
-	if (crtc->mode.flags & DRM_MODE_FLAG_DBLSCAN)
+	if (crtc->legacy.mode.flags & DRM_MODE_FLAG_DBLSCAN)
 		regp->CRTC[NV_CIO_CRE_HCUR_ADDR1_INDEX] |=
 			MASK(NV_CIO_CRE_HCUR_ADDR1_CUR_DBL);
 	regp->CRTC[NV_CIO_CRE_HCUR_ADDR2_INDEX] = offset >> 24;
diff --git a/drivers/gpu/drm/nouveau/dispnv04/tvmodesnv17.c b/drivers/gpu/drm/nouveau/dispnv04/tvmodesnv17.c
index a3fedd226854..1663e173264a 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/tvmodesnv17.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/tvmodesnv17.c
@@ -315,7 +315,7 @@ static void tv_setup_filter(struct drm_encoder *encoder)
 {
 	struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
 	struct nv17_tv_norm_params *tv_norm = get_tv_norm(encoder);
-	struct drm_display_mode *mode = &encoder->crtc->mode;
+	struct drm_display_mode *mode = &encoder->crtc->legacy.mode;
 	uint32_t (*filters[])[4][7] = {&tv_enc->state.hfilter,
 				       &tv_enc->state.vfilter};
 	int i, j, k;
@@ -544,7 +544,7 @@ void nv17_ctv_update_rescaler(struct drm_encoder *encoder)
 	struct nv17_tv_encoder *tv_enc = to_tv_enc(encoder);
 	int head = nouveau_crtc(encoder->crtc)->index;
 	struct nv04_crtc_reg *regs = &nv04_display(dev)->mode_reg.crtc_reg[head];
-	struct drm_display_mode *crtc_mode = &encoder->crtc->mode;
+	struct drm_display_mode *crtc_mode = &encoder->crtc->legacy.mode;
 	struct drm_display_mode *output_mode =
 		&get_tv_norm(encoder)->ctv_enc_mode.mode;
 	int overscan, hmargin, vmargin, hratio, vratio;
diff --git a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
index 4bc8039e6ee0..d7039aee9d72 100644
--- a/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
+++ b/drivers/gpu/drm/nouveau/dispnv04/tvnv17.c
@@ -754,8 +754,9 @@ static int nv17_tv_set_property(struct drm_encoder *encoder,
 		/* Disable the crtc to ensure a full modeset is
 		 * performed whenever it's turned on again. */
 		if (crtc)
-			drm_crtc_helper_set_mode(crtc, &crtc->mode,
-						 crtc->x, crtc->y,
+			drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode,
+						 crtc->legacy.x,
+						 crtc->legacy.y,
 						 crtc->primary->legacy.fb);
 	}
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 8d5c9c74cbb9..70a9d98b882c 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -807,9 +807,9 @@ nouveau_connector_set_property(struct drm_connector *connector,
 
 	if (connector->encoder && connector->encoder->crtc) {
 		ret = drm_crtc_helper_set_mode(connector->encoder->crtc,
-					      &connector->encoder->crtc->mode,
-					       connector->encoder->crtc->x,
-					       connector->encoder->crtc->y,
+					      &connector->encoder->crtc->legacy.mode,
+					       connector->encoder->crtc->legacy.x,
+					       connector->encoder->crtc->legacy.y,
 					       NULL);
 		if (!ret)
 			return -EINVAL;
diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c
index bc24af08dfcd..c2ea1d64d581 100644
--- a/drivers/gpu/drm/qxl/qxl_display.c
+++ b/drivers/gpu/drm/qxl/qxl_display.c
@@ -337,12 +337,12 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc,
 	head.surface_id = 0;
 	oldcount = qdev->monitors_config->count;
 	if (crtc->state->active) {
-		struct drm_display_mode *mode = &crtc->mode;
+		struct drm_display_mode *mode = &crtc->legacy.mode;
 
 		head.width = mode->hdisplay;
 		head.height = mode->vdisplay;
-		head.x = crtc->x;
-		head.y = crtc->y;
+		head.x = crtc->legacy.x;
+		head.y = crtc->legacy.y;
 		if (qdev->monitors_config->count < i + 1)
 			qdev->monitors_config->count = i + 1;
 		if (qdev->primary_bo == qdev->dumb_shadow_bo)
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index 36e4663186c8..418ba3783835 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -1426,10 +1426,10 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc,
 	y &= ~1;
 	WREG32(EVERGREEN_VIEWPORT_START + radeon_crtc->crtc_offset,
 	       (x << 16) | y);
-	viewport_w = crtc->mode.hdisplay;
-	viewport_h = (crtc->mode.vdisplay + 1) & ~1;
+	viewport_w = crtc->legacy.mode.hdisplay;
+	viewport_h = (crtc->legacy.mode.vdisplay + 1) & ~1;
 	if ((rdev->family >= CHIP_BONAIRE) &&
-	    (crtc->mode.flags & DRM_MODE_FLAG_INTERLACE))
+	    (crtc->legacy.mode.flags & DRM_MODE_FLAG_INTERLACE))
 		viewport_h *= 2;
 	WREG32(EVERGREEN_VIEWPORT_SIZE + radeon_crtc->crtc_offset,
 	       (viewport_w << 16) | viewport_h);
@@ -1637,8 +1637,8 @@ static int avivo_crtc_do_set_base(struct drm_crtc *crtc,
 	y &= ~1;
 	WREG32(AVIVO_D1MODE_VIEWPORT_START + radeon_crtc->crtc_offset,
 	       (x << 16) | y);
-	viewport_w = crtc->mode.hdisplay;
-	viewport_h = (crtc->mode.vdisplay + 1) & ~1;
+	viewport_w = crtc->legacy.mode.hdisplay;
+	viewport_h = (crtc->legacy.mode.vdisplay + 1) & ~1;
 	WREG32(AVIVO_D1MODE_VIEWPORT_SIZE + radeon_crtc->crtc_offset,
 	       (viewport_w << 16) | viewport_h);
 
@@ -1812,7 +1812,7 @@ static int radeon_get_shared_nondp_ppll(struct drm_crtc *crtc)
 			}
 			/* for non-DP check the clock */
 			test_adjusted_clock = test_radeon_crtc->adjusted_clock;
-			if ((crtc->mode.clock == test_crtc->mode.clock) &&
+			if ((crtc->legacy.mode.clock == test_crtc->legacy.mode.clock) &&
 			    (adjusted_clock == test_adjusted_clock) &&
 			    (radeon_crtc->ss_enabled == test_radeon_crtc->ss_enabled) &&
 			    (test_radeon_crtc->pll_id != ATOM_PPLL_INVALID))
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 11a492f21157..551367df0057 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -8811,7 +8811,7 @@ static u32 dce8_line_buffer_adjust(struct radeon_device *rdev,
 	 * than 4096, you need use to use 2 display controllers and combine
 	 * them using the stereo blender.
 	 */
-	if (radeon_crtc->base.enabled && mode) {
+	if (radeon_crtc->base.legacy.enabled && mode) {
 		if (mode->crtc_hdisplay < 1920) {
 			tmp = 1;
 			buffer_alloc = 2;
@@ -8843,7 +8843,7 @@ static u32 dce8_line_buffer_adjust(struct radeon_device *rdev,
 		udelay(1);
 	}
 
-	if (radeon_crtc->base.enabled && mode) {
+	if (radeon_crtc->base.legacy.enabled && mode) {
 		switch (tmp) {
 		case 0:
 		default:
@@ -9230,14 +9230,14 @@ static void dce8_program_watermarks(struct radeon_device *rdev,
 				    struct radeon_crtc *radeon_crtc,
 				    u32 lb_size, u32 num_heads)
 {
-	struct drm_display_mode *mode = &radeon_crtc->base.mode;
+	struct drm_display_mode *mode = &radeon_crtc->base.legacy.mode;
 	struct dce8_wm_params wm_low, wm_high;
 	u32 active_time;
 	u32 line_time = 0;
 	u32 latency_watermark_a = 0, latency_watermark_b = 0;
 	u32 tmp, wm_mask;
 
-	if (radeon_crtc->base.enabled && num_heads && mode) {
+	if (radeon_crtc->base.legacy.enabled && num_heads && mode) {
 		active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
 					    (u32)mode->clock);
 		line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
@@ -9374,11 +9374,11 @@ void dce8_bandwidth_update(struct radeon_device *rdev)
 	radeon_update_display_priority(rdev);
 
 	for (i = 0; i < rdev->num_crtc; i++) {
-		if (rdev->mode_info.crtcs[i]->base.enabled)
+		if (rdev->mode_info.crtcs[i]->base.legacy.enabled)
 			num_heads++;
 	}
 	for (i = 0; i < rdev->num_crtc; i++) {
-		mode = &rdev->mode_info.crtcs[i]->base.mode;
+		mode = &rdev->mode_info.crtcs[i]->base.legacy.mode;
 		lb_size = dce8_line_buffer_adjust(rdev, rdev->mode_info.crtcs[i], mode);
 		dce8_program_watermarks(rdev, rdev->mode_info.crtcs[i], lb_size, num_heads);
 	}
diff --git a/drivers/gpu/drm/radeon/evergreen.c b/drivers/gpu/drm/radeon/evergreen.c
index 2cbcf7cfdc3c..e915f61286dc 100644
--- a/drivers/gpu/drm/radeon/evergreen.c
+++ b/drivers/gpu/drm/radeon/evergreen.c
@@ -1851,7 +1851,7 @@ static u32 evergreen_line_buffer_adjust(struct radeon_device *rdev,
 	 * of crtcs.  Ideally for multiple large displays we'd assign them to
 	 * non-linked crtcs for maximum line buffer allocation.
 	 */
-	if (radeon_crtc->base.enabled && mode) {
+	if (radeon_crtc->base.legacy.enabled && mode) {
 		if (other_mode) {
 			tmp = 0; /* 1/2 */
 			buffer_alloc = 1;
@@ -1880,7 +1880,7 @@ static u32 evergreen_line_buffer_adjust(struct radeon_device *rdev,
 		}
 	}
 
-	if (radeon_crtc->base.enabled && mode) {
+	if (radeon_crtc->base.legacy.enabled && mode) {
 		switch (tmp) {
 		case 0:
 		case 4:
@@ -2156,7 +2156,7 @@ static void evergreen_program_watermarks(struct radeon_device *rdev,
 					 struct radeon_crtc *radeon_crtc,
 					 u32 lb_size, u32 num_heads)
 {
-	struct drm_display_mode *mode = &radeon_crtc->base.mode;
+	struct drm_display_mode *mode = &radeon_crtc->base.legacy.mode;
 	struct evergreen_wm_params wm_low, wm_high;
 	u32 dram_channels;
 	u32 active_time;
@@ -2169,7 +2169,7 @@ static void evergreen_program_watermarks(struct radeon_device *rdev,
 	u32 tmp, arb_control3;
 	fixed20_12 a, b, c;
 
-	if (radeon_crtc->base.enabled && num_heads && mode) {
+	if (radeon_crtc->base.legacy.enabled && num_heads && mode) {
 		active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
 					    (u32)mode->clock);
 		line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
@@ -2334,12 +2334,12 @@ void evergreen_bandwidth_update(struct radeon_device *rdev)
 	radeon_update_display_priority(rdev);
 
 	for (i = 0; i < rdev->num_crtc; i++) {
-		if (rdev->mode_info.crtcs[i]->base.enabled)
+		if (rdev->mode_info.crtcs[i]->base.legacy.enabled)
 			num_heads++;
 	}
 	for (i = 0; i < rdev->num_crtc; i += 2) {
-		mode0 = &rdev->mode_info.crtcs[i]->base.mode;
-		mode1 = &rdev->mode_info.crtcs[i+1]->base.mode;
+		mode0 = &rdev->mode_info.crtcs[i]->base.legacy.mode;
+		mode1 = &rdev->mode_info.crtcs[i + 1]->base.legacy.mode;
 		lb_size = evergreen_line_buffer_adjust(rdev, rdev->mode_info.crtcs[i], mode0, mode1);
 		evergreen_program_watermarks(rdev, rdev->mode_info.crtcs[i], lb_size, num_heads);
 		lb_size = evergreen_line_buffer_adjust(rdev, rdev->mode_info.crtcs[i+1], mode1, mode0);
diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c
index 1aa3126ab6d9..6f066656c651 100644
--- a/drivers/gpu/drm/radeon/r100.c
+++ b/drivers/gpu/drm/radeon/r100.c
@@ -1499,7 +1499,7 @@ int r100_cs_packet_parse_vline(struct radeon_cs_parser *p)
 	radeon_crtc = to_radeon_crtc(crtc);
 	crtc_id = radeon_crtc->crtc_id;
 
-	if (!crtc->enabled) {
+	if (!crtc->legacy.enabled) {
 		/* if the CRTC isn't enabled - we need to nop out the wait until */
 		ib[h_idx + 2] = PACKET2(0);
 		ib[h_idx + 3] = PACKET2(0);
@@ -3242,19 +3242,19 @@ void r100_bandwidth_update(struct radeon_device *rdev)
 
 	radeon_update_display_priority(rdev);
 
-	if (rdev->mode_info.crtcs[0]->base.enabled) {
+	if (rdev->mode_info.crtcs[0]->base.legacy.enabled) {
 		const struct drm_framebuffer *fb =
 			rdev->mode_info.crtcs[0]->base.primary->legacy.fb;
 
-		mode1 = &rdev->mode_info.crtcs[0]->base.mode;
+		mode1 = &rdev->mode_info.crtcs[0]->base.legacy.mode;
 		pixel_bytes1 = fb->format->cpp[0];
 	}
 	if (!(rdev->flags & RADEON_SINGLE_CRTC)) {
-		if (rdev->mode_info.crtcs[1]->base.enabled) {
+		if (rdev->mode_info.crtcs[1]->base.legacy.enabled) {
 			const struct drm_framebuffer *fb =
 				rdev->mode_info.crtcs[1]->base.primary->legacy.fb;
 
-			mode2 = &rdev->mode_info.crtcs[1]->base.mode;
+			mode2 = &rdev->mode_info.crtcs[1]->base.legacy.mode;
 			pixel_bytes2 = fb->format->cpp[0];
 		}
 	}
diff --git a/drivers/gpu/drm/radeon/r600_cs.c b/drivers/gpu/drm/radeon/r600_cs.c
index 1b2d31c4d77c..27f6a285c615 100644
--- a/drivers/gpu/drm/radeon/r600_cs.c
+++ b/drivers/gpu/drm/radeon/r600_cs.c
@@ -892,7 +892,7 @@ int r600_cs_common_vline_parse(struct radeon_cs_parser *p,
 	radeon_crtc = to_radeon_crtc(crtc);
 	crtc_id = radeon_crtc->crtc_id;
 
-	if (!crtc->enabled) {
+	if (!crtc->legacy.enabled) {
 		/* CRTC isn't enabled - we need to nop out the WAIT_REG_MEM */
 		ib[h_idx + 2] = PACKET2(0);
 		ib[h_idx + 3] = PACKET2(0);
diff --git a/drivers/gpu/drm/radeon/r600_dpm.c b/drivers/gpu/drm/radeon/r600_dpm.c
index 81d58ef667dd..19b02bc35c09 100644
--- a/drivers/gpu/drm/radeon/r600_dpm.c
+++ b/drivers/gpu/drm/radeon/r600_dpm.c
@@ -162,7 +162,7 @@ u32 r600_dpm_get_vblank_time(struct radeon_device *rdev)
 	if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) {
 		list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 			radeon_crtc = to_radeon_crtc(crtc);
-			if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
+			if (crtc->legacy.enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
 				vblank_in_pixels =
 					radeon_crtc->hw_mode.crtc_htotal *
 					(radeon_crtc->hw_mode.crtc_vblank_end -
@@ -188,7 +188,7 @@ u32 r600_dpm_get_vrefresh(struct radeon_device *rdev)
 	if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) {
 		list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 			radeon_crtc = to_radeon_crtc(crtc);
-			if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
+			if (crtc->legacy.enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
 				vrefresh = drm_mode_vrefresh(&radeon_crtc->hw_mode);
 				break;
 			}
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index dbe0f75cfea7..f3a1f4aa4327 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -90,9 +90,9 @@ static void radeon_property_change_mode(struct drm_encoder *encoder)
 {
 	struct drm_crtc *crtc = encoder->crtc;
 
-	if (crtc && crtc->enabled) {
-		drm_crtc_helper_set_mode(crtc, &crtc->mode,
-					 crtc->x, crtc->y,
+	if (crtc && crtc->legacy.enabled) {
+		drm_crtc_helper_set_mode(crtc, &crtc->legacy.mode,
+					 crtc->legacy.x, crtc->legacy.y,
 					 crtc->primary->legacy.fb);
 	}
 }
diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c
index 3507805b34bc..59bf6542f180 100644
--- a/drivers/gpu/drm/radeon/radeon_cursor.c
+++ b/drivers/gpu/drm/radeon/radeon_cursor.c
@@ -153,8 +153,8 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
 
 	if (ASIC_IS_AVIVO(rdev)) {
 		/* avivo cursor are offset into the total surface */
-		x += crtc->x;
-		y += crtc->y;
+		x += crtc->legacy.x;
+		y += crtc->legacy.y;
 	}
 
 	if (x < 0)
@@ -163,10 +163,11 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
 		yorigin = min(-y, radeon_crtc->max_cursor_height - 1);
 
 	if (!ASIC_IS_AVIVO(rdev)) {
-		x += crtc->x;
-		y += crtc->y;
+		x += crtc->legacy.x;
+		y += crtc->legacy.y;
 	}
-	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y);
+	DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->legacy.x,
+		  crtc->legacy.y);
 
 	/* fixed on DCE6 and newer */
 	if (ASIC_IS_AVIVO(rdev) && !ASIC_IS_DCE6(rdev)) {
@@ -177,20 +178,20 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
 		 * avivo cursor image can't end on 128 pixel boundary or
 		 * go past the end of the frame if both crtcs are enabled
 		 *
-		 * NOTE: It is safe to access crtc->enabled of other crtcs
+		 * NOTE: It is safe to access crtc->legacy.enabled of other crtcs
 		 * without holding either the mode_config lock or the other
 		 * crtc's lock as long as write access to this flag _always_
 		 * grabs all locks.
 		 */
 		list_for_each_entry(crtc_p, &crtc->dev->mode_config.crtc_list, head) {
-			if (crtc_p->enabled)
+			if (crtc_p->legacy.enabled)
 				i++;
 		}
 		if (i > 1) {
 			int cursor_end, frame_end;
 
 			cursor_end = x + w;
-			frame_end = crtc->x + crtc->mode.crtc_hdisplay;
+			frame_end = crtc->legacy.x + crtc->legacy.mode.crtc_hdisplay;
 			if (cursor_end >= frame_end) {
 				w = w - (cursor_end - frame_end);
 				if (!(frame_end & 0x7f))
@@ -206,9 +207,9 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
 		}
 	}
 
-	if (x <= (crtc->x - w) || y <= (crtc->y - radeon_crtc->cursor_height) ||
-	    x >= (crtc->x + crtc->mode.hdisplay) ||
-	    y >= (crtc->y + crtc->mode.vdisplay))
+	if (x <= (crtc->legacy.x - w) || y <= (crtc->legacy.y - radeon_crtc->cursor_height) ||
+	    x >= (crtc->legacy.x + crtc->legacy.mode.hdisplay) ||
+	    y >= (crtc->legacy.y + crtc->legacy.mode.vdisplay))
 		goto out_of_bounds;
 
 	x += xorigin;
@@ -225,10 +226,10 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
 		WREG32(AVIVO_D1CUR_SIZE + radeon_crtc->crtc_offset,
 		       ((w - 1) << 16) | (radeon_crtc->cursor_height - 1));
 	} else {
-		x -= crtc->x;
-		y -= crtc->y;
+		x -= crtc->legacy.x;
+		y -= crtc->legacy.y;
 
-		if (crtc->mode.flags & DRM_MODE_FLAG_DBLSCAN)
+		if (crtc->legacy.mode.flags & DRM_MODE_FLAG_DBLSCAN)
 			y *= 2;
 
 		WREG32(RADEON_CUR_HORZ_VERT_OFF + radeon_crtc->crtc_offset,
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
index 55f80424f514..aac3a1cf3673 100644
--- a/drivers/gpu/drm/radeon/radeon_display.c
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -223,7 +223,7 @@ void radeon_crtc_load_lut(struct drm_crtc *crtc)
 	struct drm_device *dev = crtc->dev;
 	struct radeon_device *rdev = dev->dev_private;
 
-	if (!crtc->enabled)
+	if (!crtc->legacy.enabled)
 		return;
 
 	if (ASIC_IS_DCE5(rdev))
@@ -553,11 +553,11 @@ static int radeon_crtc_page_flip_target(struct drm_crtc *crtc,
 				base &= ~0x7ff;
 			} else {
 				int byteshift = fb->format->cpp[0] * 8 >> 4;
-				int tile_addr = (((crtc->y >> 3) * pitch_pixels +  crtc->x) >> (8 - byteshift)) << 11;
-				base += tile_addr + ((crtc->x << byteshift) % 256) + ((crtc->y % 8) << 8);
+				int tile_addr = (((crtc->legacy.y >> 3) * pitch_pixels +  crtc->legacy.x) >> (8 - byteshift)) << 11;
+				base += tile_addr + ((crtc->legacy.x << byteshift) % 256) + ((crtc->legacy.y % 8) << 8);
 			}
 		} else {
-			int offset = crtc->y * pitch_pixels + crtc->x;
+			int offset = crtc->legacy.y * pitch_pixels + crtc->legacy.x;
 			switch (fb->format->cpp[0] * 8) {
 			case 8:
 			default:
@@ -641,7 +641,7 @@ radeon_crtc_set_config(struct drm_mode_set *set,
 	ret = drm_crtc_helper_set_config(set, ctx);
 
 	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
-		if (crtc->enabled)
+		if (crtc->legacy.enabled)
 			active = true;
 
 	pm_runtime_mark_last_busy(dev->dev);
@@ -1712,9 +1712,9 @@ bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
 			memcpy(&radeon_crtc->native_mode,
 			       &radeon_encoder->native_mode,
 				sizeof(struct drm_display_mode));
-			src_v = crtc->mode.vdisplay;
+			src_v = crtc->legacy.mode.vdisplay;
 			dst_v = radeon_crtc->native_mode.vdisplay;
-			src_h = crtc->mode.hdisplay;
+			src_h = crtc->legacy.mode.hdisplay;
 			dst_h = radeon_crtc->native_mode.hdisplay;
 
 			/* fix up for overscan on hdmi */
@@ -1733,10 +1733,10 @@ bool radeon_crtc_scaling_mode_fixup(struct drm_crtc *crtc,
 				else
 					radeon_crtc->v_border = (mode->vdisplay >> 5) + 16;
 				radeon_crtc->rmx_type = RMX_FULL;
-				src_v = crtc->mode.vdisplay;
-				dst_v = crtc->mode.vdisplay - (radeon_crtc->v_border * 2);
-				src_h = crtc->mode.hdisplay;
-				dst_h = crtc->mode.hdisplay - (radeon_crtc->h_border * 2);
+				src_v = crtc->legacy.mode.vdisplay;
+				dst_v = crtc->legacy.mode.vdisplay - (radeon_crtc->v_border * 2);
+				src_h = crtc->legacy.mode.hdisplay;
+				dst_h = crtc->legacy.mode.hdisplay - (radeon_crtc->h_border * 2);
 			}
 			first = false;
 		} else {
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 900b05d8aa5c..fb1247179e77 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -472,7 +472,7 @@ static int radeon_pmops_runtime_idle(struct device *dev)
 	}
 
 	list_for_each_entry(crtc, &drm_dev->mode_config.crtc_list, head) {
-		if (crtc->enabled) {
+		if (crtc->legacy.enabled) {
 			DRM_DEBUG_DRIVER("failing to power off - crtc active\n");
 			return -EBUSY;
 		}
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
index 6b37b301ea1f..20f0775f63ca 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
@@ -1080,7 +1080,7 @@ static void radeon_crtc_commit(struct drm_crtc *crtc)
 	* Reenable the CRTCs that should be running.
 	*/
 	list_for_each_entry(crtci, &dev->mode_config.crtc_list, head) {
-		if (crtci->enabled)
+		if (crtci->legacy.enabled)
 			radeon_crtc_dpms(crtci, DRM_MODE_DPMS_ON);
 	}
 }
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
index d6aa1a3012a8..0b4f6c766e38 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c
@@ -1538,7 +1538,7 @@ static enum drm_connector_status radeon_legacy_tv_dac_detect(struct drm_encoder
 	/* find out if crtc2 is in use or if this encoder is using it */
 	list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 		struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
-		if ((radeon_crtc->crtc_id == 1) && crtc->enabled) {
+		if ((radeon_crtc->crtc_id == 1) && crtc->legacy.enabled) {
 			if (encoder->crtc != crtc) {
 				return connector_status_disconnected;
 			}
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index b4fb7e70320b..f2f481074b50 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -1783,7 +1783,7 @@ static void radeon_pm_compute_clocks_dpm(struct radeon_device *rdev)
 		list_for_each_entry(crtc,
 				    &ddev->mode_config.crtc_list, head) {
 			radeon_crtc = to_radeon_crtc(crtc);
-			if (crtc->enabled) {
+			if (crtc->legacy.enabled) {
 				rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id);
 				rdev->pm.dpm.new_active_crtc_count++;
 				if (!radeon_crtc->connector)
diff --git a/drivers/gpu/drm/radeon/rs600.c b/drivers/gpu/drm/radeon/rs600.c
index 335df822b330..b8f1e331ae41 100644
--- a/drivers/gpu/drm/radeon/rs600.c
+++ b/drivers/gpu/drm/radeon/rs600.c
@@ -908,10 +908,10 @@ void rs600_bandwidth_update(struct radeon_device *rdev)
 
 	radeon_update_display_priority(rdev);
 
-	if (rdev->mode_info.crtcs[0]->base.enabled)
-		mode0 = &rdev->mode_info.crtcs[0]->base.mode;
-	if (rdev->mode_info.crtcs[1]->base.enabled)
-		mode1 = &rdev->mode_info.crtcs[1]->base.mode;
+	if (rdev->mode_info.crtcs[0]->base.legacy.enabled)
+		mode0 = &rdev->mode_info.crtcs[0]->base.legacy.mode;
+	if (rdev->mode_info.crtcs[1]->base.legacy.enabled)
+		mode1 = &rdev->mode_info.crtcs[1]->base.legacy.mode;
 
 	rs690_line_buffer_adjust(rdev, mode0, mode1);
 
diff --git a/drivers/gpu/drm/radeon/rs690.c b/drivers/gpu/drm/radeon/rs690.c
index 016eb4992803..1d9d8163c206 100644
--- a/drivers/gpu/drm/radeon/rs690.c
+++ b/drivers/gpu/drm/radeon/rs690.c
@@ -274,14 +274,14 @@ static void rs690_crtc_bandwidth_compute(struct radeon_device *rdev,
 					 struct rs690_watermark *wm,
 					 bool low)
 {
-	struct drm_display_mode *mode = &crtc->base.mode;
+	struct drm_display_mode *mode = &crtc->base.legacy.mode;
 	fixed20_12 a, b, c;
 	fixed20_12 pclk, request_fifo_depth, tolerable_latency, estimated_width;
 	fixed20_12 consumption_time, line_time, chunk_time, read_delay_latency;
 	fixed20_12 sclk, core_bandwidth, max_bandwidth;
 	u32 selected_sclk;
 
-	if (!crtc->base.enabled) {
+	if (!crtc->base.legacy.enabled) {
 		/* FIXME: wouldn't it better to set priority mark to maximum */
 		wm->lb_request_fifo_depth = 4;
 		return;
@@ -348,7 +348,7 @@ static void rs690_crtc_bandwidth_compute(struct radeon_device *rdev,
 	 *  LineTime = total number of horizontal pixels
 	 *  pclk = pixel clock period(ns)
 	 */
-	a.full = dfixed_const(crtc->base.mode.crtc_htotal);
+	a.full = dfixed_const(crtc->base.legacy.mode.crtc_htotal);
 	line_time.full = dfixed_mul(a, pclk);
 
 	/* Determine active time
@@ -356,8 +356,8 @@ static void rs690_crtc_bandwidth_compute(struct radeon_device *rdev,
 	 *  hactive = total number of horizontal active pixels
 	 *  htotal = total number of horizontal pixels
 	 */
-	a.full = dfixed_const(crtc->base.mode.crtc_htotal);
-	b.full = dfixed_const(crtc->base.mode.crtc_hdisplay);
+	a.full = dfixed_const(crtc->base.legacy.mode.crtc_htotal);
+	b.full = dfixed_const(crtc->base.legacy.mode.crtc_hdisplay);
 	wm->active_time.full = dfixed_mul(line_time, b);
 	wm->active_time.full = dfixed_div(wm->active_time, a);
 
@@ -440,14 +440,14 @@ static void rs690_crtc_bandwidth_compute(struct radeon_device *rdev,
 	 *  width = viewport width in pixels
 	 */
 	a.full = dfixed_const(16);
-	wm->priority_mark_max.full = dfixed_const(crtc->base.mode.crtc_hdisplay);
+	wm->priority_mark_max.full = dfixed_const(crtc->base.legacy.mode.crtc_hdisplay);
 	wm->priority_mark_max.full = dfixed_div(wm->priority_mark_max, a);
 	wm->priority_mark_max.full = dfixed_ceil(wm->priority_mark_max);
 
 	/* Determine estimated width */
 	estimated_width.full = tolerable_latency.full - wm->worst_case_latency.full;
 	estimated_width.full = dfixed_div(estimated_width, consumption_time);
-	if (dfixed_trunc(estimated_width) > crtc->base.mode.crtc_hdisplay) {
+	if (dfixed_trunc(estimated_width) > crtc->base.legacy.mode.crtc_hdisplay) {
 		wm->priority_mark.full = dfixed_const(10);
 	} else {
 		a.full = dfixed_const(16);
@@ -596,10 +596,10 @@ void rs690_bandwidth_update(struct radeon_device *rdev)
 
 	radeon_update_display_priority(rdev);
 
-	if (rdev->mode_info.crtcs[0]->base.enabled)
-		mode0 = &rdev->mode_info.crtcs[0]->base.mode;
-	if (rdev->mode_info.crtcs[1]->base.enabled)
-		mode1 = &rdev->mode_info.crtcs[1]->base.mode;
+	if (rdev->mode_info.crtcs[0]->base.legacy.enabled)
+		mode0 = &rdev->mode_info.crtcs[0]->base.legacy.mode;
+	if (rdev->mode_info.crtcs[1]->base.legacy.enabled)
+		mode1 = &rdev->mode_info.crtcs[1]->base.legacy.mode;
 	/*
 	 * Set display0/1 priority up in the memory controller for
 	 * modes if the user specifies HIGH for displaypriority
diff --git a/drivers/gpu/drm/radeon/rs780_dpm.c b/drivers/gpu/drm/radeon/rs780_dpm.c
index 24ad12409120..fd8b00164106 100644
--- a/drivers/gpu/drm/radeon/rs780_dpm.c
+++ b/drivers/gpu/drm/radeon/rs780_dpm.c
@@ -60,11 +60,11 @@ static void rs780_get_pm_mode_parameters(struct radeon_device *rdev)
 
 	for (i = 0; i < rdev->num_crtc; i++) {
 		crtc = (struct drm_crtc *)minfo->crtcs[i];
-		if (crtc && crtc->enabled) {
+		if (crtc && crtc->legacy.enabled) {
 			radeon_crtc = to_radeon_crtc(crtc);
 			pi->crtc_id = radeon_crtc->crtc_id;
-			if (crtc->mode.htotal && crtc->mode.vtotal)
-				pi->refresh_rate = drm_mode_vrefresh(&crtc->mode);
+			if (crtc->legacy.mode.htotal && crtc->legacy.mode.vtotal)
+				pi->refresh_rate = drm_mode_vrefresh(&crtc->legacy.mode);
 			break;
 		}
 	}
diff --git a/drivers/gpu/drm/radeon/rv515.c b/drivers/gpu/drm/radeon/rv515.c
index 1b4dfb645585..485365082f0a 100644
--- a/drivers/gpu/drm/radeon/rv515.c
+++ b/drivers/gpu/drm/radeon/rv515.c
@@ -925,14 +925,14 @@ static void rv515_crtc_bandwidth_compute(struct radeon_device *rdev,
 					 struct rv515_watermark *wm,
 					 bool low)
 {
-	struct drm_display_mode *mode = &crtc->base.mode;
+	struct drm_display_mode *mode = &crtc->base.legacy.mode;
 	fixed20_12 a, b, c;
 	fixed20_12 pclk, request_fifo_depth, tolerable_latency, estimated_width;
 	fixed20_12 consumption_time, line_time, chunk_time, read_delay_latency;
 	fixed20_12 sclk;
 	u32 selected_sclk;
 
-	if (!crtc->base.enabled) {
+	if (!crtc->base.legacy.enabled) {
 		/* FIXME: wouldn't it better to set priority mark to maximum */
 		wm->lb_request_fifo_depth = 4;
 		return;
@@ -996,7 +996,7 @@ static void rv515_crtc_bandwidth_compute(struct radeon_device *rdev,
 	 *  LineTime = total number of horizontal pixels
 	 *  pclk = pixel clock period(ns)
 	 */
-	a.full = dfixed_const(crtc->base.mode.crtc_htotal);
+	a.full = dfixed_const(crtc->base.legacy.mode.crtc_htotal);
 	line_time.full = dfixed_mul(a, pclk);
 
 	/* Determine active time
@@ -1004,8 +1004,8 @@ static void rv515_crtc_bandwidth_compute(struct radeon_device *rdev,
 	 *  hactive = total number of horizontal active pixels
 	 *  htotal = total number of horizontal pixels
 	 */
-	a.full = dfixed_const(crtc->base.mode.crtc_htotal);
-	b.full = dfixed_const(crtc->base.mode.crtc_hdisplay);
+	a.full = dfixed_const(crtc->base.legacy.mode.crtc_htotal);
+	b.full = dfixed_const(crtc->base.legacy.mode.crtc_hdisplay);
 	wm->active_time.full = dfixed_mul(line_time, b);
 	wm->active_time.full = dfixed_div(wm->active_time, a);
 
@@ -1059,14 +1059,14 @@ static void rv515_crtc_bandwidth_compute(struct radeon_device *rdev,
 	 *  width = viewport width in pixels
 	 */
 	a.full = dfixed_const(16);
-	wm->priority_mark_max.full = dfixed_const(crtc->base.mode.crtc_hdisplay);
+	wm->priority_mark_max.full = dfixed_const(crtc->base.legacy.mode.crtc_hdisplay);
 	wm->priority_mark_max.full = dfixed_div(wm->priority_mark_max, a);
 	wm->priority_mark_max.full = dfixed_ceil(wm->priority_mark_max);
 
 	/* Determine estimated width */
 	estimated_width.full = tolerable_latency.full - wm->worst_case_latency.full;
 	estimated_width.full = dfixed_div(estimated_width, consumption_time);
-	if (dfixed_trunc(estimated_width) > crtc->base.mode.crtc_hdisplay) {
+	if (dfixed_trunc(estimated_width) > crtc->base.legacy.mode.crtc_hdisplay) {
 		wm->priority_mark.full = wm->priority_mark_max.full;
 	} else {
 		a.full = dfixed_const(16);
@@ -1210,10 +1210,10 @@ void rv515_bandwidth_avivo_update(struct radeon_device *rdev)
 	u32 d1mode_priority_a_cnt, d1mode_priority_b_cnt;
 	u32 d2mode_priority_a_cnt, d2mode_priority_b_cnt;
 
-	if (rdev->mode_info.crtcs[0]->base.enabled)
-		mode0 = &rdev->mode_info.crtcs[0]->base.mode;
-	if (rdev->mode_info.crtcs[1]->base.enabled)
-		mode1 = &rdev->mode_info.crtcs[1]->base.mode;
+	if (rdev->mode_info.crtcs[0]->base.legacy.enabled)
+		mode0 = &rdev->mode_info.crtcs[0]->base.legacy.mode;
+	if (rdev->mode_info.crtcs[1]->base.legacy.enabled)
+		mode1 = &rdev->mode_info.crtcs[1]->base.legacy.mode;
 	rs690_line_buffer_adjust(rdev, mode0, mode1);
 
 	rv515_crtc_bandwidth_compute(rdev, rdev->mode_info.crtcs[0], &wm0_high, false);
@@ -1252,10 +1252,10 @@ void rv515_bandwidth_update(struct radeon_device *rdev)
 
 	radeon_update_display_priority(rdev);
 
-	if (rdev->mode_info.crtcs[0]->base.enabled)
-		mode0 = &rdev->mode_info.crtcs[0]->base.mode;
-	if (rdev->mode_info.crtcs[1]->base.enabled)
-		mode1 = &rdev->mode_info.crtcs[1]->base.mode;
+	if (rdev->mode_info.crtcs[0]->base.legacy.enabled)
+		mode0 = &rdev->mode_info.crtcs[0]->base.legacy.mode;
+	if (rdev->mode_info.crtcs[1]->base.legacy.enabled)
+		mode1 = &rdev->mode_info.crtcs[1]->base.legacy.mode;
 	/*
 	 * Set display0/1 priority up in the memory controller for
 	 * modes if the user specifies HIGH for displaypriority
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 6c95575ce109..2f529e881514 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -1964,7 +1964,7 @@ static u32 dce6_line_buffer_adjust(struct radeon_device *rdev,
 	 * of crtcs.  Ideally for multiple large displays we'd assign them to
 	 * non-linked crtcs for maximum line buffer allocation.
 	 */
-	if (radeon_crtc->base.enabled && mode) {
+	if (radeon_crtc->base.legacy.enabled && mode) {
 		if (other_mode) {
 			tmp = 0; /* 1/2 */
 			buffer_alloc = 1;
@@ -1989,7 +1989,7 @@ static u32 dce6_line_buffer_adjust(struct radeon_device *rdev,
 		udelay(1);
 	}
 
-	if (radeon_crtc->base.enabled && mode) {
+	if (radeon_crtc->base.legacy.enabled && mode) {
 		switch (tmp) {
 		case 0:
 		default:
@@ -2275,7 +2275,7 @@ static void dce6_program_watermarks(struct radeon_device *rdev,
 					 struct radeon_crtc *radeon_crtc,
 					 u32 lb_size, u32 num_heads)
 {
-	struct drm_display_mode *mode = &radeon_crtc->base.mode;
+	struct drm_display_mode *mode = &radeon_crtc->base.legacy.mode;
 	struct dce6_wm_params wm_low, wm_high;
 	u32 dram_channels;
 	u32 active_time;
@@ -2287,7 +2287,7 @@ static void dce6_program_watermarks(struct radeon_device *rdev,
 	u32 tmp, arb_control3;
 	fixed20_12 a, b, c;
 
-	if (radeon_crtc->base.enabled && num_heads && mode) {
+	if (radeon_crtc->base.legacy.enabled && num_heads && mode) {
 		active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
 					    (u32)mode->clock);
 		line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
@@ -2450,12 +2450,12 @@ void dce6_bandwidth_update(struct radeon_device *rdev)
 	radeon_update_display_priority(rdev);
 
 	for (i = 0; i < rdev->num_crtc; i++) {
-		if (rdev->mode_info.crtcs[i]->base.enabled)
+		if (rdev->mode_info.crtcs[i]->base.legacy.enabled)
 			num_heads++;
 	}
 	for (i = 0; i < rdev->num_crtc; i += 2) {
-		mode0 = &rdev->mode_info.crtcs[i]->base.mode;
-		mode1 = &rdev->mode_info.crtcs[i+1]->base.mode;
+		mode0 = &rdev->mode_info.crtcs[i]->base.legacy.mode;
+		mode1 = &rdev->mode_info.crtcs[i + 1]->base.legacy.mode;
 		lb_size = dce6_line_buffer_adjust(rdev, rdev->mode_info.crtcs[i], mode0, mode1);
 		dce6_program_watermarks(rdev, rdev->mode_info.crtcs[i], lb_size, num_heads);
 		lb_size = dce6_line_buffer_adjust(rdev, rdev->mode_info.crtcs[i+1], mode1, mode0);
diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c
index 7e175dbfd892..3bb2d90c100d 100644
--- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c
+++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_crtc.c
@@ -600,7 +600,7 @@ static void rcar_du_crtc_start(struct rcar_du_crtc *rcrtc)
 	 * sync mode (with the HSYNC and VSYNC signals configured as outputs and
 	 * actively driven).
 	 */
-	interlaced = rcrtc->crtc.mode.flags & DRM_MODE_FLAG_INTERLACE;
+	interlaced = rcrtc->crtc.legacy.mode.flags & DRM_MODE_FLAG_INTERLACE;
 	rcar_du_crtc_dsysr_clr_set(rcrtc, DSYSR_TVM_MASK | DSYSR_SCM_MASK,
 				   (interlaced ? DSYSR_SCM_INT_VIDEO : 0) |
 				   DSYSR_TVM_MASTER);
diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
index 2e2f37b9d0a4..df4411a3e6d5 100644
--- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
+++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c
@@ -112,7 +112,7 @@ static void shmob_drm_crtc_setup_geometry(struct shmob_drm_crtc *scrtc)
 	struct drm_crtc *crtc = &scrtc->base;
 	struct shmob_drm_device *sdev = to_shmob_device(crtc->dev);
 	const struct drm_display_info *info = &sdev->connector->display_info;
-	const struct drm_display_mode *mode = &crtc->mode;
+	const struct drm_display_mode *mode = &crtc->legacy.mode;
 	unsigned int i;
 	u32 value;
 
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 14fce5c33e03..a9aa2808364b 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -958,8 +958,8 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
 	dsp_info = (drm_rect_height(dest) - 1) << 16;
 	dsp_info |= (drm_rect_width(dest) - 1) & 0xffff;
 
-	dsp_stx = dest->x1 + crtc->mode.htotal - crtc->mode.hsync_start;
-	dsp_sty = dest->y1 + crtc->mode.vtotal - crtc->mode.vsync_start;
+	dsp_stx = dest->x1 + crtc->legacy.mode.htotal - crtc->legacy.mode.hsync_start;
+	dsp_sty = dest->y1 + crtc->legacy.mode.vtotal - crtc->legacy.mode.vsync_start;
 	dsp_st = dsp_sty << 16 | (dsp_stx & 0xffff);
 
 	if (fb->format->char_per_block[0])
diff --git a/drivers/gpu/drm/sti/sti_crtc.c b/drivers/gpu/drm/sti/sti_crtc.c
index 3c7154f2d5f3..34052c43bda9 100644
--- a/drivers/gpu/drm/sti/sti_crtc.c
+++ b/drivers/gpu/drm/sti/sti_crtc.c
@@ -83,9 +83,9 @@ sti_crtc_mode_set(struct drm_crtc *crtc, struct drm_display_mode *mode)
 		goto pix_error;
 	}
 
-	sti_vtg_set_config(compo->vtg[mixer->id], &crtc->mode);
+	sti_vtg_set_config(compo->vtg[mixer->id], &crtc->legacy.mode);
 
-	if (sti_mixer_active_video_area(mixer, &crtc->mode)) {
+	if (sti_mixer_active_video_area(mixer, &crtc->legacy.mode)) {
 		DRM_ERROR("Can't set active video area\n");
 		goto mixer_error;
 	}
diff --git a/drivers/gpu/drm/sti/sti_cursor.c b/drivers/gpu/drm/sti/sti_cursor.c
index c59fcb4dca32..981218d0db2b 100644
--- a/drivers/gpu/drm/sti/sti_cursor.c
+++ b/drivers/gpu/drm/sti/sti_cursor.c
@@ -277,7 +277,7 @@ static void sti_cursor_atomic_update(struct drm_plane *drm_plane,
 	if (!crtc || !fb)
 		return;
 
-	mode = &crtc->mode;
+	mode = &crtc->legacy.mode;
 	dst_x = newstate->crtc_x;
 	dst_y = newstate->crtc_y;
 
diff --git a/drivers/gpu/drm/sti/sti_gdp.c b/drivers/gpu/drm/sti/sti_gdp.c
index f046f5f7ad25..e431c760558d 100644
--- a/drivers/gpu/drm/sti/sti_gdp.c
+++ b/drivers/gpu/drm/sti/sti_gdp.c
@@ -755,7 +755,7 @@ static void sti_gdp_atomic_update(struct drm_plane *drm_plane,
 		clk_prepare_enable(gdp->clk_pix);
 	}
 
-	mode = &crtc->mode;
+	mode = &crtc->legacy.mode;
 	dst_x = newstate->crtc_x;
 	dst_y = newstate->crtc_y;
 	dst_w = clamp_val(newstate->crtc_w, 0, mode->hdisplay - dst_x);
diff --git a/drivers/gpu/drm/sti/sti_hqvdp.c b/drivers/gpu/drm/sti/sti_hqvdp.c
index 5793cf2cb897..f24d83136692 100644
--- a/drivers/gpu/drm/sti/sti_hqvdp.c
+++ b/drivers/gpu/drm/sti/sti_hqvdp.c
@@ -1150,7 +1150,7 @@ static void sti_hqvdp_atomic_update(struct drm_plane *drm_plane,
 		return;
 	}
 
-	mode = &crtc->mode;
+	mode = &crtc->legacy.mode;
 	dst_x = newstate->crtc_x;
 	dst_y = newstate->crtc_y;
 	dst_w = clamp_val(newstate->crtc_w, 0, mode->hdisplay - dst_x);
diff --git a/drivers/gpu/drm/sti/sti_tvout.c b/drivers/gpu/drm/sti/sti_tvout.c
index e714c232026c..f8ff059f61fc 100644
--- a/drivers/gpu/drm/sti/sti_tvout.c
+++ b/drivers/gpu/drm/sti/sti_tvout.c
@@ -633,7 +633,7 @@ static void sti_dvo_encoder_enable(struct drm_encoder *encoder)
 {
 	struct sti_tvout *tvout = to_sti_tvout(encoder);
 
-	tvout_preformatter_set_matrix(tvout, &encoder->crtc->mode);
+	tvout_preformatter_set_matrix(tvout, &encoder->crtc->legacy.mode);
 
 	tvout_dvo_start(tvout, sti_crtc_is_main(encoder->crtc));
 }
@@ -683,7 +683,7 @@ static void sti_hda_encoder_enable(struct drm_encoder *encoder)
 {
 	struct sti_tvout *tvout = to_sti_tvout(encoder);
 
-	tvout_preformatter_set_matrix(tvout, &encoder->crtc->mode);
+	tvout_preformatter_set_matrix(tvout, &encoder->crtc->legacy.mode);
 
 	tvout_hda_start(tvout, sti_crtc_is_main(encoder->crtc));
 }
@@ -734,7 +734,7 @@ static void sti_hdmi_encoder_enable(struct drm_encoder *encoder)
 {
 	struct sti_tvout *tvout = to_sti_tvout(encoder);
 
-	tvout_preformatter_set_matrix(tvout, &encoder->crtc->mode);
+	tvout_preformatter_set_matrix(tvout, &encoder->crtc->legacy.mode);
 
 	tvout_hdmi_start(tvout, sti_crtc_is_main(encoder->crtc));
 }
diff --git a/drivers/gpu/drm/sti/sti_vid.c b/drivers/gpu/drm/sti/sti_vid.c
index 2d818397918d..5d3bb49f93f9 100644
--- a/drivers/gpu/drm/sti/sti_vid.c
+++ b/drivers/gpu/drm/sti/sti_vid.c
@@ -140,7 +140,7 @@ void sti_vid_commit(struct sti_vid *vid,
 		    struct drm_plane_state *state)
 {
 	struct drm_crtc *crtc = state->crtc;
-	struct drm_display_mode *mode = &crtc->mode;
+	struct drm_display_mode *mode = &crtc->legacy.mode;
 	int dst_x = state->crtc_x;
 	int dst_y = state->crtc_y;
 	int dst_w = clamp_val(state->crtc_w, 0, mode->hdisplay - dst_x);
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
index b5f60b2b2d0e..3b7e7eec3239 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
@@ -71,10 +71,10 @@ static void set_scanout(struct drm_crtc *crtc, struct drm_framebuffer *fb)
 	gem = drm_fb_dma_get_gem_obj(fb, 0);
 
 	start = gem->dma_addr + fb->offsets[0] +
-		crtc->y * fb->pitches[0] +
-		crtc->x * fb->format->cpp[0];
+		crtc->legacy.y * fb->pitches[0] +
+		crtc->legacy.x * fb->format->cpp[0];
 
-	end = start + (crtc->mode.vdisplay * fb->pitches[0]);
+	end = start + (crtc->legacy.mode.vdisplay * fb->pitches[0]);
 
 	/* Write LCDC_DMA_FB_BASE_ADDR_0_REG and LCDC_DMA_FB_CEILING_ADDR_0_REG
 	 * with a single insruction, if available. This should make it more
@@ -211,7 +211,7 @@ static void tilcdc_crtc_set_clk(struct drm_crtc *crtc)
 	clkdiv = 2; /* first try using a standard divider of 2 */
 
 	/* mode.clock is in KHz, set_rate wants parameter in Hz */
-	pclk_rate = crtc->mode.clock * 1000;
+	pclk_rate = crtc->legacy.mode.clock * 1000;
 
 	ret = clk_set_rate(priv->clk, pclk_rate * clkdiv);
 	clk_rate = clk_get_rate(priv->clk);
@@ -252,7 +252,7 @@ static void tilcdc_crtc_set_clk(struct drm_crtc *crtc)
 	tilcdc_crtc->lcd_fck_rate = clk_rate;
 
 	DBG("lcd_clk=%u, mode clock=%d, div=%u",
-	    tilcdc_crtc->lcd_fck_rate, crtc->mode.clock, clkdiv);
+	    tilcdc_crtc->lcd_fck_rate, crtc->legacy.mode.clock, clkdiv);
 
 	/* Configure the LCD clock divisor. */
 	tilcdc_write(dev, LCDC_CTRL_REG, LCDC_CLK_DIVISOR(clkdiv) |
diff --git a/drivers/gpu/drm/tiny/arcpgu.c b/drivers/gpu/drm/tiny/arcpgu.c
index 81abedec435d..d9befd81de4a 100644
--- a/drivers/gpu/drm/tiny/arcpgu.c
+++ b/drivers/gpu/drm/tiny/arcpgu.c
@@ -343,7 +343,7 @@ static int arcpgu_show_pxlclock(struct seq_file *m, void *arg)
 	struct drm_device *drm = node->minor->dev;
 	struct arcpgu_drm_private *arcpgu = dev_to_arcpgu(drm);
 	unsigned long clkrate = clk_get_rate(arcpgu->clk);
-	unsigned long mode_clock = arcpgu->pipe.crtc.mode.crtc_clock * 1000;
+	unsigned long mode_clock = arcpgu->pipe.crtc.legacy.mode.crtc_clock * 1000;
 
 	seq_printf(m, "hw  : %lu\n", clkrate);
 	seq_printf(m, "mode: %lu\n", mode_clock);
diff --git a/drivers/gpu/drm/vboxvideo/vbox_mode.c b/drivers/gpu/drm/vboxvideo/vbox_mode.c
index 9ff3bade9795..9ce2a8ffcff2 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_mode.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_mode.c
@@ -56,7 +56,7 @@ static void vbox_do_modeset(struct drm_crtc *crtc)
 	 * screen is programmed this way, so try to fake it.
 	 */
 	if (vbox_crtc->crtc_id == 0 && fb &&
-	    vbox_crtc->fb_offset / pitch < 0xffff - crtc->y &&
+	    vbox_crtc->fb_offset / pitch < 0xffff - crtc->legacy.y &&
 	    vbox_crtc->fb_offset % (bpp / 8) == 0) {
 		vbox_write_ioport(VBE_DISPI_INDEX_XRES, width);
 		vbox_write_ioport(VBE_DISPI_INDEX_YRES, height);
diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
index a382dc4654bd..0103f17e22cc 100644
--- a/drivers/gpu/drm/vc4/vc4_dpi.c
+++ b/drivers/gpu/drm/vc4/vc4_dpi.c
@@ -134,7 +134,7 @@ static void vc4_dpi_encoder_disable(struct drm_encoder *encoder)
 static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
 {
 	struct drm_device *dev = encoder->dev;
-	struct drm_display_mode *mode = &encoder->crtc->mode;
+	struct drm_display_mode *mode = &encoder->crtc->legacy.mode;
 	struct vc4_dpi *dpi = to_vc4_dpi(encoder);
 	struct drm_connector_list_iter conn_iter;
 	struct drm_connector *connector = NULL, *connector_scan;
diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
index ba6e86d62a77..907dea3e71df 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
@@ -1342,8 +1342,8 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
 
 	/* crtc_* are already clipped coordinates. */
 	covers_screen = vc4_state->crtc_x == 0 && vc4_state->crtc_y == 0 &&
-			vc4_state->crtc_w == state->crtc->mode.hdisplay &&
-			vc4_state->crtc_h == state->crtc->mode.vdisplay;
+			vc4_state->crtc_w == state->crtc->legacy.mode.hdisplay &&
+			vc4_state->crtc_h == state->crtc->legacy.mode.vdisplay;
 	/* Background fill might be necessary when the plane has per-pixel
 	 * alpha content or a non-opaque plane alpha and could blend from the
 	 * background or does not cover the entire screen.
diff --git a/drivers/gpu/drm/virtio/virtgpu_display.c b/drivers/gpu/drm/virtio/virtgpu_display.c
index 64baf2f22d9f..9cf099a600f7 100644
--- a/drivers/gpu/drm/virtio/virtgpu_display.c
+++ b/drivers/gpu/drm/virtio/virtgpu_display.c
@@ -90,8 +90,8 @@ static void virtio_gpu_crtc_mode_set_nofb(struct drm_crtc *crtc)
 	struct virtio_gpu_output *output = drm_crtc_to_virtio_gpu_output(crtc);
 
 	virtio_gpu_cmd_set_scanout(vgdev, output->index, 0,
-				   crtc->mode.hdisplay,
-				   crtc->mode.vdisplay, 0, 0);
+				   crtc->legacy.mode.hdisplay,
+				   crtc->legacy.mode.vdisplay, 0, 0);
 	virtio_gpu_notify(vgdev);
 }
 
diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c
index 57a5769fc994..a7f8b1da6e85 100644
--- a/drivers/gpu/drm/vkms/vkms_composer.c
+++ b/drivers/gpu/drm/vkms/vkms_composer.c
@@ -187,7 +187,7 @@ static void blend(struct vkms_writeback_job *wb,
 
 	const struct pixel_argb_u16 background_color = { .a = 0xffff };
 
-	size_t crtc_y_limit = crtc_state->base.crtc->mode.vdisplay;
+	size_t crtc_y_limit = crtc_state->base.crtc->legacy.mode.vdisplay;
 
 	/*
 	 * The planes are composed line-by-line to avoid heavy memory usage. It is a necessary
@@ -270,7 +270,7 @@ static int compose_active_planes(struct vkms_writeback_job *active_wb,
 	if (WARN_ON(check_format_funcs(crtc_state, active_wb)))
 		return -EINVAL;
 
-	line_width = crtc_state->base.crtc->mode.hdisplay;
+	line_width = crtc_state->base.crtc->legacy.mode.hdisplay;
 	stage_buffer.n_pixels = line_width;
 	output_buffer.n_pixels = line_width;
 
diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
index a40295c18b48..780681ea77e4 100644
--- a/drivers/gpu/drm/vkms/vkms_crtc.c
+++ b/drivers/gpu/drm/vkms/vkms_crtc.c
@@ -64,7 +64,7 @@ static int vkms_enable_vblank(struct drm_crtc *crtc)
 	struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
 	struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
 
-	drm_calc_timestamping_constants(crtc, &crtc->mode);
+	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);
 
 	hrtimer_init(&out->vblank_hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	out->vblank_hrtimer.function = &vkms_vblank_simulate;
diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
index bc724cbd5e3a..27164cddb94d 100644
--- a/drivers/gpu/drm/vkms/vkms_writeback.c
+++ b/drivers/gpu/drm/vkms/vkms_writeback.c
@@ -131,8 +131,8 @@ static void vkms_wb_atomic_commit(struct drm_connector *conn,
 	struct drm_connector_state *conn_state = wb_conn->base.state;
 	struct vkms_crtc_state *crtc_state = output->composer_state;
 	struct drm_framebuffer *fb = connector_state->writeback_job->fb;
-	u16 crtc_height = crtc_state->base.crtc->mode.vdisplay;
-	u16 crtc_width = crtc_state->base.crtc->mode.hdisplay;
+	u16 crtc_height = crtc_state->base.crtc->legacy.mode.vdisplay;
+	u16 crtc_width = crtc_state->base.crtc->legacy.mode.hdisplay;
 	struct vkms_writeback_job *active_wb;
 	struct vkms_frame_info *wb_frame_info;
 	u32 wb_format = fb->format->format;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index 288ed0bb75cb..cf7af685b120 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -2352,10 +2352,10 @@ int vmw_kms_helper_dirty(struct vmw_private *dev_priv,
 
 	for (k = 0; k < num_units; k++) {
 		struct vmw_display_unit *unit = units[k];
-		s32 crtc_x = unit->crtc.x;
-		s32 crtc_y = unit->crtc.y;
-		s32 crtc_width = unit->crtc.mode.hdisplay;
-		s32 crtc_height = unit->crtc.mode.vdisplay;
+		s32 crtc_x = unit->crtc.legacy.x;
+		s32 crtc_y = unit->crtc.legacy.y;
+		s32 crtc_width = unit->crtc.legacy.mode.hdisplay;
+		s32 crtc_height = unit->crtc.legacy.mode.vdisplay;
 		const struct drm_clip_rect *clips_ptr = clips;
 		const struct drm_vmw_rect *vclips_ptr = vclips;
 
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
index 39949e0a493f..91a635d96a39 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c
@@ -92,8 +92,10 @@ static int vmw_ldu_commit_list(struct vmw_private *dev_priv)
 		int w = 0, h = 0;
 		list_for_each_entry(entry, &lds->active, active) {
 			crtc = &entry->base.crtc;
-			w = max(w, crtc->x + crtc->mode.hdisplay);
-			h = max(h, crtc->y + crtc->mode.vdisplay);
+			w = max(w,
+				crtc->legacy.x + crtc->legacy.mode.hdisplay);
+			h = max(h,
+				crtc->legacy.y + crtc->legacy.mode.vdisplay);
 		}
 
 		if (crtc == NULL)
@@ -123,10 +125,14 @@ static int vmw_ldu_commit_list(struct vmw_private *dev_priv)
 
 		vmw_write(dev_priv, SVGA_REG_DISPLAY_ID, i);
 		vmw_write(dev_priv, SVGA_REG_DISPLAY_IS_PRIMARY, !i);
-		vmw_write(dev_priv, SVGA_REG_DISPLAY_POSITION_X, crtc->x);
-		vmw_write(dev_priv, SVGA_REG_DISPLAY_POSITION_Y, crtc->y);
-		vmw_write(dev_priv, SVGA_REG_DISPLAY_WIDTH, crtc->mode.hdisplay);
-		vmw_write(dev_priv, SVGA_REG_DISPLAY_HEIGHT, crtc->mode.vdisplay);
+		vmw_write(dev_priv, SVGA_REG_DISPLAY_POSITION_X,
+			  crtc->legacy.x);
+		vmw_write(dev_priv, SVGA_REG_DISPLAY_POSITION_Y,
+			  crtc->legacy.y);
+		vmw_write(dev_priv, SVGA_REG_DISPLAY_WIDTH,
+			  crtc->legacy.mode.hdisplay);
+		vmw_write(dev_priv, SVGA_REG_DISPLAY_HEIGHT,
+			  crtc->legacy.mode.vdisplay);
 
 		i++;
 	}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index 0f4bfd98480a..5f380e288136 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -249,10 +249,11 @@ static void vmw_sou_crtc_mode_set_nofb(struct drm_crtc *crtc)
 		x = vmw_conn_state->gui_x;
 		y = vmw_conn_state->gui_y;
 
-		ret = vmw_sou_fifo_create(dev_priv, sou, x, y, &crtc->mode);
+		ret = vmw_sou_fifo_create(dev_priv, sou, x, y,
+					  &crtc->legacy.mode);
 		if (ret)
 			DRM_ERROR("Failed to define Screen Object %dx%d\n",
-				  crtc->x, crtc->y);
+				  crtc->legacy.x, crtc->legacy.y);
 
 	} else {
 		sou->buffer = NULL;
@@ -993,8 +994,8 @@ static void vmw_sou_surface_fifo_commit(struct vmw_kms_dirty *dirty)
 	struct vmw_kms_sou_surface_dirty *sdirty =
 		container_of(dirty, typeof(*sdirty), base);
 	struct vmw_kms_sou_dirty_cmd *cmd = dirty->cmd;
-	s32 trans_x = dirty->unit->crtc.x - sdirty->dst_x;
-	s32 trans_y = dirty->unit->crtc.y - sdirty->dst_y;
+	s32 trans_x = dirty->unit->crtc.legacy.x - sdirty->dst_x;
+	s32 trans_y = dirty->unit->crtc.legacy.y - sdirty->dst_y;
 	size_t region_size = dirty->num_hits * sizeof(SVGASignedRect);
 	SVGASignedRect *blit = (SVGASignedRect *) &cmd[1];
 	int i;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index fab155a68054..6a4294fcf852 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
@@ -406,11 +406,11 @@ static void vmw_stdu_crtc_mode_set_nofb(struct drm_crtc *crtc)
 	y = vmw_conn_state->gui_y;
 
 	vmw_svga_enable(dev_priv);
-	ret = vmw_stdu_define_st(dev_priv, stdu, &crtc->mode, x, y);
+	ret = vmw_stdu_define_st(dev_priv, stdu, &crtc->legacy.mode, x, y);
 
 	if (ret)
 		DRM_ERROR("Failed to define Screen Target of size %dx%d\n",
-			  crtc->x, crtc->y);
+			  crtc->legacy.x, crtc->legacy.y);
 }
 
 static void vmw_stdu_crtc_atomic_disable(struct drm_crtc *crtc,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c
index 8651b788e98b..964474ef5dca 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c
@@ -288,7 +288,7 @@ vmw_vkms_enable_vblank(struct drm_crtc *crtc)
 	if (!vmw->vkms_enabled)
 		return -EINVAL;
 
-	drm_calc_timestamping_constants(crtc, &crtc->mode);
+	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);
 
 	hrtimer_init(&du->vkms.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	du->vkms.timer.function = &vmw_vkms_vblank_simulate;
diff --git a/drivers/gpu/drm/xen/xen_drm_front_kms.c b/drivers/gpu/drm/xen/xen_drm_front_kms.c
index dfa78a49a6d9..be3e6a52de0f 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_kms.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_kms.c
@@ -116,7 +116,7 @@ static void display_enable(struct drm_simple_display_pipe *pipe,
 	if (!drm_dev_enter(pipe->crtc.dev, &idx))
 		return;
 
-	ret = xen_drm_front_mode_set(pipeline, crtc->x, crtc->y,
+	ret = xen_drm_front_mode_set(pipeline, crtc->legacy.x, crtc->legacy.y,
 				     fb->width, fb->height,
 				     fb->format->cpp[0] * 8,
 				     xen_drm_front_fb_to_cookie(fb));
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 8b48a1974da3..d82d2035124a 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -1002,25 +1002,45 @@ struct drm_crtc {
 	 */
 	int cursor_y;
 
-	/**
-	 * @enabled:
-	 *
-	 * Is this CRTC enabled? Should only be used by legacy drivers, atomic
-	 * drivers should instead consult &drm_crtc_state.enable and
-	 * &drm_crtc_state.active. Atomic drivers can update this by calling
-	 * drm_atomic_helper_update_legacy_modeset_state().
-	 */
-	bool enabled;
-
-	/**
-	 * @mode:
-	 *
-	 * Current mode timings. Should only be used by legacy drivers, atomic
-	 * drivers should instead consult &drm_crtc_state.mode. Atomic drivers
-	 * can update this by calling
-	 * drm_atomic_helper_update_legacy_modeset_state().
-	 */
-	struct drm_display_mode mode;
+	struct {
+		/**
+		 * @enabled:
+		 *
+		 * Is this CRTC enabled? Should only be used by legacy drivers, atomic
+		 * drivers should instead consult &drm_crtc_state.enable and
+		 * &drm_crtc_state.active. Atomic drivers can update this by calling
+		 * drm_atomic_helper_update_legacy_modeset_state().
+		 */
+		bool enabled;
+
+		/**
+		 * @mode:
+		 *
+		 * Current mode timings. Should only be used by legacy drivers, atomic
+		 * drivers should instead consult &drm_crtc_state.mode. Atomic drivers
+		 * can update this by calling
+		 * drm_atomic_helper_update_legacy_modeset_state().
+		 */
+		struct drm_display_mode mode;
+
+		/**
+		 * @x:
+		 * x position on screen. Should only be used by legacy drivers, atomic
+		 * drivers should look at &drm_plane_state.crtc_x of the primary plane
+		 * instead. Updated by calling
+		 * drm_atomic_helper_update_legacy_modeset_state().
+		 */
+		int x;
+
+		/**
+		 * @y:
+		 * y position on screen. Should only be used by legacy drivers, atomic
+		 * drivers should look at &drm_plane_state.crtc_y of the primary plane
+		 * instead. Updated by calling
+		 * drm_atomic_helper_update_legacy_modeset_state().
+		 */
+		int y;
+	} legacy;
 
 	/**
 	 * @hwmode:
@@ -1038,23 +1058,6 @@ struct drm_crtc {
 	 */
 	struct drm_display_mode hwmode;
 
-	/**
-	 * @x:
-	 * x position on screen. Should only be used by legacy drivers, atomic
-	 * drivers should look at &drm_plane_state.crtc_x of the primary plane
-	 * instead. Updated by calling
-	 * drm_atomic_helper_update_legacy_modeset_state().
-	 */
-	int x;
-	/**
-	 * @y:
-	 * y position on screen. Should only be used by legacy drivers, atomic
-	 * drivers should look at &drm_plane_state.crtc_y of the primary plane
-	 * instead. Updated by calling
-	 * drm_atomic_helper_update_legacy_modeset_state().
-	 */
-	int y;
-
 	/** @funcs: CRTC control functions */
 	const struct drm_crtc_funcs *funcs;
 
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 20:02:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 20:02:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809006.1221106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw5YB-00062n-5D; Wed, 02 Oct 2024 20:02:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809006.1221106; Wed, 02 Oct 2024 20:02: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 1sw5YB-00062g-1i; Wed, 02 Oct 2024 20:02:19 +0000
Received: by outflank-mailman (input) for mailman id 809006;
 Wed, 02 Oct 2024 20:02: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=N+S4=Q6=linuxfoundation.org=torvalds@srs-se1.protection.inumbo.net>)
 id 1sw5Y9-00062a-Bx
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 20:02:17 +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 3865613a-80f9-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 22:02:15 +0200 (CEST)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-53992157528so162081e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 13:02:15 -0700 (PDT)
Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com.
 [209.85.167.47]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5389fd5f5d1sm1983619e87.114.2024.10.02.13.02.09
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 13:02:13 -0700 (PDT)
Received: by mail-lf1-f47.google.com with SMTP id
 2adb3069b0e04-53992157528so161959e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 13:02:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3865613a-80f9-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linux-foundation.org; s=google; t=1727899335; x=1728504135; 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=felyUMZ1epn3qYN0qQZjWDzIrXK7nsXRUmOCiXehfgQ=;
        b=XF9zsgj6bnmeQOuIr7l9cEdtTeQSeSCQPzDqt/+6feU4tl9Nv3nmcmwakZNfD2H0w2
         OMEru+LK545dmNFz7Y3xFBukxtq5po+Vkp91ukjbnm7Mpm3W2m7FYYiPF38REa7CpmSD
         g9TN1Gj4dl6W4cCujwZ9EKzM1Rzz6LybiQJDA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727899335; x=1728504135;
        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=felyUMZ1epn3qYN0qQZjWDzIrXK7nsXRUmOCiXehfgQ=;
        b=aRkKelNPfzp6btusntzmX21Oyn81/EB4RCQ8U4ySo9d++idIYf3rKO/xfgJfi2t1b0
         CQAvG1qfHwVP9MD6qV4X8bv/KB6FQk3Jkoe5w6HnAeSLqWD5/BBWxxpGnI3mWF8kG0tS
         ftWGIll6PHu6/luRBi/osZVTIWkN0yQcgzZ6Yakgvm1YbuKlyuW1gJSZHUkF3tuzCFLD
         uLAtO5pJKACXA1EKl5IdIVeWy73wQbdYMv09GpNK1EB7RTEI8E7bOeN5sMHzR1mkONUE
         cGp7NjVWI9PQxSo3kwGmNHrT60dUcZWvJQKA5T5sTrJ8r4OmXpEzt7ClJbqyI3WKzuQ+
         VzQA==
X-Forwarded-Encrypted: i=1; AJvYcCUTbtBtYjT2srNDhhFO5RQ25vcRYN1uiU3fgHmhfdkKZMUrbmD5VNnBqWyV2lyDfFFI71DC+tzoQ7M=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw0RessRlkrXRnbllRh4o32TJQQ2dVyY8U08GAqblPI/j3iAZ6j
	pg5AY7jxWz1oENaruYAfriMINDR98r4l6J9MPhVvTnNWrdF7qyY6cl9N1UPcDqQdzf2dmfH2O8x
	QP9evxQ==
X-Google-Smtp-Source: AGHT+IGwHDPxC44I1CDtJXRhcNBt7uLVO4GK31CwAvVdJyhqnKNqz/17Gxetu8NkTQEpYBPUTqccBA==
X-Received: by 2002:a05:6512:31cd:b0:533:4676:c21c with SMTP id 2adb3069b0e04-539a079f587mr2834173e87.44.1727899334641;
        Wed, 02 Oct 2024 13:02:14 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCXLDA8jnqNqmfbJkxAO5MCbO59uSypho9Mhddhh7gDWudJp8OrYcl2UD7z+o6oi8D9ZMfUdB4HVhG8=@lists.xenproject.org
X-Received: by 2002:a05:6512:e9e:b0:535:6795:301a with SMTP id
 2adb3069b0e04-539a079eb59mr2506573e87.47.1727899328912; Wed, 02 Oct 2024
 13:02:08 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
In-Reply-To: <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Wed, 2 Oct 2024 13:01:52 -0700
X-Gmail-Original-Message-ID: <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
Message-ID: <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: Ard Biesheuvel <ardb@kernel.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, 
	x86@kernel.org, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, 
	Uros Bizjak <ubizjak@gmail.com>, Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, 
	Christoph Lameter <cl@linux.com>, Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"

On Wed, 2 Oct 2024 at 08:31, Ard Biesheuvel <ardb@kernel.org> wrote:
>
> I guess you are referring to the use of a GOT? That is a valid
> concern, but it does not apply here. With hidden visibility and
> compiler command line options like -mdirect-access-extern, all emitted
> symbol references are direct.

I absolutely hate GOT entries. We definitely shouldn't ever do
anything that causes them on x86-64.

I'd much rather just do boot-time relocation, and I don't think the
"we run code at a different location than we told the linker" is an
arghument against it.

Please, let's make sure we never have any of the global offset table horror.

Yes, yes, you can't avoid them on other architectures.

That said, doing changes like changing "mov $sym" to "lea sym(%rip)" I
feel are a complete no-brainer and should be done regardless of any
other code generation issues.

Let's not do relocation for no good reason.

             Linus


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 20:09:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 20:09:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809009.1221116 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw5ex-0006sn-PC; Wed, 02 Oct 2024 20:09:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809009.1221116; Wed, 02 Oct 2024 20:09: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 1sw5ex-0006sX-MQ; Wed, 02 Oct 2024 20:09:19 +0000
Received: by outflank-mailman (input) for mailman id 809009;
 Wed, 02 Oct 2024 20:09: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw5ew-0006rI-3a
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 20:09:18 +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 33c27f29-80fa-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 22:09:17 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3f28b6so128046a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 13:09:17 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c882405bb8sm7939677a12.12.2024.10.02.13.09.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 13:09:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 33c27f29-80fa-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727899756; x=1728504556; 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=8mpxVnw2rtIsaSdMnuwMlxzK800socadVEux++4FjuU=;
        b=j7oTTqofEU6gw4rzqDrJGmf75cKv3AVEKjlT1eav3zIoQyg7fzEGyqAegrqF7n+9k6
         Ya5x3X7B4WvdLBpYZu39H754pBkJ6SMFdn/KAlRUB9vD/wLDxz5v19j+TnJmfB0AksOl
         ++mHpEAapbOojB7mjHjg81lNzL0JX00cPgN48=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727899756; x=1728504556;
        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=8mpxVnw2rtIsaSdMnuwMlxzK800socadVEux++4FjuU=;
        b=L2ifUeo5SLFdBhZkJV8QCVQNaei4Ca6JFAcDucnjqWE5gKrnR38eocqkqp/+QR2lZW
         2nh0eVwN7Pb6g/hhL3PIV1PTVzo2swukUFyqtDPoSC6SdTcMHbOanxA6iG5nwYo09nFV
         3X6DzMCZXS8NFPRMSTYooGp7R3E8FpIL+wrlk04Vx/5AycQmtwCLDiCsZH8u2XKbFdax
         OT6I5BfjVp6Nq6EgF1VBu9Fb7hOzxvB2tI7/u6nrkonZ1CL/YBSWh5lc8vLeUSkGvSWi
         qTANpDWcC4SFXzJe7Bikt7YxL5yFQDwi/5aCsUmp3sLPCDzybcYvEZ2IYMvTM8QBof/I
         DSxw==
X-Gm-Message-State: AOJu0YxvLiJgC0UTTEt7XkzCOt957vMFPVNRGUHBSmi/w8zRh1C+yJHU
	LIlz4UWjDqr1JLdJa6MHqs5+XWbOtbEz2OWmHzLKIDQoWQjlA6cRM23VD91Z2mY+e9Qut8JmqbV
	hz6U=
X-Google-Smtp-Source: AGHT+IEixX0Bsej9XM12xmY27f0Lzd6EtV/5EFDvjGApFVel/3DcNQCYom44RLt6QUltjbo5CfWTAA==
X-Received: by 2002:a05:6402:4402:b0:5c5:c060:420d with SMTP id 4fb4d7f45d1cf-5c8b1b6ffebmr3405946a12.25.1727899756072;
        Wed, 02 Oct 2024 13:09:16 -0700 (PDT)
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>
Subject: [PATCH] x86/boot: Convert remaining uses of the legacy ALIGN
Date: Wed,  2 Oct 2024 21:09:13 +0100
Message-Id: <20241002200913.1963443-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

There are only two remaining standalone uses the legacy ALIGN macro.

Drop these by switching the .incbin's over to using FUNC()/END() which has
alignment handled internally.  While the incbin's aren't technically one
single function, they're as good as one single function.

Finally, expand ALIGN inside the legacy ENTRY() macro in order to remove ALIGN
itself.

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>

before/after builds show no change at all, except for
cmdline_parse_early()/reloc() ELF metadata.
---
 xen/arch/x86/boot/head.S | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 6a06f6c9ea46..837740477c6e 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -10,9 +10,8 @@
 #include <asm/cpufeature.h>
 #include <public/elfnote.h>
 
-#define ALIGN .align CONFIG_FUNCTION_ALIGNMENT, CODE_FILL
 #define ENTRY(name)                             \
-  ALIGN;                                        \
+  .align CONFIG_FUNCTION_ALIGNMENT, CODE_FILL;  \
   GLOBAL(name)
 #define GLOBAL(name)                            \
   .globl name;                                  \
@@ -850,13 +849,13 @@ trampoline_setup:
          * cmdline and reloc are written in C, and linked to be 32bit PIC with
          * entrypoints at 0 and using the fastcall convention.
          */
-        ALIGN
-cmdline_parse_early:
+FUNC_LOCAL(cmdline_parse_early)
         .incbin "cmdline.bin"
+END(cmdline_parse_early)
 
-        ALIGN
-reloc:
+FUNC_LOCAL(reloc)
         .incbin "reloc.bin"
+END(reloc)
 
 ENTRY(trampoline_start)
 #include "trampoline.S"

base-commit: 41190d2ceb03b12ffc17a66c04de519c26a6052a
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 20:42:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 20:42:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809015.1221126 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw6Au-0003cQ-3Q; Wed, 02 Oct 2024 20:42:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809015.1221126; Wed, 02 Oct 2024 20: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 1sw6Au-0003cJ-0j; Wed, 02 Oct 2024 20:42:20 +0000
Received: by outflank-mailman (input) for mailman id 809015;
 Wed, 02 Oct 2024 20: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw6As-0003cD-5V
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 20:42:18 +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 cf30a3c8-80fe-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 22:42:16 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b4e0so182981a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 13:42:15 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88694e9f9sm6836931a12.16.2024.10.02.13.42.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 13:42:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf30a3c8-80fe-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727901735; x=1728506535; 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=w0XKkhuv2WRNftd4ru60jUn4l6VxTheDHRufkV2dNHQ=;
        b=dLrdWVsfTauE/pQElH/iN+X9mG5HffCl3FDNUoFKsDmFBFnDhkX4EYE5il+1xs1tra
         lll1CFQ198vVF+1kU2HnWCZqFXXKNAT5jbjuY2xd1pz6UafctiYKERVGlYr5jn9fQLL6
         xNlKoM3NwI6++emdSFoKd597oj8WoDbU2Pwtg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727901735; x=1728506535;
        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=w0XKkhuv2WRNftd4ru60jUn4l6VxTheDHRufkV2dNHQ=;
        b=DTOePNnO6AqYgTVOYa5CQJruDlm/c5vakN8zmVZPRf0/M9oXv/s1+Zgka0BHHGlNBY
         Pax+mRVTkk6i1w0MIjr2qJeKvnhUAzck7OQ6fCqbXA79lY/KdqB1RQROhIFaGaLOqYZv
         9o8bLdF/S/XaZCtDj8hfNL4vKm2/2sjYTLXRvo6zqtvQDWfuUXwyZqS11Lg2ZgAMSV0C
         TBogqWVL+bANnjxBqM/OCPF8eCl9fOqVZKO2j4KUMdjz0IGRjI7gqFmnLh2t2bDYVL3j
         l86gzWmuNqpdJ+agewPOdOP9M1bZdY5Wld0NNq6lr92BDBH4C6Y8Cs60xeszKOwGJyOX
         WFYQ==
X-Forwarded-Encrypted: i=1; AJvYcCWr2d9GbqRgMSjSI+hSoi/i0ItzItQTVt4dbdHMU8ijAui51lF0FLL1hiE/CRT8UTb9SX8z3eeg8TQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwjZ4GPymzx/OG3D7M+UVoBUEgc5GeA0r/4RkzVYuQp5uRc/w9+
	L5EofaQpuV9wjM9WaSmuKbPjq7/9bZ0c8lELqb5xavPBDk6HC48pgkdox8Qp6YQ=
X-Google-Smtp-Source: AGHT+IGf3KLvkONw4X+fBPxxEx3q15M+/eCjlvXGE1Ewp/8LjqJTKRbtzNUBN34g1wBPQMgREvoWSA==
X-Received: by 2002:a05:6402:43ce:b0:5c0:ac1d:b970 with SMTP id 4fb4d7f45d1cf-5c8b1b8255fmr3686131a12.32.1727901735319;
        Wed, 02 Oct 2024 13:42:15 -0700 (PDT)
Message-ID: <3ca5faa7-2276-4c85-a4ee-cc6ad5af3238@citrix.com>
Date: Wed, 2 Oct 2024 21:42:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] automation: preserve built xen.efi
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02/10/2024 1:42 pm, Marek Marczykowski-Górecki wrote:
> It will be useful for further tests.
>
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> ---
>  automation/scripts/build | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/automation/scripts/build b/automation/scripts/build
> index b3c71fb6fb60..4cd41cb2c471 100755
> --- a/automation/scripts/build
> +++ b/automation/scripts/build
> @@ -47,6 +47,7 @@ if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
>  
>      # Preserve artefacts
>      cp xen/xen binaries/xen
> +    if [[ -f xen/xen.efi ]]; then cp xen/xen.efi binaries/xen.efi; fi

Wouldn't

    # Preserve xen and optionally xen.efi
    cp -f xen/xen xen/xen.efi binaries/

do this in a more concise way?

Alternatively, what about this:

diff --git a/automation/scripts/build b/automation/scripts/build
index b3c71fb6fb60..14815ea7ad9c 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -41,6 +41,15 @@ cp xen/.config xen-config
 # Directory for the artefacts to be dumped into
 mkdir -p binaries
 
+collect_xen_artefacts ()
+{
+    for A in xen/xen xen/xen.efi; do
+        if [[ -f $A ]]; then
+            cp $A binaries/
+        fi
+    done
+}
+
 if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
     # Cppcheck analysis invokes Xen-only build
     xen/scripts/xen-analysis.py --run-cppcheck --cppcheck-misra --
-j$(nproc)
@@ -53,7 +62,7 @@ elif [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
     make -j$(nproc) xen
 
     # Preserve artefacts
-    cp xen/xen binaries/xen
+    collect_xen_artefacts
 else
     # Full build.  Figure out our ./configure options
     cfgargs=()

so we don't triplicate the handling?

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 20:46:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 20:46:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809019.1221136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw6Ee-0004VU-JU; Wed, 02 Oct 2024 20:46:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809019.1221136; Wed, 02 Oct 2024 20: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 1sw6Ee-0004VN-Fc; Wed, 02 Oct 2024 20:46:12 +0000
Received: by outflank-mailman (input) for mailman id 809019;
 Wed, 02 Oct 2024 20:46: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=3lMz=Q6=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1sw6Ec-0004Uh-FK
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 20:46:10 +0000
Received: from fhigh-a5-smtp.messagingengine.com
 (fhigh-a5-smtp.messagingengine.com [103.168.172.156])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 58f635f4-80ff-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 22:46:07 +0200 (CEST)
Received: from phl-compute-10.internal (phl-compute-10.phl.internal
 [10.202.2.50])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 5AA4C11401E3;
 Wed,  2 Oct 2024 16:46:06 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-10.internal (MEProxy); Wed, 02 Oct 2024 16:46:06 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 16:46:05 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58f635f4-80ff-11ef-99a2-01e77a169b0f
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=1727901966;
	 x=1727988366; bh=f8RVdOvD6pkS+P1XAvOXJVNXM1/cRZszEc8tkSfGUnk=; b=
	ibB6LGxtefdpeQ9KRZYitu/ssY0mGoazBt8sDB4ccnhFFOvOsOHpxMSzwWe2yKVm
	k/FGQjpEICqAlj/pA+F7v8GiT/dcDAcD9EulEpCAaDNaekWyeQnbs7YJfEGiHHJA
	26IwpU2KIaQSmUKLKloR+XIhcEqBPvs3laDtBDYr/eF0EbI8XL/nVfonSB2dUJ/r
	9Vt/r4iGqXiLSxF3x96sgpswuygeqooKVQRvcF8H7BnRUj9fZ9n/hL1FdAK7LRTQ
	6yz2w58efXSwnhaXwo00t4dQiSuMaYW+Vw+ghIczV1sD3KAXIfQuOsyvj75kLTWy
	wZWaZ+yZgK/RgOGSDGZ5vA==
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=1727901966; x=1727988366; bh=f8RVdOvD6pkS+P1XAvOXJVNXM1/c
	RZszEc8tkSfGUnk=; b=Yjg1NRA6rXZ+D0It7sg2AFTeSkP0Xv3xzdMn91XSwO+J
	Azbw2Bmi/418S7R7WmaX31J5axjaeumiOXRoEKSS30uIM1veJ8nWPGgw1+5r6z0b
	tT+OdvhvK1vEmMllBEFEogLGIHh83SOF2WA6FrTB/DSmR0jDtAGv1ssYgCWYTvfb
	x7dr7vnEXWGYhfz8IdOXyZ+8UdUmnn6RurN02/R+MTrfWHVmCFruLcNAZtHzjSS4
	YbQGjyiTtFFkSbkUskDND+w0VK2zrhXk4ztgEvlRzZfkL09mou4IivwkEEr4kYem
	3vLvBgUfRErbRt6d++bj6NUUP1ezF47C598QiF2Duw==
X-ME-Sender: <xms:DrH9Zhm_qzY01QyXOGPmzAu4SjeFRMl-JG-OwhcJ5Yveoj3AkKMORA>
    <xme:DrH9Zs3v0rX29NA4suRj5vmsYXbhGqPiV-EAgIcaW4-g4_kYchquzUnyhLvWVMlom
    ibFngbBlUgeRw>
X-ME-Received: <xmr:DrH9ZnqgnryKFeRh3XV7ak9Du2S7c3FoVAONMWElVv4NJSkZohlDgrvDdsjLFZ_030O-xEWUKpgOQoM9dd-9DYB0Kn8Jw6vpOA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdduledgudehtdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp
    uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg
    hnthhsucdlqddutddtmdenucfjughrpeffhffvvefukfhfgggtuggjsehgtderredttdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpefgudelteefvefhfeehieetleeihfejhfeludevteetkeevtedtvd
    egueetfeejudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr
    ohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpd
    hnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopegrnhgu
    rhgvfidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghpthhtohepgigvnhdqug
    gvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtoheptggr
    rhguohgvsegtrghrughovgdrtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhise
    hkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:DrH9ZhlcE9VOnFrW6POQytneyEnDAC9z6bRtux2eQPkxRR5F6hvFUQ>
    <xmx:DrH9Zv1wTO9XAJH6FykmKH0tOuNlaNl_o8n3hrMmoTAH0x5pu1vnLQ>
    <xmx:DrH9ZgsGMqEilDxDA6dW1tCepBSQuIKVsanav5aAenIU4Z_kpKmI9Q>
    <xmx:DrH9ZjUGfCKH6KGZxh91ZXvMi0rB8BxGiKBiSlv9H5GeUwBIXYsvEQ>
    <xmx:DrH9ZgwCc3N3h_NTlZmK8BJ549Re7Tw0PcAApvI2iY44oXIaxhN9StEU>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 2 Oct 2024 22:46:02 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH 1/2] automation: preserve built xen.efi
Message-ID: <Zv2xC7JPBEs1-aue@mail-itl>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
 <3ca5faa7-2276-4c85-a4ee-cc6ad5af3238@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="2POoGM53L96abNgx"
Content-Disposition: inline
In-Reply-To: <3ca5faa7-2276-4c85-a4ee-cc6ad5af3238@citrix.com>


--2POoGM53L96abNgx
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 2 Oct 2024 22:46:02 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH 1/2] automation: preserve built xen.efi

On Wed, Oct 02, 2024 at 09:42:13PM +0100, Andrew Cooper wrote:
> On 02/10/2024 1:42 pm, Marek Marczykowski-G=C3=B3recki wrote:
> > It will be useful for further tests.
> >
> > Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblething=
slab.com>
> > ---
> >  automation/scripts/build | 7 ++++++-
> >  1 file changed, 6 insertions(+), 1 deletion(-)
> >
> > diff --git a/automation/scripts/build b/automation/scripts/build
> > index b3c71fb6fb60..4cd41cb2c471 100755
> > --- a/automation/scripts/build
> > +++ b/automation/scripts/build
> > @@ -47,6 +47,7 @@ if [[ "${CPPCHECK}" =3D=3D "y" ]] && [[ "${HYPERVISOR=
_ONLY}" =3D=3D "y" ]]; then
> > =20
> >      # Preserve artefacts
> >      cp xen/xen binaries/xen
> > +    if [[ -f xen/xen.efi ]]; then cp xen/xen.efi binaries/xen.efi; fi
>=20
> Wouldn't
>=20
> =C2=A0=C2=A0=C2=A0 # Preserve xen and optionally xen.efi
> =C2=A0=C2=A0=C2=A0 cp -f xen/xen xen/xen.efi binaries/
>=20
> do this in a more concise way?

I don't think so, `cp -f` still fails if the source cannot be found.

> Alternatively, what about this:
>=20
> diff --git a/automation/scripts/build b/automation/scripts/build
> index b3c71fb6fb60..14815ea7ad9c 100755
> --- a/automation/scripts/build
> +++ b/automation/scripts/build
> @@ -41,6 +41,15 @@ cp xen/.config xen-config
> =C2=A0# Directory for the artefacts to be dumped into
> =C2=A0mkdir -p binaries
> =C2=A0
> +collect_xen_artefacts ()
> +{
> +=C2=A0=C2=A0=C2=A0 for A in xen/xen xen/xen.efi; do
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if [[ -f $A ]]; then
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 cp $A=
 binaries/
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fi
> +=C2=A0=C2=A0=C2=A0 done
> +}
> +
> =C2=A0if [[ "${CPPCHECK}" =3D=3D "y" ]] && [[ "${HYPERVISOR_ONLY}" =3D=3D=
 "y" ]]; then
> =C2=A0=C2=A0=C2=A0=C2=A0 # Cppcheck analysis invokes Xen-only build
> =C2=A0=C2=A0=C2=A0=C2=A0 xen/scripts/xen-analysis.py --run-cppcheck --cpp=
check-misra --
> -j$(nproc)
> @@ -53,7 +62,7 @@ elif [[ "${HYPERVISOR_ONLY}" =3D=3D "y" ]]; then
> =C2=A0=C2=A0=C2=A0=C2=A0 make -j$(nproc) xen
> =C2=A0
> =C2=A0=C2=A0=C2=A0=C2=A0 # Preserve artefacts
> -=C2=A0=C2=A0=C2=A0 cp xen/xen binaries/xen
> +=C2=A0=C2=A0=C2=A0 collect_xen_artefacts
> =C2=A0else
> =C2=A0=C2=A0=C2=A0=C2=A0 # Full build.=C2=A0 Figure out our ./configure o=
ptions
> =C2=A0=C2=A0=C2=A0=C2=A0 cfgargs=3D()
>=20
> so we don't triplicate the handling?

That may be a better idea indeed.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb9sQsACgkQ24/THMrX
1yw1lgf/Yzg1QnkGsyIHTQj3SRzbO2Nyl6gVMfDpC+EKFUzxW7XPGPZvi8CHV7fh
jcpMJWWvml2aCE1dnBqD6kVK2m8GrhwPq2qS/IoVjO6PLu86a0R58OU0k5q+R7Uw
JQgt3mbXarc7rQxLHybOqbyWWMIjK7etw/jH7n+vl/O2L985zA1G02gHCFKUZkUC
oC8c51rMfBU2xwm1FzSPRqNx4JobbGNWXCYJgDaxGCG3LnPPsXCFe+Y+zmwGHlQR
ffFhxyyp89xKGz59U5abRoh5r5E0psFx0dxrsf47Gxp1tBYX+3M6XT5nZ02C5ND4
diuoM5JntPTk7DILjerVCFFbNB81Pw==
=BZUn
-----END PGP SIGNATURE-----

--2POoGM53L96abNgx--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 21:03:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 21:03:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809028.1221146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw6VF-00085y-3i; Wed, 02 Oct 2024 21:03:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809028.1221146; Wed, 02 Oct 2024 21:03: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 1sw6VF-00085r-0M; Wed, 02 Oct 2024 21:03:21 +0000
Received: by outflank-mailman (input) for mailman id 809028;
 Wed, 02 Oct 2024 21:03: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw6VE-00085l-G9
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 21:03:20 +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 bfd577a2-8101-11ef-a0ba-8be0dac302b0;
 Wed, 02 Oct 2024 23:03:18 +0200 (CEST)
Received: by mail-ed1-x542.google.com with SMTP id
 4fb4d7f45d1cf-5c88370ad7bso151913a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 14:03:18 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88245ea57sm7992339a12.55.2024.10.02.14.03.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 14:03:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bfd577a2-8101-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727902998; x=1728507798; 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=ZMm12Vk+aQuWYxQ7Mg0jWOkwQBlvOnHjRhtdFvVYk0w=;
        b=os/iTZgvYhTcYVbOA/zy/nrTqHZtk5CjMgO9Z7ElLV5Id98//BeLOIkS5eHFefF4dS
         M8wApPN1CwrFwvClz+Vs/Lj0jbT8L3v+7kGTYPaHIJBnhlcJzYVnAoYSwmHfiXdqYqxf
         JhOU7PZ2Z/41HXmSLmlC/tbYVdf6rEGBuFH68=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727902998; x=1728507798;
        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=ZMm12Vk+aQuWYxQ7Mg0jWOkwQBlvOnHjRhtdFvVYk0w=;
        b=fRr3yrAHt2xF347Ht6fWEDpfkOiq+rbO3BUAKTekK647RiO/tx3Z9ejbYJqiXX83TT
         kwhfIUQR+RfBVUrL8/OLmbCZh7j09C5EwCfOI7Sw8I6hRKarqCvfJoIrxDuJJUmUDY0l
         o63CUBd7vHFqfQQPaxVA5lm1Ez3rjr61HdS7GLTjrHcqAljCg47r33nvezdk6y/KZ97O
         wB+glr4JSI/OZMa3MKTWtJZJc4ECRlLu0OyamYMmiIGm9GozKAeAbdtHXvEb+UY9PvFy
         sxjA85JO3/vgk3rosuUYxv5ZVjjFITxxFkxSK430P34PdUDuLUOBswBuIgKXoGuICdXU
         MiyA==
X-Forwarded-Encrypted: i=1; AJvYcCU4HgAo7Z+7dV8nKabC9R/fUeO80gfqutgWip6ObEI6aTyQkHMKjSjGQV13rALUk86/49K4nTjmLmY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz2wBfWXundjVfKgx0Q2TQtfiPP79vZcfWYt9HhDxRS/LgHZb+e
	xxC7I9HEMA3jGBwc/4RpS2cSsI47IJ8NyGQVvNjJhDJNJXSme4t1VxkOphZR3aM=
X-Google-Smtp-Source: AGHT+IFIIe/5ZGceCJZ9GwB9ODhj8ewzyMgSP4d0IYPIyreUK0Xd3aoUMLZ/8lxL0NTHf2ESUZK7cw==
X-Received: by 2002:a05:6402:51cc:b0:5c5:c4ab:c2c8 with SMTP id 4fb4d7f45d1cf-5c8b1727e54mr3392071a12.0.1727902998032;
        Wed, 02 Oct 2024 14:03:18 -0700 (PDT)
Message-ID: <596535b2-8c59-4e03-befe-92f3b58ca5a9@citrix.com>
Date: Wed, 2 Oct 2024 22:03:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
 <20241002124245.716302-2-marmarek@invisiblethingslab.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241002124245.716302-2-marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02/10/2024 1:42 pm, Marek Marczykowski-Górecki wrote:
> Check if xen.efi is bootable with an XTF dom0.
>
> The TEST_TIMEOUT is set in the script to override project-global value.
> Setting it in the gitlab yaml file doesn't work, as it's too low
> priority
> (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
>
> The multiboot2+EFI path is tested on hardware tests already.
>
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> ---
> This requires rebuilding debian:bookworm container.

Noted.

>
> The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
> not clear to me why the default TEST_TIMEOUT is set at the group level
> instead of in the yaml file, so I'm not adjusting the other places.

I'll leave that side of things to Stefano.

> ---
>  automation/build/debian/bookworm.dockerfile |  1 +
>  automation/gitlab-ci/test.yaml              |  7 ++++
>  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
>  3 files changed, 52 insertions(+)
>  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
>
> diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
> index 3dd70cb6b2e3..061114ba522d 100644
> --- a/automation/build/debian/bookworm.dockerfile
> +++ b/automation/build/debian/bookworm.dockerfile
> @@ -46,6 +46,7 @@ RUN apt-get update && \
>          # for test phase, qemu-smoke-* jobs
>          qemu-system-x86 \
>          expect \

# for test phase efi jobs

> +        ovmf \
>          # for test phase, qemu-alpine-* jobs
>          cpio \
>          busybox-static \
> diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh
> new file mode 100755
> index 000000000000..e053cfa995ba
> --- /dev/null
> +++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
> @@ -0,0 +1,44 @@
> +#!/bin/bash
> +
> +set -ex -o pipefail
> +
> +# variant should be either pv or pvh
> +variant=$1
> +
> +# Clone and build XTF
> +git clone https://xenbits.xen.org/git-http/xtf.git
> +cd xtf && make -j$(nproc) && cd -

make -C xtf -j$(nproc)

I still haven't got XTF nicely working in Gitlab CI, but if my plans
work out, we will be able to replace this with a job-level artefact import.


> +
> +case $variant in
> +    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
> +    *)   k=test-pv64-example     extra= ;;
> +esac
> +
> +mkdir -p boot-esp/EFI/BOOT
> +cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
> +cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel

Looking at this split, I'd suggest having

k=example/test-... in the case, and cp xtf/tests/$k boot-... here.

That way, it's easier to swap out e.g. k=selftest/test-pv64-selftest


> +
> +cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
> +[global]
> +default=test
> +
> +[test]
> +options=loglvl=all console=com1 noreboot console_timestamps=boot $extra

Bah - we still can't select the timestamp mode at Kconfig time, can we. 
Because that would have been helpful...

Something for the todo list.  Individual tests should not be needing to
arrange this.

I think you can drop the loglvl=all.  That (and guest_loglvl, and
CONFIG_VERBOSE which you depend on) is already arranged by virtue of
using a debug Xen.  I don't think this is liable to change.

> +kernel=kernel
> +EOF
> +
> +cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
> +cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
> +
> +rm -f smoke.serial
> +export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
> +        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
> +        -drive if=pflash,format=raw,file=OVMF_VARS.fd \

Why do you copy OVMF_*.fd out of /usr/share to the local dir, then pass
them as paths here?

Can't qemu be pointed at /usr/share directly?

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 21:25:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 21:25:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809035.1221156 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw6qj-0002zc-SE; Wed, 02 Oct 2024 21:25:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809035.1221156; Wed, 02 Oct 2024 21: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 1sw6qj-0002zV-Ot; Wed, 02 Oct 2024 21:25:33 +0000
Received: by outflank-mailman (input) for mailman id 809035;
 Wed, 02 Oct 2024 21:25: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=rzV7=Q6=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sw6qi-0002zP-UI
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 21:25:32 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20618.outbound.protection.outlook.com
 [2a01:111:f403:200a::618])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d8c57126-8104-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 23:25:30 +0200 (CEST)
Received: from DM6PR14CA0053.namprd14.prod.outlook.com (2603:10b6:5:18f::30)
 by MN2PR12MB4238.namprd12.prod.outlook.com (2603:10b6:208:199::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Wed, 2 Oct
 2024 21:25:24 +0000
Received: from CY4PEPF0000E9CE.namprd03.prod.outlook.com
 (2603:10b6:5:18f:cafe::30) by DM6PR14CA0053.outlook.office365.com
 (2603:10b6:5:18f::30) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.15 via Frontend
 Transport; Wed, 2 Oct 2024 21:25:24 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CY4PEPF0000E9CE.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.8026.11 via Frontend Transport; Wed, 2 Oct 2024 21:25:24 +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.39; Wed, 2 Oct
 2024 16:25:23 -0500
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.39; Wed, 2 Oct
 2024 16:25:23 -0500
Received: from [172.24.163.62] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Wed, 2 Oct 2024 16:25:23 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8c57126-8104-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=SCRvoQAodFAdKCy8xWEwOOlgxwUX3aO/Cqq68XSVLUGkZ8ZNct0DhDfCtZt0QPaX7F8cN5bnQLg/6U7CTVS9NTbSq1oegI4SYM9qloo6/pyFZcNv1j/YtgxNRCZeM+e3eYxyKnYrLb1nYDxKqTNRCOUqpPvaaKg5MvQ5QyshM5OPuol8V7QmNPOMup/kawApZdU58oyJjAoj/MZpr9Fk++sqesWDKHN3O7iZctLLX0nMZztsITqcDZ8u7ikNlNvrM8nUHEHBRTzWCOGj1aV7euHmxtAE8DHtRRz+sUHe44o05MCv1Z87cl7f5b4u/e2eCMb2MmJb3naRFozC+ZKmqA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=5QerY6aZNBZaxaESyMpRmZVmsTez1kpiiUfAtqGL5JY=;
 b=C9rdLLbK57U0r/xMadnTjT+0KVmMo6onRb8jLq19MGMTOlmm58Y/qzHckjEPKIbKoruZ2En7pUxhr3O/hRA9nU/+jX7fOgT0dyN7FhE7cdXD6zGHNGBiUAIsLJOLAFFvpFGOlpWRqcZLdg9ZI/m1zF1bXNNV4fvrpGXLlI/t/taPk8u5PU0lE/R/g3C0bd0oFpVQBYTJato7834Zn+Mg/W4+EymG8NIDxGETJF7ihAvABhRrF8Qdcn0MkixZmTeYnflBa+TaELJZH6kFijHiXjUJRuy6Q12XvbV3CQ7A9N6j9NOrZA+lnF/GkMu7PlIawHZ0ntS/kDzQiocQSZE8BA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=google.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=5QerY6aZNBZaxaESyMpRmZVmsTez1kpiiUfAtqGL5JY=;
 b=k1aSOwNGTcSRQlPLx5QkOsTDmI4FmtwnZoLM4WjUn5j8K4OBkVT8RZRtg6GCO7rTnBj4ikBE3CH+289N74AiF+CNBxMu46BlMkRMX/VlfOBf+gbJRCbQeiKaQ2klc3d6QynO64P3ZVcBGfw/audThIDcwL1HPpovDloc1hBb0lI=
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: <b2b23136-fd57-4bc8-bb80-604cc4da0920@amd.com>
Date: Wed, 2 Oct 2024 17:25:19 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH v2 4/5] x86/xen: Avoid relocatable quantities in Xen ELF
 notes
To: Ard Biesheuvel <ardb+git@google.com>, <linux-kernel@vger.kernel.org>
CC: Ard Biesheuvel <ardb@kernel.org>, Juergen Gross <jgross@suse.com>, "Boris
 Ostrovsky" <boris.ostrovsky@oracle.com>, <x86@kernel.org>,
	<xen-devel@lists.xenproject.org>
References: <20240930071513.909462-7-ardb+git@google.com>
 <20240930071513.909462-11-ardb+git@google.com>
Content-Language: en-US
In-Reply-To: <20240930071513.909462-11-ardb+git@google.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9CE:EE_|MN2PR12MB4238:EE_
X-MS-Office365-Filtering-Correlation-Id: 5b8823f3-625a-43c9-9141-08dce328ba82
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RU5mbER5UFBINVJOdUdkNGNFanBDb2p0OWNpVUZ6YTczT2l3YWhrSjlPRnpx?=
 =?utf-8?B?V3FLQ3ExZzc1anU4cytTWDNXbXZMaTVvVEJDSG1VM3QvOVY1UEFKSFlyVmdG?=
 =?utf-8?B?MmtIZkwrZ0ZmN0Y4SmFMdE9yOXJ1d3daVHpHLzVkdkdkY1lBNnRJOGxyL2oy?=
 =?utf-8?B?cFh6WUpMK05ZUDZzWmxLTi82Z0xsS1gzeE5ZbDE3RllWVStFbzBDSW9jOEtM?=
 =?utf-8?B?OFJlYUFCTVE3OVRZUmtDNzJMUkJuZUZodXA5N0tGQnJLUlJ0Y0NXVExMVGsv?=
 =?utf-8?B?THFmeVQwV3FLTi9haWxZSTUwT3V4MEhVMlFoWk5YWDdNaUd5OXcySEtjcENj?=
 =?utf-8?B?aHZ1VFlLd3F4T0phUkwrUVNuN296Tk5lRFJyVE9vdm5adTZEZFVEais3UzNI?=
 =?utf-8?B?N2dqMjVYNCtVWmJlbU1CZ3I0bHV4Z2JtSUUrakFZU1VHdlEyT09GK0JUaVlo?=
 =?utf-8?B?OVJ1RWM3aEVmTks3Nm5qL2Jla2phSUV2RDlSYVE1YUNUN3gwSlBkWklML3Ni?=
 =?utf-8?B?dzJPNnpHSFdYMUM0cUVsY21CVWVqS1QzNzVXa1N4dDNhdlkvd3Bja2t0M0g5?=
 =?utf-8?B?YjVqZm1tWVZiMjFLRUR6dUlrdHdKMTFNZkhYWDVDblZiNlhEdXhUWmVRaHNW?=
 =?utf-8?B?bGRuUWRCbXFUK2gvWDNsUXMyZ0NBU09DVkZWTjdOK2MrL3kwaVpPWVRueFRl?=
 =?utf-8?B?WHIyU0FYdHVPL3NJTS9GRFhaWmtQTFAwM296RkNyenRqNDJVMm4yTVFqMXBl?=
 =?utf-8?B?ekhMWW92YmUwTUFmQkY5UytDMVN0NTRwTjdmMkVzM25OajdYSWVySm1WcnBY?=
 =?utf-8?B?N2FMdnpPei9GbFBkMVlxejBKMENtOTAvdHRlTlVjdTF1aWl5RFlOaG1mZkxI?=
 =?utf-8?B?cktqNjJZeVRDQzJ0QzFPb0RwZlRMU2xSbWxBN1phNnV4UXM4OE5BdXR5ZHJX?=
 =?utf-8?B?RTNOUmJxTXFjTXZnS0JiRkMwZVlaUE15OWR5WTZGaFBVTFlXZXpWdE5LTUVW?=
 =?utf-8?B?SUg3OFF1SEcxc2NCekFIQzNNaTFVNmhRVGdsQjZYcjlTaGVEVE93ZlArWVdU?=
 =?utf-8?B?aGhPVkZsbDVvNjZsL044bDRQV04vRXNWZDdwNjlFcFFFdWhYU0RzZm12d1Vr?=
 =?utf-8?B?SWNGMkI0RENpRlJ4cDdWOUxFZ1p2bHlIZ2d5K29wR2I0cFY2UVFXc1pIOVJJ?=
 =?utf-8?B?RlBKV1JJU2lGRno0MFFnVzJqTDlrNHlYZTllL2xyOUZOcktFNTBXZWRwRTBT?=
 =?utf-8?B?eHNOQTVVbkprLy9senhtcmNSdmRaamdKM0ErcTBKQ3pmMWk5ZE16SVMzWTQz?=
 =?utf-8?B?RFc5L3VGL2IvTXVqa3NvelZnQmp3SGpQblFwVGJrWHNWcExWME0yelFuZXNK?=
 =?utf-8?B?K2N4S2g2MUMxTUphTXNpa2xHa0tkOEIyLzYzQ3k5VWRoeld5L00zTFhuYzkv?=
 =?utf-8?B?S2RRb3VWYS9NYU93cWdjYmdkd2VlNndudVBDZ3pIUzRFUjRCeFJtSzdSVWpK?=
 =?utf-8?B?a0M2bzNFWlZ4dGdEaFNxVU1zQWNpM2tzNWhrcWdBelgwUE1CblhxWm9LMVNW?=
 =?utf-8?B?WFB6Q1RNaWVSUGx0WHhneVA5N2tEYlV2eis2dHQ4T3Q2aGxBM1B1bVJ2Vk9K?=
 =?utf-8?B?TEdCYlJiSlE1Y05TU0RURnNzdTk0aVdnYjBjbjdadWZBM1BvekVhWlhzRW5i?=
 =?utf-8?B?dHhSNXdUbURkOVB3TmJjK2JxcDJFdlZoenZFbFR3Y013c01ubVc4TnpmVDZq?=
 =?utf-8?B?T0Vmc1pML2xFcU1ZbTF3NElzVFVKWUVLMDNLaGdXcWRXMEs3dnRhR3ZZNHN3?=
 =?utf-8?B?T01GbzF1cFFiZWRkU2hzRjBkYzJqWTRYWVVaQm05cWtKbkM4T2dWZ3JWZ3VL?=
 =?utf-8?Q?6QVflFtCiABkM?=
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:(13230040)(82310400026)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2024 21:25:24.5365
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5b8823f3-625a-43c9-9141-08dce328ba82
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:
	CY4PEPF0000E9CE.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4238

On 2024-09-30 03:15, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb@kernel.org>
> 
> Xen puts virtual and physical addresses into ELF notes that are treated
> by the linker as relocatable by default. Doing so is not only pointless,
> given that the ELF notes are only intended for consumption by Xen before
> the kernel boots. It is also a KASLR leak, given that the kernel's ELF
> notes are exposed via the world readable /sys/kernel/notes.
> 
> So emit these constants in a way that prevents the linker from marking
> them as relocatable. This involves place-relative relocations (which
> subtract their own virtual address from the symbol value) and linker
> provided absolute symbols that add the address of the place to the
> desired value.
> 
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

Tested-by: Jason Andryuk <jason.andryuk@amd.com>

The generated values look ok.

> ---
>   arch/x86/kernel/vmlinux.lds.S | 13 +++++++++++++
>   arch/x86/platform/pvh/head.S  |  6 +++---
>   arch/x86/tools/relocs.c       |  1 +
>   arch/x86/xen/xen-head.S       |  6 ++++--
>   4 files changed, 21 insertions(+), 5 deletions(-)
> 
> diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
> index 6726be89b7a6..2b7c8c14c6fd 100644
> --- a/arch/x86/kernel/vmlinux.lds.S
> +++ b/arch/x86/kernel/vmlinux.lds.S
> @@ -527,3 +527,16 @@ INIT_PER_CPU(irq_stack_backing_store);
>   #endif
>   
>   #endif /* CONFIG_X86_64 */
> +
> +#ifdef CONFIG_XEN
> +#ifdef CONFIG_XEN_PV
> +xen_elfnote_entry_offset =
> +	ABSOLUTE(xen_elfnote_entry) + ABSOLUTE(startup_xen);
> +#endif
> +xen_elfnote_hypercall_page_offset =
> +	ABSOLUTE(xen_elfnote_hypercall_page) + ABSOLUTE(hypercall_page);
> +#endif
> +#ifdef CONFIG_PVH
> +xen_elfnote_phys32_entry_offset =
> +	ABSOLUTE(xen_elfnote_phys32_entry) + ABSOLUTE(pvh_start_xen - LOAD_OFFSET);
> +#endif

It seems to me, these aren't really offsets, but instead an address + value.

> diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
> index 7ca51a4da217..2b0d887e0872 100644
> --- a/arch/x86/platform/pvh/head.S
> +++ b/arch/x86/platform/pvh/head.S

> @@ -300,5 +300,5 @@ SYM_DATA_END(pvh_level2_kernel_pgt)
>   		     .long KERNEL_IMAGE_SIZE - 1)
>   #endif
>   
> -	ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY,
> -	             _ASM_PTR (pvh_start_xen - __START_KERNEL_map))
> +	ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY, .global xen_elfnote_phys32_entry;
> +		xen_elfnote_phys32_entry: _ASM_PTR xen_elfnote_phys32_entry_offset - .)

So here you have `address + value - address` to put the desired value in 
the elf note?

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 21:29:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 21:29:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809040.1221166 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw6uU-0003z2-Av; Wed, 02 Oct 2024 21:29:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809040.1221166; Wed, 02 Oct 2024 21: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 1sw6uU-0003yv-8C; Wed, 02 Oct 2024 21:29:26 +0000
Received: by outflank-mailman (input) for mailman id 809040;
 Wed, 02 Oct 2024 21:29: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 1sw6uS-0003yl-NV; Wed, 02 Oct 2024 21:29: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 1sw6uS-0001KZ-Ho; Wed, 02 Oct 2024 21:29: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 1sw6uS-0005rV-21; Wed, 02 Oct 2024 21:29:24 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sw6uS-000606-1G; Wed, 02 Oct 2024 21:29: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=vJXporoGwXz64AQzgZ5nNJf8WS469OW2pHiOcaD226o=; b=JiguliC84cEPRdXVeSWiG+W3Rv
	tDOX6eB7SQdcDhsP9nX68xnzrdnnwELOKV9KiLpjOuT5pomZglNHWgZeJHuasg93C4p+G69bDFZdY
	XFzm/ovtWobcO+pcZ41cVLmNZaMeQ4D1YX8bFU/LRg+5pMzSNyasZCb6B8mkpzaWZF5c=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187938-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187938: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:host-ping-check-xen:fail:heisenbug
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=718780d20470c66a3a36d036b29148d5809dc855
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 21:29:24 +0000

flight 187938 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/187938/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt  10 host-ping-check-xen fail in 187928 pass in 187938
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 187928

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-thunderx 15 migrate-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-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-amd64-libvirt-qcow2 14 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-amd64-amd64-libvirt-raw 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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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

version targeted for testing:
 qemuu                718780d20470c66a3a36d036b29148d5809dc855
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   16 days
Failing since        187731  2024-09-17 13:11:20 Z   15 days   26 attempts
Testing same since   187928  2024-10-01 20:50:28 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Arun Kumar <arun.kka@samsung.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 4559 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 21:33:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 21:33:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809050.1221175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw6yO-0005Uh-0c; Wed, 02 Oct 2024 21:33:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809050.1221175; Wed, 02 Oct 2024 21:33: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 1sw6yN-0005Ua-Tu; Wed, 02 Oct 2024 21:33:27 +0000
Received: by outflank-mailman (input) for mailman id 809050;
 Wed, 02 Oct 2024 21:33: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw6yN-0005UU-AV
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 21:33:27 +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 f4840f9b-8105-11ef-99a2-01e77a169b0f;
 Wed, 02 Oct 2024 23:33:25 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8d3cde1103so21919866b.2
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 14:33:25 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297dda9sm917351666b.166.2024.10.02.14.33.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 14:33:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4840f9b-8105-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727904804; x=1728509604; 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=fcusw84TCVSrenkHmdU4KckVgKTNxVRFd99wzfkSrqo=;
        b=ubkfjeG5XL4pxviRvdiTh8Jhs8E1Bsjio5CfF3WhWIIWuVjqWA/a4ZEYO0PbesaomX
         PS8LkjVwadqaYcVvUCz83GZiKI2gBzBGxkpgPkugx3C+HAML62+XlLotMNxPPuSs3NG4
         R5JefWXM6VHtEWsAUwJVH9UeUcXLEUn3KjADg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727904804; x=1728509604;
        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=fcusw84TCVSrenkHmdU4KckVgKTNxVRFd99wzfkSrqo=;
        b=vV2g0i4IcoKTE09w7piHxNpm0EJrdOeuzqcxKXOb5JzDg9SpTnGTF79jWgiwNkyJl3
         GkBc1Noyd69hI2dlQsbg8mQBhlqeGF+mD8E7Dz7rvGCGRS54CQ+0loB7w48981MBDuyn
         YW27SaS3nooMO8Qo/w+yCfkBvteC4BO7qEPaamQuG0AAKJWapGQzIyT/7cijsYg5kcKS
         NY3hbtmSRgcioBUgs4xdiCAocYHEUzE4I3eS8M7Z6xttYCuZxrkUNna6WRgk02eX5epE
         NII2VA4JccR6mzyfg8nUIBFsQjNFxRmHrA9RneiVC+B2g3+26N8IiPoJCJ2jzEUter+x
         e+Pg==
X-Forwarded-Encrypted: i=1; AJvYcCWoGViiZNI9ZvCCfgrjNd6uvXGf1CC1k77VaVJWZMIVp0nrQKPyGNtsrFq5sD8kuhrX6WP31IGwFuY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzPj+c/dRLP3uTs8ByKqkcIhe0pRi+Ia0z6UzyA6/Czm5jGe+nG
	rvYX57ec8+1/QYT6X6cXAT/cw6MZRD84xdkOup675otKIGArOfx0xqhCi7pzpicCTVlGqtt4LdR
	u4tH2YQ==
X-Google-Smtp-Source: AGHT+IFnEc5XzfN+F5fren4HMmmPZMwKS907FvwMSaK07l6ILYuGG1GfScWDDiZ3b2bELnQhkdOEag==
X-Received: by 2002:a17:907:7ea2:b0:a86:c372:14c3 with SMTP id a640c23a62f3a-a98f8363884mr448185666b.48.1727904804387;
        Wed, 02 Oct 2024 14:33:24 -0700 (PDT)
Message-ID: <34074457-8730-435f-a6b6-3f43fee6620e@citrix.com>
Date: Wed, 2 Oct 2024 22:33:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC-for-4.20 v2 1/1] x86/hvm: Introduce Xen-wide ASID allocator
To: Jan Beulich <jbeulich@suse.com>,
 Vaishali Thakkar <vaishali.thakkar@vates.tech>
Cc: roger.pau@citrix.com, xen-devel@lists.xenproject.org
References: <cover.1723574652.git.vaishali.thakkar@vates.tech>
 <8512ff4c4d78fcd59e6f3185d8a5abd9ef3168b8.1723574652.git.vaishali.thakkar@vates.tech>
 <c618d4ac-0735-44ac-9f37-f3146039d0d7@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <c618d4ac-0735-44ac-9f37-f3146039d0d7@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02/10/2024 12:02 pm, Jan Beulich wrote:
> On 13.08.2024 21:01, Vaishali Thakkar wrote:
>> +static DEFINE_SPINLOCK(hvm_asid_lock);
>> +
>>  /*
>> - * ASIDs partition the physical TLB.  In the current implementation ASIDs are
>> - * introduced to reduce the number of TLB flushes.  Each time the guest's
>> - * virtual address space changes (e.g. due to an INVLPG, MOV-TO-{CR3, CR4}
>> - * operation), instead of flushing the TLB, a new ASID is assigned.  This
>> - * reduces the number of TLB flushes to at most 1/#ASIDs.  The biggest
>> - * advantage is that hot parts of the hypervisor's code and data retain in
>> - * the TLB.
>> - *
>>   * Sketch of the Implementation:
>> - *
>> - * ASIDs are a CPU-local resource.  As preemption of ASIDs is not possible,
>> - * ASIDs are assigned in a round-robin scheme.  To minimize the overhead of
>> - * ASID invalidation, at the time of a TLB flush,  ASIDs are tagged with a
>> - * 64-bit generation.  Only on a generation overflow the code needs to
>> - * invalidate all ASID information stored at the VCPUs with are run on the
>> - * specific physical processor.  This overflow appears after about 2^80
>> - * host processor cycles, so we do not optimize this case, but simply disable
>> - * ASID useage to retain correctness.
>> + * ASIDs are assigned in a round-robin scheme per domain as part of
>> + * global allocator scheme and doesn't change during the lifecycle of
>> + * the domain. Once vcpus are initialized and are up, we assign the
>> + * same ASID to all vcpus of that domain at the first VMRUN. With the
>> + * new scheme, we don't need to assign the new ASID during MOV-TO-{CR3,
>> + * CR4}. In the case of INVLPG, we flush the TLB entries belonging to
>> + * the vcpu and do the reassignment of the ASID belonging to the given
>> + * domain.
> Why reassignment? In the description you say that ASIDs no longer change while
> a domain exists.
>
>>  Currently we do not do anything special for flushing guest
>> + * TLBs in flush_area_local as wbinvd() should able to handle this.
> How's WBINVD coming into the picture here? Here we solely care about TLBs,
> which WBINVD is solely about caches.

I suspect there might be confusion based on the eventual linkage in
encrypted VMs.

The ASID (== encryption key index) is stuffed in the upper physical
address bits, and memory accesses are non-content between different
encryption domains (they're genuinely different as far as physical
address logic is concerned).

Therefore in due course, Xen will need to issue WBINVD on all CPUs
before the ASP will free up the ASID for reuse.

But - this is a policy requirement for managing the VM lifecycle with
the platform, rather than an actual linkage of TLB and caches.

Otherwise a malicious Xen could create a new encrypted VM using the
ASID, and the old VM's key (there's a protocol for using the same key
"opaquely" to Xen for NVDIMM reasons), and read any not-yet-evicted
cachelines in the clear (because both the ASID and the loaded key are
the same).

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 22:16:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 22:16:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809057.1221185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw7eB-0003By-10; Wed, 02 Oct 2024 22:16:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809057.1221185; Wed, 02 Oct 2024 22:16: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 1sw7eA-0003Br-Uc; Wed, 02 Oct 2024 22:16:38 +0000
Received: by outflank-mailman (input) for mailman id 809057;
 Wed, 02 Oct 2024 22:16: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=x6XJ=Q6=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sw7eA-0003Bk-2h
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 22:16:38 +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 faa77c48-810b-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 00:16:33 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 3A93A5C0F73;
 Wed,  2 Oct 2024 22:16:27 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 69FB9C4CEC2;
 Wed,  2 Oct 2024 22:16:30 +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: faa77c48-810b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727907391;
	bh=1oDAxY34+y+Hw4tZ44s5sG8yvhoKexghuodeJjA+qUc=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=tGpdb+ow8fILnnqovgRKF4ioIP6ch7HLMHm8pC5DxKjUryYF1qXa9c5u0j49xnwkX
	 NzsODOFzncnl3R62HSqi9a4WG0K3y2qFZjHDgvcwUMuQK/FHpWj6xUthOT1fBRsCor
	 grVu9ipVnhiPP6lOnt5+D51WFNwVszOR8Kan3Dg5NYiKQzKekP7EP3n+N8/MzLzQR4
	 VT64wmmXp5PglDwPXA/kCRa1igvnF/h8AK+aaAxciJN7x9Yys3FKugZcNFrSW6GoW0
	 DtREtm9x74LOnhH/lLBdT5stilrJ+UvhHkn//CjDHUMeWe/T/yCoNaqdzRn5bWiG80
	 eUwvLb4BDRIHA==
Date: Wed, 2 Oct 2024 15:16:22 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
In-Reply-To: <20241002124245.716302-2-marmarek@invisiblethingslab.com>
Message-ID: <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com> <20241002124245.716302-2-marmarek@invisiblethingslab.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-274103806-1727906580=:1138574"
Content-ID: <alpine.DEB.2.22.394.2410021505330.1138574@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-274103806-1727906580=:1138574
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410021505331.1138574@ubuntu-linux-20-04-desktop>

On Wed, 2 Oct 2024, Marek Marczykowski-Górecki wrote:
> Check if xen.efi is bootable with an XTF dom0.
> 
> The TEST_TIMEOUT is set in the script to override project-global value.
> Setting it in the gitlab yaml file doesn't work, as it's too low
> priority
> (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
> 
> The multiboot2+EFI path is tested on hardware tests already.
> 
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> ---
> This requires rebuilding debian:bookworm container.
> 
> The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
> not clear to me why the default TEST_TIMEOUT is set at the group level
> instead of in the yaml file, so I'm not adjusting the other places.

Let me premise that now that we use "expect" all successful tests will
terminate as soon as the success condition is met, without waiting for
the test timeout to expire.

There is a CI/CD variable called TEST_TIMEOUT set at the
gitlab.com/xen-project level. (There is also a check in console.exp in
case TEST_TIMEOUT is not set so that we don't run into problems in case
the CI/CD variable is removed accidentally.) The global TEST_TIMEOUT is
meant to be a high value to account for slow QEMU tests running
potentially on our slowest cloud runners.

However, for hardware-based tests such as the xilinx-* jobs, we know
that the timeout is supposed to be less than that. The test is running
on real hardware which is considerably faster than QEMU running on our
slowest runners. Basically, the timeout depends on the runner more than
the test. So we override the TEST_TIMEOUT variable for the xilinx-* jobs
providing a lower timeout value.

The global TEST_TIMEOUT is set to 1500.
The xilinx-* timeout is set to 120 for ARM and 1000 for x86.

You are welcome to override the TEST_TIMEOUT value for the
hardware-based QubesOS tests. At the same time, given that on success
the timeout is not really used, it is also OK to leave it like this.


> ---
>  automation/build/debian/bookworm.dockerfile |  1 +
>  automation/gitlab-ci/test.yaml              |  7 ++++
>  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
>  3 files changed, 52 insertions(+)
>  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
> 
> diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
> index 3dd70cb6b2e3..061114ba522d 100644
> --- a/automation/build/debian/bookworm.dockerfile
> +++ b/automation/build/debian/bookworm.dockerfile
> @@ -46,6 +46,7 @@ RUN apt-get update && \
>          # for test phase, qemu-smoke-* jobs
>          qemu-system-x86 \
>          expect \
> +        ovmf \
>          # for test phase, qemu-alpine-* jobs
>          cpio \
>          busybox-static \
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index 8675016b6a37..74fd3f3109ae 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
>    needs:
>      - debian-bookworm-clang-debug
>  
> +qemu-smoke-x86-64-gcc-efi:
> +  extends: .qemu-x86-64
> +  script:
> +    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
> +  needs:
> +    - debian-bookworm-gcc-debug

Given that the script you wrote (thank you!) can also handle pvh, can we
directly add a pvh job to test.yaml too?


>  qemu-smoke-riscv64-gcc:
>    extends: .qemu-riscv64
>    script:
> diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh
> new file mode 100755
> index 000000000000..e053cfa995ba
> --- /dev/null
> +++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
> @@ -0,0 +1,44 @@
> +#!/bin/bash
> +
> +set -ex -o pipefail
> +
> +# variant should be either pv or pvh
> +variant=$1
> +
> +# Clone and build XTF
> +git clone https://xenbits.xen.org/git-http/xtf.git
> +cd xtf && make -j$(nproc) && cd -
> +
> +case $variant in
> +    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
> +    *)   k=test-pv64-example     extra= ;;
> +esac
> +
> +mkdir -p boot-esp/EFI/BOOT
> +cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
> +cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
> +
> +cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
> +[global]
> +default=test
> +
> +[test]
> +options=loglvl=all console=com1 noreboot console_timestamps=boot $extra
> +kernel=kernel
> +EOF
> +
> +cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
> +cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
> +
> +rm -f smoke.serial
> +export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
> +        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
> +        -drive if=pflash,format=raw,file=OVMF_VARS.fd \
> +        -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \
> +        -m 512 -monitor none -serial stdio"
> +
> +export TEST_LOG="smoke.serial"
> +export PASSED="Test result: SUCCESS"
> +export TEST_TIMEOUT=120
> +
> +./automation/scripts/console.exp | sed 's/\r\+$//'
> -- 
> 2.46.0
> 
--8323329-274103806-1727906580=:1138574--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 22:16:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 22:16:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809058.1221195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw7eI-0003RN-8A; Wed, 02 Oct 2024 22:16:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809058.1221195; Wed, 02 Oct 2024 22: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 1sw7eI-0003RE-5J; Wed, 02 Oct 2024 22:16:46 +0000
Received: by outflank-mailman (input) for mailman id 809058;
 Wed, 02 Oct 2024 22:16: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=x6XJ=Q6=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sw7eH-0003Bk-Fk
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 22:16:45 +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 010b571b-810c-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 00:16:43 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 63DD35C0F73;
 Wed,  2 Oct 2024 22:16:38 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 873FBC4CEC2;
 Wed,  2 Oct 2024 22:16:41 +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: 010b571b-810c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727907402;
	bh=y6YdS5wyQDJGdmoHg++lROT+gRIAH7fPkBIaax8hoNA=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=jD1CULWi5SKsKO4xjeTp0p3+doFFRy2P8p4besYru5MuOmivCOchbFYUnB+wphOPA
	 NpcRz9Mqo+3aBCOf5s3dC0Rsugv/xmND+tkoCHUjjfbLK+lSrQSJGDk6CT3GwIElqc
	 LmO/0++/3JM/FV45+ZSOWBWHbfFOJRbn8qUBpK+OVVzMJFwIaIsJOBUY3Cp5OySGsL
	 0ns3BMig9QgCWnC5HmVu40khggLZ7Bluv83KzCwkmwZSsBo71SsUciV6nZtmFENCgB
	 zfTABoQKkLqpQICXk5nAXQWhasHi4wILo3I64gD+ae19gPHXzMVOqBIfEHMIP+AGHz
	 6k9+5jlOwRpzg==
Date: Wed, 2 Oct 2024 15:16:40 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH 1/2] automation: preserve built xen.efi
In-Reply-To: <Zv2xC7JPBEs1-aue@mail-itl>
Message-ID: <alpine.DEB.2.22.394.2410021459030.1138574@ubuntu-linux-20-04-desktop>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com> <3ca5faa7-2276-4c85-a4ee-cc6ad5af3238@citrix.com> <Zv2xC7JPBEs1-aue@mail-itl>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-959767660-1727906554=:1138574"
Content-ID: <alpine.DEB.2.22.394.2410021505110.1138574@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-959767660-1727906554=:1138574
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410021505111.1138574@ubuntu-linux-20-04-desktop>

On Wed, 2 Oct 2024, Marek Marczykowski-Górecki wrote:
> On Wed, Oct 02, 2024 at 09:42:13PM +0100, Andrew Cooper wrote:
> > On 02/10/2024 1:42 pm, Marek Marczykowski-Górecki wrote:
> > > It will be useful for further tests.
> > >
> > > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> > > ---
> > >  automation/scripts/build | 7 ++++++-
> > >  1 file changed, 6 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/automation/scripts/build b/automation/scripts/build
> > > index b3c71fb6fb60..4cd41cb2c471 100755
> > > --- a/automation/scripts/build
> > > +++ b/automation/scripts/build
> > > @@ -47,6 +47,7 @@ if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
> > >  
> > >      # Preserve artefacts
> > >      cp xen/xen binaries/xen
> > > +    if [[ -f xen/xen.efi ]]; then cp xen/xen.efi binaries/xen.efi; fi
> > 
> > Wouldn't
> > 
> >     # Preserve xen and optionally xen.efi
> >     cp -f xen/xen xen/xen.efi binaries/
> > 
> > do this in a more concise way?
> 
> I don't think so, `cp -f` still fails if the source cannot be found.

I think it would have to be something like:

cp -f xen/xen xen/xen.efi binaries/ || true


> > Alternatively, what about this:
> > 
> > diff --git a/automation/scripts/build b/automation/scripts/build
> > index b3c71fb6fb60..14815ea7ad9c 100755
> > --- a/automation/scripts/build
> > +++ b/automation/scripts/build
> > @@ -41,6 +41,15 @@ cp xen/.config xen-config
> >  # Directory for the artefacts to be dumped into
> >  mkdir -p binaries
> >  
> > +collect_xen_artefacts ()
> > +{
> > +    for A in xen/xen xen/xen.efi; do
> > +        if [[ -f $A ]]; then
> > +            cp $A binaries/
> > +        fi
> > +    done
> > +}
> > +
> >  if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
> >      # Cppcheck analysis invokes Xen-only build
> >      xen/scripts/xen-analysis.py --run-cppcheck --cppcheck-misra --
> > -j$(nproc)
> > @@ -53,7 +62,7 @@ elif [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
> >      make -j$(nproc) xen
> >  
> >      # Preserve artefacts
> > -    cp xen/xen binaries/xen
> > +    collect_xen_artefacts
> >  else
> >      # Full build.  Figure out our ./configure options
> >      cfgargs=()
> > 
> > so we don't triplicate the handling?
> 
> That may be a better idea indeed.

collect_xen_artefacts is also a good option, perhaps even better. A
couple of minor NITs:

function collect_xen_artefacts()
{
    local f
    for f in xen/xen xen/xen.efi; do
        if [[ -f $f ]]; then
            cp $f binaries/
        fi
    done
}
--8323329-959767660-1727906554=:1138574--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 22:23:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 22:23:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809065.1221206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw7kP-0005Nq-T4; Wed, 02 Oct 2024 22:23:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809065.1221206; Wed, 02 Oct 2024 22:23: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 1sw7kP-0005Nj-QM; Wed, 02 Oct 2024 22:23:05 +0000
Received: by outflank-mailman (input) for mailman id 809065;
 Wed, 02 Oct 2024 22:23: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=x6XJ=Q6=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sw7kO-0005Nd-Im
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 22:23:04 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e3517aa1-810c-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 00:23:03 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id A2347A44034;
 Wed,  2 Oct 2024 22:22:53 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B8584C4CEC2;
 Wed,  2 Oct 2024 22:23:00 +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: e3517aa1-810c-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727907781;
	bh=lorMB7POSQq4LcExUZWDTI7L351e/ImXqLLu+hOq3iI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ig7HyrpQW7O88B0f8YAKSFmrvX9XEilDYMuyizFDo/XX0Gg+ZN1M0GIEXZ7VcGZ3p
	 YxeSsZNrpUHVuzodZVOXWKo55T1o+bJoArGz31KAp/xFe1b8yso9MhYsBNxOByibXQ
	 BoAL0v5vRN+SSuanXKMX2AvAkvaKabIkEDrtmIVuj81aWeZ/31uCFbGubPTRC5pLQi
	 NekaCHjhwyoqTC7AcUp4+mvlNaSE8NtpBNvhvgz8CnpTG2fzElcWtdVngb3XJWPs5S
	 5iAf2wCC6DhjB9OrvU6Af/bfD25NpkcSM4CARoupVLj3nnfbrtrhxomU+bkMAHdEh/
	 7gaUnqOB0XSYA==
Date: Wed, 2 Oct 2024 15:22:59 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Stefano Stabellini <sstabellini@kernel.org>
cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
In-Reply-To: <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop>
Message-ID: <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com> <20241002124245.716302-2-marmarek@invisiblethingslab.com> <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-834352706-1727907781=:1138574"

  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-834352706-1727907781=:1138574
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

I forgot to reply to one important part below


On Wed, 2 Oct 2024, Stefano Stabellini wrote:
> On Wed, 2 Oct 2024, Marek Marczykowski-Górecki wrote:
> > Check if xen.efi is bootable with an XTF dom0.
> > 
> > The TEST_TIMEOUT is set in the script to override project-global value.
> > Setting it in the gitlab yaml file doesn't work, as it's too low
> > priority
> > (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
> > 
> > The multiboot2+EFI path is tested on hardware tests already.
> > 
> > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> > ---
> > This requires rebuilding debian:bookworm container.
> > 
> > The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
> > not clear to me why the default TEST_TIMEOUT is set at the group level
> > instead of in the yaml file, so I'm not adjusting the other places.
> 
> Let me premise that now that we use "expect" all successful tests will
> terminate as soon as the success condition is met, without waiting for
> the test timeout to expire.
> 
> There is a CI/CD variable called TEST_TIMEOUT set at the
> gitlab.com/xen-project level. (There is also a check in console.exp in
> case TEST_TIMEOUT is not set so that we don't run into problems in case
> the CI/CD variable is removed accidentally.) The global TEST_TIMEOUT is
> meant to be a high value to account for slow QEMU tests running
> potentially on our slowest cloud runners.
> 
> However, for hardware-based tests such as the xilinx-* jobs, we know
> that the timeout is supposed to be less than that. The test is running
> on real hardware which is considerably faster than QEMU running on our
> slowest runners. Basically, the timeout depends on the runner more than
> the test. So we override the TEST_TIMEOUT variable for the xilinx-* jobs
> providing a lower timeout value.
> 
> The global TEST_TIMEOUT is set to 1500.
> The xilinx-* timeout is set to 120 for ARM and 1000 for x86.
> 
> You are welcome to override the TEST_TIMEOUT value for the
> hardware-based QubesOS tests. At the same time, given that on success
> the timeout is not really used, it is also OK to leave it like this.
 
 
> > ---
> >  automation/build/debian/bookworm.dockerfile |  1 +
> >  automation/gitlab-ci/test.yaml              |  7 ++++
> >  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
> >  3 files changed, 52 insertions(+)
> >  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
> > 
> > diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
> > index 3dd70cb6b2e3..061114ba522d 100644
> > --- a/automation/build/debian/bookworm.dockerfile
> > +++ b/automation/build/debian/bookworm.dockerfile
> > @@ -46,6 +46,7 @@ RUN apt-get update && \
> >          # for test phase, qemu-smoke-* jobs
> >          qemu-system-x86 \
> >          expect \
> > +        ovmf \
> >          # for test phase, qemu-alpine-* jobs
> >          cpio \
> >          busybox-static \
> > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> > index 8675016b6a37..74fd3f3109ae 100644
> > --- a/automation/gitlab-ci/test.yaml
> > +++ b/automation/gitlab-ci/test.yaml
> > @@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
> >    needs:
> >      - debian-bookworm-clang-debug
> >  
> > +qemu-smoke-x86-64-gcc-efi:
> > +  extends: .qemu-x86-64
> > +  script:
> > +    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
> > +  needs:
> > +    - debian-bookworm-gcc-debug
> 
> Given that the script you wrote (thank you!) can also handle pvh, can we
> directly add a pvh job to test.yaml too?
> 
> 
> >  qemu-smoke-riscv64-gcc:
> >    extends: .qemu-riscv64
> >    script:
> > diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh
> > new file mode 100755
> > index 000000000000..e053cfa995ba
> > --- /dev/null
> > +++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
> > @@ -0,0 +1,44 @@
> > +#!/bin/bash
> > +
> > +set -ex -o pipefail
> > +
> > +# variant should be either pv or pvh
> > +variant=$1
> > +
> > +# Clone and build XTF
> > +git clone https://xenbits.xen.org/git-http/xtf.git
> > +cd xtf && make -j$(nproc) && cd -
> > +
> > +case $variant in
> > +    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
> > +    *)   k=test-pv64-example     extra= ;;
> > +esac
> > +
> > +mkdir -p boot-esp/EFI/BOOT
> > +cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
> > +cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
> > +
> > +cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
> > +[global]
> > +default=test
> > +
> > +[test]
> > +options=loglvl=all console=com1 noreboot console_timestamps=boot $extra
> > +kernel=kernel
> > +EOF
> > +
> > +cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
> > +cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
> > +
> > +rm -f smoke.serial
> > +export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
> > +        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
> > +        -drive if=pflash,format=raw,file=OVMF_VARS.fd \
> > +        -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \
> > +        -m 512 -monitor none -serial stdio"
> > +
> > +export TEST_LOG="smoke.serial"
> > +export PASSED="Test result: SUCCESS"
> > +export TEST_TIMEOUT=120

Although this works, I would prefer keeping the TEST_TIMEOUT overrides
in test.yaml for consistency. However, it might be better not to
override it (or to override to a higher timeout value), as successful
tests will terminate immediately anyway. We need to be cautious about
setting TEST_TIMEOUT values too low, as using a slow runner (like a
small, busy cloud instance) can lead to false positive failures. This
issue occurred frequently with ARM tests when we temporarily moved from
a fast ARM server to slower ARM cloud instances a couple of months ago.

On the other hand, adjusting TEST_TIMEOUT for non-QEMU hardware-based
tests is acceptable since those tests rely on real hardware
availability, which is unlikely to become suddenly slower.
--8323329-834352706-1727907781=:1138574--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 22:23:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 22:23:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809066.1221217 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw7kj-0005nt-9I; Wed, 02 Oct 2024 22:23:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809066.1221217; Wed, 02 Oct 2024 22: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 1sw7kj-0005nm-4M; Wed, 02 Oct 2024 22:23:25 +0000
Received: by outflank-mailman (input) for mailman id 809066;
 Wed, 02 Oct 2024 22:23: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 1sw7kh-0005n3-6x; Wed, 02 Oct 2024 22:23: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 1sw7kg-0002HB-W6; Wed, 02 Oct 2024 22:23:22 +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 1sw7kg-00089B-HH; Wed, 02 Oct 2024 22:23:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sw7kg-0004gG-Gp; Wed, 02 Oct 2024 22:23: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=oxbPv8M5c4M5qz0U/sY3zm2n0GsVHSXPfk0ocz5Q15Q=; b=exTkD91/U2qY9Fy6yGwggrS3GE
	xphcb4D0qYAhJxr+DTE/ab6lwDwkRZi5Yj/Jrc+rqflogMb8DnzaWAIp9n8rysT25Sk4vup9Ui+SK
	I+iB5Qqymxh8ddvjg7wKh4W80NnVKT7L0xFuAd+3Vw7NlfLrDdVriWjWV4KsEpI4eTT4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187940-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187940: 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=41190d2ceb03b12ffc17a66c04de519c26a6052a
X-Osstest-Versions-That:
    xen=b102c9f1ce29262f33400920eeb41f23394ea99d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 22:23:22 +0000

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

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                  41190d2ceb03b12ffc17a66c04de519c26a6052a
baseline version:
 xen                  b102c9f1ce29262f33400920eeb41f23394ea99d

Last test of basis   187933  2024-10-02 07:02:09 Z    0 days
Testing same since   187940  2024-10-02 19:02:18 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
   b102c9f1ce..41190d2ceb  41190d2ceb03b12ffc17a66c04de519c26a6052a -> smoke


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 22:45:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 22:45:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809082.1221226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw86E-0000qI-V6; Wed, 02 Oct 2024 22:45:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809082.1221226; Wed, 02 Oct 2024 22:45: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 1sw86E-0000qB-SA; Wed, 02 Oct 2024 22:45:38 +0000
Received: by outflank-mailman (input) for mailman id 809082;
 Wed, 02 Oct 2024 22:45: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw86D-0000q5-Lr
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 22:45:37 +0000
Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com
 [2a00:1450:4864:20::541])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 09e91c26-8110-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 00:45:35 +0200 (CEST)
Received: by mail-ed1-x541.google.com with SMTP id
 4fb4d7f45d1cf-5c881aa669fso230422a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 15:45:36 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93c297bcd7sm922644666b.169.2024.10.02.15.45.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 15:45:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 09e91c26-8110-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727909135; x=1728513935; 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=XQKinIj+ao5XakTxYELDZMWrgaWd31i2wYJlaitgELo=;
        b=R0XU5zUvCq5hdLM31TFaaAddE1zrG7TelNmU8nPpIwlNtcfgcjy/Pb8sww4Oa0bl9N
         vXvRtSCWB4woS6DTbYe0y8MpGVXFojKM1+BrU7gjCSioNOy/pqhzRtPgSuzN9mY8IjE4
         jUrl1w186NbbJCVbH2s5wVmdKDkl90ZT1vp6Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727909135; x=1728513935;
        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=XQKinIj+ao5XakTxYELDZMWrgaWd31i2wYJlaitgELo=;
        b=abgBq6BxdUxrBGV3OS+TkJHU9Kf7DsXMvayhta6e4k0x5lZbPgwb6szUtLRmqdAHds
         aowJimmpgqAryjDLZoqcSz1GDfMVHi3eOPcLGpfRjWnbvuLeHK+kq5KEF0FfI3oE4vcu
         ZPSqITzAyHNnb1TUaL6LTQhgAZeIr7zkOeJufc3rq4v8znmN26oqO/RvzSpyi5BLXN1U
         dxEmk0OTi4Tsk8ndr6nIhh5GP4rtGo8vOgbW8AP1RVTlTuZXjBdbtlB7j5QhPT+17+z8
         qlYTeqecZkkrEyw6l+5syYqZeveTHYPQPX8N4/wltHxZyL8O7/2G0y/ZiTZoJtAai3N2
         vvrQ==
X-Gm-Message-State: AOJu0YyMVyIMPZctkW2+7PhjEXSWRrA54/NgiUjnqs+BxvAE1fbZUOiT
	3j5m8FPHXNZQQ9SccWvmvA/GaLQeEyuNmT6RHnXs8gRijIFmVmeJXS0+iR7OC+Q98zyFUOL58YP
	eTnOPpA==
X-Google-Smtp-Source: AGHT+IGfc0DbP0ymIcklqw1/Gm6EkY+/u+eOb82gmg3nt66glGRxeMogouIzOXE7s+wFgB0KcL4pVw==
X-Received: by 2002:a17:907:7fa7:b0:a8a:9195:922d with SMTP id a640c23a62f3a-a98f7fe6002mr519583366b.0.1727909134404;
        Wed, 02 Oct 2024 15:45:34 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Jan Beulich <JBeulich@suse.com>
Subject: [PATCH] stubdom: Fix newlib build with GCC-14
Date: Wed,  2 Oct 2024 23:45:31 +0100
Message-Id: <20241002224531.1966914-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Based on a fix from OpenSUSE, but adjusted to be Clang-compatible too.  Pass
-Wno-implicit-function-declaration library-wide rather than using local GCC
pragmas.

Fix of copy_past_newline() to avoid triggering -Wstrict-prototypes.

Link: https://build.opensuse.org/request/show/1178775
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Doug Goldstein <cardoe@cardoe.com>
CC: Jan Beulich <JBeulich@suse.com>

The OpenSUSE Tumbleweed containers already reproduce this issue:

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1479445899

This wants backporting to all trees in due course.
---
 stubdom/Makefile                           |  2 ++
 stubdom/newlib-fix-copy_past_newline.patch | 10 ++++++++++
 2 files changed, 12 insertions(+)
 create mode 100644 stubdom/newlib-fix-copy_past_newline.patch

diff --git a/stubdom/Makefile b/stubdom/Makefile
index 8c503c2bf8de..f8c31fd35d0d 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -97,10 +97,12 @@ newlib-$(NEWLIB_VERSION): newlib-$(NEWLIB_VERSION).tar.gz
 	patch -d $@ -p1 < newlib-disable-texinfo.patch
 	patch -d $@ -p1 < newlib-cygmon-gmon.patch
 	patch -d $@ -p1 < newlib-makedoc.patch
+	patch -d $@ -p1 < newlib-fix-copy_past_newline.patch
 	find $@ -type f | xargs perl -i.bak \
 		-pe 's/\b_(tzname|daylight|timezone)\b/$$1/g'
 	touch $@
 
+NEWLIB_CFLAGS += -Wno-implicit-function-declaration
 NEWLIB_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libc.a
 .PHONY: cross-newlib
 cross-newlib: $(NEWLIB_STAMPFILE)
diff --git a/stubdom/newlib-fix-copy_past_newline.patch b/stubdom/newlib-fix-copy_past_newline.patch
new file mode 100644
index 000000000000..f8452480bc80
--- /dev/null
+++ b/stubdom/newlib-fix-copy_past_newline.patch
@@ -0,0 +1,10 @@
+--- newlib-1.16.0/newlib/doc/makedoc.c.orig
++++ newlib-1.16.0/newlib/doc/makedoc.c
+@@ -798,6 +798,7 @@ DEFUN( iscommand,(ptr, idx),
+ }
+
+
++static unsigned int
+ DEFUN(copy_past_newline,(ptr, idx, dst),
+       string_type *ptr AND
+       unsigned int idx AND

base-commit: 41190d2ceb03b12ffc17a66c04de519c26a6052a
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 22:55:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 22:55:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809087.1221235 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw8G8-0002ht-RB; Wed, 02 Oct 2024 22:55:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809087.1221235; Wed, 02 Oct 2024 22:55: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 1sw8G8-0002hm-Oe; Wed, 02 Oct 2024 22:55:52 +0000
Received: by outflank-mailman (input) for mailman id 809087;
 Wed, 02 Oct 2024 22:55: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=3lMz=Q6=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1sw8G8-0002hg-0T
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 22:55:52 +0000
Received: from fout-a8-smtp.messagingengine.com
 (fout-a8-smtp.messagingengine.com [103.168.172.151])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 76f1b1db-8111-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 00:55:49 +0200 (CEST)
Received: from phl-compute-06.internal (phl-compute-06.phl.internal
 [10.202.2.46])
 by mailfout.phl.internal (Postfix) with ESMTP id 9590413805F2;
 Wed,  2 Oct 2024 18:55:47 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-06.internal (MEProxy); Wed, 02 Oct 2024 18:55:47 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 18:55:46 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 76f1b1db-8111-11ef-99a2-01e77a169b0f
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=1727909747;
	 x=1727996147; bh=BG6tgjBGck/KEqonHzE2D5DHtxMihfwXRm1A0A7uRVI=; b=
	Q4ncyDu4o2HZqx+YhAIBlIXAWRkdWWBAlja7AvNjQDcvW7wEzwHvvMY7p75WNflW
	UHRRa04SnyUF7oTwbFFozSHdj5WI0dXre25sx0EGI4CcsT+x/qQeChS9KQZAl4yi
	+DDkI271QoFnK0IBZ4tsettWtcRH952d/CrJl+9elxtuR8Ua5gb+g1wZrteqRYPE
	CviFymMs2MCewRqPHlirtre2L8piQdnBYvyS3Xb8pYvVtG9KXFI7UZEsj8cA1jzO
	gvLRFY7Vk5FEzp5GVBE8elK9O7nqii/2Pp4N7W04Y401SlxdXrpjuPuZxyDIm2rW
	Yks89PQOpSUxRQvRZ1GNRQ==
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=1727909747; x=1727996147; bh=BG6tgjBGck/KEqonHzE2D5DHtxMi
	hfwXRm1A0A7uRVI=; b=A0q3idATqLXOBOVfeCaLkaaFiE6b9A8se5sR8WRY5qkb
	qOa2YYeqewt+zEQPiHoiuxvBt2PzrAYg5mXedDfIeQW2ZWr3OmYNeVuMUzfNiE66
	ZG8lzsqNgmYnRS+/L1FWHKQNYv0OKxx7ijW8M4tFTztWdGW/T9ZEborK65ZnGMUj
	ctJC/33ruZshggWHG76P4PJMLODn266KbCEeSfr5TyjaaAtFWYgh0PQFIbPHctym
	n+JwoZcClhAGazNo+Wr+bSvTmlnK4ELeplcF8usHvDihHy0cryx2S1Mczg8NReHy
	hSoHB+GaaDFa1+f47mt2wUl2hVgcruV6KcZ10VdEOA==
X-ME-Sender: <xms:c8_9ZpQCLNF_KHyenAddyDuOAVEaK4ettrr4wvCbU1SdPOu40sg5gA>
    <xme:c8_9ZiwtdJpNJCT43CrObR6p7b1isdhwRU5MXjmVauqXbyFM9hiTMqeCrAQYSO2KW
    Udf1x2eSwjcig>
X-ME-Received: <xmr:c8_9Zu0b_eeWVs03F9QWZVmaShEvxMA0K7ZUTsJ2eLgSL39j8nzunrvW8SgJGerAMjHZsccGajnmKDYvRPdpKWjq2ZF2UU48VQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvtddgudejucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepuddtudeuffeggeejudeftedvueehudekueelleekgffgjeegveehhf
    evfeejheelnecuffhomhgrihhnpehgihhtlhgrsgdrtghomhdpgigvnhdrohhrghenucev
    lhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrh
    gvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthho
    peefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehsshhtrggsvghllhhinhhise
    hkvghrnhgvlhdrohhrghdprhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdig
    vghnphhrohhjvggtthdrohhrghdprhgtphhtthhopegtrghrughovgestggrrhguohgvrd
    gtohhm
X-ME-Proxy: <xmx:c8_9ZhA-O7cXyiEMzycN-P8xul6IPOTJMSKjidmSP-LZ-PDpLzlaEg>
    <xmx:c8_9ZiiR_5CJ_AK3u-iIxlHwlCWKlyRN6bEsxbhoFDZdgdpObIsflw>
    <xmx:c8_9ZlpaAVt05R1X3t6tUcILpyYRsZpG1HN_QjH0MB8FGuw06Te1ZA>
    <xmx:c8_9ZtjlVcBcOPbJmWyqWK_XqsmdnbeiV-PT64JQuZcCGSNSAvILTg>
    <xmx:c8_9ZlubrPtoQliJPSbx7r-wZB09kXgBNicS0kiPxO03GsXZfKciV_kj>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 3 Oct 2024 00:55:43 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
Message-ID: <Zv3Pbx1gkeypGQem@mail-itl>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
 <20241002124245.716302-2-marmarek@invisiblethingslab.com>
 <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop>
 <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="OwC4est8ADlO57mr"
Content-Disposition: inline
In-Reply-To: <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>


--OwC4est8ADlO57mr
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Oct 2024 00:55:43 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86

On Wed, Oct 02, 2024 at 03:22:59PM -0700, Stefano Stabellini wrote:
> I forgot to reply to one important part below
>=20
>=20
> On Wed, 2 Oct 2024, Stefano Stabellini wrote:
> > On Wed, 2 Oct 2024, Marek Marczykowski-G=C3=B3recki wrote:
> > > Check if xen.efi is bootable with an XTF dom0.
> > >=20
> > > The TEST_TIMEOUT is set in the script to override project-global valu=
e.
> > > Setting it in the gitlab yaml file doesn't work, as it's too low
> > > priority
> > > (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
> > >=20
> > > The multiboot2+EFI path is tested on hardware tests already.
> > >=20
> > > Signed-off-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethi=
ngslab.com>
> > > ---
> > > This requires rebuilding debian:bookworm container.
> > >=20
> > > The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. I=
t's
> > > not clear to me why the default TEST_TIMEOUT is set at the group level
> > > instead of in the yaml file, so I'm not adjusting the other places.
> >=20
> > Let me premise that now that we use "expect" all successful tests will
> > terminate as soon as the success condition is met, without waiting for
> > the test timeout to expire.
> >=20
> > There is a CI/CD variable called TEST_TIMEOUT set at the
> > gitlab.com/xen-project level. (There is also a check in console.exp in
> > case TEST_TIMEOUT is not set so that we don't run into problems in case
> > the CI/CD variable is removed accidentally.) The global TEST_TIMEOUT is
> > meant to be a high value to account for slow QEMU tests running
> > potentially on our slowest cloud runners.
> >=20
> > However, for hardware-based tests such as the xilinx-* jobs, we know
> > that the timeout is supposed to be less than that. The test is running
> > on real hardware which is considerably faster than QEMU running on our
> > slowest runners. Basically, the timeout depends on the runner more than
> > the test. So we override the TEST_TIMEOUT variable for the xilinx-* jobs
> > providing a lower timeout value.
> >=20
> > The global TEST_TIMEOUT is set to 1500.
> > The xilinx-* timeout is set to 120 for ARM and 1000 for x86.
> >=20
> > You are welcome to override the TEST_TIMEOUT value for the
> > hardware-based QubesOS tests. At the same time, given that on success
> > the timeout is not really used, it is also OK to leave it like this.
> =20
> =20
> > > ---
> > >  automation/build/debian/bookworm.dockerfile |  1 +
> > >  automation/gitlab-ci/test.yaml              |  7 ++++
> > >  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++=
++
> > >  3 files changed, 52 insertions(+)
> > >  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
> > >=20
> > > diff --git a/automation/build/debian/bookworm.dockerfile b/automation=
/build/debian/bookworm.dockerfile
> > > index 3dd70cb6b2e3..061114ba522d 100644
> > > --- a/automation/build/debian/bookworm.dockerfile
> > > +++ b/automation/build/debian/bookworm.dockerfile
> > > @@ -46,6 +46,7 @@ RUN apt-get update && \
> > >          # for test phase, qemu-smoke-* jobs
> > >          qemu-system-x86 \
> > >          expect \
> > > +        ovmf \
> > >          # for test phase, qemu-alpine-* jobs
> > >          cpio \
> > >          busybox-static \
> > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/te=
st.yaml
> > > index 8675016b6a37..74fd3f3109ae 100644
> > > --- a/automation/gitlab-ci/test.yaml
> > > +++ b/automation/gitlab-ci/test.yaml
> > > @@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
> > >    needs:
> > >      - debian-bookworm-clang-debug
> > > =20
> > > +qemu-smoke-x86-64-gcc-efi:
> > > +  extends: .qemu-x86-64
> > > +  script:
> > > +    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${=
LOGFILE}
> > > +  needs:
> > > +    - debian-bookworm-gcc-debug
> >=20
> > Given that the script you wrote (thank you!) can also handle pvh, can we
> > directly add a pvh job to test.yaml too?

I guess we can, but is xen.efi + PVH dom0 actually different enough to
worth testing given we already test MB2+EFI + PVH dom0?

> > >  qemu-smoke-riscv64-gcc:
> > >    extends: .qemu-riscv64
> > >    script:
> > > diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation=
/scripts/qemu-smoke-x86-64-efi.sh
> > > new file mode 100755
> > > index 000000000000..e053cfa995ba
> > > --- /dev/null
> > > +++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
> > > @@ -0,0 +1,44 @@
> > > +#!/bin/bash
> > > +
> > > +set -ex -o pipefail
> > > +
> > > +# variant should be either pv or pvh
> > > +variant=3D$1
> > > +
> > > +# Clone and build XTF
> > > +git clone https://xenbits.xen.org/git-http/xtf.git
> > > +cd xtf && make -j$(nproc) && cd -
> > > +
> > > +case $variant in
> > > +    pvh) k=3Dtest-hvm64-example    extra=3D"dom0-iommu=3Dnone dom0=
=3Dpvh" ;;
> > > +    *)   k=3Dtest-pv64-example     extra=3D ;;
> > > +esac
> > > +
> > > +mkdir -p boot-esp/EFI/BOOT
> > > +cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
> > > +cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
> > > +
> > > +cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
> > > +[global]
> > > +default=3Dtest
> > > +
> > > +[test]
> > > +options=3Dloglvl=3Dall console=3Dcom1 noreboot console_timestamps=3D=
boot $extra
> > > +kernel=3Dkernel
> > > +EOF
> > > +
> > > +cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
> > > +cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
> > > +
> > > +rm -f smoke.serial
> > > +export TEST_CMD=3D"qemu-system-x86_64 -nographic -M q35,kernel-irqch=
ip=3Dsplit \
> > > +        -drive if=3Dpflash,format=3Draw,readonly=3Don,file=3DOVMF_CO=
DE.fd \
> > > +        -drive if=3Dpflash,format=3Draw,file=3DOVMF_VARS.fd \
> > > +        -drive file=3Dfat:rw:boot-esp,media=3Ddisk,index=3D0,format=
=3Draw \
> > > +        -m 512 -monitor none -serial stdio"
> > > +
> > > +export TEST_LOG=3D"smoke.serial"
> > > +export PASSED=3D"Test result: SUCCESS"
> > > +export TEST_TIMEOUT=3D120
>=20
> Although this works, I would prefer keeping the TEST_TIMEOUT overrides
> in test.yaml for consistency.=20

The problem is this doesn't work. The group-level variable overrides the
one in yaml. See the commit message and the link there...

> However, it might be better not to
> override it (or to override to a higher timeout value), as successful
> tests will terminate immediately anyway. We need to be cautious about
> setting TEST_TIMEOUT values too low, as using a slow runner (like a
> small, busy cloud instance) can lead to false positive failures. This
> issue occurred frequently with ARM tests when we temporarily moved from
> a fast ARM server to slower ARM cloud instances a couple of months ago.
>=20
> On the other hand, adjusting TEST_TIMEOUT for non-QEMU hardware-based
> tests is acceptable since those tests rely on real hardware
> availability, which is unlikely to become suddenly slower.


--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb9z28ACgkQ24/THMrX
1yyGqAgAggmCunGY7f6KJUKq5qeGdQ6eHUPXH4VGuI6LYP1X2V/h3+ynop4qCsoH
77qFAlA0BJ/yx83iLfit24t2Sv3ReZdUR2Rczi+XDdZV9UQixdblAWW895T4K3DN
p1rTxMSSEWdR3amzhEEh3ImO6ZPIAzKiug/lA6jLeMaXogl/sbEGj07QGlcCC0tA
fPyhpZn6x7buYmnnkj7opG+T/XrLedYTemG5yeX2/b3+kbHmnT812s6/JLzNABKM
0zXEBFKtT/TGpARA7O1idECVMNWtnvawNR1YPySVyEpvk0gsNqTipxU7f7N+BJ9D
6boil4s95sAW0optHwXyTRd2J/RnXg==
=eeg/
-----END PGP SIGNATURE-----

--OwC4est8ADlO57mr--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 23:09:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 23:09:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809092.1221246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw8Sk-00052O-Vk; Wed, 02 Oct 2024 23:08:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809092.1221246; Wed, 02 Oct 2024 23: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 1sw8Sk-00052H-Rs; Wed, 02 Oct 2024 23:08:54 +0000
Received: by outflank-mailman (input) for mailman id 809092;
 Wed, 02 Oct 2024 23:08: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw8Sj-00052B-Sx
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 23:08:53 +0000
Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com
 [2a00:1450:4864:20::544])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4a668f5c-8113-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 01:08:52 +0200 (CEST)
Received: by mail-ed1-x544.google.com with SMTP id
 4fb4d7f45d1cf-5c89bdb9019so258252a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 16:08:52 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c88240a38asm8241415a12.22.2024.10.02.16.08.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 02 Oct 2024 16:08:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a668f5c-8113-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727910532; x=1728515332; 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=f7mYPNI4IC3vlYsK+CyOuvYwDnGjm039an7FH4KSsKQ=;
        b=J759YRD6aLyClOVpCEpqWqm/k5XlIdl8gh0oi8e9ssHBkERjgS4Z3S1otmH8doy265
         ccS49biWrTb8y4DjUQwLZyvfMob0VgtT4I9tlQBv/UNTxmA+gp+vL82Jp80OWll56uAE
         N3Lm+bTu2V+GOwaU9clNaN8rbr0OMA6Qw3Qrs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727910532; x=1728515332;
        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=f7mYPNI4IC3vlYsK+CyOuvYwDnGjm039an7FH4KSsKQ=;
        b=tomO+sGhA2ZCJlWyNGmy/fxfAbaj8q/yyej4wt7Nct6fR5+fpiy7DRbvjIwUhDrb2b
         NVQPLnR4saYjPDB/EPa3VgNdgLMu6eb87POJdWoSSHU1WPpybqicQPL5YvDo/0XTFhXD
         axDSBq/HAwqJudFaxf6DZOMk6Ytq5uscgc0++p33mxGs90vfjpLL/zgZVpYuhLZWmAil
         j4Nj/fKN2pu5AF+JhZXZz15zjWTNtqw/+LT3tDqGhtG9qqtuXmG1pSFoBs1jLmbVEwJa
         OO0GC082lPLGix+RSY/+qeTI74zlA42qjDF6Iw63V/hPSNn6YU4gGJb351ZYzLmm4tAM
         T7LQ==
X-Gm-Message-State: AOJu0YzSHp3KUd6Lg26iUFfmIeOdzvSxS+dS8sCo1SUve9BkAnZ8rMwD
	EgRX16yBKiY8x3IVrzZtXd07AMTLVxBQQViQ/CAKnd2D2ZtEZIPS79OcKkScb7gyjbDFy51noFD
	9i8Xqek2b
X-Google-Smtp-Source: AGHT+IEpIIRi68LOp4sqvDVuYsUCbLxxD2T+5qQI5+HOhPUS/VcRuiYn1yJvHbf5y60/IOmfh2iUvA==
X-Received: by 2002:a05:6402:51c8:b0:5c2:5c36:f838 with SMTP id 4fb4d7f45d1cf-5c8b1a2f7damr3192516a12.16.1727910531941;
        Wed, 02 Oct 2024 16:08:51 -0700 (PDT)
Message-ID: <9c8e50d2-29d4-411a-9aeb-3bcf6847c345@citrix.com>
Date: Thu, 3 Oct 2024 00:08:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
 <20241002124245.716302-2-marmarek@invisiblethingslab.com>
 <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop>
 <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>
 <Zv3Pbx1gkeypGQem@mail-itl>
Content-Language: en-GB
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: <Zv3Pbx1gkeypGQem@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02/10/2024 11:55 pm, Marek Marczykowski-Górecki wrote:
> On Wed, Oct 02, 2024 at 03:22:59PM -0700, Stefano Stabellini wrote:
>> I forgot to reply to one important part below
>>
>>
>> On Wed, 2 Oct 2024, Stefano Stabellini wrote:
>>> On Wed, 2 Oct 2024, Marek Marczykowski-Górecki wrote:
>>>> Check if xen.efi is bootable with an XTF dom0.
>>>>
>>>> The TEST_TIMEOUT is set in the script to override project-global value.
>>>> Setting it in the gitlab yaml file doesn't work, as it's too low
>>>> priority
>>>> (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
>>>>
>>>> The multiboot2+EFI path is tested on hardware tests already.
>>>>
>>>> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>>>> ---
>>>> This requires rebuilding debian:bookworm container.
>>>>
>>>> The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
>>>> not clear to me why the default TEST_TIMEOUT is set at the group level
>>>> instead of in the yaml file, so I'm not adjusting the other places.
>>> Let me premise that now that we use "expect" all successful tests will
>>> terminate as soon as the success condition is met, without waiting for
>>> the test timeout to expire.
>>>
>>> There is a CI/CD variable called TEST_TIMEOUT set at the
>>> gitlab.com/xen-project level. (There is also a check in console.exp in
>>> case TEST_TIMEOUT is not set so that we don't run into problems in case
>>> the CI/CD variable is removed accidentally.) The global TEST_TIMEOUT is
>>> meant to be a high value to account for slow QEMU tests running
>>> potentially on our slowest cloud runners.
>>>
>>> However, for hardware-based tests such as the xilinx-* jobs, we know
>>> that the timeout is supposed to be less than that. The test is running
>>> on real hardware which is considerably faster than QEMU running on our
>>> slowest runners. Basically, the timeout depends on the runner more than
>>> the test. So we override the TEST_TIMEOUT variable for the xilinx-* jobs
>>> providing a lower timeout value.
>>>
>>> The global TEST_TIMEOUT is set to 1500.
>>> The xilinx-* timeout is set to 120 for ARM and 1000 for x86.
>>>
>>> You are welcome to override the TEST_TIMEOUT value for the
>>> hardware-based QubesOS tests. At the same time, given that on success
>>> the timeout is not really used, it is also OK to leave it like this.
>>  
>>  
>>>> ---
>>>>  automation/build/debian/bookworm.dockerfile |  1 +
>>>>  automation/gitlab-ci/test.yaml              |  7 ++++
>>>>  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
>>>>  3 files changed, 52 insertions(+)
>>>>  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
>>>>
>>>> diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
>>>> index 3dd70cb6b2e3..061114ba522d 100644
>>>> --- a/automation/build/debian/bookworm.dockerfile
>>>> +++ b/automation/build/debian/bookworm.dockerfile
>>>> @@ -46,6 +46,7 @@ RUN apt-get update && \
>>>>          # for test phase, qemu-smoke-* jobs
>>>>          qemu-system-x86 \
>>>>          expect \
>>>> +        ovmf \
>>>>          # for test phase, qemu-alpine-* jobs
>>>>          cpio \
>>>>          busybox-static \
>>>> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
>>>> index 8675016b6a37..74fd3f3109ae 100644
>>>> --- a/automation/gitlab-ci/test.yaml
>>>> +++ b/automation/gitlab-ci/test.yaml
>>>> @@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
>>>>    needs:
>>>>      - debian-bookworm-clang-debug
>>>>  
>>>> +qemu-smoke-x86-64-gcc-efi:
>>>> +  extends: .qemu-x86-64
>>>> +  script:
>>>> +    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
>>>> +  needs:
>>>> +    - debian-bookworm-gcc-debug
>>> Given that the script you wrote (thank you!) can also handle pvh, can we
>>> directly add a pvh job to test.yaml too?
> I guess we can, but is xen.efi + PVH dom0 actually different enough to
> worth testing given we already test MB2+EFI + PVH dom0?

Given that its only an XTF dom0, no.  We're only smoke testing the
"native EFI" bits here.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 23:20:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 23:20:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809100.1221257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw8dk-0007yX-2r; Wed, 02 Oct 2024 23:20:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809100.1221257; Wed, 02 Oct 2024 23:20: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 1sw8dj-0007yQ-Uo; Wed, 02 Oct 2024 23:20:15 +0000
Received: by outflank-mailman (input) for mailman id 809100;
 Wed, 02 Oct 2024 23: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=VgkK=Q6=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sw8di-0007yK-5r
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 23:20:14 +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 df9945dd-8114-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 01:20:12 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a8d29b7edc2so31614466b.1
 for <xen-devel@lists.xenproject.org>; Wed, 02 Oct 2024 16:20:12 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a93cd7a3609sm865623466b.211.2024.10.02.16.20.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 02 Oct 2024 16:20:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: df9945dd-8114-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727911211; x=1728516011; 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=8td8Tc/ZYMUVmIE4bZONjqFLPJlU2/yV07ZZf+6r1ZY=;
        b=LXPw4Pr+ekxQCDI2gCRpWzYA9tg5Y/zpIf/ipngXOhi+R7g2RywUIdfWE0kELr035d
         QmpjDaVYrXY1s232ySg7Kd2uIymR8Fp7CRD1Upb85D9s4Uc0zctw3gSCwYIg3cZRoIMU
         MaNSQvmeVRAIdVXX+k0yUR65ZzVvBmYuli5us=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727911211; x=1728516011;
        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=8td8Tc/ZYMUVmIE4bZONjqFLPJlU2/yV07ZZf+6r1ZY=;
        b=oe9ipUHgxfS6LgorgIQYIOLvU3yl438lHbCH0f/MymE8sRDygvt/cqYOVgOIoG9yCV
         VEjL1ilddbMxwxsNKpI6Dr6yg4yC+GYR2AH1uaUmmdIFNAsKw+yNn2LblK3AErDTDaYp
         RfvGXcUWoNYt2OD6oNnM8sOtl0gOVrfXp93qGyUdc25Ms0ng4C4Wzyxa+G92EpWDdyQP
         oM0BSHpn2JlDMtjWgZflaEbbLvxLUf9ER9hzPfb6ja8gG9poikgu+FMUG3ZwCKCJVtQf
         1z0gtTtqas3vnhYkkq8Y2uLZXm+qs4ghVszMlNmIeXUraC4bxe36GjkY6wR2qtiXlSCp
         lWAQ==
X-Gm-Message-State: AOJu0YyV1Mc/3IwvOQJJLqSMjGyW0F/Urih+1p0+CH4zINRiAbQuEojO
	2AassqVpsFW7xiKhCczvMlGKtDg8g/0a9pjhIq4CvpwHJmoQz9hLl0zh9Al1Jau57+oGwLVNg2r
	FIsk=
X-Google-Smtp-Source: AGHT+IH83iAsi3X7NG94E2JYVXogLSALLm5LBtscW7WFcONDQQBwA8g6Ww0BqpV7nSaLAYZdgNp2SA==
X-Received: by 2002:a17:907:d20:b0:a8b:6ee7:ba12 with SMTP id a640c23a62f3a-a98f8261dbamr377643766b.27.1727911211380;
        Wed, 02 Oct 2024 16:20:11 -0700 (PDT)
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>
Subject: [PATCH] x86/boot: Further simplify CR4 handling in dom0_construct_pv()
Date: Thu,  3 Oct 2024 00:20:08 +0100
Message-Id: <20241002232008.1988682-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The logic would be more robust disabling SMAP based on its precense in CR4,
rather than SMAP's accociation with a synthetic feature.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

v2:
 * Strip LASS changes back out.
---
 xen/arch/x86/pv/dom0_build.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 262edb6bf2f0..ee9ecdc2abbf 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -1057,6 +1057,7 @@ int __init dom0_construct_pv(struct domain *d,
                              module_t *initrd,
                              const char *cmdline)
 {
+    unsigned long cr4 = read_cr4();
     int rc;
 
     /*
@@ -1064,19 +1065,19 @@ int __init dom0_construct_pv(struct domain *d,
      * prevents us needing to write construct_dom0() in terms of
      * copy_{to,from}_user().
      */
-    if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
+    if ( cr4 & X86_CR4_SMAP )
     {
         if ( IS_ENABLED(CONFIG_PV32) )
             cr4_pv32_mask &= ~X86_CR4_SMAP;
 
-        write_cr4(read_cr4() & ~X86_CR4_SMAP);
+        write_cr4(cr4 & ~X86_CR4_SMAP);
     }
 
     rc = dom0_construct(d, image, image_headroom, initrd, cmdline);
 
-    if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
+    if ( cr4 & X86_CR4_SMAP )
     {
-        write_cr4(read_cr4() | X86_CR4_SMAP);
+        write_cr4(cr4);
 
         if ( IS_ENABLED(CONFIG_PV32) )
             cr4_pv32_mask |= X86_CR4_SMAP;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 02 23:30:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 23:30:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809105.1221265 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw8ng-0001UQ-Uc; Wed, 02 Oct 2024 23:30:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809105.1221265; Wed, 02 Oct 2024 23:30: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 1sw8ng-0001UJ-S5; Wed, 02 Oct 2024 23:30:32 +0000
Received: by outflank-mailman (input) for mailman id 809105;
 Wed, 02 Oct 2024 23:30: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=x6XJ=Q6=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sw8nf-0001UD-PP
 for xen-devel@lists.xenproject.org; Wed, 02 Oct 2024 23:30:31 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4f2cc0df-8116-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 01:30:29 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id C3312A4158A;
 Wed,  2 Oct 2024 23:30:19 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id ECA2CC4CEC2;
 Wed,  2 Oct 2024 23:30:26 +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: 4f2cc0df-8116-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727911827;
	bh=asj1HUp9064MXj7WJDFv80bA/tzNRn2wRwlLIVnqIFQ=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=uCCJ8YRn2lblA6g5c88Mgctg6dWANvn/SlY/RXvhLgKY5DBj8HlseiBcJr112i5kG
	 vujeRz48BQ7KQUFAc2KqE/6dSCSQhK4rYfsVZ8XENeU0RYztLiPkEdkSSak1IpgPuU
	 MPnsRYp8OTz0RYwnbKNP2D68Akr/dmk3aPqpAyfn0B6JL+FXP9BWq+iQeRygQpWt1E
	 Yw7R66vAqOz8lyubjcnbavB5XHP0xiwg4FH3gNfBr0F6TKFNIofwGcG1uBWJrt2tk3
	 qi35J5JiIuFPk7APtJ3YK+t+F98/7IY2TWkguL3CrIuM+VNQucW3HIkJSWqZjqMkeX
	 eL7j5COwuVlRA==
Date: Wed, 2 Oct 2024 16:30:25 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
In-Reply-To: <Zv3Pbx1gkeypGQem@mail-itl>
Message-ID: <alpine.DEB.2.22.394.2410021618540.1138574@ubuntu-linux-20-04-desktop>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com> <20241002124245.716302-2-marmarek@invisiblethingslab.com> <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop> <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>
 <Zv3Pbx1gkeypGQem@mail-itl>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1969706452-1727911208=:1138574"
Content-ID: <alpine.DEB.2.22.394.2410021620110.1138574@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-1969706452-1727911208=:1138574
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410021620111.1138574@ubuntu-linux-20-04-desktop>

On Thu, 3 Oct 2024, Marek Marczykowski-Górecki wrote:
> On Wed, Oct 02, 2024 at 03:22:59PM -0700, Stefano Stabellini wrote:
> > I forgot to reply to one important part below
> > 
> > 
> > On Wed, 2 Oct 2024, Stefano Stabellini wrote:
> > > On Wed, 2 Oct 2024, Marek Marczykowski-Górecki wrote:
> > > > Check if xen.efi is bootable with an XTF dom0.
> > > > 
> > > > The TEST_TIMEOUT is set in the script to override project-global value.
> > > > Setting it in the gitlab yaml file doesn't work, as it's too low
> > > > priority
> > > > (https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence).
> > > > 
> > > > The multiboot2+EFI path is tested on hardware tests already.
> > > > 
> > > > Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> > > > ---
> > > > This requires rebuilding debian:bookworm container.
> > > > 
> > > > The TEST_TIMEOUT issue mentioned above applies to xilix-* jobs too. It's
> > > > not clear to me why the default TEST_TIMEOUT is set at the group level
> > > > instead of in the yaml file, so I'm not adjusting the other places.
> > > 
> > > Let me premise that now that we use "expect" all successful tests will
> > > terminate as soon as the success condition is met, without waiting for
> > > the test timeout to expire.
> > > 
> > > There is a CI/CD variable called TEST_TIMEOUT set at the
> > > gitlab.com/xen-project level. (There is also a check in console.exp in
> > > case TEST_TIMEOUT is not set so that we don't run into problems in case
> > > the CI/CD variable is removed accidentally.) The global TEST_TIMEOUT is
> > > meant to be a high value to account for slow QEMU tests running
> > > potentially on our slowest cloud runners.
> > > 
> > > However, for hardware-based tests such as the xilinx-* jobs, we know
> > > that the timeout is supposed to be less than that. The test is running
> > > on real hardware which is considerably faster than QEMU running on our
> > > slowest runners. Basically, the timeout depends on the runner more than
> > > the test. So we override the TEST_TIMEOUT variable for the xilinx-* jobs
> > > providing a lower timeout value.
> > > 
> > > The global TEST_TIMEOUT is set to 1500.
> > > The xilinx-* timeout is set to 120 for ARM and 1000 for x86.
> > > 
> > > You are welcome to override the TEST_TIMEOUT value for the
> > > hardware-based QubesOS tests. At the same time, given that on success
> > > the timeout is not really used, it is also OK to leave it like this.
> >  
> >  
> > > > ---
> > > >  automation/build/debian/bookworm.dockerfile |  1 +
> > > >  automation/gitlab-ci/test.yaml              |  7 ++++
> > > >  automation/scripts/qemu-smoke-x86-64-efi.sh | 44 +++++++++++++++++++++
> > > >  3 files changed, 52 insertions(+)
> > > >  create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh
> > > > 
> > > > diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
> > > > index 3dd70cb6b2e3..061114ba522d 100644
> > > > --- a/automation/build/debian/bookworm.dockerfile
> > > > +++ b/automation/build/debian/bookworm.dockerfile
> > > > @@ -46,6 +46,7 @@ RUN apt-get update && \
> > > >          # for test phase, qemu-smoke-* jobs
> > > >          qemu-system-x86 \
> > > >          expect \
> > > > +        ovmf \
> > > >          # for test phase, qemu-alpine-* jobs
> > > >          cpio \
> > > >          busybox-static \
> > > > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> > > > index 8675016b6a37..74fd3f3109ae 100644
> > > > --- a/automation/gitlab-ci/test.yaml
> > > > +++ b/automation/gitlab-ci/test.yaml
> > > > @@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
> > > >    needs:
> > > >      - debian-bookworm-clang-debug
> > > >  
> > > > +qemu-smoke-x86-64-gcc-efi:
> > > > +  extends: .qemu-x86-64
> > > > +  script:
> > > > +    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
> > > > +  needs:
> > > > +    - debian-bookworm-gcc-debug
> > > 
> > > Given that the script you wrote (thank you!) can also handle pvh, can we
> > > directly add a pvh job to test.yaml too?
> 
> I guess we can, but is xen.efi + PVH dom0 actually different enough to
> worth testing given we already test MB2+EFI + PVH dom0?

As it looks like also Andy thinks this is not useful, I am happy not to
do this. Let's go with PV only as you did.


> > > >  qemu-smoke-riscv64-gcc:
> > > >    extends: .qemu-riscv64
> > > >    script:
> > > > diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh
> > > > new file mode 100755
> > > > index 000000000000..e053cfa995ba
> > > > --- /dev/null
> > > > +++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
> > > > @@ -0,0 +1,44 @@
> > > > +#!/bin/bash
> > > > +
> > > > +set -ex -o pipefail
> > > > +
> > > > +# variant should be either pv or pvh
> > > > +variant=$1
> > > > +
> > > > +# Clone and build XTF
> > > > +git clone https://xenbits.xen.org/git-http/xtf.git
> > > > +cd xtf && make -j$(nproc) && cd -
> > > > +
> > > > +case $variant in
> > > > +    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
> > > > +    *)   k=test-pv64-example     extra= ;;
> > > > +esac
> > > > +
> > > > +mkdir -p boot-esp/EFI/BOOT
> > > > +cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
> > > > +cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
> > > > +
> > > > +cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
> > > > +[global]
> > > > +default=test
> > > > +
> > > > +[test]
> > > > +options=loglvl=all console=com1 noreboot console_timestamps=boot $extra
> > > > +kernel=kernel
> > > > +EOF
> > > > +
> > > > +cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
> > > > +cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
> > > > +
> > > > +rm -f smoke.serial
> > > > +export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
> > > > +        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
> > > > +        -drive if=pflash,format=raw,file=OVMF_VARS.fd \
> > > > +        -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \
> > > > +        -m 512 -monitor none -serial stdio"
> > > > +
> > > > +export TEST_LOG="smoke.serial"
> > > > +export PASSED="Test result: SUCCESS"
> > > > +export TEST_TIMEOUT=120
> > 
> > Although this works, I would prefer keeping the TEST_TIMEOUT overrides
> > in test.yaml for consistency. 
> 
> The problem is this doesn't work. The group-level variable overrides the
> one in yaml. See the commit message and the link there...

Now I understand the problem, well spotted, thanks!

The idea behind having TEST_TIMEOUT defined as a project CI/CD variable
is that it depends on the test infrastructure rather than the Xen code.
So if we suddenly had slower runners we could change TEST_TIMEOUT
without having to change the Xen code itself. So I think we should keep
TEST_TIMEOUT as a project CI/CD variable.

I am not a fan of overwriting the TEST_TIMEOUT variable in the test
scripts, because one test script can be used for multiple different
tests, possibly even with different runners. For instance
qubes-x86-64.sh works with a couple of different hardware runners that
could have different timeout values. But I think it would work OK for
now for our hardware-based tests (e.g. xilinx-smoke-dom0less-arm64.sh
and qubes-x86-64.sh could overwrite TEST_TIMEOUT).

For this specific XTF test, I am not sure it is worth optimizing the
timeout, maybe we should leave it as default. However if we wanted to
lower the timeout value, overwriting it the way you did is OKish as I
cannot think of another way.


> > However, it might be better not to
> > override it (or to override to a higher timeout value), as successful
> > tests will terminate immediately anyway. We need to be cautious about
> > setting TEST_TIMEOUT values too low, as using a slow runner (like a
> > small, busy cloud instance) can lead to false positive failures. This
> > issue occurred frequently with ARM tests when we temporarily moved from
> > a fast ARM server to slower ARM cloud instances a couple of months ago.
> > 
> > On the other hand, adjusting TEST_TIMEOUT for non-QEMU hardware-based
> > tests is acceptable since those tests rely on real hardware
> > availability, which is unlikely to become suddenly slower.
--8323329-1969706452-1727911208=:1138574--


From xen-devel-bounces@lists.xenproject.org Wed Oct 02 23:52:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 02 Oct 2024 23:52:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809110.1221275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw993-0004k5-MA; Wed, 02 Oct 2024 23:52:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809110.1221275; Wed, 02 Oct 2024 23:52: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 1sw993-0004jy-Ja; Wed, 02 Oct 2024 23:52:37 +0000
Received: by outflank-mailman (input) for mailman id 809110;
 Wed, 02 Oct 2024 23:52: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 1sw992-0004jo-AC; Wed, 02 Oct 2024 23:52: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 1sw992-0003uv-1F; Wed, 02 Oct 2024 23:52: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 1sw991-0005oj-MI; Wed, 02 Oct 2024 23:52:35 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sw991-00019j-Lk; Wed, 02 Oct 2024 23:52: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=LOd+OpdQtgmZEx6p7spb56a1Dxu6f+Vv4kKsxV5bDKs=; b=zFj0ES9MD710a6yx6PbC+x+3sI
	Qa1SFrowuf7V3/GoHfEhAW2fh8dLfbqf4tpdyXifxIXjUFB4jhh+vKs+3CgJBkgYEVPn2FiaiEavm
	WR4B1rK2JiT1MmeWgA8yKglVXyeh/BJ8+oAxSsvQt+f6T/BivnfZbJkSr0zZvQ0Fza54=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187942-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187942: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=e73ec569429ba72fbb6829518d6c192b4cd3346f
X-Osstest-Versions-That:
    ovmf=cac73c45c4a9eaf81613260fb52bfc990e59bc0d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 02 Oct 2024 23:52:35 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 e73ec569429ba72fbb6829518d6c192b4cd3346f
baseline version:
 ovmf                 cac73c45c4a9eaf81613260fb52bfc990e59bc0d

Last test of basis   187934  2024-10-02 08:13:17 Z    0 days
Testing same since   187942  2024-10-02 20:14:00 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Doug Flick <dougflick@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    


------------------------------------------------------------
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
   cac73c45c4..e73ec56942  e73ec569429ba72fbb6829518d6c192b4cd3346f -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 00:25:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 00:25:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809117.1221285 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw9eO-0001Ok-7G; Thu, 03 Oct 2024 00:25:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809117.1221285; Thu, 03 Oct 2024 00: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 1sw9eO-0001Od-4U; Thu, 03 Oct 2024 00:25:00 +0000
Received: by outflank-mailman (input) for mailman id 809117;
 Thu, 03 Oct 2024 00:24: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=GA31=Q7=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1sw9eN-0001OV-BI
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 00:24:59 +0000
Received: from fout-a1-smtp.messagingengine.com
 (fout-a1-smtp.messagingengine.com [103.168.172.144])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ea590aa0-811d-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 02:24:56 +0200 (CEST)
Received: from phl-compute-08.internal (phl-compute-08.phl.internal
 [10.202.2.48])
 by mailfout.phl.internal (Postfix) with ESMTP id 30ABB138069B;
 Wed,  2 Oct 2024 20:24:55 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-08.internal (MEProxy); Wed, 02 Oct 2024 20:24:55 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 20:24:54 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ea590aa0-811d-11ef-a0ba-8be0dac302b0
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=1727915095;
	 x=1728001495; bh=51heNHMuj9nRTyZhOVpYS0SLENNRLrsddpl1z1kRidw=; b=
	dNKKdzIPfmBVJ7/4WwX/kmvG5q9G05xFr25tZrxarVwa4w/GNg7ipbRU8uUapJkx
	Wj3zRz1d2TQWKQJJMx5LJhJJ2TgAny98YAHxQgGB5RJFI03jzMCrcx3GYSOfF+wf
	NMpdKlhHHk9jKrczcTlh1Cc+HnuVeGxDDalOPzH8zfQF2OHmCrhcq30hxCkPx3xJ
	jX0vcTtgqVwNDU1btJO6f/KKjzFXzYXLchoj/FUKiFZD/hyCW20ho4KLGtGLv+Zn
	zcgHiGJ6OdRMe+hPZuQbh1ha7dcsYP/TvGldlB8ibkEB021jyvYB6nzbGfN0MDaD
	CDWJ0CBOYSfX3CDflgatZA==
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=1727915095; x=1728001495; bh=51heNHMuj9nRTyZhOVpYS0SLENNR
	Lrsddpl1z1kRidw=; b=bJShgPpOppsVBgUP37MG+tIXVneviV+skce8/dierDDN
	S4dmz6AJkkDCZ44omhNRi44eJYtB4S5b/ppwoJKrYx+aKGnZoeqbDZQ8ixtFYOc7
	fwtRBFSBvc61gLrZPatdSoKZLxiQfr+NfU1JsogH1lLE2vuWsaUEkaJfXpSuDByD
	jCsGXwI4e7QddDsfPZUHeydmMQQnYIktGTVp6WdihsrdTk0yrxFVrc0nuCDbQm3Y
	CrC7T77m01WFAHoaa+TFGNFpYoFdvg8FldNiT0EH73GP3cnbeCoZcUJSq+uSLX1d
	vRjQMCgc+swnIGtLKhp95gRpUvlsY5e2GOi33oWPOg==
X-ME-Sender: <xms:VuT9ZqqVnNGr2ooyxg2-Urj1b4knNLjmL9vta_fWhV_SaoT2qNOiVQ>
    <xme:VuT9ZoqR0JqK73CIdZWaCWlc0OCyc7fzWD564KsVgmfpGgoAaSLGsdpVeFKAAmRyD
    -IvP1Bo4Eg5kA>
X-ME-Received: <xmr:VuT9ZvNLKBx45j0rwM8V1d8tq3ysfegW5NEtyUR2rYTy4q_WmJSq3TeoX0ZZ3MnilU7usPfvuAWVe8Uk7NzYnmJaXyqg0ekhnw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvtddgfeehucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepfedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepshhsthgr
    sggvlhhlihhniheskhgvrhhnvghlrdhorhhgpdhrtghpthhtohepgigvnhdquggvvhgvlh
    eslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtoheptggrrhguohgv
    segtrghrughovgdrtghomh
X-ME-Proxy: <xmx:VuT9Zp4UTDQDpqzdtTnymPvzg2eCNjNP2F2BGpHepgPQPlhcb6pgNA>
    <xmx:VuT9Zp5_1uCDTKAm-btJLjocBRrA81-sCqiBlt9zaNEr2RwFt1MGww>
    <xmx:VuT9ZpjmipyiwTPA1fagXtws2-GJYpfRp-wM1bjK1YfUMA-J3xQQqA>
    <xmx:VuT9Zj5QDkkQWJ3rhBZ3dg9ySa09Fb-u76metPDMBQ9kq6lEGb54Ww>
    <xmx:V-T9ZpGiioU7LLLCTeY17vhnn0UwCgPW92sNezQAYgRNI9bmOU8uu43T>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 3 Oct 2024 02:24:51 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
Message-ID: <Zv3kVEljCcM-Ww91@mail-itl>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com>
 <20241002124245.716302-2-marmarek@invisiblethingslab.com>
 <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop>
 <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>
 <Zv3Pbx1gkeypGQem@mail-itl>
 <alpine.DEB.2.22.394.2410021618540.1138574@ubuntu-linux-20-04-desktop>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="eph3G+gSaCOwf5OZ"
Content-Disposition: inline
In-Reply-To: <alpine.DEB.2.22.394.2410021618540.1138574@ubuntu-linux-20-04-desktop>


--eph3G+gSaCOwf5OZ
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Oct 2024 02:24:51 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86

On Wed, Oct 02, 2024 at 04:30:25PM -0700, Stefano Stabellini wrote:
> On Thu, 3 Oct 2024, Marek Marczykowski-G=C3=B3recki wrote:
> > The problem is this doesn't work. The group-level variable overrides the
> > one in yaml. See the commit message and the link there...
>=20
> Now I understand the problem, well spotted, thanks!
>=20
> The idea behind having TEST_TIMEOUT defined as a project CI/CD variable
> is that it depends on the test infrastructure rather than the Xen code.
> So if we suddenly had slower runners we could change TEST_TIMEOUT
> without having to change the Xen code itself. So I think we should keep
> TEST_TIMEOUT as a project CI/CD variable.
>=20
> I am not a fan of overwriting the TEST_TIMEOUT variable in the test
> scripts, because one test script can be used for multiple different
> tests, possibly even with different runners. For instance
> qubes-x86-64.sh works with a couple of different hardware runners that
> could have different timeout values. But I think it would work OK for
> now for our hardware-based tests (e.g. xilinx-smoke-dom0less-arm64.sh
> and qubes-x86-64.sh could overwrite TEST_TIMEOUT).
>=20
> For this specific XTF test, I am not sure it is worth optimizing the
> timeout, maybe we should leave it as default.=20

The default of 25min is quite wasteful for XTF test that failed...

> However if we wanted to
> lower the timeout value, overwriting it the way you did is OKish as I
> cannot think of another way.

If we'd need this option more often, Maybe we could set
TEST_TIMEOUT_OVERRIDE in test yaml, and then test script use that (if
present) instead? Or maybe have few "classes" of timeouts set globally
(TEST_TIMEOUT_SHORT, TEST_TIMEOUT_MEDIUM, TEST_TIMEOUT_LONG? or some
better named categories). But I don't think it's worth it for this XTF
test yet.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--eph3G+gSaCOwf5OZ
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb95FQACgkQ24/THMrX
1yyrYQf+J5CCNQ6tZsxbDis1rKP/bqhvES+tiXzi+FuavEYzr07ES1qgmSf62Ytc
bH2NSOkZpbY0bDGbLxYNF2SorFR2/CedmOY86aRTk8fXvBcnb2wLJZNegAI/0b8q
sYcjRTRjCq+3KmiVQdmT3ELyC9PdulUdmkXsNyCuGhA6liP4tSuvH/9VbXkdYsxl
0sOx7wqNB/4kxSBUgoMR2Atd8h8PuSGyaGUyyY7p/aeoXPUi1mCnyamrPiEXFWui
bX6UOlu9PogjP0Xp0WoJwDSr9KTXSAR86/q1VqZBhxN8GQhM8/RapgY473AxZxLV
x5lWobzMpJRaw5K7X4Wv6VKQ37w9SQ==
=bgbt
-----END PGP SIGNATURE-----

--eph3G+gSaCOwf5OZ--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 00:32:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 00:32:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809122.1221297 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw9lc-0003BL-0r; Thu, 03 Oct 2024 00:32:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809122.1221297; Thu, 03 Oct 2024 00:32: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 1sw9lb-0003BE-St; Thu, 03 Oct 2024 00:32:27 +0000
Received: by outflank-mailman (input) for mailman id 809122;
 Thu, 03 Oct 2024 00:32: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=g6hD=Q7=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sw9lb-0003B8-24
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 00:32:27 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org
 [2604:1380:4641:c500::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f5eec7db-811e-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 02:32:25 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 510BA5C5B3D;
 Thu,  3 Oct 2024 00:32:19 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 57D60C4CEC2;
 Thu,  3 Oct 2024 00:32:22 +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: f5eec7db-811e-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727915543;
	bh=kybb9K9gGrhN6faUppRI0xiJumZoOCYc4JQiOttztdQ=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=EmSiCRPcgg3qX+7123OM5J5JZmkyxBb+K4N/yuHZ0IhsjEab7aepLTdXWVUkC9M9i
	 5j9Bs2KDeOFPE5D/yKjDDicudc5lKem5qcRgYWrZiZa7e3kQCeOwUt3w1Hg7VTXZNq
	 FJEf85bpZRRMGDRSjcY12llOLUPOB8JWxCjKT399UzMEJE/2l6Qczfz2RUfiH46MN2
	 YwSIzqnH3b2GxvfuWSL2PG57FCbWGPAg7lmqkc7O5zKmhSz2TasmkHF/Hz3Gx02fJ4
	 51ijUFpzMVrVVpmu17C1jrxpKcICcDOukqH0lW6jZlmCkGsyZu10t4U7tvZDUltZQ7
	 LME9X8B0BZLWQ==
Date: Wed, 2 Oct 2024 17:32:21 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
In-Reply-To: <Zv3kVEljCcM-Ww91@mail-itl>
Message-ID: <alpine.DEB.2.22.394.2410021731490.1138574@ubuntu-linux-20-04-desktop>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com> <20241002124245.716302-2-marmarek@invisiblethingslab.com> <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop> <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>
 <Zv3Pbx1gkeypGQem@mail-itl> <alpine.DEB.2.22.394.2410021618540.1138574@ubuntu-linux-20-04-desktop> <Zv3kVEljCcM-Ww91@mail-itl>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-777045704-1727915543=:1138574"

  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-777045704-1727915543=:1138574
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Thu, 3 Oct 2024, Marek Marczykowski-Górecki wrote:
> On Wed, Oct 02, 2024 at 04:30:25PM -0700, Stefano Stabellini wrote:
> > On Thu, 3 Oct 2024, Marek Marczykowski-Górecki wrote:
> > > The problem is this doesn't work. The group-level variable overrides the
> > > one in yaml. See the commit message and the link there...
> > 
> > Now I understand the problem, well spotted, thanks!
> > 
> > The idea behind having TEST_TIMEOUT defined as a project CI/CD variable
> > is that it depends on the test infrastructure rather than the Xen code.
> > So if we suddenly had slower runners we could change TEST_TIMEOUT
> > without having to change the Xen code itself. So I think we should keep
> > TEST_TIMEOUT as a project CI/CD variable.
> > 
> > I am not a fan of overwriting the TEST_TIMEOUT variable in the test
> > scripts, because one test script can be used for multiple different
> > tests, possibly even with different runners. For instance
> > qubes-x86-64.sh works with a couple of different hardware runners that
> > could have different timeout values. But I think it would work OK for
> > now for our hardware-based tests (e.g. xilinx-smoke-dom0less-arm64.sh
> > and qubes-x86-64.sh could overwrite TEST_TIMEOUT).
> > 
> > For this specific XTF test, I am not sure it is worth optimizing the
> > timeout, maybe we should leave it as default. 
> 
> The default of 25min is quite wasteful for XTF test that failed...
> 
> > However if we wanted to
> > lower the timeout value, overwriting it the way you did is OKish as I
> > cannot think of another way.
> 
> If we'd need this option more often, Maybe we could set
> TEST_TIMEOUT_OVERRIDE in test yaml, and then test script use that (if
> present) instead? Or maybe have few "classes" of timeouts set globally
> (TEST_TIMEOUT_SHORT, TEST_TIMEOUT_MEDIUM, TEST_TIMEOUT_LONG? or some
> better named categories). But I don't think it's worth it for this XTF
> test yet.

Agreed, and good idea about TEST_TIMEOUT_OVERRIDE
--8323329-777045704-1727915543=:1138574--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 00:36:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 00:36:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809130.1221305 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw9pt-00049y-IX; Thu, 03 Oct 2024 00:36:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809130.1221305; Thu, 03 Oct 2024 00:36: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 1sw9pt-00049r-Fw; Thu, 03 Oct 2024 00:36:53 +0000
Received: by outflank-mailman (input) for mailman id 809130;
 Thu, 03 Oct 2024 00:36: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=g6hD=Q7=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sw9ps-00049l-Kb
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 00:36:52 +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 945a4832-811f-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 02:36:51 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 1132D5C5B5B;
 Thu,  3 Oct 2024 00:36:46 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7FEBAC4CEC2;
 Thu,  3 Oct 2024 00:36: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: 945a4832-811f-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727915809;
	bh=cNl6S0n9xfO+bG2xVlnc3uWFl/hHK/cbU5kEnaMXIho=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=A/OVn+GRMQXbaDomBIDHcdEkqyplp+peNYHCykps7sNCk/9he2K8mflXTfB7dEIUI
	 3JUbFb+1KGEJZvC79h7UXM5odMt/garHkL/qVYgqyKLEXkNz+BQ77ayenWCotbAuDJ
	 3Hl5ahaWOeje+NXwucZI7pPcNNOlJpb3So1CCEVqUS3f8viS0kXHvSrGLAm+fm6gLa
	 w4QY6S3UFA9QvQpPpSikkYCzuIqWKAB3dCv1Koj95FhCiKstCee/AnPItEVV0PexoR
	 J61PT65hhcSpTLMBBD7TEPajBl1XvgthGAQJFiPJRaw/NH7uUydOA9Ld+hySfJNn3k
	 K3bmt95H7yBxg==
Date: Wed, 2 Oct 2024 17:36:47 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Federico Serafini <federico.serafini@bugseng.com>
cc: xen-devel@lists.xenproject.org, consulting@bugseng.com, 
    "Daniel P. Smith" <dpsmith@apertussolutions.com>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    Jan Beulich <jbeulich@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule
 13.6
In-Reply-To: <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
Message-ID: <alpine.DEB.2.22.394.2410021736050.1138574@ubuntu-linux-20-04-desktop>
References: <cover.1727690180.git.federico.serafini@bugseng.com> <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 30 Sep 2024, Federico Serafini wrote:
> guest_handle_ok()'s expansion contains a sizeof() involving its
> first argument which is guest_handle_cast().
> The expansion of the latter, in turn, contains a variable
> initialization.
> 
> Since MISRA considers the initialization (even of a local variable)
> a side effect, the chain of expansions mentioned above violates
> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
> contain any expression which has potential side effect).
> 
> Refactor the code to address the rule violation.
> 
> Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 00:37:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 00:37:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809131.1221316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sw9q7-0004Wj-RC; Thu, 03 Oct 2024 00:37:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809131.1221316; Thu, 03 Oct 2024 00:37: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 1sw9q7-0004Wa-Mv; Thu, 03 Oct 2024 00:37:07 +0000
Received: by outflank-mailman (input) for mailman id 809131;
 Thu, 03 Oct 2024 00:37: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=g6hD=Q7=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sw9q6-00049l-Fq
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 00:37:06 +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 9d11683b-811f-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 02:37:05 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id AB9885C0F95;
 Thu,  3 Oct 2024 00:37:00 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id BA4B6C4CEC2;
 Thu,  3 Oct 2024 00:37:03 +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: 9d11683b-811f-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727915824;
	bh=QhO2f1ABbBC2phl3CEcuzs338jR63ywTVm0XNJp2VmE=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=OjPAWUUduAmk8YyF7TJitI03zahsvzK4sCx1oMJbVVSLUWR8VDLfJJUFuhxq+4hh7
	 QdVAraB6msiwEsQrEqALBb9sSLaqK/nzqKqd+3eoKlstP7pb3CjjhtAuSAZWhyEWcn
	 +EX/cJy3JFR4Qqf0Lm2TJ6V0m9viijaQqlgwZIJhpQKywS2Zv4llhHGSXJ8uDWGGnh
	 uETJDolNDjs5uIw6rMfCKcXGqZFB7tYQQYbZF2Om3dUup20uMASwIs7dgJbNiXO1Mj
	 TA2GyttCLd2Q6LyEqjNpdt+q2V9wMz2OX20Aor6WcQD4GZlAmXjSKp1qNUCW361Ala
	 /oeL50I8OBf+g==
Date: Wed, 2 Oct 2024 17:37:02 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Federico Serafini <federico.serafini@bugseng.com>
cc: xen-devel@lists.xenproject.org, consulting@bugseng.com, 
    Simone Ballarin <simone.ballarin@bugseng.com>, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v2 3/3] automation/eclair: tag Rule 13.6 as clean
In-Reply-To: <8fc4fe3f0ef744ef0c379bf76b8425deac40088c.1727690180.git.federico.serafini@bugseng.com>
Message-ID: <alpine.DEB.2.22.394.2410021736560.1138574@ubuntu-linux-20-04-desktop>
References: <cover.1727690180.git.federico.serafini@bugseng.com> <8fc4fe3f0ef744ef0c379bf76b8425deac40088c.1727690180.git.federico.serafini@bugseng.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 30 Sep 2024, Federico Serafini wrote:
> Update ECLAIR configuration to consider Rule 13.6 as clean:
> new violations of this rule will cause a failure of the CI pipeline.
> 
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>  automation/eclair_analysis/ECLAIR/tagging.ecl | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/automation/eclair_analysis/ECLAIR/tagging.ecl b/automation/eclair_analysis/ECLAIR/tagging.ecl
> index b8448938e6..76032b1fe1 100644
> --- a/automation/eclair_analysis/ECLAIR/tagging.ecl
> +++ b/automation/eclair_analysis/ECLAIR/tagging.ecl
> @@ -60,6 +60,7 @@ MC3R1.R11.6||
>  MC3R1.R11.7||
>  MC3R1.R11.9||
>  MC3R1.R12.5||
> +MC3R1.R13.6||
>  MC3R1.R14.1||
>  MC3R1.R14.3||
>  MC3R1.R14.4||
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 01:11:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 01:11:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809142.1221325 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swANk-00017Q-5S; Thu, 03 Oct 2024 01:11:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809142.1221325; Thu, 03 Oct 2024 01:11: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 1swANk-00017J-2a; Thu, 03 Oct 2024 01:11:52 +0000
Received: by outflank-mailman (input) for mailman id 809142;
 Thu, 03 Oct 2024 01:11: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=GA31=Q7=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swANi-000177-Qw
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 01:11:50 +0000
Received: from fhigh-a7-smtp.messagingengine.com
 (fhigh-a7-smtp.messagingengine.com [103.168.172.158])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 769693a4-8124-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 03:11:49 +0200 (CEST)
Received: from phl-compute-05.internal (phl-compute-05.phl.internal
 [10.202.2.45])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 80033114023B;
 Wed,  2 Oct 2024 21:11:47 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-05.internal (MEProxy); Wed, 02 Oct 2024 21:11:47 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 2 Oct 2024 21:11:45 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 769693a4-8124-11ef-a0ba-8be0dac302b0
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=1727917907;
	 x=1728004307; bh=CtUHP3jB5cRP6cAZbep5wGuWQ0lBrQ5/ob0Vx5TtEGg=; b=
	M4+c/4HCpKL129aT0hi4k6iTb2MQ51OJZia91+FQ6syEIkNv1TqzVa9PwIWqVQWt
	XBNj84gJNCDvkP8excO0TD17K+rMZp4gQyjiuMonske+BAaO0Z4IxWKeVDyxlaYv
	TWXcK2qt0wwXegNDxTnq8VFESJIljprWeE+2g3vTYdICaR2Z+36rNKBY823hmxue
	8IdVZJSlp47NH374OSd//Q1PYmieGM56r5XN/3Sgz9Qi37g+8SUtAdQQZ7G7O089
	8+xRtjJgvhiPVd8eXpUHKLPlV6TG9vN/xurRZH73eZSD5eexCraj/oDHS+cd4gpX
	hzGbY+OnEQ1dAFXJpoW40g==
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=1727917907; x=1728004307; bh=CtUHP3jB5cRP6cAZbep5wGuWQ0lB
	rQ5/ob0Vx5TtEGg=; b=E4hvNP+lIAdRYPmqC+e4iYsKx3hFqeK5NWl9qY0cBMbu
	7icVlZEUbht5uk4VNtX4Er5j+ndjxWG2mnEeTggVZ5KbDwUmmVZ4iGlr7Mg1vo1h
	9CQ7PzBFVvmIXRCqY5atOIf3i8jZEWXRW3Fa7UwTE+u3IQZZepeME5s1OUPYIkg2
	XSPmxmztllHbjuClRdJrOly5Hy19sbVSAWeTgNrH26+1Tk9UYRXQhC/6jNoLYcvQ
	pXCTcnvmofykkW5vjK7xyyaMw6hqGKDH6qdQAOl8P7ghZDu+YKOJ3TJbdwwqNCxs
	Lf01ShgTnI+z9cgXxXZJtfFrhxtXSrfbD2SFwRCoMw==
X-ME-Sender: <xms:U-_9Zotv97u2wMHoDx3PK629MZKxbjN0B3O7fC8B8dfTH8ae4Sy6iA>
    <xme:U-_9Zld8q_wp3iheXqfiUcbdd7FplHHIViQSvmypuyVVPWZE4btW2ksuqqq8kTYj4
    be-O_amoD-tSg>
X-ME-Received: <xmr:U-_9ZjxzTrDmaoR8zgHHwdToiJ1Zji4nXc2zLqi_9DT0KTxkeZfR80iGCoXtJBYOdLXhBAS_wsuG2jxAxXNo2ENW7hLHZ03ycA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvtddggeegucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepveeujeetgeelleetudeuvefhtefgffejvedtvdfgieevheetheelge
    euledvjeevnecuffhomhgrihhnpehgihhtlhgrsgdrtghomhenucevlhhushhtvghrufhi
    iigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeeipdhmohguvgep
    shhmthhpohhuthdprhgtphhtthhopehfrhgvughirghnohdriihighhlihhosegtlhhouh
    gurdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhho
    jhgvtghtrdhorhhgpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdprh
    gtphhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghp
    thhtoheprhhoghgvrhdrphgruhestghithhrihigrdgtohhmpdhrtghpthhtohepughpsh
    hmihhthhesrghpvghrthhushhsohhluhhtihhonhhsrdgtohhm
X-ME-Proxy: <xmx:U-_9ZrNkIhW1P2sZziiQnxQ3TsOj5WF81WN3L5qkgCuUn1XNocXOKA>
    <xmx:U-_9Zo92ZTHJqb3x-cH2_JdeTdmXTf4bMnhr9IitoibfAJflPIp2mw>
    <xmx:U-_9ZjWRcv9rbVbgdCErrI0Xeb8TmhGhcAGNyJ99V02KV48QBIwpdw>
    <xmx:U-_9ZhcDt_c4-qzLFYZ-WnUCnMhY0T0JaAQPNhWxw0VUlMGlCiBi8A>
    <xmx:U-_9ZnknJibpdwvYp9zykWEzpOwQ_b0E4dmAWYZ15xOXG2qt7y4dJdNV>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 3 Oct 2024 03:11:43 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code
Message-ID: <Zv3vUCLlaZSN84D_@mail-itl>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <Zv1S88isxSSMuqqk@mail-itl>
 <CACHz=ZhmsA_7eiV+MXi6=3NRzro_sZZK+-Kt-PJ_FS6RfZPZ6g@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="H/4eFjPcwcvGvPEV"
Content-Disposition: inline
In-Reply-To: <CACHz=ZhmsA_7eiV+MXi6=3NRzro_sZZK+-Kt-PJ_FS6RfZPZ6g@mail.gmail.com>


--H/4eFjPcwcvGvPEV
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Oct 2024 03:11:43 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code

On Wed, Oct 02, 2024 at 04:27:19PM +0100, Frediano Ziglio wrote:
> On Wed, Oct 2, 2024 at 3:04=E2=80=AFPM Marek Marczykowski-G=C3=B3recki
> <marmarek@invisiblethingslab.com> wrote:
> >
> > On Tue, Oct 01, 2024 at 11:22:37AM +0100, Frediano Ziglio wrote:
> > > This series came from part of the work of removing duplications betwe=
en
> > > boot code and rewriting part of code from assembly to C.
> > > Rewrites EFI code in pure C.
> >
> > The MB2+EFI tests on Adler Lake fail with this series:
> > https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/14787667=
82
> > Looking at the VGA output (unfortunately not collected by the test
> > itself) it hangs just after bootloader, before printing anything on the
> > screen (or even clearing it after bootloader). The serial is silent too.
> >
>=20
> I tried multiple times to take a look at the logs, but I keep getting err=
or 500.

500? That's weird. Anyway, serial log is empty, so you haven't lost
much.
But also, I've ran it a couple more times and it is some regression.
Staging reliably passes while staging+this series fails.

Unfortunately I don't have any more info besides it hangs before
printing anything on serial or VGA. Maybe it hanging only on Intel but
not AMD is some hint? Or maybe it's some memory layout or firmware
differences that matter here (bootloader is exactly the same)?
FWIW some links:
successful staging run on ADL: https://gitlab.com/xen-project/people/marmar=
ek/xen/-/jobs/7980146338
failed staging+this run on ADL: https://gitlab.com/xen-project/people/marma=
rek/xen/-/jobs/7980330394
successful staging run on Zen3+: https://gitlab.com/xen-project/people/marm=
arek/xen/-/jobs/7980146359
successful staging+this run on Zen3+: https://gitlab.com/xen-project/people=
/marmarek/xen/-/jobs/7980146359

> > It does pass on Zen 3+ runners.
> >
> > Since there were some issues with the ADL runner today on plain staging,
> > I'm not 100% sure if it isn't some infrastructure issue yet. But the
> > symptoms look different than usual infra issues (and different than
> > todays failures on staging), so I think it's more likely an issue with
> > the patches here.
> >
> > > Changes since v1, more details in specific commits:
> > > - style updates;
> > > - comments and descriptions improvements;
> > > - other improvements.
> > >
> > > Changes since v2:
> > > - rebased on master, resolved conflicts;
> > > - add comment on trampoline section.
> > >
> > > Changes since v3:
> > > - changed new function name;
> > > - declare efi_multiboot2 in a separate header;
> > > - distinguish entry point from using magic number;
> > > - other minor changes (see commens in commits).
> > >
> > > Changes since v4:
> > > - rebase on staging;
> > > - set %fs and %gs as other segment registers;
> > > - style and other changes.
> > >
> > > Changes since v5:
> > > - fixed a typo.
> > >
> > > Changes since v6:
> > > - remove merged patch;
> > > - comment and style;
> > > - change some pointer checks to avoid overflows;
> > > - rename parse-mbi2.c to mbi2.c.
> > >
> > > Frediano Ziglio (2):
> > >   x86/boot: Rewrite EFI/MBI2 code partly in C
> > >   x86/boot: Improve MBI2 structure check
> > >
> > >  xen/arch/x86/boot/head.S       | 146 +++++++------------------------=
--
> > >  xen/arch/x86/efi/Makefile      |   1 +
> > >  xen/arch/x86/efi/efi-boot.h    |   7 +-
> > >  xen/arch/x86/efi/mbi2.c        |  66 +++++++++++++++
> > >  xen/arch/x86/efi/stub.c        |  10 +--
> > >  xen/arch/x86/include/asm/efi.h |  18 ++++
> > >  6 files changed, 123 insertions(+), 125 deletions(-)
> > >  create mode 100644 xen/arch/x86/efi/mbi2.c
> > >  create mode 100644 xen/arch/x86/include/asm/efi.h
> > >
>=20
> Frediano

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--H/4eFjPcwcvGvPEV
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb971AACgkQ24/THMrX
1ywg3gf/UAtUQR4iHMwE9e+Xg0JKg1094gogZLv/jLqoJKsP5xQfDcWm0cvDfGWB
rnPWpn4dw5oIUNo53ZSLs1i1+jXoieU1ivvxpYAL2/oZznBDJNl1dVPLPzMhLGSe
T3IhwvuEBGQZGTkCbX8DcQ4bqh9vBdopBbz37EMeunPWmKsIwLgUjJdQO9Qc1HqT
qV0iO0vLKU2/o3A1MW6o27tFpvv5fSMB5O9aWpoO7cenvETAFlkaCx+ZzN7D7Mh9
nAN7T59UpPZKCTR1Fwh8YrNJQP02SVLubHytd5IzBU8LdMk/vtk6AkSiJmjq2KwD
PpOUs2FhS8cNGqG2F9fXRTh4Y79fEg==
=XBYH
-----END PGP SIGNATURE-----

--H/4eFjPcwcvGvPEV--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 01:20:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 01:20:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809147.1221336 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swAWN-0002uK-Ve; Thu, 03 Oct 2024 01:20:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809147.1221336; Thu, 03 Oct 2024 01:20: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 1swAWN-0002uD-Sc; Thu, 03 Oct 2024 01:20:47 +0000
Received: by outflank-mailman (input) for mailman id 809147;
 Thu, 03 Oct 2024 01:20: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 1swAWM-0002u0-EY; Thu, 03 Oct 2024 01:20: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 1swAWM-0005Bl-8Z; Thu, 03 Oct 2024 01:20: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 1swAWL-00015p-RK; Thu, 03 Oct 2024 01:20:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swAWL-0006aZ-Qh; Thu, 03 Oct 2024 01:20: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=mGMWG4aMhIChlNzz5jhYNcQclDf4ABMtF3rRyN1pD2w=; b=mOS+RFO6SVDE1xGXT8he1nFMa1
	67iC1tYJv7JqvWvSOemUA0/S4nqZGP0Ve5NQuWS+LZ/2pbBNFgXOwC1d7xW/nlvwsP/JXBUzvuAaR
	eejGjJQBQ4sv+kUhDcklJx9zPcciPSlTZPzAyv6+W/3qnGuOZrxVdiX3O8A1idQ6mkOc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187939-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187939: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl: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-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2: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-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-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2: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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw: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-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=b102c9f1ce29262f33400920eeb41f23394ea99d
X-Osstest-Versions-That:
    xen=633ee8b2df963f7e5cb8de1219c1a48bfb4447f6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 01:20:45 +0000

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

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 187930
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187930
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187930
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187930
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187930
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187930
 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-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-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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  b102c9f1ce29262f33400920eeb41f23394ea99d
baseline version:
 xen                  633ee8b2df963f7e5cb8de1219c1a48bfb4447f6

Last test of basis   187930  2024-10-02 01:39:53 Z    0 days
Testing same since   187939  2024-10-02 14:20:13 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Ayan Kumar Halder <ayan.kumar.halder@amd.com>
  Jan Beulich <jbeulich@suse.com>
  Michal Orzel <michal.orzel@amd.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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   633ee8b2df..b102c9f1ce  b102c9f1ce29262f33400920eeb41f23394ea99d -> master


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 07:41:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 07:41:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809182.1221382 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swGSi-0008GY-Dl; Thu, 03 Oct 2024 07:41:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809182.1221382; Thu, 03 Oct 2024 07:41: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 1swGSi-0008GR-AQ; Thu, 03 Oct 2024 07:41:24 +0000
Received: by outflank-mailman (input) for mailman id 809182;
 Thu, 03 Oct 2024 07:41: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 1swGSh-0008GF-EL; Thu, 03 Oct 2024 07:41: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 1swGSh-0004wH-3c; Thu, 03 Oct 2024 07:41: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 1swGSg-0006TU-Lb; Thu, 03 Oct 2024 07:41:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swGSg-0005Gs-KT; Thu, 03 Oct 2024 07:41: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=QUUYTOvI6zM9M6QXKtyyyMX80C7YTwkR/axY2hDl5xw=; b=uDWwMVlFD+K+9bNlQnnqb1lkL6
	VxdF/RPh5rbdoJz56N2+sIDgtJWyhHjnhYJ1ifL7B7Hx80qoYTbFc8x3A6agu8oPzTXlumv67PTwy
	RwNXktpC7Qt2jDXw8Ue3tPaBmCrIkT80litityiBMRZx9JQxC4HCpXb+0BtRzYa9geLk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187941-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187941: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-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-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-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-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-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-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-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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-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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f23aa4c0761a70bfd046dd5755281667f0769a94
X-Osstest-Versions-That:
    linux=e32cde8d2bd7d251a8f9b434143977ddf13dcec6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 07:41:22 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-qcow2 19 guest-start/debian.repeat fail pass in 187946-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187912
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187912
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187912
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187912
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187912
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187912
 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-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-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-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-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-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                f23aa4c0761a70bfd046dd5755281667f0769a94
baseline version:
 linux                e32cde8d2bd7d251a8f9b434143977ddf13dcec6

Last test of basis   187912  2024-09-30 20:42:51 Z    2 days
Testing same since   187941  2024-10-02 20:13:24 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Benjamin Tissoires <bentiss@kernel.org>
  Damien Le Moal <dlemoal@kernel.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Jiri Kosina <jkosina@suse.com>
  Liao Chen <liaochen4@huawei.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mikulas Patocka <mpatocka@redhat.com>
  Nuno Sa <nuno.sa@analog.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                               fail    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   e32cde8d2bd7..f23aa4c0761a  f23aa4c0761a70bfd046dd5755281667f0769a94 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 07:46:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 07:46:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809188.1221392 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swGXH-0000T2-UP; Thu, 03 Oct 2024 07:46:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809188.1221392; Thu, 03 Oct 2024 07:46: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 1swGXH-0000Sv-RU; Thu, 03 Oct 2024 07:46:07 +0000
Received: by outflank-mailman (input) for mailman id 809188;
 Thu, 03 Oct 2024 07:46: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=CNe7=Q7=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swGXG-0000Sl-Os
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 07:46:06 +0000
Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com
 [2a00:1450:4864:20::642])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8a74b8c0-815b-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 09:46:03 +0200 (CEST)
Received: by mail-ej1-x642.google.com with SMTP id
 a640c23a62f3a-a8a897bd4f1so68093566b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 00:46:03 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99100a508esm49249366b.1.2024.10.03.00.46.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 00:46:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8a74b8c0-815b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727941563; x=1728546363; 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=76tTwsciSNRSOnBz7Iac6NfKFoC2sTYcF9+DncgDcy4=;
        b=DpbmlvOkKbsCsSeDun5qcNoGVnMRMiqKSSuKADtV7MlCs/q4Pi918W5tCPPoW/Lxas
         aguQBuPdyFZyAS+jOYSiOoYRPCTM/4j2PBOZD4Xkh6EA8HDr+LnLosBeXEX00/PQzNeI
         VLDp4JZHSX75rfbtpYnVGD3QYJeXoeCOiT3Yk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727941563; x=1728546363;
        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=76tTwsciSNRSOnBz7Iac6NfKFoC2sTYcF9+DncgDcy4=;
        b=PoxNu9pKa+B4HkFVVQIOk98x6lXYICk/LQp1kStLf4/wXeBR65RvgipwkP81j4jRyq
         oF+qWNX1dZDpsPa9B0zzVAAII6dujomb37r8ga8cw7tSTXi0Lf+bQwSDycCKp7GLzZZ7
         F0TYK8noRIHU9jdz31jCK4BGTuAhL1kqkixnNxa9d+9kOwLGTpiqNsPpJpwGbrTgEDwC
         TNco4MjUnT9sDlI4HeHlUHwMn8spcd9PoZRSvgbCSDSeYnBVA0TXSE2Pa9yO26yhJOQK
         Z5haPrxzp+nzXVJ7m0CJFN0NJvNIeIGkmylQTSIhZqT7wuekauEvPpmC+kBZZ/nQ6AVJ
         2nfg==
X-Gm-Message-State: AOJu0Yz+tNzU4TCTDwyeet8Y93qoU8XJxQK+0zcCtG8I2gSHTpHbE0HO
	Ufqd4HSDNy3Y6rlUPvbkQRIhrDXENAf2qzWEl4n1KjaYEPw7IfJOjXwDrsK8GpI=
X-Google-Smtp-Source: AGHT+IHGc3qc8d5q03N+wH9kpRg+eZYvfy/eeavtolioCHVGmpgO/8Wt4DPQd1LrQFiz61HgUPbKZw==
X-Received: by 2002:a17:906:ee89:b0:a8a:906d:b485 with SMTP id a640c23a62f3a-a98f823654emr555984466b.26.1727941563246;
        Thu, 03 Oct 2024 00:46:03 -0700 (PDT)
Message-ID: <b95e749e-9495-4ebc-88b0-3e71dbb44d91@citrix.com>
Date: Thu, 3 Oct 2024 08:46:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <Zv1S88isxSSMuqqk@mail-itl>
 <CACHz=ZhmsA_7eiV+MXi6=3NRzro_sZZK+-Kt-PJ_FS6RfZPZ6g@mail.gmail.com>
 <Zv3vUCLlaZSN84D_@mail-itl>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zv3vUCLlaZSN84D_@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 03/10/2024 2:11 am, Marek Marczykowski-Górecki wrote:
> On Wed, Oct 02, 2024 at 04:27:19PM +0100, Frediano Ziglio wrote:
>> On Wed, Oct 2, 2024 at 3:04 PM Marek Marczykowski-Górecki
>> <marmarek@invisiblethingslab.com> wrote:
>>> On Tue, Oct 01, 2024 at 11:22:37AM +0100, Frediano Ziglio wrote:
>>>> This series came from part of the work of removing duplications between
>>>> boot code and rewriting part of code from assembly to C.
>>>> Rewrites EFI code in pure C.
>>> The MB2+EFI tests on Adler Lake fail with this series:
>>> https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/1478766782
>>> Looking at the VGA output (unfortunately not collected by the test
>>> itself) it hangs just after bootloader, before printing anything on the
>>> screen (or even clearing it after bootloader). The serial is silent too.
>>>
>> I tried multiple times to take a look at the logs, but I keep getting error 500.
> 500? That's weird. Anyway, serial log is empty, so you haven't lost
> much.
> But also, I've ran it a couple more times and it is some regression.
> Staging reliably passes while staging+this series fails.
>
> Unfortunately I don't have any more info besides it hangs before
> printing anything on serial or VGA. Maybe it hanging only on Intel but
> not AMD is some hint? Or maybe it's some memory layout or firmware
> differences that matter here (bootloader is exactly the same)?
> FWIW some links:
> successful staging run on ADL: https://gitlab.com/xen-project/people/marmarek/xen/-/jobs/7980146338
> failed staging+this run on ADL: https://gitlab.com/xen-project/people/marmarek/xen/-/jobs/7980330394
> successful staging run on Zen3+: https://gitlab.com/xen-project/people/marmarek/xen/-/jobs/7980146359
> successful staging+this run on Zen3+: https://gitlab.com/xen-project/people/marmarek/xen/-/jobs/7980146359

Ok, we should do several things.

Frediano, can you split out the efi_multiboot2() prototype in asm/efi.h
and submit it separately from introducing efi_multiboot2_prelude(). 
Mechanically, it's a somewhat-large part of the patch, and won't be
related to whatever other failure is going on here.

Everyone, is it time to consider earlyprintk() ?  This is not the first
time something like this has happened, and it wont be the last.  I for
one am quite bored of doing ad-hoc debugging each time...

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 07:49:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 07:49:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809192.1221402 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swGam-0001Gp-Ba; Thu, 03 Oct 2024 07:49:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809192.1221402; Thu, 03 Oct 2024 07: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 1swGam-0001Gi-97; Thu, 03 Oct 2024 07:49:44 +0000
Received: by outflank-mailman (input) for mailman id 809192;
 Thu, 03 Oct 2024 07:49: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=1FP3=Q7=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1swGal-0001Fd-D9
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 07:49:43 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0c32675b-815c-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 09:49:42 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 7D6A2A4339F
 for <xen-devel@lists.xenproject.org>; Thu,  3 Oct 2024 07:49:32 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 89CBCC4CECC
 for <xen-devel@lists.xenproject.org>; Thu,  3 Oct 2024 07:49:40 +0000 (UTC)
Received: by mail-lf1-f50.google.com with SMTP id
 2adb3069b0e04-539983beb19so781843e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 00:49:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0c32675b-815c-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727941780;
	bh=yu4joNxxij+x73k0WwKAxvDISM4T5p850fyYwpav++4=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=fjYs0AXRSvWlXr2IjUqQ/1UEpgpem8B9QrJ55pn14FdJ56ZLB3rLwdpOJNQbGF3NM
	 +FCkiVm4KP/Y66Tfv9t7CKOxUYzUf0i100UCLluVlhxMGdyKbGuv2UvQwIKeVQ4zeT
	 LvzYzmHtkogxStHuj7HeKkNTimpZriH2b91nZdjLdun35S9zAMA0QFEA648Y42w5XI
	 Gi8fFi6HfsEbe3UyJcXp5VW+dBNgdleEVfjAjZ0vcGxg1fbHhnkeItuovQEEE5NhIJ
	 A9BDYlI+5LYP473dOyX515wOmtdCYf6hJM7s3mvWs1p0CCdviiBNSrSimfFj+AiKqm
	 f4k30a3YftZkw==
X-Forwarded-Encrypted: i=1; AJvYcCXUF6OGsqAZs9Gl4DagVukDW4J9jBzAbKTLxPKPWgG1uN4JxFJ4sM6zoO1s5VdSiz7kAp+zfEhT314=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxY7W98/UPJoe9lPYDe++264ofGFY2sdtslhOIo7YU4krZGjJps
	AkPM6nfI/HuniVVfdwXL6u5G3rFzbwPDomgW0/cBsm7L1lsaOob+TkK5aq/UY1nbyfAUsytOj2h
	HCSTbBixru6bEH48HVsKzl9i8dNA=
X-Google-Smtp-Source: AGHT+IEw8Jb3DYde7tTTH0EDL2FHH23Q+KikOyGqs+EeivRg1nzyPqHOZjkWB2etxXHjfVdM727/d04HH16W7zzq0K4=
X-Received: by 2002:a05:6512:10cd:b0:536:568f:c5ed with SMTP id
 2adb3069b0e04-539a06586f7mr3268615e87.1.1727941778877; Thu, 03 Oct 2024
 00:49:38 -0700 (PDT)
MIME-Version: 1.0
References: <20240930071513.909462-7-ardb+git@google.com> <20240930071513.909462-11-ardb+git@google.com>
 <b2b23136-fd57-4bc8-bb80-604cc4da0920@amd.com>
In-Reply-To: <b2b23136-fd57-4bc8-bb80-604cc4da0920@amd.com>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Thu, 3 Oct 2024 09:49:27 +0200
X-Gmail-Original-Message-ID: <CAMj1kXF_61S92_tUYbn-RMm4xOUe0MUUp3+Mxzc7=9Y9VKxr1w@mail.gmail.com>
Message-ID: <CAMj1kXF_61S92_tUYbn-RMm4xOUe0MUUp3+Mxzc7=9Y9VKxr1w@mail.gmail.com>
Subject: Re: [PATCH v2 4/5] x86/xen: Avoid relocatable quantities in Xen ELF notes
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

On Wed, 2 Oct 2024 at 23:25, Jason Andryuk <jason.andryuk@amd.com> wrote:
>
> On 2024-09-30 03:15, Ard Biesheuvel wrote:
> > From: Ard Biesheuvel <ardb@kernel.org>
> >
> > Xen puts virtual and physical addresses into ELF notes that are treated
> > by the linker as relocatable by default. Doing so is not only pointless,
> > given that the ELF notes are only intended for consumption by Xen before
> > the kernel boots. It is also a KASLR leak, given that the kernel's ELF
> > notes are exposed via the world readable /sys/kernel/notes.
> >
> > So emit these constants in a way that prevents the linker from marking
> > them as relocatable. This involves place-relative relocations (which
> > subtract their own virtual address from the symbol value) and linker
> > provided absolute symbols that add the address of the place to the
> > desired value.
> >
> > Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
>
> Tested-by: Jason Andryuk <jason.andryuk@amd.com>
>
> The generated values look ok.
>
> > ---
> >   arch/x86/kernel/vmlinux.lds.S | 13 +++++++++++++
> >   arch/x86/platform/pvh/head.S  |  6 +++---
> >   arch/x86/tools/relocs.c       |  1 +
> >   arch/x86/xen/xen-head.S       |  6 ++++--
> >   4 files changed, 21 insertions(+), 5 deletions(-)
> >
> > diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
> > index 6726be89b7a6..2b7c8c14c6fd 100644
> > --- a/arch/x86/kernel/vmlinux.lds.S
> > +++ b/arch/x86/kernel/vmlinux.lds.S
> > @@ -527,3 +527,16 @@ INIT_PER_CPU(irq_stack_backing_store);
> >   #endif
> >
> >   #endif /* CONFIG_X86_64 */
> > +
> > +#ifdef CONFIG_XEN
> > +#ifdef CONFIG_XEN_PV
> > +xen_elfnote_entry_offset =
> > +     ABSOLUTE(xen_elfnote_entry) + ABSOLUTE(startup_xen);
> > +#endif
> > +xen_elfnote_hypercall_page_offset =
> > +     ABSOLUTE(xen_elfnote_hypercall_page) + ABSOLUTE(hypercall_page);
> > +#endif
> > +#ifdef CONFIG_PVH
> > +xen_elfnote_phys32_entry_offset =
> > +     ABSOLUTE(xen_elfnote_phys32_entry) + ABSOLUTE(pvh_start_xen - LOAD_OFFSET);
> > +#endif
>
> It seems to me, these aren't really offsets, but instead an address + value.
>

Indeed. So xen_elfnote_phys32_entry_value would probably be a better name.

> > diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
> > index 7ca51a4da217..2b0d887e0872 100644
> > --- a/arch/x86/platform/pvh/head.S
> > +++ b/arch/x86/platform/pvh/head.S
>
> > @@ -300,5 +300,5 @@ SYM_DATA_END(pvh_level2_kernel_pgt)
> >                    .long KERNEL_IMAGE_SIZE - 1)
> >   #endif
> >
> > -     ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY,
> > -                  _ASM_PTR (pvh_start_xen - __START_KERNEL_map))
> > +     ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY, .global xen_elfnote_phys32_entry;
> > +             xen_elfnote_phys32_entry: _ASM_PTR xen_elfnote_phys32_entry_offset - .)
>
> So here you have `address + value - address` to put the desired value in
> the elf note?
>

Exactly. The assembler emits a relative relocation, and the linker
resolves it at build time.


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 08:59:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 08:59:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809210.1221412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swHg2-0002nI-BY; Thu, 03 Oct 2024 08:59:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809210.1221412; Thu, 03 Oct 2024 08: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 1swHg2-0002nB-74; Thu, 03 Oct 2024 08:59:14 +0000
Received: by outflank-mailman (input) for mailman id 809210;
 Thu, 03 Oct 2024 08:59: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=0QDS=Q7=bounce.vates.tech=bounce-md_30504962.66fe5cdc.v1-fd1ccc38f0e0447892f036cf9cebebba@srs-se1.protection.inumbo.net>)
 id 1swHg0-0002n0-4O
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 08:59:12 +0000
Received: from mail180-17.suw31.mandrillapp.com
 (mail180-17.suw31.mandrillapp.com [198.2.180.17])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c0482f67-8165-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 10:59:09 +0200 (CEST)
Received: from pmta11.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail180-17.suw31.mandrillapp.com (Mailchimp) with ESMTP id
 4XK5Fm0hJczRKLqbJ
 for <xen-devel@lists.xenproject.org>; Thu,  3 Oct 2024 08:59:08 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 fd1ccc38f0e0447892f036cf9cebebba; Thu, 03 Oct 2024 08:59: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>
X-Inumbo-ID: c0482f67-8165-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1727945948; x=1728206448;
	bh=DnaQOmgtpKihXwEX3e+F3OFuOYu4TbfWdL1ohbvSGHI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=NQOuxt/swsXMFZPef90ANbTa3LVNY+LRVrezwq06cBadQ+1XpRvIrgmyaQ02uJULy
	 wKHBKicL68ow2fG0DAjJDiHnxfU4HgzjvJPDQfhTAS2rTMjYB91l9yQWDWBg8tptcF
	 ImgUShC9AuUuoeskToTNvW60jS9pifdysL31PBJMpaciY/h8DNN+D7ePl9GhcCndVL
	 jhjs5rV2SIPliOGOGbG/UQdSYXg0reKALYa3HIP49QjtORo3GZW6ezfX7FsRmMbwYS
	 MuJkbSOzLWveuLtLcMEkp1Qu3DxnnbAgmnJdutT7mh4UHmAOkm2oBW6qnayxn22ZTL
	 +ioB09/OaUxDw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1727945948; x=1728206448; i=anthony.perard@vates.tech;
	bh=DnaQOmgtpKihXwEX3e+F3OFuOYu4TbfWdL1ohbvSGHI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=peD/4CwAvCfctS2qhRGa7Z+SqNvooU/fvUO/jBUsgGTRQAlv2Ik3/KMVQkh8QzZCR
	 nZrZuMWN6NcyQinZ5r9IJiyDRqTBHi5sPGXlx3aeUHXNydQX4EWzhOCQu83r6qwfhg
	 g9MGFxitIcXDWXuVHkk34GELrXLXJv9Ej9HQxP1LxkyNOsvwekxp8ZDQFV9sR7NNp9
	 eu7nNpt02kHLbDvMMJqLMMn6EnLVVf6r538ZvnvshpxgQrvpl+JSH0qk0Hh03TK/EB
	 rJNaG+F0tScIJqpHvXM0LLmByBM0WqiaKm9VIMyswJVgsM62+3Co8BLGlqb3RMbvOc
	 JsLAQkS+c06TA==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20stubdom:=20Fix=20newlib=20build=20with=20GCC-14?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1727945946580
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>, Jan Beulich <JBeulich@suse.com>
Message-Id: <Zv5c2ufz9lbMnpYp@l14>
References: <20241002224531.1966914-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241002224531.1966914-1-andrew.cooper3@citrix.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.fd1ccc38f0e0447892f036cf9cebebba?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241003:md
Date: Thu, 03 Oct 2024 08:59:08 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Wed, Oct 02, 2024 at 11:45:31PM +0100, Andrew Cooper wrote:
> Based on a fix from OpenSUSE, but adjusted to be Clang-compatible too.  Pass
> -Wno-implicit-function-declaration library-wide rather than using local GCC
> pragmas.
> 
> Fix of copy_past_newline() to avoid triggering -Wstrict-prototypes.
> 
> Link: https://build.opensuse.org/request/show/1178775
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 09:15:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 09:15:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809218.1221425 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swHw6-0005dk-Ny; Thu, 03 Oct 2024 09:15:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809218.1221425; Thu, 03 Oct 2024 09:15: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 1swHw6-0005dd-LV; Thu, 03 Oct 2024 09:15:50 +0000
Received: by outflank-mailman (input) for mailman id 809218;
 Thu, 03 Oct 2024 09:15: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swHw4-0005dW-GT
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 09:15:48 +0000
Received: from mail-oo1-xc31.google.com (mail-oo1-xc31.google.com
 [2607:f8b0:4864:20::c31])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 130dd894-8168-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 11:15:47 +0200 (CEST)
Received: by mail-oo1-xc31.google.com with SMTP id
 006d021491bc7-5e7aec9e168so410676eaf.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 02:15:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 130dd894-8168-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727946946; x=1728551746; 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=qQRnFepe2nyy0Yymg3rZus965UOqHN71sM0Zb7C3GqY=;
        b=c/a1NduRGgsylFgi+cEweV7d86ovviw09mr21yiIP9ksQjKF5k+t70Wyy8sUN/cxT6
         gk8aWgZ+aLV02UXTbkHUloZV18EYLUQblaFRYCnOtwGJJ64GH5WeYoKDcLf40vIiW3aC
         VtweepDWOOAiZz233Lo7XtdHr0m4C7oAaXkcI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727946946; x=1728551746;
        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=qQRnFepe2nyy0Yymg3rZus965UOqHN71sM0Zb7C3GqY=;
        b=cbfNlbu8Vt0lHhBNo8zUXYqGJQYhjURIdfyaQawbJtLLpFtvBtf0W4fynXT0u/HehT
         VxadFkGEca2Sm3AJBQ2p1vcIB+ZQUOpBxZeP5B6/K/7EMNMAzoJO1B0aSB+xe+jhYZ7p
         H0+EsAykifsNLXm/eW2aMSi0tFrerlD2ja1+yuulsuz9xAZ4Wd5r4MCXxIJYMCTKukMJ
         z/6n6e8br+tLrzHbevlJkYmvOtcDeZUNBfmqw/V+wYWqsyb9Oe6baisoSfYl4f6kVDfs
         KGHrtR2ehJwW9NwEHv2KZOgyQvJnwDnzK6h7suD5M9hvYLmF1jcsI/elF9uur4vlslDd
         ddfQ==
X-Gm-Message-State: AOJu0YzP8/TgFVyP7okEfwgpB9i3RYta+Nc/MEmnb3r7K8pGjvQinCzH
	6oVqD3UuoJRWYGScVKrZdbqCv585Qa6UDa3RAw8bFZK7+ocps85NovwJDLBt5LCONzY7py3zBpY
	9osC3MEoAgpb7uQh9/ujm7nlr029Z7Ti+jgcp0w==
X-Google-Smtp-Source: AGHT+IFxQCvXB7vSH62QYEzCqJdLUUsxz8xUqfyOmkjcZ/YJ2jKPsFdSP9xTTXGLmf/GZ69BtHVGtUC0kr6LnNn08ZM=
X-Received: by 2002:a05:6871:5d1:b0:268:9d81:24b7 with SMTP id
 586e51a60fabf-2878902cc2cmr3938992fac.29.1727946946176; Thu, 03 Oct 2024
 02:15:46 -0700 (PDT)
MIME-Version: 1.0
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 3 Oct 2024 10:15:34 +0100
Message-ID: <CACHz=ZibOmQqZFU=aavR-WPJnN-GNKFu0NhWZmYHF_iPbk9caw@mail.gmail.com>
Subject: Re: [PATCH v2 0/7] x86/alternatives: Adjust all insn-relative fields
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Jan Beulich <JBeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 2, 2024 at 4:27=E2=80=AFPM Andrew Cooper <andrew.cooper3@citrix=
.com> wrote:
>
> Alternatives have had a reasonably severe restriction since their
> introduction.  This has been the source of several bugs, and several
> inefficiencies particularly in the speculative safety paths.
>
> v2:
>   Most work is in patch 1 and the new patch 2 (userspace harness).  Other
>   patches with minor or no change.
>
> Andrew Cooper (7):
>   x86: Introduce x86_decode_lite()
>   tests/x86: Introduce a userspace test harness for x86_decode_lite()
>   x86/alternative: Walk all replacements during self tests
>   x86/alternative: Indent the relocation logic
>   x86/alternative: Replace a continue with a goto
>   x86/alternative: Relocate all insn-relative fields
>   x86/spec-ctrl: Introduce and use DO_COND_BHB_SEQ
>
>  tools/tests/Makefile                      |   1 +
>  tools/tests/x86-decode-lite/.gitignore    |   1 +
>  tools/tests/x86-decode-lite/Makefile      |  45 ++
>  tools/tests/x86-decode-lite/insns.S       | 703 ++++++++++++++++++++++
>  tools/tests/x86-decode-lite/macro-magic.h |  52 ++
>  tools/tests/x86-decode-lite/main.c        | 111 ++++
>  tools/tests/x86-decode-lite/x86-emulate.h |  27 +
>  xen/arch/x86/alternative.c                | 213 +++++--
>  xen/arch/x86/hvm/vmx/entry.S              |  12 +-
>  xen/arch/x86/include/asm/spec_ctrl_asm.h  |  43 +-
>  xen/arch/x86/x86_emulate/Makefile         |   6 +
>  xen/arch/x86/x86_emulate/decode-lite.c    | 311 ++++++++++
>  xen/arch/x86/x86_emulate/private.h        |   2 +
>  xen/arch/x86/x86_emulate/x86_emulate.h    |  14 +
>  14 files changed, 1456 insertions(+), 85 deletions(-)
>  create mode 100644 tools/tests/x86-decode-lite/.gitignore
>  create mode 100644 tools/tests/x86-decode-lite/Makefile
>  create mode 100644 tools/tests/x86-decode-lite/insns.S
>  create mode 100644 tools/tests/x86-decode-lite/macro-magic.h
>  create mode 100644 tools/tests/x86-decode-lite/main.c
>  create mode 100644 tools/tests/x86-decode-lite/x86-emulate.h
>  create mode 100644 xen/arch/x86/x86_emulate/decode-lite.c
>

For patches 1 to 6

Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 09:27:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 09:27:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809224.1221436 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swI7O-0007kg-QE; Thu, 03 Oct 2024 09:27:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809224.1221436; Thu, 03 Oct 2024 09:27: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 1swI7O-0007kZ-MP; Thu, 03 Oct 2024 09:27:30 +0000
Received: by outflank-mailman (input) for mailman id 809224;
 Thu, 03 Oct 2024 09: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swI7N-0007kT-VS
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 09:27:30 +0000
Received: from mail-oa1-x2f.google.com (mail-oa1-x2f.google.com
 [2001:4860:4864:20::2f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b42bb66d-8169-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 11:27:27 +0200 (CEST)
Received: by mail-oa1-x2f.google.com with SMTP id
 586e51a60fabf-27cdb92376aso440878fac.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 02:27:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b42bb66d-8169-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727947646; x=1728552446; 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=2gjvdHmJaI+bpqMYthr/OX1EjaRZf5XpiLwYjhJRz6M=;
        b=GQv9/0drGsB7H66FGG2mDPcvgT52lfekeJ0zsU8Ii1yXWi4CO1pEa5w76btUb1tBai
         R9j5ZrnA6c30mfDIYMAAc7eRIJsSxcmbsmhSFNXCRmf0qxOatNrmxyfyzFA39mnkRlPH
         cKTBBD31J+1FdM9os4gQTyA8b51wnpeqHFOqU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727947646; x=1728552446;
        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=2gjvdHmJaI+bpqMYthr/OX1EjaRZf5XpiLwYjhJRz6M=;
        b=MRYMufMEzfXEYCIEyXsNqk+U3ZEX++G6Hx+VDHhEj3313DHFFtr8fTRGQV+D66qHIl
         6E85iJZCxPlQ1G05mA0zDD8aLa+3N0SxHRJU2dq3JAPYbvFTEXCcXkzkkNQfPI+nbsiM
         F3NoXx1aUQfJf74LtIyxVWYJZgn0IyNnEsLiBLESQzyanFAYEdKAvcjt5XUU5jYAlW+5
         FBj9hb26S2cc/TeTN5RfbmhnITvNW3j7E/sdY5PS/P8QhvtDmdG3TyuIfE3Ch5vJYA3f
         Z8DD7Sps2ZoLoO8Ai7KEFKTMp9hCBIug8nLSsC+uXruRfEIZSkPqorv2Q68ZgFusxHVy
         plkQ==
X-Gm-Message-State: AOJu0Yw1f+GCyKMEUKbf3MaUlFCAMwntzWdNovF/2/rHX9hc4Z66QMEc
	rBIopMpxYTAX+UwAX2S5Rc5m++4GrYGmKFuvrvflVnRfpABNN4m2X9qZIVbWTIPBUhb4S++eHfQ
	v0eg+SMzWn4P5kezTnd7L4dj/UbzkTkZOdvuyzQ==
X-Google-Smtp-Source: AGHT+IHR191ouKxHGELbjsluEAuByWTAyI+y6w+RegilG4QMIQf5Bl1vCLgxSANu3O6tAdxlTND1BHl6mlCkSMRxbfk=
X-Received: by 2002:a05:6871:4ccb:b0:287:b133:8aca with SMTP id
 586e51a60fabf-287b1338cc0mr388919fac.25.1727947645966; Thu, 03 Oct 2024
 02:27:25 -0700 (PDT)
MIME-Version: 1.0
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <Zv1S88isxSSMuqqk@mail-itl> <CACHz=ZhmsA_7eiV+MXi6=3NRzro_sZZK+-Kt-PJ_FS6RfZPZ6g@mail.gmail.com>
 <Zv3vUCLlaZSN84D_@mail-itl>
In-Reply-To: <Zv3vUCLlaZSN84D_@mail-itl>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 3 Oct 2024 10:27:15 +0100
Message-ID: <CACHz=Zj141V4LCfDHKqV6ie9AHkYom4DaaJjxh9DQQaoe7bnGA@mail.gmail.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code
To: =?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.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>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 3, 2024 at 2:11=E2=80=AFAM Marek Marczykowski-G=C3=B3recki
<marmarek@invisiblethingslab.com> wrote:
>
> On Wed, Oct 02, 2024 at 04:27:19PM +0100, Frediano Ziglio wrote:
> > On Wed, Oct 2, 2024 at 3:04=E2=80=AFPM Marek Marczykowski-G=C3=B3recki
> > <marmarek@invisiblethingslab.com> wrote:
> > >
> > > On Tue, Oct 01, 2024 at 11:22:37AM +0100, Frediano Ziglio wrote:
> > > > This series came from part of the work of removing duplications bet=
ween
> > > > boot code and rewriting part of code from assembly to C.
> > > > Rewrites EFI code in pure C.
> > >
> > > The MB2+EFI tests on Adler Lake fail with this series:
> > > https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/147876=
6782
> > > Looking at the VGA output (unfortunately not collected by the test
> > > itself) it hangs just after bootloader, before printing anything on t=
he
> > > screen (or even clearing it after bootloader). The serial is silent t=
oo.
> > >
> >
> > I tried multiple times to take a look at the logs, but I keep getting e=
rror 500.
>
> 500? That's weird. Anyway, serial log is empty, so you haven't lost
> much.

I'm getting pretty consistently. I can see the full pipeline, but not
the single logs. I tried with both Firefox and Chrome, I also tried
from home (just to check for something like firewall issues), always
error 500.

> But also, I've ran it a couple more times and it is some regression.
> Staging reliably passes while staging+this series fails.
>
> Unfortunately I don't have any more info besides it hangs before
> printing anything on serial or VGA. Maybe it hanging only on Intel but
> not AMD is some hint? Or maybe it's some memory layout or firmware
> differences that matter here (bootloader is exactly the same)?
> FWIW some links:
> successful staging run on ADL: https://gitlab.com/xen-project/people/marm=
arek/xen/-/jobs/7980146338
> failed staging+this run on ADL: https://gitlab.com/xen-project/people/mar=
marek/xen/-/jobs/7980330394
> successful staging run on Zen3+: https://gitlab.com/xen-project/people/ma=
rmarek/xen/-/jobs/7980146359
> successful staging+this run on Zen3+: https://gitlab.com/xen-project/peop=
le/marmarek/xen/-/jobs/7980146359
>

Furthermore, I tried with 2 additional machines in our Lab, one Intel,
another AMD, both working for me.
Either your compiler did something different or something special on
the firmware.

I could try downloading your executables and machines there, but as I
said, I'm getting error 500 (not sure if we package artifacts).

Can you try without last commit ?

Frediano

> > > It does pass on Zen 3+ runners.
> > >
> > > Since there were some issues with the ADL runner today on plain stagi=
ng,
> > > I'm not 100% sure if it isn't some infrastructure issue yet. But the
> > > symptoms look different than usual infra issues (and different than
> > > todays failures on staging), so I think it's more likely an issue wit=
h
> > > the patches here.
> > >
> > > > Changes since v1, more details in specific commits:
> > > > - style updates;
> > > > - comments and descriptions improvements;
> > > > - other improvements.
> > > >
> > > > Changes since v2:
> > > > - rebased on master, resolved conflicts;
> > > > - add comment on trampoline section.
> > > >
> > > > Changes since v3:
> > > > - changed new function name;
> > > > - declare efi_multiboot2 in a separate header;
> > > > - distinguish entry point from using magic number;
> > > > - other minor changes (see commens in commits).
> > > >
> > > > Changes since v4:
> > > > - rebase on staging;
> > > > - set %fs and %gs as other segment registers;
> > > > - style and other changes.
> > > >
> > > > Changes since v5:
> > > > - fixed a typo.
> > > >
> > > > Changes since v6:
> > > > - remove merged patch;
> > > > - comment and style;
> > > > - change some pointer checks to avoid overflows;
> > > > - rename parse-mbi2.c to mbi2.c.
> > > >
> > > > Frediano Ziglio (2):
> > > >   x86/boot: Rewrite EFI/MBI2 code partly in C
> > > >   x86/boot: Improve MBI2 structure check
> > > >
> > > >  xen/arch/x86/boot/head.S       | 146 +++++++----------------------=
----
> > > >  xen/arch/x86/efi/Makefile      |   1 +
> > > >  xen/arch/x86/efi/efi-boot.h    |   7 +-
> > > >  xen/arch/x86/efi/mbi2.c        |  66 +++++++++++++++
> > > >  xen/arch/x86/efi/stub.c        |  10 +--
> > > >  xen/arch/x86/include/asm/efi.h |  18 ++++
> > > >  6 files changed, 123 insertions(+), 125 deletions(-)
> > > >  create mode 100644 xen/arch/x86/efi/mbi2.c
> > > >  create mode 100644 xen/arch/x86/include/asm/efi.h
> > > >


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 09:29:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 09:29:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809228.1221446 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swI9O-0008HL-54; Thu, 03 Oct 2024 09:29:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809228.1221446; Thu, 03 Oct 2024 09: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 1swI9O-0008HE-1n; Thu, 03 Oct 2024 09:29:34 +0000
Received: by outflank-mailman (input) for mailman id 809228;
 Thu, 03 Oct 2024 09:29: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 1swI9M-0008H0-HT; Thu, 03 Oct 2024 09:29: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 1swI9M-0007GA-8z; Thu, 03 Oct 2024 09:29: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 1swI9M-0001ud-0L; Thu, 03 Oct 2024 09:29:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swI9M-0006ql-03; Thu, 03 Oct 2024 09: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=oh1RzQzyoLmrA6XyObSrIc5CU9XVLlRlFOS5xeUil2s=; b=ikE6fzlcYif7L+HyPw3/+9xhk7
	A4WI18H877oaYX63eNOmOCTSc5j9z+Qm35JwRC/Cv4ZJsZ++UcM3Sr8ELqvruhvvNARtz0hiOfifx
	WhFwuphzjKSY8YWnbSf/N6XCoG3cO7xGZ3gzGRtKRvefZTNVdDkXSJQVU216WuLho9QE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187947-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187947: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=d2e8118461ef82c975d9e1ce3855a2b9d44fa719
X-Osstest-Versions-That:
    ovmf=e73ec569429ba72fbb6829518d6c192b4cd3346f
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 09:29:32 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 d2e8118461ef82c975d9e1ce3855a2b9d44fa719
baseline version:
 ovmf                 e73ec569429ba72fbb6829518d6c192b4cd3346f

Last test of basis   187942  2024-10-02 20:14:00 Z    0 days
Testing same since   187947  2024-10-03 07:43:32 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michael Kubacki <michael.kubacki@microsoft.com>
  Oliver Smith-Denny <osde@linux.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    


------------------------------------------------------------
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
   e73ec56942..d2e8118461  d2e8118461ef82c975d9e1ce3855a2b9d44fa719 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 09:35:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 09:35:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809236.1221456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swIFE-0001Mh-QJ; Thu, 03 Oct 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 809236.1221456; Thu, 03 Oct 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 1swIFE-0001Ma-NO; Thu, 03 Oct 2024 09:35:36 +0000
Received: by outflank-mailman (input) for mailman id 809236;
 Thu, 03 Oct 2024 09:35: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=iCg9=Q7=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1swIFD-0001MU-Ng
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 09:35:35 +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 d727e413-816a-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 11:35:34 +0200 (CEST)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-5398f3be400so978158e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 02:35:34 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a82ab175sm134156e87.283.2024.10.03.02.35.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 02:35:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d727e413-816a-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727948134; x=1728552934; 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=mTJ5NGdE4Obg9f7cUWc6IregmTSmjfZ1zSK5rlRzubo=;
        b=LY7KJjP9rAMPsk/7F6SwTwl1CNyZjS3dz5Zy9Wp7YOWJ2R8XqBnvjl9QhfvHBcBia2
         kiQcWJXqDk+VDI4arYy4UCgK35PvbAHCuZYr2umdP9aPkw2e9VLh8v5ptzVeMK3sNIP5
         Sv2UiipDnBXSp/A68X+v/uhMb6zu2vm9uNCh4KQggrwOdTHaS8dE5Grly7Lex1MGikCn
         qTk0h+s+/+p7/j4ukyGbYsYHj4rPd0oSlqFnuP5kf83EVj9d+a5nHliEnvZTu+7ZIHxO
         YyCAFOGRoqfx6YZLgB4mVEPK4gXrNmCEEvYhY4RxjOoixqs8A7XRq2wx2zyR3Jyavzh2
         BLNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727948134; x=1728552934;
        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=mTJ5NGdE4Obg9f7cUWc6IregmTSmjfZ1zSK5rlRzubo=;
        b=NjXpB85YxM69URTv5AUD0Fg0Rj0cs91MLAIqTeBsw1ZBhg7Fo2fSoRl0WW0ACsY+5R
         xdqy/x3lg0zky98paBQxl2qA4dA3iWvNXZP2I9oYaFiyOr/odkuyFZDAufzjjjQGbSyi
         UKU1hT1mHKn3MPM2kdMDzfLqQlZIbtIl9dm54MPx6mW/pnuuZplwTDyboh7Gv8WvryPM
         cSuJOm7w3oUIIZh4bLx5WeZh5PC6sZIIAlHfKkM2uDn3GRD1faIKXOqnqj7/77YAdR3i
         aP1Yd6r1az/97r3qwUDjqS9FI7vUDq7rgKBL8tciu8e1wCu9krmFbC38vCiQu0KJ+63H
         U3aQ==
X-Forwarded-Encrypted: i=1; AJvYcCVLYPQZ6W2LWWtVyMugm7WCK/ZLuv4VnvIfXQZCENPVODAYxxpDaZrZKWIzJ+lHYp2MUHveB1zDz8U=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywv33S8NJW8ctjrwnAvTb7+1ySICGdTY81taxbczeHGeAiHq3Bs
	AERo1fS9jPwOz+3AzOuT42+/V9ESIUhGCRuIwSom4sqDuT/1+IED
X-Google-Smtp-Source: AGHT+IGcsN08v1E8kiF+SMS90bY9gheXwnCzj93u7O8iLzGcoSougkFgId3zQyfj8i2MXAWQARGCLQ==
X-Received: by 2002:a05:6512:138d:b0:535:699b:b076 with SMTP id 2adb3069b0e04-539a0665826mr3827464e87.16.1727948133926;
        Thu, 03 Oct 2024 02:35:33 -0700 (PDT)
Message-ID: <5778c6f610e36fbb34485790a8ac3e2227518db5.camel@gmail.com>
Subject: Re: [PATCH v4] xen: move per-cpu area management into common code
From: oleksii.kurochko@gmail.com
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>,  Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Shawn
 Anastasio <sanastasio@raptorengineering.com>, Alistair Francis
 <alistair.francis@wdc.com>,  Bob Eshleman <bobbyeshleman@gmail.com>, Connor
 Davis <connojdavis@gmail.com>, Roger Pau =?ISO-8859-1?Q?Monn=E9?=
 <roger.pau@citrix.com>
Date: Thu, 03 Oct 2024 11:35:32 +0200
In-Reply-To: <1c930c7a-50a4-403d-a867-b569e1efced6@amd.com>
References: 
	<584dab4111041a660377f677cd829d4b2b4b8b2d.1727714022.git.oleksii.kurochko@gmail.com>
	 <1c930c7a-50a4-403d-a867-b569e1efced6@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Wed, 2024-10-02 at 15:41 +0200, Michal Orzel wrote:
>=20
>=20
> On 30/09/2024 18:39, Oleksii Kurochko wrote:
> >=20
> >=20
> > Centralize per-cpu area management to reduce code duplication and
> > enhance maintainability across architectures.
> >=20
> > The per-cpu area management code, which is largely common among
> > architectures, is moved to a shared implementation in
> > xen/common/percpu.c. This change includes:
> > =C2=A0* Remove percpu.c from the X86 and Arm architectures.
> > =C2=A0* For x86, define INVALID_PERCPU_AREAS and PARK_OFFLINE_CPUS_VAR.
> > =C2=A0* Drop the declaration of __per_cpu_offset[] from stubs.c in
> > =C2=A0=C2=A0 PPC and RISC-V to facilitate the build of the common per-c=
pu
> > code.
> >=20
> > No functional changes for x86.
> >=20
> > For Arm add support of CPU_RESUME_FAILED, CPU_REMOVE and freeing of
> > percpu in the case when system_state !=3D SYS_STATE_suspend.
> Behaviorwise there is no change for Arm given that none of these
> actions can be executed.
> That said, by looking at the code I realized that we never call
> CPU_REMOVE so it is effectively
> a dead code.
There is no change for now but what I mean by this message if one day,
for example, enable_nonboot_cpus() will be called and park_offline_cpus
will be enabled/implemented for Arm then CPU_RESUME_FAILED will be
handled differently in comparison with original Arm code. In original
Arm code it will do just break but for common code it will do
free_percpu_area().
And the similar for CPU_REMOVE if park_offline_cpus is enabled and
cpu_notifier_call_chain(..., CPU_REMOVE,...) will be called then the
behaviour of common code will be different from Arm code.

Do you think it would be better just drop this part of the commit
message?
Or would it be better to add:
  ...(what I wrote before), however, there is no change in behavior for
Arm at this time.

>=20
> As for the change itself:
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
>=20
> with one question below ...
>=20
> [...]
>=20
> > +static int cf_check cpu_percpu_callback(
> > +=C2=A0=C2=A0=C2=A0 struct notifier_block *nfb, unsigned long action, v=
oid *hcpu)
> > +{
> > +=C2=A0=C2=A0=C2=A0 unsigned int cpu =3D (unsigned long)hcpu;
> > +=C2=A0=C2=A0=C2=A0 int rc =3D 0;
> > +
> > +=C2=A0=C2=A0=C2=A0 switch ( action )
> > +=C2=A0=C2=A0=C2=A0 {
> > +=C2=A0=C2=A0=C2=A0 case CPU_UP_PREPARE:
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 rc =3D init_percpu_area(cpu=
);
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 break;
> > +=C2=A0=C2=A0=C2=A0 case CPU_UP_CANCELED:
> > +=C2=A0=C2=A0=C2=A0 case CPU_DEAD:
> > +=C2=A0=C2=A0=C2=A0 case CPU_RESUME_FAILED:
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( !park_offline_cpus && =
system_state !=3D
> > SYS_STATE_suspend )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fre=
e_percpu_area(cpu);
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 break;
> > +=C2=A0=C2=A0=C2=A0 case CPU_REMOVE:
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( park_offline_cpus )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 fre=
e_percpu_area(cpu);
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 break;
> Aren't we missing default statement here as per MISRA C 16.4?
> I think we only allow to drop it for enums.
Yes, you are right:
https://saas.eclairit.com:3787/fs/var/local/eclair/xen-project.ecdf/xen-pro=
ject/people/olkur/xen/ECLAIR_normal/percpu-common-v4/X86_64/7975314011/PROJ=
ECT.ecd;/sources/xen/common/percpu.c.html#R5092_1

I will add then:
	default:
	   break;

Thanks.

Best regards,
 Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 09:41:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 09:41:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809244.1221465 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swIKh-0003Ii-HO; Thu, 03 Oct 2024 09:41:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809244.1221465; Thu, 03 Oct 2024 09: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 1swIKh-0003Ib-Es; Thu, 03 Oct 2024 09:41:15 +0000
Received: by outflank-mailman (input) for mailman id 809244;
 Thu, 03 Oct 2024 09:41: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=Mkok=Q7=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swIKf-0003IV-FZ
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 09:41:13 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20621.outbound.protection.outlook.com
 [2a01:111:f403:2009::621])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9fc9a453-816b-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 11:41:12 +0200 (CEST)
Received: from BN9PR03CA0559.namprd03.prod.outlook.com (2603:10b6:408:138::24)
 by IA1PR12MB8465.namprd12.prod.outlook.com (2603:10b6:208:457::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Thu, 3 Oct
 2024 09:41:08 +0000
Received: from BL02EPF00021F6B.namprd02.prod.outlook.com
 (2603:10b6:408:138:cafe::a2) by BN9PR03CA0559.outlook.office365.com
 (2603:10b6:408:138::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.17 via Frontend
 Transport; Thu, 3 Oct 2024 09:41:07 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL02EPF00021F6B.mail.protection.outlook.com (10.167.249.7) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8026.11 via Frontend Transport; Thu, 3 Oct 2024 09:41:07 +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.39; Thu, 3 Oct
 2024 04:41:07 -0500
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.39; Thu, 3 Oct
 2024 04:41:07 -0500
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.39 via Frontend
 Transport; Thu, 3 Oct 2024 04:41:04 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9fc9a453-816b-11ef-a0ba-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YtwwlqijsXrHYhxDLYqXUGoHwiaVh0z5GZBw2+bGGl8sWj2xf7s+RkHD36cpGKEHJcVkxKU1hS9jvlFNgM1fo5LjkBfV/R3ityYfNkB2s9gd0eiH9myvreAyhj3/EaZb6N8gqJY0VoSwcQp+Faj2Z2HRPP+PIQL4Y70oi+cupp8FbG7wZk4OEYAc1X7BKqlXrSd6hsxfQxZ6a9HG7ZpvLPPzM11GK1f5MkiKDdrS1qGnlWeTuEgcqOR79VOVPGw/NBP55dGgSstJV1+0WolG/vSOmznXnafOe7YK3LzFjbdfAiCZ8DYWDKoJii84AmkCLsfqRMF0gF7LuPEwN8ieXg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=q+GlfTuyCcRlG6HAwCrHTSEasIZQnqrq4e/lxe3027o=;
 b=LS/MvAcIa7q4eJOlu0ewNwKkELJsL1ivvFq19qAwq7Wb/wCnJ2TbrubO1oE1vgqBynTzjJRctZNPLIt1XGzDoq8c9p0vQmTCKg35fU/dA58wEZtiVaeDKlHMwfCUJgF5MH+uQvrErZ7FWm15/D+CxhNmjZysTzDf/q97oCqK4oH3PV153Ha5PCFOaZpevBQQEpabcYT8Si0S9vvDn1h3hFxoCh0KZrsVFyZ7gDNbK8chpTu26RKjG1DyEC30awQmiWPuDLUqNnzfmUPRoIeKBD8VQ4UHSJIPm4e+tfB63kUXroFGZ0bBPVdbSuPvCn9XfK3aEoq0Tz+CHhSHZiRGzw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=gmail.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=q+GlfTuyCcRlG6HAwCrHTSEasIZQnqrq4e/lxe3027o=;
 b=MteAkCFJiC63Zm3UXPiea0WAbcGz9QhSJpWgTxkWKlADcFxGSBu6HlN+uSkP+XUP5J0EopfRI6dMPw2qh+O2vsoBVrh9+/KWeAMOL5ECdNjNOws2h+8aKAMietaL3TDu1ji0PbcSBds6fL5kFT/NyzcKALmJw6eYHYO1FFxYHnM=
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: <5d3d4e88-52b3-40d7-aa65-30af88094622@amd.com>
Date: Thu, 3 Oct 2024 11:41:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen: move per-cpu area management into common code
To: <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>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Shawn Anastasio
	<sanastasio@raptorengineering.com>, Alistair Francis
	<alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, "Connor
 Davis" <connojdavis@gmail.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>
References: <584dab4111041a660377f677cd829d4b2b4b8b2d.1727714022.git.oleksii.kurochko@gmail.com>
 <1c930c7a-50a4-403d-a867-b569e1efced6@amd.com>
 <5778c6f610e36fbb34485790a8ac3e2227518db5.camel@gmail.com>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <5778c6f610e36fbb34485790a8ac3e2227518db5.camel@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF00021F6B:EE_|IA1PR12MB8465:EE_
X-MS-Office365-Filtering-Correlation-Id: 17eabcbf-b058-491f-ca05-08dce38f81e2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|7416014|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?TjZCYzZLV3Z4ZmtRYmdYdUpuanpTQUpNc1RadVJTZlhMT21HK1JnUm92R1Br?=
 =?utf-8?B?b01xQlNzcFZrWWtpbXpFbHl0UzVkMmhFSWNXUjhMMytaT2hheGdiMUR4R1py?=
 =?utf-8?B?SEIwUVlDenZheHA3RHlGQ2hqSUJPSjFCd0tidDZDUzM2OVRXVzBQY0ZEMmow?=
 =?utf-8?B?dHNpVEZHazJhSkwveThLS1k5dmZreU1oYW03NmhLOGwyMWFvblMwZHZKVmZj?=
 =?utf-8?B?UkwrTVRMK1NYZm1BaUM5ZXR1QWxLc2UzakljSWVoc0VkeXMxZGZUZE5wc3VZ?=
 =?utf-8?B?NUpLV1UwZjlMWHpaQ3ROUmxkdzZWamZ2c2wrMkpYYzgydmFqUE1sMlZJbDRk?=
 =?utf-8?B?QWRzcE5aeitDdS9UYzNwMlg0Vmh0OHk5TjN4M0syU2ZvelAzVmdzM2syWE8z?=
 =?utf-8?B?TllrMUtKRFR6MmNGS3VVcXd6bFFIMGp2QmtocG41NGYzaGdnYndzMkYvelZi?=
 =?utf-8?B?eFZBMDhwZ0pLSUwwVnNVWnFYVWQrdGYrbE5hSUFvUFNJdXdQVzUxalh0djRB?=
 =?utf-8?B?YVI3NlhjeXhpS2YxQ1JEVXJsTkVtT3h2TFdQNXJMRWxoVlhGNGxRaitsZ3pt?=
 =?utf-8?B?WC9JcndYbW1aVUoydjJPM0lzc0FSMHJBWEF5aGF2bktpd2NiQk92SGpha1lt?=
 =?utf-8?B?M052U016M1YyREVEaW1DSnNPUnJoREtscG80SUhLbTVLVjArM0NieFppMG5I?=
 =?utf-8?B?dlFZZy8zUjk4d2t1eWZJZmd0UmM3MEZXbkRDdzJ0R3RNNk1oKzl2YTJKZWts?=
 =?utf-8?B?Z1lvQ1Q1bjFmT3dRNWIwSlFtV0UyTTZIdXRsTDFkeFY1L05QWTdiSnViZkMz?=
 =?utf-8?B?YndrQmU0VDZOb1I5cnVlRENkaE0rYW0wcWh6Q2VpVzNsTU1oR3h6WFdzU0Nh?=
 =?utf-8?B?RVZRQVU4ZlZJMjFVRGZ6bWxtUWFWVFQ1WktRMzluYVJDL1h1TWFxejVwRzVW?=
 =?utf-8?B?NVdEMm1vR3ZYTkNmSWlQdkRCbW02VVZGbGdDSFhaNnVHQ3NtTnNPUnRyT0Ji?=
 =?utf-8?B?N0FyU3MyK2s2ZmhuN0FQQ1E3TEowLys4Q1VEVHVjSnYrVnhVREdOLzM1RUZs?=
 =?utf-8?B?SjFSYW9Kdkp2OUZaN3MxaDFHa2ZHUlNyY056OWt3SjU0M3M5cFc1d0NFQy9p?=
 =?utf-8?B?S3lFdFNsdjdoMTRHaUhXYTVkU3Rlb1BxUmJ4M1hYUzdXcG9uWE8yOXJlbE90?=
 =?utf-8?B?ZUVuQnU3b21XT2ttajE1RW5uVkUzTTUrZUJOK1BuOUFNWVM3UWpQbnVSdUZK?=
 =?utf-8?B?eExTb0luOW05aXprSzgrNXBsZHRHdnBuUzMzRU5WcExLbHJBbnMxWmM0Mnk2?=
 =?utf-8?B?NTdEaFIwVnpWS1RDaFltUjZaM1Z2WThXcW5hcHBUdlJwOFNYQ1ZEb0pRQkpN?=
 =?utf-8?B?R0lIS3RSV0N3ZXlnL2dDbWFNWEJzNlFkM0Z4MUM2Nk5lTVAzalhibnpMMUdK?=
 =?utf-8?B?YlBmWVlUelFWY1ZDcW1nNTIxdE5iOHB3K2NEdjZrZjV4QkZqMTlJNEZ5SXlF?=
 =?utf-8?B?SHJQVlg0K3B4Sml2VENKTThwNjBxekNaUFZnNFhaV1JtRUZJRzlxNGFDOFla?=
 =?utf-8?B?ZDhFUHljemlyRXZpaU00NVo3NzhJWTFxbUhDS1I2bVlMaDdIWXdIeEVRemgy?=
 =?utf-8?B?czF6OGVSSHUwZGRnRDI0VG1raGFqcHlGbDNBbmovdnQrU1M1NGRRYkF4MVFs?=
 =?utf-8?B?MHJvcjRTNG9jNFc2ejJEZ1BMUGV3VklBK051S0s3eFArZndTUGpqQlg2cHVR?=
 =?utf-8?B?MTBOa2RvWkpHMWtiV0pVeElMc2I5M1FaY2xnaCtHTzdDdm12ZFVqMjVPaTI3?=
 =?utf-8?Q?W79ZvHDYGdnSarXEAqMObJWr83DqEWn6cGj34=3D?=
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:(13230040)(376014)(7416014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2024 09:41:07.8095
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 17eabcbf-b058-491f-ca05-08dce38f81e2
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:
	BL02EPF00021F6B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8465



On 03/10/2024 11:35, oleksii.kurochko@gmail.com wrote:
> 
> 
> On Wed, 2024-10-02 at 15:41 +0200, Michal Orzel wrote:
>>
>>
>> On 30/09/2024 18:39, Oleksii Kurochko wrote:
>>>
>>>
>>> Centralize per-cpu area management to reduce code duplication and
>>> enhance maintainability across architectures.
>>>
>>> The per-cpu area management code, which is largely common among
>>> architectures, is moved to a shared implementation in
>>> xen/common/percpu.c. This change includes:
>>>  * Remove percpu.c from the X86 and Arm architectures.
>>>  * For x86, define INVALID_PERCPU_AREAS and PARK_OFFLINE_CPUS_VAR.
>>>  * Drop the declaration of __per_cpu_offset[] from stubs.c in
>>>    PPC and RISC-V to facilitate the build of the common per-cpu
>>> code.
>>>
>>> No functional changes for x86.
>>>
>>> For Arm add support of CPU_RESUME_FAILED, CPU_REMOVE and freeing of
>>> percpu in the case when system_state != SYS_STATE_suspend.
>> Behaviorwise there is no change for Arm given that none of these
>> actions can be executed.
>> That said, by looking at the code I realized that we never call
>> CPU_REMOVE so it is effectively
>> a dead code.
> There is no change for now but what I mean by this message if one day,
> for example, enable_nonboot_cpus() will be called and park_offline_cpus
> will be enabled/implemented for Arm then CPU_RESUME_FAILED will be
> handled differently in comparison with original Arm code. In original
> Arm code it will do just break but for common code it will do
> free_percpu_area().
> And the similar for CPU_REMOVE if park_offline_cpus is enabled and
> cpu_notifier_call_chain(..., CPU_REMOVE,...) will be called then the
> behaviour of common code will be different from Arm code.
> 
> Do you think it would be better just drop this part of the commit
> message?
> Or would it be better to add:
>   ...(what I wrote before), however, there is no change in behavior for
> Arm at this time.
Yes, this one lgtm.

~Michal


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 10:46:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 10:46:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809253.1221476 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swJLv-0003gG-5X; Thu, 03 Oct 2024 10:46:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809253.1221476; Thu, 03 Oct 2024 10: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 1swJLv-0003g9-1e; Thu, 03 Oct 2024 10:46:35 +0000
Received: by outflank-mailman (input) for mailman id 809253;
 Thu, 03 Oct 2024 10: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=GA31=Q7=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swJLt-0003g3-Ih
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 10:46:33 +0000
Received: from fhigh-a5-smtp.messagingengine.com
 (fhigh-a5-smtp.messagingengine.com [103.168.172.156])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bf6996b8-8174-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 12:46:31 +0200 (CEST)
Received: from phl-compute-10.internal (phl-compute-10.phl.internal
 [10.202.2.50])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 576C11140299;
 Thu,  3 Oct 2024 06:46:29 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-10.internal (MEProxy); Thu, 03 Oct 2024 06:46:29 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 3 Oct 2024 06:46:27 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bf6996b8-8174-11ef-a0ba-8be0dac302b0
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=1727952389;
	 x=1728038789; bh=XfMvtogohk3mqqlQkyqZQEFn/uiGgj0gyaYLu0hSgz0=; b=
	XCCbKFdmkjucxFSahXHzr3cV89zubPH+UlEEf5gVrj18MsDPTFjBLb2wZ4S6RCsp
	+1uWBrA4FooNRK1vaa0CRTJDFs/OzflMbsbNK02EOho+eOVWdnAiZAcYgoJaXsIM
	4iQYWnxe9eycEsRLHg+5lRP5AWOElc5+XGqdKmlk4EnRnG4bTcO29YhUGgQGqCRD
	1TEZJ82df7b+XBWgvqYJ/tQbTgGmtFIpKQc8ESXzrTzdTWvD0zKi8/DASihHQp0V
	X67h+PgepYcrxKZ+hA1nIr5tWZTb7716HEzhj7gJCSdyWo2ztUCtSaA6QqvKAH8z
	GQdV6uHRgvPO22LbnKuE5Q==
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=1727952389; x=1728038789; bh=XfMvtogohk3mqqlQkyqZQEFn/uiG
	gj0gyaYLu0hSgz0=; b=UL3Kl4jRtmM5PqmQncGZuqCepuc0/baUP1YptXt41A8y
	kofT57pd+dDkUM0EpEkYwsTnyKSB26LmvL5JgkzS+48gz/qEUe3qMaqSnC16YgTt
	4tJdDfmbVKQSQmYsX3+tLSr+viRxYtB+S7A+nh6ZUkO4MZPsMIcQ20m6ybjj/yC3
	9z3dGbPet7Cm6bUXlqtmWO/jgnkViS5g53qkKmvDRb4787DmOjMWxXUbLs06G69P
	guzgMaRPfY1SaVLlSd66Y/pX2Fp9TyIojBGIZCJSfbh50dgwddJtjvLvyngpfPY8
	4ppm63lEt0WlxHQ2sFIvE//dM5pyaN3MdNsy29VGnA==
X-ME-Sender: <xms:BHb-ZhDxO8ex3jc7tLW-BPfUu3-U23Ed9-xkEPzjVMCKCnzPiriOug>
    <xme:BHb-Zvgf0BEHensypq0cereMCC_TxM0ag8athMz-DpU1tHOBc53kYR21puCVjTZbS
    qypEVnczV_vZw>
X-ME-Received: <xmr:BHb-ZsnEVhLr-Up1ZIv_umEBBQpoOn6JBWYKVTe5kB0y0lkzO5EcbryC0XlO6Mo2hUbpQUgJqeUEJqjRFzjfaAmi4uH6dq9AIw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvuddgfedvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepveeujeetgeelleetudeuvefhtefgffejvedtvdfgieevheetheelge
    euledvjeevnecuffhomhgrihhnpehgihhtlhgrsgdrtghomhenucevlhhushhtvghrufhi
    iigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeeipdhmohguvgep
    shhmthhpohhuthdprhgtphhtthhopehfrhgvughirghnohdriihighhlihhosegtlhhouh
    gurdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhho
    jhgvtghtrdhorhhgpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdprh
    gtphhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghp
    thhtoheprhhoghgvrhdrphgruhestghithhrihigrdgtohhmpdhrtghpthhtohepughpsh
    hmihhthhesrghpvghrthhushhsohhluhhtihhonhhsrdgtohhm
X-ME-Proxy: <xmx:BHb-ZrzL7b9MDMuyULZbhrqMPcPKI8IvY2eifl5hxinNTdlOBI1Yeg>
    <xmx:BHb-ZmRr3nKJxQoiYtpNGVWgp2WVmDM1cz5wh_YQvvQkERk-KAKfcQ>
    <xmx:BHb-ZuYtRvZ1himWEFyzR4Ez6OXWXB1XE_EzJ33gS7KyeWcxNITgLw>
    <xmx:BHb-ZnTAwx-f1Gcf2jfjFcSFLt_bESXTrslMjbhXCMr8JzpDd_Mgaw>
    <xmx:BXb-ZjIwxJyUlT8NFl_HUMQVWSd8jWAxf3NB7y_c-2z7H1vl0SI5YEcN>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 3 Oct 2024 12:46:25 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code
Message-ID: <Zv52ARxdQmDmM9V6@mail-itl>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <Zv1S88isxSSMuqqk@mail-itl>
 <CACHz=ZhmsA_7eiV+MXi6=3NRzro_sZZK+-Kt-PJ_FS6RfZPZ6g@mail.gmail.com>
 <Zv3vUCLlaZSN84D_@mail-itl>
 <CACHz=Zj141V4LCfDHKqV6ie9AHkYom4DaaJjxh9DQQaoe7bnGA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="3H+0HaVIyNTfPwe2"
Content-Disposition: inline
In-Reply-To: <CACHz=Zj141V4LCfDHKqV6ie9AHkYom4DaaJjxh9DQQaoe7bnGA@mail.gmail.com>


--3H+0HaVIyNTfPwe2
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Oct 2024 12:46:25 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v7 0/2] x86/boot: Reduce assembly code

On Thu, Oct 03, 2024 at 10:27:15AM +0100, Frediano Ziglio wrote:
> On Thu, Oct 3, 2024 at 2:11=E2=80=AFAM Marek Marczykowski-G=C3=B3recki
> <marmarek@invisiblethingslab.com> wrote:
> >
> > On Wed, Oct 02, 2024 at 04:27:19PM +0100, Frediano Ziglio wrote:
> > > On Wed, Oct 2, 2024 at 3:04=E2=80=AFPM Marek Marczykowski-G=C3=B3recki
> > > <marmarek@invisiblethingslab.com> wrote:
> > > >
> > > > On Tue, Oct 01, 2024 at 11:22:37AM +0100, Frediano Ziglio wrote:
> > > > > This series came from part of the work of removing duplications b=
etween
> > > > > boot code and rewriting part of code from assembly to C.
> > > > > Rewrites EFI code in pure C.
> > > >
> > > > The MB2+EFI tests on Adler Lake fail with this series:
> > > > https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/1478=
766782
> > > > Looking at the VGA output (unfortunately not collected by the test
> > > > itself) it hangs just after bootloader, before printing anything on=
 the
> > > > screen (or even clearing it after bootloader). The serial is silent=
 too.
> > > >
> > >
> > > I tried multiple times to take a look at the logs, but I keep getting=
 error 500.
> >
> > 500? That's weird. Anyway, serial log is empty, so you haven't lost
> > much.
>=20
> I'm getting pretty consistently. I can see the full pipeline, but not
> the single logs. I tried with both Firefox and Chrome, I also tried
> from home (just to check for something like firewall issues), always
> error 500.
>=20
> > But also, I've ran it a couple more times and it is some regression.
> > Staging reliably passes while staging+this series fails.
> >
> > Unfortunately I don't have any more info besides it hangs before
> > printing anything on serial or VGA. Maybe it hanging only on Intel but
> > not AMD is some hint? Or maybe it's some memory layout or firmware
> > differences that matter here (bootloader is exactly the same)?
> > FWIW some links:
> > successful staging run on ADL: https://gitlab.com/xen-project/people/ma=
rmarek/xen/-/jobs/7980146338
> > failed staging+this run on ADL: https://gitlab.com/xen-project/people/m=
armarek/xen/-/jobs/7980330394
> > successful staging run on Zen3+: https://gitlab.com/xen-project/people/=
marmarek/xen/-/jobs/7980146359
> > successful staging+this run on Zen3+: https://gitlab.com/xen-project/pe=
ople/marmarek/xen/-/jobs/7980146359
> >
>=20
> Furthermore, I tried with 2 additional machines in our Lab, one Intel,
> another AMD, both working for me.
> Either your compiler did something different or something special on
> the firmware.
>=20
> I could try downloading your executables and machines there, but as I
> said, I'm getting error 500 (not sure if we package artifacts).
>=20
> Can you try without last commit ?

Yes, this seems to work:
https://gitlab.com/xen-project/people/marmarek/xen/-/pipelines/1480052345

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--3H+0HaVIyNTfPwe2
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb+dgEACgkQ24/THMrX
1yyQaQf/c5yiyxsWrU8wrbjhF8Rmdd1M5HtPB2mrcvJ0fM0pNdxoNlJy9weQLFSA
HC1F9osDwgp+DFcORXTj8mxvk8k3v37uNaz3dL+0AYuBQKleHprLncZdh8LHxsOU
s9ftJ2tEftKst/09gl0TpTOr3Nc0dQphVbsOobDqFqcgADVlWBXNBVirOdm4vM37
G7zhDFa9MtkkEDl8oh3GKLCBvve5AVCD/nBUfkZRvlC6OJ4aJ/qKqdTwSK9TGCJW
ISy8bixBitztPwdYOzvOp5lSj2b8qTmJNtLfAf7Uf+K/Gc7MyPYu37tRVx1eMMsx
x14xmtaztPZr1U9wZG1ycgXU+Q3c3Q==
=clWq
-----END PGP SIGNATURE-----

--3H+0HaVIyNTfPwe2--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 10:47:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 10:47:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809255.1221486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swJMP-0004Ar-Co; Thu, 03 Oct 2024 10:47:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809255.1221486; Thu, 03 Oct 2024 10:47: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 1swJMP-0004Ak-9d; Thu, 03 Oct 2024 10:47:05 +0000
Received: by outflank-mailman (input) for mailman id 809255;
 Thu, 03 Oct 2024 10:47: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=xwa6=Q7=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swJMO-00049H-Hs
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 10:47:04 +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 d28a8970-8174-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 12:47:02 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-53997328633so1138546e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 03:47:02 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102a8e13sm67967566b.90.2024.10.03.03.47.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 03:47:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d28a8970-8174-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727952421; x=1728557221; 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=p4nMR/2xdd+T//5OfwNOukfI/2ks/xi/FZJTgBdf1Nc=;
        b=aVRMXBO8QfwcRE5eqL3MLp+2W0u2DCzEIuIpE+tvzw7W/yj7dPKMSVcNFSV7efIEvy
         wKJGe9Mrv3gAer7MDV8GPhr1XaxbmWb/8zjxjGGckrOD04tR8K7XNTB8yTs17d4kfvpV
         YMdLu6EGgBnKVrF9RJzt1A5KApc3sQoOG4lYg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727952421; x=1728557221;
        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=p4nMR/2xdd+T//5OfwNOukfI/2ks/xi/FZJTgBdf1Nc=;
        b=CDCXNudOGNBa/DcBmhzRAO3t0C6xybxyMFmSNzNQZQLZtC0nmv1ymMp2uc84EzVr3r
         f45nvpqzfIPzmxUw+qMiQxKWFvuZbX3akGckV/49Z/rLyZYgtcYRprcdD1g/n/VuN7nR
         qREupGethd9cqyXlJPRTGDftCX6DBuQwJ+xB9Mo9dJu9SwV/mj1uKkEGlaXDoku8Drdj
         ukU2TG5ZAuo75kRRVHNKZLtMbElux1XFx9ryjG6Vr6TJ2mb0wQCX2D6lszUWueaXY6QU
         u8g9NuVwOWd3mJ9GYOFiuwdgkE+lnN7wvwHZ74j72d7jXwMa9dmKGecQt8ucC1u6E9Wj
         tRYA==
X-Forwarded-Encrypted: i=1; AJvYcCVVcReAY47vIGsqzJhc4SMX5a/z2c8PN4C2/0IKEzQT8ZUo35B6b4V7Q6Pfu9HQ9tl/8lvsVD/Xgcg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxUUGQ/LYGz9fr/7t4Q5Bdlu4UFdgdRExfhioQEoJa/Aw0hZ7+O
	6oAFil9duSe4N5tnJzXxAgXdBW1t5YQLXeBcwYo7VYVZMMBH6t6kdNa7yH++hps=
X-Google-Smtp-Source: AGHT+IHyN/ITcj86isCvn9/qhL1Qiixo0UqFYZLLjm1Ch6MXz9O4tWOVBhWiqJ/hNNLh79GaIxnhfA==
X-Received: by 2002:a05:6512:e9e:b0:539:936c:9845 with SMTP id 2adb3069b0e04-539a0792f69mr5703673e87.37.1727952421414;
        Thu, 03 Oct 2024 03:47:01 -0700 (PDT)
Date: Thu, 3 Oct 2024 12:47:00 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Matthew Barnes <matthew.barnes@cloud.com>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH 0/3] Switch flat driver to use phys dst for ext ints
Message-ID: <Zv52JFtmTmM256XR@macbook.local>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
 <2640346b-495d-4612-abfc-304d71efe7e9@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <2640346b-495d-4612-abfc-304d71efe7e9@citrix.com>

On Wed, Oct 02, 2024 at 06:45:51PM +0100, Andrew Cooper wrote:
> On 02/10/2024 4:17 pm, Matthew Barnes wrote:
> > This patch series switches the apic_default APIC driver from using
> > logical flat destination mode for external interrupts, to using
> > physical destination mode for external interrupts.
> >
> > This is followed up by two non-functional cleanup commits.
> >
> > Matthew Barnes (3):
> >   x86/APIC: Switch flat driver to use phys dst for ext ints
> >   x86/APIC: Remove unnecessary logical flat functions
> >   x86/APIC: Refactor GENAPIC_FLAT -> GENAPIC_MIXED
> 
> Patches 1 and 2 look fine.
> 
> For patch 3, can't we just delete the macro and expand it in it's single
> location?
> 
> It's a bigger patch, but a better improvement in genapic.h

I agree, but if we go that route we might as well do the conversion of
GENAPIC_PHYS in the same patch, and deal with both at the same time
(GENAPIC_PHYS is also used in a single place).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 10:51:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 10:51:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809260.1221496 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swJQH-0005kg-Su; Thu, 03 Oct 2024 10:51:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809260.1221496; Thu, 03 Oct 2024 10: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 1swJQH-0005kZ-P9; Thu, 03 Oct 2024 10:51:05 +0000
Received: by outflank-mailman (input) for mailman id 809260;
 Thu, 03 Oct 2024 10: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=xwa6=Q7=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swJQG-0005kT-9N
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 10:51:04 +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 61c3acfe-8175-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 12:51:02 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a8d0d82e76aso128225066b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 03:51:02 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102a6244sm68908166b.78.2024.10.03.03.51.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 03:51:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 61c3acfe-8175-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727952662; x=1728557462; 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=zg5b05Ze1jZTjiW+VVnm+tC9FAI/w4jAQXl/VMxT3i4=;
        b=shA+xjBkKcADsC+OSwZWJgRR4OZ+6PwAS9ahp8tGDAkIEBmyVne7HoZWfG2UbZdyJv
         reEJlAf0xciCa7qYpC1v+1UOgXgOeFWZZDm6IS9fkv2KTqBwysBdpZxI3M8A8kxntSj4
         4XyVrkOJ4BQ51omm4ch3Wi7FXY2zwqQYlQB9k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727952662; x=1728557462;
        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=zg5b05Ze1jZTjiW+VVnm+tC9FAI/w4jAQXl/VMxT3i4=;
        b=QBkB+LLyhwih3FM3iquXyE4JS6XodwvqnHhkln7j5OGva4U7H7IfAkVLWpUZs62YDK
         d0j6dapeslwGfhyZeUY7w9tvuE3RCpo1cY2AiAdcA6TKJwt8Zhjbdb+Xol4LSaAz7IQ0
         DiAIaZEhuNFVXrHNZjUR+OgUdlVXlrd/MchPtiMh+eZNErXRED8U1+AMuPCKXV1w4caG
         tvFoWEvLlxCkfmuQIo79Ksgryrd5S9uRbRxfw5q6XOf4JOzedowV6CzAyUILH1bQurBV
         BKL/IbtCjWEwRJL3QZmLMyNvUyMrBmWyZB6X5xnXB/X8Pn1Du1FptPcqRfKGMINISuL5
         vAKA==
X-Gm-Message-State: AOJu0YwSKov07veWRgmiKWPaPLxuJLQOEr+wrkfC4fSkih+H4lHKvts8
	PnYqnORQDa521vgoGUlBL4gZgwEfLZ1tyCh8NPgQjzYafjuqsQK/UMOvaoAm1qA=
X-Google-Smtp-Source: AGHT+IEQVYuiglu3iuQjgpVY131ZdkUPdgRG0y3sbWwwPj2BtxDa7bfV4w8FDk7We6VXobDL1DSWYg==
X-Received: by 2002:a17:907:3f88:b0:a8d:e4b:d7fe with SMTP id a640c23a62f3a-a98f7ffbb2cmr685276266b.0.1727952661917;
        Thu, 03 Oct 2024 03:51:01 -0700 (PDT)
Date: Thu, 3 Oct 2024 12:51:00 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Matthew Barnes <matthew.barnes@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext
 ints
Message-ID: <Zv53FGD0ju5XsVjz@macbook.local>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
 <8c6d1fee5261169a9bbc62ed1bafd2c32406fb4c.1727880621.git.matthew.barnes@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <8c6d1fee5261169a9bbc62ed1bafd2c32406fb4c.1727880621.git.matthew.barnes@cloud.com>

On Wed, Oct 02, 2024 at 04:17:24PM +0100, Matthew Barnes wrote:

The commit needs a log, doesn't need to be extremely long, but it's
important to note the reasoning behind using physical delivery for
external interrupts vs logial mode.

Take a look at the x2APIC one for inspiration, the motivation should
be similar.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 10:51:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 10:51:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809267.1221506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swJR3-0006J7-89; Thu, 03 Oct 2024 10:51:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809267.1221506; Thu, 03 Oct 2024 10:51: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 1swJR3-0006Iy-4j; Thu, 03 Oct 2024 10:51:53 +0000
Received: by outflank-mailman (input) for mailman id 809267;
 Thu, 03 Oct 2024 10:51: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=xwa6=Q7=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swJR1-0006Hm-F1
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 10:51:51 +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 7df72a7d-8175-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 12:51:50 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a8d2b24b7a8so360666966b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 03:51:50 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104d5a27sm68069566b.213.2024.10.03.03.51.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 03:51:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7df72a7d-8175-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727952709; x=1728557509; 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=5JAdoA6TBoI7Lvcp7Bz5l1WvIEOkqZDHKWvVueVHHok=;
        b=fOiWsj0ZDxaOYyz56gCU80zsoBDG1UkCv15ssbvyxdVFQlal65pOZymggtEI5O1X+X
         22o+8YPbAGV6UtqLu8iMb9JcZRMgPSXU068bOrh6Htnd4IDAOuby8BNSxWkYP+JBtjsC
         ZfHTfL25Am0PjgvkUF1DbFs47MV1t8Jlog/3E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727952709; x=1728557509;
        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=5JAdoA6TBoI7Lvcp7Bz5l1WvIEOkqZDHKWvVueVHHok=;
        b=HWYsTfTD4x65KhSjs5MYe4Vi72MimioQBXPagf1hdUPQQ5sKdRobKADQCjvJQMvkJc
         KzIZqdzzpMNsVYv3YrK1p9jxCMvb00AVMNFyhGGLrAdQQSqloE6bIWx9qR6+amMBifRF
         +G56IJYTswn/5ftJSm9/+JYTCr7f+wT4rgNQe1P7gG/AYEiY5Te13UcdRCmP3x7dKT+F
         dwEyH/vostVby8ajyVFmv58wosdmy+AwaPGM0lfoDxMixaskOk4PDaHa1ctf1XRozaxU
         WcDrP2V5W5FRifanbn7iLlwyZlKExZ/oXidBIIB304ZeICz3O5eDfn4o2fdlMFop678N
         7BVg==
X-Gm-Message-State: AOJu0Yzm6JiRZwQWZ0SBSJR6czrhaC5FZvC6NS97sE5roHTedpHY7Srt
	57zx4PVaAon5+XGV9689h6q6+fs1Lxre/aDIHHwOGjJAah1JMlDq7bYXLZFS2Cw=
X-Google-Smtp-Source: AGHT+IElZz2+9D6VDk/Ud+akZOj7Bmnf/Fg5SZ0qVB3ATfzdFQbFgPYaObEc4lySFsIL0UhHhP1U5Q==
X-Received: by 2002:a17:907:86a4:b0:a86:8f9b:ef6e with SMTP id a640c23a62f3a-a990a055cdamr284326466b.13.1727952709203;
        Thu, 03 Oct 2024 03:51:49 -0700 (PDT)
Date: Thu, 3 Oct 2024 12:51:47 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Matthew Barnes <matthew.barnes@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 2/3] x86/APIC: Remove unnecessary logical flat functions
Message-ID: <Zv53Qz76kN0-1T9F@macbook.local>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
 <fc3176baecd67c23dff710e4a1934c2caae47ebd.1727880621.git.matthew.barnes@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <fc3176baecd67c23dff710e4a1934c2caae47ebd.1727880621.git.matthew.barnes@cloud.com>

On Wed, Oct 02, 2024 at 04:17:25PM +0100, Matthew Barnes wrote:
> Now that GENAPIC_FLAT uses physical destination for external interrupts,
> these functions implementing logical flat for external interrupts are no
> longer used.

I think it's fine to merge this with the previous commit, so that the
functions are removed at the point there are no longer used.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 10:52:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 10:52:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809270.1221515 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swJRf-0006on-Fo; Thu, 03 Oct 2024 10:52:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809270.1221515; Thu, 03 Oct 2024 10:52: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 1swJRf-0006og-Cv; Thu, 03 Oct 2024 10:52:31 +0000
Received: by outflank-mailman (input) for mailman id 809270;
 Thu, 03 Oct 2024 10:52: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=YVgi=Q7=epam.com=Sergiy_Kibrik@srs-se1.protection.inumbo.net>)
 id 1swJRd-0006df-SB
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 10:52:29 +0000
Received: from DU2PR03CU002.outbound.protection.outlook.com
 (mail-northeuropeazlp170120003.outbound.protection.outlook.com
 [2a01:111:f403:c200::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9524b63d-8175-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 12:52:29 +0200 (CEST)
Received: from AS8PR03MB9192.eurprd03.prod.outlook.com (2603:10a6:20b:5c0::11)
 by DBBPR03MB6860.eurprd03.prod.outlook.com (2603:10a6:10:204::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Thu, 3 Oct
 2024 10:52:19 +0000
Received: from AS8PR03MB9192.eurprd03.prod.outlook.com
 ([fe80::baa9:29b3:908:ed7d]) by AS8PR03MB9192.eurprd03.prod.outlook.com
 ([fe80::baa9:29b3:908:ed7d%6]) with mapi id 15.20.8026.016; Thu, 3 Oct 2024
 10: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
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9524b63d-8175-11ef-a0ba-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=y+HbBqeTpBCcczCrq3m0IXXlJ1brodBdUUNxmwifkn8OWINB1hf79Z95iEXsumia/LbXzvzyMliFr1MtsPQc72Exza6jHskzJysfa3VZmEsWXTQhkTrdj/jCYsYakzIO7YiF2eigBGj61PfMpdh4VXzqCVpa62x/xDC5tlRmOm8lb1IbojBiF5fftl9C1+6qRcAmiGKQAPS50pLiKtlbzLYhcb1Y67vDMNNPtSug9lj1ZEBWWL7TDZ1jorP1Y9uh6U4Av3Sf40uCSyZqng+kaGVd+qOsdrRwVOXWWmGoodr0FhcuILXjAiU6EaRjaDUeOXs9lTfi1pyjt04K7G/3JQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=JTVgZWOIwb34G/x/JZjQ+G8TVqFH3J+p6BWZnwnoV74=;
 b=bg/v2EJa806AkRle4n3Q+0sWcWD2LEmqw4RNHbD5j61Ux0S0hjVs2bkcWpEVP5PQ5cAopHny2Tpn5roLsVvqz7fMcnQ0x9sshJSTPlzZWFP6ZGkLbYhjfO04fAznxgxlHTT277HUi5VOLy80+8X9Qb01OG+uh5A65Q+wqWUbtVAj+UtVyt47oeQ52EFxp+H1YO1C2c1H6pljGwQx625frTv7IEPHRD8yG6x2ifOFx4oSl64TSZRg1diCFDYtzPJJ7JD8g9fwJTbuDLE5ctOjIa4VWMfCSyvmNK35EmGdxISvdryZ6yxXnGRdtGUjOop6Bcq31SNHjZvK02dPJihfMg==
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=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JTVgZWOIwb34G/x/JZjQ+G8TVqFH3J+p6BWZnwnoV74=;
 b=d3rRiR0oO1LzMYqW+Qmf6YuUH1xQEMMEaDtPaY2TBB1xcwPE5J+ceM84UoZznUpso+NsdVpqJKyvULnhHLW1PR8Aux0T7GQM95PKrUlKYVUFfIMPv1riYp5IxprgikT2iMP4NtX0lopdNAomb2oWCVsMxM7xmXVu1ckqyWAFqFQgy1kqaCHr3/LN/P4/CoKuF037zY396/zizOzqH5EM8932Bz8w+4kfCoH1sQGM8vtjq4PWvNnyL4Tr+GUPpNBczZa7MLEXt+LlmoTF74svCIsysF7BomLWSkWoXg+6+r3H/OyUPHCYE4BJ0yrmxdDksgOD/dGXdU6g67Wv/e9e1w==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=epam.com;
Message-ID: <0cc94322-b95c-4e4b-9b59-89137adb1dff@epam.com>
Date: Thu, 3 Oct 2024 13:52:17 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH] x86/hvm: make ACPI PM timer support optional
To: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <20240916063757.990070-1-Sergiy_Kibrik@epam.com>
 <Zufh7DOSCwzhrpZG@macbook.local>
 <alpine.DEB.2.22.394.2409161252380.1417852@ubuntu-linux-20-04-desktop>
 <614611f1-dfbe-4185-8f0a-dc89aa7f5a20@epam.com>
 <ZuqgTKqaUDWC_I-u@macbook.local>
 <27d717f7-3073-4139-bef0-05d1a39f1e6c@epam.com>
 <d5a6774b-3c50-4b39-9bb7-740f0763a1d4@suse.com>
 <12072ee1-5a39-4c19-a442-c5be45fb968e@epam.com>
 <15d79e3e-dea6-4c07-82c6-43e17e429123@suse.com>
 <b2edae9d-2c1a-4e67-9e01-2ce3813d4dbe@epam.com>
 <3c6aebb6-ec8c-4f1a-b5d2-eb216b9f7bef@suse.com>
 <af218437-b8fb-4e34-95ca-cb39d4f57e7b@citrix.com>
Content-Language: en-US
From: Sergiy Kibrik <sergiy_kibrik@epam.com>
In-Reply-To: <af218437-b8fb-4e34-95ca-cb39d4f57e7b@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: WA1P291CA0011.POLP291.PROD.OUTLOOK.COM
 (2603:10a6:1d0:19::8) To AS8PR03MB9192.eurprd03.prod.outlook.com
 (2603:10a6:20b:5c0::11)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: AS8PR03MB9192:EE_|DBBPR03MB6860:EE_
X-MS-Office365-Filtering-Correlation-Id: 43345cb4-bbbc-4899-7f37-08dce39973ef
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?QVJlbUVZNWcyTkNuV2FBVm5KSCtpYklpUXhwTGZIZDJqdGZ3N0laR1RJMjMx?=
 =?utf-8?B?OThHMzlnNFM3UW5uV0p6N1RlcXZPMUhNWlhhLzVDNWFFTnVUWkEzWEFRbEN6?=
 =?utf-8?B?eDJxVUtEbFFIOVhWS2doRlB0Z0hza1hJNW1IQ3ZPTDZVMUlWdVR2a3hOenFX?=
 =?utf-8?B?OFdNNjl1bEFaSDNZWVNoMjhLY3dabmJkaEg4UXZTNkFwcVc5WldGRE5rSE1C?=
 =?utf-8?B?eUNnZlR0aTUwT3A0TU5XdFEwRitSekZ6NTlrOXVudm9TdVQ1c3RmWUozdlVn?=
 =?utf-8?B?RW03UGJIOTFONStoSE1hSnJ1eW50R0pOckhDRzFkMUd6SDhPWGdXVTlXeWF6?=
 =?utf-8?B?RHVkNjU0b1Z3b05RTnZlUnRiN2txVWZCaklqQXZVSGU2VkFoWTMzWEUvQ3VS?=
 =?utf-8?B?NXV0MURUWUFYaEJKNTU3dHJZQVJHNW1oaG1SQlQxeDlvVGYwbUZnenhPWGRz?=
 =?utf-8?B?WDBOam1RZnRnN3JRTlVGYW9yNEtoUUV6K1N1VVh3OG1HSlYxWnRUVzZ5b1dR?=
 =?utf-8?B?UG9OcnJaZUJmZGhnblhLck0rbitVM0tsb3E5bTJYVktnN3B6R3RZa29QbStF?=
 =?utf-8?B?SVV3bVE3SG1NMUhKNWNLSmoxQ0hVUnEwNFlxRUhWcVJwcVhnbWVWUHRxbUoy?=
 =?utf-8?B?dFIwRi9EaDBrcU1kaXR1amtVWU1vYWJ1NVdSajYybnZ6bVZsZm10VjRrTEcv?=
 =?utf-8?B?QkVpZm5pM2lsajJkUndsSVpaZGpYRWRzd0trUGxSOW0wRWRRNTZIWlg2SHQ1?=
 =?utf-8?B?RnFxK1VZZ3ZxRGR0eitGZTQ0bmVZU296dVJ2Z2ZleWJYaHRGTzBVbWhXZXVB?=
 =?utf-8?B?dVhzUW11M3FZUVVHVkhhc2ZEeXByMWlwU3RsMm83NjRjRGRCZjN4SUpId0ZR?=
 =?utf-8?B?aWdkV2JpQzlTSnhsZUk4M3NRV0sydm1EalBWSStKTDVZaHpmaDdQYm54Ym5r?=
 =?utf-8?B?UTZNVHdSeENOTzU5akg3Z0FURGNpNWpuVWtVd0ZqREJqLys5N29RRHZDQ0Zu?=
 =?utf-8?B?VnhSdFlIWUJ5MFZTQjFCdkpiQ0U0MVpJbWdQUThUdUxvUkhITmZVa0pyYUNv?=
 =?utf-8?B?YUE2cjJzbkhYNWJvbWZBZXlralBzWkhJS1MwTFR2UmVJQ0dkTUhmK21way9i?=
 =?utf-8?B?VVNmQ2FQejRFbTdHVmN4MFd3dTdVbHY0UXlyM0tlTWs4R0hPak9pZi9HSUtq?=
 =?utf-8?B?eTd3YXBrclRwVnhsSjdJZUxZVU9CcTJsbjVSRVBCVjZLZVF3Y2gvU2xEdWxI?=
 =?utf-8?B?YXhYL3JpcFI2Y3MzcVM3NGF4dWZObHFjNE1FMDJiaEVqamJUTUVmNGpBTHU0?=
 =?utf-8?B?b0EvVTMxOEdoaDZ2WllES01yTlJwRU5GTS9ZQThDWXl0S0xSMWh6aDdPRThC?=
 =?utf-8?B?RU5VdWg3U0Q1Rno1d29mSjZSMWUrNlYyVDdBQlBENUh0YXpXMlYwbUk1MWRu?=
 =?utf-8?B?UXhtMEhMQXFNaWNPNmp6TGpxYkN6YzlObXkrUloxOGE1UHhSaytudTJqQThH?=
 =?utf-8?B?Z0xzbGFaK3hRVUczeTArdU9wbnY5VTVQQjgrV3dqOCtRUzkya295eW11UTAv?=
 =?utf-8?B?UXo2UTJYNHR4VHRpTENYWUw1b2dzT1lTWXNMQTBVWDZmZ3psa0FXVUd2bVVX?=
 =?utf-8?B?ZWY1M2l4eHF5N0pBald0LzhjWEZvTWRXWmt1dGFmSkl0bm1vaXpGMjlWcTlK?=
 =?utf-8?B?MDJyWlV6M3R1UFVqZFdHZHNVVkdwMWRua1ZxR01YK0VtdHUyaWoyejBnPT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR03MB9192.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?T2JqQWFudTlpcm9HaVdPTUQ2Mk1jNkhjNHFaUWVWVXFKM1NuOWZreHAwbDBX?=
 =?utf-8?B?blVrSlIxNFQ0bXpleEdheWZVYXhwNW9EbVRQNmZxb2tjYVhYL0lNbXVEWWZB?=
 =?utf-8?B?LytSMVlLMEluNDVUZHZuUXlTYkwveVJ0UUdtTEM2VWJmWnN3TldIRC95dTZW?=
 =?utf-8?B?bUtVeGoxY3BYUGZ3TGtBVmZBeXlvZWtHcndhRG54VHRoeFlmWWRTMU5CZElQ?=
 =?utf-8?B?ZHhGWGVVQ0xHbHVhNGdLT0EralZtb1drRW5ZdUIzc1FtUmxaSDFMQnRpK0U2?=
 =?utf-8?B?NEx0V1ZLMEFkTm0wOXJscG54UFlXbHQrQUlXSGhET1NINmZZcUsvRndaSGVr?=
 =?utf-8?B?VnJDeWhadThxM0NQU1FvekFLMDJ2N1dLZ1h2aUlmTU5iUTBYdmdORVFFTUpC?=
 =?utf-8?B?SG1JQS9NUldLbEMwWUhnak5aQlRUQngyRVYzeCtac21reGlXZ0hLU2dnSllz?=
 =?utf-8?B?QWdyRkI2UEh1M1cvRXphN1BrOWo4Ynk0cGpwRzIvYlZJMVI0R2UrRWh2eE4w?=
 =?utf-8?B?c0crQkpXODVYMXNJdjhzM3BpeU1QREpYSVJ0U2s5ZlB5a0tIT0IxYUtibGt4?=
 =?utf-8?B?dmNtbDhNVm02V2RCSU1Vd0pZckVUMzZoM0FvZWhETXM2VzIrK3ZQRGRkZTFI?=
 =?utf-8?B?WjR1NWJsbWVXNjVCbEJrZitPMzErYUZPc2FVY1c3S2VPNW9Sb25lOEd6aFNB?=
 =?utf-8?B?Mk1hblNZeHU3NkJ5ci9aaHRXZWxoWHhraFJZMGNjS25aTkkxREFuOVhpZFhO?=
 =?utf-8?B?cnRaYlY2TUdqQWZadzFaSVFjSmF2Q2lLMVp4QWd0UENiZC9JV0hxY3VlWXlo?=
 =?utf-8?B?a3BHZTIrK3RSQUE3WElOYUpvbExiZWxWVU1GY3Z4dXAxRCtvWTd2NXpZamdV?=
 =?utf-8?B?am5hK1ZKc0tlVDU4WmczRWxMdWs4MnZFNE42QlNLbEQyMm91OElCWUZUZ01H?=
 =?utf-8?B?czJEdTBRMGhDS3EvN1dHREIxZ2ZJQzNybEh5NGdTTU1rTktGNHR5cXRhaGps?=
 =?utf-8?B?VmxOTG95VTZzSStZYUpFOFN6UlBMc09uUTMzYXNYd3Rnc1F2eUk2VkVJTVla?=
 =?utf-8?B?elhxY25ld1l6MkZNL2xMbzZvNkdBbTlzZWxnczlVTEp5ZGdINGwvaVdVKzhx?=
 =?utf-8?B?M1dWQ3BsVE5mZUZzNTJDS1ZoSHdqczdzRW5XR0JWYUdwcHZ4R0czNEs0aWhU?=
 =?utf-8?B?Ry9GVTlFOTBDNHFZWUozOG5hS2s4RmI2TU0rbmhKQUs3MkFNRE02QWlVUjhv?=
 =?utf-8?B?K3c1NkJoNTVIUzI1cU9JU0VLUU1CQldwVkdKVEd0d0lmaVNmS1UwRjM0T2xU?=
 =?utf-8?B?cUhWelh5aGRKY0tFTEo0Undqb0prd0xwYzFzUG5YTTEyY2t6ZE43VEwrYTJO?=
 =?utf-8?B?SmhabjFwREtQZkFLL05kZXVMSHNSV1hZeGtzS0loTk1NK29nQ3c1K2ZSRXRL?=
 =?utf-8?B?d0xvRS9qdUlBamNDaHFSREhzTk9RYVAzK1o3c0hSNWdVUGd3S3VmQmVNbGlT?=
 =?utf-8?B?Y3RXZEpqTDNBcGVqZ0pEY0xnOU01eEhzN0c3SlArRmdlQ0FCbjBWMjZZa1lh?=
 =?utf-8?B?V1ZjM01mempSWlFuWmpwMHNMOUFOQVEzcTdTa29za3BTVGVwNkxjcFFLM1B0?=
 =?utf-8?B?aEVSdXg3RUEwbU5lN0VmVlhaYnAwWDFJR2h0QUdHZU1XMXNxU3JvN3VFMFZF?=
 =?utf-8?B?OFdyeVNMeUs5S0dINlJqZ2wySHl3cGpDUG5JbWRKVzNYZElUQThGb2ZZNk8x?=
 =?utf-8?B?SjRWK1d5UXAxMFBJdSt5ZmYzMU5TTW1aek1iU1g4R3dDeTV2a3BZK1JqeXhV?=
 =?utf-8?B?Q0xPVnNzQ0I1eFpiZzEwaVhjenp3SWRSTGxtbXlDL3JKZUtHb0dxak9PcWsw?=
 =?utf-8?B?cWY3TnUzamE2N2VRait2OU4xZU5jeS9MMk92c0lRU1Iwb1RlMW1DOUI0STEr?=
 =?utf-8?B?OU5GYmxLZklCTCtadTFUQUtHTlRCZlRVMkZKcWVUZ3VEdWNCWjJLOWExQWl1?=
 =?utf-8?B?RisrME1pR0l5aTVXUENOc2N2OVRtSzRRdHlBYmttYUluTDd4UkdTRFBWOTNs?=
 =?utf-8?B?M1VoVm0zVklWRDkya24xU3crK1UwaUJZSDBSWGx3aVI2ZGVjSU04eEpYaUk4?=
 =?utf-8?Q?LA0trGzaPzToy8wx0r3NLB9SA?=
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 43345cb4-bbbc-4899-7f37-08dce39973ef
X-MS-Exchange-CrossTenant-AuthSource: AS8PR03MB9192.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2024 10:52:19.5639
 (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: gfBlU7/BKCrwNxW2qvx9jLpqxYhHomCbVOC5jc+P/Bjq+NWGoq4BmR9rwYuXBosbWktfL+W5FBrKB2d+0kPagQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB6860

30.09.24 14:33, Andrew Cooper:
>>> Options are dependant on HVM option, because pmtimer & stdvga drivers
>>> are part of HVM support code.
>>> At the same time these options are allowed to be de-selected when PV/PVH
>>> enabled, because only PV/PVH domains can be created when stdvga or
>>> pmtimer are disabled
>> But PV != PVH.
> Furthermore, be aware that there's no such thing as PVH in Xen.  It's
> toolstack level "branding" for want of a better term.
> 
> In Xen, there is PV (ring privileging) and HVM (hardware virt).
> 
> PVH is a toolstack level construct which passes a different set of
> emulate flags, and doesn't set up qemu (on ioreq server 0) by default.
> 

understood, then I won't complicate configuration by linking it with PV.
Thanks for explanation!

   -Sergiy


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 11:14:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 11:14:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809278.1221526 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swJmT-0001ri-4Y; Thu, 03 Oct 2024 11:14:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809278.1221526; Thu, 03 Oct 2024 11: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 1swJmT-0001rb-20; Thu, 03 Oct 2024 11:14:01 +0000
Received: by outflank-mailman (input) for mailman id 809278;
 Thu, 03 Oct 2024 11:13: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=1FP3=Q7=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1swJmQ-0001rT-RJ
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 11:13:58 +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 94b4ff92-8178-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 13:13:57 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 03A025C5BF6
 for <xen-devel@lists.xenproject.org>; Thu,  3 Oct 2024 11:13:51 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id F348BC4CED2
 for <xen-devel@lists.xenproject.org>; Thu,  3 Oct 2024 11:13:53 +0000 (UTC)
Received: by mail-lf1-f53.google.com with SMTP id
 2adb3069b0e04-539885dd4bcso1007508e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 04:13:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 94b4ff92-8178-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727954034;
	bh=ncshirJSuuxVYT6Rg4hMRMg6qTFNBzUzykD4N2BkVY8=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=Jo5b2EyMOS3uk9JDlHSQeU5R1aJyjAs0+fTPWkZCep6Wfe3FtEcKX92qY2mtaY2EK
	 Ci8TPn6Ee42qRsmfrcj1l+x8zMsi6bvfBaExW2NU/fSlbTuDXDF1+X8cFBydkm8Y27
	 lb+XzyBozg7zRqcDdBoznF0nnozWrNcR9tzS6b9UomNb4g91qxhdupQuTqUK4zEuA4
	 z7g+nzwCR3g6dyxU7168Y4P6qlP/X9DMrNre/R3uCNKxAg+BkBWF+gHp9jrQW3cTIh
	 xrWMcRuCjU0dRKRqqjEvI0IIIfAguu/05IPATBt+DaAJfq3OXiy9Jf7zCzIbXi+uOl
	 853BOc6UvNv1A==
X-Forwarded-Encrypted: i=1; AJvYcCXATtmYYtKed5tJ6b9yZggsSPeXeKF9Irz1tFL5Qw7U89ysmzQfjHnge8I7M/WMqXBJHntv/oSrZf0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwpCdf/9KNqV3rbYGqZpPgTRDastw2ce8XLaSeWsCZJpOUuP7TT
	5u4KeRAnkVZo6NryIvx9UJX3OYWZY4UMK9OppNbxzY9IAAZSrj2GVYsjcGmmoUfewrWIK+RIxp1
	qOvlMyjicoVavzK97imxc962MCpE=
X-Google-Smtp-Source: AGHT+IH0sWh3HiA/Y/FG77TM2NrCKaNhbA4eJ/qwHE/WqxSdpNeBFdDDl6WpEY+OacY7yD9godh5OoCJmImz57qPZ+Q=
X-Received: by 2002:a05:6512:1241:b0:536:9ef0:d829 with SMTP id
 2adb3069b0e04-539a07a1db9mr3832198e87.44.1727954032228; Thu, 03 Oct 2024
 04:13:52 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com> <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
In-Reply-To: <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Thu, 3 Oct 2024 13:13:40 +0200
X-Gmail-Original-Message-ID: <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
Message-ID: <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, 
	x86@kernel.org, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, 
	Uros Bizjak <ubizjak@gmail.com>, Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, 
	Christoph Lameter <cl@linux.com>, Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"

On Wed, 2 Oct 2024 at 22:02, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Wed, 2 Oct 2024 at 08:31, Ard Biesheuvel <ardb@kernel.org> wrote:
> >
> > I guess you are referring to the use of a GOT? That is a valid
> > concern, but it does not apply here. With hidden visibility and
> > compiler command line options like -mdirect-access-extern, all emitted
> > symbol references are direct.
>
> I absolutely hate GOT entries. We definitely shouldn't ever do
> anything that causes them on x86-64.
>
> I'd much rather just do boot-time relocation, and I don't think the
> "we run code at a different location than we told the linker" is an
> arghument against it.
>
> Please, let's make sure we never have any of the global offset table horror.
>
> Yes, yes, you can't avoid them on other architectures.
>

GCC/binutils never needs them. GCC 13 and older will emit some
horrible indirect fentry hook calls via the GOT, but those are NOPed
out by objtool anyway, so that is easily fixable.

Clang/LLD is slightly trickier, because Clang emits relaxable GOTPCREL
relocations, but LLD doesn't update the relocations emitted via
--emit-relocs, so the relocs tool gets confused. This is one of the
reasons I had for proposing to simply switch to PIE linking, and let
the linker deal with all of that. Note that Clang may emit these even
when not generating PIC/PIE code at all.

So this is the reason I wanted to add support for GOTPCREL relocations
in the relocs tool - it is really quite trivial to do, and makes our
jobs slightly easier when dealing with these compiler quirks. The
alternative would be to teach objtool how to relax 'movq
foo@GOTPCREL(%rip)' into 'leaq foo(%rip)' - these are GOTPCREL
relaxations described in the x86_64 psABI for ELF, which is why
compilers are assuming more and more that emitting these is fine even
without -fpic, given that the linker is supposed to elide them if
possible.

Note that there are 1 or 2 cases in the asm code where it is actually
quite useful to refer to the address of foo as 'foo@GOTPCREL(%rip)' in
instructions that take memory operands, but those individual cases are
easily converted to something else if even having a GOT with just 2
entries is a dealbreaker for you.

> That said, doing changes like changing "mov $sym" to "lea sym(%rip)" I
> feel are a complete no-brainer and should be done regardless of any
> other code generation issues.
>

Yes, this is the primary reason I ended up looking into this in the
first place. Earlier this year, we ended up having to introduce
RIP_REL_REF() to emit those RIP-relative references explicitly, in
order to prevent the C code that is called via the early 1:1 mapping
from exploding. The amount of C code called in that manner has been
growing steadily over time with the introduction of 5-level paging and
SEV-SNP and TDX support, which need to play all kinds of tricks before
the normal kernel mappings are created.

Compiling with -fpie and linking with --pie -z text produces an
executable that is guaranteed to have only RIP-relative references in
the .text segment, removing the need for RIP_REL_REF entirely (it
already does nothing when __pic__ is #define'd).


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 11:40:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 11:40:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809286.1221535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKCL-0006SL-1P; Thu, 03 Oct 2024 11:40:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809286.1221535; Thu, 03 Oct 2024 11:40: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 1swKCK-0006SE-Us; Thu, 03 Oct 2024 11:40:44 +0000
Received: by outflank-mailman (input) for mailman id 809286;
 Thu, 03 Oct 2024 11:40: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=GA31=Q7=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swKCJ-0006S6-Nb
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 11:40:43 +0000
Received: from fout-a8-smtp.messagingengine.com
 (fout-a8-smtp.messagingengine.com [103.168.172.151])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 515f2c64-817c-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 13:40:42 +0200 (CEST)
Received: from phl-compute-11.internal (phl-compute-11.phl.internal
 [10.202.2.51])
 by mailfout.phl.internal (Postfix) with ESMTP id AF8E313806D2;
 Thu,  3 Oct 2024 07:40:40 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-11.internal (MEProxy); Thu, 03 Oct 2024 07:40:40 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 3 Oct 2024 07:40:39 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 515f2c64-817c-11ef-a0ba-8be0dac302b0
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=1727955640;
	 x=1728042040; bh=xG20NjcVO4rcv6jSVtAuY6g7/e6Vlyy3h5EY7X6r7Lk=; b=
	hop7VhJgUiBNhl8pI/wYd2fWqvmiXEtjDPjHyIgqQAJ68ybCLJBnuMT8nBRf9cAe
	lYkVCieg1T5fkqM+o8MY0b8HI0wpT13r1ykOXjXHU0/v0izpptj8/rF251opg6F4
	916UoOph+JA6MknOBUgL7IZ+5Ak/7062i8t/UnYBJU28PnwLQav3DJNsjwtuaxkx
	76UexyGfsnaujujhNEl8Y4xNUQ9XGBnDvpgARYkYTqcHtH8fd1sedjlHYC6sT+28
	lKrWbmxSXa2DQMAqSRKc8Z57VuFE64uDvwwfi+5ufac/dSvK9kvzYoarxIEfbica
	ahZ5Irwi0JW8xT2x5RDQkQ==
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=1727955640; x=1728042040; bh=xG20NjcVO4rcv6jSVtAuY6g7/e6V
	lyy3h5EY7X6r7Lk=; b=dl7eIrpZH1iZ7uGh14inif29TBgsL+00v9ukK51ADoMc
	fzKmqETpcddwWIDe/qFyGh/pqfdQ8/ACWCb9lnyyYS/K8pChN+RKRsxi0kK9CaMC
	8GF6K//jt3+vxQ+odMVv1TYhxVf7M5BEQUCJcc4/WbtkD62J5nOmK/1SyJxuBOL2
	R5INF2/8wouMzJc5GUmmZC6PyUMsPb9jWXYVDXJuPrvImLUvBs434J30VjJo+uGw
	jmYMMPx7JgnY/Fiw+wEd30iGTSJ/pk3BmejqWC+ILLqAN30i2pmo34o0v9cB5Igl
	HAmcrHXnllTeQXSdMOyHLGWQie+E0sa++Ttnn1aYxA==
X-ME-Sender: <xms:uIL-ZtX0GmUQTs1F1cu8RI77X3UNqKrsc9Viv_mANfRqCjnL404Jdg>
    <xme:uIL-Ztm4w_a1b21wcvnzwaEo4aq9Fw-ATkQvBfHjGYM90wG6j9G2aRv11yVjgxt-3
    HMOxg8TcwCNhw>
X-ME-Received: <xmr:uIL-ZpYC1XZ799Cnz6lwrzYXdjK8oEdo7TLh7ei6Uj7Go2QoOGZd0vQVkXCqIb1jiMPVk3LWEQG_i8WuSJIfIN2viOEB3ysMbQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvuddggedvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepughpshhm
    ihhthhesrghpvghrthhushhsohhluhhtihhonhhsrdgtohhmpdhrtghpthhtohepfhhrvg
    guihgrnhhordiiihhglhhiohestghlohhuugdrtghomhdprhgtphhtthhopeigvghnqdgu
    vghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehjsg
    gvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtoheprghnughrvgifrdgtohhophgv
    rhefsegtihhtrhhigidrtghomhdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrh
    higidrtghomh
X-ME-Proxy: <xmx:uIL-ZgVKMLT76DFFo6RaLuolRwat4GV5Ji7NvYBNWQH1gVq7l3ou5A>
    <xmx:uIL-ZnnG7-nPfppaS5OPoMuyXcKQ6QkA5zo1ptKKlsQ6l5Lp-JbWeQ>
    <xmx:uIL-ZtfT2m2fxMMwXV_JUy_Z79F0Adr70k-IwU2P46Lq0ppO7heBZQ>
    <xmx:uIL-ZhHuUI-7cTTz3J1O9KuX5qubIUi79JMuSZHsb0_2R3P4TJ3W7g>
    <xmx:uIL-ZiusEfwOqLCxIMj2EvTBjBTyPXF3erPXw-H2DnqFcP3qWIUxW2Xm>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 3 Oct 2024 13:40:36 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH v7 1/2] x86/boot: Rewrite EFI/MBI2 code partly in C
Message-ID: <Zv6CtSPdVqkJHQLT@mail-itl>
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <20241001102239.2609631-2-frediano.ziglio@cloud.com>
 <1adbaea9-40b8-4cec-9871-599fde168925@apertussolutions.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="zq/RxTqbHHnc81SR"
Content-Disposition: inline
In-Reply-To: <1adbaea9-40b8-4cec-9871-599fde168925@apertussolutions.com>


--zq/RxTqbHHnc81SR
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Oct 2024 13:40:36 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH v7 1/2] x86/boot: Rewrite EFI/MBI2 code partly in C

On Wed, Oct 02, 2024 at 10:31:50AM -0400, Daniel P. Smith wrote:
> On 10/1/24 06:22, Frediano Ziglio wrote:
> > No need to have it coded in assembly.
> > Declare efi_multiboot2 in a new header to reuse between implementations
> > and caller.
> >=20
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>=20
> I unfortunately do not have time to test this myself, but I have given a
> read through and it looks good to me. I will give it an R-b and let Marek
> provide the A-b when he is comfortable that CI failure is an artifact of =
the
> test system and not this series.
>=20
> Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Since it seems it's only the other patch causing issues, for this one:

Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb+grUACgkQ24/THMrX
1yxo4wf+NTP3LJ5nteM2M3SZ2Vsc5p0AphHpTJYcEuNcz/bCn8bjFQTbjTm6guaF
1IDR8qx924+Ej6cxnCVM0lauC2PATNb9fzH/6LwnkltRlEsggHJ8wMw2E3M546WE
jG/kOsDgR3JtrcUzGKuVECGZ/BEWIw8PU2id94+re3QQQsqaneTI3yYR3VDLCnyf
I/oLK3wGBeh6Zst8QeNSGkzKWIa5CibsEqu7pXnTbdhfC+H9/t+HZwdE6E8dSTf4
uuRWNdEp17aYG4uMinhQOdTXdnQiQp2aezfdYpbZGvH8jvCkwIjd4LyZiitTeE+X
HX6vLCGNRsl8eS/lAQCgTAJPIw34eQ==
=WUW8
-----END PGP SIGNATURE-----

--zq/RxTqbHHnc81SR--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 11:59:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 11:59:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809296.1221546 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKTl-0000KK-Ir; Thu, 03 Oct 2024 11:58:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809296.1221546; Thu, 03 Oct 2024 11: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 1swKTl-0000KD-Fp; Thu, 03 Oct 2024 11:58:45 +0000
Received: by outflank-mailman (input) for mailman id 809296;
 Thu, 03 Oct 2024 11:58: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 1swKTk-0000K3-SJ; Thu, 03 Oct 2024 11:58: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 1swKTk-0001SI-FU; Thu, 03 Oct 2024 11:58: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 1swKTj-0008Hc-PO; Thu, 03 Oct 2024 11:58:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swKTj-0001Tu-Or; Thu, 03 Oct 2024 11:58: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=CwOetPLBtvVpqD7kJnBjKFTtEH7Jdmwf60FQLF+SK5s=; b=mMd0/zbcRlkhQ/9RaqTcTBo+7l
	+rCR2w3MGBVgdulFdlyD2ZAGvz5HLDkniSf8ImOAE3d5RLk1+2mc+qqsSP/cGKPM9lkxxYZo764Nc
	7tuatyNeOjQZpKPXfyqAdbYwjY49arwSb7wP5YtNfr1HlwpnoPCK77VS+3ord9hstIuE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187949-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187949: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=f962adc8a089949ecc730ba17f08234b52e3952d
X-Osstest-Versions-That:
    ovmf=d2e8118461ef82c975d9e1ce3855a2b9d44fa719
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 11:58:43 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 f962adc8a089949ecc730ba17f08234b52e3952d
baseline version:
 ovmf                 d2e8118461ef82c975d9e1ce3855a2b9d44fa719

Last test of basis   187947  2024-10-03 07:43:32 Z    0 days
Testing same since   187949  2024-10-03 09:43:20 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    


------------------------------------------------------------
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
   d2e8118461..f962adc8a0  f962adc8a089949ecc730ba17f08234b52e3952d -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:18:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:18:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809318.1221559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKn7-0003cm-MH; Thu, 03 Oct 2024 12:18:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809318.1221559; Thu, 03 Oct 2024 12:18: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 1swKn7-0003cf-Jb; Thu, 03 Oct 2024 12:18:45 +0000
Received: by outflank-mailman (input) for mailman id 809318;
 Thu, 03 Oct 2024 12:18: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 1swKn6-0003cV-Vk; Thu, 03 Oct 2024 12: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 1swKn6-0001p1-OY; Thu, 03 Oct 2024 12: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 1swKn6-0000PB-DT; Thu, 03 Oct 2024 12:18:44 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swKn6-0007wD-D7; Thu, 03 Oct 2024 12: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=Lk9WGFJ+7GyBMXg3kBx8KN2f8eMn7WFeVXXQsCo03Fc=; b=IlnOTfWhBd7ICanvfrl+YNa77g
	FKMEZ9WvxGIQmB+Y66UD0XzrYciWZ9qASPd/2R+LZcGZajHgNc4IliU+Ujk8iybpc1BfyiD8UG4Iv
	BJvXqz+w2Swsc3rUECIbMu5tsIxqVTs3McG23lcEo7b3Fh+fe8qUfS5z40EjqDI+6abs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187943-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187943: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=062cfce8d4c077800d252b84c65da8a2dd03fd6f
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 12:18:44 +0000

flight 187943 qemu-mainline real [real]
flight 187951 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187943/
http://logs.test-lab.xenproject.org/osstest/logs/187951/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check    fail pass in 187951-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-thunderx 15 migrate-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-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-amd64-libvirt-qcow2 14 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-amd64-amd64-libvirt-raw 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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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

version targeted for testing:
 qemuu                062cfce8d4c077800d252b84c65da8a2dd03fd6f
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   17 days
Failing since        187731  2024-09-17 13:11:20 Z   15 days   27 attempts
Testing same since   187943  2024-10-02 21:41:19 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 5442 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809324.1221570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnk-000467-W9; Thu, 03 Oct 2024 12:19:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809324.1221570; Thu, 03 Oct 2024 12:19: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 1swKnk-000460-TF; Thu, 03 Oct 2024 12:19:24 +0000
Received: by outflank-mailman (input) for mailman id 809324;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnj-00043W-3r
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:23 +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 b8124a1a-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:21 +0200 (CEST)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-42cbface8d6so11473555e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:21 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b8124a1a-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957960; x=1728562760; 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=44tubvKei6HwE1b7TZqF/fISR42eGcY3avtRrIcdqDY=;
        b=LUVKmeMl6eFu1+k6XZCPywiikcx66sRQ8Et7r1ztWaoe3cx3gqfsm3o4Rmj4gieIQr
         0MDg+HYyy1HmK4zDN7s2hCL/7keNQ4BwSfJI/4cG/a2DSWR/1Go3EZiovBqBausYSB6E
         rXdOpHG7Dc6Y0LZx3HdurxJoqM1yY3Ax2Rvic=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957960; x=1728562760;
        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=44tubvKei6HwE1b7TZqF/fISR42eGcY3avtRrIcdqDY=;
        b=ODw1m/NwTb/fYzrz0oOmge4AC8EGIFSwthWhOxIk17efWNlGaCvnFwf00ZhLSWW3gl
         o0vmBtf4xQi42Ouk5M8UIyL6837v49Z6syxqy2Pb5f791BRYruLWRC96aBBEOodFpx3r
         J7nji/DMCl4kPVqL3PeGGYlYP4dIIH502pC/gyV4mzCLFf89GhxPgF9Na/iz6uUA6NtA
         4COVgndFoWMP+Mj1RQD/45q9V7aN7OdJDiviU0dbDHEdJxQv8LHeaaFDjR4X8R9DVp2E
         CAGkuAeVzKD+6oe5iirOiLs8FmT6H9lNFsdI0N/Ydqv5O93q0MBplOA5EKYtbq7jkfNc
         bDvw==
X-Gm-Message-State: AOJu0Yz6vNvecyojf/ARI7Q1hM931SioNoNkn+H1BLnqxrixTqxE7LcC
	S0ptnNhPh5AVEYIOvDwHHNudNgS36rcskKRNgMmjUyUorOoRWeBkDL8lTYdghw50ZV4QEAjUw8U
	iYmA=
X-Google-Smtp-Source: AGHT+IE9V4/9/LVcMwFEC2DfURZGxsdbMIVxsExd9E/kd736y3R7mRGmE58WD6Yz1ekEmVZlIOefAg==
X-Received: by 2002:adf:f745:0:b0:37c:cc4b:d1d6 with SMTP id ffacd0b85a97d-37cfb9d325dmr5688856f8f.27.1727957959725;
        Thu, 03 Oct 2024 05:19:19 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Tim Deegan <tim@xen.org>,
	Christopher Clark <christopher.w.clark@gmail.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Juergen Gross <jgross@suse.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@intel.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH 00/20] Update header guards bases on new coding style
Date: Thu,  3 Oct 2024 13:18:48 +0100
Message-Id: <20241003121908.362888-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

With the help of some script I and manual checking I updated all
header guards.

As the changes are pretty large patch was split based on maintainers
to reduce mail spamming.

Frediano Ziglio (20):
  xen: Update header guards - Generic
  xen: Update header guards - X86
  xen: Update header guards - ACPI
  xen: Update header guards - ARGO
  xen: Update header guards - ARM
  xen: Update header guards - Device tree
  xen: Update header guards - EFI
  xen: Update header guards - HYPFS
  xen: Update header guards - Intel TXT
  xen: Update header guards - I/O MMU
  xen: Update header guards - Kconfig
  xen: Update header guards - KEXEC
  xen: Update header guards - Live patch
  xen: Update header guards - PPC 64
  xen: Update header guards - Public I/O
  xen: Update header guards - RISC-V
  xen: Update header guards - Scheduling
  xen: Update header guards - VM event, mem access, monitor
  xen: Update header guards - VPCI
  xen: Update header guards - XSM/Flask

 xen/arch/arm/arm32/lib/assembler.h                      | 6 +++---
 xen/arch/arm/arm64/lib/assembler.h                      | 6 +++---
 xen/arch/arm/decode.h                                   | 6 +++---
 xen/arch/arm/include/asm/acpi.h                         | 6 +++---
 xen/arch/arm/include/asm/alternative.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/atomic.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm32/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm32/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm32/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm32/sysregs.h                | 6 +++---
 xen/arch/arm/include/asm/arm32/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm32/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/atomic.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/brk.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/cpufeature.h             | 4 ++--
 xen/arch/arm/include/asm/arm64/efibind.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm64/hsr.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm64/sve.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/sysregs.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm64/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/arm/include/asm/atomic.h                       | 6 +++---
 xen/arch/arm/include/asm/bitops.h                       | 6 +++---
 xen/arch/arm/include/asm/bug.h                          | 6 +++---
 xen/arch/arm/include/asm/byteorder.h                    | 6 +++---
 xen/arch/arm/include/asm/cache.h                        | 4 ++--
 xen/arch/arm/include/asm/cadence-uart.h                 | 4 ++--
 xen/arch/arm/include/asm/config.h                       | 6 +++---
 xen/arch/arm/include/asm/cpregs.h                       | 4 ++--
 xen/arch/arm/include/asm/cpuerrata.h                    | 6 +++---
 xen/arch/arm/include/asm/cpufeature.h                   | 4 ++--
 xen/arch/arm/include/asm/current.h                      | 6 +++---
 xen/arch/arm/include/asm/div64.h                        | 4 ++--
 xen/arch/arm/include/asm/dom0less-build.h               | 6 +++---
 xen/arch/arm/include/asm/domain.h                       | 6 +++---
 xen/arch/arm/include/asm/domain_build.h                 | 4 ++--
 xen/arch/arm/include/asm/early_printk.h                 | 4 ++--
 xen/arch/arm/include/asm/elf.h                          | 6 +++---
 xen/arch/arm/include/asm/event.h                        | 4 ++--
 xen/arch/arm/include/asm/exynos4210-uart.h              | 6 +++---
 xen/arch/arm/include/asm/fixmap.h                       | 6 +++---
 xen/arch/arm/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/arm/include/asm/gic.h                          | 4 ++--
 xen/arch/arm/include/asm/gic_v3_defs.h                  | 6 +++---
 xen/arch/arm/include/asm/gic_v3_its.h                   | 4 ++--
 xen/arch/arm/include/asm/grant_table.h                  | 6 +++---
 xen/arch/arm/include/asm/guest_access.h                 | 6 +++---
 xen/arch/arm/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/arm/include/asm/guest_walk.h                   | 6 +++---
 xen/arch/arm/include/asm/hsr.h                          | 6 +++---
 xen/arch/arm/include/asm/hypercall.h                    | 8 ++++----
 xen/arch/arm/include/asm/imx-lpuart.h                   | 6 +++---
 xen/arch/arm/include/asm/insn.h                         | 6 +++---
 xen/arch/arm/include/asm/io.h                           | 4 ++--
 xen/arch/arm/include/asm/iommu.h                        | 6 +++---
 xen/arch/arm/include/asm/iommu_fwspec.h                 | 6 +++---
 xen/arch/arm/include/asm/ioreq.h                        | 6 +++---
 xen/arch/arm/include/asm/irq.h                          | 6 +++---
 xen/arch/arm/include/asm/kernel.h                       | 6 +++---
 xen/arch/arm/include/asm/livepatch.h                    | 6 +++---
 xen/arch/arm/include/asm/lpae.h                         | 6 +++---
 xen/arch/arm/include/asm/macros.h                       | 4 ++--
 xen/arch/arm/include/asm/mem_access.h                   | 6 +++---
 xen/arch/arm/include/asm/mm.h                           | 6 +++---
 xen/arch/arm/include/asm/mmio.h                         | 6 +++---
 xen/arch/arm/include/asm/mmu/layout.h                   | 6 +++---
 xen/arch/arm/include/asm/mmu/mm.h                       | 6 +++---
 xen/arch/arm/include/asm/mmu/p2m.h                      | 6 +++---
 xen/arch/arm/include/asm/monitor.h                      | 6 +++---
 xen/arch/arm/include/asm/new_vgic.h                     | 6 +++---
 xen/arch/arm/include/asm/nospec.h                       | 6 +++---
 xen/arch/arm/include/asm/p2m.h                          | 8 ++++----
 xen/arch/arm/include/asm/page-bits.h                    | 6 +++---
 xen/arch/arm/include/asm/page.h                         | 6 +++---
 xen/arch/arm/include/asm/pci.h                          | 6 +++---
 xen/arch/arm/include/asm/perfc.h                        | 4 ++--
 xen/arch/arm/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/arm/include/asm/pl011-uart.h                   | 6 +++---
 xen/arch/arm/include/asm/platform.h                     | 6 +++---
 xen/arch/arm/include/asm/platforms/exynos5.h            | 6 +++---
 xen/arch/arm/include/asm/platforms/midway.h             | 2 +-
 xen/arch/arm/include/asm/platforms/omap5.h              | 4 ++--
 xen/arch/arm/include/asm/platforms/vexpress.h           | 6 +++---
 xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h | 6 +++---
 xen/arch/arm/include/asm/pmap.h                         | 6 +++---
 xen/arch/arm/include/asm/processor.h                    | 6 +++---
 xen/arch/arm/include/asm/procinfo.h                     | 4 ++--
 xen/arch/arm/include/asm/psci.h                         | 6 +++---
 xen/arch/arm/include/asm/regs.h                         | 6 +++---
 xen/arch/arm/include/asm/scif-uart.h                    | 6 +++---
 xen/arch/arm/include/asm/setup.h                        | 4 ++--
 xen/arch/arm/include/asm/short-desc.h                   | 6 +++---
 xen/arch/arm/include/asm/smccc.h                        | 6 +++---
 xen/arch/arm/include/asm/smp.h                          | 4 ++--
 xen/arch/arm/include/asm/spinlock.h                     | 6 +++---
 xen/arch/arm/include/asm/static-evtchn.h                | 6 +++---
 xen/arch/arm/include/asm/static-memory.h                | 6 +++---
 xen/arch/arm/include/asm/static-shmem.h                 | 6 +++---
 xen/arch/arm/include/asm/string.h                       | 6 +++---
 xen/arch/arm/include/asm/sysregs.h                      | 6 +++---
 xen/arch/arm/include/asm/system.h                       | 4 ++--
 xen/arch/arm/include/asm/tee/ffa.h                      | 6 +++---
 xen/arch/arm/include/asm/tee/optee_msg.h                | 6 +++---
 xen/arch/arm/include/asm/tee/optee_rpc_cmd.h            | 6 +++---
 xen/arch/arm/include/asm/tee/optee_smc.h                | 6 +++---
 xen/arch/arm/include/asm/tee/tee.h                      | 6 +++---
 xen/arch/arm/include/asm/time.h                         | 6 +++---
 xen/arch/arm/include/asm/traps.h                        | 6 +++---
 xen/arch/arm/include/asm/types.h                        | 6 +++---
 xen/arch/arm/include/asm/vfp.h                          | 6 +++---
 xen/arch/arm/include/asm/vgic-emul.h                    | 6 +++---
 xen/arch/arm/include/asm/vgic.h                         | 6 +++---
 xen/arch/arm/include/asm/vpl011.h                       | 6 +++---
 xen/arch/arm/include/asm/vpsci.h                        | 6 +++---
 xen/arch/arm/include/asm/vreg.h                         | 6 +++---
 xen/arch/arm/include/asm/vtimer.h                       | 4 ++--
 xen/arch/arm/tee/ffa_private.h                          | 6 +++---
 xen/arch/arm/vgic/vgic-mmio.h                           | 4 ++--
 xen/arch/arm/vgic/vgic.h                                | 4 ++--
 xen/arch/arm/vpci.h                                     | 6 +++---
 xen/arch/arm/vuart.h                                    | 6 +++---
 xen/arch/ppc/include/asm/asm-defns.h                    | 6 +++---
 xen/arch/ppc/include/asm/atomic.h                       | 6 +++---
 xen/arch/ppc/include/asm/bitops.h                       | 6 +++---
 xen/arch/ppc/include/asm/boot.h                         | 6 +++---
 xen/arch/ppc/include/asm/bug.h                          | 6 +++---
 xen/arch/ppc/include/asm/byteorder.h                    | 6 +++---
 xen/arch/ppc/include/asm/cache.h                        | 6 +++---
 xen/arch/ppc/include/asm/config.h                       | 6 +++---
 xen/arch/ppc/include/asm/cpufeature.h                   | 6 +++---
 xen/arch/ppc/include/asm/current.h                      | 6 +++---
 xen/arch/ppc/include/asm/domain.h                       | 6 +++---
 xen/arch/ppc/include/asm/early_printk.h                 | 6 +++---
 xen/arch/ppc/include/asm/event.h                        | 6 +++---
 xen/arch/ppc/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/ppc/include/asm/guest_access.h                 | 6 +++---
 xen/arch/ppc/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/ppc/include/asm/io.h                           | 6 +++---
 xen/arch/ppc/include/asm/iommu.h                        | 6 +++---
 xen/arch/ppc/include/asm/irq.h                          | 6 +++---
 xen/arch/ppc/include/asm/memory.h                       | 4 ++--
 xen/arch/ppc/include/asm/mm.h                           | 6 +++---
 xen/arch/ppc/include/asm/monitor.h                      | 6 +++---
 xen/arch/ppc/include/asm/msr.h                          | 6 +++---
 xen/arch/ppc/include/asm/nospec.h                       | 6 +++---
 xen/arch/ppc/include/asm/opal-api.h                     | 6 +++---
 xen/arch/ppc/include/asm/p2m.h                          | 6 +++---
 xen/arch/ppc/include/asm/page-bits.h                    | 6 +++---
 xen/arch/ppc/include/asm/page.h                         | 6 +++---
 xen/arch/ppc/include/asm/processor.h                    | 6 +++---
 xen/arch/ppc/include/asm/regs.h                         | 6 +++---
 xen/arch/ppc/include/asm/setup.h                        | 6 +++---
 xen/arch/ppc/include/asm/smp.h                          | 4 ++--
 xen/arch/ppc/include/asm/spinlock.h                     | 6 +++---
 xen/arch/ppc/include/asm/string.h                       | 6 +++---
 xen/arch/ppc/include/asm/system.h                       | 4 ++--
 xen/arch/ppc/include/asm/time.h                         | 6 +++---
 xen/arch/ppc/include/asm/types.h                        | 6 +++---
 xen/arch/riscv/include/asm/acpi.h                       | 6 +++---
 xen/arch/riscv/include/asm/asm.h                        | 6 +++---
 xen/arch/riscv/include/asm/atomic.h                     | 6 +++---
 xen/arch/riscv/include/asm/bitops.h                     | 6 +++---
 xen/arch/riscv/include/asm/bug.h                        | 6 +++---
 xen/arch/riscv/include/asm/byteorder.h                  | 6 +++---
 xen/arch/riscv/include/asm/cache.h                      | 6 +++---
 xen/arch/riscv/include/asm/cmpxchg.h                    | 6 +++---
 xen/arch/riscv/include/asm/config.h                     | 6 +++---
 xen/arch/riscv/include/asm/cpufeature.h                 | 6 +++---
 xen/arch/riscv/include/asm/csr.h                        | 6 +++---
 xen/arch/riscv/include/asm/current.h                    | 6 +++---
 xen/arch/riscv/include/asm/domain.h                     | 6 +++---
 xen/arch/riscv/include/asm/early_printk.h               | 6 +++---
 xen/arch/riscv/include/asm/event.h                      | 6 +++---
 xen/arch/riscv/include/asm/fence.h                      | 6 +++---
 xen/arch/riscv/include/asm/fixmap.h                     | 6 +++---
 xen/arch/riscv/include/asm/flushtlb.h                   | 6 +++---
 xen/arch/riscv/include/asm/guest_access.h               | 6 +++---
 xen/arch/riscv/include/asm/guest_atomics.h              | 6 +++---
 xen/arch/riscv/include/asm/io.h                         | 6 +++---
 xen/arch/riscv/include/asm/irq.h                        | 6 +++---
 xen/arch/riscv/include/asm/mm.h                         | 6 +++---
 xen/arch/riscv/include/asm/monitor.h                    | 6 +++---
 xen/arch/riscv/include/asm/nospec.h                     | 6 +++---
 xen/arch/riscv/include/asm/p2m.h                        | 6 +++---
 xen/arch/riscv/include/asm/page-bits.h                  | 6 +++---
 xen/arch/riscv/include/asm/page.h                       | 6 +++---
 xen/arch/riscv/include/asm/pmap.h                       | 6 +++---
 xen/arch/riscv/include/asm/processor.h                  | 6 +++---
 xen/arch/riscv/include/asm/regs.h                       | 6 +++---
 xen/arch/riscv/include/asm/riscv_encoding.h             | 4 ++--
 xen/arch/riscv/include/asm/sbi.h                        | 6 +++---
 xen/arch/riscv/include/asm/setup.h                      | 6 +++---
 xen/arch/riscv/include/asm/smp.h                        | 4 ++--
 xen/arch/riscv/include/asm/spinlock.h                   | 6 +++---
 xen/arch/riscv/include/asm/string.h                     | 6 +++---
 xen/arch/riscv/include/asm/system.h                     | 6 +++---
 xen/arch/riscv/include/asm/time.h                       | 6 +++---
 xen/arch/riscv/include/asm/traps.h                      | 6 +++---
 xen/arch/riscv/include/asm/types.h                      | 6 +++---
 xen/arch/x86/boot/video.h                               | 6 +++---
 xen/arch/x86/cpu/mcheck/barrier.h                       | 6 +++---
 xen/arch/x86/cpu/mcheck/mcaction.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/mce.h                           | 6 +++---
 xen/arch/x86/cpu/mcheck/mce_amd.h                       | 4 ++--
 xen/arch/x86/cpu/mcheck/mctelem.h                       | 4 ++--
 xen/arch/x86/cpu/mcheck/util.h                          | 4 ++--
 xen/arch/x86/cpu/mcheck/vmce.h                          | 4 ++--
 xen/arch/x86/cpu/mcheck/x86_mca.h                       | 6 +++---
 xen/arch/x86/cpu/microcode/private.h                    | 6 +++---
 xen/arch/x86/cpu/mtrr/mtrr.h                            | 6 +++---
 xen/arch/x86/guest/hyperv/private.h                     | 6 +++---
 xen/arch/x86/hvm/svm/nestedhvm.h                        | 6 +++---
 xen/arch/x86/hvm/svm/svm.h                              | 6 +++---
 xen/arch/x86/hvm/viridian/private.h                     | 6 +++---
 xen/arch/x86/include/asm/acpi.h                         | 4 ++--
 xen/arch/x86/include/asm/alternative-asm.h              | 6 +++---
 xen/arch/x86/include/asm/alternative.h                  | 6 +++---
 xen/arch/x86/include/asm/altp2m.h                       | 6 +++---
 xen/arch/x86/include/asm/amd.h                          | 6 +++---
 xen/arch/x86/include/asm/apic.h                         | 6 +++---
 xen/arch/x86/include/asm/apicdef.h                      | 4 ++--
 xen/arch/x86/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/x86/include/asm/atomic.h                       | 6 +++---
 xen/arch/x86/include/asm/bitops.h                       | 6 +++---
 xen/arch/x86/include/asm/bug.h                          | 6 +++---
 xen/arch/x86/include/asm/byteorder.h                    | 6 +++---
 xen/arch/x86/include/asm/bzimage.h                      | 6 +++---
 xen/arch/x86/include/asm/cache.h                        | 4 ++--
 xen/arch/x86/include/asm/config.h                       | 6 +++---
 xen/arch/x86/include/asm/cpu-policy.h                   | 6 +++---
 xen/arch/x86/include/asm/cpufeature.h                   | 6 +++---
 xen/arch/x86/include/asm/cpufeatureset.h                | 6 +++---
 xen/arch/x86/include/asm/cpuid.h                        | 6 +++---
 xen/arch/x86/include/asm/cpuidle.h                      | 4 ++--
 xen/arch/x86/include/asm/current.h                      | 6 +++---
 xen/arch/x86/include/asm/debugreg.h                     | 6 +++---
 xen/arch/x86/include/asm/desc.h                         | 6 +++---
 xen/arch/x86/include/asm/device.h                       | 6 +++---
 xen/arch/x86/include/asm/dom0_build.h                   | 6 +++---
 xen/arch/x86/include/asm/domain.h                       | 6 +++---
 xen/arch/x86/include/asm/e820.h                         | 6 +++---
 xen/arch/x86/include/asm/edd.h                          | 6 +++---
 xen/arch/x86/include/asm/elf.h                          | 6 +++---
 xen/arch/x86/include/asm/endbr.h                        | 6 +++---
 xen/arch/x86/include/asm/event.h                        | 4 ++--
 xen/arch/x86/include/asm/fixmap.h                       | 4 ++--
 xen/arch/x86/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/x86/include/asm/gdbsx.h                        | 6 +++---
 xen/arch/x86/include/asm/genapic.h                      | 4 ++--
 xen/arch/x86/include/asm/grant_table.h                  | 6 +++---
 xen/arch/x86/include/asm/guest.h                        | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-hcall.h           | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-tlfs.h            | 4 ++--
 xen/arch/x86/include/asm/guest/hyperv.h                 | 6 +++---
 xen/arch/x86/include/asm/guest/hypervisor.h             | 6 +++---
 xen/arch/x86/include/asm/guest/pvh-boot.h               | 6 +++---
 xen/arch/x86/include/asm/guest/xen-hcall.h              | 6 +++---
 xen/arch/x86/include/asm/guest/xen.h                    | 6 +++---
 xen/arch/x86/include/asm/guest_access.h                 | 6 +++---
 xen/arch/x86/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/x86/include/asm/guest_pt.h                     | 6 +++---
 xen/arch/x86/include/asm/hap.h                          | 4 ++--
 xen/arch/x86/include/asm/hardirq.h                      | 6 +++---
 xen/arch/x86/include/asm/hpet.h                         | 6 +++---
 xen/arch/x86/include/asm/hvm/asid.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/cacheattr.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/domain.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/emulate.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/grant_table.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/guest_access.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h                      | 6 +++---
 xen/arch/x86/include/asm/hvm/io.h                       | 6 +++---
 xen/arch/x86/include/asm/hvm/ioreq.h                    | 6 +++---
 xen/arch/x86/include/asm/hvm/irq.h                      | 6 +++---
 xen/arch/x86/include/asm/hvm/monitor.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/nestedhvm.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/save.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/support.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/nestedsvm.h            | 4 ++--
 xen/arch/x86/include/asm/hvm/svm/svm.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/svmdebug.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/vmcb.h                 | 4 ++--
 xen/arch/x86/include/asm/hvm/vcpu.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/vioapic.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/viridian.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vlapic.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/vm_event.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h                 | 4 ++--
 xen/arch/x86/include/asm/hvm/vmx/vmx.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vvmx.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vpic.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/vpt.h                      | 6 +++---
 xen/arch/x86/include/asm/hypercall.h                    | 8 ++++----
 xen/arch/x86/include/asm/i387.h                         | 6 +++---
 xen/arch/x86/include/asm/intel-family.h                 | 6 +++---
 xen/arch/x86/include/asm/invpcid.h                      | 6 +++---
 xen/arch/x86/include/asm/io.h                           | 4 ++--
 xen/arch/x86/include/asm/io_apic.h                      | 4 ++--
 xen/arch/x86/include/asm/iocap.h                        | 6 +++---
 xen/arch/x86/include/asm/iommu.h                        | 6 +++---
 xen/arch/x86/include/asm/ioreq.h                        | 6 +++---
 xen/arch/x86/include/asm/irq.h                          | 6 +++---
 xen/arch/x86/include/asm/ldt.h                          | 4 ++--
 xen/arch/x86/include/asm/livepatch.h                    | 6 +++---
 xen/arch/x86/include/asm/mach-default/bios_ebda.h       | 6 +++---
 xen/arch/x86/include/asm/mach-default/io_ports.h        | 6 +++---
 xen/arch/x86/include/asm/mach-default/irq_vectors.h     | 6 +++---
 xen/arch/x86/include/asm/mach-default/mach_mpspec.h     | 6 +++---
 xen/arch/x86/include/asm/mach-generic/mach_apic.h       | 6 +++---
 xen/arch/x86/include/asm/machine_kexec.h                | 6 +++---
 xen/arch/x86/include/asm/mc146818rtc.h                  | 6 +++---
 xen/arch/x86/include/asm/mce.h                          | 4 ++--
 xen/arch/x86/include/asm/mem_access.h                   | 6 +++---
 xen/arch/x86/include/asm/mem_paging.h                   | 6 +++---
 xen/arch/x86/include/asm/mem_sharing.h                  | 6 +++---
 xen/arch/x86/include/asm/microcode.h                    | 6 +++---
 xen/arch/x86/include/asm/mm.h                           | 6 +++---
 xen/arch/x86/include/asm/monitor.h                      | 6 +++---
 xen/arch/x86/include/asm/mpspec.h                       | 4 ++--
 xen/arch/x86/include/asm/mpspec_def.h                   | 4 ++--
 xen/arch/x86/include/asm/msi.h                          | 6 +++---
 xen/arch/x86/include/asm/msr-index.h                    | 6 +++---
 xen/arch/x86/include/asm/msr.h                          | 6 +++---
 xen/arch/x86/include/asm/mtrr.h                         | 6 +++---
 xen/arch/x86/include/asm/multicall.h                    | 6 +++---
 xen/arch/x86/include/asm/mwait.h                        | 6 +++---
 xen/arch/x86/include/asm/nmi.h                          | 6 +++---
 xen/arch/x86/include/asm/nops.h                         | 6 +++---
 xen/arch/x86/include/asm/nospec.h                       | 6 +++---
 xen/arch/x86/include/asm/numa.h                         | 4 ++--
 xen/arch/x86/include/asm/p2m.h                          | 8 ++++----
 xen/arch/x86/include/asm/page-bits.h                    | 6 +++---
 xen/arch/x86/include/asm/page.h                         | 6 +++---
 xen/arch/x86/include/asm/paging.h                       | 4 ++--
 xen/arch/x86/include/asm/pci.h                          | 6 +++---
 xen/arch/x86/include/asm/perfc.h                        | 4 ++--
 xen/arch/x86/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/x86/include/asm/processor.h                    | 6 +++---
 xen/arch/x86/include/asm/prot-key.h                     | 6 +++---
 xen/arch/x86/include/asm/psr.h                          | 6 +++---
 xen/arch/x86/include/asm/pt-contig-markers.h            | 6 +++---
 xen/arch/x86/include/asm/pv/domain.h                    | 6 +++---
 xen/arch/x86/include/asm/pv/grant_table.h               | 6 +++---
 xen/arch/x86/include/asm/pv/mm.h                        | 6 +++---
 xen/arch/x86/include/asm/pv/shim.h                      | 6 +++---
 xen/arch/x86/include/asm/pv/trace.h                     | 6 +++---
 xen/arch/x86/include/asm/pv/traps.h                     | 6 +++---
 xen/arch/x86/include/asm/random.h                       | 6 +++---
 xen/arch/x86/include/asm/regs.h                         | 6 +++---
 xen/arch/x86/include/asm/setup.h                        | 4 ++--
 xen/arch/x86/include/asm/shadow.h                       | 6 +++---
 xen/arch/x86/include/asm/shared.h                       | 6 +++---
 xen/arch/x86/include/asm/shstk.h                        | 6 +++---
 xen/arch/x86/include/asm/smp.h                          | 4 ++--
 xen/arch/x86/include/asm/softirq.h                      | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl.h                    | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl_asm.h                | 6 +++---
 xen/arch/x86/include/asm/spinlock.h                     | 6 +++---
 xen/arch/x86/include/asm/string.h                       | 6 +++---
 xen/arch/x86/include/asm/system.h                       | 4 ++--
 xen/arch/x86/include/asm/tboot.h                        | 6 +++---
 xen/arch/x86/include/asm/time.h                         | 6 +++---
 xen/arch/x86/include/asm/trampoline.h                   | 6 +++---
 xen/arch/x86/include/asm/traps.h                        | 6 +++---
 xen/arch/x86/include/asm/types.h                        | 6 +++---
 xen/arch/x86/include/asm/uaccess.h                      | 6 +++---
 xen/arch/x86/include/asm/vm_event.h                     | 6 +++---
 xen/arch/x86/include/asm/vpmu.h                         | 6 +++---
 xen/arch/x86/include/asm/x86-defns.h                    | 6 +++---
 xen/arch/x86/include/asm/x86-vendors.h                  | 6 +++---
 xen/arch/x86/include/asm/x86_64/efibind.h               | 4 ++--
 xen/arch/x86/include/asm/x86_64/elf.h                   | 6 +++---
 xen/arch/x86/include/asm/x86_64/page.h                  | 6 +++---
 xen/arch/x86/include/asm/x86_64/regs.h                  | 4 ++--
 xen/arch/x86/include/asm/x86_64/system.h                | 6 +++---
 xen/arch/x86/include/asm/x86_64/uaccess.h               | 6 +++---
 xen/arch/x86/include/asm/x86_emulate.h                  | 6 +++---
 xen/arch/x86/include/asm/xenoprof.h                     | 6 +++---
 xen/arch/x86/include/asm/xstate.h                       | 6 +++---
 xen/arch/x86/mm/hap/private.h                           | 6 +++---
 xen/arch/x86/mm/mm-locks.h                              | 6 +++---
 xen/arch/x86/mm/p2m.h                                   | 6 +++---
 xen/arch/x86/mm/shadow/private.h                        | 6 +++---
 xen/arch/x86/mm/shadow/types.h                          | 6 +++---
 xen/arch/x86/oprofile/op_counter.h                      | 6 +++---
 xen/arch/x86/oprofile/op_x86_model.h                    | 6 +++---
 xen/arch/x86/pv/emulate.h                               | 6 +++---
 xen/arch/x86/pv/mm.h                                    | 6 +++---
 xen/arch/x86/x86_emulate/x86_emulate.h                  | 6 +++---
 xen/common/coverage/coverage.h                          | 4 ++--
 xen/common/coverage/gcov.h                              | 6 +++---
 xen/common/libelf/libelf-private.h                      | 6 +++---
 xen/common/libfdt/libfdt_internal.h                     | 6 +++---
 xen/common/lz4/defs.h                                   | 6 +++---
 xen/common/sched/private.h                              | 6 +++---
 xen/common/ubsan/ubsan.h                                | 4 ++--
 xen/common/xz/lzma2.h                                   | 4 ++--
 xen/common/xz/private.h                                 | 4 ++--
 xen/common/xz/stream.h                                  | 4 ++--
 xen/common/zstd/bitstream.h                             | 6 +++---
 xen/common/zstd/error_private.h                         | 6 +++---
 xen/common/zstd/fse.h                                   | 6 +++---
 xen/common/zstd/huf.h                                   | 6 +++---
 xen/common/zstd/mem.h                                   | 6 +++---
 xen/common/zstd/zstd_internal.h                         | 6 +++---
 xen/drivers/acpi/apei/apei-internal.h                   | 4 ++--
 xen/drivers/passthrough/amd/iommu-defs.h                | 6 +++---
 xen/drivers/passthrough/amd/iommu.h                     | 6 +++---
 xen/drivers/passthrough/arm/smmu-v3.h                   | 6 +++---
 xen/drivers/passthrough/ats.h                           | 6 +++---
 xen/drivers/passthrough/vtd/dmar.h                      | 6 +++---
 xen/drivers/passthrough/vtd/extern.h                    | 6 +++---
 xen/drivers/passthrough/vtd/iommu.h                     | 4 ++--
 xen/drivers/passthrough/vtd/vtd.h                       | 6 +++---
 xen/drivers/video/font.h                                | 6 +++---
 xen/drivers/video/lfb.h                                 | 4 ++--
 xen/drivers/video/modelines.h                           | 4 ++--
 xen/include/acpi/acconfig.h                             | 6 +++---
 xen/include/acpi/acexcep.h                              | 6 +++---
 xen/include/acpi/acglobal.h                             | 6 +++---
 xen/include/acpi/achware.h                              | 6 +++---
 xen/include/acpi/aclocal.h                              | 6 +++---
 xen/include/acpi/acmacros.h                             | 4 ++--
 xen/include/acpi/acnames.h                              | 6 +++---
 xen/include/acpi/acoutput.h                             | 6 +++---
 xen/include/acpi/acpi.h                                 | 6 +++---
 xen/include/acpi/acpiosxf.h                             | 6 +++---
 xen/include/acpi/acpixf.h                               | 6 +++---
 xen/include/acpi/actables.h                             | 6 +++---
 xen/include/acpi/actbl.h                                | 6 +++---
 xen/include/acpi/actbl1.h                               | 6 +++---
 xen/include/acpi/actbl2.h                               | 6 +++---
 xen/include/acpi/actbl3.h                               | 6 +++---
 xen/include/acpi/actypes.h                              | 6 +++---
 xen/include/acpi/acutils.h                              | 6 +++---
 xen/include/acpi/apei.h                                 | 4 ++--
 xen/include/acpi/cpufreq/cpufreq.h                      | 6 +++---
 xen/include/acpi/cpufreq/processor_perf.h               | 6 +++---
 xen/include/acpi/pdc_intel.h                            | 6 +++---
 xen/include/acpi/platform/acenv.h                       | 6 +++---
 xen/include/acpi/platform/acgcc.h                       | 6 +++---
 xen/include/acpi/platform/aclinux.h                     | 6 +++---
 xen/include/asm-generic/altp2m.h                        | 6 +++---
 xen/include/asm-generic/atomic-ops.h                    | 6 +++---
 xen/include/asm-generic/device.h                        | 6 +++---
 xen/include/asm-generic/div64.h                         | 4 ++--
 xen/include/asm-generic/hardirq.h                       | 6 +++---
 xen/include/asm-generic/hypercall.h                     | 8 ++++----
 xen/include/asm-generic/iocap.h                         | 6 +++---
 xen/include/asm-generic/monitor.h                       | 6 +++---
 xen/include/asm-generic/paging.h                        | 6 +++---
 xen/include/asm-generic/percpu.h                        | 6 +++---
 xen/include/asm-generic/random.h                        | 6 +++---
 xen/include/asm-generic/softirq.h                       | 6 +++---
 xen/include/asm-generic/vm_event.h                      | 6 +++---
 xen/include/crypto/rijndael.h                           | 6 +++---
 xen/include/crypto/vmac.h                               | 4 ++--
 xen/include/efi/efiapi.h                                | 4 ++--
 xen/include/efi/eficapsule.h                            | 4 ++--
 xen/include/efi/eficon.h                                | 4 ++--
 xen/include/efi/efidef.h                                | 4 ++--
 xen/include/efi/efidevp.h                               | 4 ++--
 xen/include/efi/efierr.h                                | 4 ++--
 xen/include/efi/efipciio.h                              | 6 +++---
 xen/include/efi/efiprot.h                               | 4 ++--
 xen/include/public/arch-arm.h                           | 6 +++---
 xen/include/public/arch-arm/hvm/save.h                  | 4 ++--
 xen/include/public/arch-arm/smccc.h                     | 6 +++---
 xen/include/public/arch-ppc.h                           | 6 +++---
 xen/include/public/arch-riscv.h                         | 6 +++---
 xen/include/public/arch-x86/cpufeatureset.h             | 6 +++---
 xen/include/public/arch-x86/cpuid.h                     | 6 +++---
 xen/include/public/arch-x86/guest-acpi.h                | 6 +++---
 xen/include/public/arch-x86/hvm/save.h                  | 6 +++---
 xen/include/public/arch-x86/hvm/start_info.h            | 6 +++---
 xen/include/public/arch-x86/pmu.h                       | 6 +++---
 xen/include/public/arch-x86/xen-mca.h                   | 6 +++---
 xen/include/public/arch-x86/xen-x86_32.h                | 6 +++---
 xen/include/public/arch-x86/xen-x86_64.h                | 6 +++---
 xen/include/public/arch-x86/xen.h                       | 6 +++---
 xen/include/public/argo.h                               | 4 ++--
 xen/include/public/callback.h                           | 6 +++---
 xen/include/public/device_tree_defs.h                   | 4 ++--
 xen/include/public/dom0_ops.h                           | 6 +++---
 xen/include/public/domctl.h                             | 6 +++---
 xen/include/public/elfnote.h                            | 6 +++---
 xen/include/public/errno.h                              | 6 +++---
 xen/include/public/event_channel.h                      | 6 +++---
 xen/include/public/features.h                           | 6 +++---
 xen/include/public/grant_table.h                        | 6 +++---
 xen/include/public/hvm/dm_op.h                          | 6 +++---
 xen/include/public/hvm/e820.h                           | 6 +++---
 xen/include/public/hvm/hvm_info_table.h                 | 6 +++---
 xen/include/public/hvm/hvm_op.h                         | 6 +++---
 xen/include/public/hvm/hvm_vcpu.h                       | 6 +++---
 xen/include/public/hvm/hvm_xs_strings.h                 | 6 +++---
 xen/include/public/hvm/ioreq.h                          | 6 +++---
 xen/include/public/hvm/params.h                         | 6 +++---
 xen/include/public/hvm/pvdrivers.h                      | 6 +++---
 xen/include/public/hvm/save.h                           | 6 +++---
 xen/include/public/hypfs.h                              | 6 +++---
 xen/include/public/io/9pfs.h                            | 4 ++--
 xen/include/public/io/blkif.h                           | 6 +++---
 xen/include/public/io/cameraif.h                        | 6 +++---
 xen/include/public/io/console.h                         | 6 +++---
 xen/include/public/io/displif.h                         | 6 +++---
 xen/include/public/io/fbif.h                            | 4 ++--
 xen/include/public/io/fsif.h                            | 4 ++--
 xen/include/public/io/kbdif.h                           | 6 +++---
 xen/include/public/io/netif.h                           | 4 ++--
 xen/include/public/io/pciif.h                           | 6 +++---
 xen/include/public/io/protocols.h                       | 4 ++--
 xen/include/public/io/pvcalls.h                         | 4 ++--
 xen/include/public/io/ring.h                            | 6 +++---
 xen/include/public/io/sndif.h                           | 6 +++---
 xen/include/public/io/tpmif.h                           | 4 ++--
 xen/include/public/io/usbif.h                           | 6 +++---
 xen/include/public/io/vscsiif.h                         | 6 +++---
 xen/include/public/io/xenbus.h                          | 6 +++---
 xen/include/public/io/xs_wire.h                         | 6 +++---
 xen/include/public/kexec.h                              | 6 +++---
 xen/include/public/memory.h                             | 6 +++---
 xen/include/public/nmi.h                                | 6 +++---
 xen/include/public/physdev.h                            | 6 +++---
 xen/include/public/platform.h                           | 6 +++---
 xen/include/public/pmu.h                                | 6 +++---
 xen/include/public/sched.h                              | 6 +++---
 xen/include/public/sysctl.h                             | 6 +++---
 xen/include/public/tmem.h                               | 6 +++---
 xen/include/public/trace.h                              | 6 +++---
 xen/include/public/vcpu.h                               | 6 +++---
 xen/include/public/version.h                            | 6 +++---
 xen/include/public/vm_event.h                           | 6 +++---
 xen/include/public/xen-compat.h                         | 6 +++---
 xen/include/public/xen.h                                | 6 +++---
 xen/include/public/xencomm.h                            | 6 +++---
 xen/include/public/xenoprof.h                           | 6 +++---
 xen/include/public/xsm/flask_op.h                       | 4 ++--
 xen/include/xen/8250-uart.h                             | 6 +++---
 xen/include/xen/acpi.h                                  | 6 +++---
 xen/include/xen/alternative-call.h                      | 6 +++---
 xen/include/xen/argo.h                                  | 4 ++--
 xen/include/xen/atomic.h                                | 6 +++---
 xen/include/xen/bitmap.h                                | 6 +++---
 xen/include/xen/bitops.h                                | 6 +++---
 xen/include/xen/bootfdt.h                               | 6 +++---
 xen/include/xen/bug.h                                   | 6 +++---
 xen/include/xen/byteorder/big_endian.h                  | 6 +++---
 xen/include/xen/byteorder/generic.h                     | 6 +++---
 xen/include/xen/byteorder/little_endian.h               | 6 +++---
 xen/include/xen/byteorder/swab.h                        | 6 +++---
 xen/include/xen/cache.h                                 | 6 +++---
 xen/include/xen/compat.h                                | 6 +++---
 xen/include/xen/compiler.h                              | 6 +++---
 xen/include/xen/config.h                                | 6 +++---
 xen/include/xen/console.h                               | 6 +++---
 xen/include/xen/consoled.h                              | 6 +++---
 xen/include/xen/const.h                                 | 6 +++---
 xen/include/xen/coverage.h                              | 4 ++--
 xen/include/xen/cper.h                                  | 4 ++--
 xen/include/xen/cpu.h                                   | 6 +++---
 xen/include/xen/cpuidle.h                               | 6 +++---
 xen/include/xen/cpumask.h                               | 6 +++---
 xen/include/xen/ctype.h                                 | 4 ++--
 xen/include/xen/decompress.h                            | 4 ++--
 xen/include/xen/delay.h                                 | 6 +++---
 xen/include/xen/device_tree.h                           | 4 ++--
 xen/include/xen/dm.h                                    | 6 +++---
 xen/include/xen/dmi.h                                   | 6 +++---
 xen/include/xen/domain.h                                | 6 +++---
 xen/include/xen/domain_page.h                           | 6 +++---
 xen/include/xen/dt-overlay.h                            | 6 +++---
 xen/include/xen/early_printk.h                          | 4 ++--
 xen/include/xen/earlycpio.h                             | 6 +++---
 xen/include/xen/efi.h                                   | 6 +++---
 xen/include/xen/elf.h                                   | 6 +++---
 xen/include/xen/elfcore.h                               | 6 +++---
 xen/include/xen/elfstructs.h                            | 6 +++---
 xen/include/xen/err.h                                   | 6 +++---
 xen/include/xen/errno.h                                 | 6 +++---
 xen/include/xen/event.h                                 | 6 +++---
 xen/include/xen/grant_table.h                           | 6 +++---
 xen/include/xen/guest_access.h                          | 6 +++---
 xen/include/xen/gunzip.h                                | 4 ++--
 xen/include/xen/hypercall.h                             | 6 +++---
 xen/include/xen/hypfs.h                                 | 6 +++---
 xen/include/xen/init.h                                  | 6 +++---
 xen/include/xen/inttypes.h                              | 6 +++---
 xen/include/xen/iocap.h                                 | 6 +++---
 xen/include/xen/iommu.h                                 | 6 +++---
 xen/include/xen/ioreq.h                                 | 6 +++---
 xen/include/xen/irq.h                                   | 6 +++---
 xen/include/xen/irq_cpustat.h                           | 6 +++---
 xen/include/xen/kconfig.h                               | 6 +++---
 xen/include/xen/kernel.h                                | 6 +++---
 xen/include/xen/kexec.h                                 | 6 +++---
 xen/include/xen/keyhandler.h                            | 6 +++---
 xen/include/xen/kimage.h                                | 6 +++---
 xen/include/xen/lib.h                                   | 6 +++---
 xen/include/xen/lib/x86/cpu-policy.h                    | 6 +++---
 xen/include/xen/libelf.h                                | 6 +++---
 xen/include/xen/libfdt/fdt.h                            | 6 +++---
 xen/include/xen/libfdt/libfdt-xen.h                     | 6 +++---
 xen/include/xen/libfdt/libfdt.h                         | 6 +++---
 xen/include/xen/libfdt/libfdt_env.h                     | 6 +++---
 xen/include/xen/linkage.h                               | 6 +++---
 xen/include/xen/linux-compat.h                          | 6 +++---
 xen/include/xen/list.h                                  | 6 +++---
 xen/include/xen/list_sort.h                             | 4 ++--
 xen/include/xen/livepatch.h                             | 6 +++---
 xen/include/xen/livepatch_elf.h                         | 6 +++---
 xen/include/xen/livepatch_payload.h                     | 6 +++---
 xen/include/xen/lz4.h                                   | 4 ++--
 xen/include/xen/lzo.h                                   | 4 ++--
 xen/include/xen/macros.h                                | 6 +++---
 xen/include/xen/mem_access.h                            | 6 +++---
 xen/include/xen/mm-frame.h                              | 6 +++---
 xen/include/xen/mm.h                                    | 6 +++---
 xen/include/xen/monitor.h                               | 6 +++---
 xen/include/xen/msi.h                                   | 4 ++--
 xen/include/xen/multiboot.h                             | 6 +++---
 xen/include/xen/multiboot2.h                            | 6 +++---
 xen/include/xen/multicall.h                             | 6 +++---
 xen/include/xen/nodemask.h                              | 6 +++---
 xen/include/xen/nospec.h                                | 6 +++---
 xen/include/xen/notifier.h                              | 6 +++---
 xen/include/xen/numa.h                                  | 6 +++---
 xen/include/xen/p2m-common.h                            | 6 +++---
 xen/include/xen/page-defs.h                             | 6 +++---
 xen/include/xen/page-size.h                             | 4 ++--
 xen/include/xen/paging.h                                | 6 +++---
 xen/include/xen/param.h                                 | 6 +++---
 xen/include/xen/pci.h                                   | 6 +++---
 xen/include/xen/pci_regs.h                              | 6 +++---
 xen/include/xen/pdx.h                                   | 6 +++---
 xen/include/xen/percpu.h                                | 6 +++---
 xen/include/xen/perfc.h                                 | 6 +++---
 xen/include/xen/perfc_defn.h                            | 6 +++---
 xen/include/xen/pfn.h                                   | 6 +++---
 xen/include/xen/pmap.h                                  | 6 +++---
 xen/include/xen/pmstat.h                                | 6 +++---
 xen/include/xen/preempt.h                               | 6 +++---
 xen/include/xen/prefetch.h                              | 4 ++--
 xen/include/xen/pv_console.h                            | 6 +++---
 xen/include/xen/radix-tree.h                            | 6 +++---
 xen/include/xen/random.h                                | 6 +++---
 xen/include/xen/rangeset.h                              | 6 +++---
 xen/include/xen/rbtree.h                                | 6 +++---
 xen/include/xen/rcupdate.h                              | 6 +++---
 xen/include/xen/rwlock.h                                | 6 +++---
 xen/include/xen/sched.h                                 | 6 +++---
 xen/include/xen/sections.h                              | 6 +++---
 xen/include/xen/self-tests.h                            | 6 +++---
 xen/include/xen/serial.h                                | 6 +++---
 xen/include/xen/shared.h                                | 6 +++---
 xen/include/xen/shutdown.h                              | 6 +++---
 xen/include/xen/sizes.h                                 | 6 +++---
 xen/include/xen/smp.h                                   | 6 +++---
 xen/include/xen/softirq.h                               | 6 +++---
 xen/include/xen/sort.h                                  | 6 +++---
 xen/include/xen/spinlock.h                              | 6 +++---
 xen/include/xen/stdarg.h                                | 6 +++---
 xen/include/xen/stdbool.h                               | 6 +++---
 xen/include/xen/stdint.h                                | 6 +++---
 xen/include/xen/stop_machine.h                          | 6 +++---
 xen/include/xen/string.h                                | 6 +++---
 xen/include/xen/stringify.h                             | 6 +++---
 xen/include/xen/symbols.h                               | 6 +++---
 xen/include/xen/tasklet.h                               | 6 +++---
 xen/include/xen/time.h                                  | 6 +++---
 xen/include/xen/timer.h                                 | 6 +++---
 xen/include/xen/trace.h                                 | 6 +++---
 xen/include/xen/types.h                                 | 6 +++---
 xen/include/xen/typesafe.h                              | 6 +++---
 xen/include/xen/unaligned.h                             | 6 +++---
 xen/include/xen/version.h                               | 6 +++---
 xen/include/xen/vga.h                                   | 6 +++---
 xen/include/xen/video.h                                 | 6 +++---
 xen/include/xen/virtual_region.h                        | 6 +++---
 xen/include/xen/vm_event.h                              | 6 +++---
 xen/include/xen/vmap.h                                  | 6 +++---
 xen/include/xen/vpci.h                                  | 4 ++--
 xen/include/xen/wait.h                                  | 6 +++---
 xen/include/xen/warning.h                               | 4 ++--
 xen/include/xen/watchdog.h                              | 6 +++---
 xen/include/xen/xen.lds.h                               | 6 +++---
 xen/include/xen/xenoprof.h                              | 4 ++--
 xen/include/xen/xmalloc.h                               | 6 +++---
 xen/include/xen/xxhash.h                                | 6 +++---
 xen/include/xsm/dummy.h                                 | 6 +++---
 xen/include/xsm/xsm.h                                   | 4 ++--
 xen/lib/x86/private.h                                   | 6 +++---
 xen/tools/kconfig/expr.h                                | 6 +++---
 xen/tools/kconfig/images.h                              | 6 +++---
 xen/tools/kconfig/list.h                                | 4 ++--
 xen/tools/kconfig/lkc.h                                 | 6 +++---
 xen/xsm/flask/include/avc.h                             | 6 +++---
 xen/xsm/flask/include/avc_ss.h                          | 6 +++---
 xen/xsm/flask/include/conditional.h                     | 4 ++--
 xen/xsm/flask/include/objsec.h                          | 6 +++---
 xen/xsm/flask/include/security.h                        | 6 +++---
 xen/xsm/flask/private.h                                 | 6 +++---
 xen/xsm/flask/ss/avtab.h                                | 6 +++---
 xen/xsm/flask/ss/conditional.h                          | 6 +++---
 xen/xsm/flask/ss/constraint.h                           | 6 +++---
 xen/xsm/flask/ss/context.h                              | 6 +++---
 xen/xsm/flask/ss/ebitmap.h                              | 6 +++---
 xen/xsm/flask/ss/hashtab.h                              | 4 ++--
 xen/xsm/flask/ss/mls.h                                  | 4 ++--
 xen/xsm/flask/ss/mls_types.h                            | 6 +++---
 xen/xsm/flask/ss/policydb.h                             | 6 +++---
 xen/xsm/flask/ss/services.h                             | 6 +++---
 xen/xsm/flask/ss/sidtab.h                               | 6 +++---
 xen/xsm/flask/ss/symtab.h                               | 6 +++---
 736 files changed, 2093 insertions(+), 2093 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809325.1221580 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnn-0004Lc-BG; Thu, 03 Oct 2024 12:19:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809325.1221580; Thu, 03 Oct 2024 12: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 1swKnn-0004LV-8b; Thu, 03 Oct 2024 12:19:27 +0000
Received: by outflank-mailman (input) for mailman id 809325;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnl-00043u-Oq
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:25 +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 b9c0ba6b-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:24 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8d2b24b7a8so377460966b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:24 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9c0ba6b-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957963; x=1728562763; 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=pxANqrtnn+Jr20AColkGK04OoedxN3PRTLF8D5KxOTk=;
        b=hDU6ABwcSJA09AlQ62gJgq/HK/KUuq+Zzzwkpl1k/RHNL5IcNf4aBUZ1vddce+V8o4
         B9yNA4rca7p6w2dvxYvuXOWacKibkDV7tmKxk87bGkOERn8bCiNPncCm0dVK85b7evAm
         spE9Zz5WyWTdjZRbFWgA5YoyhzwFpiSEpLCms=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957963; x=1728562763;
        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=pxANqrtnn+Jr20AColkGK04OoedxN3PRTLF8D5KxOTk=;
        b=fyp7zaS1StHUGIwkb7dk4JxRSWOlonPE+0f7fOdVpZvKepwrvJPjmT29NhbBbTFD7T
         MA4B9ZhpGG1wot1lmkhRMJoAdmN7Om3ausQdapZ6XwxwecbOg3C1bGEbpljvwbEjY1jR
         OacQWRCWEbXf7CTs09DRGWfmQFUHd2jRxMNLFvW2TWf0j3qqMAFVGv6SXvgrCZfhBIp2
         YulWBng+fuvlIKOe72ZtxJAPZiHumgNdhPw1dhbm13xkAhlXVPQIQNCfr/jAkhIAr42t
         8iYJ1exA5xl68MEYY4E9sB0QI41RrzwJOKnhf2bCbN3sLEWRzlEfJAjrUOmn3s4LDXFQ
         wMRw==
X-Gm-Message-State: AOJu0YzATHWiy8DMSE+I2auvXqAvSJx1oax/NHzlYCuM6XbNtDt71s+l
	aic/LPzP0rOgKnFdAPnUURZ1S8jbBNFLL2zL8HVQtCSTjfLPDir3MulW2DKhQQfPjmHX/98RdBf
	Y
X-Google-Smtp-Source: AGHT+IHhMunUS2hW+EyMBz83xCF1a7SXPdf85M813Reze0umM2Ir+i8jhGCzz7i4f/fv9+vSRbHeug==
X-Received: by 2002:a17:906:db0d:b0:a90:9879:582b with SMTP id a640c23a62f3a-a990a055ac6mr363362766b.14.1727957963074;
        Thu, 03 Oct 2024 05:19:23 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 03/20] xen: Update header guards - ACPI
Date: Thu,  3 Oct 2024 13:18:51 +0100
Message-Id: <20241003121908.362888-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ACPI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/drivers/acpi/apei/apei-internal.h     | 4 ++--
 xen/include/acpi/acconfig.h               | 6 +++---
 xen/include/acpi/acexcep.h                | 6 +++---
 xen/include/acpi/acglobal.h               | 6 +++---
 xen/include/acpi/achware.h                | 6 +++---
 xen/include/acpi/aclocal.h                | 6 +++---
 xen/include/acpi/acmacros.h               | 4 ++--
 xen/include/acpi/acnames.h                | 6 +++---
 xen/include/acpi/acoutput.h               | 6 +++---
 xen/include/acpi/acpi.h                   | 6 +++---
 xen/include/acpi/acpiosxf.h               | 6 +++---
 xen/include/acpi/acpixf.h                 | 6 +++---
 xen/include/acpi/actables.h               | 6 +++---
 xen/include/acpi/actbl.h                  | 6 +++---
 xen/include/acpi/actbl1.h                 | 6 +++---
 xen/include/acpi/actbl2.h                 | 6 +++---
 xen/include/acpi/actbl3.h                 | 6 +++---
 xen/include/acpi/actypes.h                | 6 +++---
 xen/include/acpi/acutils.h                | 6 +++---
 xen/include/acpi/apei.h                   | 4 ++--
 xen/include/acpi/cpufreq/cpufreq.h        | 6 +++---
 xen/include/acpi/cpufreq/processor_perf.h | 6 +++---
 xen/include/acpi/pdc_intel.h              | 6 +++---
 xen/include/acpi/platform/acenv.h         | 6 +++---
 xen/include/acpi/platform/acgcc.h         | 6 +++---
 xen/include/acpi/platform/aclinux.h       | 6 +++---
 26 files changed, 75 insertions(+), 75 deletions(-)

diff --git a/xen/drivers/acpi/apei/apei-internal.h b/xen/drivers/acpi/apei/apei-internal.h
index 90233077b7..8a5ed3fc33 100644
--- a/xen/drivers/acpi/apei/apei-internal.h
+++ b/xen/drivers/acpi/apei/apei-internal.h
@@ -3,8 +3,8 @@
  * definations.
  */
 
-#ifndef APEI_INTERNAL_H
-#define APEI_INTERNAL_H
+#ifndef DRIVERS__ACPI__APEI__APEI_INTERNAL_H
+#define DRIVERS__ACPI__APEI__APEI_INTERNAL_H
 
 struct apei_exec_context;
 
diff --git a/xen/include/acpi/acconfig.h b/xen/include/acpi/acconfig.h
index 422f29c06c..f5b5192c46 100644
--- a/xen/include/acpi/acconfig.h
+++ b/xen/include/acpi/acconfig.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef _ACCONFIG_H
-#define _ACCONFIG_H
+#ifndef ACPI__ACCONFIG_H
+#define ACPI__ACCONFIG_H
 
 /******************************************************************************
  *
@@ -203,4 +203,4 @@
 #define ACPI_DEBUGGER_COMMAND_PROMPT    '-'
 #define ACPI_DEBUGGER_EXECUTE_PROMPT    '%'
 
-#endif				/* _ACCONFIG_H */
+#endif				/* ACPI__ACCONFIG_H */
diff --git a/xen/include/acpi/acexcep.h b/xen/include/acpi/acexcep.h
index 5d9f4841d2..455c4fe982 100644
--- a/xen/include/acpi/acexcep.h
+++ b/xen/include/acpi/acexcep.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACEXCEP_H__
-#define __ACEXCEP_H__
+#ifndef ACPI__ACEXCEP_H
+#define ACPI__ACEXCEP_H
 
 /*
  * Exceptions returned by external ACPI interfaces
@@ -300,4 +300,4 @@ char const *__initdata acpi_gbl_exception_names_ctrl[] = {
 
 #endif				/* ACPI GLOBALS */
 
-#endif				/* __ACEXCEP_H__ */
+#endif				/* ACPI__ACEXCEP_H */
diff --git a/xen/include/acpi/acglobal.h b/xen/include/acpi/acglobal.h
index c2a96097b9..96fb14d793 100644
--- a/xen/include/acpi/acglobal.h
+++ b/xen/include/acpi/acglobal.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACGLOBAL_H__
-#define __ACGLOBAL_H__
+#ifndef ACPI__ACGLOBAL_H
+#define ACPI__ACGLOBAL_H
 
 /*
  * Ensure that the globals are actually defined and initialized only once.
@@ -110,4 +110,4 @@ extern char const *acpi_gbl_exception_names_ctrl[];
 extern struct acpi_bit_register_info
     acpi_gbl_bit_register_info[ACPI_NUM_BITREG];
 
-#endif				/* __ACGLOBAL_H__ */
+#endif				/* ACPI__ACGLOBAL_H */
diff --git a/xen/include/acpi/achware.h b/xen/include/acpi/achware.h
index 7433fb47ac..6257ae4cd4 100644
--- a/xen/include/acpi/achware.h
+++ b/xen/include/acpi/achware.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACHWARE_H__
-#define __ACHWARE_H__
+#ifndef ACPI__ACHWARE_H
+#define ACPI__ACHWARE_H
 
 /*
  * hwregs - ACPI Register I/O
@@ -59,4 +59,4 @@ acpi_hw_low_level_read(u32 width,
 acpi_status
 acpi_hw_low_level_write(u32 width, u32 value, struct acpi_generic_address *reg);
 
-#endif				/* __ACHWARE_H__ */
+#endif				/* ACPI__ACHWARE_H */
diff --git a/xen/include/acpi/aclocal.h b/xen/include/acpi/aclocal.h
index 16e234f0de..38369db497 100644
--- a/xen/include/acpi/aclocal.h
+++ b/xen/include/acpi/aclocal.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACLOCAL_H__
-#define __ACLOCAL_H__
+#ifndef ACPI__ACLOCAL_H
+#define ACPI__ACLOCAL_H
 
 /* acpisrc:struct_defs -- for acpisrc conversion */
 
@@ -204,4 +204,4 @@ struct acpi_bit_register_info {
 #define ACPI_ADDRESS_TYPE_IO_RANGE              1
 #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE      2
 
-#endif				/* __ACLOCAL_H__ */
+#endif				/* ACPI__ACLOCAL_H */
diff --git a/xen/include/acpi/acmacros.h b/xen/include/acpi/acmacros.h
index 86c503c20f..0f60a07594 100644
--- a/xen/include/acpi/acmacros.h
+++ b/xen/include/acpi/acmacros.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACMACROS_H__
-#define __ACMACROS_H__
+#ifndef ACPI__ACMACROS_H
+#define ACPI__ACMACROS_H
 
 /*
  * Data manipulation macros
diff --git a/xen/include/acpi/acnames.h b/xen/include/acpi/acnames.h
index 34bfae8a05..f85d3341fb 100644
--- a/xen/include/acpi/acnames.h
+++ b/xen/include/acpi/acnames.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACNAMES_H__
-#define __ACNAMES_H__
+#ifndef ACPI__ACNAMES_H
+#define ACPI__ACNAMES_H
 
 /* Method names - these methods can appear anywhere in the namespace */
 
@@ -80,4 +80,4 @@
 #define ACPI_NS_ROOT_PATH       "\\"
 #define ACPI_NS_SYSTEM_BUS      "_SB_"
 
-#endif				/* __ACNAMES_H__  */
+#endif				/* ACPI__ACNAMES_H  */
diff --git a/xen/include/acpi/acoutput.h b/xen/include/acpi/acoutput.h
index c090a8b0bc..7a0283894b 100644
--- a/xen/include/acpi/acoutput.h
+++ b/xen/include/acpi/acoutput.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACOUTPUT_H__
-#define __ACOUTPUT_H__
+#ifndef ACPI__ACOUTPUT_H
+#define ACPI__ACOUTPUT_H
 
 /*
  * Debug levels and component IDs.  These are used to control the
@@ -182,4 +182,4 @@
 #define ACPI_NORMAL_DEFAULT         (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR)
 #define ACPI_DEBUG_ALL              (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
 
-#endif				/* __ACOUTPUT_H__ */
+#endif				/* ACPI__ACOUTPUT_H */
diff --git a/xen/include/acpi/acpi.h b/xen/include/acpi/acpi.h
index c852701ff2..f922fd8556 100644
--- a/xen/include/acpi/acpi.h
+++ b/xen/include/acpi/acpi.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACPI_H__
-#define __ACPI_H__
+#ifndef ACPI__ACPI_H
+#define ACPI__ACPI_H
 
 #define PREFIX			"ACPI: "
 
@@ -66,4 +66,4 @@
 #include "achware.h"		/* Hardware defines and interfaces */
 #include "acutils.h"		/* Utility interfaces */
 
-#endif				/* __ACPI_H__ */
+#endif				/* ACPI__ACPI_H */
diff --git a/xen/include/acpi/acpiosxf.h b/xen/include/acpi/acpiosxf.h
index de83ea38c4..6264a727d3 100644
--- a/xen/include/acpi/acpiosxf.h
+++ b/xen/include/acpi/acpiosxf.h
@@ -44,8 +44,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACPIOSXF_H__
-#define __ACPIOSXF_H__
+#ifndef ACPI__ACPIOSXF_H
+#define ACPI__ACPIOSXF_H
 
 #include "platform/acenv.h"
 #include "actypes.h"
@@ -86,4 +86,4 @@ void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...);
 
 void acpi_os_vprintf(const char *format, va_list args);
 
-#endif				/* __ACPIOSXF_H__ */
+#endif				/* ACPI__ACPIOSXF_H */
diff --git a/xen/include/acpi/acpixf.h b/xen/include/acpi/acpixf.h
index 8b70154b8f..64373a3472 100644
--- a/xen/include/acpi/acpixf.h
+++ b/xen/include/acpi/acpixf.h
@@ -42,8 +42,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACXFACE_H__
-#define __ACXFACE_H__
+#ifndef ACPI__ACPIXF_H
+#define ACPI__ACPIXF_H
 
 #include "actypes.h"
 #include "actbl.h"
@@ -116,4 +116,4 @@ acpi_status acpi_leave_sleep_state_prep(u8 sleep_state);
 
 acpi_status acpi_leave_sleep_state(u8 sleep_state);
 
-#endif				/* __ACXFACE_H__ */
+#endif				/* ACPI__ACPIXF_H */
diff --git a/xen/include/acpi/actables.h b/xen/include/acpi/actables.h
index 527e1c9f9b..45a1e0c634 100644
--- a/xen/include/acpi/actables.h
+++ b/xen/include/acpi/actables.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTABLES_H__
-#define __ACTABLES_H__
+#ifndef ACPI__ACTABLES_H
+#define ACPI__ACTABLES_H
 
 acpi_status acpi_allocate_root_table(u32 initial_table_count);
 
@@ -104,4 +104,4 @@ acpi_tb_install_table(acpi_physical_address address,
 acpi_status
 acpi_tb_parse_root_table(acpi_physical_address rsdp_address, u8 flags);
 
-#endif				/* __ACTABLES_H__ */
+#endif				/* ACPI__ACTABLES_H */
diff --git a/xen/include/acpi/actbl.h b/xen/include/acpi/actbl.h
index 3079176992..b022403359 100644
--- a/xen/include/acpi/actbl.h
+++ b/xen/include/acpi/actbl.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL_H__
-#define __ACTBL_H__
+#ifndef ACPI__ACTBL_H
+#define ACPI__ACTBL_H
 
 /*******************************************************************************
  *
@@ -358,4 +358,4 @@ enum acpi_prefered_pm_profiles {
 #define ACPI_FADT_V5_SIZE       (u32) (ACPI_FADT_OFFSET (hypervisor_id))
 #define ACPI_FADT_V6_SIZE       (u32) (sizeof (struct acpi_table_fadt))
 
-#endif				/* __ACTBL_H__ */
+#endif				/* ACPI__ACTBL_H */
diff --git a/xen/include/acpi/actbl1.h b/xen/include/acpi/actbl1.h
index 923641fc9e..1b333399ca 100644
--- a/xen/include/acpi/actbl1.h
+++ b/xen/include/acpi/actbl1.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL1_H__
-#define __ACTBL1_H__
+#ifndef ACPI__ACTBL1_H
+#define ACPI__ACTBL1_H
 
 /*******************************************************************************
  *
@@ -1012,4 +1012,4 @@ struct acpi_srat_x2apic_cpu_affinity {
 
 #pragma pack()
 
-#endif				/* __ACTBL1_H__ */
+#endif				/* ACPI__ACTBL1_H */
diff --git a/xen/include/acpi/actbl2.h b/xen/include/acpi/actbl2.h
index ee96e990d6..7eb4e51b72 100644
--- a/xen/include/acpi/actbl2.h
+++ b/xen/include/acpi/actbl2.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL2_H__
-#define __ACTBL2_H__
+#ifndef ACPI__ACTBL2_H
+#define ACPI__ACTBL2_H
 
 /*******************************************************************************
  *
@@ -1268,4 +1268,4 @@ struct acpi_table_wdrt {
 
 #pragma pack()
 
-#endif				/* __ACTBL2_H__ */
+#endif				/* ACPI__ACTBL2_H */
diff --git a/xen/include/acpi/actbl3.h b/xen/include/acpi/actbl3.h
index 6858d3e60f..2407455102 100644
--- a/xen/include/acpi/actbl3.h
+++ b/xen/include/acpi/actbl3.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL3_H__
-#define __ACTBL3_H__
+#ifndef ACPI__ACTBL3_H
+#define ACPI__ACTBL3_H
 
 /*******************************************************************************
  *
@@ -639,4 +639,4 @@ struct acpi_table_stao {
 
 #pragma pack()
 
-#endif				/* __ACTBL3_H__ */
+#endif				/* ACPI__ACTBL3_H */
diff --git a/xen/include/acpi/actypes.h b/xen/include/acpi/actypes.h
index 49e0ab9bb4..17464f5a65 100644
--- a/xen/include/acpi/actypes.h
+++ b/xen/include/acpi/actypes.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTYPES_H__
-#define __ACTYPES_H__
+#ifndef ACPI__ACTYPES_H
+#define ACPI__ACTYPES_H
 
 /* acpisrc:struct_defs -- for acpisrc conversion */
 
@@ -724,4 +724,4 @@ struct acpi_buffer {
 #define ACPI_PRODUCER                   (u8) 0x00
 #define ACPI_CONSUMER                   (u8) 0x01
 
-#endif				/* __ACTYPES_H__ */
+#endif				/* ACPI__ACTYPES_H */
diff --git a/xen/include/acpi/acutils.h b/xen/include/acpi/acutils.h
index ac54adaa8c..7b0a8c677d 100644
--- a/xen/include/acpi/acutils.h
+++ b/xen/include/acpi/acutils.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef _ACUTILS_H
-#define _ACUTILS_H
+#ifndef ACPI__ACUTILS_H
+#define ACPI__ACUTILS_H
 
 /* Types for Resource descriptor entries */
 
@@ -196,4 +196,4 @@ acpi_ut_info(const char *module_name,
  */
 const char *acpi_ut_validate_exception(acpi_status status);
 
-#endif				/* _ACUTILS_H */
+#endif				/* ACPI__ACUTILS_H */
diff --git a/xen/include/acpi/apei.h b/xen/include/acpi/apei.h
index 495819e362..6aed603745 100644
--- a/xen/include/acpi/apei.h
+++ b/xen/include/acpi/apei.h
@@ -2,8 +2,8 @@
  * apei.h - ACPI Platform Error Interface
  */
 
-#ifndef ACPI_APEI_H
-#define ACPI_APEI_H
+#ifndef ACPI__APEI_H
+#define ACPI__APEI_H
 
 #include <xen/acpi.h>
 #include <xen/cper.h>
diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h
index 3f1b05a02e..6764d54f8f 100644
--- a/xen/include/acpi/cpufreq/cpufreq.h
+++ b/xen/include/acpi/cpufreq/cpufreq.h
@@ -11,8 +11,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __XEN_CPUFREQ_PM_H__
-#define __XEN_CPUFREQ_PM_H__
+#ifndef ACPI__CPUFREQ__CPUFREQ_H
+#define ACPI__CPUFREQ__CPUFREQ_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -267,4 +267,4 @@ int set_hwp_para(struct cpufreq_policy *policy,
 
 int acpi_cpufreq_register(void);
 
-#endif /* __XEN_CPUFREQ_PM_H__ */
+#endif /* ACPI__CPUFREQ__CPUFREQ_H */
diff --git a/xen/include/acpi/cpufreq/processor_perf.h b/xen/include/acpi/cpufreq/processor_perf.h
index 301104e16f..2088e5ea67 100644
--- a/xen/include/acpi/cpufreq/processor_perf.h
+++ b/xen/include/acpi/cpufreq/processor_perf.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PROCESSOR_PM_H__
-#define __XEN_PROCESSOR_PM_H__
+#ifndef ACPI__CPUFREQ__PROCESSOR_PERF_H
+#define ACPI__CPUFREQ__PROCESSOR_PERF_H
 
 #include <public/platform.h>
 #include <public/sysctl.h>
@@ -59,4 +59,4 @@ struct pm_px {
 DECLARE_PER_CPU(struct pm_px *, cpufreq_statistic_data);
 
 int cpufreq_cpu_init(unsigned int cpu);
-#endif /* __XEN_PROCESSOR_PM_H__ */
+#endif /* ACPI__CPUFREQ__PROCESSOR_PERF_H */
diff --git a/xen/include/acpi/pdc_intel.h b/xen/include/acpi/pdc_intel.h
index abaa098b51..a6510b14fe 100644
--- a/xen/include/acpi/pdc_intel.h
+++ b/xen/include/acpi/pdc_intel.h
@@ -1,8 +1,8 @@
 
 /* _PDC bit definition for Intel processors */
 
-#ifndef __PDC_INTEL_H__
-#define __PDC_INTEL_H__
+#ifndef ACPI__PDC_INTEL_H
+#define ACPI__PDC_INTEL_H
 
 #define ACPI_PDC_REVISION_ID		1
 
@@ -48,4 +48,4 @@
 #define ACPI_PDC_T_MASK			(ACPI_PDC_T_FFH | \
 					 ACPI_PDC_SMP_T_SWCOORD)
 
-#endif				/* __PDC_INTEL_H__ */
+#endif				/* ACPI__PDC_INTEL_H */
diff --git a/xen/include/acpi/platform/acenv.h b/xen/include/acpi/platform/acenv.h
index 83cdb77d75..33c253c094 100644
--- a/xen/include/acpi/platform/acenv.h
+++ b/xen/include/acpi/platform/acenv.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACENV_H__
-#define __ACENV_H__
+#ifndef ACPI__PLATFORM__ACENV_H
+#define ACPI__PLATFORM__ACENV_H
 
 /*
  * Configuration for ACPI tools and utilities
@@ -362,4 +362,4 @@ typedef char *va_list;
  * headers.
  *
  *****************************************************************************/
-#endif				/* __ACENV_H__ */
+#endif				/* ACPI__PLATFORM__ACENV_H */
diff --git a/xen/include/acpi/platform/acgcc.h b/xen/include/acpi/platform/acgcc.h
index b355e98eeb..6b32e4eedd 100644
--- a/xen/include/acpi/platform/acgcc.h
+++ b/xen/include/acpi/platform/acgcc.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACGCC_H__
-#define __ACGCC_H__
+#ifndef ACPI__PLATFORM__ACGCC_H
+#define ACPI__PLATFORM__ACGCC_H
 
 /* Function name is used for debug output. Non-ANSI, compiler-dependent */
 
@@ -62,4 +62,4 @@
  */
 #define ACPI_UNUSED_VAR __attribute__ ((unused))
 
-#endif				/* __ACGCC_H__ */
+#endif				/* ACPI__PLATFORM__ACGCC_H */
diff --git a/xen/include/acpi/platform/aclinux.h b/xen/include/acpi/platform/aclinux.h
index a66c2e6d1d..32a853f1bc 100644
--- a/xen/include/acpi/platform/aclinux.h
+++ b/xen/include/acpi/platform/aclinux.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACLINUX_H__
-#define __ACLINUX_H__
+#ifndef ACPI__PLATFORM__ACLINUX_H
+#define ACPI__PLATFORM__ACLINUX_H
 
 #define ACPI_USE_SYSTEM_CLIBRARY
 #define ACPI_USE_DO_WHILE_0
@@ -82,4 +82,4 @@ void acpi_os_free_memory(void *ptr);
 #define ACPI_ALLOCATE_ZEROED(a)	acpi_os_zalloc_memory(a)
 #define ACPI_FREE(a)		acpi_os_free_memory(a)
 
-#endif				/* __ACLINUX_H__ */
+#endif				/* ACPI__PLATFORM__ACLINUX_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809326.1221590 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKno-0004bA-Hx; Thu, 03 Oct 2024 12:19:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809326.1221590; Thu, 03 Oct 2024 12: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 1swKno-0004b1-FC; Thu, 03 Oct 2024 12:19:28 +0000
Received: by outflank-mailman (input) for mailman id 809326;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnm-00043u-Oz
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:26 +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 ba1b09af-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:24 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8d0d0aea3cso124076466b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:24 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba1b09af-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957964; x=1728562764; 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=Tis/X/p31Jv/hBo4GPRCJx3SzpdwRvuuxDnrw7zrjpc=;
        b=XxBHB2UFFFr9KgXtfJ9bBlfu4EXBdtLbVhGuXoWDKz+L5xdDPLqF1C1F3V+WdpQqFt
         TzKSpTC8+ztb08Ln3VxF4okkWj/RJVuQWnOAeWeVCptVS9sxEuzsYCnWi27gZYh5Knns
         jeyscff/Z6uRaUGdzMnhbniy/vvCa5wcvLRsQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957964; x=1728562764;
        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=Tis/X/p31Jv/hBo4GPRCJx3SzpdwRvuuxDnrw7zrjpc=;
        b=rwYvP6RpJ6gQPhcjitEFFNv6PWpchK9VYCsOlT6XnUFRaFoxnmyv949OWmy/OSkkj6
         dtLUvwVspymXOSAtRC5ZZc482nxF0DOiCkiWlL8pSCLbNVibT1IdCe6kzfVGXY9ULTZH
         w15q4Aab3Zh6ZieIWdUVVQzRXLk1NvC+1zsAMtd7lp505ty+Vp65zpUhsV55AvOrTKg4
         qbxdegyzm8722VbWYCyrz6vHUWyGv6ATJoozXOMScffI0nGzTLHSYp9bbYxk+Bp5N+h+
         qQk0/EsUDAIDFA/Kw+Z09VIZNxkE7KPeKuojJwysg7pFT+vvOUC1XkluPnaNyY5Few3n
         FHkA==
X-Gm-Message-State: AOJu0YxhsUqw8XsIBEInRuWP58OV53jxgbyKWkb3uTR8FRyaYt5atADg
	tp9PjIuQJ/fTMvCoAwLaA32ZN7PH4tnR23g4XbBjPFumj10ODH8Qmn5aULdTuXXjRx8AL06qY4X
	p
X-Google-Smtp-Source: AGHT+IHhifE9+JZN9of9L51528Ue5aRaZYwnw1J9r6hUn5hoQbGUOJv1kcoO1qj3K9dMhq/vH9R3Wg==
X-Received: by 2002:a17:907:2d8b:b0:a93:d4c4:6b26 with SMTP id a640c23a62f3a-a98f824a439mr515721566b.25.1727957963714;
        Thu, 03 Oct 2024 05:19:23 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Christopher Clark <christopher.w.clark@gmail.com>
Subject: [PATCH 04/20] xen: Update header guards - ARGO
Date: Thu,  3 Oct 2024 13:18:52 +0100
Message-Id: <20241003121908.362888-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ARGO.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/public/argo.h | 4 ++--
 xen/include/xen/argo.h    | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/include/public/argo.h b/xen/include/public/argo.h
index 84a4cb118b..32e46c4b5c 100644
--- a/xen/include/public/argo.h
+++ b/xen/include/public/argo.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef __XEN_PUBLIC_ARGO_H__
-#define __XEN_PUBLIC_ARGO_H__
+#ifndef PUBLIC__ARGO_H
+#define PUBLIC__ARGO_H
 
 #include "xen.h"
 
diff --git a/xen/include/xen/argo.h b/xen/include/xen/argo.h
index fd4cfdd55c..3ef62dab19 100644
--- a/xen/include/xen/argo.h
+++ b/xen/include/xen/argo.h
@@ -12,8 +12,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_ARGO_H__
-#define __XEN_ARGO_H__
+#ifndef XEN__ARGO_H
+#define XEN__ARGO_H
 
 #include <xen/sched.h>
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809327.1221596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnp-0004f3-1S; Thu, 03 Oct 2024 12:19:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809327.1221596; Thu, 03 Oct 2024 12: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 1swKno-0004ec-P5; Thu, 03 Oct 2024 12:19:28 +0000
Received: by outflank-mailman (input) for mailman id 809327;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnm-00043W-VB
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:27 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ba388043-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:24 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-5398a26b64fso866081e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:24 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba388043-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957964; x=1728562764; 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=RGEyc61wruwifKqQgSxv986dHUhqdj3g8bW7k9LBErs=;
        b=A82cbdXYp5EkNfcq87g+1SewdQoSXUX5AxW8sh4wXsyieousUljM9NvMlCFE9uvsZb
         dMkjlt6MJWL1DfpvBFAAcyU+NW7Et71sxA2+DtUeE+lqsPU/CdwxqDHuHc4q3HWsxcka
         iu1uTFPOCpW7yixIXuRDkUqLr63NGuoHS5M0o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957964; x=1728562764;
        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=RGEyc61wruwifKqQgSxv986dHUhqdj3g8bW7k9LBErs=;
        b=tVZVbiHBbO9D8VHDGXKUFoB8S0cRA51LCat2Vr0eRdlaXHhUHMqfotJrhdQ+SuY7AS
         BLao40VMyBHDIKFeR91Xhemx/vS8mDI6v0Gi3G2JKr2BX5iw6N8zKS4sCaYf7fmB4Dvf
         W4n7SL0GxS109RmvHLcmgNuCQ3WC7zlYChz/2T5t54amgE4gTj3T9xUDAgdVuwiThus3
         ke0oZ3xbYZRYhqQqu7ylCNLiKdOH49NMv2WPG2Tg/t3XkuGg1hLnBAKN3+kSix0d0l+6
         dozhcB+mbbETVTidisdfYBBP94idESVJOhMtrSnsnstl31MdpXPR9A0Je/iUHMLN4FQb
         zdRg==
X-Gm-Message-State: AOJu0Yw79W9pip3dP+Mq+wu49SPiv/s0ZFrKKOuuV1QjDnuYwn0AKusw
	FiSBL0vcV2QQfmLwOY1NgzlYLSrN9YYvc/W1lwstQbUdtkRqCSPa+BI+8+o2QIeS5+cqAs11vZS
	m
X-Google-Smtp-Source: AGHT+IEq1fYGGiJVstcBIq4eYhGWvOsxaq9CSHSCX/daO8VbaredxVNljIiwcI+KhTXie/B99X7XGg==
X-Received: by 2002:a05:6512:694:b0:539:94aa:d512 with SMTP id 2adb3069b0e04-539a07a89c0mr4003590e87.53.1727957962133;
        Thu, 03 Oct 2024 05:19:22 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Paul Durrant <paul@xen.org>,
	Tim Deegan <tim@xen.org>
Subject: [PATCH 02/20] xen: Update header guards - X86
Date: Thu,  3 Oct 2024 13:18:50 +0100
Message-Id: <20241003121908.362888-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to x86 architecture.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/video.h                           | 6 +++---
 xen/arch/x86/cpu/mcheck/barrier.h                   | 6 +++---
 xen/arch/x86/cpu/mcheck/mcaction.h                  | 4 ++--
 xen/arch/x86/cpu/mcheck/mce.h                       | 6 +++---
 xen/arch/x86/cpu/mcheck/mce_amd.h                   | 4 ++--
 xen/arch/x86/cpu/mcheck/mctelem.h                   | 4 ++--
 xen/arch/x86/cpu/mcheck/util.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/vmce.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/x86_mca.h                   | 6 +++---
 xen/arch/x86/cpu/microcode/private.h                | 6 +++---
 xen/arch/x86/cpu/mtrr/mtrr.h                        | 6 +++---
 xen/arch/x86/guest/hyperv/private.h                 | 6 +++---
 xen/arch/x86/hvm/svm/nestedhvm.h                    | 6 +++---
 xen/arch/x86/hvm/svm/svm.h                          | 6 +++---
 xen/arch/x86/hvm/viridian/private.h                 | 6 +++---
 xen/arch/x86/include/asm/acpi.h                     | 4 ++--
 xen/arch/x86/include/asm/alternative-asm.h          | 6 +++---
 xen/arch/x86/include/asm/alternative.h              | 6 +++---
 xen/arch/x86/include/asm/altp2m.h                   | 6 +++---
 xen/arch/x86/include/asm/amd.h                      | 6 +++---
 xen/arch/x86/include/asm/apic.h                     | 6 +++---
 xen/arch/x86/include/asm/apicdef.h                  | 4 ++--
 xen/arch/x86/include/asm/asm_defns.h                | 6 +++---
 xen/arch/x86/include/asm/atomic.h                   | 6 +++---
 xen/arch/x86/include/asm/bitops.h                   | 6 +++---
 xen/arch/x86/include/asm/bug.h                      | 6 +++---
 xen/arch/x86/include/asm/byteorder.h                | 6 +++---
 xen/arch/x86/include/asm/bzimage.h                  | 6 +++---
 xen/arch/x86/include/asm/cache.h                    | 4 ++--
 xen/arch/x86/include/asm/config.h                   | 6 +++---
 xen/arch/x86/include/asm/cpu-policy.h               | 6 +++---
 xen/arch/x86/include/asm/cpufeature.h               | 6 +++---
 xen/arch/x86/include/asm/cpufeatureset.h            | 6 +++---
 xen/arch/x86/include/asm/cpuid.h                    | 6 +++---
 xen/arch/x86/include/asm/cpuidle.h                  | 4 ++--
 xen/arch/x86/include/asm/current.h                  | 6 +++---
 xen/arch/x86/include/asm/debugreg.h                 | 6 +++---
 xen/arch/x86/include/asm/desc.h                     | 6 +++---
 xen/arch/x86/include/asm/device.h                   | 6 +++---
 xen/arch/x86/include/asm/dom0_build.h               | 6 +++---
 xen/arch/x86/include/asm/domain.h                   | 6 +++---
 xen/arch/x86/include/asm/e820.h                     | 6 +++---
 xen/arch/x86/include/asm/edd.h                      | 6 +++---
 xen/arch/x86/include/asm/elf.h                      | 6 +++---
 xen/arch/x86/include/asm/endbr.h                    | 6 +++---
 xen/arch/x86/include/asm/event.h                    | 4 ++--
 xen/arch/x86/include/asm/fixmap.h                   | 4 ++--
 xen/arch/x86/include/asm/flushtlb.h                 | 6 +++---
 xen/arch/x86/include/asm/gdbsx.h                    | 6 +++---
 xen/arch/x86/include/asm/genapic.h                  | 4 ++--
 xen/arch/x86/include/asm/grant_table.h              | 6 +++---
 xen/arch/x86/include/asm/guest.h                    | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-hcall.h       | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-tlfs.h        | 4 ++--
 xen/arch/x86/include/asm/guest/hyperv.h             | 6 +++---
 xen/arch/x86/include/asm/guest/hypervisor.h         | 6 +++---
 xen/arch/x86/include/asm/guest/pvh-boot.h           | 6 +++---
 xen/arch/x86/include/asm/guest/xen-hcall.h          | 6 +++---
 xen/arch/x86/include/asm/guest/xen.h                | 6 +++---
 xen/arch/x86/include/asm/guest_access.h             | 6 +++---
 xen/arch/x86/include/asm/guest_atomics.h            | 6 +++---
 xen/arch/x86/include/asm/guest_pt.h                 | 6 +++---
 xen/arch/x86/include/asm/hap.h                      | 4 ++--
 xen/arch/x86/include/asm/hardirq.h                  | 6 +++---
 xen/arch/x86/include/asm/hpet.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/asid.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/cacheattr.h            | 6 +++---
 xen/arch/x86/include/asm/hvm/domain.h               | 6 +++---
 xen/arch/x86/include/asm/hvm/emulate.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/grant_table.h          | 6 +++---
 xen/arch/x86/include/asm/hvm/guest_access.h         | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/io.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/ioreq.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/irq.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/nestedhvm.h            | 6 +++---
 xen/arch/x86/include/asm/hvm/save.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/support.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/nestedsvm.h        | 4 ++--
 xen/arch/x86/include/asm/hvm/svm/svm.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/svmdebug.h         | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/vmcb.h             | 4 ++--
 xen/arch/x86/include/asm/hvm/vcpu.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vioapic.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/viridian.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/vlapic.h               | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h             | 4 ++--
 xen/arch/x86/include/asm/hvm/vmx/vmx.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vvmx.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/vpic.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vpt.h                  | 6 +++---
 xen/arch/x86/include/asm/hypercall.h                | 8 ++++----
 xen/arch/x86/include/asm/i387.h                     | 6 +++---
 xen/arch/x86/include/asm/intel-family.h             | 6 +++---
 xen/arch/x86/include/asm/invpcid.h                  | 6 +++---
 xen/arch/x86/include/asm/io.h                       | 4 ++--
 xen/arch/x86/include/asm/io_apic.h                  | 4 ++--
 xen/arch/x86/include/asm/iocap.h                    | 6 +++---
 xen/arch/x86/include/asm/iommu.h                    | 6 +++---
 xen/arch/x86/include/asm/ioreq.h                    | 6 +++---
 xen/arch/x86/include/asm/irq.h                      | 6 +++---
 xen/arch/x86/include/asm/ldt.h                      | 4 ++--
 xen/arch/x86/include/asm/mach-default/bios_ebda.h   | 6 +++---
 xen/arch/x86/include/asm/mach-default/io_ports.h    | 6 +++---
 xen/arch/x86/include/asm/mach-default/irq_vectors.h | 6 +++---
 xen/arch/x86/include/asm/mach-default/mach_mpspec.h | 6 +++---
 xen/arch/x86/include/asm/mach-generic/mach_apic.h   | 6 +++---
 xen/arch/x86/include/asm/machine_kexec.h            | 6 +++---
 xen/arch/x86/include/asm/mc146818rtc.h              | 6 +++---
 xen/arch/x86/include/asm/mce.h                      | 4 ++--
 xen/arch/x86/include/asm/mem_paging.h               | 6 +++---
 xen/arch/x86/include/asm/mem_sharing.h              | 6 +++---
 xen/arch/x86/include/asm/microcode.h                | 6 +++---
 xen/arch/x86/include/asm/mm.h                       | 6 +++---
 xen/arch/x86/include/asm/mpspec.h                   | 4 ++--
 xen/arch/x86/include/asm/mpspec_def.h               | 4 ++--
 xen/arch/x86/include/asm/msi.h                      | 6 +++---
 xen/arch/x86/include/asm/msr-index.h                | 6 +++---
 xen/arch/x86/include/asm/msr.h                      | 6 +++---
 xen/arch/x86/include/asm/mtrr.h                     | 6 +++---
 xen/arch/x86/include/asm/multicall.h                | 6 +++---
 xen/arch/x86/include/asm/mwait.h                    | 6 +++---
 xen/arch/x86/include/asm/nmi.h                      | 6 +++---
 xen/arch/x86/include/asm/nops.h                     | 6 +++---
 xen/arch/x86/include/asm/nospec.h                   | 6 +++---
 xen/arch/x86/include/asm/numa.h                     | 4 ++--
 xen/arch/x86/include/asm/p2m.h                      | 8 ++++----
 xen/arch/x86/include/asm/page-bits.h                | 6 +++---
 xen/arch/x86/include/asm/page.h                     | 6 +++---
 xen/arch/x86/include/asm/paging.h                   | 4 ++--
 xen/arch/x86/include/asm/pci.h                      | 6 +++---
 xen/arch/x86/include/asm/perfc.h                    | 4 ++--
 xen/arch/x86/include/asm/perfc_defn.h               | 6 +++---
 xen/arch/x86/include/asm/processor.h                | 6 +++---
 xen/arch/x86/include/asm/prot-key.h                 | 6 +++---
 xen/arch/x86/include/asm/psr.h                      | 6 +++---
 xen/arch/x86/include/asm/pt-contig-markers.h        | 6 +++---
 xen/arch/x86/include/asm/pv/domain.h                | 6 +++---
 xen/arch/x86/include/asm/pv/grant_table.h           | 6 +++---
 xen/arch/x86/include/asm/pv/mm.h                    | 6 +++---
 xen/arch/x86/include/asm/pv/shim.h                  | 6 +++---
 xen/arch/x86/include/asm/pv/trace.h                 | 6 +++---
 xen/arch/x86/include/asm/pv/traps.h                 | 6 +++---
 xen/arch/x86/include/asm/random.h                   | 6 +++---
 xen/arch/x86/include/asm/regs.h                     | 6 +++---
 xen/arch/x86/include/asm/setup.h                    | 4 ++--
 xen/arch/x86/include/asm/shadow.h                   | 6 +++---
 xen/arch/x86/include/asm/shared.h                   | 6 +++---
 xen/arch/x86/include/asm/shstk.h                    | 6 +++---
 xen/arch/x86/include/asm/smp.h                      | 4 ++--
 xen/arch/x86/include/asm/softirq.h                  | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl.h                | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl_asm.h            | 6 +++---
 xen/arch/x86/include/asm/spinlock.h                 | 6 +++---
 xen/arch/x86/include/asm/string.h                   | 6 +++---
 xen/arch/x86/include/asm/system.h                   | 4 ++--
 xen/arch/x86/include/asm/time.h                     | 6 +++---
 xen/arch/x86/include/asm/trampoline.h               | 6 +++---
 xen/arch/x86/include/asm/traps.h                    | 6 +++---
 xen/arch/x86/include/asm/types.h                    | 6 +++---
 xen/arch/x86/include/asm/uaccess.h                  | 6 +++---
 xen/arch/x86/include/asm/vpmu.h                     | 6 +++---
 xen/arch/x86/include/asm/x86-defns.h                | 6 +++---
 xen/arch/x86/include/asm/x86-vendors.h              | 6 +++---
 xen/arch/x86/include/asm/x86_64/elf.h               | 6 +++---
 xen/arch/x86/include/asm/x86_64/page.h              | 6 +++---
 xen/arch/x86/include/asm/x86_64/regs.h              | 4 ++--
 xen/arch/x86/include/asm/x86_64/system.h            | 6 +++---
 xen/arch/x86/include/asm/x86_64/uaccess.h           | 6 +++---
 xen/arch/x86/include/asm/x86_emulate.h              | 6 +++---
 xen/arch/x86/include/asm/xenoprof.h                 | 6 +++---
 xen/arch/x86/include/asm/xstate.h                   | 6 +++---
 xen/arch/x86/mm/hap/private.h                       | 6 +++---
 xen/arch/x86/mm/mm-locks.h                          | 6 +++---
 xen/arch/x86/mm/p2m.h                               | 6 +++---
 xen/arch/x86/mm/shadow/private.h                    | 6 +++---
 xen/arch/x86/mm/shadow/types.h                      | 6 +++---
 xen/arch/x86/oprofile/op_counter.h                  | 6 +++---
 xen/arch/x86/oprofile/op_x86_model.h                | 6 +++---
 xen/arch/x86/pv/emulate.h                           | 6 +++---
 xen/arch/x86/pv/mm.h                                | 6 +++---
 xen/arch/x86/x86_emulate/x86_emulate.h              | 6 +++---
 xen/include/public/arch-x86/cpufeatureset.h         | 6 +++---
 xen/include/public/arch-x86/cpuid.h                 | 6 +++---
 xen/include/public/arch-x86/guest-acpi.h            | 6 +++---
 xen/include/public/arch-x86/hvm/save.h              | 6 +++---
 xen/include/public/arch-x86/hvm/start_info.h        | 6 +++---
 xen/include/public/arch-x86/pmu.h                   | 6 +++---
 xen/include/public/arch-x86/xen-mca.h               | 6 +++---
 xen/include/public/arch-x86/xen-x86_32.h            | 6 +++---
 xen/include/public/arch-x86/xen-x86_64.h            | 6 +++---
 xen/include/public/arch-x86/xen.h                   | 6 +++---
 xen/include/xen/lib/x86/cpu-policy.h                | 6 +++---
 xen/lib/x86/private.h                               | 6 +++---
 194 files changed, 554 insertions(+), 554 deletions(-)

diff --git a/xen/arch/x86/boot/video.h b/xen/arch/x86/boot/video.h
index 1203515f9e..cecd8965b7 100644
--- a/xen/arch/x86/boot/video.h
+++ b/xen/arch/x86/boot/video.h
@@ -1,5 +1,5 @@
-#ifndef __BOOT_VIDEO_H__
-#define __BOOT_VIDEO_H__
+#ifndef X86__BOOT__VIDEO_H
+#define X86__BOOT__VIDEO_H
 
 /*
  * Video modes numbered by menu position -- NOT RECOMMENDED because of lack
@@ -71,4 +71,4 @@ struct boot_video_info {
 extern struct boot_video_info boot_vid_info;
 #endif /* __ASSEMBLY__ */
 
-#endif /* __BOOT_VIDEO_H__ */
+#endif /* X86__BOOT__VIDEO_H */
diff --git a/xen/arch/x86/cpu/mcheck/barrier.h b/xen/arch/x86/cpu/mcheck/barrier.h
index 7ec483226f..c4c59ce627 100644
--- a/xen/arch/x86/cpu/mcheck/barrier.h
+++ b/xen/arch/x86/cpu/mcheck/barrier.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_BARRIER_H
-#define _MCHECK_BARRIER_H
+#ifndef X86__CPU__MCHECK__BARRIER_H
+#define X86__CPU__MCHECK__BARRIER_H
 
 #include <asm/atomic.h>
 
@@ -58,4 +58,4 @@ void mce_barrier_exit(struct mce_softirq_barrier *bar, bool do_wait);
 
 void mce_barrier(struct mce_softirq_barrier *bar);
 
-#endif /* _MCHECK_BARRIER_H */
+#endif /* X86__CPU__MCHECK__BARRIER_H */
diff --git a/xen/arch/x86/cpu/mcheck/mcaction.h b/xen/arch/x86/cpu/mcheck/mcaction.h
index 6c79498cd2..e5a7cb9e0d 100644
--- a/xen/arch/x86/cpu/mcheck/mcaction.h
+++ b/xen/arch/x86/cpu/mcheck/mcaction.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_ACTION_H
-#define _MCHECK_ACTION_H
+#ifndef X86__CPU__MCHECK__MCACTION_H
+#define X86__CPU__MCHECK__MCACTION_H
 
 #include <xen/types.h>
 #include "x86_mca.h"
diff --git a/xen/arch/x86/cpu/mcheck/mce.h b/xen/arch/x86/cpu/mcheck/mce.h
index eba4b536c7..f2a423f029 100644
--- a/xen/arch/x86/cpu/mcheck/mce.h
+++ b/xen/arch/x86/cpu/mcheck/mce.h
@@ -1,6 +1,6 @@
-#ifndef _MCE_H
+#ifndef X86__CPU__MCHECK__MCE_H
 
-#define _MCE_H
+#define X86__CPU__MCHECK__MCE_H
 
 #include <xen/init.h>
 #include <xen/percpu.h>
@@ -244,4 +244,4 @@ struct mce {
 
 extern int apei_write_mce(struct mce *m);
 
-#endif /* _MCE_H */
+#endif /* X86__CPU__MCHECK__MCE_H */
diff --git a/xen/arch/x86/cpu/mcheck/mce_amd.h b/xen/arch/x86/cpu/mcheck/mce_amd.h
index c12c25d745..35e3bc6a6d 100644
--- a/xen/arch/x86/cpu/mcheck/mce_amd.h
+++ b/xen/arch/x86/cpu/mcheck/mce_amd.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_AMD_H
-#define _MCHECK_AMD_H
+#ifndef X86__CPU__MCHECK__MCE_AMD_H
+#define X86__CPU__MCHECK__MCE_AMD_H
 
 bool cf_check mc_amd_recoverable_scan(uint64_t status);
 bool cf_check mc_amd_addrcheck(uint64_t status, uint64_t misc, int addrtype);
diff --git a/xen/arch/x86/cpu/mcheck/mctelem.h b/xen/arch/x86/cpu/mcheck/mctelem.h
index f4c5ff848d..a77c9bcffb 100644
--- a/xen/arch/x86/cpu/mcheck/mctelem.h
+++ b/xen/arch/x86/cpu/mcheck/mctelem.h
@@ -8,9 +8,9 @@
  * License.
  */
 
-#ifndef _MCTELEM_H
+#ifndef X86__CPU__MCHECK__MCTELEM_H
 
-#define	_MCTELEM_H
+#define	X86__CPU__MCHECK__MCTELEM_H
 
 #include <xen/init.h>
 #include <xen/smp.h>
diff --git a/xen/arch/x86/cpu/mcheck/util.h b/xen/arch/x86/cpu/mcheck/util.h
index a5468b89fa..b4a71e21d4 100644
--- a/xen/arch/x86/cpu/mcheck/util.h
+++ b/xen/arch/x86/cpu/mcheck/util.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_UTIL_H
-#define _MCHECK_UTIL_H
+#ifndef X86__CPU__MCHECK__UTIL_H
+#define X86__CPU__MCHECK__UTIL_H
 
 void mce_panic_check(void);
 
diff --git a/xen/arch/x86/cpu/mcheck/vmce.h b/xen/arch/x86/cpu/mcheck/vmce.h
index a9a325f776..d934b02c8b 100644
--- a/xen/arch/x86/cpu/mcheck/vmce.h
+++ b/xen/arch/x86/cpu/mcheck/vmce.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_VMCE_H
-#define _MCHECK_VMCE_H
+#ifndef X86__CPU__MCHECK__VMCE_H
+#define X86__CPU__MCHECK__VMCE_H
 
 #include "x86_mca.h"
 
diff --git a/xen/arch/x86/cpu/mcheck/x86_mca.h b/xen/arch/x86/cpu/mcheck/x86_mca.h
index 18116737af..d5514762ed 100644
--- a/xen/arch/x86/cpu/mcheck/x86_mca.h
+++ b/xen/arch/x86/cpu/mcheck/x86_mca.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2007-2012 Advanced Micro Devices, Inc. 
  */
 
-#ifndef X86_MCA_H
-#define X86_MCA_H
+#ifndef X86__CPU__MCHECK__X86_MCA_H
+#define X86__CPU__MCHECK__X86_MCA_H
 
 #include <public/arch-x86/xen-mca.h>
 
@@ -150,4 +150,4 @@ struct mca_error_handler
 /* Global variables */
 extern bool opt_mce;
 
-#endif /* X86_MCA_H */
+#endif /* X86__CPU__MCHECK__X86_MCA_H */
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index c72f060ac3..a3707863b9 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -1,5 +1,5 @@
-#ifndef ASM_X86_MICROCODE_PRIVATE_H
-#define ASM_X86_MICROCODE_PRIVATE_H
+#ifndef X86__CPU__MICROCODE__PRIVATE_H
+#define X86__CPU__MICROCODE__PRIVATE_H
 
 #include <public/platform.h>
 
@@ -83,4 +83,4 @@ void ucode_probe_intel(struct microcode_ops *ops);
 static inline void ucode_probe_intel(struct microcode_ops *ops) {}
 #endif
 
-#endif /* ASM_X86_MICROCODE_PRIVATE_H */
+#endif /* X86__CPU__MICROCODE__PRIVATE_H */
diff --git a/xen/arch/x86/cpu/mtrr/mtrr.h b/xen/arch/x86/cpu/mtrr/mtrr.h
index 632bf658be..c23987cedc 100644
--- a/xen/arch/x86/cpu/mtrr/mtrr.h
+++ b/xen/arch/x86/cpu/mtrr/mtrr.h
@@ -1,8 +1,8 @@
 /*
  * local mtrr defines.
  */
-#ifndef X86_CPU_MTRR_MTRR_H
-#define X86_CPU_MTRR_MTRR_H
+#ifndef X86__CPU__MTRR__MTRR_H
+#define X86__CPU__MTRR__MTRR_H
 
 #define MTRR_CHANGE_MASK_FIXED     0x01
 #define MTRR_CHANGE_MASK_VARIABLE  0x02
@@ -28,4 +28,4 @@ extern unsigned int num_var_ranges;
 
 void mtrr_state_warn(void);
 
-#endif /* X86_CPU_MTRR_MTRR_H */
+#endif /* X86__CPU__MTRR__MTRR_H */
diff --git a/xen/arch/x86/guest/hyperv/private.h b/xen/arch/x86/guest/hyperv/private.h
index 0277e8314c..790872e3c9 100644
--- a/xen/arch/x86/guest/hyperv/private.h
+++ b/xen/arch/x86/guest/hyperv/private.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2020 Microsoft.
  */
 
-#ifndef __XEN_HYPERV_PRIVIATE_H__
-#define __XEN_HYPERV_PRIVIATE_H__
+#ifndef X86__GUEST__HYPERV__PRIVATE_H
+#define X86__GUEST__HYPERV__PRIVATE_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
@@ -29,4 +29,4 @@ int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
 /* Returns number of banks, -ev if error */
 int cpumask_to_vpset(struct hv_vpset *vpset, const cpumask_t *mask);
 
-#endif /* __XEN_HYPERV_PRIVIATE_H__  */
+#endif /* X86__GUEST__HYPERV__PRIVATE_H  */
diff --git a/xen/arch/x86/hvm/svm/nestedhvm.h b/xen/arch/x86/hvm/svm/nestedhvm.h
index 43245e13de..dd3533c74b 100644
--- a/xen/arch/x86/hvm/svm/nestedhvm.h
+++ b/xen/arch/x86/hvm/svm/nestedhvm.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2011, Advanced Micro Devices, Inc
  */
 
-#ifndef __X86_HVM_SVM_NESTEDHVM_PRIV_H__
-#define __X86_HVM_SVM_NESTEDHVM_PRIV_H__
+#ifndef X86__HVM__SVM__NESTEDHVM_H
+#define X86__HVM__SVM__NESTEDHVM_H
 
 #include <xen/mm.h>
 #include <xen/types.h>
@@ -64,7 +64,7 @@ int cf_check nsvm_hap_walk_L1_p2m(
 
 int nestedsvm_vcpu_interrupt(struct vcpu *v, const struct hvm_intack intack);
 
-#endif /* __X86_HVM_SVM_NESTEDHVM_PRIV_H__ */
+#endif /* X86__HVM__SVM__NESTEDHVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/hvm/svm/svm.h b/xen/arch/x86/hvm/svm/svm.h
index 8dbf37ff49..159cc71943 100644
--- a/xen/arch/x86/hvm/svm/svm.h
+++ b/xen/arch/x86/hvm/svm/svm.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __X86_HVM_SVM_SVM_PRIV_H__
-#define __X86_HVM_SVM_SVM_PRIV_H__
+#ifndef X86__HVM__SVM__SVM_H
+#define X86__HVM__SVM__SVM_H
 
 #include <xen/types.h>
 
@@ -86,7 +86,7 @@ unsigned int svm_get_task_switch_insn_len(void);
 #define _NPT_PFEC_in_gpt       33
 #define NPT_PFEC_in_gpt        (1UL<<_NPT_PFEC_in_gpt)
 
-#endif /* __X86_HVM_SVM_SVM_PRIV_H__ */
+#endif /* X86__HVM__SVM__SVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/hvm/viridian/private.h b/xen/arch/x86/hvm/viridian/private.h
index 1bf65c761c..c10544842f 100644
--- a/xen/arch/x86/hvm/viridian/private.h
+++ b/xen/arch/x86/hvm/viridian/private.h
@@ -1,7 +1,7 @@
 /* Copyright (c) 2018 Citrix Systems Inc. */
 
-#ifndef X86_HVM_VIRIDIAN_PRIVATE_H
-#define X86_HVM_VIRIDIAN_PRIVATE_H
+#ifndef X86__HVM__VIRIDIAN__PRIVATE_H
+#define X86__HVM__VIRIDIAN__PRIVATE_H
 
 #include <asm/hvm/save.h>
 #include <asm/hvm/viridian.h>
@@ -57,7 +57,7 @@ void viridian_dump_guest_page(const struct vcpu *v, const char *name,
 void viridian_map_guest_page(struct domain *d, struct viridian_page *vp);
 void viridian_unmap_guest_page(struct viridian_page *vp);
 
-#endif /* X86_HVM_VIRIDIAN_PRIVATE_H */
+#endif /* X86__HVM__VIRIDIAN__PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/acpi.h b/xen/arch/x86/include/asm/acpi.h
index 217819dd61..5784b10b1f 100644
--- a/xen/arch/x86/include/asm/acpi.h
+++ b/xen/arch/x86/include/asm/acpi.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_ACPI_H
-#define _ASM_X86_ACPI_H
+#ifndef ASM__X86__ACPI_H
+#define ASM__X86__ACPI_H
 
 /*
  *  Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
diff --git a/xen/arch/x86/include/asm/alternative-asm.h b/xen/arch/x86/include/asm/alternative-asm.h
index 83e8594f0e..9ad8fb9213 100644
--- a/xen/arch/x86/include/asm/alternative-asm.h
+++ b/xen/arch/x86/include/asm/alternative-asm.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_ALTERNATIVE_ASM_H_
-#define _ASM_X86_ALTERNATIVE_ASM_H_
+#ifndef ASM__X86__ALTERNATIVE_ASM_H
+#define ASM__X86__ALTERNATIVE_ASM_H
 
 #include <asm/nops.h>
 
@@ -115,7 +115,7 @@
 #undef as_true
 
 #endif /* __ASSEMBLY__ */
-#endif /* _ASM_X86_ALTERNATIVE_ASM_H_ */
+#endif /* ASM__X86__ALTERNATIVE_ASM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/alternative.h b/xen/arch/x86/include/asm/alternative.h
index 38472fb58e..d4c0fb014c 100644
--- a/xen/arch/x86/include/asm/alternative.h
+++ b/xen/arch/x86/include/asm/alternative.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ALTERNATIVE_H__
-#define __X86_ALTERNATIVE_H__
+#ifndef ASM__X86__ALTERNATIVE_H
+#define ASM__X86__ALTERNATIVE_H
 
 #ifdef __ASSEMBLY__
 #include <asm/alternative-asm.h>
@@ -423,4 +423,4 @@ extern void alternative_branches(void);
 
 #endif /*  !__ASSEMBLY__  */
 
-#endif /* __X86_ALTERNATIVE_H__ */
+#endif /* ASM__X86__ALTERNATIVE_H */
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index c57a8c5588..f43b075ed0 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2014, Intel Corporation.
  */
 
-#ifndef __ASM_X86_ALTP2M_H
-#define __ASM_X86_ALTP2M_H
+#ifndef ASM__X86__ALTP2M_H
+#define ASM__X86__ALTP2M_H
 
 #ifdef CONFIG_ALTP2M
 
@@ -46,4 +46,4 @@ void altp2m_vcpu_disable_ve(struct vcpu *v);
 
 #endif
 
-#endif /* __ASM_X86_ALTP2M_H */
+#endif /* ASM__X86__ALTP2M_H */
diff --git a/xen/arch/x86/include/asm/amd.h b/xen/arch/x86/include/asm/amd.h
index 9c9599a622..7dbd8fae06 100644
--- a/xen/arch/x86/include/asm/amd.h
+++ b/xen/arch/x86/include/asm/amd.h
@@ -2,8 +2,8 @@
  * amd.h - AMD processor specific definitions
  */
 
-#ifndef __AMD_H__
-#define __AMD_H__
+#ifndef ASM__X86__AMD_H
+#define ASM__X86__AMD_H
 
 #include <asm/cpufeature.h>
 
@@ -174,4 +174,4 @@ bool amd_setup_legacy_ssbd(void);
 void amd_set_legacy_ssbd(bool enable);
 void amd_set_cpuid_user_dis(bool enable);
 
-#endif /* __AMD_H__ */
+#endif /* ASM__X86__AMD_H */
diff --git a/xen/arch/x86/include/asm/apic.h b/xen/arch/x86/include/asm/apic.h
index d8eda6df6d..87970cfce7 100644
--- a/xen/arch/x86/include/asm/apic.h
+++ b/xen/arch/x86/include/asm/apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_APIC_H
-#define __ASM_APIC_H
+#ifndef ASM__X86__APIC_H
+#define ASM__X86__APIC_H
 
 #include <asm/apicdef.h>
 #include <asm/fixmap.h>
@@ -201,4 +201,4 @@ extern unsigned int nmi_watchdog;
 #define NMI_NONE	0
 #define NMI_LOCAL_APIC	1
 
-#endif /* __ASM_APIC_H */
+#endif /* ASM__X86__APIC_H */
diff --git a/xen/arch/x86/include/asm/apicdef.h b/xen/arch/x86/include/asm/apicdef.h
index 49e29ec801..8d9a29d488 100644
--- a/xen/arch/x86/include/asm/apicdef.h
+++ b/xen/arch/x86/include/asm/apicdef.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_APICDEF_H
-#define __ASM_APICDEF_H
+#ifndef ASM__X86__APICDEF_H
+#define ASM__X86__APICDEF_H
 
 /*
  * Constants for various Intel APICs. (local APIC, IOAPIC, etc.)
diff --git a/xen/arch/x86/include/asm/asm_defns.h b/xen/arch/x86/include/asm/asm_defns.h
index 92b4116a15..812bd5c52a 100644
--- a/xen/arch/x86/include/asm/asm_defns.h
+++ b/xen/arch/x86/include/asm/asm_defns.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_ASM_DEFNS_H__
-#define __X86_ASM_DEFNS_H__
+#ifndef ASM__X86__ASM_DEFNS_H
+#define ASM__X86__ASM_DEFNS_H
 
 #ifndef COMPILE_OFFSETS
 /* NB. Auto-generated from arch/.../asm-offsets.c */
@@ -346,4 +346,4 @@ static always_inline void stac(void)
 #define ASM_CONSTANT(name, value)                \
     asm ( ".equ " #name ", %P0; .global " #name  \
           :: "i" ((value)) );
-#endif /* __X86_ASM_DEFNS_H__ */
+#endif /* ASM__X86__ASM_DEFNS_H */
diff --git a/xen/arch/x86/include/asm/atomic.h b/xen/arch/x86/include/asm/atomic.h
index 16bd0ebfd7..f852b154ef 100644
--- a/xen/arch/x86/include/asm/atomic.h
+++ b/xen/arch/x86/include/asm/atomic.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_X86_ATOMIC__
-#define __ARCH_X86_ATOMIC__
+#ifndef ASM__X86__ATOMIC_H
+#define ASM__X86__ATOMIC_H
 
 #include <xen/atomic.h>
 #include <asm/system.h>
@@ -236,4 +236,4 @@ static inline void atomic_and(int m, atomic_t *v)
 
 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
 
-#endif /* __ARCH_X86_ATOMIC__ */
+#endif /* ASM__X86__ATOMIC_H */
diff --git a/xen/arch/x86/include/asm/bitops.h b/xen/arch/x86/include/asm/bitops.h
index 39e37f1cbe..613310c1e2 100644
--- a/xen/arch/x86/include/asm/bitops.h
+++ b/xen/arch/x86/include/asm/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _X86_BITOPS_H
-#define _X86_BITOPS_H
+#ifndef ASM__X86__BITOPS_H
+#define ASM__X86__BITOPS_H
 
 /*
  * Copyright 1992, Linus Torvalds.
@@ -498,4 +498,4 @@ static always_inline unsigned int arch_hweightl(unsigned long x)
 }
 #define arch_hweightl arch_hweightl
 
-#endif /* _X86_BITOPS_H */
+#endif /* ASM__X86__BITOPS_H */
diff --git a/xen/arch/x86/include/asm/bug.h b/xen/arch/x86/include/asm/bug.h
index e748b6c2f2..59a9871cba 100644
--- a/xen/arch/x86/include/asm/bug.h
+++ b/xen/arch/x86/include/asm/bug.h
@@ -1,5 +1,5 @@
-#ifndef __X86_BUG_H__
-#define __X86_BUG_H__
+#ifndef ASM__X86__BUG_H
+#define ASM__X86__BUG_H
 
 /*
  * Please do not include in the header any header that might
@@ -68,4 +68,4 @@
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __X86_BUG_H__ */
+#endif /* ASM__X86__BUG_H */
diff --git a/xen/arch/x86/include/asm/byteorder.h b/xen/arch/x86/include/asm/byteorder.h
index a877c07f67..802d50e3fc 100644
--- a/xen/arch/x86/include/asm/byteorder.h
+++ b/xen/arch/x86/include/asm/byteorder.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_BYTEORDER_H__
-#define __ASM_X86_BYTEORDER_H__
+#ifndef ASM__X86__BYTEORDER_H
+#define ASM__X86__BYTEORDER_H
 
 #include <xen/types.h>
 #include <xen/compiler.h>
@@ -33,4 +33,4 @@ static inline attr_const __u64 ___arch__swab64(__u64 val)
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_X86_BYTEORDER_H__ */
+#endif /* ASM__X86__BYTEORDER_H */
diff --git a/xen/arch/x86/include/asm/bzimage.h b/xen/arch/x86/include/asm/bzimage.h
index 7ed69d3910..53c86f0d5b 100644
--- a/xen/arch/x86/include/asm/bzimage.h
+++ b/xen/arch/x86/include/asm/bzimage.h
@@ -1,5 +1,5 @@
-#ifndef __X86_BZIMAGE_H__
-#define __X86_BZIMAGE_H__
+#ifndef ASM__X86__BZIMAGE_H
+#define ASM__X86__BZIMAGE_H
 
 #include <xen/init.h>
 
@@ -8,4 +8,4 @@ unsigned long bzimage_headroom(void *image_start, unsigned long image_length);
 int bzimage_parse(void *image_base, void **image_start,
                   unsigned long *image_len);
 
-#endif /* __X86_BZIMAGE_H__ */
+#endif /* ASM__X86__BZIMAGE_H */
diff --git a/xen/arch/x86/include/asm/cache.h b/xen/arch/x86/include/asm/cache.h
index f15d10dc7f..8683cecee2 100644
--- a/xen/arch/x86/include/asm/cache.h
+++ b/xen/arch/x86/include/asm/cache.h
@@ -1,8 +1,8 @@
 /*
  * include/asm-x86/cache.h
  */
-#ifndef __ARCH_X86_CACHE_H
-#define __ARCH_X86_CACHE_H
+#ifndef ASM__X86__CACHE_H
+#define ASM__X86__CACHE_H
 
 
 /* L1 cache line size */
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index f8a5a4913b..9d931f4ace 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __X86_CONFIG_H__
-#define __X86_CONFIG_H__
+#ifndef ASM__X86__CONFIG_H
+#define ASM__X86__CONFIG_H
 
 #define LONG_BYTEORDER 3
 #define CONFIG_PAGING_LEVELS 4
@@ -292,4 +292,4 @@ extern unsigned long xen_phys_start;
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
 
-#endif /* __X86_CONFIG_H__ */
+#endif /* ASM__X86__CONFIG_H */
diff --git a/xen/arch/x86/include/asm/cpu-policy.h b/xen/arch/x86/include/asm/cpu-policy.h
index 99d5a8e67e..c69df4526f 100644
--- a/xen/arch/x86/include/asm/cpu-policy.h
+++ b/xen/arch/x86/include/asm/cpu-policy.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef X86_CPU_POLICY_H
-#define X86_CPU_POLICY_H
+#ifndef ASM__X86__CPU_POLICY_H
+#define ASM__X86__CPU_POLICY_H
 
 struct cpu_policy;
 struct domain;
@@ -30,4 +30,4 @@ void recalculate_cpuid_policy(struct domain *d);
  */
 void calculate_raw_cpu_policy(void);
 
-#endif /* X86_CPU_POLICY_H */
+#endif /* ASM__X86__CPU_POLICY_H */
diff --git a/xen/arch/x86/include/asm/cpufeature.h b/xen/arch/x86/include/asm/cpufeature.h
index 3a06b6f297..478b9cd2bd 100644
--- a/xen/arch/x86/include/asm/cpufeature.h
+++ b/xen/arch/x86/include/asm/cpufeature.h
@@ -3,8 +3,8 @@
  *
  * Defines x86 CPU feature bits
  */
-#ifndef __ASM_I386_CPUFEATURE_H
-#define __ASM_I386_CPUFEATURE_H
+#ifndef ASM__X86__CPUFEATURE_H
+#define ASM__X86__CPUFEATURE_H
 
 #include <xen/cache.h>
 #include <xen/const.h>
@@ -281,7 +281,7 @@ struct cpuid4_info {
 int cpuid4_cache_lookup(int index, struct cpuid4_info *this_leaf);
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ASM_I386_CPUFEATURE_H */
+#endif /* ASM__X86__CPUFEATURE_H */
 
 /* 
  * Local Variables:
diff --git a/xen/arch/x86/include/asm/cpufeatureset.h b/xen/arch/x86/include/asm/cpufeatureset.h
index a9c51bc514..037b4b6997 100644
--- a/xen/arch/x86/include/asm/cpufeatureset.h
+++ b/xen/arch/x86/include/asm/cpufeatureset.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_CPUFEATURESET_H__
-#define __XEN_X86_CPUFEATURESET_H__
+#ifndef ASM__X86__CPUFEATURESET_H
+#define ASM__X86__CPUFEATURESET_H
 
 #ifndef __ASSEMBLY__
 
@@ -27,7 +27,7 @@ enum {
 
 #undef XEN_CPUFEATURE
 
-#endif /* !__XEN_X86_CPUFEATURESET_H__ */
+#endif /* !ASM__X86__CPUFEATURESET_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/cpuid.h b/xen/arch/x86/include/asm/cpuid.h
index b32ba0bbfe..6cfebbb4eb 100644
--- a/xen/arch/x86/include/asm/cpuid.h
+++ b/xen/arch/x86/include/asm/cpuid.h
@@ -1,5 +1,5 @@
-#ifndef __X86_CPUID_H__
-#define __X86_CPUID_H__
+#ifndef ASM__X86__CPUID_H
+#define ASM__X86__CPUID_H
 
 #include <asm/cpufeatureset.h>
 
@@ -51,7 +51,7 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
                  uint32_t subleaf, struct cpuid_leaf *res);
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_CPUID_H__ */
+#endif /* !ASM__X86__CPUID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/cpuidle.h b/xen/arch/x86/include/asm/cpuidle.h
index 3a6b73142b..bfa11d1451 100644
--- a/xen/arch/x86/include/asm/cpuidle.h
+++ b/xen/arch/x86/include/asm/cpuidle.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_CPUIDLE_H__
-#define __ASM_X86_CPUIDLE_H__
+#ifndef ASM__X86__CPUIDLE_H
+#define ASM__X86__CPUIDLE_H
 
 #include <xen/cpuidle.h>
 #include <xen/notifier.h>
diff --git a/xen/arch/x86/include/asm/current.h b/xen/arch/x86/include/asm/current.h
index bcec328c98..1aebbf991b 100644
--- a/xen/arch/x86/include/asm/current.h
+++ b/xen/arch/x86/include/asm/current.h
@@ -4,8 +4,8 @@
  * Information structure that lives at the bottom of the per-cpu Xen stack.
  */
 
-#ifndef __X86_CURRENT_H__
-#define __X86_CURRENT_H__
+#ifndef ASM__X86__CURRENT_H
+#define ASM__X86__CURRENT_H
 
 #include <xen/percpu.h>
 #include <xen/page-size.h>
@@ -211,4 +211,4 @@ unsigned long get_stack_dump_bottom (unsigned long sp);
  */
 DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
 
-#endif /* __X86_CURRENT_H__ */
+#endif /* ASM__X86__CURRENT_H */
diff --git a/xen/arch/x86/include/asm/debugreg.h b/xen/arch/x86/include/asm/debugreg.h
index 23aa592e40..05f1925f9b 100644
--- a/xen/arch/x86/include/asm/debugreg.h
+++ b/xen/arch/x86/include/asm/debugreg.h
@@ -1,5 +1,5 @@
-#ifndef _X86_DEBUGREG_H
-#define _X86_DEBUGREG_H
+#ifndef ASM__X86__DEBUGREG_H
+#define ASM__X86__DEBUGREG_H
 
 #include <asm/x86-defns.h>
 
@@ -140,4 +140,4 @@ static inline unsigned int x86_bp_width(unsigned int dr7, unsigned int bp)
     return 1U << raw;
 }
 
-#endif /* _X86_DEBUGREG_H */
+#endif /* ASM__X86__DEBUGREG_H */
diff --git a/xen/arch/x86/include/asm/desc.h b/xen/arch/x86/include/asm/desc.h
index a1e0807d97..1598205ab0 100644
--- a/xen/arch/x86/include/asm/desc.h
+++ b/xen/arch/x86/include/asm/desc.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_DESC_H
-#define __ARCH_DESC_H
+#ifndef ASM__X86__DESC_H
+#define ASM__X86__DESC_H
 
 #include <asm/page.h>
 
@@ -240,4 +240,4 @@ static inline void ltr(unsigned int sel)
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ARCH_DESC_H */
+#endif /* ASM__X86__DESC_H */
diff --git a/xen/arch/x86/include/asm/device.h b/xen/arch/x86/include/asm/device.h
index f2acc7effd..32a71e35b0 100644
--- a/xen/arch/x86/include/asm/device.h
+++ b/xen/arch/x86/include/asm/device.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_DEVICE_H
-#define __ASM_X86_DEVICE_H
+#ifndef ASM__X86__DEVICE_H
+#define ASM__X86__DEVICE_H
 
 #include <xen/pci.h>
 
@@ -13,7 +13,7 @@ typedef struct pci_dev device_t;
 #define dev_is_pci(dev) ((void)(dev), 1)
 #define pci_to_dev(pci) (pci)
 
-#endif /* __ASM_X86_DEVICE_H */
+#endif /* ASM__X86__DEVICE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 107c1ff983..8fafa7e3a4 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -1,5 +1,5 @@
-#ifndef _DOM0_BUILD_H_
-#define _DOM0_BUILD_H_
+#ifndef ASM__X86__DOM0_BUILD_H
+#define ASM__X86__DOM0_BUILD_H
 
 #include <xen/libelf.h>
 #include <xen/sched.h>
@@ -29,7 +29,7 @@ unsigned long dom0_paging_pages(const struct domain *d,
 void dom0_update_physmap(bool compat, unsigned long pfn,
                          unsigned long mfn, unsigned long vphysmap_s);
 
-#endif	/* _DOM0_BUILD_H_ */
+#endif	/* ASM__X86__DOM0_BUILD_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index bdcdb8de09..188b063788 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_H__
-#define __ASM_DOMAIN_H__
+#ifndef ASM__X86__DOMAIN_H
+#define ASM__X86__DOMAIN_H
 
 #include <xen/mm.h>
 #include <xen/radix-tree.h>
@@ -796,7 +796,7 @@ unsigned int domain_max_paddr_bits(const struct domain *d);
 #define arch_init_idle_domain arch_init_idle_domain
 void arch_init_idle_domain(struct domain *d);
 
-#endif /* __ASM_DOMAIN_H__ */
+#endif /* ASM__X86__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/e820.h b/xen/arch/x86/include/asm/e820.h
index af90085d65..bda19aab2c 100644
--- a/xen/arch/x86/include/asm/e820.h
+++ b/xen/arch/x86/include/asm/e820.h
@@ -1,5 +1,5 @@
-#ifndef __E820_HEADER
-#define __E820_HEADER
+#ifndef ASM__X86__E820_H
+#define ASM__X86__E820_H
 
 /*
  * PC BIOS standard E820 types and structure.
@@ -40,4 +40,4 @@ extern struct e820map e820_raw;
 extern struct e820map bios_e820map[];
 extern unsigned int bios_e820nr;
 
-#endif /*__E820_HEADER*/
+#endif /*ASM__X86__E820_H*/
diff --git a/xen/arch/x86/include/asm/edd.h b/xen/arch/x86/include/asm/edd.h
index afaa23732a..f3cda0c1d7 100644
--- a/xen/arch/x86/include/asm/edd.h
+++ b/xen/arch/x86/include/asm/edd.h
@@ -20,8 +20,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __XEN_EDD_H__
-#define __XEN_EDD_H__
+#ifndef ASM__X86__EDD_H
+#define ASM__X86__EDD_H
 
 #ifndef __ASSEMBLY__
 
@@ -161,4 +161,4 @@ extern u8 boot_edd_info_nr;
 #define EDDEXTSIZE              8
 #define EDDPARMSIZE             74
 
-#endif /* __XEN_EDD_H__ */
+#endif /* ASM__X86__EDD_H */
diff --git a/xen/arch/x86/include/asm/elf.h b/xen/arch/x86/include/asm/elf.h
index 1d7ea96e22..9ce6f69830 100644
--- a/xen/arch/x86/include/asm/elf.h
+++ b/xen/arch/x86/include/asm/elf.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ELF_H__
-#define __X86_ELF_H__
+#ifndef ASM__X86__ELF_H
+#define ASM__X86__ELF_H
 
 typedef struct {
     unsigned long cr0, cr2, cr3, cr4;
@@ -7,7 +7,7 @@ typedef struct {
 
 #include <asm/x86_64/elf.h>
 
-#endif /* __X86_ELF_H__ */
+#endif /* ASM__X86__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/endbr.h b/xen/arch/x86/include/asm/endbr.h
index ba3bae7147..f6b8b9435e 100644
--- a/xen/arch/x86/include/asm/endbr.h
+++ b/xen/arch/x86/include/asm/endbr.h
@@ -2,8 +2,8 @@
 /******************************************************************************
  * Copyright (c) 2021-2022 Citrix Systems Ltd.
  */
-#ifndef XEN_ASM_ENDBR_H
-#define XEN_ASM_ENDBR_H
+#ifndef ASM__X86__ENDBR_H
+#define ASM__X86__ENDBR_H
 
 #include <xen/types.h>
 
@@ -66,4 +66,4 @@ static inline void place_endbr64_poison(void *ptr)
     *(uint32_t *)ptr = gen_endbr64_poison();
 }
 
-#endif /* XEN_ASM_ENDBR_H */
+#endif /* ASM__X86__ENDBR_H */
diff --git a/xen/arch/x86/include/asm/event.h b/xen/arch/x86/include/asm/event.h
index 5e09ede6d7..eb91d3345a 100644
--- a/xen/arch/x86/include/asm/event.h
+++ b/xen/arch/x86/include/asm/event.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_EVENT_H__
-#define __ASM_EVENT_H__
+#ifndef ASM__X86__EVENT_H
+#define ASM__X86__EVENT_H
 
 #include <xen/shared.h>
 
diff --git a/xen/arch/x86/include/asm/fixmap.h b/xen/arch/x86/include/asm/fixmap.h
index 516ec3fa6c..53eb149d1a 100644
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -9,8 +9,8 @@
  * Modifications for Xen are copyright (c) 2002-2004, K A Fraser
  */
 
-#ifndef _ASM_FIXMAP_H
-#define _ASM_FIXMAP_H
+#ifndef ASM__X86__FIXMAP_H
+#define ASM__X86__FIXMAP_H
 
 #include <xen/page-size.h>
 
diff --git a/xen/arch/x86/include/asm/flushtlb.h b/xen/arch/x86/include/asm/flushtlb.h
index bb0ad58db4..7f60cca86c 100644
--- a/xen/arch/x86/include/asm/flushtlb.h
+++ b/xen/arch/x86/include/asm/flushtlb.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2003-2004, K A Fraser
  */
 
-#ifndef __FLUSHTLB_H__
-#define __FLUSHTLB_H__
+#ifndef ASM__X86__FLUSHTLB_H
+#define ASM__X86__FLUSHTLB_H
 
 #include <xen/mm.h>
 #include <xen/percpu.h>
@@ -201,4 +201,4 @@ static inline int clean_dcache_va_range(const void *p, unsigned long size)
 unsigned int guest_flush_tlb_flags(const struct domain *d);
 void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask);
 
-#endif /* __FLUSHTLB_H__ */
+#endif /* ASM__X86__FLUSHTLB_H */
diff --git a/xen/arch/x86/include/asm/gdbsx.h b/xen/arch/x86/include/asm/gdbsx.h
index e906be9ea3..d22e5ad361 100644
--- a/xen/arch/x86/include/asm/gdbsx.h
+++ b/xen/arch/x86/include/asm/gdbsx.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __X86_GDBX_H__
-#define __X86_GDBX_H__
+#ifndef ASM__X86__GDBSX_H
+#define ASM__X86__GDBSX_H
 
 #include <xen/stdbool.h>
 
@@ -26,4 +26,4 @@ static inline int gdbsx_domctl(
 }
 
 #endif /* CONFIG_GDBSX */
-#endif /* __X86_GDBX_H__ */
+#endif /* ASM__X86__GDBSX_H */
diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index a694371c6d..9e6b7c7530 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_GENAPIC_H
-#define _ASM_GENAPIC_H 1
+#ifndef ASM__X86__GENAPIC_H
+#define ASM__X86__GENAPIC_H 1
 
 #include <xen/cpumask.h>
 
diff --git a/xen/arch/x86/include/asm/grant_table.h b/xen/arch/x86/include/asm/grant_table.h
index 5c23cec90c..67a4f84cbb 100644
--- a/xen/arch/x86/include/asm/grant_table.h
+++ b/xen/arch/x86/include/asm/grant_table.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004-2005 K A Fraser
  */
 
-#ifndef __ASM_GRANT_TABLE_H__
-#define __ASM_GRANT_TABLE_H__
+#ifndef ASM__X86__GRANT_TABLE_H
+#define ASM__X86__GRANT_TABLE_H
 
 #include <asm/paging.h>
 
@@ -72,4 +72,4 @@ static inline void gnttab_clear_flags(struct domain *d,
 #define gnttab_need_iommu_mapping(d)                \
     (!paging_mode_translate(d) && need_iommu_pt_sync(d))
 
-#endif /* __ASM_GRANT_TABLE_H__ */
+#endif /* ASM__X86__GRANT_TABLE_H */
diff --git a/xen/arch/x86/include/asm/guest.h b/xen/arch/x86/include/asm/guest.h
index c3124c7b8d..826000261c 100644
--- a/xen/arch/x86/include/asm/guest.h
+++ b/xen/arch/x86/include/asm/guest.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_GUEST_H__
-#define __X86_GUEST_H__
+#ifndef ASM__X86__GUEST_H
+#define ASM__X86__GUEST_H
 
 #include <asm/guest/hyperv.h>
 #include <asm/guest/hypervisor.h>
@@ -15,7 +15,7 @@
 #include <asm/guest/xen-hcall.h>
 #include <asm/pv/shim.h>
 
-#endif /* __X86_GUEST_H__ */
+#endif /* ASM__X86__GUEST_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hyperv-hcall.h b/xen/arch/x86/include/asm/guest/hyperv-hcall.h
index b76dbf9ccc..2fdf6d5143 100644
--- a/xen/arch/x86/include/asm/guest/hyperv-hcall.h
+++ b/xen/arch/x86/include/asm/guest/hyperv-hcall.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_HYPERV_HCALL_H__
-#define __X86_HYPERV_HCALL_H__
+#ifndef ASM__X86__GUEST__HYPERV_HCALL_H
+#define ASM__X86__GUEST__HYPERV_HCALL_H
 
 #include <xen/lib.h>
 #include <xen/page-size.h>
@@ -73,7 +73,7 @@ static inline uint64_t hv_do_rep_hypercall(uint16_t code, uint16_t rep_count,
     return status;
 }
 
-#endif /* __X86_HYPERV_HCALL_H__ */
+#endif /* ASM__X86__GUEST__HYPERV_HCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
index a6915ad731..ba7ca0e450 100644
--- a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
+++ b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
@@ -6,8 +6,8 @@
  * https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs
  */
 
-#ifndef _ASM_X86_HYPERV_TLFS_H
-#define _ASM_X86_HYPERV_TLFS_H
+#ifndef ASM__X86__GUEST__HYPERV_TLFS_H
+#define ASM__X86__GUEST__HYPERV_TLFS_H
 
 #include <xen/bitops.h>
 #include <xen/page-size.h>
diff --git a/xen/arch/x86/include/asm/guest/hyperv.h b/xen/arch/x86/include/asm/guest/hyperv.h
index c05efdce71..fe0c2c485c 100644
--- a/xen/arch/x86/include/asm/guest/hyperv.h
+++ b/xen/arch/x86/include/asm/guest/hyperv.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_GUEST_HYPERV_H__
-#define __X86_GUEST_HYPERV_H__
+#ifndef ASM__X86__GUEST__HYPERV_H
+#define ASM__X86__GUEST__HYPERV_H
 
 #include <xen/types.h>
 
@@ -62,7 +62,7 @@ const struct hypervisor_ops *hyperv_probe(void);
 static inline const struct hypervisor_ops *hyperv_probe(void) { return NULL; }
 
 #endif /* CONFIG_HYPERV_GUEST */
-#endif /* __X86_GUEST_HYPERV_H__ */
+#endif /* ASM__X86__GUEST__HYPERV_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hypervisor.h b/xen/arch/x86/include/asm/guest/hypervisor.h
index c8f18a035e..5ab900e14c 100644
--- a/xen/arch/x86/include/asm/guest/hypervisor.h
+++ b/xen/arch/x86/include/asm/guest/hypervisor.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_HYPERVISOR_H__
-#define __X86_HYPERVISOR_H__
+#ifndef ASM__X86__GUEST__HYPERVISOR_H
+#define ASM__X86__GUEST__HYPERVISOR_H
 
 #include <xen/cpumask.h>
 
@@ -61,7 +61,7 @@ static inline int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
 
 #endif  /* CONFIG_GUEST */
 
-#endif /* __X86_HYPERVISOR_H__ */
+#endif /* ASM__X86__GUEST__HYPERVISOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/pvh-boot.h b/xen/arch/x86/include/asm/guest/pvh-boot.h
index 247ba6899e..77f1fb7190 100644
--- a/xen/arch/x86/include/asm/guest/pvh-boot.h
+++ b/xen/arch/x86/include/asm/guest/pvh-boot.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_PVH_BOOT_H__
-#define __X86_PVH_BOOT_H__
+#ifndef ASM__X86__GUEST__PVH_BOOT_H
+#define ASM__X86__GUEST__PVH_BOOT_H
 
 #include <xen/multiboot.h>
 
@@ -34,7 +34,7 @@ static inline void pvh_print_info(void)
 }
 
 #endif /* CONFIG_PVH_GUEST */
-#endif /* __X86_PVH_BOOT_H__ */
+#endif /* ASM__X86__GUEST__PVH_BOOT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/xen-hcall.h b/xen/arch/x86/include/asm/guest/xen-hcall.h
index 665b472d05..c078ade2a7 100644
--- a/xen/arch/x86/include/asm/guest/xen-hcall.h
+++ b/xen/arch/x86/include/asm/guest/xen-hcall.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_XEN_HYPERCALL_H__
-#define __X86_XEN_HYPERCALL_H__
+#ifndef ASM__X86__GUEST__XEN_HCALL_H
+#define ASM__X86__GUEST__XEN_HCALL_H
 
 #ifdef CONFIG_XEN_GUEST
 
@@ -188,7 +188,7 @@ static inline long xen_hypercall_shutdown(unsigned int reason)
 }
 
 #endif /* CONFIG_XEN_GUEST */
-#endif /* __X86_XEN_HYPERCALL_H__ */
+#endif /* ASM__X86__GUEST__XEN_HCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/xen.h b/xen/arch/x86/include/asm/guest/xen.h
index c330c4d400..1e46fbf0d3 100644
--- a/xen/arch/x86/include/asm/guest/xen.h
+++ b/xen/arch/x86/include/asm/guest/xen.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_GUEST_XEN_H__
-#define __X86_GUEST_XEN_H__
+#ifndef ASM__X86__GUEST__XEN_H
+#define ASM__X86__GUEST__XEN_H
 
 #include <xen/types.h>
 
@@ -37,7 +37,7 @@ DECLARE_PER_CPU(struct vcpu_info *, vcpu_info);
 static inline const struct hypervisor_ops *xg_probe(void) { return NULL; }
 
 #endif /* CONFIG_XEN_GUEST */
-#endif /* __X86_GUEST_XEN_H__ */
+#endif /* ASM__X86__GUEST__XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest_access.h b/xen/arch/x86/include/asm/guest_access.h
index 69716c8b41..e42d2c59ba 100644
--- a/xen/arch/x86/include/asm/guest_access.h
+++ b/xen/arch/x86/include/asm/guest_access.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2006, K A Fraser
  */
 
-#ifndef __ASM_X86_GUEST_ACCESS_H__
-#define __ASM_X86_GUEST_ACCESS_H__
+#ifndef ASM__X86__GUEST_ACCESS_H
+#define ASM__X86__GUEST_ACCESS_H
 
 #include <asm/uaccess.h>
 #include <asm/paging.h>
@@ -47,7 +47,7 @@
                      (last)-(first)+1,                  \
                      sizeof(*(hnd).p)))
 
-#endif /* __ASM_X86_GUEST_ACCESS_H__ */
+#endif /* ASM__X86__GUEST_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest_atomics.h b/xen/arch/x86/include/asm/guest_atomics.h
index c2dec0d650..99f861fc39 100644
--- a/xen/arch/x86/include/asm/guest_atomics.h
+++ b/xen/arch/x86/include/asm/guest_atomics.h
@@ -1,5 +1,5 @@
-#ifndef _X86_GUEST_ATOMICS_H
-#define _X86_GUEST_ATOMICS_H
+#ifndef ASM__X86__GUEST_ATOMICS_H
+#define ASM__X86__GUEST_ATOMICS_H
 
 #include <xen/bitops.h>
 
@@ -22,7 +22,7 @@
 #define guest_cmpxchg(d, ptr, o, n) ((void)(d), cmpxchg(ptr, o, n))
 #define guest_cmpxchg64 guest_cmpxchg
 
-#endif /* _X86_GUEST_ATOMICS_H */
+#endif /* ASM__X86__GUEST_ATOMICS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/guest_pt.h b/xen/arch/x86/include/asm/guest_pt.h
index 21473f9bbc..943504dc76 100644
--- a/xen/arch/x86/include/asm/guest_pt.h
+++ b/xen/arch/x86/include/asm/guest_pt.h
@@ -13,8 +13,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_ASM_GUEST_PT_H
-#define _XEN_ASM_GUEST_PT_H
+#ifndef ASM__X86__GUEST_PT_H
+#define ASM__X86__GUEST_PT_H
 
 #if !defined(GUEST_PAGING_LEVELS)
 #error GUEST_PAGING_LEVELS not defined
@@ -452,4 +452,4 @@ static inline void print_gw(const walk_t *gw)
         );
 }
 
-#endif /* _XEN_ASM_GUEST_PT_H */
+#endif /* ASM__X86__GUEST_PT_H */
diff --git a/xen/arch/x86/include/asm/hap.h b/xen/arch/x86/include/asm/hap.h
index f01ce73fb4..cf1a7584f3 100644
--- a/xen/arch/x86/include/asm/hap.h
+++ b/xen/arch/x86/include/asm/hap.h
@@ -10,8 +10,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_HAP_H
-#define _XEN_HAP_H
+#ifndef ASM__X86__HAP_H
+#define ASM__X86__HAP_H
 
 #define HAP_PRINTK(_f, _a...)                                         \
     debugtrace_printk("hap: %s(): " _f, __func__, ##_a)
diff --git a/xen/arch/x86/include/asm/hardirq.h b/xen/arch/x86/include/asm/hardirq.h
index 342361cb6f..9385d220fc 100644
--- a/xen/arch/x86/include/asm/hardirq.h
+++ b/xen/arch/x86/include/asm/hardirq.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
+#ifndef ASM__X86__HARDIRQ_H
+#define ASM__X86__HARDIRQ_H
 
 #include <xen/cache.h>
 #include <xen/types.h>
@@ -34,4 +34,4 @@ void ack_bad_irq(unsigned int irq);
 extern void apic_intr_init(void);
 extern void smp_intr_init(void);
 
-#endif /* __ASM_HARDIRQ_H */
+#endif /* ASM__X86__HARDIRQ_H */
diff --git a/xen/arch/x86/include/asm/hpet.h b/xen/arch/x86/include/asm/hpet.h
index c402c63168..66c5867b96 100644
--- a/xen/arch/x86/include/asm/hpet.h
+++ b/xen/arch/x86/include/asm/hpet.h
@@ -1,5 +1,5 @@
-#ifndef __X86_HPET_H__
-#define __X86_HPET_H__
+#ifndef ASM__X86__HPET_H
+#define ASM__X86__HPET_H
 
 /*
  * Documentation on HPET can be found at:
@@ -98,4 +98,4 @@ void hpet_disable_legacy_broadcast(void);
 
 extern void (*pv_rtc_handler)(uint8_t reg, uint8_t value);
 
-#endif /* __X86_HPET_H__ */
+#endif /* ASM__X86__HPET_H */
diff --git a/xen/arch/x86/include/asm/hvm/asid.h b/xen/arch/x86/include/asm/hvm/asid.h
index 17c58353d1..dff25733ed 100644
--- a/xen/arch/x86/include/asm/hvm/asid.h
+++ b/xen/arch/x86/include/asm/hvm/asid.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2009, Citrix Systems, Inc.
  */
 
-#ifndef __ASM_X86_HVM_ASID_H__
-#define __ASM_X86_HVM_ASID_H__
+#ifndef ASM__X86__HVM__ASID_H
+#define ASM__X86__HVM__ASID_H
 
 
 struct vcpu;
@@ -28,7 +28,7 @@ void hvm_asid_flush_core(void);
  * boolean indicating whether all ASIDs must be flushed. */
 bool hvm_asid_handle_vmenter(struct hvm_vcpu_asid *asid);
 
-#endif /* __ASM_X86_HVM_ASID_H__ */
+#endif /* ASM__X86__HVM__ASID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/cacheattr.h b/xen/arch/x86/include/asm/hvm/cacheattr.h
index 79e721d074..fe7bb8d54f 100644
--- a/xen/arch/x86/include/asm/hvm/cacheattr.h
+++ b/xen/arch/x86/include/asm/hvm/cacheattr.h
@@ -1,5 +1,5 @@
-#ifndef __HVM_CACHEATTR_H__
-#define __HVM_CACHEATTR_H__
+#ifndef ASM__X86__HVM__CACHEATTR_H
+#define ASM__X86__HVM__CACHEATTR_H
 
 #include <xen/mm.h>
 
@@ -20,4 +20,4 @@ int hvm_get_mem_pinned_cacheattr(struct domain *d, gfn_t gfn,
 int hvm_set_mem_pinned_cacheattr(struct domain *d, uint64_t gfn_start,
                                  uint64_t gfn_end, uint32_t type);
 
-#endif /* __HVM_CACHEATTR_H__ */
+#endif /* ASM__X86__HVM__CACHEATTR_H */
diff --git a/xen/arch/x86/include/asm/hvm/domain.h b/xen/arch/x86/include/asm/hvm/domain.h
index 333501d5f2..9d4137c43a 100644
--- a/xen/arch/x86/include/asm/hvm/domain.h
+++ b/xen/arch/x86/include/asm/hvm/domain.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation
  */
 
-#ifndef __ASM_X86_HVM_DOMAIN_H__
-#define __ASM_X86_HVM_DOMAIN_H__
+#ifndef ASM__X86__HVM__DOMAIN_H
+#define ASM__X86__HVM__DOMAIN_H
 
 #include <xen/list.h>
 #include <xen/mm.h>
@@ -151,7 +151,7 @@ struct hvm_domain {
 #endif
 };
 
-#endif /* __ASM_X86_HVM_DOMAIN_H__ */
+#endif /* ASM__X86__HVM__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/emulate.h b/xen/arch/x86/include/asm/hvm/emulate.h
index 29d679442e..9e382803ef 100644
--- a/xen/arch/x86/include/asm/hvm/emulate.h
+++ b/xen/arch/x86/include/asm/hvm/emulate.h
@@ -9,8 +9,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __ASM_X86_HVM_EMULATE_H__
-#define __ASM_X86_HVM_EMULATE_H__
+#ifndef ASM__X86__HVM__EMULATE_H
+#define ASM__X86__HVM__EMULATE_H
 
 #include <xen/err.h>
 #include <xen/mm.h>
@@ -143,7 +143,7 @@ static inline void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
 void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
                               struct hvm_emulate_ctxt *hvmemul_ctxt, int rc);
 
-#endif /* __ASM_X86_HVM_EMULATE_H__ */
+#endif /* ASM__X86__HVM__EMULATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/grant_table.h b/xen/arch/x86/include/asm/hvm/grant_table.h
index 01e23f79b8..ec6c6251d3 100644
--- a/xen/arch/x86/include/asm/hvm/grant_table.h
+++ b/xen/arch/x86/include/asm/hvm/grant_table.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_HVM_GRANT_TABLE_H__
-#define __X86_HVM_GRANT_TABLE_H__
+#ifndef ASM__X86__HVM__GRANT_TABLE_H
+#define ASM__X86__HVM__GRANT_TABLE_H
 
 #include <xen/mm-frame.h>
 
@@ -39,7 +39,7 @@ static inline int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
 
 #endif
 
-#endif /* __X86_HVM_GRANT_TABLE_H__ */
+#endif /* ASM__X86__HVM__GRANT_TABLE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/guest_access.h b/xen/arch/x86/include/asm/hvm/guest_access.h
index edacba75db..007d1ff70b 100644
--- a/xen/arch/x86/include/asm/hvm/guest_access.h
+++ b/xen/arch/x86/include/asm/hvm/guest_access.h
@@ -1,8 +1,8 @@
-#ifndef __ASM_X86_HVM_GUEST_ACCESS_H__
-#define __ASM_X86_HVM_GUEST_ACCESS_H__
+#ifndef ASM__X86__HVM__GUEST_ACCESS_H
+#define ASM__X86__HVM__GUEST_ACCESS_H
 
 unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len);
 unsigned int clear_user_hvm(void *to, unsigned int len);
 unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len);
 
-#endif /* __ASM_X86_HVM_GUEST_ACCESS_H__ */
+#endif /* ASM__X86__HVM__GUEST_ACCESS_H */
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index dd7d4872b5..1a320fe5c8 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_HVM_H__
-#define __ASM_X86_HVM_HVM_H__
+#ifndef ASM__X86__HVM__HVM_H
+#define ASM__X86__HVM__HVM_H
 
 #include <xen/mm.h>
 
@@ -967,7 +967,7 @@ static inline void hvm_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 
 #endif  /* CONFIG_HVM */
 
-#endif /* __ASM_X86_HVM_HVM_H__ */
+#endif /* ASM__X86__HVM__HVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h
index f2b8431fac..f7e4550f0a 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __ASM_X86_HVM_IO_H__
-#define __ASM_X86_HVM_IO_H__
+#ifndef ASM__X86__HVM__IO_H
+#define ASM__X86__HVM__IO_H
 
 #include <xen/pci.h>
 #include <public/hvm/ioreq.h>
@@ -135,7 +135,7 @@ void destroy_vpci_mmcfg(struct domain *d);
 /* Remove MMCFG regions from a given rangeset. */
 int vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r);
 
-#endif /* __ASM_X86_HVM_IO_H__ */
+#endif /* ASM__X86__HVM__IO_H */
 
 
 /*
diff --git a/xen/arch/x86/include/asm/hvm/ioreq.h b/xen/arch/x86/include/asm/hvm/ioreq.h
index 84be14fd08..2e7254d640 100644
--- a/xen/arch/x86/include/asm/hvm/ioreq.h
+++ b/xen/arch/x86/include/asm/hvm/ioreq.h
@@ -5,15 +5,15 @@
  * Copyright (c) 2016 Citrix Systems Inc.
  */
 
-#ifndef __ASM_X86_HVM_IOREQ_H__
-#define __ASM_X86_HVM_IOREQ_H__
+#ifndef ASM__X86__HVM__IOREQ_H
+#define ASM__X86__HVM__IOREQ_H
 
 /* This correlation must not be altered */
 #define IOREQ_STATUS_HANDLED     X86EMUL_OKAY
 #define IOREQ_STATUS_UNHANDLED   X86EMUL_UNHANDLEABLE
 #define IOREQ_STATUS_RETRY       X86EMUL_RETRY
 
-#endif /* __ASM_X86_HVM_IOREQ_H__ */
+#endif /* ASM__X86__HVM__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/irq.h b/xen/arch/x86/include/asm/hvm/irq.h
index 87e89993a4..41ae7eef8d 100644
--- a/xen/arch/x86/include/asm/hvm/irq.h
+++ b/xen/arch/x86/include/asm/hvm/irq.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, K A Fraser, XenSource Inc.
  */
 
-#ifndef __ASM_X86_HVM_IRQ_H__
-#define __ASM_X86_HVM_IRQ_H__
+#ifndef ASM__X86__HVM__IRQ_H
+#define ASM__X86__HVM__IRQ_H
 
 #include <xen/timer.h>
 
@@ -213,4 +213,4 @@ void hvm_set_callback_via(struct domain *d, uint64_t via);
 struct pirq;
 bool hvm_domain_use_pirq(const struct domain *d, const struct pirq *pirq);
 
-#endif /* __ASM_X86_HVM_IRQ_H__ */
+#endif /* ASM__X86__HVM__IRQ_H */
diff --git a/xen/arch/x86/include/asm/hvm/nestedhvm.h b/xen/arch/x86/include/asm/hvm/nestedhvm.h
index ea2c1bc328..323d749a73 100644
--- a/xen/arch/x86/include/asm/hvm/nestedhvm.h
+++ b/xen/arch/x86/include/asm/hvm/nestedhvm.h
@@ -5,8 +5,8 @@
  * Author: Christoph Egger <Christoph.Egger@amd.com>
  */
 
-#ifndef _HVM_NESTEDHVM_H
-#define _HVM_NESTEDHVM_H
+#ifndef ASM__X86__HVM__NESTEDHVM_H
+#define ASM__X86__HVM__NESTEDHVM_H
 
 #include <xen/types.h>         /* for uintNN_t */
 #include <xen/sched.h>         /* for struct vcpu, struct domain */
@@ -86,4 +86,4 @@ static inline bool vvmcx_valid(const struct vcpu *v)
 void start_nested_svm(struct hvm_function_table *hvm_function_table);
 void start_nested_vmx(struct hvm_function_table *hvm_function_table);
 
-#endif /* _HVM_NESTEDHVM_H */
+#endif /* ASM__X86__HVM__NESTEDHVM_H */
diff --git a/xen/arch/x86/include/asm/hvm/save.h b/xen/arch/x86/include/asm/hvm/save.h
index ec8de02931..fc1e81fd28 100644
--- a/xen/arch/x86/include/asm/hvm/save.h
+++ b/xen/arch/x86/include/asm/hvm/save.h
@@ -3,8 +3,8 @@
  * save.h: HVM support routines for save/restore
  */
 
-#ifndef __XEN_HVM_SAVE_H__
-#define __XEN_HVM_SAVE_H__
+#ifndef ASM__X86__HVM__SAVE_H
+#define ASM__X86__HVM__SAVE_H
 
 #include <xen/types.h>
 #include <xen/init.h>
@@ -146,4 +146,4 @@ 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, bool real, hvm_domain_context_t *h);
 
-#endif /* __XEN_HVM_SAVE_H__ */
+#endif /* ASM__X86__HVM__SAVE_H */
diff --git a/xen/arch/x86/include/asm/hvm/support.h b/xen/arch/x86/include/asm/hvm/support.h
index 2a7ba36af0..f2d77b9268 100644
--- a/xen/arch/x86/include/asm/hvm/support.h
+++ b/xen/arch/x86/include/asm/hvm/support.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_SUPPORT_H__
-#define __ASM_X86_HVM_SUPPORT_H__
+#ifndef ASM__X86__HVM__SUPPORT_H
+#define ASM__X86__HVM__SUPPORT_H
 
 #include <xen/types.h>
 #include <xen/sched.h>
@@ -146,7 +146,7 @@ int __must_check hvm_msr_read_intercept(
 int __must_check hvm_msr_write_intercept(
     unsigned int msr, uint64_t msr_content, bool may_defer);
 
-#endif /* __ASM_X86_HVM_SUPPORT_H__ */
+#endif /* ASM__X86__HVM__SUPPORT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h b/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
index 205989e800..6c9f29f06c 100644
--- a/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
+++ b/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2011, Advanced Micro Devices, Inc
  *
  */
-#ifndef __ASM_X86_HVM_SVM_NESTEDSVM_H__
-#define __ASM_X86_HVM_SVM_NESTEDSVM_H__
+#ifndef ASM__X86__HVM__SVM__NESTEDSVM_H
+#define ASM__X86__HVM__SVM__NESTEDSVM_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/svm/svm.h b/xen/arch/x86/include/asm/hvm/svm/svm.h
index 4eeeb25da9..f35126cc40 100644
--- a/xen/arch/x86/include/asm/hvm/svm/svm.h
+++ b/xen/arch/x86/include/asm/hvm/svm/svm.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_SVM_H__
-#define __ASM_X86_HVM_SVM_H__
+#ifndef ASM__X86__HVM__SVM__SVM_H
+#define ASM__X86__HVM__SVM__SVM_H
 
 /*
  * PV context switch helpers.  Prefetching the VMCB area itself has been shown
@@ -57,4 +57,4 @@ static inline bool cpu_has_svm_feature(unsigned int feat)
 #define cpu_has_svm_sss       cpu_has_svm_feature(SVM_FEATURE_SSS)
 #define cpu_has_svm_spec_ctrl cpu_has_svm_feature(SVM_FEATURE_SPEC_CTRL)
 
-#endif /* __ASM_X86_HVM_SVM_H__ */
+#endif /* ASM__X86__HVM__SVM__SVM_H */
diff --git a/xen/arch/x86/include/asm/hvm/svm/svmdebug.h b/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
index 2fb76ec24c..4db4203f6a 100644
--- a/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
+++ b/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
@@ -5,8 +5,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_SVM_SVMDEBUG_H__
-#define __ASM_X86_HVM_SVM_SVMDEBUG_H__
+#ifndef ASM__X86__HVM__SVM__SVMDEBUG_H
+#define ASM__X86__HVM__SVM__SVMDEBUG_H
 
 #include <xen/types.h>
 #include <asm/hvm/svm/vmcb.h>
@@ -16,4 +16,4 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb);
 bool svm_vmcb_isvalid(const char *from, const struct vmcb_struct *vmcb,
                       const struct vcpu *v, bool verbose);
 
-#endif /* __ASM_X86_HVM_SVM_SVMDEBUG_H__ */
+#endif /* ASM__X86__HVM__SVM__SVMDEBUG_H */
diff --git a/xen/arch/x86/include/asm/hvm/svm/vmcb.h b/xen/arch/x86/include/asm/hvm/svm/vmcb.h
index 28f715e376..ed937480ae 100644
--- a/xen/arch/x86/include/asm/hvm/svm/vmcb.h
+++ b/xen/arch/x86/include/asm/hvm/svm/vmcb.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_SVM_VMCB_H__
-#define __ASM_X86_HVM_SVM_VMCB_H__
+#ifndef ASM__X86__HVM__SVM__VMCB_H
+#define ASM__X86__HVM__SVM__VMCB_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm/hvm/vcpu.h
index 64c7a6fede..866516aae9 100644
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_VCPU_H__
-#define __ASM_X86_HVM_VCPU_H__
+#ifndef ASM__X86__HVM__VCPU_H
+#define ASM__X86__HVM__VCPU_H
 
 #include <xen/tasklet.h>
 #include <asm/hvm/vlapic.h>
@@ -186,7 +186,7 @@ struct hvm_vcpu {
     struct viridian_vcpu *viridian;
 };
 
-#endif /* __ASM_X86_HVM_VCPU_H__ */
+#endif /* ASM__X86__HVM__VCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vioapic.h b/xen/arch/x86/include/asm/hvm/vioapic.h
index 68af6dce79..5020bb9d2f 100644
--- a/xen/arch/x86/include/asm/hvm/vioapic.h
+++ b/xen/arch/x86/include/asm/hvm/vioapic.h
@@ -21,8 +21,8 @@
  *  License along with this library; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_X86_HVM_VIOAPIC_H__
-#define __ASM_X86_HVM_VIOAPIC_H__
+#ifndef ASM__X86__HVM__VIOAPIC_H
+#define ASM__X86__HVM__VIOAPIC_H
 
 #include <xen/types.h>
 #include <public/hvm/save.h>
@@ -69,4 +69,4 @@ int vioapic_get_mask(const struct domain *d, unsigned int gsi);
 int cf_check vioapic_get_vector(const struct domain *d, unsigned int gsi);
 int vioapic_get_trigger_mode(const struct domain *d, unsigned int gsi);
 
-#endif /* __ASM_X86_HVM_VIOAPIC_H__ */
+#endif /* ASM__X86__HVM__VIOAPIC_H */
diff --git a/xen/arch/x86/include/asm/hvm/viridian.h b/xen/arch/x86/include/asm/hvm/viridian.h
index 4c8ff6e80b..07854a95de 100644
--- a/xen/arch/x86/include/asm/hvm/viridian.h
+++ b/xen/arch/x86/include/asm/hvm/viridian.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_VIRIDIAN_H__
-#define __ASM_X86_HVM_VIRIDIAN_H__
+#ifndef ASM__X86__HVM__VIRIDIAN_H
+#define ASM__X86__HVM__VIRIDIAN_H
 
 #include <asm/guest/hyperv-tlfs.h>
 
@@ -99,7 +99,7 @@ void viridian_synic_poll(struct vcpu *v);
 bool viridian_synic_is_auto_eoi_sint(const struct vcpu *v,
                                      unsigned int vector);
 
-#endif /* __ASM_X86_HVM_VIRIDIAN_H__ */
+#endif /* ASM__X86__HVM__VIRIDIAN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vlapic.h b/xen/arch/x86/include/asm/hvm/vlapic.h
index 2c4ff94ae7..3e729cd146 100644
--- a/xen/arch/x86/include/asm/hvm/vlapic.h
+++ b/xen/arch/x86/include/asm/hvm/vlapic.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2006 Keir Fraser, XenSource Inc.
  */
 
-#ifndef __ASM_X86_HVM_VLAPIC_H__
-#define __ASM_X86_HVM_VLAPIC_H__
+#ifndef ASM__X86__HVM__VLAPIC_H
+#define ASM__X86__HVM__VLAPIC_H
 
 #include <xen/tasklet.h>
 #include <asm/hvm/vpt.h>
@@ -137,4 +137,4 @@ bool vlapic_match_dest(
     const struct vlapic *target, const struct vlapic *source,
     int short_hand, uint32_t dest, bool dest_mode);
 
-#endif /* __ASM_X86_HVM_VLAPIC_H__ */
+#endif /* ASM__X86__HVM__VLAPIC_H */
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
index 939b87eb50..d96007838e 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_VMX_VMCS_H__
-#define __ASM_X86_HVM_VMX_VMCS_H__
+#ifndef ASM__X86__HVM__VMX__VMCS_H
+#define ASM__X86__HVM__VMX__VMCS_H
 
 #include <xen/mm.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
index f0ec459622..d8e23d313b 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_VMX_VMX_H__
-#define __ASM_X86_HVM_VMX_VMX_H__
+#ifndef ASM__X86__HVM__VMX__VMX_H
+#define ASM__X86__HVM__VMX__VMX_H
 
 #include <xen/sched.h>
 #include <xen/types.h>
@@ -676,4 +676,4 @@ typedef union ldt_or_tr_instr_info {
     };
 } ldt_or_tr_instr_info_t;
 
-#endif /* __ASM_X86_HVM_VMX_VMX_H__ */
+#endif /* ASM__X86__HVM__VMX__VMX_H */
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vvmx.h b/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
index da10d3fa96..551390e245 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
@@ -8,8 +8,8 @@
  *         Eddie Dong <eddie.dong@intel.com>
  *
  */
-#ifndef __ASM_X86_HVM_VVMX_H__
-#define __ASM_X86_HVM_VVMX_H__
+#ifndef ASM__X86__HVM__VMX__VVMX_H
+#define ASM__X86__HVM__VMX__VVMX_H
 
 struct vvmcs_list {
     unsigned long vvmcs_mfn;
@@ -199,5 +199,5 @@ int nept_translate_l2ga(struct vcpu *v, paddr_t l2ga,
                         uint64_t *exit_qual, uint32_t *exit_reason);
 int nvmx_cpu_up_prepare(unsigned int cpu);
 void nvmx_cpu_dead(unsigned int cpu);
-#endif /* __ASM_X86_HVM_VVMX_H__ */
+#endif /* ASM__X86__HVM__VMX__VVMX_H */
 
diff --git a/xen/arch/x86/include/asm/hvm/vpic.h b/xen/arch/x86/include/asm/hvm/vpic.h
index d71b270193..6dfbd3ef9e 100644
--- a/xen/arch/x86/include/asm/hvm/vpic.h
+++ b/xen/arch/x86/include/asm/hvm/vpic.h
@@ -24,8 +24,8 @@
  * IN THE SOFTWARE.
  */
 
-#ifndef __ASM_X86_HVM_VPIC_H__
-#define __ASM_X86_HVM_VPIC_H__
+#ifndef ASM__X86__HVM__VPIC_H
+#define ASM__X86__HVM__VPIC_H
 
 struct domain;
 struct vcpu;
@@ -37,4 +37,4 @@ void vpic_reset(struct domain *d);
 int vpic_ack_pending_irq(struct vcpu *v);
 int is_periodic_irq(struct vcpu *v, int irq, int type);
 
-#endif  /* __ASM_X86_HVM_VPIC_H__ */  
+#endif  /* ASM__X86__HVM__VPIC_H */  
diff --git a/xen/arch/x86/include/asm/hvm/vpt.h b/xen/arch/x86/include/asm/hvm/vpt.h
index 0b92b28625..61abea565f 100644
--- a/xen/arch/x86/include/asm/hvm/vpt.h
+++ b/xen/arch/x86/include/asm/hvm/vpt.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __ASM_X86_HVM_VPT_H__
-#define __ASM_X86_HVM_VPT_H__
+#ifndef ASM__X86__HVM__VPT_H
+#define ASM__X86__HVM__VPT_H
 
 #include <xen/timer.h>
 #include <xen/list.h>
@@ -196,4 +196,4 @@ void hpet_init(struct domain *d);
 void hpet_deinit(struct domain *d);
 void hpet_reset(struct domain *d);
 
-#endif /* __ASM_X86_HVM_VPT_H__ */
+#endif /* ASM__X86__HVM__VPT_H */
diff --git a/xen/arch/x86/include/asm/hypercall.h b/xen/arch/x86/include/asm/hypercall.h
index f6e9e2313b..7ff9609589 100644
--- a/xen/arch/x86/include/asm/hypercall.h
+++ b/xen/arch/x86/include/asm/hypercall.h
@@ -3,12 +3,12 @@
  */
 
 /* SAF-10-safe direct inclusion guard before */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_X86_HYPERCALL_H__
-#define __ASM_X86_HYPERCALL_H__
+#ifndef ASM__X86__HYPERCALL_H
+#define ASM__X86__HYPERCALL_H
 
 #include <xen/types.h>
 #include <public/physdev.h>
@@ -81,4 +81,4 @@ static inline void clobber_regs32(struct cpu_user_regs *regs,
     clobber_regs ## b(r, array_access_nospec(t ## b, n)); \
 })
 
-#endif /* __ASM_X86_HYPERCALL_H__ */
+#endif /* ASM__X86__HYPERCALL_H */
diff --git a/xen/arch/x86/include/asm/i387.h b/xen/arch/x86/include/asm/i387.h
index a783549db9..452b0e4135 100644
--- a/xen/arch/x86/include/asm/i387.h
+++ b/xen/arch/x86/include/asm/i387.h
@@ -8,8 +8,8 @@
  *	Gareth Hughes <gareth@valinux.com>, May 2000
  */
 
-#ifndef __ASM_I386_I387_H
-#define __ASM_I386_I387_H
+#ifndef ASM__X86__I387_H
+#define ASM__X86__I387_H
 
 #include <xen/types.h>
 
@@ -37,4 +37,4 @@ struct xsave_struct;
 void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
                     const void *data, unsigned int fcw_default);
 void vcpu_destroy_fpu(struct vcpu *v);
-#endif /* __ASM_I386_I387_H */
+#endif /* ASM__X86__I387_H */
diff --git a/xen/arch/x86/include/asm/intel-family.h b/xen/arch/x86/include/asm/intel-family.h
index d44dd3f69f..d53d860753 100644
--- a/xen/arch/x86/include/asm/intel-family.h
+++ b/xen/arch/x86/include/asm/intel-family.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _ASM_X86_INTEL_FAMILY_H
-#define _ASM_X86_INTEL_FAMILY_H
+#ifndef ASM__X86__INTEL_FAMILY_H
+#define ASM__X86__INTEL_FAMILY_H
 
 /*
  * "Big Core" Processors (Branded as Core, Xeon, etc...)
@@ -167,4 +167,4 @@
 /* Family 5 */
 #define INTEL_FAM5_QUARK_X1000		0x09 /* Quark X1000 SoC */
 
-#endif /* _ASM_X86_INTEL_FAMILY_H */
+#endif /* ASM__X86__INTEL_FAMILY_H */
diff --git a/xen/arch/x86/include/asm/invpcid.h b/xen/arch/x86/include/asm/invpcid.h
index bf5c30313a..670d69bae8 100644
--- a/xen/arch/x86/include/asm/invpcid.h
+++ b/xen/arch/x86/include/asm/invpcid.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_INVPCID_H_
-#define _ASM_X86_INVPCID_H_
+#ifndef ASM__X86__INVPCID_H
+#define ASM__X86__INVPCID_H
 
 #include <xen/types.h>
 
@@ -54,7 +54,7 @@ static inline void invpcid_flush_all_nonglobals(void)
     invpcid(0, 0, X86_INVPCID_ALL_NON_GLOBAL);
 }
 
-#endif	/* _ASM_X86_INVPCID_H_ */
+#endif	/* ASM__X86__INVPCID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/io.h b/xen/arch/x86/include/asm/io.h
index 1cb4217cff..f2f9bb3247 100644
--- a/xen/arch/x86/include/asm/io.h
+++ b/xen/arch/x86/include/asm/io.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
+#ifndef ASM__X86__IO_H
+#define ASM__X86__IO_H
 
 #include <xen/vmap.h>
 #include <xen/types.h>
diff --git a/xen/arch/x86/include/asm/io_apic.h b/xen/arch/x86/include/asm/io_apic.h
index 62456806c7..4446e768c2 100644
--- a/xen/arch/x86/include/asm/io_apic.h
+++ b/xen/arch/x86/include/asm/io_apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_IO_APIC_H
-#define __ASM_IO_APIC_H
+#ifndef ASM__X86__IO_APIC_H
+#define ASM__X86__IO_APIC_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/iocap.h b/xen/arch/x86/include/asm/iocap.h
index 53d87ae8a3..15a0c42ccd 100644
--- a/xen/arch/x86/include/asm/iocap.h
+++ b/xen/arch/x86/include/asm/iocap.h
@@ -4,8 +4,8 @@
  * Architecture-specific per-domain I/O capabilities.
  */
 
-#ifndef __X86_IOCAP_H__
-#define __X86_IOCAP_H__
+#ifndef ASM__X86__IOCAP_H
+#define ASM__X86__IOCAP_H
 
 #include <xen/sched.h>
 #include <xen/rangeset.h>
@@ -44,4 +44,4 @@ static inline int ioports_deny_access(struct domain *d, unsigned long s,
     return ret;
 }
 
-#endif /* __X86_IOCAP_H__ */
+#endif /* ASM__X86__IOCAP_H */
diff --git a/xen/arch/x86/include/asm/iommu.h b/xen/arch/x86/include/asm/iommu.h
index 8dc464fbd3..6d7f876080 100644
--- a/xen/arch/x86/include/asm/iommu.h
+++ b/xen/arch/x86/include/asm/iommu.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARCH_X86_IOMMU_H__
-#define __ARCH_X86_IOMMU_H__
+#ifndef ASM__X86__IOMMU_H
+#define ASM__X86__IOMMU_H
 
 #include <xen/errno.h>
 #include <xen/list.h>
@@ -137,7 +137,7 @@ void iommu_queue_free_pgtable(struct domain_iommu *hd, struct page_info *pg);
 /* Check [start, end] unity map range for correctness. */
 bool iommu_unity_region_ok(const char *prefix, mfn_t start, mfn_t end);
 
-#endif /* !__ARCH_X86_IOMMU_H__ */
+#endif /* !ASM__X86__IOMMU_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/ioreq.h b/xen/arch/x86/include/asm/ioreq.h
index 5fe811eff5..065efcbe24 100644
--- a/xen/arch/x86/include/asm/ioreq.h
+++ b/xen/arch/x86/include/asm/ioreq.h
@@ -8,14 +8,14 @@
  * Copyright (c) 2016 Citrix Systems Inc.
  */
 
-#ifndef __ASM_X86_IOREQ_H__
-#define __ASM_X86_IOREQ_H__
+#ifndef ASM__X86__IOREQ_H
+#define ASM__X86__IOREQ_H
 
 #ifdef CONFIG_HVM
 #include <asm/hvm/ioreq.h>
 #endif
 
-#endif /* __ASM_X86_IOREQ_H__ */
+#endif /* ASM__X86__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/irq.h b/xen/arch/x86/include/asm/irq.h
index d3bc768068..86c2266578 100644
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
+#ifndef ASM__X86__IRQ_H
+#define ASM__X86__IRQ_H
 
 /* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar */
 
@@ -231,4 +231,4 @@ int allocate_and_map_gsi_pirq(struct domain *d, int index, int *pirq_p);
 int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
                               int type, struct msi_info *msi);
 
-#endif /* _ASM_HW_IRQ_H */
+#endif /* ASM__X86__IRQ_H */
diff --git a/xen/arch/x86/include/asm/ldt.h b/xen/arch/x86/include/asm/ldt.h
index 58e3e042fc..b77b53c1b8 100644
--- a/xen/arch/x86/include/asm/ldt.h
+++ b/xen/arch/x86/include/asm/ldt.h
@@ -1,6 +1,6 @@
 
-#ifndef __ARCH_LDT_H
-#define __ARCH_LDT_H
+#ifndef ASM__X86__LDT_H
+#define ASM__X86__LDT_H
 
 #ifndef __ASSEMBLY__
 
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..b1daf7fa69 100644
--- a/xen/arch/x86/include/asm/mach-default/bios_ebda.h
+++ b/xen/arch/x86/include/asm/mach-default/bios_ebda.h
@@ -1,5 +1,5 @@
-#ifndef _MACH_BIOS_EBDA_H
-#define _MACH_BIOS_EBDA_H
+#ifndef ASM__X86__MACH_DEFAULT__BIOS_EBDA_H
+#define ASM__X86__MACH_DEFAULT__BIOS_EBDA_H
 
 /*
  * there is a real-mode segmented pointer pointing to the
@@ -12,4 +12,4 @@ static inline unsigned int get_bios_ebda(void)
 	return address;	/* 0 means none */
 }
 
-#endif /* _MACH_BIOS_EBDA_H */
+#endif /* ASM__X86__MACH_DEFAULT__BIOS_EBDA_H */
diff --git a/xen/arch/x86/include/asm/mach-default/io_ports.h b/xen/arch/x86/include/asm/mach-default/io_ports.h
index a96d9f6604..d8daaade5c 100644
--- a/xen/arch/x86/include/asm/mach-default/io_ports.h
+++ b/xen/arch/x86/include/asm/mach-default/io_ports.h
@@ -4,8 +4,8 @@
  *  Machine specific IO port address definition for generic.
  *  Written by Osamu Tomita <tomita@cinet.co.jp>
  */
-#ifndef _MACH_IO_PORTS_H
-#define _MACH_IO_PORTS_H
+#ifndef ASM__X86__MACH_DEFAULT__IO_PORTS_H
+#define ASM__X86__MACH_DEFAULT__IO_PORTS_H
 
 /* i8253A PIT registers */
 #define PIT_MODE		0x43
@@ -27,4 +27,4 @@
 #define SLAVE_ICW4_DEFAULT	0x01
 #define PIC_ICW4_AEOI		2
 
-#endif /* !_MACH_IO_PORTS_H */
+#endif /* !ASM__X86__MACH_DEFAULT__IO_PORTS_H */
diff --git a/xen/arch/x86/include/asm/mach-default/irq_vectors.h b/xen/arch/x86/include/asm/mach-default/irq_vectors.h
index f546aedd87..52f7bec7c3 100644
--- a/xen/arch/x86/include/asm/mach-default/irq_vectors.h
+++ b/xen/arch/x86/include/asm/mach-default/irq_vectors.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IRQ_VECTORS_H
-#define _ASM_IRQ_VECTORS_H
+#ifndef ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H
+#define ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H
 
 /* Processor-initiated interrupts are all high priority. */
 #define SPURIOUS_APIC_VECTOR	0xff
@@ -43,4 +43,4 @@
 #define FIRST_IRQ_VECTOR        FIRST_DYNAMIC_VECTOR
 #define LAST_IRQ_VECTOR         LAST_HIPRIORITY_VECTOR
 
-#endif /* _ASM_IRQ_VECTORS_H */
+#endif /* ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H */
diff --git a/xen/arch/x86/include/asm/mach-default/mach_mpspec.h b/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
index 1a4e3f8c4f..3027533052 100644
--- a/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
+++ b/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACH_MPSPEC_H
-#define __ASM_MACH_MPSPEC_H
+#ifndef ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H
+#define ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H
 
 #define MAX_IRQ_SOURCES 256
 
@@ -7,4 +7,4 @@
 /* Maximum 256 PCI busses, plus 1 ISA bus in each of 4 cabinets. */
 #define MAX_MP_BUSSES 260
 
-#endif /* __ASM_MACH_MPSPEC_H */
+#endif /* ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H */
diff --git a/xen/arch/x86/include/asm/mach-generic/mach_apic.h b/xen/arch/x86/include/asm/mach-generic/mach_apic.h
index c0d8b232c9..ae8b2372d8 100644
--- a/xen/arch/x86/include/asm/mach-generic/mach_apic.h
+++ b/xen/arch/x86/include/asm/mach-generic/mach_apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACH_APIC_H
-#define __ASM_MACH_APIC_H
+#ifndef ASM__X86__MACH_GENERIC__MACH_APIC_H
+#define ASM__X86__MACH_GENERIC__MACH_APIC_H
 
 #include <asm/apic.h>
 #include <asm/io_apic.h>
@@ -74,4 +74,4 @@ static inline void set_apicid(int phys_apicid, physid_mask_t *map)
 	physid_set(phys_apicid, *map);
 }
 
-#endif /* __ASM_MACH_APIC_H */
+#endif /* ASM__X86__MACH_GENERIC__MACH_APIC_H */
diff --git a/xen/arch/x86/include/asm/machine_kexec.h b/xen/arch/x86/include/asm/machine_kexec.h
index d4880818c1..78072325b2 100644
--- a/xen/arch/x86/include/asm/machine_kexec.h
+++ b/xen/arch/x86/include/asm/machine_kexec.h
@@ -1,5 +1,5 @@
-#ifndef __X86_MACHINE_KEXEC_H__
-#define __X86_MACHINE_KEXEC_H__
+#ifndef ASM__X86__MACHINE_KEXEC_H
+#define ASM__X86__MACHINE_KEXEC_H
 
 #define KEXEC_RELOC_FLAG_COMPAT 0x1 /* 32-bit image */
 
@@ -13,4 +13,4 @@ extern const char kexec_reloc_end[];
 
 #endif
 
-#endif /* __X86_MACHINE_KEXEC_H__ */
+#endif /* ASM__X86__MACHINE_KEXEC_H */
diff --git a/xen/arch/x86/include/asm/mc146818rtc.h b/xen/arch/x86/include/asm/mc146818rtc.h
index 1a34512d29..5e796cda7e 100644
--- a/xen/arch/x86/include/asm/mc146818rtc.h
+++ b/xen/arch/x86/include/asm/mc146818rtc.h
@@ -1,8 +1,8 @@
 /*
  * Machine dependent access functions for RTC registers.
  */
-#ifndef _ASM_MC146818RTC_H
-#define _ASM_MC146818RTC_H
+#ifndef ASM__X86__MC146818RTC_H
+#define ASM__X86__MC146818RTC_H
 
 #include <asm/io.h>
 #include <xen/spinlock.h>
@@ -117,4 +117,4 @@ outb_p((val),RTC_PORT(1)); \
 unsigned int rtc_guest_read(unsigned int port);
 void rtc_guest_write(unsigned int port, unsigned int data);
 
-#endif /* _ASM_MC146818RTC_H */
+#endif /* ASM__X86__MC146818RTC_H */
diff --git a/xen/arch/x86/include/asm/mce.h b/xen/arch/x86/include/asm/mce.h
index 2ec47a71ae..a70748da90 100644
--- a/xen/arch/x86/include/asm/mce.h
+++ b/xen/arch/x86/include/asm/mce.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_X86_MCE_H
-#define _XEN_X86_MCE_H
+#ifndef ASM__X86__MCE_H
+#define ASM__X86__MCE_H
 
 #include <xen/spinlock.h>
 #include <xen/types.h>
diff --git a/xen/arch/x86/include/asm/mem_paging.h b/xen/arch/x86/include/asm/mem_paging.h
index 5ae86669fb..c5ab2ee80e 100644
--- a/xen/arch/x86/include/asm/mem_paging.h
+++ b/xen/arch/x86/include/asm/mem_paging.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
  */
 
-#ifndef __ASM_X86_MEM_PAGING_H__
-#define __ASM_X86_MEM_PAGING_H__
+#ifndef ASM__X86__MEM_PAGING_H
+#define ASM__X86__MEM_PAGING_H
 
 int mem_paging_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_paging_op_t) arg);
 
@@ -18,7 +18,7 @@ int mem_paging_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_paging_op_t) arg);
 # define mem_paging_enabled(d) false
 #endif
 
-#endif /*__ASM_X86_MEM_PAGING_H__ */
+#endif /*ASM__X86__MEM_PAGING_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/mem_sharing.h b/xen/arch/x86/include/asm/mem_sharing.h
index 040962f690..c0e0beb727 100644
--- a/xen/arch/x86/include/asm/mem_sharing.h
+++ b/xen/arch/x86/include/asm/mem_sharing.h
@@ -6,8 +6,8 @@
  *
  * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos)
  */
-#ifndef __MEM_SHARING_H__
-#define __MEM_SHARING_H__
+#ifndef ASM__X86__MEM_SHARING_H
+#define ASM__X86__MEM_SHARING_H
 
 #include <public/domctl.h>
 #include <public/memory.h>
@@ -147,4 +147,4 @@ static inline int mem_sharing_fork_reset(struct domain *d, bool reset_state,
 
 #endif
 
-#endif /* __MEM_SHARING_H__ */
+#endif /* ASM__X86__MEM_SHARING_H */
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 57c08205d4..55ca221c13 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -1,5 +1,5 @@
-#ifndef ASM_X86__MICROCODE_H
-#define ASM_X86__MICROCODE_H
+#ifndef ASM__X86__MICROCODE_H
+#define ASM__X86__MICROCODE_H
 
 #include <xen/types.h>
 #include <xen/percpu.h>
@@ -30,4 +30,4 @@ int microcode_init_cache(unsigned long *module_map,
                          const struct multiboot_info *mbi);
 int microcode_update_one(void);
 
-#endif /* ASM_X86__MICROCODE_H */
+#endif /* ASM__X86__MICROCODE_H */
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 2a837f3d59..81eb0bb8cd 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -1,6 +1,6 @@
 
-#ifndef __ASM_X86_MM_H__
-#define __ASM_X86_MM_H__
+#ifndef ASM__X86__MM_H
+#define ASM__X86__MM_H
 
 #include <xen/list.h>
 #include <xen/spinlock.h>
@@ -628,4 +628,4 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return (mfn + nr) <= (virt_to_mfn(eva - 1) + 1);
 }
 
-#endif /* __ASM_X86_MM_H__ */
+#endif /* ASM__X86__MM_H */
diff --git a/xen/arch/x86/include/asm/mpspec.h b/xen/arch/x86/include/asm/mpspec.h
index 45e474dfd1..bcd9be54ac 100644
--- a/xen/arch/x86/include/asm/mpspec.h
+++ b/xen/arch/x86/include/asm/mpspec.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MPSPEC_H
-#define __ASM_MPSPEC_H
+#ifndef ASM__X86__MPSPEC_H
+#define ASM__X86__MPSPEC_H
 
 #include <xen/cpumask.h>
 #include <asm/mpspec_def.h>
diff --git a/xen/arch/x86/include/asm/mpspec_def.h b/xen/arch/x86/include/asm/mpspec_def.h
index b17ec41426..79a9760be8 100644
--- a/xen/arch/x86/include/asm/mpspec_def.h
+++ b/xen/arch/x86/include/asm/mpspec_def.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MPSPEC_DEF_H
-#define __ASM_MPSPEC_DEF_H
+#ifndef ASM__X86__MPSPEC_DEF_H
+#define ASM__X86__MPSPEC_DEF_H
 
 /*
  * Structure definitions for SMP machines following the
diff --git a/xen/arch/x86/include/asm/msi.h b/xen/arch/x86/include/asm/msi.h
index 748bc3cd6d..ad9b4c90a3 100644
--- a/xen/arch/x86/include/asm/msi.h
+++ b/xen/arch/x86/include/asm/msi.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSI_H
-#define __ASM_MSI_H
+#ifndef ASM__X86__MSI_H
+#define ASM__X86__MSI_H
 
 #include <xen/cpumask.h>
 #include <xen/pci.h>
@@ -251,4 +251,4 @@ void guest_mask_msi_irq(struct irq_desc *desc, bool mask);
 void cf_check ack_nonmaskable_msi_irq(struct irq_desc *desc);
 void cf_check set_msi_affinity(struct irq_desc *desc, const cpumask_t *mask);
 
-#endif /* __ASM_MSI_H */
+#endif /* ASM__X86__MSI_H */
diff --git a/xen/arch/x86/include/asm/msr-index.h b/xen/arch/x86/include/asm/msr-index.h
index 9cdb5b2625..abde451b98 100644
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSR_INDEX_H
-#define __ASM_MSR_INDEX_H
+#ifndef ASM__X86__MSR_INDEX_H
+#define ASM__X86__MSR_INDEX_H
 
 /*
  * CPU model specific register (MSR) numbers
@@ -698,4 +698,4 @@
 #define MSR_PKGC9_IRTL			0x00000634
 #define MSR_PKGC10_IRTL			0x00000635
 
-#endif /* __ASM_MSR_INDEX_H */
+#endif /* ASM__X86__MSR_INDEX_H */
diff --git a/xen/arch/x86/include/asm/msr.h b/xen/arch/x86/include/asm/msr.h
index 355fb324ec..033bb9d6ff 100644
--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSR_H
-#define __ASM_MSR_H
+#ifndef ASM__X86__MSR_H
+#define ASM__X86__MSR_H
 
 #include "msr-index.h"
 
@@ -441,4 +441,4 @@ int init_vcpu_msr_policy(struct vcpu *v);
 int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val);
 int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val);
 
-#endif /* __ASM_MSR_H */
+#endif /* ASM__X86__MSR_H */
diff --git a/xen/arch/x86/include/asm/mtrr.h b/xen/arch/x86/include/asm/mtrr.h
index 36dac0a775..384c29f2a7 100644
--- a/xen/arch/x86/include/asm/mtrr.h
+++ b/xen/arch/x86/include/asm/mtrr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_MTRR_H__
-#define __ASM_X86_MTRR_H__
+#ifndef ASM__X86__MTRR_H
+#define ASM__X86__MTRR_H
 
 #include <xen/mm.h>
 
@@ -85,4 +85,4 @@ extern bool pat_msr_set(uint64_t *pat, uint64_t msr);
 bool is_var_mtrr_overlapped(const struct mtrr_state *m);
 bool mtrr_pat_not_equal(const struct vcpu *vd, const struct vcpu *vs);
 
-#endif /* __ASM_X86_MTRR_H__ */
+#endif /* ASM__X86__MTRR_H */
diff --git a/xen/arch/x86/include/asm/multicall.h b/xen/arch/x86/include/asm/multicall.h
index 7e1d4c121a..9e9050dacd 100644
--- a/xen/arch/x86/include/asm/multicall.h
+++ b/xen/arch/x86/include/asm/multicall.h
@@ -2,11 +2,11 @@
  * asm-x86/multicall.h
  */
 
-#ifndef __ASM_X86_MULTICALL_H__
-#define __ASM_X86_MULTICALL_H__
+#ifndef ASM__X86__MULTICALL_H
+#define ASM__X86__MULTICALL_H
 
 #include <xen/multicall.h>
 
 typeof(arch_do_multicall_call) pv_do_multicall_call, hvm_do_multicall_call;
 
-#endif /* __ASM_X86_MULTICALL_H__ */
+#endif /* ASM__X86__MULTICALL_H */
diff --git a/xen/arch/x86/include/asm/mwait.h b/xen/arch/x86/include/asm/mwait.h
index 000a692f6d..90781aa035 100644
--- a/xen/arch/x86/include/asm/mwait.h
+++ b/xen/arch/x86/include/asm/mwait.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_MWAIT_H__
-#define __ASM_X86_MWAIT_H__
+#ifndef ASM__X86__MWAIT_H
+#define ASM__X86__MWAIT_H
 
 #include <xen/types.h>
 
@@ -23,4 +23,4 @@ static inline bool mwait_pc10_supported(void)
 }
 #endif
 
-#endif /* __ASM_X86_MWAIT_H__ */
+#endif /* ASM__X86__MWAIT_H */
diff --git a/xen/arch/x86/include/asm/nmi.h b/xen/arch/x86/include/asm/nmi.h
index 9a5da14162..ce4ab3690f 100644
--- a/xen/arch/x86/include/asm/nmi.h
+++ b/xen/arch/x86/include/asm/nmi.h
@@ -1,6 +1,6 @@
 
-#ifndef ASM_NMI_H
-#define ASM_NMI_H
+#ifndef ASM__X86__NMI_H
+#define ASM__X86__NMI_H
 
 #include <public/nmi.h>
 
@@ -43,4 +43,4 @@ void trigger_nmi_continuation(void);
 
 /* Check for NMI continuation pending. */
 bool nmi_check_continuation(void);
-#endif /* ASM_NMI_H */
+#endif /* ASM__X86__NMI_H */
diff --git a/xen/arch/x86/include/asm/nops.h b/xen/arch/x86/include/asm/nops.h
index 2724a9862e..0d2480a416 100644
--- a/xen/arch/x86/include/asm/nops.h
+++ b/xen/arch/x86/include/asm/nops.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ASM_NOPS_H__
-#define __X86_ASM_NOPS_H__
+#ifndef ASM__X86__NOPS_H
+#define ASM__X86__NOPS_H
 
 /*
  * Define nops for use with alternative().
@@ -65,4 +65,4 @@
 
 #define ASM_NOP_MAX 9
 
-#endif /* __X86_ASM_NOPS_H__ */
+#endif /* ASM__X86__NOPS_H */
diff --git a/xen/arch/x86/include/asm/nospec.h b/xen/arch/x86/include/asm/nospec.h
index e058a3bb0e..d3efb3c52e 100644
--- a/xen/arch/x86/include/asm/nospec.h
+++ b/xen/arch/x86/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
-#ifndef _ASM_X86_NOSPEC_H
-#define _ASM_X86_NOSPEC_H
+#ifndef ASM__X86__NOSPEC_H
+#define ASM__X86__NOSPEC_H
 
 #include <asm/alternative.h>
 
@@ -88,7 +88,7 @@ static always_inline bool arch_lock_evaluate_nospec(bool condition)
         return barrier_lock_false();
 }
 
-#endif /* _ASM_X86_NOSPEC_H */
+#endif /* ASM__X86__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/numa.h b/xen/arch/x86/include/asm/numa.h
index 7866afa408..8371bc3a44 100644
--- a/xen/arch/x86/include/asm/numa.h
+++ b/xen/arch/x86/include/asm/numa.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X8664_NUMA_H 
-#define _ASM_X8664_NUMA_H 1
+#ifndef ASM__X86__NUMA_H 
+#define ASM__X86__NUMA_H 1
 
 #include <xen/cpumask.h>
 
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index e6de37f108..f3cd804af5 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -11,8 +11,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_ASM_X86_P2M_H
-#define _XEN_ASM_X86_P2M_H
+#ifndef ASM__X86__P2M_H
+#define ASM__X86__P2M_H
 
 #include <xen/paging.h>
 #include <xen/mem_access.h>
@@ -392,7 +392,7 @@ struct p2m_domain {
 #define p2m_get_hostp2m(d)      ((d)->arch.p2m)
 
 /* All common type definitions should live ahead of this inclusion. */
-#ifdef _XEN_P2M_COMMON_H
+#ifdef XEN__P2M_COMMON_H
 # error "xen/p2m-common.h should not be included directly"
 #endif
 #include <xen/p2m-common.h>
@@ -1101,7 +1101,7 @@ static inline int p2m_entry_modify(struct p2m_domain *p2m, p2m_type_t nt,
 
 #endif /* CONFIG_HVM */
 
-#endif /* _XEN_ASM_X86_P2M_H */
+#endif /* ASM__X86__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/page-bits.h b/xen/arch/x86/include/asm/page-bits.h
index 6f7fc7d035..5350baf69d 100644
--- a/xen/arch/x86/include/asm/page-bits.h
+++ b/xen/arch/x86/include/asm/page-bits.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PAGE_SHIFT_H__
-#define __X86_PAGE_SHIFT_H__
+#ifndef ASM__X86__PAGE_BITS_H
+#define ASM__X86__PAGE_BITS_H
 
 #define L1_PAGETABLE_SHIFT      12
 #define L2_PAGETABLE_SHIFT      21
@@ -23,4 +23,4 @@
 #define PADDR_BITS              52
 #define VADDR_BITS              48
 
-#endif /* __X86_PAGE_SHIFT_H__ */
+#endif /* ASM__X86__PAGE_BITS_H */
diff --git a/xen/arch/x86/include/asm/page.h b/xen/arch/x86/include/asm/page.h
index e01af28916..63c7341fcc 100644
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PAGE_H__
-#define __X86_PAGE_H__
+#ifndef ASM__X86__PAGE_H
+#define ASM__X86__PAGE_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -389,7 +389,7 @@ static inline void invalidate_icache(void)
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __X86_PAGE_H__ */
+#endif /* ASM__X86__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/paging.h b/xen/arch/x86/include/asm/paging.h
index 8a2a0af408..b7c59c426b 100644
--- a/xen/arch/x86/include/asm/paging.h
+++ b/xen/arch/x86/include/asm/paging.h
@@ -9,8 +9,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_PAGING_H
-#define _XEN_PAGING_H
+#ifndef ASM__X86__PAGING_H
+#define ASM__X86__PAGING_H
 
 #include <xen/mm.h>
 #include <public/domctl.h>
diff --git a/xen/arch/x86/include/asm/pci.h b/xen/arch/x86/include/asm/pci.h
index fd5480d67d..ac38417fc5 100644
--- a/xen/arch/x86/include/asm/pci.h
+++ b/xen/arch/x86/include/asm/pci.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PCI_H__
-#define __X86_PCI_H__
+#ifndef ASM__X86__PCI_H
+#define ASM__X86__PCI_H
 
 #include <xen/mm.h>
 
@@ -67,4 +67,4 @@ static inline bool pci_check_bar(const struct pci_dev *pdev,
     return is_memory_hole(start, end);
 }
 
-#endif /* __X86_PCI_H__ */
+#endif /* ASM__X86__PCI_H */
diff --git a/xen/arch/x86/include/asm/perfc.h b/xen/arch/x86/include/asm/perfc.h
index a1a591e803..b1c3e0d7f7 100644
--- a/xen/arch/x86/include/asm/perfc.h
+++ b/xen/arch/x86/include/asm/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PERFC_H__
-#define __ASM_PERFC_H__
+#ifndef ASM__X86__PERFC_H
+#define ASM__X86__PERFC_H
 
 static inline void arch_perfc_reset(void)
 {
diff --git a/xen/arch/x86/include/asm/perfc_defn.h b/xen/arch/x86/include/asm/perfc_defn.h
index 487e20dc97..20cfbb40c5 100644
--- a/xen/arch/x86/include/asm/perfc_defn.h
+++ b/xen/arch/x86/include/asm/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef ASM__X86__PERFC_DEFN_H*/
+/*#define ASM__X86__PERFC_DEFN_H*/
 
 PERFCOUNTER_ARRAY(exceptions,           "exceptions", 32)
 
@@ -131,4 +131,4 @@ PERFCOUNTER(iommu_pt_coalesces,   "IOMMU page table coalesces")
 PERFCOUNTER(buslock, "Bus Locks Detected")
 PERFCOUNTER(vmnotify_crash, "domain crashes by Notify VM Exit")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* ASM__X86__PERFC_DEFN_H */
diff --git a/xen/arch/x86/include/asm/processor.h b/xen/arch/x86/include/asm/processor.h
index 26e2fb1369..c7ea2f674f 100644
--- a/xen/arch/x86/include/asm/processor.h
+++ b/xen/arch/x86/include/asm/processor.h
@@ -1,8 +1,8 @@
 
 /* Portions are: Copyright (c) 1994 Linus Torvalds */
 
-#ifndef __ASM_X86_PROCESSOR_H
-#define __ASM_X86_PROCESSOR_H
+#ifndef ASM__X86__PROCESSOR_H
+#define ASM__X86__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -529,7 +529,7 @@ void amd_check_zenbleed(void);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ASM_X86_PROCESSOR_H */
+#endif /* ASM__X86__PROCESSOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/prot-key.h b/xen/arch/x86/include/asm/prot-key.h
index 0dcd31b7ea..162db7b3ee 100644
--- a/xen/arch/x86/include/asm/prot-key.h
+++ b/xen/arch/x86/include/asm/prot-key.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2021-2022 Citrix Systems Ltd.
  */
-#ifndef ASM_PROT_KEY_H
-#define ASM_PROT_KEY_H
+#ifndef ASM__X86__PROT_KEY_H
+#define ASM__X86__PROT_KEY_H
 
 #include <xen/percpu.h>
 #include <xen/types.h>
@@ -82,4 +82,4 @@ static inline void wrpkrs_and_cache(uint32_t pkrs)
     wrmsr_ns(MSR_PKRS, pkrs, 0);
 }
 
-#endif /* ASM_PROT_KEY_H */
+#endif /* ASM__X86__PROT_KEY_H */
diff --git a/xen/arch/x86/include/asm/psr.h b/xen/arch/x86/include/asm/psr.h
index d21a59d98f..461a39395f 100644
--- a/xen/arch/x86/include/asm/psr.h
+++ b/xen/arch/x86/include/asm/psr.h
@@ -13,8 +13,8 @@
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  * more details.
  */
-#ifndef __ASM_PSR_H__
-#define __ASM_PSR_H__
+#ifndef ASM__X86__PSR_H
+#define ASM__X86__PSR_H
 
 #include <xen/types.h>
 
@@ -92,7 +92,7 @@ static inline void psr_domain_init(struct domain *d) {}
 static inline void psr_domain_free(struct domain *d) {}
 #endif
 
-#endif /* __ASM_PSR_H__ */
+#endif /* ASM__X86__PSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pt-contig-markers.h b/xen/arch/x86/include/asm/pt-contig-markers.h
index 1ad5c8fb6c..b0af22a6ba 100644
--- a/xen/arch/x86/include/asm/pt-contig-markers.h
+++ b/xen/arch/x86/include/asm/pt-contig-markers.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_PT_CONTIG_MARKERS_H
-#define __ASM_X86_PT_CONTIG_MARKERS_H
+#ifndef ASM__X86__PT_CONTIG_MARKERS_H
+#define ASM__X86__PT_CONTIG_MARKERS_H
 
 /*
  * Short of having function templates in C, the function defined below is
@@ -107,4 +107,4 @@ static bool pt_update_contig_markers(uint64_t *pt, unsigned int idx,
 
 #endif /* CONTIG_MASK */
 
-#endif /* __ASM_X86_PT_CONTIG_MARKERS_H */
+#endif /* ASM__X86__PT_CONTIG_MARKERS_H */
diff --git a/xen/arch/x86/include/asm/pv/domain.h b/xen/arch/x86/include/asm/pv/domain.h
index 75a6b9e5c7..83c779442b 100644
--- a/xen/arch/x86/include/asm/pv/domain.h
+++ b/xen/arch/x86/include/asm/pv/domain.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_DOMAIN_H__
-#define __X86_PV_DOMAIN_H__
+#ifndef ASM__X86__PV__DOMAIN_H
+#define ASM__X86__PV__DOMAIN_H
 
 #include <xen/sched.h>
 
@@ -110,7 +110,7 @@ static inline void pv_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 void cf_check paravirt_ctxt_switch_from(struct vcpu *v);
 void cf_check paravirt_ctxt_switch_to(struct vcpu *v);
 
-#endif	/* __X86_PV_DOMAIN_H__ */
+#endif	/* ASM__X86__PV__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/grant_table.h b/xen/arch/x86/include/asm/pv/grant_table.h
index 88f36c6595..aa03ff5345 100644
--- a/xen/arch/x86/include/asm/pv/grant_table.h
+++ b/xen/arch/x86/include/asm/pv/grant_table.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_GRANT_TABLE_H__
-#define __X86_PV_GRANT_TABLE_H__
+#ifndef ASM__X86__PV__GRANT_TABLE_H
+#define ASM__X86__PV__GRANT_TABLE_H
 
 #ifdef CONFIG_PV
 
@@ -36,7 +36,7 @@ static inline int replace_grant_pv_mapping(uint64_t addr, mfn_t frame,
 
 #endif
 
-#endif /* __X86_PV_GRANT_TABLE_H__ */
+#endif /* ASM__X86__PV__GRANT_TABLE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/mm.h b/xen/arch/x86/include/asm/pv/mm.h
index 182764542c..1135b7bda6 100644
--- a/xen/arch/x86/include/asm/pv/mm.h
+++ b/xen/arch/x86/include/asm/pv/mm.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_MM_H__
-#define __X86_PV_MM_H__
+#ifndef ASM__X86__PV__MM_H
+#define ASM__X86__PV__MM_H
 
 #ifdef CONFIG_PV
 
@@ -46,4 +46,4 @@ static inline bool pv_destroy_ldt(struct vcpu *v)
 
 #endif
 
-#endif /* __X86_PV_MM_H__ */
+#endif /* ASM__X86__PV__MM_H */
diff --git a/xen/arch/x86/include/asm/pv/shim.h b/xen/arch/x86/include/asm/pv/shim.h
index 6153e27005..2a7d1c1594 100644
--- a/xen/arch/x86/include/asm/pv/shim.h
+++ b/xen/arch/x86/include/asm/pv/shim.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_PV_SHIM_H__
-#define __X86_PV_SHIM_H__
+#ifndef ASM__X86__PV__SHIM_H
+#define ASM__X86__PV__SHIM_H
 
 #include <xen/hypercall.h>
 #include <xen/types.h>
@@ -98,7 +98,7 @@ pv_shim_reserved_pages(unsigned int *s)
 
 #endif
 
-#endif /* __X86_PV_SHIM_H__ */
+#endif /* ASM__X86__PV__SHIM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/trace.h b/xen/arch/x86/include/asm/pv/trace.h
index c616206eeb..b9ecfb066c 100644
--- a/xen/arch/x86/include/asm/pv/trace.h
+++ b/xen/arch/x86/include/asm/pv/trace.h
@@ -1,5 +1,5 @@
-#ifndef XEN_X86_PV_TRACE_H
-#define XEN_X86_PV_TRACE_H
+#ifndef ASM__X86__PV__TRACE_H
+#define ASM__X86__PV__TRACE_H
 
 #include <xen/trace.h>
 
@@ -45,4 +45,4 @@ static inline void trace_ptwr_emulation(unsigned long addr, l1_pgentry_t npte)
         __trace_ptwr_emulation(addr, npte);
 }
 
-#endif /* XEN_X86_PV_TRACE_H */
+#endif /* ASM__X86__PV__TRACE_H */
diff --git a/xen/arch/x86/include/asm/pv/traps.h b/xen/arch/x86/include/asm/pv/traps.h
index 404f5b169c..31f9f19231 100644
--- a/xen/arch/x86/include/asm/pv/traps.h
+++ b/xen/arch/x86/include/asm/pv/traps.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_TRAPS_H__
-#define __X86_PV_TRAPS_H__
+#ifndef ASM__X86__PV__TRAPS_H
+#define ASM__X86__PV__TRAPS_H
 
 #ifdef CONFIG_PV
 
@@ -47,7 +47,7 @@ static inline bool pv_trap_callback_registered(const struct vcpu *v,
 }
 #endif /* CONFIG_PV */
 
-#endif /* __X86_PV_TRAPS_H__ */
+#endif /* ASM__X86__PV__TRAPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/random.h b/xen/arch/x86/include/asm/random.h
index 9e1fe0bc1d..55f0293a0f 100644
--- a/xen/arch/x86/include/asm/random.h
+++ b/xen/arch/x86/include/asm/random.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_RANDOM_H__
-#define __ASM_RANDOM_H__
+#ifndef ASM__X86__RANDOM_H
+#define ASM__X86__RANDOM_H
 
 #include <asm/processor.h>
 
@@ -13,4 +13,4 @@ static inline unsigned int arch_get_random(void)
     return val;
 }
 
-#endif /* __ASM_RANDOM_H__ */
+#endif /* ASM__X86__RANDOM_H */
diff --git a/xen/arch/x86/include/asm/regs.h b/xen/arch/x86/include/asm/regs.h
index ddf5e14e57..e99b18e3ab 100644
--- a/xen/arch/x86/include/asm/regs.h
+++ b/xen/arch/x86/include/asm/regs.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_REGS_H__
-#define __X86_REGS_H__
+#ifndef ASM__X86__REGS_H
+#define ASM__X86__REGS_H
 
 #include <asm/x86_64/regs.h>
 
@@ -30,4 +30,4 @@ static inline void read_sregs(struct cpu_user_regs *regs)
     asm ( "mov %%gs, %0" : "=m" (regs->gs) );
 }
 
-#endif /* __X86_REGS_H__ */
+#endif /* ASM__X86__REGS_H */
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index d75589178b..be6cac0095 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -1,5 +1,5 @@
-#ifndef __X86_SETUP_H_
-#define __X86_SETUP_H_
+#ifndef ASM__X86__SETUP_H
+#define ASM__X86__SETUP_H
 
 #include <xen/multiboot.h>
 #include <asm/numa.h>
diff --git a/xen/arch/x86/include/asm/shadow.h b/xen/arch/x86/include/asm/shadow.h
index 9a8d1b8353..034d389c60 100644
--- a/xen/arch/x86/include/asm/shadow.h
+++ b/xen/arch/x86/include/asm/shadow.h
@@ -19,8 +19,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _XEN_SHADOW_H
-#define _XEN_SHADOW_H
+#ifndef ASM__X86__SHADOW_H
+#define ASM__X86__SHADOW_H
 
 #include <xen/sched.h>
 #include <xen/perfc.h>
@@ -271,7 +271,7 @@ static inline void shadow_remove_all_shadows(struct domain *d, mfn_t gmfn)
     sh_remove_shadows(d, gmfn, 0 /* Be thorough */, 1 /* Must succeed */);
 }
 
-#endif /* _XEN_SHADOW_H */
+#endif /* ASM__X86__SHADOW_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/shared.h b/xen/arch/x86/include/asm/shared.h
index 60b67fa4b4..b08c8b3f7b 100644
--- a/xen/arch/x86/include/asm/shared.h
+++ b/xen/arch/x86/include/asm/shared.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_SHARED_H__
-#define __XEN_X86_SHARED_H__
+#ifndef ASM__X86__SHARED_H
+#define ASM__X86__SHARED_H
 
 #ifdef CONFIG_COMPAT
 
@@ -83,4 +83,4 @@ GET_SET_VCPU(unsigned long, cr2)
 #undef GET_SET_VCPU
 #undef GET_SET_SHARED
 
-#endif /* __XEN_X86_SHARED_H__ */
+#endif /* ASM__X86__SHARED_H */
diff --git a/xen/arch/x86/include/asm/shstk.h b/xen/arch/x86/include/asm/shstk.h
index 9160fe9f0e..e04694c151 100644
--- a/xen/arch/x86/include/asm/shstk.h
+++ b/xen/arch/x86/include/asm/shstk.h
@@ -2,8 +2,8 @@
 /******************************************************************************
  * Copyright (c) 2022 Citrix Systems Ltd.
  */
-#ifndef XEN_ASM_SHSTK_H
-#define XEN_ASM_SHSTK_H
+#ifndef ASM__X86__SHSTK_H
+#define ASM__X86__SHSTK_H
 
 /*
  * RDSSP is a nop when shadow stacks are inactive.  Also, SSP has a minimum
@@ -31,4 +31,4 @@ static inline void wrss(unsigned long val, unsigned long *ptr)
           : [val] "r" (val) );
 }
 
-#endif /* XEN_ASM_SHSTK_H */
+#endif /* ASM__X86__SHSTK_H */
diff --git a/xen/arch/x86/include/asm/smp.h b/xen/arch/x86/include/asm/smp.h
index c8c7960134..90c17d1a2b 100644
--- a/xen/arch/x86/include/asm/smp.h
+++ b/xen/arch/x86/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__X86__SMP_H
+#define ASM__X86__SMP_H
 
 /*
  * We need the APIC definitions automatically as part of 'smp.h'
diff --git a/xen/arch/x86/include/asm/softirq.h b/xen/arch/x86/include/asm/softirq.h
index 415ee866c7..796ee09586 100644
--- a/xen/arch/x86/include/asm/softirq.h
+++ b/xen/arch/x86/include/asm/softirq.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SOFTIRQ_H__
-#define __ASM_SOFTIRQ_H__
+#ifndef ASM__X86__SOFTIRQ_H
+#define ASM__X86__SOFTIRQ_H
 
 #define NMI_SOFTIRQ            (NR_COMMON_SOFTIRQS + 0)
 #define TIME_CALIBRATE_SOFTIRQ (NR_COMMON_SOFTIRQS + 1)
@@ -11,4 +11,4 @@
 
 bool arch_skip_send_event_check(unsigned int cpu);
 
-#endif /* __ASM_SOFTIRQ_H__ */
+#endif /* ASM__X86__SOFTIRQ_H */
diff --git a/xen/arch/x86/include/asm/spec_ctrl.h b/xen/arch/x86/include/asm/spec_ctrl.h
index 72347ef2b9..472c0a3e94 100644
--- a/xen/arch/x86/include/asm/spec_ctrl.h
+++ b/xen/arch/x86/include/asm/spec_ctrl.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017-2018 Citrix Systems Ltd.
  */
 
-#ifndef __X86_SPEC_CTRL_H__
-#define __X86_SPEC_CTRL_H__
+#ifndef ASM__X86__SPEC_CTRL_H
+#define ASM__X86__SPEC_CTRL_H
 
 /*
  * Encoding of Xen's speculation control flags in:
@@ -196,7 +196,7 @@ static always_inline void spec_ctrl_exit_idle(struct cpu_info *info)
 }
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_SPEC_CTRL_H__ */
+#endif /* !ASM__X86__SPEC_CTRL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/spec_ctrl_asm.h b/xen/arch/x86/include/asm/spec_ctrl_asm.h
index 729a830411..5c6f0e1ec6 100644
--- a/xen/arch/x86/include/asm/spec_ctrl_asm.h
+++ b/xen/arch/x86/include/asm/spec_ctrl_asm.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017-2018 Citrix Systems Ltd.
  */
 
-#ifndef __X86_SPEC_CTRL_ASM_H__
-#define __X86_SPEC_CTRL_ASM_H__
+#ifndef ASM__X86__SPEC_CTRL_ASM_H
+#define ASM__X86__SPEC_CTRL_ASM_H
 
 #ifdef __ASSEMBLY__
 #include <asm/msr-index.h>
@@ -501,7 +501,7 @@
 .endm
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_SPEC_CTRL_ASM_H__ */
+#endif /* !ASM__X86__SPEC_CTRL_ASM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/spinlock.h b/xen/arch/x86/include/asm/spinlock.h
index 56f6095752..11bec91e7f 100644
--- a/xen/arch/x86/include/asm/spinlock.h
+++ b/xen/arch/x86/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__X86__SPINLOCK_H
+#define ASM__X86__SPINLOCK_H
 
 #define _raw_read_unlock(l) \
     BUILD_BUG_ON(sizeof((l)->lock) != 4); /* Clang doesn't support %z in asm. */ \
@@ -24,4 +24,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__X86__SPINLOCK_H */
diff --git a/xen/arch/x86/include/asm/string.h b/xen/arch/x86/include/asm/string.h
index f08d95096e..c0a469ff48 100644
--- a/xen/arch/x86/include/asm/string.h
+++ b/xen/arch/x86/include/asm/string.h
@@ -1,7 +1,7 @@
-#ifndef __X86_STRING_H__
-#define __X86_STRING_H__
+#ifndef ASM__X86__STRING_H
+#define ASM__X86__STRING_H
 
-#endif /* __X86_STRING_H__ */
+#endif /* ASM__X86__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/system.h b/xen/arch/x86/include/asm/system.h
index 73cb16ca68..f347e2664e 100644
--- a/xen/arch/x86/include/asm/system.h
+++ b/xen/arch/x86/include/asm/system.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SYSTEM_H
-#define __ASM_SYSTEM_H
+#ifndef ASM__X86__SYSTEM_H
+#define ASM__X86__SYSTEM_H
 
 #include <xen/bitops.h>
 #include <xen/bug.h>
diff --git a/xen/arch/x86/include/asm/time.h b/xen/arch/x86/include/asm/time.h
index 3dfbb5297a..5452da7c62 100644
--- a/xen/arch/x86/include/asm/time.h
+++ b/xen/arch/x86/include/asm/time.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_TIME_H__
-#define __X86_TIME_H__
+#ifndef ASM__X86__TIME_H
+#define ASM__X86__TIME_H
 
 #include <asm/msr.h>
 
@@ -92,4 +92,4 @@ u64 scale_delta(u64 delta, const struct time_scale *scale);
 #define PIT_STATUS_NULL_COUNT (1 << 6)
 /* Lower bits match Timer Control Word. */
 
-#endif /* __X86_TIME_H__ */
+#endif /* ASM__X86__TIME_H */
diff --git a/xen/arch/x86/include/asm/trampoline.h b/xen/arch/x86/include/asm/trampoline.h
index 57a1f85a53..a9bbfeedf7 100644
--- a/xen/arch/x86/include/asm/trampoline.h
+++ b/xen/arch/x86/include/asm/trampoline.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef X86_ASM_TRAMPOLINE_H
-#define X86_ASM_TRAMPOLINE_H
+#ifndef ASM__X86__TRAMPOLINE_H
+#define ASM__X86__TRAMPOLINE_H
 
 /*
  * Data in or about the low memory trampoline.
@@ -92,4 +92,4 @@ extern uint8_t video_flags;
 extern uint16_t boot_edid_caps;
 extern uint8_t boot_edid_info[128];
 
-#endif /* X86_ASM_TRAMPOLINE_H */
+#endif /* ASM__X86__TRAMPOLINE_H */
diff --git a/xen/arch/x86/include/asm/traps.h b/xen/arch/x86/include/asm/traps.h
index 01ef362edc..92348b201c 100644
--- a/xen/arch/x86/include/asm/traps.h
+++ b/xen/arch/x86/include/asm/traps.h
@@ -4,12 +4,12 @@
  * Author: Christoph Egger <Christoph.Egger@amd.com>
  */
 
-#ifndef ASM_TRAP_H
-#define ASM_TRAP_H
+#ifndef ASM__X86__TRAPS_H
+#define ASM__X86__TRAPS_H
 
 const char *vector_name(unsigned int vec);
 
-#endif /* ASM_TRAP_H */
+#endif /* ASM__X86__TRAPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/types.h b/xen/arch/x86/include/asm/types.h
index 4cbbc8eaa6..99f3388218 100644
--- a/xen/arch/x86/include/asm/types.h
+++ b/xen/arch/x86/include/asm/types.h
@@ -1,8 +1,8 @@
-#ifndef __X86_TYPES_H__
-#define __X86_TYPES_H__
+#ifndef ASM__X86__TYPES_H
+#define ASM__X86__TYPES_H
 
 typedef unsigned long paddr_t;
 #define INVALID_PADDR (~0UL)
 #define PRIpaddr "016lx"
 
-#endif /* __X86_TYPES_H__ */
+#endif /* ASM__X86__TYPES_H */
diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h
index 2d01669b96..d47a81a36b 100644
--- a/xen/arch/x86/include/asm/uaccess.h
+++ b/xen/arch/x86/include/asm/uaccess.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_UACCESS_H__
-#define __X86_UACCESS_H__
+#ifndef ASM__X86__UACCESS_H
+#define ASM__X86__UACCESS_H
 
 #include <xen/compiler.h>
 #include <xen/errno.h>
@@ -427,4 +427,4 @@ extern void sort_exception_tables(void);
 extern void sort_exception_table(struct exception_table_entry *start,
                                  const struct exception_table_entry *stop);
 
-#endif /* __X86_UACCESS_H__ */
+#endif /* ASM__X86__UACCESS_H */
diff --git a/xen/arch/x86/include/asm/vpmu.h b/xen/arch/x86/include/asm/vpmu.h
index dae9b43dac..cb5f2b3b17 100644
--- a/xen/arch/x86/include/asm/vpmu.h
+++ b/xen/arch/x86/include/asm/vpmu.h
@@ -7,8 +7,8 @@
  * Author: Haitao Shan <haitao.shan@intel.com>
  */
 
-#ifndef __ASM_X86_HVM_VPMU_H_
-#define __ASM_X86_HVM_VPMU_H_
+#ifndef ASM__X86__VPMU_H
+#define ASM__X86__VPMU_H
 
 #include <public/pmu.h>
 
@@ -142,5 +142,5 @@ static inline int vpmu_allocate_context(struct vcpu *v)
 }
 #endif
 
-#endif /* __ASM_X86_HVM_VPMU_H_*/
+#endif /* ASM__X86__VPMU_H*/
 
diff --git a/xen/arch/x86/include/asm/x86-defns.h b/xen/arch/x86/include/asm/x86-defns.h
index 7abc5bcd42..a2f3e5ebe7 100644
--- a/xen/arch/x86/include/asm/x86-defns.h
+++ b/xen/arch/x86/include/asm/x86-defns.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_DEFNS_H__
-#define __XEN_X86_DEFNS_H__
+#ifndef ASM__X86__X86_DEFNS_H
+#define ASM__X86__X86_DEFNS_H
 
 /*
  * EFLAGS bits
@@ -204,4 +204,4 @@
 #define X86_MT_UCM    0x07 /* UC- */
 #define X86_NUM_MT    0x08
 
-#endif	/* __XEN_X86_DEFNS_H__ */
+#endif	/* ASM__X86__X86_DEFNS_H */
diff --git a/xen/arch/x86/include/asm/x86-vendors.h b/xen/arch/x86/include/asm/x86-vendors.h
index d51c516909..eb69dab2fc 100644
--- a/xen/arch/x86/include/asm/x86-vendors.h
+++ b/xen/arch/x86/include/asm/x86-vendors.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_VENDORS_H__
-#define __XEN_X86_VENDORS_H__
+#ifndef ASM__X86__X86_VENDORS_H
+#define ASM__X86__X86_VENDORS_H
 
 /*
  * CPU vendor IDs
@@ -36,4 +36,4 @@
 #define X86_VENDOR_HYGON_ECX _AC(0x656e6975, U)
 #define X86_VENDOR_HYGON_EDX _AC(0x6e65476e, U)
 
-#endif	/* __XEN_X86_VENDORS_H__ */
+#endif	/* ASM__X86__X86_VENDORS_H */
diff --git a/xen/arch/x86/include/asm/x86_64/elf.h b/xen/arch/x86/include/asm/x86_64/elf.h
index 00227e0e12..7842e4c997 100644
--- a/xen/arch/x86/include/asm/x86_64/elf.h
+++ b/xen/arch/x86/include/asm/x86_64/elf.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_ELF_H__
-#define __X86_64_ELF_H__
+#ifndef ASM__X86__X86_64__ELF_H
+#define ASM__X86__X86_64__ELF_H
 
 #include <asm/msr.h>
 #include <asm/regs.h>
@@ -72,7 +72,7 @@ static inline void elf_core_save_regs(ELF_Gregset *core_regs,
     asm ( "mov %%cr4, %0" : "=r" (xen_core_regs->cr4) );
 }
 
-#endif /* __X86_64_ELF_H__ */
+#endif /* ASM__X86__X86_64__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/x86_64/page.h b/xen/arch/x86/include/asm/x86_64/page.h
index 201b79f99e..797bc698f3 100644
--- a/xen/arch/x86/include/asm/x86_64/page.h
+++ b/xen/arch/x86/include/asm/x86_64/page.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_64_PAGE_H__
-#define __X86_64_PAGE_H__
+#ifndef ASM__X86__X86_64__PAGE_H
+#define ASM__X86__X86_64__PAGE_H
 
 #define __XEN_VIRT_START        XEN_VIRT_START
 
@@ -153,7 +153,7 @@ static inline intpte_t put_pte_flags(unsigned int x)
 #define PAGE_HYPERVISOR_WT      (__PAGE_HYPERVISOR_WT | \
                                  _PAGE_GLOBAL | _PAGE_NX)
 
-#endif /* __X86_64_PAGE_H__ */
+#endif /* ASM__X86__X86_64__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/x86_64/regs.h b/xen/arch/x86/include/asm/x86_64/regs.h
index 171cf9a2e2..55a309cf24 100644
--- a/xen/arch/x86/include/asm/x86_64/regs.h
+++ b/xen/arch/x86/include/asm/x86_64/regs.h
@@ -1,5 +1,5 @@
-#ifndef _X86_64_REGS_H
-#define _X86_64_REGS_H
+#ifndef ASM__X86__X86_64__REGS_H
+#define ASM__X86__X86_64__REGS_H
 
 #include <xen/types.h>
 #include <public/xen.h>
diff --git a/xen/arch/x86/include/asm/x86_64/system.h b/xen/arch/x86/include/asm/x86_64/system.h
index e94371cf20..2bb71615fe 100644
--- a/xen/arch/x86/include/asm/x86_64/system.h
+++ b/xen/arch/x86/include/asm/x86_64/system.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_SYSTEM_H__
-#define __X86_64_SYSTEM_H__
+#ifndef ASM__X86__X86_64__SYSTEM_H
+#define ASM__X86__X86_64__SYSTEM_H
 
 #define cmpxchg(ptr,o,n)                                                \
     ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),            \
@@ -59,4 +59,4 @@ static always_inline __uint128_t cmpxchg16b_local_(
     __cmpxchg16b(_p, (void *)(o), (void *)(n));            \
 })
 
-#endif /* __X86_64_SYSTEM_H__ */
+#endif /* ASM__X86__X86_64__SYSTEM_H */
diff --git a/xen/arch/x86/include/asm/x86_64/uaccess.h b/xen/arch/x86/include/asm/x86_64/uaccess.h
index c6fa3fd381..e775af5487 100644
--- a/xen/arch/x86/include/asm/x86_64/uaccess.h
+++ b/xen/arch/x86/include/asm/x86_64/uaccess.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_UACCESS_H
-#define __X86_64_UACCESS_H
+#ifndef ASM__X86__X86_64__UACCESS_H
+#define ASM__X86__X86_64__UACCESS_H
 
 /*
  * With CONFIG_SPECULATIVE_HARDEN_GUEST_ACCESS (apparent) PV guest accesses
@@ -68,4 +68,4 @@ extern void *xlat_malloc(unsigned long *xlat_page_current, size_t size);
     (likely((count) < (~0U / (size))) && \
      compat_access_ok(addr, 0 + (count) * (size)))
 
-#endif /* __X86_64_UACCESS_H */
+#endif /* ASM__X86__X86_64__UACCESS_H */
diff --git a/xen/arch/x86/include/asm/x86_emulate.h b/xen/arch/x86/include/asm/x86_emulate.h
index 2b75f7f8e2..95aba22819 100644
--- a/xen/arch/x86/include/asm/x86_emulate.h
+++ b/xen/arch/x86/include/asm/x86_emulate.h
@@ -9,8 +9,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __ASM_X86_X86_EMULATE_H__
-#define __ASM_X86_X86_EMULATE_H__
+#ifndef ASM__X86__X86_EMULATE_H
+#define ASM__X86__X86_EMULATE_H
 
 #include <xen/types.h>
 #include <xen/lib.h>
@@ -19,4 +19,4 @@
 
 #include "../../x86_emulate/x86_emulate.h"
 
-#endif /* __ASM_X86_X86_EMULATE_H__ */
+#endif /* ASM__X86__X86_EMULATE_H */
diff --git a/xen/arch/x86/include/asm/xenoprof.h b/xen/arch/x86/include/asm/xenoprof.h
index dc6f822d32..8d729a0397 100644
--- a/xen/arch/x86/include/asm/xenoprof.h
+++ b/xen/arch/x86/include/asm/xenoprof.h
@@ -7,8 +7,8 @@
  *                    VA Linux Systems Japan K.K.
  */
 
-#ifndef __ASM_X86_XENOPROF_H__
-#define __ASM_X86_XENOPROF_H__
+#ifndef ASM__X86__XENOPROF_H
+#define ASM__X86__XENOPROF_H
 
 struct vcpu;
 
@@ -82,7 +82,7 @@ static inline bool nmi_oprofile_send_virq(void)
 
 #endif /* CONFIG_XENOPROF */
 
-#endif /* __ASM_X86_XENOPROF_H__ */
+#endif /* ASM__X86__XENOPROF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index b4ee555953..b673412e71 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -5,8 +5,8 @@
  * 
  */
 
-#ifndef __ASM_XSTATE_H
-#define __ASM_XSTATE_H
+#ifndef ASM__X86__XSTATE_H
+#define ASM__X86__XSTATE_H
 
 #include <xen/sched.h>
 #include <asm/cpufeature.h>
@@ -142,4 +142,4 @@ static inline bool xstate_all(const struct vcpu *v)
            (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
 }
 
-#endif /* __ASM_XSTATE_H */
+#endif /* ASM__X86__XSTATE_H */
diff --git a/xen/arch/x86/mm/hap/private.h b/xen/arch/x86/mm/hap/private.h
index 7eb672fa41..a85d390f56 100644
--- a/xen/arch/x86/mm/hap/private.h
+++ b/xen/arch/x86/mm/hap/private.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2007, AMD Corporation (Wei Huang)
  *
  */
-#ifndef __HAP_PRIVATE_H__
-#define __HAP_PRIVATE_H__
+#ifndef X86__MM__HAP__PRIVATE_H
+#define X86__MM__HAP__PRIVATE_H
 
 #include "../mm-locks.h"
 
@@ -30,4 +30,4 @@ unsigned long cf_check hap_p2m_ga_to_gfn_4_levels(
     struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3,
     paddr_t ga, uint32_t *pfec, unsigned int *page_order);
 
-#endif /* __HAP_PRIVATE_H__ */
+#endif /* X86__MM__HAP__PRIVATE_H */
diff --git a/xen/arch/x86/mm/mm-locks.h b/xen/arch/x86/mm/mm-locks.h
index a695a28324..e676c19b87 100644
--- a/xen/arch/x86/mm/mm-locks.h
+++ b/xen/arch/x86/mm/mm-locks.h
@@ -10,8 +10,8 @@
  * Copyright (c) 2006 Michael A Fetterman
  */
 
-#ifndef _MM_LOCKS_H
-#define _MM_LOCKS_H
+#ifndef X86__MM__MM_LOCKS_H
+#define X86__MM__MM_LOCKS_H
 
 /* Per-CPU variable for enforcing the lock ordering */
 DECLARE_PER_CPU(int, mm_lock_level);
@@ -394,4 +394,4 @@ declare_mm_lock(paging)
 #define paging_unlock(d)       mm_unlock(&(d)->arch.paging.lock)
 #define paging_locked_by_me(d) mm_locked_by_me(&(d)->arch.paging.lock)
 
-#endif /* _MM_LOCKS_H */
+#endif /* X86__MM__MM_LOCKS_H */
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 635f5a7f45..6815367c10 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -3,8 +3,8 @@
  * arch/x86/mm/p2m.h
  */
 
-#ifndef __ARCH_MM_P2M_H__
-#define __ARCH_MM_P2M_H__
+#ifndef X86__MM__P2M_H
+#define X86__MM__P2M_H
 
 struct p2m_domain *p2m_init_one(struct domain *d);
 void p2m_free_one(struct p2m_domain *p2m);
@@ -33,7 +33,7 @@ int ept_p2m_init(struct p2m_domain *p2m);
 void ept_p2m_uninit(struct p2m_domain *p2m);
 void p2m_init_altp2m_ept(struct domain *d, unsigned int i);
 
-#endif /* __ARCH_MM_P2M_H__ */
+#endif /* X86__MM__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index a5fc3a7676..f6156eceb7 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -8,8 +8,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_SHADOW_PRIVATE_H
-#define _XEN_SHADOW_PRIVATE_H
+#ifndef X86__MM__SHADOW__PRIVATE_H
+#define X86__MM__SHADOW__PRIVATE_H
 
 // In order to override the definition of mfn_to_page, we make sure page.h has
 // been included...
@@ -912,7 +912,7 @@ static inline int sh_check_page_has_no_refs(struct page_info *page)
 /* Flush the TLB of the selected vCPUs. */
 bool cf_check shadow_flush_tlb(const unsigned long *vcpu_bitmap);
 
-#endif /* _XEN_SHADOW_PRIVATE_H */
+#endif /* X86__MM__SHADOW__PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/mm/shadow/types.h b/xen/arch/x86/mm/shadow/types.h
index d700d8d64c..ade4e6601d 100644
--- a/xen/arch/x86/mm/shadow/types.h
+++ b/xen/arch/x86/mm/shadow/types.h
@@ -7,8 +7,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_SHADOW_TYPES_H
-#define _XEN_SHADOW_TYPES_H
+#ifndef X86__MM__SHADOW__TYPES_H
+#define X86__MM__SHADOW__TYPES_H
 
 /* The number of levels in the shadow pagetable is entirely determined
  * by the number of levels in the guest pagetable */
@@ -377,7 +377,7 @@ static inline uint32_t sh_l1e_mmio_get_flags(shadow_l1e_t sl1e)
 #endif /* SHOPT_FAST_FAULT_PATH */
 
 
-#endif /* _XEN_SHADOW_TYPES_H */
+#endif /* X86__MM__SHADOW__TYPES_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/oprofile/op_counter.h b/xen/arch/x86/oprofile/op_counter.h
index b515ac9ebc..b2ad0fb108 100644
--- a/xen/arch/x86/oprofile/op_counter.h
+++ b/xen/arch/x86/oprofile/op_counter.h
@@ -7,8 +7,8 @@
  * @author John Levon
  */
  
-#ifndef OP_COUNTER_H
-#define OP_COUNTER_H
+#ifndef X86__OPROFILE__OP_COUNTER_H
+#define X86__OPROFILE__OP_COUNTER_H
  
 #define OP_MAX_COUNTER 8
  
@@ -38,4 +38,4 @@ struct op_ibs_config {
 
 extern struct op_ibs_config ibs_config;
 
-#endif /* OP_COUNTER_H */
+#endif /* X86__OPROFILE__OP_COUNTER_H */
diff --git a/xen/arch/x86/oprofile/op_x86_model.h b/xen/arch/x86/oprofile/op_x86_model.h
index 35bc3c1e22..92253da6a5 100644
--- a/xen/arch/x86/oprofile/op_x86_model.h
+++ b/xen/arch/x86/oprofile/op_x86_model.h
@@ -8,8 +8,8 @@
  * @author Graydon Hoare
  */
 
-#ifndef OP_X86_MODEL_H
-#define OP_X86_MODEL_H
+#ifndef X86__OPROFILE__OP_X86_MODEL_H
+#define X86__OPROFILE__OP_X86_MODEL_H
 
 struct op_msr {
 	unsigned long addr;
@@ -55,4 +55,4 @@ void arch_perfmon_setup_counters(void);
 extern int ppro_has_global_ctrl;
 extern struct op_x86_model_spec const *model;
 
-#endif /* OP_X86_MODEL_H */
+#endif /* X86__OPROFILE__OP_X86_MODEL_H */
diff --git a/xen/arch/x86/pv/emulate.h b/xen/arch/x86/pv/emulate.h
index 49a4d34832..7eef71758e 100644
--- a/xen/arch/x86/pv/emulate.h
+++ b/xen/arch/x86/pv/emulate.h
@@ -1,5 +1,5 @@
-#ifndef __PV_EMULATE_H__
-#define __PV_EMULATE_H__
+#ifndef X86__PV__EMULATE_H
+#define X86__PV__EMULATE_H
 
 #include <xen/sched.h>
 
@@ -22,4 +22,4 @@ static inline const seg_desc_t *gdt_ldt_desc_ptr(unsigned int sel)
     return &tbl[sel >> 3];
 }
 
-#endif /* __PV_EMULATE_H__ */
+#endif /* X86__PV__EMULATE_H */
diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h
index 4564cab9fc..49a10b2878 100644
--- a/xen/arch/x86/pv/mm.h
+++ b/xen/arch/x86/pv/mm.h
@@ -1,5 +1,5 @@
-#ifndef __PV_MM_H__
-#define __PV_MM_H__
+#ifndef X86__PV__MM_H
+#define X86__PV__MM_H
 
 #include <asm/shadow.h>
 
@@ -181,4 +181,4 @@ static always_inline l4_pgentry_t adjust_guest_l4e(l4_pgentry_t l4e,
     return l4e;
 }
 
-#endif /* __PV_MM_H__ */
+#endif /* X86__PV__MM_H */
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emulate/x86_emulate.h
index 3e819d4174..d52ac28307 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.h
+++ b/xen/arch/x86/x86_emulate/x86_emulate.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2005-2007 XenSource Inc.
  */
 
-#ifndef __X86_EMULATE_H__
-#define __X86_EMULATE_H__
+#ifndef X86__X86_EMULATE__X86_EMULATE_H
+#define X86__X86_EMULATE__X86_EMULATE_H
 
 #include <xen/lib/x86/cpu-policy.h>
 
@@ -846,4 +846,4 @@ static inline void x86_emul_reset_event(struct x86_emulate_ctxt *ctxt)
     ctxt->event = (struct x86_event){};
 }
 
-#endif /* __X86_EMULATE_H__ */
+#endif /* X86__X86_EMULATE__X86_EMULATE_H */
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 8fa3fb711a..7138a3e2e6 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -30,15 +30,15 @@
  * Includer has not provided a custom XEN_CPUFEATURE().  Arrange for normal
  * header guards, an enum and constants in the XEN_X86_FEATURE_xxx namespace.
  */
-#ifndef __XEN_PUBLIC_ARCH_X86_CPUFEATURESET_H__
-#define __XEN_PUBLIC_ARCH_X86_CPUFEATURESET_H__
+#ifndef PUBLIC__ARCH_X86__CPUFEATURESET_H
+#define PUBLIC__ARCH_X86__CPUFEATURESET_H
 
 #define XEN_CPUFEATURESET_DEFAULT_INCLUDE
 
 #define XEN_CPUFEATURE(name, value) XEN_X86_FEATURE_##name = value,
 enum {
 
-#endif /* __XEN_PUBLIC_ARCH_X86_CPUFEATURESET_H__ */
+#endif /* PUBLIC__ARCH_X86__CPUFEATURESET_H */
 #endif /* !XEN_CPUFEATURE */
 
 
diff --git a/xen/include/public/arch-x86/cpuid.h b/xen/include/public/arch-x86/cpuid.h
index 3bb0dd249f..81648850fa 100644
--- a/xen/include/public/arch-x86/cpuid.h
+++ b/xen/include/public/arch-x86/cpuid.h
@@ -10,8 +10,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_CPUID_H__
-#define __XEN_PUBLIC_ARCH_X86_CPUID_H__
+#ifndef PUBLIC__ARCH_X86__CPUID_H
+#define PUBLIC__ARCH_X86__CPUID_H
 
 /*
  * For compatibility with other hypervisor interfaces, the Xen cpuid leaves
@@ -119,4 +119,4 @@
 
 #define XEN_CPUID_MAX_NUM_LEAVES 5
 
-#endif /* __XEN_PUBLIC_ARCH_X86_CPUID_H__ */
+#endif /* PUBLIC__ARCH_X86__CPUID_H */
diff --git a/xen/include/public/arch-x86/guest-acpi.h b/xen/include/public/arch-x86/guest-acpi.h
index de40259b6a..d5326b3227 100644
--- a/xen/include/public/arch-x86/guest-acpi.h
+++ b/xen/include/public/arch-x86/guest-acpi.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_GUEST_ACPI_H__
-#define __XEN_PUBLIC_ARCH_X86_GUEST_ACPI_H__
+#ifndef PUBLIC__ARCH_X86__GUEST_ACPI_H
+#define PUBLIC__ARCH_X86__GUEST_ACPI_H
 
 #ifdef __XEN_TOOLS__
 
@@ -20,7 +20,7 @@
 
 #endif /* __XEN_TOOLS__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_GUEST_ACPI_H__ */
+#endif /* PUBLIC__ARCH_X86__GUEST_ACPI_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/public/arch-x86/hvm/save.h
index 7ecacadde1..9763dadbb6 100644
--- a/xen/include/public/arch-x86/hvm/save.h
+++ b/xen/include/public/arch-x86/hvm/save.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2007 XenSource Ltd.
  */
 
-#ifndef __XEN_PUBLIC_HVM_SAVE_X86_H__
-#define __XEN_PUBLIC_HVM_SAVE_X86_H__
+#ifndef PUBLIC__ARCH_X86__HVM__SAVE_H
+#define PUBLIC__ARCH_X86__HVM__SAVE_H
 
 #include "../../xen.h"
 
@@ -631,7 +631,7 @@ struct hvm_msr {
  */
 #define HVM_SAVE_CODE_MAX 20
 
-#endif /* __XEN_PUBLIC_HVM_SAVE_X86_H__ */
+#endif /* PUBLIC__ARCH_X86__HVM__SAVE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/hvm/start_info.h b/xen/include/public/arch-x86/hvm/start_info.h
index e33557c0b4..ce5486e8a1 100644
--- a/xen/include/public/arch-x86/hvm/start_info.h
+++ b/xen/include/public/arch-x86/hvm/start_info.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2016, Citrix Systems, Inc.
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_HVM_START_INFO_H__
-#define __XEN_PUBLIC_ARCH_X86_HVM_START_INFO_H__
+#ifndef PUBLIC__ARCH_X86__HVM__START_INFO_H
+#define PUBLIC__ARCH_X86__HVM__START_INFO_H
 
 /*
  * Start of day structure passed to PVH guests and to HVM guests in %ebx.
@@ -139,4 +139,4 @@ struct hvm_memmap_table_entry {
     uint32_t reserved;          /* Must be zero for Version 1.               */
 };
 
-#endif /* __XEN_PUBLIC_ARCH_X86_HVM_START_INFO_H__ */
+#endif /* PUBLIC__ARCH_X86__HVM__START_INFO_H */
diff --git a/xen/include/public/arch-x86/pmu.h b/xen/include/public/arch-x86/pmu.h
index d0a99268af..4eaab67725 100644
--- a/xen/include/public/arch-x86/pmu.h
+++ b/xen/include/public/arch-x86/pmu.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_PMU_H__
-#define __XEN_PUBLIC_ARCH_X86_PMU_H__
+#ifndef PUBLIC__ARCH_X86__PMU_H
+#define PUBLIC__ARCH_X86__PMU_H
 
 /* x86-specific PMU definitions */
 
@@ -129,7 +129,7 @@ struct xen_pmu_arch {
 typedef struct xen_pmu_arch xen_pmu_arch_t;
 DEFINE_XEN_GUEST_HANDLE(xen_pmu_arch_t);
 
-#endif /* __XEN_PUBLIC_ARCH_X86_PMU_H__ */
+#endif /* PUBLIC__ARCH_X86__PMU_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/public/arch-x86/xen-mca.h b/xen/include/public/arch-x86/xen-mca.h
index bb1b12f14f..fc1c27fa7d 100644
--- a/xen/include/public/arch-x86/xen-mca.h
+++ b/xen/include/public/arch-x86/xen-mca.h
@@ -33,8 +33,8 @@
  *     and tell Xen to trigger a machine check
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_MCA_H__
-#define __XEN_PUBLIC_ARCH_X86_MCA_H__
+#ifndef PUBLIC__ARCH_X86__XEN_MCA_H
+#define PUBLIC__ARCH_X86__XEN_MCA_H
 
 /* Hypercall */
 #define __HYPERVISOR_mca __HYPERVISOR_arch_0
@@ -435,4 +435,4 @@ DEFINE_XEN_GUEST_HANDLE(xen_mc_t);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_MCA_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_MCA_H */
diff --git a/xen/include/public/arch-x86/xen-x86_32.h b/xen/include/public/arch-x86/xen-x86_32.h
index 9e3bf06b12..e6ee09f4f2 100644
--- a/xen/include/public/arch-x86/xen-x86_32.h
+++ b/xen/include/public/arch-x86/xen-x86_32.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004-2007, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_XEN_X86_32_H__
-#define __XEN_PUBLIC_ARCH_X86_XEN_X86_32_H__
+#ifndef PUBLIC__ARCH_X86__XEN_X86_32_H
+#define PUBLIC__ARCH_X86__XEN_X86_32_H
 
 /*
  * Hypercall interface:
@@ -164,7 +164,7 @@ typedef struct xen_callback xen_callback_t;
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_XEN_X86_32_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_X86_32_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/xen-x86_64.h b/xen/include/public/arch-x86/xen-x86_64.h
index 43f6e3d220..f33ca35f26 100644
--- a/xen/include/public/arch-x86/xen-x86_64.h
+++ b/xen/include/public/arch-x86/xen-x86_64.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004-2006, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_XEN_X86_64_H__
-#define __XEN_PUBLIC_ARCH_X86_XEN_X86_64_H__
+#ifndef PUBLIC__ARCH_X86__XEN_X86_64_H
+#define PUBLIC__ARCH_X86__XEN_X86_64_H
 
 /*
  * Hypercall interface:
@@ -211,7 +211,7 @@ typedef unsigned long xen_callback_t;
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_XEN_X86_64_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_X86_64_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/xen.h b/xen/include/public/arch-x86/xen.h
index fc24879866..4a48057e5c 100644
--- a/xen/include/public/arch-x86/xen.h
+++ b/xen/include/public/arch-x86/xen.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004-2006, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_XEN_H__
-#define __XEN_PUBLIC_ARCH_X86_XEN_H__
+#ifndef PUBLIC__ARCH_X86__XEN_H
+#define PUBLIC__ARCH_X86__XEN_H
 
 /* Structural guest handles introduced in 0x00030201. */
 #if __XEN_INTERFACE_VERSION__ >= 0x00030201
@@ -363,7 +363,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_msr_entry_t);
  */
 #define XEN_HVM_DEBUGCONS_IOPORT 0xe9
 
-#endif /* __XEN_PUBLIC_ARCH_X86_XEN_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index f43e1a3b21..cef116d8cb 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -1,6 +1,6 @@
 /* Common data structures and functions consumed by hypervisor and toolstack */
-#ifndef XEN_LIB_X86_POLICIES_H
-#define XEN_LIB_X86_POLICIES_H
+#ifndef XEN__LIB__X86__CPU_POLICY_H
+#define XEN__LIB__X86__CPU_POLICY_H
 
 #include <xen/lib/x86/cpuid-autogen.h>
 
@@ -542,7 +542,7 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err);
 
-#endif /* !XEN_LIB_X86_POLICIES_H */
+#endif /* !XEN__LIB__X86__CPU_POLICY_H */
 
 /*
  * Local variables:
diff --git a/xen/lib/x86/private.h b/xen/lib/x86/private.h
index 60bb82a400..bd55647d68 100644
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -1,5 +1,5 @@
-#ifndef XEN_LIB_X86_PRIVATE_H
-#define XEN_LIB_X86_PRIVATE_H
+#ifndef LIB__X86__PRIVATE_H
+#define LIB__X86__PRIVATE_H
 
 #ifdef __XEN__
 
@@ -65,7 +65,7 @@ static inline bool test_bit(unsigned int bit, const void *vaddr)
 
 #endif /* __XEN__ */
 
-#endif /* XEN_LIB_X86_PRIVATE_H */
+#endif /* LIB__X86__PRIVATE_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809328.1221602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnp-0004qc-J1; Thu, 03 Oct 2024 12:19:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809328.1221602; Thu, 03 Oct 2024 12: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 1swKnp-0004nv-DO; Thu, 03 Oct 2024 12:19:29 +0000
Received: by outflank-mailman (input) for mailman id 809328;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnn-00043W-VY
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:27 +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 bb68b45a-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:26 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8b155b5e9eso125044466b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:26 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb68b45a-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957966; x=1728562766; 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=a/7R4MvznIwbKLMj3J7Q74kL2tb8WLc8B3HYmuuXkgk=;
        b=Flnn1TyrI3hhS+KhzbqKz4Qn1EyYONsMDIHp8evhEWnM9nZQgRqKIs8LxXUGwmmhJH
         sD7rZYg1Zm3YNMlI1UtaMxguhUf10UbZZwLF/mPV/M6BIkb9JhOvwIlXKu80YzH5C8Gz
         qUo/jOj3wbO+sbDn0cbefM29mApz9JIrAumYg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957966; x=1728562766;
        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=a/7R4MvznIwbKLMj3J7Q74kL2tb8WLc8B3HYmuuXkgk=;
        b=mSHy1XWlMbmpKK0ZW2e0SFJcOCQbuiR1HpqbKNZ+qTB95/oU6QwxaaBKBIuEgFsDv9
         r1qem/fRO4EAv754FUFOWvvwfiKMxItdef7EkZS7jSUoiA7MmsvHH19jXMElbIcbR6MJ
         /bWsQc19MyLxa7i+VTne5XXae46zQR6LNZPXzRE54iXyqLMlush7gYYwGQdXONqa6nO1
         VVoQI/6ND/SZqHw++MbXe3vx3WYChF4YwyjP4f01bqWXsYn4wNns3VbIDD7pwhX+ZuDQ
         FYHuskx1NOYbiCE8iW2f+cy889+YJWOXOfrxtaw0g0JIDjYz/nIwWvx9YKk2dkPkoPtR
         09mQ==
X-Gm-Message-State: AOJu0YyaVb+//n8HvAgwwbs8hWS4zPBXw3ZQoPDyrkd5aKKK0VNU2NgB
	DCr8wWXQIDGaQVoU5AeFyQlilSoz2VgMm0Z+3soDOjOdWqd5/vvohvPtxmA/dqDXn1iJbwnl1X9
	C
X-Google-Smtp-Source: AGHT+IHR+xjcdswutJxhH7ycnq1/Y6O6R6s5OwZ8J5FmdDQRCTBdoO5aN99nxH33M+RpK3skXjGLkQ==
X-Received: by 2002:a17:907:7ea7:b0:a8d:fa3:bb24 with SMTP id a640c23a62f3a-a98f823cc05mr516443466b.23.1727957965883;
        Thu, 03 Oct 2024 05:19:25 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH 06/20] xen: Update header guards - Device tree
Date: Thu,  3 Oct 2024 13:18:54 +0100
Message-Id: <20241003121908.362888-7-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to device tree.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/common/libfdt/libfdt_internal.h | 6 +++---
 xen/include/xen/bootfdt.h           | 6 +++---
 xen/include/xen/device_tree.h       | 4 ++--
 xen/include/xen/libfdt/fdt.h        | 6 +++---
 xen/include/xen/libfdt/libfdt-xen.h | 6 +++---
 xen/include/xen/libfdt/libfdt.h     | 6 +++---
 xen/include/xen/libfdt/libfdt_env.h | 6 +++---
 7 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/xen/common/libfdt/libfdt_internal.h b/xen/common/libfdt/libfdt_internal.h
index 16bda1906a..ba4d6527b0 100644
--- a/xen/common/libfdt/libfdt_internal.h
+++ b/xen/common/libfdt/libfdt_internal.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_INTERNAL_H
-#define LIBFDT_INTERNAL_H
+#ifndef COMMON__LIBFDT__LIBFDT_INTERNAL_H
+#define COMMON__LIBFDT__LIBFDT_INTERNAL_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -189,4 +189,4 @@ static inline bool can_assume_(int mask)
 /** helper macros for checking assumptions */
 #define can_assume(_assume)	can_assume_(ASSUME_ ## _assume)
 
-#endif /* LIBFDT_INTERNAL_H */
+#endif /* COMMON__LIBFDT__LIBFDT_INTERNAL_H */
diff --git a/xen/include/xen/bootfdt.h b/xen/include/xen/bootfdt.h
index 16fa05f38f..7cb01dbb1b 100644
--- a/xen/include/xen/bootfdt.h
+++ b/xen/include/xen/bootfdt.h
@@ -1,5 +1,5 @@
-#ifndef XEN_BOOTFDT_H
-#define XEN_BOOTFDT_H
+#ifndef XEN__BOOTFDT_H
+#define XEN__BOOTFDT_H
 
 #include <xen/types.h>
 #include <xen/kernel.h>
@@ -206,4 +206,4 @@ static inline struct shmem_membank_extra *bootinfo_get_shmem_extra(void)
 }
 #endif
 
-#endif /* XEN_BOOTFDT_H */
+#endif /* XEN__BOOTFDT_H */
diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
index e6287305a7..5c4a419781 100644
--- a/xen/include/xen/device_tree.h
+++ b/xen/include/xen/device_tree.h
@@ -7,8 +7,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __XEN_DEVICE_TREE_H__
-#define __XEN_DEVICE_TREE_H__
+#ifndef XEN__DEVICE_TREE_H
+#define XEN__DEVICE_TREE_H
 
 #include <asm/byteorder.h>
 #include <asm/device.h>
diff --git a/xen/include/xen/libfdt/fdt.h b/xen/include/xen/libfdt/fdt.h
index f2e68807f2..6a53d4705b 100644
--- a/xen/include/xen/libfdt/fdt.h
+++ b/xen/include/xen/libfdt/fdt.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef FDT_H
-#define FDT_H
+#ifndef XEN__LIBFDT__FDT_H
+#define XEN__LIBFDT__FDT_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -63,4 +63,4 @@ struct fdt_property {
 #define FDT_V16_SIZE	FDT_V3_SIZE
 #define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(fdt32_t))
 
-#endif /* FDT_H */
+#endif /* XEN__LIBFDT__FDT_H */
diff --git a/xen/include/xen/libfdt/libfdt-xen.h b/xen/include/xen/libfdt/libfdt-xen.h
index a5340bc9f4..7cab9cef66 100644
--- a/xen/include/xen/libfdt/libfdt-xen.h
+++ b/xen/include/xen/libfdt/libfdt-xen.h
@@ -8,8 +8,8 @@
  * Copyright (C) 2023, Advanced Micro Devices, Inc. All Rights Reserved.
  */
 
-#ifndef LIBFDT_XEN_H
-#define LIBFDT_XEN_H
+#ifndef XEN__LIBFDT__LIBFDT_XEN_H
+#define XEN__LIBFDT__LIBFDT_XEN_H
 
 #include <xen/libfdt/libfdt.h>
 
@@ -43,7 +43,7 @@ static inline int fdt_get_mem_rsv_paddr(const void *fdt, int n,
     return ret;
 }
 
-#endif /* LIBFDT_XEN_H */
+#endif /* XEN__LIBFDT__LIBFDT_XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/libfdt/libfdt.h b/xen/include/xen/libfdt/libfdt.h
index fabddbee8c..9ed4ee1705 100644
--- a/xen/include/xen/libfdt/libfdt.h
+++ b/xen/include/xen/libfdt/libfdt.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_H
-#define LIBFDT_H
+#ifndef XEN__LIBFDT__LIBFDT_H
+#define XEN__LIBFDT__LIBFDT_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -2137,4 +2137,4 @@ const char *fdt_strerror(int errval);
 }
 #endif
 
-#endif /* LIBFDT_H */
+#endif /* XEN__LIBFDT__LIBFDT_H */
diff --git a/xen/include/xen/libfdt/libfdt_env.h b/xen/include/xen/libfdt/libfdt_env.h
index 8368787391..3b0d121a78 100644
--- a/xen/include/xen/libfdt/libfdt_env.h
+++ b/xen/include/xen/libfdt/libfdt_env.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_ENV_H
-#define LIBFDT_ENV_H
+#ifndef XEN__LIBFDT__LIBFDT_ENV_H
+#define XEN__LIBFDT__LIBFDT_ENV_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -93,4 +93,4 @@ static inline size_t fdt_strnlen(const char *string, size_t max_count)
 
 #endif /* __APPLE__ */
 
-#endif /* LIBFDT_ENV_H */
+#endif /* XEN__LIBFDT__LIBFDT_ENV_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809329.1221609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnq-0004vM-0t; Thu, 03 Oct 2024 12:19:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809329.1221609; Thu, 03 Oct 2024 12: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 1swKnp-0004sh-NB; Thu, 03 Oct 2024 12:19:29 +0000
Received: by outflank-mailman (input) for mailman id 809329;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnn-00043u-Oz
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:28 +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 b99ce03a-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:23 +0200 (CEST)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2fabb837ddbso13526731fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:23 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b99ce03a-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957963; x=1728562763; 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=RYq/uxmWWOuDIBAi5TU2oS3g/UeKBd67D/Je8r9P+wI=;
        b=akm0KPTvRmTl+KBUc8BVITbHbvKFKEVTm286n+fBqD2u7F0z+obWnTOfr1Jym/KivI
         OZbGG+sEZbdVL7dy24eX/8t+uep2IIvehMzJFvKusFDfJBkEBiVYE+HZQTqQ+ooQIlei
         Skzovg35SoLxJAKqI1bPCm1EXTcuEiNLocY0g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957963; x=1728562763;
        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=RYq/uxmWWOuDIBAi5TU2oS3g/UeKBd67D/Je8r9P+wI=;
        b=teX8DPv7aaD+O415UztTcFtCG27wv/3ROo2Sfn1cOmvPz34LxrJ+ciZuJQvwNkEHg/
         sDQsozhGnW+eNDtkWgRKDAyIHH13XzcKtuSzH5XgKvVyVPkFLLgPoB2iHbdi8YEpzsxo
         5YpE066avAv528nl5cNH5hqTALzCNeDtopuTjkymnLNd6/24OKEC0+UcENJobXm4rZDH
         9mZYO9LPF2LsA4KZi2ZHRJKuciHOyBWihS6TpwLRK0jaQdYAhRD7BbN3bZ+z0347RUGF
         nJvGgkRWA98RGPGXtqySO4nqK/zlWCtJONN9z1JfWhSrDFWRkNjK2RHRpjEJ0QdPKBax
         3imQ==
X-Gm-Message-State: AOJu0YwElzCG5UqmZIN+6xcyLcZl3kokSfZPvkLqfaJKhQ/uZSgHaxQe
	JcQrxLVNWPU16KEaGf21x4E2wmVmrA6Kq3fNXQtaDe7LJhqHN9gwh6HAl7mN1rwHDwTKUEa16y0
	a
X-Google-Smtp-Source: AGHT+IEYr6hpEygjZSHsODcrV2ni/tP0JAd/LkoWFcA5t84yYxdubpv9nz4DjHCVXgy1fkQwlChumQ==
X-Received: by 2002:a2e:a543:0:b0:2f0:1a95:7106 with SMTP id 38308e7fff4ca-2fae10b46admr60348081fa.39.1727957960868;
        Thu, 03 Oct 2024 05:19:20 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 01/20] xen: Update header guards - Generic
Date: Thu,  3 Oct 2024 13:18:49 +0100
Message-Id: <20241003121908.362888-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers not having specific maintainers.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/common/coverage/coverage.h            | 4 ++--
 xen/common/coverage/gcov.h                | 6 +++---
 xen/common/libelf/libelf-private.h        | 6 +++---
 xen/common/lz4/defs.h                     | 6 +++---
 xen/common/ubsan/ubsan.h                  | 4 ++--
 xen/common/xz/lzma2.h                     | 4 ++--
 xen/common/xz/private.h                   | 4 ++--
 xen/common/xz/stream.h                    | 4 ++--
 xen/common/zstd/bitstream.h               | 6 +++---
 xen/common/zstd/error_private.h           | 6 +++---
 xen/common/zstd/fse.h                     | 6 +++---
 xen/common/zstd/huf.h                     | 6 +++---
 xen/common/zstd/mem.h                     | 6 +++---
 xen/common/zstd/zstd_internal.h           | 6 +++---
 xen/drivers/video/font.h                  | 6 +++---
 xen/drivers/video/lfb.h                   | 4 ++--
 xen/drivers/video/modelines.h             | 4 ++--
 xen/include/asm-generic/altp2m.h          | 6 +++---
 xen/include/asm-generic/atomic-ops.h      | 6 +++---
 xen/include/asm-generic/device.h          | 6 +++---
 xen/include/asm-generic/div64.h           | 4 ++--
 xen/include/asm-generic/hardirq.h         | 6 +++---
 xen/include/asm-generic/hypercall.h       | 8 ++++----
 xen/include/asm-generic/iocap.h           | 6 +++---
 xen/include/asm-generic/paging.h          | 6 +++---
 xen/include/asm-generic/percpu.h          | 6 +++---
 xen/include/asm-generic/random.h          | 6 +++---
 xen/include/asm-generic/softirq.h         | 6 +++---
 xen/include/crypto/rijndael.h             | 6 +++---
 xen/include/crypto/vmac.h                 | 4 ++--
 xen/include/public/arch-ppc.h             | 6 +++---
 xen/include/public/arch-riscv.h           | 6 +++---
 xen/include/public/callback.h             | 6 +++---
 xen/include/public/device_tree_defs.h     | 4 ++--
 xen/include/public/dom0_ops.h             | 6 +++---
 xen/include/public/domctl.h               | 6 +++---
 xen/include/public/elfnote.h              | 6 +++---
 xen/include/public/errno.h                | 6 +++---
 xen/include/public/event_channel.h        | 6 +++---
 xen/include/public/features.h             | 6 +++---
 xen/include/public/grant_table.h          | 6 +++---
 xen/include/public/hvm/dm_op.h            | 6 +++---
 xen/include/public/hvm/e820.h             | 6 +++---
 xen/include/public/hvm/hvm_info_table.h   | 6 +++---
 xen/include/public/hvm/hvm_op.h           | 6 +++---
 xen/include/public/hvm/hvm_vcpu.h         | 6 +++---
 xen/include/public/hvm/hvm_xs_strings.h   | 6 +++---
 xen/include/public/hvm/ioreq.h            | 6 +++---
 xen/include/public/hvm/params.h           | 6 +++---
 xen/include/public/hvm/pvdrivers.h        | 6 +++---
 xen/include/public/hvm/save.h             | 6 +++---
 xen/include/public/hypfs.h                | 6 +++---
 xen/include/public/kexec.h                | 6 +++---
 xen/include/public/memory.h               | 6 +++---
 xen/include/public/nmi.h                  | 6 +++---
 xen/include/public/physdev.h              | 6 +++---
 xen/include/public/platform.h             | 6 +++---
 xen/include/public/pmu.h                  | 6 +++---
 xen/include/public/sched.h                | 6 +++---
 xen/include/public/sysctl.h               | 6 +++---
 xen/include/public/tmem.h                 | 6 +++---
 xen/include/public/trace.h                | 6 +++---
 xen/include/public/vcpu.h                 | 6 +++---
 xen/include/public/version.h              | 6 +++---
 xen/include/public/xen-compat.h           | 6 +++---
 xen/include/public/xen.h                  | 6 +++---
 xen/include/public/xencomm.h              | 6 +++---
 xen/include/public/xenoprof.h             | 6 +++---
 xen/include/public/xsm/flask_op.h         | 4 ++--
 xen/include/xen/8250-uart.h               | 6 +++---
 xen/include/xen/acpi.h                    | 6 +++---
 xen/include/xen/alternative-call.h        | 6 +++---
 xen/include/xen/atomic.h                  | 6 +++---
 xen/include/xen/bitmap.h                  | 6 +++---
 xen/include/xen/bitops.h                  | 6 +++---
 xen/include/xen/bug.h                     | 6 +++---
 xen/include/xen/byteorder/big_endian.h    | 6 +++---
 xen/include/xen/byteorder/generic.h       | 6 +++---
 xen/include/xen/byteorder/little_endian.h | 6 +++---
 xen/include/xen/byteorder/swab.h          | 6 +++---
 xen/include/xen/cache.h                   | 6 +++---
 xen/include/xen/compat.h                  | 6 +++---
 xen/include/xen/compiler.h                | 6 +++---
 xen/include/xen/config.h                  | 6 +++---
 xen/include/xen/console.h                 | 6 +++---
 xen/include/xen/consoled.h                | 6 +++---
 xen/include/xen/const.h                   | 6 +++---
 xen/include/xen/coverage.h                | 4 ++--
 xen/include/xen/cper.h                    | 4 ++--
 xen/include/xen/cpu.h                     | 6 +++---
 xen/include/xen/cpuidle.h                 | 6 +++---
 xen/include/xen/cpumask.h                 | 6 +++---
 xen/include/xen/ctype.h                   | 4 ++--
 xen/include/xen/decompress.h              | 4 ++--
 xen/include/xen/delay.h                   | 6 +++---
 xen/include/xen/dm.h                      | 6 +++---
 xen/include/xen/dmi.h                     | 6 +++---
 xen/include/xen/domain.h                  | 6 +++---
 xen/include/xen/domain_page.h             | 6 +++---
 xen/include/xen/dt-overlay.h              | 6 +++---
 xen/include/xen/early_printk.h            | 4 ++--
 xen/include/xen/earlycpio.h               | 6 +++---
 xen/include/xen/efi.h                     | 6 +++---
 xen/include/xen/elf.h                     | 6 +++---
 xen/include/xen/elfcore.h                 | 6 +++---
 xen/include/xen/elfstructs.h              | 6 +++---
 xen/include/xen/err.h                     | 6 +++---
 xen/include/xen/errno.h                   | 6 +++---
 xen/include/xen/event.h                   | 6 +++---
 xen/include/xen/grant_table.h             | 6 +++---
 xen/include/xen/guest_access.h            | 6 +++---
 xen/include/xen/gunzip.h                  | 4 ++--
 xen/include/xen/hypercall.h               | 6 +++---
 xen/include/xen/init.h                    | 6 +++---
 xen/include/xen/inttypes.h                | 6 +++---
 xen/include/xen/iocap.h                   | 6 +++---
 xen/include/xen/ioreq.h                   | 6 +++---
 xen/include/xen/irq.h                     | 6 +++---
 xen/include/xen/irq_cpustat.h             | 6 +++---
 xen/include/xen/kconfig.h                 | 6 +++---
 xen/include/xen/kernel.h                  | 6 +++---
 xen/include/xen/keyhandler.h              | 6 +++---
 xen/include/xen/lib.h                     | 6 +++---
 xen/include/xen/libelf.h                  | 6 +++---
 xen/include/xen/linkage.h                 | 6 +++---
 xen/include/xen/linux-compat.h            | 6 +++---
 xen/include/xen/list.h                    | 6 +++---
 xen/include/xen/list_sort.h               | 4 ++--
 xen/include/xen/lz4.h                     | 4 ++--
 xen/include/xen/lzo.h                     | 4 ++--
 xen/include/xen/macros.h                  | 6 +++---
 xen/include/xen/mm-frame.h                | 6 +++---
 xen/include/xen/mm.h                      | 6 +++---
 xen/include/xen/msi.h                     | 4 ++--
 xen/include/xen/multiboot.h               | 6 +++---
 xen/include/xen/multiboot2.h              | 6 +++---
 xen/include/xen/multicall.h               | 6 +++---
 xen/include/xen/nodemask.h                | 6 +++---
 xen/include/xen/nospec.h                  | 6 +++---
 xen/include/xen/notifier.h                | 6 +++---
 xen/include/xen/numa.h                    | 6 +++---
 xen/include/xen/p2m-common.h              | 6 +++---
 xen/include/xen/page-defs.h               | 6 +++---
 xen/include/xen/page-size.h               | 4 ++--
 xen/include/xen/paging.h                  | 6 +++---
 xen/include/xen/param.h                   | 6 +++---
 xen/include/xen/pci.h                     | 6 +++---
 xen/include/xen/pci_regs.h                | 6 +++---
 xen/include/xen/pdx.h                     | 6 +++---
 xen/include/xen/percpu.h                  | 6 +++---
 xen/include/xen/perfc.h                   | 6 +++---
 xen/include/xen/perfc_defn.h              | 6 +++---
 xen/include/xen/pfn.h                     | 6 +++---
 xen/include/xen/pmap.h                    | 6 +++---
 xen/include/xen/pmstat.h                  | 6 +++---
 xen/include/xen/preempt.h                 | 6 +++---
 xen/include/xen/prefetch.h                | 4 ++--
 xen/include/xen/pv_console.h              | 6 +++---
 xen/include/xen/radix-tree.h              | 6 +++---
 xen/include/xen/random.h                  | 6 +++---
 xen/include/xen/rangeset.h                | 6 +++---
 xen/include/xen/rbtree.h                  | 6 +++---
 xen/include/xen/rcupdate.h                | 6 +++---
 xen/include/xen/rwlock.h                  | 6 +++---
 xen/include/xen/sched.h                   | 6 +++---
 xen/include/xen/sections.h                | 6 +++---
 xen/include/xen/self-tests.h              | 6 +++---
 xen/include/xen/serial.h                  | 6 +++---
 xen/include/xen/shared.h                  | 6 +++---
 xen/include/xen/shutdown.h                | 6 +++---
 xen/include/xen/sizes.h                   | 6 +++---
 xen/include/xen/smp.h                     | 6 +++---
 xen/include/xen/softirq.h                 | 6 +++---
 xen/include/xen/sort.h                    | 6 +++---
 xen/include/xen/spinlock.h                | 6 +++---
 xen/include/xen/stdarg.h                  | 6 +++---
 xen/include/xen/stdbool.h                 | 6 +++---
 xen/include/xen/stdint.h                  | 6 +++---
 xen/include/xen/stop_machine.h            | 6 +++---
 xen/include/xen/string.h                  | 6 +++---
 xen/include/xen/stringify.h               | 6 +++---
 xen/include/xen/symbols.h                 | 6 +++---
 xen/include/xen/tasklet.h                 | 6 +++---
 xen/include/xen/time.h                    | 6 +++---
 xen/include/xen/timer.h                   | 6 +++---
 xen/include/xen/trace.h                   | 6 +++---
 xen/include/xen/types.h                   | 6 +++---
 xen/include/xen/typesafe.h                | 6 +++---
 xen/include/xen/unaligned.h               | 6 +++---
 xen/include/xen/version.h                 | 6 +++---
 xen/include/xen/vga.h                     | 6 +++---
 xen/include/xen/video.h                   | 6 +++---
 xen/include/xen/virtual_region.h          | 6 +++---
 xen/include/xen/vmap.h                    | 6 +++---
 xen/include/xen/wait.h                    | 6 +++---
 xen/include/xen/warning.h                 | 4 ++--
 xen/include/xen/watchdog.h                | 6 +++---
 xen/include/xen/xen.lds.h                 | 6 +++---
 xen/include/xen/xenoprof.h                | 4 ++--
 xen/include/xen/xmalloc.h                 | 6 +++---
 xen/include/xen/xxhash.h                  | 6 +++---
 201 files changed, 579 insertions(+), 579 deletions(-)

diff --git a/xen/common/coverage/coverage.h b/xen/common/coverage/coverage.h
index aa66396c08..34400d0f4b 100644
--- a/xen/common/coverage/coverage.h
+++ b/xen/common/coverage/coverage.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_COV_PRIV_H
-#define _XEN_COV_PRIV_H
+#ifndef COMMON__COVERAGE__COVERAGE_H
+#define COMMON__COVERAGE__COVERAGE_H
 
 #include <xen/types.h>
 
diff --git a/xen/common/coverage/gcov.h b/xen/common/coverage/gcov.h
index efc1fd7b00..f0f70019e3 100644
--- a/xen/common/coverage/gcov.h
+++ b/xen/common/coverage/gcov.h
@@ -1,5 +1,5 @@
-#ifndef _GCOV_H_
-#define _GCOV_H_
+#ifndef COMMON__COVERAGE__GCOV_H
+#define COMMON__COVERAGE__GCOV_H
 
 #include <xen/guest_access.h>
 #include <xen/types.h>
@@ -37,4 +37,4 @@ size_t gcov_info_to_gcda(char *buffer, const struct gcov_info *info);
 size_t gcov_store_uint32(void *buffer, size_t off, uint32_t v);
 size_t gcov_store_uint64(void *buffer, size_t off, uint64_t v);
 
-#endif	/* _GCOV_H_ */
+#endif	/* COMMON__COVERAGE__GCOV_H */
diff --git a/xen/common/libelf/libelf-private.h b/xen/common/libelf/libelf-private.h
index 197d7a7623..890fba8ae2 100644
--- a/xen/common/libelf/libelf-private.h
+++ b/xen/common/libelf/libelf-private.h
@@ -12,8 +12,8 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __LIBELF_PRIVATE_H__
-#define __LIBELF_PRIVATE_H__
+#ifndef COMMON__LIBELF__LIBELF_PRIVATE_H
+#define COMMON__LIBELF__LIBELF_PRIVATE_H
 
 #ifdef __XEN__
 
@@ -105,7 +105,7 @@ do { strncpy((d),(s),sizeof((d))-1);            \
    * of memcpy, memset, memmove and strcpy.  Every call site
    * must either use elf_mem*_unchecked, or elf_mem*_safe. */
 
-#endif /* __LIBELF_PRIVATE_H__ */
+#endif /* COMMON__LIBELF__LIBELF_PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/common/lz4/defs.h b/xen/common/lz4/defs.h
index ecfbf07f83..6b974bc806 100644
--- a/xen/common/lz4/defs.h
+++ b/xen/common/lz4/defs.h
@@ -8,8 +8,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef COMMON_LZ4_DEFS_H
-#define COMMON_LZ4_DEFS_H
+#ifndef COMMON__LZ4__DEFS_H
+#define COMMON__LZ4__DEFS_H
 
 #ifdef __XEN__
 #include <asm/byteorder.h>
@@ -170,4 +170,4 @@ typedef struct _U64_S { u64 v; } U64_S;
 		d = e;	\
 	} while (0)
 
-#endif /* COMMON_LZ4_DEFS_H */
+#endif /* COMMON__LZ4__DEFS_H */
diff --git a/xen/common/ubsan/ubsan.h b/xen/common/ubsan/ubsan.h
index 9c7f3b9b6c..495e53a7fd 100644
--- a/xen/common/ubsan/ubsan.h
+++ b/xen/common/ubsan/ubsan.h
@@ -1,5 +1,5 @@
-#ifndef _LIB_UBSAN_H
-#define _LIB_UBSAN_H
+#ifndef COMMON__UBSAN__UBSAN_H
+#define COMMON__UBSAN__UBSAN_H
 
 #include <xen/linux-compat.h>
 
diff --git a/xen/common/xz/lzma2.h b/xen/common/xz/lzma2.h
index 06a7edb4d7..ba9afb0049 100644
--- a/xen/common/xz/lzma2.h
+++ b/xen/common/xz/lzma2.h
@@ -8,8 +8,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_LZMA2_H
-#define XZ_LZMA2_H
+#ifndef COMMON__XZ__LZMA2_H
+#define COMMON__XZ__LZMA2_H
 
 /* Range coder constants */
 #define RC_SHIFT_BITS 8
diff --git a/xen/common/xz/private.h b/xen/common/xz/private.h
index 2299705378..b1345a9ddb 100644
--- a/xen/common/xz/private.h
+++ b/xen/common/xz/private.h
@@ -7,8 +7,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_PRIVATE_H
-#define XZ_PRIVATE_H
+#ifndef COMMON__XZ__PRIVATE_H
+#define COMMON__XZ__PRIVATE_H
 
 #ifdef __XEN__
 #include <xen/kernel.h>
diff --git a/xen/common/xz/stream.h b/xen/common/xz/stream.h
index 8d9fbbe1b5..a4caa665fd 100644
--- a/xen/common/xz/stream.h
+++ b/xen/common/xz/stream.h
@@ -7,8 +7,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_STREAM_H
-#define XZ_STREAM_H
+#ifndef COMMON__XZ__STREAM_H
+#define COMMON__XZ__STREAM_H
 
 /*
  * See the .xz file format specification at
diff --git a/xen/common/zstd/bitstream.h b/xen/common/zstd/bitstream.h
index 2b06d4551f..c38afe399e 100644
--- a/xen/common/zstd/bitstream.h
+++ b/xen/common/zstd/bitstream.h
@@ -38,8 +38,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef BITSTREAM_H_MODULE
-#define BITSTREAM_H_MODULE
+#ifndef COMMON__ZSTD__BITSTREAM_H
+#define COMMON__ZSTD__BITSTREAM_H
 
 /*
 *  This API consists of small unitary functions, which must be inlined for best performance.
@@ -377,4 +377,4 @@ ZSTD_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t *DStream)
 	return ((DStream->ptr == DStream->start) && (DStream->bitsConsumed == sizeof(DStream->bitContainer) * 8));
 }
 
-#endif /* BITSTREAM_H_MODULE */
+#endif /* COMMON__ZSTD__BITSTREAM_H */
diff --git a/xen/common/zstd/error_private.h b/xen/common/zstd/error_private.h
index fa84ae4fef..171525b252 100644
--- a/xen/common/zstd/error_private.h
+++ b/xen/common/zstd/error_private.h
@@ -16,8 +16,8 @@
 
 /* Note : this module is expected to remain private, do not expose it */
 
-#ifndef ERROR_H_MODULE
-#define ERROR_H_MODULE
+#ifndef COMMON__ZSTD__ERROR_PRIVATE_H
+#define COMMON__ZSTD__ERROR_PRIVATE_H
 
 /**
  * enum ZSTD_ErrorCode - zstd error codes
@@ -102,4 +102,4 @@ static __attribute__((unused)) ZSTD_ErrorCode __init ZSTD_getErrorCode(
 	return (ZSTD_ErrorCode)(0 - functionResult);
 }
 
-#endif /* ERROR_H_MODULE */
+#endif /* COMMON__ZSTD__ERROR_PRIVATE_H */
diff --git a/xen/common/zstd/fse.h b/xen/common/zstd/fse.h
index 5761e09f17..dc15c8cd7f 100644
--- a/xen/common/zstd/fse.h
+++ b/xen/common/zstd/fse.h
@@ -37,8 +37,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef FSE_H
-#define FSE_H
+#ifndef COMMON__ZSTD__FSE_H
+#define COMMON__ZSTD__FSE_H
 
 /*-*****************************************
 *  FSE_PUBLIC_API : control library symbols visibility
@@ -567,4 +567,4 @@ ZSTD_STATIC unsigned FSE_endOfDState(const FSE_DState_t *DStatePtr) { return DSt
 
 #define FSE_TABLESTEP(tableSize) ((tableSize >> 1) + (tableSize >> 3) + 3)
 
-#endif /* FSE_H */
+#endif /* COMMON__ZSTD__FSE_H */
diff --git a/xen/common/zstd/huf.h b/xen/common/zstd/huf.h
index 0e091dbffe..e2ed6cf82b 100644
--- a/xen/common/zstd/huf.h
+++ b/xen/common/zstd/huf.h
@@ -37,8 +37,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef HUF_H_298734234
-#define HUF_H_298734234
+#ifndef COMMON__ZSTD__HUF_H
+#define COMMON__ZSTD__HUF_H
 
 /* ***   Tool functions *** */
 #define HUF_BLOCKSIZE_MAX (128 * 1024) /**< maximum input size for a single block compressed with HUF_compress */
@@ -206,4 +206,4 @@ size_t HUF_decompress1X_usingDTable(void *dst, size_t maxDstSize, const void *cS
 size_t HUF_decompress1X2_usingDTable(void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable);
 size_t HUF_decompress1X4_usingDTable(void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable);
 
-#endif /* HUF_H_298734234 */
+#endif /* COMMON__ZSTD__HUF_H */
diff --git a/xen/common/zstd/mem.h b/xen/common/zstd/mem.h
index ae1e305126..8e4228771c 100644
--- a/xen/common/zstd/mem.h
+++ b/xen/common/zstd/mem.h
@@ -14,8 +14,8 @@
  * ("BSD").
  */
 
-#ifndef MEM_H_MODULE
-#define MEM_H_MODULE
+#ifndef COMMON__ZSTD__MEM_H
+#define COMMON__ZSTD__MEM_H
 
 /*-****************************************
 *  Dependencies
@@ -150,4 +150,4 @@ ZSTD_STATIC U32 ZSTD_readMINMATCH(const void *memPtr, U32 length)
 	}
 }
 
-#endif /* MEM_H_MODULE */
+#endif /* COMMON__ZSTD__MEM_H */
diff --git a/xen/common/zstd/zstd_internal.h b/xen/common/zstd/zstd_internal.h
index 94f8c58622..93339813d6 100644
--- a/xen/common/zstd/zstd_internal.h
+++ b/xen/common/zstd/zstd_internal.h
@@ -14,8 +14,8 @@
  * ("BSD").
  */
 
-#ifndef ZSTD_CCOMMON_H_MODULE
-#define ZSTD_CCOMMON_H_MODULE
+#ifndef COMMON__ZSTD__ZSTD_INTERNAL_H
+#define COMMON__ZSTD__ZSTD_INTERNAL_H
 
 /*-*******************************************************
 *  Compiler specifics
@@ -373,4 +373,4 @@ size_t ZSTD_freeDDict(ZSTD_DDict *cdict);
 size_t ZSTD_freeCStream(ZSTD_CStream *zcs);
 size_t ZSTD_freeDStream(ZSTD_DStream *zds);
 
-#endif /* ZSTD_CCOMMON_H_MODULE */
+#endif /* COMMON__ZSTD__ZSTD_INTERNAL_H */
diff --git a/xen/drivers/video/font.h b/xen/drivers/video/font.h
index 7f720b3568..123a69dcef 100644
--- a/xen/drivers/video/font.h
+++ b/xen/drivers/video/font.h
@@ -8,8 +8,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_FONT_H
-#define _XEN_FONT_H
+#ifndef DRIVERS__VIDEO__FONT_H
+#define DRIVERS__VIDEO__FONT_H
 
 struct font_desc {
     const char *name;
@@ -19,4 +19,4 @@ struct font_desc {
 
 extern const struct font_desc font_vga_8x8, font_vga_8x14, font_vga_8x16;
 
-#endif /* _XEN_FONT_H */
+#endif /* DRIVERS__VIDEO__FONT_H */
diff --git a/xen/drivers/video/lfb.h b/xen/drivers/video/lfb.h
index 42161402d6..bee1bd3c28 100644
--- a/xen/drivers/video/lfb.h
+++ b/xen/drivers/video/lfb.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef _XEN_LFB_H
-#define _XEN_LFB_H
+#ifndef DRIVERS__VIDEO__LFB_H
+#define DRIVERS__VIDEO__LFB_H
 
 #include <xen/init.h>
 
diff --git a/xen/drivers/video/modelines.h b/xen/drivers/video/modelines.h
index 9cb7cdde05..08d631b134 100644
--- a/xen/drivers/video/modelines.h
+++ b/xen/drivers/video/modelines.h
@@ -25,8 +25,8 @@
  * Copyright (c) 2013 Citrix Systems
  */
 
-#ifndef _XEN_MODLINES_H
-#define _XEN_MODLINES_H
+#ifndef DRIVERS__VIDEO__MODELINES_H
+#define DRIVERS__VIDEO__MODELINES_H
 
 struct modeline {
     const char* mode;  /* in the form 1280x1024@60 */
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
index 39865a842a..34ae943145 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_ALTP2M_H
-#define __ASM_GENERIC_ALTP2M_H
+#ifndef ASM_GENERIC__ALTP2M_H
+#define ASM_GENERIC__ALTP2M_H
 
 #include <xen/bug.h>
 
@@ -22,7 +22,7 @@ static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
     return 0;
 }
 
-#endif /* __ASM_GENERIC_ALTP2M_H */
+#endif /* ASM_GENERIC__ALTP2M_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/atomic-ops.h b/xen/include/asm-generic/atomic-ops.h
index 98dd907942..b1f883c360 100644
--- a/xen/include/asm-generic/atomic-ops.h
+++ b/xen/include/asm-generic/atomic-ops.h
@@ -4,8 +4,8 @@
  * forward inline declaration that can be synthesized from other atomic
  * functions or being created from scratch.
  */
-#ifndef _ASM_GENERIC_ATOMIC_OPS_H_
-#define _ASM_GENERIC_ATOMIC_OPS_H_
+#ifndef ASM_GENERIC__ATOMIC_OPS_H
+#define ASM_GENERIC__ATOMIC_OPS_H
 
 #include <xen/atomic.h>
 #include <xen/lib.h>
@@ -94,4 +94,4 @@ static inline int atomic_add_negative(int i, atomic_t *v)
 }
 #endif
 
-#endif /* _ASM_GENERIC_ATOMIC_OPS_H_ */
+#endif /* ASM_GENERIC__ATOMIC_OPS_H */
diff --git a/xen/include/asm-generic/device.h b/xen/include/asm-generic/device.h
index 1acd1ba1d8..eccd3159a9 100644
--- a/xen/include/asm-generic/device.h
+++ b/xen/include/asm-generic/device.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_DEVICE_H__
-#define __ASM_GENERIC_DEVICE_H__
+#ifndef ASM_GENERIC__DEVICE_H
+#define ASM_GENERIC__DEVICE_H
 
 #include <xen/stdbool.h>
 
@@ -127,7 +127,7 @@ __section(".adev.info") = {                                         \
 
 #endif /* CONFIG_ACPI */
 
-#endif /* __ASM_GENERIC_DEVICE_H__ */
+#endif /* ASM_GENERIC__DEVICE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/div64.h b/xen/include/asm-generic/div64.h
index 068d8a11ad..774198f98b 100644
--- a/xen/include/asm-generic/div64.h
+++ b/xen/include/asm-generic/div64.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_DIV64
-#define __ASM_GENERIC_DIV64
+#ifndef ASM_GENERIC__DIV64_H
+#define ASM_GENERIC__DIV64_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/asm-generic/hardirq.h b/xen/include/asm-generic/hardirq.h
index ddccf460b9..09260b1b08 100644
--- a/xen/include/asm-generic/hardirq.h
+++ b/xen/include/asm-generic/hardirq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_HARDIRQ_H
-#define __ASM_GENERIC_HARDIRQ_H
+#ifndef ASM_GENERIC__HARDIRQ_H
+#define ASM_GENERIC__HARDIRQ_H
 
 #include <xen/cache.h>
 #include <xen/smp.h>
@@ -17,7 +17,7 @@ typedef struct {
 #define irq_enter()     (local_irq_count(smp_processor_id())++)
 #define irq_exit()      (local_irq_count(smp_processor_id())--)
 
-#endif /* __ASM_GENERIC_HARDIRQ_H */
+#endif /* ASM_GENERIC__HARDIRQ_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/hypercall.h b/xen/include/asm-generic/hypercall.h
index 7743b35c0d..201b2cb301 100644
--- a/xen/include/asm-generic/hypercall.h
+++ b/xen/include/asm-generic/hypercall.h
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_GENERIC_HYPERCALL_H__
-#define __ASM_GENERIC_HYPERCALL_H__
+#ifndef ASM_GENERIC__HYPERCALL_H
+#define ASM_GENERIC__HYPERCALL_H
 
-#endif /* __ASM_GENERIC_HYPERCALL_H__ */
+#endif /* ASM_GENERIC__HYPERCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/iocap.h b/xen/include/asm-generic/iocap.h
index dd7cb45488..1001fb629a 100644
--- a/xen/include/asm-generic/iocap.h
+++ b/xen/include/asm-generic/iocap.h
@@ -1,11 +1,11 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_IOCAP_H__
-#define __ASM_GENERIC_IOCAP_H__
+#ifndef ASM_GENERIC__IOCAP_H
+#define ASM_GENERIC__IOCAP_H
 
 #define cache_flush_permitted(d)                        \
     (!rangeset_is_empty((d)->iomem_caps))
 
-#endif /* __ASM_GENERIC_IOCAP_H__ */
+#endif /* ASM_GENERIC__IOCAP_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/paging.h b/xen/include/asm-generic/paging.h
index 8df534cfdc..1a8fae6543 100644
--- a/xen/include/asm-generic/paging.h
+++ b/xen/include/asm-generic/paging.h
@@ -1,13 +1,13 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_PAGING_H__
-#define __ASM_GENERIC_PAGING_H__
+#ifndef ASM_GENERIC__PAGING_H
+#define ASM_GENERIC__PAGING_H
 
 #include <xen/stdbool.h>
 
 #define paging_mode_translate(d)    ((void)(d), true)
 #define paging_mode_external(d)     ((void)(d), true)
 
-#endif /* __ASM_GENERIC_PAGING_H__ */
+#endif /* ASM_GENERIC__PAGING_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/percpu.h b/xen/include/asm-generic/percpu.h
index 60af4f9ff9..7302edb00c 100644
--- a/xen/include/asm-generic/percpu.h
+++ b/xen/include/asm-generic/percpu.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_PERCPU_H__
-#define __ASM_GENERIC_PERCPU_H__
+#ifndef ASM_GENERIC__PERCPU_H
+#define ASM_GENERIC__PERCPU_H
 
 #ifndef __ASSEMBLY__
 
@@ -25,7 +25,7 @@ void percpu_init_areas(void);
 
 #endif
 
-#endif /* __ASM_GENERIC_PERCPU_H__ */
+#endif /* ASM_GENERIC__PERCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/random.h b/xen/include/asm-generic/random.h
index d0d35dd217..f2e6c1c11c 100644
--- a/xen/include/asm-generic/random.h
+++ b/xen/include/asm-generic/random.h
@@ -1,13 +1,13 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_RANDOM_H__
-#define __ASM_GENERIC_RANDOM_H__
+#ifndef ASM_GENERIC__RANDOM_H
+#define ASM_GENERIC__RANDOM_H
 
 static inline unsigned int arch_get_random(void)
 {
     return 0;
 }
 
-#endif /* __ASM_GENERIC_RANDOM_H__ */
+#endif /* ASM_GENERIC__RANDOM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/softirq.h b/xen/include/asm-generic/softirq.h
index 83be855e50..92144c7eca 100644
--- a/xen/include/asm-generic/softirq.h
+++ b/xen/include/asm-generic/softirq.h
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_SOFTIRQ_H__
-#define __ASM_GENERIC_SOFTIRQ_H__
+#ifndef ASM_GENERIC__SOFTIRQ_H
+#define ASM_GENERIC__SOFTIRQ_H
 
 #define NR_ARCH_SOFTIRQS       0
 
 #define arch_skip_send_event_check(cpu) 0
 
-#endif /* __ASM_GENERIC_SOFTIRQ_H__ */
+#endif /* ASM_GENERIC__SOFTIRQ_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/crypto/rijndael.h b/xen/include/crypto/rijndael.h
index 4386be5878..52c7a2f622 100644
--- a/xen/include/crypto/rijndael.h
+++ b/xen/include/crypto/rijndael.h
@@ -25,8 +25,8 @@
  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-#ifndef __RIJNDAEL_H
-#define __RIJNDAEL_H
+#ifndef CRYPTO__RIJNDAEL_H
+#define CRYPTO__RIJNDAEL_H
 
 #define AES_MAXKEYBITS	(256)
 #define AES_MAXKEYBYTES	(AES_MAXKEYBITS/8)
@@ -55,4 +55,4 @@ int	rijndaelKeySetupDec(unsigned int [], const unsigned char [], int);
 void	rijndaelEncrypt(const unsigned int [], int, const unsigned char [16],
 	    unsigned char [16]);
 
-#endif /* __RIJNDAEL_H */
+#endif /* CRYPTO__RIJNDAEL_H */
diff --git a/xen/include/crypto/vmac.h b/xen/include/crypto/vmac.h
index 457f3f5dd6..310fc77f5c 100644
--- a/xen/include/crypto/vmac.h
+++ b/xen/include/crypto/vmac.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_VMAC_H
-#define HEADER_VMAC_H
+#ifndef CRYPTO__VMAC_H
+#define CRYPTO__VMAC_H
 
 /* --------------------------------------------------------------------------
  * VMAC and VHASH Implementation by Ted Krovetz (tdk@acm.org) and Wei Dai.
diff --git a/xen/include/public/arch-ppc.h b/xen/include/public/arch-ppc.h
index 33a24e3795..1367743d97 100644
--- a/xen/include/public/arch-ppc.h
+++ b/xen/include/public/arch-ppc.h
@@ -8,8 +8,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef __XEN_PUBLIC_ARCH_PPC_H__
-#define __XEN_PUBLIC_ARCH_PPC_H__
+#ifndef PUBLIC__ARCH_PPC_H
+#define PUBLIC__ARCH_PPC_H
 
 #if defined(__XEN__) || defined(__XEN_TOOLS__)
 #define  int64_aligned_t  int64_t __attribute__((__aligned__(8)))
@@ -109,4 +109,4 @@ typedef struct xen_pmu_arch { uint8_t dummy; } xen_pmu_arch_t;
 
 #endif
 
-#endif /* __XEN_PUBLIC_ARCH_PPC_H__ */
+#endif /* PUBLIC__ARCH_PPC_H */
diff --git a/xen/include/public/arch-riscv.h b/xen/include/public/arch-riscv.h
index 168263b920..edfc518929 100644
--- a/xen/include/public/arch-riscv.h
+++ b/xen/include/public/arch-riscv.h
@@ -4,8 +4,8 @@
  * Initially based on the ARM implementation.
  */
 
-#ifndef __XEN_PUBLIC_ARCH_RISCV_H__
-#define __XEN_PUBLIC_ARCH_RISCV_H__
+#ifndef PUBLIC__ARCH_RISCV_H
+#define PUBLIC__ARCH_RISCV_H
 
 #if defined(__XEN__) || defined(__XEN_TOOLS__) || defined(__GNUC__)
 #define  int64_aligned_t  int64_t __attribute__((__aligned__(8)))
@@ -80,7 +80,7 @@ typedef struct arch_shared_info arch_shared_info_t;
 typedef struct xen_pmu_arch { uint8_t dummy; } xen_pmu_arch_t;
 #endif
 
-#endif /*  __XEN_PUBLIC_ARCH_RISCV_H__ */
+#endif /*  PUBLIC__ARCH_RISCV_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/callback.h b/xen/include/public/callback.h
index 7f13be66f3..917b4d0fe7 100644
--- a/xen/include/public/callback.h
+++ b/xen/include/public/callback.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, Ian Campbell
  */
 
-#ifndef __XEN_PUBLIC_CALLBACK_H__
-#define __XEN_PUBLIC_CALLBACK_H__
+#ifndef PUBLIC__CALLBACK_H
+#define PUBLIC__CALLBACK_H
 
 #include "xen.h"
 
@@ -91,7 +91,7 @@ DEFINE_XEN_GUEST_HANDLE(callback_unregister_t);
 #define CALLBACKTYPE_sysenter CALLBACKTYPE_sysenter_deprecated
 #endif
 
-#endif /* __XEN_PUBLIC_CALLBACK_H__ */
+#endif /* PUBLIC__CALLBACK_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/device_tree_defs.h b/xen/include/public/device_tree_defs.h
index 9e80d0499d..0d7f989c4e 100644
--- a/xen/include/public/device_tree_defs.h
+++ b/xen/include/public/device_tree_defs.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2015 Citrix Systems, Inc
  */
 
-#ifndef __XEN_DEVICE_TREE_DEFS_H__
-#define __XEN_DEVICE_TREE_DEFS_H__
+#ifndef PUBLIC__DEVICE_TREE_DEFS_H
+#define PUBLIC__DEVICE_TREE_DEFS_H
 
 #if defined(__XEN__) || defined(__XEN_TOOLS__)
 /*
diff --git a/xen/include/public/dom0_ops.h b/xen/include/public/dom0_ops.h
index 9fba71d3a8..28f8501b8e 100644
--- a/xen/include/public/dom0_ops.h
+++ b/xen/include/public/dom0_ops.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2002-2006, K Fraser
  */
 
-#ifndef __XEN_PUBLIC_DOM0_OPS_H__
-#define __XEN_PUBLIC_DOM0_OPS_H__
+#ifndef PUBLIC__DOM0_OPS_H
+#define PUBLIC__DOM0_OPS_H
 
 #include "xen.h"
 #include "platform.h"
@@ -90,7 +90,7 @@ struct dom0_op {
 typedef struct dom0_op dom0_op_t;
 DEFINE_XEN_GUEST_HANDLE(dom0_op_t);
 
-#endif /* __XEN_PUBLIC_DOM0_OPS_H__ */
+#endif /* PUBLIC__DOM0_OPS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index e1028fc524..7d58a56b51 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2002-2006, K Fraser
  */
 
-#ifndef __XEN_PUBLIC_DOMCTL_H__
-#define __XEN_PUBLIC_DOMCTL_H__
+#ifndef PUBLIC__DOMCTL_H
+#define PUBLIC__DOMCTL_H
 
 #if !defined(__XEN__) && !defined(__XEN_TOOLS__)
 #error "domctl operations are intended for use by node control tools only"
@@ -1387,7 +1387,7 @@ struct xen_domctl {
 typedef struct xen_domctl xen_domctl_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_t);
 
-#endif /* __XEN_PUBLIC_DOMCTL_H__ */
+#endif /* PUBLIC__DOMCTL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/elfnote.h b/xen/include/public/elfnote.h
index 2fd8f1b770..91bc4711fd 100644
--- a/xen/include/public/elfnote.h
+++ b/xen/include/public/elfnote.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, Ian Campbell, XenSource Ltd.
  */
 
-#ifndef __XEN_PUBLIC_ELFNOTE_H__
-#define __XEN_PUBLIC_ELFNOTE_H__
+#ifndef PUBLIC__ELFNOTE_H
+#define PUBLIC__ELFNOTE_H
 
 /*
  * `incontents 200 elfnotes ELF notes
@@ -273,7 +273,7 @@
  */
 #define XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION     0x2000003
 
-#endif /* __XEN_PUBLIC_ELFNOTE_H__ */
+#endif /* PUBLIC__ELFNOTE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/errno.h b/xen/include/public/errno.h
index b9fc6762fb..c0e5022078 100644
--- a/xen/include/public/errno.h
+++ b/xen/include/public/errno.h
@@ -25,8 +25,8 @@
  * guards, an automatic enum (for C code) and constants in the XEN_xxx
  * namespace.
  */
-#ifndef __XEN_PUBLIC_ERRNO_H__
-#define __XEN_PUBLIC_ERRNO_H__
+#ifndef PUBLIC__ERRNO_H
+#define PUBLIC__ERRNO_H
 
 #define XEN_ERRNO_DEFAULT_INCLUDE
 
@@ -41,7 +41,7 @@ enum xen_errno {
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_PUBLIC_ERRNO_H__ */
+#endif /* PUBLIC__ERRNO_H */
 #endif /* !XEN_ERRNO */
 
 /* ` enum neg_errnoval {  [ -Efoo for each Efoo in the list below ]  } */
diff --git a/xen/include/public/event_channel.h b/xen/include/public/event_channel.h
index 0d91a1c4af..eb6be297a0 100644
--- a/xen/include/public/event_channel.h
+++ b/xen/include/public/event_channel.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2003-2004, K A Fraser.
  */
 
-#ifndef __XEN_PUBLIC_EVENT_CHANNEL_H__
-#define __XEN_PUBLIC_EVENT_CHANNEL_H__
+#ifndef PUBLIC__EVENT_CHANNEL_H
+#define PUBLIC__EVENT_CHANNEL_H
 
 #include "xen.h"
 
@@ -358,7 +358,7 @@ struct evtchn_fifo_control_block {
 };
 typedef struct evtchn_fifo_control_block evtchn_fifo_control_block_t;
 
-#endif /* __XEN_PUBLIC_EVENT_CHANNEL_H__ */
+#endif /* PUBLIC__EVENT_CHANNEL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/features.h b/xen/include/public/features.h
index 8801930947..f42bcce464 100644
--- a/xen/include/public/features.h
+++ b/xen/include/public/features.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_PUBLIC_FEATURES_H__
-#define __XEN_PUBLIC_FEATURES_H__
+#ifndef PUBLIC__FEATURES_H
+#define PUBLIC__FEATURES_H
 
 /*
  * `incontents 200 elfnotes_features XEN_ELFNOTE_FEATURES
@@ -130,7 +130,7 @@
 
 #define XENFEAT_NR_SUBMAPS 1
 
-#endif /* __XEN_PUBLIC_FEATURES_H__ */
+#endif /* PUBLIC__FEATURES_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/grant_table.h b/xen/include/public/grant_table.h
index 1dfa17a6d0..c41a4e3f33 100644
--- a/xen/include/public/grant_table.h
+++ b/xen/include/public/grant_table.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2004, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_GRANT_TABLE_H__
-#define __XEN_PUBLIC_GRANT_TABLE_H__
+#ifndef PUBLIC__GRANT_TABLE_H
+#define PUBLIC__GRANT_TABLE_H
 
 #include "xen.h"
 
@@ -656,7 +656,7 @@ DEFINE_XEN_GUEST_HANDLE(gnttab_cache_flush_t);
     "out of space",                             \
 }
 
-#endif /* __XEN_PUBLIC_GRANT_TABLE_H__ */
+#endif /* PUBLIC__GRANT_TABLE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/hvm/dm_op.h b/xen/include/public/hvm/dm_op.h
index fa98551914..22067626c4 100644
--- a/xen/include/public/hvm/dm_op.h
+++ b/xen/include/public/hvm/dm_op.h
@@ -4,8 +4,8 @@
  *
  */
 
-#ifndef __XEN_PUBLIC_HVM_DM_OP_H__
-#define __XEN_PUBLIC_HVM_DM_OP_H__
+#ifndef PUBLIC__HVM__DM_OP_H
+#define PUBLIC__HVM__DM_OP_H
 
 #include "../xen.h"
 #include "../event_channel.h"
@@ -493,7 +493,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_dm_op_buf_t);
  * passing extra information to or from the domain.
  */
 
-#endif /* __XEN_PUBLIC_HVM_DM_OP_H__ */
+#endif /* PUBLIC__HVM__DM_OP_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/hvm/e820.h b/xen/include/public/hvm/e820.h
index 5879b8ff7b..9b7a104329 100644
--- a/xen/include/public/hvm/e820.h
+++ b/xen/include/public/hvm/e820.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2006, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_HVM_E820_H__
-#define __XEN_PUBLIC_HVM_E820_H__
+#ifndef PUBLIC__HVM__E820_H
+#define PUBLIC__HVM__E820_H
 
 #include "../xen.h"
 
@@ -18,4 +18,4 @@
 #define HVM_BELOW_4G_MMIO_LENGTH    ((xen_mk_ullong(1) << 32) - \
                                      HVM_BELOW_4G_MMIO_START)
 
-#endif /* __XEN_PUBLIC_HVM_E820_H__ */
+#endif /* PUBLIC__HVM__E820_H */
diff --git a/xen/include/public/hvm/hvm_info_table.h b/xen/include/public/hvm/hvm_info_table.h
index a885f356db..822b172f18 100644
--- a/xen/include/public/hvm/hvm_info_table.h
+++ b/xen/include/public/hvm/hvm_info_table.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__
-#define __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__
+#ifndef PUBLIC__HVM__HVM_INFO_TABLE_H
+#define PUBLIC__HVM__HVM_INFO_TABLE_H
 
 #define HVM_INFO_PFN         0x09F
 #define HVM_INFO_OFFSET      0x800
@@ -62,4 +62,4 @@ struct hvm_info_table {
     uint8_t     vcpu_online[(HVM_MAX_VCPUS + 7)/8];
 };
 
-#endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */
+#endif /* PUBLIC__HVM__HVM_INFO_TABLE_H */
diff --git a/xen/include/public/hvm/hvm_op.h b/xen/include/public/hvm/hvm_op.h
index e22adf0319..505e116e90 100644
--- a/xen/include/public/hvm/hvm_op.h
+++ b/xen/include/public/hvm/hvm_op.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2007, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_HVM_HVM_OP_H__
-#define __XEN_PUBLIC_HVM_HVM_OP_H__
+#ifndef PUBLIC__HVM__HVM_OP_H
+#define PUBLIC__HVM__HVM_OP_H
 
 #include "../xen.h"
 #include "../trace.h"
@@ -365,7 +365,7 @@ struct xen_hvm_altp2m_op {
 typedef struct xen_hvm_altp2m_op xen_hvm_altp2m_op_t;
 DEFINE_XEN_GUEST_HANDLE(xen_hvm_altp2m_op_t);
 
-#endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */
+#endif /* PUBLIC__HVM__HVM_OP_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/hvm/hvm_vcpu.h b/xen/include/public/hvm/hvm_vcpu.h
index 4a43401144..0cc1f9d956 100644
--- a/xen/include/public/hvm/hvm_vcpu.h
+++ b/xen/include/public/hvm/hvm_vcpu.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2015, Roger Pau Monne <roger.pau@citrix.com>
  */
 
-#ifndef __XEN_PUBLIC_HVM_HVM_VCPU_H__
-#define __XEN_PUBLIC_HVM_HVM_VCPU_H__
+#ifndef PUBLIC__HVM__HVM_VCPU_H
+#define PUBLIC__HVM__HVM_VCPU_H
 
 #include "../xen.h"
 
@@ -116,7 +116,7 @@ struct vcpu_hvm_context {
 typedef struct vcpu_hvm_context vcpu_hvm_context_t;
 DEFINE_XEN_GUEST_HANDLE(vcpu_hvm_context_t);
 
-#endif /* __XEN_PUBLIC_HVM_HVM_VCPU_H__ */
+#endif /* PUBLIC__HVM__HVM_VCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/hvm/hvm_xs_strings.h b/xen/include/public/hvm/hvm_xs_strings.h
index e1ed078628..c26e9698b7 100644
--- a/xen/include/public/hvm/hvm_xs_strings.h
+++ b/xen/include/public/hvm/hvm_xs_strings.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2013, Citrix Systems
  */
 
-#ifndef __XEN_PUBLIC_HVM_HVM_XS_STRINGS_H__
-#define __XEN_PUBLIC_HVM_HVM_XS_STRINGS_H__
+#ifndef PUBLIC__HVM__HVM_XS_STRINGS_H
+#define PUBLIC__HVM__HVM_XS_STRINGS_H
 
 #define HVM_XS_HVMLOADER               "hvmloader"
 #define HVM_XS_BIOS                    "hvmloader/bios"
@@ -69,4 +69,4 @@
  */
 #define HVM_XS_OEM_STRINGS             "bios-strings/oem-%d"
 
-#endif /* __XEN_PUBLIC_HVM_HVM_XS_STRINGS_H__ */
+#endif /* PUBLIC__HVM__HVM_XS_STRINGS_H */
diff --git a/xen/include/public/hvm/ioreq.h b/xen/include/public/hvm/ioreq.h
index 7a6bc760d0..14c0fe6457 100644
--- a/xen/include/public/hvm/ioreq.h
+++ b/xen/include/public/hvm/ioreq.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef _IOREQ_H_
-#define _IOREQ_H_
+#ifndef PUBLIC__HVM__IOREQ_H
+#define PUBLIC__HVM__IOREQ_H
 
 #define IOREQ_READ      1
 #define IOREQ_WRITE     0
@@ -113,7 +113,7 @@ typedef struct buffered_iopage buffered_iopage_t;
 #define ACPI_GPE0_BLK_LEN            ACPI_GPE0_BLK_LEN_V0
 
 
-#endif /* _IOREQ_H_ */
+#endif /* PUBLIC__HVM__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/hvm/params.h b/xen/include/public/hvm/params.h
index 99c40b4287..559cfb8240 100644
--- a/xen/include/public/hvm/params.h
+++ b/xen/include/public/hvm/params.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2007, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_HVM_PARAMS_H__
-#define __XEN_PUBLIC_HVM_PARAMS_H__
+#ifndef PUBLIC__HVM__PARAMS_H
+#define PUBLIC__HVM__PARAMS_H
 
 #include "hvm_op.h"
 
@@ -293,4 +293,4 @@
 
 #define HVM_NR_PARAMS 39
 
-#endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
+#endif /* PUBLIC__HVM__PARAMS_H */
diff --git a/xen/include/public/hvm/pvdrivers.h b/xen/include/public/hvm/pvdrivers.h
index 62252db626..348cdfed28 100644
--- a/xen/include/public/hvm/pvdrivers.h
+++ b/xen/include/public/hvm/pvdrivers.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2012, Citrix Systems Inc.
  */
 
-#ifndef _XEN_PUBLIC_PVDRIVERS_H_
-#define _XEN_PUBLIC_PVDRIVERS_H_
+#ifndef PUBLIC__HVM__PVDRIVERS_H
+#define PUBLIC__HVM__PVDRIVERS_H
 
 /*
  * This is the master registry of product numbers for
@@ -29,4 +29,4 @@
         EACH("xenserver-windows-v7.2+", 0x0005) /* Citrix */       \
         EACH("experimental",            0xffff)
 
-#endif /* _XEN_PUBLIC_PVDRIVERS_H_ */
+#endif /* PUBLIC__HVM__PVDRIVERS_H */
diff --git a/xen/include/public/hvm/save.h b/xen/include/public/hvm/save.h
index 72e16ab5bc..8fcf17e97b 100644
--- a/xen/include/public/hvm/save.h
+++ b/xen/include/public/hvm/save.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2007 XenSource Ltd.
  */
 
-#ifndef __XEN_PUBLIC_HVM_SAVE_H__
-#define __XEN_PUBLIC_HVM_SAVE_H__
+#ifndef PUBLIC__HVM__SAVE_H
+#define PUBLIC__HVM__SAVE_H
 
 /*
  * Structures in this header *must* have the same layout in 32bit
@@ -95,4 +95,4 @@ DECLARE_HVM_SAVE_TYPE(END, 0, struct hvm_save_end);
 #error "unsupported architecture"
 #endif
 
-#endif /* __XEN_PUBLIC_HVM_SAVE_H__ */
+#endif /* PUBLIC__HVM__SAVE_H */
diff --git a/xen/include/public/hypfs.h b/xen/include/public/hypfs.h
index 70047e1762..2aabedf606 100644
--- a/xen/include/public/hypfs.h
+++ b/xen/include/public/hypfs.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __XEN_PUBLIC_HYPFS_H__
-#define __XEN_PUBLIC_HYPFS_H__
+#ifndef PUBLIC__HYPFS_H
+#define PUBLIC__HYPFS_H
 
 #include "xen.h"
 
@@ -110,4 +110,4 @@ struct xen_hypfs_dirlistentry {
  */
 #define XEN_HYPFS_OP_write_contents    2
 
-#endif /* __XEN_PUBLIC_HYPFS_H__ */
+#endif /* PUBLIC__HYPFS_H */
diff --git a/xen/include/public/kexec.h b/xen/include/public/kexec.h
index 40d79e936b..5ddbada0fe 100644
--- a/xen/include/public/kexec.h
+++ b/xen/include/public/kexec.h
@@ -7,8 +7,8 @@
  * - Magnus Damm <magnus@valinux.co.jp>
  */
 
-#ifndef _XEN_PUBLIC_KEXEC_H
-#define _XEN_PUBLIC_KEXEC_H
+#ifndef PUBLIC__KEXEC_H
+#define PUBLIC__KEXEC_H
 
 
 /* This file describes the Kexec / Kdump hypercall interface for Xen.
@@ -233,7 +233,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_kexec_status_t);
 
 #endif
 
-#endif /* _XEN_PUBLIC_KEXEC_H */
+#endif /* PUBLIC__KEXEC_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h
index 5e545ae9a4..3c07f724d4 100644
--- a/xen/include/public/memory.h
+++ b/xen/include/public/memory.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_PUBLIC_MEMORY_H__
-#define __XEN_PUBLIC_MEMORY_H__
+#ifndef PUBLIC__MEMORY_H
+#define PUBLIC__MEMORY_H
 
 #include "xen.h"
 #include "physdev.h"
@@ -733,7 +733,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_vnuma_topology_info_t);
 
 /* Next available subop number is 29 */
 
-#endif /* __XEN_PUBLIC_MEMORY_H__ */
+#endif /* PUBLIC__MEMORY_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/nmi.h b/xen/include/public/nmi.h
index 5900703f5f..7bc63c0a4d 100644
--- a/xen/include/public/nmi.h
+++ b/xen/include/public/nmi.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_PUBLIC_NMI_H__
-#define __XEN_PUBLIC_NMI_H__
+#ifndef PUBLIC__NMI_H
+#define PUBLIC__NMI_H
 
 #include "xen.h"
 
@@ -55,7 +55,7 @@ DEFINE_XEN_GUEST_HANDLE(xennmi_callback_t);
  */
 #define XENNMI_unregister_callback 1
 
-#endif /* __XEN_PUBLIC_NMI_H__ */
+#endif /* PUBLIC__NMI_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/physdev.h b/xen/include/public/physdev.h
index 3149049a9a..cfce2fbb0a 100644
--- a/xen/include/public/physdev.h
+++ b/xen/include/public/physdev.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2006, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_PHYSDEV_H__
-#define __XEN_PUBLIC_PHYSDEV_H__
+#ifndef PUBLIC__PHYSDEV_H
+#define PUBLIC__PHYSDEV_H
 
 #include "xen.h"
 
@@ -373,7 +373,7 @@ DEFINE_XEN_GUEST_HANDLE(physdev_dbgp_op_t);
 #define PHYSDEVOP_pirq_eoi_gmfn PHYSDEVOP_pirq_eoi_gmfn_v2
 #endif
 
-#endif /* __XEN_PUBLIC_PHYSDEV_H__ */
+#endif /* PUBLIC__PHYSDEV_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/platform.h b/xen/include/public/platform.h
index 2725b8d104..3ce970f866 100644
--- a/xen/include/public/platform.h
+++ b/xen/include/public/platform.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2002-2006, K Fraser
  */
 
-#ifndef __XEN_PUBLIC_PLATFORM_H__
-#define __XEN_PUBLIC_PLATFORM_H__
+#ifndef PUBLIC__PLATFORM_H
+#define PUBLIC__PLATFORM_H
 
 #include "xen.h"
 
@@ -676,7 +676,7 @@ struct xen_platform_op {
 typedef struct xen_platform_op xen_platform_op_t;
 DEFINE_XEN_GUEST_HANDLE(xen_platform_op_t);
 
-#endif /* __XEN_PUBLIC_PLATFORM_H__ */
+#endif /* PUBLIC__PLATFORM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/pmu.h b/xen/include/public/pmu.h
index af8b7babdd..5e6c52bb6e 100644
--- a/xen/include/public/pmu.h
+++ b/xen/include/public/pmu.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
  */
 
-#ifndef __XEN_PUBLIC_PMU_H__
-#define __XEN_PUBLIC_PMU_H__
+#ifndef PUBLIC__PMU_H
+#define PUBLIC__PMU_H
 
 #include "xen.h"
 #if defined(__i386__) || defined(__x86_64__)
@@ -117,7 +117,7 @@ struct xen_pmu_data {
     xen_pmu_arch_t pmu;
 };
 
-#endif /* __XEN_PUBLIC_PMU_H__ */
+#endif /* PUBLIC__PMU_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/sched.h b/xen/include/public/sched.h
index b4362c6a1d..63b90468ce 100644
--- a/xen/include/public/sched.h
+++ b/xen/include/public/sched.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_PUBLIC_SCHED_H__
-#define __XEN_PUBLIC_SCHED_H__
+#ifndef PUBLIC__SCHED_H
+#define PUBLIC__SCHED_H
 
 #include "event_channel.h"
 
@@ -172,7 +172,7 @@ DEFINE_XEN_GUEST_HANDLE(sched_pin_override_t);
 #define SHUTDOWN_MAX        5  /* Maximum valid shutdown reason.             */
 /* ` } */
 
-#endif /* __XEN_PUBLIC_SCHED_H__ */
+#endif /* PUBLIC__SCHED_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index b2a5a724db..1e07bea079 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2002-2006, K Fraser
  */
 
-#ifndef __XEN_PUBLIC_SYSCTL_H__
-#define __XEN_PUBLIC_SYSCTL_H__
+#ifndef PUBLIC__SYSCTL_H
+#define PUBLIC__SYSCTL_H
 
 #if !defined(__XEN__) && !defined(__XEN_TOOLS__)
 #error "sysctl operations are intended for use by node control tools only"
@@ -1271,7 +1271,7 @@ struct xen_sysctl {
 typedef struct xen_sysctl xen_sysctl_t;
 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_t);
 
-#endif /* __XEN_PUBLIC_SYSCTL_H__ */
+#endif /* PUBLIC__SYSCTL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/tmem.h b/xen/include/public/tmem.h
index da68de76fe..141c540ce1 100644
--- a/xen/include/public/tmem.h
+++ b/xen/include/public/tmem.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_TMEM_H__
-#define __XEN_PUBLIC_TMEM_H__
+#ifndef PUBLIC__TMEM_H
+#define PUBLIC__TMEM_H
 
 #include "xen.h"
 
@@ -92,7 +92,7 @@ DEFINE_XEN_GUEST_HANDLE(tmem_op_t);
 
 #endif  /* __XEN_INTERFACE_VERSION__ < 0x00041300 */
 
-#endif /* __XEN_PUBLIC_TMEM_H__ */
+#endif /* PUBLIC__TMEM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/trace.h b/xen/include/public/trace.h
index 141efa0ea7..093b388cee 100644
--- a/xen/include/public/trace.h
+++ b/xen/include/public/trace.h
@@ -6,8 +6,8 @@
  * Copyright (C) 2005 Bin Ren
  */
 
-#ifndef __XEN_PUBLIC_TRACE_H__
-#define __XEN_PUBLIC_TRACE_H__
+#ifndef PUBLIC__TRACE_H
+#define PUBLIC__TRACE_H
 
 #define TRACE_EXTRA_MAX    7
 #define TRACE_EXTRA_SHIFT 28
@@ -313,7 +313,7 @@ struct t_info {
     /* MFN lists immediately after the header */
 };
 
-#endif /* __XEN_PUBLIC_TRACE_H__ */
+#endif /* PUBLIC__TRACE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/vcpu.h b/xen/include/public/vcpu.h
index f7445ac0b0..c3ad41a1fc 100644
--- a/xen/include/public/vcpu.h
+++ b/xen/include/public/vcpu.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_PUBLIC_VCPU_H__
-#define __XEN_PUBLIC_VCPU_H__
+#ifndef PUBLIC__VCPU_H
+#define PUBLIC__VCPU_H
 
 #include "xen.h"
 
@@ -243,7 +243,7 @@ DEFINE_XEN_GUEST_HANDLE(vcpu_register_time_memory_area_t);
 #define VCPUOP_register_runstate_phys_area      14
 #define VCPUOP_register_vcpu_time_phys_area     15
 
-#endif /* __XEN_PUBLIC_VCPU_H__ */
+#endif /* PUBLIC__VCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/version.h b/xen/include/public/version.h
index cbc4ef7a46..02d0e1a5ee 100644
--- a/xen/include/public/version.h
+++ b/xen/include/public/version.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2005, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_PUBLIC_VERSION_H__
-#define __XEN_PUBLIC_VERSION_H__
+#ifndef PUBLIC__VERSION_H
+#define PUBLIC__VERSION_H
 
 #include "xen.h"
 
@@ -110,7 +110,7 @@ struct xen_build_id {
 };
 typedef struct xen_build_id xen_build_id_t;
 
-#endif /* __XEN_PUBLIC_VERSION_H__ */
+#endif /* PUBLIC__VERSION_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/xen-compat.h b/xen/include/public/xen-compat.h
index 078b796664..5dba32ad18 100644
--- a/xen/include/public/xen-compat.h
+++ b/xen/include/public/xen-compat.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, Christian Limpach
  */
 
-#ifndef __XEN_PUBLIC_XEN_COMPAT_H__
-#define __XEN_PUBLIC_XEN_COMPAT_H__
+#ifndef PUBLIC__XEN_COMPAT_H
+#define PUBLIC__XEN_COMPAT_H
 
 #define __XEN_LATEST_INTERFACE_VERSION__ 0x00041300
 
@@ -26,4 +26,4 @@
 
 #define COMPAT_FLEX_ARRAY_DIM XEN_FLEX_ARRAY_DIM
 
-#endif /* __XEN_PUBLIC_XEN_COMPAT_H__ */
+#endif /* PUBLIC__XEN_COMPAT_H */
diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
index b47d48d0e2..cd29948391 100644
--- a/xen/include/public/xen.h
+++ b/xen/include/public/xen.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_XEN_H__
-#define __XEN_PUBLIC_XEN_H__
+#ifndef PUBLIC__XEN_H
+#define PUBLIC__XEN_H
 
 #include "xen-compat.h"
 
@@ -1023,7 +1023,7 @@ typedef struct xenctl_bitmap xenctl_bitmap_t;
 
 #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
 
-#endif /* __XEN_PUBLIC_XEN_H__ */
+#endif /* PUBLIC__XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/xencomm.h b/xen/include/public/xencomm.h
index a441f3e270..437d250824 100644
--- a/xen/include/public/xencomm.h
+++ b/xen/include/public/xencomm.h
@@ -3,8 +3,8 @@
  * Copyright (C) IBM Corp. 2006
  */
 
-#ifndef _XEN_XENCOMM_H_
-#define _XEN_XENCOMM_H_
+#ifndef PUBLIC__XENCOMM_H
+#define PUBLIC__XENCOMM_H
 
 /* A xencomm descriptor is a scatter/gather list containing physical
  * addresses corresponding to a virtually contiguous memory area. The
@@ -21,4 +21,4 @@ struct xencomm_desc {
     uint64_t address[0];
 };
 
-#endif /* _XEN_XENCOMM_H_ */
+#endif /* PUBLIC__XENCOMM_H */
diff --git a/xen/include/public/xenoprof.h b/xen/include/public/xenoprof.h
index 2298b6759e..6472b2bae0 100644
--- a/xen/include/public/xenoprof.h
+++ b/xen/include/public/xenoprof.h
@@ -9,8 +9,8 @@
  * Written by Aravind Menon & Jose Renato Santos
  */
 
-#ifndef __XEN_PUBLIC_XENOPROF_H__
-#define __XEN_PUBLIC_XENOPROF_H__
+#ifndef PUBLIC__XENOPROF_H
+#define PUBLIC__XENOPROF_H
 
 #include "xen.h"
 
@@ -122,7 +122,7 @@ struct xenoprof_ibs_counter {
 typedef struct xenoprof_ibs_counter xenoprof_ibs_counter_t;
 DEFINE_XEN_GUEST_HANDLE(xenoprof_ibs_counter_t);
 
-#endif /* __XEN_PUBLIC_XENOPROF_H__ */
+#endif /* PUBLIC__XENOPROF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/xsm/flask_op.h b/xen/include/public/xsm/flask_op.h
index 7185e80621..a31012e024 100644
--- a/xen/include/public/xsm/flask_op.h
+++ b/xen/include/public/xsm/flask_op.h
@@ -5,8 +5,8 @@
  *  Author:  George Coker, <gscoker@alpha.ncsc.mil>
  */
 
-#ifndef __FLASK_OP_H__
-#define __FLASK_OP_H__
+#ifndef PUBLIC__XSM__FLASK_OP_H
+#define PUBLIC__XSM__FLASK_OP_H
 
 #include "../event_channel.h"
 
diff --git a/xen/include/xen/8250-uart.h b/xen/include/xen/8250-uart.h
index d13352940c..7915297a24 100644
--- a/xen/include/xen/8250-uart.h
+++ b/xen/include/xen/8250-uart.h
@@ -19,8 +19,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __XEN_8250_UART_H__
-#define __XEN_8250_UART_H__
+#ifndef XEN__8250_UART_H
+#define XEN__8250_UART_H
 
 /* Register offsets */
 #define UART_RBR          0x00    /* receive buffer       */
@@ -129,7 +129,7 @@
 #define RESUME_DELAY      MILLISECS(10)
 #define RESUME_RETRIES    100
 
-#endif /* __XEN_8250_UART_H__ */
+#endif /* XEN__8250_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h
index bc4818c943..64efc0a7bc 100644
--- a/xen/include/xen/acpi.h
+++ b/xen/include/xen/acpi.h
@@ -21,8 +21,8 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
-#ifndef _LINUX_ACPI_H
-#define _LINUX_ACPI_H
+#ifndef XEN__ACPI_H
+#define XEN__ACPI_H
 
 #ifndef _LINUX
 #define _LINUX
@@ -204,4 +204,4 @@ static inline void acpi_dmar_reinstate(void) {}
 
 #endif /* __ASSEMBLY__ */
 
-#endif /*_LINUX_ACPI_H*/
+#endif /*XEN__ACPI_H*/
diff --git a/xen/include/xen/alternative-call.h b/xen/include/xen/alternative-call.h
index 10f7d7637e..a91ae14416 100644
--- a/xen/include/xen/alternative-call.h
+++ b/xen/include/xen/alternative-call.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef XEN_ALTERNATIVE_CALL
-#define XEN_ALTERNATIVE_CALL
+#ifndef XEN__ALTERNATIVE_CALL_H
+#define XEN__ALTERNATIVE_CALL_H
 
 /*
  * Some subsystems in Xen may have multiple implementations, which can be
@@ -65,4 +65,4 @@
 #define __alt_call_maybe_initdata __ro_after_init
 
 #endif /* !CONFIG_ALTERNATIVE_CALL */
-#endif /* XEN_ALTERNATIVE_CALL */
+#endif /* XEN__ALTERNATIVE_CALL_H */
diff --git a/xen/include/xen/atomic.h b/xen/include/xen/atomic.h
index fa750a18ae..ecff44c23d 100644
--- a/xen/include/xen/atomic.h
+++ b/xen/include/xen/atomic.h
@@ -19,8 +19,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_ATOMIC_H__
-#define __XEN_ATOMIC_H__
+#ifndef XEN__ATOMIC_H
+#define XEN__ATOMIC_H
 
 typedef struct { int counter; } atomic_t;
 
@@ -204,4 +204,4 @@ static inline int atomic_add_negative(int i, atomic_t *v);
  */
 static inline int atomic_add_unless(atomic_t *v, int a, int u);
 
-#endif /* __XEN_ATOMIC_H__ */
+#endif /* XEN__ATOMIC_H */
diff --git a/xen/include/xen/bitmap.h b/xen/include/xen/bitmap.h
index 4b642cd420..83b80214bc 100644
--- a/xen/include/xen/bitmap.h
+++ b/xen/include/xen/bitmap.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BITMAP_H
-#define __XEN_BITMAP_H
+#ifndef XEN__BITMAP_H
+#define XEN__BITMAP_H
 
 #ifndef __ASSEMBLY__
 
@@ -292,4 +292,4 @@ int bitmap_to_xenctl_bitmap(struct xenctl_bitmap *xenctl_bitmap,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_BITMAP_H */
+#endif /* XEN__BITMAP_H */
diff --git a/xen/include/xen/bitops.h b/xen/include/xen/bitops.h
index 12eb88fb12..540cd58e9f 100644
--- a/xen/include/xen/bitops.h
+++ b/xen/include/xen/bitops.h
@@ -1,5 +1,5 @@
-#ifndef XEN_BITOPS_H
-#define XEN_BITOPS_H
+#ifndef XEN__BITOPS_H
+#define XEN__BITOPS_H
 
 #include <xen/compiler.h>
 #include <xen/types.h>
@@ -438,4 +438,4 @@ static inline __u32 ror32(__u32 word, unsigned int shift)
 
 #define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
 
-#endif /* XEN_BITOPS_H */
+#endif /* XEN__BITOPS_H */
diff --git a/xen/include/xen/bug.h b/xen/include/xen/bug.h
index 99814c4bef..6f901fa1e4 100644
--- a/xen/include/xen/bug.h
+++ b/xen/include/xen/bug.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BUG_H__
-#define __XEN_BUG_H__
+#ifndef XEN__BUG_H
+#define XEN__BUG_H
 
 #define BUGFRAME_run_fn 0
 #define BUGFRAME_warn   1
@@ -157,7 +157,7 @@ int do_bug_frame(const struct cpu_user_regs *regs, unsigned long pc);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_BUG_H__ */
+#endif /* XEN__BUG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/byteorder/big_endian.h b/xen/include/xen/byteorder/big_endian.h
index 40eb80a390..5b33acb577 100644
--- a/xen/include/xen/byteorder/big_endian.h
+++ b/xen/include/xen/byteorder/big_endian.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_BIG_ENDIAN_H__
-#define __XEN_BYTEORDER_BIG_ENDIAN_H__
+#ifndef XEN__BYTEORDER__BIG_ENDIAN_H
+#define XEN__BYTEORDER__BIG_ENDIAN_H
 
 #ifndef __BIG_ENDIAN
 #define __BIG_ENDIAN 4321
@@ -99,4 +99,4 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
 
 #include <xen/byteorder/generic.h>
 
-#endif /* __XEN_BYTEORDER_BIG_ENDIAN_H__ */
+#endif /* XEN__BYTEORDER__BIG_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/generic.h b/xen/include/xen/byteorder/generic.h
index 8a0006b755..f97eb4771b 100644
--- a/xen/include/xen/byteorder/generic.h
+++ b/xen/include/xen/byteorder/generic.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_GENERIC_H__
-#define __XEN_BYTEORDER_GENERIC_H__
+#ifndef XEN__BYTEORDER__GENERIC_H
+#define XEN__BYTEORDER__GENERIC_H
 
 /*
  * Generic Byte-reordering support
@@ -65,4 +65,4 @@
 #define cpu_to_be16s __cpu_to_be16s
 #define be16_to_cpus __be16_to_cpus
 
-#endif /* __XEN_BYTEORDER_GENERIC_H__ */
+#endif /* XEN__BYTEORDER__GENERIC_H */
diff --git a/xen/include/xen/byteorder/little_endian.h b/xen/include/xen/byteorder/little_endian.h
index 4955632793..6e944dca1a 100644
--- a/xen/include/xen/byteorder/little_endian.h
+++ b/xen/include/xen/byteorder/little_endian.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_LITTLE_ENDIAN_H__
-#define __XEN_BYTEORDER_LITTLE_ENDIAN_H__
+#ifndef XEN__BYTEORDER__LITTLE_ENDIAN_H
+#define XEN__BYTEORDER__LITTLE_ENDIAN_H
 
 #ifndef __LITTLE_ENDIAN
 #define __LITTLE_ENDIAN 1234
@@ -99,4 +99,4 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
 
 #include <xen/byteorder/generic.h>
 
-#endif /* __XEN_BYTEORDER_LITTLE_ENDIAN_H__ */
+#endif /* XEN__BYTEORDER__LITTLE_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/swab.h b/xen/include/xen/byteorder/swab.h
index 9f817e3c44..96f8834e53 100644
--- a/xen/include/xen/byteorder/swab.h
+++ b/xen/include/xen/byteorder/swab.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_SWAB_H__
-#define __XEN_BYTEORDER_SWAB_H__
+#ifndef XEN__BYTEORDER__SWAB_H
+#define XEN__BYTEORDER__SWAB_H
 
 /*
  * Byte-swapping, independently from CPU endianness
@@ -180,4 +180,4 @@ static inline void __swab64s(__u64 *addr)
 #define swab32s __swab32s
 #define swab64s __swab64s
 
-#endif /* __XEN_BYTEORDER_SWAB_H__ */
+#endif /* XEN__BYTEORDER__SWAB_H */
diff --git a/xen/include/xen/cache.h b/xen/include/xen/cache.h
index 6ee174efa4..9aa5150188 100644
--- a/xen/include/xen/cache.h
+++ b/xen/include/xen/cache.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_CACHE_H
-#define __LINUX_CACHE_H
+#ifndef XEN__CACHE_H
+#define XEN__CACHE_H
 
 #include <asm/cache.h>
 
@@ -15,4 +15,4 @@
 #define __cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
 #endif
 
-#endif /* __LINUX_CACHE_H */
+#endif /* XEN__CACHE_H */
diff --git a/xen/include/xen/compat.h b/xen/include/xen/compat.h
index 7ec9d6567e..d1f6463530 100644
--- a/xen/include/xen/compat.h
+++ b/xen/include/xen/compat.h
@@ -2,8 +2,8 @@
  * compat.h
  */
 
-#ifndef __XEN_COMPAT_H__
-#define __XEN_COMPAT_H__
+#ifndef XEN__COMPAT_H
+#define XEN__COMPAT_H
 
 #include <xen/types.h>
 #ifdef CONFIG_HAS_COMPAT
@@ -243,4 +243,4 @@ void xlat_vcpu_runstate_info(struct vcpu_runstate_info *native);
 
 #endif
 
-#endif /* __XEN_COMPAT_H__ */
+#endif /* XEN__COMPAT_H */
diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
index b118e4ba62..e1ec208873 100644
--- a/xen/include/xen/compiler.h
+++ b/xen/include/xen/compiler.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_COMPILER_H
-#define __LINUX_COMPILER_H
+#ifndef XEN__COMPILER_H
+#define XEN__COMPILER_H
 
 #if !defined(__GNUC__) || (__GNUC__ < 4)
 #error Sorry, your compiler is too old/not recognized.
@@ -184,4 +184,4 @@
 # define CLANG_DISABLE_WARN_GCC_COMPAT_END
 #endif
 
-#endif /* __LINUX_COMPILER_H */
+#endif /* XEN__COMPILER_H */
diff --git a/xen/include/xen/config.h b/xen/include/xen/config.h
index d888b2314d..5202d25a66 100644
--- a/xen/include/xen/config.h
+++ b/xen/include/xen/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __XEN_CONFIG_H__
-#define __XEN_CONFIG_H__
+#ifndef XEN__CONFIG_H
+#define XEN__CONFIG_H
 
 #ifdef CPPCHECK
 #include <generated/compiler-def.h>
@@ -98,4 +98,4 @@
 #define ZERO_BLOCK_PTR ((void *)-1L)
 #endif
 
-#endif /* __XEN_CONFIG_H__ */
+#endif /* XEN__CONFIG_H */
diff --git a/xen/include/xen/console.h b/xen/include/xen/console.h
index 6dfbade3ec..36956faa17 100644
--- a/xen/include/xen/console.h
+++ b/xen/include/xen/console.h
@@ -4,8 +4,8 @@
  * Xen header file concerning console access.
  */
 
-#ifndef __CONSOLE_H__
-#define __CONSOLE_H__
+#ifndef XEN__CONSOLE_H
+#define XEN__CONSOLE_H
 
 #include <xen/inttypes.h>
 #include <public/xen.h>
@@ -50,4 +50,4 @@ void console_serial_puts(const char *s, size_t nr);
 
 extern int8_t opt_console_xen;
 
-#endif /* __CONSOLE_H__ */
+#endif /* XEN__CONSOLE_H */
diff --git a/xen/include/xen/consoled.h b/xen/include/xen/consoled.h
index bd7ab6329e..6975e50631 100644
--- a/xen/include/xen/consoled.h
+++ b/xen/include/xen/consoled.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CONSOLED_H__
-#define __XEN_CONSOLED_H__
+#ifndef XEN__CONSOLED_H
+#define XEN__CONSOLED_H
 
 #include <public/io/console.h>
 
@@ -8,7 +8,7 @@ struct xencons_interface *consoled_get_ring_addr(void);
 void consoled_guest_rx(void);
 void consoled_guest_tx(char c);
 
-#endif /* __XEN_CONSOLED_H__ */
+#endif /* XEN__CONSOLED_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/const.h b/xen/include/xen/const.h
index baf28ef144..16f550959d 100644
--- a/xen/include/xen/const.h
+++ b/xen/include/xen/const.h
@@ -1,7 +1,7 @@
 /* const.h: Macros for dealing with constants.  */
 
-#ifndef __XEN_CONST_H__
-#define __XEN_CONST_H__
+#ifndef XEN__CONST_H
+#define XEN__CONST_H
 
 /* Some constant macros are used in both assembler and
  * C code.  Therefore we cannot annotate them always with
@@ -23,4 +23,4 @@
 
 #define BIT(pos, sfx)   (_AC(1, sfx) << (pos))
 
-#endif /* __XEN_CONST_H__ */
+#endif /* XEN__CONST_H */
diff --git a/xen/include/xen/coverage.h b/xen/include/xen/coverage.h
index ba5fb67947..76101455e0 100644
--- a/xen/include/xen/coverage.h
+++ b/xen/include/xen/coverage.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_COV_H
-#define _XEN_COV_H
+#ifndef XEN__COVERAGE_H
+#define XEN__COVERAGE_H
 
 #ifdef CONFIG_COVERAGE
 #include <public/sysctl.h>
diff --git a/xen/include/xen/cper.h b/xen/include/xen/cper.h
index de8f385bdd..8528ae2447 100644
--- a/xen/include/xen/cper.h
+++ b/xen/include/xen/cper.h
@@ -18,8 +18,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef LINUX_CPER_H
-#define LINUX_CPER_H
+#ifndef XEN__CPER_H
+#define XEN__CPER_H
 
 #include <xen/types.h>
 #include <xen/string.h>
diff --git a/xen/include/xen/cpu.h b/xen/include/xen/cpu.h
index 6bf5786750..8ec0e8ef61 100644
--- a/xen/include/xen/cpu.h
+++ b/xen/include/xen/cpu.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CPU_H__
-#define __XEN_CPU_H__
+#ifndef XEN__CPU_H
+#define XEN__CPU_H
 
 #include <xen/types.h>
 #include <xen/spinlock.h>
@@ -83,4 +83,4 @@ int __cpu_up(unsigned int cpu);
 void __cpu_disable(void);
 void __cpu_die(unsigned int cpu);
 
-#endif /* __XEN_CPU_H__ */
+#endif /* XEN__CPU_H */
diff --git a/xen/include/xen/cpuidle.h b/xen/include/xen/cpuidle.h
index 705d0c1135..0e54eb7d9b 100644
--- a/xen/include/xen/cpuidle.h
+++ b/xen/include/xen/cpuidle.h
@@ -23,8 +23,8 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#ifndef _XEN_CPUIDLE_H
-#define _XEN_CPUIDLE_H
+#ifndef XEN__CPUIDLE_H
+#define XEN__CPUIDLE_H
 
 #include <xen/cpumask.h>
 #include <xen/spinlock.h>
@@ -98,4 +98,4 @@ extern void cpuidle_wakeup_mwait(cpumask_t *mask);
 
 extern void menu_get_trace_data(u32 *expected, u32 *pred);
 
-#endif /* _XEN_CPUIDLE_H */
+#endif /* XEN__CPUIDLE_H */
diff --git a/xen/include/xen/cpumask.h b/xen/include/xen/cpumask.h
index b713bb69a9..4324af7c36 100644
--- a/xen/include/xen/cpumask.h
+++ b/xen/include/xen/cpumask.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CPUMASK_H
-#define __XEN_CPUMASK_H
+#ifndef XEN__CPUMASK_H
+#define XEN__CPUMASK_H
 
 /*
  * Cpumasks provide a bitmap suitable for representing the
@@ -466,4 +466,4 @@ int cpumask_to_xenctl_bitmap(struct xenctl_bitmap *xenctl_cpumap,
 int xenctl_bitmap_to_cpumask(cpumask_var_t *cpumask,
                              const struct xenctl_bitmap *xenctl_cpumap);
 
-#endif /* __XEN_CPUMASK_H */
+#endif /* XEN__CPUMASK_H */
diff --git a/xen/include/xen/ctype.h b/xen/include/xen/ctype.h
index 773ac27aa4..da4122f6ab 100644
--- a/xen/include/xen/ctype.h
+++ b/xen/include/xen/ctype.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_CTYPE_H
-#define _LINUX_CTYPE_H
+#ifndef XEN__CTYPE_H
+#define XEN__CTYPE_H
 
 /*
  * NOTE! This ctype does not handle EOF like the standard C
diff --git a/xen/include/xen/decompress.h b/xen/include/xen/decompress.h
index f5bc17f2b6..d65a3a4346 100644
--- a/xen/include/xen/decompress.h
+++ b/xen/include/xen/decompress.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_GENERIC_H
-#define __XEN_GENERIC_H
+#ifndef XEN__DECOMPRESS_H
+#define XEN__DECOMPRESS_H
 
 typedef int decompress_fn(unsigned char *inbuf, unsigned int len,
                           int (*fill)(void*, unsigned int),
diff --git a/xen/include/xen/delay.h b/xen/include/xen/delay.h
index 8fd3b8f99f..269c034ce1 100644
--- a/xen/include/xen/delay.h
+++ b/xen/include/xen/delay.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_DELAY_H
-#define _LINUX_DELAY_H
+#ifndef XEN__DELAY_H
+#define XEN__DELAY_H
 
 /* Copyright (C) 1993 Linus Torvalds */
 
@@ -11,4 +11,4 @@ static inline void mdelay(unsigned long msec)
         udelay(1000);
 }
 
-#endif /* defined(_LINUX_DELAY_H) */
+#endif /* defined(XEN__DELAY_H) */
diff --git a/xen/include/xen/dm.h b/xen/include/xen/dm.h
index 18417d57f1..27d69a5c91 100644
--- a/xen/include/xen/dm.h
+++ b/xen/include/xen/dm.h
@@ -14,8 +14,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_DM_H__
-#define __XEN_DM_H__
+#ifndef XEN__DM_H
+#define XEN__DM_H
 
 #include <xen/types.h>
 
@@ -31,7 +31,7 @@ struct dmop_args {
 
 int dm_op(const struct dmop_args *op_args);
 
-#endif /* __XEN_DM_H__ */
+#endif /* XEN__DM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/dmi.h b/xen/include/xen/dmi.h
index ed6ffda315..16f13195d7 100644
--- a/xen/include/xen/dmi.h
+++ b/xen/include/xen/dmi.h
@@ -1,5 +1,5 @@
-#ifndef __DMI_H__
-#define __DMI_H__
+#ifndef XEN__DMI_H
+#define XEN__DMI_H
 
 enum dmi_field {
 	DMI_NONE,
@@ -44,4 +44,4 @@ extern void dmi_efi_get_table(const void *smbios, const void *smbios3);
 bool dmi_get_date(int field, int *yearp, int *monthp, int *dayp);
 extern void dmi_end_boot(void);
 
-#endif	/* __DMI_H__ */
+#endif	/* XEN__DMI_H */
diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h
index 3de5635291..99f312e9b4 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -1,6 +1,6 @@
 
-#ifndef __XEN_DOMAIN_H__
-#define __XEN_DOMAIN_H__
+#ifndef XEN__DOMAIN_H
+#define XEN__DOMAIN_H
 
 #include <xen/numa.h>
 #include <xen/types.h>
@@ -171,4 +171,4 @@ extern bool vmtrace_available;
 
 extern bool vpmu_is_available;
 
-#endif /* __XEN_DOMAIN_H__ */
+#endif /* XEN__DOMAIN_H */
diff --git a/xen/include/xen/domain_page.h b/xen/include/xen/domain_page.h
index c89b149e54..4ccf28f26d 100644
--- a/xen/include/xen/domain_page.h
+++ b/xen/include/xen/domain_page.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2003-2006, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_DOMAIN_PAGE_H__
-#define __XEN_DOMAIN_PAGE_H__
+#ifndef XEN__DOMAIN_PAGE_H
+#define XEN__DOMAIN_PAGE_H
 
 #include <xen/mm.h>
 
@@ -77,4 +77,4 @@ static inline void unmap_domain_page_global(const void *va) {};
     (p) = NULL;                     \
 } while ( false )
 
-#endif /* __XEN_DOMAIN_PAGE_H__ */
+#endif /* XEN__DOMAIN_PAGE_H */
diff --git a/xen/include/xen/dt-overlay.h b/xen/include/xen/dt-overlay.h
index b2cedf3f2a..cd44a5cacb 100644
--- a/xen/include/xen/dt-overlay.h
+++ b/xen/include/xen/dt-overlay.h
@@ -8,8 +8,8 @@
  * Written by Vikram Garhwal <vikram.garhwal@amd.com>
  *
  */
-#ifndef __XEN_DT_OVERLAY_H__
-#define __XEN_DT_OVERLAY_H__
+#ifndef XEN__DT_OVERLAY_H
+#define XEN__DT_OVERLAY_H
 
 #include <xen/device_tree.h>
 #include <xen/list.h>
@@ -58,7 +58,7 @@ static inline long dt_overlay_domctl(struct domain *d,
 }
 #endif
 
-#endif /* __XEN_DT_OVERLAY_H__ */
+#endif /* XEN__DT_OVERLAY_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/early_printk.h b/xen/include/xen/early_printk.h
index 5d72293793..41ae0dded1 100644
--- a/xen/include/xen/early_printk.h
+++ b/xen/include/xen/early_printk.h
@@ -1,8 +1,8 @@
 /*
  * printk() for use before the console is initialized
  */
-#ifndef __XEN_EARLY_PRINTK_H__
-#define __XEN_EARLY_PRINTK_H__
+#ifndef XEN__EARLY_PRINTK_H
+#define XEN__EARLY_PRINTK_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/xen/earlycpio.h b/xen/include/xen/earlycpio.h
index 16d9404d73..9e5d740be9 100644
--- a/xen/include/xen/earlycpio.h
+++ b/xen/include/xen/earlycpio.h
@@ -1,5 +1,5 @@
-#ifndef _EARLYCPIO_H
-#define _EARLYCPIO_H
+#ifndef XEN__EARLYCPIO_H
+#define XEN__EARLYCPIO_H
 
 #define MAX_CPIO_FILE_NAME 18
 
@@ -12,4 +12,4 @@ struct cpio_data {
 struct cpio_data find_cpio_data(const char *path, void *data, size_t len,
 				long *offset);
 
-#endif /* _EARLYCPIO_H */
+#endif /* XEN__EARLYCPIO_H */
diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h
index 160804e294..bc3ddffd6d 100644
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_EFI_H__
-#define __XEN_EFI_H__
+#ifndef XEN__EFI_H
+#define XEN__EFI_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -55,4 +55,4 @@ int efi_compat_runtime_call(struct compat_pf_efi_runtime_call *op);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_EFI_H__ */
+#endif /* XEN__EFI_H */
diff --git a/xen/include/xen/elf.h b/xen/include/xen/elf.h
index 4199b4d6e6..48d8dc4ca8 100644
--- a/xen/include/xen/elf.h
+++ b/xen/include/xen/elf.h
@@ -24,8 +24,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef __XEN_ELF_H__
-#define __XEN_ELF_H__
+#ifndef XEN__ELF_H
+#define XEN__ELF_H
 
 #include <xen/elfstructs.h>
 
@@ -34,4 +34,4 @@
 #define ELFNOTE_DESC(_n_) (ELFNOTE_NAME(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
 #define ELFNOTE_NEXT(_n_) ((Elf_Note *)(ELFNOTE_DESC(_n_) + ELFNOTE_ALIGN((_n_)->descsz)))
 
-#endif /* __XEN_ELF_H__ */
+#endif /* XEN__ELF_H */
diff --git a/xen/include/xen/elfcore.h b/xen/include/xen/elfcore.h
index 0d78033424..e5b18a5eff 100644
--- a/xen/include/xen/elfcore.h
+++ b/xen/include/xen/elfcore.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ELFCOREC_H__
-#define __ELFCOREC_H__
+#ifndef XEN__ELFCORE_H
+#define XEN__ELFCORE_H
 
 #include <xen/types.h>
 #include <xen/elf.h>
@@ -71,7 +71,7 @@ typedef struct crash_xen_info {
 #endif
 } crash_xen_info_t;
 
-#endif /* __ELFCOREC_H__ */
+#endif /* XEN__ELFCORE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/elfstructs.h b/xen/include/xen/elfstructs.h
index eb6b87a823..df4712c21a 100644
--- a/xen/include/xen/elfstructs.h
+++ b/xen/include/xen/elfstructs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_ELFSTRUCTS_H__
-#define __XEN_ELFSTRUCTS_H__
+#ifndef XEN__ELFSTRUCTS_H
+#define XEN__ELFSTRUCTS_H
 /*
  * Copyright (c) 1995, 1996 Erik Theisen.  All rights reserved.
  *
@@ -620,4 +620,4 @@ typedef struct {
 #define AuxInfo		Aux64Info
 #endif
 
-#endif /* __XEN_ELFSTRUCTS_H__ */
+#endif /* XEN__ELFSTRUCTS_H */
diff --git a/xen/include/xen/err.h b/xen/include/xen/err.h
index cbdd1bf7f8..52ac753425 100644
--- a/xen/include/xen/err.h
+++ b/xen/include/xen/err.h
@@ -1,5 +1,5 @@
-#if !defined(__XEN_ERR_H__) && !defined(__ASSEMBLY__)
-#define __XEN_ERR_H__
+#if !defined(XEN__ERR_H) && !defined(__ASSEMBLY__)
+#define XEN__ERR_H
 
 #include <xen/compiler.h>
 #include <xen/errno.h>
@@ -41,4 +41,4 @@ static inline int __must_check PTR_RET(const void *ptr)
 	return IS_ERR(ptr) ? PTR_ERR(ptr) : 0;
 }
 
-#endif /* __XEN_ERR_H__ */
+#endif /* XEN__ERR_H */
diff --git a/xen/include/xen/errno.h b/xen/include/xen/errno.h
index 506674701f..bb99a2fdd8 100644
--- a/xen/include/xen/errno.h
+++ b/xen/include/xen/errno.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_ERRNO_H__
-#define __XEN_ERRNO_H__
+#ifndef XEN__ERRNO_H
+#define XEN__ERRNO_H
 
 #ifndef __ASSEMBLY__
 
@@ -15,4 +15,4 @@ enum {
 
 #endif /* __ASSEMBLY__ */
 
-#endif /*  __XEN_ERRNO_H__ */
+#endif /*  XEN__ERRNO_H */
diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h
index 48b79f3d62..e0643abe53 100644
--- a/xen/include/xen/event.h
+++ b/xen/include/xen/event.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2002-2006, K A Fraser
  */
 
-#ifndef __XEN_EVENT_H__
-#define __XEN_EVENT_H__
+#ifndef XEN__EVENT_H
+#define XEN__EVENT_H
 
 #include <xen/sched.h>
 #include <xen/smp.h>
@@ -302,4 +302,4 @@ static inline int evtchn_port_poll(struct domain *d, evtchn_port_t port)
     return rc;
 }
 
-#endif /* __XEN_EVENT_H__ */
+#endif /* XEN__EVENT_H */
diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h
index 50edfecfb6..31e56925a7 100644
--- a/xen/include/xen/grant_table.h
+++ b/xen/include/xen/grant_table.h
@@ -20,8 +20,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_GRANT_TABLE_H__
-#define __XEN_GRANT_TABLE_H__
+#ifndef XEN__GRANT_TABLE_H
+#define XEN__GRANT_TABLE_H
 
 #include <xen/mm-frame.h>
 #include <xen/rwlock.h>
@@ -117,4 +117,4 @@ static inline int gnttab_acquire_resource(
 
 #endif /* CONFIG_GRANT_TABLE */
 
-#endif /* __XEN_GRANT_TABLE_H__ */
+#endif /* XEN__GRANT_TABLE_H */
diff --git a/xen/include/xen/guest_access.h b/xen/include/xen/guest_access.h
index 6489924db6..62b7d8838c 100644
--- a/xen/include/xen/guest_access.h
+++ b/xen/include/xen/guest_access.h
@@ -4,8 +4,8 @@
  * Copyright (x) 2006, K A Fraser
  */
 
-#ifndef __XEN_GUEST_ACCESS_H__
-#define __XEN_GUEST_ACCESS_H__
+#ifndef XEN__GUEST_ACCESS_H
+#define XEN__GUEST_ACCESS_H
 
 #include <asm/guest_access.h>
 #include <xen/types.h>
@@ -186,7 +186,7 @@
 char *safe_copy_string_from_guest(XEN_GUEST_HANDLE(char) u_buf,
                                   size_t size, size_t max_size);
 
-#endif /* __XEN_GUEST_ACCESS_H__ */
+#endif /* XEN__GUEST_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/gunzip.h b/xen/include/xen/gunzip.h
index 805833127a..12fa062b87 100644
--- a/xen/include/xen/gunzip.h
+++ b/xen/include/xen/gunzip.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_GUNZIP_H
-#define __XEN_GUNZIP_H
+#ifndef XEN__GUNZIP_H
+#define XEN__GUNZIP_H
 
 int gzip_check(char *image, unsigned long image_len);
 int perform_gunzip(char *output, char *image, unsigned long image_len);
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index f307dfb597..93263390f9 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -2,8 +2,8 @@
  * hypercall.h
  */
 
-#ifndef __XEN_HYPERCALL_H__
-#define __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
+#define XEN__HYPERCALL_H
 
 #include <xen/types.h>
 #include <xen/time.h>
@@ -58,4 +58,4 @@ common_vcpu_op(int cmd,
 
 void arch_get_xen_caps(xen_capabilities_info_t *info);
 
-#endif /* __XEN_HYPERCALL_H__ */
+#endif /* XEN__HYPERCALL_H */
diff --git a/xen/include/xen/init.h b/xen/include/xen/init.h
index 0a42238337..39ad1d71d4 100644
--- a/xen/include/xen/init.h
+++ b/xen/include/xen/init.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_INIT_H
-#define _LINUX_INIT_H
+#ifndef XEN__INIT_H
+#define XEN__INIT_H
 
 /*
  * Mark functions and data as being only used at initialization
@@ -82,4 +82,4 @@ void do_initcalls(void);
 #define __hwdom_initdata  __initdata
 #endif
 
-#endif /* _LINUX_INIT_H */
+#endif /* XEN__INIT_H */
diff --git a/xen/include/xen/inttypes.h b/xen/include/xen/inttypes.h
index 28c0053f1c..b7172f8746 100644
--- a/xen/include/xen/inttypes.h
+++ b/xen/include/xen/inttypes.h
@@ -18,8 +18,8 @@
  *	ISO C99: 7.8 Format conversion of integer types	<inttypes.h>
  */
 
-#ifndef _XEN_INTTYPES_H
-#define _XEN_INTTYPES_H	1
+#ifndef XEN__INTTYPES_H
+#define XEN__INTTYPES_H	1
 
 #include <xen/types.h>
 
@@ -245,4 +245,4 @@
 # define SCNuPTR	__PRIPTR_PREFIX "u"
 # define SCNxPTR	__PRIPTR_PREFIX "x"
 
-#endif /* _XEN_INTTYPES_H */
+#endif /* XEN__INTTYPES_H */
diff --git a/xen/include/xen/iocap.h b/xen/include/xen/iocap.h
index ffbc48b60f..c9ec5c931b 100644
--- a/xen/include/xen/iocap.h
+++ b/xen/include/xen/iocap.h
@@ -4,8 +4,8 @@
  * Per-domain I/O capabilities.
  */
 
-#ifndef __XEN_IOCAP_H__
-#define __XEN_IOCAP_H__
+#ifndef XEN__IOCAP_H
+#define XEN__IOCAP_H
 
 #include <xen/sched.h>
 #include <xen/rangeset.h>
@@ -66,4 +66,4 @@ static inline int iomem_deny_access(struct domain *d, unsigned long s,
     ? irq__ : 0;                                        \
 })
 
-#endif /* __XEN_IOCAP_H__ */
+#endif /* XEN__IOCAP_H */
diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
index 29a17e8ff5..ce54ff2d57 100644
--- a/xen/include/xen/ioreq.h
+++ b/xen/include/xen/ioreq.h
@@ -16,8 +16,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_IOREQ_H__
-#define __XEN_IOREQ_H__
+#ifndef XEN__IOREQ_H
+#define XEN__IOREQ_H
 
 #include <xen/sched.h>
 
@@ -138,7 +138,7 @@ bool arch_ioreq_server_get_type_addr(const struct domain *d, const ioreq_t *p,
                                      uint8_t *type, uint64_t *addr);
 void arch_ioreq_domain_init(struct domain *d);
 
-#endif /* __XEN_IOREQ_H__ */
+#endif /* XEN__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h
index 95034c0d6b..c037e104c3 100644
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_IRQ_H__
-#define __XEN_IRQ_H__
+#ifndef XEN__IRQ_H
+#define XEN__IRQ_H
 
 #include <xen/cpumask.h>
 #include <xen/rcupdate.h>
@@ -211,4 +211,4 @@ unsigned int arch_hwdom_irqs(const struct domain *d);
 void arch_evtchn_bind_pirq(struct domain *d, int pirq);
 #endif
 
-#endif /* __XEN_IRQ_H__ */
+#endif /* XEN__IRQ_H */
diff --git a/xen/include/xen/irq_cpustat.h b/xen/include/xen/irq_cpustat.h
index b9629f25c2..81e8f87d49 100644
--- a/xen/include/xen/irq_cpustat.h
+++ b/xen/include/xen/irq_cpustat.h
@@ -1,5 +1,5 @@
-#ifndef __irq_cpustat_h
-#define __irq_cpustat_h
+#ifndef XEN__IRQ_CPUSTAT_H
+#define XEN__IRQ_CPUSTAT_H
 
 /*
  * Contains default mappings for irq_cpustat_t, used by almost every
@@ -26,4 +26,4 @@ extern irq_cpustat_t irq_stat[];
 #define local_irq_count(cpu)	__IRQ_STAT((cpu), __local_irq_count)
 #define mwait_wakeup(cpu)	__IRQ_STAT((cpu), __mwait_wakeup)
 
-#endif	/* __irq_cpustat_h */
+#endif	/* XEN__IRQ_CPUSTAT_H */
diff --git a/xen/include/xen/kconfig.h b/xen/include/xen/kconfig.h
index c25dc0f6c2..820836b0a1 100644
--- a/xen/include/xen/kconfig.h
+++ b/xen/include/xen/kconfig.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KCONFIG_H
-#define __XEN_KCONFIG_H
+#ifndef XEN__KCONFIG_H
+#define XEN__KCONFIG_H
 
 #include <generated/autoconf.h>
 
@@ -46,4 +46,4 @@
 #define STATIC_IF_NOT(option) static_if_not(option)
 #endif
 
-#endif /* __XEN_KCONFIG_H */
+#endif /* XEN__KCONFIG_H */
diff --git a/xen/include/xen/kernel.h b/xen/include/xen/kernel.h
index c5b6cc9777..3b6687e990 100644
--- a/xen/include/xen/kernel.h
+++ b/xen/include/xen/kernel.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_KERNEL_H
-#define _LINUX_KERNEL_H
+#ifndef XEN__KERNEL_H
+#define XEN__KERNEL_H
 
 /*
  * 'kernel.h' contains some often-used function prototypes etc
@@ -100,5 +100,5 @@ struct vcpu;
 void cf_check show_execution_state(const struct cpu_user_regs *regs);
 void vcpu_show_execution_state(struct vcpu *v);
 
-#endif /* _LINUX_KERNEL_H */
+#endif /* XEN__KERNEL_H */
 
diff --git a/xen/include/xen/keyhandler.h b/xen/include/xen/keyhandler.h
index 6fee878fdf..5362e6de04 100644
--- a/xen/include/xen/keyhandler.h
+++ b/xen/include/xen/keyhandler.h
@@ -7,8 +7,8 @@
  * nicer fashion than just editing the serial/keyboard drivers.
  */
 
-#ifndef __XEN_KEYHANDLER_H__
-#define __XEN_KEYHANDLER_H__
+#ifndef XEN__KEYHANDLER_H
+#define XEN__KEYHANDLER_H
 
 #include <xen/types.h>
 
@@ -57,4 +57,4 @@ enum crash_reason {
 
 void keyhandler_crash_action(enum crash_reason reason);
 
-#endif /* __XEN_KEYHANDLER_H__ */
+#endif /* XEN__KEYHANDLER_H */
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 81b722ea3e..5d75fca614 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -1,5 +1,5 @@
-#ifndef __LIB_H__
-#define __LIB_H__
+#ifndef XEN__LIB_H
+#define XEN__LIB_H
 
 #include <xen/macros.h>
 
@@ -202,4 +202,4 @@ void *bsearch(const void *key, const void *base, size_t num, size_t size,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __LIB_H__ */
+#endif /* XEN__LIB_H */
diff --git a/xen/include/xen/libelf.h b/xen/include/xen/libelf.h
index a99d33c251..82151e3292 100644
--- a/xen/include/xen/libelf.h
+++ b/xen/include/xen/libelf.h
@@ -20,8 +20,8 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#ifndef __XEN_LIBELF_H__
-#define __XEN_LIBELF_H__
+#ifndef XEN__LIBELF_H
+#define XEN__LIBELF_H
 
 #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
 #define XEN_ELF_LITTLE_ENDIAN
@@ -504,4 +504,4 @@ static inline void ELF_ADVANCE_DEST(struct elf_binary *elf, uint64_t amount)
  * is in use or until elf_set_xdest(,0,0) is called. */
 void elf_set_xdest(struct elf_binary *elf, void *addr, uint64_t size);
 
-#endif /* __XEN_LIBELF_H__ */
+#endif /* XEN__LIBELF_H */
diff --git a/xen/include/xen/linkage.h b/xen/include/xen/linkage.h
index 3d401b88c1..a81300ccff 100644
--- a/xen/include/xen/linkage.h
+++ b/xen/include/xen/linkage.h
@@ -1,5 +1,5 @@
-#ifndef __LINKAGE_H__
-#define __LINKAGE_H__
+#ifndef XEN__LINKAGE_H
+#define XEN__LINKAGE_H
 
 #ifdef __ASSEMBLY__
 
@@ -64,4 +64,4 @@
 
 #endif /*  __ASSEMBLY__ */
 
-#endif /* __LINKAGE_H__ */
+#endif /* XEN__LINKAGE_H */
diff --git a/xen/include/xen/linux-compat.h b/xen/include/xen/linux-compat.h
index 1f4186102a..32f08b03f0 100644
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -6,8 +6,8 @@
  * files.
  */
 
-#ifndef __XEN_LINUX_COMPAT_H__
-#define __XEN_LINUX_COMPAT_H__
+#ifndef XEN__LINUX_COMPAT_H
+#define XEN__LINUX_COMPAT_H
 
 #include <xen/types.h>
 
@@ -21,4 +21,4 @@ typedef paddr_t phys_addr_t;
 
 #define __ffs(x) (ffsl(x) - 1UL)
 
-#endif /* __XEN_LINUX_COMPAT_H__ */
+#endif /* XEN__LINUX_COMPAT_H */
diff --git a/xen/include/xen/list.h b/xen/include/xen/list.h
index 62169f4674..4cfb196940 100644
--- a/xen/include/xen/list.h
+++ b/xen/include/xen/list.h
@@ -4,8 +4,8 @@
  * Useful linked-list definitions taken from the Linux kernel (2.6.18).
  */
 
-#ifndef __XEN_LIST_H__
-#define __XEN_LIST_H__
+#ifndef XEN__LIST_H
+#define XEN__LIST_H
 
 #include <xen/bug.h>
 #include <asm/system.h>
@@ -979,4 +979,4 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
           ({ tpos = hlist_entry(pos, typeof(*(tpos)), member); 1;});    \
           (pos) = (pos)->next)
 
-#endif /* __XEN_LIST_H__ */
+#endif /* XEN__LIST_H */
diff --git a/xen/include/xen/list_sort.h b/xen/include/xen/list_sort.h
index 13ce0a55ec..9ec309ac83 100644
--- a/xen/include/xen/list_sort.h
+++ b/xen/include/xen/list_sort.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_LIST_SORT_H
-#define _LINUX_LIST_SORT_H
+#ifndef XEN__LIST_SORT_H
+#define XEN__LIST_SORT_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/xen/lz4.h b/xen/include/xen/lz4.h
index fa20520110..fd11d01ef9 100644
--- a/xen/include/xen/lz4.h
+++ b/xen/include/xen/lz4.h
@@ -1,5 +1,5 @@
-#ifndef __LZ4_H__
-#define __LZ4_H__
+#ifndef XEN__LZ4_H
+#define XEN__LZ4_H
 
 /*
  * LZ4 Kernel Interface
diff --git a/xen/include/xen/lzo.h b/xen/include/xen/lzo.h
index e920027fad..7d3949e3f1 100644
--- a/xen/include/xen/lzo.h
+++ b/xen/include/xen/lzo.h
@@ -1,5 +1,5 @@
-#ifndef __LZO_H__
-#define __LZO_H__
+#ifndef XEN__LZO_H
+#define XEN__LZO_H
 /*
  *  LZO Public Kernel Interface
  *  A mini subset of the LZO real-time data compression library
diff --git a/xen/include/xen/macros.h b/xen/include/xen/macros.h
index 19caaa8026..9e470c7649 100644
--- a/xen/include/xen/macros.h
+++ b/xen/include/xen/macros.h
@@ -1,5 +1,5 @@
-#ifndef __MACROS_H__
-#define __MACROS_H__
+#ifndef XEN__MACROS_H
+#define XEN__MACROS_H
 
 #define ROUNDUP(x, a) (((x) + (a) - 1) & ~((a) - 1))
 
@@ -147,7 +147,7 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MACROS_H__ */
+#endif /* XEN__MACROS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/mm-frame.h b/xen/include/xen/mm-frame.h
index d973aec901..d8dffe22d6 100644
--- a/xen/include/xen/mm-frame.h
+++ b/xen/include/xen/mm-frame.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_FRAME_NUM_H__
-#define __XEN_FRAME_NUM_H__
+#ifndef XEN__MM_FRAME_H
+#define XEN__MM_FRAME_H
 
 #include <xen/kernel.h>
 #include <xen/typesafe.h>
@@ -85,4 +85,4 @@ TYPE_SAFE(unsigned long, pfn);
 #define pfn_x
 #endif
 
-#endif /* __XEN_FRAME_NUM_H__ */
+#endif /* XEN__MM_FRAME_H */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 7561297a75..3a64b013c4 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -58,8 +58,8 @@
  *   documented, meanings.
  */
 
-#ifndef __XEN_MM_H__
-#define __XEN_MM_H__
+#ifndef XEN__MM_H
+#define XEN__MM_H
 
 #include <xen/bug.h>
 #include <xen/compiler.h>
@@ -648,4 +648,4 @@ static inline void put_page_alloc_ref(struct page_info *page)
     }
 }
 
-#endif /* __XEN_MM_H__ */
+#endif /* XEN__MM_H */
diff --git a/xen/include/xen/msi.h b/xen/include/xen/msi.h
index c903d0050c..4e462881ae 100644
--- a/xen/include/xen/msi.h
+++ b/xen/include/xen/msi.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_MSI_H_
-#define __XEN_MSI_H_
+#ifndef XEN__MSI_H
+#define XEN__MSI_H
 
 #include <xen/pci.h>
 
diff --git a/xen/include/xen/multiboot.h b/xen/include/xen/multiboot.h
index 80a1761d9e..30959a5bb6 100644
--- a/xen/include/xen/multiboot.h
+++ b/xen/include/xen/multiboot.h
@@ -14,8 +14,8 @@
    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 __MULTIBOOT_H__
-#define __MULTIBOOT_H__
+#ifndef XEN__MULTIBOOT_H
+#define XEN__MULTIBOOT_H
 
 #include "const.h"
 
@@ -130,4 +130,4 @@ typedef struct memory_map memory_map_t;
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MULTIBOOT_H__ */
+#endif /* XEN__MULTIBOOT_H */
diff --git a/xen/include/xen/multiboot2.h b/xen/include/xen/multiboot2.h
index f792040205..20c6082ea9 100644
--- a/xen/include/xen/multiboot2.h
+++ b/xen/include/xen/multiboot2.h
@@ -23,8 +23,8 @@
  *  IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#ifndef __MULTIBOOT2_H__
-#define __MULTIBOOT2_H__
+#ifndef XEN__MULTIBOOT2_H
+#define XEN__MULTIBOOT2_H
 
 /* The magic field should contain this.  */
 #define MULTIBOOT2_HEADER_MAGIC                         0xe85250d6
@@ -232,4 +232,4 @@ typedef struct {
 } multiboot2_tag_module_t;
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MULTIBOOT2_H__ */
+#endif /* XEN__MULTIBOOT2_H */
diff --git a/xen/include/xen/multicall.h b/xen/include/xen/multicall.h
index 5bebeca7b2..fd71dbd9a1 100644
--- a/xen/include/xen/multicall.h
+++ b/xen/include/xen/multicall.h
@@ -2,8 +2,8 @@
  * multicall.h
  */
 
-#ifndef __XEN_MULTICALL_H__
-#define __XEN_MULTICALL_H__
+#ifndef XEN__MULTICALL_H
+#define XEN__MULTICALL_H
 
 #ifdef CONFIG_COMPAT
 #include <compat/xen.h>
@@ -27,4 +27,4 @@ enum mc_disposition {
     mc_preempt,
 } arch_do_multicall_call(struct mc_state *mcs);
 
-#endif /* __XEN_MULTICALL_H__ */
+#endif /* XEN__MULTICALL_H */
diff --git a/xen/include/xen/nodemask.h b/xen/include/xen/nodemask.h
index 1dd6c7458e..8cab82c7a2 100644
--- a/xen/include/xen/nodemask.h
+++ b/xen/include/xen/nodemask.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_NODEMASK_H
-#define __LINUX_NODEMASK_H
+#ifndef XEN__NODEMASK_H
+#define XEN__NODEMASK_H
 
 /*
  * Nodemasks provide a bitmap suitable for representing the
@@ -290,4 +290,4 @@ extern nodemask_t node_online_map;
 
 #define for_each_online_node(node) for_each_node_mask((node), node_online_map)
 
-#endif /* __LINUX_NODEMASK_H */
+#endif /* XEN__NODEMASK_H */
diff --git a/xen/include/xen/nospec.h b/xen/include/xen/nospec.h
index 828dbd4e0a..99e6d5a6e9 100644
--- a/xen/include/xen/nospec.h
+++ b/xen/include/xen/nospec.h
@@ -4,8 +4,8 @@
 /* Copyright(c) 2018 Intel Corporation. All rights reserved. */
 /* Copyright(c) 2018 Citrix Systems R&D Ltd. All rights reserved. */
 
-#ifndef XEN_NOSPEC_H
-#define XEN_NOSPEC_H
+#ifndef XEN__NOSPEC_H
+#define XEN__NOSPEC_H
 
 #include <xen/stdbool.h>
 
@@ -87,7 +87,7 @@ static always_inline bool lock_evaluate_nospec(bool condition)
 #endif
 }
 
-#endif /* XEN_NOSPEC_H */
+#endif /* XEN__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/notifier.h b/xen/include/xen/notifier.h
index 05359e8a85..e2ce641311 100644
--- a/xen/include/xen/notifier.h
+++ b/xen/include/xen/notifier.h
@@ -7,8 +7,8 @@
  * Original code from Linux kernel 2.6.27 (Alan Cox <Alan.Cox@linux.org>)
  */
  
-#ifndef __XEN_NOTIFIER_H__
-#define __XEN_NOTIFIER_H__
+#ifndef XEN__NOTIFIER_H
+#define XEN__NOTIFIER_H
 
 #include <xen/types.h>
 #include <xen/errno.h>
@@ -68,4 +68,4 @@ static inline int notifier_to_errno(int ret)
     return (ret == NOTIFY_DONE) ? 0 : -(ret & ~NOTIFY_STOP_MASK);
 }
 
-#endif /* __XEN_NOTIFIER_H__ */
+#endif /* XEN__NOTIFIER_H */
diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
index fd1511a6fb..1617901fc2 100644
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_NUMA_H
-#define _XEN_NUMA_H
+#ifndef XEN__NUMA_H
+#define XEN__NUMA_H
 
 #include <xen/mm-frame.h>
 
@@ -135,4 +135,4 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
 
 #define page_to_nid(pg) mfn_to_nid(page_to_mfn(pg))
 
-#endif /* _XEN_NUMA_H */
+#endif /* XEN__NUMA_H */
diff --git a/xen/include/xen/p2m-common.h b/xen/include/xen/p2m-common.h
index a322e738ef..7cee4c92f2 100644
--- a/xen/include/xen/p2m-common.h
+++ b/xen/include/xen/p2m-common.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_P2M_COMMON_H
-#define _XEN_P2M_COMMON_H
+#ifndef XEN__P2M_COMMON_H
+#define XEN__P2M_COMMON_H
 
 #include <xen/mm-frame.h>
 
@@ -41,4 +41,4 @@ int __must_check check_get_page_from_gfn(struct domain *d, gfn_t gfn,
                                          struct page_info **page_p);
 
 
-#endif /* _XEN_P2M_COMMON_H */
+#endif /* XEN__P2M_COMMON_H */
diff --git a/xen/include/xen/page-defs.h b/xen/include/xen/page-defs.h
index 682da6b7b4..c06f247921 100644
--- a/xen/include/xen/page-defs.h
+++ b/xen/include/xen/page-defs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PAGE_DEFS_H__
-#define __XEN_PAGE_DEFS_H__
+#ifndef XEN__PAGE_DEFS_H
+#define XEN__PAGE_DEFS_H
 
 /* Helpers for different page granularities. */
 #define PAGE_SIZE_GRAN(gran)        ((paddr_t)1 << PAGE_SHIFT_##gran)
@@ -32,4 +32,4 @@
 #define PAGE_MASK_1G                PAGE_MASK_GRAN(1G)
 #define PAGE_ALIGN_1G(addr)         PAGE_ALIGN_GRAN(1G, addr)
 
-#endif /* __XEN_PAGE_DEFS_H__ */
+#endif /* XEN__PAGE_DEFS_H */
diff --git a/xen/include/xen/page-size.h b/xen/include/xen/page-size.h
index 78ea57f324..b2a346e6b1 100644
--- a/xen/include/xen/page-size.h
+++ b/xen/include/xen/page-size.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PAGE_SIZE_H__
-#define __XEN_PAGE_SIZE_H__
+#ifndef XEN__PAGE_SIZE_H
+#define XEN__PAGE_SIZE_H
 
 #include <xen/const.h>
 #include <asm/page-bits.h>
diff --git a/xen/include/xen/paging.h b/xen/include/xen/paging.h
index a126c9bf58..08580a4c73 100644
--- a/xen/include/xen/paging.h
+++ b/xen/include/xen/paging.h
@@ -1,7 +1,7 @@
-#ifndef __XEN_PAGING_H__
-#define __XEN_PAGING_H__
+#ifndef XEN__PAGING_H
+#define XEN__PAGING_H
 
 #include <asm/paging.h>
 #include <asm/p2m.h>
 
-#endif /* __XEN_PAGING_H__ */
+#endif /* XEN__PAGING_H */
diff --git a/xen/include/xen/param.h b/xen/include/xen/param.h
index 1bdbab34ab..970af8d779 100644
--- a/xen/include/xen/param.h
+++ b/xen/include/xen/param.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_PARAM_H
-#define _XEN_PARAM_H
+#ifndef XEN__PARAM_H
+#define XEN__PARAM_H
 
 #include <xen/bug.h>
 #include <xen/hypfs.h>
@@ -196,4 +196,4 @@ static inline void no_config_param(const char *cfg, const char *param,
            cfg, param, len, s);
 }
 
-#endif /* _XEN_PARAM_H */
+#endif /* XEN__PARAM_H */
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index 63e49f0117..b8c6727d1b 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -4,8 +4,8 @@
  * PCI access functions.
  */
 
-#ifndef __XEN_PCI_H__
-#define __XEN_PCI_H__
+#ifndef XEN__PCI_H
+#define XEN__PCI_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -261,4 +261,4 @@ static inline int arch_pci_clean_pirqs(struct domain *d)
 }
 #endif /* CONFIG_HVM */
 
-#endif /* __XEN_PCI_H__ */
+#endif /* XEN__PCI_H */
diff --git a/xen/include/xen/pci_regs.h b/xen/include/xen/pci_regs.h
index 250ba106db..8a8f8e4b8e 100644
--- a/xen/include/xen/pci_regs.h
+++ b/xen/include/xen/pci_regs.h
@@ -19,8 +19,8 @@
  *	The Hypertransport I/O Link Specification
  */
 
-#ifndef LINUX_PCI_REGS_H
-#define LINUX_PCI_REGS_H
+#ifndef XEN__PCI_REGS_H
+#define XEN__PCI_REGS_H
 
 /*
  * Conventional PCI and PCI-X Mode 1 devices have 256 bytes of
@@ -616,4 +616,4 @@
 #define  PCI_SRIOV_VFM_MO	0x2	/* Active.MigrateOut */
 #define  PCI_SRIOV_VFM_AV	0x3	/* Active.Available */
 
-#endif /* LINUX_PCI_REGS_H */
+#endif /* XEN__PCI_REGS_H */
diff --git a/xen/include/xen/pdx.h b/xen/include/xen/pdx.h
index 23f3956db8..04a31e0629 100644
--- a/xen/include/xen/pdx.h
+++ b/xen/include/xen/pdx.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PDX_H__
-#define __XEN_PDX_H__
+#ifndef XEN__PDX_H
+#define XEN__PDX_H
 
 /*
  * PDX (Page inDeX)
@@ -239,7 +239,7 @@ static inline void pfn_pdx_hole_setup(unsigned long mask)
 }
 
 #endif /* CONFIG_PDX_COMPRESSION */
-#endif /* __XEN_PDX_H__ */
+#endif /* XEN__PDX_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/percpu.h b/xen/include/xen/percpu.h
index 57522f346b..2cc1ed4a3a 100644
--- a/xen/include/xen/percpu.h
+++ b/xen/include/xen/percpu.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PERCPU_H__
-#define __XEN_PERCPU_H__
+#ifndef XEN__PERCPU_H
+#define XEN__PERCPU_H
 
 #define DECLARE_PER_CPU(type, name) \
     extern __typeof__(type) per_cpu__ ## name
@@ -33,4 +33,4 @@
 #define get_cpu_var(var) this_cpu(var)
 #define put_cpu_var(var)
 
-#endif /* __XEN_PERCPU_H__ */
+#endif /* XEN__PERCPU_H */
diff --git a/xen/include/xen/perfc.h b/xen/include/xen/perfc.h
index f9009dc388..85fa4d8397 100644
--- a/xen/include/xen/perfc.h
+++ b/xen/include/xen/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PERFC_H__
-#define __XEN_PERFC_H__
+#ifndef XEN__PERFC_H
+#define XEN__PERFC_H
 
 #ifdef CONFIG_PERF_COUNTERS
 
@@ -116,4 +116,4 @@ extern void cf_check perfc_reset(unsigned char key);
 
 #endif /* CONFIG_PERF_COUNTERS */
 
-#endif /* __XEN_PERFC_H__ */
+#endif /* XEN__PERFC_H */
diff --git a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h
index 0027d95a60..38865b614e 100644
--- a/xen/include/xen/perfc_defn.h
+++ b/xen/include/xen/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef XEN__PERFC_DEFN_H*/
+/*#define XEN__PERFC_DEFN_H*/
 
 #include <asm/perfc_defn.h>
 
@@ -83,4 +83,4 @@ PERFCOUNTER(tickled_cpu_overridden, "csched2: tickled_cpu_overridden")
 
 PERFCOUNTER(need_flush_tlb_flush,   "PG_need_flush tlb flushes")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* XEN__PERFC_DEFN_H */
diff --git a/xen/include/xen/pfn.h b/xen/include/xen/pfn.h
index 1ca9b095e0..14fe4c8864 100644
--- a/xen/include/xen/pfn.h
+++ b/xen/include/xen/pfn.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PFN_H__
-#define __XEN_PFN_H__
+#ifndef XEN__PFN_H
+#define XEN__PFN_H
 
 #include <xen/page-size.h>
 
@@ -9,4 +9,4 @@
 #define round_pgup(p)    (((p) + (PAGE_SIZE - 1)) & PAGE_MASK)
 #define round_pgdown(p)  ((p) & PAGE_MASK)
 
-#endif /* __XEN_PFN_H__ */
+#endif /* XEN__PFN_H */
diff --git a/xen/include/xen/pmap.h b/xen/include/xen/pmap.h
index 93e61b1087..7da30c1240 100644
--- a/xen/include/xen/pmap.h
+++ b/xen/include/xen/pmap.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PMAP_H__
-#define __XEN_PMAP_H__
+#ifndef XEN__PMAP_H
+#define XEN__PMAP_H
 
 /* Large enough for mapping 5 levels of page tables with some headroom */
 #define NUM_FIX_PMAP 8
@@ -13,4 +13,4 @@ void pmap_unmap(const void *p);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_PMAP_H__ */
+#endif /* XEN__PMAP_H */
diff --git a/xen/include/xen/pmstat.h b/xen/include/xen/pmstat.h
index e6ab1423a9..38837ed8e3 100644
--- a/xen/include/xen/pmstat.h
+++ b/xen/include/xen/pmstat.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PMSTAT_H_
-#define __XEN_PMSTAT_H_
+#ifndef XEN__PMSTAT_H
+#define XEN__PMSTAT_H
 
 #include <xen/types.h>
 #include <public/platform.h> /* for struct xen_processor_power */
@@ -14,4 +14,4 @@ int pmstat_reset_cx_stat(unsigned int cpu);
 int do_get_pm_info(struct xen_sysctl_get_pmstat *op);
 int do_pm_op(struct xen_sysctl_pm_op *op);
 
-#endif /* __XEN_PMSTAT_H_ */
+#endif /* XEN__PMSTAT_H */
diff --git a/xen/include/xen/preempt.h b/xen/include/xen/preempt.h
index aa059b497b..c1a41ba330 100644
--- a/xen/include/xen/preempt.h
+++ b/xen/include/xen/preempt.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2010, Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_PREEMPT_H__
-#define __XEN_PREEMPT_H__
+#ifndef XEN__PREEMPT_H
+#define XEN__PREEMPT_H
 
 #include <xen/types.h>
 #include <xen/percpu.h>
@@ -34,4 +34,4 @@ void ASSERT_NOT_IN_ATOMIC(void);
 #define ASSERT_NOT_IN_ATOMIC() ((void)0)
 #endif
 
-#endif /* __XEN_PREEMPT_H__ */
+#endif /* XEN__PREEMPT_H */
diff --git a/xen/include/xen/prefetch.h b/xen/include/xen/prefetch.h
index 85831f953f..70f4780285 100644
--- a/xen/include/xen/prefetch.h
+++ b/xen/include/xen/prefetch.h
@@ -7,8 +7,8 @@
  *
  */
 
-#ifndef _LINUX_PREFETCH_H
-#define _LINUX_PREFETCH_H
+#ifndef XEN__PREFETCH_H
+#define XEN__PREFETCH_H
 
 #include <asm/processor.h>
 #include <asm/cache.h>
diff --git a/xen/include/xen/pv_console.h b/xen/include/xen/pv_console.h
index 2133aa71cb..5c984dd543 100644
--- a/xen/include/xen/pv_console.h
+++ b/xen/include/xen/pv_console.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PV_CONSOLE_H__
-#define __XEN_PV_CONSOLE_H__
+#ifndef XEN__PV_CONSOLE_H
+#define XEN__PV_CONSOLE_H
 
 #include <xen/serial.h>
 
@@ -21,7 +21,7 @@ static inline void pv_console_puts(const char *buf, size_t nr) { }
 static inline size_t pv_console_rx(void) { return 0; }
 
 #endif /* !CONFIG_XEN_GUEST */
-#endif /* __XEN_PV_CONSOLE_H__ */
+#endif /* XEN__PV_CONSOLE_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/radix-tree.h b/xen/include/xen/radix-tree.h
index 58c40312e6..4a3ad62702 100644
--- a/xen/include/xen/radix-tree.h
+++ b/xen/include/xen/radix-tree.h
@@ -16,8 +16,8 @@
  * 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_RADIX_TREE_H
-#define _XEN_RADIX_TREE_H
+#ifndef XEN__RADIX_TREE_H
+#define XEN__RADIX_TREE_H
 
 #include <xen/types.h>
 #include <xen/lib.h>
@@ -224,4 +224,4 @@ unsigned long radix_tree_next_hole(struct radix_tree_root *root,
 unsigned long radix_tree_prev_hole(struct radix_tree_root *root,
 				unsigned long index, unsigned long max_scan);
 
-#endif /* _XEN_RADIX_TREE_H */
+#endif /* XEN__RADIX_TREE_H */
diff --git a/xen/include/xen/random.h b/xen/include/xen/random.h
index b950f03c0c..abb011d654 100644
--- a/xen/include/xen/random.h
+++ b/xen/include/xen/random.h
@@ -1,9 +1,9 @@
-#ifndef __XEN_RANDOM_H__
-#define __XEN_RANDOM_H__
+#ifndef XEN__RANDOM_H
+#define XEN__RANDOM_H
 
 unsigned int get_random(void);
 
 /* The value keeps unchange once initialized for each booting */
 extern unsigned int boot_random;
 
-#endif /* __XEN_RANDOM_H__ */
+#endif /* XEN__RANDOM_H */
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index 96c9180825..36bc2055a9 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, K A Fraser
  */
 
-#ifndef __XEN_RANGESET_H__
-#define __XEN_RANGESET_H__
+#ifndef XEN__RANGESET_H
+#define XEN__RANGESET_H
 
 #include <xen/types.h>
 
@@ -100,7 +100,7 @@ void rangeset_swap(struct rangeset *a, struct rangeset *b);
 void rangeset_domain_printk(
     struct domain *d);
 
-#endif /* __XEN_RANGESET_H__ */
+#endif /* XEN__RANGESET_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/rbtree.h b/xen/include/xen/rbtree.h
index 77bf57d4ab..a8c5215e06 100644
--- a/xen/include/xen/rbtree.h
+++ b/xen/include/xen/rbtree.h
@@ -90,8 +90,8 @@ static inline struct page * rb_insert_page_cache(struct inode * inode,
 -----------------------------------------------------------------------
 */
 
-#ifndef __RBTREE_H__
-#define __RBTREE_H__
+#ifndef XEN__RBTREE_H
+#define XEN__RBTREE_H
 
 struct rb_node {
 	unsigned long  __rb_parent_color;
@@ -139,4 +139,4 @@ static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,
 	*rb_link = node;
 }
 
-#endif /* __RBTREE_H__ */
+#endif /* XEN__RBTREE_H */
diff --git a/xen/include/xen/rcupdate.h b/xen/include/xen/rcupdate.h
index 95f4ad81c4..5e0a8328ee 100644
--- a/xen/include/xen/rcupdate.h
+++ b/xen/include/xen/rcupdate.h
@@ -28,8 +28,8 @@
  * http://lse.sourceforge.net/locking/rcupdate.html
  */
 
-#ifndef __XEN_RCUPDATE_H
-#define __XEN_RCUPDATE_H
+#ifndef XEN__RCUPDATE_H
+#define XEN__RCUPDATE_H
 
 #include <xen/compiler.h>
 #include <xen/spinlock.h>
@@ -179,4 +179,4 @@ void rcu_barrier(void);
 void rcu_idle_enter(unsigned int cpu);
 void rcu_idle_exit(unsigned int cpu);
 
-#endif /* __XEN_RCUPDATE_H */
+#endif /* XEN__RCUPDATE_H */
diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 4e78028218..129bba2a78 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -1,5 +1,5 @@
-#ifndef __RWLOCK_H__
-#define __RWLOCK_H__
+#ifndef XEN__RWLOCK_H
+#define XEN__RWLOCK_H
 
 #include <xen/percpu.h>
 #include <xen/preempt.h>
@@ -455,4 +455,4 @@ static inline void _percpu_write_unlock(percpu_rwlock_t **per_cpudata,
 #define DECLARE_PERCPU_RWLOCK_GLOBAL(name) DECLARE_PER_CPU(percpu_rwlock_t *, \
                                                            name)
 
-#endif /* __RWLOCK_H__ */
+#endif /* XEN__RWLOCK_H */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 90666576c2..968ec5f8db 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -1,6 +1,6 @@
 
-#ifndef __SCHED_H__
-#define __SCHED_H__
+#ifndef XEN__SCHED_H
+#define XEN__SCHED_H
 
 #include <xen/types.h>
 #include <xen/spinlock.h>
@@ -1276,7 +1276,7 @@ btcpupools_get_domain_pool_id(const struct dt_device_node *node)
 
 #endif
 
-#endif /* __SCHED_H__ */
+#endif /* XEN__SCHED_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/sections.h b/xen/include/xen/sections.h
index f2fac8d7fa..fbba123325 100644
--- a/xen/include/xen/sections.h
+++ b/xen/include/xen/sections.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __XEN_SECTIONS_H__
-#define __XEN_SECTIONS_H__
+#ifndef XEN__SECTIONS_H
+#define XEN__SECTIONS_H
 
 #include <xen/compiler.h>
 
@@ -27,7 +27,7 @@ extern char __init_begin[], __init_end[];
  */
 #define __ro_after_init __section(".data.ro_after_init")
 
-#endif /* !__XEN_SECTIONS_H__ */
+#endif /* !XEN__SECTIONS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/self-tests.h b/xen/include/xen/self-tests.h
index bd8a4867aa..149b48b804 100644
--- a/xen/include/xen/self-tests.h
+++ b/xen/include/xen/self-tests.h
@@ -4,8 +4,8 @@
  * Helpers for Xen self-tests of basic logic, including confirming that
  * examples which should be calculated by the compiler are.
  */
-#ifndef XEN_SELF_TESTS_H
-#define XEN_SELF_TESTS_H
+#ifndef XEN__SELF_TESTS_H
+#define XEN__SELF_TESTS_H
 
 #include <xen/lib.h>
 
@@ -59,4 +59,4 @@
         RUNTIME_CHECK(fn, val, res);            \
     } while ( 0 )
 
-#endif /* XEN_SELF_TESTS_H */
+#endif /* XEN__SELF_TESTS_H */
diff --git a/xen/include/xen/serial.h b/xen/include/xen/serial.h
index 3d21207a3d..1799c199ca 100644
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2003-2008, K A Fraser
  */
 
-#ifndef __XEN_SERIAL_H__
-#define __XEN_SERIAL_H__
+#ifndef XEN__SERIAL_H
+#define XEN__SERIAL_H
 
 #include <xen/init.h>
 #include <xen/spinlock.h>
@@ -174,7 +174,7 @@ int dbgp_op(const struct physdev_dbgp_op *op);
 /* Baud rate was pre-configured before invoking the UART driver. */
 #define BAUD_AUTO (-1)
 
-#endif /* __XEN_SERIAL_H__ */
+#endif /* XEN__SERIAL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/shared.h b/xen/include/xen/shared.h
index 5b71342cab..31e1cca8c8 100644
--- a/xen/include/xen/shared.h
+++ b/xen/include/xen/shared.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SHARED_H__
-#define __XEN_SHARED_H__
+#ifndef XEN__SHARED_H
+#define XEN__SHARED_H
 
 #ifdef CONFIG_COMPAT
 
@@ -47,4 +47,4 @@ extern vcpu_info_t dummy_vcpu_info;
 #define vcpu_info(v, field)        \
         __vcpu_info(v, (vcpu_info_t *)(v)->vcpu_info_area.map, field)
 
-#endif /* __XEN_SHARED_H__ */
+#endif /* XEN__SHARED_H */
diff --git a/xen/include/xen/shutdown.h b/xen/include/xen/shutdown.h
index c7fa23aec1..9197b56d5f 100644
--- a/xen/include/xen/shutdown.h
+++ b/xen/include/xen/shutdown.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SHUTDOWN_H__
-#define __XEN_SHUTDOWN_H__
+#ifndef XEN__SHUTDOWN_H
+#define XEN__SHUTDOWN_H
 
 #include <xen/compiler.h>
 #include <xen/types.h>
@@ -12,4 +12,4 @@ void noreturn hwdom_shutdown(unsigned char reason);
 void noreturn machine_restart(unsigned int delay_millisecs);
 void noreturn machine_halt(void);
 
-#endif /* __XEN_SHUTDOWN_H__ */
+#endif /* XEN__SHUTDOWN_H */
diff --git a/xen/include/xen/sizes.h b/xen/include/xen/sizes.h
index f7b728ddab..16c1009fc2 100644
--- a/xen/include/xen/sizes.h
+++ b/xen/include/xen/sizes.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SIZES_H__
-#define __XEN_SIZES_H__
+#ifndef XEN__SIZES_H
+#define XEN__SIZES_H
 
 /*
  * Taken from kernel code include/linux/size.h
@@ -45,4 +45,4 @@
 #define SZ_1G                           0x40000000
 #define SZ_2G                           0x80000000
 
-#endif /* __XEN_SIZES_H__ */
+#endif /* XEN__SIZES_H */
diff --git a/xen/include/xen/smp.h b/xen/include/xen/smp.h
index 2ca9ff1bfc..faffb49704 100644
--- a/xen/include/xen/smp.h
+++ b/xen/include/xen/smp.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SMP_H__
-#define __XEN_SMP_H__
+#ifndef XEN__SMP_H
+#define XEN__SMP_H
 
 #include <asm/smp.h>
 
@@ -76,4 +76,4 @@ extern void *stack_base[NR_CPUS];
 void initialize_cpu_data(unsigned int cpu);
 int setup_cpu_root_pgt(unsigned int cpu);
 
-#endif /* __XEN_SMP_H__ */
+#endif /* XEN__SMP_H */
diff --git a/xen/include/xen/softirq.h b/xen/include/xen/softirq.h
index 33d6f2ecd2..6cceb109fa 100644
--- a/xen/include/xen/softirq.h
+++ b/xen/include/xen/softirq.h
@@ -1,5 +1,5 @@
-#if !defined(__XEN_SOFTIRQ_H__) && !defined(__ASSEMBLY__)
-#define __XEN_SOFTIRQ_H__
+#if !defined(XEN__SOFTIRQ_H) && !defined(__ASSEMBLY__)
+#define XEN__SOFTIRQ_H
 
 /* Low-latency softirqs come first in the following list. */
 enum {
@@ -40,4 +40,4 @@ void cpu_raise_softirq_batch_finish(void);
  */
 void process_pending_softirqs(void);
 
-#endif /* __XEN_SOFTIRQ_H__ */
+#endif /* XEN__SOFTIRQ_H */
diff --git a/xen/include/xen/sort.h b/xen/include/xen/sort.h
index b953286284..110a54637b 100644
--- a/xen/include/xen/sort.h
+++ b/xen/include/xen/sort.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SORT_H__
-#define __XEN_SORT_H__
+#ifndef XEN__SORT_H
+#define XEN__SORT_H
 
 #include <xen/types.h>
 
@@ -60,4 +60,4 @@ void sort(void *base, size_t num, size_t size,
     }
 }
 
-#endif /* __XEN_SORT_H__ */
+#endif /* XEN__SORT_H */
diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h
index 8825affb25..b84ac4d347 100644
--- a/xen/include/xen/spinlock.h
+++ b/xen/include/xen/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __SPINLOCK_H__
-#define __SPINLOCK_H__
+#ifndef XEN__SPINLOCK_H
+#define XEN__SPINLOCK_H
 
 #include <xen/nospec.h>
 #include <xen/time.h>
@@ -358,4 +358,4 @@ static always_inline void nrspin_lock_irq(rspinlock_t *l)
 #define nrspin_unlock_irqrestore(l, f) _nrspin_unlock_irqrestore(l, f)
 #define nrspin_unlock_irq(l)           _nrspin_unlock_irq(l)
 
-#endif /* __SPINLOCK_H__ */
+#endif /* XEN__SPINLOCK_H */
diff --git a/xen/include/xen/stdarg.h b/xen/include/xen/stdarg.h
index 29249a11a7..ec1f1d8378 100644
--- a/xen/include/xen/stdarg.h
+++ b/xen/include/xen/stdarg.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STDARG_H__
-#define __XEN_STDARG_H__
+#ifndef XEN__STDARG_H
+#define XEN__STDARG_H
 
 typedef __builtin_va_list va_list;
 #define va_copy(dest, src)    __builtin_va_copy((dest), (src))
@@ -7,4 +7,4 @@ typedef __builtin_va_list va_list;
 #define va_end(ap)            __builtin_va_end(ap)
 #define va_arg                __builtin_va_arg
 
-#endif /* __XEN_STDARG_H__ */
+#endif /* XEN__STDARG_H */
diff --git a/xen/include/xen/stdbool.h b/xen/include/xen/stdbool.h
index b0947a62b5..99f25d64f6 100644
--- a/xen/include/xen/stdbool.h
+++ b/xen/include/xen/stdbool.h
@@ -1,9 +1,9 @@
-#ifndef __XEN_STDBOOL_H__
-#define __XEN_STDBOOL_H__
+#ifndef XEN__STDBOOL_H
+#define XEN__STDBOOL_H
 
 #define bool _Bool
 #define true 1
 #define false 0
 #define __bool_true_false_are_defined   1
 
-#endif /* __XEN_STDBOOL_H__ */
+#endif /* XEN__STDBOOL_H */
diff --git a/xen/include/xen/stdint.h b/xen/include/xen/stdint.h
index a40165c6ae..1e4319fd0f 100644
--- a/xen/include/xen/stdint.h
+++ b/xen/include/xen/stdint.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __XEN_STDINT_H__
-#define __XEN_STDINT_H__
+#ifndef XEN__STDINT_H
+#define XEN__STDINT_H
 
 #ifndef __INT8_TYPE__ /* GCC <= 4.4 */
 
@@ -30,4 +30,4 @@ typedef __UINT64_TYPE__    uint64_t;
 
 #endif
 
-#endif /* __XEN_STDINT_H__ */
+#endif /* XEN__STDINT_H */
diff --git a/xen/include/xen/stop_machine.h b/xen/include/xen/stop_machine.h
index 0bbf71f112..7a3f22affc 100644
--- a/xen/include/xen/stop_machine.h
+++ b/xen/include/xen/stop_machine.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STOP_MACHINE_H__
-#define __XEN_STOP_MACHINE_H__
+#ifndef XEN__STOP_MACHINE_H
+#define XEN__STOP_MACHINE_H
 
 /**
  * stop_machine_run: freeze the machine on all CPUs and run this function
@@ -16,4 +16,4 @@
  * grabbing every spinlock in the kernel. */
 int stop_machine_run(int (*fn)(void *data), void *data, unsigned int cpu);
 
-#endif /* __XEN_STOP_MACHINE_H__ */
+#endif /* XEN__STOP_MACHINE_H */
diff --git a/xen/include/xen/string.h b/xen/include/xen/string.h
index bd4a8f48e9..0d7383ef9a 100644
--- a/xen/include/xen/string.h
+++ b/xen/include/xen/string.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STRING_H__
-#define __XEN_STRING_H__
+#ifndef XEN__STRING_H
+#define XEN__STRING_H
 
 #include <xen/types.h>	/* for size_t */
 
@@ -100,7 +100,7 @@ void *memchr_inv(const void *s, int c, size_t n);
     (strlcat(d, s, sizeof(d)) >= sizeof(d));    \
 })
 
-#endif /* __XEN_STRING_H__ */
+#endif /* XEN__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/stringify.h b/xen/include/xen/stringify.h
index 36808e0969..be4a979885 100644
--- a/xen/include/xen/stringify.h
+++ b/xen/include/xen/stringify.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STRINGIFY_H
-#define __XEN_STRINGIFY_H
+#ifndef XEN__STRINGIFY_H
+#define XEN__STRINGIFY_H
 
 /* Indirect stringification.  Doing two levels allows the parameter to be a
  * macro itself.  For example, compile with -DFOO=bar, __stringify(FOO)
@@ -9,4 +9,4 @@
 #define __stringify_1(x...) #x
 #define __stringify(x...)   __stringify_1(x)
 
-#endif /* !__XEN_STRINGIFY_H */
+#endif /* !XEN__STRINGIFY_H */
diff --git a/xen/include/xen/symbols.h b/xen/include/xen/symbols.h
index 20bbb28ef2..d8adc03a07 100644
--- a/xen/include/xen/symbols.h
+++ b/xen/include/xen/symbols.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_SYMBOLS_H
-#define _XEN_SYMBOLS_H
+#ifndef XEN__SYMBOLS_H
+#define XEN__SYMBOLS_H
 
 #include <xen/types.h>
 
@@ -33,4 +33,4 @@ struct symbol_offset {
     uint32_t stream; /* .. in the compressed stream.*/
     uint32_t addr;   /* .. and in the fixed size address array. */
 };
-#endif /*_XEN_SYMBOLS_H*/
+#endif /*XEN__SYMBOLS_H*/
diff --git a/xen/include/xen/tasklet.h b/xen/include/xen/tasklet.h
index 78760b694a..55ff906a31 100644
--- a/xen/include/xen/tasklet.h
+++ b/xen/include/xen/tasklet.h
@@ -7,8 +7,8 @@
  * during per-tasklet initialisation.
  */
 
-#ifndef __XEN_TASKLET_H__
-#define __XEN_TASKLET_H__
+#ifndef XEN__TASKLET_H
+#define XEN__TASKLET_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -64,4 +64,4 @@ void softirq_tasklet_init(struct tasklet *t,
                           void (*func)(void *data), void *data);
 void tasklet_subsys_init(void);
 
-#endif /* __XEN_TASKLET_H__ */
+#endif /* XEN__TASKLET_H */
diff --git a/xen/include/xen/time.h b/xen/include/xen/time.h
index 67c586b736..cf515fcdeb 100644
--- a/xen/include/xen/time.h
+++ b/xen/include/xen/time.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2002-2005 K A Fraser
  */
 
-#ifndef __XEN_TIME_H__
-#define __XEN_TIME_H__
+#ifndef XEN__TIME_H
+#define XEN__TIME_H
 
 #include <xen/types.h>
 #include <public/xen.h>
@@ -77,7 +77,7 @@ void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds);
 
 #include <asm/time.h>
 
-#endif /* __XEN_TIME_H__ */
+#endif /* XEN__TIME_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/timer.h b/xen/include/xen/timer.h
index fb28517515..2fa5ba57ab 100644
--- a/xen/include/xen/timer.h
+++ b/xen/include/xen/timer.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2002-2005 K A Fraser
  */
 
-#ifndef _TIMER_H_
-#define _TIMER_H_
+#ifndef XEN__TIMER_H
+#define XEN__TIMER_H
 
 #include <xen/spinlock.h>
 #include <xen/time.h>
@@ -110,7 +110,7 @@ int reprogram_timer(s_time_t timeout);
 /* Calculate the aligned first tick time for a given periodic timer. */
 s_time_t align_timer(s_time_t firsttick, uint64_t period);
 
-#endif /* _TIMER_H_ */
+#endif /* XEN__TIMER_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h
index 914cecbc18..4bdbdeffa8 100644
--- a/xen/include/xen/trace.h
+++ b/xen/include/xen/trace.h
@@ -18,8 +18,8 @@
  * trace buffer contents can then be performed using a userland tool.
  */
 
-#ifndef __XEN_TRACE_H__
-#define __XEN_TRACE_H__
+#ifndef XEN__TRACE_H
+#define XEN__TRACE_H
 
 #include <xen/types.h>
 #include <public/sysctl.h>
@@ -91,4 +91,4 @@ static inline void trace_time(
 /* Create a trace record with time included. */
 #define TRACE_TIME(_e, ...) TRACE((_e) | TRC_HD_CYCLE_FLAG, ## __VA_ARGS__)
 
-#endif /* __XEN_TRACE_H__ */
+#endif /* XEN__TRACE_H */
diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h
index 1bcc5a474f..f8ca8a7958 100644
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -1,5 +1,5 @@
-#ifndef __TYPES_H__
-#define __TYPES_H__
+#ifndef XEN__TYPES_H
+#define XEN__TYPES_H
 
 #include <xen/stdbool.h>
 #include <xen/stdint.h>
@@ -64,4 +64,4 @@ typedef unsigned int __attribute__((__mode__(__pointer__))) uintptr_t;
 #define test_and_set_bool(b)   xchg(&(b), true)
 #define test_and_clear_bool(b) xchg(&(b), false)
 
-#endif /* __TYPES_H__ */
+#endif /* XEN__TYPES_H */
diff --git a/xen/include/xen/typesafe.h b/xen/include/xen/typesafe.h
index 7ecd3b4a8d..8898278e75 100644
--- a/xen/include/xen/typesafe.h
+++ b/xen/include/xen/typesafe.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_TYPESAFE_H__
-#define __XEN_TYPESAFE_H__
+#ifndef XEN__TYPESAFE_H
+#define XEN__TYPESAFE_H
 
 /*
  * Compiler games to gain type safety between different logical integers.
@@ -33,7 +33,7 @@
 
 #endif
 
-#endif /* __XEN_TYPESAFE_H__ */
+#endif /* XEN__TYPESAFE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/unaligned.h b/xen/include/xen/unaligned.h
index d9bb599e65..d4e35c13e5 100644
--- a/xen/include/xen/unaligned.h
+++ b/xen/include/xen/unaligned.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __XEN_UNALIGNED_H__
-#define __XEN_UNALIGNED_H__
+#ifndef XEN__UNALIGNED_H
+#define XEN__UNALIGNED_H
 
 #ifdef __XEN__
 #include <xen/types.h>
@@ -85,4 +85,4 @@ static inline void put_unaligned_le64(uint64_t val, void *p)
 	put_unaligned_t(__le64, cpu_to_le64(val), p);
 }
 
-#endif /* __XEN_UNALIGNED_H__ */
+#endif /* XEN__UNALIGNED_H */
diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h
index 93c5877363..858469684d 100644
--- a/xen/include/xen/version.h
+++ b/xen/include/xen/version.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_VERSION_H__
-#define __XEN_VERSION_H__
+#ifndef XEN__VERSION_H
+#define XEN__VERSION_H
 
 #include <xen/types.h>
 #include <xen/elfstructs.h>
@@ -27,4 +27,4 @@ int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
 static inline void xen_build_init(void) {};
 #endif
 
-#endif /* __XEN_VERSION_H__ */
+#endif /* XEN__VERSION_H */
diff --git a/xen/include/xen/vga.h b/xen/include/xen/vga.h
index ceb8a527ed..6f8cd20bd7 100644
--- a/xen/include/xen/vga.h
+++ b/xen/include/xen/vga.h
@@ -6,8 +6,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_VGA_H
-#define _XEN_VGA_H
+#ifndef XEN__VGA_H
+#define XEN__VGA_H
 
 #include <xen/video.h>
 
@@ -21,4 +21,4 @@ void vesa_endboot(bool keep);
 static inline void vesa_init(void) {}
 #endif
 
-#endif /* _XEN_VGA_H */
+#endif /* XEN__VGA_H */
diff --git a/xen/include/xen/video.h b/xen/include/xen/video.h
index 1ee1aa46b1..2db8bbaa2e 100644
--- a/xen/include/xen/video.h
+++ b/xen/include/xen/video.h
@@ -6,8 +6,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_VIDEO_H
-#define _XEN_VIDEO_H
+#ifndef XEN__VIDEO_H
+#define XEN__VIDEO_H
 
 #include <public/xen.h>
 
@@ -21,4 +21,4 @@ static inline void video_puts(const char *str, size_t nr) {}
 #define video_endboot() ((void)0)
 #endif
 
-#endif /* _XEN_VIDEO_H */
+#endif /* XEN__VIDEO_H */
diff --git a/xen/include/xen/virtual_region.h b/xen/include/xen/virtual_region.h
index a18dfb6fb0..860043ab76 100644
--- a/xen/include/xen/virtual_region.h
+++ b/xen/include/xen/virtual_region.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_VIRTUAL_REGION_H__
-#define __XEN_VIRTUAL_REGION_H__
+#ifndef XEN__VIRTUAL_REGION_H
+#define XEN__VIRTUAL_REGION_H
 
 #include <xen/list.h>
 #include <xen/symbols.h>
@@ -46,7 +46,7 @@ void unregister_virtual_region(struct virtual_region *r);
 void relax_virtual_region_perms(void);
 void tighten_virtual_region_perms(void);
 
-#endif /* __XEN_VIRTUAL_REGION_H__ */
+#endif /* XEN__VIRTUAL_REGION_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index c1dd7ac22f..c94c4d68f1 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -5,8 +5,8 @@
  * purpose area (VMAP_DEFAULT) and a livepatch-specific area (VMAP_XEN). The
  * latter is used when loading livepatches and the former for everything else.
  */
-#if !defined(__XEN_VMAP_H__) && defined(VMAP_VIRT_START)
-#define __XEN_VMAP_H__
+#if !defined(XEN__VMAP_H) && defined(VMAP_VIRT_START)
+#define XEN__VMAP_H
 
 #include <xen/mm-frame.h>
 #include <xen/page-size.h>
@@ -146,4 +146,4 @@ static inline void vm_init(void)
 #endif
 }
 
-#endif /* __XEN_VMAP_H__ */
+#endif /* XEN__VMAP_H */
diff --git a/xen/include/xen/wait.h b/xen/include/xen/wait.h
index 1c68bc564b..c890d3244d 100644
--- a/xen/include/xen/wait.h
+++ b/xen/include/xen/wait.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2010, Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_WAIT_H__
-#define __XEN_WAIT_H__
+#ifndef XEN__WAIT_H
+#define XEN__WAIT_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -56,4 +56,4 @@ void wait(void);
 void finish_wait(struct waitqueue_head *wq);
 void check_wakeup_from_wait(void);
 
-#endif /* __XEN_WAIT_H__ */
+#endif /* XEN__WAIT_H */
diff --git a/xen/include/xen/warning.h b/xen/include/xen/warning.h
index c0661d5140..eec3850ec1 100644
--- a/xen/include/xen/warning.h
+++ b/xen/include/xen/warning.h
@@ -1,5 +1,5 @@
-#ifndef _WARNING_H_
-#define _WARNING_H_
+#ifndef XEN__WARNING_H
+#define XEN__WARNING_H
 
 void warning_add(const char *warning);
 void warning_print(void);
diff --git a/xen/include/xen/watchdog.h b/xen/include/xen/watchdog.h
index 4c2840bd91..564bc7d8c1 100644
--- a/xen/include/xen/watchdog.h
+++ b/xen/include/xen/watchdog.h
@@ -4,8 +4,8 @@
  * Common watchdog code
  */
 
-#ifndef __XEN_WATCHDOG_H__
-#define __XEN_WATCHDOG_H__
+#ifndef XEN__WATCHDOG_H
+#define XEN__WATCHDOG_H
 
 #include <xen/types.h>
 
@@ -32,4 +32,4 @@ bool watchdog_enabled(void);
 
 #endif
 
-#endif /* __XEN_WATCHDOG_H__ */
+#endif /* XEN__WATCHDOG_H */
diff --git a/xen/include/xen/xen.lds.h b/xen/include/xen/xen.lds.h
index 24b8900ffe..c66b2c4c3b 100644
--- a/xen/include/xen/xen.lds.h
+++ b/xen/include/xen/xen.lds.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_LDS_H__
-#define __XEN_LDS_H__
+#ifndef XEN__XEN_LDS_H
+#define XEN__XEN_LDS_H
 
 /*
  * Common macros to be used in architecture specific linker scripts.
@@ -171,4 +171,4 @@
 #define VPCI_ARRAY
 #endif
 
-#endif /* __XEN_LDS_H__ */
+#endif /* XEN__XEN_LDS_H */
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index c3dac447d3..c50221d2a2 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -7,8 +7,8 @@
  * written by Aravind Menon & Jose Renato Santos
  */
 
-#ifndef __XEN_XENOPROF_H__
-#define __XEN_XENOPROF_H__
+#ifndef XEN__XENOPROF_H
+#define XEN__XENOPROF_H
 
 #define PMU_OWNER_NONE          0
 #define PMU_OWNER_XENOPROF      1
diff --git a/xen/include/xen/xmalloc.h b/xen/include/xen/xmalloc.h
index b903fa2e26..cd230bfde8 100644
--- a/xen/include/xen/xmalloc.h
+++ b/xen/include/xen/xmalloc.h
@@ -1,6 +1,6 @@
 
-#ifndef __XMALLOC_H__
-#define __XMALLOC_H__
+#ifndef XEN__XMALLOC_H
+#define XEN__XMALLOC_H
 
 #include <xen/types.h>
 #include <xen/cache.h>
@@ -171,4 +171,4 @@ unsigned long xmem_pool_get_used_size(struct xmem_pool *pool);
  */
 unsigned long xmem_pool_get_total_size(struct xmem_pool *pool);
 
-#endif /* __XMALLOC_H__ */
+#endif /* XEN__XMALLOC_H */
diff --git a/xen/include/xen/xxhash.h b/xen/include/xen/xxhash.h
index 6f2237cbcf..9ad85c85ce 100644
--- a/xen/include/xen/xxhash.h
+++ b/xen/include/xen/xxhash.h
@@ -72,8 +72,8 @@
  * xxh32        6.8 GB/s            6.0 GB/s
  */
 
-#ifndef __XENXXHASH_H__
-#define __XENXXHASH_H__
+#ifndef XEN__XXHASH_H
+#define XEN__XXHASH_H
 
 #include <xen/types.h>
 
@@ -256,4 +256,4 @@ void xxh32_copy_state(struct xxh32_state *dst, const struct xxh32_state *src);
  */
 void xxh64_copy_state(struct xxh64_state *dst, const struct xxh64_state *src);
 
-#endif /* __XENXXHASH_H__ */
+#endif /* XEN__XXHASH_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809330.1221619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnq-0005A0-UN; Thu, 03 Oct 2024 12:19:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809330.1221619; Thu, 03 Oct 2024 12:19: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 1swKnq-00058u-IU; Thu, 03 Oct 2024 12:19:30 +0000
Received: by outflank-mailman (input) for mailman id 809330;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKno-00043W-Vy
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:28 +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 bbf31952-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:27 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8a897bd4f1so106757866b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:27 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bbf31952-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957967; x=1728562767; 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=tUCJBvhofnmQKNA8lGIkGO7D/fxxaw9oGLj4xWZ4GLk=;
        b=fkokL2729YzTHJ5KIMcmb1w9ZSoe+0hG9ZigF2XlkUFKZt0Bx7V97IoPq87xfQItx2
         kvapwujvnEi8Lbl7KKo3bdVcMUzzonPc8PB12X13jg3X1n88HmwfHofcVVWNCDHhk4b1
         Q3TkylMSTedczkvPB6pb3EG/y11l16Y8+Hzc8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957967; x=1728562767;
        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=tUCJBvhofnmQKNA8lGIkGO7D/fxxaw9oGLj4xWZ4GLk=;
        b=bDyhHQNUfwGI/LXtP4lYxA+iYRZ5pkqcLqnYVoEiAvBmq9E7sSt4wW1WxDdyw3O+pI
         2cKPCT8YDaWeWfPvNld8tl05w0YQVE8dtueejXjAm6rYTs7eKJcMwbHT+EC4UtfnrCQ9
         WmEfk1wspHmC6PGJbXwiEM8R9Q8/qhpc8tvD+egIk6bJ3ePj4Op3Yzpv6RvlmmREHsrk
         7LibYItCnui8Q/px6UiXd/pSzbhH+ILbQawg105r1Ak2SoLfozCjOwTr6GszzJ1WZawq
         wECVse5LQ+DOyROrzsT30dzW+XcD1YIif2PqEXuGLdF134txim2wBH2rWzXXFaQIVsux
         /QEw==
X-Gm-Message-State: AOJu0YxUZIUgMIifkgHobwuITpIj4QbQNRff4tPNh1ZA7uW+311U1MRg
	x2xcKaAM8AQauRKhZTCdTtRyPceU/k+IwBqe2c6hOCMHburbB5h70UjGy2bDjUS75XlFQlGGnhJ
	k
X-Google-Smtp-Source: AGHT+IF9HWYBWomtbqBJzKEQPfkfWmWQVkjG6intW8V3qmacgkvcsiHGusnys5RuBbDNwLswEX59Vg==
X-Received: by 2002:a17:907:9706:b0:a8a:8cdb:83a7 with SMTP id a640c23a62f3a-a98f838a302mr579494166b.54.1727957966839;
        Thu, 03 Oct 2024 05:19:26 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 07/20] xen: Update header guards - EFI
Date: Thu,  3 Oct 2024 13:18:55 +0100
Message-Id: <20241003121908.362888-8-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to EFI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/x86_64/efibind.h | 4 ++--
 xen/include/efi/efiapi.h                  | 4 ++--
 xen/include/efi/eficapsule.h              | 4 ++--
 xen/include/efi/eficon.h                  | 4 ++--
 xen/include/efi/efidef.h                  | 4 ++--
 xen/include/efi/efidevp.h                 | 4 ++--
 xen/include/efi/efierr.h                  | 4 ++--
 xen/include/efi/efipciio.h                | 6 +++---
 xen/include/efi/efiprot.h                 | 4 ++--
 9 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/include/asm/x86_64/efibind.h b/xen/arch/x86/include/asm/x86_64/efibind.h
index b29342c61c..a4b8ec52b3 100644
--- a/xen/arch/x86/include/asm/x86_64/efibind.h
+++ b/xen/arch/x86/include/asm/x86_64/efibind.h
@@ -16,8 +16,8 @@ Abstract:
 Revision History
 
 --*/
-#ifndef X86_64_EFI_BIND
-#define X86_64_EFI_BIND
+#ifndef ASM__X86__X86_64__EFIBIND_H
+#define ASM__X86__X86_64__EFIBIND_H
 #ifndef __GNUC__
 #pragma pack()
 #endif
diff --git a/xen/include/efi/efiapi.h b/xen/include/efi/efiapi.h
index a616d1238a..c9e6a531ba 100644
--- a/xen/include/efi/efiapi.h
+++ b/xen/include/efi/efiapi.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_API_H
-#define _EFI_API_H
+#ifndef EFI__EFIAPI_H
+#define EFI__EFIAPI_H
 
 /*++
 
diff --git a/xen/include/efi/eficapsule.h b/xen/include/efi/eficapsule.h
index 481af2816a..5764f36e9f 100644
--- a/xen/include/efi/eficapsule.h
+++ b/xen/include/efi/eficapsule.h
@@ -19,8 +19,8 @@ Abstract:
 
 --*/
 
-#ifndef _EFI_CAPSULE_H
-#define _EFI_CAPSULE_H
+#ifndef EFI__EFICAPSULE_H
+#define EFI__EFICAPSULE_H
 
 
 #define CAPSULE_BLOCK_DESCRIPTOR_SIGNATURE  EFI_SIGNATURE_32 ('C', 'B', 'D', 'S')
diff --git a/xen/include/efi/eficon.h b/xen/include/efi/eficon.h
index 089db9816c..952022b734 100644
--- a/xen/include/efi/eficon.h
+++ b/xen/include/efi/eficon.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_CON_H
-#define _EFI_CON_H
+#ifndef EFI__EFICON_H
+#define EFI__EFICON_H
 
 /*++
 
diff --git a/xen/include/efi/efidef.h b/xen/include/efi/efidef.h
index 86a7e111bf..20cf269e8f 100644
--- a/xen/include/efi/efidef.h
+++ b/xen/include/efi/efidef.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_DEF_H
-#define _EFI_DEF_H
+#ifndef EFI__EFIDEF_H
+#define EFI__EFIDEF_H
 
 /*++
 
diff --git a/xen/include/efi/efidevp.h b/xen/include/efi/efidevp.h
index beb5785a45..fd88b66a56 100644
--- a/xen/include/efi/efidevp.h
+++ b/xen/include/efi/efidevp.h
@@ -1,5 +1,5 @@
-#ifndef _DEVPATH_H
-#define _DEVPATH_H
+#ifndef EFI__EFIDEVP_H
+#define EFI__EFIDEVP_H
 
 /*++
 
diff --git a/xen/include/efi/efierr.h b/xen/include/efi/efierr.h
index cdca210414..1d2ed125d8 100644
--- a/xen/include/efi/efierr.h
+++ b/xen/include/efi/efierr.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_ERR_H
-#define _EFI_ERR_H
+#ifndef EFI__EFIERR_H
+#define EFI__EFIERR_H
 
 /*++
 
diff --git a/xen/include/efi/efipciio.h b/xen/include/efi/efipciio.h
index 0724f957a3..8f8c81d043 100644
--- a/xen/include/efi/efipciio.h
+++ b/xen/include/efi/efipciio.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_PCI_IO_H
-#define _EFI_PCI_IO_H
+#ifndef EFI__EFIPCIIO_H
+#define EFI__EFIPCIIO_H
 
 #define EFI_PCI_IO_PROTOCOL \
     { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
@@ -216,4 +216,4 @@ typedef struct _EFI_PCI_IO {
   VOID                                   *RomImage;
 } EFI_PCI_IO;
 
-#endif /* _EFI_PCI_IO_H */
+#endif /* EFI__EFIPCIIO_H */
diff --git a/xen/include/efi/efiprot.h b/xen/include/efi/efiprot.h
index 56d7636b2b..8a56b3faa5 100644
--- a/xen/include/efi/efiprot.h
+++ b/xen/include/efi/efiprot.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_PROT_H
-#define _EFI_PROT_H
+#ifndef EFI__EFIPROT_H
+#define EFI__EFIPROT_H
 
 /*++
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809331.1221633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKns-0005cq-3W; Thu, 03 Oct 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 809331.1221633; Thu, 03 Oct 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 1swKnr-0005bb-Sx; Thu, 03 Oct 2024 12:19:31 +0000
Received: by outflank-mailman (input) for mailman id 809331;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnp-00043W-Vf
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:29 +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 bc7b6462-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:28 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-5399041167cso1458781e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:28 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bc7b6462-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957968; x=1728562768; 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=Q5H5vzGEUHF5T8160M9z8v6UqIQnE5siB1MdqRXTDEQ=;
        b=hw3BqC7yrpokaKnjL/PQHed5zvBM6DotqfZres8QRYZjXTrGRA29/IDDwi44G0fmSF
         y3qXnP6O1+kOXbsIOwK/YsubuqDnBpqmNKaZXM+nqB6ldr+UfcapegY8dl/IL22nda/w
         l54d8+lavCsr4MbSt+EN5VWpnGqHgu0dYaFEs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957968; x=1728562768;
        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=Q5H5vzGEUHF5T8160M9z8v6UqIQnE5siB1MdqRXTDEQ=;
        b=fIN+ay7K/XDv23W1es1JvVdO8ujuqZhXriBJUP8ZFOzGLnzh3qVo8XtVOIHlInmbHa
         m712aPCBl2i97/Jrh2MR5cOHCIoTdCZU/UMXMdBU8OPvv6Eia3NhjIzL9qTBB5Z77Twm
         OCdv/12dmLM4m8iibvA7tDRWCgBDv1G36jLz4Y3On8q2Y0++CicZXfEMwRQCS3bhF4x9
         BpbjvuKDYwdmT8RGpFvmIvK4FMSkTtg59r2RsQSfokoyijhWlBGHSNMlHzNpcDZiAEWA
         28suzwFCYh5wWtwUuRiQxil2/PNlt2j/SjOhddGMjvsBoVWz9B9AMD6o9jXePcWYlNky
         l57g==
X-Gm-Message-State: AOJu0YzcjNIyyglytJ0YSrK/dExk/DPrw1UQHEliXYma0YOoRXMX2SX1
	wdkkMFTTo91jR/8j/yOiDLG0fL8I5OEROzzPhdok3oqzx7SLSuhpXqw+hW5Prx+KiNjMqyCeSta
	P
X-Google-Smtp-Source: AGHT+IGL5x4+MVjNlJWb1+E57yRrRCzzN/es9laf3hJyOm9QMpXF7n3UozNauxlIhv8NTRHmQuTi+w==
X-Received: by 2002:a05:6512:3b06:b0:539:8d2c:c01a with SMTP id 2adb3069b0e04-539a067aff1mr6598414e87.29.1727957967733;
        Thu, 03 Oct 2024 05:19:27 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 08/20] xen: Update header guards - HYPFS
Date: Thu,  3 Oct 2024 13:18:56 +0100
Message-Id: <20241003121908.362888-9-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to HYPFS.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/hypfs.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/include/xen/hypfs.h b/xen/include/xen/hypfs.h
index d8fcac23b4..d6f5725221 100644
--- a/xen/include/xen/hypfs.h
+++ b/xen/include/xen/hypfs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_HYPFS_H__
-#define __XEN_HYPFS_H__
+#ifndef XEN__HYPFS_H
+#define XEN__HYPFS_H
 
 #ifdef CONFIG_HYPFS
 #include <xen/lib.h>
@@ -206,4 +206,4 @@ unsigned int hypfs_dynid_entry_size(const struct hypfs_entry *template,
                                     unsigned int id);
 #endif
 
-#endif /* __XEN_HYPFS_H__ */
+#endif /* XEN__HYPFS_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809332.1221640 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKns-0005lv-P4; Thu, 03 Oct 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 809332.1221640; Thu, 03 Oct 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 1swKns-0005kS-FO; Thu, 03 Oct 2024 12:19:32 +0000
Received: by outflank-mailman (input) for mailman id 809332;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnq-00043u-Tn
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:30 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bcf780dd-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:29 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a8a7cdfdd80so164154566b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:29 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bcf780dd-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957968; x=1728562768; 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=5bKKGq4cESxZkZMDW1uobM0TYcCXOg89PEXrmDcph/U=;
        b=Z/9T1A3jBJ9vvehfD0k2j41FYiT3BQZQFaA6oqswKNfpefjv+sjVHGhrzB/BI9OJrs
         TyZybE3bKE3gAi/Jcdd7UigPFk3TLYJJi7SLHKmz5UdIW4R4C9bK8hgxzKGp2MywfzGf
         vnhAZptSogFQqoP9Hgq6QcrdMHSvXB+qBTeGs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957968; x=1728562768;
        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=5bKKGq4cESxZkZMDW1uobM0TYcCXOg89PEXrmDcph/U=;
        b=Gq6zvxx2Al1gwp04uhafA0OkIPCnrC8VGuUiVqnW+mlAhs9ntCuJyFzWh711tP+uWF
         Q5nNN7yaKC6w8/7RQZt1jnKIloKjtxOIurjH7tpqGdgl7zU0/yYmT3dtcKAmxK/Pil60
         MxqUtNPNKvxBJEf83ykGN/46vuVWioP+OrRGb6R02fWHLMLy+bNfLoCBoTCKuHkrAIQZ
         A2eHaUJgUQ4aoW+OOByvdXLjlQcYlbipJlVXWyaHWxDxqbZ849FV1ugZTLDObIAPvRxq
         eMyo5FvDHXumqq98q8lRCOC2aFcHydWdeq6qPGWCQFZ2JObH8UmHj/cyLmXoL6UW0Fpm
         Nzsw==
X-Gm-Message-State: AOJu0YxRSdLdHBLA7moxo2o5se+CMusSR4GcTrHj5j/KAJbapvt5xju2
	3eAQDSzS1j07Jeea690pp4+QK900bKppOImlQ6kISqu+gXCiMhRqj+qX+PtDGJSZYF8UOeKXheZ
	9
X-Google-Smtp-Source: AGHT+IHHaTwalJidEjy9sxmssDWoYVWJsub5dbnx49ZvuVUZNAG8AZEO8T+6RfeLO3j2ch+tUzHKxA==
X-Received: by 2002:a17:907:7fab:b0:a90:b646:8e4a with SMTP id a640c23a62f3a-a98f840793fmr525611066b.65.1727957968641;
        Thu, 03 Oct 2024 05:19:28 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@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>
Subject: [PATCH 09/20] xen: Update header guards - Intel TXT
Date: Thu,  3 Oct 2024 13:18:57 +0100
Message-Id: <20241003121908.362888-10-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to Intel trusted execution technology.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/tboot.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/tboot.h b/xen/arch/x86/include/asm/tboot.h
index 818d5fa451..15479fe80e 100644
--- a/xen/arch/x86/include/asm/tboot.h
+++ b/xen/arch/x86/include/asm/tboot.h
@@ -34,8 +34,8 @@
  *
  */
 
-#ifndef __TBOOT_H__
-#define __TBOOT_H__
+#ifndef ASM__X86__TBOOT_H
+#define ASM__X86__TBOOT_H
 
 #include <xen/acpi.h>
 
@@ -147,7 +147,7 @@ static inline int tboot_wake_ap(int apicid, unsigned long sipi_vec)
 }
 #endif /* CONFIG_TBOOT */
 
-#endif /* __TBOOT_H__ */
+#endif /* ASM__X86__TBOOT_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809333.1221649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnt-0005wy-KQ; Thu, 03 Oct 2024 12:19:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809333.1221649; Thu, 03 Oct 2024 12: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 1swKnt-0005uH-7L; Thu, 03 Oct 2024 12:19:33 +0000
Received: by outflank-mailman (input) for mailman id 809333;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnq-00043W-W6
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:31 +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 bbe42089-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:27 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a8d51a7d6f5so129129466b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:27 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bbe42089-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957967; x=1728562767; 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=V1K5DpIuuiAoOLjSOuzhJNRH73q3U24/xQ48eKjPIM0=;
        b=PE3p64+EiukmhhDh0fon4tnnmfGwPx8Cn3TgtaZwb9f1c9HqmtRqrwsJz6SEc+o+Lq
         bSbc+uQCitHn4FliiOfBawXEYY9/ua72tRlSWlPuylABB3r+/szAnHQ1u/S/qWa5uUeL
         L2PwI2g2hNafoQTx25DLZ8VNcrbTaddVCqLZ8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957967; x=1728562767;
        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=V1K5DpIuuiAoOLjSOuzhJNRH73q3U24/xQ48eKjPIM0=;
        b=UnDjnes7ZWohU0xu3clz1bGpf6kmbWad2eOCDRsNSgLGwLOp6dOFCJo0LuYocCqfMV
         +6wKUYi4C34RrGTY2jiOCCU2Rb8DVPQVvl7Df1+JNjALyJxjFIXJ14b91S9iBMkGsZIF
         /fPgvK1Q3lD4Yx8155CC7w7VePSGRT5rItL1IEEI5AbIhjW2pf3B0d57FVFCBNkZJBO6
         1P8r7tWkA38Awr4XtHG42c4vo6G865zZ8itSH+XNINVlnUpGzYQHcedboIS2X03G76Az
         Ae8/6IZDBTV3X5IOEhkbutW+XAL1tV4QmiRSHlcvQgfeINLtjAOJ+0fKc76cc2mZVtcG
         A6ZA==
X-Gm-Message-State: AOJu0YxagSSK9pi0xpkO1ETrHtBvgRRs4a0CeUQIk+Pq52/LkODdrDHs
	BftVw5UXX3S3r7a8kOmXEAdMlfVCcpxp6ZhqbXYqjgUH/5XC8katwkvsXEDRNaHJUoA/g63xFcy
	y
X-Google-Smtp-Source: AGHT+IGOYaVd9vab6Y3tCTTMtuDg8RiXUXOorDXeIy6fZU3+1inJJobVG6Cbe7W9LELCf5QnnGNX3w==
X-Received: by 2002:a17:907:a02:b0:a83:8591:7505 with SMTP id a640c23a62f3a-a98f839ba30mr524497066b.59.1727957964940;
        Thu, 03 Oct 2024 05:19:24 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.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>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH 05/20] xen: Update header guards - ARM
Date: Thu,  3 Oct 2024 13:18:53 +0100
Message-Id: <20241003121908.362888-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ARM.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/arm/arm32/lib/assembler.h                      | 6 +++---
 xen/arch/arm/arm64/lib/assembler.h                      | 6 +++---
 xen/arch/arm/decode.h                                   | 6 +++---
 xen/arch/arm/include/asm/acpi.h                         | 6 +++---
 xen/arch/arm/include/asm/alternative.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/atomic.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm32/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm32/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm32/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm32/sysregs.h                | 6 +++---
 xen/arch/arm/include/asm/arm32/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm32/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/atomic.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/brk.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/cpufeature.h             | 4 ++--
 xen/arch/arm/include/asm/arm64/efibind.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm64/hsr.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm64/sve.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/sysregs.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm64/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/arm/include/asm/atomic.h                       | 6 +++---
 xen/arch/arm/include/asm/bitops.h                       | 6 +++---
 xen/arch/arm/include/asm/bug.h                          | 6 +++---
 xen/arch/arm/include/asm/byteorder.h                    | 6 +++---
 xen/arch/arm/include/asm/cache.h                        | 4 ++--
 xen/arch/arm/include/asm/cadence-uart.h                 | 4 ++--
 xen/arch/arm/include/asm/config.h                       | 6 +++---
 xen/arch/arm/include/asm/cpregs.h                       | 4 ++--
 xen/arch/arm/include/asm/cpuerrata.h                    | 6 +++---
 xen/arch/arm/include/asm/cpufeature.h                   | 4 ++--
 xen/arch/arm/include/asm/current.h                      | 6 +++---
 xen/arch/arm/include/asm/div64.h                        | 4 ++--
 xen/arch/arm/include/asm/dom0less-build.h               | 6 +++---
 xen/arch/arm/include/asm/domain.h                       | 6 +++---
 xen/arch/arm/include/asm/domain_build.h                 | 4 ++--
 xen/arch/arm/include/asm/early_printk.h                 | 4 ++--
 xen/arch/arm/include/asm/elf.h                          | 6 +++---
 xen/arch/arm/include/asm/event.h                        | 4 ++--
 xen/arch/arm/include/asm/exynos4210-uart.h              | 6 +++---
 xen/arch/arm/include/asm/fixmap.h                       | 6 +++---
 xen/arch/arm/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/arm/include/asm/gic.h                          | 4 ++--
 xen/arch/arm/include/asm/gic_v3_defs.h                  | 6 +++---
 xen/arch/arm/include/asm/gic_v3_its.h                   | 4 ++--
 xen/arch/arm/include/asm/grant_table.h                  | 6 +++---
 xen/arch/arm/include/asm/guest_access.h                 | 6 +++---
 xen/arch/arm/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/arm/include/asm/guest_walk.h                   | 6 +++---
 xen/arch/arm/include/asm/hsr.h                          | 6 +++---
 xen/arch/arm/include/asm/hypercall.h                    | 8 ++++----
 xen/arch/arm/include/asm/imx-lpuart.h                   | 6 +++---
 xen/arch/arm/include/asm/insn.h                         | 6 +++---
 xen/arch/arm/include/asm/io.h                           | 4 ++--
 xen/arch/arm/include/asm/iommu.h                        | 6 +++---
 xen/arch/arm/include/asm/iommu_fwspec.h                 | 6 +++---
 xen/arch/arm/include/asm/ioreq.h                        | 6 +++---
 xen/arch/arm/include/asm/irq.h                          | 6 +++---
 xen/arch/arm/include/asm/kernel.h                       | 6 +++---
 xen/arch/arm/include/asm/livepatch.h                    | 6 +++---
 xen/arch/arm/include/asm/lpae.h                         | 6 +++---
 xen/arch/arm/include/asm/macros.h                       | 4 ++--
 xen/arch/arm/include/asm/mem_access.h                   | 6 +++---
 xen/arch/arm/include/asm/mm.h                           | 6 +++---
 xen/arch/arm/include/asm/mmio.h                         | 6 +++---
 xen/arch/arm/include/asm/mmu/layout.h                   | 6 +++---
 xen/arch/arm/include/asm/mmu/mm.h                       | 6 +++---
 xen/arch/arm/include/asm/mmu/p2m.h                      | 6 +++---
 xen/arch/arm/include/asm/monitor.h                      | 6 +++---
 xen/arch/arm/include/asm/new_vgic.h                     | 6 +++---
 xen/arch/arm/include/asm/nospec.h                       | 6 +++---
 xen/arch/arm/include/asm/p2m.h                          | 8 ++++----
 xen/arch/arm/include/asm/page-bits.h                    | 6 +++---
 xen/arch/arm/include/asm/page.h                         | 6 +++---
 xen/arch/arm/include/asm/pci.h                          | 6 +++---
 xen/arch/arm/include/asm/perfc.h                        | 4 ++--
 xen/arch/arm/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/arm/include/asm/pl011-uart.h                   | 6 +++---
 xen/arch/arm/include/asm/platform.h                     | 6 +++---
 xen/arch/arm/include/asm/platforms/exynos5.h            | 6 +++---
 xen/arch/arm/include/asm/platforms/midway.h             | 2 +-
 xen/arch/arm/include/asm/platforms/omap5.h              | 4 ++--
 xen/arch/arm/include/asm/platforms/vexpress.h           | 6 +++---
 xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h | 6 +++---
 xen/arch/arm/include/asm/pmap.h                         | 6 +++---
 xen/arch/arm/include/asm/processor.h                    | 6 +++---
 xen/arch/arm/include/asm/procinfo.h                     | 4 ++--
 xen/arch/arm/include/asm/psci.h                         | 6 +++---
 xen/arch/arm/include/asm/regs.h                         | 6 +++---
 xen/arch/arm/include/asm/scif-uart.h                    | 6 +++---
 xen/arch/arm/include/asm/setup.h                        | 4 ++--
 xen/arch/arm/include/asm/short-desc.h                   | 6 +++---
 xen/arch/arm/include/asm/smccc.h                        | 6 +++---
 xen/arch/arm/include/asm/smp.h                          | 4 ++--
 xen/arch/arm/include/asm/spinlock.h                     | 6 +++---
 xen/arch/arm/include/asm/static-evtchn.h                | 6 +++---
 xen/arch/arm/include/asm/static-memory.h                | 6 +++---
 xen/arch/arm/include/asm/static-shmem.h                 | 6 +++---
 xen/arch/arm/include/asm/string.h                       | 6 +++---
 xen/arch/arm/include/asm/sysregs.h                      | 6 +++---
 xen/arch/arm/include/asm/system.h                       | 4 ++--
 xen/arch/arm/include/asm/tee/ffa.h                      | 6 +++---
 xen/arch/arm/include/asm/tee/optee_msg.h                | 6 +++---
 xen/arch/arm/include/asm/tee/optee_rpc_cmd.h            | 6 +++---
 xen/arch/arm/include/asm/tee/optee_smc.h                | 6 +++---
 xen/arch/arm/include/asm/tee/tee.h                      | 6 +++---
 xen/arch/arm/include/asm/time.h                         | 6 +++---
 xen/arch/arm/include/asm/traps.h                        | 6 +++---
 xen/arch/arm/include/asm/types.h                        | 6 +++---
 xen/arch/arm/include/asm/vfp.h                          | 6 +++---
 xen/arch/arm/include/asm/vgic-emul.h                    | 6 +++---
 xen/arch/arm/include/asm/vgic.h                         | 6 +++---
 xen/arch/arm/include/asm/vpl011.h                       | 6 +++---
 xen/arch/arm/include/asm/vpsci.h                        | 6 +++---
 xen/arch/arm/include/asm/vreg.h                         | 6 +++---
 xen/arch/arm/include/asm/vtimer.h                       | 4 ++--
 xen/arch/arm/tee/ffa_private.h                          | 6 +++---
 xen/arch/arm/vgic/vgic-mmio.h                           | 4 ++--
 xen/arch/arm/vgic/vgic.h                                | 4 ++--
 xen/arch/arm/vpci.h                                     | 6 +++---
 xen/arch/arm/vuart.h                                    | 6 +++---
 xen/drivers/passthrough/arm/smmu-v3.h                   | 6 +++---
 xen/include/public/arch-arm.h                           | 6 +++---
 xen/include/public/arch-arm/hvm/save.h                  | 4 ++--
 xen/include/public/arch-arm/smccc.h                     | 6 +++---
 147 files changed, 411 insertions(+), 411 deletions(-)

diff --git a/xen/arch/arm/arm32/lib/assembler.h b/xen/arch/arm/arm32/lib/assembler.h
index 6de2638a36..a79eef420f 100644
--- a/xen/arch/arm/arm32/lib/assembler.h
+++ b/xen/arch/arm/arm32/lib/assembler.h
@@ -14,8 +14,8 @@
  *  Do not include any C declarations in this file - it is included by
  *  assembler source.
  */
-#ifndef __ASM_ASSEMBLER_H__
-#define __ASM_ASSEMBLER_H__
+#ifndef ARM__ARM32__LIB__ASSEMBLER_H
+#define ARM__ARM32__LIB__ASSEMBLER_H
 
 #ifndef __ASSEMBLY__
 #error "Only include this from assembly code"
@@ -322,4 +322,4 @@
 	.size \name , . - \name
 	.endm
 
-#endif /* __ASM_ASSEMBLER_H__ */
+#endif /* ARM__ARM32__LIB__ASSEMBLER_H */
diff --git a/xen/arch/arm/arm64/lib/assembler.h b/xen/arch/arm/arm64/lib/assembler.h
index 3f9c0dcf5d..6560fae1f5 100644
--- a/xen/arch/arm/arm64/lib/assembler.h
+++ b/xen/arch/arm/arm64/lib/assembler.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ASSEMBLER_H__
-#define __ASM_ASSEMBLER_H__
+#ifndef ARM__ARM64__LIB__ASSEMBLER_H
+#define ARM__ARM64__LIB__ASSEMBLER_H
 
 #ifndef __ASSEMBLY__
 #error "Only include this from assembly code"
@@ -9,4 +9,4 @@
 #define CPU_BE(x...)
 #define CPU_LE(x...) x
 
-#endif /* __ASM_ASSEMBLER_H__ */
+#endif /* ARM__ARM64__LIB__ASSEMBLER_H */
diff --git a/xen/arch/arm/decode.h b/xen/arch/arm/decode.h
index 13db8ac968..00e9bbe085 100644
--- a/xen/arch/arm/decode.h
+++ b/xen/arch/arm/decode.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_DECODE_H_
-#define __ARCH_ARM_DECODE_H_
+#ifndef ARM__DECODE_H
+#define ARM__DECODE_H
 
 #include <asm/regs.h>
 #include <asm/processor.h>
@@ -73,7 +73,7 @@ union instr {
 int decode_instruction(const struct cpu_user_regs *regs,
                        mmio_info_t *info);
 
-#endif /* __ARCH_ARM_DECODE_H_ */
+#endif /* ARM__DECODE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/acpi.h b/xen/arch/arm/include/asm/acpi.h
index 13756dd341..364cd671b4 100644
--- a/xen/arch/arm/include/asm/acpi.h
+++ b/xen/arch/arm/include/asm/acpi.h
@@ -19,8 +19,8 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
-#ifndef _ASM_ARM_ACPI_H
-#define _ASM_ARM_ACPI_H
+#ifndef ASM__ARM__ACPI_H
+#define ASM__ARM__ACPI_H
 
 #include <asm/setup.h>
 
@@ -78,4 +78,4 @@ static inline void enable_acpi(void)
 #define enable_acpi()
 #endif
 
-#endif /*_ASM_ARM_ACPI_H*/
+#endif /*ASM__ARM__ACPI_H*/
diff --git a/xen/arch/arm/include/asm/alternative.h b/xen/arch/arm/include/asm/alternative.h
index 22477d9497..9a03298a41 100644
--- a/xen/arch/arm/include/asm/alternative.h
+++ b/xen/arch/arm/include/asm/alternative.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ALTERNATIVE_H
-#define __ASM_ALTERNATIVE_H
+#ifndef ASM__ARM__ALTERNATIVE_H
+#define ASM__ARM__ALTERNATIVE_H
 
 #include <asm/cpufeature.h>
 #include <asm/insn.h>
@@ -218,4 +218,4 @@ alternative_endif
 #define ALTERNATIVE(oldinstr, newinstr, ...)   \
 	_ALTERNATIVE_CFG(oldinstr, newinstr, __VA_ARGS__, 1)
 
-#endif /* __ASM_ALTERNATIVE_H */
+#endif /* ASM__ARM__ALTERNATIVE_H */
diff --git a/xen/arch/arm/include/asm/arm32/atomic.h b/xen/arch/arm/include/asm/arm32/atomic.h
index 33f9e73b19..f63efd173c 100644
--- a/xen/arch/arm/include/asm/arm32/atomic.h
+++ b/xen/arch/arm/include/asm/arm32/atomic.h
@@ -8,8 +8,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __ARCH_ARM_ARM32_ATOMIC__
-#define __ARCH_ARM_ARM32_ATOMIC__
+#ifndef ASM__ARM__ARM32__ATOMIC_H
+#define ASM__ARM__ARM32__ATOMIC_H
 
 /*
  * ARMv6 UP and SMP safe atomic ops.  We use load exclusive and
@@ -164,7 +164,7 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
 	return oldval;
 }
 
-#endif /* __ARCH_ARM_ARM32_ATOMIC__ */
+#endif /* ASM__ARM__ARM32__ATOMIC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/bitops.h b/xen/arch/arm/include/asm/arm32/bitops.h
index 0d7bb12d5c..6e4018df0c 100644
--- a/xen/arch/arm/include/asm/arm32/bitops.h
+++ b/xen/arch/arm/include/asm/arm32/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM32_BITOPS_H
-#define _ARM_ARM32_BITOPS_H
+#ifndef ASM__ARM__ARM32__BITOPS_H
+#define ASM__ARM__ARM32__BITOPS_H
 
 /*
  * Little endian assembly bitops.  nr = 0 -> byte 0 bit 0.
@@ -37,4 +37,4 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
 
 #endif
 
-#endif /* _ARM_ARM32_BITOPS_H */
+#endif /* ASM__ARM__ARM32__BITOPS_H */
diff --git a/xen/arch/arm/include/asm/arm32/bug.h b/xen/arch/arm/include/asm/arm32/bug.h
index 25cce151dc..638a8be149 100644
--- a/xen/arch/arm/include/asm/arm32/bug.h
+++ b/xen/arch/arm/include/asm/arm32/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_BUG_H__
-#define __ARM_ARM32_BUG_H__
+#ifndef ASM__ARM__ARM32__BUG_H
+#define ASM__ARM__ARM32__BUG_H
 
 #include <xen/stringify.h>
 
@@ -12,4 +12,4 @@
 
 #define BUG_FN_REG r0
 
-#endif /* __ARM_ARM32_BUG_H__ */
+#endif /* ASM__ARM__ARM32__BUG_H */
diff --git a/xen/arch/arm/include/asm/arm32/cmpxchg.h b/xen/arch/arm/include/asm/arm32/cmpxchg.h
index 8455eb7cc3..13f6a9cf19 100644
--- a/xen/arch/arm/include/asm/arm32/cmpxchg.h
+++ b/xen/arch/arm/include/asm/arm32/cmpxchg.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM32_CMPXCHG_H
-#define __ASM_ARM32_CMPXCHG_H
+#ifndef ASM__ARM__ARM32__CMPXCHG_H
+#define ASM__ARM__ARM32__CMPXCHG_H
 
 #include <xen/bug.h>
 #include <xen/prefetch.h>
diff --git a/xen/arch/arm/include/asm/arm32/flushtlb.h b/xen/arch/arm/include/asm/arm32/flushtlb.h
index 61c25a3189..dfeb0f3542 100644
--- a/xen/arch/arm/include/asm/arm32/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm32/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_FLUSHTLB_H__
-#define __ASM_ARM_ARM32_FLUSHTLB_H__
+#ifndef ASM__ARM__ARM32__FLUSHTLB_H
+#define ASM__ARM__ARM32__FLUSHTLB_H
 
 /*
  * Every invalidation operation use the following patterns:
@@ -57,7 +57,7 @@ static inline void __flush_xen_tlb_one(vaddr_t va)
     asm volatile(STORE_CP32(0, TLBIMVAHIS) : : "r" (va) : "memory");
 }
 
-#endif /* __ASM_ARM_ARM32_FLUSHTLB_H__ */
+#endif /* ASM__ARM__ARM32__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/insn.h b/xen/arch/arm/include/asm/arm32/insn.h
index c800cbfff5..9693ad0606 100644
--- a/xen/arch/arm/include/asm/arm32/insn.h
+++ b/xen/arch/arm/include/asm/arm32/insn.h
@@ -13,8 +13,8 @@
   * 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 __ARCH_ARM_ARM32_INSN
-#define __ARCH_ARM_ARM32_INSN
+#ifndef ASM__ARM__ARM32__INSN_H
+#define ASM__ARM__ARM32__INSN_H
 
 #include <xen/types.h>
 
@@ -60,7 +60,7 @@ static inline uint32_t insn_set_branch_offset(uint32_t insn, int32_t offset)
     return aarch32_set_branch_offset(insn, offset);
 }
 
-#endif /* !__ARCH_ARM_ARM32_INSN */
+#endif /* !ASM__ARM__ARM32__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/io.h b/xen/arch/arm/include/asm/arm32/io.h
index 782b564809..c92dcaf1ca 100644
--- a/xen/arch/arm/include/asm/arm32/io.h
+++ b/xen/arch/arm/include/asm/arm32/io.h
@@ -18,8 +18,8 @@
  *  18-Jun-2000 RMK    Removed virt_to_* and friends definitions
  *  05-Oct-2004 BJD     Moved memory string functions to use void __iomem
  */
-#ifndef _ARM_ARM32_IO_H
-#define _ARM_ARM32_IO_H
+#ifndef ASM__ARM__ARM32__IO_H
+#define ASM__ARM__ARM32__IO_H
 
 #include <asm/system.h>
 #include <asm/byteorder.h>
@@ -113,4 +113,4 @@ static inline void writeq_relaxed_non_atomic(u64 val, volatile void __iomem *add
 #define writew(v,c)             ({ __iowmb(); writew_relaxed(v,c); })
 #define writel(v,c)             ({ __iowmb(); writel_relaxed(v,c); })
 
-#endif /* _ARM_ARM32_IO_H */
+#endif /* ASM__ARM__ARM32__IO_H */
diff --git a/xen/arch/arm/include/asm/arm32/macros.h b/xen/arch/arm/include/asm/arm32/macros.h
index db681a7c7e..dc907117a2 100644
--- a/xen/arch/arm/include/asm/arm32/macros.h
+++ b/xen/arch/arm/include/asm/arm32/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_MACROS_H
-#define __ASM_ARM_ARM32_MACROS_H
+#ifndef ASM__ARM__ARM32__MACROS_H
+#define ASM__ARM__ARM32__MACROS_H
 
 .macro ret
         mov     pc, lr
@@ -75,4 +75,4 @@
 
 #endif /* !CONFIG_EARLY_PRINTK */
 
-#endif /* __ASM_ARM_ARM32_MACROS_H */
+#endif /* ASM__ARM__ARM32__MACROS_H */
diff --git a/xen/arch/arm/include/asm/arm32/mm.h b/xen/arch/arm/include/asm/arm32/mm.h
index 856f2dbec4..4f22d9943a 100644
--- a/xen/arch/arm/include/asm/arm32/mm.h
+++ b/xen/arch/arm/include/asm/arm32/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_MM_H__
-#define __ARM_ARM32_MM_H__
+#ifndef ASM__ARM__ARM32__MM_H
+#define ASM__ARM__ARM32__MM_H
 
 #include <xen/percpu.h>
 
@@ -22,7 +22,7 @@ static inline void arch_setup_page_tables(void)
 {
 }
 
-#endif /* __ARM_ARM32_MM_H__ */
+#endif /* ASM__ARM__ARM32__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm32/nospec.h b/xen/arch/arm/include/asm/arm32/nospec.h
index be3c7712c8..ecb627b08f 100644
--- a/xen/arch/arm/include/asm/arm32/nospec.h
+++ b/xen/arch/arm/include/asm/arm32/nospec.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_ARM32_NOSPEC_H
-#define __ASM_ARM32_NOSPEC_H
+#ifndef ASM__ARM__ARM32__NOSPEC_H
+#define ASM__ARM__ARM32__NOSPEC_H
 
 #define CSDB    ".inst  0xe320f014"
 
@@ -20,7 +20,7 @@ static inline unsigned long array_index_mask_nospec(unsigned long idx,
 }
 #define array_index_mask_nospec array_index_mask_nospec
 
-#endif /* __ASM_ARM32_NOSPEC_H */
+#endif /* ASM__ARM__ARM32__NOSPEC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/page.h b/xen/arch/arm/include/asm/arm32/page.h
index 6d1ff0636c..09e631d94a 100644
--- a/xen/arch/arm/include/asm/arm32/page.h
+++ b/xen/arch/arm/include/asm/arm32/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_PAGE_H__
-#define __ARM_ARM32_PAGE_H__
+#ifndef ASM__ARM__ARM32__PAGE_H
+#define ASM__ARM__ARM32__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -89,7 +89,7 @@ static inline uint64_t gva_to_ipa_par(vaddr_t va, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_ARM32_PAGE_H__ */
+#endif /* ASM__ARM__ARM32__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm32/processor.h b/xen/arch/arm/include/asm/arm32/processor.h
index 4e679f3273..c9160c69e8 100644
--- a/xen/arch/arm/include/asm/arm32/processor.h
+++ b/xen/arch/arm/include/asm/arm32/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_PROCESSOR_H
-#define __ASM_ARM_ARM32_PROCESSOR_H
+#ifndef ASM__ARM__ARM32__PROCESSOR_H
+#define ASM__ARM__ARM32__PROCESSOR_H
 
 #define ACTLR_CAXX_SMP      (1<<6)
 
@@ -58,7 +58,7 @@ struct cpu_user_regs
 
 #endif
 
-#endif /* __ASM_ARM_ARM32_PROCESSOR_H */
+#endif /* ASM__ARM__ARM32__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/sysregs.h b/xen/arch/arm/include/asm/arm32/sysregs.h
index 22871999af..3846ca73f4 100644
--- a/xen/arch/arm/include/asm/arm32/sysregs.h
+++ b/xen/arch/arm/include/asm/arm32/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_SYSREGS_H
-#define __ASM_ARM_ARM32_SYSREGS_H
+#ifndef ASM__ARM__ARM32__SYSREGS_H
+#define ASM__ARM__ARM32__SYSREGS_H
 
 #include <xen/stringify.h>
 #include <asm/cpregs.h>
@@ -86,7 +86,7 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_ARM_ARM32_SYSREGS_H */
+#endif /* ASM__ARM__ARM32__SYSREGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/system.h b/xen/arch/arm/include/asm/arm32/system.h
index c617b40438..96060032a9 100644
--- a/xen/arch/arm/include/asm/arm32/system.h
+++ b/xen/arch/arm/include/asm/arm32/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_ARM32_SYSTEM_H
-#define __ASM_ARM32_SYSTEM_H
+#ifndef ASM__ARM__ARM32__SYSTEM_H
+#define ASM__ARM__ARM32__SYSTEM_H
 
 #include <asm/arm32/cmpxchg.h>
 
diff --git a/xen/arch/arm/include/asm/arm32/traps.h b/xen/arch/arm/include/asm/arm32/traps.h
index e3c4a8b473..c234e4c051 100644
--- a/xen/arch/arm/include/asm/arm32/traps.h
+++ b/xen/arch/arm/include/asm/arm32/traps.h
@@ -1,7 +1,7 @@
-#ifndef __ASM_ARM32_TRAPS__
-#define __ASM_ARM32_TRAPS__
+#ifndef ASM__ARM__ARM32__TRAPS_H
+#define ASM__ARM__ARM32__TRAPS_H
 
-#endif /* __ASM_ARM32_TRAPS__ */
+#endif /* ASM__ARM__ARM32__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/vfp.h b/xen/arch/arm/include/asm/arm32/vfp.h
index 2f2e4b24bb..fe17ff7b79 100644
--- a/xen/arch/arm/include/asm/arm32/vfp.h
+++ b/xen/arch/arm/include/asm/arm32/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM32_VFP_H
-#define _ARM_ARM32_VFP_H
+#ifndef ASM__ARM__ARM32__VFP_H
+#define ASM__ARM__ARM32__VFP_H
 
 #define FPEXC_EX                (1U << 31)
 #define FPEXC_EN                (1U << 30)
@@ -30,7 +30,7 @@ struct vfp_state
     uint32_t fpinst2;
 };
 
-#endif /* _ARM_ARM32_VFP_H */
+#endif /* ASM__ARM__ARM32__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/atomic.h b/xen/arch/arm/include/asm/arm64/atomic.h
index 4460165295..1d4c886a07 100644
--- a/xen/arch/arm/include/asm/arm64/atomic.h
+++ b/xen/arch/arm/include/asm/arm64/atomic.h
@@ -19,8 +19,8 @@
  * 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 __ARCH_ARM_ARM64_ATOMIC
-#define __ARCH_ARM_ARM64_ATOMIC
+#ifndef ASM__ARM__ARM64__ATOMIC_H
+#define ASM__ARM__ARM64__ATOMIC_H
 
 /*
  * AArch64 UP and SMP safe atomic ops.  We use load exclusive and
diff --git a/xen/arch/arm/include/asm/arm64/bitops.h b/xen/arch/arm/include/asm/arm64/bitops.h
index a6135838dc..93ec1bfc98 100644
--- a/xen/arch/arm/include/asm/arm64/bitops.h
+++ b/xen/arch/arm/include/asm/arm64/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM64_BITOPS_H
-#define _ARM_ARM64_BITOPS_H
+#ifndef ASM__ARM__ARM64__BITOPS_H
+#define ASM__ARM__ARM64__BITOPS_H
 
 /* Based on linux/include/asm-generic/bitops/find.h */
 
@@ -10,7 +10,7 @@
 
 #endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
 
-#endif /* _ARM_ARM64_BITOPS_H */
+#endif /* ASM__ARM__ARM64__BITOPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/brk.h b/xen/arch/arm/include/asm/arm64/brk.h
index 3af153a053..e36841d4ca 100644
--- a/xen/arch/arm/include/asm/arm64/brk.h
+++ b/xen/arch/arm/include/asm/arm64/brk.h
@@ -6,8 +6,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __ASM_ARM_ARM64_BRK
-#define __ASM_ARM_ARM64_BRK
+#ifndef ASM__ARM__ARM64__BRK_H
+#define ASM__ARM__ARM64__BRK_H
 
 /*
  * #imm16 values used for BRK instruction generation
@@ -28,7 +28,7 @@
  */
 #define AARCH64_BREAK_FAULT (AARCH64_BREAK_MON | (BRK_FAULT_IMM << 5))
 
-#endif /* !__ASM_ARM_ARM64_BRK */
+#endif /* !ASM__ARM__ARM64__BRK_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/bug.h b/xen/arch/arm/include/asm/arm64/bug.h
index 5e11c0dfd5..aedd7c20a7 100644
--- a/xen/arch/arm/include/asm/arm64/bug.h
+++ b/xen/arch/arm/include/asm/arm64/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_BUG_H__
-#define __ARM_ARM64_BUG_H__
+#ifndef ASM__ARM__ARM64__BUG_H
+#define ASM__ARM__ARM64__BUG_H
 
 #include <xen/stringify.h>
 #include <asm/arm64/brk.h>
@@ -8,4 +8,4 @@
 
 #define BUG_FN_REG x0
 
-#endif /* __ARM_ARM64_BUG_H__ */
+#endif /* ASM__ARM__ARM64__BUG_H */
diff --git a/xen/arch/arm/include/asm/arm64/cmpxchg.h b/xen/arch/arm/include/asm/arm64/cmpxchg.h
index f160e8e7bc..40db44da13 100644
--- a/xen/arch/arm/include/asm/arm64/cmpxchg.h
+++ b/xen/arch/arm/include/asm/arm64/cmpxchg.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM64_CMPXCHG_H
-#define __ASM_ARM64_CMPXCHG_H
+#ifndef ASM__ARM__ARM64__CMPXCHG_H
+#define ASM__ARM__ARM64__CMPXCHG_H
 
 #include <xen/bug.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/cpufeature.h b/xen/arch/arm/include/asm/arm64/cpufeature.h
index 1bb503e857..52cc65f307 100644
--- a/xen/arch/arm/include/asm/arm64/cpufeature.h
+++ b/xen/arch/arm/include/asm/arm64/cpufeature.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_CPUFEATURES_H
-#define __ASM_ARM_ARM64_CPUFEATURES_H
+#ifndef ASM__ARM__ARM64__CPUFEATURE_H
+#define ASM__ARM__ARM64__CPUFEATURE_H
 
 /*
  * CPU feature register tracking
diff --git a/xen/arch/arm/include/asm/arm64/efibind.h b/xen/arch/arm/include/asm/arm64/efibind.h
index a1323d452e..cdc25f9a9c 100644
--- a/xen/arch/arm/include/asm/arm64/efibind.h
+++ b/xen/arch/arm/include/asm/arm64/efibind.h
@@ -16,8 +16,8 @@ Abstract:
 Revision History
 
 --*/
-#ifndef AARCH64_EFI_BIND
-#define AARCH64_EFI_BIND
+#ifndef ASM__ARM__ARM64__EFIBIND_H
+#define ASM__ARM__ARM64__EFIBIND_H
 #ifndef __GNUC__
 #pragma pack()
 #endif
diff --git a/xen/arch/arm/include/asm/arm64/flushtlb.h b/xen/arch/arm/include/asm/arm64/flushtlb.h
index 45642201d1..90b8187ef1 100644
--- a/xen/arch/arm/include/asm/arm64/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm64/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_FLUSHTLB_H__
-#define __ASM_ARM_ARM64_FLUSHTLB_H__
+#ifndef ASM__ARM__ARM64__FLUSHTLB_H
+#define ASM__ARM__ARM64__FLUSHTLB_H
 
 /*
  * Every invalidation operation use the following patterns:
@@ -90,7 +90,7 @@ TLB_HELPER_VA(__flush_xen_tlb_one, vae2is)
 #undef TLB_HELPER
 #undef TLB_HELPER_VA
 
-#endif /* __ASM_ARM_ARM64_FLUSHTLB_H__ */
+#endif /* ASM__ARM__ARM64__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/hsr.h b/xen/arch/arm/include/asm/arm64/hsr.h
index 1495ccddea..7d89eca4b1 100644
--- a/xen/arch/arm/include/asm/arm64/hsr.h
+++ b/xen/arch/arm/include/asm/arm64/hsr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_HSR_H
-#define __ASM_ARM_ARM64_HSR_H
+#ifndef ASM__ARM__ARM64__HSR_H
+#define ASM__ARM__ARM64__HSR_H
 
 /* AArch 64 System Register Encodings */
 #define __HSR_SYSREG_c0  0
@@ -150,7 +150,7 @@
 #define HSR_SYSREG_ID_AA64AFR1_EL1   HSR_SYSREG(3,0,c0,c5,5)
 #define HSR_SYSREG_ID_AA64ZFR0_EL1   HSR_SYSREG(3,0,c0,c4,4)
 
-#endif /* __ASM_ARM_ARM64_HSR_H */
+#endif /* ASM__ARM__ARM64__HSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/insn.h b/xen/arch/arm/include/asm/arm64/insn.h
index ab290030ab..bd701e96c5 100644
--- a/xen/arch/arm/include/asm/arm64/insn.h
+++ b/xen/arch/arm/include/asm/arm64/insn.h
@@ -16,8 +16,8 @@
  * 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 __ARCH_ARM_ARM64_INSN
-#define __ARCH_ARM_ARM64_INSN
+#ifndef ASM__ARM__ARM64__INSN_H
+#define ASM__ARM__ARM64__INSN_H
 
 #include <xen/types.h>
 #include <xen/stdbool.h>
@@ -99,7 +99,7 @@ static inline uint32_t insn_set_branch_offset(uint32_t insn, int32_t offset)
     return aarch64_set_branch_offset(insn, offset);
 }
 
-#endif /* !__ARCH_ARM_ARM64_INSN */
+#endif /* !ASM__ARM__ARM64__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/io.h b/xen/arch/arm/include/asm/arm64/io.h
index 2e2ab24f78..607d2501f4 100644
--- a/xen/arch/arm/include/asm/arm64/io.h
+++ b/xen/arch/arm/include/asm/arm64/io.h
@@ -17,8 +17,8 @@
  * 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 _ARM_ARM64_IO_H
-#define _ARM_ARM64_IO_H
+#ifndef ASM__ARM__ARM64__IO_H
+#define ASM__ARM__ARM64__IO_H
 
 #include <asm/system.h>
 #include <asm/byteorder.h>
@@ -147,4 +147,4 @@ static inline void emulate_write(u64 addr)
 #define outw(v, c) ( emulate_write(c) )
 #define outl(v, c) ( emulate_write(c) )
 
-#endif /* _ARM_ARM64_IO_H */
+#endif /* ASM__ARM__ARM64__IO_H */
diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
index 46f50655ad..968198bceb 100644
--- a/xen/arch/arm/include/asm/arm64/macros.h
+++ b/xen/arch/arm/include/asm/arm64/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_MACROS_H
-#define __ASM_ARM_ARM64_MACROS_H
+#ifndef ASM__ARM__ARM64__MACROS_H
+#define ASM__ARM__ARM64__MACROS_H
 
     /*
      * @dst: Result of get_cpu_info()
@@ -96,5 +96,5 @@
  */
 lr      .req    x30             /* link register */
 
-#endif /* __ASM_ARM_ARM64_MACROS_H */
+#endif /* ASM__ARM__ARM64__MACROS_H */
 
diff --git a/xen/arch/arm/include/asm/arm64/mm.h b/xen/arch/arm/include/asm/arm64/mm.h
index b4f7545d2c..b79fd4d2cd 100644
--- a/xen/arch/arm/include/asm/arm64/mm.h
+++ b/xen/arch/arm/include/asm/arm64/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_MM_H__
-#define __ARM_ARM64_MM_H__
+#ifndef ASM__ARM__ARM64__MM_H
+#define ASM__ARM__ARM64__MM_H
 
 extern DEFINE_PAGE_TABLE(xen_pgtable);
 
@@ -16,7 +16,7 @@ void arch_setup_page_tables(void);
 
 void update_boot_mapping(bool enable);
 
-#endif /* __ARM_ARM64_MM_H__ */
+#endif /* ASM__ARM__ARM64__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/nospec.h b/xen/arch/arm/include/asm/arm64/nospec.h
index 2364ca692b..dc8d5aacb4 100644
--- a/xen/arch/arm/include/asm/arm64/nospec.h
+++ b/xen/arch/arm/include/asm/arm64/nospec.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm64 */
-#ifndef __ASM_ARM64_NOSPEC_H
-#define __ASM_ARM64_NOSPEC_H
+#ifndef ASM__ARM__ARM64__NOSPEC_H
+#define ASM__ARM__ARM64__NOSPEC_H
 
 #define csdb()  asm volatile ( "hint #20" : : : "memory" )
 
@@ -24,7 +24,7 @@ static inline unsigned long array_index_mask_nospec(unsigned long idx,
 }
 #define array_index_mask_nospec array_index_mask_nospec
 
-#endif /* __ASM_ARM64_NOSPEC_H */
+#endif /* ASM__ARM__ARM64__NOSPEC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/page.h b/xen/arch/arm/include/asm/arm64/page.h
index e944985ee0..8fc0275290 100644
--- a/xen/arch/arm/include/asm/arm64/page.h
+++ b/xen/arch/arm/include/asm/arm64/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_PAGE_H__
-#define __ARM_ARM64_PAGE_H__
+#ifndef ASM__ARM__ARM64__PAGE_H
+#define ASM__ARM__ARM64__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -79,7 +79,7 @@ extern void clear_page(void *to);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_ARM64_PAGE_H__ */
+#endif /* ASM__ARM__ARM64__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/processor.h b/xen/arch/arm/include/asm/arm64/processor.h
index c749f80ad9..965e9f44f7 100644
--- a/xen/arch/arm/include/asm/arm64/processor.h
+++ b/xen/arch/arm/include/asm/arm64/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_PROCESSOR_H
-#define __ASM_ARM_ARM64_PROCESSOR_H
+#ifndef ASM__ARM__ARM64__PROCESSOR_H
+#define ASM__ARM__ARM64__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 
@@ -88,7 +88,7 @@ struct cpu_user_regs
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_ARM_ARM64_PROCESSOR_H */
+#endif /* ASM__ARM__ARM64__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/sve.h b/xen/arch/arm/include/asm/arm64/sve.h
index a71d6a295d..155dd27766 100644
--- a/xen/arch/arm/include/asm/arm64/sve.h
+++ b/xen/arch/arm/include/asm/arm64/sve.h
@@ -5,8 +5,8 @@
  * Copyright (C) 2022 ARM Ltd.
  */
 
-#ifndef _ARM_ARM64_SVE_H
-#define _ARM_ARM64_SVE_H
+#ifndef ASM__ARM__ARM64__SVE_H
+#define ASM__ARM__ARM64__SVE_H
 
 #include <xen/sched.h>
 
@@ -60,7 +60,7 @@ static inline unsigned int get_sys_vl_len(void)
 
 #endif /* CONFIG_ARM64_SVE */
 
-#endif /* _ARM_ARM64_SVE_H */
+#endif /* ASM__ARM__ARM64__SVE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/sysregs.h b/xen/arch/arm/include/asm/arm64/sysregs.h
index b593e4028b..ee2b2172db 100644
--- a/xen/arch/arm/include/asm/arm64/sysregs.h
+++ b/xen/arch/arm/include/asm/arm64/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_SYSREGS_H
-#define __ASM_ARM_ARM64_SYSREGS_H
+#ifndef ASM__ARM__ARM64__SYSREGS_H
+#define ASM__ARM__ARM64__SYSREGS_H
 
 #include <xen/stringify.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/system.h b/xen/arch/arm/include/asm/arm64/system.h
index 2e2ee212a1..d96a17c30d 100644
--- a/xen/arch/arm/include/asm/arm64/system.h
+++ b/xen/arch/arm/include/asm/arm64/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm64 */
-#ifndef __ASM_ARM64_SYSTEM_H
-#define __ASM_ARM64_SYSTEM_H
+#ifndef ASM__ARM__ARM64__SYSTEM_H
+#define ASM__ARM__ARM64__SYSTEM_H
 
 #include <asm/arm64/cmpxchg.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/traps.h b/xen/arch/arm/include/asm/arm64/traps.h
index a347cb13d6..2d11192d22 100644
--- a/xen/arch/arm/include/asm/arm64/traps.h
+++ b/xen/arch/arm/include/asm/arm64/traps.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM64_TRAPS__
-#define __ASM_ARM64_TRAPS__
+#ifndef ASM__ARM__ARM64__TRAPS_H
+#define ASM__ARM__ARM64__TRAPS_H
 
 void inject_undef64_exception(struct cpu_user_regs *regs, int instr_len);
 
@@ -8,7 +8,7 @@ void do_sysreg(struct cpu_user_regs *regs,
 
 void do_bad_mode(struct cpu_user_regs *regs, int reason);
 
-#endif /* __ASM_ARM64_TRAPS__ */
+#endif /* ASM__ARM__ARM64__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/vfp.h b/xen/arch/arm/include/asm/arm64/vfp.h
index 4b399ccbfb..145b2803ec 100644
--- a/xen/arch/arm/include/asm/arm64/vfp.h
+++ b/xen/arch/arm/include/asm/arm64/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM64_VFP_H
-#define _ARM_ARM64_VFP_H
+#ifndef ASM__ARM__ARM64__VFP_H
+#define ASM__ARM__ARM64__VFP_H
 
 /* ARM64 VFP instruction requires fpregs address to be 128-byte aligned */
 #define __vfp_aligned __attribute__((aligned(16)))
@@ -28,7 +28,7 @@ struct vfp_state
     register_t fpsr;
 };
 
-#endif /* _ARM_ARM64_VFP_H */
+#endif /* ASM__ARM__ARM64__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
index 47efdf5234..c3e136b240 100644
--- a/xen/arch/arm/include/asm/asm_defns.h
+++ b/xen/arch/arm/include/asm/asm_defns.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ASM_DEFNS_H__
-#define __ARM_ASM_DEFNS_H__
+#ifndef ASM__ARM__ASM_DEFNS_H
+#define ASM__ARM__ASM_DEFNS_H
 
 #ifndef COMPILE_OFFSETS
 /* NB. Auto-generated from arch/.../asm-offsets.c */
@@ -28,7 +28,7 @@
 label:  .asciz msg;                             \
 .popsection
 
-#endif /* __ARM_ASM_DEFNS_H__ */
+#endif /* ASM__ARM__ASM_DEFNS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/atomic.h b/xen/arch/arm/include/asm/atomic.h
index 517216d2a8..1af5ee851f 100644
--- a/xen/arch/arm/include/asm/atomic.h
+++ b/xen/arch/arm/include/asm/atomic.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_ATOMIC__
-#define __ARCH_ARM_ATOMIC__
+#ifndef ASM__ARM__ATOMIC_H
+#define ASM__ARM__ATOMIC_H
 
 #include <xen/atomic.h>
 #include <xen/prefetch.h>
@@ -227,7 +227,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
 
 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
 
-#endif /* __ARCH_ARM_ATOMIC__ */
+#endif /* ASM__ARM__ATOMIC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/bitops.h b/xen/arch/arm/include/asm/bitops.h
index f163d9bb45..001e2960c4 100644
--- a/xen/arch/arm/include/asm/bitops.h
+++ b/xen/arch/arm/include/asm/bitops.h
@@ -6,8 +6,8 @@
  *  reworked by rmk.
  */
 
-#ifndef _ARM_BITOPS_H
-#define _ARM_BITOPS_H
+#ifndef ASM__ARM__BITOPS_H
+#define ASM__ARM__BITOPS_H
 
 #include <xen/macros.h>
 
@@ -78,7 +78,7 @@ bool clear_mask16_timeout(uint16_t mask, volatile void *p,
 #define arch_fls(x)  ((x) ? 32 - __builtin_clz(x) : 0)
 #define arch_flsl(x) ((x) ? BITS_PER_LONG - __builtin_clzl(x) : 0)
 
-#endif /* _ARM_BITOPS_H */
+#endif /* ASM__ARM__BITOPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/bug.h b/xen/arch/arm/include/asm/bug.h
index cacaf014ab..19d4645984 100644
--- a/xen/arch/arm/include/asm/bug.h
+++ b/xen/arch/arm/include/asm/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_BUG_H__
-#define __ARM_BUG_H__
+#ifndef ASM__ARM__BUG_H
+#define ASM__ARM__BUG_H
 
 #include <xen/types.h>
 
@@ -82,7 +82,7 @@ struct bug_frame {
     unreachable();                                              \
 } while (0)
 
-#endif /* __ARM_BUG_H__ */
+#endif /* ASM__ARM__BUG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/byteorder.h b/xen/arch/arm/include/asm/byteorder.h
index 9c712c4788..0a564c6aa3 100644
--- a/xen/arch/arm/include/asm/byteorder.h
+++ b/xen/arch/arm/include/asm/byteorder.h
@@ -1,11 +1,11 @@
-#ifndef __ASM_ARM_BYTEORDER_H__
-#define __ASM_ARM_BYTEORDER_H__
+#ifndef ASM__ARM__BYTEORDER_H
+#define ASM__ARM__BYTEORDER_H
 
 #define __BYTEORDER_HAS_U64__
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_ARM_BYTEORDER_H__ */
+#endif /* ASM__ARM__BYTEORDER_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cache.h b/xen/arch/arm/include/asm/cache.h
index b75c970b68..e60a27498d 100644
--- a/xen/arch/arm/include/asm/cache.h
+++ b/xen/arch/arm/include/asm/cache.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_CACHE_H
-#define __ARCH_ARM_CACHE_H
+#ifndef ASM__ARM__CACHE_H
+#define ASM__ARM__CACHE_H
 
 
 /* L1 cache line size */
diff --git a/xen/arch/arm/include/asm/cadence-uart.h b/xen/arch/arm/include/asm/cadence-uart.h
index 48680eea4b..7107ad3e0c 100644
--- a/xen/arch/arm/include/asm/cadence-uart.h
+++ b/xen/arch/arm/include/asm/cadence-uart.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_CADENCE_UART_H__
-#define __ASM_ARM_CADENCE_UART_H__
+#ifndef ASM__ARM__CADENCE_UART_H
+#define ASM__ARM__CADENCE_UART_H
 
 #define R_UART_CR    0x00
 #define UART_CR_RX_RST       0x01
diff --git a/xen/arch/arm/include/asm/config.h b/xen/arch/arm/include/asm/config.h
index a2e22b659d..25a014f480 100644
--- a/xen/arch/arm/include/asm/config.h
+++ b/xen/arch/arm/include/asm/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __ARM_CONFIG_H__
-#define __ARM_CONFIG_H__
+#ifndef ASM__ARM__CONFIG_H
+#define ASM__ARM__CONFIG_H
 
 #if defined(CONFIG_ARM_64)
 # define LONG_BYTEORDER 3
@@ -92,7 +92,7 @@ extern unsigned long frametable_virt_end;
 #include <asm/macros.h>
 #endif
 
-#endif /* __ARM_CONFIG_H__ */
+#endif /* ASM__ARM__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
index aec9e8f329..0732cce1f3 100644
--- a/xen/arch/arm/include/asm/cpregs.h
+++ b/xen/arch/arm/include/asm/cpregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_CPREGS_H
-#define __ASM_ARM_CPREGS_H
+#ifndef ASM__ARM__CPREGS_H
+#define ASM__ARM__CPREGS_H
 
 /*
  * AArch32 Co-processor registers.
diff --git a/xen/arch/arm/include/asm/cpuerrata.h b/xen/arch/arm/include/asm/cpuerrata.h
index 8d7e7b9375..8c9e3e0104 100644
--- a/xen/arch/arm/include/asm/cpuerrata.h
+++ b/xen/arch/arm/include/asm/cpuerrata.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_CPUERRATA_H__
-#define __ARM_CPUERRATA_H__
+#ifndef ASM__ARM__CPUERRATA_H
+#define ASM__ARM__CPUERRATA_H
 
 #include <asm/cpufeature.h>
 #include <asm/alternative.h>
@@ -74,7 +74,7 @@ static inline enum ssbd_state get_ssbd_state(void)
 
 #endif
 
-#endif /* __ARM_CPUERRATA_H__ */
+#endif /* ASM__ARM__CPUERRATA_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cpufeature.h b/xen/arch/arm/include/asm/cpufeature.h
index 969e043f5b..b9f42beac7 100644
--- a/xen/arch/arm/include/asm/cpufeature.h
+++ b/xen/arch/arm/include/asm/cpufeature.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_CPUFEATURE_H
-#define __ASM_ARM_CPUFEATURE_H
+#ifndef ASM__ARM__CPUFEATURE_H
+#define ASM__ARM__CPUFEATURE_H
 
 #ifdef CONFIG_ARM_64
 #define cpu_feature64(c, feat)         ((c)->pfr64.feat)
diff --git a/xen/arch/arm/include/asm/current.h b/xen/arch/arm/include/asm/current.h
index 0be7ad6ef9..226cf953d7 100644
--- a/xen/arch/arm/include/asm/current.h
+++ b/xen/arch/arm/include/asm/current.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_CURRENT_H__
-#define __ARM_CURRENT_H__
+#ifndef ASM__ARM__CURRENT_H
+#define ASM__ARM__CURRENT_H
 
 #include <xen/page-size.h>
 #include <xen/percpu.h>
@@ -65,7 +65,7 @@ do {                                                    \
 
 #endif
 
-#endif /* __ARM_CURRENT_H__ */
+#endif /* ASM__ARM__CURRENT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/div64.h b/xen/arch/arm/include/asm/div64.h
index 8fe17f0ff2..627583f04f 100644
--- a/xen/arch/arm/include/asm/div64.h
+++ b/xen/arch/arm/include/asm/div64.h
@@ -1,6 +1,6 @@
 /* Taken from Linux arch/arm */
-#ifndef __ASM_ARM_DIV64
-#define __ASM_ARM_DIV64
+#ifndef ASM__ARM__DIV64_H
+#define ASM__ARM__DIV64_H
 
 #include <asm/system.h>
 #include <xen/types.h>
diff --git a/xen/arch/arm/include/asm/dom0less-build.h b/xen/arch/arm/include/asm/dom0less-build.h
index 5864944bda..48c5c85ead 100644
--- a/xen/arch/arm/include/asm/dom0less-build.h
+++ b/xen/arch/arm/include/asm/dom0less-build.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_DOM0LESS_BUILD_H_
-#define __ASM_DOM0LESS_BUILD_H_
+#ifndef ASM__ARM__DOM0LESS_BUILD_H
+#define ASM__ARM__DOM0LESS_BUILD_H
 
 #include <xen/stdbool.h>
 
@@ -20,7 +20,7 @@ static inline bool is_dom0less_mode(void)
 
 #endif /* CONFIG_DOM0LESS_BOOT */
 
-#endif /* __ASM_DOM0LESS_BUILD_H_ */
+#endif /* ASM__ARM__DOM0LESS_BUILD_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index f1d72c6e48..f27353d9c8 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_H__
-#define __ASM_DOMAIN_H__
+#ifndef ASM__ARM__DOMAIN_H
+#define ASM__ARM__DOMAIN_H
 
 #include <xen/cache.h>
 #include <xen/timer.h>
@@ -310,7 +310,7 @@ static inline void update_guest_memory_policy(struct vcpu *v,
                                               struct guest_memory_policy *gmp)
 {}
 
-#endif /* __ASM_DOMAIN_H__ */
+#endif /* ASM__ARM__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/domain_build.h b/xen/arch/arm/include/asm/domain_build.h
index e712afbc7f..740a45f964 100644
--- a/xen/arch/arm/include/asm/domain_build.h
+++ b/xen/arch/arm/include/asm/domain_build.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_BUILD_H__
-#define __ASM_DOMAIN_BUILD_H__
+#ifndef ASM__ARM__DOMAIN_BUILD_H
+#define ASM__ARM__DOMAIN_BUILD_H
 
 #include <xen/sched.h>
 #include <asm/kernel.h>
diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
index 46a5e562dd..5dc65483f1 100644
--- a/xen/arch/arm/include/asm/early_printk.h
+++ b/xen/arch/arm/include/asm/early_printk.h
@@ -7,8 +7,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __ARM_EARLY_PRINTK_H__
-#define __ARM_EARLY_PRINTK_H__
+#ifndef ASM__ARM__EARLY_PRINTK_H
+#define ASM__ARM__EARLY_PRINTK_H
 
 #include <xen/page-size.h>
 #include <asm/fixmap.h>
diff --git a/xen/arch/arm/include/asm/elf.h b/xen/arch/arm/include/asm/elf.h
index 9e436e7556..d55e8a1912 100644
--- a/xen/arch/arm/include/asm/elf.h
+++ b/xen/arch/arm/include/asm/elf.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ELF_H__
-#define __ARM_ELF_H__
+#ifndef ASM__ARM__ELF_H
+#define ASM__ARM__ELF_H
 
 typedef struct {
     unsigned long r0;
@@ -20,7 +20,7 @@ typedef struct {
     unsigned long pc;
 } ELF_Gregset;
 
-#endif /* __ARM_ELF_H__ */
+#endif /* ASM__ARM__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/event.h b/xen/arch/arm/include/asm/event.h
index b14c166ad6..c0088bbb64 100644
--- a/xen/arch/arm/include/asm/event.h
+++ b/xen/arch/arm/include/asm/event.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_EVENT_H__
-#define __ASM_EVENT_H__
+#ifndef ASM__ARM__EVENT_H
+#define ASM__ARM__EVENT_H
 
 #include <asm/domain.h>
 
diff --git a/xen/arch/arm/include/asm/exynos4210-uart.h b/xen/arch/arm/include/asm/exynos4210-uart.h
index e2ab4a43e4..21afc9e3f3 100644
--- a/xen/arch/arm/include/asm/exynos4210-uart.h
+++ b/xen/arch/arm/include/asm/exynos4210-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_EXYNOS4210_H
-#define __ASM_ARM_EXYNOS4210_H
+#ifndef ASM__ARM__EXYNOS4210_UART_H
+#define ASM__ARM__EXYNOS4210_UART_H
 
 
 /*
@@ -100,7 +100,7 @@
 #define UINTM_RXD       (1 << 0)
 #define UINTM_ALLI      (UINTM_MODEM | UINTM_TXD | UINTM_ERROR | UINTM_RXD)
 
-#endif /* __ASM_ARM_EXYNOS4210_H */
+#endif /* ASM__ARM__EXYNOS4210_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/fixmap.h b/xen/arch/arm/include/asm/fixmap.h
index 0cb5d54d1c..da6bf72bec 100644
--- a/xen/arch/arm/include/asm/fixmap.h
+++ b/xen/arch/arm/include/asm/fixmap.h
@@ -1,8 +1,8 @@
 /*
  * fixmap.h: compile-time virtual memory allocation
  */
-#ifndef __ASM_FIXMAP_H
-#define __ASM_FIXMAP_H
+#ifndef ASM__ARM__FIXMAP_H
+#define ASM__ARM__FIXMAP_H
 
 #include <xen/acpi.h>
 #include <xen/pmap.h>
@@ -45,4 +45,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_FIXMAP_H */
+#endif /* ASM__ARM__FIXMAP_H */
diff --git a/xen/arch/arm/include/asm/flushtlb.h b/xen/arch/arm/include/asm/flushtlb.h
index e45fb6d97b..2239acf4fc 100644
--- a/xen/arch/arm/include/asm/flushtlb.h
+++ b/xen/arch/arm/include/asm/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_FLUSHTLB_H__
-#define __ASM_ARM_FLUSHTLB_H__
+#ifndef ASM__ARM__FLUSHTLB_H
+#define ASM__ARM__FLUSHTLB_H
 
 #include <xen/cpumask.h>
 
@@ -68,7 +68,7 @@ static inline void flush_xen_tlb_range_va(vaddr_t va,
     isb();
 }
 
-#endif /* __ASM_ARM_FLUSHTLB_H__ */
+#endif /* ASM__ARM__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 541f0eeb80..edbeba6388 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_GIC_H__
-#define __ASM_ARM_GIC_H__
+#ifndef ASM__ARM__GIC_H
+#define ASM__ARM__GIC_H
 
 #define NR_GIC_LOCAL_IRQS  NR_LOCAL_IRQS
 #define NR_GIC_SGI         16
diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/asm/gic_v3_defs.h
index 2af093e774..39c594470b 100644
--- a/xen/arch/arm/include/asm/gic_v3_defs.h
+++ b/xen/arch/arm/include/asm/gic_v3_defs.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_GIC_V3_DEFS_H__
-#define __ASM_ARM_GIC_V3_DEFS_H__
+#ifndef ASM__ARM__GIC_V3_DEFS_H
+#define ASM__ARM__GIC_V3_DEFS_H
 
 #include <xen/sizes.h>
 
@@ -210,7 +210,7 @@ struct rdist_region {
     bool single_rdist;
 };
 
-#endif /* __ASM_ARM_GIC_V3_DEFS_H__ */
+#endif /* ASM__ARM__GIC_V3_DEFS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/gic_v3_its.h b/xen/arch/arm/include/asm/gic_v3_its.h
index c24d4752d0..f34b803f66 100644
--- a/xen/arch/arm/include/asm/gic_v3_its.h
+++ b/xen/arch/arm/include/asm/gic_v3_its.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_ITS_H__
-#define __ASM_ARM_ITS_H__
+#ifndef ASM__ARM__GIC_V3_ITS_H
+#define ASM__ARM__GIC_V3_ITS_H
 
 #define GITS_CTLR                       0x000
 #define GITS_IIDR                       0x004
diff --git a/xen/arch/arm/include/asm/grant_table.h b/xen/arch/arm/include/asm/grant_table.h
index d3c518a926..b104fc890c 100644
--- a/xen/arch/arm/include/asm/grant_table.h
+++ b/xen/arch/arm/include/asm/grant_table.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_GRANT_TABLE_H__
-#define __ASM_GRANT_TABLE_H__
+#ifndef ASM__ARM__GRANT_TABLE_H
+#define ASM__ARM__GRANT_TABLE_H
 
 #include <xen/grant_table.h>
 #include <xen/kernel.h>
@@ -76,7 +76,7 @@ int replace_grant_host_mapping(uint64_t gpaddr, mfn_t frame,
 #define gnttab_need_iommu_mapping(d)                    \
     (is_domain_direct_mapped(d) && is_iommu_enabled(d))
 
-#endif /* __ASM_GRANT_TABLE_H__ */
+#endif /* ASM__ARM__GRANT_TABLE_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_access.h b/xen/arch/arm/include/asm/guest_access.h
index 18c88b70d7..2deaf968f9 100644
--- a/xen/arch/arm/include/asm/guest_access.h
+++ b/xen/arch/arm/include/asm/guest_access.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_GUEST_ACCESS_H__
-#define __ASM_ARM_GUEST_ACCESS_H__
+#ifndef ASM__ARM__GUEST_ACCESS_H
+#define ASM__ARM__GUEST_ACCESS_H
 
 #include <xen/errno.h>
 #include <xen/sched.h>
@@ -31,7 +31,7 @@ int access_guest_memory_by_gpa(struct domain *d, paddr_t gpa, void *buf,
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_ARM_GUEST_ACCESS_H__ */
+#endif /* ASM__ARM__GUEST_ACCESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_atomics.h b/xen/arch/arm/include/asm/guest_atomics.h
index 8893eb9a55..29fc05f5e7 100644
--- a/xen/arch/arm/include/asm/guest_atomics.h
+++ b/xen/arch/arm/include/asm/guest_atomics.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_GUEST_ATOMICS_H
-#define _ARM_GUEST_ATOMICS_H
+#ifndef ASM__ARM__GUEST_ATOMICS_H
+#define ASM__ARM__GUEST_ATOMICS_H
 
 #include <xen/bitops.h>
 #include <xen/sched.h>
@@ -137,7 +137,7 @@ static inline uint64_t guest_cmpxchg64(struct domain *d,
     return oldval;
 }
 
-#endif /* _ARM_GUEST_ATOMICS_H */
+#endif /* ASM__ARM__GUEST_ATOMICS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_walk.h b/xen/arch/arm/include/asm/guest_walk.h
index 8768ac9894..2be96d9020 100644
--- a/xen/arch/arm/include/asm/guest_walk.h
+++ b/xen/arch/arm/include/asm/guest_walk.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_GUEST_WALK_H
-#define _XEN_GUEST_WALK_H
+#ifndef ASM__ARM__GUEST_WALK_H
+#define ASM__ARM__GUEST_WALK_H
 
 /* Walk the guest's page tables in software. */
 bool guest_walk_tables(const struct vcpu *v,
@@ -7,7 +7,7 @@ bool guest_walk_tables(const struct vcpu *v,
                        paddr_t *ipa,
                        unsigned int *perms);
 
-#endif /* _XEN_GUEST_WALK_H */
+#endif /* ASM__ARM__GUEST_WALK_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/hsr.h b/xen/arch/arm/include/asm/hsr.h
index 9b91b28c48..d3e7b70835 100644
--- a/xen/arch/arm/include/asm/hsr.h
+++ b/xen/arch/arm/include/asm/hsr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_HSR_H
-#define __ASM_ARM_HSR_H
+#ifndef ASM__ARM__HSR_H
+#define ASM__ARM__HSR_H
 
 #include <xen/types.h>
 
@@ -205,7 +205,7 @@ union hsr {
 /* HSR.EC == HSR_{HVC32, HVC64, SMC64, SVC32, SVC64} */
 #define HSR_XXC_IMM_MASK     (0xffff)
 
-#endif /* __ASM_ARM_HSR_H */
+#endif /* ASM__ARM__HSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/hypercall.h b/xen/arch/arm/include/asm/hypercall.h
index 07e231f8b5..95d38206b6 100644
--- a/xen/arch/arm/include/asm/hypercall.h
+++ b/xen/arch/arm/include/asm/hypercall.h
@@ -1,17 +1,17 @@
 /* SAF-10-safe direct inclusion guard before */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_ARM_HYPERCALL_H__
-#define __ASM_ARM_HYPERCALL_H__
+#ifndef ASM__ARM__HYPERCALL_H
+#define ASM__ARM__HYPERCALL_H
 
 #include <public/domctl.h> /* for arch_do_domctl */
 
 long subarch_do_domctl(struct xen_domctl *domctl, struct domain *d,
                        XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
 
-#endif /* __ASM_ARM_HYPERCALL_H__ */
+#endif /* ASM__ARM__HYPERCALL_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/imx-lpuart.h b/xen/arch/arm/include/asm/imx-lpuart.h
index fe859045dc..1e074649cf 100644
--- a/xen/arch/arm/include/asm/imx-lpuart.h
+++ b/xen/arch/arm/include/asm/imx-lpuart.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_IMX_LPUART_H__
-#define __ASM_ARM_IMX_LPUART_H__
+#ifndef ASM__ARM__IMX_LPUART_H
+#define ASM__ARM__IMX_LPUART_H
 
 /* 32-bit register definition */
 #define UARTBAUD          (0x10)
@@ -52,7 +52,7 @@
 
 #define UARTWATER_RXCNT_OFF     24
 
-#endif /* __ASM_ARM_IMX_LPUART_H__ */
+#endif /* ASM__ARM__IMX_LPUART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/insn.h b/xen/arch/arm/include/asm/insn.h
index 27271e95f9..8aa66b2e95 100644
--- a/xen/arch/arm/include/asm/insn.h
+++ b/xen/arch/arm/include/asm/insn.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_INSN
-#define __ARCH_ARM_INSN
+#ifndef ASM__ARM__INSN_H
+#define ASM__ARM__INSN_H
 
 #ifndef __ASSEMBLY__
 
@@ -18,7 +18,7 @@
 /* On ARM32,64 instructions are always 4 bytes long. */
 #define ARCH_PATCH_INSN_SIZE 4
 
-#endif /* !__ARCH_ARM_INSN */
+#endif /* !ASM__ARM__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/io.h b/xen/arch/arm/include/asm/io.h
index e426804424..2475fca9de 100644
--- a/xen/arch/arm/include/asm/io.h
+++ b/xen/arch/arm/include/asm/io.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
+#ifndef ASM__ARM__IO_H
+#define ASM__ARM__IO_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/io.h>
diff --git a/xen/arch/arm/include/asm/iommu.h b/xen/arch/arm/include/asm/iommu.h
index d57bd8a38c..eba17ec695 100644
--- a/xen/arch/arm/include/asm/iommu.h
+++ b/xen/arch/arm/include/asm/iommu.h
@@ -11,8 +11,8 @@
  * 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 __ARCH_ARM_IOMMU_H__
-#define __ARCH_ARM_IOMMU_H__
+#ifndef ASM__ARM__IOMMU_H
+#define ASM__ARM__IOMMU_H
 
 struct arch_iommu
 {
@@ -34,7 +34,7 @@ int __must_check arm_iommu_unmap_page(struct domain *d, dfn_t dfn,
                                       unsigned int order,
                                       unsigned int *flush_flags);
 
-#endif /* __ARCH_ARM_IOMMU_H__ */
+#endif /* ASM__ARM__IOMMU_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/iommu_fwspec.h b/xen/arch/arm/include/asm/iommu_fwspec.h
index 5cdb53f8e8..f018e121f9 100644
--- a/xen/arch/arm/include/asm/iommu_fwspec.h
+++ b/xen/arch/arm/include/asm/iommu_fwspec.h
@@ -24,8 +24,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ARCH_ARM_IOMMU_FWSPEC_H__
-#define __ARCH_ARM_IOMMU_FWSPEC_H__
+#ifndef ASM__ARM__IOMMU_FWSPEC_H
+#define ASM__ARM__IOMMU_FWSPEC_H
 
 /* per-device IOMMU instance data */
 struct iommu_fwspec {
@@ -55,7 +55,7 @@ static inline void dev_iommu_fwspec_set(struct device *dev,
     dev->iommu_fwspec = fwspec;
 }
 
-#endif /* __ARCH_ARM_IOMMU_FWSPEC_H__ */
+#endif /* ASM__ARM__IOMMU_FWSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/ioreq.h b/xen/arch/arm/include/asm/ioreq.h
index 50185978d5..9300ba53d6 100644
--- a/xen/arch/arm/include/asm/ioreq.h
+++ b/xen/arch/arm/include/asm/ioreq.h
@@ -17,8 +17,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_IOREQ_H__
-#define __ASM_ARM_IOREQ_H__
+#ifndef ASM__ARM__IOREQ_H
+#define ASM__ARM__IOREQ_H
 
 #ifdef CONFIG_IOREQ_SERVER
 enum io_state handle_ioserv(struct cpu_user_regs *regs, struct vcpu *v);
@@ -57,7 +57,7 @@ static inline void msix_write_completion(struct vcpu *v)
 #define IOREQ_STATUS_UNHANDLED   IO_UNHANDLED
 #define IOREQ_STATUS_RETRY       IO_RETRY
 
-#endif /* __ASM_ARM_IOREQ_H__ */
+#endif /* ASM__ARM__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h
index 88e060bf29..42abb6614e 100644
--- a/xen/arch/arm/include/asm/irq.h
+++ b/xen/arch/arm/include/asm/irq.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
+#ifndef ASM__ARM__IRQ_H
+#define ASM__ARM__IRQ_H
 
 #include <xen/device_tree.h>
 #include <public/device_tree_defs.h>
@@ -101,7 +101,7 @@ bool irq_type_set_by_domain(const struct domain *d);
 void irq_end_none(struct irq_desc *irq);
 #define irq_end_none irq_end_none
 
-#endif /* _ASM_HW_IRQ_H */
+#endif /* ASM__ARM__IRQ_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index 7e6e3c82a4..39452f984b 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -3,8 +3,8 @@
  *
  * Copyright (C) 2011 Citrix Systems, Inc.
  */
-#ifndef __ARCH_ARM_KERNEL_H__
-#define __ARCH_ARM_KERNEL_H__
+#ifndef ASM__ARM__KERNEL_H
+#define ASM__ARM__KERNEL_H
 
 #include <xen/device_tree.h>
 #include <asm/domain.h>
@@ -126,7 +126,7 @@ int kernel_probe(struct kernel_info *info, const struct dt_device_node *domain);
  */
 void kernel_load(struct kernel_info *info);
 
-#endif /* #ifdef __ARCH_ARM_KERNEL_H__ */
+#endif /* #ifdef ASM__ARM__KERNEL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/livepatch.h b/xen/arch/arm/include/asm/livepatch.h
index 026af5e7dc..11fec2033c 100644
--- a/xen/arch/arm/include/asm/livepatch.h
+++ b/xen/arch/arm/include/asm/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_ARM_LIVEPATCH_H__
-#define __XEN_ARM_LIVEPATCH_H__
+#ifndef ASM__ARM__LIVEPATCH_H
+#define ASM__ARM__LIVEPATCH_H
 
 #include <xen/sizes.h> /* For SZ_* macros. */
 #include <asm/insn.h>
@@ -24,7 +24,7 @@ extern void *vmap_of_xen_text;
 #define ARCH_LIVEPATCH_RANGE SZ_128M
 #endif
 
-#endif /* __XEN_ARM_LIVEPATCH_H__ */
+#endif /* ASM__ARM__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/lpae.h b/xen/arch/arm/include/asm/lpae.h
index 4a1679cb33..ebf20ac121 100644
--- a/xen/arch/arm/include/asm/lpae.h
+++ b/xen/arch/arm/include/asm/lpae.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_LPAE_H__
-#define __ARM_LPAE_H__
+#ifndef ASM__ARM__LPAE_H
+#define ASM__ARM__LPAE_H
 
 #ifndef __ASSEMBLY__
 
@@ -284,7 +284,7 @@ lpae_t __aligned(PAGE_SIZE) name[XEN_PT_LPAE_ENTRIES * (nr)]
 
 #define DEFINE_PAGE_TABLE(name) DEFINE_PAGE_TABLES(name, 1)
 
-#endif /* __ARM_LPAE_H__ */
+#endif /* ASM__ARM__LPAE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/macros.h b/xen/arch/arm/include/asm/macros.h
index dc791245df..a6b212f4e3 100644
--- a/xen/arch/arm/include/asm/macros.h
+++ b/xen/arch/arm/include/asm/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACROS_H
-#define __ASM_MACROS_H
+#ifndef ASM__ARM__MACROS_H
+#define ASM__ARM__MACROS_H
 
 #ifndef __ASSEMBLY__
 # error "This file should only be included in assembly file"
diff --git a/xen/arch/arm/include/asm/mem_access.h b/xen/arch/arm/include/asm/mem_access.h
index abac8032fc..22b3dc3786 100644
--- a/xen/arch/arm/include/asm/mem_access.h
+++ b/xen/arch/arm/include/asm/mem_access.h
@@ -14,8 +14,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _ASM_ARM_MEM_ACCESS_H
-#define _ASM_ARM_MEM_ACCESS_H
+#ifndef ASM__ARM__MEM_ACCESS_H
+#define ASM__ARM__MEM_ACCESS_H
 
 #include <xen/types.h>
 
@@ -59,7 +59,7 @@ p2m_mem_access_check_and_get_page(vaddr_t gva, unsigned long flag,
 }
 
 #endif /*CONFIG_MEM_ACCESS*/
-#endif /* _ASM_ARM_MEM_ACCESS_H */
+#endif /* ASM__ARM__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 5abd4b0d1c..227f678a2e 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_MM__
-#define __ARCH_ARM_MM__
+#ifndef ASM__ARM__MM_H
+#define ASM__ARM__MM_H
 
 #include <xen/kernel.h>
 #include <asm/page.h>
@@ -426,7 +426,7 @@ 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 );
 }
 
-#endif /*  __ARCH_ARM_MM__ */
+#endif /*  ASM__ARM__MM_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/mmio.h b/xen/arch/arm/include/asm/mmio.h
index b22cfdac5b..a0c5efeba7 100644
--- a/xen/arch/arm/include/asm/mmio.h
+++ b/xen/arch/arm/include/asm/mmio.h
@@ -16,8 +16,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_MMIO_H__
-#define __ASM_ARM_MMIO_H__
+#ifndef ASM__ARM__MMIO_H
+#define ASM__ARM__MMIO_H
 
 #include <xen/lib.h>
 #include <xen/rwlock.h>
@@ -92,7 +92,7 @@ void domain_io_free(struct domain *d);
 void try_decode_instruction(const struct cpu_user_regs *regs,
                             mmio_info_t *info);
 
-#endif  /* __ASM_ARM_MMIO_H__ */
+#endif  /* ASM__ARM__MMIO_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index a3b546465b..5fe3d1db57 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ARM_MMU_LAYOUT_H__
-#define __ARM_MMU_LAYOUT_H__
+#ifndef ASM__ARM__MMU__LAYOUT_H
+#define ASM__ARM__MMU__LAYOUT_H
 
 /*
  * ARM32 layout:
@@ -140,7 +140,7 @@
 
 #endif
 
-#endif /* __ARM_MMU_LAYOUT_H__ */
+#endif /* ASM__ARM__MMU__LAYOUT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/mmu/mm.h b/xen/arch/arm/include/asm/mmu/mm.h
index c5e03a66bf..44cd9b9007 100644
--- a/xen/arch/arm/include/asm/mmu/mm.h
+++ b/xen/arch/arm/include/asm/mmu/mm.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef __ARM_MMU_MM_H__
-#define __ARM_MMU_MM_H__
+#ifndef ASM__ARM__MMU__MM_H
+#define ASM__ARM__MMU__MM_H
 
 /* Non-boot CPUs use this to find the correct pagetables. */
 extern uint64_t init_ttbr;
@@ -32,7 +32,7 @@ void dump_pt_walk(paddr_t ttbr, paddr_t addr,
 /* Switch to a new root page-tables */
 extern void switch_ttbr(uint64_t ttbr);
 
-#endif /* __ARM_MMU_MM_H__ */
+#endif /* ASM__ARM__MMU__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/p2m.h b/xen/arch/arm/include/asm/mmu/p2m.h
index 58496c0b09..f085075d8f 100644
--- a/xen/arch/arm/include/asm/mmu/p2m.h
+++ b/xen/arch/arm/include/asm/mmu/p2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef __ARM_MMU_P2M_H__
-#define __ARM_MMU_P2M_H__
+#ifndef ASM__ARM__MMU__P2M_H
+#define ASM__ARM__MMU__P2M_H
 
 extern unsigned int p2m_root_order;
 extern unsigned int p2m_root_level;
@@ -14,7 +14,7 @@ void p2m_tlb_flush_sync(struct p2m_domain *p2m);
 
 void p2m_clear_root_pages(struct p2m_domain *p2m);
 
-#endif /* __ARM_MMU_P2M_H__ */
+#endif /* ASM__ARM__MMU__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/monitor.h b/xen/arch/arm/include/asm/monitor.h
index 77a3c1a36c..5ee181065e 100644
--- a/xen/arch/arm/include/asm/monitor.h
+++ b/xen/arch/arm/include/asm/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_MONITOR_H__
-#define __ASM_ARM_MONITOR_H__
+#ifndef ASM__ARM__MONITOR_H
+#define ASM__ARM__MONITOR_H
 
 #include <xen/sched.h>
 #include <public/domctl.h>
@@ -44,4 +44,4 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
 
 int monitor_smc(void);
 
-#endif /* __ASM_ARM_MONITOR_H__ */
+#endif /* ASM__ARM__MONITOR_H */
diff --git a/xen/arch/arm/include/asm/new_vgic.h b/xen/arch/arm/include/asm/new_vgic.h
index 1e76213893..8007d7d717 100644
--- a/xen/arch/arm/include/asm/new_vgic.h
+++ b/xen/arch/arm/include/asm/new_vgic.h
@@ -13,8 +13,8 @@
  * 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 __ASM_ARM_NEW_VGIC_H
-#define __ASM_ARM_NEW_VGIC_H
+#ifndef ASM__ARM__NEW_VGIC_H
+#define ASM__ARM__NEW_VGIC_H
 
 #include <asm/atomic.h>
 #include <asm/mmio.h>
@@ -198,7 +198,7 @@ static inline paddr_t vgic_dist_base(const struct vgic_dist *vgic)
     return vgic->dbase;
 }
 
-#endif /* __ASM_ARM_NEW_VGIC_H */
+#endif /* ASM__ARM__NEW_VGIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/nospec.h b/xen/arch/arm/include/asm/nospec.h
index efac51fc03..f06d40fba4 100644
--- a/xen/arch/arm/include/asm/nospec.h
+++ b/xen/arch/arm/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
-#ifndef _ASM_ARM_NOSPEC_H
-#define _ASM_ARM_NOSPEC_H
+#ifndef ASM__ARM__NOSPEC_H
+#define ASM__ARM__NOSPEC_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/nospec.h>
@@ -21,7 +21,7 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* _ASM_ARM_NOSPEC_H */
+#endif /* ASM__ARM__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 4818dd4b6a..edbcaad77e 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_P2M_H
-#define _XEN_P2M_H
+#ifndef ASM__ARM__P2M_H
+#define ASM__ARM__P2M_H
 
 #include <xen/mm.h>
 #include <xen/radix-tree.h>
@@ -160,7 +160,7 @@ typedef enum {
                              P2M_FOREIGN_TYPES))
 
 /* All common type definitions should live ahead of this inclusion. */
-#ifdef _XEN_P2M_COMMON_H
+#ifdef XEN__P2M_COMMON_H
 # error "xen/p2m-common.h should not be included directly"
 #endif
 #include <xen/p2m-common.h>
@@ -449,7 +449,7 @@ static inline bool vcpu_has_cache_enabled(struct vcpu *v)
     return (READ_SYSREG(SCTLR_EL1) & mask) == mask;
 }
 
-#endif /* _XEN_P2M_H */
+#endif /* ASM__ARM__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/page-bits.h b/xen/arch/arm/include/asm/page-bits.h
index deb381ceeb..5a0fd0a93f 100644
--- a/xen/arch/arm/include/asm/page-bits.h
+++ b/xen/arch/arm/include/asm/page-bits.h
@@ -1,8 +1,8 @@
-#ifndef __ARM_PAGE_SHIFT_H__
-#define __ARM_PAGE_SHIFT_H__
+#ifndef ASM__ARM__PAGE_BITS_H
+#define ASM__ARM__PAGE_BITS_H
 
 #define PAGE_SHIFT              12
 
 #define PADDR_BITS              CONFIG_PADDR_BITS
 
-#endif /* __ARM_PAGE_SHIFT_H__ */
+#endif /* ASM__ARM__PAGE_BITS_H */
diff --git a/xen/arch/arm/include/asm/page.h b/xen/arch/arm/include/asm/page.h
index 69f817d1e6..24849998aa 100644
--- a/xen/arch/arm/include/asm/page.h
+++ b/xen/arch/arm/include/asm/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_PAGE_H__
-#define __ARM_PAGE_H__
+#ifndef ASM__ARM__PAGE_H
+#define ASM__ARM__PAGE_H
 
 #include <public/xen.h>
 #include <xen/page-size.h>
@@ -316,7 +316,7 @@ static inline int gva_to_ipa(vaddr_t va, paddr_t *paddr, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_PAGE_H__ */
+#endif /* ASM__ARM__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h
index 7f77226c9b..ccef80687c 100644
--- a/xen/arch/arm/include/asm/pci.h
+++ b/xen/arch/arm/include/asm/pci.h
@@ -12,8 +12,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ARM_PCI_H__
-#define __ARM_PCI_H__
+#ifndef ASM__ARM__PCI_H
+#define ASM__ARM__PCI_H
 
 #ifdef CONFIG_HAS_PCI
 
@@ -148,4 +148,4 @@ static inline int pci_get_new_domain_nr(void)
 }
 
 #endif  /*!CONFIG_HAS_PCI*/
-#endif /* __ARM_PCI_H__ */
+#endif /* ASM__ARM__PCI_H */
diff --git a/xen/arch/arm/include/asm/perfc.h b/xen/arch/arm/include/asm/perfc.h
index 95c4b2b6b7..5c6a62720a 100644
--- a/xen/arch/arm/include/asm/perfc.h
+++ b/xen/arch/arm/include/asm/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PERFC_H__
-#define __ASM_PERFC_H__
+#ifndef ASM__ARM__PERFC_H
+#define ASM__ARM__PERFC_H
 
 static inline void arch_perfc_reset(void)
 {
diff --git a/xen/arch/arm/include/asm/perfc_defn.h b/xen/arch/arm/include/asm/perfc_defn.h
index 3ab0391175..56d9541e5f 100644
--- a/xen/arch/arm/include/asm/perfc_defn.h
+++ b/xen/arch/arm/include/asm/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef ASM__ARM__PERFC_DEFN_H*/
+/*#define ASM__ARM__PERFC_DEFN_H*/
 
 PERFCOUNTER(invalid_hypercalls, "invalid hypercalls")
 
@@ -76,7 +76,7 @@ PERFCOUNTER(maintenance_irqs, "Maintenance interrupts")
 PERFCOUNTER(atomics_guest,    "atomics: guest access")
 PERFCOUNTER(atomics_guest_paused,   "atomics: guest paused")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* ASM__ARM__PERFC_DEFN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pl011-uart.h b/xen/arch/arm/include/asm/pl011-uart.h
index 27c9bfa444..ce6084784a 100644
--- a/xen/arch/arm/include/asm/pl011-uart.h
+++ b/xen/arch/arm/include/asm/pl011-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PL011_H
-#define __ASM_ARM_PL011_H
+#ifndef ASM__ARM__PL011_UART_H
+#define ASM__ARM__PL011_UART_H
 
 #ifdef __ASSEMBLY__
 
@@ -95,7 +95,7 @@
 #define RIMI  (1<<0)  /* nUARTRI Modem interrupt mask */
 #define ALLI  OEI|BEI|PEI|FEI|RTI|TXI|RXI|DSRMI|DCDMI|CTSMI|RIMI
 
-#endif /* __ASM_ARM_PL011_H */
+#endif /* ASM__ARM__PL011_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platform.h b/xen/arch/arm/include/asm/platform.h
index 997eb25216..d674858a06 100644
--- a/xen/arch/arm/include/asm/platform.h
+++ b/xen/arch/arm/include/asm/platform.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORM_H
-#define __ASM_ARM_PLATFORM_H
+#ifndef ASM__ARM__PLATFORM_H
+#define ASM__ARM__PLATFORM_H
 
 #include <xen/sched.h>
 #include <xen/mm.h>
@@ -70,7 +70,7 @@ __section(".arch.info") = {                                     \
 #define PLATFORM_END                                            \
 };
 
-#endif /* __ASM_ARM_PLATFORM_H */
+#endif /* ASM__ARM__PLATFORM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platforms/exynos5.h b/xen/arch/arm/include/asm/platforms/exynos5.h
index aef5c67084..90305fedff 100644
--- a/xen/arch/arm/include/asm/platforms/exynos5.h
+++ b/xen/arch/arm/include/asm/platforms/exynos5.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORMS_EXYNOS5_H
-#define __ASM_ARM_PLATFORMS_EXYNOS5_H
+#ifndef ASM__ARM__PLATFORMS__EXYNOS5_H
+#define ASM__ARM__PLATFORMS__EXYNOS5_H
 
 #define EXYNOS5_MCT_G_TCON          0x240       /* Relative to MCT_BASE */
 #define EXYNOS5_MCT_G_TCON_START    (1 << 8)
@@ -9,7 +9,7 @@
 
 #define EXYNOS5_SWRESET             0x0400      /* Relative to PA_PMU */
 
-#endif /* __ASM_ARM_PLATFORMS_EXYNOS5_H */
+#endif /* ASM__ARM__PLATFORMS__EXYNOS5_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/platforms/midway.h b/xen/arch/arm/include/asm/platforms/midway.h
index 099e4350f9..b6396e64b3 100644
--- a/xen/arch/arm/include/asm/platforms/midway.h
+++ b/xen/arch/arm/include/asm/platforms/midway.h
@@ -1,5 +1,5 @@
 #ifndef __ASM_ARM_PLATFORMS_MIDWAY_H
-#define __ASM_ASM_PLATFORMS_MIDWAY_H
+#define ASM__ARM__PLATFORMS__MIDWAY_H
 
 /* addresses of SREG registers for resetting the SoC */
 #define MW_SREG_PWR_REQ             0xfff3cf00
diff --git a/xen/arch/arm/include/asm/platforms/omap5.h b/xen/arch/arm/include/asm/platforms/omap5.h
index c559c84b61..811db96281 100644
--- a/xen/arch/arm/include/asm/platforms/omap5.h
+++ b/xen/arch/arm/include/asm/platforms/omap5.h
@@ -1,4 +1,4 @@
-#ifndef __ASM_ARM_PLATFORMS_OMAP5_H
+#ifndef ASM__ARM__PLATFORMS__OMAP5_H
 #define __ASM_ASM_PLATFORMS_OMAP5_H
 
 #define REALTIME_COUNTER_BASE                   0x48243200
@@ -20,7 +20,7 @@
 #define OMAP_AUX_CORE_BOOT_0_OFFSET             0x800
 #define OMAP_AUX_CORE_BOOT_1_OFFSET             0x804
 
-#endif /* __ASM_ARM_PLATFORMS_OMAP5_H */
+#endif /* ASM__ARM__PLATFORMS__OMAP5_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platforms/vexpress.h b/xen/arch/arm/include/asm/platforms/vexpress.h
index 8b45d3a850..da81c3d1a5 100644
--- a/xen/arch/arm/include/asm/platforms/vexpress.h
+++ b/xen/arch/arm/include/asm/platforms/vexpress.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORMS_VEXPRESS_H
-#define __ASM_ARM_PLATFORMS_VEXPRESS_H
+#ifndef ASM__ARM__PLATFORMS__VEXPRESS_H
+#define ASM__ARM__PLATFORMS__VEXPRESS_H
 
 /* V2M */
 #define V2M_SYS_MMIO_BASE     (0x1c010000)
@@ -26,7 +26,7 @@
 /* Board-specific: base address of system controller */
 #define SP810_ADDRESS 0x1C020000
 
-#endif /* __ASM_ARM_PLATFORMS_VEXPRESS_H */
+#endif /* ASM__ARM__PLATFORMS__VEXPRESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h b/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
index cf25a9014d..005199d019 100644
--- a/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
+++ b/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
@@ -11,8 +11,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PLATFORMS_ZYNQMP_H
-#define __ASM_ARM_PLATFORMS_ZYNQMP_H
+#ifndef ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H
+#define ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H
 
 #include <asm/processor.h>
 #include <asm/smccc.h>
@@ -116,7 +116,7 @@ enum ipi_api_id {
 
 extern bool zynqmp_eemi(struct cpu_user_regs *regs);
 
-#endif /* __ASM_ARM_PLATFORMS_ZYNQMP_H */
+#endif /* ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pmap.h b/xen/arch/arm/include/asm/pmap.h
index bca3381796..a14d89cb46 100644
--- a/xen/arch/arm/include/asm/pmap.h
+++ b/xen/arch/arm/include/asm/pmap.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PMAP_H__
-#define __ASM_PMAP_H__
+#ifndef ASM__ARM__PMAP_H
+#define ASM__ARM__PMAP_H
 
 #include <xen/mm.h>
 
@@ -31,4 +31,4 @@ static inline void arch_pmap_unmap(unsigned int slot)
     flush_xen_tlb_range_va_local(FIXMAP_ADDR(slot), PAGE_SIZE);
 }
 
-#endif /* __ASM_PMAP_H__ */
+#endif /* ASM__ARM__PMAP_H */
diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
index 8e02410465..4d8be173f9 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PROCESSOR_H
-#define __ASM_ARM_PROCESSOR_H
+#ifndef ASM__ARM__PROCESSOR_H
+#define ASM__ARM__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -616,7 +616,7 @@ register_t get_default_cptr_flags(void);
     } while (0)
 
 #endif /* __ASSEMBLY__ */
-#endif /* __ASM_ARM_PROCESSOR_H */
+#endif /* ASM__ARM__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/procinfo.h b/xen/arch/arm/include/asm/procinfo.h
index 3a05f27784..d3b9f7d47c 100644
--- a/xen/arch/arm/include/asm/procinfo.h
+++ b/xen/arch/arm/include/asm/procinfo.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PROCINFO_H
-#define __ASM_ARM_PROCINFO_H
+#ifndef ASM__ARM__PROCINFO_H
+#define ASM__ARM__PROCINFO_H
 
 #include <xen/sched.h>
 
diff --git a/xen/arch/arm/include/asm/psci.h b/xen/arch/arm/include/asm/psci.h
index 4780972621..e4e1abbebc 100644
--- a/xen/arch/arm/include/asm/psci.h
+++ b/xen/arch/arm/include/asm/psci.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PSCI_H__
-#define __ASM_PSCI_H__
+#ifndef ASM__ARM__PSCI_H
+#define ASM__ARM__PSCI_H
 
 #include <asm/smccc.h>
 
@@ -82,7 +82,7 @@ void call_psci_system_reset(void);
 #define PSCI_VERSION(major, minor)          \
     (((major) << PSCI_VERSION_MAJOR_SHIFT) | (minor))
 
-#endif /* __ASM_PSCI_H__ */
+#endif /* ASM__ARM__PSCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/regs.h b/xen/arch/arm/include/asm/regs.h
index 0d9f239a77..47a22ef0a4 100644
--- a/xen/arch/arm/include/asm/regs.h
+++ b/xen/arch/arm/include/asm/regs.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_REGS_H__
-#define __ARM_REGS_H__
+#ifndef ASM__ARM__REGS_H
+#define ASM__ARM__REGS_H
 
 #define PSR_MODE_MASK 0x1f
 
@@ -74,7 +74,7 @@ static inline void uint64_to_regpair(register_t *reg0, register_t *reg1,
 
 #endif
 
-#endif /* __ARM_REGS_H__ */
+#endif /* ASM__ARM__REGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/scif-uart.h b/xen/arch/arm/include/asm/scif-uart.h
index bce3404898..23f4bfe3fc 100644
--- a/xen/arch/arm/include/asm/scif-uart.h
+++ b/xen/arch/arm/include/asm/scif-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_SCIF_UART_H
-#define __ASM_ARM_SCIF_UART_H
+#ifndef ASM__ARM__SCIF_UART_H
+#define ASM__ARM__SCIF_UART_H
 
 /* Register offsets (SCIF) */
 #define SCIF_SCSMR     (0x00)    /* Serial mode register           */
@@ -115,7 +115,7 @@
 #define SCASSR_RDF     (1 << 1)    /* Receive FIFO Data Full */
 #define SCASSR_DR      (1 << 0)    /* Receive Data Ready */
 
-#endif /* __ASM_ARM_SCIF_UART_H */
+#endif /* ASM__ARM__SCIF_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/setup.h
index 64c227d171..95ac787e2f 100644
--- a/xen/arch/arm/include/asm/setup.h
+++ b/xen/arch/arm/include/asm/setup.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_SETUP_H_
-#define __ARM_SETUP_H_
+#ifndef ASM__ARM__SETUP_H
+#define ASM__ARM__SETUP_H
 
 #include <public/version.h>
 #include <asm/p2m.h>
diff --git a/xen/arch/arm/include/asm/short-desc.h b/xen/arch/arm/include/asm/short-desc.h
index 9652a103c4..4d28e54598 100644
--- a/xen/arch/arm/include/asm/short-desc.h
+++ b/xen/arch/arm/include/asm/short-desc.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_SHORT_DESC_H__
-#define __ARM_SHORT_DESC_H__
+#ifndef ASM__ARM__SHORT_DESC_H
+#define ASM__ARM__SHORT_DESC_H
 
 /*
  * First level translation table descriptor types used by the AArch32
@@ -127,4 +127,4 @@ typedef union {
     short_desc_l2_lpage_t lpg;
 } short_desc_t;
 
-#endif /* __ARM_SHORT_DESC_H__ */
+#endif /* ASM__ARM__SHORT_DESC_H */
diff --git a/xen/arch/arm/include/asm/smccc.h b/xen/arch/arm/include/asm/smccc.h
index a289c48b7f..6c7735dece 100644
--- a/xen/arch/arm/include/asm/smccc.h
+++ b/xen/arch/arm/include/asm/smccc.h
@@ -13,8 +13,8 @@
  *
  */
 
-#ifndef __ASM_ARM_SMCCC_H__
-#define __ASM_ARM_SMCCC_H__
+#ifndef ASM__ARM__SMCCC_H
+#define ASM__ARM__SMCCC_H
 
 #include <asm/alternative.h>
 #include <asm/cpufeature.h>
@@ -390,7 +390,7 @@ void arm_smccc_1_2_smc(const struct arm_smccc_1_2_regs *args,
 #define ARM_SMCCC_RESERVED_RANGE_START  0x0
 #define ARM_SMCCC_RESERVED_RANGE_END    0x0100FFFF
 
-#endif  /* __ASM_ARM_SMCCC_H__ */
+#endif  /* ASM__ARM__SMCCC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/smp.h b/xen/arch/arm/include/asm/smp.h
index e99a3a3f53..e6c5601596 100644
--- a/xen/arch/arm/include/asm/smp.h
+++ b/xen/arch/arm/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__ARM__SMP_H
+#define ASM__ARM__SMP_H
 
 #ifndef __ASSEMBLY__
 #include <xen/cpumask.h>
diff --git a/xen/arch/arm/include/asm/spinlock.h b/xen/arch/arm/include/asm/spinlock.h
index 42b0f584fe..b1fd46336f 100644
--- a/xen/arch/arm/include/asm/spinlock.h
+++ b/xen/arch/arm/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__ARM__SPINLOCK_H
+#define ASM__ARM__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
 
 #define arch_lock_signal_wmb()  arch_lock_signal()
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__ARM__SPINLOCK_H */
diff --git a/xen/arch/arm/include/asm/static-evtchn.h b/xen/arch/arm/include/asm/static-evtchn.h
index f964522f6a..5f7916f2ac 100644
--- a/xen/arch/arm/include/asm/static-evtchn.h
+++ b/xen/arch/arm/include/asm/static-evtchn.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_EVTCHN_H_
-#define __ASM_STATIC_EVTCHN_H_
+#ifndef ASM__ARM__STATIC_EVTCHN_H
+#define ASM__ARM__STATIC_EVTCHN_H
 
 #ifdef CONFIG_STATIC_EVTCHN
 
@@ -13,7 +13,7 @@ static inline void alloc_static_evtchn(void) {};
 
 #endif /* CONFIG_STATIC_EVTCHN */
 
-#endif /* __ASM_STATIC_EVTCHN_H_ */
+#endif /* ASM__ARM__STATIC_EVTCHN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/static-memory.h b/xen/arch/arm/include/asm/static-memory.h
index 804166e541..654d47eb77 100644
--- a/xen/arch/arm/include/asm/static-memory.h
+++ b/xen/arch/arm/include/asm/static-memory.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_MEMORY_H_
-#define __ASM_STATIC_MEMORY_H_
+#ifndef ASM__ARM__STATIC_MEMORY_H
+#define ASM__ARM__STATIC_MEMORY_H
 
 #include <xen/pfn.h>
 #include <asm/kernel.h>
@@ -46,7 +46,7 @@ static inline void init_staticmem_pages(void) {};
 
 #endif /* CONFIG_STATIC_MEMORY */
 
-#endif /* __ASM_STATIC_MEMORY_H_ */
+#endif /* ASM__ARM__STATIC_MEMORY_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/static-shmem.h b/xen/arch/arm/include/asm/static-shmem.h
index fd0867c4f2..5e9b69d66f 100644
--- a/xen/arch/arm/include/asm/static-shmem.h
+++ b/xen/arch/arm/include/asm/static-shmem.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_SHMEM_H_
-#define __ASM_STATIC_SHMEM_H_
+#ifndef ASM__ARM__STATIC_SHMEM_H
+#define ASM__ARM__STATIC_SHMEM_H
 
 #include <xen/types.h>
 #include <asm/kernel.h>
@@ -106,7 +106,7 @@ static inline void shm_mem_node_fill_reg_range(const struct kernel_info *kinfo,
 
 #endif /* CONFIG_STATIC_SHM */
 
-#endif /* __ASM_STATIC_SHMEM_H_ */
+#endif /* ASM__ARM__STATIC_SHMEM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/string.h b/xen/arch/arm/include/asm/string.h
index b485e49044..8cbcfca3f8 100644
--- a/xen/arch/arm/include/asm/string.h
+++ b/xen/arch/arm/include/asm/string.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_STRING_H__
-#define __ARM_STRING_H__
+#ifndef ASM__ARM__STRING_H
+#define ASM__ARM__STRING_H
 
 
 /*
@@ -42,7 +42,7 @@ void __memzero(void *ptr, size_t n);
 
 #endif
 
-#endif /* __ARM_STRING_H__ */
+#endif /* ASM__ARM__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/sysregs.h b/xen/arch/arm/include/asm/sysregs.h
index 61e30c9e51..98523e96d3 100644
--- a/xen/arch/arm/include/asm/sysregs.h
+++ b/xen/arch/arm/include/asm/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_SYSREGS_H
-#define __ASM_ARM_SYSREGS_H
+#ifndef ASM__ARM__SYSREGS_H
+#define ASM__ARM__SYSREGS_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/sysregs.h>
@@ -33,7 +33,7 @@ static inline register_t read_sysreg_par(void)
 
 #endif /*  !__ASSEMBLY__  */
 
-#endif /* __ASM_ARM_SYSREGS_H */
+#endif /* ASM__ARM__SYSREGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/system.h b/xen/arch/arm/include/asm/system.h
index 65d5c8e423..e69340c71b 100644
--- a/xen/arch/arm/include/asm/system.h
+++ b/xen/arch/arm/include/asm/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_SYSTEM_H
-#define __ASM_SYSTEM_H
+#ifndef ASM__ARM__SYSTEM_H
+#define ASM__ARM__SYSTEM_H
 
 #include <xen/lib.h>
 #include <public/arch-arm.h>
diff --git a/xen/arch/arm/include/asm/tee/ffa.h b/xen/arch/arm/include/asm/tee/ffa.h
index 24cd4d99c8..ef7b21840a 100644
--- a/xen/arch/arm/include/asm/tee/ffa.h
+++ b/xen/arch/arm/include/asm/tee/ffa.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2023  Linaro Limited
  */
 
-#ifndef __ASM_ARM_TEE_FFA_H__
-#define __ASM_ARM_TEE_FFA_H__
+#ifndef ASM__ARM__TEE__FFA_H
+#define ASM__ARM__TEE__FFA_H
 
 #include <xen/const.h>
 
@@ -31,4 +31,4 @@ static inline bool is_ffa_fid(uint32_t fid)
 #define FFA_NR_FUNCS    0
 #endif
 
-#endif /*__ASM_ARM_TEE_FFA_H__*/
+#endif /*ASM__ARM__TEE__FFA_H*/
diff --git a/xen/arch/arm/include/asm/tee/optee_msg.h b/xen/arch/arm/include/asm/tee/optee_msg.h
index fe743dbde3..ec2d267981 100644
--- a/xen/arch/arm/include/asm/tee/optee_msg.h
+++ b/xen/arch/arm/include/asm/tee/optee_msg.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2015-2017, Linaro Limited
  */
-#ifndef _OPTEE_MSG_H
-#define _OPTEE_MSG_H
+#ifndef ASM__ARM__TEE__OPTEE_MSG_H
+#define ASM__ARM__TEE__OPTEE_MSG_H
 
 #include <xen/bitops.h>
 #include <xen/types.h>
@@ -307,4 +307,4 @@ struct optee_msg_arg {
 #define OPTEE_MSG_CMD_UNREGISTER_SHM	5
 #define OPTEE_MSG_FUNCID_CALL_WITH_ARG	0x0004
 
-#endif /* _OPTEE_MSG_H */
+#endif /* ASM__ARM__TEE__OPTEE_MSG_H */
diff --git a/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h b/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
index d6b9dfe30c..891d23be6a 100644
--- a/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
+++ b/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2016-2017, Linaro Limited
  */
 
-#ifndef __OPTEE_RPC_CMD_H
-#define __OPTEE_RPC_CMD_H
+#ifndef ASM__ARM__TEE__OPTEE_RPC_CMD_H
+#define ASM__ARM__TEE__OPTEE_RPC_CMD_H
 
 /*
  * All RPC is done with a struct optee_msg_arg as bearer of information,
@@ -315,4 +315,4 @@
 
 /* End of definition of protocol for command OPTEE_RPC_CMD_SOCKET */
 
-#endif /*__OPTEE_RPC_CMD_H*/
+#endif /*ASM__ARM__TEE__OPTEE_RPC_CMD_H*/
diff --git a/xen/arch/arm/include/asm/tee/optee_smc.h b/xen/arch/arm/include/asm/tee/optee_smc.h
index 2f5c702326..6e0bde66d6 100644
--- a/xen/arch/arm/include/asm/tee/optee_smc.h
+++ b/xen/arch/arm/include/asm/tee/optee_smc.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2015, Linaro Limited
  */
-#ifndef OPTEE_SMC_H
-#define OPTEE_SMC_H
+#ifndef ASM__ARM__TEE__OPTEE_SMC_H
+#define ASM__ARM__TEE__OPTEE_SMC_H
 
 /*
  * This file is exported by OP-TEE and is in kept in sync between secure
@@ -564,4 +564,4 @@
 	((((ret) & OPTEE_SMC_RETURN_RPC_PREFIX_MASK) == \
 		OPTEE_SMC_RETURN_RPC_PREFIX)))
 
-#endif /* OPTEE_SMC_H */
+#endif /* ASM__ARM__TEE__OPTEE_SMC_H */
diff --git a/xen/arch/arm/include/asm/tee/tee.h b/xen/arch/arm/include/asm/tee/tee.h
index 0169fd746b..58659290d6 100644
--- a/xen/arch/arm/include/asm/tee/tee.h
+++ b/xen/arch/arm/include/asm/tee/tee.h
@@ -11,8 +11,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __ARCH_ARM_TEE_TEE_H__
-#define __ARCH_ARM_TEE_TEE_H__
+#ifndef ASM__ARM__TEE__TEE_H
+#define ASM__ARM__TEE__TEE_H
 
 #include <xen/lib.h>
 #include <xen/types.h>
@@ -121,7 +121,7 @@ static inline void tee_free_domain_ctx(struct domain *d)
 
 #endif  /* CONFIG_TEE */
 
-#endif /* __ARCH_ARM_TEE_TEE_H__ */
+#endif /* ASM__ARM__TEE__TEE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/time.h b/xen/arch/arm/include/asm/time.h
index 49ad8c1a6d..d4301ea852 100644
--- a/xen/arch/arm/include/asm/time.h
+++ b/xen/arch/arm/include/asm/time.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_TIME_H__
-#define __ARM_TIME_H__
+#ifndef ASM__ARM__TIME_H
+#define ASM__ARM__TIME_H
 
 #include <asm/sysregs.h>
 #include <asm/system.h>
@@ -108,7 +108,7 @@ void preinit_xen_time(void);
 
 void force_update_vcpu_system_time(struct vcpu *v);
 
-#endif /* __ARM_TIME_H__ */
+#endif /* ASM__ARM__TIME_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/traps.h b/xen/arch/arm/include/asm/traps.h
index 9a60dbf70e..2a935a9afb 100644
--- a/xen/arch/arm/include/asm/traps.h
+++ b/xen/arch/arm/include/asm/traps.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_TRAPS__
-#define __ASM_ARM_TRAPS__
+#ifndef ASM__ARM__TRAPS_H
+#define ASM__ARM__TRAPS_H
 
 #include <asm/hsr.h>
 #include <asm/processor.h>
@@ -118,7 +118,7 @@ static inline register_t sign_extend(const struct hsr_dabt dabt, register_t r)
 
 void finalize_instr_emulation(const struct instr_details *instr);
 
-#endif /* __ASM_ARM_TRAPS__ */
+#endif /* ASM__ARM__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/types.h b/xen/arch/arm/include/asm/types.h
index b0a34ea730..28e55890dc 100644
--- a/xen/arch/arm/include/asm/types.h
+++ b/xen/arch/arm/include/asm/types.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_TYPES_H__
-#define __ARM_TYPES_H__
+#ifndef ASM__ARM__TYPES_H
+#define ASM__ARM__TYPES_H
 
 #if defined(CONFIG_ARM_32)
 
@@ -37,7 +37,7 @@ typedef u64 register_t;
 
 #endif
 
-#endif /* __ARM_TYPES_H__ */
+#endif /* ASM__ARM__TYPES_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/vfp.h b/xen/arch/arm/include/asm/vfp.h
index 142a91ef8b..b7cc2ba906 100644
--- a/xen/arch/arm/include/asm/vfp.h
+++ b/xen/arch/arm/include/asm/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_VFP_H
-#define _ASM_VFP_H
+#ifndef ASM__ARM__VFP_H
+#define ASM__ARM__VFP_H
 
 struct vcpu;
 
@@ -14,7 +14,7 @@ struct vcpu;
 void vfp_save_state(struct vcpu *v);
 void vfp_restore_state(struct vcpu *v);
 
-#endif /* _ASM_VFP_H */
+#endif /* ASM__ARM__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/vgic-emul.h b/xen/arch/arm/include/asm/vgic-emul.h
index fd0cfa2175..cf3670a6cd 100644
--- a/xen/arch/arm/include/asm/vgic-emul.h
+++ b/xen/arch/arm/include/asm/vgic-emul.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_VGIC_EMUL_H__
-#define __ASM_ARM_VGIC_EMUL_H__
+#ifndef ASM__ARM__VGIC_EMUL_H
+#define ASM__ARM__VGIC_EMUL_H
 
 /*
  * Helpers to create easily a case to match emulate a single register or
@@ -21,7 +21,7 @@ static inline bool vgic_reg64_check_access(struct hsr_dabt dabt)
     return ( dabt.size == DABT_DOUBLE_WORD || dabt.size == DABT_WORD );
 }
 
-#endif /* __ASM_ARM_VGIC_EMUL_H__ */
+#endif /* ASM__ARM__VGIC_EMUL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
index e309dca1ad..bb1e45554a 100644
--- a/xen/arch/arm/include/asm/vgic.h
+++ b/xen/arch/arm/include/asm/vgic.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_VGIC_H__
-#define __ASM_ARM_VGIC_H__
+#ifndef ASM__ARM__VGIC_H
+#define ASM__ARM__VGIC_H
 
 #ifdef CONFIG_NEW_VGIC
 #include <asm/new_vgic.h>
@@ -388,7 +388,7 @@ void vgic_sync_from_lrs(struct vcpu *v);
 
 int vgic_vcpu_pending_irq(struct vcpu *v);
 
-#endif /* __ASM_ARM_VGIC_H__ */
+#endif /* ASM__ARM__VGIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vpl011.h b/xen/arch/arm/include/asm/vpl011.h
index c09abcd7a9..bbfa5661d9 100644
--- a/xen/arch/arm/include/asm/vpl011.h
+++ b/xen/arch/arm/include/asm/vpl011.h
@@ -16,8 +16,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _VPL011_H_
-#define _VPL011_H_
+#ifndef ASM__ARM__VPL011_H
+#define ASM__ARM__VPL011_H
 
 #include <public/domctl.h>
 #include <public/io/ring.h>
@@ -79,7 +79,7 @@ static inline int domain_vpl011_init(struct domain *d,
 
 static inline void domain_vpl011_deinit(struct domain *d) { }
 #endif
-#endif  /* _VPL011_H_ */
+#endif  /* ASM__ARM__VPL011_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vpsci.h b/xen/arch/arm/include/asm/vpsci.h
index 0cca5e6830..fc158d827e 100644
--- a/xen/arch/arm/include/asm/vpsci.h
+++ b/xen/arch/arm/include/asm/vpsci.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_VPSCI_H__
-#define __ASM_VPSCI_H__
+#ifndef ASM__ARM__VPSCI_H
+#define ASM__ARM__VPSCI_H
 
 #include <asm/psci.h>
 
@@ -29,7 +29,7 @@
 bool do_vpsci_0_1_call(struct cpu_user_regs *regs, uint32_t fid);
 bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uint32_t fid);
 
-#endif /* __ASM_VPSCI_H__ */
+#endif /* ASM__ARM__VPSCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vreg.h b/xen/arch/arm/include/asm/vreg.h
index 387ce76e7e..97b9d71066 100644
--- a/xen/arch/arm/include/asm/vreg.h
+++ b/xen/arch/arm/include/asm/vreg.h
@@ -1,8 +1,8 @@
 /*
  * Helpers to emulate co-processor and system registers
  */
-#ifndef __ASM_ARM_VREG__
-#define __ASM_ARM_VREG__
+#ifndef ASM__ARM__VREG_H
+#define ASM__ARM__VREG_H
 
 typedef bool (*vreg_reg64_fn_t)(struct cpu_user_regs *regs, uint64_t *r,
                                    bool read);
@@ -145,4 +145,4 @@ VREG_REG_HELPERS(32, 0x3)
 
 #undef VREG_REG_HELPERS
 
-#endif /* __ASM_ARM_VREG__ */
+#endif /* ASM__ARM__VREG_H */
diff --git a/xen/arch/arm/include/asm/vtimer.h b/xen/arch/arm/include/asm/vtimer.h
index 9d4fb4c6e8..a2c54d000b 100644
--- a/xen/arch/arm/include/asm/vtimer.h
+++ b/xen/arch/arm/include/asm/vtimer.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VTIMER_H__
-#define __ARCH_ARM_VTIMER_H__
+#ifndef ASM__ARM__VTIMER_H
+#define ASM__ARM__VTIMER_H
 
 extern int domain_vtimer_init(struct domain *d,
                               struct xen_arch_domainconfig *config);
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 7c6b06f686..b32f4a21a2 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2023  Linaro Limited
  */
 
-#ifndef __FFA_PRIVATE_H__
-#define __FFA_PRIVATE_H__
+#ifndef ARM__TEE__FFA_PRIVATE_H
+#define ARM__TEE__FFA_PRIVATE_H
 
 #include <xen/const.h>
 #include <xen/sizes.h>
@@ -398,4 +398,4 @@ static inline int32_t ffa_rx_release(void)
     return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
 }
 
-#endif /*__FFA_PRIVATE_H__*/
+#endif /*ARM__TEE__FFA_PRIVATE_H*/
diff --git a/xen/arch/arm/vgic/vgic-mmio.h b/xen/arch/arm/vgic/vgic-mmio.h
index 3566cf237c..1bbcb778e9 100644
--- a/xen/arch/arm/vgic/vgic-mmio.h
+++ b/xen/arch/arm/vgic/vgic-mmio.h
@@ -13,8 +13,8 @@
  * 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_ARM_VGIC_VGIC_MMIO_H__
-#define __XEN_ARM_VGIC_VGIC_MMIO_H__
+#ifndef ARM__VGIC__VGIC_MMIO_H
+#define ARM__VGIC__VGIC_MMIO_H
 
 struct vgic_register_region {
     unsigned int reg_offset;
diff --git a/xen/arch/arm/vgic/vgic.h b/xen/arch/arm/vgic/vgic.h
index 534b24bcd3..3cb5e37077 100644
--- a/xen/arch/arm/vgic/vgic.h
+++ b/xen/arch/arm/vgic/vgic.h
@@ -14,8 +14,8 @@
  * 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_ARM_VGIC_VGIC_H__
-#define __XEN_ARM_VGIC_VGIC_H__
+#ifndef ARM__VGIC__VGIC_H
+#define ARM__VGIC__VGIC_H
 
 /*
  * We piggy-back on the already used KVM product ID,  but use a different
diff --git a/xen/arch/arm/vpci.h b/xen/arch/arm/vpci.h
index 3c713f3fcd..8d01a7c006 100644
--- a/xen/arch/arm/vpci.h
+++ b/xen/arch/arm/vpci.h
@@ -12,8 +12,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VPCI_H__
-#define __ARCH_ARM_VPCI_H__
+#ifndef ARM__VPCI_H
+#define ARM__VPCI_H
 
 #ifdef CONFIG_HAS_VPCI
 int domain_vpci_init(struct domain *d);
@@ -30,7 +30,7 @@ static inline unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
 }
 #endif
 
-#endif /* __ARCH_ARM_VPCI_H__ */
+#endif /* ARM__VPCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/vuart.h b/xen/arch/arm/vuart.h
index e90d84c6ed..697cb0225d 100644
--- a/xen/arch/arm/vuart.h
+++ b/xen/arch/arm/vuart.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VUART_H__
-#define __ARCH_ARM_VUART_H__
+#ifndef ARM__VUART_H
+#define ARM__VUART_H
 
 struct domain;
 
@@ -42,7 +42,7 @@ static inline void domain_vuart_free(struct domain *d) {};
 
 #endif /* CONFIG_HWDOM_VUART */
 
-#endif /* __ARCH_ARM_VUART_H__ */
+#endif /* ARM__VUART_H */
 
 /*
  * Local variables:
diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
index f09048812c..d104588aea 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.h
+++ b/xen/drivers/passthrough/arm/smmu-v3.h
@@ -5,8 +5,8 @@
  * Copyright (C) 2022 ARM Limited
  */
 
-#ifndef _ARM_SMMU_V3_H
-#define _ARM_SMMU_V3_H
+#ifndef DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H
+#define DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H
 
 /* MMIO registers */
 #define ARM_SMMU_IDR0			0x0
@@ -668,4 +668,4 @@ struct arm_smmu_domain {
 	spinlock_t			devices_lock;
 };
 
-#endif /* _ARM_SMMU_V3_H */
+#endif /* DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H */
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index e2412a1747..65dac78ce1 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -7,8 +7,8 @@
  * Copyright 2011 (C) Citrix Systems
  */
 
-#ifndef __XEN_PUBLIC_ARCH_ARM_H__
-#define __XEN_PUBLIC_ARCH_ARM_H__
+#ifndef PUBLIC__ARCH_ARM_H
+#define PUBLIC__ARCH_ARM_H
 
 /*
  * `incontents 50 arm_abi Hypercall Calling Convention
@@ -542,7 +542,7 @@ typedef uint64_t xen_callback_t;
 typedef struct xen_pmu_arch { uint8_t dummy; } xen_pmu_arch_t;
 #endif
 
-#endif /*  __XEN_PUBLIC_ARCH_ARM_H__ */
+#endif /*  PUBLIC__ARCH_ARM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-arm/hvm/save.h b/xen/include/public/arch-arm/hvm/save.h
index fc1b28f59b..77ebe54aee 100644
--- a/xen/include/public/arch-arm/hvm/save.h
+++ b/xen/include/public/arch-arm/hvm/save.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2012 Citrix Systems Ltd.
  */
 
-#ifndef __XEN_PUBLIC_HVM_SAVE_ARM_H__
-#define __XEN_PUBLIC_HVM_SAVE_ARM_H__
+#ifndef PUBLIC__ARCH_ARM__HVM__SAVE_H
+#define PUBLIC__ARCH_ARM__HVM__SAVE_H
 
 #endif
 
diff --git a/xen/include/public/arch-arm/smccc.h b/xen/include/public/arch-arm/smccc.h
index 8a9321ebed..774f8c6987 100644
--- a/xen/include/public/arch-arm/smccc.h
+++ b/xen/include/public/arch-arm/smccc.h
@@ -7,8 +7,8 @@
  * Copyright 2017 (C) EPAM Systems
  */
 
-#ifndef __XEN_PUBLIC_ARCH_ARM_SMCCC_H__
-#define __XEN_PUBLIC_ARCH_ARM_SMCCC_H__
+#ifndef PUBLIC__ARCH_ARM__SMCCC_H
+#define PUBLIC__ARCH_ARM__SMCCC_H
 
 #include "public/xen.h"
 
@@ -37,7 +37,7 @@
 #define SSSC_SMCCC_UID XEN_DEFINE_UUID(0xf863386fU, 0x4b39, 0x4cbd, 0x9220,\
                                        0xce, 0x16, 0x41, 0xe5, 0x9f, 0x6f)
 
-#endif /* __XEN_PUBLIC_ARCH_ARM_SMCCC_H__ */
+#endif /* PUBLIC__ARCH_ARM__SMCCC_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809334.1221658 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnu-0006FI-OP; Thu, 03 Oct 2024 12:19:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809334.1221658; Thu, 03 Oct 2024 12: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 1swKnu-0006CF-CS; Thu, 03 Oct 2024 12:19:34 +0000
Received: by outflank-mailman (input) for mailman id 809334;
 Thu, 03 Oct 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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnr-00043u-V8
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:31 +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 bd96ea3c-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:30 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a8d2b24b7a8so377482966b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:30 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bd96ea3c-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957969; x=1728562769; 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=Wa3ZmXvbNT3cVq7/5R5qVXzdHrXKzTt2KbYl/Ig19/Y=;
        b=ibAOnk3TpoUQ22ju/SOFrF5JWNZVI9gKVcT38vF61Oz1eQ+th6GI7SbWDRGq01RFBP
         mTc4fCb3wuAYQ89XYQ4kei3u4OrxOnUT65oc25vhf+tfBvAMeYU192vnteLMNVnEgAxD
         Uy5KxtJ2RgcoeI2YUiBysrmpCMdrmOheDRxHw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957969; x=1728562769;
        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=Wa3ZmXvbNT3cVq7/5R5qVXzdHrXKzTt2KbYl/Ig19/Y=;
        b=OVPDUndjT1RrjfT+RFE1eo+dlPXAj6TaP87ZvWI1Lwl+MSifSeyYiLhkhcMsDW5WBM
         TCxlZ4qb0qA47Iq+jHJIXPvBZd6G4E2R9dt3Ik+PwB3dMNESU+GxOJcj9idcTOs9tlfN
         4MIUPPm5s8F7/mAX+hss6wMflhpUdClIdgH2TR+9d21unjEE+6YVHS3Kx7rUtLx3mTMj
         e6iMDe606IAXF5T6WSPwgjHtsar7cLvQM282VlmELs6AS5yfdO6bozCf3ieGNJRGAdxw
         JYWQ4Ko+E4wNAy7iniJN7i+HkKVw5+tmaFpFlb9vCj+WseaKw/TPFsW4X0We7piQUB76
         20Nw==
X-Gm-Message-State: AOJu0YyXtchgTcDu9A0PVOr4kD8rf6qpXp0YLHbg88Otelq2/8Uc19AM
	xNNkzM+iMGflPmnYxEBUQUbohZaxPQjtYaSBhZjPNdl5CJh+oeYAPoBDY+WNDVGXNninm2lujhS
	D
X-Google-Smtp-Source: AGHT+IHxd6K9/gY1cAXf5un8Kem0LoM1nlGfsPw9ixtyRrXSFf5pndqtU9j/TPY+Xo84FK4PMDOojw==
X-Received: by 2002:a17:906:fe04:b0:a98:282:e676 with SMTP id a640c23a62f3a-a990a04b8abmr325134766b.10.1727957969471;
        Thu, 03 Oct 2024 05:19:29 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH 10/20] xen: Update header guards - I/O MMU
Date: Thu,  3 Oct 2024 13:18:58 +0100
Message-Id: <20241003121908.362888-11-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to I/O MMU.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/drivers/passthrough/amd/iommu-defs.h | 6 +++---
 xen/drivers/passthrough/amd/iommu.h      | 6 +++---
 xen/drivers/passthrough/ats.h            | 6 +++---
 xen/drivers/passthrough/vtd/dmar.h       | 6 +++---
 xen/drivers/passthrough/vtd/extern.h     | 6 +++---
 xen/drivers/passthrough/vtd/iommu.h      | 4 ++--
 xen/drivers/passthrough/vtd/vtd.h        | 6 +++---
 xen/include/xen/iommu.h                  | 6 +++---
 8 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu-defs.h b/xen/drivers/passthrough/amd/iommu-defs.h
index c145248f9a..30b094f187 100644
--- a/xen/drivers/passthrough/amd/iommu-defs.h
+++ b/xen/drivers/passthrough/amd/iommu-defs.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef AMD_IOMMU_DEFS_H
-#define AMD_IOMMU_DEFS_H
+#ifndef DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H
+#define DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H
 
 /* IOMMU Event Log entries: in power of 2 increments, minimum of 256 */
 #define IOMMU_EVENT_LOG_DEFAULT_ENTRIES     512
@@ -486,7 +486,7 @@ union amd_iommu_pte {
 #define IOMMU_REG_BASE_ADDR_HIGH_MASK               0x000FFFFFU
 #define IOMMU_REG_BASE_ADDR_HIGH_SHIFT              0
 
-#endif /* AMD_IOMMU_DEFS_H */
+#endif /* DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H */
 
 /*
  * Local variables:
diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/amd/iommu.h
index 8d6f63d87f..c32e9e9a16 100644
--- a/xen/drivers/passthrough/amd/iommu.h
+++ b/xen/drivers/passthrough/amd/iommu.h
@@ -16,8 +16,8 @@
  * 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 AMD_IOMMU_H
-#define AMD_IOMMU_H
+#ifndef DRIVERS__PASSTHROUGH__AMD__IOMMU_H
+#define DRIVERS__PASSTHROUGH__AMD__IOMMU_H
 
 #include <xen/init.h>
 #include <xen/types.h>
@@ -372,4 +372,4 @@ static inline void iommu_set_addr_hi_to_reg(uint32_t *reg, uint32_t addr)
                          IOMMU_REG_BASE_ADDR_HIGH_SHIFT, reg);
 }
 
-#endif /* AMD_IOMMU_H */
+#endif /* DRIVERS__PASSTHROUGH__AMD__IOMMU_H */
diff --git a/xen/drivers/passthrough/ats.h b/xen/drivers/passthrough/ats.h
index f5e1d254e0..68b1c600eb 100644
--- a/xen/drivers/passthrough/ats.h
+++ b/xen/drivers/passthrough/ats.h
@@ -12,8 +12,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _ATS_H_
-#define _ATS_H_
+#ifndef DRIVERS__PASSTHROUGH__ATS_H
+#define DRIVERS__PASSTHROUGH__ATS_H
 
 #include <xen/pci_regs.h>
 
@@ -50,5 +50,5 @@ static inline int pci_ats_device(int seg, int bus, int devfn)
                                    PCI_EXT_CAP_ID_ATS);
 }
 
-#endif /* _ATS_H_ */
+#endif /* DRIVERS__PASSTHROUGH__ATS_H */
 
diff --git a/xen/drivers/passthrough/vtd/dmar.h b/xen/drivers/passthrough/vtd/dmar.h
index 61f71ca5e6..0ff4f36535 100644
--- a/xen/drivers/passthrough/vtd/dmar.h
+++ b/xen/drivers/passthrough/vtd/dmar.h
@@ -17,8 +17,8 @@
  * Copyright (C) Shaohua Li <shaohua.li@intel.com>
  */
 
-#ifndef _DMAR_H_
-#define _DMAR_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__DMAR_H
+#define DRIVERS__PASSTHROUGH__VTD__DMAR_H
 
 #include <xen/list.h>
 #include <xen/iommu.h>
@@ -171,4 +171,4 @@ int vtd_hw_check(void);
 void disable_pmr(struct vtd_iommu *iommu);
 int is_igd_drhd(struct acpi_drhd_unit *drhd);
 
-#endif /* _DMAR_H_ */
+#endif /* DRIVERS__PASSTHROUGH__VTD__DMAR_H */
diff --git a/xen/drivers/passthrough/vtd/extern.h b/xen/drivers/passthrough/vtd/extern.h
index 667590ee52..c16583c951 100644
--- a/xen/drivers/passthrough/vtd/extern.h
+++ b/xen/drivers/passthrough/vtd/extern.h
@@ -17,8 +17,8 @@
  * Copyright (C) Weidong Han <weidong.han@intel.com>
  */
 
-#ifndef _VTD_EXTERN_H_
-#define _VTD_EXTERN_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__EXTERN_H
+#define DRIVERS__PASSTHROUGH__VTD__EXTERN_H
 
 #include "dmar.h"
 #include <xen/keyhandler.h>
@@ -114,4 +114,4 @@ void quirk_iommu_caps(struct vtd_iommu *iommu);
 bool platform_supports_intremap(void);
 bool platform_supports_x2apic(void);
 
-#endif // _VTD_EXTERN_H_
+#endif // DRIVERS__PASSTHROUGH__VTD__EXTERN_H
diff --git a/xen/drivers/passthrough/vtd/iommu.h b/xen/drivers/passthrough/vtd/iommu.h
index 78aa8a96f5..29d350b23d 100644
--- a/xen/drivers/passthrough/vtd/iommu.h
+++ b/xen/drivers/passthrough/vtd/iommu.h
@@ -16,8 +16,8 @@
  * Copyright (C) Ashok Raj <ashok.raj@intel.com>
  */
 
-#ifndef _INTEL_IOMMU_H_
-#define _INTEL_IOMMU_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__IOMMU_H
+#define DRIVERS__PASSTHROUGH__VTD__IOMMU_H
 
 #include <xen/iommu.h>
 #include <asm/msi.h>
diff --git a/xen/drivers/passthrough/vtd/vtd.h b/xen/drivers/passthrough/vtd/vtd.h
index cb2df76eed..8aeff8c1f2 100644
--- a/xen/drivers/passthrough/vtd/vtd.h
+++ b/xen/drivers/passthrough/vtd/vtd.h
@@ -17,8 +17,8 @@
  * Copyright (C) Weidong Han <weidong.han@intel.com>
  */
 
-#ifndef _VTD_H_
-#define _VTD_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__VTD_H
+#define DRIVERS__PASSTHROUGH__VTD__VTD_H
 
 #include <xen/iommu.h>
 
@@ -72,4 +72,4 @@ struct msi_msg_remap_entry {
     u32	data;		/* msi message data */
 };
 
-#endif // _VTD_H_
+#endif // DRIVERS__PASSTHROUGH__VTD__VTD_H
diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h
index 442ae5322d..b928c67e19 100644
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -16,8 +16,8 @@
  * Copyright (C) Allen Kay <allen.m.kay@intel.com>
  */
 
-#ifndef _IOMMU_H_
-#define _IOMMU_H_
+#ifndef XEN__IOMMU_H
+#define XEN__IOMMU_H
 
 #include <xen/mm-frame.h>
 #include <xen/init.h>
@@ -440,7 +440,7 @@ static inline int iommu_update_ire_from_msi(
 }
 #endif
 
-#endif /* _IOMMU_H_ */
+#endif /* XEN__IOMMU_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809335.1221664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnv-0006Qw-Hj; Thu, 03 Oct 2024 12:19:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809335.1221664; Thu, 03 Oct 2024 12: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 1swKnv-0006OG-44; Thu, 03 Oct 2024 12:19:35 +0000
Received: by outflank-mailman (input) for mailman id 809335;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKns-00043u-UA
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:32 +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 bdeb1455-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:31 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c88e6926e5so877411a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:31 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bdeb1455-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957970; x=1728562770; 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=ihqfJnptAe3gMr73Ctv/JCvxYIXJfjbjM0EEMcUbg4M=;
        b=VQEbhrBTcV8w0YaPbt484aYqqA1MMED1zmAN/d2ZjB6rW2hAoxxArprmWtOgk0/yTY
         NWVhHgjwE5IXphYpz+oyd2jpzPpV3x9akETtZivRZMuR6o7/lESfeL5ELrr1tAohYUK5
         deXhleW8iRy9cOq7TyqlpFT1DITtEWCcqfcL0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957970; x=1728562770;
        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=ihqfJnptAe3gMr73Ctv/JCvxYIXJfjbjM0EEMcUbg4M=;
        b=cJcQO6zquuJuNuHaAJFJP3n8aH0Bl33QljFYXH2Yi7qbyg7n8iI1fLzhr1kPVUz2Zj
         Yh81RN4FDgvO+9PtLgvPSWlg904WMuYBpbf9C50BGcASOJclB8aKosjs+wuLJuR5Htrh
         gVSlWQKhZLr6M2us82bV7/cr9Av8Dl889grKRvkRKr80flAW4moLWoJkpDorR7eaPL4Z
         OodTBwCit14lCK0sF530JVLq3F4Hx6wpqsnov8XWMTj5FbU7nBqI27gjHBA/Cgje8coc
         dgRj8bxPqT3UcT7wXa1Re3ihCFAqzFCfe3RgquHzZn5e8quKaTidUiVTrSDvUCkSLEyy
         dLIg==
X-Gm-Message-State: AOJu0Yx0+fuIxUKhrr89aagmEMq0G8eq/wkaNszQlm3H5FaIm9xLTFha
	TGdn5n+/dNosC9NbD1wLzuaZwcYrzNZ/6nEss9Ui8ueKRS7MiWAonuDZqRFkLDNMFuuA8Cpr0U5
	C
X-Google-Smtp-Source: AGHT+IFynxD+YoOmKiSyIqAi6RrEgODcI9FRDEPEp9qOPw/jfy5l5HI7pWz+ExIxYdW2M3eXB/qM8Q==
X-Received: by 2002:a17:907:97d1:b0:a86:b85d:9470 with SMTP id a640c23a62f3a-a98f8387cc3mr691931866b.59.1727957970193;
        Thu, 03 Oct 2024 05:19:30 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH 11/20] xen: Update header guards - Kconfig
Date: Thu,  3 Oct 2024 13:18:59 +0100
Message-Id: <20241003121908.362888-12-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to Kconfig.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/tools/kconfig/expr.h   | 6 +++---
 xen/tools/kconfig/images.h | 6 +++---
 xen/tools/kconfig/list.h   | 4 ++--
 xen/tools/kconfig/lkc.h    | 6 +++---
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/xen/tools/kconfig/expr.h b/xen/tools/kconfig/expr.h
index 017843c9a4..044e88deac 100644
--- a/xen/tools/kconfig/expr.h
+++ b/xen/tools/kconfig/expr.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef EXPR_H
-#define EXPR_H
+#ifndef TOOLS__KCONFIG__EXPR_H
+#define TOOLS__KCONFIG__EXPR_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -329,4 +329,4 @@ static inline int expr_is_no(struct expr *e)
 }
 #endif
 
-#endif /* EXPR_H */
+#endif /* TOOLS__KCONFIG__EXPR_H */
diff --git a/xen/tools/kconfig/images.h b/xen/tools/kconfig/images.h
index d8ff614bd0..4093e881db 100644
--- a/xen/tools/kconfig/images.h
+++ b/xen/tools/kconfig/images.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef IMAGES_H
-#define IMAGES_H
+#ifndef TOOLS__KCONFIG__IMAGES_H
+#define TOOLS__KCONFIG__IMAGES_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -30,4 +30,4 @@ extern const char *xpm_void[];
 }
 #endif
 
-#endif /* IMAGES_H */
+#endif /* TOOLS__KCONFIG__IMAGES_H */
diff --git a/xen/tools/kconfig/list.h b/xen/tools/kconfig/list.h
index 45cb237ab7..5d30f91282 100644
--- a/xen/tools/kconfig/list.h
+++ b/xen/tools/kconfig/list.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef LIST_H
-#define LIST_H
+#ifndef TOOLS__KCONFIG__LIST_H
+#define TOOLS__KCONFIG__LIST_H
 
 /*
  * Copied from include/linux/...
diff --git a/xen/tools/kconfig/lkc.h b/xen/tools/kconfig/lkc.h
index 4fb16f3166..aee4a94696 100644
--- a/xen/tools/kconfig/lkc.h
+++ b/xen/tools/kconfig/lkc.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef LKC_H
-#define LKC_H
+#ifndef TOOLS__KCONFIG__LKC_H
+#define TOOLS__KCONFIG__LKC_H
 
 #include "expr.h"
 
@@ -155,4 +155,4 @@ static inline bool sym_has_value(struct symbol *sym)
 }
 #endif
 
-#endif /* LKC_H */
+#endif /* TOOLS__KCONFIG__LKC_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809336.1221678 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnx-0006yG-KW; Thu, 03 Oct 2024 12:19:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809336.1221678; Thu, 03 Oct 2024 12:19: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 1swKnw-0006tM-VA; Thu, 03 Oct 2024 12:19:36 +0000
Received: by outflank-mailman (input) for mailman id 809336;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnt-00043u-Ua
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:33 +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 be7752cf-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:31 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8d4979b843so117374166b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:31 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: be7752cf-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957971; x=1728562771; 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=JzvJYHGLE9z5OUSnbhsIqX8inHPsJLzDP+/krirdPTI=;
        b=TgGNZXGM88dk2nvaXgt8GGXDyC69YB6/LmwzK8wTvBVafMV7QAsAK3vi7juvbIcfQH
         4P9t9BvwLhnTrt6EC/BbQzH8J9Ns1ZfAJ3rxoBsEqn2VeyxMHhy4MfM/eOZ8g+i4BirR
         XYcVNrCJazcn2+25zUE5e3n8AfyIku9l/Noh4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957971; x=1728562771;
        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=JzvJYHGLE9z5OUSnbhsIqX8inHPsJLzDP+/krirdPTI=;
        b=h1fMBgZcYhBPVXEKKlIpdxpC0jcbxoAoEpULKufKhs28OF2SUOnpW21a99l4Kxt2GU
         n5KJ9y+4QXnoqY/y9BrqGwUqw9WV9Qbz7BeXpv/PbN1wS1rgwAyRcanV3r0fZEMmI9YX
         tNJVsM+KwrsziMWIr07VYFAx52oTD+bpyrDHuQd3vcQF0sSK+Q7fLOiI5O82FKhU50DU
         I5wm5jjIwy8B7fz/hkoj1LMC/brteMXzPpeiEv3HOjo7VT+aCpyL5aBp++F6fwg6N/lm
         AUif1NALbeQOlT7Uq6dXVvsh1viU0WAmwRAZO9CstgcGiV/lmSTMXl/U3Fjo1heLr6ZG
         F9dg==
X-Gm-Message-State: AOJu0YzNNiAXbbkPV4/wcQuAuCqUBtFKiqECjFxeLD34ovDlOGuArgFF
	1g180F9eNfc64g0CJxFwMsQTG6GHmL4vkvGRyzQEKf0dPh/LLm2XUWljtDorQaGAvzqqVt/BuSV
	u
X-Google-Smtp-Source: AGHT+IGOhSwTCr3X6dn4q1VWB2rQCWw5f55k4Sd8LXVO+G8Icl3NGLvpKNoV2CXmLLkI97IsRhGKWg==
X-Received: by 2002:a17:907:3605:b0:a90:344a:7db6 with SMTP id a640c23a62f3a-a98f838ddfbmr565931466b.62.1727957971089;
        Thu, 03 Oct 2024 05:19:31 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH 12/20] xen: Update header guards - KEXEC
Date: Thu,  3 Oct 2024 13:19:00 +0100
Message-Id: <20241003121908.362888-13-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to KEXEC.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/kexec.h  | 6 +++---
 xen/include/xen/kimage.h | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/include/xen/kexec.h b/xen/include/xen/kexec.h
index e66eb6a8e5..d9d79902a9 100644
--- a/xen/include/xen/kexec.h
+++ b/xen/include/xen/kexec.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KEXEC_H__
-#define __XEN_KEXEC_H__
+#ifndef XEN__KEXEC_H
+#define XEN__KEXEC_H
 
 #include <xen/keyhandler.h>
 
@@ -94,7 +94,7 @@ static inline void set_kexec_crash_area_size(u64 system_ram) {}
 
 #endif
 
-#endif /* __XEN_KEXEC_H__ */
+#endif /* XEN__KEXEC_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/kimage.h b/xen/include/xen/kimage.h
index 348f07f5c8..139d4366ab 100644
--- a/xen/include/xen/kimage.h
+++ b/xen/include/xen/kimage.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KIMAGE_H__
-#define __XEN_KIMAGE_H__
+#ifndef XEN__KIMAGE_H
+#define XEN__KIMAGE_H
 
 #define IND_DESTINATION  0x1
 #define IND_INDIRECTION  0x2
@@ -55,7 +55,7 @@ int kimage_build_ind(struct kexec_image *image, mfn_t ind_mfn,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_KIMAGE_H__ */
+#endif /* XEN__KIMAGE_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809337.1221687 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKny-00072H-CL; Thu, 03 Oct 2024 12:19:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809337.1221687; Thu, 03 Oct 2024 12:19: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 1swKnx-00070b-Ig; Thu, 03 Oct 2024 12:19:37 +0000
Received: by outflank-mailman (input) for mailman id 809337;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnu-00043u-VA
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:34 +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 bf1f19c6-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:33 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a8a897bd4f1so106769366b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:33 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bf1f19c6-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957972; x=1728562772; 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=hmh1hzNwt6VpdcbBHHPmRW3VApkcv+IYe7HOfAX1NVQ=;
        b=KKKEk97g6DDw6RwXmfdBy9VlmdyWJizI1qNwrjwhyQuovpIopbjXPoDxBl5cwzWK7b
         37a4yubnMSZlWgF3KRIzAB3LvRRHRwiEksZOefcx+kNWYWz88wB04MyspzuIUQRnftan
         wJD3qmq9IFu/+mPZtya4RThvTFxZqsdDwCS38=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957972; x=1728562772;
        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=hmh1hzNwt6VpdcbBHHPmRW3VApkcv+IYe7HOfAX1NVQ=;
        b=xVFrQ7jK0vpV+c+wZBW2AguwT2dBqei4XH6Ae5zirf4Qfn4KYIFOx2x5bcPzfZoyJ0
         w9XyVEUBwoiuHoGuc7Y6NjFfJLR3E0crPfQB39MWKkvZKDEeOahKZrIkGxDd4jurb0ZR
         c+3t/Ro1CUmvgecdlabrvPUcemoXp5cqY2cLglKMvmelwh+x+IFkgwRcEib2QmxROOOb
         Oxll7ADvCeHdOTyEYP0baPygTOJ34tuAYDy5zHd5KQCCZHoGKoN8HyIEaqRmHSuNiTkl
         SbnpWfMm+2pUd4Ob5+8zGko7fdx+i9+P7Xv2/fRTAMLw7PyYjHkdBqBMMf8bWiX55QWw
         +Htg==
X-Gm-Message-State: AOJu0Yzok6dEGSb3CzsQp7WCsbVOe2akYL0cE8pK9M6qgTMcFCx/ZWOA
	gESrLFJUbNTIwL1S+4td2FVdB0GSdOL9/NyObI5RwsboFJrPmqUj11gsMs3s9RewO/j/j+J+muk
	u
X-Google-Smtp-Source: AGHT+IEdGHOCMwruRO3RFvoh0Dm/Pgnu/ic/KapmaTnR1Qd9BbgLwzjpr+PhC/BCNyRBD/eyK+CvPA==
X-Received: by 2002:a17:906:6a04:b0:a86:851e:3a2b with SMTP id a640c23a62f3a-a98f825a9famr650030666b.29.1727957972159;
        Thu, 03 Oct 2024 05:19:32 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH 13/20] xen: Update header guards - Live patch
Date: Thu,  3 Oct 2024 13:19:01 +0100
Message-Id: <20241003121908.362888-14-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to live patching.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/livepatch.h | 6 +++---
 xen/include/xen/livepatch.h          | 6 +++---
 xen/include/xen/livepatch_elf.h      | 6 +++---
 xen/include/xen/livepatch_payload.h  | 6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/include/asm/livepatch.h b/xen/arch/x86/include/asm/livepatch.h
index 00aefd2d63..7f838f418d 100644
--- a/xen/arch/x86/include/asm/livepatch.h
+++ b/xen/arch/x86/include/asm/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_X86_LIVEPATCH_H__
-#define __XEN_X86_LIVEPATCH_H__
+#ifndef ASM__X86__LIVEPATCH_H
+#define ASM__X86__LIVEPATCH_H
 
 #include <xen/sizes.h> /* For SZ_* macros. */
 
@@ -12,7 +12,7 @@
 #define ARCH_LIVEPATCH_RANGE SZ_2G
 #define LIVEPATCH_FEATURE    X86_FEATURE_ALWAYS
 
-#endif /* __XEN_X86_LIVEPATCH_H__ */
+#endif /* ASM__X86__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch.h b/xen/include/xen/livepatch.h
index d074a5bebe..69220ece21 100644
--- a/xen/include/xen/livepatch.h
+++ b/xen/include/xen/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_LIVEPATCH_H__
-#define __XEN_LIVEPATCH_H__
+#ifndef XEN__LIVEPATCH_H
+#define XEN__LIVEPATCH_H
 
 struct livepatch_elf;
 struct livepatch_elf_sec;
@@ -167,7 +167,7 @@ static inline bool is_patch(const void *addr)
 }
 #endif /* CONFIG_LIVEPATCH */
 
-#endif /* __XEN_LIVEPATCH_H__ */
+#endif /* XEN__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch_elf.h b/xen/include/xen/livepatch_elf.h
index 842111e145..bb221aeaa0 100644
--- a/xen/include/xen/livepatch_elf.h
+++ b/xen/include/xen/livepatch_elf.h
@@ -2,8 +2,8 @@
  * Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
 
-#ifndef __XEN_LIVEPATCH_ELF_H__
-#define __XEN_LIVEPATCH_ELF_H__
+#ifndef XEN__LIVEPATCH_ELF_H
+#define XEN__LIVEPATCH_ELF_H
 
 #include <xen/types.h>
 #include <xen/elfstructs.h>
@@ -52,7 +52,7 @@ static inline bool livepatch_elf_ignore_section(const Elf_Shdr *sec)
 {
     return !(sec->sh_flags & SHF_ALLOC);
 }
-#endif /* __XEN_LIVEPATCH_ELF_H__ */
+#endif /* XEN__LIVEPATCH_ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch_payload.h b/xen/include/xen/livepatch_payload.h
index c6dc7cb5fa..f35d8b9d83 100644
--- a/xen/include/xen/livepatch_payload.h
+++ b/xen/include/xen/livepatch_payload.h
@@ -2,8 +2,8 @@
  * Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
 
-#ifndef __XEN_LIVEPATCH_PAYLOAD_H__
-#define __XEN_LIVEPATCH_PAYLOAD_H__
+#ifndef XEN__LIVEPATCH_PAYLOAD_H
+#define XEN__LIVEPATCH_PAYLOAD_H
 #include <xen/virtual_region.h>
 
 /* To contain the ELF Note header. */
@@ -140,7 +140,7 @@ struct payload {
     livepatch_actioncall_t *__attribute__((weak, used)) \
         const livepatch_revert_data_##_fn __section(".livepatch.hooks.revert") = _fn;
 
-#endif /* __XEN_LIVEPATCH_PAYLOAD_H__ */
+#endif /* XEN__LIVEPATCH_PAYLOAD_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809338.1221693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnz-00079z-2B; Thu, 03 Oct 2024 12:19:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809338.1221693; Thu, 03 Oct 2024 12:19: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 1swKny-000775-6O; Thu, 03 Oct 2024 12:19:38 +0000
Received: by outflank-mailman (input) for mailman id 809338;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnv-00043W-OI
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:35 +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 c03a5288-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:34 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a8d51a7d6f5so129144266b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:34 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c03a5288-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957974; x=1728562774; 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=Zpj+H43/zUHJOCA2rQ61rrJy8km2CNAr8k6Cjf/e1HY=;
        b=BEG8uQTP/MzFzJspe04WJH3MCcEPIitC10kDAR+tFDe1Xuwhhz8xjWZxBDqHwY1Xfg
         JBCNkNAsRhnS8JXqZ9E9wHsetLu57wE8zaptEn361ONZGS+Kbnp+YK8cAeoVYcFiLypQ
         Lq/Ga3h40rm4VVaXMAoYrKacrUuEbJ3LIj/XU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957974; x=1728562774;
        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=Zpj+H43/zUHJOCA2rQ61rrJy8km2CNAr8k6Cjf/e1HY=;
        b=uzhPSlf0mu2sumwDkpnAdXMr0svRsUY41sM694AuX3r125gQekPzXnJ2h3A1+i1n8P
         dTKQEc+cnlwgTGt6ihkZmmcn2H5NOpVEC62Qjgn+/R3kKOE9HQZxmdWuoEVqKS/ceFe6
         vELC89HOyCt9UYV0VajvSjUOYZs7mwdCOKY3YADCMfp+PRweWtnflu7p+kmgHPmi7MET
         8t7Rm5F8QctAesSWKlD42OXEZoeT/CbI671cq5UjGxUkOGmxdzTFeLLGivDDGMYDw7h7
         eU5qGoAn8/B0BRssZwEM+Vjm4FyBfW6OKJjImec97xKh+2JeyTBIcV2PV5rGEPHEMXk2
         0xjg==
X-Gm-Message-State: AOJu0YxaGt4IvhgP/E3/p3TVeSDWNCFFoAqJDkleavvBejNPZ8LNGPay
	xChs2tdc+CcxZ4QRtodlrZBK2EOCRiizU2aKLSuK262PwfUTipXRneTHzsx/EoKUJRJuwmQYn76
	6
X-Google-Smtp-Source: AGHT+IGA0CP3Ai8jKkp0TGden7YWJIRnZvGayzfb/xHbDfIpZF/Drffv2BsOoPac8DPd4Rl10n/ItQ==
X-Received: by 2002:a17:907:a4b:b0:a90:349e:2465 with SMTP id a640c23a62f3a-a98f83a119amr560980166b.65.1727957973794;
        Thu, 03 Oct 2024 05:19:33 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 15/20] xen: Update header guards - Public I/O
Date: Thu,  3 Oct 2024 13:19:03 +0100
Message-Id: <20241003121908.362888-16-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to public I/O interfaces.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/public/io/9pfs.h      | 4 ++--
 xen/include/public/io/blkif.h     | 6 +++---
 xen/include/public/io/cameraif.h  | 6 +++---
 xen/include/public/io/console.h   | 6 +++---
 xen/include/public/io/displif.h   | 6 +++---
 xen/include/public/io/fbif.h      | 4 ++--
 xen/include/public/io/fsif.h      | 4 ++--
 xen/include/public/io/kbdif.h     | 6 +++---
 xen/include/public/io/netif.h     | 4 ++--
 xen/include/public/io/pciif.h     | 6 +++---
 xen/include/public/io/protocols.h | 4 ++--
 xen/include/public/io/pvcalls.h   | 4 ++--
 xen/include/public/io/ring.h      | 6 +++---
 xen/include/public/io/sndif.h     | 6 +++---
 xen/include/public/io/tpmif.h     | 4 ++--
 xen/include/public/io/usbif.h     | 6 +++---
 xen/include/public/io/vscsiif.h   | 6 +++---
 xen/include/public/io/xenbus.h    | 6 +++---
 xen/include/public/io/xs_wire.h   | 6 +++---
 19 files changed, 50 insertions(+), 50 deletions(-)

diff --git a/xen/include/public/io/9pfs.h b/xen/include/public/io/9pfs.h
index ac4bf0434b..46b84cf903 100644
--- a/xen/include/public/io/9pfs.h
+++ b/xen/include/public/io/9pfs.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Stefano Stabellini <stefano@aporeto.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_9PFS_H__
-#define __XEN_PUBLIC_IO_9PFS_H__
+#ifndef PUBLIC__IO__9PFS_H
+#define PUBLIC__IO__9PFS_H
 
 #include "../grant_table.h"
 #include "ring.h"
diff --git a/xen/include/public/io/blkif.h b/xen/include/public/io/blkif.h
index 8407453324..bbc5e1d395 100644
--- a/xen/include/public/io/blkif.h
+++ b/xen/include/public/io/blkif.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2012, Spectra Logic Corporation
  */
 
-#ifndef __XEN_PUBLIC_IO_BLKIF_H__
-#define __XEN_PUBLIC_IO_BLKIF_H__
+#ifndef PUBLIC__IO__BLKIF_H
+#define PUBLIC__IO__BLKIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
@@ -726,7 +726,7 @@ DEFINE_RING_TYPES(blkif, struct blkif_request, struct blkif_response);
 #define VDISK_REMOVABLE    0x2
 #define VDISK_READONLY     0x4
 
-#endif /* __XEN_PUBLIC_IO_BLKIF_H__ */
+#endif /* PUBLIC__IO__BLKIF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/cameraif.h b/xen/include/public/io/cameraif.h
index a389443769..56c2dd7e5b 100644
--- a/xen/include/public/io/cameraif.h
+++ b/xen/include/public/io/cameraif.h
@@ -9,8 +9,8 @@
  * Author: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_CAMERAIF_H__
-#define __XEN_PUBLIC_IO_CAMERAIF_H__
+#ifndef PUBLIC__IO__CAMERAIF_H
+#define PUBLIC__IO__CAMERAIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
@@ -1344,7 +1344,7 @@ struct xencamera_event_page {
 #define XENCAMERA_IN_RING_REF(page, idx) \
     (XENCAMERA_IN_RING((page))[(idx) % XENCAMERA_IN_RING_LEN])
 
-#endif /* __XEN_PUBLIC_IO_CAMERAIF_H__ */
+#endif /* PUBLIC__IO__CAMERAIF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/console.h b/xen/include/public/io/console.h
index 4509b4b689..2d98564504 100644
--- a/xen/include/public/io/console.h
+++ b/xen/include/public/io/console.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_IO_CONSOLE_H__
-#define __XEN_PUBLIC_IO_CONSOLE_H__
+#ifndef PUBLIC__IO__CONSOLE_H
+#define PUBLIC__IO__CONSOLE_H
 
 typedef uint32_t XENCONS_RING_IDX;
 
@@ -26,7 +26,7 @@ struct xencons_interface {
 DEFINE_XEN_FLEX_RING(xencons);
 #endif
 
-#endif /* __XEN_PUBLIC_IO_CONSOLE_H__ */
+#endif /* PUBLIC__IO__CONSOLE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/displif.h b/xen/include/public/io/displif.h
index 132c96fa5c..68aa91f5b9 100644
--- a/xen/include/public/io/displif.h
+++ b/xen/include/public/io/displif.h
@@ -10,8 +10,8 @@
  *          Oleksandr Grytsov <oleksandr_grytsov@epam.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_DISPLIF_H__
-#define __XEN_PUBLIC_IO_DISPLIF_H__
+#ifndef PUBLIC__IO__DISPLIF_H
+#define PUBLIC__IO__DISPLIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
@@ -927,7 +927,7 @@ struct xendispl_event_page {
 #define XENDISPL_IN_RING_REF(page, idx) \
 	(XENDISPL_IN_RING((page))[(idx) % XENDISPL_IN_RING_LEN])
 
-#endif /* __XEN_PUBLIC_IO_DISPLIF_H__ */
+#endif /* PUBLIC__IO__DISPLIF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/fbif.h b/xen/include/public/io/fbif.h
index 93c73195d8..6e6b2077ae 100644
--- a/xen/include/public/io/fbif.h
+++ b/xen/include/public/io/fbif.h
@@ -6,8 +6,8 @@
  * Copyright (C) 2006 Red Hat, Inc., Markus Armbruster <armbru@redhat.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_FBIF_H__
-#define __XEN_PUBLIC_IO_FBIF_H__
+#ifndef PUBLIC__IO__FBIF_H
+#define PUBLIC__IO__FBIF_H
 
 /* Out events (frontend -> backend) */
 
diff --git a/xen/include/public/io/fsif.h b/xen/include/public/io/fsif.h
index dcade1c698..b0a30a32e6 100644
--- a/xen/include/public/io/fsif.h
+++ b/xen/include/public/io/fsif.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2007, Grzegorz Milos, <gm281@cam.ac.uk>.
  */
 
-#ifndef __XEN_PUBLIC_IO_FSIF_H__
-#define __XEN_PUBLIC_IO_FSIF_H__
+#ifndef PUBLIC__IO__FSIF_H
+#define PUBLIC__IO__FSIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
diff --git a/xen/include/public/io/kbdif.h b/xen/include/public/io/kbdif.h
index 4bde6b3821..d2e316cb70 100644
--- a/xen/include/public/io/kbdif.h
+++ b/xen/include/public/io/kbdif.h
@@ -6,8 +6,8 @@
  * Copyright (C) 2006 Red Hat, Inc., Markus Armbruster <armbru@redhat.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_KBDIF_H__
-#define __XEN_PUBLIC_IO_KBDIF_H__
+#ifndef PUBLIC__IO__KBDIF_H
+#define PUBLIC__IO__KBDIF_H
 
 /*
  *****************************************************************************
@@ -546,7 +546,7 @@ struct xenkbd_page
     uint32_t out_cons, out_prod;
 };
 
-#endif /* __XEN_PUBLIC_IO_KBDIF_H__ */
+#endif /* PUBLIC__IO__KBDIF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/netif.h b/xen/include/public/io/netif.h
index c13b85061d..871dd51a32 100644
--- a/xen/include/public/io/netif.h
+++ b/xen/include/public/io/netif.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2003-2004, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_IO_NETIF_H__
-#define __XEN_PUBLIC_IO_NETIF_H__
+#ifndef PUBLIC__IO__NETIF_H
+#define PUBLIC__IO__NETIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
diff --git a/xen/include/public/io/pciif.h b/xen/include/public/io/pciif.h
index dbe825ecc3..282c9a6b37 100644
--- a/xen/include/public/io/pciif.h
+++ b/xen/include/public/io/pciif.h
@@ -4,8 +4,8 @@
  *
  *   Author: Ryan Wilson <hap9@epoch.ncsc.mil>
  */
-#ifndef __XEN_PCI_COMMON_H__
-#define __XEN_PCI_COMMON_H__
+#ifndef PUBLIC__IO__PCIIF_H
+#define PUBLIC__IO__PCIIF_H
 
 /* Be sure to bump this number if you change this file */
 #define XEN_PCI_MAGIC "7"
@@ -95,7 +95,7 @@ struct xen_pci_sharedinfo {
     struct xen_pcie_aer_op aer_op;
 };
 
-#endif /* __XEN_PCI_COMMON_H__ */
+#endif /* PUBLIC__IO__PCIIF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/protocols.h b/xen/include/public/io/protocols.h
index 7815e1ff0f..11537f2a21 100644
--- a/xen/include/public/io/protocols.h
+++ b/xen/include/public/io/protocols.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2008, Keir Fraser
  */
 
-#ifndef __XEN_PROTOCOLS_H__
-#define __XEN_PROTOCOLS_H__
+#ifndef PUBLIC__IO__PROTOCOLS_H
+#define PUBLIC__IO__PROTOCOLS_H
 
 #define XEN_IO_PROTO_ABI_X86_32     "x86_32-abi"
 #define XEN_IO_PROTO_ABI_X86_64     "x86_64-abi"
diff --git a/xen/include/public/io/pvcalls.h b/xen/include/public/io/pvcalls.h
index c8c7602470..33e448363a 100644
--- a/xen/include/public/io/pvcalls.h
+++ b/xen/include/public/io/pvcalls.h
@@ -10,8 +10,8 @@
  * Copyright (C) 2017 Stefano Stabellini <stefano@aporeto.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_PVCALLS_H__
-#define __XEN_PUBLIC_IO_PVCALLS_H__
+#ifndef PUBLIC__IO__PVCALLS_H
+#define PUBLIC__IO__PVCALLS_H
 
 #include "../grant_table.h"
 #include "ring.h"
diff --git a/xen/include/public/io/ring.h b/xen/include/public/io/ring.h
index a79d913142..a9bf13339b 100644
--- a/xen/include/public/io/ring.h
+++ b/xen/include/public/io/ring.h
@@ -7,8 +7,8 @@
  * Tim Deegan and Andrew Warfield November 2004.
  */
 
-#ifndef __XEN_PUBLIC_IO_RING_H__
-#define __XEN_PUBLIC_IO_RING_H__
+#ifndef PUBLIC__IO__RING_H
+#define PUBLIC__IO__RING_H
 
 /*
  * When #include'ing this header, you need to provide the following
@@ -491,7 +491,7 @@ struct name##_data_intf {                                                     \
 };                                                                            \
 DEFINE_XEN_FLEX_RING(name)
 
-#endif /* __XEN_PUBLIC_IO_RING_H__ */
+#endif /* PUBLIC__IO__RING_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/sndif.h b/xen/include/public/io/sndif.h
index cce1459b7b..c713d428f4 100644
--- a/xen/include/public/io/sndif.h
+++ b/xen/include/public/io/sndif.h
@@ -13,8 +13,8 @@
  *          Iurii Konovalenko <iurii.konovalenko@globallogic.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_SNDIF_H__
-#define __XEN_PUBLIC_IO_SNDIF_H__
+#ifndef PUBLIC__IO__SNDIF_H
+#define PUBLIC__IO__SNDIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
@@ -1061,7 +1061,7 @@ struct xensnd_event_page {
 #define XENSND_IN_RING_REF(page, idx) \
     (XENSND_IN_RING((page))[(idx) % XENSND_IN_RING_LEN])
 
-#endif /* __XEN_PUBLIC_IO_SNDIF_H__ */
+#endif /* PUBLIC__IO__SNDIF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/tpmif.h b/xen/include/public/io/tpmif.h
index ad02dbaf1a..8347c739c8 100644
--- a/xen/include/public/io/tpmif.h
+++ b/xen/include/public/io/tpmif.h
@@ -14,8 +14,8 @@
  * Copyright (c) 2003-2004, Keir Fraser
  */
 
-#ifndef __XEN_PUBLIC_IO_TPMIF_H__
-#define __XEN_PUBLIC_IO_TPMIF_H__
+#ifndef PUBLIC__IO__TPMIF_H
+#define PUBLIC__IO__TPMIF_H
 
 #include "../grant_table.h"
 
diff --git a/xen/include/public/io/usbif.h b/xen/include/public/io/usbif.h
index 875af0dc7c..f8ef179173 100644
--- a/xen/include/public/io/usbif.h
+++ b/xen/include/public/io/usbif.h
@@ -8,8 +8,8 @@
  * Author: Noboru Iwamatsu <n_iwamatsu@jp.fujitsu.com>
  */
 
-#ifndef __XEN_PUBLIC_IO_USBIF_H__
-#define __XEN_PUBLIC_IO_USBIF_H__
+#ifndef PUBLIC__IO__USBIF_H
+#define PUBLIC__IO__USBIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
@@ -405,4 +405,4 @@ typedef struct usbif_conn_response usbif_conn_response_t;
 DEFINE_RING_TYPES(usbif_conn, struct usbif_conn_request, struct usbif_conn_response);
 #define USB_CONN_RING_SIZE __CONST_RING_SIZE(usbif_conn, USBIF_RING_SIZE)
 
-#endif /* __XEN_PUBLIC_IO_USBIF_H__ */
+#endif /* PUBLIC__IO__USBIF_H */
diff --git a/xen/include/public/io/vscsiif.h b/xen/include/public/io/vscsiif.h
index f5fc7de725..5d6b4f1c38 100644
--- a/xen/include/public/io/vscsiif.h
+++ b/xen/include/public/io/vscsiif.h
@@ -7,8 +7,8 @@
  * Copyright(c) FUJITSU Limited 2008.
  */
 
-#ifndef __XEN__PUBLIC_IO_SCSI_H__
-#define __XEN__PUBLIC_IO_SCSI_H__
+#ifndef PUBLIC__IO__VSCSIIF_H
+#define PUBLIC__IO__VSCSIIF_H
 
 #include "ring.h"
 #include "../grant_table.h"
@@ -352,7 +352,7 @@ typedef struct vscsiif_response vscsiif_response_t;
 DEFINE_RING_TYPES(vscsiif, struct vscsiif_request, struct vscsiif_response);
 
 
-#endif  /*__XEN__PUBLIC_IO_SCSI_H__*/
+#endif  /*PUBLIC__IO__VSCSIIF_H*/
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/public/io/xenbus.h b/xen/include/public/io/xenbus.h
index 9cd0cd7c67..40d645ac98 100644
--- a/xen/include/public/io/xenbus.h
+++ b/xen/include/public/io/xenbus.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2005 XenSource Ltd.
  */
 
-#ifndef _XEN_PUBLIC_IO_XENBUS_H
-#define _XEN_PUBLIC_IO_XENBUS_H
+#ifndef PUBLIC__IO__XENBUS_H
+#define PUBLIC__IO__XENBUS_H
 
 /*
  * The state of either end of the Xenbus, i.e. the current communication
@@ -50,7 +50,7 @@ enum xenbus_state {
 };
 typedef enum xenbus_state XenbusState;
 
-#endif /* _XEN_PUBLIC_IO_XENBUS_H */
+#endif /* PUBLIC__IO__XENBUS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/io/xs_wire.h b/xen/include/public/io/xs_wire.h
index 04e6849feb..c5ed783e7c 100644
--- a/xen/include/public/io/xs_wire.h
+++ b/xen/include/public/io/xs_wire.h
@@ -6,8 +6,8 @@
  * Copyright (C) 2005 Rusty Russell IBM Corporation
  */
 
-#ifndef _XS_WIRE_H
-#define _XS_WIRE_H
+#ifndef PUBLIC__IO__XS_WIRE_H
+#define PUBLIC__IO__XS_WIRE_H
 
 enum xsd_sockmsg_type
 {
@@ -134,7 +134,7 @@ struct xenstore_domain_interface {
 #define XENSTORE_ERROR_RINGIDX 2 /* Invalid ring index */
 #define XENSTORE_ERROR_PROTO   3 /* Protocol violation (payload too long) */
 
-#endif /* _XS_WIRE_H */
+#endif /* PUBLIC__IO__XS_WIRE_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809339.1221698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKnz-0007Ql-W7; Thu, 03 Oct 2024 12:19:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809339.1221698; Thu, 03 Oct 2024 12:19: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 1swKnz-0007NW-Ee; Thu, 03 Oct 2024 12:19:39 +0000
Received: by outflank-mailman (input) for mailman id 809339;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnv-00043u-Ux
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:36 +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 bfc44cb7-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:34 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a8d56155f51so100766866b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:34 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bfc44cb7-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957973; x=1728562773; 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=uNiKQHMX+Ojk5dsTBVr2+d/BQL/jwshybvgP1Qfqj4w=;
        b=LgVCj7w9wPKqcAVEyYC+sq65a/TMRCEyWUn/qPfPETRtnftYyEQYLK9cP1CrgotrRG
         YHEsYLtfvEr55RFp7DiorJKSnPaKbdBgWUT7ak2nolHoO+Ytx4wCjj0kJwD7w1gfG9/8
         2LYB5p+3UfKXTodkrlcIC+Kmc0SyfktAh8DoA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957973; x=1728562773;
        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=uNiKQHMX+Ojk5dsTBVr2+d/BQL/jwshybvgP1Qfqj4w=;
        b=c1Wsq/9sy7R5KRfB8sjgmvvVBc05ymLveDEa6QcxqQCwkEBR2/0eFDS4L61Rm+nY8K
         BIfCl8ZtxlRroZL+vN4gZWoJ9SX4pOtlf0C+oNiHZgwtSfUmXMyyf95/wNAc36f2/z53
         EstVibYs3fi51Nhp12KQYhjweYKK31SISdoF5QRrHvkTjjt8hM0ukyMvVXgjtEXxZqkL
         xBnJve+pLPVmCTMNILVZ2L/4mabqUnrGDuyGCfeJrIZercNRlzymiVVD+BGg4N2Fopgp
         RR5shaVCfr2AoUbUuYOCUZdqDfMKLDbOvKquHK0W99hmReQAljom/bfQs3FgC/bPnFOh
         Ks/Q==
X-Gm-Message-State: AOJu0YzYdqhKt8pCECmNdBpDIRcFIPOpGBz7bUnBTbRDgqJLoQQL1Ls0
	DHEKcdx9Kx/SSLCbj1vwr/lqHn72JlPL8mIjg1ug9juaRCBj1qD7zTnPbkAWe8xNMBAWH/W+Hcj
	M
X-Google-Smtp-Source: AGHT+IEbeihMacmCvMoMKgGRiqWWBfhp8weblwIxXlcPMPVwI6uvDw73g4JF3THhoL6p5ZYJkn0s0w==
X-Received: by 2002:a17:907:6e86:b0:a8a:71d5:1094 with SMTP id a640c23a62f3a-a98f8372872mr642953366b.46.1727957973086;
        Thu, 03 Oct 2024 05:19:33 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH 14/20] xen: Update header guards - PPC 64
Date: Thu,  3 Oct 2024 13:19:02 +0100
Message-Id: <20241003121908.362888-15-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to PPC 64.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/ppc/include/asm/asm-defns.h     | 6 +++---
 xen/arch/ppc/include/asm/atomic.h        | 6 +++---
 xen/arch/ppc/include/asm/bitops.h        | 6 +++---
 xen/arch/ppc/include/asm/boot.h          | 6 +++---
 xen/arch/ppc/include/asm/bug.h           | 6 +++---
 xen/arch/ppc/include/asm/byteorder.h     | 6 +++---
 xen/arch/ppc/include/asm/cache.h         | 6 +++---
 xen/arch/ppc/include/asm/config.h        | 6 +++---
 xen/arch/ppc/include/asm/cpufeature.h    | 6 +++---
 xen/arch/ppc/include/asm/current.h       | 6 +++---
 xen/arch/ppc/include/asm/domain.h        | 6 +++---
 xen/arch/ppc/include/asm/early_printk.h  | 6 +++---
 xen/arch/ppc/include/asm/event.h         | 6 +++---
 xen/arch/ppc/include/asm/flushtlb.h      | 6 +++---
 xen/arch/ppc/include/asm/guest_access.h  | 6 +++---
 xen/arch/ppc/include/asm/guest_atomics.h | 6 +++---
 xen/arch/ppc/include/asm/io.h            | 6 +++---
 xen/arch/ppc/include/asm/iommu.h         | 6 +++---
 xen/arch/ppc/include/asm/irq.h           | 6 +++---
 xen/arch/ppc/include/asm/memory.h        | 4 ++--
 xen/arch/ppc/include/asm/mm.h            | 6 +++---
 xen/arch/ppc/include/asm/monitor.h       | 6 +++---
 xen/arch/ppc/include/asm/msr.h           | 6 +++---
 xen/arch/ppc/include/asm/nospec.h        | 6 +++---
 xen/arch/ppc/include/asm/opal-api.h      | 6 +++---
 xen/arch/ppc/include/asm/p2m.h           | 6 +++---
 xen/arch/ppc/include/asm/page-bits.h     | 6 +++---
 xen/arch/ppc/include/asm/page.h          | 6 +++---
 xen/arch/ppc/include/asm/processor.h     | 6 +++---
 xen/arch/ppc/include/asm/regs.h          | 6 +++---
 xen/arch/ppc/include/asm/setup.h         | 6 +++---
 xen/arch/ppc/include/asm/smp.h           | 4 ++--
 xen/arch/ppc/include/asm/spinlock.h      | 6 +++---
 xen/arch/ppc/include/asm/string.h        | 6 +++---
 xen/arch/ppc/include/asm/system.h        | 4 ++--
 xen/arch/ppc/include/asm/time.h          | 6 +++---
 xen/arch/ppc/include/asm/types.h         | 6 +++---
 37 files changed, 108 insertions(+), 108 deletions(-)

diff --git a/xen/arch/ppc/include/asm/asm-defns.h b/xen/arch/ppc/include/asm/asm-defns.h
index e46f0785ad..aaa6dc6152 100644
--- a/xen/arch/ppc/include/asm/asm-defns.h
+++ b/xen/arch/ppc/include/asm/asm-defns.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef _ASM_PPC_ASM_DEFNS_H
-#define _ASM_PPC_ASM_DEFNS_H
+#ifndef ASM__PPC__ASM_DEFNS_H
+#define ASM__PPC__ASM_DEFNS_H
 
 #include <asm/asm-offsets.h>
 #include <xen/linkage.h>
@@ -75,4 +75,4 @@ name:                                                                       \
 #define SAVE_NVGPRS(base)           SAVE_GPRS(14, 31, base)
 #define REST_NVGPRS(base)           REST_GPRS(14, 31, base)
 
-#endif /* _ASM_PPC_ASM_DEFNS_H */
+#endif /* ASM__PPC__ASM_DEFNS_H */
diff --git a/xen/arch/ppc/include/asm/atomic.h b/xen/arch/ppc/include/asm/atomic.h
index fe778579fb..5fe662ff59 100644
--- a/xen/arch/ppc/include/asm/atomic.h
+++ b/xen/arch/ppc/include/asm/atomic.h
@@ -7,8 +7,8 @@
  * Copyright Raptor Engineering LLC
  */
 
-#ifndef _ASM_PPC64_ATOMIC_H_
-#define _ASM_PPC64_ATOMIC_H_
+#ifndef ASM__PPC__ATOMIC_H
+#define ASM__PPC__ATOMIC_H
 
 #include <xen/atomic.h>
 
@@ -382,4 +382,4 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
     return __atomic_add_unless(v, a, u);
 }
 
-#endif /* _ASM_PPC64_ATOMIC_H_ */
+#endif /* ASM__PPC__ATOMIC_H */
diff --git a/xen/arch/ppc/include/asm/bitops.h b/xen/arch/ppc/include/asm/bitops.h
index c942e9432e..2c10a016b7 100644
--- a/xen/arch/ppc/include/asm/bitops.h
+++ b/xen/arch/ppc/include/asm/bitops.h
@@ -7,8 +7,8 @@
  * Reed, Pat McCarthy, Peter Bergner, Anton Blanchard.  They
  * originally took it from the ppc32 code.
  */
-#ifndef _ASM_PPC_BITOPS_H
-#define _ASM_PPC_BITOPS_H
+#ifndef ASM__PPC__BITOPS_H
+#define ASM__PPC__BITOPS_H
 
 #include <asm/memory.h>
 
@@ -126,4 +126,4 @@ static inline int test_and_set_bit(unsigned int nr, volatile void *addr)
 
 #define arch_hweightl(x) __builtin_popcountl(x)
 
-#endif /* _ASM_PPC_BITOPS_H */
+#endif /* ASM__PPC__BITOPS_H */
diff --git a/xen/arch/ppc/include/asm/boot.h b/xen/arch/ppc/include/asm/boot.h
index d62c3ff6e0..7618533712 100644
--- a/xen/arch/ppc/include/asm/boot.h
+++ b/xen/arch/ppc/include/asm/boot.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_BOOT_H
-#define _ASM_PPC_BOOT_H
+#ifndef ASM__PPC__BOOT_H
+#define ASM__PPC__BOOT_H
 
 #include <xen/types.h>
 
@@ -15,4 +15,4 @@ struct opal {
 
 void boot_opal_init(const void *fdt);
 
-#endif /* _ASM_PPC_BOOT_H */
+#endif /* ASM__PPC__BOOT_H */
diff --git a/xen/arch/ppc/include/asm/bug.h b/xen/arch/ppc/include/asm/bug.h
index 35d4568402..019565b0ed 100644
--- a/xen/arch/ppc/include/asm/bug.h
+++ b/xen/arch/ppc/include/asm/bug.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_BUG_H
-#define _ASM_PPC_BUG_H
+#ifndef ASM__PPC__BUG_H
+#define ASM__PPC__BUG_H
 
 #include <xen/stringify.h>
 #include <asm/processor.h>
@@ -24,4 +24,4 @@
 /* TODO: implement this properly */
 #define BUG_FRAME(type, line, ptr, second_frame, msg) do { } while (0)
 
-#endif /* _ASM_PPC_BUG_H */
+#endif /* ASM__PPC__BUG_H */
diff --git a/xen/arch/ppc/include/asm/byteorder.h b/xen/arch/ppc/include/asm/byteorder.h
index 2b5f6b9f63..7a13366e45 100644
--- a/xen/arch/ppc/include/asm/byteorder.h
+++ b/xen/arch/ppc/include/asm/byteorder.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_PPC_BYTEORDER_H
-#define _ASM_PPC_BYTEORDER_H
+#ifndef ASM__PPC__BYTEORDER_H
+#define ASM__PPC__BYTEORDER_H
 
 #define __arch__swab16 __builtin_bswap16
 #define __arch__swab32 __builtin_bswap32
@@ -9,4 +9,4 @@
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* _ASM_PPC_BYTEORDER_H */
+#endif /* ASM__PPC__BYTEORDER_H */
diff --git a/xen/arch/ppc/include/asm/cache.h b/xen/arch/ppc/include/asm/cache.h
index 8a0a6b7b17..561d02e232 100644
--- a/xen/arch/ppc/include/asm/cache.h
+++ b/xen/arch/ppc/include/asm/cache.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_CACHE_H
-#define _ASM_PPC_CACHE_H
+#ifndef ASM__PPC__CACHE_H
+#define ASM__PPC__CACHE_H
 
-#endif /* _ASM_PPC_CACHE_H */
+#endif /* ASM__PPC__CACHE_H */
diff --git a/xen/arch/ppc/include/asm/config.h b/xen/arch/ppc/include/asm/config.h
index 148fb3074d..e472a54689 100644
--- a/xen/arch/ppc/include/asm/config.h
+++ b/xen/arch/ppc/include/asm/config.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __PPC_CONFIG_H__
-#define __PPC_CONFIG_H__
+#ifndef ASM__PPC__CONFIG_H
+#define ASM__PPC__CONFIG_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -58,7 +58,7 @@
 /* ELFv2 ABI mandates 16 byte alignment */
 #define STACK_ALIGN 16
 
-#endif /* __PPC_CONFIG_H__ */
+#endif /* ASM__PPC__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/ppc/include/asm/cpufeature.h b/xen/arch/ppc/include/asm/cpufeature.h
index 1c5946512b..3555a3257f 100644
--- a/xen/arch/ppc/include/asm/cpufeature.h
+++ b/xen/arch/ppc/include/asm/cpufeature.h
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_CPUFEATURE_H__
-#define __ASM_PPC_CPUFEATURE_H__
+#ifndef ASM__PPC__CPUFEATURE_H
+#define ASM__PPC__CPUFEATURE_H
 
 static inline int cpu_nr_siblings(unsigned int cpu)
 {
     return 1;
 }
 
-#endif /* __ASM_PPC_CPUFEATURE_H__ */
+#endif /* ASM__PPC__CPUFEATURE_H */
diff --git a/xen/arch/ppc/include/asm/current.h b/xen/arch/ppc/include/asm/current.h
index e329a548e6..9400c62fcc 100644
--- a/xen/arch/ppc/include/asm/current.h
+++ b/xen/arch/ppc/include/asm/current.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_CURRENT_H__
-#define __ASM_PPC_CURRENT_H__
+#ifndef ASM__PPC__CURRENT_H
+#define ASM__PPC__CURRENT_H
 
 #include <xen/percpu.h>
 
@@ -46,4 +46,4 @@ static inline struct cpu_info *get_cpu_info(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_PPC_CURRENT_H__ */
+#endif /* ASM__PPC__CURRENT_H */
diff --git a/xen/arch/ppc/include/asm/domain.h b/xen/arch/ppc/include/asm/domain.h
index 3a447272c6..66261bdf5a 100644
--- a/xen/arch/ppc/include/asm/domain.h
+++ b/xen/arch/ppc/include/asm/domain.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_DOMAIN_H__
-#define __ASM_PPC_DOMAIN_H__
+#ifndef ASM__PPC__DOMAIN_H
+#define ASM__PPC__DOMAIN_H
 
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
@@ -42,4 +42,4 @@ static inline void update_guest_memory_policy(struct vcpu *v,
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
-#endif /* __ASM_PPC_DOMAIN_H__ */
+#endif /* ASM__PPC__DOMAIN_H */
diff --git a/xen/arch/ppc/include/asm/early_printk.h b/xen/arch/ppc/include/asm/early_printk.h
index d1d8b416f4..61bc48921a 100644
--- a/xen/arch/ppc/include/asm/early_printk.h
+++ b/xen/arch/ppc/include/asm/early_printk.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_EARLY_PRINTK_H
-#define _ASM_PPC_EARLY_PRINTK_H
+#ifndef ASM__PPC__EARLY_PRINTK_H
+#define ASM__PPC__EARLY_PRINTK_H
 
 #include <xen/early_printk.h>
 
@@ -12,4 +12,4 @@ static inline void early_printk_init(void (*putchar)(char)) {}
 static inline void early_printk(const char *s) {}
 #endif
 
-#endif /* _ASM_PPC_EARLY_PRINTK_H */
+#endif /* ASM__PPC__EARLY_PRINTK_H */
diff --git a/xen/arch/ppc/include/asm/event.h b/xen/arch/ppc/include/asm/event.h
index 1b95ee4f61..10f3eaa5fa 100644
--- a/xen/arch/ppc/include/asm/event.h
+++ b/xen/arch/ppc/include/asm/event.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_EVENT_H__
-#define __ASM_PPC_EVENT_H__
+#ifndef ASM__PPC__EVENT_H
+#define ASM__PPC__EVENT_H
 
 #include <xen/lib.h>
 
@@ -33,4 +33,4 @@ static inline void local_event_delivery_enable(void)
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_PPC_EVENT_H__ */
+#endif /* ASM__PPC__EVENT_H */
diff --git a/xen/arch/ppc/include/asm/flushtlb.h b/xen/arch/ppc/include/asm/flushtlb.h
index afcb740783..39a8f04695 100644
--- a/xen/arch/ppc/include/asm/flushtlb.h
+++ b/xen/arch/ppc/include/asm/flushtlb.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_FLUSHTLB_H__
-#define __ASM_PPC_FLUSHTLB_H__
+#ifndef ASM__PPC__FLUSHTLB_H
+#define ASM__PPC__FLUSHTLB_H
 
 #include <xen/cpumask.h>
 
@@ -21,4 +21,4 @@ static inline void page_set_tlbflush_timestamp(struct page_info *page)
 /* Flush specified CPUs' TLBs */
 void arch_flush_tlb_mask(const cpumask_t *mask);
 
-#endif /* __ASM_PPC_FLUSHTLB_H__ */
+#endif /* ASM__PPC__FLUSHTLB_H */
diff --git a/xen/arch/ppc/include/asm/guest_access.h b/xen/arch/ppc/include/asm/guest_access.h
index 6546931911..a4531b0e19 100644
--- a/xen/arch/ppc/include/asm/guest_access.h
+++ b/xen/arch/ppc/include/asm/guest_access.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_GUEST_ACCESS_H__
-#define __ASM_PPC_GUEST_ACCESS_H__
+#ifndef ASM__PPC__GUEST_ACCESS_H
+#define ASM__PPC__GUEST_ACCESS_H
 
 #include <xen/mm.h>
 
@@ -65,4 +65,4 @@ static inline int access_guest_memory_by_gpa(
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_PPC_GUEST_ACCESS_H__ */
+#endif /* ASM__PPC__GUEST_ACCESS_H */
diff --git a/xen/arch/ppc/include/asm/guest_atomics.h b/xen/arch/ppc/include/asm/guest_atomics.h
index 1190e10bbb..62b229c2dc 100644
--- a/xen/arch/ppc/include/asm/guest_atomics.h
+++ b/xen/arch/ppc/include/asm/guest_atomics.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_GUEST_ATOMICS_H__
-#define __ASM_PPC_GUEST_ATOMICS_H__
+#ifndef ASM__PPC__GUEST_ATOMICS_H
+#define ASM__PPC__GUEST_ATOMICS_H
 
 #include <xen/lib.h>
 
@@ -20,4 +20,4 @@
 #define guest_test_and_clear_bit(d, nr, p)  unimplemented_guest_bit_op(d, nr, p)
 #define guest_test_and_change_bit(d, nr, p) unimplemented_guest_bit_op(d, nr, p)
 
-#endif /* __ASM_PPC_GUEST_ATOMICS_H__ */
+#endif /* ASM__PPC__GUEST_ATOMICS_H */
diff --git a/xen/arch/ppc/include/asm/io.h b/xen/arch/ppc/include/asm/io.h
index 85b5b27157..5135678f61 100644
--- a/xen/arch/ppc/include/asm/io.h
+++ b/xen/arch/ppc/include/asm/io.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IO_H__
-#define __ASM_PPC_IO_H__
+#ifndef ASM__PPC__IO_H
+#define ASM__PPC__IO_H
 
 #include <xen/lib.h>
 
@@ -13,4 +13,4 @@
 #define writew(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 #define writel(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 
-#endif /* __ASM_PPC_IO_H__ */
+#endif /* ASM__PPC__IO_H */
diff --git a/xen/arch/ppc/include/asm/iommu.h b/xen/arch/ppc/include/asm/iommu.h
index 024ead3473..c28c9897f9 100644
--- a/xen/arch/ppc/include/asm/iommu.h
+++ b/xen/arch/ppc/include/asm/iommu.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IOMMU_H__
-#define __ASM_PPC_IOMMU_H__
+#ifndef ASM__PPC__IOMMU_H
+#define ASM__PPC__IOMMU_H
 
 struct arch_iommu {
 };
 
-#endif /* __ASM_PPC_IOMMU_H__ */
+#endif /* ASM__PPC__IOMMU_H */
diff --git a/xen/arch/ppc/include/asm/irq.h b/xen/arch/ppc/include/asm/irq.h
index 5c37d0cf25..ceddf645ed 100644
--- a/xen/arch/ppc/include/asm/irq.h
+++ b/xen/arch/ppc/include/asm/irq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IRQ_H__
-#define __ASM_PPC_IRQ_H__
+#ifndef ASM__PPC__IRQ_H
+#define ASM__PPC__IRQ_H
 
 #include <xen/lib.h>
 #include <xen/device_tree.h>
@@ -30,4 +30,4 @@ static inline int platform_get_irq(const struct dt_device_node *device, int inde
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_PPC_IRQ_H__ */
+#endif /* ASM__PPC__IRQ_H */
diff --git a/xen/arch/ppc/include/asm/memory.h b/xen/arch/ppc/include/asm/memory.h
index 57310eb690..9ddf9f8a50 100644
--- a/xen/arch/ppc/include/asm/memory.h
+++ b/xen/arch/ppc/include/asm/memory.h
@@ -5,8 +5,8 @@
  * Authors: Jimi Xenidis <jimix@watson.ibm.com>
  */
 
-#ifndef _ASM_MEMORY_H_
-#define _ASM_MEMORY_H_
+#ifndef ASM__PPC__MEMORY_H
+#define ASM__PPC__MEMORY_H
 
 #define PPC_ATOMIC_ENTRY_BARRIER "sync\n"
 #define PPC_ATOMIC_EXIT_BARRIER  "sync\n"
diff --git a/xen/arch/ppc/include/asm/mm.h b/xen/arch/ppc/include/asm/mm.h
index a433936076..acc2be8eed 100644
--- a/xen/arch/ppc/include/asm/mm.h
+++ b/xen/arch/ppc/include/asm/mm.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_MM_H
-#define _ASM_PPC_MM_H
+#ifndef ASM__PPC__MM_H
+#define ASM__PPC__MM_H
 
 #include <public/xen.h>
 #include <xen/pdx.h>
@@ -256,4 +256,4 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return true;
 }
 
-#endif /* _ASM_PPC_MM_H */
+#endif /* ASM__PPC__MM_H */
diff --git a/xen/arch/ppc/include/asm/monitor.h b/xen/arch/ppc/include/asm/monitor.h
index 89000dacc6..8fe1f081bc 100644
--- a/xen/arch/ppc/include/asm/monitor.h
+++ b/xen/arch/ppc/include/asm/monitor.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Derived from xen/arch/arm/include/asm/monitor.h */
-#ifndef __ASM_PPC_MONITOR_H__
-#define __ASM_PPC_MONITOR_H__
+#ifndef ASM__PPC__MONITOR_H
+#define ASM__PPC__MONITOR_H
 
 #include <public/domctl.h>
 #include <xen/errno.h>
@@ -14,4 +14,4 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
     return 0;
 }
 
-#endif /* __ASM_PPC_MONITOR_H__ */
+#endif /* ASM__PPC__MONITOR_H */
diff --git a/xen/arch/ppc/include/asm/msr.h b/xen/arch/ppc/include/asm/msr.h
index 144511e5c3..796158c6f9 100644
--- a/xen/arch/ppc/include/asm/msr.h
+++ b/xen/arch/ppc/include/asm/msr.h
@@ -7,8 +7,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_PPC_MSR_H
-#define _ASM_PPC_MSR_H
+#ifndef ASM__PPC__MSR_H
+#define ASM__PPC__MSR_H
 
 #include <xen/const.h>
 
@@ -48,4 +48,4 @@
 #define MSR_TRAP_NEXT   _AC(0x0000000000010000, ULL) /* PC is next instruction */
 #define MSR_TRAP_BITS  (MSR_TRAP_FE|MSR_TRAP_IOP|MSR_TRAP_PRIV|MSR_TRAP)
 
-#endif /* _ASM_PPC_MSR_H */
+#endif /* ASM__PPC__MSR_H */
diff --git a/xen/arch/ppc/include/asm/nospec.h b/xen/arch/ppc/include/asm/nospec.h
index b97322e48d..8f5be95ddd 100644
--- a/xen/arch/ppc/include/asm/nospec.h
+++ b/xen/arch/ppc/include/asm/nospec.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* From arch/arm/include/asm/nospec.h. */
-#ifndef __ASM_PPC_NOSPEC_H__
-#define __ASM_PPC_NOSPEC_H__
+#ifndef ASM__PPC__NOSPEC_H
+#define ASM__PPC__NOSPEC_H
 
 static inline bool evaluate_nospec(bool condition)
 {
@@ -12,4 +12,4 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* __ASM_PPC_NOSPEC_H__ */
+#endif /* ASM__PPC__NOSPEC_H */
diff --git a/xen/arch/ppc/include/asm/opal-api.h b/xen/arch/ppc/include/asm/opal-api.h
index 8790246f48..2507f6c96a 100644
--- a/xen/arch/ppc/include/asm/opal-api.h
+++ b/xen/arch/ppc/include/asm/opal-api.h
@@ -5,8 +5,8 @@
  * Copyright 2011-2015 IBM Corp.
  */
 
-#ifndef __OPAL_API_H
-#define __OPAL_API_H
+#ifndef ASM__PPC__OPAL_API_H
+#define ASM__PPC__OPAL_API_H
 
 /****** OPAL APIs ******/
 
@@ -1187,4 +1187,4 @@ struct opal_mpipl_fadump {
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __OPAL_API_H */
+#endif /* ASM__PPC__OPAL_API_H */
diff --git a/xen/arch/ppc/include/asm/p2m.h b/xen/arch/ppc/include/asm/p2m.h
index f144ef8e1a..9649d24621 100644
--- a/xen/arch/ppc/include/asm/p2m.h
+++ b/xen/arch/ppc/include/asm/p2m.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PPC_P2M_H__
-#define __ASM_PPC_P2M_H__
+#ifndef ASM__PPC__P2M_H
+#define ASM__PPC__P2M_H
 
 #include <asm/page-bits.h>
 
@@ -93,4 +93,4 @@ static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
     /* Not supported on PPC. */
 }
 
-#endif /* __ASM_PPC_P2M_H__ */
+#endif /* ASM__PPC__P2M_H */
diff --git a/xen/arch/ppc/include/asm/page-bits.h b/xen/arch/ppc/include/asm/page-bits.h
index 0286177520..07c7314dac 100644
--- a/xen/arch/ppc/include/asm/page-bits.h
+++ b/xen/arch/ppc/include/asm/page-bits.h
@@ -1,8 +1,8 @@
-#ifndef __PPC_PAGE_BITS_H__
-#define __PPC_PAGE_BITS_H__
+#ifndef ASM__PPC__PAGE_BITS_H
+#define ASM__PPC__PAGE_BITS_H
 
 #define PAGE_SHIFT              16 /* 64 KiB Pages */
 #define PADDR_BITS              53
 #define VADDR_BITS              52
 
-#endif /* __PPC_PAGE_BITS_H__ */
+#endif /* ASM__PPC__PAGE_BITS_H */
diff --git a/xen/arch/ppc/include/asm/page.h b/xen/arch/ppc/include/asm/page.h
index 6d4cd2611c..5bca13079e 100644
--- a/xen/arch/ppc/include/asm/page.h
+++ b/xen/arch/ppc/include/asm/page.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_PAGE_H
-#define _ASM_PPC_PAGE_H
+#ifndef ASM__PPC__PAGE_H
+#define ASM__PPC__PAGE_H
 
 #include <xen/bitops.h>
 #include <xen/types.h>
@@ -196,4 +196,4 @@ static inline void flush_page_to_ram(unsigned long mfn, bool sync_icache)
     BUG_ON("unimplemented");
 }
 
-#endif /* _ASM_PPC_PAGE_H */
+#endif /* ASM__PPC__PAGE_H */
diff --git a/xen/arch/ppc/include/asm/processor.h b/xen/arch/ppc/include/asm/processor.h
index a01b62b8a4..e60278d112 100644
--- a/xen/arch/ppc/include/asm/processor.h
+++ b/xen/arch/ppc/include/asm/processor.h
@@ -9,8 +9,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_PPC_PROCESSOR_H
-#define _ASM_PPC_PROCESSOR_H
+#ifndef ASM__PPC__PROCESSOR_H
+#define ASM__PPC__PROCESSOR_H
 
 #define IOBMP_BYTES          8192
 #define IOBMP_INVALID_OFFSET 0x8000
@@ -221,4 +221,4 @@ static inline void noreturn die(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_PPC_PROCESSOR_H */
+#endif /* ASM__PPC__PROCESSOR_H */
diff --git a/xen/arch/ppc/include/asm/regs.h b/xen/arch/ppc/include/asm/regs.h
index cbf1a9c8e4..827eb48ca1 100644
--- a/xen/arch/ppc/include/asm/regs.h
+++ b/xen/arch/ppc/include/asm/regs.h
@@ -6,8 +6,8 @@
  *          Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
  */
 
-#ifndef _ASM_REG_DEFS_H_
-#define _ASM_REG_DEFS_H_
+#ifndef ASM__PPC__REGS_H
+#define ASM__PPC__REGS_H
 
 /* Special Purpose Registers */
 #define SPRN_VRSAVE 256
@@ -121,4 +121,4 @@
 #define   LPCR_UPRT		_AC(0x0000000000400000, UL)      /* Use Process Table (ISA 3) */
 #define   LPCR_HR		_AC(0x0000000000100000, UL)
 
-#endif /* _ASM_REG_DEFS_H_ */
+#endif /* ASM__PPC__REGS_H */
diff --git a/xen/arch/ppc/include/asm/setup.h b/xen/arch/ppc/include/asm/setup.h
index e4f64879b6..34586d0965 100644
--- a/xen/arch/ppc/include/asm/setup.h
+++ b/xen/arch/ppc/include/asm/setup.h
@@ -1,6 +1,6 @@
-#ifndef __ASM_PPC_SETUP_H__
-#define __ASM_PPC_SETUP_H__
+#ifndef ASM__PPC__SETUP_H
+#define ASM__PPC__SETUP_H
 
 #define max_init_domid (0)
 
-#endif /* __ASM_PPC_SETUP_H__ */
+#endif /* ASM__PPC__SETUP_H */
diff --git a/xen/arch/ppc/include/asm/smp.h b/xen/arch/ppc/include/asm/smp.h
index 7b1517ce18..fb61b8daa4 100644
--- a/xen/arch/ppc/include/asm/smp.h
+++ b/xen/arch/ppc/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__PPC__SMP_H
+#define ASM__PPC__SMP_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
diff --git a/xen/arch/ppc/include/asm/spinlock.h b/xen/arch/ppc/include/asm/spinlock.h
index 4bdb4b1e98..890e48c6e6 100644
--- a/xen/arch/ppc/include/asm/spinlock.h
+++ b/xen/arch/ppc/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__PPC__SPINLOCK_H
+#define ASM__PPC__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__PPC__SPINLOCK_H */
diff --git a/xen/arch/ppc/include/asm/string.h b/xen/arch/ppc/include/asm/string.h
index 7a420e05e4..cf65ca1c73 100644
--- a/xen/arch/ppc/include/asm/string.h
+++ b/xen/arch/ppc/include/asm/string.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_STRING_H
-#define _ASM_PPC_STRING_H
+#ifndef ASM__PPC__STRING_H
+#define ASM__PPC__STRING_H
 
-#endif /* _ASM_PPC_STRING_H */
+#endif /* ASM__PPC__STRING_H */
diff --git a/xen/arch/ppc/include/asm/system.h b/xen/arch/ppc/include/asm/system.h
index a17072bafd..e69a237d5e 100644
--- a/xen/arch/ppc/include/asm/system.h
+++ b/xen/arch/ppc/include/asm/system.h
@@ -7,8 +7,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_SYSTEM_H_
-#define _ASM_SYSTEM_H_
+#ifndef ASM__PPC__SYSTEM_H
+#define ASM__PPC__SYSTEM_H
 
 #include <xen/lib.h>
 #include <asm/memory.h>
diff --git a/xen/arch/ppc/include/asm/time.h b/xen/arch/ppc/include/asm/time.h
index f23eec173e..f0d426a26a 100644
--- a/xen/arch/ppc/include/asm/time.h
+++ b/xen/arch/ppc/include/asm/time.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_TIME_H__
-#define __ASM_PPC_TIME_H__
+#ifndef ASM__PPC__TIME_H
+#define ASM__PPC__TIME_H
 
 #include <xen/bug.h>
 #include <asm/processor.h>
@@ -20,4 +20,4 @@ static inline cycles_t get_cycles(void)
     return mfspr(SPRN_TBRL);
 }
 
-#endif /* __ASM_PPC_TIME_H__ */
+#endif /* ASM__PPC__TIME_H */
diff --git a/xen/arch/ppc/include/asm/types.h b/xen/arch/ppc/include/asm/types.h
index ffaf378a4d..1abd074489 100644
--- a/xen/arch/ppc/include/asm/types.h
+++ b/xen/arch/ppc/include/asm/types.h
@@ -1,11 +1,11 @@
 /* from xen/arch/x86/include/asm/types.h */
 
-#ifndef _ASM_PPC_TYPES_H
-#define _ASM_PPC_TYPES_H
+#ifndef ASM__PPC__TYPES_H
+#define ASM__PPC__TYPES_H
 
 typedef unsigned long paddr_t;
 typedef unsigned long vaddr_t;
 #define INVALID_PADDR (~0UL)
 #define PRIpaddr "016lx"
 
-#endif /* _ASM_PPC_TYPES_H */
+#endif /* ASM__PPC__TYPES_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:19:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:19:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809340.1221712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKo2-0007vd-D6; Thu, 03 Oct 2024 12:19:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809340.1221712; Thu, 03 Oct 2024 12: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 1swKo1-0007py-Kb; Thu, 03 Oct 2024 12:19:41 +0000
Received: by outflank-mailman (input) for mailman id 809340;
 Thu, 03 Oct 2024 12:19: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnw-00043W-OA
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:36 +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 c0fea033-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:36 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a93b2070e0cso101038966b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:36 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0fea033-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957975; x=1728562775; 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=mwL1uhJmN7KffHDYwBpDV67hA/1FIcvi3fYvuqYkXWg=;
        b=BJw58PAKT31hj83RKP9nmYCqHQX2AN/AC4676ekDKMXouYk5fW/gqHbiQtkCT5CqEi
         iJ4t7RmRPWo+ExsqxfbRLzNS1IgL5Eq5pfNkv8ptSUqFplEH/DB9TxGuEnTE3U73mLSd
         prNpPCijdgfHlYu2hAu00+fQBvCkauiOD6I2s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957975; x=1728562775;
        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=mwL1uhJmN7KffHDYwBpDV67hA/1FIcvi3fYvuqYkXWg=;
        b=pYjs3ivVTaSmdUdcuVb7LapbJfR+Vg0XEi7++iOaSTCfvm4cJTzpotVQiJ+mTCtLbX
         9NJN0hp78S91E5ZXAV3sYHj8NYgHmbvmqUnf7RSQnIseLz374f8DtuOAWSnP1sqzFowG
         KP8Bd9SFbCl2sn2UdbCnqe+CO7/vyX+IPlok+6AjwVaJiv3ELB9YgbzXp5yEbgzjf4dh
         27Mugj54m9Qx6wHUY00xyRP3zbE1rfDecuLu8M1qAQOXWP9QffRPyw2hhA24lPU7Mf63
         Na4HjWyni63E4I/sphS0LNo/L7YNWoSqnCeFZrhk8gocZk+Qo78gpqTk7uxu2hcbzTKv
         38ig==
X-Gm-Message-State: AOJu0YykMsI97BmVnCtvWRpOm5luU5P3mUTVGpKylz+hCmGQhK6/Np85
	qXacFz9KWXMGEANCrJFTjBjuCxtub2sAbS/vHiLrCUmApupComI/w8F5lq+r/YsESvTgQQvBYOG
	m
X-Google-Smtp-Source: AGHT+IGszONFKy6nKyv+TWrRRRoznyNuVBvnbneNZw/I4ybkDE9AU52qzBaBnLVx48hEwl+4Wepl8w==
X-Received: by 2002:a17:907:6e8a:b0:a8a:792c:4116 with SMTP id a640c23a62f3a-a98f834cdf6mr566471266b.40.1727957975316;
        Thu, 03 Oct 2024 05:19:35 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	Juergen Gross <jgross@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH 17/20] xen: Update header guards - Scheduling
Date: Thu,  3 Oct 2024 13:19:05 +0100
Message-Id: <20241003121908.362888-18-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to scheduling.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/common/sched/private.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/common/sched/private.h b/xen/common/sched/private.h
index c0e7c96d24..02ab905412 100644
--- a/xen/common/sched/private.h
+++ b/xen/common/sched/private.h
@@ -5,8 +5,8 @@
  * Portions by Mark Williamson are (C) 2004 Intel Research Cambridge
  */
 
-#ifndef __XEN_SCHED_IF_H__
-#define __XEN_SCHED_IF_H__
+#ifndef COMMON__SCHED__PRIVATE_H
+#define COMMON__SCHED__PRIVATE_H
 
 #include <xen/err.h>
 #include <xen/list.h>
@@ -666,4 +666,4 @@ void cpupool_put(struct cpupool *pool);
 int cpupool_add_domain(struct domain *d, unsigned int poolid);
 void cpupool_rm_domain(struct domain *d);
 
-#endif /* __XEN_SCHED_IF_H__ */
+#endif /* COMMON__SCHED__PRIVATE_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:28:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:28:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809406.1221740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKwF-000766-0a; Thu, 03 Oct 2024 12:28:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809406.1221740; Thu, 03 Oct 2024 12:28: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 1swKwE-00075z-Sz; Thu, 03 Oct 2024 12:28:10 +0000
Received: by outflank-mailman (input) for mailman id 809406;
 Thu, 03 Oct 2024 12:28: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnz-00043W-Nw
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:39 +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 c2883895-8181-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:19:38 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c42f406e29so1172023a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:38 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2883895-8181-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957978; x=1728562778; 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=8sG+uwolPFDTJ+3qXbxOoScuyE6ezletDmbjlj5s8lQ=;
        b=VGC/jGbMLNW/EfPCcnRCh9kZFiSWj4mgohXwENWhecxykOt8xePAUdqS8+rG9Ynh+I
         2RzfvEuTGQyWN7Ydn6p4JzFmDWvjm5yFL6LVcZmJbAQ2BjgOAlQuz8BEyxgp+c+y4YFx
         Gylka+O6Fz2gMipVQgdAle56r2bDslwn4ioUE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957978; x=1728562778;
        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=8sG+uwolPFDTJ+3qXbxOoScuyE6ezletDmbjlj5s8lQ=;
        b=Se+jWK7iPZqOz1OC0wvh2lvHSOBPCZexcU2bo3ntM6uMnEQc/UVHYISDcOgRYTdfKX
         3dhDSBPY/zYP/w30JX+EwcosZ/zWIq8DvQBbB6/7GLfT8X4g+VjnCzk4sT+157FkXU8Q
         sslXzu38CqXhcnijnP73y9tPRbJnOCV2s5BLS5vtvrQkHL80cylgdzIabmjFpT2zolqz
         mRQhTz/TQsDhehbSldEprsGW/dYrzHoTT3iNAxudY+MqfiorlfDRdJSx235Kx61bk6No
         xMg5/+338Igwi6SyBT/7Jm3dMmbmTafaL9BtSPX4hApctHqUNsWxRFQt0vq4ws70bZUV
         GWIg==
X-Gm-Message-State: AOJu0Yx6B4GlaBpiv6694Oox3jxd3EdHRdVjXQeAubWtHX2Ek2eCTlPR
	4SBxAC73YQsM+y4HY8RsR1y0IIu/wjUU0kAF6fhcPeRLob36v0J7pZlkQQpK1nJhmpRI4uKBLlU
	Z
X-Google-Smtp-Source: AGHT+IFkZAtkNT5ryg3lqMUfnh17Fnr1SocXR5d37yFUuL3AkCzi6UTEPF0saqUfta5c0fUSYcIkNA==
X-Received: by 2002:a17:907:1c88:b0:a93:d5d3:f860 with SMTP id a640c23a62f3a-a98f827620bmr656411266b.38.1727957977844;
        Thu, 03 Oct 2024 05:19:37 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 20/20] xen: Update header guards - XSM/Flask
Date: Thu,  3 Oct 2024 13:19:08 +0100
Message-Id: <20241003121908.362888-21-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to XSM/Flask.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xsm/dummy.h             | 6 +++---
 xen/include/xsm/xsm.h               | 4 ++--
 xen/xsm/flask/include/avc.h         | 6 +++---
 xen/xsm/flask/include/avc_ss.h      | 6 +++---
 xen/xsm/flask/include/conditional.h | 4 ++--
 xen/xsm/flask/include/objsec.h      | 6 +++---
 xen/xsm/flask/include/security.h    | 6 +++---
 xen/xsm/flask/private.h             | 6 +++---
 xen/xsm/flask/ss/avtab.h            | 6 +++---
 xen/xsm/flask/ss/conditional.h      | 6 +++---
 xen/xsm/flask/ss/constraint.h       | 6 +++---
 xen/xsm/flask/ss/context.h          | 6 +++---
 xen/xsm/flask/ss/ebitmap.h          | 6 +++---
 xen/xsm/flask/ss/hashtab.h          | 4 ++--
 xen/xsm/flask/ss/mls.h              | 4 ++--
 xen/xsm/flask/ss/mls_types.h        | 6 +++---
 xen/xsm/flask/ss/policydb.h         | 6 +++---
 xen/xsm/flask/ss/services.h         | 6 +++---
 xen/xsm/flask/ss/sidtab.h           | 6 +++---
 xen/xsm/flask/ss/symtab.h           | 6 +++---
 20 files changed, 56 insertions(+), 56 deletions(-)

diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
index 7956f27a29..19d838e1db 100644
--- a/xen/include/xsm/dummy.h
+++ b/xen/include/xsm/dummy.h
@@ -15,8 +15,8 @@
  *  value of action.
  */
 
-#ifndef __XEN_XSM_DUMMY_H__
-#define __XEN_XSM_DUMMY_H__
+#ifndef XSM__DUMMY_H
+#define XSM__DUMMY_H
 
 #include <xen/sched.h>
 #include <xsm/xsm.h>
@@ -847,4 +847,4 @@ static XSM_INLINE int cf_check xsm_domain_resource_map(
     return xsm_default_action(action, current->domain, d);
 }
 
-#endif /* __XEN_XSM_DUMMY_H__ */
+#endif /* XSM__DUMMY_H */
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731..24aa9777db 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -12,8 +12,8 @@
  *  as published by the Free Software Foundation.
  */
 
-#ifndef __XSM_H__
-#define __XSM_H__
+#ifndef XSM__XSM_H
+#define XSM__XSM_H
 
 #include <xen/alternative-call.h>
 #include <xen/sched.h>
diff --git a/xen/xsm/flask/include/avc.h b/xen/xsm/flask/include/avc.h
index e29949f5a8..7510415f2a 100644
--- a/xen/xsm/flask/include/avc.h
+++ b/xen/xsm/flask/include/avc.h
@@ -6,8 +6,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _FLASK_AVC_H_
-#define _FLASK_AVC_H_
+#ifndef XSM__FLASK__INCLUDE__AVC_H
+#define XSM__FLASK__INCLUDE__AVC_H
 
 #include <xen/errno.h>
 #include <xen/lib.h>
@@ -100,5 +100,5 @@ extern unsigned int avc_cache_threshold;
 DECLARE_PER_CPU(struct avc_cache_stats, avc_cache_stats);
 #endif
 
-#endif /* _FLASK_AVC_H_ */
+#endif /* XSM__FLASK__INCLUDE__AVC_H */
 
diff --git a/xen/xsm/flask/include/avc_ss.h b/xen/xsm/flask/include/avc_ss.h
index a3d7d1ef07..dfc8e148e9 100644
--- a/xen/xsm/flask/include/avc_ss.h
+++ b/xen/xsm/flask/include/avc_ss.h
@@ -3,8 +3,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _FLASK_AVC_SS_H_
-#define _FLASK_AVC_SS_H_
+#ifndef XSM__FLASK__INCLUDE__AVC_SS_H
+#define XSM__FLASK__INCLUDE__AVC_SS_H
 
 #include "flask.h"
 
@@ -25,5 +25,5 @@ struct selinux_class_perm {
 
 extern const struct selinux_class_perm selinux_class_perm;
 
-#endif /* _FLASK_AVC_SS_H_ */
+#endif /* XSM__FLASK__INCLUDE__AVC_SS_H */
 
diff --git a/xen/xsm/flask/include/conditional.h b/xen/xsm/flask/include/conditional.h
index 879d40e147..4592875731 100644
--- a/xen/xsm/flask/include/conditional.h
+++ b/xen/xsm/flask/include/conditional.h
@@ -10,8 +10,8 @@
  *    the Free Software Foundation, version 2.
  */
 
-#ifndef _FLASK_CONDITIONAL_H_
-#define _FLASK_CONDITIONAL_H_
+#ifndef XSM__FLASK__INCLUDE__CONDITIONAL_H
+#define XSM__FLASK__INCLUDE__CONDITIONAL_H
 
 #include <xen/types.h>
 
diff --git a/xen/xsm/flask/include/objsec.h b/xen/xsm/flask/include/objsec.h
index b576a5dd43..54be75bcc3 100644
--- a/xen/xsm/flask/include/objsec.h
+++ b/xen/xsm/flask/include/objsec.h
@@ -10,8 +10,8 @@
  *      as published by the Free Software Foundation.
  */
 
-#ifndef _FLASK_OBJSEC_H_
-#define _FLASK_OBJSEC_H_
+#ifndef XSM__FLASK__INCLUDE__OBJSEC_H
+#define XSM__FLASK__INCLUDE__OBJSEC_H
 
 #include <xen/sched.h>
 #include "flask.h"
@@ -23,4 +23,4 @@ struct domain_security_struct {
     u32 target_sid;        /* SID for device model target domain */
 };
 
-#endif /* _FLASK_OBJSEC_H_ */
+#endif /* XSM__FLASK__INCLUDE__OBJSEC_H */
diff --git a/xen/xsm/flask/include/security.h b/xen/xsm/flask/include/security.h
index ec8b442a8f..f6806b28cb 100644
--- a/xen/xsm/flask/include/security.h
+++ b/xen/xsm/flask/include/security.h
@@ -7,8 +7,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _FLASK_SECURITY_H_
-#define _FLASK_SECURITY_H_
+#ifndef XSM__FLASK__INCLUDE__SECURITY_H
+#define XSM__FLASK__INCLUDE__SECURITY_H
 
 #include "flask.h"
 
@@ -107,4 +107,4 @@ int security_ocontext_add(u32 ocontext, unsigned long low,
 int security_ocontext_del(u32 ocontext, unsigned long low, unsigned long high);
 
 int security_devicetree_setlabel(char *path, u32 sid);
-#endif /* _FLASK_SECURITY_H_ */
+#endif /* XSM__FLASK__INCLUDE__SECURITY_H */
diff --git a/xen/xsm/flask/private.h b/xen/xsm/flask/private.h
index 429f213cce..93022627dc 100644
--- a/xen/xsm/flask/private.h
+++ b/xen/xsm/flask/private.h
@@ -1,9 +1,9 @@
-#ifndef XSM_FLASK_PRIVATE
-#define XSM_FLASK_PRIVATE
+#ifndef XSM__FLASK__PRIVATE_H
+#define XSM__FLASK__PRIVATE_H
 
 #include <public/xen.h>
 
 long cf_check do_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op);
 int cf_check compat_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op);
 
-#endif /* XSM_FLASK_PRIVATE */
+#endif /* XSM__FLASK__PRIVATE_H */
diff --git a/xen/xsm/flask/ss/avtab.h b/xen/xsm/flask/ss/avtab.h
index 591604f927..cb595e1250 100644
--- a/xen/xsm/flask/ss/avtab.h
+++ b/xen/xsm/flask/ss/avtab.h
@@ -23,8 +23,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_AVTAB_H_
-#define _SS_AVTAB_H_
+#ifndef XSM__FLASK__SS__AVTAB_H
+#define XSM__FLASK__SS__AVTAB_H
 
 struct avtab_key {
     u16 source_type;    /* source type */
@@ -87,5 +87,5 @@ struct avtab_node *avtab_search_node_next(struct avtab_node *node,
 #define MAX_AVTAB_HASH_MASK (MAX_AVTAB_HASH_BUCKETS-1)
 #define MAX_AVTAB_SIZE MAX_AVTAB_HASH_BUCKETS
 
-#endif    /* _SS_AVTAB_H_ */
+#endif    /* XSM__FLASK__SS__AVTAB_H */
 
diff --git a/xen/xsm/flask/ss/conditional.h b/xen/xsm/flask/ss/conditional.h
index 500fe4305a..4f966c82ed 100644
--- a/xen/xsm/flask/ss/conditional.h
+++ b/xen/xsm/flask/ss/conditional.h
@@ -7,8 +7,8 @@
  *    the Free Software Foundation, version 2.
  */
 
-#ifndef _CONDITIONAL_H_
-#define _CONDITIONAL_H_
+#ifndef XSM__FLASK__SS__CONDITIONAL_H
+#define XSM__FLASK__SS__CONDITIONAL_H
 
 #include "avtab.h"
 #include "symtab.h"
@@ -74,4 +74,4 @@ void cond_compute_av(struct avtab *ctab, struct avtab_key *key, struct av_decisi
 
 int evaluate_cond_node(struct policydb *p, struct cond_node *node);
 
-#endif /* _CONDITIONAL_H_ */
+#endif /* XSM__FLASK__SS__CONDITIONAL_H */
diff --git a/xen/xsm/flask/ss/constraint.h b/xen/xsm/flask/ss/constraint.h
index 0fa5b31237..a0a2156017 100644
--- a/xen/xsm/flask/ss/constraint.h
+++ b/xen/xsm/flask/ss/constraint.h
@@ -12,8 +12,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_CONSTRAINT_H_
-#define _SS_CONSTRAINT_H_
+#ifndef XSM__FLASK__SS__CONSTRAINT_H
+#define XSM__FLASK__SS__CONSTRAINT_H
 
 #include "ebitmap.h"
 
@@ -58,4 +58,4 @@ struct constraint_node {
     struct constraint_node *next;    /* next constraint */
 };
 
-#endif    /* _SS_CONSTRAINT_H_ */
+#endif    /* XSM__FLASK__SS__CONSTRAINT_H */
diff --git a/xen/xsm/flask/ss/context.h b/xen/xsm/flask/ss/context.h
index 311edf8794..d868141699 100644
--- a/xen/xsm/flask/ss/context.h
+++ b/xen/xsm/flask/ss/context.h
@@ -15,8 +15,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_CONTEXT_H_
-#define _SS_CONTEXT_H_
+#ifndef XSM__FLASK__SS__CONTEXT_H
+#define XSM__FLASK__SS__CONTEXT_H
 
 #include "ebitmap.h"
 #include "mls_types.h"
@@ -129,5 +129,5 @@ static inline int context_cmp(struct context *c1, struct context *c2)
         mls_context_cmp(c1, c2));
 }
 
-#endif    /* _SS_CONTEXT_H_ */
+#endif    /* XSM__FLASK__SS__CONTEXT_H */
 
diff --git a/xen/xsm/flask/ss/ebitmap.h b/xen/xsm/flask/ss/ebitmap.h
index 7b2da8179a..8a99f1dd70 100644
--- a/xen/xsm/flask/ss/ebitmap.h
+++ b/xen/xsm/flask/ss/ebitmap.h
@@ -11,8 +11,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_EBITMAP_H_
-#define _SS_EBITMAP_H_
+#ifndef XSM__FLASK__SS__EBITMAP_H
+#define XSM__FLASK__SS__EBITMAP_H
 
 #include <xen/bitmap.h>
 #include <xen/bug.h>
@@ -127,4 +127,4 @@ int ebitmap_set_bit(struct ebitmap *e, unsigned long bit, int value);
 void ebitmap_destroy(struct ebitmap *e);
 int ebitmap_read(struct ebitmap *e, void *fp);
 
-#endif    /* _SS_EBITMAP_H_ */
+#endif    /* XSM__FLASK__SS__EBITMAP_H */
diff --git a/xen/xsm/flask/ss/hashtab.h b/xen/xsm/flask/ss/hashtab.h
index 44ed6c01cf..531b68c9b2 100644
--- a/xen/xsm/flask/ss/hashtab.h
+++ b/xen/xsm/flask/ss/hashtab.h
@@ -7,8 +7,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_HASHTAB_H_
-#define _SS_HASHTAB_H_
+#ifndef XSM__FLASK__SS__HASHTAB_H
+#define XSM__FLASK__SS__HASHTAB_H
 
 #define HASHTAB_MAX_NODES    0xffffffff
 
diff --git a/xen/xsm/flask/ss/mls.h b/xen/xsm/flask/ss/mls.h
index 39572bdf7a..d5cf00c7ae 100644
--- a/xen/xsm/flask/ss/mls.h
+++ b/xen/xsm/flask/ss/mls.h
@@ -11,8 +11,8 @@
  * Copyright (C) 2004-2006 Trusted Computer Solutions, Inc.
  */
 
-#ifndef _SS_MLS_H_
-#define _SS_MLS_H_
+#ifndef XSM__FLASK__SS__MLS_H
+#define XSM__FLASK__SS__MLS_H
 
 #include "context.h"
 #include "policydb.h"
diff --git a/xen/xsm/flask/ss/mls_types.h b/xen/xsm/flask/ss/mls_types.h
index 7199227312..fc392a559d 100644
--- a/xen/xsm/flask/ss/mls_types.h
+++ b/xen/xsm/flask/ss/mls_types.h
@@ -13,8 +13,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_MLS_TYPES_H_
-#define _SS_MLS_TYPES_H_
+#ifndef XSM__FLASK__SS__MLS_TYPES_H
+#define XSM__FLASK__SS__MLS_TYPES_H
 
 #include "security.h"
 
@@ -55,4 +55,4 @@ static inline int mls_level_dom(struct mls_level *l1, struct mls_level *l2)
 (mls_level_dom(&(r2).level[0], &(r1).level[0]) && \
  mls_level_dom(&(r1).level[1], &(r2).level[1]))
 
-#endif    /* _SS_MLS_TYPES_H_ */
+#endif    /* XSM__FLASK__SS__MLS_TYPES_H */
diff --git a/xen/xsm/flask/ss/policydb.h b/xen/xsm/flask/ss/policydb.h
index d3b409a554..8cfbd173b2 100644
--- a/xen/xsm/flask/ss/policydb.h
+++ b/xen/xsm/flask/ss/policydb.h
@@ -23,8 +23,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_POLICYDB_H_
-#define _SS_POLICYDB_H_
+#ifndef XSM__FLASK__SS__POLICYDB_H
+#define XSM__FLASK__SS__POLICYDB_H
 
 #include "symtab.h"
 #include "avtab.h"
@@ -292,5 +292,5 @@ static inline int next_entry(void *buf, struct policy_file *fp, size_t bytes)
     return 0;
 }
 
-#endif    /* _SS_POLICYDB_H_ */
+#endif    /* XSM__FLASK__SS__POLICYDB_H */
 
diff --git a/xen/xsm/flask/ss/services.h b/xen/xsm/flask/ss/services.h
index 43fb876a7c..6282107f47 100644
--- a/xen/xsm/flask/ss/services.h
+++ b/xen/xsm/flask/ss/services.h
@@ -3,13 +3,13 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_SERVICES_H_
-#define _SS_SERVICES_H_
+#ifndef XSM__FLASK__SS__SERVICES_H
+#define XSM__FLASK__SS__SERVICES_H
 
 #include "policydb.h"
 #include "sidtab.h"
 
 extern struct policydb policydb;
 
-#endif    /* _SS_SERVICES_H_ */
+#endif    /* XSM__FLASK__SS__SERVICES_H */
 
diff --git a/xen/xsm/flask/ss/sidtab.h b/xen/xsm/flask/ss/sidtab.h
index 0e48ec6eae..3f1e66334d 100644
--- a/xen/xsm/flask/ss/sidtab.h
+++ b/xen/xsm/flask/ss/sidtab.h
@@ -7,8 +7,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_SIDTAB_H_
-#define _SS_SIDTAB_H_
+#ifndef XSM__FLASK__SS__SIDTAB_H
+#define XSM__FLASK__SS__SIDTAB_H
 
 #include "context.h"
 #include <xen/spinlock.h>
@@ -50,4 +50,4 @@ void sidtab_destroy(struct sidtab *s);
 void sidtab_set(struct sidtab *dst, struct sidtab *src);
 void sidtab_shutdown(struct sidtab *s);
 
-#endif    /* _SS_SIDTAB_H_ */
+#endif    /* XSM__FLASK__SS__SIDTAB_H */
diff --git a/xen/xsm/flask/ss/symtab.h b/xen/xsm/flask/ss/symtab.h
index fc442a2f7e..ed0f0ca6b9 100644
--- a/xen/xsm/flask/ss/symtab.h
+++ b/xen/xsm/flask/ss/symtab.h
@@ -6,8 +6,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_SYMTAB_H_
-#define _SS_SYMTAB_H_
+#ifndef XSM__FLASK__SS__SYMTAB_H
+#define XSM__FLASK__SS__SYMTAB_H
 
 #include "hashtab.h"
 
@@ -18,6 +18,6 @@ struct symtab {
 
 int symtab_init(struct symtab *s, unsigned int size);
 
-#endif    /* _SS_SYMTAB_H_ */
+#endif    /* XSM__FLASK__SS__SYMTAB_H */
 
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:28:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:28:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809415.1221751 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKwU-0007cn-7o; Thu, 03 Oct 2024 12:28:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809415.1221751; Thu, 03 Oct 2024 12: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 1swKwU-0007bo-3V; Thu, 03 Oct 2024 12:28:26 +0000
Received: by outflank-mailman (input) for mailman id 809415;
 Thu, 03 Oct 2024 12: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnx-00043u-J4
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19: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 c0ae6fc3-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:35 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c5bca6603aso1096987a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:35 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0ae6fc3-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957975; x=1728562775; 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=ig/jx3h9dHpZQ51svxnNJO+Mhrf0xrweSMpcWRyQH4o=;
        b=ZNZF40x8kjHF5WEII8zJy7W77VbDCR5X0bqzH5V6KQbsbukmbyHAk2mhGkfXZ3eROz
         weHqjja8P7RwfJ/4SRlgL7LduzMYFVOERQ7ftAoFcghLYkAl3cg4Xdg+u1Wby03W8+sh
         3DR5E0FyAS4dD2JdlYwY3+4IGDXKlQqP+t4VU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957975; x=1728562775;
        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=ig/jx3h9dHpZQ51svxnNJO+Mhrf0xrweSMpcWRyQH4o=;
        b=NCCEngQwQS8wBTqvsiAtIPUdDnDLHFgnTadIdpwzCI/qPb7pQtO6bBBgydI1u3KBzB
         hiNxjOF/UnrmOKuEggICm5d0yEqxGMu8TjrgX0b6Z5Zen9jqHoKtvD8/lGi7e7Iy2YVU
         7ruse5r/BnGccgjqB/8fJtsB7zjjjBlSKL5Ax28PbJ+IbkMtv0fN3/bzwY2a10zwXDyb
         oUfazcmhkD8jWc3IQE6w5KshRHt17HRdmWHTxIPLC6z7qFvMTXaPfWoApFByDQbju3um
         AGHFlybuMU9onlfV7E6OcrLNowPrW8/0Hw/6ASl6SL8dP8eADtf2yMIIiVPBruTY3PKW
         MzdQ==
X-Gm-Message-State: AOJu0YzRbqdeMrjL1MOeJ6f3au8o2GoFBz6iSfnj825mV1mmbe06EixK
	JjquOfOyKA7pVoxifgHt+rvmW9UQAZ5Mwkl0USuGOTLtnZJhyqnEybw3Qu4+kW1ZuKhrv5fKg7s
	N
X-Google-Smtp-Source: AGHT+IFjwicSgQLDsgsPyddEr53ZGW79DGphRXNFKItOqqWwt9mZCaZqp/FrZO2iio0fIcpv3VrPnA==
X-Received: by 2002:a17:907:7f8e:b0:a8a:8c4c:3e2a with SMTP id a640c23a62f3a-a98f823472fmr507530966b.23.1727957974629;
        Thu, 03 Oct 2024 05:19:34 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH 16/20] xen: Update header guards - RISC-V
Date: Thu,  3 Oct 2024 13:19:04 +0100
Message-Id: <20241003121908.362888-17-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to RISC-V.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/riscv/include/asm/acpi.h           | 6 +++---
 xen/arch/riscv/include/asm/asm.h            | 6 +++---
 xen/arch/riscv/include/asm/atomic.h         | 6 +++---
 xen/arch/riscv/include/asm/bitops.h         | 6 +++---
 xen/arch/riscv/include/asm/bug.h            | 6 +++---
 xen/arch/riscv/include/asm/byteorder.h      | 6 +++---
 xen/arch/riscv/include/asm/cache.h          | 6 +++---
 xen/arch/riscv/include/asm/cmpxchg.h        | 6 +++---
 xen/arch/riscv/include/asm/config.h         | 6 +++---
 xen/arch/riscv/include/asm/cpufeature.h     | 6 +++---
 xen/arch/riscv/include/asm/csr.h            | 6 +++---
 xen/arch/riscv/include/asm/current.h        | 6 +++---
 xen/arch/riscv/include/asm/domain.h         | 6 +++---
 xen/arch/riscv/include/asm/early_printk.h   | 6 +++---
 xen/arch/riscv/include/asm/event.h          | 6 +++---
 xen/arch/riscv/include/asm/fence.h          | 6 +++---
 xen/arch/riscv/include/asm/fixmap.h         | 6 +++---
 xen/arch/riscv/include/asm/flushtlb.h       | 6 +++---
 xen/arch/riscv/include/asm/guest_access.h   | 6 +++---
 xen/arch/riscv/include/asm/guest_atomics.h  | 6 +++---
 xen/arch/riscv/include/asm/io.h             | 6 +++---
 xen/arch/riscv/include/asm/irq.h            | 6 +++---
 xen/arch/riscv/include/asm/mm.h             | 6 +++---
 xen/arch/riscv/include/asm/monitor.h        | 6 +++---
 xen/arch/riscv/include/asm/nospec.h         | 6 +++---
 xen/arch/riscv/include/asm/p2m.h            | 6 +++---
 xen/arch/riscv/include/asm/page-bits.h      | 6 +++---
 xen/arch/riscv/include/asm/page.h           | 6 +++---
 xen/arch/riscv/include/asm/pmap.h           | 6 +++---
 xen/arch/riscv/include/asm/processor.h      | 6 +++---
 xen/arch/riscv/include/asm/regs.h           | 6 +++---
 xen/arch/riscv/include/asm/riscv_encoding.h | 4 ++--
 xen/arch/riscv/include/asm/sbi.h            | 6 +++---
 xen/arch/riscv/include/asm/setup.h          | 6 +++---
 xen/arch/riscv/include/asm/smp.h            | 4 ++--
 xen/arch/riscv/include/asm/spinlock.h       | 6 +++---
 xen/arch/riscv/include/asm/string.h         | 6 +++---
 xen/arch/riscv/include/asm/system.h         | 6 +++---
 xen/arch/riscv/include/asm/time.h           | 6 +++---
 xen/arch/riscv/include/asm/traps.h          | 6 +++---
 xen/arch/riscv/include/asm/types.h          | 6 +++---
 41 files changed, 121 insertions(+), 121 deletions(-)

diff --git a/xen/arch/riscv/include/asm/acpi.h b/xen/arch/riscv/include/asm/acpi.h
index 3aef993d81..f0b5e90969 100644
--- a/xen/arch/riscv/include/asm/acpi.h
+++ b/xen/arch/riscv/include/asm/acpi.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef __ASM_RISCV_ACPI_H
-#define __ASM_RISCV_ACPI_H
+#ifndef ASM__RISCV__ACPI_H
+#define ASM__RISCV__ACPI_H
 
-#endif /* __ASM_RISCV_ACPI_H */
+#endif /* ASM__RISCV__ACPI_H */
diff --git a/xen/arch/riscv/include/asm/asm.h b/xen/arch/riscv/include/asm/asm.h
index 87a3fd250b..8b0403e2e4 100644
--- a/xen/arch/riscv/include/asm/asm.h
+++ b/xen/arch/riscv/include/asm/asm.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef _ASM_RISCV_ASM_H
-#define _ASM_RISCV_ASM_H
+#ifndef ASM__RISCV__ASM_H
+#define ASM__RISCV__ASM_H
 
 #ifdef __ASSEMBLY__
 #include <xen/linkage.h>
@@ -52,4 +52,4 @@
 #error "Unexpected __SIZEOF_SHORT__"
 #endif
 
-#endif /* _ASM_RISCV_ASM_H */
+#endif /* ASM__RISCV__ASM_H */
diff --git a/xen/arch/riscv/include/asm/atomic.h b/xen/arch/riscv/include/asm/atomic.h
index 9669a3286d..8e0425cea0 100644
--- a/xen/arch/riscv/include/asm/atomic.h
+++ b/xen/arch/riscv/include/asm/atomic.h
@@ -19,8 +19,8 @@
  * Copyright (C) 2024 Vates SAS
  */
 
-#ifndef _ASM_RISCV_ATOMIC_H
-#define _ASM_RISCV_ATOMIC_H
+#ifndef ASM__RISCV__ATOMIC_H
+#define ASM__RISCV__ATOMIC_H
 
 #include <xen/atomic.h>
 
@@ -266,7 +266,7 @@ ATOMIC_OPS()
 #undef ATOMIC_OPS
 #undef ATOMIC_OP
 
-#endif /* _ASM_RISCV_ATOMIC_H */
+#endif /* ASM__RISCV__ATOMIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bitops.h b/xen/arch/riscv/include/asm/bitops.h
index 7f7af3fda1..9a6f576187 100644
--- a/xen/arch/riscv/include/asm/bitops.h
+++ b/xen/arch/riscv/include/asm/bitops.h
@@ -1,8 +1,8 @@
 /* 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
+#ifndef ASM__RISCV__BITOPS_H
+#define ASM__RISCV__BITOPS_H
 
 #include <asm/system.h>
 
@@ -125,7 +125,7 @@ static inline void clear_bit(int nr, volatile void *p)
 #undef NOT
 #undef __AMO
 
-#endif /* _ASM_RISCV_BITOPS_H */
+#endif /* ASM__RISCV__BITOPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bug.h b/xen/arch/riscv/include/asm/bug.h
index e3d41f411a..fa18dba20e 100644
--- a/xen/arch/riscv/include/asm/bug.h
+++ b/xen/arch/riscv/include/asm/bug.h
@@ -4,8 +4,8 @@
  * Copyright (C) 2021-2023 Vates
  *
  */
-#ifndef _ASM_RISCV_BUG_H
-#define _ASM_RISCV_BUG_H
+#ifndef ASM__RISCV__BUG_H
+#define ASM__RISCV__BUG_H
 
 #ifndef __ASSEMBLY__
 
@@ -32,4 +32,4 @@
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_BUG_H */
+#endif /* ASM__RISCV__BUG_H */
diff --git a/xen/arch/riscv/include/asm/byteorder.h b/xen/arch/riscv/include/asm/byteorder.h
index 320a03c88f..8ca65e1b33 100644
--- a/xen/arch/riscv/include/asm/byteorder.h
+++ b/xen/arch/riscv/include/asm/byteorder.h
@@ -1,11 +1,11 @@
-#ifndef __ASM_RISCV_BYTEORDER_H__
-#define __ASM_RISCV_BYTEORDER_H__
+#ifndef ASM__RISCV__BYTEORDER_H
+#define ASM__RISCV__BYTEORDER_H
 
 #define __BYTEORDER_HAS_U64__
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_RISCV_BYTEORDER_H__ */
+#endif /* ASM__RISCV__BYTEORDER_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/cache.h b/xen/arch/riscv/include/asm/cache.h
index 69573eb051..9a9e5162ab 100644
--- a/xen/arch/riscv/include/asm/cache.h
+++ b/xen/arch/riscv/include/asm/cache.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef _ASM_RISCV_CACHE_H
-#define _ASM_RISCV_CACHE_H
+#ifndef ASM__RISCV__CACHE_H
+#define ASM__RISCV__CACHE_H
 
-#endif /* _ASM_RISCV_CACHE_H */
+#endif /* ASM__RISCV__CACHE_H */
diff --git a/xen/arch/riscv/include/asm/cmpxchg.h b/xen/arch/riscv/include/asm/cmpxchg.h
index 47d5299e62..662d3fd5d4 100644
--- a/xen/arch/riscv/include/asm/cmpxchg.h
+++ b/xen/arch/riscv/include/asm/cmpxchg.h
@@ -1,8 +1,8 @@
 /* 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
+#ifndef ASM__RISCV__CMPXCHG_H
+#define ASM__RISCV__CMPXCHG_H
 
 #include <xen/compiler.h>
 #include <xen/lib.h>
@@ -242,7 +242,7 @@ static always_inline unsigned long __cmpxchg(volatile void *ptr,
               sizeof(*(ptr))); \
 })
 
-#endif /* _ASM_RISCV_CMPXCHG_H */
+#endif /* ASM__RISCV__CMPXCHG_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index 7dbb235685..ef68281653 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_CONFIG_H__
-#define __RISCV_CONFIG_H__
+#ifndef ASM__RISCV__CONFIG_H
+#define ASM__RISCV__CONFIG_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -155,7 +155,7 @@
 
 #define IDENT_AREA_SIZE 64
 
-#endif /* __RISCV_CONFIG_H__ */
+#endif /* ASM__RISCV__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
index c08b7d67ad..41a792b0b2 100644
--- a/xen/arch/riscv/include/asm/cpufeature.h
+++ b/xen/arch/riscv/include/asm/cpufeature.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_CPUFEATURE_H
-#define __ASM_RISCV_CPUFEATURE_H
+#ifndef ASM__RISCV__CPUFEATURE_H
+#define ASM__RISCV__CPUFEATURE_H
 
 #ifndef __ASSEMBLY__
 
@@ -11,7 +11,7 @@ static inline unsigned int cpu_nr_siblings(unsigned int cpu)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_RISCV_CPUFEATURE_H */
+#endif /* ASM__RISCV__CPUFEATURE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/csr.h b/xen/arch/riscv/include/asm/csr.h
index be57dcce1c..775f1f170f 100644
--- a/xen/arch/riscv/include/asm/csr.h
+++ b/xen/arch/riscv/include/asm/csr.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef _ASM_RISCV_CSR_H
-#define _ASM_RISCV_CSR_H
+#ifndef ASM__RISCV__CSR_H
+#define ASM__RISCV__CSR_H
 
 #include <asm/asm.h>
 #include <xen/const.h>
@@ -80,4 +80,4 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_CSR_H */
+#endif /* ASM__RISCV__CSR_H */
diff --git a/xen/arch/riscv/include/asm/current.h b/xen/arch/riscv/include/asm/current.h
index 6f1ec4e190..1485bceea4 100644
--- a/xen/arch/riscv/include/asm/current.h
+++ b/xen/arch/riscv/include/asm/current.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_CURRENT_H
-#define __ASM_CURRENT_H
+#ifndef ASM__RISCV__CURRENT_H
+#define ASM__RISCV__CURRENT_H
 
 #include <xen/bug.h>
 #include <xen/cache.h>
@@ -54,4 +54,4 @@ DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_CURRENT_H */
+#endif /* ASM__RISCV__CURRENT_H */
diff --git a/xen/arch/riscv/include/asm/domain.h b/xen/arch/riscv/include/asm/domain.h
index 027bfa8a93..c3d965a559 100644
--- a/xen/arch/riscv/include/asm/domain.h
+++ b/xen/arch/riscv/include/asm/domain.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_DOMAIN_H__
-#define __ASM_RISCV_DOMAIN_H__
+#ifndef ASM__RISCV__DOMAIN_H
+#define ASM__RISCV__DOMAIN_H
 
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
@@ -39,7 +39,7 @@ static inline void update_guest_memory_policy(struct vcpu *v,
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
-#endif /* __ASM_RISCV_DOMAIN_H__ */
+#endif /* ASM__RISCV__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/early_printk.h b/xen/arch/riscv/include/asm/early_printk.h
index 85e60df33a..2750045bdd 100644
--- a/xen/arch/riscv/include/asm/early_printk.h
+++ b/xen/arch/riscv/include/asm/early_printk.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __EARLY_PRINTK_H__
-#define __EARLY_PRINTK_H__
+#ifndef ASM__RISCV__EARLY_PRINTK_H
+#define ASM__RISCV__EARLY_PRINTK_H
 
 #include <xen/early_printk.h>
 
@@ -11,4 +11,4 @@ void early_printk(const char *str);
 static inline void early_printk(const char *s) {};
 #endif
 
-#endif /* __EARLY_PRINTK_H__ */
+#endif /* ASM__RISCV__EARLY_PRINTK_H */
diff --git a/xen/arch/riscv/include/asm/event.h b/xen/arch/riscv/include/asm/event.h
index fbad8543fa..c7bb8c0fa6 100644
--- a/xen/arch/riscv/include/asm/event.h
+++ b/xen/arch/riscv/include/asm/event.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_EVENT_H__
-#define __ASM_RISCV_EVENT_H__
+#ifndef ASM__RISCV__EVENT_H
+#define ASM__RISCV__EVENT_H
 
 #include <xen/lib.h>
 
@@ -29,7 +29,7 @@ static inline bool arch_virq_is_global(unsigned int virq)
     return true;
 }
 
-#endif /* __ASM_RISCV_EVENT_H__ */
+#endif /* ASM__RISCV__EVENT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/fence.h b/xen/arch/riscv/include/asm/fence.h
index 27f46fa897..edfaac49cd 100644
--- a/xen/arch/riscv/include/asm/fence.h
+++ b/xen/arch/riscv/include/asm/fence.h
@@ -1,9 +1,9 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef _ASM_RISCV_FENCE_H
-#define _ASM_RISCV_FENCE_H
+#ifndef ASM__RISCV__FENCE_H
+#define ASM__RISCV__FENCE_H
 
 #define RISCV_ACQUIRE_BARRIER   "\tfence r , rw\n"
 #define RISCV_RELEASE_BARRIER   "\tfence rw, w\n"
 #define RISCV_FULL_BARRIER      "\tfence rw, rw\n"
 
-#endif	/* _ASM_RISCV_FENCE_H */
+#endif	/* ASM__RISCV__FENCE_H */
diff --git a/xen/arch/riscv/include/asm/fixmap.h b/xen/arch/riscv/include/asm/fixmap.h
index 63732df36c..818c8ce07b 100644
--- a/xen/arch/riscv/include/asm/fixmap.h
+++ b/xen/arch/riscv/include/asm/fixmap.h
@@ -2,8 +2,8 @@
 /*
  * fixmap.h: compile-time virtual memory allocation
  */
-#ifndef ASM_FIXMAP_H
-#define ASM_FIXMAP_H
+#ifndef ASM__RISCV__FIXMAP_H
+#define ASM__RISCV__FIXMAP_H
 
 #include <xen/bug.h>
 #include <xen/page-size.h>
@@ -43,4 +43,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* ASM_FIXMAP_H */
+#endif /* ASM__RISCV__FIXMAP_H */
diff --git a/xen/arch/riscv/include/asm/flushtlb.h b/xen/arch/riscv/include/asm/flushtlb.h
index 43214f5e95..51c8f753c5 100644
--- a/xen/arch/riscv/include/asm/flushtlb.h
+++ b/xen/arch/riscv/include/asm/flushtlb.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_FLUSHTLB_H__
-#define __ASM_RISCV_FLUSHTLB_H__
+#ifndef ASM__RISCV__FLUSHTLB_H
+#define ASM__RISCV__FLUSHTLB_H
 
 #include <xen/bug.h>
 #include <xen/cpumask.h>
@@ -37,7 +37,7 @@ static inline void page_set_tlbflush_timestamp(struct page_info *page)
 /* Flush specified CPUs' TLBs */
 void arch_flush_tlb_mask(const cpumask_t *mask);
 
-#endif /* __ASM_RISCV_FLUSHTLB_H__ */
+#endif /* ASM__RISCV__FLUSHTLB_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/include/asm/guest_access.h
index c55951f538..7cd51fbbde 100644
--- a/xen/arch/riscv/include/asm/guest_access.h
+++ b/xen/arch/riscv/include/asm/guest_access.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_GUEST_ACCESS_H__
-#define __ASM_RISCV_GUEST_ACCESS_H__
+#ifndef ASM__RISCV__GUEST_ACCESS_H
+#define ASM__RISCV__GUEST_ACCESS_H
 
 unsigned long raw_copy_to_guest(void *to, const void *from, unsigned len);
 unsigned long raw_copy_from_guest(void *to, const void *from, unsigned len);
@@ -18,7 +18,7 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_RISCV_GUEST_ACCESS_H__ */
+#endif /* ASM__RISCV__GUEST_ACCESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/guest_atomics.h b/xen/arch/riscv/include/asm/guest_atomics.h
index de54914454..22a7551804 100644
--- a/xen/arch/riscv/include/asm/guest_atomics.h
+++ b/xen/arch/riscv/include/asm/guest_atomics.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_GUEST_ATOMICS_H
-#define __ASM_RISCV_GUEST_ATOMICS_H
+#ifndef ASM__RISCV__GUEST_ATOMICS_H
+#define ASM__RISCV__GUEST_ATOMICS_H
 
 #include <xen/bug.h>
 
@@ -32,7 +32,7 @@ guest_testop(test_and_change_bit)
 
 #define guest_test_bit(d, nr, p) ((void)(d), test_bit(nr, p))
 
-#endif /* __ASM_RISCV_GUEST_ATOMICS_H */
+#endif /* ASM__RISCV__GUEST_ATOMICS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/io.h b/xen/arch/riscv/include/asm/io.h
index 8d9535e973..55f329dde3 100644
--- a/xen/arch/riscv/include/asm/io.h
+++ b/xen/arch/riscv/include/asm/io.h
@@ -35,8 +35,8 @@
  * Copyright (C) 2024 Vates
  */
 
-#ifndef _ASM_RISCV_IO_H
-#define _ASM_RISCV_IO_H
+#ifndef ASM__RISCV__IO_H
+#define ASM__RISCV__IO_H
 
 #include <asm/byteorder.h>
 
@@ -156,7 +156,7 @@ static inline uint64_t __raw_readq(const volatile void __iomem *addr)
 #define writel(v, c)    ({ __io_bw(); writel_cpu(v, c); __io_aw(); })
 #define writeq(v, c)    ({ __io_bw(); writeq_cpu(v, c); __io_aw(); })
 
-#endif /* _ASM_RISCV_IO_H */
+#endif /* ASM__RISCV__IO_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/irq.h b/xen/arch/riscv/include/asm/irq.h
index 0dfd4d6e8a..2a48da2651 100644
--- a/xen/arch/riscv/include/asm/irq.h
+++ b/xen/arch/riscv/include/asm/irq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_IRQ_H__
-#define __ASM_RISCV_IRQ_H__
+#ifndef ASM__RISCV__IRQ_H
+#define ASM__RISCV__IRQ_H
 
 #include <xen/bug.h>
 
@@ -25,7 +25,7 @@ static inline void arch_move_irqs(struct vcpu *v)
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_RISCV_IRQ_H__ */
+#endif /* ASM__RISCV__IRQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index 4b7b00b850..5c79f3def3 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_MM_H
-#define _ASM_RISCV_MM_H
+#ifndef ASM__RISCV__MM_H
+#define ASM__RISCV__MM_H
 
 #include <public/xen.h>
 #include <xen/bug.h>
@@ -261,4 +261,4 @@ void setup_fixmap_mappings(void);
 
 void *early_fdt_map(paddr_t fdt_paddr);
 
-#endif /* _ASM_RISCV_MM_H */
+#endif /* ASM__RISCV__MM_H */
diff --git a/xen/arch/riscv/include/asm/monitor.h b/xen/arch/riscv/include/asm/monitor.h
index f4fe2c0690..fb3d3e8e3a 100644
--- a/xen/arch/riscv/include/asm/monitor.h
+++ b/xen/arch/riscv/include/asm/monitor.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_MONITOR_H__
-#define __ASM_RISCV_MONITOR_H__
+#ifndef ASM__RISCV__MONITOR_H
+#define ASM__RISCV__MONITOR_H
 
 #include <xen/bug.h>
 
@@ -14,7 +14,7 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
     return 0;
 }
 
-#endif /* __ASM_RISCV_MONITOR_H__ */
+#endif /* ASM__RISCV__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/nospec.h b/xen/arch/riscv/include/asm/nospec.h
index e30f0a781b..f9b0241c98 100644
--- a/xen/arch/riscv/include/asm/nospec.h
+++ b/xen/arch/riscv/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (C) 2024 Vates */
 
-#ifndef _ASM_RISCV_NOSPEC_H
-#define _ASM_RISCV_NOSPEC_H
+#ifndef ASM__RISCV__NOSPEC_H
+#define ASM__RISCV__NOSPEC_H
 
 static inline bool evaluate_nospec(bool condition)
 {
@@ -13,7 +13,7 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* _ASM_RISCV_NOSPEC_H */
+#endif /* ASM__RISCV__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 26860c0ae7..28f57a74f2 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_P2M_H__
-#define __ASM_RISCV_P2M_H__
+#ifndef ASM__RISCV__P2M_H
+#define ASM__RISCV__P2M_H
 
 #include <xen/errno.h>
 
@@ -93,7 +93,7 @@ static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
     /* Not supported on RISCV. */
 }
 
-#endif /* __ASM_RISCV_P2M_H__ */
+#endif /* ASM__RISCV__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/page-bits.h b/xen/arch/riscv/include/asm/page-bits.h
index 8f1f474371..788c7d9518 100644
--- a/xen/arch/riscv/include/asm/page-bits.h
+++ b/xen/arch/riscv/include/asm/page-bits.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_PAGE_BITS_H__
-#define __RISCV_PAGE_BITS_H__
+#ifndef ASM__RISCV__PAGE_BITS_H
+#define ASM__RISCV__PAGE_BITS_H
 
 #define PAGE_SHIFT              12 /* 4 KiB Pages */
 #define PADDR_BITS              56 /* 44-bit PPN */
@@ -16,4 +16,4 @@
 
 #define PTE_PPN_SHIFT           10
 
-#endif /* __RISCV_PAGE_BITS_H__ */
+#endif /* ASM__RISCV__PAGE_BITS_H */
diff --git a/xen/arch/riscv/include/asm/page.h b/xen/arch/riscv/include/asm/page.h
index 89fa290697..91b1194b55 100644
--- a/xen/arch/riscv/include/asm/page.h
+++ b/xen/arch/riscv/include/asm/page.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_PAGE_H
-#define _ASM_RISCV_PAGE_H
+#ifndef ASM__RISCV__PAGE_H
+#define ASM__RISCV__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -182,4 +182,4 @@ static inline pte_t pte_from_mfn(mfn_t mfn, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_PAGE_H */
+#endif /* ASM__RISCV__PAGE_H */
diff --git a/xen/arch/riscv/include/asm/pmap.h b/xen/arch/riscv/include/asm/pmap.h
index 60065c996f..146dd29f95 100644
--- a/xen/arch/riscv/include/asm/pmap.h
+++ b/xen/arch/riscv/include/asm/pmap.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef ASM_PMAP_H
-#define ASM_PMAP_H
+#ifndef ASM__RISCV__PMAP_H
+#define ASM__RISCV__PMAP_H
 
 #include <xen/bug.h>
 #include <xen/init.h>
@@ -33,4 +33,4 @@ static inline void __init arch_pmap_unmap(unsigned int slot)
     flush_tlb_one_local(FIXMAP_ADDR(slot));
 }
 
-#endif /* ASM_PMAP_H */
+#endif /* ASM__RISCV__PMAP_H */
diff --git a/xen/arch/riscv/include/asm/processor.h b/xen/arch/riscv/include/asm/processor.h
index e42b353b4c..90b8009563 100644
--- a/xen/arch/riscv/include/asm/processor.h
+++ b/xen/arch/riscv/include/asm/processor.h
@@ -7,8 +7,8 @@
  *
  */
 
-#ifndef _ASM_RISCV_PROCESSOR_H
-#define _ASM_RISCV_PROCESSOR_H
+#ifndef ASM__RISCV__PROCESSOR_H
+#define ASM__RISCV__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 
@@ -93,7 +93,7 @@ static inline void sfence_vma(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_PROCESSOR_H */
+#endif /* ASM__RISCV__PROCESSOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/regs.h b/xen/arch/riscv/include/asm/regs.h
index c70ea2aa0c..218b9455bd 100644
--- a/xen/arch/riscv/include/asm/regs.h
+++ b/xen/arch/riscv/include/asm/regs.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARM_RISCV_REGS_H__
-#define __ARM_RISCV_REGS_H__
+#ifndef ASM__RISCV__REGS_H
+#define ASM__RISCV__REGS_H
 
 #ifndef __ASSEMBLY__
 
@@ -17,7 +17,7 @@ static inline bool guest_mode(const struct cpu_user_regs *r)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_RISCV_REGS_H__ */
+#endif /* ASM__RISCV__REGS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index e31e94e77e..6cc8f4eb45 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -6,8 +6,8 @@
  *   Anup Patel <anup.patel@wdc.com>
  */
 
-#ifndef __RISCV_ENCODING_H__
-#define __RISCV_ENCODING_H__
+#ifndef ASM__RISCV__RISCV_ENCODING_H
+#define ASM__RISCV__RISCV_ENCODING_H
 
 #define _UL(X) _AC(X, UL)
 #define _ULL(X) _AC(X, ULL)
diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
index 5947fed779..527d773277 100644
--- a/xen/arch/riscv/include/asm/sbi.h
+++ b/xen/arch/riscv/include/asm/sbi.h
@@ -9,8 +9,8 @@
  * Copyright (c) 2019 Western Digital Corporation or its affiliates.
  */
 
-#ifndef __ASM_RISCV_SBI_H__
-#define __ASM_RISCV_SBI_H__
+#ifndef ASM__RISCV__SBI_H
+#define ASM__RISCV__SBI_H
 
 #include <xen/cpumask.h>
 
@@ -96,4 +96,4 @@ int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
  */
 int sbi_init(void);
 
-#endif /* __ASM_RISCV_SBI_H__ */
+#endif /* ASM__RISCV__SBI_H */
diff --git a/xen/arch/riscv/include/asm/setup.h b/xen/arch/riscv/include/asm/setup.h
index 7613a5dbd0..c0214a9bf2 100644
--- a/xen/arch/riscv/include/asm/setup.h
+++ b/xen/arch/riscv/include/asm/setup.h
@@ -1,11 +1,11 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_RISCV_SETUP_H__
-#define __ASM_RISCV_SETUP_H__
+#ifndef ASM__RISCV__SETUP_H
+#define ASM__RISCV__SETUP_H
 
 #define max_init_domid (0)
 
-#endif /* __ASM_RISCV_SETUP_H__ */
+#endif /* ASM__RISCV__SETUP_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/smp.h b/xen/arch/riscv/include/asm/smp.h
index a824be8e78..45ee14d535 100644
--- a/xen/arch/riscv/include/asm/smp.h
+++ b/xen/arch/riscv/include/asm/smp.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_SMP_H
-#define __ASM_RISCV_SMP_H
+#ifndef ASM__RISCV__SMP_H
+#define ASM__RISCV__SMP_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
diff --git a/xen/arch/riscv/include/asm/spinlock.h b/xen/arch/riscv/include/asm/spinlock.h
index bf45a7f005..4a607eba52 100644
--- a/xen/arch/riscv/include/asm/spinlock.h
+++ b/xen/arch/riscv/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_RISCV_SPINLOCK_H
-#define __ASM_RISCV_SPINLOCK_H
+#ifndef ASM__RISCV__SPINLOCK_H
+#define ASM__RISCV__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_RISCV_SPINLOCK_H */
+#endif /* ASM__RISCV__SPINLOCK_H */
diff --git a/xen/arch/riscv/include/asm/string.h b/xen/arch/riscv/include/asm/string.h
index a26ba8f5c6..75a2048fb1 100644
--- a/xen/arch/riscv/include/asm/string.h
+++ b/xen/arch/riscv/include/asm/string.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef _ASM_RISCV_STRING_H
-#define _ASM_RISCV_STRING_H
+#ifndef ASM__RISCV__STRING_H
+#define ASM__RISCV__STRING_H
 
-#endif /* _ASM_RISCV_STRING_H */
+#endif /* ASM__RISCV__STRING_H */
diff --git a/xen/arch/riscv/include/asm/system.h b/xen/arch/riscv/include/asm/system.h
index f76bafd168..7b78d11e04 100644
--- a/xen/arch/riscv/include/asm/system.h
+++ b/xen/arch/riscv/include/asm/system.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_SYSTEM_H
-#define _ASM_RISCV_SYSTEM_H
+#ifndef ASM__RISCV__SYSTEM_H
+#define ASM__RISCV__SYSTEM_H
 
 #include <xen/stdbool.h>
 
@@ -78,7 +78,7 @@ static inline bool local_irq_is_enabled(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_SYSTEM_H */
+#endif /* ASM__RISCV__SYSTEM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
index affeb0506a..fc1572e9b4 100644
--- a/xen/arch/riscv/include/asm/time.h
+++ b/xen/arch/riscv/include/asm/time.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_TIME_H__
-#define __ASM_RISCV_TIME_H__
+#ifndef ASM__RISCV__TIME_H
+#define ASM__RISCV__TIME_H
 
 #include <xen/bug.h>
 #include <asm/csr.h>
@@ -19,7 +19,7 @@ static inline cycles_t get_cycles(void)
     return csr_read(CSR_TIME);
 }
 
-#endif /* __ASM_RISCV_TIME_H__ */
+#endif /* ASM__RISCV__TIME_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/traps.h b/xen/arch/riscv/include/asm/traps.h
index c30118e095..72b8f6c475 100644
--- a/xen/arch/riscv/include/asm/traps.h
+++ b/xen/arch/riscv/include/asm/traps.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_TRAPS_H__
-#define __ASM_TRAPS_H__
+#ifndef ASM__RISCV__TRAPS_H
+#define ASM__RISCV__TRAPS_H
 
 #include <asm/processor.h>
 
@@ -13,4 +13,4 @@ void trap_init(void);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_TRAPS_H__ */
+#endif /* ASM__RISCV__TRAPS_H */
diff --git a/xen/arch/riscv/include/asm/types.h b/xen/arch/riscv/include/asm/types.h
index 59358fd698..d801596a20 100644
--- a/xen/arch/riscv/include/asm/types.h
+++ b/xen/arch/riscv/include/asm/types.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_TYPES_H__
-#define __RISCV_TYPES_H__
+#ifndef ASM__RISCV__TYPES_H
+#define ASM__RISCV__TYPES_H
 
 #if defined(CONFIG_RISCV_32)
 
@@ -25,7 +25,7 @@ typedef u64 register_t;
 
 #endif
 
-#endif /* __RISCV_TYPES_H__ */
+#endif /* ASM__RISCV__TYPES_H */
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:28:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:28:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809426.1221760 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKwh-0008ER-Hh; Thu, 03 Oct 2024 12:28:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809426.1221760; Thu, 03 Oct 2024 12:28: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 1swKwh-0008EK-EZ; Thu, 03 Oct 2024 12:28:39 +0000
Received: by outflank-mailman (input) for mailman id 809426;
 Thu, 03 Oct 2024 12:28: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKnz-00043u-9S
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:39 +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 c1f20bc6-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:37 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a8a7596b7dfso178682966b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1f20bc6-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957977; x=1728562777; 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=I3DKuhQNv3MsZ5QX5cGeELREhQ+CQGQiRyTh9z9amE0=;
        b=SmSfEaK/hTUEQPmQPhMtuizfEn0ErEQeeeo2IKpIRMve26CkfvDlHDyrp9eJqQN1hO
         du+SfS5K1noyghmOPESZnof3uliOaWeqIpU90a4ptzAUz2xXYCSEulMTS5k3ESW91iK/
         0pEsbwA4x9Wlh3DwH+p2ykGJkZAVATo2AJbyI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957977; x=1728562777;
        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=I3DKuhQNv3MsZ5QX5cGeELREhQ+CQGQiRyTh9z9amE0=;
        b=sNzun18iXNNR606qbT/LLnny3hiSkS5w3gfPmv5JbQjJlwlpaTUuJhF8bFsP8bLH//
         2HUXHpB4uYLKPsuDZwHG4i9X1OD3/v/z+5TrIU/xTv/qkaChfQ9SMco/h7ECz6cdmJ+x
         nETL+RpFXTmpAGhuMV6rHsBc4AFtcySYFOagrVapUe6remZz27XP2AqJb9rw33WcAvbn
         ypo06DKsn26ygYZKZ1WEJ3ufRnEbO2Y0ftERFxJYQ54604dirpU8AI1Wxnqt5LHVAbT/
         qlIAuyNrxCZ/RAi/ZOXXiMMo55J8aiAXZdNpXP3dh3g94mqnyiVkTeO5XPa++bUgF5sH
         uv6w==
X-Gm-Message-State: AOJu0YwUUScvHVACk/gVrFXNYnO+h/yEXAuKuQ0THe7jnrrG8FfcELLU
	mE+0812lDt3c8YQLtM7/w31i1hrNXzZI0bHLYDXiTi0zbOYtCcg063mjepsc3fJ/V2BcWlsRv7U
	+
X-Google-Smtp-Source: AGHT+IHxtoLUSN1W0/txPHzw10TNeI8XojpvBuHpgefeO0JS/ngOev4Gur9gCOXLbOD+wrcQ3vOXHA==
X-Received: by 2002:a17:907:3f9d:b0:a98:f6dc:6cf3 with SMTP id a640c23a62f3a-a990a21d55emr317536166b.21.1727957976958;
        Thu, 03 Oct 2024 05:19:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 19/20] xen: Update header guards - VPCI
Date: Thu,  3 Oct 2024 13:19:07 +0100
Message-Id: <20241003121908.362888-20-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to VPCI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/vpci.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 41e7c3bc27..d2d2905447 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_VPCI_H_
-#define _XEN_VPCI_H_
+#ifndef XEN__VPCI_H
+#define XEN__VPCI_H
 
 #ifdef CONFIG_HAS_VPCI
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:28:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:28:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809429.1221770 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swKwj-00005l-OT; Thu, 03 Oct 2024 12:28:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809429.1221770; Thu, 03 Oct 2024 12: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 1swKwj-00005d-Kw; Thu, 03 Oct 2024 12:28:41 +0000
Received: by outflank-mailman (input) for mailman id 809429;
 Thu, 03 Oct 2024 12:28: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swKny-00043u-Sk
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:19:38 +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 c19d9bc9-8181-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:19:37 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8d6d0fe021so141913966b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:19:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a991047319asm77328366b.184.2024.10.03.05.19.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 05:19:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c19d9bc9-8181-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727957976; x=1728562776; 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=E1MdC3jU6tMF4gHR3lQp27v/4fUpmlKo+cCS73TVl10=;
        b=P/WiekiWt7h8aLdwtv+JmfEWyr7R4Kj/bpzMd3P4Gl9b6mLWG+z6d5D9IyeYi+lJQr
         4Pw2xlNLe2qPpzley2GA7rDNDv5YPnJ7quTSMo/jAmd4kvoKNzeIotQPekHFflaCA904
         TB+AOZQ1Sf+FLZRGfkmbKDUEtXoB2KFGFY5vw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727957976; x=1728562776;
        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=E1MdC3jU6tMF4gHR3lQp27v/4fUpmlKo+cCS73TVl10=;
        b=mxuF6j82UOkuB2kKhBAV7SMA/zs3xU8/bsW/j+j3OgxEVkARSoETDks32rXTrbpq+4
         DhYaC2pBvLzMXXO0OJYG6YHCioeK+8c/z+Vs28AZFzdCGryl2jC9NaKGm/lkzfV63YCa
         HRgoiGxK9scui2L/oWiIzma9qXLvASbSfh/pPxPye3Zua7UYj2oifzDq9SPKL/dDar1v
         yfjjDytCrHydh0wKYyMNWYlB5/cJ0wSwe1QvsTN3K9owv14jz9iwJe25yIosSMnAJIME
         dW6cg0Zw2yrxyG81odwnIVkTG0UDbrw2JeVdbY4028P/p3fKJFeEP3wmE/DzThbaCcRS
         47TA==
X-Gm-Message-State: AOJu0YyHcq1C//C7kXfM0slSUspUE6d2/gaqg1vB3GF6fJpa038Fx2sn
	TUnZrAYq9QLki7oTHG0C3xjAJ2WXBdHE+GS1lpG6RO0nyFc+5PkwoXPXhQcF9XdA/QFo/TkNdRQ
	9
X-Google-Smtp-Source: AGHT+IFr5gvJEZaPDv4ew+VlipYtwSACXF/kpaaSAKTC0fecw8pMrN777gqGRLkOk4D4+wm+Y7NvyA==
X-Received: by 2002:a17:907:eac:b0:a8a:8a31:c481 with SMTP id a640c23a62f3a-a98f837bc4dmr602449166b.42.1727957976309;
        Thu, 03 Oct 2024 05:19:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.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 18/20] xen: Update header guards - VM event, mem access, monitor
Date: Thu,  3 Oct 2024 13:19:06 +0100
Message-Id: <20241003121908.362888-19-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to VM event, mem access AND monitor.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/hvm/monitor.h  | 6 +++---
 xen/arch/x86/include/asm/hvm/vm_event.h | 6 +++---
 xen/arch/x86/include/asm/mem_access.h   | 6 +++---
 xen/arch/x86/include/asm/monitor.h      | 6 +++---
 xen/arch/x86/include/asm/vm_event.h     | 6 +++---
 xen/include/asm-generic/monitor.h       | 6 +++---
 xen/include/asm-generic/vm_event.h      | 6 +++---
 xen/include/public/vm_event.h           | 6 +++---
 xen/include/xen/mem_access.h            | 6 +++---
 xen/include/xen/monitor.h               | 6 +++---
 xen/include/xen/vm_event.h              | 6 +++---
 11 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/xen/arch/x86/include/asm/hvm/monitor.h b/xen/arch/x86/include/asm/hvm/monitor.h
index 02021be47b..8ef90a1b03 100644
--- a/xen/arch/x86/include/asm/hvm/monitor.h
+++ b/xen/arch/x86/include/asm/hvm/monitor.h
@@ -5,8 +5,8 @@
  * Arch-specific hardware virtual machine monitor abstractions.
  */
 
-#ifndef __ASM_X86_HVM_MONITOR_H__
-#define __ASM_X86_HVM_MONITOR_H__
+#ifndef ASM__X86__HVM__MONITOR_H
+#define ASM__X86__HVM__MONITOR_H
 
 #include <public/vm_event.h>
 
@@ -46,7 +46,7 @@ int hvm_monitor_vmexit(unsigned long exit_reason,
 int hvm_monitor_io(unsigned int port, unsigned int bytes,
                    bool in, bool str);
 
-#endif /* __ASM_X86_HVM_MONITOR_H__ */
+#endif /* ASM__X86__HVM__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vm_event.h b/xen/arch/x86/include/asm/hvm/vm_event.h
index 506a85c774..c03df6f15e 100644
--- a/xen/arch/x86/include/asm/hvm/vm_event.h
+++ b/xen/arch/x86/include/asm/hvm/vm_event.h
@@ -5,12 +5,12 @@
  * Hardware virtual machine vm_event abstractions.
  */
 
-#ifndef __ASM_X86_HVM_VM_EVENT_H__
-#define __ASM_X86_HVM_VM_EVENT_H__
+#ifndef ASM__X86__HVM__VM_EVENT_H
+#define ASM__X86__HVM__VM_EVENT_H
 
 void hvm_vm_event_do_resume(struct vcpu *v);
 
-#endif /* __ASM_X86_HVM_VM_EVENT_H__ */
+#endif /* ASM__X86__HVM__VM_EVENT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/mem_access.h b/xen/arch/x86/include/asm/mem_access.h
index 1a52a10322..b774f2f8b6 100644
--- a/xen/arch/x86/include/asm/mem_access.h
+++ b/xen/arch/x86/include/asm/mem_access.h
@@ -11,8 +11,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef __ASM_X86_MEM_ACCESS_H__
-#define __ASM_X86_MEM_ACCESS_H__
+#ifndef ASM__X86__MEM_ACCESS_H
+#define ASM__X86__MEM_ACCESS_H
 
 /*
  * Setup vm_event request based on the access (gla is -1ull if not available).
@@ -44,7 +44,7 @@ int p2m_set_suppress_ve_multi(struct domain *d,
 int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
                         unsigned int altp2m_idx);
 
-#endif /*__ASM_X86_MEM_ACCESS_H__ */
+#endif /*ASM__X86__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/monitor.h b/xen/arch/x86/include/asm/monitor.h
index 3c64d8258f..2d0dde5041 100644
--- a/xen/arch/x86/include/asm/monitor.h
+++ b/xen/arch/x86/include/asm/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_X86_MONITOR_H__
-#define __ASM_X86_MONITOR_H__
+#ifndef ASM__X86__MONITOR_H
+#define ASM__X86__MONITOR_H
 
 #include <xen/sched.h>
 
@@ -126,4 +126,4 @@ static inline void arch_monitor_cleanup_domain(struct domain *d) {}
 bool monitored_msr(const struct domain *d, u32 msr);
 bool monitored_msr_onchangeonly(const struct domain *d, u32 msr);
 
-#endif /* __ASM_X86_MONITOR_H__ */
+#endif /* ASM__X86__MONITOR_H */
diff --git a/xen/arch/x86/include/asm/vm_event.h b/xen/arch/x86/include/asm/vm_event.h
index 46e77ed6d9..bac504ba70 100644
--- a/xen/arch/x86/include/asm/vm_event.h
+++ b/xen/arch/x86/include/asm/vm_event.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2015 Tamas K Lengyel (tamas@tklengyel.com)
  */
 
-#ifndef __ASM_X86_VM_EVENT_H__
-#define __ASM_X86_VM_EVENT_H__
+#ifndef ASM__X86__VM_EVENT_H
+#define ASM__X86__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -45,4 +45,4 @@ void vm_event_sync_event(struct vcpu *v, bool value);
 
 void vm_event_reset_vmtrace(struct vcpu *v);
 
-#endif /* __ASM_X86_VM_EVENT_H__ */
+#endif /* ASM__X86__VM_EVENT_H */
diff --git a/xen/include/asm-generic/monitor.h b/xen/include/asm-generic/monitor.h
index 1ade289099..e53f0823cb 100644
--- a/xen/include/asm-generic/monitor.h
+++ b/xen/include/asm-generic/monitor.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef __ASM_GENERIC_MONITOR_H__
-#define __ASM_GENERIC_MONITOR_H__
+#ifndef ASM_GENERIC__MONITOR_H
+#define ASM_GENERIC__MONITOR_H
 
 #include <xen/errno.h>
 #include <xen/lib.h>
@@ -52,7 +52,7 @@ void arch_monitor_cleanup_domain(struct domain *d)
     /* No arch-specific domain cleanup on GENERIC. */
 }
 
-#endif /* __ASM_GENERIC_MONITOR_H__ */
+#endif /* ASM_GENERIC__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/vm_event.h b/xen/include/asm-generic/vm_event.h
index 620c7b971c..ff538b6ba4 100644
--- a/xen/include/asm-generic/vm_event.h
+++ b/xen/include/asm-generic/vm_event.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2015 Tamas K Lengyel (tamas@tklengyel.com)
  */
 
-#ifndef __ASM_GENERIC_VM_EVENT_H__
-#define __ASM_GENERIC_VM_EVENT_H__
+#ifndef ASM_GENERIC__VM_EVENT_H
+#define ASM_GENERIC__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -52,4 +52,4 @@ void vm_event_reset_vmtrace(struct vcpu *v)
     /* Nothing to do. */
 }
 
-#endif /* __ASM_GENERIC_VM_EVENT_H__ */
+#endif /* ASM_GENERIC__VM_EVENT_H */
diff --git a/xen/include/public/vm_event.h b/xen/include/public/vm_event.h
index 3a86f0e208..6b861b06f0 100644
--- a/xen/include/public/vm_event.h
+++ b/xen/include/public/vm_event.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2009 by Citrix Systems, Inc. (Patrick Colp)
  */
 
-#ifndef _XEN_PUBLIC_VM_EVENT_H
-#define _XEN_PUBLIC_VM_EVENT_H
+#ifndef PUBLIC__VM_EVENT_H
+#define PUBLIC__VM_EVENT_H
 
 #include "xen.h"
 
@@ -440,7 +440,7 @@ typedef struct vm_event_st {
 DEFINE_RING_TYPES(vm_event, vm_event_request_t, vm_event_response_t);
 
 #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
-#endif /* _XEN_PUBLIC_VM_EVENT_H */
+#endif /* PUBLIC__VM_EVENT_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
index 87d93b31f6..2d0e472934 100644
--- a/xen/include/xen/mem_access.h
+++ b/xen/include/xen/mem_access.h
@@ -19,8 +19,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _XEN_MEM_ACCESS_H
-#define _XEN_MEM_ACCESS_H
+#ifndef XEN__MEM_ACCESS_H
+#define XEN__MEM_ACCESS_H
 
 #include <xen/types.h>
 #include <xen/mm.h>
@@ -105,7 +105,7 @@ int mem_access_memop(unsigned long cmd,
 }
 #endif /* CONFIG_MEM_ACCESS */
 
-#endif /* _XEN_MEM_ACCESS_H */
+#endif /* XEN__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/monitor.h b/xen/include/xen/monitor.h
index 713d54f7c1..be301826c0 100644
--- a/xen/include/xen/monitor.h
+++ b/xen/include/xen/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_MONITOR_H__
-#define __XEN_MONITOR_H__
+#ifndef XEN__MONITOR_H
+#define XEN__MONITOR_H
 
 #include <public/vm_event.h>
 
@@ -32,4 +32,4 @@ void monitor_guest_request(void);
 
 int monitor_traps(struct vcpu *v, bool sync, vm_event_request_t *req);
 
-#endif /* __XEN_MONITOR_H__ */
+#endif /* XEN__MONITOR_H */
diff --git a/xen/include/xen/vm_event.h b/xen/include/xen/vm_event.h
index 9a86358b42..3f2cb6fba8 100644
--- a/xen/include/xen/vm_event.h
+++ b/xen/include/xen/vm_event.h
@@ -20,8 +20,8 @@
  */
 
 
-#ifndef __VM_EVENT_H__
-#define __VM_EVENT_H__
+#ifndef XEN__VM_EVENT_H
+#define XEN__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -98,7 +98,7 @@ void vm_event_set_registers(struct vcpu *v, vm_event_response_t *rsp);
 
 void vm_event_monitor_next_interrupt(struct vcpu *v);
 
-#endif /* __VM_EVENT_H__ */
+#endif /* XEN__VM_EVENT_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:57:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:57:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809450.1221779 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swLOM-0008RK-1K; Thu, 03 Oct 2024 12:57:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809450.1221779; Thu, 03 Oct 2024 12:57: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 1swLOL-0008RD-UW; Thu, 03 Oct 2024 12:57:13 +0000
Received: by outflank-mailman (input) for mailman id 809450;
 Thu, 03 Oct 2024 12:38: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=187q=Q7=bootlin.com=louis.chauvet@srs-se1.protection.inumbo.net>)
 id 1swL6Q-0002mN-Nb
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:38:43 +0000
Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net
 [217.70.183.200]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6ac7f14a-8184-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 14:38:40 +0200 (CEST)
Received: by mail.gandi.net (Postfix) with ESMTPSA id 1429220003;
 Thu,  3 Oct 2024 12:38: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: 6ac7f14a-8184-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1;
	t=1727959119;
	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=G1WWqv8PxjeMLKflSPYmbUe7DeomMcAnSm/A8iMPhzI=;
	b=jaIPWC0Xu79mrXEmZMnQsiXzA9Wr3uoH8MULWQT5IUuNp55G4sX5QevmhszIPLVwNB8KAr
	O3AkPLtQl5yloTMbuyNDdO+X5TRPKMqYEvSTrAQoGgw5IuBAjgFtNYLiG0d10jUZ4bA3FH
	m1e4s8kFAAe17/+QzeW38cun4KUy2aCMbNTrAFDwf/82DfLhx3fqZMuDYE4KWwrNFUQiLe
	EpyU5sN7nS1+Zc1hdPjgaFvbZTVp4v512I9O9Hvnt/yMn7PWEyyffcB8w/4zGq889GcVPI
	rtotQp17FYcj62LrbVAqrFIRzZevDuIvYg4y31zSeUiM6gR48lVIIrxWlvKtpw==
Date: Thu, 3 Oct 2024 14:38:35 +0200
From: Louis Chauvet <louis.chauvet@bootlin.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: Move crtc->{x, y, mode, enabled} to legacy
 sub-structure
Message-ID: <Zv6QF2EmIcogtlLA@louis-chauvet-laptop>
Mail-Followup-To: Ville Syrjala <ville.syrjala@linux.intel.com>,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
 <20241002182200.15363-3-ville.syrjala@linux.intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20241002182200.15363-3-ville.syrjala@linux.intel.com>
X-GND-Sasl: louis.chauvet@bootlin.com

Le 02/10/24 - 21:22, Ville Syrjala a crit :
> From: Ville Syrjl <ville.syrjala@linux.intel.com>
> 
> Atomic drivers shouldn't be using the legacy state stored
> directly under drm_crtc. Move that junk into a 'legacy' sub
> structure to highlight the offenders, of which there are
> quite a few unfortunately.

Hi,

Do we need to do something particular in an atomic driver except using
state content?

I proposed some modifications for VKMS bellow. If you think this is good,
I can send a patch to avoid being an offender :-) I just tested it, and it
seems to work.

> I'm hoping we could get all these fixed and then declare
> the legacy state off limits for atomic drivers (which is
> what did long ago for plane->fb/etc). And maybe eventually
> turn crtc->legacy into a pointer and only allocate it on
> legacy drivers.
> 
> TODO: hwmode should probably go there too but it probably
>       needs a closer look, maybe other stuff too...

[...]

> diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c
> index 57a5769fc994..a7f8b1da6e85 100644
> --- a/drivers/gpu/drm/vkms/vkms_composer.c
> +++ b/drivers/gpu/drm/vkms/vkms_composer.c
> @@ -187,7 +187,7 @@ static void blend(struct vkms_writeback_job *wb,
>  
>  	const struct pixel_argb_u16 background_color = { .a = 0xffff };
>  
> -	size_t crtc_y_limit = crtc_state->base.crtc->mode.vdisplay;
> +	size_t crtc_y_limit = crtc_state->base.crtc->legacy.mode.vdisplay;

	size_t crtc_y_limit = crtc_state->base.mode.vdisplay;

>  	/*
>  	 * The planes are composed line-by-line to avoid heavy memory usage. It is a necessary
> @@ -270,7 +270,7 @@ static int compose_active_planes(struct vkms_writeback_job *active_wb,
>  	if (WARN_ON(check_format_funcs(crtc_state, active_wb)))
>  		return -EINVAL;
>  
> -	line_width = crtc_state->base.crtc->mode.hdisplay;
> +	line_width = crtc_state->base.crtc->legacy.mode.hdisplay;

	line_width = crtc_state->base.mode.hdisplay;

>  	stage_buffer.n_pixels = line_width;
>  	output_buffer.n_pixels = line_width;
>  
> diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
> index a40295c18b48..780681ea77e4 100644
> --- a/drivers/gpu/drm/vkms/vkms_crtc.c
> +++ b/drivers/gpu/drm/vkms/vkms_crtc.c
> @@ -64,7 +64,7 @@ static int vkms_enable_vblank(struct drm_crtc *crtc)
>  	struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
>  	struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
>  
> -	drm_calc_timestamping_constants(crtc, &crtc->mode);
> +	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);

	drm_calc_timestamping_constants(crtc, &crtc->state->mode);

>  	hrtimer_init(&out->vblank_hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
>  	out->vblank_hrtimer.function = &vkms_vblank_simulate;
> diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
> index bc724cbd5e3a..27164cddb94d 100644
> --- a/drivers/gpu/drm/vkms/vkms_writeback.c
> +++ b/drivers/gpu/drm/vkms/vkms_writeback.c
> @@ -131,8 +131,8 @@ static void vkms_wb_atomic_commit(struct drm_connector *conn,
>  	struct drm_connector_state *conn_state = wb_conn->base.state;
>  	struct vkms_crtc_state *crtc_state = output->composer_state;
>  	struct drm_framebuffer *fb = connector_state->writeback_job->fb;
> -	u16 crtc_height = crtc_state->base.crtc->mode.vdisplay;
> -	u16 crtc_width = crtc_state->base.crtc->mode.hdisplay;
> +	u16 crtc_height = crtc_state->base.crtc->legacy.mode.vdisplay;
> +	u16 crtc_width = crtc_state->base.crtc->legacy.mode.hdisplay;

	u16 crtc_height = crtc_state->base.mode.vdisplay;
	u16 crtc_width = crtc_state->base.mode.hdisplay;

>  	struct vkms_writeback_job *active_wb;
>  	struct vkms_frame_info *wb_frame_info;
>  	u32 wb_format = fb->format->format;

[...]

-- 
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 12:58:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 12:58:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809458.1221789 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swLPD-0000ca-9I; Thu, 03 Oct 2024 12:58:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809458.1221789; Thu, 03 Oct 2024 12:58: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 1swLPD-0000cT-6m; Thu, 03 Oct 2024 12:58:07 +0000
Received: by outflank-mailman (input) for mailman id 809458;
 Thu, 03 Oct 2024 12:58: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swLPB-0000XO-OY
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 12:58:05 +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 20d1a021-8187-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 14:58:05 +0200 (CEST)
Received: by mail-oi1-x236.google.com with SMTP id
 5614622812f47-3e04b7b3c6dso495079b6e.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 05:58:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 20d1a021-8187-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727960284; x=1728565084; 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=RMTVC0/TxqscVfsnoVmCR7K5y/PJgYPDrQm7qA5bnK4=;
        b=gxWSK5f+VPl+gDoN+8uLpsF/NM9ovgeKqvoFv0IrfaMAQUKZI1CZka1kcax+ZJ3VwQ
         oXlQoqAM4Q99WRx1OwQx+xYONCyBHvB/0zYfzd/J2PfOt6dmPFpBZ1x+73v6q7kkjRTc
         wIdGm6sQl1XcLoWASN/WJrJJEjWdWfJf2WLos=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727960284; x=1728565084;
        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=RMTVC0/TxqscVfsnoVmCR7K5y/PJgYPDrQm7qA5bnK4=;
        b=ar7YCtchy7KlWgMTwvKknaYPimzl5JIiNXe5h59MlwPgYBnOXqMuFc2dQo6Gh0cD5v
         ISuizRGOfVmm3zKECTdnY4SYGIx/XIXewfVXnEbyPY/5MMTJNlZR2EbaQ0v933hA3PD9
         D1Poq3kORtbktmWWGBZbKLHs2DrktfoiO8aBFSQ3BrRvAHLk7Aade3/9hR2LBv21QCtG
         BHLJ0Vs7VeF3o0c1tgiRsjiHkMP7scIse/i2oM5qmnHoWfaWKb88n5nw7y3w749Q6+h1
         Nk8U6kdlvMVW0EGfD1sO6U2QuDbR717/gy4c9EPkLZICsZdYCPJaPYXFSSVuqme1Xbpn
         IBXw==
X-Forwarded-Encrypted: i=1; AJvYcCU2FctXFPDyPNjY4S/8pz3vbmM1KB4sUksOF4+xqh/tnxKVvS7vke/DJ4RfWJ5tAghmkoO/IUKPZEY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy0iWepe0Mh3F8oBMYKF/jw0ka8lV7KFHA4gCoDCfklyFT7zW9t
	g923QMOPBLfHSvPU/p5lHY1qulQDLV6KrwiIppzR/pBI5h/x+y0Q6Jlldi6y5mQP/uZevz8TiJP
	NmLvxGSGMksW5LNflZEAT4ugcpqo+b8GlOChbdQ==
X-Google-Smtp-Source: AGHT+IFNzhv4/yIBxaf6oD45LKXLi76QYX9ytqmB0/mc3n1NbwNcMcq5i12kQy8DHE9z1l5vmR0vO1jmI1yMQtd+DXQ=
X-Received: by 2002:a05:6871:610:b0:25e:b999:d24 with SMTP id
 586e51a60fabf-287883e5c57mr4764089fac.0.1727960283686; Thu, 03 Oct 2024
 05:58:03 -0700 (PDT)
MIME-Version: 1.0
References: <20241001102239.2609631-1-frediano.ziglio@cloud.com>
 <20241001102239.2609631-3-frediano.ziglio@cloud.com> <0d49ee74-9e19-4f77-9c5c-cbd86cac4b0d@suse.com>
In-Reply-To: <0d49ee74-9e19-4f77-9c5c-cbd86cac4b0d@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 3 Oct 2024 13:57:52 +0100
Message-ID: <CACHz=ZjScnDF+0LHxZhL_hmG=_AiFCbuiNLecRn_AFz84OVMMw@mail.gmail.com>
Subject: Re: [PATCH v7 2/2] x86/boot: Improve MBI2 structure check
To: Jan Beulich <jbeulich@suse.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Oct 1, 2024 at 5:02=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 01.10.2024 12:22, Frediano Ziglio wrote:
> > --- a/xen/arch/x86/efi/mbi2.c
> > +++ b/xen/arch/x86/efi/mbi2.c
> > @@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboo=
t2_fixed_t *mbi)
> >      EFI_HANDLE ImageHandle =3D NULL;
> >      EFI_SYSTEM_TABLE *SystemTable =3D NULL;
> >      const char *cmdline =3D NULL;
> > +    const void *const mbi_raw =3D (const void *)mbi;
> >      bool have_bs =3D false;
> >
> >      if ( magic !=3D MULTIBOOT2_BOOTLOADER_MAGIC )
> > @@ -21,7 +22,9 @@ efi_multiboot2_prelude(uint32_t magic, const multiboo=
t2_fixed_t *mbi)
> >      /* Skip Multiboot2 information fixed part. */
> >      tag =3D _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN)=
);
> >
> > -    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
> > +    for ( ; (const void *)(tag + 1) - mbi_raw <=3D mbi->total_size &&
> > +            tag->size >=3D sizeof(*tag) &&
> > +            (const void *)tag + tag->size - mbi_raw <=3D mbi->total_si=
ze &&
> >              tag->type !=3D MULTIBOOT2_TAG_TYPE_END;
> >            tag =3D _p(ROUNDUP((unsigned long)tag + tag->size,
> >                     MULTIBOOT2_TAG_ALIGN)) )
>
> Hmm, looks like what I said on the earlier version still wasn't unambiguo=
us
> enough; I'm sorry. There is still potential for intermediate overflows in
> the calculations. _If_ we care about avoiding overflows, we need to avoid
> all of that. Even more so that Misra may not like this sort of pointer
> calculations. You know tag >=3D mbi_raw, so tag - mbi_raw is always valid=
 to
> calculate. tag->size can further be checked to be less than mbi->total_si=
ze,
> at which point mbi->total_size - tag->size can also be calculated without
> risking {over,under}flow. (Similar then for the earlier (tag + 1) check.)
>
> Jan

Hi,
  personally, I don't care much about checking for overflows here.
It's not that we are in a higher security level, and we need to check
malicious intentions (like when user calls the kernel or a VM calls
the hypervisor), if the loader (which is at the same security level)
is passing garbage we are going to crash.

Saying that with this commit Marek checks are failing, I was thinking
about dropping this commit completely. Yes, in theory better checks
are better, but if we cause regression and boot failures maybe it's
better to allow some wrong data. That's one reason I wanted to keep
this commit separate from the other, which is just translating what
assembly code was doing, not introducing any regression (good or bad)
in behavior. I think it would be worth investigating what Marek
machine is passing in order to make sure we accept whatever wrong data
we are receiving (or understanding why more checks cause the issue).

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 13:00:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 13:00:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809465.1221799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swLRe-0002OH-O0; Thu, 03 Oct 2024 13:00:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809465.1221799; Thu, 03 Oct 2024 13:00: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 1swLRe-0002OA-LL; Thu, 03 Oct 2024 13:00:38 +0000
Received: by outflank-mailman (input) for mailman id 809465;
 Thu, 03 Oct 2024 13:00: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swLRd-0002Nl-1I
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 13:00:37 +0000
Received: from mail-oa1-x33.google.com (mail-oa1-x33.google.com
 [2001:4860:4864:20::33])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7a172230-8187-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 15:00:34 +0200 (CEST)
Received: by mail-oa1-x33.google.com with SMTP id
 586e51a60fabf-2870ce5e9e8so498921fac.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 06:00:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7a172230-8187-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727960433; x=1728565233; 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=TxibvbJB47DNuscU5G1ADRroFaBAAYTuYbe3yx7mRG4=;
        b=Gv2bfq56alvsEhSFLHFriFIO3ZnB7gqdSGcgh5A1ozQufX3EzD98JGBTUEjMjyo5tE
         NnyOi6Gzf/bxfz1qdkAdqgdB9uBLa8IOM8/Gb1nS10awMrEkeU6xtCRKDYxerkkMx482
         75UcFD8ez0cK79RMFmRiu2N/NknELDgt8odiM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727960433; x=1728565233;
        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=TxibvbJB47DNuscU5G1ADRroFaBAAYTuYbe3yx7mRG4=;
        b=cHVHMgBmOrtZM5jnrinu5KLhw/nBop9KcWJTt3yGXSTd453iosD8Mm3abzVwe/GxMR
         m7uFlZJj4QXvV8BrLuyXLgDD9Y5BfuvukUYbIQdqHk246q7S/4y2Pr5kD6/SL5TZltUF
         WKroGl0Xpgt0tj6Dwc8DLIxZyjLwKTNLB8vXDodlcNU5pxP1OSthx9UYCR9v3PrdLCI1
         yJbR2B2GtXmsW2tOd/mE+AyxAExbC+Rw5Wzh6vZO3tK2awTRhhGKfA0aAZUZ3rpa8Sdd
         Pboss7IbL7ZwjkErdTf057eijTUinr/DEndACV+BATRqzkfs7KuLQgqVK5hz3NRD7ybH
         ijSQ==
X-Gm-Message-State: AOJu0YzxYdgzg09lci6JPtEpzM8nHnhe0fNnn+FEbU4xXFHZGTFm4jIT
	PK/szIrljzk4PzTE2cZITxK5sD6afuHl40UDd7M9aFJRDCKHuvM35HoAkTMG21IF0/SggB7nMUg
	MG/TJEqe4qS+k9lDiLkY69brm1lp14V5eOhRIGXqVgTXlQ6DEd6Y=
X-Google-Smtp-Source: AGHT+IGU8t0uFlXEGIYQDW2Ot5zEunspJGE3IaPz3mEc7eqp2fIYkKqYmivcr0Pgaks6O6Dy7sXcJt/yeKilf5f3OTs=
X-Received: by 2002:a05:6870:88a7:b0:277:eb68:2878 with SMTP id
 586e51a60fabf-2878914acecmr5833074fac.44.1727960433185; Thu, 03 Oct 2024
 06:00:33 -0700 (PDT)
MIME-Version: 1.0
References: <20241003121908.362888-1-frediano.ziglio@cloud.com>
In-Reply-To: <20241003121908.362888-1-frediano.ziglio@cloud.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 3 Oct 2024 14:00:22 +0100
Message-ID: <CACHz=ZgZq5T642CHj=2xW8CcShLLrLmet6=CULFGR9sjdz46sA@mail.gmail.com>
Subject: Re: [PATCH 00/20] Update header guards bases on new coding style
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Paul Durrant <paul@xen.org>, Tim Deegan <tim@xen.org>, 
	Christopher Clark <christopher.w.clark@gmail.com>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Ross Lagerwall <ross.lagerwall@citrix.com>, Tamas K Lengyel <tamas@tklengyel.com>, 
	Alexandru Isaila <aisaila@bitdefender.com>, Petre Pircalabu <ppircalabu@bitdefender.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	Juergen Gross <jgross@suse.com>, Lukasz Hawrylko <lukasz@hawrylko.pl>, 
	=?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>, 
	Doug Goldstein <cardoe@cardoe.com>, Shawn Anastasio <sanastasio@raptorengineering.com>, 
	Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, 
	Connor Davis <connojdavis@gmail.com>, Dario Faggioli <dfaggioli@suse.com>, 
	George Dunlap <gwd@xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 3, 2024 at 1:19=E2=80=AFPM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> With the help of some script I and manual checking I updated all
> header guards.
>
> As the changes are pretty large patch was split based on maintainers
> to reduce mail spamming.
>
...

CI is failing badly, I need to do more thoroughly testing.

Sorry for the spam.

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 13:47:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 13:47:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809476.1221814 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMAa-0004TD-58; Thu, 03 Oct 2024 13:47:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809476.1221814; Thu, 03 Oct 2024 13:47: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 1swMAa-0004T6-2A; Thu, 03 Oct 2024 13:47:04 +0000
Received: by outflank-mailman (input) for mailman id 809476;
 Thu, 03 Oct 2024 13:47: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=IJdh=Q7=linux.intel.com=ville.syrjala@srs-se1.protection.inumbo.net>)
 id 1swMAY-0004T0-81
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 13:47:02 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f4eaf7a9-818d-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 15:46:58 +0200 (CEST)
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
 by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 03 Oct 2024 06:46:56 -0700
Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74])
 by fmviesa008.fm.intel.com with SMTP; 03 Oct 2024 06:46:50 -0700
Received: by stinkbox (sSMTP sendmail emulation);
 Thu, 03 Oct 2024 16:46:48 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4eaf7a9-818d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1727963219; x=1759499219;
  h=date:from:to:subject:message-id:references:mime-version:
   content-transfer-encoding:in-reply-to;
  bh=n5OHn3QUdpat2aC/O/iKVjfoE6iGTaPoN/6J8frtUYg=;
  b=ffpmsEQjwQw748bDEeZZlwtPl5gVhoPsjlRbU5biIJsRMDeV5hdHVDML
   /q5JLgCQI2OOJZC+099BMkvMYHuyXZh6Xr33Z2qHLP9EhTOI5fJaJYO9M
   /LkGXSqVV3c+71gjX1Hs1MkCXJgSxw9DG2Fwvy8rplPUdTvkgCc43gUUW
   cgUlVY5MOXsIIyyOSWHojwmpt8ZKpCWQ/2RN0ZozoIN8LgxAd7JJtxVLd
   xpxf+kxkEr2NRv3jVxe07n8bU/VGnclzDTKivG5AyuGXV6gnztHLGyDnH
   DwvtL1fZoaY0rRyJ/OR5oM3iSednu0m0z3b0OsgAsobEbaoUgPsAKmrpG
   Q==;
X-CSE-ConnectionGUID: JrKGJOgJRI6gnX4T/8WBkg==
X-CSE-MsgGUID: 4EyBjoDUS0K6mYvn7j0Fbw==
X-IronPort-AV: E=McAfee;i="6700,10204,11214"; a="27286667"
X-IronPort-AV: E=Sophos;i="6.11,174,1725346800"; 
   d="scan'208";a="27286667"
X-CSE-ConnectionGUID: H7+f/vSCTa27grfFf3KfqQ==
X-CSE-MsgGUID: dSiUo7Y0SbyaiImM3Q2NMw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,174,1725346800"; 
   d="scan'208";a="74451391"
Date: Thu, 3 Oct 2024 16:46:48 +0300
From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>
To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: Move crtc->{x, y, mode, enabled} to legacy
 sub-structure
Message-ID: <Zv6gSGMXZZARf3oV@intel.com>
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
 <20241002182200.15363-3-ville.syrjala@linux.intel.com>
 <Zv6QF2EmIcogtlLA@louis-chauvet-laptop>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <Zv6QF2EmIcogtlLA@louis-chauvet-laptop>
X-Patchwork-Hint: comment

On Thu, Oct 03, 2024 at 02:38:35PM +0200, Louis Chauvet wrote:
> Le 02/10/24 - 21:22, Ville Syrjala a crit :
> > From: Ville Syrjl <ville.syrjala@linux.intel.com>
> > 
> > Atomic drivers shouldn't be using the legacy state stored
> > directly under drm_crtc. Move that junk into a 'legacy' sub
> > structure to highlight the offenders, of which there are
> > quite a few unfortunately.
> 
> Hi,
> 
> Do we need to do something particular in an atomic driver except using
> state content?
> 
> I proposed some modifications for VKMS bellow. If you think this is good,
> I can send a patch to avoid being an offender :-) I just tested it, and it
> seems to work.
> 
> > I'm hoping we could get all these fixed and then declare
> > the legacy state off limits for atomic drivers (which is
> > what did long ago for plane->fb/etc). And maybe eventually
> > turn crtc->legacy into a pointer and only allocate it on
> > legacy drivers.
> > 
> > TODO: hwmode should probably go there too but it probably
> >       needs a closer look, maybe other stuff too...
> 
> [...]
> 
> > diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c
> > index 57a5769fc994..a7f8b1da6e85 100644
> > --- a/drivers/gpu/drm/vkms/vkms_composer.c
> > +++ b/drivers/gpu/drm/vkms/vkms_composer.c
> > @@ -187,7 +187,7 @@ static void blend(struct vkms_writeback_job *wb,
> >  
> >  	const struct pixel_argb_u16 background_color = { .a = 0xffff };
> >  
> > -	size_t crtc_y_limit = crtc_state->base.crtc->mode.vdisplay;
> > +	size_t crtc_y_limit = crtc_state->base.crtc->legacy.mode.vdisplay;
> 
> 	size_t crtc_y_limit = crtc_state->base.mode.vdisplay;
> 
> >  	/*
> >  	 * The planes are composed line-by-line to avoid heavy memory usage. It is a necessary
> > @@ -270,7 +270,7 @@ static int compose_active_planes(struct vkms_writeback_job *active_wb,
> >  	if (WARN_ON(check_format_funcs(crtc_state, active_wb)))
> >  		return -EINVAL;
> >  
> > -	line_width = crtc_state->base.crtc->mode.hdisplay;
> > +	line_width = crtc_state->base.crtc->legacy.mode.hdisplay;
> 
> 	line_width = crtc_state->base.mode.hdisplay;
> 
> >  	stage_buffer.n_pixels = line_width;
> >  	output_buffer.n_pixels = line_width;
> >  
> > diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
> > index a40295c18b48..780681ea77e4 100644
> > --- a/drivers/gpu/drm/vkms/vkms_crtc.c
> > +++ b/drivers/gpu/drm/vkms/vkms_crtc.c
> > @@ -64,7 +64,7 @@ static int vkms_enable_vblank(struct drm_crtc *crtc)
> >  	struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
> >  	struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
> >  
> > -	drm_calc_timestamping_constants(crtc, &crtc->mode);
> > +	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);
> 
> 	drm_calc_timestamping_constants(crtc, &crtc->state->mode);

This one doesn't look safe. You want to call that during your atomic
commit already.

The rest look reasonable.

> 
> >  	hrtimer_init(&out->vblank_hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
> >  	out->vblank_hrtimer.function = &vkms_vblank_simulate;
> > diff --git a/drivers/gpu/drm/vkms/vkms_writeback.c b/drivers/gpu/drm/vkms/vkms_writeback.c
> > index bc724cbd5e3a..27164cddb94d 100644
> > --- a/drivers/gpu/drm/vkms/vkms_writeback.c
> > +++ b/drivers/gpu/drm/vkms/vkms_writeback.c
> > @@ -131,8 +131,8 @@ static void vkms_wb_atomic_commit(struct drm_connector *conn,
> >  	struct drm_connector_state *conn_state = wb_conn->base.state;
> >  	struct vkms_crtc_state *crtc_state = output->composer_state;
> >  	struct drm_framebuffer *fb = connector_state->writeback_job->fb;
> > -	u16 crtc_height = crtc_state->base.crtc->mode.vdisplay;
> > -	u16 crtc_width = crtc_state->base.crtc->mode.hdisplay;
> > +	u16 crtc_height = crtc_state->base.crtc->legacy.mode.vdisplay;
> > +	u16 crtc_width = crtc_state->base.crtc->legacy.mode.hdisplay;
> 
> 	u16 crtc_height = crtc_state->base.mode.vdisplay;
> 	u16 crtc_width = crtc_state->base.mode.hdisplay;
> 
> >  	struct vkms_writeback_job *active_wb;
> >  	struct vkms_frame_info *wb_frame_info;
> >  	u32 wb_format = fb->format->format;
> 
> [...]
> 
> -- 
> Louis Chauvet, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com

-- 
Ville Syrjl
Intel


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 13:53:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 13:53:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809481.1221823 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMGc-0006if-P8; Thu, 03 Oct 2024 13:53:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809481.1221823; Thu, 03 Oct 2024 13: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 1swMGc-0006iY-M1; Thu, 03 Oct 2024 13:53:18 +0000
Received: by outflank-mailman (input) for mailman id 809481;
 Thu, 03 Oct 2024 13:53: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 1swMGb-0006iO-Kd; Thu, 03 Oct 2024 13:53: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 1swMGb-0003Qh-8e; Thu, 03 Oct 2024 13:53: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 1swMGa-0002sE-SD; Thu, 03 Oct 2024 13:53:16 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swMGa-0008Ap-Rs; Thu, 03 Oct 2024 13: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>
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+E4WnWy+ozxlETvycfjYktf01SbL/CtztGgVgat4Kc=; b=H1Jb8AJaBNsIz8KpgvyjqILpBm
	q5NF8a9+FDoNDwBT0EGgj48OORbGzss2JV0t+wNdZYo8Fh8IZCW4LHlFORAECkc6xd69IpzAp11gQ
	HAkKOqlQnZi9FSeUU/0rTSwnFMp10H6nTLtiw4eRz2vXh6KvqFz50N3fKsIFZM4LbNBg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187950-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187950: 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=444cb9350f2c1cc202b6b86176ddd8e57525e2d9
X-Osstest-Versions-That:
    xen=41190d2ceb03b12ffc17a66c04de519c26a6052a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 13:53:16 +0000

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

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                  444cb9350f2c1cc202b6b86176ddd8e57525e2d9
baseline version:
 xen                  41190d2ceb03b12ffc17a66c04de519c26a6052a

Last test of basis   187940  2024-10-02 19:02:18 Z    0 days
Testing same since   187950  2024-10-03 10:00:24 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
   41190d2ceb..444cb9350f  444cb9350f2c1cc202b6b86176ddd8e57525e2d9 -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 13:54:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 13:54:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809487.1221833 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMHr-0007EW-2r; Thu, 03 Oct 2024 13:54:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809487.1221833; Thu, 03 Oct 2024 13: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 1swMHr-0007EP-0N; Thu, 03 Oct 2024 13:54:35 +0000
Received: by outflank-mailman (input) for mailman id 809487;
 Thu, 03 Oct 2024 13: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=RhK6=Q7=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1swMHq-0007EJ-CH
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 13:54:34 +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 04d74638-818f-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 15:54:33 +0200 (CEST)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2f75c56f16aso11128811fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 06:54:33 -0700 (PDT)
Received: from localhost ([52.174.59.202]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8ca4d75d8sm730761a12.62.2024.10.03.06.54.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 06:54:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 04d74638-818f-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727963673; x=1728568473; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zUx3N2vjuO8Kz76ZbhxE3SEAUrrJvIVEQe7naCLp43k=;
        b=hmPSgYi01j5H1gzK1lO3ZlU3OBPI8oZ8ogJvGhoSgofvjg8sj8n7nvPAFWx/EIsH5r
         nlbOcYJutNK/tubg7b7JP/D0yNLV8cji/63UWBHVWETj5X6YroAz5QZOCTXoJPUrNKt/
         xyDKvwL39ajnwMdoWP9Go5w+HdBwX5QBR1G+g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727963673; x=1728568473;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=zUx3N2vjuO8Kz76ZbhxE3SEAUrrJvIVEQe7naCLp43k=;
        b=fiaB60f4UXF506giF0RPqXAtYI9i992VuKOfmGzGRDtIQaCw76AqN2078vVikLNCao
         cVxUplBnPV/d4rUzccXRzQXOHA+C65TlEoc2WikQCsX+BHAV4mkU8JUfXJYGVs6eFG47
         /JFPbYaLBXp+OHJv1tNk0asKHyWDj5MTDJ/QQnPAqLb9riGOI15RvQLNeNedmkdyuSSR
         eYeK1tMOq1pW8Eq0do/3J+qeCb9x+ElCxlSRFhwr9KkzKUn0TW0XKWJNUEOmI3H8WHxU
         KOxFvMw7DrJ4DrFJdFMkvCLaEm939nEl/wxBD9krETbEsLeCJRklqOEyYaYwnqOIAAN9
         NA+A==
X-Forwarded-Encrypted: i=1; AJvYcCU+FEWug9T+GDz4018ZcuMtpeMxs/LghuHI/N2f0IFNnare7fEVHtxBhJZ+J/HQQDxXPygL/lyZM+g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyocN76QYrW+gxHgupH7HudsmUNwwtZXpC0htv93sSMqkYUb73B
	SGCWwGkgURaf8tLwQmsoBbTjZgw03StZtpDfQzXsmR6hzzgOKIWIDBIyTqRGLes=
X-Google-Smtp-Source: AGHT+IF+91+sHkIgkMHJqGdo7fitN9yxDne71je8QzNha9G1jL0dTTfGA/hEzNW1YZVHgLd5SoZFVw==
X-Received: by 2002:a2e:b8c8:0:b0:2fa:d40f:559 with SMTP id 38308e7fff4ca-2fae1018e56mr39401161fa.18.1727963672704;
        Thu, 03 Oct 2024 06:54:32 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Thu, 03 Oct 2024 14:54:30 +0100
Message-Id: <D4M7ZZL8YUXE.1D7KX3JJDYH6L@cloud.com>
Cc: "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>
Subject: Re: [PATCH v3 2/2] x86/fpu: Split fpu_setup_fpu() in three
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>, "Jan Beulich"
 <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20240813142119.29012-1-alejandro.vallejo@cloud.com>
 <20240813142119.29012-3-alejandro.vallejo@cloud.com>
 <c83942d9-bb55-45c2-9a44-314266ce14c0@suse.com>
 <D3EXG6HDKMYR.15275C42NLLBL@cloud.com>
In-Reply-To: <D3EXG6HDKMYR.15275C42NLLBL@cloud.com>

Hi,

On Tue Aug 13, 2024 at 5:33 PM BST, Alejandro Vallejo wrote:
> On Tue Aug 13, 2024 at 3:32 PM BST, Jan Beulich wrote:
> > On 13.08.2024 16:21, Alejandro Vallejo wrote:
> > > It was trying to do too many things at once and there was no clear wa=
y of
> > > defining what it was meant to do. This commit splits the function in =
three.
> > >=20
> > >   1. A function to return the FPU to power-on reset values.
> > >   2. A function to return the FPU to default values.
> > >   3. A x87/SSE state loader (equivalent to the old function when it t=
ook a data
> > >      pointer).
> > >=20
> > > While at it, make sure the abridged tag is consistent with the manual=
s and
> > > start as 0xFF.
> > >=20
> > > Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> >
> > Reviewed-by: Jan Beulich <jbeulich@suse.com>
> >
> > > ---
> > > v3:
> > >   * Adjust commit message, as the split is now in 3.
> > >   * Remove bulky comment, as the rationale for it turned out to be
> > >     unsubstantiated. I can't find proof in xen-devel of the stream
> > >     operating the way I claimed, and at that point having the comment
> > >     at all is pointless
> >
> > So you deliberately removed the comment altogether, not just point 3 of=
 it?
> >
> > Jan
>
> Yes. The other two cases can be deduced pretty trivially from the conditi=
onal,
> I reckon. I commented them more heavily in order to properly introduce (3=
), but
> seeing how it was all a midsummer dream might as well reduce clutter.
>
> I got as far as the original implementation of XSAVE in Xen and it seems =
to
> have been tested against many combinations of src and dst, none of which =
was
> that ficticious "xsave enabled + xsave context missing". I suspect the
> xsave_enabled(v) was merely avoiding writing to the XSAVE buffer just for
> efficiency (however minor effect it might have had). I just reverse engin=
eering
> it wrong.
>
> Which reminds me. Thanks for mentioning that, because it was really just
> guesswork on my part.
>
> Cheers,
> Alejandro

Playing around with the FPU I noticed this patch wasn't committed, did it f=
all
under the cracks or is there a specific reason?

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:09:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:09:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809494.1221844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMVr-00024s-9d; Thu, 03 Oct 2024 14:09:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809494.1221844; Thu, 03 Oct 2024 14: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 1swMVr-00024l-6n; Thu, 03 Oct 2024 14:09:03 +0000
Received: by outflank-mailman (input) for mailman id 809494;
 Thu, 03 Oct 2024 14:09: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=iCg9=Q7=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1swMVq-00024f-03
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:09:02 +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 094182d0-8191-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 16:08:59 +0200 (CEST)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2fabd2c4ac0so12725891fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:08:59 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faecc94f8csm2173631fa.104.2024.10.03.07.08.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:08:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 094182d0-8191-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727964539; x=1728569339; 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=mORlLs9dsJ+1bLAjQanFgdeKBkXBmkMOAlkMLwDApX4=;
        b=a0Zs1Wz9fP/Df0dw+HukXQY8CGITi8KTZKHLQA2opWSV8X5KMYk0RzNBdnJ9nEyw2/
         L2B8FNuBubobmSBibAaAFa1PQRgltdZZg1tAf3IauP5m3hEekDhlWKIwQiMEQSAD7i1p
         +AgfMQanBJ9YcoqUnv6hoUrfc6voOM2AucwlpJqTV88Ls1cHNn7vNZ8VNhLsoP8WgN61
         /vXX7VT6UYa4zHcT6+s18eFS4dr1YvefoI96+rsvtU31QyA/fI/0Y87x46/Cpb6YrLtA
         llYOZhOVyff3KfyBsQi/w/2HMEPJXNGGEmFdOq+NVynCR9nEowkZE3mEnFMfcO7fqPso
         BnFg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727964539; x=1728569339;
        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=mORlLs9dsJ+1bLAjQanFgdeKBkXBmkMOAlkMLwDApX4=;
        b=vZQvJDdlAvK4NWtyFMya50XSIZ8wgAr6t2y0g+x0tB1+a7Q+XjtNRQPqG0tQP+7zx7
         lSY33fGrXD5Ba/5ehQCUgn39hxRPhMMK8NdLm9WouwpfkcUvkC4r02mQm+8pP0o2R3Eb
         6fIeTbZ+Nb+9inAlq7Pa+mK1wzgTcjerrkk+JIzsNCpav0eGf+smEhhFPVY1UCP8H8eg
         NhhyDpK9GfW5YzEJTfTuvaykQMRdKvn+TMm4JeQz3yfuT8WB2s/hWdBZdx9F8bOBcHS3
         o3GSKSg0MOCOWqX19+QRi+5NgSEn6YN3cGE94M6890EAlaIhN2R6ohFXbtSE6t+Q/cFA
         niYg==
X-Gm-Message-State: AOJu0YyyioZiMELJ/F38b2sjmCXTXER0QKTcirUR9c1dTXMrEpKfYlfB
	HNWkMEHNQlquUVv7be9O40wDO24bxkjvE5gOBJBQHl0o7JvRUB38QDm4Sw==
X-Google-Smtp-Source: AGHT+IGXq6zM5V5mFzzw9bK3j67DrlFuTY4b9s21t2CFiyuFo4yuK17YgfX6+kWUz0iS6nJhzMGzoQ==
X-Received: by 2002:a05:651c:a0b:b0:2fa:d5b2:e527 with SMTP id 38308e7fff4ca-2fae10a90d1mr46881281fa.35.1727964538533;
        Thu, 03 Oct 2024 07:08:58 -0700 (PDT)
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>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v5] xen: move per-cpu area management into common code
Date: Thu,  3 Oct 2024 16:08:55 +0200
Message-ID: <8634958b6a3cd45ba977acba1d8445c1739b6415.1727963609.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Centralize per-cpu area management to reduce code duplication and
enhance maintainability across architectures.

The per-cpu area management code, which is largely common among
architectures, is moved to a shared implementation in
xen/common/percpu.c. This change includes:
 * Remove percpu.c from the X86 and Arm architectures.
 * For x86, define INVALID_PERCPU_AREAS and PARK_OFFLINE_CPUS_VAR.
 * Drop the declaration of __per_cpu_offset[] from stubs.c in
   PPC and RISC-V to facilitate the build of the common per-cpu code.

No functional changes for x86.

For Arm add support of CPU_RESUME_FAILED, CPU_REMOVE and freeing of
percpu in the case when system_state != SYS_STATE_suspend, however,
there is no change in behavior for Arm at this time.

Move the asm-generic/percpu.h definitions to xen/percpu.h, except for
__per_cpu_start[] and __per_cpu_data_end[], which are moved to
common/percpu.c as they are only used in common/percpu.c.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in V5:
 - Add default case for switch() to deal with
   MISRA C 16.4 in cpu_percpu_callback().
 - Update the commit message.
 - Add Reviewed-by: Jan Beulich <jbeulich@suse.com>.
 - Add Reviewed-by: Michal Orzel <michal.orzel@amd.com>.
---
Changes in V4:
 - s/GPL-2.0/GPL-2.0-only.
 - add __read_mostly to __percpu_cpu_offset variable definition.
 - s/PARK_OFFLINE_CPUS/PARK_OFFLINE_CPUS_VAR.
 - update the commit message ( s/PARK_OFFLINE_CPUS/PARK_OFFLINE_CPUS_VAR ).
---
Changes in V3:
 - move __per_cpu_start[] and __per_cpu_data_end[] to xen/percpu.c.
 - move declaration of __per_cpu_offset[] to xen/percpu.h.
 - move park_offline_cpus, per_cpu{_ptr}, this_cpu{_ptr} to xen/percpu.h.
 - drop inclusion of <asm-generic/percpu.h> in x86/asm/percpu.h.
 - add inclusion of <xen/types.h> ( as in asm/curren.h is used types from
   asm/current.h ) and <asm/current.h> ( get_per_cpu_offset() )
   to xen/percpu.h to deal with compilation errors.
 - xen/types.h and asm/current.h to avoid compilation errors in case when
   xen/percpu.h is included explicitly or implicitly in assembler code.
 - update the commit message.
---
Changes in V2:
 - move definition of park_offline_cpus for Arm, PPC and RISC-V to
   <asm-generic/percpu.h>
 - add to arm/asm/smp.h inclusion of <xen/percpu.h>
   ( at least, it is needed as it uses DECLARE_PER_CPU and also
   to not break the build because of moved definition of 
   park_offline_cpus to asm-generic/percpu.h )
 - remove x86/percpu.c as all the code was moved to common percpu.c.
 - add define PARK_OFFLINE_CPUS to x86/asm/percpu.h as x86 defines it
   in own way.
 - drop ARCH_PERCPU_AREA_CHECK and ARCH_CPU_PERCPU_CALLBACK as the code
   inside this definitions were integrated to common code.
 - use park_offline_cpus ? 0 : -EBUSY;
   instead of arch_percpu_area_init_status() in init_percpu_area().
 - update cpu_percpu_callback() to handle CPU_UP_CANCELED, case CPU_DEAD,
   case CPU_RESUME_FAILED and also CPU parking and SYS_STATE_suspend.
 - move declaration of percpu_init_areas() to xen/percpu.h.
---
 xen/arch/arm/Makefile             |   1 -
 xen/arch/arm/include/asm/smp.h    |   7 +-
 xen/arch/arm/percpu.c             |  85 ----------------------
 xen/arch/ppc/include/asm/smp.h    |   6 --
 xen/arch/ppc/stubs.c              |   1 -
 xen/arch/riscv/include/asm/smp.h  |   6 --
 xen/arch/riscv/stubs.c            |   1 -
 xen/arch/x86/Makefile             |   1 -
 xen/arch/x86/include/asm/Makefile |   1 -
 xen/arch/x86/include/asm/percpu.h |  14 ++++
 xen/arch/x86/percpu.c             | 112 -----------------------------
 xen/common/Makefile               |   1 +
 xen/common/percpu.c               | 116 ++++++++++++++++++++++++++++++
 xen/include/asm-generic/percpu.h  |  23 ------
 xen/include/xen/percpu.h          |  30 ++++++++
 15 files changed, 162 insertions(+), 243 deletions(-)
 delete mode 100644 xen/arch/arm/percpu.c
 create mode 100644 xen/arch/x86/include/asm/percpu.h
 delete mode 100644 xen/arch/x86/percpu.c
 create mode 100644 xen/common/percpu.c

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 7792bff597..e4ad1ce851 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -39,7 +39,6 @@ obj-$(CONFIG_MEM_ACCESS) += mem_access.o
 obj-y += mm.o
 obj-y += monitor.o
 obj-y += p2m.o
-obj-y += percpu.o
 obj-y += platform.o
 obj-y += platform_hypercall.o
 obj-y += physdev.o
diff --git a/xen/arch/arm/include/asm/smp.h b/xen/arch/arm/include/asm/smp.h
index e99a3a3f53..8f765ed12a 100644
--- a/xen/arch/arm/include/asm/smp.h
+++ b/xen/arch/arm/include/asm/smp.h
@@ -2,6 +2,7 @@
 #define __ASM_SMP_H
 
 #ifndef __ASSEMBLY__
+#include <xen/percpu.h>
 #include <xen/cpumask.h>
 #include <asm/current.h>
 #endif
@@ -12,12 +13,6 @@ extern unsigned long smp_up_cpu;
 DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_mask);
 DECLARE_PER_CPU(cpumask_var_t, cpu_core_mask);
 
-/*
- * Do we, for platform reasons, need to actually keep CPUs online when we
- * would otherwise prefer them to be off?
- */
-#define park_offline_cpus false
-
 extern void noreturn stop_cpu(void);
 
 extern int arch_smp_init(void);
diff --git a/xen/arch/arm/percpu.c b/xen/arch/arm/percpu.c
deleted file mode 100644
index 87fe960330..0000000000
--- a/xen/arch/arm/percpu.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#include <xen/percpu.h>
-#include <xen/cpu.h>
-#include <xen/init.h>
-#include <xen/mm.h>
-#include <xen/rcupdate.h>
-
-unsigned long __per_cpu_offset[NR_CPUS];
-#define INVALID_PERCPU_AREA (-(long)__per_cpu_start)
-#define PERCPU_ORDER (get_order_from_bytes(__per_cpu_data_end-__per_cpu_start))
-
-void __init percpu_init_areas(void)
-{
-    unsigned int cpu;
-    for ( cpu = 1; cpu < NR_CPUS; cpu++ )
-        __per_cpu_offset[cpu] = INVALID_PERCPU_AREA;
-}
-
-static int init_percpu_area(unsigned int cpu)
-{
-    char *p;
-    if ( __per_cpu_offset[cpu] != INVALID_PERCPU_AREA )
-        return -EBUSY;
-    if ( (p = alloc_xenheap_pages(PERCPU_ORDER, 0)) == NULL )
-        return -ENOMEM;
-    memset(p, 0, __per_cpu_data_end - __per_cpu_start);
-    __per_cpu_offset[cpu] = p - __per_cpu_start;
-    return 0;
-}
-
-struct free_info {
-    unsigned int cpu;
-    struct rcu_head rcu;
-};
-static DEFINE_PER_CPU(struct free_info, free_info);
-
-static void _free_percpu_area(struct rcu_head *head)
-{
-    struct free_info *info = container_of(head, struct free_info, rcu);
-    unsigned int cpu = info->cpu;
-    char *p = __per_cpu_start + __per_cpu_offset[cpu];
-    free_xenheap_pages(p, PERCPU_ORDER);
-    __per_cpu_offset[cpu] = INVALID_PERCPU_AREA;
-}
-
-static void free_percpu_area(unsigned int cpu)
-{
-    struct free_info *info = &per_cpu(free_info, cpu);
-    info->cpu = cpu;
-    call_rcu(&info->rcu, _free_percpu_area);
-}
-
-static int cpu_percpu_callback(
-    struct notifier_block *nfb, unsigned long action, void *hcpu)
-{
-    unsigned int cpu = (unsigned long)hcpu;
-    int rc = 0;
-
-    switch ( action )
-    {
-    case CPU_UP_PREPARE:
-        rc = init_percpu_area(cpu);
-        break;
-    case CPU_UP_CANCELED:
-    case CPU_DEAD:
-        free_percpu_area(cpu);
-        break;
-    default:
-        break;
-    }
-
-    return notifier_from_errno(rc);
-}
-
-static struct notifier_block cpu_percpu_nfb = {
-    .notifier_call = cpu_percpu_callback,
-    .priority = 100 /* highest priority */
-};
-
-static int __init percpu_presmp_init(void)
-{
-    register_cpu_notifier(&cpu_percpu_nfb);
-    return 0;
-}
-presmp_initcall(percpu_presmp_init);
diff --git a/xen/arch/ppc/include/asm/smp.h b/xen/arch/ppc/include/asm/smp.h
index 7b1517ce18..2b872218be 100644
--- a/xen/arch/ppc/include/asm/smp.h
+++ b/xen/arch/ppc/include/asm/smp.h
@@ -7,10 +7,4 @@
 DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_mask);
 DECLARE_PER_CPU(cpumask_var_t, cpu_core_mask);
 
-/*
- * Do we, for platform reasons, need to actually keep CPUs online when we
- * would otherwise prefer them to be off?
- */
-#define park_offline_cpus false
-
 #endif
diff --git a/xen/arch/ppc/stubs.c b/xen/arch/ppc/stubs.c
index bdb5f8c66d..fff82f5cf3 100644
--- a/xen/arch/ppc/stubs.c
+++ b/xen/arch/ppc/stubs.c
@@ -141,7 +141,6 @@ void smp_send_state_dump(unsigned int cpu)
 /* domain.c */
 
 DEFINE_PER_CPU(struct vcpu *, curr_vcpu);
-unsigned long __per_cpu_offset[NR_CPUS];
 
 void context_switch(struct vcpu *prev, struct vcpu *next)
 {
diff --git a/xen/arch/riscv/include/asm/smp.h b/xen/arch/riscv/include/asm/smp.h
index a824be8e78..092b101ff4 100644
--- a/xen/arch/riscv/include/asm/smp.h
+++ b/xen/arch/riscv/include/asm/smp.h
@@ -10,12 +10,6 @@
 DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_mask);
 DECLARE_PER_CPU(cpumask_var_t, cpu_core_mask);
 
-/*
- * Do we, for platform reasons, need to actually keep CPUs online when we
- * would otherwise prefer them to be off?
- */
-#define park_offline_cpus false
-
 /*
  * Mapping between Xen logical cpu index and hartid.
  */
diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c
index 2aa245f272..5951b0ce91 100644
--- a/xen/arch/riscv/stubs.c
+++ b/xen/arch/riscv/stubs.c
@@ -133,7 +133,6 @@ void smp_send_state_dump(unsigned int cpu)
 /* domain.c */
 
 DEFINE_PER_CPU(struct vcpu *, curr_vcpu);
-unsigned long __per_cpu_offset[NR_CPUS];
 
 void context_switch(struct vcpu *prev, struct vcpu *next)
 {
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 1fa12ed4aa..b35fd5196c 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -54,7 +54,6 @@ obj-y += mpparse.o
 obj-y += nmi.o
 obj-y += numa.o
 obj-y += pci.o
-obj-y += percpu.o
 obj-y += physdev.o
 obj-$(CONFIG_COMPAT) += x86_64/physdev.o
 obj-$(CONFIG_X86_PSR) += psr.o
diff --git a/xen/arch/x86/include/asm/Makefile b/xen/arch/x86/include/asm/Makefile
index daab34ff0a..2c27787d31 100644
--- a/xen/arch/x86/include/asm/Makefile
+++ b/xen/arch/x86/include/asm/Makefile
@@ -1,3 +1,2 @@
 # SPDX-License-Identifier: GPL-2.0-only
 generic-y += div64.h
-generic-y += percpu.h
diff --git a/xen/arch/x86/include/asm/percpu.h b/xen/arch/x86/include/asm/percpu.h
new file mode 100644
index 0000000000..34f589f990
--- /dev/null
+++ b/xen/arch/x86/include/asm/percpu.h
@@ -0,0 +1,14 @@
+#ifndef __X86_PERCPU_H__
+#define __X86_PERCPU_H__
+
+#define PARK_OFFLINE_CPUS_VAR
+
+/*
+ * Force uses of per_cpu() with an invalid area to attempt to access the
+ * middle of the non-canonical address space resulting in a #GP, rather than a
+ * possible #PF at (NULL + a little) which has security implications in the
+ * context of PV guests.
+ */
+#define INVALID_PERCPU_AREA (0x8000000000000000UL - (unsigned long)__per_cpu_start)
+
+#endif /* __X86_PERCPU_H__ */
diff --git a/xen/arch/x86/percpu.c b/xen/arch/x86/percpu.c
deleted file mode 100644
index 3205eacea6..0000000000
--- a/xen/arch/x86/percpu.c
+++ /dev/null
@@ -1,112 +0,0 @@
-#include <xen/percpu.h>
-#include <xen/cpu.h>
-#include <xen/init.h>
-#include <xen/mm.h>
-#include <xen/rcupdate.h>
-
-unsigned long __per_cpu_offset[NR_CPUS];
-
-/*
- * Force uses of per_cpu() with an invalid area to attempt to access the
- * middle of the non-canonical address space resulting in a #GP, rather than a
- * possible #PF at (NULL + a little) which has security implications in the
- * context of PV guests.
- */
-#define INVALID_PERCPU_AREA (0x8000000000000000UL - (unsigned long)__per_cpu_start)
-#define PERCPU_ORDER get_order_from_bytes(__per_cpu_data_end - __per_cpu_start)
-
-void __init percpu_init_areas(void)
-{
-    unsigned int cpu;
-
-    for ( cpu = 1; cpu < NR_CPUS; cpu++ )
-        __per_cpu_offset[cpu] = INVALID_PERCPU_AREA;
-}
-
-static int init_percpu_area(unsigned int cpu)
-{
-    char *p;
-
-    if ( __per_cpu_offset[cpu] != INVALID_PERCPU_AREA )
-        return 0;
-
-    if ( (p = alloc_xenheap_pages(PERCPU_ORDER, 0)) == NULL )
-        return -ENOMEM;
-
-    memset(p, 0, __per_cpu_data_end - __per_cpu_start);
-    __per_cpu_offset[cpu] = p - __per_cpu_start;
-
-    return 0;
-}
-
-struct free_info {
-    unsigned int cpu;
-    struct rcu_head rcu;
-};
-static DEFINE_PER_CPU(struct free_info, free_info);
-
-static void cf_check _free_percpu_area(struct rcu_head *head)
-{
-    struct free_info *info = container_of(head, struct free_info, rcu);
-    unsigned int cpu = info->cpu;
-    char *p = __per_cpu_start + __per_cpu_offset[cpu];
-
-    free_xenheap_pages(p, PERCPU_ORDER);
-    __per_cpu_offset[cpu] = INVALID_PERCPU_AREA;
-}
-
-static void free_percpu_area(unsigned int cpu)
-{
-    struct free_info *info = &per_cpu(free_info, cpu);
-
-    info->cpu = cpu;
-    call_rcu(&info->rcu, _free_percpu_area);
-}
-
-static int cf_check cpu_percpu_callback(
-    struct notifier_block *nfb, unsigned long action, void *hcpu)
-{
-    unsigned int cpu = (unsigned long)hcpu;
-    int rc = 0;
-
-    switch ( action )
-    {
-    case CPU_UP_PREPARE:
-        rc = init_percpu_area(cpu);
-        break;
-    case CPU_UP_CANCELED:
-    case CPU_DEAD:
-    case CPU_RESUME_FAILED:
-        if ( !park_offline_cpus && system_state != SYS_STATE_suspend )
-            free_percpu_area(cpu);
-        break;
-    case CPU_REMOVE:
-        if ( park_offline_cpus )
-            free_percpu_area(cpu);
-        break;
-    }
-
-    return notifier_from_errno(rc);
-}
-
-static struct notifier_block cpu_percpu_nfb = {
-    .notifier_call = cpu_percpu_callback,
-    .priority = 100 /* highest priority */
-};
-
-static int __init cf_check percpu_presmp_init(void)
-{
-    register_cpu_notifier(&cpu_percpu_nfb);
-
-    return 0;
-}
-presmp_initcall(percpu_presmp_init);
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index fc52e0857d..f90bb00d23 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -31,6 +31,7 @@ obj-y += notifier.o
 obj-$(CONFIG_NUMA) += numa.o
 obj-y += page_alloc.o
 obj-y += pdx.o
+obj-y += percpu.o
 obj-$(CONFIG_PERF_COUNTERS) += perfc.o
 obj-bin-$(CONFIG_HAS_PMAP) += pmap.init.o
 obj-y += preempt.o
diff --git a/xen/common/percpu.c b/xen/common/percpu.c
new file mode 100644
index 0000000000..fca73a3e08
--- /dev/null
+++ b/xen/common/percpu.c
@@ -0,0 +1,116 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/percpu.h>
+#include <xen/cpu.h>
+#include <xen/init.h>
+#include <xen/mm.h>
+#include <xen/rcupdate.h>
+#include <xen/sections.h>
+
+#ifndef INVALID_PERCPU_AREA
+#define INVALID_PERCPU_AREA (-(long)__per_cpu_start)
+#endif
+
+#define PERCPU_ORDER get_order_from_bytes(__per_cpu_data_end - __per_cpu_start)
+
+extern char __per_cpu_start[];
+extern const char __per_cpu_data_end[];
+
+unsigned long __read_mostly __per_cpu_offset[NR_CPUS];
+
+void __init percpu_init_areas(void)
+{
+    unsigned int cpu;
+
+    for ( cpu = 1; cpu < NR_CPUS; cpu++ )
+        __per_cpu_offset[cpu] = INVALID_PERCPU_AREA;
+}
+
+static int init_percpu_area(unsigned int cpu)
+{
+    char *p;
+
+    if ( __per_cpu_offset[cpu] != INVALID_PERCPU_AREA )
+        return park_offline_cpus ? 0 : -EBUSY;
+
+    if ( (p = alloc_xenheap_pages(PERCPU_ORDER, 0)) == NULL )
+        return -ENOMEM;
+
+    memset(p, 0, __per_cpu_data_end - __per_cpu_start);
+    __per_cpu_offset[cpu] = p - __per_cpu_start;
+
+    return 0;
+}
+
+struct free_info {
+    unsigned int cpu;
+    struct rcu_head rcu;
+};
+static DEFINE_PER_CPU(struct free_info, free_info);
+
+static void cf_check _free_percpu_area(struct rcu_head *head)
+{
+    struct free_info *info = container_of(head, struct free_info, rcu);
+    unsigned int cpu = info->cpu;
+    char *p = __per_cpu_start + __per_cpu_offset[cpu];
+
+    free_xenheap_pages(p, PERCPU_ORDER);
+    __per_cpu_offset[cpu] = INVALID_PERCPU_AREA;
+}
+
+static void free_percpu_area(unsigned int cpu)
+{
+    struct free_info *info = &per_cpu(free_info, cpu);
+
+    info->cpu = cpu;
+    call_rcu(&info->rcu, _free_percpu_area);
+}
+
+static int cf_check cpu_percpu_callback(
+    struct notifier_block *nfb, unsigned long action, void *hcpu)
+{
+    unsigned int cpu = (unsigned long)hcpu;
+    int rc = 0;
+
+    switch ( action )
+    {
+    case CPU_UP_PREPARE:
+        rc = init_percpu_area(cpu);
+        break;
+    case CPU_UP_CANCELED:
+    case CPU_DEAD:
+    case CPU_RESUME_FAILED:
+        if ( !park_offline_cpus && system_state != SYS_STATE_suspend )
+            free_percpu_area(cpu);
+        break;
+    case CPU_REMOVE:
+        if ( park_offline_cpus )
+            free_percpu_area(cpu);
+        break;
+    default:
+        break;
+    }
+
+    return notifier_from_errno(rc);
+}
+
+static struct notifier_block cpu_percpu_nfb = {
+    .notifier_call = cpu_percpu_callback,
+    .priority = 100 /* highest priority */
+};
+
+static int __init cf_check percpu_presmp_init(void)
+{
+    register_cpu_notifier(&cpu_percpu_nfb);
+
+    return 0;
+}
+presmp_initcall(percpu_presmp_init);
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/asm-generic/percpu.h b/xen/include/asm-generic/percpu.h
index 60af4f9ff9..3fdb3a2a02 100644
--- a/xen/include/asm-generic/percpu.h
+++ b/xen/include/asm-generic/percpu.h
@@ -2,29 +2,6 @@
 #ifndef __ASM_GENERIC_PERCPU_H__
 #define __ASM_GENERIC_PERCPU_H__
 
-#ifndef __ASSEMBLY__
-
-#include <xen/types.h>
-#include <asm/current.h>
-
-extern char __per_cpu_start[];
-extern const char __per_cpu_data_end[];
-extern unsigned long __per_cpu_offset[NR_CPUS];
-void percpu_init_areas(void);
-
-#define per_cpu(var, cpu)  \
-    (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]))
-
-#define this_cpu(var) \
-    (*RELOC_HIDE(&per_cpu__##var, get_per_cpu_offset()))
-
-#define per_cpu_ptr(var, cpu)  \
-    (*RELOC_HIDE(var, __per_cpu_offset[cpu]))
-#define this_cpu_ptr(var) \
-    (*RELOC_HIDE(var, get_per_cpu_offset()))
-
-#endif
-
 #endif /* __ASM_GENERIC_PERCPU_H__ */
 
 /*
diff --git a/xen/include/xen/percpu.h b/xen/include/xen/percpu.h
index 57522f346b..e7f585c7ed 100644
--- a/xen/include/xen/percpu.h
+++ b/xen/include/xen/percpu.h
@@ -29,6 +29,36 @@
 
 #include <asm/percpu.h>
 
+#ifndef __ASSEMBLY__
+
+#include <xen/types.h>
+#include <asm/current.h>
+
+#ifndef PARK_OFFLINE_CPUS_VAR
+/*
+ * Do we, for platform reasons, need to actually keep CPUs online when we
+ * would otherwise prefer them to be off?
+ */
+#define park_offline_cpus false
+#endif
+
+extern unsigned long __per_cpu_offset[];
+
+#define per_cpu(var, cpu)  \
+    (*RELOC_HIDE(&per_cpu__##var, __per_cpu_offset[cpu]))
+
+#define this_cpu(var) \
+    (*RELOC_HIDE(&per_cpu__##var, get_per_cpu_offset()))
+
+#define per_cpu_ptr(var, cpu)  \
+    (*RELOC_HIDE(var, __per_cpu_offset[cpu]))
+#define this_cpu_ptr(var) \
+    (*RELOC_HIDE(var, get_per_cpu_offset()))
+
+void percpu_init_areas(void);
+
+#endif /* __ASSEMBLY__ */
+
 /* Linux compatibility. */
 #define get_cpu_var(var) this_cpu(var)
 #define put_cpu_var(var)
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:21:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:21:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809503.1221854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMhN-0005aC-HW; Thu, 03 Oct 2024 14:20:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809503.1221854; Thu, 03 Oct 2024 14: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 1swMhN-0005a5-DJ; Thu, 03 Oct 2024 14:20:57 +0000
Received: by outflank-mailman (input) for mailman id 809503;
 Thu, 03 Oct 2024 14:20: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=xwa6=Q7=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swMhL-0005Zz-Es
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:20:55 +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 b2708b43-8192-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 16:20:53 +0200 (CEST)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-37cdac05af9so1049164f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:20:53 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d082a6c3asm1370764f8f.69.2024.10.03.07.20.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:20:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2708b43-8192-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727965252; x=1728570052; 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=2Iubt4LVeJnWXXUPp+yr5ntgHtX5098yOqc7fyRXQc4=;
        b=fmHrNgJHQqYzB19riFqWeQpLgYABoYz81gDRL3JvGqJGaIDuPG0yHNprzc1n1c3xdA
         mGySFxnOI3jh6KOtnwKrkng3Vcq5ik5gk39s80DXcBKO3f1YeNPG8jIVaR3YpRVhVkRo
         n0gXstWYuWibWmZHpP+4Tr1sbQ4nZhqHFfGek=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965252; x=1728570052;
        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=2Iubt4LVeJnWXXUPp+yr5ntgHtX5098yOqc7fyRXQc4=;
        b=liM8u/z5SIDUrdXIvsUIdCX/tIjMwf2KOGXBdg3CCdmAS9wLzqDDu+AC2dxIBSP9ys
         xJPp0FzsAWjtrCH9M2Cd6/yAYzFPMVVn+hjrHCvWmDvHRo4VVbGZ1qyFnOI4SXFeTtIN
         EWf+JxnrSbpzFSenaOkgDHys01iOPC9j4R8kKve59IhqieU1ua0DeO5931TK90CeHKN6
         LQz0J0hZjxydZVbAdcLCo86IPMvRkHm9rJ7W5M7fQFFMhWE3HxiLQoPO4EyamjUZ8QXS
         o/389W4/pnggXzjkKhC+RqgnjKRXwHKgD8R07clEhHNA+PrRhqg94DUcwFu02Snf3Qlx
         v19Q==
X-Gm-Message-State: AOJu0YxZ2g63ZfkxAZ6dNm4s3+taZQWmsheaMk2rrZrpZzfTz4Gv/vF8
	flHJs4EkL5Kd3hpulVZXK4aatXzGoP+iVkXgQsM24O+OE5SufbB7ZlHu/g+i95NanOHGcqCEeEk
	2
X-Google-Smtp-Source: AGHT+IHleqqD344+K3yvBg0FYlef2zBT0I4JQAxP2yuYsqbVYPgZkoNh9vTwYHZybHQKfqaR5EnJ3A==
X-Received: by 2002:a5d:6612:0:b0:37c:f35c:1634 with SMTP id ffacd0b85a97d-37cfb9d321emr4828122f8f.26.1727965252296;
        Thu, 03 Oct 2024 07:20:52 -0700 (PDT)
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>
Subject: [PATCH] x86/dpci: do not leak pending interrupts on CPU offline
Date: Thu,  3 Oct 2024 16:20:36 +0200
Message-ID: <20241003142036.43287-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The current dpci logic relies on a softirq being executed as a side effect of
the cpu_notifier_call_chain() call in the code path that offlines the target
CPU.  However the call to cpu_notifier_call_chain() won't trigger any softirq
processing, and even if it did, such processing should be done after all
interrupts have been migrated off the current CPU, otherwise new pending dpci
interrupts could still appear.

Current ASSERT in the cpu callback notifier is fairly easy to trigger by doing
CPU offline from a PVH dom0.

Solve this by instead moving out any dpci interrupts pending processing once
the CPU is dead.  This might introduce more latency than attempting to drain
before the CPU is put offline, but it's less complex, and CPU online/offline is
not a common action.  Any extra introduced latency should be tolerable.

Fixes: f6dd295381f4 ('dpci: replace tasklet with softirq')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/drivers/passthrough/x86/hvm.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/xen/drivers/passthrough/x86/hvm.c b/xen/drivers/passthrough/x86/hvm.c
index d3627e4af71b..f5faff7a499a 100644
--- a/xen/drivers/passthrough/x86/hvm.c
+++ b/xen/drivers/passthrough/x86/hvm.c
@@ -1105,23 +1105,27 @@ static int cf_check cpu_callback(
     struct notifier_block *nfb, unsigned long action, void *hcpu)
 {
     unsigned int cpu = (unsigned long)hcpu;
+    unsigned long flags;
 
     switch ( action )
     {
     case CPU_UP_PREPARE:
         INIT_LIST_HEAD(&per_cpu(dpci_list, cpu));
         break;
+
     case CPU_UP_CANCELED:
-    case CPU_DEAD:
-        /*
-         * On CPU_DYING this callback is called (on the CPU that is dying)
-         * with an possible HVM_DPIC_SOFTIRQ pending - at which point we can
-         * clear out any outstanding domains (by the virtue of the idle loop
-         * calling the softirq later). In CPU_DEAD case the CPU is deaf and
-         * there are no pending softirqs for us to handle so we can chill.
-         */
         ASSERT(list_empty(&per_cpu(dpci_list, cpu)));
         break;
+
+    case CPU_DEAD:
+        if ( list_empty(&per_cpu(dpci_list, cpu)) )
+            break;
+        /* Take whatever dpci interrupts are pending on the dead CPU. */
+        local_irq_save(flags);
+        list_splice_init(&per_cpu(dpci_list, cpu), &this_cpu(dpci_list));
+        local_irq_restore(flags);
+        raise_softirq(HVM_DPCI_SOFTIRQ);
+        break;
     }
 
     return NOTIFY_DONE;
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:30:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:30:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809508.1221864 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMq5-0006tT-Bv; Thu, 03 Oct 2024 14:29:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809508.1221864; Thu, 03 Oct 2024 14: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 1swMq5-0006tM-7b; Thu, 03 Oct 2024 14:29:57 +0000
Received: by outflank-mailman (input) for mailman id 809508;
 Thu, 03 Oct 2024 14:29: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=iCg9=Q7=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1swMq3-0006sV-TF
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:29:55 +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 f4777242-8193-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 16:29:55 +0200 (CEST)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2f7657f9f62so10899781fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:29:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4777242-8193-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727965793; x=1728570593; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=OuG0nL1nshuHEoO3+Bf8F3VQ4py/vB3+PiGdBulfOho=;
        b=hEi5mlve8hl+LM0PGGd5Wm1cHsdW0WuqYE0DAJl0GtLJKfLuIqUiIly1zjt3/sDXgM
         p38Fsl7pdVmHNX91+JkTGQz6412LAO5Jphyx2PUkzRjSIrktrgDxaL/gpiziprP7dWOB
         OgAEjeLw901pSYqvIqtPFNyE2M9vlwEX/FSIpDbQ8QXHxkj4Imudf7ZbDbJAHTJH1RBJ
         WvoQWDqQSjGGNnU3DRFqHFAHoXZreOqE4h3eQaKRJBQcADhtHLi9/NTjKNf48Jgo9ZQu
         2rbRvj4/b7/ujO/n9nHQNTVf7wnvbNVrnw0UbLoqDt6Whxd/gtnVTM877RhxwxQo9cQ8
         FlaA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965793; x=1728570593;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=OuG0nL1nshuHEoO3+Bf8F3VQ4py/vB3+PiGdBulfOho=;
        b=XGgfXUN6xIXU0KLziBqT/S6tKoyiSqX/EYeyGXqIQZRWru5q6VcuV0efRkF4aT8bA2
         1x1Oxewrn1YMNvzhTSK+AARRUu+Xt8eo5xtHiGF6Utu0jo4aHQ2teJNOP/JFU2UMk/Ii
         INmxwVhBQGFMFFwewCYv3K7Qg5yPPFpwmzGQ3Yofe+oCYmJfaUVbz4Mp+hY3hXN8KVuP
         fwr8Av0TZdT+l39YACRlTUKISHa2rVV5h8Gq6YqJj/fFmeuxSFdV2mox0i3muwgkUGsJ
         iFStM9fJUsHBeqCIcM22QoZX2p72ONyukIcbI2hjG5G1Y0yPr6vveZepfcmQAbLgc3+5
         A/hg==
X-Gm-Message-State: AOJu0Yxl+grikBg39PlQq945od+fq97UUYICTSdHtvDsj5f5Dsq1olFN
	VnSGtQgS3nrck2L5Oi986Zvd71f5lRIP0dxCEE0+hShe5DGSZl4aPZaoeYtyBj6YTlC7b3Ohnbd
	nMwJ1JVgrnntoyMRKorspDos2KPf4Wxql
X-Google-Smtp-Source: AGHT+IEqg99bAOiXN7BcHxiHtGurYltOhJBaCX9nPb6b2nduxnBE/jffUZHh9oiHPPXRlGAuI2pKSPA+p3XEfpc1m08=
X-Received: by 2002:a2e:e01:0:b0:2f4:50c:ab55 with SMTP id 38308e7fff4ca-2fae103b122mr37548011fa.16.1727965792175;
 Thu, 03 Oct 2024 07:29:52 -0700 (PDT)
MIME-Version: 1.0
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date: Thu, 3 Oct 2024 16:29:16 +0200
Message-ID: <CAMacjJxEi6PThwH2=NwG3He8eQn39aiaxZCw3bQF7i4YcmjuNw@mail.gmail.com>
Subject: Xen 4.20 release schedule proposal (v2)
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Community Manager <community.manager@xenproject.org>, 
	"committers @ xenproject . org" <committers@xenproject.org>
Content-Type: multipart/alternative; boundary="0000000000003a128106239363ae"

--0000000000003a128106239363ae
Content-Type: text/plain; charset="UTF-8"

Hello everyone,

Please look at the updated version ( the previous version can be found here
[1] ) of Xen 4.20 release schedule.

** Proposed option: Wed Feb 26, 2025 **
 (~ +8 months from Xen 4.19 release)

- Last posting date          Fri Nov 29, 2024 (+8 weeks from now)

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 Dec 20, 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 Jan 17, 2025 (+4 weeks from Feature freeze)

Bugfixes only.

- Hard code freeze           Fri Feb 07, 2025 (+3 weeks from Code freeze)

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

- Final commits              Fri Feb 21, 2025 (+2 weeks from Hard code
freeze)

Branch off staging-4.20.

- Release                    Wed Feb 26, 2025


Please don't hesitate to provide your feedback.

If there are no objections, I plan to update the Wiki page
Xen_Project_X.YY_Release_Notes to make it easier to find our final schedule
( especially for the people who aren't following xen-devel mailing list ).
As an additional benefit, it will also be accessible via SUPPORT.md (in the
wiki at https://xenbits.xen.org/docs/unstable-staging/support-matrix.html).

Thanks and have a good end of the week!

Best regards,
 Oleksii

[1]
https://lore.kernel.org/xen-devel/CAMacjJya_30yczOSBR=3f7_wGVgaSw_fWh7jhPqn3EQ3h4i2pQ@mail.gmail.com/

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

<div dir=3D"ltr">Hello everyone,<br><br>Please look at the updated version =
( the previous version can be found here [1] ) of Xen 4.20 release schedule=
.<br><br>** Proposed option: Wed Feb 26, 2025 **<br>=C2=A0(~ +8 months from=
 Xen 4.19 release)<br><br>- Last posting date =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0Fri Nov 29, 2024 (+8 weeks from now)<br><br>Patches adding new featur=
es are expected to be posted to the mailing<br>list by this date, although =
perhaps not in their final version.<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<b=
r>- Feature freeze =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Fri Dec 20, 20=
24 (+3 weeks from Last posting date)<br><br>Patches adding new features sho=
uld be committed by this date.<br>Straightforward bugfixes may continue to =
be accepted by maintainers.<br><br>- Code freeze =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Fri Jan 17, 2025 (+4 weeks from Feature free=
ze)<br><br>Bugfixes only.<br><br>- Hard code freeze =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 Fri Feb 07, 2025 (+3 weeks from Code freeze)<br><br>Bugfixes =
for serious bugs (including regressions), and low-risk fixes only.<br><br>-=
 Final commits =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Fri Feb 21, =
2025 (+2 weeks from Hard code freeze)<br><br>Branch off staging-4.20.<br><b=
r>- Release =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0Wed Feb 26, 2025<br><br><br>Please don&#39;t hesitate to provide your=
 feedback. <br><br>If there are no objections, I plan to update the Wiki pa=
ge Xen_Project_X.YY_Release_Notes to make it easier to find our final sched=
ule ( especially for the people who aren&#39;t following xen-devel mailing =
list ). As an additional benefit, it will also be accessible via SUPPORT.md=
 (in the wiki at <a href=3D"https://xenbits.xen.org/docs/unstable-staging/s=
upport-matrix.html">https://xenbits.xen.org/docs/unstable-staging/support-m=
atrix.html</a>).<br><br>Thanks and have a good end of the week!<br><br>Best=
 regards,<br>=C2=A0Oleksii<br><br>[1]=C2=A0<a href=3D"https://lore.kernel.o=
rg/xen-devel/CAMacjJya_30yczOSBR=3D3f7_wGVgaSw_fWh7jhPqn3EQ3h4i2pQ@mail.gma=
il.com/">https://lore.kernel.org/xen-devel/CAMacjJya_30yczOSBR=3D3f7_wGVgaS=
w_fWh7jhPqn3EQ3h4i2pQ@mail.gmail.com/</a><br><br><br></div>

--0000000000003a128106239363ae--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:31:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:31:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809513.1221884 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMrI-00005n-SE; Thu, 03 Oct 2024 14:31:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809513.1221884; Thu, 03 Oct 2024 14:31: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 1swMrI-00005f-Oa; Thu, 03 Oct 2024 14:31:12 +0000
Received: by outflank-mailman (input) for mailman id 809513;
 Thu, 03 Oct 2024 14:31: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swMrH-0008IT-Kh
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:31:11 +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 2226ecd8-8194-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 16:31:10 +0200 (CEST)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-53993564cb1so1186811e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:31:10 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a8296ba3sm191801e87.133.2024.10.03.07.31.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:31:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2226ecd8-8194-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727965869; x=1728570669; 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=5QkDAThvHzn8nk+HGJi0H/5a08f7RDTFwzrMcXuWa4E=;
        b=hqZ2Y5WtNcSUKmWSMjYQGi7qgPnQ3oD3AXa6ssY6M0yTMUxl+FR1BOJNMPzGtpcjup
         QbFLIZo0twFdwVUGT1blzdqjIhfDDlxLA6QmsdP3W+VoYUDsNGhtmwAU7nPAzzzdnDi+
         2UWvmz/6Uc2eIjf378jSzC4MgQi68jBfRDY0ObxuiO8nywH9tDFP/QlxVqaO+TZDk66G
         Q9g7mKZvk214TbJUBNTRIl3dmf8lN65PIteAIJufgO60XEEvnI3zuznEzJ5n3V97V9ZK
         bkMDStBEeq+4s74X0i78o4Lq89T+WyvCBE1lWfKd/t/aI3kkizXhbkdr4HP3Nc1CYs3P
         8SKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965869; x=1728570669;
        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=5QkDAThvHzn8nk+HGJi0H/5a08f7RDTFwzrMcXuWa4E=;
        b=ALaidEvUMDQ6xK6lZLIn3T/aHb57Xm3boIIV/+6aPRC4fXDqPpIp4wznHigX5Toqr5
         10SxsLqkYRC7Sp8TNwo75qCFKzGhKzGXfy5YLOwr+tnl1oDuR7YgyOtty9whPNR3z3Ly
         ymTQO0kuZlK57PWttpJLrStFAI9Frlkk7InXVFZISggkTcNX5YKB5yUAI/oOj88JJET1
         tXP33EAYR6OcKbEA6NZhzvGO8kCqaVR0gWiPHxVZq1bnB1vEK1UkStTBPx6op/HLE8FK
         uGZY7Hde+lZVnwltXe7esWMrXjmSspF+x/RuCQ9UKOOscpNidsiN67N28m2FnkN62cA6
         hdTg==
X-Forwarded-Encrypted: i=1; AJvYcCVFkm1iCLHiQ7NqEcv82M/iyuhDBpIN+7/Qo4qvi1RGlWDTD3x6wler644Y+JW3ZkvmPWMzLXlW4ew=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzIxv6ulixkpKlXCPTGE7pZ5cBAoe8cJUEBtdHlcAb6bwlOPQev
	/7FyGqyFxgflEAy1WYzaX5mTLqBGIFLpePDrQru48X2IM9BEj3DE
X-Google-Smtp-Source: AGHT+IENz5mwtWHtkPPjZFK+I8sGggUcDkXaE5WZHxkY3QmdHU4icE62BAzIHG+lJO+kM3iPAsGlug==
X-Received: by 2002:a05:6512:2813:b0:539:9746:2d77 with SMTP id 2adb3069b0e04-539a07af74fmr3419652e87.61.1727965869012;
        Thu, 03 Oct 2024 07:31:09 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Dr. David Alan Gilbert" <dave@treblig.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Thomas Huth <thuth@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [PULL v1 1/5] hw/xen: Remove deadcode
Date: Thu,  3 Oct 2024 16:30:58 +0200
Message-ID: <20241003143103.1476805-2-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
References: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Dr. David Alan Gilbert" <dave@treblig.org>

xen_be_copy_grant_refs is unused since 2019's
  19f87870ba ("xen: remove the legacy 'xen_disk' backend")

xen_config_dev_console is unused since 2018's
  6d7c06c213 ("Remove broken Xen PV domain builder")

Remove them.

Signed-off-by: Dr. David Alan Gilbert <dave@treblig.org>
Acked-by: Anthony PERARD <anthony.perard@vates.tech>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/xen/xen-legacy-backend.c         | 18 ------------------
 hw/xen/xen_devconfig.c              |  8 --------
 include/hw/xen/xen-legacy-backend.h |  5 -----
 3 files changed, 31 deletions(-)

diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c
index 5514184f9c..e8e1ee4f7d 100644
--- a/hw/xen/xen-legacy-backend.c
+++ b/hw/xen/xen-legacy-backend.c
@@ -147,24 +147,6 @@ void xen_be_unmap_grant_refs(struct XenLegacyDevice *xendev, void *ptr,
     }
 }
 
-int xen_be_copy_grant_refs(struct XenLegacyDevice *xendev,
-                           bool to_domain,
-                           XenGrantCopySegment segs[],
-                           unsigned int nr_segs)
-{
-    int rc;
-
-    assert(xendev->ops->flags & DEVOPS_FLAG_NEED_GNTDEV);
-
-    rc = qemu_xen_gnttab_grant_copy(xendev->gnttabdev, to_domain, xen_domid,
-                                    segs, nr_segs, NULL);
-    if (rc) {
-        xen_pv_printf(xendev, 0, "xengnttab_grant_copy failed: %s\n",
-                      strerror(-rc));
-    }
-    return rc;
-}
-
 /*
  * get xen backend device, allocate a new one if it doesn't exist.
  */
diff --git a/hw/xen/xen_devconfig.c b/hw/xen/xen_devconfig.c
index 2150869f60..45ae134b84 100644
--- a/hw/xen/xen_devconfig.c
+++ b/hw/xen/xen_devconfig.c
@@ -66,11 +66,3 @@ int xen_config_dev_vkbd(int vdev)
     xen_config_dev_dirs("vkbd", "vkbd", vdev, fe, be, sizeof(fe));
     return xen_config_dev_all(fe, be);
 }
-
-int xen_config_dev_console(int vdev)
-{
-    char fe[256], be[256];
-
-    xen_config_dev_dirs("console", "console", vdev, fe, be, sizeof(fe));
-    return xen_config_dev_all(fe, be);
-}
diff --git a/include/hw/xen/xen-legacy-backend.h b/include/hw/xen/xen-legacy-backend.h
index 943732b8d1..e198b120c5 100644
--- a/include/hw/xen/xen-legacy-backend.h
+++ b/include/hw/xen/xen-legacy-backend.h
@@ -50,10 +50,6 @@ void *xen_be_map_grant_refs(struct XenLegacyDevice *xendev, uint32_t *refs,
 void xen_be_unmap_grant_refs(struct XenLegacyDevice *xendev, void *ptr,
                              uint32_t *refs, unsigned int nr_refs);
 
-int xen_be_copy_grant_refs(struct XenLegacyDevice *xendev,
-                           bool to_domain, XenGrantCopySegment segs[],
-                           unsigned int nr_segs);
-
 static inline void *xen_be_map_grant_ref(struct XenLegacyDevice *xendev,
                                          uint32_t ref, int prot)
 {
@@ -70,6 +66,5 @@ static inline void xen_be_unmap_grant_ref(struct XenLegacyDevice *xendev,
 void xen_config_cleanup(void);
 int xen_config_dev_vfb(int vdev, const char *type);
 int xen_config_dev_vkbd(int vdev);
-int xen_config_dev_console(int vdev);
 
 #endif /* HW_XEN_LEGACY_BACKEND_H */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:31:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:31:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809512.1221873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMrG-0008Im-Jp; Thu, 03 Oct 2024 14:31:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809512.1221873; Thu, 03 Oct 2024 14: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 1swMrG-0008If-HK; Thu, 03 Oct 2024 14:31:10 +0000
Received: by outflank-mailman (input) for mailman id 809512;
 Thu, 03 Oct 2024 14:31: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swMrF-0008IT-U3
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:31:09 +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 20dbaa55-8194-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 16:31:07 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2facf00b0c7so19575251fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:31:07 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faecca88d9sm2299871fa.125.2024.10.03.07.31.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:31:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 20dbaa55-8194-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727965867; x=1728570667; 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=8C4nrNcSwpJCvhGlbR4nfMYnpTDxaR88Y6Ftc/fnJec=;
        b=mGayxa5MF5k2LSvzk+Irrazt44WiVbyE2jZtKKCaeAGYmrXGM9Vh/PnFjTiB8TiBLS
         DYls8hfoyEtcbFzTCo7KmHzbyQby9WquXIX3L5DhszDI9cK1FrFFgHAL3uriaaC4KSUK
         gW4ZKrnJwslfnXY6DmiEqC4ZlxiwLME6SwhNBNjgToCIwClYrsF5Cjt4dFvL0GIyt4XK
         OCNUFUtV47mBiwJyuQPrsUhyUJX8JVX0cuFg7tgXKKSagUcUtYONk+QRQOHMZD03xDmM
         UQcEMnsiqGR5A/l2bdzypzBQ6dPBPI2vMlW9hUwdPCQkdTiiq/E/qlrGl2Qk0DUV/Nex
         DS/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965867; x=1728570667;
        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=8C4nrNcSwpJCvhGlbR4nfMYnpTDxaR88Y6Ftc/fnJec=;
        b=AQkP9rhWsUFLthg9PJuD7QP5kcIX8id3pAKYZ0xAikHryX40blqkWS8w2zhjQjI+k4
         S1I4AdRWxbjenK3BtJ9e2K1lizMpieThZ8qyFAG0oQo8LfiGBU7Ko9KYUcVvrSNmGkLb
         8f5+hnaL8f8RjFh9Li6qa5Zeaw7iCjgXTgt1Va/RtLPz5g1q3oa5gmpWyAljhhADHxFN
         jhdyZB8Jbjl5hz0E8zepcZj4igO1nIhRmiEQqNvBAcQ+WwAwlxB1OtdxIvzEy6WWFY2h
         UIe9vS1VnzE6aNcUt7hdWJHSQi+xzkc2Al5m746jQhZj8JrUnT9ULlwAjN6XuLnMVa6o
         HU8A==
X-Forwarded-Encrypted: i=1; AJvYcCXqwsiw67iQLtdfL5SRrYKRdi7AJdEV7D/LEH/uLSU5k2i25r6wGGuK+G+RVHno1dZktNO6GcvKQtU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzPNr9ViuJ7A8xcrGkmvBUZpgdzo234aHEM80/r9kA3mr0Hjiec
	OMI37oSFEROzsvukt/aOW0pL2LSo4zqes2BphiQGvNKURzyDeYZB
X-Google-Smtp-Source: AGHT+IEPodM5ZEmWqwQcLk3Nzn9ipU/whmdCEXyUk1Yq/FAtjqQ4wTbfCBEYct8NK3LaRXLoVZ8Q7Q==
X-Received: by 2002:a2e:5159:0:b0:2f3:f1cf:5314 with SMTP id 38308e7fff4ca-2faea223edemr10746221fa.10.1727965867122;
        Thu, 03 Oct 2024 07:31:07 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org
Subject: [PULL v1 0/5] Xen Queue
Date: Thu,  3 Oct 2024 16:30:57 +0200
Message-ID: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

The following changes since commit 423be09ab9492735924e73a2d36069784441ebc6:

  Merge tag 'warn-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging (2024-10-03 10:32:54 +0100)

are available in the Git repository at:

  https://gitlab.com/edgar.iglesias/qemu.git tags/edgar/xen-queue-2024-10-03.for-upstream

for you to fetch changes up to 507118c2a066b70e8069702c120461ad8c98ccd5:

  hw/arm: xenpvh: Enable PCI for ARM PVH (2024-10-03 15:24:42 +0200)

----------------------------------------------------------------
Edgars Xen Queue.

----------------------------------------------------------------
Dr. David Alan Gilbert (1):
      hw/xen: Remove deadcode

Edgar E. Iglesias (4):
      hw/xen: Expose handle_bufioreq in xen_register_ioreq
      hw/xen: xenpvh: Disable buffered IOREQs for ARM
      hw/xen: xenpvh: Add pci-intx-irq-base property
      hw/arm: xenpvh: Enable PCI for ARM PVH

 hw/arm/xen-pvh.c                    |  17 ++++++
 hw/i386/xen/xen-hvm.c               |   4 +-
 hw/i386/xen/xen-pvh.c               |   3 ++
 hw/xen/xen-hvm-common.c             | 101 ++++++++++++++++++++++--------------
 hw/xen/xen-legacy-backend.c         |  18 -------
 hw/xen/xen-pvh-common.c             |  40 +++++++++++++-
 hw/xen/xen_devconfig.c              |   8 ---
 include/hw/xen/xen-hvm-common.h     |   3 ++
 include/hw/xen/xen-legacy-backend.h |   5 --
 include/hw/xen/xen-pvh-common.h     |   3 ++
 include/hw/xen/xen_native.h         |   3 +-
 11 files changed, 133 insertions(+), 72 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:31:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:31:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809514.1221894 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMrK-0000MJ-3C; Thu, 03 Oct 2024 14:31:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809514.1221894; Thu, 03 Oct 2024 14:31: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 1swMrK-0000MA-04; Thu, 03 Oct 2024 14:31:14 +0000
Received: by outflank-mailman (input) for mailman id 809514;
 Thu, 03 Oct 2024 14:31: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swMrI-00005c-Vv
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:31:12 +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 234b232f-8194-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 16:31:12 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5398e4ae9efso1187354e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:31:11 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a82a38a6sm191699e87.217.2024.10.03.07.31.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:31:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 234b232f-8194-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727965871; x=1728570671; 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=opHAkxizOwjrlq5VyQ2hdU0DAn4w0L6+u/XZM8FV3ts=;
        b=WHmdUbdpZRYHiUNxWz5mCYDoDF0EfA/dUxPSAzIDafcK3zd0cPBGgd5uSinHz1NUX5
         4LUObLC7786bkelRURFHoaTMR0yTlDicINlLc1QtEINHk5vGSCPnTyYVE2kBRv3gKujR
         8JHFSkusoTtgx7p6OQi5pr8VwOCvjoYHO0+HsW+AS9GY+o+XSs+tCALf2jTjonakg+fH
         dsK//9hV+Dk0zLHBSWZp9xlK6K13MYpFxlAAMwJ+OVwNIPXhRFVhSg9S76PSuQ4McOH/
         dzMfkG0b3amuI/C/KB3qin+dpsg3O6iMD99ZDcXd0tTZlK21Saf7q2oq2z9mqt58MpW4
         2Q1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965871; x=1728570671;
        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=opHAkxizOwjrlq5VyQ2hdU0DAn4w0L6+u/XZM8FV3ts=;
        b=Ao9Zh9ShAbfmjcmk8Htf7NzgDjoRtzkjwxX6dtSaJdHkaQlmLfhV369cz+fTz4cL5F
         Tbal9tGfeFrH3N3Icrs2hfVPFmFu8jxD61mmDS3VisDc8MX1wXnQTG281sC9lq919z7O
         1U9jKJYpSfGH8OoyHTxuTn/6PFs1yKGThdEDUZ/7InNd9tFNevhdYeEa5AYbZLkIfYYc
         LiiDEjRnAJ+NoXs9/1eYZ2s4fh2xSRbyB7MEkiN0GV7st9gDGOC+FVIxwu9CtIkI4/2T
         RoWbv3FdUReQsCzNOvq9WFRCwh6KFmG22RGR1zmBIn5+3xixWhQZOMmpex32uvcSseNf
         3bjg==
X-Forwarded-Encrypted: i=1; AJvYcCWkaWHQw0HzfMVmFO+mRNkZbY6ZAR9Y8QI9SnvuzpKD5vqH8zGMklfQd18gqKv6U/7p4ybmcvsy/rA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzwMN1TACKKJy8husGBYDBhnMEwrAIXSWJDuQt1/lWtJ6YhZ0zw
	FhwsPRzNZ2pzz9sFgyacrUyHr3rg8XrAe45el7SpdmTb9/X7T1hV
X-Google-Smtp-Source: AGHT+IHt76trfUAo3X2djdRCfcBNTLDwcCDmqbU8H2X/oCHrgaYE6gDJizIgEZU7Zmu/NUrFBvluYg==
X-Received: by 2002:a05:6512:6288:b0:539:a3cd:97cb with SMTP id 2adb3069b0e04-539a3cde6b7mr3099308e87.43.1727965871243;
        Thu, 03 Oct 2024 07:31:11 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Subject: [PULL v1 2/5] hw/xen: Expose handle_bufioreq in xen_register_ioreq
Date: Thu,  3 Oct 2024 16:30:59 +0200
Message-ID: <20241003143103.1476805-3-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
References: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Expose handle_bufioreq in xen_register_ioreq().
This is to allow machines to enable or disable buffered ioreqs.

No functional change since all callers still set it to
HVM_IOREQSRV_BUFIOREQ_ATOMIC.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/i386/xen/xen-hvm.c           |   4 +-
 hw/xen/xen-hvm-common.c         | 101 ++++++++++++++++++++------------
 hw/xen/xen-pvh-common.c         |   4 +-
 include/hw/xen/xen-hvm-common.h |   3 +
 include/hw/xen/xen_native.h     |   3 +-
 5 files changed, 74 insertions(+), 41 deletions(-)

diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index 4f6446600c..d3df488c48 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -614,7 +614,9 @@ void xen_hvm_init_pc(PCMachineState *pcms, MemoryRegion **ram_memory)
 
     state = g_new0(XenIOState, 1);
 
-    xen_register_ioreq(state, max_cpus, &xen_memory_listener);
+    xen_register_ioreq(state, max_cpus,
+                       HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                       &xen_memory_listener);
 
     xen_is_stubdomain = xen_check_stubdomain(state->xenstore);
 
diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 3a9d6f981b..3ce994fc3a 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -667,6 +667,8 @@ static int xen_map_ioreq_server(XenIOState *state)
     xen_pfn_t ioreq_pfn;
     xen_pfn_t bufioreq_pfn;
     evtchn_port_t bufioreq_evtchn;
+    unsigned long num_frames = 1;
+    unsigned long frame = 1;
     int rc;
 
     /*
@@ -675,59 +677,79 @@ static int xen_map_ioreq_server(XenIOState *state)
      */
     QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_bufioreq != 0);
     QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_ioreq(0) != 1);
+
+    if (state->has_bufioreq) {
+        frame = 0;
+        num_frames = 2;
+    }
     state->fres = xenforeignmemory_map_resource(xen_fmem, xen_domid,
                                          XENMEM_resource_ioreq_server,
-                                         state->ioservid, 0, 2,
+                                         state->ioservid,
+                                         frame, num_frames,
                                          &addr,
                                          PROT_READ | PROT_WRITE, 0);
     if (state->fres != NULL) {
         trace_xen_map_resource_ioreq(state->ioservid, addr);
-        state->buffered_io_page = addr;
-        state->shared_page = addr + XC_PAGE_SIZE;
+        state->shared_page = addr;
+        if (state->has_bufioreq) {
+            state->buffered_io_page = addr;
+            state->shared_page = addr + XC_PAGE_SIZE;
+        }
     } else if (errno != EOPNOTSUPP) {
         error_report("failed to map ioreq server resources: error %d handle=%p",
                      errno, xen_xc);
         return -1;
     }
 
-    rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
-                                   (state->shared_page == NULL) ?
-                                   &ioreq_pfn : NULL,
-                                   (state->buffered_io_page == NULL) ?
-                                   &bufioreq_pfn : NULL,
-                                   &bufioreq_evtchn);
-    if (rc < 0) {
-        error_report("failed to get ioreq server info: error %d handle=%p",
-                     errno, xen_xc);
-        return rc;
-    }
-
-    if (state->shared_page == NULL) {
+    /*
+     * If we fail to map the shared page with xenforeignmemory_map_resource()
+     * or if we're using buffered ioreqs, we need xen_get_ioreq_server_info()
+     * to provide the the addresses to map the shared page and/or to get the
+     * event-channel port for buffered ioreqs.
+     */
+    if (state->shared_page == NULL || state->has_bufioreq) {
         trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
+        rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
+                                       (state->shared_page == NULL) ?
+                                       &ioreq_pfn : NULL,
+                                       (state->has_bufioreq &&
+                                        state->buffered_io_page == NULL) ?
+                                       &bufioreq_pfn : NULL,
+                                       &bufioreq_evtchn);
+        if (rc < 0) {
+            error_report("failed to get ioreq server info: error %d handle=%p",
+                         errno, xen_xc);
+            return rc;
+        }
 
-        state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
-                                                  PROT_READ | PROT_WRITE,
-                                                  1, &ioreq_pfn, NULL);
+        if (state->shared_page == NULL) {
+            trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
+
+            state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
+                                                      PROT_READ | PROT_WRITE,
+                                                      1, &ioreq_pfn, NULL);
+        }
         if (state->shared_page == NULL) {
             error_report("map shared IO page returned error %d handle=%p",
                          errno, xen_xc);
         }
-    }
 
-    if (state->buffered_io_page == NULL) {
-        trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
+        if (state->has_bufioreq && state->buffered_io_page == NULL) {
+            trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
 
-        state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
-                                                       PROT_READ | PROT_WRITE,
-                                                       1, &bufioreq_pfn,
-                                                       NULL);
-        if (state->buffered_io_page == NULL) {
-            error_report("map buffered IO page returned error %d", errno);
-            return -1;
+            state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
+                                                        PROT_READ | PROT_WRITE,
+                                                        1, &bufioreq_pfn,
+                                                        NULL);
+            if (state->buffered_io_page == NULL) {
+                error_report("map buffered IO page returned error %d", errno);
+                return -1;
+            }
         }
     }
 
-    if (state->shared_page == NULL || state->buffered_io_page == NULL) {
+    if (state->shared_page == NULL ||
+        (state->has_bufioreq && state->buffered_io_page == NULL)) {
         return -1;
     }
 
@@ -830,14 +852,15 @@ static void xen_do_ioreq_register(XenIOState *state,
         state->ioreq_local_port[i] = rc;
     }
 
-    rc = qemu_xen_evtchn_bind_interdomain(state->xce_handle, xen_domid,
-                                          state->bufioreq_remote_port);
-    if (rc == -1) {
-        error_report("buffered evtchn bind error %d", errno);
-        goto err;
+    if (state->has_bufioreq) {
+        rc = qemu_xen_evtchn_bind_interdomain(state->xce_handle, xen_domid,
+                                              state->bufioreq_remote_port);
+        if (rc == -1) {
+            error_report("buffered evtchn bind error %d", errno);
+            goto err;
+        }
+        state->bufioreq_local_port = rc;
     }
-    state->bufioreq_local_port = rc;
-
     /* Init RAM management */
 #ifdef XEN_COMPAT_PHYSMAP
     xen_map_cache_init(xen_phys_offset_to_gaddr, state);
@@ -865,6 +888,7 @@ err:
 }
 
 void xen_register_ioreq(XenIOState *state, unsigned int max_cpus,
+                        uint8_t handle_bufioreq,
                         const MemoryListener *xen_memory_listener)
 {
     int rc;
@@ -883,7 +907,8 @@ void xen_register_ioreq(XenIOState *state, unsigned int max_cpus,
         goto err;
     }
 
-    rc = xen_create_ioreq_server(xen_domid, &state->ioservid);
+    state->has_bufioreq = handle_bufioreq != HVM_IOREQSRV_BUFIOREQ_OFF;
+    rc = xen_create_ioreq_server(xen_domid, handle_bufioreq, &state->ioservid);
     if (!rc) {
         xen_do_ioreq_register(state, max_cpus, xen_memory_listener);
     } else {
diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 28d7168446..08641fdcec 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -194,7 +194,9 @@ static void xen_pvh_init(MachineState *ms)
     }
 
     xen_pvh_init_ram(s, sysmem);
-    xen_register_ioreq(&s->ioreq, ms->smp.max_cpus, &xen_memory_listener);
+    xen_register_ioreq(&s->ioreq, ms->smp.max_cpus,
+                       HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                       &xen_memory_listener);
 
     if (s->cfg.virtio_mmio_num) {
         xen_create_virtio_mmio_devices(s);
diff --git a/include/hw/xen/xen-hvm-common.h b/include/hw/xen/xen-hvm-common.h
index 3d796235dc..0f586c4384 100644
--- a/include/hw/xen/xen-hvm-common.h
+++ b/include/hw/xen/xen-hvm-common.h
@@ -81,6 +81,8 @@ typedef struct XenIOState {
     QLIST_HEAD(, XenPciDevice) dev_list;
     DeviceListener device_listener;
 
+    bool has_bufioreq;
+
     Notifier exit;
 } XenIOState;
 
@@ -95,6 +97,7 @@ void xen_device_unrealize(DeviceListener *listener, DeviceState *dev);
 
 void xen_hvm_change_state_handler(void *opaque, bool running, RunState rstate);
 void xen_register_ioreq(XenIOState *state, unsigned int max_cpus,
+                        uint8_t handle_bufioreq,
                         const MemoryListener *xen_memory_listener);
 
 void cpu_ioreq_pio(ioreq_t *req);
diff --git a/include/hw/xen/xen_native.h b/include/hw/xen/xen_native.h
index 1a5ad693a4..5caf91a616 100644
--- a/include/hw/xen/xen_native.h
+++ b/include/hw/xen/xen_native.h
@@ -464,10 +464,11 @@ static inline void xen_unmap_pcidev(domid_t dom,
 }
 
 static inline int xen_create_ioreq_server(domid_t dom,
+                                          int handle_bufioreq,
                                           ioservid_t *ioservid)
 {
     int rc = xendevicemodel_create_ioreq_server(xen_dmod, dom,
-                                                HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                                                handle_bufioreq,
                                                 ioservid);
 
     if (rc == 0) {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:31:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:31:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809515.1221904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMrN-0000ep-Ds; Thu, 03 Oct 2024 14:31:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809515.1221904; Thu, 03 Oct 2024 14:31: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 1swMrN-0000eY-A7; Thu, 03 Oct 2024 14:31:17 +0000
Received: by outflank-mailman (input) for mailman id 809515;
 Thu, 03 Oct 2024 14:31: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swMrL-0008IT-RY
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:31:15 +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 248dfebe-8194-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 16:31:14 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-5399041167cso1754292e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:31:14 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a8256ab3sm188873e87.79.2024.10.03.07.31.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:31:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 248dfebe-8194-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727965873; x=1728570673; 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=G14n863A5XJ+R3OWZM+ShGFWWx326n2e7KMDwbqTXOk=;
        b=gtBipwiL8/mWZjt7rgjpbEyZ+gZPw2VoYxBzvpV/1YAJ/iePVJzwZBUA3buXe4ulho
         hVOP2zAK3A1LUWMI1PFg7xPRBf9Co840gqswG1xkjl6dzHPqXmAhgGOX6JXYgVZ7s3V3
         Phz5CjkPi5ljV/Hb+lEez2mK3bfZ09LDdIQHfTQh2qnGIx7odPI6fRH4Q4U9MH5N+uIV
         BC/rSmRiz8PuarRlnDVo7NTlxSciFYhDOc5h1LxqNy6Ty+/E7Utf0hGPXf49e7fFGw0Z
         jMbOgOla6H9QYNhGORvxtWnX/+fbCxUhcDz7tF18j70SrJx5Y8ndLadQ6Wo5F4AQakjD
         5fEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965873; x=1728570673;
        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=G14n863A5XJ+R3OWZM+ShGFWWx326n2e7KMDwbqTXOk=;
        b=f2V9s2TkP6jttm8Utv4SeHK/3aQ21/BWqVKHwcH3aq1fsM/p4bBCrKYu+9xfYejC+q
         br0znZCuqO1MrjEsRHKFuU56vH8rGL/kQ18H/baNQ5ZcX0JG/YixW0Gq4M0yiVP8YFA+
         i7bL5PEGDCp4UACp1aj1SlzAvcZr3EChAxRxuZTcaAix7HaHwuTPjstYrUwZkhKAYnHD
         qyXIAltxLB2BTETWGb/ntgeVmk0iuc4RnOj3BUuT3phI2kPBMldHwhG9H9D+i76ndWV9
         5mfVGhfXWWPywuOIY98FKYlFK0NbyfV6Sm8hxjHSZKwQffmbdEix9AHkTQ0JA7y2Obls
         84GQ==
X-Forwarded-Encrypted: i=1; AJvYcCWzsX/Gh4dO7OtVb6UT6FHVzH69FDjgbNihdddfeeTk68Kc/CNPUVVvX9NKcT/r17y9fPwAGtEsCUw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzjYuxe463e255gmtQiu/QE7hhUDSK6nJG9JyYyI+4jYMVbrwGV
	WuM9+UzlINFuuwJuLgw5uFsEcb3VUT4nsy4UqAmY71GBZStABiZ9
X-Google-Smtp-Source: AGHT+IHOBNtTy8Z6hlO7HIVsJ2JrpsTcBJsLU3WHSwU8CKz+ObM1If7037IORqFyBvOjTb7coQLByw==
X-Received: by 2002:a05:6512:304e:b0:539:8d9b:b61c with SMTP id 2adb3069b0e04-539a07a62c1mr6698903e87.51.1727965873124;
        Thu, 03 Oct 2024 07:31:13 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	qemu-arm@nongnu.org
Subject: [PULL v1 3/5] hw/xen: xenpvh: Disable buffered IOREQs for ARM
Date: Thu,  3 Oct 2024 16:31:00 +0200
Message-ID: <20241003143103.1476805-4-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
References: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Add a way to enable/disable buffered IOREQs for PVH machines
and disable them for ARM. ARM does not support buffered
IOREQ's nor the legacy way to map IOREQ info pages.

See the following for more details:
https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=2fbd7e609e1803ac5e5c26e22aa8e4b5a6cddbb1
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/arm/ioreq.c;h=2e829d2e7f3760401b96fa7c930e2015fb1cf463;hb=HEAD#l138

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/arm/xen-pvh.c                | 3 +++
 hw/i386/xen/xen-pvh.c           | 3 +++
 hw/xen/xen-pvh-common.c         | 2 +-
 include/hw/xen/xen-pvh-common.h | 3 +++
 4 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/hw/arm/xen-pvh.c b/hw/arm/xen-pvh.c
index 04cb9855af..28af3910ea 100644
--- a/hw/arm/xen-pvh.c
+++ b/hw/arm/xen-pvh.c
@@ -66,6 +66,9 @@ static void xen_arm_machine_class_init(ObjectClass *oc, void *data)
      */
     mc->max_cpus = GUEST_MAX_VCPUS;
 
+    /* Xen/ARM does not use buffered IOREQs.  */
+    xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_OFF;
+
     /* List of supported features known to work on PVH ARM.  */
     xpc->has_tpm = true;
     xpc->has_virtio_mmio = true;
diff --git a/hw/i386/xen/xen-pvh.c b/hw/i386/xen/xen-pvh.c
index 45645667e9..f1f02d3311 100644
--- a/hw/i386/xen/xen-pvh.c
+++ b/hw/i386/xen/xen-pvh.c
@@ -89,6 +89,9 @@ static void xen_pvh_machine_class_init(ObjectClass *oc, void *data)
     /* We have an implementation specific init to create CPU objects.  */
     xpc->init = xen_pvh_init;
 
+    /* Enable buffered IOREQs.  */
+    xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_ATOMIC;
+
     /*
      * PCI INTX routing.
      *
diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 08641fdcec..76a9b2b945 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -195,7 +195,7 @@ static void xen_pvh_init(MachineState *ms)
 
     xen_pvh_init_ram(s, sysmem);
     xen_register_ioreq(&s->ioreq, ms->smp.max_cpus,
-                       HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                       xpc->handle_bufioreq,
                        &xen_memory_listener);
 
     if (s->cfg.virtio_mmio_num) {
diff --git a/include/hw/xen/xen-pvh-common.h b/include/hw/xen/xen-pvh-common.h
index bc09eea936..5cdd23c2f4 100644
--- a/include/hw/xen/xen-pvh-common.h
+++ b/include/hw/xen/xen-pvh-common.h
@@ -43,6 +43,9 @@ struct XenPVHMachineClass {
      */
     int (*set_pci_link_route)(uint8_t line, uint8_t irq);
 
+    /* Allow implementations to optionally enable buffered ioreqs.  */
+    uint8_t handle_bufioreq;
+
     /*
      * Each implementation can optionally enable features that it
      * supports and are known to work.
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:31:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:31:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809516.1221913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMrO-0000uf-L6; Thu, 03 Oct 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 809516.1221913; Thu, 03 Oct 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 1swMrO-0000uR-I5; Thu, 03 Oct 2024 14:31:18 +0000
Received: by outflank-mailman (input) for mailman id 809516;
 Thu, 03 Oct 2024 14:31: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swMrN-0008IT-PD
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:31:17 +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 25d802d9-8194-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 16:31:16 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2fad784e304so13832881fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:31:16 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faecc6b0a7sm2305121fa.94.2024.10.03.07.31.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:31:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25d802d9-8194-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727965876; x=1728570676; 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=Mm+KI23c86LD33sZYRxxXCIhV12T/Ywht8Xuz1hXe+0=;
        b=iorVldF5vsj1alGJS6X5b+4dcq1U3vB001sTeEbMYY+XZf0iC0FLExWm3BXm/AYJWq
         tpPmLjJmL0gT55qaboa8wRoaK0wCeCHCSxEMjx5oSk1SrjTJyxChbrgJR+SLIaWOAaUb
         Z4fTNIsAcmKEbFZD3fpcp1/Qii/ezbbvV7ds3mQ/4AB5t9OhBajGfW0GhanX/dIpfH0W
         /12zve0IyslZFK69epkbkW+/G7vxdLGzf8wKoCZWx6qsCPejYkqxXJF6LbrtIWXY0Ppt
         T+QdNQ7UuC8XJUfszoVJ5NZrmON1hzo2SRwvfrHKchxO/QYrnZIndAVBLc/lRHyCxyqX
         lHAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965876; x=1728570676;
        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=Mm+KI23c86LD33sZYRxxXCIhV12T/Ywht8Xuz1hXe+0=;
        b=CNhpdYF/EgaqnmLcvgpCCvk3i5MTnwf9tTqouE7k+MBcmVP7M9zAiDDeFv0blT1VRj
         xC/egBYgp+49uokjWyRxxiw9tVBao6rn/BRGRk8CXdh0vgDsZqfGNEqyAaafYAZHr1T2
         1Uagq8aj0t/L43URbESKdxTGIHJZzvigDUuPjCctFzKoJOuPXHjEyzAKsvdedNQaWDcI
         LkFyJ1dhuptffvdMiwGiSES1TFBD9otIfKs5uA3sbB9UN8Gre/uL9zew/yEYd+Z4Qn4f
         mI/9o8Zb5H5WGFIv45ll+ZB0WSS1WhpRwBJZ6r0m6uokU1bMABblyO/T5qQxT+/QBPS7
         SunA==
X-Forwarded-Encrypted: i=1; AJvYcCUVcyPr4nbHqxsSIRDw9AU/nWzoMrH1FvvQ+Qcu6C2W9mt/CGxsTQIU2Ni5I9zw6AXpsPnHU/MRiNM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwmBMQOHHvXCuBOhfWNXxjyAEztybWR6tbTlJX9aOePKadbK4BW
	9b0r4qG1GLLliio3fFa7PDucf7Su3Lk7Cg2MWAlak2JE7qdp/Oti
X-Google-Smtp-Source: AGHT+IHCsQYggo4+QHNTj+E9IQLO7FGvdIFdGsNJPj3Xn8OHbIfJIYVd+Xs40rnxZoWpf5j1Z25ZfA==
X-Received: by 2002:a2e:bc1a:0:b0:2fa:d723:efc8 with SMTP id 38308e7fff4ca-2fae1033a7amr52001111fa.26.1727965875455;
        Thu, 03 Oct 2024 07:31:15 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [PULL v1 4/5] hw/xen: xenpvh: Add pci-intx-irq-base property
Date: Thu,  3 Oct 2024 16:31:01 +0200
Message-ID: <20241003143103.1476805-5-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
References: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/xen/xen-pvh-common.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 76a9b2b945..218ac851cf 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -218,6 +218,11 @@ static void xen_pvh_init(MachineState *ms)
             error_report("pci-ecam-size only supports values 0 or 0x10000000");
             exit(EXIT_FAILURE);
         }
+        if (!s->cfg.pci_intx_irq_base) {
+            error_report("PCI enabled but pci-intx-irq-base not set");
+            exit(EXIT_FAILURE);
+        }
+
         xenpvh_gpex_init(s, xpc, sysmem);
     }
 
@@ -273,6 +278,30 @@ XEN_PVH_PROP_MEMMAP(pci_ecam)
 XEN_PVH_PROP_MEMMAP(pci_mmio)
 XEN_PVH_PROP_MEMMAP(pci_mmio_high)
 
+static void xen_pvh_set_pci_intx_irq_base(Object *obj, Visitor *v,
+                                          const char *name, void *opaque,
+                                          Error **errp)
+{
+    XenPVHMachineState *xp = XEN_PVH_MACHINE(obj);
+    uint32_t value;
+
+    if (!visit_type_uint32(v, name, &value, errp)) {
+        return;
+    }
+
+    xp->cfg.pci_intx_irq_base = value;
+}
+
+static void xen_pvh_get_pci_intx_irq_base(Object *obj, Visitor *v,
+                                          const char *name, void *opaque,
+                                          Error **errp)
+{
+    XenPVHMachineState *xp = XEN_PVH_MACHINE(obj);
+    uint32_t value = xp->cfg.pci_intx_irq_base;
+
+    visit_type_uint32(v, name, &value, errp);
+}
+
 void xen_pvh_class_setup_common_props(XenPVHMachineClass *xpc)
 {
     ObjectClass *oc = OBJECT_CLASS(xpc);
@@ -318,6 +347,13 @@ do {                                                                      \
         OC_MEMMAP_PROP(oc, "pci-ecam", pci_ecam);
         OC_MEMMAP_PROP(oc, "pci-mmio", pci_mmio);
         OC_MEMMAP_PROP(oc, "pci-mmio-high", pci_mmio_high);
+
+        object_class_property_add(oc, "pci-intx-irq-base", "uint32_t",
+                                  xen_pvh_get_pci_intx_irq_base,
+                                  xen_pvh_set_pci_intx_irq_base,
+                                  NULL, NULL);
+        object_class_property_set_description(oc, "pci-intx-irq-base",
+                                  "Set PCI INTX interrupt base line.");
     }
 
 #ifdef CONFIG_TPM
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:31:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:31:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809517.1221924 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMrQ-0001Dc-TE; Thu, 03 Oct 2024 14:31:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809517.1221924; Thu, 03 Oct 2024 14:31: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 1swMrQ-0001DV-PQ; Thu, 03 Oct 2024 14:31:20 +0000
Received: by outflank-mailman (input) for mailman id 809517;
 Thu, 03 Oct 2024 14:31: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swMrP-0008IT-Rc
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:31:19 +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 271af55b-8194-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 16:31:18 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5398e33155fso1320156e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:31:18 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a82570b4sm190849e87.91.2024.10.03.07.31.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:31:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 271af55b-8194-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727965878; x=1728570678; 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=7NqZgDSIdmym8k9v4wrElx9POiJdcsjS85l4BMSFw2Y=;
        b=Oib+6qKVXssGS/34dQCIZgsuM+ApUmF2KD8TKhjyw0cw1a/Sguf3c7vnm/cHwQIYLB
         T9nkv2eTYi3BpUOJ+0ei3JH7dw81cZbWlSigrqD84Dc/XBpRN+twaxDOgbF0p6NfEUKW
         kFV4cPtL3VdvpA0t1srR8n7ZynNt7NHBqmn0OC4aWeezwXLk/3nawEphKMyLpv1qh+Tx
         LfbMltpd2tB4Pyy7xKaIuZjxyuiD0nJB8blM0bQriVInDzvedlRI8wV8gPmUgweIQBlb
         SdvR64L6smD6ezB1QNpoJ+1vAZNRyNdYs2xuXZQSt6SMgn1w69TWQVX8z3ILWiZ2/F+R
         yjdQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727965878; x=1728570678;
        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=7NqZgDSIdmym8k9v4wrElx9POiJdcsjS85l4BMSFw2Y=;
        b=qI1NupL4SF0+b7VwgBHE/Agh0C7FchnCjlDfYHFmYqLl1kYq8wJ9VinMI/P+LUB9wp
         AowFsK53auT1Z5uLgzMJIe0bwt5oIDqyBlf3Fjt6nObEHBeS/yDudJA0K37B8+f9D9DG
         v6w0EtJzVUZ7ZJttSzk8eRq3sFUspAH1hePxf0LpKXOdIy1J+wHijuSz964noLgCBvcE
         zopYLGKhbCZUyUw9q2zAkuJ/QtdLA8P8gE8JbgJM9A+B0XzXGPz6TPcNpaYsHgFPebNC
         iq9vNlZ9nkol8SYJeboLkkTUyIoTRG2NaNBeNuTsJehfOtje68rUkwK1tKn+P3jV6+WI
         cf9A==
X-Forwarded-Encrypted: i=1; AJvYcCVz4VFIR+r+CnM/hRpKv+u7a9naB9e4eF2+gFl0piADQTAgjThTY+1L7//IonzRJgLf66DUzLH4rM0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyOx7SOi2rfqUw7UVZzxJnJDpQoLvYlZuqsBz+QiTUc9wyiiQRW
	Dc8gtkNk7D/QZdcguFk4b7O2TD7TbUK9JbQQHqh8KpPUM56vejCh
X-Google-Smtp-Source: AGHT+IET81PHAds/Q3QNcBRs8kVhS58wFGAWTG93rqF8wvxXNPYtyFncOLDYwbQheecmXThSjwTeoQ==
X-Received: by 2002:a05:6512:3da1:b0:539:93b2:1383 with SMTP id 2adb3069b0e04-539a07a1d8emr4381480e87.46.1727965877639;
        Thu, 03 Oct 2024 07:31:17 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	qemu-arm@nongnu.org
Subject: [PULL v1 5/5] hw/arm: xenpvh: Enable PCI for ARM PVH
Date: Thu,  3 Oct 2024 16:31:02 +0200
Message-ID: <20241003143103.1476805-6-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
References: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Enable PCI support for the ARM Xen PVH machine.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/arm/xen-pvh.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/hw/arm/xen-pvh.c b/hw/arm/xen-pvh.c
index 28af3910ea..33f0dd5982 100644
--- a/hw/arm/xen-pvh.c
+++ b/hw/arm/xen-pvh.c
@@ -39,6 +39,16 @@ static void xen_arm_instance_init(Object *obj)
                                          VIRTIO_MMIO_DEV_SIZE };
 }
 
+static void xen_pvh_set_pci_intx_irq(void *opaque, int intx_irq, int level)
+{
+    XenPVHMachineState *s = XEN_PVH_MACHINE(opaque);
+    int irq = s->cfg.pci_intx_irq_base + intx_irq;
+
+    if (xendevicemodel_set_irq_level(xen_dmod, xen_domid, irq, level)) {
+        error_report("xendevicemodel_set_pci_intx_level failed");
+    }
+}
+
 static void xen_arm_machine_class_init(ObjectClass *oc, void *data)
 {
     XenPVHMachineClass *xpc = XEN_PVH_MACHINE_CLASS(oc);
@@ -69,7 +79,11 @@ static void xen_arm_machine_class_init(ObjectClass *oc, void *data)
     /* Xen/ARM does not use buffered IOREQs.  */
     xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_OFF;
 
+    /* PCI INTX delivery.  */
+    xpc->set_pci_intx_irq = xen_pvh_set_pci_intx_irq;
+
     /* List of supported features known to work on PVH ARM.  */
+    xpc->has_pci = true;
     xpc->has_tpm = true;
     xpc->has_virtio_mmio = true;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:38:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809540.1221938 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swMyY-0003ow-OI; Thu, 03 Oct 2024 14:38:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809540.1221938; Thu, 03 Oct 2024 14: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 1swMyY-0003op-K7; Thu, 03 Oct 2024 14:38:42 +0000
Received: by outflank-mailman (input) for mailman id 809540;
 Thu, 03 Oct 2024 14:38: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 1swMyX-0003of-Jy; Thu, 03 Oct 2024 14:38: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 1swMyX-0004Kp-33; Thu, 03 Oct 2024 14:38: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 1swMyW-0003xP-M5; Thu, 03 Oct 2024 14:38:40 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swMyW-0006En-La; Thu, 03 Oct 2024 14:38: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=DVKtWeMzn75kZvENgAvcwFTJ7Li2UWlw9lOxC1KDxRo=; b=onXFgbxXKUemiESDpb8Y7YF6Bt
	jnmhkBHBI5ZapJEWt0gyZqzRhxMWObKQQ9+EjkZWU3j/SVzpGtiTWgvFce0kxvBmV9tyS21azlg8t
	CKNtMC0ZEOUk1XPo2nEUbmQ2XpeY5iYTdz0HbJInD9zmUVcHGedVg4wyXPoY9FFmCDW8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187944-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187944: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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:migrate-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-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-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-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2: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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw: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-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=41190d2ceb03b12ffc17a66c04de519c26a6052a
X-Osstest-Versions-That:
    xen=b102c9f1ce29262f33400920eeb41f23394ea99d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 14:38:40 +0000

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

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 187939
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187939
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187939
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187939
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187939
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187939
 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-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-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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  41190d2ceb03b12ffc17a66c04de519c26a6052a
baseline version:
 xen                  b102c9f1ce29262f33400920eeb41f23394ea99d

Last test of basis   187939  2024-10-02 14:20:13 Z    1 days
Testing same since   187944  2024-10-03 01:44:47 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   b102c9f1ce..41190d2ceb  41190d2ceb03b12ffc17a66c04de519c26a6052a -> master


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 14:58:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 14:58:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809559.1221947 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swNHW-0000Or-9W; Thu, 03 Oct 2024 14:58:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809559.1221947; Thu, 03 Oct 2024 14:58: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 1swNHW-0000Ok-6s; Thu, 03 Oct 2024 14:58:18 +0000
Received: by outflank-mailman (input) for mailman id 809559;
 Thu, 03 Oct 2024 14:58: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=CNe7=Q7=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swNHU-0000Ob-FA
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 14:58:16 +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 ea58d975-8197-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 16:58:14 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c8844f0ccaso1383144a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 07:58:14 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102859casm94462866b.47.2024.10.03.07.58.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 07:58:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ea58d975-8197-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727967493; x=1728572293; 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=JGsl96EbJi//MexkeYAYAOH4FIDs3vyRmf07tQpcP8o=;
        b=QgqalzLmx+kSEMaq4JaJz5zA39TqecoTtI1XvCNABQoY+vUqBe0XZ430qjF0h0Mpb2
         lYPGvfWVJq4MeGWCYA9JOfW85T5SlW+VhjInAuQ6e1/f0KO74QURbmyAbzV38rYOFsOj
         poRF1yEtAU2NlMO8p4uC/ZWKVflOMtIIr9pAs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727967493; x=1728572293;
        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=JGsl96EbJi//MexkeYAYAOH4FIDs3vyRmf07tQpcP8o=;
        b=mReVhFkvWbvo6EUHY3UAofF44/80OOnmemp9Bz/1xHKRdjWoqd9z9179MEXPUoiZYG
         SSxHBiPVRRnjDSr/Ivcy81AVQIpjpzIRofm+AndGj0Oez7a6sfVgeauTnnfNiPjxNcoO
         +5sidh/stZFzFEYzTw6ezzdVHjdqjFv9w3HQSe88+5VzEMJW+kXA884ygEhasv31+/6n
         G2b4PUVU8RqpCE6JCU+uvgvKDD02+yMSV7tPnfE218dHqesqGfDoHZSh7gQyw3gAYJcD
         Dc9fW7cLJk9EoK2eh6iPBthQ9iwA1tJdJKl6Cx9rZLdQDL71z7I3MgnHiN3X+V70EfTV
         O5Hw==
X-Gm-Message-State: AOJu0YwyjyaZgSXNtZEVmWF3fxwOi2qo3QAv2mr9yi5qRwKMzlkD+kUl
	CinnhkeWCTw1yRsu4GyEdvYT6TaZuyQfxtu0JbJXXncyDiEn8vfRuVGdvn+H2VgMZl0hGuR5JS+
	XsJ4=
X-Google-Smtp-Source: AGHT+IGUL/HZNccId+soyn3Qd3Ghz0NZo0SrhW0cj1SSeugN+ZN9/nQqP5oFTEuPOYgQ5optixsdCQ==
X-Received: by 2002:a17:907:8015:b0:a99:9e9:a401 with SMTP id a640c23a62f3a-a9909e9a892mr265023766b.19.1727967493407;
        Thu, 03 Oct 2024 07:58:13 -0700 (PDT)
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>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Frediano Ziglio <frediano.ziglio@cloud.com>
Subject: [PATCH] x86/boot: Don't use INC to set defaults
Date: Thu,  3 Oct 2024 15:58:10 +0100
Message-Id: <20241003145810.2217075-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

__efi64_mb2_start() makes some bold assumptions about the efi_platform and
skip_realmode booleans.  Set them to 1 explicitly, which is more robust.

Make the comment a little more consice.

No practical 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: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
CC: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/head.S | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index d1856d8012c9..af776c201a15 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -279,14 +279,12 @@ __efi64_mb2_start:
         pop     %rbx
         pop     %rax
 
-        /* We are on EFI platform and EFI boot services are available. */
-        incb    efi_platform(%rip)
-
         /*
-         * Disable real mode and other legacy stuff which should not
-         * be run on EFI platforms.
+         * efi_multiboot2_prelude() is happy that we're on EFI platform.  Skip
+         * the BIOS initialisation path.
          */
-        incb    skip_realmode(%rip)
+        movb    $1, efi_platform(%rip)
+        movb    $1, skip_realmode(%rip)
 
         /* Jump to trampoline_setup after switching CPU to x86_32 mode. */
         lea     trampoline_setup(%rip),%r15

base-commit: eb21ce14d709ef0c0030d0625028a4868c81126f
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:07:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:07:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809563.1221958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swNQh-0002Ju-4t; Thu, 03 Oct 2024 15:07:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809563.1221958; Thu, 03 Oct 2024 15:07: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 1swNQh-0002Jn-0x; Thu, 03 Oct 2024 15:07:47 +0000
Received: by outflank-mailman (input) for mailman id 809563;
 Thu, 03 Oct 2024 15:07: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=187q=Q7=bootlin.com=louis.chauvet@srs-se1.protection.inumbo.net>)
 id 1swNQe-0002Jh-Pf
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:07:45 +0000
Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net
 [217.70.183.193]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3cddfbcb-8199-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 17:07:42 +0200 (CEST)
Received: by mail.gandi.net (Postfix) with ESMTPSA id 11E6024000C;
 Thu,  3 Oct 2024 15:07: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: 3cddfbcb-8199-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1;
	t=1727968061;
	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=YZElLwQ5mHYReOaSmSvT7278JqqhnnyULQk+/1+1kJk=;
	b=YEH2YnPwiMskls9hd/gfzbIgYfC1qkcLesGnJNkrsmHEe3zu8VFZWm6BdgmnrnZ2Qgf6Mu
	rl3svRb/4mCMycfcmpARRBvji7+Ry/w2vzIC3T393ERmy9UbpVYnNhM87rfFxR4CxUfMDQ
	ksrKmVA99rcw5b1jA2ZNxjOLpTc24XkDfONA9tFeR45nmPl6UkQuJxTG6VYt19wt2k0OWd
	ly5GPToqHmZiL+uWVlGQozyWeIO9rxeLv5puwAjVLmo/Jys8TaMxMe0xWkBxg30yo2dr0e
	+qHYoE0Ir3I/BslTW53FebEDYX6GCccBs1oOkCfEqWwDeCFPtxDgi2SkeFavmA==
Date: Thu, 3 Oct 2024 17:07:35 +0200
From: Louis Chauvet <louis.chauvet@bootlin.com>
To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: Move crtc->{x, y, mode, enabled} to legacy
 sub-structure
Message-ID: <Zv6zN7Go_XG44P2-@louis-chauvet-laptop>
Mail-Followup-To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
 <20241002182200.15363-3-ville.syrjala@linux.intel.com>
 <Zv6QF2EmIcogtlLA@louis-chauvet-laptop>
 <Zv6gSGMXZZARf3oV@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Zv6gSGMXZZARf3oV@intel.com>
X-GND-Sasl: louis.chauvet@bootlin.com


> > > diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > index a40295c18b48..780681ea77e4 100644
> > > --- a/drivers/gpu/drm/vkms/vkms_crtc.c
> > > +++ b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > @@ -64,7 +64,7 @@ static int vkms_enable_vblank(struct drm_crtc *crtc)
> > >  	struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
> > >  	struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
> > >  
> > > -	drm_calc_timestamping_constants(crtc, &crtc->mode);
> > > +	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);
> > 
> > 	drm_calc_timestamping_constants(crtc, &crtc->state->mode);
> 
> This one doesn't look safe. You want to call that during your atomic
> commit already.
> 

This was already not safe with the previous implementation? Or it is only 
unsafe because now I use state->mode instead of legacy.mode?

After inspecting the code, I think I don't need to call it as:

In `vkms_atomic_commit_tail` (used in 
`@vkms_mode_config_helpers.atomic_commit_tail`), we call 
`drm_atomic_helper_commit_modeset_disables`, which call 
`drm_atomic_helper_calc_timestamping_constants` which call 
`drm_calc_timestamping_constants` for every CRTC.

I tested kms_vblank, all of them are SUCCESS/SKIP, do you know other tests 
that can trigger bugs?

-- 
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:28:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:28:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809572.1221968 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swNkQ-0006N1-Ng; Thu, 03 Oct 2024 15:28:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809572.1221968; Thu, 03 Oct 2024 15:28: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 1swNkQ-0006MR-Kv; Thu, 03 Oct 2024 15:28:10 +0000
Received: by outflank-mailman (input) for mailman id 809572;
 Thu, 03 Oct 2024 15:28: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=ein2=Q7=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1swNkP-0006L5-Cq
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:28:09 +0000
Received: from DUZPR83CU001.outbound.protection.outlook.com
 (mail-northeuropeazlp170130004.outbound.protection.outlook.com
 [2a01:111:f403:c200::4])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 16c8cdce-819c-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 17:28:07 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by PR3PR04MB7340.eurprd04.prod.outlook.com (2603:10a6:102:93::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.22; Thu, 3 Oct
 2024 15:28:04 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8005.024; Thu, 3 Oct 2024
 15:28: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: 16c8cdce-819c-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HtSehHTJmFGsXKome+4tE5UGrWvMqVkAYCNEwj36FqunnWDuvPoPlxr5FRyY8YYuS6Lbh5SAQvTsbDkYuQJ6ZpSdjlMdUehYS7Oy0rM4WGQGr8MWHCl+yw0e/badKSAzHCXjVha6AlnH816qhZWbK0AWMyuj6MSzfInOnCLsUX2rW+d4sStqD/g8gpl7ou8X8RAiN2LHSZzSax4gtWE+hzcm619T1SCZHm7JdtJcaGqNTIELo+oIZDMFVB7v61E19NsB6rzLuViYl/ik8b2BAe3jX7zVFlQK94VhkQDvau47WlwMjAZhQntZOjK1++NSVUTNn/us33HT2hqhPrk66Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jWeTAWnT8kf7baVCJ5SjmKDkHcd2sDY90XEk6NlA1lg=;
 b=dlnnyEW510j6ewB+n07UuWMisDy6pg+lUaCnqiP11GYoCIerbaOIm35WFPciBvSntlGzFyNw5cLdRaGlHPAUrT3vXO7oOVyAZHlnjrscTUz1a5s8Hk7EyINc3eA4Gop5jw6SzMObjxlPqrf1CYV2l1tF8HqOMW5kYhbJdeZOIf7ycgXjCU7V5s/2rwFYuiZsq1UrqDqrHDxwe2cpzaINfZ/0boImg+UKxnnskQX8j7vdlKpLeb8K0/Vq+pG4KGWsM9E+OMTIdn7Qog0uoSpSXZM7XhDS51MQKwumIi1r8RcBjl8DeAm/tRdH8C66xpxvmh82k39UuizM3fY2zyiuQQ==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jWeTAWnT8kf7baVCJ5SjmKDkHcd2sDY90XEk6NlA1lg=;
 b=AnrmGOYa1l9fnQLdGe3QNXJlErOnhTTZUAYWbsN+Yan5Z3MLcdPZ+cHGpL6RtOKHebEmjXScyf8srE5ekDjjbR2IQ0Q66E/0Ut9Fp/gIeEIQa4z0rthehhWYi29BqW+/hozPJjx2ae0sviNBXV/aFr4fcOBAbfHfcPbyVdIRowYy7KqyrMLdtmjYcLpwlI+7MSNqvqZmlDOOwjH8aDuWdA6zp/TsDsUW8bLNCCj4yu2Ka+V7GFY6TC/2hXES1NB18JrSGrSoPq2mo0+6674l8kmOar5TKL389VgfUOU4c71VzFQ9eVeVl206RUl5fysL0HM9XN7lqekjnEa7vWiIMg==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <3092497c-8626-4e86-b28a-16594eb2a4f0@oss.nxp.com>
Date: Thu, 3 Oct 2024 18:27:37 +0300
User-Agent: Mozilla Thunderbird
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
Subject: Re: [PATCH v2 3/8] xen/arm: Add SCMI over SMC calls handling layer
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
 <e713ae46-104a-4414-8ad3-02ca8b0a521d@xen.org>
Content-Language: en-US
In-Reply-To: <e713ae46-104a-4414-8ad3-02ca8b0a521d@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AS4P192CA0030.EURP192.PROD.OUTLOOK.COM
 (2603:10a6:20b:5e1::18) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|PR3PR04MB7340:EE_
X-MS-Office365-Filtering-Correlation-Id: 5f7fa984-a297-4d67-6971-08dce3bff960
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VmF3amlmYXR4djRKdGFkU3EwUDhKbnpxZjZHQWdvcFBkK2lKbjBvTXpSYWlF?=
 =?utf-8?B?b240NzAwb011cWQ4VHBFK3k4QUUrNnR1YjF4RmxNRVBGQVJGMHBqcVpJa1ZQ?=
 =?utf-8?B?dlNnek5VSUNOUGsxR0ZBejhKRUdyTVArZTh4akdmeUFZRWxXR2t5UENQNWZm?=
 =?utf-8?B?RDNTeUp3UlRpNm9YQ2RNdGZZSmtLdFdiMlE4ZXozdVZ6U1VUeHFmelN0dzVM?=
 =?utf-8?B?TkNtWEZvTW0vTHFad2c2NGZxbk56NGFFbmFjUkVuUFV4TEpob0J2VklqOElw?=
 =?utf-8?B?ZDhPZzE1Q0xkUmRYd0dOWExoeHpna0Q4MXFVaTZVY1RzK1plcXdlL2xFWkpT?=
 =?utf-8?B?WjB1alpoNG5FeU9kZDFIRXMrQkNBa2dteXc3dTBnWG5VeUY2OVJnbEthbGpW?=
 =?utf-8?B?WnJUQ0M4cFJUT1BGZjl4V3N5NkdGQ2FjSFo4THNRdElGOEhKcnErMDVSWUVG?=
 =?utf-8?B?VXNmMEhpalplWUw1aU54U3M5M2ZuZWFCMGx4MGppUjRzVFkwSFRMMXJUSFBq?=
 =?utf-8?B?dEc1NTZHdlVITElFS2pCVXNROFYwUENpb3VsRGN1TytQcXVtSkd6RFAwOHZP?=
 =?utf-8?B?ajFrYVRjQklHWUtibTF6dkt5eTRBbTk4V0Y2TzRLazI0eEVkcDVoNDJqdVJ1?=
 =?utf-8?B?K0RzYWxUMVUvSlFnUTJ4b3RFVnR5b05HeTIyYzRjQllDK1JoNC9ydmhuMUdP?=
 =?utf-8?B?Y3BFU0pYSG5VOWF0Z2d3NEt3aENkdzhFY1pHZHUwSW5kTjZUcmc3M0l3ejVv?=
 =?utf-8?B?UUd0ZS9aNUM2QmRhTXMvNzVDT3NubUZwQjk0aFlmeGpLOGRYcTFkYm8zMDMw?=
 =?utf-8?B?dndHWjFIbDFyZktFS0lvYlR5cTlQYkdyWGY0YUM3cE9QeDhRSU1nS3pUTStM?=
 =?utf-8?B?NjBCMStKbUM0WXRFekdqNHFkMis0ZHpsc1BzMldSRHFncHBGSDVIRFZCdk5F?=
 =?utf-8?B?SUZyc05zbzQvTmdlNndrNkN6dUtpY3h3bmZPQ0FxRzBvQmNLdVpHQTZGK29i?=
 =?utf-8?B?UlkxajJHQU93SzZ1WDFSZCtWYThUZHE2YURnZmxXNDBGajJqM2VzR1YzNTZ1?=
 =?utf-8?B?Tzh0UWZ5RldDV2l5Y2x2bkJIdjhjTUVjS3JZZWxEMUFzUFlRdWRac2h5V205?=
 =?utf-8?B?UVd0MzIreTRSYVExVXJFQm12ZXpnM0dUWGJSbnlrYWZnZ1RqT2l4Qi9VSWxM?=
 =?utf-8?B?dTZjYjE1eGxZSWFveDRjQmhmOU9NUk1GeksvZDVPWmp6RGxzaFlNaDliRkJZ?=
 =?utf-8?B?RkgrK21xK3gvMFJvc1paL0FxcUduUDQ5NEJpM2ZSWUdaSDVzNGNOUXp0WTFw?=
 =?utf-8?B?Vk10NStlSDRzUUZTcVNyLy9FK1phNE1WamJkek9XWjdMNXBwWXpScEdZT2sx?=
 =?utf-8?B?NSs4Ly82Tm9XeWhwMW9haHZJOXdHbEVyaEsxZnZud2JOMkoyVG5hTndCdnky?=
 =?utf-8?B?NG5td1RvQ2Q4WkNXcDlUUkcrKzZEaTAxZWRpOVhNRzArQUVYeldQcGtab1dh?=
 =?utf-8?B?d1p5ZXNzeU1IalNDQmdGMGpUZlNIMGs3TWlZVFpKdGFKaSs3V1Zab1B0alVm?=
 =?utf-8?B?WUg0NVpQbFlwQncyY1FLaHV1blk5aVk1bytyWnlaS1U3ZHhqL1JiT29FaGtL?=
 =?utf-8?B?SEtjbnlaa2loMUpIcm91ZFcvVjZ0aFg5cUdKOU54Kys4aGNlTWtQRXJOV2xB?=
 =?utf-8?B?bVBFeFBXWnJadC8zVGcvTjY0cmxHSEtYWDdTbTFWNWpJZWFFcE9UMy93PT0=?=
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:(13230040)(366016)(1800799024)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bGErZkxBZU91UlgrUGlrTzU0YzVoeU9ESWNoMVJhWEpKSWt2K0lHR0VPbXdC?=
 =?utf-8?B?ODlFTEptazVSV2xPZW82NHJGbkxYUVh6eDFYczBRbnFpbFREall3R01PdXQx?=
 =?utf-8?B?eU1MemdncXovQVliWllIdk5SU0NZRXB2dUlTV2EvSUlvMUU3czN4eVR2ZnAx?=
 =?utf-8?B?akYyVW5zaDNsbWZWNEU2d0dGTTRHV0t4T1ZEMkJDcjgyTGJmc2FCT2hmMUp6?=
 =?utf-8?B?aDlMakRjUVFVTjM2ZGp5YXd5WTZReFpRU25QSjVxbzhCK2RRWFhENGRWN2w4?=
 =?utf-8?B?Z25VSENGWWZrb0lndlcvRGJBTDdYdjdFcHRDVVllYWtPR01DVWlCS2dlcVBo?=
 =?utf-8?B?RDRCNlRWSXBBbGM2MHBSSzEyMzh5eDNSWTc2Y2lnaW9ZQlU5YUk4ajdMN0pG?=
 =?utf-8?B?T1R1Y0FadFJPNzQ3dnJCaW9yZmh5S0psWDJ2eHBXWmMzL3krVFdxWkx5U2dI?=
 =?utf-8?B?bURNakhnNVJwaXNoTTV3bUFzTlZsdlJwbEkveVQwbjFCQ1B6aWhTWXd0M2Qr?=
 =?utf-8?B?TDRJTGdXck5OQzVLZUYzU3pLNENaOWFDV1BIc3NDVVBTYmEyWlRHSVdRVnNp?=
 =?utf-8?B?SzloeURHUGZRYWFqMmlhcHo4d3VuUkVlcm1idjgwME41dTRVMDZkOGJ3QjJT?=
 =?utf-8?B?ZDZvY1lmTXk5ZUx5czRleHBSUlhRei9lS0pXS3V3eW0vWWtkSjhsZEhuR05K?=
 =?utf-8?B?U2ZPYVE2Sm1MRTc4NXAwM3creFRGQXdzcnFrSkJRZGxyMDlCUlkybkFIL1E5?=
 =?utf-8?B?N0dyajlrOE54RnRHWWdrY0JjNmFGMHNNRWNIQmUzMjNFWkpCbytMY1lsRC82?=
 =?utf-8?B?QnJ4aDMvMXRtYityOGpLaUtiTzNCR0ZtRm04cWpDVFBkT0g5LzY3MjBmZVRm?=
 =?utf-8?B?YldqZlo2L2F6eFBLSnVrOFhDKzB1amQyT3BVWXlSTHFxTEVucGdqYnZNQW9x?=
 =?utf-8?B?dHBRZlFtRE1FVVFZMmphVzJ2Z3IvUG9KYlVFbThGeDJLWEJRejVVTWpYbkpm?=
 =?utf-8?B?ZWtIYkI2ZGFONms0RGFqTkNENFdNRXR1YnNkN3Jad1JVWG1yUGE3NDF5RDhB?=
 =?utf-8?B?WFJybkI2eW1lZW1nOVVkeVoyU0QvOFhaQTU3dFdNQzNFeXBmMy8wNzFJUjdj?=
 =?utf-8?B?QmFhRS83TlludDV6c21SSGpMVzhwbkQrRTU3MGFVMHcyUHlZNERzcGVoMmgw?=
 =?utf-8?B?aUE4WkwyZjRKKzlFenZzZFRoZXd4QU1yMHl5WUFVNThISktKVFh2dnd1SHEz?=
 =?utf-8?B?cHlwcmEzWlYwTzNCWldNU2RzdUh3b01JT3VSOEY5TXJmWlFpcDZYdDh0bXFy?=
 =?utf-8?B?UVRCbnJWNjl2SUUrcXhyemFtakhzcUNham9ValBzTlEzV29OU1VWQ2tRWDVz?=
 =?utf-8?B?dlBXL00zcHl0VGc3VUVXdHFlQkZackRxT1JJLzZaUm1UVkRCWm1zMG5UcTZq?=
 =?utf-8?B?V1RLekt6V2VFV0JQaWJMTWlZbUVFbmNQZU42SjFCWlpIa1hVd05HUStBNlJs?=
 =?utf-8?B?TjkrL0ZzQnBGa1NnTElNWlE0Vi8rODBZbGVGL1ViWnVLM1dyajdPdG1vV0tL?=
 =?utf-8?B?Tk5xRzVJTzhaYzk3cENHRjZUN2J5MXZseHhnM3oyYVRreG12OGZJY1Q0Y0hz?=
 =?utf-8?B?dkVLVWtFWU5wVTg2bTJPK3RuQUtVKzlEeFhwWFpSMTBzYVJMbjNpVnAzdmxQ?=
 =?utf-8?B?cFFlVTIxL211S2hQemN6bVo2SHRnQnFoWDlmTDcwb3dWNWJ6QmwxM0RLeFVP?=
 =?utf-8?B?NHVaTnZSZUVMMlVFaTkzMmNybUJYaXBnVHhiVHBVdnhTclJDVUZqekFjQUpl?=
 =?utf-8?B?OTcyckZxUXlVM0V0S29qWjU5V1laYUp6MFB3NGxBVkdkRU5oazl3V2lCanVx?=
 =?utf-8?B?aGUzNnhXWXFaMW5WTHMzOWh1NEtVYjhaOGQzZ0hkTXNkc1g3Szc1TjltU00r?=
 =?utf-8?B?TWdOOS84bG8zb043NGNiaXRvR1YxTGQ3Z1BudTcrRVBMenJmU0JIL254Y2Zx?=
 =?utf-8?B?SmNvQSs1OXMwM01IQ0Q0Rm4wQUtKaTVLTU1EUnB1VXRHOS8zRzZNb3dRQ2xS?=
 =?utf-8?B?QXg1WWZqYlBROEJPZEZLODZzaVFvb216YWxmZGNSTjYrckpsN1JGZUFiNUwx?=
 =?utf-8?B?R0FtU2RzbGtPcUsyWk8xckZRNENQYXJ4cTlXemd1dzlHeEZQekUzVTM5TG0r?=
 =?utf-8?B?MXc9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5f7fa984-a297-4d67-6971-08dce3bff960
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2024 15:28:04.3848
 (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: 8Oruouf2Kch0ylGMEjDPK4cRFcRARYnzySlcxuE48VkLhOYN2tA11ZrAbUX4dL8NM+x5I05CZH1eT0YHP0yWgpLPeaLlBr0jDZH6zgbLFxs=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7340

Hi Julien,


On 01/10/2024 12:35, Julien Grall wrote:
>
>
> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>
>> Introduce the SCMI layer to have some basic degree of awareness
>> about SMC calls that are based on the ARM System Control and
>> Management Interface (SCMI) specification (DEN0056E).
>>
>> The SCMI specification includes various protocols for managing
>> system-level resources, such as: clocks, pins, reset, system power,
>> power domains, performance domains, etc. The clients are named
>> "SCMI agents" and the server is named "SCMI platform".
>>
>> Only support the shared-memory based transport with SMCs as
>> the doorbell mechanism for notifying the platform. Also, this
>> implementation only handles the "arm,scmi-smc" compatible,
>> requiring the following properties:
>>     - "arm,smc-id" (unique SMC ID)
>>     - "shmem" (one or more phandles pointing to shmem zones
>>     for each channel)
>>
>> The initialization is done as 'presmp_initcall', since we need
>> SMCs and PSCI should already probe EL3 FW for supporting SMCCC.
>
> presmp_initcall() should only be used when we really need to initialize a subsytem very early. But it is not clear why this can't be called in initcall. Can you clarify?

Right, I will change it to __initcall(), as there's no specific reason
to do it as a presmp_initcall().

The commit message was meant to imply that PSCI initialization is
a prerequisite (because it also initializes SMC capabilities,
which IMO should be decoupled from PSCI).

But of course there shouldn't be any hard deadline to initializing
SCMI, if obviously we're doing it before Dom0 starts booting.

>
>> If no "arm,scmi-smc" compatible node is found in Dom0's
>> DT
>
> You are checking the host device tree. Dom0's DT will be created by Xen based on the host device tree when the domain is ceated.

Indeed, I will change it to Host DT.

My choice of words came from the train of thought that Dom0
is the closest to a native Linux, which would have the SCMI
firmware node as part of its DT. And Dom0 basically gets
most of the original host device tree by default, except
some special nodes. But I will change it.

Thanks for the suggestion.

>
>> , the initialization fails silently, as it's not mandatory.
>> Otherwise, we get the 'arm,smc-id' DT property from the node,
>> to know the SCMI SMC ID we handle. The 'shmem' memory ranges
>> are not validated, as the SMC calls are only passed through
>> to EL3 FW if coming from Dom0 and as if Dom0 would be natively
>> running.
>>
>> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>> ---
>>   xen/arch/arm/Kconfig                |  10 ++
>>   xen/arch/arm/Makefile               |   1 +
>>   xen/arch/arm/include/asm/scmi-smc.h |  52 +++++++++
>>   xen/arch/arm/scmi-smc.c             | 163 ++++++++++++++++++++++++++++
>>   4 files changed, 226 insertions(+)
>>   create mode 100644 xen/arch/arm/include/asm/scmi-smc.h
>>   create mode 100644 xen/arch/arm/scmi-smc.c
>>
>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>> index 323c967361..adf53e2de1 100644
>> --- a/xen/arch/arm/Kconfig
>> +++ b/xen/arch/arm/Kconfig
>> @@ -245,6 +245,16 @@ config PARTIAL_EMULATION
>>         not been emulated to their complete functionality. Enabling this might
>>         result in unwanted/non-spec compliant behavior.
>>   +config SCMI_SMC
>> +    bool "Enable forwarding SCMI over SMC calls from Dom0 to EL3 firmware"
>
> Strictly speaking you are forwarding SMC from the hardware domain. For Arm, it is dom0 but it doesn't need to.

Well, SCMI is Arm-specific and so are SMCs, but I agree to change
to "hardware domain" / "hwdom" in order to keep the language generic.

Will update everywhere.

>
>> +    default y
> > +    help> +      This option enables basic awareness for SCMI calls using SMC as
>> +      doorbell mechanism and Shared Memory for transport ("arm,scmi-smc"
>> +      compatible only). The value of "arm,smc-id" DT property from SCMI
>> +      firmware node is used to trap and forward corresponding SCMI SMCs
>> +      to firmware running at EL3, if the call comes from Dom0.
>
> Same here.

Will update.

>
> > +>   endmenu
>>     menu "ARM errata workaround via the alternative framework"
>> diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
>> index 7792bff597..b85ad9c13f 100644
>> --- a/xen/arch/arm/Makefile
>> +++ b/xen/arch/arm/Makefile
>> @@ -45,6 +45,7 @@ obj-y += platform_hypercall.o
>>   obj-y += physdev.o
>>   obj-y += processor.o
>>   obj-y += psci.o
>> +obj-$(CONFIG_SCMI_SMC) += scmi-smc.o
>>   obj-y += setup.o
>>   obj-y += shutdown.o
>>   obj-y += smp.o
>> diff --git a/xen/arch/arm/include/asm/scmi-smc.h b/xen/arch/arm/include/asm/scmi-smc.h
>> new file mode 100644
>> index 0000000000..c6c0079e86
>> --- /dev/null
>> +++ b/xen/arch/arm/include/asm/scmi-smc.h
>> @@ -0,0 +1,52 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +/*
>> + * xen/arch/arm/include/asm/scmi-smc.h
>> + *
>> + * ARM System Control and Management Interface (SCMI) over SMC
>> + * Generic handling layer
>> + *
>> + * Andrei Cherechesu <andrei.cherechesu@nxp.com>
>> + * Copyright 2024 NXP
>> + */
>> +
>> +#ifndef __ASM_SCMI_SMC_H__
>> +#define __ASM_SCMI_SMC_H__
>> +
>> +#include <xen/types.h>
>> +#include <asm/regs.h>
>> +
>> +#ifdef CONFIG_SCMI_SMC
>> +
>> +bool scmi_is_enabled(void);
>> +bool scmi_is_valid_smc_id(uint32_t fid);
>> +bool scmi_handle_smc(struct cpu_user_regs *regs);
>> +
>> +#else
>> +
>> +static inline bool scmi_is_enabled(void)
>> +{
>> +    return false;
>> +}
>> +
>> +static inline bool scmi_is_valid_smc_id(uint32_t fid)
>> +{
>> +    return false;
>> +}
>> +
>> +static inline bool scmi_handle_smc(struct cpu_user_regs *regs)
>> +{
>> +    return false;
>> +}
>> +
>> +#endif /* CONFIG_SCMI_SMC */
>> +
>> +#endif /* __ASM_SCMI_H__ */
>> +
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>> diff --git a/xen/arch/arm/scmi-smc.c b/xen/arch/arm/scmi-smc.c
>> new file mode 100644
>> index 0000000000..373ca7ba5f
>> --- /dev/null
>> +++ b/xen/arch/arm/scmi-smc.c
>> @@ -0,0 +1,163 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +/*
>> + * xen/arch/arm/scmi-smc.c
>> + *
>> + * ARM System Control and Management Interface (SCMI) over SMC
>> + * Generic handling layer
>> + *
>> + * Andrei Cherechesu <andrei.cherechesu@nxp.com>
>> + * Copyright 2024 NXP
>> + */
>> +
>> +#include <xen/acpi.h>
>> +#include <xen/device_tree.h>
>> +#include <xen/errno.h>
>> +#include <xen/init.h>
>> +#include <xen/sched.h>
>> +#include <xen/types.h>
>> +
>> +#include <asm/scmi-smc.h>
>> +#include <asm/smccc.h>
>> +
>> +#define SCMI_SMC_ID_PROP   "arm,smc-id"
>> +
>> +static bool scmi_support;
>> +static uint32_t scmi_smc_id;
>
> AFAICT, the two variables should not change after boot. So they should be marked __ro_after_init.

Right, will update.

>
>
>> +
>> +/* Check if SCMI layer correctly initialized and can be used. */
>> +bool scmi_is_enabled(void)
>> +{
>> +    return scmi_support;
>> +}
>> +
>> +/*
>> + * Check if provided SMC Function Identifier matches the one known by the SCMI
>> + * layer, as read from DT prop 'arm,smc-id' during initialiation.
>> + */
>> +bool scmi_is_valid_smc_id(uint32_t fid)
>> +{
>> +    return (fid == scmi_smc_id);
>> +}
>> +
>> +/*
>> + * Generic handler for SCMI-SMC requests, currently only forwarding the
>> + * request to FW running at EL3 if it came from Dom0. Is called from the vSMC
>
> s/dom0/hardware domain/

Will update.

>
>
>> + * layer for SiP SMCs, since SCMI calls are usually provided this way.
>> + * Can also be called from `platform_smc()` plat-specific callback.
>
> I am not entirely sure I understand the value of calling the function from platform_smc(). I also don't see any use of it in this series, so probably best to remove the sentence for now.

Will remove. It doesn't need to be called from platform_smc(),
since it's a call chain.

>
>
> > + *> + * Returns true if SMC was handled (regardless of response), false otherwise.
>> + */
>> +bool scmi_handle_smc(struct cpu_user_regs *regs)
>> +{
>> +    struct arm_smccc_res res;
>> +
>> +    /* Only the hardware domain should use SCMI calls */
>> +    if ( !is_hardware_domain(current->domain) )
>> +    {
>> +        gprintk(XENLOG_ERR, "SCMI: Unprivileged d%d cannot use SCMI.\n",
>
> Please use %pd instead d%d. With that you can simply use...

Will update.

>
>> +                current->domain->domain_id);
>
> ... current->domain here.

Will update.

>
> > +        return false;> +    }
>> +
>> +    /* For the moment, forward the SCMI Request to FW running at EL3 */
>> +    arm_smccc_1_1_smc(scmi_smc_id,
>> +                      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;
>> +}
>> +
>> +static int __init scmi_check_smccc_ver(void)
>> +{
>> +    if ( smccc_ver < ARM_SMCCC_VERSION_1_1 )
>> +    {
>> +        printk(XENLOG_ERR
> > +               "SCMI: No SMCCC 1.1 support, SCMI calls forwarding disabled\n");> +        return -ENOSYS;
>> +    }
>> +
>> +    return 0;
>> +}
>> +
>> +static int __init scmi_dt_init_smccc(void)
>> +{
>> +    static const struct dt_device_match scmi_ids[] __initconst =
>> +    {
>> +        /* We only support "arm,scmi-smc" binding for now */
>> +        DT_MATCH_COMPATIBLE("arm,scmi-smc"),
>> +        { /* sentinel */ },
>> +    };
>> +    const struct dt_device_node *scmi_node;
>> +    const char *smc_id_prop = SCMI_SMC_ID_PROP;
>
> NIT: I would remove smc_id_prop and use SCMI_SMC_ID_PROP directly.

Sure, will update.

>
>
>> +    int ret;
>> +
>> +    /* If no SCMI firmware node found, fail silently as it's not mandatory */
> > +    scmi_node = dt_find_matching_node(NULL, scmi_ids);> +    if ( !scmi_node )
>> +        return -EOPNOTSUPP;
>> +
>> +    ret = dt_property_read_u32(scmi_node, smc_id_prop, &scmi_smc_id);
>> +    if ( !ret )
>> +    {
>> +        printk(XENLOG_ERR "SCMI: No valid \"%s\" property in \"%s\" DT node\n",
>> +               smc_id_prop, scmi_node->full_name);
>> +        return -ENOENT;
>> +    }
>> +
>> +    scmi_support = true;
>> +
>> +    return 0;
>> +}
>> +
>> +/* Initialize the SCMI layer based on SMCs and Device-tree */
>> +static int __init scmi_init(void)
>> +{
>> +    int ret;
>> +
>> +    if ( !acpi_disabled )
>> +    {
>> +        printk("SCMI is not supported when using ACPI\n");
>
> NIT: Can you use XENLOG_WARN in front?

Will add.

>
>
>> +        return -EINVAL;
>> +    }
>> +
>> +    ret = scmi_check_smccc_ver();
>> +    if ( ret )
>> +        goto err;
>> +
>> +    ret = scmi_dt_init_smccc();
>> +    if ( ret == -EOPNOTSUPP )
>> +        return ret;
>> +    if ( ret )
>> +        goto err;
>> +
>> +    printk(XENLOG_INFO "Using SCMI with SMC ID: 0x%x\n", scmi_smc_id);
>> +
>> +    return 0;
>> +
>> +err:
>> +    printk(XENLOG_ERR "SCMI: Initialization failed (ret = %d)\n", ret);
>
> In the commit message, you said the SCMI subsystem was optional. But here you use XENLOG_ERR. Shouldn't it be a warn or XENLOG_INFO/XENLOG_WARN?

Well, SCMI is optional, in the sense that if we don't find the
SCMI firmware node in the host DT, we exit silently (-EOPNOTSUPP)
and we return right away (no error printed).

But if we do find the SCMI node, it means that we should initialize
the SCMI subsystem, right? And if we're trying to do that and we
find that the DT node is not correctly formatted (i.e. the
'arm,smc-id' property), I think we should print an error.

However, I think we shouldn't print an error if we return
with an error code from scmi_check_smccc_ver(). And the print
inside scmi_check_smccc_ver() should be a XENLOG_WARN.

So, I think we should print a XENLOG_ERR only if we figured
we need to initialize, and we started to do it but it failed.

What do you think?

>
>> +    return ret;
>> +}
>> +
>> +presmp_initcall(scmi_init);
>
> See my question above about using __initcall.

As mentioned, will change to __initcall.

>
>
>> +
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * tab-width: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>
> Cheers,
>



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:29:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:29:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809579.1221978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swNlc-0007J7-4u; Thu, 03 Oct 2024 15:29:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809579.1221978; Thu, 03 Oct 2024 15:29: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 1swNlc-0007J0-1c; Thu, 03 Oct 2024 15:29:24 +0000
Received: by outflank-mailman (input) for mailman id 809579;
 Thu, 03 Oct 2024 15:29: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=IJdh=Q7=linux.intel.com=ville.syrjala@srs-se1.protection.inumbo.net>)
 id 1swNla-0006wh-Hr
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:29:22 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 41b97736-819c-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 17:29:20 +0200 (CEST)
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
 by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 03 Oct 2024 08:29:18 -0700
Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74])
 by fmviesa008.fm.intel.com with SMTP; 03 Oct 2024 08:29:11 -0700
Received: by stinkbox (sSMTP sendmail emulation);
 Thu, 03 Oct 2024 18:29:10 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 41b97736-819c-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1727969361; x=1759505361;
  h=date:from:to:subject:message-id:references:mime-version:
   content-transfer-encoding:in-reply-to;
  bh=YvquIwwg5/j4zuorAq7NmB4oxpw4k5D2MxcNq7+7jVA=;
  b=JewvC40H/0MVGiTGQesEK3gpNkaNjRb0fZ2pZNLvPXGoD9goi0SzY1ck
   R+dfi47e0zOqKM7jr/uZJfXz6V8YsvSRMiBusrkz3RUAghj+4dxFcXwa8
   6IkQpDHH05j5S6At1ZRblzzroeONbiZ8CxyyqVpmgehFYi0aSmo1d/61u
   fsNyNa63EtiOzfcqURfChcASocnmlL73ww1nYyAA953sV9Ru2kEbLtDtQ
   AMK9YlTKf/ha9ldezoH4KkrzNc1hZ/UbbhawSzPJl7FS8C7d2ZAqwKxaH
   hvYN+Wj87ZsstI38U9Mjdoc58IwXRqN0wGVtDmRQ6uuLvJkHX7XA1yYi5
   w==;
X-CSE-ConnectionGUID: pPZ5+d//QQO++nIo7vvWdw==
X-CSE-MsgGUID: jDl19JY4Q/O8FdMMO1277w==
X-IronPort-AV: E=McAfee;i="6700,10204,11214"; a="26680404"
X-IronPort-AV: E=Sophos;i="6.11,174,1725346800"; 
   d="scan'208";a="26680404"
X-CSE-ConnectionGUID: R4ZdAm2cSWCWdcBvo+HW5w==
X-CSE-MsgGUID: Rg93cpzSR3e/8YcpWOq3jg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,174,1725346800"; 
   d="scan'208";a="74496623"
Date: Thu, 3 Oct 2024 18:29:10 +0300
From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>
To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: Move crtc->{x, y, mode, enabled} to legacy
 sub-structure
Message-ID: <Zv64RktMPv2rpCZf@intel.com>
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
 <20241002182200.15363-3-ville.syrjala@linux.intel.com>
 <Zv6QF2EmIcogtlLA@louis-chauvet-laptop>
 <Zv6gSGMXZZARf3oV@intel.com>
 <Zv6zN7Go_XG44P2-@louis-chauvet-laptop>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <Zv6zN7Go_XG44P2-@louis-chauvet-laptop>
X-Patchwork-Hint: comment

On Thu, Oct 03, 2024 at 05:07:35PM +0200, Louis Chauvet wrote:
> 
> > > > diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > > index a40295c18b48..780681ea77e4 100644
> > > > --- a/drivers/gpu/drm/vkms/vkms_crtc.c
> > > > +++ b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > > @@ -64,7 +64,7 @@ static int vkms_enable_vblank(struct drm_crtc *crtc)
> > > >  	struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
> > > >  	struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
> > > >  
> > > > -	drm_calc_timestamping_constants(crtc, &crtc->mode);
> > > > +	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);
> > > 
> > > 	drm_calc_timestamping_constants(crtc, &crtc->state->mode);
> > 
> > This one doesn't look safe. You want to call that during your atomic
> > commit already.
> > 
> 
> This was already not safe with the previous implementation? Or it is only 
> unsafe because now I use state->mode instead of legacy.mode?

Yeah, if you want to look at obj->state then you need the corresponding
lock.

obj->state is also not necessarily the correct state you want because
a parallel commit could have already swapped in a new state but the
hardware is still on the old state.

Basically 99.9% of code should never even look at obj->state, and
instead should always use the for_each_new_<obj>_in_state()
and drm_atomic_get_new_<obj>_state() stuff. Currently that is a
pipe dream though because a lot of drivers haven't been fixed to
do things properly. If we ever manage to fix everything then we
could remove the stall hacks from drm_atomic_helper_swap_state()
and allow a commit pipeline of arbitrary length.

> 
> After inspecting the code, I think I don't need to call it as:
> 
> In `vkms_atomic_commit_tail` (used in 
> `@vkms_mode_config_helpers.atomic_commit_tail`), we call 
> `drm_atomic_helper_commit_modeset_disables`, which call 
> `drm_atomic_helper_calc_timestamping_constants` which call 
> `drm_calc_timestamping_constants` for every CRTC.

Slightly odd place for it, but I think that's just because it was
originally part of drm_atomic_helper_update_legacy_modeset_state()
and I didn't bother looking for a better home for it when I split
it out. But seems like it should work fine as is.

> 
> I tested kms_vblank, all of them are SUCCESS/SKIP, do you know other tests 
> that can trigger bugs?

You would explicitly have to race commits against vblank_enable.
Could of course sprinkle sleep()s around to widen the race window
if you're really keen to hit it.

-- 
Ville Syrjl
Intel


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:33:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:33:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809587.1221989 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swNpR-0000Nr-Lv; Thu, 03 Oct 2024 15:33:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809587.1221989; Thu, 03 Oct 2024 15: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 1swNpR-0000Nk-HU; Thu, 03 Oct 2024 15:33:21 +0000
Received: by outflank-mailman (input) for mailman id 809587;
 Thu, 03 Oct 2024 15:33: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 1swNpQ-0000Ne-8W
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:33: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 1swNpP-0005LV-Em; Thu, 03 Oct 2024 15:33:19 +0000
Received: from [15.248.2.26] (helo=[10.24.67.18])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1swNpP-0007oh-7o; Thu, 03 Oct 2024 15:33: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=NgnNiLPbqBo4DIF2/k/ywFTnJeDvlLJifdYq1Mq2Jmo=; b=KAgnghc0Y8sqBrBKbbAqsMzn6s
	mfc0OJP6sgB6G/r/7kJmvk2d5s6MN/QeYMN1zyJA1pubWUVV+WDtF7ubsTDoQGx7kRM9ITUGLAzaB
	XtZ6E09rD6UVNxQAjc19meKUF0L2PLgHoPSg6lxqpp1TEXGpxWaTG8ii3Qa4kRWk90FE=;
Message-ID: <68a21529-196a-41f0-9156-8fc36f038a5a@xen.org>
Date: Thu, 3 Oct 2024 16:33:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/4] dt-overlay: Fix NULL pointer dereference
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>
References: <20240919104238.232704-1-michal.orzel@amd.com>
 <20240919104238.232704-2-michal.orzel@amd.com>
 <72bd286a-9ed9-43f0-8935-fb9e07e180cd@xen.org>
 <74bddc2d-59f2-4961-b226-76ce62376c37@amd.com>
 <a104a49e-07f8-4485-ab03-9fe1dcf41f33@xen.org>
 <d41c1433-95cf-4ae0-b1e8-008b374f468a@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <d41c1433-95cf-4ae0-b1e8-008b374f468a@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 30/09/2024 15:04, Michal Orzel wrote:
> Hi Julien,
> 
> On 30/09/2024 12:37, Julien Grall wrote:
>>
>>
>> On 23/09/2024 12:05, Michal Orzel wrote:
>>> Hi Julien,
>>
>> Hi Michal,
>>
>>> On 20/09/2024 10:29, Julien Grall wrote:
>>>>
>>>>
>>>> Hi Michal,
>>>>
>>>> On 19/09/2024 12:42, Michal Orzel wrote:
>>>>> Attempt to attach an overlay (xl dt-overlay attach) to a domain without
>>>>> first adding this overlay to Xen (xl dt-overlay add) results in an
>>>>> overlay track entry being NULL in handle_attach_overlay_nodes(). This
>>>>> leads to NULL pointer dereference and the following data abort crash:
>>>>>
>>>>> (XEN) Cannot find any matching tracker with input dtbo. Operation is supported only for prior added dtbo.
>>>>> (XEN) Data Abort Trap. Syndrome=0x5
>>>>> (XEN) Walking Hypervisor VA 0x40 on CPU0 via TTBR 0x0000000046948000
>>>>> (XEN) 0TH[0x000] = 0x46940f7f
>>>>> (XEN) 1ST[0x000] = 0x0
>>>>> (XEN) CPU0: Unexpected Trap: Data Abort
>>>>> (XEN) ----[ Xen-4.20-unstable  arm64  debug=y  Not tainted ]----
>>>>> ...
>>>>> (XEN) Xen call trace:
>>>>> (XEN)    [<00000a0000208b30>] dt_overlay_domctl+0x304/0x370 (PC)
>>>>> (XEN)    [<00000a0000208b30>] dt_overlay_domctl+0x304/0x370 (LR)
>>>>> (XEN)    [<00000a0000274b7c>] arch_do_domctl+0x48/0x328
>>>>>
>>>>> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
>>>>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
>>>>> ---
>>>>>     xen/common/dt-overlay.c | 7 +++++--
>>>>>     1 file changed, 5 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
>>>>> index d53b4706cd2f..8606b14d1e8e 100644
>>>>> --- a/xen/common/dt-overlay.c
>>>>> +++ b/xen/common/dt-overlay.c
>>>>> @@ -908,8 +908,11 @@ static long handle_attach_overlay_nodes(struct domain *d,
>>>>>      out:
>>>>>         spin_unlock(&overlay_lock);
>>>>>
>>>>> -    rangeset_destroy(entry->irq_ranges);
>>>>> -    rangeset_destroy(entry->iomem_ranges);
>>>>> +    if ( entry )
>>>>> +    {
>>>>> +        rangeset_destroy(entry->irq_ranges);
>>>>> +        rangeset_destroy(entry->iomem_ranges);
>>>>> +    }
>>>>
>>>> While looking at the error paths in handle_attach_overlay_nodes(), I
>>>> noticed we don't revert any partial changes made by handle_device().
>>>>
>>>> In this case, I am wondering whether it is correct to destroy the
>>>> rangeset. How would you be able to revert the changes?
>>> I guess the same story applies as for the partial add/remove which was stated by Vikram
>>> in the commit msg of 7e5c4a8b86f12942de0566b1d61f71d15774364b meaning partial success withe some
>>> failures may lead to other failures and might need a system reboot. I did not carefully look into
>>> this series, my plan was to fix the issues without changing the functional behavior.
>>
>> Do you mean in this series or forever? If the former, would you be able
>> to outline what you expect after the end of this series? What should
>> work? What should not work?
> The goal of this series is to fix the issues I encountered while doing some other DT overlay work
> as stated in the patch 0. The goal of each patch is clearly outlined in the commit message
> by stating what is being fixed and why. The first 3 patches contain "Fixes" tag, therefore there> is no functional behavior change - only fixing what should have been 
fixed by the original series.
> Patch 4 does not have "Fixes" tag although in theory it could. There is no doc mentioning that adding
> nodes right into "/" is forbidden. Linux supports it so I added support for Xen as well.
> 
> After end of *this* series I expect the issues mentioned in each patch to be fixed + the ability to add
> nodes directly under root node.
> 
> It's definitely not the end of fixes for this series.

Good. This wasn't clear from your wording. Thanks for clarification!

>>
>>> FWICS, we do not
>>> yet support detachment (only add/remove and attach) and removal of nodes and ranges is only
>>> possible if the nodes are assigned to hwdom.
>>
>> I need some clarifications. By "we do not yet support detachment", do
>> you mean while a guest is running or do you also include a domain
>> shutting down?In order to reason about detachment we need to go back to see what is supported in terms of attachment.
> At the moment, we can only attach dtbo to 1:1 domUs, therefore we can stop talking about libxl domUs for now.

Ah, I missed the check. I thought we already supported device attachment 
to guest started by xl.

> For dom0less domUs, we also cannot really shut down them. So it leaves us with dom0 whose reboot implies system
> reboot. At the moment there is no code that would release IRQs and unmap MMIOs.

Understood. Then no action expected from my side for now. But it would 
be good to keep track of the unknown issues when we will implement detach.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:42:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:42:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809592.1221998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swNyQ-0002kn-G4; Thu, 03 Oct 2024 15:42:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809592.1221998; Thu, 03 Oct 2024 15:42: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 1swNyQ-0002kg-Cn; Thu, 03 Oct 2024 15:42:38 +0000
Received: by outflank-mailman (input) for mailman id 809592;
 Thu, 03 Oct 2024 15:42: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swNyO-0002ka-Um
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:42:37 +0000
Received: from mail-oa1-x2c.google.com (mail-oa1-x2c.google.com
 [2001:4860:4864:20::2c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1c57eff2-819e-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 17:42:36 +0200 (CEST)
Received: by mail-oa1-x2c.google.com with SMTP id
 586e51a60fabf-27b7a1480bdso495648fac.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 08:42:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c57eff2-819e-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727970154; x=1728574954; 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=7TgMKQEUnWh0lDCfN36M+VOq1kl4DP/9LuG15M+vcAQ=;
        b=RLgdKwiATNaF5DMrSN7w45Ed2WNp9DD3g6vOaZOdr9JPgDYqw0+HoWlkMWWJOkYtgD
         XcvkV425g6J18gX1ZmbeKdSMyBCvr6eRJdzLgt/9NPWDhVYMBbYg1d+LF3G/HgUPnvqb
         DHbWuvOpqrtRUBzpIPKpYhNP7NF78eZs/kRB4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727970154; x=1728574954;
        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=7TgMKQEUnWh0lDCfN36M+VOq1kl4DP/9LuG15M+vcAQ=;
        b=XW2hRijfr0/av/l0P9bMk6k64Ko7BfkZgWQDYTLKVYFh0GSuWyTr0Qr4D/vwkNcdat
         4iUCRjswXKyWy7+iFl26VkoUekdpRouW5F7/B5UzZdaCOz575fDB1TVnfvo78Ke0/fSa
         aDPjrSScMOGEUdjurUiySFvanFM7ix6s8lrVc5ZPs/jt3m4jrnhztmYfyFwb38vvoEAM
         Ac7oH9sFS861Qpn6Txu3kzmvYLle9+OeY4nK/R1cGRsgu9Zcw9dyXYVuDLVSpxXvN/50
         JaJwdu6i0ZKxGlRp3LCmT/Xg64wRFr5E6MaJ+UDmPzvp+VwKwcbbeJSVA5k8YBKIdT8z
         0rgg==
X-Gm-Message-State: AOJu0YzOoMwutQDiTOGGhI7XaC9jaxbKPfYi3T8DerfKryOlMtmrA9AM
	+V+yahD7UJxlelGnGNjCq4rdKeSdLp2TyDVrpDeiv0GYeKtxDirVtkiwFNeyyAUTtje1RL+WYt/
	EeqsBw6G0HAMvinvh8JYSXmtZ+snZqf92pGKjlQ==
X-Google-Smtp-Source: AGHT+IHBCCAxr5AemcMOmGd2TiquPoXpOZca8TY0SUXiGfkLYN2i12RVyeKqmF+zLlUc8upHOn+f1o0IB3Z+oIUSzCM=
X-Received: by 2002:a05:687c:2bea:b0:277:bc16:12c3 with SMTP id
 586e51a60fabf-28788a7378bmr4364244fac.17.1727970154620; Thu, 03 Oct 2024
 08:42:34 -0700 (PDT)
MIME-Version: 1.0
References: <20241003145810.2217075-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241003145810.2217075-1-andrew.cooper3@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 3 Oct 2024 16:42:23 +0100
Message-ID: <CACHz=ZhDuQd5CGY+05dCciu7K1xFKwpN1NORbqHdG4wijivzMQ@mail.gmail.com>
Subject: Re: [PATCH] x86/boot: Don't use INC to set defaults
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Jan Beulich <JBeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 3, 2024 at 3:58=E2=80=AFPM Andrew Cooper <andrew.cooper3@citrix=
.com> wrote:
>
> __efi64_mb2_start() makes some bold assumptions about the efi_platform an=
d
> skip_realmode booleans.  Set them to 1 explicitly, which is more robust.
>
> Make the comment a little more consice.
>
> No practical change.
>
> 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: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>
> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
> CC: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
>  xen/arch/x86/boot/head.S | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> index d1856d8012c9..af776c201a15 100644
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -279,14 +279,12 @@ __efi64_mb2_start:
>          pop     %rbx
>          pop     %rax
>
> -        /* We are on EFI platform and EFI boot services are available. *=
/
> -        incb    efi_platform(%rip)
> -
>          /*
> -         * Disable real mode and other legacy stuff which should not
> -         * be run on EFI platforms.
> +         * efi_multiboot2_prelude() is happy that we're on EFI platform.=
  Skip
> +         * the BIOS initialisation path.
>           */
> -        incb    skip_realmode(%rip)
> +        movb    $1, efi_platform(%rip)
> +        movb    $1, skip_realmode(%rip)
>
>          /* Jump to trampoline_setup after switching CPU to x86_32 mode. =
*/
>          lea     trampoline_setup(%rip),%r15
>
> base-commit: eb21ce14d709ef0c0030d0625028a4868c81126f

Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>

I like _Bool !

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:45:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:45:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809597.1222007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swO14-0003KE-R5; Thu, 03 Oct 2024 15:45:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809597.1222007; Thu, 03 Oct 2024 15:45: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 1swO14-0003K7-Od; Thu, 03 Oct 2024 15:45:22 +0000
Received: by outflank-mailman (input) for mailman id 809597;
 Thu, 03 Oct 2024 15:45: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=187q=Q7=bootlin.com=louis.chauvet@srs-se1.protection.inumbo.net>)
 id 1swO12-0003Jz-6p
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:45:21 +0000
Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net
 [2001:4b98:dc4:8::224])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7c38e32d-819e-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 17:45:18 +0200 (CEST)
Received: by mail.gandi.net (Postfix) with ESMTPSA id 6E6A6E0002;
 Thu,  3 Oct 2024 15:45: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: 7c38e32d-819e-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1;
	t=1727970315;
	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=KEG391uPbET+smFrjuUd3Gbf+SfD/X5R0PGVdaNVyDQ=;
	b=TICrwrFPqNQr0FkllJojskNhDNyxJBBjJ7p1KfIigSpe1yz5eAAGd2ZrO2BidvC6/A+Qom
	NZAd/9RJSz1RiDd3lLdtADp5nqX9bQyWNoBMaYmxSJhOSDe0T0fZ3BzR0Se1uCIXgHLatP
	0EnPqF616SrgdCpZaDlShmBrP13ZbIXW9Bj7Oi5IuZvb8HSqOh6m1SReSPJmtquU99Yk9c
	wA7Vpopy8iwsQYMzzsZgtNT4idP5iRQdLFv3pdXkbJyEmdQQR3dqplUNNyYzH1sATd/MpW
	BCY3lPJp+f+t7R9s2mNyuYyLKxVcwMtVAupvHPO8B9IX4HLM2IwIi9MsvKSHrQ==
Date: Thu, 3 Oct 2024 17:45:10 +0200
From: Louis Chauvet <louis.chauvet@bootlin.com>
To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: Move crtc->{x, y, mode, enabled} to legacy
 sub-structure
Message-ID: <Zv68Bj8UTNvRSmFj@louis-chauvet-laptop>
Mail-Followup-To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Liviu Dudau <liviu.dudau@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Inki Dae <inki.dae@samsung.com>,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Sandy Huang <hjc@rock-chips.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Hans de Goede <hdegoede@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Zack Rusin <zack.rusin@broadcom.com>, amd-gfx@lists.freedesktop.org,
	linux-mediatek@lists.infradead.org,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org,
	virtualization@lists.linux.dev, spice-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, xen-devel@lists.xenproject.org
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
 <20241002182200.15363-3-ville.syrjala@linux.intel.com>
 <Zv6QF2EmIcogtlLA@louis-chauvet-laptop>
 <Zv6gSGMXZZARf3oV@intel.com>
 <Zv6zN7Go_XG44P2-@louis-chauvet-laptop>
 <Zv64RktMPv2rpCZf@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <Zv64RktMPv2rpCZf@intel.com>
X-GND-Sasl: louis.chauvet@bootlin.com

Le 03/10/24 - 18:29, Ville Syrjl a crit :
> On Thu, Oct 03, 2024 at 05:07:35PM +0200, Louis Chauvet wrote:
> > 
> > > > > diff --git a/drivers/gpu/drm/vkms/vkms_crtc.c b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > > > index a40295c18b48..780681ea77e4 100644
> > > > > --- a/drivers/gpu/drm/vkms/vkms_crtc.c
> > > > > +++ b/drivers/gpu/drm/vkms/vkms_crtc.c
> > > > > @@ -64,7 +64,7 @@ static int vkms_enable_vblank(struct drm_crtc *crtc)
> > > > >  	struct drm_vblank_crtc *vblank = drm_crtc_vblank_crtc(crtc);
> > > > >  	struct vkms_output *out = drm_crtc_to_vkms_output(crtc);
> > > > >  
> > > > > -	drm_calc_timestamping_constants(crtc, &crtc->mode);
> > > > > +	drm_calc_timestamping_constants(crtc, &crtc->legacy.mode);
> > > > 
> > > > 	drm_calc_timestamping_constants(crtc, &crtc->state->mode);
> > > 
> > > This one doesn't look safe. You want to call that during your atomic
> > > commit already.
> > > 
> > 
> > This was already not safe with the previous implementation? Or it is only 
> > unsafe because now I use state->mode instead of legacy.mode?
> 
> Yeah, if you want to look at obj->state then you need the corresponding
> lock.
> 
> obj->state is also not necessarily the correct state you want because
> a parallel commit could have already swapped in a new state but the
> hardware is still on the old state.
> 
> Basically 99.9% of code should never even look at obj->state, and
> instead should always use the for_each_new_<obj>_in_state()
> and drm_atomic_get_new_<obj>_state() stuff. Currently that is a
> pipe dream though because a lot of drivers haven't been fixed to
> do things properly. If we ever manage to fix everything then we
> could remove the stall hacks from drm_atomic_helper_swap_state()
> and allow a commit pipeline of arbitrary length.
>
> > 
> > After inspecting the code, I think I don't need to call it as:
> > 
> > In `vkms_atomic_commit_tail` (used in 
> > `@vkms_mode_config_helpers.atomic_commit_tail`), we call 
> > `drm_atomic_helper_commit_modeset_disables`, which call 
> > `drm_atomic_helper_calc_timestamping_constants` which call 
> > `drm_calc_timestamping_constants` for every CRTC.
> 
> Slightly odd place for it, but I think that's just because it was
> originally part of drm_atomic_helper_update_legacy_modeset_state()
> and I didn't bother looking for a better home for it when I split
> it out. But seems like it should work fine as is.

I just send a patch for this! Thanks for your help!

[1]:https://lore.kernel.org/all/20241003-remove-legacy-v1-1-0b7db1f1a1a6@bootlin.com/
 
> > 
> > I tested kms_vblank, all of them are SUCCESS/SKIP, do you know other tests 
> > that can trigger bugs?
> 
> You would explicitly have to race commits against vblank_enable.
> Could of course sprinkle sleep()s around to widen the race window
> if you're really keen to hit it.
> 
> -- 
> Ville Syrjl
> Intel

-- 
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:48:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:48:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809604.1222018 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swO4K-0004YZ-Am; Thu, 03 Oct 2024 15:48:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809604.1222018; Thu, 03 Oct 2024 15: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 1swO4K-0004YS-7C; Thu, 03 Oct 2024 15:48:44 +0000
Received: by outflank-mailman (input) for mailman id 809604;
 Thu, 03 Oct 2024 15:48: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=xwa6=Q7=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swO4I-0004YM-VH
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:48:42 +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 f6ccd6f4-819e-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 17:48:41 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso228687166b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 08:48:41 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104d405bsm99336666b.209.2024.10.03.08.48.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 08:48:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f6ccd6f4-819e-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727970521; x=1728575321; 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=jGSJdK8dZ+Zejs0OmL22LSsmE9M9fS2SaAN5fEv9f4w=;
        b=bv+EVg9E4J4Q0xfBFMtIcYIjaMgfMPN77hVnDDfRVO+Uix46LOKKEbrpfKNyt9ORDJ
         Sfg6H2UzHeVszQz0dRXap1JSXHP+knFMuhWAk0uKGSCx+/JhlgeGvn75uGiF9uvQVjoQ
         G6L8+0+aZA/jjfT43krUAkXeJLmDdxm/qdb74=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727970521; x=1728575321;
        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=jGSJdK8dZ+Zejs0OmL22LSsmE9M9fS2SaAN5fEv9f4w=;
        b=T0tRKr1a/5GVZM7xM4WQfGdLcLDvS1KHabZDL7Nvm1v3CJsAZ37qG1wJqlyhaqIzNH
         TzYR/+QyTpaH1tRrf9tw7XWM+IEwAoIRQwWQDkWH8eAQ0Jks+i0hz4TYRMpLB1dMleZU
         5Hb77fba0FKEPcYvzlUbg4+qhaOvGzNp/LLW//gwZ2Q3YSbDPra7aZYQRTjMQeRokYKy
         xfKearbW8OpoCpwNJbMnnEyoyhWuDS7lCSEdIoaq3LXlbp3h+/Sp6BmG217rZhrsObRW
         0T4gFPnYN0n4BCtEhEzSvLNwDbwFtS9gVmpEL4ncrvYsPxbfwCInBhze1TD8sPbxLPzh
         Djxg==
X-Forwarded-Encrypted: i=1; AJvYcCV0sqPE2EOLzVSHfvT7L8zfYsL7StGrvln5Z9S63Ga65KQaGUOp+a8Ro/ibmEHN3F/9+FXT6LeTKKE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwgEqJgzsM5lmERoBlptMQnPy3SabR4/tDsDnDPnAaHtJAf7opT
	rYVz4jt0Uq9irDliLaKNXWcWB38Mep2Oo7Xlon+gd3KLzEBJADkQA+gUzHGaol5oE8CPpxXUw52
	C
X-Google-Smtp-Source: AGHT+IF7Ecf4sw1eeyvF0gT1BkMVmqZk1aQTFk7QFGgMcD15aZWPfaix0HWa7lPp8iHG0cMS5cic3A==
X-Received: by 2002:a17:907:9488:b0:a8b:58e3:ac1f with SMTP id a640c23a62f3a-a990a053f56mr413595366b.12.1727970521161;
        Thu, 03 Oct 2024 08:48:41 -0700 (PDT)
Date: Thu, 3 Oct 2024 17:48:39 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Jan Beulich <JBeulich@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH] x86/boot: Don't use INC to set defaults
Message-ID: <Zv681_sK3WQ4xYy9@macbook.local>
References: <20241003145810.2217075-1-andrew.cooper3@citrix.com>
 <CACHz=ZhDuQd5CGY+05dCciu7K1xFKwpN1NORbqHdG4wijivzMQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CACHz=ZhDuQd5CGY+05dCciu7K1xFKwpN1NORbqHdG4wijivzMQ@mail.gmail.com>

On Thu, Oct 03, 2024 at 04:42:23PM +0100, Frediano Ziglio wrote:
> On Thu, Oct 3, 2024 at 3:58 PM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
> >
> > __efi64_mb2_start() makes some bold assumptions about the efi_platform and
> > skip_realmode booleans.  Set them to 1 explicitly, which is more robust.
> >
> > Make the comment a little more consice.
> >
> > No practical 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: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> > CC: Daniel P. Smith <dpsmith@apertussolutions.com>
> > CC: Frediano Ziglio <frediano.ziglio@cloud.com>
> > ---
> >  xen/arch/x86/boot/head.S | 10 ++++------
> >  1 file changed, 4 insertions(+), 6 deletions(-)
> >
> > diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> > index d1856d8012c9..af776c201a15 100644
> > --- a/xen/arch/x86/boot/head.S
> > +++ b/xen/arch/x86/boot/head.S
> > @@ -279,14 +279,12 @@ __efi64_mb2_start:
> >          pop     %rbx
> >          pop     %rax
> >
> > -        /* We are on EFI platform and EFI boot services are available. */
> > -        incb    efi_platform(%rip)
> > -
> >          /*
> > -         * Disable real mode and other legacy stuff which should not
> > -         * be run on EFI platforms.
> > +         * efi_multiboot2_prelude() is happy that we're on EFI platform.  Skip
> > +         * the BIOS initialisation path.
> >           */
> > -        incb    skip_realmode(%rip)
> > +        movb    $1, efi_platform(%rip)
> > +        movb    $1, skip_realmode(%rip)
> >
> >          /* Jump to trampoline_setup after switching CPU to x86_32 mode. */
> >          lea     trampoline_setup(%rip),%r15
> >
> > base-commit: eb21ce14d709ef0c0030d0625028a4868c81126f
> 
> Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:50:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:50:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809611.1222028 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swO5d-0006DH-PV; Thu, 03 Oct 2024 15:50:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809611.1222028; Thu, 03 Oct 2024 15: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 1swO5d-0006DA-LC; Thu, 03 Oct 2024 15:50:05 +0000
Received: by outflank-mailman (input) for mailman id 809611;
 Thu, 03 Oct 2024 15:50: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=CNe7=Q7=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swO5c-0005yS-K2
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:50:04 +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 269fcf9d-819f-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 17:50:02 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a910860e4dcso180612566b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 08:50:02 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99103b32c1sm100788166b.133.2024.10.03.08.50.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 08:50:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 269fcf9d-819f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727970601; x=1728575401; 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=LiZhG8myK6zhll5rKFd+aK+8En+t5qp2DgVt1qXZGGg=;
        b=a0sJLzE1JsM90/WREq3a9y2T2EjsgbWwp/E8rpmX02u9HxWcbVKQH9PDMDGa1V0TrF
         FdQRCoruKiJFwo0GUUqeJCkgGoD33LqLPGU04xWH/hvQf2zf3I8czkWOH9pRlNMUC/mx
         Iva/eeQ1lIIRi3+GdsgOTn0ZxACZ8ejhmnCNM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727970601; x=1728575401;
        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=LiZhG8myK6zhll5rKFd+aK+8En+t5qp2DgVt1qXZGGg=;
        b=pxWkVRLSJ5YbrZ/+4QYuZ5/9sSFdFRvOPGkWkFZxydkWVp2Cjs1dqD4iFON7H3dj5O
         YoPM+r5Te4ivrVtrFWsAlOkoVoE1VOdx568TAxBVaVNZmXxax2qL2zNECz88BvD5ggoD
         aS4E7DyO4GGnKmpvZ/s6iv1SUohmvAf6tnL/vyYTcOJ367Y9zZrJ2RSK2ZF7UmxVdqi1
         UI2pC7aDm6omfZK0phbyD3T8qucqGnBD7P/oTlfzZSPL47VJQVFj7nqJFV9e3qjhuT5c
         DgjILrGjjBJ1/z3zWPQSMhH3TEOM1KIJdlVR84scl1mzWA8AkJkG/VTunV8x93WkUDF+
         3trA==
X-Gm-Message-State: AOJu0YyTzapv11lHwB7QUnJUkChVvMhmRubeOweu/4kDVbOCUX9k8frD
	tQGauTbTI5v4psKCNw+gl2fYp3ib884WqFgE2kuWOk0dsSbE72/XjOKBJY/E2oEJhmZLlGFDa2t
	KLY8=
X-Google-Smtp-Source: AGHT+IHsZtmcLNNNErhUByPuKqrCvAfwFjcz9yNq6cYVEI/+B2HdcGSo//JB6v3HWT5MzNNoY9C+hg==
X-Received: by 2002:a17:907:9304:b0:a77:f2c5:84a9 with SMTP id a640c23a62f3a-a98f821de96mr839360366b.18.1727970601473;
        Thu, 03 Oct 2024 08:50:01 -0700 (PDT)
Message-ID: <eed00d56-2a96-419d-88c6-0704a8843b63@citrix.com>
Date: Thu, 3 Oct 2024 16:49:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Don't use INC to set defaults
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>
References: <20241003145810.2217075-1-andrew.cooper3@citrix.com>
 <CACHz=ZhDuQd5CGY+05dCciu7K1xFKwpN1NORbqHdG4wijivzMQ@mail.gmail.com>
 <Zv681_sK3WQ4xYy9@macbook.local>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zv681_sK3WQ4xYy9@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 03/10/2024 4:48 pm, Roger Pau Monné wrote:
> On Thu, Oct 03, 2024 at 04:42:23PM +0100, Frediano Ziglio wrote:
>> On Thu, Oct 3, 2024 at 3:58 PM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>>> __efi64_mb2_start() makes some bold assumptions about the efi_platform and
>>> skip_realmode booleans.  Set them to 1 explicitly, which is more robust.
>>>
>>> Make the comment a little more consice.
>>>
>>> No practical 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: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>>> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
>>> CC: Frediano Ziglio <frediano.ziglio@cloud.com>
>>> ---
>>>  xen/arch/x86/boot/head.S | 10 ++++------
>>>  1 file changed, 4 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
>>> index d1856d8012c9..af776c201a15 100644
>>> --- a/xen/arch/x86/boot/head.S
>>> +++ b/xen/arch/x86/boot/head.S
>>> @@ -279,14 +279,12 @@ __efi64_mb2_start:
>>>          pop     %rbx
>>>          pop     %rax
>>>
>>> -        /* We are on EFI platform and EFI boot services are available. */
>>> -        incb    efi_platform(%rip)
>>> -
>>>          /*
>>> -         * Disable real mode and other legacy stuff which should not
>>> -         * be run on EFI platforms.
>>> +         * efi_multiboot2_prelude() is happy that we're on EFI platform.  Skip
>>> +         * the BIOS initialisation path.
>>>           */
>>> -        incb    skip_realmode(%rip)
>>> +        movb    $1, efi_platform(%rip)
>>> +        movb    $1, skip_realmode(%rip)
>>>
>>>          /* Jump to trampoline_setup after switching CPU to x86_32 mode. */
>>>          lea     trampoline_setup(%rip),%r15
>>>
>>> base-commit: eb21ce14d709ef0c0030d0625028a4868c81126f
>> Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> Acked-by: Roger Pau Monné <roger.pau@citrix.com>


Thanks both.

I further note that efi_platform is used exclusively to skip early
cmdline parsing, and I'm sure there's probably a better way of doing
this, but nothing obvious jumps out to me.

I suspect that getting rid of it will be easier when we've moved more
logic to be in C.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 15:56:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 15:56:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809617.1222038 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swOBJ-0006vk-BB; Thu, 03 Oct 2024 15:55:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809617.1222038; Thu, 03 Oct 2024 15:55: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 1swOBJ-0006vd-8F; Thu, 03 Oct 2024 15:55:57 +0000
Received: by outflank-mailman (input) for mailman id 809617;
 Thu, 03 Oct 2024 15:55: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=CNe7=Q7=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swOBI-0006vX-BL
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 15:55:56 +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 f959d9b4-819f-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 17:55:55 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5398cc2fcb7so1365637e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 08:55:55 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9910472ba1sm100622966b.161.2024.10.03.08.55.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 08:55:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f959d9b4-819f-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727970955; x=1728575755; 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=33kSgyhQmgeJG1ypM+SZFw9jtkXS2IvainDxKi4tE4c=;
        b=Q1Rnb6xsncUhEjoo2reR2nWNrJf4J19IwVEvmhxeRVGjVhE/3Usoe6ofxJ0QeUBPNe
         QAckUtnyqzW0A1QIjoXXO1ykKg1RhXwUpBR65QgxlUNsSUZYRKX2tKlWYaY8MDfwiSHo
         RhaG0RQ/seBIMiX0uVarKGJQbkYekNYWIOJzE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727970955; x=1728575755;
        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=33kSgyhQmgeJG1ypM+SZFw9jtkXS2IvainDxKi4tE4c=;
        b=Jt8X/iybVKWlZWkGTCyn0/lB3JRdIvIzVTfulP1WsOeVqLqjrBlnJFI9U3TWgX29ag
         La7Zfkrsv/B91mwnShgYqIzGS+YaSgxcE9dcxJBNeaQixQRCiYGxAls2VJKGjoJeGc/G
         Qzixv/H094KOShjjLP5+b7Lsm8Vwe9VTG5y9K1vvft6kA3jqG7gkwJMg3stjWMO09iPd
         sxx6ODTC+68fYazJLVckdV1PG54+ChQOD7HiMzL0cbKYfhZpk3IgXTKCLQ5jV5I2+zSy
         p3E0wYuqxetDtjfOX5ffuLOCqnk1KJBMr0B6OAMOlIDCmI1dlPhUwKnD4/pKWlxaojrN
         P0rg==
X-Forwarded-Encrypted: i=1; AJvYcCUVmjjPxa00FueMAT8pGjofKxhGTlLj/xp1YilA/M0Ukpu7LO+Wku6beuLmK6wuEiCqMxxgNqBH3Pg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzkXXA0elPChkj1uuRb8oxSQn2m2CjoZVVJnlLE97sA1aPWAqW/
	Q29DZXTJaf+nkFpg9fwWdkEgyYU1XFkpdWyB3U1129lwKqlpyQ5WU5Zhi8I/aHk=
X-Google-Smtp-Source: AGHT+IEhhiQhjYR3gP0QLu8zCBTrdovTb9KN4ZFotYcBNCnInfziVYwJpTP4T7/lx5ff1I0y4tz5xA==
X-Received: by 2002:a05:6512:e9e:b0:539:8b81:7f04 with SMTP id 2adb3069b0e04-539a067b936mr4759518e87.32.1727970954811;
        Thu, 03 Oct 2024 08:55:54 -0700 (PDT)
Message-ID: <b9f609a0-d641-4cd9-bf2c-eb1929038587@citrix.com>
Date: Thu, 3 Oct 2024 16:55:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/dpci: do not leak pending interrupts on CPU offline
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>
References: <20241003142036.43287-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241003142036.43287-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 03/10/2024 3:20 pm, Roger Pau Monne wrote:
> The current dpci logic relies on a softirq being executed as a side effect of
> the cpu_notifier_call_chain() call in the code path that offlines the target
> CPU.  However the call to cpu_notifier_call_chain() won't trigger any softirq
> processing, and even if it did, such processing should be done after all
> interrupts have been migrated off the current CPU, otherwise new pending dpci
> interrupts could still appear.
>
> Current ASSERT in

"Currently the ASSERT() in"

>  the cpu callback notifier is fairly easy to trigger by doing
> CPU offline from a PVH dom0.
>
> Solve this by instead moving out any dpci interrupts pending processing once
> the CPU is dead.  This might introduce more latency than attempting to drain
> before the CPU is put offline, but it's less complex, and CPU online/offline is
> not a common action.  Any extra introduced latency should be tolerable.
>
> Fixes: f6dd295381f4 ('dpci: replace tasklet with softirq')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Yeah, I'm not concerned with minor extra latency in the offline path. 
In production it's used 0% of the time to many many significant figures.

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 16:02:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 16:02:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809624.1222048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swOHg-0001TP-0u; Thu, 03 Oct 2024 16:02:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809624.1222048; Thu, 03 Oct 2024 16: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 1swOHf-0001TI-TE; Thu, 03 Oct 2024 16:02:31 +0000
Received: by outflank-mailman (input) for mailman id 809624;
 Thu, 03 Oct 2024 16:02: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=ein2=Q7=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1swOHe-0001TC-Pi
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 16:02:30 +0000
Received: from DU2PR03CU002.outbound.protection.outlook.com
 (mail-northeuropeazlp170120003.outbound.protection.outlook.com
 [2a01:111:f403:c200::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e40cc449-81a0-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 18:02:29 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by AM9PR04MB7555.eurprd04.prod.outlook.com (2603:10a6:20b:2d6::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Thu, 3 Oct
 2024 16:02:25 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8005.024; Thu, 3 Oct 2024
 16:02: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: e40cc449-81a0-11ef-a0ba-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=LywoP5Mx02vs+pDTcDitNmaCl093q7LaOwSZCh7re2g7LBWo/XQNCwNDRjPvcvrHoc4wApIZFnuxDGjrjmg65QQ5XObvo5uALsGW4TWwVvZaYCP9cN0oIo95zkTqirWzJAQ5YcJhIivkTZdIIk6XyZDQHWTOdqgi5xONdG5ie0GnE6MXFhaSF6M4PEEUs4cwlJmMKcLxEX1z6yc5reGt9B2kJwNvJjwqj94Agxy0POyZQSAzqj244P2xHwuB27H7bDW3YO4DZLyiFIjOC6QTENM6A89LLOG5urqOVWzzE0aMjrbJ/WBmsV16KptxRDD8efewVbdIHJZT87gK/MtCCQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=5NMnEPMVzXCT8fmd3PK1T5A9vsu+k3+bQli0qyGy+vw=;
 b=VPedogi1sLbH/vs6dv/UWtGgISFMMFzQE3TJIPDyj51j1E/UuiO5rkBbeThFqGUoZsmKt898o49zbklDEWIIIt1cpXTbaygbC2TzXllgvJDHdcC7wqPPT4aTWmxWAaCiY7T24re8pmiXmDgqr7+OvdKNDj9WA0OxyPIa0S1yEzwSYdRtnOJf2EVphWS7sEpOKC0iTGuXHR/RjM4GLysh+jqbRR+jcVFTWZHhqMlUa8v5V7r8HbAlaII8cxKDErm8PJwk4NJW4U3qTD6CFVg+NwElfPD4M3n6Hp6YGA4b7VF/s/RmF5Rov7umQ+lq8Fm6yVvvEL6BsOQCYdO76iuIOg==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5NMnEPMVzXCT8fmd3PK1T5A9vsu+k3+bQli0qyGy+vw=;
 b=FUNpRRgb6ca6aeWORxjd5BlTv1VRQu31ZnG+c1mqLazAA8zJNOESAT3p//XLM1zW9apuPSjyl0hYoMlZaXO/5xHoHLLqxfI7GqMXMgmN2TFdd2sixpgv4uEXcZWGicWxu+0IVim2TlDhUDf4tczfOv0WyQqdPtp6aYq2g5ajxQxN0gI7qfCokrjS0kQ5I8SaGe1oLt+AAcv3DsOHX16iBKevHUyWOiuWEycCq8nVRTEtt+Ihqj5WTVpXmf7Hldheqsg+b1EZoexYrrpIMbKsF1ZKZYTeUgeSZwPZxRGH7UdhE/D46JLgVF+ca5eAB5sJJNmriAdnjT1pd6A6IytLQA==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <ccf364f5-86c7-4982-8356-f34afadec7b9@oss.nxp.com>
Date: Thu, 3 Oct 2024 19:02:03 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/8] xen/arm: Add SCMI over SMC calls handling layer
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
 <b06a2506-92d0-4bd2-b377-c9d140c0d6ce@xen.org>
Content-Language: en-US
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
In-Reply-To: <b06a2506-92d0-4bd2-b377-c9d140c0d6ce@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AS4P189CA0015.EURP189.PROD.OUTLOOK.COM
 (2603:10a6:20b:5d7::19) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|AM9PR04MB7555:EE_
X-MS-Office365-Filtering-Correlation-Id: 8b73414c-67c5-4b88-386f-08dce3c4c55f
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eGFoOTB6UDFJRGIxQWdwU0p0VjFLUHJKQVRoTVNrTlJEZnE4cnpmajlXZmZW?=
 =?utf-8?B?S3NrTmJXQlA0TTYwRlJEWTExOUdrOW1jelgxd3lwU2FLcjBseUF3VHRreXF6?=
 =?utf-8?B?TDNWNlcwOW1WSFIrRUhyRUhGdWJqZWJvalI4UUVWb1IwMVJPV3lXMDlsWTVk?=
 =?utf-8?B?bFFtT3JCb3N3WXdRTm5xcFRKUU44WFJ2M2J3ZzI1OFVLQXVXQjNVd2daRVVL?=
 =?utf-8?B?S1pVMG5PQ3V4eTRoMUlNRjBTc2RsUXVKNTRhK1NlMnZTMnIvamh5WW5HazIz?=
 =?utf-8?B?NDhra0tPQmtuWnh3Vjh2QWRKWitxeW5wSExhbXBreHlIK2ZhVTNhS2lSbUdt?=
 =?utf-8?B?VDRodGxpaHVmUDJuQXJlQmpPYXF0cEMwd21QOWZmVUE3K3hxT3dTNzBlVHlC?=
 =?utf-8?B?aWdKeGhCWGpOZnBEVHQwRkJHK29nQndtN2FJcTN0b2swb01zK1VEcnAxSTcv?=
 =?utf-8?B?c3lLYVcyQlZTdlhKRDQ0cHBRem5XcnFTUmdYK21LK0pRc0ZLRW1xdEF1enE1?=
 =?utf-8?B?VGFFdEVRdGlSSEcvdHUvQXg1aGRYZmcwL0pMNCtLYlhmdU9vaktFOCtnamlm?=
 =?utf-8?B?eXJBTTZxL1JBRXZMblVMUnM1UzRZRlJlK1o4UFVFWmtnQktrRHFrUm5Cd3pX?=
 =?utf-8?B?Wi9vdUp3VG93dXpkd1B6dGRGTC95QU9PL1RxWXlOSTRpTlNMc2ZRQ2dlaWtC?=
 =?utf-8?B?ZXZET3ovL1BTL1daNzR2Y0NzRE1jQXNjSmlyOVNLeGE3YUxFOUlRYzlHU2pa?=
 =?utf-8?B?bUczVDVwVXJHTTE3MmI1aUFoTzIrdWhNeWp5K1QzNnhSTEQ0dzlqL2VkSlds?=
 =?utf-8?B?aFRyQjhxT1RjUElqQ0Fha2RyM3dNcW1BVHlpWUJDa1hjVU9aUCtEUmdldldN?=
 =?utf-8?B?WnUzZ2RJTloremZta1BJbUVBbTl0cVVmd2k4WFNISkpMOTdocjFpUVZ4Tmgx?=
 =?utf-8?B?WU83by9pcmFmem9DWDFsZVVDNzVwalpkSGRrZk1JNEJwZW11dWhsNmZnSGtZ?=
 =?utf-8?B?dDF4ZXBrNEtaenVCQUlITk1XL0ErSkR0L2o4UnJFZTZ0UnEzVjAzbXU4Q1pj?=
 =?utf-8?B?QzRrRGdLa05nUDl4aVVCRHdCU3Q3Q0U5Ym8yRkVnanJjTnlBZzBELy9kM3NX?=
 =?utf-8?B?WUlTUmdaMnkvVnlranIwWDEwOGNGSjZ0YlZCNlFlWUdsN2lMa3lxTWR5NHRw?=
 =?utf-8?B?MWJjTE5JWk5VN2piL0V2dytnWFVtMmZWa1pWbVNuK3A1dHcyTE5LYjhQUWly?=
 =?utf-8?B?eUhRQW5aUlNQNmV6QnAyRlJtSTJnUklSSDM5UEg5RE5vazZQNWdtMDk4QTdx?=
 =?utf-8?B?c0dKNzlsbEljMHN3LzJSeitSVnUzRDBmMFFYZEtPQTVjZVNCNHkvYUlaTnVW?=
 =?utf-8?B?TW00cDJOaWhaQm0yVGx2OE1RdXJyTUE0dWdGMzc3TGlzUUIxTng2emE4UXdJ?=
 =?utf-8?B?bXROY2lNTW91MnEzU3JjVVRwRTdLL0tDVUsrelJuOEtNZklSM2xzNEJySWNh?=
 =?utf-8?B?NVZEOHJNVkswdmh5aDZ6c0lMeHhsRnhVQmlVTHpjQzVLTU1LaEQ4NU53Szkv?=
 =?utf-8?B?SittcksxOFJCR2VVbnkyRkZ2VkIwWitUVTArSTVFTDNGR3R5Y2d2d1k2clZa?=
 =?utf-8?B?SGFmbnkyTjBjMHJMbm5HVGdzbVBhTG1SMHpCb0gvR0JuQVdNLzdBaGhtNzhL?=
 =?utf-8?B?WUE3c0xaV3FVaE5NUE81TGZxY1c2NWJFRE41alR3Zm9CcEM5cFZtU2tnPT0=?=
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:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bVppcFNlS1hvSUhwN2V1cDRSdmdNSFhoSG5YV1RDLzVnVTR5M1RHY1BrNFl2?=
 =?utf-8?B?eDB3Z2lWa0pUM1lRMmY5c0Q0ajBUQXVKaytxemU5Z3E5N28rayt3OFdhRytF?=
 =?utf-8?B?K0tkQzAwSUxac2o1ZnZaWXZFNWI2T2MrbzBPbkN3UVQvR3l5eTFFYXlRblVt?=
 =?utf-8?B?RTMvd3hKcGtUZUVrbzVrZ00zTDlDMlRvZ3pjKzhQWFFMY1JOVVh2VG1jcDU5?=
 =?utf-8?B?VEFiY25MRndsMTNaLzBQbkp5a3doWCt4cU9yZjY5TkM3NmZicTY1UnQxMjZI?=
 =?utf-8?B?Zm5jS3dsNy9vZEdjK1FpMmpRazh2R0pKV0xBQXFNYzZPSytNeno1RzRISi9B?=
 =?utf-8?B?azQwRlJhbTJlK2w3N2xmRGljK1Z5RW9qWHZPY1hLeDRuS1ZuKzYxcHRPSU56?=
 =?utf-8?B?STRnOWU2R0Vqa0l6RTV5NnlqMTFFVDRHZW5IVG9LalZmSGYrZHdjMi9aSEd1?=
 =?utf-8?B?cll1WUhIejg3UU8vL1F1N3VYaUcxbW0xSkJPTTdoSVFMNndHZkRMLzVVZ0Iy?=
 =?utf-8?B?TWVUQnJpT2h0YndsZ0ozSkl2b3h4Q0llL3VvMDRBYlBndVlNMGEyZ1JWYjhH?=
 =?utf-8?B?MFJYdkorNEFZVnFacG9VRVlUWjljNC92U2NLRjgwWXNKUlBwY2szV3kvejdS?=
 =?utf-8?B?VWtqRlF3SnRteWkvVEJ2VmM3SzNOeFlta2hESmNHTU5XSVFuTTJ1ZDM3WVlU?=
 =?utf-8?B?TmpDOW94QklFdyt0MHZnY014T3E0eUZWOWlaQ3c2UlNTdmJUamwzNUxyb3Qz?=
 =?utf-8?B?RXVRbllxSUdrNGRENlpOTUNrU0hmVVNHNGlOQ3lLQ2VaczdFSDQ5L01TaVd6?=
 =?utf-8?B?Umd2UER4VnNNdGZqNWtkUTEwaXV6c1BocFAvN0xwRlNzdGpJK1BySEYxUWZ6?=
 =?utf-8?B?UjhlYnRkZkNWL2VHTGdoZkpBRUMxaFpsUmNnckdXRlhmaFA2L3k1R0NoRlB4?=
 =?utf-8?B?SzRUbEErWlZWVFhlbWIySzVMOUt0NUxlOFJ3MHI4YTRXdWZENUN1aDNGQjI0?=
 =?utf-8?B?UDlaNThNZHB2NGk4WFcza09yK0pCWjlZMGlsQjlWMDU1OWNZbGMyVXVtTWhM?=
 =?utf-8?B?M29na0lyUFhZRkVXTDd3b0MvdXcydjlLSkR3QmhwZkVIWXR6VFlGaEpEZ0lW?=
 =?utf-8?B?bG9GT2R3VnZRbWF3YWJVWUlJR2Jzd09SM2hnaTArd3ZvYmx1NWlGd21uZ2Jr?=
 =?utf-8?B?U1FqY2xCUm9KaFZTblYwdTZzTGQweFByNm91TG1HQkZqY05CRkViS2ZYQTBi?=
 =?utf-8?B?UGRmYW11RUZNT0kvbUJHZzJrbUF4U1dOSWIrRFBvd0FVRWhMVXpsWG1MN1hI?=
 =?utf-8?B?RFY1Q0x3Tk1RRnVZUkd5UzNyazBtUUd2aXlNaHo2ZGUzcCtIRVgwOTF4NlRa?=
 =?utf-8?B?UThMWk0zTkpHKzArY0pxY0ZPMzFaSUpHVHM5cEp6MmZXQlkyYUlmUjhSVkQ3?=
 =?utf-8?B?K2JxcnR4MjdaMTRPVnk2QTYybWl3bkJha0lTREJKWWNIZFZrTXBMenFQbUw0?=
 =?utf-8?B?ZVFIWDJ2aExvZGlQa25rRTlPcWE5RDhLK3BiSEk0MGhEd2dIbVVNajBUaTN4?=
 =?utf-8?B?THBCaG9saXFZVldYRWF6NHRqL3ZRb1ZqT2k5ZnVxeno2QzdDRE85TGFWVFdi?=
 =?utf-8?B?TU1WS0xGSkUxQ1BhbWRhc2NaUFlCaEVtaU40VU1kaS9mcEN2SXFQRkVhTGs4?=
 =?utf-8?B?eVJaTThKb0tUTU5EQ2Q0Tm1uQXNGK0xZdmYxMHF6bTVGeDgwc2RJSHUrOGhm?=
 =?utf-8?B?cFRpVi96Yml0UDA3Zisxb3FRaTdnM3pEWjNEazZJby9SQktCNHR5MG01ZGRm?=
 =?utf-8?B?TXFSSzErS0MxbkwrUUtmRXFTb2IzSVpFSzh6WmRFZlFReDNuZlY2RmFmeW1Q?=
 =?utf-8?B?WEJwNlJadnkwYzllZzNCNTQyQzAzb2NmK1ZXSVNEcmhpYXA0VDFWS3FXaEJC?=
 =?utf-8?B?eGl3ekVZUVVLQ1NLQU03YUJmbE1heTFsRVZCckc5aHV1RXd2Z2JVNTJLWENN?=
 =?utf-8?B?UlhneGxscWNWVlFkWmFJeU5OenQ1Wi84WEY4MnB0bEFkNmhiUDl1WWlyaUN2?=
 =?utf-8?B?WUZLMVEvVmJIR3R4em1DOUluYWJ2Z3NpNkFxTVBvMTJEZWoyMXFtR01rN1Bv?=
 =?utf-8?B?YWQzNHF0NFd1bzVLSzQ5RDMvSllZSjVGUTZoZDRHSkVTY2duZGdOKzEycWZk?=
 =?utf-8?B?Z2c9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b73414c-67c5-4b88-386f-08dce3c4c55f
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2024 16:02:24.5821
 (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: xxs/cptfbz4HsR7QDff29Xyd7im5zNMouAcBLi7lpYEPZMBauZtjG1fhb+HJKYybcmehViA/TYR29ytp/LvDL0rxtf86C9qI31MtFMqENwQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB7555

Hi Julien,


On 01/10/2024 12:59, Julien Grall wrote:
> Hi Andrei,
>
> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>> +/*
>> + * Generic handler for SCMI-SMC requests, currently only forwarding the
>> + * request to FW running at EL3 if it came from Dom0. Is called from the vSMC
>> + * layer for SiP SMCs, since SCMI calls are usually provided this way.
>> + * Can also be called from `platform_smc()` plat-specific callback.
>> + *
>> + * Returns true if SMC was handled (regardless of response), false otherwise.
>> + */
>> +bool scmi_handle_smc(struct cpu_user_regs *regs)
>> +{
>> +    struct arm_smccc_res res;
>> +
>> +    /* Only the hardware domain should use SCMI calls */
>> +    if ( !is_hardware_domain(current->domain) )
>> +    {
>> +        gprintk(XENLOG_ERR, "SCMI: Unprivileged d%d cannot use SCMI.\n",
>> +                current->domain->domain_id);
>> +        return false;
>> +    }
>> +
>> +    /* For the moment, forward the SCMI Request to FW running at EL3 */
>> +    arm_smccc_1_1_smc(scmi_smc_id,
>
> Actually, shouldn't this be get_user_reg(regs, 0) so we don't rely on scmi_handle_smc() to be called only when this is equal to scmi_smc_id?
>
> The other option is to move the check for scmi_smc_id in this function.

I'll move the check for scmi_smc_id in this function and make it static,
to avoid exposing unnecessary complexity to the users of this layer.

Thanks for the suggestion & review.

>
> Cheers,
>

Regards,
Andrei Cherechesu


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 16:04:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 16:04:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809631.1222058 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swOJu-00024L-Gi; Thu, 03 Oct 2024 16:04:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809631.1222058; Thu, 03 Oct 2024 16:04: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 1swOJu-00024E-Ct; Thu, 03 Oct 2024 16:04:50 +0000
Received: by outflank-mailman (input) for mailman id 809631;
 Thu, 03 Oct 2024 16:04: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=ein2=Q7=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1swOJt-000248-Kw
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 16:04:49 +0000
Received: from DUZPR83CU001.outbound.protection.outlook.com
 (mail-northeuropeazlp170130004.outbound.protection.outlook.com
 [2a01:111:f403:c200::4])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 36e1a4fd-81a1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 18:04:48 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by AM7PR04MB6806.eurprd04.prod.outlook.com (2603:10a6:20b:103::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Thu, 3 Oct
 2024 16:04:46 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8005.024; Thu, 3 Oct 2024
 16:04: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>
X-Inumbo-ID: 36e1a4fd-81a1-11ef-a0ba-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=e+2i0F9P0Axi/dwQdlECZi2CeEMJ67skv9xomo9Z1aPNUN2sSnqyFNtlryyLhLsqZ4JJGs2HGYmfgXYbECCIgcBoSlUBYyOnNrrtKkLD9rU5g44z1LSEa6SVxj6M20NBtWsZmQiLT8UaqlFKPbHuzVbh6YIphF59iCtscEjZh2oQ1XFkVuq1hmP46pf0PBda1ryvgpWPGWy23/vRVqR3vr0CLkNi8jERZJPJaioogapIzoCXXL/U5kQQfxrU8lWQi5e/DLN26daFP1NIpFtxM33j/FD4Thdz1W8i74VGzXWQ/ZwxX+b0jstm1ZVRlPLBpDN4/JDwaJes7U45u2kllg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=4AprMTSjiftUEuICpNCK0LIyqpyHWZEGFNkm8Q01d2Q=;
 b=DpLbU6nbUzpiAVHbU9WrwEE4yuil8q1Irr2rU3S7XQUEu7/hrqIUHE0S2PLn3lgI7H+jbRfX3UsO7qvQIa0WHYBzQ99wQUDEFk7tgtlyHc4QBNX7ku/7/X9nOzJzSSTzjCaawzQmJ4FxuEgtwD1DMnsIkKQk5ISqFGza775hkc6GsgrrEnz39zv6MeQuDQXBZh8Jny1OrtEnTo+rH7vO4eq3AKvOoYXnk7cHVlL9nzAdUA/3E2T3oBNwB5YKIu8AI5C4INEn8Yld8db7mSV3GxCaggfoi1An6JuB4oQYLdYxcFd7oLsGL/Luq89xDtHJCNTshJ0cZD7QO9zW/HLnPw==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4AprMTSjiftUEuICpNCK0LIyqpyHWZEGFNkm8Q01d2Q=;
 b=teq/tlvGslF6IhbgvnWRvLWepqzST1OmBZIZX4r6Sbh/1hR6DE0PAXFAESz+speA2Uke1SQUfgtPqNb5lLajfCDolp2Z//UGOjr35LnaVU9sdL/t4R38MIYfVFvCyVrO8fZpZGK6inXH8nN/Isq8HOys0TLaBtqJXaGQDfLp3V605Kf+MkX5vnG4wkBOfqVqE371Y4NnDdzrdZZSZjBOayiPFE4JEaD42UHsF84Inj81gkQk5o7ox1xkqrbUBbP+aJ6z5An23+CmPMzGj1+OdsgVeV4Nt5Zxw0ZJ9tSYdKeIKtuxaL1UqaiTxQHhGK8XLkDNwCzlbch5tQ3aArcdEA==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <35a2b5c6-a40c-4403-b008-d7944733f597@oss.nxp.com>
Date: Thu, 3 Oct 2024 19:04:44 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/8] xen/arm: vsmc: Enable handling SiP-owned SCMI SMC
 calls
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-5-andrei.cherechesu@oss.nxp.com>
 <7878c251-7b26-47e0-a79c-4e563ee1e9f9@xen.org>
Content-Language: en-US
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
In-Reply-To: <7878c251-7b26-47e0-a79c-4e563ee1e9f9@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM0PR07CA0021.eurprd07.prod.outlook.com
 (2603:10a6:208:ac::34) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|AM7PR04MB6806:EE_
X-MS-Office365-Filtering-Correlation-Id: ebe7cb59-44c5-49b9-d41c-08dce3c51a1b
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?TFQ4eG9Za0NoeUZyblhTOVAzeHVRR0EwOW9jTHBWZDk3c1NSRFh2MjNWaml3?=
 =?utf-8?B?aWhncXBnWmZuZS94K0FrbzMyYnEvNEt5aUl3aFd6REFITFVSTXUxM2ZYejV3?=
 =?utf-8?B?dEVKdUkwQzZaVGcrSkVEdW1JaGZ2MGhJQXhmcXVweFFiczNXT0xHdzZudTVr?=
 =?utf-8?B?cTMxRXpUQ29OMTN2TlJyTHp4c2Jtbjh3TjUzSkVSSVY2cHVvUTRDUjRTZ25E?=
 =?utf-8?B?bTBCdVl0N2UyRDhqSTBvMVBUNmRlZlJiUUtUK0lRUG5SMkJyZ0dRSm1GM1JJ?=
 =?utf-8?B?aEdFZEM4ZVRsZVFleEJ4ZmNWbS9JZS9kcFdHbE9sSnFybEVMN1FlaTNVSUty?=
 =?utf-8?B?cnprVXRYQ0pEWFV2SnR4cDZHT2E5SlhMTVIzRUR5bjJVZWxiL1RHcFU4REY5?=
 =?utf-8?B?UTZMaDVVamNQVmhOQndmREtiYkZJaHZVMUJhdFYxaVYweHR1RURqRUZydW9T?=
 =?utf-8?B?RmdaNFRnZVAwZEFidlRvYjlBcnB0S3Jlc1I0WnR1WnRHVTVwbUduMlZtaVJ5?=
 =?utf-8?B?OUQ2bzR0TktjTFlDWUU5dW5wYnBOaVo4M2pnTW5nNTRYdk8rNmRabWY2QUZL?=
 =?utf-8?B?bDdZNXlObzB5TThoWkJ4UkhwNHI0WUJGWjhWWU5LUzlJM1JmNFNmR3dubVFt?=
 =?utf-8?B?bWdEeFZoNks0a2dUS3U1SzlzNm0wV01oUWxWNUxmUzFzdHVOTTZIVWZEWkxT?=
 =?utf-8?B?alFoL2xYVWZNdmhEa0dkK0RhUW9ET1d6NEpZSXpIYTVmVUZHMXdoYzZ3d1Z6?=
 =?utf-8?B?aU1jU2U1T0ZvZE1kTyszVHZndndoVGliZzJCWk1JZ01zcnZjemYyN1dpMUsz?=
 =?utf-8?B?YS9KWGgxKzQ3WnJxL0hIemd4NTJJenlOa2I0Y0NkekFQbndlUUpNaXpPUXZS?=
 =?utf-8?B?NGpMTThOcExhbHkrSk5vYWVGZEZSNU10SHRtZjJZc3pvZVdVbFFoemc1WXg1?=
 =?utf-8?B?RXN2Qnl1M0VVUDRFMTVlMUFaa1FXZTVKVkx6TS9qSVp3akFqcVpIOW9MM2Uv?=
 =?utf-8?B?VEZzK0svSysxKzdDanRnNDVLUmwwc3J2V0VXY1RJWm9FNkhNTk1sUzZIK0JR?=
 =?utf-8?B?SHFKOHh4eVNFeTQrUktKVlVIcVArS1hOZlhUTUtHM3ZVby9OTVdQMEgrQlZy?=
 =?utf-8?B?d0wweGUzSXV3dDRxZWxEbHd1b1Z0U3o5Mk5SeHl1blhqSEpCak1mSUhUYllW?=
 =?utf-8?B?WlV4YytkZVhJRzFhKzJ5eHIvT0p4KzMzYkpYVHBXS2J2Q2tRVGdCanE2dzJr?=
 =?utf-8?B?K2wyVTVlWTl5Z3FsZ05FSHhXVDJ2SVRBSkI3anQ5eFBkb0xybW1yQ3R0T09L?=
 =?utf-8?B?MDUrbjB0NGhxWVE1Ump1NUFoS0ZZMG40M1lpNUhLZGZ3VW0veWxEUkIyRS9m?=
 =?utf-8?B?aDh6QS82ZVJCSlRWTHVvOHo3SEpKU0llQnlacEIwVTA5ZHltc0gva0ZrYms2?=
 =?utf-8?B?aEdwK3hlQUgweGlxMkVpNndBYWlJcHF2YlNHbkFkRGkvdzlhakp0cnVHZm9s?=
 =?utf-8?B?TU16bkZVY3NCK2tmZlFBbmJRV3VmSDFldzF5elhaVkd3ZVVTd1QvREVxSjM2?=
 =?utf-8?B?bHRxRWYxaXhtN3dNVEpGVDNVY2JoN2hrR09DZHUrTUI2NzFqcFoxWTFRY3Jz?=
 =?utf-8?B?aHg2MGd4T09JdDZxNkNQVXNRTG4rQkhxeXRqRGZjUzlHblp2WElXUndaK3cy?=
 =?utf-8?B?RnNxanNMRnhSeFMvL3ZLUWJJV1JYTVYzcHhLS3I1dk96ZlMyd0dtTXVRPT0=?=
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:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MW8zNkJCckpTT0FBRWMxcGk1bW5XbzYwTWFFQUVNeStjQVhNTDEwNUJMdGhv?=
 =?utf-8?B?NXk4enh0MTBUVzBEMGZ2T3BUOUdSYmxBUlRoYmZjSHRNem90YngzRDFaZ2VJ?=
 =?utf-8?B?aERXcWtLM3Y0U2d4UjNvVENJWkxpTTB5OWFtak5EQ2NyRzV5WEJVU3ZjNzJN?=
 =?utf-8?B?WkpRb0NkaFZCWXUyM1NpL1haTDhvbjgwMDJyZEZJM0dHT2FhZkhzeE1KODRr?=
 =?utf-8?B?ODlWelVkbyswNjA0ZDZ1aHhOb3Y5M0ZCTUY4YWxmbnNqcUNSR2Fhd1dSbHRO?=
 =?utf-8?B?OGtCOUE2NXYrVk1NZTl3Uy8ydXpuVVFlUFA1VXlIQWx2Uml0eFZldjMvUHBq?=
 =?utf-8?B?VmRkeUlycUJlcGVjWXRtL3lVT1VkK2pzTmRmdkpubFdQUzVtZDFUQ29hL1Rp?=
 =?utf-8?B?TFB6OGZBMlVVZEcyOGJzaHZXaDg4Y1dBS2pSZW4xVmJOQ2FiR3UxUHdPUmJ5?=
 =?utf-8?B?czdWTlozYUM4cFU1b2VmNGc3RVlJUjJ3UW9wQ1FEdGNaT2NqMzVVNWxRVWht?=
 =?utf-8?B?RmRiME1ZbVVLbHdrOWJtSXFvTCtjVUZ6Vm9HNVJBVEFPY0lCcUxoSnd6WTB0?=
 =?utf-8?B?OHlkejFDaUEwQ25DblI4Rk15SmNUaXlRbm53UWk4NTcvWXROVDBnb0ZxNVcz?=
 =?utf-8?B?R2Y3ck5IWXFTOXUwc2FMKzZiazF2cDIxKzFQQWVjSXdzSFhXS3hCTW1nOExI?=
 =?utf-8?B?WjVIS0hmTUU2Snd0QWo0M3l5cmdjaUxPSWFhd0pzZzNFNWNxaGFVTFRnc01C?=
 =?utf-8?B?WFNBaGpQU1R5TURqK05GUlZwbzZEdGI3K1NwN1FRVkMvUmtpRG55bFdMcDBV?=
 =?utf-8?B?V3NTdmVON1FEMWVUUVBObFJYTk0rMmkzMHc2UXUyQ3d5ZC9na0pJR2wvTnQv?=
 =?utf-8?B?cW52bUJVQzZOU1ZUc0RIcU1YOS9XZEpiUHluMUp5K1JVcHBFejVReGcya3RB?=
 =?utf-8?B?Tms3dnc5KzJ0NHF1MGVmUWVVdUNDTFlKbERwazZ4WU1rMTNLOXY5Ymx6ZTB3?=
 =?utf-8?B?cDF4dTlmQjd3SjdqYmF3YkE5bWttYnRjc1RyU295d25JWTJJci9KV2MvZHFS?=
 =?utf-8?B?M3ZIV3Z0U05mQjRSM3BMTFNKNU90cEJ5WCtqTzYzR1BlekNzRWhUa0pielp1?=
 =?utf-8?B?YlFzbGtLR1BFaFQ2UzdITGIwTyszTTd4Y2kzSmxFNFRJQ0k2d2pBS1dqTjZp?=
 =?utf-8?B?Z2dOckJPZTk3dFJOT3dabHVIZXpWaHJxWkU2QURMUGYrMHV3ZWlwdWhuV25p?=
 =?utf-8?B?QjVRbkdQUkJ0NEVMR0JJNW1lWnM5S3I4c0FOSmdqeWticEZwYjZackp4R3hj?=
 =?utf-8?B?bzE2VHZZL0l4Q3pjWFhoUVUreDg5UTVVYzNucHZLVW5wbFRXTTBMSmZtcmpT?=
 =?utf-8?B?d2Q3WWJEVHpFMHRqeWkvWUpPU2lpaUdrd2dkUXZ3KzdidHhhZUhndnlwSzdn?=
 =?utf-8?B?UlMyNGxEb0c3ajVnSmZENWxXdVFnVk1MUGxheXdiSWhEVVNZb2I0UklIVGVW?=
 =?utf-8?B?OXNMbkRVYWxYd3R4TFFEKzVMdXE0ejRYT1JOTGVPbnA3VVJyZndIQjVBOE1z?=
 =?utf-8?B?c0xZbzBwS1kzbWlnWFJIdldqUldwRnF5dFBsNGxLMXVEcGtSQ002c2VudUlP?=
 =?utf-8?B?ekloVFJrQjcvVFJ6NFcvbmhXTDZtTXFvdG1TNVBFM2lEL2k3T0ZxNVBYOElZ?=
 =?utf-8?B?Smw5bHM2V3FtdlR3azZ3RVhySU1BUVZqY0l3djhpQUZHdmFJRlUrMFNpZ29z?=
 =?utf-8?B?Q2pmYnBVTFZFNmsyNnA1YXZDTVNaaEpKWUZiRno2YUowR1FyOXJjL1padE9x?=
 =?utf-8?B?R2hieFBpU0hlYmZSS1l1bkducEkrR0dXUUVqQmsyWDhWSnJLT3NzbE4xVDJB?=
 =?utf-8?B?K2ZFYVM4T3J0R3Vqd2xvNzBuS205Q1o3VDN0Y3hjQUlIeGFPTUtpRU1KSTlz?=
 =?utf-8?B?bWMvR1YrbHYwRFZOdlZxUlowT0k5TWhHYkNQa1B3WUwyK3V4Y3I2Y2U3WmR0?=
 =?utf-8?B?ZFRqaEtjdGtMT2VDTEViUVpMR0lUT2grN2toZ0RLanEraUhmYjJXWis2T3J0?=
 =?utf-8?B?TkhIdWl3QlAyUkp2Z2E3dDM3bTJ1TDJjVm1waWxiS3ZLT1pCSTNpbnQ2emxN?=
 =?utf-8?B?SFRmLzJUbVVOMFNUTEtDWDRlRi8rb05PUUlwN0JWdmpwakxDUzNCWXpGTEZu?=
 =?utf-8?B?ZGc9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ebe7cb59-44c5-49b9-d41c-08dce3c51a1b
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2024 16:04:46.6892
 (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: dnnA1uApMOrTrjEfxAF+A6LprGIcgh5wZ9ppYGxTqJDiZW2YnahV5bDZAff8BB2aHGuk5NxuKr0pWlFChqrVok85eINn0DccVMjVnR53o64=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR04MB6806

Hi Julien,


On 01/10/2024 12:46, Julien Grall wrote:
> Hi,
>
> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>
>> Change the handling of SiP SMC calls to be more generic,
>> instead of directly relying on the `platform_smc()` callback
>> implementation.
>>
>> Try to handle the SiP SMC first through the `platform_smc()`
>> callback (if implemented). If not handled, check if the
>> SCMI layer is available and that the SMC is a valid SCMI
>> message. Handle it then within the SCMI layer which forwards
>> it to EL3 FW, only if the SMC comes from Dom0.
>
> NIT: I would remove the last sentence as this is implementation details. But if you want to keep it, then s/Dom0/Hardware domain/

Agree, I'll remove it.

>
>
>>
>> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>> ---
>>   xen/arch/arm/vsmc.c | 19 ++++++++++++++++++-
>>   1 file changed, 18 insertions(+), 1 deletion(-)
>>
>> diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
>> index 7f2f5eb9ce..0de194a132 100644
>> --- a/xen/arch/arm/vsmc.c
>> +++ b/xen/arch/arm/vsmc.c
>> @@ -14,6 +14,7 @@
>>   #include <asm/cpufeature.h>
>>   #include <asm/monitor.h>
>>   #include <asm/regs.h>
>> +#include <asm/scmi-smc.h>
>>   #include <asm/smccc.h>
>>   #include <asm/tee/ffa.h>
>>   #include <asm/tee/tee.h>
>> @@ -224,6 +225,22 @@ static bool handle_sssc(struct cpu_user_regs *regs)
>>       }
>>   }
>>   +/* Secure Calls defined by the Silicon Provider (SiP) */
>> +static bool handle_sip(struct cpu_user_regs *regs)
>> +{
>> +    uint32_t fid = (uint32_t)get_user_reg(regs, 0);
>> +
>> +    /* Firstly, let each platform define custom handling for these SMCs */
>> +    if ( platform_smc(regs) )
>> +        return true;
>> +
>> +    /* Otherwise, if valid SCMI SMC, forward the call to EL3 */
>
> This comment is likely going to stale. This is up to smci_handle_smc() to decide what to do. So I would remove this comment.

I'll remove this, since the behaviour is up to the SCMI SMC layer.

>
>
> With that:
>
> Acked-by: Julien Grall <jgrall@amazon.com>

Thanks for the review.

>
> Cheers,
>

Regards,
Andrei C



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 16:07:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 16:07:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809635.1222068 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swOMK-0002j4-Sw; Thu, 03 Oct 2024 16:07:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809635.1222068; Thu, 03 Oct 2024 16:07: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 1swOMK-0002ix-P6; Thu, 03 Oct 2024 16:07:20 +0000
Received: by outflank-mailman (input) for mailman id 809635;
 Thu, 03 Oct 2024 16:07: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 1swOMJ-0002ir-SG
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 16:07: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 1swOMJ-0006RR-8G; Thu, 03 Oct 2024 16:07:19 +0000
Received: from [15.248.2.26] (helo=[10.24.67.18])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1swOMJ-000232-1F; Thu, 03 Oct 2024 16:07: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=K7pDr7WdDNF2ZDrbCrU4uKyUqoTQpWFFGwYm6Dd8TOY=; b=er6b73us+uOBN4NuIdumFHpR6H
	o4hdS0eAkqWbLoiwOq8e1PHl4+hr1BVfWB6J7h+7wBs0s0OuJaIQ3EpgCJoeU5n7POrdw5PVE4BP5
	tC0/0c+UJcL4e5mTo9nm+YjbqWTwwtx/mqFCA5GAtEUzaB3dGzUWn66M1ok5N3nTSiUA=;
Message-ID: <45a70cd4-f7a0-4ef8-ab90-c256ec6e544e@xen.org>
Date: Thu, 3 Oct 2024 17:07:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/8] xen/arm: Add SCMI over SMC calls handling layer
Content-Language: en-GB
To: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
 <e713ae46-104a-4414-8ad3-02ca8b0a521d@xen.org>
 <3092497c-8626-4e86-b28a-16594eb2a4f0@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <3092497c-8626-4e86-b28a-16594eb2a4f0@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 03/10/2024 16:27, Andrei Cherechesu wrote:
> Hi Julien,

Hi Andrei,

> On 01/10/2024 12:35, Julien Grall wrote:
>>
>>> , the initialization fails silently, as it's not mandatory.
>>> Otherwise, we get the 'arm,smc-id' DT property from the node,
>>> to know the SCMI SMC ID we handle. The 'shmem' memory ranges
>>> are not validated, as the SMC calls are only passed through
>>> to EL3 FW if coming from Dom0 and as if Dom0 would be natively
>>> running.
>>>
>>> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>> ---
>>>    xen/arch/arm/Kconfig                |  10 ++
>>>    xen/arch/arm/Makefile               |   1 +
>>>    xen/arch/arm/include/asm/scmi-smc.h |  52 +++++++++
>>>    xen/arch/arm/scmi-smc.c             | 163 ++++++++++++++++++++++++++++
>>>    4 files changed, 226 insertions(+)
>>>    create mode 100644 xen/arch/arm/include/asm/scmi-smc.h
>>>    create mode 100644 xen/arch/arm/scmi-smc.c
>>>
>>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>>> index 323c967361..adf53e2de1 100644
>>> --- a/xen/arch/arm/Kconfig
>>> +++ b/xen/arch/arm/Kconfig
>>> @@ -245,6 +245,16 @@ config PARTIAL_EMULATION
>>>          not been emulated to their complete functionality. Enabling this might
>>>          result in unwanted/non-spec compliant behavior.
>>>    +config SCMI_SMC
>>> +    bool "Enable forwarding SCMI over SMC calls from Dom0 to EL3 firmware"
>>
>> Strictly speaking you are forwarding SMC from the hardware domain. For Arm, it is dom0 but it doesn't need to.
> 
> Well, SCMI is Arm-specific and so are SMCs, but I agree to change
> to "hardware domain" / "hwdom" in order to keep the language generic.

To clarify, I meant that it would be possible to have an hardware domain 
on Arm. This is not used/implemented today but most of the code is 
adhering to the language. The only reason where we would use dom0 is 
when we explicitely check for domain_id 0 in the code.

[...]

>>> +        return -EINVAL;
>>> +    }
>>> +
>>> +    ret = scmi_check_smccc_ver();
>>> +    if ( ret )
>>> +        goto err;
>>> +
>>> +    ret = scmi_dt_init_smccc();
>>> +    if ( ret == -EOPNOTSUPP )
>>> +        return ret;
>>> +    if ( ret )
>>> +        goto err;
>>> +
>>> +    printk(XENLOG_INFO "Using SCMI with SMC ID: 0x%x\n", scmi_smc_id);
>>> +
>>> +    return 0;
>>> +
>>> +err:
>>> +    printk(XENLOG_ERR "SCMI: Initialization failed (ret = %d)\n", ret);
>>
>> In the commit message, you said the SCMI subsystem was optional. But here you use XENLOG_ERR. Shouldn't it be a warn or XENLOG_INFO/XENLOG_WARN?
> 
> Well, SCMI is optional, in the sense that if we don't find the
> SCMI firmware node in the host DT, we exit silently (-EOPNOTSUPP)
> and we return right away (no error printed).
> 
> But if we do find the SCMI node, it means that we should initialize
> the SCMI subsystem, right? And if we're trying to do that and we
> find that the DT node is not correctly formatted (i.e. the
> 'arm,smc-id' property), I think we should print an error.

Correct me if I am wrong, but from the doc, I understood that the 
property arm,smc-id is only necessary if the transport is SMC/HVC.

So I don't think we should print an error if it is not found as this is 
effectively optional.

I agree...

> 
> However, I think we shouldn't print an error if we return
> with an error code from scmi_check_smccc_ver(). And the print
> inside scmi_check_smccc_ver() should be a XENLOG_WARN.
> 
> So, I think we should print a XENLOG_ERR only if we figured
> we need to initialize, and we started to do it but it failed.

... with the two other points.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 16:40:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 16:40:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809644.1222078 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swOsJ-0001pN-A1; Thu, 03 Oct 2024 16:40:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809644.1222078; Thu, 03 Oct 2024 16: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 1swOsJ-0001pG-7T; Thu, 03 Oct 2024 16:40:23 +0000
Received: by outflank-mailman (input) for mailman id 809644;
 Thu, 03 Oct 2024 16: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=ein2=Q7=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1swOsI-0001pA-Bf
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 16:40:22 +0000
Received: from EUR02-DB5-obe.outbound.protection.outlook.com
 (mail-db5eur02on20612.outbound.protection.outlook.com
 [2a01:111:f403:2608::612])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2d509156-81a6-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 18:40:20 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by DB9PR04MB9449.eurprd04.prod.outlook.com (2603:10a6:10:36a::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Thu, 3 Oct
 2024 16:40:16 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8005.024; Thu, 3 Oct 2024
 16:40: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: 2d509156-81a6-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BYvVXHaTUXOLWCWDbqvMo1LK2JTfi5j16bjQP7gX8DrVyRe+jIz3S5uct8YnuN9GF2hZqJApliPoamxkZ/R+gwvRYCnGRkJFl7MllrqhcZP5SFxTFs8QjvWoS8T65WgckDOnP0/xSjHMt42sIseiNhIX30fFrBsrtf+zOWtcYdQWZRuDmbVEZGunpH5nJMwC7vc3qup3VR4RhJnJma0jqmARlus+244hS4RjTAQibwxzeeuH9BtdzcaYvEGa01tTO+C5f8B0QJBSKaDycNkA0lRDgYHTtfV90PL6ywLWjLmlvGka0/wLvdBhu4SyEcarciek4O2W1lsgH7qPMocXyw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=i2BvPJa+sqdpKzgSuybKmHwz7GSCbD4LhmLoqoF4IBI=;
 b=R00pXHkiE3Kt/SWxAhVym0qGOEFbStcVITKhMufSuQgfnqPqT6egZ1OdHt2oUvx+FyRgZwbDbr5zQpgkxtPrmxc/KH4xFFc8ylTVOzMoGpWdxLa49XJY4+mNFXjLr8VKzAfo8uinLE92kIEF0cTRbPuFsvIR6CJgJX+a7teQYBiOZmBwMQzRb3a0iipTGrfvID8gRy2Xfi01WxyMiLZma6/eIGnlaYyRYX34dO9K/ZAmiI/b893IfIApRiZ8cAl9tH1n4kKNKuEByhhNtnBoT57YnmQEx+UG96YYne15mroH4J0aTY15RdI7vyd3x11ox5qdUWJi1HLNu3hbUxEujQ==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=i2BvPJa+sqdpKzgSuybKmHwz7GSCbD4LhmLoqoF4IBI=;
 b=CtO+gxlVj+ToddTWsJcqqObu3ynJSY0v7G3hObVydIvxuj7o3oxnrI2Ccg4HHURsT0bDX1JDmB1ojji64zSZW5vgVd+yZ9dkDLOByNvk5y/1Uk5FhyWJKgIgnwVa013yDEoH7sDfVX0rRwzruD7VJpJK25LkrJNcdfO790l9i5ckbI8naPXcClmxOh6eT/LwS57EUY1X37CKQE5AbzaCn2z7OC5hQjFRbMyLwsaADK4HR0F5Q1DmyH5JLKu6J2kd/4/P+LGwFJgFRHOOo13LXsywfeZ1T7rGbp4yoZq6uHJYhLG4uZO/KzX+3MLNLkYBUxJ6nbwP4Xwasw0GKagNqw==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <206efc95-7ba4-4df3-99ea-d40b4540c5aa@oss.nxp.com>
Date: Thu, 3 Oct 2024 19:40:12 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/8] xen/arm: Add SCMI over SMC calls handling layer
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
 <e713ae46-104a-4414-8ad3-02ca8b0a521d@xen.org>
 <3092497c-8626-4e86-b28a-16594eb2a4f0@oss.nxp.com>
 <45a70cd4-f7a0-4ef8-ab90-c256ec6e544e@xen.org>
Content-Language: en-US
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
In-Reply-To: <45a70cd4-f7a0-4ef8-ab90-c256ec6e544e@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AS4P251CA0016.EURP251.PROD.OUTLOOK.COM
 (2603:10a6:20b:5d3::8) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|DB9PR04MB9449:EE_
X-MS-Office365-Filtering-Correlation-Id: 6fd585d6-1186-4d6d-c909-08dce3ca0f70
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SmMxd3pKZ1dzVWlnS0FFcUVmckFoQ21jNStZbHcyL2Fka05WZmxOd2ZKYlFu?=
 =?utf-8?B?YTFBem9XWk5DcnZTZ0trS2pudUpnOHdrYjB0d0JMOUMwL1FxRUswOVhGWnd0?=
 =?utf-8?B?ZGNITkpMdlR2eDNyaURsaGptZWw5VFJUUWl3SW9kd051c25QSXdZeGFaVUpZ?=
 =?utf-8?B?Y2VRd3dRVUxhUFgrLzRKU1psZDVFTUdSWDJpZVlUeWNsT0xMRi9LZkZXL1lR?=
 =?utf-8?B?TmV2Y05ET3ZJcnBITW5LQklYQTByVG53UXhaeDQremhoNTJKejlqcXZGZWJY?=
 =?utf-8?B?NGovMXFZT1JBeXcxT29pKzFTak05RlQvUlNpUlB2OGxSdHA1Z0czeVkzUFRO?=
 =?utf-8?B?MzJPbHljeDRFdU5mQXQxUlQ4TG5PVGN4amFpdytqdkpTMWtnNFRCWDZVem93?=
 =?utf-8?B?WjdFTVMxZ3QvTmpobHR0dW1pK0tXdnhhMTZYN1l0TnZOZlkvYjAyWDVzb0do?=
 =?utf-8?B?cGVBb3RlMjNWN09PVkg3NTRJWUl5ODFtN0tBZ2xMVlUydTlMT3dZYlVidERG?=
 =?utf-8?B?UnFRU1ZGQzJLSkdmM1ZmTkJsS1FMdTRQb3Z3RzJ3bUNMclYwSGZWNmFtcmxm?=
 =?utf-8?B?N09kNG8zOFVtTDhDSHpFcUwxc3hSNEFYak9sM1dxdUdoNWFrQVpVWTU3S1ds?=
 =?utf-8?B?Z3gvenl0MWpaQmc4NlRXZzNySWZKZHF6T0JtUFQxTWtQTWlnY1BFMXNIZFVD?=
 =?utf-8?B?YUo3L3FRYmdkVmpyS25uNXZpNGlrZmpoak4rRzNCVFRod25NV3BRbDFWM3No?=
 =?utf-8?B?bTRBNUNnY2p5Y0t6TXJnNCt0c0FzaGdNQVQyMmtWQ2JHT3AxUTByZUhPQjV3?=
 =?utf-8?B?SkxpRW9FT1JIYXFOdW1oVFBMMCswY2poSnpYZEtPWDNub3Znc3ovNXIvU3VO?=
 =?utf-8?B?THRmdjJ2QWlGV1ArcjdJemdpOTJVQkduZzJYOUc3SzVJNFJHUk9XUzl2SXBZ?=
 =?utf-8?B?MTNTakR4blVNdGlzODdMa1FWR2k4WHhuK3R0dThXa2RzRlk4RjNYSDFGYjND?=
 =?utf-8?B?cHVaK21pZmNJYklWQmJ6aTZqNjEvbkg3WE94YVFCZ1N3c3pMUkYxbGo3NDZl?=
 =?utf-8?B?OG81bzJ6dnFza3N6VkpqMm5LR2lwOHlzT0hJb24rZFlTY09pbUVDU1ZIdCtB?=
 =?utf-8?B?Y3hHaTZSbWpaNmg1WmloKzRKUkxFaU1kVktHRXpXNnFLTUR0eTRSK0xKUmdC?=
 =?utf-8?B?RHFTQXMyb1FoTGFuZlFwVzVyazIrUnFCNjlyMTNPWXA5d0JmRm1McTZMaEVR?=
 =?utf-8?B?M1lEb2ZQZlRVTHJMNlFyUlZpQ2VmUURKa2hJUkc2QkhUTHg1L3ZjdkhhdGVN?=
 =?utf-8?B?aWh2QkwzaTdBTlZSc25tdFY3eGhQY1FUVzZnOEhUbVRNT1NjTTdObE5vdlVE?=
 =?utf-8?B?eXMrMVNjL3h4MklBWUFCN0FvL0JpUjNaeFp3ZzJSeVBRVEp6SnNPbUFTWG5O?=
 =?utf-8?B?OUtrNTVBcE9Cd1Q4dlg3Qi9LK29icEhXYU1qTWx2cG83cUtRY1cvdHpMSURC?=
 =?utf-8?B?cW1WQnJZbUhha0p0anJXSmpSR0t2OGR6NnJxaU5zWmFGNEZKdDNkOHNncGM0?=
 =?utf-8?B?cUI2VVBSNnAxVXZWbzVyczBGZDJkQ2NUZ1VBaklzMTZVcmFzaW1ENXV3QTZn?=
 =?utf-8?Q?dcabZySlyj03S7bmJsJPDLPwcMG/QA6oIiXuX1EV/lts=3D?=
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:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bXFndUNOdWVQZmx6K0VtOXZWcmVKM08vMFAxQnJqc2NoYXd0WXNrQ2JCN3VP?=
 =?utf-8?B?dVFzM2FWUVk5Y2VObnVRcmhTVlBUeSt3eW1ZYU9yYkV0cmZiN1M4T0tVV056?=
 =?utf-8?B?L1RQUmlKTit5bkJ1RTJUYmxqQzRsdklybTVkSWVnVWZTQ0M1MXY2b1o3ZzJX?=
 =?utf-8?B?ZUFrOFduczY4OUttM3FhRk9Ba3lRQlFlQ3pDVnRzTUJtTGo0OWxBTVI0aWtZ?=
 =?utf-8?B?WHBkelJTR2U4TjQrR29oQXluL0g4b0M5L0h3bkFMVUtJcFRBMzlxNmt5a2dx?=
 =?utf-8?B?V3hLZXJLMmJZaS9HUm82eEFJQTZROHZERmFqd09QaDVUbkFCNHlKTlNGRFRt?=
 =?utf-8?B?VWJ6L0h2ZDBhcWtSY2Y2TkVGeUM2cU5Qd3Z1UVRkMXVkc1F0ckZIeHgwMTRz?=
 =?utf-8?B?YktpNXFyR2dGejZFS2dwbitBelJqUnlxdHZxNkFPR3prbkFubENXdGVmdC9r?=
 =?utf-8?B?aE4xS3J2RkJrbFB2cW5VR2pyZkJxVGsvQXhkSHF4QUtvNFpjRzZzY1V4R2Jw?=
 =?utf-8?B?QnNNYUdaeHhjT1I1dzdiLzZ0L1B0WEtIWkpqUmNHT1dQSFRXMCtmMk5DVkFt?=
 =?utf-8?B?aFZ2cHZ5SGt3cmFjTnVhb2FDQ2FQUGFqRmc3d3pHK2RlYU1XZ3EySFVPL0p0?=
 =?utf-8?B?Z0lncXVHRytqVUVON0lySXVMenZLQjVpdWRtSEoxUWkzb3NHRnFaejFUTlhX?=
 =?utf-8?B?bTFJOElMN0JxWk0zNk12ZCs3OGtLVnkzNDNDK2tFVDFEZEVYYW1BOTR6ZEt3?=
 =?utf-8?B?eTVkandHdlIwbzM3STlxSEYzSDEwNkNnSmlFZTVOcnl6d1lZbWRMYUhXVUc4?=
 =?utf-8?B?a0JwVThlbU1MV0tuK3gzQXlpVFJhZFBoYkxwUmFFcGdpSXFsbFF5RkZMQ2VO?=
 =?utf-8?B?dE9Sd0E1dmdkT25UT0I1b3hJeTJyTUpmUktXanE2R1FvNTcwMmdpTkw2STd1?=
 =?utf-8?B?dkFOU0phNGgxN0x3YktPOHFxWmxpR1pmbjVLa0JueFNYeUdQcnBCU09DUU1X?=
 =?utf-8?B?b0ovUVFFYkNabE5BQUNpTlEzdXNLRXZSUklON2RpY1VmaEJJdHowaHRNMHRx?=
 =?utf-8?B?SGVxYU1ZOGQrdlMrc1JEUktRelc4ZlRHTGc0bXVTNG4wckQ4a3dkVUlPM2Vx?=
 =?utf-8?B?UjlaVXkxVlhNZXFZRUh5L3NHUDdxVWFtcXVBTENvdjl1OXNQUE5zNzd2T2pw?=
 =?utf-8?B?c0RHVTNvS0EvMHpkeWYxVGpqV2g0alFOWmd5NnJGT0RzS2RLTVBkVVZoaFZQ?=
 =?utf-8?B?RGRyLzR1U1pyQTFqMFlzbDRkOTk2bkp1VGlHbWViZUIzVEEvK2lZejJEWXFj?=
 =?utf-8?B?bU1TQ01Pb1BEbFBCUWhCN2ExRWYvajdxckwyQ21YS090dFNFRGRMUE1ZV3Bs?=
 =?utf-8?B?bEx3VjBXMHRnVkR3cVh6SmZXODZvOWZJeUVwMzlFelBUWUJCYXhDK0FWVXNn?=
 =?utf-8?B?V0Z2YXRxSTdlTGVTbFNqaHJWQ2hQa1RlbmIxcGpLbStwY2tTaDZtUFR3Zm5O?=
 =?utf-8?B?VllWMmFSU0Z5RmgvQzVGem5iRG50K1ZiZzFPS0FQU1BXTGVvM29FSVR1RG1W?=
 =?utf-8?B?QnM3WGNubjhSaWM3N081bmlUQ0pveDUxY0JPQWVCQWZSTmJWRk5DSEhzNndV?=
 =?utf-8?B?bkpoSEtQcmVFc2YzQ3ZkMGJ1eEVlSmdNNGxybjgvUlRBcHRwMSsvTDdZU3Av?=
 =?utf-8?B?U2k3Rys5ZWdRYVRsR2o0N2xTMHl5WHNUeGhndzFIUXFlQjRNaXBqcEhOMm1N?=
 =?utf-8?B?WkFWZUhQdnJpSXhmQS9NR1lxVEozME9IMExKb0l1RDhGclQwVS9ibkJzc3Rq?=
 =?utf-8?B?QndKZnF6KzZ4K0F2TUl1NnZURzhmaVIrRUtmdThjZDRhcWdLVXlqZlRLUWhG?=
 =?utf-8?B?U202VThoNGFMcE9SakpLYmNla1FrdGtpbHB2WlU1OFhUSTZMMHhlRCtJeU1N?=
 =?utf-8?B?Q1hheTl1UXdWK04xa3d6MW1WSXdJdFZybDF1c1l1YWpVUXl5OS9FR1lJK09H?=
 =?utf-8?B?QmJmSncvYTVBeXBFMXBGdkZtVkt4T01vd01QeU1HM0ZMVEQzSjdheTVOcjVY?=
 =?utf-8?B?QUJJdWprWVlDOEU2MENzYkhJK1VFTkdqSG9LV0R1cVVES1FFQ0w2WTdIMS9J?=
 =?utf-8?B?OVZZeGRIWkR0MHRsYjhNbnpnQlMzR3ZoYWJ2SmNOZk1YZ0ZSL20rVTRBUHZl?=
 =?utf-8?B?TUE9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6fd585d6-1186-4d6d-c909-08dce3ca0f70
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2024 16:40:16.4176
 (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: VLoxbHy4QCh47PBmbD6nPf7mi2dZTg51PGdz3XV09/N8ChXNgK/Ns0dze9Cw/8KUzHgmffV16QJSSJ3AwC5tidMLJoSAqhNd4rLfJ0Q2GXw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB9449

Hi Julien,

On 03/10/2024 19:07, Julien Grall wrote:
>
>
> On 03/10/2024 16:27, Andrei Cherechesu wrote:
>> Hi Julien,
>
> Hi Andrei,
>
>> On 01/10/2024 12:35, Julien Grall wrote:
>>>
>>>> , the initialization fails silently, as it's not mandatory.
>>>> Otherwise, we get the 'arm,smc-id' DT property from the node,
>>>> to know the SCMI SMC ID we handle. The 'shmem' memory ranges
>>>> are not validated, as the SMC calls are only passed through
>>>> to EL3 FW if coming from Dom0 and as if Dom0 would be natively
>>>> running.
>>>>
>>>> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>>> ---
>>>>    xen/arch/arm/Kconfig                |  10 ++
>>>>    xen/arch/arm/Makefile               |   1 +
>>>>    xen/arch/arm/include/asm/scmi-smc.h |  52 +++++++++
>>>>    xen/arch/arm/scmi-smc.c             | 163 ++++++++++++++++++++++++++++
>>>>    4 files changed, 226 insertions(+)
>>>>    create mode 100644 xen/arch/arm/include/asm/scmi-smc.h
>>>>    create mode 100644 xen/arch/arm/scmi-smc.c
>>>>
>>>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>>>> index 323c967361..adf53e2de1 100644
>>>> --- a/xen/arch/arm/Kconfig
>>>> +++ b/xen/arch/arm/Kconfig
>>>> @@ -245,6 +245,16 @@ config PARTIAL_EMULATION
>>>>          not been emulated to their complete functionality. Enabling this might
>>>>          result in unwanted/non-spec compliant behavior.
>>>>    +config SCMI_SMC
>>>> +    bool "Enable forwarding SCMI over SMC calls from Dom0 to EL3 firmware"
>>>
>>> Strictly speaking you are forwarding SMC from the hardware domain. For Arm, it is dom0 but it doesn't need to.
>>
>> Well, SCMI is Arm-specific and so are SMCs, but I agree to change
>> to "hardware domain" / "hwdom" in order to keep the language generic.
>
> To clarify, I meant that it would be possible to have an hardware domain on Arm. This is not used/implemented today but most of the code is adhering to the language. The only reason where we would use dom0 is when we explicitely check for domain_id 0 in the code.
>
> [...]

Thank you for the clarification.

>
>>>> +        return -EINVAL;
>>>> +    }
>>>> +
>>>> +    ret = scmi_check_smccc_ver();
>>>> +    if ( ret )
>>>> +        goto err;
>>>> +
>>>> +    ret = scmi_dt_init_smccc();
>>>> +    if ( ret == -EOPNOTSUPP )
>>>> +        return ret;
>>>> +    if ( ret )
>>>> +        goto err;
>>>> +
>>>> +    printk(XENLOG_INFO "Using SCMI with SMC ID: 0x%x\n", scmi_smc_id);
>>>> +
>>>> +    return 0;
>>>> +
>>>> +err:
>>>> +    printk(XENLOG_ERR "SCMI: Initialization failed (ret = %d)\n", ret);
>>>
>>> In the commit message, you said the SCMI subsystem was optional. But here you use XENLOG_ERR. Shouldn't it be a warn or XENLOG_INFO/XENLOG_WARN?
>>
>> Well, SCMI is optional, in the sense that if we don't find the
>> SCMI firmware node in the host DT, we exit silently (-EOPNOTSUPP)
>> and we return right away (no error printed).
>>
>> But if we do find the SCMI node, it means that we should initialize
>> the SCMI subsystem, right? And if we're trying to do that and we
>> find that the DT node is not correctly formatted (i.e. the
>> 'arm,smc-id' property), I think we should print an error.
>
> Correct me if I am wrong, but from the doc, I understood that the property arm,smc-id is only necessary if the transport is SMC/HVC.
>
> So I don't think we should print an error if it is not found as this is effectively optional.

I believe your understanding is correct, the 'arm,smc-id' property
is needed if the SCMI firmware node has either "arm,scmi-smc" or
"arm,scmi-smc-param" compatibles [0]. We only support the
"arm,scmi-smc" compatible with our implementation, though, as you
mentioned there should not be any addresses passed in the regs
alongside the SMC call. That would need to happen with the
"arm,scmi-smc-param" compatible.

But, by "if we do find the SCMI firmware node" I effectively meant
"if we find the node in Host DT with 'arm,scmi-smc' compatible",
since we're only implementing this specific variant. And that's
why I implied that a valid 'arm,smc-id' property is equivalent to
having a correctly defined SCMI firmware node. Having found the
"arm,scmi-smc" compatible node (which IMO means we should commit to
initializing the SCMI layer), shouldn't we print if we tried to init
the SCMI layer and failed (due to incorrect formatting of the node)?

I hope I explained it better now. If there's still anything unclear,
let me know.
 
Anyway, I'm fine either way regarding the prints. If we consider SCMI
layer initialization optional we could also not print any errors if
it fails (no matter why). Correct me if I'm wrong, but IIUC that is
what you're suggesting.

[0] https://elixir.bootlin.com/linux/v6.11/source/Documentation/devicetree/bindings/firmware/arm,scmi.yaml#L359

>
> I agree...
>
>>
>> However, I think we shouldn't print an error if we return
>> with an error code from scmi_check_smccc_ver(). And the print
>> inside scmi_check_smccc_ver() should be a XENLOG_WARN.
>>
>> So, I think we should print a XENLOG_ERR only if we figured
>> we need to initialize, and we started to do it but it failed.
>
> ... with the two other points.
>
> Cheers,
>

Regards,
Andrei C



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:04:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:04:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809656.1222088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swPFX-0005a7-2e; Thu, 03 Oct 2024 17:04:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809656.1222088; Thu, 03 Oct 2024 17: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 1swPFW-0005a0-W7; Thu, 03 Oct 2024 17:04:22 +0000
Received: by outflank-mailman (input) for mailman id 809656;
 Thu, 03 Oct 2024 17:04: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=CNe7=Q7=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swPFV-0005Zu-Ou
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:04:22 +0000
Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com
 [2a00:1450:4864:20::643])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 86e89377-81a9-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:04:18 +0200 (CEST)
Received: by mail-ej1-x643.google.com with SMTP id
 a640c23a62f3a-a8d3cde1103so159275566b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:04:18 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104cee89sm107443066b.218.2024.10.03.10.04.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:04:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86e89377-81a9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727975057; x=1728579857; 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=FE8YOhBv8goFF7bpPedX4p8q4pOjzJo9mDN8lc3gdJc=;
        b=XzbeaFo0iwqdFkcZ+ZxwUgscivbHyFaO08Of0NIn9k+5DDiRkc6y4ZVwSNe0+jL1ar
         ++ZOa76Ztmwkqks3Iq/zZ77LOgtAIjDcsxsUTYr7h+ch/+OV0rvYtMFKXRfYwHZQRFeq
         rpUNoo6n7o44xkSqFXCFjfJeoLAqA3lOCKAvo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727975057; x=1728579857;
        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=FE8YOhBv8goFF7bpPedX4p8q4pOjzJo9mDN8lc3gdJc=;
        b=NlaAMvadCgcZ8WJA+kWU4UemJILWNbIGrtyc9mbt73sDZCh6YRzelBFNAXYd3jOjwF
         OnuxYECJRdLh3ZLdBVEWGHdV5YW5OCLjfUCkDXfUpHh52KIb2jBzVbtnD7ruZlWW7MWL
         efLW3dtX6QHqTEG2cwSTwHT7McAodU5bF8iZuZja4AQyjWwKoPztqM241XTT/XkOMUyY
         uWuIB3xWSehHK6ERwgBh60MY6opiLd1zuZH5lgowgEJrAoC+rAjLbK83lhQJ7ICW5oZf
         50VPkJbaz48bVmPGjnBZ0OhY1g+p6gvZFPIDbHosGQ6loGWOrr15Vk1sm6AKM+URecHI
         BAIA==
X-Gm-Message-State: AOJu0YyrJKXWkzBkztSLu09W3K6BM+aI395rpVtG0tuM/7AXYGM3JGDq
	0t9Qx0joJtclN46XB22fBxsF3LVVJqc4izXmDU1KmF8Aoe0zFrQNUbPsRkZREZ0TwBtKJA1Aln5
	J6VaZZA==
X-Google-Smtp-Source: AGHT+IEV0kzbGJKfftUnBvC7pBqsmnkgcXYYFDY9zhDkfK7KAJ7wseZ1TWm3V3SFhJurUtzDUQ89Cw==
X-Received: by 2002:a17:907:9404:b0:a8d:e4b:d7fe with SMTP id a640c23a62f3a-a991bab46e5mr10957866b.0.1727975057158;
        Thu, 03 Oct 2024 10:04:17 -0700 (PDT)
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>
Subject: [PATCH] x86: Introduce X86_ET_* constants in x86-defns.h
Date: Thu,  3 Oct 2024 18:04:13 +0100
Message-Id: <20241003170413.2227753-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The FRED spec architecturalises the Event Type encoding, previously exposed
only in VMCB/VMCS fields.

Introduce the constants in x86-defns.h, making them a bit more consice, and
retire enum x86_event_type.

Take the opportunity to introduce X86_ET_OTHER.  It's absence appears to be a
bug in Introspection's Monitor Trap Flag support, when considering VECTORING
events during another VMExit.

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>
---
 tools/include/xendevicemodel.h         |  2 +-
 xen/arch/x86/hvm/hvm.c                 |  8 ++---
 xen/arch/x86/hvm/svm/intr.c            |  4 +--
 xen/arch/x86/hvm/svm/svm.c             | 47 +++++++++++++-------------
 xen/arch/x86/hvm/vmx/vmx.c             | 42 +++++++++++------------
 xen/arch/x86/hvm/vmx/vvmx.c            | 12 +++----
 xen/arch/x86/include/asm/domain.h      |  8 ++---
 xen/arch/x86/include/asm/hvm/hvm.h     |  4 +--
 xen/arch/x86/include/asm/x86-defns.h   |  9 +++++
 xen/arch/x86/mm/shadow/multi.c         |  2 +-
 xen/arch/x86/pv/ro-page-fault.c        |  2 +-
 xen/arch/x86/pv/traps.c                |  6 ++--
 xen/arch/x86/x86_emulate/x86_emulate.c | 26 +++++++-------
 xen/arch/x86/x86_emulate/x86_emulate.h | 19 ++---------
 xen/include/public/hvm/dm_op.h         |  2 +-
 15 files changed, 91 insertions(+), 102 deletions(-)

diff --git a/tools/include/xendevicemodel.h b/tools/include/xendevicemodel.h
index 797e0c6b2961..227e7fd8109e 100644
--- a/tools/include/xendevicemodel.h
+++ b/tools/include/xendevicemodel.h
@@ -308,7 +308,7 @@ int xendevicemodel_set_mem_type(
  * @parm domid the domain id to be serviced
  * @parm vcpu the vcpu id
  * @parm vector the interrupt vector
- * @parm type the event type (see the definition of enum x86_event_type)
+ * @parm type the event type (see x86-defns.h:X86_ET_*)
  * @parm error_code the error code or ~0 to skip
  * @parm insn_len the instruction length
  * @parm extra type-specific extra data (%cr2 for #PF, pending_dbg for #DB)
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index b2e782d596f7..7b2e1c9813d6 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -219,10 +219,10 @@ int hvm_event_needs_reinjection(uint8_t type, uint8_t vector)
 {
     switch ( type )
     {
-    case X86_EVENTTYPE_EXT_INTR:
-    case X86_EVENTTYPE_NMI:
+    case X86_ET_EXT_INTR:
+    case X86_ET_NMI:
         return 1;
-    case X86_EVENTTYPE_HW_EXCEPTION:
+    case X86_ET_HW_EXC:
         /*
          * SVM uses type 3 ("HW Exception") for #OF and #BP. We explicitly
          * check for these vectors, as they are really SW Exceptions. SVM has
@@ -1738,7 +1738,7 @@ void hvm_inject_event(const struct x86_event *event)
 {
     struct vcpu *curr = current;
     const uint8_t vector = event->vector;
-    const bool has_ec = ((event->type == X86_EVENTTYPE_HW_EXCEPTION) &&
+    const bool has_ec = ((event->type == X86_ET_HW_EXC) &&
                          (vector < 32) && ((X86_EXC_HAVE_EC & (1u << vector))));
 
     ASSERT(vector == event->vector); /* Confirm no truncation. */
diff --git a/xen/arch/x86/hvm/svm/intr.c b/xen/arch/x86/hvm/svm/intr.c
index 780c7e178a52..46186a110261 100644
--- a/xen/arch/x86/hvm/svm/intr.c
+++ b/xen/arch/x86/hvm/svm/intr.c
@@ -35,7 +35,7 @@ static void svm_inject_nmi(struct vcpu *v)
 
     event.raw = 0;
     event.v = true;
-    event.type = X86_EVENTTYPE_NMI;
+    event.type = X86_ET_NMI;
     event.vector = X86_EXC_NMI;
 
     ASSERT(!vmcb->event_inj.v);
@@ -56,7 +56,7 @@ static void svm_inject_extint(struct vcpu *v, int vector)
 
     event.raw = 0;
     event.v = true;
-    event.type = X86_EVENTTYPE_EXT_INTR;
+    event.type = X86_ET_EXT_INTR;
     event.vector = vector;
 
     ASSERT(!vmcb->event_inj.v);
diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
index e0793b26db63..b8f87aa1ed08 100644
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -1185,7 +1185,7 @@ static void svm_emul_swint_injection(struct x86_event *event)
 
     /* ICEBP sets the External Event bit despite being an instruction. */
     ec = (trap << 3) | X86_XEC_IDT |
-        (type == X86_EVENTTYPE_PRI_SW_EXCEPTION ? X86_XEC_EXT : 0);
+         (type == X86_ET_PRIV_SW_EXC ? X86_XEC_EXT : 0);
 
     /*
      * TODO: This does not cover the v8086 mode with CR4.VME case
@@ -1243,7 +1243,7 @@ static void svm_emul_swint_injection(struct x86_event *event)
         goto raise_exception;
 
     /* ICEBP counts as a hardware event, and bypasses the dpl check. */
-    if ( type != X86_EVENTTYPE_PRI_SW_EXCEPTION &&
+    if ( type != X86_ET_PRIV_SW_EXC &&
          vmcb_get_cpl(vmcb) > ((idte.b >> 13) & 3) )
         goto raise_exception;
 
@@ -1264,7 +1264,7 @@ static void svm_emul_swint_injection(struct x86_event *event)
 
  raise_exception:
     event->vector = fault;
-    event->type = X86_EVENTTYPE_HW_EXCEPTION;
+    event->type = X86_ET_HW_EXC;
     event->insn_len = 0;
     event->error_code = ec;
 }
@@ -1285,11 +1285,11 @@ static void cf_check svm_inject_event(const struct x86_event *event)
      * further fault shouldn't occur during delivery.  This covers the fact
      * that hardware doesn't perform DPL checking on injection.
      */
-    if ( event->type == X86_EVENTTYPE_PRI_SW_EXCEPTION ||
-         (!cpu_has_svm_nrips && (event->type >= X86_EVENTTYPE_SW_INTERRUPT)) )
+    if ( event->type == X86_ET_PRIV_SW_EXC ||
+         (!cpu_has_svm_nrips && (event->type >= X86_ET_SW_INT)) )
         svm_emul_swint_injection(&_event);
 
-    switch ( _event.vector | -(_event.type == X86_EVENTTYPE_SW_INTERRUPT) )
+    switch ( _event.vector | -(_event.type == X86_ET_SW_INT) )
     {
     case X86_EXC_DB:
         if ( regs->eflags & X86_EFLAGS_TF )
@@ -1308,13 +1308,13 @@ static void cf_check svm_inject_event(const struct x86_event *event)
         break;
 
     case X86_EXC_PF:
-        ASSERT(_event.type == X86_EVENTTYPE_HW_EXCEPTION);
+        ASSERT(_event.type == X86_ET_HW_EXC);
         curr->arch.hvm.guest_cr[2] = _event.cr2;
         vmcb_set_cr2(vmcb, _event.cr2);
         break;
     }
 
-    if ( eventinj.v && (eventinj.type == X86_EVENTTYPE_HW_EXCEPTION) )
+    if ( eventinj.v && (eventinj.type == X86_ET_HW_EXC) )
     {
         _event.vector = hvm_combine_hw_exceptions(
             eventinj.vector, _event.vector);
@@ -1339,15 +1339,15 @@ static void cf_check svm_inject_event(const struct x86_event *event)
      */
     switch ( _event.type )
     {
-    case X86_EVENTTYPE_SW_INTERRUPT: /* int $n */
+    case X86_ET_SW_INT: /* int $n */
         if ( cpu_has_svm_nrips )
             vmcb->nextrip = regs->rip + _event.insn_len;
         else
             regs->rip += _event.insn_len;
-        eventinj.type = X86_EVENTTYPE_SW_INTERRUPT;
+        eventinj.type = X86_ET_SW_INT;
         break;
 
-    case X86_EVENTTYPE_PRI_SW_EXCEPTION: /* icebp */
+    case X86_ET_PRIV_SW_EXC: /* icebp */
         /*
          * icebp's injection must always be emulated, as hardware does not
          * special case HW_EXCEPTION with vector 1 (#DB) as having trap
@@ -1356,10 +1356,10 @@ static void cf_check svm_inject_event(const struct x86_event *event)
         regs->rip += _event.insn_len;
         if ( cpu_has_svm_nrips )
             vmcb->nextrip = regs->rip;
-        eventinj.type = X86_EVENTTYPE_HW_EXCEPTION;
+        eventinj.type = X86_ET_HW_EXC;
         break;
 
-    case X86_EVENTTYPE_SW_EXCEPTION: /* int3, into */
+    case X86_ET_SW_EXC: /* int3, into */
         /*
          * Hardware special cases HW_EXCEPTION with vectors 3 and 4 as having
          * trap semantics, and will perform DPL checks.
@@ -1368,11 +1368,11 @@ static void cf_check svm_inject_event(const struct x86_event *event)
             vmcb->nextrip = regs->rip + _event.insn_len;
         else
             regs->rip += _event.insn_len;
-        eventinj.type = X86_EVENTTYPE_HW_EXCEPTION;
+        eventinj.type = X86_ET_HW_EXC;
         break;
 
     default:
-        eventinj.type = X86_EVENTTYPE_HW_EXCEPTION;
+        eventinj.type = X86_ET_HW_EXC;
         eventinj.ev = (_event.error_code != X86_EVENT_NO_EC);
         eventinj.ec = _event.error_code;
         break;
@@ -1391,8 +1391,7 @@ static void cf_check svm_inject_event(const struct x86_event *event)
     ASSERT(!eventinj.ev || eventinj.ec == (uint16_t)eventinj.ec);
     vmcb->event_inj = eventinj;
 
-    if ( _event.vector == X86_EXC_PF &&
-         _event.type == X86_EVENTTYPE_HW_EXCEPTION )
+    if ( _event.vector == X86_EXC_PF && _event.type == X86_ET_HW_EXC )
         TRACE(TRC_HVM_PF_INJECT64, _event.error_code,
               _event.cr2, _event.cr2 >> 32);
     else
@@ -2694,12 +2693,12 @@ void asmlinkage svm_vmexit_handler(void)
 
             if ( likely(exit_reason != VMEXIT_ICEBP) )
             {
-                trap_type = X86_EVENTTYPE_HW_EXCEPTION;
+                trap_type = X86_ET_HW_EXC;
                 insn_len = 0;
             }
             else
             {
-                trap_type = X86_EVENTTYPE_PRI_SW_EXCEPTION;
+                trap_type = X86_ET_PRIV_SW_EXC;
                 insn_len = svm_get_insn_len(v, INSTR_ICEBP);
 
                 if ( !insn_len )
@@ -2736,13 +2735,13 @@ void asmlinkage svm_vmexit_handler(void)
         {
            rc = hvm_monitor_debug(regs->rip,
                                   HVM_MONITOR_SOFTWARE_BREAKPOINT,
-                                  X86_EVENTTYPE_SW_EXCEPTION,
+                                  X86_ET_SW_EXC,
                                   insn_len, 0);
            if ( rc < 0 )
                goto unexpected_exit_type;
            if ( !rc )
                hvm_inject_exception(X86_EXC_BP,
-                                    X86_EVENTTYPE_SW_EXCEPTION,
+                                    X86_ET_SW_EXC,
                                     insn_len, X86_EVENT_NO_EC);
         }
         break;
@@ -2835,13 +2834,13 @@ void asmlinkage svm_vmexit_handler(void)
                  * ICEBP is handled specially, and already has fault
                  * semantics.
                  */
-            case X86_EVENTTYPE_HW_EXCEPTION:
+            case X86_ET_HW_EXC:
                 if ( vmcb->exit_int_info.vector == X86_EXC_BP ||
                      vmcb->exit_int_info.vector == X86_EXC_OF )
                     break;
                 /* Fallthrough */
-            case X86_EVENTTYPE_EXT_INTR:
-            case X86_EVENTTYPE_NMI:
+            case X86_ET_EXT_INTR:
+            case X86_ET_NMI:
                 insn_len = 0;
                 break;
             }
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 12f8a66458db..b6885d0e2764 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1994,14 +1994,13 @@ void vmx_inject_extint(int trap, uint8_t source)
         if ( pin_based_cntrl & PIN_BASED_EXT_INTR_MASK ) {
             nvmx_enqueue_n2_exceptions (v, 
                INTR_INFO_VALID_MASK |
-               MASK_INSR(X86_EVENTTYPE_EXT_INTR, INTR_INFO_INTR_TYPE_MASK) |
+               MASK_INSR(X86_ET_EXT_INTR, INTR_INFO_INTR_TYPE_MASK) |
                MASK_INSR(trap, INTR_INFO_VECTOR_MASK),
                X86_EVENT_NO_EC, source);
             return;
         }
     }
-    __vmx_inject_exception(trap, X86_EVENTTYPE_EXT_INTR,
-                           X86_EVENT_NO_EC);
+    __vmx_inject_exception(trap, X86_ET_EXT_INTR, X86_EVENT_NO_EC);
 }
 
 void vmx_inject_nmi(void)
@@ -2014,23 +2013,22 @@ void vmx_inject_nmi(void)
         if ( pin_based_cntrl & PIN_BASED_NMI_EXITING ) {
             nvmx_enqueue_n2_exceptions (v, 
                INTR_INFO_VALID_MASK |
-               MASK_INSR(X86_EVENTTYPE_NMI, INTR_INFO_INTR_TYPE_MASK) |
+               MASK_INSR(X86_ET_NMI, INTR_INFO_INTR_TYPE_MASK) |
                MASK_INSR(X86_EXC_NMI, INTR_INFO_VECTOR_MASK),
                X86_EVENT_NO_EC, hvm_intsrc_nmi);
             return;
         }
     }
-    __vmx_inject_exception(2, X86_EVENTTYPE_NMI,
-                           X86_EVENT_NO_EC);
+    __vmx_inject_exception(2, X86_ET_NMI, X86_EVENT_NO_EC);
 }
 
 /*
  * Generate a virtual event in the guest.
  * NOTES:
- *  - INT 3 (CC) and INTO (CE) are X86_EVENTTYPE_SW_EXCEPTION;
- *  - INT nn (CD nn) is X86_EVENTTYPE_SW_INTERRUPT;
- *  - #DB is X86_EVENTTYPE_HW_EXCEPTION, except when generated by
- *    opcode 0xf1 (which is X86_EVENTTYPE_PRI_SW_EXCEPTION)
+ *  - INT3 (CC) and INTO (CE) are X86_ET_SW_EXC;
+ *  - INT $n (CD nn) is X86_ET_SW_INT;
+ *  - #DB is X86_ET_HW_EXC, except when generated by
+ *    ICEBP/INT1 (which is X86_ET_PRIV_SW_EXC)
  */
 static void cf_check vmx_inject_event(const struct x86_event *event)
 {
@@ -2038,7 +2036,7 @@ static void cf_check vmx_inject_event(const struct x86_event *event)
     struct vcpu *curr = current;
     struct x86_event _event = *event;
 
-    switch ( _event.vector | -(_event.type == X86_EVENTTYPE_SW_INTERRUPT) )
+    switch ( _event.vector | -(_event.type == X86_ET_SW_INT) )
     {
     case X86_EXC_DB:
         if ( guest_cpu_user_regs()->eflags & X86_EFLAGS_TF )
@@ -2069,7 +2067,7 @@ static void cf_check vmx_inject_event(const struct x86_event *event)
         break;
 
     case X86_EXC_PF:
-        ASSERT(_event.type == X86_EVENTTYPE_HW_EXCEPTION);
+        ASSERT(_event.type == X86_ET_HW_EXC);
         curr->arch.hvm.guest_cr[2] = _event.cr2;
         break;
     }
@@ -2080,8 +2078,7 @@ static void cf_check vmx_inject_event(const struct x86_event *event)
         __vmread(VM_ENTRY_INTR_INFO, &intr_info);
 
     if ( unlikely(intr_info & INTR_INFO_VALID_MASK) &&
-         (MASK_EXTR(intr_info, INTR_INFO_INTR_TYPE_MASK) ==
-          X86_EVENTTYPE_HW_EXCEPTION) )
+         (MASK_EXTR(intr_info, INTR_INFO_INTR_TYPE_MASK) == X86_ET_HW_EXC) )
     {
         _event.vector = hvm_combine_hw_exceptions(
             (uint8_t)intr_info, _event.vector);
@@ -2089,7 +2086,7 @@ static void cf_check vmx_inject_event(const struct x86_event *event)
             _event.error_code = 0;
     }
 
-    if ( _event.type >= X86_EVENTTYPE_SW_INTERRUPT )
+    if ( _event.type >= X86_ET_SW_INT )
         __vmwrite(VM_ENTRY_INSTRUCTION_LEN, _event.insn_len);
 
     if ( nestedhvm_vcpu_in_guestmode(curr) &&
@@ -2105,8 +2102,7 @@ static void cf_check vmx_inject_event(const struct x86_event *event)
     else
         __vmx_inject_exception(_event.vector, _event.type, _event.error_code);
 
-    if ( (_event.vector == X86_EXC_PF) &&
-         (_event.type == X86_EVENTTYPE_HW_EXCEPTION) )
+    if ( (_event.vector == X86_EXC_PF) && (_event.type == X86_ET_HW_EXC) )
         TRACE(TRC_HVM_PF_INJECT64, _event.error_code,
               curr->arch.hvm.guest_cr[2], curr->arch.hvm.guest_cr[2] >> 32);
     else
@@ -3951,7 +3947,7 @@ static void vmx_propagate_intr(unsigned long intr)
     else
         event.error_code = X86_EVENT_NO_EC;
 
-    if ( event.type >= X86_EVENTTYPE_SW_INTERRUPT )
+    if ( event.type >= X86_ET_SW_INT )
     {
         __vmread(VM_EXIT_INSTRUCTION_LEN, &tmp);
         event.insn_len = tmp;
@@ -3990,7 +3986,7 @@ static void vmx_idtv_reinject(unsigned long idtv_info)
          */
         if ( cpu_has_vmx_vnmi &&
              ((idtv_info & INTR_INFO_INTR_TYPE_MASK) ==
-              MASK_INSR(X86_EVENTTYPE_NMI, INTR_INFO_INTR_TYPE_MASK)) )
+              MASK_INSR(X86_ET_NMI, INTR_INFO_INTR_TYPE_MASK)) )
         {
             unsigned long intr_info;
 
@@ -4115,7 +4111,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
             do_machine_check(regs);
         if ( (vector == X86_EXC_NMI) &&
              ((intr_info & INTR_INFO_INTR_TYPE_MASK) ==
-              MASK_INSR(X86_EVENTTYPE_NMI, INTR_INFO_INTR_TYPE_MASK)) )
+              MASK_INSR(X86_ET_NMI, INTR_INFO_INTR_TYPE_MASK)) )
         {
             do_nmi(regs);
             enable_nmis();
@@ -4317,7 +4313,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
                 unsigned long trap_type = MASK_EXTR(intr_info,
                                                     INTR_INFO_INTR_TYPE_MASK);
 
-                if ( trap_type >= X86_EVENTTYPE_SW_INTERRUPT )
+                if ( trap_type >= X86_ET_SW_INT )
                     __vmread(VM_EXIT_INSTRUCTION_LEN, &insn_len);
 
                 rc = hvm_monitor_debug(regs->rip,
@@ -4342,7 +4338,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
                 __vmread(VM_EXIT_INSTRUCTION_LEN, &insn_len);
                 rc = hvm_monitor_debug(regs->rip,
                                        HVM_MONITOR_SOFTWARE_BREAKPOINT,
-                                       X86_EVENTTYPE_SW_EXCEPTION,
+                                       X86_ET_SW_EXC,
                                        insn_len, 0);
 
                 if ( rc < 0 )
@@ -4391,7 +4387,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
             break;
         case X86_EXC_NMI:
             if ( MASK_EXTR(intr_info, INTR_INFO_INTR_TYPE_MASK) !=
-                 X86_EVENTTYPE_NMI )
+                 X86_ET_NMI )
                 goto exit_and_crash;
             TRACE(TRC_HVM_NMI);
             /* Already handled above. */
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index c05e0e9326b9..78135ca23be8 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -1346,7 +1346,7 @@ static void sync_exception_state(struct vcpu *v)
 
     switch ( MASK_EXTR(nvmx->intr.intr_info, INTR_INFO_INTR_TYPE_MASK) )
     {
-    case X86_EVENTTYPE_EXT_INTR:
+    case X86_ET_EXT_INTR:
         /* rename exit_reason to EXTERNAL_INTERRUPT */
         set_vvmcs(v, VM_EXIT_REASON, EXIT_REASON_EXTERNAL_INTERRUPT);
         set_vvmcs(v, EXIT_QUALIFICATION, 0);
@@ -1355,14 +1355,14 @@ static void sync_exception_state(struct vcpu *v)
                                                          : 0);
         break;
 
-    case X86_EVENTTYPE_HW_EXCEPTION:
-    case X86_EVENTTYPE_SW_INTERRUPT:
-    case X86_EVENTTYPE_SW_EXCEPTION:
+    case X86_ET_HW_EXC:
+    case X86_ET_SW_INT:
+    case X86_ET_SW_EXC:
         /* throw to L1 */
         set_vvmcs(v, VM_EXIT_INTR_INFO, nvmx->intr.intr_info);
         set_vvmcs(v, VM_EXIT_INTR_ERROR_CODE, nvmx->intr.error_code);
         break;
-    case X86_EVENTTYPE_NMI:
+    case X86_ET_NMI:
         set_vvmcs(v, VM_EXIT_REASON, EXIT_REASON_EXCEPTION_NMI);
         set_vvmcs(v, EXIT_QUALIFICATION, 0);
         set_vvmcs(v, VM_EXIT_INTR_INFO, nvmx->intr.intr_info);
@@ -2445,7 +2445,7 @@ int nvmx_n2_vmexit_handler(struct cpu_user_regs *regs,
     case EXIT_REASON_EXCEPTION_NMI:
     {
         unsigned long intr_info;
-        u32 valid_mask = MASK_INSR(X86_EVENTTYPE_HW_EXCEPTION,
+        u32 valid_mask = MASK_INSR(X86_ET_HW_EXC,
                                   INTR_INFO_INTR_TYPE_MASK) |
                          INTR_INFO_VALID_MASK;
         u64 exec_bitmap;
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index bdcdb8de09f1..5219c4fb0f69 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -724,7 +724,7 @@ static inline void pv_inject_hw_exception(unsigned int vector, int errcode)
 {
     const struct x86_event event = {
         .vector = vector,
-        .type = X86_EVENTTYPE_HW_EXCEPTION,
+        .type = X86_ET_HW_EXC,
         .error_code = errcode,
     };
 
@@ -735,7 +735,7 @@ static inline void pv_inject_DB(unsigned long pending_dbg)
 {
     struct x86_event event = {
         .vector      = X86_EXC_DB,
-        .type        = X86_EVENTTYPE_HW_EXCEPTION,
+        .type        = X86_ET_HW_EXC,
         .error_code  = X86_EVENT_NO_EC,
     };
 
@@ -748,7 +748,7 @@ static inline void pv_inject_page_fault(int errcode, unsigned long cr2)
 {
     struct x86_event event = {
         .vector = X86_EXC_PF,
-        .type = X86_EVENTTYPE_HW_EXCEPTION,
+        .type = X86_ET_HW_EXC,
         .error_code = errcode,
     };
 
@@ -761,7 +761,7 @@ static inline void pv_inject_sw_interrupt(unsigned int vector)
 {
     const struct x86_event event = {
         .vector = vector,
-        .type = X86_EVENTTYPE_SW_INTERRUPT,
+        .type = X86_ET_SW_INT,
         .error_code = X86_EVENT_NO_EC,
     };
 
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index dd7d4872b58e..02de18c7d4a8 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -522,7 +522,7 @@ static inline void hvm_inject_hw_exception(unsigned int vector, int errcode)
 {
     struct x86_event event = {
         .vector = vector,
-        .type = X86_EVENTTYPE_HW_EXCEPTION,
+        .type = X86_ET_HW_EXC,
         .error_code = errcode,
     };
 
@@ -533,7 +533,7 @@ static inline void hvm_inject_page_fault(int errcode, unsigned long cr2)
 {
     struct x86_event event = {
         .vector = X86_EXC_PF,
-        .type = X86_EVENTTYPE_HW_EXCEPTION,
+        .type = X86_ET_HW_EXC,
         .error_code = errcode,
     };
 
diff --git a/xen/arch/x86/include/asm/x86-defns.h b/xen/arch/x86/include/asm/x86-defns.h
index 7abc5bcd4262..67b22e095434 100644
--- a/xen/arch/x86/include/asm/x86-defns.h
+++ b/xen/arch/x86/include/asm/x86-defns.h
@@ -204,4 +204,13 @@
 #define X86_MT_UCM    0x07 /* UC- */
 #define X86_NUM_MT    0x08
 
+/* Event Types. */
+#define X86_ET_EXT_INTR    0 /* External Interrupt */
+#define X86_ET_NMI         2 /* NMI */
+#define X86_ET_HW_EXC      3 /* Hardware Exception (#PF/#GP/etc) */
+#define X86_ET_SW_INT      4 /* Software Interrupt (INT $n) */
+#define X86_ET_PRIV_SW_EXC 5 /* Privileged Software Exception (ICEBP/INT1) */
+#define X86_ET_SW_EXC      6 /* Software Exception (INT3, INTO) */
+#define X86_ET_OTHER       7 /* Misc event: MTF=0, SYSCALL=1, SYSENTER=2 */
+
 #endif	/* __XEN_X86_DEFNS_H__ */
diff --git a/xen/arch/x86/mm/shadow/multi.c b/xen/arch/x86/mm/shadow/multi.c
index 376f6823cd44..10ddc408ff73 100644
--- a/xen/arch/x86/mm/shadow/multi.c
+++ b/xen/arch/x86/mm/shadow/multi.c
@@ -2701,7 +2701,7 @@ static int cf_check sh_page_fault(
          * else is an emulation bug, or a guest playing with the instruction
          * stream under Xen's feet.
          */
-        if ( emul_ctxt.ctxt.event.type == X86_EVENTTYPE_HW_EXCEPTION &&
+        if ( emul_ctxt.ctxt.event.type == X86_ET_HW_EXC &&
              ((emul_ctxt.ctxt.event.vector == X86_EXC_PF) ||
               (((emul_ctxt.ctxt.event.vector == X86_EXC_GP) ||
                 (emul_ctxt.ctxt.event.vector == X86_EXC_SS)) &&
diff --git a/xen/arch/x86/pv/ro-page-fault.c b/xen/arch/x86/pv/ro-page-fault.c
index d0fe07e3a109..6a739f9e9a96 100644
--- a/xen/arch/x86/pv/ro-page-fault.c
+++ b/xen/arch/x86/pv/ro-page-fault.c
@@ -379,7 +379,7 @@ int pv_ro_page_fault(unsigned long addr, struct cpu_user_regs *regs)
          * concurrent pagetable update).  Anything else is an emulation bug,
          * or a guest playing with the instruction stream under Xen's feet.
          */
-        if ( ctxt.event.type == X86_EVENTTYPE_HW_EXCEPTION &&
+        if ( ctxt.event.type == X86_ET_HW_EXC &&
              ctxt.event.vector == X86_EXC_PF )
             pv_inject_event(&ctxt.event);
         else
diff --git a/xen/arch/x86/pv/traps.c b/xen/arch/x86/pv/traps.c
index 5a7341abf068..ed8aa97382b7 100644
--- a/xen/arch/x86/pv/traps.c
+++ b/xen/arch/x86/pv/traps.c
@@ -29,14 +29,14 @@ void pv_inject_event(const struct x86_event *event)
     bool use_error_code;
 
     ASSERT(vector == event->vector); /* Confirm no truncation. */
-    if ( event->type == X86_EVENTTYPE_HW_EXCEPTION )
+    if ( event->type == X86_ET_HW_EXC )
     {
         ASSERT(vector < 32);
         use_error_code = X86_EXC_HAVE_EC & (1u << vector);
     }
     else
     {
-        ASSERT(event->type == X86_EVENTTYPE_SW_INTERRUPT);
+        ASSERT(event->type == X86_ET_SW_INT);
         use_error_code = false;
     }
     if ( use_error_code )
@@ -51,7 +51,7 @@ void pv_inject_event(const struct x86_event *event)
     tb->cs    = ti->cs;
     tb->eip   = ti->address;
 
-    switch ( vector | -(event->type == X86_EVENTTYPE_SW_INTERRUPT) )
+    switch ( vector | -(event->type == X86_ET_SW_INT) )
     {
     case X86_EXC_PF:
         curr->arch.pv.ctrlreg[2] = event->cr2;
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index bbda0ffc2fb1..0ea0d5e67e53 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -2372,19 +2372,19 @@ x86_emulate(
         {
         case 0xcc: /* int3 */
             ctxt->event.vector = X86_EXC_BP;
-            ctxt->event.type = X86_EVENTTYPE_SW_EXCEPTION;
+            ctxt->event.type = X86_ET_SW_EXC;
             break;
         case 0xcd: /* int imm8 */
             ctxt->event.vector = imm1;
-            ctxt->event.type = X86_EVENTTYPE_SW_INTERRUPT;
+            ctxt->event.type = X86_ET_SW_INT;
             break;
         case 0xce: /* into */
             ctxt->event.vector = X86_EXC_OF;
-            ctxt->event.type = X86_EVENTTYPE_SW_EXCEPTION;
+            ctxt->event.type = X86_ET_SW_EXC;
             break;
         case 0xf1: /* icebp */
             ctxt->event.vector = X86_EXC_DB;
-            ctxt->event.type = X86_EVENTTYPE_PRI_SW_EXCEPTION;
+            ctxt->event.type = X86_ET_PRIV_SW_EXC;
             break;
         }
         ctxt->event.error_code = X86_EVENT_NO_EC;
@@ -8597,16 +8597,14 @@ static void __init __maybe_unused build_assertions(void)
     BUILD_BUG_ON(x86_seg_fs != 4);
     BUILD_BUG_ON(x86_seg_gs != 5);
 
-    /*
-     * Check X86_EVENTTYPE_* against VMCB EVENTINJ and VMCS INTR_INFO type
-     * fields.
-     */
-    BUILD_BUG_ON(X86_EVENTTYPE_EXT_INTR != 0);
-    BUILD_BUG_ON(X86_EVENTTYPE_NMI != 2);
-    BUILD_BUG_ON(X86_EVENTTYPE_HW_EXCEPTION != 3);
-    BUILD_BUG_ON(X86_EVENTTYPE_SW_INTERRUPT != 4);
-    BUILD_BUG_ON(X86_EVENTTYPE_PRI_SW_EXCEPTION != 5);
-    BUILD_BUG_ON(X86_EVENTTYPE_SW_EXCEPTION != 6);
+    /* Check X86_ET_* against VMCB EVENTINJ and VMCS INTR_INFO type fields. */
+    BUILD_BUG_ON(X86_ET_EXT_INTR    != 0);
+    BUILD_BUG_ON(X86_ET_NMI         != 2);
+    BUILD_BUG_ON(X86_ET_HW_EXC      != 3);
+    BUILD_BUG_ON(X86_ET_SW_INT      != 4);
+    BUILD_BUG_ON(X86_ET_PRIV_SW_EXC != 5);
+    BUILD_BUG_ON(X86_ET_SW_EXC      != 6);
+    BUILD_BUG_ON(X86_ET_OTHER       != 7);
 }
 
 #ifndef NDEBUG
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emulate/x86_emulate.h
index 3e819d41746e..d75658eba02a 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.h
+++ b/xen/arch/x86/x86_emulate/x86_emulate.h
@@ -59,24 +59,11 @@ static inline bool is_x86_system_segment(enum x86_segment seg)
     return seg >= x86_seg_tr && seg < x86_seg_none;
 }
 
-/*
- * x86 event types. This enumeration is valid for:
- *  Intel VMX: {VM_ENTRY,VM_EXIT,IDT_VECTORING}_INTR_INFO[10:8]
- *  AMD SVM: eventinj[10:8] and exitintinfo[10:8] (types 0-4 only)
- */
-enum x86_event_type {
-    X86_EVENTTYPE_EXT_INTR,         /* External interrupt */
-    X86_EVENTTYPE_NMI = 2,          /* NMI */
-    X86_EVENTTYPE_HW_EXCEPTION,     /* Hardware exception */
-    X86_EVENTTYPE_SW_INTERRUPT,     /* Software interrupt (CD nn) */
-    X86_EVENTTYPE_PRI_SW_EXCEPTION, /* ICEBP (F1) */
-    X86_EVENTTYPE_SW_EXCEPTION,     /* INT3 (CC), INTO (CE) */
-};
 #define X86_EVENT_NO_EC (-1)        /* No error code. */
 
 struct x86_event {
     int16_t       vector;
-    uint8_t       type;         /* X86_EVENTTYPE_* */
+    uint8_t       type;         /* X86_ET_* */
     uint8_t       insn_len;     /* Instruction length */
     int32_t       error_code;   /* X86_EVENT_NO_EC if n/a */
     union {
@@ -821,7 +808,7 @@ static inline void x86_emul_hw_exception(
     ASSERT(!ctxt->event_pending);
 
     ctxt->event.vector = vector;
-    ctxt->event.type = X86_EVENTTYPE_HW_EXCEPTION;
+    ctxt->event.type = X86_ET_HW_EXC;
     ctxt->event.error_code = error_code;
 
     ctxt->event_pending = true;
@@ -833,7 +820,7 @@ static inline void x86_emul_pagefault(
     ASSERT(!ctxt->event_pending);
 
     ctxt->event.vector = X86_EXC_PF;
-    ctxt->event.type = X86_EVENTTYPE_HW_EXCEPTION;
+    ctxt->event.type = X86_ET_HW_EXC;
     ctxt->event.error_code = error_code;
     ctxt->event.cr2 = cr2;
 
diff --git a/xen/include/public/hvm/dm_op.h b/xen/include/public/hvm/dm_op.h
index fa98551914f2..2bf0fdc1ae1c 100644
--- a/xen/include/public/hvm/dm_op.h
+++ b/xen/include/public/hvm/dm_op.h
@@ -302,7 +302,7 @@ struct xen_dm_op_inject_event {
     uint8_t vector;
     /* IN - event type (DMOP_EVENT_* ) */
     uint8_t type;
-/* NB. This enumeration precisely matches hvm.h:X86_EVENTTYPE_* */
+/* NB. This enumeration precisely matches x86-defns.h:X86_ET_* */
 # define XEN_DMOP_EVENT_ext_int    0 /* external interrupt */
 # define XEN_DMOP_EVENT_nmi        2 /* nmi */
 # define XEN_DMOP_EVENT_hw_exc     3 /* hardware exception */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:07:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:07:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809662.1222098 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swPIK-0006YH-Iy; Thu, 03 Oct 2024 17:07:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809662.1222098; Thu, 03 Oct 2024 17: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 1swPIK-0006YA-Fp; Thu, 03 Oct 2024 17:07:16 +0000
Received: by outflank-mailman (input) for mailman id 809662;
 Thu, 03 Oct 2024 17:07: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=muWb=Q7=linaro.org=peter.maydell@srs-se1.protection.inumbo.net>)
 id 1swPIJ-0006US-5h
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:07:15 +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 eeeb6089-81a9-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:07:13 +0200 (CEST)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2f7657f9f62so12952941fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:07:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eeeb6089-81a9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1727975232; x=1728580032; 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=ypgCN7X3Tp1ClBP+wNOOozvav5VEYC8sq6Nl8zmhF9Y=;
        b=xQ1fUlAgjQ/1ImY4p/x0EryzFXT7c1NeGhp+EGK2kdeYrma07NJ+zuLS7E0ehZw6xq
         38IxvSnKoGyPIf/V1gZC1lSvbedqAQcK49vZ+bZ5ySh41Tr1lKFjxJeEi6tQ5ySKlYhm
         0Z4z5P2JsB84fQx1XfhAxbcXR3L7Mb2X/uln7BA5wCtRr/Npv5eQLKX+d1+Of9No2tAb
         DklLq/TQRmt9Ujj83x0Z0xXahcuMKm3A81GqcELS8eLMlgQ9x+OH51uCteSVfkjuSNC/
         qKgrWonDWwjO84+AAzLZaYhn9ejLas/NFazADtKvWPQnUC/cNJaJpOIUgHHhgz71NTlJ
         vc+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727975232; x=1728580032;
        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=ypgCN7X3Tp1ClBP+wNOOozvav5VEYC8sq6Nl8zmhF9Y=;
        b=msO0oFtHqa93V9VHN0p51rG3+FW9yGFi/b63/AYW8oHQ82ek6H9lJNIeWrA961DODh
         i2DB5yFetqGzyMiD4BrA8BZyQu0ud7JESbQ8ZZxkm6tJaHp+4e8on3KHcUnolL8RvJN6
         vXZTFaCaO/Hy0oPTylreMv6uo4M7T5CRLP9/uxv4R0aYDUmLXzVm65ZzIBzUbHy88pFj
         st3KJPObtY5D0cTNRfcwZP7ENvZxcnjV6LmI9ePBvXgN7MI4bI6N2vqZ9uYPfLmxlIFf
         NALkiy65ATgXICIezdyjX4AJ0dV6y1ZKNJZZb/nOdJTl4xUCUCRNY/Jcd1HBXo5GbdI/
         R7bQ==
X-Forwarded-Encrypted: i=1; AJvYcCVN2zYa8mWnJGBOzuzaZC0yajqR5dhJiGuM5Wc3APIGxxV0Hg/DVFxT/YyQPmz8JeC2uaz5wsoEcwE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzOiejQmdF/Jil5j/MuUC9cYL5ILpIwSok7QqgN7/Jja3zWfthU
	bBgaN3YOZdGPJLWuyqWs609/c8F37W5K3/phUllbVbe5sqyzwYq1ARK1nFzBJ6AJCnMxwUiTsKl
	vnVchUm9d4xSaKNjb67l8UUkpkUfjpa0OmADZkA==
X-Google-Smtp-Source: AGHT+IEjaRr1MVAuuZhPyS6nHjR7OmrTiZ3hOaG5K16qWrzZDv7Ce52sQ7+eSCIr3FBf8S0Ed2Ky22MwxS6vYEwm5ug=
X-Received: by 2002:a2e:a983:0:b0:2f4:3de7:ac4c with SMTP id
 38308e7fff4ca-2fae1023128mr47777331fa.8.1727975232264; Thu, 03 Oct 2024
 10:07:12 -0700 (PDT)
MIME-Version: 1.0
References: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
In-Reply-To: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
From: Peter Maydell <peter.maydell@linaro.org>
Date: Thu, 3 Oct 2024 18:07:00 +0100
Message-ID: <CAFEAcA9tST+-mZTcdBtwVOeVmxnBDrO=VJBMj=C0iFw5GAojLw@mail.gmail.com>
Subject: Re: [PULL v1 0/5] Xen Queue
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: qemu-devel@nongnu.org, sstabellini@kernel.org, anthony@xenproject.org, 
	paul@xen.org, edgar.iglesias@amd.com, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

On Thu, 3 Oct 2024 at 15:31, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
>
> From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
>
> The following changes since commit 423be09ab9492735924e73a2d36069784441ebc6:
>
>   Merge tag 'warn-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging (2024-10-03 10:32:54 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/edgar.iglesias/qemu.git tags/edgar/xen-queue-2024-10-03.for-upstream
>
> for you to fetch changes up to 507118c2a066b70e8069702c120461ad8c98ccd5:
>
>   hw/arm: xenpvh: Enable PCI for ARM PVH (2024-10-03 15:24:42 +0200)
>
> ----------------------------------------------------------------
> Edgars Xen Queue.
>
> ----------------------------------------------------------------
> Dr. David Alan Gilbert (1):
>       hw/xen: Remove deadcode
>
> Edgar E. Iglesias (4):
>       hw/xen: Expose handle_bufioreq in xen_register_ioreq
>       hw/xen: xenpvh: Disable buffered IOREQs for ARM
>       hw/xen: xenpvh: Add pci-intx-irq-base property
>       hw/arm: xenpvh: Enable PCI for ARM PVH

Hi; this failed the tsan-build CI job:

https://gitlab.com/qemu-project/qemu/-/jobs/7986783747

../hw/xen/xen-hvm-common.c:711:48: error: variable 'ioreq_pfn' is
uninitialized when used here [-Werror,-Wuninitialized]
trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
                                       ^~~~~~~~~
../hw/xen/xen-hvm-common.c:667:24: note: initialize the variable
'ioreq_pfn' to silence this warning
xen_pfn_t ioreq_pfn;
                   ^
                   = 0


thanks
-- PMM


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:28:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:28:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809673.1222116 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swPcJ-0001kR-BL; Thu, 03 Oct 2024 17:27:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809673.1222116; Thu, 03 Oct 2024 17: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 1swPcJ-0001kK-81; Thu, 03 Oct 2024 17:27:55 +0000
Received: by outflank-mailman (input) for mailman id 809673;
 Thu, 03 Oct 2024 17:27: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 1swPcH-0001kA-U3; Thu, 03 Oct 2024 17:27: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 1swPcH-0007qc-N2; Thu, 03 Oct 2024 17:27: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 1swPcH-0005nQ-7T; Thu, 03 Oct 2024 17:27:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swPcH-0001Mn-6T; Thu, 03 Oct 2024 17:27: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=cljhvYGGRAyMT/E3Xr2jNwBgnFlzC9EY1GWuOhSnygM=; b=I+NmdE+EvcS+SK0v8soumtd/gj
	ivjIaKB7tsaX6A2Y1mh6gMdLkHxGTaptagOou5Z13qksW0hYvLqdqXYyTSToP3o9shgTGmDqEy5e3
	ha3cNQRoi5tM5wijgcc+3rFdoOvIGsNxaEHgAd0vgPdfsjWXcWjnhG1P7OFUTrTarVs4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187945-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 187945: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt: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-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-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-raw: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=3b296a98aaf43310f85f7e51d89791b985204173
X-Osstest-Versions-That:
    libvirt=5f81aa953e614546fc09d30e6270ce5ecb4decdb
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 17:27:53 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187932
 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-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-armhf-armhf-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-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              3b296a98aaf43310f85f7e51d89791b985204173
baseline version:
 libvirt              5f81aa953e614546fc09d30e6270ce5ecb4decdb

Last test of basis   187932  2024-10-02 04:22:21 Z    1 days
Testing same since   187945  2024-10-03 04:20:39 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andi Chandler <andi@gowling.com>
  Han Han <hhan@redhat.com>
  Rayhan Faizel <rayhan.faizel@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-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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
   5f81aa953e..3b296a98aa  3b296a98aaf43310f85f7e51d89791b985204173 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809682.1222136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ72-0006wS-4F; Thu, 03 Oct 2024 17:59:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809682.1222136; Thu, 03 Oct 2024 17:59: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 1swQ72-0006wL-0I; Thu, 03 Oct 2024 17:59:40 +0000
Received: by outflank-mailman (input) for mailman id 809682;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ70-0006hm-Dz
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:38 +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 412260e5-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:37 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8d2b24b7a8so449329466b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 412260e5-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978377; x=1728583177; 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=pxANqrtnn+Jr20AColkGK04OoedxN3PRTLF8D5KxOTk=;
        b=Y2kQiGCc327ljjEhXFFQpC8fEeE/ecMxDY0DztZiQr1lQedE91Nog27iceLytlU9v/
         HFWLj7H46btjynmkJNmM7G82z/zxyt3sLD2KJgeEAmEFKI80pPguOoNdEo8IgrhwrBnK
         D1681bCiTRN+oOqT1pJS4IaA5QtsfBL2jgHSo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978377; x=1728583177;
        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=pxANqrtnn+Jr20AColkGK04OoedxN3PRTLF8D5KxOTk=;
        b=TQhTI2t0Pk4P+KacR3O0LqDcBQsxbvX5NmKaf3GMgu0XMU1/tJK7qWnEoDXigL8RgO
         ET8EuP4BR9nTMhkwjRkoqe9+O/tlf06bLcUKUfrMbO/MNZnT9Ig1sFdATurGRrykPAyZ
         +cJJ+ZARuDkC1FW4CYXDcXNOu5a4gv1fn/S2eG0WhtJWlUNUshD61P3HJgTims7KP0P/
         Am3enNHa/klhN4phIkTgCnQ8h4mAirlgi8hEYrIHAt/DNLgOUjG3ZspLJSINrMoI2+KX
         ZkFCnO7Z6hSvvxXoKfljUm5b6uMNeci3+gE9r9QQD0Yd6hd5Wgvziuf0g+wL0t58Y9Us
         Aacw==
X-Gm-Message-State: AOJu0Yz83inIutBm/MPKBXwhwIW2fX8OUa/yATv5YCAgD7GU5ZUS55QN
	MHUQMAWe/izAyqRmaKrZGTunKPTiniaJu5oF1grE879uBNkaJml5N4QjFb2fleF5qmUq/1CTNWp
	t
X-Google-Smtp-Source: AGHT+IF+L4IrNtlfZrEA9TPpNuTmVYahrdO2TswZh+T2IFlIvSLPxyaEHMlbylYWa1ztPrDu2G3RjA==
X-Received: by 2002:a17:907:6d03:b0:a8a:9243:486 with SMTP id a640c23a62f3a-a990a06cd36mr465777066b.21.1727978376404;
        Thu, 03 Oct 2024 10:59:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2 03/19] xen: Update header guards - ACPI
Date: Thu,  3 Oct 2024 18:59:03 +0100
Message-Id: <20241003175919.472774-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ACPI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/drivers/acpi/apei/apei-internal.h     | 4 ++--
 xen/include/acpi/acconfig.h               | 6 +++---
 xen/include/acpi/acexcep.h                | 6 +++---
 xen/include/acpi/acglobal.h               | 6 +++---
 xen/include/acpi/achware.h                | 6 +++---
 xen/include/acpi/aclocal.h                | 6 +++---
 xen/include/acpi/acmacros.h               | 4 ++--
 xen/include/acpi/acnames.h                | 6 +++---
 xen/include/acpi/acoutput.h               | 6 +++---
 xen/include/acpi/acpi.h                   | 6 +++---
 xen/include/acpi/acpiosxf.h               | 6 +++---
 xen/include/acpi/acpixf.h                 | 6 +++---
 xen/include/acpi/actables.h               | 6 +++---
 xen/include/acpi/actbl.h                  | 6 +++---
 xen/include/acpi/actbl1.h                 | 6 +++---
 xen/include/acpi/actbl2.h                 | 6 +++---
 xen/include/acpi/actbl3.h                 | 6 +++---
 xen/include/acpi/actypes.h                | 6 +++---
 xen/include/acpi/acutils.h                | 6 +++---
 xen/include/acpi/apei.h                   | 4 ++--
 xen/include/acpi/cpufreq/cpufreq.h        | 6 +++---
 xen/include/acpi/cpufreq/processor_perf.h | 6 +++---
 xen/include/acpi/pdc_intel.h              | 6 +++---
 xen/include/acpi/platform/acenv.h         | 6 +++---
 xen/include/acpi/platform/acgcc.h         | 6 +++---
 xen/include/acpi/platform/aclinux.h       | 6 +++---
 26 files changed, 75 insertions(+), 75 deletions(-)

diff --git a/xen/drivers/acpi/apei/apei-internal.h b/xen/drivers/acpi/apei/apei-internal.h
index 90233077b7..8a5ed3fc33 100644
--- a/xen/drivers/acpi/apei/apei-internal.h
+++ b/xen/drivers/acpi/apei/apei-internal.h
@@ -3,8 +3,8 @@
  * definations.
  */
 
-#ifndef APEI_INTERNAL_H
-#define APEI_INTERNAL_H
+#ifndef DRIVERS__ACPI__APEI__APEI_INTERNAL_H
+#define DRIVERS__ACPI__APEI__APEI_INTERNAL_H
 
 struct apei_exec_context;
 
diff --git a/xen/include/acpi/acconfig.h b/xen/include/acpi/acconfig.h
index 422f29c06c..f5b5192c46 100644
--- a/xen/include/acpi/acconfig.h
+++ b/xen/include/acpi/acconfig.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef _ACCONFIG_H
-#define _ACCONFIG_H
+#ifndef ACPI__ACCONFIG_H
+#define ACPI__ACCONFIG_H
 
 /******************************************************************************
  *
@@ -203,4 +203,4 @@
 #define ACPI_DEBUGGER_COMMAND_PROMPT    '-'
 #define ACPI_DEBUGGER_EXECUTE_PROMPT    '%'
 
-#endif				/* _ACCONFIG_H */
+#endif				/* ACPI__ACCONFIG_H */
diff --git a/xen/include/acpi/acexcep.h b/xen/include/acpi/acexcep.h
index 5d9f4841d2..455c4fe982 100644
--- a/xen/include/acpi/acexcep.h
+++ b/xen/include/acpi/acexcep.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACEXCEP_H__
-#define __ACEXCEP_H__
+#ifndef ACPI__ACEXCEP_H
+#define ACPI__ACEXCEP_H
 
 /*
  * Exceptions returned by external ACPI interfaces
@@ -300,4 +300,4 @@ char const *__initdata acpi_gbl_exception_names_ctrl[] = {
 
 #endif				/* ACPI GLOBALS */
 
-#endif				/* __ACEXCEP_H__ */
+#endif				/* ACPI__ACEXCEP_H */
diff --git a/xen/include/acpi/acglobal.h b/xen/include/acpi/acglobal.h
index c2a96097b9..96fb14d793 100644
--- a/xen/include/acpi/acglobal.h
+++ b/xen/include/acpi/acglobal.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACGLOBAL_H__
-#define __ACGLOBAL_H__
+#ifndef ACPI__ACGLOBAL_H
+#define ACPI__ACGLOBAL_H
 
 /*
  * Ensure that the globals are actually defined and initialized only once.
@@ -110,4 +110,4 @@ extern char const *acpi_gbl_exception_names_ctrl[];
 extern struct acpi_bit_register_info
     acpi_gbl_bit_register_info[ACPI_NUM_BITREG];
 
-#endif				/* __ACGLOBAL_H__ */
+#endif				/* ACPI__ACGLOBAL_H */
diff --git a/xen/include/acpi/achware.h b/xen/include/acpi/achware.h
index 7433fb47ac..6257ae4cd4 100644
--- a/xen/include/acpi/achware.h
+++ b/xen/include/acpi/achware.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACHWARE_H__
-#define __ACHWARE_H__
+#ifndef ACPI__ACHWARE_H
+#define ACPI__ACHWARE_H
 
 /*
  * hwregs - ACPI Register I/O
@@ -59,4 +59,4 @@ acpi_hw_low_level_read(u32 width,
 acpi_status
 acpi_hw_low_level_write(u32 width, u32 value, struct acpi_generic_address *reg);
 
-#endif				/* __ACHWARE_H__ */
+#endif				/* ACPI__ACHWARE_H */
diff --git a/xen/include/acpi/aclocal.h b/xen/include/acpi/aclocal.h
index 16e234f0de..38369db497 100644
--- a/xen/include/acpi/aclocal.h
+++ b/xen/include/acpi/aclocal.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACLOCAL_H__
-#define __ACLOCAL_H__
+#ifndef ACPI__ACLOCAL_H
+#define ACPI__ACLOCAL_H
 
 /* acpisrc:struct_defs -- for acpisrc conversion */
 
@@ -204,4 +204,4 @@ struct acpi_bit_register_info {
 #define ACPI_ADDRESS_TYPE_IO_RANGE              1
 #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE      2
 
-#endif				/* __ACLOCAL_H__ */
+#endif				/* ACPI__ACLOCAL_H */
diff --git a/xen/include/acpi/acmacros.h b/xen/include/acpi/acmacros.h
index 86c503c20f..0f60a07594 100644
--- a/xen/include/acpi/acmacros.h
+++ b/xen/include/acpi/acmacros.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACMACROS_H__
-#define __ACMACROS_H__
+#ifndef ACPI__ACMACROS_H
+#define ACPI__ACMACROS_H
 
 /*
  * Data manipulation macros
diff --git a/xen/include/acpi/acnames.h b/xen/include/acpi/acnames.h
index 34bfae8a05..f85d3341fb 100644
--- a/xen/include/acpi/acnames.h
+++ b/xen/include/acpi/acnames.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACNAMES_H__
-#define __ACNAMES_H__
+#ifndef ACPI__ACNAMES_H
+#define ACPI__ACNAMES_H
 
 /* Method names - these methods can appear anywhere in the namespace */
 
@@ -80,4 +80,4 @@
 #define ACPI_NS_ROOT_PATH       "\\"
 #define ACPI_NS_SYSTEM_BUS      "_SB_"
 
-#endif				/* __ACNAMES_H__  */
+#endif				/* ACPI__ACNAMES_H  */
diff --git a/xen/include/acpi/acoutput.h b/xen/include/acpi/acoutput.h
index c090a8b0bc..7a0283894b 100644
--- a/xen/include/acpi/acoutput.h
+++ b/xen/include/acpi/acoutput.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACOUTPUT_H__
-#define __ACOUTPUT_H__
+#ifndef ACPI__ACOUTPUT_H
+#define ACPI__ACOUTPUT_H
 
 /*
  * Debug levels and component IDs.  These are used to control the
@@ -182,4 +182,4 @@
 #define ACPI_NORMAL_DEFAULT         (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR)
 #define ACPI_DEBUG_ALL              (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
 
-#endif				/* __ACOUTPUT_H__ */
+#endif				/* ACPI__ACOUTPUT_H */
diff --git a/xen/include/acpi/acpi.h b/xen/include/acpi/acpi.h
index c852701ff2..f922fd8556 100644
--- a/xen/include/acpi/acpi.h
+++ b/xen/include/acpi/acpi.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACPI_H__
-#define __ACPI_H__
+#ifndef ACPI__ACPI_H
+#define ACPI__ACPI_H
 
 #define PREFIX			"ACPI: "
 
@@ -66,4 +66,4 @@
 #include "achware.h"		/* Hardware defines and interfaces */
 #include "acutils.h"		/* Utility interfaces */
 
-#endif				/* __ACPI_H__ */
+#endif				/* ACPI__ACPI_H */
diff --git a/xen/include/acpi/acpiosxf.h b/xen/include/acpi/acpiosxf.h
index de83ea38c4..6264a727d3 100644
--- a/xen/include/acpi/acpiosxf.h
+++ b/xen/include/acpi/acpiosxf.h
@@ -44,8 +44,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACPIOSXF_H__
-#define __ACPIOSXF_H__
+#ifndef ACPI__ACPIOSXF_H
+#define ACPI__ACPIOSXF_H
 
 #include "platform/acenv.h"
 #include "actypes.h"
@@ -86,4 +86,4 @@ void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...);
 
 void acpi_os_vprintf(const char *format, va_list args);
 
-#endif				/* __ACPIOSXF_H__ */
+#endif				/* ACPI__ACPIOSXF_H */
diff --git a/xen/include/acpi/acpixf.h b/xen/include/acpi/acpixf.h
index 8b70154b8f..64373a3472 100644
--- a/xen/include/acpi/acpixf.h
+++ b/xen/include/acpi/acpixf.h
@@ -42,8 +42,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACXFACE_H__
-#define __ACXFACE_H__
+#ifndef ACPI__ACPIXF_H
+#define ACPI__ACPIXF_H
 
 #include "actypes.h"
 #include "actbl.h"
@@ -116,4 +116,4 @@ acpi_status acpi_leave_sleep_state_prep(u8 sleep_state);
 
 acpi_status acpi_leave_sleep_state(u8 sleep_state);
 
-#endif				/* __ACXFACE_H__ */
+#endif				/* ACPI__ACPIXF_H */
diff --git a/xen/include/acpi/actables.h b/xen/include/acpi/actables.h
index 527e1c9f9b..45a1e0c634 100644
--- a/xen/include/acpi/actables.h
+++ b/xen/include/acpi/actables.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTABLES_H__
-#define __ACTABLES_H__
+#ifndef ACPI__ACTABLES_H
+#define ACPI__ACTABLES_H
 
 acpi_status acpi_allocate_root_table(u32 initial_table_count);
 
@@ -104,4 +104,4 @@ acpi_tb_install_table(acpi_physical_address address,
 acpi_status
 acpi_tb_parse_root_table(acpi_physical_address rsdp_address, u8 flags);
 
-#endif				/* __ACTABLES_H__ */
+#endif				/* ACPI__ACTABLES_H */
diff --git a/xen/include/acpi/actbl.h b/xen/include/acpi/actbl.h
index 3079176992..b022403359 100644
--- a/xen/include/acpi/actbl.h
+++ b/xen/include/acpi/actbl.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL_H__
-#define __ACTBL_H__
+#ifndef ACPI__ACTBL_H
+#define ACPI__ACTBL_H
 
 /*******************************************************************************
  *
@@ -358,4 +358,4 @@ enum acpi_prefered_pm_profiles {
 #define ACPI_FADT_V5_SIZE       (u32) (ACPI_FADT_OFFSET (hypervisor_id))
 #define ACPI_FADT_V6_SIZE       (u32) (sizeof (struct acpi_table_fadt))
 
-#endif				/* __ACTBL_H__ */
+#endif				/* ACPI__ACTBL_H */
diff --git a/xen/include/acpi/actbl1.h b/xen/include/acpi/actbl1.h
index 923641fc9e..1b333399ca 100644
--- a/xen/include/acpi/actbl1.h
+++ b/xen/include/acpi/actbl1.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL1_H__
-#define __ACTBL1_H__
+#ifndef ACPI__ACTBL1_H
+#define ACPI__ACTBL1_H
 
 /*******************************************************************************
  *
@@ -1012,4 +1012,4 @@ struct acpi_srat_x2apic_cpu_affinity {
 
 #pragma pack()
 
-#endif				/* __ACTBL1_H__ */
+#endif				/* ACPI__ACTBL1_H */
diff --git a/xen/include/acpi/actbl2.h b/xen/include/acpi/actbl2.h
index ee96e990d6..7eb4e51b72 100644
--- a/xen/include/acpi/actbl2.h
+++ b/xen/include/acpi/actbl2.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL2_H__
-#define __ACTBL2_H__
+#ifndef ACPI__ACTBL2_H
+#define ACPI__ACTBL2_H
 
 /*******************************************************************************
  *
@@ -1268,4 +1268,4 @@ struct acpi_table_wdrt {
 
 #pragma pack()
 
-#endif				/* __ACTBL2_H__ */
+#endif				/* ACPI__ACTBL2_H */
diff --git a/xen/include/acpi/actbl3.h b/xen/include/acpi/actbl3.h
index 6858d3e60f..2407455102 100644
--- a/xen/include/acpi/actbl3.h
+++ b/xen/include/acpi/actbl3.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL3_H__
-#define __ACTBL3_H__
+#ifndef ACPI__ACTBL3_H
+#define ACPI__ACTBL3_H
 
 /*******************************************************************************
  *
@@ -639,4 +639,4 @@ struct acpi_table_stao {
 
 #pragma pack()
 
-#endif				/* __ACTBL3_H__ */
+#endif				/* ACPI__ACTBL3_H */
diff --git a/xen/include/acpi/actypes.h b/xen/include/acpi/actypes.h
index 49e0ab9bb4..17464f5a65 100644
--- a/xen/include/acpi/actypes.h
+++ b/xen/include/acpi/actypes.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTYPES_H__
-#define __ACTYPES_H__
+#ifndef ACPI__ACTYPES_H
+#define ACPI__ACTYPES_H
 
 /* acpisrc:struct_defs -- for acpisrc conversion */
 
@@ -724,4 +724,4 @@ struct acpi_buffer {
 #define ACPI_PRODUCER                   (u8) 0x00
 #define ACPI_CONSUMER                   (u8) 0x01
 
-#endif				/* __ACTYPES_H__ */
+#endif				/* ACPI__ACTYPES_H */
diff --git a/xen/include/acpi/acutils.h b/xen/include/acpi/acutils.h
index ac54adaa8c..7b0a8c677d 100644
--- a/xen/include/acpi/acutils.h
+++ b/xen/include/acpi/acutils.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef _ACUTILS_H
-#define _ACUTILS_H
+#ifndef ACPI__ACUTILS_H
+#define ACPI__ACUTILS_H
 
 /* Types for Resource descriptor entries */
 
@@ -196,4 +196,4 @@ acpi_ut_info(const char *module_name,
  */
 const char *acpi_ut_validate_exception(acpi_status status);
 
-#endif				/* _ACUTILS_H */
+#endif				/* ACPI__ACUTILS_H */
diff --git a/xen/include/acpi/apei.h b/xen/include/acpi/apei.h
index 495819e362..6aed603745 100644
--- a/xen/include/acpi/apei.h
+++ b/xen/include/acpi/apei.h
@@ -2,8 +2,8 @@
  * apei.h - ACPI Platform Error Interface
  */
 
-#ifndef ACPI_APEI_H
-#define ACPI_APEI_H
+#ifndef ACPI__APEI_H
+#define ACPI__APEI_H
 
 #include <xen/acpi.h>
 #include <xen/cper.h>
diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h
index 3f1b05a02e..6764d54f8f 100644
--- a/xen/include/acpi/cpufreq/cpufreq.h
+++ b/xen/include/acpi/cpufreq/cpufreq.h
@@ -11,8 +11,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __XEN_CPUFREQ_PM_H__
-#define __XEN_CPUFREQ_PM_H__
+#ifndef ACPI__CPUFREQ__CPUFREQ_H
+#define ACPI__CPUFREQ__CPUFREQ_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -267,4 +267,4 @@ int set_hwp_para(struct cpufreq_policy *policy,
 
 int acpi_cpufreq_register(void);
 
-#endif /* __XEN_CPUFREQ_PM_H__ */
+#endif /* ACPI__CPUFREQ__CPUFREQ_H */
diff --git a/xen/include/acpi/cpufreq/processor_perf.h b/xen/include/acpi/cpufreq/processor_perf.h
index 301104e16f..2088e5ea67 100644
--- a/xen/include/acpi/cpufreq/processor_perf.h
+++ b/xen/include/acpi/cpufreq/processor_perf.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PROCESSOR_PM_H__
-#define __XEN_PROCESSOR_PM_H__
+#ifndef ACPI__CPUFREQ__PROCESSOR_PERF_H
+#define ACPI__CPUFREQ__PROCESSOR_PERF_H
 
 #include <public/platform.h>
 #include <public/sysctl.h>
@@ -59,4 +59,4 @@ struct pm_px {
 DECLARE_PER_CPU(struct pm_px *, cpufreq_statistic_data);
 
 int cpufreq_cpu_init(unsigned int cpu);
-#endif /* __XEN_PROCESSOR_PM_H__ */
+#endif /* ACPI__CPUFREQ__PROCESSOR_PERF_H */
diff --git a/xen/include/acpi/pdc_intel.h b/xen/include/acpi/pdc_intel.h
index abaa098b51..a6510b14fe 100644
--- a/xen/include/acpi/pdc_intel.h
+++ b/xen/include/acpi/pdc_intel.h
@@ -1,8 +1,8 @@
 
 /* _PDC bit definition for Intel processors */
 
-#ifndef __PDC_INTEL_H__
-#define __PDC_INTEL_H__
+#ifndef ACPI__PDC_INTEL_H
+#define ACPI__PDC_INTEL_H
 
 #define ACPI_PDC_REVISION_ID		1
 
@@ -48,4 +48,4 @@
 #define ACPI_PDC_T_MASK			(ACPI_PDC_T_FFH | \
 					 ACPI_PDC_SMP_T_SWCOORD)
 
-#endif				/* __PDC_INTEL_H__ */
+#endif				/* ACPI__PDC_INTEL_H */
diff --git a/xen/include/acpi/platform/acenv.h b/xen/include/acpi/platform/acenv.h
index 83cdb77d75..33c253c094 100644
--- a/xen/include/acpi/platform/acenv.h
+++ b/xen/include/acpi/platform/acenv.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACENV_H__
-#define __ACENV_H__
+#ifndef ACPI__PLATFORM__ACENV_H
+#define ACPI__PLATFORM__ACENV_H
 
 /*
  * Configuration for ACPI tools and utilities
@@ -362,4 +362,4 @@ typedef char *va_list;
  * headers.
  *
  *****************************************************************************/
-#endif				/* __ACENV_H__ */
+#endif				/* ACPI__PLATFORM__ACENV_H */
diff --git a/xen/include/acpi/platform/acgcc.h b/xen/include/acpi/platform/acgcc.h
index b355e98eeb..6b32e4eedd 100644
--- a/xen/include/acpi/platform/acgcc.h
+++ b/xen/include/acpi/platform/acgcc.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACGCC_H__
-#define __ACGCC_H__
+#ifndef ACPI__PLATFORM__ACGCC_H
+#define ACPI__PLATFORM__ACGCC_H
 
 /* Function name is used for debug output. Non-ANSI, compiler-dependent */
 
@@ -62,4 +62,4 @@
  */
 #define ACPI_UNUSED_VAR __attribute__ ((unused))
 
-#endif				/* __ACGCC_H__ */
+#endif				/* ACPI__PLATFORM__ACGCC_H */
diff --git a/xen/include/acpi/platform/aclinux.h b/xen/include/acpi/platform/aclinux.h
index a66c2e6d1d..32a853f1bc 100644
--- a/xen/include/acpi/platform/aclinux.h
+++ b/xen/include/acpi/platform/aclinux.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACLINUX_H__
-#define __ACLINUX_H__
+#ifndef ACPI__PLATFORM__ACLINUX_H
+#define ACPI__PLATFORM__ACLINUX_H
 
 #define ACPI_USE_SYSTEM_CLIBRARY
 #define ACPI_USE_DO_WHILE_0
@@ -82,4 +82,4 @@ void acpi_os_free_memory(void *ptr);
 #define ACPI_ALLOCATE_ZEROED(a)	acpi_os_zalloc_memory(a)
 #define ACPI_FREE(a)		acpi_os_free_memory(a)
 
-#endif				/* __ACLINUX_H__ */
+#endif				/* ACPI__PLATFORM__ACLINUX_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809691.1222214 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ79-0000GS-EN; Thu, 03 Oct 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 809691.1222214; Thu, 03 Oct 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 1swQ78-0000CX-V5; Thu, 03 Oct 2024 17:59:46 +0000
Received: by outflank-mailman (input) for mailman id 809691;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ77-0006qR-7o
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:45 +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 43a23eb7-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:41 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b3e1so1682255a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:41 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 43a23eb7-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978381; x=1728583181; 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=Q5H5vzGEUHF5T8160M9z8v6UqIQnE5siB1MdqRXTDEQ=;
        b=Zwo4jlMqRIkuo9aOFaoZqfl/Zz90GVQz/KTxFalpJBra78EkPkOaoiymj864VF9lme
         l5NhYUNDjDUGy7/eJZiWrdTzXOQBMWmIvYLjy0KXlqbB62YVgfIreNhHeOwHqQ3lcIc0
         MLDZtGfNfiZuEzWKcC5v6G5m3OYZLoeMkesWg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978381; x=1728583181;
        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=Q5H5vzGEUHF5T8160M9z8v6UqIQnE5siB1MdqRXTDEQ=;
        b=oeAGsqmWj0fHBXv0ZTHgK8dv4dCMVTXxr6lz3/O06eO0XHECPdKH3DleQ53o/MuRbL
         k+GYTNH8SQSOV0nfLxLIXKqN1Wo0605NTYgyDx1lAoLlnW/ZsxquM5FabEbSIiiCGQBE
         adcdKqi24gpUMqMCGu7srHwXA0klzRlr0aMR1+NNt/ppb7EbodJ+9XlZihuMQKPFzDoI
         Jg6G5fNS0ZypQ0elwJscEMI/oY1+CcG/BAIgThxA+81uzychpEOqT+miWRZUDItLAcrP
         k9Ji47Q0ZattbZe5zQLktkrVu4CPfpoWlUj6jQi3nC1uPGMaxOMF7/kFKbzvxLYFj2Qi
         x6HA==
X-Gm-Message-State: AOJu0Yx921Wg+xW/KTtingRdELwSdl55wj4FouE0zl1yd+qaWH0vcD64
	zZ0OANpb4Q51pMW5Cf4qs+PNsVnK6/iGCPuIfoI9ytQAyaIelqeTbvi7D3Gpby37GHGqdE2wCDq
	B
X-Google-Smtp-Source: AGHT+IHmeQUHZPmc8iPrJIjuIzCdQw3ZXJkUj7BsND84KEb5v+REaWhBPvZugWwjiy4b37RnVDOBGw==
X-Received: by 2002:a17:907:3d8f:b0:a8d:1655:a423 with SMTP id a640c23a62f3a-a991c077e2bmr15511866b.56.1727978380897;
        Thu, 03 Oct 2024 10:59:40 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v2 08/19] xen: Update header guards - HYPFS
Date: Thu,  3 Oct 2024 18:59:08 +0100
Message-Id: <20241003175919.472774-9-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to HYPFS.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/hypfs.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/include/xen/hypfs.h b/xen/include/xen/hypfs.h
index d8fcac23b4..d6f5725221 100644
--- a/xen/include/xen/hypfs.h
+++ b/xen/include/xen/hypfs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_HYPFS_H__
-#define __XEN_HYPFS_H__
+#ifndef XEN__HYPFS_H
+#define XEN__HYPFS_H
 
 #ifdef CONFIG_HYPFS
 #include <xen/lib.h>
@@ -206,4 +206,4 @@ unsigned int hypfs_dynid_entry_size(const struct hypfs_entry *template,
                                     unsigned int id);
 #endif
 
-#endif /* __XEN_HYPFS_H__ */
+#endif /* XEN__HYPFS_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809690.1222205 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ78-0008WL-Kc; Thu, 03 Oct 2024 17:59:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809690.1222205; Thu, 03 Oct 2024 17:59: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 1swQ78-0008VB-9z; Thu, 03 Oct 2024 17:59:46 +0000
Received: by outflank-mailman (input) for mailman id 809690;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ76-0006qR-7H
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:44 +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 434fc622-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:41 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a8d60e23b33so182225966b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:41 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 434fc622-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978380; x=1728583180; 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=tUCJBvhofnmQKNA8lGIkGO7D/fxxaw9oGLj4xWZ4GLk=;
        b=lbObnK9PMzidM0KTsKc4KRKtljSn+CiwqDhs0JEUqi6w7woUwgIEc2ANWLGf96UCwC
         NqWQdIFcT488d9A/Oz6p+mgMp6CoMeZOKedC8pF0ED3UsqJ00kKxM7Vfs7ekmUzrj752
         iQ4nDYQ3zFbySsxoqf0a3b8qGgBWdqWxLpVgI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978380; x=1728583180;
        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=tUCJBvhofnmQKNA8lGIkGO7D/fxxaw9oGLj4xWZ4GLk=;
        b=t81E7PpGNUWIalLL+QQrVXMb4z8Ddv4uPiA60wi6A1E+xO/RoBBhz+LKNhtFaI44BU
         olBC92MSMXq92c4ucCWoQjl0r+FAYisCoqVk8dY4tlniMOCiVLemGnIEKUrSpdJLYmAR
         EPPWHY9MiYFJbvqFpZNQBd/HZQ1UPlk5u5hm/wTkTYXjgozre8SM5a6KnSDwx4PMHGtG
         8mVLZQZ9t/+HZ0iSKXmD5XKNov04GIs6j3q7ZNCm+s4+rFJya9VM6sRMDnlLUGjuECQ+
         EWGywR5VscJLYpoOuOsx/jY5Od4bacG7OU89MlTmk5FH7cCvni9LjalEtX753TwZSNxf
         Ey/w==
X-Gm-Message-State: AOJu0Yw1N4p9AxF0oefvn5CLue1FIKaQC3iQRDRzQw4JPf0NfSX4gobH
	q9wlSKqS06Zql69SftbpN6QME0WZs8cWpPD9g2GLykB2Q51KEF3gg6QLKpSY0k48Zjs+ZP4JfKF
	1
X-Google-Smtp-Source: AGHT+IEgLs3fSh1AFu7vCS5IRA8EZ8IHJtCnA3mTsn85nbRiOOk0ZeUdWbrMNm48WX5qsJSvmRN2vQ==
X-Received: by 2002:a17:907:f1e6:b0:a8c:78a5:8fc4 with SMTP id a640c23a62f3a-a991bd43d13mr19775066b.19.1727978380214;
        Thu, 03 Oct 2024 10:59:40 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v2 07/19] xen: Update header guards - EFI
Date: Thu,  3 Oct 2024 18:59:07 +0100
Message-Id: <20241003175919.472774-8-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to EFI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/x86_64/efibind.h | 4 ++--
 xen/include/efi/efiapi.h                  | 4 ++--
 xen/include/efi/eficapsule.h              | 4 ++--
 xen/include/efi/eficon.h                  | 4 ++--
 xen/include/efi/efidef.h                  | 4 ++--
 xen/include/efi/efidevp.h                 | 4 ++--
 xen/include/efi/efierr.h                  | 4 ++--
 xen/include/efi/efipciio.h                | 6 +++---
 xen/include/efi/efiprot.h                 | 4 ++--
 9 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/include/asm/x86_64/efibind.h b/xen/arch/x86/include/asm/x86_64/efibind.h
index b29342c61c..a4b8ec52b3 100644
--- a/xen/arch/x86/include/asm/x86_64/efibind.h
+++ b/xen/arch/x86/include/asm/x86_64/efibind.h
@@ -16,8 +16,8 @@ Abstract:
 Revision History
 
 --*/
-#ifndef X86_64_EFI_BIND
-#define X86_64_EFI_BIND
+#ifndef ASM__X86__X86_64__EFIBIND_H
+#define ASM__X86__X86_64__EFIBIND_H
 #ifndef __GNUC__
 #pragma pack()
 #endif
diff --git a/xen/include/efi/efiapi.h b/xen/include/efi/efiapi.h
index a616d1238a..c9e6a531ba 100644
--- a/xen/include/efi/efiapi.h
+++ b/xen/include/efi/efiapi.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_API_H
-#define _EFI_API_H
+#ifndef EFI__EFIAPI_H
+#define EFI__EFIAPI_H
 
 /*++
 
diff --git a/xen/include/efi/eficapsule.h b/xen/include/efi/eficapsule.h
index 481af2816a..5764f36e9f 100644
--- a/xen/include/efi/eficapsule.h
+++ b/xen/include/efi/eficapsule.h
@@ -19,8 +19,8 @@ Abstract:
 
 --*/
 
-#ifndef _EFI_CAPSULE_H
-#define _EFI_CAPSULE_H
+#ifndef EFI__EFICAPSULE_H
+#define EFI__EFICAPSULE_H
 
 
 #define CAPSULE_BLOCK_DESCRIPTOR_SIGNATURE  EFI_SIGNATURE_32 ('C', 'B', 'D', 'S')
diff --git a/xen/include/efi/eficon.h b/xen/include/efi/eficon.h
index 089db9816c..952022b734 100644
--- a/xen/include/efi/eficon.h
+++ b/xen/include/efi/eficon.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_CON_H
-#define _EFI_CON_H
+#ifndef EFI__EFICON_H
+#define EFI__EFICON_H
 
 /*++
 
diff --git a/xen/include/efi/efidef.h b/xen/include/efi/efidef.h
index 86a7e111bf..20cf269e8f 100644
--- a/xen/include/efi/efidef.h
+++ b/xen/include/efi/efidef.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_DEF_H
-#define _EFI_DEF_H
+#ifndef EFI__EFIDEF_H
+#define EFI__EFIDEF_H
 
 /*++
 
diff --git a/xen/include/efi/efidevp.h b/xen/include/efi/efidevp.h
index beb5785a45..fd88b66a56 100644
--- a/xen/include/efi/efidevp.h
+++ b/xen/include/efi/efidevp.h
@@ -1,5 +1,5 @@
-#ifndef _DEVPATH_H
-#define _DEVPATH_H
+#ifndef EFI__EFIDEVP_H
+#define EFI__EFIDEVP_H
 
 /*++
 
diff --git a/xen/include/efi/efierr.h b/xen/include/efi/efierr.h
index cdca210414..1d2ed125d8 100644
--- a/xen/include/efi/efierr.h
+++ b/xen/include/efi/efierr.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_ERR_H
-#define _EFI_ERR_H
+#ifndef EFI__EFIERR_H
+#define EFI__EFIERR_H
 
 /*++
 
diff --git a/xen/include/efi/efipciio.h b/xen/include/efi/efipciio.h
index 0724f957a3..8f8c81d043 100644
--- a/xen/include/efi/efipciio.h
+++ b/xen/include/efi/efipciio.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_PCI_IO_H
-#define _EFI_PCI_IO_H
+#ifndef EFI__EFIPCIIO_H
+#define EFI__EFIPCIIO_H
 
 #define EFI_PCI_IO_PROTOCOL \
     { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
@@ -216,4 +216,4 @@ typedef struct _EFI_PCI_IO {
   VOID                                   *RomImage;
 } EFI_PCI_IO;
 
-#endif /* _EFI_PCI_IO_H */
+#endif /* EFI__EFIPCIIO_H */
diff --git a/xen/include/efi/efiprot.h b/xen/include/efi/efiprot.h
index 56d7636b2b..8a56b3faa5 100644
--- a/xen/include/efi/efiprot.h
+++ b/xen/include/efi/efiprot.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_PROT_H
-#define _EFI_PROT_H
+#ifndef EFI__EFIPROT_H
+#define EFI__EFIPROT_H
 
 /*++
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809686.1222171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ75-0007no-LS; Thu, 03 Oct 2024 17:59:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809686.1222171; Thu, 03 Oct 2024 17:59: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 1swQ75-0007md-Hj; Thu, 03 Oct 2024 17:59:43 +0000
Received: by outflank-mailman (input) for mailman id 809686;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ74-0006qR-74
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:42 +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 429f110d-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:40 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c87c7d6ad4so1753278a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:40 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 429f110d-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978379; x=1728583179; 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=a/7R4MvznIwbKLMj3J7Q74kL2tb8WLc8B3HYmuuXkgk=;
        b=LcI9RbLavwonHwhE9AqPlvJtgLmtiNRALmumwD4yYasKpwO536cnFhdVY9haQW0bts
         t+PuZM2pP49uCGwgRl3lSdDGcSMFRDomy9HxHQTDNlrN9FkAxfjBK/kK1JcCSUTzVQ2X
         4byg4m8NlV7YCSnLuX5jhQL6O6Ku3KGO1nVtk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978379; x=1728583179;
        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=a/7R4MvznIwbKLMj3J7Q74kL2tb8WLc8B3HYmuuXkgk=;
        b=CYknh5v8mJB0fs9ZAnlkBcHR1E8K+YLLUXfVJ+/3bb2uN9oouXtPRC5LMvC0rJwNCb
         qMaMzsw523Jlfy1UmFDgG/t6BekUauxMq4Km1k9eGLDjcnNT2Mb9mkZ+ZbdMUUfxsZQk
         0halKpGdvAZ9XhdxjYK/Y8/FqkAY9PjVCkujY8n2RCqt9fPRIlZFjgs5jIRfXOoEjYZT
         2epSeqbuXsl0PsqqWkKZtdBomb2gRRAcSlKbyXRntJZ7bQIbn55Kwlwa4S3efgjF+T4m
         qrIP9k5f4ovpJLRzv1XFpEO0pgyVCfdanaUCcapM/kd+18nczq9nvF3O5vihnDbdrsMn
         LQpA==
X-Gm-Message-State: AOJu0YykcHBPuiGdo+6txya0UF4EVoeMbIiiTeTveBP2d7PifZaow0cX
	2/ZB7ASZ0p11ZOR0Kdb+5n6G2yOFAqyJCwEJ0FkGGdrFBwTg03ksUlLol4jI5bhqpj59eeSzGyk
	J
X-Google-Smtp-Source: AGHT+IFQLOZSKOZp/vhM1R76AUKQzEKZjS9u8Z4G2IyWzvvz1uRp+k2QDpCZQ9haqr+U1tGncmdXZw==
X-Received: by 2002:a17:907:7fac:b0:a8d:25d3:65e4 with SMTP id a640c23a62f3a-a991bd86307mr19752666b.36.1727978379216;
        Thu, 03 Oct 2024 10:59:39 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 06/19] xen: Update header guards - Device tree
Date: Thu,  3 Oct 2024 18:59:06 +0100
Message-Id: <20241003175919.472774-7-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to device tree.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/common/libfdt/libfdt_internal.h | 6 +++---
 xen/include/xen/bootfdt.h           | 6 +++---
 xen/include/xen/device_tree.h       | 4 ++--
 xen/include/xen/libfdt/fdt.h        | 6 +++---
 xen/include/xen/libfdt/libfdt-xen.h | 6 +++---
 xen/include/xen/libfdt/libfdt.h     | 6 +++---
 xen/include/xen/libfdt/libfdt_env.h | 6 +++---
 7 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/xen/common/libfdt/libfdt_internal.h b/xen/common/libfdt/libfdt_internal.h
index 16bda1906a..ba4d6527b0 100644
--- a/xen/common/libfdt/libfdt_internal.h
+++ b/xen/common/libfdt/libfdt_internal.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_INTERNAL_H
-#define LIBFDT_INTERNAL_H
+#ifndef COMMON__LIBFDT__LIBFDT_INTERNAL_H
+#define COMMON__LIBFDT__LIBFDT_INTERNAL_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -189,4 +189,4 @@ static inline bool can_assume_(int mask)
 /** helper macros for checking assumptions */
 #define can_assume(_assume)	can_assume_(ASSUME_ ## _assume)
 
-#endif /* LIBFDT_INTERNAL_H */
+#endif /* COMMON__LIBFDT__LIBFDT_INTERNAL_H */
diff --git a/xen/include/xen/bootfdt.h b/xen/include/xen/bootfdt.h
index 16fa05f38f..7cb01dbb1b 100644
--- a/xen/include/xen/bootfdt.h
+++ b/xen/include/xen/bootfdt.h
@@ -1,5 +1,5 @@
-#ifndef XEN_BOOTFDT_H
-#define XEN_BOOTFDT_H
+#ifndef XEN__BOOTFDT_H
+#define XEN__BOOTFDT_H
 
 #include <xen/types.h>
 #include <xen/kernel.h>
@@ -206,4 +206,4 @@ static inline struct shmem_membank_extra *bootinfo_get_shmem_extra(void)
 }
 #endif
 
-#endif /* XEN_BOOTFDT_H */
+#endif /* XEN__BOOTFDT_H */
diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
index e6287305a7..5c4a419781 100644
--- a/xen/include/xen/device_tree.h
+++ b/xen/include/xen/device_tree.h
@@ -7,8 +7,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __XEN_DEVICE_TREE_H__
-#define __XEN_DEVICE_TREE_H__
+#ifndef XEN__DEVICE_TREE_H
+#define XEN__DEVICE_TREE_H
 
 #include <asm/byteorder.h>
 #include <asm/device.h>
diff --git a/xen/include/xen/libfdt/fdt.h b/xen/include/xen/libfdt/fdt.h
index f2e68807f2..6a53d4705b 100644
--- a/xen/include/xen/libfdt/fdt.h
+++ b/xen/include/xen/libfdt/fdt.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef FDT_H
-#define FDT_H
+#ifndef XEN__LIBFDT__FDT_H
+#define XEN__LIBFDT__FDT_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -63,4 +63,4 @@ struct fdt_property {
 #define FDT_V16_SIZE	FDT_V3_SIZE
 #define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(fdt32_t))
 
-#endif /* FDT_H */
+#endif /* XEN__LIBFDT__FDT_H */
diff --git a/xen/include/xen/libfdt/libfdt-xen.h b/xen/include/xen/libfdt/libfdt-xen.h
index a5340bc9f4..7cab9cef66 100644
--- a/xen/include/xen/libfdt/libfdt-xen.h
+++ b/xen/include/xen/libfdt/libfdt-xen.h
@@ -8,8 +8,8 @@
  * Copyright (C) 2023, Advanced Micro Devices, Inc. All Rights Reserved.
  */
 
-#ifndef LIBFDT_XEN_H
-#define LIBFDT_XEN_H
+#ifndef XEN__LIBFDT__LIBFDT_XEN_H
+#define XEN__LIBFDT__LIBFDT_XEN_H
 
 #include <xen/libfdt/libfdt.h>
 
@@ -43,7 +43,7 @@ static inline int fdt_get_mem_rsv_paddr(const void *fdt, int n,
     return ret;
 }
 
-#endif /* LIBFDT_XEN_H */
+#endif /* XEN__LIBFDT__LIBFDT_XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/libfdt/libfdt.h b/xen/include/xen/libfdt/libfdt.h
index fabddbee8c..9ed4ee1705 100644
--- a/xen/include/xen/libfdt/libfdt.h
+++ b/xen/include/xen/libfdt/libfdt.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_H
-#define LIBFDT_H
+#ifndef XEN__LIBFDT__LIBFDT_H
+#define XEN__LIBFDT__LIBFDT_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -2137,4 +2137,4 @@ const char *fdt_strerror(int errval);
 }
 #endif
 
-#endif /* LIBFDT_H */
+#endif /* XEN__LIBFDT__LIBFDT_H */
diff --git a/xen/include/xen/libfdt/libfdt_env.h b/xen/include/xen/libfdt/libfdt_env.h
index 8368787391..3b0d121a78 100644
--- a/xen/include/xen/libfdt/libfdt_env.h
+++ b/xen/include/xen/libfdt/libfdt_env.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_ENV_H
-#define LIBFDT_ENV_H
+#ifndef XEN__LIBFDT__LIBFDT_ENV_H
+#define XEN__LIBFDT__LIBFDT_ENV_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -93,4 +93,4 @@ static inline size_t fdt_strnlen(const char *string, size_t max_count)
 
 #endif /* __APPLE__ */
 
-#endif /* LIBFDT_ENV_H */
+#endif /* XEN__LIBFDT__LIBFDT_ENV_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809681.1222127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ70-0006i3-Qh; Thu, 03 Oct 2024 17:59:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809681.1222127; Thu, 03 Oct 2024 17:59: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 1swQ70-0006hw-LE; Thu, 03 Oct 2024 17:59:38 +0000
Received: by outflank-mailman (input) for mailman id 809681;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ6z-0006hm-2M
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:37 +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 3f4e4ab5-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:34 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a8d24f98215so195590366b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:34 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3f4e4ab5-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978373; x=1728583173; 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=hLeebrnlGwDU0DN/xsfl05Gj76W+fg5IZGj7AEDrGJ8=;
        b=FNtQnoFcqp+++0Hw0ve2s3HXZurpZuh72UvmZSIwt1wxf2WI7aAEQc+wYsnh3CaAul
         iyHao7cy/xxB836gWV/4ko/N5CoqVTjV7idjjaXHG0m0MhXsEE7TXovsAlFsUtL6HXwV
         Xc0kGLPrs3NR8qMHXYy+ZZCEPjP3NoTo/JXgE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978373; x=1728583173;
        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=hLeebrnlGwDU0DN/xsfl05Gj76W+fg5IZGj7AEDrGJ8=;
        b=hl7qfQeGj4AhcJuSQOeNsF6Ilnqf0VJV4nKGbxLpXlbrEEfd2gZ368Y4aA79lNkOyc
         QD7eEwTUQSUrhKnAgTJa7tckymOXy4au0h9IsCmTNvFRlsiv1E9gT4BLDZDYNTX7rMGi
         kQhiqLm4ER278bcPc068cd5lYsDzHcuuUrXdlL5aKnYiBaHaoYTY4GKl4CKcpJJ4QfL9
         pvtrKDVCBqshUtAUfyuu3R1hQk9bI7Ygp19BlIopUCdeTZ13DZYuIevFDWLzlMdXFygU
         1FIF7+ZpUW8Usg62hcMKvrd+in5M4moMnp5MzCyWM7hpd/yNRowmjg1dqt1EL897KFsh
         8Asg==
X-Gm-Message-State: AOJu0Yz2cjAwRxYyIYLaKYvB4i5iUhhtkxbzDrcxJ4HcnrxhxZIA1yWA
	7mTu0ZQAZLQ+RPfFQ7IBZmy+faxWdM3VDx0/NDD92Sox/YHnsYSJL7HfCBTCcRrLYONYdxjd/DD
	X8XM=
X-Google-Smtp-Source: AGHT+IGifIGY1aZgpLnu20v2AwtlU6SzoZb/PEAP0qw7tmsDRwzhy3O7sQwq3Ec1UY600zdPCuDrbw==
X-Received: by 2002:a17:907:3f18:b0:a6f:593f:d336 with SMTP id a640c23a62f3a-a991bd13582mr20281466b.11.1727978373277;
        Thu, 03 Oct 2024 10:59:33 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Tim Deegan <tim@xen.org>,
	Christopher Clark <christopher.w.clark@gmail.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@intel.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH v2 00/19] Update header guards bases on new coding style
Date: Thu,  3 Oct 2024 18:59:00 +0100
Message-Id: <20241003175919.472774-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

With the help of some scripts and manual checking I updated header guards.

As the changes are pretty large patch was split based on maintainers
to reduce mail spamming.

Excluded public headers from the update, they are API, software like
Qemu will fail to compile if changed.

Changes since v1:
- make all commit compile;
- exclude public headers, their guard is not an API.

Frediano Ziglio (19):
  xen: Update header guards - Generic
  xen: Update header guards - X86
  xen: Update header guards - ACPI
  xen: Update header guards - ARGO
  xen: Update header guards - ARM
  xen: Update header guards - Device tree
  xen: Update header guards - EFI
  xen: Update header guards - HYPFS
  xen: Update header guards - Intel TXT
  xen: Update header guards - I/O MMU
  xen: Update header guards - Kconfig
  xen: Update header guards - KEXEC
  xen: Update header guards - Live patch
  xen: Update header guards - PPC 64
  xen: Update header guards - RISC-V
  xen: Update header guards - Scheduling
  xen: Update header guards - VM event, mem access, monitor
  xen: Update header guards - VPCI
  xen: Update header guards - XSM/Flask

 tools/libs/guest/xg_dom_decompress_unsafe_zstd.c        | 2 +-
 xen/arch/arm/arm32/lib/assembler.h                      | 6 +++---
 xen/arch/arm/arm64/lib/assembler.h                      | 6 +++---
 xen/arch/arm/decode.h                                   | 6 +++---
 xen/arch/arm/include/asm/acpi.h                         | 6 +++---
 xen/arch/arm/include/asm/alternative.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/atomic.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm32/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm32/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm32/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm32/sysregs.h                | 6 +++---
 xen/arch/arm/include/asm/arm32/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm32/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/atomic.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/brk.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/cpufeature.h             | 4 ++--
 xen/arch/arm/include/asm/arm64/efibind.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm64/hsr.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm64/sve.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/sysregs.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm64/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/arm/include/asm/atomic.h                       | 6 +++---
 xen/arch/arm/include/asm/bitops.h                       | 6 +++---
 xen/arch/arm/include/asm/bug.h                          | 6 +++---
 xen/arch/arm/include/asm/byteorder.h                    | 6 +++---
 xen/arch/arm/include/asm/cache.h                        | 4 ++--
 xen/arch/arm/include/asm/cadence-uart.h                 | 4 ++--
 xen/arch/arm/include/asm/config.h                       | 6 +++---
 xen/arch/arm/include/asm/cpregs.h                       | 4 ++--
 xen/arch/arm/include/asm/cpuerrata.h                    | 6 +++---
 xen/arch/arm/include/asm/cpufeature.h                   | 4 ++--
 xen/arch/arm/include/asm/current.h                      | 6 +++---
 xen/arch/arm/include/asm/div64.h                        | 4 ++--
 xen/arch/arm/include/asm/dom0less-build.h               | 6 +++---
 xen/arch/arm/include/asm/domain.h                       | 6 +++---
 xen/arch/arm/include/asm/domain_build.h                 | 4 ++--
 xen/arch/arm/include/asm/early_printk.h                 | 4 ++--
 xen/arch/arm/include/asm/elf.h                          | 6 +++---
 xen/arch/arm/include/asm/event.h                        | 4 ++--
 xen/arch/arm/include/asm/exynos4210-uart.h              | 6 +++---
 xen/arch/arm/include/asm/fixmap.h                       | 6 +++---
 xen/arch/arm/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/arm/include/asm/gic.h                          | 4 ++--
 xen/arch/arm/include/asm/gic_v3_defs.h                  | 6 +++---
 xen/arch/arm/include/asm/gic_v3_its.h                   | 4 ++--
 xen/arch/arm/include/asm/grant_table.h                  | 6 +++---
 xen/arch/arm/include/asm/guest_access.h                 | 6 +++---
 xen/arch/arm/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/arm/include/asm/guest_walk.h                   | 6 +++---
 xen/arch/arm/include/asm/hsr.h                          | 6 +++---
 xen/arch/arm/include/asm/hypercall.h                    | 8 ++++----
 xen/arch/arm/include/asm/imx-lpuart.h                   | 6 +++---
 xen/arch/arm/include/asm/insn.h                         | 6 +++---
 xen/arch/arm/include/asm/io.h                           | 4 ++--
 xen/arch/arm/include/asm/iommu.h                        | 6 +++---
 xen/arch/arm/include/asm/iommu_fwspec.h                 | 6 +++---
 xen/arch/arm/include/asm/ioreq.h                        | 6 +++---
 xen/arch/arm/include/asm/irq.h                          | 6 +++---
 xen/arch/arm/include/asm/kernel.h                       | 6 +++---
 xen/arch/arm/include/asm/livepatch.h                    | 6 +++---
 xen/arch/arm/include/asm/lpae.h                         | 6 +++---
 xen/arch/arm/include/asm/macros.h                       | 4 ++--
 xen/arch/arm/include/asm/mem_access.h                   | 6 +++---
 xen/arch/arm/include/asm/mm.h                           | 6 +++---
 xen/arch/arm/include/asm/mmio.h                         | 6 +++---
 xen/arch/arm/include/asm/mmu/layout.h                   | 6 +++---
 xen/arch/arm/include/asm/mmu/mm.h                       | 6 +++---
 xen/arch/arm/include/asm/mmu/p2m.h                      | 6 +++---
 xen/arch/arm/include/asm/monitor.h                      | 6 +++---
 xen/arch/arm/include/asm/new_vgic.h                     | 6 +++---
 xen/arch/arm/include/asm/nospec.h                       | 6 +++---
 xen/arch/arm/include/asm/p2m.h                          | 8 ++++----
 xen/arch/arm/include/asm/page-bits.h                    | 6 +++---
 xen/arch/arm/include/asm/page.h                         | 6 +++---
 xen/arch/arm/include/asm/pci.h                          | 6 +++---
 xen/arch/arm/include/asm/perfc.h                        | 4 ++--
 xen/arch/arm/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/arm/include/asm/pl011-uart.h                   | 6 +++---
 xen/arch/arm/include/asm/platform.h                     | 6 +++---
 xen/arch/arm/include/asm/platforms/exynos5.h            | 6 +++---
 xen/arch/arm/include/asm/platforms/midway.h             | 2 +-
 xen/arch/arm/include/asm/platforms/omap5.h              | 4 ++--
 xen/arch/arm/include/asm/platforms/vexpress.h           | 6 +++---
 xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h | 6 +++---
 xen/arch/arm/include/asm/pmap.h                         | 6 +++---
 xen/arch/arm/include/asm/processor.h                    | 6 +++---
 xen/arch/arm/include/asm/procinfo.h                     | 4 ++--
 xen/arch/arm/include/asm/psci.h                         | 6 +++---
 xen/arch/arm/include/asm/regs.h                         | 6 +++---
 xen/arch/arm/include/asm/scif-uart.h                    | 6 +++---
 xen/arch/arm/include/asm/setup.h                        | 4 ++--
 xen/arch/arm/include/asm/short-desc.h                   | 6 +++---
 xen/arch/arm/include/asm/smccc.h                        | 6 +++---
 xen/arch/arm/include/asm/smp.h                          | 4 ++--
 xen/arch/arm/include/asm/spinlock.h                     | 6 +++---
 xen/arch/arm/include/asm/static-evtchn.h                | 6 +++---
 xen/arch/arm/include/asm/static-memory.h                | 6 +++---
 xen/arch/arm/include/asm/static-shmem.h                 | 6 +++---
 xen/arch/arm/include/asm/string.h                       | 6 +++---
 xen/arch/arm/include/asm/sysregs.h                      | 6 +++---
 xen/arch/arm/include/asm/system.h                       | 4 ++--
 xen/arch/arm/include/asm/tee/ffa.h                      | 6 +++---
 xen/arch/arm/include/asm/tee/optee_msg.h                | 6 +++---
 xen/arch/arm/include/asm/tee/optee_rpc_cmd.h            | 6 +++---
 xen/arch/arm/include/asm/tee/optee_smc.h                | 6 +++---
 xen/arch/arm/include/asm/tee/tee.h                      | 6 +++---
 xen/arch/arm/include/asm/time.h                         | 6 +++---
 xen/arch/arm/include/asm/traps.h                        | 6 +++---
 xen/arch/arm/include/asm/types.h                        | 6 +++---
 xen/arch/arm/include/asm/vfp.h                          | 6 +++---
 xen/arch/arm/include/asm/vgic-emul.h                    | 6 +++---
 xen/arch/arm/include/asm/vgic.h                         | 6 +++---
 xen/arch/arm/include/asm/vpl011.h                       | 6 +++---
 xen/arch/arm/include/asm/vpsci.h                        | 6 +++---
 xen/arch/arm/include/asm/vreg.h                         | 6 +++---
 xen/arch/arm/include/asm/vtimer.h                       | 4 ++--
 xen/arch/arm/tee/ffa_private.h                          | 6 +++---
 xen/arch/arm/vgic/vgic-mmio.h                           | 4 ++--
 xen/arch/arm/vgic/vgic.h                                | 4 ++--
 xen/arch/arm/vpci.h                                     | 6 +++---
 xen/arch/arm/vuart.h                                    | 6 +++---
 xen/arch/ppc/include/asm/asm-defns.h                    | 6 +++---
 xen/arch/ppc/include/asm/atomic.h                       | 6 +++---
 xen/arch/ppc/include/asm/bitops.h                       | 6 +++---
 xen/arch/ppc/include/asm/boot.h                         | 6 +++---
 xen/arch/ppc/include/asm/bug.h                          | 6 +++---
 xen/arch/ppc/include/asm/byteorder.h                    | 6 +++---
 xen/arch/ppc/include/asm/cache.h                        | 6 +++---
 xen/arch/ppc/include/asm/config.h                       | 6 +++---
 xen/arch/ppc/include/asm/cpufeature.h                   | 6 +++---
 xen/arch/ppc/include/asm/current.h                      | 6 +++---
 xen/arch/ppc/include/asm/domain.h                       | 6 +++---
 xen/arch/ppc/include/asm/early_printk.h                 | 6 +++---
 xen/arch/ppc/include/asm/event.h                        | 6 +++---
 xen/arch/ppc/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/ppc/include/asm/guest_access.h                 | 6 +++---
 xen/arch/ppc/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/ppc/include/asm/io.h                           | 6 +++---
 xen/arch/ppc/include/asm/iommu.h                        | 6 +++---
 xen/arch/ppc/include/asm/irq.h                          | 6 +++---
 xen/arch/ppc/include/asm/memory.h                       | 4 ++--
 xen/arch/ppc/include/asm/mm.h                           | 6 +++---
 xen/arch/ppc/include/asm/monitor.h                      | 6 +++---
 xen/arch/ppc/include/asm/msr.h                          | 6 +++---
 xen/arch/ppc/include/asm/nospec.h                       | 6 +++---
 xen/arch/ppc/include/asm/opal-api.h                     | 6 +++---
 xen/arch/ppc/include/asm/p2m.h                          | 6 +++---
 xen/arch/ppc/include/asm/page-bits.h                    | 6 +++---
 xen/arch/ppc/include/asm/page.h                         | 6 +++---
 xen/arch/ppc/include/asm/processor.h                    | 6 +++---
 xen/arch/ppc/include/asm/regs.h                         | 6 +++---
 xen/arch/ppc/include/asm/setup.h                        | 6 +++---
 xen/arch/ppc/include/asm/smp.h                          | 4 ++--
 xen/arch/ppc/include/asm/spinlock.h                     | 6 +++---
 xen/arch/ppc/include/asm/string.h                       | 6 +++---
 xen/arch/ppc/include/asm/system.h                       | 4 ++--
 xen/arch/ppc/include/asm/time.h                         | 6 +++---
 xen/arch/ppc/include/asm/types.h                        | 6 +++---
 xen/arch/riscv/include/asm/acpi.h                       | 6 +++---
 xen/arch/riscv/include/asm/asm.h                        | 6 +++---
 xen/arch/riscv/include/asm/atomic.h                     | 6 +++---
 xen/arch/riscv/include/asm/bitops.h                     | 6 +++---
 xen/arch/riscv/include/asm/bug.h                        | 6 +++---
 xen/arch/riscv/include/asm/byteorder.h                  | 6 +++---
 xen/arch/riscv/include/asm/cache.h                      | 6 +++---
 xen/arch/riscv/include/asm/cmpxchg.h                    | 6 +++---
 xen/arch/riscv/include/asm/config.h                     | 6 +++---
 xen/arch/riscv/include/asm/cpufeature.h                 | 6 +++---
 xen/arch/riscv/include/asm/csr.h                        | 6 +++---
 xen/arch/riscv/include/asm/current.h                    | 6 +++---
 xen/arch/riscv/include/asm/domain.h                     | 6 +++---
 xen/arch/riscv/include/asm/early_printk.h               | 6 +++---
 xen/arch/riscv/include/asm/event.h                      | 6 +++---
 xen/arch/riscv/include/asm/fence.h                      | 6 +++---
 xen/arch/riscv/include/asm/fixmap.h                     | 6 +++---
 xen/arch/riscv/include/asm/flushtlb.h                   | 6 +++---
 xen/arch/riscv/include/asm/guest_access.h               | 6 +++---
 xen/arch/riscv/include/asm/guest_atomics.h              | 6 +++---
 xen/arch/riscv/include/asm/io.h                         | 6 +++---
 xen/arch/riscv/include/asm/irq.h                        | 6 +++---
 xen/arch/riscv/include/asm/mm.h                         | 6 +++---
 xen/arch/riscv/include/asm/monitor.h                    | 6 +++---
 xen/arch/riscv/include/asm/nospec.h                     | 6 +++---
 xen/arch/riscv/include/asm/p2m.h                        | 6 +++---
 xen/arch/riscv/include/asm/page-bits.h                  | 6 +++---
 xen/arch/riscv/include/asm/page.h                       | 6 +++---
 xen/arch/riscv/include/asm/pmap.h                       | 6 +++---
 xen/arch/riscv/include/asm/processor.h                  | 6 +++---
 xen/arch/riscv/include/asm/regs.h                       | 6 +++---
 xen/arch/riscv/include/asm/riscv_encoding.h             | 4 ++--
 xen/arch/riscv/include/asm/sbi.h                        | 6 +++---
 xen/arch/riscv/include/asm/setup.h                      | 6 +++---
 xen/arch/riscv/include/asm/smp.h                        | 4 ++--
 xen/arch/riscv/include/asm/spinlock.h                   | 6 +++---
 xen/arch/riscv/include/asm/string.h                     | 6 +++---
 xen/arch/riscv/include/asm/system.h                     | 6 +++---
 xen/arch/riscv/include/asm/time.h                       | 6 +++---
 xen/arch/riscv/include/asm/traps.h                      | 6 +++---
 xen/arch/riscv/include/asm/types.h                      | 6 +++---
 xen/arch/x86/boot/video.h                               | 6 +++---
 xen/arch/x86/cpu/mcheck/barrier.h                       | 6 +++---
 xen/arch/x86/cpu/mcheck/mcaction.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/mce.h                           | 6 +++---
 xen/arch/x86/cpu/mcheck/mce_amd.h                       | 4 ++--
 xen/arch/x86/cpu/mcheck/mctelem.h                       | 4 ++--
 xen/arch/x86/cpu/mcheck/util.h                          | 4 ++--
 xen/arch/x86/cpu/mcheck/vmce.h                          | 4 ++--
 xen/arch/x86/cpu/mcheck/x86_mca.h                       | 6 +++---
 xen/arch/x86/cpu/microcode/private.h                    | 6 +++---
 xen/arch/x86/cpu/mtrr/mtrr.h                            | 6 +++---
 xen/arch/x86/guest/hyperv/private.h                     | 6 +++---
 xen/arch/x86/hvm/svm/nestedhvm.h                        | 6 +++---
 xen/arch/x86/hvm/svm/svm.h                              | 6 +++---
 xen/arch/x86/hvm/viridian/private.h                     | 6 +++---
 xen/arch/x86/include/asm/acpi.h                         | 4 ++--
 xen/arch/x86/include/asm/alternative-asm.h              | 6 +++---
 xen/arch/x86/include/asm/alternative.h                  | 6 +++---
 xen/arch/x86/include/asm/altp2m.h                       | 6 +++---
 xen/arch/x86/include/asm/amd.h                          | 6 +++---
 xen/arch/x86/include/asm/apic.h                         | 6 +++---
 xen/arch/x86/include/asm/apicdef.h                      | 4 ++--
 xen/arch/x86/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/x86/include/asm/atomic.h                       | 6 +++---
 xen/arch/x86/include/asm/bitops.h                       | 6 +++---
 xen/arch/x86/include/asm/bug.h                          | 6 +++---
 xen/arch/x86/include/asm/byteorder.h                    | 6 +++---
 xen/arch/x86/include/asm/bzimage.h                      | 6 +++---
 xen/arch/x86/include/asm/cache.h                        | 4 ++--
 xen/arch/x86/include/asm/config.h                       | 6 +++---
 xen/arch/x86/include/asm/cpu-policy.h                   | 6 +++---
 xen/arch/x86/include/asm/cpufeature.h                   | 6 +++---
 xen/arch/x86/include/asm/cpufeatureset.h                | 6 +++---
 xen/arch/x86/include/asm/cpuid.h                        | 6 +++---
 xen/arch/x86/include/asm/cpuidle.h                      | 4 ++--
 xen/arch/x86/include/asm/current.h                      | 6 +++---
 xen/arch/x86/include/asm/debugreg.h                     | 6 +++---
 xen/arch/x86/include/asm/desc.h                         | 6 +++---
 xen/arch/x86/include/asm/device.h                       | 6 +++---
 xen/arch/x86/include/asm/dom0_build.h                   | 6 +++---
 xen/arch/x86/include/asm/domain.h                       | 6 +++---
 xen/arch/x86/include/asm/e820.h                         | 6 +++---
 xen/arch/x86/include/asm/edd.h                          | 6 +++---
 xen/arch/x86/include/asm/elf.h                          | 6 +++---
 xen/arch/x86/include/asm/endbr.h                        | 6 +++---
 xen/arch/x86/include/asm/event.h                        | 4 ++--
 xen/arch/x86/include/asm/fixmap.h                       | 4 ++--
 xen/arch/x86/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/x86/include/asm/gdbsx.h                        | 6 +++---
 xen/arch/x86/include/asm/genapic.h                      | 4 ++--
 xen/arch/x86/include/asm/grant_table.h                  | 6 +++---
 xen/arch/x86/include/asm/guest.h                        | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-hcall.h           | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-tlfs.h            | 4 ++--
 xen/arch/x86/include/asm/guest/hyperv.h                 | 6 +++---
 xen/arch/x86/include/asm/guest/hypervisor.h             | 6 +++---
 xen/arch/x86/include/asm/guest/pvh-boot.h               | 6 +++---
 xen/arch/x86/include/asm/guest/xen-hcall.h              | 6 +++---
 xen/arch/x86/include/asm/guest/xen.h                    | 6 +++---
 xen/arch/x86/include/asm/guest_access.h                 | 6 +++---
 xen/arch/x86/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/x86/include/asm/guest_pt.h                     | 6 +++---
 xen/arch/x86/include/asm/hap.h                          | 4 ++--
 xen/arch/x86/include/asm/hardirq.h                      | 6 +++---
 xen/arch/x86/include/asm/hpet.h                         | 6 +++---
 xen/arch/x86/include/asm/hvm/asid.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/cacheattr.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/domain.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/emulate.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/grant_table.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/guest_access.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h                      | 6 +++---
 xen/arch/x86/include/asm/hvm/io.h                       | 6 +++---
 xen/arch/x86/include/asm/hvm/ioreq.h                    | 6 +++---
 xen/arch/x86/include/asm/hvm/irq.h                      | 6 +++---
 xen/arch/x86/include/asm/hvm/monitor.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/nestedhvm.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/save.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/support.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/nestedsvm.h            | 4 ++--
 xen/arch/x86/include/asm/hvm/svm/svm.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/svmdebug.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/vmcb.h                 | 4 ++--
 xen/arch/x86/include/asm/hvm/vcpu.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/vioapic.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/viridian.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vlapic.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/vm_event.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h                 | 4 ++--
 xen/arch/x86/include/asm/hvm/vmx/vmx.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vvmx.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vpic.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/vpt.h                      | 6 +++---
 xen/arch/x86/include/asm/hypercall.h                    | 8 ++++----
 xen/arch/x86/include/asm/i387.h                         | 6 +++---
 xen/arch/x86/include/asm/intel-family.h                 | 6 +++---
 xen/arch/x86/include/asm/invpcid.h                      | 6 +++---
 xen/arch/x86/include/asm/io.h                           | 4 ++--
 xen/arch/x86/include/asm/io_apic.h                      | 4 ++--
 xen/arch/x86/include/asm/iocap.h                        | 6 +++---
 xen/arch/x86/include/asm/iommu.h                        | 6 +++---
 xen/arch/x86/include/asm/ioreq.h                        | 6 +++---
 xen/arch/x86/include/asm/irq.h                          | 6 +++---
 xen/arch/x86/include/asm/ldt.h                          | 4 ++--
 xen/arch/x86/include/asm/livepatch.h                    | 6 +++---
 xen/arch/x86/include/asm/mach-default/bios_ebda.h       | 6 +++---
 xen/arch/x86/include/asm/mach-default/io_ports.h        | 6 +++---
 xen/arch/x86/include/asm/mach-default/irq_vectors.h     | 6 +++---
 xen/arch/x86/include/asm/mach-default/mach_mpspec.h     | 6 +++---
 xen/arch/x86/include/asm/mach-generic/mach_apic.h       | 6 +++---
 xen/arch/x86/include/asm/machine_kexec.h                | 6 +++---
 xen/arch/x86/include/asm/mc146818rtc.h                  | 6 +++---
 xen/arch/x86/include/asm/mce.h                          | 4 ++--
 xen/arch/x86/include/asm/mem_access.h                   | 6 +++---
 xen/arch/x86/include/asm/mem_paging.h                   | 6 +++---
 xen/arch/x86/include/asm/mem_sharing.h                  | 6 +++---
 xen/arch/x86/include/asm/microcode.h                    | 6 +++---
 xen/arch/x86/include/asm/mm.h                           | 6 +++---
 xen/arch/x86/include/asm/monitor.h                      | 6 +++---
 xen/arch/x86/include/asm/mpspec.h                       | 4 ++--
 xen/arch/x86/include/asm/mpspec_def.h                   | 4 ++--
 xen/arch/x86/include/asm/msi.h                          | 6 +++---
 xen/arch/x86/include/asm/msr-index.h                    | 6 +++---
 xen/arch/x86/include/asm/msr.h                          | 6 +++---
 xen/arch/x86/include/asm/mtrr.h                         | 6 +++---
 xen/arch/x86/include/asm/multicall.h                    | 6 +++---
 xen/arch/x86/include/asm/mwait.h                        | 6 +++---
 xen/arch/x86/include/asm/nmi.h                          | 6 +++---
 xen/arch/x86/include/asm/nops.h                         | 6 +++---
 xen/arch/x86/include/asm/nospec.h                       | 6 +++---
 xen/arch/x86/include/asm/numa.h                         | 4 ++--
 xen/arch/x86/include/asm/p2m.h                          | 8 ++++----
 xen/arch/x86/include/asm/page-bits.h                    | 6 +++---
 xen/arch/x86/include/asm/page.h                         | 6 +++---
 xen/arch/x86/include/asm/paging.h                       | 4 ++--
 xen/arch/x86/include/asm/pci.h                          | 6 +++---
 xen/arch/x86/include/asm/perfc.h                        | 4 ++--
 xen/arch/x86/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/x86/include/asm/processor.h                    | 6 +++---
 xen/arch/x86/include/asm/prot-key.h                     | 6 +++---
 xen/arch/x86/include/asm/psr.h                          | 6 +++---
 xen/arch/x86/include/asm/pt-contig-markers.h            | 6 +++---
 xen/arch/x86/include/asm/pv/domain.h                    | 6 +++---
 xen/arch/x86/include/asm/pv/grant_table.h               | 6 +++---
 xen/arch/x86/include/asm/pv/mm.h                        | 6 +++---
 xen/arch/x86/include/asm/pv/shim.h                      | 6 +++---
 xen/arch/x86/include/asm/pv/trace.h                     | 6 +++---
 xen/arch/x86/include/asm/pv/traps.h                     | 6 +++---
 xen/arch/x86/include/asm/random.h                       | 6 +++---
 xen/arch/x86/include/asm/regs.h                         | 6 +++---
 xen/arch/x86/include/asm/setup.h                        | 4 ++--
 xen/arch/x86/include/asm/shadow.h                       | 6 +++---
 xen/arch/x86/include/asm/shared.h                       | 6 +++---
 xen/arch/x86/include/asm/shstk.h                        | 6 +++---
 xen/arch/x86/include/asm/smp.h                          | 4 ++--
 xen/arch/x86/include/asm/softirq.h                      | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl.h                    | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl_asm.h                | 6 +++---
 xen/arch/x86/include/asm/spinlock.h                     | 6 +++---
 xen/arch/x86/include/asm/string.h                       | 6 +++---
 xen/arch/x86/include/asm/system.h                       | 4 ++--
 xen/arch/x86/include/asm/tboot.h                        | 6 +++---
 xen/arch/x86/include/asm/time.h                         | 6 +++---
 xen/arch/x86/include/asm/trampoline.h                   | 6 +++---
 xen/arch/x86/include/asm/traps.h                        | 6 +++---
 xen/arch/x86/include/asm/types.h                        | 6 +++---
 xen/arch/x86/include/asm/uaccess.h                      | 6 +++---
 xen/arch/x86/include/asm/vm_event.h                     | 6 +++---
 xen/arch/x86/include/asm/vpmu.h                         | 6 +++---
 xen/arch/x86/include/asm/x86-defns.h                    | 6 +++---
 xen/arch/x86/include/asm/x86-vendors.h                  | 6 +++---
 xen/arch/x86/include/asm/x86_64/efibind.h               | 4 ++--
 xen/arch/x86/include/asm/x86_64/elf.h                   | 6 +++---
 xen/arch/x86/include/asm/x86_64/page.h                  | 6 +++---
 xen/arch/x86/include/asm/x86_64/regs.h                  | 4 ++--
 xen/arch/x86/include/asm/x86_64/system.h                | 6 +++---
 xen/arch/x86/include/asm/x86_64/uaccess.h               | 6 +++---
 xen/arch/x86/include/asm/x86_emulate.h                  | 6 +++---
 xen/arch/x86/include/asm/xenoprof.h                     | 6 +++---
 xen/arch/x86/include/asm/xstate.h                       | 6 +++---
 xen/arch/x86/mm/hap/private.h                           | 6 +++---
 xen/arch/x86/mm/mm-locks.h                              | 6 +++---
 xen/arch/x86/mm/p2m.h                                   | 6 +++---
 xen/arch/x86/mm/shadow/private.h                        | 6 +++---
 xen/arch/x86/mm/shadow/types.h                          | 6 +++---
 xen/arch/x86/oprofile/op_counter.h                      | 6 +++---
 xen/arch/x86/oprofile/op_x86_model.h                    | 6 +++---
 xen/arch/x86/pv/emulate.h                               | 6 +++---
 xen/arch/x86/pv/mm.h                                    | 6 +++---
 xen/arch/x86/x86_emulate/x86_emulate.h                  | 6 +++---
 xen/common/coverage/coverage.h                          | 4 ++--
 xen/common/coverage/gcov.h                              | 6 +++---
 xen/common/libelf/libelf-private.h                      | 6 +++---
 xen/common/libfdt/libfdt_internal.h                     | 6 +++---
 xen/common/lz4/defs.h                                   | 6 +++---
 xen/common/sched/private.h                              | 6 +++---
 xen/common/ubsan/ubsan.h                                | 4 ++--
 xen/common/xz/lzma2.h                                   | 4 ++--
 xen/common/xz/private.h                                 | 4 ++--
 xen/common/xz/stream.h                                  | 4 ++--
 xen/common/zstd/bitstream.h                             | 6 +++---
 xen/common/zstd/error_private.h                         | 6 +++---
 xen/common/zstd/fse.h                                   | 6 +++---
 xen/common/zstd/huf.h                                   | 6 +++---
 xen/common/zstd/mem.h                                   | 6 +++---
 xen/common/zstd/zstd_internal.h                         | 6 +++---
 xen/drivers/acpi/apei/apei-internal.h                   | 4 ++--
 xen/drivers/passthrough/amd/iommu-defs.h                | 6 +++---
 xen/drivers/passthrough/amd/iommu.h                     | 6 +++---
 xen/drivers/passthrough/arm/smmu-v3.h                   | 6 +++---
 xen/drivers/passthrough/ats.h                           | 6 +++---
 xen/drivers/passthrough/vtd/dmar.h                      | 6 +++---
 xen/drivers/passthrough/vtd/extern.h                    | 6 +++---
 xen/drivers/passthrough/vtd/iommu.h                     | 4 ++--
 xen/drivers/passthrough/vtd/vtd.h                       | 6 +++---
 xen/drivers/video/font.h                                | 6 +++---
 xen/drivers/video/lfb.h                                 | 4 ++--
 xen/drivers/video/modelines.h                           | 4 ++--
 xen/include/acpi/acconfig.h                             | 6 +++---
 xen/include/acpi/acexcep.h                              | 6 +++---
 xen/include/acpi/acglobal.h                             | 6 +++---
 xen/include/acpi/achware.h                              | 6 +++---
 xen/include/acpi/aclocal.h                              | 6 +++---
 xen/include/acpi/acmacros.h                             | 4 ++--
 xen/include/acpi/acnames.h                              | 6 +++---
 xen/include/acpi/acoutput.h                             | 6 +++---
 xen/include/acpi/acpi.h                                 | 6 +++---
 xen/include/acpi/acpiosxf.h                             | 6 +++---
 xen/include/acpi/acpixf.h                               | 6 +++---
 xen/include/acpi/actables.h                             | 6 +++---
 xen/include/acpi/actbl.h                                | 6 +++---
 xen/include/acpi/actbl1.h                               | 6 +++---
 xen/include/acpi/actbl2.h                               | 6 +++---
 xen/include/acpi/actbl3.h                               | 6 +++---
 xen/include/acpi/actypes.h                              | 6 +++---
 xen/include/acpi/acutils.h                              | 6 +++---
 xen/include/acpi/apei.h                                 | 4 ++--
 xen/include/acpi/cpufreq/cpufreq.h                      | 6 +++---
 xen/include/acpi/cpufreq/processor_perf.h               | 6 +++---
 xen/include/acpi/pdc_intel.h                            | 6 +++---
 xen/include/acpi/platform/acenv.h                       | 6 +++---
 xen/include/acpi/platform/acgcc.h                       | 6 +++---
 xen/include/acpi/platform/aclinux.h                     | 6 +++---
 xen/include/asm-generic/altp2m.h                        | 6 +++---
 xen/include/asm-generic/atomic-ops.h                    | 6 +++---
 xen/include/asm-generic/device.h                        | 6 +++---
 xen/include/asm-generic/div64.h                         | 4 ++--
 xen/include/asm-generic/hardirq.h                       | 6 +++---
 xen/include/asm-generic/hypercall.h                     | 8 ++++----
 xen/include/asm-generic/iocap.h                         | 6 +++---
 xen/include/asm-generic/monitor.h                       | 6 +++---
 xen/include/asm-generic/paging.h                        | 6 +++---
 xen/include/asm-generic/percpu.h                        | 6 +++---
 xen/include/asm-generic/random.h                        | 6 +++---
 xen/include/asm-generic/softirq.h                       | 6 +++---
 xen/include/asm-generic/vm_event.h                      | 6 +++---
 xen/include/crypto/rijndael.h                           | 6 +++---
 xen/include/crypto/vmac.h                               | 4 ++--
 xen/include/efi/efiapi.h                                | 4 ++--
 xen/include/efi/eficapsule.h                            | 4 ++--
 xen/include/efi/eficon.h                                | 4 ++--
 xen/include/efi/efidef.h                                | 4 ++--
 xen/include/efi/efidevp.h                               | 4 ++--
 xen/include/efi/efierr.h                                | 4 ++--
 xen/include/efi/efipciio.h                              | 6 +++---
 xen/include/efi/efiprot.h                               | 4 ++--
 xen/include/public/arch-arm.h                           | 6 +++---
 xen/include/public/arch-arm/hvm/save.h                  | 4 ++--
 xen/include/public/arch-arm/smccc.h                     | 6 +++---
 xen/include/public/arch-x86/cpufeatureset.h             | 6 +++---
 xen/include/public/arch-x86/cpuid.h                     | 6 +++---
 xen/include/public/arch-x86/guest-acpi.h                | 6 +++---
 xen/include/public/arch-x86/hvm/save.h                  | 6 +++---
 xen/include/public/arch-x86/hvm/start_info.h            | 6 +++---
 xen/include/public/arch-x86/pmu.h                       | 6 +++---
 xen/include/public/arch-x86/xen-mca.h                   | 6 +++---
 xen/include/public/arch-x86/xen-x86_32.h                | 6 +++---
 xen/include/public/arch-x86/xen-x86_64.h                | 6 +++---
 xen/include/public/arch-x86/xen.h                       | 6 +++---
 xen/include/public/argo.h                               | 4 ++--
 xen/include/public/vm_event.h                           | 6 +++---
 xen/include/xen/8250-uart.h                             | 6 +++---
 xen/include/xen/acpi.h                                  | 6 +++---
 xen/include/xen/alternative-call.h                      | 6 +++---
 xen/include/xen/argo.h                                  | 4 ++--
 xen/include/xen/atomic.h                                | 6 +++---
 xen/include/xen/bitmap.h                                | 6 +++---
 xen/include/xen/bitops.h                                | 6 +++---
 xen/include/xen/bootfdt.h                               | 6 +++---
 xen/include/xen/bug.h                                   | 6 +++---
 xen/include/xen/byteorder/big_endian.h                  | 6 +++---
 xen/include/xen/byteorder/generic.h                     | 6 +++---
 xen/include/xen/byteorder/little_endian.h               | 6 +++---
 xen/include/xen/byteorder/swab.h                        | 6 +++---
 xen/include/xen/cache.h                                 | 6 +++---
 xen/include/xen/compat.h                                | 6 +++---
 xen/include/xen/compiler.h                              | 6 +++---
 xen/include/xen/config.h                                | 6 +++---
 xen/include/xen/console.h                               | 6 +++---
 xen/include/xen/consoled.h                              | 6 +++---
 xen/include/xen/const.h                                 | 6 +++---
 xen/include/xen/coverage.h                              | 4 ++--
 xen/include/xen/cper.h                                  | 4 ++--
 xen/include/xen/cpu.h                                   | 6 +++---
 xen/include/xen/cpuidle.h                               | 6 +++---
 xen/include/xen/cpumask.h                               | 6 +++---
 xen/include/xen/ctype.h                                 | 4 ++--
 xen/include/xen/decompress.h                            | 4 ++--
 xen/include/xen/delay.h                                 | 6 +++---
 xen/include/xen/device_tree.h                           | 4 ++--
 xen/include/xen/dm.h                                    | 6 +++---
 xen/include/xen/dmi.h                                   | 6 +++---
 xen/include/xen/domain.h                                | 6 +++---
 xen/include/xen/domain_page.h                           | 6 +++---
 xen/include/xen/dt-overlay.h                            | 6 +++---
 xen/include/xen/early_printk.h                          | 4 ++--
 xen/include/xen/earlycpio.h                             | 6 +++---
 xen/include/xen/efi.h                                   | 6 +++---
 xen/include/xen/elf.h                                   | 6 +++---
 xen/include/xen/elfcore.h                               | 6 +++---
 xen/include/xen/elfstructs.h                            | 6 +++---
 xen/include/xen/err.h                                   | 6 +++---
 xen/include/xen/errno.h                                 | 6 +++---
 xen/include/xen/event.h                                 | 6 +++---
 xen/include/xen/grant_table.h                           | 6 +++---
 xen/include/xen/guest_access.h                          | 6 +++---
 xen/include/xen/gunzip.h                                | 4 ++--
 xen/include/xen/hypercall.h                             | 6 +++---
 xen/include/xen/hypfs.h                                 | 6 +++---
 xen/include/xen/init.h                                  | 6 +++---
 xen/include/xen/inttypes.h                              | 6 +++---
 xen/include/xen/iocap.h                                 | 6 +++---
 xen/include/xen/iommu.h                                 | 6 +++---
 xen/include/xen/ioreq.h                                 | 6 +++---
 xen/include/xen/irq.h                                   | 6 +++---
 xen/include/xen/irq_cpustat.h                           | 6 +++---
 xen/include/xen/kconfig.h                               | 6 +++---
 xen/include/xen/kernel.h                                | 6 +++---
 xen/include/xen/kexec.h                                 | 6 +++---
 xen/include/xen/keyhandler.h                            | 6 +++---
 xen/include/xen/kimage.h                                | 6 +++---
 xen/include/xen/lib.h                                   | 6 +++---
 xen/include/xen/lib/x86/cpu-policy.h                    | 6 +++---
 xen/include/xen/libelf.h                                | 6 +++---
 xen/include/xen/libfdt/fdt.h                            | 6 +++---
 xen/include/xen/libfdt/libfdt-xen.h                     | 6 +++---
 xen/include/xen/libfdt/libfdt.h                         | 6 +++---
 xen/include/xen/libfdt/libfdt_env.h                     | 6 +++---
 xen/include/xen/linkage.h                               | 6 +++---
 xen/include/xen/linux-compat.h                          | 6 +++---
 xen/include/xen/list.h                                  | 6 +++---
 xen/include/xen/list_sort.h                             | 4 ++--
 xen/include/xen/livepatch.h                             | 6 +++---
 xen/include/xen/livepatch_elf.h                         | 6 +++---
 xen/include/xen/livepatch_payload.h                     | 6 +++---
 xen/include/xen/lz4.h                                   | 4 ++--
 xen/include/xen/lzo.h                                   | 4 ++--
 xen/include/xen/macros.h                                | 6 +++---
 xen/include/xen/mem_access.h                            | 6 +++---
 xen/include/xen/mm-frame.h                              | 6 +++---
 xen/include/xen/mm.h                                    | 6 +++---
 xen/include/xen/monitor.h                               | 6 +++---
 xen/include/xen/msi.h                                   | 4 ++--
 xen/include/xen/multiboot.h                             | 6 +++---
 xen/include/xen/multiboot2.h                            | 6 +++---
 xen/include/xen/multicall.h                             | 6 +++---
 xen/include/xen/nodemask.h                              | 6 +++---
 xen/include/xen/nospec.h                                | 6 +++---
 xen/include/xen/notifier.h                              | 6 +++---
 xen/include/xen/numa.h                                  | 6 +++---
 xen/include/xen/p2m-common.h                            | 6 +++---
 xen/include/xen/page-defs.h                             | 6 +++---
 xen/include/xen/page-size.h                             | 4 ++--
 xen/include/xen/paging.h                                | 6 +++---
 xen/include/xen/param.h                                 | 6 +++---
 xen/include/xen/pci.h                                   | 6 +++---
 xen/include/xen/pci_regs.h                              | 6 +++---
 xen/include/xen/pdx.h                                   | 6 +++---
 xen/include/xen/percpu.h                                | 6 +++---
 xen/include/xen/perfc.h                                 | 6 +++---
 xen/include/xen/perfc_defn.h                            | 6 +++---
 xen/include/xen/pfn.h                                   | 6 +++---
 xen/include/xen/pmap.h                                  | 6 +++---
 xen/include/xen/pmstat.h                                | 6 +++---
 xen/include/xen/preempt.h                               | 6 +++---
 xen/include/xen/prefetch.h                              | 4 ++--
 xen/include/xen/pv_console.h                            | 6 +++---
 xen/include/xen/radix-tree.h                            | 6 +++---
 xen/include/xen/random.h                                | 6 +++---
 xen/include/xen/rangeset.h                              | 6 +++---
 xen/include/xen/rbtree.h                                | 6 +++---
 xen/include/xen/rcupdate.h                              | 6 +++---
 xen/include/xen/rwlock.h                                | 6 +++---
 xen/include/xen/sched.h                                 | 6 +++---
 xen/include/xen/sections.h                              | 6 +++---
 xen/include/xen/self-tests.h                            | 6 +++---
 xen/include/xen/serial.h                                | 6 +++---
 xen/include/xen/shared.h                                | 6 +++---
 xen/include/xen/shutdown.h                              | 6 +++---
 xen/include/xen/sizes.h                                 | 6 +++---
 xen/include/xen/smp.h                                   | 6 +++---
 xen/include/xen/softirq.h                               | 6 +++---
 xen/include/xen/sort.h                                  | 6 +++---
 xen/include/xen/spinlock.h                              | 6 +++---
 xen/include/xen/stdarg.h                                | 6 +++---
 xen/include/xen/stdbool.h                               | 6 +++---
 xen/include/xen/stdint.h                                | 6 +++---
 xen/include/xen/stop_machine.h                          | 6 +++---
 xen/include/xen/string.h                                | 6 +++---
 xen/include/xen/stringify.h                             | 6 +++---
 xen/include/xen/symbols.h                               | 6 +++---
 xen/include/xen/tasklet.h                               | 6 +++---
 xen/include/xen/time.h                                  | 6 +++---
 xen/include/xen/timer.h                                 | 6 +++---
 xen/include/xen/trace.h                                 | 6 +++---
 xen/include/xen/types.h                                 | 6 +++---
 xen/include/xen/typesafe.h                              | 6 +++---
 xen/include/xen/unaligned.h                             | 6 +++---
 xen/include/xen/version.h                               | 6 +++---
 xen/include/xen/vga.h                                   | 6 +++---
 xen/include/xen/video.h                                 | 6 +++---
 xen/include/xen/virtual_region.h                        | 6 +++---
 xen/include/xen/vm_event.h                              | 6 +++---
 xen/include/xen/vmap.h                                  | 6 +++---
 xen/include/xen/vpci.h                                  | 4 ++--
 xen/include/xen/wait.h                                  | 6 +++---
 xen/include/xen/warning.h                               | 4 ++--
 xen/include/xen/watchdog.h                              | 6 +++---
 xen/include/xen/xen.lds.h                               | 6 +++---
 xen/include/xen/xenoprof.h                              | 4 ++--
 xen/include/xen/xmalloc.h                               | 6 +++---
 xen/include/xen/xxhash.h                                | 6 +++---
 xen/include/xsm/dummy.h                                 | 6 +++---
 xen/include/xsm/xsm.h                                   | 4 ++--
 xen/lib/x86/private.h                                   | 6 +++---
 xen/tools/kconfig/expr.h                                | 6 +++---
 xen/tools/kconfig/images.h                              | 6 +++---
 xen/tools/kconfig/list.h                                | 4 ++--
 xen/tools/kconfig/lkc.h                                 | 6 +++---
 xen/xsm/flask/include/avc.h                             | 6 +++---
 xen/xsm/flask/include/avc_ss.h                          | 6 +++---
 xen/xsm/flask/include/conditional.h                     | 4 ++--
 xen/xsm/flask/include/objsec.h                          | 6 +++---
 xen/xsm/flask/include/security.h                        | 6 +++---
 xen/xsm/flask/private.h                                 | 6 +++---
 xen/xsm/flask/ss/avtab.h                                | 6 +++---
 xen/xsm/flask/ss/conditional.h                          | 6 +++---
 xen/xsm/flask/ss/constraint.h                           | 6 +++---
 xen/xsm/flask/ss/context.h                              | 6 +++---
 xen/xsm/flask/ss/ebitmap.h                              | 6 +++---
 xen/xsm/flask/ss/hashtab.h                              | 4 ++--
 xen/xsm/flask/ss/mls.h                                  | 4 ++--
 xen/xsm/flask/ss/mls_types.h                            | 6 +++---
 xen/xsm/flask/ss/policydb.h                             | 6 +++---
 xen/xsm/flask/ss/services.h                             | 6 +++---
 xen/xsm/flask/ss/sidtab.h                               | 6 +++---
 xen/xsm/flask/ss/symtab.h                               | 6 +++---
 679 files changed, 1929 insertions(+), 1929 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809684.1222152 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ73-0007J2-Qn; Thu, 03 Oct 2024 17:59:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809684.1222152; Thu, 03 Oct 2024 17:59: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 1swQ73-0007HW-Lu; Thu, 03 Oct 2024 17:59:41 +0000
Received: by outflank-mailman (input) for mailman id 809684;
 Thu, 03 Oct 2024 17: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ72-0006qR-6q
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:40 +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 41760afb-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:38 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-5366fd6fdf1so1866023e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:38 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 41760afb-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978377; x=1728583177; 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=Tis/X/p31Jv/hBo4GPRCJx3SzpdwRvuuxDnrw7zrjpc=;
        b=fOzgTcbRP4nQW1zAH0l6QbWKF9D6RK8jva2LS1xMlHgF1e0MpHvIZ6pbGKvPhDMZal
         9qVfldsrpBO8zuNg2l5P5F8H/dKkhmD2MVRtR5kVcalY14lV0am8+Nvr+YJVoLNLZ1G+
         U1tiHHGu3oXERMUfxxcH7JdmiecEMderqLoHs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978377; x=1728583177;
        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=Tis/X/p31Jv/hBo4GPRCJx3SzpdwRvuuxDnrw7zrjpc=;
        b=X6oraX3hgrpsfpN493i0h6jV9ZP9tmeieL2CrEUD9BOLdL9fFoshsfFQouUnpJN+cH
         N+G6m62RiMVmKkzx5pEIayxnfgq+q9FmLlCn8cjrHU2ErD+EVIqjmF5fPfQcark9IQpA
         N6OKdyXCMLZx5K805+OdMsP7Snwbv5fxoRRlUTLjLtIhYa0+L+Nb3Z/lZkMy07YTJpQf
         x19G3AKSaeXNLT9q17OpQm4bxYlDrRrC7Tsfsmw0kwhznAaJG90pWCpjq2dyFFHpl2rL
         2szTN7iOhdbtcVsG2dbS3V20uZ/i4lECDmHOG5TAoLb9VUm3152EWymmXjHgN5P7so/1
         5WEg==
X-Gm-Message-State: AOJu0YyFJz1o37tBi7E/52g9wTuA5Dug5OvwMQ0j6M2e/dpKuftJL88W
	MCXKL7pTNcY5DEkoIX6T7fZpHv7ABT7pTp9W58EJSp7lHZXdjMtPdV9jsTCAx5izykOdA0I6Bl6
	A
X-Google-Smtp-Source: AGHT+IHWNtrEerC0l6TABn+oFr1YuLPwxe484b+d0gBWxci9wSQdrDpnJ3KTM4g8os1IiZiHDkxHjw==
X-Received: by 2002:a05:6512:33ca:b0:536:581c:9d9f with SMTP id 2adb3069b0e04-539ab858762mr150407e87.24.1727978377066;
        Thu, 03 Oct 2024 10:59:37 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Christopher Clark <christopher.w.clark@gmail.com>
Subject: [PATCH v2 04/19] xen: Update header guards - ARGO
Date: Thu,  3 Oct 2024 18:59:04 +0100
Message-Id: <20241003175919.472774-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ARGO.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/public/argo.h | 4 ++--
 xen/include/xen/argo.h    | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/include/public/argo.h b/xen/include/public/argo.h
index 84a4cb118b..32e46c4b5c 100644
--- a/xen/include/public/argo.h
+++ b/xen/include/public/argo.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef __XEN_PUBLIC_ARGO_H__
-#define __XEN_PUBLIC_ARGO_H__
+#ifndef PUBLIC__ARGO_H
+#define PUBLIC__ARGO_H
 
 #include "xen.h"
 
diff --git a/xen/include/xen/argo.h b/xen/include/xen/argo.h
index fd4cfdd55c..3ef62dab19 100644
--- a/xen/include/xen/argo.h
+++ b/xen/include/xen/argo.h
@@ -12,8 +12,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_ARGO_H__
-#define __XEN_ARGO_H__
+#ifndef XEN__ARGO_H
+#define XEN__ARGO_H
 
 #include <xen/sched.h>
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809688.1222193 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ77-0008Jn-KJ; Thu, 03 Oct 2024 17:59:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809688.1222193; Thu, 03 Oct 2024 17:59: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 1swQ77-0008Hy-Cu; Thu, 03 Oct 2024 17:59:45 +0000
Received: by outflank-mailman (input) for mailman id 809688;
 Thu, 03 Oct 2024 17: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ75-0006qR-7G
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:43 +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 42bb6e2a-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:40 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-539908f238fso1545471e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:40 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42bb6e2a-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978379; x=1728583179; 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=VaQPIr/iUhJbuSXHFgzk1pv0fVgLMa/FnSrLAtP3Sps=;
        b=YTwepV7IljEvO45/m1udXDdgM3Fav6TP1s9xC5p0e3KoK/bzQZJ84mtH8urXgdgEan
         exNuR8Oy8AhxwwN7TXyQLk66TMCqNUJDI6hk4ULWTrNkpHmTR0gXLI0arL+wPava4ovy
         N4EPw9UlWZ1nwlyePbprWvKwUatrZ6GoCw6No=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978379; x=1728583179;
        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=VaQPIr/iUhJbuSXHFgzk1pv0fVgLMa/FnSrLAtP3Sps=;
        b=g+QbcXM6ET9qYE/SoRrwA97K59BACcEW3I1Ma+pT3OLz/QHmT8njVt9zQ7Adsbt3qX
         5LyFkY0AUCaRyFNkx8K+uLbSDxJfYjMRomTFSe+kX0g1y/kP+cl3LlJZLihqyPWMLpRl
         yb+Fenv/0JhUrSR9iIIEgu9jgM/V8JelCdUtLTpxKI56bW6fDHPD/oZLR0etUP7InfCZ
         AtWMytdiFHLVXaN0b1hjgjENuG+fV8E8HNKs6y81an7WwoxJaKFV0r9Py4TxmvNirEDA
         FWSSj9YWyJGt0u/oSOs0GcioSmOq9ia2TnQHQyELNmu3Kr/iNNSh4hZeA3uSQRRGHFSa
         LDRQ==
X-Gm-Message-State: AOJu0YwYsZzD02LuhO8M3g8NUFXZU6n7dTk9AzXgXs6LSO2MUJjvgL0t
	ZrPtxlTx/lpeR5BkebQTu+CW4heDBA4VsktTMga0Q+ycaOIPG/oAsrE43NYZNiZ8m3MavohmCDl
	U
X-Google-Smtp-Source: AGHT+IGDUi7QlBvXA8JUwVpI1ZuTyFN02eMjmqsUfkFrUMQBZdYpN1nggsjgC4egSb3MJvDvxGReGg==
X-Received: by 2002:a05:6512:3e0f:b0:535:3dae:a14b with SMTP id 2adb3069b0e04-539ab85cc35mr157560e87.2.1727978378167;
        Thu, 03 Oct 2024 10:59:38 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.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>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH v2 05/19] xen: Update header guards - ARM
Date: Thu,  3 Oct 2024 18:59:05 +0100
Message-Id: <20241003175919.472774-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ARM.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/arm/arm32/lib/assembler.h                      | 6 +++---
 xen/arch/arm/arm64/lib/assembler.h                      | 6 +++---
 xen/arch/arm/decode.h                                   | 6 +++---
 xen/arch/arm/include/asm/acpi.h                         | 6 +++---
 xen/arch/arm/include/asm/alternative.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/atomic.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm32/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm32/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm32/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm32/sysregs.h                | 6 +++---
 xen/arch/arm/include/asm/arm32/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm32/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/atomic.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/brk.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/cpufeature.h             | 4 ++--
 xen/arch/arm/include/asm/arm64/efibind.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm64/hsr.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm64/sve.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/sysregs.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm64/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/arm/include/asm/atomic.h                       | 6 +++---
 xen/arch/arm/include/asm/bitops.h                       | 6 +++---
 xen/arch/arm/include/asm/bug.h                          | 6 +++---
 xen/arch/arm/include/asm/byteorder.h                    | 6 +++---
 xen/arch/arm/include/asm/cache.h                        | 4 ++--
 xen/arch/arm/include/asm/cadence-uart.h                 | 4 ++--
 xen/arch/arm/include/asm/config.h                       | 6 +++---
 xen/arch/arm/include/asm/cpregs.h                       | 4 ++--
 xen/arch/arm/include/asm/cpuerrata.h                    | 6 +++---
 xen/arch/arm/include/asm/cpufeature.h                   | 4 ++--
 xen/arch/arm/include/asm/current.h                      | 6 +++---
 xen/arch/arm/include/asm/div64.h                        | 4 ++--
 xen/arch/arm/include/asm/dom0less-build.h               | 6 +++---
 xen/arch/arm/include/asm/domain.h                       | 6 +++---
 xen/arch/arm/include/asm/domain_build.h                 | 4 ++--
 xen/arch/arm/include/asm/early_printk.h                 | 4 ++--
 xen/arch/arm/include/asm/elf.h                          | 6 +++---
 xen/arch/arm/include/asm/event.h                        | 4 ++--
 xen/arch/arm/include/asm/exynos4210-uart.h              | 6 +++---
 xen/arch/arm/include/asm/fixmap.h                       | 6 +++---
 xen/arch/arm/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/arm/include/asm/gic.h                          | 4 ++--
 xen/arch/arm/include/asm/gic_v3_defs.h                  | 6 +++---
 xen/arch/arm/include/asm/gic_v3_its.h                   | 4 ++--
 xen/arch/arm/include/asm/grant_table.h                  | 6 +++---
 xen/arch/arm/include/asm/guest_access.h                 | 6 +++---
 xen/arch/arm/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/arm/include/asm/guest_walk.h                   | 6 +++---
 xen/arch/arm/include/asm/hsr.h                          | 6 +++---
 xen/arch/arm/include/asm/hypercall.h                    | 6 +++---
 xen/arch/arm/include/asm/imx-lpuart.h                   | 6 +++---
 xen/arch/arm/include/asm/insn.h                         | 6 +++---
 xen/arch/arm/include/asm/io.h                           | 4 ++--
 xen/arch/arm/include/asm/iommu.h                        | 6 +++---
 xen/arch/arm/include/asm/iommu_fwspec.h                 | 6 +++---
 xen/arch/arm/include/asm/ioreq.h                        | 6 +++---
 xen/arch/arm/include/asm/irq.h                          | 6 +++---
 xen/arch/arm/include/asm/kernel.h                       | 6 +++---
 xen/arch/arm/include/asm/livepatch.h                    | 6 +++---
 xen/arch/arm/include/asm/lpae.h                         | 6 +++---
 xen/arch/arm/include/asm/macros.h                       | 4 ++--
 xen/arch/arm/include/asm/mem_access.h                   | 6 +++---
 xen/arch/arm/include/asm/mm.h                           | 6 +++---
 xen/arch/arm/include/asm/mmio.h                         | 6 +++---
 xen/arch/arm/include/asm/mmu/layout.h                   | 6 +++---
 xen/arch/arm/include/asm/mmu/mm.h                       | 6 +++---
 xen/arch/arm/include/asm/mmu/p2m.h                      | 6 +++---
 xen/arch/arm/include/asm/monitor.h                      | 6 +++---
 xen/arch/arm/include/asm/new_vgic.h                     | 6 +++---
 xen/arch/arm/include/asm/nospec.h                       | 6 +++---
 xen/arch/arm/include/asm/p2m.h                          | 6 +++---
 xen/arch/arm/include/asm/page-bits.h                    | 6 +++---
 xen/arch/arm/include/asm/page.h                         | 6 +++---
 xen/arch/arm/include/asm/pci.h                          | 6 +++---
 xen/arch/arm/include/asm/perfc.h                        | 4 ++--
 xen/arch/arm/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/arm/include/asm/pl011-uart.h                   | 6 +++---
 xen/arch/arm/include/asm/platform.h                     | 6 +++---
 xen/arch/arm/include/asm/platforms/exynos5.h            | 6 +++---
 xen/arch/arm/include/asm/platforms/midway.h             | 2 +-
 xen/arch/arm/include/asm/platforms/omap5.h              | 4 ++--
 xen/arch/arm/include/asm/platforms/vexpress.h           | 6 +++---
 xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h | 6 +++---
 xen/arch/arm/include/asm/pmap.h                         | 6 +++---
 xen/arch/arm/include/asm/processor.h                    | 6 +++---
 xen/arch/arm/include/asm/procinfo.h                     | 4 ++--
 xen/arch/arm/include/asm/psci.h                         | 6 +++---
 xen/arch/arm/include/asm/regs.h                         | 6 +++---
 xen/arch/arm/include/asm/scif-uart.h                    | 6 +++---
 xen/arch/arm/include/asm/setup.h                        | 4 ++--
 xen/arch/arm/include/asm/short-desc.h                   | 6 +++---
 xen/arch/arm/include/asm/smccc.h                        | 6 +++---
 xen/arch/arm/include/asm/smp.h                          | 4 ++--
 xen/arch/arm/include/asm/spinlock.h                     | 6 +++---
 xen/arch/arm/include/asm/static-evtchn.h                | 6 +++---
 xen/arch/arm/include/asm/static-memory.h                | 6 +++---
 xen/arch/arm/include/asm/static-shmem.h                 | 6 +++---
 xen/arch/arm/include/asm/string.h                       | 6 +++---
 xen/arch/arm/include/asm/sysregs.h                      | 6 +++---
 xen/arch/arm/include/asm/system.h                       | 4 ++--
 xen/arch/arm/include/asm/tee/ffa.h                      | 6 +++---
 xen/arch/arm/include/asm/tee/optee_msg.h                | 6 +++---
 xen/arch/arm/include/asm/tee/optee_rpc_cmd.h            | 6 +++---
 xen/arch/arm/include/asm/tee/optee_smc.h                | 6 +++---
 xen/arch/arm/include/asm/tee/tee.h                      | 6 +++---
 xen/arch/arm/include/asm/time.h                         | 6 +++---
 xen/arch/arm/include/asm/traps.h                        | 6 +++---
 xen/arch/arm/include/asm/types.h                        | 6 +++---
 xen/arch/arm/include/asm/vfp.h                          | 6 +++---
 xen/arch/arm/include/asm/vgic-emul.h                    | 6 +++---
 xen/arch/arm/include/asm/vgic.h                         | 6 +++---
 xen/arch/arm/include/asm/vpl011.h                       | 6 +++---
 xen/arch/arm/include/asm/vpsci.h                        | 6 +++---
 xen/arch/arm/include/asm/vreg.h                         | 6 +++---
 xen/arch/arm/include/asm/vtimer.h                       | 4 ++--
 xen/arch/arm/tee/ffa_private.h                          | 6 +++---
 xen/arch/arm/vgic/vgic-mmio.h                           | 4 ++--
 xen/arch/arm/vgic/vgic.h                                | 4 ++--
 xen/arch/arm/vpci.h                                     | 6 +++---
 xen/arch/arm/vuart.h                                    | 6 +++---
 xen/drivers/passthrough/arm/smmu-v3.h                   | 6 +++---
 xen/include/public/arch-arm.h                           | 6 +++---
 xen/include/public/arch-arm/hvm/save.h                  | 4 ++--
 xen/include/public/arch-arm/smccc.h                     | 6 +++---
 147 files changed, 409 insertions(+), 409 deletions(-)

diff --git a/xen/arch/arm/arm32/lib/assembler.h b/xen/arch/arm/arm32/lib/assembler.h
index 6de2638a36..a79eef420f 100644
--- a/xen/arch/arm/arm32/lib/assembler.h
+++ b/xen/arch/arm/arm32/lib/assembler.h
@@ -14,8 +14,8 @@
  *  Do not include any C declarations in this file - it is included by
  *  assembler source.
  */
-#ifndef __ASM_ASSEMBLER_H__
-#define __ASM_ASSEMBLER_H__
+#ifndef ARM__ARM32__LIB__ASSEMBLER_H
+#define ARM__ARM32__LIB__ASSEMBLER_H
 
 #ifndef __ASSEMBLY__
 #error "Only include this from assembly code"
@@ -322,4 +322,4 @@
 	.size \name , . - \name
 	.endm
 
-#endif /* __ASM_ASSEMBLER_H__ */
+#endif /* ARM__ARM32__LIB__ASSEMBLER_H */
diff --git a/xen/arch/arm/arm64/lib/assembler.h b/xen/arch/arm/arm64/lib/assembler.h
index 3f9c0dcf5d..6560fae1f5 100644
--- a/xen/arch/arm/arm64/lib/assembler.h
+++ b/xen/arch/arm/arm64/lib/assembler.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ASSEMBLER_H__
-#define __ASM_ASSEMBLER_H__
+#ifndef ARM__ARM64__LIB__ASSEMBLER_H
+#define ARM__ARM64__LIB__ASSEMBLER_H
 
 #ifndef __ASSEMBLY__
 #error "Only include this from assembly code"
@@ -9,4 +9,4 @@
 #define CPU_BE(x...)
 #define CPU_LE(x...) x
 
-#endif /* __ASM_ASSEMBLER_H__ */
+#endif /* ARM__ARM64__LIB__ASSEMBLER_H */
diff --git a/xen/arch/arm/decode.h b/xen/arch/arm/decode.h
index 13db8ac968..00e9bbe085 100644
--- a/xen/arch/arm/decode.h
+++ b/xen/arch/arm/decode.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_DECODE_H_
-#define __ARCH_ARM_DECODE_H_
+#ifndef ARM__DECODE_H
+#define ARM__DECODE_H
 
 #include <asm/regs.h>
 #include <asm/processor.h>
@@ -73,7 +73,7 @@ union instr {
 int decode_instruction(const struct cpu_user_regs *regs,
                        mmio_info_t *info);
 
-#endif /* __ARCH_ARM_DECODE_H_ */
+#endif /* ARM__DECODE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/acpi.h b/xen/arch/arm/include/asm/acpi.h
index 13756dd341..364cd671b4 100644
--- a/xen/arch/arm/include/asm/acpi.h
+++ b/xen/arch/arm/include/asm/acpi.h
@@ -19,8 +19,8 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
-#ifndef _ASM_ARM_ACPI_H
-#define _ASM_ARM_ACPI_H
+#ifndef ASM__ARM__ACPI_H
+#define ASM__ARM__ACPI_H
 
 #include <asm/setup.h>
 
@@ -78,4 +78,4 @@ static inline void enable_acpi(void)
 #define enable_acpi()
 #endif
 
-#endif /*_ASM_ARM_ACPI_H*/
+#endif /*ASM__ARM__ACPI_H*/
diff --git a/xen/arch/arm/include/asm/alternative.h b/xen/arch/arm/include/asm/alternative.h
index 22477d9497..9a03298a41 100644
--- a/xen/arch/arm/include/asm/alternative.h
+++ b/xen/arch/arm/include/asm/alternative.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ALTERNATIVE_H
-#define __ASM_ALTERNATIVE_H
+#ifndef ASM__ARM__ALTERNATIVE_H
+#define ASM__ARM__ALTERNATIVE_H
 
 #include <asm/cpufeature.h>
 #include <asm/insn.h>
@@ -218,4 +218,4 @@ alternative_endif
 #define ALTERNATIVE(oldinstr, newinstr, ...)   \
 	_ALTERNATIVE_CFG(oldinstr, newinstr, __VA_ARGS__, 1)
 
-#endif /* __ASM_ALTERNATIVE_H */
+#endif /* ASM__ARM__ALTERNATIVE_H */
diff --git a/xen/arch/arm/include/asm/arm32/atomic.h b/xen/arch/arm/include/asm/arm32/atomic.h
index 33f9e73b19..f63efd173c 100644
--- a/xen/arch/arm/include/asm/arm32/atomic.h
+++ b/xen/arch/arm/include/asm/arm32/atomic.h
@@ -8,8 +8,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __ARCH_ARM_ARM32_ATOMIC__
-#define __ARCH_ARM_ARM32_ATOMIC__
+#ifndef ASM__ARM__ARM32__ATOMIC_H
+#define ASM__ARM__ARM32__ATOMIC_H
 
 /*
  * ARMv6 UP and SMP safe atomic ops.  We use load exclusive and
@@ -164,7 +164,7 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
 	return oldval;
 }
 
-#endif /* __ARCH_ARM_ARM32_ATOMIC__ */
+#endif /* ASM__ARM__ARM32__ATOMIC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/bitops.h b/xen/arch/arm/include/asm/arm32/bitops.h
index 0d7bb12d5c..6e4018df0c 100644
--- a/xen/arch/arm/include/asm/arm32/bitops.h
+++ b/xen/arch/arm/include/asm/arm32/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM32_BITOPS_H
-#define _ARM_ARM32_BITOPS_H
+#ifndef ASM__ARM__ARM32__BITOPS_H
+#define ASM__ARM__ARM32__BITOPS_H
 
 /*
  * Little endian assembly bitops.  nr = 0 -> byte 0 bit 0.
@@ -37,4 +37,4 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
 
 #endif
 
-#endif /* _ARM_ARM32_BITOPS_H */
+#endif /* ASM__ARM__ARM32__BITOPS_H */
diff --git a/xen/arch/arm/include/asm/arm32/bug.h b/xen/arch/arm/include/asm/arm32/bug.h
index 25cce151dc..638a8be149 100644
--- a/xen/arch/arm/include/asm/arm32/bug.h
+++ b/xen/arch/arm/include/asm/arm32/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_BUG_H__
-#define __ARM_ARM32_BUG_H__
+#ifndef ASM__ARM__ARM32__BUG_H
+#define ASM__ARM__ARM32__BUG_H
 
 #include <xen/stringify.h>
 
@@ -12,4 +12,4 @@
 
 #define BUG_FN_REG r0
 
-#endif /* __ARM_ARM32_BUG_H__ */
+#endif /* ASM__ARM__ARM32__BUG_H */
diff --git a/xen/arch/arm/include/asm/arm32/cmpxchg.h b/xen/arch/arm/include/asm/arm32/cmpxchg.h
index 8455eb7cc3..13f6a9cf19 100644
--- a/xen/arch/arm/include/asm/arm32/cmpxchg.h
+++ b/xen/arch/arm/include/asm/arm32/cmpxchg.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM32_CMPXCHG_H
-#define __ASM_ARM32_CMPXCHG_H
+#ifndef ASM__ARM__ARM32__CMPXCHG_H
+#define ASM__ARM__ARM32__CMPXCHG_H
 
 #include <xen/bug.h>
 #include <xen/prefetch.h>
diff --git a/xen/arch/arm/include/asm/arm32/flushtlb.h b/xen/arch/arm/include/asm/arm32/flushtlb.h
index 61c25a3189..dfeb0f3542 100644
--- a/xen/arch/arm/include/asm/arm32/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm32/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_FLUSHTLB_H__
-#define __ASM_ARM_ARM32_FLUSHTLB_H__
+#ifndef ASM__ARM__ARM32__FLUSHTLB_H
+#define ASM__ARM__ARM32__FLUSHTLB_H
 
 /*
  * Every invalidation operation use the following patterns:
@@ -57,7 +57,7 @@ static inline void __flush_xen_tlb_one(vaddr_t va)
     asm volatile(STORE_CP32(0, TLBIMVAHIS) : : "r" (va) : "memory");
 }
 
-#endif /* __ASM_ARM_ARM32_FLUSHTLB_H__ */
+#endif /* ASM__ARM__ARM32__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/insn.h b/xen/arch/arm/include/asm/arm32/insn.h
index c800cbfff5..9693ad0606 100644
--- a/xen/arch/arm/include/asm/arm32/insn.h
+++ b/xen/arch/arm/include/asm/arm32/insn.h
@@ -13,8 +13,8 @@
   * 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 __ARCH_ARM_ARM32_INSN
-#define __ARCH_ARM_ARM32_INSN
+#ifndef ASM__ARM__ARM32__INSN_H
+#define ASM__ARM__ARM32__INSN_H
 
 #include <xen/types.h>
 
@@ -60,7 +60,7 @@ static inline uint32_t insn_set_branch_offset(uint32_t insn, int32_t offset)
     return aarch32_set_branch_offset(insn, offset);
 }
 
-#endif /* !__ARCH_ARM_ARM32_INSN */
+#endif /* !ASM__ARM__ARM32__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/io.h b/xen/arch/arm/include/asm/arm32/io.h
index 782b564809..c92dcaf1ca 100644
--- a/xen/arch/arm/include/asm/arm32/io.h
+++ b/xen/arch/arm/include/asm/arm32/io.h
@@ -18,8 +18,8 @@
  *  18-Jun-2000 RMK    Removed virt_to_* and friends definitions
  *  05-Oct-2004 BJD     Moved memory string functions to use void __iomem
  */
-#ifndef _ARM_ARM32_IO_H
-#define _ARM_ARM32_IO_H
+#ifndef ASM__ARM__ARM32__IO_H
+#define ASM__ARM__ARM32__IO_H
 
 #include <asm/system.h>
 #include <asm/byteorder.h>
@@ -113,4 +113,4 @@ static inline void writeq_relaxed_non_atomic(u64 val, volatile void __iomem *add
 #define writew(v,c)             ({ __iowmb(); writew_relaxed(v,c); })
 #define writel(v,c)             ({ __iowmb(); writel_relaxed(v,c); })
 
-#endif /* _ARM_ARM32_IO_H */
+#endif /* ASM__ARM__ARM32__IO_H */
diff --git a/xen/arch/arm/include/asm/arm32/macros.h b/xen/arch/arm/include/asm/arm32/macros.h
index db681a7c7e..dc907117a2 100644
--- a/xen/arch/arm/include/asm/arm32/macros.h
+++ b/xen/arch/arm/include/asm/arm32/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_MACROS_H
-#define __ASM_ARM_ARM32_MACROS_H
+#ifndef ASM__ARM__ARM32__MACROS_H
+#define ASM__ARM__ARM32__MACROS_H
 
 .macro ret
         mov     pc, lr
@@ -75,4 +75,4 @@
 
 #endif /* !CONFIG_EARLY_PRINTK */
 
-#endif /* __ASM_ARM_ARM32_MACROS_H */
+#endif /* ASM__ARM__ARM32__MACROS_H */
diff --git a/xen/arch/arm/include/asm/arm32/mm.h b/xen/arch/arm/include/asm/arm32/mm.h
index 856f2dbec4..4f22d9943a 100644
--- a/xen/arch/arm/include/asm/arm32/mm.h
+++ b/xen/arch/arm/include/asm/arm32/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_MM_H__
-#define __ARM_ARM32_MM_H__
+#ifndef ASM__ARM__ARM32__MM_H
+#define ASM__ARM__ARM32__MM_H
 
 #include <xen/percpu.h>
 
@@ -22,7 +22,7 @@ static inline void arch_setup_page_tables(void)
 {
 }
 
-#endif /* __ARM_ARM32_MM_H__ */
+#endif /* ASM__ARM__ARM32__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm32/nospec.h b/xen/arch/arm/include/asm/arm32/nospec.h
index be3c7712c8..ecb627b08f 100644
--- a/xen/arch/arm/include/asm/arm32/nospec.h
+++ b/xen/arch/arm/include/asm/arm32/nospec.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_ARM32_NOSPEC_H
-#define __ASM_ARM32_NOSPEC_H
+#ifndef ASM__ARM__ARM32__NOSPEC_H
+#define ASM__ARM__ARM32__NOSPEC_H
 
 #define CSDB    ".inst  0xe320f014"
 
@@ -20,7 +20,7 @@ static inline unsigned long array_index_mask_nospec(unsigned long idx,
 }
 #define array_index_mask_nospec array_index_mask_nospec
 
-#endif /* __ASM_ARM32_NOSPEC_H */
+#endif /* ASM__ARM__ARM32__NOSPEC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/page.h b/xen/arch/arm/include/asm/arm32/page.h
index 6d1ff0636c..09e631d94a 100644
--- a/xen/arch/arm/include/asm/arm32/page.h
+++ b/xen/arch/arm/include/asm/arm32/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_PAGE_H__
-#define __ARM_ARM32_PAGE_H__
+#ifndef ASM__ARM__ARM32__PAGE_H
+#define ASM__ARM__ARM32__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -89,7 +89,7 @@ static inline uint64_t gva_to_ipa_par(vaddr_t va, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_ARM32_PAGE_H__ */
+#endif /* ASM__ARM__ARM32__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm32/processor.h b/xen/arch/arm/include/asm/arm32/processor.h
index 4e679f3273..c9160c69e8 100644
--- a/xen/arch/arm/include/asm/arm32/processor.h
+++ b/xen/arch/arm/include/asm/arm32/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_PROCESSOR_H
-#define __ASM_ARM_ARM32_PROCESSOR_H
+#ifndef ASM__ARM__ARM32__PROCESSOR_H
+#define ASM__ARM__ARM32__PROCESSOR_H
 
 #define ACTLR_CAXX_SMP      (1<<6)
 
@@ -58,7 +58,7 @@ struct cpu_user_regs
 
 #endif
 
-#endif /* __ASM_ARM_ARM32_PROCESSOR_H */
+#endif /* ASM__ARM__ARM32__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/sysregs.h b/xen/arch/arm/include/asm/arm32/sysregs.h
index 22871999af..3846ca73f4 100644
--- a/xen/arch/arm/include/asm/arm32/sysregs.h
+++ b/xen/arch/arm/include/asm/arm32/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_SYSREGS_H
-#define __ASM_ARM_ARM32_SYSREGS_H
+#ifndef ASM__ARM__ARM32__SYSREGS_H
+#define ASM__ARM__ARM32__SYSREGS_H
 
 #include <xen/stringify.h>
 #include <asm/cpregs.h>
@@ -86,7 +86,7 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_ARM_ARM32_SYSREGS_H */
+#endif /* ASM__ARM__ARM32__SYSREGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/system.h b/xen/arch/arm/include/asm/arm32/system.h
index c617b40438..96060032a9 100644
--- a/xen/arch/arm/include/asm/arm32/system.h
+++ b/xen/arch/arm/include/asm/arm32/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_ARM32_SYSTEM_H
-#define __ASM_ARM32_SYSTEM_H
+#ifndef ASM__ARM__ARM32__SYSTEM_H
+#define ASM__ARM__ARM32__SYSTEM_H
 
 #include <asm/arm32/cmpxchg.h>
 
diff --git a/xen/arch/arm/include/asm/arm32/traps.h b/xen/arch/arm/include/asm/arm32/traps.h
index e3c4a8b473..c234e4c051 100644
--- a/xen/arch/arm/include/asm/arm32/traps.h
+++ b/xen/arch/arm/include/asm/arm32/traps.h
@@ -1,7 +1,7 @@
-#ifndef __ASM_ARM32_TRAPS__
-#define __ASM_ARM32_TRAPS__
+#ifndef ASM__ARM__ARM32__TRAPS_H
+#define ASM__ARM__ARM32__TRAPS_H
 
-#endif /* __ASM_ARM32_TRAPS__ */
+#endif /* ASM__ARM__ARM32__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/vfp.h b/xen/arch/arm/include/asm/arm32/vfp.h
index 2f2e4b24bb..fe17ff7b79 100644
--- a/xen/arch/arm/include/asm/arm32/vfp.h
+++ b/xen/arch/arm/include/asm/arm32/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM32_VFP_H
-#define _ARM_ARM32_VFP_H
+#ifndef ASM__ARM__ARM32__VFP_H
+#define ASM__ARM__ARM32__VFP_H
 
 #define FPEXC_EX                (1U << 31)
 #define FPEXC_EN                (1U << 30)
@@ -30,7 +30,7 @@ struct vfp_state
     uint32_t fpinst2;
 };
 
-#endif /* _ARM_ARM32_VFP_H */
+#endif /* ASM__ARM__ARM32__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/atomic.h b/xen/arch/arm/include/asm/arm64/atomic.h
index 4460165295..1d4c886a07 100644
--- a/xen/arch/arm/include/asm/arm64/atomic.h
+++ b/xen/arch/arm/include/asm/arm64/atomic.h
@@ -19,8 +19,8 @@
  * 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 __ARCH_ARM_ARM64_ATOMIC
-#define __ARCH_ARM_ARM64_ATOMIC
+#ifndef ASM__ARM__ARM64__ATOMIC_H
+#define ASM__ARM__ARM64__ATOMIC_H
 
 /*
  * AArch64 UP and SMP safe atomic ops.  We use load exclusive and
diff --git a/xen/arch/arm/include/asm/arm64/bitops.h b/xen/arch/arm/include/asm/arm64/bitops.h
index a6135838dc..93ec1bfc98 100644
--- a/xen/arch/arm/include/asm/arm64/bitops.h
+++ b/xen/arch/arm/include/asm/arm64/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM64_BITOPS_H
-#define _ARM_ARM64_BITOPS_H
+#ifndef ASM__ARM__ARM64__BITOPS_H
+#define ASM__ARM__ARM64__BITOPS_H
 
 /* Based on linux/include/asm-generic/bitops/find.h */
 
@@ -10,7 +10,7 @@
 
 #endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
 
-#endif /* _ARM_ARM64_BITOPS_H */
+#endif /* ASM__ARM__ARM64__BITOPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/brk.h b/xen/arch/arm/include/asm/arm64/brk.h
index 3af153a053..e36841d4ca 100644
--- a/xen/arch/arm/include/asm/arm64/brk.h
+++ b/xen/arch/arm/include/asm/arm64/brk.h
@@ -6,8 +6,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __ASM_ARM_ARM64_BRK
-#define __ASM_ARM_ARM64_BRK
+#ifndef ASM__ARM__ARM64__BRK_H
+#define ASM__ARM__ARM64__BRK_H
 
 /*
  * #imm16 values used for BRK instruction generation
@@ -28,7 +28,7 @@
  */
 #define AARCH64_BREAK_FAULT (AARCH64_BREAK_MON | (BRK_FAULT_IMM << 5))
 
-#endif /* !__ASM_ARM_ARM64_BRK */
+#endif /* !ASM__ARM__ARM64__BRK_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/bug.h b/xen/arch/arm/include/asm/arm64/bug.h
index 5e11c0dfd5..aedd7c20a7 100644
--- a/xen/arch/arm/include/asm/arm64/bug.h
+++ b/xen/arch/arm/include/asm/arm64/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_BUG_H__
-#define __ARM_ARM64_BUG_H__
+#ifndef ASM__ARM__ARM64__BUG_H
+#define ASM__ARM__ARM64__BUG_H
 
 #include <xen/stringify.h>
 #include <asm/arm64/brk.h>
@@ -8,4 +8,4 @@
 
 #define BUG_FN_REG x0
 
-#endif /* __ARM_ARM64_BUG_H__ */
+#endif /* ASM__ARM__ARM64__BUG_H */
diff --git a/xen/arch/arm/include/asm/arm64/cmpxchg.h b/xen/arch/arm/include/asm/arm64/cmpxchg.h
index f160e8e7bc..40db44da13 100644
--- a/xen/arch/arm/include/asm/arm64/cmpxchg.h
+++ b/xen/arch/arm/include/asm/arm64/cmpxchg.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM64_CMPXCHG_H
-#define __ASM_ARM64_CMPXCHG_H
+#ifndef ASM__ARM__ARM64__CMPXCHG_H
+#define ASM__ARM__ARM64__CMPXCHG_H
 
 #include <xen/bug.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/cpufeature.h b/xen/arch/arm/include/asm/arm64/cpufeature.h
index 1bb503e857..52cc65f307 100644
--- a/xen/arch/arm/include/asm/arm64/cpufeature.h
+++ b/xen/arch/arm/include/asm/arm64/cpufeature.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_CPUFEATURES_H
-#define __ASM_ARM_ARM64_CPUFEATURES_H
+#ifndef ASM__ARM__ARM64__CPUFEATURE_H
+#define ASM__ARM__ARM64__CPUFEATURE_H
 
 /*
  * CPU feature register tracking
diff --git a/xen/arch/arm/include/asm/arm64/efibind.h b/xen/arch/arm/include/asm/arm64/efibind.h
index a1323d452e..cdc25f9a9c 100644
--- a/xen/arch/arm/include/asm/arm64/efibind.h
+++ b/xen/arch/arm/include/asm/arm64/efibind.h
@@ -16,8 +16,8 @@ Abstract:
 Revision History
 
 --*/
-#ifndef AARCH64_EFI_BIND
-#define AARCH64_EFI_BIND
+#ifndef ASM__ARM__ARM64__EFIBIND_H
+#define ASM__ARM__ARM64__EFIBIND_H
 #ifndef __GNUC__
 #pragma pack()
 #endif
diff --git a/xen/arch/arm/include/asm/arm64/flushtlb.h b/xen/arch/arm/include/asm/arm64/flushtlb.h
index 45642201d1..90b8187ef1 100644
--- a/xen/arch/arm/include/asm/arm64/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm64/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_FLUSHTLB_H__
-#define __ASM_ARM_ARM64_FLUSHTLB_H__
+#ifndef ASM__ARM__ARM64__FLUSHTLB_H
+#define ASM__ARM__ARM64__FLUSHTLB_H
 
 /*
  * Every invalidation operation use the following patterns:
@@ -90,7 +90,7 @@ TLB_HELPER_VA(__flush_xen_tlb_one, vae2is)
 #undef TLB_HELPER
 #undef TLB_HELPER_VA
 
-#endif /* __ASM_ARM_ARM64_FLUSHTLB_H__ */
+#endif /* ASM__ARM__ARM64__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/hsr.h b/xen/arch/arm/include/asm/arm64/hsr.h
index 1495ccddea..7d89eca4b1 100644
--- a/xen/arch/arm/include/asm/arm64/hsr.h
+++ b/xen/arch/arm/include/asm/arm64/hsr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_HSR_H
-#define __ASM_ARM_ARM64_HSR_H
+#ifndef ASM__ARM__ARM64__HSR_H
+#define ASM__ARM__ARM64__HSR_H
 
 /* AArch 64 System Register Encodings */
 #define __HSR_SYSREG_c0  0
@@ -150,7 +150,7 @@
 #define HSR_SYSREG_ID_AA64AFR1_EL1   HSR_SYSREG(3,0,c0,c5,5)
 #define HSR_SYSREG_ID_AA64ZFR0_EL1   HSR_SYSREG(3,0,c0,c4,4)
 
-#endif /* __ASM_ARM_ARM64_HSR_H */
+#endif /* ASM__ARM__ARM64__HSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/insn.h b/xen/arch/arm/include/asm/arm64/insn.h
index ab290030ab..bd701e96c5 100644
--- a/xen/arch/arm/include/asm/arm64/insn.h
+++ b/xen/arch/arm/include/asm/arm64/insn.h
@@ -16,8 +16,8 @@
  * 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 __ARCH_ARM_ARM64_INSN
-#define __ARCH_ARM_ARM64_INSN
+#ifndef ASM__ARM__ARM64__INSN_H
+#define ASM__ARM__ARM64__INSN_H
 
 #include <xen/types.h>
 #include <xen/stdbool.h>
@@ -99,7 +99,7 @@ static inline uint32_t insn_set_branch_offset(uint32_t insn, int32_t offset)
     return aarch64_set_branch_offset(insn, offset);
 }
 
-#endif /* !__ARCH_ARM_ARM64_INSN */
+#endif /* !ASM__ARM__ARM64__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/io.h b/xen/arch/arm/include/asm/arm64/io.h
index 2e2ab24f78..607d2501f4 100644
--- a/xen/arch/arm/include/asm/arm64/io.h
+++ b/xen/arch/arm/include/asm/arm64/io.h
@@ -17,8 +17,8 @@
  * 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 _ARM_ARM64_IO_H
-#define _ARM_ARM64_IO_H
+#ifndef ASM__ARM__ARM64__IO_H
+#define ASM__ARM__ARM64__IO_H
 
 #include <asm/system.h>
 #include <asm/byteorder.h>
@@ -147,4 +147,4 @@ static inline void emulate_write(u64 addr)
 #define outw(v, c) ( emulate_write(c) )
 #define outl(v, c) ( emulate_write(c) )
 
-#endif /* _ARM_ARM64_IO_H */
+#endif /* ASM__ARM__ARM64__IO_H */
diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
index 46f50655ad..968198bceb 100644
--- a/xen/arch/arm/include/asm/arm64/macros.h
+++ b/xen/arch/arm/include/asm/arm64/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_MACROS_H
-#define __ASM_ARM_ARM64_MACROS_H
+#ifndef ASM__ARM__ARM64__MACROS_H
+#define ASM__ARM__ARM64__MACROS_H
 
     /*
      * @dst: Result of get_cpu_info()
@@ -96,5 +96,5 @@
  */
 lr      .req    x30             /* link register */
 
-#endif /* __ASM_ARM_ARM64_MACROS_H */
+#endif /* ASM__ARM__ARM64__MACROS_H */
 
diff --git a/xen/arch/arm/include/asm/arm64/mm.h b/xen/arch/arm/include/asm/arm64/mm.h
index b4f7545d2c..b79fd4d2cd 100644
--- a/xen/arch/arm/include/asm/arm64/mm.h
+++ b/xen/arch/arm/include/asm/arm64/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_MM_H__
-#define __ARM_ARM64_MM_H__
+#ifndef ASM__ARM__ARM64__MM_H
+#define ASM__ARM__ARM64__MM_H
 
 extern DEFINE_PAGE_TABLE(xen_pgtable);
 
@@ -16,7 +16,7 @@ void arch_setup_page_tables(void);
 
 void update_boot_mapping(bool enable);
 
-#endif /* __ARM_ARM64_MM_H__ */
+#endif /* ASM__ARM__ARM64__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/nospec.h b/xen/arch/arm/include/asm/arm64/nospec.h
index 2364ca692b..dc8d5aacb4 100644
--- a/xen/arch/arm/include/asm/arm64/nospec.h
+++ b/xen/arch/arm/include/asm/arm64/nospec.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm64 */
-#ifndef __ASM_ARM64_NOSPEC_H
-#define __ASM_ARM64_NOSPEC_H
+#ifndef ASM__ARM__ARM64__NOSPEC_H
+#define ASM__ARM__ARM64__NOSPEC_H
 
 #define csdb()  asm volatile ( "hint #20" : : : "memory" )
 
@@ -24,7 +24,7 @@ static inline unsigned long array_index_mask_nospec(unsigned long idx,
 }
 #define array_index_mask_nospec array_index_mask_nospec
 
-#endif /* __ASM_ARM64_NOSPEC_H */
+#endif /* ASM__ARM__ARM64__NOSPEC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/page.h b/xen/arch/arm/include/asm/arm64/page.h
index e944985ee0..8fc0275290 100644
--- a/xen/arch/arm/include/asm/arm64/page.h
+++ b/xen/arch/arm/include/asm/arm64/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_PAGE_H__
-#define __ARM_ARM64_PAGE_H__
+#ifndef ASM__ARM__ARM64__PAGE_H
+#define ASM__ARM__ARM64__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -79,7 +79,7 @@ extern void clear_page(void *to);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_ARM64_PAGE_H__ */
+#endif /* ASM__ARM__ARM64__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/processor.h b/xen/arch/arm/include/asm/arm64/processor.h
index c749f80ad9..965e9f44f7 100644
--- a/xen/arch/arm/include/asm/arm64/processor.h
+++ b/xen/arch/arm/include/asm/arm64/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_PROCESSOR_H
-#define __ASM_ARM_ARM64_PROCESSOR_H
+#ifndef ASM__ARM__ARM64__PROCESSOR_H
+#define ASM__ARM__ARM64__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 
@@ -88,7 +88,7 @@ struct cpu_user_regs
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_ARM_ARM64_PROCESSOR_H */
+#endif /* ASM__ARM__ARM64__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/sve.h b/xen/arch/arm/include/asm/arm64/sve.h
index a71d6a295d..155dd27766 100644
--- a/xen/arch/arm/include/asm/arm64/sve.h
+++ b/xen/arch/arm/include/asm/arm64/sve.h
@@ -5,8 +5,8 @@
  * Copyright (C) 2022 ARM Ltd.
  */
 
-#ifndef _ARM_ARM64_SVE_H
-#define _ARM_ARM64_SVE_H
+#ifndef ASM__ARM__ARM64__SVE_H
+#define ASM__ARM__ARM64__SVE_H
 
 #include <xen/sched.h>
 
@@ -60,7 +60,7 @@ static inline unsigned int get_sys_vl_len(void)
 
 #endif /* CONFIG_ARM64_SVE */
 
-#endif /* _ARM_ARM64_SVE_H */
+#endif /* ASM__ARM__ARM64__SVE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/sysregs.h b/xen/arch/arm/include/asm/arm64/sysregs.h
index b593e4028b..ee2b2172db 100644
--- a/xen/arch/arm/include/asm/arm64/sysregs.h
+++ b/xen/arch/arm/include/asm/arm64/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_SYSREGS_H
-#define __ASM_ARM_ARM64_SYSREGS_H
+#ifndef ASM__ARM__ARM64__SYSREGS_H
+#define ASM__ARM__ARM64__SYSREGS_H
 
 #include <xen/stringify.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/system.h b/xen/arch/arm/include/asm/arm64/system.h
index 2e2ee212a1..d96a17c30d 100644
--- a/xen/arch/arm/include/asm/arm64/system.h
+++ b/xen/arch/arm/include/asm/arm64/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm64 */
-#ifndef __ASM_ARM64_SYSTEM_H
-#define __ASM_ARM64_SYSTEM_H
+#ifndef ASM__ARM__ARM64__SYSTEM_H
+#define ASM__ARM__ARM64__SYSTEM_H
 
 #include <asm/arm64/cmpxchg.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/traps.h b/xen/arch/arm/include/asm/arm64/traps.h
index a347cb13d6..2d11192d22 100644
--- a/xen/arch/arm/include/asm/arm64/traps.h
+++ b/xen/arch/arm/include/asm/arm64/traps.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM64_TRAPS__
-#define __ASM_ARM64_TRAPS__
+#ifndef ASM__ARM__ARM64__TRAPS_H
+#define ASM__ARM__ARM64__TRAPS_H
 
 void inject_undef64_exception(struct cpu_user_regs *regs, int instr_len);
 
@@ -8,7 +8,7 @@ void do_sysreg(struct cpu_user_regs *regs,
 
 void do_bad_mode(struct cpu_user_regs *regs, int reason);
 
-#endif /* __ASM_ARM64_TRAPS__ */
+#endif /* ASM__ARM__ARM64__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/vfp.h b/xen/arch/arm/include/asm/arm64/vfp.h
index 4b399ccbfb..145b2803ec 100644
--- a/xen/arch/arm/include/asm/arm64/vfp.h
+++ b/xen/arch/arm/include/asm/arm64/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM64_VFP_H
-#define _ARM_ARM64_VFP_H
+#ifndef ASM__ARM__ARM64__VFP_H
+#define ASM__ARM__ARM64__VFP_H
 
 /* ARM64 VFP instruction requires fpregs address to be 128-byte aligned */
 #define __vfp_aligned __attribute__((aligned(16)))
@@ -28,7 +28,7 @@ struct vfp_state
     register_t fpsr;
 };
 
-#endif /* _ARM_ARM64_VFP_H */
+#endif /* ASM__ARM__ARM64__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
index 47efdf5234..c3e136b240 100644
--- a/xen/arch/arm/include/asm/asm_defns.h
+++ b/xen/arch/arm/include/asm/asm_defns.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ASM_DEFNS_H__
-#define __ARM_ASM_DEFNS_H__
+#ifndef ASM__ARM__ASM_DEFNS_H
+#define ASM__ARM__ASM_DEFNS_H
 
 #ifndef COMPILE_OFFSETS
 /* NB. Auto-generated from arch/.../asm-offsets.c */
@@ -28,7 +28,7 @@
 label:  .asciz msg;                             \
 .popsection
 
-#endif /* __ARM_ASM_DEFNS_H__ */
+#endif /* ASM__ARM__ASM_DEFNS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/atomic.h b/xen/arch/arm/include/asm/atomic.h
index 517216d2a8..1af5ee851f 100644
--- a/xen/arch/arm/include/asm/atomic.h
+++ b/xen/arch/arm/include/asm/atomic.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_ATOMIC__
-#define __ARCH_ARM_ATOMIC__
+#ifndef ASM__ARM__ATOMIC_H
+#define ASM__ARM__ATOMIC_H
 
 #include <xen/atomic.h>
 #include <xen/prefetch.h>
@@ -227,7 +227,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
 
 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
 
-#endif /* __ARCH_ARM_ATOMIC__ */
+#endif /* ASM__ARM__ATOMIC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/bitops.h b/xen/arch/arm/include/asm/bitops.h
index f163d9bb45..001e2960c4 100644
--- a/xen/arch/arm/include/asm/bitops.h
+++ b/xen/arch/arm/include/asm/bitops.h
@@ -6,8 +6,8 @@
  *  reworked by rmk.
  */
 
-#ifndef _ARM_BITOPS_H
-#define _ARM_BITOPS_H
+#ifndef ASM__ARM__BITOPS_H
+#define ASM__ARM__BITOPS_H
 
 #include <xen/macros.h>
 
@@ -78,7 +78,7 @@ bool clear_mask16_timeout(uint16_t mask, volatile void *p,
 #define arch_fls(x)  ((x) ? 32 - __builtin_clz(x) : 0)
 #define arch_flsl(x) ((x) ? BITS_PER_LONG - __builtin_clzl(x) : 0)
 
-#endif /* _ARM_BITOPS_H */
+#endif /* ASM__ARM__BITOPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/bug.h b/xen/arch/arm/include/asm/bug.h
index cacaf014ab..19d4645984 100644
--- a/xen/arch/arm/include/asm/bug.h
+++ b/xen/arch/arm/include/asm/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_BUG_H__
-#define __ARM_BUG_H__
+#ifndef ASM__ARM__BUG_H
+#define ASM__ARM__BUG_H
 
 #include <xen/types.h>
 
@@ -82,7 +82,7 @@ struct bug_frame {
     unreachable();                                              \
 } while (0)
 
-#endif /* __ARM_BUG_H__ */
+#endif /* ASM__ARM__BUG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/byteorder.h b/xen/arch/arm/include/asm/byteorder.h
index 9c712c4788..0a564c6aa3 100644
--- a/xen/arch/arm/include/asm/byteorder.h
+++ b/xen/arch/arm/include/asm/byteorder.h
@@ -1,11 +1,11 @@
-#ifndef __ASM_ARM_BYTEORDER_H__
-#define __ASM_ARM_BYTEORDER_H__
+#ifndef ASM__ARM__BYTEORDER_H
+#define ASM__ARM__BYTEORDER_H
 
 #define __BYTEORDER_HAS_U64__
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_ARM_BYTEORDER_H__ */
+#endif /* ASM__ARM__BYTEORDER_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cache.h b/xen/arch/arm/include/asm/cache.h
index b75c970b68..e60a27498d 100644
--- a/xen/arch/arm/include/asm/cache.h
+++ b/xen/arch/arm/include/asm/cache.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_CACHE_H
-#define __ARCH_ARM_CACHE_H
+#ifndef ASM__ARM__CACHE_H
+#define ASM__ARM__CACHE_H
 
 
 /* L1 cache line size */
diff --git a/xen/arch/arm/include/asm/cadence-uart.h b/xen/arch/arm/include/asm/cadence-uart.h
index 48680eea4b..7107ad3e0c 100644
--- a/xen/arch/arm/include/asm/cadence-uart.h
+++ b/xen/arch/arm/include/asm/cadence-uart.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_CADENCE_UART_H__
-#define __ASM_ARM_CADENCE_UART_H__
+#ifndef ASM__ARM__CADENCE_UART_H
+#define ASM__ARM__CADENCE_UART_H
 
 #define R_UART_CR    0x00
 #define UART_CR_RX_RST       0x01
diff --git a/xen/arch/arm/include/asm/config.h b/xen/arch/arm/include/asm/config.h
index a2e22b659d..25a014f480 100644
--- a/xen/arch/arm/include/asm/config.h
+++ b/xen/arch/arm/include/asm/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __ARM_CONFIG_H__
-#define __ARM_CONFIG_H__
+#ifndef ASM__ARM__CONFIG_H
+#define ASM__ARM__CONFIG_H
 
 #if defined(CONFIG_ARM_64)
 # define LONG_BYTEORDER 3
@@ -92,7 +92,7 @@ extern unsigned long frametable_virt_end;
 #include <asm/macros.h>
 #endif
 
-#endif /* __ARM_CONFIG_H__ */
+#endif /* ASM__ARM__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
index aec9e8f329..0732cce1f3 100644
--- a/xen/arch/arm/include/asm/cpregs.h
+++ b/xen/arch/arm/include/asm/cpregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_CPREGS_H
-#define __ASM_ARM_CPREGS_H
+#ifndef ASM__ARM__CPREGS_H
+#define ASM__ARM__CPREGS_H
 
 /*
  * AArch32 Co-processor registers.
diff --git a/xen/arch/arm/include/asm/cpuerrata.h b/xen/arch/arm/include/asm/cpuerrata.h
index 8d7e7b9375..8c9e3e0104 100644
--- a/xen/arch/arm/include/asm/cpuerrata.h
+++ b/xen/arch/arm/include/asm/cpuerrata.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_CPUERRATA_H__
-#define __ARM_CPUERRATA_H__
+#ifndef ASM__ARM__CPUERRATA_H
+#define ASM__ARM__CPUERRATA_H
 
 #include <asm/cpufeature.h>
 #include <asm/alternative.h>
@@ -74,7 +74,7 @@ static inline enum ssbd_state get_ssbd_state(void)
 
 #endif
 
-#endif /* __ARM_CPUERRATA_H__ */
+#endif /* ASM__ARM__CPUERRATA_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cpufeature.h b/xen/arch/arm/include/asm/cpufeature.h
index 969e043f5b..b9f42beac7 100644
--- a/xen/arch/arm/include/asm/cpufeature.h
+++ b/xen/arch/arm/include/asm/cpufeature.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_CPUFEATURE_H
-#define __ASM_ARM_CPUFEATURE_H
+#ifndef ASM__ARM__CPUFEATURE_H
+#define ASM__ARM__CPUFEATURE_H
 
 #ifdef CONFIG_ARM_64
 #define cpu_feature64(c, feat)         ((c)->pfr64.feat)
diff --git a/xen/arch/arm/include/asm/current.h b/xen/arch/arm/include/asm/current.h
index 0be7ad6ef9..226cf953d7 100644
--- a/xen/arch/arm/include/asm/current.h
+++ b/xen/arch/arm/include/asm/current.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_CURRENT_H__
-#define __ARM_CURRENT_H__
+#ifndef ASM__ARM__CURRENT_H
+#define ASM__ARM__CURRENT_H
 
 #include <xen/page-size.h>
 #include <xen/percpu.h>
@@ -65,7 +65,7 @@ do {                                                    \
 
 #endif
 
-#endif /* __ARM_CURRENT_H__ */
+#endif /* ASM__ARM__CURRENT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/div64.h b/xen/arch/arm/include/asm/div64.h
index 8fe17f0ff2..627583f04f 100644
--- a/xen/arch/arm/include/asm/div64.h
+++ b/xen/arch/arm/include/asm/div64.h
@@ -1,6 +1,6 @@
 /* Taken from Linux arch/arm */
-#ifndef __ASM_ARM_DIV64
-#define __ASM_ARM_DIV64
+#ifndef ASM__ARM__DIV64_H
+#define ASM__ARM__DIV64_H
 
 #include <asm/system.h>
 #include <xen/types.h>
diff --git a/xen/arch/arm/include/asm/dom0less-build.h b/xen/arch/arm/include/asm/dom0less-build.h
index 5864944bda..48c5c85ead 100644
--- a/xen/arch/arm/include/asm/dom0less-build.h
+++ b/xen/arch/arm/include/asm/dom0less-build.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_DOM0LESS_BUILD_H_
-#define __ASM_DOM0LESS_BUILD_H_
+#ifndef ASM__ARM__DOM0LESS_BUILD_H
+#define ASM__ARM__DOM0LESS_BUILD_H
 
 #include <xen/stdbool.h>
 
@@ -20,7 +20,7 @@ static inline bool is_dom0less_mode(void)
 
 #endif /* CONFIG_DOM0LESS_BOOT */
 
-#endif /* __ASM_DOM0LESS_BUILD_H_ */
+#endif /* ASM__ARM__DOM0LESS_BUILD_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index f1d72c6e48..f27353d9c8 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_H__
-#define __ASM_DOMAIN_H__
+#ifndef ASM__ARM__DOMAIN_H
+#define ASM__ARM__DOMAIN_H
 
 #include <xen/cache.h>
 #include <xen/timer.h>
@@ -310,7 +310,7 @@ static inline void update_guest_memory_policy(struct vcpu *v,
                                               struct guest_memory_policy *gmp)
 {}
 
-#endif /* __ASM_DOMAIN_H__ */
+#endif /* ASM__ARM__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/domain_build.h b/xen/arch/arm/include/asm/domain_build.h
index e712afbc7f..740a45f964 100644
--- a/xen/arch/arm/include/asm/domain_build.h
+++ b/xen/arch/arm/include/asm/domain_build.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_BUILD_H__
-#define __ASM_DOMAIN_BUILD_H__
+#ifndef ASM__ARM__DOMAIN_BUILD_H
+#define ASM__ARM__DOMAIN_BUILD_H
 
 #include <xen/sched.h>
 #include <asm/kernel.h>
diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
index 46a5e562dd..5dc65483f1 100644
--- a/xen/arch/arm/include/asm/early_printk.h
+++ b/xen/arch/arm/include/asm/early_printk.h
@@ -7,8 +7,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __ARM_EARLY_PRINTK_H__
-#define __ARM_EARLY_PRINTK_H__
+#ifndef ASM__ARM__EARLY_PRINTK_H
+#define ASM__ARM__EARLY_PRINTK_H
 
 #include <xen/page-size.h>
 #include <asm/fixmap.h>
diff --git a/xen/arch/arm/include/asm/elf.h b/xen/arch/arm/include/asm/elf.h
index 9e436e7556..d55e8a1912 100644
--- a/xen/arch/arm/include/asm/elf.h
+++ b/xen/arch/arm/include/asm/elf.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ELF_H__
-#define __ARM_ELF_H__
+#ifndef ASM__ARM__ELF_H
+#define ASM__ARM__ELF_H
 
 typedef struct {
     unsigned long r0;
@@ -20,7 +20,7 @@ typedef struct {
     unsigned long pc;
 } ELF_Gregset;
 
-#endif /* __ARM_ELF_H__ */
+#endif /* ASM__ARM__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/event.h b/xen/arch/arm/include/asm/event.h
index b14c166ad6..c0088bbb64 100644
--- a/xen/arch/arm/include/asm/event.h
+++ b/xen/arch/arm/include/asm/event.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_EVENT_H__
-#define __ASM_EVENT_H__
+#ifndef ASM__ARM__EVENT_H
+#define ASM__ARM__EVENT_H
 
 #include <asm/domain.h>
 
diff --git a/xen/arch/arm/include/asm/exynos4210-uart.h b/xen/arch/arm/include/asm/exynos4210-uart.h
index e2ab4a43e4..21afc9e3f3 100644
--- a/xen/arch/arm/include/asm/exynos4210-uart.h
+++ b/xen/arch/arm/include/asm/exynos4210-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_EXYNOS4210_H
-#define __ASM_ARM_EXYNOS4210_H
+#ifndef ASM__ARM__EXYNOS4210_UART_H
+#define ASM__ARM__EXYNOS4210_UART_H
 
 
 /*
@@ -100,7 +100,7 @@
 #define UINTM_RXD       (1 << 0)
 #define UINTM_ALLI      (UINTM_MODEM | UINTM_TXD | UINTM_ERROR | UINTM_RXD)
 
-#endif /* __ASM_ARM_EXYNOS4210_H */
+#endif /* ASM__ARM__EXYNOS4210_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/fixmap.h b/xen/arch/arm/include/asm/fixmap.h
index 0cb5d54d1c..da6bf72bec 100644
--- a/xen/arch/arm/include/asm/fixmap.h
+++ b/xen/arch/arm/include/asm/fixmap.h
@@ -1,8 +1,8 @@
 /*
  * fixmap.h: compile-time virtual memory allocation
  */
-#ifndef __ASM_FIXMAP_H
-#define __ASM_FIXMAP_H
+#ifndef ASM__ARM__FIXMAP_H
+#define ASM__ARM__FIXMAP_H
 
 #include <xen/acpi.h>
 #include <xen/pmap.h>
@@ -45,4 +45,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_FIXMAP_H */
+#endif /* ASM__ARM__FIXMAP_H */
diff --git a/xen/arch/arm/include/asm/flushtlb.h b/xen/arch/arm/include/asm/flushtlb.h
index e45fb6d97b..2239acf4fc 100644
--- a/xen/arch/arm/include/asm/flushtlb.h
+++ b/xen/arch/arm/include/asm/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_FLUSHTLB_H__
-#define __ASM_ARM_FLUSHTLB_H__
+#ifndef ASM__ARM__FLUSHTLB_H
+#define ASM__ARM__FLUSHTLB_H
 
 #include <xen/cpumask.h>
 
@@ -68,7 +68,7 @@ static inline void flush_xen_tlb_range_va(vaddr_t va,
     isb();
 }
 
-#endif /* __ASM_ARM_FLUSHTLB_H__ */
+#endif /* ASM__ARM__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 541f0eeb80..edbeba6388 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_GIC_H__
-#define __ASM_ARM_GIC_H__
+#ifndef ASM__ARM__GIC_H
+#define ASM__ARM__GIC_H
 
 #define NR_GIC_LOCAL_IRQS  NR_LOCAL_IRQS
 #define NR_GIC_SGI         16
diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/asm/gic_v3_defs.h
index 2af093e774..39c594470b 100644
--- a/xen/arch/arm/include/asm/gic_v3_defs.h
+++ b/xen/arch/arm/include/asm/gic_v3_defs.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_GIC_V3_DEFS_H__
-#define __ASM_ARM_GIC_V3_DEFS_H__
+#ifndef ASM__ARM__GIC_V3_DEFS_H
+#define ASM__ARM__GIC_V3_DEFS_H
 
 #include <xen/sizes.h>
 
@@ -210,7 +210,7 @@ struct rdist_region {
     bool single_rdist;
 };
 
-#endif /* __ASM_ARM_GIC_V3_DEFS_H__ */
+#endif /* ASM__ARM__GIC_V3_DEFS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/gic_v3_its.h b/xen/arch/arm/include/asm/gic_v3_its.h
index c24d4752d0..f34b803f66 100644
--- a/xen/arch/arm/include/asm/gic_v3_its.h
+++ b/xen/arch/arm/include/asm/gic_v3_its.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_ITS_H__
-#define __ASM_ARM_ITS_H__
+#ifndef ASM__ARM__GIC_V3_ITS_H
+#define ASM__ARM__GIC_V3_ITS_H
 
 #define GITS_CTLR                       0x000
 #define GITS_IIDR                       0x004
diff --git a/xen/arch/arm/include/asm/grant_table.h b/xen/arch/arm/include/asm/grant_table.h
index d3c518a926..b104fc890c 100644
--- a/xen/arch/arm/include/asm/grant_table.h
+++ b/xen/arch/arm/include/asm/grant_table.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_GRANT_TABLE_H__
-#define __ASM_GRANT_TABLE_H__
+#ifndef ASM__ARM__GRANT_TABLE_H
+#define ASM__ARM__GRANT_TABLE_H
 
 #include <xen/grant_table.h>
 #include <xen/kernel.h>
@@ -76,7 +76,7 @@ int replace_grant_host_mapping(uint64_t gpaddr, mfn_t frame,
 #define gnttab_need_iommu_mapping(d)                    \
     (is_domain_direct_mapped(d) && is_iommu_enabled(d))
 
-#endif /* __ASM_GRANT_TABLE_H__ */
+#endif /* ASM__ARM__GRANT_TABLE_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_access.h b/xen/arch/arm/include/asm/guest_access.h
index 18c88b70d7..2deaf968f9 100644
--- a/xen/arch/arm/include/asm/guest_access.h
+++ b/xen/arch/arm/include/asm/guest_access.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_GUEST_ACCESS_H__
-#define __ASM_ARM_GUEST_ACCESS_H__
+#ifndef ASM__ARM__GUEST_ACCESS_H
+#define ASM__ARM__GUEST_ACCESS_H
 
 #include <xen/errno.h>
 #include <xen/sched.h>
@@ -31,7 +31,7 @@ int access_guest_memory_by_gpa(struct domain *d, paddr_t gpa, void *buf,
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_ARM_GUEST_ACCESS_H__ */
+#endif /* ASM__ARM__GUEST_ACCESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_atomics.h b/xen/arch/arm/include/asm/guest_atomics.h
index 8893eb9a55..29fc05f5e7 100644
--- a/xen/arch/arm/include/asm/guest_atomics.h
+++ b/xen/arch/arm/include/asm/guest_atomics.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_GUEST_ATOMICS_H
-#define _ARM_GUEST_ATOMICS_H
+#ifndef ASM__ARM__GUEST_ATOMICS_H
+#define ASM__ARM__GUEST_ATOMICS_H
 
 #include <xen/bitops.h>
 #include <xen/sched.h>
@@ -137,7 +137,7 @@ static inline uint64_t guest_cmpxchg64(struct domain *d,
     return oldval;
 }
 
-#endif /* _ARM_GUEST_ATOMICS_H */
+#endif /* ASM__ARM__GUEST_ATOMICS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_walk.h b/xen/arch/arm/include/asm/guest_walk.h
index 8768ac9894..2be96d9020 100644
--- a/xen/arch/arm/include/asm/guest_walk.h
+++ b/xen/arch/arm/include/asm/guest_walk.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_GUEST_WALK_H
-#define _XEN_GUEST_WALK_H
+#ifndef ASM__ARM__GUEST_WALK_H
+#define ASM__ARM__GUEST_WALK_H
 
 /* Walk the guest's page tables in software. */
 bool guest_walk_tables(const struct vcpu *v,
@@ -7,7 +7,7 @@ bool guest_walk_tables(const struct vcpu *v,
                        paddr_t *ipa,
                        unsigned int *perms);
 
-#endif /* _XEN_GUEST_WALK_H */
+#endif /* ASM__ARM__GUEST_WALK_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/hsr.h b/xen/arch/arm/include/asm/hsr.h
index 9b91b28c48..d3e7b70835 100644
--- a/xen/arch/arm/include/asm/hsr.h
+++ b/xen/arch/arm/include/asm/hsr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_HSR_H
-#define __ASM_ARM_HSR_H
+#ifndef ASM__ARM__HSR_H
+#define ASM__ARM__HSR_H
 
 #include <xen/types.h>
 
@@ -205,7 +205,7 @@ union hsr {
 /* HSR.EC == HSR_{HVC32, HVC64, SMC64, SVC32, SVC64} */
 #define HSR_XXC_IMM_MASK     (0xffff)
 
-#endif /* __ASM_ARM_HSR_H */
+#endif /* ASM__ARM__HSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/hypercall.h b/xen/arch/arm/include/asm/hypercall.h
index 0a23f8d484..95d38206b6 100644
--- a/xen/arch/arm/include/asm/hypercall.h
+++ b/xen/arch/arm/include/asm/hypercall.h
@@ -3,15 +3,15 @@
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_ARM_HYPERCALL_H__
-#define __ASM_ARM_HYPERCALL_H__
+#ifndef ASM__ARM__HYPERCALL_H
+#define ASM__ARM__HYPERCALL_H
 
 #include <public/domctl.h> /* for arch_do_domctl */
 
 long subarch_do_domctl(struct xen_domctl *domctl, struct domain *d,
                        XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
 
-#endif /* __ASM_ARM_HYPERCALL_H__ */
+#endif /* ASM__ARM__HYPERCALL_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/imx-lpuart.h b/xen/arch/arm/include/asm/imx-lpuart.h
index fe859045dc..1e074649cf 100644
--- a/xen/arch/arm/include/asm/imx-lpuart.h
+++ b/xen/arch/arm/include/asm/imx-lpuart.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_IMX_LPUART_H__
-#define __ASM_ARM_IMX_LPUART_H__
+#ifndef ASM__ARM__IMX_LPUART_H
+#define ASM__ARM__IMX_LPUART_H
 
 /* 32-bit register definition */
 #define UARTBAUD          (0x10)
@@ -52,7 +52,7 @@
 
 #define UARTWATER_RXCNT_OFF     24
 
-#endif /* __ASM_ARM_IMX_LPUART_H__ */
+#endif /* ASM__ARM__IMX_LPUART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/insn.h b/xen/arch/arm/include/asm/insn.h
index 27271e95f9..8aa66b2e95 100644
--- a/xen/arch/arm/include/asm/insn.h
+++ b/xen/arch/arm/include/asm/insn.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_INSN
-#define __ARCH_ARM_INSN
+#ifndef ASM__ARM__INSN_H
+#define ASM__ARM__INSN_H
 
 #ifndef __ASSEMBLY__
 
@@ -18,7 +18,7 @@
 /* On ARM32,64 instructions are always 4 bytes long. */
 #define ARCH_PATCH_INSN_SIZE 4
 
-#endif /* !__ARCH_ARM_INSN */
+#endif /* !ASM__ARM__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/io.h b/xen/arch/arm/include/asm/io.h
index e426804424..2475fca9de 100644
--- a/xen/arch/arm/include/asm/io.h
+++ b/xen/arch/arm/include/asm/io.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
+#ifndef ASM__ARM__IO_H
+#define ASM__ARM__IO_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/io.h>
diff --git a/xen/arch/arm/include/asm/iommu.h b/xen/arch/arm/include/asm/iommu.h
index d57bd8a38c..eba17ec695 100644
--- a/xen/arch/arm/include/asm/iommu.h
+++ b/xen/arch/arm/include/asm/iommu.h
@@ -11,8 +11,8 @@
  * 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 __ARCH_ARM_IOMMU_H__
-#define __ARCH_ARM_IOMMU_H__
+#ifndef ASM__ARM__IOMMU_H
+#define ASM__ARM__IOMMU_H
 
 struct arch_iommu
 {
@@ -34,7 +34,7 @@ int __must_check arm_iommu_unmap_page(struct domain *d, dfn_t dfn,
                                       unsigned int order,
                                       unsigned int *flush_flags);
 
-#endif /* __ARCH_ARM_IOMMU_H__ */
+#endif /* ASM__ARM__IOMMU_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/iommu_fwspec.h b/xen/arch/arm/include/asm/iommu_fwspec.h
index 5cdb53f8e8..f018e121f9 100644
--- a/xen/arch/arm/include/asm/iommu_fwspec.h
+++ b/xen/arch/arm/include/asm/iommu_fwspec.h
@@ -24,8 +24,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ARCH_ARM_IOMMU_FWSPEC_H__
-#define __ARCH_ARM_IOMMU_FWSPEC_H__
+#ifndef ASM__ARM__IOMMU_FWSPEC_H
+#define ASM__ARM__IOMMU_FWSPEC_H
 
 /* per-device IOMMU instance data */
 struct iommu_fwspec {
@@ -55,7 +55,7 @@ static inline void dev_iommu_fwspec_set(struct device *dev,
     dev->iommu_fwspec = fwspec;
 }
 
-#endif /* __ARCH_ARM_IOMMU_FWSPEC_H__ */
+#endif /* ASM__ARM__IOMMU_FWSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/ioreq.h b/xen/arch/arm/include/asm/ioreq.h
index 50185978d5..9300ba53d6 100644
--- a/xen/arch/arm/include/asm/ioreq.h
+++ b/xen/arch/arm/include/asm/ioreq.h
@@ -17,8 +17,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_IOREQ_H__
-#define __ASM_ARM_IOREQ_H__
+#ifndef ASM__ARM__IOREQ_H
+#define ASM__ARM__IOREQ_H
 
 #ifdef CONFIG_IOREQ_SERVER
 enum io_state handle_ioserv(struct cpu_user_regs *regs, struct vcpu *v);
@@ -57,7 +57,7 @@ static inline void msix_write_completion(struct vcpu *v)
 #define IOREQ_STATUS_UNHANDLED   IO_UNHANDLED
 #define IOREQ_STATUS_RETRY       IO_RETRY
 
-#endif /* __ASM_ARM_IOREQ_H__ */
+#endif /* ASM__ARM__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h
index 88e060bf29..42abb6614e 100644
--- a/xen/arch/arm/include/asm/irq.h
+++ b/xen/arch/arm/include/asm/irq.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
+#ifndef ASM__ARM__IRQ_H
+#define ASM__ARM__IRQ_H
 
 #include <xen/device_tree.h>
 #include <public/device_tree_defs.h>
@@ -101,7 +101,7 @@ bool irq_type_set_by_domain(const struct domain *d);
 void irq_end_none(struct irq_desc *irq);
 #define irq_end_none irq_end_none
 
-#endif /* _ASM_HW_IRQ_H */
+#endif /* ASM__ARM__IRQ_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index 7e6e3c82a4..39452f984b 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -3,8 +3,8 @@
  *
  * Copyright (C) 2011 Citrix Systems, Inc.
  */
-#ifndef __ARCH_ARM_KERNEL_H__
-#define __ARCH_ARM_KERNEL_H__
+#ifndef ASM__ARM__KERNEL_H
+#define ASM__ARM__KERNEL_H
 
 #include <xen/device_tree.h>
 #include <asm/domain.h>
@@ -126,7 +126,7 @@ int kernel_probe(struct kernel_info *info, const struct dt_device_node *domain);
  */
 void kernel_load(struct kernel_info *info);
 
-#endif /* #ifdef __ARCH_ARM_KERNEL_H__ */
+#endif /* #ifdef ASM__ARM__KERNEL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/livepatch.h b/xen/arch/arm/include/asm/livepatch.h
index 026af5e7dc..11fec2033c 100644
--- a/xen/arch/arm/include/asm/livepatch.h
+++ b/xen/arch/arm/include/asm/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_ARM_LIVEPATCH_H__
-#define __XEN_ARM_LIVEPATCH_H__
+#ifndef ASM__ARM__LIVEPATCH_H
+#define ASM__ARM__LIVEPATCH_H
 
 #include <xen/sizes.h> /* For SZ_* macros. */
 #include <asm/insn.h>
@@ -24,7 +24,7 @@ extern void *vmap_of_xen_text;
 #define ARCH_LIVEPATCH_RANGE SZ_128M
 #endif
 
-#endif /* __XEN_ARM_LIVEPATCH_H__ */
+#endif /* ASM__ARM__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/lpae.h b/xen/arch/arm/include/asm/lpae.h
index 4a1679cb33..ebf20ac121 100644
--- a/xen/arch/arm/include/asm/lpae.h
+++ b/xen/arch/arm/include/asm/lpae.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_LPAE_H__
-#define __ARM_LPAE_H__
+#ifndef ASM__ARM__LPAE_H
+#define ASM__ARM__LPAE_H
 
 #ifndef __ASSEMBLY__
 
@@ -284,7 +284,7 @@ lpae_t __aligned(PAGE_SIZE) name[XEN_PT_LPAE_ENTRIES * (nr)]
 
 #define DEFINE_PAGE_TABLE(name) DEFINE_PAGE_TABLES(name, 1)
 
-#endif /* __ARM_LPAE_H__ */
+#endif /* ASM__ARM__LPAE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/macros.h b/xen/arch/arm/include/asm/macros.h
index dc791245df..a6b212f4e3 100644
--- a/xen/arch/arm/include/asm/macros.h
+++ b/xen/arch/arm/include/asm/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACROS_H
-#define __ASM_MACROS_H
+#ifndef ASM__ARM__MACROS_H
+#define ASM__ARM__MACROS_H
 
 #ifndef __ASSEMBLY__
 # error "This file should only be included in assembly file"
diff --git a/xen/arch/arm/include/asm/mem_access.h b/xen/arch/arm/include/asm/mem_access.h
index abac8032fc..22b3dc3786 100644
--- a/xen/arch/arm/include/asm/mem_access.h
+++ b/xen/arch/arm/include/asm/mem_access.h
@@ -14,8 +14,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _ASM_ARM_MEM_ACCESS_H
-#define _ASM_ARM_MEM_ACCESS_H
+#ifndef ASM__ARM__MEM_ACCESS_H
+#define ASM__ARM__MEM_ACCESS_H
 
 #include <xen/types.h>
 
@@ -59,7 +59,7 @@ p2m_mem_access_check_and_get_page(vaddr_t gva, unsigned long flag,
 }
 
 #endif /*CONFIG_MEM_ACCESS*/
-#endif /* _ASM_ARM_MEM_ACCESS_H */
+#endif /* ASM__ARM__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 5abd4b0d1c..227f678a2e 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_MM__
-#define __ARCH_ARM_MM__
+#ifndef ASM__ARM__MM_H
+#define ASM__ARM__MM_H
 
 #include <xen/kernel.h>
 #include <asm/page.h>
@@ -426,7 +426,7 @@ 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 );
 }
 
-#endif /*  __ARCH_ARM_MM__ */
+#endif /*  ASM__ARM__MM_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/mmio.h b/xen/arch/arm/include/asm/mmio.h
index b22cfdac5b..a0c5efeba7 100644
--- a/xen/arch/arm/include/asm/mmio.h
+++ b/xen/arch/arm/include/asm/mmio.h
@@ -16,8 +16,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_MMIO_H__
-#define __ASM_ARM_MMIO_H__
+#ifndef ASM__ARM__MMIO_H
+#define ASM__ARM__MMIO_H
 
 #include <xen/lib.h>
 #include <xen/rwlock.h>
@@ -92,7 +92,7 @@ void domain_io_free(struct domain *d);
 void try_decode_instruction(const struct cpu_user_regs *regs,
                             mmio_info_t *info);
 
-#endif  /* __ASM_ARM_MMIO_H__ */
+#endif  /* ASM__ARM__MMIO_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index a3b546465b..5fe3d1db57 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ARM_MMU_LAYOUT_H__
-#define __ARM_MMU_LAYOUT_H__
+#ifndef ASM__ARM__MMU__LAYOUT_H
+#define ASM__ARM__MMU__LAYOUT_H
 
 /*
  * ARM32 layout:
@@ -140,7 +140,7 @@
 
 #endif
 
-#endif /* __ARM_MMU_LAYOUT_H__ */
+#endif /* ASM__ARM__MMU__LAYOUT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/mmu/mm.h b/xen/arch/arm/include/asm/mmu/mm.h
index c5e03a66bf..44cd9b9007 100644
--- a/xen/arch/arm/include/asm/mmu/mm.h
+++ b/xen/arch/arm/include/asm/mmu/mm.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef __ARM_MMU_MM_H__
-#define __ARM_MMU_MM_H__
+#ifndef ASM__ARM__MMU__MM_H
+#define ASM__ARM__MMU__MM_H
 
 /* Non-boot CPUs use this to find the correct pagetables. */
 extern uint64_t init_ttbr;
@@ -32,7 +32,7 @@ void dump_pt_walk(paddr_t ttbr, paddr_t addr,
 /* Switch to a new root page-tables */
 extern void switch_ttbr(uint64_t ttbr);
 
-#endif /* __ARM_MMU_MM_H__ */
+#endif /* ASM__ARM__MMU__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/p2m.h b/xen/arch/arm/include/asm/mmu/p2m.h
index 58496c0b09..f085075d8f 100644
--- a/xen/arch/arm/include/asm/mmu/p2m.h
+++ b/xen/arch/arm/include/asm/mmu/p2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef __ARM_MMU_P2M_H__
-#define __ARM_MMU_P2M_H__
+#ifndef ASM__ARM__MMU__P2M_H
+#define ASM__ARM__MMU__P2M_H
 
 extern unsigned int p2m_root_order;
 extern unsigned int p2m_root_level;
@@ -14,7 +14,7 @@ void p2m_tlb_flush_sync(struct p2m_domain *p2m);
 
 void p2m_clear_root_pages(struct p2m_domain *p2m);
 
-#endif /* __ARM_MMU_P2M_H__ */
+#endif /* ASM__ARM__MMU__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/monitor.h b/xen/arch/arm/include/asm/monitor.h
index 77a3c1a36c..5ee181065e 100644
--- a/xen/arch/arm/include/asm/monitor.h
+++ b/xen/arch/arm/include/asm/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_MONITOR_H__
-#define __ASM_ARM_MONITOR_H__
+#ifndef ASM__ARM__MONITOR_H
+#define ASM__ARM__MONITOR_H
 
 #include <xen/sched.h>
 #include <public/domctl.h>
@@ -44,4 +44,4 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
 
 int monitor_smc(void);
 
-#endif /* __ASM_ARM_MONITOR_H__ */
+#endif /* ASM__ARM__MONITOR_H */
diff --git a/xen/arch/arm/include/asm/new_vgic.h b/xen/arch/arm/include/asm/new_vgic.h
index 1e76213893..8007d7d717 100644
--- a/xen/arch/arm/include/asm/new_vgic.h
+++ b/xen/arch/arm/include/asm/new_vgic.h
@@ -13,8 +13,8 @@
  * 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 __ASM_ARM_NEW_VGIC_H
-#define __ASM_ARM_NEW_VGIC_H
+#ifndef ASM__ARM__NEW_VGIC_H
+#define ASM__ARM__NEW_VGIC_H
 
 #include <asm/atomic.h>
 #include <asm/mmio.h>
@@ -198,7 +198,7 @@ static inline paddr_t vgic_dist_base(const struct vgic_dist *vgic)
     return vgic->dbase;
 }
 
-#endif /* __ASM_ARM_NEW_VGIC_H */
+#endif /* ASM__ARM__NEW_VGIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/nospec.h b/xen/arch/arm/include/asm/nospec.h
index efac51fc03..f06d40fba4 100644
--- a/xen/arch/arm/include/asm/nospec.h
+++ b/xen/arch/arm/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
-#ifndef _ASM_ARM_NOSPEC_H
-#define _ASM_ARM_NOSPEC_H
+#ifndef ASM__ARM__NOSPEC_H
+#define ASM__ARM__NOSPEC_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/nospec.h>
@@ -21,7 +21,7 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* _ASM_ARM_NOSPEC_H */
+#endif /* ASM__ARM__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index c84fe8d97d..edbcaad77e 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_P2M_H
-#define _XEN_P2M_H
+#ifndef ASM__ARM__P2M_H
+#define ASM__ARM__P2M_H
 
 #include <xen/mm.h>
 #include <xen/radix-tree.h>
@@ -449,7 +449,7 @@ static inline bool vcpu_has_cache_enabled(struct vcpu *v)
     return (READ_SYSREG(SCTLR_EL1) & mask) == mask;
 }
 
-#endif /* _XEN_P2M_H */
+#endif /* ASM__ARM__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/page-bits.h b/xen/arch/arm/include/asm/page-bits.h
index deb381ceeb..5a0fd0a93f 100644
--- a/xen/arch/arm/include/asm/page-bits.h
+++ b/xen/arch/arm/include/asm/page-bits.h
@@ -1,8 +1,8 @@
-#ifndef __ARM_PAGE_SHIFT_H__
-#define __ARM_PAGE_SHIFT_H__
+#ifndef ASM__ARM__PAGE_BITS_H
+#define ASM__ARM__PAGE_BITS_H
 
 #define PAGE_SHIFT              12
 
 #define PADDR_BITS              CONFIG_PADDR_BITS
 
-#endif /* __ARM_PAGE_SHIFT_H__ */
+#endif /* ASM__ARM__PAGE_BITS_H */
diff --git a/xen/arch/arm/include/asm/page.h b/xen/arch/arm/include/asm/page.h
index 69f817d1e6..24849998aa 100644
--- a/xen/arch/arm/include/asm/page.h
+++ b/xen/arch/arm/include/asm/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_PAGE_H__
-#define __ARM_PAGE_H__
+#ifndef ASM__ARM__PAGE_H
+#define ASM__ARM__PAGE_H
 
 #include <public/xen.h>
 #include <xen/page-size.h>
@@ -316,7 +316,7 @@ static inline int gva_to_ipa(vaddr_t va, paddr_t *paddr, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_PAGE_H__ */
+#endif /* ASM__ARM__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h
index 7f77226c9b..ccef80687c 100644
--- a/xen/arch/arm/include/asm/pci.h
+++ b/xen/arch/arm/include/asm/pci.h
@@ -12,8 +12,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ARM_PCI_H__
-#define __ARM_PCI_H__
+#ifndef ASM__ARM__PCI_H
+#define ASM__ARM__PCI_H
 
 #ifdef CONFIG_HAS_PCI
 
@@ -148,4 +148,4 @@ static inline int pci_get_new_domain_nr(void)
 }
 
 #endif  /*!CONFIG_HAS_PCI*/
-#endif /* __ARM_PCI_H__ */
+#endif /* ASM__ARM__PCI_H */
diff --git a/xen/arch/arm/include/asm/perfc.h b/xen/arch/arm/include/asm/perfc.h
index 95c4b2b6b7..5c6a62720a 100644
--- a/xen/arch/arm/include/asm/perfc.h
+++ b/xen/arch/arm/include/asm/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PERFC_H__
-#define __ASM_PERFC_H__
+#ifndef ASM__ARM__PERFC_H
+#define ASM__ARM__PERFC_H
 
 static inline void arch_perfc_reset(void)
 {
diff --git a/xen/arch/arm/include/asm/perfc_defn.h b/xen/arch/arm/include/asm/perfc_defn.h
index 3ab0391175..56d9541e5f 100644
--- a/xen/arch/arm/include/asm/perfc_defn.h
+++ b/xen/arch/arm/include/asm/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef ASM__ARM__PERFC_DEFN_H*/
+/*#define ASM__ARM__PERFC_DEFN_H*/
 
 PERFCOUNTER(invalid_hypercalls, "invalid hypercalls")
 
@@ -76,7 +76,7 @@ PERFCOUNTER(maintenance_irqs, "Maintenance interrupts")
 PERFCOUNTER(atomics_guest,    "atomics: guest access")
 PERFCOUNTER(atomics_guest_paused,   "atomics: guest paused")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* ASM__ARM__PERFC_DEFN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pl011-uart.h b/xen/arch/arm/include/asm/pl011-uart.h
index 27c9bfa444..ce6084784a 100644
--- a/xen/arch/arm/include/asm/pl011-uart.h
+++ b/xen/arch/arm/include/asm/pl011-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PL011_H
-#define __ASM_ARM_PL011_H
+#ifndef ASM__ARM__PL011_UART_H
+#define ASM__ARM__PL011_UART_H
 
 #ifdef __ASSEMBLY__
 
@@ -95,7 +95,7 @@
 #define RIMI  (1<<0)  /* nUARTRI Modem interrupt mask */
 #define ALLI  OEI|BEI|PEI|FEI|RTI|TXI|RXI|DSRMI|DCDMI|CTSMI|RIMI
 
-#endif /* __ASM_ARM_PL011_H */
+#endif /* ASM__ARM__PL011_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platform.h b/xen/arch/arm/include/asm/platform.h
index 997eb25216..d674858a06 100644
--- a/xen/arch/arm/include/asm/platform.h
+++ b/xen/arch/arm/include/asm/platform.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORM_H
-#define __ASM_ARM_PLATFORM_H
+#ifndef ASM__ARM__PLATFORM_H
+#define ASM__ARM__PLATFORM_H
 
 #include <xen/sched.h>
 #include <xen/mm.h>
@@ -70,7 +70,7 @@ __section(".arch.info") = {                                     \
 #define PLATFORM_END                                            \
 };
 
-#endif /* __ASM_ARM_PLATFORM_H */
+#endif /* ASM__ARM__PLATFORM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platforms/exynos5.h b/xen/arch/arm/include/asm/platforms/exynos5.h
index aef5c67084..90305fedff 100644
--- a/xen/arch/arm/include/asm/platforms/exynos5.h
+++ b/xen/arch/arm/include/asm/platforms/exynos5.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORMS_EXYNOS5_H
-#define __ASM_ARM_PLATFORMS_EXYNOS5_H
+#ifndef ASM__ARM__PLATFORMS__EXYNOS5_H
+#define ASM__ARM__PLATFORMS__EXYNOS5_H
 
 #define EXYNOS5_MCT_G_TCON          0x240       /* Relative to MCT_BASE */
 #define EXYNOS5_MCT_G_TCON_START    (1 << 8)
@@ -9,7 +9,7 @@
 
 #define EXYNOS5_SWRESET             0x0400      /* Relative to PA_PMU */
 
-#endif /* __ASM_ARM_PLATFORMS_EXYNOS5_H */
+#endif /* ASM__ARM__PLATFORMS__EXYNOS5_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/platforms/midway.h b/xen/arch/arm/include/asm/platforms/midway.h
index 099e4350f9..b6396e64b3 100644
--- a/xen/arch/arm/include/asm/platforms/midway.h
+++ b/xen/arch/arm/include/asm/platforms/midway.h
@@ -1,5 +1,5 @@
 #ifndef __ASM_ARM_PLATFORMS_MIDWAY_H
-#define __ASM_ASM_PLATFORMS_MIDWAY_H
+#define ASM__ARM__PLATFORMS__MIDWAY_H
 
 /* addresses of SREG registers for resetting the SoC */
 #define MW_SREG_PWR_REQ             0xfff3cf00
diff --git a/xen/arch/arm/include/asm/platforms/omap5.h b/xen/arch/arm/include/asm/platforms/omap5.h
index c559c84b61..811db96281 100644
--- a/xen/arch/arm/include/asm/platforms/omap5.h
+++ b/xen/arch/arm/include/asm/platforms/omap5.h
@@ -1,4 +1,4 @@
-#ifndef __ASM_ARM_PLATFORMS_OMAP5_H
+#ifndef ASM__ARM__PLATFORMS__OMAP5_H
 #define __ASM_ASM_PLATFORMS_OMAP5_H
 
 #define REALTIME_COUNTER_BASE                   0x48243200
@@ -20,7 +20,7 @@
 #define OMAP_AUX_CORE_BOOT_0_OFFSET             0x800
 #define OMAP_AUX_CORE_BOOT_1_OFFSET             0x804
 
-#endif /* __ASM_ARM_PLATFORMS_OMAP5_H */
+#endif /* ASM__ARM__PLATFORMS__OMAP5_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platforms/vexpress.h b/xen/arch/arm/include/asm/platforms/vexpress.h
index 8b45d3a850..da81c3d1a5 100644
--- a/xen/arch/arm/include/asm/platforms/vexpress.h
+++ b/xen/arch/arm/include/asm/platforms/vexpress.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORMS_VEXPRESS_H
-#define __ASM_ARM_PLATFORMS_VEXPRESS_H
+#ifndef ASM__ARM__PLATFORMS__VEXPRESS_H
+#define ASM__ARM__PLATFORMS__VEXPRESS_H
 
 /* V2M */
 #define V2M_SYS_MMIO_BASE     (0x1c010000)
@@ -26,7 +26,7 @@
 /* Board-specific: base address of system controller */
 #define SP810_ADDRESS 0x1C020000
 
-#endif /* __ASM_ARM_PLATFORMS_VEXPRESS_H */
+#endif /* ASM__ARM__PLATFORMS__VEXPRESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h b/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
index cf25a9014d..005199d019 100644
--- a/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
+++ b/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
@@ -11,8 +11,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PLATFORMS_ZYNQMP_H
-#define __ASM_ARM_PLATFORMS_ZYNQMP_H
+#ifndef ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H
+#define ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H
 
 #include <asm/processor.h>
 #include <asm/smccc.h>
@@ -116,7 +116,7 @@ enum ipi_api_id {
 
 extern bool zynqmp_eemi(struct cpu_user_regs *regs);
 
-#endif /* __ASM_ARM_PLATFORMS_ZYNQMP_H */
+#endif /* ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pmap.h b/xen/arch/arm/include/asm/pmap.h
index bca3381796..a14d89cb46 100644
--- a/xen/arch/arm/include/asm/pmap.h
+++ b/xen/arch/arm/include/asm/pmap.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PMAP_H__
-#define __ASM_PMAP_H__
+#ifndef ASM__ARM__PMAP_H
+#define ASM__ARM__PMAP_H
 
 #include <xen/mm.h>
 
@@ -31,4 +31,4 @@ static inline void arch_pmap_unmap(unsigned int slot)
     flush_xen_tlb_range_va_local(FIXMAP_ADDR(slot), PAGE_SIZE);
 }
 
-#endif /* __ASM_PMAP_H__ */
+#endif /* ASM__ARM__PMAP_H */
diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
index 8e02410465..4d8be173f9 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PROCESSOR_H
-#define __ASM_ARM_PROCESSOR_H
+#ifndef ASM__ARM__PROCESSOR_H
+#define ASM__ARM__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -616,7 +616,7 @@ register_t get_default_cptr_flags(void);
     } while (0)
 
 #endif /* __ASSEMBLY__ */
-#endif /* __ASM_ARM_PROCESSOR_H */
+#endif /* ASM__ARM__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/procinfo.h b/xen/arch/arm/include/asm/procinfo.h
index 3a05f27784..d3b9f7d47c 100644
--- a/xen/arch/arm/include/asm/procinfo.h
+++ b/xen/arch/arm/include/asm/procinfo.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PROCINFO_H
-#define __ASM_ARM_PROCINFO_H
+#ifndef ASM__ARM__PROCINFO_H
+#define ASM__ARM__PROCINFO_H
 
 #include <xen/sched.h>
 
diff --git a/xen/arch/arm/include/asm/psci.h b/xen/arch/arm/include/asm/psci.h
index 4780972621..e4e1abbebc 100644
--- a/xen/arch/arm/include/asm/psci.h
+++ b/xen/arch/arm/include/asm/psci.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PSCI_H__
-#define __ASM_PSCI_H__
+#ifndef ASM__ARM__PSCI_H
+#define ASM__ARM__PSCI_H
 
 #include <asm/smccc.h>
 
@@ -82,7 +82,7 @@ void call_psci_system_reset(void);
 #define PSCI_VERSION(major, minor)          \
     (((major) << PSCI_VERSION_MAJOR_SHIFT) | (minor))
 
-#endif /* __ASM_PSCI_H__ */
+#endif /* ASM__ARM__PSCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/regs.h b/xen/arch/arm/include/asm/regs.h
index 0d9f239a77..47a22ef0a4 100644
--- a/xen/arch/arm/include/asm/regs.h
+++ b/xen/arch/arm/include/asm/regs.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_REGS_H__
-#define __ARM_REGS_H__
+#ifndef ASM__ARM__REGS_H
+#define ASM__ARM__REGS_H
 
 #define PSR_MODE_MASK 0x1f
 
@@ -74,7 +74,7 @@ static inline void uint64_to_regpair(register_t *reg0, register_t *reg1,
 
 #endif
 
-#endif /* __ARM_REGS_H__ */
+#endif /* ASM__ARM__REGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/scif-uart.h b/xen/arch/arm/include/asm/scif-uart.h
index bce3404898..23f4bfe3fc 100644
--- a/xen/arch/arm/include/asm/scif-uart.h
+++ b/xen/arch/arm/include/asm/scif-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_SCIF_UART_H
-#define __ASM_ARM_SCIF_UART_H
+#ifndef ASM__ARM__SCIF_UART_H
+#define ASM__ARM__SCIF_UART_H
 
 /* Register offsets (SCIF) */
 #define SCIF_SCSMR     (0x00)    /* Serial mode register           */
@@ -115,7 +115,7 @@
 #define SCASSR_RDF     (1 << 1)    /* Receive FIFO Data Full */
 #define SCASSR_DR      (1 << 0)    /* Receive Data Ready */
 
-#endif /* __ASM_ARM_SCIF_UART_H */
+#endif /* ASM__ARM__SCIF_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/setup.h
index 64c227d171..95ac787e2f 100644
--- a/xen/arch/arm/include/asm/setup.h
+++ b/xen/arch/arm/include/asm/setup.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_SETUP_H_
-#define __ARM_SETUP_H_
+#ifndef ASM__ARM__SETUP_H
+#define ASM__ARM__SETUP_H
 
 #include <public/version.h>
 #include <asm/p2m.h>
diff --git a/xen/arch/arm/include/asm/short-desc.h b/xen/arch/arm/include/asm/short-desc.h
index 9652a103c4..4d28e54598 100644
--- a/xen/arch/arm/include/asm/short-desc.h
+++ b/xen/arch/arm/include/asm/short-desc.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_SHORT_DESC_H__
-#define __ARM_SHORT_DESC_H__
+#ifndef ASM__ARM__SHORT_DESC_H
+#define ASM__ARM__SHORT_DESC_H
 
 /*
  * First level translation table descriptor types used by the AArch32
@@ -127,4 +127,4 @@ typedef union {
     short_desc_l2_lpage_t lpg;
 } short_desc_t;
 
-#endif /* __ARM_SHORT_DESC_H__ */
+#endif /* ASM__ARM__SHORT_DESC_H */
diff --git a/xen/arch/arm/include/asm/smccc.h b/xen/arch/arm/include/asm/smccc.h
index a289c48b7f..6c7735dece 100644
--- a/xen/arch/arm/include/asm/smccc.h
+++ b/xen/arch/arm/include/asm/smccc.h
@@ -13,8 +13,8 @@
  *
  */
 
-#ifndef __ASM_ARM_SMCCC_H__
-#define __ASM_ARM_SMCCC_H__
+#ifndef ASM__ARM__SMCCC_H
+#define ASM__ARM__SMCCC_H
 
 #include <asm/alternative.h>
 #include <asm/cpufeature.h>
@@ -390,7 +390,7 @@ void arm_smccc_1_2_smc(const struct arm_smccc_1_2_regs *args,
 #define ARM_SMCCC_RESERVED_RANGE_START  0x0
 #define ARM_SMCCC_RESERVED_RANGE_END    0x0100FFFF
 
-#endif  /* __ASM_ARM_SMCCC_H__ */
+#endif  /* ASM__ARM__SMCCC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/smp.h b/xen/arch/arm/include/asm/smp.h
index e99a3a3f53..e6c5601596 100644
--- a/xen/arch/arm/include/asm/smp.h
+++ b/xen/arch/arm/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__ARM__SMP_H
+#define ASM__ARM__SMP_H
 
 #ifndef __ASSEMBLY__
 #include <xen/cpumask.h>
diff --git a/xen/arch/arm/include/asm/spinlock.h b/xen/arch/arm/include/asm/spinlock.h
index 42b0f584fe..b1fd46336f 100644
--- a/xen/arch/arm/include/asm/spinlock.h
+++ b/xen/arch/arm/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__ARM__SPINLOCK_H
+#define ASM__ARM__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
 
 #define arch_lock_signal_wmb()  arch_lock_signal()
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__ARM__SPINLOCK_H */
diff --git a/xen/arch/arm/include/asm/static-evtchn.h b/xen/arch/arm/include/asm/static-evtchn.h
index f964522f6a..5f7916f2ac 100644
--- a/xen/arch/arm/include/asm/static-evtchn.h
+++ b/xen/arch/arm/include/asm/static-evtchn.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_EVTCHN_H_
-#define __ASM_STATIC_EVTCHN_H_
+#ifndef ASM__ARM__STATIC_EVTCHN_H
+#define ASM__ARM__STATIC_EVTCHN_H
 
 #ifdef CONFIG_STATIC_EVTCHN
 
@@ -13,7 +13,7 @@ static inline void alloc_static_evtchn(void) {};
 
 #endif /* CONFIG_STATIC_EVTCHN */
 
-#endif /* __ASM_STATIC_EVTCHN_H_ */
+#endif /* ASM__ARM__STATIC_EVTCHN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/static-memory.h b/xen/arch/arm/include/asm/static-memory.h
index 804166e541..654d47eb77 100644
--- a/xen/arch/arm/include/asm/static-memory.h
+++ b/xen/arch/arm/include/asm/static-memory.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_MEMORY_H_
-#define __ASM_STATIC_MEMORY_H_
+#ifndef ASM__ARM__STATIC_MEMORY_H
+#define ASM__ARM__STATIC_MEMORY_H
 
 #include <xen/pfn.h>
 #include <asm/kernel.h>
@@ -46,7 +46,7 @@ static inline void init_staticmem_pages(void) {};
 
 #endif /* CONFIG_STATIC_MEMORY */
 
-#endif /* __ASM_STATIC_MEMORY_H_ */
+#endif /* ASM__ARM__STATIC_MEMORY_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/static-shmem.h b/xen/arch/arm/include/asm/static-shmem.h
index fd0867c4f2..5e9b69d66f 100644
--- a/xen/arch/arm/include/asm/static-shmem.h
+++ b/xen/arch/arm/include/asm/static-shmem.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_SHMEM_H_
-#define __ASM_STATIC_SHMEM_H_
+#ifndef ASM__ARM__STATIC_SHMEM_H
+#define ASM__ARM__STATIC_SHMEM_H
 
 #include <xen/types.h>
 #include <asm/kernel.h>
@@ -106,7 +106,7 @@ static inline void shm_mem_node_fill_reg_range(const struct kernel_info *kinfo,
 
 #endif /* CONFIG_STATIC_SHM */
 
-#endif /* __ASM_STATIC_SHMEM_H_ */
+#endif /* ASM__ARM__STATIC_SHMEM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/string.h b/xen/arch/arm/include/asm/string.h
index b485e49044..8cbcfca3f8 100644
--- a/xen/arch/arm/include/asm/string.h
+++ b/xen/arch/arm/include/asm/string.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_STRING_H__
-#define __ARM_STRING_H__
+#ifndef ASM__ARM__STRING_H
+#define ASM__ARM__STRING_H
 
 
 /*
@@ -42,7 +42,7 @@ void __memzero(void *ptr, size_t n);
 
 #endif
 
-#endif /* __ARM_STRING_H__ */
+#endif /* ASM__ARM__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/sysregs.h b/xen/arch/arm/include/asm/sysregs.h
index 61e30c9e51..98523e96d3 100644
--- a/xen/arch/arm/include/asm/sysregs.h
+++ b/xen/arch/arm/include/asm/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_SYSREGS_H
-#define __ASM_ARM_SYSREGS_H
+#ifndef ASM__ARM__SYSREGS_H
+#define ASM__ARM__SYSREGS_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/sysregs.h>
@@ -33,7 +33,7 @@ static inline register_t read_sysreg_par(void)
 
 #endif /*  !__ASSEMBLY__  */
 
-#endif /* __ASM_ARM_SYSREGS_H */
+#endif /* ASM__ARM__SYSREGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/system.h b/xen/arch/arm/include/asm/system.h
index 65d5c8e423..e69340c71b 100644
--- a/xen/arch/arm/include/asm/system.h
+++ b/xen/arch/arm/include/asm/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_SYSTEM_H
-#define __ASM_SYSTEM_H
+#ifndef ASM__ARM__SYSTEM_H
+#define ASM__ARM__SYSTEM_H
 
 #include <xen/lib.h>
 #include <public/arch-arm.h>
diff --git a/xen/arch/arm/include/asm/tee/ffa.h b/xen/arch/arm/include/asm/tee/ffa.h
index 24cd4d99c8..ef7b21840a 100644
--- a/xen/arch/arm/include/asm/tee/ffa.h
+++ b/xen/arch/arm/include/asm/tee/ffa.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2023  Linaro Limited
  */
 
-#ifndef __ASM_ARM_TEE_FFA_H__
-#define __ASM_ARM_TEE_FFA_H__
+#ifndef ASM__ARM__TEE__FFA_H
+#define ASM__ARM__TEE__FFA_H
 
 #include <xen/const.h>
 
@@ -31,4 +31,4 @@ static inline bool is_ffa_fid(uint32_t fid)
 #define FFA_NR_FUNCS    0
 #endif
 
-#endif /*__ASM_ARM_TEE_FFA_H__*/
+#endif /*ASM__ARM__TEE__FFA_H*/
diff --git a/xen/arch/arm/include/asm/tee/optee_msg.h b/xen/arch/arm/include/asm/tee/optee_msg.h
index fe743dbde3..ec2d267981 100644
--- a/xen/arch/arm/include/asm/tee/optee_msg.h
+++ b/xen/arch/arm/include/asm/tee/optee_msg.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2015-2017, Linaro Limited
  */
-#ifndef _OPTEE_MSG_H
-#define _OPTEE_MSG_H
+#ifndef ASM__ARM__TEE__OPTEE_MSG_H
+#define ASM__ARM__TEE__OPTEE_MSG_H
 
 #include <xen/bitops.h>
 #include <xen/types.h>
@@ -307,4 +307,4 @@ struct optee_msg_arg {
 #define OPTEE_MSG_CMD_UNREGISTER_SHM	5
 #define OPTEE_MSG_FUNCID_CALL_WITH_ARG	0x0004
 
-#endif /* _OPTEE_MSG_H */
+#endif /* ASM__ARM__TEE__OPTEE_MSG_H */
diff --git a/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h b/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
index d6b9dfe30c..891d23be6a 100644
--- a/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
+++ b/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2016-2017, Linaro Limited
  */
 
-#ifndef __OPTEE_RPC_CMD_H
-#define __OPTEE_RPC_CMD_H
+#ifndef ASM__ARM__TEE__OPTEE_RPC_CMD_H
+#define ASM__ARM__TEE__OPTEE_RPC_CMD_H
 
 /*
  * All RPC is done with a struct optee_msg_arg as bearer of information,
@@ -315,4 +315,4 @@
 
 /* End of definition of protocol for command OPTEE_RPC_CMD_SOCKET */
 
-#endif /*__OPTEE_RPC_CMD_H*/
+#endif /*ASM__ARM__TEE__OPTEE_RPC_CMD_H*/
diff --git a/xen/arch/arm/include/asm/tee/optee_smc.h b/xen/arch/arm/include/asm/tee/optee_smc.h
index 2f5c702326..6e0bde66d6 100644
--- a/xen/arch/arm/include/asm/tee/optee_smc.h
+++ b/xen/arch/arm/include/asm/tee/optee_smc.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2015, Linaro Limited
  */
-#ifndef OPTEE_SMC_H
-#define OPTEE_SMC_H
+#ifndef ASM__ARM__TEE__OPTEE_SMC_H
+#define ASM__ARM__TEE__OPTEE_SMC_H
 
 /*
  * This file is exported by OP-TEE and is in kept in sync between secure
@@ -564,4 +564,4 @@
 	((((ret) & OPTEE_SMC_RETURN_RPC_PREFIX_MASK) == \
 		OPTEE_SMC_RETURN_RPC_PREFIX)))
 
-#endif /* OPTEE_SMC_H */
+#endif /* ASM__ARM__TEE__OPTEE_SMC_H */
diff --git a/xen/arch/arm/include/asm/tee/tee.h b/xen/arch/arm/include/asm/tee/tee.h
index 0169fd746b..58659290d6 100644
--- a/xen/arch/arm/include/asm/tee/tee.h
+++ b/xen/arch/arm/include/asm/tee/tee.h
@@ -11,8 +11,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __ARCH_ARM_TEE_TEE_H__
-#define __ARCH_ARM_TEE_TEE_H__
+#ifndef ASM__ARM__TEE__TEE_H
+#define ASM__ARM__TEE__TEE_H
 
 #include <xen/lib.h>
 #include <xen/types.h>
@@ -121,7 +121,7 @@ static inline void tee_free_domain_ctx(struct domain *d)
 
 #endif  /* CONFIG_TEE */
 
-#endif /* __ARCH_ARM_TEE_TEE_H__ */
+#endif /* ASM__ARM__TEE__TEE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/time.h b/xen/arch/arm/include/asm/time.h
index 49ad8c1a6d..d4301ea852 100644
--- a/xen/arch/arm/include/asm/time.h
+++ b/xen/arch/arm/include/asm/time.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_TIME_H__
-#define __ARM_TIME_H__
+#ifndef ASM__ARM__TIME_H
+#define ASM__ARM__TIME_H
 
 #include <asm/sysregs.h>
 #include <asm/system.h>
@@ -108,7 +108,7 @@ void preinit_xen_time(void);
 
 void force_update_vcpu_system_time(struct vcpu *v);
 
-#endif /* __ARM_TIME_H__ */
+#endif /* ASM__ARM__TIME_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/traps.h b/xen/arch/arm/include/asm/traps.h
index 9a60dbf70e..2a935a9afb 100644
--- a/xen/arch/arm/include/asm/traps.h
+++ b/xen/arch/arm/include/asm/traps.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_TRAPS__
-#define __ASM_ARM_TRAPS__
+#ifndef ASM__ARM__TRAPS_H
+#define ASM__ARM__TRAPS_H
 
 #include <asm/hsr.h>
 #include <asm/processor.h>
@@ -118,7 +118,7 @@ static inline register_t sign_extend(const struct hsr_dabt dabt, register_t r)
 
 void finalize_instr_emulation(const struct instr_details *instr);
 
-#endif /* __ASM_ARM_TRAPS__ */
+#endif /* ASM__ARM__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/types.h b/xen/arch/arm/include/asm/types.h
index b0a34ea730..28e55890dc 100644
--- a/xen/arch/arm/include/asm/types.h
+++ b/xen/arch/arm/include/asm/types.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_TYPES_H__
-#define __ARM_TYPES_H__
+#ifndef ASM__ARM__TYPES_H
+#define ASM__ARM__TYPES_H
 
 #if defined(CONFIG_ARM_32)
 
@@ -37,7 +37,7 @@ typedef u64 register_t;
 
 #endif
 
-#endif /* __ARM_TYPES_H__ */
+#endif /* ASM__ARM__TYPES_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/vfp.h b/xen/arch/arm/include/asm/vfp.h
index 142a91ef8b..b7cc2ba906 100644
--- a/xen/arch/arm/include/asm/vfp.h
+++ b/xen/arch/arm/include/asm/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_VFP_H
-#define _ASM_VFP_H
+#ifndef ASM__ARM__VFP_H
+#define ASM__ARM__VFP_H
 
 struct vcpu;
 
@@ -14,7 +14,7 @@ struct vcpu;
 void vfp_save_state(struct vcpu *v);
 void vfp_restore_state(struct vcpu *v);
 
-#endif /* _ASM_VFP_H */
+#endif /* ASM__ARM__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/vgic-emul.h b/xen/arch/arm/include/asm/vgic-emul.h
index fd0cfa2175..cf3670a6cd 100644
--- a/xen/arch/arm/include/asm/vgic-emul.h
+++ b/xen/arch/arm/include/asm/vgic-emul.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_VGIC_EMUL_H__
-#define __ASM_ARM_VGIC_EMUL_H__
+#ifndef ASM__ARM__VGIC_EMUL_H
+#define ASM__ARM__VGIC_EMUL_H
 
 /*
  * Helpers to create easily a case to match emulate a single register or
@@ -21,7 +21,7 @@ static inline bool vgic_reg64_check_access(struct hsr_dabt dabt)
     return ( dabt.size == DABT_DOUBLE_WORD || dabt.size == DABT_WORD );
 }
 
-#endif /* __ASM_ARM_VGIC_EMUL_H__ */
+#endif /* ASM__ARM__VGIC_EMUL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
index e309dca1ad..bb1e45554a 100644
--- a/xen/arch/arm/include/asm/vgic.h
+++ b/xen/arch/arm/include/asm/vgic.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_VGIC_H__
-#define __ASM_ARM_VGIC_H__
+#ifndef ASM__ARM__VGIC_H
+#define ASM__ARM__VGIC_H
 
 #ifdef CONFIG_NEW_VGIC
 #include <asm/new_vgic.h>
@@ -388,7 +388,7 @@ void vgic_sync_from_lrs(struct vcpu *v);
 
 int vgic_vcpu_pending_irq(struct vcpu *v);
 
-#endif /* __ASM_ARM_VGIC_H__ */
+#endif /* ASM__ARM__VGIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vpl011.h b/xen/arch/arm/include/asm/vpl011.h
index c09abcd7a9..bbfa5661d9 100644
--- a/xen/arch/arm/include/asm/vpl011.h
+++ b/xen/arch/arm/include/asm/vpl011.h
@@ -16,8 +16,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _VPL011_H_
-#define _VPL011_H_
+#ifndef ASM__ARM__VPL011_H
+#define ASM__ARM__VPL011_H
 
 #include <public/domctl.h>
 #include <public/io/ring.h>
@@ -79,7 +79,7 @@ static inline int domain_vpl011_init(struct domain *d,
 
 static inline void domain_vpl011_deinit(struct domain *d) { }
 #endif
-#endif  /* _VPL011_H_ */
+#endif  /* ASM__ARM__VPL011_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vpsci.h b/xen/arch/arm/include/asm/vpsci.h
index 0cca5e6830..fc158d827e 100644
--- a/xen/arch/arm/include/asm/vpsci.h
+++ b/xen/arch/arm/include/asm/vpsci.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_VPSCI_H__
-#define __ASM_VPSCI_H__
+#ifndef ASM__ARM__VPSCI_H
+#define ASM__ARM__VPSCI_H
 
 #include <asm/psci.h>
 
@@ -29,7 +29,7 @@
 bool do_vpsci_0_1_call(struct cpu_user_regs *regs, uint32_t fid);
 bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uint32_t fid);
 
-#endif /* __ASM_VPSCI_H__ */
+#endif /* ASM__ARM__VPSCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vreg.h b/xen/arch/arm/include/asm/vreg.h
index 387ce76e7e..97b9d71066 100644
--- a/xen/arch/arm/include/asm/vreg.h
+++ b/xen/arch/arm/include/asm/vreg.h
@@ -1,8 +1,8 @@
 /*
  * Helpers to emulate co-processor and system registers
  */
-#ifndef __ASM_ARM_VREG__
-#define __ASM_ARM_VREG__
+#ifndef ASM__ARM__VREG_H
+#define ASM__ARM__VREG_H
 
 typedef bool (*vreg_reg64_fn_t)(struct cpu_user_regs *regs, uint64_t *r,
                                    bool read);
@@ -145,4 +145,4 @@ VREG_REG_HELPERS(32, 0x3)
 
 #undef VREG_REG_HELPERS
 
-#endif /* __ASM_ARM_VREG__ */
+#endif /* ASM__ARM__VREG_H */
diff --git a/xen/arch/arm/include/asm/vtimer.h b/xen/arch/arm/include/asm/vtimer.h
index 9d4fb4c6e8..a2c54d000b 100644
--- a/xen/arch/arm/include/asm/vtimer.h
+++ b/xen/arch/arm/include/asm/vtimer.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VTIMER_H__
-#define __ARCH_ARM_VTIMER_H__
+#ifndef ASM__ARM__VTIMER_H
+#define ASM__ARM__VTIMER_H
 
 extern int domain_vtimer_init(struct domain *d,
                               struct xen_arch_domainconfig *config);
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 7c6b06f686..b32f4a21a2 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2023  Linaro Limited
  */
 
-#ifndef __FFA_PRIVATE_H__
-#define __FFA_PRIVATE_H__
+#ifndef ARM__TEE__FFA_PRIVATE_H
+#define ARM__TEE__FFA_PRIVATE_H
 
 #include <xen/const.h>
 #include <xen/sizes.h>
@@ -398,4 +398,4 @@ static inline int32_t ffa_rx_release(void)
     return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
 }
 
-#endif /*__FFA_PRIVATE_H__*/
+#endif /*ARM__TEE__FFA_PRIVATE_H*/
diff --git a/xen/arch/arm/vgic/vgic-mmio.h b/xen/arch/arm/vgic/vgic-mmio.h
index 3566cf237c..1bbcb778e9 100644
--- a/xen/arch/arm/vgic/vgic-mmio.h
+++ b/xen/arch/arm/vgic/vgic-mmio.h
@@ -13,8 +13,8 @@
  * 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_ARM_VGIC_VGIC_MMIO_H__
-#define __XEN_ARM_VGIC_VGIC_MMIO_H__
+#ifndef ARM__VGIC__VGIC_MMIO_H
+#define ARM__VGIC__VGIC_MMIO_H
 
 struct vgic_register_region {
     unsigned int reg_offset;
diff --git a/xen/arch/arm/vgic/vgic.h b/xen/arch/arm/vgic/vgic.h
index 534b24bcd3..3cb5e37077 100644
--- a/xen/arch/arm/vgic/vgic.h
+++ b/xen/arch/arm/vgic/vgic.h
@@ -14,8 +14,8 @@
  * 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_ARM_VGIC_VGIC_H__
-#define __XEN_ARM_VGIC_VGIC_H__
+#ifndef ARM__VGIC__VGIC_H
+#define ARM__VGIC__VGIC_H
 
 /*
  * We piggy-back on the already used KVM product ID,  but use a different
diff --git a/xen/arch/arm/vpci.h b/xen/arch/arm/vpci.h
index 3c713f3fcd..8d01a7c006 100644
--- a/xen/arch/arm/vpci.h
+++ b/xen/arch/arm/vpci.h
@@ -12,8 +12,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VPCI_H__
-#define __ARCH_ARM_VPCI_H__
+#ifndef ARM__VPCI_H
+#define ARM__VPCI_H
 
 #ifdef CONFIG_HAS_VPCI
 int domain_vpci_init(struct domain *d);
@@ -30,7 +30,7 @@ static inline unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
 }
 #endif
 
-#endif /* __ARCH_ARM_VPCI_H__ */
+#endif /* ARM__VPCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/vuart.h b/xen/arch/arm/vuart.h
index e90d84c6ed..697cb0225d 100644
--- a/xen/arch/arm/vuart.h
+++ b/xen/arch/arm/vuart.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VUART_H__
-#define __ARCH_ARM_VUART_H__
+#ifndef ARM__VUART_H
+#define ARM__VUART_H
 
 struct domain;
 
@@ -42,7 +42,7 @@ static inline void domain_vuart_free(struct domain *d) {};
 
 #endif /* CONFIG_HWDOM_VUART */
 
-#endif /* __ARCH_ARM_VUART_H__ */
+#endif /* ARM__VUART_H */
 
 /*
  * Local variables:
diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
index f09048812c..d104588aea 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.h
+++ b/xen/drivers/passthrough/arm/smmu-v3.h
@@ -5,8 +5,8 @@
  * Copyright (C) 2022 ARM Limited
  */
 
-#ifndef _ARM_SMMU_V3_H
-#define _ARM_SMMU_V3_H
+#ifndef DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H
+#define DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H
 
 /* MMIO registers */
 #define ARM_SMMU_IDR0			0x0
@@ -668,4 +668,4 @@ struct arm_smmu_domain {
 	spinlock_t			devices_lock;
 };
 
-#endif /* _ARM_SMMU_V3_H */
+#endif /* DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H */
diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h
index e2412a1747..65dac78ce1 100644
--- a/xen/include/public/arch-arm.h
+++ b/xen/include/public/arch-arm.h
@@ -7,8 +7,8 @@
  * Copyright 2011 (C) Citrix Systems
  */
 
-#ifndef __XEN_PUBLIC_ARCH_ARM_H__
-#define __XEN_PUBLIC_ARCH_ARM_H__
+#ifndef PUBLIC__ARCH_ARM_H
+#define PUBLIC__ARCH_ARM_H
 
 /*
  * `incontents 50 arm_abi Hypercall Calling Convention
@@ -542,7 +542,7 @@ typedef uint64_t xen_callback_t;
 typedef struct xen_pmu_arch { uint8_t dummy; } xen_pmu_arch_t;
 #endif
 
-#endif /*  __XEN_PUBLIC_ARCH_ARM_H__ */
+#endif /*  PUBLIC__ARCH_ARM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-arm/hvm/save.h b/xen/include/public/arch-arm/hvm/save.h
index fc1b28f59b..77ebe54aee 100644
--- a/xen/include/public/arch-arm/hvm/save.h
+++ b/xen/include/public/arch-arm/hvm/save.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2012 Citrix Systems Ltd.
  */
 
-#ifndef __XEN_PUBLIC_HVM_SAVE_ARM_H__
-#define __XEN_PUBLIC_HVM_SAVE_ARM_H__
+#ifndef PUBLIC__ARCH_ARM__HVM__SAVE_H
+#define PUBLIC__ARCH_ARM__HVM__SAVE_H
 
 #endif
 
diff --git a/xen/include/public/arch-arm/smccc.h b/xen/include/public/arch-arm/smccc.h
index 8a9321ebed..774f8c6987 100644
--- a/xen/include/public/arch-arm/smccc.h
+++ b/xen/include/public/arch-arm/smccc.h
@@ -7,8 +7,8 @@
  * Copyright 2017 (C) EPAM Systems
  */
 
-#ifndef __XEN_PUBLIC_ARCH_ARM_SMCCC_H__
-#define __XEN_PUBLIC_ARCH_ARM_SMCCC_H__
+#ifndef PUBLIC__ARCH_ARM__SMCCC_H
+#define PUBLIC__ARCH_ARM__SMCCC_H
 
 #include "public/xen.h"
 
@@ -37,7 +37,7 @@
 #define SSSC_SMCCC_UID XEN_DEFINE_UUID(0xf863386fU, 0x4b39, 0x4cbd, 0x9220,\
                                        0xce, 0x16, 0x41, 0xe5, 0x9f, 0x6f)
 
-#endif /* __XEN_PUBLIC_ARCH_ARM_SMCCC_H__ */
+#endif /* PUBLIC__ARCH_ARM__SMCCC_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809683.1222146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ73-0007B4-Ac; Thu, 03 Oct 2024 17:59:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809683.1222146; Thu, 03 Oct 2024 17:59: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 1swQ73-0007Av-7b; Thu, 03 Oct 2024 17:59:41 +0000
Received: by outflank-mailman (input) for mailman id 809683;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ71-0006qR-Gb
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:39 +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 40a86513-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:36 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3f28b6so1657464a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:36 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 40a86513-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978376; x=1728583176; 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=yKa7ZcXOITGDqakjEDsbm4sbdyP3jhkr0kRdTJfqVq8=;
        b=MDCGHG19Of3Nfwq5tDQH6xCoiYWNZv8yq0ZQoxVWZRD/jkcuXhI1Z52dHcCTmilQB/
         aoS3nCCXEB63m3EkFryPSpWIwHdf1aEoKSaVOv3+Ou7n67iF1xWlygVkep2jj86pv1NY
         VnkgrUzt6mhtJj418Awht2lrZMYGfzB58dcQQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978376; x=1728583176;
        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=yKa7ZcXOITGDqakjEDsbm4sbdyP3jhkr0kRdTJfqVq8=;
        b=epedcDn2wIprcRmYc9K+rmbYUTTi5yZamzI5qAZJHCqFgBtNmtMfHk5b+ZBiB5AMK4
         2Lyc1mxegGS33kAcvt18L0yGOwij2goq0pohPBMSakz5ak1ejRMz/Ht9XGa2+tSuGu2R
         flRWHVILh/rEXOXjqiKERZHCqjjOIh7c+G+DDOyYmWvUiPMANl3Slbu+1z5yzkuUnjhH
         uuTVKgZZk02jWIuYBBFOBmkLRbO8PpFSGzYyoRdjOiQtzzQ5OIertMMOxkOdrDTrucwv
         BQfQRlkvCXscEiYCXoVCA7cILQFTKZGkH0EiWDo9wkOamnJCON23bN/bRP33tlOwlLSB
         HDpA==
X-Gm-Message-State: AOJu0Yy4bzoTCd1ddfUYUDASoD59H0ClTxj7u2V+4gUtwiPU2aZpVnqj
	5HFP5vTIwymYXhh2hoeDIvB3ViCaoJ7c91d3LmpXsXqzn4m6H4uOi3zSgwNG2UzQljGx6FoEz5f
	w
X-Google-Smtp-Source: AGHT+IFYcpLkIKd1kaBdUVaHubimNO+D/AENlCPG4B2cxHe2zRwM/EzW+OZIFYNAaKUO/k0CkUtufg==
X-Received: by 2002:a17:907:9281:b0:a86:94e2:2a47 with SMTP id a640c23a62f3a-a991bd08ac7mr20623566b.15.1727978374620;
        Thu, 03 Oct 2024 10:59:34 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 01/19] xen: Update header guards - Generic
Date: Thu,  3 Oct 2024 18:59:01 +0100
Message-Id: <20241003175919.472774-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers not having specific maintainers.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- excluded public headers, their guards is an API;
- moved here changes needed to compile.
---
 tools/libs/guest/xg_dom_decompress_unsafe_zstd.c | 2 +-
 xen/arch/arm/include/asm/hypercall.h             | 2 +-
 xen/arch/arm/include/asm/p2m.h                   | 2 +-
 xen/arch/x86/include/asm/hypercall.h             | 2 +-
 xen/arch/x86/include/asm/p2m.h                   | 2 +-
 xen/common/coverage/coverage.h                   | 4 ++--
 xen/common/coverage/gcov.h                       | 6 +++---
 xen/common/libelf/libelf-private.h               | 6 +++---
 xen/common/lz4/defs.h                            | 6 +++---
 xen/common/ubsan/ubsan.h                         | 4 ++--
 xen/common/xz/lzma2.h                            | 4 ++--
 xen/common/xz/private.h                          | 4 ++--
 xen/common/xz/stream.h                           | 4 ++--
 xen/common/zstd/bitstream.h                      | 6 +++---
 xen/common/zstd/error_private.h                  | 6 +++---
 xen/common/zstd/fse.h                            | 6 +++---
 xen/common/zstd/huf.h                            | 6 +++---
 xen/common/zstd/mem.h                            | 6 +++---
 xen/common/zstd/zstd_internal.h                  | 6 +++---
 xen/drivers/video/font.h                         | 6 +++---
 xen/drivers/video/lfb.h                          | 4 ++--
 xen/drivers/video/modelines.h                    | 4 ++--
 xen/include/asm-generic/altp2m.h                 | 6 +++---
 xen/include/asm-generic/atomic-ops.h             | 6 +++---
 xen/include/asm-generic/device.h                 | 6 +++---
 xen/include/asm-generic/div64.h                  | 4 ++--
 xen/include/asm-generic/hardirq.h                | 6 +++---
 xen/include/asm-generic/hypercall.h              | 8 ++++----
 xen/include/asm-generic/iocap.h                  | 6 +++---
 xen/include/asm-generic/paging.h                 | 6 +++---
 xen/include/asm-generic/percpu.h                 | 6 +++---
 xen/include/asm-generic/random.h                 | 6 +++---
 xen/include/asm-generic/softirq.h                | 6 +++---
 xen/include/crypto/rijndael.h                    | 6 +++---
 xen/include/crypto/vmac.h                        | 4 ++--
 xen/include/xen/8250-uart.h                      | 6 +++---
 xen/include/xen/acpi.h                           | 6 +++---
 xen/include/xen/alternative-call.h               | 6 +++---
 xen/include/xen/atomic.h                         | 6 +++---
 xen/include/xen/bitmap.h                         | 6 +++---
 xen/include/xen/bitops.h                         | 6 +++---
 xen/include/xen/bug.h                            | 6 +++---
 xen/include/xen/byteorder/big_endian.h           | 6 +++---
 xen/include/xen/byteorder/generic.h              | 6 +++---
 xen/include/xen/byteorder/little_endian.h        | 6 +++---
 xen/include/xen/byteorder/swab.h                 | 6 +++---
 xen/include/xen/cache.h                          | 6 +++---
 xen/include/xen/compat.h                         | 6 +++---
 xen/include/xen/compiler.h                       | 6 +++---
 xen/include/xen/config.h                         | 6 +++---
 xen/include/xen/console.h                        | 6 +++---
 xen/include/xen/consoled.h                       | 6 +++---
 xen/include/xen/const.h                          | 6 +++---
 xen/include/xen/coverage.h                       | 4 ++--
 xen/include/xen/cper.h                           | 4 ++--
 xen/include/xen/cpu.h                            | 6 +++---
 xen/include/xen/cpuidle.h                        | 6 +++---
 xen/include/xen/cpumask.h                        | 6 +++---
 xen/include/xen/ctype.h                          | 4 ++--
 xen/include/xen/decompress.h                     | 4 ++--
 xen/include/xen/delay.h                          | 6 +++---
 xen/include/xen/dm.h                             | 6 +++---
 xen/include/xen/dmi.h                            | 6 +++---
 xen/include/xen/domain.h                         | 6 +++---
 xen/include/xen/domain_page.h                    | 6 +++---
 xen/include/xen/dt-overlay.h                     | 6 +++---
 xen/include/xen/early_printk.h                   | 4 ++--
 xen/include/xen/earlycpio.h                      | 6 +++---
 xen/include/xen/efi.h                            | 6 +++---
 xen/include/xen/elf.h                            | 6 +++---
 xen/include/xen/elfcore.h                        | 6 +++---
 xen/include/xen/elfstructs.h                     | 6 +++---
 xen/include/xen/err.h                            | 6 +++---
 xen/include/xen/errno.h                          | 6 +++---
 xen/include/xen/event.h                          | 6 +++---
 xen/include/xen/grant_table.h                    | 6 +++---
 xen/include/xen/guest_access.h                   | 6 +++---
 xen/include/xen/gunzip.h                         | 4 ++--
 xen/include/xen/hypercall.h                      | 6 +++---
 xen/include/xen/init.h                           | 6 +++---
 xen/include/xen/inttypes.h                       | 6 +++---
 xen/include/xen/iocap.h                          | 6 +++---
 xen/include/xen/ioreq.h                          | 6 +++---
 xen/include/xen/irq.h                            | 6 +++---
 xen/include/xen/irq_cpustat.h                    | 6 +++---
 xen/include/xen/kconfig.h                        | 6 +++---
 xen/include/xen/kernel.h                         | 6 +++---
 xen/include/xen/keyhandler.h                     | 6 +++---
 xen/include/xen/lib.h                            | 6 +++---
 xen/include/xen/libelf.h                         | 6 +++---
 xen/include/xen/linkage.h                        | 6 +++---
 xen/include/xen/linux-compat.h                   | 6 +++---
 xen/include/xen/list.h                           | 6 +++---
 xen/include/xen/list_sort.h                      | 4 ++--
 xen/include/xen/lz4.h                            | 4 ++--
 xen/include/xen/lzo.h                            | 4 ++--
 xen/include/xen/macros.h                         | 6 +++---
 xen/include/xen/mm-frame.h                       | 6 +++---
 xen/include/xen/mm.h                             | 6 +++---
 xen/include/xen/msi.h                            | 4 ++--
 xen/include/xen/multiboot.h                      | 6 +++---
 xen/include/xen/multiboot2.h                     | 6 +++---
 xen/include/xen/multicall.h                      | 6 +++---
 xen/include/xen/nodemask.h                       | 6 +++---
 xen/include/xen/nospec.h                         | 6 +++---
 xen/include/xen/notifier.h                       | 6 +++---
 xen/include/xen/numa.h                           | 6 +++---
 xen/include/xen/p2m-common.h                     | 6 +++---
 xen/include/xen/page-defs.h                      | 6 +++---
 xen/include/xen/page-size.h                      | 4 ++--
 xen/include/xen/paging.h                         | 6 +++---
 xen/include/xen/param.h                          | 6 +++---
 xen/include/xen/pci.h                            | 6 +++---
 xen/include/xen/pci_regs.h                       | 6 +++---
 xen/include/xen/pdx.h                            | 6 +++---
 xen/include/xen/percpu.h                         | 6 +++---
 xen/include/xen/perfc.h                          | 6 +++---
 xen/include/xen/perfc_defn.h                     | 6 +++---
 xen/include/xen/pfn.h                            | 6 +++---
 xen/include/xen/pmap.h                           | 6 +++---
 xen/include/xen/pmstat.h                         | 6 +++---
 xen/include/xen/preempt.h                        | 6 +++---
 xen/include/xen/prefetch.h                       | 4 ++--
 xen/include/xen/pv_console.h                     | 6 +++---
 xen/include/xen/radix-tree.h                     | 6 +++---
 xen/include/xen/random.h                         | 6 +++---
 xen/include/xen/rangeset.h                       | 6 +++---
 xen/include/xen/rbtree.h                         | 6 +++---
 xen/include/xen/rcupdate.h                       | 6 +++---
 xen/include/xen/rwlock.h                         | 6 +++---
 xen/include/xen/sched.h                          | 6 +++---
 xen/include/xen/sections.h                       | 6 +++---
 xen/include/xen/self-tests.h                     | 6 +++---
 xen/include/xen/serial.h                         | 6 +++---
 xen/include/xen/shared.h                         | 6 +++---
 xen/include/xen/shutdown.h                       | 6 +++---
 xen/include/xen/sizes.h                          | 6 +++---
 xen/include/xen/smp.h                            | 6 +++---
 xen/include/xen/softirq.h                        | 6 +++---
 xen/include/xen/sort.h                           | 6 +++---
 xen/include/xen/spinlock.h                       | 6 +++---
 xen/include/xen/stdarg.h                         | 6 +++---
 xen/include/xen/stdbool.h                        | 6 +++---
 xen/include/xen/stdint.h                         | 6 +++---
 xen/include/xen/stop_machine.h                   | 6 +++---
 xen/include/xen/string.h                         | 6 +++---
 xen/include/xen/stringify.h                      | 6 +++---
 xen/include/xen/symbols.h                        | 6 +++---
 xen/include/xen/tasklet.h                        | 6 +++---
 xen/include/xen/time.h                           | 6 +++---
 xen/include/xen/timer.h                          | 6 +++---
 xen/include/xen/trace.h                          | 6 +++---
 xen/include/xen/types.h                          | 6 +++---
 xen/include/xen/typesafe.h                       | 6 +++---
 xen/include/xen/unaligned.h                      | 6 +++---
 xen/include/xen/version.h                        | 6 +++---
 xen/include/xen/vga.h                            | 6 +++---
 xen/include/xen/video.h                          | 6 +++---
 xen/include/xen/virtual_region.h                 | 6 +++---
 xen/include/xen/vmap.h                           | 6 +++---
 xen/include/xen/wait.h                           | 6 +++---
 xen/include/xen/warning.h                        | 4 ++--
 xen/include/xen/watchdog.h                       | 6 +++---
 xen/include/xen/xen.lds.h                        | 6 +++---
 xen/include/xen/xenoprof.h                       | 4 ++--
 xen/include/xen/xmalloc.h                        | 6 +++---
 xen/include/xen/xxhash.h                         | 6 +++---
 167 files changed, 469 insertions(+), 469 deletions(-)

diff --git a/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c b/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c
index ff45732a36..8f6081bba6 100644
--- a/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c
+++ b/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c
@@ -31,7 +31,7 @@ typedef uint64_t __be64;
 #undef ERROR
 
 #define __BYTEORDER_HAS_U64__
-#define __TYPES_H__ /* xen/types.h guard */
+#define XEN__TYPES_H /* xen/types.h guard */
 #include "../../xen/include/xen/byteorder/little_endian.h"
 #include "../../xen/include/xen/unaligned.h"
 #include "../../xen/include/xen/xxhash.h"
diff --git a/xen/arch/arm/include/asm/hypercall.h b/xen/arch/arm/include/asm/hypercall.h
index 07e231f8b5..0a23f8d484 100644
--- a/xen/arch/arm/include/asm/hypercall.h
+++ b/xen/arch/arm/include/asm/hypercall.h
@@ -1,5 +1,5 @@
 /* SAF-10-safe direct inclusion guard before */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 4818dd4b6a..c84fe8d97d 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -160,7 +160,7 @@ typedef enum {
                              P2M_FOREIGN_TYPES))
 
 /* All common type definitions should live ahead of this inclusion. */
-#ifdef _XEN_P2M_COMMON_H
+#ifdef XEN__P2M_COMMON_H
 # error "xen/p2m-common.h should not be included directly"
 #endif
 #include <xen/p2m-common.h>
diff --git a/xen/arch/x86/include/asm/hypercall.h b/xen/arch/x86/include/asm/hypercall.h
index f6e9e2313b..e71b48d860 100644
--- a/xen/arch/x86/include/asm/hypercall.h
+++ b/xen/arch/x86/include/asm/hypercall.h
@@ -3,7 +3,7 @@
  */
 
 /* SAF-10-safe direct inclusion guard before */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index e6de37f108..321c7b5941 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -392,7 +392,7 @@ struct p2m_domain {
 #define p2m_get_hostp2m(d)      ((d)->arch.p2m)
 
 /* All common type definitions should live ahead of this inclusion. */
-#ifdef _XEN_P2M_COMMON_H
+#ifdef XEN__P2M_COMMON_H
 # error "xen/p2m-common.h should not be included directly"
 #endif
 #include <xen/p2m-common.h>
diff --git a/xen/common/coverage/coverage.h b/xen/common/coverage/coverage.h
index aa66396c08..34400d0f4b 100644
--- a/xen/common/coverage/coverage.h
+++ b/xen/common/coverage/coverage.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_COV_PRIV_H
-#define _XEN_COV_PRIV_H
+#ifndef COMMON__COVERAGE__COVERAGE_H
+#define COMMON__COVERAGE__COVERAGE_H
 
 #include <xen/types.h>
 
diff --git a/xen/common/coverage/gcov.h b/xen/common/coverage/gcov.h
index efc1fd7b00..f0f70019e3 100644
--- a/xen/common/coverage/gcov.h
+++ b/xen/common/coverage/gcov.h
@@ -1,5 +1,5 @@
-#ifndef _GCOV_H_
-#define _GCOV_H_
+#ifndef COMMON__COVERAGE__GCOV_H
+#define COMMON__COVERAGE__GCOV_H
 
 #include <xen/guest_access.h>
 #include <xen/types.h>
@@ -37,4 +37,4 @@ size_t gcov_info_to_gcda(char *buffer, const struct gcov_info *info);
 size_t gcov_store_uint32(void *buffer, size_t off, uint32_t v);
 size_t gcov_store_uint64(void *buffer, size_t off, uint64_t v);
 
-#endif	/* _GCOV_H_ */
+#endif	/* COMMON__COVERAGE__GCOV_H */
diff --git a/xen/common/libelf/libelf-private.h b/xen/common/libelf/libelf-private.h
index 197d7a7623..890fba8ae2 100644
--- a/xen/common/libelf/libelf-private.h
+++ b/xen/common/libelf/libelf-private.h
@@ -12,8 +12,8 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __LIBELF_PRIVATE_H__
-#define __LIBELF_PRIVATE_H__
+#ifndef COMMON__LIBELF__LIBELF_PRIVATE_H
+#define COMMON__LIBELF__LIBELF_PRIVATE_H
 
 #ifdef __XEN__
 
@@ -105,7 +105,7 @@ do { strncpy((d),(s),sizeof((d))-1);            \
    * of memcpy, memset, memmove and strcpy.  Every call site
    * must either use elf_mem*_unchecked, or elf_mem*_safe. */
 
-#endif /* __LIBELF_PRIVATE_H__ */
+#endif /* COMMON__LIBELF__LIBELF_PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/common/lz4/defs.h b/xen/common/lz4/defs.h
index ecfbf07f83..6b974bc806 100644
--- a/xen/common/lz4/defs.h
+++ b/xen/common/lz4/defs.h
@@ -8,8 +8,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef COMMON_LZ4_DEFS_H
-#define COMMON_LZ4_DEFS_H
+#ifndef COMMON__LZ4__DEFS_H
+#define COMMON__LZ4__DEFS_H
 
 #ifdef __XEN__
 #include <asm/byteorder.h>
@@ -170,4 +170,4 @@ typedef struct _U64_S { u64 v; } U64_S;
 		d = e;	\
 	} while (0)
 
-#endif /* COMMON_LZ4_DEFS_H */
+#endif /* COMMON__LZ4__DEFS_H */
diff --git a/xen/common/ubsan/ubsan.h b/xen/common/ubsan/ubsan.h
index 9c7f3b9b6c..495e53a7fd 100644
--- a/xen/common/ubsan/ubsan.h
+++ b/xen/common/ubsan/ubsan.h
@@ -1,5 +1,5 @@
-#ifndef _LIB_UBSAN_H
-#define _LIB_UBSAN_H
+#ifndef COMMON__UBSAN__UBSAN_H
+#define COMMON__UBSAN__UBSAN_H
 
 #include <xen/linux-compat.h>
 
diff --git a/xen/common/xz/lzma2.h b/xen/common/xz/lzma2.h
index 06a7edb4d7..ba9afb0049 100644
--- a/xen/common/xz/lzma2.h
+++ b/xen/common/xz/lzma2.h
@@ -8,8 +8,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_LZMA2_H
-#define XZ_LZMA2_H
+#ifndef COMMON__XZ__LZMA2_H
+#define COMMON__XZ__LZMA2_H
 
 /* Range coder constants */
 #define RC_SHIFT_BITS 8
diff --git a/xen/common/xz/private.h b/xen/common/xz/private.h
index 2299705378..b1345a9ddb 100644
--- a/xen/common/xz/private.h
+++ b/xen/common/xz/private.h
@@ -7,8 +7,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_PRIVATE_H
-#define XZ_PRIVATE_H
+#ifndef COMMON__XZ__PRIVATE_H
+#define COMMON__XZ__PRIVATE_H
 
 #ifdef __XEN__
 #include <xen/kernel.h>
diff --git a/xen/common/xz/stream.h b/xen/common/xz/stream.h
index 8d9fbbe1b5..a4caa665fd 100644
--- a/xen/common/xz/stream.h
+++ b/xen/common/xz/stream.h
@@ -7,8 +7,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_STREAM_H
-#define XZ_STREAM_H
+#ifndef COMMON__XZ__STREAM_H
+#define COMMON__XZ__STREAM_H
 
 /*
  * See the .xz file format specification at
diff --git a/xen/common/zstd/bitstream.h b/xen/common/zstd/bitstream.h
index 2b06d4551f..c38afe399e 100644
--- a/xen/common/zstd/bitstream.h
+++ b/xen/common/zstd/bitstream.h
@@ -38,8 +38,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef BITSTREAM_H_MODULE
-#define BITSTREAM_H_MODULE
+#ifndef COMMON__ZSTD__BITSTREAM_H
+#define COMMON__ZSTD__BITSTREAM_H
 
 /*
 *  This API consists of small unitary functions, which must be inlined for best performance.
@@ -377,4 +377,4 @@ ZSTD_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t *DStream)
 	return ((DStream->ptr == DStream->start) && (DStream->bitsConsumed == sizeof(DStream->bitContainer) * 8));
 }
 
-#endif /* BITSTREAM_H_MODULE */
+#endif /* COMMON__ZSTD__BITSTREAM_H */
diff --git a/xen/common/zstd/error_private.h b/xen/common/zstd/error_private.h
index fa84ae4fef..171525b252 100644
--- a/xen/common/zstd/error_private.h
+++ b/xen/common/zstd/error_private.h
@@ -16,8 +16,8 @@
 
 /* Note : this module is expected to remain private, do not expose it */
 
-#ifndef ERROR_H_MODULE
-#define ERROR_H_MODULE
+#ifndef COMMON__ZSTD__ERROR_PRIVATE_H
+#define COMMON__ZSTD__ERROR_PRIVATE_H
 
 /**
  * enum ZSTD_ErrorCode - zstd error codes
@@ -102,4 +102,4 @@ static __attribute__((unused)) ZSTD_ErrorCode __init ZSTD_getErrorCode(
 	return (ZSTD_ErrorCode)(0 - functionResult);
 }
 
-#endif /* ERROR_H_MODULE */
+#endif /* COMMON__ZSTD__ERROR_PRIVATE_H */
diff --git a/xen/common/zstd/fse.h b/xen/common/zstd/fse.h
index 5761e09f17..dc15c8cd7f 100644
--- a/xen/common/zstd/fse.h
+++ b/xen/common/zstd/fse.h
@@ -37,8 +37,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef FSE_H
-#define FSE_H
+#ifndef COMMON__ZSTD__FSE_H
+#define COMMON__ZSTD__FSE_H
 
 /*-*****************************************
 *  FSE_PUBLIC_API : control library symbols visibility
@@ -567,4 +567,4 @@ ZSTD_STATIC unsigned FSE_endOfDState(const FSE_DState_t *DStatePtr) { return DSt
 
 #define FSE_TABLESTEP(tableSize) ((tableSize >> 1) + (tableSize >> 3) + 3)
 
-#endif /* FSE_H */
+#endif /* COMMON__ZSTD__FSE_H */
diff --git a/xen/common/zstd/huf.h b/xen/common/zstd/huf.h
index 0e091dbffe..e2ed6cf82b 100644
--- a/xen/common/zstd/huf.h
+++ b/xen/common/zstd/huf.h
@@ -37,8 +37,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef HUF_H_298734234
-#define HUF_H_298734234
+#ifndef COMMON__ZSTD__HUF_H
+#define COMMON__ZSTD__HUF_H
 
 /* ***   Tool functions *** */
 #define HUF_BLOCKSIZE_MAX (128 * 1024) /**< maximum input size for a single block compressed with HUF_compress */
@@ -206,4 +206,4 @@ size_t HUF_decompress1X_usingDTable(void *dst, size_t maxDstSize, const void *cS
 size_t HUF_decompress1X2_usingDTable(void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable);
 size_t HUF_decompress1X4_usingDTable(void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable);
 
-#endif /* HUF_H_298734234 */
+#endif /* COMMON__ZSTD__HUF_H */
diff --git a/xen/common/zstd/mem.h b/xen/common/zstd/mem.h
index ae1e305126..8e4228771c 100644
--- a/xen/common/zstd/mem.h
+++ b/xen/common/zstd/mem.h
@@ -14,8 +14,8 @@
  * ("BSD").
  */
 
-#ifndef MEM_H_MODULE
-#define MEM_H_MODULE
+#ifndef COMMON__ZSTD__MEM_H
+#define COMMON__ZSTD__MEM_H
 
 /*-****************************************
 *  Dependencies
@@ -150,4 +150,4 @@ ZSTD_STATIC U32 ZSTD_readMINMATCH(const void *memPtr, U32 length)
 	}
 }
 
-#endif /* MEM_H_MODULE */
+#endif /* COMMON__ZSTD__MEM_H */
diff --git a/xen/common/zstd/zstd_internal.h b/xen/common/zstd/zstd_internal.h
index 94f8c58622..93339813d6 100644
--- a/xen/common/zstd/zstd_internal.h
+++ b/xen/common/zstd/zstd_internal.h
@@ -14,8 +14,8 @@
  * ("BSD").
  */
 
-#ifndef ZSTD_CCOMMON_H_MODULE
-#define ZSTD_CCOMMON_H_MODULE
+#ifndef COMMON__ZSTD__ZSTD_INTERNAL_H
+#define COMMON__ZSTD__ZSTD_INTERNAL_H
 
 /*-*******************************************************
 *  Compiler specifics
@@ -373,4 +373,4 @@ size_t ZSTD_freeDDict(ZSTD_DDict *cdict);
 size_t ZSTD_freeCStream(ZSTD_CStream *zcs);
 size_t ZSTD_freeDStream(ZSTD_DStream *zds);
 
-#endif /* ZSTD_CCOMMON_H_MODULE */
+#endif /* COMMON__ZSTD__ZSTD_INTERNAL_H */
diff --git a/xen/drivers/video/font.h b/xen/drivers/video/font.h
index 7f720b3568..123a69dcef 100644
--- a/xen/drivers/video/font.h
+++ b/xen/drivers/video/font.h
@@ -8,8 +8,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_FONT_H
-#define _XEN_FONT_H
+#ifndef DRIVERS__VIDEO__FONT_H
+#define DRIVERS__VIDEO__FONT_H
 
 struct font_desc {
     const char *name;
@@ -19,4 +19,4 @@ struct font_desc {
 
 extern const struct font_desc font_vga_8x8, font_vga_8x14, font_vga_8x16;
 
-#endif /* _XEN_FONT_H */
+#endif /* DRIVERS__VIDEO__FONT_H */
diff --git a/xen/drivers/video/lfb.h b/xen/drivers/video/lfb.h
index 42161402d6..bee1bd3c28 100644
--- a/xen/drivers/video/lfb.h
+++ b/xen/drivers/video/lfb.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef _XEN_LFB_H
-#define _XEN_LFB_H
+#ifndef DRIVERS__VIDEO__LFB_H
+#define DRIVERS__VIDEO__LFB_H
 
 #include <xen/init.h>
 
diff --git a/xen/drivers/video/modelines.h b/xen/drivers/video/modelines.h
index 9cb7cdde05..08d631b134 100644
--- a/xen/drivers/video/modelines.h
+++ b/xen/drivers/video/modelines.h
@@ -25,8 +25,8 @@
  * Copyright (c) 2013 Citrix Systems
  */
 
-#ifndef _XEN_MODLINES_H
-#define _XEN_MODLINES_H
+#ifndef DRIVERS__VIDEO__MODELINES_H
+#define DRIVERS__VIDEO__MODELINES_H
 
 struct modeline {
     const char* mode;  /* in the form 1280x1024@60 */
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
index 39865a842a..34ae943145 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_ALTP2M_H
-#define __ASM_GENERIC_ALTP2M_H
+#ifndef ASM_GENERIC__ALTP2M_H
+#define ASM_GENERIC__ALTP2M_H
 
 #include <xen/bug.h>
 
@@ -22,7 +22,7 @@ static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
     return 0;
 }
 
-#endif /* __ASM_GENERIC_ALTP2M_H */
+#endif /* ASM_GENERIC__ALTP2M_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/atomic-ops.h b/xen/include/asm-generic/atomic-ops.h
index 98dd907942..b1f883c360 100644
--- a/xen/include/asm-generic/atomic-ops.h
+++ b/xen/include/asm-generic/atomic-ops.h
@@ -4,8 +4,8 @@
  * forward inline declaration that can be synthesized from other atomic
  * functions or being created from scratch.
  */
-#ifndef _ASM_GENERIC_ATOMIC_OPS_H_
-#define _ASM_GENERIC_ATOMIC_OPS_H_
+#ifndef ASM_GENERIC__ATOMIC_OPS_H
+#define ASM_GENERIC__ATOMIC_OPS_H
 
 #include <xen/atomic.h>
 #include <xen/lib.h>
@@ -94,4 +94,4 @@ static inline int atomic_add_negative(int i, atomic_t *v)
 }
 #endif
 
-#endif /* _ASM_GENERIC_ATOMIC_OPS_H_ */
+#endif /* ASM_GENERIC__ATOMIC_OPS_H */
diff --git a/xen/include/asm-generic/device.h b/xen/include/asm-generic/device.h
index 1acd1ba1d8..eccd3159a9 100644
--- a/xen/include/asm-generic/device.h
+++ b/xen/include/asm-generic/device.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_DEVICE_H__
-#define __ASM_GENERIC_DEVICE_H__
+#ifndef ASM_GENERIC__DEVICE_H
+#define ASM_GENERIC__DEVICE_H
 
 #include <xen/stdbool.h>
 
@@ -127,7 +127,7 @@ __section(".adev.info") = {                                         \
 
 #endif /* CONFIG_ACPI */
 
-#endif /* __ASM_GENERIC_DEVICE_H__ */
+#endif /* ASM_GENERIC__DEVICE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/div64.h b/xen/include/asm-generic/div64.h
index 068d8a11ad..774198f98b 100644
--- a/xen/include/asm-generic/div64.h
+++ b/xen/include/asm-generic/div64.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_DIV64
-#define __ASM_GENERIC_DIV64
+#ifndef ASM_GENERIC__DIV64_H
+#define ASM_GENERIC__DIV64_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/asm-generic/hardirq.h b/xen/include/asm-generic/hardirq.h
index ddccf460b9..09260b1b08 100644
--- a/xen/include/asm-generic/hardirq.h
+++ b/xen/include/asm-generic/hardirq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_HARDIRQ_H
-#define __ASM_GENERIC_HARDIRQ_H
+#ifndef ASM_GENERIC__HARDIRQ_H
+#define ASM_GENERIC__HARDIRQ_H
 
 #include <xen/cache.h>
 #include <xen/smp.h>
@@ -17,7 +17,7 @@ typedef struct {
 #define irq_enter()     (local_irq_count(smp_processor_id())++)
 #define irq_exit()      (local_irq_count(smp_processor_id())--)
 
-#endif /* __ASM_GENERIC_HARDIRQ_H */
+#endif /* ASM_GENERIC__HARDIRQ_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/hypercall.h b/xen/include/asm-generic/hypercall.h
index 7743b35c0d..201b2cb301 100644
--- a/xen/include/asm-generic/hypercall.h
+++ b/xen/include/asm-generic/hypercall.h
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_GENERIC_HYPERCALL_H__
-#define __ASM_GENERIC_HYPERCALL_H__
+#ifndef ASM_GENERIC__HYPERCALL_H
+#define ASM_GENERIC__HYPERCALL_H
 
-#endif /* __ASM_GENERIC_HYPERCALL_H__ */
+#endif /* ASM_GENERIC__HYPERCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/iocap.h b/xen/include/asm-generic/iocap.h
index dd7cb45488..1001fb629a 100644
--- a/xen/include/asm-generic/iocap.h
+++ b/xen/include/asm-generic/iocap.h
@@ -1,11 +1,11 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_IOCAP_H__
-#define __ASM_GENERIC_IOCAP_H__
+#ifndef ASM_GENERIC__IOCAP_H
+#define ASM_GENERIC__IOCAP_H
 
 #define cache_flush_permitted(d)                        \
     (!rangeset_is_empty((d)->iomem_caps))
 
-#endif /* __ASM_GENERIC_IOCAP_H__ */
+#endif /* ASM_GENERIC__IOCAP_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/paging.h b/xen/include/asm-generic/paging.h
index 8df534cfdc..1a8fae6543 100644
--- a/xen/include/asm-generic/paging.h
+++ b/xen/include/asm-generic/paging.h
@@ -1,13 +1,13 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_PAGING_H__
-#define __ASM_GENERIC_PAGING_H__
+#ifndef ASM_GENERIC__PAGING_H
+#define ASM_GENERIC__PAGING_H
 
 #include <xen/stdbool.h>
 
 #define paging_mode_translate(d)    ((void)(d), true)
 #define paging_mode_external(d)     ((void)(d), true)
 
-#endif /* __ASM_GENERIC_PAGING_H__ */
+#endif /* ASM_GENERIC__PAGING_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/percpu.h b/xen/include/asm-generic/percpu.h
index 60af4f9ff9..7302edb00c 100644
--- a/xen/include/asm-generic/percpu.h
+++ b/xen/include/asm-generic/percpu.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_PERCPU_H__
-#define __ASM_GENERIC_PERCPU_H__
+#ifndef ASM_GENERIC__PERCPU_H
+#define ASM_GENERIC__PERCPU_H
 
 #ifndef __ASSEMBLY__
 
@@ -25,7 +25,7 @@ void percpu_init_areas(void);
 
 #endif
 
-#endif /* __ASM_GENERIC_PERCPU_H__ */
+#endif /* ASM_GENERIC__PERCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/random.h b/xen/include/asm-generic/random.h
index d0d35dd217..f2e6c1c11c 100644
--- a/xen/include/asm-generic/random.h
+++ b/xen/include/asm-generic/random.h
@@ -1,13 +1,13 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_RANDOM_H__
-#define __ASM_GENERIC_RANDOM_H__
+#ifndef ASM_GENERIC__RANDOM_H
+#define ASM_GENERIC__RANDOM_H
 
 static inline unsigned int arch_get_random(void)
 {
     return 0;
 }
 
-#endif /* __ASM_GENERIC_RANDOM_H__ */
+#endif /* ASM_GENERIC__RANDOM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/softirq.h b/xen/include/asm-generic/softirq.h
index 83be855e50..92144c7eca 100644
--- a/xen/include/asm-generic/softirq.h
+++ b/xen/include/asm-generic/softirq.h
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_SOFTIRQ_H__
-#define __ASM_GENERIC_SOFTIRQ_H__
+#ifndef ASM_GENERIC__SOFTIRQ_H
+#define ASM_GENERIC__SOFTIRQ_H
 
 #define NR_ARCH_SOFTIRQS       0
 
 #define arch_skip_send_event_check(cpu) 0
 
-#endif /* __ASM_GENERIC_SOFTIRQ_H__ */
+#endif /* ASM_GENERIC__SOFTIRQ_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/crypto/rijndael.h b/xen/include/crypto/rijndael.h
index 4386be5878..52c7a2f622 100644
--- a/xen/include/crypto/rijndael.h
+++ b/xen/include/crypto/rijndael.h
@@ -25,8 +25,8 @@
  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-#ifndef __RIJNDAEL_H
-#define __RIJNDAEL_H
+#ifndef CRYPTO__RIJNDAEL_H
+#define CRYPTO__RIJNDAEL_H
 
 #define AES_MAXKEYBITS	(256)
 #define AES_MAXKEYBYTES	(AES_MAXKEYBITS/8)
@@ -55,4 +55,4 @@ int	rijndaelKeySetupDec(unsigned int [], const unsigned char [], int);
 void	rijndaelEncrypt(const unsigned int [], int, const unsigned char [16],
 	    unsigned char [16]);
 
-#endif /* __RIJNDAEL_H */
+#endif /* CRYPTO__RIJNDAEL_H */
diff --git a/xen/include/crypto/vmac.h b/xen/include/crypto/vmac.h
index 457f3f5dd6..310fc77f5c 100644
--- a/xen/include/crypto/vmac.h
+++ b/xen/include/crypto/vmac.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_VMAC_H
-#define HEADER_VMAC_H
+#ifndef CRYPTO__VMAC_H
+#define CRYPTO__VMAC_H
 
 /* --------------------------------------------------------------------------
  * VMAC and VHASH Implementation by Ted Krovetz (tdk@acm.org) and Wei Dai.
diff --git a/xen/include/xen/8250-uart.h b/xen/include/xen/8250-uart.h
index d13352940c..7915297a24 100644
--- a/xen/include/xen/8250-uart.h
+++ b/xen/include/xen/8250-uart.h
@@ -19,8 +19,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __XEN_8250_UART_H__
-#define __XEN_8250_UART_H__
+#ifndef XEN__8250_UART_H
+#define XEN__8250_UART_H
 
 /* Register offsets */
 #define UART_RBR          0x00    /* receive buffer       */
@@ -129,7 +129,7 @@
 #define RESUME_DELAY      MILLISECS(10)
 #define RESUME_RETRIES    100
 
-#endif /* __XEN_8250_UART_H__ */
+#endif /* XEN__8250_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h
index bc4818c943..64efc0a7bc 100644
--- a/xen/include/xen/acpi.h
+++ b/xen/include/xen/acpi.h
@@ -21,8 +21,8 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
-#ifndef _LINUX_ACPI_H
-#define _LINUX_ACPI_H
+#ifndef XEN__ACPI_H
+#define XEN__ACPI_H
 
 #ifndef _LINUX
 #define _LINUX
@@ -204,4 +204,4 @@ static inline void acpi_dmar_reinstate(void) {}
 
 #endif /* __ASSEMBLY__ */
 
-#endif /*_LINUX_ACPI_H*/
+#endif /*XEN__ACPI_H*/
diff --git a/xen/include/xen/alternative-call.h b/xen/include/xen/alternative-call.h
index 10f7d7637e..a91ae14416 100644
--- a/xen/include/xen/alternative-call.h
+++ b/xen/include/xen/alternative-call.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef XEN_ALTERNATIVE_CALL
-#define XEN_ALTERNATIVE_CALL
+#ifndef XEN__ALTERNATIVE_CALL_H
+#define XEN__ALTERNATIVE_CALL_H
 
 /*
  * Some subsystems in Xen may have multiple implementations, which can be
@@ -65,4 +65,4 @@
 #define __alt_call_maybe_initdata __ro_after_init
 
 #endif /* !CONFIG_ALTERNATIVE_CALL */
-#endif /* XEN_ALTERNATIVE_CALL */
+#endif /* XEN__ALTERNATIVE_CALL_H */
diff --git a/xen/include/xen/atomic.h b/xen/include/xen/atomic.h
index fa750a18ae..ecff44c23d 100644
--- a/xen/include/xen/atomic.h
+++ b/xen/include/xen/atomic.h
@@ -19,8 +19,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_ATOMIC_H__
-#define __XEN_ATOMIC_H__
+#ifndef XEN__ATOMIC_H
+#define XEN__ATOMIC_H
 
 typedef struct { int counter; } atomic_t;
 
@@ -204,4 +204,4 @@ static inline int atomic_add_negative(int i, atomic_t *v);
  */
 static inline int atomic_add_unless(atomic_t *v, int a, int u);
 
-#endif /* __XEN_ATOMIC_H__ */
+#endif /* XEN__ATOMIC_H */
diff --git a/xen/include/xen/bitmap.h b/xen/include/xen/bitmap.h
index 4b642cd420..83b80214bc 100644
--- a/xen/include/xen/bitmap.h
+++ b/xen/include/xen/bitmap.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BITMAP_H
-#define __XEN_BITMAP_H
+#ifndef XEN__BITMAP_H
+#define XEN__BITMAP_H
 
 #ifndef __ASSEMBLY__
 
@@ -292,4 +292,4 @@ int bitmap_to_xenctl_bitmap(struct xenctl_bitmap *xenctl_bitmap,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_BITMAP_H */
+#endif /* XEN__BITMAP_H */
diff --git a/xen/include/xen/bitops.h b/xen/include/xen/bitops.h
index 12eb88fb12..540cd58e9f 100644
--- a/xen/include/xen/bitops.h
+++ b/xen/include/xen/bitops.h
@@ -1,5 +1,5 @@
-#ifndef XEN_BITOPS_H
-#define XEN_BITOPS_H
+#ifndef XEN__BITOPS_H
+#define XEN__BITOPS_H
 
 #include <xen/compiler.h>
 #include <xen/types.h>
@@ -438,4 +438,4 @@ static inline __u32 ror32(__u32 word, unsigned int shift)
 
 #define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
 
-#endif /* XEN_BITOPS_H */
+#endif /* XEN__BITOPS_H */
diff --git a/xen/include/xen/bug.h b/xen/include/xen/bug.h
index 99814c4bef..6f901fa1e4 100644
--- a/xen/include/xen/bug.h
+++ b/xen/include/xen/bug.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BUG_H__
-#define __XEN_BUG_H__
+#ifndef XEN__BUG_H
+#define XEN__BUG_H
 
 #define BUGFRAME_run_fn 0
 #define BUGFRAME_warn   1
@@ -157,7 +157,7 @@ int do_bug_frame(const struct cpu_user_regs *regs, unsigned long pc);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_BUG_H__ */
+#endif /* XEN__BUG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/byteorder/big_endian.h b/xen/include/xen/byteorder/big_endian.h
index 40eb80a390..5b33acb577 100644
--- a/xen/include/xen/byteorder/big_endian.h
+++ b/xen/include/xen/byteorder/big_endian.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_BIG_ENDIAN_H__
-#define __XEN_BYTEORDER_BIG_ENDIAN_H__
+#ifndef XEN__BYTEORDER__BIG_ENDIAN_H
+#define XEN__BYTEORDER__BIG_ENDIAN_H
 
 #ifndef __BIG_ENDIAN
 #define __BIG_ENDIAN 4321
@@ -99,4 +99,4 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
 
 #include <xen/byteorder/generic.h>
 
-#endif /* __XEN_BYTEORDER_BIG_ENDIAN_H__ */
+#endif /* XEN__BYTEORDER__BIG_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/generic.h b/xen/include/xen/byteorder/generic.h
index 8a0006b755..f97eb4771b 100644
--- a/xen/include/xen/byteorder/generic.h
+++ b/xen/include/xen/byteorder/generic.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_GENERIC_H__
-#define __XEN_BYTEORDER_GENERIC_H__
+#ifndef XEN__BYTEORDER__GENERIC_H
+#define XEN__BYTEORDER__GENERIC_H
 
 /*
  * Generic Byte-reordering support
@@ -65,4 +65,4 @@
 #define cpu_to_be16s __cpu_to_be16s
 #define be16_to_cpus __be16_to_cpus
 
-#endif /* __XEN_BYTEORDER_GENERIC_H__ */
+#endif /* XEN__BYTEORDER__GENERIC_H */
diff --git a/xen/include/xen/byteorder/little_endian.h b/xen/include/xen/byteorder/little_endian.h
index 4955632793..6e944dca1a 100644
--- a/xen/include/xen/byteorder/little_endian.h
+++ b/xen/include/xen/byteorder/little_endian.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_LITTLE_ENDIAN_H__
-#define __XEN_BYTEORDER_LITTLE_ENDIAN_H__
+#ifndef XEN__BYTEORDER__LITTLE_ENDIAN_H
+#define XEN__BYTEORDER__LITTLE_ENDIAN_H
 
 #ifndef __LITTLE_ENDIAN
 #define __LITTLE_ENDIAN 1234
@@ -99,4 +99,4 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
 
 #include <xen/byteorder/generic.h>
 
-#endif /* __XEN_BYTEORDER_LITTLE_ENDIAN_H__ */
+#endif /* XEN__BYTEORDER__LITTLE_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/swab.h b/xen/include/xen/byteorder/swab.h
index 9f817e3c44..96f8834e53 100644
--- a/xen/include/xen/byteorder/swab.h
+++ b/xen/include/xen/byteorder/swab.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_SWAB_H__
-#define __XEN_BYTEORDER_SWAB_H__
+#ifndef XEN__BYTEORDER__SWAB_H
+#define XEN__BYTEORDER__SWAB_H
 
 /*
  * Byte-swapping, independently from CPU endianness
@@ -180,4 +180,4 @@ static inline void __swab64s(__u64 *addr)
 #define swab32s __swab32s
 #define swab64s __swab64s
 
-#endif /* __XEN_BYTEORDER_SWAB_H__ */
+#endif /* XEN__BYTEORDER__SWAB_H */
diff --git a/xen/include/xen/cache.h b/xen/include/xen/cache.h
index 6ee174efa4..9aa5150188 100644
--- a/xen/include/xen/cache.h
+++ b/xen/include/xen/cache.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_CACHE_H
-#define __LINUX_CACHE_H
+#ifndef XEN__CACHE_H
+#define XEN__CACHE_H
 
 #include <asm/cache.h>
 
@@ -15,4 +15,4 @@
 #define __cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
 #endif
 
-#endif /* __LINUX_CACHE_H */
+#endif /* XEN__CACHE_H */
diff --git a/xen/include/xen/compat.h b/xen/include/xen/compat.h
index 7ec9d6567e..d1f6463530 100644
--- a/xen/include/xen/compat.h
+++ b/xen/include/xen/compat.h
@@ -2,8 +2,8 @@
  * compat.h
  */
 
-#ifndef __XEN_COMPAT_H__
-#define __XEN_COMPAT_H__
+#ifndef XEN__COMPAT_H
+#define XEN__COMPAT_H
 
 #include <xen/types.h>
 #ifdef CONFIG_HAS_COMPAT
@@ -243,4 +243,4 @@ void xlat_vcpu_runstate_info(struct vcpu_runstate_info *native);
 
 #endif
 
-#endif /* __XEN_COMPAT_H__ */
+#endif /* XEN__COMPAT_H */
diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
index b118e4ba62..e1ec208873 100644
--- a/xen/include/xen/compiler.h
+++ b/xen/include/xen/compiler.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_COMPILER_H
-#define __LINUX_COMPILER_H
+#ifndef XEN__COMPILER_H
+#define XEN__COMPILER_H
 
 #if !defined(__GNUC__) || (__GNUC__ < 4)
 #error Sorry, your compiler is too old/not recognized.
@@ -184,4 +184,4 @@
 # define CLANG_DISABLE_WARN_GCC_COMPAT_END
 #endif
 
-#endif /* __LINUX_COMPILER_H */
+#endif /* XEN__COMPILER_H */
diff --git a/xen/include/xen/config.h b/xen/include/xen/config.h
index d888b2314d..5202d25a66 100644
--- a/xen/include/xen/config.h
+++ b/xen/include/xen/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __XEN_CONFIG_H__
-#define __XEN_CONFIG_H__
+#ifndef XEN__CONFIG_H
+#define XEN__CONFIG_H
 
 #ifdef CPPCHECK
 #include <generated/compiler-def.h>
@@ -98,4 +98,4 @@
 #define ZERO_BLOCK_PTR ((void *)-1L)
 #endif
 
-#endif /* __XEN_CONFIG_H__ */
+#endif /* XEN__CONFIG_H */
diff --git a/xen/include/xen/console.h b/xen/include/xen/console.h
index 6dfbade3ec..36956faa17 100644
--- a/xen/include/xen/console.h
+++ b/xen/include/xen/console.h
@@ -4,8 +4,8 @@
  * Xen header file concerning console access.
  */
 
-#ifndef __CONSOLE_H__
-#define __CONSOLE_H__
+#ifndef XEN__CONSOLE_H
+#define XEN__CONSOLE_H
 
 #include <xen/inttypes.h>
 #include <public/xen.h>
@@ -50,4 +50,4 @@ void console_serial_puts(const char *s, size_t nr);
 
 extern int8_t opt_console_xen;
 
-#endif /* __CONSOLE_H__ */
+#endif /* XEN__CONSOLE_H */
diff --git a/xen/include/xen/consoled.h b/xen/include/xen/consoled.h
index bd7ab6329e..6975e50631 100644
--- a/xen/include/xen/consoled.h
+++ b/xen/include/xen/consoled.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CONSOLED_H__
-#define __XEN_CONSOLED_H__
+#ifndef XEN__CONSOLED_H
+#define XEN__CONSOLED_H
 
 #include <public/io/console.h>
 
@@ -8,7 +8,7 @@ struct xencons_interface *consoled_get_ring_addr(void);
 void consoled_guest_rx(void);
 void consoled_guest_tx(char c);
 
-#endif /* __XEN_CONSOLED_H__ */
+#endif /* XEN__CONSOLED_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/const.h b/xen/include/xen/const.h
index baf28ef144..16f550959d 100644
--- a/xen/include/xen/const.h
+++ b/xen/include/xen/const.h
@@ -1,7 +1,7 @@
 /* const.h: Macros for dealing with constants.  */
 
-#ifndef __XEN_CONST_H__
-#define __XEN_CONST_H__
+#ifndef XEN__CONST_H
+#define XEN__CONST_H
 
 /* Some constant macros are used in both assembler and
  * C code.  Therefore we cannot annotate them always with
@@ -23,4 +23,4 @@
 
 #define BIT(pos, sfx)   (_AC(1, sfx) << (pos))
 
-#endif /* __XEN_CONST_H__ */
+#endif /* XEN__CONST_H */
diff --git a/xen/include/xen/coverage.h b/xen/include/xen/coverage.h
index ba5fb67947..76101455e0 100644
--- a/xen/include/xen/coverage.h
+++ b/xen/include/xen/coverage.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_COV_H
-#define _XEN_COV_H
+#ifndef XEN__COVERAGE_H
+#define XEN__COVERAGE_H
 
 #ifdef CONFIG_COVERAGE
 #include <public/sysctl.h>
diff --git a/xen/include/xen/cper.h b/xen/include/xen/cper.h
index de8f385bdd..8528ae2447 100644
--- a/xen/include/xen/cper.h
+++ b/xen/include/xen/cper.h
@@ -18,8 +18,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef LINUX_CPER_H
-#define LINUX_CPER_H
+#ifndef XEN__CPER_H
+#define XEN__CPER_H
 
 #include <xen/types.h>
 #include <xen/string.h>
diff --git a/xen/include/xen/cpu.h b/xen/include/xen/cpu.h
index 6bf5786750..8ec0e8ef61 100644
--- a/xen/include/xen/cpu.h
+++ b/xen/include/xen/cpu.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CPU_H__
-#define __XEN_CPU_H__
+#ifndef XEN__CPU_H
+#define XEN__CPU_H
 
 #include <xen/types.h>
 #include <xen/spinlock.h>
@@ -83,4 +83,4 @@ int __cpu_up(unsigned int cpu);
 void __cpu_disable(void);
 void __cpu_die(unsigned int cpu);
 
-#endif /* __XEN_CPU_H__ */
+#endif /* XEN__CPU_H */
diff --git a/xen/include/xen/cpuidle.h b/xen/include/xen/cpuidle.h
index 705d0c1135..0e54eb7d9b 100644
--- a/xen/include/xen/cpuidle.h
+++ b/xen/include/xen/cpuidle.h
@@ -23,8 +23,8 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#ifndef _XEN_CPUIDLE_H
-#define _XEN_CPUIDLE_H
+#ifndef XEN__CPUIDLE_H
+#define XEN__CPUIDLE_H
 
 #include <xen/cpumask.h>
 #include <xen/spinlock.h>
@@ -98,4 +98,4 @@ extern void cpuidle_wakeup_mwait(cpumask_t *mask);
 
 extern void menu_get_trace_data(u32 *expected, u32 *pred);
 
-#endif /* _XEN_CPUIDLE_H */
+#endif /* XEN__CPUIDLE_H */
diff --git a/xen/include/xen/cpumask.h b/xen/include/xen/cpumask.h
index b713bb69a9..4324af7c36 100644
--- a/xen/include/xen/cpumask.h
+++ b/xen/include/xen/cpumask.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CPUMASK_H
-#define __XEN_CPUMASK_H
+#ifndef XEN__CPUMASK_H
+#define XEN__CPUMASK_H
 
 /*
  * Cpumasks provide a bitmap suitable for representing the
@@ -466,4 +466,4 @@ int cpumask_to_xenctl_bitmap(struct xenctl_bitmap *xenctl_cpumap,
 int xenctl_bitmap_to_cpumask(cpumask_var_t *cpumask,
                              const struct xenctl_bitmap *xenctl_cpumap);
 
-#endif /* __XEN_CPUMASK_H */
+#endif /* XEN__CPUMASK_H */
diff --git a/xen/include/xen/ctype.h b/xen/include/xen/ctype.h
index 773ac27aa4..da4122f6ab 100644
--- a/xen/include/xen/ctype.h
+++ b/xen/include/xen/ctype.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_CTYPE_H
-#define _LINUX_CTYPE_H
+#ifndef XEN__CTYPE_H
+#define XEN__CTYPE_H
 
 /*
  * NOTE! This ctype does not handle EOF like the standard C
diff --git a/xen/include/xen/decompress.h b/xen/include/xen/decompress.h
index f5bc17f2b6..d65a3a4346 100644
--- a/xen/include/xen/decompress.h
+++ b/xen/include/xen/decompress.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_GENERIC_H
-#define __XEN_GENERIC_H
+#ifndef XEN__DECOMPRESS_H
+#define XEN__DECOMPRESS_H
 
 typedef int decompress_fn(unsigned char *inbuf, unsigned int len,
                           int (*fill)(void*, unsigned int),
diff --git a/xen/include/xen/delay.h b/xen/include/xen/delay.h
index 8fd3b8f99f..269c034ce1 100644
--- a/xen/include/xen/delay.h
+++ b/xen/include/xen/delay.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_DELAY_H
-#define _LINUX_DELAY_H
+#ifndef XEN__DELAY_H
+#define XEN__DELAY_H
 
 /* Copyright (C) 1993 Linus Torvalds */
 
@@ -11,4 +11,4 @@ static inline void mdelay(unsigned long msec)
         udelay(1000);
 }
 
-#endif /* defined(_LINUX_DELAY_H) */
+#endif /* defined(XEN__DELAY_H) */
diff --git a/xen/include/xen/dm.h b/xen/include/xen/dm.h
index 18417d57f1..27d69a5c91 100644
--- a/xen/include/xen/dm.h
+++ b/xen/include/xen/dm.h
@@ -14,8 +14,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_DM_H__
-#define __XEN_DM_H__
+#ifndef XEN__DM_H
+#define XEN__DM_H
 
 #include <xen/types.h>
 
@@ -31,7 +31,7 @@ struct dmop_args {
 
 int dm_op(const struct dmop_args *op_args);
 
-#endif /* __XEN_DM_H__ */
+#endif /* XEN__DM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/dmi.h b/xen/include/xen/dmi.h
index ed6ffda315..16f13195d7 100644
--- a/xen/include/xen/dmi.h
+++ b/xen/include/xen/dmi.h
@@ -1,5 +1,5 @@
-#ifndef __DMI_H__
-#define __DMI_H__
+#ifndef XEN__DMI_H
+#define XEN__DMI_H
 
 enum dmi_field {
 	DMI_NONE,
@@ -44,4 +44,4 @@ extern void dmi_efi_get_table(const void *smbios, const void *smbios3);
 bool dmi_get_date(int field, int *yearp, int *monthp, int *dayp);
 extern void dmi_end_boot(void);
 
-#endif	/* __DMI_H__ */
+#endif	/* XEN__DMI_H */
diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h
index 3de5635291..99f312e9b4 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -1,6 +1,6 @@
 
-#ifndef __XEN_DOMAIN_H__
-#define __XEN_DOMAIN_H__
+#ifndef XEN__DOMAIN_H
+#define XEN__DOMAIN_H
 
 #include <xen/numa.h>
 #include <xen/types.h>
@@ -171,4 +171,4 @@ extern bool vmtrace_available;
 
 extern bool vpmu_is_available;
 
-#endif /* __XEN_DOMAIN_H__ */
+#endif /* XEN__DOMAIN_H */
diff --git a/xen/include/xen/domain_page.h b/xen/include/xen/domain_page.h
index c89b149e54..4ccf28f26d 100644
--- a/xen/include/xen/domain_page.h
+++ b/xen/include/xen/domain_page.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2003-2006, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_DOMAIN_PAGE_H__
-#define __XEN_DOMAIN_PAGE_H__
+#ifndef XEN__DOMAIN_PAGE_H
+#define XEN__DOMAIN_PAGE_H
 
 #include <xen/mm.h>
 
@@ -77,4 +77,4 @@ static inline void unmap_domain_page_global(const void *va) {};
     (p) = NULL;                     \
 } while ( false )
 
-#endif /* __XEN_DOMAIN_PAGE_H__ */
+#endif /* XEN__DOMAIN_PAGE_H */
diff --git a/xen/include/xen/dt-overlay.h b/xen/include/xen/dt-overlay.h
index b2cedf3f2a..cd44a5cacb 100644
--- a/xen/include/xen/dt-overlay.h
+++ b/xen/include/xen/dt-overlay.h
@@ -8,8 +8,8 @@
  * Written by Vikram Garhwal <vikram.garhwal@amd.com>
  *
  */
-#ifndef __XEN_DT_OVERLAY_H__
-#define __XEN_DT_OVERLAY_H__
+#ifndef XEN__DT_OVERLAY_H
+#define XEN__DT_OVERLAY_H
 
 #include <xen/device_tree.h>
 #include <xen/list.h>
@@ -58,7 +58,7 @@ static inline long dt_overlay_domctl(struct domain *d,
 }
 #endif
 
-#endif /* __XEN_DT_OVERLAY_H__ */
+#endif /* XEN__DT_OVERLAY_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/early_printk.h b/xen/include/xen/early_printk.h
index 5d72293793..41ae0dded1 100644
--- a/xen/include/xen/early_printk.h
+++ b/xen/include/xen/early_printk.h
@@ -1,8 +1,8 @@
 /*
  * printk() for use before the console is initialized
  */
-#ifndef __XEN_EARLY_PRINTK_H__
-#define __XEN_EARLY_PRINTK_H__
+#ifndef XEN__EARLY_PRINTK_H
+#define XEN__EARLY_PRINTK_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/xen/earlycpio.h b/xen/include/xen/earlycpio.h
index 16d9404d73..9e5d740be9 100644
--- a/xen/include/xen/earlycpio.h
+++ b/xen/include/xen/earlycpio.h
@@ -1,5 +1,5 @@
-#ifndef _EARLYCPIO_H
-#define _EARLYCPIO_H
+#ifndef XEN__EARLYCPIO_H
+#define XEN__EARLYCPIO_H
 
 #define MAX_CPIO_FILE_NAME 18
 
@@ -12,4 +12,4 @@ struct cpio_data {
 struct cpio_data find_cpio_data(const char *path, void *data, size_t len,
 				long *offset);
 
-#endif /* _EARLYCPIO_H */
+#endif /* XEN__EARLYCPIO_H */
diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h
index 160804e294..bc3ddffd6d 100644
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_EFI_H__
-#define __XEN_EFI_H__
+#ifndef XEN__EFI_H
+#define XEN__EFI_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -55,4 +55,4 @@ int efi_compat_runtime_call(struct compat_pf_efi_runtime_call *op);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_EFI_H__ */
+#endif /* XEN__EFI_H */
diff --git a/xen/include/xen/elf.h b/xen/include/xen/elf.h
index 4199b4d6e6..48d8dc4ca8 100644
--- a/xen/include/xen/elf.h
+++ b/xen/include/xen/elf.h
@@ -24,8 +24,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef __XEN_ELF_H__
-#define __XEN_ELF_H__
+#ifndef XEN__ELF_H
+#define XEN__ELF_H
 
 #include <xen/elfstructs.h>
 
@@ -34,4 +34,4 @@
 #define ELFNOTE_DESC(_n_) (ELFNOTE_NAME(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
 #define ELFNOTE_NEXT(_n_) ((Elf_Note *)(ELFNOTE_DESC(_n_) + ELFNOTE_ALIGN((_n_)->descsz)))
 
-#endif /* __XEN_ELF_H__ */
+#endif /* XEN__ELF_H */
diff --git a/xen/include/xen/elfcore.h b/xen/include/xen/elfcore.h
index 0d78033424..e5b18a5eff 100644
--- a/xen/include/xen/elfcore.h
+++ b/xen/include/xen/elfcore.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ELFCOREC_H__
-#define __ELFCOREC_H__
+#ifndef XEN__ELFCORE_H
+#define XEN__ELFCORE_H
 
 #include <xen/types.h>
 #include <xen/elf.h>
@@ -71,7 +71,7 @@ typedef struct crash_xen_info {
 #endif
 } crash_xen_info_t;
 
-#endif /* __ELFCOREC_H__ */
+#endif /* XEN__ELFCORE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/elfstructs.h b/xen/include/xen/elfstructs.h
index eb6b87a823..df4712c21a 100644
--- a/xen/include/xen/elfstructs.h
+++ b/xen/include/xen/elfstructs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_ELFSTRUCTS_H__
-#define __XEN_ELFSTRUCTS_H__
+#ifndef XEN__ELFSTRUCTS_H
+#define XEN__ELFSTRUCTS_H
 /*
  * Copyright (c) 1995, 1996 Erik Theisen.  All rights reserved.
  *
@@ -620,4 +620,4 @@ typedef struct {
 #define AuxInfo		Aux64Info
 #endif
 
-#endif /* __XEN_ELFSTRUCTS_H__ */
+#endif /* XEN__ELFSTRUCTS_H */
diff --git a/xen/include/xen/err.h b/xen/include/xen/err.h
index cbdd1bf7f8..52ac753425 100644
--- a/xen/include/xen/err.h
+++ b/xen/include/xen/err.h
@@ -1,5 +1,5 @@
-#if !defined(__XEN_ERR_H__) && !defined(__ASSEMBLY__)
-#define __XEN_ERR_H__
+#if !defined(XEN__ERR_H) && !defined(__ASSEMBLY__)
+#define XEN__ERR_H
 
 #include <xen/compiler.h>
 #include <xen/errno.h>
@@ -41,4 +41,4 @@ static inline int __must_check PTR_RET(const void *ptr)
 	return IS_ERR(ptr) ? PTR_ERR(ptr) : 0;
 }
 
-#endif /* __XEN_ERR_H__ */
+#endif /* XEN__ERR_H */
diff --git a/xen/include/xen/errno.h b/xen/include/xen/errno.h
index 506674701f..bb99a2fdd8 100644
--- a/xen/include/xen/errno.h
+++ b/xen/include/xen/errno.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_ERRNO_H__
-#define __XEN_ERRNO_H__
+#ifndef XEN__ERRNO_H
+#define XEN__ERRNO_H
 
 #ifndef __ASSEMBLY__
 
@@ -15,4 +15,4 @@ enum {
 
 #endif /* __ASSEMBLY__ */
 
-#endif /*  __XEN_ERRNO_H__ */
+#endif /*  XEN__ERRNO_H */
diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h
index 48b79f3d62..e0643abe53 100644
--- a/xen/include/xen/event.h
+++ b/xen/include/xen/event.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2002-2006, K A Fraser
  */
 
-#ifndef __XEN_EVENT_H__
-#define __XEN_EVENT_H__
+#ifndef XEN__EVENT_H
+#define XEN__EVENT_H
 
 #include <xen/sched.h>
 #include <xen/smp.h>
@@ -302,4 +302,4 @@ static inline int evtchn_port_poll(struct domain *d, evtchn_port_t port)
     return rc;
 }
 
-#endif /* __XEN_EVENT_H__ */
+#endif /* XEN__EVENT_H */
diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h
index 50edfecfb6..31e56925a7 100644
--- a/xen/include/xen/grant_table.h
+++ b/xen/include/xen/grant_table.h
@@ -20,8 +20,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_GRANT_TABLE_H__
-#define __XEN_GRANT_TABLE_H__
+#ifndef XEN__GRANT_TABLE_H
+#define XEN__GRANT_TABLE_H
 
 #include <xen/mm-frame.h>
 #include <xen/rwlock.h>
@@ -117,4 +117,4 @@ static inline int gnttab_acquire_resource(
 
 #endif /* CONFIG_GRANT_TABLE */
 
-#endif /* __XEN_GRANT_TABLE_H__ */
+#endif /* XEN__GRANT_TABLE_H */
diff --git a/xen/include/xen/guest_access.h b/xen/include/xen/guest_access.h
index 6489924db6..62b7d8838c 100644
--- a/xen/include/xen/guest_access.h
+++ b/xen/include/xen/guest_access.h
@@ -4,8 +4,8 @@
  * Copyright (x) 2006, K A Fraser
  */
 
-#ifndef __XEN_GUEST_ACCESS_H__
-#define __XEN_GUEST_ACCESS_H__
+#ifndef XEN__GUEST_ACCESS_H
+#define XEN__GUEST_ACCESS_H
 
 #include <asm/guest_access.h>
 #include <xen/types.h>
@@ -186,7 +186,7 @@
 char *safe_copy_string_from_guest(XEN_GUEST_HANDLE(char) u_buf,
                                   size_t size, size_t max_size);
 
-#endif /* __XEN_GUEST_ACCESS_H__ */
+#endif /* XEN__GUEST_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/gunzip.h b/xen/include/xen/gunzip.h
index 805833127a..12fa062b87 100644
--- a/xen/include/xen/gunzip.h
+++ b/xen/include/xen/gunzip.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_GUNZIP_H
-#define __XEN_GUNZIP_H
+#ifndef XEN__GUNZIP_H
+#define XEN__GUNZIP_H
 
 int gzip_check(char *image, unsigned long image_len);
 int perform_gunzip(char *output, char *image, unsigned long image_len);
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index f307dfb597..93263390f9 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -2,8 +2,8 @@
  * hypercall.h
  */
 
-#ifndef __XEN_HYPERCALL_H__
-#define __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
+#define XEN__HYPERCALL_H
 
 #include <xen/types.h>
 #include <xen/time.h>
@@ -58,4 +58,4 @@ common_vcpu_op(int cmd,
 
 void arch_get_xen_caps(xen_capabilities_info_t *info);
 
-#endif /* __XEN_HYPERCALL_H__ */
+#endif /* XEN__HYPERCALL_H */
diff --git a/xen/include/xen/init.h b/xen/include/xen/init.h
index 0a42238337..39ad1d71d4 100644
--- a/xen/include/xen/init.h
+++ b/xen/include/xen/init.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_INIT_H
-#define _LINUX_INIT_H
+#ifndef XEN__INIT_H
+#define XEN__INIT_H
 
 /*
  * Mark functions and data as being only used at initialization
@@ -82,4 +82,4 @@ void do_initcalls(void);
 #define __hwdom_initdata  __initdata
 #endif
 
-#endif /* _LINUX_INIT_H */
+#endif /* XEN__INIT_H */
diff --git a/xen/include/xen/inttypes.h b/xen/include/xen/inttypes.h
index 28c0053f1c..b7172f8746 100644
--- a/xen/include/xen/inttypes.h
+++ b/xen/include/xen/inttypes.h
@@ -18,8 +18,8 @@
  *	ISO C99: 7.8 Format conversion of integer types	<inttypes.h>
  */
 
-#ifndef _XEN_INTTYPES_H
-#define _XEN_INTTYPES_H	1
+#ifndef XEN__INTTYPES_H
+#define XEN__INTTYPES_H	1
 
 #include <xen/types.h>
 
@@ -245,4 +245,4 @@
 # define SCNuPTR	__PRIPTR_PREFIX "u"
 # define SCNxPTR	__PRIPTR_PREFIX "x"
 
-#endif /* _XEN_INTTYPES_H */
+#endif /* XEN__INTTYPES_H */
diff --git a/xen/include/xen/iocap.h b/xen/include/xen/iocap.h
index ffbc48b60f..c9ec5c931b 100644
--- a/xen/include/xen/iocap.h
+++ b/xen/include/xen/iocap.h
@@ -4,8 +4,8 @@
  * Per-domain I/O capabilities.
  */
 
-#ifndef __XEN_IOCAP_H__
-#define __XEN_IOCAP_H__
+#ifndef XEN__IOCAP_H
+#define XEN__IOCAP_H
 
 #include <xen/sched.h>
 #include <xen/rangeset.h>
@@ -66,4 +66,4 @@ static inline int iomem_deny_access(struct domain *d, unsigned long s,
     ? irq__ : 0;                                        \
 })
 
-#endif /* __XEN_IOCAP_H__ */
+#endif /* XEN__IOCAP_H */
diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
index 29a17e8ff5..ce54ff2d57 100644
--- a/xen/include/xen/ioreq.h
+++ b/xen/include/xen/ioreq.h
@@ -16,8 +16,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_IOREQ_H__
-#define __XEN_IOREQ_H__
+#ifndef XEN__IOREQ_H
+#define XEN__IOREQ_H
 
 #include <xen/sched.h>
 
@@ -138,7 +138,7 @@ bool arch_ioreq_server_get_type_addr(const struct domain *d, const ioreq_t *p,
                                      uint8_t *type, uint64_t *addr);
 void arch_ioreq_domain_init(struct domain *d);
 
-#endif /* __XEN_IOREQ_H__ */
+#endif /* XEN__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h
index 95034c0d6b..c037e104c3 100644
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_IRQ_H__
-#define __XEN_IRQ_H__
+#ifndef XEN__IRQ_H
+#define XEN__IRQ_H
 
 #include <xen/cpumask.h>
 #include <xen/rcupdate.h>
@@ -211,4 +211,4 @@ unsigned int arch_hwdom_irqs(const struct domain *d);
 void arch_evtchn_bind_pirq(struct domain *d, int pirq);
 #endif
 
-#endif /* __XEN_IRQ_H__ */
+#endif /* XEN__IRQ_H */
diff --git a/xen/include/xen/irq_cpustat.h b/xen/include/xen/irq_cpustat.h
index b9629f25c2..81e8f87d49 100644
--- a/xen/include/xen/irq_cpustat.h
+++ b/xen/include/xen/irq_cpustat.h
@@ -1,5 +1,5 @@
-#ifndef __irq_cpustat_h
-#define __irq_cpustat_h
+#ifndef XEN__IRQ_CPUSTAT_H
+#define XEN__IRQ_CPUSTAT_H
 
 /*
  * Contains default mappings for irq_cpustat_t, used by almost every
@@ -26,4 +26,4 @@ extern irq_cpustat_t irq_stat[];
 #define local_irq_count(cpu)	__IRQ_STAT((cpu), __local_irq_count)
 #define mwait_wakeup(cpu)	__IRQ_STAT((cpu), __mwait_wakeup)
 
-#endif	/* __irq_cpustat_h */
+#endif	/* XEN__IRQ_CPUSTAT_H */
diff --git a/xen/include/xen/kconfig.h b/xen/include/xen/kconfig.h
index c25dc0f6c2..820836b0a1 100644
--- a/xen/include/xen/kconfig.h
+++ b/xen/include/xen/kconfig.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KCONFIG_H
-#define __XEN_KCONFIG_H
+#ifndef XEN__KCONFIG_H
+#define XEN__KCONFIG_H
 
 #include <generated/autoconf.h>
 
@@ -46,4 +46,4 @@
 #define STATIC_IF_NOT(option) static_if_not(option)
 #endif
 
-#endif /* __XEN_KCONFIG_H */
+#endif /* XEN__KCONFIG_H */
diff --git a/xen/include/xen/kernel.h b/xen/include/xen/kernel.h
index c5b6cc9777..3b6687e990 100644
--- a/xen/include/xen/kernel.h
+++ b/xen/include/xen/kernel.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_KERNEL_H
-#define _LINUX_KERNEL_H
+#ifndef XEN__KERNEL_H
+#define XEN__KERNEL_H
 
 /*
  * 'kernel.h' contains some often-used function prototypes etc
@@ -100,5 +100,5 @@ struct vcpu;
 void cf_check show_execution_state(const struct cpu_user_regs *regs);
 void vcpu_show_execution_state(struct vcpu *v);
 
-#endif /* _LINUX_KERNEL_H */
+#endif /* XEN__KERNEL_H */
 
diff --git a/xen/include/xen/keyhandler.h b/xen/include/xen/keyhandler.h
index 6fee878fdf..5362e6de04 100644
--- a/xen/include/xen/keyhandler.h
+++ b/xen/include/xen/keyhandler.h
@@ -7,8 +7,8 @@
  * nicer fashion than just editing the serial/keyboard drivers.
  */
 
-#ifndef __XEN_KEYHANDLER_H__
-#define __XEN_KEYHANDLER_H__
+#ifndef XEN__KEYHANDLER_H
+#define XEN__KEYHANDLER_H
 
 #include <xen/types.h>
 
@@ -57,4 +57,4 @@ enum crash_reason {
 
 void keyhandler_crash_action(enum crash_reason reason);
 
-#endif /* __XEN_KEYHANDLER_H__ */
+#endif /* XEN__KEYHANDLER_H */
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 81b722ea3e..5d75fca614 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -1,5 +1,5 @@
-#ifndef __LIB_H__
-#define __LIB_H__
+#ifndef XEN__LIB_H
+#define XEN__LIB_H
 
 #include <xen/macros.h>
 
@@ -202,4 +202,4 @@ void *bsearch(const void *key, const void *base, size_t num, size_t size,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __LIB_H__ */
+#endif /* XEN__LIB_H */
diff --git a/xen/include/xen/libelf.h b/xen/include/xen/libelf.h
index a99d33c251..82151e3292 100644
--- a/xen/include/xen/libelf.h
+++ b/xen/include/xen/libelf.h
@@ -20,8 +20,8 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#ifndef __XEN_LIBELF_H__
-#define __XEN_LIBELF_H__
+#ifndef XEN__LIBELF_H
+#define XEN__LIBELF_H
 
 #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
 #define XEN_ELF_LITTLE_ENDIAN
@@ -504,4 +504,4 @@ static inline void ELF_ADVANCE_DEST(struct elf_binary *elf, uint64_t amount)
  * is in use or until elf_set_xdest(,0,0) is called. */
 void elf_set_xdest(struct elf_binary *elf, void *addr, uint64_t size);
 
-#endif /* __XEN_LIBELF_H__ */
+#endif /* XEN__LIBELF_H */
diff --git a/xen/include/xen/linkage.h b/xen/include/xen/linkage.h
index 3d401b88c1..a81300ccff 100644
--- a/xen/include/xen/linkage.h
+++ b/xen/include/xen/linkage.h
@@ -1,5 +1,5 @@
-#ifndef __LINKAGE_H__
-#define __LINKAGE_H__
+#ifndef XEN__LINKAGE_H
+#define XEN__LINKAGE_H
 
 #ifdef __ASSEMBLY__
 
@@ -64,4 +64,4 @@
 
 #endif /*  __ASSEMBLY__ */
 
-#endif /* __LINKAGE_H__ */
+#endif /* XEN__LINKAGE_H */
diff --git a/xen/include/xen/linux-compat.h b/xen/include/xen/linux-compat.h
index 1f4186102a..32f08b03f0 100644
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -6,8 +6,8 @@
  * files.
  */
 
-#ifndef __XEN_LINUX_COMPAT_H__
-#define __XEN_LINUX_COMPAT_H__
+#ifndef XEN__LINUX_COMPAT_H
+#define XEN__LINUX_COMPAT_H
 
 #include <xen/types.h>
 
@@ -21,4 +21,4 @@ typedef paddr_t phys_addr_t;
 
 #define __ffs(x) (ffsl(x) - 1UL)
 
-#endif /* __XEN_LINUX_COMPAT_H__ */
+#endif /* XEN__LINUX_COMPAT_H */
diff --git a/xen/include/xen/list.h b/xen/include/xen/list.h
index 62169f4674..4cfb196940 100644
--- a/xen/include/xen/list.h
+++ b/xen/include/xen/list.h
@@ -4,8 +4,8 @@
  * Useful linked-list definitions taken from the Linux kernel (2.6.18).
  */
 
-#ifndef __XEN_LIST_H__
-#define __XEN_LIST_H__
+#ifndef XEN__LIST_H
+#define XEN__LIST_H
 
 #include <xen/bug.h>
 #include <asm/system.h>
@@ -979,4 +979,4 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
           ({ tpos = hlist_entry(pos, typeof(*(tpos)), member); 1;});    \
           (pos) = (pos)->next)
 
-#endif /* __XEN_LIST_H__ */
+#endif /* XEN__LIST_H */
diff --git a/xen/include/xen/list_sort.h b/xen/include/xen/list_sort.h
index 13ce0a55ec..9ec309ac83 100644
--- a/xen/include/xen/list_sort.h
+++ b/xen/include/xen/list_sort.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_LIST_SORT_H
-#define _LINUX_LIST_SORT_H
+#ifndef XEN__LIST_SORT_H
+#define XEN__LIST_SORT_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/xen/lz4.h b/xen/include/xen/lz4.h
index fa20520110..fd11d01ef9 100644
--- a/xen/include/xen/lz4.h
+++ b/xen/include/xen/lz4.h
@@ -1,5 +1,5 @@
-#ifndef __LZ4_H__
-#define __LZ4_H__
+#ifndef XEN__LZ4_H
+#define XEN__LZ4_H
 
 /*
  * LZ4 Kernel Interface
diff --git a/xen/include/xen/lzo.h b/xen/include/xen/lzo.h
index e920027fad..7d3949e3f1 100644
--- a/xen/include/xen/lzo.h
+++ b/xen/include/xen/lzo.h
@@ -1,5 +1,5 @@
-#ifndef __LZO_H__
-#define __LZO_H__
+#ifndef XEN__LZO_H
+#define XEN__LZO_H
 /*
  *  LZO Public Kernel Interface
  *  A mini subset of the LZO real-time data compression library
diff --git a/xen/include/xen/macros.h b/xen/include/xen/macros.h
index 19caaa8026..9e470c7649 100644
--- a/xen/include/xen/macros.h
+++ b/xen/include/xen/macros.h
@@ -1,5 +1,5 @@
-#ifndef __MACROS_H__
-#define __MACROS_H__
+#ifndef XEN__MACROS_H
+#define XEN__MACROS_H
 
 #define ROUNDUP(x, a) (((x) + (a) - 1) & ~((a) - 1))
 
@@ -147,7 +147,7 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MACROS_H__ */
+#endif /* XEN__MACROS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/mm-frame.h b/xen/include/xen/mm-frame.h
index d973aec901..d8dffe22d6 100644
--- a/xen/include/xen/mm-frame.h
+++ b/xen/include/xen/mm-frame.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_FRAME_NUM_H__
-#define __XEN_FRAME_NUM_H__
+#ifndef XEN__MM_FRAME_H
+#define XEN__MM_FRAME_H
 
 #include <xen/kernel.h>
 #include <xen/typesafe.h>
@@ -85,4 +85,4 @@ TYPE_SAFE(unsigned long, pfn);
 #define pfn_x
 #endif
 
-#endif /* __XEN_FRAME_NUM_H__ */
+#endif /* XEN__MM_FRAME_H */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 7561297a75..3a64b013c4 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -58,8 +58,8 @@
  *   documented, meanings.
  */
 
-#ifndef __XEN_MM_H__
-#define __XEN_MM_H__
+#ifndef XEN__MM_H
+#define XEN__MM_H
 
 #include <xen/bug.h>
 #include <xen/compiler.h>
@@ -648,4 +648,4 @@ static inline void put_page_alloc_ref(struct page_info *page)
     }
 }
 
-#endif /* __XEN_MM_H__ */
+#endif /* XEN__MM_H */
diff --git a/xen/include/xen/msi.h b/xen/include/xen/msi.h
index c903d0050c..4e462881ae 100644
--- a/xen/include/xen/msi.h
+++ b/xen/include/xen/msi.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_MSI_H_
-#define __XEN_MSI_H_
+#ifndef XEN__MSI_H
+#define XEN__MSI_H
 
 #include <xen/pci.h>
 
diff --git a/xen/include/xen/multiboot.h b/xen/include/xen/multiboot.h
index 80a1761d9e..30959a5bb6 100644
--- a/xen/include/xen/multiboot.h
+++ b/xen/include/xen/multiboot.h
@@ -14,8 +14,8 @@
    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 __MULTIBOOT_H__
-#define __MULTIBOOT_H__
+#ifndef XEN__MULTIBOOT_H
+#define XEN__MULTIBOOT_H
 
 #include "const.h"
 
@@ -130,4 +130,4 @@ typedef struct memory_map memory_map_t;
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MULTIBOOT_H__ */
+#endif /* XEN__MULTIBOOT_H */
diff --git a/xen/include/xen/multiboot2.h b/xen/include/xen/multiboot2.h
index f792040205..20c6082ea9 100644
--- a/xen/include/xen/multiboot2.h
+++ b/xen/include/xen/multiboot2.h
@@ -23,8 +23,8 @@
  *  IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#ifndef __MULTIBOOT2_H__
-#define __MULTIBOOT2_H__
+#ifndef XEN__MULTIBOOT2_H
+#define XEN__MULTIBOOT2_H
 
 /* The magic field should contain this.  */
 #define MULTIBOOT2_HEADER_MAGIC                         0xe85250d6
@@ -232,4 +232,4 @@ typedef struct {
 } multiboot2_tag_module_t;
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MULTIBOOT2_H__ */
+#endif /* XEN__MULTIBOOT2_H */
diff --git a/xen/include/xen/multicall.h b/xen/include/xen/multicall.h
index 5bebeca7b2..fd71dbd9a1 100644
--- a/xen/include/xen/multicall.h
+++ b/xen/include/xen/multicall.h
@@ -2,8 +2,8 @@
  * multicall.h
  */
 
-#ifndef __XEN_MULTICALL_H__
-#define __XEN_MULTICALL_H__
+#ifndef XEN__MULTICALL_H
+#define XEN__MULTICALL_H
 
 #ifdef CONFIG_COMPAT
 #include <compat/xen.h>
@@ -27,4 +27,4 @@ enum mc_disposition {
     mc_preempt,
 } arch_do_multicall_call(struct mc_state *mcs);
 
-#endif /* __XEN_MULTICALL_H__ */
+#endif /* XEN__MULTICALL_H */
diff --git a/xen/include/xen/nodemask.h b/xen/include/xen/nodemask.h
index 1dd6c7458e..8cab82c7a2 100644
--- a/xen/include/xen/nodemask.h
+++ b/xen/include/xen/nodemask.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_NODEMASK_H
-#define __LINUX_NODEMASK_H
+#ifndef XEN__NODEMASK_H
+#define XEN__NODEMASK_H
 
 /*
  * Nodemasks provide a bitmap suitable for representing the
@@ -290,4 +290,4 @@ extern nodemask_t node_online_map;
 
 #define for_each_online_node(node) for_each_node_mask((node), node_online_map)
 
-#endif /* __LINUX_NODEMASK_H */
+#endif /* XEN__NODEMASK_H */
diff --git a/xen/include/xen/nospec.h b/xen/include/xen/nospec.h
index 828dbd4e0a..99e6d5a6e9 100644
--- a/xen/include/xen/nospec.h
+++ b/xen/include/xen/nospec.h
@@ -4,8 +4,8 @@
 /* Copyright(c) 2018 Intel Corporation. All rights reserved. */
 /* Copyright(c) 2018 Citrix Systems R&D Ltd. All rights reserved. */
 
-#ifndef XEN_NOSPEC_H
-#define XEN_NOSPEC_H
+#ifndef XEN__NOSPEC_H
+#define XEN__NOSPEC_H
 
 #include <xen/stdbool.h>
 
@@ -87,7 +87,7 @@ static always_inline bool lock_evaluate_nospec(bool condition)
 #endif
 }
 
-#endif /* XEN_NOSPEC_H */
+#endif /* XEN__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/notifier.h b/xen/include/xen/notifier.h
index 05359e8a85..e2ce641311 100644
--- a/xen/include/xen/notifier.h
+++ b/xen/include/xen/notifier.h
@@ -7,8 +7,8 @@
  * Original code from Linux kernel 2.6.27 (Alan Cox <Alan.Cox@linux.org>)
  */
  
-#ifndef __XEN_NOTIFIER_H__
-#define __XEN_NOTIFIER_H__
+#ifndef XEN__NOTIFIER_H
+#define XEN__NOTIFIER_H
 
 #include <xen/types.h>
 #include <xen/errno.h>
@@ -68,4 +68,4 @@ static inline int notifier_to_errno(int ret)
     return (ret == NOTIFY_DONE) ? 0 : -(ret & ~NOTIFY_STOP_MASK);
 }
 
-#endif /* __XEN_NOTIFIER_H__ */
+#endif /* XEN__NOTIFIER_H */
diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
index fd1511a6fb..1617901fc2 100644
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_NUMA_H
-#define _XEN_NUMA_H
+#ifndef XEN__NUMA_H
+#define XEN__NUMA_H
 
 #include <xen/mm-frame.h>
 
@@ -135,4 +135,4 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
 
 #define page_to_nid(pg) mfn_to_nid(page_to_mfn(pg))
 
-#endif /* _XEN_NUMA_H */
+#endif /* XEN__NUMA_H */
diff --git a/xen/include/xen/p2m-common.h b/xen/include/xen/p2m-common.h
index a322e738ef..7cee4c92f2 100644
--- a/xen/include/xen/p2m-common.h
+++ b/xen/include/xen/p2m-common.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_P2M_COMMON_H
-#define _XEN_P2M_COMMON_H
+#ifndef XEN__P2M_COMMON_H
+#define XEN__P2M_COMMON_H
 
 #include <xen/mm-frame.h>
 
@@ -41,4 +41,4 @@ int __must_check check_get_page_from_gfn(struct domain *d, gfn_t gfn,
                                          struct page_info **page_p);
 
 
-#endif /* _XEN_P2M_COMMON_H */
+#endif /* XEN__P2M_COMMON_H */
diff --git a/xen/include/xen/page-defs.h b/xen/include/xen/page-defs.h
index 682da6b7b4..c06f247921 100644
--- a/xen/include/xen/page-defs.h
+++ b/xen/include/xen/page-defs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PAGE_DEFS_H__
-#define __XEN_PAGE_DEFS_H__
+#ifndef XEN__PAGE_DEFS_H
+#define XEN__PAGE_DEFS_H
 
 /* Helpers for different page granularities. */
 #define PAGE_SIZE_GRAN(gran)        ((paddr_t)1 << PAGE_SHIFT_##gran)
@@ -32,4 +32,4 @@
 #define PAGE_MASK_1G                PAGE_MASK_GRAN(1G)
 #define PAGE_ALIGN_1G(addr)         PAGE_ALIGN_GRAN(1G, addr)
 
-#endif /* __XEN_PAGE_DEFS_H__ */
+#endif /* XEN__PAGE_DEFS_H */
diff --git a/xen/include/xen/page-size.h b/xen/include/xen/page-size.h
index 78ea57f324..b2a346e6b1 100644
--- a/xen/include/xen/page-size.h
+++ b/xen/include/xen/page-size.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PAGE_SIZE_H__
-#define __XEN_PAGE_SIZE_H__
+#ifndef XEN__PAGE_SIZE_H
+#define XEN__PAGE_SIZE_H
 
 #include <xen/const.h>
 #include <asm/page-bits.h>
diff --git a/xen/include/xen/paging.h b/xen/include/xen/paging.h
index a126c9bf58..08580a4c73 100644
--- a/xen/include/xen/paging.h
+++ b/xen/include/xen/paging.h
@@ -1,7 +1,7 @@
-#ifndef __XEN_PAGING_H__
-#define __XEN_PAGING_H__
+#ifndef XEN__PAGING_H
+#define XEN__PAGING_H
 
 #include <asm/paging.h>
 #include <asm/p2m.h>
 
-#endif /* __XEN_PAGING_H__ */
+#endif /* XEN__PAGING_H */
diff --git a/xen/include/xen/param.h b/xen/include/xen/param.h
index 1bdbab34ab..970af8d779 100644
--- a/xen/include/xen/param.h
+++ b/xen/include/xen/param.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_PARAM_H
-#define _XEN_PARAM_H
+#ifndef XEN__PARAM_H
+#define XEN__PARAM_H
 
 #include <xen/bug.h>
 #include <xen/hypfs.h>
@@ -196,4 +196,4 @@ static inline void no_config_param(const char *cfg, const char *param,
            cfg, param, len, s);
 }
 
-#endif /* _XEN_PARAM_H */
+#endif /* XEN__PARAM_H */
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index 63e49f0117..b8c6727d1b 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -4,8 +4,8 @@
  * PCI access functions.
  */
 
-#ifndef __XEN_PCI_H__
-#define __XEN_PCI_H__
+#ifndef XEN__PCI_H
+#define XEN__PCI_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -261,4 +261,4 @@ static inline int arch_pci_clean_pirqs(struct domain *d)
 }
 #endif /* CONFIG_HVM */
 
-#endif /* __XEN_PCI_H__ */
+#endif /* XEN__PCI_H */
diff --git a/xen/include/xen/pci_regs.h b/xen/include/xen/pci_regs.h
index 250ba106db..8a8f8e4b8e 100644
--- a/xen/include/xen/pci_regs.h
+++ b/xen/include/xen/pci_regs.h
@@ -19,8 +19,8 @@
  *	The Hypertransport I/O Link Specification
  */
 
-#ifndef LINUX_PCI_REGS_H
-#define LINUX_PCI_REGS_H
+#ifndef XEN__PCI_REGS_H
+#define XEN__PCI_REGS_H
 
 /*
  * Conventional PCI and PCI-X Mode 1 devices have 256 bytes of
@@ -616,4 +616,4 @@
 #define  PCI_SRIOV_VFM_MO	0x2	/* Active.MigrateOut */
 #define  PCI_SRIOV_VFM_AV	0x3	/* Active.Available */
 
-#endif /* LINUX_PCI_REGS_H */
+#endif /* XEN__PCI_REGS_H */
diff --git a/xen/include/xen/pdx.h b/xen/include/xen/pdx.h
index 23f3956db8..04a31e0629 100644
--- a/xen/include/xen/pdx.h
+++ b/xen/include/xen/pdx.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PDX_H__
-#define __XEN_PDX_H__
+#ifndef XEN__PDX_H
+#define XEN__PDX_H
 
 /*
  * PDX (Page inDeX)
@@ -239,7 +239,7 @@ static inline void pfn_pdx_hole_setup(unsigned long mask)
 }
 
 #endif /* CONFIG_PDX_COMPRESSION */
-#endif /* __XEN_PDX_H__ */
+#endif /* XEN__PDX_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/percpu.h b/xen/include/xen/percpu.h
index 57522f346b..2cc1ed4a3a 100644
--- a/xen/include/xen/percpu.h
+++ b/xen/include/xen/percpu.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PERCPU_H__
-#define __XEN_PERCPU_H__
+#ifndef XEN__PERCPU_H
+#define XEN__PERCPU_H
 
 #define DECLARE_PER_CPU(type, name) \
     extern __typeof__(type) per_cpu__ ## name
@@ -33,4 +33,4 @@
 #define get_cpu_var(var) this_cpu(var)
 #define put_cpu_var(var)
 
-#endif /* __XEN_PERCPU_H__ */
+#endif /* XEN__PERCPU_H */
diff --git a/xen/include/xen/perfc.h b/xen/include/xen/perfc.h
index f9009dc388..85fa4d8397 100644
--- a/xen/include/xen/perfc.h
+++ b/xen/include/xen/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PERFC_H__
-#define __XEN_PERFC_H__
+#ifndef XEN__PERFC_H
+#define XEN__PERFC_H
 
 #ifdef CONFIG_PERF_COUNTERS
 
@@ -116,4 +116,4 @@ extern void cf_check perfc_reset(unsigned char key);
 
 #endif /* CONFIG_PERF_COUNTERS */
 
-#endif /* __XEN_PERFC_H__ */
+#endif /* XEN__PERFC_H */
diff --git a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h
index 0027d95a60..38865b614e 100644
--- a/xen/include/xen/perfc_defn.h
+++ b/xen/include/xen/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef XEN__PERFC_DEFN_H*/
+/*#define XEN__PERFC_DEFN_H*/
 
 #include <asm/perfc_defn.h>
 
@@ -83,4 +83,4 @@ PERFCOUNTER(tickled_cpu_overridden, "csched2: tickled_cpu_overridden")
 
 PERFCOUNTER(need_flush_tlb_flush,   "PG_need_flush tlb flushes")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* XEN__PERFC_DEFN_H */
diff --git a/xen/include/xen/pfn.h b/xen/include/xen/pfn.h
index 1ca9b095e0..14fe4c8864 100644
--- a/xen/include/xen/pfn.h
+++ b/xen/include/xen/pfn.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PFN_H__
-#define __XEN_PFN_H__
+#ifndef XEN__PFN_H
+#define XEN__PFN_H
 
 #include <xen/page-size.h>
 
@@ -9,4 +9,4 @@
 #define round_pgup(p)    (((p) + (PAGE_SIZE - 1)) & PAGE_MASK)
 #define round_pgdown(p)  ((p) & PAGE_MASK)
 
-#endif /* __XEN_PFN_H__ */
+#endif /* XEN__PFN_H */
diff --git a/xen/include/xen/pmap.h b/xen/include/xen/pmap.h
index 93e61b1087..7da30c1240 100644
--- a/xen/include/xen/pmap.h
+++ b/xen/include/xen/pmap.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PMAP_H__
-#define __XEN_PMAP_H__
+#ifndef XEN__PMAP_H
+#define XEN__PMAP_H
 
 /* Large enough for mapping 5 levels of page tables with some headroom */
 #define NUM_FIX_PMAP 8
@@ -13,4 +13,4 @@ void pmap_unmap(const void *p);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_PMAP_H__ */
+#endif /* XEN__PMAP_H */
diff --git a/xen/include/xen/pmstat.h b/xen/include/xen/pmstat.h
index e6ab1423a9..38837ed8e3 100644
--- a/xen/include/xen/pmstat.h
+++ b/xen/include/xen/pmstat.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PMSTAT_H_
-#define __XEN_PMSTAT_H_
+#ifndef XEN__PMSTAT_H
+#define XEN__PMSTAT_H
 
 #include <xen/types.h>
 #include <public/platform.h> /* for struct xen_processor_power */
@@ -14,4 +14,4 @@ int pmstat_reset_cx_stat(unsigned int cpu);
 int do_get_pm_info(struct xen_sysctl_get_pmstat *op);
 int do_pm_op(struct xen_sysctl_pm_op *op);
 
-#endif /* __XEN_PMSTAT_H_ */
+#endif /* XEN__PMSTAT_H */
diff --git a/xen/include/xen/preempt.h b/xen/include/xen/preempt.h
index aa059b497b..c1a41ba330 100644
--- a/xen/include/xen/preempt.h
+++ b/xen/include/xen/preempt.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2010, Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_PREEMPT_H__
-#define __XEN_PREEMPT_H__
+#ifndef XEN__PREEMPT_H
+#define XEN__PREEMPT_H
 
 #include <xen/types.h>
 #include <xen/percpu.h>
@@ -34,4 +34,4 @@ void ASSERT_NOT_IN_ATOMIC(void);
 #define ASSERT_NOT_IN_ATOMIC() ((void)0)
 #endif
 
-#endif /* __XEN_PREEMPT_H__ */
+#endif /* XEN__PREEMPT_H */
diff --git a/xen/include/xen/prefetch.h b/xen/include/xen/prefetch.h
index 85831f953f..70f4780285 100644
--- a/xen/include/xen/prefetch.h
+++ b/xen/include/xen/prefetch.h
@@ -7,8 +7,8 @@
  *
  */
 
-#ifndef _LINUX_PREFETCH_H
-#define _LINUX_PREFETCH_H
+#ifndef XEN__PREFETCH_H
+#define XEN__PREFETCH_H
 
 #include <asm/processor.h>
 #include <asm/cache.h>
diff --git a/xen/include/xen/pv_console.h b/xen/include/xen/pv_console.h
index 2133aa71cb..5c984dd543 100644
--- a/xen/include/xen/pv_console.h
+++ b/xen/include/xen/pv_console.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PV_CONSOLE_H__
-#define __XEN_PV_CONSOLE_H__
+#ifndef XEN__PV_CONSOLE_H
+#define XEN__PV_CONSOLE_H
 
 #include <xen/serial.h>
 
@@ -21,7 +21,7 @@ static inline void pv_console_puts(const char *buf, size_t nr) { }
 static inline size_t pv_console_rx(void) { return 0; }
 
 #endif /* !CONFIG_XEN_GUEST */
-#endif /* __XEN_PV_CONSOLE_H__ */
+#endif /* XEN__PV_CONSOLE_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/radix-tree.h b/xen/include/xen/radix-tree.h
index 58c40312e6..4a3ad62702 100644
--- a/xen/include/xen/radix-tree.h
+++ b/xen/include/xen/radix-tree.h
@@ -16,8 +16,8 @@
  * 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_RADIX_TREE_H
-#define _XEN_RADIX_TREE_H
+#ifndef XEN__RADIX_TREE_H
+#define XEN__RADIX_TREE_H
 
 #include <xen/types.h>
 #include <xen/lib.h>
@@ -224,4 +224,4 @@ unsigned long radix_tree_next_hole(struct radix_tree_root *root,
 unsigned long radix_tree_prev_hole(struct radix_tree_root *root,
 				unsigned long index, unsigned long max_scan);
 
-#endif /* _XEN_RADIX_TREE_H */
+#endif /* XEN__RADIX_TREE_H */
diff --git a/xen/include/xen/random.h b/xen/include/xen/random.h
index b950f03c0c..abb011d654 100644
--- a/xen/include/xen/random.h
+++ b/xen/include/xen/random.h
@@ -1,9 +1,9 @@
-#ifndef __XEN_RANDOM_H__
-#define __XEN_RANDOM_H__
+#ifndef XEN__RANDOM_H
+#define XEN__RANDOM_H
 
 unsigned int get_random(void);
 
 /* The value keeps unchange once initialized for each booting */
 extern unsigned int boot_random;
 
-#endif /* __XEN_RANDOM_H__ */
+#endif /* XEN__RANDOM_H */
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index 96c9180825..36bc2055a9 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, K A Fraser
  */
 
-#ifndef __XEN_RANGESET_H__
-#define __XEN_RANGESET_H__
+#ifndef XEN__RANGESET_H
+#define XEN__RANGESET_H
 
 #include <xen/types.h>
 
@@ -100,7 +100,7 @@ void rangeset_swap(struct rangeset *a, struct rangeset *b);
 void rangeset_domain_printk(
     struct domain *d);
 
-#endif /* __XEN_RANGESET_H__ */
+#endif /* XEN__RANGESET_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/rbtree.h b/xen/include/xen/rbtree.h
index 77bf57d4ab..a8c5215e06 100644
--- a/xen/include/xen/rbtree.h
+++ b/xen/include/xen/rbtree.h
@@ -90,8 +90,8 @@ static inline struct page * rb_insert_page_cache(struct inode * inode,
 -----------------------------------------------------------------------
 */
 
-#ifndef __RBTREE_H__
-#define __RBTREE_H__
+#ifndef XEN__RBTREE_H
+#define XEN__RBTREE_H
 
 struct rb_node {
 	unsigned long  __rb_parent_color;
@@ -139,4 +139,4 @@ static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,
 	*rb_link = node;
 }
 
-#endif /* __RBTREE_H__ */
+#endif /* XEN__RBTREE_H */
diff --git a/xen/include/xen/rcupdate.h b/xen/include/xen/rcupdate.h
index 95f4ad81c4..5e0a8328ee 100644
--- a/xen/include/xen/rcupdate.h
+++ b/xen/include/xen/rcupdate.h
@@ -28,8 +28,8 @@
  * http://lse.sourceforge.net/locking/rcupdate.html
  */
 
-#ifndef __XEN_RCUPDATE_H
-#define __XEN_RCUPDATE_H
+#ifndef XEN__RCUPDATE_H
+#define XEN__RCUPDATE_H
 
 #include <xen/compiler.h>
 #include <xen/spinlock.h>
@@ -179,4 +179,4 @@ void rcu_barrier(void);
 void rcu_idle_enter(unsigned int cpu);
 void rcu_idle_exit(unsigned int cpu);
 
-#endif /* __XEN_RCUPDATE_H */
+#endif /* XEN__RCUPDATE_H */
diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 4e78028218..129bba2a78 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -1,5 +1,5 @@
-#ifndef __RWLOCK_H__
-#define __RWLOCK_H__
+#ifndef XEN__RWLOCK_H
+#define XEN__RWLOCK_H
 
 #include <xen/percpu.h>
 #include <xen/preempt.h>
@@ -455,4 +455,4 @@ static inline void _percpu_write_unlock(percpu_rwlock_t **per_cpudata,
 #define DECLARE_PERCPU_RWLOCK_GLOBAL(name) DECLARE_PER_CPU(percpu_rwlock_t *, \
                                                            name)
 
-#endif /* __RWLOCK_H__ */
+#endif /* XEN__RWLOCK_H */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 90666576c2..968ec5f8db 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -1,6 +1,6 @@
 
-#ifndef __SCHED_H__
-#define __SCHED_H__
+#ifndef XEN__SCHED_H
+#define XEN__SCHED_H
 
 #include <xen/types.h>
 #include <xen/spinlock.h>
@@ -1276,7 +1276,7 @@ btcpupools_get_domain_pool_id(const struct dt_device_node *node)
 
 #endif
 
-#endif /* __SCHED_H__ */
+#endif /* XEN__SCHED_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/sections.h b/xen/include/xen/sections.h
index f2fac8d7fa..fbba123325 100644
--- a/xen/include/xen/sections.h
+++ b/xen/include/xen/sections.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __XEN_SECTIONS_H__
-#define __XEN_SECTIONS_H__
+#ifndef XEN__SECTIONS_H
+#define XEN__SECTIONS_H
 
 #include <xen/compiler.h>
 
@@ -27,7 +27,7 @@ extern char __init_begin[], __init_end[];
  */
 #define __ro_after_init __section(".data.ro_after_init")
 
-#endif /* !__XEN_SECTIONS_H__ */
+#endif /* !XEN__SECTIONS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/self-tests.h b/xen/include/xen/self-tests.h
index bd8a4867aa..149b48b804 100644
--- a/xen/include/xen/self-tests.h
+++ b/xen/include/xen/self-tests.h
@@ -4,8 +4,8 @@
  * Helpers for Xen self-tests of basic logic, including confirming that
  * examples which should be calculated by the compiler are.
  */
-#ifndef XEN_SELF_TESTS_H
-#define XEN_SELF_TESTS_H
+#ifndef XEN__SELF_TESTS_H
+#define XEN__SELF_TESTS_H
 
 #include <xen/lib.h>
 
@@ -59,4 +59,4 @@
         RUNTIME_CHECK(fn, val, res);            \
     } while ( 0 )
 
-#endif /* XEN_SELF_TESTS_H */
+#endif /* XEN__SELF_TESTS_H */
diff --git a/xen/include/xen/serial.h b/xen/include/xen/serial.h
index 3d21207a3d..1799c199ca 100644
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2003-2008, K A Fraser
  */
 
-#ifndef __XEN_SERIAL_H__
-#define __XEN_SERIAL_H__
+#ifndef XEN__SERIAL_H
+#define XEN__SERIAL_H
 
 #include <xen/init.h>
 #include <xen/spinlock.h>
@@ -174,7 +174,7 @@ int dbgp_op(const struct physdev_dbgp_op *op);
 /* Baud rate was pre-configured before invoking the UART driver. */
 #define BAUD_AUTO (-1)
 
-#endif /* __XEN_SERIAL_H__ */
+#endif /* XEN__SERIAL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/shared.h b/xen/include/xen/shared.h
index 5b71342cab..31e1cca8c8 100644
--- a/xen/include/xen/shared.h
+++ b/xen/include/xen/shared.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SHARED_H__
-#define __XEN_SHARED_H__
+#ifndef XEN__SHARED_H
+#define XEN__SHARED_H
 
 #ifdef CONFIG_COMPAT
 
@@ -47,4 +47,4 @@ extern vcpu_info_t dummy_vcpu_info;
 #define vcpu_info(v, field)        \
         __vcpu_info(v, (vcpu_info_t *)(v)->vcpu_info_area.map, field)
 
-#endif /* __XEN_SHARED_H__ */
+#endif /* XEN__SHARED_H */
diff --git a/xen/include/xen/shutdown.h b/xen/include/xen/shutdown.h
index c7fa23aec1..9197b56d5f 100644
--- a/xen/include/xen/shutdown.h
+++ b/xen/include/xen/shutdown.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SHUTDOWN_H__
-#define __XEN_SHUTDOWN_H__
+#ifndef XEN__SHUTDOWN_H
+#define XEN__SHUTDOWN_H
 
 #include <xen/compiler.h>
 #include <xen/types.h>
@@ -12,4 +12,4 @@ void noreturn hwdom_shutdown(unsigned char reason);
 void noreturn machine_restart(unsigned int delay_millisecs);
 void noreturn machine_halt(void);
 
-#endif /* __XEN_SHUTDOWN_H__ */
+#endif /* XEN__SHUTDOWN_H */
diff --git a/xen/include/xen/sizes.h b/xen/include/xen/sizes.h
index f7b728ddab..16c1009fc2 100644
--- a/xen/include/xen/sizes.h
+++ b/xen/include/xen/sizes.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SIZES_H__
-#define __XEN_SIZES_H__
+#ifndef XEN__SIZES_H
+#define XEN__SIZES_H
 
 /*
  * Taken from kernel code include/linux/size.h
@@ -45,4 +45,4 @@
 #define SZ_1G                           0x40000000
 #define SZ_2G                           0x80000000
 
-#endif /* __XEN_SIZES_H__ */
+#endif /* XEN__SIZES_H */
diff --git a/xen/include/xen/smp.h b/xen/include/xen/smp.h
index 2ca9ff1bfc..faffb49704 100644
--- a/xen/include/xen/smp.h
+++ b/xen/include/xen/smp.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SMP_H__
-#define __XEN_SMP_H__
+#ifndef XEN__SMP_H
+#define XEN__SMP_H
 
 #include <asm/smp.h>
 
@@ -76,4 +76,4 @@ extern void *stack_base[NR_CPUS];
 void initialize_cpu_data(unsigned int cpu);
 int setup_cpu_root_pgt(unsigned int cpu);
 
-#endif /* __XEN_SMP_H__ */
+#endif /* XEN__SMP_H */
diff --git a/xen/include/xen/softirq.h b/xen/include/xen/softirq.h
index 33d6f2ecd2..6cceb109fa 100644
--- a/xen/include/xen/softirq.h
+++ b/xen/include/xen/softirq.h
@@ -1,5 +1,5 @@
-#if !defined(__XEN_SOFTIRQ_H__) && !defined(__ASSEMBLY__)
-#define __XEN_SOFTIRQ_H__
+#if !defined(XEN__SOFTIRQ_H) && !defined(__ASSEMBLY__)
+#define XEN__SOFTIRQ_H
 
 /* Low-latency softirqs come first in the following list. */
 enum {
@@ -40,4 +40,4 @@ void cpu_raise_softirq_batch_finish(void);
  */
 void process_pending_softirqs(void);
 
-#endif /* __XEN_SOFTIRQ_H__ */
+#endif /* XEN__SOFTIRQ_H */
diff --git a/xen/include/xen/sort.h b/xen/include/xen/sort.h
index b953286284..110a54637b 100644
--- a/xen/include/xen/sort.h
+++ b/xen/include/xen/sort.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SORT_H__
-#define __XEN_SORT_H__
+#ifndef XEN__SORT_H
+#define XEN__SORT_H
 
 #include <xen/types.h>
 
@@ -60,4 +60,4 @@ void sort(void *base, size_t num, size_t size,
     }
 }
 
-#endif /* __XEN_SORT_H__ */
+#endif /* XEN__SORT_H */
diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h
index 8825affb25..b84ac4d347 100644
--- a/xen/include/xen/spinlock.h
+++ b/xen/include/xen/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __SPINLOCK_H__
-#define __SPINLOCK_H__
+#ifndef XEN__SPINLOCK_H
+#define XEN__SPINLOCK_H
 
 #include <xen/nospec.h>
 #include <xen/time.h>
@@ -358,4 +358,4 @@ static always_inline void nrspin_lock_irq(rspinlock_t *l)
 #define nrspin_unlock_irqrestore(l, f) _nrspin_unlock_irqrestore(l, f)
 #define nrspin_unlock_irq(l)           _nrspin_unlock_irq(l)
 
-#endif /* __SPINLOCK_H__ */
+#endif /* XEN__SPINLOCK_H */
diff --git a/xen/include/xen/stdarg.h b/xen/include/xen/stdarg.h
index 29249a11a7..ec1f1d8378 100644
--- a/xen/include/xen/stdarg.h
+++ b/xen/include/xen/stdarg.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STDARG_H__
-#define __XEN_STDARG_H__
+#ifndef XEN__STDARG_H
+#define XEN__STDARG_H
 
 typedef __builtin_va_list va_list;
 #define va_copy(dest, src)    __builtin_va_copy((dest), (src))
@@ -7,4 +7,4 @@ typedef __builtin_va_list va_list;
 #define va_end(ap)            __builtin_va_end(ap)
 #define va_arg                __builtin_va_arg
 
-#endif /* __XEN_STDARG_H__ */
+#endif /* XEN__STDARG_H */
diff --git a/xen/include/xen/stdbool.h b/xen/include/xen/stdbool.h
index b0947a62b5..99f25d64f6 100644
--- a/xen/include/xen/stdbool.h
+++ b/xen/include/xen/stdbool.h
@@ -1,9 +1,9 @@
-#ifndef __XEN_STDBOOL_H__
-#define __XEN_STDBOOL_H__
+#ifndef XEN__STDBOOL_H
+#define XEN__STDBOOL_H
 
 #define bool _Bool
 #define true 1
 #define false 0
 #define __bool_true_false_are_defined   1
 
-#endif /* __XEN_STDBOOL_H__ */
+#endif /* XEN__STDBOOL_H */
diff --git a/xen/include/xen/stdint.h b/xen/include/xen/stdint.h
index a40165c6ae..1e4319fd0f 100644
--- a/xen/include/xen/stdint.h
+++ b/xen/include/xen/stdint.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __XEN_STDINT_H__
-#define __XEN_STDINT_H__
+#ifndef XEN__STDINT_H
+#define XEN__STDINT_H
 
 #ifndef __INT8_TYPE__ /* GCC <= 4.4 */
 
@@ -30,4 +30,4 @@ typedef __UINT64_TYPE__    uint64_t;
 
 #endif
 
-#endif /* __XEN_STDINT_H__ */
+#endif /* XEN__STDINT_H */
diff --git a/xen/include/xen/stop_machine.h b/xen/include/xen/stop_machine.h
index 0bbf71f112..7a3f22affc 100644
--- a/xen/include/xen/stop_machine.h
+++ b/xen/include/xen/stop_machine.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STOP_MACHINE_H__
-#define __XEN_STOP_MACHINE_H__
+#ifndef XEN__STOP_MACHINE_H
+#define XEN__STOP_MACHINE_H
 
 /**
  * stop_machine_run: freeze the machine on all CPUs and run this function
@@ -16,4 +16,4 @@
  * grabbing every spinlock in the kernel. */
 int stop_machine_run(int (*fn)(void *data), void *data, unsigned int cpu);
 
-#endif /* __XEN_STOP_MACHINE_H__ */
+#endif /* XEN__STOP_MACHINE_H */
diff --git a/xen/include/xen/string.h b/xen/include/xen/string.h
index bd4a8f48e9..0d7383ef9a 100644
--- a/xen/include/xen/string.h
+++ b/xen/include/xen/string.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STRING_H__
-#define __XEN_STRING_H__
+#ifndef XEN__STRING_H
+#define XEN__STRING_H
 
 #include <xen/types.h>	/* for size_t */
 
@@ -100,7 +100,7 @@ void *memchr_inv(const void *s, int c, size_t n);
     (strlcat(d, s, sizeof(d)) >= sizeof(d));    \
 })
 
-#endif /* __XEN_STRING_H__ */
+#endif /* XEN__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/stringify.h b/xen/include/xen/stringify.h
index 36808e0969..be4a979885 100644
--- a/xen/include/xen/stringify.h
+++ b/xen/include/xen/stringify.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STRINGIFY_H
-#define __XEN_STRINGIFY_H
+#ifndef XEN__STRINGIFY_H
+#define XEN__STRINGIFY_H
 
 /* Indirect stringification.  Doing two levels allows the parameter to be a
  * macro itself.  For example, compile with -DFOO=bar, __stringify(FOO)
@@ -9,4 +9,4 @@
 #define __stringify_1(x...) #x
 #define __stringify(x...)   __stringify_1(x)
 
-#endif /* !__XEN_STRINGIFY_H */
+#endif /* !XEN__STRINGIFY_H */
diff --git a/xen/include/xen/symbols.h b/xen/include/xen/symbols.h
index 20bbb28ef2..d8adc03a07 100644
--- a/xen/include/xen/symbols.h
+++ b/xen/include/xen/symbols.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_SYMBOLS_H
-#define _XEN_SYMBOLS_H
+#ifndef XEN__SYMBOLS_H
+#define XEN__SYMBOLS_H
 
 #include <xen/types.h>
 
@@ -33,4 +33,4 @@ struct symbol_offset {
     uint32_t stream; /* .. in the compressed stream.*/
     uint32_t addr;   /* .. and in the fixed size address array. */
 };
-#endif /*_XEN_SYMBOLS_H*/
+#endif /*XEN__SYMBOLS_H*/
diff --git a/xen/include/xen/tasklet.h b/xen/include/xen/tasklet.h
index 78760b694a..55ff906a31 100644
--- a/xen/include/xen/tasklet.h
+++ b/xen/include/xen/tasklet.h
@@ -7,8 +7,8 @@
  * during per-tasklet initialisation.
  */
 
-#ifndef __XEN_TASKLET_H__
-#define __XEN_TASKLET_H__
+#ifndef XEN__TASKLET_H
+#define XEN__TASKLET_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -64,4 +64,4 @@ void softirq_tasklet_init(struct tasklet *t,
                           void (*func)(void *data), void *data);
 void tasklet_subsys_init(void);
 
-#endif /* __XEN_TASKLET_H__ */
+#endif /* XEN__TASKLET_H */
diff --git a/xen/include/xen/time.h b/xen/include/xen/time.h
index 67c586b736..cf515fcdeb 100644
--- a/xen/include/xen/time.h
+++ b/xen/include/xen/time.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2002-2005 K A Fraser
  */
 
-#ifndef __XEN_TIME_H__
-#define __XEN_TIME_H__
+#ifndef XEN__TIME_H
+#define XEN__TIME_H
 
 #include <xen/types.h>
 #include <public/xen.h>
@@ -77,7 +77,7 @@ void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds);
 
 #include <asm/time.h>
 
-#endif /* __XEN_TIME_H__ */
+#endif /* XEN__TIME_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/timer.h b/xen/include/xen/timer.h
index fb28517515..2fa5ba57ab 100644
--- a/xen/include/xen/timer.h
+++ b/xen/include/xen/timer.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2002-2005 K A Fraser
  */
 
-#ifndef _TIMER_H_
-#define _TIMER_H_
+#ifndef XEN__TIMER_H
+#define XEN__TIMER_H
 
 #include <xen/spinlock.h>
 #include <xen/time.h>
@@ -110,7 +110,7 @@ int reprogram_timer(s_time_t timeout);
 /* Calculate the aligned first tick time for a given periodic timer. */
 s_time_t align_timer(s_time_t firsttick, uint64_t period);
 
-#endif /* _TIMER_H_ */
+#endif /* XEN__TIMER_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h
index 914cecbc18..4bdbdeffa8 100644
--- a/xen/include/xen/trace.h
+++ b/xen/include/xen/trace.h
@@ -18,8 +18,8 @@
  * trace buffer contents can then be performed using a userland tool.
  */
 
-#ifndef __XEN_TRACE_H__
-#define __XEN_TRACE_H__
+#ifndef XEN__TRACE_H
+#define XEN__TRACE_H
 
 #include <xen/types.h>
 #include <public/sysctl.h>
@@ -91,4 +91,4 @@ static inline void trace_time(
 /* Create a trace record with time included. */
 #define TRACE_TIME(_e, ...) TRACE((_e) | TRC_HD_CYCLE_FLAG, ## __VA_ARGS__)
 
-#endif /* __XEN_TRACE_H__ */
+#endif /* XEN__TRACE_H */
diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h
index 1bcc5a474f..f8ca8a7958 100644
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -1,5 +1,5 @@
-#ifndef __TYPES_H__
-#define __TYPES_H__
+#ifndef XEN__TYPES_H
+#define XEN__TYPES_H
 
 #include <xen/stdbool.h>
 #include <xen/stdint.h>
@@ -64,4 +64,4 @@ typedef unsigned int __attribute__((__mode__(__pointer__))) uintptr_t;
 #define test_and_set_bool(b)   xchg(&(b), true)
 #define test_and_clear_bool(b) xchg(&(b), false)
 
-#endif /* __TYPES_H__ */
+#endif /* XEN__TYPES_H */
diff --git a/xen/include/xen/typesafe.h b/xen/include/xen/typesafe.h
index 7ecd3b4a8d..8898278e75 100644
--- a/xen/include/xen/typesafe.h
+++ b/xen/include/xen/typesafe.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_TYPESAFE_H__
-#define __XEN_TYPESAFE_H__
+#ifndef XEN__TYPESAFE_H
+#define XEN__TYPESAFE_H
 
 /*
  * Compiler games to gain type safety between different logical integers.
@@ -33,7 +33,7 @@
 
 #endif
 
-#endif /* __XEN_TYPESAFE_H__ */
+#endif /* XEN__TYPESAFE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/unaligned.h b/xen/include/xen/unaligned.h
index d9bb599e65..d4e35c13e5 100644
--- a/xen/include/xen/unaligned.h
+++ b/xen/include/xen/unaligned.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __XEN_UNALIGNED_H__
-#define __XEN_UNALIGNED_H__
+#ifndef XEN__UNALIGNED_H
+#define XEN__UNALIGNED_H
 
 #ifdef __XEN__
 #include <xen/types.h>
@@ -85,4 +85,4 @@ static inline void put_unaligned_le64(uint64_t val, void *p)
 	put_unaligned_t(__le64, cpu_to_le64(val), p);
 }
 
-#endif /* __XEN_UNALIGNED_H__ */
+#endif /* XEN__UNALIGNED_H */
diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h
index 93c5877363..858469684d 100644
--- a/xen/include/xen/version.h
+++ b/xen/include/xen/version.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_VERSION_H__
-#define __XEN_VERSION_H__
+#ifndef XEN__VERSION_H
+#define XEN__VERSION_H
 
 #include <xen/types.h>
 #include <xen/elfstructs.h>
@@ -27,4 +27,4 @@ int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
 static inline void xen_build_init(void) {};
 #endif
 
-#endif /* __XEN_VERSION_H__ */
+#endif /* XEN__VERSION_H */
diff --git a/xen/include/xen/vga.h b/xen/include/xen/vga.h
index ceb8a527ed..6f8cd20bd7 100644
--- a/xen/include/xen/vga.h
+++ b/xen/include/xen/vga.h
@@ -6,8 +6,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_VGA_H
-#define _XEN_VGA_H
+#ifndef XEN__VGA_H
+#define XEN__VGA_H
 
 #include <xen/video.h>
 
@@ -21,4 +21,4 @@ void vesa_endboot(bool keep);
 static inline void vesa_init(void) {}
 #endif
 
-#endif /* _XEN_VGA_H */
+#endif /* XEN__VGA_H */
diff --git a/xen/include/xen/video.h b/xen/include/xen/video.h
index 1ee1aa46b1..2db8bbaa2e 100644
--- a/xen/include/xen/video.h
+++ b/xen/include/xen/video.h
@@ -6,8 +6,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_VIDEO_H
-#define _XEN_VIDEO_H
+#ifndef XEN__VIDEO_H
+#define XEN__VIDEO_H
 
 #include <public/xen.h>
 
@@ -21,4 +21,4 @@ static inline void video_puts(const char *str, size_t nr) {}
 #define video_endboot() ((void)0)
 #endif
 
-#endif /* _XEN_VIDEO_H */
+#endif /* XEN__VIDEO_H */
diff --git a/xen/include/xen/virtual_region.h b/xen/include/xen/virtual_region.h
index a18dfb6fb0..860043ab76 100644
--- a/xen/include/xen/virtual_region.h
+++ b/xen/include/xen/virtual_region.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_VIRTUAL_REGION_H__
-#define __XEN_VIRTUAL_REGION_H__
+#ifndef XEN__VIRTUAL_REGION_H
+#define XEN__VIRTUAL_REGION_H
 
 #include <xen/list.h>
 #include <xen/symbols.h>
@@ -46,7 +46,7 @@ void unregister_virtual_region(struct virtual_region *r);
 void relax_virtual_region_perms(void);
 void tighten_virtual_region_perms(void);
 
-#endif /* __XEN_VIRTUAL_REGION_H__ */
+#endif /* XEN__VIRTUAL_REGION_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index c1dd7ac22f..c94c4d68f1 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -5,8 +5,8 @@
  * purpose area (VMAP_DEFAULT) and a livepatch-specific area (VMAP_XEN). The
  * latter is used when loading livepatches and the former for everything else.
  */
-#if !defined(__XEN_VMAP_H__) && defined(VMAP_VIRT_START)
-#define __XEN_VMAP_H__
+#if !defined(XEN__VMAP_H) && defined(VMAP_VIRT_START)
+#define XEN__VMAP_H
 
 #include <xen/mm-frame.h>
 #include <xen/page-size.h>
@@ -146,4 +146,4 @@ static inline void vm_init(void)
 #endif
 }
 
-#endif /* __XEN_VMAP_H__ */
+#endif /* XEN__VMAP_H */
diff --git a/xen/include/xen/wait.h b/xen/include/xen/wait.h
index 1c68bc564b..c890d3244d 100644
--- a/xen/include/xen/wait.h
+++ b/xen/include/xen/wait.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2010, Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_WAIT_H__
-#define __XEN_WAIT_H__
+#ifndef XEN__WAIT_H
+#define XEN__WAIT_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -56,4 +56,4 @@ void wait(void);
 void finish_wait(struct waitqueue_head *wq);
 void check_wakeup_from_wait(void);
 
-#endif /* __XEN_WAIT_H__ */
+#endif /* XEN__WAIT_H */
diff --git a/xen/include/xen/warning.h b/xen/include/xen/warning.h
index c0661d5140..eec3850ec1 100644
--- a/xen/include/xen/warning.h
+++ b/xen/include/xen/warning.h
@@ -1,5 +1,5 @@
-#ifndef _WARNING_H_
-#define _WARNING_H_
+#ifndef XEN__WARNING_H
+#define XEN__WARNING_H
 
 void warning_add(const char *warning);
 void warning_print(void);
diff --git a/xen/include/xen/watchdog.h b/xen/include/xen/watchdog.h
index 4c2840bd91..564bc7d8c1 100644
--- a/xen/include/xen/watchdog.h
+++ b/xen/include/xen/watchdog.h
@@ -4,8 +4,8 @@
  * Common watchdog code
  */
 
-#ifndef __XEN_WATCHDOG_H__
-#define __XEN_WATCHDOG_H__
+#ifndef XEN__WATCHDOG_H
+#define XEN__WATCHDOG_H
 
 #include <xen/types.h>
 
@@ -32,4 +32,4 @@ bool watchdog_enabled(void);
 
 #endif
 
-#endif /* __XEN_WATCHDOG_H__ */
+#endif /* XEN__WATCHDOG_H */
diff --git a/xen/include/xen/xen.lds.h b/xen/include/xen/xen.lds.h
index 24b8900ffe..c66b2c4c3b 100644
--- a/xen/include/xen/xen.lds.h
+++ b/xen/include/xen/xen.lds.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_LDS_H__
-#define __XEN_LDS_H__
+#ifndef XEN__XEN_LDS_H
+#define XEN__XEN_LDS_H
 
 /*
  * Common macros to be used in architecture specific linker scripts.
@@ -171,4 +171,4 @@
 #define VPCI_ARRAY
 #endif
 
-#endif /* __XEN_LDS_H__ */
+#endif /* XEN__XEN_LDS_H */
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index c3dac447d3..c50221d2a2 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -7,8 +7,8 @@
  * written by Aravind Menon & Jose Renato Santos
  */
 
-#ifndef __XEN_XENOPROF_H__
-#define __XEN_XENOPROF_H__
+#ifndef XEN__XENOPROF_H
+#define XEN__XENOPROF_H
 
 #define PMU_OWNER_NONE          0
 #define PMU_OWNER_XENOPROF      1
diff --git a/xen/include/xen/xmalloc.h b/xen/include/xen/xmalloc.h
index b903fa2e26..cd230bfde8 100644
--- a/xen/include/xen/xmalloc.h
+++ b/xen/include/xen/xmalloc.h
@@ -1,6 +1,6 @@
 
-#ifndef __XMALLOC_H__
-#define __XMALLOC_H__
+#ifndef XEN__XMALLOC_H
+#define XEN__XMALLOC_H
 
 #include <xen/types.h>
 #include <xen/cache.h>
@@ -171,4 +171,4 @@ unsigned long xmem_pool_get_used_size(struct xmem_pool *pool);
  */
 unsigned long xmem_pool_get_total_size(struct xmem_pool *pool);
 
-#endif /* __XMALLOC_H__ */
+#endif /* XEN__XMALLOC_H */
diff --git a/xen/include/xen/xxhash.h b/xen/include/xen/xxhash.h
index 6f2237cbcf..9ad85c85ce 100644
--- a/xen/include/xen/xxhash.h
+++ b/xen/include/xen/xxhash.h
@@ -72,8 +72,8 @@
  * xxh32        6.8 GB/s            6.0 GB/s
  */
 
-#ifndef __XENXXHASH_H__
-#define __XENXXHASH_H__
+#ifndef XEN__XXHASH_H
+#define XEN__XXHASH_H
 
 #include <xen/types.h>
 
@@ -256,4 +256,4 @@ void xxh32_copy_state(struct xxh32_state *dst, const struct xxh32_state *src);
  */
 void xxh64_copy_state(struct xxh64_state *dst, const struct xxh64_state *src);
 
-#endif /* __XENXXHASH_H__ */
+#endif /* XEN__XXHASH_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809689.1222198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ78-0008Qq-2C; Thu, 03 Oct 2024 17:59:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809689.1222198; Thu, 03 Oct 2024 17:59: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 1swQ77-0008Or-Rw; Thu, 03 Oct 2024 17:59:45 +0000
Received: by outflank-mailman (input) for mailman id 809689;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ76-0006hm-0T
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:44 +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 44b00251-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:43 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so192086866b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:43 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 44b00251-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978383; x=1728583183; 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=Wa3ZmXvbNT3cVq7/5R5qVXzdHrXKzTt2KbYl/Ig19/Y=;
        b=MhIS3tAXoGjekux3uGawy1lUfZutU/CFQ1Y1gPczRiLhl+RoOUOFYa5QFqq1kQkBIm
         ds8+49rC39BfLRr+zBYfTKn3FDUiGIJgqdmAdkXlu821mdCMZdRHelpr08YPtgl5NQtw
         afpApEqDpcuuMx+SFxS4tCrI1iF6846k8sZ0g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978383; x=1728583183;
        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=Wa3ZmXvbNT3cVq7/5R5qVXzdHrXKzTt2KbYl/Ig19/Y=;
        b=mD0jezcyfert8F5nnNGCvCU1QvmDtjAcKm+8k1LO564k3L8DxgeFceAYjPsAaKzgG2
         w/Va6kav7q4A6iqhWV/5J55nGJvUPyUHtWnNcNfILxA6pWHFx/T5q9L+R6686u1/pz8W
         AIpzPR01GRIm86hYICzTsC7y+W2XoP6w7LsPh300Pd0yRenFTvhy9XH7f7RDZwmyCH3M
         zrse7LDRvUcBKw+EQyOJa5tgzyRcyg+GoDPMlgsJfyNuLJ67QIibRn8XEMkQi+lc3EuJ
         fSh1FhPLAA0Bm0/uG/ObRIarK1/p5z0okZwq+oik7mDpJs7lLJViBz0q2cu8jhRrsMGP
         xgxQ==
X-Gm-Message-State: AOJu0Yxu+BZeIBhqPaQc9Vci4esnMoOr3XQMV3JF3NPZJuwW8giDTQEo
	QKH6hBb1xsuVnqYHEbxgFhApnF8hbrYO0UycqsNOaYn43cmnqicBosFN+Oy/W2iGPJZDBRIjHIJ
	A
X-Google-Smtp-Source: AGHT+IEjxjA6pTGr7ylgT3GTWv5/9wJb3Hyjtu5O/LAyqSa46pfg9SkA7Yn75A+UQJlWRflZS2p8zA==
X-Received: by 2002:a17:906:6a20:b0:a86:7ddf:2909 with SMTP id a640c23a62f3a-a991bd0947dmr21186366b.14.1727978382550;
        Thu, 03 Oct 2024 10:59:42 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v2 10/19] xen: Update header guards - I/O MMU
Date: Thu,  3 Oct 2024 18:59:10 +0100
Message-Id: <20241003175919.472774-11-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to I/O MMU.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/drivers/passthrough/amd/iommu-defs.h | 6 +++---
 xen/drivers/passthrough/amd/iommu.h      | 6 +++---
 xen/drivers/passthrough/ats.h            | 6 +++---
 xen/drivers/passthrough/vtd/dmar.h       | 6 +++---
 xen/drivers/passthrough/vtd/extern.h     | 6 +++---
 xen/drivers/passthrough/vtd/iommu.h      | 4 ++--
 xen/drivers/passthrough/vtd/vtd.h        | 6 +++---
 xen/include/xen/iommu.h                  | 6 +++---
 8 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu-defs.h b/xen/drivers/passthrough/amd/iommu-defs.h
index c145248f9a..30b094f187 100644
--- a/xen/drivers/passthrough/amd/iommu-defs.h
+++ b/xen/drivers/passthrough/amd/iommu-defs.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef AMD_IOMMU_DEFS_H
-#define AMD_IOMMU_DEFS_H
+#ifndef DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H
+#define DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H
 
 /* IOMMU Event Log entries: in power of 2 increments, minimum of 256 */
 #define IOMMU_EVENT_LOG_DEFAULT_ENTRIES     512
@@ -486,7 +486,7 @@ union amd_iommu_pte {
 #define IOMMU_REG_BASE_ADDR_HIGH_MASK               0x000FFFFFU
 #define IOMMU_REG_BASE_ADDR_HIGH_SHIFT              0
 
-#endif /* AMD_IOMMU_DEFS_H */
+#endif /* DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H */
 
 /*
  * Local variables:
diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/amd/iommu.h
index 8d6f63d87f..c32e9e9a16 100644
--- a/xen/drivers/passthrough/amd/iommu.h
+++ b/xen/drivers/passthrough/amd/iommu.h
@@ -16,8 +16,8 @@
  * 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 AMD_IOMMU_H
-#define AMD_IOMMU_H
+#ifndef DRIVERS__PASSTHROUGH__AMD__IOMMU_H
+#define DRIVERS__PASSTHROUGH__AMD__IOMMU_H
 
 #include <xen/init.h>
 #include <xen/types.h>
@@ -372,4 +372,4 @@ static inline void iommu_set_addr_hi_to_reg(uint32_t *reg, uint32_t addr)
                          IOMMU_REG_BASE_ADDR_HIGH_SHIFT, reg);
 }
 
-#endif /* AMD_IOMMU_H */
+#endif /* DRIVERS__PASSTHROUGH__AMD__IOMMU_H */
diff --git a/xen/drivers/passthrough/ats.h b/xen/drivers/passthrough/ats.h
index f5e1d254e0..68b1c600eb 100644
--- a/xen/drivers/passthrough/ats.h
+++ b/xen/drivers/passthrough/ats.h
@@ -12,8 +12,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _ATS_H_
-#define _ATS_H_
+#ifndef DRIVERS__PASSTHROUGH__ATS_H
+#define DRIVERS__PASSTHROUGH__ATS_H
 
 #include <xen/pci_regs.h>
 
@@ -50,5 +50,5 @@ static inline int pci_ats_device(int seg, int bus, int devfn)
                                    PCI_EXT_CAP_ID_ATS);
 }
 
-#endif /* _ATS_H_ */
+#endif /* DRIVERS__PASSTHROUGH__ATS_H */
 
diff --git a/xen/drivers/passthrough/vtd/dmar.h b/xen/drivers/passthrough/vtd/dmar.h
index 61f71ca5e6..0ff4f36535 100644
--- a/xen/drivers/passthrough/vtd/dmar.h
+++ b/xen/drivers/passthrough/vtd/dmar.h
@@ -17,8 +17,8 @@
  * Copyright (C) Shaohua Li <shaohua.li@intel.com>
  */
 
-#ifndef _DMAR_H_
-#define _DMAR_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__DMAR_H
+#define DRIVERS__PASSTHROUGH__VTD__DMAR_H
 
 #include <xen/list.h>
 #include <xen/iommu.h>
@@ -171,4 +171,4 @@ int vtd_hw_check(void);
 void disable_pmr(struct vtd_iommu *iommu);
 int is_igd_drhd(struct acpi_drhd_unit *drhd);
 
-#endif /* _DMAR_H_ */
+#endif /* DRIVERS__PASSTHROUGH__VTD__DMAR_H */
diff --git a/xen/drivers/passthrough/vtd/extern.h b/xen/drivers/passthrough/vtd/extern.h
index 667590ee52..c16583c951 100644
--- a/xen/drivers/passthrough/vtd/extern.h
+++ b/xen/drivers/passthrough/vtd/extern.h
@@ -17,8 +17,8 @@
  * Copyright (C) Weidong Han <weidong.han@intel.com>
  */
 
-#ifndef _VTD_EXTERN_H_
-#define _VTD_EXTERN_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__EXTERN_H
+#define DRIVERS__PASSTHROUGH__VTD__EXTERN_H
 
 #include "dmar.h"
 #include <xen/keyhandler.h>
@@ -114,4 +114,4 @@ void quirk_iommu_caps(struct vtd_iommu *iommu);
 bool platform_supports_intremap(void);
 bool platform_supports_x2apic(void);
 
-#endif // _VTD_EXTERN_H_
+#endif // DRIVERS__PASSTHROUGH__VTD__EXTERN_H
diff --git a/xen/drivers/passthrough/vtd/iommu.h b/xen/drivers/passthrough/vtd/iommu.h
index 78aa8a96f5..29d350b23d 100644
--- a/xen/drivers/passthrough/vtd/iommu.h
+++ b/xen/drivers/passthrough/vtd/iommu.h
@@ -16,8 +16,8 @@
  * Copyright (C) Ashok Raj <ashok.raj@intel.com>
  */
 
-#ifndef _INTEL_IOMMU_H_
-#define _INTEL_IOMMU_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__IOMMU_H
+#define DRIVERS__PASSTHROUGH__VTD__IOMMU_H
 
 #include <xen/iommu.h>
 #include <asm/msi.h>
diff --git a/xen/drivers/passthrough/vtd/vtd.h b/xen/drivers/passthrough/vtd/vtd.h
index cb2df76eed..8aeff8c1f2 100644
--- a/xen/drivers/passthrough/vtd/vtd.h
+++ b/xen/drivers/passthrough/vtd/vtd.h
@@ -17,8 +17,8 @@
  * Copyright (C) Weidong Han <weidong.han@intel.com>
  */
 
-#ifndef _VTD_H_
-#define _VTD_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__VTD_H
+#define DRIVERS__PASSTHROUGH__VTD__VTD_H
 
 #include <xen/iommu.h>
 
@@ -72,4 +72,4 @@ struct msi_msg_remap_entry {
     u32	data;		/* msi message data */
 };
 
-#endif // _VTD_H_
+#endif // DRIVERS__PASSTHROUGH__VTD__VTD_H
diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h
index 442ae5322d..b928c67e19 100644
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -16,8 +16,8 @@
  * Copyright (C) Allen Kay <allen.m.kay@intel.com>
  */
 
-#ifndef _IOMMU_H_
-#define _IOMMU_H_
+#ifndef XEN__IOMMU_H
+#define XEN__IOMMU_H
 
 #include <xen/mm-frame.h>
 #include <xen/init.h>
@@ -440,7 +440,7 @@ static inline int iommu_update_ire_from_msi(
 }
 #endif
 
-#endif /* _IOMMU_H_ */
+#endif /* XEN__IOMMU_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809687.1222178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ76-0007sT-5x; Thu, 03 Oct 2024 17:59:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809687.1222178; Thu, 03 Oct 2024 17: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 1swQ75-0007rh-Uh; Thu, 03 Oct 2024 17:59:43 +0000
Received: by outflank-mailman (input) for mailman id 809687;
 Thu, 03 Oct 2024 17: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ74-0006hm-Vg
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:42 +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 4427221f-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:42 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8d100e9ce0so159756466b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:42 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4427221f-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978382; x=1728583182; 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=5bKKGq4cESxZkZMDW1uobM0TYcCXOg89PEXrmDcph/U=;
        b=Z9+eDL5o7fwLuNRyCLghRdldOohUMGSePyHCOuMeAFohMjGjbcFLVuCXZoaxevpBBD
         nKCTnVQ9jIEQZwmC3dE5B8uv3X4Y26YT60VKLU279VA9/NO4QDiw9lRWqH/JV/Ls96Gi
         b0DNRIoX6AJCREJ6nyM6XVqEQ6zat4LCwDLwo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978382; x=1728583182;
        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=5bKKGq4cESxZkZMDW1uobM0TYcCXOg89PEXrmDcph/U=;
        b=SQYGh/xk1AVyEgunGcZHxwyB03jOqgNuB34UfY/oQEbNmaObjl2Z0sFPYurvFuomc2
         uuZa9B0+/56JDboXhVO6F1lka+fKIqj8GTTREm2t8b4MfaBjxkfRad9vCj2k0Xql9AGK
         oMLVV8eKJK6YINCT9zWI/S3Y3TMSGvv7ffwxP0WYAdO7bnsrPaXpiwAJC0VmBYLwbDDb
         cMyPbRj1Sug2FKkXmsvHiPYI1v8bC/67fkAFt/3YPrSRfkE7ai69iKrydTsujv2dbdzW
         DRe0IrlLAx201yXppGYQLxTtgjfmj3GTtLt1sKTd7cILcc6Hde6Z2UmbjZw5Vi1k/GUx
         M1lQ==
X-Gm-Message-State: AOJu0Yxrh9E4BvMJKyGDOMOBL5vQS5GeZ2plgc/wYVTS25H0d9ji+xu6
	ahLPGOAUHWpU3Uue8DvTg+SlNb8nRKgvpwYvZXt1KiCn/nbxSuxKE5OaTK/XQozA6FcAfX9jiT7
	j
X-Google-Smtp-Source: AGHT+IHpSv6Zf/IH+CXXxCGLJBYGySY2CK14rpMiQQ2Y65mcyz1T6LsltHbitB87LK1LNIxEAd9ibw==
X-Received: by 2002:a17:907:f745:b0:a8b:154b:7649 with SMTP id a640c23a62f3a-a991bd3fb29mr18061166b.15.1727978381712;
        Thu, 03 Oct 2024 10:59:41 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@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>
Subject: [PATCH v2 09/19] xen: Update header guards - Intel TXT
Date: Thu,  3 Oct 2024 18:59:09 +0100
Message-Id: <20241003175919.472774-10-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to Intel trusted execution technology.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/tboot.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/tboot.h b/xen/arch/x86/include/asm/tboot.h
index 818d5fa451..15479fe80e 100644
--- a/xen/arch/x86/include/asm/tboot.h
+++ b/xen/arch/x86/include/asm/tboot.h
@@ -34,8 +34,8 @@
  *
  */
 
-#ifndef __TBOOT_H__
-#define __TBOOT_H__
+#ifndef ASM__X86__TBOOT_H
+#define ASM__X86__TBOOT_H
 
 #include <xen/acpi.h>
 
@@ -147,7 +147,7 @@ static inline int tboot_wake_ap(int apicid, unsigned long sipi_vec)
 }
 #endif /* CONFIG_TBOOT */
 
-#endif /* __TBOOT_H__ */
+#endif /* ASM__X86__TBOOT_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809685.1222166 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ75-0007gA-3R; Thu, 03 Oct 2024 17:59:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809685.1222166; Thu, 03 Oct 2024 17:59: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 1swQ74-0007fp-VA; Thu, 03 Oct 2024 17:59:42 +0000
Received: by outflank-mailman (input) for mailman id 809685;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ73-0006qR-Dy
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:41 +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 42101a9c-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:39 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a8d0d0aea3cso174951166b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:39 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42101a9c-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978378; x=1728583178; 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=WG00VI55fdierDp7iCxKZRLsKioMh3K5ULaHRKtO+pg=;
        b=lz2A/kNhNObGdcOiTxtFmQcfkkARtSSzukh95nqzdGlRNdHyiPaAu7Bj+edPz5Y2mm
         YWZbp4N3WH0ei+J+nTiU8vhjPpf4xNAcykHpPwU0agWsHnDCrNvVbDvtfG6+6niWDsOw
         zEeSeRq2YhK8OZTNKN5l9koITs8u+Cnw6wtzs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978378; x=1728583178;
        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=WG00VI55fdierDp7iCxKZRLsKioMh3K5ULaHRKtO+pg=;
        b=uhLhs4swIvkapl7F5svegk88F0LUK4a2QS6QUf7VVT+hkUbBSfVLAMQeIDtnhtmpKq
         9yKt8JsjU8bisWKNDXNz5WYrO/HxFbLpK/lLiA2+95vpf2gGMuuozVg2RNB03W1Gg8m/
         OrdT73pkTRvFoR6SiiWmgcVETw0vzqJb+2vqdb2NEzeW0dhTyW8x56fjXqCsATVA574x
         hX03XjTcSmB4XBzCZl8vz0Tbtpyd2CIWiziCsESEtxTUuf1sBlnY/+EQee36U6kxXE5m
         rb5bWvfS2G8QbLorgGsI9W6NTtgtQf+FccMDnbgYwzFTH8oQimhxRxJWjf6Uh4Zw/0P5
         cpzw==
X-Gm-Message-State: AOJu0YxPUUTIie/5U6dOcSoV5JoLW2UX1kZSaoGDlhywhJh29/3Ff9xl
	i98zNXuep8pqoyM/ZzJdEnELzx+TOf/c/CjZl+OU52H7JEpNTu0VLHKwMpjm7HWkGUwi+OlEdjU
	I
X-Google-Smtp-Source: AGHT+IGBdFcQ0OUq9dcELZUFA77VgO8aTHJARHGhm8MZzBiMxrxAxgz+Eo3uac18yCKTGNIBUvcH9w==
X-Received: by 2002:a17:907:e665:b0:a91:158c:8057 with SMTP id a640c23a62f3a-a991bed88bemr17037866b.54.1727978375663;
        Thu, 03 Oct 2024 10:59:35 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Paul Durrant <paul@xen.org>,
	Tim Deegan <tim@xen.org>
Subject: [PATCH v2 02/19] xen: Update header guards - X86
Date: Thu,  3 Oct 2024 18:59:02 +0100
Message-Id: <20241003175919.472774-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to x86 architecture.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/video.h                           | 6 +++---
 xen/arch/x86/cpu/mcheck/barrier.h                   | 6 +++---
 xen/arch/x86/cpu/mcheck/mcaction.h                  | 4 ++--
 xen/arch/x86/cpu/mcheck/mce.h                       | 6 +++---
 xen/arch/x86/cpu/mcheck/mce_amd.h                   | 4 ++--
 xen/arch/x86/cpu/mcheck/mctelem.h                   | 4 ++--
 xen/arch/x86/cpu/mcheck/util.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/vmce.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/x86_mca.h                   | 6 +++---
 xen/arch/x86/cpu/microcode/private.h                | 6 +++---
 xen/arch/x86/cpu/mtrr/mtrr.h                        | 6 +++---
 xen/arch/x86/guest/hyperv/private.h                 | 6 +++---
 xen/arch/x86/hvm/svm/nestedhvm.h                    | 6 +++---
 xen/arch/x86/hvm/svm/svm.h                          | 6 +++---
 xen/arch/x86/hvm/viridian/private.h                 | 6 +++---
 xen/arch/x86/include/asm/acpi.h                     | 4 ++--
 xen/arch/x86/include/asm/alternative-asm.h          | 6 +++---
 xen/arch/x86/include/asm/alternative.h              | 6 +++---
 xen/arch/x86/include/asm/altp2m.h                   | 6 +++---
 xen/arch/x86/include/asm/amd.h                      | 6 +++---
 xen/arch/x86/include/asm/apic.h                     | 6 +++---
 xen/arch/x86/include/asm/apicdef.h                  | 4 ++--
 xen/arch/x86/include/asm/asm_defns.h                | 6 +++---
 xen/arch/x86/include/asm/atomic.h                   | 6 +++---
 xen/arch/x86/include/asm/bitops.h                   | 6 +++---
 xen/arch/x86/include/asm/bug.h                      | 6 +++---
 xen/arch/x86/include/asm/byteorder.h                | 6 +++---
 xen/arch/x86/include/asm/bzimage.h                  | 6 +++---
 xen/arch/x86/include/asm/cache.h                    | 4 ++--
 xen/arch/x86/include/asm/config.h                   | 6 +++---
 xen/arch/x86/include/asm/cpu-policy.h               | 6 +++---
 xen/arch/x86/include/asm/cpufeature.h               | 6 +++---
 xen/arch/x86/include/asm/cpufeatureset.h            | 6 +++---
 xen/arch/x86/include/asm/cpuid.h                    | 6 +++---
 xen/arch/x86/include/asm/cpuidle.h                  | 4 ++--
 xen/arch/x86/include/asm/current.h                  | 6 +++---
 xen/arch/x86/include/asm/debugreg.h                 | 6 +++---
 xen/arch/x86/include/asm/desc.h                     | 6 +++---
 xen/arch/x86/include/asm/device.h                   | 6 +++---
 xen/arch/x86/include/asm/dom0_build.h               | 6 +++---
 xen/arch/x86/include/asm/domain.h                   | 6 +++---
 xen/arch/x86/include/asm/e820.h                     | 6 +++---
 xen/arch/x86/include/asm/edd.h                      | 6 +++---
 xen/arch/x86/include/asm/elf.h                      | 6 +++---
 xen/arch/x86/include/asm/endbr.h                    | 6 +++---
 xen/arch/x86/include/asm/event.h                    | 4 ++--
 xen/arch/x86/include/asm/fixmap.h                   | 4 ++--
 xen/arch/x86/include/asm/flushtlb.h                 | 6 +++---
 xen/arch/x86/include/asm/gdbsx.h                    | 6 +++---
 xen/arch/x86/include/asm/genapic.h                  | 4 ++--
 xen/arch/x86/include/asm/grant_table.h              | 6 +++---
 xen/arch/x86/include/asm/guest.h                    | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-hcall.h       | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-tlfs.h        | 4 ++--
 xen/arch/x86/include/asm/guest/hyperv.h             | 6 +++---
 xen/arch/x86/include/asm/guest/hypervisor.h         | 6 +++---
 xen/arch/x86/include/asm/guest/pvh-boot.h           | 6 +++---
 xen/arch/x86/include/asm/guest/xen-hcall.h          | 6 +++---
 xen/arch/x86/include/asm/guest/xen.h                | 6 +++---
 xen/arch/x86/include/asm/guest_access.h             | 6 +++---
 xen/arch/x86/include/asm/guest_atomics.h            | 6 +++---
 xen/arch/x86/include/asm/guest_pt.h                 | 6 +++---
 xen/arch/x86/include/asm/hap.h                      | 4 ++--
 xen/arch/x86/include/asm/hardirq.h                  | 6 +++---
 xen/arch/x86/include/asm/hpet.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/asid.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/cacheattr.h            | 6 +++---
 xen/arch/x86/include/asm/hvm/domain.h               | 6 +++---
 xen/arch/x86/include/asm/hvm/emulate.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/grant_table.h          | 6 +++---
 xen/arch/x86/include/asm/hvm/guest_access.h         | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/io.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/ioreq.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/irq.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/nestedhvm.h            | 6 +++---
 xen/arch/x86/include/asm/hvm/save.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/support.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/nestedsvm.h        | 4 ++--
 xen/arch/x86/include/asm/hvm/svm/svm.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/svmdebug.h         | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/vmcb.h             | 4 ++--
 xen/arch/x86/include/asm/hvm/vcpu.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vioapic.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/viridian.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/vlapic.h               | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h             | 4 ++--
 xen/arch/x86/include/asm/hvm/vmx/vmx.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vvmx.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/vpic.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vpt.h                  | 6 +++---
 xen/arch/x86/include/asm/hypercall.h                | 6 +++---
 xen/arch/x86/include/asm/i387.h                     | 6 +++---
 xen/arch/x86/include/asm/intel-family.h             | 6 +++---
 xen/arch/x86/include/asm/invpcid.h                  | 6 +++---
 xen/arch/x86/include/asm/io.h                       | 4 ++--
 xen/arch/x86/include/asm/io_apic.h                  | 4 ++--
 xen/arch/x86/include/asm/iocap.h                    | 6 +++---
 xen/arch/x86/include/asm/iommu.h                    | 6 +++---
 xen/arch/x86/include/asm/ioreq.h                    | 6 +++---
 xen/arch/x86/include/asm/irq.h                      | 6 +++---
 xen/arch/x86/include/asm/ldt.h                      | 4 ++--
 xen/arch/x86/include/asm/mach-default/bios_ebda.h   | 6 +++---
 xen/arch/x86/include/asm/mach-default/io_ports.h    | 6 +++---
 xen/arch/x86/include/asm/mach-default/irq_vectors.h | 6 +++---
 xen/arch/x86/include/asm/mach-default/mach_mpspec.h | 6 +++---
 xen/arch/x86/include/asm/mach-generic/mach_apic.h   | 6 +++---
 xen/arch/x86/include/asm/machine_kexec.h            | 6 +++---
 xen/arch/x86/include/asm/mc146818rtc.h              | 6 +++---
 xen/arch/x86/include/asm/mce.h                      | 4 ++--
 xen/arch/x86/include/asm/mem_paging.h               | 6 +++---
 xen/arch/x86/include/asm/mem_sharing.h              | 6 +++---
 xen/arch/x86/include/asm/microcode.h                | 6 +++---
 xen/arch/x86/include/asm/mm.h                       | 6 +++---
 xen/arch/x86/include/asm/mpspec.h                   | 4 ++--
 xen/arch/x86/include/asm/mpspec_def.h               | 4 ++--
 xen/arch/x86/include/asm/msi.h                      | 6 +++---
 xen/arch/x86/include/asm/msr-index.h                | 6 +++---
 xen/arch/x86/include/asm/msr.h                      | 6 +++---
 xen/arch/x86/include/asm/mtrr.h                     | 6 +++---
 xen/arch/x86/include/asm/multicall.h                | 6 +++---
 xen/arch/x86/include/asm/mwait.h                    | 6 +++---
 xen/arch/x86/include/asm/nmi.h                      | 6 +++---
 xen/arch/x86/include/asm/nops.h                     | 6 +++---
 xen/arch/x86/include/asm/nospec.h                   | 6 +++---
 xen/arch/x86/include/asm/numa.h                     | 4 ++--
 xen/arch/x86/include/asm/p2m.h                      | 6 +++---
 xen/arch/x86/include/asm/page-bits.h                | 6 +++---
 xen/arch/x86/include/asm/page.h                     | 6 +++---
 xen/arch/x86/include/asm/paging.h                   | 4 ++--
 xen/arch/x86/include/asm/pci.h                      | 6 +++---
 xen/arch/x86/include/asm/perfc.h                    | 4 ++--
 xen/arch/x86/include/asm/perfc_defn.h               | 6 +++---
 xen/arch/x86/include/asm/processor.h                | 6 +++---
 xen/arch/x86/include/asm/prot-key.h                 | 6 +++---
 xen/arch/x86/include/asm/psr.h                      | 6 +++---
 xen/arch/x86/include/asm/pt-contig-markers.h        | 6 +++---
 xen/arch/x86/include/asm/pv/domain.h                | 6 +++---
 xen/arch/x86/include/asm/pv/grant_table.h           | 6 +++---
 xen/arch/x86/include/asm/pv/mm.h                    | 6 +++---
 xen/arch/x86/include/asm/pv/shim.h                  | 6 +++---
 xen/arch/x86/include/asm/pv/trace.h                 | 6 +++---
 xen/arch/x86/include/asm/pv/traps.h                 | 6 +++---
 xen/arch/x86/include/asm/random.h                   | 6 +++---
 xen/arch/x86/include/asm/regs.h                     | 6 +++---
 xen/arch/x86/include/asm/setup.h                    | 4 ++--
 xen/arch/x86/include/asm/shadow.h                   | 6 +++---
 xen/arch/x86/include/asm/shared.h                   | 6 +++---
 xen/arch/x86/include/asm/shstk.h                    | 6 +++---
 xen/arch/x86/include/asm/smp.h                      | 4 ++--
 xen/arch/x86/include/asm/softirq.h                  | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl.h                | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl_asm.h            | 6 +++---
 xen/arch/x86/include/asm/spinlock.h                 | 6 +++---
 xen/arch/x86/include/asm/string.h                   | 6 +++---
 xen/arch/x86/include/asm/system.h                   | 4 ++--
 xen/arch/x86/include/asm/time.h                     | 6 +++---
 xen/arch/x86/include/asm/trampoline.h               | 6 +++---
 xen/arch/x86/include/asm/traps.h                    | 6 +++---
 xen/arch/x86/include/asm/types.h                    | 6 +++---
 xen/arch/x86/include/asm/uaccess.h                  | 6 +++---
 xen/arch/x86/include/asm/vpmu.h                     | 6 +++---
 xen/arch/x86/include/asm/x86-defns.h                | 6 +++---
 xen/arch/x86/include/asm/x86-vendors.h              | 6 +++---
 xen/arch/x86/include/asm/x86_64/elf.h               | 6 +++---
 xen/arch/x86/include/asm/x86_64/page.h              | 6 +++---
 xen/arch/x86/include/asm/x86_64/regs.h              | 4 ++--
 xen/arch/x86/include/asm/x86_64/system.h            | 6 +++---
 xen/arch/x86/include/asm/x86_64/uaccess.h           | 6 +++---
 xen/arch/x86/include/asm/x86_emulate.h              | 6 +++---
 xen/arch/x86/include/asm/xenoprof.h                 | 6 +++---
 xen/arch/x86/include/asm/xstate.h                   | 6 +++---
 xen/arch/x86/mm/hap/private.h                       | 6 +++---
 xen/arch/x86/mm/mm-locks.h                          | 6 +++---
 xen/arch/x86/mm/p2m.h                               | 6 +++---
 xen/arch/x86/mm/shadow/private.h                    | 6 +++---
 xen/arch/x86/mm/shadow/types.h                      | 6 +++---
 xen/arch/x86/oprofile/op_counter.h                  | 6 +++---
 xen/arch/x86/oprofile/op_x86_model.h                | 6 +++---
 xen/arch/x86/pv/emulate.h                           | 6 +++---
 xen/arch/x86/pv/mm.h                                | 6 +++---
 xen/arch/x86/x86_emulate/x86_emulate.h              | 6 +++---
 xen/include/public/arch-x86/cpufeatureset.h         | 6 +++---
 xen/include/public/arch-x86/cpuid.h                 | 6 +++---
 xen/include/public/arch-x86/guest-acpi.h            | 6 +++---
 xen/include/public/arch-x86/hvm/save.h              | 6 +++---
 xen/include/public/arch-x86/hvm/start_info.h        | 6 +++---
 xen/include/public/arch-x86/pmu.h                   | 6 +++---
 xen/include/public/arch-x86/xen-mca.h               | 6 +++---
 xen/include/public/arch-x86/xen-x86_32.h            | 6 +++---
 xen/include/public/arch-x86/xen-x86_64.h            | 6 +++---
 xen/include/public/arch-x86/xen.h                   | 6 +++---
 xen/include/xen/lib/x86/cpu-policy.h                | 6 +++---
 xen/lib/x86/private.h                               | 6 +++---
 194 files changed, 552 insertions(+), 552 deletions(-)

diff --git a/xen/arch/x86/boot/video.h b/xen/arch/x86/boot/video.h
index 1203515f9e..cecd8965b7 100644
--- a/xen/arch/x86/boot/video.h
+++ b/xen/arch/x86/boot/video.h
@@ -1,5 +1,5 @@
-#ifndef __BOOT_VIDEO_H__
-#define __BOOT_VIDEO_H__
+#ifndef X86__BOOT__VIDEO_H
+#define X86__BOOT__VIDEO_H
 
 /*
  * Video modes numbered by menu position -- NOT RECOMMENDED because of lack
@@ -71,4 +71,4 @@ struct boot_video_info {
 extern struct boot_video_info boot_vid_info;
 #endif /* __ASSEMBLY__ */
 
-#endif /* __BOOT_VIDEO_H__ */
+#endif /* X86__BOOT__VIDEO_H */
diff --git a/xen/arch/x86/cpu/mcheck/barrier.h b/xen/arch/x86/cpu/mcheck/barrier.h
index 7ec483226f..c4c59ce627 100644
--- a/xen/arch/x86/cpu/mcheck/barrier.h
+++ b/xen/arch/x86/cpu/mcheck/barrier.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_BARRIER_H
-#define _MCHECK_BARRIER_H
+#ifndef X86__CPU__MCHECK__BARRIER_H
+#define X86__CPU__MCHECK__BARRIER_H
 
 #include <asm/atomic.h>
 
@@ -58,4 +58,4 @@ void mce_barrier_exit(struct mce_softirq_barrier *bar, bool do_wait);
 
 void mce_barrier(struct mce_softirq_barrier *bar);
 
-#endif /* _MCHECK_BARRIER_H */
+#endif /* X86__CPU__MCHECK__BARRIER_H */
diff --git a/xen/arch/x86/cpu/mcheck/mcaction.h b/xen/arch/x86/cpu/mcheck/mcaction.h
index 6c79498cd2..e5a7cb9e0d 100644
--- a/xen/arch/x86/cpu/mcheck/mcaction.h
+++ b/xen/arch/x86/cpu/mcheck/mcaction.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_ACTION_H
-#define _MCHECK_ACTION_H
+#ifndef X86__CPU__MCHECK__MCACTION_H
+#define X86__CPU__MCHECK__MCACTION_H
 
 #include <xen/types.h>
 #include "x86_mca.h"
diff --git a/xen/arch/x86/cpu/mcheck/mce.h b/xen/arch/x86/cpu/mcheck/mce.h
index eba4b536c7..f2a423f029 100644
--- a/xen/arch/x86/cpu/mcheck/mce.h
+++ b/xen/arch/x86/cpu/mcheck/mce.h
@@ -1,6 +1,6 @@
-#ifndef _MCE_H
+#ifndef X86__CPU__MCHECK__MCE_H
 
-#define _MCE_H
+#define X86__CPU__MCHECK__MCE_H
 
 #include <xen/init.h>
 #include <xen/percpu.h>
@@ -244,4 +244,4 @@ struct mce {
 
 extern int apei_write_mce(struct mce *m);
 
-#endif /* _MCE_H */
+#endif /* X86__CPU__MCHECK__MCE_H */
diff --git a/xen/arch/x86/cpu/mcheck/mce_amd.h b/xen/arch/x86/cpu/mcheck/mce_amd.h
index c12c25d745..35e3bc6a6d 100644
--- a/xen/arch/x86/cpu/mcheck/mce_amd.h
+++ b/xen/arch/x86/cpu/mcheck/mce_amd.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_AMD_H
-#define _MCHECK_AMD_H
+#ifndef X86__CPU__MCHECK__MCE_AMD_H
+#define X86__CPU__MCHECK__MCE_AMD_H
 
 bool cf_check mc_amd_recoverable_scan(uint64_t status);
 bool cf_check mc_amd_addrcheck(uint64_t status, uint64_t misc, int addrtype);
diff --git a/xen/arch/x86/cpu/mcheck/mctelem.h b/xen/arch/x86/cpu/mcheck/mctelem.h
index f4c5ff848d..a77c9bcffb 100644
--- a/xen/arch/x86/cpu/mcheck/mctelem.h
+++ b/xen/arch/x86/cpu/mcheck/mctelem.h
@@ -8,9 +8,9 @@
  * License.
  */
 
-#ifndef _MCTELEM_H
+#ifndef X86__CPU__MCHECK__MCTELEM_H
 
-#define	_MCTELEM_H
+#define	X86__CPU__MCHECK__MCTELEM_H
 
 #include <xen/init.h>
 #include <xen/smp.h>
diff --git a/xen/arch/x86/cpu/mcheck/util.h b/xen/arch/x86/cpu/mcheck/util.h
index a5468b89fa..b4a71e21d4 100644
--- a/xen/arch/x86/cpu/mcheck/util.h
+++ b/xen/arch/x86/cpu/mcheck/util.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_UTIL_H
-#define _MCHECK_UTIL_H
+#ifndef X86__CPU__MCHECK__UTIL_H
+#define X86__CPU__MCHECK__UTIL_H
 
 void mce_panic_check(void);
 
diff --git a/xen/arch/x86/cpu/mcheck/vmce.h b/xen/arch/x86/cpu/mcheck/vmce.h
index a9a325f776..d934b02c8b 100644
--- a/xen/arch/x86/cpu/mcheck/vmce.h
+++ b/xen/arch/x86/cpu/mcheck/vmce.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_VMCE_H
-#define _MCHECK_VMCE_H
+#ifndef X86__CPU__MCHECK__VMCE_H
+#define X86__CPU__MCHECK__VMCE_H
 
 #include "x86_mca.h"
 
diff --git a/xen/arch/x86/cpu/mcheck/x86_mca.h b/xen/arch/x86/cpu/mcheck/x86_mca.h
index 18116737af..d5514762ed 100644
--- a/xen/arch/x86/cpu/mcheck/x86_mca.h
+++ b/xen/arch/x86/cpu/mcheck/x86_mca.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2007-2012 Advanced Micro Devices, Inc. 
  */
 
-#ifndef X86_MCA_H
-#define X86_MCA_H
+#ifndef X86__CPU__MCHECK__X86_MCA_H
+#define X86__CPU__MCHECK__X86_MCA_H
 
 #include <public/arch-x86/xen-mca.h>
 
@@ -150,4 +150,4 @@ struct mca_error_handler
 /* Global variables */
 extern bool opt_mce;
 
-#endif /* X86_MCA_H */
+#endif /* X86__CPU__MCHECK__X86_MCA_H */
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index c72f060ac3..a3707863b9 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -1,5 +1,5 @@
-#ifndef ASM_X86_MICROCODE_PRIVATE_H
-#define ASM_X86_MICROCODE_PRIVATE_H
+#ifndef X86__CPU__MICROCODE__PRIVATE_H
+#define X86__CPU__MICROCODE__PRIVATE_H
 
 #include <public/platform.h>
 
@@ -83,4 +83,4 @@ void ucode_probe_intel(struct microcode_ops *ops);
 static inline void ucode_probe_intel(struct microcode_ops *ops) {}
 #endif
 
-#endif /* ASM_X86_MICROCODE_PRIVATE_H */
+#endif /* X86__CPU__MICROCODE__PRIVATE_H */
diff --git a/xen/arch/x86/cpu/mtrr/mtrr.h b/xen/arch/x86/cpu/mtrr/mtrr.h
index 632bf658be..c23987cedc 100644
--- a/xen/arch/x86/cpu/mtrr/mtrr.h
+++ b/xen/arch/x86/cpu/mtrr/mtrr.h
@@ -1,8 +1,8 @@
 /*
  * local mtrr defines.
  */
-#ifndef X86_CPU_MTRR_MTRR_H
-#define X86_CPU_MTRR_MTRR_H
+#ifndef X86__CPU__MTRR__MTRR_H
+#define X86__CPU__MTRR__MTRR_H
 
 #define MTRR_CHANGE_MASK_FIXED     0x01
 #define MTRR_CHANGE_MASK_VARIABLE  0x02
@@ -28,4 +28,4 @@ extern unsigned int num_var_ranges;
 
 void mtrr_state_warn(void);
 
-#endif /* X86_CPU_MTRR_MTRR_H */
+#endif /* X86__CPU__MTRR__MTRR_H */
diff --git a/xen/arch/x86/guest/hyperv/private.h b/xen/arch/x86/guest/hyperv/private.h
index 0277e8314c..790872e3c9 100644
--- a/xen/arch/x86/guest/hyperv/private.h
+++ b/xen/arch/x86/guest/hyperv/private.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2020 Microsoft.
  */
 
-#ifndef __XEN_HYPERV_PRIVIATE_H__
-#define __XEN_HYPERV_PRIVIATE_H__
+#ifndef X86__GUEST__HYPERV__PRIVATE_H
+#define X86__GUEST__HYPERV__PRIVATE_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
@@ -29,4 +29,4 @@ int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
 /* Returns number of banks, -ev if error */
 int cpumask_to_vpset(struct hv_vpset *vpset, const cpumask_t *mask);
 
-#endif /* __XEN_HYPERV_PRIVIATE_H__  */
+#endif /* X86__GUEST__HYPERV__PRIVATE_H  */
diff --git a/xen/arch/x86/hvm/svm/nestedhvm.h b/xen/arch/x86/hvm/svm/nestedhvm.h
index 43245e13de..dd3533c74b 100644
--- a/xen/arch/x86/hvm/svm/nestedhvm.h
+++ b/xen/arch/x86/hvm/svm/nestedhvm.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2011, Advanced Micro Devices, Inc
  */
 
-#ifndef __X86_HVM_SVM_NESTEDHVM_PRIV_H__
-#define __X86_HVM_SVM_NESTEDHVM_PRIV_H__
+#ifndef X86__HVM__SVM__NESTEDHVM_H
+#define X86__HVM__SVM__NESTEDHVM_H
 
 #include <xen/mm.h>
 #include <xen/types.h>
@@ -64,7 +64,7 @@ int cf_check nsvm_hap_walk_L1_p2m(
 
 int nestedsvm_vcpu_interrupt(struct vcpu *v, const struct hvm_intack intack);
 
-#endif /* __X86_HVM_SVM_NESTEDHVM_PRIV_H__ */
+#endif /* X86__HVM__SVM__NESTEDHVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/hvm/svm/svm.h b/xen/arch/x86/hvm/svm/svm.h
index 8dbf37ff49..159cc71943 100644
--- a/xen/arch/x86/hvm/svm/svm.h
+++ b/xen/arch/x86/hvm/svm/svm.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __X86_HVM_SVM_SVM_PRIV_H__
-#define __X86_HVM_SVM_SVM_PRIV_H__
+#ifndef X86__HVM__SVM__SVM_H
+#define X86__HVM__SVM__SVM_H
 
 #include <xen/types.h>
 
@@ -86,7 +86,7 @@ unsigned int svm_get_task_switch_insn_len(void);
 #define _NPT_PFEC_in_gpt       33
 #define NPT_PFEC_in_gpt        (1UL<<_NPT_PFEC_in_gpt)
 
-#endif /* __X86_HVM_SVM_SVM_PRIV_H__ */
+#endif /* X86__HVM__SVM__SVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/hvm/viridian/private.h b/xen/arch/x86/hvm/viridian/private.h
index 1bf65c761c..c10544842f 100644
--- a/xen/arch/x86/hvm/viridian/private.h
+++ b/xen/arch/x86/hvm/viridian/private.h
@@ -1,7 +1,7 @@
 /* Copyright (c) 2018 Citrix Systems Inc. */
 
-#ifndef X86_HVM_VIRIDIAN_PRIVATE_H
-#define X86_HVM_VIRIDIAN_PRIVATE_H
+#ifndef X86__HVM__VIRIDIAN__PRIVATE_H
+#define X86__HVM__VIRIDIAN__PRIVATE_H
 
 #include <asm/hvm/save.h>
 #include <asm/hvm/viridian.h>
@@ -57,7 +57,7 @@ void viridian_dump_guest_page(const struct vcpu *v, const char *name,
 void viridian_map_guest_page(struct domain *d, struct viridian_page *vp);
 void viridian_unmap_guest_page(struct viridian_page *vp);
 
-#endif /* X86_HVM_VIRIDIAN_PRIVATE_H */
+#endif /* X86__HVM__VIRIDIAN__PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/acpi.h b/xen/arch/x86/include/asm/acpi.h
index 217819dd61..5784b10b1f 100644
--- a/xen/arch/x86/include/asm/acpi.h
+++ b/xen/arch/x86/include/asm/acpi.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_ACPI_H
-#define _ASM_X86_ACPI_H
+#ifndef ASM__X86__ACPI_H
+#define ASM__X86__ACPI_H
 
 /*
  *  Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
diff --git a/xen/arch/x86/include/asm/alternative-asm.h b/xen/arch/x86/include/asm/alternative-asm.h
index 83e8594f0e..9ad8fb9213 100644
--- a/xen/arch/x86/include/asm/alternative-asm.h
+++ b/xen/arch/x86/include/asm/alternative-asm.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_ALTERNATIVE_ASM_H_
-#define _ASM_X86_ALTERNATIVE_ASM_H_
+#ifndef ASM__X86__ALTERNATIVE_ASM_H
+#define ASM__X86__ALTERNATIVE_ASM_H
 
 #include <asm/nops.h>
 
@@ -115,7 +115,7 @@
 #undef as_true
 
 #endif /* __ASSEMBLY__ */
-#endif /* _ASM_X86_ALTERNATIVE_ASM_H_ */
+#endif /* ASM__X86__ALTERNATIVE_ASM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/alternative.h b/xen/arch/x86/include/asm/alternative.h
index 38472fb58e..d4c0fb014c 100644
--- a/xen/arch/x86/include/asm/alternative.h
+++ b/xen/arch/x86/include/asm/alternative.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ALTERNATIVE_H__
-#define __X86_ALTERNATIVE_H__
+#ifndef ASM__X86__ALTERNATIVE_H
+#define ASM__X86__ALTERNATIVE_H
 
 #ifdef __ASSEMBLY__
 #include <asm/alternative-asm.h>
@@ -423,4 +423,4 @@ extern void alternative_branches(void);
 
 #endif /*  !__ASSEMBLY__  */
 
-#endif /* __X86_ALTERNATIVE_H__ */
+#endif /* ASM__X86__ALTERNATIVE_H */
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index c57a8c5588..f43b075ed0 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2014, Intel Corporation.
  */
 
-#ifndef __ASM_X86_ALTP2M_H
-#define __ASM_X86_ALTP2M_H
+#ifndef ASM__X86__ALTP2M_H
+#define ASM__X86__ALTP2M_H
 
 #ifdef CONFIG_ALTP2M
 
@@ -46,4 +46,4 @@ void altp2m_vcpu_disable_ve(struct vcpu *v);
 
 #endif
 
-#endif /* __ASM_X86_ALTP2M_H */
+#endif /* ASM__X86__ALTP2M_H */
diff --git a/xen/arch/x86/include/asm/amd.h b/xen/arch/x86/include/asm/amd.h
index 9c9599a622..7dbd8fae06 100644
--- a/xen/arch/x86/include/asm/amd.h
+++ b/xen/arch/x86/include/asm/amd.h
@@ -2,8 +2,8 @@
  * amd.h - AMD processor specific definitions
  */
 
-#ifndef __AMD_H__
-#define __AMD_H__
+#ifndef ASM__X86__AMD_H
+#define ASM__X86__AMD_H
 
 #include <asm/cpufeature.h>
 
@@ -174,4 +174,4 @@ bool amd_setup_legacy_ssbd(void);
 void amd_set_legacy_ssbd(bool enable);
 void amd_set_cpuid_user_dis(bool enable);
 
-#endif /* __AMD_H__ */
+#endif /* ASM__X86__AMD_H */
diff --git a/xen/arch/x86/include/asm/apic.h b/xen/arch/x86/include/asm/apic.h
index d8eda6df6d..87970cfce7 100644
--- a/xen/arch/x86/include/asm/apic.h
+++ b/xen/arch/x86/include/asm/apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_APIC_H
-#define __ASM_APIC_H
+#ifndef ASM__X86__APIC_H
+#define ASM__X86__APIC_H
 
 #include <asm/apicdef.h>
 #include <asm/fixmap.h>
@@ -201,4 +201,4 @@ extern unsigned int nmi_watchdog;
 #define NMI_NONE	0
 #define NMI_LOCAL_APIC	1
 
-#endif /* __ASM_APIC_H */
+#endif /* ASM__X86__APIC_H */
diff --git a/xen/arch/x86/include/asm/apicdef.h b/xen/arch/x86/include/asm/apicdef.h
index 49e29ec801..8d9a29d488 100644
--- a/xen/arch/x86/include/asm/apicdef.h
+++ b/xen/arch/x86/include/asm/apicdef.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_APICDEF_H
-#define __ASM_APICDEF_H
+#ifndef ASM__X86__APICDEF_H
+#define ASM__X86__APICDEF_H
 
 /*
  * Constants for various Intel APICs. (local APIC, IOAPIC, etc.)
diff --git a/xen/arch/x86/include/asm/asm_defns.h b/xen/arch/x86/include/asm/asm_defns.h
index 92b4116a15..812bd5c52a 100644
--- a/xen/arch/x86/include/asm/asm_defns.h
+++ b/xen/arch/x86/include/asm/asm_defns.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_ASM_DEFNS_H__
-#define __X86_ASM_DEFNS_H__
+#ifndef ASM__X86__ASM_DEFNS_H
+#define ASM__X86__ASM_DEFNS_H
 
 #ifndef COMPILE_OFFSETS
 /* NB. Auto-generated from arch/.../asm-offsets.c */
@@ -346,4 +346,4 @@ static always_inline void stac(void)
 #define ASM_CONSTANT(name, value)                \
     asm ( ".equ " #name ", %P0; .global " #name  \
           :: "i" ((value)) );
-#endif /* __X86_ASM_DEFNS_H__ */
+#endif /* ASM__X86__ASM_DEFNS_H */
diff --git a/xen/arch/x86/include/asm/atomic.h b/xen/arch/x86/include/asm/atomic.h
index 16bd0ebfd7..f852b154ef 100644
--- a/xen/arch/x86/include/asm/atomic.h
+++ b/xen/arch/x86/include/asm/atomic.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_X86_ATOMIC__
-#define __ARCH_X86_ATOMIC__
+#ifndef ASM__X86__ATOMIC_H
+#define ASM__X86__ATOMIC_H
 
 #include <xen/atomic.h>
 #include <asm/system.h>
@@ -236,4 +236,4 @@ static inline void atomic_and(int m, atomic_t *v)
 
 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
 
-#endif /* __ARCH_X86_ATOMIC__ */
+#endif /* ASM__X86__ATOMIC_H */
diff --git a/xen/arch/x86/include/asm/bitops.h b/xen/arch/x86/include/asm/bitops.h
index 39e37f1cbe..613310c1e2 100644
--- a/xen/arch/x86/include/asm/bitops.h
+++ b/xen/arch/x86/include/asm/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _X86_BITOPS_H
-#define _X86_BITOPS_H
+#ifndef ASM__X86__BITOPS_H
+#define ASM__X86__BITOPS_H
 
 /*
  * Copyright 1992, Linus Torvalds.
@@ -498,4 +498,4 @@ static always_inline unsigned int arch_hweightl(unsigned long x)
 }
 #define arch_hweightl arch_hweightl
 
-#endif /* _X86_BITOPS_H */
+#endif /* ASM__X86__BITOPS_H */
diff --git a/xen/arch/x86/include/asm/bug.h b/xen/arch/x86/include/asm/bug.h
index e748b6c2f2..59a9871cba 100644
--- a/xen/arch/x86/include/asm/bug.h
+++ b/xen/arch/x86/include/asm/bug.h
@@ -1,5 +1,5 @@
-#ifndef __X86_BUG_H__
-#define __X86_BUG_H__
+#ifndef ASM__X86__BUG_H
+#define ASM__X86__BUG_H
 
 /*
  * Please do not include in the header any header that might
@@ -68,4 +68,4 @@
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __X86_BUG_H__ */
+#endif /* ASM__X86__BUG_H */
diff --git a/xen/arch/x86/include/asm/byteorder.h b/xen/arch/x86/include/asm/byteorder.h
index a877c07f67..802d50e3fc 100644
--- a/xen/arch/x86/include/asm/byteorder.h
+++ b/xen/arch/x86/include/asm/byteorder.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_BYTEORDER_H__
-#define __ASM_X86_BYTEORDER_H__
+#ifndef ASM__X86__BYTEORDER_H
+#define ASM__X86__BYTEORDER_H
 
 #include <xen/types.h>
 #include <xen/compiler.h>
@@ -33,4 +33,4 @@ static inline attr_const __u64 ___arch__swab64(__u64 val)
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_X86_BYTEORDER_H__ */
+#endif /* ASM__X86__BYTEORDER_H */
diff --git a/xen/arch/x86/include/asm/bzimage.h b/xen/arch/x86/include/asm/bzimage.h
index 7ed69d3910..53c86f0d5b 100644
--- a/xen/arch/x86/include/asm/bzimage.h
+++ b/xen/arch/x86/include/asm/bzimage.h
@@ -1,5 +1,5 @@
-#ifndef __X86_BZIMAGE_H__
-#define __X86_BZIMAGE_H__
+#ifndef ASM__X86__BZIMAGE_H
+#define ASM__X86__BZIMAGE_H
 
 #include <xen/init.h>
 
@@ -8,4 +8,4 @@ unsigned long bzimage_headroom(void *image_start, unsigned long image_length);
 int bzimage_parse(void *image_base, void **image_start,
                   unsigned long *image_len);
 
-#endif /* __X86_BZIMAGE_H__ */
+#endif /* ASM__X86__BZIMAGE_H */
diff --git a/xen/arch/x86/include/asm/cache.h b/xen/arch/x86/include/asm/cache.h
index f15d10dc7f..8683cecee2 100644
--- a/xen/arch/x86/include/asm/cache.h
+++ b/xen/arch/x86/include/asm/cache.h
@@ -1,8 +1,8 @@
 /*
  * include/asm-x86/cache.h
  */
-#ifndef __ARCH_X86_CACHE_H
-#define __ARCH_X86_CACHE_H
+#ifndef ASM__X86__CACHE_H
+#define ASM__X86__CACHE_H
 
 
 /* L1 cache line size */
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index f8a5a4913b..9d931f4ace 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __X86_CONFIG_H__
-#define __X86_CONFIG_H__
+#ifndef ASM__X86__CONFIG_H
+#define ASM__X86__CONFIG_H
 
 #define LONG_BYTEORDER 3
 #define CONFIG_PAGING_LEVELS 4
@@ -292,4 +292,4 @@ extern unsigned long xen_phys_start;
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
 
-#endif /* __X86_CONFIG_H__ */
+#endif /* ASM__X86__CONFIG_H */
diff --git a/xen/arch/x86/include/asm/cpu-policy.h b/xen/arch/x86/include/asm/cpu-policy.h
index 99d5a8e67e..c69df4526f 100644
--- a/xen/arch/x86/include/asm/cpu-policy.h
+++ b/xen/arch/x86/include/asm/cpu-policy.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef X86_CPU_POLICY_H
-#define X86_CPU_POLICY_H
+#ifndef ASM__X86__CPU_POLICY_H
+#define ASM__X86__CPU_POLICY_H
 
 struct cpu_policy;
 struct domain;
@@ -30,4 +30,4 @@ void recalculate_cpuid_policy(struct domain *d);
  */
 void calculate_raw_cpu_policy(void);
 
-#endif /* X86_CPU_POLICY_H */
+#endif /* ASM__X86__CPU_POLICY_H */
diff --git a/xen/arch/x86/include/asm/cpufeature.h b/xen/arch/x86/include/asm/cpufeature.h
index 3a06b6f297..478b9cd2bd 100644
--- a/xen/arch/x86/include/asm/cpufeature.h
+++ b/xen/arch/x86/include/asm/cpufeature.h
@@ -3,8 +3,8 @@
  *
  * Defines x86 CPU feature bits
  */
-#ifndef __ASM_I386_CPUFEATURE_H
-#define __ASM_I386_CPUFEATURE_H
+#ifndef ASM__X86__CPUFEATURE_H
+#define ASM__X86__CPUFEATURE_H
 
 #include <xen/cache.h>
 #include <xen/const.h>
@@ -281,7 +281,7 @@ struct cpuid4_info {
 int cpuid4_cache_lookup(int index, struct cpuid4_info *this_leaf);
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ASM_I386_CPUFEATURE_H */
+#endif /* ASM__X86__CPUFEATURE_H */
 
 /* 
  * Local Variables:
diff --git a/xen/arch/x86/include/asm/cpufeatureset.h b/xen/arch/x86/include/asm/cpufeatureset.h
index a9c51bc514..037b4b6997 100644
--- a/xen/arch/x86/include/asm/cpufeatureset.h
+++ b/xen/arch/x86/include/asm/cpufeatureset.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_CPUFEATURESET_H__
-#define __XEN_X86_CPUFEATURESET_H__
+#ifndef ASM__X86__CPUFEATURESET_H
+#define ASM__X86__CPUFEATURESET_H
 
 #ifndef __ASSEMBLY__
 
@@ -27,7 +27,7 @@ enum {
 
 #undef XEN_CPUFEATURE
 
-#endif /* !__XEN_X86_CPUFEATURESET_H__ */
+#endif /* !ASM__X86__CPUFEATURESET_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/cpuid.h b/xen/arch/x86/include/asm/cpuid.h
index b32ba0bbfe..6cfebbb4eb 100644
--- a/xen/arch/x86/include/asm/cpuid.h
+++ b/xen/arch/x86/include/asm/cpuid.h
@@ -1,5 +1,5 @@
-#ifndef __X86_CPUID_H__
-#define __X86_CPUID_H__
+#ifndef ASM__X86__CPUID_H
+#define ASM__X86__CPUID_H
 
 #include <asm/cpufeatureset.h>
 
@@ -51,7 +51,7 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
                  uint32_t subleaf, struct cpuid_leaf *res);
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_CPUID_H__ */
+#endif /* !ASM__X86__CPUID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/cpuidle.h b/xen/arch/x86/include/asm/cpuidle.h
index 3a6b73142b..bfa11d1451 100644
--- a/xen/arch/x86/include/asm/cpuidle.h
+++ b/xen/arch/x86/include/asm/cpuidle.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_CPUIDLE_H__
-#define __ASM_X86_CPUIDLE_H__
+#ifndef ASM__X86__CPUIDLE_H
+#define ASM__X86__CPUIDLE_H
 
 #include <xen/cpuidle.h>
 #include <xen/notifier.h>
diff --git a/xen/arch/x86/include/asm/current.h b/xen/arch/x86/include/asm/current.h
index bcec328c98..1aebbf991b 100644
--- a/xen/arch/x86/include/asm/current.h
+++ b/xen/arch/x86/include/asm/current.h
@@ -4,8 +4,8 @@
  * Information structure that lives at the bottom of the per-cpu Xen stack.
  */
 
-#ifndef __X86_CURRENT_H__
-#define __X86_CURRENT_H__
+#ifndef ASM__X86__CURRENT_H
+#define ASM__X86__CURRENT_H
 
 #include <xen/percpu.h>
 #include <xen/page-size.h>
@@ -211,4 +211,4 @@ unsigned long get_stack_dump_bottom (unsigned long sp);
  */
 DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
 
-#endif /* __X86_CURRENT_H__ */
+#endif /* ASM__X86__CURRENT_H */
diff --git a/xen/arch/x86/include/asm/debugreg.h b/xen/arch/x86/include/asm/debugreg.h
index 23aa592e40..05f1925f9b 100644
--- a/xen/arch/x86/include/asm/debugreg.h
+++ b/xen/arch/x86/include/asm/debugreg.h
@@ -1,5 +1,5 @@
-#ifndef _X86_DEBUGREG_H
-#define _X86_DEBUGREG_H
+#ifndef ASM__X86__DEBUGREG_H
+#define ASM__X86__DEBUGREG_H
 
 #include <asm/x86-defns.h>
 
@@ -140,4 +140,4 @@ static inline unsigned int x86_bp_width(unsigned int dr7, unsigned int bp)
     return 1U << raw;
 }
 
-#endif /* _X86_DEBUGREG_H */
+#endif /* ASM__X86__DEBUGREG_H */
diff --git a/xen/arch/x86/include/asm/desc.h b/xen/arch/x86/include/asm/desc.h
index a1e0807d97..1598205ab0 100644
--- a/xen/arch/x86/include/asm/desc.h
+++ b/xen/arch/x86/include/asm/desc.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_DESC_H
-#define __ARCH_DESC_H
+#ifndef ASM__X86__DESC_H
+#define ASM__X86__DESC_H
 
 #include <asm/page.h>
 
@@ -240,4 +240,4 @@ static inline void ltr(unsigned int sel)
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ARCH_DESC_H */
+#endif /* ASM__X86__DESC_H */
diff --git a/xen/arch/x86/include/asm/device.h b/xen/arch/x86/include/asm/device.h
index f2acc7effd..32a71e35b0 100644
--- a/xen/arch/x86/include/asm/device.h
+++ b/xen/arch/x86/include/asm/device.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_DEVICE_H
-#define __ASM_X86_DEVICE_H
+#ifndef ASM__X86__DEVICE_H
+#define ASM__X86__DEVICE_H
 
 #include <xen/pci.h>
 
@@ -13,7 +13,7 @@ typedef struct pci_dev device_t;
 #define dev_is_pci(dev) ((void)(dev), 1)
 #define pci_to_dev(pci) (pci)
 
-#endif /* __ASM_X86_DEVICE_H */
+#endif /* ASM__X86__DEVICE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 107c1ff983..8fafa7e3a4 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -1,5 +1,5 @@
-#ifndef _DOM0_BUILD_H_
-#define _DOM0_BUILD_H_
+#ifndef ASM__X86__DOM0_BUILD_H
+#define ASM__X86__DOM0_BUILD_H
 
 #include <xen/libelf.h>
 #include <xen/sched.h>
@@ -29,7 +29,7 @@ unsigned long dom0_paging_pages(const struct domain *d,
 void dom0_update_physmap(bool compat, unsigned long pfn,
                          unsigned long mfn, unsigned long vphysmap_s);
 
-#endif	/* _DOM0_BUILD_H_ */
+#endif	/* ASM__X86__DOM0_BUILD_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index bdcdb8de09..188b063788 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_H__
-#define __ASM_DOMAIN_H__
+#ifndef ASM__X86__DOMAIN_H
+#define ASM__X86__DOMAIN_H
 
 #include <xen/mm.h>
 #include <xen/radix-tree.h>
@@ -796,7 +796,7 @@ unsigned int domain_max_paddr_bits(const struct domain *d);
 #define arch_init_idle_domain arch_init_idle_domain
 void arch_init_idle_domain(struct domain *d);
 
-#endif /* __ASM_DOMAIN_H__ */
+#endif /* ASM__X86__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/e820.h b/xen/arch/x86/include/asm/e820.h
index af90085d65..bda19aab2c 100644
--- a/xen/arch/x86/include/asm/e820.h
+++ b/xen/arch/x86/include/asm/e820.h
@@ -1,5 +1,5 @@
-#ifndef __E820_HEADER
-#define __E820_HEADER
+#ifndef ASM__X86__E820_H
+#define ASM__X86__E820_H
 
 /*
  * PC BIOS standard E820 types and structure.
@@ -40,4 +40,4 @@ extern struct e820map e820_raw;
 extern struct e820map bios_e820map[];
 extern unsigned int bios_e820nr;
 
-#endif /*__E820_HEADER*/
+#endif /*ASM__X86__E820_H*/
diff --git a/xen/arch/x86/include/asm/edd.h b/xen/arch/x86/include/asm/edd.h
index afaa23732a..f3cda0c1d7 100644
--- a/xen/arch/x86/include/asm/edd.h
+++ b/xen/arch/x86/include/asm/edd.h
@@ -20,8 +20,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __XEN_EDD_H__
-#define __XEN_EDD_H__
+#ifndef ASM__X86__EDD_H
+#define ASM__X86__EDD_H
 
 #ifndef __ASSEMBLY__
 
@@ -161,4 +161,4 @@ extern u8 boot_edd_info_nr;
 #define EDDEXTSIZE              8
 #define EDDPARMSIZE             74
 
-#endif /* __XEN_EDD_H__ */
+#endif /* ASM__X86__EDD_H */
diff --git a/xen/arch/x86/include/asm/elf.h b/xen/arch/x86/include/asm/elf.h
index 1d7ea96e22..9ce6f69830 100644
--- a/xen/arch/x86/include/asm/elf.h
+++ b/xen/arch/x86/include/asm/elf.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ELF_H__
-#define __X86_ELF_H__
+#ifndef ASM__X86__ELF_H
+#define ASM__X86__ELF_H
 
 typedef struct {
     unsigned long cr0, cr2, cr3, cr4;
@@ -7,7 +7,7 @@ typedef struct {
 
 #include <asm/x86_64/elf.h>
 
-#endif /* __X86_ELF_H__ */
+#endif /* ASM__X86__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/endbr.h b/xen/arch/x86/include/asm/endbr.h
index ba3bae7147..f6b8b9435e 100644
--- a/xen/arch/x86/include/asm/endbr.h
+++ b/xen/arch/x86/include/asm/endbr.h
@@ -2,8 +2,8 @@
 /******************************************************************************
  * Copyright (c) 2021-2022 Citrix Systems Ltd.
  */
-#ifndef XEN_ASM_ENDBR_H
-#define XEN_ASM_ENDBR_H
+#ifndef ASM__X86__ENDBR_H
+#define ASM__X86__ENDBR_H
 
 #include <xen/types.h>
 
@@ -66,4 +66,4 @@ static inline void place_endbr64_poison(void *ptr)
     *(uint32_t *)ptr = gen_endbr64_poison();
 }
 
-#endif /* XEN_ASM_ENDBR_H */
+#endif /* ASM__X86__ENDBR_H */
diff --git a/xen/arch/x86/include/asm/event.h b/xen/arch/x86/include/asm/event.h
index 5e09ede6d7..eb91d3345a 100644
--- a/xen/arch/x86/include/asm/event.h
+++ b/xen/arch/x86/include/asm/event.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_EVENT_H__
-#define __ASM_EVENT_H__
+#ifndef ASM__X86__EVENT_H
+#define ASM__X86__EVENT_H
 
 #include <xen/shared.h>
 
diff --git a/xen/arch/x86/include/asm/fixmap.h b/xen/arch/x86/include/asm/fixmap.h
index 516ec3fa6c..53eb149d1a 100644
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -9,8 +9,8 @@
  * Modifications for Xen are copyright (c) 2002-2004, K A Fraser
  */
 
-#ifndef _ASM_FIXMAP_H
-#define _ASM_FIXMAP_H
+#ifndef ASM__X86__FIXMAP_H
+#define ASM__X86__FIXMAP_H
 
 #include <xen/page-size.h>
 
diff --git a/xen/arch/x86/include/asm/flushtlb.h b/xen/arch/x86/include/asm/flushtlb.h
index bb0ad58db4..7f60cca86c 100644
--- a/xen/arch/x86/include/asm/flushtlb.h
+++ b/xen/arch/x86/include/asm/flushtlb.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2003-2004, K A Fraser
  */
 
-#ifndef __FLUSHTLB_H__
-#define __FLUSHTLB_H__
+#ifndef ASM__X86__FLUSHTLB_H
+#define ASM__X86__FLUSHTLB_H
 
 #include <xen/mm.h>
 #include <xen/percpu.h>
@@ -201,4 +201,4 @@ static inline int clean_dcache_va_range(const void *p, unsigned long size)
 unsigned int guest_flush_tlb_flags(const struct domain *d);
 void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask);
 
-#endif /* __FLUSHTLB_H__ */
+#endif /* ASM__X86__FLUSHTLB_H */
diff --git a/xen/arch/x86/include/asm/gdbsx.h b/xen/arch/x86/include/asm/gdbsx.h
index e906be9ea3..d22e5ad361 100644
--- a/xen/arch/x86/include/asm/gdbsx.h
+++ b/xen/arch/x86/include/asm/gdbsx.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __X86_GDBX_H__
-#define __X86_GDBX_H__
+#ifndef ASM__X86__GDBSX_H
+#define ASM__X86__GDBSX_H
 
 #include <xen/stdbool.h>
 
@@ -26,4 +26,4 @@ static inline int gdbsx_domctl(
 }
 
 #endif /* CONFIG_GDBSX */
-#endif /* __X86_GDBX_H__ */
+#endif /* ASM__X86__GDBSX_H */
diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index a694371c6d..9e6b7c7530 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_GENAPIC_H
-#define _ASM_GENAPIC_H 1
+#ifndef ASM__X86__GENAPIC_H
+#define ASM__X86__GENAPIC_H 1
 
 #include <xen/cpumask.h>
 
diff --git a/xen/arch/x86/include/asm/grant_table.h b/xen/arch/x86/include/asm/grant_table.h
index 5c23cec90c..67a4f84cbb 100644
--- a/xen/arch/x86/include/asm/grant_table.h
+++ b/xen/arch/x86/include/asm/grant_table.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004-2005 K A Fraser
  */
 
-#ifndef __ASM_GRANT_TABLE_H__
-#define __ASM_GRANT_TABLE_H__
+#ifndef ASM__X86__GRANT_TABLE_H
+#define ASM__X86__GRANT_TABLE_H
 
 #include <asm/paging.h>
 
@@ -72,4 +72,4 @@ static inline void gnttab_clear_flags(struct domain *d,
 #define gnttab_need_iommu_mapping(d)                \
     (!paging_mode_translate(d) && need_iommu_pt_sync(d))
 
-#endif /* __ASM_GRANT_TABLE_H__ */
+#endif /* ASM__X86__GRANT_TABLE_H */
diff --git a/xen/arch/x86/include/asm/guest.h b/xen/arch/x86/include/asm/guest.h
index c3124c7b8d..826000261c 100644
--- a/xen/arch/x86/include/asm/guest.h
+++ b/xen/arch/x86/include/asm/guest.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_GUEST_H__
-#define __X86_GUEST_H__
+#ifndef ASM__X86__GUEST_H
+#define ASM__X86__GUEST_H
 
 #include <asm/guest/hyperv.h>
 #include <asm/guest/hypervisor.h>
@@ -15,7 +15,7 @@
 #include <asm/guest/xen-hcall.h>
 #include <asm/pv/shim.h>
 
-#endif /* __X86_GUEST_H__ */
+#endif /* ASM__X86__GUEST_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hyperv-hcall.h b/xen/arch/x86/include/asm/guest/hyperv-hcall.h
index b76dbf9ccc..2fdf6d5143 100644
--- a/xen/arch/x86/include/asm/guest/hyperv-hcall.h
+++ b/xen/arch/x86/include/asm/guest/hyperv-hcall.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_HYPERV_HCALL_H__
-#define __X86_HYPERV_HCALL_H__
+#ifndef ASM__X86__GUEST__HYPERV_HCALL_H
+#define ASM__X86__GUEST__HYPERV_HCALL_H
 
 #include <xen/lib.h>
 #include <xen/page-size.h>
@@ -73,7 +73,7 @@ static inline uint64_t hv_do_rep_hypercall(uint16_t code, uint16_t rep_count,
     return status;
 }
 
-#endif /* __X86_HYPERV_HCALL_H__ */
+#endif /* ASM__X86__GUEST__HYPERV_HCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
index a6915ad731..ba7ca0e450 100644
--- a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
+++ b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
@@ -6,8 +6,8 @@
  * https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs
  */
 
-#ifndef _ASM_X86_HYPERV_TLFS_H
-#define _ASM_X86_HYPERV_TLFS_H
+#ifndef ASM__X86__GUEST__HYPERV_TLFS_H
+#define ASM__X86__GUEST__HYPERV_TLFS_H
 
 #include <xen/bitops.h>
 #include <xen/page-size.h>
diff --git a/xen/arch/x86/include/asm/guest/hyperv.h b/xen/arch/x86/include/asm/guest/hyperv.h
index c05efdce71..fe0c2c485c 100644
--- a/xen/arch/x86/include/asm/guest/hyperv.h
+++ b/xen/arch/x86/include/asm/guest/hyperv.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_GUEST_HYPERV_H__
-#define __X86_GUEST_HYPERV_H__
+#ifndef ASM__X86__GUEST__HYPERV_H
+#define ASM__X86__GUEST__HYPERV_H
 
 #include <xen/types.h>
 
@@ -62,7 +62,7 @@ const struct hypervisor_ops *hyperv_probe(void);
 static inline const struct hypervisor_ops *hyperv_probe(void) { return NULL; }
 
 #endif /* CONFIG_HYPERV_GUEST */
-#endif /* __X86_GUEST_HYPERV_H__ */
+#endif /* ASM__X86__GUEST__HYPERV_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hypervisor.h b/xen/arch/x86/include/asm/guest/hypervisor.h
index c8f18a035e..5ab900e14c 100644
--- a/xen/arch/x86/include/asm/guest/hypervisor.h
+++ b/xen/arch/x86/include/asm/guest/hypervisor.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_HYPERVISOR_H__
-#define __X86_HYPERVISOR_H__
+#ifndef ASM__X86__GUEST__HYPERVISOR_H
+#define ASM__X86__GUEST__HYPERVISOR_H
 
 #include <xen/cpumask.h>
 
@@ -61,7 +61,7 @@ static inline int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
 
 #endif  /* CONFIG_GUEST */
 
-#endif /* __X86_HYPERVISOR_H__ */
+#endif /* ASM__X86__GUEST__HYPERVISOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/pvh-boot.h b/xen/arch/x86/include/asm/guest/pvh-boot.h
index 247ba6899e..77f1fb7190 100644
--- a/xen/arch/x86/include/asm/guest/pvh-boot.h
+++ b/xen/arch/x86/include/asm/guest/pvh-boot.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_PVH_BOOT_H__
-#define __X86_PVH_BOOT_H__
+#ifndef ASM__X86__GUEST__PVH_BOOT_H
+#define ASM__X86__GUEST__PVH_BOOT_H
 
 #include <xen/multiboot.h>
 
@@ -34,7 +34,7 @@ static inline void pvh_print_info(void)
 }
 
 #endif /* CONFIG_PVH_GUEST */
-#endif /* __X86_PVH_BOOT_H__ */
+#endif /* ASM__X86__GUEST__PVH_BOOT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/xen-hcall.h b/xen/arch/x86/include/asm/guest/xen-hcall.h
index 665b472d05..c078ade2a7 100644
--- a/xen/arch/x86/include/asm/guest/xen-hcall.h
+++ b/xen/arch/x86/include/asm/guest/xen-hcall.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_XEN_HYPERCALL_H__
-#define __X86_XEN_HYPERCALL_H__
+#ifndef ASM__X86__GUEST__XEN_HCALL_H
+#define ASM__X86__GUEST__XEN_HCALL_H
 
 #ifdef CONFIG_XEN_GUEST
 
@@ -188,7 +188,7 @@ static inline long xen_hypercall_shutdown(unsigned int reason)
 }
 
 #endif /* CONFIG_XEN_GUEST */
-#endif /* __X86_XEN_HYPERCALL_H__ */
+#endif /* ASM__X86__GUEST__XEN_HCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/xen.h b/xen/arch/x86/include/asm/guest/xen.h
index c330c4d400..1e46fbf0d3 100644
--- a/xen/arch/x86/include/asm/guest/xen.h
+++ b/xen/arch/x86/include/asm/guest/xen.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_GUEST_XEN_H__
-#define __X86_GUEST_XEN_H__
+#ifndef ASM__X86__GUEST__XEN_H
+#define ASM__X86__GUEST__XEN_H
 
 #include <xen/types.h>
 
@@ -37,7 +37,7 @@ DECLARE_PER_CPU(struct vcpu_info *, vcpu_info);
 static inline const struct hypervisor_ops *xg_probe(void) { return NULL; }
 
 #endif /* CONFIG_XEN_GUEST */
-#endif /* __X86_GUEST_XEN_H__ */
+#endif /* ASM__X86__GUEST__XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest_access.h b/xen/arch/x86/include/asm/guest_access.h
index 69716c8b41..e42d2c59ba 100644
--- a/xen/arch/x86/include/asm/guest_access.h
+++ b/xen/arch/x86/include/asm/guest_access.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2006, K A Fraser
  */
 
-#ifndef __ASM_X86_GUEST_ACCESS_H__
-#define __ASM_X86_GUEST_ACCESS_H__
+#ifndef ASM__X86__GUEST_ACCESS_H
+#define ASM__X86__GUEST_ACCESS_H
 
 #include <asm/uaccess.h>
 #include <asm/paging.h>
@@ -47,7 +47,7 @@
                      (last)-(first)+1,                  \
                      sizeof(*(hnd).p)))
 
-#endif /* __ASM_X86_GUEST_ACCESS_H__ */
+#endif /* ASM__X86__GUEST_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest_atomics.h b/xen/arch/x86/include/asm/guest_atomics.h
index c2dec0d650..99f861fc39 100644
--- a/xen/arch/x86/include/asm/guest_atomics.h
+++ b/xen/arch/x86/include/asm/guest_atomics.h
@@ -1,5 +1,5 @@
-#ifndef _X86_GUEST_ATOMICS_H
-#define _X86_GUEST_ATOMICS_H
+#ifndef ASM__X86__GUEST_ATOMICS_H
+#define ASM__X86__GUEST_ATOMICS_H
 
 #include <xen/bitops.h>
 
@@ -22,7 +22,7 @@
 #define guest_cmpxchg(d, ptr, o, n) ((void)(d), cmpxchg(ptr, o, n))
 #define guest_cmpxchg64 guest_cmpxchg
 
-#endif /* _X86_GUEST_ATOMICS_H */
+#endif /* ASM__X86__GUEST_ATOMICS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/guest_pt.h b/xen/arch/x86/include/asm/guest_pt.h
index 21473f9bbc..943504dc76 100644
--- a/xen/arch/x86/include/asm/guest_pt.h
+++ b/xen/arch/x86/include/asm/guest_pt.h
@@ -13,8 +13,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_ASM_GUEST_PT_H
-#define _XEN_ASM_GUEST_PT_H
+#ifndef ASM__X86__GUEST_PT_H
+#define ASM__X86__GUEST_PT_H
 
 #if !defined(GUEST_PAGING_LEVELS)
 #error GUEST_PAGING_LEVELS not defined
@@ -452,4 +452,4 @@ static inline void print_gw(const walk_t *gw)
         );
 }
 
-#endif /* _XEN_ASM_GUEST_PT_H */
+#endif /* ASM__X86__GUEST_PT_H */
diff --git a/xen/arch/x86/include/asm/hap.h b/xen/arch/x86/include/asm/hap.h
index f01ce73fb4..cf1a7584f3 100644
--- a/xen/arch/x86/include/asm/hap.h
+++ b/xen/arch/x86/include/asm/hap.h
@@ -10,8 +10,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_HAP_H
-#define _XEN_HAP_H
+#ifndef ASM__X86__HAP_H
+#define ASM__X86__HAP_H
 
 #define HAP_PRINTK(_f, _a...)                                         \
     debugtrace_printk("hap: %s(): " _f, __func__, ##_a)
diff --git a/xen/arch/x86/include/asm/hardirq.h b/xen/arch/x86/include/asm/hardirq.h
index 342361cb6f..9385d220fc 100644
--- a/xen/arch/x86/include/asm/hardirq.h
+++ b/xen/arch/x86/include/asm/hardirq.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
+#ifndef ASM__X86__HARDIRQ_H
+#define ASM__X86__HARDIRQ_H
 
 #include <xen/cache.h>
 #include <xen/types.h>
@@ -34,4 +34,4 @@ void ack_bad_irq(unsigned int irq);
 extern void apic_intr_init(void);
 extern void smp_intr_init(void);
 
-#endif /* __ASM_HARDIRQ_H */
+#endif /* ASM__X86__HARDIRQ_H */
diff --git a/xen/arch/x86/include/asm/hpet.h b/xen/arch/x86/include/asm/hpet.h
index c402c63168..66c5867b96 100644
--- a/xen/arch/x86/include/asm/hpet.h
+++ b/xen/arch/x86/include/asm/hpet.h
@@ -1,5 +1,5 @@
-#ifndef __X86_HPET_H__
-#define __X86_HPET_H__
+#ifndef ASM__X86__HPET_H
+#define ASM__X86__HPET_H
 
 /*
  * Documentation on HPET can be found at:
@@ -98,4 +98,4 @@ void hpet_disable_legacy_broadcast(void);
 
 extern void (*pv_rtc_handler)(uint8_t reg, uint8_t value);
 
-#endif /* __X86_HPET_H__ */
+#endif /* ASM__X86__HPET_H */
diff --git a/xen/arch/x86/include/asm/hvm/asid.h b/xen/arch/x86/include/asm/hvm/asid.h
index 17c58353d1..dff25733ed 100644
--- a/xen/arch/x86/include/asm/hvm/asid.h
+++ b/xen/arch/x86/include/asm/hvm/asid.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2009, Citrix Systems, Inc.
  */
 
-#ifndef __ASM_X86_HVM_ASID_H__
-#define __ASM_X86_HVM_ASID_H__
+#ifndef ASM__X86__HVM__ASID_H
+#define ASM__X86__HVM__ASID_H
 
 
 struct vcpu;
@@ -28,7 +28,7 @@ void hvm_asid_flush_core(void);
  * boolean indicating whether all ASIDs must be flushed. */
 bool hvm_asid_handle_vmenter(struct hvm_vcpu_asid *asid);
 
-#endif /* __ASM_X86_HVM_ASID_H__ */
+#endif /* ASM__X86__HVM__ASID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/cacheattr.h b/xen/arch/x86/include/asm/hvm/cacheattr.h
index 79e721d074..fe7bb8d54f 100644
--- a/xen/arch/x86/include/asm/hvm/cacheattr.h
+++ b/xen/arch/x86/include/asm/hvm/cacheattr.h
@@ -1,5 +1,5 @@
-#ifndef __HVM_CACHEATTR_H__
-#define __HVM_CACHEATTR_H__
+#ifndef ASM__X86__HVM__CACHEATTR_H
+#define ASM__X86__HVM__CACHEATTR_H
 
 #include <xen/mm.h>
 
@@ -20,4 +20,4 @@ int hvm_get_mem_pinned_cacheattr(struct domain *d, gfn_t gfn,
 int hvm_set_mem_pinned_cacheattr(struct domain *d, uint64_t gfn_start,
                                  uint64_t gfn_end, uint32_t type);
 
-#endif /* __HVM_CACHEATTR_H__ */
+#endif /* ASM__X86__HVM__CACHEATTR_H */
diff --git a/xen/arch/x86/include/asm/hvm/domain.h b/xen/arch/x86/include/asm/hvm/domain.h
index 333501d5f2..9d4137c43a 100644
--- a/xen/arch/x86/include/asm/hvm/domain.h
+++ b/xen/arch/x86/include/asm/hvm/domain.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation
  */
 
-#ifndef __ASM_X86_HVM_DOMAIN_H__
-#define __ASM_X86_HVM_DOMAIN_H__
+#ifndef ASM__X86__HVM__DOMAIN_H
+#define ASM__X86__HVM__DOMAIN_H
 
 #include <xen/list.h>
 #include <xen/mm.h>
@@ -151,7 +151,7 @@ struct hvm_domain {
 #endif
 };
 
-#endif /* __ASM_X86_HVM_DOMAIN_H__ */
+#endif /* ASM__X86__HVM__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/emulate.h b/xen/arch/x86/include/asm/hvm/emulate.h
index 29d679442e..9e382803ef 100644
--- a/xen/arch/x86/include/asm/hvm/emulate.h
+++ b/xen/arch/x86/include/asm/hvm/emulate.h
@@ -9,8 +9,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __ASM_X86_HVM_EMULATE_H__
-#define __ASM_X86_HVM_EMULATE_H__
+#ifndef ASM__X86__HVM__EMULATE_H
+#define ASM__X86__HVM__EMULATE_H
 
 #include <xen/err.h>
 #include <xen/mm.h>
@@ -143,7 +143,7 @@ static inline void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
 void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
                               struct hvm_emulate_ctxt *hvmemul_ctxt, int rc);
 
-#endif /* __ASM_X86_HVM_EMULATE_H__ */
+#endif /* ASM__X86__HVM__EMULATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/grant_table.h b/xen/arch/x86/include/asm/hvm/grant_table.h
index 01e23f79b8..ec6c6251d3 100644
--- a/xen/arch/x86/include/asm/hvm/grant_table.h
+++ b/xen/arch/x86/include/asm/hvm/grant_table.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_HVM_GRANT_TABLE_H__
-#define __X86_HVM_GRANT_TABLE_H__
+#ifndef ASM__X86__HVM__GRANT_TABLE_H
+#define ASM__X86__HVM__GRANT_TABLE_H
 
 #include <xen/mm-frame.h>
 
@@ -39,7 +39,7 @@ static inline int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
 
 #endif
 
-#endif /* __X86_HVM_GRANT_TABLE_H__ */
+#endif /* ASM__X86__HVM__GRANT_TABLE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/guest_access.h b/xen/arch/x86/include/asm/hvm/guest_access.h
index edacba75db..007d1ff70b 100644
--- a/xen/arch/x86/include/asm/hvm/guest_access.h
+++ b/xen/arch/x86/include/asm/hvm/guest_access.h
@@ -1,8 +1,8 @@
-#ifndef __ASM_X86_HVM_GUEST_ACCESS_H__
-#define __ASM_X86_HVM_GUEST_ACCESS_H__
+#ifndef ASM__X86__HVM__GUEST_ACCESS_H
+#define ASM__X86__HVM__GUEST_ACCESS_H
 
 unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len);
 unsigned int clear_user_hvm(void *to, unsigned int len);
 unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len);
 
-#endif /* __ASM_X86_HVM_GUEST_ACCESS_H__ */
+#endif /* ASM__X86__HVM__GUEST_ACCESS_H */
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index dd7d4872b5..1a320fe5c8 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_HVM_H__
-#define __ASM_X86_HVM_HVM_H__
+#ifndef ASM__X86__HVM__HVM_H
+#define ASM__X86__HVM__HVM_H
 
 #include <xen/mm.h>
 
@@ -967,7 +967,7 @@ static inline void hvm_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 
 #endif  /* CONFIG_HVM */
 
-#endif /* __ASM_X86_HVM_HVM_H__ */
+#endif /* ASM__X86__HVM__HVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h
index f2b8431fac..f7e4550f0a 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __ASM_X86_HVM_IO_H__
-#define __ASM_X86_HVM_IO_H__
+#ifndef ASM__X86__HVM__IO_H
+#define ASM__X86__HVM__IO_H
 
 #include <xen/pci.h>
 #include <public/hvm/ioreq.h>
@@ -135,7 +135,7 @@ void destroy_vpci_mmcfg(struct domain *d);
 /* Remove MMCFG regions from a given rangeset. */
 int vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r);
 
-#endif /* __ASM_X86_HVM_IO_H__ */
+#endif /* ASM__X86__HVM__IO_H */
 
 
 /*
diff --git a/xen/arch/x86/include/asm/hvm/ioreq.h b/xen/arch/x86/include/asm/hvm/ioreq.h
index 84be14fd08..2e7254d640 100644
--- a/xen/arch/x86/include/asm/hvm/ioreq.h
+++ b/xen/arch/x86/include/asm/hvm/ioreq.h
@@ -5,15 +5,15 @@
  * Copyright (c) 2016 Citrix Systems Inc.
  */
 
-#ifndef __ASM_X86_HVM_IOREQ_H__
-#define __ASM_X86_HVM_IOREQ_H__
+#ifndef ASM__X86__HVM__IOREQ_H
+#define ASM__X86__HVM__IOREQ_H
 
 /* This correlation must not be altered */
 #define IOREQ_STATUS_HANDLED     X86EMUL_OKAY
 #define IOREQ_STATUS_UNHANDLED   X86EMUL_UNHANDLEABLE
 #define IOREQ_STATUS_RETRY       X86EMUL_RETRY
 
-#endif /* __ASM_X86_HVM_IOREQ_H__ */
+#endif /* ASM__X86__HVM__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/irq.h b/xen/arch/x86/include/asm/hvm/irq.h
index 87e89993a4..41ae7eef8d 100644
--- a/xen/arch/x86/include/asm/hvm/irq.h
+++ b/xen/arch/x86/include/asm/hvm/irq.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, K A Fraser, XenSource Inc.
  */
 
-#ifndef __ASM_X86_HVM_IRQ_H__
-#define __ASM_X86_HVM_IRQ_H__
+#ifndef ASM__X86__HVM__IRQ_H
+#define ASM__X86__HVM__IRQ_H
 
 #include <xen/timer.h>
 
@@ -213,4 +213,4 @@ void hvm_set_callback_via(struct domain *d, uint64_t via);
 struct pirq;
 bool hvm_domain_use_pirq(const struct domain *d, const struct pirq *pirq);
 
-#endif /* __ASM_X86_HVM_IRQ_H__ */
+#endif /* ASM__X86__HVM__IRQ_H */
diff --git a/xen/arch/x86/include/asm/hvm/nestedhvm.h b/xen/arch/x86/include/asm/hvm/nestedhvm.h
index ea2c1bc328..323d749a73 100644
--- a/xen/arch/x86/include/asm/hvm/nestedhvm.h
+++ b/xen/arch/x86/include/asm/hvm/nestedhvm.h
@@ -5,8 +5,8 @@
  * Author: Christoph Egger <Christoph.Egger@amd.com>
  */
 
-#ifndef _HVM_NESTEDHVM_H
-#define _HVM_NESTEDHVM_H
+#ifndef ASM__X86__HVM__NESTEDHVM_H
+#define ASM__X86__HVM__NESTEDHVM_H
 
 #include <xen/types.h>         /* for uintNN_t */
 #include <xen/sched.h>         /* for struct vcpu, struct domain */
@@ -86,4 +86,4 @@ static inline bool vvmcx_valid(const struct vcpu *v)
 void start_nested_svm(struct hvm_function_table *hvm_function_table);
 void start_nested_vmx(struct hvm_function_table *hvm_function_table);
 
-#endif /* _HVM_NESTEDHVM_H */
+#endif /* ASM__X86__HVM__NESTEDHVM_H */
diff --git a/xen/arch/x86/include/asm/hvm/save.h b/xen/arch/x86/include/asm/hvm/save.h
index ec8de02931..fc1e81fd28 100644
--- a/xen/arch/x86/include/asm/hvm/save.h
+++ b/xen/arch/x86/include/asm/hvm/save.h
@@ -3,8 +3,8 @@
  * save.h: HVM support routines for save/restore
  */
 
-#ifndef __XEN_HVM_SAVE_H__
-#define __XEN_HVM_SAVE_H__
+#ifndef ASM__X86__HVM__SAVE_H
+#define ASM__X86__HVM__SAVE_H
 
 #include <xen/types.h>
 #include <xen/init.h>
@@ -146,4 +146,4 @@ 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, bool real, hvm_domain_context_t *h);
 
-#endif /* __XEN_HVM_SAVE_H__ */
+#endif /* ASM__X86__HVM__SAVE_H */
diff --git a/xen/arch/x86/include/asm/hvm/support.h b/xen/arch/x86/include/asm/hvm/support.h
index 2a7ba36af0..f2d77b9268 100644
--- a/xen/arch/x86/include/asm/hvm/support.h
+++ b/xen/arch/x86/include/asm/hvm/support.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_SUPPORT_H__
-#define __ASM_X86_HVM_SUPPORT_H__
+#ifndef ASM__X86__HVM__SUPPORT_H
+#define ASM__X86__HVM__SUPPORT_H
 
 #include <xen/types.h>
 #include <xen/sched.h>
@@ -146,7 +146,7 @@ int __must_check hvm_msr_read_intercept(
 int __must_check hvm_msr_write_intercept(
     unsigned int msr, uint64_t msr_content, bool may_defer);
 
-#endif /* __ASM_X86_HVM_SUPPORT_H__ */
+#endif /* ASM__X86__HVM__SUPPORT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h b/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
index 205989e800..6c9f29f06c 100644
--- a/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
+++ b/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2011, Advanced Micro Devices, Inc
  *
  */
-#ifndef __ASM_X86_HVM_SVM_NESTEDSVM_H__
-#define __ASM_X86_HVM_SVM_NESTEDSVM_H__
+#ifndef ASM__X86__HVM__SVM__NESTEDSVM_H
+#define ASM__X86__HVM__SVM__NESTEDSVM_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/svm/svm.h b/xen/arch/x86/include/asm/hvm/svm/svm.h
index 4eeeb25da9..f35126cc40 100644
--- a/xen/arch/x86/include/asm/hvm/svm/svm.h
+++ b/xen/arch/x86/include/asm/hvm/svm/svm.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_SVM_H__
-#define __ASM_X86_HVM_SVM_H__
+#ifndef ASM__X86__HVM__SVM__SVM_H
+#define ASM__X86__HVM__SVM__SVM_H
 
 /*
  * PV context switch helpers.  Prefetching the VMCB area itself has been shown
@@ -57,4 +57,4 @@ static inline bool cpu_has_svm_feature(unsigned int feat)
 #define cpu_has_svm_sss       cpu_has_svm_feature(SVM_FEATURE_SSS)
 #define cpu_has_svm_spec_ctrl cpu_has_svm_feature(SVM_FEATURE_SPEC_CTRL)
 
-#endif /* __ASM_X86_HVM_SVM_H__ */
+#endif /* ASM__X86__HVM__SVM__SVM_H */
diff --git a/xen/arch/x86/include/asm/hvm/svm/svmdebug.h b/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
index 2fb76ec24c..4db4203f6a 100644
--- a/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
+++ b/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
@@ -5,8 +5,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_SVM_SVMDEBUG_H__
-#define __ASM_X86_HVM_SVM_SVMDEBUG_H__
+#ifndef ASM__X86__HVM__SVM__SVMDEBUG_H
+#define ASM__X86__HVM__SVM__SVMDEBUG_H
 
 #include <xen/types.h>
 #include <asm/hvm/svm/vmcb.h>
@@ -16,4 +16,4 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb);
 bool svm_vmcb_isvalid(const char *from, const struct vmcb_struct *vmcb,
                       const struct vcpu *v, bool verbose);
 
-#endif /* __ASM_X86_HVM_SVM_SVMDEBUG_H__ */
+#endif /* ASM__X86__HVM__SVM__SVMDEBUG_H */
diff --git a/xen/arch/x86/include/asm/hvm/svm/vmcb.h b/xen/arch/x86/include/asm/hvm/svm/vmcb.h
index 28f715e376..ed937480ae 100644
--- a/xen/arch/x86/include/asm/hvm/svm/vmcb.h
+++ b/xen/arch/x86/include/asm/hvm/svm/vmcb.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_SVM_VMCB_H__
-#define __ASM_X86_HVM_SVM_VMCB_H__
+#ifndef ASM__X86__HVM__SVM__VMCB_H
+#define ASM__X86__HVM__SVM__VMCB_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm/hvm/vcpu.h
index 64c7a6fede..866516aae9 100644
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_VCPU_H__
-#define __ASM_X86_HVM_VCPU_H__
+#ifndef ASM__X86__HVM__VCPU_H
+#define ASM__X86__HVM__VCPU_H
 
 #include <xen/tasklet.h>
 #include <asm/hvm/vlapic.h>
@@ -186,7 +186,7 @@ struct hvm_vcpu {
     struct viridian_vcpu *viridian;
 };
 
-#endif /* __ASM_X86_HVM_VCPU_H__ */
+#endif /* ASM__X86__HVM__VCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vioapic.h b/xen/arch/x86/include/asm/hvm/vioapic.h
index 68af6dce79..5020bb9d2f 100644
--- a/xen/arch/x86/include/asm/hvm/vioapic.h
+++ b/xen/arch/x86/include/asm/hvm/vioapic.h
@@ -21,8 +21,8 @@
  *  License along with this library; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_X86_HVM_VIOAPIC_H__
-#define __ASM_X86_HVM_VIOAPIC_H__
+#ifndef ASM__X86__HVM__VIOAPIC_H
+#define ASM__X86__HVM__VIOAPIC_H
 
 #include <xen/types.h>
 #include <public/hvm/save.h>
@@ -69,4 +69,4 @@ int vioapic_get_mask(const struct domain *d, unsigned int gsi);
 int cf_check vioapic_get_vector(const struct domain *d, unsigned int gsi);
 int vioapic_get_trigger_mode(const struct domain *d, unsigned int gsi);
 
-#endif /* __ASM_X86_HVM_VIOAPIC_H__ */
+#endif /* ASM__X86__HVM__VIOAPIC_H */
diff --git a/xen/arch/x86/include/asm/hvm/viridian.h b/xen/arch/x86/include/asm/hvm/viridian.h
index 4c8ff6e80b..07854a95de 100644
--- a/xen/arch/x86/include/asm/hvm/viridian.h
+++ b/xen/arch/x86/include/asm/hvm/viridian.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_VIRIDIAN_H__
-#define __ASM_X86_HVM_VIRIDIAN_H__
+#ifndef ASM__X86__HVM__VIRIDIAN_H
+#define ASM__X86__HVM__VIRIDIAN_H
 
 #include <asm/guest/hyperv-tlfs.h>
 
@@ -99,7 +99,7 @@ void viridian_synic_poll(struct vcpu *v);
 bool viridian_synic_is_auto_eoi_sint(const struct vcpu *v,
                                      unsigned int vector);
 
-#endif /* __ASM_X86_HVM_VIRIDIAN_H__ */
+#endif /* ASM__X86__HVM__VIRIDIAN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vlapic.h b/xen/arch/x86/include/asm/hvm/vlapic.h
index 2c4ff94ae7..3e729cd146 100644
--- a/xen/arch/x86/include/asm/hvm/vlapic.h
+++ b/xen/arch/x86/include/asm/hvm/vlapic.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2006 Keir Fraser, XenSource Inc.
  */
 
-#ifndef __ASM_X86_HVM_VLAPIC_H__
-#define __ASM_X86_HVM_VLAPIC_H__
+#ifndef ASM__X86__HVM__VLAPIC_H
+#define ASM__X86__HVM__VLAPIC_H
 
 #include <xen/tasklet.h>
 #include <asm/hvm/vpt.h>
@@ -137,4 +137,4 @@ bool vlapic_match_dest(
     const struct vlapic *target, const struct vlapic *source,
     int short_hand, uint32_t dest, bool dest_mode);
 
-#endif /* __ASM_X86_HVM_VLAPIC_H__ */
+#endif /* ASM__X86__HVM__VLAPIC_H */
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
index 939b87eb50..d96007838e 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_VMX_VMCS_H__
-#define __ASM_X86_HVM_VMX_VMCS_H__
+#ifndef ASM__X86__HVM__VMX__VMCS_H
+#define ASM__X86__HVM__VMX__VMCS_H
 
 #include <xen/mm.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
index f0ec459622..d8e23d313b 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_VMX_VMX_H__
-#define __ASM_X86_HVM_VMX_VMX_H__
+#ifndef ASM__X86__HVM__VMX__VMX_H
+#define ASM__X86__HVM__VMX__VMX_H
 
 #include <xen/sched.h>
 #include <xen/types.h>
@@ -676,4 +676,4 @@ typedef union ldt_or_tr_instr_info {
     };
 } ldt_or_tr_instr_info_t;
 
-#endif /* __ASM_X86_HVM_VMX_VMX_H__ */
+#endif /* ASM__X86__HVM__VMX__VMX_H */
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vvmx.h b/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
index da10d3fa96..551390e245 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
@@ -8,8 +8,8 @@
  *         Eddie Dong <eddie.dong@intel.com>
  *
  */
-#ifndef __ASM_X86_HVM_VVMX_H__
-#define __ASM_X86_HVM_VVMX_H__
+#ifndef ASM__X86__HVM__VMX__VVMX_H
+#define ASM__X86__HVM__VMX__VVMX_H
 
 struct vvmcs_list {
     unsigned long vvmcs_mfn;
@@ -199,5 +199,5 @@ int nept_translate_l2ga(struct vcpu *v, paddr_t l2ga,
                         uint64_t *exit_qual, uint32_t *exit_reason);
 int nvmx_cpu_up_prepare(unsigned int cpu);
 void nvmx_cpu_dead(unsigned int cpu);
-#endif /* __ASM_X86_HVM_VVMX_H__ */
+#endif /* ASM__X86__HVM__VMX__VVMX_H */
 
diff --git a/xen/arch/x86/include/asm/hvm/vpic.h b/xen/arch/x86/include/asm/hvm/vpic.h
index d71b270193..6dfbd3ef9e 100644
--- a/xen/arch/x86/include/asm/hvm/vpic.h
+++ b/xen/arch/x86/include/asm/hvm/vpic.h
@@ -24,8 +24,8 @@
  * IN THE SOFTWARE.
  */
 
-#ifndef __ASM_X86_HVM_VPIC_H__
-#define __ASM_X86_HVM_VPIC_H__
+#ifndef ASM__X86__HVM__VPIC_H
+#define ASM__X86__HVM__VPIC_H
 
 struct domain;
 struct vcpu;
@@ -37,4 +37,4 @@ void vpic_reset(struct domain *d);
 int vpic_ack_pending_irq(struct vcpu *v);
 int is_periodic_irq(struct vcpu *v, int irq, int type);
 
-#endif  /* __ASM_X86_HVM_VPIC_H__ */  
+#endif  /* ASM__X86__HVM__VPIC_H */  
diff --git a/xen/arch/x86/include/asm/hvm/vpt.h b/xen/arch/x86/include/asm/hvm/vpt.h
index 0b92b28625..61abea565f 100644
--- a/xen/arch/x86/include/asm/hvm/vpt.h
+++ b/xen/arch/x86/include/asm/hvm/vpt.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __ASM_X86_HVM_VPT_H__
-#define __ASM_X86_HVM_VPT_H__
+#ifndef ASM__X86__HVM__VPT_H
+#define ASM__X86__HVM__VPT_H
 
 #include <xen/timer.h>
 #include <xen/list.h>
@@ -196,4 +196,4 @@ void hpet_init(struct domain *d);
 void hpet_deinit(struct domain *d);
 void hpet_reset(struct domain *d);
 
-#endif /* __ASM_X86_HVM_VPT_H__ */
+#endif /* ASM__X86__HVM__VPT_H */
diff --git a/xen/arch/x86/include/asm/hypercall.h b/xen/arch/x86/include/asm/hypercall.h
index e71b48d860..7ff9609589 100644
--- a/xen/arch/x86/include/asm/hypercall.h
+++ b/xen/arch/x86/include/asm/hypercall.h
@@ -7,8 +7,8 @@
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_X86_HYPERCALL_H__
-#define __ASM_X86_HYPERCALL_H__
+#ifndef ASM__X86__HYPERCALL_H
+#define ASM__X86__HYPERCALL_H
 
 #include <xen/types.h>
 #include <public/physdev.h>
@@ -81,4 +81,4 @@ static inline void clobber_regs32(struct cpu_user_regs *regs,
     clobber_regs ## b(r, array_access_nospec(t ## b, n)); \
 })
 
-#endif /* __ASM_X86_HYPERCALL_H__ */
+#endif /* ASM__X86__HYPERCALL_H */
diff --git a/xen/arch/x86/include/asm/i387.h b/xen/arch/x86/include/asm/i387.h
index a783549db9..452b0e4135 100644
--- a/xen/arch/x86/include/asm/i387.h
+++ b/xen/arch/x86/include/asm/i387.h
@@ -8,8 +8,8 @@
  *	Gareth Hughes <gareth@valinux.com>, May 2000
  */
 
-#ifndef __ASM_I386_I387_H
-#define __ASM_I386_I387_H
+#ifndef ASM__X86__I387_H
+#define ASM__X86__I387_H
 
 #include <xen/types.h>
 
@@ -37,4 +37,4 @@ struct xsave_struct;
 void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
                     const void *data, unsigned int fcw_default);
 void vcpu_destroy_fpu(struct vcpu *v);
-#endif /* __ASM_I386_I387_H */
+#endif /* ASM__X86__I387_H */
diff --git a/xen/arch/x86/include/asm/intel-family.h b/xen/arch/x86/include/asm/intel-family.h
index d44dd3f69f..d53d860753 100644
--- a/xen/arch/x86/include/asm/intel-family.h
+++ b/xen/arch/x86/include/asm/intel-family.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _ASM_X86_INTEL_FAMILY_H
-#define _ASM_X86_INTEL_FAMILY_H
+#ifndef ASM__X86__INTEL_FAMILY_H
+#define ASM__X86__INTEL_FAMILY_H
 
 /*
  * "Big Core" Processors (Branded as Core, Xeon, etc...)
@@ -167,4 +167,4 @@
 /* Family 5 */
 #define INTEL_FAM5_QUARK_X1000		0x09 /* Quark X1000 SoC */
 
-#endif /* _ASM_X86_INTEL_FAMILY_H */
+#endif /* ASM__X86__INTEL_FAMILY_H */
diff --git a/xen/arch/x86/include/asm/invpcid.h b/xen/arch/x86/include/asm/invpcid.h
index bf5c30313a..670d69bae8 100644
--- a/xen/arch/x86/include/asm/invpcid.h
+++ b/xen/arch/x86/include/asm/invpcid.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_INVPCID_H_
-#define _ASM_X86_INVPCID_H_
+#ifndef ASM__X86__INVPCID_H
+#define ASM__X86__INVPCID_H
 
 #include <xen/types.h>
 
@@ -54,7 +54,7 @@ static inline void invpcid_flush_all_nonglobals(void)
     invpcid(0, 0, X86_INVPCID_ALL_NON_GLOBAL);
 }
 
-#endif	/* _ASM_X86_INVPCID_H_ */
+#endif	/* ASM__X86__INVPCID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/io.h b/xen/arch/x86/include/asm/io.h
index 1cb4217cff..f2f9bb3247 100644
--- a/xen/arch/x86/include/asm/io.h
+++ b/xen/arch/x86/include/asm/io.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
+#ifndef ASM__X86__IO_H
+#define ASM__X86__IO_H
 
 #include <xen/vmap.h>
 #include <xen/types.h>
diff --git a/xen/arch/x86/include/asm/io_apic.h b/xen/arch/x86/include/asm/io_apic.h
index 62456806c7..4446e768c2 100644
--- a/xen/arch/x86/include/asm/io_apic.h
+++ b/xen/arch/x86/include/asm/io_apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_IO_APIC_H
-#define __ASM_IO_APIC_H
+#ifndef ASM__X86__IO_APIC_H
+#define ASM__X86__IO_APIC_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/iocap.h b/xen/arch/x86/include/asm/iocap.h
index 53d87ae8a3..15a0c42ccd 100644
--- a/xen/arch/x86/include/asm/iocap.h
+++ b/xen/arch/x86/include/asm/iocap.h
@@ -4,8 +4,8 @@
  * Architecture-specific per-domain I/O capabilities.
  */
 
-#ifndef __X86_IOCAP_H__
-#define __X86_IOCAP_H__
+#ifndef ASM__X86__IOCAP_H
+#define ASM__X86__IOCAP_H
 
 #include <xen/sched.h>
 #include <xen/rangeset.h>
@@ -44,4 +44,4 @@ static inline int ioports_deny_access(struct domain *d, unsigned long s,
     return ret;
 }
 
-#endif /* __X86_IOCAP_H__ */
+#endif /* ASM__X86__IOCAP_H */
diff --git a/xen/arch/x86/include/asm/iommu.h b/xen/arch/x86/include/asm/iommu.h
index 8dc464fbd3..6d7f876080 100644
--- a/xen/arch/x86/include/asm/iommu.h
+++ b/xen/arch/x86/include/asm/iommu.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARCH_X86_IOMMU_H__
-#define __ARCH_X86_IOMMU_H__
+#ifndef ASM__X86__IOMMU_H
+#define ASM__X86__IOMMU_H
 
 #include <xen/errno.h>
 #include <xen/list.h>
@@ -137,7 +137,7 @@ void iommu_queue_free_pgtable(struct domain_iommu *hd, struct page_info *pg);
 /* Check [start, end] unity map range for correctness. */
 bool iommu_unity_region_ok(const char *prefix, mfn_t start, mfn_t end);
 
-#endif /* !__ARCH_X86_IOMMU_H__ */
+#endif /* !ASM__X86__IOMMU_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/ioreq.h b/xen/arch/x86/include/asm/ioreq.h
index 5fe811eff5..065efcbe24 100644
--- a/xen/arch/x86/include/asm/ioreq.h
+++ b/xen/arch/x86/include/asm/ioreq.h
@@ -8,14 +8,14 @@
  * Copyright (c) 2016 Citrix Systems Inc.
  */
 
-#ifndef __ASM_X86_IOREQ_H__
-#define __ASM_X86_IOREQ_H__
+#ifndef ASM__X86__IOREQ_H
+#define ASM__X86__IOREQ_H
 
 #ifdef CONFIG_HVM
 #include <asm/hvm/ioreq.h>
 #endif
 
-#endif /* __ASM_X86_IOREQ_H__ */
+#endif /* ASM__X86__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/irq.h b/xen/arch/x86/include/asm/irq.h
index d3bc768068..86c2266578 100644
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
+#ifndef ASM__X86__IRQ_H
+#define ASM__X86__IRQ_H
 
 /* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar */
 
@@ -231,4 +231,4 @@ int allocate_and_map_gsi_pirq(struct domain *d, int index, int *pirq_p);
 int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
                               int type, struct msi_info *msi);
 
-#endif /* _ASM_HW_IRQ_H */
+#endif /* ASM__X86__IRQ_H */
diff --git a/xen/arch/x86/include/asm/ldt.h b/xen/arch/x86/include/asm/ldt.h
index 58e3e042fc..b77b53c1b8 100644
--- a/xen/arch/x86/include/asm/ldt.h
+++ b/xen/arch/x86/include/asm/ldt.h
@@ -1,6 +1,6 @@
 
-#ifndef __ARCH_LDT_H
-#define __ARCH_LDT_H
+#ifndef ASM__X86__LDT_H
+#define ASM__X86__LDT_H
 
 #ifndef __ASSEMBLY__
 
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..b1daf7fa69 100644
--- a/xen/arch/x86/include/asm/mach-default/bios_ebda.h
+++ b/xen/arch/x86/include/asm/mach-default/bios_ebda.h
@@ -1,5 +1,5 @@
-#ifndef _MACH_BIOS_EBDA_H
-#define _MACH_BIOS_EBDA_H
+#ifndef ASM__X86__MACH_DEFAULT__BIOS_EBDA_H
+#define ASM__X86__MACH_DEFAULT__BIOS_EBDA_H
 
 /*
  * there is a real-mode segmented pointer pointing to the
@@ -12,4 +12,4 @@ static inline unsigned int get_bios_ebda(void)
 	return address;	/* 0 means none */
 }
 
-#endif /* _MACH_BIOS_EBDA_H */
+#endif /* ASM__X86__MACH_DEFAULT__BIOS_EBDA_H */
diff --git a/xen/arch/x86/include/asm/mach-default/io_ports.h b/xen/arch/x86/include/asm/mach-default/io_ports.h
index a96d9f6604..d8daaade5c 100644
--- a/xen/arch/x86/include/asm/mach-default/io_ports.h
+++ b/xen/arch/x86/include/asm/mach-default/io_ports.h
@@ -4,8 +4,8 @@
  *  Machine specific IO port address definition for generic.
  *  Written by Osamu Tomita <tomita@cinet.co.jp>
  */
-#ifndef _MACH_IO_PORTS_H
-#define _MACH_IO_PORTS_H
+#ifndef ASM__X86__MACH_DEFAULT__IO_PORTS_H
+#define ASM__X86__MACH_DEFAULT__IO_PORTS_H
 
 /* i8253A PIT registers */
 #define PIT_MODE		0x43
@@ -27,4 +27,4 @@
 #define SLAVE_ICW4_DEFAULT	0x01
 #define PIC_ICW4_AEOI		2
 
-#endif /* !_MACH_IO_PORTS_H */
+#endif /* !ASM__X86__MACH_DEFAULT__IO_PORTS_H */
diff --git a/xen/arch/x86/include/asm/mach-default/irq_vectors.h b/xen/arch/x86/include/asm/mach-default/irq_vectors.h
index f546aedd87..52f7bec7c3 100644
--- a/xen/arch/x86/include/asm/mach-default/irq_vectors.h
+++ b/xen/arch/x86/include/asm/mach-default/irq_vectors.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IRQ_VECTORS_H
-#define _ASM_IRQ_VECTORS_H
+#ifndef ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H
+#define ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H
 
 /* Processor-initiated interrupts are all high priority. */
 #define SPURIOUS_APIC_VECTOR	0xff
@@ -43,4 +43,4 @@
 #define FIRST_IRQ_VECTOR        FIRST_DYNAMIC_VECTOR
 #define LAST_IRQ_VECTOR         LAST_HIPRIORITY_VECTOR
 
-#endif /* _ASM_IRQ_VECTORS_H */
+#endif /* ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H */
diff --git a/xen/arch/x86/include/asm/mach-default/mach_mpspec.h b/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
index 1a4e3f8c4f..3027533052 100644
--- a/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
+++ b/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACH_MPSPEC_H
-#define __ASM_MACH_MPSPEC_H
+#ifndef ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H
+#define ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H
 
 #define MAX_IRQ_SOURCES 256
 
@@ -7,4 +7,4 @@
 /* Maximum 256 PCI busses, plus 1 ISA bus in each of 4 cabinets. */
 #define MAX_MP_BUSSES 260
 
-#endif /* __ASM_MACH_MPSPEC_H */
+#endif /* ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H */
diff --git a/xen/arch/x86/include/asm/mach-generic/mach_apic.h b/xen/arch/x86/include/asm/mach-generic/mach_apic.h
index c0d8b232c9..ae8b2372d8 100644
--- a/xen/arch/x86/include/asm/mach-generic/mach_apic.h
+++ b/xen/arch/x86/include/asm/mach-generic/mach_apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACH_APIC_H
-#define __ASM_MACH_APIC_H
+#ifndef ASM__X86__MACH_GENERIC__MACH_APIC_H
+#define ASM__X86__MACH_GENERIC__MACH_APIC_H
 
 #include <asm/apic.h>
 #include <asm/io_apic.h>
@@ -74,4 +74,4 @@ static inline void set_apicid(int phys_apicid, physid_mask_t *map)
 	physid_set(phys_apicid, *map);
 }
 
-#endif /* __ASM_MACH_APIC_H */
+#endif /* ASM__X86__MACH_GENERIC__MACH_APIC_H */
diff --git a/xen/arch/x86/include/asm/machine_kexec.h b/xen/arch/x86/include/asm/machine_kexec.h
index d4880818c1..78072325b2 100644
--- a/xen/arch/x86/include/asm/machine_kexec.h
+++ b/xen/arch/x86/include/asm/machine_kexec.h
@@ -1,5 +1,5 @@
-#ifndef __X86_MACHINE_KEXEC_H__
-#define __X86_MACHINE_KEXEC_H__
+#ifndef ASM__X86__MACHINE_KEXEC_H
+#define ASM__X86__MACHINE_KEXEC_H
 
 #define KEXEC_RELOC_FLAG_COMPAT 0x1 /* 32-bit image */
 
@@ -13,4 +13,4 @@ extern const char kexec_reloc_end[];
 
 #endif
 
-#endif /* __X86_MACHINE_KEXEC_H__ */
+#endif /* ASM__X86__MACHINE_KEXEC_H */
diff --git a/xen/arch/x86/include/asm/mc146818rtc.h b/xen/arch/x86/include/asm/mc146818rtc.h
index 1a34512d29..5e796cda7e 100644
--- a/xen/arch/x86/include/asm/mc146818rtc.h
+++ b/xen/arch/x86/include/asm/mc146818rtc.h
@@ -1,8 +1,8 @@
 /*
  * Machine dependent access functions for RTC registers.
  */
-#ifndef _ASM_MC146818RTC_H
-#define _ASM_MC146818RTC_H
+#ifndef ASM__X86__MC146818RTC_H
+#define ASM__X86__MC146818RTC_H
 
 #include <asm/io.h>
 #include <xen/spinlock.h>
@@ -117,4 +117,4 @@ outb_p((val),RTC_PORT(1)); \
 unsigned int rtc_guest_read(unsigned int port);
 void rtc_guest_write(unsigned int port, unsigned int data);
 
-#endif /* _ASM_MC146818RTC_H */
+#endif /* ASM__X86__MC146818RTC_H */
diff --git a/xen/arch/x86/include/asm/mce.h b/xen/arch/x86/include/asm/mce.h
index 2ec47a71ae..a70748da90 100644
--- a/xen/arch/x86/include/asm/mce.h
+++ b/xen/arch/x86/include/asm/mce.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_X86_MCE_H
-#define _XEN_X86_MCE_H
+#ifndef ASM__X86__MCE_H
+#define ASM__X86__MCE_H
 
 #include <xen/spinlock.h>
 #include <xen/types.h>
diff --git a/xen/arch/x86/include/asm/mem_paging.h b/xen/arch/x86/include/asm/mem_paging.h
index 5ae86669fb..c5ab2ee80e 100644
--- a/xen/arch/x86/include/asm/mem_paging.h
+++ b/xen/arch/x86/include/asm/mem_paging.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
  */
 
-#ifndef __ASM_X86_MEM_PAGING_H__
-#define __ASM_X86_MEM_PAGING_H__
+#ifndef ASM__X86__MEM_PAGING_H
+#define ASM__X86__MEM_PAGING_H
 
 int mem_paging_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_paging_op_t) arg);
 
@@ -18,7 +18,7 @@ int mem_paging_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_paging_op_t) arg);
 # define mem_paging_enabled(d) false
 #endif
 
-#endif /*__ASM_X86_MEM_PAGING_H__ */
+#endif /*ASM__X86__MEM_PAGING_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/mem_sharing.h b/xen/arch/x86/include/asm/mem_sharing.h
index 040962f690..c0e0beb727 100644
--- a/xen/arch/x86/include/asm/mem_sharing.h
+++ b/xen/arch/x86/include/asm/mem_sharing.h
@@ -6,8 +6,8 @@
  *
  * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos)
  */
-#ifndef __MEM_SHARING_H__
-#define __MEM_SHARING_H__
+#ifndef ASM__X86__MEM_SHARING_H
+#define ASM__X86__MEM_SHARING_H
 
 #include <public/domctl.h>
 #include <public/memory.h>
@@ -147,4 +147,4 @@ static inline int mem_sharing_fork_reset(struct domain *d, bool reset_state,
 
 #endif
 
-#endif /* __MEM_SHARING_H__ */
+#endif /* ASM__X86__MEM_SHARING_H */
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 57c08205d4..55ca221c13 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -1,5 +1,5 @@
-#ifndef ASM_X86__MICROCODE_H
-#define ASM_X86__MICROCODE_H
+#ifndef ASM__X86__MICROCODE_H
+#define ASM__X86__MICROCODE_H
 
 #include <xen/types.h>
 #include <xen/percpu.h>
@@ -30,4 +30,4 @@ int microcode_init_cache(unsigned long *module_map,
                          const struct multiboot_info *mbi);
 int microcode_update_one(void);
 
-#endif /* ASM_X86__MICROCODE_H */
+#endif /* ASM__X86__MICROCODE_H */
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 2a837f3d59..81eb0bb8cd 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -1,6 +1,6 @@
 
-#ifndef __ASM_X86_MM_H__
-#define __ASM_X86_MM_H__
+#ifndef ASM__X86__MM_H
+#define ASM__X86__MM_H
 
 #include <xen/list.h>
 #include <xen/spinlock.h>
@@ -628,4 +628,4 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return (mfn + nr) <= (virt_to_mfn(eva - 1) + 1);
 }
 
-#endif /* __ASM_X86_MM_H__ */
+#endif /* ASM__X86__MM_H */
diff --git a/xen/arch/x86/include/asm/mpspec.h b/xen/arch/x86/include/asm/mpspec.h
index 45e474dfd1..bcd9be54ac 100644
--- a/xen/arch/x86/include/asm/mpspec.h
+++ b/xen/arch/x86/include/asm/mpspec.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MPSPEC_H
-#define __ASM_MPSPEC_H
+#ifndef ASM__X86__MPSPEC_H
+#define ASM__X86__MPSPEC_H
 
 #include <xen/cpumask.h>
 #include <asm/mpspec_def.h>
diff --git a/xen/arch/x86/include/asm/mpspec_def.h b/xen/arch/x86/include/asm/mpspec_def.h
index b17ec41426..79a9760be8 100644
--- a/xen/arch/x86/include/asm/mpspec_def.h
+++ b/xen/arch/x86/include/asm/mpspec_def.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MPSPEC_DEF_H
-#define __ASM_MPSPEC_DEF_H
+#ifndef ASM__X86__MPSPEC_DEF_H
+#define ASM__X86__MPSPEC_DEF_H
 
 /*
  * Structure definitions for SMP machines following the
diff --git a/xen/arch/x86/include/asm/msi.h b/xen/arch/x86/include/asm/msi.h
index 748bc3cd6d..ad9b4c90a3 100644
--- a/xen/arch/x86/include/asm/msi.h
+++ b/xen/arch/x86/include/asm/msi.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSI_H
-#define __ASM_MSI_H
+#ifndef ASM__X86__MSI_H
+#define ASM__X86__MSI_H
 
 #include <xen/cpumask.h>
 #include <xen/pci.h>
@@ -251,4 +251,4 @@ void guest_mask_msi_irq(struct irq_desc *desc, bool mask);
 void cf_check ack_nonmaskable_msi_irq(struct irq_desc *desc);
 void cf_check set_msi_affinity(struct irq_desc *desc, const cpumask_t *mask);
 
-#endif /* __ASM_MSI_H */
+#endif /* ASM__X86__MSI_H */
diff --git a/xen/arch/x86/include/asm/msr-index.h b/xen/arch/x86/include/asm/msr-index.h
index 9cdb5b2625..abde451b98 100644
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSR_INDEX_H
-#define __ASM_MSR_INDEX_H
+#ifndef ASM__X86__MSR_INDEX_H
+#define ASM__X86__MSR_INDEX_H
 
 /*
  * CPU model specific register (MSR) numbers
@@ -698,4 +698,4 @@
 #define MSR_PKGC9_IRTL			0x00000634
 #define MSR_PKGC10_IRTL			0x00000635
 
-#endif /* __ASM_MSR_INDEX_H */
+#endif /* ASM__X86__MSR_INDEX_H */
diff --git a/xen/arch/x86/include/asm/msr.h b/xen/arch/x86/include/asm/msr.h
index 355fb324ec..033bb9d6ff 100644
--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSR_H
-#define __ASM_MSR_H
+#ifndef ASM__X86__MSR_H
+#define ASM__X86__MSR_H
 
 #include "msr-index.h"
 
@@ -441,4 +441,4 @@ int init_vcpu_msr_policy(struct vcpu *v);
 int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val);
 int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val);
 
-#endif /* __ASM_MSR_H */
+#endif /* ASM__X86__MSR_H */
diff --git a/xen/arch/x86/include/asm/mtrr.h b/xen/arch/x86/include/asm/mtrr.h
index 36dac0a775..384c29f2a7 100644
--- a/xen/arch/x86/include/asm/mtrr.h
+++ b/xen/arch/x86/include/asm/mtrr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_MTRR_H__
-#define __ASM_X86_MTRR_H__
+#ifndef ASM__X86__MTRR_H
+#define ASM__X86__MTRR_H
 
 #include <xen/mm.h>
 
@@ -85,4 +85,4 @@ extern bool pat_msr_set(uint64_t *pat, uint64_t msr);
 bool is_var_mtrr_overlapped(const struct mtrr_state *m);
 bool mtrr_pat_not_equal(const struct vcpu *vd, const struct vcpu *vs);
 
-#endif /* __ASM_X86_MTRR_H__ */
+#endif /* ASM__X86__MTRR_H */
diff --git a/xen/arch/x86/include/asm/multicall.h b/xen/arch/x86/include/asm/multicall.h
index 7e1d4c121a..9e9050dacd 100644
--- a/xen/arch/x86/include/asm/multicall.h
+++ b/xen/arch/x86/include/asm/multicall.h
@@ -2,11 +2,11 @@
  * asm-x86/multicall.h
  */
 
-#ifndef __ASM_X86_MULTICALL_H__
-#define __ASM_X86_MULTICALL_H__
+#ifndef ASM__X86__MULTICALL_H
+#define ASM__X86__MULTICALL_H
 
 #include <xen/multicall.h>
 
 typeof(arch_do_multicall_call) pv_do_multicall_call, hvm_do_multicall_call;
 
-#endif /* __ASM_X86_MULTICALL_H__ */
+#endif /* ASM__X86__MULTICALL_H */
diff --git a/xen/arch/x86/include/asm/mwait.h b/xen/arch/x86/include/asm/mwait.h
index 000a692f6d..90781aa035 100644
--- a/xen/arch/x86/include/asm/mwait.h
+++ b/xen/arch/x86/include/asm/mwait.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_MWAIT_H__
-#define __ASM_X86_MWAIT_H__
+#ifndef ASM__X86__MWAIT_H
+#define ASM__X86__MWAIT_H
 
 #include <xen/types.h>
 
@@ -23,4 +23,4 @@ static inline bool mwait_pc10_supported(void)
 }
 #endif
 
-#endif /* __ASM_X86_MWAIT_H__ */
+#endif /* ASM__X86__MWAIT_H */
diff --git a/xen/arch/x86/include/asm/nmi.h b/xen/arch/x86/include/asm/nmi.h
index 9a5da14162..ce4ab3690f 100644
--- a/xen/arch/x86/include/asm/nmi.h
+++ b/xen/arch/x86/include/asm/nmi.h
@@ -1,6 +1,6 @@
 
-#ifndef ASM_NMI_H
-#define ASM_NMI_H
+#ifndef ASM__X86__NMI_H
+#define ASM__X86__NMI_H
 
 #include <public/nmi.h>
 
@@ -43,4 +43,4 @@ void trigger_nmi_continuation(void);
 
 /* Check for NMI continuation pending. */
 bool nmi_check_continuation(void);
-#endif /* ASM_NMI_H */
+#endif /* ASM__X86__NMI_H */
diff --git a/xen/arch/x86/include/asm/nops.h b/xen/arch/x86/include/asm/nops.h
index 2724a9862e..0d2480a416 100644
--- a/xen/arch/x86/include/asm/nops.h
+++ b/xen/arch/x86/include/asm/nops.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ASM_NOPS_H__
-#define __X86_ASM_NOPS_H__
+#ifndef ASM__X86__NOPS_H
+#define ASM__X86__NOPS_H
 
 /*
  * Define nops for use with alternative().
@@ -65,4 +65,4 @@
 
 #define ASM_NOP_MAX 9
 
-#endif /* __X86_ASM_NOPS_H__ */
+#endif /* ASM__X86__NOPS_H */
diff --git a/xen/arch/x86/include/asm/nospec.h b/xen/arch/x86/include/asm/nospec.h
index e058a3bb0e..d3efb3c52e 100644
--- a/xen/arch/x86/include/asm/nospec.h
+++ b/xen/arch/x86/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
-#ifndef _ASM_X86_NOSPEC_H
-#define _ASM_X86_NOSPEC_H
+#ifndef ASM__X86__NOSPEC_H
+#define ASM__X86__NOSPEC_H
 
 #include <asm/alternative.h>
 
@@ -88,7 +88,7 @@ static always_inline bool arch_lock_evaluate_nospec(bool condition)
         return barrier_lock_false();
 }
 
-#endif /* _ASM_X86_NOSPEC_H */
+#endif /* ASM__X86__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/numa.h b/xen/arch/x86/include/asm/numa.h
index 7866afa408..8371bc3a44 100644
--- a/xen/arch/x86/include/asm/numa.h
+++ b/xen/arch/x86/include/asm/numa.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X8664_NUMA_H 
-#define _ASM_X8664_NUMA_H 1
+#ifndef ASM__X86__NUMA_H 
+#define ASM__X86__NUMA_H 1
 
 #include <xen/cpumask.h>
 
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index 321c7b5941..f3cd804af5 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -11,8 +11,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_ASM_X86_P2M_H
-#define _XEN_ASM_X86_P2M_H
+#ifndef ASM__X86__P2M_H
+#define ASM__X86__P2M_H
 
 #include <xen/paging.h>
 #include <xen/mem_access.h>
@@ -1101,7 +1101,7 @@ static inline int p2m_entry_modify(struct p2m_domain *p2m, p2m_type_t nt,
 
 #endif /* CONFIG_HVM */
 
-#endif /* _XEN_ASM_X86_P2M_H */
+#endif /* ASM__X86__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/page-bits.h b/xen/arch/x86/include/asm/page-bits.h
index 6f7fc7d035..5350baf69d 100644
--- a/xen/arch/x86/include/asm/page-bits.h
+++ b/xen/arch/x86/include/asm/page-bits.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PAGE_SHIFT_H__
-#define __X86_PAGE_SHIFT_H__
+#ifndef ASM__X86__PAGE_BITS_H
+#define ASM__X86__PAGE_BITS_H
 
 #define L1_PAGETABLE_SHIFT      12
 #define L2_PAGETABLE_SHIFT      21
@@ -23,4 +23,4 @@
 #define PADDR_BITS              52
 #define VADDR_BITS              48
 
-#endif /* __X86_PAGE_SHIFT_H__ */
+#endif /* ASM__X86__PAGE_BITS_H */
diff --git a/xen/arch/x86/include/asm/page.h b/xen/arch/x86/include/asm/page.h
index e01af28916..63c7341fcc 100644
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PAGE_H__
-#define __X86_PAGE_H__
+#ifndef ASM__X86__PAGE_H
+#define ASM__X86__PAGE_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -389,7 +389,7 @@ static inline void invalidate_icache(void)
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __X86_PAGE_H__ */
+#endif /* ASM__X86__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/paging.h b/xen/arch/x86/include/asm/paging.h
index 8a2a0af408..b7c59c426b 100644
--- a/xen/arch/x86/include/asm/paging.h
+++ b/xen/arch/x86/include/asm/paging.h
@@ -9,8 +9,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_PAGING_H
-#define _XEN_PAGING_H
+#ifndef ASM__X86__PAGING_H
+#define ASM__X86__PAGING_H
 
 #include <xen/mm.h>
 #include <public/domctl.h>
diff --git a/xen/arch/x86/include/asm/pci.h b/xen/arch/x86/include/asm/pci.h
index fd5480d67d..ac38417fc5 100644
--- a/xen/arch/x86/include/asm/pci.h
+++ b/xen/arch/x86/include/asm/pci.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PCI_H__
-#define __X86_PCI_H__
+#ifndef ASM__X86__PCI_H
+#define ASM__X86__PCI_H
 
 #include <xen/mm.h>
 
@@ -67,4 +67,4 @@ static inline bool pci_check_bar(const struct pci_dev *pdev,
     return is_memory_hole(start, end);
 }
 
-#endif /* __X86_PCI_H__ */
+#endif /* ASM__X86__PCI_H */
diff --git a/xen/arch/x86/include/asm/perfc.h b/xen/arch/x86/include/asm/perfc.h
index a1a591e803..b1c3e0d7f7 100644
--- a/xen/arch/x86/include/asm/perfc.h
+++ b/xen/arch/x86/include/asm/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PERFC_H__
-#define __ASM_PERFC_H__
+#ifndef ASM__X86__PERFC_H
+#define ASM__X86__PERFC_H
 
 static inline void arch_perfc_reset(void)
 {
diff --git a/xen/arch/x86/include/asm/perfc_defn.h b/xen/arch/x86/include/asm/perfc_defn.h
index 487e20dc97..20cfbb40c5 100644
--- a/xen/arch/x86/include/asm/perfc_defn.h
+++ b/xen/arch/x86/include/asm/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef ASM__X86__PERFC_DEFN_H*/
+/*#define ASM__X86__PERFC_DEFN_H*/
 
 PERFCOUNTER_ARRAY(exceptions,           "exceptions", 32)
 
@@ -131,4 +131,4 @@ PERFCOUNTER(iommu_pt_coalesces,   "IOMMU page table coalesces")
 PERFCOUNTER(buslock, "Bus Locks Detected")
 PERFCOUNTER(vmnotify_crash, "domain crashes by Notify VM Exit")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* ASM__X86__PERFC_DEFN_H */
diff --git a/xen/arch/x86/include/asm/processor.h b/xen/arch/x86/include/asm/processor.h
index 26e2fb1369..c7ea2f674f 100644
--- a/xen/arch/x86/include/asm/processor.h
+++ b/xen/arch/x86/include/asm/processor.h
@@ -1,8 +1,8 @@
 
 /* Portions are: Copyright (c) 1994 Linus Torvalds */
 
-#ifndef __ASM_X86_PROCESSOR_H
-#define __ASM_X86_PROCESSOR_H
+#ifndef ASM__X86__PROCESSOR_H
+#define ASM__X86__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -529,7 +529,7 @@ void amd_check_zenbleed(void);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ASM_X86_PROCESSOR_H */
+#endif /* ASM__X86__PROCESSOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/prot-key.h b/xen/arch/x86/include/asm/prot-key.h
index 0dcd31b7ea..162db7b3ee 100644
--- a/xen/arch/x86/include/asm/prot-key.h
+++ b/xen/arch/x86/include/asm/prot-key.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2021-2022 Citrix Systems Ltd.
  */
-#ifndef ASM_PROT_KEY_H
-#define ASM_PROT_KEY_H
+#ifndef ASM__X86__PROT_KEY_H
+#define ASM__X86__PROT_KEY_H
 
 #include <xen/percpu.h>
 #include <xen/types.h>
@@ -82,4 +82,4 @@ static inline void wrpkrs_and_cache(uint32_t pkrs)
     wrmsr_ns(MSR_PKRS, pkrs, 0);
 }
 
-#endif /* ASM_PROT_KEY_H */
+#endif /* ASM__X86__PROT_KEY_H */
diff --git a/xen/arch/x86/include/asm/psr.h b/xen/arch/x86/include/asm/psr.h
index d21a59d98f..461a39395f 100644
--- a/xen/arch/x86/include/asm/psr.h
+++ b/xen/arch/x86/include/asm/psr.h
@@ -13,8 +13,8 @@
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  * more details.
  */
-#ifndef __ASM_PSR_H__
-#define __ASM_PSR_H__
+#ifndef ASM__X86__PSR_H
+#define ASM__X86__PSR_H
 
 #include <xen/types.h>
 
@@ -92,7 +92,7 @@ static inline void psr_domain_init(struct domain *d) {}
 static inline void psr_domain_free(struct domain *d) {}
 #endif
 
-#endif /* __ASM_PSR_H__ */
+#endif /* ASM__X86__PSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pt-contig-markers.h b/xen/arch/x86/include/asm/pt-contig-markers.h
index 1ad5c8fb6c..b0af22a6ba 100644
--- a/xen/arch/x86/include/asm/pt-contig-markers.h
+++ b/xen/arch/x86/include/asm/pt-contig-markers.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_PT_CONTIG_MARKERS_H
-#define __ASM_X86_PT_CONTIG_MARKERS_H
+#ifndef ASM__X86__PT_CONTIG_MARKERS_H
+#define ASM__X86__PT_CONTIG_MARKERS_H
 
 /*
  * Short of having function templates in C, the function defined below is
@@ -107,4 +107,4 @@ static bool pt_update_contig_markers(uint64_t *pt, unsigned int idx,
 
 #endif /* CONTIG_MASK */
 
-#endif /* __ASM_X86_PT_CONTIG_MARKERS_H */
+#endif /* ASM__X86__PT_CONTIG_MARKERS_H */
diff --git a/xen/arch/x86/include/asm/pv/domain.h b/xen/arch/x86/include/asm/pv/domain.h
index 75a6b9e5c7..83c779442b 100644
--- a/xen/arch/x86/include/asm/pv/domain.h
+++ b/xen/arch/x86/include/asm/pv/domain.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_DOMAIN_H__
-#define __X86_PV_DOMAIN_H__
+#ifndef ASM__X86__PV__DOMAIN_H
+#define ASM__X86__PV__DOMAIN_H
 
 #include <xen/sched.h>
 
@@ -110,7 +110,7 @@ static inline void pv_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 void cf_check paravirt_ctxt_switch_from(struct vcpu *v);
 void cf_check paravirt_ctxt_switch_to(struct vcpu *v);
 
-#endif	/* __X86_PV_DOMAIN_H__ */
+#endif	/* ASM__X86__PV__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/grant_table.h b/xen/arch/x86/include/asm/pv/grant_table.h
index 88f36c6595..aa03ff5345 100644
--- a/xen/arch/x86/include/asm/pv/grant_table.h
+++ b/xen/arch/x86/include/asm/pv/grant_table.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_GRANT_TABLE_H__
-#define __X86_PV_GRANT_TABLE_H__
+#ifndef ASM__X86__PV__GRANT_TABLE_H
+#define ASM__X86__PV__GRANT_TABLE_H
 
 #ifdef CONFIG_PV
 
@@ -36,7 +36,7 @@ static inline int replace_grant_pv_mapping(uint64_t addr, mfn_t frame,
 
 #endif
 
-#endif /* __X86_PV_GRANT_TABLE_H__ */
+#endif /* ASM__X86__PV__GRANT_TABLE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/mm.h b/xen/arch/x86/include/asm/pv/mm.h
index 182764542c..1135b7bda6 100644
--- a/xen/arch/x86/include/asm/pv/mm.h
+++ b/xen/arch/x86/include/asm/pv/mm.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_MM_H__
-#define __X86_PV_MM_H__
+#ifndef ASM__X86__PV__MM_H
+#define ASM__X86__PV__MM_H
 
 #ifdef CONFIG_PV
 
@@ -46,4 +46,4 @@ static inline bool pv_destroy_ldt(struct vcpu *v)
 
 #endif
 
-#endif /* __X86_PV_MM_H__ */
+#endif /* ASM__X86__PV__MM_H */
diff --git a/xen/arch/x86/include/asm/pv/shim.h b/xen/arch/x86/include/asm/pv/shim.h
index 6153e27005..2a7d1c1594 100644
--- a/xen/arch/x86/include/asm/pv/shim.h
+++ b/xen/arch/x86/include/asm/pv/shim.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_PV_SHIM_H__
-#define __X86_PV_SHIM_H__
+#ifndef ASM__X86__PV__SHIM_H
+#define ASM__X86__PV__SHIM_H
 
 #include <xen/hypercall.h>
 #include <xen/types.h>
@@ -98,7 +98,7 @@ pv_shim_reserved_pages(unsigned int *s)
 
 #endif
 
-#endif /* __X86_PV_SHIM_H__ */
+#endif /* ASM__X86__PV__SHIM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/trace.h b/xen/arch/x86/include/asm/pv/trace.h
index c616206eeb..b9ecfb066c 100644
--- a/xen/arch/x86/include/asm/pv/trace.h
+++ b/xen/arch/x86/include/asm/pv/trace.h
@@ -1,5 +1,5 @@
-#ifndef XEN_X86_PV_TRACE_H
-#define XEN_X86_PV_TRACE_H
+#ifndef ASM__X86__PV__TRACE_H
+#define ASM__X86__PV__TRACE_H
 
 #include <xen/trace.h>
 
@@ -45,4 +45,4 @@ static inline void trace_ptwr_emulation(unsigned long addr, l1_pgentry_t npte)
         __trace_ptwr_emulation(addr, npte);
 }
 
-#endif /* XEN_X86_PV_TRACE_H */
+#endif /* ASM__X86__PV__TRACE_H */
diff --git a/xen/arch/x86/include/asm/pv/traps.h b/xen/arch/x86/include/asm/pv/traps.h
index 404f5b169c..31f9f19231 100644
--- a/xen/arch/x86/include/asm/pv/traps.h
+++ b/xen/arch/x86/include/asm/pv/traps.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_TRAPS_H__
-#define __X86_PV_TRAPS_H__
+#ifndef ASM__X86__PV__TRAPS_H
+#define ASM__X86__PV__TRAPS_H
 
 #ifdef CONFIG_PV
 
@@ -47,7 +47,7 @@ static inline bool pv_trap_callback_registered(const struct vcpu *v,
 }
 #endif /* CONFIG_PV */
 
-#endif /* __X86_PV_TRAPS_H__ */
+#endif /* ASM__X86__PV__TRAPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/random.h b/xen/arch/x86/include/asm/random.h
index 9e1fe0bc1d..55f0293a0f 100644
--- a/xen/arch/x86/include/asm/random.h
+++ b/xen/arch/x86/include/asm/random.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_RANDOM_H__
-#define __ASM_RANDOM_H__
+#ifndef ASM__X86__RANDOM_H
+#define ASM__X86__RANDOM_H
 
 #include <asm/processor.h>
 
@@ -13,4 +13,4 @@ static inline unsigned int arch_get_random(void)
     return val;
 }
 
-#endif /* __ASM_RANDOM_H__ */
+#endif /* ASM__X86__RANDOM_H */
diff --git a/xen/arch/x86/include/asm/regs.h b/xen/arch/x86/include/asm/regs.h
index ddf5e14e57..e99b18e3ab 100644
--- a/xen/arch/x86/include/asm/regs.h
+++ b/xen/arch/x86/include/asm/regs.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_REGS_H__
-#define __X86_REGS_H__
+#ifndef ASM__X86__REGS_H
+#define ASM__X86__REGS_H
 
 #include <asm/x86_64/regs.h>
 
@@ -30,4 +30,4 @@ static inline void read_sregs(struct cpu_user_regs *regs)
     asm ( "mov %%gs, %0" : "=m" (regs->gs) );
 }
 
-#endif /* __X86_REGS_H__ */
+#endif /* ASM__X86__REGS_H */
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index d75589178b..be6cac0095 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -1,5 +1,5 @@
-#ifndef __X86_SETUP_H_
-#define __X86_SETUP_H_
+#ifndef ASM__X86__SETUP_H
+#define ASM__X86__SETUP_H
 
 #include <xen/multiboot.h>
 #include <asm/numa.h>
diff --git a/xen/arch/x86/include/asm/shadow.h b/xen/arch/x86/include/asm/shadow.h
index 9a8d1b8353..034d389c60 100644
--- a/xen/arch/x86/include/asm/shadow.h
+++ b/xen/arch/x86/include/asm/shadow.h
@@ -19,8 +19,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _XEN_SHADOW_H
-#define _XEN_SHADOW_H
+#ifndef ASM__X86__SHADOW_H
+#define ASM__X86__SHADOW_H
 
 #include <xen/sched.h>
 #include <xen/perfc.h>
@@ -271,7 +271,7 @@ static inline void shadow_remove_all_shadows(struct domain *d, mfn_t gmfn)
     sh_remove_shadows(d, gmfn, 0 /* Be thorough */, 1 /* Must succeed */);
 }
 
-#endif /* _XEN_SHADOW_H */
+#endif /* ASM__X86__SHADOW_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/shared.h b/xen/arch/x86/include/asm/shared.h
index 60b67fa4b4..b08c8b3f7b 100644
--- a/xen/arch/x86/include/asm/shared.h
+++ b/xen/arch/x86/include/asm/shared.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_SHARED_H__
-#define __XEN_X86_SHARED_H__
+#ifndef ASM__X86__SHARED_H
+#define ASM__X86__SHARED_H
 
 #ifdef CONFIG_COMPAT
 
@@ -83,4 +83,4 @@ GET_SET_VCPU(unsigned long, cr2)
 #undef GET_SET_VCPU
 #undef GET_SET_SHARED
 
-#endif /* __XEN_X86_SHARED_H__ */
+#endif /* ASM__X86__SHARED_H */
diff --git a/xen/arch/x86/include/asm/shstk.h b/xen/arch/x86/include/asm/shstk.h
index 9160fe9f0e..e04694c151 100644
--- a/xen/arch/x86/include/asm/shstk.h
+++ b/xen/arch/x86/include/asm/shstk.h
@@ -2,8 +2,8 @@
 /******************************************************************************
  * Copyright (c) 2022 Citrix Systems Ltd.
  */
-#ifndef XEN_ASM_SHSTK_H
-#define XEN_ASM_SHSTK_H
+#ifndef ASM__X86__SHSTK_H
+#define ASM__X86__SHSTK_H
 
 /*
  * RDSSP is a nop when shadow stacks are inactive.  Also, SSP has a minimum
@@ -31,4 +31,4 @@ static inline void wrss(unsigned long val, unsigned long *ptr)
           : [val] "r" (val) );
 }
 
-#endif /* XEN_ASM_SHSTK_H */
+#endif /* ASM__X86__SHSTK_H */
diff --git a/xen/arch/x86/include/asm/smp.h b/xen/arch/x86/include/asm/smp.h
index c8c7960134..90c17d1a2b 100644
--- a/xen/arch/x86/include/asm/smp.h
+++ b/xen/arch/x86/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__X86__SMP_H
+#define ASM__X86__SMP_H
 
 /*
  * We need the APIC definitions automatically as part of 'smp.h'
diff --git a/xen/arch/x86/include/asm/softirq.h b/xen/arch/x86/include/asm/softirq.h
index 415ee866c7..796ee09586 100644
--- a/xen/arch/x86/include/asm/softirq.h
+++ b/xen/arch/x86/include/asm/softirq.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SOFTIRQ_H__
-#define __ASM_SOFTIRQ_H__
+#ifndef ASM__X86__SOFTIRQ_H
+#define ASM__X86__SOFTIRQ_H
 
 #define NMI_SOFTIRQ            (NR_COMMON_SOFTIRQS + 0)
 #define TIME_CALIBRATE_SOFTIRQ (NR_COMMON_SOFTIRQS + 1)
@@ -11,4 +11,4 @@
 
 bool arch_skip_send_event_check(unsigned int cpu);
 
-#endif /* __ASM_SOFTIRQ_H__ */
+#endif /* ASM__X86__SOFTIRQ_H */
diff --git a/xen/arch/x86/include/asm/spec_ctrl.h b/xen/arch/x86/include/asm/spec_ctrl.h
index 72347ef2b9..472c0a3e94 100644
--- a/xen/arch/x86/include/asm/spec_ctrl.h
+++ b/xen/arch/x86/include/asm/spec_ctrl.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017-2018 Citrix Systems Ltd.
  */
 
-#ifndef __X86_SPEC_CTRL_H__
-#define __X86_SPEC_CTRL_H__
+#ifndef ASM__X86__SPEC_CTRL_H
+#define ASM__X86__SPEC_CTRL_H
 
 /*
  * Encoding of Xen's speculation control flags in:
@@ -196,7 +196,7 @@ static always_inline void spec_ctrl_exit_idle(struct cpu_info *info)
 }
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_SPEC_CTRL_H__ */
+#endif /* !ASM__X86__SPEC_CTRL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/spec_ctrl_asm.h b/xen/arch/x86/include/asm/spec_ctrl_asm.h
index 729a830411..5c6f0e1ec6 100644
--- a/xen/arch/x86/include/asm/spec_ctrl_asm.h
+++ b/xen/arch/x86/include/asm/spec_ctrl_asm.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017-2018 Citrix Systems Ltd.
  */
 
-#ifndef __X86_SPEC_CTRL_ASM_H__
-#define __X86_SPEC_CTRL_ASM_H__
+#ifndef ASM__X86__SPEC_CTRL_ASM_H
+#define ASM__X86__SPEC_CTRL_ASM_H
 
 #ifdef __ASSEMBLY__
 #include <asm/msr-index.h>
@@ -501,7 +501,7 @@
 .endm
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_SPEC_CTRL_ASM_H__ */
+#endif /* !ASM__X86__SPEC_CTRL_ASM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/spinlock.h b/xen/arch/x86/include/asm/spinlock.h
index 56f6095752..11bec91e7f 100644
--- a/xen/arch/x86/include/asm/spinlock.h
+++ b/xen/arch/x86/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__X86__SPINLOCK_H
+#define ASM__X86__SPINLOCK_H
 
 #define _raw_read_unlock(l) \
     BUILD_BUG_ON(sizeof((l)->lock) != 4); /* Clang doesn't support %z in asm. */ \
@@ -24,4 +24,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__X86__SPINLOCK_H */
diff --git a/xen/arch/x86/include/asm/string.h b/xen/arch/x86/include/asm/string.h
index f08d95096e..c0a469ff48 100644
--- a/xen/arch/x86/include/asm/string.h
+++ b/xen/arch/x86/include/asm/string.h
@@ -1,7 +1,7 @@
-#ifndef __X86_STRING_H__
-#define __X86_STRING_H__
+#ifndef ASM__X86__STRING_H
+#define ASM__X86__STRING_H
 
-#endif /* __X86_STRING_H__ */
+#endif /* ASM__X86__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/system.h b/xen/arch/x86/include/asm/system.h
index 73cb16ca68..f347e2664e 100644
--- a/xen/arch/x86/include/asm/system.h
+++ b/xen/arch/x86/include/asm/system.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SYSTEM_H
-#define __ASM_SYSTEM_H
+#ifndef ASM__X86__SYSTEM_H
+#define ASM__X86__SYSTEM_H
 
 #include <xen/bitops.h>
 #include <xen/bug.h>
diff --git a/xen/arch/x86/include/asm/time.h b/xen/arch/x86/include/asm/time.h
index 3dfbb5297a..5452da7c62 100644
--- a/xen/arch/x86/include/asm/time.h
+++ b/xen/arch/x86/include/asm/time.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_TIME_H__
-#define __X86_TIME_H__
+#ifndef ASM__X86__TIME_H
+#define ASM__X86__TIME_H
 
 #include <asm/msr.h>
 
@@ -92,4 +92,4 @@ u64 scale_delta(u64 delta, const struct time_scale *scale);
 #define PIT_STATUS_NULL_COUNT (1 << 6)
 /* Lower bits match Timer Control Word. */
 
-#endif /* __X86_TIME_H__ */
+#endif /* ASM__X86__TIME_H */
diff --git a/xen/arch/x86/include/asm/trampoline.h b/xen/arch/x86/include/asm/trampoline.h
index 57a1f85a53..a9bbfeedf7 100644
--- a/xen/arch/x86/include/asm/trampoline.h
+++ b/xen/arch/x86/include/asm/trampoline.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef X86_ASM_TRAMPOLINE_H
-#define X86_ASM_TRAMPOLINE_H
+#ifndef ASM__X86__TRAMPOLINE_H
+#define ASM__X86__TRAMPOLINE_H
 
 /*
  * Data in or about the low memory trampoline.
@@ -92,4 +92,4 @@ extern uint8_t video_flags;
 extern uint16_t boot_edid_caps;
 extern uint8_t boot_edid_info[128];
 
-#endif /* X86_ASM_TRAMPOLINE_H */
+#endif /* ASM__X86__TRAMPOLINE_H */
diff --git a/xen/arch/x86/include/asm/traps.h b/xen/arch/x86/include/asm/traps.h
index 01ef362edc..92348b201c 100644
--- a/xen/arch/x86/include/asm/traps.h
+++ b/xen/arch/x86/include/asm/traps.h
@@ -4,12 +4,12 @@
  * Author: Christoph Egger <Christoph.Egger@amd.com>
  */
 
-#ifndef ASM_TRAP_H
-#define ASM_TRAP_H
+#ifndef ASM__X86__TRAPS_H
+#define ASM__X86__TRAPS_H
 
 const char *vector_name(unsigned int vec);
 
-#endif /* ASM_TRAP_H */
+#endif /* ASM__X86__TRAPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/types.h b/xen/arch/x86/include/asm/types.h
index 4cbbc8eaa6..99f3388218 100644
--- a/xen/arch/x86/include/asm/types.h
+++ b/xen/arch/x86/include/asm/types.h
@@ -1,8 +1,8 @@
-#ifndef __X86_TYPES_H__
-#define __X86_TYPES_H__
+#ifndef ASM__X86__TYPES_H
+#define ASM__X86__TYPES_H
 
 typedef unsigned long paddr_t;
 #define INVALID_PADDR (~0UL)
 #define PRIpaddr "016lx"
 
-#endif /* __X86_TYPES_H__ */
+#endif /* ASM__X86__TYPES_H */
diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h
index 2d01669b96..d47a81a36b 100644
--- a/xen/arch/x86/include/asm/uaccess.h
+++ b/xen/arch/x86/include/asm/uaccess.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_UACCESS_H__
-#define __X86_UACCESS_H__
+#ifndef ASM__X86__UACCESS_H
+#define ASM__X86__UACCESS_H
 
 #include <xen/compiler.h>
 #include <xen/errno.h>
@@ -427,4 +427,4 @@ extern void sort_exception_tables(void);
 extern void sort_exception_table(struct exception_table_entry *start,
                                  const struct exception_table_entry *stop);
 
-#endif /* __X86_UACCESS_H__ */
+#endif /* ASM__X86__UACCESS_H */
diff --git a/xen/arch/x86/include/asm/vpmu.h b/xen/arch/x86/include/asm/vpmu.h
index dae9b43dac..cb5f2b3b17 100644
--- a/xen/arch/x86/include/asm/vpmu.h
+++ b/xen/arch/x86/include/asm/vpmu.h
@@ -7,8 +7,8 @@
  * Author: Haitao Shan <haitao.shan@intel.com>
  */
 
-#ifndef __ASM_X86_HVM_VPMU_H_
-#define __ASM_X86_HVM_VPMU_H_
+#ifndef ASM__X86__VPMU_H
+#define ASM__X86__VPMU_H
 
 #include <public/pmu.h>
 
@@ -142,5 +142,5 @@ static inline int vpmu_allocate_context(struct vcpu *v)
 }
 #endif
 
-#endif /* __ASM_X86_HVM_VPMU_H_*/
+#endif /* ASM__X86__VPMU_H*/
 
diff --git a/xen/arch/x86/include/asm/x86-defns.h b/xen/arch/x86/include/asm/x86-defns.h
index 7abc5bcd42..a2f3e5ebe7 100644
--- a/xen/arch/x86/include/asm/x86-defns.h
+++ b/xen/arch/x86/include/asm/x86-defns.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_DEFNS_H__
-#define __XEN_X86_DEFNS_H__
+#ifndef ASM__X86__X86_DEFNS_H
+#define ASM__X86__X86_DEFNS_H
 
 /*
  * EFLAGS bits
@@ -204,4 +204,4 @@
 #define X86_MT_UCM    0x07 /* UC- */
 #define X86_NUM_MT    0x08
 
-#endif	/* __XEN_X86_DEFNS_H__ */
+#endif	/* ASM__X86__X86_DEFNS_H */
diff --git a/xen/arch/x86/include/asm/x86-vendors.h b/xen/arch/x86/include/asm/x86-vendors.h
index d51c516909..eb69dab2fc 100644
--- a/xen/arch/x86/include/asm/x86-vendors.h
+++ b/xen/arch/x86/include/asm/x86-vendors.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_VENDORS_H__
-#define __XEN_X86_VENDORS_H__
+#ifndef ASM__X86__X86_VENDORS_H
+#define ASM__X86__X86_VENDORS_H
 
 /*
  * CPU vendor IDs
@@ -36,4 +36,4 @@
 #define X86_VENDOR_HYGON_ECX _AC(0x656e6975, U)
 #define X86_VENDOR_HYGON_EDX _AC(0x6e65476e, U)
 
-#endif	/* __XEN_X86_VENDORS_H__ */
+#endif	/* ASM__X86__X86_VENDORS_H */
diff --git a/xen/arch/x86/include/asm/x86_64/elf.h b/xen/arch/x86/include/asm/x86_64/elf.h
index 00227e0e12..7842e4c997 100644
--- a/xen/arch/x86/include/asm/x86_64/elf.h
+++ b/xen/arch/x86/include/asm/x86_64/elf.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_ELF_H__
-#define __X86_64_ELF_H__
+#ifndef ASM__X86__X86_64__ELF_H
+#define ASM__X86__X86_64__ELF_H
 
 #include <asm/msr.h>
 #include <asm/regs.h>
@@ -72,7 +72,7 @@ static inline void elf_core_save_regs(ELF_Gregset *core_regs,
     asm ( "mov %%cr4, %0" : "=r" (xen_core_regs->cr4) );
 }
 
-#endif /* __X86_64_ELF_H__ */
+#endif /* ASM__X86__X86_64__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/x86_64/page.h b/xen/arch/x86/include/asm/x86_64/page.h
index 201b79f99e..797bc698f3 100644
--- a/xen/arch/x86/include/asm/x86_64/page.h
+++ b/xen/arch/x86/include/asm/x86_64/page.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_64_PAGE_H__
-#define __X86_64_PAGE_H__
+#ifndef ASM__X86__X86_64__PAGE_H
+#define ASM__X86__X86_64__PAGE_H
 
 #define __XEN_VIRT_START        XEN_VIRT_START
 
@@ -153,7 +153,7 @@ static inline intpte_t put_pte_flags(unsigned int x)
 #define PAGE_HYPERVISOR_WT      (__PAGE_HYPERVISOR_WT | \
                                  _PAGE_GLOBAL | _PAGE_NX)
 
-#endif /* __X86_64_PAGE_H__ */
+#endif /* ASM__X86__X86_64__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/x86_64/regs.h b/xen/arch/x86/include/asm/x86_64/regs.h
index 171cf9a2e2..55a309cf24 100644
--- a/xen/arch/x86/include/asm/x86_64/regs.h
+++ b/xen/arch/x86/include/asm/x86_64/regs.h
@@ -1,5 +1,5 @@
-#ifndef _X86_64_REGS_H
-#define _X86_64_REGS_H
+#ifndef ASM__X86__X86_64__REGS_H
+#define ASM__X86__X86_64__REGS_H
 
 #include <xen/types.h>
 #include <public/xen.h>
diff --git a/xen/arch/x86/include/asm/x86_64/system.h b/xen/arch/x86/include/asm/x86_64/system.h
index e94371cf20..2bb71615fe 100644
--- a/xen/arch/x86/include/asm/x86_64/system.h
+++ b/xen/arch/x86/include/asm/x86_64/system.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_SYSTEM_H__
-#define __X86_64_SYSTEM_H__
+#ifndef ASM__X86__X86_64__SYSTEM_H
+#define ASM__X86__X86_64__SYSTEM_H
 
 #define cmpxchg(ptr,o,n)                                                \
     ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),            \
@@ -59,4 +59,4 @@ static always_inline __uint128_t cmpxchg16b_local_(
     __cmpxchg16b(_p, (void *)(o), (void *)(n));            \
 })
 
-#endif /* __X86_64_SYSTEM_H__ */
+#endif /* ASM__X86__X86_64__SYSTEM_H */
diff --git a/xen/arch/x86/include/asm/x86_64/uaccess.h b/xen/arch/x86/include/asm/x86_64/uaccess.h
index c6fa3fd381..e775af5487 100644
--- a/xen/arch/x86/include/asm/x86_64/uaccess.h
+++ b/xen/arch/x86/include/asm/x86_64/uaccess.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_UACCESS_H
-#define __X86_64_UACCESS_H
+#ifndef ASM__X86__X86_64__UACCESS_H
+#define ASM__X86__X86_64__UACCESS_H
 
 /*
  * With CONFIG_SPECULATIVE_HARDEN_GUEST_ACCESS (apparent) PV guest accesses
@@ -68,4 +68,4 @@ extern void *xlat_malloc(unsigned long *xlat_page_current, size_t size);
     (likely((count) < (~0U / (size))) && \
      compat_access_ok(addr, 0 + (count) * (size)))
 
-#endif /* __X86_64_UACCESS_H */
+#endif /* ASM__X86__X86_64__UACCESS_H */
diff --git a/xen/arch/x86/include/asm/x86_emulate.h b/xen/arch/x86/include/asm/x86_emulate.h
index 2b75f7f8e2..95aba22819 100644
--- a/xen/arch/x86/include/asm/x86_emulate.h
+++ b/xen/arch/x86/include/asm/x86_emulate.h
@@ -9,8 +9,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __ASM_X86_X86_EMULATE_H__
-#define __ASM_X86_X86_EMULATE_H__
+#ifndef ASM__X86__X86_EMULATE_H
+#define ASM__X86__X86_EMULATE_H
 
 #include <xen/types.h>
 #include <xen/lib.h>
@@ -19,4 +19,4 @@
 
 #include "../../x86_emulate/x86_emulate.h"
 
-#endif /* __ASM_X86_X86_EMULATE_H__ */
+#endif /* ASM__X86__X86_EMULATE_H */
diff --git a/xen/arch/x86/include/asm/xenoprof.h b/xen/arch/x86/include/asm/xenoprof.h
index dc6f822d32..8d729a0397 100644
--- a/xen/arch/x86/include/asm/xenoprof.h
+++ b/xen/arch/x86/include/asm/xenoprof.h
@@ -7,8 +7,8 @@
  *                    VA Linux Systems Japan K.K.
  */
 
-#ifndef __ASM_X86_XENOPROF_H__
-#define __ASM_X86_XENOPROF_H__
+#ifndef ASM__X86__XENOPROF_H
+#define ASM__X86__XENOPROF_H
 
 struct vcpu;
 
@@ -82,7 +82,7 @@ static inline bool nmi_oprofile_send_virq(void)
 
 #endif /* CONFIG_XENOPROF */
 
-#endif /* __ASM_X86_XENOPROF_H__ */
+#endif /* ASM__X86__XENOPROF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index b4ee555953..b673412e71 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -5,8 +5,8 @@
  * 
  */
 
-#ifndef __ASM_XSTATE_H
-#define __ASM_XSTATE_H
+#ifndef ASM__X86__XSTATE_H
+#define ASM__X86__XSTATE_H
 
 #include <xen/sched.h>
 #include <asm/cpufeature.h>
@@ -142,4 +142,4 @@ static inline bool xstate_all(const struct vcpu *v)
            (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
 }
 
-#endif /* __ASM_XSTATE_H */
+#endif /* ASM__X86__XSTATE_H */
diff --git a/xen/arch/x86/mm/hap/private.h b/xen/arch/x86/mm/hap/private.h
index 7eb672fa41..a85d390f56 100644
--- a/xen/arch/x86/mm/hap/private.h
+++ b/xen/arch/x86/mm/hap/private.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2007, AMD Corporation (Wei Huang)
  *
  */
-#ifndef __HAP_PRIVATE_H__
-#define __HAP_PRIVATE_H__
+#ifndef X86__MM__HAP__PRIVATE_H
+#define X86__MM__HAP__PRIVATE_H
 
 #include "../mm-locks.h"
 
@@ -30,4 +30,4 @@ unsigned long cf_check hap_p2m_ga_to_gfn_4_levels(
     struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3,
     paddr_t ga, uint32_t *pfec, unsigned int *page_order);
 
-#endif /* __HAP_PRIVATE_H__ */
+#endif /* X86__MM__HAP__PRIVATE_H */
diff --git a/xen/arch/x86/mm/mm-locks.h b/xen/arch/x86/mm/mm-locks.h
index a695a28324..e676c19b87 100644
--- a/xen/arch/x86/mm/mm-locks.h
+++ b/xen/arch/x86/mm/mm-locks.h
@@ -10,8 +10,8 @@
  * Copyright (c) 2006 Michael A Fetterman
  */
 
-#ifndef _MM_LOCKS_H
-#define _MM_LOCKS_H
+#ifndef X86__MM__MM_LOCKS_H
+#define X86__MM__MM_LOCKS_H
 
 /* Per-CPU variable for enforcing the lock ordering */
 DECLARE_PER_CPU(int, mm_lock_level);
@@ -394,4 +394,4 @@ declare_mm_lock(paging)
 #define paging_unlock(d)       mm_unlock(&(d)->arch.paging.lock)
 #define paging_locked_by_me(d) mm_locked_by_me(&(d)->arch.paging.lock)
 
-#endif /* _MM_LOCKS_H */
+#endif /* X86__MM__MM_LOCKS_H */
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 635f5a7f45..6815367c10 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -3,8 +3,8 @@
  * arch/x86/mm/p2m.h
  */
 
-#ifndef __ARCH_MM_P2M_H__
-#define __ARCH_MM_P2M_H__
+#ifndef X86__MM__P2M_H
+#define X86__MM__P2M_H
 
 struct p2m_domain *p2m_init_one(struct domain *d);
 void p2m_free_one(struct p2m_domain *p2m);
@@ -33,7 +33,7 @@ int ept_p2m_init(struct p2m_domain *p2m);
 void ept_p2m_uninit(struct p2m_domain *p2m);
 void p2m_init_altp2m_ept(struct domain *d, unsigned int i);
 
-#endif /* __ARCH_MM_P2M_H__ */
+#endif /* X86__MM__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index a5fc3a7676..f6156eceb7 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -8,8 +8,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_SHADOW_PRIVATE_H
-#define _XEN_SHADOW_PRIVATE_H
+#ifndef X86__MM__SHADOW__PRIVATE_H
+#define X86__MM__SHADOW__PRIVATE_H
 
 // In order to override the definition of mfn_to_page, we make sure page.h has
 // been included...
@@ -912,7 +912,7 @@ static inline int sh_check_page_has_no_refs(struct page_info *page)
 /* Flush the TLB of the selected vCPUs. */
 bool cf_check shadow_flush_tlb(const unsigned long *vcpu_bitmap);
 
-#endif /* _XEN_SHADOW_PRIVATE_H */
+#endif /* X86__MM__SHADOW__PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/mm/shadow/types.h b/xen/arch/x86/mm/shadow/types.h
index d700d8d64c..ade4e6601d 100644
--- a/xen/arch/x86/mm/shadow/types.h
+++ b/xen/arch/x86/mm/shadow/types.h
@@ -7,8 +7,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_SHADOW_TYPES_H
-#define _XEN_SHADOW_TYPES_H
+#ifndef X86__MM__SHADOW__TYPES_H
+#define X86__MM__SHADOW__TYPES_H
 
 /* The number of levels in the shadow pagetable is entirely determined
  * by the number of levels in the guest pagetable */
@@ -377,7 +377,7 @@ static inline uint32_t sh_l1e_mmio_get_flags(shadow_l1e_t sl1e)
 #endif /* SHOPT_FAST_FAULT_PATH */
 
 
-#endif /* _XEN_SHADOW_TYPES_H */
+#endif /* X86__MM__SHADOW__TYPES_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/oprofile/op_counter.h b/xen/arch/x86/oprofile/op_counter.h
index b515ac9ebc..b2ad0fb108 100644
--- a/xen/arch/x86/oprofile/op_counter.h
+++ b/xen/arch/x86/oprofile/op_counter.h
@@ -7,8 +7,8 @@
  * @author John Levon
  */
  
-#ifndef OP_COUNTER_H
-#define OP_COUNTER_H
+#ifndef X86__OPROFILE__OP_COUNTER_H
+#define X86__OPROFILE__OP_COUNTER_H
  
 #define OP_MAX_COUNTER 8
  
@@ -38,4 +38,4 @@ struct op_ibs_config {
 
 extern struct op_ibs_config ibs_config;
 
-#endif /* OP_COUNTER_H */
+#endif /* X86__OPROFILE__OP_COUNTER_H */
diff --git a/xen/arch/x86/oprofile/op_x86_model.h b/xen/arch/x86/oprofile/op_x86_model.h
index 35bc3c1e22..92253da6a5 100644
--- a/xen/arch/x86/oprofile/op_x86_model.h
+++ b/xen/arch/x86/oprofile/op_x86_model.h
@@ -8,8 +8,8 @@
  * @author Graydon Hoare
  */
 
-#ifndef OP_X86_MODEL_H
-#define OP_X86_MODEL_H
+#ifndef X86__OPROFILE__OP_X86_MODEL_H
+#define X86__OPROFILE__OP_X86_MODEL_H
 
 struct op_msr {
 	unsigned long addr;
@@ -55,4 +55,4 @@ void arch_perfmon_setup_counters(void);
 extern int ppro_has_global_ctrl;
 extern struct op_x86_model_spec const *model;
 
-#endif /* OP_X86_MODEL_H */
+#endif /* X86__OPROFILE__OP_X86_MODEL_H */
diff --git a/xen/arch/x86/pv/emulate.h b/xen/arch/x86/pv/emulate.h
index 49a4d34832..7eef71758e 100644
--- a/xen/arch/x86/pv/emulate.h
+++ b/xen/arch/x86/pv/emulate.h
@@ -1,5 +1,5 @@
-#ifndef __PV_EMULATE_H__
-#define __PV_EMULATE_H__
+#ifndef X86__PV__EMULATE_H
+#define X86__PV__EMULATE_H
 
 #include <xen/sched.h>
 
@@ -22,4 +22,4 @@ static inline const seg_desc_t *gdt_ldt_desc_ptr(unsigned int sel)
     return &tbl[sel >> 3];
 }
 
-#endif /* __PV_EMULATE_H__ */
+#endif /* X86__PV__EMULATE_H */
diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h
index 4564cab9fc..49a10b2878 100644
--- a/xen/arch/x86/pv/mm.h
+++ b/xen/arch/x86/pv/mm.h
@@ -1,5 +1,5 @@
-#ifndef __PV_MM_H__
-#define __PV_MM_H__
+#ifndef X86__PV__MM_H
+#define X86__PV__MM_H
 
 #include <asm/shadow.h>
 
@@ -181,4 +181,4 @@ static always_inline l4_pgentry_t adjust_guest_l4e(l4_pgentry_t l4e,
     return l4e;
 }
 
-#endif /* __PV_MM_H__ */
+#endif /* X86__PV__MM_H */
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emulate/x86_emulate.h
index 3e819d4174..d52ac28307 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.h
+++ b/xen/arch/x86/x86_emulate/x86_emulate.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2005-2007 XenSource Inc.
  */
 
-#ifndef __X86_EMULATE_H__
-#define __X86_EMULATE_H__
+#ifndef X86__X86_EMULATE__X86_EMULATE_H
+#define X86__X86_EMULATE__X86_EMULATE_H
 
 #include <xen/lib/x86/cpu-policy.h>
 
@@ -846,4 +846,4 @@ static inline void x86_emul_reset_event(struct x86_emulate_ctxt *ctxt)
     ctxt->event = (struct x86_event){};
 }
 
-#endif /* __X86_EMULATE_H__ */
+#endif /* X86__X86_EMULATE__X86_EMULATE_H */
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index 8fa3fb711a..7138a3e2e6 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -30,15 +30,15 @@
  * Includer has not provided a custom XEN_CPUFEATURE().  Arrange for normal
  * header guards, an enum and constants in the XEN_X86_FEATURE_xxx namespace.
  */
-#ifndef __XEN_PUBLIC_ARCH_X86_CPUFEATURESET_H__
-#define __XEN_PUBLIC_ARCH_X86_CPUFEATURESET_H__
+#ifndef PUBLIC__ARCH_X86__CPUFEATURESET_H
+#define PUBLIC__ARCH_X86__CPUFEATURESET_H
 
 #define XEN_CPUFEATURESET_DEFAULT_INCLUDE
 
 #define XEN_CPUFEATURE(name, value) XEN_X86_FEATURE_##name = value,
 enum {
 
-#endif /* __XEN_PUBLIC_ARCH_X86_CPUFEATURESET_H__ */
+#endif /* PUBLIC__ARCH_X86__CPUFEATURESET_H */
 #endif /* !XEN_CPUFEATURE */
 
 
diff --git a/xen/include/public/arch-x86/cpuid.h b/xen/include/public/arch-x86/cpuid.h
index 3bb0dd249f..81648850fa 100644
--- a/xen/include/public/arch-x86/cpuid.h
+++ b/xen/include/public/arch-x86/cpuid.h
@@ -10,8 +10,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_CPUID_H__
-#define __XEN_PUBLIC_ARCH_X86_CPUID_H__
+#ifndef PUBLIC__ARCH_X86__CPUID_H
+#define PUBLIC__ARCH_X86__CPUID_H
 
 /*
  * For compatibility with other hypervisor interfaces, the Xen cpuid leaves
@@ -119,4 +119,4 @@
 
 #define XEN_CPUID_MAX_NUM_LEAVES 5
 
-#endif /* __XEN_PUBLIC_ARCH_X86_CPUID_H__ */
+#endif /* PUBLIC__ARCH_X86__CPUID_H */
diff --git a/xen/include/public/arch-x86/guest-acpi.h b/xen/include/public/arch-x86/guest-acpi.h
index de40259b6a..d5326b3227 100644
--- a/xen/include/public/arch-x86/guest-acpi.h
+++ b/xen/include/public/arch-x86/guest-acpi.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_GUEST_ACPI_H__
-#define __XEN_PUBLIC_ARCH_X86_GUEST_ACPI_H__
+#ifndef PUBLIC__ARCH_X86__GUEST_ACPI_H
+#define PUBLIC__ARCH_X86__GUEST_ACPI_H
 
 #ifdef __XEN_TOOLS__
 
@@ -20,7 +20,7 @@
 
 #endif /* __XEN_TOOLS__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_GUEST_ACPI_H__ */
+#endif /* PUBLIC__ARCH_X86__GUEST_ACPI_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/public/arch-x86/hvm/save.h
index 7ecacadde1..9763dadbb6 100644
--- a/xen/include/public/arch-x86/hvm/save.h
+++ b/xen/include/public/arch-x86/hvm/save.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2007 XenSource Ltd.
  */
 
-#ifndef __XEN_PUBLIC_HVM_SAVE_X86_H__
-#define __XEN_PUBLIC_HVM_SAVE_X86_H__
+#ifndef PUBLIC__ARCH_X86__HVM__SAVE_H
+#define PUBLIC__ARCH_X86__HVM__SAVE_H
 
 #include "../../xen.h"
 
@@ -631,7 +631,7 @@ struct hvm_msr {
  */
 #define HVM_SAVE_CODE_MAX 20
 
-#endif /* __XEN_PUBLIC_HVM_SAVE_X86_H__ */
+#endif /* PUBLIC__ARCH_X86__HVM__SAVE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/hvm/start_info.h b/xen/include/public/arch-x86/hvm/start_info.h
index e33557c0b4..ce5486e8a1 100644
--- a/xen/include/public/arch-x86/hvm/start_info.h
+++ b/xen/include/public/arch-x86/hvm/start_info.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2016, Citrix Systems, Inc.
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_HVM_START_INFO_H__
-#define __XEN_PUBLIC_ARCH_X86_HVM_START_INFO_H__
+#ifndef PUBLIC__ARCH_X86__HVM__START_INFO_H
+#define PUBLIC__ARCH_X86__HVM__START_INFO_H
 
 /*
  * Start of day structure passed to PVH guests and to HVM guests in %ebx.
@@ -139,4 +139,4 @@ struct hvm_memmap_table_entry {
     uint32_t reserved;          /* Must be zero for Version 1.               */
 };
 
-#endif /* __XEN_PUBLIC_ARCH_X86_HVM_START_INFO_H__ */
+#endif /* PUBLIC__ARCH_X86__HVM__START_INFO_H */
diff --git a/xen/include/public/arch-x86/pmu.h b/xen/include/public/arch-x86/pmu.h
index d0a99268af..4eaab67725 100644
--- a/xen/include/public/arch-x86/pmu.h
+++ b/xen/include/public/arch-x86/pmu.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2015 Oracle and/or its affiliates. All rights reserved.
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_PMU_H__
-#define __XEN_PUBLIC_ARCH_X86_PMU_H__
+#ifndef PUBLIC__ARCH_X86__PMU_H
+#define PUBLIC__ARCH_X86__PMU_H
 
 /* x86-specific PMU definitions */
 
@@ -129,7 +129,7 @@ struct xen_pmu_arch {
 typedef struct xen_pmu_arch xen_pmu_arch_t;
 DEFINE_XEN_GUEST_HANDLE(xen_pmu_arch_t);
 
-#endif /* __XEN_PUBLIC_ARCH_X86_PMU_H__ */
+#endif /* PUBLIC__ARCH_X86__PMU_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/public/arch-x86/xen-mca.h b/xen/include/public/arch-x86/xen-mca.h
index bb1b12f14f..fc1c27fa7d 100644
--- a/xen/include/public/arch-x86/xen-mca.h
+++ b/xen/include/public/arch-x86/xen-mca.h
@@ -33,8 +33,8 @@
  *     and tell Xen to trigger a machine check
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_MCA_H__
-#define __XEN_PUBLIC_ARCH_X86_MCA_H__
+#ifndef PUBLIC__ARCH_X86__XEN_MCA_H
+#define PUBLIC__ARCH_X86__XEN_MCA_H
 
 /* Hypercall */
 #define __HYPERVISOR_mca __HYPERVISOR_arch_0
@@ -435,4 +435,4 @@ DEFINE_XEN_GUEST_HANDLE(xen_mc_t);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_MCA_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_MCA_H */
diff --git a/xen/include/public/arch-x86/xen-x86_32.h b/xen/include/public/arch-x86/xen-x86_32.h
index 9e3bf06b12..e6ee09f4f2 100644
--- a/xen/include/public/arch-x86/xen-x86_32.h
+++ b/xen/include/public/arch-x86/xen-x86_32.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004-2007, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_XEN_X86_32_H__
-#define __XEN_PUBLIC_ARCH_X86_XEN_X86_32_H__
+#ifndef PUBLIC__ARCH_X86__XEN_X86_32_H
+#define PUBLIC__ARCH_X86__XEN_X86_32_H
 
 /*
  * Hypercall interface:
@@ -164,7 +164,7 @@ typedef struct xen_callback xen_callback_t;
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_XEN_X86_32_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_X86_32_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/xen-x86_64.h b/xen/include/public/arch-x86/xen-x86_64.h
index 43f6e3d220..f33ca35f26 100644
--- a/xen/include/public/arch-x86/xen-x86_64.h
+++ b/xen/include/public/arch-x86/xen-x86_64.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004-2006, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_XEN_X86_64_H__
-#define __XEN_PUBLIC_ARCH_X86_XEN_X86_64_H__
+#ifndef PUBLIC__ARCH_X86__XEN_X86_64_H
+#define PUBLIC__ARCH_X86__XEN_X86_64_H
 
 /*
  * Hypercall interface:
@@ -211,7 +211,7 @@ typedef unsigned long xen_callback_t;
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_PUBLIC_ARCH_X86_XEN_X86_64_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_X86_64_H */
 
 /*
  * Local variables:
diff --git a/xen/include/public/arch-x86/xen.h b/xen/include/public/arch-x86/xen.h
index fc24879866..4a48057e5c 100644
--- a/xen/include/public/arch-x86/xen.h
+++ b/xen/include/public/arch-x86/xen.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2004-2006, K A Fraser
  */
 
-#ifndef __XEN_PUBLIC_ARCH_X86_XEN_H__
-#define __XEN_PUBLIC_ARCH_X86_XEN_H__
+#ifndef PUBLIC__ARCH_X86__XEN_H
+#define PUBLIC__ARCH_X86__XEN_H
 
 /* Structural guest handles introduced in 0x00030201. */
 #if __XEN_INTERFACE_VERSION__ >= 0x00030201
@@ -363,7 +363,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_msr_entry_t);
  */
 #define XEN_HVM_DEBUGCONS_IOPORT 0xe9
 
-#endif /* __XEN_PUBLIC_ARCH_X86_XEN_H__ */
+#endif /* PUBLIC__ARCH_X86__XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index f43e1a3b21..cef116d8cb 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -1,6 +1,6 @@
 /* Common data structures and functions consumed by hypervisor and toolstack */
-#ifndef XEN_LIB_X86_POLICIES_H
-#define XEN_LIB_X86_POLICIES_H
+#ifndef XEN__LIB__X86__CPU_POLICY_H
+#define XEN__LIB__X86__CPU_POLICY_H
 
 #include <xen/lib/x86/cpuid-autogen.h>
 
@@ -542,7 +542,7 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err);
 
-#endif /* !XEN_LIB_X86_POLICIES_H */
+#endif /* !XEN__LIB__X86__CPU_POLICY_H */
 
 /*
  * Local variables:
diff --git a/xen/lib/x86/private.h b/xen/lib/x86/private.h
index 60bb82a400..bd55647d68 100644
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -1,5 +1,5 @@
-#ifndef XEN_LIB_X86_PRIVATE_H
-#define XEN_LIB_X86_PRIVATE_H
+#ifndef LIB__X86__PRIVATE_H
+#define LIB__X86__PRIVATE_H
 
 #ifdef __XEN__
 
@@ -65,7 +65,7 @@ static inline bool test_bit(unsigned int bit, const void *vaddr)
 
 #endif /* __XEN__ */
 
-#endif /* XEN_LIB_X86_PRIVATE_H */
+#endif /* LIB__X86__PRIVATE_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809693.1222225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ7A-0000jd-Vt; Thu, 03 Oct 2024 17:59:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809693.1222225; Thu, 03 Oct 2024 17:59: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 1swQ7A-0000iA-JK; Thu, 03 Oct 2024 17:59:48 +0000
Received: by outflank-mailman (input) for mailman id 809693;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ78-0006qR-7i
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:46 +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 45031798-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:44 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a8d4979b843so166966266b.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:44 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 45031798-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978383; x=1728583183; 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=ihqfJnptAe3gMr73Ctv/JCvxYIXJfjbjM0EEMcUbg4M=;
        b=lP4LdnwjBaZlNMBWkz03XsvWzeSmG4YcS2ZUrYV9ajH54dBcFgghhRS9QSkIs+wbdm
         KaYDA3+9TEnbq8/o7GumS0Y6BlzLShM8eR/wOlVVGKrco60JTVzYFIlwqQLVlUYdrocE
         0B3zBgkAccr5gGANx3O4mZTNLRtLAStuRspQs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978383; x=1728583183;
        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=ihqfJnptAe3gMr73Ctv/JCvxYIXJfjbjM0EEMcUbg4M=;
        b=hpFWlZSpnk1YSigq0u8DfPhym5Ltdzj/z8812QWyxf1E7ff9PznH31Mw4Dtjn9C49B
         mV8VZtYxsBl5pOXD5TiXqloZzJPKCJGmgLBjZ0u+lgeOXmXn7xiuDfCLaGQUtDVpXFMQ
         ms/3tePnYCkfPDDQahbhjRXultU1O9VxhDYfSsaR6JtjMw+fYf05kYuetS7defWePpJs
         tJTCmRSQTGxRSfdFlWa+p/oS68VEKWQPsXQTcImlBBLXMEwXr9quKmjAsKh9qZoJgAGl
         DfW1nwEZNGpIwYRoQSC7svzdstIz3XMOrZ5S/clYPrrSjOcqxhu48e0B83LQmx8UCmMK
         CIAQ==
X-Gm-Message-State: AOJu0Ywlk6rSUNPx4BVHtgGKkLMq4S+iFfe7TpX1/+XdGGA+p0gNQ5/2
	6IcKwh28B3RfAvg3oiqMhCPDXzasQR/SOnDDYaiLsVZ6vdAI2T/tm9AOx6tZVbyDimOzc+hixWf
	5
X-Google-Smtp-Source: AGHT+IGsa/j+QFla8M0rMNXnvjdlmaRtM5F4pbIuE59B58KCqATfQ67JHFB/hHRps6Jjdmgv3oj8tw==
X-Received: by 2002:a17:906:bc1d:b0:a8a:926a:d02a with SMTP id a640c23a62f3a-a991bfe3771mr18674266b.49.1727978383212;
        Thu, 03 Oct 2024 10:59:43 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH v2 11/19] xen: Update header guards - Kconfig
Date: Thu,  3 Oct 2024 18:59:11 +0100
Message-Id: <20241003175919.472774-12-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to Kconfig.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/tools/kconfig/expr.h   | 6 +++---
 xen/tools/kconfig/images.h | 6 +++---
 xen/tools/kconfig/list.h   | 4 ++--
 xen/tools/kconfig/lkc.h    | 6 +++---
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/xen/tools/kconfig/expr.h b/xen/tools/kconfig/expr.h
index 017843c9a4..044e88deac 100644
--- a/xen/tools/kconfig/expr.h
+++ b/xen/tools/kconfig/expr.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef EXPR_H
-#define EXPR_H
+#ifndef TOOLS__KCONFIG__EXPR_H
+#define TOOLS__KCONFIG__EXPR_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -329,4 +329,4 @@ static inline int expr_is_no(struct expr *e)
 }
 #endif
 
-#endif /* EXPR_H */
+#endif /* TOOLS__KCONFIG__EXPR_H */
diff --git a/xen/tools/kconfig/images.h b/xen/tools/kconfig/images.h
index d8ff614bd0..4093e881db 100644
--- a/xen/tools/kconfig/images.h
+++ b/xen/tools/kconfig/images.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef IMAGES_H
-#define IMAGES_H
+#ifndef TOOLS__KCONFIG__IMAGES_H
+#define TOOLS__KCONFIG__IMAGES_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -30,4 +30,4 @@ extern const char *xpm_void[];
 }
 #endif
 
-#endif /* IMAGES_H */
+#endif /* TOOLS__KCONFIG__IMAGES_H */
diff --git a/xen/tools/kconfig/list.h b/xen/tools/kconfig/list.h
index 45cb237ab7..5d30f91282 100644
--- a/xen/tools/kconfig/list.h
+++ b/xen/tools/kconfig/list.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef LIST_H
-#define LIST_H
+#ifndef TOOLS__KCONFIG__LIST_H
+#define TOOLS__KCONFIG__LIST_H
 
 /*
  * Copied from include/linux/...
diff --git a/xen/tools/kconfig/lkc.h b/xen/tools/kconfig/lkc.h
index 4fb16f3166..aee4a94696 100644
--- a/xen/tools/kconfig/lkc.h
+++ b/xen/tools/kconfig/lkc.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef LKC_H
-#define LKC_H
+#ifndef TOOLS__KCONFIG__LKC_H
+#define TOOLS__KCONFIG__LKC_H
 
 #include "expr.h"
 
@@ -155,4 +155,4 @@ static inline bool sym_has_value(struct symbol *sym)
 }
 #endif
 
-#endif /* LKC_H */
+#endif /* TOOLS__KCONFIG__LKC_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809692.1222232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ7C-0000q2-0P; Thu, 03 Oct 2024 17:59:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809692.1222232; Thu, 03 Oct 2024 17:59: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 1swQ7B-0000nl-7g; Thu, 03 Oct 2024 17:59:49 +0000
Received: by outflank-mailman (input) for mailman id 809692;
 Thu, 03 Oct 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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ78-0006hm-6G
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59: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 4605101e-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:45 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso253479166b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:45 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4605101e-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978385; x=1728583185; 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=hmh1hzNwt6VpdcbBHHPmRW3VApkcv+IYe7HOfAX1NVQ=;
        b=CXm7rBu50VRVP3GgMJoKjetMVlTcXzvnfXUzNO9IdoJJNc9eGPNieU75xyMYvfW4L7
         3mJ2nCsAelZCjFjx+mdVRXWKHHX9LGa0w++GboYHrwAYldYyTL/w0LnVCBclSFl8WYgi
         XKAvJt90GNKaj+MU6zzaqBo3MtUgPGdjgbJYE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978385; x=1728583185;
        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=hmh1hzNwt6VpdcbBHHPmRW3VApkcv+IYe7HOfAX1NVQ=;
        b=BeCSb+6EHVyMWCdvxmESMebhx2a2fEPxb2h+pcbKjAPS0pMMqF9GEFyNrbOEMnadGB
         q6LDBT4DrGh7mWso1AvYu8Lk4dxC9laYMmGtlvg1RcMsNYwk3OFikecBX76HP84is5+F
         CNRo0r8LK5RTsUcWJKYYxxZGKPij50yns+O+D9mw9hTzvVU3hSqSQ3s6lm9rbCw8sVEK
         N4UFPgGgAYqX1v7OkxH/4+Usw4DU4J74ToC00Jxvpf7Co2WFNhcD6BiZXebdEQVE/Dpk
         5WzQu872QqW7Pne2U/HIeCIRcD/HSNSj7jBI8aZl54Gzc9Bygsz0iLYjDM6FloZtAQM4
         pirQ==
X-Gm-Message-State: AOJu0YzBBNqFC/8dMyNit8EBk5InqATNCIlWyqAIBKBxjzwLwHEtf/Ho
	0TZQHrDJ8/0edLp8vQHblNndxzVxD+nqtDWUKW54ltoL2boJldG+ftd4Z9pj4DyMBBpaP80quE5
	z
X-Google-Smtp-Source: AGHT+IF8E0i2pM3RnA31sXqNFXuQwlPCOEJWUNe3cd3+KwrwHyE69a8m1EeKMM+8XVB8i/otK88Nig==
X-Received: by 2002:a17:906:db0c:b0:a8d:4954:c209 with SMTP id a640c23a62f3a-a990a21d629mr428305866b.22.1727978384859;
        Thu, 03 Oct 2024 10:59:44 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v2 13/19] xen: Update header guards - Live patch
Date: Thu,  3 Oct 2024 18:59:13 +0100
Message-Id: <20241003175919.472774-14-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to live patching.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/livepatch.h | 6 +++---
 xen/include/xen/livepatch.h          | 6 +++---
 xen/include/xen/livepatch_elf.h      | 6 +++---
 xen/include/xen/livepatch_payload.h  | 6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/include/asm/livepatch.h b/xen/arch/x86/include/asm/livepatch.h
index 00aefd2d63..7f838f418d 100644
--- a/xen/arch/x86/include/asm/livepatch.h
+++ b/xen/arch/x86/include/asm/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_X86_LIVEPATCH_H__
-#define __XEN_X86_LIVEPATCH_H__
+#ifndef ASM__X86__LIVEPATCH_H
+#define ASM__X86__LIVEPATCH_H
 
 #include <xen/sizes.h> /* For SZ_* macros. */
 
@@ -12,7 +12,7 @@
 #define ARCH_LIVEPATCH_RANGE SZ_2G
 #define LIVEPATCH_FEATURE    X86_FEATURE_ALWAYS
 
-#endif /* __XEN_X86_LIVEPATCH_H__ */
+#endif /* ASM__X86__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch.h b/xen/include/xen/livepatch.h
index d074a5bebe..69220ece21 100644
--- a/xen/include/xen/livepatch.h
+++ b/xen/include/xen/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_LIVEPATCH_H__
-#define __XEN_LIVEPATCH_H__
+#ifndef XEN__LIVEPATCH_H
+#define XEN__LIVEPATCH_H
 
 struct livepatch_elf;
 struct livepatch_elf_sec;
@@ -167,7 +167,7 @@ static inline bool is_patch(const void *addr)
 }
 #endif /* CONFIG_LIVEPATCH */
 
-#endif /* __XEN_LIVEPATCH_H__ */
+#endif /* XEN__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch_elf.h b/xen/include/xen/livepatch_elf.h
index 842111e145..bb221aeaa0 100644
--- a/xen/include/xen/livepatch_elf.h
+++ b/xen/include/xen/livepatch_elf.h
@@ -2,8 +2,8 @@
  * Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
 
-#ifndef __XEN_LIVEPATCH_ELF_H__
-#define __XEN_LIVEPATCH_ELF_H__
+#ifndef XEN__LIVEPATCH_ELF_H
+#define XEN__LIVEPATCH_ELF_H
 
 #include <xen/types.h>
 #include <xen/elfstructs.h>
@@ -52,7 +52,7 @@ static inline bool livepatch_elf_ignore_section(const Elf_Shdr *sec)
 {
     return !(sec->sh_flags & SHF_ALLOC);
 }
-#endif /* __XEN_LIVEPATCH_ELF_H__ */
+#endif /* XEN__LIVEPATCH_ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch_payload.h b/xen/include/xen/livepatch_payload.h
index c6dc7cb5fa..f35d8b9d83 100644
--- a/xen/include/xen/livepatch_payload.h
+++ b/xen/include/xen/livepatch_payload.h
@@ -2,8 +2,8 @@
  * Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
 
-#ifndef __XEN_LIVEPATCH_PAYLOAD_H__
-#define __XEN_LIVEPATCH_PAYLOAD_H__
+#ifndef XEN__LIVEPATCH_PAYLOAD_H
+#define XEN__LIVEPATCH_PAYLOAD_H
 #include <xen/virtual_region.h>
 
 /* To contain the ELF Note header. */
@@ -140,7 +140,7 @@ struct payload {
     livepatch_actioncall_t *__attribute__((weak, used)) \
         const livepatch_revert_data_##_fn __section(".livepatch.hooks.revert") = _fn;
 
-#endif /* __XEN_LIVEPATCH_PAYLOAD_H__ */
+#endif /* XEN__LIVEPATCH_PAYLOAD_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809694.1222236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ7D-000117-1l; Thu, 03 Oct 2024 17:59:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809694.1222236; Thu, 03 Oct 2024 17:59: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 1swQ7C-0000xb-42; Thu, 03 Oct 2024 17:59:50 +0000
Received: by outflank-mailman (input) for mailman id 809694;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ79-0006qR-80
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:47 +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 4581093a-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:44 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a8a7cdfdd80so231114266b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:44 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4581093a-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978384; x=1728583184; 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=JzvJYHGLE9z5OUSnbhsIqX8inHPsJLzDP+/krirdPTI=;
        b=E82F/3BuuUPX5pVK4OSGNlbH46hZIGcYeYr1YIy/8aKzHb40pyuwaEe9XLVMiOTLmG
         9CXwJIaHOXwQnqQnkDyslSw6xDaKUrbBM7RG/6A+5lyQWiDs/W/o0+phzcbYrqw9TTZ9
         vYuO7n0YvSqzTdQ5on+9NBPiQ4UiQTTaNAvaQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978384; x=1728583184;
        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=JzvJYHGLE9z5OUSnbhsIqX8inHPsJLzDP+/krirdPTI=;
        b=OGbPaAiAkpmk9FRgeW98eXC1btSAPAAJSPD/EYfCLN7HnqCVOVocBkm/fPGrVMi3EE
         VEQ76JyjgjEmtAJ42JWFxAqd+0UkZOFtbmSmo6BzdEo+AtnSeL6WcnpoDKn+Aikfgw+G
         iSZiZuIWGJjU2WhMN9I8jETWzs2GitZ3ONfVv8jx1nG+2gAvzMHa4Hcix4vM2mTxnMFO
         Lpg6SvLpZQnqnWWfTDdpzJuBf7CMQpH/YGhrIyEGLaT6FQU+8KSxcMkvDIfEuqVJSpbi
         ye7DaXH4ckjlYysdVQBBfDkwrT1WVCEmOuEWUyOuZ9KlrYwI0jC/slbjRibw1/hbeBpX
         iFdg==
X-Gm-Message-State: AOJu0YxkgOwB2gm996Be4ZoGkRaUNhffcU40/gem/WdF07571DLCP/Q9
	4f+L43GjwhvaAYyh/MwrKmAOvcUf3c7ZDzJL8MdkOSsMf6qHoXo/YJKDwyae44m22WrgPM7y3jI
	F
X-Google-Smtp-Source: AGHT+IFsJal4LhQPyoNJwTthAC7oprz0fkM3WUCWYpJdlczXozz3OXAVpILQG/efAwHa4lt8cP2uAw==
X-Received: by 2002:a17:906:cad7:b0:a8d:1774:eb59 with SMTP id a640c23a62f3a-a991bed41a1mr17539266b.54.1727978384019;
        Thu, 03 Oct 2024 10:59:44 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v2 12/19] xen: Update header guards - KEXEC
Date: Thu,  3 Oct 2024 18:59:12 +0100
Message-Id: <20241003175919.472774-13-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to KEXEC.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/kexec.h  | 6 +++---
 xen/include/xen/kimage.h | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/include/xen/kexec.h b/xen/include/xen/kexec.h
index e66eb6a8e5..d9d79902a9 100644
--- a/xen/include/xen/kexec.h
+++ b/xen/include/xen/kexec.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KEXEC_H__
-#define __XEN_KEXEC_H__
+#ifndef XEN__KEXEC_H
+#define XEN__KEXEC_H
 
 #include <xen/keyhandler.h>
 
@@ -94,7 +94,7 @@ static inline void set_kexec_crash_area_size(u64 system_ram) {}
 
 #endif
 
-#endif /* __XEN_KEXEC_H__ */
+#endif /* XEN__KEXEC_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/kimage.h b/xen/include/xen/kimage.h
index 348f07f5c8..139d4366ab 100644
--- a/xen/include/xen/kimage.h
+++ b/xen/include/xen/kimage.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KIMAGE_H__
-#define __XEN_KIMAGE_H__
+#ifndef XEN__KIMAGE_H
+#define XEN__KIMAGE_H
 
 #define IND_DESTINATION  0x1
 #define IND_INDIRECTION  0x2
@@ -55,7 +55,7 @@ int kimage_build_ind(struct kexec_image *image, mfn_t ind_mfn,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_KIMAGE_H__ */
+#endif /* XEN__KIMAGE_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809695.1222244 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ7E-0001HS-0h; Thu, 03 Oct 2024 17:59:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809695.1222244; Thu, 03 Oct 2024 17: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 1swQ7D-0001DR-C6; Thu, 03 Oct 2024 17:59:51 +0000
Received: by outflank-mailman (input) for mailman id 809695;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ7A-0006hm-LJ
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:48 +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 477a2eb7-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:48 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8a789c4fc5so421394166b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:48 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 477a2eb7-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978387; x=1728583187; 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=mwL1uhJmN7KffHDYwBpDV67hA/1FIcvi3fYvuqYkXWg=;
        b=jsujU3eWnBW6phFd7puoD4i2FNrE5TAOTnYTSAeZgbuLy1IAv3CPnBpgZlbF47xNUe
         PjWhZ/5dadbk0UCF77ouBNjP22Mg+elzmh0s0vKBu0k/JVlN/f2Hf7gdt/EsIrTUtNQM
         PQ1/lb1W6nm9bJFGMt5qInzQRZ/rkBqkvAcI0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978387; x=1728583187;
        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=mwL1uhJmN7KffHDYwBpDV67hA/1FIcvi3fYvuqYkXWg=;
        b=qPHz8tdrdfapzrmi/YswdQS20WgTALHFJ5NTMa3GmidqEl1dtKuGXFXlh3jkw6N8m7
         ARz7iYxbPftI4e9ZxZGJnPwM/mM6scTe4K7WOhv7croqJMpmjwFjzZxopwFByVNDbKDJ
         UHpwEkWGzeiLiO+QC7DQBY6n/UJHu+Qoj/uh7/PiiLXzvUmHXzwtLtXADYzERpD1IfX3
         qzVjBW0L+Lwd6F/XByD1edIp8HHYB/Xnn0oapwsmrNIOmVehw/vLE+NanR9QB7uC6HbI
         Cs4UBrPEXx/6uVGBrApavfVdPqJhDb3murZq8EauzgovnSqqxT4jE0fi4Kqh4mfm2J4d
         K80Q==
X-Gm-Message-State: AOJu0YyNu/PmiL1zUa7Iud6v/u/iObfqGzXc/1e+4iwcy7/psan8XrhW
	4dCExGIbBCzSlAqz7Tu4ovrOTtA6vnpieeaanHOm4jv1VBpGkdHRR9RZTXLc2lsq4LiRlISwEfC
	k
X-Google-Smtp-Source: AGHT+IH/jMp30CH9hhi8yh0Pz2E1NauSjcKdNTGYgrC2kz1hvNjODmd8+FR/FgfWmofB1vCALdPbcw==
X-Received: by 2002:a17:907:9806:b0:a8d:5f69:c839 with SMTP id a640c23a62f3a-a990a05ee89mr508082266b.15.1727978387337;
        Thu, 03 Oct 2024 10:59:47 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	Juergen Gross <jgross@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH v2 16/19] xen: Update header guards - Scheduling
Date: Thu,  3 Oct 2024 18:59:16 +0100
Message-Id: <20241003175919.472774-17-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to scheduling.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/common/sched/private.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/common/sched/private.h b/xen/common/sched/private.h
index c0e7c96d24..02ab905412 100644
--- a/xen/common/sched/private.h
+++ b/xen/common/sched/private.h
@@ -5,8 +5,8 @@
  * Portions by Mark Williamson are (C) 2004 Intel Research Cambridge
  */
 
-#ifndef __XEN_SCHED_IF_H__
-#define __XEN_SCHED_IF_H__
+#ifndef COMMON__SCHED__PRIVATE_H
+#define COMMON__SCHED__PRIVATE_H
 
 #include <xen/err.h>
 #include <xen/list.h>
@@ -666,4 +666,4 @@ void cpupool_put(struct cpupool *pool);
 int cpupool_add_domain(struct domain *d, unsigned int poolid);
 void cpupool_rm_domain(struct domain *d);
 
-#endif /* __XEN_SCHED_IF_H__ */
+#endif /* COMMON__SCHED__PRIVATE_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809696.1222255 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ7F-0001ZW-Gz; Thu, 03 Oct 2024 17:59:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809696.1222255; Thu, 03 Oct 2024 17:59: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 1swQ7E-0001Ti-K5; Thu, 03 Oct 2024 17:59:52 +0000
Received: by outflank-mailman (input) for mailman id 809696;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ7A-0006qR-Pe
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:48 +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 46bfd466-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:46 +0200 (CEST)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-53997328633so1942285e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:46 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 46bfd466-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978386; x=1728583186; 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=uNiKQHMX+Ojk5dsTBVr2+d/BQL/jwshybvgP1Qfqj4w=;
        b=KktSV6NWon1z9/AKeUF2ISfFdZb6asNljcKELPpGfCMQ2wQVipLK2DWD5FRD6ajxyy
         7C7/E0pOJupD4sbLU5sr9qgLV7Uh9i5adWh1ReioC5CxOj1WAToWZzul/Lc5JfX2CTX5
         2h/Lm13O2Jvs5wxEyuM2Ft4H/lq4azBddAXFI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978386; x=1728583186;
        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=uNiKQHMX+Ojk5dsTBVr2+d/BQL/jwshybvgP1Qfqj4w=;
        b=sEXdHequ5F4n5qLoyQoInOmUIPBRHBKjLMhkWJD9m96RocBzWwPUllE7n0pl+DaNmc
         Um0oqUC636wQCSNGzp78bw+l6tK0jZr2IPC9sQWi0BiN3ta1EXxTrfXr0Lfa1GKRny1I
         vbmWlBziQOc9POMuN3NoBe+c8ncm1siIus3I/2w51Nas0y37TWpbQ46mwBiB4RRkMUu1
         WIJswrgLrGio9pmzUmfiMsecJL4zMHfeD4jHqWHKtDf5BH5bIW/t4ERcbIMu5KGHfWs5
         2GZT6fYDJ0RTO0FxAirTHdQxJ5oKCzaMgEaaFlZ8EM/LvebTsPOCfi9yBI9NG4yonVPL
         xMNA==
X-Gm-Message-State: AOJu0YxnaAnJGCYvlR5OdDD1klrmx5Dlun3x5ZC0539K6aGI50UUXNxK
	PprIO2/25IQyrgyZ5KTlpd2Jlbqa7kkCkiGjvuoVPty6k+ZCGwNKP//rMMig3792GNMfSxusB0R
	a
X-Google-Smtp-Source: AGHT+IGsRzfrvGY1zVkVAXyBTKkTNj35x39Ck7XQ/SU8Qk5IMioeSZdlIGXGC+pTTd4BRoyAwEkiiA==
X-Received: by 2002:a05:6512:b29:b0:530:ab68:25c5 with SMTP id 2adb3069b0e04-539ab84e022mr224933e87.2.1727978385819;
        Thu, 03 Oct 2024 10:59:45 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH v2 14/19] xen: Update header guards - PPC 64
Date: Thu,  3 Oct 2024 18:59:14 +0100
Message-Id: <20241003175919.472774-15-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to PPC 64.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/ppc/include/asm/asm-defns.h     | 6 +++---
 xen/arch/ppc/include/asm/atomic.h        | 6 +++---
 xen/arch/ppc/include/asm/bitops.h        | 6 +++---
 xen/arch/ppc/include/asm/boot.h          | 6 +++---
 xen/arch/ppc/include/asm/bug.h           | 6 +++---
 xen/arch/ppc/include/asm/byteorder.h     | 6 +++---
 xen/arch/ppc/include/asm/cache.h         | 6 +++---
 xen/arch/ppc/include/asm/config.h        | 6 +++---
 xen/arch/ppc/include/asm/cpufeature.h    | 6 +++---
 xen/arch/ppc/include/asm/current.h       | 6 +++---
 xen/arch/ppc/include/asm/domain.h        | 6 +++---
 xen/arch/ppc/include/asm/early_printk.h  | 6 +++---
 xen/arch/ppc/include/asm/event.h         | 6 +++---
 xen/arch/ppc/include/asm/flushtlb.h      | 6 +++---
 xen/arch/ppc/include/asm/guest_access.h  | 6 +++---
 xen/arch/ppc/include/asm/guest_atomics.h | 6 +++---
 xen/arch/ppc/include/asm/io.h            | 6 +++---
 xen/arch/ppc/include/asm/iommu.h         | 6 +++---
 xen/arch/ppc/include/asm/irq.h           | 6 +++---
 xen/arch/ppc/include/asm/memory.h        | 4 ++--
 xen/arch/ppc/include/asm/mm.h            | 6 +++---
 xen/arch/ppc/include/asm/monitor.h       | 6 +++---
 xen/arch/ppc/include/asm/msr.h           | 6 +++---
 xen/arch/ppc/include/asm/nospec.h        | 6 +++---
 xen/arch/ppc/include/asm/opal-api.h      | 6 +++---
 xen/arch/ppc/include/asm/p2m.h           | 6 +++---
 xen/arch/ppc/include/asm/page-bits.h     | 6 +++---
 xen/arch/ppc/include/asm/page.h          | 6 +++---
 xen/arch/ppc/include/asm/processor.h     | 6 +++---
 xen/arch/ppc/include/asm/regs.h          | 6 +++---
 xen/arch/ppc/include/asm/setup.h         | 6 +++---
 xen/arch/ppc/include/asm/smp.h           | 4 ++--
 xen/arch/ppc/include/asm/spinlock.h      | 6 +++---
 xen/arch/ppc/include/asm/string.h        | 6 +++---
 xen/arch/ppc/include/asm/system.h        | 4 ++--
 xen/arch/ppc/include/asm/time.h          | 6 +++---
 xen/arch/ppc/include/asm/types.h         | 6 +++---
 37 files changed, 108 insertions(+), 108 deletions(-)

diff --git a/xen/arch/ppc/include/asm/asm-defns.h b/xen/arch/ppc/include/asm/asm-defns.h
index e46f0785ad..aaa6dc6152 100644
--- a/xen/arch/ppc/include/asm/asm-defns.h
+++ b/xen/arch/ppc/include/asm/asm-defns.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef _ASM_PPC_ASM_DEFNS_H
-#define _ASM_PPC_ASM_DEFNS_H
+#ifndef ASM__PPC__ASM_DEFNS_H
+#define ASM__PPC__ASM_DEFNS_H
 
 #include <asm/asm-offsets.h>
 #include <xen/linkage.h>
@@ -75,4 +75,4 @@ name:                                                                       \
 #define SAVE_NVGPRS(base)           SAVE_GPRS(14, 31, base)
 #define REST_NVGPRS(base)           REST_GPRS(14, 31, base)
 
-#endif /* _ASM_PPC_ASM_DEFNS_H */
+#endif /* ASM__PPC__ASM_DEFNS_H */
diff --git a/xen/arch/ppc/include/asm/atomic.h b/xen/arch/ppc/include/asm/atomic.h
index fe778579fb..5fe662ff59 100644
--- a/xen/arch/ppc/include/asm/atomic.h
+++ b/xen/arch/ppc/include/asm/atomic.h
@@ -7,8 +7,8 @@
  * Copyright Raptor Engineering LLC
  */
 
-#ifndef _ASM_PPC64_ATOMIC_H_
-#define _ASM_PPC64_ATOMIC_H_
+#ifndef ASM__PPC__ATOMIC_H
+#define ASM__PPC__ATOMIC_H
 
 #include <xen/atomic.h>
 
@@ -382,4 +382,4 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
     return __atomic_add_unless(v, a, u);
 }
 
-#endif /* _ASM_PPC64_ATOMIC_H_ */
+#endif /* ASM__PPC__ATOMIC_H */
diff --git a/xen/arch/ppc/include/asm/bitops.h b/xen/arch/ppc/include/asm/bitops.h
index c942e9432e..2c10a016b7 100644
--- a/xen/arch/ppc/include/asm/bitops.h
+++ b/xen/arch/ppc/include/asm/bitops.h
@@ -7,8 +7,8 @@
  * Reed, Pat McCarthy, Peter Bergner, Anton Blanchard.  They
  * originally took it from the ppc32 code.
  */
-#ifndef _ASM_PPC_BITOPS_H
-#define _ASM_PPC_BITOPS_H
+#ifndef ASM__PPC__BITOPS_H
+#define ASM__PPC__BITOPS_H
 
 #include <asm/memory.h>
 
@@ -126,4 +126,4 @@ static inline int test_and_set_bit(unsigned int nr, volatile void *addr)
 
 #define arch_hweightl(x) __builtin_popcountl(x)
 
-#endif /* _ASM_PPC_BITOPS_H */
+#endif /* ASM__PPC__BITOPS_H */
diff --git a/xen/arch/ppc/include/asm/boot.h b/xen/arch/ppc/include/asm/boot.h
index d62c3ff6e0..7618533712 100644
--- a/xen/arch/ppc/include/asm/boot.h
+++ b/xen/arch/ppc/include/asm/boot.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_BOOT_H
-#define _ASM_PPC_BOOT_H
+#ifndef ASM__PPC__BOOT_H
+#define ASM__PPC__BOOT_H
 
 #include <xen/types.h>
 
@@ -15,4 +15,4 @@ struct opal {
 
 void boot_opal_init(const void *fdt);
 
-#endif /* _ASM_PPC_BOOT_H */
+#endif /* ASM__PPC__BOOT_H */
diff --git a/xen/arch/ppc/include/asm/bug.h b/xen/arch/ppc/include/asm/bug.h
index 35d4568402..019565b0ed 100644
--- a/xen/arch/ppc/include/asm/bug.h
+++ b/xen/arch/ppc/include/asm/bug.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_BUG_H
-#define _ASM_PPC_BUG_H
+#ifndef ASM__PPC__BUG_H
+#define ASM__PPC__BUG_H
 
 #include <xen/stringify.h>
 #include <asm/processor.h>
@@ -24,4 +24,4 @@
 /* TODO: implement this properly */
 #define BUG_FRAME(type, line, ptr, second_frame, msg) do { } while (0)
 
-#endif /* _ASM_PPC_BUG_H */
+#endif /* ASM__PPC__BUG_H */
diff --git a/xen/arch/ppc/include/asm/byteorder.h b/xen/arch/ppc/include/asm/byteorder.h
index 2b5f6b9f63..7a13366e45 100644
--- a/xen/arch/ppc/include/asm/byteorder.h
+++ b/xen/arch/ppc/include/asm/byteorder.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_PPC_BYTEORDER_H
-#define _ASM_PPC_BYTEORDER_H
+#ifndef ASM__PPC__BYTEORDER_H
+#define ASM__PPC__BYTEORDER_H
 
 #define __arch__swab16 __builtin_bswap16
 #define __arch__swab32 __builtin_bswap32
@@ -9,4 +9,4 @@
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* _ASM_PPC_BYTEORDER_H */
+#endif /* ASM__PPC__BYTEORDER_H */
diff --git a/xen/arch/ppc/include/asm/cache.h b/xen/arch/ppc/include/asm/cache.h
index 8a0a6b7b17..561d02e232 100644
--- a/xen/arch/ppc/include/asm/cache.h
+++ b/xen/arch/ppc/include/asm/cache.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_CACHE_H
-#define _ASM_PPC_CACHE_H
+#ifndef ASM__PPC__CACHE_H
+#define ASM__PPC__CACHE_H
 
-#endif /* _ASM_PPC_CACHE_H */
+#endif /* ASM__PPC__CACHE_H */
diff --git a/xen/arch/ppc/include/asm/config.h b/xen/arch/ppc/include/asm/config.h
index 148fb3074d..e472a54689 100644
--- a/xen/arch/ppc/include/asm/config.h
+++ b/xen/arch/ppc/include/asm/config.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __PPC_CONFIG_H__
-#define __PPC_CONFIG_H__
+#ifndef ASM__PPC__CONFIG_H
+#define ASM__PPC__CONFIG_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -58,7 +58,7 @@
 /* ELFv2 ABI mandates 16 byte alignment */
 #define STACK_ALIGN 16
 
-#endif /* __PPC_CONFIG_H__ */
+#endif /* ASM__PPC__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/ppc/include/asm/cpufeature.h b/xen/arch/ppc/include/asm/cpufeature.h
index 1c5946512b..3555a3257f 100644
--- a/xen/arch/ppc/include/asm/cpufeature.h
+++ b/xen/arch/ppc/include/asm/cpufeature.h
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_CPUFEATURE_H__
-#define __ASM_PPC_CPUFEATURE_H__
+#ifndef ASM__PPC__CPUFEATURE_H
+#define ASM__PPC__CPUFEATURE_H
 
 static inline int cpu_nr_siblings(unsigned int cpu)
 {
     return 1;
 }
 
-#endif /* __ASM_PPC_CPUFEATURE_H__ */
+#endif /* ASM__PPC__CPUFEATURE_H */
diff --git a/xen/arch/ppc/include/asm/current.h b/xen/arch/ppc/include/asm/current.h
index e329a548e6..9400c62fcc 100644
--- a/xen/arch/ppc/include/asm/current.h
+++ b/xen/arch/ppc/include/asm/current.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_CURRENT_H__
-#define __ASM_PPC_CURRENT_H__
+#ifndef ASM__PPC__CURRENT_H
+#define ASM__PPC__CURRENT_H
 
 #include <xen/percpu.h>
 
@@ -46,4 +46,4 @@ static inline struct cpu_info *get_cpu_info(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_PPC_CURRENT_H__ */
+#endif /* ASM__PPC__CURRENT_H */
diff --git a/xen/arch/ppc/include/asm/domain.h b/xen/arch/ppc/include/asm/domain.h
index 3a447272c6..66261bdf5a 100644
--- a/xen/arch/ppc/include/asm/domain.h
+++ b/xen/arch/ppc/include/asm/domain.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_DOMAIN_H__
-#define __ASM_PPC_DOMAIN_H__
+#ifndef ASM__PPC__DOMAIN_H
+#define ASM__PPC__DOMAIN_H
 
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
@@ -42,4 +42,4 @@ static inline void update_guest_memory_policy(struct vcpu *v,
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
-#endif /* __ASM_PPC_DOMAIN_H__ */
+#endif /* ASM__PPC__DOMAIN_H */
diff --git a/xen/arch/ppc/include/asm/early_printk.h b/xen/arch/ppc/include/asm/early_printk.h
index d1d8b416f4..61bc48921a 100644
--- a/xen/arch/ppc/include/asm/early_printk.h
+++ b/xen/arch/ppc/include/asm/early_printk.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_EARLY_PRINTK_H
-#define _ASM_PPC_EARLY_PRINTK_H
+#ifndef ASM__PPC__EARLY_PRINTK_H
+#define ASM__PPC__EARLY_PRINTK_H
 
 #include <xen/early_printk.h>
 
@@ -12,4 +12,4 @@ static inline void early_printk_init(void (*putchar)(char)) {}
 static inline void early_printk(const char *s) {}
 #endif
 
-#endif /* _ASM_PPC_EARLY_PRINTK_H */
+#endif /* ASM__PPC__EARLY_PRINTK_H */
diff --git a/xen/arch/ppc/include/asm/event.h b/xen/arch/ppc/include/asm/event.h
index 1b95ee4f61..10f3eaa5fa 100644
--- a/xen/arch/ppc/include/asm/event.h
+++ b/xen/arch/ppc/include/asm/event.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_EVENT_H__
-#define __ASM_PPC_EVENT_H__
+#ifndef ASM__PPC__EVENT_H
+#define ASM__PPC__EVENT_H
 
 #include <xen/lib.h>
 
@@ -33,4 +33,4 @@ static inline void local_event_delivery_enable(void)
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_PPC_EVENT_H__ */
+#endif /* ASM__PPC__EVENT_H */
diff --git a/xen/arch/ppc/include/asm/flushtlb.h b/xen/arch/ppc/include/asm/flushtlb.h
index afcb740783..39a8f04695 100644
--- a/xen/arch/ppc/include/asm/flushtlb.h
+++ b/xen/arch/ppc/include/asm/flushtlb.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_FLUSHTLB_H__
-#define __ASM_PPC_FLUSHTLB_H__
+#ifndef ASM__PPC__FLUSHTLB_H
+#define ASM__PPC__FLUSHTLB_H
 
 #include <xen/cpumask.h>
 
@@ -21,4 +21,4 @@ static inline void page_set_tlbflush_timestamp(struct page_info *page)
 /* Flush specified CPUs' TLBs */
 void arch_flush_tlb_mask(const cpumask_t *mask);
 
-#endif /* __ASM_PPC_FLUSHTLB_H__ */
+#endif /* ASM__PPC__FLUSHTLB_H */
diff --git a/xen/arch/ppc/include/asm/guest_access.h b/xen/arch/ppc/include/asm/guest_access.h
index 6546931911..a4531b0e19 100644
--- a/xen/arch/ppc/include/asm/guest_access.h
+++ b/xen/arch/ppc/include/asm/guest_access.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_GUEST_ACCESS_H__
-#define __ASM_PPC_GUEST_ACCESS_H__
+#ifndef ASM__PPC__GUEST_ACCESS_H
+#define ASM__PPC__GUEST_ACCESS_H
 
 #include <xen/mm.h>
 
@@ -65,4 +65,4 @@ static inline int access_guest_memory_by_gpa(
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_PPC_GUEST_ACCESS_H__ */
+#endif /* ASM__PPC__GUEST_ACCESS_H */
diff --git a/xen/arch/ppc/include/asm/guest_atomics.h b/xen/arch/ppc/include/asm/guest_atomics.h
index 1190e10bbb..62b229c2dc 100644
--- a/xen/arch/ppc/include/asm/guest_atomics.h
+++ b/xen/arch/ppc/include/asm/guest_atomics.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_GUEST_ATOMICS_H__
-#define __ASM_PPC_GUEST_ATOMICS_H__
+#ifndef ASM__PPC__GUEST_ATOMICS_H
+#define ASM__PPC__GUEST_ATOMICS_H
 
 #include <xen/lib.h>
 
@@ -20,4 +20,4 @@
 #define guest_test_and_clear_bit(d, nr, p)  unimplemented_guest_bit_op(d, nr, p)
 #define guest_test_and_change_bit(d, nr, p) unimplemented_guest_bit_op(d, nr, p)
 
-#endif /* __ASM_PPC_GUEST_ATOMICS_H__ */
+#endif /* ASM__PPC__GUEST_ATOMICS_H */
diff --git a/xen/arch/ppc/include/asm/io.h b/xen/arch/ppc/include/asm/io.h
index 85b5b27157..5135678f61 100644
--- a/xen/arch/ppc/include/asm/io.h
+++ b/xen/arch/ppc/include/asm/io.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IO_H__
-#define __ASM_PPC_IO_H__
+#ifndef ASM__PPC__IO_H
+#define ASM__PPC__IO_H
 
 #include <xen/lib.h>
 
@@ -13,4 +13,4 @@
 #define writew(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 #define writel(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 
-#endif /* __ASM_PPC_IO_H__ */
+#endif /* ASM__PPC__IO_H */
diff --git a/xen/arch/ppc/include/asm/iommu.h b/xen/arch/ppc/include/asm/iommu.h
index 024ead3473..c28c9897f9 100644
--- a/xen/arch/ppc/include/asm/iommu.h
+++ b/xen/arch/ppc/include/asm/iommu.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IOMMU_H__
-#define __ASM_PPC_IOMMU_H__
+#ifndef ASM__PPC__IOMMU_H
+#define ASM__PPC__IOMMU_H
 
 struct arch_iommu {
 };
 
-#endif /* __ASM_PPC_IOMMU_H__ */
+#endif /* ASM__PPC__IOMMU_H */
diff --git a/xen/arch/ppc/include/asm/irq.h b/xen/arch/ppc/include/asm/irq.h
index 5c37d0cf25..ceddf645ed 100644
--- a/xen/arch/ppc/include/asm/irq.h
+++ b/xen/arch/ppc/include/asm/irq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IRQ_H__
-#define __ASM_PPC_IRQ_H__
+#ifndef ASM__PPC__IRQ_H
+#define ASM__PPC__IRQ_H
 
 #include <xen/lib.h>
 #include <xen/device_tree.h>
@@ -30,4 +30,4 @@ static inline int platform_get_irq(const struct dt_device_node *device, int inde
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_PPC_IRQ_H__ */
+#endif /* ASM__PPC__IRQ_H */
diff --git a/xen/arch/ppc/include/asm/memory.h b/xen/arch/ppc/include/asm/memory.h
index 57310eb690..9ddf9f8a50 100644
--- a/xen/arch/ppc/include/asm/memory.h
+++ b/xen/arch/ppc/include/asm/memory.h
@@ -5,8 +5,8 @@
  * Authors: Jimi Xenidis <jimix@watson.ibm.com>
  */
 
-#ifndef _ASM_MEMORY_H_
-#define _ASM_MEMORY_H_
+#ifndef ASM__PPC__MEMORY_H
+#define ASM__PPC__MEMORY_H
 
 #define PPC_ATOMIC_ENTRY_BARRIER "sync\n"
 #define PPC_ATOMIC_EXIT_BARRIER  "sync\n"
diff --git a/xen/arch/ppc/include/asm/mm.h b/xen/arch/ppc/include/asm/mm.h
index a433936076..acc2be8eed 100644
--- a/xen/arch/ppc/include/asm/mm.h
+++ b/xen/arch/ppc/include/asm/mm.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_MM_H
-#define _ASM_PPC_MM_H
+#ifndef ASM__PPC__MM_H
+#define ASM__PPC__MM_H
 
 #include <public/xen.h>
 #include <xen/pdx.h>
@@ -256,4 +256,4 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return true;
 }
 
-#endif /* _ASM_PPC_MM_H */
+#endif /* ASM__PPC__MM_H */
diff --git a/xen/arch/ppc/include/asm/monitor.h b/xen/arch/ppc/include/asm/monitor.h
index 89000dacc6..8fe1f081bc 100644
--- a/xen/arch/ppc/include/asm/monitor.h
+++ b/xen/arch/ppc/include/asm/monitor.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Derived from xen/arch/arm/include/asm/monitor.h */
-#ifndef __ASM_PPC_MONITOR_H__
-#define __ASM_PPC_MONITOR_H__
+#ifndef ASM__PPC__MONITOR_H
+#define ASM__PPC__MONITOR_H
 
 #include <public/domctl.h>
 #include <xen/errno.h>
@@ -14,4 +14,4 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
     return 0;
 }
 
-#endif /* __ASM_PPC_MONITOR_H__ */
+#endif /* ASM__PPC__MONITOR_H */
diff --git a/xen/arch/ppc/include/asm/msr.h b/xen/arch/ppc/include/asm/msr.h
index 144511e5c3..796158c6f9 100644
--- a/xen/arch/ppc/include/asm/msr.h
+++ b/xen/arch/ppc/include/asm/msr.h
@@ -7,8 +7,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_PPC_MSR_H
-#define _ASM_PPC_MSR_H
+#ifndef ASM__PPC__MSR_H
+#define ASM__PPC__MSR_H
 
 #include <xen/const.h>
 
@@ -48,4 +48,4 @@
 #define MSR_TRAP_NEXT   _AC(0x0000000000010000, ULL) /* PC is next instruction */
 #define MSR_TRAP_BITS  (MSR_TRAP_FE|MSR_TRAP_IOP|MSR_TRAP_PRIV|MSR_TRAP)
 
-#endif /* _ASM_PPC_MSR_H */
+#endif /* ASM__PPC__MSR_H */
diff --git a/xen/arch/ppc/include/asm/nospec.h b/xen/arch/ppc/include/asm/nospec.h
index b97322e48d..8f5be95ddd 100644
--- a/xen/arch/ppc/include/asm/nospec.h
+++ b/xen/arch/ppc/include/asm/nospec.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* From arch/arm/include/asm/nospec.h. */
-#ifndef __ASM_PPC_NOSPEC_H__
-#define __ASM_PPC_NOSPEC_H__
+#ifndef ASM__PPC__NOSPEC_H
+#define ASM__PPC__NOSPEC_H
 
 static inline bool evaluate_nospec(bool condition)
 {
@@ -12,4 +12,4 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* __ASM_PPC_NOSPEC_H__ */
+#endif /* ASM__PPC__NOSPEC_H */
diff --git a/xen/arch/ppc/include/asm/opal-api.h b/xen/arch/ppc/include/asm/opal-api.h
index 8790246f48..2507f6c96a 100644
--- a/xen/arch/ppc/include/asm/opal-api.h
+++ b/xen/arch/ppc/include/asm/opal-api.h
@@ -5,8 +5,8 @@
  * Copyright 2011-2015 IBM Corp.
  */
 
-#ifndef __OPAL_API_H
-#define __OPAL_API_H
+#ifndef ASM__PPC__OPAL_API_H
+#define ASM__PPC__OPAL_API_H
 
 /****** OPAL APIs ******/
 
@@ -1187,4 +1187,4 @@ struct opal_mpipl_fadump {
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __OPAL_API_H */
+#endif /* ASM__PPC__OPAL_API_H */
diff --git a/xen/arch/ppc/include/asm/p2m.h b/xen/arch/ppc/include/asm/p2m.h
index f144ef8e1a..9649d24621 100644
--- a/xen/arch/ppc/include/asm/p2m.h
+++ b/xen/arch/ppc/include/asm/p2m.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PPC_P2M_H__
-#define __ASM_PPC_P2M_H__
+#ifndef ASM__PPC__P2M_H
+#define ASM__PPC__P2M_H
 
 #include <asm/page-bits.h>
 
@@ -93,4 +93,4 @@ static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
     /* Not supported on PPC. */
 }
 
-#endif /* __ASM_PPC_P2M_H__ */
+#endif /* ASM__PPC__P2M_H */
diff --git a/xen/arch/ppc/include/asm/page-bits.h b/xen/arch/ppc/include/asm/page-bits.h
index 0286177520..07c7314dac 100644
--- a/xen/arch/ppc/include/asm/page-bits.h
+++ b/xen/arch/ppc/include/asm/page-bits.h
@@ -1,8 +1,8 @@
-#ifndef __PPC_PAGE_BITS_H__
-#define __PPC_PAGE_BITS_H__
+#ifndef ASM__PPC__PAGE_BITS_H
+#define ASM__PPC__PAGE_BITS_H
 
 #define PAGE_SHIFT              16 /* 64 KiB Pages */
 #define PADDR_BITS              53
 #define VADDR_BITS              52
 
-#endif /* __PPC_PAGE_BITS_H__ */
+#endif /* ASM__PPC__PAGE_BITS_H */
diff --git a/xen/arch/ppc/include/asm/page.h b/xen/arch/ppc/include/asm/page.h
index 6d4cd2611c..5bca13079e 100644
--- a/xen/arch/ppc/include/asm/page.h
+++ b/xen/arch/ppc/include/asm/page.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_PAGE_H
-#define _ASM_PPC_PAGE_H
+#ifndef ASM__PPC__PAGE_H
+#define ASM__PPC__PAGE_H
 
 #include <xen/bitops.h>
 #include <xen/types.h>
@@ -196,4 +196,4 @@ static inline void flush_page_to_ram(unsigned long mfn, bool sync_icache)
     BUG_ON("unimplemented");
 }
 
-#endif /* _ASM_PPC_PAGE_H */
+#endif /* ASM__PPC__PAGE_H */
diff --git a/xen/arch/ppc/include/asm/processor.h b/xen/arch/ppc/include/asm/processor.h
index a01b62b8a4..e60278d112 100644
--- a/xen/arch/ppc/include/asm/processor.h
+++ b/xen/arch/ppc/include/asm/processor.h
@@ -9,8 +9,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_PPC_PROCESSOR_H
-#define _ASM_PPC_PROCESSOR_H
+#ifndef ASM__PPC__PROCESSOR_H
+#define ASM__PPC__PROCESSOR_H
 
 #define IOBMP_BYTES          8192
 #define IOBMP_INVALID_OFFSET 0x8000
@@ -221,4 +221,4 @@ static inline void noreturn die(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_PPC_PROCESSOR_H */
+#endif /* ASM__PPC__PROCESSOR_H */
diff --git a/xen/arch/ppc/include/asm/regs.h b/xen/arch/ppc/include/asm/regs.h
index cbf1a9c8e4..827eb48ca1 100644
--- a/xen/arch/ppc/include/asm/regs.h
+++ b/xen/arch/ppc/include/asm/regs.h
@@ -6,8 +6,8 @@
  *          Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
  */
 
-#ifndef _ASM_REG_DEFS_H_
-#define _ASM_REG_DEFS_H_
+#ifndef ASM__PPC__REGS_H
+#define ASM__PPC__REGS_H
 
 /* Special Purpose Registers */
 #define SPRN_VRSAVE 256
@@ -121,4 +121,4 @@
 #define   LPCR_UPRT		_AC(0x0000000000400000, UL)      /* Use Process Table (ISA 3) */
 #define   LPCR_HR		_AC(0x0000000000100000, UL)
 
-#endif /* _ASM_REG_DEFS_H_ */
+#endif /* ASM__PPC__REGS_H */
diff --git a/xen/arch/ppc/include/asm/setup.h b/xen/arch/ppc/include/asm/setup.h
index e4f64879b6..34586d0965 100644
--- a/xen/arch/ppc/include/asm/setup.h
+++ b/xen/arch/ppc/include/asm/setup.h
@@ -1,6 +1,6 @@
-#ifndef __ASM_PPC_SETUP_H__
-#define __ASM_PPC_SETUP_H__
+#ifndef ASM__PPC__SETUP_H
+#define ASM__PPC__SETUP_H
 
 #define max_init_domid (0)
 
-#endif /* __ASM_PPC_SETUP_H__ */
+#endif /* ASM__PPC__SETUP_H */
diff --git a/xen/arch/ppc/include/asm/smp.h b/xen/arch/ppc/include/asm/smp.h
index 7b1517ce18..fb61b8daa4 100644
--- a/xen/arch/ppc/include/asm/smp.h
+++ b/xen/arch/ppc/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__PPC__SMP_H
+#define ASM__PPC__SMP_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
diff --git a/xen/arch/ppc/include/asm/spinlock.h b/xen/arch/ppc/include/asm/spinlock.h
index 4bdb4b1e98..890e48c6e6 100644
--- a/xen/arch/ppc/include/asm/spinlock.h
+++ b/xen/arch/ppc/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__PPC__SPINLOCK_H
+#define ASM__PPC__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__PPC__SPINLOCK_H */
diff --git a/xen/arch/ppc/include/asm/string.h b/xen/arch/ppc/include/asm/string.h
index 7a420e05e4..cf65ca1c73 100644
--- a/xen/arch/ppc/include/asm/string.h
+++ b/xen/arch/ppc/include/asm/string.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_STRING_H
-#define _ASM_PPC_STRING_H
+#ifndef ASM__PPC__STRING_H
+#define ASM__PPC__STRING_H
 
-#endif /* _ASM_PPC_STRING_H */
+#endif /* ASM__PPC__STRING_H */
diff --git a/xen/arch/ppc/include/asm/system.h b/xen/arch/ppc/include/asm/system.h
index a17072bafd..e69a237d5e 100644
--- a/xen/arch/ppc/include/asm/system.h
+++ b/xen/arch/ppc/include/asm/system.h
@@ -7,8 +7,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_SYSTEM_H_
-#define _ASM_SYSTEM_H_
+#ifndef ASM__PPC__SYSTEM_H
+#define ASM__PPC__SYSTEM_H
 
 #include <xen/lib.h>
 #include <asm/memory.h>
diff --git a/xen/arch/ppc/include/asm/time.h b/xen/arch/ppc/include/asm/time.h
index f23eec173e..f0d426a26a 100644
--- a/xen/arch/ppc/include/asm/time.h
+++ b/xen/arch/ppc/include/asm/time.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_TIME_H__
-#define __ASM_PPC_TIME_H__
+#ifndef ASM__PPC__TIME_H
+#define ASM__PPC__TIME_H
 
 #include <xen/bug.h>
 #include <asm/processor.h>
@@ -20,4 +20,4 @@ static inline cycles_t get_cycles(void)
     return mfspr(SPRN_TBRL);
 }
 
-#endif /* __ASM_PPC_TIME_H__ */
+#endif /* ASM__PPC__TIME_H */
diff --git a/xen/arch/ppc/include/asm/types.h b/xen/arch/ppc/include/asm/types.h
index ffaf378a4d..1abd074489 100644
--- a/xen/arch/ppc/include/asm/types.h
+++ b/xen/arch/ppc/include/asm/types.h
@@ -1,11 +1,11 @@
 /* from xen/arch/x86/include/asm/types.h */
 
-#ifndef _ASM_PPC_TYPES_H
-#define _ASM_PPC_TYPES_H
+#ifndef ASM__PPC__TYPES_H
+#define ASM__PPC__TYPES_H
 
 typedef unsigned long paddr_t;
 typedef unsigned long vaddr_t;
 #define INVALID_PADDR (~0UL)
 #define PRIpaddr "016lx"
 
-#endif /* _ASM_PPC_TYPES_H */
+#endif /* ASM__PPC__TYPES_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809697.1222264 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ7H-0001qU-2o; Thu, 03 Oct 2024 17:59:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809697.1222264; Thu, 03 Oct 2024 17:59: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 1swQ7G-0001oY-1i; Thu, 03 Oct 2024 17:59:54 +0000
Received: by outflank-mailman (input) for mailman id 809697;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ7C-0006hm-41
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:50 +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 486bdf4a-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:49 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-5398e33155fso1645286e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:49 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 486bdf4a-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978389; x=1728583189; 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=I3DKuhQNv3MsZ5QX5cGeELREhQ+CQGQiRyTh9z9amE0=;
        b=bHy4dmPcoelWEoBOhVS3z0HTSCJgNdM9Wez4ZGPf3ESUpXW4GsZy/VCpriGVykUIqr
         m8qROKHLl/Mv3ibPPbhjhkUIpi51zv13n6R0CEI0kLINfVOmvbEZc2+9UNAazCBfalkI
         pDa354AuyFx7I1vWrqHBD5K4pnke5KtwW2SnE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978389; x=1728583189;
        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=I3DKuhQNv3MsZ5QX5cGeELREhQ+CQGQiRyTh9z9amE0=;
        b=H4rMEhAXrKp7Rod0B0vKAndPAwtyhPygPwebCGXdI0ZEbb8t+hiUPwSbKKhDSy+00F
         +3G5REUqsILaNQlybzfiWah6J6gd1OStNZ7WStj0yMQgPhsC3wbKA8t0erZP0ZngRtg2
         kKf/pMnWiG5Mm+3BhW+qN/tYMunehnHUkuvKAMtteJtEsxS/1/duh4nMMeYRccDzNCPm
         T41Ta0ox26BhB5mufIH3fuTk+HfUIhgHAz+a896KRG+9v2IVvNNht3ruV2Sh/KBT1212
         o88teTJ3FkxgjC/BIBS6m70rGX9+atYOdLomUn9nnkcDQY+UvSdWjTp/pGQ5KQCZFevG
         SMtQ==
X-Gm-Message-State: AOJu0Yw6wBGH+hgbGr1oWLe7CIWlivfs04SD5PWDscHKNbtvwp923H7F
	4slAYhxso1iO262VGUeQXEoTl+r1qzx3DYXYz9uR0UMiRqVTzh142yVnYPi9jnTDFgkilyvGqTt
	2
X-Google-Smtp-Source: AGHT+IEgc2dbr0BSMP1x4NGiykCn0GUjJ112SZ2c55Eodt+6JL/QgAWOels2q9CWW4SeZrWvLiN0TQ==
X-Received: by 2002:a05:6512:3b24:b0:536:73b5:d971 with SMTP id 2adb3069b0e04-539ab9e1953mr129311e87.38.1727978388874;
        Thu, 03 Oct 2024 10:59:48 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 18/19] xen: Update header guards - VPCI
Date: Thu,  3 Oct 2024 18:59:18 +0100
Message-Id: <20241003175919.472774-19-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to VPCI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/vpci.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 41e7c3bc27..d2d2905447 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_VPCI_H_
-#define _XEN_VPCI_H_
+#ifndef XEN__VPCI_H
+#define XEN__VPCI_H
 
 #ifdef CONFIG_HAS_VPCI
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 17:59:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 17:59:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809698.1222273 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQ7I-00028A-0x; Thu, 03 Oct 2024 17:59:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809698.1222273; Thu, 03 Oct 2024 17: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 1swQ7H-00023m-88; Thu, 03 Oct 2024 17:59:55 +0000
Received: by outflank-mailman (input) for mailman id 809698;
 Thu, 03 Oct 2024 17:59: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ7D-0006hm-Fh
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:51 +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 48ff3ba8-81b1-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 19:59:50 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a7a843bef98so170998766b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:50 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 48ff3ba8-81b1-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978390; x=1728583190; 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=8sG+uwolPFDTJ+3qXbxOoScuyE6ezletDmbjlj5s8lQ=;
        b=Yd9VnqexGwve8lG4+gkvkfm5MsKBfNBWxuMbSHdLaTG6yGorvIvqALGVcAyjVeK/bo
         T4KH3Pr0+nIvmXT7eFarTTzRyjpUBl3Th71SijL/GJ2uEDZ8Psqp3Oipd5iee4NHFzV0
         6bPosoNRZ8H5FLfDVIm8GIRJi1xdPEbp66aaQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978390; x=1728583190;
        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=8sG+uwolPFDTJ+3qXbxOoScuyE6ezletDmbjlj5s8lQ=;
        b=HJpQr1PHM9Tjm89fUGp1qgoDD+uYBMfVUIYXDT9McIDd+iivW9ofJugZ3QEes4wPMu
         6rfb0RaadrxyQONRUl7YstYUiNgb4w38Jp10hOhQB/6z6szinSWt/WMv2gNXFlz05Ucp
         VTah1TpPttuP1XlTPmq1ur7X6AUoCxqUOLZPtxKZqIu6v27cTUbqIDmYKiO9K7/DwI9D
         oeRIXrw1OdxQHuMIy3qfJVXxwMc5Iv2Hr21b8y5dm0TYCxNsxXPxYIqkeQ4Y1FfxEyRU
         UXQg3/+swYEe/uSMjUJybWzHF7knxv9NTHWmG6UUXi34zyfG2b22cDqCKuVm+tNZDY/s
         Bfsw==
X-Gm-Message-State: AOJu0YwEDyzLAZ8czp/ieY84kpa9oRvF+/tB/viEOZiw/LM67wCgupYN
	9AarlaJ8YBbgzqQwCuK0IfF4U9huHr9+ricDVZtBRyMF6CePJdohtJ/ACNExl7P3sTJCFAUxhKb
	u
X-Google-Smtp-Source: AGHT+IEgWoSQ0aJnqg4j2XGVKJSl3oqvHr0O7QATa8KaYT5EXD4zOrmwDGUgzIr+dHtoki5GG7wbJw==
X-Received: by 2002:a17:907:d2d4:b0:a8d:3e67:19fe with SMTP id a640c23a62f3a-a991bdc1169mr16591466b.41.1727978389775;
        Thu, 03 Oct 2024 10:59:49 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH v2 19/19] xen: Update header guards - XSM/Flask
Date: Thu,  3 Oct 2024 18:59:19 +0100
Message-Id: <20241003175919.472774-20-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to XSM/Flask.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xsm/dummy.h             | 6 +++---
 xen/include/xsm/xsm.h               | 4 ++--
 xen/xsm/flask/include/avc.h         | 6 +++---
 xen/xsm/flask/include/avc_ss.h      | 6 +++---
 xen/xsm/flask/include/conditional.h | 4 ++--
 xen/xsm/flask/include/objsec.h      | 6 +++---
 xen/xsm/flask/include/security.h    | 6 +++---
 xen/xsm/flask/private.h             | 6 +++---
 xen/xsm/flask/ss/avtab.h            | 6 +++---
 xen/xsm/flask/ss/conditional.h      | 6 +++---
 xen/xsm/flask/ss/constraint.h       | 6 +++---
 xen/xsm/flask/ss/context.h          | 6 +++---
 xen/xsm/flask/ss/ebitmap.h          | 6 +++---
 xen/xsm/flask/ss/hashtab.h          | 4 ++--
 xen/xsm/flask/ss/mls.h              | 4 ++--
 xen/xsm/flask/ss/mls_types.h        | 6 +++---
 xen/xsm/flask/ss/policydb.h         | 6 +++---
 xen/xsm/flask/ss/services.h         | 6 +++---
 xen/xsm/flask/ss/sidtab.h           | 6 +++---
 xen/xsm/flask/ss/symtab.h           | 6 +++---
 20 files changed, 56 insertions(+), 56 deletions(-)

diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
index 7956f27a29..19d838e1db 100644
--- a/xen/include/xsm/dummy.h
+++ b/xen/include/xsm/dummy.h
@@ -15,8 +15,8 @@
  *  value of action.
  */
 
-#ifndef __XEN_XSM_DUMMY_H__
-#define __XEN_XSM_DUMMY_H__
+#ifndef XSM__DUMMY_H
+#define XSM__DUMMY_H
 
 #include <xen/sched.h>
 #include <xsm/xsm.h>
@@ -847,4 +847,4 @@ static XSM_INLINE int cf_check xsm_domain_resource_map(
     return xsm_default_action(action, current->domain, d);
 }
 
-#endif /* __XEN_XSM_DUMMY_H__ */
+#endif /* XSM__DUMMY_H */
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731..24aa9777db 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -12,8 +12,8 @@
  *  as published by the Free Software Foundation.
  */
 
-#ifndef __XSM_H__
-#define __XSM_H__
+#ifndef XSM__XSM_H
+#define XSM__XSM_H
 
 #include <xen/alternative-call.h>
 #include <xen/sched.h>
diff --git a/xen/xsm/flask/include/avc.h b/xen/xsm/flask/include/avc.h
index e29949f5a8..7510415f2a 100644
--- a/xen/xsm/flask/include/avc.h
+++ b/xen/xsm/flask/include/avc.h
@@ -6,8 +6,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _FLASK_AVC_H_
-#define _FLASK_AVC_H_
+#ifndef XSM__FLASK__INCLUDE__AVC_H
+#define XSM__FLASK__INCLUDE__AVC_H
 
 #include <xen/errno.h>
 #include <xen/lib.h>
@@ -100,5 +100,5 @@ extern unsigned int avc_cache_threshold;
 DECLARE_PER_CPU(struct avc_cache_stats, avc_cache_stats);
 #endif
 
-#endif /* _FLASK_AVC_H_ */
+#endif /* XSM__FLASK__INCLUDE__AVC_H */
 
diff --git a/xen/xsm/flask/include/avc_ss.h b/xen/xsm/flask/include/avc_ss.h
index a3d7d1ef07..dfc8e148e9 100644
--- a/xen/xsm/flask/include/avc_ss.h
+++ b/xen/xsm/flask/include/avc_ss.h
@@ -3,8 +3,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _FLASK_AVC_SS_H_
-#define _FLASK_AVC_SS_H_
+#ifndef XSM__FLASK__INCLUDE__AVC_SS_H
+#define XSM__FLASK__INCLUDE__AVC_SS_H
 
 #include "flask.h"
 
@@ -25,5 +25,5 @@ struct selinux_class_perm {
 
 extern const struct selinux_class_perm selinux_class_perm;
 
-#endif /* _FLASK_AVC_SS_H_ */
+#endif /* XSM__FLASK__INCLUDE__AVC_SS_H */
 
diff --git a/xen/xsm/flask/include/conditional.h b/xen/xsm/flask/include/conditional.h
index 879d40e147..4592875731 100644
--- a/xen/xsm/flask/include/conditional.h
+++ b/xen/xsm/flask/include/conditional.h
@@ -10,8 +10,8 @@
  *    the Free Software Foundation, version 2.
  */
 
-#ifndef _FLASK_CONDITIONAL_H_
-#define _FLASK_CONDITIONAL_H_
+#ifndef XSM__FLASK__INCLUDE__CONDITIONAL_H
+#define XSM__FLASK__INCLUDE__CONDITIONAL_H
 
 #include <xen/types.h>
 
diff --git a/xen/xsm/flask/include/objsec.h b/xen/xsm/flask/include/objsec.h
index b576a5dd43..54be75bcc3 100644
--- a/xen/xsm/flask/include/objsec.h
+++ b/xen/xsm/flask/include/objsec.h
@@ -10,8 +10,8 @@
  *      as published by the Free Software Foundation.
  */
 
-#ifndef _FLASK_OBJSEC_H_
-#define _FLASK_OBJSEC_H_
+#ifndef XSM__FLASK__INCLUDE__OBJSEC_H
+#define XSM__FLASK__INCLUDE__OBJSEC_H
 
 #include <xen/sched.h>
 #include "flask.h"
@@ -23,4 +23,4 @@ struct domain_security_struct {
     u32 target_sid;        /* SID for device model target domain */
 };
 
-#endif /* _FLASK_OBJSEC_H_ */
+#endif /* XSM__FLASK__INCLUDE__OBJSEC_H */
diff --git a/xen/xsm/flask/include/security.h b/xen/xsm/flask/include/security.h
index ec8b442a8f..f6806b28cb 100644
--- a/xen/xsm/flask/include/security.h
+++ b/xen/xsm/flask/include/security.h
@@ -7,8 +7,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _FLASK_SECURITY_H_
-#define _FLASK_SECURITY_H_
+#ifndef XSM__FLASK__INCLUDE__SECURITY_H
+#define XSM__FLASK__INCLUDE__SECURITY_H
 
 #include "flask.h"
 
@@ -107,4 +107,4 @@ int security_ocontext_add(u32 ocontext, unsigned long low,
 int security_ocontext_del(u32 ocontext, unsigned long low, unsigned long high);
 
 int security_devicetree_setlabel(char *path, u32 sid);
-#endif /* _FLASK_SECURITY_H_ */
+#endif /* XSM__FLASK__INCLUDE__SECURITY_H */
diff --git a/xen/xsm/flask/private.h b/xen/xsm/flask/private.h
index 429f213cce..93022627dc 100644
--- a/xen/xsm/flask/private.h
+++ b/xen/xsm/flask/private.h
@@ -1,9 +1,9 @@
-#ifndef XSM_FLASK_PRIVATE
-#define XSM_FLASK_PRIVATE
+#ifndef XSM__FLASK__PRIVATE_H
+#define XSM__FLASK__PRIVATE_H
 
 #include <public/xen.h>
 
 long cf_check do_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op);
 int cf_check compat_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op);
 
-#endif /* XSM_FLASK_PRIVATE */
+#endif /* XSM__FLASK__PRIVATE_H */
diff --git a/xen/xsm/flask/ss/avtab.h b/xen/xsm/flask/ss/avtab.h
index 591604f927..cb595e1250 100644
--- a/xen/xsm/flask/ss/avtab.h
+++ b/xen/xsm/flask/ss/avtab.h
@@ -23,8 +23,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_AVTAB_H_
-#define _SS_AVTAB_H_
+#ifndef XSM__FLASK__SS__AVTAB_H
+#define XSM__FLASK__SS__AVTAB_H
 
 struct avtab_key {
     u16 source_type;    /* source type */
@@ -87,5 +87,5 @@ struct avtab_node *avtab_search_node_next(struct avtab_node *node,
 #define MAX_AVTAB_HASH_MASK (MAX_AVTAB_HASH_BUCKETS-1)
 #define MAX_AVTAB_SIZE MAX_AVTAB_HASH_BUCKETS
 
-#endif    /* _SS_AVTAB_H_ */
+#endif    /* XSM__FLASK__SS__AVTAB_H */
 
diff --git a/xen/xsm/flask/ss/conditional.h b/xen/xsm/flask/ss/conditional.h
index 500fe4305a..4f966c82ed 100644
--- a/xen/xsm/flask/ss/conditional.h
+++ b/xen/xsm/flask/ss/conditional.h
@@ -7,8 +7,8 @@
  *    the Free Software Foundation, version 2.
  */
 
-#ifndef _CONDITIONAL_H_
-#define _CONDITIONAL_H_
+#ifndef XSM__FLASK__SS__CONDITIONAL_H
+#define XSM__FLASK__SS__CONDITIONAL_H
 
 #include "avtab.h"
 #include "symtab.h"
@@ -74,4 +74,4 @@ void cond_compute_av(struct avtab *ctab, struct avtab_key *key, struct av_decisi
 
 int evaluate_cond_node(struct policydb *p, struct cond_node *node);
 
-#endif /* _CONDITIONAL_H_ */
+#endif /* XSM__FLASK__SS__CONDITIONAL_H */
diff --git a/xen/xsm/flask/ss/constraint.h b/xen/xsm/flask/ss/constraint.h
index 0fa5b31237..a0a2156017 100644
--- a/xen/xsm/flask/ss/constraint.h
+++ b/xen/xsm/flask/ss/constraint.h
@@ -12,8 +12,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_CONSTRAINT_H_
-#define _SS_CONSTRAINT_H_
+#ifndef XSM__FLASK__SS__CONSTRAINT_H
+#define XSM__FLASK__SS__CONSTRAINT_H
 
 #include "ebitmap.h"
 
@@ -58,4 +58,4 @@ struct constraint_node {
     struct constraint_node *next;    /* next constraint */
 };
 
-#endif    /* _SS_CONSTRAINT_H_ */
+#endif    /* XSM__FLASK__SS__CONSTRAINT_H */
diff --git a/xen/xsm/flask/ss/context.h b/xen/xsm/flask/ss/context.h
index 311edf8794..d868141699 100644
--- a/xen/xsm/flask/ss/context.h
+++ b/xen/xsm/flask/ss/context.h
@@ -15,8 +15,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_CONTEXT_H_
-#define _SS_CONTEXT_H_
+#ifndef XSM__FLASK__SS__CONTEXT_H
+#define XSM__FLASK__SS__CONTEXT_H
 
 #include "ebitmap.h"
 #include "mls_types.h"
@@ -129,5 +129,5 @@ static inline int context_cmp(struct context *c1, struct context *c2)
         mls_context_cmp(c1, c2));
 }
 
-#endif    /* _SS_CONTEXT_H_ */
+#endif    /* XSM__FLASK__SS__CONTEXT_H */
 
diff --git a/xen/xsm/flask/ss/ebitmap.h b/xen/xsm/flask/ss/ebitmap.h
index 7b2da8179a..8a99f1dd70 100644
--- a/xen/xsm/flask/ss/ebitmap.h
+++ b/xen/xsm/flask/ss/ebitmap.h
@@ -11,8 +11,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_EBITMAP_H_
-#define _SS_EBITMAP_H_
+#ifndef XSM__FLASK__SS__EBITMAP_H
+#define XSM__FLASK__SS__EBITMAP_H
 
 #include <xen/bitmap.h>
 #include <xen/bug.h>
@@ -127,4 +127,4 @@ int ebitmap_set_bit(struct ebitmap *e, unsigned long bit, int value);
 void ebitmap_destroy(struct ebitmap *e);
 int ebitmap_read(struct ebitmap *e, void *fp);
 
-#endif    /* _SS_EBITMAP_H_ */
+#endif    /* XSM__FLASK__SS__EBITMAP_H */
diff --git a/xen/xsm/flask/ss/hashtab.h b/xen/xsm/flask/ss/hashtab.h
index 44ed6c01cf..531b68c9b2 100644
--- a/xen/xsm/flask/ss/hashtab.h
+++ b/xen/xsm/flask/ss/hashtab.h
@@ -7,8 +7,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_HASHTAB_H_
-#define _SS_HASHTAB_H_
+#ifndef XSM__FLASK__SS__HASHTAB_H
+#define XSM__FLASK__SS__HASHTAB_H
 
 #define HASHTAB_MAX_NODES    0xffffffff
 
diff --git a/xen/xsm/flask/ss/mls.h b/xen/xsm/flask/ss/mls.h
index 39572bdf7a..d5cf00c7ae 100644
--- a/xen/xsm/flask/ss/mls.h
+++ b/xen/xsm/flask/ss/mls.h
@@ -11,8 +11,8 @@
  * Copyright (C) 2004-2006 Trusted Computer Solutions, Inc.
  */
 
-#ifndef _SS_MLS_H_
-#define _SS_MLS_H_
+#ifndef XSM__FLASK__SS__MLS_H
+#define XSM__FLASK__SS__MLS_H
 
 #include "context.h"
 #include "policydb.h"
diff --git a/xen/xsm/flask/ss/mls_types.h b/xen/xsm/flask/ss/mls_types.h
index 7199227312..fc392a559d 100644
--- a/xen/xsm/flask/ss/mls_types.h
+++ b/xen/xsm/flask/ss/mls_types.h
@@ -13,8 +13,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_MLS_TYPES_H_
-#define _SS_MLS_TYPES_H_
+#ifndef XSM__FLASK__SS__MLS_TYPES_H
+#define XSM__FLASK__SS__MLS_TYPES_H
 
 #include "security.h"
 
@@ -55,4 +55,4 @@ static inline int mls_level_dom(struct mls_level *l1, struct mls_level *l2)
 (mls_level_dom(&(r2).level[0], &(r1).level[0]) && \
  mls_level_dom(&(r1).level[1], &(r2).level[1]))
 
-#endif    /* _SS_MLS_TYPES_H_ */
+#endif    /* XSM__FLASK__SS__MLS_TYPES_H */
diff --git a/xen/xsm/flask/ss/policydb.h b/xen/xsm/flask/ss/policydb.h
index d3b409a554..8cfbd173b2 100644
--- a/xen/xsm/flask/ss/policydb.h
+++ b/xen/xsm/flask/ss/policydb.h
@@ -23,8 +23,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_POLICYDB_H_
-#define _SS_POLICYDB_H_
+#ifndef XSM__FLASK__SS__POLICYDB_H
+#define XSM__FLASK__SS__POLICYDB_H
 
 #include "symtab.h"
 #include "avtab.h"
@@ -292,5 +292,5 @@ static inline int next_entry(void *buf, struct policy_file *fp, size_t bytes)
     return 0;
 }
 
-#endif    /* _SS_POLICYDB_H_ */
+#endif    /* XSM__FLASK__SS__POLICYDB_H */
 
diff --git a/xen/xsm/flask/ss/services.h b/xen/xsm/flask/ss/services.h
index 43fb876a7c..6282107f47 100644
--- a/xen/xsm/flask/ss/services.h
+++ b/xen/xsm/flask/ss/services.h
@@ -3,13 +3,13 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_SERVICES_H_
-#define _SS_SERVICES_H_
+#ifndef XSM__FLASK__SS__SERVICES_H
+#define XSM__FLASK__SS__SERVICES_H
 
 #include "policydb.h"
 #include "sidtab.h"
 
 extern struct policydb policydb;
 
-#endif    /* _SS_SERVICES_H_ */
+#endif    /* XSM__FLASK__SS__SERVICES_H */
 
diff --git a/xen/xsm/flask/ss/sidtab.h b/xen/xsm/flask/ss/sidtab.h
index 0e48ec6eae..3f1e66334d 100644
--- a/xen/xsm/flask/ss/sidtab.h
+++ b/xen/xsm/flask/ss/sidtab.h
@@ -7,8 +7,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_SIDTAB_H_
-#define _SS_SIDTAB_H_
+#ifndef XSM__FLASK__SS__SIDTAB_H
+#define XSM__FLASK__SS__SIDTAB_H
 
 #include "context.h"
 #include <xen/spinlock.h>
@@ -50,4 +50,4 @@ void sidtab_destroy(struct sidtab *s);
 void sidtab_set(struct sidtab *dst, struct sidtab *src);
 void sidtab_shutdown(struct sidtab *s);
 
-#endif    /* _SS_SIDTAB_H_ */
+#endif    /* XSM__FLASK__SS__SIDTAB_H */
diff --git a/xen/xsm/flask/ss/symtab.h b/xen/xsm/flask/ss/symtab.h
index fc442a2f7e..ed0f0ca6b9 100644
--- a/xen/xsm/flask/ss/symtab.h
+++ b/xen/xsm/flask/ss/symtab.h
@@ -6,8 +6,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_SYMTAB_H_
-#define _SS_SYMTAB_H_
+#ifndef XSM__FLASK__SS__SYMTAB_H
+#define XSM__FLASK__SS__SYMTAB_H
 
 #include "hashtab.h"
 
@@ -18,6 +18,6 @@ struct symtab {
 
 int symtab_init(struct symtab *s, unsigned int size);
 
-#endif    /* _SS_SYMTAB_H_ */
+#endif    /* XSM__FLASK__SS__SYMTAB_H */
 
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:07:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:07:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809730.1222306 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQEr-000102-LS; Thu, 03 Oct 2024 18:07:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809730.1222306; Thu, 03 Oct 2024 18:07: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 1swQEr-0000zv-I4; Thu, 03 Oct 2024 18:07:45 +0000
Received: by outflank-mailman (input) for mailman id 809730;
 Thu, 03 Oct 2024 18: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ7B-0006qR-JT
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:49 +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 47274433-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:47 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8a7cdfdd80so231125666b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:47 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47274433-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978387; x=1728583187; 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=ig/jx3h9dHpZQ51svxnNJO+Mhrf0xrweSMpcWRyQH4o=;
        b=WfaI9+SvCSYDnwICxVJSeJLOYfzlrrKuWUi0+WE+xaVy8GvIbLsBJfNuSyNjHEorY5
         7lP73rKkqeQLMGkzDeN2Dz6a/K1Rbhd+8YRGPAaNXSeG1cf+b0VbYCWSEBmB8EhY5ntP
         BcXlm8zMI9sk3BH8If7EswS54Ngwar1B47ZKU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978387; x=1728583187;
        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=ig/jx3h9dHpZQ51svxnNJO+Mhrf0xrweSMpcWRyQH4o=;
        b=w+16BgREyoFpkmz6OvHfm/k8sTIMDJH8fJjMBor3kVnhQUr/CFDYDXm/B5i1d4iB7Y
         WE58vuQeTGgwegbCxyvq6Z7jdN0BFt5kJknwYjTT716PJNzvikAYpM+Z0jH0uvggWqQV
         DNdVJMS32WRdVgkid1BzgURGIGK0dPAYV+xqDyWftCn8NHEXbaizlMhxYXQfNKdTMalg
         194mqpovTvCE2xF9Kac/TVvZpqFE7PqhqjYRH+dvZ3ywdK/q3oFuarqIK+yCXWSzbMZZ
         hSD19NHZCy6c0cbCD+mzNRlGSsXzZQPhfVHqyx/wr/7v63xF4HWS9dMgpqm7y36J7sdj
         Yt5Q==
X-Gm-Message-State: AOJu0Yw9JH4ufnStNma7p/tS/XNFuOsr5ra+9dZDmMw62smk+3LBkuU/
	qbz3ZV5FEeeuzyvBVU1PQ0p9QRipNirgIjwueGRRGEqmxTkAMwagzXnImgPJ38QXY03jzTLx5DQ
	d
X-Google-Smtp-Source: AGHT+IHGVzCd+81kMMyJ/+XXFaJ441u5w3h3mkiYux37J0nPg4FHR1xIfKlxrr5ovUT1TOORPWXrbg==
X-Received: by 2002:a17:907:e688:b0:a86:7514:e649 with SMTP id a640c23a62f3a-a991bdbe0c2mr19272566b.52.1727978386655;
        Thu, 03 Oct 2024 10:59:46 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH v2 15/19] xen: Update header guards - RISC-V
Date: Thu,  3 Oct 2024 18:59:15 +0100
Message-Id: <20241003175919.472774-16-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to RISC-V.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/riscv/include/asm/acpi.h           | 6 +++---
 xen/arch/riscv/include/asm/asm.h            | 6 +++---
 xen/arch/riscv/include/asm/atomic.h         | 6 +++---
 xen/arch/riscv/include/asm/bitops.h         | 6 +++---
 xen/arch/riscv/include/asm/bug.h            | 6 +++---
 xen/arch/riscv/include/asm/byteorder.h      | 6 +++---
 xen/arch/riscv/include/asm/cache.h          | 6 +++---
 xen/arch/riscv/include/asm/cmpxchg.h        | 6 +++---
 xen/arch/riscv/include/asm/config.h         | 6 +++---
 xen/arch/riscv/include/asm/cpufeature.h     | 6 +++---
 xen/arch/riscv/include/asm/csr.h            | 6 +++---
 xen/arch/riscv/include/asm/current.h        | 6 +++---
 xen/arch/riscv/include/asm/domain.h         | 6 +++---
 xen/arch/riscv/include/asm/early_printk.h   | 6 +++---
 xen/arch/riscv/include/asm/event.h          | 6 +++---
 xen/arch/riscv/include/asm/fence.h          | 6 +++---
 xen/arch/riscv/include/asm/fixmap.h         | 6 +++---
 xen/arch/riscv/include/asm/flushtlb.h       | 6 +++---
 xen/arch/riscv/include/asm/guest_access.h   | 6 +++---
 xen/arch/riscv/include/asm/guest_atomics.h  | 6 +++---
 xen/arch/riscv/include/asm/io.h             | 6 +++---
 xen/arch/riscv/include/asm/irq.h            | 6 +++---
 xen/arch/riscv/include/asm/mm.h             | 6 +++---
 xen/arch/riscv/include/asm/monitor.h        | 6 +++---
 xen/arch/riscv/include/asm/nospec.h         | 6 +++---
 xen/arch/riscv/include/asm/p2m.h            | 6 +++---
 xen/arch/riscv/include/asm/page-bits.h      | 6 +++---
 xen/arch/riscv/include/asm/page.h           | 6 +++---
 xen/arch/riscv/include/asm/pmap.h           | 6 +++---
 xen/arch/riscv/include/asm/processor.h      | 6 +++---
 xen/arch/riscv/include/asm/regs.h           | 6 +++---
 xen/arch/riscv/include/asm/riscv_encoding.h | 4 ++--
 xen/arch/riscv/include/asm/sbi.h            | 6 +++---
 xen/arch/riscv/include/asm/setup.h          | 6 +++---
 xen/arch/riscv/include/asm/smp.h            | 4 ++--
 xen/arch/riscv/include/asm/spinlock.h       | 6 +++---
 xen/arch/riscv/include/asm/string.h         | 6 +++---
 xen/arch/riscv/include/asm/system.h         | 6 +++---
 xen/arch/riscv/include/asm/time.h           | 6 +++---
 xen/arch/riscv/include/asm/traps.h          | 6 +++---
 xen/arch/riscv/include/asm/types.h          | 6 +++---
 41 files changed, 121 insertions(+), 121 deletions(-)

diff --git a/xen/arch/riscv/include/asm/acpi.h b/xen/arch/riscv/include/asm/acpi.h
index 3aef993d81..f0b5e90969 100644
--- a/xen/arch/riscv/include/asm/acpi.h
+++ b/xen/arch/riscv/include/asm/acpi.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef __ASM_RISCV_ACPI_H
-#define __ASM_RISCV_ACPI_H
+#ifndef ASM__RISCV__ACPI_H
+#define ASM__RISCV__ACPI_H
 
-#endif /* __ASM_RISCV_ACPI_H */
+#endif /* ASM__RISCV__ACPI_H */
diff --git a/xen/arch/riscv/include/asm/asm.h b/xen/arch/riscv/include/asm/asm.h
index 87a3fd250b..8b0403e2e4 100644
--- a/xen/arch/riscv/include/asm/asm.h
+++ b/xen/arch/riscv/include/asm/asm.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef _ASM_RISCV_ASM_H
-#define _ASM_RISCV_ASM_H
+#ifndef ASM__RISCV__ASM_H
+#define ASM__RISCV__ASM_H
 
 #ifdef __ASSEMBLY__
 #include <xen/linkage.h>
@@ -52,4 +52,4 @@
 #error "Unexpected __SIZEOF_SHORT__"
 #endif
 
-#endif /* _ASM_RISCV_ASM_H */
+#endif /* ASM__RISCV__ASM_H */
diff --git a/xen/arch/riscv/include/asm/atomic.h b/xen/arch/riscv/include/asm/atomic.h
index 9669a3286d..8e0425cea0 100644
--- a/xen/arch/riscv/include/asm/atomic.h
+++ b/xen/arch/riscv/include/asm/atomic.h
@@ -19,8 +19,8 @@
  * Copyright (C) 2024 Vates SAS
  */
 
-#ifndef _ASM_RISCV_ATOMIC_H
-#define _ASM_RISCV_ATOMIC_H
+#ifndef ASM__RISCV__ATOMIC_H
+#define ASM__RISCV__ATOMIC_H
 
 #include <xen/atomic.h>
 
@@ -266,7 +266,7 @@ ATOMIC_OPS()
 #undef ATOMIC_OPS
 #undef ATOMIC_OP
 
-#endif /* _ASM_RISCV_ATOMIC_H */
+#endif /* ASM__RISCV__ATOMIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bitops.h b/xen/arch/riscv/include/asm/bitops.h
index 7f7af3fda1..9a6f576187 100644
--- a/xen/arch/riscv/include/asm/bitops.h
+++ b/xen/arch/riscv/include/asm/bitops.h
@@ -1,8 +1,8 @@
 /* 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
+#ifndef ASM__RISCV__BITOPS_H
+#define ASM__RISCV__BITOPS_H
 
 #include <asm/system.h>
 
@@ -125,7 +125,7 @@ static inline void clear_bit(int nr, volatile void *p)
 #undef NOT
 #undef __AMO
 
-#endif /* _ASM_RISCV_BITOPS_H */
+#endif /* ASM__RISCV__BITOPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bug.h b/xen/arch/riscv/include/asm/bug.h
index e3d41f411a..fa18dba20e 100644
--- a/xen/arch/riscv/include/asm/bug.h
+++ b/xen/arch/riscv/include/asm/bug.h
@@ -4,8 +4,8 @@
  * Copyright (C) 2021-2023 Vates
  *
  */
-#ifndef _ASM_RISCV_BUG_H
-#define _ASM_RISCV_BUG_H
+#ifndef ASM__RISCV__BUG_H
+#define ASM__RISCV__BUG_H
 
 #ifndef __ASSEMBLY__
 
@@ -32,4 +32,4 @@
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_BUG_H */
+#endif /* ASM__RISCV__BUG_H */
diff --git a/xen/arch/riscv/include/asm/byteorder.h b/xen/arch/riscv/include/asm/byteorder.h
index 320a03c88f..8ca65e1b33 100644
--- a/xen/arch/riscv/include/asm/byteorder.h
+++ b/xen/arch/riscv/include/asm/byteorder.h
@@ -1,11 +1,11 @@
-#ifndef __ASM_RISCV_BYTEORDER_H__
-#define __ASM_RISCV_BYTEORDER_H__
+#ifndef ASM__RISCV__BYTEORDER_H
+#define ASM__RISCV__BYTEORDER_H
 
 #define __BYTEORDER_HAS_U64__
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_RISCV_BYTEORDER_H__ */
+#endif /* ASM__RISCV__BYTEORDER_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/cache.h b/xen/arch/riscv/include/asm/cache.h
index 69573eb051..9a9e5162ab 100644
--- a/xen/arch/riscv/include/asm/cache.h
+++ b/xen/arch/riscv/include/asm/cache.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef _ASM_RISCV_CACHE_H
-#define _ASM_RISCV_CACHE_H
+#ifndef ASM__RISCV__CACHE_H
+#define ASM__RISCV__CACHE_H
 
-#endif /* _ASM_RISCV_CACHE_H */
+#endif /* ASM__RISCV__CACHE_H */
diff --git a/xen/arch/riscv/include/asm/cmpxchg.h b/xen/arch/riscv/include/asm/cmpxchg.h
index 47d5299e62..662d3fd5d4 100644
--- a/xen/arch/riscv/include/asm/cmpxchg.h
+++ b/xen/arch/riscv/include/asm/cmpxchg.h
@@ -1,8 +1,8 @@
 /* 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
+#ifndef ASM__RISCV__CMPXCHG_H
+#define ASM__RISCV__CMPXCHG_H
 
 #include <xen/compiler.h>
 #include <xen/lib.h>
@@ -242,7 +242,7 @@ static always_inline unsigned long __cmpxchg(volatile void *ptr,
               sizeof(*(ptr))); \
 })
 
-#endif /* _ASM_RISCV_CMPXCHG_H */
+#endif /* ASM__RISCV__CMPXCHG_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index 7dbb235685..ef68281653 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_CONFIG_H__
-#define __RISCV_CONFIG_H__
+#ifndef ASM__RISCV__CONFIG_H
+#define ASM__RISCV__CONFIG_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -155,7 +155,7 @@
 
 #define IDENT_AREA_SIZE 64
 
-#endif /* __RISCV_CONFIG_H__ */
+#endif /* ASM__RISCV__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
index c08b7d67ad..41a792b0b2 100644
--- a/xen/arch/riscv/include/asm/cpufeature.h
+++ b/xen/arch/riscv/include/asm/cpufeature.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_CPUFEATURE_H
-#define __ASM_RISCV_CPUFEATURE_H
+#ifndef ASM__RISCV__CPUFEATURE_H
+#define ASM__RISCV__CPUFEATURE_H
 
 #ifndef __ASSEMBLY__
 
@@ -11,7 +11,7 @@ static inline unsigned int cpu_nr_siblings(unsigned int cpu)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_RISCV_CPUFEATURE_H */
+#endif /* ASM__RISCV__CPUFEATURE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/csr.h b/xen/arch/riscv/include/asm/csr.h
index be57dcce1c..775f1f170f 100644
--- a/xen/arch/riscv/include/asm/csr.h
+++ b/xen/arch/riscv/include/asm/csr.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef _ASM_RISCV_CSR_H
-#define _ASM_RISCV_CSR_H
+#ifndef ASM__RISCV__CSR_H
+#define ASM__RISCV__CSR_H
 
 #include <asm/asm.h>
 #include <xen/const.h>
@@ -80,4 +80,4 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_CSR_H */
+#endif /* ASM__RISCV__CSR_H */
diff --git a/xen/arch/riscv/include/asm/current.h b/xen/arch/riscv/include/asm/current.h
index 6f1ec4e190..1485bceea4 100644
--- a/xen/arch/riscv/include/asm/current.h
+++ b/xen/arch/riscv/include/asm/current.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_CURRENT_H
-#define __ASM_CURRENT_H
+#ifndef ASM__RISCV__CURRENT_H
+#define ASM__RISCV__CURRENT_H
 
 #include <xen/bug.h>
 #include <xen/cache.h>
@@ -54,4 +54,4 @@ DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_CURRENT_H */
+#endif /* ASM__RISCV__CURRENT_H */
diff --git a/xen/arch/riscv/include/asm/domain.h b/xen/arch/riscv/include/asm/domain.h
index 027bfa8a93..c3d965a559 100644
--- a/xen/arch/riscv/include/asm/domain.h
+++ b/xen/arch/riscv/include/asm/domain.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_DOMAIN_H__
-#define __ASM_RISCV_DOMAIN_H__
+#ifndef ASM__RISCV__DOMAIN_H
+#define ASM__RISCV__DOMAIN_H
 
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
@@ -39,7 +39,7 @@ static inline void update_guest_memory_policy(struct vcpu *v,
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
-#endif /* __ASM_RISCV_DOMAIN_H__ */
+#endif /* ASM__RISCV__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/early_printk.h b/xen/arch/riscv/include/asm/early_printk.h
index 85e60df33a..2750045bdd 100644
--- a/xen/arch/riscv/include/asm/early_printk.h
+++ b/xen/arch/riscv/include/asm/early_printk.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __EARLY_PRINTK_H__
-#define __EARLY_PRINTK_H__
+#ifndef ASM__RISCV__EARLY_PRINTK_H
+#define ASM__RISCV__EARLY_PRINTK_H
 
 #include <xen/early_printk.h>
 
@@ -11,4 +11,4 @@ void early_printk(const char *str);
 static inline void early_printk(const char *s) {};
 #endif
 
-#endif /* __EARLY_PRINTK_H__ */
+#endif /* ASM__RISCV__EARLY_PRINTK_H */
diff --git a/xen/arch/riscv/include/asm/event.h b/xen/arch/riscv/include/asm/event.h
index fbad8543fa..c7bb8c0fa6 100644
--- a/xen/arch/riscv/include/asm/event.h
+++ b/xen/arch/riscv/include/asm/event.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_EVENT_H__
-#define __ASM_RISCV_EVENT_H__
+#ifndef ASM__RISCV__EVENT_H
+#define ASM__RISCV__EVENT_H
 
 #include <xen/lib.h>
 
@@ -29,7 +29,7 @@ static inline bool arch_virq_is_global(unsigned int virq)
     return true;
 }
 
-#endif /* __ASM_RISCV_EVENT_H__ */
+#endif /* ASM__RISCV__EVENT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/fence.h b/xen/arch/riscv/include/asm/fence.h
index 27f46fa897..edfaac49cd 100644
--- a/xen/arch/riscv/include/asm/fence.h
+++ b/xen/arch/riscv/include/asm/fence.h
@@ -1,9 +1,9 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef _ASM_RISCV_FENCE_H
-#define _ASM_RISCV_FENCE_H
+#ifndef ASM__RISCV__FENCE_H
+#define ASM__RISCV__FENCE_H
 
 #define RISCV_ACQUIRE_BARRIER   "\tfence r , rw\n"
 #define RISCV_RELEASE_BARRIER   "\tfence rw, w\n"
 #define RISCV_FULL_BARRIER      "\tfence rw, rw\n"
 
-#endif	/* _ASM_RISCV_FENCE_H */
+#endif	/* ASM__RISCV__FENCE_H */
diff --git a/xen/arch/riscv/include/asm/fixmap.h b/xen/arch/riscv/include/asm/fixmap.h
index 63732df36c..818c8ce07b 100644
--- a/xen/arch/riscv/include/asm/fixmap.h
+++ b/xen/arch/riscv/include/asm/fixmap.h
@@ -2,8 +2,8 @@
 /*
  * fixmap.h: compile-time virtual memory allocation
  */
-#ifndef ASM_FIXMAP_H
-#define ASM_FIXMAP_H
+#ifndef ASM__RISCV__FIXMAP_H
+#define ASM__RISCV__FIXMAP_H
 
 #include <xen/bug.h>
 #include <xen/page-size.h>
@@ -43,4 +43,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* ASM_FIXMAP_H */
+#endif /* ASM__RISCV__FIXMAP_H */
diff --git a/xen/arch/riscv/include/asm/flushtlb.h b/xen/arch/riscv/include/asm/flushtlb.h
index 43214f5e95..51c8f753c5 100644
--- a/xen/arch/riscv/include/asm/flushtlb.h
+++ b/xen/arch/riscv/include/asm/flushtlb.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_FLUSHTLB_H__
-#define __ASM_RISCV_FLUSHTLB_H__
+#ifndef ASM__RISCV__FLUSHTLB_H
+#define ASM__RISCV__FLUSHTLB_H
 
 #include <xen/bug.h>
 #include <xen/cpumask.h>
@@ -37,7 +37,7 @@ static inline void page_set_tlbflush_timestamp(struct page_info *page)
 /* Flush specified CPUs' TLBs */
 void arch_flush_tlb_mask(const cpumask_t *mask);
 
-#endif /* __ASM_RISCV_FLUSHTLB_H__ */
+#endif /* ASM__RISCV__FLUSHTLB_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/include/asm/guest_access.h
index c55951f538..7cd51fbbde 100644
--- a/xen/arch/riscv/include/asm/guest_access.h
+++ b/xen/arch/riscv/include/asm/guest_access.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_GUEST_ACCESS_H__
-#define __ASM_RISCV_GUEST_ACCESS_H__
+#ifndef ASM__RISCV__GUEST_ACCESS_H
+#define ASM__RISCV__GUEST_ACCESS_H
 
 unsigned long raw_copy_to_guest(void *to, const void *from, unsigned len);
 unsigned long raw_copy_from_guest(void *to, const void *from, unsigned len);
@@ -18,7 +18,7 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_RISCV_GUEST_ACCESS_H__ */
+#endif /* ASM__RISCV__GUEST_ACCESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/guest_atomics.h b/xen/arch/riscv/include/asm/guest_atomics.h
index de54914454..22a7551804 100644
--- a/xen/arch/riscv/include/asm/guest_atomics.h
+++ b/xen/arch/riscv/include/asm/guest_atomics.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_GUEST_ATOMICS_H
-#define __ASM_RISCV_GUEST_ATOMICS_H
+#ifndef ASM__RISCV__GUEST_ATOMICS_H
+#define ASM__RISCV__GUEST_ATOMICS_H
 
 #include <xen/bug.h>
 
@@ -32,7 +32,7 @@ guest_testop(test_and_change_bit)
 
 #define guest_test_bit(d, nr, p) ((void)(d), test_bit(nr, p))
 
-#endif /* __ASM_RISCV_GUEST_ATOMICS_H */
+#endif /* ASM__RISCV__GUEST_ATOMICS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/io.h b/xen/arch/riscv/include/asm/io.h
index 8d9535e973..55f329dde3 100644
--- a/xen/arch/riscv/include/asm/io.h
+++ b/xen/arch/riscv/include/asm/io.h
@@ -35,8 +35,8 @@
  * Copyright (C) 2024 Vates
  */
 
-#ifndef _ASM_RISCV_IO_H
-#define _ASM_RISCV_IO_H
+#ifndef ASM__RISCV__IO_H
+#define ASM__RISCV__IO_H
 
 #include <asm/byteorder.h>
 
@@ -156,7 +156,7 @@ static inline uint64_t __raw_readq(const volatile void __iomem *addr)
 #define writel(v, c)    ({ __io_bw(); writel_cpu(v, c); __io_aw(); })
 #define writeq(v, c)    ({ __io_bw(); writeq_cpu(v, c); __io_aw(); })
 
-#endif /* _ASM_RISCV_IO_H */
+#endif /* ASM__RISCV__IO_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/irq.h b/xen/arch/riscv/include/asm/irq.h
index 0dfd4d6e8a..2a48da2651 100644
--- a/xen/arch/riscv/include/asm/irq.h
+++ b/xen/arch/riscv/include/asm/irq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_IRQ_H__
-#define __ASM_RISCV_IRQ_H__
+#ifndef ASM__RISCV__IRQ_H
+#define ASM__RISCV__IRQ_H
 
 #include <xen/bug.h>
 
@@ -25,7 +25,7 @@ static inline void arch_move_irqs(struct vcpu *v)
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_RISCV_IRQ_H__ */
+#endif /* ASM__RISCV__IRQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index 4b7b00b850..5c79f3def3 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_MM_H
-#define _ASM_RISCV_MM_H
+#ifndef ASM__RISCV__MM_H
+#define ASM__RISCV__MM_H
 
 #include <public/xen.h>
 #include <xen/bug.h>
@@ -261,4 +261,4 @@ void setup_fixmap_mappings(void);
 
 void *early_fdt_map(paddr_t fdt_paddr);
 
-#endif /* _ASM_RISCV_MM_H */
+#endif /* ASM__RISCV__MM_H */
diff --git a/xen/arch/riscv/include/asm/monitor.h b/xen/arch/riscv/include/asm/monitor.h
index f4fe2c0690..fb3d3e8e3a 100644
--- a/xen/arch/riscv/include/asm/monitor.h
+++ b/xen/arch/riscv/include/asm/monitor.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_MONITOR_H__
-#define __ASM_RISCV_MONITOR_H__
+#ifndef ASM__RISCV__MONITOR_H
+#define ASM__RISCV__MONITOR_H
 
 #include <xen/bug.h>
 
@@ -14,7 +14,7 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
     return 0;
 }
 
-#endif /* __ASM_RISCV_MONITOR_H__ */
+#endif /* ASM__RISCV__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/nospec.h b/xen/arch/riscv/include/asm/nospec.h
index e30f0a781b..f9b0241c98 100644
--- a/xen/arch/riscv/include/asm/nospec.h
+++ b/xen/arch/riscv/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (C) 2024 Vates */
 
-#ifndef _ASM_RISCV_NOSPEC_H
-#define _ASM_RISCV_NOSPEC_H
+#ifndef ASM__RISCV__NOSPEC_H
+#define ASM__RISCV__NOSPEC_H
 
 static inline bool evaluate_nospec(bool condition)
 {
@@ -13,7 +13,7 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* _ASM_RISCV_NOSPEC_H */
+#endif /* ASM__RISCV__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 26860c0ae7..28f57a74f2 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_P2M_H__
-#define __ASM_RISCV_P2M_H__
+#ifndef ASM__RISCV__P2M_H
+#define ASM__RISCV__P2M_H
 
 #include <xen/errno.h>
 
@@ -93,7 +93,7 @@ static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
     /* Not supported on RISCV. */
 }
 
-#endif /* __ASM_RISCV_P2M_H__ */
+#endif /* ASM__RISCV__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/page-bits.h b/xen/arch/riscv/include/asm/page-bits.h
index 8f1f474371..788c7d9518 100644
--- a/xen/arch/riscv/include/asm/page-bits.h
+++ b/xen/arch/riscv/include/asm/page-bits.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_PAGE_BITS_H__
-#define __RISCV_PAGE_BITS_H__
+#ifndef ASM__RISCV__PAGE_BITS_H
+#define ASM__RISCV__PAGE_BITS_H
 
 #define PAGE_SHIFT              12 /* 4 KiB Pages */
 #define PADDR_BITS              56 /* 44-bit PPN */
@@ -16,4 +16,4 @@
 
 #define PTE_PPN_SHIFT           10
 
-#endif /* __RISCV_PAGE_BITS_H__ */
+#endif /* ASM__RISCV__PAGE_BITS_H */
diff --git a/xen/arch/riscv/include/asm/page.h b/xen/arch/riscv/include/asm/page.h
index 89fa290697..91b1194b55 100644
--- a/xen/arch/riscv/include/asm/page.h
+++ b/xen/arch/riscv/include/asm/page.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_PAGE_H
-#define _ASM_RISCV_PAGE_H
+#ifndef ASM__RISCV__PAGE_H
+#define ASM__RISCV__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -182,4 +182,4 @@ static inline pte_t pte_from_mfn(mfn_t mfn, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_PAGE_H */
+#endif /* ASM__RISCV__PAGE_H */
diff --git a/xen/arch/riscv/include/asm/pmap.h b/xen/arch/riscv/include/asm/pmap.h
index 60065c996f..146dd29f95 100644
--- a/xen/arch/riscv/include/asm/pmap.h
+++ b/xen/arch/riscv/include/asm/pmap.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef ASM_PMAP_H
-#define ASM_PMAP_H
+#ifndef ASM__RISCV__PMAP_H
+#define ASM__RISCV__PMAP_H
 
 #include <xen/bug.h>
 #include <xen/init.h>
@@ -33,4 +33,4 @@ static inline void __init arch_pmap_unmap(unsigned int slot)
     flush_tlb_one_local(FIXMAP_ADDR(slot));
 }
 
-#endif /* ASM_PMAP_H */
+#endif /* ASM__RISCV__PMAP_H */
diff --git a/xen/arch/riscv/include/asm/processor.h b/xen/arch/riscv/include/asm/processor.h
index e42b353b4c..90b8009563 100644
--- a/xen/arch/riscv/include/asm/processor.h
+++ b/xen/arch/riscv/include/asm/processor.h
@@ -7,8 +7,8 @@
  *
  */
 
-#ifndef _ASM_RISCV_PROCESSOR_H
-#define _ASM_RISCV_PROCESSOR_H
+#ifndef ASM__RISCV__PROCESSOR_H
+#define ASM__RISCV__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 
@@ -93,7 +93,7 @@ static inline void sfence_vma(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_PROCESSOR_H */
+#endif /* ASM__RISCV__PROCESSOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/regs.h b/xen/arch/riscv/include/asm/regs.h
index c70ea2aa0c..218b9455bd 100644
--- a/xen/arch/riscv/include/asm/regs.h
+++ b/xen/arch/riscv/include/asm/regs.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARM_RISCV_REGS_H__
-#define __ARM_RISCV_REGS_H__
+#ifndef ASM__RISCV__REGS_H
+#define ASM__RISCV__REGS_H
 
 #ifndef __ASSEMBLY__
 
@@ -17,7 +17,7 @@ static inline bool guest_mode(const struct cpu_user_regs *r)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_RISCV_REGS_H__ */
+#endif /* ASM__RISCV__REGS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index e31e94e77e..6cc8f4eb45 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -6,8 +6,8 @@
  *   Anup Patel <anup.patel@wdc.com>
  */
 
-#ifndef __RISCV_ENCODING_H__
-#define __RISCV_ENCODING_H__
+#ifndef ASM__RISCV__RISCV_ENCODING_H
+#define ASM__RISCV__RISCV_ENCODING_H
 
 #define _UL(X) _AC(X, UL)
 #define _ULL(X) _AC(X, ULL)
diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
index 5947fed779..527d773277 100644
--- a/xen/arch/riscv/include/asm/sbi.h
+++ b/xen/arch/riscv/include/asm/sbi.h
@@ -9,8 +9,8 @@
  * Copyright (c) 2019 Western Digital Corporation or its affiliates.
  */
 
-#ifndef __ASM_RISCV_SBI_H__
-#define __ASM_RISCV_SBI_H__
+#ifndef ASM__RISCV__SBI_H
+#define ASM__RISCV__SBI_H
 
 #include <xen/cpumask.h>
 
@@ -96,4 +96,4 @@ int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
  */
 int sbi_init(void);
 
-#endif /* __ASM_RISCV_SBI_H__ */
+#endif /* ASM__RISCV__SBI_H */
diff --git a/xen/arch/riscv/include/asm/setup.h b/xen/arch/riscv/include/asm/setup.h
index 7613a5dbd0..c0214a9bf2 100644
--- a/xen/arch/riscv/include/asm/setup.h
+++ b/xen/arch/riscv/include/asm/setup.h
@@ -1,11 +1,11 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_RISCV_SETUP_H__
-#define __ASM_RISCV_SETUP_H__
+#ifndef ASM__RISCV__SETUP_H
+#define ASM__RISCV__SETUP_H
 
 #define max_init_domid (0)
 
-#endif /* __ASM_RISCV_SETUP_H__ */
+#endif /* ASM__RISCV__SETUP_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/smp.h b/xen/arch/riscv/include/asm/smp.h
index a824be8e78..45ee14d535 100644
--- a/xen/arch/riscv/include/asm/smp.h
+++ b/xen/arch/riscv/include/asm/smp.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_SMP_H
-#define __ASM_RISCV_SMP_H
+#ifndef ASM__RISCV__SMP_H
+#define ASM__RISCV__SMP_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
diff --git a/xen/arch/riscv/include/asm/spinlock.h b/xen/arch/riscv/include/asm/spinlock.h
index bf45a7f005..4a607eba52 100644
--- a/xen/arch/riscv/include/asm/spinlock.h
+++ b/xen/arch/riscv/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_RISCV_SPINLOCK_H
-#define __ASM_RISCV_SPINLOCK_H
+#ifndef ASM__RISCV__SPINLOCK_H
+#define ASM__RISCV__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_RISCV_SPINLOCK_H */
+#endif /* ASM__RISCV__SPINLOCK_H */
diff --git a/xen/arch/riscv/include/asm/string.h b/xen/arch/riscv/include/asm/string.h
index a26ba8f5c6..75a2048fb1 100644
--- a/xen/arch/riscv/include/asm/string.h
+++ b/xen/arch/riscv/include/asm/string.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef _ASM_RISCV_STRING_H
-#define _ASM_RISCV_STRING_H
+#ifndef ASM__RISCV__STRING_H
+#define ASM__RISCV__STRING_H
 
-#endif /* _ASM_RISCV_STRING_H */
+#endif /* ASM__RISCV__STRING_H */
diff --git a/xen/arch/riscv/include/asm/system.h b/xen/arch/riscv/include/asm/system.h
index f76bafd168..7b78d11e04 100644
--- a/xen/arch/riscv/include/asm/system.h
+++ b/xen/arch/riscv/include/asm/system.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_SYSTEM_H
-#define _ASM_RISCV_SYSTEM_H
+#ifndef ASM__RISCV__SYSTEM_H
+#define ASM__RISCV__SYSTEM_H
 
 #include <xen/stdbool.h>
 
@@ -78,7 +78,7 @@ static inline bool local_irq_is_enabled(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_SYSTEM_H */
+#endif /* ASM__RISCV__SYSTEM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
index affeb0506a..fc1572e9b4 100644
--- a/xen/arch/riscv/include/asm/time.h
+++ b/xen/arch/riscv/include/asm/time.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_TIME_H__
-#define __ASM_RISCV_TIME_H__
+#ifndef ASM__RISCV__TIME_H
+#define ASM__RISCV__TIME_H
 
 #include <xen/bug.h>
 #include <asm/csr.h>
@@ -19,7 +19,7 @@ static inline cycles_t get_cycles(void)
     return csr_read(CSR_TIME);
 }
 
-#endif /* __ASM_RISCV_TIME_H__ */
+#endif /* ASM__RISCV__TIME_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/traps.h b/xen/arch/riscv/include/asm/traps.h
index c30118e095..72b8f6c475 100644
--- a/xen/arch/riscv/include/asm/traps.h
+++ b/xen/arch/riscv/include/asm/traps.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_TRAPS_H__
-#define __ASM_TRAPS_H__
+#ifndef ASM__RISCV__TRAPS_H
+#define ASM__RISCV__TRAPS_H
 
 #include <asm/processor.h>
 
@@ -13,4 +13,4 @@ void trap_init(void);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_TRAPS_H__ */
+#endif /* ASM__RISCV__TRAPS_H */
diff --git a/xen/arch/riscv/include/asm/types.h b/xen/arch/riscv/include/asm/types.h
index 59358fd698..d801596a20 100644
--- a/xen/arch/riscv/include/asm/types.h
+++ b/xen/arch/riscv/include/asm/types.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_TYPES_H__
-#define __RISCV_TYPES_H__
+#ifndef ASM__RISCV__TYPES_H
+#define ASM__RISCV__TYPES_H
 
 #if defined(CONFIG_RISCV_32)
 
@@ -25,7 +25,7 @@ typedef u64 register_t;
 
 #endif
 
-#endif /* __RISCV_TYPES_H__ */
+#endif /* ASM__RISCV__TYPES_H */
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:11:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:11:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809772.1222316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQI7-0003hb-63; Thu, 03 Oct 2024 18:11:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809772.1222316; Thu, 03 Oct 2024 18:11: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 1swQI7-0003hU-3M; Thu, 03 Oct 2024 18:11:07 +0000
Received: by outflank-mailman (input) for mailman id 809772;
 Thu, 03 Oct 2024 18:11: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=d1Re=Q7=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swQ7D-0006qR-95
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 17:59:51 +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 480eaad1-81b1-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 19:59:49 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8d60e23b33so182243166b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 10:59:49 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731a5sm111876166b.180.2024.10.03.10.59.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 10:59:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 480eaad1-81b1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1727978388; x=1728583188; 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=E1MdC3jU6tMF4gHR3lQp27v/4fUpmlKo+cCS73TVl10=;
        b=d2dTz2xP10bpnZ7Jrt4SVjpMxS0962Z6f6jWn0NLF8AXqD7mffiS541z1YkFwoCJqP
         9IjLWNXo9QRZ/qaC6Tc0UzhXOgcauJpMrawYDaVYp+gtgj0ukkzlQiQZIq4K2ijUZqI2
         CjfT5hOGRaY+4t+APiQLnvzhWK5DzXSMBdeh4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727978388; x=1728583188;
        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=E1MdC3jU6tMF4gHR3lQp27v/4fUpmlKo+cCS73TVl10=;
        b=YW2yfDhq0opoxN2tYD5iqxgH9Tk60AIndRLIHxPYfK2ueoUjJd8jK9tB6Kv3ojpOAW
         7bnvlc08e6UrRbei+dzTsbZTkoeQCA09qcEKw19mRVRfp31Fx8Fm2pSoFhQs5JCkdKLQ
         J2SlDvv89RLJXyB06cruZMO57/W9vCqJpW33nNCD/oIekZvVhxSClONkc6RolkfSC99v
         wgKIb8TprHsYSWqD3OZ7nG/lx7fIzRb5lHdWxLPvO9JUTdHtvBLRuH2ypxsOWOqzZ20j
         qi82RIwc8utL7WLB1gkY8PRTAQ0kHxkQZ3yY4wsV5KmD1iYJKfKsDOLIHmh9Fb63azam
         FhWA==
X-Gm-Message-State: AOJu0YzDFWv1KmjakLX4gZWSHn8giWbPAoDiWKvL61TdTgsOmcGVTbzk
	dKpfsyhL/Zw50L1XvBiL0Jvo6QLiKoqX3/SM2TEvQGYgZxmx0vUQl2r4+ixendh76cDSR/lltrt
	1
X-Google-Smtp-Source: AGHT+IGe4H1o9bHWu7zBwpckZPd8tO/hShT+fcCxeqpQH5QIfsBsVtGOimT9C4zZckiaTP8qKwJZ3w==
X-Received: by 2002:a17:907:26c4:b0:a8d:3d36:3169 with SMTP id a640c23a62f3a-a991c0107d6mr16693966b.63.1727978388151;
        Thu, 03 Oct 2024 10:59:48 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.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 v2 17/19] xen: Update header guards - VM event, mem access, monitor
Date: Thu,  3 Oct 2024 18:59:17 +0100
Message-Id: <20241003175919.472774-18-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241003175919.472774-1-frediano.ziglio@cloud.com>
References: <20241003175919.472774-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to VM event, mem access AND monitor.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/hvm/monitor.h  | 6 +++---
 xen/arch/x86/include/asm/hvm/vm_event.h | 6 +++---
 xen/arch/x86/include/asm/mem_access.h   | 6 +++---
 xen/arch/x86/include/asm/monitor.h      | 6 +++---
 xen/arch/x86/include/asm/vm_event.h     | 6 +++---
 xen/include/asm-generic/monitor.h       | 6 +++---
 xen/include/asm-generic/vm_event.h      | 6 +++---
 xen/include/public/vm_event.h           | 6 +++---
 xen/include/xen/mem_access.h            | 6 +++---
 xen/include/xen/monitor.h               | 6 +++---
 xen/include/xen/vm_event.h              | 6 +++---
 11 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/xen/arch/x86/include/asm/hvm/monitor.h b/xen/arch/x86/include/asm/hvm/monitor.h
index 02021be47b..8ef90a1b03 100644
--- a/xen/arch/x86/include/asm/hvm/monitor.h
+++ b/xen/arch/x86/include/asm/hvm/monitor.h
@@ -5,8 +5,8 @@
  * Arch-specific hardware virtual machine monitor abstractions.
  */
 
-#ifndef __ASM_X86_HVM_MONITOR_H__
-#define __ASM_X86_HVM_MONITOR_H__
+#ifndef ASM__X86__HVM__MONITOR_H
+#define ASM__X86__HVM__MONITOR_H
 
 #include <public/vm_event.h>
 
@@ -46,7 +46,7 @@ int hvm_monitor_vmexit(unsigned long exit_reason,
 int hvm_monitor_io(unsigned int port, unsigned int bytes,
                    bool in, bool str);
 
-#endif /* __ASM_X86_HVM_MONITOR_H__ */
+#endif /* ASM__X86__HVM__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vm_event.h b/xen/arch/x86/include/asm/hvm/vm_event.h
index 506a85c774..c03df6f15e 100644
--- a/xen/arch/x86/include/asm/hvm/vm_event.h
+++ b/xen/arch/x86/include/asm/hvm/vm_event.h
@@ -5,12 +5,12 @@
  * Hardware virtual machine vm_event abstractions.
  */
 
-#ifndef __ASM_X86_HVM_VM_EVENT_H__
-#define __ASM_X86_HVM_VM_EVENT_H__
+#ifndef ASM__X86__HVM__VM_EVENT_H
+#define ASM__X86__HVM__VM_EVENT_H
 
 void hvm_vm_event_do_resume(struct vcpu *v);
 
-#endif /* __ASM_X86_HVM_VM_EVENT_H__ */
+#endif /* ASM__X86__HVM__VM_EVENT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/mem_access.h b/xen/arch/x86/include/asm/mem_access.h
index 1a52a10322..b774f2f8b6 100644
--- a/xen/arch/x86/include/asm/mem_access.h
+++ b/xen/arch/x86/include/asm/mem_access.h
@@ -11,8 +11,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef __ASM_X86_MEM_ACCESS_H__
-#define __ASM_X86_MEM_ACCESS_H__
+#ifndef ASM__X86__MEM_ACCESS_H
+#define ASM__X86__MEM_ACCESS_H
 
 /*
  * Setup vm_event request based on the access (gla is -1ull if not available).
@@ -44,7 +44,7 @@ int p2m_set_suppress_ve_multi(struct domain *d,
 int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
                         unsigned int altp2m_idx);
 
-#endif /*__ASM_X86_MEM_ACCESS_H__ */
+#endif /*ASM__X86__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/monitor.h b/xen/arch/x86/include/asm/monitor.h
index 3c64d8258f..2d0dde5041 100644
--- a/xen/arch/x86/include/asm/monitor.h
+++ b/xen/arch/x86/include/asm/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_X86_MONITOR_H__
-#define __ASM_X86_MONITOR_H__
+#ifndef ASM__X86__MONITOR_H
+#define ASM__X86__MONITOR_H
 
 #include <xen/sched.h>
 
@@ -126,4 +126,4 @@ static inline void arch_monitor_cleanup_domain(struct domain *d) {}
 bool monitored_msr(const struct domain *d, u32 msr);
 bool monitored_msr_onchangeonly(const struct domain *d, u32 msr);
 
-#endif /* __ASM_X86_MONITOR_H__ */
+#endif /* ASM__X86__MONITOR_H */
diff --git a/xen/arch/x86/include/asm/vm_event.h b/xen/arch/x86/include/asm/vm_event.h
index 46e77ed6d9..bac504ba70 100644
--- a/xen/arch/x86/include/asm/vm_event.h
+++ b/xen/arch/x86/include/asm/vm_event.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2015 Tamas K Lengyel (tamas@tklengyel.com)
  */
 
-#ifndef __ASM_X86_VM_EVENT_H__
-#define __ASM_X86_VM_EVENT_H__
+#ifndef ASM__X86__VM_EVENT_H
+#define ASM__X86__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -45,4 +45,4 @@ void vm_event_sync_event(struct vcpu *v, bool value);
 
 void vm_event_reset_vmtrace(struct vcpu *v);
 
-#endif /* __ASM_X86_VM_EVENT_H__ */
+#endif /* ASM__X86__VM_EVENT_H */
diff --git a/xen/include/asm-generic/monitor.h b/xen/include/asm-generic/monitor.h
index 1ade289099..e53f0823cb 100644
--- a/xen/include/asm-generic/monitor.h
+++ b/xen/include/asm-generic/monitor.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef __ASM_GENERIC_MONITOR_H__
-#define __ASM_GENERIC_MONITOR_H__
+#ifndef ASM_GENERIC__MONITOR_H
+#define ASM_GENERIC__MONITOR_H
 
 #include <xen/errno.h>
 #include <xen/lib.h>
@@ -52,7 +52,7 @@ void arch_monitor_cleanup_domain(struct domain *d)
     /* No arch-specific domain cleanup on GENERIC. */
 }
 
-#endif /* __ASM_GENERIC_MONITOR_H__ */
+#endif /* ASM_GENERIC__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/vm_event.h b/xen/include/asm-generic/vm_event.h
index 620c7b971c..ff538b6ba4 100644
--- a/xen/include/asm-generic/vm_event.h
+++ b/xen/include/asm-generic/vm_event.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2015 Tamas K Lengyel (tamas@tklengyel.com)
  */
 
-#ifndef __ASM_GENERIC_VM_EVENT_H__
-#define __ASM_GENERIC_VM_EVENT_H__
+#ifndef ASM_GENERIC__VM_EVENT_H
+#define ASM_GENERIC__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -52,4 +52,4 @@ void vm_event_reset_vmtrace(struct vcpu *v)
     /* Nothing to do. */
 }
 
-#endif /* __ASM_GENERIC_VM_EVENT_H__ */
+#endif /* ASM_GENERIC__VM_EVENT_H */
diff --git a/xen/include/public/vm_event.h b/xen/include/public/vm_event.h
index 3a86f0e208..6b861b06f0 100644
--- a/xen/include/public/vm_event.h
+++ b/xen/include/public/vm_event.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2009 by Citrix Systems, Inc. (Patrick Colp)
  */
 
-#ifndef _XEN_PUBLIC_VM_EVENT_H
-#define _XEN_PUBLIC_VM_EVENT_H
+#ifndef PUBLIC__VM_EVENT_H
+#define PUBLIC__VM_EVENT_H
 
 #include "xen.h"
 
@@ -440,7 +440,7 @@ typedef struct vm_event_st {
 DEFINE_RING_TYPES(vm_event, vm_event_request_t, vm_event_response_t);
 
 #endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
-#endif /* _XEN_PUBLIC_VM_EVENT_H */
+#endif /* PUBLIC__VM_EVENT_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
index 87d93b31f6..2d0e472934 100644
--- a/xen/include/xen/mem_access.h
+++ b/xen/include/xen/mem_access.h
@@ -19,8 +19,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _XEN_MEM_ACCESS_H
-#define _XEN_MEM_ACCESS_H
+#ifndef XEN__MEM_ACCESS_H
+#define XEN__MEM_ACCESS_H
 
 #include <xen/types.h>
 #include <xen/mm.h>
@@ -105,7 +105,7 @@ int mem_access_memop(unsigned long cmd,
 }
 #endif /* CONFIG_MEM_ACCESS */
 
-#endif /* _XEN_MEM_ACCESS_H */
+#endif /* XEN__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/monitor.h b/xen/include/xen/monitor.h
index 713d54f7c1..be301826c0 100644
--- a/xen/include/xen/monitor.h
+++ b/xen/include/xen/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_MONITOR_H__
-#define __XEN_MONITOR_H__
+#ifndef XEN__MONITOR_H
+#define XEN__MONITOR_H
 
 #include <public/vm_event.h>
 
@@ -32,4 +32,4 @@ void monitor_guest_request(void);
 
 int monitor_traps(struct vcpu *v, bool sync, vm_event_request_t *req);
 
-#endif /* __XEN_MONITOR_H__ */
+#endif /* XEN__MONITOR_H */
diff --git a/xen/include/xen/vm_event.h b/xen/include/xen/vm_event.h
index 9a86358b42..3f2cb6fba8 100644
--- a/xen/include/xen/vm_event.h
+++ b/xen/include/xen/vm_event.h
@@ -20,8 +20,8 @@
  */
 
 
-#ifndef __VM_EVENT_H__
-#define __VM_EVENT_H__
+#ifndef XEN__VM_EVENT_H
+#define XEN__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -98,7 +98,7 @@ void vm_event_set_registers(struct vcpu *v, vm_event_response_t *rsp);
 
 void vm_event_monitor_next_interrupt(struct vcpu *v);
 
-#endif /* __VM_EVENT_H__ */
+#endif /* XEN__VM_EVENT_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:28:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:28:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809805.1222325 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQZ9-0007wI-Ii; Thu, 03 Oct 2024 18:28:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809805.1222325; Thu, 03 Oct 2024 18:28: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 1swQZ9-0007wB-Fz; Thu, 03 Oct 2024 18:28:43 +0000
Received: by outflank-mailman (input) for mailman id 809805;
 Thu, 03 Oct 2024 18:28: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 1swQZ8-0007w1-DQ; Thu, 03 Oct 2024 18:28: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 1swQZ8-0000ep-8m; Thu, 03 Oct 2024 18:28: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 1swQZ7-0001Lv-Q1; Thu, 03 Oct 2024 18:28:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swQZ7-0005p1-PS; Thu, 03 Oct 2024 18:28: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=IWq1h8HkCbNDLUo0uZJQNkcLxilohWBSxm0D+z34Ih0=; b=ANv/Q48jue7ZyaA45xZ6fwrLbU
	EzFUnQgZza+kMvsPNwViW26sm69/ab/96Y39qPHhvVApVjB21YILf3gQE+0mzl+pOXR/HskSV6o1C
	Zx/wabW1mkOHGIAvByXqEmwJijN4Bes4enHNxzJiRZ9ykyuk/8ZsOokpEb3KtBZw/NkQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187954-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187954: 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=eb21ce14d709ef0c0030d0625028a4868c81126f
X-Osstest-Versions-That:
    xen=444cb9350f2c1cc202b6b86176ddd8e57525e2d9
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 18:28:41 +0000

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

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                  eb21ce14d709ef0c0030d0625028a4868c81126f
baseline version:
 xen                  444cb9350f2c1cc202b6b86176ddd8e57525e2d9

Last test of basis   187950  2024-10-03 10:00:24 Z    0 days
Testing same since   187954  2024-10-03 14:02:14 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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
   444cb9350f..eb21ce14d7  eb21ce14d709ef0c0030d0625028a4868c81126f -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:47:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:47:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809812.1222335 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swQqt-0004um-2g; Thu, 03 Oct 2024 18:47:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809812.1222335; Thu, 03 Oct 2024 18:47: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 1swQqs-0004uf-W8; Thu, 03 Oct 2024 18:47:02 +0000
Received: by outflank-mailman (input) for mailman id 809812;
 Thu, 03 Oct 2024 18: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swQqr-0004tB-NX
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 18:47:01 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id df4592f7-81b7-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 20:46:59 +0200 (CEST)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-5398e33155fso1702747e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 11:46:59 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a82a3890sm235298e87.216.2024.10.03.11.46.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 11:46:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: df4592f7-81b7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727981219; x=1728586019; darn=lists.xenproject.org;
        h=user-agent: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=zxNVqecRvkYD7Yjb7qO/AnPWEEM5Fp2WZf3IfrDzV2U=;
        b=lld8CNJ11A6LhqyGiAxmDt7hK7Lj2QyruMCwBjw8s+HQYlulP47fCFzBJtP51ZVU+r
         2mkc25H7BnZjovtRrqYN85RetIbpZd+gLf4zZPYkKW9Do0FLO8ukGFo7NVfqz1Q22llw
         +tlsjd7rx50jpHKw14Fs9hWlisY7mUHUkegzkHA+v0bUcx4S2w+TWfVClereP+ON7IA4
         DG7TbwBhJA7gLG3xc93d9Vh379ngkTW1PU8opGl9cmLrHxIfP/LnGAupqGw6UMZQBsfj
         uqkPj2gcdIQZG1e+aZWoSZxUH2t63ha5wtjDkeiHpFZlb9ES4qqHiX4LZjctWAjse5q4
         EGxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727981219; x=1728586019;
        h=user-agent: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=zxNVqecRvkYD7Yjb7qO/AnPWEEM5Fp2WZf3IfrDzV2U=;
        b=PAYCbG9tUavscfU6dwHXxe/A9tJVvODveVeJO9ZIUoY4fsqg881B4XBsgubYcQg+0C
         1+dimQEMML1eZc4cxP/Bf/6AL8ZgAaX2ogXimb6anDGmPqEu0CNYGd/XM7pGU0cOcyjo
         SIv22tR5AU6PqawxzxvuUPhPs/EHGqfreF5HX3as1AOZdZwn63+TPAPbKNIEVFOSY7YD
         B1I+hRU2xtohOGMCsWVQx5RrCjoTUMtmjljilbJIJjhBh1w5O8aAohTIpcRGoOaLJsTu
         hDLJcDQRMDS1/CJJDWvPiudzwa1cF9iLQP3KscUnv+H1mutVnW9OQK/rjWghMLPdieKW
         p7ng==
X-Forwarded-Encrypted: i=1; AJvYcCVjBix1R7aKZ5L1oCpExxiWoiTTzgpgahg5+kmrTbPfEjkRUkWyFTjLiVJ+3iWCSXNFXX7moBHBKEE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyctLGCy71TPpbzZO8xPXQNH9Ww3AxRYRLpAZ1v1elecK2atC6U
	m+NOX+XOrX/Cm+fdt3zM8J6pSEsn+YiRQa3Xx+OUzOOiL7aMfwvZ
X-Google-Smtp-Source: AGHT+IEDANPzn9Tbpg9Me56OPCcgs/2usC+PJjRqvZAj8AZFAClQd1shccGdZN2d1m+U1EFvic1mTg==
X-Received: by 2002:a05:6512:1591:b0:534:543e:1895 with SMTP id 2adb3069b0e04-539ab9e17aamr178407e87.39.1727981218692;
        Thu, 03 Oct 2024 11:46:58 -0700 (PDT)
Date: Thu, 3 Oct 2024 19:52:06 +0200
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, sstabellini@kernel.org, anthony@xenproject.org,
	paul@xen.org, edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org
Subject: Re: [PULL v1 0/5] Xen Queue
Message-ID: <Zv7ZxuDujOtgrs22@zapote>
References: <20241003143103.1476805-1-edgar.iglesias@gmail.com>
 <CAFEAcA9tST+-mZTcdBtwVOeVmxnBDrO=VJBMj=C0iFw5GAojLw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAFEAcA9tST+-mZTcdBtwVOeVmxnBDrO=VJBMj=C0iFw5GAojLw@mail.gmail.com>
User-Agent: Mutt/2.2.12 (2023-09-09)

On Thu, Oct 03, 2024 at 06:07:00PM +0100, Peter Maydell wrote:
> On Thu, 3 Oct 2024 at 15:31, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
> >
> > From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
> >
> > The following changes since commit 423be09ab9492735924e73a2d36069784441ebc6:
> >
> >   Merge tag 'warn-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging (2024-10-03 10:32:54 +0100)
> >
> > are available in the Git repository at:
> >
> >   https://gitlab.com/edgar.iglesias/qemu.git tags/edgar/xen-queue-2024-10-03.for-upstream
> >
> > for you to fetch changes up to 507118c2a066b70e8069702c120461ad8c98ccd5:
> >
> >   hw/arm: xenpvh: Enable PCI for ARM PVH (2024-10-03 15:24:42 +0200)
> >
> > ----------------------------------------------------------------
> > Edgars Xen Queue.
> >
> > ----------------------------------------------------------------
> > Dr. David Alan Gilbert (1):
> >       hw/xen: Remove deadcode
> >
> > Edgar E. Iglesias (4):
> >       hw/xen: Expose handle_bufioreq in xen_register_ioreq
> >       hw/xen: xenpvh: Disable buffered IOREQs for ARM
> >       hw/xen: xenpvh: Add pci-intx-irq-base property
> >       hw/arm: xenpvh: Enable PCI for ARM PVH
> 
> Hi; this failed the tsan-build CI job:
> 
> https://gitlab.com/qemu-project/qemu/-/jobs/7986783747
> 
> ../hw/xen/xen-hvm-common.c:711:48: error: variable 'ioreq_pfn' is
> uninitialized when used here [-Werror,-Wuninitialized]
> trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
>                                        ^~~~~~~~~
> ../hw/xen/xen-hvm-common.c:667:24: note: initialize the variable
> 'ioreq_pfn' to silence this warning
> xen_pfn_t ioreq_pfn;
>                    ^
>                    = 0
>

Thanks Peter,

I had moved that trace call but forgot to remove the original line.
Will send a v2 PR.

Cheers,
Edgar


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:57:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:57:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809819.1222366 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swR0g-000841-Cx; Thu, 03 Oct 2024 18:57:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809819.1222366; Thu, 03 Oct 2024 18:57: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 1swR0g-00083u-9n; Thu, 03 Oct 2024 18:57:10 +0000
Received: by outflank-mailman (input) for mailman id 809819;
 Thu, 03 Oct 2024 18: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swR0f-00082k-DI
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 18:57:09 +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 497f6ce9-81b9-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 20:57:07 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5398cc2fcb7so1592317e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 11:57:07 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a82a3977sm236219e87.210.2024.10.03.11.57.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 11:57:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 497f6ce9-81b9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727981827; x=1728586627; 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=gGqqG4KMNUSJeDEYGOTuWNkgrn+DA19mS0ISFTxuLo8=;
        b=gPQS4N5gmXmqGXF19alMRw4Zml2aNyhfwC1srtmq2nQ0Sf8n1mEfsOeSXMofssuwp5
         +sXV+ClqvAB7tMC0S6FW+j2N0H6bDuL2QvmROfPxgdbjQjRgVkI3tbbtVJ/yxVIRdqxb
         +7Pz7I8Vy0DT3T0qFb8o2GjZRKX2X3XVV+xlEmS6kdYDwhA0n7IK2fWJWx6VOb8NLXdW
         6/xjUb9ok9+agWWqRFRZhurrie/txgsNDqMubd1bfrw+CytcZbCV0AUqweGr6Fz74t4z
         xTJk7AGgcrTdlVPZMkm8DdaqwoiqtGbHIkYXb1uZ3SanLhCdJvSkcIp9IHLAdfxrL5yV
         TpEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727981827; x=1728586627;
        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=gGqqG4KMNUSJeDEYGOTuWNkgrn+DA19mS0ISFTxuLo8=;
        b=lTw4/FFkot+vGnShLMp07YRLXLNUItJEmKjWFwOhmUq9fCHGxCZtzEqLepRbMkAImX
         VhMqdw/49h+1tv0kPZTtAfAfOVqb4RoYIU0I6CUgXfqunNGUP1kWmhkE1KEw++eHXqFN
         e77XswZSp8s5QZTt3UGLWbRcuusIwW3AFGj8J1ZdyYClb59vSlnTNUGdv320ujx9jbCp
         jJrdIXHHgVxi9Rf2O2s/3wHnIzhOvDFHmLcYVsXyaux/jGoR0qptZcVHGvcorYZT87+F
         zM5cvQcSXCfU3dO8+c1/LqD4+GP1gQno5d7WHkAe47QAttcxsYVCi0/V95ZNTezDHJY4
         YghA==
X-Forwarded-Encrypted: i=1; AJvYcCXQq7GK5KCdxF74y8FCi8mU31XT+tbVdFE6IRgnzwxXzT9756fdRVA4o1ebnlzVGZRBsKGim7IukVQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxfOkUYKIE1OT05HMYshfEutwewaPFOd4JkZbL3vomn/rIDqimv
	Ol6AHKN3F57Aw0qcgqiFBpLZ539mrwMuZC0s1zslI/Ggyrl0kV+U
X-Google-Smtp-Source: AGHT+IHLTEkfckUGGKRvcplbeYVmPhK1mXleMIddN5HE0TGjyz0xJQGcVibsOAd0AKBA95Aqv2gqjg==
X-Received: by 2002:a05:6512:a96:b0:52c:8979:9627 with SMTP id 2adb3069b0e04-539ab84a43cmr239526e87.3.1727981826784;
        Thu, 03 Oct 2024 11:57:06 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Subject: [PULL v2 2/5] hw/xen: Expose handle_bufioreq in xen_register_ioreq
Date: Thu,  3 Oct 2024 20:56:51 +0200
Message-ID: <20241003185655.1480819-3-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Expose handle_bufioreq in xen_register_ioreq().
This is to allow machines to enable or disable buffered ioreqs.

No functional change since all callers still set it to
HVM_IOREQSRV_BUFIOREQ_ATOMIC.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/i386/xen/xen-hvm.c           |   4 +-
 hw/xen/xen-hvm-common.c         | 100 ++++++++++++++++++++------------
 hw/xen/xen-pvh-common.c         |   4 +-
 include/hw/xen/xen-hvm-common.h |   3 +
 include/hw/xen/xen_native.h     |   3 +-
 5 files changed, 73 insertions(+), 41 deletions(-)

diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index 4f6446600c..d3df488c48 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -614,7 +614,9 @@ void xen_hvm_init_pc(PCMachineState *pcms, MemoryRegion **ram_memory)
 
     state = g_new0(XenIOState, 1);
 
-    xen_register_ioreq(state, max_cpus, &xen_memory_listener);
+    xen_register_ioreq(state, max_cpus,
+                       HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                       &xen_memory_listener);
 
     xen_is_stubdomain = xen_check_stubdomain(state->xenstore);
 
diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 3a9d6f981b..7d2b72853b 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -667,6 +667,8 @@ static int xen_map_ioreq_server(XenIOState *state)
     xen_pfn_t ioreq_pfn;
     xen_pfn_t bufioreq_pfn;
     evtchn_port_t bufioreq_evtchn;
+    unsigned long num_frames = 1;
+    unsigned long frame = 1;
     int rc;
 
     /*
@@ -675,59 +677,78 @@ static int xen_map_ioreq_server(XenIOState *state)
      */
     QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_bufioreq != 0);
     QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_ioreq(0) != 1);
+
+    if (state->has_bufioreq) {
+        frame = 0;
+        num_frames = 2;
+    }
     state->fres = xenforeignmemory_map_resource(xen_fmem, xen_domid,
                                          XENMEM_resource_ioreq_server,
-                                         state->ioservid, 0, 2,
+                                         state->ioservid,
+                                         frame, num_frames,
                                          &addr,
                                          PROT_READ | PROT_WRITE, 0);
     if (state->fres != NULL) {
         trace_xen_map_resource_ioreq(state->ioservid, addr);
-        state->buffered_io_page = addr;
-        state->shared_page = addr + XC_PAGE_SIZE;
+        state->shared_page = addr;
+        if (state->has_bufioreq) {
+            state->buffered_io_page = addr;
+            state->shared_page = addr + XC_PAGE_SIZE;
+        }
     } else if (errno != EOPNOTSUPP) {
         error_report("failed to map ioreq server resources: error %d handle=%p",
                      errno, xen_xc);
         return -1;
     }
 
-    rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
-                                   (state->shared_page == NULL) ?
-                                   &ioreq_pfn : NULL,
-                                   (state->buffered_io_page == NULL) ?
-                                   &bufioreq_pfn : NULL,
-                                   &bufioreq_evtchn);
-    if (rc < 0) {
-        error_report("failed to get ioreq server info: error %d handle=%p",
-                     errno, xen_xc);
-        return rc;
-    }
+    /*
+     * If we fail to map the shared page with xenforeignmemory_map_resource()
+     * or if we're using buffered ioreqs, we need xen_get_ioreq_server_info()
+     * to provide the the addresses to map the shared page and/or to get the
+     * event-channel port for buffered ioreqs.
+     */
+    if (state->shared_page == NULL || state->has_bufioreq) {
+        rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
+                                       (state->shared_page == NULL) ?
+                                       &ioreq_pfn : NULL,
+                                       (state->has_bufioreq &&
+                                        state->buffered_io_page == NULL) ?
+                                       &bufioreq_pfn : NULL,
+                                       &bufioreq_evtchn);
+        if (rc < 0) {
+            error_report("failed to get ioreq server info: error %d handle=%p",
+                         errno, xen_xc);
+            return rc;
+        }
 
-    if (state->shared_page == NULL) {
-        trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
+        if (state->shared_page == NULL) {
+            trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
 
-        state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
-                                                  PROT_READ | PROT_WRITE,
-                                                  1, &ioreq_pfn, NULL);
+            state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
+                                                      PROT_READ | PROT_WRITE,
+                                                      1, &ioreq_pfn, NULL);
+        }
         if (state->shared_page == NULL) {
             error_report("map shared IO page returned error %d handle=%p",
                          errno, xen_xc);
         }
-    }
 
-    if (state->buffered_io_page == NULL) {
-        trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
+        if (state->has_bufioreq && state->buffered_io_page == NULL) {
+            trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
 
-        state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
-                                                       PROT_READ | PROT_WRITE,
-                                                       1, &bufioreq_pfn,
-                                                       NULL);
-        if (state->buffered_io_page == NULL) {
-            error_report("map buffered IO page returned error %d", errno);
-            return -1;
+            state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
+                                                        PROT_READ | PROT_WRITE,
+                                                        1, &bufioreq_pfn,
+                                                        NULL);
+            if (state->buffered_io_page == NULL) {
+                error_report("map buffered IO page returned error %d", errno);
+                return -1;
+            }
         }
     }
 
-    if (state->shared_page == NULL || state->buffered_io_page == NULL) {
+    if (state->shared_page == NULL ||
+        (state->has_bufioreq && state->buffered_io_page == NULL)) {
         return -1;
     }
 
@@ -830,14 +851,15 @@ static void xen_do_ioreq_register(XenIOState *state,
         state->ioreq_local_port[i] = rc;
     }
 
-    rc = qemu_xen_evtchn_bind_interdomain(state->xce_handle, xen_domid,
-                                          state->bufioreq_remote_port);
-    if (rc == -1) {
-        error_report("buffered evtchn bind error %d", errno);
-        goto err;
+    if (state->has_bufioreq) {
+        rc = qemu_xen_evtchn_bind_interdomain(state->xce_handle, xen_domid,
+                                              state->bufioreq_remote_port);
+        if (rc == -1) {
+            error_report("buffered evtchn bind error %d", errno);
+            goto err;
+        }
+        state->bufioreq_local_port = rc;
     }
-    state->bufioreq_local_port = rc;
-
     /* Init RAM management */
 #ifdef XEN_COMPAT_PHYSMAP
     xen_map_cache_init(xen_phys_offset_to_gaddr, state);
@@ -865,6 +887,7 @@ err:
 }
 
 void xen_register_ioreq(XenIOState *state, unsigned int max_cpus,
+                        uint8_t handle_bufioreq,
                         const MemoryListener *xen_memory_listener)
 {
     int rc;
@@ -883,7 +906,8 @@ void xen_register_ioreq(XenIOState *state, unsigned int max_cpus,
         goto err;
     }
 
-    rc = xen_create_ioreq_server(xen_domid, &state->ioservid);
+    state->has_bufioreq = handle_bufioreq != HVM_IOREQSRV_BUFIOREQ_OFF;
+    rc = xen_create_ioreq_server(xen_domid, handle_bufioreq, &state->ioservid);
     if (!rc) {
         xen_do_ioreq_register(state, max_cpus, xen_memory_listener);
     } else {
diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 28d7168446..08641fdcec 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -194,7 +194,9 @@ static void xen_pvh_init(MachineState *ms)
     }
 
     xen_pvh_init_ram(s, sysmem);
-    xen_register_ioreq(&s->ioreq, ms->smp.max_cpus, &xen_memory_listener);
+    xen_register_ioreq(&s->ioreq, ms->smp.max_cpus,
+                       HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                       &xen_memory_listener);
 
     if (s->cfg.virtio_mmio_num) {
         xen_create_virtio_mmio_devices(s);
diff --git a/include/hw/xen/xen-hvm-common.h b/include/hw/xen/xen-hvm-common.h
index 3d796235dc..0f586c4384 100644
--- a/include/hw/xen/xen-hvm-common.h
+++ b/include/hw/xen/xen-hvm-common.h
@@ -81,6 +81,8 @@ typedef struct XenIOState {
     QLIST_HEAD(, XenPciDevice) dev_list;
     DeviceListener device_listener;
 
+    bool has_bufioreq;
+
     Notifier exit;
 } XenIOState;
 
@@ -95,6 +97,7 @@ void xen_device_unrealize(DeviceListener *listener, DeviceState *dev);
 
 void xen_hvm_change_state_handler(void *opaque, bool running, RunState rstate);
 void xen_register_ioreq(XenIOState *state, unsigned int max_cpus,
+                        uint8_t handle_bufioreq,
                         const MemoryListener *xen_memory_listener);
 
 void cpu_ioreq_pio(ioreq_t *req);
diff --git a/include/hw/xen/xen_native.h b/include/hw/xen/xen_native.h
index 1a5ad693a4..5caf91a616 100644
--- a/include/hw/xen/xen_native.h
+++ b/include/hw/xen/xen_native.h
@@ -464,10 +464,11 @@ static inline void xen_unmap_pcidev(domid_t dom,
 }
 
 static inline int xen_create_ioreq_server(domid_t dom,
+                                          int handle_bufioreq,
                                           ioservid_t *ioservid)
 {
     int rc = xendevicemodel_create_ioreq_server(xen_dmod, dom,
-                                                HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                                                handle_bufioreq,
                                                 ioservid);
 
     if (rc == 0) {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:57:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:57:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809818.1222356 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swR0d-0007nP-2V; Thu, 03 Oct 2024 18:57:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809818.1222356; Thu, 03 Oct 2024 18:57: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 1swR0c-0007nI-W9; Thu, 03 Oct 2024 18:57:06 +0000
Received: by outflank-mailman (input) for mailman id 809818;
 Thu, 03 Oct 2024 18:57: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swR0b-0007Yu-SU
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 18:57:05 +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 4840cf42-81b9-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 20:57:05 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-5399041167cso2277775e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 11:57:05 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539a82510b0sm239556e87.40.2024.10.03.11.57.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 11:57:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4840cf42-81b9-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727981825; x=1728586625; 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=5QkDAThvHzn8nk+HGJi0H/5a08f7RDTFwzrMcXuWa4E=;
        b=SrI1hVTlLwfC+637UQhhV2LuZAMFGVnfVVVrRwBK5e0G6GFNbEikqpPWw+jCN6JuwJ
         sf2CiBNOs2Db+KDeyHvtmWdUfjTjGaGFqIOdr5ZYzCK2mYvw5SfLP1pwEduFicnnjBL9
         nrCYFIe3zsPCxRfUF0IiT9Sb20DZY+6GMF1Itrj+wJTVH3qjMimvMmArvESRiTDAX7SY
         BmyKDTQgXEK1us4URnzFRIpJ7y5wrgJ3i31VTXUDI1PsS91uqdtRmLO46N4FV7lwMjY/
         0cThhib8k/AvOfujRJLP4d5TyK4dj6qRR92ELG4vSlqtbnt209/KDDrlAm2Rp/aM6VKI
         Ys9g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727981825; x=1728586625;
        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=5QkDAThvHzn8nk+HGJi0H/5a08f7RDTFwzrMcXuWa4E=;
        b=gJB7+ZqAttJK992nOA10pDrr36MYgo5bnlsFTIJr3FkTT0zMmrvWUieRrcdCQq17VV
         4J4HCvHOMqO5yfh0x4Fa5tDW9UpKLeHaMNXES0H5FpXyh89vFabH20Cn6r61PvkdrAhg
         AJTZQne49nG7FiMj4GielcSzo/spjgE2dXer9wgd0mIaPyalrFarQNGUe9Od2meW/CQm
         zQJVbpZN0F0KUbn5xMzkfB5ymX4oHEqG5orE2yNfOgPVBYjZyVlWntZtFrMok9+TRxFv
         I66Lw9xp5za8UIyWoSlolJ6wtxpHmdrxQgJK0XaGNION9zojghs5IofFPa3hokFbVlwV
         BlMg==
X-Forwarded-Encrypted: i=1; AJvYcCU1Iwi4rwH7EaUOEeHz1/MAsXZ4YN8gdYMi2cNl8xRks9tRgtqyoPAZbSZlzCEIRQRNyAm507vAOco=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx5B+JG2rOhtjZKvedYZU754YwHJ1cUF86YFDvAl3xa78FSOECw
	F5TBBkDBvlZpJUT6J0BWps2WjNf4ZH6vT+euwsspdAXcgOnRDdiA
X-Google-Smtp-Source: AGHT+IH+YJp2VQbmukXoxo+KucnNQOI52hduggo5ZWOqudKcMJoLnpK4pu8dv199MzOrbVPSxfrmWw==
X-Received: by 2002:a05:6512:b29:b0:530:ab68:25c5 with SMTP id 2adb3069b0e04-539ab84e022mr346818e87.2.1727981824696;
        Thu, 03 Oct 2024 11:57:04 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Dr. David Alan Gilbert" <dave@treblig.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Thomas Huth <thuth@redhat.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [PULL v2 1/5] hw/xen: Remove deadcode
Date: Thu,  3 Oct 2024 20:56:50 +0200
Message-ID: <20241003185655.1480819-2-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Dr. David Alan Gilbert" <dave@treblig.org>

xen_be_copy_grant_refs is unused since 2019's
  19f87870ba ("xen: remove the legacy 'xen_disk' backend")

xen_config_dev_console is unused since 2018's
  6d7c06c213 ("Remove broken Xen PV domain builder")

Remove them.

Signed-off-by: Dr. David Alan Gilbert <dave@treblig.org>
Acked-by: Anthony PERARD <anthony.perard@vates.tech>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/xen/xen-legacy-backend.c         | 18 ------------------
 hw/xen/xen_devconfig.c              |  8 --------
 include/hw/xen/xen-legacy-backend.h |  5 -----
 3 files changed, 31 deletions(-)

diff --git a/hw/xen/xen-legacy-backend.c b/hw/xen/xen-legacy-backend.c
index 5514184f9c..e8e1ee4f7d 100644
--- a/hw/xen/xen-legacy-backend.c
+++ b/hw/xen/xen-legacy-backend.c
@@ -147,24 +147,6 @@ void xen_be_unmap_grant_refs(struct XenLegacyDevice *xendev, void *ptr,
     }
 }
 
-int xen_be_copy_grant_refs(struct XenLegacyDevice *xendev,
-                           bool to_domain,
-                           XenGrantCopySegment segs[],
-                           unsigned int nr_segs)
-{
-    int rc;
-
-    assert(xendev->ops->flags & DEVOPS_FLAG_NEED_GNTDEV);
-
-    rc = qemu_xen_gnttab_grant_copy(xendev->gnttabdev, to_domain, xen_domid,
-                                    segs, nr_segs, NULL);
-    if (rc) {
-        xen_pv_printf(xendev, 0, "xengnttab_grant_copy failed: %s\n",
-                      strerror(-rc));
-    }
-    return rc;
-}
-
 /*
  * get xen backend device, allocate a new one if it doesn't exist.
  */
diff --git a/hw/xen/xen_devconfig.c b/hw/xen/xen_devconfig.c
index 2150869f60..45ae134b84 100644
--- a/hw/xen/xen_devconfig.c
+++ b/hw/xen/xen_devconfig.c
@@ -66,11 +66,3 @@ int xen_config_dev_vkbd(int vdev)
     xen_config_dev_dirs("vkbd", "vkbd", vdev, fe, be, sizeof(fe));
     return xen_config_dev_all(fe, be);
 }
-
-int xen_config_dev_console(int vdev)
-{
-    char fe[256], be[256];
-
-    xen_config_dev_dirs("console", "console", vdev, fe, be, sizeof(fe));
-    return xen_config_dev_all(fe, be);
-}
diff --git a/include/hw/xen/xen-legacy-backend.h b/include/hw/xen/xen-legacy-backend.h
index 943732b8d1..e198b120c5 100644
--- a/include/hw/xen/xen-legacy-backend.h
+++ b/include/hw/xen/xen-legacy-backend.h
@@ -50,10 +50,6 @@ void *xen_be_map_grant_refs(struct XenLegacyDevice *xendev, uint32_t *refs,
 void xen_be_unmap_grant_refs(struct XenLegacyDevice *xendev, void *ptr,
                              uint32_t *refs, unsigned int nr_refs);
 
-int xen_be_copy_grant_refs(struct XenLegacyDevice *xendev,
-                           bool to_domain, XenGrantCopySegment segs[],
-                           unsigned int nr_segs);
-
 static inline void *xen_be_map_grant_ref(struct XenLegacyDevice *xendev,
                                          uint32_t ref, int prot)
 {
@@ -70,6 +66,5 @@ static inline void xen_be_unmap_grant_ref(struct XenLegacyDevice *xendev,
 void xen_config_cleanup(void);
 int xen_config_dev_vfb(int vdev, const char *type);
 int xen_config_dev_vkbd(int vdev);
-int xen_config_dev_console(int vdev);
 
 #endif /* HW_XEN_LEGACY_BACKEND_H */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:57:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:57:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809817.1222345 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swR0b-0007ZD-SW; Thu, 03 Oct 2024 18:57:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809817.1222345; Thu, 03 Oct 2024 18: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 1swR0b-0007Z6-Pt; Thu, 03 Oct 2024 18:57:05 +0000
Received: by outflank-mailman (input) for mailman id 809817;
 Thu, 03 Oct 2024 18: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swR0a-0007Yu-6r
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 18:57:04 +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 4715a050-81b9-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 20:57:03 +0200 (CEST)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2facf48166bso18749831fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 11:57:03 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faecbf6feesm2796571fa.18.2024.10.03.11.57.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 11:57:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4715a050-81b9-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727981823; x=1728586623; 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=cdaNDaEOcn6vuQNjiuMDjzYnUO3vmcmh1n8TpB8KZRA=;
        b=iqqAN6+ECcPR8Vo/eH6aBmLojnXBTlcAuHsArR+YHJQWeSfHBkHZnFbtbBbTzs+9B5
         KNe9lG4TnX/eg6Szn9bc/e9bIeEosdVGfeech9SVBnz8OJQ9X8auFsYdExU2wlcwR9jC
         WAL3TNi0HHyH3TseORfuIBjX03Zr9FEC78abcPCBbCk4ZuEMea5VHoj3YagnKsf8noTX
         UPY9CZsTvf6Ndfi1F4EpjbsXgDznSTgcKwQcyY0vNcbamvp/DHBo/XfjW66hvlr5/F1c
         G+7Gdlx551gWAhc9JVDp2jevAL/3VfyIFxrpqgHYB0muWc6rOEWNZYnI2pOS8PHo2Y8P
         rNUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727981823; x=1728586623;
        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=cdaNDaEOcn6vuQNjiuMDjzYnUO3vmcmh1n8TpB8KZRA=;
        b=Lx7zus6p9cUNvBNo40TaB0mgah4tA2CyJ8rBiS0vC2jWk/2GEGEEYzc2xVz7JwlW0g
         UB4D3Svb8UOg9VyyPeEY/9PqniHwZWTTlyKkkJ7shO/JPeVGf3Qrcr4l4LeD8pCXv7SX
         N30iqK6SYuKDPaVGTWNABbBmbsV6FZtIpSBlHJi15lrols7wIEzQ6+E/FUCE52PnTFag
         bAl/r5dedPi4p71obdgdKXzpAG1WY7fEuwfF99L7cWenTbvvzHdO1qaCzy5GtZangMMI
         e0lGENT1ZU2nHFFpNZoMNUUUR62G2ihuYojbrDGOcPm5NJrJWj2w81qPLpZ0Tfone4zh
         DIcQ==
X-Forwarded-Encrypted: i=1; AJvYcCUshneErrw+/USrmrieITJ/9Juh5Q09Nk5IiIzyupqfMeO24lbUdPCWiROpnIQ7Ga1bNoADUMSbpWA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwEc41TLoEBvbcEx81yYyqMT2Gq4uaQ+E2c9hDTGDPFHBisZQy1
	MfZ0juG3qPlHNO4vn3Q61ROj9uF5Yfk+zQBBnE4Atq0MDqdoLJdw
X-Google-Smtp-Source: AGHT+IFdeBkkNKz7zU2CTecNYILP4aX1U9f8WPyScxz91qp4ENEdsSBhsUSyvViSiJmd41SQ99VMWA==
X-Received: by 2002:a2e:b8c3:0:b0:2ec:55b5:ed45 with SMTP id 38308e7fff4ca-2faf3c420b2mr190871fa.24.1727981822607;
        Thu, 03 Oct 2024 11:57:02 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org
Subject: [PULL v2 0/5] Xen Queue
Date: Thu,  3 Oct 2024 20:56:49 +0200
Message-ID: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

The following changes since commit 423be09ab9492735924e73a2d36069784441ebc6:

  Merge tag 'warn-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging (2024-10-03 10:32:54 +0100)

are available in the Git repository at:

  https://gitlab.com/edgar.iglesias/qemu.git tags/edgar/xen-queue-2024-10-03-v2.for-upstream

for you to fetch changes up to ca9275a4b11aced3074219d1712e29fce5036f72:

  hw/arm: xenpvh: Enable PCI for ARM PVH (2024-10-03 19:37:35 +0200)

----------------------------------------------------------------
Edgars Xen Queue.

----------------------------------------------------------------

ChangeLog:

v1 -> v2:
* Removed left over trace call

----------------------------------------------------------------

Dr. David Alan Gilbert (1):
      hw/xen: Remove deadcode

Edgar E. Iglesias (4):
      hw/xen: Expose handle_bufioreq in xen_register_ioreq
      hw/xen: xenpvh: Disable buffered IOREQs for ARM
      hw/xen: xenpvh: Add pci-intx-irq-base property
      hw/arm: xenpvh: Enable PCI for ARM PVH

 hw/arm/xen-pvh.c                    |  17 ++++++
 hw/i386/xen/xen-hvm.c               |   4 +-
 hw/i386/xen/xen-pvh.c               |   3 ++
 hw/xen/xen-hvm-common.c             | 100 ++++++++++++++++++++++--------------
 hw/xen/xen-legacy-backend.c         |  18 -------
 hw/xen/xen-pvh-common.c             |  40 ++++++++++++++-
 hw/xen/xen_devconfig.c              |   8 ---
 include/hw/xen/xen-hvm-common.h     |   3 ++
 include/hw/xen/xen-legacy-backend.h |   5 --
 include/hw/xen/xen-pvh-common.h     |   3 ++
 include/hw/xen/xen_native.h         |   3 +-
 11 files changed, 132 insertions(+), 72 deletions(-)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:57:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:57:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809820.1222371 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swR0g-000873-Ng; Thu, 03 Oct 2024 18:57:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809820.1222371; Thu, 03 Oct 2024 18:57: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 1swR0g-00085w-Gl; Thu, 03 Oct 2024 18:57:10 +0000
Received: by outflank-mailman (input) for mailman id 809820;
 Thu, 03 Oct 2024 18:57: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swR0f-0007Yu-Le
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 18:57:09 +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 4a9200a3-81b9-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 20:57:09 +0200 (CEST)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2fac787f39fso15854521fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 11:57:09 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faecc6c18dsm2772521fa.97.2024.10.03.11.57.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 11:57:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a9200a3-81b9-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727981829; x=1728586629; 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=G14n863A5XJ+R3OWZM+ShGFWWx326n2e7KMDwbqTXOk=;
        b=a99UYE7nXSpY1HYv37N0v6ZFjaqCg1L+nbTk4Clp515RUg7PoYcPE1fytyrPXfP449
         23dlwgvU5UJyacXitdMK0sPCdW24F6RYpEjrI74DDAVLfOjFFYC/BiIPyOZnTyvTf8x3
         PYWhV8Hw9rWjsx8w7GB+T8wfWTpm0qQK7wbmZn70+D8XnFe1nQFjxBFIRqgbTFK/V4iV
         YemhA0Pc+YiLUq9oDrx23h54EeMt5lh9MOJQQ2SmI6Z/Tp6VLxZRp90fNgeGkDkecPmj
         Zn8th1mAwy8LOTtP6XFVfy+wtFq/XGXWRdlWFUzqxseFMIWzN8Rb4w7P4LXpUow+y7Vc
         XnAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727981829; x=1728586629;
        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=G14n863A5XJ+R3OWZM+ShGFWWx326n2e7KMDwbqTXOk=;
        b=ceSoRlaAVjVwX3ja4KWvx+q8j568+2K+A4niMyFlkoggvTbU+irPfQo16ghF0wXCNS
         yHM7OwGJa3YzSsv/lqqJ1A3TpQWaU+6ABQMixWi6GCZXZX/7ddwrwaFrFWEWMjGSirQb
         dgGay3MPwnEvoOexwP4u1UTSUlz5yx9GU8JCNNY2UYij4m1rG0zaC3UKo0ZHisd/+9aK
         9Boj9fPpkUszKSCXoxnMsg9xI1nDwSc2eKP/x8hbHmpjbTxwuVLw8zQmv/8Gnixg/hVU
         IZ3hO9qOGvmzr1S10hF1E5gV4rrU0QhkSFOX64YbwrfXaYsZqaTXt925YWuTZGS3RDiY
         FhxA==
X-Forwarded-Encrypted: i=1; AJvYcCVbbh7CdVMPbk0jak/jvu+RpPzplqzA3v+J0bzOjqj0+OXveUvO/MB+/e2cqJvMk8GvIqf37LWlyBM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyRSqIJuNHKZ/KH8FgnuOAxuFRAbiOpNGp5tgaKOJSs0XBKR2Dh
	2adFLlLLpYcTNtu9EbpI/nRdpLJdGHDqcZcQJ3PWAjEyf3gcVJVg
X-Google-Smtp-Source: AGHT+IGQBj0NQJQro7UzQrosv5xSzNbo69XNoBKLZB/U0eu07okLlmd7xHxmDysYwKwHtl0qaDQP6Q==
X-Received: by 2002:a2e:a543:0:b0:2fa:c5e5:629d with SMTP id 38308e7fff4ca-2faf3c1404bmr240971fa.3.1727981828500;
        Thu, 03 Oct 2024 11:57:08 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	qemu-arm@nongnu.org
Subject: [PULL v2 3/5] hw/xen: xenpvh: Disable buffered IOREQs for ARM
Date: Thu,  3 Oct 2024 20:56:52 +0200
Message-ID: <20241003185655.1480819-4-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Add a way to enable/disable buffered IOREQs for PVH machines
and disable them for ARM. ARM does not support buffered
IOREQ's nor the legacy way to map IOREQ info pages.

See the following for more details:
https://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=2fbd7e609e1803ac5e5c26e22aa8e4b5a6cddbb1
https://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/arm/ioreq.c;h=2e829d2e7f3760401b96fa7c930e2015fb1cf463;hb=HEAD#l138

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/arm/xen-pvh.c                | 3 +++
 hw/i386/xen/xen-pvh.c           | 3 +++
 hw/xen/xen-pvh-common.c         | 2 +-
 include/hw/xen/xen-pvh-common.h | 3 +++
 4 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/hw/arm/xen-pvh.c b/hw/arm/xen-pvh.c
index 04cb9855af..28af3910ea 100644
--- a/hw/arm/xen-pvh.c
+++ b/hw/arm/xen-pvh.c
@@ -66,6 +66,9 @@ static void xen_arm_machine_class_init(ObjectClass *oc, void *data)
      */
     mc->max_cpus = GUEST_MAX_VCPUS;
 
+    /* Xen/ARM does not use buffered IOREQs.  */
+    xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_OFF;
+
     /* List of supported features known to work on PVH ARM.  */
     xpc->has_tpm = true;
     xpc->has_virtio_mmio = true;
diff --git a/hw/i386/xen/xen-pvh.c b/hw/i386/xen/xen-pvh.c
index 45645667e9..f1f02d3311 100644
--- a/hw/i386/xen/xen-pvh.c
+++ b/hw/i386/xen/xen-pvh.c
@@ -89,6 +89,9 @@ static void xen_pvh_machine_class_init(ObjectClass *oc, void *data)
     /* We have an implementation specific init to create CPU objects.  */
     xpc->init = xen_pvh_init;
 
+    /* Enable buffered IOREQs.  */
+    xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_ATOMIC;
+
     /*
      * PCI INTX routing.
      *
diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 08641fdcec..76a9b2b945 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -195,7 +195,7 @@ static void xen_pvh_init(MachineState *ms)
 
     xen_pvh_init_ram(s, sysmem);
     xen_register_ioreq(&s->ioreq, ms->smp.max_cpus,
-                       HVM_IOREQSRV_BUFIOREQ_ATOMIC,
+                       xpc->handle_bufioreq,
                        &xen_memory_listener);
 
     if (s->cfg.virtio_mmio_num) {
diff --git a/include/hw/xen/xen-pvh-common.h b/include/hw/xen/xen-pvh-common.h
index bc09eea936..5cdd23c2f4 100644
--- a/include/hw/xen/xen-pvh-common.h
+++ b/include/hw/xen/xen-pvh-common.h
@@ -43,6 +43,9 @@ struct XenPVHMachineClass {
      */
     int (*set_pci_link_route)(uint8_t line, uint8_t irq);
 
+    /* Allow implementations to optionally enable buffered ioreqs.  */
+    uint8_t handle_bufioreq;
+
     /*
      * Each implementation can optionally enable features that it
      * supports and are known to work.
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:57:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:57:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809821.1222386 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swR0i-000090-UK; Thu, 03 Oct 2024 18:57:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809821.1222386; Thu, 03 Oct 2024 18:57: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 1swR0i-00008t-QE; Thu, 03 Oct 2024 18:57:12 +0000
Received: by outflank-mailman (input) for mailman id 809821;
 Thu, 03 Oct 2024 18:57: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swR0h-0007Yu-PK
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 18:57:11 +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 4bcda88b-81b9-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 20:57:11 +0200 (CEST)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2fadc95ccfcso16034911fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 11:57:11 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faecbf63eesm2692971fa.27.2024.10.03.11.57.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 11:57:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4bcda88b-81b9-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727981831; x=1728586631; 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=Mm+KI23c86LD33sZYRxxXCIhV12T/Ywht8Xuz1hXe+0=;
        b=EB8sWwDnh7OQVXn3Vbd/eRnhHD+nf/oKSPdzegTp0RQ5OL1oAUP19xhDaogdBsu07v
         T/zwhwtzhT5qmLZFMgs/SuwbozAlJCVBlpGJj+thO9z2nPTVYoGCl6oAM5GSaVKf7/x7
         riDNxiEESX1NuRiexVw1yhVxDxwmaFX0iivbUquySYYmPsVbnwH5WGP12MDDOhNHjelt
         lYOxI6hj8JDk7XEliT5rjOgEEALuPTQKX61/jSh8+LKgqwi8yPy43NWy1BtG247MO/gs
         q81ygufcO3oqz25qpiRSqOuxeqhBitGx/Sr0c6k6LYdnfMzIdfs2yIBQ8ADOYy7HD6Bp
         PCZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727981831; x=1728586631;
        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=Mm+KI23c86LD33sZYRxxXCIhV12T/Ywht8Xuz1hXe+0=;
        b=StbtiBtIyeYKaA0nSY9Md4xO1GkB4WQ6wosfjBC14xHKW0hqgcdug30D4MDVnTR6Rc
         x60sCcINMzifluH+gBENSADvzDRRzRQ0jPEgcWTs+xMx0kQi6kUMVMINTBt/mB9AFMab
         eZx2Q71awgUokizXqoXqixnAFThCbCciZjdgxgcehjVDqCnTHbA8tHeyr+wYN5H3e6ei
         iuKlcxhGJvYAeqfxLZObpKUwMPXBHdRTaQzAiMWCWK+f7ISC8A/VV8r26vjYHTW/lbpj
         USKkq0XUhma1b0kg2nEmHtGMGQMcCJQD7sRnznrPEmPdE7eTHf4OdOb9nRfUOFPZU7Q5
         tVvg==
X-Forwarded-Encrypted: i=1; AJvYcCXYDZjxZ926JtiBUaOls2NvtHQ2ZP+PozuWcyJljAoq3Vnfi7wTtTL1BNIZQ1pRDBT0jILA6aO0qMI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwWSgrniwOQvOuW9wCnSQ0lJ+p8aDTfBGwu/RhQeRDvrA3q8kP9
	rfqS/+M2i4powTtpOOsx3NkKQuaY72zjQANBDUB7xGlMW46Tl99rjsqezWD+
X-Google-Smtp-Source: AGHT+IE/e+F5VPNpTgi+p/cRxu4+PagJbnZ/GBiwrIy/ibjkQC9qwAlDuSB/1il5roTTxnglcO+Z8Q==
X-Received: by 2002:a2e:be28:0:b0:2fa:bf53:1dad with SMTP id 38308e7fff4ca-2faf3d9d202mr113291fa.31.1727981830633;
        Thu, 03 Oct 2024 11:57:10 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [PULL v2 4/5] hw/xen: xenpvh: Add pci-intx-irq-base property
Date: Thu,  3 Oct 2024 20:56:53 +0200
Message-ID: <20241003185655.1480819-5-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/xen/xen-pvh-common.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/hw/xen/xen-pvh-common.c b/hw/xen/xen-pvh-common.c
index 76a9b2b945..218ac851cf 100644
--- a/hw/xen/xen-pvh-common.c
+++ b/hw/xen/xen-pvh-common.c
@@ -218,6 +218,11 @@ static void xen_pvh_init(MachineState *ms)
             error_report("pci-ecam-size only supports values 0 or 0x10000000");
             exit(EXIT_FAILURE);
         }
+        if (!s->cfg.pci_intx_irq_base) {
+            error_report("PCI enabled but pci-intx-irq-base not set");
+            exit(EXIT_FAILURE);
+        }
+
         xenpvh_gpex_init(s, xpc, sysmem);
     }
 
@@ -273,6 +278,30 @@ XEN_PVH_PROP_MEMMAP(pci_ecam)
 XEN_PVH_PROP_MEMMAP(pci_mmio)
 XEN_PVH_PROP_MEMMAP(pci_mmio_high)
 
+static void xen_pvh_set_pci_intx_irq_base(Object *obj, Visitor *v,
+                                          const char *name, void *opaque,
+                                          Error **errp)
+{
+    XenPVHMachineState *xp = XEN_PVH_MACHINE(obj);
+    uint32_t value;
+
+    if (!visit_type_uint32(v, name, &value, errp)) {
+        return;
+    }
+
+    xp->cfg.pci_intx_irq_base = value;
+}
+
+static void xen_pvh_get_pci_intx_irq_base(Object *obj, Visitor *v,
+                                          const char *name, void *opaque,
+                                          Error **errp)
+{
+    XenPVHMachineState *xp = XEN_PVH_MACHINE(obj);
+    uint32_t value = xp->cfg.pci_intx_irq_base;
+
+    visit_type_uint32(v, name, &value, errp);
+}
+
 void xen_pvh_class_setup_common_props(XenPVHMachineClass *xpc)
 {
     ObjectClass *oc = OBJECT_CLASS(xpc);
@@ -318,6 +347,13 @@ do {                                                                      \
         OC_MEMMAP_PROP(oc, "pci-ecam", pci_ecam);
         OC_MEMMAP_PROP(oc, "pci-mmio", pci_mmio);
         OC_MEMMAP_PROP(oc, "pci-mmio-high", pci_mmio_high);
+
+        object_class_property_add(oc, "pci-intx-irq-base", "uint32_t",
+                                  xen_pvh_get_pci_intx_irq_base,
+                                  xen_pvh_set_pci_intx_irq_base,
+                                  NULL, NULL);
+        object_class_property_set_description(oc, "pci-intx-irq-base",
+                                  "Set PCI INTX interrupt base line.");
     }
 
 #ifdef CONFIG_TPM
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 18:57:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 18:57:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809822.1222396 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swR0m-0000X7-6f; Thu, 03 Oct 2024 18:57:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809822.1222396; Thu, 03 Oct 2024 18:57: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 1swR0m-0000Wb-2c; Thu, 03 Oct 2024 18:57:16 +0000
Received: by outflank-mailman (input) for mailman id 809822;
 Thu, 03 Oct 2024 18:57: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=3wyt=Q7=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1swR0k-00082k-As
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 18:57:14 +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 4caddc82-81b9-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 20:57:12 +0200 (CEST)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2fac63abf63so15451941fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 11:57:12 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faecc13b2asm2706361fa.69.2024.10.03.11.57.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 03 Oct 2024 11:57:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4caddc82-81b9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1727981832; x=1728586632; 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=7NqZgDSIdmym8k9v4wrElx9POiJdcsjS85l4BMSFw2Y=;
        b=IFY7a/FyJzyfhvjgBBfsOp7pEBH5rtEGckImg9AlxNXtFefHzVpaop6sMdoudzwdCr
         orq8hPfEvEBJ+QY6acH7bTCjo+LZo4N5Uc5zKv8l19gmy7Tc8x0smLo3c74J3Fp2JhWc
         etpgNdAEOuK2WiSrbY/g4qjAiVN0lRuLKyUz68S2VeC2j0Dkm3B82bRk5x74tr+kk2JF
         cAi/QCCIz/bUrhlvBIcEtJ4q7pTuPasw7VrgxlXPqKOYMw8kNNl0Ka9jQrRmy56dKUx4
         EwRTNk3CSnGzS0iB800Dc+lS2qUnMNAjvEv81PABPIuy+w428vdzCXkx744lEPGcCFCa
         O+3g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727981832; x=1728586632;
        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=7NqZgDSIdmym8k9v4wrElx9POiJdcsjS85l4BMSFw2Y=;
        b=JY/e9MeX4AHi5K7qlDRquLyZmtIaPATuvZ3ND/FK7FgpG4KyLMrFwJRX9chQOxwORR
         P/XtQaFKY5Z6q0ouezVpXyfPlrF34NfE6eRcLVWJcxVfe0aCqRCIysmIsv01iYab3De0
         /cdWXNNdKL3DlT+aQBu/eIo+9C2hCpXsm+JRfjmZj/2Bgw6wzRwDd/guLzglUJvoBGci
         ZA8odQ6ywG7c7Rg/RTkAbwOV/aMluzg4KarWbgEfOyQizW+M3bhvOHIiHeQJgV7k2PXM
         WgSiOfOx1y0ot2zWFagtcI+A7RAFi1Vo9nfx2HGghD8ZKeBtV6FMolvnD8nBAC5sIzA0
         ywQw==
X-Forwarded-Encrypted: i=1; AJvYcCVfL0v6Y6Op8yMAhIwnye27fLalZ6jLb055ji7sslPbX+oQrDP1mZyESJxLZafDt3oz8q2TLXUdRhg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwFjinsyRgngQFIpvQTmNzPw3FZUczwIAWAQajGOe20sG5YgQsa
	Qaad8BtYaupaLf8PX8+D4b8Q3mp/ynrDL1roaSdauPOVPiTSnZyP
X-Google-Smtp-Source: AGHT+IGdtsrhdXwp14pMpvdvc+CdpPcIPMIZgK2C81T/sez5hURdlMZpHD5usN8FxM0Nz2NV9uyp/Q==
X-Received: by 2002:a2e:be20:0:b0:2f5:2ba:2c99 with SMTP id 38308e7fff4ca-2faf3c1400cmr307781fa.9.1727981832153;
        Thu, 03 Oct 2024 11:57:12 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	qemu-arm@nongnu.org
Subject: [PULL v2 5/5] hw/arm: xenpvh: Enable PCI for ARM PVH
Date: Thu,  3 Oct 2024 20:56:54 +0200
Message-ID: <20241003185655.1480819-6-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Enable PCI support for the ARM Xen PVH machine.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/arm/xen-pvh.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/hw/arm/xen-pvh.c b/hw/arm/xen-pvh.c
index 28af3910ea..33f0dd5982 100644
--- a/hw/arm/xen-pvh.c
+++ b/hw/arm/xen-pvh.c
@@ -39,6 +39,16 @@ static void xen_arm_instance_init(Object *obj)
                                          VIRTIO_MMIO_DEV_SIZE };
 }
 
+static void xen_pvh_set_pci_intx_irq(void *opaque, int intx_irq, int level)
+{
+    XenPVHMachineState *s = XEN_PVH_MACHINE(opaque);
+    int irq = s->cfg.pci_intx_irq_base + intx_irq;
+
+    if (xendevicemodel_set_irq_level(xen_dmod, xen_domid, irq, level)) {
+        error_report("xendevicemodel_set_pci_intx_level failed");
+    }
+}
+
 static void xen_arm_machine_class_init(ObjectClass *oc, void *data)
 {
     XenPVHMachineClass *xpc = XEN_PVH_MACHINE_CLASS(oc);
@@ -69,7 +79,11 @@ static void xen_arm_machine_class_init(ObjectClass *oc, void *data)
     /* Xen/ARM does not use buffered IOREQs.  */
     xpc->handle_bufioreq = HVM_IOREQSRV_BUFIOREQ_OFF;
 
+    /* PCI INTX delivery.  */
+    xpc->set_pci_intx_irq = xen_pvh_set_pci_intx_irq;
+
     /* List of supported features known to work on PVH ARM.  */
+    xpc->has_pci = true;
     xpc->has_tpm = true;
     xpc->has_virtio_mmio = true;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 03 19:38:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 19:38:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809856.1222408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swReZ-0003Cb-G3; Thu, 03 Oct 2024 19:38:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809856.1222408; Thu, 03 Oct 2024 19:38: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 1swReZ-0003CU-DX; Thu, 03 Oct 2024 19:38:23 +0000
Received: by outflank-mailman (input) for mailman id 809856;
 Thu, 03 Oct 2024 19:38: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=CNe7=Q7=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swReY-0003CO-6w
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 19:38:22 +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 0b79d4e5-81bf-11ef-a0ba-8be0dac302b0;
 Thu, 03 Oct 2024 21:38:20 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a90349aa7e5so194092466b.0
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 12:38:20 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104c970esm122773366b.214.2024.10.03.12.38.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 12:38:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b79d4e5-81bf-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1727984300; x=1728589100; 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=1wCH17kqyGTYHLjt08ZQck/rF9pMp0Oc8Bj2uoNrZ0E=;
        b=PRnTwRhOmj6gyRxy7HolutF5uK4NRncwnKyAx6myrGJI7m63gMhB2YZmQTr9pFll5a
         adq4wPEZAyhQP+xIpFSBUdH3gpkSlcNr7n5QkbwRm8isUyW00QMoH9DuWPz77l3gC4y9
         IXU8oqNkuTPVJJ95aiB04s9GQj1myDEAEJc20=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1727984300; x=1728589100;
        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=1wCH17kqyGTYHLjt08ZQck/rF9pMp0Oc8Bj2uoNrZ0E=;
        b=D3MEv1mqgdeb4R5dX+v76CDA+1IFCofcdMlTaHjqqbtMBgUbET79BxKRRmxH41g64I
         C53Thi0W079GGyP8ye2AIM30xTWACimGVXDpz18BB2qCpOkyKRgsYnQkbp3KPBtPslnC
         lvJ+aFNzJVxUJCnHrC4yTEWs6oStkSpG8wSRsRSbT5nKbgO7hjhfexVBX0JrwmXe3MHt
         iq2x0chIljAKm0KvDv4HwNCymNlOnoR8NlmcCUl1ez2PWjwxbZiJn6VxLjBqIPjnOPM0
         OsmJkHx2n/DN6ulvC0S+7yr2OzBJujILEPBvnMv+uuKlZnL1yLmn2bvTepTXoQIXeB54
         tHYg==
X-Forwarded-Encrypted: i=1; AJvYcCW2AER8nNqiLYh6VJWfgFCzEzkHW+BDvR4Qni01wJjOJnMKxlkUBjguevwYdtJZPHyZ6hv/IyqsFas=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzpm89+OG1zp/7OByVutp2YN0EJNO8dy6h2XwwvAEGD8DO3H+gf
	PWzg9hBjvNc8exPa0/1F7OKC5BrKXCKSxjv9JWYavzIqOsFg86uJvMrF2hmVG/NprvEo9/WN1P4
	duhGkDw==
X-Google-Smtp-Source: AGHT+IF4hZun5r4iwHw4wi7UHw++RSMCswGoNTaVTecrKef6+p9Uf82S7mvJQmU1u11vJDhesn1/wA==
X-Received: by 2002:a17:907:3f86:b0:a8d:6648:813f with SMTP id a640c23a62f3a-a991bd04dfemr37484066b.3.1727984299793;
        Thu, 03 Oct 2024 12:38:19 -0700 (PDT)
Message-ID: <2b42323a-961a-4dd8-8cde-f4b19eac0dc5@citrix.com>
Date: Thu, 3 Oct 2024 20:38:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/2] x86/fpu: Combine fpu_ctxt and xsave_area in
 arch_vcpu
To: Alejandro Vallejo <alejandro.vallejo@cloud.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>
References: <20240813142119.29012-1-alejandro.vallejo@cloud.com>
 <20240813142119.29012-2-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20240813142119.29012-2-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 13/08/2024 3:21 pm, Alejandro Vallejo wrote:
> @@ -299,44 +299,14 @@ void save_fpu_enable(void)
>  /* Initialize FPU's context save area */
>  int vcpu_init_fpu(struct vcpu *v)
>  {
> -    int rc;
> -
>      v->arch.fully_eager_fpu = opt_eager_fpu;
> -
> -    if ( (rc = xstate_alloc_save_area(v)) != 0 )
> -        return rc;
> -
> -    if ( v->arch.xsave_area )
> -        v->arch.fpu_ctxt = &v->arch.xsave_area->fpu_sse;
> -    else
> -    {
> -        BUILD_BUG_ON(__alignof(v->arch.xsave_area->fpu_sse) < 16);
> -        v->arch.fpu_ctxt = _xzalloc(sizeof(v->arch.xsave_area->fpu_sse),
> -                                    __alignof(v->arch.xsave_area->fpu_sse));
> -        if ( v->arch.fpu_ctxt )
> -        {
> -            fpusse_t *fpu_sse = v->arch.fpu_ctxt;
> -
> -            fpu_sse->fcw = FCW_DEFAULT;
> -            fpu_sse->mxcsr = MXCSR_DEFAULT;
> -        }
> -        else
> -            rc = -ENOMEM;

This looks wonky.  It's not, because xstate_alloc_save_area() contains
the same logic for setting up FCW/MXCSR.

It would be helpful to note this in the commit message.  Something about
deduplicating the setup alongside deduplicating the pointer.

> diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> index bca3258d69ac..3da60af2a44a 100644
> --- a/xen/arch/x86/include/asm/domain.h
> +++ b/xen/arch/x86/include/asm/domain.h
> @@ -592,11 +592,11 @@ struct pv_vcpu
>  struct arch_vcpu
>  {
>      /*
> -     * guest context (mirroring struct vcpu_guest_context) common
> -     * between pv and hvm guests
> +     * Guest context common between PV and HVM guests. Includes general purpose
> +     * registers, segment registers and other parts of the exception frame.
> +     *
> +     * It doesn't contain FPU state, as that lives in xsave_area instead.
>       */

This new comment isn't really correct either.  arch_vcpu contains the
PV/HVM union, so it not only things which are common between the two.

I'd either leave it alone, or delete it entirely.  It doesn't serve much
purpose IMO, and it is going to bitrot very quickly (FRED alone will
change two of the state groups you mention).

> -
> -    void              *fpu_ctxt;
>      struct cpu_user_regs user_regs;
>  
>      /* Debug registers. */
> diff --git a/xen/arch/x86/x86_emulate/blk.c b/xen/arch/x86/x86_emulate/blk.c
> index e790f4f90056..28b54f26fe29 100644
> --- a/xen/arch/x86/x86_emulate/blk.c
> +++ b/xen/arch/x86/x86_emulate/blk.c
> @@ -11,7 +11,8 @@
>      !defined(X86EMUL_NO_SIMD)
>  # ifdef __XEN__
>  #  include <asm/xstate.h>
> -#  define FXSAVE_AREA current->arch.fpu_ctxt
> +#  define FXSAVE_AREA ((struct x86_fxsr *) \
> +                           (void *)&current->arch.xsave_area->fpu_sse)

This isn't a like-for-like replacement.

Previously FXSAVE_AREA's type was void *.  I'd leave the expression as just

    (void *)&current->arch.xsave_area->fpu_sse

because struct x86_fxsr is not the only type needing to be used here in
due course.   (There are 8 variations of data layout for older
instructions.)

>  # else
>  #  define FXSAVE_AREA get_fpu_save_area()
>  # endif
> diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
> index 5c4144d55e89..850ee31bd18c 100644
> --- a/xen/arch/x86/xstate.c
> +++ b/xen/arch/x86/xstate.c
> @@ -507,9 +507,16 @@ int xstate_alloc_save_area(struct vcpu *v)
>      unsigned int size;
>  
>      if ( !cpu_has_xsave )
> -        return 0;
> -
> -    if ( !is_idle_vcpu(v) || !cpu_has_xsavec )
> +    {
> +        /*
> +         * This is bigger than FXSAVE_SIZE by 64 bytes, but it helps treating
> +         * the FPU state uniformly as an XSAVE buffer even if XSAVE is not
> +         * available in the host. Note the alignment restriction of the XSAVE
> +         * area are stricter than those of the FXSAVE area.
> +         */

Can I suggest the following?

"On non-XSAVE systems, we allocate an XSTATE buffer for simplicity. 
XSTATE is backwards compatible to FXSAVE, and only one cacheline larger."

It's rather more concise.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 20:23:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 20:23:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809862.1222419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swSLi-0003qs-Py; Thu, 03 Oct 2024 20:22:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809862.1222419; Thu, 03 Oct 2024 20:22: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 1swSLi-0003ql-MN; Thu, 03 Oct 2024 20:22:58 +0000
Received: by outflank-mailman (input) for mailman id 809862;
 Thu, 03 Oct 2024 20:22: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=g6hD=Q7=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1swSLh-0003qc-R4
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 20:22:57 +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 457dfeda-81c5-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 22:22:55 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id CCCA15C59CA;
 Thu,  3 Oct 2024 20:22:49 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C7DDCC4CECC;
 Thu,  3 Oct 2024 20:22: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: 457dfeda-81c5-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727986973;
	bh=Vifhhk/GMAApuFJD0YV7AISAVU4EMbqZ47MfwtUkfPo=;
	h=Date:From:To:cc:Subject:From;
	b=cCpzeERSYyoc4O+w/bPM/2lJCtnSc4h5+cF1SowjlMdYqlWQosvWGozyOGVM979Ny
	 QpwhGYk2woJyRnZk/SgL2TBJqeSeSTo1dkjYiVIhNK53pbBvUDlnFATjIWDDXK1Evw
	 UYdcLdh8FZbL0ZAUTqgOzy9X+faUIRawJ5/qkKSYoKUuey4RLeQcRkc+DJmzBNuSXu
	 Vgda3O/lkPSs/1JCUju/zbzks3+BXjkO3OJr/oczWa+p89GGdnpQVvp9t/FZ/Bcuk/
	 FkPuze66SKwxcSeJSa6f65DHVdn6MTfzh5ZQf23ds9ugobvUGPapoyg8js0tsYFUXD
	 6e4AsU9Ohtr8w==
Date: Thu, 3 Oct 2024 13:22:51 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: xen-devel@lists.xenproject.org
cc: sstabellini@kernel.org, cardoe@cardoe.com, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    Michal Orzel <michal.orzel@amd.com>, victorm.lira@amd.com
Subject: [PATCH] automation: introduce TEST_TIMEOUT_OVERRIDE
Message-ID: <alpine.DEB.2.22.394.2410031319100.1138574@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

TEST_TIME is set as a CI/CD project variable, as it should be, to match
the capability and speed of the testing infrastructure.

As it turns out, TEST_TIME defined in test.yaml cannot override
TEST_TIME defined as CI/CD project variable. As a consequence, today the
TEST_TIME setting in test.yaml for the Xilinx jobs is ignored.

Instead, rename TEST_TIMEOUT to TEST_TIMEOUT_OVERRIDE in test.yaml and
check for TEST_TIMEOUT_OVERRIDE first in console.exp.

Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 8675016b6a..e947736195 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -84,7 +84,7 @@
   variables:
     CONTAINER: ubuntu:xenial-xilinx
     LOGFILE: qemu-smoke-xilinx.log
-    TEST_TIMEOUT: 120
+    TEST_TIMEOUT_OVERRIDE: 120
   artifacts:
     paths:
       - smoke.serial
@@ -104,7 +104,7 @@
     LOGFILE: xilinx-smoke-x86_64.log
     XEN_CMD_CONSOLE: "console=com2 com2=57600,8n1,0x2F8,4"
     TEST_BOARD: "crater"
-    TEST_TIMEOUT: 1000
+    TEST_TIMEOUT_OVERRIDE: 1000
   artifacts:
     paths:
       - smoke.serial
diff --git a/automation/scripts/console.exp b/automation/scripts/console.exp
index f538aa6bd0..310543c33e 100755
--- a/automation/scripts/console.exp
+++ b/automation/scripts/console.exp
@@ -1,6 +1,8 @@
 #!/usr/bin/expect -f
 
-if {[info exists env(TEST_TIMEOUT)]} {
+if {[info exists env(TEST_TIMEOUT_OVERRIDE)]} {
+    set timeout $env(TEST_TIMEOUT_OVERRIDE)
+} elseif {[info exists env(TEST_TIMEOUT)]} {
     set timeout $env(TEST_TIMEOUT)
 } else {
     set timeout 1500


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 20:24:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 20:24:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809866.1222429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swSMy-0004Lu-4S; Thu, 03 Oct 2024 20:24:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809866.1222429; Thu, 03 Oct 2024 20: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 1swSMy-0004Ln-0k; Thu, 03 Oct 2024 20:24:16 +0000
Received: by outflank-mailman (input) for mailman id 809866;
 Thu, 03 Oct 2024 20:24: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=g6hD=Q7=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1swSMw-0004Lf-TZ
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 20:24:14 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 73a33fce-81c5-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 22:24:12 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 24B05A40807;
 Thu,  3 Oct 2024 20:24:03 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9DA8AC4CECC;
 Thu,  3 Oct 2024 20:24: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: 73a33fce-81c5-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1727987051;
	bh=KvrSMVbDp/uwY0BL2iyNQdGPQ2wBJNEtsQ7HwX7FiMY=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=QQmmaD7JmaqU2Eq+U0XDqomNI0iZIyne8/o+xOVgIRV+UcVIhYi+Kdyy2m2Piw0Ro
	 +c8zKREpT12cmnVBYr1zQ2eoxyZ2yfWGzKRk9d/Wao+hhsVW72KfoVvhoibRhl+dSo
	 1V9Qfqog5UGWxlcdyg/McD7Yhcb6gNBwVQwy+6UtvmO2xxV+kjWx3SJrjZ1Hmdb14O
	 4m57mIb3qgleeGs+41DcuZj3Pl7f3J2szyZ/V5xlM+O3O5ylsCeDgaW0ZN42fVwFbw
	 NopOqvjCs1AyUZRGLD/rADax37NxNflRFxD5yHyNP5QMDbvnOw3Lt6wLiaveEOkncE
	 opSLf06RqWUWg==
Date: Thu, 3 Oct 2024 13:24:09 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Stefano Stabellini <sstabellini@kernel.org>
cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/2] automation: add a smoke test for xen.efi on X86
In-Reply-To: <alpine.DEB.2.22.394.2410021731490.1138574@ubuntu-linux-20-04-desktop>
Message-ID: <alpine.DEB.2.22.394.2410031323020.1138574@ubuntu-linux-20-04-desktop>
References: <20241002124245.716302-1-marmarek@invisiblethingslab.com> <20241002124245.716302-2-marmarek@invisiblethingslab.com> <alpine.DEB.2.22.394.2410021516180.1138574@ubuntu-linux-20-04-desktop> <alpine.DEB.2.22.394.2410021517500.1138574@ubuntu-linux-20-04-desktop>
 <Zv3Pbx1gkeypGQem@mail-itl> <alpine.DEB.2.22.394.2410021618540.1138574@ubuntu-linux-20-04-desktop> <Zv3kVEljCcM-Ww91@mail-itl> <alpine.DEB.2.22.394.2410021731490.1138574@ubuntu-linux-20-04-desktop>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-850876684-1727987009=:1138574"
Content-ID: <alpine.DEB.2.22.394.2410031323470.1138574@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-850876684-1727987009=:1138574
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410031323471.1138574@ubuntu-linux-20-04-desktop>

On Wed, 2 Oct 2024, Stefano Stabellini wrote:
> On Thu, 3 Oct 2024, Marek Marczykowski-Górecki wrote:
> > On Wed, Oct 02, 2024 at 04:30:25PM -0700, Stefano Stabellini wrote:
> > > On Thu, 3 Oct 2024, Marek Marczykowski-Górecki wrote:
> > > > The problem is this doesn't work. The group-level variable overrides the
> > > > one in yaml. See the commit message and the link there...
> > > 
> > > Now I understand the problem, well spotted, thanks!
> > > 
> > > The idea behind having TEST_TIMEOUT defined as a project CI/CD variable
> > > is that it depends on the test infrastructure rather than the Xen code.
> > > So if we suddenly had slower runners we could change TEST_TIMEOUT
> > > without having to change the Xen code itself. So I think we should keep
> > > TEST_TIMEOUT as a project CI/CD variable.
> > > 
> > > I am not a fan of overwriting the TEST_TIMEOUT variable in the test
> > > scripts, because one test script can be used for multiple different
> > > tests, possibly even with different runners. For instance
> > > qubes-x86-64.sh works with a couple of different hardware runners that
> > > could have different timeout values. But I think it would work OK for
> > > now for our hardware-based tests (e.g. xilinx-smoke-dom0less-arm64.sh
> > > and qubes-x86-64.sh could overwrite TEST_TIMEOUT).
> > > 
> > > For this specific XTF test, I am not sure it is worth optimizing the
> > > timeout, maybe we should leave it as default. 
> > 
> > The default of 25min is quite wasteful for XTF test that failed...
> > 
> > > However if we wanted to
> > > lower the timeout value, overwriting it the way you did is OKish as I
> > > cannot think of another way.
> > 
> > If we'd need this option more often, Maybe we could set
> > TEST_TIMEOUT_OVERRIDE in test yaml, and then test script use that (if
> > present) instead? Or maybe have few "classes" of timeouts set globally
> > (TEST_TIMEOUT_SHORT, TEST_TIMEOUT_MEDIUM, TEST_TIMEOUT_LONG? or some
> > better named categories). But I don't think it's worth it for this XTF
> > test yet.
> 
> Agreed, and good idea about TEST_TIMEOUT_OVERRIDE

I decided to send a patch to implement it as I didn't want to keep the
TEST_TIMEOUT as is (ignored) for the Xilinx jobs

https://marc.info/?l=xen-devel&m=172798685928204


You should be able to use TEST_TIMEOUT_OVERRIDE in your test.yaml for
this test
--8323329-850876684-1727987009=:1138574--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 21:06:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 21:06:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809873.1222439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swT1K-0002ov-4A; Thu, 03 Oct 2024 21:05:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809873.1222439; Thu, 03 Oct 2024 21:05: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 1swT1K-0002oo-00; Thu, 03 Oct 2024 21:05:58 +0000
Received: by outflank-mailman (input) for mailman id 809873;
 Thu, 03 Oct 2024 21:05: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=GA31=Q7=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swT1I-0002oi-23
 for xen-devel@lists.xenproject.org; Thu, 03 Oct 2024 21:05:56 +0000
Received: from fout-a6-smtp.messagingengine.com
 (fout-a6-smtp.messagingengine.com [103.168.172.149])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 45fcfa82-81cb-11ef-99a2-01e77a169b0f;
 Thu, 03 Oct 2024 23:05:53 +0200 (CEST)
Received: from phl-compute-02.internal (phl-compute-02.phl.internal
 [10.202.2.42])
 by mailfout.phl.internal (Postfix) with ESMTP id DB68E138020C;
 Thu,  3 Oct 2024 17:05:51 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Thu, 03 Oct 2024 17:05:51 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 3 Oct 2024 17:05:50 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 45fcfa82-81cb-11ef-99a2-01e77a169b0f
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=1727989551;
	 x=1728075951; bh=c+5OFLAKLeaXi4xTAdxu+JI5KfktZfkvOoDYH4SZxVY=; b=
	K80+St/LtZp9TftIYxGUNNlj+MW7D8oR6xsIa3u1q6CLyc3AL9GsNasxeEYggKIl
	84ciTn3krzXjz9Cd5Kdz9+9lItZKL2PE7pwOkC2k5boIxRbGLRU/Eg8Tyh+Ijagr
	HUGwzSmpWzunKWnr6dHzxrxgiWEKYMnH4EJQPezzWmDupr64EV8taThsGDeZx/+q
	YDaOiD0oNPnRJ1lUMjahFyk0eag441lmc82Z/tZBLlahCHMboti/28NGjtv7WXtc
	eOJ122bCNGWZHd+vVDOJygUt7P7iYI6Vtxv+ZhEPEoxaddLkU3B7XtLRkrrcNjB/
	NkxoYKdI1zuFfv9eb3sGXw==
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=1727989551; x=1728075951; bh=c+5OFLAKLeaXi4xTAdxu+JI5Kfkt
	ZfkvOoDYH4SZxVY=; b=RguNitMXOEHgbMC4/5K6M5i5irMzaoxANEsJkcKCUoa5
	5TqE9+kH63HK2e/N/lTCkJ7Df4RR08BxjNWHLff5/TvTcceX8QVMNpR+Z+POG66z
	Qe+UTKmMwp9K8a3mRC9wkz3NDwM7e8EisfZK0tWrXTTGFQYZgpD2RXX1gZFzu6KJ
	nmRtJpkks16l5ZI0fGhN4AjjYs7X4IAautQO+EcPzlYVrEkfoKk/llhoouOVWD8v
	ThntoRzz1OgCWooMFUpIYFlrYSpfr7plrl0to56oCpS1Yn2/Uz4y8LlkyRAifPbN
	CFS8vtmOJ9BbJcpfZmpe0omJGO/0E7zTHV77q3R9Rg==
X-ME-Sender: <xms:Lwf_ZrWQgYLOlCs7KdCkv_d65WKQNRpDvdg8k0SBdanzaD8oguk6gQ>
    <xme:Lwf_ZjlX_52dkpydUvoJUXuiVr9lZuOsGxIIdUi6Nyk9lxISCWg0gvVtfXREg3s5C
    JODeAhb-ysenw>
X-ME-Received: <xmr:Lwf_ZnaxAXySxwVQ8yZjD5B1EQwFdWWfSbDDlTvK6Or1nBKILgsiKf07hCSA51tkPCfjX_6QDnHW0PeqH3DUA73uzfcdYighGA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvuddgudehkecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp
    uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg
    hnthhsucdlqddutddtmdenucfjughrpeffhffvvefukfhfgggtuggjsehgtderredttdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpefgudelteefvefhfeehieetleeihfejhfeludevteetkeevtedtvd
    egueetfeejudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr
    ohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpd
    hnsggprhgtphhtthhopeehpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehsshht
    rggsvghllhhinhhisehkvghrnhgvlhdrohhrghdprhgtphhtthhopeigvghnqdguvghvvg
    hlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopegtrghrugho
    vgestggrrhguohgvrdgtohhmpdhrtghpthhtohepmhhitghhrghlrdhorhiivghlsegrmh
    gurdgtohhmpdhrtghpthhtohepvhhitghtohhrmhdrlhhirhgrsegrmhgurdgtohhm
X-ME-Proxy: <xmx:Lwf_ZmX_04PYkAeza1MOKH-gM-s13gtp_8uMUD3O_5GejAEdaAfBLg>
    <xmx:Lwf_ZllAGNxfvwnWR49KsRyRljWQjlReQSkgnIbtZ_WkTQmSkQo7dw>
    <xmx:Lwf_Zjf4FYHcBXKgsNQOIMji8MJ6CwZKYYtIUCRasPKiE7ELJY3VxQ>
    <xmx:Lwf_ZvGqrar6cNo6n0mYMBkgrQL3iKASB59P2cfTVTD6rIm2550BGQ>
    <xmx:Lwf_ZuBGVZYzWapuHZbog4f_sLsAkoj6UIH1ZzWrfsaq_KA81ngdtCOD>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 3 Oct 2024 23:05:46 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, cardoe@cardoe.com,
	Michal Orzel <michal.orzel@amd.com>, victorm.lira@amd.com
Subject: Re: [PATCH] automation: introduce TEST_TIMEOUT_OVERRIDE
Message-ID: <Zv8HLCxOXxWN1GHx@mail-itl>
References: <alpine.DEB.2.22.394.2410031319100.1138574@ubuntu-linux-20-04-desktop>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="Dn2qgiqVkBPwJ4Z9"
Content-Disposition: inline
In-Reply-To: <alpine.DEB.2.22.394.2410031319100.1138574@ubuntu-linux-20-04-desktop>


--Dn2qgiqVkBPwJ4Z9
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 3 Oct 2024 23:05:46 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, cardoe@cardoe.com,
	Michal Orzel <michal.orzel@amd.com>, victorm.lira@amd.com
Subject: Re: [PATCH] automation: introduce TEST_TIMEOUT_OVERRIDE

On Thu, Oct 03, 2024 at 01:22:51PM -0700, Stefano Stabellini wrote:
> TEST_TIME is set as a CI/CD project variable, as it should be, to match
> the capability and speed of the testing infrastructure.
>=20
> As it turns out, TEST_TIME defined in test.yaml cannot override
> TEST_TIME defined as CI/CD project variable. As a consequence, today the
> TEST_TIME setting in test.yaml for the Xilinx jobs is ignored.

s/TEST_TIME/\0OUT/

>=20
> Instead, rename TEST_TIMEOUT to TEST_TIMEOUT_OVERRIDE in test.yaml and
> check for TEST_TIMEOUT_OVERRIDE first in console.exp.
>=20
> Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>

with commit message fixed:
Reviewed-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.c=
om>

> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.y=
aml
> index 8675016b6a..e947736195 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -84,7 +84,7 @@
>    variables:
>      CONTAINER: ubuntu:xenial-xilinx
>      LOGFILE: qemu-smoke-xilinx.log
> -    TEST_TIMEOUT: 120
> +    TEST_TIMEOUT_OVERRIDE: 120
>    artifacts:
>      paths:
>        - smoke.serial
> @@ -104,7 +104,7 @@
>      LOGFILE: xilinx-smoke-x86_64.log
>      XEN_CMD_CONSOLE: "console=3Dcom2 com2=3D57600,8n1,0x2F8,4"
>      TEST_BOARD: "crater"
> -    TEST_TIMEOUT: 1000
> +    TEST_TIMEOUT_OVERRIDE: 1000
>    artifacts:
>      paths:
>        - smoke.serial
> diff --git a/automation/scripts/console.exp b/automation/scripts/console.=
exp
> index f538aa6bd0..310543c33e 100755
> --- a/automation/scripts/console.exp
> +++ b/automation/scripts/console.exp
> @@ -1,6 +1,8 @@
>  #!/usr/bin/expect -f
> =20
> -if {[info exists env(TEST_TIMEOUT)]} {
> +if {[info exists env(TEST_TIMEOUT_OVERRIDE)]} {
> +    set timeout $env(TEST_TIMEOUT_OVERRIDE)
> +} elseif {[info exists env(TEST_TIMEOUT)]} {
>      set timeout $env(TEST_TIMEOUT)
>  } else {
>      set timeout 1500

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb/BywACgkQ24/THMrX
1ywZbQf/bXFGyHqYBuCngwarb3tybRKGEBEjmTBYA4DFUNKdm6pO+DUEnb/x/+Vv
uC2iW1IqXz0elaI0C6eRiO6i/1+7QrjJJqXHekRDI2x8l/5JMGx5sQfn9toqPTCQ
0WA/UDwLsYTlZi5h75UsmIfwbBddN+gEp/F/En5p1Hcg0CSvjX5DY24XAa0ENhVa
HF5tCy9XHmdX9xTqb/FDbTln6eiB+2wdyDjnsw/88yp5Ceutq+6w5w+T0bmxYWMg
g2jbmzHiCVktD5Vfu0lpgYdkNSZXWA3pUZr83iB1s35E6r3PIol+cnNfcDZTxlLE
LRhnshX40aYFs0s6r1d+/SWh5rx0OA==
=5wI0
-----END PGP SIGNATURE-----

--Dn2qgiqVkBPwJ4Z9--


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 22:22:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 22:22:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809885.1222449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swUDD-0005p7-9P; Thu, 03 Oct 2024 22:22:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809885.1222449; Thu, 03 Oct 2024 22: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 1swUDD-0005p0-6O; Thu, 03 Oct 2024 22:22:19 +0000
Received: by outflank-mailman (input) for mailman id 809885;
 Thu, 03 Oct 2024 22:22: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 1swUDC-0005oq-0l; Thu, 03 Oct 2024 22:22: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 1swUDB-0005D2-OR; Thu, 03 Oct 2024 22:22: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 1swUDB-0001tJ-B1; Thu, 03 Oct 2024 22:22:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swUDB-0003Gs-AP; Thu, 03 Oct 2024 22:22: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=svLc/g0hsGDSFgx7FlnL+E1fqehGGydPUH2AumZt+Y8=; b=3KiRbuYXL/ZjKYlymc8e17DdGZ
	MFe2mF1zfi0gGKarXPNZTB2LydQ2DZTqqWlSsgJ1/ddJgHyaphlEEvj6S03WrmSN8phg/a9uaiBrg
	U9vH5WCoWH5OlJMe8MsA/7/hLZ7sGLm3rweFrYa1WJ6YlMTizNbNfHSqmdovXJR0mAzQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187956-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187956: 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=163338e6fbec2c549d55782e1ae4cf238b793f4a
X-Osstest-Versions-That:
    xen=eb21ce14d709ef0c0030d0625028a4868c81126f
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 22:22:17 +0000

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

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                  163338e6fbec2c549d55782e1ae4cf238b793f4a
baseline version:
 xen                  eb21ce14d709ef0c0030d0625028a4868c81126f

Last test of basis   187954  2024-10-03 14:02:14 Z    0 days
Testing same since   187956  2024-10-03 19:04:06 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.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
   eb21ce14d7..163338e6fb  163338e6fbec2c549d55782e1ae4cf238b793f4a -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 03 22:47:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 03 Oct 2024 22:47:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809893.1222458 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swUbZ-0000jf-60; Thu, 03 Oct 2024 22:47:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809893.1222458; Thu, 03 Oct 2024 22: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 1swUbZ-0000jY-3L; Thu, 03 Oct 2024 22:47:29 +0000
Received: by outflank-mailman (input) for mailman id 809893;
 Thu, 03 Oct 2024 22: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 1swUbY-0000jO-Dr; Thu, 03 Oct 2024 22: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 1swUbY-0005cw-AW; Thu, 03 Oct 2024 22: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 1swUbY-0002XU-1H; Thu, 03 Oct 2024 22:47:28 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swUbY-0003bk-0o; Thu, 03 Oct 2024 22:47: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=t7aJFZWz94xpVjJrsVpBQ2Xg+06BQC/ARakPYgsPF6k=; b=YwQudF6d3CAufR1LsoX3sba4KV
	SKvsoRbfOMyg0gU8u1FW6jIazYU70Edh0PQZ5HaggOeEWW6bu0eihM3An+vu9To8Kgjz+etpVQZTR
	grdGMoez/vxLFOipF6hCy2wXwP0ONR8Pa7DbjmGzwZruJYbCd9cZBIROBiSRZMu0Q0nk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187957-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187957: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=2fdc39d09d49a57e8dc87022b1dedd958f8c8d6a
X-Osstest-Versions-That:
    ovmf=f962adc8a089949ecc730ba17f08234b52e3952d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 03 Oct 2024 22:47:28 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 2fdc39d09d49a57e8dc87022b1dedd958f8c8d6a
baseline version:
 ovmf                 f962adc8a089949ecc730ba17f08234b52e3952d

Last test of basis   187949  2024-10-03 09:43:20 Z    0 days
Testing same since   187957  2024-10-03 20:41:33 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Mario Bălănică <mariobalanica02@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    


------------------------------------------------------------
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
   f962adc8a0..2fdc39d09d  2fdc39d09d49a57e8dc87022b1dedd958f8c8d6a -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 00:03:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 00:03:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809903.1222469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swVmh-000364-PR; Fri, 04 Oct 2024 00:03:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809903.1222469; Fri, 04 Oct 2024 00: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 1swVmh-00035x-Mf; Fri, 04 Oct 2024 00:03:03 +0000
Received: by outflank-mailman (input) for mailman id 809903;
 Fri, 04 Oct 2024 00:03: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 1swVmg-00035n-7n; Fri, 04 Oct 2024 00:03: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 1swVmg-0007ak-0j; Fri, 04 Oct 2024 00:03: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 1swVmf-0004QN-IY; Fri, 04 Oct 2024 00:03:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swVmf-0004GY-I7; Fri, 04 Oct 2024 00: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>
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=39cQ3vZ3hjnh1CAdW0BhLoBWSNwHn304wDbBOJbDHBs=; b=3sO3xvt3AgsAuxZ0G1Xhr8k0zX
	cwWBrjoyINePPvNcckwTnoIg55Aeu7KSLyojdfIy5QVTTKMICbwlhpxxCLBc4RETWm2zPCXsg2+uR
	tcl0kIGu3F/gBAb/SN8goEw2hBqaRkDmdKKlfhYhLiUEKpEKejn+or4+D+YOnnOnXcn4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187948-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187948: 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-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-credit1: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-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-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-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-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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-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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=7ec462100ef9142344ddbf86f2c3008b97acddbe
X-Osstest-Versions-That:
    linux=f23aa4c0761a70bfd046dd5755281667f0769a94
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 00:03:01 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187941
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187941
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187941
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187941
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187941
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187941
 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-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-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-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-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-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                7ec462100ef9142344ddbf86f2c3008b97acddbe
baseline version:
 linux                f23aa4c0761a70bfd046dd5755281667f0769a94

Last test of basis   187941  2024-10-02 20:13:24 Z    1 days
Testing same since   187948  2024-10-03 07:44:41 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Al Viro <viro@zeniv.linux.org.uk>
  Helge Deller <deller@gmx.de>
  Linus Torvalds <torvalds@linux-foundation.org>
  Vineet Gupta <vgupta@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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   f23aa4c0761a..7ec462100ef9  7ec462100ef9142344ddbf86f2c3008b97acddbe -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 00:04:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 00:04:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809909.1222478 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swVo0-0003av-3E; Fri, 04 Oct 2024 00:04:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809909.1222478; Fri, 04 Oct 2024 00:04: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 1swVo0-0003ao-0i; Fri, 04 Oct 2024 00:04:24 +0000
Received: by outflank-mailman (input) for mailman id 809909;
 Fri, 04 Oct 2024 00:04: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=6kl2=RA=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swVnz-0003ai-KT
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 00:04:23 +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 34ecf926-81e4-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 02:04:21 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a7a843bef98so201179166b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 17:04:21 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102a5826sm147243366b.75.2024.10.03.17.04.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 17:04:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34ecf926-81e4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728000261; x=1728605061; 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=oieaasUCTDiXWxIFmQ51JMO7kNecMcKXsjoJ87ii7BQ=;
        b=cOSrewVaFdEiP+UhmkT4pwksx1EAIdvdbjejVogyorPhkLPF35iYUTgeQq0vQL7Ox9
         lk99TnxUw8s0OYCpfKM1GrfDHt/sW56ZYOBTOXy4e+dI5dnb2/fqLead67qAewjbfw6z
         ullSm/mS1QTvVFI3pvZzeSvfTgs60UFwR+8As=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728000261; x=1728605061;
        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=oieaasUCTDiXWxIFmQ51JMO7kNecMcKXsjoJ87ii7BQ=;
        b=cnYGYh0UV/lBsSW1SomvpNzA/zzrHbdBHYcDHtW9p6YcsPdxhC2w9SoYpVW8Mv8CgP
         G8QLhM/GzZjyQ2tWUHOHYRtmZva3JKqEi6P1tyDKNugTeGdqCM+hcv35NuQn2FAX3pmW
         9mxA/kqRz2BY2jCaiUiS53CknI6XeoJY+8ioJGhdctMpxuZ9Qg644jo5XnVqUjESPO7x
         WOTpiK1XYAfqeC34H38CyQ9ue0w7ONSutSxo5tIk7zx6vEiVuI6SzhJB7ohbqytHjeQX
         +cF85X85uUEF8wAg4ogPdeHimHBl/MWhVSus665gxC953wWtjEERHRmqy4M1GD3CPRyH
         6vNg==
X-Forwarded-Encrypted: i=1; AJvYcCW+dQmdG4Gj3E6gb9y70Gjcg7A7Egn+TSs4kp4HkgQDOtXRlizsdZUyraoRO0Z5F3bBTRM9HdUehJo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzF2zPCH1DF1OgvrEGegUkom7azIb+Cq2oXO46BvA56NueqD31K
	pG/FLY4bZH32iYufjPP3isOnd91gOnw+Jd5ICBqBPwaVm/xDc8kyFkQlbW7ylYc=
X-Google-Smtp-Source: AGHT+IFkzo/GtJJ6PXpOBF8/aIy1GKO1LA/jxZ3s9koIWSuQnyuVT3qjv3/88E+UO1vBgLL+2cdBog==
X-Received: by 2002:a17:907:d857:b0:a8d:29b7:ecea with SMTP id a640c23a62f3a-a991bff2bb5mr77188566b.61.1728000260571;
        Thu, 03 Oct 2024 17:04:20 -0700 (PDT)
Message-ID: <b94f3e2f-651f-4806-979b-61fcbe582d38@citrix.com>
Date: Fri, 4 Oct 2024 01:04:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/2] x86/fpu: Split fpu_setup_fpu() in three
To: Alejandro Vallejo <alejandro.vallejo@cloud.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>
References: <20240813142119.29012-1-alejandro.vallejo@cloud.com>
 <20240813142119.29012-3-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20240813142119.29012-3-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 13/08/2024 3:21 pm, Alejandro Vallejo wrote:
> It was trying to do too many things at once and there was no clear way of
> defining what it was meant to do. This commit splits the function in three.
>
>   1. A function to return the FPU to power-on reset values.
>   2. A function to return the FPU to default values.
>   3. A x87/SSE state loader (equivalent to the old function when it took a data
>      pointer).
>
> While at it, make sure the abridged tag is consistent with the manuals and
> start as 0xFF.
>
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

fpu_setup_fpu() definitely needs splitting, and it was doing many things
before, but...

> diff --git a/xen/arch/x86/include/asm/i387.h b/xen/arch/x86/include/asm/i387.h
> index a783549db991..7a69577de45b 100644
> --- a/xen/arch/x86/include/asm/i387.h
> +++ b/xen/arch/x86/include/asm/i387.h
> @@ -31,10 +31,30 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts);
>  void vcpu_restore_fpu_lazy(struct vcpu *v);
>  void vcpu_save_fpu(struct vcpu *v);
>  void save_fpu_enable(void);
> -
>  int vcpu_init_fpu(struct vcpu *v);
> -struct xsave_struct;
> -void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
> -                    const void *data, unsigned int fcw_default);
>  void vcpu_destroy_fpu(struct vcpu *v);
> +
> +/*
> + * Restore v's FPU to power-on reset values
> + *
> + * @param v vCPU containing the FPU
> + */
> +void vcpu_reset_fpu(struct vcpu *v);
> +
> +/*
> + * Restore v's FPU to default values
> + *
> + * @param v vCPU containing the FPU
> + */
> +void vcpu_default_fpu(struct vcpu *v);

... whether this is an accurate transform of the logic or not, we
oughtn't to have both.

AFAICT, these two functions differ only in the choice of FCW constant,
and whether FTW gets a nonzero value or not.


The x86 architecture has #RESET and #INIT states (and Xen is especially
bad at these right now).  They're well defined in the SDM/APM;  #RESET
zeroes most things but leaves FCW=0x40 and FTW=0x5555 (for which the
FXSAVE mapping is 0xFF).  #INIT leaves everything unmodified.

[After a very long manual-diving session.  Thankyou Christian]


The 80287's #RESET and F(N)INIT instructions were broadly similar.  They
differed on whether they changed the addressing mode[1] but both cases
set FCW=0x37f and FTW=0x5555.

The 80387 intentionally diverged #RESET and FNINIT, with #RESET setting
FCW=0x40.  This had a side effect of asserting #ERROR, and software is
required to execute FNINIT which sets FCW=0x37f and de-asserts #ERROR

Why?  From the 387's programmers reference:

---%<---
6.2.2  Hardware Recognition of the NPX

The 80386 identifies the type of its coprocessor (80287 or 80387) by
sampling its ERROR# input some time after the falling edge of RESET and
before executing the first ESC instruction. The 80287 keeps its ERROR#
output in inactive state after hardware reset; the 80387 keeps its
ERROR# output in active state after hardware reset. The 80386 records
this difference in the ET bit of control register zero (CR0). The 80386
subsequently uses ET to control its interface with the coprocessor. If
ET is set, it employs the 32-bit protocol of the 80387; if ET is not
set, it employs the 16-bit protocol of the 80287.

<snip>

6.2.5  Initializing the 80387

Initializing the 80387 NPX simply means placing the NPX in a known state
unaffected by any activity performed earlier. A single FNINIT
instruction performs this initialization. All the error masks are set,
all registers are tagged empty, TOP is set to zero, and default rounding
and precision controls are set. Table 6-1 shows the state of the 80387
NPX following FINIT or FNINIT. This state is compatible with that of the
80287 after FINIT or after hardware RESET.
---%<---

The 486 gets even more complicated, but I've been writing this email for
long enough.

So, 0x40 is the correct reset value for the 386/387 and later, hence why
that's what the SDM/APM say these days.


As for Xen.  For HVM guests, setting FCW=0x37f is definitely wrong.

For PV guests, things are ill-defined, but software has been required to
issue FNINIT for 4 decades already (even MiniOS does!) so I find myself
dis-interested in trying to maintain compatibility for coprocessor which
predates Xen by ~15y.

You're already playing with FTW too (vs the old logic), so please drop
vcpu_default_fpu() and just use vcpu_reset_fpu() instead.

As a bonus, it lets you delete yet-more code, but it also needs to come
with a rework of the commit message.  I'd aim for less "split in 3" and
more "delete and write something sane". 


> +
> +/*
> + * Load x87/SSE state into v's FPU
> + *
> + * Overrides the XSAVE header to set the state components to be x87 and SSE.
> + *
> + * @param v    vCPU containing the FPU
> + * @param data 512-octet blob for x87/SSE state
> + */
> +void vcpu_setup_fpu(struct vcpu *v, const void *data);
>  #endif /* __ASM_I386_I387_H */
> diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
> index ebeb2a3dcaf9..6144ed6f8551 100644
> --- a/xen/arch/x86/include/asm/xstate.h
> +++ b/xen/arch/x86/include/asm/xstate.h
> @@ -14,6 +14,7 @@
>  
>  #define FCW_DEFAULT               0x037f
>  #define FCW_RESET                 0x0040
> +#define FTW_RESET                 0xFF

This isn't a tag word reset value.  The value for that would be 0x5555.

I'd suggest:

#define FXSAVE_FTW_RESET   0xff /* Abridged Tag Word format */

for want of anything better.  At least this name makes it clear it's
specifically for the FXSAVE format.

~Andrew

[1] the 286, (in)famously couldn't leave protected mode, and neither
could the 287 it seems.


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 02:30:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 02:30:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809929.1222493 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swY4y-0005Rm-4W; Fri, 04 Oct 2024 02:30:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809929.1222493; Fri, 04 Oct 2024 02:30: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 1swY4y-0005RG-16; Fri, 04 Oct 2024 02:30:04 +0000
Received: by outflank-mailman (input) for mailman id 809929;
 Fri, 04 Oct 2024 02:30: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=v+dN=RA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swY4w-0004wg-CI
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 02:30:02 +0000
Received: from fhigh-b3-smtp.messagingengine.com
 (fhigh-b3-smtp.messagingengine.com [202.12.124.154])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8b559308-81f8-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 04:29:57 +0200 (CEST)
Received: from phl-compute-08.internal (phl-compute-08.phl.internal
 [10.202.2.48])
 by mailfhigh.stl.internal (Postfix) with ESMTP id 8C7CB2540098;
 Thu,  3 Oct 2024 22:29:55 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-08.internal (MEProxy); Thu, 03 Oct 2024 22:29:55 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 3 Oct 2024 22:29:54 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8b559308-81f8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	:content-type:content-type:date:date:from:from:in-reply-to
	:message-id:mime-version:reply-to:subject:subject:to:to; s=fm2;
	 t=1728008995; x=1728095395; bh=XhyFmXVWtxi/DxrV5BMunrs2I4j9iBSY
	prjI1fqUdXw=; b=ARkSSN3mCI+eevMji7a/sA+4UeqGqbyIhxds6zIE4JbPIx1m
	bIDDwmGvYzghatF+YnPnfUwBVOMgZwZp8rBXbRtUBiVa6NB6jFqcXvNpeI5Yc9VC
	yBgY8i3O41litDVrkleaXT9edhYeKDaQVIS83OPc4V3rGkb85Tn3rpHD2/1N4hSS
	YkNJnTk1SHw3O6DJ454l/oR6pEbOgh3Fn0qaVfxXmUCswxG/BoGdhy4nYgREa/ME
	CkGDhzdHRZriz4tVUhMrg6rNCP1tG8bRYJrjlO8ztOmnLiut0LYoZcb//q5pc0C5
	YiFhy5csnRVx2dYbSXvtLlc1HufeR6siZLuThQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=fm2; t=1728008995; x=1728095395; bh=XhyFmXVWtxi/D
	xrV5BMunrs2I4j9iBSYprjI1fqUdXw=; b=i7nY8VZ+JqsCMe1tqQXQvt1o7hlhX
	JS3Tr5JO4OHpO9CW1tcJigCCXIIwOUz262FFYP3hdZpl91BlKyMWK+QvY5KksapW
	FXeS52p0qIDV89sxOwcmAVwIQ+aslDzFTD+dhtvNiqMdXhTHbEMyexsbJu+lSG7m
	zsOaz31wJuXo6bRpBqqENSA50sPLOw916vBvKi5v6D1OZTTxsqhGc/xSyyIWFx2v
	48B2OybtxbJRrdf1uBEruleOTCeqGbGX39fmo2ymcTU+y70jmkcSRMsgQdwtsg5E
	uM25uq6aMw9HncEF7MxeubpiYRMW6FmGIsGZW4tSChSxZvTyBterNivjA==
X-ME-Sender: <xms:I1P_Zo9iJOGcHhTlFVv1xH3CKteofBm_9XvJAUEyKKHki6XnOOGRIw>
    <xme:I1P_ZguN1LJE2Q-1JsDVN4TYtoKe1h-pUhCZqLv17iFtgk11bed_Z2LgU8z5Q6eP6
    8VBmP4cMVYB2g>
X-ME-Received: <xmr:I1P_ZuBHvKK7c6ybUiuS4_R21zp_6w1Vyo0RqGxY_S75XhljVdMCp-B0fa7xm0mAeU8Ox3w4G6_Yt9J477icK44WwDV0v9Y89XWSruhqDrpn-hcTBNc>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvvddgiedtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucenucfjughrpefhvfevuf
    ffkffogggtgfesthekredtredtjeenucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhho
    fihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhih
    hnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepleekhfduleetleelleetteev
    feefteffkeetteejheelgfegkeelgeehhfdthedvnecuvehluhhsthgvrhfuihiivgeptd
    enucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghksehinhhvihhsihgslhgv
    thhhihhnghhslhgrsgdrtghomhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtph
    houhhtpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgv
    tghtrdhorhhgpdhrtghpthhtohepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhih
    hnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:I1P_ZodGITqV5gZipgk1haIreUjkgaxRLpG1kw3iSo-gvhj6jiUvbA>
    <xmx:I1P_ZtMVQPgp82RFxKfuOl-LtGTu76YmS730jSQeevaEePZNohYY-w>
    <xmx:I1P_Zil5T-C9r0a6fs3AgOsKgkDT-SsbH8DuCzRk9Jk6FFcTEJfvzA>
    <xmx:I1P_Zvv9GpsqqtBvhXA-ZP6nOCdKZywJq8e-kHbUgG_gRUaHeQcSeg>
    <xmx:I1P_Zr378U7Jrwzp66MqbHSL2mYWFIzMwUC3K3_qW8F9UZRyuq0o_5CX>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v2 0/3] automation: add smoke test for xen.efi on x86_64
Date: Fri,  4 Oct 2024 04:29:36 +0200
Message-ID: <cover.1bb6f2ab5669356ea3ff954b7c324d2f31c19399.1728008940.git-series.marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Marek Marczykowski-Górecki (3):
  automation: preserve built xen.efi
  automation: add a smoke test for xen.efi on X86
  automation: shorten the timeout for smoke tests

 automation/build/debian/bookworm.dockerfile |  1 +-
 automation/gitlab-ci/test.yaml              | 20 ++++++++--
 automation/scripts/build                    | 16 ++++++--
 automation/scripts/qemu-smoke-x86-64-efi.sh | 43 ++++++++++++++++++++++-
 4 files changed, 73 insertions(+), 7 deletions(-)
 create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh

base-commit: d82e0e094e7a07353ba0fb35732724316c2ec2f6
-- 
git-series 0.9.1


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 02:30:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 02:30:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809931.1222505 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swY4y-0005cv-Oy; Fri, 04 Oct 2024 02:30:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809931.1222505; Fri, 04 Oct 2024 02:30: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 1swY4y-0005ag-H6; Fri, 04 Oct 2024 02:30:04 +0000
Received: by outflank-mailman (input) for mailman id 809931;
 Fri, 04 Oct 2024 02:30: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=v+dN=RA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swY4w-0004wg-Th
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 02:30:02 +0000
Received: from fout-b7-smtp.messagingengine.com
 (fout-b7-smtp.messagingengine.com [202.12.124.150])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8df03d1d-81f8-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 04:30:01 +0200 (CEST)
Received: from phl-compute-10.internal (phl-compute-10.phl.internal
 [10.202.2.50])
 by mailfout.stl.internal (Postfix) with ESMTP id 2C2ED11400EA;
 Thu,  3 Oct 2024 22:30:00 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-10.internal (MEProxy); Thu, 03 Oct 2024 22:30:00 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 3 Oct 2024 22:29:58 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8df03d1d-81f8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	: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=1728009000; x=1728095400; bh=q7xGTN37Al
	8UjpHCPbgwMdAd2LdqV8NjdJmY0wCHOpU=; b=Mu1m8qc9ZrhiYmDCQlhY8ZXK1T
	OQXQusda0wFU9dQjIo6zKyJ7KOVzmoIPesh/Q93ItchsOjXCgLv6un/lU99nb+b6
	mH9q1AJ0otT1kSxhZ0cLvjHlzwNOkRpijHgd7kZ1ctkyvUNKWNSC2j0rScVVpZB7
	YxeHqR36rGsjO9HuJxdTJbR1SwxPbVvJyv3BZQcMRQHfwEuOQVStc/CeQnW+uivf
	NirbiYAayG6C8Rba8VYNegg3WYIxpO1SzOl24LBmUNTC0kgySMsx2nwFvljBEJ2t
	IXyOotCIscVC1KABEwHdRhZ0427B1A6x3kOgYF7FgMxO86+J6OkqKZx25+qg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1728009000; x=
	1728095400; bh=q7xGTN37Al8UjpHCPbgwMdAd2LdqV8NjdJmY0wCHOpU=; b=b
	ncGC3KJVtOgyjc0MtsfFf320ptIlrthXSYqP784fj2rLLrxvLISWKdTyYG3eUsLe
	eUfJoitx4+IECM+mlAdRsmTZ4ofTCijPX87A2Gl2icsIubdFhFJCPd1VHztTW0Z8
	f2xHrFeptmfbnQoHQv3MClR3JssUDIVMaQvwnlmzOl+UPmCevCjbI3M137YvV9wG
	jBrHy6r6bdOdFF6cT8TT7aSz8ePqRpChfWZRfZt3PiJ/V3qj5lIT3gdJyqAQyRej
	duiqwxcawnduZfAcjLGuD4+JH9xGzuVy9huo1RJzB2X6t52finUai6b9OcEgQN4f
	pp1MXeovdxBYDJ0sOGFYQ==
X-ME-Sender: <xms:J1P_ZqaWnRjvfF3iJ8rG2KowLqFzOIS5LkIboatZGSQg1epAr5SxSA>
    <xme:J1P_ZtZkcC3-X5Af-sMwHNju9XmYaVg-WbMjUuyBIeZYh8BR4EF8cjko4ADRN5fk_
    iqKB7--8UwxHg>
X-ME-Received: <xmr:J1P_Zk-LG9S_g_dFx2XAaFcF79QKGnhQTpIhtfGPRkeGFKej5yM1GVjuKcGgxzeLEjjxWPFR5B87fZ4Rc2UbxvgKqFrMagadM98R2IseeFxFxoC_kiM>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvvddgieduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpefgueduhefgvdefheehudejheefudevueeghfekhfehleegvedute
    euiedugffgffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr
    ohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpd
    hnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeigvghn
    qdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhope
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhrtghp
    thhtoheptggrrhguohgvsegtrghrughovgdrtghomhdprhgtphhtthhopehsshhtrggsvg
    hllhhinhhisehkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:J1P_Zsq2mkJsqsxsVA3kBi7_PUeo-2kMc6YcGnGwUEgbe9XcYa8QOg>
    <xmx:J1P_ZloUlUbpsAR4pIlqFM-ggO5MhNRW6W__0jmVEl0SO7LC98cACw>
    <xmx:J1P_ZqQioU0IvEUkcetI0OOzqwaseonfQaM7rzwM6VTI3iH_B3m3EA>
    <xmx:J1P_ZlqpiGyPQAYdtIu7qYVD30ase5xRLHH06cmAQ1TsVgX0L2kzIA>
    <xmx:KFP_ZsW4pdnRAnqu9Z3j81J3vpOdAMeglIdb0v52hfizf1KGrZl3X2Sg>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 3/3] automation: shorten the timeout for smoke tests
Date: Fri,  4 Oct 2024 04:29:39 +0200
Message-ID: <cc627ef416a4957615786158a05e3b64c454f560.1728008940.git-series.marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <cover.1bb6f2ab5669356ea3ff954b7c324d2f31c19399.1728008940.git-series.marmarek@invisiblethingslab.com>
References: <cover.1bb6f2ab5669356ea3ff954b7c324d2f31c19399.1728008940.git-series.marmarek@invisiblethingslab.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The smoke tests when successful complete in about 5s. Don't waste
20min+ on failure, shorten the timeout to 120s

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 automation/gitlab-ci/test.yaml | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 5687eaf9143d..b27c2be17487 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -53,6 +53,11 @@
   tags:
     - x86_64
 
+.qemu-smoke-x86-64:
+  extends: .qemu-x86-64
+  variables:
+    TEST_TIMEOUT_OVERRIDE: 120
+
 .qemu-riscv64:
   extends: .test-jobs-common
   variables:
@@ -436,35 +441,35 @@ qemu-alpine-x86_64-gcc:
     - alpine-3.18-gcc
 
 qemu-smoke-x86-64-gcc:
-  extends: .qemu-x86-64
+  extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pv 2>&1 | tee ${LOGFILE}
   needs:
     - debian-bookworm-gcc-debug
 
 qemu-smoke-x86-64-clang:
-  extends: .qemu-x86-64
+  extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pv 2>&1 | tee ${LOGFILE}
   needs:
     - debian-bookworm-clang-debug
 
 qemu-smoke-x86-64-gcc-pvh:
-  extends: .qemu-x86-64
+  extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pvh 2>&1 | tee ${LOGFILE}
   needs:
     - debian-bookworm-gcc-debug
 
 qemu-smoke-x86-64-clang-pvh:
-  extends: .qemu-x86-64
+  extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pvh 2>&1 | tee ${LOGFILE}
   needs:
     - debian-bookworm-clang-debug
 
 qemu-smoke-x86-64-gcc-efi:
-  extends: .qemu-x86-64
+  extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
   needs:
-- 
git-series 0.9.1


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 02:30:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 02:30:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809932.1222511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swY4z-0005js-2G; Fri, 04 Oct 2024 02:30:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809932.1222511; Fri, 04 Oct 2024 02:30: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 1swY4y-0005hJ-Px; Fri, 04 Oct 2024 02:30:04 +0000
Received: by outflank-mailman (input) for mailman id 809932;
 Fri, 04 Oct 2024 02:30: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=v+dN=RA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swY4x-00056c-D8
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 02:30:03 +0000
Received: from fhigh-b3-smtp.messagingengine.com
 (fhigh-b3-smtp.messagingengine.com [202.12.124.154])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8d0a27af-81f8-11ef-a0ba-8be0dac302b0;
 Fri, 04 Oct 2024 04:30:00 +0200 (CEST)
Received: from phl-compute-08.internal (phl-compute-08.phl.internal
 [10.202.2.48])
 by mailfhigh.stl.internal (Postfix) with ESMTP id A089125400BE;
 Thu,  3 Oct 2024 22:29:58 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-08.internal (MEProxy); Thu, 03 Oct 2024 22:29:58 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 3 Oct 2024 22:29:57 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d0a27af-81f8-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	: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=1728008998; x=1728095398; bh=UUSX/6jdgQ
	dvcUrZZczumy32nQDsNtQu974vvHbh+9w=; b=UwVqcwIah+Til0lEJD2Mn/rfg+
	oGVgi9k7Twgd9RPoVUHLx70I/Xuoxr0vVgJlkG+bMpQviqjHQjFllr4Mjhzn66d+
	4S+6fkEb/tUb+RtXj9mhN04Bn9kyZIgVjbNpQXWvIJtwVpokdISNrtbjMgMb7lz3
	ErH80KCcboNMYxe3M7ZRXWModJ2R3x3QwMHqbA2lLaiOutelwmyZMVFI/k9Kmq2C
	1/ZeYL2XuHqq+fFuKSnjgvNP4WLVd9HftjIJsYYvNS8qgiqYMr21+KI/a1ESfc3g
	ft3797B54bD6CGevtlNtQkOd3Subf9/vZKGyzPm3nglcPXd/G40kBWcO1UYg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1728008998; x=
	1728095398; bh=UUSX/6jdgQdvcUrZZczumy32nQDsNtQu974vvHbh+9w=; b=K
	5gCq8x+UDosa6RCWjodXJYQ24lJOe8hWCrThJ81THUKvM1mv+J6RCKqsmKx1U7SK
	dZ+hbWpippIgUFCvj+lzgc4t7mqyYVKKerzwFwKdGYUYBLcGFGfERTzkOyyXq7L/
	hbx3TmKpR9u2C2SzPdXHvWsCL24iAmrFJJa3UG3GlJ/9FusPwdaRd6v8C9JiB4Y5
	9jGB1+q+ZD8Jjy+m69ASaM7d3ejLdndtlSZIhmPbkNYWtSepFOmc89Jg8lyhb9p9
	orkSbKzvYyYQtK3bBW/u2edPx+zftN9zFROP2SiKYS872s9gN7/L1+qA1sv8CiVb
	HuVoraTtHqSyOEevEW4fg==
X-ME-Sender: <xms:JlP_ZqEtnpz_obkTY-GPMCl8pCv0E8X19hLvL0TOcBUgVd8iAYEjHg>
    <xme:JlP_ZrUvusLzA6CkRIrgvHidyX1Nlgai19RXWRxktCVuavK9Wee-VIZEtp-6XJbsc
    OWOs2MC_q9_0A>
X-ME-Received: <xmr:JlP_ZkJGXxhJRkS5-qLU2T9DAFvTFewGX2fBbGYXlMvoaJlLJ7mVhvnm2lvXlBvM7vuaWaze_hyPufr5FpZOUSwElfr3slbTbs58kTfXFZ4Rli-ZIls>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvvddgiedtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpeekieettdeivdevhffgtdduveetveejheevgedtheevhefghfefgf
    ekkeefudekffenucffohhmrghinhepgigvnhdrohhrghenucevlhhushhtvghrufhiiigv
    pedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisg
    hlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeegpdhmohguvgepshhm
    thhpohhuthdprhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhroh
    hjvggtthdrohhrghdprhgtphhtthhopehmrghrmhgrrhgvkhesihhnvhhishhisghlvght
    hhhinhhgshhlrggsrdgtohhmpdhrtghpthhtoheptggrrhguohgvsegtrghrughovgdrtg
    homhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:JlP_ZkGiaz-FT2-n3193XJVJ8d6OcJe1eiUVnIpoCXBYkVzkstuZBw>
    <xmx:JlP_ZgVAyuKmCLYe_0D8xcpdXrivZ1wLFtyNiLlunRXVPsOolq6vAw>
    <xmx:JlP_ZnNcJCHm-hQ6U0j3uSb2qSEB1rTR-zaLBC5g_hXxuODCQnx5Mg>
    <xmx:JlP_Zn1ALC4-M__Sa5UvAMAG1Dg_7oGCxOzR9uz4iwal7ptfpRek8Q>
    <xmx:JlP_ZnS9YoqMSP4FKhtXqpMjoOBp5-yAuulCq33oJ_R3HSo9ZV0va_lS>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 2/3] automation: add a smoke test for xen.efi on X86
Date: Fri,  4 Oct 2024 04:29:38 +0200
Message-ID: <6114373e9513b531af06d7e1e34ead90eedf02d3.1728008940.git-series.marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <cover.1bb6f2ab5669356ea3ff954b7c324d2f31c19399.1728008940.git-series.marmarek@invisiblethingslab.com>
References: <cover.1bb6f2ab5669356ea3ff954b7c324d2f31c19399.1728008940.git-series.marmarek@invisiblethingslab.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Check if xen.efi is bootable with an XTF dom0.
The multiboot2+EFI path is tested on hardware tests already.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
This requires rebuilding debian:bookworm container.

Changes in v2:
- drop forcing TEST_TIMEOUT in the script - now can be set from test.yml
  when needed; and move actually reducing timeout to separate commit
---
 automation/build/debian/bookworm.dockerfile |  1 +-
 automation/gitlab-ci/test.yaml              |  7 ++++-
 automation/scripts/qemu-smoke-x86-64-efi.sh | 43 ++++++++++++++++++++++-
 3 files changed, 51 insertions(+)
 create mode 100755 automation/scripts/qemu-smoke-x86-64-efi.sh

diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
index 3dd70cb6b2e3..061114ba522d 100644
--- a/automation/build/debian/bookworm.dockerfile
+++ b/automation/build/debian/bookworm.dockerfile
@@ -46,6 +46,7 @@ RUN apt-get update && \
         # for test phase, qemu-smoke-* jobs
         qemu-system-x86 \
         expect \
+        ovmf \
         # for test phase, qemu-alpine-* jobs
         cpio \
         busybox-static \
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index e9477361955a..5687eaf9143d 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -463,6 +463,13 @@ qemu-smoke-x86-64-clang-pvh:
   needs:
     - debian-bookworm-clang-debug
 
+qemu-smoke-x86-64-gcc-efi:
+  extends: .qemu-x86-64
+  script:
+    - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
+  needs:
+    - debian-bookworm-gcc-debug
+
 qemu-smoke-riscv64-gcc:
   extends: .qemu-riscv64
   script:
diff --git a/automation/scripts/qemu-smoke-x86-64-efi.sh b/automation/scripts/qemu-smoke-x86-64-efi.sh
new file mode 100755
index 000000000000..7572722be6e5
--- /dev/null
+++ b/automation/scripts/qemu-smoke-x86-64-efi.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+set -ex -o pipefail
+
+# variant should be either pv or pvh
+variant=$1
+
+# Clone and build XTF
+git clone https://xenbits.xen.org/git-http/xtf.git
+cd xtf && make -j$(nproc) && cd -
+
+case $variant in
+    pvh) k=test-hvm64-example    extra="dom0-iommu=none dom0=pvh" ;;
+    *)   k=test-pv64-example     extra= ;;
+esac
+
+mkdir -p boot-esp/EFI/BOOT
+cp binaries/xen.efi boot-esp/EFI/BOOT/BOOTX64.EFI
+cp xtf/tests/example/$k boot-esp/EFI/BOOT/kernel
+
+cat > boot-esp/EFI/BOOT/BOOTX64.cfg <<EOF
+[global]
+default=test
+
+[test]
+options=loglvl=all console=com1 noreboot console_timestamps=boot $extra
+kernel=kernel
+EOF
+
+cp /usr/share/OVMF/OVMF_CODE.fd OVMF_CODE.fd
+cp /usr/share/OVMF/OVMF_VARS.fd OVMF_VARS.fd
+
+rm -f smoke.serial
+export TEST_CMD="qemu-system-x86_64 -nographic -M q35,kernel-irqchip=split \
+        -drive if=pflash,format=raw,readonly=on,file=OVMF_CODE.fd \
+        -drive if=pflash,format=raw,file=OVMF_VARS.fd \
+        -drive file=fat:rw:boot-esp,media=disk,index=0,format=raw \
+        -m 512 -monitor none -serial stdio"
+
+export TEST_LOG="smoke.serial"
+export PASSED="Test result: SUCCESS"
+
+./automation/scripts/console.exp | sed 's/\r\+$//'
-- 
git-series 0.9.1


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 02:30:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 02:30:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809930.1222499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swY4y-0005VE-GJ; Fri, 04 Oct 2024 02:30:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809930.1222499; Fri, 04 Oct 2024 02:30: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 1swY4y-0005UC-7B; Fri, 04 Oct 2024 02:30:04 +0000
Received: by outflank-mailman (input) for mailman id 809930;
 Fri, 04 Oct 2024 02:30: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=v+dN=RA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swY4w-0004wg-Mn
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 02:30:02 +0000
Received: from fout-b7-smtp.messagingengine.com
 (fout-b7-smtp.messagingengine.com [202.12.124.150])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8c202c97-81f8-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 04:29:58 +0200 (CEST)
Received: from phl-compute-01.internal (phl-compute-01.phl.internal
 [10.202.2.41])
 by mailfout.stl.internal (Postfix) with ESMTP id 1CBD611400EA;
 Thu,  3 Oct 2024 22:29:57 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-01.internal (MEProxy); Thu, 03 Oct 2024 22:29:57 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 3 Oct 2024 22:29:55 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8c202c97-81f8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	: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=1728008996; x=1728095396; bh=OizhH49JgJ
	MFP9tqWTb7RhW7NtKKGQLwUXUgz3F/Jk0=; b=a+RsE5TuUBVpblgTjhOFnFpQPf
	HAEMuUoC0AvyugD6xkKJeqgl9d38NA97xjgihZdBBZv4yJCVXgaIpybky5T/0mDd
	oNSipYanV8lYZUO9OvuCAW3oaT/OM8xqtFmkx8SpADVH/stIGoK6oZOwikAEVwsg
	MHSy8vi3vqvF1ehlREL8bX9iCxBC/kaZJQfmjh38u/1oPPR9S3kK2xhllfxzcEsB
	s151sNcgY2polqRhSCZGc5UcstQXaMXgJT5KqDmv+194ebJVJAL8P1QQsfcSJHhU
	9R9RsM3rFrYgGBvzEkoiZ+rVDWFjim8x7jieqodEzYYppet4IiwSR2RHTVuw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1728008996; x=
	1728095396; bh=OizhH49JgJMFP9tqWTb7RhW7NtKKGQLwUXUgz3F/Jk0=; b=e
	nBczmOrNoucJM4nK8yIwL0Rh6DsRVmeKwmE0TI91NaKISOImMj0uXVB8ge6lfpMU
	o4jqxDHUvVLlQtDIihiqqLADbfy16hLqWlWFKtzLZHeyy4V84De7qnE2dt+6Nx7u
	Q0I6ViFFU4Eze9iDScSZC2/vP/oIyMWxPY3qYkuc6kSUWPt92YO1Xp+538wS1q+0
	zoVKW1Gm4B6+AcxBZjxaKDVhZx/I/iEXVLA+Ck+D3Dt4f1IU8/rJC1wQCGeZQYfx
	92MBgdzfjX7lAexAYA+oCRbIeFS/3Y86FbehxlUk+D/9tusvYrGrA5EalETDbs30
	fZ8kIdouy4frKoExf6yMg==
X-ME-Sender: <xms:JFP_Zrqguw7PlYjFu2aU55InBPAJDAnv1Ory7DeJvmbOGExj4-tK2w>
    <xme:JFP_ZlqnuJe5Zm1Fy0Rt6lTFjr40nJLRT3QvR9XAVIGmUgGvzyWaooLDzjyC7wKY-
    GgghUM8aYuXvA>
X-ME-Received: <xmr:JFP_ZoN1UsrTqCozW-36N1JuUeu1e8-Oq9zPgM2IlgKon_10iN6Dk3GPlKtc8RcBkD8kAAhgNQ1L3pfdXGNWKxU5wYRjDDeG5rN0U6VJxZ0Ghb-vOn0>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvvddgieduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpefgueduhefgvdefheehudejheefudevueeghfekhfehleegvedute
    euiedugffgffenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr
    ohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpd
    hnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeigvghn
    qdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhope
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhrtghp
    thhtoheptggrrhguohgvsegtrghrughovgdrtghomhdprhgtphhtthhopehsshhtrggsvg
    hllhhinhhisehkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:JFP_Zu4mV25Y96hniHjRiHWqBPyXnACq3DN8BNpMWZlAFA7ZmBum9w>
    <xmx:JFP_Zq4rwcsfvPfCGq4w4EngK61w-nh_rB7aOowIZY664xXau-nZmg>
    <xmx:JFP_ZmiJzPeAb8yxhT08RxTte5KnGwDmwLmg9fg9laB0hh0rXIRzOA>
    <xmx:JFP_Zs6CB5R5yk0rmBo0HDM5KWK8xJsnz0o5mzUp2eOesS3RMcc_xA>
    <xmx:JFP_Zgm0ZVSbsfV7kT6O99qfwQesS5pgI7ZzLudmR_ii3umkqHl7XdJ4>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 1/3] automation: preserve built xen.efi
Date: Fri,  4 Oct 2024 04:29:37 +0200
Message-ID: <ef79d2ffd9b2bad03094b5f08d7e994764d63208.1728008940.git-series.marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <cover.1bb6f2ab5669356ea3ff954b7c324d2f31c19399.1728008940.git-series.marmarek@invisiblethingslab.com>
References: <cover.1bb6f2ab5669356ea3ff954b7c324d2f31c19399.1728008940.git-series.marmarek@invisiblethingslab.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It will be useful for further tests.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
Changes in v2:
- deduplicate via collect_xen_artifacts function
---
 automation/scripts/build | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/automation/scripts/build b/automation/scripts/build
index b3c71fb6fb60..302feeed2eea 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -41,19 +41,29 @@ cp xen/.config xen-config
 # Directory for the artefacts to be dumped into
 mkdir -p binaries
 
+collect_xen_artifacts()
+{
+    local f
+    for f in xen/xen xen/xen.efi; do
+        if [[ -f $f ]]; then
+            cp $f binaries/
+        fi
+    done
+}
+
 if [[ "${CPPCHECK}" == "y" ]] && [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
     # Cppcheck analysis invokes Xen-only build
     xen/scripts/xen-analysis.py --run-cppcheck --cppcheck-misra -- -j$(nproc)
 
     # Preserve artefacts
-    cp xen/xen binaries/xen
+    collect_xen_artifacts
     cp xen/cppcheck-report/xen-cppcheck.txt xen-cppcheck.txt
 elif [[ "${HYPERVISOR_ONLY}" == "y" ]]; then
     # Xen-only build
     make -j$(nproc) xen
 
     # Preserve artefacts
-    cp xen/xen binaries/xen
+    collect_xen_artifacts
 else
     # Full build.  Figure out our ./configure options
     cfgargs=()
@@ -101,5 +111,5 @@ else
     # even though dist/ contains everything, while some containers don't even
     # build Xen
     cp -r dist binaries/
-    if [[ -f xen/xen ]] ; then cp xen/xen binaries/xen; fi
+    collect_xen_artifacts
 fi
-- 
git-series 0.9.1


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 03:11:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 03:11:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809949.1222533 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swYjG-0005AH-Un; Fri, 04 Oct 2024 03:11:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809949.1222533; Fri, 04 Oct 2024 03:11: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 1swYjG-0005AA-Ry; Fri, 04 Oct 2024 03:11:42 +0000
Received: by outflank-mailman (input) for mailman id 809949;
 Fri, 04 Oct 2024 03:11: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 1swYjF-0005A0-On; Fri, 04 Oct 2024 03:11: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 1swYjF-0001dz-Kj; Fri, 04 Oct 2024 03:11: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 1swYjF-0003w1-AN; Fri, 04 Oct 2024 03:11:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swYjF-0004ZK-9P; Fri, 04 Oct 2024 03:11: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=Qjh0+kn/JtRZ7ZolQiLClcbQV0nboA9eMhNP92sNGmo=; b=DHUsg0s7FuBMHPOpa22P+OyKeb
	SjvK/3abrlNAVqxszklgNHKkjnzZEtw42n4mAam91zBjewUB6ZjGJBe433Qan96eb12ovbWjhD4uE
	mdfEPfA0uPXZDCTDdg6/JFPLPHnpyRFQwNDHxIhJF5OGTcBLKMBNZ6F68LGhVf1VfFJk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187960-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187960: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=71239406652f78675499f2fbe937de03c53129cb
X-Osstest-Versions-That:
    ovmf=2fdc39d09d49a57e8dc87022b1dedd958f8c8d6a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 03:11:41 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 71239406652f78675499f2fbe937de03c53129cb
baseline version:
 ovmf                 2fdc39d09d49a57e8dc87022b1dedd958f8c8d6a

Last test of basis   187957  2024-10-03 20:41:33 Z    0 days
Testing same since   187960  2024-10-04 01:11:34 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Oliver Smith-Denny <osde@linux.microsoft.com>
  Oliver Smith-Denny <osde@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    


------------------------------------------------------------
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
   2fdc39d09d..7123940665  71239406652f78675499f2fbe937de03c53129cb -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 04:12:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 04:12:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809971.1222542 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swZgG-00056S-6A; Fri, 04 Oct 2024 04:12:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809971.1222542; Fri, 04 Oct 2024 04:12: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 1swZgG-00056L-3X; Fri, 04 Oct 2024 04:12:40 +0000
Received: by outflank-mailman (input) for mailman id 809971;
 Fri, 04 Oct 2024 04:12: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 1swZgF-00056B-2l; Fri, 04 Oct 2024 04:12: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 1swZgE-0002lb-Uk; Fri, 04 Oct 2024 04:12: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 1swZgE-0005tF-Lv; Fri, 04 Oct 2024 04:12:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swZgE-0001xq-LV; Fri, 04 Oct 2024 04:12: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=4xKBe59Eo6vryQ8ckwkLzCE4q19yF2WvYUrMB/kC9Z0=; b=OHIw3/PCaiqTN2QPw6DCSgImez
	nSjQRA2ym+wrOKxv6QvRu24ryz9RuuoeFoZhiqERDFZKfT0q+uXAdZIK8knjiXKfgthpIeBynTeHQ
	DqoU7T25j4EAQYhn66yl+b3rI22qjUbfFU60XpFfe9gZjMY0JcyJOEfqxKrQa8EFLMHc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187959-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187959: 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=d82e0e094e7a07353ba0fb35732724316c2ec2f6
X-Osstest-Versions-That:
    xen=163338e6fbec2c549d55782e1ae4cf238b793f4a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 04:12:38 +0000

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

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                  d82e0e094e7a07353ba0fb35732724316c2ec2f6
baseline version:
 xen                  163338e6fbec2c549d55782e1ae4cf238b793f4a

Last test of basis   187956  2024-10-03 19:04:06 Z    0 days
Testing same since   187959  2024-10-04 01:00:31 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Stefano Stabellini <sstabellini@kernel.org>
  Stefano Stabellini <stefano.stabellini@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
   163338e6fb..d82e0e094e  d82e0e094e7a07353ba0fb35732724316c2ec2f6 -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 05:45:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 05:45:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809983.1222557 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swb7n-0000Ww-J2; Fri, 04 Oct 2024 05:45:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809983.1222557; Fri, 04 Oct 2024 05:45: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 1swb7n-0000Wp-GU; Fri, 04 Oct 2024 05:45:11 +0000
Received: by outflank-mailman (input) for mailman id 809983;
 Fri, 04 Oct 2024 05:45: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 1swb7m-0000Wf-Rr; Fri, 04 Oct 2024 05:45: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 1swb7m-0004ki-Q7; Fri, 04 Oct 2024 05:45: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 1swb7m-0008LF-F3; Fri, 04 Oct 2024 05:45:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swb7m-0004xh-EY; Fri, 04 Oct 2024 05:45: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=C5Uhh/nwGTbQWJueKVXiMBOk9/D7/cnhvud8xb32ekU=; b=YqCpv6t9VcNVyIo7tn47bvcDRi
	led1rIiNiMIfeqGExLxAy+esPkzK0I5EVkcVFd6IlKFsXZuPdCuz6V8/nHEOxbP89NWapS8erSoUH
	smB+37K3zWTx3mPZ5FyGvSsd34kzLwyZdNpVBHQYyevyuRgPIq/5gT670KuDy2EB/YL4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187952-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-upstream-unstable test] 187952: tolerable FAIL - PUSHED
X-Osstest-Failures:
    qemu-upstream-unstable:test-armhf-armhf-xl-arndale:xen-boot:fail:heisenbug
    qemu-upstream-unstable:test-armhf-armhf-libvirt-vhd:guest-start/debian.repeat:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=3fdb3cd3a27a22a050c7d27126a24807a7a45745
X-Osstest-Versions-That:
    qemuu=0df9387c8983e1b1e72d8c574356f572342c03e6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 05:45:10 +0000

flight 187952 qemu-upstream-unstable real [real]
flight 187962 qemu-upstream-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187952/
http://logs.test-lab.xenproject.org/osstest/logs/187962/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale   8 xen-boot            fail pass in 187962-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-vhd 17 guest-start/debian.repeat fail baseline untested
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 187962 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 187962 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 182361
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 182361
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 182361
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 182361
 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-xsm 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-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-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-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-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-amd64-libvirt-vhd 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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                3fdb3cd3a27a22a050c7d27126a24807a7a45745
baseline version:
 qemuu                0df9387c8983e1b1e72d8c574356f572342c03e6

Last test of basis   182361  2023-08-16 10:09:16 Z  414 days
Testing same since   187952  2024-10-03 12:12:05 Z    0 days    1 attempts

------------------------------------------------------------
751 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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  fail    
 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-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 fail    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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/qemu-xen.git
   0df9387c89..3fdb3cd3a2  3fdb3cd3a27a22a050c7d27126a24807a7a45745 -> master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 06:09:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:09:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.809991.1222566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swbUt-0003rm-3Z; Fri, 04 Oct 2024 06:09:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 809991.1222566; Fri, 04 Oct 2024 06: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 1swbUt-0003rf-11; Fri, 04 Oct 2024 06:09:03 +0000
Received: by outflank-mailman (input) for mailman id 809991;
 Fri, 04 Oct 2024 06:09: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swbUr-0003rZ-Lq
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 06:09: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 25d60793-8217-11ef-a0ba-8be0dac302b0;
 Fri, 04 Oct 2024 08:09:00 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8d446adf6eso272120266b.2
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 23:09:00 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104731besm176501766b.163.2024.10.03.23.08.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 23:08:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25d60793-8217-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728022140; x=1728626940; 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=PT5FF9FCVSduzE7WsMNW2QGl+PLBKLmxJdY8DNRPuh0=;
        b=ILmSeJGAXRUr9/7uuT9vqLa+8Qp8wqLhPzshMGUREvoX1Feiuzf2IPZbyFvbIdTZZA
         PlMvY4oLL9AH7taTgMAb1bfAz7jZDUWmHsfdOr8hqT/12dDWRWWcDT2JcVVGMhInNadG
         oBdTTnyVl50wdMFhwZbC/buDN8GECtJYyUaM+cZbKWOzebCE6aZsgPFwE0e2gUpLjoKB
         PBgzzWp1RNwSuTFg+yR0B1mIiX0i9B+bfh8F3m9rJBe/cLxcGod2fFxzdRDJ0X9tBY5d
         YE4YtY/Ew/gdzjaxMlAqAIpDaSaP6W5oQ6IcNj41AASHXHChaFt6VmVggmS43MXr2I8l
         HwAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728022140; x=1728626940;
        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=PT5FF9FCVSduzE7WsMNW2QGl+PLBKLmxJdY8DNRPuh0=;
        b=SjFmu3TuaItRnQAIt4iPLJ+cPFFBGH/j6RKwaOHHu7bDdPZcCLfJokqcKHfBaZQ7Gn
         ajSncdyCkT88bHuDlmNOppT/ZZpsN3xSfK7KeqcWdTgIF6NNCAN3yKQ2hgSGNDbwsCXu
         y42y76c+8tKpbhwaX3HmwKVd4srjspWE664qEti1YH7bCjUqyepHJHZm2pgjxUmS+Q8u
         7WKsZkjcvcm0n1zQJnlL3PuWlwli1p40R9EvLHxwItUnmpTD3n19k1XbztELqsB0rdrW
         4mbb4R5u3v2E5shXtmiav+NkcLRWZYCA5PuK9MIglwNgzRkRyeJFUTol2AlN1BhuScvL
         52Wg==
X-Forwarded-Encrypted: i=1; AJvYcCWFXGuC0Me0mC0xtg4EtHlZK8gMAPKpUOOIZY7Boej9lHV3wK3zjCqLusSJAiXP041rOangPWUUVMk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxNmz6Lsrcy56ex2QuGTFbDfAsZKj75D/4G2eSzp7kdiu7wsZFF
	fmOF0kCk7CSJ0QMi/7b7A0BF6FLH5QzeKxahk69IfNNdwOPfCxDE24ZCKgCb9A==
X-Google-Smtp-Source: AGHT+IFSylWFcB+3YZsuCjs4zcXLmLofJmKr9uD0dYu+1NiU92wk/uQrSCaY3zAZUBypHUnYvnFaog==
X-Received: by 2002:a17:907:743:b0:a86:82e2:8c64 with SMTP id a640c23a62f3a-a991bd7d3e2mr138748466b.35.1728022139784;
        Thu, 03 Oct 2024 23:08:59 -0700 (PDT)
Message-ID: <1a0d69a0-84fb-4178-9f73-5490bb1d1adf@suse.com>
Date: Fri, 4 Oct 2024 08:08:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/2] x86/fpu: Split fpu_setup_fpu() in three
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: 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: <20240813142119.29012-1-alejandro.vallejo@cloud.com>
 <20240813142119.29012-3-alejandro.vallejo@cloud.com>
 <c83942d9-bb55-45c2-9a44-314266ce14c0@suse.com>
 <D3EXG6HDKMYR.15275C42NLLBL@cloud.com> <D4M7ZZL8YUXE.1D7KX3JJDYH6L@cloud.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: <D4M7ZZL8YUXE.1D7KX3JJDYH6L@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 03.10.2024 15:54, Alejandro Vallejo wrote:
> On Tue Aug 13, 2024 at 5:33 PM BST, Alejandro Vallejo wrote:
>> On Tue Aug 13, 2024 at 3:32 PM BST, Jan Beulich wrote:
>>> On 13.08.2024 16:21, Alejandro Vallejo wrote:
>>>> It was trying to do too many things at once and there was no clear way of
>>>> defining what it was meant to do. This commit splits the function in three.
>>>>
>>>>   1. A function to return the FPU to power-on reset values.
>>>>   2. A function to return the FPU to default values.
>>>>   3. A x87/SSE state loader (equivalent to the old function when it took a data
>>>>      pointer).
>>>>
>>>> While at it, make sure the abridged tag is consistent with the manuals and
>>>> start as 0xFF.
>>>>
>>>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>>>
>>> Reviewed-by: Jan Beulich <jbeulich@suse.com>
>>>
>>>> ---
>>>> v3:
>>>>   * Adjust commit message, as the split is now in 3.
>>>>   * Remove bulky comment, as the rationale for it turned out to be
>>>>     unsubstantiated. I can't find proof in xen-devel of the stream
>>>>     operating the way I claimed, and at that point having the comment
>>>>     at all is pointless
>>>
>>> So you deliberately removed the comment altogether, not just point 3 of it?
>>>
>>> Jan
>>
>> Yes. The other two cases can be deduced pretty trivially from the conditional,
>> I reckon. I commented them more heavily in order to properly introduce (3), but
>> seeing how it was all a midsummer dream might as well reduce clutter.
>>
>> I got as far as the original implementation of XSAVE in Xen and it seems to
>> have been tested against many combinations of src and dst, none of which was
>> that ficticious "xsave enabled + xsave context missing". I suspect the
>> xsave_enabled(v) was merely avoiding writing to the XSAVE buffer just for
>> efficiency (however minor effect it might have had). I just reverse engineering
>> it wrong.
>>
>> Which reminds me. Thanks for mentioning that, because it was really just
>> guesswork on my part.
>>
>> Cheers,
>> Alejandro
> 
> Playing around with the FPU I noticed this patch wasn't committed, did it fall
> under the cracks or is there a specific reason?

Well, it's patch 2 in a series with no statement that it's independent of patch
1, and patch 1 continues to lack an ack (based on earlier comments of mine you
probably have inferred that I'm not intending to ack it in this shape, while at
the same time - considering the arguments you gave - I also don't mean to stand
in the way of it going in with someone else's ack).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 06:24:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:24:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810000.1222577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swbjN-0006iw-EH; Fri, 04 Oct 2024 06:24:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810000.1222577; Fri, 04 Oct 2024 06: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 1swbjN-0006ip-BR; Fri, 04 Oct 2024 06:24:01 +0000
Received: by outflank-mailman (input) for mailman id 810000;
 Fri, 04 Oct 2024 06:24: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swbjM-0006ij-Kr
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 06:24: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 3d3d0cc1-8219-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 08:23:58 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c718bb04a3so2140528a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 23:23:58 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102892f2sm178509066b.45.2024.10.03.23.23.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 23:23:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d3d0cc1-8219-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728023038; x=1728627838; 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=2M15zK0DxC62d9Bv6bb5nOWP7coKduRD91GmFz0m1rg=;
        b=Bl+8dacqAzLRGuJMBX/1soN2zHIWaaaj2eCD3ACNTTaR91j6nsM5n5bWDwad0rahJE
         SOq71N3Eq53+kty1m0LDV3/LcCOzizqf8IWkX+s04U25RpLkIX6XAc58iRxhuBTbCN7t
         8UHjdt+9AanzJ0PSOAn+kUPl8aTMn8yWF60nZo+UY2O9AcSZDScVU4yia5+lAoIMY/8b
         TAtBVIGgBH2r5HO81haonxN6iP1aMBFFBUnm6Kxr1bN0pLmlgxY/1h0E/u/LOMvab6YB
         Rn9fnvip0uZY6YZn/Dx7GbczQ6C8+bdymvGTjeVKRx84ibw0vDppXFbBNKOWTs+uFvwT
         pCgA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728023038; x=1728627838;
        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=2M15zK0DxC62d9Bv6bb5nOWP7coKduRD91GmFz0m1rg=;
        b=HKbwJboKCE+CnX3XEyqxqEV3TWkIGNxZFKaCZEUXyf/W4VSpyGMl4mi4J55JH4d+Ok
         NKqkul9a9bTUc/0Cn0+UxuEjv831x48PfXVQ746ivCrt1mdXWh/dHipEurXkywOnH2IB
         Q6erTgl2vRG0KmzSyHTNK2ZdQgkzhlSbbjPVOZroVu4KMdJuV2eGvm9Kfk1TUuyv/XD3
         ETfzxtPub6w/p5QSf0UWYcjBLv84LI52yXdOZM+KqnJI8tubrer11WqAO2udvhJGQkpS
         N1P+kAGbv24YHzOU/PYvSAuWLqIMFiuaCU/yovrGsgyz2rD0nk2k7HJS0o91gokZ5RWF
         15IA==
X-Gm-Message-State: AOJu0YysVQZGBWlTxf4Tj9xww1Rywz/QXnSIITIpi0yqR+Z/HAbD9W3d
	p2XFjWjmJRzupUX6njr+k+shv/oDTGKp6ptgQ1LcJ4ikD6aX2WkVpyAzTjHFGA==
X-Google-Smtp-Source: AGHT+IFVBC42EBQ36UqU9vpQy7f6lDbvh0Mpl8xUQ3kVrxu9RCGnt0d+clv4TaBviLcnsIjRSjFwQw==
X-Received: by 2002:a17:906:7303:b0:a99:22e:9658 with SMTP id a640c23a62f3a-a991c031334mr160684866b.40.1728023037987;
        Thu, 03 Oct 2024 23:23:57 -0700 (PDT)
Message-ID: <b09f94e4-1a96-4de5-816e-362ba4131f5a@suse.com>
Date: Fri, 4 Oct 2024 08:23:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 00/19] Update header guards bases on new coding style
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org
References: <20241003175919.472774-1-frediano.ziglio@cloud.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: <20241003175919.472774-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 03.10.2024 19:59, Frediano Ziglio wrote:
> With the help of some scripts and manual checking I updated header guards.
> 
> As the changes are pretty large patch was split based on maintainers
> to reduce mail spamming.
> 
> Excluded public headers from the update, they are API, software like
> Qemu will fail to compile if changed.

Interesting - the first patch I peeked at, ...

> Changes since v1:
> - make all commit compile;
> - exclude public headers, their guard is not an API.
> 
> Frediano Ziglio (19):
>   xen: Update header guards - Generic
>   xen: Update header guards - X86
>   xen: Update header guards - ACPI
>   xen: Update header guards - ARGO

... this one, adjusts a public header. And the diffstat ...

>  xen/include/public/arch-arm.h                           | 6 +++---
>  xen/include/public/arch-arm/hvm/save.h                  | 4 ++--
>  xen/include/public/arch-arm/smccc.h                     | 6 +++---
>  xen/include/public/arch-x86/cpufeatureset.h             | 6 +++---
>  xen/include/public/arch-x86/cpuid.h                     | 6 +++---
>  xen/include/public/arch-x86/guest-acpi.h                | 6 +++---
>  xen/include/public/arch-x86/hvm/save.h                  | 6 +++---
>  xen/include/public/arch-x86/hvm/start_info.h            | 6 +++---
>  xen/include/public/arch-x86/pmu.h                       | 6 +++---
>  xen/include/public/arch-x86/xen-mca.h                   | 6 +++---
>  xen/include/public/arch-x86/xen-x86_32.h                | 6 +++---
>  xen/include/public/arch-x86/xen-x86_64.h                | 6 +++---
>  xen/include/public/arch-x86/xen.h                       | 6 +++---
>  xen/include/public/argo.h                               | 4 ++--
>  xen/include/public/vm_event.h                           | 6 +++---

... also contradicts that statement. Please clarify.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 06:35:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:35:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810006.1222586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swbuj-0000CI-Cz; Fri, 04 Oct 2024 06:35:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810006.1222586; Fri, 04 Oct 2024 06:35: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 1swbuj-0000CB-9v; Fri, 04 Oct 2024 06:35:45 +0000
Received: by outflank-mailman (input) for mailman id 810006;
 Fri, 04 Oct 2024 06:35: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swbui-0000C2-IX
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 06:35:44 +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 e15c5d49-821a-11ef-a0ba-8be0dac302b0;
 Fri, 04 Oct 2024 08:35:43 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c5b9d2195eso2365251a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 23:35:43 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8ca4d6de3sm1487883a12.76.2024.10.03.23.35.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 23:35:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e15c5d49-821a-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728023743; x=1728628543; 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=EA/bcFknahj8v7ut2XQMu2yAnNkFtp7StC4rkcp55oo=;
        b=aHKdtSXI1L8p3LOi/snH831H4/7Opm16kOcZA5iyuEFMXcHYwmCk1xa2WpJLrsaVK5
         6SkXCTF2Th5KRlEbkx98e5go9pGc0pNBNXn1GYDdsms/+equC76SX697HVJ3pbSvyleT
         zkC9nFZk6iRwPLC5zwOoyGdBe9OvbL9Rn0sJKSNonZEDPbimChpJ/Br1OgrqraevujQm
         zXNPlyTnayxXIqe0+7tG0TIBEKnHJP3mUV/ZwtYL+7TL/PCtnKRP7uTHsa08W0ws2IGN
         G1o+fKXrHfLUEO/iNhdJvQ32OQKImu5MJFCwUR0cAFnqJ7HmMjCcltheFDQlm7P9mvUe
         bTnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728023743; x=1728628543;
        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=EA/bcFknahj8v7ut2XQMu2yAnNkFtp7StC4rkcp55oo=;
        b=CartPnxL5KaxVzfrBcx/yy/ba9QJV2wTHn9RqMPE/fUWv4R20cOeaRjD3PxeNSdLy5
         GWJ1Wp2sJr02s5qX4Z/bxPa1/Z7SVEJ6WuYmeOYchI/+AoJZdhpBW6VyGSojTNXVU/yM
         P6L1z7yAuvF0kZ0ZM4RXoNwQZX3Et+KR/qrRxSJUe22jjMotCBElv+olHUiCcRz5p57F
         MWcDFktLVt9/sisG41iEqLMPVN0WWSBPHLxT4FpxRllrQlhI1KGPGPQqzgDQxj0ynj8k
         5MlQ+Ck0/0i9lZlyAiRSAPU9takwWgKjnI2/wKjZ0YjQy0wfLkxRBIzsxQMfohLhbDnS
         hJBA==
X-Forwarded-Encrypted: i=1; AJvYcCXp3nkxVGQ26F8o+aQw7gnKnGOoz+eOlcqXJ5d8TVv3exfV5Bzo/OM/FOZY5HLUZbHbi+3csbxajCE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzfsHSb9+fiVAssIJfUVKW/KiStCAW1OGrXnKP5pIS+KMHvFve8
	AwF4+tcSRj4+lVMjcuUPLTmu5w670qkUH0czJA/a7XdrJTN4mNFSqEp3gocTxw==
X-Google-Smtp-Source: AGHT+IGkrfJzHIUf75YKwfRL1drfik6r6q+FIktniqVWozF+sZQ6vfEWLjH+GGOqQVxNEgcHvOWfDw==
X-Received: by 2002:a05:6402:50c8:b0:5c7:1ed7:8825 with SMTP id 4fb4d7f45d1cf-5c8d2e16682mr1247646a12.12.1728023742903;
        Thu, 03 Oct 2024 23:35:42 -0700 (PDT)
Message-ID: <ae1b0f51-c150-42e9-a80e-7380ea153e9b@suse.com>
Date: Fri, 4 Oct 2024 08:35:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Convert remaining uses of the legacy ALIGN
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002200913.1963443-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: <20241002200913.1963443-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.10.2024 22:09, Andrew Cooper wrote:
> There are only two remaining standalone uses the legacy ALIGN macro.
> 
> Drop these by switching the .incbin's over to using FUNC()/END() which has
> alignment handled internally.  While the incbin's aren't technically one
> single function, they're as good as one single function.
> 
> Finally, expand ALIGN inside the legacy ENTRY() macro in order to remove ALIGN
> itself.
> 
> 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 Oct 04 06:43:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:43:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810010.1222596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swc1v-00026h-2H; Fri, 04 Oct 2024 06:43:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810010.1222596; Fri, 04 Oct 2024 06:43: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 1swc1u-00026a-W3; Fri, 04 Oct 2024 06:43:10 +0000
Received: by outflank-mailman (input) for mailman id 810010;
 Fri, 04 Oct 2024 06:43: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swc1t-00026T-Oy
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 06:43:09 +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 ea144d5c-821b-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 08:43:07 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c87ab540b3so5164268a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 23:43:07 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8ca3e02b0sm1498027a12.32.2024.10.03.23.43.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 23:43:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ea144d5c-821b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728024187; x=1728628987; 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=hmYxHGg9YSO1d/YtR/JpWZEGn3yWbjxfedTFSJ5zNwk=;
        b=SyyPTn4oZTDTUoQZqDKyqIXE9+UKby/CVc69dKnggtdRaD5vlCqCdSLxIdattrAkne
         46xEGYArWo1IN6Pjmovf6XXYX+SjHczPp0y1vrTC7p0bImAkc77qhdxkz4BQKfh5u1O8
         fL0kL4/Unu6Ea9vCt6iy2WzZNcmFqjZH+zyYOVMqcZJpmjBP6djBky6de789X/ErWRBU
         f8VBXUQ3NgARVaED6hUHIq1VXoWxFcT9yxwhwLF2EL+v+I/Emz0lC6i6VeeVUTBnr2T6
         9/SvhTXgFXtnIIrFqdn/41gDTCqAoHaibCYR8pvTCMdNXy8gjOK5fNVhmKmzuyDXdlP6
         xtiQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728024187; x=1728628987;
        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=hmYxHGg9YSO1d/YtR/JpWZEGn3yWbjxfedTFSJ5zNwk=;
        b=lRPYNmdeGvOfOzS0rb4MfTNTGKyBNnDs2rQFxHKmYjxmASQbyHZOiO3KqP4Qm83nKZ
         gIhl1T2TuChwAKBxATf2CHuDJndNLIP1Mz3B1tHA/6As0lCkS1cmy9Qws/6WKNdM4X5B
         Ad4y7qiIok26LRzv67QBKC1WndUn/qa1pmD5nUwucLVKoW/czyGlt0xnm5z7ZGprQUTn
         MVfygVD8T+rQA34sRnLREEqVEaszbRR8cku4B7R/eKyoBRa8kFZOJfGlbp+2cA7qg5lY
         RCtVUqtHOKQbX2VDjqYq0BCKHmfXF3OttdwKggpI7llCM/rUV/ZsNqZ8aWRKJ8+NELbp
         mkcA==
X-Forwarded-Encrypted: i=1; AJvYcCVwYp4QKiGK+KMYQiLlU4DBPNQ9kuY74ObcUD6Al0KeJ251VlQqVkmmTrvb8zVYlfoWM7vTIVZ05FE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YymA3plVLI1j1b41p/HRqnElcUpgZRnXE1m6rcN5epZypV9a34q
	7LHiGKMhiWQ9uH2ws91KPp3Wsv/s7B06hX0GKReQV1aet6tmb26SNq5b+TTNsw==
X-Google-Smtp-Source: AGHT+IEF95BprliiUZbUKXYpy0NRLRNAR1D6LM4YeNcu5tb3zMuQohJ5wS9eK1pMxwfOEP1Ry9hyLQ==
X-Received: by 2002:a05:6402:2551:b0:5c4:2d5d:b25f with SMTP id 4fb4d7f45d1cf-5c8c0a65941mr5489705a12.13.1728024186906;
        Thu, 03 Oct 2024 23:43:06 -0700 (PDT)
Message-ID: <39fc1c44-ec09-4df2-86bc-c86717ef7a86@suse.com>
Date: Fri, 4 Oct 2024 08:43:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: Introduce X86_ET_* constants in x86-defns.h
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241003170413.2227753-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: <20241003170413.2227753-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 03.10.2024 19:04, Andrew Cooper wrote:
> The FRED spec architecturalises the Event Type encoding, previously exposed
> only in VMCB/VMCS fields.
> 
> Introduce the constants in x86-defns.h, making them a bit more consice, and
> retire enum x86_event_type.
> 
> Take the opportunity to introduce X86_ET_OTHER.  It's absence appears to be a
> bug in Introspection's Monitor Trap Flag support, when considering VECTORING
> events during another VMExit.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

> --- a/xen/arch/x86/include/asm/x86-defns.h
> +++ b/xen/arch/x86/include/asm/x86-defns.h
> @@ -204,4 +204,13 @@
>  #define X86_MT_UCM    0x07 /* UC- */
>  #define X86_NUM_MT    0x08
>  
> +/* Event Types. */
> +#define X86_ET_EXT_INTR    0 /* External Interrupt */
> +#define X86_ET_NMI         2 /* NMI */
> +#define X86_ET_HW_EXC      3 /* Hardware Exception (#PF/#GP/etc) */
> +#define X86_ET_SW_INT      4 /* Software Interrupt (INT $n) */
> +#define X86_ET_PRIV_SW_EXC 5 /* Privileged Software Exception (ICEBP/INT1) */
> +#define X86_ET_SW_EXC      6 /* Software Exception (INT3, INTO) */
> +#define X86_ET_OTHER       7 /* Misc event: MTF=0, SYSCALL=1, SYSENTER=2 */

ET could of course mean a lot of things; sadly no sufficiently short but
still less ambiguous alternative comes to mind, so ET is going to be it.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 06:48:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:48:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810016.1222606 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swc6j-0003AK-IH; Fri, 04 Oct 2024 06:48:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810016.1222606; Fri, 04 Oct 2024 06:48: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 1swc6j-0003AD-Fj; Fri, 04 Oct 2024 06:48:09 +0000
Received: by outflank-mailman (input) for mailman id 810016;
 Fri, 04 Oct 2024 06:48: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swc6h-0003A7-WF
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 06:48:08 +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 9c0ba310-821c-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 08:48:06 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso342559566b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 23:48:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9910285701sm183244266b.52.2024.10.03.23.48.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 23:48:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c0ba310-821c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728024485; x=1728629285; 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=EYdymnkFdan5/zJYRg6cH81Z0APzLjbE6Q0L0i/nahA=;
        b=Abrzs14P6mQ5Ty0q6HhZ+CfG88e/DD/qM9wX6KfG2m5P6K25wRVk15VJSSYUEVSoRq
         1DBNIbvhoThqAp9yJRVv0Umu/ZbkxL1YJfsHa7fYukT1ja6pDrKYJVnbc3puXsy0x9D4
         6uD/Buq395k5mYz2QjF0lV2FS/GG1yJoPnB662EfxfmNhrSatw0pn6DfG5WuN57NkhMr
         v6sk5ORRrRhzxFxJPQZugc6tAhIvkZuPvcPdi7I65T7afG+wMa9ZE21OktSps9ulhFaN
         eujsH9tir2AVbZtb5w+CoTE1cfHWNrToWoPbrFRkiEzBFfTkWIe2eeqxW2qGWeyW+mL+
         AO0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728024485; x=1728629285;
        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=EYdymnkFdan5/zJYRg6cH81Z0APzLjbE6Q0L0i/nahA=;
        b=u0zPw7m48qYm4dnwqTbSirpxLUbXcmEWBO+vLqDv78ntlXGwfwlavJAP1Hup3bLtPM
         hPj4H1bU+EXuJdWXv0q50EJEAxtUGfr26ld6iP1+K9h/bxGrVnrqY7Jw6KmQ+3cxsR4M
         4y+OG3VwPBxNftuTDV/Brs1rloyZtiuEt163VZZ599SE/mGMqdVPW3t5OnooxV+ZFobg
         2ckWaRs58l/YtIvkItAsv/H9IcVBmVDMGoWaDgFUPrgmJ0YXAZUk/7QKCYsIejBR6ZNg
         hptZ99/ELui4eh9bWRK04WpyaiBXbV6vsw2IfvNKegVDjR7G6E5EzPa1xbo6d6delip9
         92YQ==
X-Gm-Message-State: AOJu0YxpfkDeoWJHBnnsUmEYP5RqL0/lxVbDWNtd/lxLMGOCGBcjHV+4
	8rIiUbnZdMtXWJ87qCiahLzji8S0rgoHKrbxkDvyEkp/u32CQA3dNLQjKyLCwQ==
X-Google-Smtp-Source: AGHT+IEc2QSukVHcbdKHU9djwnweh7plWgSb8BKNRaX6dnbl4sMOxr47HZmpfegfxhBAiIWQ+M0SNA==
X-Received: by 2002:a17:907:36c8:b0:a8d:43c5:9a16 with SMTP id a640c23a62f3a-a991cede585mr152704266b.6.1728024485484;
        Thu, 03 Oct 2024 23:48:05 -0700 (PDT)
Message-ID: <ef73f945-1fc0-4f91-a185-0b74e393e89c@suse.com>
Date: Fri, 4 Oct 2024 08:48:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext
 ints
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Matthew Barnes <matthew.barnes@cloud.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
 <8c6d1fee5261169a9bbc62ed1bafd2c32406fb4c.1727880621.git.matthew.barnes@cloud.com>
 <Zv53FGD0ju5XsVjz@macbook.local>
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: <Zv53FGD0ju5XsVjz@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 03.10.2024 12:51, Roger Pau Monné wrote:
> On Wed, Oct 02, 2024 at 04:17:24PM +0100, Matthew Barnes wrote:
> 
> The commit needs a log, doesn't need to be extremely long, but it's
> important to note the reasoning behind using physical delivery for
> external interrupts vs logial mode.

Furthermore I question that the naming can remain as is - the driver
is no longer uniformly "flat" then.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 06:48:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:48:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810020.1222617 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swc7F-0003bq-RL; Fri, 04 Oct 2024 06:48:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810020.1222617; Fri, 04 Oct 2024 06:48: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 1swc7F-0003bj-OU; Fri, 04 Oct 2024 06:48:41 +0000
Received: by outflank-mailman (input) for mailman id 810020;
 Fri, 04 Oct 2024 06:48: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swc7E-0003aK-DK
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 06:48:40 +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 b01fabf3-821c-11ef-a0ba-8be0dac302b0;
 Fri, 04 Oct 2024 08:48:39 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso342642266b.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 23:48:39 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9910472262sm179880466b.186.2024.10.03.23.48.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 23:48:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b01fabf3-821c-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728024519; x=1728629319; 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=P1Li+auiGjtnam9gY3/oEudFR8B5GElQFamanJSyFDM=;
        b=PK0UywBzQ+Kr5GHskPJ0amUUuOyu5sS3iJ8kA1zRL0oAOqvgajmDzT2PRaGBK9BZlj
         GA9ujcY0mNONCyoucXkuoB5VdMNGfMmw1/40xiLawcIwCdSm+eGHD04qTo3gNfGclLNg
         sm3iWlVBqdvH5yiOAMlSxzl6gy6nfmWH3/YVOf36+CaeEadN1WnxbcGcrKQFawxyGwgw
         56oUVNEI9+sEzDfUuQf1XKtqYAo/f3s/LgeN9JGe70mE2005JldFN7Z1NHt0+UMDkqNZ
         8Lm2klgWOVDZ9w/1vI6a9eFzlROXTDpLGj7uUXqyBhRjxxfKYK+oNP8+LjdIb0cUuew+
         +knA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728024519; x=1728629319;
        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=P1Li+auiGjtnam9gY3/oEudFR8B5GElQFamanJSyFDM=;
        b=IMkH6j4jh73sT/UxTO5HXKL9XYCesz9Axd4yVoTB/5+3WiisW+15YrmkJXor9kPrgg
         1rAZnr9VHdCqvcXJN8rof9ShboQMLn+UNG7MGUxdpwJXf07co27k4qXnVUnTW8zjvhuk
         GalOQ9BMIoMVBgg9JC4/tbhSubL8hPHwO6KxTFqQ1Kf5wc3BVLjfesBwVtYxrehIb+eY
         OjJPMZyGmgQuVwymbD2iDMsLu2JHHT5gUUgXVZ/0qDMo0tojqaaXrTaNKWDenEnDeO1R
         uAWlbAkU7Aba4vnOaBgR5+/FW5oKwiOCNmtdh0GU2JrRpqIiaF8WIe6xnouEKk+7lQJ/
         CcQA==
X-Gm-Message-State: AOJu0Yxw7tqVlFPJjQYPakcRwkHjl0iPkNwWEE0fOZyxGMG5tIIlPMmw
	QyZ8mLH45SxE70yOgeCBGAaR1KQvbkhonX+Qem7TpZhiKhumoYp4/nemzW+RAQ==
X-Google-Smtp-Source: AGHT+IFDM9C2/nBrLf76giwg2AxA22jp6DNmiBZ7zzuG7FACezJpkIIzX6M5h6eCQQfnXNRjXBO9+Q==
X-Received: by 2002:a17:907:3e1c:b0:a72:7a71:7f4f with SMTP id a640c23a62f3a-a991cede491mr143607666b.7.1728024519311;
        Thu, 03 Oct 2024 23:48:39 -0700 (PDT)
Message-ID: <9bfe6b36-d44a-424d-819b-b19978571b18@suse.com>
Date: Fri, 4 Oct 2024 08:48:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/APIC: Remove unnecessary logical flat functions
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Matthew Barnes <matthew.barnes@cloud.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
 <fc3176baecd67c23dff710e4a1934c2caae47ebd.1727880621.git.matthew.barnes@cloud.com>
 <Zv53Qz76kN0-1T9F@macbook.local>
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: <Zv53Qz76kN0-1T9F@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 03.10.2024 12:51, Roger Pau Monné wrote:
> On Wed, Oct 02, 2024 at 04:17:25PM +0100, Matthew Barnes wrote:
>> Now that GENAPIC_FLAT uses physical destination for external interrupts,
>> these functions implementing logical flat for external interrupts are no
>> longer used.
> 
> I think it's fine to merge this with the previous commit, so that the
> functions are removed at the point there are no longer used.

Indeed - no reason to even transiently introduce new Misra violations.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 06:53:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:53:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810026.1222626 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swcBa-0005Dd-HO; Fri, 04 Oct 2024 06:53:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810026.1222626; Fri, 04 Oct 2024 06:53: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 1swcBa-0005DW-Ef; Fri, 04 Oct 2024 06:53:10 +0000
Received: by outflank-mailman (input) for mailman id 810026;
 Fri, 04 Oct 2024 06:53: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swcBZ-0005DQ-TP
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 06:53:09 +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 4799b610-821d-11ef-a0ba-8be0dac302b0;
 Fri, 04 Oct 2024 08:52:54 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c5bca59416so2161937a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 03 Oct 2024 23:52:54 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8ca3dfc4fsm1509339a12.36.2024.10.03.23.52.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 03 Oct 2024 23:52:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4799b610-821d-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728024773; x=1728629573; 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=dYBbTKANBB5i6Bo+WWohel/FFVYC8QWGgwiEeqc2Z+o=;
        b=cFfABN2Z3BBoQkCsLgNpKoArsGbXXgTYok7z0uxYTGlVqdr9R6Yandu+faKA8nixG/
         vlGagX4k7I84uujp0ayyEqA3KDJj6pqMwLzUih7Y9KKx7elTX8RWM3f42TfDKBvT5tSQ
         3qABifnF9vo13r45TiEr7iv9ydTgH4IAyUncxhJf9f69z4iIzYp5D1Fs3dO7O0Crjvn2
         EP1g2G1nVBt914zOZ+xkpYuuJdWIwnsVe3FGAYMaTeAxdNd5R4dobB3ZQX8f5FmRSKyB
         fTPO1bMZvH0eKLI8e9Q5RRs+iXpukCrUyO8+LNhaTLfmCgbn/oI3zP2hyGEa0yzq24BZ
         A/xw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728024773; x=1728629573;
        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=dYBbTKANBB5i6Bo+WWohel/FFVYC8QWGgwiEeqc2Z+o=;
        b=Ag4G7mOkQl54TjMUf0tjqn39C5cZafQzA0buC+kCy1F8vmnU5yx/IP5YKgA9oFqDPx
         z5r/y62oF5umYCdz6pyuQPCJDWCK0UDihsis6h9BRvWu2gTAI7G9H7T+kRMhegmCch8D
         qJ9LOUWD/Knsi/mpZ+ERnUZ05DNJTjIGDWRH9lMZjX3gu6UuBcVWHmKwH09be6XuhT5J
         0eqD4YUTEsYBJyIQWh/5v8BC7TWzH9/FI1eyw/YjZpOpmO74hPuHaTNmP0+L9GpZJR/f
         CZqLXPIOM3jccnsRCBXo3cYQBBzuIHmDzLldkEP1S3SDDxbu6LEJ+KdHHO2kr0EEJ0Jd
         DtCw==
X-Forwarded-Encrypted: i=1; AJvYcCWW/wzEjc3WsRTXDgbG5G4j5H6d2s65Vfu5xducvcwXCL8KM6NqVhNXDhiU1uPi9nNVCXpn4U6i9lo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx7IPq8eO1Gf17YvWzVohmpslyjhlcNgwB6oBpP+SLekZLQMuDc
	5lR+oymPfQOVu6Uqhxqcp4Q0e86qdxdjiL4+rehrNTVFIQ6c726CE/dbLcRccQ==
X-Google-Smtp-Source: AGHT+IE3UTf7W0Opp+i5sj+lNPGHwKjFn+rudBzghY0RKix6UdviZLpHmfAnBW/hrDFkQogPwDojFA==
X-Received: by 2002:a05:6402:3811:b0:5c8:9f44:8145 with SMTP id 4fb4d7f45d1cf-5c8d2e8769dmr1153763a12.26.1728024773390;
        Thu, 03 Oct 2024 23:52:53 -0700 (PDT)
Message-ID: <7dbd7fae-e2e8-4508-a012-cf9b719c68f1@suse.com>
Date: Fri, 4 Oct 2024 08:52:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Further simplify CR4 handling in
 dom0_construct_pv()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002232008.1988682-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: <20241002232008.1988682-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 03.10.2024 01:20, Andrew Cooper wrote:
> The logic would be more robust disabling SMAP based on its precense in CR4,
> rather than SMAP's accociation with a synthetic feature.

It's hard to tell what's more robust without knowing what future changes
there might be. In particular ...

> @@ -1064,19 +1065,19 @@ int __init dom0_construct_pv(struct domain *d,
>       * prevents us needing to write construct_dom0() in terms of
>       * copy_{to,from}_user().
>       */
> -    if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
> +    if ( cr4 & X86_CR4_SMAP )

... with this adjustment ...

>      {
>          if ( IS_ENABLED(CONFIG_PV32) )
>              cr4_pv32_mask &= ~X86_CR4_SMAP;

... this update of a global no longer occurs. Playing games with CR4
elsewhere might run into issues with this lack of updating.

As the future is unknown, I'm really fine either way, so if you continue
to think this way is strictly better:
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 06:56:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 06:56:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810032.1222637 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swcEm-0005pR-Un; Fri, 04 Oct 2024 06:56:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810032.1222637; Fri, 04 Oct 2024 06:56: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 1swcEm-0005pK-S3; Fri, 04 Oct 2024 06:56:28 +0000
Received: by outflank-mailman (input) for mailman id 810032;
 Fri, 04 Oct 2024 06:56: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 1swcEl-0005nt-Jc; Fri, 04 Oct 2024 06:56: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 1swcEl-0005xh-EO; Fri, 04 Oct 2024 06:56: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 1swcEk-00025O-Si; Fri, 04 Oct 2024 06:56:26 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swcEk-0006t8-S9; Fri, 04 Oct 2024 06:56: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=P2vhOE97fUs5olrAlYHlDSjza3oKrBSDCRwz8EQslCI=; b=u1oPtuW/MMgRlmUrusdlUIofXy
	2R0pEVqCKVgyt2o9mUBPT6XaJWX72EwumRiwQx6C9bLFqjq4DDn4tLBcF4Ni0UWbvVYxyxIcJfiBq
	Ey60R20TfjE1+Ea7Utxx8I6Z/g5ApUByLiAe0j+a68c/wvb1ihIPhkSSAWjvCQUBqENo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187963-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187963: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=91d806917fd2be763f067a58ef05fadcf43efab1
X-Osstest-Versions-That:
    ovmf=71239406652f78675499f2fbe937de03c53129cb
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 06:56:26 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 91d806917fd2be763f067a58ef05fadcf43efab1
baseline version:
 ovmf                 71239406652f78675499f2fbe937de03c53129cb

Last test of basis   187960  2024-10-04 01:11:34 Z    0 days
Testing same since   187963  2024-10-04 05:11:31 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Heinrich Schuchardt <heinrich.schuchardt@canonical.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    


------------------------------------------------------------
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
   7123940665..91d806917f  91d806917fd2be763f067a58ef05fadcf43efab1 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 07:10:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 07:10:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810040.1222646 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swcRr-0008UK-1f; Fri, 04 Oct 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 810040.1222646; Fri, 04 Oct 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 1swcRq-0008UD-VH; Fri, 04 Oct 2024 07:09:58 +0000
Received: by outflank-mailman (input) for mailman id 810040;
 Fri, 04 Oct 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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swcRp-0008U5-6v
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 07:09:57 +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 a8ef3b73-821f-11ef-a0ba-8be0dac302b0;
 Fri, 04 Oct 2024 09:09:56 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a910860e4dcso279946166b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 00:09:56 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102a5c77sm183905766b.63.2024.10.04.00.09.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 00:09:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8ef3b73-821f-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728025796; x=1728630596; 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=Ho4Gysn78FpFLuRB5/FuNEVX/Eh9IgP/HwXqGwLJ9A8=;
        b=LGaC3E9uBUELkKbgTG32ZKT0qMF9iul3F7uZ3L8tShx4ko6cXqgc7L015N23NBZz5E
         mfex/gIEdnGSMQW1PPs/h1E4Z2fLA6eMYJtv/5lgMTNrUgDdGKYL45H61YuTQXHCIBWN
         95VM/p19zhR9B3zXpusoHwg9OpM0mSrScQdOB344LhnTVXQfQv8FpkjyWzSaPHG/Ncmc
         bECRyYKiA2IQZEQlM/wG2RWI5qynPm9mQRy8/D0kg/E1RarV3HLtUK/uCnS3mdLo/zxU
         0Z9sB+UgGG2lpx3NrgsoeRLuXmrL6rSI3PIWyD4SSJQRG4EaUDw75tmBN1Se9fQyA0RY
         im1w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728025796; x=1728630596;
        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=Ho4Gysn78FpFLuRB5/FuNEVX/Eh9IgP/HwXqGwLJ9A8=;
        b=ZwlagWqWhDcMAHDvL1jILMjoxTJvU/cCvQDyfX4R4HWZxY58zn2urbP227ouGOlw1i
         HoLEhHw2VajymEMhXg8gjYx3RR/O5dMuvMkhygENMQs+8x+Wp2HhAqlnhigYKpnRu8o0
         BuawxjsOcg6LQbkdwOsfuLBarI89cb8Wold5TUSJD8IehGZjJ9ff4zOruzbvsXVZQUfy
         KI8o/dH2BIalQHWcxl82lCvOKLjIJO4XTJSq/KA7IXM2RqKJmfMqkxQtR0rgeSJE9+Xh
         fuGSEKJIZpa6prXcXne2kh4JbFZTUxcZeC6pFHSqMbqCnD8U2gWvZzcM0fum1h5HWDu+
         J7og==
X-Forwarded-Encrypted: i=1; AJvYcCWtoKStxS/riWg3S60EO5TKFlBYmIrU9LOaJcoipKNj12Xz5PM/lYYg2TEjcNksUmWEYt+Y2avElAo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwzX35xSwSzt9X7U03BGQ+4C4F2sfOG64GXTp7pdb4Oqwn/pOLS
	zCSHZDScbPlhA9uWIAK4EJD7cdMoyIHbQqtoW99j153Qo6lkXotsnkXcgtuLhw==
X-Google-Smtp-Source: AGHT+IFLkIw/REh/F2uJ6RspRrjUaBLpHbrryzSK71I/mL6kQZDGONSBZTNj0vSSbQBq2xciu65N3A==
X-Received: by 2002:a17:906:d7dc:b0:a86:7d62:4c28 with SMTP id a640c23a62f3a-a991bd4548cmr155016166b.30.1728025795715;
        Fri, 04 Oct 2024 00:09:55 -0700 (PDT)
Message-ID: <903de969-9546-4a75-9431-3a5da31d0eef@suse.com>
Date: Fri, 4 Oct 2024 09:09:55 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/7] tests/x86: Introduce a userspace test harness for
 x86_decode_lite()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-3-andrew.cooper3@citrix.com>
 <8827ea2c-bac3-47c1-b1b1-9a2a02168c43@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: <8827ea2c-bac3-47c1-b1b1-9a2a02168c43@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02.10.2024 17:38, Andrew Cooper wrote:
> On 02/10/2024 4:27 pm, Andrew Cooper wrote:
>> Despite claiming full APX support in the 2.43 release, binutils trunk doesn't
>> tolerate JMPABS at all.  Clang-IAS like it but only when encoded as an
>> immediate, despite the fact the operand should be a moffset and encoded
>> without a $ prefix.  https://godbolt.org/z/P4Ph3svha
> 
> Actually, no.  Despite overlaying MOV moffs/rax, to share decode with
> another instruction that has a forced 8-byte immedate operation, it's
> used as a proper immediate, not a memory address.
> 
> So on further consideration, the $ prefix is correct.

This one's actually pretty ambiguous. Other direct branches don't use $, i.e.
consider the operand a "displacement", not an "immediate". Except for far
direct branches, which have (two) immediate operands. Originally coming from
the Intel syntax world, where this distinction doesn't even exist, I question
that arrangement. Imo far direct branches should have a non-immediate and an
immediate operand (the latter being the segment / selector). That would also
properly distinguish which one's which. Yet that ship has sailed; we could
add support for the alternative forms, but we can't drop support for the 2-
immediate variants.

I'd prefer to not repeat the mistake for JMPABS: The destination generally
is a symbol, and hence more natural to use without $. In the end it may be
prudent to simply permit both forms.

In any event I've added to my gas TODO list the need for JMPABS support.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 07:40:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 07:40:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810058.1222656 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swcvD-0005vz-5J; Fri, 04 Oct 2024 07:40:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810058.1222656; Fri, 04 Oct 2024 07:40: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 1swcvD-0005vs-2q; Fri, 04 Oct 2024 07:40:19 +0000
Received: by outflank-mailman (input) for mailman id 810058;
 Fri, 04 Oct 2024 07:40: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=OiC3=RA=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swcvB-0005vm-VH
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 07:40:17 +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 e47b8631-8223-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 09:40:14 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a8ce5db8668so288642166b.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 00:40:14 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9910470767sm186362366b.153.2024.10.04.00.40.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 00:40:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e47b8631-8223-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728027613; x=1728632413; 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=TWhuwZc4v+ia72DbiwEWxY6IKwRKaOR/m9Jlz2FVVi4=;
        b=PBYVNfhiZYoh5qJFyTc2OOFedVPr0jJwM8CuUmjXh0FtFYatgP8zbmidoYLGxslXdW
         3jegen7EImHiVg1thmendJuasb6dpDOpcZ2xVWsX3cxrPOmNG3sImbSgsIxwAy/rOhEl
         8olZDedtCt/Nuhu66sWfW0wofx7Cr9OePK9WU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728027613; x=1728632413;
        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=TWhuwZc4v+ia72DbiwEWxY6IKwRKaOR/m9Jlz2FVVi4=;
        b=Z/2oqCvkIGGxvYGy7i3tBWKNGVrnc41Mdb/qDsqFbi76VUAs5EtbcsxPNvDvFLwcGd
         r/+Q+P0VkfTfV2l05HlRBLYQA8E/0QUYi14N9wGeeTfnREuWI6rHNo3wfx5Xx93nYFdt
         geARPpB5WczSR+Vf4i4Ro7rtgYZuwDte6xOY7zOyCDfoOAY8avGWQuzTCtbcCVwyXnET
         Gl9CbJ3kepE9hCvziKedFr7eJVBrFEZ9dKINxU+6Udf5XpVJE8vlR2nwOffAShRijUA2
         XujbGGNTacMAe53DqhpKdjcYRYWpdRhBSqcHKlb2SjL7WrbrsANvcKuNvCsryGUAfDnU
         oZXA==
X-Forwarded-Encrypted: i=1; AJvYcCUMoQH9rbbqOKMTwiJ4gLpDG8hsRA3feL3UwVnGrdBEqrAMG+MkjYMgbtijuIhktPQ9qo9sQjkYbsE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy9jqnp1lOQ8OcfeRKcW2rCHLScevIT8vKyF93Nq4J3A58Z4ERG
	61YEABra1p2b91hPIZtlnkupldYrIEEt8NmtP8GHrU3eNSiyJ7nWedOqG88lw60=
X-Google-Smtp-Source: AGHT+IExg6xutFr3aKvwCWPz/6uCay8xqp2eGwl2vZ4m386zXnPyk1x3vT7DA8XfWI6ZPlbG5HkzQA==
X-Received: by 2002:a17:906:6a24:b0:a7a:b73f:7584 with SMTP id a640c23a62f3a-a991bd72dc3mr185407666b.34.1728027613571;
        Fri, 04 Oct 2024 00:40:13 -0700 (PDT)
Date: Fri, 4 Oct 2024 09:40:12 +0200
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 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] x86/boot: Further simplify CR4 handling in
 dom0_construct_pv()
Message-ID: <Zv-b3IP_RvCsY81q@macbook.local>
References: <20241002232008.1988682-1-andrew.cooper3@citrix.com>
 <7dbd7fae-e2e8-4508-a012-cf9b719c68f1@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <7dbd7fae-e2e8-4508-a012-cf9b719c68f1@suse.com>

On Fri, Oct 04, 2024 at 08:52:52AM +0200, Jan Beulich wrote:
> On 03.10.2024 01:20, Andrew Cooper wrote:
> > The logic would be more robust disabling SMAP based on its precense in CR4,
> > rather than SMAP's accociation with a synthetic feature.
> 
> It's hard to tell what's more robust without knowing what future changes
> there might be. In particular ...
> 
> > @@ -1064,19 +1065,19 @@ int __init dom0_construct_pv(struct domain *d,
> >       * prevents us needing to write construct_dom0() in terms of
> >       * copy_{to,from}_user().
> >       */
> > -    if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
> > +    if ( cr4 & X86_CR4_SMAP )
> 
> ... with this adjustment ...
> 
> >      {
> >          if ( IS_ENABLED(CONFIG_PV32) )
> >              cr4_pv32_mask &= ~X86_CR4_SMAP;
> 
> ... this update of a global no longer occurs. Playing games with CR4
> elsewhere might run into issues with this lack of updating.

Maybe we should assert the state of cr4 is as expected?

ASSERT(!boot_cpu_has(X86_FEATURE_XEN_SMAP) || (cr4 & X86_CR4_SMAP));

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 07:41:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 07:41:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810062.1222667 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swcw6-0006Rn-EI; Fri, 04 Oct 2024 07:41:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810062.1222667; Fri, 04 Oct 2024 07:41: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 1swcw6-0006Rg-BG; Fri, 04 Oct 2024 07:41:14 +0000
Received: by outflank-mailman (input) for mailman id 810062;
 Fri, 04 Oct 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=OiC3=RA=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swcw4-0006RS-Pk
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 07:41:12 +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 065fa528-8224-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 09:41:11 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2facf40737eso22082261fa.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 00:41:11 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8ca4f7075sm1540025a12.95.2024.10.04.00.41.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 00:41:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 065fa528-8224-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728027670; x=1728632470; 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=aVGAfiZgU91loboQtd9S1U3HFMtRge+DORdObXPlNOc=;
        b=AU29ulrP3wrfBaKl40YvgA4yQXZzf3c+cJVDqm1Ic2KTZq1v9sUWO6e3UbzAMws67Z
         WH19u4LuUGCPJDVAWRQF+6eXrSTezLIEf48f3dj+SNMuv8CHj5Biu4C0wML8Bt2CW/l6
         h6aglUClvD+vFthg5RITEzcJJv9/Zec2dL+oI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728027670; x=1728632470;
        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=aVGAfiZgU91loboQtd9S1U3HFMtRge+DORdObXPlNOc=;
        b=UugChz6cjihDF/vC/mKy1mNr0lL0THKVbtLvKZ9AanqJO+eQYerJbg203fr8OPsli5
         MvBeqj01iDZKZE723Y1RKujaueHYybDsiASBccEnV9BU/Iuj8PP0RnmSY9oh5FNnuLUo
         kppfj8vFyq/347t0ErCCO9gdUV20jsfccDFOJQzcjjmBm137p0G0ZHLZHdbjk/bAlpAR
         9dbeX4whozY3+iRxbYfUVLio50SyGnBuk264qdjXWqxdVqhsb+Tx+9ObVetQ0zj0Z5A+
         I8yeOx3pBVJbDkLP89nDSc6q7Ln2bRy9LbDDojtY2KPoJeHAv4vxG6P0okpmIPBGGqVM
         8/hg==
X-Forwarded-Encrypted: i=1; AJvYcCX+QR5ab7Hk00F+zUYwqzSTnpnzJzTJ+ghxHIAv5SBXnOvVOg4QZQKIY4W16MXir+PxfO8PQ7o2SIg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YykBO/sKilVKFpWs4jbarlIaF6anzeviINZO/9dALmSXFTpLlqx
	OEL7zksufT1kq2HF8iTfP3GuI3Wg4I/QxsJaWiYWO5I85JBvw1lF2VZwgaOv7Jk=
X-Google-Smtp-Source: AGHT+IHdTKwCIO4TcVgNi4XApYWyZ3X3GcrNEkWRGoam3VUbwt/eL/n/rzc1YBh/sxA2b5npZgjRHA==
X-Received: by 2002:a2e:b88e:0:b0:2ef:243b:6dce with SMTP id 38308e7fff4ca-2faf3c505d2mr7539531fa.10.1728027670241;
        Fri, 04 Oct 2024 00:41:10 -0700 (PDT)
Date: Fri, 4 Oct 2024 09:41:08 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Matthew Barnes <matthew.barnes@cloud.com>,
	xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 1/3] x86/APIC: Switch flat driver to use phys dst for ext
 ints
Message-ID: <Zv-cFMCfSh6bht0Z@macbook.local>
References: <cover.1727880621.git.matthew.barnes@cloud.com>
 <8c6d1fee5261169a9bbc62ed1bafd2c32406fb4c.1727880621.git.matthew.barnes@cloud.com>
 <Zv53FGD0ju5XsVjz@macbook.local>
 <ef73f945-1fc0-4f91-a185-0b74e393e89c@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ef73f945-1fc0-4f91-a185-0b74e393e89c@suse.com>

On Fri, Oct 04, 2024 at 08:48:05AM +0200, Jan Beulich wrote:
> On 03.10.2024 12:51, Roger Pau Monné wrote:
> > On Wed, Oct 02, 2024 at 04:17:24PM +0100, Matthew Barnes wrote:
> > 
> > The commit needs a log, doesn't need to be extremely long, but it's
> > important to note the reasoning behind using physical delivery for
> > external interrupts vs logial mode.
> 
> Furthermore I question that the naming can remain as is - the driver
> is no longer uniformly "flat" then.

Yeah, that's done in a later patch.  I wouldn't mind if it was all
folded into the same patch TBH.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:02:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:02:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810069.1222677 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdGN-0002BF-1m; Fri, 04 Oct 2024 08:02:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810069.1222677; Fri, 04 Oct 2024 08: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 1swdGM-0002B8-Tq; Fri, 04 Oct 2024 08:02:10 +0000
Received: by outflank-mailman (input) for mailman id 810069;
 Fri, 04 Oct 2024 08: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdGM-0002B2-H1
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:02:10 +0000
Received: from mail-oa1-x32.google.com (mail-oa1-x32.google.com
 [2001:4860:4864:20::32])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f34d841c-8226-11ef-a0ba-8be0dac302b0;
 Fri, 04 Oct 2024 10:02:09 +0200 (CEST)
Received: by mail-oa1-x32.google.com with SMTP id
 586e51a60fabf-287b8443affso509661fac.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:02:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f34d841c-8226-11ef-a0ba-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728028927; x=1728633727; 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=5RWeNMUJVv18MSTM0HqMu2i4E6HxBtEjIeE9qe4C70k=;
        b=YLmQr60Z7Dzwff6UoaoXmhv7bw9E1FOKXM8F625ZGrW89BJkSA9zST7esR295bTPTD
         GtgkilEjJ395iPsyC+EuHp3nxgitXnadsejDhLQb2iQt6Uvdbs99TRYlW6b0/JevttRn
         2SNtolFzoIAOSZpd97uyskt+Mqe+XeNY0sTpM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728028927; x=1728633727;
        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=5RWeNMUJVv18MSTM0HqMu2i4E6HxBtEjIeE9qe4C70k=;
        b=bkleu7lmO8uWFFlpOhmXOcMS5pYhJJjDLK0EC67KgQDmBem5mKCj7U22nzezVy6IBA
         G6w0cgeq2eyjj59+QEJjb18ItOY9qM0dcM3VqaW+NqvImf/ZIsOqT5TKhCOuWYYQsg2m
         FqZ7Xqp0zBzatMnPad38qRC1tyUVXMTkSALEPDQ/IYvzmAURBpLNOOBBE3Vumpr1gL9S
         8UlfuLqvcgQYagd53VXH3P6+Wr52I+J1cB9QsfCKz4nbWtuI3Zfs9ePT8XsryDe/Zms1
         zBvGvYQ2fK4xpSucoVhkgCMG72XFHQ8xGWeqrzfvS+MNnHng4rp+HhBEMTtiK7aAk75H
         8YFA==
X-Gm-Message-State: AOJu0Yxemrh6qroJlCe35JLhRwryzWkkOGjNtTwXxwYZ2Yp+D2vPRoI9
	f/hxDT3NEbwypdzjQxzNMVI/B4zQP2eAcEPgLyQMh3N6VX3Xp9eNo7WqDlFUGKJnQxmcAqYNziv
	JFanpk3/pTZAEqEHXTZdm4KAUoBsrZfwlttj2/BOPEFknUpRX
X-Google-Smtp-Source: AGHT+IHwJxMzPiy+LeTl6GLP75Lk9xTmUt6Q42wUyLgUvO0pfqN9jou49DJdyA48v9wweouplWj1sfFACjl6dixg9oE=
X-Received: by 2002:a05:6870:1491:b0:270:3139:59fe with SMTP id
 586e51a60fabf-287c1da9ea4mr1277553fac.12.1728028926849; Fri, 04 Oct 2024
 01:02:06 -0700 (PDT)
MIME-Version: 1.0
References: <20241003175919.472774-1-frediano.ziglio@cloud.com> <b09f94e4-1a96-4de5-816e-362ba4131f5a@suse.com>
In-Reply-To: <b09f94e4-1a96-4de5-816e-362ba4131f5a@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 4 Oct 2024 09:01:56 +0100
Message-ID: <CACHz=ZjK4gnVYPrukok=ak6qDt-4fm9v5FsG3n8fVq49Tuy6SQ@mail.gmail.com>
Subject: Re: [PATCH v2 00/19] Update header guards bases on new coding style
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 Fri, Oct 4, 2024 at 7:23=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 03.10.2024 19:59, Frediano Ziglio wrote:
> > With the help of some scripts and manual checking I updated header guar=
ds.
> >
> > As the changes are pretty large patch was split based on maintainers
> > to reduce mail spamming.
> >
> > Excluded public headers from the update, they are API, software like
> > Qemu will fail to compile if changed.
>
> Interesting - the first patch I peeked at, ...
>
> > Changes since v1:
> > - make all commit compile;
> > - exclude public headers, their guard is not an API.
> >
> > Frediano Ziglio (19):
> >   xen: Update header guards - Generic
> >   xen: Update header guards - X86
> >   xen: Update header guards - ACPI
> >   xen: Update header guards - ARGO
>
> ... this one, adjusts a public header. And the diffstat ...
>
> >  xen/include/public/arch-arm.h                           | 6 +++---
> >  xen/include/public/arch-arm/hvm/save.h                  | 4 ++--
> >  xen/include/public/arch-arm/smccc.h                     | 6 +++---
> >  xen/include/public/arch-x86/cpufeatureset.h             | 6 +++---
> >  xen/include/public/arch-x86/cpuid.h                     | 6 +++---
> >  xen/include/public/arch-x86/guest-acpi.h                | 6 +++---
> >  xen/include/public/arch-x86/hvm/save.h                  | 6 +++---
> >  xen/include/public/arch-x86/hvm/start_info.h            | 6 +++---
> >  xen/include/public/arch-x86/pmu.h                       | 6 +++---
> >  xen/include/public/arch-x86/xen-mca.h                   | 6 +++---
> >  xen/include/public/arch-x86/xen-x86_32.h                | 6 +++---
> >  xen/include/public/arch-x86/xen-x86_64.h                | 6 +++---
> >  xen/include/public/arch-x86/xen.h                       | 6 +++---
> >  xen/include/public/argo.h                               | 4 ++--
> >  xen/include/public/vm_event.h                           | 6 +++---
>
> ... also contradicts that statement. Please clarify.
>
> Jan

Hi,
   I just missed these. Excluding, better to be safe for the first
round, we can consider guards in the public headers later.

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:09:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:09:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810077.1222687 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdMq-0003L3-QH; Fri, 04 Oct 2024 08:08:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810077.1222687; Fri, 04 Oct 2024 08: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 1swdMq-0003Kw-Ml; Fri, 04 Oct 2024 08:08:52 +0000
Received: by outflank-mailman (input) for mailman id 810077;
 Fri, 04 Oct 2024 08:08: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdMp-0003Km-Qy
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:08:51 +0000
Received: from mail-oo1-xc2e.google.com (mail-oo1-xc2e.google.com
 [2607:f8b0:4864:20::c2e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e3437f69-8227-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:08:50 +0200 (CEST)
Received: by mail-oo1-xc2e.google.com with SMTP id
 006d021491bc7-5e1b6e8720dso952789eaf.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:08:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e3437f69-8227-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029329; x=1728634129; 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=Q5U/RfJiVVDXWCtXvmAmRE+qP8KedmL9mM5VnKMMLDg=;
        b=ckS38WHz3DTL3T1LNv7Wi1GK5a3JZqkrB9wXUPLMXpTMJMx9HPdMpu8xr2YtJrZ9kc
         O0aS9N4uCfDXxqA9XARaW8Is+x8OC7Bg80p9UN/1JlU4XMGQnfwVwJGZSmg3dN/Q2lBN
         oBhh6KXUUfjWKF+t5vRAjEr5D1yq9lAdl/mqQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029329; x=1728634129;
        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=Q5U/RfJiVVDXWCtXvmAmRE+qP8KedmL9mM5VnKMMLDg=;
        b=eINWW8+k6kcTNUMgiNHEHuyv2D6KkM0I8jEkdx3u1L41gJrhmUGsQ5ffsrzIZ7owo+
         emqxj+72kzTln3xWWHJD3e4DeDk+VKVaPcjjnM9GL8hFDMEN4kNut7g8lLaTkIY1oTPU
         Vwp5SStAizthpi25EoM+hK6Q6vbwJYvuz09CUg0wvWNMF+wH65Q4SEUc/50+mzUM7mFd
         OkHxTj899zfguRo6ymlIQ+rKiV8knPqI2dgPB4WdyXFkHYOx7+LgWNnDmRV6GOHjiTNB
         iRM18GF7c6DxhkzH0tWf3HCv5IRJHfESwV+P6XQY9wn+NrVIXKJ5gn1mr12RnIml49/9
         OyKw==
X-Gm-Message-State: AOJu0YzQys9odli/TGnN5C9bsCLc2mtt4tNWTGmza2rMOfcylQ1NF3BT
	R37s79deBWyBmWwH/JL2VfZEjkTMymngEoXzN5Epm0kU1oBgIgzPAdVo61w5dHvyO6MU9QAU8rG
	1JxId08xkC71BT6neA4ZQqWg9GLZn25sOCZxwu00cZESJdHOt
X-Google-Smtp-Source: AGHT+IGaCRp1L7gV1QiYnElWK/5W2LRwV7vWLfoqgYKY1Mue4Zg2j9/RgIDjOoKNzT369Rqu+Bi2dT3uPh8V5Z/EYaM=
X-Received: by 2002:a05:6870:65a8:b0:27b:7370:f610 with SMTP id
 586e51a60fabf-287c1d3822amr1498378fac.10.1728029329283; Fri, 04 Oct 2024
 01:08:49 -0700 (PDT)
MIME-Version: 1.0
References: <20240926095133.483619-1-frediano.ziglio@cloud.com>
In-Reply-To: <20240926095133.483619-1-frediano.ziglio@cloud.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 4 Oct 2024 09:08:37 +0100
Message-ID: <CACHz=ZgwcejTF0Yz5vchVy18Hn15LYp_R8Y1LqOA=qAHK-HRiA@mail.gmail.com>
Subject: Re: [PATCH] Update deprecated SPDX license identifiers
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@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>, 
	Ross Lagerwall <ross.lagerwall@citrix.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>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, 
	Paul Durrant <paul@xen.org>, Dario Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>, 
	George Dunlap <gwd@xenproject.org>, Doug Goldstein <cardoe@cardoe.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Sep 26, 2024 at 10:51=E2=80=AFAM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> As specified in LICENSES/GPL-2.0:
> - GPL-2.0 -> GPL-2.0-only;
> - GPL-2.0+ -> GPL-2.0-or-later.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

ping

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810087.1222737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVG-00069h-24; Fri, 04 Oct 2024 08:17:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810087.1222737; Fri, 04 Oct 2024 08: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 1swdVF-00066a-OS; Fri, 04 Oct 2024 08:17:33 +0000
Received: by outflank-mailman (input) for mailman id 810087;
 Fri, 04 Oct 2024 08: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVE-0005Kj-Ex
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:32 +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 19a3ea8c-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:30 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8d56155f51so200926166b.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:30 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19a3ea8c-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029850; x=1728634650; 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=a/7R4MvznIwbKLMj3J7Q74kL2tb8WLc8B3HYmuuXkgk=;
        b=Z7T4tMYh+yRRCjudQEu42UGNCv1BU5y3pKD0k31D4Me/jonF+SBC/kibOklTqfNiTW
         A/RK0iF00uNcX8NoaIS8+pBSugdsGL40Plh59mFMB42kh11qtD+KMK9kc4TAOQxllp4d
         RAjjZhbVTlpxb9LGM1OCB+yybVKxUiRDxNCJQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029850; x=1728634650;
        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=a/7R4MvznIwbKLMj3J7Q74kL2tb8WLc8B3HYmuuXkgk=;
        b=NUVQkvk+QcJAoZrpXELG5d37De03fMCXqL4U+hn5oluhDY/kKC2LUe/3EqOnyv4USX
         0TgKABB1WHl46Fjt2UlFdoVFLfZyEcg3MrzQoJW+P8qYhIcFXPG0mPkZWkWe027+9VcT
         JL4ehzUBJJUKRZPilrgsD8njkZNAokW2xcWpZ7Ak1Lon4hgJvEbqOtxqMGsmGDbXe1R7
         F0aHsqf73/QczeVGU5SzIuXv0FFVTEnCPptoV5FfATG+0PuahEE55AftzOoRBZi7SFVb
         gdI6stWBDUYdfDlmdRJNRjiU+7VPbmiMvXP1hZo77nAYfknPaiV/4B5s8XMEjfWSc+VW
         0Gjg==
X-Gm-Message-State: AOJu0Yz6v4ecVszgb/BS+fcVv7ihbxBabJSVmf3OclkcpFB2eqKEZrIx
	7KWhu1/lLOmY29LuB4SoN3iNnw5EF1cd838BTSFhWIHobGkaB+LQC4AtgfzBzNEoYLbeUelkmXo
	j
X-Google-Smtp-Source: AGHT+IGnTBjpBHaSWeArps6sMhV+jxoDIvpHaLAw0apL0jcSb02ZF/wNbra7JfH19z5T2wtx+XMj4w==
X-Received: by 2002:a17:907:2687:b0:a8d:fa3:bb24 with SMTP id a640c23a62f3a-a991bd1f7damr168155466b.23.1728029849801;
        Fri, 04 Oct 2024 01:17:29 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v3 06/19] xen: Update header guards - Device tree
Date: Fri,  4 Oct 2024 09:17:00 +0100
Message-Id: <20241004081713.749031-7-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to device tree.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/common/libfdt/libfdt_internal.h | 6 +++---
 xen/include/xen/bootfdt.h           | 6 +++---
 xen/include/xen/device_tree.h       | 4 ++--
 xen/include/xen/libfdt/fdt.h        | 6 +++---
 xen/include/xen/libfdt/libfdt-xen.h | 6 +++---
 xen/include/xen/libfdt/libfdt.h     | 6 +++---
 xen/include/xen/libfdt/libfdt_env.h | 6 +++---
 7 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/xen/common/libfdt/libfdt_internal.h b/xen/common/libfdt/libfdt_internal.h
index 16bda1906a..ba4d6527b0 100644
--- a/xen/common/libfdt/libfdt_internal.h
+++ b/xen/common/libfdt/libfdt_internal.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_INTERNAL_H
-#define LIBFDT_INTERNAL_H
+#ifndef COMMON__LIBFDT__LIBFDT_INTERNAL_H
+#define COMMON__LIBFDT__LIBFDT_INTERNAL_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -189,4 +189,4 @@ static inline bool can_assume_(int mask)
 /** helper macros for checking assumptions */
 #define can_assume(_assume)	can_assume_(ASSUME_ ## _assume)
 
-#endif /* LIBFDT_INTERNAL_H */
+#endif /* COMMON__LIBFDT__LIBFDT_INTERNAL_H */
diff --git a/xen/include/xen/bootfdt.h b/xen/include/xen/bootfdt.h
index 16fa05f38f..7cb01dbb1b 100644
--- a/xen/include/xen/bootfdt.h
+++ b/xen/include/xen/bootfdt.h
@@ -1,5 +1,5 @@
-#ifndef XEN_BOOTFDT_H
-#define XEN_BOOTFDT_H
+#ifndef XEN__BOOTFDT_H
+#define XEN__BOOTFDT_H
 
 #include <xen/types.h>
 #include <xen/kernel.h>
@@ -206,4 +206,4 @@ static inline struct shmem_membank_extra *bootinfo_get_shmem_extra(void)
 }
 #endif
 
-#endif /* XEN_BOOTFDT_H */
+#endif /* XEN__BOOTFDT_H */
diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h
index e6287305a7..5c4a419781 100644
--- a/xen/include/xen/device_tree.h
+++ b/xen/include/xen/device_tree.h
@@ -7,8 +7,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __XEN_DEVICE_TREE_H__
-#define __XEN_DEVICE_TREE_H__
+#ifndef XEN__DEVICE_TREE_H
+#define XEN__DEVICE_TREE_H
 
 #include <asm/byteorder.h>
 #include <asm/device.h>
diff --git a/xen/include/xen/libfdt/fdt.h b/xen/include/xen/libfdt/fdt.h
index f2e68807f2..6a53d4705b 100644
--- a/xen/include/xen/libfdt/fdt.h
+++ b/xen/include/xen/libfdt/fdt.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef FDT_H
-#define FDT_H
+#ifndef XEN__LIBFDT__FDT_H
+#define XEN__LIBFDT__FDT_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -63,4 +63,4 @@ struct fdt_property {
 #define FDT_V16_SIZE	FDT_V3_SIZE
 #define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(fdt32_t))
 
-#endif /* FDT_H */
+#endif /* XEN__LIBFDT__FDT_H */
diff --git a/xen/include/xen/libfdt/libfdt-xen.h b/xen/include/xen/libfdt/libfdt-xen.h
index a5340bc9f4..7cab9cef66 100644
--- a/xen/include/xen/libfdt/libfdt-xen.h
+++ b/xen/include/xen/libfdt/libfdt-xen.h
@@ -8,8 +8,8 @@
  * Copyright (C) 2023, Advanced Micro Devices, Inc. All Rights Reserved.
  */
 
-#ifndef LIBFDT_XEN_H
-#define LIBFDT_XEN_H
+#ifndef XEN__LIBFDT__LIBFDT_XEN_H
+#define XEN__LIBFDT__LIBFDT_XEN_H
 
 #include <xen/libfdt/libfdt.h>
 
@@ -43,7 +43,7 @@ static inline int fdt_get_mem_rsv_paddr(const void *fdt, int n,
     return ret;
 }
 
-#endif /* LIBFDT_XEN_H */
+#endif /* XEN__LIBFDT__LIBFDT_XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/libfdt/libfdt.h b/xen/include/xen/libfdt/libfdt.h
index fabddbee8c..9ed4ee1705 100644
--- a/xen/include/xen/libfdt/libfdt.h
+++ b/xen/include/xen/libfdt/libfdt.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_H
-#define LIBFDT_H
+#ifndef XEN__LIBFDT__LIBFDT_H
+#define XEN__LIBFDT__LIBFDT_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -2137,4 +2137,4 @@ const char *fdt_strerror(int errval);
 }
 #endif
 
-#endif /* LIBFDT_H */
+#endif /* XEN__LIBFDT__LIBFDT_H */
diff --git a/xen/include/xen/libfdt/libfdt_env.h b/xen/include/xen/libfdt/libfdt_env.h
index 8368787391..3b0d121a78 100644
--- a/xen/include/xen/libfdt/libfdt_env.h
+++ b/xen/include/xen/libfdt/libfdt_env.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) */
-#ifndef LIBFDT_ENV_H
-#define LIBFDT_ENV_H
+#ifndef XEN__LIBFDT__LIBFDT_ENV_H
+#define XEN__LIBFDT__LIBFDT_ENV_H
 /*
  * libfdt - Flat Device Tree manipulation
  * Copyright (C) 2006 David Gibson, IBM Corporation.
@@ -93,4 +93,4 @@ static inline size_t fdt_strnlen(const char *string, size_t max_count)
 
 #endif /* __APPLE__ */
 
-#endif /* LIBFDT_ENV_H */
+#endif /* XEN__LIBFDT__LIBFDT_ENV_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810085.1222723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVE-0005qH-UV; Fri, 04 Oct 2024 08:17:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810085.1222723; Fri, 04 Oct 2024 08: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 1swdVE-0005oB-KQ; Fri, 04 Oct 2024 08:17:32 +0000
Received: by outflank-mailman (input) for mailman id 810085;
 Fri, 04 Oct 2024 08: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVD-0005Vm-7m
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17: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 182a8205-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:28 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2fad784e304so23629411fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:28 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 182a8205-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029847; x=1728634647; 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=pxANqrtnn+Jr20AColkGK04OoedxN3PRTLF8D5KxOTk=;
        b=ciWD8DALsebQajqAEg8hxd0nG53uFnJCYirh5e38auBe9FQSeNawOv6Pb4hRTLkJXw
         IrLMLwWUxSGPq7sVQVahntwMD9MxpudAuYIbBJfZDpzwnlxjtsmRvyxZXSzywEUee0Q3
         rYaH43MdNpFx02FCWDpYNKsN0t/mXNZd1SR9I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029847; x=1728634647;
        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=pxANqrtnn+Jr20AColkGK04OoedxN3PRTLF8D5KxOTk=;
        b=iW6cMVIXZpZKZPFYDO3CQG4Qb9AtkAoY7B0gRD2MAd9+R0TSsQ87azZyepoAFVYsI+
         K4vogYiAKyELGWpqa2z4Cyb3LH9WnXMcAVpiCpK9T5/xoXxZNqVAp/6QcIV4nR5TG9AK
         UlqCYRz38vAp46NWT87hhX8kLCSyXxxVk2mltfktoSi5ElM1EnXvHhHunBNfENWDz4kK
         4sCRaC3ZSOd0DdBcTzZr05kUoSJfJl5EbGbOPmwvrJXOqUw4A58yHQFN4eV6V3OeaRgy
         DueFFfhyAOMFkwujoZy3TUqVkyUPfE1CXi210LuLpuTuyZNrI82G1d87eUyUxD2B3ueg
         I9Qw==
X-Gm-Message-State: AOJu0YyvGYpZgMtjeS+qK7MelwoHQdPz7jIbzKXvJzi1c+fP7RUZS8Xy
	Ff5MH6dB5gJt4neQ5RK5pkqGm9AolOq4/+xNATxUVuD4ljyqRi4lZs3IuxobvwHlGhO8Mqb0u6k
	0
X-Google-Smtp-Source: AGHT+IFTuTJa8dFDcCu0qANbNDY613R1eUcHlzI9sgDMr36tI6Fo+izBjlc5thFJCzDgCF9QwZoUxQ==
X-Received: by 2002:a05:6512:104b:b0:530:aa3e:f3c with SMTP id 2adb3069b0e04-539ab87476dmr1074034e87.14.1728029847268;
        Fri, 04 Oct 2024 01:17:27 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v3 03/19] xen: Update header guards - ACPI
Date: Fri,  4 Oct 2024 09:16:57 +0100
Message-Id: <20241004081713.749031-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ACPI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/drivers/acpi/apei/apei-internal.h     | 4 ++--
 xen/include/acpi/acconfig.h               | 6 +++---
 xen/include/acpi/acexcep.h                | 6 +++---
 xen/include/acpi/acglobal.h               | 6 +++---
 xen/include/acpi/achware.h                | 6 +++---
 xen/include/acpi/aclocal.h                | 6 +++---
 xen/include/acpi/acmacros.h               | 4 ++--
 xen/include/acpi/acnames.h                | 6 +++---
 xen/include/acpi/acoutput.h               | 6 +++---
 xen/include/acpi/acpi.h                   | 6 +++---
 xen/include/acpi/acpiosxf.h               | 6 +++---
 xen/include/acpi/acpixf.h                 | 6 +++---
 xen/include/acpi/actables.h               | 6 +++---
 xen/include/acpi/actbl.h                  | 6 +++---
 xen/include/acpi/actbl1.h                 | 6 +++---
 xen/include/acpi/actbl2.h                 | 6 +++---
 xen/include/acpi/actbl3.h                 | 6 +++---
 xen/include/acpi/actypes.h                | 6 +++---
 xen/include/acpi/acutils.h                | 6 +++---
 xen/include/acpi/apei.h                   | 4 ++--
 xen/include/acpi/cpufreq/cpufreq.h        | 6 +++---
 xen/include/acpi/cpufreq/processor_perf.h | 6 +++---
 xen/include/acpi/pdc_intel.h              | 6 +++---
 xen/include/acpi/platform/acenv.h         | 6 +++---
 xen/include/acpi/platform/acgcc.h         | 6 +++---
 xen/include/acpi/platform/aclinux.h       | 6 +++---
 26 files changed, 75 insertions(+), 75 deletions(-)

diff --git a/xen/drivers/acpi/apei/apei-internal.h b/xen/drivers/acpi/apei/apei-internal.h
index 90233077b7..8a5ed3fc33 100644
--- a/xen/drivers/acpi/apei/apei-internal.h
+++ b/xen/drivers/acpi/apei/apei-internal.h
@@ -3,8 +3,8 @@
  * definations.
  */
 
-#ifndef APEI_INTERNAL_H
-#define APEI_INTERNAL_H
+#ifndef DRIVERS__ACPI__APEI__APEI_INTERNAL_H
+#define DRIVERS__ACPI__APEI__APEI_INTERNAL_H
 
 struct apei_exec_context;
 
diff --git a/xen/include/acpi/acconfig.h b/xen/include/acpi/acconfig.h
index 422f29c06c..f5b5192c46 100644
--- a/xen/include/acpi/acconfig.h
+++ b/xen/include/acpi/acconfig.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef _ACCONFIG_H
-#define _ACCONFIG_H
+#ifndef ACPI__ACCONFIG_H
+#define ACPI__ACCONFIG_H
 
 /******************************************************************************
  *
@@ -203,4 +203,4 @@
 #define ACPI_DEBUGGER_COMMAND_PROMPT    '-'
 #define ACPI_DEBUGGER_EXECUTE_PROMPT    '%'
 
-#endif				/* _ACCONFIG_H */
+#endif				/* ACPI__ACCONFIG_H */
diff --git a/xen/include/acpi/acexcep.h b/xen/include/acpi/acexcep.h
index 5d9f4841d2..455c4fe982 100644
--- a/xen/include/acpi/acexcep.h
+++ b/xen/include/acpi/acexcep.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACEXCEP_H__
-#define __ACEXCEP_H__
+#ifndef ACPI__ACEXCEP_H
+#define ACPI__ACEXCEP_H
 
 /*
  * Exceptions returned by external ACPI interfaces
@@ -300,4 +300,4 @@ char const *__initdata acpi_gbl_exception_names_ctrl[] = {
 
 #endif				/* ACPI GLOBALS */
 
-#endif				/* __ACEXCEP_H__ */
+#endif				/* ACPI__ACEXCEP_H */
diff --git a/xen/include/acpi/acglobal.h b/xen/include/acpi/acglobal.h
index c2a96097b9..96fb14d793 100644
--- a/xen/include/acpi/acglobal.h
+++ b/xen/include/acpi/acglobal.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACGLOBAL_H__
-#define __ACGLOBAL_H__
+#ifndef ACPI__ACGLOBAL_H
+#define ACPI__ACGLOBAL_H
 
 /*
  * Ensure that the globals are actually defined and initialized only once.
@@ -110,4 +110,4 @@ extern char const *acpi_gbl_exception_names_ctrl[];
 extern struct acpi_bit_register_info
     acpi_gbl_bit_register_info[ACPI_NUM_BITREG];
 
-#endif				/* __ACGLOBAL_H__ */
+#endif				/* ACPI__ACGLOBAL_H */
diff --git a/xen/include/acpi/achware.h b/xen/include/acpi/achware.h
index 7433fb47ac..6257ae4cd4 100644
--- a/xen/include/acpi/achware.h
+++ b/xen/include/acpi/achware.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACHWARE_H__
-#define __ACHWARE_H__
+#ifndef ACPI__ACHWARE_H
+#define ACPI__ACHWARE_H
 
 /*
  * hwregs - ACPI Register I/O
@@ -59,4 +59,4 @@ acpi_hw_low_level_read(u32 width,
 acpi_status
 acpi_hw_low_level_write(u32 width, u32 value, struct acpi_generic_address *reg);
 
-#endif				/* __ACHWARE_H__ */
+#endif				/* ACPI__ACHWARE_H */
diff --git a/xen/include/acpi/aclocal.h b/xen/include/acpi/aclocal.h
index 16e234f0de..38369db497 100644
--- a/xen/include/acpi/aclocal.h
+++ b/xen/include/acpi/aclocal.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACLOCAL_H__
-#define __ACLOCAL_H__
+#ifndef ACPI__ACLOCAL_H
+#define ACPI__ACLOCAL_H
 
 /* acpisrc:struct_defs -- for acpisrc conversion */
 
@@ -204,4 +204,4 @@ struct acpi_bit_register_info {
 #define ACPI_ADDRESS_TYPE_IO_RANGE              1
 #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE      2
 
-#endif				/* __ACLOCAL_H__ */
+#endif				/* ACPI__ACLOCAL_H */
diff --git a/xen/include/acpi/acmacros.h b/xen/include/acpi/acmacros.h
index 86c503c20f..0f60a07594 100644
--- a/xen/include/acpi/acmacros.h
+++ b/xen/include/acpi/acmacros.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACMACROS_H__
-#define __ACMACROS_H__
+#ifndef ACPI__ACMACROS_H
+#define ACPI__ACMACROS_H
 
 /*
  * Data manipulation macros
diff --git a/xen/include/acpi/acnames.h b/xen/include/acpi/acnames.h
index 34bfae8a05..f85d3341fb 100644
--- a/xen/include/acpi/acnames.h
+++ b/xen/include/acpi/acnames.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACNAMES_H__
-#define __ACNAMES_H__
+#ifndef ACPI__ACNAMES_H
+#define ACPI__ACNAMES_H
 
 /* Method names - these methods can appear anywhere in the namespace */
 
@@ -80,4 +80,4 @@
 #define ACPI_NS_ROOT_PATH       "\\"
 #define ACPI_NS_SYSTEM_BUS      "_SB_"
 
-#endif				/* __ACNAMES_H__  */
+#endif				/* ACPI__ACNAMES_H  */
diff --git a/xen/include/acpi/acoutput.h b/xen/include/acpi/acoutput.h
index c090a8b0bc..7a0283894b 100644
--- a/xen/include/acpi/acoutput.h
+++ b/xen/include/acpi/acoutput.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACOUTPUT_H__
-#define __ACOUTPUT_H__
+#ifndef ACPI__ACOUTPUT_H
+#define ACPI__ACOUTPUT_H
 
 /*
  * Debug levels and component IDs.  These are used to control the
@@ -182,4 +182,4 @@
 #define ACPI_NORMAL_DEFAULT         (ACPI_LV_INIT | ACPI_LV_WARN | ACPI_LV_ERROR)
 #define ACPI_DEBUG_ALL              (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL)
 
-#endif				/* __ACOUTPUT_H__ */
+#endif				/* ACPI__ACOUTPUT_H */
diff --git a/xen/include/acpi/acpi.h b/xen/include/acpi/acpi.h
index c852701ff2..f922fd8556 100644
--- a/xen/include/acpi/acpi.h
+++ b/xen/include/acpi/acpi.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACPI_H__
-#define __ACPI_H__
+#ifndef ACPI__ACPI_H
+#define ACPI__ACPI_H
 
 #define PREFIX			"ACPI: "
 
@@ -66,4 +66,4 @@
 #include "achware.h"		/* Hardware defines and interfaces */
 #include "acutils.h"		/* Utility interfaces */
 
-#endif				/* __ACPI_H__ */
+#endif				/* ACPI__ACPI_H */
diff --git a/xen/include/acpi/acpiosxf.h b/xen/include/acpi/acpiosxf.h
index de83ea38c4..6264a727d3 100644
--- a/xen/include/acpi/acpiosxf.h
+++ b/xen/include/acpi/acpiosxf.h
@@ -44,8 +44,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACPIOSXF_H__
-#define __ACPIOSXF_H__
+#ifndef ACPI__ACPIOSXF_H
+#define ACPI__ACPIOSXF_H
 
 #include "platform/acenv.h"
 #include "actypes.h"
@@ -86,4 +86,4 @@ void ACPI_INTERNAL_VAR_XFACE acpi_os_printf(const char *format, ...);
 
 void acpi_os_vprintf(const char *format, va_list args);
 
-#endif				/* __ACPIOSXF_H__ */
+#endif				/* ACPI__ACPIOSXF_H */
diff --git a/xen/include/acpi/acpixf.h b/xen/include/acpi/acpixf.h
index 8b70154b8f..64373a3472 100644
--- a/xen/include/acpi/acpixf.h
+++ b/xen/include/acpi/acpixf.h
@@ -42,8 +42,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACXFACE_H__
-#define __ACXFACE_H__
+#ifndef ACPI__ACPIXF_H
+#define ACPI__ACPIXF_H
 
 #include "actypes.h"
 #include "actbl.h"
@@ -116,4 +116,4 @@ acpi_status acpi_leave_sleep_state_prep(u8 sleep_state);
 
 acpi_status acpi_leave_sleep_state(u8 sleep_state);
 
-#endif				/* __ACXFACE_H__ */
+#endif				/* ACPI__ACPIXF_H */
diff --git a/xen/include/acpi/actables.h b/xen/include/acpi/actables.h
index 527e1c9f9b..45a1e0c634 100644
--- a/xen/include/acpi/actables.h
+++ b/xen/include/acpi/actables.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTABLES_H__
-#define __ACTABLES_H__
+#ifndef ACPI__ACTABLES_H
+#define ACPI__ACTABLES_H
 
 acpi_status acpi_allocate_root_table(u32 initial_table_count);
 
@@ -104,4 +104,4 @@ acpi_tb_install_table(acpi_physical_address address,
 acpi_status
 acpi_tb_parse_root_table(acpi_physical_address rsdp_address, u8 flags);
 
-#endif				/* __ACTABLES_H__ */
+#endif				/* ACPI__ACTABLES_H */
diff --git a/xen/include/acpi/actbl.h b/xen/include/acpi/actbl.h
index 3079176992..b022403359 100644
--- a/xen/include/acpi/actbl.h
+++ b/xen/include/acpi/actbl.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL_H__
-#define __ACTBL_H__
+#ifndef ACPI__ACTBL_H
+#define ACPI__ACTBL_H
 
 /*******************************************************************************
  *
@@ -358,4 +358,4 @@ enum acpi_prefered_pm_profiles {
 #define ACPI_FADT_V5_SIZE       (u32) (ACPI_FADT_OFFSET (hypervisor_id))
 #define ACPI_FADT_V6_SIZE       (u32) (sizeof (struct acpi_table_fadt))
 
-#endif				/* __ACTBL_H__ */
+#endif				/* ACPI__ACTBL_H */
diff --git a/xen/include/acpi/actbl1.h b/xen/include/acpi/actbl1.h
index 923641fc9e..1b333399ca 100644
--- a/xen/include/acpi/actbl1.h
+++ b/xen/include/acpi/actbl1.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL1_H__
-#define __ACTBL1_H__
+#ifndef ACPI__ACTBL1_H
+#define ACPI__ACTBL1_H
 
 /*******************************************************************************
  *
@@ -1012,4 +1012,4 @@ struct acpi_srat_x2apic_cpu_affinity {
 
 #pragma pack()
 
-#endif				/* __ACTBL1_H__ */
+#endif				/* ACPI__ACTBL1_H */
diff --git a/xen/include/acpi/actbl2.h b/xen/include/acpi/actbl2.h
index ee96e990d6..7eb4e51b72 100644
--- a/xen/include/acpi/actbl2.h
+++ b/xen/include/acpi/actbl2.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL2_H__
-#define __ACTBL2_H__
+#ifndef ACPI__ACTBL2_H
+#define ACPI__ACTBL2_H
 
 /*******************************************************************************
  *
@@ -1268,4 +1268,4 @@ struct acpi_table_wdrt {
 
 #pragma pack()
 
-#endif				/* __ACTBL2_H__ */
+#endif				/* ACPI__ACTBL2_H */
diff --git a/xen/include/acpi/actbl3.h b/xen/include/acpi/actbl3.h
index 6858d3e60f..2407455102 100644
--- a/xen/include/acpi/actbl3.h
+++ b/xen/include/acpi/actbl3.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTBL3_H__
-#define __ACTBL3_H__
+#ifndef ACPI__ACTBL3_H
+#define ACPI__ACTBL3_H
 
 /*******************************************************************************
  *
@@ -639,4 +639,4 @@ struct acpi_table_stao {
 
 #pragma pack()
 
-#endif				/* __ACTBL3_H__ */
+#endif				/* ACPI__ACTBL3_H */
diff --git a/xen/include/acpi/actypes.h b/xen/include/acpi/actypes.h
index 49e0ab9bb4..17464f5a65 100644
--- a/xen/include/acpi/actypes.h
+++ b/xen/include/acpi/actypes.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACTYPES_H__
-#define __ACTYPES_H__
+#ifndef ACPI__ACTYPES_H
+#define ACPI__ACTYPES_H
 
 /* acpisrc:struct_defs -- for acpisrc conversion */
 
@@ -724,4 +724,4 @@ struct acpi_buffer {
 #define ACPI_PRODUCER                   (u8) 0x00
 #define ACPI_CONSUMER                   (u8) 0x01
 
-#endif				/* __ACTYPES_H__ */
+#endif				/* ACPI__ACTYPES_H */
diff --git a/xen/include/acpi/acutils.h b/xen/include/acpi/acutils.h
index ac54adaa8c..7b0a8c677d 100644
--- a/xen/include/acpi/acutils.h
+++ b/xen/include/acpi/acutils.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef _ACUTILS_H
-#define _ACUTILS_H
+#ifndef ACPI__ACUTILS_H
+#define ACPI__ACUTILS_H
 
 /* Types for Resource descriptor entries */
 
@@ -196,4 +196,4 @@ acpi_ut_info(const char *module_name,
  */
 const char *acpi_ut_validate_exception(acpi_status status);
 
-#endif				/* _ACUTILS_H */
+#endif				/* ACPI__ACUTILS_H */
diff --git a/xen/include/acpi/apei.h b/xen/include/acpi/apei.h
index 495819e362..6aed603745 100644
--- a/xen/include/acpi/apei.h
+++ b/xen/include/acpi/apei.h
@@ -2,8 +2,8 @@
  * apei.h - ACPI Platform Error Interface
  */
 
-#ifndef ACPI_APEI_H
-#define ACPI_APEI_H
+#ifndef ACPI__APEI_H
+#define ACPI__APEI_H
 
 #include <xen/acpi.h>
 #include <xen/cper.h>
diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h
index 3f1b05a02e..6764d54f8f 100644
--- a/xen/include/acpi/cpufreq/cpufreq.h
+++ b/xen/include/acpi/cpufreq/cpufreq.h
@@ -11,8 +11,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __XEN_CPUFREQ_PM_H__
-#define __XEN_CPUFREQ_PM_H__
+#ifndef ACPI__CPUFREQ__CPUFREQ_H
+#define ACPI__CPUFREQ__CPUFREQ_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -267,4 +267,4 @@ int set_hwp_para(struct cpufreq_policy *policy,
 
 int acpi_cpufreq_register(void);
 
-#endif /* __XEN_CPUFREQ_PM_H__ */
+#endif /* ACPI__CPUFREQ__CPUFREQ_H */
diff --git a/xen/include/acpi/cpufreq/processor_perf.h b/xen/include/acpi/cpufreq/processor_perf.h
index 301104e16f..2088e5ea67 100644
--- a/xen/include/acpi/cpufreq/processor_perf.h
+++ b/xen/include/acpi/cpufreq/processor_perf.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PROCESSOR_PM_H__
-#define __XEN_PROCESSOR_PM_H__
+#ifndef ACPI__CPUFREQ__PROCESSOR_PERF_H
+#define ACPI__CPUFREQ__PROCESSOR_PERF_H
 
 #include <public/platform.h>
 #include <public/sysctl.h>
@@ -59,4 +59,4 @@ struct pm_px {
 DECLARE_PER_CPU(struct pm_px *, cpufreq_statistic_data);
 
 int cpufreq_cpu_init(unsigned int cpu);
-#endif /* __XEN_PROCESSOR_PM_H__ */
+#endif /* ACPI__CPUFREQ__PROCESSOR_PERF_H */
diff --git a/xen/include/acpi/pdc_intel.h b/xen/include/acpi/pdc_intel.h
index abaa098b51..a6510b14fe 100644
--- a/xen/include/acpi/pdc_intel.h
+++ b/xen/include/acpi/pdc_intel.h
@@ -1,8 +1,8 @@
 
 /* _PDC bit definition for Intel processors */
 
-#ifndef __PDC_INTEL_H__
-#define __PDC_INTEL_H__
+#ifndef ACPI__PDC_INTEL_H
+#define ACPI__PDC_INTEL_H
 
 #define ACPI_PDC_REVISION_ID		1
 
@@ -48,4 +48,4 @@
 #define ACPI_PDC_T_MASK			(ACPI_PDC_T_FFH | \
 					 ACPI_PDC_SMP_T_SWCOORD)
 
-#endif				/* __PDC_INTEL_H__ */
+#endif				/* ACPI__PDC_INTEL_H */
diff --git a/xen/include/acpi/platform/acenv.h b/xen/include/acpi/platform/acenv.h
index 83cdb77d75..33c253c094 100644
--- a/xen/include/acpi/platform/acenv.h
+++ b/xen/include/acpi/platform/acenv.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACENV_H__
-#define __ACENV_H__
+#ifndef ACPI__PLATFORM__ACENV_H
+#define ACPI__PLATFORM__ACENV_H
 
 /*
  * Configuration for ACPI tools and utilities
@@ -362,4 +362,4 @@ typedef char *va_list;
  * headers.
  *
  *****************************************************************************/
-#endif				/* __ACENV_H__ */
+#endif				/* ACPI__PLATFORM__ACENV_H */
diff --git a/xen/include/acpi/platform/acgcc.h b/xen/include/acpi/platform/acgcc.h
index b355e98eeb..6b32e4eedd 100644
--- a/xen/include/acpi/platform/acgcc.h
+++ b/xen/include/acpi/platform/acgcc.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACGCC_H__
-#define __ACGCC_H__
+#ifndef ACPI__PLATFORM__ACGCC_H
+#define ACPI__PLATFORM__ACGCC_H
 
 /* Function name is used for debug output. Non-ANSI, compiler-dependent */
 
@@ -62,4 +62,4 @@
  */
 #define ACPI_UNUSED_VAR __attribute__ ((unused))
 
-#endif				/* __ACGCC_H__ */
+#endif				/* ACPI__PLATFORM__ACGCC_H */
diff --git a/xen/include/acpi/platform/aclinux.h b/xen/include/acpi/platform/aclinux.h
index a66c2e6d1d..32a853f1bc 100644
--- a/xen/include/acpi/platform/aclinux.h
+++ b/xen/include/acpi/platform/aclinux.h
@@ -41,8 +41,8 @@
  * POSSIBILITY OF SUCH DAMAGES.
  */
 
-#ifndef __ACLINUX_H__
-#define __ACLINUX_H__
+#ifndef ACPI__PLATFORM__ACLINUX_H
+#define ACPI__PLATFORM__ACLINUX_H
 
 #define ACPI_USE_SYSTEM_CLIBRARY
 #define ACPI_USE_DO_WHILE_0
@@ -82,4 +82,4 @@ void acpi_os_free_memory(void *ptr);
 #define ACPI_ALLOCATE_ZEROED(a)	acpi_os_zalloc_memory(a)
 #define ACPI_FREE(a)		acpi_os_free_memory(a)
 
-#endif				/* __ACLINUX_H__ */
+#endif				/* ACPI__PLATFORM__ACLINUX_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810084.1222711 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVE-0005cR-6x; Fri, 04 Oct 2024 08:17:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810084.1222711; Fri, 04 Oct 2024 08: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 1swdVE-0005ao-2O; Fri, 04 Oct 2024 08:17:32 +0000
Received: by outflank-mailman (input) for mailman id 810084;
 Fri, 04 Oct 2024 08: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVC-0005Vm-IB
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:30 +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 187ec53c-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:28 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a8d60e23b33so258298366b.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:28 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 187ec53c-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029848; x=1728634648; 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=82kd1u5j1vZbiViZ/c3NxDTptPC9vtDK6Y4UsawIGEw=;
        b=YRjADQhmt303GWIP46YY1x/svMrC+RnvYkwBiZhlX/EqcqknepshHUh0vQmvW4MW4I
         7TpqnRqIH+f70jk68VlbYrmGEb0dtM88WulajfmXeAXJ3saQHF9bDZZWe/FDTFdtrB7a
         Xyln0QoR4K2UnTpiOaMWQib1PX3PhEFKZ2vwE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029848; x=1728634648;
        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=82kd1u5j1vZbiViZ/c3NxDTptPC9vtDK6Y4UsawIGEw=;
        b=GnbJ+thJNxWJTeyZvMDyFv402mU9i1viNDOBFep7ivyelIDKwVgClQBnn9CKUV0c+E
         npnOvdfGR1HEahhvkkeXBKLGFLystC6kHURdDexGbDu7cXKFrpvujl7+9ADulmWgp3ES
         I0IA3GwTAwAc2aanT0J2sloswz14UVyI39O9YIsyVtYITHilYBWH3knFUs7BM7YdmWqB
         yMFn8yA16TL8QmLwVxAaXoA+25eYIwGb6JZ1BwRDDnM5gQSl+HNbUkRY5pKhX8jxm94X
         fTQnj5qDf4syZR4GwITXt8O0W4tzLU8ODx4ag4whZoCWfNHBYTc2kV/y9Hjnuja4YFgo
         N9Dw==
X-Gm-Message-State: AOJu0YydGehW5XuGuR4HnaojlIJw+Ubz7rqsCuMIksW90cLOkLE5eDEh
	IE7CRU1M6jqILmMfqtE52lBZN0zZ4SzdiKFZ0ugVnypdwNeolX5ttKcnrMsizl5LsLswYyX01JH
	f
X-Google-Smtp-Source: AGHT+IG5nj7+qKPN+fyXKItdbWqs8orgg13HpQOsUq41dDr0TbYzqER7SpnRb7ML7RcSOjRZiMicxA==
X-Received: by 2002:a17:906:d7d0:b0:a8d:5e1a:8d7b with SMTP id a640c23a62f3a-a991bfde131mr164688066b.43.1728029847903;
        Fri, 04 Oct 2024 01:17:27 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Christopher Clark <christopher.w.clark@gmail.com>
Subject: [PATCH v3 04/19] xen: Update header guards - ARGO
Date: Fri,  4 Oct 2024 09:16:58 +0100
Message-Id: <20241004081713.749031-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ARGO.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/argo.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
---
Changes since v2:
- exclude missing public headers.

diff --git a/xen/include/xen/argo.h b/xen/include/xen/argo.h
index fd4cfdd55c..3ef62dab19 100644
--- a/xen/include/xen/argo.h
+++ b/xen/include/xen/argo.h
@@ -12,8 +12,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_ARGO_H__
-#define __XEN_ARGO_H__
+#ifndef XEN__ARGO_H
+#define XEN__ARGO_H
 
 #include <xen/sched.h>
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810083.1222707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVD-0005Zi-Uh; Fri, 04 Oct 2024 08:17:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810083.1222707; Fri, 04 Oct 2024 08: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 1swdVD-0005Zb-RO; Fri, 04 Oct 2024 08:17:31 +0000
Received: by outflank-mailman (input) for mailman id 810083;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVC-0005Kj-66
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:30 +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 17ce2bd3-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:27 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a910860e4dcso288458866b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:27 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 17ce2bd3-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029847; x=1728634647; 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=yKa7ZcXOITGDqakjEDsbm4sbdyP3jhkr0kRdTJfqVq8=;
        b=Ks9TuSc9td4m8mOi9g2915HWvgt43ZxKmqa3aBBRTLbJy06eLTklOzOIXiNP4+8Amz
         a9snw9adLwErZTD7bb7SSxPQx+Bc5laH6p+qnR+y017qYzo2wwv4atqpVKQyIQ9SFn+G
         kRFCzvgNS5gK2ebKhnXyG/BCRFOsjN0xYgVrY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029847; x=1728634647;
        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=yKa7ZcXOITGDqakjEDsbm4sbdyP3jhkr0kRdTJfqVq8=;
        b=raxG+i0SxyVpHCvUUbUlfitVAqb7F/07japAiTn07J/S1hqFXvdcE3/vNnD5CS/4Mw
         LHHQC7HFH0xZMpIWRV4/oKon0mNVxwVvBw2sqDAo6q69O7qizPzMfiLiEkAGNFSJWRAH
         +IXTK+dlJsczwlZW+yJ994vBBSenWwLZM3/Fe98wslaXK972aSjH88IOZ4V8JyN63Bof
         YxAt/MVfQkRkkBmtuJ52l1buPcBgFXBWR32bTaQiNqcS6JaOtMuV8+7uti8XiOxWAUij
         c6D2swRTw2xE0whUG6xBaxiDh5WWSPKGjkQyMWcgoiuERysYEgFHq/ARNhm8Ss0RY39s
         OIiw==
X-Gm-Message-State: AOJu0YxZRYyajTmWKwBuF4CZoLYGnQRzFcGWGm9/xtWALcumocdfqpUv
	bS3FG6PWROoxiH/2sB/DtzG41aHbVQojHUVvA+zYLTfRSV2DbEka4Rs9Xlae7MaUNxykUIJArPq
	H
X-Google-Smtp-Source: AGHT+IGDL9Bil8/xOQzjugKDNNUL68Toa3pQHEDj6TtN76VQQ8hkFtSrwmak6RK750C/UzG1adgMWA==
X-Received: by 2002:a17:907:e644:b0:a8d:e49:c530 with SMTP id a640c23a62f3a-a991bdbc24emr172162966b.42.1728029845536;
        Fri, 04 Oct 2024 01:17:25 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 01/19] xen: Update header guards - Generic
Date: Fri,  4 Oct 2024 09:16:55 +0100
Message-Id: <20241004081713.749031-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers not having specific maintainers.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- excluded public headers, their guards is an API;
- moved here changes needed to compile.
---
 tools/libs/guest/xg_dom_decompress_unsafe_zstd.c | 2 +-
 xen/arch/arm/include/asm/hypercall.h             | 2 +-
 xen/arch/arm/include/asm/p2m.h                   | 2 +-
 xen/arch/x86/include/asm/hypercall.h             | 2 +-
 xen/arch/x86/include/asm/p2m.h                   | 2 +-
 xen/common/coverage/coverage.h                   | 4 ++--
 xen/common/coverage/gcov.h                       | 6 +++---
 xen/common/libelf/libelf-private.h               | 6 +++---
 xen/common/lz4/defs.h                            | 6 +++---
 xen/common/ubsan/ubsan.h                         | 4 ++--
 xen/common/xz/lzma2.h                            | 4 ++--
 xen/common/xz/private.h                          | 4 ++--
 xen/common/xz/stream.h                           | 4 ++--
 xen/common/zstd/bitstream.h                      | 6 +++---
 xen/common/zstd/error_private.h                  | 6 +++---
 xen/common/zstd/fse.h                            | 6 +++---
 xen/common/zstd/huf.h                            | 6 +++---
 xen/common/zstd/mem.h                            | 6 +++---
 xen/common/zstd/zstd_internal.h                  | 6 +++---
 xen/drivers/video/font.h                         | 6 +++---
 xen/drivers/video/lfb.h                          | 4 ++--
 xen/drivers/video/modelines.h                    | 4 ++--
 xen/include/asm-generic/altp2m.h                 | 6 +++---
 xen/include/asm-generic/atomic-ops.h             | 6 +++---
 xen/include/asm-generic/device.h                 | 6 +++---
 xen/include/asm-generic/div64.h                  | 4 ++--
 xen/include/asm-generic/hardirq.h                | 6 +++---
 xen/include/asm-generic/hypercall.h              | 8 ++++----
 xen/include/asm-generic/iocap.h                  | 6 +++---
 xen/include/asm-generic/paging.h                 | 6 +++---
 xen/include/asm-generic/percpu.h                 | 6 +++---
 xen/include/asm-generic/random.h                 | 6 +++---
 xen/include/asm-generic/softirq.h                | 6 +++---
 xen/include/crypto/rijndael.h                    | 6 +++---
 xen/include/crypto/vmac.h                        | 4 ++--
 xen/include/xen/8250-uart.h                      | 6 +++---
 xen/include/xen/acpi.h                           | 6 +++---
 xen/include/xen/alternative-call.h               | 6 +++---
 xen/include/xen/atomic.h                         | 6 +++---
 xen/include/xen/bitmap.h                         | 6 +++---
 xen/include/xen/bitops.h                         | 6 +++---
 xen/include/xen/bug.h                            | 6 +++---
 xen/include/xen/byteorder/big_endian.h           | 6 +++---
 xen/include/xen/byteorder/generic.h              | 6 +++---
 xen/include/xen/byteorder/little_endian.h        | 6 +++---
 xen/include/xen/byteorder/swab.h                 | 6 +++---
 xen/include/xen/cache.h                          | 6 +++---
 xen/include/xen/compat.h                         | 6 +++---
 xen/include/xen/compiler.h                       | 6 +++---
 xen/include/xen/config.h                         | 6 +++---
 xen/include/xen/console.h                        | 6 +++---
 xen/include/xen/consoled.h                       | 6 +++---
 xen/include/xen/const.h                          | 6 +++---
 xen/include/xen/coverage.h                       | 4 ++--
 xen/include/xen/cper.h                           | 4 ++--
 xen/include/xen/cpu.h                            | 6 +++---
 xen/include/xen/cpuidle.h                        | 6 +++---
 xen/include/xen/cpumask.h                        | 6 +++---
 xen/include/xen/ctype.h                          | 4 ++--
 xen/include/xen/decompress.h                     | 4 ++--
 xen/include/xen/delay.h                          | 6 +++---
 xen/include/xen/dm.h                             | 6 +++---
 xen/include/xen/dmi.h                            | 6 +++---
 xen/include/xen/domain.h                         | 6 +++---
 xen/include/xen/domain_page.h                    | 6 +++---
 xen/include/xen/dt-overlay.h                     | 6 +++---
 xen/include/xen/early_printk.h                   | 4 ++--
 xen/include/xen/earlycpio.h                      | 6 +++---
 xen/include/xen/efi.h                            | 6 +++---
 xen/include/xen/elf.h                            | 6 +++---
 xen/include/xen/elfcore.h                        | 6 +++---
 xen/include/xen/elfstructs.h                     | 6 +++---
 xen/include/xen/err.h                            | 6 +++---
 xen/include/xen/errno.h                          | 6 +++---
 xen/include/xen/event.h                          | 6 +++---
 xen/include/xen/grant_table.h                    | 6 +++---
 xen/include/xen/guest_access.h                   | 6 +++---
 xen/include/xen/gunzip.h                         | 4 ++--
 xen/include/xen/hypercall.h                      | 6 +++---
 xen/include/xen/init.h                           | 6 +++---
 xen/include/xen/inttypes.h                       | 6 +++---
 xen/include/xen/iocap.h                          | 6 +++---
 xen/include/xen/ioreq.h                          | 6 +++---
 xen/include/xen/irq.h                            | 6 +++---
 xen/include/xen/irq_cpustat.h                    | 6 +++---
 xen/include/xen/kconfig.h                        | 6 +++---
 xen/include/xen/kernel.h                         | 6 +++---
 xen/include/xen/keyhandler.h                     | 6 +++---
 xen/include/xen/lib.h                            | 6 +++---
 xen/include/xen/libelf.h                         | 6 +++---
 xen/include/xen/linkage.h                        | 6 +++---
 xen/include/xen/linux-compat.h                   | 6 +++---
 xen/include/xen/list.h                           | 6 +++---
 xen/include/xen/list_sort.h                      | 4 ++--
 xen/include/xen/lz4.h                            | 4 ++--
 xen/include/xen/lzo.h                            | 4 ++--
 xen/include/xen/macros.h                         | 6 +++---
 xen/include/xen/mm-frame.h                       | 6 +++---
 xen/include/xen/mm.h                             | 6 +++---
 xen/include/xen/msi.h                            | 4 ++--
 xen/include/xen/multiboot.h                      | 6 +++---
 xen/include/xen/multiboot2.h                     | 6 +++---
 xen/include/xen/multicall.h                      | 6 +++---
 xen/include/xen/nodemask.h                       | 6 +++---
 xen/include/xen/nospec.h                         | 6 +++---
 xen/include/xen/notifier.h                       | 6 +++---
 xen/include/xen/numa.h                           | 6 +++---
 xen/include/xen/p2m-common.h                     | 6 +++---
 xen/include/xen/page-defs.h                      | 6 +++---
 xen/include/xen/page-size.h                      | 4 ++--
 xen/include/xen/paging.h                         | 6 +++---
 xen/include/xen/param.h                          | 6 +++---
 xen/include/xen/pci.h                            | 6 +++---
 xen/include/xen/pci_regs.h                       | 6 +++---
 xen/include/xen/pdx.h                            | 6 +++---
 xen/include/xen/percpu.h                         | 6 +++---
 xen/include/xen/perfc.h                          | 6 +++---
 xen/include/xen/perfc_defn.h                     | 6 +++---
 xen/include/xen/pfn.h                            | 6 +++---
 xen/include/xen/pmap.h                           | 6 +++---
 xen/include/xen/pmstat.h                         | 6 +++---
 xen/include/xen/preempt.h                        | 6 +++---
 xen/include/xen/prefetch.h                       | 4 ++--
 xen/include/xen/pv_console.h                     | 6 +++---
 xen/include/xen/radix-tree.h                     | 6 +++---
 xen/include/xen/random.h                         | 6 +++---
 xen/include/xen/rangeset.h                       | 6 +++---
 xen/include/xen/rbtree.h                         | 6 +++---
 xen/include/xen/rcupdate.h                       | 6 +++---
 xen/include/xen/rwlock.h                         | 6 +++---
 xen/include/xen/sched.h                          | 6 +++---
 xen/include/xen/sections.h                       | 6 +++---
 xen/include/xen/self-tests.h                     | 6 +++---
 xen/include/xen/serial.h                         | 6 +++---
 xen/include/xen/shared.h                         | 6 +++---
 xen/include/xen/shutdown.h                       | 6 +++---
 xen/include/xen/sizes.h                          | 6 +++---
 xen/include/xen/smp.h                            | 6 +++---
 xen/include/xen/softirq.h                        | 6 +++---
 xen/include/xen/sort.h                           | 6 +++---
 xen/include/xen/spinlock.h                       | 6 +++---
 xen/include/xen/stdarg.h                         | 6 +++---
 xen/include/xen/stdbool.h                        | 6 +++---
 xen/include/xen/stdint.h                         | 6 +++---
 xen/include/xen/stop_machine.h                   | 6 +++---
 xen/include/xen/string.h                         | 6 +++---
 xen/include/xen/stringify.h                      | 6 +++---
 xen/include/xen/symbols.h                        | 6 +++---
 xen/include/xen/tasklet.h                        | 6 +++---
 xen/include/xen/time.h                           | 6 +++---
 xen/include/xen/timer.h                          | 6 +++---
 xen/include/xen/trace.h                          | 6 +++---
 xen/include/xen/types.h                          | 6 +++---
 xen/include/xen/typesafe.h                       | 6 +++---
 xen/include/xen/unaligned.h                      | 6 +++---
 xen/include/xen/version.h                        | 6 +++---
 xen/include/xen/vga.h                            | 6 +++---
 xen/include/xen/video.h                          | 6 +++---
 xen/include/xen/virtual_region.h                 | 6 +++---
 xen/include/xen/vmap.h                           | 6 +++---
 xen/include/xen/wait.h                           | 6 +++---
 xen/include/xen/warning.h                        | 4 ++--
 xen/include/xen/watchdog.h                       | 6 +++---
 xen/include/xen/xen.lds.h                        | 6 +++---
 xen/include/xen/xenoprof.h                       | 4 ++--
 xen/include/xen/xmalloc.h                        | 6 +++---
 xen/include/xen/xxhash.h                         | 6 +++---
 167 files changed, 469 insertions(+), 469 deletions(-)

diff --git a/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c b/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c
index ff45732a36..8f6081bba6 100644
--- a/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c
+++ b/tools/libs/guest/xg_dom_decompress_unsafe_zstd.c
@@ -31,7 +31,7 @@ typedef uint64_t __be64;
 #undef ERROR
 
 #define __BYTEORDER_HAS_U64__
-#define __TYPES_H__ /* xen/types.h guard */
+#define XEN__TYPES_H /* xen/types.h guard */
 #include "../../xen/include/xen/byteorder/little_endian.h"
 #include "../../xen/include/xen/unaligned.h"
 #include "../../xen/include/xen/xxhash.h"
diff --git a/xen/arch/arm/include/asm/hypercall.h b/xen/arch/arm/include/asm/hypercall.h
index 07e231f8b5..0a23f8d484 100644
--- a/xen/arch/arm/include/asm/hypercall.h
+++ b/xen/arch/arm/include/asm/hypercall.h
@@ -1,5 +1,5 @@
 /* SAF-10-safe direct inclusion guard before */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index 4818dd4b6a..c84fe8d97d 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -160,7 +160,7 @@ typedef enum {
                              P2M_FOREIGN_TYPES))
 
 /* All common type definitions should live ahead of this inclusion. */
-#ifdef _XEN_P2M_COMMON_H
+#ifdef XEN__P2M_COMMON_H
 # error "xen/p2m-common.h should not be included directly"
 #endif
 #include <xen/p2m-common.h>
diff --git a/xen/arch/x86/include/asm/hypercall.h b/xen/arch/x86/include/asm/hypercall.h
index f6e9e2313b..e71b48d860 100644
--- a/xen/arch/x86/include/asm/hypercall.h
+++ b/xen/arch/x86/include/asm/hypercall.h
@@ -3,7 +3,7 @@
  */
 
 /* SAF-10-safe direct inclusion guard before */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index e6de37f108..321c7b5941 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -392,7 +392,7 @@ struct p2m_domain {
 #define p2m_get_hostp2m(d)      ((d)->arch.p2m)
 
 /* All common type definitions should live ahead of this inclusion. */
-#ifdef _XEN_P2M_COMMON_H
+#ifdef XEN__P2M_COMMON_H
 # error "xen/p2m-common.h should not be included directly"
 #endif
 #include <xen/p2m-common.h>
diff --git a/xen/common/coverage/coverage.h b/xen/common/coverage/coverage.h
index aa66396c08..34400d0f4b 100644
--- a/xen/common/coverage/coverage.h
+++ b/xen/common/coverage/coverage.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_COV_PRIV_H
-#define _XEN_COV_PRIV_H
+#ifndef COMMON__COVERAGE__COVERAGE_H
+#define COMMON__COVERAGE__COVERAGE_H
 
 #include <xen/types.h>
 
diff --git a/xen/common/coverage/gcov.h b/xen/common/coverage/gcov.h
index efc1fd7b00..f0f70019e3 100644
--- a/xen/common/coverage/gcov.h
+++ b/xen/common/coverage/gcov.h
@@ -1,5 +1,5 @@
-#ifndef _GCOV_H_
-#define _GCOV_H_
+#ifndef COMMON__COVERAGE__GCOV_H
+#define COMMON__COVERAGE__GCOV_H
 
 #include <xen/guest_access.h>
 #include <xen/types.h>
@@ -37,4 +37,4 @@ size_t gcov_info_to_gcda(char *buffer, const struct gcov_info *info);
 size_t gcov_store_uint32(void *buffer, size_t off, uint32_t v);
 size_t gcov_store_uint64(void *buffer, size_t off, uint64_t v);
 
-#endif	/* _GCOV_H_ */
+#endif	/* COMMON__COVERAGE__GCOV_H */
diff --git a/xen/common/libelf/libelf-private.h b/xen/common/libelf/libelf-private.h
index 197d7a7623..890fba8ae2 100644
--- a/xen/common/libelf/libelf-private.h
+++ b/xen/common/libelf/libelf-private.h
@@ -12,8 +12,8 @@
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; If not, see <http://www.gnu.org/licenses/>.
  */
-#ifndef __LIBELF_PRIVATE_H__
-#define __LIBELF_PRIVATE_H__
+#ifndef COMMON__LIBELF__LIBELF_PRIVATE_H
+#define COMMON__LIBELF__LIBELF_PRIVATE_H
 
 #ifdef __XEN__
 
@@ -105,7 +105,7 @@ do { strncpy((d),(s),sizeof((d))-1);            \
    * of memcpy, memset, memmove and strcpy.  Every call site
    * must either use elf_mem*_unchecked, or elf_mem*_safe. */
 
-#endif /* __LIBELF_PRIVATE_H__ */
+#endif /* COMMON__LIBELF__LIBELF_PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/common/lz4/defs.h b/xen/common/lz4/defs.h
index ecfbf07f83..6b974bc806 100644
--- a/xen/common/lz4/defs.h
+++ b/xen/common/lz4/defs.h
@@ -8,8 +8,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef COMMON_LZ4_DEFS_H
-#define COMMON_LZ4_DEFS_H
+#ifndef COMMON__LZ4__DEFS_H
+#define COMMON__LZ4__DEFS_H
 
 #ifdef __XEN__
 #include <asm/byteorder.h>
@@ -170,4 +170,4 @@ typedef struct _U64_S { u64 v; } U64_S;
 		d = e;	\
 	} while (0)
 
-#endif /* COMMON_LZ4_DEFS_H */
+#endif /* COMMON__LZ4__DEFS_H */
diff --git a/xen/common/ubsan/ubsan.h b/xen/common/ubsan/ubsan.h
index 9c7f3b9b6c..495e53a7fd 100644
--- a/xen/common/ubsan/ubsan.h
+++ b/xen/common/ubsan/ubsan.h
@@ -1,5 +1,5 @@
-#ifndef _LIB_UBSAN_H
-#define _LIB_UBSAN_H
+#ifndef COMMON__UBSAN__UBSAN_H
+#define COMMON__UBSAN__UBSAN_H
 
 #include <xen/linux-compat.h>
 
diff --git a/xen/common/xz/lzma2.h b/xen/common/xz/lzma2.h
index 06a7edb4d7..ba9afb0049 100644
--- a/xen/common/xz/lzma2.h
+++ b/xen/common/xz/lzma2.h
@@ -8,8 +8,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_LZMA2_H
-#define XZ_LZMA2_H
+#ifndef COMMON__XZ__LZMA2_H
+#define COMMON__XZ__LZMA2_H
 
 /* Range coder constants */
 #define RC_SHIFT_BITS 8
diff --git a/xen/common/xz/private.h b/xen/common/xz/private.h
index 2299705378..b1345a9ddb 100644
--- a/xen/common/xz/private.h
+++ b/xen/common/xz/private.h
@@ -7,8 +7,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_PRIVATE_H
-#define XZ_PRIVATE_H
+#ifndef COMMON__XZ__PRIVATE_H
+#define COMMON__XZ__PRIVATE_H
 
 #ifdef __XEN__
 #include <xen/kernel.h>
diff --git a/xen/common/xz/stream.h b/xen/common/xz/stream.h
index 8d9fbbe1b5..a4caa665fd 100644
--- a/xen/common/xz/stream.h
+++ b/xen/common/xz/stream.h
@@ -7,8 +7,8 @@
  * You can do whatever you want with this file.
  */
 
-#ifndef XZ_STREAM_H
-#define XZ_STREAM_H
+#ifndef COMMON__XZ__STREAM_H
+#define COMMON__XZ__STREAM_H
 
 /*
  * See the .xz file format specification at
diff --git a/xen/common/zstd/bitstream.h b/xen/common/zstd/bitstream.h
index 2b06d4551f..c38afe399e 100644
--- a/xen/common/zstd/bitstream.h
+++ b/xen/common/zstd/bitstream.h
@@ -38,8 +38,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef BITSTREAM_H_MODULE
-#define BITSTREAM_H_MODULE
+#ifndef COMMON__ZSTD__BITSTREAM_H
+#define COMMON__ZSTD__BITSTREAM_H
 
 /*
 *  This API consists of small unitary functions, which must be inlined for best performance.
@@ -377,4 +377,4 @@ ZSTD_STATIC unsigned BIT_endOfDStream(const BIT_DStream_t *DStream)
 	return ((DStream->ptr == DStream->start) && (DStream->bitsConsumed == sizeof(DStream->bitContainer) * 8));
 }
 
-#endif /* BITSTREAM_H_MODULE */
+#endif /* COMMON__ZSTD__BITSTREAM_H */
diff --git a/xen/common/zstd/error_private.h b/xen/common/zstd/error_private.h
index fa84ae4fef..171525b252 100644
--- a/xen/common/zstd/error_private.h
+++ b/xen/common/zstd/error_private.h
@@ -16,8 +16,8 @@
 
 /* Note : this module is expected to remain private, do not expose it */
 
-#ifndef ERROR_H_MODULE
-#define ERROR_H_MODULE
+#ifndef COMMON__ZSTD__ERROR_PRIVATE_H
+#define COMMON__ZSTD__ERROR_PRIVATE_H
 
 /**
  * enum ZSTD_ErrorCode - zstd error codes
@@ -102,4 +102,4 @@ static __attribute__((unused)) ZSTD_ErrorCode __init ZSTD_getErrorCode(
 	return (ZSTD_ErrorCode)(0 - functionResult);
 }
 
-#endif /* ERROR_H_MODULE */
+#endif /* COMMON__ZSTD__ERROR_PRIVATE_H */
diff --git a/xen/common/zstd/fse.h b/xen/common/zstd/fse.h
index 5761e09f17..dc15c8cd7f 100644
--- a/xen/common/zstd/fse.h
+++ b/xen/common/zstd/fse.h
@@ -37,8 +37,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef FSE_H
-#define FSE_H
+#ifndef COMMON__ZSTD__FSE_H
+#define COMMON__ZSTD__FSE_H
 
 /*-*****************************************
 *  FSE_PUBLIC_API : control library symbols visibility
@@ -567,4 +567,4 @@ ZSTD_STATIC unsigned FSE_endOfDState(const FSE_DState_t *DStatePtr) { return DSt
 
 #define FSE_TABLESTEP(tableSize) ((tableSize >> 1) + (tableSize >> 3) + 3)
 
-#endif /* FSE_H */
+#endif /* COMMON__ZSTD__FSE_H */
diff --git a/xen/common/zstd/huf.h b/xen/common/zstd/huf.h
index 0e091dbffe..e2ed6cf82b 100644
--- a/xen/common/zstd/huf.h
+++ b/xen/common/zstd/huf.h
@@ -37,8 +37,8 @@
  * You can contact the author at :
  * - Source repository : https://github.com/Cyan4973/FiniteStateEntropy
  */
-#ifndef HUF_H_298734234
-#define HUF_H_298734234
+#ifndef COMMON__ZSTD__HUF_H
+#define COMMON__ZSTD__HUF_H
 
 /* ***   Tool functions *** */
 #define HUF_BLOCKSIZE_MAX (128 * 1024) /**< maximum input size for a single block compressed with HUF_compress */
@@ -206,4 +206,4 @@ size_t HUF_decompress1X_usingDTable(void *dst, size_t maxDstSize, const void *cS
 size_t HUF_decompress1X2_usingDTable(void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable);
 size_t HUF_decompress1X4_usingDTable(void *dst, size_t maxDstSize, const void *cSrc, size_t cSrcSize, const HUF_DTable *DTable);
 
-#endif /* HUF_H_298734234 */
+#endif /* COMMON__ZSTD__HUF_H */
diff --git a/xen/common/zstd/mem.h b/xen/common/zstd/mem.h
index ae1e305126..8e4228771c 100644
--- a/xen/common/zstd/mem.h
+++ b/xen/common/zstd/mem.h
@@ -14,8 +14,8 @@
  * ("BSD").
  */
 
-#ifndef MEM_H_MODULE
-#define MEM_H_MODULE
+#ifndef COMMON__ZSTD__MEM_H
+#define COMMON__ZSTD__MEM_H
 
 /*-****************************************
 *  Dependencies
@@ -150,4 +150,4 @@ ZSTD_STATIC U32 ZSTD_readMINMATCH(const void *memPtr, U32 length)
 	}
 }
 
-#endif /* MEM_H_MODULE */
+#endif /* COMMON__ZSTD__MEM_H */
diff --git a/xen/common/zstd/zstd_internal.h b/xen/common/zstd/zstd_internal.h
index 94f8c58622..93339813d6 100644
--- a/xen/common/zstd/zstd_internal.h
+++ b/xen/common/zstd/zstd_internal.h
@@ -14,8 +14,8 @@
  * ("BSD").
  */
 
-#ifndef ZSTD_CCOMMON_H_MODULE
-#define ZSTD_CCOMMON_H_MODULE
+#ifndef COMMON__ZSTD__ZSTD_INTERNAL_H
+#define COMMON__ZSTD__ZSTD_INTERNAL_H
 
 /*-*******************************************************
 *  Compiler specifics
@@ -373,4 +373,4 @@ size_t ZSTD_freeDDict(ZSTD_DDict *cdict);
 size_t ZSTD_freeCStream(ZSTD_CStream *zcs);
 size_t ZSTD_freeDStream(ZSTD_DStream *zds);
 
-#endif /* ZSTD_CCOMMON_H_MODULE */
+#endif /* COMMON__ZSTD__ZSTD_INTERNAL_H */
diff --git a/xen/drivers/video/font.h b/xen/drivers/video/font.h
index 7f720b3568..123a69dcef 100644
--- a/xen/drivers/video/font.h
+++ b/xen/drivers/video/font.h
@@ -8,8 +8,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_FONT_H
-#define _XEN_FONT_H
+#ifndef DRIVERS__VIDEO__FONT_H
+#define DRIVERS__VIDEO__FONT_H
 
 struct font_desc {
     const char *name;
@@ -19,4 +19,4 @@ struct font_desc {
 
 extern const struct font_desc font_vga_8x8, font_vga_8x14, font_vga_8x16;
 
-#endif /* _XEN_FONT_H */
+#endif /* DRIVERS__VIDEO__FONT_H */
diff --git a/xen/drivers/video/lfb.h b/xen/drivers/video/lfb.h
index 42161402d6..bee1bd3c28 100644
--- a/xen/drivers/video/lfb.h
+++ b/xen/drivers/video/lfb.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef _XEN_LFB_H
-#define _XEN_LFB_H
+#ifndef DRIVERS__VIDEO__LFB_H
+#define DRIVERS__VIDEO__LFB_H
 
 #include <xen/init.h>
 
diff --git a/xen/drivers/video/modelines.h b/xen/drivers/video/modelines.h
index 9cb7cdde05..08d631b134 100644
--- a/xen/drivers/video/modelines.h
+++ b/xen/drivers/video/modelines.h
@@ -25,8 +25,8 @@
  * Copyright (c) 2013 Citrix Systems
  */
 
-#ifndef _XEN_MODLINES_H
-#define _XEN_MODLINES_H
+#ifndef DRIVERS__VIDEO__MODELINES_H
+#define DRIVERS__VIDEO__MODELINES_H
 
 struct modeline {
     const char* mode;  /* in the form 1280x1024@60 */
diff --git a/xen/include/asm-generic/altp2m.h b/xen/include/asm-generic/altp2m.h
index 39865a842a..34ae943145 100644
--- a/xen/include/asm-generic/altp2m.h
+++ b/xen/include/asm-generic/altp2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_ALTP2M_H
-#define __ASM_GENERIC_ALTP2M_H
+#ifndef ASM_GENERIC__ALTP2M_H
+#define ASM_GENERIC__ALTP2M_H
 
 #include <xen/bug.h>
 
@@ -22,7 +22,7 @@ static inline unsigned int altp2m_vcpu_idx(const struct vcpu *v)
     return 0;
 }
 
-#endif /* __ASM_GENERIC_ALTP2M_H */
+#endif /* ASM_GENERIC__ALTP2M_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/atomic-ops.h b/xen/include/asm-generic/atomic-ops.h
index 98dd907942..b1f883c360 100644
--- a/xen/include/asm-generic/atomic-ops.h
+++ b/xen/include/asm-generic/atomic-ops.h
@@ -4,8 +4,8 @@
  * forward inline declaration that can be synthesized from other atomic
  * functions or being created from scratch.
  */
-#ifndef _ASM_GENERIC_ATOMIC_OPS_H_
-#define _ASM_GENERIC_ATOMIC_OPS_H_
+#ifndef ASM_GENERIC__ATOMIC_OPS_H
+#define ASM_GENERIC__ATOMIC_OPS_H
 
 #include <xen/atomic.h>
 #include <xen/lib.h>
@@ -94,4 +94,4 @@ static inline int atomic_add_negative(int i, atomic_t *v)
 }
 #endif
 
-#endif /* _ASM_GENERIC_ATOMIC_OPS_H_ */
+#endif /* ASM_GENERIC__ATOMIC_OPS_H */
diff --git a/xen/include/asm-generic/device.h b/xen/include/asm-generic/device.h
index 1acd1ba1d8..eccd3159a9 100644
--- a/xen/include/asm-generic/device.h
+++ b/xen/include/asm-generic/device.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_DEVICE_H__
-#define __ASM_GENERIC_DEVICE_H__
+#ifndef ASM_GENERIC__DEVICE_H
+#define ASM_GENERIC__DEVICE_H
 
 #include <xen/stdbool.h>
 
@@ -127,7 +127,7 @@ __section(".adev.info") = {                                         \
 
 #endif /* CONFIG_ACPI */
 
-#endif /* __ASM_GENERIC_DEVICE_H__ */
+#endif /* ASM_GENERIC__DEVICE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/div64.h b/xen/include/asm-generic/div64.h
index 068d8a11ad..774198f98b 100644
--- a/xen/include/asm-generic/div64.h
+++ b/xen/include/asm-generic/div64.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_DIV64
-#define __ASM_GENERIC_DIV64
+#ifndef ASM_GENERIC__DIV64_H
+#define ASM_GENERIC__DIV64_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/asm-generic/hardirq.h b/xen/include/asm-generic/hardirq.h
index ddccf460b9..09260b1b08 100644
--- a/xen/include/asm-generic/hardirq.h
+++ b/xen/include/asm-generic/hardirq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_HARDIRQ_H
-#define __ASM_GENERIC_HARDIRQ_H
+#ifndef ASM_GENERIC__HARDIRQ_H
+#define ASM_GENERIC__HARDIRQ_H
 
 #include <xen/cache.h>
 #include <xen/smp.h>
@@ -17,7 +17,7 @@ typedef struct {
 #define irq_enter()     (local_irq_count(smp_processor_id())++)
 #define irq_exit()      (local_irq_count(smp_processor_id())--)
 
-#endif /* __ASM_GENERIC_HARDIRQ_H */
+#endif /* ASM_GENERIC__HARDIRQ_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/hypercall.h b/xen/include/asm-generic/hypercall.h
index 7743b35c0d..201b2cb301 100644
--- a/xen/include/asm-generic/hypercall.h
+++ b/xen/include/asm-generic/hypercall.h
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_GENERIC_HYPERCALL_H__
-#define __ASM_GENERIC_HYPERCALL_H__
+#ifndef ASM_GENERIC__HYPERCALL_H
+#define ASM_GENERIC__HYPERCALL_H
 
-#endif /* __ASM_GENERIC_HYPERCALL_H__ */
+#endif /* ASM_GENERIC__HYPERCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/iocap.h b/xen/include/asm-generic/iocap.h
index dd7cb45488..1001fb629a 100644
--- a/xen/include/asm-generic/iocap.h
+++ b/xen/include/asm-generic/iocap.h
@@ -1,11 +1,11 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_IOCAP_H__
-#define __ASM_GENERIC_IOCAP_H__
+#ifndef ASM_GENERIC__IOCAP_H
+#define ASM_GENERIC__IOCAP_H
 
 #define cache_flush_permitted(d)                        \
     (!rangeset_is_empty((d)->iomem_caps))
 
-#endif /* __ASM_GENERIC_IOCAP_H__ */
+#endif /* ASM_GENERIC__IOCAP_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/paging.h b/xen/include/asm-generic/paging.h
index 8df534cfdc..1a8fae6543 100644
--- a/xen/include/asm-generic/paging.h
+++ b/xen/include/asm-generic/paging.h
@@ -1,13 +1,13 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_PAGING_H__
-#define __ASM_GENERIC_PAGING_H__
+#ifndef ASM_GENERIC__PAGING_H
+#define ASM_GENERIC__PAGING_H
 
 #include <xen/stdbool.h>
 
 #define paging_mode_translate(d)    ((void)(d), true)
 #define paging_mode_external(d)     ((void)(d), true)
 
-#endif /* __ASM_GENERIC_PAGING_H__ */
+#endif /* ASM_GENERIC__PAGING_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/percpu.h b/xen/include/asm-generic/percpu.h
index 60af4f9ff9..7302edb00c 100644
--- a/xen/include/asm-generic/percpu.h
+++ b/xen/include/asm-generic/percpu.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_PERCPU_H__
-#define __ASM_GENERIC_PERCPU_H__
+#ifndef ASM_GENERIC__PERCPU_H
+#define ASM_GENERIC__PERCPU_H
 
 #ifndef __ASSEMBLY__
 
@@ -25,7 +25,7 @@ void percpu_init_areas(void);
 
 #endif
 
-#endif /* __ASM_GENERIC_PERCPU_H__ */
+#endif /* ASM_GENERIC__PERCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/random.h b/xen/include/asm-generic/random.h
index d0d35dd217..f2e6c1c11c 100644
--- a/xen/include/asm-generic/random.h
+++ b/xen/include/asm-generic/random.h
@@ -1,13 +1,13 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_RANDOM_H__
-#define __ASM_GENERIC_RANDOM_H__
+#ifndef ASM_GENERIC__RANDOM_H
+#define ASM_GENERIC__RANDOM_H
 
 static inline unsigned int arch_get_random(void)
 {
     return 0;
 }
 
-#endif /* __ASM_GENERIC_RANDOM_H__ */
+#endif /* ASM_GENERIC__RANDOM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/softirq.h b/xen/include/asm-generic/softirq.h
index 83be855e50..92144c7eca 100644
--- a/xen/include/asm-generic/softirq.h
+++ b/xen/include/asm-generic/softirq.h
@@ -1,12 +1,12 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_GENERIC_SOFTIRQ_H__
-#define __ASM_GENERIC_SOFTIRQ_H__
+#ifndef ASM_GENERIC__SOFTIRQ_H
+#define ASM_GENERIC__SOFTIRQ_H
 
 #define NR_ARCH_SOFTIRQS       0
 
 #define arch_skip_send_event_check(cpu) 0
 
-#endif /* __ASM_GENERIC_SOFTIRQ_H__ */
+#endif /* ASM_GENERIC__SOFTIRQ_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/crypto/rijndael.h b/xen/include/crypto/rijndael.h
index 4386be5878..52c7a2f622 100644
--- a/xen/include/crypto/rijndael.h
+++ b/xen/include/crypto/rijndael.h
@@ -25,8 +25,8 @@
  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-#ifndef __RIJNDAEL_H
-#define __RIJNDAEL_H
+#ifndef CRYPTO__RIJNDAEL_H
+#define CRYPTO__RIJNDAEL_H
 
 #define AES_MAXKEYBITS	(256)
 #define AES_MAXKEYBYTES	(AES_MAXKEYBITS/8)
@@ -55,4 +55,4 @@ int	rijndaelKeySetupDec(unsigned int [], const unsigned char [], int);
 void	rijndaelEncrypt(const unsigned int [], int, const unsigned char [16],
 	    unsigned char [16]);
 
-#endif /* __RIJNDAEL_H */
+#endif /* CRYPTO__RIJNDAEL_H */
diff --git a/xen/include/crypto/vmac.h b/xen/include/crypto/vmac.h
index 457f3f5dd6..310fc77f5c 100644
--- a/xen/include/crypto/vmac.h
+++ b/xen/include/crypto/vmac.h
@@ -1,5 +1,5 @@
-#ifndef HEADER_VMAC_H
-#define HEADER_VMAC_H
+#ifndef CRYPTO__VMAC_H
+#define CRYPTO__VMAC_H
 
 /* --------------------------------------------------------------------------
  * VMAC and VHASH Implementation by Ted Krovetz (tdk@acm.org) and Wei Dai.
diff --git a/xen/include/xen/8250-uart.h b/xen/include/xen/8250-uart.h
index d13352940c..7915297a24 100644
--- a/xen/include/xen/8250-uart.h
+++ b/xen/include/xen/8250-uart.h
@@ -19,8 +19,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __XEN_8250_UART_H__
-#define __XEN_8250_UART_H__
+#ifndef XEN__8250_UART_H
+#define XEN__8250_UART_H
 
 /* Register offsets */
 #define UART_RBR          0x00    /* receive buffer       */
@@ -129,7 +129,7 @@
 #define RESUME_DELAY      MILLISECS(10)
 #define RESUME_RETRIES    100
 
-#endif /* __XEN_8250_UART_H__ */
+#endif /* XEN__8250_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/acpi.h b/xen/include/xen/acpi.h
index bc4818c943..64efc0a7bc 100644
--- a/xen/include/xen/acpi.h
+++ b/xen/include/xen/acpi.h
@@ -21,8 +21,8 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
-#ifndef _LINUX_ACPI_H
-#define _LINUX_ACPI_H
+#ifndef XEN__ACPI_H
+#define XEN__ACPI_H
 
 #ifndef _LINUX
 #define _LINUX
@@ -204,4 +204,4 @@ static inline void acpi_dmar_reinstate(void) {}
 
 #endif /* __ASSEMBLY__ */
 
-#endif /*_LINUX_ACPI_H*/
+#endif /*XEN__ACPI_H*/
diff --git a/xen/include/xen/alternative-call.h b/xen/include/xen/alternative-call.h
index 10f7d7637e..a91ae14416 100644
--- a/xen/include/xen/alternative-call.h
+++ b/xen/include/xen/alternative-call.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef XEN_ALTERNATIVE_CALL
-#define XEN_ALTERNATIVE_CALL
+#ifndef XEN__ALTERNATIVE_CALL_H
+#define XEN__ALTERNATIVE_CALL_H
 
 /*
  * Some subsystems in Xen may have multiple implementations, which can be
@@ -65,4 +65,4 @@
 #define __alt_call_maybe_initdata __ro_after_init
 
 #endif /* !CONFIG_ALTERNATIVE_CALL */
-#endif /* XEN_ALTERNATIVE_CALL */
+#endif /* XEN__ALTERNATIVE_CALL_H */
diff --git a/xen/include/xen/atomic.h b/xen/include/xen/atomic.h
index fa750a18ae..ecff44c23d 100644
--- a/xen/include/xen/atomic.h
+++ b/xen/include/xen/atomic.h
@@ -19,8 +19,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_ATOMIC_H__
-#define __XEN_ATOMIC_H__
+#ifndef XEN__ATOMIC_H
+#define XEN__ATOMIC_H
 
 typedef struct { int counter; } atomic_t;
 
@@ -204,4 +204,4 @@ static inline int atomic_add_negative(int i, atomic_t *v);
  */
 static inline int atomic_add_unless(atomic_t *v, int a, int u);
 
-#endif /* __XEN_ATOMIC_H__ */
+#endif /* XEN__ATOMIC_H */
diff --git a/xen/include/xen/bitmap.h b/xen/include/xen/bitmap.h
index 4b642cd420..83b80214bc 100644
--- a/xen/include/xen/bitmap.h
+++ b/xen/include/xen/bitmap.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BITMAP_H
-#define __XEN_BITMAP_H
+#ifndef XEN__BITMAP_H
+#define XEN__BITMAP_H
 
 #ifndef __ASSEMBLY__
 
@@ -292,4 +292,4 @@ int bitmap_to_xenctl_bitmap(struct xenctl_bitmap *xenctl_bitmap,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_BITMAP_H */
+#endif /* XEN__BITMAP_H */
diff --git a/xen/include/xen/bitops.h b/xen/include/xen/bitops.h
index 12eb88fb12..540cd58e9f 100644
--- a/xen/include/xen/bitops.h
+++ b/xen/include/xen/bitops.h
@@ -1,5 +1,5 @@
-#ifndef XEN_BITOPS_H
-#define XEN_BITOPS_H
+#ifndef XEN__BITOPS_H
+#define XEN__BITOPS_H
 
 #include <xen/compiler.h>
 #include <xen/types.h>
@@ -438,4 +438,4 @@ static inline __u32 ror32(__u32 word, unsigned int shift)
 
 #define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
 
-#endif /* XEN_BITOPS_H */
+#endif /* XEN__BITOPS_H */
diff --git a/xen/include/xen/bug.h b/xen/include/xen/bug.h
index 99814c4bef..6f901fa1e4 100644
--- a/xen/include/xen/bug.h
+++ b/xen/include/xen/bug.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BUG_H__
-#define __XEN_BUG_H__
+#ifndef XEN__BUG_H
+#define XEN__BUG_H
 
 #define BUGFRAME_run_fn 0
 #define BUGFRAME_warn   1
@@ -157,7 +157,7 @@ int do_bug_frame(const struct cpu_user_regs *regs, unsigned long pc);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_BUG_H__ */
+#endif /* XEN__BUG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/byteorder/big_endian.h b/xen/include/xen/byteorder/big_endian.h
index 40eb80a390..5b33acb577 100644
--- a/xen/include/xen/byteorder/big_endian.h
+++ b/xen/include/xen/byteorder/big_endian.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_BIG_ENDIAN_H__
-#define __XEN_BYTEORDER_BIG_ENDIAN_H__
+#ifndef XEN__BYTEORDER__BIG_ENDIAN_H
+#define XEN__BYTEORDER__BIG_ENDIAN_H
 
 #ifndef __BIG_ENDIAN
 #define __BIG_ENDIAN 4321
@@ -99,4 +99,4 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
 
 #include <xen/byteorder/generic.h>
 
-#endif /* __XEN_BYTEORDER_BIG_ENDIAN_H__ */
+#endif /* XEN__BYTEORDER__BIG_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/generic.h b/xen/include/xen/byteorder/generic.h
index 8a0006b755..f97eb4771b 100644
--- a/xen/include/xen/byteorder/generic.h
+++ b/xen/include/xen/byteorder/generic.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_GENERIC_H__
-#define __XEN_BYTEORDER_GENERIC_H__
+#ifndef XEN__BYTEORDER__GENERIC_H
+#define XEN__BYTEORDER__GENERIC_H
 
 /*
  * Generic Byte-reordering support
@@ -65,4 +65,4 @@
 #define cpu_to_be16s __cpu_to_be16s
 #define be16_to_cpus __be16_to_cpus
 
-#endif /* __XEN_BYTEORDER_GENERIC_H__ */
+#endif /* XEN__BYTEORDER__GENERIC_H */
diff --git a/xen/include/xen/byteorder/little_endian.h b/xen/include/xen/byteorder/little_endian.h
index 4955632793..6e944dca1a 100644
--- a/xen/include/xen/byteorder/little_endian.h
+++ b/xen/include/xen/byteorder/little_endian.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_LITTLE_ENDIAN_H__
-#define __XEN_BYTEORDER_LITTLE_ENDIAN_H__
+#ifndef XEN__BYTEORDER__LITTLE_ENDIAN_H
+#define XEN__BYTEORDER__LITTLE_ENDIAN_H
 
 #ifndef __LITTLE_ENDIAN
 #define __LITTLE_ENDIAN 1234
@@ -99,4 +99,4 @@ static inline __u16 __be16_to_cpup(const __be16 *p)
 
 #include <xen/byteorder/generic.h>
 
-#endif /* __XEN_BYTEORDER_LITTLE_ENDIAN_H__ */
+#endif /* XEN__BYTEORDER__LITTLE_ENDIAN_H */
diff --git a/xen/include/xen/byteorder/swab.h b/xen/include/xen/byteorder/swab.h
index 9f817e3c44..96f8834e53 100644
--- a/xen/include/xen/byteorder/swab.h
+++ b/xen/include/xen/byteorder/swab.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_BYTEORDER_SWAB_H__
-#define __XEN_BYTEORDER_SWAB_H__
+#ifndef XEN__BYTEORDER__SWAB_H
+#define XEN__BYTEORDER__SWAB_H
 
 /*
  * Byte-swapping, independently from CPU endianness
@@ -180,4 +180,4 @@ static inline void __swab64s(__u64 *addr)
 #define swab32s __swab32s
 #define swab64s __swab64s
 
-#endif /* __XEN_BYTEORDER_SWAB_H__ */
+#endif /* XEN__BYTEORDER__SWAB_H */
diff --git a/xen/include/xen/cache.h b/xen/include/xen/cache.h
index 6ee174efa4..9aa5150188 100644
--- a/xen/include/xen/cache.h
+++ b/xen/include/xen/cache.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_CACHE_H
-#define __LINUX_CACHE_H
+#ifndef XEN__CACHE_H
+#define XEN__CACHE_H
 
 #include <asm/cache.h>
 
@@ -15,4 +15,4 @@
 #define __cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
 #endif
 
-#endif /* __LINUX_CACHE_H */
+#endif /* XEN__CACHE_H */
diff --git a/xen/include/xen/compat.h b/xen/include/xen/compat.h
index 7ec9d6567e..d1f6463530 100644
--- a/xen/include/xen/compat.h
+++ b/xen/include/xen/compat.h
@@ -2,8 +2,8 @@
  * compat.h
  */
 
-#ifndef __XEN_COMPAT_H__
-#define __XEN_COMPAT_H__
+#ifndef XEN__COMPAT_H
+#define XEN__COMPAT_H
 
 #include <xen/types.h>
 #ifdef CONFIG_HAS_COMPAT
@@ -243,4 +243,4 @@ void xlat_vcpu_runstate_info(struct vcpu_runstate_info *native);
 
 #endif
 
-#endif /* __XEN_COMPAT_H__ */
+#endif /* XEN__COMPAT_H */
diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
index b118e4ba62..e1ec208873 100644
--- a/xen/include/xen/compiler.h
+++ b/xen/include/xen/compiler.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_COMPILER_H
-#define __LINUX_COMPILER_H
+#ifndef XEN__COMPILER_H
+#define XEN__COMPILER_H
 
 #if !defined(__GNUC__) || (__GNUC__ < 4)
 #error Sorry, your compiler is too old/not recognized.
@@ -184,4 +184,4 @@
 # define CLANG_DISABLE_WARN_GCC_COMPAT_END
 #endif
 
-#endif /* __LINUX_COMPILER_H */
+#endif /* XEN__COMPILER_H */
diff --git a/xen/include/xen/config.h b/xen/include/xen/config.h
index d888b2314d..5202d25a66 100644
--- a/xen/include/xen/config.h
+++ b/xen/include/xen/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __XEN_CONFIG_H__
-#define __XEN_CONFIG_H__
+#ifndef XEN__CONFIG_H
+#define XEN__CONFIG_H
 
 #ifdef CPPCHECK
 #include <generated/compiler-def.h>
@@ -98,4 +98,4 @@
 #define ZERO_BLOCK_PTR ((void *)-1L)
 #endif
 
-#endif /* __XEN_CONFIG_H__ */
+#endif /* XEN__CONFIG_H */
diff --git a/xen/include/xen/console.h b/xen/include/xen/console.h
index 6dfbade3ec..36956faa17 100644
--- a/xen/include/xen/console.h
+++ b/xen/include/xen/console.h
@@ -4,8 +4,8 @@
  * Xen header file concerning console access.
  */
 
-#ifndef __CONSOLE_H__
-#define __CONSOLE_H__
+#ifndef XEN__CONSOLE_H
+#define XEN__CONSOLE_H
 
 #include <xen/inttypes.h>
 #include <public/xen.h>
@@ -50,4 +50,4 @@ void console_serial_puts(const char *s, size_t nr);
 
 extern int8_t opt_console_xen;
 
-#endif /* __CONSOLE_H__ */
+#endif /* XEN__CONSOLE_H */
diff --git a/xen/include/xen/consoled.h b/xen/include/xen/consoled.h
index bd7ab6329e..6975e50631 100644
--- a/xen/include/xen/consoled.h
+++ b/xen/include/xen/consoled.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CONSOLED_H__
-#define __XEN_CONSOLED_H__
+#ifndef XEN__CONSOLED_H
+#define XEN__CONSOLED_H
 
 #include <public/io/console.h>
 
@@ -8,7 +8,7 @@ struct xencons_interface *consoled_get_ring_addr(void);
 void consoled_guest_rx(void);
 void consoled_guest_tx(char c);
 
-#endif /* __XEN_CONSOLED_H__ */
+#endif /* XEN__CONSOLED_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/const.h b/xen/include/xen/const.h
index baf28ef144..16f550959d 100644
--- a/xen/include/xen/const.h
+++ b/xen/include/xen/const.h
@@ -1,7 +1,7 @@
 /* const.h: Macros for dealing with constants.  */
 
-#ifndef __XEN_CONST_H__
-#define __XEN_CONST_H__
+#ifndef XEN__CONST_H
+#define XEN__CONST_H
 
 /* Some constant macros are used in both assembler and
  * C code.  Therefore we cannot annotate them always with
@@ -23,4 +23,4 @@
 
 #define BIT(pos, sfx)   (_AC(1, sfx) << (pos))
 
-#endif /* __XEN_CONST_H__ */
+#endif /* XEN__CONST_H */
diff --git a/xen/include/xen/coverage.h b/xen/include/xen/coverage.h
index ba5fb67947..76101455e0 100644
--- a/xen/include/xen/coverage.h
+++ b/xen/include/xen/coverage.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_COV_H
-#define _XEN_COV_H
+#ifndef XEN__COVERAGE_H
+#define XEN__COVERAGE_H
 
 #ifdef CONFIG_COVERAGE
 #include <public/sysctl.h>
diff --git a/xen/include/xen/cper.h b/xen/include/xen/cper.h
index de8f385bdd..8528ae2447 100644
--- a/xen/include/xen/cper.h
+++ b/xen/include/xen/cper.h
@@ -18,8 +18,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef LINUX_CPER_H
-#define LINUX_CPER_H
+#ifndef XEN__CPER_H
+#define XEN__CPER_H
 
 #include <xen/types.h>
 #include <xen/string.h>
diff --git a/xen/include/xen/cpu.h b/xen/include/xen/cpu.h
index 6bf5786750..8ec0e8ef61 100644
--- a/xen/include/xen/cpu.h
+++ b/xen/include/xen/cpu.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CPU_H__
-#define __XEN_CPU_H__
+#ifndef XEN__CPU_H
+#define XEN__CPU_H
 
 #include <xen/types.h>
 #include <xen/spinlock.h>
@@ -83,4 +83,4 @@ int __cpu_up(unsigned int cpu);
 void __cpu_disable(void);
 void __cpu_die(unsigned int cpu);
 
-#endif /* __XEN_CPU_H__ */
+#endif /* XEN__CPU_H */
diff --git a/xen/include/xen/cpuidle.h b/xen/include/xen/cpuidle.h
index 705d0c1135..0e54eb7d9b 100644
--- a/xen/include/xen/cpuidle.h
+++ b/xen/include/xen/cpuidle.h
@@ -23,8 +23,8 @@
  *
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
-#ifndef _XEN_CPUIDLE_H
-#define _XEN_CPUIDLE_H
+#ifndef XEN__CPUIDLE_H
+#define XEN__CPUIDLE_H
 
 #include <xen/cpumask.h>
 #include <xen/spinlock.h>
@@ -98,4 +98,4 @@ extern void cpuidle_wakeup_mwait(cpumask_t *mask);
 
 extern void menu_get_trace_data(u32 *expected, u32 *pred);
 
-#endif /* _XEN_CPUIDLE_H */
+#endif /* XEN__CPUIDLE_H */
diff --git a/xen/include/xen/cpumask.h b/xen/include/xen/cpumask.h
index b713bb69a9..4324af7c36 100644
--- a/xen/include/xen/cpumask.h
+++ b/xen/include/xen/cpumask.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_CPUMASK_H
-#define __XEN_CPUMASK_H
+#ifndef XEN__CPUMASK_H
+#define XEN__CPUMASK_H
 
 /*
  * Cpumasks provide a bitmap suitable for representing the
@@ -466,4 +466,4 @@ int cpumask_to_xenctl_bitmap(struct xenctl_bitmap *xenctl_cpumap,
 int xenctl_bitmap_to_cpumask(cpumask_var_t *cpumask,
                              const struct xenctl_bitmap *xenctl_cpumap);
 
-#endif /* __XEN_CPUMASK_H */
+#endif /* XEN__CPUMASK_H */
diff --git a/xen/include/xen/ctype.h b/xen/include/xen/ctype.h
index 773ac27aa4..da4122f6ab 100644
--- a/xen/include/xen/ctype.h
+++ b/xen/include/xen/ctype.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_CTYPE_H
-#define _LINUX_CTYPE_H
+#ifndef XEN__CTYPE_H
+#define XEN__CTYPE_H
 
 /*
  * NOTE! This ctype does not handle EOF like the standard C
diff --git a/xen/include/xen/decompress.h b/xen/include/xen/decompress.h
index f5bc17f2b6..d65a3a4346 100644
--- a/xen/include/xen/decompress.h
+++ b/xen/include/xen/decompress.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_GENERIC_H
-#define __XEN_GENERIC_H
+#ifndef XEN__DECOMPRESS_H
+#define XEN__DECOMPRESS_H
 
 typedef int decompress_fn(unsigned char *inbuf, unsigned int len,
                           int (*fill)(void*, unsigned int),
diff --git a/xen/include/xen/delay.h b/xen/include/xen/delay.h
index 8fd3b8f99f..269c034ce1 100644
--- a/xen/include/xen/delay.h
+++ b/xen/include/xen/delay.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_DELAY_H
-#define _LINUX_DELAY_H
+#ifndef XEN__DELAY_H
+#define XEN__DELAY_H
 
 /* Copyright (C) 1993 Linus Torvalds */
 
@@ -11,4 +11,4 @@ static inline void mdelay(unsigned long msec)
         udelay(1000);
 }
 
-#endif /* defined(_LINUX_DELAY_H) */
+#endif /* defined(XEN__DELAY_H) */
diff --git a/xen/include/xen/dm.h b/xen/include/xen/dm.h
index 18417d57f1..27d69a5c91 100644
--- a/xen/include/xen/dm.h
+++ b/xen/include/xen/dm.h
@@ -14,8 +14,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_DM_H__
-#define __XEN_DM_H__
+#ifndef XEN__DM_H
+#define XEN__DM_H
 
 #include <xen/types.h>
 
@@ -31,7 +31,7 @@ struct dmop_args {
 
 int dm_op(const struct dmop_args *op_args);
 
-#endif /* __XEN_DM_H__ */
+#endif /* XEN__DM_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/dmi.h b/xen/include/xen/dmi.h
index ed6ffda315..16f13195d7 100644
--- a/xen/include/xen/dmi.h
+++ b/xen/include/xen/dmi.h
@@ -1,5 +1,5 @@
-#ifndef __DMI_H__
-#define __DMI_H__
+#ifndef XEN__DMI_H
+#define XEN__DMI_H
 
 enum dmi_field {
 	DMI_NONE,
@@ -44,4 +44,4 @@ extern void dmi_efi_get_table(const void *smbios, const void *smbios3);
 bool dmi_get_date(int field, int *yearp, int *monthp, int *dayp);
 extern void dmi_end_boot(void);
 
-#endif	/* __DMI_H__ */
+#endif	/* XEN__DMI_H */
diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h
index 3de5635291..99f312e9b4 100644
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -1,6 +1,6 @@
 
-#ifndef __XEN_DOMAIN_H__
-#define __XEN_DOMAIN_H__
+#ifndef XEN__DOMAIN_H
+#define XEN__DOMAIN_H
 
 #include <xen/numa.h>
 #include <xen/types.h>
@@ -171,4 +171,4 @@ extern bool vmtrace_available;
 
 extern bool vpmu_is_available;
 
-#endif /* __XEN_DOMAIN_H__ */
+#endif /* XEN__DOMAIN_H */
diff --git a/xen/include/xen/domain_page.h b/xen/include/xen/domain_page.h
index c89b149e54..4ccf28f26d 100644
--- a/xen/include/xen/domain_page.h
+++ b/xen/include/xen/domain_page.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2003-2006, Keir Fraser <keir@xensource.com>
  */
 
-#ifndef __XEN_DOMAIN_PAGE_H__
-#define __XEN_DOMAIN_PAGE_H__
+#ifndef XEN__DOMAIN_PAGE_H
+#define XEN__DOMAIN_PAGE_H
 
 #include <xen/mm.h>
 
@@ -77,4 +77,4 @@ static inline void unmap_domain_page_global(const void *va) {};
     (p) = NULL;                     \
 } while ( false )
 
-#endif /* __XEN_DOMAIN_PAGE_H__ */
+#endif /* XEN__DOMAIN_PAGE_H */
diff --git a/xen/include/xen/dt-overlay.h b/xen/include/xen/dt-overlay.h
index b2cedf3f2a..cd44a5cacb 100644
--- a/xen/include/xen/dt-overlay.h
+++ b/xen/include/xen/dt-overlay.h
@@ -8,8 +8,8 @@
  * Written by Vikram Garhwal <vikram.garhwal@amd.com>
  *
  */
-#ifndef __XEN_DT_OVERLAY_H__
-#define __XEN_DT_OVERLAY_H__
+#ifndef XEN__DT_OVERLAY_H
+#define XEN__DT_OVERLAY_H
 
 #include <xen/device_tree.h>
 #include <xen/list.h>
@@ -58,7 +58,7 @@ static inline long dt_overlay_domctl(struct domain *d,
 }
 #endif
 
-#endif /* __XEN_DT_OVERLAY_H__ */
+#endif /* XEN__DT_OVERLAY_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/early_printk.h b/xen/include/xen/early_printk.h
index 5d72293793..41ae0dded1 100644
--- a/xen/include/xen/early_printk.h
+++ b/xen/include/xen/early_printk.h
@@ -1,8 +1,8 @@
 /*
  * printk() for use before the console is initialized
  */
-#ifndef __XEN_EARLY_PRINTK_H__
-#define __XEN_EARLY_PRINTK_H__
+#ifndef XEN__EARLY_PRINTK_H
+#define XEN__EARLY_PRINTK_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/xen/earlycpio.h b/xen/include/xen/earlycpio.h
index 16d9404d73..9e5d740be9 100644
--- a/xen/include/xen/earlycpio.h
+++ b/xen/include/xen/earlycpio.h
@@ -1,5 +1,5 @@
-#ifndef _EARLYCPIO_H
-#define _EARLYCPIO_H
+#ifndef XEN__EARLYCPIO_H
+#define XEN__EARLYCPIO_H
 
 #define MAX_CPIO_FILE_NAME 18
 
@@ -12,4 +12,4 @@ struct cpio_data {
 struct cpio_data find_cpio_data(const char *path, void *data, size_t len,
 				long *offset);
 
-#endif /* _EARLYCPIO_H */
+#endif /* XEN__EARLYCPIO_H */
diff --git a/xen/include/xen/efi.h b/xen/include/xen/efi.h
index 160804e294..bc3ddffd6d 100644
--- a/xen/include/xen/efi.h
+++ b/xen/include/xen/efi.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_EFI_H__
-#define __XEN_EFI_H__
+#ifndef XEN__EFI_H
+#define XEN__EFI_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -55,4 +55,4 @@ int efi_compat_runtime_call(struct compat_pf_efi_runtime_call *op);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __XEN_EFI_H__ */
+#endif /* XEN__EFI_H */
diff --git a/xen/include/xen/elf.h b/xen/include/xen/elf.h
index 4199b4d6e6..48d8dc4ca8 100644
--- a/xen/include/xen/elf.h
+++ b/xen/include/xen/elf.h
@@ -24,8 +24,8 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef __XEN_ELF_H__
-#define __XEN_ELF_H__
+#ifndef XEN__ELF_H
+#define XEN__ELF_H
 
 #include <xen/elfstructs.h>
 
@@ -34,4 +34,4 @@
 #define ELFNOTE_DESC(_n_) (ELFNOTE_NAME(_n_) + ELFNOTE_ALIGN((_n_)->namesz))
 #define ELFNOTE_NEXT(_n_) ((Elf_Note *)(ELFNOTE_DESC(_n_) + ELFNOTE_ALIGN((_n_)->descsz)))
 
-#endif /* __XEN_ELF_H__ */
+#endif /* XEN__ELF_H */
diff --git a/xen/include/xen/elfcore.h b/xen/include/xen/elfcore.h
index 0d78033424..e5b18a5eff 100644
--- a/xen/include/xen/elfcore.h
+++ b/xen/include/xen/elfcore.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ELFCOREC_H__
-#define __ELFCOREC_H__
+#ifndef XEN__ELFCORE_H
+#define XEN__ELFCORE_H
 
 #include <xen/types.h>
 #include <xen/elf.h>
@@ -71,7 +71,7 @@ typedef struct crash_xen_info {
 #endif
 } crash_xen_info_t;
 
-#endif /* __ELFCOREC_H__ */
+#endif /* XEN__ELFCORE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/elfstructs.h b/xen/include/xen/elfstructs.h
index eb6b87a823..df4712c21a 100644
--- a/xen/include/xen/elfstructs.h
+++ b/xen/include/xen/elfstructs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_ELFSTRUCTS_H__
-#define __XEN_ELFSTRUCTS_H__
+#ifndef XEN__ELFSTRUCTS_H
+#define XEN__ELFSTRUCTS_H
 /*
  * Copyright (c) 1995, 1996 Erik Theisen.  All rights reserved.
  *
@@ -620,4 +620,4 @@ typedef struct {
 #define AuxInfo		Aux64Info
 #endif
 
-#endif /* __XEN_ELFSTRUCTS_H__ */
+#endif /* XEN__ELFSTRUCTS_H */
diff --git a/xen/include/xen/err.h b/xen/include/xen/err.h
index cbdd1bf7f8..52ac753425 100644
--- a/xen/include/xen/err.h
+++ b/xen/include/xen/err.h
@@ -1,5 +1,5 @@
-#if !defined(__XEN_ERR_H__) && !defined(__ASSEMBLY__)
-#define __XEN_ERR_H__
+#if !defined(XEN__ERR_H) && !defined(__ASSEMBLY__)
+#define XEN__ERR_H
 
 #include <xen/compiler.h>
 #include <xen/errno.h>
@@ -41,4 +41,4 @@ static inline int __must_check PTR_RET(const void *ptr)
 	return IS_ERR(ptr) ? PTR_ERR(ptr) : 0;
 }
 
-#endif /* __XEN_ERR_H__ */
+#endif /* XEN__ERR_H */
diff --git a/xen/include/xen/errno.h b/xen/include/xen/errno.h
index 506674701f..bb99a2fdd8 100644
--- a/xen/include/xen/errno.h
+++ b/xen/include/xen/errno.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_ERRNO_H__
-#define __XEN_ERRNO_H__
+#ifndef XEN__ERRNO_H
+#define XEN__ERRNO_H
 
 #ifndef __ASSEMBLY__
 
@@ -15,4 +15,4 @@ enum {
 
 #endif /* __ASSEMBLY__ */
 
-#endif /*  __XEN_ERRNO_H__ */
+#endif /*  XEN__ERRNO_H */
diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h
index 48b79f3d62..e0643abe53 100644
--- a/xen/include/xen/event.h
+++ b/xen/include/xen/event.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2002-2006, K A Fraser
  */
 
-#ifndef __XEN_EVENT_H__
-#define __XEN_EVENT_H__
+#ifndef XEN__EVENT_H
+#define XEN__EVENT_H
 
 #include <xen/sched.h>
 #include <xen/smp.h>
@@ -302,4 +302,4 @@ static inline int evtchn_port_poll(struct domain *d, evtchn_port_t port)
     return rc;
 }
 
-#endif /* __XEN_EVENT_H__ */
+#endif /* XEN__EVENT_H */
diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h
index 50edfecfb6..31e56925a7 100644
--- a/xen/include/xen/grant_table.h
+++ b/xen/include/xen/grant_table.h
@@ -20,8 +20,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_GRANT_TABLE_H__
-#define __XEN_GRANT_TABLE_H__
+#ifndef XEN__GRANT_TABLE_H
+#define XEN__GRANT_TABLE_H
 
 #include <xen/mm-frame.h>
 #include <xen/rwlock.h>
@@ -117,4 +117,4 @@ static inline int gnttab_acquire_resource(
 
 #endif /* CONFIG_GRANT_TABLE */
 
-#endif /* __XEN_GRANT_TABLE_H__ */
+#endif /* XEN__GRANT_TABLE_H */
diff --git a/xen/include/xen/guest_access.h b/xen/include/xen/guest_access.h
index 6489924db6..62b7d8838c 100644
--- a/xen/include/xen/guest_access.h
+++ b/xen/include/xen/guest_access.h
@@ -4,8 +4,8 @@
  * Copyright (x) 2006, K A Fraser
  */
 
-#ifndef __XEN_GUEST_ACCESS_H__
-#define __XEN_GUEST_ACCESS_H__
+#ifndef XEN__GUEST_ACCESS_H
+#define XEN__GUEST_ACCESS_H
 
 #include <asm/guest_access.h>
 #include <xen/types.h>
@@ -186,7 +186,7 @@
 char *safe_copy_string_from_guest(XEN_GUEST_HANDLE(char) u_buf,
                                   size_t size, size_t max_size);
 
-#endif /* __XEN_GUEST_ACCESS_H__ */
+#endif /* XEN__GUEST_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/gunzip.h b/xen/include/xen/gunzip.h
index 805833127a..12fa062b87 100644
--- a/xen/include/xen/gunzip.h
+++ b/xen/include/xen/gunzip.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_GUNZIP_H
-#define __XEN_GUNZIP_H
+#ifndef XEN__GUNZIP_H
+#define XEN__GUNZIP_H
 
 int gzip_check(char *image, unsigned long image_len);
 int perform_gunzip(char *output, char *image, unsigned long image_len);
diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h
index f307dfb597..93263390f9 100644
--- a/xen/include/xen/hypercall.h
+++ b/xen/include/xen/hypercall.h
@@ -2,8 +2,8 @@
  * hypercall.h
  */
 
-#ifndef __XEN_HYPERCALL_H__
-#define __XEN_HYPERCALL_H__
+#ifndef XEN__HYPERCALL_H
+#define XEN__HYPERCALL_H
 
 #include <xen/types.h>
 #include <xen/time.h>
@@ -58,4 +58,4 @@ common_vcpu_op(int cmd,
 
 void arch_get_xen_caps(xen_capabilities_info_t *info);
 
-#endif /* __XEN_HYPERCALL_H__ */
+#endif /* XEN__HYPERCALL_H */
diff --git a/xen/include/xen/init.h b/xen/include/xen/init.h
index 0a42238337..39ad1d71d4 100644
--- a/xen/include/xen/init.h
+++ b/xen/include/xen/init.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_INIT_H
-#define _LINUX_INIT_H
+#ifndef XEN__INIT_H
+#define XEN__INIT_H
 
 /*
  * Mark functions and data as being only used at initialization
@@ -82,4 +82,4 @@ void do_initcalls(void);
 #define __hwdom_initdata  __initdata
 #endif
 
-#endif /* _LINUX_INIT_H */
+#endif /* XEN__INIT_H */
diff --git a/xen/include/xen/inttypes.h b/xen/include/xen/inttypes.h
index 28c0053f1c..b7172f8746 100644
--- a/xen/include/xen/inttypes.h
+++ b/xen/include/xen/inttypes.h
@@ -18,8 +18,8 @@
  *	ISO C99: 7.8 Format conversion of integer types	<inttypes.h>
  */
 
-#ifndef _XEN_INTTYPES_H
-#define _XEN_INTTYPES_H	1
+#ifndef XEN__INTTYPES_H
+#define XEN__INTTYPES_H	1
 
 #include <xen/types.h>
 
@@ -245,4 +245,4 @@
 # define SCNuPTR	__PRIPTR_PREFIX "u"
 # define SCNxPTR	__PRIPTR_PREFIX "x"
 
-#endif /* _XEN_INTTYPES_H */
+#endif /* XEN__INTTYPES_H */
diff --git a/xen/include/xen/iocap.h b/xen/include/xen/iocap.h
index ffbc48b60f..c9ec5c931b 100644
--- a/xen/include/xen/iocap.h
+++ b/xen/include/xen/iocap.h
@@ -4,8 +4,8 @@
  * Per-domain I/O capabilities.
  */
 
-#ifndef __XEN_IOCAP_H__
-#define __XEN_IOCAP_H__
+#ifndef XEN__IOCAP_H
+#define XEN__IOCAP_H
 
 #include <xen/sched.h>
 #include <xen/rangeset.h>
@@ -66,4 +66,4 @@ static inline int iomem_deny_access(struct domain *d, unsigned long s,
     ? irq__ : 0;                                        \
 })
 
-#endif /* __XEN_IOCAP_H__ */
+#endif /* XEN__IOCAP_H */
diff --git a/xen/include/xen/ioreq.h b/xen/include/xen/ioreq.h
index 29a17e8ff5..ce54ff2d57 100644
--- a/xen/include/xen/ioreq.h
+++ b/xen/include/xen/ioreq.h
@@ -16,8 +16,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_IOREQ_H__
-#define __XEN_IOREQ_H__
+#ifndef XEN__IOREQ_H
+#define XEN__IOREQ_H
 
 #include <xen/sched.h>
 
@@ -138,7 +138,7 @@ bool arch_ioreq_server_get_type_addr(const struct domain *d, const ioreq_t *p,
                                      uint8_t *type, uint64_t *addr);
 void arch_ioreq_domain_init(struct domain *d);
 
-#endif /* __XEN_IOREQ_H__ */
+#endif /* XEN__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h
index 95034c0d6b..c037e104c3 100644
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_IRQ_H__
-#define __XEN_IRQ_H__
+#ifndef XEN__IRQ_H
+#define XEN__IRQ_H
 
 #include <xen/cpumask.h>
 #include <xen/rcupdate.h>
@@ -211,4 +211,4 @@ unsigned int arch_hwdom_irqs(const struct domain *d);
 void arch_evtchn_bind_pirq(struct domain *d, int pirq);
 #endif
 
-#endif /* __XEN_IRQ_H__ */
+#endif /* XEN__IRQ_H */
diff --git a/xen/include/xen/irq_cpustat.h b/xen/include/xen/irq_cpustat.h
index b9629f25c2..81e8f87d49 100644
--- a/xen/include/xen/irq_cpustat.h
+++ b/xen/include/xen/irq_cpustat.h
@@ -1,5 +1,5 @@
-#ifndef __irq_cpustat_h
-#define __irq_cpustat_h
+#ifndef XEN__IRQ_CPUSTAT_H
+#define XEN__IRQ_CPUSTAT_H
 
 /*
  * Contains default mappings for irq_cpustat_t, used by almost every
@@ -26,4 +26,4 @@ extern irq_cpustat_t irq_stat[];
 #define local_irq_count(cpu)	__IRQ_STAT((cpu), __local_irq_count)
 #define mwait_wakeup(cpu)	__IRQ_STAT((cpu), __mwait_wakeup)
 
-#endif	/* __irq_cpustat_h */
+#endif	/* XEN__IRQ_CPUSTAT_H */
diff --git a/xen/include/xen/kconfig.h b/xen/include/xen/kconfig.h
index c25dc0f6c2..820836b0a1 100644
--- a/xen/include/xen/kconfig.h
+++ b/xen/include/xen/kconfig.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KCONFIG_H
-#define __XEN_KCONFIG_H
+#ifndef XEN__KCONFIG_H
+#define XEN__KCONFIG_H
 
 #include <generated/autoconf.h>
 
@@ -46,4 +46,4 @@
 #define STATIC_IF_NOT(option) static_if_not(option)
 #endif
 
-#endif /* __XEN_KCONFIG_H */
+#endif /* XEN__KCONFIG_H */
diff --git a/xen/include/xen/kernel.h b/xen/include/xen/kernel.h
index c5b6cc9777..3b6687e990 100644
--- a/xen/include/xen/kernel.h
+++ b/xen/include/xen/kernel.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_KERNEL_H
-#define _LINUX_KERNEL_H
+#ifndef XEN__KERNEL_H
+#define XEN__KERNEL_H
 
 /*
  * 'kernel.h' contains some often-used function prototypes etc
@@ -100,5 +100,5 @@ struct vcpu;
 void cf_check show_execution_state(const struct cpu_user_regs *regs);
 void vcpu_show_execution_state(struct vcpu *v);
 
-#endif /* _LINUX_KERNEL_H */
+#endif /* XEN__KERNEL_H */
 
diff --git a/xen/include/xen/keyhandler.h b/xen/include/xen/keyhandler.h
index 6fee878fdf..5362e6de04 100644
--- a/xen/include/xen/keyhandler.h
+++ b/xen/include/xen/keyhandler.h
@@ -7,8 +7,8 @@
  * nicer fashion than just editing the serial/keyboard drivers.
  */
 
-#ifndef __XEN_KEYHANDLER_H__
-#define __XEN_KEYHANDLER_H__
+#ifndef XEN__KEYHANDLER_H
+#define XEN__KEYHANDLER_H
 
 #include <xen/types.h>
 
@@ -57,4 +57,4 @@ enum crash_reason {
 
 void keyhandler_crash_action(enum crash_reason reason);
 
-#endif /* __XEN_KEYHANDLER_H__ */
+#endif /* XEN__KEYHANDLER_H */
diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h
index 81b722ea3e..5d75fca614 100644
--- a/xen/include/xen/lib.h
+++ b/xen/include/xen/lib.h
@@ -1,5 +1,5 @@
-#ifndef __LIB_H__
-#define __LIB_H__
+#ifndef XEN__LIB_H
+#define XEN__LIB_H
 
 #include <xen/macros.h>
 
@@ -202,4 +202,4 @@ void *bsearch(const void *key, const void *base, size_t num, size_t size,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __LIB_H__ */
+#endif /* XEN__LIB_H */
diff --git a/xen/include/xen/libelf.h b/xen/include/xen/libelf.h
index a99d33c251..82151e3292 100644
--- a/xen/include/xen/libelf.h
+++ b/xen/include/xen/libelf.h
@@ -20,8 +20,8 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#ifndef __XEN_LIBELF_H__
-#define __XEN_LIBELF_H__
+#ifndef XEN__LIBELF_H
+#define XEN__LIBELF_H
 
 #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || defined(__aarch64__)
 #define XEN_ELF_LITTLE_ENDIAN
@@ -504,4 +504,4 @@ static inline void ELF_ADVANCE_DEST(struct elf_binary *elf, uint64_t amount)
  * is in use or until elf_set_xdest(,0,0) is called. */
 void elf_set_xdest(struct elf_binary *elf, void *addr, uint64_t size);
 
-#endif /* __XEN_LIBELF_H__ */
+#endif /* XEN__LIBELF_H */
diff --git a/xen/include/xen/linkage.h b/xen/include/xen/linkage.h
index 3d401b88c1..a81300ccff 100644
--- a/xen/include/xen/linkage.h
+++ b/xen/include/xen/linkage.h
@@ -1,5 +1,5 @@
-#ifndef __LINKAGE_H__
-#define __LINKAGE_H__
+#ifndef XEN__LINKAGE_H
+#define XEN__LINKAGE_H
 
 #ifdef __ASSEMBLY__
 
@@ -64,4 +64,4 @@
 
 #endif /*  __ASSEMBLY__ */
 
-#endif /* __LINKAGE_H__ */
+#endif /* XEN__LINKAGE_H */
diff --git a/xen/include/xen/linux-compat.h b/xen/include/xen/linux-compat.h
index 1f4186102a..32f08b03f0 100644
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -6,8 +6,8 @@
  * files.
  */
 
-#ifndef __XEN_LINUX_COMPAT_H__
-#define __XEN_LINUX_COMPAT_H__
+#ifndef XEN__LINUX_COMPAT_H
+#define XEN__LINUX_COMPAT_H
 
 #include <xen/types.h>
 
@@ -21,4 +21,4 @@ typedef paddr_t phys_addr_t;
 
 #define __ffs(x) (ffsl(x) - 1UL)
 
-#endif /* __XEN_LINUX_COMPAT_H__ */
+#endif /* XEN__LINUX_COMPAT_H */
diff --git a/xen/include/xen/list.h b/xen/include/xen/list.h
index 62169f4674..4cfb196940 100644
--- a/xen/include/xen/list.h
+++ b/xen/include/xen/list.h
@@ -4,8 +4,8 @@
  * Useful linked-list definitions taken from the Linux kernel (2.6.18).
  */
 
-#ifndef __XEN_LIST_H__
-#define __XEN_LIST_H__
+#ifndef XEN__LIST_H
+#define XEN__LIST_H
 
 #include <xen/bug.h>
 #include <asm/system.h>
@@ -979,4 +979,4 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev,
           ({ tpos = hlist_entry(pos, typeof(*(tpos)), member); 1;});    \
           (pos) = (pos)->next)
 
-#endif /* __XEN_LIST_H__ */
+#endif /* XEN__LIST_H */
diff --git a/xen/include/xen/list_sort.h b/xen/include/xen/list_sort.h
index 13ce0a55ec..9ec309ac83 100644
--- a/xen/include/xen/list_sort.h
+++ b/xen/include/xen/list_sort.h
@@ -1,5 +1,5 @@
-#ifndef _LINUX_LIST_SORT_H
-#define _LINUX_LIST_SORT_H
+#ifndef XEN__LIST_SORT_H
+#define XEN__LIST_SORT_H
 
 #include <xen/types.h>
 
diff --git a/xen/include/xen/lz4.h b/xen/include/xen/lz4.h
index fa20520110..fd11d01ef9 100644
--- a/xen/include/xen/lz4.h
+++ b/xen/include/xen/lz4.h
@@ -1,5 +1,5 @@
-#ifndef __LZ4_H__
-#define __LZ4_H__
+#ifndef XEN__LZ4_H
+#define XEN__LZ4_H
 
 /*
  * LZ4 Kernel Interface
diff --git a/xen/include/xen/lzo.h b/xen/include/xen/lzo.h
index e920027fad..7d3949e3f1 100644
--- a/xen/include/xen/lzo.h
+++ b/xen/include/xen/lzo.h
@@ -1,5 +1,5 @@
-#ifndef __LZO_H__
-#define __LZO_H__
+#ifndef XEN__LZO_H
+#define XEN__LZO_H
 /*
  *  LZO Public Kernel Interface
  *  A mini subset of the LZO real-time data compression library
diff --git a/xen/include/xen/macros.h b/xen/include/xen/macros.h
index 19caaa8026..9e470c7649 100644
--- a/xen/include/xen/macros.h
+++ b/xen/include/xen/macros.h
@@ -1,5 +1,5 @@
-#ifndef __MACROS_H__
-#define __MACROS_H__
+#ifndef XEN__MACROS_H
+#define XEN__MACROS_H
 
 #define ROUNDUP(x, a) (((x) + (a) - 1) & ~((a) - 1))
 
@@ -147,7 +147,7 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MACROS_H__ */
+#endif /* XEN__MACROS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/mm-frame.h b/xen/include/xen/mm-frame.h
index d973aec901..d8dffe22d6 100644
--- a/xen/include/xen/mm-frame.h
+++ b/xen/include/xen/mm-frame.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_FRAME_NUM_H__
-#define __XEN_FRAME_NUM_H__
+#ifndef XEN__MM_FRAME_H
+#define XEN__MM_FRAME_H
 
 #include <xen/kernel.h>
 #include <xen/typesafe.h>
@@ -85,4 +85,4 @@ TYPE_SAFE(unsigned long, pfn);
 #define pfn_x
 #endif
 
-#endif /* __XEN_FRAME_NUM_H__ */
+#endif /* XEN__MM_FRAME_H */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 7561297a75..3a64b013c4 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -58,8 +58,8 @@
  *   documented, meanings.
  */
 
-#ifndef __XEN_MM_H__
-#define __XEN_MM_H__
+#ifndef XEN__MM_H
+#define XEN__MM_H
 
 #include <xen/bug.h>
 #include <xen/compiler.h>
@@ -648,4 +648,4 @@ static inline void put_page_alloc_ref(struct page_info *page)
     }
 }
 
-#endif /* __XEN_MM_H__ */
+#endif /* XEN__MM_H */
diff --git a/xen/include/xen/msi.h b/xen/include/xen/msi.h
index c903d0050c..4e462881ae 100644
--- a/xen/include/xen/msi.h
+++ b/xen/include/xen/msi.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_MSI_H_
-#define __XEN_MSI_H_
+#ifndef XEN__MSI_H
+#define XEN__MSI_H
 
 #include <xen/pci.h>
 
diff --git a/xen/include/xen/multiboot.h b/xen/include/xen/multiboot.h
index 80a1761d9e..30959a5bb6 100644
--- a/xen/include/xen/multiboot.h
+++ b/xen/include/xen/multiboot.h
@@ -14,8 +14,8 @@
    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 __MULTIBOOT_H__
-#define __MULTIBOOT_H__
+#ifndef XEN__MULTIBOOT_H
+#define XEN__MULTIBOOT_H
 
 #include "const.h"
 
@@ -130,4 +130,4 @@ typedef struct memory_map memory_map_t;
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MULTIBOOT_H__ */
+#endif /* XEN__MULTIBOOT_H */
diff --git a/xen/include/xen/multiboot2.h b/xen/include/xen/multiboot2.h
index f792040205..20c6082ea9 100644
--- a/xen/include/xen/multiboot2.h
+++ b/xen/include/xen/multiboot2.h
@@ -23,8 +23,8 @@
  *  IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-#ifndef __MULTIBOOT2_H__
-#define __MULTIBOOT2_H__
+#ifndef XEN__MULTIBOOT2_H
+#define XEN__MULTIBOOT2_H
 
 /* The magic field should contain this.  */
 #define MULTIBOOT2_HEADER_MAGIC                         0xe85250d6
@@ -232,4 +232,4 @@ typedef struct {
 } multiboot2_tag_module_t;
 #endif /* __ASSEMBLY__ */
 
-#endif /* __MULTIBOOT2_H__ */
+#endif /* XEN__MULTIBOOT2_H */
diff --git a/xen/include/xen/multicall.h b/xen/include/xen/multicall.h
index 5bebeca7b2..fd71dbd9a1 100644
--- a/xen/include/xen/multicall.h
+++ b/xen/include/xen/multicall.h
@@ -2,8 +2,8 @@
  * multicall.h
  */
 
-#ifndef __XEN_MULTICALL_H__
-#define __XEN_MULTICALL_H__
+#ifndef XEN__MULTICALL_H
+#define XEN__MULTICALL_H
 
 #ifdef CONFIG_COMPAT
 #include <compat/xen.h>
@@ -27,4 +27,4 @@ enum mc_disposition {
     mc_preempt,
 } arch_do_multicall_call(struct mc_state *mcs);
 
-#endif /* __XEN_MULTICALL_H__ */
+#endif /* XEN__MULTICALL_H */
diff --git a/xen/include/xen/nodemask.h b/xen/include/xen/nodemask.h
index 1dd6c7458e..8cab82c7a2 100644
--- a/xen/include/xen/nodemask.h
+++ b/xen/include/xen/nodemask.h
@@ -1,5 +1,5 @@
-#ifndef __LINUX_NODEMASK_H
-#define __LINUX_NODEMASK_H
+#ifndef XEN__NODEMASK_H
+#define XEN__NODEMASK_H
 
 /*
  * Nodemasks provide a bitmap suitable for representing the
@@ -290,4 +290,4 @@ extern nodemask_t node_online_map;
 
 #define for_each_online_node(node) for_each_node_mask((node), node_online_map)
 
-#endif /* __LINUX_NODEMASK_H */
+#endif /* XEN__NODEMASK_H */
diff --git a/xen/include/xen/nospec.h b/xen/include/xen/nospec.h
index 828dbd4e0a..99e6d5a6e9 100644
--- a/xen/include/xen/nospec.h
+++ b/xen/include/xen/nospec.h
@@ -4,8 +4,8 @@
 /* Copyright(c) 2018 Intel Corporation. All rights reserved. */
 /* Copyright(c) 2018 Citrix Systems R&D Ltd. All rights reserved. */
 
-#ifndef XEN_NOSPEC_H
-#define XEN_NOSPEC_H
+#ifndef XEN__NOSPEC_H
+#define XEN__NOSPEC_H
 
 #include <xen/stdbool.h>
 
@@ -87,7 +87,7 @@ static always_inline bool lock_evaluate_nospec(bool condition)
 #endif
 }
 
-#endif /* XEN_NOSPEC_H */
+#endif /* XEN__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/notifier.h b/xen/include/xen/notifier.h
index 05359e8a85..e2ce641311 100644
--- a/xen/include/xen/notifier.h
+++ b/xen/include/xen/notifier.h
@@ -7,8 +7,8 @@
  * Original code from Linux kernel 2.6.27 (Alan Cox <Alan.Cox@linux.org>)
  */
  
-#ifndef __XEN_NOTIFIER_H__
-#define __XEN_NOTIFIER_H__
+#ifndef XEN__NOTIFIER_H
+#define XEN__NOTIFIER_H
 
 #include <xen/types.h>
 #include <xen/errno.h>
@@ -68,4 +68,4 @@ static inline int notifier_to_errno(int ret)
     return (ret == NOTIFY_DONE) ? 0 : -(ret & ~NOTIFY_STOP_MASK);
 }
 
-#endif /* __XEN_NOTIFIER_H__ */
+#endif /* XEN__NOTIFIER_H */
diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
index fd1511a6fb..1617901fc2 100644
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_NUMA_H
-#define _XEN_NUMA_H
+#ifndef XEN__NUMA_H
+#define XEN__NUMA_H
 
 #include <xen/mm-frame.h>
 
@@ -135,4 +135,4 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
 
 #define page_to_nid(pg) mfn_to_nid(page_to_mfn(pg))
 
-#endif /* _XEN_NUMA_H */
+#endif /* XEN__NUMA_H */
diff --git a/xen/include/xen/p2m-common.h b/xen/include/xen/p2m-common.h
index a322e738ef..7cee4c92f2 100644
--- a/xen/include/xen/p2m-common.h
+++ b/xen/include/xen/p2m-common.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_P2M_COMMON_H
-#define _XEN_P2M_COMMON_H
+#ifndef XEN__P2M_COMMON_H
+#define XEN__P2M_COMMON_H
 
 #include <xen/mm-frame.h>
 
@@ -41,4 +41,4 @@ int __must_check check_get_page_from_gfn(struct domain *d, gfn_t gfn,
                                          struct page_info **page_p);
 
 
-#endif /* _XEN_P2M_COMMON_H */
+#endif /* XEN__P2M_COMMON_H */
diff --git a/xen/include/xen/page-defs.h b/xen/include/xen/page-defs.h
index 682da6b7b4..c06f247921 100644
--- a/xen/include/xen/page-defs.h
+++ b/xen/include/xen/page-defs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PAGE_DEFS_H__
-#define __XEN_PAGE_DEFS_H__
+#ifndef XEN__PAGE_DEFS_H
+#define XEN__PAGE_DEFS_H
 
 /* Helpers for different page granularities. */
 #define PAGE_SIZE_GRAN(gran)        ((paddr_t)1 << PAGE_SHIFT_##gran)
@@ -32,4 +32,4 @@
 #define PAGE_MASK_1G                PAGE_MASK_GRAN(1G)
 #define PAGE_ALIGN_1G(addr)         PAGE_ALIGN_GRAN(1G, addr)
 
-#endif /* __XEN_PAGE_DEFS_H__ */
+#endif /* XEN__PAGE_DEFS_H */
diff --git a/xen/include/xen/page-size.h b/xen/include/xen/page-size.h
index 78ea57f324..b2a346e6b1 100644
--- a/xen/include/xen/page-size.h
+++ b/xen/include/xen/page-size.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PAGE_SIZE_H__
-#define __XEN_PAGE_SIZE_H__
+#ifndef XEN__PAGE_SIZE_H
+#define XEN__PAGE_SIZE_H
 
 #include <xen/const.h>
 #include <asm/page-bits.h>
diff --git a/xen/include/xen/paging.h b/xen/include/xen/paging.h
index a126c9bf58..08580a4c73 100644
--- a/xen/include/xen/paging.h
+++ b/xen/include/xen/paging.h
@@ -1,7 +1,7 @@
-#ifndef __XEN_PAGING_H__
-#define __XEN_PAGING_H__
+#ifndef XEN__PAGING_H
+#define XEN__PAGING_H
 
 #include <asm/paging.h>
 #include <asm/p2m.h>
 
-#endif /* __XEN_PAGING_H__ */
+#endif /* XEN__PAGING_H */
diff --git a/xen/include/xen/param.h b/xen/include/xen/param.h
index 1bdbab34ab..970af8d779 100644
--- a/xen/include/xen/param.h
+++ b/xen/include/xen/param.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_PARAM_H
-#define _XEN_PARAM_H
+#ifndef XEN__PARAM_H
+#define XEN__PARAM_H
 
 #include <xen/bug.h>
 #include <xen/hypfs.h>
@@ -196,4 +196,4 @@ static inline void no_config_param(const char *cfg, const char *param,
            cfg, param, len, s);
 }
 
-#endif /* _XEN_PARAM_H */
+#endif /* XEN__PARAM_H */
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index 63e49f0117..b8c6727d1b 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -4,8 +4,8 @@
  * PCI access functions.
  */
 
-#ifndef __XEN_PCI_H__
-#define __XEN_PCI_H__
+#ifndef XEN__PCI_H
+#define XEN__PCI_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -261,4 +261,4 @@ static inline int arch_pci_clean_pirqs(struct domain *d)
 }
 #endif /* CONFIG_HVM */
 
-#endif /* __XEN_PCI_H__ */
+#endif /* XEN__PCI_H */
diff --git a/xen/include/xen/pci_regs.h b/xen/include/xen/pci_regs.h
index 250ba106db..8a8f8e4b8e 100644
--- a/xen/include/xen/pci_regs.h
+++ b/xen/include/xen/pci_regs.h
@@ -19,8 +19,8 @@
  *	The Hypertransport I/O Link Specification
  */
 
-#ifndef LINUX_PCI_REGS_H
-#define LINUX_PCI_REGS_H
+#ifndef XEN__PCI_REGS_H
+#define XEN__PCI_REGS_H
 
 /*
  * Conventional PCI and PCI-X Mode 1 devices have 256 bytes of
@@ -616,4 +616,4 @@
 #define  PCI_SRIOV_VFM_MO	0x2	/* Active.MigrateOut */
 #define  PCI_SRIOV_VFM_AV	0x3	/* Active.Available */
 
-#endif /* LINUX_PCI_REGS_H */
+#endif /* XEN__PCI_REGS_H */
diff --git a/xen/include/xen/pdx.h b/xen/include/xen/pdx.h
index 23f3956db8..04a31e0629 100644
--- a/xen/include/xen/pdx.h
+++ b/xen/include/xen/pdx.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PDX_H__
-#define __XEN_PDX_H__
+#ifndef XEN__PDX_H
+#define XEN__PDX_H
 
 /*
  * PDX (Page inDeX)
@@ -239,7 +239,7 @@ static inline void pfn_pdx_hole_setup(unsigned long mask)
 }
 
 #endif /* CONFIG_PDX_COMPRESSION */
-#endif /* __XEN_PDX_H__ */
+#endif /* XEN__PDX_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/percpu.h b/xen/include/xen/percpu.h
index 57522f346b..2cc1ed4a3a 100644
--- a/xen/include/xen/percpu.h
+++ b/xen/include/xen/percpu.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PERCPU_H__
-#define __XEN_PERCPU_H__
+#ifndef XEN__PERCPU_H
+#define XEN__PERCPU_H
 
 #define DECLARE_PER_CPU(type, name) \
     extern __typeof__(type) per_cpu__ ## name
@@ -33,4 +33,4 @@
 #define get_cpu_var(var) this_cpu(var)
 #define put_cpu_var(var)
 
-#endif /* __XEN_PERCPU_H__ */
+#endif /* XEN__PERCPU_H */
diff --git a/xen/include/xen/perfc.h b/xen/include/xen/perfc.h
index f9009dc388..85fa4d8397 100644
--- a/xen/include/xen/perfc.h
+++ b/xen/include/xen/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PERFC_H__
-#define __XEN_PERFC_H__
+#ifndef XEN__PERFC_H
+#define XEN__PERFC_H
 
 #ifdef CONFIG_PERF_COUNTERS
 
@@ -116,4 +116,4 @@ extern void cf_check perfc_reset(unsigned char key);
 
 #endif /* CONFIG_PERF_COUNTERS */
 
-#endif /* __XEN_PERFC_H__ */
+#endif /* XEN__PERFC_H */
diff --git a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h
index 0027d95a60..38865b614e 100644
--- a/xen/include/xen/perfc_defn.h
+++ b/xen/include/xen/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef XEN__PERFC_DEFN_H*/
+/*#define XEN__PERFC_DEFN_H*/
 
 #include <asm/perfc_defn.h>
 
@@ -83,4 +83,4 @@ PERFCOUNTER(tickled_cpu_overridden, "csched2: tickled_cpu_overridden")
 
 PERFCOUNTER(need_flush_tlb_flush,   "PG_need_flush tlb flushes")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* XEN__PERFC_DEFN_H */
diff --git a/xen/include/xen/pfn.h b/xen/include/xen/pfn.h
index 1ca9b095e0..14fe4c8864 100644
--- a/xen/include/xen/pfn.h
+++ b/xen/include/xen/pfn.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PFN_H__
-#define __XEN_PFN_H__
+#ifndef XEN__PFN_H
+#define XEN__PFN_H
 
 #include <xen/page-size.h>
 
@@ -9,4 +9,4 @@
 #define round_pgup(p)    (((p) + (PAGE_SIZE - 1)) & PAGE_MASK)
 #define round_pgdown(p)  ((p) & PAGE_MASK)
 
-#endif /* __XEN_PFN_H__ */
+#endif /* XEN__PFN_H */
diff --git a/xen/include/xen/pmap.h b/xen/include/xen/pmap.h
index 93e61b1087..7da30c1240 100644
--- a/xen/include/xen/pmap.h
+++ b/xen/include/xen/pmap.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PMAP_H__
-#define __XEN_PMAP_H__
+#ifndef XEN__PMAP_H
+#define XEN__PMAP_H
 
 /* Large enough for mapping 5 levels of page tables with some headroom */
 #define NUM_FIX_PMAP 8
@@ -13,4 +13,4 @@ void pmap_unmap(const void *p);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_PMAP_H__ */
+#endif /* XEN__PMAP_H */
diff --git a/xen/include/xen/pmstat.h b/xen/include/xen/pmstat.h
index e6ab1423a9..38837ed8e3 100644
--- a/xen/include/xen/pmstat.h
+++ b/xen/include/xen/pmstat.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PMSTAT_H_
-#define __XEN_PMSTAT_H_
+#ifndef XEN__PMSTAT_H
+#define XEN__PMSTAT_H
 
 #include <xen/types.h>
 #include <public/platform.h> /* for struct xen_processor_power */
@@ -14,4 +14,4 @@ int pmstat_reset_cx_stat(unsigned int cpu);
 int do_get_pm_info(struct xen_sysctl_get_pmstat *op);
 int do_pm_op(struct xen_sysctl_pm_op *op);
 
-#endif /* __XEN_PMSTAT_H_ */
+#endif /* XEN__PMSTAT_H */
diff --git a/xen/include/xen/preempt.h b/xen/include/xen/preempt.h
index aa059b497b..c1a41ba330 100644
--- a/xen/include/xen/preempt.h
+++ b/xen/include/xen/preempt.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2010, Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_PREEMPT_H__
-#define __XEN_PREEMPT_H__
+#ifndef XEN__PREEMPT_H
+#define XEN__PREEMPT_H
 
 #include <xen/types.h>
 #include <xen/percpu.h>
@@ -34,4 +34,4 @@ void ASSERT_NOT_IN_ATOMIC(void);
 #define ASSERT_NOT_IN_ATOMIC() ((void)0)
 #endif
 
-#endif /* __XEN_PREEMPT_H__ */
+#endif /* XEN__PREEMPT_H */
diff --git a/xen/include/xen/prefetch.h b/xen/include/xen/prefetch.h
index 85831f953f..70f4780285 100644
--- a/xen/include/xen/prefetch.h
+++ b/xen/include/xen/prefetch.h
@@ -7,8 +7,8 @@
  *
  */
 
-#ifndef _LINUX_PREFETCH_H
-#define _LINUX_PREFETCH_H
+#ifndef XEN__PREFETCH_H
+#define XEN__PREFETCH_H
 
 #include <asm/processor.h>
 #include <asm/cache.h>
diff --git a/xen/include/xen/pv_console.h b/xen/include/xen/pv_console.h
index 2133aa71cb..5c984dd543 100644
--- a/xen/include/xen/pv_console.h
+++ b/xen/include/xen/pv_console.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_PV_CONSOLE_H__
-#define __XEN_PV_CONSOLE_H__
+#ifndef XEN__PV_CONSOLE_H
+#define XEN__PV_CONSOLE_H
 
 #include <xen/serial.h>
 
@@ -21,7 +21,7 @@ static inline void pv_console_puts(const char *buf, size_t nr) { }
 static inline size_t pv_console_rx(void) { return 0; }
 
 #endif /* !CONFIG_XEN_GUEST */
-#endif /* __XEN_PV_CONSOLE_H__ */
+#endif /* XEN__PV_CONSOLE_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/radix-tree.h b/xen/include/xen/radix-tree.h
index 58c40312e6..4a3ad62702 100644
--- a/xen/include/xen/radix-tree.h
+++ b/xen/include/xen/radix-tree.h
@@ -16,8 +16,8 @@
  * 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_RADIX_TREE_H
-#define _XEN_RADIX_TREE_H
+#ifndef XEN__RADIX_TREE_H
+#define XEN__RADIX_TREE_H
 
 #include <xen/types.h>
 #include <xen/lib.h>
@@ -224,4 +224,4 @@ unsigned long radix_tree_next_hole(struct radix_tree_root *root,
 unsigned long radix_tree_prev_hole(struct radix_tree_root *root,
 				unsigned long index, unsigned long max_scan);
 
-#endif /* _XEN_RADIX_TREE_H */
+#endif /* XEN__RADIX_TREE_H */
diff --git a/xen/include/xen/random.h b/xen/include/xen/random.h
index b950f03c0c..abb011d654 100644
--- a/xen/include/xen/random.h
+++ b/xen/include/xen/random.h
@@ -1,9 +1,9 @@
-#ifndef __XEN_RANDOM_H__
-#define __XEN_RANDOM_H__
+#ifndef XEN__RANDOM_H
+#define XEN__RANDOM_H
 
 unsigned int get_random(void);
 
 /* The value keeps unchange once initialized for each booting */
 extern unsigned int boot_random;
 
-#endif /* __XEN_RANDOM_H__ */
+#endif /* XEN__RANDOM_H */
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index 96c9180825..36bc2055a9 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2005, K A Fraser
  */
 
-#ifndef __XEN_RANGESET_H__
-#define __XEN_RANGESET_H__
+#ifndef XEN__RANGESET_H
+#define XEN__RANGESET_H
 
 #include <xen/types.h>
 
@@ -100,7 +100,7 @@ void rangeset_swap(struct rangeset *a, struct rangeset *b);
 void rangeset_domain_printk(
     struct domain *d);
 
-#endif /* __XEN_RANGESET_H__ */
+#endif /* XEN__RANGESET_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/rbtree.h b/xen/include/xen/rbtree.h
index 77bf57d4ab..a8c5215e06 100644
--- a/xen/include/xen/rbtree.h
+++ b/xen/include/xen/rbtree.h
@@ -90,8 +90,8 @@ static inline struct page * rb_insert_page_cache(struct inode * inode,
 -----------------------------------------------------------------------
 */
 
-#ifndef __RBTREE_H__
-#define __RBTREE_H__
+#ifndef XEN__RBTREE_H
+#define XEN__RBTREE_H
 
 struct rb_node {
 	unsigned long  __rb_parent_color;
@@ -139,4 +139,4 @@ static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,
 	*rb_link = node;
 }
 
-#endif /* __RBTREE_H__ */
+#endif /* XEN__RBTREE_H */
diff --git a/xen/include/xen/rcupdate.h b/xen/include/xen/rcupdate.h
index 95f4ad81c4..5e0a8328ee 100644
--- a/xen/include/xen/rcupdate.h
+++ b/xen/include/xen/rcupdate.h
@@ -28,8 +28,8 @@
  * http://lse.sourceforge.net/locking/rcupdate.html
  */
 
-#ifndef __XEN_RCUPDATE_H
-#define __XEN_RCUPDATE_H
+#ifndef XEN__RCUPDATE_H
+#define XEN__RCUPDATE_H
 
 #include <xen/compiler.h>
 #include <xen/spinlock.h>
@@ -179,4 +179,4 @@ void rcu_barrier(void);
 void rcu_idle_enter(unsigned int cpu);
 void rcu_idle_exit(unsigned int cpu);
 
-#endif /* __XEN_RCUPDATE_H */
+#endif /* XEN__RCUPDATE_H */
diff --git a/xen/include/xen/rwlock.h b/xen/include/xen/rwlock.h
index 4e78028218..129bba2a78 100644
--- a/xen/include/xen/rwlock.h
+++ b/xen/include/xen/rwlock.h
@@ -1,5 +1,5 @@
-#ifndef __RWLOCK_H__
-#define __RWLOCK_H__
+#ifndef XEN__RWLOCK_H
+#define XEN__RWLOCK_H
 
 #include <xen/percpu.h>
 #include <xen/preempt.h>
@@ -455,4 +455,4 @@ static inline void _percpu_write_unlock(percpu_rwlock_t **per_cpudata,
 #define DECLARE_PERCPU_RWLOCK_GLOBAL(name) DECLARE_PER_CPU(percpu_rwlock_t *, \
                                                            name)
 
-#endif /* __RWLOCK_H__ */
+#endif /* XEN__RWLOCK_H */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 90666576c2..968ec5f8db 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -1,6 +1,6 @@
 
-#ifndef __SCHED_H__
-#define __SCHED_H__
+#ifndef XEN__SCHED_H
+#define XEN__SCHED_H
 
 #include <xen/types.h>
 #include <xen/spinlock.h>
@@ -1276,7 +1276,7 @@ btcpupools_get_domain_pool_id(const struct dt_device_node *node)
 
 #endif
 
-#endif /* __SCHED_H__ */
+#endif /* XEN__SCHED_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/sections.h b/xen/include/xen/sections.h
index f2fac8d7fa..fbba123325 100644
--- a/xen/include/xen/sections.h
+++ b/xen/include/xen/sections.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __XEN_SECTIONS_H__
-#define __XEN_SECTIONS_H__
+#ifndef XEN__SECTIONS_H
+#define XEN__SECTIONS_H
 
 #include <xen/compiler.h>
 
@@ -27,7 +27,7 @@ extern char __init_begin[], __init_end[];
  */
 #define __ro_after_init __section(".data.ro_after_init")
 
-#endif /* !__XEN_SECTIONS_H__ */
+#endif /* !XEN__SECTIONS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/self-tests.h b/xen/include/xen/self-tests.h
index bd8a4867aa..149b48b804 100644
--- a/xen/include/xen/self-tests.h
+++ b/xen/include/xen/self-tests.h
@@ -4,8 +4,8 @@
  * Helpers for Xen self-tests of basic logic, including confirming that
  * examples which should be calculated by the compiler are.
  */
-#ifndef XEN_SELF_TESTS_H
-#define XEN_SELF_TESTS_H
+#ifndef XEN__SELF_TESTS_H
+#define XEN__SELF_TESTS_H
 
 #include <xen/lib.h>
 
@@ -59,4 +59,4 @@
         RUNTIME_CHECK(fn, val, res);            \
     } while ( 0 )
 
-#endif /* XEN_SELF_TESTS_H */
+#endif /* XEN__SELF_TESTS_H */
diff --git a/xen/include/xen/serial.h b/xen/include/xen/serial.h
index 3d21207a3d..1799c199ca 100644
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2003-2008, K A Fraser
  */
 
-#ifndef __XEN_SERIAL_H__
-#define __XEN_SERIAL_H__
+#ifndef XEN__SERIAL_H
+#define XEN__SERIAL_H
 
 #include <xen/init.h>
 #include <xen/spinlock.h>
@@ -174,7 +174,7 @@ int dbgp_op(const struct physdev_dbgp_op *op);
 /* Baud rate was pre-configured before invoking the UART driver. */
 #define BAUD_AUTO (-1)
 
-#endif /* __XEN_SERIAL_H__ */
+#endif /* XEN__SERIAL_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/shared.h b/xen/include/xen/shared.h
index 5b71342cab..31e1cca8c8 100644
--- a/xen/include/xen/shared.h
+++ b/xen/include/xen/shared.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SHARED_H__
-#define __XEN_SHARED_H__
+#ifndef XEN__SHARED_H
+#define XEN__SHARED_H
 
 #ifdef CONFIG_COMPAT
 
@@ -47,4 +47,4 @@ extern vcpu_info_t dummy_vcpu_info;
 #define vcpu_info(v, field)        \
         __vcpu_info(v, (vcpu_info_t *)(v)->vcpu_info_area.map, field)
 
-#endif /* __XEN_SHARED_H__ */
+#endif /* XEN__SHARED_H */
diff --git a/xen/include/xen/shutdown.h b/xen/include/xen/shutdown.h
index c7fa23aec1..9197b56d5f 100644
--- a/xen/include/xen/shutdown.h
+++ b/xen/include/xen/shutdown.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SHUTDOWN_H__
-#define __XEN_SHUTDOWN_H__
+#ifndef XEN__SHUTDOWN_H
+#define XEN__SHUTDOWN_H
 
 #include <xen/compiler.h>
 #include <xen/types.h>
@@ -12,4 +12,4 @@ void noreturn hwdom_shutdown(unsigned char reason);
 void noreturn machine_restart(unsigned int delay_millisecs);
 void noreturn machine_halt(void);
 
-#endif /* __XEN_SHUTDOWN_H__ */
+#endif /* XEN__SHUTDOWN_H */
diff --git a/xen/include/xen/sizes.h b/xen/include/xen/sizes.h
index f7b728ddab..16c1009fc2 100644
--- a/xen/include/xen/sizes.h
+++ b/xen/include/xen/sizes.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SIZES_H__
-#define __XEN_SIZES_H__
+#ifndef XEN__SIZES_H
+#define XEN__SIZES_H
 
 /*
  * Taken from kernel code include/linux/size.h
@@ -45,4 +45,4 @@
 #define SZ_1G                           0x40000000
 #define SZ_2G                           0x80000000
 
-#endif /* __XEN_SIZES_H__ */
+#endif /* XEN__SIZES_H */
diff --git a/xen/include/xen/smp.h b/xen/include/xen/smp.h
index 2ca9ff1bfc..faffb49704 100644
--- a/xen/include/xen/smp.h
+++ b/xen/include/xen/smp.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SMP_H__
-#define __XEN_SMP_H__
+#ifndef XEN__SMP_H
+#define XEN__SMP_H
 
 #include <asm/smp.h>
 
@@ -76,4 +76,4 @@ extern void *stack_base[NR_CPUS];
 void initialize_cpu_data(unsigned int cpu);
 int setup_cpu_root_pgt(unsigned int cpu);
 
-#endif /* __XEN_SMP_H__ */
+#endif /* XEN__SMP_H */
diff --git a/xen/include/xen/softirq.h b/xen/include/xen/softirq.h
index 33d6f2ecd2..6cceb109fa 100644
--- a/xen/include/xen/softirq.h
+++ b/xen/include/xen/softirq.h
@@ -1,5 +1,5 @@
-#if !defined(__XEN_SOFTIRQ_H__) && !defined(__ASSEMBLY__)
-#define __XEN_SOFTIRQ_H__
+#if !defined(XEN__SOFTIRQ_H) && !defined(__ASSEMBLY__)
+#define XEN__SOFTIRQ_H
 
 /* Low-latency softirqs come first in the following list. */
 enum {
@@ -40,4 +40,4 @@ void cpu_raise_softirq_batch_finish(void);
  */
 void process_pending_softirqs(void);
 
-#endif /* __XEN_SOFTIRQ_H__ */
+#endif /* XEN__SOFTIRQ_H */
diff --git a/xen/include/xen/sort.h b/xen/include/xen/sort.h
index b953286284..110a54637b 100644
--- a/xen/include/xen/sort.h
+++ b/xen/include/xen/sort.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_SORT_H__
-#define __XEN_SORT_H__
+#ifndef XEN__SORT_H
+#define XEN__SORT_H
 
 #include <xen/types.h>
 
@@ -60,4 +60,4 @@ void sort(void *base, size_t num, size_t size,
     }
 }
 
-#endif /* __XEN_SORT_H__ */
+#endif /* XEN__SORT_H */
diff --git a/xen/include/xen/spinlock.h b/xen/include/xen/spinlock.h
index 8825affb25..b84ac4d347 100644
--- a/xen/include/xen/spinlock.h
+++ b/xen/include/xen/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __SPINLOCK_H__
-#define __SPINLOCK_H__
+#ifndef XEN__SPINLOCK_H
+#define XEN__SPINLOCK_H
 
 #include <xen/nospec.h>
 #include <xen/time.h>
@@ -358,4 +358,4 @@ static always_inline void nrspin_lock_irq(rspinlock_t *l)
 #define nrspin_unlock_irqrestore(l, f) _nrspin_unlock_irqrestore(l, f)
 #define nrspin_unlock_irq(l)           _nrspin_unlock_irq(l)
 
-#endif /* __SPINLOCK_H__ */
+#endif /* XEN__SPINLOCK_H */
diff --git a/xen/include/xen/stdarg.h b/xen/include/xen/stdarg.h
index 29249a11a7..ec1f1d8378 100644
--- a/xen/include/xen/stdarg.h
+++ b/xen/include/xen/stdarg.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STDARG_H__
-#define __XEN_STDARG_H__
+#ifndef XEN__STDARG_H
+#define XEN__STDARG_H
 
 typedef __builtin_va_list va_list;
 #define va_copy(dest, src)    __builtin_va_copy((dest), (src))
@@ -7,4 +7,4 @@ typedef __builtin_va_list va_list;
 #define va_end(ap)            __builtin_va_end(ap)
 #define va_arg                __builtin_va_arg
 
-#endif /* __XEN_STDARG_H__ */
+#endif /* XEN__STDARG_H */
diff --git a/xen/include/xen/stdbool.h b/xen/include/xen/stdbool.h
index b0947a62b5..99f25d64f6 100644
--- a/xen/include/xen/stdbool.h
+++ b/xen/include/xen/stdbool.h
@@ -1,9 +1,9 @@
-#ifndef __XEN_STDBOOL_H__
-#define __XEN_STDBOOL_H__
+#ifndef XEN__STDBOOL_H
+#define XEN__STDBOOL_H
 
 #define bool _Bool
 #define true 1
 #define false 0
 #define __bool_true_false_are_defined   1
 
-#endif /* __XEN_STDBOOL_H__ */
+#endif /* XEN__STDBOOL_H */
diff --git a/xen/include/xen/stdint.h b/xen/include/xen/stdint.h
index a40165c6ae..1e4319fd0f 100644
--- a/xen/include/xen/stdint.h
+++ b/xen/include/xen/stdint.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __XEN_STDINT_H__
-#define __XEN_STDINT_H__
+#ifndef XEN__STDINT_H
+#define XEN__STDINT_H
 
 #ifndef __INT8_TYPE__ /* GCC <= 4.4 */
 
@@ -30,4 +30,4 @@ typedef __UINT64_TYPE__    uint64_t;
 
 #endif
 
-#endif /* __XEN_STDINT_H__ */
+#endif /* XEN__STDINT_H */
diff --git a/xen/include/xen/stop_machine.h b/xen/include/xen/stop_machine.h
index 0bbf71f112..7a3f22affc 100644
--- a/xen/include/xen/stop_machine.h
+++ b/xen/include/xen/stop_machine.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STOP_MACHINE_H__
-#define __XEN_STOP_MACHINE_H__
+#ifndef XEN__STOP_MACHINE_H
+#define XEN__STOP_MACHINE_H
 
 /**
  * stop_machine_run: freeze the machine on all CPUs and run this function
@@ -16,4 +16,4 @@
  * grabbing every spinlock in the kernel. */
 int stop_machine_run(int (*fn)(void *data), void *data, unsigned int cpu);
 
-#endif /* __XEN_STOP_MACHINE_H__ */
+#endif /* XEN__STOP_MACHINE_H */
diff --git a/xen/include/xen/string.h b/xen/include/xen/string.h
index bd4a8f48e9..0d7383ef9a 100644
--- a/xen/include/xen/string.h
+++ b/xen/include/xen/string.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STRING_H__
-#define __XEN_STRING_H__
+#ifndef XEN__STRING_H
+#define XEN__STRING_H
 
 #include <xen/types.h>	/* for size_t */
 
@@ -100,7 +100,7 @@ void *memchr_inv(const void *s, int c, size_t n);
     (strlcat(d, s, sizeof(d)) >= sizeof(d));    \
 })
 
-#endif /* __XEN_STRING_H__ */
+#endif /* XEN__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/stringify.h b/xen/include/xen/stringify.h
index 36808e0969..be4a979885 100644
--- a/xen/include/xen/stringify.h
+++ b/xen/include/xen/stringify.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_STRINGIFY_H
-#define __XEN_STRINGIFY_H
+#ifndef XEN__STRINGIFY_H
+#define XEN__STRINGIFY_H
 
 /* Indirect stringification.  Doing two levels allows the parameter to be a
  * macro itself.  For example, compile with -DFOO=bar, __stringify(FOO)
@@ -9,4 +9,4 @@
 #define __stringify_1(x...) #x
 #define __stringify(x...)   __stringify_1(x)
 
-#endif /* !__XEN_STRINGIFY_H */
+#endif /* !XEN__STRINGIFY_H */
diff --git a/xen/include/xen/symbols.h b/xen/include/xen/symbols.h
index 20bbb28ef2..d8adc03a07 100644
--- a/xen/include/xen/symbols.h
+++ b/xen/include/xen/symbols.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_SYMBOLS_H
-#define _XEN_SYMBOLS_H
+#ifndef XEN__SYMBOLS_H
+#define XEN__SYMBOLS_H
 
 #include <xen/types.h>
 
@@ -33,4 +33,4 @@ struct symbol_offset {
     uint32_t stream; /* .. in the compressed stream.*/
     uint32_t addr;   /* .. and in the fixed size address array. */
 };
-#endif /*_XEN_SYMBOLS_H*/
+#endif /*XEN__SYMBOLS_H*/
diff --git a/xen/include/xen/tasklet.h b/xen/include/xen/tasklet.h
index 78760b694a..55ff906a31 100644
--- a/xen/include/xen/tasklet.h
+++ b/xen/include/xen/tasklet.h
@@ -7,8 +7,8 @@
  * during per-tasklet initialisation.
  */
 
-#ifndef __XEN_TASKLET_H__
-#define __XEN_TASKLET_H__
+#ifndef XEN__TASKLET_H
+#define XEN__TASKLET_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -64,4 +64,4 @@ void softirq_tasklet_init(struct tasklet *t,
                           void (*func)(void *data), void *data);
 void tasklet_subsys_init(void);
 
-#endif /* __XEN_TASKLET_H__ */
+#endif /* XEN__TASKLET_H */
diff --git a/xen/include/xen/time.h b/xen/include/xen/time.h
index 67c586b736..cf515fcdeb 100644
--- a/xen/include/xen/time.h
+++ b/xen/include/xen/time.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2002-2005 K A Fraser
  */
 
-#ifndef __XEN_TIME_H__
-#define __XEN_TIME_H__
+#ifndef XEN__TIME_H
+#define XEN__TIME_H
 
 #include <xen/types.h>
 #include <public/xen.h>
@@ -77,7 +77,7 @@ void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds);
 
 #include <asm/time.h>
 
-#endif /* __XEN_TIME_H__ */
+#endif /* XEN__TIME_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/timer.h b/xen/include/xen/timer.h
index fb28517515..2fa5ba57ab 100644
--- a/xen/include/xen/timer.h
+++ b/xen/include/xen/timer.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2002-2005 K A Fraser
  */
 
-#ifndef _TIMER_H_
-#define _TIMER_H_
+#ifndef XEN__TIMER_H
+#define XEN__TIMER_H
 
 #include <xen/spinlock.h>
 #include <xen/time.h>
@@ -110,7 +110,7 @@ int reprogram_timer(s_time_t timeout);
 /* Calculate the aligned first tick time for a given periodic timer. */
 s_time_t align_timer(s_time_t firsttick, uint64_t period);
 
-#endif /* _TIMER_H_ */
+#endif /* XEN__TIMER_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/trace.h b/xen/include/xen/trace.h
index 914cecbc18..4bdbdeffa8 100644
--- a/xen/include/xen/trace.h
+++ b/xen/include/xen/trace.h
@@ -18,8 +18,8 @@
  * trace buffer contents can then be performed using a userland tool.
  */
 
-#ifndef __XEN_TRACE_H__
-#define __XEN_TRACE_H__
+#ifndef XEN__TRACE_H
+#define XEN__TRACE_H
 
 #include <xen/types.h>
 #include <public/sysctl.h>
@@ -91,4 +91,4 @@ static inline void trace_time(
 /* Create a trace record with time included. */
 #define TRACE_TIME(_e, ...) TRACE((_e) | TRC_HD_CYCLE_FLAG, ## __VA_ARGS__)
 
-#endif /* __XEN_TRACE_H__ */
+#endif /* XEN__TRACE_H */
diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h
index 1bcc5a474f..f8ca8a7958 100644
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -1,5 +1,5 @@
-#ifndef __TYPES_H__
-#define __TYPES_H__
+#ifndef XEN__TYPES_H
+#define XEN__TYPES_H
 
 #include <xen/stdbool.h>
 #include <xen/stdint.h>
@@ -64,4 +64,4 @@ typedef unsigned int __attribute__((__mode__(__pointer__))) uintptr_t;
 #define test_and_set_bool(b)   xchg(&(b), true)
 #define test_and_clear_bool(b) xchg(&(b), false)
 
-#endif /* __TYPES_H__ */
+#endif /* XEN__TYPES_H */
diff --git a/xen/include/xen/typesafe.h b/xen/include/xen/typesafe.h
index 7ecd3b4a8d..8898278e75 100644
--- a/xen/include/xen/typesafe.h
+++ b/xen/include/xen/typesafe.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_TYPESAFE_H__
-#define __XEN_TYPESAFE_H__
+#ifndef XEN__TYPESAFE_H
+#define XEN__TYPESAFE_H
 
 /*
  * Compiler games to gain type safety between different logical integers.
@@ -33,7 +33,7 @@
 
 #endif
 
-#endif /* __XEN_TYPESAFE_H__ */
+#endif /* XEN__TYPESAFE_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/unaligned.h b/xen/include/xen/unaligned.h
index d9bb599e65..d4e35c13e5 100644
--- a/xen/include/xen/unaligned.h
+++ b/xen/include/xen/unaligned.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __XEN_UNALIGNED_H__
-#define __XEN_UNALIGNED_H__
+#ifndef XEN__UNALIGNED_H
+#define XEN__UNALIGNED_H
 
 #ifdef __XEN__
 #include <xen/types.h>
@@ -85,4 +85,4 @@ static inline void put_unaligned_le64(uint64_t val, void *p)
 	put_unaligned_t(__le64, cpu_to_le64(val), p);
 }
 
-#endif /* __XEN_UNALIGNED_H__ */
+#endif /* XEN__UNALIGNED_H */
diff --git a/xen/include/xen/version.h b/xen/include/xen/version.h
index 93c5877363..858469684d 100644
--- a/xen/include/xen/version.h
+++ b/xen/include/xen/version.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_VERSION_H__
-#define __XEN_VERSION_H__
+#ifndef XEN__VERSION_H
+#define XEN__VERSION_H
 
 #include <xen/types.h>
 #include <xen/elfstructs.h>
@@ -27,4 +27,4 @@ int xen_build_id_check(const Elf_Note *n, unsigned int n_sz,
 static inline void xen_build_init(void) {};
 #endif
 
-#endif /* __XEN_VERSION_H__ */
+#endif /* XEN__VERSION_H */
diff --git a/xen/include/xen/vga.h b/xen/include/xen/vga.h
index ceb8a527ed..6f8cd20bd7 100644
--- a/xen/include/xen/vga.h
+++ b/xen/include/xen/vga.h
@@ -6,8 +6,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_VGA_H
-#define _XEN_VGA_H
+#ifndef XEN__VGA_H
+#define XEN__VGA_H
 
 #include <xen/video.h>
 
@@ -21,4 +21,4 @@ void vesa_endboot(bool keep);
 static inline void vesa_init(void) {}
 #endif
 
-#endif /* _XEN_VGA_H */
+#endif /* XEN__VGA_H */
diff --git a/xen/include/xen/video.h b/xen/include/xen/video.h
index 1ee1aa46b1..2db8bbaa2e 100644
--- a/xen/include/xen/video.h
+++ b/xen/include/xen/video.h
@@ -6,8 +6,8 @@
  *  for more details.
  */
 
-#ifndef _XEN_VIDEO_H
-#define _XEN_VIDEO_H
+#ifndef XEN__VIDEO_H
+#define XEN__VIDEO_H
 
 #include <public/xen.h>
 
@@ -21,4 +21,4 @@ static inline void video_puts(const char *str, size_t nr) {}
 #define video_endboot() ((void)0)
 #endif
 
-#endif /* _XEN_VIDEO_H */
+#endif /* XEN__VIDEO_H */
diff --git a/xen/include/xen/virtual_region.h b/xen/include/xen/virtual_region.h
index a18dfb6fb0..860043ab76 100644
--- a/xen/include/xen/virtual_region.h
+++ b/xen/include/xen/virtual_region.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_VIRTUAL_REGION_H__
-#define __XEN_VIRTUAL_REGION_H__
+#ifndef XEN__VIRTUAL_REGION_H
+#define XEN__VIRTUAL_REGION_H
 
 #include <xen/list.h>
 #include <xen/symbols.h>
@@ -46,7 +46,7 @@ void unregister_virtual_region(struct virtual_region *r);
 void relax_virtual_region_perms(void);
 void tighten_virtual_region_perms(void);
 
-#endif /* __XEN_VIRTUAL_REGION_H__ */
+#endif /* XEN__VIRTUAL_REGION_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index c1dd7ac22f..c94c4d68f1 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -5,8 +5,8 @@
  * purpose area (VMAP_DEFAULT) and a livepatch-specific area (VMAP_XEN). The
  * latter is used when loading livepatches and the former for everything else.
  */
-#if !defined(__XEN_VMAP_H__) && defined(VMAP_VIRT_START)
-#define __XEN_VMAP_H__
+#if !defined(XEN__VMAP_H) && defined(VMAP_VIRT_START)
+#define XEN__VMAP_H
 
 #include <xen/mm-frame.h>
 #include <xen/page-size.h>
@@ -146,4 +146,4 @@ static inline void vm_init(void)
 #endif
 }
 
-#endif /* __XEN_VMAP_H__ */
+#endif /* XEN__VMAP_H */
diff --git a/xen/include/xen/wait.h b/xen/include/xen/wait.h
index 1c68bc564b..c890d3244d 100644
--- a/xen/include/xen/wait.h
+++ b/xen/include/xen/wait.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2010, Keir Fraser <keir@xen.org>
  */
 
-#ifndef __XEN_WAIT_H__
-#define __XEN_WAIT_H__
+#ifndef XEN__WAIT_H
+#define XEN__WAIT_H
 
 #include <xen/types.h>
 #include <xen/list.h>
@@ -56,4 +56,4 @@ void wait(void);
 void finish_wait(struct waitqueue_head *wq);
 void check_wakeup_from_wait(void);
 
-#endif /* __XEN_WAIT_H__ */
+#endif /* XEN__WAIT_H */
diff --git a/xen/include/xen/warning.h b/xen/include/xen/warning.h
index c0661d5140..eec3850ec1 100644
--- a/xen/include/xen/warning.h
+++ b/xen/include/xen/warning.h
@@ -1,5 +1,5 @@
-#ifndef _WARNING_H_
-#define _WARNING_H_
+#ifndef XEN__WARNING_H
+#define XEN__WARNING_H
 
 void warning_add(const char *warning);
 void warning_print(void);
diff --git a/xen/include/xen/watchdog.h b/xen/include/xen/watchdog.h
index 4c2840bd91..564bc7d8c1 100644
--- a/xen/include/xen/watchdog.h
+++ b/xen/include/xen/watchdog.h
@@ -4,8 +4,8 @@
  * Common watchdog code
  */
 
-#ifndef __XEN_WATCHDOG_H__
-#define __XEN_WATCHDOG_H__
+#ifndef XEN__WATCHDOG_H
+#define XEN__WATCHDOG_H
 
 #include <xen/types.h>
 
@@ -32,4 +32,4 @@ bool watchdog_enabled(void);
 
 #endif
 
-#endif /* __XEN_WATCHDOG_H__ */
+#endif /* XEN__WATCHDOG_H */
diff --git a/xen/include/xen/xen.lds.h b/xen/include/xen/xen.lds.h
index 24b8900ffe..c66b2c4c3b 100644
--- a/xen/include/xen/xen.lds.h
+++ b/xen/include/xen/xen.lds.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_LDS_H__
-#define __XEN_LDS_H__
+#ifndef XEN__XEN_LDS_H
+#define XEN__XEN_LDS_H
 
 /*
  * Common macros to be used in architecture specific linker scripts.
@@ -171,4 +171,4 @@
 #define VPCI_ARRAY
 #endif
 
-#endif /* __XEN_LDS_H__ */
+#endif /* XEN__XEN_LDS_H */
diff --git a/xen/include/xen/xenoprof.h b/xen/include/xen/xenoprof.h
index c3dac447d3..c50221d2a2 100644
--- a/xen/include/xen/xenoprof.h
+++ b/xen/include/xen/xenoprof.h
@@ -7,8 +7,8 @@
  * written by Aravind Menon & Jose Renato Santos
  */
 
-#ifndef __XEN_XENOPROF_H__
-#define __XEN_XENOPROF_H__
+#ifndef XEN__XENOPROF_H
+#define XEN__XENOPROF_H
 
 #define PMU_OWNER_NONE          0
 #define PMU_OWNER_XENOPROF      1
diff --git a/xen/include/xen/xmalloc.h b/xen/include/xen/xmalloc.h
index b903fa2e26..cd230bfde8 100644
--- a/xen/include/xen/xmalloc.h
+++ b/xen/include/xen/xmalloc.h
@@ -1,6 +1,6 @@
 
-#ifndef __XMALLOC_H__
-#define __XMALLOC_H__
+#ifndef XEN__XMALLOC_H
+#define XEN__XMALLOC_H
 
 #include <xen/types.h>
 #include <xen/cache.h>
@@ -171,4 +171,4 @@ unsigned long xmem_pool_get_used_size(struct xmem_pool *pool);
  */
 unsigned long xmem_pool_get_total_size(struct xmem_pool *pool);
 
-#endif /* __XMALLOC_H__ */
+#endif /* XEN__XMALLOC_H */
diff --git a/xen/include/xen/xxhash.h b/xen/include/xen/xxhash.h
index 6f2237cbcf..9ad85c85ce 100644
--- a/xen/include/xen/xxhash.h
+++ b/xen/include/xen/xxhash.h
@@ -72,8 +72,8 @@
  * xxh32        6.8 GB/s            6.0 GB/s
  */
 
-#ifndef __XENXXHASH_H__
-#define __XENXXHASH_H__
+#ifndef XEN__XXHASH_H
+#define XEN__XXHASH_H
 
 #include <xen/types.h>
 
@@ -256,4 +256,4 @@ void xxh32_copy_state(struct xxh32_state *dst, const struct xxh32_state *src);
  */
 void xxh64_copy_state(struct xxh64_state *dst, const struct xxh64_state *src);
 
-#endif /* __XENXXHASH_H__ */
+#endif /* XEN__XXHASH_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810082.1222697 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVB-0005Kw-JB; Fri, 04 Oct 2024 08:17:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810082.1222697; Fri, 04 Oct 2024 08:17: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 1swdVB-0005Kp-FR; Fri, 04 Oct 2024 08:17:29 +0000
Received: by outflank-mailman (input) for mailman id 810082;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVA-0005Kj-Br
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:28 +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 16aa1df0-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:25 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fac6b3c220so27299801fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:25 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 16aa1df0-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029845; x=1728634645; 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=mZVRfJcHEzDsbHyIjjMXghit7L/YD8np7eTVwtwdg+A=;
        b=H7jzKvjRU7jSfxZd+mIVjOc27ngftaatTBaKb7/ufrljm6DEoMQzcjnbulLpTRy/C3
         9V71CaGXIvZ2NowB2TK/W1il8IvqtrBSEj95I/nlazs+CmtI4/LgQFnasiox4Y7b11To
         Jj6xIoG5CathcdF3tr4EKIEtEDtmRRqL9PHjo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029845; x=1728634645;
        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=mZVRfJcHEzDsbHyIjjMXghit7L/YD8np7eTVwtwdg+A=;
        b=WPFDsTxmoqzCcnKL/PRHYQpnyNbfaIUz9zzT2lle6GJQMjpcGASKv1AGudxEzc5BHy
         V23wJeNc9mC1WD+wz8yVYnDBSRTDOJSONrKqi5opncxr/J/UHvDGTXMHCUxfJDaJY18r
         Z/DJaBGrHXS+LBl0E49ohDZF2OZHiHtwHStgngpKxK5oJOqqasuYVWFBrOaf05IQyOid
         XU1wr4LjvIT+Z5FZj7FvIY677ALmyLwmR78/7fIe5TDZKDVQ4yU0WxOlyOL3T/hK/iO+
         n0ImWZSoE4IFgwwQcEDEeS+IZ9iyyl0hJwth7wv+/j4M/zXTPr8LK1OPof3Zbzzu0FIR
         0f+g==
X-Gm-Message-State: AOJu0YxzDeIyGfWWXDVR0zrxaA+jImruk7YrffSNr8DNnMMUyS7SQRXr
	j7tDsm9PRLRN+w3p978oPxLQi4fBFh4R1DF1Co67fxkcyNWeaMkIqJ1BzQrpT9WvfmRarzeTSxw
	i
X-Google-Smtp-Source: AGHT+IHebfz0rEnfps702qGh6Xebrj49BGfrBp9JbADPCATNOCxBRFEZoQEjZDbSUqKyfHQcI/5PAQ==
X-Received: by 2002:a2e:a99f:0:b0:2fa:cd3d:4a76 with SMTP id 38308e7fff4ca-2faf3d79b0emr14545091fa.43.1728029844426;
        Fri, 04 Oct 2024 01:17:24 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Tim Deegan <tim@xen.org>,
	Christopher Clark <christopher.w.clark@gmail.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@intel.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH v3 00/19] Update header guards bases on new coding style
Date: Fri,  4 Oct 2024 09:16:54 +0100
Message-Id: <20241004081713.749031-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

With the help of some scripts and manual checking I updated header guards.

As the changes are pretty large patch was split based on maintainers
to reduce mail spamming.

Excluded public headers from the update, they are API, software like
Qemu will fail to compile if changed.

Changes since v1:
- make all commit compile;
- exclude public headers, their guard is not an API.

Changes since v2:
- exclude all missing public headers, although it seems to work better to
  be safe, at least for first round.

Frediano Ziglio (19):
  xen: Update header guards - Generic
  xen: Update header guards - X86
  xen: Update header guards - ACPI
  xen: Update header guards - ARGO
  xen: Update header guards - ARM
  xen: Update header guards - Device tree
  xen: Update header guards - EFI
  xen: Update header guards - HYPFS
  xen: Update header guards - Intel TXT
  xen: Update header guards - I/O MMU
  xen: Update header guards - Kconfig
  xen: Update header guards - KEXEC
  xen: Update header guards - Live patch
  xen: Update header guards - PPC 64
  xen: Update header guards - RISC-V
  xen: Update header guards - Scheduling
  xen: Update header guards - VM event, mem access, monitor
  xen: Update header guards - VPCI
  xen: Update header guards - XSM/Flask

 tools/libs/guest/xg_dom_decompress_unsafe_zstd.c        | 2 +-
 xen/arch/arm/arm32/lib/assembler.h                      | 6 +++---
 xen/arch/arm/arm64/lib/assembler.h                      | 6 +++---
 xen/arch/arm/decode.h                                   | 6 +++---
 xen/arch/arm/include/asm/acpi.h                         | 6 +++---
 xen/arch/arm/include/asm/alternative.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/atomic.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm32/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm32/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm32/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm32/sysregs.h                | 6 +++---
 xen/arch/arm/include/asm/arm32/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm32/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/atomic.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/brk.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/cpufeature.h             | 4 ++--
 xen/arch/arm/include/asm/arm64/efibind.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm64/hsr.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm64/sve.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/sysregs.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm64/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/arm/include/asm/atomic.h                       | 6 +++---
 xen/arch/arm/include/asm/bitops.h                       | 6 +++---
 xen/arch/arm/include/asm/bug.h                          | 6 +++---
 xen/arch/arm/include/asm/byteorder.h                    | 6 +++---
 xen/arch/arm/include/asm/cache.h                        | 4 ++--
 xen/arch/arm/include/asm/cadence-uart.h                 | 4 ++--
 xen/arch/arm/include/asm/config.h                       | 6 +++---
 xen/arch/arm/include/asm/cpregs.h                       | 4 ++--
 xen/arch/arm/include/asm/cpuerrata.h                    | 6 +++---
 xen/arch/arm/include/asm/cpufeature.h                   | 4 ++--
 xen/arch/arm/include/asm/current.h                      | 6 +++---
 xen/arch/arm/include/asm/div64.h                        | 4 ++--
 xen/arch/arm/include/asm/dom0less-build.h               | 6 +++---
 xen/arch/arm/include/asm/domain.h                       | 6 +++---
 xen/arch/arm/include/asm/domain_build.h                 | 4 ++--
 xen/arch/arm/include/asm/early_printk.h                 | 4 ++--
 xen/arch/arm/include/asm/elf.h                          | 6 +++---
 xen/arch/arm/include/asm/event.h                        | 4 ++--
 xen/arch/arm/include/asm/exynos4210-uart.h              | 6 +++---
 xen/arch/arm/include/asm/fixmap.h                       | 6 +++---
 xen/arch/arm/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/arm/include/asm/gic.h                          | 4 ++--
 xen/arch/arm/include/asm/gic_v3_defs.h                  | 6 +++---
 xen/arch/arm/include/asm/gic_v3_its.h                   | 4 ++--
 xen/arch/arm/include/asm/grant_table.h                  | 6 +++---
 xen/arch/arm/include/asm/guest_access.h                 | 6 +++---
 xen/arch/arm/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/arm/include/asm/guest_walk.h                   | 6 +++---
 xen/arch/arm/include/asm/hsr.h                          | 6 +++---
 xen/arch/arm/include/asm/hypercall.h                    | 8 ++++----
 xen/arch/arm/include/asm/imx-lpuart.h                   | 6 +++---
 xen/arch/arm/include/asm/insn.h                         | 6 +++---
 xen/arch/arm/include/asm/io.h                           | 4 ++--
 xen/arch/arm/include/asm/iommu.h                        | 6 +++---
 xen/arch/arm/include/asm/iommu_fwspec.h                 | 6 +++---
 xen/arch/arm/include/asm/ioreq.h                        | 6 +++---
 xen/arch/arm/include/asm/irq.h                          | 6 +++---
 xen/arch/arm/include/asm/kernel.h                       | 6 +++---
 xen/arch/arm/include/asm/livepatch.h                    | 6 +++---
 xen/arch/arm/include/asm/lpae.h                         | 6 +++---
 xen/arch/arm/include/asm/macros.h                       | 4 ++--
 xen/arch/arm/include/asm/mem_access.h                   | 6 +++---
 xen/arch/arm/include/asm/mm.h                           | 6 +++---
 xen/arch/arm/include/asm/mmio.h                         | 6 +++---
 xen/arch/arm/include/asm/mmu/layout.h                   | 6 +++---
 xen/arch/arm/include/asm/mmu/mm.h                       | 6 +++---
 xen/arch/arm/include/asm/mmu/p2m.h                      | 6 +++---
 xen/arch/arm/include/asm/monitor.h                      | 6 +++---
 xen/arch/arm/include/asm/new_vgic.h                     | 6 +++---
 xen/arch/arm/include/asm/nospec.h                       | 6 +++---
 xen/arch/arm/include/asm/p2m.h                          | 8 ++++----
 xen/arch/arm/include/asm/page-bits.h                    | 6 +++---
 xen/arch/arm/include/asm/page.h                         | 6 +++---
 xen/arch/arm/include/asm/pci.h                          | 6 +++---
 xen/arch/arm/include/asm/perfc.h                        | 4 ++--
 xen/arch/arm/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/arm/include/asm/pl011-uart.h                   | 6 +++---
 xen/arch/arm/include/asm/platform.h                     | 6 +++---
 xen/arch/arm/include/asm/platforms/exynos5.h            | 6 +++---
 xen/arch/arm/include/asm/platforms/midway.h             | 2 +-
 xen/arch/arm/include/asm/platforms/omap5.h              | 4 ++--
 xen/arch/arm/include/asm/platforms/vexpress.h           | 6 +++---
 xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h | 6 +++---
 xen/arch/arm/include/asm/pmap.h                         | 6 +++---
 xen/arch/arm/include/asm/processor.h                    | 6 +++---
 xen/arch/arm/include/asm/procinfo.h                     | 4 ++--
 xen/arch/arm/include/asm/psci.h                         | 6 +++---
 xen/arch/arm/include/asm/regs.h                         | 6 +++---
 xen/arch/arm/include/asm/scif-uart.h                    | 6 +++---
 xen/arch/arm/include/asm/setup.h                        | 4 ++--
 xen/arch/arm/include/asm/short-desc.h                   | 6 +++---
 xen/arch/arm/include/asm/smccc.h                        | 6 +++---
 xen/arch/arm/include/asm/smp.h                          | 4 ++--
 xen/arch/arm/include/asm/spinlock.h                     | 6 +++---
 xen/arch/arm/include/asm/static-evtchn.h                | 6 +++---
 xen/arch/arm/include/asm/static-memory.h                | 6 +++---
 xen/arch/arm/include/asm/static-shmem.h                 | 6 +++---
 xen/arch/arm/include/asm/string.h                       | 6 +++---
 xen/arch/arm/include/asm/sysregs.h                      | 6 +++---
 xen/arch/arm/include/asm/system.h                       | 4 ++--
 xen/arch/arm/include/asm/tee/ffa.h                      | 6 +++---
 xen/arch/arm/include/asm/tee/optee_msg.h                | 6 +++---
 xen/arch/arm/include/asm/tee/optee_rpc_cmd.h            | 6 +++---
 xen/arch/arm/include/asm/tee/optee_smc.h                | 6 +++---
 xen/arch/arm/include/asm/tee/tee.h                      | 6 +++---
 xen/arch/arm/include/asm/time.h                         | 6 +++---
 xen/arch/arm/include/asm/traps.h                        | 6 +++---
 xen/arch/arm/include/asm/types.h                        | 6 +++---
 xen/arch/arm/include/asm/vfp.h                          | 6 +++---
 xen/arch/arm/include/asm/vgic-emul.h                    | 6 +++---
 xen/arch/arm/include/asm/vgic.h                         | 6 +++---
 xen/arch/arm/include/asm/vpl011.h                       | 6 +++---
 xen/arch/arm/include/asm/vpsci.h                        | 6 +++---
 xen/arch/arm/include/asm/vreg.h                         | 6 +++---
 xen/arch/arm/include/asm/vtimer.h                       | 4 ++--
 xen/arch/arm/tee/ffa_private.h                          | 6 +++---
 xen/arch/arm/vgic/vgic-mmio.h                           | 4 ++--
 xen/arch/arm/vgic/vgic.h                                | 4 ++--
 xen/arch/arm/vpci.h                                     | 6 +++---
 xen/arch/arm/vuart.h                                    | 6 +++---
 xen/arch/ppc/include/asm/asm-defns.h                    | 6 +++---
 xen/arch/ppc/include/asm/atomic.h                       | 6 +++---
 xen/arch/ppc/include/asm/bitops.h                       | 6 +++---
 xen/arch/ppc/include/asm/boot.h                         | 6 +++---
 xen/arch/ppc/include/asm/bug.h                          | 6 +++---
 xen/arch/ppc/include/asm/byteorder.h                    | 6 +++---
 xen/arch/ppc/include/asm/cache.h                        | 6 +++---
 xen/arch/ppc/include/asm/config.h                       | 6 +++---
 xen/arch/ppc/include/asm/cpufeature.h                   | 6 +++---
 xen/arch/ppc/include/asm/current.h                      | 6 +++---
 xen/arch/ppc/include/asm/domain.h                       | 6 +++---
 xen/arch/ppc/include/asm/early_printk.h                 | 6 +++---
 xen/arch/ppc/include/asm/event.h                        | 6 +++---
 xen/arch/ppc/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/ppc/include/asm/guest_access.h                 | 6 +++---
 xen/arch/ppc/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/ppc/include/asm/io.h                           | 6 +++---
 xen/arch/ppc/include/asm/iommu.h                        | 6 +++---
 xen/arch/ppc/include/asm/irq.h                          | 6 +++---
 xen/arch/ppc/include/asm/memory.h                       | 4 ++--
 xen/arch/ppc/include/asm/mm.h                           | 6 +++---
 xen/arch/ppc/include/asm/monitor.h                      | 6 +++---
 xen/arch/ppc/include/asm/msr.h                          | 6 +++---
 xen/arch/ppc/include/asm/nospec.h                       | 6 +++---
 xen/arch/ppc/include/asm/opal-api.h                     | 6 +++---
 xen/arch/ppc/include/asm/p2m.h                          | 6 +++---
 xen/arch/ppc/include/asm/page-bits.h                    | 6 +++---
 xen/arch/ppc/include/asm/page.h                         | 6 +++---
 xen/arch/ppc/include/asm/processor.h                    | 6 +++---
 xen/arch/ppc/include/asm/regs.h                         | 6 +++---
 xen/arch/ppc/include/asm/setup.h                        | 6 +++---
 xen/arch/ppc/include/asm/smp.h                          | 4 ++--
 xen/arch/ppc/include/asm/spinlock.h                     | 6 +++---
 xen/arch/ppc/include/asm/string.h                       | 6 +++---
 xen/arch/ppc/include/asm/system.h                       | 4 ++--
 xen/arch/ppc/include/asm/time.h                         | 6 +++---
 xen/arch/ppc/include/asm/types.h                        | 6 +++---
 xen/arch/riscv/include/asm/acpi.h                       | 6 +++---
 xen/arch/riscv/include/asm/asm.h                        | 6 +++---
 xen/arch/riscv/include/asm/atomic.h                     | 6 +++---
 xen/arch/riscv/include/asm/bitops.h                     | 6 +++---
 xen/arch/riscv/include/asm/bug.h                        | 6 +++---
 xen/arch/riscv/include/asm/byteorder.h                  | 6 +++---
 xen/arch/riscv/include/asm/cache.h                      | 6 +++---
 xen/arch/riscv/include/asm/cmpxchg.h                    | 6 +++---
 xen/arch/riscv/include/asm/config.h                     | 6 +++---
 xen/arch/riscv/include/asm/cpufeature.h                 | 6 +++---
 xen/arch/riscv/include/asm/csr.h                        | 6 +++---
 xen/arch/riscv/include/asm/current.h                    | 6 +++---
 xen/arch/riscv/include/asm/domain.h                     | 6 +++---
 xen/arch/riscv/include/asm/early_printk.h               | 6 +++---
 xen/arch/riscv/include/asm/event.h                      | 6 +++---
 xen/arch/riscv/include/asm/fence.h                      | 6 +++---
 xen/arch/riscv/include/asm/fixmap.h                     | 6 +++---
 xen/arch/riscv/include/asm/flushtlb.h                   | 6 +++---
 xen/arch/riscv/include/asm/guest_access.h               | 6 +++---
 xen/arch/riscv/include/asm/guest_atomics.h              | 6 +++---
 xen/arch/riscv/include/asm/io.h                         | 6 +++---
 xen/arch/riscv/include/asm/irq.h                        | 6 +++---
 xen/arch/riscv/include/asm/mm.h                         | 6 +++---
 xen/arch/riscv/include/asm/monitor.h                    | 6 +++---
 xen/arch/riscv/include/asm/nospec.h                     | 6 +++---
 xen/arch/riscv/include/asm/p2m.h                        | 6 +++---
 xen/arch/riscv/include/asm/page-bits.h                  | 6 +++---
 xen/arch/riscv/include/asm/page.h                       | 6 +++---
 xen/arch/riscv/include/asm/pmap.h                       | 6 +++---
 xen/arch/riscv/include/asm/processor.h                  | 6 +++---
 xen/arch/riscv/include/asm/regs.h                       | 6 +++---
 xen/arch/riscv/include/asm/riscv_encoding.h             | 4 ++--
 xen/arch/riscv/include/asm/sbi.h                        | 6 +++---
 xen/arch/riscv/include/asm/setup.h                      | 6 +++---
 xen/arch/riscv/include/asm/smp.h                        | 4 ++--
 xen/arch/riscv/include/asm/spinlock.h                   | 6 +++---
 xen/arch/riscv/include/asm/string.h                     | 6 +++---
 xen/arch/riscv/include/asm/system.h                     | 6 +++---
 xen/arch/riscv/include/asm/time.h                       | 6 +++---
 xen/arch/riscv/include/asm/traps.h                      | 6 +++---
 xen/arch/riscv/include/asm/types.h                      | 6 +++---
 xen/arch/x86/boot/video.h                               | 6 +++---
 xen/arch/x86/cpu/mcheck/barrier.h                       | 6 +++---
 xen/arch/x86/cpu/mcheck/mcaction.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/mce.h                           | 6 +++---
 xen/arch/x86/cpu/mcheck/mce_amd.h                       | 4 ++--
 xen/arch/x86/cpu/mcheck/mctelem.h                       | 4 ++--
 xen/arch/x86/cpu/mcheck/util.h                          | 4 ++--
 xen/arch/x86/cpu/mcheck/vmce.h                          | 4 ++--
 xen/arch/x86/cpu/mcheck/x86_mca.h                       | 6 +++---
 xen/arch/x86/cpu/microcode/private.h                    | 6 +++---
 xen/arch/x86/cpu/mtrr/mtrr.h                            | 6 +++---
 xen/arch/x86/guest/hyperv/private.h                     | 6 +++---
 xen/arch/x86/hvm/svm/nestedhvm.h                        | 6 +++---
 xen/arch/x86/hvm/svm/svm.h                              | 6 +++---
 xen/arch/x86/hvm/viridian/private.h                     | 6 +++---
 xen/arch/x86/include/asm/acpi.h                         | 4 ++--
 xen/arch/x86/include/asm/alternative-asm.h              | 6 +++---
 xen/arch/x86/include/asm/alternative.h                  | 6 +++---
 xen/arch/x86/include/asm/altp2m.h                       | 6 +++---
 xen/arch/x86/include/asm/amd.h                          | 6 +++---
 xen/arch/x86/include/asm/apic.h                         | 6 +++---
 xen/arch/x86/include/asm/apicdef.h                      | 4 ++--
 xen/arch/x86/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/x86/include/asm/atomic.h                       | 6 +++---
 xen/arch/x86/include/asm/bitops.h                       | 6 +++---
 xen/arch/x86/include/asm/bug.h                          | 6 +++---
 xen/arch/x86/include/asm/byteorder.h                    | 6 +++---
 xen/arch/x86/include/asm/bzimage.h                      | 6 +++---
 xen/arch/x86/include/asm/cache.h                        | 4 ++--
 xen/arch/x86/include/asm/config.h                       | 6 +++---
 xen/arch/x86/include/asm/cpu-policy.h                   | 6 +++---
 xen/arch/x86/include/asm/cpufeature.h                   | 6 +++---
 xen/arch/x86/include/asm/cpufeatureset.h                | 6 +++---
 xen/arch/x86/include/asm/cpuid.h                        | 6 +++---
 xen/arch/x86/include/asm/cpuidle.h                      | 4 ++--
 xen/arch/x86/include/asm/current.h                      | 6 +++---
 xen/arch/x86/include/asm/debugreg.h                     | 6 +++---
 xen/arch/x86/include/asm/desc.h                         | 6 +++---
 xen/arch/x86/include/asm/device.h                       | 6 +++---
 xen/arch/x86/include/asm/dom0_build.h                   | 6 +++---
 xen/arch/x86/include/asm/domain.h                       | 6 +++---
 xen/arch/x86/include/asm/e820.h                         | 6 +++---
 xen/arch/x86/include/asm/edd.h                          | 6 +++---
 xen/arch/x86/include/asm/elf.h                          | 6 +++---
 xen/arch/x86/include/asm/endbr.h                        | 6 +++---
 xen/arch/x86/include/asm/event.h                        | 4 ++--
 xen/arch/x86/include/asm/fixmap.h                       | 4 ++--
 xen/arch/x86/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/x86/include/asm/gdbsx.h                        | 6 +++---
 xen/arch/x86/include/asm/genapic.h                      | 4 ++--
 xen/arch/x86/include/asm/grant_table.h                  | 6 +++---
 xen/arch/x86/include/asm/guest.h                        | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-hcall.h           | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-tlfs.h            | 4 ++--
 xen/arch/x86/include/asm/guest/hyperv.h                 | 6 +++---
 xen/arch/x86/include/asm/guest/hypervisor.h             | 6 +++---
 xen/arch/x86/include/asm/guest/pvh-boot.h               | 6 +++---
 xen/arch/x86/include/asm/guest/xen-hcall.h              | 6 +++---
 xen/arch/x86/include/asm/guest/xen.h                    | 6 +++---
 xen/arch/x86/include/asm/guest_access.h                 | 6 +++---
 xen/arch/x86/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/x86/include/asm/guest_pt.h                     | 6 +++---
 xen/arch/x86/include/asm/hap.h                          | 4 ++--
 xen/arch/x86/include/asm/hardirq.h                      | 6 +++---
 xen/arch/x86/include/asm/hpet.h                         | 6 +++---
 xen/arch/x86/include/asm/hvm/asid.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/cacheattr.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/domain.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/emulate.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/grant_table.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/guest_access.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h                      | 6 +++---
 xen/arch/x86/include/asm/hvm/io.h                       | 6 +++---
 xen/arch/x86/include/asm/hvm/ioreq.h                    | 6 +++---
 xen/arch/x86/include/asm/hvm/irq.h                      | 6 +++---
 xen/arch/x86/include/asm/hvm/monitor.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/nestedhvm.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/save.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/support.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/nestedsvm.h            | 4 ++--
 xen/arch/x86/include/asm/hvm/svm/svm.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/svmdebug.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/vmcb.h                 | 4 ++--
 xen/arch/x86/include/asm/hvm/vcpu.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/vioapic.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/viridian.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vlapic.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/vm_event.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h                 | 4 ++--
 xen/arch/x86/include/asm/hvm/vmx/vmx.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vvmx.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vpic.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/vpt.h                      | 6 +++---
 xen/arch/x86/include/asm/hypercall.h                    | 8 ++++----
 xen/arch/x86/include/asm/i387.h                         | 6 +++---
 xen/arch/x86/include/asm/intel-family.h                 | 6 +++---
 xen/arch/x86/include/asm/invpcid.h                      | 6 +++---
 xen/arch/x86/include/asm/io.h                           | 4 ++--
 xen/arch/x86/include/asm/io_apic.h                      | 4 ++--
 xen/arch/x86/include/asm/iocap.h                        | 6 +++---
 xen/arch/x86/include/asm/iommu.h                        | 6 +++---
 xen/arch/x86/include/asm/ioreq.h                        | 6 +++---
 xen/arch/x86/include/asm/irq.h                          | 6 +++---
 xen/arch/x86/include/asm/ldt.h                          | 4 ++--
 xen/arch/x86/include/asm/livepatch.h                    | 6 +++---
 xen/arch/x86/include/asm/mach-default/bios_ebda.h       | 6 +++---
 xen/arch/x86/include/asm/mach-default/io_ports.h        | 6 +++---
 xen/arch/x86/include/asm/mach-default/irq_vectors.h     | 6 +++---
 xen/arch/x86/include/asm/mach-default/mach_mpspec.h     | 6 +++---
 xen/arch/x86/include/asm/mach-generic/mach_apic.h       | 6 +++---
 xen/arch/x86/include/asm/machine_kexec.h                | 6 +++---
 xen/arch/x86/include/asm/mc146818rtc.h                  | 6 +++---
 xen/arch/x86/include/asm/mce.h                          | 4 ++--
 xen/arch/x86/include/asm/mem_access.h                   | 6 +++---
 xen/arch/x86/include/asm/mem_paging.h                   | 6 +++---
 xen/arch/x86/include/asm/mem_sharing.h                  | 6 +++---
 xen/arch/x86/include/asm/microcode.h                    | 6 +++---
 xen/arch/x86/include/asm/mm.h                           | 6 +++---
 xen/arch/x86/include/asm/monitor.h                      | 6 +++---
 xen/arch/x86/include/asm/mpspec.h                       | 4 ++--
 xen/arch/x86/include/asm/mpspec_def.h                   | 4 ++--
 xen/arch/x86/include/asm/msi.h                          | 6 +++---
 xen/arch/x86/include/asm/msr-index.h                    | 6 +++---
 xen/arch/x86/include/asm/msr.h                          | 6 +++---
 xen/arch/x86/include/asm/mtrr.h                         | 6 +++---
 xen/arch/x86/include/asm/multicall.h                    | 6 +++---
 xen/arch/x86/include/asm/mwait.h                        | 6 +++---
 xen/arch/x86/include/asm/nmi.h                          | 6 +++---
 xen/arch/x86/include/asm/nops.h                         | 6 +++---
 xen/arch/x86/include/asm/nospec.h                       | 6 +++---
 xen/arch/x86/include/asm/numa.h                         | 4 ++--
 xen/arch/x86/include/asm/p2m.h                          | 8 ++++----
 xen/arch/x86/include/asm/page-bits.h                    | 6 +++---
 xen/arch/x86/include/asm/page.h                         | 6 +++---
 xen/arch/x86/include/asm/paging.h                       | 4 ++--
 xen/arch/x86/include/asm/pci.h                          | 6 +++---
 xen/arch/x86/include/asm/perfc.h                        | 4 ++--
 xen/arch/x86/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/x86/include/asm/processor.h                    | 6 +++---
 xen/arch/x86/include/asm/prot-key.h                     | 6 +++---
 xen/arch/x86/include/asm/psr.h                          | 6 +++---
 xen/arch/x86/include/asm/pt-contig-markers.h            | 6 +++---
 xen/arch/x86/include/asm/pv/domain.h                    | 6 +++---
 xen/arch/x86/include/asm/pv/grant_table.h               | 6 +++---
 xen/arch/x86/include/asm/pv/mm.h                        | 6 +++---
 xen/arch/x86/include/asm/pv/shim.h                      | 6 +++---
 xen/arch/x86/include/asm/pv/trace.h                     | 6 +++---
 xen/arch/x86/include/asm/pv/traps.h                     | 6 +++---
 xen/arch/x86/include/asm/random.h                       | 6 +++---
 xen/arch/x86/include/asm/regs.h                         | 6 +++---
 xen/arch/x86/include/asm/setup.h                        | 4 ++--
 xen/arch/x86/include/asm/shadow.h                       | 6 +++---
 xen/arch/x86/include/asm/shared.h                       | 6 +++---
 xen/arch/x86/include/asm/shstk.h                        | 6 +++---
 xen/arch/x86/include/asm/smp.h                          | 4 ++--
 xen/arch/x86/include/asm/softirq.h                      | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl.h                    | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl_asm.h                | 6 +++---
 xen/arch/x86/include/asm/spinlock.h                     | 6 +++---
 xen/arch/x86/include/asm/string.h                       | 6 +++---
 xen/arch/x86/include/asm/system.h                       | 4 ++--
 xen/arch/x86/include/asm/tboot.h                        | 6 +++---
 xen/arch/x86/include/asm/time.h                         | 6 +++---
 xen/arch/x86/include/asm/trampoline.h                   | 6 +++---
 xen/arch/x86/include/asm/traps.h                        | 6 +++---
 xen/arch/x86/include/asm/types.h                        | 6 +++---
 xen/arch/x86/include/asm/uaccess.h                      | 6 +++---
 xen/arch/x86/include/asm/vm_event.h                     | 6 +++---
 xen/arch/x86/include/asm/vpmu.h                         | 6 +++---
 xen/arch/x86/include/asm/x86-defns.h                    | 6 +++---
 xen/arch/x86/include/asm/x86-vendors.h                  | 6 +++---
 xen/arch/x86/include/asm/x86_64/efibind.h               | 4 ++--
 xen/arch/x86/include/asm/x86_64/elf.h                   | 6 +++---
 xen/arch/x86/include/asm/x86_64/page.h                  | 6 +++---
 xen/arch/x86/include/asm/x86_64/regs.h                  | 4 ++--
 xen/arch/x86/include/asm/x86_64/system.h                | 6 +++---
 xen/arch/x86/include/asm/x86_64/uaccess.h               | 6 +++---
 xen/arch/x86/include/asm/x86_emulate.h                  | 6 +++---
 xen/arch/x86/include/asm/xenoprof.h                     | 6 +++---
 xen/arch/x86/include/asm/xstate.h                       | 6 +++---
 xen/arch/x86/mm/hap/private.h                           | 6 +++---
 xen/arch/x86/mm/mm-locks.h                              | 6 +++---
 xen/arch/x86/mm/p2m.h                                   | 6 +++---
 xen/arch/x86/mm/shadow/private.h                        | 6 +++---
 xen/arch/x86/mm/shadow/types.h                          | 6 +++---
 xen/arch/x86/oprofile/op_counter.h                      | 6 +++---
 xen/arch/x86/oprofile/op_x86_model.h                    | 6 +++---
 xen/arch/x86/pv/emulate.h                               | 6 +++---
 xen/arch/x86/pv/mm.h                                    | 6 +++---
 xen/arch/x86/x86_emulate/x86_emulate.h                  | 6 +++---
 xen/common/coverage/coverage.h                          | 4 ++--
 xen/common/coverage/gcov.h                              | 6 +++---
 xen/common/libelf/libelf-private.h                      | 6 +++---
 xen/common/libfdt/libfdt_internal.h                     | 6 +++---
 xen/common/lz4/defs.h                                   | 6 +++---
 xen/common/sched/private.h                              | 6 +++---
 xen/common/ubsan/ubsan.h                                | 4 ++--
 xen/common/xz/lzma2.h                                   | 4 ++--
 xen/common/xz/private.h                                 | 4 ++--
 xen/common/xz/stream.h                                  | 4 ++--
 xen/common/zstd/bitstream.h                             | 6 +++---
 xen/common/zstd/error_private.h                         | 6 +++---
 xen/common/zstd/fse.h                                   | 6 +++---
 xen/common/zstd/huf.h                                   | 6 +++---
 xen/common/zstd/mem.h                                   | 6 +++---
 xen/common/zstd/zstd_internal.h                         | 6 +++---
 xen/drivers/acpi/apei/apei-internal.h                   | 4 ++--
 xen/drivers/passthrough/amd/iommu-defs.h                | 6 +++---
 xen/drivers/passthrough/amd/iommu.h                     | 6 +++---
 xen/drivers/passthrough/arm/smmu-v3.h                   | 6 +++---
 xen/drivers/passthrough/ats.h                           | 6 +++---
 xen/drivers/passthrough/vtd/dmar.h                      | 6 +++---
 xen/drivers/passthrough/vtd/extern.h                    | 6 +++---
 xen/drivers/passthrough/vtd/iommu.h                     | 4 ++--
 xen/drivers/passthrough/vtd/vtd.h                       | 6 +++---
 xen/drivers/video/font.h                                | 6 +++---
 xen/drivers/video/lfb.h                                 | 4 ++--
 xen/drivers/video/modelines.h                           | 4 ++--
 xen/include/acpi/acconfig.h                             | 6 +++---
 xen/include/acpi/acexcep.h                              | 6 +++---
 xen/include/acpi/acglobal.h                             | 6 +++---
 xen/include/acpi/achware.h                              | 6 +++---
 xen/include/acpi/aclocal.h                              | 6 +++---
 xen/include/acpi/acmacros.h                             | 4 ++--
 xen/include/acpi/acnames.h                              | 6 +++---
 xen/include/acpi/acoutput.h                             | 6 +++---
 xen/include/acpi/acpi.h                                 | 6 +++---
 xen/include/acpi/acpiosxf.h                             | 6 +++---
 xen/include/acpi/acpixf.h                               | 6 +++---
 xen/include/acpi/actables.h                             | 6 +++---
 xen/include/acpi/actbl.h                                | 6 +++---
 xen/include/acpi/actbl1.h                               | 6 +++---
 xen/include/acpi/actbl2.h                               | 6 +++---
 xen/include/acpi/actbl3.h                               | 6 +++---
 xen/include/acpi/actypes.h                              | 6 +++---
 xen/include/acpi/acutils.h                              | 6 +++---
 xen/include/acpi/apei.h                                 | 4 ++--
 xen/include/acpi/cpufreq/cpufreq.h                      | 6 +++---
 xen/include/acpi/cpufreq/processor_perf.h               | 6 +++---
 xen/include/acpi/pdc_intel.h                            | 6 +++---
 xen/include/acpi/platform/acenv.h                       | 6 +++---
 xen/include/acpi/platform/acgcc.h                       | 6 +++---
 xen/include/acpi/platform/aclinux.h                     | 6 +++---
 xen/include/asm-generic/altp2m.h                        | 6 +++---
 xen/include/asm-generic/atomic-ops.h                    | 6 +++---
 xen/include/asm-generic/device.h                        | 6 +++---
 xen/include/asm-generic/div64.h                         | 4 ++--
 xen/include/asm-generic/hardirq.h                       | 6 +++---
 xen/include/asm-generic/hypercall.h                     | 8 ++++----
 xen/include/asm-generic/iocap.h                         | 6 +++---
 xen/include/asm-generic/monitor.h                       | 6 +++---
 xen/include/asm-generic/paging.h                        | 6 +++---
 xen/include/asm-generic/percpu.h                        | 6 +++---
 xen/include/asm-generic/random.h                        | 6 +++---
 xen/include/asm-generic/softirq.h                       | 6 +++---
 xen/include/asm-generic/vm_event.h                      | 6 +++---
 xen/include/crypto/rijndael.h                           | 6 +++---
 xen/include/crypto/vmac.h                               | 4 ++--
 xen/include/efi/efiapi.h                                | 4 ++--
 xen/include/efi/eficapsule.h                            | 4 ++--
 xen/include/efi/eficon.h                                | 4 ++--
 xen/include/efi/efidef.h                                | 4 ++--
 xen/include/efi/efidevp.h                               | 4 ++--
 xen/include/efi/efierr.h                                | 4 ++--
 xen/include/efi/efipciio.h                              | 6 +++---
 xen/include/efi/efiprot.h                               | 4 ++--
 xen/include/xen/8250-uart.h                             | 6 +++---
 xen/include/xen/acpi.h                                  | 6 +++---
 xen/include/xen/alternative-call.h                      | 6 +++---
 xen/include/xen/argo.h                                  | 4 ++--
 xen/include/xen/atomic.h                                | 6 +++---
 xen/include/xen/bitmap.h                                | 6 +++---
 xen/include/xen/bitops.h                                | 6 +++---
 xen/include/xen/bootfdt.h                               | 6 +++---
 xen/include/xen/bug.h                                   | 6 +++---
 xen/include/xen/byteorder/big_endian.h                  | 6 +++---
 xen/include/xen/byteorder/generic.h                     | 6 +++---
 xen/include/xen/byteorder/little_endian.h               | 6 +++---
 xen/include/xen/byteorder/swab.h                        | 6 +++---
 xen/include/xen/cache.h                                 | 6 +++---
 xen/include/xen/compat.h                                | 6 +++---
 xen/include/xen/compiler.h                              | 6 +++---
 xen/include/xen/config.h                                | 6 +++---
 xen/include/xen/console.h                               | 6 +++---
 xen/include/xen/consoled.h                              | 6 +++---
 xen/include/xen/const.h                                 | 6 +++---
 xen/include/xen/coverage.h                              | 4 ++--
 xen/include/xen/cper.h                                  | 4 ++--
 xen/include/xen/cpu.h                                   | 6 +++---
 xen/include/xen/cpuidle.h                               | 6 +++---
 xen/include/xen/cpumask.h                               | 6 +++---
 xen/include/xen/ctype.h                                 | 4 ++--
 xen/include/xen/decompress.h                            | 4 ++--
 xen/include/xen/delay.h                                 | 6 +++---
 xen/include/xen/device_tree.h                           | 4 ++--
 xen/include/xen/dm.h                                    | 6 +++---
 xen/include/xen/dmi.h                                   | 6 +++---
 xen/include/xen/domain.h                                | 6 +++---
 xen/include/xen/domain_page.h                           | 6 +++---
 xen/include/xen/dt-overlay.h                            | 6 +++---
 xen/include/xen/early_printk.h                          | 4 ++--
 xen/include/xen/earlycpio.h                             | 6 +++---
 xen/include/xen/efi.h                                   | 6 +++---
 xen/include/xen/elf.h                                   | 6 +++---
 xen/include/xen/elfcore.h                               | 6 +++---
 xen/include/xen/elfstructs.h                            | 6 +++---
 xen/include/xen/err.h                                   | 6 +++---
 xen/include/xen/errno.h                                 | 6 +++---
 xen/include/xen/event.h                                 | 6 +++---
 xen/include/xen/grant_table.h                           | 6 +++---
 xen/include/xen/guest_access.h                          | 6 +++---
 xen/include/xen/gunzip.h                                | 4 ++--
 xen/include/xen/hypercall.h                             | 6 +++---
 xen/include/xen/hypfs.h                                 | 6 +++---
 xen/include/xen/init.h                                  | 6 +++---
 xen/include/xen/inttypes.h                              | 6 +++---
 xen/include/xen/iocap.h                                 | 6 +++---
 xen/include/xen/iommu.h                                 | 6 +++---
 xen/include/xen/ioreq.h                                 | 6 +++---
 xen/include/xen/irq.h                                   | 6 +++---
 xen/include/xen/irq_cpustat.h                           | 6 +++---
 xen/include/xen/kconfig.h                               | 6 +++---
 xen/include/xen/kernel.h                                | 6 +++---
 xen/include/xen/kexec.h                                 | 6 +++---
 xen/include/xen/keyhandler.h                            | 6 +++---
 xen/include/xen/kimage.h                                | 6 +++---
 xen/include/xen/lib.h                                   | 6 +++---
 xen/include/xen/lib/x86/cpu-policy.h                    | 6 +++---
 xen/include/xen/libelf.h                                | 6 +++---
 xen/include/xen/libfdt/fdt.h                            | 6 +++---
 xen/include/xen/libfdt/libfdt-xen.h                     | 6 +++---
 xen/include/xen/libfdt/libfdt.h                         | 6 +++---
 xen/include/xen/libfdt/libfdt_env.h                     | 6 +++---
 xen/include/xen/linkage.h                               | 6 +++---
 xen/include/xen/linux-compat.h                          | 6 +++---
 xen/include/xen/list.h                                  | 6 +++---
 xen/include/xen/list_sort.h                             | 4 ++--
 xen/include/xen/livepatch.h                             | 6 +++---
 xen/include/xen/livepatch_elf.h                         | 6 +++---
 xen/include/xen/livepatch_payload.h                     | 6 +++---
 xen/include/xen/lz4.h                                   | 4 ++--
 xen/include/xen/lzo.h                                   | 4 ++--
 xen/include/xen/macros.h                                | 6 +++---
 xen/include/xen/mem_access.h                            | 6 +++---
 xen/include/xen/mm-frame.h                              | 6 +++---
 xen/include/xen/mm.h                                    | 6 +++---
 xen/include/xen/monitor.h                               | 6 +++---
 xen/include/xen/msi.h                                   | 4 ++--
 xen/include/xen/multiboot.h                             | 6 +++---
 xen/include/xen/multiboot2.h                            | 6 +++---
 xen/include/xen/multicall.h                             | 6 +++---
 xen/include/xen/nodemask.h                              | 6 +++---
 xen/include/xen/nospec.h                                | 6 +++---
 xen/include/xen/notifier.h                              | 6 +++---
 xen/include/xen/numa.h                                  | 6 +++---
 xen/include/xen/p2m-common.h                            | 6 +++---
 xen/include/xen/page-defs.h                             | 6 +++---
 xen/include/xen/page-size.h                             | 4 ++--
 xen/include/xen/paging.h                                | 6 +++---
 xen/include/xen/param.h                                 | 6 +++---
 xen/include/xen/pci.h                                   | 6 +++---
 xen/include/xen/pci_regs.h                              | 6 +++---
 xen/include/xen/pdx.h                                   | 6 +++---
 xen/include/xen/percpu.h                                | 6 +++---
 xen/include/xen/perfc.h                                 | 6 +++---
 xen/include/xen/perfc_defn.h                            | 6 +++---
 xen/include/xen/pfn.h                                   | 6 +++---
 xen/include/xen/pmap.h                                  | 6 +++---
 xen/include/xen/pmstat.h                                | 6 +++---
 xen/include/xen/preempt.h                               | 6 +++---
 xen/include/xen/prefetch.h                              | 4 ++--
 xen/include/xen/pv_console.h                            | 6 +++---
 xen/include/xen/radix-tree.h                            | 6 +++---
 xen/include/xen/random.h                                | 6 +++---
 xen/include/xen/rangeset.h                              | 6 +++---
 xen/include/xen/rbtree.h                                | 6 +++---
 xen/include/xen/rcupdate.h                              | 6 +++---
 xen/include/xen/rwlock.h                                | 6 +++---
 xen/include/xen/sched.h                                 | 6 +++---
 xen/include/xen/sections.h                              | 6 +++---
 xen/include/xen/self-tests.h                            | 6 +++---
 xen/include/xen/serial.h                                | 6 +++---
 xen/include/xen/shared.h                                | 6 +++---
 xen/include/xen/shutdown.h                              | 6 +++---
 xen/include/xen/sizes.h                                 | 6 +++---
 xen/include/xen/smp.h                                   | 6 +++---
 xen/include/xen/softirq.h                               | 6 +++---
 xen/include/xen/sort.h                                  | 6 +++---
 xen/include/xen/spinlock.h                              | 6 +++---
 xen/include/xen/stdarg.h                                | 6 +++---
 xen/include/xen/stdbool.h                               | 6 +++---
 xen/include/xen/stdint.h                                | 6 +++---
 xen/include/xen/stop_machine.h                          | 6 +++---
 xen/include/xen/string.h                                | 6 +++---
 xen/include/xen/stringify.h                             | 6 +++---
 xen/include/xen/symbols.h                               | 6 +++---
 xen/include/xen/tasklet.h                               | 6 +++---
 xen/include/xen/time.h                                  | 6 +++---
 xen/include/xen/timer.h                                 | 6 +++---
 xen/include/xen/trace.h                                 | 6 +++---
 xen/include/xen/types.h                                 | 6 +++---
 xen/include/xen/typesafe.h                              | 6 +++---
 xen/include/xen/unaligned.h                             | 6 +++---
 xen/include/xen/version.h                               | 6 +++---
 xen/include/xen/vga.h                                   | 6 +++---
 xen/include/xen/video.h                                 | 6 +++---
 xen/include/xen/virtual_region.h                        | 6 +++---
 xen/include/xen/vm_event.h                              | 6 +++---
 xen/include/xen/vmap.h                                  | 6 +++---
 xen/include/xen/vpci.h                                  | 4 ++--
 xen/include/xen/wait.h                                  | 6 +++---
 xen/include/xen/warning.h                               | 4 ++--
 xen/include/xen/watchdog.h                              | 6 +++---
 xen/include/xen/xen.lds.h                               | 6 +++---
 xen/include/xen/xenoprof.h                              | 4 ++--
 xen/include/xen/xmalloc.h                               | 6 +++---
 xen/include/xen/xxhash.h                                | 6 +++---
 xen/include/xsm/dummy.h                                 | 6 +++---
 xen/include/xsm/xsm.h                                   | 4 ++--
 xen/lib/x86/private.h                                   | 6 +++---
 xen/tools/kconfig/expr.h                                | 6 +++---
 xen/tools/kconfig/images.h                              | 6 +++---
 xen/tools/kconfig/list.h                                | 4 ++--
 xen/tools/kconfig/lkc.h                                 | 6 +++---
 xen/xsm/flask/include/avc.h                             | 6 +++---
 xen/xsm/flask/include/avc_ss.h                          | 6 +++---
 xen/xsm/flask/include/conditional.h                     | 4 ++--
 xen/xsm/flask/include/objsec.h                          | 6 +++---
 xen/xsm/flask/include/security.h                        | 6 +++---
 xen/xsm/flask/private.h                                 | 6 +++---
 xen/xsm/flask/ss/avtab.h                                | 6 +++---
 xen/xsm/flask/ss/conditional.h                          | 6 +++---
 xen/xsm/flask/ss/constraint.h                           | 6 +++---
 xen/xsm/flask/ss/context.h                              | 6 +++---
 xen/xsm/flask/ss/ebitmap.h                              | 6 +++---
 xen/xsm/flask/ss/hashtab.h                              | 4 ++--
 xen/xsm/flask/ss/mls.h                                  | 4 ++--
 xen/xsm/flask/ss/mls_types.h                            | 6 +++---
 xen/xsm/flask/ss/policydb.h                             | 6 +++---
 xen/xsm/flask/ss/services.h                             | 6 +++---
 xen/xsm/flask/ss/sidtab.h                               | 6 +++---
 xen/xsm/flask/ss/symtab.h                               | 6 +++---
 664 files changed, 1886 insertions(+), 1886 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810086.1222726 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVF-0005u9-7B; Fri, 04 Oct 2024 08:17:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810086.1222726; Fri, 04 Oct 2024 08: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 1swdVE-0005sO-VO; Fri, 04 Oct 2024 08:17:32 +0000
Received: by outflank-mailman (input) for mailman id 810086;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVD-0005Kj-3g
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:31 +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 185e466a-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:28 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8d29b7edc2so235945566b.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:28 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 185e466a-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029848; x=1728634648; 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=zfXXvI3Yg2P8ODPuJeJ2aU/Qjk93tDfTj20FuvBwh7Y=;
        b=IkmotU0vgS5d/B4n6235L5bTgROFprGKLSrz0xt51yonpNuoybsiucWNSzdWp6L2X0
         HHod+ljfw9BsG7ii9n7KK+Y78xvH7r9K+aW0TP1CKf8EPYcj8wcRzOE+QAxs7fjOOxlR
         YzjVgD71IeLwgwG85AiQpYmrMKi2OHoJkbmrw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029848; x=1728634648;
        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=zfXXvI3Yg2P8ODPuJeJ2aU/Qjk93tDfTj20FuvBwh7Y=;
        b=dpilMrCF9kr05dGkzv2wYsSMt3sYHvFn6if2/IgsfguVEA8aBwsEyXXp89IWnuxjzL
         ftoUV5cJ63eAi8GMpzoWtPXwHhBS6KmdOBddtsgW5uwBQN1ENnrpaqf+ykK1lEldvQ65
         g0DIrxajVhv/fUPQCPAP/AQEzkJUsGB94rkGUYLRKEcnqPguYCDldDyaQBx8R556BuJe
         D6HdSBEUcvQKLcNntzu+YEBCLvq7vQ/3tKtYKAVnda9r9iIiDRIYEiQPtPd9wQRx6eyR
         egMnOUNH8eNVqKX6nPGEU7pjkLhk6FZ8PtplZ5yXbAgljUA5lrqb1bbk2UoubdiPtaYX
         ZOUA==
X-Gm-Message-State: AOJu0YxE6uHiIUEebFvf1+hkTk7cBQ3F9DYyF4HMuRPUPwsOAngWhkTy
	kB3JxBby45Dfa5VqbTwEt2mVxklmJ0+U3Gtc+bgX0d/ru+L+ZCkaQ0hBhXbqVVFOwz23RMIbJBa
	A
X-Google-Smtp-Source: AGHT+IF3s7F99bPpcR3EumWybxxv9DMvZQ1P5y4CwgAkkI4erpNrWobUK1i0TSfAFDMXTFoEuMJdQg==
X-Received: by 2002:a17:906:cae0:b0:a8d:7210:e295 with SMTP id a640c23a62f3a-a991bcfbef8mr156159666b.10.1728029846494;
        Fri, 04 Oct 2024 01:17:26 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Paul Durrant <paul@xen.org>,
	Tim Deegan <tim@xen.org>
Subject: [PATCH v3 02/19] xen: Update header guards - X86
Date: Fri,  4 Oct 2024 09:16:56 +0100
Message-Id: <20241004081713.749031-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to x86 architecture.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/video.h                           | 6 +++---
 xen/arch/x86/cpu/mcheck/barrier.h                   | 6 +++---
 xen/arch/x86/cpu/mcheck/mcaction.h                  | 4 ++--
 xen/arch/x86/cpu/mcheck/mce.h                       | 6 +++---
 xen/arch/x86/cpu/mcheck/mce_amd.h                   | 4 ++--
 xen/arch/x86/cpu/mcheck/mctelem.h                   | 4 ++--
 xen/arch/x86/cpu/mcheck/util.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/vmce.h                      | 4 ++--
 xen/arch/x86/cpu/mcheck/x86_mca.h                   | 6 +++---
 xen/arch/x86/cpu/microcode/private.h                | 6 +++---
 xen/arch/x86/cpu/mtrr/mtrr.h                        | 6 +++---
 xen/arch/x86/guest/hyperv/private.h                 | 6 +++---
 xen/arch/x86/hvm/svm/nestedhvm.h                    | 6 +++---
 xen/arch/x86/hvm/svm/svm.h                          | 6 +++---
 xen/arch/x86/hvm/viridian/private.h                 | 6 +++---
 xen/arch/x86/include/asm/acpi.h                     | 4 ++--
 xen/arch/x86/include/asm/alternative-asm.h          | 6 +++---
 xen/arch/x86/include/asm/alternative.h              | 6 +++---
 xen/arch/x86/include/asm/altp2m.h                   | 6 +++---
 xen/arch/x86/include/asm/amd.h                      | 6 +++---
 xen/arch/x86/include/asm/apic.h                     | 6 +++---
 xen/arch/x86/include/asm/apicdef.h                  | 4 ++--
 xen/arch/x86/include/asm/asm_defns.h                | 6 +++---
 xen/arch/x86/include/asm/atomic.h                   | 6 +++---
 xen/arch/x86/include/asm/bitops.h                   | 6 +++---
 xen/arch/x86/include/asm/bug.h                      | 6 +++---
 xen/arch/x86/include/asm/byteorder.h                | 6 +++---
 xen/arch/x86/include/asm/bzimage.h                  | 6 +++---
 xen/arch/x86/include/asm/cache.h                    | 4 ++--
 xen/arch/x86/include/asm/config.h                   | 6 +++---
 xen/arch/x86/include/asm/cpu-policy.h               | 6 +++---
 xen/arch/x86/include/asm/cpufeature.h               | 6 +++---
 xen/arch/x86/include/asm/cpufeatureset.h            | 6 +++---
 xen/arch/x86/include/asm/cpuid.h                    | 6 +++---
 xen/arch/x86/include/asm/cpuidle.h                  | 4 ++--
 xen/arch/x86/include/asm/current.h                  | 6 +++---
 xen/arch/x86/include/asm/debugreg.h                 | 6 +++---
 xen/arch/x86/include/asm/desc.h                     | 6 +++---
 xen/arch/x86/include/asm/device.h                   | 6 +++---
 xen/arch/x86/include/asm/dom0_build.h               | 6 +++---
 xen/arch/x86/include/asm/domain.h                   | 6 +++---
 xen/arch/x86/include/asm/e820.h                     | 6 +++---
 xen/arch/x86/include/asm/edd.h                      | 6 +++---
 xen/arch/x86/include/asm/elf.h                      | 6 +++---
 xen/arch/x86/include/asm/endbr.h                    | 6 +++---
 xen/arch/x86/include/asm/event.h                    | 4 ++--
 xen/arch/x86/include/asm/fixmap.h                   | 4 ++--
 xen/arch/x86/include/asm/flushtlb.h                 | 6 +++---
 xen/arch/x86/include/asm/gdbsx.h                    | 6 +++---
 xen/arch/x86/include/asm/genapic.h                  | 4 ++--
 xen/arch/x86/include/asm/grant_table.h              | 6 +++---
 xen/arch/x86/include/asm/guest.h                    | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-hcall.h       | 6 +++---
 xen/arch/x86/include/asm/guest/hyperv-tlfs.h        | 4 ++--
 xen/arch/x86/include/asm/guest/hyperv.h             | 6 +++---
 xen/arch/x86/include/asm/guest/hypervisor.h         | 6 +++---
 xen/arch/x86/include/asm/guest/pvh-boot.h           | 6 +++---
 xen/arch/x86/include/asm/guest/xen-hcall.h          | 6 +++---
 xen/arch/x86/include/asm/guest/xen.h                | 6 +++---
 xen/arch/x86/include/asm/guest_access.h             | 6 +++---
 xen/arch/x86/include/asm/guest_atomics.h            | 6 +++---
 xen/arch/x86/include/asm/guest_pt.h                 | 6 +++---
 xen/arch/x86/include/asm/hap.h                      | 4 ++--
 xen/arch/x86/include/asm/hardirq.h                  | 6 +++---
 xen/arch/x86/include/asm/hpet.h                     | 6 +++---
 xen/arch/x86/include/asm/hvm/asid.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/cacheattr.h            | 6 +++---
 xen/arch/x86/include/asm/hvm/domain.h               | 6 +++---
 xen/arch/x86/include/asm/hvm/emulate.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/grant_table.h          | 6 +++---
 xen/arch/x86/include/asm/hvm/guest_access.h         | 6 +++---
 xen/arch/x86/include/asm/hvm/hvm.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/io.h                   | 6 +++---
 xen/arch/x86/include/asm/hvm/ioreq.h                | 6 +++---
 xen/arch/x86/include/asm/hvm/irq.h                  | 6 +++---
 xen/arch/x86/include/asm/hvm/nestedhvm.h            | 6 +++---
 xen/arch/x86/include/asm/hvm/save.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/support.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/nestedsvm.h        | 4 ++--
 xen/arch/x86/include/asm/hvm/svm/svm.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/svmdebug.h         | 6 +++---
 xen/arch/x86/include/asm/hvm/svm/vmcb.h             | 4 ++--
 xen/arch/x86/include/asm/hvm/vcpu.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vioapic.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/viridian.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/vlapic.h               | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h             | 4 ++--
 xen/arch/x86/include/asm/hvm/vmx/vmx.h              | 6 +++---
 xen/arch/x86/include/asm/hvm/vmx/vvmx.h             | 6 +++---
 xen/arch/x86/include/asm/hvm/vpic.h                 | 6 +++---
 xen/arch/x86/include/asm/hvm/vpt.h                  | 6 +++---
 xen/arch/x86/include/asm/hypercall.h                | 6 +++---
 xen/arch/x86/include/asm/i387.h                     | 6 +++---
 xen/arch/x86/include/asm/intel-family.h             | 6 +++---
 xen/arch/x86/include/asm/invpcid.h                  | 6 +++---
 xen/arch/x86/include/asm/io.h                       | 4 ++--
 xen/arch/x86/include/asm/io_apic.h                  | 4 ++--
 xen/arch/x86/include/asm/iocap.h                    | 6 +++---
 xen/arch/x86/include/asm/iommu.h                    | 6 +++---
 xen/arch/x86/include/asm/ioreq.h                    | 6 +++---
 xen/arch/x86/include/asm/irq.h                      | 6 +++---
 xen/arch/x86/include/asm/ldt.h                      | 4 ++--
 xen/arch/x86/include/asm/mach-default/bios_ebda.h   | 6 +++---
 xen/arch/x86/include/asm/mach-default/io_ports.h    | 6 +++---
 xen/arch/x86/include/asm/mach-default/irq_vectors.h | 6 +++---
 xen/arch/x86/include/asm/mach-default/mach_mpspec.h | 6 +++---
 xen/arch/x86/include/asm/mach-generic/mach_apic.h   | 6 +++---
 xen/arch/x86/include/asm/machine_kexec.h            | 6 +++---
 xen/arch/x86/include/asm/mc146818rtc.h              | 6 +++---
 xen/arch/x86/include/asm/mce.h                      | 4 ++--
 xen/arch/x86/include/asm/mem_paging.h               | 6 +++---
 xen/arch/x86/include/asm/mem_sharing.h              | 6 +++---
 xen/arch/x86/include/asm/microcode.h                | 6 +++---
 xen/arch/x86/include/asm/mm.h                       | 6 +++---
 xen/arch/x86/include/asm/mpspec.h                   | 4 ++--
 xen/arch/x86/include/asm/mpspec_def.h               | 4 ++--
 xen/arch/x86/include/asm/msi.h                      | 6 +++---
 xen/arch/x86/include/asm/msr-index.h                | 6 +++---
 xen/arch/x86/include/asm/msr.h                      | 6 +++---
 xen/arch/x86/include/asm/mtrr.h                     | 6 +++---
 xen/arch/x86/include/asm/multicall.h                | 6 +++---
 xen/arch/x86/include/asm/mwait.h                    | 6 +++---
 xen/arch/x86/include/asm/nmi.h                      | 6 +++---
 xen/arch/x86/include/asm/nops.h                     | 6 +++---
 xen/arch/x86/include/asm/nospec.h                   | 6 +++---
 xen/arch/x86/include/asm/numa.h                     | 4 ++--
 xen/arch/x86/include/asm/p2m.h                      | 6 +++---
 xen/arch/x86/include/asm/page-bits.h                | 6 +++---
 xen/arch/x86/include/asm/page.h                     | 6 +++---
 xen/arch/x86/include/asm/paging.h                   | 4 ++--
 xen/arch/x86/include/asm/pci.h                      | 6 +++---
 xen/arch/x86/include/asm/perfc.h                    | 4 ++--
 xen/arch/x86/include/asm/perfc_defn.h               | 6 +++---
 xen/arch/x86/include/asm/processor.h                | 6 +++---
 xen/arch/x86/include/asm/prot-key.h                 | 6 +++---
 xen/arch/x86/include/asm/psr.h                      | 6 +++---
 xen/arch/x86/include/asm/pt-contig-markers.h        | 6 +++---
 xen/arch/x86/include/asm/pv/domain.h                | 6 +++---
 xen/arch/x86/include/asm/pv/grant_table.h           | 6 +++---
 xen/arch/x86/include/asm/pv/mm.h                    | 6 +++---
 xen/arch/x86/include/asm/pv/shim.h                  | 6 +++---
 xen/arch/x86/include/asm/pv/trace.h                 | 6 +++---
 xen/arch/x86/include/asm/pv/traps.h                 | 6 +++---
 xen/arch/x86/include/asm/random.h                   | 6 +++---
 xen/arch/x86/include/asm/regs.h                     | 6 +++---
 xen/arch/x86/include/asm/setup.h                    | 4 ++--
 xen/arch/x86/include/asm/shadow.h                   | 6 +++---
 xen/arch/x86/include/asm/shared.h                   | 6 +++---
 xen/arch/x86/include/asm/shstk.h                    | 6 +++---
 xen/arch/x86/include/asm/smp.h                      | 4 ++--
 xen/arch/x86/include/asm/softirq.h                  | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl.h                | 6 +++---
 xen/arch/x86/include/asm/spec_ctrl_asm.h            | 6 +++---
 xen/arch/x86/include/asm/spinlock.h                 | 6 +++---
 xen/arch/x86/include/asm/string.h                   | 6 +++---
 xen/arch/x86/include/asm/system.h                   | 4 ++--
 xen/arch/x86/include/asm/time.h                     | 6 +++---
 xen/arch/x86/include/asm/trampoline.h               | 6 +++---
 xen/arch/x86/include/asm/traps.h                    | 6 +++---
 xen/arch/x86/include/asm/types.h                    | 6 +++---
 xen/arch/x86/include/asm/uaccess.h                  | 6 +++---
 xen/arch/x86/include/asm/vpmu.h                     | 6 +++---
 xen/arch/x86/include/asm/x86-defns.h                | 6 +++---
 xen/arch/x86/include/asm/x86-vendors.h              | 6 +++---
 xen/arch/x86/include/asm/x86_64/elf.h               | 6 +++---
 xen/arch/x86/include/asm/x86_64/page.h              | 6 +++---
 xen/arch/x86/include/asm/x86_64/regs.h              | 4 ++--
 xen/arch/x86/include/asm/x86_64/system.h            | 6 +++---
 xen/arch/x86/include/asm/x86_64/uaccess.h           | 6 +++---
 xen/arch/x86/include/asm/x86_emulate.h              | 6 +++---
 xen/arch/x86/include/asm/xenoprof.h                 | 6 +++---
 xen/arch/x86/include/asm/xstate.h                   | 6 +++---
 xen/arch/x86/mm/hap/private.h                       | 6 +++---
 xen/arch/x86/mm/mm-locks.h                          | 6 +++---
 xen/arch/x86/mm/p2m.h                               | 6 +++---
 xen/arch/x86/mm/shadow/private.h                    | 6 +++---
 xen/arch/x86/mm/shadow/types.h                      | 6 +++---
 xen/arch/x86/oprofile/op_counter.h                  | 6 +++---
 xen/arch/x86/oprofile/op_x86_model.h                | 6 +++---
 xen/arch/x86/pv/emulate.h                           | 6 +++---
 xen/arch/x86/pv/mm.h                                | 6 +++---
 xen/arch/x86/x86_emulate/x86_emulate.h              | 6 +++---
 xen/include/xen/lib/x86/cpu-policy.h                | 6 +++---
 xen/lib/x86/private.h                               | 6 +++---
 184 files changed, 522 insertions(+), 522 deletions(-)
---
Changes since v2:
- exclude missing public headers.

diff --git a/xen/arch/x86/boot/video.h b/xen/arch/x86/boot/video.h
index 1203515f9e..cecd8965b7 100644
--- a/xen/arch/x86/boot/video.h
+++ b/xen/arch/x86/boot/video.h
@@ -1,5 +1,5 @@
-#ifndef __BOOT_VIDEO_H__
-#define __BOOT_VIDEO_H__
+#ifndef X86__BOOT__VIDEO_H
+#define X86__BOOT__VIDEO_H
 
 /*
  * Video modes numbered by menu position -- NOT RECOMMENDED because of lack
@@ -71,4 +71,4 @@ struct boot_video_info {
 extern struct boot_video_info boot_vid_info;
 #endif /* __ASSEMBLY__ */
 
-#endif /* __BOOT_VIDEO_H__ */
+#endif /* X86__BOOT__VIDEO_H */
diff --git a/xen/arch/x86/cpu/mcheck/barrier.h b/xen/arch/x86/cpu/mcheck/barrier.h
index 7ec483226f..c4c59ce627 100644
--- a/xen/arch/x86/cpu/mcheck/barrier.h
+++ b/xen/arch/x86/cpu/mcheck/barrier.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_BARRIER_H
-#define _MCHECK_BARRIER_H
+#ifndef X86__CPU__MCHECK__BARRIER_H
+#define X86__CPU__MCHECK__BARRIER_H
 
 #include <asm/atomic.h>
 
@@ -58,4 +58,4 @@ void mce_barrier_exit(struct mce_softirq_barrier *bar, bool do_wait);
 
 void mce_barrier(struct mce_softirq_barrier *bar);
 
-#endif /* _MCHECK_BARRIER_H */
+#endif /* X86__CPU__MCHECK__BARRIER_H */
diff --git a/xen/arch/x86/cpu/mcheck/mcaction.h b/xen/arch/x86/cpu/mcheck/mcaction.h
index 6c79498cd2..e5a7cb9e0d 100644
--- a/xen/arch/x86/cpu/mcheck/mcaction.h
+++ b/xen/arch/x86/cpu/mcheck/mcaction.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_ACTION_H
-#define _MCHECK_ACTION_H
+#ifndef X86__CPU__MCHECK__MCACTION_H
+#define X86__CPU__MCHECK__MCACTION_H
 
 #include <xen/types.h>
 #include "x86_mca.h"
diff --git a/xen/arch/x86/cpu/mcheck/mce.h b/xen/arch/x86/cpu/mcheck/mce.h
index eba4b536c7..f2a423f029 100644
--- a/xen/arch/x86/cpu/mcheck/mce.h
+++ b/xen/arch/x86/cpu/mcheck/mce.h
@@ -1,6 +1,6 @@
-#ifndef _MCE_H
+#ifndef X86__CPU__MCHECK__MCE_H
 
-#define _MCE_H
+#define X86__CPU__MCHECK__MCE_H
 
 #include <xen/init.h>
 #include <xen/percpu.h>
@@ -244,4 +244,4 @@ struct mce {
 
 extern int apei_write_mce(struct mce *m);
 
-#endif /* _MCE_H */
+#endif /* X86__CPU__MCHECK__MCE_H */
diff --git a/xen/arch/x86/cpu/mcheck/mce_amd.h b/xen/arch/x86/cpu/mcheck/mce_amd.h
index c12c25d745..35e3bc6a6d 100644
--- a/xen/arch/x86/cpu/mcheck/mce_amd.h
+++ b/xen/arch/x86/cpu/mcheck/mce_amd.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_AMD_H
-#define _MCHECK_AMD_H
+#ifndef X86__CPU__MCHECK__MCE_AMD_H
+#define X86__CPU__MCHECK__MCE_AMD_H
 
 bool cf_check mc_amd_recoverable_scan(uint64_t status);
 bool cf_check mc_amd_addrcheck(uint64_t status, uint64_t misc, int addrtype);
diff --git a/xen/arch/x86/cpu/mcheck/mctelem.h b/xen/arch/x86/cpu/mcheck/mctelem.h
index f4c5ff848d..a77c9bcffb 100644
--- a/xen/arch/x86/cpu/mcheck/mctelem.h
+++ b/xen/arch/x86/cpu/mcheck/mctelem.h
@@ -8,9 +8,9 @@
  * License.
  */
 
-#ifndef _MCTELEM_H
+#ifndef X86__CPU__MCHECK__MCTELEM_H
 
-#define	_MCTELEM_H
+#define	X86__CPU__MCHECK__MCTELEM_H
 
 #include <xen/init.h>
 #include <xen/smp.h>
diff --git a/xen/arch/x86/cpu/mcheck/util.h b/xen/arch/x86/cpu/mcheck/util.h
index a5468b89fa..b4a71e21d4 100644
--- a/xen/arch/x86/cpu/mcheck/util.h
+++ b/xen/arch/x86/cpu/mcheck/util.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_UTIL_H
-#define _MCHECK_UTIL_H
+#ifndef X86__CPU__MCHECK__UTIL_H
+#define X86__CPU__MCHECK__UTIL_H
 
 void mce_panic_check(void);
 
diff --git a/xen/arch/x86/cpu/mcheck/vmce.h b/xen/arch/x86/cpu/mcheck/vmce.h
index a9a325f776..d934b02c8b 100644
--- a/xen/arch/x86/cpu/mcheck/vmce.h
+++ b/xen/arch/x86/cpu/mcheck/vmce.h
@@ -1,5 +1,5 @@
-#ifndef _MCHECK_VMCE_H
-#define _MCHECK_VMCE_H
+#ifndef X86__CPU__MCHECK__VMCE_H
+#define X86__CPU__MCHECK__VMCE_H
 
 #include "x86_mca.h"
 
diff --git a/xen/arch/x86/cpu/mcheck/x86_mca.h b/xen/arch/x86/cpu/mcheck/x86_mca.h
index 18116737af..d5514762ed 100644
--- a/xen/arch/x86/cpu/mcheck/x86_mca.h
+++ b/xen/arch/x86/cpu/mcheck/x86_mca.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2007-2012 Advanced Micro Devices, Inc. 
  */
 
-#ifndef X86_MCA_H
-#define X86_MCA_H
+#ifndef X86__CPU__MCHECK__X86_MCA_H
+#define X86__CPU__MCHECK__X86_MCA_H
 
 #include <public/arch-x86/xen-mca.h>
 
@@ -150,4 +150,4 @@ struct mca_error_handler
 /* Global variables */
 extern bool opt_mce;
 
-#endif /* X86_MCA_H */
+#endif /* X86__CPU__MCHECK__X86_MCA_H */
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index c72f060ac3..a3707863b9 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -1,5 +1,5 @@
-#ifndef ASM_X86_MICROCODE_PRIVATE_H
-#define ASM_X86_MICROCODE_PRIVATE_H
+#ifndef X86__CPU__MICROCODE__PRIVATE_H
+#define X86__CPU__MICROCODE__PRIVATE_H
 
 #include <public/platform.h>
 
@@ -83,4 +83,4 @@ void ucode_probe_intel(struct microcode_ops *ops);
 static inline void ucode_probe_intel(struct microcode_ops *ops) {}
 #endif
 
-#endif /* ASM_X86_MICROCODE_PRIVATE_H */
+#endif /* X86__CPU__MICROCODE__PRIVATE_H */
diff --git a/xen/arch/x86/cpu/mtrr/mtrr.h b/xen/arch/x86/cpu/mtrr/mtrr.h
index 632bf658be..c23987cedc 100644
--- a/xen/arch/x86/cpu/mtrr/mtrr.h
+++ b/xen/arch/x86/cpu/mtrr/mtrr.h
@@ -1,8 +1,8 @@
 /*
  * local mtrr defines.
  */
-#ifndef X86_CPU_MTRR_MTRR_H
-#define X86_CPU_MTRR_MTRR_H
+#ifndef X86__CPU__MTRR__MTRR_H
+#define X86__CPU__MTRR__MTRR_H
 
 #define MTRR_CHANGE_MASK_FIXED     0x01
 #define MTRR_CHANGE_MASK_VARIABLE  0x02
@@ -28,4 +28,4 @@ extern unsigned int num_var_ranges;
 
 void mtrr_state_warn(void);
 
-#endif /* X86_CPU_MTRR_MTRR_H */
+#endif /* X86__CPU__MTRR__MTRR_H */
diff --git a/xen/arch/x86/guest/hyperv/private.h b/xen/arch/x86/guest/hyperv/private.h
index 0277e8314c..790872e3c9 100644
--- a/xen/arch/x86/guest/hyperv/private.h
+++ b/xen/arch/x86/guest/hyperv/private.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2020 Microsoft.
  */
 
-#ifndef __XEN_HYPERV_PRIVIATE_H__
-#define __XEN_HYPERV_PRIVIATE_H__
+#ifndef X86__GUEST__HYPERV__PRIVATE_H
+#define X86__GUEST__HYPERV__PRIVATE_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
@@ -29,4 +29,4 @@ int hyperv_flush_tlb(const cpumask_t *mask, const void *va,
 /* Returns number of banks, -ev if error */
 int cpumask_to_vpset(struct hv_vpset *vpset, const cpumask_t *mask);
 
-#endif /* __XEN_HYPERV_PRIVIATE_H__  */
+#endif /* X86__GUEST__HYPERV__PRIVATE_H  */
diff --git a/xen/arch/x86/hvm/svm/nestedhvm.h b/xen/arch/x86/hvm/svm/nestedhvm.h
index 43245e13de..dd3533c74b 100644
--- a/xen/arch/x86/hvm/svm/nestedhvm.h
+++ b/xen/arch/x86/hvm/svm/nestedhvm.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2011, Advanced Micro Devices, Inc
  */
 
-#ifndef __X86_HVM_SVM_NESTEDHVM_PRIV_H__
-#define __X86_HVM_SVM_NESTEDHVM_PRIV_H__
+#ifndef X86__HVM__SVM__NESTEDHVM_H
+#define X86__HVM__SVM__NESTEDHVM_H
 
 #include <xen/mm.h>
 #include <xen/types.h>
@@ -64,7 +64,7 @@ int cf_check nsvm_hap_walk_L1_p2m(
 
 int nestedsvm_vcpu_interrupt(struct vcpu *v, const struct hvm_intack intack);
 
-#endif /* __X86_HVM_SVM_NESTEDHVM_PRIV_H__ */
+#endif /* X86__HVM__SVM__NESTEDHVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/hvm/svm/svm.h b/xen/arch/x86/hvm/svm/svm.h
index 8dbf37ff49..159cc71943 100644
--- a/xen/arch/x86/hvm/svm/svm.h
+++ b/xen/arch/x86/hvm/svm/svm.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __X86_HVM_SVM_SVM_PRIV_H__
-#define __X86_HVM_SVM_SVM_PRIV_H__
+#ifndef X86__HVM__SVM__SVM_H
+#define X86__HVM__SVM__SVM_H
 
 #include <xen/types.h>
 
@@ -86,7 +86,7 @@ unsigned int svm_get_task_switch_insn_len(void);
 #define _NPT_PFEC_in_gpt       33
 #define NPT_PFEC_in_gpt        (1UL<<_NPT_PFEC_in_gpt)
 
-#endif /* __X86_HVM_SVM_SVM_PRIV_H__ */
+#endif /* X86__HVM__SVM__SVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/hvm/viridian/private.h b/xen/arch/x86/hvm/viridian/private.h
index 1bf65c761c..c10544842f 100644
--- a/xen/arch/x86/hvm/viridian/private.h
+++ b/xen/arch/x86/hvm/viridian/private.h
@@ -1,7 +1,7 @@
 /* Copyright (c) 2018 Citrix Systems Inc. */
 
-#ifndef X86_HVM_VIRIDIAN_PRIVATE_H
-#define X86_HVM_VIRIDIAN_PRIVATE_H
+#ifndef X86__HVM__VIRIDIAN__PRIVATE_H
+#define X86__HVM__VIRIDIAN__PRIVATE_H
 
 #include <asm/hvm/save.h>
 #include <asm/hvm/viridian.h>
@@ -57,7 +57,7 @@ void viridian_dump_guest_page(const struct vcpu *v, const char *name,
 void viridian_map_guest_page(struct domain *d, struct viridian_page *vp);
 void viridian_unmap_guest_page(struct viridian_page *vp);
 
-#endif /* X86_HVM_VIRIDIAN_PRIVATE_H */
+#endif /* X86__HVM__VIRIDIAN__PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/acpi.h b/xen/arch/x86/include/asm/acpi.h
index 217819dd61..5784b10b1f 100644
--- a/xen/arch/x86/include/asm/acpi.h
+++ b/xen/arch/x86/include/asm/acpi.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_ACPI_H
-#define _ASM_X86_ACPI_H
+#ifndef ASM__X86__ACPI_H
+#define ASM__X86__ACPI_H
 
 /*
  *  Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com>
diff --git a/xen/arch/x86/include/asm/alternative-asm.h b/xen/arch/x86/include/asm/alternative-asm.h
index 83e8594f0e..9ad8fb9213 100644
--- a/xen/arch/x86/include/asm/alternative-asm.h
+++ b/xen/arch/x86/include/asm/alternative-asm.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_ALTERNATIVE_ASM_H_
-#define _ASM_X86_ALTERNATIVE_ASM_H_
+#ifndef ASM__X86__ALTERNATIVE_ASM_H
+#define ASM__X86__ALTERNATIVE_ASM_H
 
 #include <asm/nops.h>
 
@@ -115,7 +115,7 @@
 #undef as_true
 
 #endif /* __ASSEMBLY__ */
-#endif /* _ASM_X86_ALTERNATIVE_ASM_H_ */
+#endif /* ASM__X86__ALTERNATIVE_ASM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/alternative.h b/xen/arch/x86/include/asm/alternative.h
index 38472fb58e..d4c0fb014c 100644
--- a/xen/arch/x86/include/asm/alternative.h
+++ b/xen/arch/x86/include/asm/alternative.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ALTERNATIVE_H__
-#define __X86_ALTERNATIVE_H__
+#ifndef ASM__X86__ALTERNATIVE_H
+#define ASM__X86__ALTERNATIVE_H
 
 #ifdef __ASSEMBLY__
 #include <asm/alternative-asm.h>
@@ -423,4 +423,4 @@ extern void alternative_branches(void);
 
 #endif /*  !__ASSEMBLY__  */
 
-#endif /* __X86_ALTERNATIVE_H__ */
+#endif /* ASM__X86__ALTERNATIVE_H */
diff --git a/xen/arch/x86/include/asm/altp2m.h b/xen/arch/x86/include/asm/altp2m.h
index c57a8c5588..f43b075ed0 100644
--- a/xen/arch/x86/include/asm/altp2m.h
+++ b/xen/arch/x86/include/asm/altp2m.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2014, Intel Corporation.
  */
 
-#ifndef __ASM_X86_ALTP2M_H
-#define __ASM_X86_ALTP2M_H
+#ifndef ASM__X86__ALTP2M_H
+#define ASM__X86__ALTP2M_H
 
 #ifdef CONFIG_ALTP2M
 
@@ -46,4 +46,4 @@ void altp2m_vcpu_disable_ve(struct vcpu *v);
 
 #endif
 
-#endif /* __ASM_X86_ALTP2M_H */
+#endif /* ASM__X86__ALTP2M_H */
diff --git a/xen/arch/x86/include/asm/amd.h b/xen/arch/x86/include/asm/amd.h
index 9c9599a622..7dbd8fae06 100644
--- a/xen/arch/x86/include/asm/amd.h
+++ b/xen/arch/x86/include/asm/amd.h
@@ -2,8 +2,8 @@
  * amd.h - AMD processor specific definitions
  */
 
-#ifndef __AMD_H__
-#define __AMD_H__
+#ifndef ASM__X86__AMD_H
+#define ASM__X86__AMD_H
 
 #include <asm/cpufeature.h>
 
@@ -174,4 +174,4 @@ bool amd_setup_legacy_ssbd(void);
 void amd_set_legacy_ssbd(bool enable);
 void amd_set_cpuid_user_dis(bool enable);
 
-#endif /* __AMD_H__ */
+#endif /* ASM__X86__AMD_H */
diff --git a/xen/arch/x86/include/asm/apic.h b/xen/arch/x86/include/asm/apic.h
index d8eda6df6d..87970cfce7 100644
--- a/xen/arch/x86/include/asm/apic.h
+++ b/xen/arch/x86/include/asm/apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_APIC_H
-#define __ASM_APIC_H
+#ifndef ASM__X86__APIC_H
+#define ASM__X86__APIC_H
 
 #include <asm/apicdef.h>
 #include <asm/fixmap.h>
@@ -201,4 +201,4 @@ extern unsigned int nmi_watchdog;
 #define NMI_NONE	0
 #define NMI_LOCAL_APIC	1
 
-#endif /* __ASM_APIC_H */
+#endif /* ASM__X86__APIC_H */
diff --git a/xen/arch/x86/include/asm/apicdef.h b/xen/arch/x86/include/asm/apicdef.h
index 49e29ec801..8d9a29d488 100644
--- a/xen/arch/x86/include/asm/apicdef.h
+++ b/xen/arch/x86/include/asm/apicdef.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_APICDEF_H
-#define __ASM_APICDEF_H
+#ifndef ASM__X86__APICDEF_H
+#define ASM__X86__APICDEF_H
 
 /*
  * Constants for various Intel APICs. (local APIC, IOAPIC, etc.)
diff --git a/xen/arch/x86/include/asm/asm_defns.h b/xen/arch/x86/include/asm/asm_defns.h
index 92b4116a15..812bd5c52a 100644
--- a/xen/arch/x86/include/asm/asm_defns.h
+++ b/xen/arch/x86/include/asm/asm_defns.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_ASM_DEFNS_H__
-#define __X86_ASM_DEFNS_H__
+#ifndef ASM__X86__ASM_DEFNS_H
+#define ASM__X86__ASM_DEFNS_H
 
 #ifndef COMPILE_OFFSETS
 /* NB. Auto-generated from arch/.../asm-offsets.c */
@@ -346,4 +346,4 @@ static always_inline void stac(void)
 #define ASM_CONSTANT(name, value)                \
     asm ( ".equ " #name ", %P0; .global " #name  \
           :: "i" ((value)) );
-#endif /* __X86_ASM_DEFNS_H__ */
+#endif /* ASM__X86__ASM_DEFNS_H */
diff --git a/xen/arch/x86/include/asm/atomic.h b/xen/arch/x86/include/asm/atomic.h
index 16bd0ebfd7..f852b154ef 100644
--- a/xen/arch/x86/include/asm/atomic.h
+++ b/xen/arch/x86/include/asm/atomic.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_X86_ATOMIC__
-#define __ARCH_X86_ATOMIC__
+#ifndef ASM__X86__ATOMIC_H
+#define ASM__X86__ATOMIC_H
 
 #include <xen/atomic.h>
 #include <asm/system.h>
@@ -236,4 +236,4 @@ static inline void atomic_and(int m, atomic_t *v)
 
 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
 
-#endif /* __ARCH_X86_ATOMIC__ */
+#endif /* ASM__X86__ATOMIC_H */
diff --git a/xen/arch/x86/include/asm/bitops.h b/xen/arch/x86/include/asm/bitops.h
index 39e37f1cbe..613310c1e2 100644
--- a/xen/arch/x86/include/asm/bitops.h
+++ b/xen/arch/x86/include/asm/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _X86_BITOPS_H
-#define _X86_BITOPS_H
+#ifndef ASM__X86__BITOPS_H
+#define ASM__X86__BITOPS_H
 
 /*
  * Copyright 1992, Linus Torvalds.
@@ -498,4 +498,4 @@ static always_inline unsigned int arch_hweightl(unsigned long x)
 }
 #define arch_hweightl arch_hweightl
 
-#endif /* _X86_BITOPS_H */
+#endif /* ASM__X86__BITOPS_H */
diff --git a/xen/arch/x86/include/asm/bug.h b/xen/arch/x86/include/asm/bug.h
index e748b6c2f2..59a9871cba 100644
--- a/xen/arch/x86/include/asm/bug.h
+++ b/xen/arch/x86/include/asm/bug.h
@@ -1,5 +1,5 @@
-#ifndef __X86_BUG_H__
-#define __X86_BUG_H__
+#ifndef ASM__X86__BUG_H
+#define ASM__X86__BUG_H
 
 /*
  * Please do not include in the header any header that might
@@ -68,4 +68,4 @@
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __X86_BUG_H__ */
+#endif /* ASM__X86__BUG_H */
diff --git a/xen/arch/x86/include/asm/byteorder.h b/xen/arch/x86/include/asm/byteorder.h
index a877c07f67..802d50e3fc 100644
--- a/xen/arch/x86/include/asm/byteorder.h
+++ b/xen/arch/x86/include/asm/byteorder.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_BYTEORDER_H__
-#define __ASM_X86_BYTEORDER_H__
+#ifndef ASM__X86__BYTEORDER_H
+#define ASM__X86__BYTEORDER_H
 
 #include <xen/types.h>
 #include <xen/compiler.h>
@@ -33,4 +33,4 @@ static inline attr_const __u64 ___arch__swab64(__u64 val)
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_X86_BYTEORDER_H__ */
+#endif /* ASM__X86__BYTEORDER_H */
diff --git a/xen/arch/x86/include/asm/bzimage.h b/xen/arch/x86/include/asm/bzimage.h
index 7ed69d3910..53c86f0d5b 100644
--- a/xen/arch/x86/include/asm/bzimage.h
+++ b/xen/arch/x86/include/asm/bzimage.h
@@ -1,5 +1,5 @@
-#ifndef __X86_BZIMAGE_H__
-#define __X86_BZIMAGE_H__
+#ifndef ASM__X86__BZIMAGE_H
+#define ASM__X86__BZIMAGE_H
 
 #include <xen/init.h>
 
@@ -8,4 +8,4 @@ unsigned long bzimage_headroom(void *image_start, unsigned long image_length);
 int bzimage_parse(void *image_base, void **image_start,
                   unsigned long *image_len);
 
-#endif /* __X86_BZIMAGE_H__ */
+#endif /* ASM__X86__BZIMAGE_H */
diff --git a/xen/arch/x86/include/asm/cache.h b/xen/arch/x86/include/asm/cache.h
index f15d10dc7f..8683cecee2 100644
--- a/xen/arch/x86/include/asm/cache.h
+++ b/xen/arch/x86/include/asm/cache.h
@@ -1,8 +1,8 @@
 /*
  * include/asm-x86/cache.h
  */
-#ifndef __ARCH_X86_CACHE_H
-#define __ARCH_X86_CACHE_H
+#ifndef ASM__X86__CACHE_H
+#define ASM__X86__CACHE_H
 
 
 /* L1 cache line size */
diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index f8a5a4913b..9d931f4ace 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __X86_CONFIG_H__
-#define __X86_CONFIG_H__
+#ifndef ASM__X86__CONFIG_H
+#define ASM__X86__CONFIG_H
 
 #define LONG_BYTEORDER 3
 #define CONFIG_PAGING_LEVELS 4
@@ -292,4 +292,4 @@ extern unsigned long xen_phys_start;
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
 
-#endif /* __X86_CONFIG_H__ */
+#endif /* ASM__X86__CONFIG_H */
diff --git a/xen/arch/x86/include/asm/cpu-policy.h b/xen/arch/x86/include/asm/cpu-policy.h
index 99d5a8e67e..c69df4526f 100644
--- a/xen/arch/x86/include/asm/cpu-policy.h
+++ b/xen/arch/x86/include/asm/cpu-policy.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef X86_CPU_POLICY_H
-#define X86_CPU_POLICY_H
+#ifndef ASM__X86__CPU_POLICY_H
+#define ASM__X86__CPU_POLICY_H
 
 struct cpu_policy;
 struct domain;
@@ -30,4 +30,4 @@ void recalculate_cpuid_policy(struct domain *d);
  */
 void calculate_raw_cpu_policy(void);
 
-#endif /* X86_CPU_POLICY_H */
+#endif /* ASM__X86__CPU_POLICY_H */
diff --git a/xen/arch/x86/include/asm/cpufeature.h b/xen/arch/x86/include/asm/cpufeature.h
index 3a06b6f297..478b9cd2bd 100644
--- a/xen/arch/x86/include/asm/cpufeature.h
+++ b/xen/arch/x86/include/asm/cpufeature.h
@@ -3,8 +3,8 @@
  *
  * Defines x86 CPU feature bits
  */
-#ifndef __ASM_I386_CPUFEATURE_H
-#define __ASM_I386_CPUFEATURE_H
+#ifndef ASM__X86__CPUFEATURE_H
+#define ASM__X86__CPUFEATURE_H
 
 #include <xen/cache.h>
 #include <xen/const.h>
@@ -281,7 +281,7 @@ struct cpuid4_info {
 int cpuid4_cache_lookup(int index, struct cpuid4_info *this_leaf);
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ASM_I386_CPUFEATURE_H */
+#endif /* ASM__X86__CPUFEATURE_H */
 
 /* 
  * Local Variables:
diff --git a/xen/arch/x86/include/asm/cpufeatureset.h b/xen/arch/x86/include/asm/cpufeatureset.h
index a9c51bc514..037b4b6997 100644
--- a/xen/arch/x86/include/asm/cpufeatureset.h
+++ b/xen/arch/x86/include/asm/cpufeatureset.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_CPUFEATURESET_H__
-#define __XEN_X86_CPUFEATURESET_H__
+#ifndef ASM__X86__CPUFEATURESET_H
+#define ASM__X86__CPUFEATURESET_H
 
 #ifndef __ASSEMBLY__
 
@@ -27,7 +27,7 @@ enum {
 
 #undef XEN_CPUFEATURE
 
-#endif /* !__XEN_X86_CPUFEATURESET_H__ */
+#endif /* !ASM__X86__CPUFEATURESET_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/cpuid.h b/xen/arch/x86/include/asm/cpuid.h
index b32ba0bbfe..6cfebbb4eb 100644
--- a/xen/arch/x86/include/asm/cpuid.h
+++ b/xen/arch/x86/include/asm/cpuid.h
@@ -1,5 +1,5 @@
-#ifndef __X86_CPUID_H__
-#define __X86_CPUID_H__
+#ifndef ASM__X86__CPUID_H
+#define ASM__X86__CPUID_H
 
 #include <asm/cpufeatureset.h>
 
@@ -51,7 +51,7 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
                  uint32_t subleaf, struct cpuid_leaf *res);
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_CPUID_H__ */
+#endif /* !ASM__X86__CPUID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/cpuidle.h b/xen/arch/x86/include/asm/cpuidle.h
index 3a6b73142b..bfa11d1451 100644
--- a/xen/arch/x86/include/asm/cpuidle.h
+++ b/xen/arch/x86/include/asm/cpuidle.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_CPUIDLE_H__
-#define __ASM_X86_CPUIDLE_H__
+#ifndef ASM__X86__CPUIDLE_H
+#define ASM__X86__CPUIDLE_H
 
 #include <xen/cpuidle.h>
 #include <xen/notifier.h>
diff --git a/xen/arch/x86/include/asm/current.h b/xen/arch/x86/include/asm/current.h
index bcec328c98..1aebbf991b 100644
--- a/xen/arch/x86/include/asm/current.h
+++ b/xen/arch/x86/include/asm/current.h
@@ -4,8 +4,8 @@
  * Information structure that lives at the bottom of the per-cpu Xen stack.
  */
 
-#ifndef __X86_CURRENT_H__
-#define __X86_CURRENT_H__
+#ifndef ASM__X86__CURRENT_H
+#define ASM__X86__CURRENT_H
 
 #include <xen/percpu.h>
 #include <xen/page-size.h>
@@ -211,4 +211,4 @@ unsigned long get_stack_dump_bottom (unsigned long sp);
  */
 DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
 
-#endif /* __X86_CURRENT_H__ */
+#endif /* ASM__X86__CURRENT_H */
diff --git a/xen/arch/x86/include/asm/debugreg.h b/xen/arch/x86/include/asm/debugreg.h
index 23aa592e40..05f1925f9b 100644
--- a/xen/arch/x86/include/asm/debugreg.h
+++ b/xen/arch/x86/include/asm/debugreg.h
@@ -1,5 +1,5 @@
-#ifndef _X86_DEBUGREG_H
-#define _X86_DEBUGREG_H
+#ifndef ASM__X86__DEBUGREG_H
+#define ASM__X86__DEBUGREG_H
 
 #include <asm/x86-defns.h>
 
@@ -140,4 +140,4 @@ static inline unsigned int x86_bp_width(unsigned int dr7, unsigned int bp)
     return 1U << raw;
 }
 
-#endif /* _X86_DEBUGREG_H */
+#endif /* ASM__X86__DEBUGREG_H */
diff --git a/xen/arch/x86/include/asm/desc.h b/xen/arch/x86/include/asm/desc.h
index a1e0807d97..1598205ab0 100644
--- a/xen/arch/x86/include/asm/desc.h
+++ b/xen/arch/x86/include/asm/desc.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_DESC_H
-#define __ARCH_DESC_H
+#ifndef ASM__X86__DESC_H
+#define ASM__X86__DESC_H
 
 #include <asm/page.h>
 
@@ -240,4 +240,4 @@ static inline void ltr(unsigned int sel)
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ARCH_DESC_H */
+#endif /* ASM__X86__DESC_H */
diff --git a/xen/arch/x86/include/asm/device.h b/xen/arch/x86/include/asm/device.h
index f2acc7effd..32a71e35b0 100644
--- a/xen/arch/x86/include/asm/device.h
+++ b/xen/arch/x86/include/asm/device.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_DEVICE_H
-#define __ASM_X86_DEVICE_H
+#ifndef ASM__X86__DEVICE_H
+#define ASM__X86__DEVICE_H
 
 #include <xen/pci.h>
 
@@ -13,7 +13,7 @@ typedef struct pci_dev device_t;
 #define dev_is_pci(dev) ((void)(dev), 1)
 #define pci_to_dev(pci) (pci)
 
-#endif /* __ASM_X86_DEVICE_H */
+#endif /* ASM__X86__DEVICE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 107c1ff983..8fafa7e3a4 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -1,5 +1,5 @@
-#ifndef _DOM0_BUILD_H_
-#define _DOM0_BUILD_H_
+#ifndef ASM__X86__DOM0_BUILD_H
+#define ASM__X86__DOM0_BUILD_H
 
 #include <xen/libelf.h>
 #include <xen/sched.h>
@@ -29,7 +29,7 @@ unsigned long dom0_paging_pages(const struct domain *d,
 void dom0_update_physmap(bool compat, unsigned long pfn,
                          unsigned long mfn, unsigned long vphysmap_s);
 
-#endif	/* _DOM0_BUILD_H_ */
+#endif	/* ASM__X86__DOM0_BUILD_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index bdcdb8de09..188b063788 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_H__
-#define __ASM_DOMAIN_H__
+#ifndef ASM__X86__DOMAIN_H
+#define ASM__X86__DOMAIN_H
 
 #include <xen/mm.h>
 #include <xen/radix-tree.h>
@@ -796,7 +796,7 @@ unsigned int domain_max_paddr_bits(const struct domain *d);
 #define arch_init_idle_domain arch_init_idle_domain
 void arch_init_idle_domain(struct domain *d);
 
-#endif /* __ASM_DOMAIN_H__ */
+#endif /* ASM__X86__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/e820.h b/xen/arch/x86/include/asm/e820.h
index af90085d65..bda19aab2c 100644
--- a/xen/arch/x86/include/asm/e820.h
+++ b/xen/arch/x86/include/asm/e820.h
@@ -1,5 +1,5 @@
-#ifndef __E820_HEADER
-#define __E820_HEADER
+#ifndef ASM__X86__E820_H
+#define ASM__X86__E820_H
 
 /*
  * PC BIOS standard E820 types and structure.
@@ -40,4 +40,4 @@ extern struct e820map e820_raw;
 extern struct e820map bios_e820map[];
 extern unsigned int bios_e820nr;
 
-#endif /*__E820_HEADER*/
+#endif /*ASM__X86__E820_H*/
diff --git a/xen/arch/x86/include/asm/edd.h b/xen/arch/x86/include/asm/edd.h
index afaa23732a..f3cda0c1d7 100644
--- a/xen/arch/x86/include/asm/edd.h
+++ b/xen/arch/x86/include/asm/edd.h
@@ -20,8 +20,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __XEN_EDD_H__
-#define __XEN_EDD_H__
+#ifndef ASM__X86__EDD_H
+#define ASM__X86__EDD_H
 
 #ifndef __ASSEMBLY__
 
@@ -161,4 +161,4 @@ extern u8 boot_edd_info_nr;
 #define EDDEXTSIZE              8
 #define EDDPARMSIZE             74
 
-#endif /* __XEN_EDD_H__ */
+#endif /* ASM__X86__EDD_H */
diff --git a/xen/arch/x86/include/asm/elf.h b/xen/arch/x86/include/asm/elf.h
index 1d7ea96e22..9ce6f69830 100644
--- a/xen/arch/x86/include/asm/elf.h
+++ b/xen/arch/x86/include/asm/elf.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ELF_H__
-#define __X86_ELF_H__
+#ifndef ASM__X86__ELF_H
+#define ASM__X86__ELF_H
 
 typedef struct {
     unsigned long cr0, cr2, cr3, cr4;
@@ -7,7 +7,7 @@ typedef struct {
 
 #include <asm/x86_64/elf.h>
 
-#endif /* __X86_ELF_H__ */
+#endif /* ASM__X86__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/endbr.h b/xen/arch/x86/include/asm/endbr.h
index ba3bae7147..f6b8b9435e 100644
--- a/xen/arch/x86/include/asm/endbr.h
+++ b/xen/arch/x86/include/asm/endbr.h
@@ -2,8 +2,8 @@
 /******************************************************************************
  * Copyright (c) 2021-2022 Citrix Systems Ltd.
  */
-#ifndef XEN_ASM_ENDBR_H
-#define XEN_ASM_ENDBR_H
+#ifndef ASM__X86__ENDBR_H
+#define ASM__X86__ENDBR_H
 
 #include <xen/types.h>
 
@@ -66,4 +66,4 @@ static inline void place_endbr64_poison(void *ptr)
     *(uint32_t *)ptr = gen_endbr64_poison();
 }
 
-#endif /* XEN_ASM_ENDBR_H */
+#endif /* ASM__X86__ENDBR_H */
diff --git a/xen/arch/x86/include/asm/event.h b/xen/arch/x86/include/asm/event.h
index 5e09ede6d7..eb91d3345a 100644
--- a/xen/arch/x86/include/asm/event.h
+++ b/xen/arch/x86/include/asm/event.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_EVENT_H__
-#define __ASM_EVENT_H__
+#ifndef ASM__X86__EVENT_H
+#define ASM__X86__EVENT_H
 
 #include <xen/shared.h>
 
diff --git a/xen/arch/x86/include/asm/fixmap.h b/xen/arch/x86/include/asm/fixmap.h
index 516ec3fa6c..53eb149d1a 100644
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -9,8 +9,8 @@
  * Modifications for Xen are copyright (c) 2002-2004, K A Fraser
  */
 
-#ifndef _ASM_FIXMAP_H
-#define _ASM_FIXMAP_H
+#ifndef ASM__X86__FIXMAP_H
+#define ASM__X86__FIXMAP_H
 
 #include <xen/page-size.h>
 
diff --git a/xen/arch/x86/include/asm/flushtlb.h b/xen/arch/x86/include/asm/flushtlb.h
index bb0ad58db4..7f60cca86c 100644
--- a/xen/arch/x86/include/asm/flushtlb.h
+++ b/xen/arch/x86/include/asm/flushtlb.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2003-2004, K A Fraser
  */
 
-#ifndef __FLUSHTLB_H__
-#define __FLUSHTLB_H__
+#ifndef ASM__X86__FLUSHTLB_H
+#define ASM__X86__FLUSHTLB_H
 
 #include <xen/mm.h>
 #include <xen/percpu.h>
@@ -201,4 +201,4 @@ static inline int clean_dcache_va_range(const void *p, unsigned long size)
 unsigned int guest_flush_tlb_flags(const struct domain *d);
 void guest_flush_tlb_mask(const struct domain *d, const cpumask_t *mask);
 
-#endif /* __FLUSHTLB_H__ */
+#endif /* ASM__X86__FLUSHTLB_H */
diff --git a/xen/arch/x86/include/asm/gdbsx.h b/xen/arch/x86/include/asm/gdbsx.h
index e906be9ea3..d22e5ad361 100644
--- a/xen/arch/x86/include/asm/gdbsx.h
+++ b/xen/arch/x86/include/asm/gdbsx.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef __X86_GDBX_H__
-#define __X86_GDBX_H__
+#ifndef ASM__X86__GDBSX_H
+#define ASM__X86__GDBSX_H
 
 #include <xen/stdbool.h>
 
@@ -26,4 +26,4 @@ static inline int gdbsx_domctl(
 }
 
 #endif /* CONFIG_GDBSX */
-#endif /* __X86_GDBX_H__ */
+#endif /* ASM__X86__GDBSX_H */
diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index a694371c6d..9e6b7c7530 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_GENAPIC_H
-#define _ASM_GENAPIC_H 1
+#ifndef ASM__X86__GENAPIC_H
+#define ASM__X86__GENAPIC_H 1
 
 #include <xen/cpumask.h>
 
diff --git a/xen/arch/x86/include/asm/grant_table.h b/xen/arch/x86/include/asm/grant_table.h
index 5c23cec90c..67a4f84cbb 100644
--- a/xen/arch/x86/include/asm/grant_table.h
+++ b/xen/arch/x86/include/asm/grant_table.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004-2005 K A Fraser
  */
 
-#ifndef __ASM_GRANT_TABLE_H__
-#define __ASM_GRANT_TABLE_H__
+#ifndef ASM__X86__GRANT_TABLE_H
+#define ASM__X86__GRANT_TABLE_H
 
 #include <asm/paging.h>
 
@@ -72,4 +72,4 @@ static inline void gnttab_clear_flags(struct domain *d,
 #define gnttab_need_iommu_mapping(d)                \
     (!paging_mode_translate(d) && need_iommu_pt_sync(d))
 
-#endif /* __ASM_GRANT_TABLE_H__ */
+#endif /* ASM__X86__GRANT_TABLE_H */
diff --git a/xen/arch/x86/include/asm/guest.h b/xen/arch/x86/include/asm/guest.h
index c3124c7b8d..826000261c 100644
--- a/xen/arch/x86/include/asm/guest.h
+++ b/xen/arch/x86/include/asm/guest.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_GUEST_H__
-#define __X86_GUEST_H__
+#ifndef ASM__X86__GUEST_H
+#define ASM__X86__GUEST_H
 
 #include <asm/guest/hyperv.h>
 #include <asm/guest/hypervisor.h>
@@ -15,7 +15,7 @@
 #include <asm/guest/xen-hcall.h>
 #include <asm/pv/shim.h>
 
-#endif /* __X86_GUEST_H__ */
+#endif /* ASM__X86__GUEST_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hyperv-hcall.h b/xen/arch/x86/include/asm/guest/hyperv-hcall.h
index b76dbf9ccc..2fdf6d5143 100644
--- a/xen/arch/x86/include/asm/guest/hyperv-hcall.h
+++ b/xen/arch/x86/include/asm/guest/hyperv-hcall.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_HYPERV_HCALL_H__
-#define __X86_HYPERV_HCALL_H__
+#ifndef ASM__X86__GUEST__HYPERV_HCALL_H
+#define ASM__X86__GUEST__HYPERV_HCALL_H
 
 #include <xen/lib.h>
 #include <xen/page-size.h>
@@ -73,7 +73,7 @@ static inline uint64_t hv_do_rep_hypercall(uint16_t code, uint16_t rep_count,
     return status;
 }
 
-#endif /* __X86_HYPERV_HCALL_H__ */
+#endif /* ASM__X86__GUEST__HYPERV_HCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
index a6915ad731..ba7ca0e450 100644
--- a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
+++ b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
@@ -6,8 +6,8 @@
  * https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/reference/tlfs
  */
 
-#ifndef _ASM_X86_HYPERV_TLFS_H
-#define _ASM_X86_HYPERV_TLFS_H
+#ifndef ASM__X86__GUEST__HYPERV_TLFS_H
+#define ASM__X86__GUEST__HYPERV_TLFS_H
 
 #include <xen/bitops.h>
 #include <xen/page-size.h>
diff --git a/xen/arch/x86/include/asm/guest/hyperv.h b/xen/arch/x86/include/asm/guest/hyperv.h
index c05efdce71..fe0c2c485c 100644
--- a/xen/arch/x86/include/asm/guest/hyperv.h
+++ b/xen/arch/x86/include/asm/guest/hyperv.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_GUEST_HYPERV_H__
-#define __X86_GUEST_HYPERV_H__
+#ifndef ASM__X86__GUEST__HYPERV_H
+#define ASM__X86__GUEST__HYPERV_H
 
 #include <xen/types.h>
 
@@ -62,7 +62,7 @@ const struct hypervisor_ops *hyperv_probe(void);
 static inline const struct hypervisor_ops *hyperv_probe(void) { return NULL; }
 
 #endif /* CONFIG_HYPERV_GUEST */
-#endif /* __X86_GUEST_HYPERV_H__ */
+#endif /* ASM__X86__GUEST__HYPERV_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/hypervisor.h b/xen/arch/x86/include/asm/guest/hypervisor.h
index c8f18a035e..5ab900e14c 100644
--- a/xen/arch/x86/include/asm/guest/hypervisor.h
+++ b/xen/arch/x86/include/asm/guest/hypervisor.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2019 Microsoft.
  */
 
-#ifndef __X86_HYPERVISOR_H__
-#define __X86_HYPERVISOR_H__
+#ifndef ASM__X86__GUEST__HYPERVISOR_H
+#define ASM__X86__GUEST__HYPERVISOR_H
 
 #include <xen/cpumask.h>
 
@@ -61,7 +61,7 @@ static inline int hypervisor_flush_tlb(const cpumask_t *mask, const void *va,
 
 #endif  /* CONFIG_GUEST */
 
-#endif /* __X86_HYPERVISOR_H__ */
+#endif /* ASM__X86__GUEST__HYPERVISOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/pvh-boot.h b/xen/arch/x86/include/asm/guest/pvh-boot.h
index 247ba6899e..77f1fb7190 100644
--- a/xen/arch/x86/include/asm/guest/pvh-boot.h
+++ b/xen/arch/x86/include/asm/guest/pvh-boot.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_PVH_BOOT_H__
-#define __X86_PVH_BOOT_H__
+#ifndef ASM__X86__GUEST__PVH_BOOT_H
+#define ASM__X86__GUEST__PVH_BOOT_H
 
 #include <xen/multiboot.h>
 
@@ -34,7 +34,7 @@ static inline void pvh_print_info(void)
 }
 
 #endif /* CONFIG_PVH_GUEST */
-#endif /* __X86_PVH_BOOT_H__ */
+#endif /* ASM__X86__GUEST__PVH_BOOT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/xen-hcall.h b/xen/arch/x86/include/asm/guest/xen-hcall.h
index 665b472d05..c078ade2a7 100644
--- a/xen/arch/x86/include/asm/guest/xen-hcall.h
+++ b/xen/arch/x86/include/asm/guest/xen-hcall.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_XEN_HYPERCALL_H__
-#define __X86_XEN_HYPERCALL_H__
+#ifndef ASM__X86__GUEST__XEN_HCALL_H
+#define ASM__X86__GUEST__XEN_HCALL_H
 
 #ifdef CONFIG_XEN_GUEST
 
@@ -188,7 +188,7 @@ static inline long xen_hypercall_shutdown(unsigned int reason)
 }
 
 #endif /* CONFIG_XEN_GUEST */
-#endif /* __X86_XEN_HYPERCALL_H__ */
+#endif /* ASM__X86__GUEST__XEN_HCALL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest/xen.h b/xen/arch/x86/include/asm/guest/xen.h
index c330c4d400..1e46fbf0d3 100644
--- a/xen/arch/x86/include/asm/guest/xen.h
+++ b/xen/arch/x86/include/asm/guest/xen.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_GUEST_XEN_H__
-#define __X86_GUEST_XEN_H__
+#ifndef ASM__X86__GUEST__XEN_H
+#define ASM__X86__GUEST__XEN_H
 
 #include <xen/types.h>
 
@@ -37,7 +37,7 @@ DECLARE_PER_CPU(struct vcpu_info *, vcpu_info);
 static inline const struct hypervisor_ops *xg_probe(void) { return NULL; }
 
 #endif /* CONFIG_XEN_GUEST */
-#endif /* __X86_GUEST_XEN_H__ */
+#endif /* ASM__X86__GUEST__XEN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest_access.h b/xen/arch/x86/include/asm/guest_access.h
index 69716c8b41..e42d2c59ba 100644
--- a/xen/arch/x86/include/asm/guest_access.h
+++ b/xen/arch/x86/include/asm/guest_access.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2006, K A Fraser
  */
 
-#ifndef __ASM_X86_GUEST_ACCESS_H__
-#define __ASM_X86_GUEST_ACCESS_H__
+#ifndef ASM__X86__GUEST_ACCESS_H
+#define ASM__X86__GUEST_ACCESS_H
 
 #include <asm/uaccess.h>
 #include <asm/paging.h>
@@ -47,7 +47,7 @@
                      (last)-(first)+1,                  \
                      sizeof(*(hnd).p)))
 
-#endif /* __ASM_X86_GUEST_ACCESS_H__ */
+#endif /* ASM__X86__GUEST_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/guest_atomics.h b/xen/arch/x86/include/asm/guest_atomics.h
index c2dec0d650..99f861fc39 100644
--- a/xen/arch/x86/include/asm/guest_atomics.h
+++ b/xen/arch/x86/include/asm/guest_atomics.h
@@ -1,5 +1,5 @@
-#ifndef _X86_GUEST_ATOMICS_H
-#define _X86_GUEST_ATOMICS_H
+#ifndef ASM__X86__GUEST_ATOMICS_H
+#define ASM__X86__GUEST_ATOMICS_H
 
 #include <xen/bitops.h>
 
@@ -22,7 +22,7 @@
 #define guest_cmpxchg(d, ptr, o, n) ((void)(d), cmpxchg(ptr, o, n))
 #define guest_cmpxchg64 guest_cmpxchg
 
-#endif /* _X86_GUEST_ATOMICS_H */
+#endif /* ASM__X86__GUEST_ATOMICS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/guest_pt.h b/xen/arch/x86/include/asm/guest_pt.h
index 21473f9bbc..943504dc76 100644
--- a/xen/arch/x86/include/asm/guest_pt.h
+++ b/xen/arch/x86/include/asm/guest_pt.h
@@ -13,8 +13,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_ASM_GUEST_PT_H
-#define _XEN_ASM_GUEST_PT_H
+#ifndef ASM__X86__GUEST_PT_H
+#define ASM__X86__GUEST_PT_H
 
 #if !defined(GUEST_PAGING_LEVELS)
 #error GUEST_PAGING_LEVELS not defined
@@ -452,4 +452,4 @@ static inline void print_gw(const walk_t *gw)
         );
 }
 
-#endif /* _XEN_ASM_GUEST_PT_H */
+#endif /* ASM__X86__GUEST_PT_H */
diff --git a/xen/arch/x86/include/asm/hap.h b/xen/arch/x86/include/asm/hap.h
index f01ce73fb4..cf1a7584f3 100644
--- a/xen/arch/x86/include/asm/hap.h
+++ b/xen/arch/x86/include/asm/hap.h
@@ -10,8 +10,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_HAP_H
-#define _XEN_HAP_H
+#ifndef ASM__X86__HAP_H
+#define ASM__X86__HAP_H
 
 #define HAP_PRINTK(_f, _a...)                                         \
     debugtrace_printk("hap: %s(): " _f, __func__, ##_a)
diff --git a/xen/arch/x86/include/asm/hardirq.h b/xen/arch/x86/include/asm/hardirq.h
index 342361cb6f..9385d220fc 100644
--- a/xen/arch/x86/include/asm/hardirq.h
+++ b/xen/arch/x86/include/asm/hardirq.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_HARDIRQ_H
-#define __ASM_HARDIRQ_H
+#ifndef ASM__X86__HARDIRQ_H
+#define ASM__X86__HARDIRQ_H
 
 #include <xen/cache.h>
 #include <xen/types.h>
@@ -34,4 +34,4 @@ void ack_bad_irq(unsigned int irq);
 extern void apic_intr_init(void);
 extern void smp_intr_init(void);
 
-#endif /* __ASM_HARDIRQ_H */
+#endif /* ASM__X86__HARDIRQ_H */
diff --git a/xen/arch/x86/include/asm/hpet.h b/xen/arch/x86/include/asm/hpet.h
index c402c63168..66c5867b96 100644
--- a/xen/arch/x86/include/asm/hpet.h
+++ b/xen/arch/x86/include/asm/hpet.h
@@ -1,5 +1,5 @@
-#ifndef __X86_HPET_H__
-#define __X86_HPET_H__
+#ifndef ASM__X86__HPET_H
+#define ASM__X86__HPET_H
 
 /*
  * Documentation on HPET can be found at:
@@ -98,4 +98,4 @@ void hpet_disable_legacy_broadcast(void);
 
 extern void (*pv_rtc_handler)(uint8_t reg, uint8_t value);
 
-#endif /* __X86_HPET_H__ */
+#endif /* ASM__X86__HPET_H */
diff --git a/xen/arch/x86/include/asm/hvm/asid.h b/xen/arch/x86/include/asm/hvm/asid.h
index 17c58353d1..dff25733ed 100644
--- a/xen/arch/x86/include/asm/hvm/asid.h
+++ b/xen/arch/x86/include/asm/hvm/asid.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2009, Citrix Systems, Inc.
  */
 
-#ifndef __ASM_X86_HVM_ASID_H__
-#define __ASM_X86_HVM_ASID_H__
+#ifndef ASM__X86__HVM__ASID_H
+#define ASM__X86__HVM__ASID_H
 
 
 struct vcpu;
@@ -28,7 +28,7 @@ void hvm_asid_flush_core(void);
  * boolean indicating whether all ASIDs must be flushed. */
 bool hvm_asid_handle_vmenter(struct hvm_vcpu_asid *asid);
 
-#endif /* __ASM_X86_HVM_ASID_H__ */
+#endif /* ASM__X86__HVM__ASID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/cacheattr.h b/xen/arch/x86/include/asm/hvm/cacheattr.h
index 79e721d074..fe7bb8d54f 100644
--- a/xen/arch/x86/include/asm/hvm/cacheattr.h
+++ b/xen/arch/x86/include/asm/hvm/cacheattr.h
@@ -1,5 +1,5 @@
-#ifndef __HVM_CACHEATTR_H__
-#define __HVM_CACHEATTR_H__
+#ifndef ASM__X86__HVM__CACHEATTR_H
+#define ASM__X86__HVM__CACHEATTR_H
 
 #include <xen/mm.h>
 
@@ -20,4 +20,4 @@ int hvm_get_mem_pinned_cacheattr(struct domain *d, gfn_t gfn,
 int hvm_set_mem_pinned_cacheattr(struct domain *d, uint64_t gfn_start,
                                  uint64_t gfn_end, uint32_t type);
 
-#endif /* __HVM_CACHEATTR_H__ */
+#endif /* ASM__X86__HVM__CACHEATTR_H */
diff --git a/xen/arch/x86/include/asm/hvm/domain.h b/xen/arch/x86/include/asm/hvm/domain.h
index 333501d5f2..9d4137c43a 100644
--- a/xen/arch/x86/include/asm/hvm/domain.h
+++ b/xen/arch/x86/include/asm/hvm/domain.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation
  */
 
-#ifndef __ASM_X86_HVM_DOMAIN_H__
-#define __ASM_X86_HVM_DOMAIN_H__
+#ifndef ASM__X86__HVM__DOMAIN_H
+#define ASM__X86__HVM__DOMAIN_H
 
 #include <xen/list.h>
 #include <xen/mm.h>
@@ -151,7 +151,7 @@ struct hvm_domain {
 #endif
 };
 
-#endif /* __ASM_X86_HVM_DOMAIN_H__ */
+#endif /* ASM__X86__HVM__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/emulate.h b/xen/arch/x86/include/asm/hvm/emulate.h
index 29d679442e..9e382803ef 100644
--- a/xen/arch/x86/include/asm/hvm/emulate.h
+++ b/xen/arch/x86/include/asm/hvm/emulate.h
@@ -9,8 +9,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __ASM_X86_HVM_EMULATE_H__
-#define __ASM_X86_HVM_EMULATE_H__
+#ifndef ASM__X86__HVM__EMULATE_H
+#define ASM__X86__HVM__EMULATE_H
 
 #include <xen/err.h>
 #include <xen/mm.h>
@@ -143,7 +143,7 @@ static inline void hvmemul_write_cache(const struct vcpu *v, paddr_t gpa,
 void hvm_dump_emulation_state(const char *loglvl, const char *prefix,
                               struct hvm_emulate_ctxt *hvmemul_ctxt, int rc);
 
-#endif /* __ASM_X86_HVM_EMULATE_H__ */
+#endif /* ASM__X86__HVM__EMULATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/grant_table.h b/xen/arch/x86/include/asm/hvm/grant_table.h
index 01e23f79b8..ec6c6251d3 100644
--- a/xen/arch/x86/include/asm/hvm/grant_table.h
+++ b/xen/arch/x86/include/asm/hvm/grant_table.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_HVM_GRANT_TABLE_H__
-#define __X86_HVM_GRANT_TABLE_H__
+#ifndef ASM__X86__HVM__GRANT_TABLE_H
+#define ASM__X86__HVM__GRANT_TABLE_H
 
 #include <xen/mm-frame.h>
 
@@ -39,7 +39,7 @@ static inline int replace_grant_p2m_mapping(uint64_t addr, mfn_t frame,
 
 #endif
 
-#endif /* __X86_HVM_GRANT_TABLE_H__ */
+#endif /* ASM__X86__HVM__GRANT_TABLE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/guest_access.h b/xen/arch/x86/include/asm/hvm/guest_access.h
index edacba75db..007d1ff70b 100644
--- a/xen/arch/x86/include/asm/hvm/guest_access.h
+++ b/xen/arch/x86/include/asm/hvm/guest_access.h
@@ -1,8 +1,8 @@
-#ifndef __ASM_X86_HVM_GUEST_ACCESS_H__
-#define __ASM_X86_HVM_GUEST_ACCESS_H__
+#ifndef ASM__X86__HVM__GUEST_ACCESS_H
+#define ASM__X86__HVM__GUEST_ACCESS_H
 
 unsigned int copy_to_user_hvm(void *to, const void *from, unsigned int len);
 unsigned int clear_user_hvm(void *to, unsigned int len);
 unsigned int copy_from_user_hvm(void *to, const void *from, unsigned int len);
 
-#endif /* __ASM_X86_HVM_GUEST_ACCESS_H__ */
+#endif /* ASM__X86__HVM__GUEST_ACCESS_H */
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index dd7d4872b5..1a320fe5c8 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_HVM_H__
-#define __ASM_X86_HVM_HVM_H__
+#ifndef ASM__X86__HVM__HVM_H
+#define ASM__X86__HVM__HVM_H
 
 #include <xen/mm.h>
 
@@ -967,7 +967,7 @@ static inline void hvm_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 
 #endif  /* CONFIG_HVM */
 
-#endif /* __ASM_X86_HVM_HVM_H__ */
+#endif /* ASM__X86__HVM__HVM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h
index f2b8431fac..f7e4550f0a 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __ASM_X86_HVM_IO_H__
-#define __ASM_X86_HVM_IO_H__
+#ifndef ASM__X86__HVM__IO_H
+#define ASM__X86__HVM__IO_H
 
 #include <xen/pci.h>
 #include <public/hvm/ioreq.h>
@@ -135,7 +135,7 @@ void destroy_vpci_mmcfg(struct domain *d);
 /* Remove MMCFG regions from a given rangeset. */
 int vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r);
 
-#endif /* __ASM_X86_HVM_IO_H__ */
+#endif /* ASM__X86__HVM__IO_H */
 
 
 /*
diff --git a/xen/arch/x86/include/asm/hvm/ioreq.h b/xen/arch/x86/include/asm/hvm/ioreq.h
index 84be14fd08..2e7254d640 100644
--- a/xen/arch/x86/include/asm/hvm/ioreq.h
+++ b/xen/arch/x86/include/asm/hvm/ioreq.h
@@ -5,15 +5,15 @@
  * Copyright (c) 2016 Citrix Systems Inc.
  */
 
-#ifndef __ASM_X86_HVM_IOREQ_H__
-#define __ASM_X86_HVM_IOREQ_H__
+#ifndef ASM__X86__HVM__IOREQ_H
+#define ASM__X86__HVM__IOREQ_H
 
 /* This correlation must not be altered */
 #define IOREQ_STATUS_HANDLED     X86EMUL_OKAY
 #define IOREQ_STATUS_UNHANDLED   X86EMUL_UNHANDLEABLE
 #define IOREQ_STATUS_RETRY       X86EMUL_RETRY
 
-#endif /* __ASM_X86_HVM_IOREQ_H__ */
+#endif /* ASM__X86__HVM__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/irq.h b/xen/arch/x86/include/asm/hvm/irq.h
index 87e89993a4..41ae7eef8d 100644
--- a/xen/arch/x86/include/asm/hvm/irq.h
+++ b/xen/arch/x86/include/asm/hvm/irq.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2006, K A Fraser, XenSource Inc.
  */
 
-#ifndef __ASM_X86_HVM_IRQ_H__
-#define __ASM_X86_HVM_IRQ_H__
+#ifndef ASM__X86__HVM__IRQ_H
+#define ASM__X86__HVM__IRQ_H
 
 #include <xen/timer.h>
 
@@ -213,4 +213,4 @@ void hvm_set_callback_via(struct domain *d, uint64_t via);
 struct pirq;
 bool hvm_domain_use_pirq(const struct domain *d, const struct pirq *pirq);
 
-#endif /* __ASM_X86_HVM_IRQ_H__ */
+#endif /* ASM__X86__HVM__IRQ_H */
diff --git a/xen/arch/x86/include/asm/hvm/nestedhvm.h b/xen/arch/x86/include/asm/hvm/nestedhvm.h
index ea2c1bc328..323d749a73 100644
--- a/xen/arch/x86/include/asm/hvm/nestedhvm.h
+++ b/xen/arch/x86/include/asm/hvm/nestedhvm.h
@@ -5,8 +5,8 @@
  * Author: Christoph Egger <Christoph.Egger@amd.com>
  */
 
-#ifndef _HVM_NESTEDHVM_H
-#define _HVM_NESTEDHVM_H
+#ifndef ASM__X86__HVM__NESTEDHVM_H
+#define ASM__X86__HVM__NESTEDHVM_H
 
 #include <xen/types.h>         /* for uintNN_t */
 #include <xen/sched.h>         /* for struct vcpu, struct domain */
@@ -86,4 +86,4 @@ static inline bool vvmcx_valid(const struct vcpu *v)
 void start_nested_svm(struct hvm_function_table *hvm_function_table);
 void start_nested_vmx(struct hvm_function_table *hvm_function_table);
 
-#endif /* _HVM_NESTEDHVM_H */
+#endif /* ASM__X86__HVM__NESTEDHVM_H */
diff --git a/xen/arch/x86/include/asm/hvm/save.h b/xen/arch/x86/include/asm/hvm/save.h
index ec8de02931..fc1e81fd28 100644
--- a/xen/arch/x86/include/asm/hvm/save.h
+++ b/xen/arch/x86/include/asm/hvm/save.h
@@ -3,8 +3,8 @@
  * save.h: HVM support routines for save/restore
  */
 
-#ifndef __XEN_HVM_SAVE_H__
-#define __XEN_HVM_SAVE_H__
+#ifndef ASM__X86__HVM__SAVE_H
+#define ASM__X86__HVM__SAVE_H
 
 #include <xen/types.h>
 #include <xen/init.h>
@@ -146,4 +146,4 @@ 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, bool real, hvm_domain_context_t *h);
 
-#endif /* __XEN_HVM_SAVE_H__ */
+#endif /* ASM__X86__HVM__SAVE_H */
diff --git a/xen/arch/x86/include/asm/hvm/support.h b/xen/arch/x86/include/asm/hvm/support.h
index 2a7ba36af0..f2d77b9268 100644
--- a/xen/arch/x86/include/asm/hvm/support.h
+++ b/xen/arch/x86/include/asm/hvm/support.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_SUPPORT_H__
-#define __ASM_X86_HVM_SUPPORT_H__
+#ifndef ASM__X86__HVM__SUPPORT_H
+#define ASM__X86__HVM__SUPPORT_H
 
 #include <xen/types.h>
 #include <xen/sched.h>
@@ -146,7 +146,7 @@ int __must_check hvm_msr_read_intercept(
 int __must_check hvm_msr_write_intercept(
     unsigned int msr, uint64_t msr_content, bool may_defer);
 
-#endif /* __ASM_X86_HVM_SUPPORT_H__ */
+#endif /* ASM__X86__HVM__SUPPORT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h b/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
index 205989e800..6c9f29f06c 100644
--- a/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
+++ b/xen/arch/x86/include/asm/hvm/svm/nestedsvm.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2011, Advanced Micro Devices, Inc
  *
  */
-#ifndef __ASM_X86_HVM_SVM_NESTEDSVM_H__
-#define __ASM_X86_HVM_SVM_NESTEDSVM_H__
+#ifndef ASM__X86__HVM__SVM__NESTEDSVM_H
+#define ASM__X86__HVM__SVM__NESTEDSVM_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/svm/svm.h b/xen/arch/x86/include/asm/hvm/svm/svm.h
index 4eeeb25da9..f35126cc40 100644
--- a/xen/arch/x86/include/asm/hvm/svm/svm.h
+++ b/xen/arch/x86/include/asm/hvm/svm/svm.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_SVM_H__
-#define __ASM_X86_HVM_SVM_H__
+#ifndef ASM__X86__HVM__SVM__SVM_H
+#define ASM__X86__HVM__SVM__SVM_H
 
 /*
  * PV context switch helpers.  Prefetching the VMCB area itself has been shown
@@ -57,4 +57,4 @@ static inline bool cpu_has_svm_feature(unsigned int feat)
 #define cpu_has_svm_sss       cpu_has_svm_feature(SVM_FEATURE_SSS)
 #define cpu_has_svm_spec_ctrl cpu_has_svm_feature(SVM_FEATURE_SPEC_CTRL)
 
-#endif /* __ASM_X86_HVM_SVM_H__ */
+#endif /* ASM__X86__HVM__SVM__SVM_H */
diff --git a/xen/arch/x86/include/asm/hvm/svm/svmdebug.h b/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
index 2fb76ec24c..4db4203f6a 100644
--- a/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
+++ b/xen/arch/x86/include/asm/hvm/svm/svmdebug.h
@@ -5,8 +5,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_SVM_SVMDEBUG_H__
-#define __ASM_X86_HVM_SVM_SVMDEBUG_H__
+#ifndef ASM__X86__HVM__SVM__SVMDEBUG_H
+#define ASM__X86__HVM__SVM__SVMDEBUG_H
 
 #include <xen/types.h>
 #include <asm/hvm/svm/vmcb.h>
@@ -16,4 +16,4 @@ void svm_vmcb_dump(const char *from, const struct vmcb_struct *vmcb);
 bool svm_vmcb_isvalid(const char *from, const struct vmcb_struct *vmcb,
                       const struct vcpu *v, bool verbose);
 
-#endif /* __ASM_X86_HVM_SVM_SVMDEBUG_H__ */
+#endif /* ASM__X86__HVM__SVM__SVMDEBUG_H */
diff --git a/xen/arch/x86/include/asm/hvm/svm/vmcb.h b/xen/arch/x86/include/asm/hvm/svm/vmcb.h
index 28f715e376..ed937480ae 100644
--- a/xen/arch/x86/include/asm/hvm/svm/vmcb.h
+++ b/xen/arch/x86/include/asm/hvm/svm/vmcb.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_SVM_VMCB_H__
-#define __ASM_X86_HVM_SVM_VMCB_H__
+#ifndef ASM__X86__HVM__SVM__VMCB_H
+#define ASM__X86__HVM__SVM__VMCB_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/vcpu.h b/xen/arch/x86/include/asm/hvm/vcpu.h
index 64c7a6fede..866516aae9 100644
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2005, International Business Machines Corporation.
  */
 
-#ifndef __ASM_X86_HVM_VCPU_H__
-#define __ASM_X86_HVM_VCPU_H__
+#ifndef ASM__X86__HVM__VCPU_H
+#define ASM__X86__HVM__VCPU_H
 
 #include <xen/tasklet.h>
 #include <asm/hvm/vlapic.h>
@@ -186,7 +186,7 @@ struct hvm_vcpu {
     struct viridian_vcpu *viridian;
 };
 
-#endif /* __ASM_X86_HVM_VCPU_H__ */
+#endif /* ASM__X86__HVM__VCPU_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vioapic.h b/xen/arch/x86/include/asm/hvm/vioapic.h
index 68af6dce79..5020bb9d2f 100644
--- a/xen/arch/x86/include/asm/hvm/vioapic.h
+++ b/xen/arch/x86/include/asm/hvm/vioapic.h
@@ -21,8 +21,8 @@
  *  License along with this library; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_X86_HVM_VIOAPIC_H__
-#define __ASM_X86_HVM_VIOAPIC_H__
+#ifndef ASM__X86__HVM__VIOAPIC_H
+#define ASM__X86__HVM__VIOAPIC_H
 
 #include <xen/types.h>
 #include <public/hvm/save.h>
@@ -69,4 +69,4 @@ int vioapic_get_mask(const struct domain *d, unsigned int gsi);
 int cf_check vioapic_get_vector(const struct domain *d, unsigned int gsi);
 int vioapic_get_trigger_mode(const struct domain *d, unsigned int gsi);
 
-#endif /* __ASM_X86_HVM_VIOAPIC_H__ */
+#endif /* ASM__X86__HVM__VIOAPIC_H */
diff --git a/xen/arch/x86/include/asm/hvm/viridian.h b/xen/arch/x86/include/asm/hvm/viridian.h
index 4c8ff6e80b..07854a95de 100644
--- a/xen/arch/x86/include/asm/hvm/viridian.h
+++ b/xen/arch/x86/include/asm/hvm/viridian.h
@@ -6,8 +6,8 @@
  *
  */
 
-#ifndef __ASM_X86_HVM_VIRIDIAN_H__
-#define __ASM_X86_HVM_VIRIDIAN_H__
+#ifndef ASM__X86__HVM__VIRIDIAN_H
+#define ASM__X86__HVM__VIRIDIAN_H
 
 #include <asm/guest/hyperv-tlfs.h>
 
@@ -99,7 +99,7 @@ void viridian_synic_poll(struct vcpu *v);
 bool viridian_synic_is_auto_eoi_sint(const struct vcpu *v,
                                      unsigned int vector);
 
-#endif /* __ASM_X86_HVM_VIRIDIAN_H__ */
+#endif /* ASM__X86__HVM__VIRIDIAN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vlapic.h b/xen/arch/x86/include/asm/hvm/vlapic.h
index 2c4ff94ae7..3e729cd146 100644
--- a/xen/arch/x86/include/asm/hvm/vlapic.h
+++ b/xen/arch/x86/include/asm/hvm/vlapic.h
@@ -6,8 +6,8 @@
  * Copyright (c) 2006 Keir Fraser, XenSource Inc.
  */
 
-#ifndef __ASM_X86_HVM_VLAPIC_H__
-#define __ASM_X86_HVM_VLAPIC_H__
+#ifndef ASM__X86__HVM__VLAPIC_H
+#define ASM__X86__HVM__VLAPIC_H
 
 #include <xen/tasklet.h>
 #include <asm/hvm/vpt.h>
@@ -137,4 +137,4 @@ bool vlapic_match_dest(
     const struct vlapic *target, const struct vlapic *source,
     int short_hand, uint32_t dest, bool dest_mode);
 
-#endif /* __ASM_X86_HVM_VLAPIC_H__ */
+#endif /* ASM__X86__HVM__VLAPIC_H */
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
index 939b87eb50..d96007838e 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_VMX_VMCS_H__
-#define __ASM_X86_HVM_VMX_VMCS_H__
+#ifndef ASM__X86__HVM__VMX__VMCS_H
+#define ASM__X86__HVM__VMX__VMCS_H
 
 #include <xen/mm.h>
 
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmx.h b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
index f0ec459622..d8e23d313b 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -4,8 +4,8 @@
  * Copyright (c) 2004, Intel Corporation.
  *
  */
-#ifndef __ASM_X86_HVM_VMX_VMX_H__
-#define __ASM_X86_HVM_VMX_VMX_H__
+#ifndef ASM__X86__HVM__VMX__VMX_H
+#define ASM__X86__HVM__VMX__VMX_H
 
 #include <xen/sched.h>
 #include <xen/types.h>
@@ -676,4 +676,4 @@ typedef union ldt_or_tr_instr_info {
     };
 } ldt_or_tr_instr_info_t;
 
-#endif /* __ASM_X86_HVM_VMX_VMX_H__ */
+#endif /* ASM__X86__HVM__VMX__VMX_H */
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vvmx.h b/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
index da10d3fa96..551390e245 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vvmx.h
@@ -8,8 +8,8 @@
  *         Eddie Dong <eddie.dong@intel.com>
  *
  */
-#ifndef __ASM_X86_HVM_VVMX_H__
-#define __ASM_X86_HVM_VVMX_H__
+#ifndef ASM__X86__HVM__VMX__VVMX_H
+#define ASM__X86__HVM__VMX__VVMX_H
 
 struct vvmcs_list {
     unsigned long vvmcs_mfn;
@@ -199,5 +199,5 @@ int nept_translate_l2ga(struct vcpu *v, paddr_t l2ga,
                         uint64_t *exit_qual, uint32_t *exit_reason);
 int nvmx_cpu_up_prepare(unsigned int cpu);
 void nvmx_cpu_dead(unsigned int cpu);
-#endif /* __ASM_X86_HVM_VVMX_H__ */
+#endif /* ASM__X86__HVM__VMX__VVMX_H */
 
diff --git a/xen/arch/x86/include/asm/hvm/vpic.h b/xen/arch/x86/include/asm/hvm/vpic.h
index d71b270193..6dfbd3ef9e 100644
--- a/xen/arch/x86/include/asm/hvm/vpic.h
+++ b/xen/arch/x86/include/asm/hvm/vpic.h
@@ -24,8 +24,8 @@
  * IN THE SOFTWARE.
  */
 
-#ifndef __ASM_X86_HVM_VPIC_H__
-#define __ASM_X86_HVM_VPIC_H__
+#ifndef ASM__X86__HVM__VPIC_H
+#define ASM__X86__HVM__VPIC_H
 
 struct domain;
 struct vcpu;
@@ -37,4 +37,4 @@ void vpic_reset(struct domain *d);
 int vpic_ack_pending_irq(struct vcpu *v);
 int is_periodic_irq(struct vcpu *v, int irq, int type);
 
-#endif  /* __ASM_X86_HVM_VPIC_H__ */  
+#endif  /* ASM__X86__HVM__VPIC_H */  
diff --git a/xen/arch/x86/include/asm/hvm/vpt.h b/xen/arch/x86/include/asm/hvm/vpt.h
index 0b92b28625..61abea565f 100644
--- a/xen/arch/x86/include/asm/hvm/vpt.h
+++ b/xen/arch/x86/include/asm/hvm/vpt.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2004, Intel Corporation.
  */
 
-#ifndef __ASM_X86_HVM_VPT_H__
-#define __ASM_X86_HVM_VPT_H__
+#ifndef ASM__X86__HVM__VPT_H
+#define ASM__X86__HVM__VPT_H
 
 #include <xen/timer.h>
 #include <xen/list.h>
@@ -196,4 +196,4 @@ void hpet_init(struct domain *d);
 void hpet_deinit(struct domain *d);
 void hpet_reset(struct domain *d);
 
-#endif /* __ASM_X86_HVM_VPT_H__ */
+#endif /* ASM__X86__HVM__VPT_H */
diff --git a/xen/arch/x86/include/asm/hypercall.h b/xen/arch/x86/include/asm/hypercall.h
index e71b48d860..7ff9609589 100644
--- a/xen/arch/x86/include/asm/hypercall.h
+++ b/xen/arch/x86/include/asm/hypercall.h
@@ -7,8 +7,8 @@
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_X86_HYPERCALL_H__
-#define __ASM_X86_HYPERCALL_H__
+#ifndef ASM__X86__HYPERCALL_H
+#define ASM__X86__HYPERCALL_H
 
 #include <xen/types.h>
 #include <public/physdev.h>
@@ -81,4 +81,4 @@ static inline void clobber_regs32(struct cpu_user_regs *regs,
     clobber_regs ## b(r, array_access_nospec(t ## b, n)); \
 })
 
-#endif /* __ASM_X86_HYPERCALL_H__ */
+#endif /* ASM__X86__HYPERCALL_H */
diff --git a/xen/arch/x86/include/asm/i387.h b/xen/arch/x86/include/asm/i387.h
index a783549db9..452b0e4135 100644
--- a/xen/arch/x86/include/asm/i387.h
+++ b/xen/arch/x86/include/asm/i387.h
@@ -8,8 +8,8 @@
  *	Gareth Hughes <gareth@valinux.com>, May 2000
  */
 
-#ifndef __ASM_I386_I387_H
-#define __ASM_I386_I387_H
+#ifndef ASM__X86__I387_H
+#define ASM__X86__I387_H
 
 #include <xen/types.h>
 
@@ -37,4 +37,4 @@ struct xsave_struct;
 void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
                     const void *data, unsigned int fcw_default);
 void vcpu_destroy_fpu(struct vcpu *v);
-#endif /* __ASM_I386_I387_H */
+#endif /* ASM__X86__I387_H */
diff --git a/xen/arch/x86/include/asm/intel-family.h b/xen/arch/x86/include/asm/intel-family.h
index d44dd3f69f..d53d860753 100644
--- a/xen/arch/x86/include/asm/intel-family.h
+++ b/xen/arch/x86/include/asm/intel-family.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _ASM_X86_INTEL_FAMILY_H
-#define _ASM_X86_INTEL_FAMILY_H
+#ifndef ASM__X86__INTEL_FAMILY_H
+#define ASM__X86__INTEL_FAMILY_H
 
 /*
  * "Big Core" Processors (Branded as Core, Xeon, etc...)
@@ -167,4 +167,4 @@
 /* Family 5 */
 #define INTEL_FAM5_QUARK_X1000		0x09 /* Quark X1000 SoC */
 
-#endif /* _ASM_X86_INTEL_FAMILY_H */
+#endif /* ASM__X86__INTEL_FAMILY_H */
diff --git a/xen/arch/x86/include/asm/invpcid.h b/xen/arch/x86/include/asm/invpcid.h
index bf5c30313a..670d69bae8 100644
--- a/xen/arch/x86/include/asm/invpcid.h
+++ b/xen/arch/x86/include/asm/invpcid.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X86_INVPCID_H_
-#define _ASM_X86_INVPCID_H_
+#ifndef ASM__X86__INVPCID_H
+#define ASM__X86__INVPCID_H
 
 #include <xen/types.h>
 
@@ -54,7 +54,7 @@ static inline void invpcid_flush_all_nonglobals(void)
     invpcid(0, 0, X86_INVPCID_ALL_NON_GLOBAL);
 }
 
-#endif	/* _ASM_X86_INVPCID_H_ */
+#endif	/* ASM__X86__INVPCID_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/io.h b/xen/arch/x86/include/asm/io.h
index 1cb4217cff..f2f9bb3247 100644
--- a/xen/arch/x86/include/asm/io.h
+++ b/xen/arch/x86/include/asm/io.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
+#ifndef ASM__X86__IO_H
+#define ASM__X86__IO_H
 
 #include <xen/vmap.h>
 #include <xen/types.h>
diff --git a/xen/arch/x86/include/asm/io_apic.h b/xen/arch/x86/include/asm/io_apic.h
index 62456806c7..4446e768c2 100644
--- a/xen/arch/x86/include/asm/io_apic.h
+++ b/xen/arch/x86/include/asm/io_apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_IO_APIC_H
-#define __ASM_IO_APIC_H
+#ifndef ASM__X86__IO_APIC_H
+#define ASM__X86__IO_APIC_H
 
 #include <xen/types.h>
 
diff --git a/xen/arch/x86/include/asm/iocap.h b/xen/arch/x86/include/asm/iocap.h
index 53d87ae8a3..15a0c42ccd 100644
--- a/xen/arch/x86/include/asm/iocap.h
+++ b/xen/arch/x86/include/asm/iocap.h
@@ -4,8 +4,8 @@
  * Architecture-specific per-domain I/O capabilities.
  */
 
-#ifndef __X86_IOCAP_H__
-#define __X86_IOCAP_H__
+#ifndef ASM__X86__IOCAP_H
+#define ASM__X86__IOCAP_H
 
 #include <xen/sched.h>
 #include <xen/rangeset.h>
@@ -44,4 +44,4 @@ static inline int ioports_deny_access(struct domain *d, unsigned long s,
     return ret;
 }
 
-#endif /* __X86_IOCAP_H__ */
+#endif /* ASM__X86__IOCAP_H */
diff --git a/xen/arch/x86/include/asm/iommu.h b/xen/arch/x86/include/asm/iommu.h
index 8dc464fbd3..6d7f876080 100644
--- a/xen/arch/x86/include/asm/iommu.h
+++ b/xen/arch/x86/include/asm/iommu.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARCH_X86_IOMMU_H__
-#define __ARCH_X86_IOMMU_H__
+#ifndef ASM__X86__IOMMU_H
+#define ASM__X86__IOMMU_H
 
 #include <xen/errno.h>
 #include <xen/list.h>
@@ -137,7 +137,7 @@ void iommu_queue_free_pgtable(struct domain_iommu *hd, struct page_info *pg);
 /* Check [start, end] unity map range for correctness. */
 bool iommu_unity_region_ok(const char *prefix, mfn_t start, mfn_t end);
 
-#endif /* !__ARCH_X86_IOMMU_H__ */
+#endif /* !ASM__X86__IOMMU_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/ioreq.h b/xen/arch/x86/include/asm/ioreq.h
index 5fe811eff5..065efcbe24 100644
--- a/xen/arch/x86/include/asm/ioreq.h
+++ b/xen/arch/x86/include/asm/ioreq.h
@@ -8,14 +8,14 @@
  * Copyright (c) 2016 Citrix Systems Inc.
  */
 
-#ifndef __ASM_X86_IOREQ_H__
-#define __ASM_X86_IOREQ_H__
+#ifndef ASM__X86__IOREQ_H
+#define ASM__X86__IOREQ_H
 
 #ifdef CONFIG_HVM
 #include <asm/hvm/ioreq.h>
 #endif
 
-#endif /* __ASM_X86_IOREQ_H__ */
+#endif /* ASM__X86__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/irq.h b/xen/arch/x86/include/asm/irq.h
index d3bc768068..86c2266578 100644
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
+#ifndef ASM__X86__IRQ_H
+#define ASM__X86__IRQ_H
 
 /* (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar */
 
@@ -231,4 +231,4 @@ int allocate_and_map_gsi_pirq(struct domain *d, int index, int *pirq_p);
 int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
                               int type, struct msi_info *msi);
 
-#endif /* _ASM_HW_IRQ_H */
+#endif /* ASM__X86__IRQ_H */
diff --git a/xen/arch/x86/include/asm/ldt.h b/xen/arch/x86/include/asm/ldt.h
index 58e3e042fc..b77b53c1b8 100644
--- a/xen/arch/x86/include/asm/ldt.h
+++ b/xen/arch/x86/include/asm/ldt.h
@@ -1,6 +1,6 @@
 
-#ifndef __ARCH_LDT_H
-#define __ARCH_LDT_H
+#ifndef ASM__X86__LDT_H
+#define ASM__X86__LDT_H
 
 #ifndef __ASSEMBLY__
 
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..b1daf7fa69 100644
--- a/xen/arch/x86/include/asm/mach-default/bios_ebda.h
+++ b/xen/arch/x86/include/asm/mach-default/bios_ebda.h
@@ -1,5 +1,5 @@
-#ifndef _MACH_BIOS_EBDA_H
-#define _MACH_BIOS_EBDA_H
+#ifndef ASM__X86__MACH_DEFAULT__BIOS_EBDA_H
+#define ASM__X86__MACH_DEFAULT__BIOS_EBDA_H
 
 /*
  * there is a real-mode segmented pointer pointing to the
@@ -12,4 +12,4 @@ static inline unsigned int get_bios_ebda(void)
 	return address;	/* 0 means none */
 }
 
-#endif /* _MACH_BIOS_EBDA_H */
+#endif /* ASM__X86__MACH_DEFAULT__BIOS_EBDA_H */
diff --git a/xen/arch/x86/include/asm/mach-default/io_ports.h b/xen/arch/x86/include/asm/mach-default/io_ports.h
index a96d9f6604..d8daaade5c 100644
--- a/xen/arch/x86/include/asm/mach-default/io_ports.h
+++ b/xen/arch/x86/include/asm/mach-default/io_ports.h
@@ -4,8 +4,8 @@
  *  Machine specific IO port address definition for generic.
  *  Written by Osamu Tomita <tomita@cinet.co.jp>
  */
-#ifndef _MACH_IO_PORTS_H
-#define _MACH_IO_PORTS_H
+#ifndef ASM__X86__MACH_DEFAULT__IO_PORTS_H
+#define ASM__X86__MACH_DEFAULT__IO_PORTS_H
 
 /* i8253A PIT registers */
 #define PIT_MODE		0x43
@@ -27,4 +27,4 @@
 #define SLAVE_ICW4_DEFAULT	0x01
 #define PIC_ICW4_AEOI		2
 
-#endif /* !_MACH_IO_PORTS_H */
+#endif /* !ASM__X86__MACH_DEFAULT__IO_PORTS_H */
diff --git a/xen/arch/x86/include/asm/mach-default/irq_vectors.h b/xen/arch/x86/include/asm/mach-default/irq_vectors.h
index f546aedd87..52f7bec7c3 100644
--- a/xen/arch/x86/include/asm/mach-default/irq_vectors.h
+++ b/xen/arch/x86/include/asm/mach-default/irq_vectors.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IRQ_VECTORS_H
-#define _ASM_IRQ_VECTORS_H
+#ifndef ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H
+#define ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H
 
 /* Processor-initiated interrupts are all high priority. */
 #define SPURIOUS_APIC_VECTOR	0xff
@@ -43,4 +43,4 @@
 #define FIRST_IRQ_VECTOR        FIRST_DYNAMIC_VECTOR
 #define LAST_IRQ_VECTOR         LAST_HIPRIORITY_VECTOR
 
-#endif /* _ASM_IRQ_VECTORS_H */
+#endif /* ASM__X86__MACH_DEFAULT__IRQ_VECTORS_H */
diff --git a/xen/arch/x86/include/asm/mach-default/mach_mpspec.h b/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
index 1a4e3f8c4f..3027533052 100644
--- a/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
+++ b/xen/arch/x86/include/asm/mach-default/mach_mpspec.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACH_MPSPEC_H
-#define __ASM_MACH_MPSPEC_H
+#ifndef ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H
+#define ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H
 
 #define MAX_IRQ_SOURCES 256
 
@@ -7,4 +7,4 @@
 /* Maximum 256 PCI busses, plus 1 ISA bus in each of 4 cabinets. */
 #define MAX_MP_BUSSES 260
 
-#endif /* __ASM_MACH_MPSPEC_H */
+#endif /* ASM__X86__MACH_DEFAULT__MACH_MPSPEC_H */
diff --git a/xen/arch/x86/include/asm/mach-generic/mach_apic.h b/xen/arch/x86/include/asm/mach-generic/mach_apic.h
index c0d8b232c9..ae8b2372d8 100644
--- a/xen/arch/x86/include/asm/mach-generic/mach_apic.h
+++ b/xen/arch/x86/include/asm/mach-generic/mach_apic.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACH_APIC_H
-#define __ASM_MACH_APIC_H
+#ifndef ASM__X86__MACH_GENERIC__MACH_APIC_H
+#define ASM__X86__MACH_GENERIC__MACH_APIC_H
 
 #include <asm/apic.h>
 #include <asm/io_apic.h>
@@ -74,4 +74,4 @@ static inline void set_apicid(int phys_apicid, physid_mask_t *map)
 	physid_set(phys_apicid, *map);
 }
 
-#endif /* __ASM_MACH_APIC_H */
+#endif /* ASM__X86__MACH_GENERIC__MACH_APIC_H */
diff --git a/xen/arch/x86/include/asm/machine_kexec.h b/xen/arch/x86/include/asm/machine_kexec.h
index d4880818c1..78072325b2 100644
--- a/xen/arch/x86/include/asm/machine_kexec.h
+++ b/xen/arch/x86/include/asm/machine_kexec.h
@@ -1,5 +1,5 @@
-#ifndef __X86_MACHINE_KEXEC_H__
-#define __X86_MACHINE_KEXEC_H__
+#ifndef ASM__X86__MACHINE_KEXEC_H
+#define ASM__X86__MACHINE_KEXEC_H
 
 #define KEXEC_RELOC_FLAG_COMPAT 0x1 /* 32-bit image */
 
@@ -13,4 +13,4 @@ extern const char kexec_reloc_end[];
 
 #endif
 
-#endif /* __X86_MACHINE_KEXEC_H__ */
+#endif /* ASM__X86__MACHINE_KEXEC_H */
diff --git a/xen/arch/x86/include/asm/mc146818rtc.h b/xen/arch/x86/include/asm/mc146818rtc.h
index 1a34512d29..5e796cda7e 100644
--- a/xen/arch/x86/include/asm/mc146818rtc.h
+++ b/xen/arch/x86/include/asm/mc146818rtc.h
@@ -1,8 +1,8 @@
 /*
  * Machine dependent access functions for RTC registers.
  */
-#ifndef _ASM_MC146818RTC_H
-#define _ASM_MC146818RTC_H
+#ifndef ASM__X86__MC146818RTC_H
+#define ASM__X86__MC146818RTC_H
 
 #include <asm/io.h>
 #include <xen/spinlock.h>
@@ -117,4 +117,4 @@ outb_p((val),RTC_PORT(1)); \
 unsigned int rtc_guest_read(unsigned int port);
 void rtc_guest_write(unsigned int port, unsigned int data);
 
-#endif /* _ASM_MC146818RTC_H */
+#endif /* ASM__X86__MC146818RTC_H */
diff --git a/xen/arch/x86/include/asm/mce.h b/xen/arch/x86/include/asm/mce.h
index 2ec47a71ae..a70748da90 100644
--- a/xen/arch/x86/include/asm/mce.h
+++ b/xen/arch/x86/include/asm/mce.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_X86_MCE_H
-#define _XEN_X86_MCE_H
+#ifndef ASM__X86__MCE_H
+#define ASM__X86__MCE_H
 
 #include <xen/spinlock.h>
 #include <xen/types.h>
diff --git a/xen/arch/x86/include/asm/mem_paging.h b/xen/arch/x86/include/asm/mem_paging.h
index 5ae86669fb..c5ab2ee80e 100644
--- a/xen/arch/x86/include/asm/mem_paging.h
+++ b/xen/arch/x86/include/asm/mem_paging.h
@@ -7,8 +7,8 @@
  * Copyright (c) 2009 Citrix Systems, Inc. (Patrick Colp)
  */
 
-#ifndef __ASM_X86_MEM_PAGING_H__
-#define __ASM_X86_MEM_PAGING_H__
+#ifndef ASM__X86__MEM_PAGING_H
+#define ASM__X86__MEM_PAGING_H
 
 int mem_paging_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_paging_op_t) arg);
 
@@ -18,7 +18,7 @@ int mem_paging_memop(XEN_GUEST_HANDLE_PARAM(xen_mem_paging_op_t) arg);
 # define mem_paging_enabled(d) false
 #endif
 
-#endif /*__ASM_X86_MEM_PAGING_H__ */
+#endif /*ASM__X86__MEM_PAGING_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/mem_sharing.h b/xen/arch/x86/include/asm/mem_sharing.h
index 040962f690..c0e0beb727 100644
--- a/xen/arch/x86/include/asm/mem_sharing.h
+++ b/xen/arch/x86/include/asm/mem_sharing.h
@@ -6,8 +6,8 @@
  *
  * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos)
  */
-#ifndef __MEM_SHARING_H__
-#define __MEM_SHARING_H__
+#ifndef ASM__X86__MEM_SHARING_H
+#define ASM__X86__MEM_SHARING_H
 
 #include <public/domctl.h>
 #include <public/memory.h>
@@ -147,4 +147,4 @@ static inline int mem_sharing_fork_reset(struct domain *d, bool reset_state,
 
 #endif
 
-#endif /* __MEM_SHARING_H__ */
+#endif /* ASM__X86__MEM_SHARING_H */
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 57c08205d4..55ca221c13 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -1,5 +1,5 @@
-#ifndef ASM_X86__MICROCODE_H
-#define ASM_X86__MICROCODE_H
+#ifndef ASM__X86__MICROCODE_H
+#define ASM__X86__MICROCODE_H
 
 #include <xen/types.h>
 #include <xen/percpu.h>
@@ -30,4 +30,4 @@ int microcode_init_cache(unsigned long *module_map,
                          const struct multiboot_info *mbi);
 int microcode_update_one(void);
 
-#endif /* ASM_X86__MICROCODE_H */
+#endif /* ASM__X86__MICROCODE_H */
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 2a837f3d59..81eb0bb8cd 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -1,6 +1,6 @@
 
-#ifndef __ASM_X86_MM_H__
-#define __ASM_X86_MM_H__
+#ifndef ASM__X86__MM_H
+#define ASM__X86__MM_H
 
 #include <xen/list.h>
 #include <xen/spinlock.h>
@@ -628,4 +628,4 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return (mfn + nr) <= (virt_to_mfn(eva - 1) + 1);
 }
 
-#endif /* __ASM_X86_MM_H__ */
+#endif /* ASM__X86__MM_H */
diff --git a/xen/arch/x86/include/asm/mpspec.h b/xen/arch/x86/include/asm/mpspec.h
index 45e474dfd1..bcd9be54ac 100644
--- a/xen/arch/x86/include/asm/mpspec.h
+++ b/xen/arch/x86/include/asm/mpspec.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MPSPEC_H
-#define __ASM_MPSPEC_H
+#ifndef ASM__X86__MPSPEC_H
+#define ASM__X86__MPSPEC_H
 
 #include <xen/cpumask.h>
 #include <asm/mpspec_def.h>
diff --git a/xen/arch/x86/include/asm/mpspec_def.h b/xen/arch/x86/include/asm/mpspec_def.h
index b17ec41426..79a9760be8 100644
--- a/xen/arch/x86/include/asm/mpspec_def.h
+++ b/xen/arch/x86/include/asm/mpspec_def.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MPSPEC_DEF_H
-#define __ASM_MPSPEC_DEF_H
+#ifndef ASM__X86__MPSPEC_DEF_H
+#define ASM__X86__MPSPEC_DEF_H
 
 /*
  * Structure definitions for SMP machines following the
diff --git a/xen/arch/x86/include/asm/msi.h b/xen/arch/x86/include/asm/msi.h
index 748bc3cd6d..ad9b4c90a3 100644
--- a/xen/arch/x86/include/asm/msi.h
+++ b/xen/arch/x86/include/asm/msi.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSI_H
-#define __ASM_MSI_H
+#ifndef ASM__X86__MSI_H
+#define ASM__X86__MSI_H
 
 #include <xen/cpumask.h>
 #include <xen/pci.h>
@@ -251,4 +251,4 @@ void guest_mask_msi_irq(struct irq_desc *desc, bool mask);
 void cf_check ack_nonmaskable_msi_irq(struct irq_desc *desc);
 void cf_check set_msi_affinity(struct irq_desc *desc, const cpumask_t *mask);
 
-#endif /* __ASM_MSI_H */
+#endif /* ASM__X86__MSI_H */
diff --git a/xen/arch/x86/include/asm/msr-index.h b/xen/arch/x86/include/asm/msr-index.h
index 9cdb5b2625..abde451b98 100644
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSR_INDEX_H
-#define __ASM_MSR_INDEX_H
+#ifndef ASM__X86__MSR_INDEX_H
+#define ASM__X86__MSR_INDEX_H
 
 /*
  * CPU model specific register (MSR) numbers
@@ -698,4 +698,4 @@
 #define MSR_PKGC9_IRTL			0x00000634
 #define MSR_PKGC10_IRTL			0x00000635
 
-#endif /* __ASM_MSR_INDEX_H */
+#endif /* ASM__X86__MSR_INDEX_H */
diff --git a/xen/arch/x86/include/asm/msr.h b/xen/arch/x86/include/asm/msr.h
index 355fb324ec..033bb9d6ff 100644
--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MSR_H
-#define __ASM_MSR_H
+#ifndef ASM__X86__MSR_H
+#define ASM__X86__MSR_H
 
 #include "msr-index.h"
 
@@ -441,4 +441,4 @@ int init_vcpu_msr_policy(struct vcpu *v);
 int guest_rdmsr(struct vcpu *v, uint32_t msr, uint64_t *val);
 int guest_wrmsr(struct vcpu *v, uint32_t msr, uint64_t val);
 
-#endif /* __ASM_MSR_H */
+#endif /* ASM__X86__MSR_H */
diff --git a/xen/arch/x86/include/asm/mtrr.h b/xen/arch/x86/include/asm/mtrr.h
index 36dac0a775..384c29f2a7 100644
--- a/xen/arch/x86/include/asm/mtrr.h
+++ b/xen/arch/x86/include/asm/mtrr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_MTRR_H__
-#define __ASM_X86_MTRR_H__
+#ifndef ASM__X86__MTRR_H
+#define ASM__X86__MTRR_H
 
 #include <xen/mm.h>
 
@@ -85,4 +85,4 @@ extern bool pat_msr_set(uint64_t *pat, uint64_t msr);
 bool is_var_mtrr_overlapped(const struct mtrr_state *m);
 bool mtrr_pat_not_equal(const struct vcpu *vd, const struct vcpu *vs);
 
-#endif /* __ASM_X86_MTRR_H__ */
+#endif /* ASM__X86__MTRR_H */
diff --git a/xen/arch/x86/include/asm/multicall.h b/xen/arch/x86/include/asm/multicall.h
index 7e1d4c121a..9e9050dacd 100644
--- a/xen/arch/x86/include/asm/multicall.h
+++ b/xen/arch/x86/include/asm/multicall.h
@@ -2,11 +2,11 @@
  * asm-x86/multicall.h
  */
 
-#ifndef __ASM_X86_MULTICALL_H__
-#define __ASM_X86_MULTICALL_H__
+#ifndef ASM__X86__MULTICALL_H
+#define ASM__X86__MULTICALL_H
 
 #include <xen/multicall.h>
 
 typeof(arch_do_multicall_call) pv_do_multicall_call, hvm_do_multicall_call;
 
-#endif /* __ASM_X86_MULTICALL_H__ */
+#endif /* ASM__X86__MULTICALL_H */
diff --git a/xen/arch/x86/include/asm/mwait.h b/xen/arch/x86/include/asm/mwait.h
index 000a692f6d..90781aa035 100644
--- a/xen/arch/x86/include/asm/mwait.h
+++ b/xen/arch/x86/include/asm/mwait.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_MWAIT_H__
-#define __ASM_X86_MWAIT_H__
+#ifndef ASM__X86__MWAIT_H
+#define ASM__X86__MWAIT_H
 
 #include <xen/types.h>
 
@@ -23,4 +23,4 @@ static inline bool mwait_pc10_supported(void)
 }
 #endif
 
-#endif /* __ASM_X86_MWAIT_H__ */
+#endif /* ASM__X86__MWAIT_H */
diff --git a/xen/arch/x86/include/asm/nmi.h b/xen/arch/x86/include/asm/nmi.h
index 9a5da14162..ce4ab3690f 100644
--- a/xen/arch/x86/include/asm/nmi.h
+++ b/xen/arch/x86/include/asm/nmi.h
@@ -1,6 +1,6 @@
 
-#ifndef ASM_NMI_H
-#define ASM_NMI_H
+#ifndef ASM__X86__NMI_H
+#define ASM__X86__NMI_H
 
 #include <public/nmi.h>
 
@@ -43,4 +43,4 @@ void trigger_nmi_continuation(void);
 
 /* Check for NMI continuation pending. */
 bool nmi_check_continuation(void);
-#endif /* ASM_NMI_H */
+#endif /* ASM__X86__NMI_H */
diff --git a/xen/arch/x86/include/asm/nops.h b/xen/arch/x86/include/asm/nops.h
index 2724a9862e..0d2480a416 100644
--- a/xen/arch/x86/include/asm/nops.h
+++ b/xen/arch/x86/include/asm/nops.h
@@ -1,5 +1,5 @@
-#ifndef __X86_ASM_NOPS_H__
-#define __X86_ASM_NOPS_H__
+#ifndef ASM__X86__NOPS_H
+#define ASM__X86__NOPS_H
 
 /*
  * Define nops for use with alternative().
@@ -65,4 +65,4 @@
 
 #define ASM_NOP_MAX 9
 
-#endif /* __X86_ASM_NOPS_H__ */
+#endif /* ASM__X86__NOPS_H */
diff --git a/xen/arch/x86/include/asm/nospec.h b/xen/arch/x86/include/asm/nospec.h
index e058a3bb0e..d3efb3c52e 100644
--- a/xen/arch/x86/include/asm/nospec.h
+++ b/xen/arch/x86/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
-#ifndef _ASM_X86_NOSPEC_H
-#define _ASM_X86_NOSPEC_H
+#ifndef ASM__X86__NOSPEC_H
+#define ASM__X86__NOSPEC_H
 
 #include <asm/alternative.h>
 
@@ -88,7 +88,7 @@ static always_inline bool arch_lock_evaluate_nospec(bool condition)
         return barrier_lock_false();
 }
 
-#endif /* _ASM_X86_NOSPEC_H */
+#endif /* ASM__X86__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/numa.h b/xen/arch/x86/include/asm/numa.h
index 7866afa408..8371bc3a44 100644
--- a/xen/arch/x86/include/asm/numa.h
+++ b/xen/arch/x86/include/asm/numa.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_X8664_NUMA_H 
-#define _ASM_X8664_NUMA_H 1
+#ifndef ASM__X86__NUMA_H 
+#define ASM__X86__NUMA_H 1
 
 #include <xen/cpumask.h>
 
diff --git a/xen/arch/x86/include/asm/p2m.h b/xen/arch/x86/include/asm/p2m.h
index 321c7b5941..f3cd804af5 100644
--- a/xen/arch/x86/include/asm/p2m.h
+++ b/xen/arch/x86/include/asm/p2m.h
@@ -11,8 +11,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_ASM_X86_P2M_H
-#define _XEN_ASM_X86_P2M_H
+#ifndef ASM__X86__P2M_H
+#define ASM__X86__P2M_H
 
 #include <xen/paging.h>
 #include <xen/mem_access.h>
@@ -1101,7 +1101,7 @@ static inline int p2m_entry_modify(struct p2m_domain *p2m, p2m_type_t nt,
 
 #endif /* CONFIG_HVM */
 
-#endif /* _XEN_ASM_X86_P2M_H */
+#endif /* ASM__X86__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/page-bits.h b/xen/arch/x86/include/asm/page-bits.h
index 6f7fc7d035..5350baf69d 100644
--- a/xen/arch/x86/include/asm/page-bits.h
+++ b/xen/arch/x86/include/asm/page-bits.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PAGE_SHIFT_H__
-#define __X86_PAGE_SHIFT_H__
+#ifndef ASM__X86__PAGE_BITS_H
+#define ASM__X86__PAGE_BITS_H
 
 #define L1_PAGETABLE_SHIFT      12
 #define L2_PAGETABLE_SHIFT      21
@@ -23,4 +23,4 @@
 #define PADDR_BITS              52
 #define VADDR_BITS              48
 
-#endif /* __X86_PAGE_SHIFT_H__ */
+#endif /* ASM__X86__PAGE_BITS_H */
diff --git a/xen/arch/x86/include/asm/page.h b/xen/arch/x86/include/asm/page.h
index e01af28916..63c7341fcc 100644
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PAGE_H__
-#define __X86_PAGE_H__
+#ifndef ASM__X86__PAGE_H
+#define ASM__X86__PAGE_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -389,7 +389,7 @@ static inline void invalidate_icache(void)
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __X86_PAGE_H__ */
+#endif /* ASM__X86__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/paging.h b/xen/arch/x86/include/asm/paging.h
index 8a2a0af408..b7c59c426b 100644
--- a/xen/arch/x86/include/asm/paging.h
+++ b/xen/arch/x86/include/asm/paging.h
@@ -9,8 +9,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_PAGING_H
-#define _XEN_PAGING_H
+#ifndef ASM__X86__PAGING_H
+#define ASM__X86__PAGING_H
 
 #include <xen/mm.h>
 #include <public/domctl.h>
diff --git a/xen/arch/x86/include/asm/pci.h b/xen/arch/x86/include/asm/pci.h
index fd5480d67d..ac38417fc5 100644
--- a/xen/arch/x86/include/asm/pci.h
+++ b/xen/arch/x86/include/asm/pci.h
@@ -1,5 +1,5 @@
-#ifndef __X86_PCI_H__
-#define __X86_PCI_H__
+#ifndef ASM__X86__PCI_H
+#define ASM__X86__PCI_H
 
 #include <xen/mm.h>
 
@@ -67,4 +67,4 @@ static inline bool pci_check_bar(const struct pci_dev *pdev,
     return is_memory_hole(start, end);
 }
 
-#endif /* __X86_PCI_H__ */
+#endif /* ASM__X86__PCI_H */
diff --git a/xen/arch/x86/include/asm/perfc.h b/xen/arch/x86/include/asm/perfc.h
index a1a591e803..b1c3e0d7f7 100644
--- a/xen/arch/x86/include/asm/perfc.h
+++ b/xen/arch/x86/include/asm/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PERFC_H__
-#define __ASM_PERFC_H__
+#ifndef ASM__X86__PERFC_H
+#define ASM__X86__PERFC_H
 
 static inline void arch_perfc_reset(void)
 {
diff --git a/xen/arch/x86/include/asm/perfc_defn.h b/xen/arch/x86/include/asm/perfc_defn.h
index 487e20dc97..20cfbb40c5 100644
--- a/xen/arch/x86/include/asm/perfc_defn.h
+++ b/xen/arch/x86/include/asm/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef ASM__X86__PERFC_DEFN_H*/
+/*#define ASM__X86__PERFC_DEFN_H*/
 
 PERFCOUNTER_ARRAY(exceptions,           "exceptions", 32)
 
@@ -131,4 +131,4 @@ PERFCOUNTER(iommu_pt_coalesces,   "IOMMU page table coalesces")
 PERFCOUNTER(buslock, "Bus Locks Detected")
 PERFCOUNTER(vmnotify_crash, "domain crashes by Notify VM Exit")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* ASM__X86__PERFC_DEFN_H */
diff --git a/xen/arch/x86/include/asm/processor.h b/xen/arch/x86/include/asm/processor.h
index 26e2fb1369..c7ea2f674f 100644
--- a/xen/arch/x86/include/asm/processor.h
+++ b/xen/arch/x86/include/asm/processor.h
@@ -1,8 +1,8 @@
 
 /* Portions are: Copyright (c) 1994 Linus Torvalds */
 
-#ifndef __ASM_X86_PROCESSOR_H
-#define __ASM_X86_PROCESSOR_H
+#ifndef ASM__X86__PROCESSOR_H
+#define ASM__X86__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -529,7 +529,7 @@ void amd_check_zenbleed(void);
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* __ASM_X86_PROCESSOR_H */
+#endif /* ASM__X86__PROCESSOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/prot-key.h b/xen/arch/x86/include/asm/prot-key.h
index 0dcd31b7ea..162db7b3ee 100644
--- a/xen/arch/x86/include/asm/prot-key.h
+++ b/xen/arch/x86/include/asm/prot-key.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2021-2022 Citrix Systems Ltd.
  */
-#ifndef ASM_PROT_KEY_H
-#define ASM_PROT_KEY_H
+#ifndef ASM__X86__PROT_KEY_H
+#define ASM__X86__PROT_KEY_H
 
 #include <xen/percpu.h>
 #include <xen/types.h>
@@ -82,4 +82,4 @@ static inline void wrpkrs_and_cache(uint32_t pkrs)
     wrmsr_ns(MSR_PKRS, pkrs, 0);
 }
 
-#endif /* ASM_PROT_KEY_H */
+#endif /* ASM__X86__PROT_KEY_H */
diff --git a/xen/arch/x86/include/asm/psr.h b/xen/arch/x86/include/asm/psr.h
index d21a59d98f..461a39395f 100644
--- a/xen/arch/x86/include/asm/psr.h
+++ b/xen/arch/x86/include/asm/psr.h
@@ -13,8 +13,8 @@
  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  * more details.
  */
-#ifndef __ASM_PSR_H__
-#define __ASM_PSR_H__
+#ifndef ASM__X86__PSR_H
+#define ASM__X86__PSR_H
 
 #include <xen/types.h>
 
@@ -92,7 +92,7 @@ static inline void psr_domain_init(struct domain *d) {}
 static inline void psr_domain_free(struct domain *d) {}
 #endif
 
-#endif /* __ASM_PSR_H__ */
+#endif /* ASM__X86__PSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pt-contig-markers.h b/xen/arch/x86/include/asm/pt-contig-markers.h
index 1ad5c8fb6c..b0af22a6ba 100644
--- a/xen/arch/x86/include/asm/pt-contig-markers.h
+++ b/xen/arch/x86/include/asm/pt-contig-markers.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_X86_PT_CONTIG_MARKERS_H
-#define __ASM_X86_PT_CONTIG_MARKERS_H
+#ifndef ASM__X86__PT_CONTIG_MARKERS_H
+#define ASM__X86__PT_CONTIG_MARKERS_H
 
 /*
  * Short of having function templates in C, the function defined below is
@@ -107,4 +107,4 @@ static bool pt_update_contig_markers(uint64_t *pt, unsigned int idx,
 
 #endif /* CONTIG_MASK */
 
-#endif /* __ASM_X86_PT_CONTIG_MARKERS_H */
+#endif /* ASM__X86__PT_CONTIG_MARKERS_H */
diff --git a/xen/arch/x86/include/asm/pv/domain.h b/xen/arch/x86/include/asm/pv/domain.h
index 75a6b9e5c7..83c779442b 100644
--- a/xen/arch/x86/include/asm/pv/domain.h
+++ b/xen/arch/x86/include/asm/pv/domain.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_DOMAIN_H__
-#define __X86_PV_DOMAIN_H__
+#ifndef ASM__X86__PV__DOMAIN_H
+#define ASM__X86__PV__DOMAIN_H
 
 #include <xen/sched.h>
 
@@ -110,7 +110,7 @@ static inline void pv_set_reg(struct vcpu *v, unsigned int reg, uint64_t val)
 void cf_check paravirt_ctxt_switch_from(struct vcpu *v);
 void cf_check paravirt_ctxt_switch_to(struct vcpu *v);
 
-#endif	/* __X86_PV_DOMAIN_H__ */
+#endif	/* ASM__X86__PV__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/grant_table.h b/xen/arch/x86/include/asm/pv/grant_table.h
index 88f36c6595..aa03ff5345 100644
--- a/xen/arch/x86/include/asm/pv/grant_table.h
+++ b/xen/arch/x86/include/asm/pv/grant_table.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_GRANT_TABLE_H__
-#define __X86_PV_GRANT_TABLE_H__
+#ifndef ASM__X86__PV__GRANT_TABLE_H
+#define ASM__X86__PV__GRANT_TABLE_H
 
 #ifdef CONFIG_PV
 
@@ -36,7 +36,7 @@ static inline int replace_grant_pv_mapping(uint64_t addr, mfn_t frame,
 
 #endif
 
-#endif /* __X86_PV_GRANT_TABLE_H__ */
+#endif /* ASM__X86__PV__GRANT_TABLE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/mm.h b/xen/arch/x86/include/asm/pv/mm.h
index 182764542c..1135b7bda6 100644
--- a/xen/arch/x86/include/asm/pv/mm.h
+++ b/xen/arch/x86/include/asm/pv/mm.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_MM_H__
-#define __X86_PV_MM_H__
+#ifndef ASM__X86__PV__MM_H
+#define ASM__X86__PV__MM_H
 
 #ifdef CONFIG_PV
 
@@ -46,4 +46,4 @@ static inline bool pv_destroy_ldt(struct vcpu *v)
 
 #endif
 
-#endif /* __X86_PV_MM_H__ */
+#endif /* ASM__X86__PV__MM_H */
diff --git a/xen/arch/x86/include/asm/pv/shim.h b/xen/arch/x86/include/asm/pv/shim.h
index 6153e27005..2a7d1c1594 100644
--- a/xen/arch/x86/include/asm/pv/shim.h
+++ b/xen/arch/x86/include/asm/pv/shim.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017 Citrix Systems Ltd.
  */
 
-#ifndef __X86_PV_SHIM_H__
-#define __X86_PV_SHIM_H__
+#ifndef ASM__X86__PV__SHIM_H
+#define ASM__X86__PV__SHIM_H
 
 #include <xen/hypercall.h>
 #include <xen/types.h>
@@ -98,7 +98,7 @@ pv_shim_reserved_pages(unsigned int *s)
 
 #endif
 
-#endif /* __X86_PV_SHIM_H__ */
+#endif /* ASM__X86__PV__SHIM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/pv/trace.h b/xen/arch/x86/include/asm/pv/trace.h
index c616206eeb..b9ecfb066c 100644
--- a/xen/arch/x86/include/asm/pv/trace.h
+++ b/xen/arch/x86/include/asm/pv/trace.h
@@ -1,5 +1,5 @@
-#ifndef XEN_X86_PV_TRACE_H
-#define XEN_X86_PV_TRACE_H
+#ifndef ASM__X86__PV__TRACE_H
+#define ASM__X86__PV__TRACE_H
 
 #include <xen/trace.h>
 
@@ -45,4 +45,4 @@ static inline void trace_ptwr_emulation(unsigned long addr, l1_pgentry_t npte)
         __trace_ptwr_emulation(addr, npte);
 }
 
-#endif /* XEN_X86_PV_TRACE_H */
+#endif /* ASM__X86__PV__TRACE_H */
diff --git a/xen/arch/x86/include/asm/pv/traps.h b/xen/arch/x86/include/asm/pv/traps.h
index 404f5b169c..31f9f19231 100644
--- a/xen/arch/x86/include/asm/pv/traps.h
+++ b/xen/arch/x86/include/asm/pv/traps.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2017 Wei Liu <wei.liu2@citrix.com>
  */
 
-#ifndef __X86_PV_TRAPS_H__
-#define __X86_PV_TRAPS_H__
+#ifndef ASM__X86__PV__TRAPS_H
+#define ASM__X86__PV__TRAPS_H
 
 #ifdef CONFIG_PV
 
@@ -47,7 +47,7 @@ static inline bool pv_trap_callback_registered(const struct vcpu *v,
 }
 #endif /* CONFIG_PV */
 
-#endif /* __X86_PV_TRAPS_H__ */
+#endif /* ASM__X86__PV__TRAPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/random.h b/xen/arch/x86/include/asm/random.h
index 9e1fe0bc1d..55f0293a0f 100644
--- a/xen/arch/x86/include/asm/random.h
+++ b/xen/arch/x86/include/asm/random.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_RANDOM_H__
-#define __ASM_RANDOM_H__
+#ifndef ASM__X86__RANDOM_H
+#define ASM__X86__RANDOM_H
 
 #include <asm/processor.h>
 
@@ -13,4 +13,4 @@ static inline unsigned int arch_get_random(void)
     return val;
 }
 
-#endif /* __ASM_RANDOM_H__ */
+#endif /* ASM__X86__RANDOM_H */
diff --git a/xen/arch/x86/include/asm/regs.h b/xen/arch/x86/include/asm/regs.h
index ddf5e14e57..e99b18e3ab 100644
--- a/xen/arch/x86/include/asm/regs.h
+++ b/xen/arch/x86/include/asm/regs.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_REGS_H__
-#define __X86_REGS_H__
+#ifndef ASM__X86__REGS_H
+#define ASM__X86__REGS_H
 
 #include <asm/x86_64/regs.h>
 
@@ -30,4 +30,4 @@ static inline void read_sregs(struct cpu_user_regs *regs)
     asm ( "mov %%gs, %0" : "=m" (regs->gs) );
 }
 
-#endif /* __X86_REGS_H__ */
+#endif /* ASM__X86__REGS_H */
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index d75589178b..be6cac0095 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -1,5 +1,5 @@
-#ifndef __X86_SETUP_H_
-#define __X86_SETUP_H_
+#ifndef ASM__X86__SETUP_H
+#define ASM__X86__SETUP_H
 
 #include <xen/multiboot.h>
 #include <asm/numa.h>
diff --git a/xen/arch/x86/include/asm/shadow.h b/xen/arch/x86/include/asm/shadow.h
index 9a8d1b8353..034d389c60 100644
--- a/xen/arch/x86/include/asm/shadow.h
+++ b/xen/arch/x86/include/asm/shadow.h
@@ -19,8 +19,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _XEN_SHADOW_H
-#define _XEN_SHADOW_H
+#ifndef ASM__X86__SHADOW_H
+#define ASM__X86__SHADOW_H
 
 #include <xen/sched.h>
 #include <xen/perfc.h>
@@ -271,7 +271,7 @@ static inline void shadow_remove_all_shadows(struct domain *d, mfn_t gmfn)
     sh_remove_shadows(d, gmfn, 0 /* Be thorough */, 1 /* Must succeed */);
 }
 
-#endif /* _XEN_SHADOW_H */
+#endif /* ASM__X86__SHADOW_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/shared.h b/xen/arch/x86/include/asm/shared.h
index 60b67fa4b4..b08c8b3f7b 100644
--- a/xen/arch/x86/include/asm/shared.h
+++ b/xen/arch/x86/include/asm/shared.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_SHARED_H__
-#define __XEN_X86_SHARED_H__
+#ifndef ASM__X86__SHARED_H
+#define ASM__X86__SHARED_H
 
 #ifdef CONFIG_COMPAT
 
@@ -83,4 +83,4 @@ GET_SET_VCPU(unsigned long, cr2)
 #undef GET_SET_VCPU
 #undef GET_SET_SHARED
 
-#endif /* __XEN_X86_SHARED_H__ */
+#endif /* ASM__X86__SHARED_H */
diff --git a/xen/arch/x86/include/asm/shstk.h b/xen/arch/x86/include/asm/shstk.h
index 9160fe9f0e..e04694c151 100644
--- a/xen/arch/x86/include/asm/shstk.h
+++ b/xen/arch/x86/include/asm/shstk.h
@@ -2,8 +2,8 @@
 /******************************************************************************
  * Copyright (c) 2022 Citrix Systems Ltd.
  */
-#ifndef XEN_ASM_SHSTK_H
-#define XEN_ASM_SHSTK_H
+#ifndef ASM__X86__SHSTK_H
+#define ASM__X86__SHSTK_H
 
 /*
  * RDSSP is a nop when shadow stacks are inactive.  Also, SSP has a minimum
@@ -31,4 +31,4 @@ static inline void wrss(unsigned long val, unsigned long *ptr)
           : [val] "r" (val) );
 }
 
-#endif /* XEN_ASM_SHSTK_H */
+#endif /* ASM__X86__SHSTK_H */
diff --git a/xen/arch/x86/include/asm/smp.h b/xen/arch/x86/include/asm/smp.h
index c8c7960134..90c17d1a2b 100644
--- a/xen/arch/x86/include/asm/smp.h
+++ b/xen/arch/x86/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__X86__SMP_H
+#define ASM__X86__SMP_H
 
 /*
  * We need the APIC definitions automatically as part of 'smp.h'
diff --git a/xen/arch/x86/include/asm/softirq.h b/xen/arch/x86/include/asm/softirq.h
index 415ee866c7..796ee09586 100644
--- a/xen/arch/x86/include/asm/softirq.h
+++ b/xen/arch/x86/include/asm/softirq.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SOFTIRQ_H__
-#define __ASM_SOFTIRQ_H__
+#ifndef ASM__X86__SOFTIRQ_H
+#define ASM__X86__SOFTIRQ_H
 
 #define NMI_SOFTIRQ            (NR_COMMON_SOFTIRQS + 0)
 #define TIME_CALIBRATE_SOFTIRQ (NR_COMMON_SOFTIRQS + 1)
@@ -11,4 +11,4 @@
 
 bool arch_skip_send_event_check(unsigned int cpu);
 
-#endif /* __ASM_SOFTIRQ_H__ */
+#endif /* ASM__X86__SOFTIRQ_H */
diff --git a/xen/arch/x86/include/asm/spec_ctrl.h b/xen/arch/x86/include/asm/spec_ctrl.h
index 72347ef2b9..472c0a3e94 100644
--- a/xen/arch/x86/include/asm/spec_ctrl.h
+++ b/xen/arch/x86/include/asm/spec_ctrl.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017-2018 Citrix Systems Ltd.
  */
 
-#ifndef __X86_SPEC_CTRL_H__
-#define __X86_SPEC_CTRL_H__
+#ifndef ASM__X86__SPEC_CTRL_H
+#define ASM__X86__SPEC_CTRL_H
 
 /*
  * Encoding of Xen's speculation control flags in:
@@ -196,7 +196,7 @@ static always_inline void spec_ctrl_exit_idle(struct cpu_info *info)
 }
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_SPEC_CTRL_H__ */
+#endif /* !ASM__X86__SPEC_CTRL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/spec_ctrl_asm.h b/xen/arch/x86/include/asm/spec_ctrl_asm.h
index 729a830411..5c6f0e1ec6 100644
--- a/xen/arch/x86/include/asm/spec_ctrl_asm.h
+++ b/xen/arch/x86/include/asm/spec_ctrl_asm.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2017-2018 Citrix Systems Ltd.
  */
 
-#ifndef __X86_SPEC_CTRL_ASM_H__
-#define __X86_SPEC_CTRL_ASM_H__
+#ifndef ASM__X86__SPEC_CTRL_ASM_H
+#define ASM__X86__SPEC_CTRL_ASM_H
 
 #ifdef __ASSEMBLY__
 #include <asm/msr-index.h>
@@ -501,7 +501,7 @@
 .endm
 
 #endif /* __ASSEMBLY__ */
-#endif /* !__X86_SPEC_CTRL_ASM_H__ */
+#endif /* !ASM__X86__SPEC_CTRL_ASM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/spinlock.h b/xen/arch/x86/include/asm/spinlock.h
index 56f6095752..11bec91e7f 100644
--- a/xen/arch/x86/include/asm/spinlock.h
+++ b/xen/arch/x86/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__X86__SPINLOCK_H
+#define ASM__X86__SPINLOCK_H
 
 #define _raw_read_unlock(l) \
     BUILD_BUG_ON(sizeof((l)->lock) != 4); /* Clang doesn't support %z in asm. */ \
@@ -24,4 +24,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__X86__SPINLOCK_H */
diff --git a/xen/arch/x86/include/asm/string.h b/xen/arch/x86/include/asm/string.h
index f08d95096e..c0a469ff48 100644
--- a/xen/arch/x86/include/asm/string.h
+++ b/xen/arch/x86/include/asm/string.h
@@ -1,7 +1,7 @@
-#ifndef __X86_STRING_H__
-#define __X86_STRING_H__
+#ifndef ASM__X86__STRING_H
+#define ASM__X86__STRING_H
 
-#endif /* __X86_STRING_H__ */
+#endif /* ASM__X86__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/include/asm/system.h b/xen/arch/x86/include/asm/system.h
index 73cb16ca68..f347e2664e 100644
--- a/xen/arch/x86/include/asm/system.h
+++ b/xen/arch/x86/include/asm/system.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SYSTEM_H
-#define __ASM_SYSTEM_H
+#ifndef ASM__X86__SYSTEM_H
+#define ASM__X86__SYSTEM_H
 
 #include <xen/bitops.h>
 #include <xen/bug.h>
diff --git a/xen/arch/x86/include/asm/time.h b/xen/arch/x86/include/asm/time.h
index 3dfbb5297a..5452da7c62 100644
--- a/xen/arch/x86/include/asm/time.h
+++ b/xen/arch/x86/include/asm/time.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_TIME_H__
-#define __X86_TIME_H__
+#ifndef ASM__X86__TIME_H
+#define ASM__X86__TIME_H
 
 #include <asm/msr.h>
 
@@ -92,4 +92,4 @@ u64 scale_delta(u64 delta, const struct time_scale *scale);
 #define PIT_STATUS_NULL_COUNT (1 << 6)
 /* Lower bits match Timer Control Word. */
 
-#endif /* __X86_TIME_H__ */
+#endif /* ASM__X86__TIME_H */
diff --git a/xen/arch/x86/include/asm/trampoline.h b/xen/arch/x86/include/asm/trampoline.h
index 57a1f85a53..a9bbfeedf7 100644
--- a/xen/arch/x86/include/asm/trampoline.h
+++ b/xen/arch/x86/include/asm/trampoline.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef X86_ASM_TRAMPOLINE_H
-#define X86_ASM_TRAMPOLINE_H
+#ifndef ASM__X86__TRAMPOLINE_H
+#define ASM__X86__TRAMPOLINE_H
 
 /*
  * Data in or about the low memory trampoline.
@@ -92,4 +92,4 @@ extern uint8_t video_flags;
 extern uint16_t boot_edid_caps;
 extern uint8_t boot_edid_info[128];
 
-#endif /* X86_ASM_TRAMPOLINE_H */
+#endif /* ASM__X86__TRAMPOLINE_H */
diff --git a/xen/arch/x86/include/asm/traps.h b/xen/arch/x86/include/asm/traps.h
index 01ef362edc..92348b201c 100644
--- a/xen/arch/x86/include/asm/traps.h
+++ b/xen/arch/x86/include/asm/traps.h
@@ -4,12 +4,12 @@
  * Author: Christoph Egger <Christoph.Egger@amd.com>
  */
 
-#ifndef ASM_TRAP_H
-#define ASM_TRAP_H
+#ifndef ASM__X86__TRAPS_H
+#define ASM__X86__TRAPS_H
 
 const char *vector_name(unsigned int vec);
 
-#endif /* ASM_TRAP_H */
+#endif /* ASM__X86__TRAPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/types.h b/xen/arch/x86/include/asm/types.h
index 4cbbc8eaa6..99f3388218 100644
--- a/xen/arch/x86/include/asm/types.h
+++ b/xen/arch/x86/include/asm/types.h
@@ -1,8 +1,8 @@
-#ifndef __X86_TYPES_H__
-#define __X86_TYPES_H__
+#ifndef ASM__X86__TYPES_H
+#define ASM__X86__TYPES_H
 
 typedef unsigned long paddr_t;
 #define INVALID_PADDR (~0UL)
 #define PRIpaddr "016lx"
 
-#endif /* __X86_TYPES_H__ */
+#endif /* ASM__X86__TYPES_H */
diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h
index 2d01669b96..d47a81a36b 100644
--- a/xen/arch/x86/include/asm/uaccess.h
+++ b/xen/arch/x86/include/asm/uaccess.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_UACCESS_H__
-#define __X86_UACCESS_H__
+#ifndef ASM__X86__UACCESS_H
+#define ASM__X86__UACCESS_H
 
 #include <xen/compiler.h>
 #include <xen/errno.h>
@@ -427,4 +427,4 @@ extern void sort_exception_tables(void);
 extern void sort_exception_table(struct exception_table_entry *start,
                                  const struct exception_table_entry *stop);
 
-#endif /* __X86_UACCESS_H__ */
+#endif /* ASM__X86__UACCESS_H */
diff --git a/xen/arch/x86/include/asm/vpmu.h b/xen/arch/x86/include/asm/vpmu.h
index dae9b43dac..cb5f2b3b17 100644
--- a/xen/arch/x86/include/asm/vpmu.h
+++ b/xen/arch/x86/include/asm/vpmu.h
@@ -7,8 +7,8 @@
  * Author: Haitao Shan <haitao.shan@intel.com>
  */
 
-#ifndef __ASM_X86_HVM_VPMU_H_
-#define __ASM_X86_HVM_VPMU_H_
+#ifndef ASM__X86__VPMU_H
+#define ASM__X86__VPMU_H
 
 #include <public/pmu.h>
 
@@ -142,5 +142,5 @@ static inline int vpmu_allocate_context(struct vcpu *v)
 }
 #endif
 
-#endif /* __ASM_X86_HVM_VPMU_H_*/
+#endif /* ASM__X86__VPMU_H*/
 
diff --git a/xen/arch/x86/include/asm/x86-defns.h b/xen/arch/x86/include/asm/x86-defns.h
index 7abc5bcd42..a2f3e5ebe7 100644
--- a/xen/arch/x86/include/asm/x86-defns.h
+++ b/xen/arch/x86/include/asm/x86-defns.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_DEFNS_H__
-#define __XEN_X86_DEFNS_H__
+#ifndef ASM__X86__X86_DEFNS_H
+#define ASM__X86__X86_DEFNS_H
 
 /*
  * EFLAGS bits
@@ -204,4 +204,4 @@
 #define X86_MT_UCM    0x07 /* UC- */
 #define X86_NUM_MT    0x08
 
-#endif	/* __XEN_X86_DEFNS_H__ */
+#endif	/* ASM__X86__X86_DEFNS_H */
diff --git a/xen/arch/x86/include/asm/x86-vendors.h b/xen/arch/x86/include/asm/x86-vendors.h
index d51c516909..eb69dab2fc 100644
--- a/xen/arch/x86/include/asm/x86-vendors.h
+++ b/xen/arch/x86/include/asm/x86-vendors.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_X86_VENDORS_H__
-#define __XEN_X86_VENDORS_H__
+#ifndef ASM__X86__X86_VENDORS_H
+#define ASM__X86__X86_VENDORS_H
 
 /*
  * CPU vendor IDs
@@ -36,4 +36,4 @@
 #define X86_VENDOR_HYGON_ECX _AC(0x656e6975, U)
 #define X86_VENDOR_HYGON_EDX _AC(0x6e65476e, U)
 
-#endif	/* __XEN_X86_VENDORS_H__ */
+#endif	/* ASM__X86__X86_VENDORS_H */
diff --git a/xen/arch/x86/include/asm/x86_64/elf.h b/xen/arch/x86/include/asm/x86_64/elf.h
index 00227e0e12..7842e4c997 100644
--- a/xen/arch/x86/include/asm/x86_64/elf.h
+++ b/xen/arch/x86/include/asm/x86_64/elf.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_ELF_H__
-#define __X86_64_ELF_H__
+#ifndef ASM__X86__X86_64__ELF_H
+#define ASM__X86__X86_64__ELF_H
 
 #include <asm/msr.h>
 #include <asm/regs.h>
@@ -72,7 +72,7 @@ static inline void elf_core_save_regs(ELF_Gregset *core_regs,
     asm ( "mov %%cr4, %0" : "=r" (xen_core_regs->cr4) );
 }
 
-#endif /* __X86_64_ELF_H__ */
+#endif /* ASM__X86__X86_64__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/x86_64/page.h b/xen/arch/x86/include/asm/x86_64/page.h
index 201b79f99e..797bc698f3 100644
--- a/xen/arch/x86/include/asm/x86_64/page.h
+++ b/xen/arch/x86/include/asm/x86_64/page.h
@@ -1,6 +1,6 @@
 
-#ifndef __X86_64_PAGE_H__
-#define __X86_64_PAGE_H__
+#ifndef ASM__X86__X86_64__PAGE_H
+#define ASM__X86__X86_64__PAGE_H
 
 #define __XEN_VIRT_START        XEN_VIRT_START
 
@@ -153,7 +153,7 @@ static inline intpte_t put_pte_flags(unsigned int x)
 #define PAGE_HYPERVISOR_WT      (__PAGE_HYPERVISOR_WT | \
                                  _PAGE_GLOBAL | _PAGE_NX)
 
-#endif /* __X86_64_PAGE_H__ */
+#endif /* ASM__X86__X86_64__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/x86_64/regs.h b/xen/arch/x86/include/asm/x86_64/regs.h
index 171cf9a2e2..55a309cf24 100644
--- a/xen/arch/x86/include/asm/x86_64/regs.h
+++ b/xen/arch/x86/include/asm/x86_64/regs.h
@@ -1,5 +1,5 @@
-#ifndef _X86_64_REGS_H
-#define _X86_64_REGS_H
+#ifndef ASM__X86__X86_64__REGS_H
+#define ASM__X86__X86_64__REGS_H
 
 #include <xen/types.h>
 #include <public/xen.h>
diff --git a/xen/arch/x86/include/asm/x86_64/system.h b/xen/arch/x86/include/asm/x86_64/system.h
index e94371cf20..2bb71615fe 100644
--- a/xen/arch/x86/include/asm/x86_64/system.h
+++ b/xen/arch/x86/include/asm/x86_64/system.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_SYSTEM_H__
-#define __X86_64_SYSTEM_H__
+#ifndef ASM__X86__X86_64__SYSTEM_H
+#define ASM__X86__X86_64__SYSTEM_H
 
 #define cmpxchg(ptr,o,n)                                                \
     ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),            \
@@ -59,4 +59,4 @@ static always_inline __uint128_t cmpxchg16b_local_(
     __cmpxchg16b(_p, (void *)(o), (void *)(n));            \
 })
 
-#endif /* __X86_64_SYSTEM_H__ */
+#endif /* ASM__X86__X86_64__SYSTEM_H */
diff --git a/xen/arch/x86/include/asm/x86_64/uaccess.h b/xen/arch/x86/include/asm/x86_64/uaccess.h
index c6fa3fd381..e775af5487 100644
--- a/xen/arch/x86/include/asm/x86_64/uaccess.h
+++ b/xen/arch/x86/include/asm/x86_64/uaccess.h
@@ -1,5 +1,5 @@
-#ifndef __X86_64_UACCESS_H
-#define __X86_64_UACCESS_H
+#ifndef ASM__X86__X86_64__UACCESS_H
+#define ASM__X86__X86_64__UACCESS_H
 
 /*
  * With CONFIG_SPECULATIVE_HARDEN_GUEST_ACCESS (apparent) PV guest accesses
@@ -68,4 +68,4 @@ extern void *xlat_malloc(unsigned long *xlat_page_current, size_t size);
     (likely((count) < (~0U / (size))) && \
      compat_access_ok(addr, 0 + (count) * (size)))
 
-#endif /* __X86_64_UACCESS_H */
+#endif /* ASM__X86__X86_64__UACCESS_H */
diff --git a/xen/arch/x86/include/asm/x86_emulate.h b/xen/arch/x86/include/asm/x86_emulate.h
index 2b75f7f8e2..95aba22819 100644
--- a/xen/arch/x86/include/asm/x86_emulate.h
+++ b/xen/arch/x86/include/asm/x86_emulate.h
@@ -9,8 +9,8 @@
  *    Keir Fraser <keir@xen.org>
  */
 
-#ifndef __ASM_X86_X86_EMULATE_H__
-#define __ASM_X86_X86_EMULATE_H__
+#ifndef ASM__X86__X86_EMULATE_H
+#define ASM__X86__X86_EMULATE_H
 
 #include <xen/types.h>
 #include <xen/lib.h>
@@ -19,4 +19,4 @@
 
 #include "../../x86_emulate/x86_emulate.h"
 
-#endif /* __ASM_X86_X86_EMULATE_H__ */
+#endif /* ASM__X86__X86_EMULATE_H */
diff --git a/xen/arch/x86/include/asm/xenoprof.h b/xen/arch/x86/include/asm/xenoprof.h
index dc6f822d32..8d729a0397 100644
--- a/xen/arch/x86/include/asm/xenoprof.h
+++ b/xen/arch/x86/include/asm/xenoprof.h
@@ -7,8 +7,8 @@
  *                    VA Linux Systems Japan K.K.
  */
 
-#ifndef __ASM_X86_XENOPROF_H__
-#define __ASM_X86_XENOPROF_H__
+#ifndef ASM__X86__XENOPROF_H
+#define ASM__X86__XENOPROF_H
 
 struct vcpu;
 
@@ -82,7 +82,7 @@ static inline bool nmi_oprofile_send_virq(void)
 
 #endif /* CONFIG_XENOPROF */
 
-#endif /* __ASM_X86_XENOPROF_H__ */
+#endif /* ASM__X86__XENOPROF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index b4ee555953..b673412e71 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -5,8 +5,8 @@
  * 
  */
 
-#ifndef __ASM_XSTATE_H
-#define __ASM_XSTATE_H
+#ifndef ASM__X86__XSTATE_H
+#define ASM__X86__XSTATE_H
 
 #include <xen/sched.h>
 #include <asm/cpufeature.h>
@@ -142,4 +142,4 @@ static inline bool xstate_all(const struct vcpu *v)
            (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
 }
 
-#endif /* __ASM_XSTATE_H */
+#endif /* ASM__X86__XSTATE_H */
diff --git a/xen/arch/x86/mm/hap/private.h b/xen/arch/x86/mm/hap/private.h
index 7eb672fa41..a85d390f56 100644
--- a/xen/arch/x86/mm/hap/private.h
+++ b/xen/arch/x86/mm/hap/private.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2007, AMD Corporation (Wei Huang)
  *
  */
-#ifndef __HAP_PRIVATE_H__
-#define __HAP_PRIVATE_H__
+#ifndef X86__MM__HAP__PRIVATE_H
+#define X86__MM__HAP__PRIVATE_H
 
 #include "../mm-locks.h"
 
@@ -30,4 +30,4 @@ unsigned long cf_check hap_p2m_ga_to_gfn_4_levels(
     struct vcpu *v, struct p2m_domain *p2m, unsigned long cr3,
     paddr_t ga, uint32_t *pfec, unsigned int *page_order);
 
-#endif /* __HAP_PRIVATE_H__ */
+#endif /* X86__MM__HAP__PRIVATE_H */
diff --git a/xen/arch/x86/mm/mm-locks.h b/xen/arch/x86/mm/mm-locks.h
index a695a28324..e676c19b87 100644
--- a/xen/arch/x86/mm/mm-locks.h
+++ b/xen/arch/x86/mm/mm-locks.h
@@ -10,8 +10,8 @@
  * Copyright (c) 2006 Michael A Fetterman
  */
 
-#ifndef _MM_LOCKS_H
-#define _MM_LOCKS_H
+#ifndef X86__MM__MM_LOCKS_H
+#define X86__MM__MM_LOCKS_H
 
 /* Per-CPU variable for enforcing the lock ordering */
 DECLARE_PER_CPU(int, mm_lock_level);
@@ -394,4 +394,4 @@ declare_mm_lock(paging)
 #define paging_unlock(d)       mm_unlock(&(d)->arch.paging.lock)
 #define paging_locked_by_me(d) mm_locked_by_me(&(d)->arch.paging.lock)
 
-#endif /* _MM_LOCKS_H */
+#endif /* X86__MM__MM_LOCKS_H */
diff --git a/xen/arch/x86/mm/p2m.h b/xen/arch/x86/mm/p2m.h
index 635f5a7f45..6815367c10 100644
--- a/xen/arch/x86/mm/p2m.h
+++ b/xen/arch/x86/mm/p2m.h
@@ -3,8 +3,8 @@
  * arch/x86/mm/p2m.h
  */
 
-#ifndef __ARCH_MM_P2M_H__
-#define __ARCH_MM_P2M_H__
+#ifndef X86__MM__P2M_H
+#define X86__MM__P2M_H
 
 struct p2m_domain *p2m_init_one(struct domain *d);
 void p2m_free_one(struct p2m_domain *p2m);
@@ -33,7 +33,7 @@ int ept_p2m_init(struct p2m_domain *p2m);
 void ept_p2m_uninit(struct p2m_domain *p2m);
 void p2m_init_altp2m_ept(struct domain *d, unsigned int i);
 
-#endif /* __ARCH_MM_P2M_H__ */
+#endif /* X86__MM__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h
index a5fc3a7676..f6156eceb7 100644
--- a/xen/arch/x86/mm/shadow/private.h
+++ b/xen/arch/x86/mm/shadow/private.h
@@ -8,8 +8,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_SHADOW_PRIVATE_H
-#define _XEN_SHADOW_PRIVATE_H
+#ifndef X86__MM__SHADOW__PRIVATE_H
+#define X86__MM__SHADOW__PRIVATE_H
 
 // In order to override the definition of mfn_to_page, we make sure page.h has
 // been included...
@@ -912,7 +912,7 @@ static inline int sh_check_page_has_no_refs(struct page_info *page)
 /* Flush the TLB of the selected vCPUs. */
 bool cf_check shadow_flush_tlb(const unsigned long *vcpu_bitmap);
 
-#endif /* _XEN_SHADOW_PRIVATE_H */
+#endif /* X86__MM__SHADOW__PRIVATE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/mm/shadow/types.h b/xen/arch/x86/mm/shadow/types.h
index d700d8d64c..ade4e6601d 100644
--- a/xen/arch/x86/mm/shadow/types.h
+++ b/xen/arch/x86/mm/shadow/types.h
@@ -7,8 +7,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef _XEN_SHADOW_TYPES_H
-#define _XEN_SHADOW_TYPES_H
+#ifndef X86__MM__SHADOW__TYPES_H
+#define X86__MM__SHADOW__TYPES_H
 
 /* The number of levels in the shadow pagetable is entirely determined
  * by the number of levels in the guest pagetable */
@@ -377,7 +377,7 @@ static inline uint32_t sh_l1e_mmio_get_flags(shadow_l1e_t sl1e)
 #endif /* SHOPT_FAST_FAULT_PATH */
 
 
-#endif /* _XEN_SHADOW_TYPES_H */
+#endif /* X86__MM__SHADOW__TYPES_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/oprofile/op_counter.h b/xen/arch/x86/oprofile/op_counter.h
index b515ac9ebc..b2ad0fb108 100644
--- a/xen/arch/x86/oprofile/op_counter.h
+++ b/xen/arch/x86/oprofile/op_counter.h
@@ -7,8 +7,8 @@
  * @author John Levon
  */
  
-#ifndef OP_COUNTER_H
-#define OP_COUNTER_H
+#ifndef X86__OPROFILE__OP_COUNTER_H
+#define X86__OPROFILE__OP_COUNTER_H
  
 #define OP_MAX_COUNTER 8
  
@@ -38,4 +38,4 @@ struct op_ibs_config {
 
 extern struct op_ibs_config ibs_config;
 
-#endif /* OP_COUNTER_H */
+#endif /* X86__OPROFILE__OP_COUNTER_H */
diff --git a/xen/arch/x86/oprofile/op_x86_model.h b/xen/arch/x86/oprofile/op_x86_model.h
index 35bc3c1e22..92253da6a5 100644
--- a/xen/arch/x86/oprofile/op_x86_model.h
+++ b/xen/arch/x86/oprofile/op_x86_model.h
@@ -8,8 +8,8 @@
  * @author Graydon Hoare
  */
 
-#ifndef OP_X86_MODEL_H
-#define OP_X86_MODEL_H
+#ifndef X86__OPROFILE__OP_X86_MODEL_H
+#define X86__OPROFILE__OP_X86_MODEL_H
 
 struct op_msr {
 	unsigned long addr;
@@ -55,4 +55,4 @@ void arch_perfmon_setup_counters(void);
 extern int ppro_has_global_ctrl;
 extern struct op_x86_model_spec const *model;
 
-#endif /* OP_X86_MODEL_H */
+#endif /* X86__OPROFILE__OP_X86_MODEL_H */
diff --git a/xen/arch/x86/pv/emulate.h b/xen/arch/x86/pv/emulate.h
index 49a4d34832..7eef71758e 100644
--- a/xen/arch/x86/pv/emulate.h
+++ b/xen/arch/x86/pv/emulate.h
@@ -1,5 +1,5 @@
-#ifndef __PV_EMULATE_H__
-#define __PV_EMULATE_H__
+#ifndef X86__PV__EMULATE_H
+#define X86__PV__EMULATE_H
 
 #include <xen/sched.h>
 
@@ -22,4 +22,4 @@ static inline const seg_desc_t *gdt_ldt_desc_ptr(unsigned int sel)
     return &tbl[sel >> 3];
 }
 
-#endif /* __PV_EMULATE_H__ */
+#endif /* X86__PV__EMULATE_H */
diff --git a/xen/arch/x86/pv/mm.h b/xen/arch/x86/pv/mm.h
index 4564cab9fc..49a10b2878 100644
--- a/xen/arch/x86/pv/mm.h
+++ b/xen/arch/x86/pv/mm.h
@@ -1,5 +1,5 @@
-#ifndef __PV_MM_H__
-#define __PV_MM_H__
+#ifndef X86__PV__MM_H
+#define X86__PV__MM_H
 
 #include <asm/shadow.h>
 
@@ -181,4 +181,4 @@ static always_inline l4_pgentry_t adjust_guest_l4e(l4_pgentry_t l4e,
     return l4e;
 }
 
-#endif /* __PV_MM_H__ */
+#endif /* X86__PV__MM_H */
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.h b/xen/arch/x86/x86_emulate/x86_emulate.h
index 3e819d4174..d52ac28307 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.h
+++ b/xen/arch/x86/x86_emulate/x86_emulate.h
@@ -8,8 +8,8 @@
  * Copyright (c) 2005-2007 XenSource Inc.
  */
 
-#ifndef __X86_EMULATE_H__
-#define __X86_EMULATE_H__
+#ifndef X86__X86_EMULATE__X86_EMULATE_H
+#define X86__X86_EMULATE__X86_EMULATE_H
 
 #include <xen/lib/x86/cpu-policy.h>
 
@@ -846,4 +846,4 @@ static inline void x86_emul_reset_event(struct x86_emulate_ctxt *ctxt)
     ctxt->event = (struct x86_event){};
 }
 
-#endif /* __X86_EMULATE_H__ */
+#endif /* X86__X86_EMULATE__X86_EMULATE_H */
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index f43e1a3b21..cef116d8cb 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -1,6 +1,6 @@
 /* Common data structures and functions consumed by hypervisor and toolstack */
-#ifndef XEN_LIB_X86_POLICIES_H
-#define XEN_LIB_X86_POLICIES_H
+#ifndef XEN__LIB__X86__CPU_POLICY_H
+#define XEN__LIB__X86__CPU_POLICY_H
 
 #include <xen/lib/x86/cpuid-autogen.h>
 
@@ -542,7 +542,7 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err);
 
-#endif /* !XEN_LIB_X86_POLICIES_H */
+#endif /* !XEN__LIB__X86__CPU_POLICY_H */
 
 /*
  * Local variables:
diff --git a/xen/lib/x86/private.h b/xen/lib/x86/private.h
index 60bb82a400..bd55647d68 100644
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -1,5 +1,5 @@
-#ifndef XEN_LIB_X86_PRIVATE_H
-#define XEN_LIB_X86_PRIVATE_H
+#ifndef LIB__X86__PRIVATE_H
+#define LIB__X86__PRIVATE_H
 
 #ifdef __XEN__
 
@@ -65,7 +65,7 @@ static inline bool test_bit(unsigned int bit, const void *vaddr)
 
 #endif /* __XEN__ */
 
-#endif /* XEN_LIB_X86_PRIVATE_H */
+#endif /* LIB__X86__PRIVATE_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810088.1222754 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVH-0006eW-FW; Fri, 04 Oct 2024 08:17:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810088.1222754; Fri, 04 Oct 2024 08:17: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 1swdVH-0006cq-3M; Fri, 04 Oct 2024 08:17:35 +0000
Received: by outflank-mailman (input) for mailman id 810088;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVF-0005Kj-7o
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:33 +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 1a2d7a9c-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:31 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c883459b19so2087391a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:31 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1a2d7a9c-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029851; x=1728634651; 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=tUCJBvhofnmQKNA8lGIkGO7D/fxxaw9oGLj4xWZ4GLk=;
        b=avX6VT+ESjFtEnsHFWiKEzyAowZGoNMMwYaHIoCYNqBdyXQB1cizBTutYJc2AmRm0f
         xjagBPPjSuRuJdHC1qssMNmHnDPenEKmG6VeK85/oNh1s/yzHXxGF7IgZonVzXeKzjgK
         jUi8snYz/1yoVK8rnfbWG19RnSzQZ6W6VtYMw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029851; x=1728634651;
        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=tUCJBvhofnmQKNA8lGIkGO7D/fxxaw9oGLj4xWZ4GLk=;
        b=i3c421Mp96ZGuwAXaKPtHUzI2PgviBQTa1YL/kfGml9+sedZ6o26zInGT79Wa/tqUU
         B4Qrw+46SbFinzCOsWzIW+fuJLqvQMocQumcYevd3q+ifCwUd/WUZTLZ6IDxl77YXl7+
         /5Lq5B4g55WghY3V2B9CGuAPFF4M0kQTqummbAnAb/zWtC4wiEfhLw5E4zHHSNm6bocu
         Cj/zpHsyqg7sQjQDDbX7L2Qd3qgF2zDWyHL8JwbkFsaTUckQMPIH9BGqEUm9V4vyBwzP
         Kits2M2/EtVHlCnIb5oAkE7PISuY+teAjhpDgFWMTrZ1Pm80G7EAZQspnkvUrBaXStQb
         oJLw==
X-Gm-Message-State: AOJu0YxmE2KZFNdjw6vQXQJwFiTfzzdh+NPkJlnC/cpQiImaXsh7/oBn
	EDjbiGVWK6G7xLaFg3ig0aNQJ0EHU+CDxK+4l1vlFEEzw45EoABruEFd8JMdKk+ix8rbuadM0BQ
	h
X-Google-Smtp-Source: AGHT+IEibg1rUW+NXjwesjkcGn1Kge7UnLWYpqxUDg0JEwHiXcTJj4Ej/HRB2iP4TjkLGzEfXHlFLA==
X-Received: by 2002:a17:907:86a0:b0:a8d:3f6a:99ce with SMTP id a640c23a62f3a-a991c031444mr189608466b.49.1728029850847;
        Fri, 04 Oct 2024 01:17:30 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v3 07/19] xen: Update header guards - EFI
Date: Fri,  4 Oct 2024 09:17:01 +0100
Message-Id: <20241004081713.749031-8-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to EFI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/x86_64/efibind.h | 4 ++--
 xen/include/efi/efiapi.h                  | 4 ++--
 xen/include/efi/eficapsule.h              | 4 ++--
 xen/include/efi/eficon.h                  | 4 ++--
 xen/include/efi/efidef.h                  | 4 ++--
 xen/include/efi/efidevp.h                 | 4 ++--
 xen/include/efi/efierr.h                  | 4 ++--
 xen/include/efi/efipciio.h                | 6 +++---
 xen/include/efi/efiprot.h                 | 4 ++--
 9 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/include/asm/x86_64/efibind.h b/xen/arch/x86/include/asm/x86_64/efibind.h
index b29342c61c..a4b8ec52b3 100644
--- a/xen/arch/x86/include/asm/x86_64/efibind.h
+++ b/xen/arch/x86/include/asm/x86_64/efibind.h
@@ -16,8 +16,8 @@ Abstract:
 Revision History
 
 --*/
-#ifndef X86_64_EFI_BIND
-#define X86_64_EFI_BIND
+#ifndef ASM__X86__X86_64__EFIBIND_H
+#define ASM__X86__X86_64__EFIBIND_H
 #ifndef __GNUC__
 #pragma pack()
 #endif
diff --git a/xen/include/efi/efiapi.h b/xen/include/efi/efiapi.h
index a616d1238a..c9e6a531ba 100644
--- a/xen/include/efi/efiapi.h
+++ b/xen/include/efi/efiapi.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_API_H
-#define _EFI_API_H
+#ifndef EFI__EFIAPI_H
+#define EFI__EFIAPI_H
 
 /*++
 
diff --git a/xen/include/efi/eficapsule.h b/xen/include/efi/eficapsule.h
index 481af2816a..5764f36e9f 100644
--- a/xen/include/efi/eficapsule.h
+++ b/xen/include/efi/eficapsule.h
@@ -19,8 +19,8 @@ Abstract:
 
 --*/
 
-#ifndef _EFI_CAPSULE_H
-#define _EFI_CAPSULE_H
+#ifndef EFI__EFICAPSULE_H
+#define EFI__EFICAPSULE_H
 
 
 #define CAPSULE_BLOCK_DESCRIPTOR_SIGNATURE  EFI_SIGNATURE_32 ('C', 'B', 'D', 'S')
diff --git a/xen/include/efi/eficon.h b/xen/include/efi/eficon.h
index 089db9816c..952022b734 100644
--- a/xen/include/efi/eficon.h
+++ b/xen/include/efi/eficon.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_CON_H
-#define _EFI_CON_H
+#ifndef EFI__EFICON_H
+#define EFI__EFICON_H
 
 /*++
 
diff --git a/xen/include/efi/efidef.h b/xen/include/efi/efidef.h
index 86a7e111bf..20cf269e8f 100644
--- a/xen/include/efi/efidef.h
+++ b/xen/include/efi/efidef.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_DEF_H
-#define _EFI_DEF_H
+#ifndef EFI__EFIDEF_H
+#define EFI__EFIDEF_H
 
 /*++
 
diff --git a/xen/include/efi/efidevp.h b/xen/include/efi/efidevp.h
index beb5785a45..fd88b66a56 100644
--- a/xen/include/efi/efidevp.h
+++ b/xen/include/efi/efidevp.h
@@ -1,5 +1,5 @@
-#ifndef _DEVPATH_H
-#define _DEVPATH_H
+#ifndef EFI__EFIDEVP_H
+#define EFI__EFIDEVP_H
 
 /*++
 
diff --git a/xen/include/efi/efierr.h b/xen/include/efi/efierr.h
index cdca210414..1d2ed125d8 100644
--- a/xen/include/efi/efierr.h
+++ b/xen/include/efi/efierr.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_ERR_H
-#define _EFI_ERR_H
+#ifndef EFI__EFIERR_H
+#define EFI__EFIERR_H
 
 /*++
 
diff --git a/xen/include/efi/efipciio.h b/xen/include/efi/efipciio.h
index 0724f957a3..8f8c81d043 100644
--- a/xen/include/efi/efipciio.h
+++ b/xen/include/efi/efipciio.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_PCI_IO_H
-#define _EFI_PCI_IO_H
+#ifndef EFI__EFIPCIIO_H
+#define EFI__EFIPCIIO_H
 
 #define EFI_PCI_IO_PROTOCOL \
     { 0x4cf5b200, 0x68b8, 0x4ca5, {0x9e, 0xec, 0xb2, 0x3e, 0x3f, 0x50, 0x02, 0x9a} }
@@ -216,4 +216,4 @@ typedef struct _EFI_PCI_IO {
   VOID                                   *RomImage;
 } EFI_PCI_IO;
 
-#endif /* _EFI_PCI_IO_H */
+#endif /* EFI__EFIPCIIO_H */
diff --git a/xen/include/efi/efiprot.h b/xen/include/efi/efiprot.h
index 56d7636b2b..8a56b3faa5 100644
--- a/xen/include/efi/efiprot.h
+++ b/xen/include/efi/efiprot.h
@@ -1,5 +1,5 @@
-#ifndef _EFI_PROT_H
-#define _EFI_PROT_H
+#ifndef EFI__EFIPROT_H
+#define EFI__EFIPROT_H
 
 /*++
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810089.1222758 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVH-0006lZ-Rb; Fri, 04 Oct 2024 08:17:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810089.1222758; Fri, 04 Oct 2024 08:17: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 1swdVH-0006iz-Lv; Fri, 04 Oct 2024 08:17:35 +0000
Received: by outflank-mailman (input) for mailman id 810089;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVF-0005Vm-B4
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:33 +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 1ae34822-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:32 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a8d4979b843so238614866b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:32 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ae34822-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029852; x=1728634652; 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=Q5H5vzGEUHF5T8160M9z8v6UqIQnE5siB1MdqRXTDEQ=;
        b=ATYdJm6CAYVbeY6FGO/m1iId3zjRBvEB4AnkbrxKATvT71Ozz25tVy/Lnuj+ex8JQn
         nnbMmORb7k/gSm0pNWnPiWjyYBnLN7tMlygDSuo1ibSPOuQDL2jLKE/NYEIHD9oDZ0LI
         rCjtHVD5h2RLZqeGUDVGqFW+3XylCCfqErLIw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029852; x=1728634652;
        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=Q5H5vzGEUHF5T8160M9z8v6UqIQnE5siB1MdqRXTDEQ=;
        b=Nfb5fRYXsF2iYLxA7KVhrbyvfV8unJeVX2nFizwQL46Qssf7PmRPRBAEnpb4QIvN41
         0DVNlQlWumwEGtdDDNCOX7ggyBnUa7od6FrhsG4SXJ+Ufc2PKUOTXHfe2iXxuijdfwiR
         qqKQ7SY4Ama3ljLMbSLZNtGVE8o+b+ObUIzVG7Batp+xEgmPWZPXAcKcohH5DmcYHsRR
         dZVtSEAIClIeys8g/bl1hrrIjRf0XgN1aMRyj+RW2q23W+MJSd+CAyTTdYn4z8Dl73Bz
         a++QQeO8mxPMDX+NiAqBaeAsUqKueYcHayE6+AdrreSOkT01jUr+EpAORRodVEEgKJ12
         zQ0g==
X-Gm-Message-State: AOJu0YyDM72RgVPmHy0fR74S5IbvaaT01w+Q+bAocSopLggMD2U6zva9
	iIHDNKqFTrK7XVmjyhH3GZ5I70AUAe9oT7QT+kUs9EkAGF4G/4jw9rlyeQnDRrkh7z2OoMhnbsz
	h
X-Google-Smtp-Source: AGHT+IFRku3DSXH+ZeCg792f2LXNioPS03GFMkCUiU0UN7yjBY0V9pPZ/cCcre283JLlxqgDYpH+mw==
X-Received: by 2002:a17:907:9484:b0:a8d:35cf:85f6 with SMTP id a640c23a62f3a-a991c00ededmr171869766b.57.1728029852027;
        Fri, 04 Oct 2024 01:17:32 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v3 08/19] xen: Update header guards - HYPFS
Date: Fri,  4 Oct 2024 09:17:02 +0100
Message-Id: <20241004081713.749031-9-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to HYPFS.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/hypfs.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/include/xen/hypfs.h b/xen/include/xen/hypfs.h
index d8fcac23b4..d6f5725221 100644
--- a/xen/include/xen/hypfs.h
+++ b/xen/include/xen/hypfs.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_HYPFS_H__
-#define __XEN_HYPFS_H__
+#ifndef XEN__HYPFS_H
+#define XEN__HYPFS_H
 
 #ifdef CONFIG_HYPFS
 #include <xen/lib.h>
@@ -206,4 +206,4 @@ unsigned int hypfs_dynid_entry_size(const struct hypfs_entry *template,
                                     unsigned int id);
 #endif
 
-#endif /* __XEN_HYPFS_H__ */
+#endif /* XEN__HYPFS_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810090.1222765 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVI-0006sa-H9; Fri, 04 Oct 2024 08:17:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810090.1222765; Fri, 04 Oct 2024 08: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 1swdVI-0006qh-6F; Fri, 04 Oct 2024 08:17:36 +0000
Received: by outflank-mailman (input) for mailman id 810090;
 Fri, 04 Oct 2024 08: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVF-0005Kj-Tc
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:34 +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 1a145662-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:31 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a8d0d82e76aso284066366b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:31 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1a145662-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029851; x=1728634651; 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=JMvPq6PJKNpKV3nxVg6QNpyjIXAKuiQ7zHbaR0osxjU=;
        b=kgvshOPiSPh6PxTxaGaABb6370cGfyv5huBVEOCsGb0NTxsXwNDXgjwh3GEkWHbpnY
         iEws4JBQ2Eq4PXKOW59o/yk1kYrzf55SzYDKqC0M6zXBHqd9WSPROOkb7uXGZnZzVmyq
         f1RvXLrfza5c8fl1GXG/pHv93gY+4AN3RbLm8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029851; x=1728634651;
        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=JMvPq6PJKNpKV3nxVg6QNpyjIXAKuiQ7zHbaR0osxjU=;
        b=BdMzDh6uJfMKHaKKBqUWmzzaWq9/MCzDsv6DQem3MlpEWGXTwHLFr6mMwWS9PswxTp
         66r5NuNLNcP55W9vbhKIAcaz0ElTJCqz9ZeD9XhG4TPutVlvdERRzCijVCjeebzrJgbO
         DQzshLXutnSZFFBm2V0fLkCLCRMfEMErSRWjPlZ0Z00zvsTaKQUeGWVVaEymTh4ymRdb
         hzTNe9HQi8NsUm4MvKqWqo5PWu9UdgkOV+TreL5E/AEvbqGRFTsC8nauCxZ0E4Vq3UJT
         AeB/XR08cYyYRDBnwf5RrHcDIxt0Ws1aDjI74b+oZQS2l8qMDdxoKIX3u5IjCLtg8qY5
         VkSQ==
X-Gm-Message-State: AOJu0YxHxPPeYDMaKl78J1HXzi2ZpL0HE/X8dp3rV3s8sDsSIekALvr4
	VdCE/AaHj5FOoyz0KR+x40nNObWB64ASMjee7HwMPm7XQfb141SFka9onHsUSBqZvNlIamKmaSu
	v
X-Google-Smtp-Source: AGHT+IHmWECamJckdxif03oi98pCPKwgcnf8esi7u6NP7ch/IEB5IYyhiqSbbWkiXo8P499TZA7Jow==
X-Received: by 2002:a17:907:94c3:b0:a86:96f5:fa81 with SMTP id a640c23a62f3a-a991bd757admr225586066b.32.1728029849017;
        Fri, 04 Oct 2024 01:17:29 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.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>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH v3 05/19] xen: Update header guards - ARM
Date: Fri,  4 Oct 2024 09:16:59 +0100
Message-Id: <20241004081713.749031-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to ARM.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/arm/arm32/lib/assembler.h                      | 6 +++---
 xen/arch/arm/arm64/lib/assembler.h                      | 6 +++---
 xen/arch/arm/decode.h                                   | 6 +++---
 xen/arch/arm/include/asm/acpi.h                         | 6 +++---
 xen/arch/arm/include/asm/alternative.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/atomic.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm32/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm32/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm32/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm32/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm32/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm32/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm32/sysregs.h                | 6 +++---
 xen/arch/arm/include/asm/arm32/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm32/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm32/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/atomic.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/bitops.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/brk.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/bug.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/cmpxchg.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/cpufeature.h             | 4 ++--
 xen/arch/arm/include/asm/arm64/efibind.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/flushtlb.h               | 6 +++---
 xen/arch/arm/include/asm/arm64/hsr.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/insn.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/io.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/macros.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/mm.h                     | 6 +++---
 xen/arch/arm/include/asm/arm64/nospec.h                 | 6 +++---
 xen/arch/arm/include/asm/arm64/page.h                   | 6 +++---
 xen/arch/arm/include/asm/arm64/processor.h              | 6 +++---
 xen/arch/arm/include/asm/arm64/sve.h                    | 6 +++---
 xen/arch/arm/include/asm/arm64/sysregs.h                | 4 ++--
 xen/arch/arm/include/asm/arm64/system.h                 | 4 ++--
 xen/arch/arm/include/asm/arm64/traps.h                  | 6 +++---
 xen/arch/arm/include/asm/arm64/vfp.h                    | 6 +++---
 xen/arch/arm/include/asm/asm_defns.h                    | 6 +++---
 xen/arch/arm/include/asm/atomic.h                       | 6 +++---
 xen/arch/arm/include/asm/bitops.h                       | 6 +++---
 xen/arch/arm/include/asm/bug.h                          | 6 +++---
 xen/arch/arm/include/asm/byteorder.h                    | 6 +++---
 xen/arch/arm/include/asm/cache.h                        | 4 ++--
 xen/arch/arm/include/asm/cadence-uart.h                 | 4 ++--
 xen/arch/arm/include/asm/config.h                       | 6 +++---
 xen/arch/arm/include/asm/cpregs.h                       | 4 ++--
 xen/arch/arm/include/asm/cpuerrata.h                    | 6 +++---
 xen/arch/arm/include/asm/cpufeature.h                   | 4 ++--
 xen/arch/arm/include/asm/current.h                      | 6 +++---
 xen/arch/arm/include/asm/div64.h                        | 4 ++--
 xen/arch/arm/include/asm/dom0less-build.h               | 6 +++---
 xen/arch/arm/include/asm/domain.h                       | 6 +++---
 xen/arch/arm/include/asm/domain_build.h                 | 4 ++--
 xen/arch/arm/include/asm/early_printk.h                 | 4 ++--
 xen/arch/arm/include/asm/elf.h                          | 6 +++---
 xen/arch/arm/include/asm/event.h                        | 4 ++--
 xen/arch/arm/include/asm/exynos4210-uart.h              | 6 +++---
 xen/arch/arm/include/asm/fixmap.h                       | 6 +++---
 xen/arch/arm/include/asm/flushtlb.h                     | 6 +++---
 xen/arch/arm/include/asm/gic.h                          | 4 ++--
 xen/arch/arm/include/asm/gic_v3_defs.h                  | 6 +++---
 xen/arch/arm/include/asm/gic_v3_its.h                   | 4 ++--
 xen/arch/arm/include/asm/grant_table.h                  | 6 +++---
 xen/arch/arm/include/asm/guest_access.h                 | 6 +++---
 xen/arch/arm/include/asm/guest_atomics.h                | 6 +++---
 xen/arch/arm/include/asm/guest_walk.h                   | 6 +++---
 xen/arch/arm/include/asm/hsr.h                          | 6 +++---
 xen/arch/arm/include/asm/hypercall.h                    | 6 +++---
 xen/arch/arm/include/asm/imx-lpuart.h                   | 6 +++---
 xen/arch/arm/include/asm/insn.h                         | 6 +++---
 xen/arch/arm/include/asm/io.h                           | 4 ++--
 xen/arch/arm/include/asm/iommu.h                        | 6 +++---
 xen/arch/arm/include/asm/iommu_fwspec.h                 | 6 +++---
 xen/arch/arm/include/asm/ioreq.h                        | 6 +++---
 xen/arch/arm/include/asm/irq.h                          | 6 +++---
 xen/arch/arm/include/asm/kernel.h                       | 6 +++---
 xen/arch/arm/include/asm/livepatch.h                    | 6 +++---
 xen/arch/arm/include/asm/lpae.h                         | 6 +++---
 xen/arch/arm/include/asm/macros.h                       | 4 ++--
 xen/arch/arm/include/asm/mem_access.h                   | 6 +++---
 xen/arch/arm/include/asm/mm.h                           | 6 +++---
 xen/arch/arm/include/asm/mmio.h                         | 6 +++---
 xen/arch/arm/include/asm/mmu/layout.h                   | 6 +++---
 xen/arch/arm/include/asm/mmu/mm.h                       | 6 +++---
 xen/arch/arm/include/asm/mmu/p2m.h                      | 6 +++---
 xen/arch/arm/include/asm/monitor.h                      | 6 +++---
 xen/arch/arm/include/asm/new_vgic.h                     | 6 +++---
 xen/arch/arm/include/asm/nospec.h                       | 6 +++---
 xen/arch/arm/include/asm/p2m.h                          | 6 +++---
 xen/arch/arm/include/asm/page-bits.h                    | 6 +++---
 xen/arch/arm/include/asm/page.h                         | 6 +++---
 xen/arch/arm/include/asm/pci.h                          | 6 +++---
 xen/arch/arm/include/asm/perfc.h                        | 4 ++--
 xen/arch/arm/include/asm/perfc_defn.h                   | 6 +++---
 xen/arch/arm/include/asm/pl011-uart.h                   | 6 +++---
 xen/arch/arm/include/asm/platform.h                     | 6 +++---
 xen/arch/arm/include/asm/platforms/exynos5.h            | 6 +++---
 xen/arch/arm/include/asm/platforms/midway.h             | 2 +-
 xen/arch/arm/include/asm/platforms/omap5.h              | 4 ++--
 xen/arch/arm/include/asm/platforms/vexpress.h           | 6 +++---
 xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h | 6 +++---
 xen/arch/arm/include/asm/pmap.h                         | 6 +++---
 xen/arch/arm/include/asm/processor.h                    | 6 +++---
 xen/arch/arm/include/asm/procinfo.h                     | 4 ++--
 xen/arch/arm/include/asm/psci.h                         | 6 +++---
 xen/arch/arm/include/asm/regs.h                         | 6 +++---
 xen/arch/arm/include/asm/scif-uart.h                    | 6 +++---
 xen/arch/arm/include/asm/setup.h                        | 4 ++--
 xen/arch/arm/include/asm/short-desc.h                   | 6 +++---
 xen/arch/arm/include/asm/smccc.h                        | 6 +++---
 xen/arch/arm/include/asm/smp.h                          | 4 ++--
 xen/arch/arm/include/asm/spinlock.h                     | 6 +++---
 xen/arch/arm/include/asm/static-evtchn.h                | 6 +++---
 xen/arch/arm/include/asm/static-memory.h                | 6 +++---
 xen/arch/arm/include/asm/static-shmem.h                 | 6 +++---
 xen/arch/arm/include/asm/string.h                       | 6 +++---
 xen/arch/arm/include/asm/sysregs.h                      | 6 +++---
 xen/arch/arm/include/asm/system.h                       | 4 ++--
 xen/arch/arm/include/asm/tee/ffa.h                      | 6 +++---
 xen/arch/arm/include/asm/tee/optee_msg.h                | 6 +++---
 xen/arch/arm/include/asm/tee/optee_rpc_cmd.h            | 6 +++---
 xen/arch/arm/include/asm/tee/optee_smc.h                | 6 +++---
 xen/arch/arm/include/asm/tee/tee.h                      | 6 +++---
 xen/arch/arm/include/asm/time.h                         | 6 +++---
 xen/arch/arm/include/asm/traps.h                        | 6 +++---
 xen/arch/arm/include/asm/types.h                        | 6 +++---
 xen/arch/arm/include/asm/vfp.h                          | 6 +++---
 xen/arch/arm/include/asm/vgic-emul.h                    | 6 +++---
 xen/arch/arm/include/asm/vgic.h                         | 6 +++---
 xen/arch/arm/include/asm/vpl011.h                       | 6 +++---
 xen/arch/arm/include/asm/vpsci.h                        | 6 +++---
 xen/arch/arm/include/asm/vreg.h                         | 6 +++---
 xen/arch/arm/include/asm/vtimer.h                       | 4 ++--
 xen/arch/arm/tee/ffa_private.h                          | 6 +++---
 xen/arch/arm/vgic/vgic-mmio.h                           | 4 ++--
 xen/arch/arm/vgic/vgic.h                                | 4 ++--
 xen/arch/arm/vpci.h                                     | 6 +++---
 xen/arch/arm/vuart.h                                    | 6 +++---
 xen/drivers/passthrough/arm/smmu-v3.h                   | 6 +++---
 144 files changed, 401 insertions(+), 401 deletions(-)
---
Changes since v2:
- exclude missing public headers.

diff --git a/xen/arch/arm/arm32/lib/assembler.h b/xen/arch/arm/arm32/lib/assembler.h
index 6de2638a36..a79eef420f 100644
--- a/xen/arch/arm/arm32/lib/assembler.h
+++ b/xen/arch/arm/arm32/lib/assembler.h
@@ -14,8 +14,8 @@
  *  Do not include any C declarations in this file - it is included by
  *  assembler source.
  */
-#ifndef __ASM_ASSEMBLER_H__
-#define __ASM_ASSEMBLER_H__
+#ifndef ARM__ARM32__LIB__ASSEMBLER_H
+#define ARM__ARM32__LIB__ASSEMBLER_H
 
 #ifndef __ASSEMBLY__
 #error "Only include this from assembly code"
@@ -322,4 +322,4 @@
 	.size \name , . - \name
 	.endm
 
-#endif /* __ASM_ASSEMBLER_H__ */
+#endif /* ARM__ARM32__LIB__ASSEMBLER_H */
diff --git a/xen/arch/arm/arm64/lib/assembler.h b/xen/arch/arm/arm64/lib/assembler.h
index 3f9c0dcf5d..6560fae1f5 100644
--- a/xen/arch/arm/arm64/lib/assembler.h
+++ b/xen/arch/arm/arm64/lib/assembler.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ASSEMBLER_H__
-#define __ASM_ASSEMBLER_H__
+#ifndef ARM__ARM64__LIB__ASSEMBLER_H
+#define ARM__ARM64__LIB__ASSEMBLER_H
 
 #ifndef __ASSEMBLY__
 #error "Only include this from assembly code"
@@ -9,4 +9,4 @@
 #define CPU_BE(x...)
 #define CPU_LE(x...) x
 
-#endif /* __ASM_ASSEMBLER_H__ */
+#endif /* ARM__ARM64__LIB__ASSEMBLER_H */
diff --git a/xen/arch/arm/decode.h b/xen/arch/arm/decode.h
index 13db8ac968..00e9bbe085 100644
--- a/xen/arch/arm/decode.h
+++ b/xen/arch/arm/decode.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_DECODE_H_
-#define __ARCH_ARM_DECODE_H_
+#ifndef ARM__DECODE_H
+#define ARM__DECODE_H
 
 #include <asm/regs.h>
 #include <asm/processor.h>
@@ -73,7 +73,7 @@ union instr {
 int decode_instruction(const struct cpu_user_regs *regs,
                        mmio_info_t *info);
 
-#endif /* __ARCH_ARM_DECODE_H_ */
+#endif /* ARM__DECODE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/acpi.h b/xen/arch/arm/include/asm/acpi.h
index 13756dd341..364cd671b4 100644
--- a/xen/arch/arm/include/asm/acpi.h
+++ b/xen/arch/arm/include/asm/acpi.h
@@ -19,8 +19,8 @@
  * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  */
 
-#ifndef _ASM_ARM_ACPI_H
-#define _ASM_ARM_ACPI_H
+#ifndef ASM__ARM__ACPI_H
+#define ASM__ARM__ACPI_H
 
 #include <asm/setup.h>
 
@@ -78,4 +78,4 @@ static inline void enable_acpi(void)
 #define enable_acpi()
 #endif
 
-#endif /*_ASM_ARM_ACPI_H*/
+#endif /*ASM__ARM__ACPI_H*/
diff --git a/xen/arch/arm/include/asm/alternative.h b/xen/arch/arm/include/asm/alternative.h
index 22477d9497..9a03298a41 100644
--- a/xen/arch/arm/include/asm/alternative.h
+++ b/xen/arch/arm/include/asm/alternative.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ALTERNATIVE_H
-#define __ASM_ALTERNATIVE_H
+#ifndef ASM__ARM__ALTERNATIVE_H
+#define ASM__ARM__ALTERNATIVE_H
 
 #include <asm/cpufeature.h>
 #include <asm/insn.h>
@@ -218,4 +218,4 @@ alternative_endif
 #define ALTERNATIVE(oldinstr, newinstr, ...)   \
 	_ALTERNATIVE_CFG(oldinstr, newinstr, __VA_ARGS__, 1)
 
-#endif /* __ASM_ALTERNATIVE_H */
+#endif /* ASM__ARM__ALTERNATIVE_H */
diff --git a/xen/arch/arm/include/asm/arm32/atomic.h b/xen/arch/arm/include/asm/arm32/atomic.h
index 33f9e73b19..f63efd173c 100644
--- a/xen/arch/arm/include/asm/arm32/atomic.h
+++ b/xen/arch/arm/include/asm/arm32/atomic.h
@@ -8,8 +8,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __ARCH_ARM_ARM32_ATOMIC__
-#define __ARCH_ARM_ARM32_ATOMIC__
+#ifndef ASM__ARM__ARM32__ATOMIC_H
+#define ASM__ARM__ARM32__ATOMIC_H
 
 /*
  * ARMv6 UP and SMP safe atomic ops.  We use load exclusive and
@@ -164,7 +164,7 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u)
 	return oldval;
 }
 
-#endif /* __ARCH_ARM_ARM32_ATOMIC__ */
+#endif /* ASM__ARM__ARM32__ATOMIC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/bitops.h b/xen/arch/arm/include/asm/arm32/bitops.h
index 0d7bb12d5c..6e4018df0c 100644
--- a/xen/arch/arm/include/asm/arm32/bitops.h
+++ b/xen/arch/arm/include/asm/arm32/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM32_BITOPS_H
-#define _ARM_ARM32_BITOPS_H
+#ifndef ASM__ARM__ARM32__BITOPS_H
+#define ASM__ARM__ARM32__BITOPS_H
 
 /*
  * Little endian assembly bitops.  nr = 0 -> byte 0 bit 0.
@@ -37,4 +37,4 @@ extern int _find_next_bit_be(const unsigned long *p, int size, int offset);
 
 #endif
 
-#endif /* _ARM_ARM32_BITOPS_H */
+#endif /* ASM__ARM__ARM32__BITOPS_H */
diff --git a/xen/arch/arm/include/asm/arm32/bug.h b/xen/arch/arm/include/asm/arm32/bug.h
index 25cce151dc..638a8be149 100644
--- a/xen/arch/arm/include/asm/arm32/bug.h
+++ b/xen/arch/arm/include/asm/arm32/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_BUG_H__
-#define __ARM_ARM32_BUG_H__
+#ifndef ASM__ARM__ARM32__BUG_H
+#define ASM__ARM__ARM32__BUG_H
 
 #include <xen/stringify.h>
 
@@ -12,4 +12,4 @@
 
 #define BUG_FN_REG r0
 
-#endif /* __ARM_ARM32_BUG_H__ */
+#endif /* ASM__ARM__ARM32__BUG_H */
diff --git a/xen/arch/arm/include/asm/arm32/cmpxchg.h b/xen/arch/arm/include/asm/arm32/cmpxchg.h
index 8455eb7cc3..13f6a9cf19 100644
--- a/xen/arch/arm/include/asm/arm32/cmpxchg.h
+++ b/xen/arch/arm/include/asm/arm32/cmpxchg.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM32_CMPXCHG_H
-#define __ASM_ARM32_CMPXCHG_H
+#ifndef ASM__ARM__ARM32__CMPXCHG_H
+#define ASM__ARM__ARM32__CMPXCHG_H
 
 #include <xen/bug.h>
 #include <xen/prefetch.h>
diff --git a/xen/arch/arm/include/asm/arm32/flushtlb.h b/xen/arch/arm/include/asm/arm32/flushtlb.h
index 61c25a3189..dfeb0f3542 100644
--- a/xen/arch/arm/include/asm/arm32/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm32/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_FLUSHTLB_H__
-#define __ASM_ARM_ARM32_FLUSHTLB_H__
+#ifndef ASM__ARM__ARM32__FLUSHTLB_H
+#define ASM__ARM__ARM32__FLUSHTLB_H
 
 /*
  * Every invalidation operation use the following patterns:
@@ -57,7 +57,7 @@ static inline void __flush_xen_tlb_one(vaddr_t va)
     asm volatile(STORE_CP32(0, TLBIMVAHIS) : : "r" (va) : "memory");
 }
 
-#endif /* __ASM_ARM_ARM32_FLUSHTLB_H__ */
+#endif /* ASM__ARM__ARM32__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/insn.h b/xen/arch/arm/include/asm/arm32/insn.h
index c800cbfff5..9693ad0606 100644
--- a/xen/arch/arm/include/asm/arm32/insn.h
+++ b/xen/arch/arm/include/asm/arm32/insn.h
@@ -13,8 +13,8 @@
   * 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 __ARCH_ARM_ARM32_INSN
-#define __ARCH_ARM_ARM32_INSN
+#ifndef ASM__ARM__ARM32__INSN_H
+#define ASM__ARM__ARM32__INSN_H
 
 #include <xen/types.h>
 
@@ -60,7 +60,7 @@ static inline uint32_t insn_set_branch_offset(uint32_t insn, int32_t offset)
     return aarch32_set_branch_offset(insn, offset);
 }
 
-#endif /* !__ARCH_ARM_ARM32_INSN */
+#endif /* !ASM__ARM__ARM32__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/io.h b/xen/arch/arm/include/asm/arm32/io.h
index 782b564809..c92dcaf1ca 100644
--- a/xen/arch/arm/include/asm/arm32/io.h
+++ b/xen/arch/arm/include/asm/arm32/io.h
@@ -18,8 +18,8 @@
  *  18-Jun-2000 RMK    Removed virt_to_* and friends definitions
  *  05-Oct-2004 BJD     Moved memory string functions to use void __iomem
  */
-#ifndef _ARM_ARM32_IO_H
-#define _ARM_ARM32_IO_H
+#ifndef ASM__ARM__ARM32__IO_H
+#define ASM__ARM__ARM32__IO_H
 
 #include <asm/system.h>
 #include <asm/byteorder.h>
@@ -113,4 +113,4 @@ static inline void writeq_relaxed_non_atomic(u64 val, volatile void __iomem *add
 #define writew(v,c)             ({ __iowmb(); writew_relaxed(v,c); })
 #define writel(v,c)             ({ __iowmb(); writel_relaxed(v,c); })
 
-#endif /* _ARM_ARM32_IO_H */
+#endif /* ASM__ARM__ARM32__IO_H */
diff --git a/xen/arch/arm/include/asm/arm32/macros.h b/xen/arch/arm/include/asm/arm32/macros.h
index db681a7c7e..dc907117a2 100644
--- a/xen/arch/arm/include/asm/arm32/macros.h
+++ b/xen/arch/arm/include/asm/arm32/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_MACROS_H
-#define __ASM_ARM_ARM32_MACROS_H
+#ifndef ASM__ARM__ARM32__MACROS_H
+#define ASM__ARM__ARM32__MACROS_H
 
 .macro ret
         mov     pc, lr
@@ -75,4 +75,4 @@
 
 #endif /* !CONFIG_EARLY_PRINTK */
 
-#endif /* __ASM_ARM_ARM32_MACROS_H */
+#endif /* ASM__ARM__ARM32__MACROS_H */
diff --git a/xen/arch/arm/include/asm/arm32/mm.h b/xen/arch/arm/include/asm/arm32/mm.h
index 856f2dbec4..4f22d9943a 100644
--- a/xen/arch/arm/include/asm/arm32/mm.h
+++ b/xen/arch/arm/include/asm/arm32/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_MM_H__
-#define __ARM_ARM32_MM_H__
+#ifndef ASM__ARM__ARM32__MM_H
+#define ASM__ARM__ARM32__MM_H
 
 #include <xen/percpu.h>
 
@@ -22,7 +22,7 @@ static inline void arch_setup_page_tables(void)
 {
 }
 
-#endif /* __ARM_ARM32_MM_H__ */
+#endif /* ASM__ARM__ARM32__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm32/nospec.h b/xen/arch/arm/include/asm/arm32/nospec.h
index be3c7712c8..ecb627b08f 100644
--- a/xen/arch/arm/include/asm/arm32/nospec.h
+++ b/xen/arch/arm/include/asm/arm32/nospec.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_ARM32_NOSPEC_H
-#define __ASM_ARM32_NOSPEC_H
+#ifndef ASM__ARM__ARM32__NOSPEC_H
+#define ASM__ARM__ARM32__NOSPEC_H
 
 #define CSDB    ".inst  0xe320f014"
 
@@ -20,7 +20,7 @@ static inline unsigned long array_index_mask_nospec(unsigned long idx,
 }
 #define array_index_mask_nospec array_index_mask_nospec
 
-#endif /* __ASM_ARM32_NOSPEC_H */
+#endif /* ASM__ARM__ARM32__NOSPEC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/page.h b/xen/arch/arm/include/asm/arm32/page.h
index 6d1ff0636c..09e631d94a 100644
--- a/xen/arch/arm/include/asm/arm32/page.h
+++ b/xen/arch/arm/include/asm/arm32/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM32_PAGE_H__
-#define __ARM_ARM32_PAGE_H__
+#ifndef ASM__ARM__ARM32__PAGE_H
+#define ASM__ARM__ARM32__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -89,7 +89,7 @@ static inline uint64_t gva_to_ipa_par(vaddr_t va, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_ARM32_PAGE_H__ */
+#endif /* ASM__ARM__ARM32__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm32/processor.h b/xen/arch/arm/include/asm/arm32/processor.h
index 4e679f3273..c9160c69e8 100644
--- a/xen/arch/arm/include/asm/arm32/processor.h
+++ b/xen/arch/arm/include/asm/arm32/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_PROCESSOR_H
-#define __ASM_ARM_ARM32_PROCESSOR_H
+#ifndef ASM__ARM__ARM32__PROCESSOR_H
+#define ASM__ARM__ARM32__PROCESSOR_H
 
 #define ACTLR_CAXX_SMP      (1<<6)
 
@@ -58,7 +58,7 @@ struct cpu_user_regs
 
 #endif
 
-#endif /* __ASM_ARM_ARM32_PROCESSOR_H */
+#endif /* ASM__ARM__ARM32__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/sysregs.h b/xen/arch/arm/include/asm/arm32/sysregs.h
index 22871999af..3846ca73f4 100644
--- a/xen/arch/arm/include/asm/arm32/sysregs.h
+++ b/xen/arch/arm/include/asm/arm32/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM32_SYSREGS_H
-#define __ASM_ARM_ARM32_SYSREGS_H
+#ifndef ASM__ARM__ARM32__SYSREGS_H
+#define ASM__ARM__ARM32__SYSREGS_H
 
 #include <xen/stringify.h>
 #include <asm/cpregs.h>
@@ -86,7 +86,7 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_ARM_ARM32_SYSREGS_H */
+#endif /* ASM__ARM__ARM32__SYSREGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/system.h b/xen/arch/arm/include/asm/arm32/system.h
index c617b40438..96060032a9 100644
--- a/xen/arch/arm/include/asm/arm32/system.h
+++ b/xen/arch/arm/include/asm/arm32/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_ARM32_SYSTEM_H
-#define __ASM_ARM32_SYSTEM_H
+#ifndef ASM__ARM__ARM32__SYSTEM_H
+#define ASM__ARM__ARM32__SYSTEM_H
 
 #include <asm/arm32/cmpxchg.h>
 
diff --git a/xen/arch/arm/include/asm/arm32/traps.h b/xen/arch/arm/include/asm/arm32/traps.h
index e3c4a8b473..c234e4c051 100644
--- a/xen/arch/arm/include/asm/arm32/traps.h
+++ b/xen/arch/arm/include/asm/arm32/traps.h
@@ -1,7 +1,7 @@
-#ifndef __ASM_ARM32_TRAPS__
-#define __ASM_ARM32_TRAPS__
+#ifndef ASM__ARM__ARM32__TRAPS_H
+#define ASM__ARM__ARM32__TRAPS_H
 
-#endif /* __ASM_ARM32_TRAPS__ */
+#endif /* ASM__ARM__ARM32__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm32/vfp.h b/xen/arch/arm/include/asm/arm32/vfp.h
index 2f2e4b24bb..fe17ff7b79 100644
--- a/xen/arch/arm/include/asm/arm32/vfp.h
+++ b/xen/arch/arm/include/asm/arm32/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM32_VFP_H
-#define _ARM_ARM32_VFP_H
+#ifndef ASM__ARM__ARM32__VFP_H
+#define ASM__ARM__ARM32__VFP_H
 
 #define FPEXC_EX                (1U << 31)
 #define FPEXC_EN                (1U << 30)
@@ -30,7 +30,7 @@ struct vfp_state
     uint32_t fpinst2;
 };
 
-#endif /* _ARM_ARM32_VFP_H */
+#endif /* ASM__ARM__ARM32__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/atomic.h b/xen/arch/arm/include/asm/arm64/atomic.h
index 4460165295..1d4c886a07 100644
--- a/xen/arch/arm/include/asm/arm64/atomic.h
+++ b/xen/arch/arm/include/asm/arm64/atomic.h
@@ -19,8 +19,8 @@
  * 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 __ARCH_ARM_ARM64_ATOMIC
-#define __ARCH_ARM_ARM64_ATOMIC
+#ifndef ASM__ARM__ARM64__ATOMIC_H
+#define ASM__ARM__ARM64__ATOMIC_H
 
 /*
  * AArch64 UP and SMP safe atomic ops.  We use load exclusive and
diff --git a/xen/arch/arm/include/asm/arm64/bitops.h b/xen/arch/arm/include/asm/arm64/bitops.h
index a6135838dc..93ec1bfc98 100644
--- a/xen/arch/arm/include/asm/arm64/bitops.h
+++ b/xen/arch/arm/include/asm/arm64/bitops.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM64_BITOPS_H
-#define _ARM_ARM64_BITOPS_H
+#ifndef ASM__ARM__ARM64__BITOPS_H
+#define ASM__ARM__ARM64__BITOPS_H
 
 /* Based on linux/include/asm-generic/bitops/find.h */
 
@@ -10,7 +10,7 @@
 
 #endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
 
-#endif /* _ARM_ARM64_BITOPS_H */
+#endif /* ASM__ARM__ARM64__BITOPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/brk.h b/xen/arch/arm/include/asm/arm64/brk.h
index 3af153a053..e36841d4ca 100644
--- a/xen/arch/arm/include/asm/arm64/brk.h
+++ b/xen/arch/arm/include/asm/arm64/brk.h
@@ -6,8 +6,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __ASM_ARM_ARM64_BRK
-#define __ASM_ARM_ARM64_BRK
+#ifndef ASM__ARM__ARM64__BRK_H
+#define ASM__ARM__ARM64__BRK_H
 
 /*
  * #imm16 values used for BRK instruction generation
@@ -28,7 +28,7 @@
  */
 #define AARCH64_BREAK_FAULT (AARCH64_BREAK_MON | (BRK_FAULT_IMM << 5))
 
-#endif /* !__ASM_ARM_ARM64_BRK */
+#endif /* !ASM__ARM__ARM64__BRK_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/bug.h b/xen/arch/arm/include/asm/arm64/bug.h
index 5e11c0dfd5..aedd7c20a7 100644
--- a/xen/arch/arm/include/asm/arm64/bug.h
+++ b/xen/arch/arm/include/asm/arm64/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_BUG_H__
-#define __ARM_ARM64_BUG_H__
+#ifndef ASM__ARM__ARM64__BUG_H
+#define ASM__ARM__ARM64__BUG_H
 
 #include <xen/stringify.h>
 #include <asm/arm64/brk.h>
@@ -8,4 +8,4 @@
 
 #define BUG_FN_REG x0
 
-#endif /* __ARM_ARM64_BUG_H__ */
+#endif /* ASM__ARM__ARM64__BUG_H */
diff --git a/xen/arch/arm/include/asm/arm64/cmpxchg.h b/xen/arch/arm/include/asm/arm64/cmpxchg.h
index f160e8e7bc..40db44da13 100644
--- a/xen/arch/arm/include/asm/arm64/cmpxchg.h
+++ b/xen/arch/arm/include/asm/arm64/cmpxchg.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM64_CMPXCHG_H
-#define __ASM_ARM64_CMPXCHG_H
+#ifndef ASM__ARM__ARM64__CMPXCHG_H
+#define ASM__ARM__ARM64__CMPXCHG_H
 
 #include <xen/bug.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/cpufeature.h b/xen/arch/arm/include/asm/arm64/cpufeature.h
index 1bb503e857..52cc65f307 100644
--- a/xen/arch/arm/include/asm/arm64/cpufeature.h
+++ b/xen/arch/arm/include/asm/arm64/cpufeature.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_CPUFEATURES_H
-#define __ASM_ARM_ARM64_CPUFEATURES_H
+#ifndef ASM__ARM__ARM64__CPUFEATURE_H
+#define ASM__ARM__ARM64__CPUFEATURE_H
 
 /*
  * CPU feature register tracking
diff --git a/xen/arch/arm/include/asm/arm64/efibind.h b/xen/arch/arm/include/asm/arm64/efibind.h
index a1323d452e..cdc25f9a9c 100644
--- a/xen/arch/arm/include/asm/arm64/efibind.h
+++ b/xen/arch/arm/include/asm/arm64/efibind.h
@@ -16,8 +16,8 @@ Abstract:
 Revision History
 
 --*/
-#ifndef AARCH64_EFI_BIND
-#define AARCH64_EFI_BIND
+#ifndef ASM__ARM__ARM64__EFIBIND_H
+#define ASM__ARM__ARM64__EFIBIND_H
 #ifndef __GNUC__
 #pragma pack()
 #endif
diff --git a/xen/arch/arm/include/asm/arm64/flushtlb.h b/xen/arch/arm/include/asm/arm64/flushtlb.h
index 45642201d1..90b8187ef1 100644
--- a/xen/arch/arm/include/asm/arm64/flushtlb.h
+++ b/xen/arch/arm/include/asm/arm64/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_FLUSHTLB_H__
-#define __ASM_ARM_ARM64_FLUSHTLB_H__
+#ifndef ASM__ARM__ARM64__FLUSHTLB_H
+#define ASM__ARM__ARM64__FLUSHTLB_H
 
 /*
  * Every invalidation operation use the following patterns:
@@ -90,7 +90,7 @@ TLB_HELPER_VA(__flush_xen_tlb_one, vae2is)
 #undef TLB_HELPER
 #undef TLB_HELPER_VA
 
-#endif /* __ASM_ARM_ARM64_FLUSHTLB_H__ */
+#endif /* ASM__ARM__ARM64__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/hsr.h b/xen/arch/arm/include/asm/arm64/hsr.h
index 1495ccddea..7d89eca4b1 100644
--- a/xen/arch/arm/include/asm/arm64/hsr.h
+++ b/xen/arch/arm/include/asm/arm64/hsr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_HSR_H
-#define __ASM_ARM_ARM64_HSR_H
+#ifndef ASM__ARM__ARM64__HSR_H
+#define ASM__ARM__ARM64__HSR_H
 
 /* AArch 64 System Register Encodings */
 #define __HSR_SYSREG_c0  0
@@ -150,7 +150,7 @@
 #define HSR_SYSREG_ID_AA64AFR1_EL1   HSR_SYSREG(3,0,c0,c5,5)
 #define HSR_SYSREG_ID_AA64ZFR0_EL1   HSR_SYSREG(3,0,c0,c4,4)
 
-#endif /* __ASM_ARM_ARM64_HSR_H */
+#endif /* ASM__ARM__ARM64__HSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/insn.h b/xen/arch/arm/include/asm/arm64/insn.h
index ab290030ab..bd701e96c5 100644
--- a/xen/arch/arm/include/asm/arm64/insn.h
+++ b/xen/arch/arm/include/asm/arm64/insn.h
@@ -16,8 +16,8 @@
  * 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 __ARCH_ARM_ARM64_INSN
-#define __ARCH_ARM_ARM64_INSN
+#ifndef ASM__ARM__ARM64__INSN_H
+#define ASM__ARM__ARM64__INSN_H
 
 #include <xen/types.h>
 #include <xen/stdbool.h>
@@ -99,7 +99,7 @@ static inline uint32_t insn_set_branch_offset(uint32_t insn, int32_t offset)
     return aarch64_set_branch_offset(insn, offset);
 }
 
-#endif /* !__ARCH_ARM_ARM64_INSN */
+#endif /* !ASM__ARM__ARM64__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/io.h b/xen/arch/arm/include/asm/arm64/io.h
index 2e2ab24f78..607d2501f4 100644
--- a/xen/arch/arm/include/asm/arm64/io.h
+++ b/xen/arch/arm/include/asm/arm64/io.h
@@ -17,8 +17,8 @@
  * 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 _ARM_ARM64_IO_H
-#define _ARM_ARM64_IO_H
+#ifndef ASM__ARM__ARM64__IO_H
+#define ASM__ARM__ARM64__IO_H
 
 #include <asm/system.h>
 #include <asm/byteorder.h>
@@ -147,4 +147,4 @@ static inline void emulate_write(u64 addr)
 #define outw(v, c) ( emulate_write(c) )
 #define outl(v, c) ( emulate_write(c) )
 
-#endif /* _ARM_ARM64_IO_H */
+#endif /* ASM__ARM__ARM64__IO_H */
diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
index 46f50655ad..968198bceb 100644
--- a/xen/arch/arm/include/asm/arm64/macros.h
+++ b/xen/arch/arm/include/asm/arm64/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_MACROS_H
-#define __ASM_ARM_ARM64_MACROS_H
+#ifndef ASM__ARM__ARM64__MACROS_H
+#define ASM__ARM__ARM64__MACROS_H
 
     /*
      * @dst: Result of get_cpu_info()
@@ -96,5 +96,5 @@
  */
 lr      .req    x30             /* link register */
 
-#endif /* __ASM_ARM_ARM64_MACROS_H */
+#endif /* ASM__ARM__ARM64__MACROS_H */
 
diff --git a/xen/arch/arm/include/asm/arm64/mm.h b/xen/arch/arm/include/asm/arm64/mm.h
index b4f7545d2c..b79fd4d2cd 100644
--- a/xen/arch/arm/include/asm/arm64/mm.h
+++ b/xen/arch/arm/include/asm/arm64/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_MM_H__
-#define __ARM_ARM64_MM_H__
+#ifndef ASM__ARM__ARM64__MM_H
+#define ASM__ARM__ARM64__MM_H
 
 extern DEFINE_PAGE_TABLE(xen_pgtable);
 
@@ -16,7 +16,7 @@ void arch_setup_page_tables(void);
 
 void update_boot_mapping(bool enable);
 
-#endif /* __ARM_ARM64_MM_H__ */
+#endif /* ASM__ARM__ARM64__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/nospec.h b/xen/arch/arm/include/asm/arm64/nospec.h
index 2364ca692b..dc8d5aacb4 100644
--- a/xen/arch/arm/include/asm/arm64/nospec.h
+++ b/xen/arch/arm/include/asm/arm64/nospec.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm64 */
-#ifndef __ASM_ARM64_NOSPEC_H
-#define __ASM_ARM64_NOSPEC_H
+#ifndef ASM__ARM__ARM64__NOSPEC_H
+#define ASM__ARM__ARM64__NOSPEC_H
 
 #define csdb()  asm volatile ( "hint #20" : : : "memory" )
 
@@ -24,7 +24,7 @@ static inline unsigned long array_index_mask_nospec(unsigned long idx,
 }
 #define array_index_mask_nospec array_index_mask_nospec
 
-#endif /* __ASM_ARM64_NOSPEC_H */
+#endif /* ASM__ARM__ARM64__NOSPEC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/page.h b/xen/arch/arm/include/asm/arm64/page.h
index e944985ee0..8fc0275290 100644
--- a/xen/arch/arm/include/asm/arm64/page.h
+++ b/xen/arch/arm/include/asm/arm64/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ARM64_PAGE_H__
-#define __ARM_ARM64_PAGE_H__
+#ifndef ASM__ARM__ARM64__PAGE_H
+#define ASM__ARM__ARM64__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -79,7 +79,7 @@ extern void clear_page(void *to);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_ARM64_PAGE_H__ */
+#endif /* ASM__ARM__ARM64__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/processor.h b/xen/arch/arm/include/asm/arm64/processor.h
index c749f80ad9..965e9f44f7 100644
--- a/xen/arch/arm/include/asm/arm64/processor.h
+++ b/xen/arch/arm/include/asm/arm64/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_PROCESSOR_H
-#define __ASM_ARM_ARM64_PROCESSOR_H
+#ifndef ASM__ARM__ARM64__PROCESSOR_H
+#define ASM__ARM__ARM64__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 
@@ -88,7 +88,7 @@ struct cpu_user_regs
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_ARM_ARM64_PROCESSOR_H */
+#endif /* ASM__ARM__ARM64__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/sve.h b/xen/arch/arm/include/asm/arm64/sve.h
index a71d6a295d..155dd27766 100644
--- a/xen/arch/arm/include/asm/arm64/sve.h
+++ b/xen/arch/arm/include/asm/arm64/sve.h
@@ -5,8 +5,8 @@
  * Copyright (C) 2022 ARM Ltd.
  */
 
-#ifndef _ARM_ARM64_SVE_H
-#define _ARM_ARM64_SVE_H
+#ifndef ASM__ARM__ARM64__SVE_H
+#define ASM__ARM__ARM64__SVE_H
 
 #include <xen/sched.h>
 
@@ -60,7 +60,7 @@ static inline unsigned int get_sys_vl_len(void)
 
 #endif /* CONFIG_ARM64_SVE */
 
-#endif /* _ARM_ARM64_SVE_H */
+#endif /* ASM__ARM__ARM64__SVE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/arm64/sysregs.h b/xen/arch/arm/include/asm/arm64/sysregs.h
index b593e4028b..ee2b2172db 100644
--- a/xen/arch/arm/include/asm/arm64/sysregs.h
+++ b/xen/arch/arm/include/asm/arm64/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_ARM64_SYSREGS_H
-#define __ASM_ARM_ARM64_SYSREGS_H
+#ifndef ASM__ARM__ARM64__SYSREGS_H
+#define ASM__ARM__ARM64__SYSREGS_H
 
 #include <xen/stringify.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/system.h b/xen/arch/arm/include/asm/arm64/system.h
index 2e2ee212a1..d96a17c30d 100644
--- a/xen/arch/arm/include/asm/arm64/system.h
+++ b/xen/arch/arm/include/asm/arm64/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm64 */
-#ifndef __ASM_ARM64_SYSTEM_H
-#define __ASM_ARM64_SYSTEM_H
+#ifndef ASM__ARM__ARM64__SYSTEM_H
+#define ASM__ARM__ARM64__SYSTEM_H
 
 #include <asm/arm64/cmpxchg.h>
 
diff --git a/xen/arch/arm/include/asm/arm64/traps.h b/xen/arch/arm/include/asm/arm64/traps.h
index a347cb13d6..2d11192d22 100644
--- a/xen/arch/arm/include/asm/arm64/traps.h
+++ b/xen/arch/arm/include/asm/arm64/traps.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM64_TRAPS__
-#define __ASM_ARM64_TRAPS__
+#ifndef ASM__ARM__ARM64__TRAPS_H
+#define ASM__ARM__ARM64__TRAPS_H
 
 void inject_undef64_exception(struct cpu_user_regs *regs, int instr_len);
 
@@ -8,7 +8,7 @@ void do_sysreg(struct cpu_user_regs *regs,
 
 void do_bad_mode(struct cpu_user_regs *regs, int reason);
 
-#endif /* __ASM_ARM64_TRAPS__ */
+#endif /* ASM__ARM__ARM64__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/arm64/vfp.h b/xen/arch/arm/include/asm/arm64/vfp.h
index 4b399ccbfb..145b2803ec 100644
--- a/xen/arch/arm/include/asm/arm64/vfp.h
+++ b/xen/arch/arm/include/asm/arm64/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_ARM64_VFP_H
-#define _ARM_ARM64_VFP_H
+#ifndef ASM__ARM__ARM64__VFP_H
+#define ASM__ARM__ARM64__VFP_H
 
 /* ARM64 VFP instruction requires fpregs address to be 128-byte aligned */
 #define __vfp_aligned __attribute__((aligned(16)))
@@ -28,7 +28,7 @@ struct vfp_state
     register_t fpsr;
 };
 
-#endif /* _ARM_ARM64_VFP_H */
+#endif /* ASM__ARM__ARM64__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
index 47efdf5234..c3e136b240 100644
--- a/xen/arch/arm/include/asm/asm_defns.h
+++ b/xen/arch/arm/include/asm/asm_defns.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ASM_DEFNS_H__
-#define __ARM_ASM_DEFNS_H__
+#ifndef ASM__ARM__ASM_DEFNS_H
+#define ASM__ARM__ASM_DEFNS_H
 
 #ifndef COMPILE_OFFSETS
 /* NB. Auto-generated from arch/.../asm-offsets.c */
@@ -28,7 +28,7 @@
 label:  .asciz msg;                             \
 .popsection
 
-#endif /* __ARM_ASM_DEFNS_H__ */
+#endif /* ASM__ARM__ASM_DEFNS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/atomic.h b/xen/arch/arm/include/asm/atomic.h
index 517216d2a8..1af5ee851f 100644
--- a/xen/arch/arm/include/asm/atomic.h
+++ b/xen/arch/arm/include/asm/atomic.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_ATOMIC__
-#define __ARCH_ARM_ATOMIC__
+#ifndef ASM__ARM__ATOMIC_H
+#define ASM__ARM__ATOMIC_H
 
 #include <xen/atomic.h>
 #include <xen/prefetch.h>
@@ -227,7 +227,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
 
 #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
 
-#endif /* __ARCH_ARM_ATOMIC__ */
+#endif /* ASM__ARM__ATOMIC_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/bitops.h b/xen/arch/arm/include/asm/bitops.h
index f163d9bb45..001e2960c4 100644
--- a/xen/arch/arm/include/asm/bitops.h
+++ b/xen/arch/arm/include/asm/bitops.h
@@ -6,8 +6,8 @@
  *  reworked by rmk.
  */
 
-#ifndef _ARM_BITOPS_H
-#define _ARM_BITOPS_H
+#ifndef ASM__ARM__BITOPS_H
+#define ASM__ARM__BITOPS_H
 
 #include <xen/macros.h>
 
@@ -78,7 +78,7 @@ bool clear_mask16_timeout(uint16_t mask, volatile void *p,
 #define arch_fls(x)  ((x) ? 32 - __builtin_clz(x) : 0)
 #define arch_flsl(x) ((x) ? BITS_PER_LONG - __builtin_clzl(x) : 0)
 
-#endif /* _ARM_BITOPS_H */
+#endif /* ASM__ARM__BITOPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/bug.h b/xen/arch/arm/include/asm/bug.h
index cacaf014ab..19d4645984 100644
--- a/xen/arch/arm/include/asm/bug.h
+++ b/xen/arch/arm/include/asm/bug.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_BUG_H__
-#define __ARM_BUG_H__
+#ifndef ASM__ARM__BUG_H
+#define ASM__ARM__BUG_H
 
 #include <xen/types.h>
 
@@ -82,7 +82,7 @@ struct bug_frame {
     unreachable();                                              \
 } while (0)
 
-#endif /* __ARM_BUG_H__ */
+#endif /* ASM__ARM__BUG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/byteorder.h b/xen/arch/arm/include/asm/byteorder.h
index 9c712c4788..0a564c6aa3 100644
--- a/xen/arch/arm/include/asm/byteorder.h
+++ b/xen/arch/arm/include/asm/byteorder.h
@@ -1,11 +1,11 @@
-#ifndef __ASM_ARM_BYTEORDER_H__
-#define __ASM_ARM_BYTEORDER_H__
+#ifndef ASM__ARM__BYTEORDER_H
+#define ASM__ARM__BYTEORDER_H
 
 #define __BYTEORDER_HAS_U64__
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_ARM_BYTEORDER_H__ */
+#endif /* ASM__ARM__BYTEORDER_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cache.h b/xen/arch/arm/include/asm/cache.h
index b75c970b68..e60a27498d 100644
--- a/xen/arch/arm/include/asm/cache.h
+++ b/xen/arch/arm/include/asm/cache.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_CACHE_H
-#define __ARCH_ARM_CACHE_H
+#ifndef ASM__ARM__CACHE_H
+#define ASM__ARM__CACHE_H
 
 
 /* L1 cache line size */
diff --git a/xen/arch/arm/include/asm/cadence-uart.h b/xen/arch/arm/include/asm/cadence-uart.h
index 48680eea4b..7107ad3e0c 100644
--- a/xen/arch/arm/include/asm/cadence-uart.h
+++ b/xen/arch/arm/include/asm/cadence-uart.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_CADENCE_UART_H__
-#define __ASM_ARM_CADENCE_UART_H__
+#ifndef ASM__ARM__CADENCE_UART_H
+#define ASM__ARM__CADENCE_UART_H
 
 #define R_UART_CR    0x00
 #define UART_CR_RX_RST       0x01
diff --git a/xen/arch/arm/include/asm/config.h b/xen/arch/arm/include/asm/config.h
index a2e22b659d..25a014f480 100644
--- a/xen/arch/arm/include/asm/config.h
+++ b/xen/arch/arm/include/asm/config.h
@@ -4,8 +4,8 @@
  * A Linux-style configuration list.
  */
 
-#ifndef __ARM_CONFIG_H__
-#define __ARM_CONFIG_H__
+#ifndef ASM__ARM__CONFIG_H
+#define ASM__ARM__CONFIG_H
 
 #if defined(CONFIG_ARM_64)
 # define LONG_BYTEORDER 3
@@ -92,7 +92,7 @@ extern unsigned long frametable_virt_end;
 #include <asm/macros.h>
 #endif
 
-#endif /* __ARM_CONFIG_H__ */
+#endif /* ASM__ARM__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
index aec9e8f329..0732cce1f3 100644
--- a/xen/arch/arm/include/asm/cpregs.h
+++ b/xen/arch/arm/include/asm/cpregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_CPREGS_H
-#define __ASM_ARM_CPREGS_H
+#ifndef ASM__ARM__CPREGS_H
+#define ASM__ARM__CPREGS_H
 
 /*
  * AArch32 Co-processor registers.
diff --git a/xen/arch/arm/include/asm/cpuerrata.h b/xen/arch/arm/include/asm/cpuerrata.h
index 8d7e7b9375..8c9e3e0104 100644
--- a/xen/arch/arm/include/asm/cpuerrata.h
+++ b/xen/arch/arm/include/asm/cpuerrata.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_CPUERRATA_H__
-#define __ARM_CPUERRATA_H__
+#ifndef ASM__ARM__CPUERRATA_H
+#define ASM__ARM__CPUERRATA_H
 
 #include <asm/cpufeature.h>
 #include <asm/alternative.h>
@@ -74,7 +74,7 @@ static inline enum ssbd_state get_ssbd_state(void)
 
 #endif
 
-#endif /* __ARM_CPUERRATA_H__ */
+#endif /* ASM__ARM__CPUERRATA_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/cpufeature.h b/xen/arch/arm/include/asm/cpufeature.h
index 969e043f5b..b9f42beac7 100644
--- a/xen/arch/arm/include/asm/cpufeature.h
+++ b/xen/arch/arm/include/asm/cpufeature.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_CPUFEATURE_H
-#define __ASM_ARM_CPUFEATURE_H
+#ifndef ASM__ARM__CPUFEATURE_H
+#define ASM__ARM__CPUFEATURE_H
 
 #ifdef CONFIG_ARM_64
 #define cpu_feature64(c, feat)         ((c)->pfr64.feat)
diff --git a/xen/arch/arm/include/asm/current.h b/xen/arch/arm/include/asm/current.h
index 0be7ad6ef9..226cf953d7 100644
--- a/xen/arch/arm/include/asm/current.h
+++ b/xen/arch/arm/include/asm/current.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_CURRENT_H__
-#define __ARM_CURRENT_H__
+#ifndef ASM__ARM__CURRENT_H
+#define ASM__ARM__CURRENT_H
 
 #include <xen/page-size.h>
 #include <xen/percpu.h>
@@ -65,7 +65,7 @@ do {                                                    \
 
 #endif
 
-#endif /* __ARM_CURRENT_H__ */
+#endif /* ASM__ARM__CURRENT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/div64.h b/xen/arch/arm/include/asm/div64.h
index 8fe17f0ff2..627583f04f 100644
--- a/xen/arch/arm/include/asm/div64.h
+++ b/xen/arch/arm/include/asm/div64.h
@@ -1,6 +1,6 @@
 /* Taken from Linux arch/arm */
-#ifndef __ASM_ARM_DIV64
-#define __ASM_ARM_DIV64
+#ifndef ASM__ARM__DIV64_H
+#define ASM__ARM__DIV64_H
 
 #include <asm/system.h>
 #include <xen/types.h>
diff --git a/xen/arch/arm/include/asm/dom0less-build.h b/xen/arch/arm/include/asm/dom0less-build.h
index 5864944bda..48c5c85ead 100644
--- a/xen/arch/arm/include/asm/dom0less-build.h
+++ b/xen/arch/arm/include/asm/dom0less-build.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_DOM0LESS_BUILD_H_
-#define __ASM_DOM0LESS_BUILD_H_
+#ifndef ASM__ARM__DOM0LESS_BUILD_H
+#define ASM__ARM__DOM0LESS_BUILD_H
 
 #include <xen/stdbool.h>
 
@@ -20,7 +20,7 @@ static inline bool is_dom0less_mode(void)
 
 #endif /* CONFIG_DOM0LESS_BOOT */
 
-#endif /* __ASM_DOM0LESS_BUILD_H_ */
+#endif /* ASM__ARM__DOM0LESS_BUILD_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/domain.h
index f1d72c6e48..f27353d9c8 100644
--- a/xen/arch/arm/include/asm/domain.h
+++ b/xen/arch/arm/include/asm/domain.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_H__
-#define __ASM_DOMAIN_H__
+#ifndef ASM__ARM__DOMAIN_H
+#define ASM__ARM__DOMAIN_H
 
 #include <xen/cache.h>
 #include <xen/timer.h>
@@ -310,7 +310,7 @@ static inline void update_guest_memory_policy(struct vcpu *v,
                                               struct guest_memory_policy *gmp)
 {}
 
-#endif /* __ASM_DOMAIN_H__ */
+#endif /* ASM__ARM__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/domain_build.h b/xen/arch/arm/include/asm/domain_build.h
index e712afbc7f..740a45f964 100644
--- a/xen/arch/arm/include/asm/domain_build.h
+++ b/xen/arch/arm/include/asm/domain_build.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_DOMAIN_BUILD_H__
-#define __ASM_DOMAIN_BUILD_H__
+#ifndef ASM__ARM__DOMAIN_BUILD_H
+#define ASM__ARM__DOMAIN_BUILD_H
 
 #include <xen/sched.h>
 #include <asm/kernel.h>
diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
index 46a5e562dd..5dc65483f1 100644
--- a/xen/arch/arm/include/asm/early_printk.h
+++ b/xen/arch/arm/include/asm/early_printk.h
@@ -7,8 +7,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef __ARM_EARLY_PRINTK_H__
-#define __ARM_EARLY_PRINTK_H__
+#ifndef ASM__ARM__EARLY_PRINTK_H
+#define ASM__ARM__EARLY_PRINTK_H
 
 #include <xen/page-size.h>
 #include <asm/fixmap.h>
diff --git a/xen/arch/arm/include/asm/elf.h b/xen/arch/arm/include/asm/elf.h
index 9e436e7556..d55e8a1912 100644
--- a/xen/arch/arm/include/asm/elf.h
+++ b/xen/arch/arm/include/asm/elf.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_ELF_H__
-#define __ARM_ELF_H__
+#ifndef ASM__ARM__ELF_H
+#define ASM__ARM__ELF_H
 
 typedef struct {
     unsigned long r0;
@@ -20,7 +20,7 @@ typedef struct {
     unsigned long pc;
 } ELF_Gregset;
 
-#endif /* __ARM_ELF_H__ */
+#endif /* ASM__ARM__ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/event.h b/xen/arch/arm/include/asm/event.h
index b14c166ad6..c0088bbb64 100644
--- a/xen/arch/arm/include/asm/event.h
+++ b/xen/arch/arm/include/asm/event.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_EVENT_H__
-#define __ASM_EVENT_H__
+#ifndef ASM__ARM__EVENT_H
+#define ASM__ARM__EVENT_H
 
 #include <asm/domain.h>
 
diff --git a/xen/arch/arm/include/asm/exynos4210-uart.h b/xen/arch/arm/include/asm/exynos4210-uart.h
index e2ab4a43e4..21afc9e3f3 100644
--- a/xen/arch/arm/include/asm/exynos4210-uart.h
+++ b/xen/arch/arm/include/asm/exynos4210-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_EXYNOS4210_H
-#define __ASM_ARM_EXYNOS4210_H
+#ifndef ASM__ARM__EXYNOS4210_UART_H
+#define ASM__ARM__EXYNOS4210_UART_H
 
 
 /*
@@ -100,7 +100,7 @@
 #define UINTM_RXD       (1 << 0)
 #define UINTM_ALLI      (UINTM_MODEM | UINTM_TXD | UINTM_ERROR | UINTM_RXD)
 
-#endif /* __ASM_ARM_EXYNOS4210_H */
+#endif /* ASM__ARM__EXYNOS4210_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/fixmap.h b/xen/arch/arm/include/asm/fixmap.h
index 0cb5d54d1c..da6bf72bec 100644
--- a/xen/arch/arm/include/asm/fixmap.h
+++ b/xen/arch/arm/include/asm/fixmap.h
@@ -1,8 +1,8 @@
 /*
  * fixmap.h: compile-time virtual memory allocation
  */
-#ifndef __ASM_FIXMAP_H
-#define __ASM_FIXMAP_H
+#ifndef ASM__ARM__FIXMAP_H
+#define ASM__ARM__FIXMAP_H
 
 #include <xen/acpi.h>
 #include <xen/pmap.h>
@@ -45,4 +45,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_FIXMAP_H */
+#endif /* ASM__ARM__FIXMAP_H */
diff --git a/xen/arch/arm/include/asm/flushtlb.h b/xen/arch/arm/include/asm/flushtlb.h
index e45fb6d97b..2239acf4fc 100644
--- a/xen/arch/arm/include/asm/flushtlb.h
+++ b/xen/arch/arm/include/asm/flushtlb.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_FLUSHTLB_H__
-#define __ASM_ARM_FLUSHTLB_H__
+#ifndef ASM__ARM__FLUSHTLB_H
+#define ASM__ARM__FLUSHTLB_H
 
 #include <xen/cpumask.h>
 
@@ -68,7 +68,7 @@ static inline void flush_xen_tlb_range_va(vaddr_t va,
     isb();
 }
 
-#endif /* __ASM_ARM_FLUSHTLB_H__ */
+#endif /* ASM__ARM__FLUSHTLB_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/gic.h b/xen/arch/arm/include/asm/gic.h
index 541f0eeb80..edbeba6388 100644
--- a/xen/arch/arm/include/asm/gic.h
+++ b/xen/arch/arm/include/asm/gic.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_GIC_H__
-#define __ASM_ARM_GIC_H__
+#ifndef ASM__ARM__GIC_H
+#define ASM__ARM__GIC_H
 
 #define NR_GIC_LOCAL_IRQS  NR_LOCAL_IRQS
 #define NR_GIC_SGI         16
diff --git a/xen/arch/arm/include/asm/gic_v3_defs.h b/xen/arch/arm/include/asm/gic_v3_defs.h
index 2af093e774..39c594470b 100644
--- a/xen/arch/arm/include/asm/gic_v3_defs.h
+++ b/xen/arch/arm/include/asm/gic_v3_defs.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_GIC_V3_DEFS_H__
-#define __ASM_ARM_GIC_V3_DEFS_H__
+#ifndef ASM__ARM__GIC_V3_DEFS_H
+#define ASM__ARM__GIC_V3_DEFS_H
 
 #include <xen/sizes.h>
 
@@ -210,7 +210,7 @@ struct rdist_region {
     bool single_rdist;
 };
 
-#endif /* __ASM_ARM_GIC_V3_DEFS_H__ */
+#endif /* ASM__ARM__GIC_V3_DEFS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/gic_v3_its.h b/xen/arch/arm/include/asm/gic_v3_its.h
index c24d4752d0..f34b803f66 100644
--- a/xen/arch/arm/include/asm/gic_v3_its.h
+++ b/xen/arch/arm/include/asm/gic_v3_its.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_ITS_H__
-#define __ASM_ARM_ITS_H__
+#ifndef ASM__ARM__GIC_V3_ITS_H
+#define ASM__ARM__GIC_V3_ITS_H
 
 #define GITS_CTLR                       0x000
 #define GITS_IIDR                       0x004
diff --git a/xen/arch/arm/include/asm/grant_table.h b/xen/arch/arm/include/asm/grant_table.h
index d3c518a926..b104fc890c 100644
--- a/xen/arch/arm/include/asm/grant_table.h
+++ b/xen/arch/arm/include/asm/grant_table.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_GRANT_TABLE_H__
-#define __ASM_GRANT_TABLE_H__
+#ifndef ASM__ARM__GRANT_TABLE_H
+#define ASM__ARM__GRANT_TABLE_H
 
 #include <xen/grant_table.h>
 #include <xen/kernel.h>
@@ -76,7 +76,7 @@ int replace_grant_host_mapping(uint64_t gpaddr, mfn_t frame,
 #define gnttab_need_iommu_mapping(d)                    \
     (is_domain_direct_mapped(d) && is_iommu_enabled(d))
 
-#endif /* __ASM_GRANT_TABLE_H__ */
+#endif /* ASM__ARM__GRANT_TABLE_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_access.h b/xen/arch/arm/include/asm/guest_access.h
index 18c88b70d7..2deaf968f9 100644
--- a/xen/arch/arm/include/asm/guest_access.h
+++ b/xen/arch/arm/include/asm/guest_access.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_GUEST_ACCESS_H__
-#define __ASM_ARM_GUEST_ACCESS_H__
+#ifndef ASM__ARM__GUEST_ACCESS_H
+#define ASM__ARM__GUEST_ACCESS_H
 
 #include <xen/errno.h>
 #include <xen/sched.h>
@@ -31,7 +31,7 @@ int access_guest_memory_by_gpa(struct domain *d, paddr_t gpa, void *buf,
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_ARM_GUEST_ACCESS_H__ */
+#endif /* ASM__ARM__GUEST_ACCESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_atomics.h b/xen/arch/arm/include/asm/guest_atomics.h
index 8893eb9a55..29fc05f5e7 100644
--- a/xen/arch/arm/include/asm/guest_atomics.h
+++ b/xen/arch/arm/include/asm/guest_atomics.h
@@ -1,5 +1,5 @@
-#ifndef _ARM_GUEST_ATOMICS_H
-#define _ARM_GUEST_ATOMICS_H
+#ifndef ASM__ARM__GUEST_ATOMICS_H
+#define ASM__ARM__GUEST_ATOMICS_H
 
 #include <xen/bitops.h>
 #include <xen/sched.h>
@@ -137,7 +137,7 @@ static inline uint64_t guest_cmpxchg64(struct domain *d,
     return oldval;
 }
 
-#endif /* _ARM_GUEST_ATOMICS_H */
+#endif /* ASM__ARM__GUEST_ATOMICS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/guest_walk.h b/xen/arch/arm/include/asm/guest_walk.h
index 8768ac9894..2be96d9020 100644
--- a/xen/arch/arm/include/asm/guest_walk.h
+++ b/xen/arch/arm/include/asm/guest_walk.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_GUEST_WALK_H
-#define _XEN_GUEST_WALK_H
+#ifndef ASM__ARM__GUEST_WALK_H
+#define ASM__ARM__GUEST_WALK_H
 
 /* Walk the guest's page tables in software. */
 bool guest_walk_tables(const struct vcpu *v,
@@ -7,7 +7,7 @@ bool guest_walk_tables(const struct vcpu *v,
                        paddr_t *ipa,
                        unsigned int *perms);
 
-#endif /* _XEN_GUEST_WALK_H */
+#endif /* ASM__ARM__GUEST_WALK_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/hsr.h b/xen/arch/arm/include/asm/hsr.h
index 9b91b28c48..d3e7b70835 100644
--- a/xen/arch/arm/include/asm/hsr.h
+++ b/xen/arch/arm/include/asm/hsr.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_HSR_H
-#define __ASM_ARM_HSR_H
+#ifndef ASM__ARM__HSR_H
+#define ASM__ARM__HSR_H
 
 #include <xen/types.h>
 
@@ -205,7 +205,7 @@ union hsr {
 /* HSR.EC == HSR_{HVC32, HVC64, SMC64, SVC32, SVC64} */
 #define HSR_XXC_IMM_MASK     (0xffff)
 
-#endif /* __ASM_ARM_HSR_H */
+#endif /* ASM__ARM__HSR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/hypercall.h b/xen/arch/arm/include/asm/hypercall.h
index 0a23f8d484..95d38206b6 100644
--- a/xen/arch/arm/include/asm/hypercall.h
+++ b/xen/arch/arm/include/asm/hypercall.h
@@ -3,15 +3,15 @@
 #error "asm/hypercall.h should not be included directly - include xen/hypercall.h instead"
 #endif
 
-#ifndef __ASM_ARM_HYPERCALL_H__
-#define __ASM_ARM_HYPERCALL_H__
+#ifndef ASM__ARM__HYPERCALL_H
+#define ASM__ARM__HYPERCALL_H
 
 #include <public/domctl.h> /* for arch_do_domctl */
 
 long subarch_do_domctl(struct xen_domctl *domctl, struct domain *d,
                        XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
 
-#endif /* __ASM_ARM_HYPERCALL_H__ */
+#endif /* ASM__ARM__HYPERCALL_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/imx-lpuart.h b/xen/arch/arm/include/asm/imx-lpuart.h
index fe859045dc..1e074649cf 100644
--- a/xen/arch/arm/include/asm/imx-lpuart.h
+++ b/xen/arch/arm/include/asm/imx-lpuart.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_IMX_LPUART_H__
-#define __ASM_ARM_IMX_LPUART_H__
+#ifndef ASM__ARM__IMX_LPUART_H
+#define ASM__ARM__IMX_LPUART_H
 
 /* 32-bit register definition */
 #define UARTBAUD          (0x10)
@@ -52,7 +52,7 @@
 
 #define UARTWATER_RXCNT_OFF     24
 
-#endif /* __ASM_ARM_IMX_LPUART_H__ */
+#endif /* ASM__ARM__IMX_LPUART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/insn.h b/xen/arch/arm/include/asm/insn.h
index 27271e95f9..8aa66b2e95 100644
--- a/xen/arch/arm/include/asm/insn.h
+++ b/xen/arch/arm/include/asm/insn.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_INSN
-#define __ARCH_ARM_INSN
+#ifndef ASM__ARM__INSN_H
+#define ASM__ARM__INSN_H
 
 #ifndef __ASSEMBLY__
 
@@ -18,7 +18,7 @@
 /* On ARM32,64 instructions are always 4 bytes long. */
 #define ARCH_PATCH_INSN_SIZE 4
 
-#endif /* !__ARCH_ARM_INSN */
+#endif /* !ASM__ARM__INSN_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/io.h b/xen/arch/arm/include/asm/io.h
index e426804424..2475fca9de 100644
--- a/xen/arch/arm/include/asm/io.h
+++ b/xen/arch/arm/include/asm/io.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_IO_H
-#define _ASM_IO_H
+#ifndef ASM__ARM__IO_H
+#define ASM__ARM__IO_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/io.h>
diff --git a/xen/arch/arm/include/asm/iommu.h b/xen/arch/arm/include/asm/iommu.h
index d57bd8a38c..eba17ec695 100644
--- a/xen/arch/arm/include/asm/iommu.h
+++ b/xen/arch/arm/include/asm/iommu.h
@@ -11,8 +11,8 @@
  * 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 __ARCH_ARM_IOMMU_H__
-#define __ARCH_ARM_IOMMU_H__
+#ifndef ASM__ARM__IOMMU_H
+#define ASM__ARM__IOMMU_H
 
 struct arch_iommu
 {
@@ -34,7 +34,7 @@ int __must_check arm_iommu_unmap_page(struct domain *d, dfn_t dfn,
                                       unsigned int order,
                                       unsigned int *flush_flags);
 
-#endif /* __ARCH_ARM_IOMMU_H__ */
+#endif /* ASM__ARM__IOMMU_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/iommu_fwspec.h b/xen/arch/arm/include/asm/iommu_fwspec.h
index 5cdb53f8e8..f018e121f9 100644
--- a/xen/arch/arm/include/asm/iommu_fwspec.h
+++ b/xen/arch/arm/include/asm/iommu_fwspec.h
@@ -24,8 +24,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ARCH_ARM_IOMMU_FWSPEC_H__
-#define __ARCH_ARM_IOMMU_FWSPEC_H__
+#ifndef ASM__ARM__IOMMU_FWSPEC_H
+#define ASM__ARM__IOMMU_FWSPEC_H
 
 /* per-device IOMMU instance data */
 struct iommu_fwspec {
@@ -55,7 +55,7 @@ static inline void dev_iommu_fwspec_set(struct device *dev,
     dev->iommu_fwspec = fwspec;
 }
 
-#endif /* __ARCH_ARM_IOMMU_FWSPEC_H__ */
+#endif /* ASM__ARM__IOMMU_FWSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/ioreq.h b/xen/arch/arm/include/asm/ioreq.h
index 50185978d5..9300ba53d6 100644
--- a/xen/arch/arm/include/asm/ioreq.h
+++ b/xen/arch/arm/include/asm/ioreq.h
@@ -17,8 +17,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_IOREQ_H__
-#define __ASM_ARM_IOREQ_H__
+#ifndef ASM__ARM__IOREQ_H
+#define ASM__ARM__IOREQ_H
 
 #ifdef CONFIG_IOREQ_SERVER
 enum io_state handle_ioserv(struct cpu_user_regs *regs, struct vcpu *v);
@@ -57,7 +57,7 @@ static inline void msix_write_completion(struct vcpu *v)
 #define IOREQ_STATUS_UNHANDLED   IO_UNHANDLED
 #define IOREQ_STATUS_RETRY       IO_RETRY
 
-#endif /* __ASM_ARM_IOREQ_H__ */
+#endif /* ASM__ARM__IOREQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/irq.h b/xen/arch/arm/include/asm/irq.h
index 88e060bf29..42abb6614e 100644
--- a/xen/arch/arm/include/asm/irq.h
+++ b/xen/arch/arm/include/asm/irq.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_HW_IRQ_H
-#define _ASM_HW_IRQ_H
+#ifndef ASM__ARM__IRQ_H
+#define ASM__ARM__IRQ_H
 
 #include <xen/device_tree.h>
 #include <public/device_tree_defs.h>
@@ -101,7 +101,7 @@ bool irq_type_set_by_domain(const struct domain *d);
 void irq_end_none(struct irq_desc *irq);
 #define irq_end_none irq_end_none
 
-#endif /* _ASM_HW_IRQ_H */
+#endif /* ASM__ARM__IRQ_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index 7e6e3c82a4..39452f984b 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -3,8 +3,8 @@
  *
  * Copyright (C) 2011 Citrix Systems, Inc.
  */
-#ifndef __ARCH_ARM_KERNEL_H__
-#define __ARCH_ARM_KERNEL_H__
+#ifndef ASM__ARM__KERNEL_H
+#define ASM__ARM__KERNEL_H
 
 #include <xen/device_tree.h>
 #include <asm/domain.h>
@@ -126,7 +126,7 @@ int kernel_probe(struct kernel_info *info, const struct dt_device_node *domain);
  */
 void kernel_load(struct kernel_info *info);
 
-#endif /* #ifdef __ARCH_ARM_KERNEL_H__ */
+#endif /* #ifdef ASM__ARM__KERNEL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/livepatch.h b/xen/arch/arm/include/asm/livepatch.h
index 026af5e7dc..11fec2033c 100644
--- a/xen/arch/arm/include/asm/livepatch.h
+++ b/xen/arch/arm/include/asm/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_ARM_LIVEPATCH_H__
-#define __XEN_ARM_LIVEPATCH_H__
+#ifndef ASM__ARM__LIVEPATCH_H
+#define ASM__ARM__LIVEPATCH_H
 
 #include <xen/sizes.h> /* For SZ_* macros. */
 #include <asm/insn.h>
@@ -24,7 +24,7 @@ extern void *vmap_of_xen_text;
 #define ARCH_LIVEPATCH_RANGE SZ_128M
 #endif
 
-#endif /* __XEN_ARM_LIVEPATCH_H__ */
+#endif /* ASM__ARM__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/lpae.h b/xen/arch/arm/include/asm/lpae.h
index 4a1679cb33..ebf20ac121 100644
--- a/xen/arch/arm/include/asm/lpae.h
+++ b/xen/arch/arm/include/asm/lpae.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_LPAE_H__
-#define __ARM_LPAE_H__
+#ifndef ASM__ARM__LPAE_H
+#define ASM__ARM__LPAE_H
 
 #ifndef __ASSEMBLY__
 
@@ -284,7 +284,7 @@ lpae_t __aligned(PAGE_SIZE) name[XEN_PT_LPAE_ENTRIES * (nr)]
 
 #define DEFINE_PAGE_TABLE(name) DEFINE_PAGE_TABLES(name, 1)
 
-#endif /* __ARM_LPAE_H__ */
+#endif /* ASM__ARM__LPAE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/macros.h b/xen/arch/arm/include/asm/macros.h
index dc791245df..a6b212f4e3 100644
--- a/xen/arch/arm/include/asm/macros.h
+++ b/xen/arch/arm/include/asm/macros.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_MACROS_H
-#define __ASM_MACROS_H
+#ifndef ASM__ARM__MACROS_H
+#define ASM__ARM__MACROS_H
 
 #ifndef __ASSEMBLY__
 # error "This file should only be included in assembly file"
diff --git a/xen/arch/arm/include/asm/mem_access.h b/xen/arch/arm/include/asm/mem_access.h
index abac8032fc..22b3dc3786 100644
--- a/xen/arch/arm/include/asm/mem_access.h
+++ b/xen/arch/arm/include/asm/mem_access.h
@@ -14,8 +14,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _ASM_ARM_MEM_ACCESS_H
-#define _ASM_ARM_MEM_ACCESS_H
+#ifndef ASM__ARM__MEM_ACCESS_H
+#define ASM__ARM__MEM_ACCESS_H
 
 #include <xen/types.h>
 
@@ -59,7 +59,7 @@ p2m_mem_access_check_and_get_page(vaddr_t gva, unsigned long flag,
 }
 
 #endif /*CONFIG_MEM_ACCESS*/
-#endif /* _ASM_ARM_MEM_ACCESS_H */
+#endif /* ASM__ARM__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 5abd4b0d1c..227f678a2e 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -1,5 +1,5 @@
-#ifndef __ARCH_ARM_MM__
-#define __ARCH_ARM_MM__
+#ifndef ASM__ARM__MM_H
+#define ASM__ARM__MM_H
 
 #include <xen/kernel.h>
 #include <asm/page.h>
@@ -426,7 +426,7 @@ 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 );
 }
 
-#endif /*  __ARCH_ARM_MM__ */
+#endif /*  ASM__ARM__MM_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/mmio.h b/xen/arch/arm/include/asm/mmio.h
index b22cfdac5b..a0c5efeba7 100644
--- a/xen/arch/arm/include/asm/mmio.h
+++ b/xen/arch/arm/include/asm/mmio.h
@@ -16,8 +16,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_MMIO_H__
-#define __ASM_ARM_MMIO_H__
+#ifndef ASM__ARM__MMIO_H
+#define ASM__ARM__MMIO_H
 
 #include <xen/lib.h>
 #include <xen/rwlock.h>
@@ -92,7 +92,7 @@ void domain_io_free(struct domain *d);
 void try_decode_instruction(const struct cpu_user_regs *regs,
                             mmio_info_t *info);
 
-#endif  /* __ASM_ARM_MMIO_H__ */
+#endif  /* ASM__ARM__MMIO_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index a3b546465b..5fe3d1db57 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ARM_MMU_LAYOUT_H__
-#define __ARM_MMU_LAYOUT_H__
+#ifndef ASM__ARM__MMU__LAYOUT_H
+#define ASM__ARM__MMU__LAYOUT_H
 
 /*
  * ARM32 layout:
@@ -140,7 +140,7 @@
 
 #endif
 
-#endif /* __ARM_MMU_LAYOUT_H__ */
+#endif /* ASM__ARM__MMU__LAYOUT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/mmu/mm.h b/xen/arch/arm/include/asm/mmu/mm.h
index c5e03a66bf..44cd9b9007 100644
--- a/xen/arch/arm/include/asm/mmu/mm.h
+++ b/xen/arch/arm/include/asm/mmu/mm.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef __ARM_MMU_MM_H__
-#define __ARM_MMU_MM_H__
+#ifndef ASM__ARM__MMU__MM_H
+#define ASM__ARM__MMU__MM_H
 
 /* Non-boot CPUs use this to find the correct pagetables. */
 extern uint64_t init_ttbr;
@@ -32,7 +32,7 @@ void dump_pt_walk(paddr_t ttbr, paddr_t addr,
 /* Switch to a new root page-tables */
 extern void switch_ttbr(uint64_t ttbr);
 
-#endif /* __ARM_MMU_MM_H__ */
+#endif /* ASM__ARM__MMU__MM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/p2m.h b/xen/arch/arm/include/asm/mmu/p2m.h
index 58496c0b09..f085075d8f 100644
--- a/xen/arch/arm/include/asm/mmu/p2m.h
+++ b/xen/arch/arm/include/asm/mmu/p2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef __ARM_MMU_P2M_H__
-#define __ARM_MMU_P2M_H__
+#ifndef ASM__ARM__MMU__P2M_H
+#define ASM__ARM__MMU__P2M_H
 
 extern unsigned int p2m_root_order;
 extern unsigned int p2m_root_level;
@@ -14,7 +14,7 @@ void p2m_tlb_flush_sync(struct p2m_domain *p2m);
 
 void p2m_clear_root_pages(struct p2m_domain *p2m);
 
-#endif /* __ARM_MMU_P2M_H__ */
+#endif /* ASM__ARM__MMU__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/monitor.h b/xen/arch/arm/include/asm/monitor.h
index 77a3c1a36c..5ee181065e 100644
--- a/xen/arch/arm/include/asm/monitor.h
+++ b/xen/arch/arm/include/asm/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_ARM_MONITOR_H__
-#define __ASM_ARM_MONITOR_H__
+#ifndef ASM__ARM__MONITOR_H
+#define ASM__ARM__MONITOR_H
 
 #include <xen/sched.h>
 #include <public/domctl.h>
@@ -44,4 +44,4 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
 
 int monitor_smc(void);
 
-#endif /* __ASM_ARM_MONITOR_H__ */
+#endif /* ASM__ARM__MONITOR_H */
diff --git a/xen/arch/arm/include/asm/new_vgic.h b/xen/arch/arm/include/asm/new_vgic.h
index 1e76213893..8007d7d717 100644
--- a/xen/arch/arm/include/asm/new_vgic.h
+++ b/xen/arch/arm/include/asm/new_vgic.h
@@ -13,8 +13,8 @@
  * 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 __ASM_ARM_NEW_VGIC_H
-#define __ASM_ARM_NEW_VGIC_H
+#ifndef ASM__ARM__NEW_VGIC_H
+#define ASM__ARM__NEW_VGIC_H
 
 #include <asm/atomic.h>
 #include <asm/mmio.h>
@@ -198,7 +198,7 @@ static inline paddr_t vgic_dist_base(const struct vgic_dist *vgic)
     return vgic->dbase;
 }
 
-#endif /* __ASM_ARM_NEW_VGIC_H */
+#endif /* ASM__ARM__NEW_VGIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/nospec.h b/xen/arch/arm/include/asm/nospec.h
index efac51fc03..f06d40fba4 100644
--- a/xen/arch/arm/include/asm/nospec.h
+++ b/xen/arch/arm/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
-#ifndef _ASM_ARM_NOSPEC_H
-#define _ASM_ARM_NOSPEC_H
+#ifndef ASM__ARM__NOSPEC_H
+#define ASM__ARM__NOSPEC_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/nospec.h>
@@ -21,7 +21,7 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* _ASM_ARM_NOSPEC_H */
+#endif /* ASM__ARM__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/p2m.h b/xen/arch/arm/include/asm/p2m.h
index c84fe8d97d..edbcaad77e 100644
--- a/xen/arch/arm/include/asm/p2m.h
+++ b/xen/arch/arm/include/asm/p2m.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_P2M_H
-#define _XEN_P2M_H
+#ifndef ASM__ARM__P2M_H
+#define ASM__ARM__P2M_H
 
 #include <xen/mm.h>
 #include <xen/radix-tree.h>
@@ -449,7 +449,7 @@ static inline bool vcpu_has_cache_enabled(struct vcpu *v)
     return (READ_SYSREG(SCTLR_EL1) & mask) == mask;
 }
 
-#endif /* _XEN_P2M_H */
+#endif /* ASM__ARM__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/page-bits.h b/xen/arch/arm/include/asm/page-bits.h
index deb381ceeb..5a0fd0a93f 100644
--- a/xen/arch/arm/include/asm/page-bits.h
+++ b/xen/arch/arm/include/asm/page-bits.h
@@ -1,8 +1,8 @@
-#ifndef __ARM_PAGE_SHIFT_H__
-#define __ARM_PAGE_SHIFT_H__
+#ifndef ASM__ARM__PAGE_BITS_H
+#define ASM__ARM__PAGE_BITS_H
 
 #define PAGE_SHIFT              12
 
 #define PADDR_BITS              CONFIG_PADDR_BITS
 
-#endif /* __ARM_PAGE_SHIFT_H__ */
+#endif /* ASM__ARM__PAGE_BITS_H */
diff --git a/xen/arch/arm/include/asm/page.h b/xen/arch/arm/include/asm/page.h
index 69f817d1e6..24849998aa 100644
--- a/xen/arch/arm/include/asm/page.h
+++ b/xen/arch/arm/include/asm/page.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_PAGE_H__
-#define __ARM_PAGE_H__
+#ifndef ASM__ARM__PAGE_H
+#define ASM__ARM__PAGE_H
 
 #include <public/xen.h>
 #include <xen/page-size.h>
@@ -316,7 +316,7 @@ static inline int gva_to_ipa(vaddr_t va, paddr_t *paddr, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_PAGE_H__ */
+#endif /* ASM__ARM__PAGE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pci.h b/xen/arch/arm/include/asm/pci.h
index 7f77226c9b..ccef80687c 100644
--- a/xen/arch/arm/include/asm/pci.h
+++ b/xen/arch/arm/include/asm/pci.h
@@ -12,8 +12,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ARM_PCI_H__
-#define __ARM_PCI_H__
+#ifndef ASM__ARM__PCI_H
+#define ASM__ARM__PCI_H
 
 #ifdef CONFIG_HAS_PCI
 
@@ -148,4 +148,4 @@ static inline int pci_get_new_domain_nr(void)
 }
 
 #endif  /*!CONFIG_HAS_PCI*/
-#endif /* __ARM_PCI_H__ */
+#endif /* ASM__ARM__PCI_H */
diff --git a/xen/arch/arm/include/asm/perfc.h b/xen/arch/arm/include/asm/perfc.h
index 95c4b2b6b7..5c6a62720a 100644
--- a/xen/arch/arm/include/asm/perfc.h
+++ b/xen/arch/arm/include/asm/perfc.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PERFC_H__
-#define __ASM_PERFC_H__
+#ifndef ASM__ARM__PERFC_H
+#define ASM__ARM__PERFC_H
 
 static inline void arch_perfc_reset(void)
 {
diff --git a/xen/arch/arm/include/asm/perfc_defn.h b/xen/arch/arm/include/asm/perfc_defn.h
index 3ab0391175..56d9541e5f 100644
--- a/xen/arch/arm/include/asm/perfc_defn.h
+++ b/xen/arch/arm/include/asm/perfc_defn.h
@@ -1,6 +1,6 @@
 /* This file is legitimately included multiple times. */
-/*#ifndef __XEN_PERFC_DEFN_H__*/
-/*#define __XEN_PERFC_DEFN_H__*/
+/*#ifndef ASM__ARM__PERFC_DEFN_H*/
+/*#define ASM__ARM__PERFC_DEFN_H*/
 
 PERFCOUNTER(invalid_hypercalls, "invalid hypercalls")
 
@@ -76,7 +76,7 @@ PERFCOUNTER(maintenance_irqs, "Maintenance interrupts")
 PERFCOUNTER(atomics_guest,    "atomics: guest access")
 PERFCOUNTER(atomics_guest_paused,   "atomics: guest paused")
 
-/*#endif*/ /* __XEN_PERFC_DEFN_H__ */
+/*#endif*/ /* ASM__ARM__PERFC_DEFN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pl011-uart.h b/xen/arch/arm/include/asm/pl011-uart.h
index 27c9bfa444..ce6084784a 100644
--- a/xen/arch/arm/include/asm/pl011-uart.h
+++ b/xen/arch/arm/include/asm/pl011-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PL011_H
-#define __ASM_ARM_PL011_H
+#ifndef ASM__ARM__PL011_UART_H
+#define ASM__ARM__PL011_UART_H
 
 #ifdef __ASSEMBLY__
 
@@ -95,7 +95,7 @@
 #define RIMI  (1<<0)  /* nUARTRI Modem interrupt mask */
 #define ALLI  OEI|BEI|PEI|FEI|RTI|TXI|RXI|DSRMI|DCDMI|CTSMI|RIMI
 
-#endif /* __ASM_ARM_PL011_H */
+#endif /* ASM__ARM__PL011_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platform.h b/xen/arch/arm/include/asm/platform.h
index 997eb25216..d674858a06 100644
--- a/xen/arch/arm/include/asm/platform.h
+++ b/xen/arch/arm/include/asm/platform.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORM_H
-#define __ASM_ARM_PLATFORM_H
+#ifndef ASM__ARM__PLATFORM_H
+#define ASM__ARM__PLATFORM_H
 
 #include <xen/sched.h>
 #include <xen/mm.h>
@@ -70,7 +70,7 @@ __section(".arch.info") = {                                     \
 #define PLATFORM_END                                            \
 };
 
-#endif /* __ASM_ARM_PLATFORM_H */
+#endif /* ASM__ARM__PLATFORM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platforms/exynos5.h b/xen/arch/arm/include/asm/platforms/exynos5.h
index aef5c67084..90305fedff 100644
--- a/xen/arch/arm/include/asm/platforms/exynos5.h
+++ b/xen/arch/arm/include/asm/platforms/exynos5.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORMS_EXYNOS5_H
-#define __ASM_ARM_PLATFORMS_EXYNOS5_H
+#ifndef ASM__ARM__PLATFORMS__EXYNOS5_H
+#define ASM__ARM__PLATFORMS__EXYNOS5_H
 
 #define EXYNOS5_MCT_G_TCON          0x240       /* Relative to MCT_BASE */
 #define EXYNOS5_MCT_G_TCON_START    (1 << 8)
@@ -9,7 +9,7 @@
 
 #define EXYNOS5_SWRESET             0x0400      /* Relative to PA_PMU */
 
-#endif /* __ASM_ARM_PLATFORMS_EXYNOS5_H */
+#endif /* ASM__ARM__PLATFORMS__EXYNOS5_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/platforms/midway.h b/xen/arch/arm/include/asm/platforms/midway.h
index 099e4350f9..b6396e64b3 100644
--- a/xen/arch/arm/include/asm/platforms/midway.h
+++ b/xen/arch/arm/include/asm/platforms/midway.h
@@ -1,5 +1,5 @@
 #ifndef __ASM_ARM_PLATFORMS_MIDWAY_H
-#define __ASM_ASM_PLATFORMS_MIDWAY_H
+#define ASM__ARM__PLATFORMS__MIDWAY_H
 
 /* addresses of SREG registers for resetting the SoC */
 #define MW_SREG_PWR_REQ             0xfff3cf00
diff --git a/xen/arch/arm/include/asm/platforms/omap5.h b/xen/arch/arm/include/asm/platforms/omap5.h
index c559c84b61..811db96281 100644
--- a/xen/arch/arm/include/asm/platforms/omap5.h
+++ b/xen/arch/arm/include/asm/platforms/omap5.h
@@ -1,4 +1,4 @@
-#ifndef __ASM_ARM_PLATFORMS_OMAP5_H
+#ifndef ASM__ARM__PLATFORMS__OMAP5_H
 #define __ASM_ASM_PLATFORMS_OMAP5_H
 
 #define REALTIME_COUNTER_BASE                   0x48243200
@@ -20,7 +20,7 @@
 #define OMAP_AUX_CORE_BOOT_0_OFFSET             0x800
 #define OMAP_AUX_CORE_BOOT_1_OFFSET             0x804
 
-#endif /* __ASM_ARM_PLATFORMS_OMAP5_H */
+#endif /* ASM__ARM__PLATFORMS__OMAP5_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/platforms/vexpress.h b/xen/arch/arm/include/asm/platforms/vexpress.h
index 8b45d3a850..da81c3d1a5 100644
--- a/xen/arch/arm/include/asm/platforms/vexpress.h
+++ b/xen/arch/arm/include/asm/platforms/vexpress.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PLATFORMS_VEXPRESS_H
-#define __ASM_ARM_PLATFORMS_VEXPRESS_H
+#ifndef ASM__ARM__PLATFORMS__VEXPRESS_H
+#define ASM__ARM__PLATFORMS__VEXPRESS_H
 
 /* V2M */
 #define V2M_SYS_MMIO_BASE     (0x1c010000)
@@ -26,7 +26,7 @@
 /* Board-specific: base address of system controller */
 #define SP810_ADDRESS 0x1C020000
 
-#endif /* __ASM_ARM_PLATFORMS_VEXPRESS_H */
+#endif /* ASM__ARM__PLATFORMS__VEXPRESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h b/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
index cf25a9014d..005199d019 100644
--- a/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
+++ b/xen/arch/arm/include/asm/platforms/xilinx-zynqmp-eemi.h
@@ -11,8 +11,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PLATFORMS_ZYNQMP_H
-#define __ASM_ARM_PLATFORMS_ZYNQMP_H
+#ifndef ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H
+#define ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H
 
 #include <asm/processor.h>
 #include <asm/smccc.h>
@@ -116,7 +116,7 @@ enum ipi_api_id {
 
 extern bool zynqmp_eemi(struct cpu_user_regs *regs);
 
-#endif /* __ASM_ARM_PLATFORMS_ZYNQMP_H */
+#endif /* ASM__ARM__PLATFORMS__XILINX_ZYNQMP_EEMI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/pmap.h b/xen/arch/arm/include/asm/pmap.h
index bca3381796..a14d89cb46 100644
--- a/xen/arch/arm/include/asm/pmap.h
+++ b/xen/arch/arm/include/asm/pmap.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PMAP_H__
-#define __ASM_PMAP_H__
+#ifndef ASM__ARM__PMAP_H
+#define ASM__ARM__PMAP_H
 
 #include <xen/mm.h>
 
@@ -31,4 +31,4 @@ static inline void arch_pmap_unmap(unsigned int slot)
     flush_xen_tlb_range_va_local(FIXMAP_ADDR(slot), PAGE_SIZE);
 }
 
-#endif /* __ASM_PMAP_H__ */
+#endif /* ASM__ARM__PMAP_H */
diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
index 8e02410465..4d8be173f9 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_PROCESSOR_H
-#define __ASM_ARM_PROCESSOR_H
+#ifndef ASM__ARM__PROCESSOR_H
+#define ASM__ARM__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 #include <xen/types.h>
@@ -616,7 +616,7 @@ register_t get_default_cptr_flags(void);
     } while (0)
 
 #endif /* __ASSEMBLY__ */
-#endif /* __ASM_ARM_PROCESSOR_H */
+#endif /* ASM__ARM__PROCESSOR_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/procinfo.h b/xen/arch/arm/include/asm/procinfo.h
index 3a05f27784..d3b9f7d47c 100644
--- a/xen/arch/arm/include/asm/procinfo.h
+++ b/xen/arch/arm/include/asm/procinfo.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_PROCINFO_H
-#define __ASM_ARM_PROCINFO_H
+#ifndef ASM__ARM__PROCINFO_H
+#define ASM__ARM__PROCINFO_H
 
 #include <xen/sched.h>
 
diff --git a/xen/arch/arm/include/asm/psci.h b/xen/arch/arm/include/asm/psci.h
index 4780972621..e4e1abbebc 100644
--- a/xen/arch/arm/include/asm/psci.h
+++ b/xen/arch/arm/include/asm/psci.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PSCI_H__
-#define __ASM_PSCI_H__
+#ifndef ASM__ARM__PSCI_H
+#define ASM__ARM__PSCI_H
 
 #include <asm/smccc.h>
 
@@ -82,7 +82,7 @@ void call_psci_system_reset(void);
 #define PSCI_VERSION(major, minor)          \
     (((major) << PSCI_VERSION_MAJOR_SHIFT) | (minor))
 
-#endif /* __ASM_PSCI_H__ */
+#endif /* ASM__ARM__PSCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/regs.h b/xen/arch/arm/include/asm/regs.h
index 0d9f239a77..47a22ef0a4 100644
--- a/xen/arch/arm/include/asm/regs.h
+++ b/xen/arch/arm/include/asm/regs.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_REGS_H__
-#define __ARM_REGS_H__
+#ifndef ASM__ARM__REGS_H
+#define ASM__ARM__REGS_H
 
 #define PSR_MODE_MASK 0x1f
 
@@ -74,7 +74,7 @@ static inline void uint64_to_regpair(register_t *reg0, register_t *reg1,
 
 #endif
 
-#endif /* __ARM_REGS_H__ */
+#endif /* ASM__ARM__REGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/scif-uart.h b/xen/arch/arm/include/asm/scif-uart.h
index bce3404898..23f4bfe3fc 100644
--- a/xen/arch/arm/include/asm/scif-uart.h
+++ b/xen/arch/arm/include/asm/scif-uart.h
@@ -18,8 +18,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_SCIF_UART_H
-#define __ASM_ARM_SCIF_UART_H
+#ifndef ASM__ARM__SCIF_UART_H
+#define ASM__ARM__SCIF_UART_H
 
 /* Register offsets (SCIF) */
 #define SCIF_SCSMR     (0x00)    /* Serial mode register           */
@@ -115,7 +115,7 @@
 #define SCASSR_RDF     (1 << 1)    /* Receive FIFO Data Full */
 #define SCASSR_DR      (1 << 0)    /* Receive Data Ready */
 
-#endif /* __ASM_ARM_SCIF_UART_H */
+#endif /* ASM__ARM__SCIF_UART_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/setup.h
index 64c227d171..95ac787e2f 100644
--- a/xen/arch/arm/include/asm/setup.h
+++ b/xen/arch/arm/include/asm/setup.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_SETUP_H_
-#define __ARM_SETUP_H_
+#ifndef ASM__ARM__SETUP_H
+#define ASM__ARM__SETUP_H
 
 #include <public/version.h>
 #include <asm/p2m.h>
diff --git a/xen/arch/arm/include/asm/short-desc.h b/xen/arch/arm/include/asm/short-desc.h
index 9652a103c4..4d28e54598 100644
--- a/xen/arch/arm/include/asm/short-desc.h
+++ b/xen/arch/arm/include/asm/short-desc.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_SHORT_DESC_H__
-#define __ARM_SHORT_DESC_H__
+#ifndef ASM__ARM__SHORT_DESC_H
+#define ASM__ARM__SHORT_DESC_H
 
 /*
  * First level translation table descriptor types used by the AArch32
@@ -127,4 +127,4 @@ typedef union {
     short_desc_l2_lpage_t lpg;
 } short_desc_t;
 
-#endif /* __ARM_SHORT_DESC_H__ */
+#endif /* ASM__ARM__SHORT_DESC_H */
diff --git a/xen/arch/arm/include/asm/smccc.h b/xen/arch/arm/include/asm/smccc.h
index a289c48b7f..6c7735dece 100644
--- a/xen/arch/arm/include/asm/smccc.h
+++ b/xen/arch/arm/include/asm/smccc.h
@@ -13,8 +13,8 @@
  *
  */
 
-#ifndef __ASM_ARM_SMCCC_H__
-#define __ASM_ARM_SMCCC_H__
+#ifndef ASM__ARM__SMCCC_H
+#define ASM__ARM__SMCCC_H
 
 #include <asm/alternative.h>
 #include <asm/cpufeature.h>
@@ -390,7 +390,7 @@ void arm_smccc_1_2_smc(const struct arm_smccc_1_2_regs *args,
 #define ARM_SMCCC_RESERVED_RANGE_START  0x0
 #define ARM_SMCCC_RESERVED_RANGE_END    0x0100FFFF
 
-#endif  /* __ASM_ARM_SMCCC_H__ */
+#endif  /* ASM__ARM__SMCCC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/smp.h b/xen/arch/arm/include/asm/smp.h
index e99a3a3f53..e6c5601596 100644
--- a/xen/arch/arm/include/asm/smp.h
+++ b/xen/arch/arm/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__ARM__SMP_H
+#define ASM__ARM__SMP_H
 
 #ifndef __ASSEMBLY__
 #include <xen/cpumask.h>
diff --git a/xen/arch/arm/include/asm/spinlock.h b/xen/arch/arm/include/asm/spinlock.h
index 42b0f584fe..b1fd46336f 100644
--- a/xen/arch/arm/include/asm/spinlock.h
+++ b/xen/arch/arm/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__ARM__SPINLOCK_H
+#define ASM__ARM__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
 
 #define arch_lock_signal_wmb()  arch_lock_signal()
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__ARM__SPINLOCK_H */
diff --git a/xen/arch/arm/include/asm/static-evtchn.h b/xen/arch/arm/include/asm/static-evtchn.h
index f964522f6a..5f7916f2ac 100644
--- a/xen/arch/arm/include/asm/static-evtchn.h
+++ b/xen/arch/arm/include/asm/static-evtchn.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_EVTCHN_H_
-#define __ASM_STATIC_EVTCHN_H_
+#ifndef ASM__ARM__STATIC_EVTCHN_H
+#define ASM__ARM__STATIC_EVTCHN_H
 
 #ifdef CONFIG_STATIC_EVTCHN
 
@@ -13,7 +13,7 @@ static inline void alloc_static_evtchn(void) {};
 
 #endif /* CONFIG_STATIC_EVTCHN */
 
-#endif /* __ASM_STATIC_EVTCHN_H_ */
+#endif /* ASM__ARM__STATIC_EVTCHN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/static-memory.h b/xen/arch/arm/include/asm/static-memory.h
index 804166e541..654d47eb77 100644
--- a/xen/arch/arm/include/asm/static-memory.h
+++ b/xen/arch/arm/include/asm/static-memory.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_MEMORY_H_
-#define __ASM_STATIC_MEMORY_H_
+#ifndef ASM__ARM__STATIC_MEMORY_H
+#define ASM__ARM__STATIC_MEMORY_H
 
 #include <xen/pfn.h>
 #include <asm/kernel.h>
@@ -46,7 +46,7 @@ static inline void init_staticmem_pages(void) {};
 
 #endif /* CONFIG_STATIC_MEMORY */
 
-#endif /* __ASM_STATIC_MEMORY_H_ */
+#endif /* ASM__ARM__STATIC_MEMORY_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/static-shmem.h b/xen/arch/arm/include/asm/static-shmem.h
index fd0867c4f2..5e9b69d66f 100644
--- a/xen/arch/arm/include/asm/static-shmem.h
+++ b/xen/arch/arm/include/asm/static-shmem.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_STATIC_SHMEM_H_
-#define __ASM_STATIC_SHMEM_H_
+#ifndef ASM__ARM__STATIC_SHMEM_H
+#define ASM__ARM__STATIC_SHMEM_H
 
 #include <xen/types.h>
 #include <asm/kernel.h>
@@ -106,7 +106,7 @@ static inline void shm_mem_node_fill_reg_range(const struct kernel_info *kinfo,
 
 #endif /* CONFIG_STATIC_SHM */
 
-#endif /* __ASM_STATIC_SHMEM_H_ */
+#endif /* ASM__ARM__STATIC_SHMEM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/string.h b/xen/arch/arm/include/asm/string.h
index b485e49044..8cbcfca3f8 100644
--- a/xen/arch/arm/include/asm/string.h
+++ b/xen/arch/arm/include/asm/string.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_STRING_H__
-#define __ARM_STRING_H__
+#ifndef ASM__ARM__STRING_H
+#define ASM__ARM__STRING_H
 
 
 /*
@@ -42,7 +42,7 @@ void __memzero(void *ptr, size_t n);
 
 #endif
 
-#endif /* __ARM_STRING_H__ */
+#endif /* ASM__ARM__STRING_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/sysregs.h b/xen/arch/arm/include/asm/sysregs.h
index 61e30c9e51..98523e96d3 100644
--- a/xen/arch/arm/include/asm/sysregs.h
+++ b/xen/arch/arm/include/asm/sysregs.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_SYSREGS_H
-#define __ASM_ARM_SYSREGS_H
+#ifndef ASM__ARM__SYSREGS_H
+#define ASM__ARM__SYSREGS_H
 
 #if defined(CONFIG_ARM_32)
 # include <asm/arm32/sysregs.h>
@@ -33,7 +33,7 @@ static inline register_t read_sysreg_par(void)
 
 #endif /*  !__ASSEMBLY__  */
 
-#endif /* __ASM_ARM_SYSREGS_H */
+#endif /* ASM__ARM__SYSREGS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/system.h b/xen/arch/arm/include/asm/system.h
index 65d5c8e423..e69340c71b 100644
--- a/xen/arch/arm/include/asm/system.h
+++ b/xen/arch/arm/include/asm/system.h
@@ -1,6 +1,6 @@
 /* Portions taken from Linux arch arm */
-#ifndef __ASM_SYSTEM_H
-#define __ASM_SYSTEM_H
+#ifndef ASM__ARM__SYSTEM_H
+#define ASM__ARM__SYSTEM_H
 
 #include <xen/lib.h>
 #include <public/arch-arm.h>
diff --git a/xen/arch/arm/include/asm/tee/ffa.h b/xen/arch/arm/include/asm/tee/ffa.h
index 24cd4d99c8..ef7b21840a 100644
--- a/xen/arch/arm/include/asm/tee/ffa.h
+++ b/xen/arch/arm/include/asm/tee/ffa.h
@@ -7,8 +7,8 @@
  * Copyright (C) 2023  Linaro Limited
  */
 
-#ifndef __ASM_ARM_TEE_FFA_H__
-#define __ASM_ARM_TEE_FFA_H__
+#ifndef ASM__ARM__TEE__FFA_H
+#define ASM__ARM__TEE__FFA_H
 
 #include <xen/const.h>
 
@@ -31,4 +31,4 @@ static inline bool is_ffa_fid(uint32_t fid)
 #define FFA_NR_FUNCS    0
 #endif
 
-#endif /*__ASM_ARM_TEE_FFA_H__*/
+#endif /*ASM__ARM__TEE__FFA_H*/
diff --git a/xen/arch/arm/include/asm/tee/optee_msg.h b/xen/arch/arm/include/asm/tee/optee_msg.h
index fe743dbde3..ec2d267981 100644
--- a/xen/arch/arm/include/asm/tee/optee_msg.h
+++ b/xen/arch/arm/include/asm/tee/optee_msg.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2015-2017, Linaro Limited
  */
-#ifndef _OPTEE_MSG_H
-#define _OPTEE_MSG_H
+#ifndef ASM__ARM__TEE__OPTEE_MSG_H
+#define ASM__ARM__TEE__OPTEE_MSG_H
 
 #include <xen/bitops.h>
 #include <xen/types.h>
@@ -307,4 +307,4 @@ struct optee_msg_arg {
 #define OPTEE_MSG_CMD_UNREGISTER_SHM	5
 #define OPTEE_MSG_FUNCID_CALL_WITH_ARG	0x0004
 
-#endif /* _OPTEE_MSG_H */
+#endif /* ASM__ARM__TEE__OPTEE_MSG_H */
diff --git a/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h b/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
index d6b9dfe30c..891d23be6a 100644
--- a/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
+++ b/xen/arch/arm/include/asm/tee/optee_rpc_cmd.h
@@ -3,8 +3,8 @@
  * Copyright (c) 2016-2017, Linaro Limited
  */
 
-#ifndef __OPTEE_RPC_CMD_H
-#define __OPTEE_RPC_CMD_H
+#ifndef ASM__ARM__TEE__OPTEE_RPC_CMD_H
+#define ASM__ARM__TEE__OPTEE_RPC_CMD_H
 
 /*
  * All RPC is done with a struct optee_msg_arg as bearer of information,
@@ -315,4 +315,4 @@
 
 /* End of definition of protocol for command OPTEE_RPC_CMD_SOCKET */
 
-#endif /*__OPTEE_RPC_CMD_H*/
+#endif /*ASM__ARM__TEE__OPTEE_RPC_CMD_H*/
diff --git a/xen/arch/arm/include/asm/tee/optee_smc.h b/xen/arch/arm/include/asm/tee/optee_smc.h
index 2f5c702326..6e0bde66d6 100644
--- a/xen/arch/arm/include/asm/tee/optee_smc.h
+++ b/xen/arch/arm/include/asm/tee/optee_smc.h
@@ -2,8 +2,8 @@
 /*
  * Copyright (c) 2015, Linaro Limited
  */
-#ifndef OPTEE_SMC_H
-#define OPTEE_SMC_H
+#ifndef ASM__ARM__TEE__OPTEE_SMC_H
+#define ASM__ARM__TEE__OPTEE_SMC_H
 
 /*
  * This file is exported by OP-TEE and is in kept in sync between secure
@@ -564,4 +564,4 @@
 	((((ret) & OPTEE_SMC_RETURN_RPC_PREFIX_MASK) == \
 		OPTEE_SMC_RETURN_RPC_PREFIX)))
 
-#endif /* OPTEE_SMC_H */
+#endif /* ASM__ARM__TEE__OPTEE_SMC_H */
diff --git a/xen/arch/arm/include/asm/tee/tee.h b/xen/arch/arm/include/asm/tee/tee.h
index 0169fd746b..58659290d6 100644
--- a/xen/arch/arm/include/asm/tee/tee.h
+++ b/xen/arch/arm/include/asm/tee/tee.h
@@ -11,8 +11,8 @@
  * published by the Free Software Foundation.
  */
 
-#ifndef __ARCH_ARM_TEE_TEE_H__
-#define __ARCH_ARM_TEE_TEE_H__
+#ifndef ASM__ARM__TEE__TEE_H
+#define ASM__ARM__TEE__TEE_H
 
 #include <xen/lib.h>
 #include <xen/types.h>
@@ -121,7 +121,7 @@ static inline void tee_free_domain_ctx(struct domain *d)
 
 #endif  /* CONFIG_TEE */
 
-#endif /* __ARCH_ARM_TEE_TEE_H__ */
+#endif /* ASM__ARM__TEE__TEE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/time.h b/xen/arch/arm/include/asm/time.h
index 49ad8c1a6d..d4301ea852 100644
--- a/xen/arch/arm/include/asm/time.h
+++ b/xen/arch/arm/include/asm/time.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_TIME_H__
-#define __ARM_TIME_H__
+#ifndef ASM__ARM__TIME_H
+#define ASM__ARM__TIME_H
 
 #include <asm/sysregs.h>
 #include <asm/system.h>
@@ -108,7 +108,7 @@ void preinit_xen_time(void);
 
 void force_update_vcpu_system_time(struct vcpu *v);
 
-#endif /* __ARM_TIME_H__ */
+#endif /* ASM__ARM__TIME_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/traps.h b/xen/arch/arm/include/asm/traps.h
index 9a60dbf70e..2a935a9afb 100644
--- a/xen/arch/arm/include/asm/traps.h
+++ b/xen/arch/arm/include/asm/traps.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_TRAPS__
-#define __ASM_ARM_TRAPS__
+#ifndef ASM__ARM__TRAPS_H
+#define ASM__ARM__TRAPS_H
 
 #include <asm/hsr.h>
 #include <asm/processor.h>
@@ -118,7 +118,7 @@ static inline register_t sign_extend(const struct hsr_dabt dabt, register_t r)
 
 void finalize_instr_emulation(const struct instr_details *instr);
 
-#endif /* __ASM_ARM_TRAPS__ */
+#endif /* ASM__ARM__TRAPS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/types.h b/xen/arch/arm/include/asm/types.h
index b0a34ea730..28e55890dc 100644
--- a/xen/arch/arm/include/asm/types.h
+++ b/xen/arch/arm/include/asm/types.h
@@ -1,5 +1,5 @@
-#ifndef __ARM_TYPES_H__
-#define __ARM_TYPES_H__
+#ifndef ASM__ARM__TYPES_H
+#define ASM__ARM__TYPES_H
 
 #if defined(CONFIG_ARM_32)
 
@@ -37,7 +37,7 @@ typedef u64 register_t;
 
 #endif
 
-#endif /* __ARM_TYPES_H__ */
+#endif /* ASM__ARM__TYPES_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/vfp.h b/xen/arch/arm/include/asm/vfp.h
index 142a91ef8b..b7cc2ba906 100644
--- a/xen/arch/arm/include/asm/vfp.h
+++ b/xen/arch/arm/include/asm/vfp.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_VFP_H
-#define _ASM_VFP_H
+#ifndef ASM__ARM__VFP_H
+#define ASM__ARM__VFP_H
 
 struct vcpu;
 
@@ -14,7 +14,7 @@ struct vcpu;
 void vfp_save_state(struct vcpu *v);
 void vfp_restore_state(struct vcpu *v);
 
-#endif /* _ASM_VFP_H */
+#endif /* ASM__ARM__VFP_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/include/asm/vgic-emul.h b/xen/arch/arm/include/asm/vgic-emul.h
index fd0cfa2175..cf3670a6cd 100644
--- a/xen/arch/arm/include/asm/vgic-emul.h
+++ b/xen/arch/arm/include/asm/vgic-emul.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_ARM_VGIC_EMUL_H__
-#define __ASM_ARM_VGIC_EMUL_H__
+#ifndef ASM__ARM__VGIC_EMUL_H
+#define ASM__ARM__VGIC_EMUL_H
 
 /*
  * Helpers to create easily a case to match emulate a single register or
@@ -21,7 +21,7 @@ static inline bool vgic_reg64_check_access(struct hsr_dabt dabt)
     return ( dabt.size == DABT_DOUBLE_WORD || dabt.size == DABT_WORD );
 }
 
-#endif /* __ASM_ARM_VGIC_EMUL_H__ */
+#endif /* ASM__ARM__VGIC_EMUL_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
index e309dca1ad..bb1e45554a 100644
--- a/xen/arch/arm/include/asm/vgic.h
+++ b/xen/arch/arm/include/asm/vgic.h
@@ -15,8 +15,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ASM_ARM_VGIC_H__
-#define __ASM_ARM_VGIC_H__
+#ifndef ASM__ARM__VGIC_H
+#define ASM__ARM__VGIC_H
 
 #ifdef CONFIG_NEW_VGIC
 #include <asm/new_vgic.h>
@@ -388,7 +388,7 @@ void vgic_sync_from_lrs(struct vcpu *v);
 
 int vgic_vcpu_pending_irq(struct vcpu *v);
 
-#endif /* __ASM_ARM_VGIC_H__ */
+#endif /* ASM__ARM__VGIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vpl011.h b/xen/arch/arm/include/asm/vpl011.h
index c09abcd7a9..bbfa5661d9 100644
--- a/xen/arch/arm/include/asm/vpl011.h
+++ b/xen/arch/arm/include/asm/vpl011.h
@@ -16,8 +16,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _VPL011_H_
-#define _VPL011_H_
+#ifndef ASM__ARM__VPL011_H
+#define ASM__ARM__VPL011_H
 
 #include <public/domctl.h>
 #include <public/io/ring.h>
@@ -79,7 +79,7 @@ static inline int domain_vpl011_init(struct domain *d,
 
 static inline void domain_vpl011_deinit(struct domain *d) { }
 #endif
-#endif  /* _VPL011_H_ */
+#endif  /* ASM__ARM__VPL011_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vpsci.h b/xen/arch/arm/include/asm/vpsci.h
index 0cca5e6830..fc158d827e 100644
--- a/xen/arch/arm/include/asm/vpsci.h
+++ b/xen/arch/arm/include/asm/vpsci.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_VPSCI_H__
-#define __ASM_VPSCI_H__
+#ifndef ASM__ARM__VPSCI_H
+#define ASM__ARM__VPSCI_H
 
 #include <asm/psci.h>
 
@@ -29,7 +29,7 @@
 bool do_vpsci_0_1_call(struct cpu_user_regs *regs, uint32_t fid);
 bool do_vpsci_0_2_call(struct cpu_user_regs *regs, uint32_t fid);
 
-#endif /* __ASM_VPSCI_H__ */
+#endif /* ASM__ARM__VPSCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/vreg.h b/xen/arch/arm/include/asm/vreg.h
index 387ce76e7e..97b9d71066 100644
--- a/xen/arch/arm/include/asm/vreg.h
+++ b/xen/arch/arm/include/asm/vreg.h
@@ -1,8 +1,8 @@
 /*
  * Helpers to emulate co-processor and system registers
  */
-#ifndef __ASM_ARM_VREG__
-#define __ASM_ARM_VREG__
+#ifndef ASM__ARM__VREG_H
+#define ASM__ARM__VREG_H
 
 typedef bool (*vreg_reg64_fn_t)(struct cpu_user_regs *regs, uint64_t *r,
                                    bool read);
@@ -145,4 +145,4 @@ VREG_REG_HELPERS(32, 0x3)
 
 #undef VREG_REG_HELPERS
 
-#endif /* __ASM_ARM_VREG__ */
+#endif /* ASM__ARM__VREG_H */
diff --git a/xen/arch/arm/include/asm/vtimer.h b/xen/arch/arm/include/asm/vtimer.h
index 9d4fb4c6e8..a2c54d000b 100644
--- a/xen/arch/arm/include/asm/vtimer.h
+++ b/xen/arch/arm/include/asm/vtimer.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VTIMER_H__
-#define __ARCH_ARM_VTIMER_H__
+#ifndef ASM__ARM__VTIMER_H
+#define ASM__ARM__VTIMER_H
 
 extern int domain_vtimer_init(struct domain *d,
                               struct xen_arch_domainconfig *config);
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 7c6b06f686..b32f4a21a2 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2023  Linaro Limited
  */
 
-#ifndef __FFA_PRIVATE_H__
-#define __FFA_PRIVATE_H__
+#ifndef ARM__TEE__FFA_PRIVATE_H
+#define ARM__TEE__FFA_PRIVATE_H
 
 #include <xen/const.h>
 #include <xen/sizes.h>
@@ -398,4 +398,4 @@ static inline int32_t ffa_rx_release(void)
     return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
 }
 
-#endif /*__FFA_PRIVATE_H__*/
+#endif /*ARM__TEE__FFA_PRIVATE_H*/
diff --git a/xen/arch/arm/vgic/vgic-mmio.h b/xen/arch/arm/vgic/vgic-mmio.h
index 3566cf237c..1bbcb778e9 100644
--- a/xen/arch/arm/vgic/vgic-mmio.h
+++ b/xen/arch/arm/vgic/vgic-mmio.h
@@ -13,8 +13,8 @@
  * 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_ARM_VGIC_VGIC_MMIO_H__
-#define __XEN_ARM_VGIC_VGIC_MMIO_H__
+#ifndef ARM__VGIC__VGIC_MMIO_H
+#define ARM__VGIC__VGIC_MMIO_H
 
 struct vgic_register_region {
     unsigned int reg_offset;
diff --git a/xen/arch/arm/vgic/vgic.h b/xen/arch/arm/vgic/vgic.h
index 534b24bcd3..3cb5e37077 100644
--- a/xen/arch/arm/vgic/vgic.h
+++ b/xen/arch/arm/vgic/vgic.h
@@ -14,8 +14,8 @@
  * 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_ARM_VGIC_VGIC_H__
-#define __XEN_ARM_VGIC_VGIC_H__
+#ifndef ARM__VGIC__VGIC_H
+#define ARM__VGIC__VGIC_H
 
 /*
  * We piggy-back on the already used KVM product ID,  but use a different
diff --git a/xen/arch/arm/vpci.h b/xen/arch/arm/vpci.h
index 3c713f3fcd..8d01a7c006 100644
--- a/xen/arch/arm/vpci.h
+++ b/xen/arch/arm/vpci.h
@@ -12,8 +12,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VPCI_H__
-#define __ARCH_ARM_VPCI_H__
+#ifndef ARM__VPCI_H
+#define ARM__VPCI_H
 
 #ifdef CONFIG_HAS_VPCI
 int domain_vpci_init(struct domain *d);
@@ -30,7 +30,7 @@ static inline unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
 }
 #endif
 
-#endif /* __ARCH_ARM_VPCI_H__ */
+#endif /* ARM__VPCI_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/vuart.h b/xen/arch/arm/vuart.h
index e90d84c6ed..697cb0225d 100644
--- a/xen/arch/arm/vuart.h
+++ b/xen/arch/arm/vuart.h
@@ -17,8 +17,8 @@
  * GNU General Public License for more details.
  */
 
-#ifndef __ARCH_ARM_VUART_H__
-#define __ARCH_ARM_VUART_H__
+#ifndef ARM__VUART_H
+#define ARM__VUART_H
 
 struct domain;
 
@@ -42,7 +42,7 @@ static inline void domain_vuart_free(struct domain *d) {};
 
 #endif /* CONFIG_HWDOM_VUART */
 
-#endif /* __ARCH_ARM_VUART_H__ */
+#endif /* ARM__VUART_H */
 
 /*
  * Local variables:
diff --git a/xen/drivers/passthrough/arm/smmu-v3.h b/xen/drivers/passthrough/arm/smmu-v3.h
index f09048812c..d104588aea 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.h
+++ b/xen/drivers/passthrough/arm/smmu-v3.h
@@ -5,8 +5,8 @@
  * Copyright (C) 2022 ARM Limited
  */
 
-#ifndef _ARM_SMMU_V3_H
-#define _ARM_SMMU_V3_H
+#ifndef DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H
+#define DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H
 
 /* MMIO registers */
 #define ARM_SMMU_IDR0			0x0
@@ -668,4 +668,4 @@ struct arm_smmu_domain {
 	spinlock_t			devices_lock;
 };
 
-#endif /* _ARM_SMMU_V3_H */
+#endif /* DRIVERS__PASSTHROUGH__ARM__SMMU_V3_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810091.1222773 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVJ-0007A9-Ha; Fri, 04 Oct 2024 08:17:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810091.1222773; Fri, 04 Oct 2024 08: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 1swdVJ-00078s-Bx; Fri, 04 Oct 2024 08:17:37 +0000
Received: by outflank-mailman (input) for mailman id 810091;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVH-0005Kj-6A
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:35 +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 1b58f1cd-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:33 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a8d24f98215so274599466b.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:33 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1b58f1cd-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029853; x=1728634653; 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=5bKKGq4cESxZkZMDW1uobM0TYcCXOg89PEXrmDcph/U=;
        b=fUdSVRleNXiOSgZPPyLZVRRsi/e+Zvy0Q00x5Ct5lOW5XtISjkX3g+nbLxIHn6/a4K
         zc759zL3Y5DZJRt+PuefwY0izNQxkxCIOxf2TXcifZsH5NSI86JbKmmXLTBWE/OSvyit
         4PcaiLD6fA1aaS/o/eKV9efHV+KKMuxKCy6uI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029853; x=1728634653;
        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=5bKKGq4cESxZkZMDW1uobM0TYcCXOg89PEXrmDcph/U=;
        b=A9aTvn1Qj7oNGBQohW/c8oVcqlraFKNf9ScWylWtRpZY6w1XbW8wW1LpqooLIhOfqf
         rEqhqvGOh2sKDypzsNAxQF5LV2Bt3ggxH58B7OtnRoD7myBrH7ILczXZCheqO3PTxU2A
         SubMveaJhapB9dtDKy7oqxNiXI1aUwZdfWLnOuwqqIa2AqKezkv5PgDU81jGMVEEnoCh
         Vzv4I6QUYupd3Ybs9vzFmzpYe9OQ2rt2hPUmTtsUMYzyMxIyUBtm2RwCO4z7Ezi8wUwY
         zd75eC0fUo2Pai9JU8EQkgnmhVhT276nr3zwZWgAequvSevjsqLOue74cFYxDuB7X0Ta
         Yjhg==
X-Gm-Message-State: AOJu0YzMRvrcVgTvFXtpK+wrez0Vmwxbvf2oqVhQyrN6Kr9bIcO7fVlQ
	l5/AF7dNjn4zXssT0xMSw9xkUyFSFyRi7WTWg1tGjCthjD42WYofvuriQmW8pqwtEVuw2DjQkH/
	H
X-Google-Smtp-Source: AGHT+IEvdAwVwClZB1xoco8svnU+S8ZotrlHbi1mfqqVzDY+tUdMOy+qCvZXRnXmyV4Nrov7NjLFbA==
X-Received: by 2002:a17:907:3e05:b0:a93:d5d3:be4 with SMTP id a640c23a62f3a-a991bd16c3fmr161144166b.13.1728029852928;
        Fri, 04 Oct 2024 01:17:32 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@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>
Subject: [PATCH v3 09/19] xen: Update header guards - Intel TXT
Date: Fri,  4 Oct 2024 09:17:03 +0100
Message-Id: <20241004081713.749031-10-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to Intel trusted execution technology.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/tboot.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/tboot.h b/xen/arch/x86/include/asm/tboot.h
index 818d5fa451..15479fe80e 100644
--- a/xen/arch/x86/include/asm/tboot.h
+++ b/xen/arch/x86/include/asm/tboot.h
@@ -34,8 +34,8 @@
  *
  */
 
-#ifndef __TBOOT_H__
-#define __TBOOT_H__
+#ifndef ASM__X86__TBOOT_H
+#define ASM__X86__TBOOT_H
 
 #include <xen/acpi.h>
 
@@ -147,7 +147,7 @@ static inline int tboot_wake_ap(int apicid, unsigned long sipi_vec)
 }
 #endif /* CONFIG_TBOOT */
 
-#endif /* __TBOOT_H__ */
+#endif /* ASM__X86__TBOOT_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810092.1222783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVK-0007JW-9O; Fri, 04 Oct 2024 08:17:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810092.1222783; Fri, 04 Oct 2024 08: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 1swdVJ-0007Gk-RL; Fri, 04 Oct 2024 08:17:37 +0000
Received: by outflank-mailman (input) for mailman id 810092;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVH-0005Vm-5i
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:35 +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 1bd3abf5-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:34 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8a897bd4f1so232194766b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:34 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1bd3abf5-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029854; x=1728634654; 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=Wa3ZmXvbNT3cVq7/5R5qVXzdHrXKzTt2KbYl/Ig19/Y=;
        b=ez5XvvY4n6DvPa0XJKLxQK+9sK2dgwErJzHXvCu0QB3XWUrEGHdlgfjo2OZW9UvIMi
         gmlRmfoI7tkFrYxI1+/FAs7kCBrR8VH+iR7XDLdQnzD09eRZZoqcktwSkNs8NSJ5A906
         EXMqViOEql4covQO6tGYSIfHQTA9tdBQ/5Ols=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029854; x=1728634654;
        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=Wa3ZmXvbNT3cVq7/5R5qVXzdHrXKzTt2KbYl/Ig19/Y=;
        b=FMy2D5DigUCYbdx9Df/n/RihMvSkbhuw/z7LkC9SuK7ec5ZAxrQT3N11w+6TyNjvmV
         Vg5njxP6tPx6QcbEWhE7Z8C1qdvrzROkoL+g0pu0cadzjS78XZ6DIflCQMTIx25IKa3+
         efsSVBpsMKAgHCG2LHLMInBbJOPVLmKG+qwV/iWXkPkO5wUximCSdKIqCMxRgt6WM2C2
         ezlyqobMQEwSK0tANKd+Wyzyh/85c6dVtQIo4TSgA5vEDKEVcfEouDAOB1GADUoXYUDE
         sF0mN9GvULsuSxvmtwPbGb4rqQgwPvq/Sb7i36inVd44TLc2xVcFeTs+/xiRBl58R6sX
         9v5g==
X-Gm-Message-State: AOJu0YzzaOm1hRvueFYNDXv5i5321FZyzkZmfYo6cIWUqMKOMa9pG0v7
	pTYyDD1byuichhcddHf6tnMcQjWEWt561mmAAJ6ErldwJfXxbXjIoZdwfRHjiqxXtPlQ/FLptGL
	c
X-Google-Smtp-Source: AGHT+IHFvf6CP3Kqoi0jScp5aHubGVRmq1MSswP/f6TwUzxpsvWgy69gfXi3ygyTjT/ucb/PrNPCuw==
X-Received: by 2002:a17:907:3dac:b0:a8a:9246:7f57 with SMTP id a640c23a62f3a-a991bd1371emr200053566b.4.1728029853717;
        Fri, 04 Oct 2024 01:17:33 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v3 10/19] xen: Update header guards - I/O MMU
Date: Fri,  4 Oct 2024 09:17:04 +0100
Message-Id: <20241004081713.749031-11-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to I/O MMU.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/drivers/passthrough/amd/iommu-defs.h | 6 +++---
 xen/drivers/passthrough/amd/iommu.h      | 6 +++---
 xen/drivers/passthrough/ats.h            | 6 +++---
 xen/drivers/passthrough/vtd/dmar.h       | 6 +++---
 xen/drivers/passthrough/vtd/extern.h     | 6 +++---
 xen/drivers/passthrough/vtd/iommu.h      | 4 ++--
 xen/drivers/passthrough/vtd/vtd.h        | 6 +++---
 xen/include/xen/iommu.h                  | 6 +++---
 8 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu-defs.h b/xen/drivers/passthrough/amd/iommu-defs.h
index c145248f9a..30b094f187 100644
--- a/xen/drivers/passthrough/amd/iommu-defs.h
+++ b/xen/drivers/passthrough/amd/iommu-defs.h
@@ -17,8 +17,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef AMD_IOMMU_DEFS_H
-#define AMD_IOMMU_DEFS_H
+#ifndef DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H
+#define DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H
 
 /* IOMMU Event Log entries: in power of 2 increments, minimum of 256 */
 #define IOMMU_EVENT_LOG_DEFAULT_ENTRIES     512
@@ -486,7 +486,7 @@ union amd_iommu_pte {
 #define IOMMU_REG_BASE_ADDR_HIGH_MASK               0x000FFFFFU
 #define IOMMU_REG_BASE_ADDR_HIGH_SHIFT              0
 
-#endif /* AMD_IOMMU_DEFS_H */
+#endif /* DRIVERS__PASSTHROUGH__AMD__IOMMU_DEFS_H */
 
 /*
  * Local variables:
diff --git a/xen/drivers/passthrough/amd/iommu.h b/xen/drivers/passthrough/amd/iommu.h
index 8d6f63d87f..c32e9e9a16 100644
--- a/xen/drivers/passthrough/amd/iommu.h
+++ b/xen/drivers/passthrough/amd/iommu.h
@@ -16,8 +16,8 @@
  * 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 AMD_IOMMU_H
-#define AMD_IOMMU_H
+#ifndef DRIVERS__PASSTHROUGH__AMD__IOMMU_H
+#define DRIVERS__PASSTHROUGH__AMD__IOMMU_H
 
 #include <xen/init.h>
 #include <xen/types.h>
@@ -372,4 +372,4 @@ static inline void iommu_set_addr_hi_to_reg(uint32_t *reg, uint32_t addr)
                          IOMMU_REG_BASE_ADDR_HIGH_SHIFT, reg);
 }
 
-#endif /* AMD_IOMMU_H */
+#endif /* DRIVERS__PASSTHROUGH__AMD__IOMMU_H */
diff --git a/xen/drivers/passthrough/ats.h b/xen/drivers/passthrough/ats.h
index f5e1d254e0..68b1c600eb 100644
--- a/xen/drivers/passthrough/ats.h
+++ b/xen/drivers/passthrough/ats.h
@@ -12,8 +12,8 @@
  * this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _ATS_H_
-#define _ATS_H_
+#ifndef DRIVERS__PASSTHROUGH__ATS_H
+#define DRIVERS__PASSTHROUGH__ATS_H
 
 #include <xen/pci_regs.h>
 
@@ -50,5 +50,5 @@ static inline int pci_ats_device(int seg, int bus, int devfn)
                                    PCI_EXT_CAP_ID_ATS);
 }
 
-#endif /* _ATS_H_ */
+#endif /* DRIVERS__PASSTHROUGH__ATS_H */
 
diff --git a/xen/drivers/passthrough/vtd/dmar.h b/xen/drivers/passthrough/vtd/dmar.h
index 61f71ca5e6..0ff4f36535 100644
--- a/xen/drivers/passthrough/vtd/dmar.h
+++ b/xen/drivers/passthrough/vtd/dmar.h
@@ -17,8 +17,8 @@
  * Copyright (C) Shaohua Li <shaohua.li@intel.com>
  */
 
-#ifndef _DMAR_H_
-#define _DMAR_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__DMAR_H
+#define DRIVERS__PASSTHROUGH__VTD__DMAR_H
 
 #include <xen/list.h>
 #include <xen/iommu.h>
@@ -171,4 +171,4 @@ int vtd_hw_check(void);
 void disable_pmr(struct vtd_iommu *iommu);
 int is_igd_drhd(struct acpi_drhd_unit *drhd);
 
-#endif /* _DMAR_H_ */
+#endif /* DRIVERS__PASSTHROUGH__VTD__DMAR_H */
diff --git a/xen/drivers/passthrough/vtd/extern.h b/xen/drivers/passthrough/vtd/extern.h
index 667590ee52..c16583c951 100644
--- a/xen/drivers/passthrough/vtd/extern.h
+++ b/xen/drivers/passthrough/vtd/extern.h
@@ -17,8 +17,8 @@
  * Copyright (C) Weidong Han <weidong.han@intel.com>
  */
 
-#ifndef _VTD_EXTERN_H_
-#define _VTD_EXTERN_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__EXTERN_H
+#define DRIVERS__PASSTHROUGH__VTD__EXTERN_H
 
 #include "dmar.h"
 #include <xen/keyhandler.h>
@@ -114,4 +114,4 @@ void quirk_iommu_caps(struct vtd_iommu *iommu);
 bool platform_supports_intremap(void);
 bool platform_supports_x2apic(void);
 
-#endif // _VTD_EXTERN_H_
+#endif // DRIVERS__PASSTHROUGH__VTD__EXTERN_H
diff --git a/xen/drivers/passthrough/vtd/iommu.h b/xen/drivers/passthrough/vtd/iommu.h
index 78aa8a96f5..29d350b23d 100644
--- a/xen/drivers/passthrough/vtd/iommu.h
+++ b/xen/drivers/passthrough/vtd/iommu.h
@@ -16,8 +16,8 @@
  * Copyright (C) Ashok Raj <ashok.raj@intel.com>
  */
 
-#ifndef _INTEL_IOMMU_H_
-#define _INTEL_IOMMU_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__IOMMU_H
+#define DRIVERS__PASSTHROUGH__VTD__IOMMU_H
 
 #include <xen/iommu.h>
 #include <asm/msi.h>
diff --git a/xen/drivers/passthrough/vtd/vtd.h b/xen/drivers/passthrough/vtd/vtd.h
index cb2df76eed..8aeff8c1f2 100644
--- a/xen/drivers/passthrough/vtd/vtd.h
+++ b/xen/drivers/passthrough/vtd/vtd.h
@@ -17,8 +17,8 @@
  * Copyright (C) Weidong Han <weidong.han@intel.com>
  */
 
-#ifndef _VTD_H_
-#define _VTD_H_
+#ifndef DRIVERS__PASSTHROUGH__VTD__VTD_H
+#define DRIVERS__PASSTHROUGH__VTD__VTD_H
 
 #include <xen/iommu.h>
 
@@ -72,4 +72,4 @@ struct msi_msg_remap_entry {
     u32	data;		/* msi message data */
 };
 
-#endif // _VTD_H_
+#endif // DRIVERS__PASSTHROUGH__VTD__VTD_H
diff --git a/xen/include/xen/iommu.h b/xen/include/xen/iommu.h
index 442ae5322d..b928c67e19 100644
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -16,8 +16,8 @@
  * Copyright (C) Allen Kay <allen.m.kay@intel.com>
  */
 
-#ifndef _IOMMU_H_
-#define _IOMMU_H_
+#ifndef XEN__IOMMU_H
+#define XEN__IOMMU_H
 
 #include <xen/mm-frame.h>
 #include <xen/init.h>
@@ -440,7 +440,7 @@ static inline int iommu_update_ire_from_msi(
 }
 #endif
 
-#endif /* _IOMMU_H_ */
+#endif /* XEN__IOMMU_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810093.1222788 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVL-0007Vr-05; Fri, 04 Oct 2024 08:17:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810093.1222788; Fri, 04 Oct 2024 08: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 1swdVK-0007SM-Io; Fri, 04 Oct 2024 08:17:38 +0000
Received: by outflank-mailman (input) for mailman id 810093;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVH-0005Vm-TB
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:35 +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 1c490f4b-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:35 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c88b5c375fso2062666a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:35 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c490f4b-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029854; x=1728634654; 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=ihqfJnptAe3gMr73Ctv/JCvxYIXJfjbjM0EEMcUbg4M=;
        b=AKg0Glu5vXg5Mb9jLHbO0WT5dQRMid6lj5mTIug6biZv63tUW+hlIW35w2Bh3glzlT
         a7eR0XnWvUMlh0fQRDw+jtn77nAj/azxvACHYjqwy2xH8MSvzl4CQaLphHMfkEz8V/Du
         UGyBzN8UKEOKlHZbfemI1ro2eT9/Jj2LMl5mo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029854; x=1728634654;
        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=ihqfJnptAe3gMr73Ctv/JCvxYIXJfjbjM0EEMcUbg4M=;
        b=t1P0ZMEYBIzlTBIkPGFt7orXqYNjFdj63oRzH5zrhgIUkULEuJmRa7hYD32Afw3WZc
         g2SAB7zSJ4u2KDk1oHpcqlKPIehm2vnIoZChKw1hIEJ0V7bAho4JpAbJ2nMsWyY2M9+l
         QUJ8t2jD5KJ4s4zirdmL7PHu8n6BI8NcA0mUjBbfF2lKf9rh0qiMMxCTO/+jRa04MlGt
         tfRaJIKd+haFHFW22ekkN+QH770vKNNiv4/RK6lU06xY6lBTzuJPU9nhm2AWj9BICQ2P
         a130bm5SJ6ffQFOlN8i9d/v8k5QehVa/yydrlSvHkwg4K9GKwSaAZmEQ8kzf5oGituRv
         yYYw==
X-Gm-Message-State: AOJu0YwekiH7gP77Xggkk28H6JiyGXfslw5hwbjajwQnxgSa3KPzXjz+
	yEwdmxECLqEImZzbTiYTKiT4xruBUL+Q6RU405iFtXH+ieZYwZffnLx/tSYeSgA7KPqubtb6RgG
	v
X-Google-Smtp-Source: AGHT+IHrsJWbh0dZK0nQkMeMOYldxh0qESnEek/YB7M5NUhS0mXgiDWGbzZLJ0VedI6/6o3QdXtmVQ==
X-Received: by 2002:a17:906:cae5:b0:a7a:b561:3575 with SMTP id a640c23a62f3a-a991bed8a5dmr168686766b.56.1728029854523;
        Fri, 04 Oct 2024 01:17:34 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH v3 11/19] xen: Update header guards - Kconfig
Date: Fri,  4 Oct 2024 09:17:05 +0100
Message-Id: <20241004081713.749031-12-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to Kconfig.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/tools/kconfig/expr.h   | 6 +++---
 xen/tools/kconfig/images.h | 6 +++---
 xen/tools/kconfig/list.h   | 4 ++--
 xen/tools/kconfig/lkc.h    | 6 +++---
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/xen/tools/kconfig/expr.h b/xen/tools/kconfig/expr.h
index 017843c9a4..044e88deac 100644
--- a/xen/tools/kconfig/expr.h
+++ b/xen/tools/kconfig/expr.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef EXPR_H
-#define EXPR_H
+#ifndef TOOLS__KCONFIG__EXPR_H
+#define TOOLS__KCONFIG__EXPR_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -329,4 +329,4 @@ static inline int expr_is_no(struct expr *e)
 }
 #endif
 
-#endif /* EXPR_H */
+#endif /* TOOLS__KCONFIG__EXPR_H */
diff --git a/xen/tools/kconfig/images.h b/xen/tools/kconfig/images.h
index d8ff614bd0..4093e881db 100644
--- a/xen/tools/kconfig/images.h
+++ b/xen/tools/kconfig/images.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef IMAGES_H
-#define IMAGES_H
+#ifndef TOOLS__KCONFIG__IMAGES_H
+#define TOOLS__KCONFIG__IMAGES_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -30,4 +30,4 @@ extern const char *xpm_void[];
 }
 #endif
 
-#endif /* IMAGES_H */
+#endif /* TOOLS__KCONFIG__IMAGES_H */
diff --git a/xen/tools/kconfig/list.h b/xen/tools/kconfig/list.h
index 45cb237ab7..5d30f91282 100644
--- a/xen/tools/kconfig/list.h
+++ b/xen/tools/kconfig/list.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef LIST_H
-#define LIST_H
+#ifndef TOOLS__KCONFIG__LIST_H
+#define TOOLS__KCONFIG__LIST_H
 
 /*
  * Copied from include/linux/...
diff --git a/xen/tools/kconfig/lkc.h b/xen/tools/kconfig/lkc.h
index 4fb16f3166..aee4a94696 100644
--- a/xen/tools/kconfig/lkc.h
+++ b/xen/tools/kconfig/lkc.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
 
-#ifndef LKC_H
-#define LKC_H
+#ifndef TOOLS__KCONFIG__LKC_H
+#define TOOLS__KCONFIG__LKC_H
 
 #include "expr.h"
 
@@ -155,4 +155,4 @@ static inline bool sym_has_value(struct symbol *sym)
 }
 #endif
 
-#endif /* LKC_H */
+#endif /* TOOLS__KCONFIG__LKC_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810094.1222798 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVM-0007cP-44; Fri, 04 Oct 2024 08:17:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810094.1222798; Fri, 04 Oct 2024 08:17: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 1swdVL-0007Zy-4a; Fri, 04 Oct 2024 08:17:39 +0000
Received: by outflank-mailman (input) for mailman id 810094;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVI-0005Vm-Fy
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:36 +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 1cc1f655-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:36 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a8d100e9ce0so216182066b.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:36 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1cc1f655-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029855; x=1728634655; 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=JzvJYHGLE9z5OUSnbhsIqX8inHPsJLzDP+/krirdPTI=;
        b=IuXtHddlJF4EVBm4cqlg6dny3eR6w2F+vRxFaUPx3+WlJ1gglEHZisEgjHVzWEknht
         axH92xjNeZbahM1RtLAv4xemTNvJoWfy+2JQJ3KUEazidRhWGe1CQQx0I9ZwiSNcl2JP
         6+emAUnryy0Hnrt+WV7ST8+F9um2Ufec73jGw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029855; x=1728634655;
        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=JzvJYHGLE9z5OUSnbhsIqX8inHPsJLzDP+/krirdPTI=;
        b=rVD9v3LDrBx61BhH6xDS7sDtfAARMrBJ3/04fRG09xVxe+0eEv6BrjZQ0QfBCLjL/8
         DxcG2U6tSOPQIyL3AfLlfTAz0R8uUscIFTJh9b9/CB0DBM/I2NDJ2l3vxPfgX8xD8dJm
         KdjCv6yMIcdY9pTv3BiC/oqjZ1YB4TbJFo03i+/p/EhAPVuJskM5Ygx4RIgmZBnWyyL5
         pvWzkXiaHyYF2XHwj3nR3fYGiwVhIGKKrbBfUfWVLqOlqXuR91MBafAe3ECvZ6ZP6wsG
         3Mo2WotV+lOY7rsHDYwh0CcMljLM6leKPB4I0sNXbTxq0JzL70ceLnyeBInLEp7dtkYa
         7D5Q==
X-Gm-Message-State: AOJu0YwsV3x6Kx5cu25aUvzBmWbLdhk44WnVd0KyT9MC4y+/NrxJbFK/
	Fm2Tl8vRwe6F0gZ2VCmpid96Q5Epkjnbr6JnoQn3PrVY5s/xU/oZKC4lP1nBlS9uDW0F/MU+Pvi
	L
X-Google-Smtp-Source: AGHT+IG8JPvjC/d5jR3p1u5p5sQB7WkJpeE9C11xw13r1L+TkaUuny8oO0QufPVblaJ0CDtACtb4/Q==
X-Received: by 2002:a17:907:3e03:b0:a99:bb:735d with SMTP id a640c23a62f3a-a991c00e0ebmr174070666b.54.1728029855274;
        Fri, 04 Oct 2024 01:17:35 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v3 12/19] xen: Update header guards - KEXEC
Date: Fri,  4 Oct 2024 09:17:06 +0100
Message-Id: <20241004081713.749031-13-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to KEXEC.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/kexec.h  | 6 +++---
 xen/include/xen/kimage.h | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/xen/include/xen/kexec.h b/xen/include/xen/kexec.h
index e66eb6a8e5..d9d79902a9 100644
--- a/xen/include/xen/kexec.h
+++ b/xen/include/xen/kexec.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KEXEC_H__
-#define __XEN_KEXEC_H__
+#ifndef XEN__KEXEC_H
+#define XEN__KEXEC_H
 
 #include <xen/keyhandler.h>
 
@@ -94,7 +94,7 @@ static inline void set_kexec_crash_area_size(u64 system_ram) {}
 
 #endif
 
-#endif /* __XEN_KEXEC_H__ */
+#endif /* XEN__KEXEC_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/kimage.h b/xen/include/xen/kimage.h
index 348f07f5c8..139d4366ab 100644
--- a/xen/include/xen/kimage.h
+++ b/xen/include/xen/kimage.h
@@ -1,5 +1,5 @@
-#ifndef __XEN_KIMAGE_H__
-#define __XEN_KIMAGE_H__
+#ifndef XEN__KIMAGE_H
+#define XEN__KIMAGE_H
 
 #define IND_DESTINATION  0x1
 #define IND_INDIRECTION  0x2
@@ -55,7 +55,7 @@ int kimage_build_ind(struct kexec_image *image, mfn_t ind_mfn,
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __XEN_KIMAGE_H__ */
+#endif /* XEN__KIMAGE_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810095.1222806 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVN-00083X-Id; Fri, 04 Oct 2024 08:17:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810095.1222806; Fri, 04 Oct 2024 08:17: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 1swdVM-0007yY-Rb; Fri, 04 Oct 2024 08:17:40 +0000
Received: by outflank-mailman (input) for mailman id 810095;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVK-0005Kj-Di
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:38 +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 1d41684f-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:36 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a98f6f777f1so233579666b.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:36 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d41684f-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029856; x=1728634656; 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=hmh1hzNwt6VpdcbBHHPmRW3VApkcv+IYe7HOfAX1NVQ=;
        b=VN68wboRaXUkwVPXT8hLw0+yyXrbWNIWjz0ShD4YUwTiEGoNVOt3RGrsBthgsJ1C92
         wiMxjg5NZGKGHflrPIISxfm9n72aJkkcSgLmA+d8Nfu01LnWQxAlch17HAvk8NdPb+bA
         tFMk/A00XY/xS2zjVp9np5VPFNnkZGwaMYQt8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029856; x=1728634656;
        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=hmh1hzNwt6VpdcbBHHPmRW3VApkcv+IYe7HOfAX1NVQ=;
        b=FfPVcMMDSotFzL0cCok7Ze3o9s8o0wEnKaLXR8hFsm3y26q0fjBuI11us3iZ8HHQXC
         cgjki5wFodvIpU5iv0VcVzfkZwngY5e4yj3ZOqVJegUvhkfuY5WiZeh0M/svCNQzHm1K
         VQhTopH2whw5M64zZ7okBlV8wwBUTIAY6MhoWaQ3SuIOMCQ6dbokb3iArT0B345SEma2
         F22+qK47yh5qOS1SHe+xyGUBBhSt7G3LMd3dr+dkprp3fBIJtknMMoBmbCbG2JOqHLsL
         yVjBj3bi0Y3Na7+2GV2aRm4KMQuH1g8neAOdfTtwKl5VnQVheINYs/7tw5rwtqAd/bGu
         2L+A==
X-Gm-Message-State: AOJu0YxEyzS3FdN1x6l4lltBAFmCdr5HIMKHZOR8DkjS57lznYf08C68
	P8V4+0sp51UN9uu38yz12eRM/vfX1ebs//6AU39jBWjmFGrUA0k2WypF0Qgxi1G05rcenq0I+2Q
	V
X-Google-Smtp-Source: AGHT+IHWDduvUOS3Bw0u6cO0wQcd39B5t+mMPsQDUEQpEk84KdZZpnwVt6zzQduFlxKL3v85pTk0pg==
X-Received: by 2002:a17:907:d85f:b0:a8d:5ba1:88e6 with SMTP id a640c23a62f3a-a991bd72995mr141799566b.28.1728029856063;
        Fri, 04 Oct 2024 01:17:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v3 13/19] xen: Update header guards - Live patch
Date: Fri,  4 Oct 2024 09:17:07 +0100
Message-Id: <20241004081713.749031-14-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to live patching.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/livepatch.h | 6 +++---
 xen/include/xen/livepatch.h          | 6 +++---
 xen/include/xen/livepatch_elf.h      | 6 +++---
 xen/include/xen/livepatch_payload.h  | 6 +++---
 4 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/include/asm/livepatch.h b/xen/arch/x86/include/asm/livepatch.h
index 00aefd2d63..7f838f418d 100644
--- a/xen/arch/x86/include/asm/livepatch.h
+++ b/xen/arch/x86/include/asm/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_X86_LIVEPATCH_H__
-#define __XEN_X86_LIVEPATCH_H__
+#ifndef ASM__X86__LIVEPATCH_H
+#define ASM__X86__LIVEPATCH_H
 
 #include <xen/sizes.h> /* For SZ_* macros. */
 
@@ -12,7 +12,7 @@
 #define ARCH_LIVEPATCH_RANGE SZ_2G
 #define LIVEPATCH_FEATURE    X86_FEATURE_ALWAYS
 
-#endif /* __XEN_X86_LIVEPATCH_H__ */
+#endif /* ASM__X86__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch.h b/xen/include/xen/livepatch.h
index d074a5bebe..69220ece21 100644
--- a/xen/include/xen/livepatch.h
+++ b/xen/include/xen/livepatch.h
@@ -3,8 +3,8 @@
  *
  */
 
-#ifndef __XEN_LIVEPATCH_H__
-#define __XEN_LIVEPATCH_H__
+#ifndef XEN__LIVEPATCH_H
+#define XEN__LIVEPATCH_H
 
 struct livepatch_elf;
 struct livepatch_elf_sec;
@@ -167,7 +167,7 @@ static inline bool is_patch(const void *addr)
 }
 #endif /* CONFIG_LIVEPATCH */
 
-#endif /* __XEN_LIVEPATCH_H__ */
+#endif /* XEN__LIVEPATCH_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch_elf.h b/xen/include/xen/livepatch_elf.h
index 842111e145..bb221aeaa0 100644
--- a/xen/include/xen/livepatch_elf.h
+++ b/xen/include/xen/livepatch_elf.h
@@ -2,8 +2,8 @@
  * Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
 
-#ifndef __XEN_LIVEPATCH_ELF_H__
-#define __XEN_LIVEPATCH_ELF_H__
+#ifndef XEN__LIVEPATCH_ELF_H
+#define XEN__LIVEPATCH_ELF_H
 
 #include <xen/types.h>
 #include <xen/elfstructs.h>
@@ -52,7 +52,7 @@ static inline bool livepatch_elf_ignore_section(const Elf_Shdr *sec)
 {
     return !(sec->sh_flags & SHF_ALLOC);
 }
-#endif /* __XEN_LIVEPATCH_ELF_H__ */
+#endif /* XEN__LIVEPATCH_ELF_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/livepatch_payload.h b/xen/include/xen/livepatch_payload.h
index c6dc7cb5fa..f35d8b9d83 100644
--- a/xen/include/xen/livepatch_payload.h
+++ b/xen/include/xen/livepatch_payload.h
@@ -2,8 +2,8 @@
  * Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
 
-#ifndef __XEN_LIVEPATCH_PAYLOAD_H__
-#define __XEN_LIVEPATCH_PAYLOAD_H__
+#ifndef XEN__LIVEPATCH_PAYLOAD_H
+#define XEN__LIVEPATCH_PAYLOAD_H
 #include <xen/virtual_region.h>
 
 /* To contain the ELF Note header. */
@@ -140,7 +140,7 @@ struct payload {
     livepatch_actioncall_t *__attribute__((weak, used)) \
         const livepatch_revert_data_##_fn __section(".livepatch.hooks.revert") = _fn;
 
-#endif /* __XEN_LIVEPATCH_PAYLOAD_H__ */
+#endif /* XEN__LIVEPATCH_PAYLOAD_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810096.1222816 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVP-0008Tm-Hd; Fri, 04 Oct 2024 08:17:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810096.1222816; Fri, 04 Oct 2024 08: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 1swdVP-0008Ra-1d; Fri, 04 Oct 2024 08:17:43 +0000
Received: by outflank-mailman (input) for mailman id 810096;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVL-0005Vm-SQ
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:39 +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 1ec93ce4-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:39 +0200 (CEST)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2fabb837ddbso27407841fa.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:39 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ec93ce4-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029859; x=1728634659; 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=mwL1uhJmN7KffHDYwBpDV67hA/1FIcvi3fYvuqYkXWg=;
        b=QvTFIBySjIHElGEs46DN3Axi783Y8KEchjkS//cuvo2JSXN3q8oj/8+fndnaIDnEHj
         L3WgfJEGRiWgg9UoYCoHlM9+aIliW3XnKGwVluJh+MjP4sgTheyssHUKo4WeKVP8tFA6
         OZcVXbKeYJY+BQB1YWfhYTcjDczfbNobyDSS4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029859; x=1728634659;
        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=mwL1uhJmN7KffHDYwBpDV67hA/1FIcvi3fYvuqYkXWg=;
        b=qWZAf20wG9TN8NITnnRsiRe5TqysXmBIB1LetQKRrXYs596xysI8MIMk2XZ1NDRg+z
         ygrN6b8itxkjAOwo8ULh1b0t7Nj9K98FBLx7vqM6afNh9RjR7ys4jcVWk14o/Hhih7mG
         2KLB0c6biw+wX9Y7BHGMEL4PwBAul7L7RfCM2wutyN2X2X4TUWikl8fgnO0ej+lntz/5
         CV+v2YrHJY94r7/E4v5VnXi42FJoCDMK9SGQpMN2Rp1Hk2Nzm0PS7n2JM6wNe7fmsR/6
         xp5SW2iaL03F22RzImygYKk9G844/vtDXc1UxkT3RS8pmhHSiPYSZ9OxDt9aYlA9knqr
         8NxQ==
X-Gm-Message-State: AOJu0Yw6qKL1Clx/4VRz37U3yLfB5vhx27DukxueFTdgzbBRYtSGNbMz
	3PkQK9Xo1n3a6Nv7mIFVKv072UTVfg7PCGapscskWaj2S7Ct9f3NGZDuaT+SqZR7KX82g9AKO/v
	P
X-Google-Smtp-Source: AGHT+IFQXJm+VpGpBCeLngcFnt5tihTs8eI9yBxFhgHfLWlPIRs5tn6CeveFOaWvYQ+McywChJ8EYg==
X-Received: by 2002:a05:651c:b0b:b0:2fa:f5f9:4194 with SMTP id 38308e7fff4ca-2faf5f94416mr8245731fa.27.1728029858634;
        Fri, 04 Oct 2024 01:17:38 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Dario Faggioli <dfaggioli@suse.com>,
	Juergen Gross <jgross@suse.com>,
	George Dunlap <gwd@xenproject.org>
Subject: [PATCH v3 16/19] xen: Update header guards - Scheduling
Date: Fri,  4 Oct 2024 09:17:10 +0100
Message-Id: <20241004081713.749031-17-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to scheduling.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/common/sched/private.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/common/sched/private.h b/xen/common/sched/private.h
index c0e7c96d24..02ab905412 100644
--- a/xen/common/sched/private.h
+++ b/xen/common/sched/private.h
@@ -5,8 +5,8 @@
  * Portions by Mark Williamson are (C) 2004 Intel Research Cambridge
  */
 
-#ifndef __XEN_SCHED_IF_H__
-#define __XEN_SCHED_IF_H__
+#ifndef COMMON__SCHED__PRIVATE_H
+#define COMMON__SCHED__PRIVATE_H
 
 #include <xen/err.h>
 #include <xen/list.h>
@@ -666,4 +666,4 @@ void cpupool_put(struct cpupool *pool);
 int cpupool_add_domain(struct domain *d, unsigned int poolid);
 void cpupool_rm_domain(struct domain *d);
 
-#endif /* __XEN_SCHED_IF_H__ */
+#endif /* COMMON__SCHED__PRIVATE_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810097.1222825 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVQ-0000G9-QE; Fri, 04 Oct 2024 08:17:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810097.1222825; Fri, 04 Oct 2024 08:17: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 1swdVQ-0000Bz-1X; Fri, 04 Oct 2024 08:17:44 +0000
Received: by outflank-mailman (input) for mailman id 810097;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVL-0005Kj-QM
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:39 +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 1dd9d3a7-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:37 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c88c9e45c2so5147371a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1dd9d3a7-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029857; x=1728634657; 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=uNiKQHMX+Ojk5dsTBVr2+d/BQL/jwshybvgP1Qfqj4w=;
        b=NZ1y1h8y+6CMHy/Y7xZgF+0UHKc77O7QeIOcZ0OSGwXiLwBIB1B240CgvU/Hmt8Hxj
         QbZheOO0lfjsnvS0mrURttClARWlDjlA49h1PptbNsyK54UcqifD6tPL58Kc1ZWir5Jt
         yi/6S8PZIiPlQ7on3QLTqZOCA0lCkjayAigg4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029857; x=1728634657;
        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=uNiKQHMX+Ojk5dsTBVr2+d/BQL/jwshybvgP1Qfqj4w=;
        b=liGeCv48sydUDB1PEraf41ucCDI4saSrDx8MZ0Ah8p3NruHgCNRB1KBz/28eTLA8AC
         FzRqxlqHfpzD/ygqRZXvHMsuzQIwo86W04Z0mIhSSe8yhrmSQFX3yrcI8OSQ9xRTMjyo
         YUZR9XM517+/sLZvuFasEfF7FzokilTFJlG9/nZEdWUsAFSrzHgAW1ILqGNqHwrjBrB+
         PWU8oktSMU+E969Nn3PCckI5HVuhPgup9FgKSBvJ32IkQkVG7DVc8ejqaqnfi0RkFH+A
         yEVBt3Yy6MGPmRAu8DBUbH7rVgxM6lXkBwcjr72Fw8ZFy4d8bYsQG8s8rSe5subNNwp7
         EbGw==
X-Gm-Message-State: AOJu0Yysc5gItJkrXYicC8GDjawog8E/GteLChZHBXYgY6XPBskZ/0Ei
	D7YF3C4PYP8a//Ucu3FYqCktwYHejiGIt1LDXASI+smI4zwbnZWt0scSwEff6T2xW4ViZS0qmaI
	m
X-Google-Smtp-Source: AGHT+IGl5CvtnUUK0P1WewqYO8iF8LUBSYh8ff2LeW6QAETqw7bISw8V+8YHNAIQYppwvTWBmC7O/g==
X-Received: by 2002:a17:906:6a03:b0:a8d:63b5:e795 with SMTP id a640c23a62f3a-a990a034eaemr551518866b.3.1728029856940;
        Fri, 04 Oct 2024 01:17:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH v3 14/19] xen: Update header guards - PPC 64
Date: Fri,  4 Oct 2024 09:17:08 +0100
Message-Id: <20241004081713.749031-15-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to PPC 64.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/ppc/include/asm/asm-defns.h     | 6 +++---
 xen/arch/ppc/include/asm/atomic.h        | 6 +++---
 xen/arch/ppc/include/asm/bitops.h        | 6 +++---
 xen/arch/ppc/include/asm/boot.h          | 6 +++---
 xen/arch/ppc/include/asm/bug.h           | 6 +++---
 xen/arch/ppc/include/asm/byteorder.h     | 6 +++---
 xen/arch/ppc/include/asm/cache.h         | 6 +++---
 xen/arch/ppc/include/asm/config.h        | 6 +++---
 xen/arch/ppc/include/asm/cpufeature.h    | 6 +++---
 xen/arch/ppc/include/asm/current.h       | 6 +++---
 xen/arch/ppc/include/asm/domain.h        | 6 +++---
 xen/arch/ppc/include/asm/early_printk.h  | 6 +++---
 xen/arch/ppc/include/asm/event.h         | 6 +++---
 xen/arch/ppc/include/asm/flushtlb.h      | 6 +++---
 xen/arch/ppc/include/asm/guest_access.h  | 6 +++---
 xen/arch/ppc/include/asm/guest_atomics.h | 6 +++---
 xen/arch/ppc/include/asm/io.h            | 6 +++---
 xen/arch/ppc/include/asm/iommu.h         | 6 +++---
 xen/arch/ppc/include/asm/irq.h           | 6 +++---
 xen/arch/ppc/include/asm/memory.h        | 4 ++--
 xen/arch/ppc/include/asm/mm.h            | 6 +++---
 xen/arch/ppc/include/asm/monitor.h       | 6 +++---
 xen/arch/ppc/include/asm/msr.h           | 6 +++---
 xen/arch/ppc/include/asm/nospec.h        | 6 +++---
 xen/arch/ppc/include/asm/opal-api.h      | 6 +++---
 xen/arch/ppc/include/asm/p2m.h           | 6 +++---
 xen/arch/ppc/include/asm/page-bits.h     | 6 +++---
 xen/arch/ppc/include/asm/page.h          | 6 +++---
 xen/arch/ppc/include/asm/processor.h     | 6 +++---
 xen/arch/ppc/include/asm/regs.h          | 6 +++---
 xen/arch/ppc/include/asm/setup.h         | 6 +++---
 xen/arch/ppc/include/asm/smp.h           | 4 ++--
 xen/arch/ppc/include/asm/spinlock.h      | 6 +++---
 xen/arch/ppc/include/asm/string.h        | 6 +++---
 xen/arch/ppc/include/asm/system.h        | 4 ++--
 xen/arch/ppc/include/asm/time.h          | 6 +++---
 xen/arch/ppc/include/asm/types.h         | 6 +++---
 37 files changed, 108 insertions(+), 108 deletions(-)

diff --git a/xen/arch/ppc/include/asm/asm-defns.h b/xen/arch/ppc/include/asm/asm-defns.h
index e46f0785ad..aaa6dc6152 100644
--- a/xen/arch/ppc/include/asm/asm-defns.h
+++ b/xen/arch/ppc/include/asm/asm-defns.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef _ASM_PPC_ASM_DEFNS_H
-#define _ASM_PPC_ASM_DEFNS_H
+#ifndef ASM__PPC__ASM_DEFNS_H
+#define ASM__PPC__ASM_DEFNS_H
 
 #include <asm/asm-offsets.h>
 #include <xen/linkage.h>
@@ -75,4 +75,4 @@ name:                                                                       \
 #define SAVE_NVGPRS(base)           SAVE_GPRS(14, 31, base)
 #define REST_NVGPRS(base)           REST_GPRS(14, 31, base)
 
-#endif /* _ASM_PPC_ASM_DEFNS_H */
+#endif /* ASM__PPC__ASM_DEFNS_H */
diff --git a/xen/arch/ppc/include/asm/atomic.h b/xen/arch/ppc/include/asm/atomic.h
index fe778579fb..5fe662ff59 100644
--- a/xen/arch/ppc/include/asm/atomic.h
+++ b/xen/arch/ppc/include/asm/atomic.h
@@ -7,8 +7,8 @@
  * Copyright Raptor Engineering LLC
  */
 
-#ifndef _ASM_PPC64_ATOMIC_H_
-#define _ASM_PPC64_ATOMIC_H_
+#ifndef ASM__PPC__ATOMIC_H
+#define ASM__PPC__ATOMIC_H
 
 #include <xen/atomic.h>
 
@@ -382,4 +382,4 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
     return __atomic_add_unless(v, a, u);
 }
 
-#endif /* _ASM_PPC64_ATOMIC_H_ */
+#endif /* ASM__PPC__ATOMIC_H */
diff --git a/xen/arch/ppc/include/asm/bitops.h b/xen/arch/ppc/include/asm/bitops.h
index c942e9432e..2c10a016b7 100644
--- a/xen/arch/ppc/include/asm/bitops.h
+++ b/xen/arch/ppc/include/asm/bitops.h
@@ -7,8 +7,8 @@
  * Reed, Pat McCarthy, Peter Bergner, Anton Blanchard.  They
  * originally took it from the ppc32 code.
  */
-#ifndef _ASM_PPC_BITOPS_H
-#define _ASM_PPC_BITOPS_H
+#ifndef ASM__PPC__BITOPS_H
+#define ASM__PPC__BITOPS_H
 
 #include <asm/memory.h>
 
@@ -126,4 +126,4 @@ static inline int test_and_set_bit(unsigned int nr, volatile void *addr)
 
 #define arch_hweightl(x) __builtin_popcountl(x)
 
-#endif /* _ASM_PPC_BITOPS_H */
+#endif /* ASM__PPC__BITOPS_H */
diff --git a/xen/arch/ppc/include/asm/boot.h b/xen/arch/ppc/include/asm/boot.h
index d62c3ff6e0..7618533712 100644
--- a/xen/arch/ppc/include/asm/boot.h
+++ b/xen/arch/ppc/include/asm/boot.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_BOOT_H
-#define _ASM_PPC_BOOT_H
+#ifndef ASM__PPC__BOOT_H
+#define ASM__PPC__BOOT_H
 
 #include <xen/types.h>
 
@@ -15,4 +15,4 @@ struct opal {
 
 void boot_opal_init(const void *fdt);
 
-#endif /* _ASM_PPC_BOOT_H */
+#endif /* ASM__PPC__BOOT_H */
diff --git a/xen/arch/ppc/include/asm/bug.h b/xen/arch/ppc/include/asm/bug.h
index 35d4568402..019565b0ed 100644
--- a/xen/arch/ppc/include/asm/bug.h
+++ b/xen/arch/ppc/include/asm/bug.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_BUG_H
-#define _ASM_PPC_BUG_H
+#ifndef ASM__PPC__BUG_H
+#define ASM__PPC__BUG_H
 
 #include <xen/stringify.h>
 #include <asm/processor.h>
@@ -24,4 +24,4 @@
 /* TODO: implement this properly */
 #define BUG_FRAME(type, line, ptr, second_frame, msg) do { } while (0)
 
-#endif /* _ASM_PPC_BUG_H */
+#endif /* ASM__PPC__BUG_H */
diff --git a/xen/arch/ppc/include/asm/byteorder.h b/xen/arch/ppc/include/asm/byteorder.h
index 2b5f6b9f63..7a13366e45 100644
--- a/xen/arch/ppc/include/asm/byteorder.h
+++ b/xen/arch/ppc/include/asm/byteorder.h
@@ -1,5 +1,5 @@
-#ifndef _ASM_PPC_BYTEORDER_H
-#define _ASM_PPC_BYTEORDER_H
+#ifndef ASM__PPC__BYTEORDER_H
+#define ASM__PPC__BYTEORDER_H
 
 #define __arch__swab16 __builtin_bswap16
 #define __arch__swab32 __builtin_bswap32
@@ -9,4 +9,4 @@
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* _ASM_PPC_BYTEORDER_H */
+#endif /* ASM__PPC__BYTEORDER_H */
diff --git a/xen/arch/ppc/include/asm/cache.h b/xen/arch/ppc/include/asm/cache.h
index 8a0a6b7b17..561d02e232 100644
--- a/xen/arch/ppc/include/asm/cache.h
+++ b/xen/arch/ppc/include/asm/cache.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_CACHE_H
-#define _ASM_PPC_CACHE_H
+#ifndef ASM__PPC__CACHE_H
+#define ASM__PPC__CACHE_H
 
-#endif /* _ASM_PPC_CACHE_H */
+#endif /* ASM__PPC__CACHE_H */
diff --git a/xen/arch/ppc/include/asm/config.h b/xen/arch/ppc/include/asm/config.h
index 148fb3074d..e472a54689 100644
--- a/xen/arch/ppc/include/asm/config.h
+++ b/xen/arch/ppc/include/asm/config.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __PPC_CONFIG_H__
-#define __PPC_CONFIG_H__
+#ifndef ASM__PPC__CONFIG_H
+#define ASM__PPC__CONFIG_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -58,7 +58,7 @@
 /* ELFv2 ABI mandates 16 byte alignment */
 #define STACK_ALIGN 16
 
-#endif /* __PPC_CONFIG_H__ */
+#endif /* ASM__PPC__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/ppc/include/asm/cpufeature.h b/xen/arch/ppc/include/asm/cpufeature.h
index 1c5946512b..3555a3257f 100644
--- a/xen/arch/ppc/include/asm/cpufeature.h
+++ b/xen/arch/ppc/include/asm/cpufeature.h
@@ -1,10 +1,10 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_CPUFEATURE_H__
-#define __ASM_PPC_CPUFEATURE_H__
+#ifndef ASM__PPC__CPUFEATURE_H
+#define ASM__PPC__CPUFEATURE_H
 
 static inline int cpu_nr_siblings(unsigned int cpu)
 {
     return 1;
 }
 
-#endif /* __ASM_PPC_CPUFEATURE_H__ */
+#endif /* ASM__PPC__CPUFEATURE_H */
diff --git a/xen/arch/ppc/include/asm/current.h b/xen/arch/ppc/include/asm/current.h
index e329a548e6..9400c62fcc 100644
--- a/xen/arch/ppc/include/asm/current.h
+++ b/xen/arch/ppc/include/asm/current.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_CURRENT_H__
-#define __ASM_PPC_CURRENT_H__
+#ifndef ASM__PPC__CURRENT_H
+#define ASM__PPC__CURRENT_H
 
 #include <xen/percpu.h>
 
@@ -46,4 +46,4 @@ static inline struct cpu_info *get_cpu_info(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_PPC_CURRENT_H__ */
+#endif /* ASM__PPC__CURRENT_H */
diff --git a/xen/arch/ppc/include/asm/domain.h b/xen/arch/ppc/include/asm/domain.h
index 3a447272c6..66261bdf5a 100644
--- a/xen/arch/ppc/include/asm/domain.h
+++ b/xen/arch/ppc/include/asm/domain.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_DOMAIN_H__
-#define __ASM_PPC_DOMAIN_H__
+#ifndef ASM__PPC__DOMAIN_H
+#define ASM__PPC__DOMAIN_H
 
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
@@ -42,4 +42,4 @@ static inline void update_guest_memory_policy(struct vcpu *v,
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
-#endif /* __ASM_PPC_DOMAIN_H__ */
+#endif /* ASM__PPC__DOMAIN_H */
diff --git a/xen/arch/ppc/include/asm/early_printk.h b/xen/arch/ppc/include/asm/early_printk.h
index d1d8b416f4..61bc48921a 100644
--- a/xen/arch/ppc/include/asm/early_printk.h
+++ b/xen/arch/ppc/include/asm/early_printk.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_EARLY_PRINTK_H
-#define _ASM_PPC_EARLY_PRINTK_H
+#ifndef ASM__PPC__EARLY_PRINTK_H
+#define ASM__PPC__EARLY_PRINTK_H
 
 #include <xen/early_printk.h>
 
@@ -12,4 +12,4 @@ static inline void early_printk_init(void (*putchar)(char)) {}
 static inline void early_printk(const char *s) {}
 #endif
 
-#endif /* _ASM_PPC_EARLY_PRINTK_H */
+#endif /* ASM__PPC__EARLY_PRINTK_H */
diff --git a/xen/arch/ppc/include/asm/event.h b/xen/arch/ppc/include/asm/event.h
index 1b95ee4f61..10f3eaa5fa 100644
--- a/xen/arch/ppc/include/asm/event.h
+++ b/xen/arch/ppc/include/asm/event.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_EVENT_H__
-#define __ASM_PPC_EVENT_H__
+#ifndef ASM__PPC__EVENT_H
+#define ASM__PPC__EVENT_H
 
 #include <xen/lib.h>
 
@@ -33,4 +33,4 @@ static inline void local_event_delivery_enable(void)
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_PPC_EVENT_H__ */
+#endif /* ASM__PPC__EVENT_H */
diff --git a/xen/arch/ppc/include/asm/flushtlb.h b/xen/arch/ppc/include/asm/flushtlb.h
index afcb740783..39a8f04695 100644
--- a/xen/arch/ppc/include/asm/flushtlb.h
+++ b/xen/arch/ppc/include/asm/flushtlb.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_FLUSHTLB_H__
-#define __ASM_PPC_FLUSHTLB_H__
+#ifndef ASM__PPC__FLUSHTLB_H
+#define ASM__PPC__FLUSHTLB_H
 
 #include <xen/cpumask.h>
 
@@ -21,4 +21,4 @@ static inline void page_set_tlbflush_timestamp(struct page_info *page)
 /* Flush specified CPUs' TLBs */
 void arch_flush_tlb_mask(const cpumask_t *mask);
 
-#endif /* __ASM_PPC_FLUSHTLB_H__ */
+#endif /* ASM__PPC__FLUSHTLB_H */
diff --git a/xen/arch/ppc/include/asm/guest_access.h b/xen/arch/ppc/include/asm/guest_access.h
index 6546931911..a4531b0e19 100644
--- a/xen/arch/ppc/include/asm/guest_access.h
+++ b/xen/arch/ppc/include/asm/guest_access.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_GUEST_ACCESS_H__
-#define __ASM_PPC_GUEST_ACCESS_H__
+#ifndef ASM__PPC__GUEST_ACCESS_H
+#define ASM__PPC__GUEST_ACCESS_H
 
 #include <xen/mm.h>
 
@@ -65,4 +65,4 @@ static inline int access_guest_memory_by_gpa(
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_PPC_GUEST_ACCESS_H__ */
+#endif /* ASM__PPC__GUEST_ACCESS_H */
diff --git a/xen/arch/ppc/include/asm/guest_atomics.h b/xen/arch/ppc/include/asm/guest_atomics.h
index 1190e10bbb..62b229c2dc 100644
--- a/xen/arch/ppc/include/asm/guest_atomics.h
+++ b/xen/arch/ppc/include/asm/guest_atomics.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_GUEST_ATOMICS_H__
-#define __ASM_PPC_GUEST_ATOMICS_H__
+#ifndef ASM__PPC__GUEST_ATOMICS_H
+#define ASM__PPC__GUEST_ATOMICS_H
 
 #include <xen/lib.h>
 
@@ -20,4 +20,4 @@
 #define guest_test_and_clear_bit(d, nr, p)  unimplemented_guest_bit_op(d, nr, p)
 #define guest_test_and_change_bit(d, nr, p) unimplemented_guest_bit_op(d, nr, p)
 
-#endif /* __ASM_PPC_GUEST_ATOMICS_H__ */
+#endif /* ASM__PPC__GUEST_ATOMICS_H */
diff --git a/xen/arch/ppc/include/asm/io.h b/xen/arch/ppc/include/asm/io.h
index 85b5b27157..5135678f61 100644
--- a/xen/arch/ppc/include/asm/io.h
+++ b/xen/arch/ppc/include/asm/io.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IO_H__
-#define __ASM_PPC_IO_H__
+#ifndef ASM__PPC__IO_H
+#define ASM__PPC__IO_H
 
 #include <xen/lib.h>
 
@@ -13,4 +13,4 @@
 #define writew(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 #define writel(v,c)     ({ (void)(v); (void)(c); BUG_ON("unimplemented"); })
 
-#endif /* __ASM_PPC_IO_H__ */
+#endif /* ASM__PPC__IO_H */
diff --git a/xen/arch/ppc/include/asm/iommu.h b/xen/arch/ppc/include/asm/iommu.h
index 024ead3473..c28c9897f9 100644
--- a/xen/arch/ppc/include/asm/iommu.h
+++ b/xen/arch/ppc/include/asm/iommu.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IOMMU_H__
-#define __ASM_PPC_IOMMU_H__
+#ifndef ASM__PPC__IOMMU_H
+#define ASM__PPC__IOMMU_H
 
 struct arch_iommu {
 };
 
-#endif /* __ASM_PPC_IOMMU_H__ */
+#endif /* ASM__PPC__IOMMU_H */
diff --git a/xen/arch/ppc/include/asm/irq.h b/xen/arch/ppc/include/asm/irq.h
index 5c37d0cf25..ceddf645ed 100644
--- a/xen/arch/ppc/include/asm/irq.h
+++ b/xen/arch/ppc/include/asm/irq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_IRQ_H__
-#define __ASM_PPC_IRQ_H__
+#ifndef ASM__PPC__IRQ_H
+#define ASM__PPC__IRQ_H
 
 #include <xen/lib.h>
 #include <xen/device_tree.h>
@@ -30,4 +30,4 @@ static inline int platform_get_irq(const struct dt_device_node *device, int inde
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_PPC_IRQ_H__ */
+#endif /* ASM__PPC__IRQ_H */
diff --git a/xen/arch/ppc/include/asm/memory.h b/xen/arch/ppc/include/asm/memory.h
index 57310eb690..9ddf9f8a50 100644
--- a/xen/arch/ppc/include/asm/memory.h
+++ b/xen/arch/ppc/include/asm/memory.h
@@ -5,8 +5,8 @@
  * Authors: Jimi Xenidis <jimix@watson.ibm.com>
  */
 
-#ifndef _ASM_MEMORY_H_
-#define _ASM_MEMORY_H_
+#ifndef ASM__PPC__MEMORY_H
+#define ASM__PPC__MEMORY_H
 
 #define PPC_ATOMIC_ENTRY_BARRIER "sync\n"
 #define PPC_ATOMIC_EXIT_BARRIER  "sync\n"
diff --git a/xen/arch/ppc/include/asm/mm.h b/xen/arch/ppc/include/asm/mm.h
index a433936076..acc2be8eed 100644
--- a/xen/arch/ppc/include/asm/mm.h
+++ b/xen/arch/ppc/include/asm/mm.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_MM_H
-#define _ASM_PPC_MM_H
+#ifndef ASM__PPC__MM_H
+#define ASM__PPC__MM_H
 
 #include <public/xen.h>
 #include <xen/pdx.h>
@@ -256,4 +256,4 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return true;
 }
 
-#endif /* _ASM_PPC_MM_H */
+#endif /* ASM__PPC__MM_H */
diff --git a/xen/arch/ppc/include/asm/monitor.h b/xen/arch/ppc/include/asm/monitor.h
index 89000dacc6..8fe1f081bc 100644
--- a/xen/arch/ppc/include/asm/monitor.h
+++ b/xen/arch/ppc/include/asm/monitor.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Derived from xen/arch/arm/include/asm/monitor.h */
-#ifndef __ASM_PPC_MONITOR_H__
-#define __ASM_PPC_MONITOR_H__
+#ifndef ASM__PPC__MONITOR_H
+#define ASM__PPC__MONITOR_H
 
 #include <public/domctl.h>
 #include <xen/errno.h>
@@ -14,4 +14,4 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
     return 0;
 }
 
-#endif /* __ASM_PPC_MONITOR_H__ */
+#endif /* ASM__PPC__MONITOR_H */
diff --git a/xen/arch/ppc/include/asm/msr.h b/xen/arch/ppc/include/asm/msr.h
index 144511e5c3..796158c6f9 100644
--- a/xen/arch/ppc/include/asm/msr.h
+++ b/xen/arch/ppc/include/asm/msr.h
@@ -7,8 +7,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_PPC_MSR_H
-#define _ASM_PPC_MSR_H
+#ifndef ASM__PPC__MSR_H
+#define ASM__PPC__MSR_H
 
 #include <xen/const.h>
 
@@ -48,4 +48,4 @@
 #define MSR_TRAP_NEXT   _AC(0x0000000000010000, ULL) /* PC is next instruction */
 #define MSR_TRAP_BITS  (MSR_TRAP_FE|MSR_TRAP_IOP|MSR_TRAP_PRIV|MSR_TRAP)
 
-#endif /* _ASM_PPC_MSR_H */
+#endif /* ASM__PPC__MSR_H */
diff --git a/xen/arch/ppc/include/asm/nospec.h b/xen/arch/ppc/include/asm/nospec.h
index b97322e48d..8f5be95ddd 100644
--- a/xen/arch/ppc/include/asm/nospec.h
+++ b/xen/arch/ppc/include/asm/nospec.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* From arch/arm/include/asm/nospec.h. */
-#ifndef __ASM_PPC_NOSPEC_H__
-#define __ASM_PPC_NOSPEC_H__
+#ifndef ASM__PPC__NOSPEC_H
+#define ASM__PPC__NOSPEC_H
 
 static inline bool evaluate_nospec(bool condition)
 {
@@ -12,4 +12,4 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* __ASM_PPC_NOSPEC_H__ */
+#endif /* ASM__PPC__NOSPEC_H */
diff --git a/xen/arch/ppc/include/asm/opal-api.h b/xen/arch/ppc/include/asm/opal-api.h
index 8790246f48..2507f6c96a 100644
--- a/xen/arch/ppc/include/asm/opal-api.h
+++ b/xen/arch/ppc/include/asm/opal-api.h
@@ -5,8 +5,8 @@
  * Copyright 2011-2015 IBM Corp.
  */
 
-#ifndef __OPAL_API_H
-#define __OPAL_API_H
+#ifndef ASM__PPC__OPAL_API_H
+#define ASM__PPC__OPAL_API_H
 
 /****** OPAL APIs ******/
 
@@ -1187,4 +1187,4 @@ struct opal_mpipl_fadump {
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __OPAL_API_H */
+#endif /* ASM__PPC__OPAL_API_H */
diff --git a/xen/arch/ppc/include/asm/p2m.h b/xen/arch/ppc/include/asm/p2m.h
index f144ef8e1a..9649d24621 100644
--- a/xen/arch/ppc/include/asm/p2m.h
+++ b/xen/arch/ppc/include/asm/p2m.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_PPC_P2M_H__
-#define __ASM_PPC_P2M_H__
+#ifndef ASM__PPC__P2M_H
+#define ASM__PPC__P2M_H
 
 #include <asm/page-bits.h>
 
@@ -93,4 +93,4 @@ static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
     /* Not supported on PPC. */
 }
 
-#endif /* __ASM_PPC_P2M_H__ */
+#endif /* ASM__PPC__P2M_H */
diff --git a/xen/arch/ppc/include/asm/page-bits.h b/xen/arch/ppc/include/asm/page-bits.h
index 0286177520..07c7314dac 100644
--- a/xen/arch/ppc/include/asm/page-bits.h
+++ b/xen/arch/ppc/include/asm/page-bits.h
@@ -1,8 +1,8 @@
-#ifndef __PPC_PAGE_BITS_H__
-#define __PPC_PAGE_BITS_H__
+#ifndef ASM__PPC__PAGE_BITS_H
+#define ASM__PPC__PAGE_BITS_H
 
 #define PAGE_SHIFT              16 /* 64 KiB Pages */
 #define PADDR_BITS              53
 #define VADDR_BITS              52
 
-#endif /* __PPC_PAGE_BITS_H__ */
+#endif /* ASM__PPC__PAGE_BITS_H */
diff --git a/xen/arch/ppc/include/asm/page.h b/xen/arch/ppc/include/asm/page.h
index 6d4cd2611c..5bca13079e 100644
--- a/xen/arch/ppc/include/asm/page.h
+++ b/xen/arch/ppc/include/asm/page.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef _ASM_PPC_PAGE_H
-#define _ASM_PPC_PAGE_H
+#ifndef ASM__PPC__PAGE_H
+#define ASM__PPC__PAGE_H
 
 #include <xen/bitops.h>
 #include <xen/types.h>
@@ -196,4 +196,4 @@ static inline void flush_page_to_ram(unsigned long mfn, bool sync_icache)
     BUG_ON("unimplemented");
 }
 
-#endif /* _ASM_PPC_PAGE_H */
+#endif /* ASM__PPC__PAGE_H */
diff --git a/xen/arch/ppc/include/asm/processor.h b/xen/arch/ppc/include/asm/processor.h
index a01b62b8a4..e60278d112 100644
--- a/xen/arch/ppc/include/asm/processor.h
+++ b/xen/arch/ppc/include/asm/processor.h
@@ -9,8 +9,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_PPC_PROCESSOR_H
-#define _ASM_PPC_PROCESSOR_H
+#ifndef ASM__PPC__PROCESSOR_H
+#define ASM__PPC__PROCESSOR_H
 
 #define IOBMP_BYTES          8192
 #define IOBMP_INVALID_OFFSET 0x8000
@@ -221,4 +221,4 @@ static inline void noreturn die(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_PPC_PROCESSOR_H */
+#endif /* ASM__PPC__PROCESSOR_H */
diff --git a/xen/arch/ppc/include/asm/regs.h b/xen/arch/ppc/include/asm/regs.h
index cbf1a9c8e4..827eb48ca1 100644
--- a/xen/arch/ppc/include/asm/regs.h
+++ b/xen/arch/ppc/include/asm/regs.h
@@ -6,8 +6,8 @@
  *          Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
  */
 
-#ifndef _ASM_REG_DEFS_H_
-#define _ASM_REG_DEFS_H_
+#ifndef ASM__PPC__REGS_H
+#define ASM__PPC__REGS_H
 
 /* Special Purpose Registers */
 #define SPRN_VRSAVE 256
@@ -121,4 +121,4 @@
 #define   LPCR_UPRT		_AC(0x0000000000400000, UL)      /* Use Process Table (ISA 3) */
 #define   LPCR_HR		_AC(0x0000000000100000, UL)
 
-#endif /* _ASM_REG_DEFS_H_ */
+#endif /* ASM__PPC__REGS_H */
diff --git a/xen/arch/ppc/include/asm/setup.h b/xen/arch/ppc/include/asm/setup.h
index e4f64879b6..34586d0965 100644
--- a/xen/arch/ppc/include/asm/setup.h
+++ b/xen/arch/ppc/include/asm/setup.h
@@ -1,6 +1,6 @@
-#ifndef __ASM_PPC_SETUP_H__
-#define __ASM_PPC_SETUP_H__
+#ifndef ASM__PPC__SETUP_H
+#define ASM__PPC__SETUP_H
 
 #define max_init_domid (0)
 
-#endif /* __ASM_PPC_SETUP_H__ */
+#endif /* ASM__PPC__SETUP_H */
diff --git a/xen/arch/ppc/include/asm/smp.h b/xen/arch/ppc/include/asm/smp.h
index 7b1517ce18..fb61b8daa4 100644
--- a/xen/arch/ppc/include/asm/smp.h
+++ b/xen/arch/ppc/include/asm/smp.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SMP_H
-#define __ASM_SMP_H
+#ifndef ASM__PPC__SMP_H
+#define ASM__PPC__SMP_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
diff --git a/xen/arch/ppc/include/asm/spinlock.h b/xen/arch/ppc/include/asm/spinlock.h
index 4bdb4b1e98..890e48c6e6 100644
--- a/xen/arch/ppc/include/asm/spinlock.h
+++ b/xen/arch/ppc/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_SPINLOCK_H
-#define __ASM_SPINLOCK_H
+#ifndef ASM__PPC__SPINLOCK_H
+#define ASM__PPC__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_SPINLOCK_H */
+#endif /* ASM__PPC__SPINLOCK_H */
diff --git a/xen/arch/ppc/include/asm/string.h b/xen/arch/ppc/include/asm/string.h
index 7a420e05e4..cf65ca1c73 100644
--- a/xen/arch/ppc/include/asm/string.h
+++ b/xen/arch/ppc/include/asm/string.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_PPC_STRING_H
-#define _ASM_PPC_STRING_H
+#ifndef ASM__PPC__STRING_H
+#define ASM__PPC__STRING_H
 
-#endif /* _ASM_PPC_STRING_H */
+#endif /* ASM__PPC__STRING_H */
diff --git a/xen/arch/ppc/include/asm/system.h b/xen/arch/ppc/include/asm/system.h
index a17072bafd..e69a237d5e 100644
--- a/xen/arch/ppc/include/asm/system.h
+++ b/xen/arch/ppc/include/asm/system.h
@@ -7,8 +7,8 @@
  *          Shawn Anastasio <sanastasio@raptorengineering.com>
  */
 
-#ifndef _ASM_SYSTEM_H_
-#define _ASM_SYSTEM_H_
+#ifndef ASM__PPC__SYSTEM_H
+#define ASM__PPC__SYSTEM_H
 
 #include <xen/lib.h>
 #include <asm/memory.h>
diff --git a/xen/arch/ppc/include/asm/time.h b/xen/arch/ppc/include/asm/time.h
index f23eec173e..f0d426a26a 100644
--- a/xen/arch/ppc/include/asm/time.h
+++ b/xen/arch/ppc/include/asm/time.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_TIME_H__
-#define __ASM_PPC_TIME_H__
+#ifndef ASM__PPC__TIME_H
+#define ASM__PPC__TIME_H
 
 #include <xen/bug.h>
 #include <asm/processor.h>
@@ -20,4 +20,4 @@ static inline cycles_t get_cycles(void)
     return mfspr(SPRN_TBRL);
 }
 
-#endif /* __ASM_PPC_TIME_H__ */
+#endif /* ASM__PPC__TIME_H */
diff --git a/xen/arch/ppc/include/asm/types.h b/xen/arch/ppc/include/asm/types.h
index ffaf378a4d..1abd074489 100644
--- a/xen/arch/ppc/include/asm/types.h
+++ b/xen/arch/ppc/include/asm/types.h
@@ -1,11 +1,11 @@
 /* from xen/arch/x86/include/asm/types.h */
 
-#ifndef _ASM_PPC_TYPES_H
-#define _ASM_PPC_TYPES_H
+#ifndef ASM__PPC__TYPES_H
+#define ASM__PPC__TYPES_H
 
 typedef unsigned long paddr_t;
 typedef unsigned long vaddr_t;
 #define INVALID_PADDR (~0UL)
 #define PRIpaddr "016lx"
 
-#endif /* _ASM_PPC_TYPES_H */
+#endif /* ASM__PPC__TYPES_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810098.1222836 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVS-0000XL-IF; Fri, 04 Oct 2024 08:17:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810098.1222836; Fri, 04 Oct 2024 08: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 1swdVR-0000S6-FS; Fri, 04 Oct 2024 08:17:45 +0000
Received: by outflank-mailman (input) for mailman id 810098;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVM-0005Kj-Tq
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:41 +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 1e878db8-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:39 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8a6d1766a7so275013766b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:39 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1e878db8-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029858; x=1728634658; 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=ig/jx3h9dHpZQ51svxnNJO+Mhrf0xrweSMpcWRyQH4o=;
        b=LtwMmsME1blTFEFUygls8YCsFZ+ptHJo2Q8oyNLBX+avSDqpsJOclXaRZ12WNBb0fw
         sVVDD1MRUqweDpYAHYo64DSB2hsQFezI8FBLT0jYDxXGD2MYarrG96RhcPPgxgGrITUD
         lHKsN7/FrM8sFKVeOrzljlqU+NeCiiQdrdZCc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029858; x=1728634658;
        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=ig/jx3h9dHpZQ51svxnNJO+Mhrf0xrweSMpcWRyQH4o=;
        b=YW4uFyRmGSOsm3stP7FsBbepHxm8QvC+P28lp7xMXvvLBX11fDRgzWZv6uqOcyDyUr
         QcinaKvVqsYc08D50DrW0YBzaD91kPa10mMTMeamA+FXgMjlPHzri3Dg4jsP+BcdDGjB
         DWreTwN2Y50ZdO0YrxFIsf2ogdwCZnlyy0vb0bOYxWz58sBrzpMZSaqcVTU1lPyT/acv
         dTeGtrgAZxqbGtxttPmhgsg1CHzxjXBRBAV4N/MmzP5wuENslWk0NQLZxnSjS6h91XAS
         rAqvQ8ucTAssW7Z2Hx2sjRR6jnysbQnAgs7HfjaI7cZ+jIH7KUrTTu84OmtQPpPx9eLV
         T6CA==
X-Gm-Message-State: AOJu0Yy1UIbXEaW42iDdgyiSP3BKkGuDozVpFVd020LQ0M/LcanzGZYZ
	Josmyj6u+UC34zKD87TUHjkafS6qldsys/l2Cn1qL0/gmO4Gmzl0taVSvoKm+/I5jX/ZbQWf0sx
	v
X-Google-Smtp-Source: AGHT+IH+C8cDFRWL5WduVSeS3/RPt2m8Tfzk6SDQ/buzZif6Q2TzxrnpTH0yzDHT5SUYkxleoLICqA==
X-Received: by 2002:a17:907:9304:b0:a8d:4e26:c9b9 with SMTP id a640c23a62f3a-a991bd20a14mr195956866b.17.1728029857937;
        Fri, 04 Oct 2024 01:17:37 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>
Subject: [PATCH v3 15/19] xen: Update header guards - RISC-V
Date: Fri,  4 Oct 2024 09:17:09 +0100
Message-Id: <20241004081713.749031-16-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to RISC-V.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/riscv/include/asm/acpi.h           | 6 +++---
 xen/arch/riscv/include/asm/asm.h            | 6 +++---
 xen/arch/riscv/include/asm/atomic.h         | 6 +++---
 xen/arch/riscv/include/asm/bitops.h         | 6 +++---
 xen/arch/riscv/include/asm/bug.h            | 6 +++---
 xen/arch/riscv/include/asm/byteorder.h      | 6 +++---
 xen/arch/riscv/include/asm/cache.h          | 6 +++---
 xen/arch/riscv/include/asm/cmpxchg.h        | 6 +++---
 xen/arch/riscv/include/asm/config.h         | 6 +++---
 xen/arch/riscv/include/asm/cpufeature.h     | 6 +++---
 xen/arch/riscv/include/asm/csr.h            | 6 +++---
 xen/arch/riscv/include/asm/current.h        | 6 +++---
 xen/arch/riscv/include/asm/domain.h         | 6 +++---
 xen/arch/riscv/include/asm/early_printk.h   | 6 +++---
 xen/arch/riscv/include/asm/event.h          | 6 +++---
 xen/arch/riscv/include/asm/fence.h          | 6 +++---
 xen/arch/riscv/include/asm/fixmap.h         | 6 +++---
 xen/arch/riscv/include/asm/flushtlb.h       | 6 +++---
 xen/arch/riscv/include/asm/guest_access.h   | 6 +++---
 xen/arch/riscv/include/asm/guest_atomics.h  | 6 +++---
 xen/arch/riscv/include/asm/io.h             | 6 +++---
 xen/arch/riscv/include/asm/irq.h            | 6 +++---
 xen/arch/riscv/include/asm/mm.h             | 6 +++---
 xen/arch/riscv/include/asm/monitor.h        | 6 +++---
 xen/arch/riscv/include/asm/nospec.h         | 6 +++---
 xen/arch/riscv/include/asm/p2m.h            | 6 +++---
 xen/arch/riscv/include/asm/page-bits.h      | 6 +++---
 xen/arch/riscv/include/asm/page.h           | 6 +++---
 xen/arch/riscv/include/asm/pmap.h           | 6 +++---
 xen/arch/riscv/include/asm/processor.h      | 6 +++---
 xen/arch/riscv/include/asm/regs.h           | 6 +++---
 xen/arch/riscv/include/asm/riscv_encoding.h | 4 ++--
 xen/arch/riscv/include/asm/sbi.h            | 6 +++---
 xen/arch/riscv/include/asm/setup.h          | 6 +++---
 xen/arch/riscv/include/asm/smp.h            | 4 ++--
 xen/arch/riscv/include/asm/spinlock.h       | 6 +++---
 xen/arch/riscv/include/asm/string.h         | 6 +++---
 xen/arch/riscv/include/asm/system.h         | 6 +++---
 xen/arch/riscv/include/asm/time.h           | 6 +++---
 xen/arch/riscv/include/asm/traps.h          | 6 +++---
 xen/arch/riscv/include/asm/types.h          | 6 +++---
 41 files changed, 121 insertions(+), 121 deletions(-)

diff --git a/xen/arch/riscv/include/asm/acpi.h b/xen/arch/riscv/include/asm/acpi.h
index 3aef993d81..f0b5e90969 100644
--- a/xen/arch/riscv/include/asm/acpi.h
+++ b/xen/arch/riscv/include/asm/acpi.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef __ASM_RISCV_ACPI_H
-#define __ASM_RISCV_ACPI_H
+#ifndef ASM__RISCV__ACPI_H
+#define ASM__RISCV__ACPI_H
 
-#endif /* __ASM_RISCV_ACPI_H */
+#endif /* ASM__RISCV__ACPI_H */
diff --git a/xen/arch/riscv/include/asm/asm.h b/xen/arch/riscv/include/asm/asm.h
index 87a3fd250b..8b0403e2e4 100644
--- a/xen/arch/riscv/include/asm/asm.h
+++ b/xen/arch/riscv/include/asm/asm.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef _ASM_RISCV_ASM_H
-#define _ASM_RISCV_ASM_H
+#ifndef ASM__RISCV__ASM_H
+#define ASM__RISCV__ASM_H
 
 #ifdef __ASSEMBLY__
 #include <xen/linkage.h>
@@ -52,4 +52,4 @@
 #error "Unexpected __SIZEOF_SHORT__"
 #endif
 
-#endif /* _ASM_RISCV_ASM_H */
+#endif /* ASM__RISCV__ASM_H */
diff --git a/xen/arch/riscv/include/asm/atomic.h b/xen/arch/riscv/include/asm/atomic.h
index 9669a3286d..8e0425cea0 100644
--- a/xen/arch/riscv/include/asm/atomic.h
+++ b/xen/arch/riscv/include/asm/atomic.h
@@ -19,8 +19,8 @@
  * Copyright (C) 2024 Vates SAS
  */
 
-#ifndef _ASM_RISCV_ATOMIC_H
-#define _ASM_RISCV_ATOMIC_H
+#ifndef ASM__RISCV__ATOMIC_H
+#define ASM__RISCV__ATOMIC_H
 
 #include <xen/atomic.h>
 
@@ -266,7 +266,7 @@ ATOMIC_OPS()
 #undef ATOMIC_OPS
 #undef ATOMIC_OP
 
-#endif /* _ASM_RISCV_ATOMIC_H */
+#endif /* ASM__RISCV__ATOMIC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bitops.h b/xen/arch/riscv/include/asm/bitops.h
index 7f7af3fda1..9a6f576187 100644
--- a/xen/arch/riscv/include/asm/bitops.h
+++ b/xen/arch/riscv/include/asm/bitops.h
@@ -1,8 +1,8 @@
 /* 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
+#ifndef ASM__RISCV__BITOPS_H
+#define ASM__RISCV__BITOPS_H
 
 #include <asm/system.h>
 
@@ -125,7 +125,7 @@ static inline void clear_bit(int nr, volatile void *p)
 #undef NOT
 #undef __AMO
 
-#endif /* _ASM_RISCV_BITOPS_H */
+#endif /* ASM__RISCV__BITOPS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/bug.h b/xen/arch/riscv/include/asm/bug.h
index e3d41f411a..fa18dba20e 100644
--- a/xen/arch/riscv/include/asm/bug.h
+++ b/xen/arch/riscv/include/asm/bug.h
@@ -4,8 +4,8 @@
  * Copyright (C) 2021-2023 Vates
  *
  */
-#ifndef _ASM_RISCV_BUG_H
-#define _ASM_RISCV_BUG_H
+#ifndef ASM__RISCV__BUG_H
+#define ASM__RISCV__BUG_H
 
 #ifndef __ASSEMBLY__
 
@@ -32,4 +32,4 @@
 
 #endif /* !__ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_BUG_H */
+#endif /* ASM__RISCV__BUG_H */
diff --git a/xen/arch/riscv/include/asm/byteorder.h b/xen/arch/riscv/include/asm/byteorder.h
index 320a03c88f..8ca65e1b33 100644
--- a/xen/arch/riscv/include/asm/byteorder.h
+++ b/xen/arch/riscv/include/asm/byteorder.h
@@ -1,11 +1,11 @@
-#ifndef __ASM_RISCV_BYTEORDER_H__
-#define __ASM_RISCV_BYTEORDER_H__
+#ifndef ASM__RISCV__BYTEORDER_H
+#define ASM__RISCV__BYTEORDER_H
 
 #define __BYTEORDER_HAS_U64__
 
 #include <xen/byteorder/little_endian.h>
 
-#endif /* __ASM_RISCV_BYTEORDER_H__ */
+#endif /* ASM__RISCV__BYTEORDER_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/cache.h b/xen/arch/riscv/include/asm/cache.h
index 69573eb051..9a9e5162ab 100644
--- a/xen/arch/riscv/include/asm/cache.h
+++ b/xen/arch/riscv/include/asm/cache.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef _ASM_RISCV_CACHE_H
-#define _ASM_RISCV_CACHE_H
+#ifndef ASM__RISCV__CACHE_H
+#define ASM__RISCV__CACHE_H
 
-#endif /* _ASM_RISCV_CACHE_H */
+#endif /* ASM__RISCV__CACHE_H */
diff --git a/xen/arch/riscv/include/asm/cmpxchg.h b/xen/arch/riscv/include/asm/cmpxchg.h
index 47d5299e62..662d3fd5d4 100644
--- a/xen/arch/riscv/include/asm/cmpxchg.h
+++ b/xen/arch/riscv/include/asm/cmpxchg.h
@@ -1,8 +1,8 @@
 /* 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
+#ifndef ASM__RISCV__CMPXCHG_H
+#define ASM__RISCV__CMPXCHG_H
 
 #include <xen/compiler.h>
 #include <xen/lib.h>
@@ -242,7 +242,7 @@ static always_inline unsigned long __cmpxchg(volatile void *ptr,
               sizeof(*(ptr))); \
 })
 
-#endif /* _ASM_RISCV_CMPXCHG_H */
+#endif /* ASM__RISCV__CMPXCHG_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index 7dbb235685..ef68281653 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_CONFIG_H__
-#define __RISCV_CONFIG_H__
+#ifndef ASM__RISCV__CONFIG_H
+#define ASM__RISCV__CONFIG_H
 
 #include <xen/const.h>
 #include <xen/page-size.h>
@@ -155,7 +155,7 @@
 
 #define IDENT_AREA_SIZE 64
 
-#endif /* __RISCV_CONFIG_H__ */
+#endif /* ASM__RISCV__CONFIG_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/cpufeature.h b/xen/arch/riscv/include/asm/cpufeature.h
index c08b7d67ad..41a792b0b2 100644
--- a/xen/arch/riscv/include/asm/cpufeature.h
+++ b/xen/arch/riscv/include/asm/cpufeature.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_CPUFEATURE_H
-#define __ASM_RISCV_CPUFEATURE_H
+#ifndef ASM__RISCV__CPUFEATURE_H
+#define ASM__RISCV__CPUFEATURE_H
 
 #ifndef __ASSEMBLY__
 
@@ -11,7 +11,7 @@ static inline unsigned int cpu_nr_siblings(unsigned int cpu)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_RISCV_CPUFEATURE_H */
+#endif /* ASM__RISCV__CPUFEATURE_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/csr.h b/xen/arch/riscv/include/asm/csr.h
index be57dcce1c..775f1f170f 100644
--- a/xen/arch/riscv/include/asm/csr.h
+++ b/xen/arch/riscv/include/asm/csr.h
@@ -3,8 +3,8 @@
  * Copyright (C) 2015 Regents of the University of California
  */
 
-#ifndef _ASM_RISCV_CSR_H
-#define _ASM_RISCV_CSR_H
+#ifndef ASM__RISCV__CSR_H
+#define ASM__RISCV__CSR_H
 
 #include <asm/asm.h>
 #include <xen/const.h>
@@ -80,4 +80,4 @@
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_CSR_H */
+#endif /* ASM__RISCV__CSR_H */
diff --git a/xen/arch/riscv/include/asm/current.h b/xen/arch/riscv/include/asm/current.h
index 6f1ec4e190..1485bceea4 100644
--- a/xen/arch/riscv/include/asm/current.h
+++ b/xen/arch/riscv/include/asm/current.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_CURRENT_H
-#define __ASM_CURRENT_H
+#ifndef ASM__RISCV__CURRENT_H
+#define ASM__RISCV__CURRENT_H
 
 #include <xen/bug.h>
 #include <xen/cache.h>
@@ -54,4 +54,4 @@ DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_CURRENT_H */
+#endif /* ASM__RISCV__CURRENT_H */
diff --git a/xen/arch/riscv/include/asm/domain.h b/xen/arch/riscv/include/asm/domain.h
index 027bfa8a93..c3d965a559 100644
--- a/xen/arch/riscv/include/asm/domain.h
+++ b/xen/arch/riscv/include/asm/domain.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_DOMAIN_H__
-#define __ASM_RISCV_DOMAIN_H__
+#ifndef ASM__RISCV__DOMAIN_H
+#define ASM__RISCV__DOMAIN_H
 
 #include <xen/xmalloc.h>
 #include <public/hvm/params.h>
@@ -39,7 +39,7 @@ static inline void update_guest_memory_policy(struct vcpu *v,
 
 static inline void arch_vcpu_block(struct vcpu *v) {}
 
-#endif /* __ASM_RISCV_DOMAIN_H__ */
+#endif /* ASM__RISCV__DOMAIN_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/early_printk.h b/xen/arch/riscv/include/asm/early_printk.h
index 85e60df33a..2750045bdd 100644
--- a/xen/arch/riscv/include/asm/early_printk.h
+++ b/xen/arch/riscv/include/asm/early_printk.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __EARLY_PRINTK_H__
-#define __EARLY_PRINTK_H__
+#ifndef ASM__RISCV__EARLY_PRINTK_H
+#define ASM__RISCV__EARLY_PRINTK_H
 
 #include <xen/early_printk.h>
 
@@ -11,4 +11,4 @@ void early_printk(const char *str);
 static inline void early_printk(const char *s) {};
 #endif
 
-#endif /* __EARLY_PRINTK_H__ */
+#endif /* ASM__RISCV__EARLY_PRINTK_H */
diff --git a/xen/arch/riscv/include/asm/event.h b/xen/arch/riscv/include/asm/event.h
index fbad8543fa..c7bb8c0fa6 100644
--- a/xen/arch/riscv/include/asm/event.h
+++ b/xen/arch/riscv/include/asm/event.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_EVENT_H__
-#define __ASM_RISCV_EVENT_H__
+#ifndef ASM__RISCV__EVENT_H
+#define ASM__RISCV__EVENT_H
 
 #include <xen/lib.h>
 
@@ -29,7 +29,7 @@ static inline bool arch_virq_is_global(unsigned int virq)
     return true;
 }
 
-#endif /* __ASM_RISCV_EVENT_H__ */
+#endif /* ASM__RISCV__EVENT_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/fence.h b/xen/arch/riscv/include/asm/fence.h
index 27f46fa897..edfaac49cd 100644
--- a/xen/arch/riscv/include/asm/fence.h
+++ b/xen/arch/riscv/include/asm/fence.h
@@ -1,9 +1,9 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
-#ifndef _ASM_RISCV_FENCE_H
-#define _ASM_RISCV_FENCE_H
+#ifndef ASM__RISCV__FENCE_H
+#define ASM__RISCV__FENCE_H
 
 #define RISCV_ACQUIRE_BARRIER   "\tfence r , rw\n"
 #define RISCV_RELEASE_BARRIER   "\tfence rw, w\n"
 #define RISCV_FULL_BARRIER      "\tfence rw, rw\n"
 
-#endif	/* _ASM_RISCV_FENCE_H */
+#endif	/* ASM__RISCV__FENCE_H */
diff --git a/xen/arch/riscv/include/asm/fixmap.h b/xen/arch/riscv/include/asm/fixmap.h
index 63732df36c..818c8ce07b 100644
--- a/xen/arch/riscv/include/asm/fixmap.h
+++ b/xen/arch/riscv/include/asm/fixmap.h
@@ -2,8 +2,8 @@
 /*
  * fixmap.h: compile-time virtual memory allocation
  */
-#ifndef ASM_FIXMAP_H
-#define ASM_FIXMAP_H
+#ifndef ASM__RISCV__FIXMAP_H
+#define ASM__RISCV__FIXMAP_H
 
 #include <xen/bug.h>
 #include <xen/page-size.h>
@@ -43,4 +43,4 @@ static inline unsigned int virt_to_fix(vaddr_t vaddr)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* ASM_FIXMAP_H */
+#endif /* ASM__RISCV__FIXMAP_H */
diff --git a/xen/arch/riscv/include/asm/flushtlb.h b/xen/arch/riscv/include/asm/flushtlb.h
index 43214f5e95..51c8f753c5 100644
--- a/xen/arch/riscv/include/asm/flushtlb.h
+++ b/xen/arch/riscv/include/asm/flushtlb.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_FLUSHTLB_H__
-#define __ASM_RISCV_FLUSHTLB_H__
+#ifndef ASM__RISCV__FLUSHTLB_H
+#define ASM__RISCV__FLUSHTLB_H
 
 #include <xen/bug.h>
 #include <xen/cpumask.h>
@@ -37,7 +37,7 @@ static inline void page_set_tlbflush_timestamp(struct page_info *page)
 /* Flush specified CPUs' TLBs */
 void arch_flush_tlb_mask(const cpumask_t *mask);
 
-#endif /* __ASM_RISCV_FLUSHTLB_H__ */
+#endif /* ASM__RISCV__FLUSHTLB_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/guest_access.h b/xen/arch/riscv/include/asm/guest_access.h
index c55951f538..7cd51fbbde 100644
--- a/xen/arch/riscv/include/asm/guest_access.h
+++ b/xen/arch/riscv/include/asm/guest_access.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_GUEST_ACCESS_H__
-#define __ASM_RISCV_GUEST_ACCESS_H__
+#ifndef ASM__RISCV__GUEST_ACCESS_H
+#define ASM__RISCV__GUEST_ACCESS_H
 
 unsigned long raw_copy_to_guest(void *to, const void *from, unsigned len);
 unsigned long raw_copy_from_guest(void *to, const void *from, unsigned len);
@@ -18,7 +18,7 @@ unsigned long raw_clear_guest(void *to, unsigned int len);
 #define guest_handle_okay(hnd, nr) (1)
 #define guest_handle_subrange_okay(hnd, first, last) (1)
 
-#endif /* __ASM_RISCV_GUEST_ACCESS_H__ */
+#endif /* ASM__RISCV__GUEST_ACCESS_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/riscv/include/asm/guest_atomics.h b/xen/arch/riscv/include/asm/guest_atomics.h
index de54914454..22a7551804 100644
--- a/xen/arch/riscv/include/asm/guest_atomics.h
+++ b/xen/arch/riscv/include/asm/guest_atomics.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_GUEST_ATOMICS_H
-#define __ASM_RISCV_GUEST_ATOMICS_H
+#ifndef ASM__RISCV__GUEST_ATOMICS_H
+#define ASM__RISCV__GUEST_ATOMICS_H
 
 #include <xen/bug.h>
 
@@ -32,7 +32,7 @@ guest_testop(test_and_change_bit)
 
 #define guest_test_bit(d, nr, p) ((void)(d), test_bit(nr, p))
 
-#endif /* __ASM_RISCV_GUEST_ATOMICS_H */
+#endif /* ASM__RISCV__GUEST_ATOMICS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/io.h b/xen/arch/riscv/include/asm/io.h
index 8d9535e973..55f329dde3 100644
--- a/xen/arch/riscv/include/asm/io.h
+++ b/xen/arch/riscv/include/asm/io.h
@@ -35,8 +35,8 @@
  * Copyright (C) 2024 Vates
  */
 
-#ifndef _ASM_RISCV_IO_H
-#define _ASM_RISCV_IO_H
+#ifndef ASM__RISCV__IO_H
+#define ASM__RISCV__IO_H
 
 #include <asm/byteorder.h>
 
@@ -156,7 +156,7 @@ static inline uint64_t __raw_readq(const volatile void __iomem *addr)
 #define writel(v, c)    ({ __io_bw(); writel_cpu(v, c); __io_aw(); })
 #define writeq(v, c)    ({ __io_bw(); writeq_cpu(v, c); __io_aw(); })
 
-#endif /* _ASM_RISCV_IO_H */
+#endif /* ASM__RISCV__IO_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/irq.h b/xen/arch/riscv/include/asm/irq.h
index 0dfd4d6e8a..2a48da2651 100644
--- a/xen/arch/riscv/include/asm/irq.h
+++ b/xen/arch/riscv/include/asm/irq.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_IRQ_H__
-#define __ASM_RISCV_IRQ_H__
+#ifndef ASM__RISCV__IRQ_H
+#define ASM__RISCV__IRQ_H
 
 #include <xen/bug.h>
 
@@ -25,7 +25,7 @@ static inline void arch_move_irqs(struct vcpu *v)
     BUG_ON("unimplemented");
 }
 
-#endif /* __ASM_RISCV_IRQ_H__ */
+#endif /* ASM__RISCV__IRQ_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index 4b7b00b850..5c79f3def3 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_MM_H
-#define _ASM_RISCV_MM_H
+#ifndef ASM__RISCV__MM_H
+#define ASM__RISCV__MM_H
 
 #include <public/xen.h>
 #include <xen/bug.h>
@@ -261,4 +261,4 @@ void setup_fixmap_mappings(void);
 
 void *early_fdt_map(paddr_t fdt_paddr);
 
-#endif /* _ASM_RISCV_MM_H */
+#endif /* ASM__RISCV__MM_H */
diff --git a/xen/arch/riscv/include/asm/monitor.h b/xen/arch/riscv/include/asm/monitor.h
index f4fe2c0690..fb3d3e8e3a 100644
--- a/xen/arch/riscv/include/asm/monitor.h
+++ b/xen/arch/riscv/include/asm/monitor.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_MONITOR_H__
-#define __ASM_RISCV_MONITOR_H__
+#ifndef ASM__RISCV__MONITOR_H
+#define ASM__RISCV__MONITOR_H
 
 #include <xen/bug.h>
 
@@ -14,7 +14,7 @@ static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
     return 0;
 }
 
-#endif /* __ASM_RISCV_MONITOR_H__ */
+#endif /* ASM__RISCV__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/nospec.h b/xen/arch/riscv/include/asm/nospec.h
index e30f0a781b..f9b0241c98 100644
--- a/xen/arch/riscv/include/asm/nospec.h
+++ b/xen/arch/riscv/include/asm/nospec.h
@@ -1,8 +1,8 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (C) 2024 Vates */
 
-#ifndef _ASM_RISCV_NOSPEC_H
-#define _ASM_RISCV_NOSPEC_H
+#ifndef ASM__RISCV__NOSPEC_H
+#define ASM__RISCV__NOSPEC_H
 
 static inline bool evaluate_nospec(bool condition)
 {
@@ -13,7 +13,7 @@ static inline void block_speculation(void)
 {
 }
 
-#endif /* _ASM_RISCV_NOSPEC_H */
+#endif /* ASM__RISCV__NOSPEC_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
index 26860c0ae7..28f57a74f2 100644
--- a/xen/arch/riscv/include/asm/p2m.h
+++ b/xen/arch/riscv/include/asm/p2m.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_P2M_H__
-#define __ASM_RISCV_P2M_H__
+#ifndef ASM__RISCV__P2M_H
+#define ASM__RISCV__P2M_H
 
 #include <xen/errno.h>
 
@@ -93,7 +93,7 @@ static inline void p2m_altp2m_check(struct vcpu *v, uint16_t idx)
     /* Not supported on RISCV. */
 }
 
-#endif /* __ASM_RISCV_P2M_H__ */
+#endif /* ASM__RISCV__P2M_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/page-bits.h b/xen/arch/riscv/include/asm/page-bits.h
index 8f1f474371..788c7d9518 100644
--- a/xen/arch/riscv/include/asm/page-bits.h
+++ b/xen/arch/riscv/include/asm/page-bits.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_PAGE_BITS_H__
-#define __RISCV_PAGE_BITS_H__
+#ifndef ASM__RISCV__PAGE_BITS_H
+#define ASM__RISCV__PAGE_BITS_H
 
 #define PAGE_SHIFT              12 /* 4 KiB Pages */
 #define PADDR_BITS              56 /* 44-bit PPN */
@@ -16,4 +16,4 @@
 
 #define PTE_PPN_SHIFT           10
 
-#endif /* __RISCV_PAGE_BITS_H__ */
+#endif /* ASM__RISCV__PAGE_BITS_H */
diff --git a/xen/arch/riscv/include/asm/page.h b/xen/arch/riscv/include/asm/page.h
index 89fa290697..91b1194b55 100644
--- a/xen/arch/riscv/include/asm/page.h
+++ b/xen/arch/riscv/include/asm/page.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_PAGE_H
-#define _ASM_RISCV_PAGE_H
+#ifndef ASM__RISCV__PAGE_H
+#define ASM__RISCV__PAGE_H
 
 #ifndef __ASSEMBLY__
 
@@ -182,4 +182,4 @@ static inline pte_t pte_from_mfn(mfn_t mfn, unsigned int flags)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_PAGE_H */
+#endif /* ASM__RISCV__PAGE_H */
diff --git a/xen/arch/riscv/include/asm/pmap.h b/xen/arch/riscv/include/asm/pmap.h
index 60065c996f..146dd29f95 100644
--- a/xen/arch/riscv/include/asm/pmap.h
+++ b/xen/arch/riscv/include/asm/pmap.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-#ifndef ASM_PMAP_H
-#define ASM_PMAP_H
+#ifndef ASM__RISCV__PMAP_H
+#define ASM__RISCV__PMAP_H
 
 #include <xen/bug.h>
 #include <xen/init.h>
@@ -33,4 +33,4 @@ static inline void __init arch_pmap_unmap(unsigned int slot)
     flush_tlb_one_local(FIXMAP_ADDR(slot));
 }
 
-#endif /* ASM_PMAP_H */
+#endif /* ASM__RISCV__PMAP_H */
diff --git a/xen/arch/riscv/include/asm/processor.h b/xen/arch/riscv/include/asm/processor.h
index e42b353b4c..90b8009563 100644
--- a/xen/arch/riscv/include/asm/processor.h
+++ b/xen/arch/riscv/include/asm/processor.h
@@ -7,8 +7,8 @@
  *
  */
 
-#ifndef _ASM_RISCV_PROCESSOR_H
-#define _ASM_RISCV_PROCESSOR_H
+#ifndef ASM__RISCV__PROCESSOR_H
+#define ASM__RISCV__PROCESSOR_H
 
 #ifndef __ASSEMBLY__
 
@@ -93,7 +93,7 @@ static inline void sfence_vma(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_PROCESSOR_H */
+#endif /* ASM__RISCV__PROCESSOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/regs.h b/xen/arch/riscv/include/asm/regs.h
index c70ea2aa0c..218b9455bd 100644
--- a/xen/arch/riscv/include/asm/regs.h
+++ b/xen/arch/riscv/include/asm/regs.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ARM_RISCV_REGS_H__
-#define __ARM_RISCV_REGS_H__
+#ifndef ASM__RISCV__REGS_H
+#define ASM__RISCV__REGS_H
 
 #ifndef __ASSEMBLY__
 
@@ -17,7 +17,7 @@ static inline bool guest_mode(const struct cpu_user_regs *r)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ARM_RISCV_REGS_H__ */
+#endif /* ASM__RISCV__REGS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/riscv_encoding.h b/xen/arch/riscv/include/asm/riscv_encoding.h
index e31e94e77e..6cc8f4eb45 100644
--- a/xen/arch/riscv/include/asm/riscv_encoding.h
+++ b/xen/arch/riscv/include/asm/riscv_encoding.h
@@ -6,8 +6,8 @@
  *   Anup Patel <anup.patel@wdc.com>
  */
 
-#ifndef __RISCV_ENCODING_H__
-#define __RISCV_ENCODING_H__
+#ifndef ASM__RISCV__RISCV_ENCODING_H
+#define ASM__RISCV__RISCV_ENCODING_H
 
 #define _UL(X) _AC(X, UL)
 #define _ULL(X) _AC(X, ULL)
diff --git a/xen/arch/riscv/include/asm/sbi.h b/xen/arch/riscv/include/asm/sbi.h
index 5947fed779..527d773277 100644
--- a/xen/arch/riscv/include/asm/sbi.h
+++ b/xen/arch/riscv/include/asm/sbi.h
@@ -9,8 +9,8 @@
  * Copyright (c) 2019 Western Digital Corporation or its affiliates.
  */
 
-#ifndef __ASM_RISCV_SBI_H__
-#define __ASM_RISCV_SBI_H__
+#ifndef ASM__RISCV__SBI_H
+#define ASM__RISCV__SBI_H
 
 #include <xen/cpumask.h>
 
@@ -96,4 +96,4 @@ int sbi_remote_sfence_vma(const cpumask_t *cpu_mask, vaddr_t start,
  */
 int sbi_init(void);
 
-#endif /* __ASM_RISCV_SBI_H__ */
+#endif /* ASM__RISCV__SBI_H */
diff --git a/xen/arch/riscv/include/asm/setup.h b/xen/arch/riscv/include/asm/setup.h
index 7613a5dbd0..c0214a9bf2 100644
--- a/xen/arch/riscv/include/asm/setup.h
+++ b/xen/arch/riscv/include/asm/setup.h
@@ -1,11 +1,11 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_RISCV_SETUP_H__
-#define __ASM_RISCV_SETUP_H__
+#ifndef ASM__RISCV__SETUP_H
+#define ASM__RISCV__SETUP_H
 
 #define max_init_domid (0)
 
-#endif /* __ASM_RISCV_SETUP_H__ */
+#endif /* ASM__RISCV__SETUP_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/smp.h b/xen/arch/riscv/include/asm/smp.h
index a824be8e78..45ee14d535 100644
--- a/xen/arch/riscv/include/asm/smp.h
+++ b/xen/arch/riscv/include/asm/smp.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_SMP_H
-#define __ASM_RISCV_SMP_H
+#ifndef ASM__RISCV__SMP_H
+#define ASM__RISCV__SMP_H
 
 #include <xen/cpumask.h>
 #include <xen/percpu.h>
diff --git a/xen/arch/riscv/include/asm/spinlock.h b/xen/arch/riscv/include/asm/spinlock.h
index bf45a7f005..4a607eba52 100644
--- a/xen/arch/riscv/include/asm/spinlock.h
+++ b/xen/arch/riscv/include/asm/spinlock.h
@@ -1,5 +1,5 @@
-#ifndef __ASM_RISCV_SPINLOCK_H
-#define __ASM_RISCV_SPINLOCK_H
+#ifndef ASM__RISCV__SPINLOCK_H
+#define ASM__RISCV__SPINLOCK_H
 
 #define arch_lock_acquire_barrier() smp_mb()
 #define arch_lock_release_barrier() smp_mb()
@@ -12,4 +12,4 @@
     arch_lock_signal();             \
 })
 
-#endif /* __ASM_RISCV_SPINLOCK_H */
+#endif /* ASM__RISCV__SPINLOCK_H */
diff --git a/xen/arch/riscv/include/asm/string.h b/xen/arch/riscv/include/asm/string.h
index a26ba8f5c6..75a2048fb1 100644
--- a/xen/arch/riscv/include/asm/string.h
+++ b/xen/arch/riscv/include/asm/string.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-#ifndef _ASM_RISCV_STRING_H
-#define _ASM_RISCV_STRING_H
+#ifndef ASM__RISCV__STRING_H
+#define ASM__RISCV__STRING_H
 
-#endif /* _ASM_RISCV_STRING_H */
+#endif /* ASM__RISCV__STRING_H */
diff --git a/xen/arch/riscv/include/asm/system.h b/xen/arch/riscv/include/asm/system.h
index f76bafd168..7b78d11e04 100644
--- a/xen/arch/riscv/include/asm/system.h
+++ b/xen/arch/riscv/include/asm/system.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef _ASM_RISCV_SYSTEM_H
-#define _ASM_RISCV_SYSTEM_H
+#ifndef ASM__RISCV__SYSTEM_H
+#define ASM__RISCV__SYSTEM_H
 
 #include <xen/stdbool.h>
 
@@ -78,7 +78,7 @@ static inline bool local_irq_is_enabled(void)
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* _ASM_RISCV_SYSTEM_H */
+#endif /* ASM__RISCV__SYSTEM_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/time.h b/xen/arch/riscv/include/asm/time.h
index affeb0506a..fc1572e9b4 100644
--- a/xen/arch/riscv/include/asm/time.h
+++ b/xen/arch/riscv/include/asm/time.h
@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_RISCV_TIME_H__
-#define __ASM_RISCV_TIME_H__
+#ifndef ASM__RISCV__TIME_H
+#define ASM__RISCV__TIME_H
 
 #include <xen/bug.h>
 #include <asm/csr.h>
@@ -19,7 +19,7 @@ static inline cycles_t get_cycles(void)
     return csr_read(CSR_TIME);
 }
 
-#endif /* __ASM_RISCV_TIME_H__ */
+#endif /* ASM__RISCV__TIME_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/traps.h b/xen/arch/riscv/include/asm/traps.h
index c30118e095..72b8f6c475 100644
--- a/xen/arch/riscv/include/asm/traps.h
+++ b/xen/arch/riscv/include/asm/traps.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __ASM_TRAPS_H__
-#define __ASM_TRAPS_H__
+#ifndef ASM__RISCV__TRAPS_H
+#define ASM__RISCV__TRAPS_H
 
 #include <asm/processor.h>
 
@@ -13,4 +13,4 @@ void trap_init(void);
 
 #endif /* __ASSEMBLY__ */
 
-#endif /* __ASM_TRAPS_H__ */
+#endif /* ASM__RISCV__TRAPS_H */
diff --git a/xen/arch/riscv/include/asm/types.h b/xen/arch/riscv/include/asm/types.h
index 59358fd698..d801596a20 100644
--- a/xen/arch/riscv/include/asm/types.h
+++ b/xen/arch/riscv/include/asm/types.h
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
-#ifndef __RISCV_TYPES_H__
-#define __RISCV_TYPES_H__
+#ifndef ASM__RISCV__TYPES_H
+#define ASM__RISCV__TYPES_H
 
 #if defined(CONFIG_RISCV_32)
 
@@ -25,7 +25,7 @@ typedef u64 register_t;
 
 #endif
 
-#endif /* __RISCV_TYPES_H__ */
+#endif /* ASM__RISCV__TYPES_H */
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810099.1222843 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVU-0000pv-20; Fri, 04 Oct 2024 08:17:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810099.1222843; Fri, 04 Oct 2024 08: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 1swdVS-0000l1-Tu; Fri, 04 Oct 2024 08:17:46 +0000
Received: by outflank-mailman (input) for mailman id 810099;
 Fri, 04 Oct 2024 08:17: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVN-0005Vm-Bv
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:41 +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 1fa4fed4-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:40 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a83562f9be9so181725066b.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:40 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1fa4fed4-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029860; x=1728634660; 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=I3DKuhQNv3MsZ5QX5cGeELREhQ+CQGQiRyTh9z9amE0=;
        b=YMsPcRFvQMpQTvtd2qnBOgoq0x6AEmm63FsROKxudHdxS8K4gAqCjNA73QVoiGZUNN
         HZVfZ8X7f7MaQJLTthMY0dDevhYNk8xVgxiOWDdhY6N68tqnp3S63323ps2xJbiPgR28
         9KKE8DwfEBN35vyp2cSttzPtMjAgPhuXw9ZA4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029860; x=1728634660;
        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=I3DKuhQNv3MsZ5QX5cGeELREhQ+CQGQiRyTh9z9amE0=;
        b=hYwfXrZ5U5GEaW8YZfCD7EHgeYBh4W6/ibnlECOcG1W6QJClWGzmjc31Eur8VcWLAa
         RySbgq6M8/fOO0PNsnXyBDRpvLcPbjzKZlDq061f28NE3Hx3wnpu4qL5jYHjUBbvB9T1
         AVu8RGWqDJmUS0nYg2QzxPbWAcd8WXjS96qHY/TK1my1WzyNjFwKDBpTAVYY9mDSOLnj
         9PBf+/k7pbFlWNb8v9YktUvqVGjnBO7VfCYSWzs4t7lhatQvzXehINxClhmqBcPBi5vD
         9AFjoArpPKXwcGTvfBljkFGkqsfSB4r9AvKu/stJ/mDgLUvCJ1oZQlZocwC21kE/hWT4
         ncFg==
X-Gm-Message-State: AOJu0Yz1oKIxou3hd02kevZiERUo/kgLqX67rM+YJLvk0E0ab2y6MILq
	VX1+BbXH6PL2hgv42Szuw08r1r/E/B+/NmFsHT7dO41LUHgwIggaUPBi0q7cOftqWvjwxiOlFNr
	N
X-Google-Smtp-Source: AGHT+IE2P6bTmkP4WyoRi0mlV1wW2wJvlrHKdRpyxStOSbVPpyLjhCkn1VuZ5K2L5OgKcWoOcjudWA==
X-Received: by 2002:a17:906:4fd0:b0:a8d:4db8:9edf with SMTP id a640c23a62f3a-a991bff02d6mr187522166b.42.1728029860154;
        Fri, 04 Oct 2024 01:17:40 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v3 18/19] xen: Update header guards - VPCI
Date: Fri,  4 Oct 2024 09:17:12 +0100
Message-Id: <20241004081713.749031-19-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to VPCI.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/vpci.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 41e7c3bc27..d2d2905447 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -1,5 +1,5 @@
-#ifndef _XEN_VPCI_H_
-#define _XEN_VPCI_H_
+#ifndef XEN__VPCI_H
+#define XEN__VPCI_H
 
 #ifdef CONFIG_HAS_VPCI
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:17:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:17:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810100.1222857 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdVW-0001Qx-TS; Fri, 04 Oct 2024 08:17:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810100.1222857; Fri, 04 Oct 2024 08:17: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 1swdVV-0001Lr-DB; Fri, 04 Oct 2024 08:17:49 +0000
Received: by outflank-mailman (input) for mailman id 810100;
 Fri, 04 Oct 2024 08: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVO-0005Vm-U7
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:43 +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 2048fcd1-8229-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 10:17:42 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c8844f0ccaso2288157a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:42 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2048fcd1-8229-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029861; x=1728634661; 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=8sG+uwolPFDTJ+3qXbxOoScuyE6ezletDmbjlj5s8lQ=;
        b=JEnZtngRaL0Q7lP7I2g1sBgriijKpD/XxOVlOm2KZlUeZyxhvFRrEz/TN3//Ez7dsV
         xc4dYIwkEyg2ZfUrbDMR273AzwtvyuSSDEpxJ7gjGXQeuaeTRL3HA2PF69prx9T5Ao8a
         lhb6XL3Fl4Iuw6dW0+2isA0o8J9nnWx4wxECg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029861; x=1728634661;
        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=8sG+uwolPFDTJ+3qXbxOoScuyE6ezletDmbjlj5s8lQ=;
        b=A/rLaC/9tgV5G5XmwAl0oyuzz0Lh09UqsEu6xOTfdHhQqKcXwxbmCgxKsCNVpCp5Qc
         +acJgMvlAjL0x/E6xhKhMlVXbFyQu8bXBhxk74/P+57xxqtSSCsNNOqlb65ehbLklZPI
         a9M6Vb3xKRCNmAgqbM7+nF4Tf2hgXrsG4HgM7fdCUC636wtymJwsmki7Kfp1Mvz+1rai
         UlVxD0K32EFP5cRhwR5MCn5S/bY6EFiXFyJwO0jTCNaVTRVLVQPKY5hDwsReLtWmRo/8
         5+cF4KAcVCZwC9c13a39LDclMyd/xkSKpVJAsN8cwsKy1Qg6VOfRq4xUaF3eZoKsz0LC
         3XOw==
X-Gm-Message-State: AOJu0Yz5AcKAZfvtrUsaagcsueU4iOK+0vSA9foAepJfVANhr8luT/i4
	aNpcXB2wqYrTTCcBQCiMX5SBTA7ztSfq0tk0uezRVNura0b91BhpNEQLaaKvG1Ea++P7L5JMFFl
	e
X-Google-Smtp-Source: AGHT+IFdw7GHnSiNwuqsxVxdP7PU0Q/Op9KGdvq2UiTEC30Hk8rim06Tokw4WoV0T0Dy7+47k81K4A==
X-Received: by 2002:a17:907:7fa6:b0:a91:158a:a900 with SMTP id a640c23a62f3a-a991c07a527mr184832966b.58.1728029860932;
        Fri, 04 Oct 2024 01:17:40 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH v3 19/19] xen: Update header guards - XSM/Flask
Date: Fri,  4 Oct 2024 09:17:13 +0100
Message-Id: <20241004081713.749031-20-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to XSM/Flask.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xsm/dummy.h             | 6 +++---
 xen/include/xsm/xsm.h               | 4 ++--
 xen/xsm/flask/include/avc.h         | 6 +++---
 xen/xsm/flask/include/avc_ss.h      | 6 +++---
 xen/xsm/flask/include/conditional.h | 4 ++--
 xen/xsm/flask/include/objsec.h      | 6 +++---
 xen/xsm/flask/include/security.h    | 6 +++---
 xen/xsm/flask/private.h             | 6 +++---
 xen/xsm/flask/ss/avtab.h            | 6 +++---
 xen/xsm/flask/ss/conditional.h      | 6 +++---
 xen/xsm/flask/ss/constraint.h       | 6 +++---
 xen/xsm/flask/ss/context.h          | 6 +++---
 xen/xsm/flask/ss/ebitmap.h          | 6 +++---
 xen/xsm/flask/ss/hashtab.h          | 4 ++--
 xen/xsm/flask/ss/mls.h              | 4 ++--
 xen/xsm/flask/ss/mls_types.h        | 6 +++---
 xen/xsm/flask/ss/policydb.h         | 6 +++---
 xen/xsm/flask/ss/services.h         | 6 +++---
 xen/xsm/flask/ss/sidtab.h           | 6 +++---
 xen/xsm/flask/ss/symtab.h           | 6 +++---
 20 files changed, 56 insertions(+), 56 deletions(-)

diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
index 7956f27a29..19d838e1db 100644
--- a/xen/include/xsm/dummy.h
+++ b/xen/include/xsm/dummy.h
@@ -15,8 +15,8 @@
  *  value of action.
  */
 
-#ifndef __XEN_XSM_DUMMY_H__
-#define __XEN_XSM_DUMMY_H__
+#ifndef XSM__DUMMY_H
+#define XSM__DUMMY_H
 
 #include <xen/sched.h>
 #include <xsm/xsm.h>
@@ -847,4 +847,4 @@ static XSM_INLINE int cf_check xsm_domain_resource_map(
     return xsm_default_action(action, current->domain, d);
 }
 
-#endif /* __XEN_XSM_DUMMY_H__ */
+#endif /* XSM__DUMMY_H */
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731..24aa9777db 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -12,8 +12,8 @@
  *  as published by the Free Software Foundation.
  */
 
-#ifndef __XSM_H__
-#define __XSM_H__
+#ifndef XSM__XSM_H
+#define XSM__XSM_H
 
 #include <xen/alternative-call.h>
 #include <xen/sched.h>
diff --git a/xen/xsm/flask/include/avc.h b/xen/xsm/flask/include/avc.h
index e29949f5a8..7510415f2a 100644
--- a/xen/xsm/flask/include/avc.h
+++ b/xen/xsm/flask/include/avc.h
@@ -6,8 +6,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _FLASK_AVC_H_
-#define _FLASK_AVC_H_
+#ifndef XSM__FLASK__INCLUDE__AVC_H
+#define XSM__FLASK__INCLUDE__AVC_H
 
 #include <xen/errno.h>
 #include <xen/lib.h>
@@ -100,5 +100,5 @@ extern unsigned int avc_cache_threshold;
 DECLARE_PER_CPU(struct avc_cache_stats, avc_cache_stats);
 #endif
 
-#endif /* _FLASK_AVC_H_ */
+#endif /* XSM__FLASK__INCLUDE__AVC_H */
 
diff --git a/xen/xsm/flask/include/avc_ss.h b/xen/xsm/flask/include/avc_ss.h
index a3d7d1ef07..dfc8e148e9 100644
--- a/xen/xsm/flask/include/avc_ss.h
+++ b/xen/xsm/flask/include/avc_ss.h
@@ -3,8 +3,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _FLASK_AVC_SS_H_
-#define _FLASK_AVC_SS_H_
+#ifndef XSM__FLASK__INCLUDE__AVC_SS_H
+#define XSM__FLASK__INCLUDE__AVC_SS_H
 
 #include "flask.h"
 
@@ -25,5 +25,5 @@ struct selinux_class_perm {
 
 extern const struct selinux_class_perm selinux_class_perm;
 
-#endif /* _FLASK_AVC_SS_H_ */
+#endif /* XSM__FLASK__INCLUDE__AVC_SS_H */
 
diff --git a/xen/xsm/flask/include/conditional.h b/xen/xsm/flask/include/conditional.h
index 879d40e147..4592875731 100644
--- a/xen/xsm/flask/include/conditional.h
+++ b/xen/xsm/flask/include/conditional.h
@@ -10,8 +10,8 @@
  *    the Free Software Foundation, version 2.
  */
 
-#ifndef _FLASK_CONDITIONAL_H_
-#define _FLASK_CONDITIONAL_H_
+#ifndef XSM__FLASK__INCLUDE__CONDITIONAL_H
+#define XSM__FLASK__INCLUDE__CONDITIONAL_H
 
 #include <xen/types.h>
 
diff --git a/xen/xsm/flask/include/objsec.h b/xen/xsm/flask/include/objsec.h
index b576a5dd43..54be75bcc3 100644
--- a/xen/xsm/flask/include/objsec.h
+++ b/xen/xsm/flask/include/objsec.h
@@ -10,8 +10,8 @@
  *      as published by the Free Software Foundation.
  */
 
-#ifndef _FLASK_OBJSEC_H_
-#define _FLASK_OBJSEC_H_
+#ifndef XSM__FLASK__INCLUDE__OBJSEC_H
+#define XSM__FLASK__INCLUDE__OBJSEC_H
 
 #include <xen/sched.h>
 #include "flask.h"
@@ -23,4 +23,4 @@ struct domain_security_struct {
     u32 target_sid;        /* SID for device model target domain */
 };
 
-#endif /* _FLASK_OBJSEC_H_ */
+#endif /* XSM__FLASK__INCLUDE__OBJSEC_H */
diff --git a/xen/xsm/flask/include/security.h b/xen/xsm/flask/include/security.h
index ec8b442a8f..f6806b28cb 100644
--- a/xen/xsm/flask/include/security.h
+++ b/xen/xsm/flask/include/security.h
@@ -7,8 +7,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _FLASK_SECURITY_H_
-#define _FLASK_SECURITY_H_
+#ifndef XSM__FLASK__INCLUDE__SECURITY_H
+#define XSM__FLASK__INCLUDE__SECURITY_H
 
 #include "flask.h"
 
@@ -107,4 +107,4 @@ int security_ocontext_add(u32 ocontext, unsigned long low,
 int security_ocontext_del(u32 ocontext, unsigned long low, unsigned long high);
 
 int security_devicetree_setlabel(char *path, u32 sid);
-#endif /* _FLASK_SECURITY_H_ */
+#endif /* XSM__FLASK__INCLUDE__SECURITY_H */
diff --git a/xen/xsm/flask/private.h b/xen/xsm/flask/private.h
index 429f213cce..93022627dc 100644
--- a/xen/xsm/flask/private.h
+++ b/xen/xsm/flask/private.h
@@ -1,9 +1,9 @@
-#ifndef XSM_FLASK_PRIVATE
-#define XSM_FLASK_PRIVATE
+#ifndef XSM__FLASK__PRIVATE_H
+#define XSM__FLASK__PRIVATE_H
 
 #include <public/xen.h>
 
 long cf_check do_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op);
 int cf_check compat_flask_op(XEN_GUEST_HANDLE_PARAM(void) u_flask_op);
 
-#endif /* XSM_FLASK_PRIVATE */
+#endif /* XSM__FLASK__PRIVATE_H */
diff --git a/xen/xsm/flask/ss/avtab.h b/xen/xsm/flask/ss/avtab.h
index 591604f927..cb595e1250 100644
--- a/xen/xsm/flask/ss/avtab.h
+++ b/xen/xsm/flask/ss/avtab.h
@@ -23,8 +23,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_AVTAB_H_
-#define _SS_AVTAB_H_
+#ifndef XSM__FLASK__SS__AVTAB_H
+#define XSM__FLASK__SS__AVTAB_H
 
 struct avtab_key {
     u16 source_type;    /* source type */
@@ -87,5 +87,5 @@ struct avtab_node *avtab_search_node_next(struct avtab_node *node,
 #define MAX_AVTAB_HASH_MASK (MAX_AVTAB_HASH_BUCKETS-1)
 #define MAX_AVTAB_SIZE MAX_AVTAB_HASH_BUCKETS
 
-#endif    /* _SS_AVTAB_H_ */
+#endif    /* XSM__FLASK__SS__AVTAB_H */
 
diff --git a/xen/xsm/flask/ss/conditional.h b/xen/xsm/flask/ss/conditional.h
index 500fe4305a..4f966c82ed 100644
--- a/xen/xsm/flask/ss/conditional.h
+++ b/xen/xsm/flask/ss/conditional.h
@@ -7,8 +7,8 @@
  *    the Free Software Foundation, version 2.
  */
 
-#ifndef _CONDITIONAL_H_
-#define _CONDITIONAL_H_
+#ifndef XSM__FLASK__SS__CONDITIONAL_H
+#define XSM__FLASK__SS__CONDITIONAL_H
 
 #include "avtab.h"
 #include "symtab.h"
@@ -74,4 +74,4 @@ void cond_compute_av(struct avtab *ctab, struct avtab_key *key, struct av_decisi
 
 int evaluate_cond_node(struct policydb *p, struct cond_node *node);
 
-#endif /* _CONDITIONAL_H_ */
+#endif /* XSM__FLASK__SS__CONDITIONAL_H */
diff --git a/xen/xsm/flask/ss/constraint.h b/xen/xsm/flask/ss/constraint.h
index 0fa5b31237..a0a2156017 100644
--- a/xen/xsm/flask/ss/constraint.h
+++ b/xen/xsm/flask/ss/constraint.h
@@ -12,8 +12,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_CONSTRAINT_H_
-#define _SS_CONSTRAINT_H_
+#ifndef XSM__FLASK__SS__CONSTRAINT_H
+#define XSM__FLASK__SS__CONSTRAINT_H
 
 #include "ebitmap.h"
 
@@ -58,4 +58,4 @@ struct constraint_node {
     struct constraint_node *next;    /* next constraint */
 };
 
-#endif    /* _SS_CONSTRAINT_H_ */
+#endif    /* XSM__FLASK__SS__CONSTRAINT_H */
diff --git a/xen/xsm/flask/ss/context.h b/xen/xsm/flask/ss/context.h
index 311edf8794..d868141699 100644
--- a/xen/xsm/flask/ss/context.h
+++ b/xen/xsm/flask/ss/context.h
@@ -15,8 +15,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_CONTEXT_H_
-#define _SS_CONTEXT_H_
+#ifndef XSM__FLASK__SS__CONTEXT_H
+#define XSM__FLASK__SS__CONTEXT_H
 
 #include "ebitmap.h"
 #include "mls_types.h"
@@ -129,5 +129,5 @@ static inline int context_cmp(struct context *c1, struct context *c2)
         mls_context_cmp(c1, c2));
 }
 
-#endif    /* _SS_CONTEXT_H_ */
+#endif    /* XSM__FLASK__SS__CONTEXT_H */
 
diff --git a/xen/xsm/flask/ss/ebitmap.h b/xen/xsm/flask/ss/ebitmap.h
index 7b2da8179a..8a99f1dd70 100644
--- a/xen/xsm/flask/ss/ebitmap.h
+++ b/xen/xsm/flask/ss/ebitmap.h
@@ -11,8 +11,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_EBITMAP_H_
-#define _SS_EBITMAP_H_
+#ifndef XSM__FLASK__SS__EBITMAP_H
+#define XSM__FLASK__SS__EBITMAP_H
 
 #include <xen/bitmap.h>
 #include <xen/bug.h>
@@ -127,4 +127,4 @@ int ebitmap_set_bit(struct ebitmap *e, unsigned long bit, int value);
 void ebitmap_destroy(struct ebitmap *e);
 int ebitmap_read(struct ebitmap *e, void *fp);
 
-#endif    /* _SS_EBITMAP_H_ */
+#endif    /* XSM__FLASK__SS__EBITMAP_H */
diff --git a/xen/xsm/flask/ss/hashtab.h b/xen/xsm/flask/ss/hashtab.h
index 44ed6c01cf..531b68c9b2 100644
--- a/xen/xsm/flask/ss/hashtab.h
+++ b/xen/xsm/flask/ss/hashtab.h
@@ -7,8 +7,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_HASHTAB_H_
-#define _SS_HASHTAB_H_
+#ifndef XSM__FLASK__SS__HASHTAB_H
+#define XSM__FLASK__SS__HASHTAB_H
 
 #define HASHTAB_MAX_NODES    0xffffffff
 
diff --git a/xen/xsm/flask/ss/mls.h b/xen/xsm/flask/ss/mls.h
index 39572bdf7a..d5cf00c7ae 100644
--- a/xen/xsm/flask/ss/mls.h
+++ b/xen/xsm/flask/ss/mls.h
@@ -11,8 +11,8 @@
  * Copyright (C) 2004-2006 Trusted Computer Solutions, Inc.
  */
 
-#ifndef _SS_MLS_H_
-#define _SS_MLS_H_
+#ifndef XSM__FLASK__SS__MLS_H
+#define XSM__FLASK__SS__MLS_H
 
 #include "context.h"
 #include "policydb.h"
diff --git a/xen/xsm/flask/ss/mls_types.h b/xen/xsm/flask/ss/mls_types.h
index 7199227312..fc392a559d 100644
--- a/xen/xsm/flask/ss/mls_types.h
+++ b/xen/xsm/flask/ss/mls_types.h
@@ -13,8 +13,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_MLS_TYPES_H_
-#define _SS_MLS_TYPES_H_
+#ifndef XSM__FLASK__SS__MLS_TYPES_H
+#define XSM__FLASK__SS__MLS_TYPES_H
 
 #include "security.h"
 
@@ -55,4 +55,4 @@ static inline int mls_level_dom(struct mls_level *l1, struct mls_level *l2)
 (mls_level_dom(&(r2).level[0], &(r1).level[0]) && \
  mls_level_dom(&(r1).level[1], &(r2).level[1]))
 
-#endif    /* _SS_MLS_TYPES_H_ */
+#endif    /* XSM__FLASK__SS__MLS_TYPES_H */
diff --git a/xen/xsm/flask/ss/policydb.h b/xen/xsm/flask/ss/policydb.h
index d3b409a554..8cfbd173b2 100644
--- a/xen/xsm/flask/ss/policydb.h
+++ b/xen/xsm/flask/ss/policydb.h
@@ -23,8 +23,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_POLICYDB_H_
-#define _SS_POLICYDB_H_
+#ifndef XSM__FLASK__SS__POLICYDB_H
+#define XSM__FLASK__SS__POLICYDB_H
 
 #include "symtab.h"
 #include "avtab.h"
@@ -292,5 +292,5 @@ static inline int next_entry(void *buf, struct policy_file *fp, size_t bytes)
     return 0;
 }
 
-#endif    /* _SS_POLICYDB_H_ */
+#endif    /* XSM__FLASK__SS__POLICYDB_H */
 
diff --git a/xen/xsm/flask/ss/services.h b/xen/xsm/flask/ss/services.h
index 43fb876a7c..6282107f47 100644
--- a/xen/xsm/flask/ss/services.h
+++ b/xen/xsm/flask/ss/services.h
@@ -3,13 +3,13 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_SERVICES_H_
-#define _SS_SERVICES_H_
+#ifndef XSM__FLASK__SS__SERVICES_H
+#define XSM__FLASK__SS__SERVICES_H
 
 #include "policydb.h"
 #include "sidtab.h"
 
 extern struct policydb policydb;
 
-#endif    /* _SS_SERVICES_H_ */
+#endif    /* XSM__FLASK__SS__SERVICES_H */
 
diff --git a/xen/xsm/flask/ss/sidtab.h b/xen/xsm/flask/ss/sidtab.h
index 0e48ec6eae..3f1e66334d 100644
--- a/xen/xsm/flask/ss/sidtab.h
+++ b/xen/xsm/flask/ss/sidtab.h
@@ -7,8 +7,8 @@
 
 /* Ported to Xen 3.0, George Coker, <gscoker@alpha.ncsc.mil> */
 
-#ifndef _SS_SIDTAB_H_
-#define _SS_SIDTAB_H_
+#ifndef XSM__FLASK__SS__SIDTAB_H
+#define XSM__FLASK__SS__SIDTAB_H
 
 #include "context.h"
 #include <xen/spinlock.h>
@@ -50,4 +50,4 @@ void sidtab_destroy(struct sidtab *s);
 void sidtab_set(struct sidtab *dst, struct sidtab *src);
 void sidtab_shutdown(struct sidtab *s);
 
-#endif    /* _SS_SIDTAB_H_ */
+#endif    /* XSM__FLASK__SS__SIDTAB_H */
diff --git a/xen/xsm/flask/ss/symtab.h b/xen/xsm/flask/ss/symtab.h
index fc442a2f7e..ed0f0ca6b9 100644
--- a/xen/xsm/flask/ss/symtab.h
+++ b/xen/xsm/flask/ss/symtab.h
@@ -6,8 +6,8 @@
  *
  * Author : Stephen Smalley, <sds@epoch.ncsc.mil>
  */
-#ifndef _SS_SYMTAB_H_
-#define _SS_SYMTAB_H_
+#ifndef XSM__FLASK__SS__SYMTAB_H
+#define XSM__FLASK__SS__SYMTAB_H
 
 #include "hashtab.h"
 
@@ -18,6 +18,6 @@ struct symtab {
 
 int symtab_init(struct symtab *s, unsigned int size);
 
-#endif    /* _SS_SYMTAB_H_ */
+#endif    /* XSM__FLASK__SS__SYMTAB_H */
 
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 08:29:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 08:29:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810171.1222887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swdgz-0000wB-2c; Fri, 04 Oct 2024 08:29:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810171.1222887; Fri, 04 Oct 2024 08: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 1swdgy-0000w4-W5; Fri, 04 Oct 2024 08:29:40 +0000
Received: by outflank-mailman (input) for mailman id 810171;
 Fri, 04 Oct 2024 08:29: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swdVO-0005Kj-9w
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 08:17:42 +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 1f6b0787-8229-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 10:17:40 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c5bca59416so2264198a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 01:17:40 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102858a4sm189829366b.49.2024.10.04.01.17.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 01:17:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f6b0787-8229-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728029860; x=1728634660; 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=ngf2pYsuazWK2xIYgIvfxzWZhbSrli1TcBM54fQEpbY=;
        b=SevK/kwTcewwCcf2ppXVGMGg70onl/kTnaxMl1+V/wzHFgmJ3Rh95ki5Tn+XJM8g+c
         xwdD5ExX1ndOx5BF0Y6cbg0UL5w4RlFPx1vX7nKZQ1YRUDzeyeBn/kmuJLNNgP81Dp3X
         VuuNX6U3lsnnSCCaOIJ7/03lEqWdqp5TRobPQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728029860; x=1728634660;
        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=ngf2pYsuazWK2xIYgIvfxzWZhbSrli1TcBM54fQEpbY=;
        b=klpvNc+4uVNj7ETrhK1swJI48MF7PaF8U3NottB1WrTN7YiyaeJRfRU4zz7pEQnjtY
         PHtB955WVfxkuPm4R2maMZZxnogfm06PSqflVfTIwkQMbEJEJP+U/DnF6xTPPCZd0oxw
         GBtPXeij7mRa4eUyHLCMHpIl93sN9oUOpbZ9ce5HT+ytZ+ysDPj44QDGlBV4O4SSd7Ht
         Uwzt/ILxlNHu0iORi4+0UkFV9N1VwIQsgcWwdxPn40570ZM0RUvWY1rngoKSM6aguyA8
         /zcDmGPycX5UmmSrjFX4LHxf/zDv2T3V3n5G52UsGUA47fglnubHnphnoqikYJRMyW29
         Qh7Q==
X-Gm-Message-State: AOJu0YzAkbUZtSNFuOnO9y9BOjANZcL0qdlmU+FUMDZkXDfH5fsuo1sP
	8TcsG4Mfr+ZLQhw414CiKIYYZi8IxDlHgh/f72FFViaRaNNGrvaRxcMmglM42OoKGZ+Jti9SyBT
	J
X-Google-Smtp-Source: AGHT+IE0BDCIHf6h370ut/vECkejWhP/9GuD2vZPowQCBQq3thTv44oL7LMnFNAelJj7YxwqE+1cIw==
X-Received: by 2002:a17:907:f719:b0:a98:fa32:141c with SMTP id a640c23a62f3a-a991bd7a019mr156948766b.36.1728029859487;
        Fri, 04 Oct 2024 01:17:39 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.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 v3 17/19] xen: Update header guards - VM event, mem access, monitor
Date: Fri,  4 Oct 2024 09:17:11 +0100
Message-Id: <20241004081713.749031-18-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Updated headers related to VM event, mem access AND monitor.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/hvm/monitor.h  | 6 +++---
 xen/arch/x86/include/asm/hvm/vm_event.h | 6 +++---
 xen/arch/x86/include/asm/mem_access.h   | 6 +++---
 xen/arch/x86/include/asm/monitor.h      | 6 +++---
 xen/arch/x86/include/asm/vm_event.h     | 6 +++---
 xen/include/asm-generic/monitor.h       | 6 +++---
 xen/include/asm-generic/vm_event.h      | 6 +++---
 xen/include/xen/mem_access.h            | 6 +++---
 xen/include/xen/monitor.h               | 6 +++---
 xen/include/xen/vm_event.h              | 6 +++---
 10 files changed, 30 insertions(+), 30 deletions(-)
---
Changes since v2:
- exclude missing public headers.

diff --git a/xen/arch/x86/include/asm/hvm/monitor.h b/xen/arch/x86/include/asm/hvm/monitor.h
index 02021be47b..8ef90a1b03 100644
--- a/xen/arch/x86/include/asm/hvm/monitor.h
+++ b/xen/arch/x86/include/asm/hvm/monitor.h
@@ -5,8 +5,8 @@
  * Arch-specific hardware virtual machine monitor abstractions.
  */
 
-#ifndef __ASM_X86_HVM_MONITOR_H__
-#define __ASM_X86_HVM_MONITOR_H__
+#ifndef ASM__X86__HVM__MONITOR_H
+#define ASM__X86__HVM__MONITOR_H
 
 #include <public/vm_event.h>
 
@@ -46,7 +46,7 @@ int hvm_monitor_vmexit(unsigned long exit_reason,
 int hvm_monitor_io(unsigned int port, unsigned int bytes,
                    bool in, bool str);
 
-#endif /* __ASM_X86_HVM_MONITOR_H__ */
+#endif /* ASM__X86__HVM__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/hvm/vm_event.h b/xen/arch/x86/include/asm/hvm/vm_event.h
index 506a85c774..c03df6f15e 100644
--- a/xen/arch/x86/include/asm/hvm/vm_event.h
+++ b/xen/arch/x86/include/asm/hvm/vm_event.h
@@ -5,12 +5,12 @@
  * Hardware virtual machine vm_event abstractions.
  */
 
-#ifndef __ASM_X86_HVM_VM_EVENT_H__
-#define __ASM_X86_HVM_VM_EVENT_H__
+#ifndef ASM__X86__HVM__VM_EVENT_H
+#define ASM__X86__HVM__VM_EVENT_H
 
 void hvm_vm_event_do_resume(struct vcpu *v);
 
-#endif /* __ASM_X86_HVM_VM_EVENT_H__ */
+#endif /* ASM__X86__HVM__VM_EVENT_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/mem_access.h b/xen/arch/x86/include/asm/mem_access.h
index 1a52a10322..b774f2f8b6 100644
--- a/xen/arch/x86/include/asm/mem_access.h
+++ b/xen/arch/x86/include/asm/mem_access.h
@@ -11,8 +11,8 @@
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
  */
 
-#ifndef __ASM_X86_MEM_ACCESS_H__
-#define __ASM_X86_MEM_ACCESS_H__
+#ifndef ASM__X86__MEM_ACCESS_H
+#define ASM__X86__MEM_ACCESS_H
 
 /*
  * Setup vm_event request based on the access (gla is -1ull if not available).
@@ -44,7 +44,7 @@ int p2m_set_suppress_ve_multi(struct domain *d,
 int p2m_get_suppress_ve(struct domain *d, gfn_t gfn, bool *suppress_ve,
                         unsigned int altp2m_idx);
 
-#endif /*__ASM_X86_MEM_ACCESS_H__ */
+#endif /*ASM__X86__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/arch/x86/include/asm/monitor.h b/xen/arch/x86/include/asm/monitor.h
index 3c64d8258f..2d0dde5041 100644
--- a/xen/arch/x86/include/asm/monitor.h
+++ b/xen/arch/x86/include/asm/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __ASM_X86_MONITOR_H__
-#define __ASM_X86_MONITOR_H__
+#ifndef ASM__X86__MONITOR_H
+#define ASM__X86__MONITOR_H
 
 #include <xen/sched.h>
 
@@ -126,4 +126,4 @@ static inline void arch_monitor_cleanup_domain(struct domain *d) {}
 bool monitored_msr(const struct domain *d, u32 msr);
 bool monitored_msr_onchangeonly(const struct domain *d, u32 msr);
 
-#endif /* __ASM_X86_MONITOR_H__ */
+#endif /* ASM__X86__MONITOR_H */
diff --git a/xen/arch/x86/include/asm/vm_event.h b/xen/arch/x86/include/asm/vm_event.h
index 46e77ed6d9..bac504ba70 100644
--- a/xen/arch/x86/include/asm/vm_event.h
+++ b/xen/arch/x86/include/asm/vm_event.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2015 Tamas K Lengyel (tamas@tklengyel.com)
  */
 
-#ifndef __ASM_X86_VM_EVENT_H__
-#define __ASM_X86_VM_EVENT_H__
+#ifndef ASM__X86__VM_EVENT_H
+#define ASM__X86__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -45,4 +45,4 @@ void vm_event_sync_event(struct vcpu *v, bool value);
 
 void vm_event_reset_vmtrace(struct vcpu *v);
 
-#endif /* __ASM_X86_VM_EVENT_H__ */
+#endif /* ASM__X86__VM_EVENT_H */
diff --git a/xen/include/asm-generic/monitor.h b/xen/include/asm-generic/monitor.h
index 1ade289099..e53f0823cb 100644
--- a/xen/include/asm-generic/monitor.h
+++ b/xen/include/asm-generic/monitor.h
@@ -9,8 +9,8 @@
  *
  */
 
-#ifndef __ASM_GENERIC_MONITOR_H__
-#define __ASM_GENERIC_MONITOR_H__
+#ifndef ASM_GENERIC__MONITOR_H
+#define ASM_GENERIC__MONITOR_H
 
 #include <xen/errno.h>
 #include <xen/lib.h>
@@ -52,7 +52,7 @@ void arch_monitor_cleanup_domain(struct domain *d)
     /* No arch-specific domain cleanup on GENERIC. */
 }
 
-#endif /* __ASM_GENERIC_MONITOR_H__ */
+#endif /* ASM_GENERIC__MONITOR_H */
 
 /*
  * Local variables:
diff --git a/xen/include/asm-generic/vm_event.h b/xen/include/asm-generic/vm_event.h
index 620c7b971c..ff538b6ba4 100644
--- a/xen/include/asm-generic/vm_event.h
+++ b/xen/include/asm-generic/vm_event.h
@@ -5,8 +5,8 @@
  * Copyright (c) 2015 Tamas K Lengyel (tamas@tklengyel.com)
  */
 
-#ifndef __ASM_GENERIC_VM_EVENT_H__
-#define __ASM_GENERIC_VM_EVENT_H__
+#ifndef ASM_GENERIC__VM_EVENT_H
+#define ASM_GENERIC__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -52,4 +52,4 @@ void vm_event_reset_vmtrace(struct vcpu *v)
     /* Nothing to do. */
 }
 
-#endif /* __ASM_GENERIC_VM_EVENT_H__ */
+#endif /* ASM_GENERIC__VM_EVENT_H */
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
index 87d93b31f6..2d0e472934 100644
--- a/xen/include/xen/mem_access.h
+++ b/xen/include/xen/mem_access.h
@@ -19,8 +19,8 @@
  * along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef _XEN_MEM_ACCESS_H
-#define _XEN_MEM_ACCESS_H
+#ifndef XEN__MEM_ACCESS_H
+#define XEN__MEM_ACCESS_H
 
 #include <xen/types.h>
 #include <xen/mm.h>
@@ -105,7 +105,7 @@ int mem_access_memop(unsigned long cmd,
 }
 #endif /* CONFIG_MEM_ACCESS */
 
-#endif /* _XEN_MEM_ACCESS_H */
+#endif /* XEN__MEM_ACCESS_H */
 
 /*
  * Local variables:
diff --git a/xen/include/xen/monitor.h b/xen/include/xen/monitor.h
index 713d54f7c1..be301826c0 100644
--- a/xen/include/xen/monitor.h
+++ b/xen/include/xen/monitor.h
@@ -19,8 +19,8 @@
  * License along with this program; If not, see <http://www.gnu.org/licenses/>.
  */
 
-#ifndef __XEN_MONITOR_H__
-#define __XEN_MONITOR_H__
+#ifndef XEN__MONITOR_H
+#define XEN__MONITOR_H
 
 #include <public/vm_event.h>
 
@@ -32,4 +32,4 @@ void monitor_guest_request(void);
 
 int monitor_traps(struct vcpu *v, bool sync, vm_event_request_t *req);
 
-#endif /* __XEN_MONITOR_H__ */
+#endif /* XEN__MONITOR_H */
diff --git a/xen/include/xen/vm_event.h b/xen/include/xen/vm_event.h
index 9a86358b42..3f2cb6fba8 100644
--- a/xen/include/xen/vm_event.h
+++ b/xen/include/xen/vm_event.h
@@ -20,8 +20,8 @@
  */
 
 
-#ifndef __VM_EVENT_H__
-#define __VM_EVENT_H__
+#ifndef XEN__VM_EVENT_H
+#define XEN__VM_EVENT_H
 
 #include <xen/sched.h>
 #include <public/vm_event.h>
@@ -98,7 +98,7 @@ void vm_event_set_registers(struct vcpu *v, vm_event_response_t *rsp);
 
 void vm_event_monitor_next_interrupt(struct vcpu *v);
 
-#endif /* __VM_EVENT_H__ */
+#endif /* XEN__VM_EVENT_H */
 
 /*
  * Local variables:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 09:30:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 09:30:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810223.1222898 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swedI-0007S7-AA; Fri, 04 Oct 2024 09:29:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810223.1222898; Fri, 04 Oct 2024 09:29: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 1swedI-0007S0-65; Fri, 04 Oct 2024 09:29:56 +0000
Received: by outflank-mailman (input) for mailman id 810223;
 Fri, 04 Oct 2024 09:29: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=IKoM=RA=darkstar.site=sakib@srs-se1.protection.inumbo.net>)
 id 1swedG-0007Ru-O1
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 09:29:54 +0000
Received: from fforwardh-a2-smtp.messagingengine.com
 (fforwardh-a2-smtp.messagingengine.com [103.168.172.197])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 34676d90-8233-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 11:29:51 +0200 (CEST)
Received: from phl-compute-08.internal (phl-compute-08.phl.internal
 [10.202.2.48])
 by mailfforwardh.phl.internal (Postfix) with ESMTP id E937329202B7;
 Fri,  4 Oct 2024 05:29:49 -0400 (EDT)
Received: from phl-frontend-01 ([10.202.2.160])
 by phl-compute-08.internal (MEProxy); Fri, 04 Oct 2024 05:29:49 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 4 Oct 2024 05:29:48 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34676d90-8233-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pobox.com; h=cc
	:cc:content-transfer-encoding:content-type:content-type:date
	:date:from:from:in-reply-to:message-id:mime-version:reply-to
	:subject:subject:to:to; s=fm1; t=1728034189; x=1728120589; bh=eh
	Og/ezBDvfKgSCDngUxEyEY7R0kWEf4bzv1DRPNRvo=; b=hWJHDQ++sYAMfWyVtM
	s373JtwXvZB4cX7o0isasR0hCMUI1DYzRm7eRBk8WDoRwr7P55x6kwR5J4HRLm9L
	n3FekGVlzVRFQS3tpI1jaQm5tJkjpy4e7lZgPtEk/QnDeWBTGgGyryF4dTVrxz4C
	WL2SLIHfkrEhFqEQIk7xK/sNZ3hxq7zRamxE/pfyL6cYDN0GgH9nzN0IGLiJwou5
	b3YDFYOdeU/kV+NS1Sm0mti4ho9Hg/mNq3pvpJCTQ2di4qmqAA9j+v6zofnihFru
	j4xhs30Dwkh1QCpofPahNXCbeUrj4kSzThaNGrGhrJPWXdtNQ/cRsXvu5wAx69FK
	WVRA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=fm2; t=1728034189; x=1728120589; bh=ehOg/ezBDvfKg
	SCDngUxEyEY7R0kWEf4bzv1DRPNRvo=; b=p6xwCJAKsTRBYdSbTv46xF8JC8jA2
	6jHCLv/hrtxjKtkQkAX856AYZQVz7qw7Vx8X/dvmy9R9wZl0ynBW0CvhUCVLYM7E
	mh0BDQyk9LC2ZExO4rPufkrMp+lEQYl2OA+srntdTtwOmBati0oriz8mtpm4fdem
	NsOSlB90S+dC6sdJJkmrNKRpzFXkqJeKhwfBe6CGWvC5ObUItzQT8f2Tf26DS9dW
	Ny1pdJznAzrZfSPJCCg7P7Ix8V7eMDocHe36Fbp1kVsyzJMTcSRpH0JNLX00nkTr
	iJ4Fr9S1x/0FLVGhjNBqd76R6nDU1gcB7fIA2PYtreBGzCfQmxRBSKEXg==
X-ME-Sender: <xms:jbX_ZkNJ1Q_PZJlQ3Gg4xnYvmUyiwj8UI7aw6gutTu9fsiBbI_7IcA>
    <xme:jbX_Zq9_XEmxT7d25x_-bv9qr-4nre8E502dJgCIEjBibuTY-1KE6hagVBAq8nCg0
    B2FjYKtMIz4dFxLcPs>
X-ME-Received: <xmr:jbX_ZrTvzcUmQ81ufSHrZtdrekKsC6IcPBQhzVxhw7EfGK9SzqG35BeSy87CUv216IAkL6sYw3lsaOuigDj0aJ_jCnRTnPRKMkd-gE2bSEcE43DK>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvfedgudeiucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofggtgfgsehtkeertdertdejnecu
    hfhrohhmpefuvghrghhihicumfhisghrihhkuceoufgvrhhgihihpgfmihgsrhhikhesvg
    hprghmrdgtohhmqeenucggtffrrghtthgvrhhnpeffvdelvdevgfdvjeeuvddvveefvdeu
    geethfdtveeggeegleejveejteegveettdenucffohhmrghinhepkhgvrhhnvghlrdhorh
    hgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepshgr
    khhisgesuggrrhhkshhtrghrrdhsihhtvgdpnhgspghrtghpthhtohepiedpmhhouggvpe
    hsmhhtphhouhhtpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhp
    rhhojhgvtghtrdhorhhgpdhrtghpthhtohepshgvrhhgihihpghkihgsrhhikhesvghprg
    hmrdgtohhmpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdprhgtphht
    thhopegrnhgurhgvfidrtghoohhpvghrfeestghithhrihigrdgtohhmpdhrtghpthhtoh
    eprhhoghgvrhdrphgruhestghithhrihigrdgtohhmpdhrtghpthhtohepshhsthgrsggv
    lhhlihhniheskhgvrhhnvghlrdhorhhg
X-ME-Proxy: <xmx:jbX_Zssz3pQCVd8PyHmv0USeFUxQYE2fGugjqY2ZBd_iiMCX0xngpA>
    <xmx:jbX_ZsczjAq5jfUhY-kiY-tOag7KFKl869yQO4rYhWIjBwEJ77bl-A>
    <xmx:jbX_Zg1ykUKiUAatEZDpJq4hKmDgow6KoMosd7YN0GX3A5-k5f0w9w>
    <xmx:jbX_Zg_P_uC9_30ZBxwNhyZsp27BxNerjo-wsJQ9jEAP9bknvGyj7A>
    <xmx:jbX_Zr6Qj9b_TmLkee060P1fmDESsv9JZdmNMnkgCCFCxT3AbNar2jD7eW_b>
Feedback-ID: id5d1ea8a:Fastmail
From: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
To: xen-devel@lists.xenproject.org
Cc: Sergiy Kibrik <Sergiy_Kibrik@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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 0/3] configurable stdvga & pmtimer emulation
Date: Fri,  4 Oct 2024 12:29:44 +0300
Message-Id: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This series presents previously posted patches [1,2] with review comments
addressed, Patches introduce build options for stdvga and ACPI PM timer
emulation drivers to make them configurable with possibility to be disabled for
finer-tuned setups that don't need this code.

New config options are now separated in a sub-menu, checks of emulation flags
are added so that domain can't be created if it requires devices that had been
disabled, patches were re-shaped a bit and other comments has been addressed.

  -Sergiy

  1. https://lore.kernel.org/xen-devel/20240912085709.858052-1-Sergiy_Kibrik@epam.com/
  2. https://lore.kernel.org/xen-devel/20240916063757.990070-1-Sergiy_Kibrik@epam.com/


Sergiy Kibrik (3):
  x86/hvm: introduce config option for ACPI PM timer
  x86/hvm: introduce config option for stdvga emulation
  x86/hvm: make ACPI PM & stdvga emulation optional

 xen/arch/x86/Kconfig               | 23 +++++++++++++++++++++++
 xen/arch/x86/domain.c              |  6 ++++++
 xen/arch/x86/hvm/Makefile          |  4 ++--
 xen/arch/x86/include/asm/acpi.h    |  5 +++++
 xen/arch/x86/include/asm/domain.h  |  6 ++++--
 xen/arch/x86/include/asm/hvm/io.h  |  4 ++++
 xen/arch/x86/include/asm/hvm/vpt.h | 10 ++++++++++
 7 files changed, 54 insertions(+), 4 deletions(-)

-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 09:31:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 09:31:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810225.1222906 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swefF-0000RB-JJ; Fri, 04 Oct 2024 09:31:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810225.1222906; Fri, 04 Oct 2024 09:31: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 1swefF-0000R4-Gm; Fri, 04 Oct 2024 09:31:57 +0000
Received: by outflank-mailman (input) for mailman id 810225;
 Fri, 04 Oct 2024 09:31: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=IKoM=RA=darkstar.site=sakib@srs-se1.protection.inumbo.net>)
 id 1swefE-0000Qy-Se
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 09:31:56 +0000
Received: from fforwardh-a2-smtp.messagingengine.com
 (fforwardh-a2-smtp.messagingengine.com [103.168.172.197])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7dbcee43-8233-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 11:31:54 +0200 (CEST)
Received: from phl-compute-08.internal (phl-compute-08.phl.internal
 [10.202.2.48])
 by mailfforwardh.phl.internal (Postfix) with ESMTP id 726B22920276;
 Fri,  4 Oct 2024 05:31:53 -0400 (EDT)
Received: from phl-frontend-01 ([10.202.2.160])
 by phl-compute-08.internal (MEProxy); Fri, 04 Oct 2024 05:31:53 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 4 Oct 2024 05:31:52 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7dbcee43-8233-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pobox.com; h=cc
	:cc:content-transfer-encoding:content-type:date:date:from:from
	:in-reply-to:in-reply-to:message-id:mime-version:references
	:reply-to:subject:subject:to:to; s=fm1; t=1728034313; x=
	1728120713; bh=69IFtkBSucFIbcgkPReVQNcoJr3WfIfUZOzP2zT3FK0=; b=r
	Wwygg+PiXT0BdLR06kzwxJWejxCkqvupaSH5MeI0fyjSbxt8pzIEd8Isy0RQXw5c
	rNtdpmBwc/QHBOrgeXN+dIH52yld8sPxOXTMfnkuCf/Jr782o52+/1/JmtCmDfPr
	O7B5gCHNlVIIR7sP1TP01opENyW/cVy3Q72LE0kkS16PQSzKtGIoYPoSo76benL4
	S3WFlY6jLrEEH+TTp+1/4CFVJ+4QcgXrm1oCAkFuEVUMGZpxTFXKD8tEGeHwiU2B
	ZNo+jdw7e9emtnEUT9Wlvt77KjvaFVTC3xVAuHXIVzoIrp3Ad4Lz4ocfbBfcnGA9
	jZ+XcHl4aVG9KopMsS7ew==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1728034313; x=
	1728120713; bh=69IFtkBSucFIbcgkPReVQNcoJr3WfIfUZOzP2zT3FK0=; b=U
	OpgQFoQgK/LsE/Y+AK0fe+HJ2MOx3Oy4Olrua5zwzndzrUeVygi4F7z9yAg9ujcE
	8arS9w5GRrIvmZSq/jqWNwP6TvmocT+rwrkgijRulpqfLtD1SEo92x6rUX6le6pi
	WM1Kh4E4OijThCkMjs/pceRRRR5S9bfDPf/p5WIweYoVdbAbgk7UkM0QBmEiq4Et
	TXNxgrpjRP79LxALzsedAwbn1RcbH4X2RpNZGtVUX1+FGxkh2X/DKmif9ZtWuBIm
	5kYp6ydcfLdih8AF9gXizWTrI+EqE4MFT/VqIACErsSxPc49m8fZZesyLvkVQrTO
	XPiLP84YayeUh/2/Nsa4w==
X-ME-Sender: <xms:CLb_ZvsMXVbxkBR8Ge0OzRNJAKs5LT-pAlRZabw-0wkSKnWtVRS3Rw>
    <xme:CLb_ZgclokjdfVNlW3-FDjNbx9DJm7Sencr_c63sSa02PNKi1WmSVMWh-2rrdJM0W
    goEk3Uv9xaT3DTvUf0>
X-ME-Received: <xmr:CLb_ZixmIsZhH9YJs6_zd3mqhlevO3uTlrBHUEj3QrErFR7AG4DAZaU_vk840spgKixDURCafu_ZZdMxNKGsZ3_Rku-v7LXVum2uzKjehJ-_OgIQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvfedgudejucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredttden
    ucfhrhhomhepufgvrhhgihihucfmihgsrhhikhcuoefuvghrghhihigpmfhisghrihhkse
    gvphgrmhdrtghomheqnecuggftrfgrthhtvghrnheptdejgeegvdffkeekleefueevgfdu
    heevkedvhfdvkeeludehleegheeivedugfejnecuvehluhhsthgvrhfuihiivgeptdenuc
    frrghrrghmpehmrghilhhfrhhomhepshgrkhhisgesuggrrhhkshhtrghrrdhsihhtvgdp
    nhgspghrtghpthhtohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepgigvnh
    dquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohep
    shgvrhhgihihpghkihgsrhhikhesvghprghmrdgtohhmpdhrtghpthhtoheprghnughrvg
    ifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhopehrohhgvghrrdhp
    rghusegtihhtrhhigidrtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvg
    hrnhgvlhdrohhrghdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhm
X-ME-Proxy: <xmx:CLb_ZuN05OG3zhkeQI-QyQ0tqtqtCzskwwwTZrmptVt-MaQFARsluQ>
    <xmx:CLb_Zv960UaCFwJgLe8XwXG7WFd3j2yWZXMJEmFd2AIuYqLEsT26Tw>
    <xmx:CLb_ZuUUrWEzvU-sxgau8AChTqYVrMV0dCfDZAceh6s_5CXpImhilQ>
    <xmx:CLb_Zgc1MWOkIwLRsOXeJoIBzcRZONG8PRkZd9TpN3_JWGaLzvG_9A>
    <xmx:Cbb_Zra9O7FXL8A4ui6zodtIQTicBznIz66iRkqObpE_jl8uXwW1iYMEJ6CW>
Feedback-ID: iddd9dc1e:Fastmail
From: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
To: xen-devel@lists.xenproject.org
Cc: Sergiy Kibrik <Sergiy_Kibrik@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jan Beulich <jbeulich@suse.com>
Subject: [XEN PATCH v1 1/3] x86/hvm: introduce config option for ACPI PM timer
Date: Fri,  4 Oct 2024 12:31:50 +0300
Message-Id: <3ef3724e21b196edd277c94598ebe6624813ede4.1728032664.git.Sergiy_Kibrik@epam.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce config option X86_PMTIMER so that pmtimer emulation driver can later
be made configurable and be disabled on systems that don't need it.

As a first step the option is hidden from user, thus not making any functional
changes here.

Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
CC: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/Kconfig               |  3 +++
 xen/arch/x86/hvm/Makefile          |  2 +-
 xen/arch/x86/include/asm/acpi.h    |  5 +++++
 xen/arch/x86/include/asm/domain.h  |  3 ++-
 xen/arch/x86/include/asm/hvm/vpt.h | 10 ++++++++++
 5 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 9cdd04721a..95275dc17e 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -144,6 +144,9 @@ config INTEL_VMX
 	  If your system includes a processor with Intel VT-x support, say Y.
 	  If in doubt, say Y.
 
+config X86_PMTIMER
+	def_bool HVM
+
 config XEN_SHSTK
 	bool "Supervisor Shadow Stacks"
 	depends on HAS_AS_CET_SS
diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
index 4c1fa5c6c2..321241f0bf 100644
--- a/xen/arch/x86/hvm/Makefile
+++ b/xen/arch/x86/hvm/Makefile
@@ -18,7 +18,7 @@ obj-y += irq.o
 obj-y += monitor.o
 obj-y += mtrr.o
 obj-y += nestedhvm.o
-obj-y += pmtimer.o
+obj-$(CONFIG_X86_PMTIMER) += pmtimer.o
 obj-y += quirks.o
 obj-y += rtc.o
 obj-y += save.o
diff --git a/xen/arch/x86/include/asm/acpi.h b/xen/arch/x86/include/asm/acpi.h
index 217819dd61..8d92014ae9 100644
--- a/xen/arch/x86/include/asm/acpi.h
+++ b/xen/arch/x86/include/asm/acpi.h
@@ -150,8 +150,13 @@ void acpi_mmcfg_init(void);
 /* Incremented whenever we transition through S3. Value is 1 during boot. */
 extern uint32_t system_reset_counter;
 
+#ifdef CONFIG_X86_PMTIMER
 void hvm_acpi_power_button(struct domain *d);
 void hvm_acpi_sleep_button(struct domain *d);
+#else
+static inline void hvm_acpi_power_button(struct domain *d) {}
+static inline void hvm_acpi_sleep_button(struct domain *d) {}
+#endif
 
 /* suspend/resume */
 void save_rest_processor_state(void);
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index bdcdb8de09..3f65bfd190 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -496,7 +496,8 @@ struct arch_domain
 
 #define has_vlapic(d)      (!!((d)->arch.emulation_flags & X86_EMU_LAPIC))
 #define has_vhpet(d)       (!!((d)->arch.emulation_flags & X86_EMU_HPET))
-#define has_vpm(d)         (!!((d)->arch.emulation_flags & X86_EMU_PM))
+#define has_vpm(d)         (IS_ENABLED(CONFIG_X86_PMTIMER) && \
+                            !!((d)->arch.emulation_flags & X86_EMU_PM))
 #define has_vrtc(d)        (!!((d)->arch.emulation_flags & X86_EMU_RTC))
 #define has_vioapic(d)     (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC))
 #define has_vpic(d)        (!!((d)->arch.emulation_flags & X86_EMU_PIC))
diff --git a/xen/arch/x86/include/asm/hvm/vpt.h b/xen/arch/x86/include/asm/hvm/vpt.h
index 0b92b28625..333b346068 100644
--- a/xen/arch/x86/include/asm/hvm/vpt.h
+++ b/xen/arch/x86/include/asm/hvm/vpt.h
@@ -187,10 +187,20 @@ void rtc_deinit(struct domain *d);
 void rtc_reset(struct domain *d);
 void rtc_update_clock(struct domain *d);
 
+#ifdef CONFIG_X86_PMTIMER
 void pmtimer_init(struct vcpu *v);
 void pmtimer_deinit(struct domain *d);
 void pmtimer_reset(struct domain *d);
 int pmtimer_change_ioport(struct domain *d, uint64_t version);
+#else
+static inline void pmtimer_init(struct vcpu *v) {}
+static inline void pmtimer_deinit(struct domain *d) {}
+static inline void pmtimer_reset(struct domain *d) {}
+static inline int pmtimer_change_ioport(struct domain *d, uint64_t version)
+{
+    return -ENODEV;
+}
+#endif
 
 void hpet_init(struct domain *d);
 void hpet_deinit(struct domain *d);
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 09:34:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 09:34:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810228.1222917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swehF-0000yN-UL; Fri, 04 Oct 2024 09:34:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810228.1222917; Fri, 04 Oct 2024 09:34: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 1swehF-0000yG-Ra; Fri, 04 Oct 2024 09:34:01 +0000
Received: by outflank-mailman (input) for mailman id 810228;
 Fri, 04 Oct 2024 09:34: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=IKoM=RA=darkstar.site=sakib@srs-se1.protection.inumbo.net>)
 id 1swehE-0000y7-5D
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 09:34:00 +0000
Received: from fforwardh-a2-smtp.messagingengine.com
 (fforwardh-a2-smtp.messagingengine.com [103.168.172.197])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c756b6c1-8233-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 11:33:58 +0200 (CEST)
Received: from phl-compute-10.internal (phl-compute-10.phl.internal
 [10.202.2.50])
 by mailfforwardh.phl.internal (Postfix) with ESMTP id E23262920276;
 Fri,  4 Oct 2024 05:33:56 -0400 (EDT)
Received: from phl-frontend-02 ([10.202.2.161])
 by phl-compute-10.internal (MEProxy); Fri, 04 Oct 2024 05:33:56 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 4 Oct 2024 05:33:55 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c756b6c1-8233-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pobox.com; h=cc
	:cc:content-transfer-encoding:content-type:date:date:from:from
	:in-reply-to:in-reply-to:message-id:mime-version:references
	:reply-to:subject:subject:to:to; s=fm1; t=1728034436; x=
	1728120836; bh=iFp9K5MGCW7+gkI5DtCOpQKX7h2U+MWfWZWlhRdQB44=; b=n
	KEsaJTTjAU/zd9TokIbxzlxPPIJMSxKo0t0Q1YNkWr6pzL4kPlT8HiANDGm3WKC3
	q8QwluM4Kgdxjg1pRUm3QbZQpM7d75I+TJuqQew7q+yXJfgaQB0+eFfKk5Lqm1m3
	KV2npdLpqnGc9zqL5mK7hPBZksgddLjXsadzdnwvrLBx1TVJsaQssLMJoAHsXAA3
	t3DIqc827DGM4Xi12zNm85oU73u9ChOgr/LplrmsyEcvd7gtsVubvPCuEntGlA9u
	fISZPWNEZPrEeJty/SQda043X5xjVZ8Cx0d13Ro2cNj9Dr3+GX+2tBOqvKd4LnvC
	VwxLnO1smGhWZW6y2WVwQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1728034436; x=
	1728120836; bh=iFp9K5MGCW7+gkI5DtCOpQKX7h2U+MWfWZWlhRdQB44=; b=c
	dHQ3cgTaP3OLIQ7SEV6AwBQhdHQd5xNbqCUSrm7dW+tm9MYMo26Rc4N/i99vdwBz
	RKCpGijqKyqx+iHVhCpbcHJT+PuQIsuWc8L1LTUMYUxfopJA/cgoO2TsP52GoSTq
	C0N0dVKz/Pa1rSptUEfIhLD0yc00RU6LEIRE6C+/iEBHdcnW2j65OVB+bnlifYzd
	p7JervRypS0x0zzltbmKFHpzUEUcfMMKVfeKPDPowC6T9AKlpknemIlUYNtW2/6o
	IH73j0VVbjXZ+iwU87ztxiCorzLEG09aXBSsxLpwrNsHnGCfcECgL0ZEDkxk2dev
	oonfl46Sf9r8YHc1G+qtQ==
X-ME-Sender: <xms:hLb_Zph_QuwbXcneIy-0Ur_OZjWf4LgNYN8Kq7Pz4ghRUxoiDjBKhw>
    <xme:hLb_ZuD_CA8WeCZCgQVypDT8eDTaZF4oVZ8YCRxak3JQ4a6aQiVFn9xmsnP_czpMJ
    T-Sdjl0dsoGA1UE2lc>
X-ME-Received: <xmr:hLb_ZpGKmJZ_9uoKzxHbfAjlfgUSN-O8XLSJY3MhqkEojt4JMKKbxkQMbx1NQIdSuWs87t4OQYiblgNZW-m4kqGv6cMJ8pEwxV6PukR2cadpWZx->
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvfedgudejucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofgjfhgggfestdekredtredttden
    ucfhrhhomhepufgvrhhgihihucfmihgsrhhikhcuoefuvghrghhihigpmfhisghrihhkse
    gvphgrmhdrtghomheqnecuggftrfgrthhtvghrnheptdejgeegvdffkeekleefueevgfdu
    heevkedvhfdvkeeludehleegheeivedugfejnecuvehluhhsthgvrhfuihiivgeptdenuc
    frrghrrghmpehmrghilhhfrhhomhepshgrkhhisgesuggrrhhkshhtrghrrdhsihhtvgdp
    nhgspghrtghpthhtohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepgigvnh
    dquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohep
    shgvrhhgihihpghkihgsrhhikhesvghprghmrdgtohhmpdhrtghpthhtoheprghnughrvg
    ifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhopehrohhgvghrrdhp
    rghusegtihhtrhhigidrtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvg
    hrnhgvlhdrohhrghdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtohhm
X-ME-Proxy: <xmx:hLb_ZuSxAOyuD5nbDHnqR3y0of4mrUrGW2qiQ-E-naxzahihOmI5wA>
    <xmx:hLb_Zmxakg6404u2-9EzXO7EE_Pr2Igiyg5BGuKCW11dDG2vC99UVQ>
    <xmx:hLb_Zk4kBDaEHuLq2UI-eI2p3XMc104yrM-MHIxdH5BgpIIiSr7LuA>
    <xmx:hLb_Zrwa50bUHpKYP0R5DB0yWqZklBW6ceYWYLUJW76zqJEXnj0CGA>
    <xmx:hLb_ZgvFgqPKlSFrcip7GjJWQXIqVVSS07knUoSyfn3PJIh65S0TZrk1KSEJ>
Feedback-ID: i5d7f6ead:Fastmail
From: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
To: xen-devel@lists.xenproject.org
Cc: Sergiy Kibrik <Sergiy_Kibrik@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jan Beulich <jbeulich@suse.com>
Subject: [XEN PATCH v1 2/3] x86/hvm: introduce config option for stdvga emulation
Date: Fri,  4 Oct 2024 12:33:53 +0300
Message-Id: <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce config option X86_STDVGA so that stdvga emulation driver can later be
made configurable and be disabled on systems that don't need it.

As a first step the option is hidden from user. No functional changes intended.

Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
CC: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/x86/Kconfig              | 3 +++
 xen/arch/x86/hvm/Makefile         | 2 +-
 xen/arch/x86/include/asm/domain.h | 3 ++-
 xen/arch/x86/include/asm/hvm/io.h | 4 ++++
 4 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 95275dc17e..89c42ff6da 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -147,6 +147,9 @@ config INTEL_VMX
 config X86_PMTIMER
 	def_bool HVM
 
+config X86_STDVGA
+	def_bool HVM
+
 config XEN_SHSTK
 	bool "Supervisor Shadow Stacks"
 	depends on HAS_AS_CET_SS
diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
index 321241f0bf..b7741b0f60 100644
--- a/xen/arch/x86/hvm/Makefile
+++ b/xen/arch/x86/hvm/Makefile
@@ -22,7 +22,7 @@ obj-$(CONFIG_X86_PMTIMER) += pmtimer.o
 obj-y += quirks.o
 obj-y += rtc.o
 obj-y += save.o
-obj-y += stdvga.o
+obj-$(CONFIG_X86_STDVGA) += stdvga.o
 obj-y += vioapic.o
 obj-y += vlapic.o
 obj-y += vm_event.o
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 3f65bfd190..675a13d917 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -501,7 +501,8 @@ struct arch_domain
 #define has_vrtc(d)        (!!((d)->arch.emulation_flags & X86_EMU_RTC))
 #define has_vioapic(d)     (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC))
 #define has_vpic(d)        (!!((d)->arch.emulation_flags & X86_EMU_PIC))
-#define has_vvga(d)        (!!((d)->arch.emulation_flags & X86_EMU_VGA))
+#define has_vvga(d)        (IS_ENABLED(CONFIG_X86_STDVGA) && \
+                            !!((d)->arch.emulation_flags & X86_EMU_VGA))
 #define has_viommu(d)      (!!((d)->arch.emulation_flags & X86_EMU_IOMMU))
 #define has_vpit(d)        (!!((d)->arch.emulation_flags & X86_EMU_PIT))
 #define has_pirq(d)        (!!((d)->arch.emulation_flags & X86_EMU_USE_PIRQ))
diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h
index f2b8431fac..32a2490fbc 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -108,7 +108,11 @@ struct vpci_arch_msix_entry {
     int pirq;
 };
 
+#ifdef CONFIG_X86_STDVGA
 void stdvga_init(struct domain *d);
+#else
+static inline void stdvga_init(struct domain *d) {}
+#endif
 
 extern void hvm_dpci_msi_eoi(struct domain *d, int vector);
 
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 09:36:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 09:36:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810232.1222926 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swejE-0001Xt-9E; Fri, 04 Oct 2024 09:36:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810232.1222926; Fri, 04 Oct 2024 09:36: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 1swejE-0001Xm-5n; Fri, 04 Oct 2024 09:36:04 +0000
Received: by outflank-mailman (input) for mailman id 810232;
 Fri, 04 Oct 2024 09:36: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=IKoM=RA=darkstar.site=sakib@srs-se1.protection.inumbo.net>)
 id 1swejD-0001Xg-4K
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 09:36:03 +0000
Received: from fforwardh-a2-smtp.messagingengine.com
 (fforwardh-a2-smtp.messagingengine.com [103.168.172.197])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 10f01525-8234-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 11:36:01 +0200 (CEST)
Received: from phl-compute-12.internal (phl-compute-12.phl.internal
 [10.202.2.52])
 by mailfforwardh.phl.internal (Postfix) with ESMTP id 26AE92920282;
 Fri,  4 Oct 2024 05:36:00 -0400 (EDT)
Received: from phl-frontend-02 ([10.202.2.161])
 by phl-compute-12.internal (MEProxy); Fri, 04 Oct 2024 05:36:00 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 4 Oct 2024 05:35:59 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10f01525-8234-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pobox.com; h=cc
	:cc:content-transfer-encoding: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=fm1; t=1728034560;
	 x=1728120960; bh=Zpz7DTxxwwyi4PDkAnWSolffL9IcWSA0k17jMTulmTw=; b=
	L5HiRpmbbsb6DEEzBMsOoBzzSBJZo5/3112OA+BdOY4CiwgAZ7Wv9rRvQRDU71jV
	EZSRGRZHAoVO7Te8zXsQJiorO6uxGLdJqCpLTEF2zkZODPYwakRpoRS72r8/EL+R
	x4nOe5B0W09L/ekMXrgd2k9lQmZUpRN8WVjYpLPaDjdSvG0IHCpz8sYQvViPmHpx
	jHqUaPBXxXWctj2lX79UWPd3sLIkxjOUrT1Aor5yNuUguRLjcYsG9GyOUMCx0mYW
	i+dOFW+G7tlnCCAOaOBwSvYAyfAxtKDA0/mE1KFCqvx4yvmYl6S636RzQn309Mxw
	2+opq5roWkCiA9D0/vz92Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=1728034560; x=
	1728120960; bh=Zpz7DTxxwwyi4PDkAnWSolffL9IcWSA0k17jMTulmTw=; b=Y
	GBP+r6zQSpwJXHsJ7giAfMwPLPf3+INDt3kguJYl2EdGSdyfDAhPg0wrcw6TQJXY
	Ek5CNtpJbmFSviIVlu8wvNndOcuQ7NbckFIJZFsXXl/rkxoo/t50D38ytt5C4LZj
	rjgTDcX0i381xu8luhcOR08zwro7u8gMw/OZ+RCuIyOV7kXHKu3Kvu+NW3FogsPO
	yGaR3wcaTf9TETYsye7KWniESuRIwt1QlI1L8lL98sxA0iewrnUTm3JQ0jqkik3q
	isWdhZiokKsKEphCjzOTrsbvqz8yDZKu93vUCxU0f4lS7uJBeaSmbqUM/74Ct707
	CC/VMvKcKa6RzRRBHvzdA==
X-ME-Sender: <xms:_7b_ZhTpm_mzkR0VNzCJl0rqEKLs6MMLVp-i6Qyak0ZAsg4nhtD5pA>
    <xme:_7b_ZqxRMNk7l9D3qs4ZHdqddZPy73ZmcciNmMx-MSL6AKaXxPGDFqn3WoxueAfiU
    aWvovkQqqGDP87ohYk>
X-ME-Received: <xmr:_7b_Zm2m40w5HZ8wh_K7AomN_9lA76m-ki9LKpSCbn8mRsqJxK-D4GniG7OD24-24xcAoUKkWeK-sockNfAYCWAf9NBunA4Vlxo5yjnJBgExalDb>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvfedgudekucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofgjfhggtgfgsehtkeertdertdej
    necuhfhrohhmpefuvghrghhihicumfhisghrihhkuceoufgvrhhgihihpgfmihgsrhhikh
    esvghprghmrdgtohhmqeenucggtffrrghtthgvrhhnpeeigfdvjeduieefveefudegvdel
    gfehjedttdeifffhlefgudetudetheduleevueenucevlhhushhtvghrufhiiigvpedtne
    curfgrrhgrmhepmhgrihhlfhhrohhmpehsrghkihgssegurghrkhhsthgrrhdrshhithgv
    pdhnsggprhgtphhtthhopeeipdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeigvg
    hnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthho
    pehsvghrghhihigpkhhisghrihhksegvphgrmhdrtghomhdprhgtphhtthhopehjsggvuh
    hlihgthhesshhushgvrdgtohhmpdhrtghpthhtoheprghnughrvgifrdgtohhophgvrhef
    segtihhtrhhigidrtghomhdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrhhigi
    drtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:_7b_ZpA203t4L8-E6xTL8Ypb0ZlvpSg5f6qrDRFO8RwvDmZsYvny6g>
    <xmx:_7b_Zqhf9-SjVxd0MQrZzAuuGgsAffnJ0D9Cvm3JKsmB6xEk8FyjpQ>
    <xmx:_7b_ZtpGCx1TYqliW6axLihgVs7tD0cfIKiKgMPPOyZqljvgxOwnRA>
    <xmx:_7b_ZliYCk9lISND_4EELlfLq2I1J-E-3qg8tm5QyUzj6ebilriIfQ>
    <xmx:ALf_ZifapcZsH9Lhdsv1W1Q-T6w9vXHjG4_In-wh5lH4_0D1OsAer-0Zvjze>
Feedback-ID: iddf78192:Fastmail
From: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
To: xen-devel@lists.xenproject.org
Cc: Sergiy Kibrik <Sergiy_Kibrik@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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 3/3] x86/hvm: make ACPI PM & stdvga emulation optional
Date: Fri,  4 Oct 2024 12:35:57 +0300
Message-Id: <9b27c594b3a63b75826a864dea08d902fd8702c3.1728032664.git.Sergiy_Kibrik@epam.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Make it possible to build a configuration without code for PM timer or stdvga
drivers. This may help to reduce code's footprint a bit for systems that don't
run HVM guests and also don't need these devices emulated.

Introduced additional check of domain's emulation flags, to cover the case
when user explicitly states the requirement of emulated devices that are
disabled in the build. HVM always require these devices to be present so domains
of this type can't be created when stdvga or pmtimer are disabled.

Options X86_STDVGA & X86_PMTIMER are dependant on HVM option, because these
drivers are part of HVM support code.

Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
---
 xen/arch/x86/Kconfig  | 21 +++++++++++++++++++--
 xen/arch/x86/domain.c |  6 ++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 89c42ff6da..05551bd722 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -144,11 +144,28 @@ config INTEL_VMX
 	  If your system includes a processor with Intel VT-x support, say Y.
 	  If in doubt, say Y.
 
+menu "Emulated devices support"
+	visible if EXPERT
+	depends on HVM
+
 config X86_PMTIMER
-	def_bool HVM
+	bool "ACPI PM timer emulation support"
+	default y
+	help
+	  Build pmtimer driver that emulates ACPI PM timer for HVM/PVH guests.
+
+	  If unsure, say Y.
 
 config X86_STDVGA
-	def_bool HVM
+	bool "Standard VGA card emulation support"
+	default y
+	help
+	  Build stdvga driver that emulates standard VGA card with VESA BIOS
+	  Extensions for HVM/PVH guests.
+
+	  If unsure, say Y.
+
+endmenu
 
 config XEN_SHSTK
 	bool "Supervisor Shadow Stacks"
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 89aad7e897..32dd3f84cd 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -742,11 +742,17 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
 
 static bool emulation_flags_ok(const struct domain *d, uint32_t emflags)
 {
+    const uint32_t disabled_emu_mask =
+        (IS_ENABLED(CONFIG_X86_PMTIMER) ? 0 : X86_EMU_PM) |
+        (IS_ENABLED(CONFIG_X86_STDVGA)  ? 0 : X86_EMU_VGA);
 #ifdef CONFIG_HVM
     /* This doesn't catch !CONFIG_HVM case but it is better than nothing */
     BUILD_BUG_ON(X86_EMU_ALL != XEN_X86_EMU_ALL);
 #endif
 
+    if ( emflags & disabled_emu_mask )
+        return false;
+
     if ( is_hvm_domain(d) )
     {
         if ( is_hardware_domain(d) &&
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 09:55:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 09:55:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810247.1222937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swf2C-0005oH-Rl; Fri, 04 Oct 2024 09:55:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810247.1222937; Fri, 04 Oct 2024 09: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 1swf2C-0005oA-PC; Fri, 04 Oct 2024 09:55:40 +0000
Received: by outflank-mailman (input) for mailman id 810247;
 Fri, 04 Oct 2024 09:55: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swf2B-0005nI-F8
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 09:55:39 +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 cd6d157b-8236-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 11:55:36 +0200 (CEST)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-37ce14ab7eeso1611954f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 02:55:36 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104c75b4sm200968066b.202.2024.10.04.02.55.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 02:55:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd6d157b-8236-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728035735; x=1728640535; 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=TzFi01ZFHHEu7FaARB4F4ZRxCS6RfmPm39Tq3Q1bTWw=;
        b=DY8NbrlsY5DwwL0zEdxz0zQAQQHGqpCrGlPv9FmQwMyyRNnB+uDThSvswIADWP+7tf
         H0lPA3zruy9UlZy5EYOS1n2h03p1QFwQ2Rx9aWHMmniRLz+OnTU4zHHS5k5ksX1sN3Aj
         PnnLf6xQICvf8d5J206p6YGmdCKVriqLjTHMM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728035735; x=1728640535;
        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=TzFi01ZFHHEu7FaARB4F4ZRxCS6RfmPm39Tq3Q1bTWw=;
        b=Nnmmlc5yq4WVQZ15uIH9c42M7blHDuf/vKecudEgaofVLCLeMm+0bcCZnJj4bVzKzr
         Ek08qjf0ccdrDklRdULxJErDsSaVEcnFb8vElLOOdyQDzGnffvX/k5hennkAH++kEtnp
         bk0xKNBHeFrQH1Ur8p7Jrf+nvoJc3R8pZKADImHNuLh+2xF0U1oc9ZSCsV8UtH/RvsGU
         XqOzOFN7zeI3D2EL51V5k9XCiYH92RYF4kKLCq8wz4iq+2fO/7ev/XwpNSI9Adogdvkk
         gO+aqe73NCUAvVM9ClCn0V64wEQvgvi0+9pcj3J23zy8U4pP1HIwJeL5qeboVA7WKY1G
         UyBw==
X-Gm-Message-State: AOJu0Yx5wQEWQI6XcUrLChh03KprvMVRMDjD0JJeiH477tnC9Ko3OnFq
	TuwUXO1LscThPXd8aajVRql8dthu++RW6bF+wec4cdu88lJk2gOrHqu1RTTh1FpilYEmOyKFTOo
	9
X-Google-Smtp-Source: AGHT+IFEl87T4x4slYP3lPu/6a0cqpoSAdT/an35en90ezbVeYwnDOUPHBMSDesaEfYt9sV8GuYOlg==
X-Received: by 2002:a5d:50c2:0:b0:37c:cda4:a6ca with SMTP id ffacd0b85a97d-37d0e72b9e6mr1892515f8f.17.1728035735047;
        Fri, 04 Oct 2024 02:55:35 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] MAINTAINERS: minor file line updates
Date: Fri,  4 Oct 2024 10:55:26 +0100
Message-Id: <20241004095526.889790-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

"xen/arch/arm/include/asm/tee" is a directory and should be terminated
by a slash ("/").
"xen/arch/*/include/asm/*/mem_access.h" did not match any files
from shell, all "mem_access.h" files are directly under "asm" directory.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 MAINTAINERS | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index fb0ebf0939..13d718f7f0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -517,7 +517,7 @@ F:	stubdom/
 TEE MEDIATORS
 M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
 S:	Supported
-F:	xen/arch/arm/include/asm/tee
+F:	xen/arch/arm/include/asm/tee/
 F:	xen/arch/arm/tee/
 
 TOOLSTACK
@@ -545,7 +545,7 @@ F:	tools/misc/xen-access.c
 F:	xen/arch/*/*/mem_access.c
 F:	xen/arch/*/*/monitor.c
 F:	xen/arch/*/*/vm_event.c
-F:	xen/arch/*/include/asm/*/mem_access.h
+F:	xen/arch/*/include/asm/mem_access.h
 F:	xen/arch/*/include/asm/*/monitor.h
 F:	xen/arch/*/include/asm/*/vm_event.h
 F:	xen/arch/*/include/asm/mem_access.h
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 10:02:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 10:02:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810256.1222947 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swf8E-000831-Ft; Fri, 04 Oct 2024 10:01:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810256.1222947; Fri, 04 Oct 2024 10:01: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 1swf8E-00082u-Cw; Fri, 04 Oct 2024 10:01:54 +0000
Received: by outflank-mailman (input) for mailman id 810256;
 Fri, 04 Oct 2024 10:01: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=6mAw=RA=gmail.com=ubizjak@srs-se1.protection.inumbo.net>)
 id 1swf8D-00082o-GE
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 10:01:53 +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 ad8586ac-8237-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 12:01:51 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fac47f0b1aso24491561fa.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 03:01:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad8586ac-8237-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728036111; x=1728640911; 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=cieeCIQbn3uKGp6ANoCcdjT0voB4iLaxe9sLqJZ6O1w=;
        b=Ex7uWdy/1/CSu7pPIk02hJIUh0DvP9y1+DLBLU0aFiydbz7oxinvP6zMhN09xhJOLA
         vaVg/rrd5NWuF3Dmj6T4ssOrr5TGpjemHw8mGigEOjifXmCmtNTutQtWGwaFmHhgzl8d
         ozqA7e4TmfSgddvtrqkWpJr6Y2Q8V5ipRYfzMhVzTFld0ubohyjQCH4HW2keJOUrNIJB
         9xvmXPMWFGlJmhMOOvuxAG/GuLoXW2yv1Fk4/cMl2UW+J5iEBLdyKH0Dwb34pipEGE0p
         /DhtCXSrgMGkevtDQ125jqZHEjyM9wRr7e9w6WPFzfZz799dSfnpVpEj26zes7jHWyia
         5/EA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728036111; x=1728640911;
        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=cieeCIQbn3uKGp6ANoCcdjT0voB4iLaxe9sLqJZ6O1w=;
        b=C+xdp0oMZNt+sqvKU8aPL7Rlo0fQVys0oO8uYQfsDpH/3JnksAPcll5xxD6cbcAPUI
         Ytsk1FLGL/FHdor1Nz6Ep6vY9hOskLF6sm0cT5BnQu2s3JNwSF3CFa0JnUiRarMpwty1
         +4Em581SKfz9ZXVMYjJ/jfTaGQWhf0N31bDnDbfNMlID9EEjNv4wcoDnESYQ3q7yXdC0
         59X6jSsue3k6xk2NVG+W5P81I4KN0ryUMDXYW43wyZc47VUpiicmXrqsE/awJ+nFUK/i
         i3nWbMCPuTDt+R15xcPY431K7GOj7NaqQYZRYnWYNkSvhPOznepE4kZqahfL8afnyBEV
         MmWA==
X-Forwarded-Encrypted: i=1; AJvYcCWA80IOJRmQ+wI100r0tgr9N0r+qKU74BDYGTvvjzWVYcvW434mQbBjQTc3G3ZIv7lfquhsPtLTAac=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw0sgg2I2hTkVj2EcXcGXXfF/xkQaUlPz8rNHYEI87JABFKBKvv
	971EN0vmdHj1wXaNNM9vgTuL9wk1WqJTERYybaFXselRfV5JJkrSPJ3SCo5vcedTe2cPepSrU7T
	LFslov7X1MLafB79kAQyM4V+uTPc=
X-Google-Smtp-Source: AGHT+IFNljN6dwZlkogrdacVOY8k+lgMnJISEE8yVKjz9PNhP8aN8ZuhCudCHYoRMsLr1EPgwfyfZf3qjEWBYLSi1O4=
X-Received: by 2002:a2e:b889:0:b0:2ef:20ae:d113 with SMTP id
 38308e7fff4ca-2faf3d8a95emr9412991fa.40.1728036110938; Fri, 04 Oct 2024
 03:01:50 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com> <20240925150059.3955569-35-ardb+git@google.com>
In-Reply-To: <20240925150059.3955569-35-ardb+git@google.com>
From: Uros Bizjak <ubizjak@gmail.com>
Date: Fri, 4 Oct 2024 12:01:39 +0200
Message-ID: <CAFULd4an+aN4iJ7T0DdMQDOBWrTZPJ4Oyy9ULm6R29fLNQND9Q@mail.gmail.com>
Subject: Re: [RFC PATCH 05/28] x86: Define the stack protector guard symbol explicitly
To: Ard Biesheuvel <ardb+git@google.com>
Cc: linux-kernel@vger.kernel.org, Ard Biesheuvel <ardb@kernel.org>, x86@kernel.org, 
	"H. Peter Anvin" <hpa@zytor.com>, Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, 
	Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, 
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Sep 25, 2024 at 5:02=E2=80=AFPM Ard Biesheuvel <ardb+git@google.com=
> wrote:
>
> From: Ard Biesheuvel <ardb@kernel.org>
>
> Specify the guard symbol for the stack cookie explicitly, rather than
> positioning it exactly 40 bytes into the per-CPU area. Doing so removes
> the need for the per-CPU region to be absolute rather than relative to
> the placement of the per-CPU template region in the kernel image, and
> this allows the special handling for absolute per-CPU symbols to be
> removed entirely.
>
> This is a worthwhile cleanup in itself, but it is also a prerequisite
> for PIE codegen and PIE linking, which can replace our bespoke and
> rather clunky runtime relocation handling.
>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
> ---
>  arch/x86/Makefile                     |  4 ++++
>  arch/x86/include/asm/init.h           |  2 +-
>  arch/x86/include/asm/processor.h      | 11 +++--------
>  arch/x86/include/asm/stackprotector.h |  4 ----
>  tools/perf/util/annotate.c            |  4 ++--
>  5 files changed, 10 insertions(+), 15 deletions(-)
>
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index 6b3fe6e2aadd..b78b7623a4a9 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -193,6 +193,10 @@ else
>          KBUILD_RUSTFLAGS +=3D -Cno-redzone=3Dy
>          KBUILD_RUSTFLAGS +=3D -Ccode-model=3Dkernel
>
> +        ifeq ($(CONFIG_STACKPROTECTOR),y)
> +                KBUILD_CFLAGS +=3D -mstack-protector-guard-symbol=3Dfixe=
d_percpu_data

Looking at:

> +        * Since the irq_stack is the object at %gs:0, the bottom 8 bytes=
 of
> +        * the irq stack are reserved for the canary.

Please note that %gs:0 can also be achieved with
-mstack-protector-guard-offset=3D0

Uros.


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 10:32:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 10:32:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810264.1222956 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swfbY-0004t7-KU; Fri, 04 Oct 2024 10:32:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810264.1222956; Fri, 04 Oct 2024 10:32: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 1swfbY-0004t0-Hh; Fri, 04 Oct 2024 10:32:12 +0000
Received: by outflank-mailman (input) for mailman id 810264;
 Fri, 04 Oct 2024 10:32: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 1swfbX-0004sq-1c; Fri, 04 Oct 2024 10:32: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 1swfbW-00022c-SY; Fri, 04 Oct 2024 10:32: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 1swfbW-0007C2-Ev; Fri, 04 Oct 2024 10:32:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swfbW-0000FD-EX; Fri, 04 Oct 2024 10:32: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=fm7gxS4V/hzfh4nMVi4BYcrGwL8o107xRui5y12d7pw=; b=V90jaXx23OAk7IE7+Xvi3/BcJk
	ztTaOw0BGGMYhPts16pIppxKt45lIGhyLAHP56L0JCw5AAeYYNtiLFK+e0nePKxnpBOWTTHRSOAcg
	Vs9H0DuFG6/uFQOTF+apR/NuCHJZT6md9fvac8RS7/vYBnW/2Amp7Ubb64xDGVCOoqO8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187953-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187953: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=423be09ab9492735924e73a2d36069784441ebc6
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 10:32:10 +0000

flight 187953 qemu-mainline real [real]
flight 187964 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187953/
http://logs.test-lab.xenproject.org/osstest/logs/187964/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-amd64-amd64-libvirt-qcow2 14 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-amd64-amd64-libvirt-raw 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-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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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

version targeted for testing:
 qemuu                423be09ab9492735924e73a2d36069784441ebc6
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   17 days
Failing since        187731  2024-09-17 13:11:20 Z   16 days   28 attempts
Testing same since   187953  2024-10-03 12:21:19 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jones <ajones@ventanamicro.com>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 6881 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 10:58:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 10:58:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810283.1222967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swg0w-0000J2-PN; Fri, 04 Oct 2024 10:58:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810283.1222967; Fri, 04 Oct 2024 10: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 1swg0w-0000Iv-M5; Fri, 04 Oct 2024 10:58:26 +0000
Received: by outflank-mailman (input) for mailman id 810283;
 Fri, 04 Oct 2024 10: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swg0u-0000Im-Po
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 10:58:24 +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 91ae568d-823f-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 12:58:21 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c5b9d2195eso2666263a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 03:58:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102857cfsm208131966b.21.2024.10.04.03.58.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 03:58:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91ae568d-823f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728039500; x=1728644300; 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=pJHY43u++/9hd8n0obFvhAsIuIpCNjbLCRWO9BzBGKY=;
        b=CB0yiDUPDtQm4GE+wj1BDtjHufdJ8PH4gafAchfQHTRxmjiT5FfXEszpmK3x1RsTkW
         A1yQXUxYJ5Y8w4HBqovrvrF1rbgV/tp+Sjrax4YBI3o2BNyx25ABOMEZe+CXvq6A39Ad
         CvjhNO/JNmnxLuSUzBAz+JCo7egrmrihGXlQCNzUd77BscvXV9RK5B+TLkunUMJkPQ4y
         galxaqtsXRnHbrnRdaYaZNGEe+lFftdI8xC9WkEnKATZJ8+y+QilJ7WBtAbLP1qr2Z2d
         iGGFhMdjkWUT682OscneZw9i2rlF5t9jsQg5NQfi9esLCeoLsHWqx/Uqpq7XypXpSTgk
         eMEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728039500; x=1728644300;
        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=pJHY43u++/9hd8n0obFvhAsIuIpCNjbLCRWO9BzBGKY=;
        b=SS67bMxHF32NWlRsda5s44MW1xGLdxAY1VdavVdPxoMQTG280Kh/3PVx04y9dvVfAi
         0nJRYT/oqHkfnHRe1RnGhdVIiskpDgvjJ4Fwss3IyPHynvg3Uu6mTLc5kdzRPl82T09L
         6BDu7152VSpuw3VF4jcXKofcgTyucEEedVRhELMQjwma8RaKw8pJ1Ux2QsaVPIYZ1OFA
         BVHgBC1gn4kX4ByRSirIux+W77U59zwIax0+OX/thMxm3SPJlf61GgQ10AG/f+VdVwfS
         wAZfoR1f8HOczYp1fvDz4Cr+Rr4NVKIFu7odut81tn+R4+eDR6/0tOQATcJ7BYrUxocq
         Z6Cw==
X-Forwarded-Encrypted: i=1; AJvYcCVDXKfsSU0CUzf6W4kMIbV8wENCA/jn1azKFx0XqNWAOb55HMWAFrWPLuQEn32D+IwVl9x5tE2j1W0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxYzE6IaENKdnuG9urCrNXMSi6Rcl2KNA69AOTcwlRqnQ1/sqb3
	mfIua8YEUEDb7qS2klG55HiKvIZ5gKXV1MMPfz1lfjSHdfQiag2IEIrpIffSVA==
X-Google-Smtp-Source: AGHT+IFwfb0sT1jP1aMKvSgAurvnuGD2XFfXHbXMAKo5IvZNOvyo/WtiK5QVyHsq9kIJXYPU98la0w==
X-Received: by 2002:a17:907:1c9b:b0:a8c:78a5:8fb7 with SMTP id a640c23a62f3a-a991c0314acmr245958966b.45.1728039500510;
        Fri, 04 Oct 2024 03:58:20 -0700 (PDT)
Message-ID: <c43de126-f79b-4c8f-a255-417a2aa27da1@suse.com>
Date: Fri, 4 Oct 2024 12:58:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] MAINTAINERS: minor file line updates
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241004095526.889790-1-frediano.ziglio@cloud.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: <20241004095526.889790-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 11:55, Frediano Ziglio wrote:
> "xen/arch/arm/include/asm/tee" is a directory and should be terminated
> by a slash ("/").
> "xen/arch/*/include/asm/*/mem_access.h" did not match any files
> from shell, all "mem_access.h" files are directly under "asm" directory.

The latter is intentional though to allow sub-arch-specific files; in fact ...

> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -517,7 +517,7 @@ F:	stubdom/
>  TEE MEDIATORS
>  M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>  S:	Supported
> -F:	xen/arch/arm/include/asm/tee
> +F:	xen/arch/arm/include/asm/tee/
>  F:	xen/arch/arm/tee/
>  
>  TOOLSTACK
> @@ -545,7 +545,7 @@ F:	tools/misc/xen-access.c
>  F:	xen/arch/*/*/mem_access.c
>  F:	xen/arch/*/*/monitor.c
>  F:	xen/arch/*/*/vm_event.c
> -F:	xen/arch/*/include/asm/*/mem_access.h
> +F:	xen/arch/*/include/asm/mem_access.h
>  F:	xen/arch/*/include/asm/*/monitor.h
>  F:	xen/arch/*/include/asm/*/vm_event.h
>  F:	xen/arch/*/include/asm/mem_access.h

... you're now duplicating this last line visible in context.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 11:02:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 11:02:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810287.1222976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swg4a-0001n6-7L; Fri, 04 Oct 2024 11:02:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810287.1222976; Fri, 04 Oct 2024 11: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 1swg4a-0001mz-4D; Fri, 04 Oct 2024 11:02:12 +0000
Received: by outflank-mailman (input) for mailman id 810287;
 Fri, 04 Oct 2024 11: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=6kl2=RA=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swg4Y-0001mt-PB
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 11:02:10 +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 19d78819-8240-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 13:02:09 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a8d56155f51so216301466b.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 04:02:09 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99102aa6d5sm210979666b.89.2024.10.04.04.02.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 04:02:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19d78819-8240-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728039729; x=1728644529; 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=+UkraqdRUezPeXiqSz3SSh9ag+bN3N04aUU/U+zw/64=;
        b=Bo2g4ZxV4rTchpOE/2ONWkQCLdQdXAxXjvvOTN11ZTvMyxT5Fqhars4WJRc5UO2VRQ
         pwtK66NwHkRlMZRg1D4jAvMAlF9bI0AcvRKIRke2GyT7i9SRx3F7/S7gxNBNrnVnkXPI
         D6yX5WpbcpfiBdWdKnFJ9Lxn8eG9O0/eEjaB4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728039729; x=1728644529;
        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=+UkraqdRUezPeXiqSz3SSh9ag+bN3N04aUU/U+zw/64=;
        b=c0g2UD6YX3T3VTMM/p6y50twdmWKOSyW0flKH80aJYwJXGTdlRyoh9u13v7PAhqSVR
         FByZKOgwUPoRagcJYfBmEo0p38cJBNwoXPrCFRHsymLscJ2Ku4glVJdUWhqu2Nu/wVrx
         6mxzoVuvq3vesqWAzwsNWkrIoShlNl75/WmQS7tvvnN4e2e5HN49tJDaqlPuLWxN11Mm
         v9vGM6y3slR0ctYqOBaXQoU8QadBA1qPq5w1mildUZ42eMTBP0vKMACvYVAyl8x8wFXx
         7ApXheBBTFwvTNwa4oyiC75LxM5cCXqOH41ppZBOyQxmZvrD/p8TRFqrPb1WJRRMgTZB
         De9w==
X-Forwarded-Encrypted: i=1; AJvYcCXiWLLWLh7YsSLSV7NqWaoK/HvngtzxddG3DKicz1lRk8J7WoSyL3SjhgKtpkycQ/BArEKu61zH1SY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YztREOEERj266a4Tqub6Mc5i3MXTB1ZJsnfcciApd/pW3Ehz3sZ
	HLW+z0DuVi68BR/YsHep4dLfVAED8gBMudWcefqXDN6CPhOyLidcfPbmpYq2uXc=
X-Google-Smtp-Source: AGHT+IF5bqqh0yLfvGhTb66+Gp2/dK0gVTl2G6wuRl62ACSuZMAUUhgzzNeXs8OtVvwrf6aG1Ht30w==
X-Received: by 2002:a17:906:d555:b0:a8a:1ffe:70f1 with SMTP id a640c23a62f3a-a991bff46f0mr243673566b.50.1728039728939;
        Fri, 04 Oct 2024 04:02:08 -0700 (PDT)
Message-ID: <2b8cfee6-66f4-408c-b207-4f68acd2108b@citrix.com>
Date: Fri, 4 Oct 2024 12:02:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: Introduce X86_ET_* constants in x86-defns.h
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241003170413.2227753-1-andrew.cooper3@citrix.com>
 <39fc1c44-ec09-4df2-86bc-c86717ef7a86@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <39fc1c44-ec09-4df2-86bc-c86717ef7a86@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04/10/2024 7:43 am, Jan Beulich wrote:
> On 03.10.2024 19:04, Andrew Cooper wrote:
>> The FRED spec architecturalises the Event Type encoding, previously exposed
>> only in VMCB/VMCS fields.
>>
>> Introduce the constants in x86-defns.h, making them a bit more consice, and
>> retire enum x86_event_type.
>>
>> Take the opportunity to introduce X86_ET_OTHER.  It's absence appears to be a
>> bug in Introspection's Monitor Trap Flag support, when considering VECTORING
>> events during another VMExit.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

>
>> --- a/xen/arch/x86/include/asm/x86-defns.h
>> +++ b/xen/arch/x86/include/asm/x86-defns.h
>> @@ -204,4 +204,13 @@
>>  #define X86_MT_UCM    0x07 /* UC- */
>>  #define X86_NUM_MT    0x08
>>  
>> +/* Event Types. */
>> +#define X86_ET_EXT_INTR    0 /* External Interrupt */
>> +#define X86_ET_NMI         2 /* NMI */
>> +#define X86_ET_HW_EXC      3 /* Hardware Exception (#PF/#GP/etc) */
>> +#define X86_ET_SW_INT      4 /* Software Interrupt (INT $n) */
>> +#define X86_ET_PRIV_SW_EXC 5 /* Privileged Software Exception (ICEBP/INT1) */
>> +#define X86_ET_SW_EXC      6 /* Software Exception (INT3, INTO) */
>> +#define X86_ET_OTHER       7 /* Misc event: MTF=0, SYSCALL=1, SYSENTER=2 */
> ET could of course mean a lot of things; sadly no sufficiently short but
> still less ambiguous alternative comes to mind, so ET is going to be it.

Yeah, I considered this quite a lot before settling on X86_ET_*.  By
coincidence, X86_MT_* are visible in context, so we do have prior art here.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 11:11:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 11:11:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810294.1222986 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swgDk-0003ot-1g; Fri, 04 Oct 2024 11:11:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810294.1222986; Fri, 04 Oct 2024 11:11: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 1swgDj-0003om-VW; Fri, 04 Oct 2024 11:11:39 +0000
Received: by outflank-mailman (input) for mailman id 810294;
 Fri, 04 Oct 2024 11:11: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=njpt=RA=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swgDj-0003og-4T
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 11:11: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 6c260d3f-8241-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 13:11:37 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8b155b5e9eso288959366b.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 04:11:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99103b376csm208581366b.104.2024.10.04.04.11.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 04:11:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6c260d3f-8241-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728040296; x=1728645096; 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=DQLs5q2uOBRv4F1LKx6/9CnX2jdhLaGCZ8bCbQyEI6Y=;
        b=h7bDFLd11RlyZ7f2nH4rdnlZdYcE2KYPT2iotM2X+r9uQkvPuJve8hhEgximCQg1Er
         Vc6F2wY7bwvFzQZEjN8reOr+9D93J3uoWWf8jZwb/q2YMqARzsa4MWrxtl+3I2+uulC9
         V6Gnf5XKGlS40dWLPC075WpT4/5ynqeeP7oUs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728040296; x=1728645096;
        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=DQLs5q2uOBRv4F1LKx6/9CnX2jdhLaGCZ8bCbQyEI6Y=;
        b=YbxY0dqVdnakHyoCkbc6ARanMUjuHAw8pnKg8rJUEkBWOQEOQc0Ggj1Jg3sy7K+/gN
         gi0AIiNgNmEvpfIsLQuXPg8ndSbK3R9AG5sjNr6QjQ2/Ak79Qfn+lIfxM+sDe6cjIvtd
         Ibyg6WdnYYiR/b75swYX2mRlsb/EXpnNUMrpbKrS4YcA4nKxKdWn5QmJY6J4Ar1qhjJO
         kZR4ECwgOOuc5mqCE77tSRpz6c4lTBvF61n6cl008ZdbTQxMDcZVPn5Ya7CiwjlQR+kT
         +RXf1NafRG9+YOvFFfFaG/BdW0mhPMkidQkduDt9aOugI7kGDY1UKOCQ0T32rymsrzsz
         U24w==
X-Gm-Message-State: AOJu0YwZnptijUxAEVyX6S5LclXvXjCzpbXr8y4Djm1GK8p9f5GfOOYC
	kdAn7/6zfQcCEXNeJX9dmUuvyP6s7L30/AUPxZb+CFZO2WfkW0O2UBd4HG3lezzUrj4q9OafpGJ
	Y
X-Google-Smtp-Source: AGHT+IH5kuyzlnoQK0br8Zp4L3FWMS/AYkyeBfBC3jkdqYt9//Q5hC/xek1UfdOsCU4z6APbaehM+A==
X-Received: by 2002:a17:907:3eaa:b0:a98:f475:f9f3 with SMTP id a640c23a62f3a-a991c0234f1mr238729566b.65.1728040296390;
        Fri, 04 Oct 2024 04:11:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2] MAINTAINERS: minor file line update
Date: Fri,  4 Oct 2024 12:11:27 +0100
Message-Id: <20241004111127.897937-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

"xen/arch/arm/include/asm/tee" is a directory and should be terminated
by a slash ("/").

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 MAINTAINERS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
---
Changes since v1:
- removed second change, it was intentional.

diff --git a/MAINTAINERS b/MAINTAINERS
index fb0ebf0939..a2994c7421 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -517,7 +517,7 @@ F:	stubdom/
 TEE MEDIATORS
 M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
 S:	Supported
-F:	xen/arch/arm/include/asm/tee
+F:	xen/arch/arm/include/asm/tee/
 F:	xen/arch/arm/tee/
 
 TOOLSTACK
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 12:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 12:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810344.1223067 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swhKY-0007A8-PA; Fri, 04 Oct 2024 12:22:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810344.1223067; Fri, 04 Oct 2024 12: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 1swhKY-00079z-Kp; Fri, 04 Oct 2024 12:22:46 +0000
Received: by outflank-mailman (input) for mailman id 810344;
 Fri, 04 Oct 2024 12:22: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=djJ5=RA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swhKW-0005ue-L0
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 12:22:44 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on2062c.outbound.protection.outlook.com
 [2a01:111:f403:200a::62c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5aa61c77-824b-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 14:22:44 +0200 (CEST)
Received: from BL0PR1501CA0021.namprd15.prod.outlook.com
 (2603:10b6:207:17::34) by PH7PR12MB5927.namprd12.prod.outlook.com
 (2603:10b6:510:1da::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Fri, 4 Oct
 2024 12:22:38 +0000
Received: from BN2PEPF000055DC.namprd21.prod.outlook.com
 (2603:10b6:207:17:cafe::82) by BL0PR1501CA0021.outlook.office365.com
 (2603:10b6:207:17::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.26 via Frontend
 Transport; Fri, 4 Oct 2024 12:22:38 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN2PEPF000055DC.mail.protection.outlook.com (10.167.245.6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.2 via Frontend Transport; Fri, 4 Oct 2024 12:22:38 +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.39; Fri, 4 Oct
 2024 07:22:37 -0500
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.39; Fri, 4 Oct
 2024 07:22:37 -0500
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.39
 via Frontend Transport; Fri, 4 Oct 2024 07:22:36 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5aa61c77-824b-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=f0M400ZoatVJr1uWl2ATq6naRGx07ZQylbZ+Teoj6YmSvSHop18H62FmoYemdLbGGC1XZ+XB27WVG4aVhzL02cTLMHfo2OMjClGn3o8/JnUno3wwHF1MeDtwRqYmnBnCKrRPFKDBKFhmN7XwIy6SXBNiuPt1mi4a3+msqKl5ZCYSVb8BLiAlR9QaeBvT4yd0WIjZIaVc7kWO17RD/uBQ/s/I/otjWuWOWs0Lsx6wcvKh+OFuif3DrzNp97jh/dIa946GivQHW1TwTGezeISYem2hzgcP1rtMDPAONLxG2jPvjbXUmzaz5MBvAU9EbbVyJOrN3T8M2sfyBlgIHBnl9Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=f9lwpHIT0J8zNVYydoOKN/VssSl3wTjbztKqqkAcOOE=;
 b=OjteekwCtER/kPrGk1xoBx98GpZ49KbTUj2DZRJQgK41jo+5R5tio8tJerFouT9kYIYSkH59zIHCUXrTEgjdGrpzXjH+rcFRO+kPLnol3D6o3LclBgutYC6mzLfFo8Q99E7wvqdhwlI5ZRE49eeOIv4IOBuCWCwSZkUVS9vw2PsmZt9nEsU8YDFrQdvAJYGMcUcx+FWwO+Unxvk3Pks4GJQPssI8t176gwrELxiqlrAq3yfY5EUdDtD5zrottXQTyLTnUe7SGBu5gjD0cKo37yCZswyOicAlTNQHEpPZV2xARoFCR8tT2eR3Y7KZHb056n3uRxyitZT3u7QVA6qrRA==
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=f9lwpHIT0J8zNVYydoOKN/VssSl3wTjbztKqqkAcOOE=;
 b=kooUTO8lsYnNZwnAe2V5AiWsDwCm8nDaNzCziLGROWqtxCe7/JuUCBNXZ9lsNh0gmTZATrccakWnNSa8oLplRZHi9XtmciHmimVWG+XF2+VvGiKCllk8hOcoo4t1bkLuMYF7UN9n7QHd58RkD9sW3ImBh857mhpOyOw5EKzKdjw=
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>
Subject: [PATCH v2 6/6] dt-overlay: Print overlay I/O memory ranges in hex
Date: Fri, 4 Oct 2024 14:22:20 +0200
Message-ID: <20241004122220.234817-7-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241004122220.234817-1-michal.orzel@amd.com>
References: <20241004122220.234817-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: BN2PEPF000055DC:EE_|PH7PR12MB5927:EE_
X-MS-Office365-Filtering-Correlation-Id: 802d7148-312f-4dac-e7fc-08dce46f3c4c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?HI9gxbL5j1IxdOqTK43drAKhKzN4z2Zvj0yFE/kOQQjBGvVdA0t6PSVz49a6?=
 =?us-ascii?Q?6CQQe8e916ZF1DaFiyZHJYqeVK72EdOubXFMOnoo0tqDhzgd7r/apsHHZx/C?=
 =?us-ascii?Q?Jns9g1UZM0kFJJ5lGmFZLYkLhI47MiZc2pVyqyJjQ56cW1DVh+jSDzXkAcDD?=
 =?us-ascii?Q?5E301IjZAJIpW+YtaCiMoBniuMKXW9e4grBliYfDDrKuozlASkfhYFeJJwno?=
 =?us-ascii?Q?F3eMLLZ48DLecJHCA1Nalqfun5w0W3vnFjtIrtjBQyUHXHwZ4HnTaYDAna2g?=
 =?us-ascii?Q?9SpvIHTrkod9Z2KXbd+Z7drQiPMaWEkWU9k9BUNHq1xrXNkzvSy32VjEmoTs?=
 =?us-ascii?Q?7e4p3gZnVUcyGb33MUrM/EuoNb6Pj5iC9FulwK1HOTo26JSniUOQbVZGL2/z?=
 =?us-ascii?Q?e9nvm6+aKqEVPe+b6XgVy75xnsr9ISWUtmfw4q93JhGvLYlSSPQSMnyCrxXU?=
 =?us-ascii?Q?LHxs2lf/7EBW1CCTfZyqAAuTPWi8ggcE8sZ2z8vRcXDZJQvtWuGJTZERV08y?=
 =?us-ascii?Q?RmTHJs+iE/H9OhN04PKr9vu1J7IlGgCsDgvHBGLPaMyncetRrrktkC8hNeHa?=
 =?us-ascii?Q?Vg9dEt7pabNmKbrs1vnQTMaigDm3WxBgkrpOob+6tQSlFQje3WlM/AYEYXsQ?=
 =?us-ascii?Q?pSL8bkPkBlXZDIyJ2F0us3ONT33fXumbeNdpS44wfH171+LHzQuwyRcs8uLS?=
 =?us-ascii?Q?7d9LYLgk7LmxMiGyRAkFCqqebIwcX14ZUmhnyeVz9Bt0iBGO+S+aoobAUA53?=
 =?us-ascii?Q?hIgeJmA7I507bhER2N+kpi9Knot/+/eYAD7od7B+eyCIlga4wtSXC8OEa0Gs?=
 =?us-ascii?Q?Yymb9VJTDUgKBARArJmVkwDthEUXPBQvT10bhONuUStiYh3Sz49b3q3r6jGk?=
 =?us-ascii?Q?VBanB4MrFb2Qc7EWmzQKQWN61bifIvOp0xP/yHyzWOlz8/d3gW60Vux+RXQS?=
 =?us-ascii?Q?YCHZmqRzejCG6DjEq0mAKo4DJzKHgtEWX5NyZWDdw9S2e2qMMA8fOugYBCR7?=
 =?us-ascii?Q?US1iGHdqmQzzLaCY/lwQjf40NBiN+IlPWPfxx8QXI6VDpnSfoz53uV/Zax/G?=
 =?us-ascii?Q?WMLKEWtjzX7VCTbThggyIobwA/FH0EUBqMxOkoBgkAaylyWVc7koqklFFr1h?=
 =?us-ascii?Q?cQLdESW+h8s0pGA31tzN43qUth4/oXLgGTwXlaftuMQTlCRSB7D/yj3NoJk8?=
 =?us-ascii?Q?72wIDsRmxWzblFQiA1Vws9ab681ujz8lGVxdILEPCXsah8UcweSNhl9e/ecK?=
 =?us-ascii?Q?2R3cGtUYsVGNWThehM1rH+Fqm5NKTitt30BO5+3pr/HjchggoICkbeLUGwPL?=
 =?us-ascii?Q?WlBqoGh/4LCcRD5Lcw7yiIzLX9y014rCJN9j9c2OHgD2wIXEpdnUWDO/acna?=
 =?us-ascii?Q?TXY1cAOzYaj+MCzG4+qwGh2FAMtK?=
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:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 12:22:38.3162
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 802d7148-312f-4dac-e7fc-08dce46f3c4c
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:
	BN2PEPF000055DC.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5927

Printing I/O memory rangeset ranges in decimal is not very helpful when
debugging, so switch to hex by adding RANGESETF_prettyprint_hex flag
for iomem_ranges rangeset.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
 - New patch
---
 xen/common/dt-overlay.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
index 4d75b5b36a99..5ce00514ef14 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/dt-overlay.c
@@ -869,7 +869,8 @@ static long handle_attach_overlay_nodes(struct domain *d,
         goto out;
     }
 
-    entry->iomem_ranges = rangeset_new(d, "Overlay: I/O Memory", 0);
+    entry->iomem_ranges = rangeset_new(d, "Overlay: I/O Memory",
+                                       RANGESETF_prettyprint_hex);
     if (entry->iomem_ranges == NULL)
     {
         rc = -ENOMEM;
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 12:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 12:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810341.1223033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swhKU-0006CC-Rp; Fri, 04 Oct 2024 12:22:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810341.1223033; Fri, 04 Oct 2024 12:22: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 1swhKU-0006BH-L2; Fri, 04 Oct 2024 12:22:42 +0000
Received: by outflank-mailman (input) for mailman id 810341;
 Fri, 04 Oct 2024 12:22: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=djJ5=RA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swhKT-00068r-Eo
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 12:22:41 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20614.outbound.protection.outlook.com
 [2a01:111:f403:2415::614])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 580d7bb2-824b-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 14:22:39 +0200 (CEST)
Received: from BYAPR02CA0059.namprd02.prod.outlook.com (2603:10b6:a03:54::36)
 by CH3PR12MB7593.namprd12.prod.outlook.com (2603:10b6:610:141::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Fri, 4 Oct
 2024 12:22:32 +0000
Received: from SJ5PEPF000001F0.namprd05.prod.outlook.com
 (2603:10b6:a03:54:cafe::c2) by BYAPR02CA0059.outlook.office365.com
 (2603:10b6:a03:54::36) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18 via Frontend
 Transport; Fri, 4 Oct 2024 12:22:32 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001F0.mail.protection.outlook.com (10.167.242.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8026.11 via Frontend Transport; Fri, 4 Oct 2024 12:22:31 +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.39; Fri, 4 Oct
 2024 07:22:30 -0500
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.39; Fri, 4 Oct
 2024 07:22:30 -0500
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.39
 via Frontend Transport; Fri, 4 Oct 2024 07:22:29 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 580d7bb2-824b-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=aVZDilnPaD0TTCjTngS3ozjRnMypmu98wOGs8mAv2SfHFhdkMoLLx61ogDxnj/UACLOw6A/SkePhYjciUbWAXoTTI3x6rzaoskgbSfeOYA4ly9HieaWDEQMat5yv7DmuHACaWSxjZCd8dNUXf4t0vz76/WdCj1IYjZ6CrzoYF6aGOVnj6zxWpNGNWlfPJz+w8GQVlo8SIjJc0yXvcw+gVnX+fCAT2j1ROkgL61dQ9Uyy6GCPSvadRGUV5uDvr5f5gIOg8hGCcIDtHJN1IyH64UAhvGJAuUVCfWCotlPAt44YBH/zse/hKb/sJmtaoMLwp5YakUGcJ7XdhQggVk59EA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=qMyZSSKtyxLWnjqInD9m5eg0zHWpnF3h8hQyllg0PFs=;
 b=GzijKEmIRS2lmTWcqW69Q924y+/jz3gJ78IrQ3DMMzShMSBUyDsQhEx/BlyCBqDHrmJqYUGwx2dVVqQCgqwkYT6KBIgjygCTwKoNU7trQcMdWsPPOxDFPTQM3s3MHqpPO/iKlFpUMqP1XGHIJVZ1If7+rvWKk8X9jnkCBWTVAZJvJrc9PUGycNxkn5zw9aBkgUfoAI9uxIE8Q9cSj9qJqWxK1NBoieOY1dBz+tlDHbq5zVCEhn745PDhyat/INyT2rQ7awCX1Q2xkUrJpOTu7MiRNRRWtKf23JYkyPSz8Dsw2IfjqbJPDuXRTc72Mi58qwRFM00Kn2VOnWASGVePTA==
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=qMyZSSKtyxLWnjqInD9m5eg0zHWpnF3h8hQyllg0PFs=;
 b=HRB7fJTWp2Egcia55u85OXOLNRnu9dW2oktL+//zQEb5acIJQyTT//faY8Z2TpZ0Dlynk4jXvs0Xt+yXEw8+gOShbCRNcSX4bif1EUQ/+NWwS/KF/6fK7PyJdnBaGO45Yu1OHrmCQjf+HTpy/jdH4SO8z6hFCkHfsYEC8zGvNgk=
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>
Subject: [PATCH v2 1/6] dt-overlay: Fix NULL pointer dereference
Date: Fri, 4 Oct 2024 14:22:15 +0200
Message-ID: <20241004122220.234817-2-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241004122220.234817-1-michal.orzel@amd.com>
References: <20241004122220.234817-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001F0:EE_|CH3PR12MB7593:EE_
X-MS-Office365-Filtering-Correlation-Id: 4fd0f08c-f481-4fde-0d11-08dce46f382c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?qco94T9poxxSlC2uze1PSbCG5rFu3a4g6Ak6S8hMdzIVLpp4XLx4VDo/rjlA?=
 =?us-ascii?Q?7qPJZWTvYMhKDXzlnDknMOml8xJsG658P7KvROymh7CtCzs6CdnvAid1f43A?=
 =?us-ascii?Q?rkyXsVKyE+azuvu8urQgM1V3kVm9kuc2KXAfRJf3yrCFNlhzqMGYKVGPuODG?=
 =?us-ascii?Q?3u0CG1iYX+zgKkWkzAwSVkMRs/yXOzgJYvUqAUkGGX04zk2E6+LzUDs8N/4w?=
 =?us-ascii?Q?NQnzQcbpZQ4W29TYC9XH10EiM0EXGA7x1AGpQE0W3gIs2hnCxpXDQVTvA6sh?=
 =?us-ascii?Q?RA9Hn1E84vhUP5TANlsCce4C7vsPUM9B79gXujdIuyfL/dkRqfuJNgE1yqUt?=
 =?us-ascii?Q?MWWwMvxCSVzwyQcGO/REqP32a9V1AUsLx/Acg8mgCb+ztC9YXaFjU+Cg5Z9K?=
 =?us-ascii?Q?xgzFOkEoM+Q7V0rmhKb4cD4fH7Zed97PvY74E8lsHW693ufDUmDt9ZNm5V4B?=
 =?us-ascii?Q?L+0nz1/NglLGfH3SR6UkCRKYiCXnanrQrx6wR/mHlbu6jqL/G+CTIvRtfxy7?=
 =?us-ascii?Q?x4ovfWiEIp6bmJimrcEJR+5RDWxCDnMxHHhPVn7jRelV1jT69MlVlN9O8oEX?=
 =?us-ascii?Q?+hKi4K9aWXAblzcqzm1EOfoVh8U0hVMPeR01jPEFqxko0c2eYeF3AmX1kL+q?=
 =?us-ascii?Q?qLIBXuRk4RFqHCSfemnif6+oz0vomfRbReUfJTaMk/8Nlo8lAg9BjPbMEOow?=
 =?us-ascii?Q?2S5g10ukuWdsc64z1ywMRXdK2k17mHPhjCPbNIu2xcXwGojOGQgKjGiVFKPB?=
 =?us-ascii?Q?+xDb7KEeGic1HlCspgaohBuVQco/+iE5kyF7RJWUDiBZuSNXW1qAvnklDZJ7?=
 =?us-ascii?Q?ns9o/CpJQNBaAQzfA/Wr1Q1/yLRVmEabDHZvAR1SB8/TzNvZw+tDCTZeR9zA?=
 =?us-ascii?Q?vpARfT1jgmnjaAPlfHKh3O6WGLdiVuaJ74vSrgwiKuB/C/gNnFyTOsDMOiUd?=
 =?us-ascii?Q?16FrhXzp3+KaP8+B0a2a9mxB8NK9QO/rmM9wnkVKbT1RGu7/sX8od5hXrlGK?=
 =?us-ascii?Q?QepmiNHCaQD+1HcXG6WgyUoysNgsxi5l0Dk7B8yoEMSYUYWG40smv7rSlP2q?=
 =?us-ascii?Q?SWBMF6Wf1M/LdiOgTvfRrXpSEEW5YJSJGI5mDZdVrN75fxvXXCku9zbIK0CL?=
 =?us-ascii?Q?muEsBUXzdZmEpqqguKEe1mN8c2Pu1NTKT8916AWDFKFAHe4p5Ga7MkB50SJj?=
 =?us-ascii?Q?V2JIAKXaQ4xPeh9p4cpCeBHlL70yZBb5o9v9j/TljoaZ98sor8VPg2hZeUYS?=
 =?us-ascii?Q?o8YWUlfMjD83vz1DDnToxiTL/EqO2N6tckowyIV7+bggzSAyjX9zW8jszqYx?=
 =?us-ascii?Q?lK9RjG1neQRePUsitZR1/itEmjL9YOAtBtzGdvagCnSVwqFjfLQbHpHhg+q0?=
 =?us-ascii?Q?7vybpvbBCaUS2+HUTZ+Fu2G6n4cw?=
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:(13230040)(36860700013)(82310400026)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 12:22:31.3275
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4fd0f08c-f481-4fde-0d11-08dce46f382c
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:
	SJ5PEPF000001F0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7593

Attempt to attach an overlay (xl dt-overlay attach) to a domain without
first adding this overlay to Xen (xl dt-overlay add) results in an
overlay track entry being NULL in handle_attach_overlay_nodes(). This
leads to NULL pointer dereference and the following data abort crash:

(XEN) Cannot find any matching tracker with input dtbo. Operation is supported only for prior added dtbo.
(XEN) Data Abort Trap. Syndrome=0x5
(XEN) Walking Hypervisor VA 0x40 on CPU0 via TTBR 0x0000000046948000
(XEN) 0TH[0x000] = 0x46940f7f
(XEN) 1ST[0x000] = 0x0
(XEN) CPU0: Unexpected Trap: Data Abort
(XEN) ----[ Xen-4.20-unstable  arm64  debug=y  Not tainted ]----
...
(XEN) Xen call trace:
(XEN)    [<00000a0000208b30>] dt_overlay_domctl+0x304/0x370 (PC)
(XEN)    [<00000a0000208b30>] dt_overlay_domctl+0x304/0x370 (LR)
(XEN)    [<00000a0000274b7c>] arch_do_domctl+0x48/0x328

Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
Changes in v2:
 - Add Rb
---
 xen/common/dt-overlay.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
index d53b4706cd2f..8606b14d1e8e 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/dt-overlay.c
@@ -908,8 +908,11 @@ static long handle_attach_overlay_nodes(struct domain *d,
  out:
     spin_unlock(&overlay_lock);
 
-    rangeset_destroy(entry->irq_ranges);
-    rangeset_destroy(entry->iomem_ranges);
+    if ( entry )
+    {
+        rangeset_destroy(entry->irq_ranges);
+        rangeset_destroy(entry->iomem_ranges);
+    }
 
     return rc;
 }
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 12:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 12:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810345.1223077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swhKa-0007RK-7u; Fri, 04 Oct 2024 12:22:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810345.1223077; Fri, 04 Oct 2024 12:22: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 1swhKa-0007R5-4O; Fri, 04 Oct 2024 12:22:48 +0000
Received: by outflank-mailman (input) for mailman id 810345;
 Fri, 04 Oct 2024 12:22: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=djJ5=RA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swhKX-0005ue-Va
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 12:22:45 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20617.outbound.protection.outlook.com
 [2a01:111:f403:2416::617])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5b6f64b9-824b-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 14:22:45 +0200 (CEST)
Received: from BY5PR13CA0004.namprd13.prod.outlook.com (2603:10b6:a03:180::17)
 by MN0PR12MB5713.namprd12.prod.outlook.com (2603:10b6:208:370::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Fri, 4 Oct
 2024 12:22:38 +0000
Received: from SJ5PEPF000001F2.namprd05.prod.outlook.com
 (2603:10b6:a03:180:cafe::e5) by BY5PR13CA0004.outlook.office365.com
 (2603:10b6:a03:180::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.10 via Frontend
 Transport; Fri, 4 Oct 2024 12:22:38 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001F2.mail.protection.outlook.com (10.167.242.70) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8026.11 via Frontend Transport; Fri, 4 Oct 2024 12:22:37 +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.39; Fri, 4 Oct
 2024 07:22:36 -0500
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.39; Fri, 4 Oct
 2024 07:22:36 -0500
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.39
 via Frontend Transport; Fri, 4 Oct 2024 07:22:35 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b6f64b9-824b-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=oLEncfoH8xaSWzO7h/E+0tPRLcqlcBRxUIXkZZgUF2RgePyqZVvBPBbT4UfS221bZAT6IjiQTMIqaN9sEZiGp+f+SL8zv+8jA2zddWTNomBQcpzI3+EgUsoyvOWJqtM/8k592zy4qwRwdB7FfHDjtVjp2Qy3ENyn2gkivPHHZVeQogs0z2vc25sMG13GGXKOjzmlpfzNrdUgMOetzkeJ7n2ehZpjY1SqGEeSC/PVMA+wm7UZTjrj0KI65W4MMorEgNRqnJzoxJqm7vfYQaCgyyC2/E6U9DUlS18LT1DT4c309xtMm0ChSlmq9OReQWx25mUCSCQSzzHXDD4KDZ2jxA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=3coa7/Q00XcmaWZs7n/oiZYQzKwgScWsvnM72TeQSnY=;
 b=PgABqA59YjClm1v6vFW9bg/zDJd8e+htlibpbR3WLNq24vnC5ok5wOPuUU7crQ/Zx1ZP6Fk6SRHQ/CIGFI687giyfIcD2lJBIFlHo0CuQ8dNHTtrMKsZ1Eo9AGH0GtmtjIQyAnqELMGbaCFk2e2kclip0mans65qrXQQI7I+rYGMQwP8NuUttK1YNZNcUGn4dVUPudCnpT5brM2ywV2ZbkC3TOoxMxisv8gdefVEuWNFDvGheGQdP1hJGXzIU/6f40U9LPnQF8j8dTF/Y0W8VBz9k4BGgGdJx39KPESByrqrLZMZOLkxI1oKk2STT2lHbI46krZ+DjofOXugjAKHzA==
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=3coa7/Q00XcmaWZs7n/oiZYQzKwgScWsvnM72TeQSnY=;
 b=SNdYynGWb6wXIFzz+CRjLqTjrLUJKbBUyRJqyv0LHsCc6wS4Zt9DZpCWQgZPbJyoEMrvisaXzt1JdV3mIYR6p//2CbC+BS1M0jUb41iLbGApV8b9I4VktGKWP8XfJTEx/4gA2oNZU9qCjv4YWgbUoRLSDxmpqHhvO/4qkpqFOxg=
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>
Subject: [PATCH v2 5/6] dt-overlay: Ignore nodes that do not have __overlay__ as their subnode
Date: Fri, 4 Oct 2024 14:22:19 +0200
Message-ID: <20241004122220.234817-6-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241004122220.234817-1-michal.orzel@amd.com>
References: <20241004122220.234817-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: SJ5PEPF000001F2:EE_|MN0PR12MB5713:EE_
X-MS-Office365-Filtering-Correlation-Id: d50d2992-d97a-4037-6573-08dce46f3ba9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?RqcX9FUAhYGsmfVzXBm8fKtaPZngTcBEO3PnXqHwebzbC8TLC99FH1l4Eja3?=
 =?us-ascii?Q?xuMBdgHL2/mAW/aaL6xY50WAuwaFJ8dU7fcBWC5mIeMIuRUWVAzL/PSB2/iT?=
 =?us-ascii?Q?9FAxuM3quRXTpplL3XsP92SpaykZWaedo42o/Ris0cBoHlVSRzqlK4/zKwfV?=
 =?us-ascii?Q?8i7ZaR3J7ZwvCRkFEzU5gwbeOp0dg7mHV86qVEiYF+A4xuMHBsx0iYhKd6Lf?=
 =?us-ascii?Q?tA2NwkY0kNVRMkuqtLNV/KURKMbudxi9TXOCpv1G92uhYKQ6yPQLZqVF5g8o?=
 =?us-ascii?Q?D9qAS6bzakJ3rRcb4Rwj51+wxd+V4T8Zt0aKzBqoxAF4iY2Djj7qj6KLQnQg?=
 =?us-ascii?Q?f1yO1b/lDdu3PVeT0QVopxfSHclo4fPUPy15bcQTogLHjxIkKCIczZshWxOG?=
 =?us-ascii?Q?y5RQatGQUJQJTC6bwJH+MaabAkpKZZ5alxHFU4+OvbrXHQD8mnC4w4H/+Hgo?=
 =?us-ascii?Q?9JcmdGmw5V+kU013lE/y5g9QjN3wI4a5MJfQv7WvNpnLHPbo07JyRcUl9vsA?=
 =?us-ascii?Q?CE8/INo3VNIO3qNF8OakySEiZOcFMn/fVULQEqzh5fDRAjzi19BZ3GbsYwxr?=
 =?us-ascii?Q?xjeYzex6h88j6cDQT3++ChGj2UPqqEvAlzeQWCSP6ytwfHE4NPVlwPN3vIg9?=
 =?us-ascii?Q?7aacCQH6E5AMNPEwIO/YzPFPKWQTcVbFmH6716iWaP2jVQO3Bz5hNQJmrvju?=
 =?us-ascii?Q?7ut4c+HigLk2u6V06xvdmNR91mJ2HPb9rYm8s6gu5mnRECC9oNmZQ2ptF0zA?=
 =?us-ascii?Q?yvbCSV3pk79kdNYxsaWBPr/9X7iU3iFTn22NhoZBydFZJ2a0lU7iXxdrjz5Z?=
 =?us-ascii?Q?l8ir8ax5dte0bG+9DCiXYsAcGY4MwnB5e9v6Pj/bxKd25NAVXPHuiXRs+q27?=
 =?us-ascii?Q?cUILLb+DmlI4mx9WEFdXyNxkXo+Nvr6YrWTdRVt81NXV4CvqGu5yyyuEp0TW?=
 =?us-ascii?Q?DNpWxoZfLsseyqusWmkouwKgorQUuft5WA2Tbm65UbZxwBYI833cNbCDOdLG?=
 =?us-ascii?Q?lrAH30q1Nk1vrki1ieqUckfVup4mnwYtL9frKRVtQD2tNiaH0JTI+hN/dBi+?=
 =?us-ascii?Q?5ZG/4JD5wb1iiSs9LTEfCUNGhtSF8j2KuHcbqd8ilG6MAYW17+MKfJKy2nBk?=
 =?us-ascii?Q?Jm4QCaWkifzLovMQBHpGPtKC1x43qjiiBnO+TPX9OhnbkxNJLM/stSALTZ55?=
 =?us-ascii?Q?2Xv4BiSYC9i2ROV3ws6a1TApNjEn+nNsEbs90oGoNSU9wEiRqEyscK95pHm5?=
 =?us-ascii?Q?d1KmGRUZ5fi5LkH8OJ4V8pEGRnGxYulHAxICsVbCmmrSIFq4VAeUonPGW4Vr?=
 =?us-ascii?Q?Moihe/pZCgg4bYuRV/1tqzjf6SPbe74lu4ytBHPj1GaLiqLX5sjy0vQfBX1p?=
 =?us-ascii?Q?bXCanP41xoRXo1KcopSbK9unu+Q2?=
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:(13230040)(82310400026)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 12:22:37.1821
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d50d2992-d97a-4037-6573-08dce46f3ba9
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:
	SJ5PEPF000001F2.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5713

Assumption stated in the comments as if fdt_for_each_subnode() checks
for parent < 0 is utterly wrong. If parent is < 0, node offset is set to
0 (i.e. the very first node in the tree) and the loop's body is executed.
This incorrect assumption causes overlay_node_count() to also count nodes
that do not have __overlay__ as their subnode. The same story goes for
overlay_get_nodes_info(), where we end up requiring each node directly
under root node to have "target-path" set. DTBOs can specify other nodes
including special ones like __symbols__, __fixups__ that can be left to
reduce the number of steps a user needs to do to when it comes to invalid
phandles.

Fix it by adding checks if overlay < 0 after respective calls to
fdt_subnode_offset().

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
 - New patch
---
 xen/common/dt-overlay.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
index bfa153250922..4d75b5b36a99 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/dt-overlay.c
@@ -274,11 +274,9 @@ static unsigned int overlay_node_count(const void *overlay_fdt)
         int overlay;
 
         overlay = fdt_subnode_offset(overlay_fdt, fragment, "__overlay__");
+        if ( overlay < 0 )
+            continue;
 
-        /*
-         * overlay value can be < 0. But fdt_for_each_subnode() loop checks for
-         * overlay >= 0. So, no need for a overlay>=0 check here.
-         */
         fdt_for_each_subnode(subnode, overlay_fdt, overlay)
         {
             num_overlay_nodes++;
@@ -305,6 +303,10 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
         int subnode;
         const char *target_path;
 
+        overlay = fdt_subnode_offset(fdto, fragment, "__overlay__");
+        if ( overlay < 0 )
+            continue;
+
         target = fdt_overlay_target_offset(device_tree_flattened, fdto,
                                            fragment, &target_path);
         if ( target < 0 )
@@ -313,12 +315,6 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
         if ( target_path == NULL )
             return -EINVAL;
 
-        overlay = fdt_subnode_offset(fdto, fragment, "__overlay__");
-
-        /*
-         * overlay value can be < 0. But fdt_for_each_subnode() loop checks for
-         * overlay >= 0. So, no need for a overlay>=0 check here.
-         */
         fdt_for_each_subnode(subnode, fdto, overlay)
         {
             const char *node_name = NULL;
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 12:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 12:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810339.1223016 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swhKQ-0005ur-9U; Fri, 04 Oct 2024 12:22:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810339.1223016; Fri, 04 Oct 2024 12:22: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 1swhKQ-0005uk-6c; Fri, 04 Oct 2024 12:22:38 +0000
Received: by outflank-mailman (input) for mailman id 810339;
 Fri, 04 Oct 2024 12:22: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=djJ5=RA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swhKO-0005ue-6x
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 12:22:36 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on2060f.outbound.protection.outlook.com
 [2a01:111:f403:2418::60f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 55774420-824b-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 14:22:34 +0200 (CEST)
Received: from MN2PR19CA0068.namprd19.prod.outlook.com (2603:10b6:208:19b::45)
 by IA1PR12MB6627.namprd12.prod.outlook.com (2603:10b6:208:3a1::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16; Fri, 4 Oct
 2024 12:22:30 +0000
Received: from BN2PEPF000055DF.namprd21.prod.outlook.com
 (2603:10b6:208:19b:cafe::7f) by MN2PR19CA0068.outlook.office365.com
 (2603:10b6:208:19b::45) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.17 via Frontend
 Transport; Fri, 4 Oct 2024 12:22:30 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN2PEPF000055DF.mail.protection.outlook.com (10.167.245.9) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.1 via Frontend Transport; Fri, 4 Oct 2024 12:22: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.39; Fri, 4 Oct
 2024 07:22:29 -0500
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.39; Fri, 4 Oct
 2024 07:22:28 -0500
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.39
 via Frontend Transport; Fri, 4 Oct 2024 07:22:27 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 55774420-824b-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=PwsgvRnZztdVieZtX3Wvh/amd7XBZtTQcSGeQzKc5sr0/7ZWBf4ZMp3XuHlDWNH13izIYn/X0QOg/OhxBp66BCD3RqTrg2iozAPS9T5XslpSblep/QAUqM0Wb3g93ZA6LE8/F17f3vjrxPYE815TJ13/f/HCf/mRvK0gOINdgehRx5FlOkF8EYwP8OzmnZK23XAtNUtfrECxix/rMGbdAtrBoKC5lbij9qJEXxLnNIpLzxwPUg3ezTzDNlTGBfzHw0kH60BpBZ1x+d4riviRuH4BTT4kzvs7g/c5GTYId8B8jnzsiEcGP4iJIlkKyr2EkZzQviYVICRPzFr9zMjW9w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=uKf08dK1iokEy71LR4Re1/PbxuHP6KvX8byFJkumCrM=;
 b=Odb+X1U3dAJs6hPPXNJKsPIYVPyf3PwXl3l87lPvOprWWAPXyjHq4hGUm0/2yyxvX6hiH8wjxC7fe8a1wHYfmdFvudi/IjdBzArh2uuhL0SiVUqyYVIDYFjdw6Gp0G2XZ6as7Ai2PDJawHTbA3EGwBhF09SmBVVeja6C0i28TQHdmKIsfAswUFO06IQ5xKX571pJkFvY1UprrQTeX/Si9U6z1y7AbFTbaHbXn73I1EfyAHhcxT+4xNnld3J5exdxneax2ptxAoWvM6fC5HIzffJOX0jctF6VT2gL6J7LllWJsETqowj+YL8VtCbJaJB0IX3x5zon0CkNQDHATK4bVA==
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=uKf08dK1iokEy71LR4Re1/PbxuHP6KvX8byFJkumCrM=;
 b=DaZ+U8hlBKgeM+5JOXj5e4wHM2QryCK5A3LgjCJsiIGlf0Jn9VS5TzhgBY6jDNJodILr22/AXo9zhRTE7Yc939Dzd6GDopoFUILH2LX6Biy3QTK8w/091+Hp4Et9L6FzZO22jE2tGg312MgtBXJ9Aaez7b3LQW37TrH4RCN9pMA=
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>
Subject: [PATCH v2 0/6] xen/arm: dt overlay fixes
Date: Fri, 4 Oct 2024 14:22:14 +0200
Message-ID: <20241004122220.234817-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
Received-SPF: None (SATLEXMB05.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000055DF:EE_|IA1PR12MB6627:EE_
X-MS-Office365-Filtering-Correlation-Id: 1788faab-a8f1-427a-0c8b-08dce46f3715
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?eng/1Bf/65WkNLWF4Zb32jMFo1k9akU+dDQRxRJkCCfrgyAUh7nZwT5ije+Q?=
 =?us-ascii?Q?xTITj1MnqfJhiyTYoNuF8Krksrsa3XD12d/i5hZCVQOBfUKKxVO+orQgZD0q?=
 =?us-ascii?Q?y6Jp6EFSneMfvrdyk5FhrX/NpKfZzW6ZaD4JMcXJMA85NJww7MFPrOVdzzwH?=
 =?us-ascii?Q?uIZ4LDOkskcAnfhs+M1DdOdR75CKZC6Trmcr46gCSul4vIeO5ZMos378/Ops?=
 =?us-ascii?Q?sus6sIwv61yG4+KJLy4OKm3rzKzxjYSHDUKswPm5oPimddZksISUUPu+OO7W?=
 =?us-ascii?Q?CR/YxarCRo/8dUlpyraLOyrkh/itVuO3VlSx6o0aRR3lfd1UGjKAiB8viFrd?=
 =?us-ascii?Q?dkb0F6DsBXgU8CFX8tl2xlEmAlsI/A6ZGFw0IH7yMNqDvqzWQo2hp4vUhsCo?=
 =?us-ascii?Q?cq4gHzgQqrhakP8GOg8H34dknn/7jWd8rgUqTwpioE+epg7rhgkgWAleUc0y?=
 =?us-ascii?Q?dVoZNA8ERl4J/WfkJw3Cy7aXm85rEFx2PiBFvZ/KcIZo9jLnMh3QjSfesmpD?=
 =?us-ascii?Q?R2guvdr8vlwJL7VwxXwjlYn8xu7F1gV3RX3Mf4WIq8DKYrT5hZQvekYCOpLF?=
 =?us-ascii?Q?Kr6uF2J8szZwwFa+Ast/4iHQNrgR/4nMzIpymnCcBFlGUX4yE6Y5LCiHqnQf?=
 =?us-ascii?Q?Wfav/AGjkLA2YeqknM39ZKtgss93syJXIsPwk4vRATAyw5L8uIbFzaxggbQs?=
 =?us-ascii?Q?0brvkKF9Qx/r+hOAVvqNFa1/0LgXu7w3iW3MBcuWIC91aHq89RK2ESt/SknT?=
 =?us-ascii?Q?yu57F0C7VC6mWWfXqxy4kYuDqS8cR/ljCrKpFQm3JvBmLfAzQjX36vYnNr/o?=
 =?us-ascii?Q?RK3x6hBI7rUZe9EbN6we9GK7Z9M6R/xJPAT2uWKEE4oEu6UvRRJRPRT1k2Fh?=
 =?us-ascii?Q?ZsmIYhWCgmugFbq6/PzphqDTx/IsiGZ/nnAKVWhSlmYJuCsuMWykI3/XaoLJ?=
 =?us-ascii?Q?6Ds/9GKO3PnOwu22FfoVBOqz2EPYt2fcS6Y9cxU1NWNJC3EABcyRHfptDf6y?=
 =?us-ascii?Q?sGoeYN7likC1IwAIgCw+sRMiFr5yw32hrfzBRLE5jp9Fi4Mx1YwXDZ0koxCO?=
 =?us-ascii?Q?WfGrGJ07C7sWlzoMKEP1iLybqD58F+SMn6QkLJmiyouQvcU9CUg+vvkDuPho?=
 =?us-ascii?Q?nUJmVD7ViX1P74/0YOxtc/7VoVN2BUrRftGvqtHJg09Dkc0HtgHL2Oq6/oFk?=
 =?us-ascii?Q?XY7mtXXe2C+UDzln05a615E7I3P9bClKmXPBVG3ZhpX/lE9vz6gd9SbXo7/2?=
 =?us-ascii?Q?a7UPNACg4Ka4/NMelxJd5ks0OSG8rEXU58oxVuxYjDzgmTbZIf/d3J1gIMdk?=
 =?us-ascii?Q?X0lDUNMheRziVn0pzqvwV/WS5dI/9gL15HQ2cDWJucqjmYOaqUoJkBdsc3xb?=
 =?us-ascii?Q?VSMK6dARcm4U4TJDkCqitu7K+Q+U?=
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:(13230040)(82310400026)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 12:22:29.5771
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1788faab-a8f1-427a-0c8b-08dce46f3715
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:
	BN2PEPF000055DF.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6627

This series contains fixes and improvements after doing some tests with DT
overlay support in Xen. I split the series so that each patch handles a separate
issue.

Michal Orzel (6):
  dt-overlay: Fix NULL pointer dereference
  device-tree: Remove __init from unflatten_dt_alloc()
  dt-overlay: Remove ASSERT_UNREACHABLE from add_nodes()
  dt-overlay: Support target-path being root node
  dt-overlay: Ignore nodes that do not have __overlay__ as their subnode
  dt-overlay: Print overlay I/O memory ranges in hex

 xen/common/device-tree/device-tree.c |  4 +--
 xen/common/dt-overlay.c              | 46 +++++++++++++++-------------
 2 files changed, 26 insertions(+), 24 deletions(-)

-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 12:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 12:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810342.1223047 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swhKW-0006dZ-7B; Fri, 04 Oct 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 810342.1223047; Fri, 04 Oct 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 1swhKW-0006dO-2o; Fri, 04 Oct 2024 12:22:44 +0000
Received: by outflank-mailman (input) for mailman id 810342;
 Fri, 04 Oct 2024 12:22: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=djJ5=RA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swhKU-0005ue-DK
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 12:22:42 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20603.outbound.protection.outlook.com
 [2a01:111:f403:2417::603])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 597c7128-824b-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 14:22:41 +0200 (CEST)
Received: from BL0PR1501CA0011.namprd15.prod.outlook.com
 (2603:10b6:207:17::24) by LV2PR12MB5847.namprd12.prod.outlook.com
 (2603:10b6:408:174::5) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.19; Fri, 4 Oct
 2024 12:22:37 +0000
Received: from BN2PEPF000055DC.namprd21.prod.outlook.com
 (2603:10b6:207:17:cafe::77) by BL0PR1501CA0011.outlook.office365.com
 (2603:10b6:207:17::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18 via Frontend
 Transport; Fri, 4 Oct 2024 12:22:37 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN2PEPF000055DC.mail.protection.outlook.com (10.167.245.6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.2 via Frontend Transport; Fri, 4 Oct 2024 12:22:37 +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.39; Fri, 4 Oct
 2024 07:22:35 -0500
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.39; Fri, 4 Oct
 2024 07:22:34 -0500
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.39
 via Frontend Transport; Fri, 4 Oct 2024 07:22:33 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 597c7128-824b-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=iG6IjzYO9AO3iSWdMkQcIP4fBNpwJMmjxBx2GU/iT7GyCzFUDIYfXjgUBCHGnVti4rEcHzilB/92aR4L6TKUpj/KH9BqTXylzKcezFs01fK3QZ4kyjFHnbLzlEKKMruLtbw6UHY6ShKVsY1rbDv/o3Q4cFKHLZQmBraI6msGfM2/UqDrgLVLpgf50AWdKwOAZbQslWCZW0kPxNLleR3iOQ8/DQSzaeKFZg2+hR7tU0SHc2ztmWbxLOLTeAHKgeb3zd27PgLe+1stEqGKdxkmF4LTmyUqHyU0clqMZni4RUbThcZ81UFbQV151DHqUxYcvlv5fr0orQJ9TmCR8VxaFg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=rJLyeaB5M/7YIwM/WFENv9oGD3G+4gjHz/pbXz8yRWs=;
 b=gxhVCnpZNNyBEmNsXydXPkhHMV19LJkkc0cC5N2KCiO+p5wSW6epJg0cdl0s+J2HtCNz7tOWG27qx3P9QLdMBSE8DM2xBS3/N0pz7E0yQQLo+obskig5UqhdJvSehieRKkNuguu04P9E8ovGSfxPJ5NjSLPMSdZKrtuTu5Cezevk2a7QGTKqC+o3O66UdbXzi41m7fv1K78cFHls+AljWWdM4l8z+zT17V8y2s6aVvYcunMHcUir0Zd1RoxoIVSmJA5S0JLwz+AgDn7di4uyGnMjB5aNlWOyWrXIUwNjZAwK8qwegzkSGy+L32T69AZe6Mzt6hDxpKzNjsj/IM2aNw==
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=rJLyeaB5M/7YIwM/WFENv9oGD3G+4gjHz/pbXz8yRWs=;
 b=tbPmPGJXMG4WP7YElZ4G03hNWJwAh++5FxEUhEFcIlrtlZQeO0lMa2BSRJBxjpZ+GMZ0gCw+n8RLjfkS8UWrYBPh6V0zMGOzEIK0pPMrFTGIs8MfTDIjOIWUc0eVn6pbZP8iM+fZjKz19L8tV9O5jhXl/0nPl53YQmReBYINU54=
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>
Subject: [PATCH v2 4/6] dt-overlay: Support target-path being root node
Date: Fri, 4 Oct 2024 14:22:18 +0200
Message-ID: <20241004122220.234817-5-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241004122220.234817-1-michal.orzel@amd.com>
References: <20241004122220.234817-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000055DC:EE_|LV2PR12MB5847:EE_
X-MS-Office365-Filtering-Correlation-Id: 4e894b71-36ed-455d-4fd6-08dce46f3bd3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?0EX1QhFSaSjFvuLtjA82g4DgiUP1k2e9Itab9WnCxo9S4wGAouMj9bLrDVaW?=
 =?us-ascii?Q?TjVCN0RetPuxc4kCaSl3HzOxc4Rz4WfAETM74mHLeMgR8YgLvkUI/i86TBIg?=
 =?us-ascii?Q?XBTdf2oU+upvzb8sUUhiSgSGFrqtl8KUgAR8j/q9aP1pdV6Cr98xd63vUVbZ?=
 =?us-ascii?Q?++0QgfBabOuIbcRQ2p12KWPNfpkCHaI8qoVgikkonrJ4r2+VaZgKx3I3Nq2k?=
 =?us-ascii?Q?bSybsj3BkF+zkn8XFH1c7yJnJ5+uWYa7NQe6+0Bi/PKYJO14aobdHRgrWIJ2?=
 =?us-ascii?Q?5y15x8We8S/0Ni1KBMtXf77B549fEym+p2m/IpD/SseOWKfx2KKgi75kV/54?=
 =?us-ascii?Q?c+oC6x0hIHkBiotX7/E2mauE0E6iyD62X6Gt2+7LxQ2kBPW6Or//YdkNIgWK?=
 =?us-ascii?Q?aNoE9dinOKj4oyV06WH6E1TAv1f2/XpGvkNZ6hBOBH81e+F1G65gEVff/Lw1?=
 =?us-ascii?Q?GBKGzwI9CyFdWYsyytCvvRj/JjIbJmpnp68/e5Hv7ibfU5qQhovbpN+O7v82?=
 =?us-ascii?Q?kaydyOyI9wrYk1X9ycHldmPEjnhBknYJVdHJvfmhCyMkeAd2nix2rE+7UF2a?=
 =?us-ascii?Q?mURZKVHwLi9H4lUj2Z3QWRBf/h27VI2aOAxfXFUun6oqyN2FJ6OwQCJT6bGI?=
 =?us-ascii?Q?FEI499q65g/9Zw6y0mgXQi8kzb4S0rpXqlT2QrHUOOi2pNnC810rrNi4pUVD?=
 =?us-ascii?Q?VbeFpdNJIGqiAcVnBnt4Z9q1NSIoXiA10KZcvnETYRWmm5W0cUrC/gI1F9NU?=
 =?us-ascii?Q?W028hyL1iuEZpnO3OlDLkGKicc1lFxykHJVmXfiJDtq23OTw8xH4RREMxmhI?=
 =?us-ascii?Q?O9MQWQ0ZqgCB+GFGYMdU7ZKid55a/3GpSRTFyUp8uVDvqhDtK8RerEnFxg3v?=
 =?us-ascii?Q?6I5LTez1HUwYzQaVzEaxPsEi1bXCM4EKG+nVDJPgfTZRpRnjQNJDlNO5HpPy?=
 =?us-ascii?Q?FTctP1zx/YyTV3OuJklnM6rP8ZkQAuVh6sRFXNSeWZ5g0R9nFLV4JtacywQy?=
 =?us-ascii?Q?+mx394Om2yTV8/QCpLcSqVQXeGS3XFV4PyTsuazVU5rSJtUXQFLQtXYyt/ni?=
 =?us-ascii?Q?TtjssAaVuxXdirpu6Mpy0jikJJC2b82zXapX6jvooZYkPQJ0bU0kYwVThcfi?=
 =?us-ascii?Q?YIbVMJTt7AHm3mdEJSGlEfDJ9ZpFNFgVpXv+o5L0E3Hmfw4sPLDkfcA3/Ing?=
 =?us-ascii?Q?DvfHaKT18Wye1Lq2dF9LWRBm4PVAIsywXPE5P8scK/t+3tgGtR0LYF9ZgqsW?=
 =?us-ascii?Q?zeg/IEFKSQm9IDcaWVE1VRZxbQQ8UiY9R4DB1gF1EK6tW2NR267+BWNWtTXq?=
 =?us-ascii?Q?EMnl1zO25yLz1a/Y9Od0ZR/B+BdNdWElmIIiCnLA9nNf153fqUxvI21riMqQ?=
 =?us-ascii?Q?l+nz4tX+7l9gqU0shXXySjsKFzv2?=
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:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 12:22:37.5193
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4e894b71-36ed-455d-4fd6-08dce46f3bd3
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:
	BN2PEPF000055DC.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5847

Even though in most cases device nodes are not present directly under
the root node, it's a perfectly valid configuration (e.g. Qemu virt
machine dtb). At the moment, we don't handle this scenario which leads
to unconditional addition of extra leading '/' in the node full path.
This makes the attempt to add such device overlay to fail.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
 - Use ?: instead of implicit bool->int conversion
---
 xen/common/dt-overlay.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
index d18bd12bd38d..bfa153250922 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/dt-overlay.c
@@ -325,6 +325,7 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
             int node_name_len;
             unsigned int target_path_len = strlen(target_path);
             unsigned int node_full_name_len;
+            unsigned int extra_len;
 
             node_name = fdt_get_name(fdto, subnode, &node_name_len);
 
@@ -332,10 +333,13 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
                 return node_name_len;
 
             /*
-             * Magic number 2 is for adding '/' and '\0'. This is done to keep
-             * the node_full_path in the correct full node name format.
+             * Extra length is for adding '/' and '\0' unless the target path is
+             * root in which case we don't add the '/' at the beginning. This is
+             * done to keep the node_full_path in the correct full node name
+             * format.
              */
-            node_full_name_len = target_path_len + node_name_len + 2;
+            extra_len = (target_path_len > 1) ? 2 : 1;
+            node_full_name_len = target_path_len + node_name_len + extra_len;
 
             nodes_full_path[node_num] = xmalloc_bytes(node_full_name_len);
 
@@ -344,9 +348,11 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
 
             memcpy(nodes_full_path[node_num], target_path, target_path_len);
 
-            nodes_full_path[node_num][target_path_len] = '/';
+            /* Target is not root - add separator */
+            if ( target_path_len > 1 )
+                nodes_full_path[node_num][target_path_len++] = '/';
 
-            memcpy(nodes_full_path[node_num] + target_path_len + 1,
+            memcpy(nodes_full_path[node_num] + target_path_len,
                     node_name, node_name_len);
 
             nodes_full_path[node_num][node_full_name_len - 1] = '\0';
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 12:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 12:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810343.1223053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swhKW-0006gI-IL; Fri, 04 Oct 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 810343.1223053; Fri, 04 Oct 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 1swhKW-0006fA-AQ; Fri, 04 Oct 2024 12:22:44 +0000
Received: by outflank-mailman (input) for mailman id 810343;
 Fri, 04 Oct 2024 12:22: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=djJ5=RA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swhKV-00068r-78
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 12:22:43 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20629.outbound.protection.outlook.com
 [2a01:111:f403:2414::629])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 59696586-824b-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 14:22:41 +0200 (CEST)
Received: from BL0PR1501CA0015.namprd15.prod.outlook.com
 (2603:10b6:207:17::28) by PH7PR12MB8121.namprd12.prod.outlook.com
 (2603:10b6:510:2b5::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Fri, 4 Oct
 2024 12:22:37 +0000
Received: from BN2PEPF000055DC.namprd21.prod.outlook.com
 (2603:10b6:207:17:cafe::52) by BL0PR1501CA0015.outlook.office365.com
 (2603:10b6:207:17::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.16 via Frontend
 Transport; Fri, 4 Oct 2024 12:22:36 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN2PEPF000055DC.mail.protection.outlook.com (10.167.245.6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.2 via Frontend Transport; Fri, 4 Oct 2024 12:22:36 +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.39; Fri, 4 Oct
 2024 07:22:33 -0500
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.39; Fri, 4 Oct
 2024 07:22:33 -0500
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.39
 via Frontend Transport; Fri, 4 Oct 2024 07:22:32 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59696586-824b-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ayrvRtm/FEIs5YtgeD8OvCq9IXNE3lwjuacSb1LGre09rW0RwOBpOSozJNmLC5gSXSyJESHDqpAg6gXaOEihabrsiK5oB8z4OldyhDDQGBbHnFYwl/YxP1/zyxpXtwKZANPaBi8z8j2llPcwqlNb0pfF254H0rD7wBl5UxbWiUrctt6ruiFOS22EbxAzl975xfj43OE7iZ3LYeoCQPFwtcsp2lEjZQQ1cGx4XR1bhtf2r9B5dwECmUERKnlxeB3vTbAtJFQniDGAVhyw9iNPuEdFNzdGA1rE4I7e/6BUwkpLhgQ7yk6cg8yP5ogf4Qx4tsBX+gh/9bqjvnDw1BDLXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=RdOa3RV+tWRNRzTlY1JHgYomlKbBfTaAePYvs1PDYVw=;
 b=GY6R7tJbjTg2U9cW3OIh6LHRiLJ3lPriGGo6UuCy/9wVMvEZ0zFdymCrYiEl4N84p7VQvYGGAgZpGJqwh0rf5eGei8YWpw5tD5ay5Qv31vjxrH33yhe5HkQNcS7j2LdgvMdnopxnkamQghWxbqzHHpvOIeQqG5al8scqb9djx9l7JoJX+5LyVzzj9f8iOOPGAGBANKahgH4J7SnFX9au6U4F3gp75kuwqFvgQXaRnxFXHb6eJjNxL1motM6sNMFl3DZklzaEY0r8WXndyM5I0NPd5K87IJhEuBH4lNMUTFRWdBBYKOL+HqIa5aAP0/m4rCP77/bVhEkz27tsjJf8aQ==
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=RdOa3RV+tWRNRzTlY1JHgYomlKbBfTaAePYvs1PDYVw=;
 b=R7lWF1l0Xd4gkZ5u437TfVOUMLl55qgy+MPWeRJfrK3FKFZW2/MV0hvWfqMB/Ir5MspoMzlVbl2KlUx47tlPWYXkmNeusNkPv6+5hpsVNNXNNJg5JOjM8YJdd6xBlB/6up5yYEACnvwlNzWWCMghlMEi/hpOvvEytITq3g2AQ14=
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>, Julien Grall <jgrall@amazon.com>
Subject: [PATCH v2 3/6] dt-overlay: Remove ASSERT_UNREACHABLE from add_nodes()
Date: Fri, 4 Oct 2024 14:22:17 +0200
Message-ID: <20241004122220.234817-4-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241004122220.234817-1-michal.orzel@amd.com>
References: <20241004122220.234817-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: BN2PEPF000055DC:EE_|PH7PR12MB8121:EE_
X-MS-Office365-Filtering-Correlation-Id: 05dd4bc0-71fd-450d-0b34-08dce46f3aec
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?u60ByXVVJx60MSC/4Cam0TgnSebUnKXj3y2HjJfL6epzz+hdx+T+1PIQvC9Y?=
 =?us-ascii?Q?hUpmNK5rnHKazc8I4GzEmItwQRQMaWjpGtIPLBEYTO6iicAelzmSDm7dbS+U?=
 =?us-ascii?Q?yJEaDAtq6JiZdpLR1QWZFOvSuLterS87XANaAIVp/Pn38vcGeMS6JDWLMTJd?=
 =?us-ascii?Q?JtfU0x0OW3v6DJyETYBczz9o4TBLqRDPM3BhZcQok+v23gPXf1PdctsHPzIC?=
 =?us-ascii?Q?KsL1PFtAaBHeAyZh8dcaRjv8eqb2UkAWf4UINySChPbRUDInUxVsgISMRmFI?=
 =?us-ascii?Q?9fxZXLsOeFTmL90CuWquCRswGEhqclD3U81X6th//7wi4UNo9LFz1RTFjIbK?=
 =?us-ascii?Q?V4OeTDCnuCK2IVhFqBSjPogdoYCkdwxhp9TuFYW4Ftjk2ZlYTOhTJPi3RySJ?=
 =?us-ascii?Q?dZFtXCB9sNTISL0TxlA0danfSVK5kaWuUCHrT9uK0aNRWzbSxZd3qmoU2j3W?=
 =?us-ascii?Q?7pmV4h9Rjc7GZtOkWHeIQ3XQy5ytfyPfN1GRVm8+gA4/TxvX9AwiulMdJe/Z?=
 =?us-ascii?Q?gN6Pm3sPMZWCh8LoIsG9blgQgkMelrBfnS245IvKv8mnhF/IIfOwHdP5EhQA?=
 =?us-ascii?Q?9YizLpR00E2PtXU7j1OnsAgJ+p41f3O6b1LCjPRLblYO+NBBDwhkVxudFfHz?=
 =?us-ascii?Q?DcXC2iQZKYFP6PlJQyzYU4NfNZLoaYKLY2/fIYntbAKcp3Xwh8eo7uVcwQfs?=
 =?us-ascii?Q?8afrEHNDd+wHIkoUH8yne+epD0xoIWs48rTChlEjSFrhvBYU1Bud70IMxAVM?=
 =?us-ascii?Q?zFfuCbC1e7V3ebxZZxQyRvtlX/CsVp/xs3pBxnsZPB0wYq0LuDLuFm7PS0w2?=
 =?us-ascii?Q?VV0jjfxMxICntfmMhBci5uCDibhNom1dz5hfo1mrnucriEYvyp0KB6Ti5ddU?=
 =?us-ascii?Q?tfdutDhE4rM0q4bg7IdEsGz+GUXUxIJc9N8Ujn4n/AXa6bnLXjTep9GsEP91?=
 =?us-ascii?Q?kX/Bjj3XKJqQ49K6dBCNvAGA7dEGDKgFULSZoaJ3xsWvDoF/i/lesMZWwmel?=
 =?us-ascii?Q?wZJmSQ1VtIKDsorkX9cZyQxRQEquO5Pex6qglENW5GKeMXtwSNEC0Dp0THv7?=
 =?us-ascii?Q?OV9aGSkVP0SSY9L6QLEfDYSot4EyUNgS1Z8dAQU3vwMWoiFDASjYKpnxAePF?=
 =?us-ascii?Q?bOxpM8Y5v7BLcrSGtiVB/15ujNV3eOjWJBMO2X5grLQ8F+9kxaB1vnpSGqIo?=
 =?us-ascii?Q?2TDgzxFBgblGzLddaR1MjoKqt93fYLKxcewZpjFgzmqHo4zvssaK95tWcT2d?=
 =?us-ascii?Q?FVfZQ9NnfiQubQU/hYKQYoWYu0m5UlknGpQwqt1wzPaEKnC2T8OCe/+Bvub9?=
 =?us-ascii?Q?d8BGxK7xJYkOjxgjm6BuPFS/ly1aeG+4sJd02Uo1COij2lK0eb8goWaTwqIQ?=
 =?us-ascii?Q?Oz1yx8wUCyFg7/RcubZdxd8SYaTI?=
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:(13230040)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 12:22:36.0193
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 05dd4bc0-71fd-450d-0b34-08dce46f3aec
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:
	BN2PEPF000055DC.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8121

The assumption stated in the comment that the code will never get there
is incorrect. In overlay_get_nodes_info() we manually combine path from
target-path property with the node path by adding '/' as a separator.
This can differ from a path obtained by libfdt due to more advanced
logic used there which can for instance get rid of excessive slashes.
In case of incorrect target-path (e.g. target-path = "//axi"), the
comparison in dt_find_node_by_path_from() can fail triggering the assert
in debug builds.

Fixes: 0c0facdab6f5 ("xen/arm: Implement device tree node addition functionalities")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Julien Grall <jgrall@amazon.com>
---
Changes in v2:
 - Add Rb,Ab
---
 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 8606b14d1e8e..d18bd12bd38d 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/dt-overlay.c
@@ -596,11 +596,7 @@ static long add_nodes(struct overlay_track *tr, char **nodes_full_path)
         overlay_node = dt_find_node_by_path_from(tr->dt_host_new,
                                                  nodes_full_path[j]);
         if ( overlay_node == NULL )
-        {
-            /* Sanity check. But code will never come here. */
-            ASSERT_UNREACHABLE();
             return -EFAULT;
-        }
 
         /*
          * Find previous and next node to overlay_node in dt_host_new. We will
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 12:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 12:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810340.1223027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swhKU-00069T-GM; Fri, 04 Oct 2024 12:22:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810340.1223027; Fri, 04 Oct 2024 12:22: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 1swhKU-00069L-DD; Fri, 04 Oct 2024 12:22:42 +0000
Received: by outflank-mailman (input) for mailman id 810340;
 Fri, 04 Oct 2024 12:22: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=djJ5=RA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1swhKS-00068r-Ol
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 12:22:40 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20625.outbound.protection.outlook.com
 [2a01:111:f403:2412::625])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 57873b07-824b-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 14:22:38 +0200 (CEST)
Received: from BYAPR02CA0069.namprd02.prod.outlook.com (2603:10b6:a03:54::46)
 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.8026.19; Fri, 4 Oct
 2024 12:22:33 +0000
Received: from SJ5PEPF000001F0.namprd05.prod.outlook.com
 (2603:10b6:a03:54:cafe::81) by BYAPR02CA0069.outlook.office365.com
 (2603:10b6:a03:54::46) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18 via Frontend
 Transport; Fri, 4 Oct 2024 12:22:33 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001F0.mail.protection.outlook.com (10.167.242.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8026.11 via Frontend Transport; Fri, 4 Oct 2024 12:22:33 +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.39; Fri, 4 Oct
 2024 07:22:31 -0500
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.39; Fri, 4 Oct
 2024 07:22:31 -0500
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.39
 via Frontend Transport; Fri, 4 Oct 2024 07:22:30 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 57873b07-824b-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ESM/LCG1VZAqsN8asJu9yydd/nyGBVpU/1Yt2+Fkpv7v+x9Kvmts9RgxRDrwLyWTXznOAZB10RPCbgh9sZokVgSVJ5FgRZfJDC/ejp6CRPh20mvwNGgmeYdHLbL4xcs60nYB2CgNvqX+AD0Uq9PR7katoZu29th0awKdVroZD83zYpk7TRsP5T8Ht3siTJNS0R4NMLs39C3QWl6SGxdhem25C0lSTR0BJGBYcYXxyV+0kM9eLH1W1KERJQGIsctGLfIG7E6iZZ7yLXX5/DpxhglwYRZG6h5AzZfpxdbrog3yvDjTqg9rX8nQogjMiJhV1rDfOxolXDoBj+yDxOC4vQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=5Yxzb8QUee8LL/UwpSrq/bczqcgMTL0/++EpgLvvFVQ=;
 b=t/RKvrz1KoLaks/J/RfhK0I9bkyJWyYUJexVDs/UHo+LFlYhBIl62my35tn7GjHrAGpegEvSZR7ZZhgL9xiiC+XDyq+yz7tcht0T5mrB+3fuMDj3sJ9ZlPixyy56QTrOoKDqah78EfGphnsKOsWOXAroMMiN94fuD+9RGk1AWj/gPGulFvFI7LXXXoDn1vGB+uzaoLIUWm/Wlid1JXYxzurajPVAzCz262J2lohalFIY+uUhZQ2wJueSBH2COMDmv2LZrxqbxRnQvxKct755bb7z6WW1y6n8ErdbHZfcqOG0f0B52SnD+4yVT9WdlKBXP7A/eAxL90eWMqEV1W2q4g==
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=5Yxzb8QUee8LL/UwpSrq/bczqcgMTL0/++EpgLvvFVQ=;
 b=Jq642LNZhyCw/mz/0KadPhLuS49zrQpepT33gzmBtxhLtRN6sMfbCdKlKKyZ0asy7xvnXP0KdSNytH/98GthyRBNlh9lE2NrTr5Fq7ElxA7lZBYVOTiLxfxmSPKK0KFg46TnRm1AT4jcIpsK9S3qjHfiLdNtKHivf1YTyTQNB74=
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>
Subject: [PATCH v2 2/6] device-tree: Remove __init from unflatten_dt_alloc()
Date: Fri, 4 Oct 2024 14:22:16 +0200
Message-ID: <20241004122220.234817-3-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241004122220.234817-1-michal.orzel@amd.com>
References: <20241004122220.234817-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: SJ5PEPF000001F0:EE_|CH2PR12MB4261:EE_
X-MS-Office365-Filtering-Correlation-Id: 5a9c3f55-3d46-44c7-9ce2-08dce46f395f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ISqzX7YezNUIGeoauTHyZTrIPy5+wvGB6PnRoiwbddtSXoQUi2ECBnKqlLwL?=
 =?us-ascii?Q?IAMXvYntld0yo7NAQEBoyH8rfhdYnsNZlqRtA6hTOXsp4Bj8lE8FwI9AQLyo?=
 =?us-ascii?Q?Q3Mj5Bb+bR2Tt6aww1RbM6VqoQ5rAGLxErWiGa07cBxo1Di3omlp74Kh124z?=
 =?us-ascii?Q?aIKo8cxYhuJHMDgvTxI3EpWwTuNzYun1u8IuZkVggsNRwLy6eeBSC2mBqpda?=
 =?us-ascii?Q?nXQdBiZp3Dc7IBwF0O3LpBU4jjA0HbaDqRRVyzKdPPWaYC3TCKInjYXU+vAn?=
 =?us-ascii?Q?ZITMatFHbeoQFdEd57s37gkayXmLwHG4Na588efEEAorOG7zFOY0xhSMfEwh?=
 =?us-ascii?Q?qBikRjDpGIweO23FLDgkd2B+Y15o28hX8Oxzx1iaZ2yyDzF/8KG2JomBr7vJ?=
 =?us-ascii?Q?b9ZkTS5nUJhvk7yYuauOE2hKWmb5XBjkwKHqmkWy4VbGVmp8jxtwHvDAUvnO?=
 =?us-ascii?Q?p+wkpgcz3J1Q1hEVE+Hd3xoVxNksmDUfEu0haui/7c4/mhvF/cJgy9qEb2SA?=
 =?us-ascii?Q?foamR2zCnAwMj42wsv2OQSVk8BgPUEX2R+SQYX2IQY6LfupulgZGZOkYnwy+?=
 =?us-ascii?Q?6a1TKl+UOD/yR7XtZVkjVYtItkpH9b25mzwNBeFuQTjoLtRI1QTD/YuUJXZa?=
 =?us-ascii?Q?Jfp9pk8KAlRHFAGK9w1G2845qQw7KZWDEeFV4EtLg9kHlWc7E+3FrDlkMb1+?=
 =?us-ascii?Q?JrPS6+/11ff7bPKzLPYnNucSFQR964dHJYsfk5UaWBAjcm01zEBL3BkrZ9Bo?=
 =?us-ascii?Q?qwG/PgXXAdJ6X/3t7PQ0XllE488JGiytPtiGup/Q6vJhiqhF7SQewxCiT6bb?=
 =?us-ascii?Q?ycnwFUi2DqktVv6yiQZTN+uLuQ57tKhmILtlqYWW9K8Af8P4RJLOgkZmVTCv?=
 =?us-ascii?Q?PlsxrIgRfiKLI5NAKz8A/8z+PuFbVn0Vd97U8uI/u0qjbe/DRAxZSiVTnAap?=
 =?us-ascii?Q?dlhE7jbCF3UXv549eu82kFInwpXD7O7IGN0tzT2zrQ/9A7jEO2uNNv7YQS9v?=
 =?us-ascii?Q?acLZYi24xXy3R37ieLUCAucRBlMeXbhicxo2QQSBbAR81Np/4Z/h80uf1sa+?=
 =?us-ascii?Q?OfrxAbJYS1JkV0oEOBgAz2xV2wGOddeC5leL7EtFX9L1yiTiw8pstzMTlBna?=
 =?us-ascii?Q?k15U8rGTwTLnMZJfwFaemtJJnPb5zXw0U8VoFEoHaY37EkvRp7c6vyq5ys6c?=
 =?us-ascii?Q?0KppuSoYo0dSkJOf9JzvTyePPalSsXQUIuAwK7q6wymeJ7c34RrVz5f016DX?=
 =?us-ascii?Q?GGgqDPvj1P0UAbmZ3K8sHyimUPeuMwPE4kR20XANbLMrnahzcc06GZJE0q+f?=
 =?us-ascii?Q?EW+Axmei11r8b+uFWCr0Vh6YXLinkEcv9H91kFkET4z01QxoNmFrbITeL4IE?=
 =?us-ascii?Q?F0LDxjY3q9nWGuGo+dYpNDIjsciC?=
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:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 12:22:33.3431
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a9c3f55-3d46-44c7-9ce2-08dce46f395f
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:
	SJ5PEPF000001F0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4261

With CONFIG_OVERLAY_DTB=y, unflatten_dt_alloc() is used as part of
unflatten_dt_node() used during runtime. In case of a binary compiled
such as unflatten_dt_alloc() does not get inlined (e.g. using -Og),
attempt to add an overlay to Xen (xl dt-overlay add) results in a crash.

(XEN) Instruction Abort Trap. Syndrome=0x7
(XEN) Walking Hypervisor VA 0xa00002c8cc0 on CPU2 via TTBR 0x0000000040340000
(XEN) 0TH[0x014] = 0x4033ff7f
(XEN) 1ST[0x000] = 0x4033ef7f
(XEN) 2ND[0x001] = 0x4000004033af7f
(XEN) 3RD[0x0c8] = 0x0
(XEN) CPU2: Unexpected Trap: Instruction Abort
(XEN) ----[ Xen-4.20-unstable  arm64  debug=y  Not tainted ]----
...
(XEN) Xen call trace:
(XEN)    [<00000a00002c8cc0>] 00000a00002c8cc0 (PC)
(XEN)    [<00000a0000202410>] device-tree.c#unflatten_dt_node+0xd0/0x504 (LR)
(XEN)    [<00000a0000204484>] unflatten_device_tree+0x54/0x1a0
(XEN)    [<00000a000020800c>] dt-overlay.c#handle_add_overlay_nodes+0x290/0x3d4
(XEN)    [<00000a0000208360>] dt_overlay_sysctl+0x8c/0x110
(XEN)    [<00000a000027714c>] arch_do_sysctl+0x1c/0x2c

Fixes: 9e9d2c079dc4 ("xen/arm/device: Remove __init from function type")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
Changes in v2:
 - Add Rb
---
 xen/common/device-tree/device-tree.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/device-tree/device-tree.c b/xen/common/device-tree/device-tree.c
index 8d1017a49d80..d0528c582565 100644
--- a/xen/common/device-tree/device-tree.c
+++ b/xen/common/device-tree/device-tree.c
@@ -120,8 +120,8 @@ void dt_child_set_range(__be32 **cellp, int addrcells, int sizecells,
     dt_set_cell(cellp, sizecells, size);
 }
 
-static void __init *unflatten_dt_alloc(unsigned long *mem, unsigned long size,
-                                       unsigned long align)
+static void *unflatten_dt_alloc(unsigned long *mem, unsigned long size,
+                                unsigned long align)
 {
     void *res;
 
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:07:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:07:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810393.1223091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swi28-0008KV-Hh; Fri, 04 Oct 2024 13:07:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810393.1223091; Fri, 04 Oct 2024 13:07: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 1swi28-0008KO-Ec; Fri, 04 Oct 2024 13:07:48 +0000
Received: by outflank-mailman (input) for mailman id 810393;
 Fri, 04 Oct 2024 13:07: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=v+dN=RA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swi26-0008If-QS
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 13:07:46 +0000
Received: from fhigh-a5-smtp.messagingengine.com
 (fhigh-a5-smtp.messagingengine.com [103.168.172.156])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a3118647-8251-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 15:07:44 +0200 (CEST)
Received: from phl-compute-12.internal (phl-compute-12.phl.internal
 [10.202.2.52])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 8F40911401DA;
 Fri,  4 Oct 2024 09:07:40 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-12.internal (MEProxy); Fri, 04 Oct 2024 09:07:40 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 4 Oct 2024 09:07:39 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a3118647-8251-11ef-a0bb-8be0dac302b0
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:message-id:mime-version:reply-to
	:subject:subject:to:to; s=fm2; t=1728047260; x=1728133660; bh=2N
	cX0jHSCgfN9L5WNlnDgOC4yrQEEz7nSps6JqoB5wM=; b=XKhxLBVgreU484AoVV
	+4grawtWitdURDKSFI4TKq4BM8KsHq2EerTWuhdjAqdxKqukJ8yd+IGHK3v14Wws
	oiyX/rrdyJx5SutcLclxxbawjtnBmb9GFzHMeJzbKnIDZhI0so7sf1zmJ2/RxF37
	UxM/6bIgVVrwhttq4XTvzVewmTkfWNK7l3pPPunfBX8qCzuaptSb60QSw3ikb6iZ
	WOmhSZlyW4CrzA4dnFKNCYidTeaLOOXAd3tSWZdt2pCFa2DKPSBk9p/y8bGj9CUi
	rL5mbOzH8wr3LKXTzsfpVGZDMikTDG9jdQn5i3eTF7+foz72nx7mY5N0BaPOP1Vz
	lb/g==
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: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=fm2; t=
	1728047260; x=1728133660; bh=2NcX0jHSCgfN9L5WNlnDgOC4yrQEEz7nSps
	6JqoB5wM=; b=Wq271bZ5E+KJNPv859vGqmFT/oyz+WLzU7mrjoqdWx4wKvdhBQQ
	9D827EZeYJdLcLU7WpHdxVp4CFX7dTXwi+9+l5L3YYKt6HX5KE8/B92P2ZXuadNd
	AQIwoPniBLSs2YhzLefupR7vg1akHHrNgvko4w2nDzVOtG56nzSrBZnRHP0AtPNU
	ZJYDqOJDcervuL4QxxRPZWI5N3Eiq3JuDneqOWLIh45HXey85sTeUBxrcGL4pZo2
	tStuJBQBbP4qThTC7agHEmTuUuKknSVIb3T5CKunDNvcGoOCUsY2tYdVL7LgR8w0
	glZLjd0t+MYimN876pFkDV6YB0H+5ZW89Hg==
X-ME-Sender: <xms:nOj_Zvm55qxJPUcCQzq1FaUANE0JsCg0-Qax43aryIkhmKWeIPEa7g>
    <xme:nOj_Zi0B1ZAUAQlgFlytav-oG9zpb93mmhdpvhCGjUIo3yg_35_vk0urg4JnOhJEj
    LRWOKUuZyQ_IQ>
X-ME-Received: <xmr:nOj_ZlpGnBzEfVKZzKjq1F5g4ll5TvrRMBbvqy9uQL1qcH2t8p-EFZ-IAuOb71VM4Agrt37GWCEY2dtgiIxOF9hWkqfN0Qu3cg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvfedgiedtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvve
    fukfggtggusehgtderredttdejnecuhfhrohhmpeforghrvghkucforghrtgiihihkohif
    shhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinh
    hgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefhteeuhfeigfdttdelgffggfeg
    veehtddvfeffuefgieeiieehfeetfeeggfegjeenucffohhmrghinhepghhithhhuhgsrd
    gtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep
    mhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspg
    hrtghpthhtohepvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfihinhdqphhv
    qdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhope
    igvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrgh
X-ME-Proxy: <xmx:nOj_Znk8msFTmSN9K2zLBr7YBmHh0-rAyTup32WyNANEk5mPtZ_MLw>
    <xmx:nOj_Zt050OrRRa5MVn3HnR6t_VqR7hT8waZ9rPiWuVpqzr7C2d61tw>
    <xmx:nOj_ZmvNR426XrYQjInQD0e2VvPP4eW6E41vmpZsg7ZibebhDrzYwA>
    <xmx:nOj_ZhUqYkVv7wqLXIbxhHcytKOISYav3Rm4qkWfZfwFtlWfxPByJg>
    <xmx:nOj_Zu_9RMABc7wuoSSc0vm0Lm-aLk5qxKZDrLn-5y2J6U2Ui7zT2Bek>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 4 Oct 2024 15:07:37 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: win-pv-devel@lists.xenproject.org
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: xenvbd driver modifies in-flight data?
Message-ID: <Zv_omQjCFbw8sQRb@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="1K61LwtFAmappi+0"
Content-Disposition: inline


--1K61LwtFAmappi+0
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 4 Oct 2024 15:07:37 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: win-pv-devel@lists.xenproject.org
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: xenvbd driver modifies in-flight data?

Hi,

I've got a bit worrying report[1], that using Windows PV block driver,
together with backing file opened with O_DIRECT on BTRFS results in
checksum errors. At this point it's unclear what exactly happens there,
it could be some BTRFS issue, some xen-blkback issue, but since
according to reports it happens only with Windows DomU, the most likely
culprit is PV driver inside Windows DomU. It was detected on BTRFS
because it does checksumming, but it isn't clear whether other file
systems are not affected too.=20

I guess using O_DIRECT is asking for troubles here, but nevertheless, it
looks like it might have uncovered some issue that would be silently
ignored otherwise.

[1] https://github.com/QubesOS/qubes-issues/issues/9488#issuecomment-238915=
2014

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--1K61LwtFAmappi+0
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmb/6JkACgkQ24/THMrX
1yzZ0Qf7B6Xl0cPD5MjF0AAuw6NLe7U9/6s9sypNh26znx1dLLgB230Q0firIM3Y
5BKOFOHqqw1nZ5t1h4QyArfe0y35Mrrx+0iqJUR/8p59J+hnxESNNIwuTax9y+ZC
OnYR/gSD8n82pSXj0LW7CwB600CRcanoX0A9RFZjiN3jGcch670dFtJ55uXFJF7M
QY98JiKsCoFQftkWYOmQANyez4AJDkxJiyinUKkMSqW7az3cTTWm6w/3lh4bnPKi
GJO5lZQS6ADqCvuXbgyu9TgcLqZ6cCIKi6EKvT2VoyTMULsoUdpOk+ahKKqL2OVg
DH/zEvSh1t+xjCK6W7sfC9mdvIe27w==
=3dN4
-----END PGP SIGNATURE-----

--1K61LwtFAmappi+0--


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:09:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:09:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810404.1223101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swi49-0000Sz-Sz; Fri, 04 Oct 2024 13:09:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810404.1223101; Fri, 04 Oct 2024 13:09: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 1swi49-0000Ss-PF; Fri, 04 Oct 2024 13:09:53 +0000
Received: by outflank-mailman (input) for mailman id 810404;
 Fri, 04 Oct 2024 13:09: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=OiC3=RA=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swi48-0000SW-GO
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 13:09: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 f090679e-8251-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 15:09:51 +0200 (CEST)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2fabb837ddbso31338321fa.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 06:09:51 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99103b4bcfsm223869566b.138.2024.10.04.06.09.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 06:09:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f090679e-8251-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728047391; x=1728652191; 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=jnxb7QU9O8EisVsWM7vO+5waVFhI0EzzuPLHSXN758c=;
        b=Boz/+3a1+wAREGgpNpRo2/8jxeBM4CD1bQC9DeMWqhN+A6hHmziJUAsVGFmoBWCqdD
         tWeBfE8J+8XMPjKyxC2rUlEswt/1QBrsFXBMMRA2GhaFU5/SDFRuTtAnNJIKdlBmvpk/
         3FVutbX1JxKR8FEvgvpDjWY7wOmJdHU6r52Mk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728047391; x=1728652191;
        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=jnxb7QU9O8EisVsWM7vO+5waVFhI0EzzuPLHSXN758c=;
        b=YgI3n1SkfloTf8zXwP6ai0eSqaXNhoe5la/0aP/Sk9fb3WZJoZ0YZULpbM9Fwt46XY
         bRJyL1ftFyzsc70z3cSFiNwAQRr8n5mBUyks1QvP44EdRs2GFyHWbPecFpr3Ft8yEW/u
         JW89/gZ0ijCKCnt70FOewRko28cT+q95wYsni9otJaRMrh7MtMRdoS3WW3hHcVaqcYTP
         gtGuUfPf6b3DmINaSRlUDa6ZZODFDBQ/B3cXbb0P3NN8hgo+GI6R0DtxTKB9MtmGQYY6
         yPKdI7q6lfTb/J3V7OeIyouRX7CAR6WAcCBl7f4ylnCImmYfuYDaykdwEpfl0n24abXk
         ch+Q==
X-Gm-Message-State: AOJu0YxwlSH5OkvqBzPmKfbxfIHJcFpPsgbxhg1HhnthfqOaCW44229e
	2hlcrkG0ZqHQxAJjjo6YMbgHdDcZOp7ddHE8ePnMd6jQvG2rDwOhP0xGOsxwmZw=
X-Google-Smtp-Source: AGHT+IFA8t5HKKDq6LjtdGzdF4mUa67DBjJch281hDq2KGNu7GI9Y2AArBbUrZlkI6mA4ORnzBmDIQ==
X-Received: by 2002:a05:651c:a0b:b0:2fa:e52f:4476 with SMTP id 38308e7fff4ca-2faf3d897b9mr18422001fa.45.1728047390454;
        Fri, 04 Oct 2024 06:09:50 -0700 (PDT)
Date: Fri, 4 Oct 2024 15:09:49 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [XEN PATCH v1 1/3] x86/hvm: introduce config option for ACPI PM
 timer
Message-ID: <Zv_pHR8gUrcHQU5I@macbook.local>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
 <3ef3724e21b196edd277c94598ebe6624813ede4.1728032664.git.Sergiy_Kibrik@epam.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <3ef3724e21b196edd277c94598ebe6624813ede4.1728032664.git.Sergiy_Kibrik@epam.com>

On Fri, Oct 04, 2024 at 12:31:50PM +0300, Sergiy Kibrik wrote:
> Introduce config option X86_PMTIMER so that pmtimer emulation driver can later
> be made configurable and be disabled on systems that don't need it.
> 
> As a first step the option is hidden from user, thus not making any functional
> changes here.
> 
> Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
> CC: Jan Beulich <jbeulich@suse.com>
> ---
>  xen/arch/x86/Kconfig               |  3 +++
>  xen/arch/x86/hvm/Makefile          |  2 +-
>  xen/arch/x86/include/asm/acpi.h    |  5 +++++
>  xen/arch/x86/include/asm/domain.h  |  3 ++-
>  xen/arch/x86/include/asm/hvm/vpt.h | 10 ++++++++++
>  5 files changed, 21 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
> index 9cdd04721a..95275dc17e 100644
> --- a/xen/arch/x86/Kconfig
> +++ b/xen/arch/x86/Kconfig
> @@ -144,6 +144,9 @@ config INTEL_VMX
>  	  If your system includes a processor with Intel VT-x support, say Y.
>  	  If in doubt, say Y.
>  
> +config X86_PMTIMER
> +	def_bool HVM

The chunk in patch 3 that fill this option needs to be moved here,
together with the updated checks in emulation_flags_ok().

>  config XEN_SHSTK
>  	bool "Supervisor Shadow Stacks"
>  	depends on HAS_AS_CET_SS
> diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
> index 4c1fa5c6c2..321241f0bf 100644
> --- a/xen/arch/x86/hvm/Makefile
> +++ b/xen/arch/x86/hvm/Makefile
> @@ -18,7 +18,7 @@ obj-y += irq.o
>  obj-y += monitor.o
>  obj-y += mtrr.o
>  obj-y += nestedhvm.o
> -obj-y += pmtimer.o
> +obj-$(CONFIG_X86_PMTIMER) += pmtimer.o

I think you can also make the hvm_hw_acpi field in struct hvm_domain
presence dependent on CONFIG_X86_PMTIMER being enabled.

>  obj-y += quirks.o
>  obj-y += rtc.o
>  obj-y += save.o
> diff --git a/xen/arch/x86/include/asm/acpi.h b/xen/arch/x86/include/asm/acpi.h
> index 217819dd61..8d92014ae9 100644
> --- a/xen/arch/x86/include/asm/acpi.h
> +++ b/xen/arch/x86/include/asm/acpi.h
> @@ -150,8 +150,13 @@ void acpi_mmcfg_init(void);
>  /* Incremented whenever we transition through S3. Value is 1 during boot. */
>  extern uint32_t system_reset_counter;
>  
> +#ifdef CONFIG_X86_PMTIMER
>  void hvm_acpi_power_button(struct domain *d);
>  void hvm_acpi_sleep_button(struct domain *d);
> +#else
> +static inline void hvm_acpi_power_button(struct domain *d) {}
> +static inline void hvm_acpi_sleep_button(struct domain *d) {}
> +#endif

It would be best if those functions returned -ENODEV when the
interface is not available, but that's an existing issue, so won't
insist in you fixing it here.

>  /* suspend/resume */
>  void save_rest_processor_state(void);
> diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> index bdcdb8de09..3f65bfd190 100644
> --- a/xen/arch/x86/include/asm/domain.h
> +++ b/xen/arch/x86/include/asm/domain.h
> @@ -496,7 +496,8 @@ struct arch_domain
>  
>  #define has_vlapic(d)      (!!((d)->arch.emulation_flags & X86_EMU_LAPIC))
>  #define has_vhpet(d)       (!!((d)->arch.emulation_flags & X86_EMU_HPET))
> -#define has_vpm(d)         (!!((d)->arch.emulation_flags & X86_EMU_PM))
> +#define has_vpm(d)         (IS_ENABLED(CONFIG_X86_PMTIMER) && \
> +                            !!((d)->arch.emulation_flags & X86_EMU_PM))

Do you really need the IS_ENABLED() here?  If you modify
emulation_flags_ok() to reject the flag if not available it won't be
possible for any domain to have it set.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:12:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:12:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810409.1223110 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swi6a-0001vb-7S; Fri, 04 Oct 2024 13:12:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810409.1223110; Fri, 04 Oct 2024 13:12: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 1swi6a-0001vU-4x; Fri, 04 Oct 2024 13:12:24 +0000
Received: by outflank-mailman (input) for mailman id 810409;
 Fri, 04 Oct 2024 13:12: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=OiC3=RA=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1swi6Z-0001vO-Df
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 13:12:23 +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 4a1e145f-8252-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 15:12:21 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8d4093722bso300829966b.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 06:12:21 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104d2863sm224965166b.220.2024.10.04.06.12.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 06:12:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a1e145f-8252-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728047541; x=1728652341; 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=31pbGcuVKUAQlzIx47SLtuFd7ZC5OYZQS0OpixDG3pE=;
        b=LnwVS5j+XQME1yZssdELppM6VSYC645aEcIRhUj4AjkIUmYNuF0dUQJU+U37Bx1mxD
         9djrLpJJ7z+4a39uAvUfA7WdpS0B02zrsBy/DypR93DCeWZiyjAYEmOA+vwvczdB2AUZ
         QTs6+kZCoDX1MgmcJBF+BFxubDnPCL1BZf4Ac=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728047541; x=1728652341;
        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=31pbGcuVKUAQlzIx47SLtuFd7ZC5OYZQS0OpixDG3pE=;
        b=KNBbgTo+fWMPJBnDvUshM/ZNI9ueAFUmF8BO2QPbE7NzkWy0CxBC5Ntkjkii/3xtDx
         WCr/i5kHrZRNx/aKJaWYTotQ5uC44KexzLh7Q5IQk1pu4gorp5reyI1Dl12m5AmsqGpQ
         Y/q/bdqQMp8PNO9zlVCqBwinQLz6JJJqVO65H89+BKczDpwgVQpoT8l9cfE6tHfSepbD
         SPbgbtFe98j2ZT0dQAZIj/s+fClWPy4hMbbmEG/a1XdqmY08l6B5PFqXz+3qYzBPM/j0
         000ozWomQIwhVegH03d5HzRV+H2kN6zkussnGg5Gf/qpWxCAuVOG9/g3VOEbOBIWu+IL
         MLlQ==
X-Gm-Message-State: AOJu0Yw0ZIZB9rFmAqLPrWo2uA7ZTKdrhnmHlefd/t7K8PJbmw5T/RKN
	a09LGTHy5tSK6jWeetYjWXY1hwrTVCcxDXI9womxO5gwPcI3heyNqLII7gpRErA=
X-Google-Smtp-Source: AGHT+IGRX9KcuuOuwVIK7p3oMhoABnKdkR4r7wsVJX70etxuunE9gUiolwMI02FV5f15ZoBjlIoNXQ==
X-Received: by 2002:a17:907:3e9c:b0:a8b:2604:1da3 with SMTP id a640c23a62f3a-a991bd3f988mr278797966b.17.1728047540853;
        Fri, 04 Oct 2024 06:12:20 -0700 (PDT)
Date: Fri, 4 Oct 2024 15:12:19 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [XEN PATCH v1 2/3] x86/hvm: introduce config option for stdvga
 emulation
Message-ID: <Zv_pszkRrPXstXFW@macbook.local>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
 <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.com>

On Fri, Oct 04, 2024 at 12:33:53PM +0300, Sergiy Kibrik wrote:
> Introduce config option X86_STDVGA so that stdvga emulation driver can later be
> made configurable and be disabled on systems that don't need it.
> 
> As a first step the option is hidden from user. No functional changes intended.
> 
> Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
> CC: Jan Beulich <jbeulich@suse.com>
> ---
>  xen/arch/x86/Kconfig              | 3 +++
>  xen/arch/x86/hvm/Makefile         | 2 +-
>  xen/arch/x86/include/asm/domain.h | 3 ++-
>  xen/arch/x86/include/asm/hvm/io.h | 4 ++++
>  4 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
> index 95275dc17e..89c42ff6da 100644
> --- a/xen/arch/x86/Kconfig
> +++ b/xen/arch/x86/Kconfig
> @@ -147,6 +147,9 @@ config INTEL_VMX
>  config X86_PMTIMER
>  	def_bool HVM
>  
> +config X86_STDVGA
> +	def_bool HVM

Same as previous patch, the content of patch 3 needs to be moved here.

> +
>  config XEN_SHSTK
>  	bool "Supervisor Shadow Stacks"
>  	depends on HAS_AS_CET_SS
> diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
> index 321241f0bf..b7741b0f60 100644
> --- a/xen/arch/x86/hvm/Makefile
> +++ b/xen/arch/x86/hvm/Makefile
> @@ -22,7 +22,7 @@ obj-$(CONFIG_X86_PMTIMER) += pmtimer.o
>  obj-y += quirks.o
>  obj-y += rtc.o
>  obj-y += save.o
> -obj-y += stdvga.o
> +obj-$(CONFIG_X86_STDVGA) += stdvga.o
>  obj-y += vioapic.o
>  obj-y += vlapic.o
>  obj-y += vm_event.o
> diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> index 3f65bfd190..675a13d917 100644
> --- a/xen/arch/x86/include/asm/domain.h
> +++ b/xen/arch/x86/include/asm/domain.h
> @@ -501,7 +501,8 @@ struct arch_domain
>  #define has_vrtc(d)        (!!((d)->arch.emulation_flags & X86_EMU_RTC))
>  #define has_vioapic(d)     (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC))
>  #define has_vpic(d)        (!!((d)->arch.emulation_flags & X86_EMU_PIC))
> -#define has_vvga(d)        (!!((d)->arch.emulation_flags & X86_EMU_VGA))
> +#define has_vvga(d)        (IS_ENABLED(CONFIG_X86_STDVGA) && \

You don't need the IS_ENABLED() if emulation_flags_ok() is adjusted
accordingly.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:15:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:15:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810416.1223120 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swi9m-0002XO-Qd; Fri, 04 Oct 2024 13:15:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810416.1223120; Fri, 04 Oct 2024 13:15: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 1swi9m-0002XH-O9; Fri, 04 Oct 2024 13:15:42 +0000
Received: by outflank-mailman (input) for mailman id 810416;
 Fri, 04 Oct 2024 13:15: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=+0K3=RA=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1swi9l-0002XB-2u
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 13:15: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 bf61e012-8252-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 15:15:39 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 636355C5BBE
 for <xen-devel@lists.xenproject.org>; Fri,  4 Oct 2024 13:15:33 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CEE66C4CEDA
 for <xen-devel@lists.xenproject.org>; Fri,  4 Oct 2024 13:15:36 +0000 (UTC)
Received: by mail-lf1-f44.google.com with SMTP id
 2adb3069b0e04-5398996acbeso2442288e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 06:15:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bf61e012-8252-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728047736;
	bh=1JZwYefyhSOCZB3CuZertgMGY1R4ZnxNXU0IyQGN6qM=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=Kjjnc/L90TMtexTjGYxAYy1SQ1QLyKkvF/CbvX4DRZe3QZLNjgmA043In5Mn3i/rw
	 6B5X+WF05mnRkF5MPsreCu1/RWhlYy0+kTzNNOgDa8rsLpPqegA7XxXK7Rhx0nUxa6
	 IBkZJ2pdiTlc6pHGbh4RfTk0ZTnhtJZsbARiZlcRcR6BaSSw9ooGopO2oN7M88zaKP
	 i9ZukewwH6dgft/J+7smkC7XLiCKWNYuCiKQdA/fHzzcPvpm6QIq/WKqZBvWKoD11P
	 SHCZ55g+iyuo9/ex9afVt1+UpR3QIha2xI0NPLiyaKR+gtHkWFsHfMyaquC5SiCFd1
	 mpOvPGs/3yVlw==
X-Forwarded-Encrypted: i=1; AJvYcCX1wg8CR8oTBh3VHZeJWJ4tZZfz7Xz1DY+5OszAlZh0rj10wG16wtFnH+W7MRlOmo5SRlU5ddYDz3c=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz2SQo6JjkR5hZ+OV0qtaAJ1xz448rM5hLuolVyap9Jja/tlPhV
	YHyfhx5QbQbK1pv0WLcIn+8C+HkjuTOp66/3Ljhv0x0mRZX84m1sMw8vVHXRWRXt523PzQrnqSf
	/7hVns1b4ed2lvrBRtKzksu0DIl8=
X-Google-Smtp-Source: AGHT+IEuHrt3V5yx40A/FQDIn91vq5WH5zeRnx8eS4s+O/De09fFFzzyl2W2oN2bUPJ3C1JSY+Ea24ADde6nXP4PqRA=
X-Received: by 2002:a05:6512:3096:b0:539:a2e0:4e75 with SMTP id
 2adb3069b0e04-539ab8662d1mr1636973e87.14.1728047734917; Fri, 04 Oct 2024
 06:15:34 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-35-ardb+git@google.com> <CAFULd4ZNwfPZO-yDjrtT2ANV509HeeYgR80b9AFachaVW5zqrg@mail.gmail.com>
 <CAMzpN2j4uj=mhdi7QHaA7y_NLtaHuRpnit38quK6RjvxdUYQew@mail.gmail.com>
In-Reply-To: <CAMzpN2j4uj=mhdi7QHaA7y_NLtaHuRpnit38quK6RjvxdUYQew@mail.gmail.com>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Fri, 4 Oct 2024 15:15:22 +0200
X-Gmail-Original-Message-ID: <CAMj1kXF3_Hj9j2f_cBtwTFWvEmB0UoEs_cGkRiWc4AErDx0ftQ@mail.gmail.com>
Message-ID: <CAMj1kXF3_Hj9j2f_cBtwTFWvEmB0UoEs_cGkRiWc4AErDx0ftQ@mail.gmail.com>
Subject: Re: [RFC PATCH 05/28] x86: Define the stack protector guard symbol explicitly
To: Brian Gerst <brgerst@gmail.com>
Cc: Uros Bizjak <ubizjak@gmail.com>, Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, 
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>, Andy Lutomirski <luto@kernel.org>, 
	Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, 
	Christoph Lameter <cl@linux.com>, Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, 28 Sept 2024 at 15:41, Brian Gerst <brgerst@gmail.com> wrote:
>
> On Wed, Sep 25, 2024 at 2:33=E2=80=AFPM Uros Bizjak <ubizjak@gmail.com> w=
rote:
> >
> > On Wed, Sep 25, 2024 at 5:02=E2=80=AFPM Ard Biesheuvel <ardb+git@google=
.com> wrote:
> > >
> > > From: Ard Biesheuvel <ardb@kernel.org>
> > >
> > > Specify the guard symbol for the stack cookie explicitly, rather than
> > > positioning it exactly 40 bytes into the per-CPU area. Doing so remov=
es
> > > the need for the per-CPU region to be absolute rather than relative t=
o
> > > the placement of the per-CPU template region in the kernel image, and
> > > this allows the special handling for absolute per-CPU symbols to be
> > > removed entirely.
> > >
> > > This is a worthwhile cleanup in itself, but it is also a prerequisite
> > > for PIE codegen and PIE linking, which can replace our bespoke and
> > > rather clunky runtime relocation handling.
> >
> > I would like to point out a series that converted the stack protector
> > guard symbol to a normal percpu variable [1], so there was no need to
> > assume anything about the location of the guard symbol.
> >
> > [1] "[PATCH v4 00/16] x86-64: Stack protector and percpu improvements"
> > https://lore.kernel.org/lkml/20240322165233.71698-1-brgerst@gmail.com/
> >
> > Uros.
>
> I plan on resubmitting that series sometime after the 6.12 merge
> window closes.  As I recall from the last version, it was decided to
> wait until after the next LTS release to raise the minimum GCC version
> to 8.1 and avoid the need to be compatible with the old stack
> protector layout.
>

Hi Brian,

I'd be more than happy to compare notes on that - I wasn't aware of
your intentions here, or I would have reached out before sending this
RFC.

There are two things that you would need to address for Clang support
to work correctly:
- the workaround I cc'ed you on the other day [0],
- a workaround for the module loader so it tolerates the GOTPCRELX
relocations that Clang emits [1]



[0] https://lore.kernel.org/all/20241002092534.3163838-2-ardb+git@google.co=
m/
[1] https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/commit/?=
id=3Da18121aabbdd


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:30:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:30:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810427.1223131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swiOF-00068h-3E; Fri, 04 Oct 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 810427.1223131; Fri, 04 Oct 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 1swiOF-00068a-0e; Fri, 04 Oct 2024 13:30:39 +0000
Received: by outflank-mailman (input) for mailman id 810427;
 Fri, 04 Oct 2024 13:30: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swiOD-00068U-Eh
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 13:30:37 +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 d6c5c6ff-8254-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 15:30:36 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c5bca59416so2652747a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 06:30:36 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99103b32a5sm225399066b.116.2024.10.04.06.30.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 06:30:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d6c5c6ff-8254-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728048636; x=1728653436; 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=YwIcegFr/Hgl+Vvby2yaxfMkwwieGzjpd6JyM7YrrQw=;
        b=UJaWpY/3PmuPWzWXXsZmI7h8RcA7PlBow4Xlusqb8K8DpNOeDpwza8ksOuOOPcfoMF
         91hfJlpIjlM6V5IPXbTdm0v42gCjAJCGAfi32Z/lCJeq/M0QAnmkibVJkD90eVNWvEiP
         eLbIP1M7c7pi05P8LNXOQEZLymc9Tz9s69xaXlsiMUQxnRVfXUDPuU/oW0RehOHAaJI4
         96seKTudEr5YQS8iAPwmrieOB9P8Z6Y+M9OvxOO1xY5uqa5PzXTD+p4ReZgoBQUKqeAA
         VHDzqKl9jhAtK8MzAvhh5C1NvAVImYeM5bqdpwD7GHZ7YpIvNGCjvl19I6ekUiNeZPw3
         NKvg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728048636; x=1728653436;
        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=YwIcegFr/Hgl+Vvby2yaxfMkwwieGzjpd6JyM7YrrQw=;
        b=PEplUTYUuA48e4mJ3kwTIOnRSccFB0suvTAYvNtdt43L+T+UgKLTzotvs1L8D1e0Pz
         LWepWDGHFO8yNS6c7dAdy0OJA32JUwAUSwtFsX0tSYMKNu3dAMsnkBI6k1jsw5No32R2
         B/eKfvx8jdRI5OlgCR/0I0/uvDcRtVN1WHrnEPM5Y9K1LOkwYIHV7q01ml7U2HOZyRW2
         fk3TbKPwVv3nlrYO1Qa13uCILsgirp5F9vOOEa5JVdXIv/IjZ74cmLQwwU/fq5s2Nnrz
         U3mInNXKlCB8r4Kbaoly1K5xYJyRKG0mqrlqCTWg2os97za/tSPb3JD+dD5ZoHCeyofh
         eezw==
X-Gm-Message-State: AOJu0YwN4KUIcKKvMAuTq1i2Tvp4LtQSNocc7pUejSNee9jWaOBj0arL
	ICyLi+KOHBfEry1YtCvuhegEQT/W2IEz/q1TesBMK1eonMbzHlBSpNhQfPxVbQ==
X-Google-Smtp-Source: AGHT+IE80U/+x2gpWafCYFREavOJXX2T7E9+0suHloix01noKeU41Bo8d+6UOf3zm8ZidJqxWMLOhQ==
X-Received: by 2002:a17:907:6d1b:b0:a90:34bf:844 with SMTP id a640c23a62f3a-a991c00f5e6mr270165466b.59.1728048635775;
        Fri, 04 Oct 2024 06:30:35 -0700 (PDT)
Message-ID: <36069df2-64ec-4f0e-908e-d0128630daea@suse.com>
Date: Fri, 4 Oct 2024 15:30:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 1/3] x86/hvm: introduce config option for ACPI PM
 timer
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Sergiy Kibrik <Sergiy_Kibrik@epam.com>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
 <3ef3724e21b196edd277c94598ebe6624813ede4.1728032664.git.Sergiy_Kibrik@epam.com>
 <Zv_pHR8gUrcHQU5I@macbook.local>
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: <Zv_pHR8gUrcHQU5I@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04.10.2024 15:09, Roger Pau Monné wrote:
> On Fri, Oct 04, 2024 at 12:31:50PM +0300, Sergiy Kibrik wrote:
>> --- a/xen/arch/x86/include/asm/domain.h
>> +++ b/xen/arch/x86/include/asm/domain.h
>> @@ -496,7 +496,8 @@ struct arch_domain
>>  
>>  #define has_vlapic(d)      (!!((d)->arch.emulation_flags & X86_EMU_LAPIC))
>>  #define has_vhpet(d)       (!!((d)->arch.emulation_flags & X86_EMU_HPET))
>> -#define has_vpm(d)         (!!((d)->arch.emulation_flags & X86_EMU_PM))
>> +#define has_vpm(d)         (IS_ENABLED(CONFIG_X86_PMTIMER) && \
>> +                            !!((d)->arch.emulation_flags & X86_EMU_PM))
> 
> Do you really need the IS_ENABLED() here?  If you modify
> emulation_flags_ok() to reject the flag if not available it won't be
> possible for any domain to have it set.

With the IS_ENABLED() the only other approach to have the compiler DCE any
code left unreachable would be to #define X86_EMU_PM to 0 in that case. I
guess I'd slightly prefer that alternative, but otherwise the approach used
here would still be wanted imo.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:34:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:34:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810431.1223140 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swiS4-0006i5-HM; Fri, 04 Oct 2024 13:34:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810431.1223140; Fri, 04 Oct 2024 13: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 1swiS4-0006hy-Ek; Fri, 04 Oct 2024 13:34:36 +0000
Received: by outflank-mailman (input) for mailman id 810431;
 Fri, 04 Oct 2024 13:34: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swiS2-0006hs-Qv
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 13:34:34 +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 644d5c24-8255-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 15:34:34 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a93c1cc74fdso357134966b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 06:34:33 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99103b4c0csm225584466b.114.2024.10.04.06.34.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 06:34:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 644d5c24-8255-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728048873; x=1728653673; 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=IeMxcbEkS7+KfiSTkuKAogJUERKH4sdwcH+Y/f2ruEY=;
        b=BKhGmXW65FZ4UkJWPzQUiUUaGF75BW0wcc3VR6qHfC0hc9JWXcEhaS30umUVeGSvva
         Pa5sdmZjhwmbyvPSZBXSomRK0zlGKrEyaz3KCYw58CgFxRTifcMLqEEOgltEOf69ZK+9
         kGTaMscySutghjLldng+GI9cgt85TWYKvkNMIG6grRfQg2HbH3+vhKhjL/beRI4lGltv
         sMvYwIL4TaW5u7zc9gRidb5AGIdm4ujZCmrliDh7j/x65k4MFbN3EmUEKQ3+nZVVr1Cv
         i/22G8YpJUScF9V6RpuwVCF0RHYcBIH1x5inOPvzQHgPIP/dkO4lf2Jw061R/uRG+Y6F
         0ihQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728048873; x=1728653673;
        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=IeMxcbEkS7+KfiSTkuKAogJUERKH4sdwcH+Y/f2ruEY=;
        b=SsX4MZN2vIlGh7Y/O5YdfHo5SORKNzxA3IJStFAICwSOnUqOgA+R0rPC4U9MJeGmi1
         nlyzWRi2ZAIpY4uE0i9H/JrvTOmz53FK0DeIU+Z4sAD1BiTjLADAHVpNPrCHY0LNN2hX
         3GTe02WU/RfX9e8IWWk7a8ztl3gi1gvBXG+W0HWfGecAV83UVj+Qb5Ps2y0J+t4f9HR1
         6/k7yS1Q5YAqrCsoJsbhNR+YxuiHAitfaIQZ8Zh+c96l5/Kc+pu4D7lnXdYuKgADw4Rz
         Waanfy3U51QY3SO7ttg0FFh/VWMXkemXPp6PG4OrcTzWCJ05sjGCLmjA4UQqtndXjGon
         khwg==
X-Forwarded-Encrypted: i=1; AJvYcCVV9GZHYzrSdO0OJcD4oWimCoCQA0lkkU4OfRLQxBXCeDZtl6mWcn3uoDK3GIOLfBn/r3k1zInwmCM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyQQ161OjadHThDvbtLbdLLcxqbA5MTIsny2LQB9VYOI2A/PdSg
	TIK7q4UBVGdr6YabwXR+1iM2IFZozLcbv4dbuV6Q2acsb+tacm+B342ZmROfXA==
X-Google-Smtp-Source: AGHT+IHZ2I51+F1WUIazBiBuNQSa0LIv3+D9LAceOM0tuk/m9CYj5/cKY4qs0FTsV9dCvmJuq93rbQ==
X-Received: by 2002:a17:907:e696:b0:a8d:7046:a1bd with SMTP id a640c23a62f3a-a991bd46719mr253368466b.28.1728048873369;
        Fri, 04 Oct 2024 06:34:33 -0700 (PDT)
Message-ID: <53eca6cb-5c46-4cc8-bbd3-d6b355acee43@suse.com>
Date: Fri, 4 Oct 2024 15:34:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 2/3] x86/hvm: introduce config option for stdvga
 emulation
To: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
 <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.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: <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 11:33, Sergiy Kibrik wrote:
> --- a/xen/arch/x86/Kconfig
> +++ b/xen/arch/x86/Kconfig
> @@ -147,6 +147,9 @@ config INTEL_VMX
>  config X86_PMTIMER
>  	def_bool HVM
>  
> +config X86_STDVGA
> +	def_bool HVM

For both if these I'd also question the naming: They way they're named now,
I for one would infer they're about Xen support for respective hardware. I
think they both want to be X86_HVM_... to indicate they're about support for
HVM guests. The same concern then applies to the menu title in patch 3.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:36:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:36:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810434.1223150 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swiTa-0007Fu-Rg; Fri, 04 Oct 2024 13:36:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810434.1223150; Fri, 04 Oct 2024 13:36: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 1swiTa-0007Fn-Oz; Fri, 04 Oct 2024 13:36:10 +0000
Received: by outflank-mailman (input) for mailman id 810434;
 Fri, 04 Oct 2024 13:36: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=E5lv=RA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1swiTa-0007Fh-7E
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 13:36:10 +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 9b354dce-8255-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 15:36:06 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a8d56155f51so232293666b.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 06:36:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99104c231fsm226198266b.197.2024.10.04.06.36.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 06:36:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b354dce-8255-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728048965; x=1728653765; 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=2QXqof1dQaBcUE/Ue/Fb5KiPTC67hzCCEyzLD5W/0X8=;
        b=JNrPnJVEqnNdml2U5xSG/DWwDJL+K84GgHQktxKyCxVqYX0nVZJJPewwZ+CIdyAVtK
         qJJqrcleDXTGytL0/5bFs5l41gmblqODlXIU1ojiBKJye1v+T6bHmymAoE4Z0kJZW13q
         FzjeHT+T+ImXZSyZ5DsaKx1/gGEIxIBF06UQhtC1EHu/Csy8L+E6pzOdpHrVsZC2ql8v
         iAv1XXUga5I9YweTdKYUvkVeKVOn3UWlNZDW2wnwJSXk4sXvq6narwgZA4UqH94epQzw
         coZjWt+3YhIIPaj9zQcgBpA8exvdfLFXej8lFlIdV2wzhigf6Va4W9Hp+FK6xzBLJWDV
         /neQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728048965; x=1728653765;
        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=2QXqof1dQaBcUE/Ue/Fb5KiPTC67hzCCEyzLD5W/0X8=;
        b=qAqeZNhnY5uddU64ClkwoZH1DxsQUYY9t9AfXgbczTg/5kKUtmJoTNfw8IKksyynuI
         gZDtqoZI+IOVWvT8FeFqmLpmawG2NE/KjRjcC2Euwn/wIIyr8QxLNo59G4WWKZpFjKxx
         VtpixhXps987tuq+SAK2I/vw1NiZllJS0xqUkKo6CUS82wqtg7xabet1NFN1mqBBhMbW
         kPoQM7QhPjeQBk0s6Guhs7fDLfdlyd+vWbLCJDIPUMmNNFBtuz8VzXPGFwzguDcOog09
         Hn7fXx/1W0HLG8AfotVGztTe9oCSTT6K7KPvcrCPvsWp64g/224z5gmI3enpinf9xIdr
         YSjg==
X-Forwarded-Encrypted: i=1; AJvYcCWlYs2o+8yB+Qp05NYphfHxHiMifOIsVfbet0Dk5lRFyTcdDBsGdBV49weJyjz/AvF5CoFnb9mphw4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqcJEhBpqMPsmQxbmeaWXEUQr6s59tVAQgd1CsoegZ34ERoO00
	GR2gz6CKVBHRhE2DjjV7HTz9cVMAWSAe17BabhhfD4odibyMFcrtw3PZnNpugQ==
X-Google-Smtp-Source: AGHT+IHsSvSWBQSBTTWod5KXQvFBKDg2JLdXoqxY8KgVDGpzUpFjONDikW/NgkAm1dxhEAS/v6U8RA==
X-Received: by 2002:a17:907:2687:b0:a8d:fa3:bb24 with SMTP id a640c23a62f3a-a991bd1f7damr269485166b.23.1728048965516;
        Fri, 04 Oct 2024 06:36:05 -0700 (PDT)
Message-ID: <898034ff-3a73-45c2-b3e1-247f593bd073@suse.com>
Date: Fri, 4 Oct 2024 15:36:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 3/3] x86/hvm: make ACPI PM & stdvga emulation
 optional
To: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
 <9b27c594b3a63b75826a864dea08d902fd8702c3.1728032664.git.Sergiy_Kibrik@epam.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: <9b27c594b3a63b75826a864dea08d902fd8702c3.1728032664.git.Sergiy_Kibrik@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 11:35, Sergiy Kibrik wrote:
> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -742,11 +742,17 @@ int arch_sanitise_domain_config(struct xen_domctl_createdomain *config)
>  
>  static bool emulation_flags_ok(const struct domain *d, uint32_t emflags)
>  {
> +    const uint32_t disabled_emu_mask =
> +        (IS_ENABLED(CONFIG_X86_PMTIMER) ? 0 : X86_EMU_PM) |
> +        (IS_ENABLED(CONFIG_X86_STDVGA)  ? 0 : X86_EMU_VGA);
>  #ifdef CONFIG_HVM
>      /* This doesn't catch !CONFIG_HVM case but it is better than nothing */
>      BUILD_BUG_ON(X86_EMU_ALL != XEN_X86_EMU_ALL);

Nit: Blank line between declaration(s) and statement(s) please.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 13:43:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 13:43:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810440.1223161 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swiaX-0000zG-Hu; Fri, 04 Oct 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 810440.1223161; Fri, 04 Oct 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 1swiaX-0000z9-EH; Fri, 04 Oct 2024 13:43:21 +0000
Received: by outflank-mailman (input) for mailman id 810440;
 Fri, 04 Oct 2024 13:43: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 1swiaW-0000yz-LM; Fri, 04 Oct 2024 13:43: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 1swiaW-0005K4-Em; Fri, 04 Oct 2024 13:43: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 1swiaV-0006eI-Ks; Fri, 04 Oct 2024 13:43:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swiaV-0002yo-KT; Fri, 04 Oct 2024 13:43: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=LvoTiOFI8rafuZyLiImdUAwNX/QJLIN78EQFnkm69bY=; b=y4afuXqPzne+LSMzRl8w8OlsVS
	zrXNrWevkFCkFDWA+yKRlYr3F2pwrqte9ZSJbvYvYPxI7tWet8Rk+1Rgw2/eC2lHtBUvM9JFb7RPM
	WwOtsBiivm7KX8PdD6cUfiD7uffF7Qf6J7QuMZaavDhSMJpcRkaCVSWS8CRvvY6H3/g8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187955-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187955: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-credit2:host-ping-check-xen:fail:heisenbug
    xen-unstable:test-amd64-amd64-dom0pvh-xl-amd:guest-start/debian.repeat:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-qcow2:xen-boot:fail:heisenbug
    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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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:migrate-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-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-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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw: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-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=444cb9350f2c1cc202b6b86176ddd8e57525e2d9
X-Osstest-Versions-That:
    xen=41190d2ceb03b12ffc17a66c04de519c26a6052a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 13:43:19 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-credit2  10 host-ping-check-xen fail pass in 187967-retest
 test-amd64-amd64-dom0pvh-xl-amd 22 guest-start/debian.repeat fail pass in 187967-retest
 test-armhf-armhf-xl-qcow2     8 xen-boot            fail pass in 187967-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit2 15 migrate-support-check fail in 187967 never pass
 test-armhf-armhf-xl-credit2 16 saverestore-support-check fail in 187967 never pass
 test-armhf-armhf-xl-qcow2   14 migrate-support-check fail in 187967 never pass
 test-armhf-armhf-xl-qcow2 15 saverestore-support-check fail in 187967 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187944
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187944
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187944
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187944
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187944
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187944
 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-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-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          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-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  444cb9350f2c1cc202b6b86176ddd8e57525e2d9
baseline version:
 xen                  41190d2ceb03b12ffc17a66c04de519c26a6052a

Last test of basis   187944  2024-10-03 01:44:47 Z    1 days
Testing same since   187955  2024-10-03 14:42:21 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   41190d2ceb..444cb9350f  444cb9350f2c1cc202b6b86176ddd8e57525e2d9 -> master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 15:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 15:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810492.1223178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swkMp-0000Xn-DS; Fri, 04 Oct 2024 15:37:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810492.1223178; Fri, 04 Oct 2024 15: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 1swkMp-0000Xg-As; Fri, 04 Oct 2024 15:37:19 +0000
Received: by outflank-mailman (input) for mailman id 810492;
 Fri, 04 Oct 2024 15: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=yqrg=RA=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1swkMn-0000Xa-Kn
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 15:37:17 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on20618.outbound.protection.outlook.com
 [2a01:111:f403:2613::618])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 87f2b869-8266-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 17:37:15 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by AM9PR04MB8812.eurprd04.prod.outlook.com (2603:10a6:20b:40b::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.18; Fri, 4 Oct
 2024 15:37:12 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8005.024; Fri, 4 Oct 2024
 15: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>
X-Inumbo-ID: 87f2b869-8266-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=o+E1RDeG89bT91MyIoWSp7DMeqkMUdd9QfBA5MF1bowlo2zG2jxjVPumcv7duU2zak+ApUDaHxgPI7PPFkksGtVDFoNfUdtB5zY+QKrJJg5dL5x2qwHaccnFpG4eU7vNDDpcHCBbCV2rXlsTxG4rFRqCkJWXiysrqYB2gpa4arniOqcR+XMpiJdSJfCyr7A//R12RauN06QlGAAEb9CkRW6IS87NsY8dMCVhCJN1lupYVOksMlDWYq7vMMaFH4q+yjz+g+CR/jYgDZlSlvbpQxA+FI4ObAIHiPnIY0FgA9+6u6n3erjS4c2rT84kkq6iC7FBBSLfXjlNP25xMuh/zA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=HBdiDZCzBYnZfdkUmyKsBTthADAhMvLqKF+bNxro32w=;
 b=ZFPM/YXBiIibm4UTDPiiGQuU0zKp2OpkINmHvF8kFvOwP0DdiRJPoEbE4K87nwX4nN+2twcU9d5k6cJA7q8Mxsb7JetGRre1wvWkAC94KAXN35ftKUKD7A067NuTGzBEgu2kLI4ttW34MmPds/J5+AQfN+jd6e7dgixpOMlTr8hzoFlMpiFyT5gb5XQmG3xMPUynsEZYdrhQJgoEkGUsbdDhObw9ZYdaAjCK7W2c9r9PH593fp201gdLnKV8Y5ewEUBLVfdHl/oAcLjSlK0OL8I0RPHD11pYmrP4UsBLQN6pnR+YbWNt3ymLWaTLRLK0nCpAfsixmnJ+y0YkpMC5FQ==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HBdiDZCzBYnZfdkUmyKsBTthADAhMvLqKF+bNxro32w=;
 b=mofQwhLfLZ6jbYN66xuyFSGTnk9ldWDu+F+XzsHt525dLVYevXsZOrM9GJwpCc4k/mlu0ss5bBHToRzeE+XpWBwUyqaS0W6mGNqP6JefIbQ25miu3xFmNd2UfWl0xkIXatcFQafYjR9yZEKQmDk1+fpyDJsX522qW2xHyw62hRy7hehFbAruHcoVIANDFPRTLVRdWP8qo2fbVdEdF9vs8fJkXVxGovIUAf40HTbrOpgRVeIocla2OvxhrAsImUxH9/Gt6lb4lFo187Zpic5PnlVdBYjz+wxxdDhMo+rS2oO84amCzwiR1IWkdDEpOn2jH7HTl3x3bwyCBGeqPqlvCQ==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <b8419295-cc63-41b3-9f2d-277d81e5f85a@oss.nxp.com>
Date: Fri, 4 Oct 2024 18:37:09 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/8] xen/arm: platforms: Add NXP S32CC platform code
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-6-andrei.cherechesu@oss.nxp.com>
 <94dc1668-5215-424c-9dcb-1e343451d464@xen.org>
Content-Language: en-US
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
In-Reply-To: <94dc1668-5215-424c-9dcb-1e343451d464@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM0PR04CA0133.eurprd04.prod.outlook.com
 (2603:10a6:208:55::38) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|AM9PR04MB8812:EE_
X-MS-Office365-Filtering-Correlation-Id: 3438ef90-b6fa-404a-77e0-08dce48a6a3e
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?bklOSmVYYnBXbTJRM0xwaGN6bkEwNzJCRFNDYzBtVW8rdVBKMnZFdCt6aFNj?=
 =?utf-8?B?R1gvT243eVZ3MDJuRmhHSzU0ak95RHphT0ZWejJ0eGZqcnludjJ4d3g3TU1j?=
 =?utf-8?B?K0lQcG0vTkxMZjVSaXIyV0hGSitwOTlxUkxjTk5rUEFwMXZUYXd4ODFKeHVq?=
 =?utf-8?B?TThyc0IzMExyN0FhT1FqZmdvaHVXQ2pTK1BUdlg2N3lrQmlUWlozWEJZdDIz?=
 =?utf-8?B?aU90VFNmcGtoS2RmOGp6Y2VXQzFZMjZsd2VsaU50dHQ1MDB4S3ViUVlTWEhr?=
 =?utf-8?B?ek5US3o1N1ZGWTdSMUNiTHpsM3ZOSndIdW1CalI0T2hqVmVwZXBGdlU5bnpU?=
 =?utf-8?B?dEdRSUl0Ukthc29nM0YvRlpEK0tuN3NNYjg3Wmp5S1BwWVJIWFg3K2lDV1JP?=
 =?utf-8?B?bW5tUTZRRTdCY1Npam9KSnlVL1dNbGZ2dHpPMmk3LzlkOGVQNHdiY3RGckhl?=
 =?utf-8?B?Ymd6ZXNaRE1UQjRTemxGaEZuOGduTVJaTHZMTWVHaHBBb3RGQ2hSeXVIOVcr?=
 =?utf-8?B?WjRwOGwzdzFSZDdNUys2VE1XdUQ1Mm53SEd5Njg5ZTV4T2hKL1NXWXgvSG5R?=
 =?utf-8?B?b2d6ZkpwYVhLd2FuRmFSbmFmcVF6WXhJMjZMM1cxTkxvSFYvYUJaQkg3RzdC?=
 =?utf-8?B?K1dsb3hxME5iVk9waWp4REk0b1hHZGlTOFpzc012R2VkQS9LWGtRZXhJRFNn?=
 =?utf-8?B?L1JDeE1BT2NuVmRjWndWMTBLUW1tQURiL0xvUmt6cDgzazVQdUlFWGZZcWdH?=
 =?utf-8?B?Y0hGVjUyVUFGY3l3UTkvZ3lkNWk0RjdENEM0MXhvNUFnd2VWMndLOHJENGIx?=
 =?utf-8?B?ZXhCK2ZhT29YeHdlLzJsbU5JRUVWTE1KaXAxQkpqVW13Rnk2UGlEK1EwUGtj?=
 =?utf-8?B?MGhEbytTa3ZXK2k0SzlJYVNpczNYd2tZbURzTkhTVFZqVitPMjczSzVhWGY0?=
 =?utf-8?B?ZXZRZXNVRzRHRm5pMFU4Uk9CNEYvdm9JTXhvdk9URHVQQ3F5RHZodFdRbDE3?=
 =?utf-8?B?clVKaWZCa2hUUnpSUE5LSHRqVXEvY0ZHZUxNUG9ZUXdTOGVGNm9aa0kwdmtP?=
 =?utf-8?B?OFVkRVZkWmZ2T3ZGQWQ4dlQyQ2tiMUUzVTlLeFhrU1ZCbEo3V2xVME04Vk56?=
 =?utf-8?B?QVhWQnp1R0dDemN0Ly9kK3RnK3lMamVXN3BKMm9OcHhrWWY1Q05DQStXeUs1?=
 =?utf-8?B?L21zV0dxWkpieDZiaVhYQnR6SnRXTVVNdGZaVEJwQllMN05OcG9HeWRNYzI4?=
 =?utf-8?B?b2VESldtdTF3aDJmdWUrOEg4aVhNbXlINUZ4aXkwVktYaVQrWVA4eGF0SDZv?=
 =?utf-8?B?bmhsRHdEeHQrOFZtOWNZN1VMZml4U3ZKRllNMWRRTnpKYWpyZnJCZ2VpMHRF?=
 =?utf-8?B?ODZMeVVZcXhzOEd1YXE1SnRnOHNIZktLUHNueFpKL1NyYk84bmZDYVQ5Ui93?=
 =?utf-8?B?Q3ZQaVRUaS9OMUpoMXIxMm1ZbXNFNktMVlp0S20rTFV3TDh3OGRMa2FzU0Vp?=
 =?utf-8?B?UTcyT1lobUM0K3dCcG9mbTN5amlaNDZPMk5RUnpIc2xBMlRIcWxOQUM0bG9M?=
 =?utf-8?B?cldOQ1U2cS85Nlo3V05RaVVGbVdzQVRqa0IrVzFBZ1Y1aUtMUmVBVmUyZTZx?=
 =?utf-8?B?TXpYcGV0UjBFY2JCVlRqODVnNHRpaFdtVklYQ0ZMRHdJZ0M0RElUTzQ0eG1r?=
 =?utf-8?B?aGR0Wm9HaUFrMDkrbDFnZ2d2ejNSVWloelBkc2tVcEZKZGZGb0RZVDRRPT0=?=
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:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eHNXYmxQakppcXVhTzNRNzF3SGFVVnNNRzJuQURYZEM3VnQxdlhXbk8rT1RE?=
 =?utf-8?B?R0ZyZEZLaEZ3RWxxblY0a25Vd1VvZjc3Tkx5eS9vVWp5MVhOZGM3YjRCS2Jm?=
 =?utf-8?B?VzBaMEFwbm12SWQ3QmZEdDRBN0xEd2JHdkZvOHpQMDFOSHRjdzlXVnpOVnRC?=
 =?utf-8?B?UTRCL1FxRjRhTytGdTJueEcrVjd0VENieHRQdmZHOGp3WERaVWMrNHIrbC9P?=
 =?utf-8?B?Wk9mUGM1MTMzcitXOWxrYm1SdW1TNHBieUNsYUIzNkVRTHBPOFNnVlpGdkFP?=
 =?utf-8?B?dkFMdXltUFBSM2NDblhhV280ejN1N2x5cjJpd091b3pacVFoYTQ0dU5KU2xp?=
 =?utf-8?B?ckJQcVppVytnMjNmY2s2Vzk1R2xoU0xpdmVWQ3hYdlhBNkY5ckpWS3hOWGVh?=
 =?utf-8?B?TW9EOEdweUMrbTlHM2twNUZiQXdubzFZSzZkVWZXRms1NytDODVaNEFPVGFm?=
 =?utf-8?B?OGJ1YzhSdFhWV21NUjdGdFcwZTRHWEE4VWREaDVyRVB2WXpLemFHVWFleFZi?=
 =?utf-8?B?RkwyUFFaMTNtQkg3Umw1V3B3ZXMyRkVpWWx5ZW1HVUVrY2NrVFF3QlVqR2pS?=
 =?utf-8?B?b0FtNnp1NnhudFdqcmZ2bDIzOVBJeU1CQ1FsMWtIejJDWnhjYnVqTlI2aU9D?=
 =?utf-8?B?Zm5Vc1NTMlJnMDVMZlBGdzR4eVZkaW9FRWJPSUZDNDVqTVM0c1pxY0hmNzVK?=
 =?utf-8?B?dEdlbEZWZ1ZRa0NabzlqNDdmcEE0NDk5Z1VRRDF2OGJqVDcycVhHb1Q5b3hK?=
 =?utf-8?B?THFiODVOVWEzalBpaXNObThXZmhYNlh6WEQrSGRQZVkvbW5kVUpxNklYaWlz?=
 =?utf-8?B?RUFYTHpTbEhQdG12NzkrcHd1WnV3djVvY1l2K0NuNTJHRmtTOExDTHpOdy91?=
 =?utf-8?B?ZWFzODMxaUF1ejR0c255RE9Nbm12VjFtMXBNakVnNDAyejZsREkxUitQZzJL?=
 =?utf-8?B?elZBWlJqYzlOSXRLTVh3WnJNeGZZQ1B4Ylg5dit4NDJXZUhGNUsraGM4cWpK?=
 =?utf-8?B?NFF0cUYzRDczbkR0ampsR0lSVlIvY3RWSDQzcGxlOG94VDhXa0VSL21WZkFT?=
 =?utf-8?B?UFVIVWZsRzQ4SVZVR3hDeksyRmlIWGNWVExzUnJvYkxWa0FRY1hYYWFWMVU4?=
 =?utf-8?B?MUp4akZieEtkWGtUODE1dXlzVkxYQk9OQWJETEplaklhZEhSd1FuQUJ6QW5B?=
 =?utf-8?B?elpQVGh5YlBOSEluZ0VvSkRLK3A1UEtRODlZajBYc3lPVzFiVFNrbC9kMUlZ?=
 =?utf-8?B?VW9UaEo3bGJ4ZG9ZS0Q1QkhraHRmb1ZXK1NJUS8rTjBKN21DNFN3d3FWY05Z?=
 =?utf-8?B?Wk9tTktQS1VmM0hkb1RjbTd0OWg4QkRDZFRNbTJEcGI5MjZrR1ZtUEpZa2Jj?=
 =?utf-8?B?ZlVtVkUxVkg3ODFBNjd5SmZXTDRZUytBWTQyMjh3RDBYR1ZIK0NIUFV2SVJs?=
 =?utf-8?B?TE5SY09UbmNkZ3diM1QzT1RqZHc5MEtTUVF6Skp0cTFTRTZCZjhQRVlyUUhu?=
 =?utf-8?B?d2lFWFg2eXFzbW5FNG9WdG5JN0N2alV4SmpGaHU0TTJCSC80WmtOUVRMYjc2?=
 =?utf-8?B?ZElFem1mZENBanErSU0wc0JSeGZIcndrTW9XSVhMZ3dUdkxpVjl0VXpUMWZz?=
 =?utf-8?B?Q01NUit0T0VReGgzazhLVEFQUDVoUlcrUExFWVZ6OGpuQWhReklubmJodlc1?=
 =?utf-8?B?dFVlNXc0S0FKNVJJTjhtaVNsdzA0RnhQRDZySkQ5TzdDNlhIVCt6UmhGNWtR?=
 =?utf-8?B?d2xrUUdnY0pCbjRXNWRKL1F3QmN2UHFNdVdycjdYQ0o5K3lVMmJtdVNWYVBi?=
 =?utf-8?B?QzJyL1NlcE16RVBMVndSWHM1Q2NGRGg4bFlReDNObDlRNzUvRmdBbDFHK0tJ?=
 =?utf-8?B?TlhIQWN4a2dPMCtlQmVtUEZMMGdncnFHdkpuTTJMMC9kWXJMdG1WZWRwY1BF?=
 =?utf-8?B?WTRoVHQzdE16U01VTHd4Ymh6ZEd5OHFybEFVM2JCL2RYVWhVaXVIQ2xhWjlC?=
 =?utf-8?B?Yy9VTXlWSzI1Y1p3UjJCaVkxZEhpckpTRk1nQWdYV2o5NHliZ3N0YzBkUGpZ?=
 =?utf-8?B?d0lSQ0ZKZkt6MWs4MWI0MTI4QWVDS2djcnVHV3ViUEtXQnpSRnlFY3NKMlE0?=
 =?utf-8?B?a1pPVkhEWjkrb24yNnBsYnJUTzRmYVdwUk02WXN3RzVQOVZ0YkJaVTNKN0Rm?=
 =?utf-8?B?UVE9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3438ef90-b6fa-404a-77e0-08dce48a6a3e
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Oct 2024 15:37:12.0969
 (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: R8bK7tcWryqbWkrSkclYSMoStboYRkQaE6WjJgMg3kx+GkJYD+k2qTKNZ+KDeYX+tTJchahYLNK23w75jQcJ/lZfrPcUidzYBDqxQ2+zz/U=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8812

Hi Julien, Stefano,

On 01/10/2024 13:01, Julien Grall wrote:
> Hi Andrei,
>
> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>
>> Add code for NXP S32CC platforms (S32G2, S32G3, S32R45).
>>
>> S32CC platforms use the NXP LINFlexD UART driver for
>> console by default, and rely on Dom0 having access to
>> SCMI services for system-level resources from firmware
>> at EL3.
>>
>> Platform-related quirks will be addressed in following
>> commits.
>
> I don't see any specific quirks in the series. Are you intended to send follow-up?
>
> [...]

Well, we could use an opinion on some SoC erratum implementation
and if it would be acceptable for you or not, from any of
the ARM maintainers.

The erratum is about some TLB Invalidate (tlbi) instruction
variants (by Virtual Address) which are handled incorrectly
in some cases (for some VAs), and that need to be replaced
with broader versions.

It doesn't apply for all S32CC platforms, but we can use the
Host DT compatible to identify this. My idea is that we define
a platform quirk for this and check for it using
platform_has_quirk().
Then, we either:
    - modify the definition for the affected 'tlbi' variant
    in arm64/flushtlb.h to actually execute the broader one
    if needed
or:
    - define a new wrapper for the tlbi variant we want to
    replace the affected one with
    - check for this quirk before its usage and call the
    more potent version if needed (there's only one
    occurrence of usage for the affected version).

Number 2 seems better to me, it's more customizable and
it's similar to the existing handling for
PLATFORM_QUIRK_GIC_64K_STRIDE for some other Arm platform.

Do you have any suggestion/preference regarding how this
should be implemented?


>
>
>> diff --git a/xen/arch/arm/platforms/Makefile b/xen/arch/arm/platforms/Makefile
>> index bec6e55d1f..2c304b964d 100644
>> --- a/xen/arch/arm/platforms/Makefile
>> +++ b/xen/arch/arm/platforms/Makefile
>> @@ -10,5 +10,6 @@ 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_S32CC_PLATFORM)  += s32cc.o
>>   obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp.o
>>   obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp-eemi.o
>> diff --git a/xen/arch/arm/platforms/s32cc.c b/xen/arch/arm/platforms/s32cc.c
>> new file mode 100644
>> index 0000000000..f99a2d56f6
>> --- /dev/null
>> +++ b/xen/arch/arm/platforms/s32cc.c
>
> We only add a new platform if there are platform specific hook to implement. AFAICT, you don't implement any, so it should not be necessary.

Like I mentioned above, there's some erratum workaround which
could make use of the platform_quirk() callback, that we want
to send in the near future.

>
> Cheers,
>

Thank you for the review and support once again,

Regards,
Andrei C





From xen-devel-bounces@lists.xenproject.org Fri Oct 04 15:38:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 15:38:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810496.1223188 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swkNr-00010y-Mx; Fri, 04 Oct 2024 15:38:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810496.1223188; Fri, 04 Oct 2024 15:38: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 1swkNr-00010r-K4; Fri, 04 Oct 2024 15:38:23 +0000
Received: by outflank-mailman (input) for mailman id 810496;
 Fri, 04 Oct 2024 15:38: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 1swkNq-00010h-SV; Fri, 04 Oct 2024 15:38: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 1swkNq-0007N5-Ku; Fri, 04 Oct 2024 15:38:22 +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 1swkNq-0004j2-8O; Fri, 04 Oct 2024 15:38:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swkNq-0001T5-7p; Fri, 04 Oct 2024 15:38: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=RLyXAA+b0f8tohXR92/wmjJ31ZVSSLga63eUlY7EaqY=; b=bJ4E1M+txR/caXSuQTdE9+VWU1
	jWW7VXTYf3wILAn2eGxsoKXXOd738VozrkG2Y8hmTFQhVkZv/WS9xhILSR6xkv8wGsBScUvct5dqr
	uV93O+8Brh4vpxw+/Rxgx/rcYE1GepiEthG8qlQu9I2lEtcrW94ZIf0hmS9GR9H3jRsE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187966-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187966: 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=bcce5a6b62761c8b678aebce33c55ea66f879f66
X-Osstest-Versions-That:
    xen=d82e0e094e7a07353ba0fb35732724316c2ec2f6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 15:38:22 +0000

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

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                  bcce5a6b62761c8b678aebce33c55ea66f879f66
baseline version:
 xen                  d82e0e094e7a07353ba0fb35732724316c2ec2f6

Last test of basis   187959  2024-10-04 01:00:31 Z    0 days
Testing same since   187966  2024-10-04 12:00:24 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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
   d82e0e094e..bcce5a6b62  bcce5a6b62761c8b678aebce33c55ea66f879f66 -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 16:04:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 16:04:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810518.1223229 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swknR-0006Ko-EA; Fri, 04 Oct 2024 16:04:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810518.1223229; Fri, 04 Oct 2024 16:04: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 1swknR-0006Kh-AL; Fri, 04 Oct 2024 16:04:49 +0000
Received: by outflank-mailman (input) for mailman id 810518;
 Fri, 04 Oct 2024 16:04: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=jgwL=RA=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1swknP-0005bC-5M
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 16:04:47 +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 5fadd88b-826a-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 18:04:45 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a8d29b7edc2so295947466b.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 09:04:45 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5c3c8fsm10040166b.3.2024.10.04.09.04.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 09:04:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5fadd88b-826a-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728057885; x=1728662685; 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=hqQSvaZsrgtTFm5v43v0hmc6KczEuWu7/bK2WOCfUo0=;
        b=I1uqN0+7U4XRv1FuZUTa8iRzSNzApVwLxkR4TxzlGURKR0FDc5hm3D2I7bQKmOD4Qv
         4KGq9ZO7SNA9V6tEJkZQ1l9MGp+fmi7dHXYN1xdAR08/dOpHbmUyXpVQzVKrwKVTiQiP
         URDKq9Yg5EisbdYO5gH2mGg3Xk36Yn+mqTHJpWJ1zf1Cw/a0czCWJ+Fq7vz27sLa0U1p
         cb+WHBNp5D3SrjHRdaEEGIq+nftFSqvkmk9N77RIzh/0e3T1wHTSvwwOxWXw0avBr25B
         nDHI5YzO+Gc8qISmta0GA3BObUVN5gYJhS7aVK8Rvpf0DQ5/o6ughM3xkrpu+2NErz+D
         b0Tg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728057885; x=1728662685;
        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=hqQSvaZsrgtTFm5v43v0hmc6KczEuWu7/bK2WOCfUo0=;
        b=lig567CISkjJunnuke3GtGFctGKwh4XmAuJEK/Yh7R1CNS0uF+o+3s+B7oXE8SshK8
         GnkIt9foHRR+Nkb/l8uq5KrLJc6AvVuwZpUXgHcS+1zX6PWfzKHyu83hAkcKJiOewm7P
         kVg1WY6PjoWGj1pS2Vsc6EpAPsfMYpkeoWYFrxq3ZAsUsV9oL855bDcWSRoJMXLlaPaI
         b+OnF9YBAzwYJE5LTGPa4Ng6F3P3bySXzohM+QDlNRG77lhDRkr6tJ0FpMDm4fQh3R36
         OB5dhDm4GMfFcsm+3yBFCxa8SwD976OC5Y3FLM6cu3d0pCwX1Bx7qV8RWgh2mXtWzFEH
         iHRg==
X-Gm-Message-State: AOJu0YwUofxRSPhO59cgIpZVSGxyw4dlZ0OXAuOPgyzLO9drIU7wYDlh
	46Oew8WfOYJOvmk0iIIn0bGe17Kwa03qbaNZqVLsUBV5sRf0BDNUD2mF3w==
X-Google-Smtp-Source: AGHT+IHefne6h1GsX+idSo9x5A6CdmGL7HYn68bBluDq/B1wb/yLqFOA130XumpBdREIy8OrwPvoXg==
X-Received: by 2002:a17:907:6d1b:b0:a90:34bf:844 with SMTP id a640c23a62f3a-a991c00f5e6mr321805766b.59.1728057884661;
        Fri, 04 Oct 2024 09:04:44 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 3/3] xen/riscv: register Xen's load address as a boot module
Date: Fri,  4 Oct 2024 18:04:37 +0200
Message-ID: <1850d637a9588a1b00bf07cf0e443486f3895938.1728057657.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728057657.git.oleksii.kurochko@gmail.com>
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Avoid using BOOTMOD_XEN region for other purposes or boot modules
which could result in memory corruption or undefined behaviour.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V2:
 - Drop local variable xen_bootmodule as it won't be used after initialization.
 - Drop unnecessary cast for the 3rd argument of add_boot_module() call in
   start_xen().
 - Change BUG_ON(!xen_bootmodule) to panic().
---
 xen/arch/riscv/setup.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 6d156c3a40..f531ca38ee 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <xen/bug.h>
+#include <xen/bootfdt.h>
 #include <xen/compile.h>
 #include <xen/device_tree.h>
 #include <xen/init.h>
@@ -44,6 +45,11 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
               "Please check your bootloader.\n",
               dtb_addr, BOOT_FDT_VIRT_SIZE);
 
+    /* Register Xen's load address as a boot module. */
+    if ( !add_boot_module(BOOTMOD_XEN, virt_to_maddr(_start),
+                          _end - _start, false) )
+        panic("Failed to add BOOTMOD_XEN\n");
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 16:04:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 16:04:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810516.1223204 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swknN-0005dM-Re; Fri, 04 Oct 2024 16:04:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810516.1223204; Fri, 04 Oct 2024 16:04: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 1swknN-0005cZ-NH; Fri, 04 Oct 2024 16:04:45 +0000
Received: by outflank-mailman (input) for mailman id 810516;
 Fri, 04 Oct 2024 16:04: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=jgwL=RA=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1swknM-0005bD-V2
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 16:04:44 +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 5e7a90fc-826a-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 18:04:43 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a8d6d0fe021so375249366b.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 09:04:43 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5c3c8fsm10040166b.3.2024.10.04.09.04.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 09:04:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e7a90fc-826a-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728057883; x=1728662683; 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=cdM3rVoapplxeHku40PfEDhlvEAoP8or8VBCiItUFOc=;
        b=CkyNdKzM/VnFOel8c/5b6ET+cs1sOeb4SFdTj6a1zDZkSbSZzZrcSqFzzdTtd8H7uL
         1d/JIhwDZKN82LogP0kXuwZR8Q4jijkKtbDrB7+hOVLm8AsTBwce5pWCcGNRI5osW5zl
         FTNOvk3aLAdgZNUcqze/tti8O4df7C3Nk112Cni3EUBQwpHenkblB546zGZjIWv/7mLE
         +ZCjco1ZJ5loDaHx+Zrgp04AfNpfzQYyR/5s+RiwjHb68Tw8C2Z4/ZeO2bPgwR0Fxuf/
         tZ4EFLJ7XZ/Ci0vrZYoFo9K6mvQcfEcdjtybM1EdvQ77FivRWH73KC62MZJ1a41EA6kF
         C8VA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728057883; x=1728662683;
        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=cdM3rVoapplxeHku40PfEDhlvEAoP8or8VBCiItUFOc=;
        b=OmUNwvkaP9ysCua4oDWDU+Uj24ViCsPvU0MCzu9tTLiY3SnM2egHGOh3T9zQ3I+NsX
         BxpFM2kdYsUuLk7y4slBM+CNmGAu4laU2evyn/OcNJr8e3HymOnIannwd9BIGo+dOuVm
         MSGppURtm0fG4LoCnUNhXu4vjSm7Hxa9CJ1ePCKzdX10hYSpjUNouh3hC8mcyjzAZnio
         SvihTkYYA3PWSIedi7B6Z7+8KJs+ojObvShwCfSPL1YSJmjlQu49gq7imWlTl288dBi1
         31aBGBarVVQ6uU2scPQKYfW5H9jv7FzDozkhLOnUqxDVsUnBmnC4jzKqiaJ2u9cnlqjR
         k1Yw==
X-Gm-Message-State: AOJu0YwrZUt9jtm7HMoiVW04c9REiJWdA/Vfzcx2g4rBEWaiNKg5oBbO
	bR9O01tISMQ8vrywqPzpc+fzEhtUNRvl3o1uVemh8eD0ylDe7MyuEDy9HA==
X-Google-Smtp-Source: AGHT+IE++eGydoiKYdy+iIjJIslZ+fal52kCcQO0wvQi82zmiSnq0kh3OJ0mvrKPWReqFBzFK7D02A==
X-Received: by 2002:a17:906:6a20:b0:a8d:51a7:d5e8 with SMTP id a640c23a62f3a-a991bd09b15mr370159466b.15.1728057882579;
        Fri, 04 Oct 2024 09:04:42 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 1/3] xen/riscv: implement virt_to_maddr()
Date: Fri,  4 Oct 2024 18:04:35 +0200
Message-ID: <25a0fa030db90c929379a799aa5e03bed0197665.1728057657.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728057657.git.oleksii.kurochko@gmail.com>
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Implement the virt_to_maddr() function to convert virtual addresses
to machine addresses, including checks for address ranges such as
the direct mapping area (DIRECTMAP_VIRT_START) and the Xen virtual
address space. To implement this, the phys_offset variable is made
accessible outside of riscv/mm.c.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V2:
  - Drop casts in virt_to_maddr() for ASSERT which checks that VA is
    in the range of where Xen is located.
  - Add UL suffix for or XEN_VIRT_START by using _AC(..., UL) and add inclusion
    of <xen/const.h>
  - Add the comment above return which explains why there is no need
    to do " - XEN_VIRT_START.
---
 xen/arch/riscv/include/asm/config.h |  4 ++++
 xen/arch/riscv/include/asm/mm.h     | 17 ++++++++++++++++-
 xen/arch/riscv/mm.c                 |  2 +-
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index 7dbb235685..8884aeab16 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -155,6 +155,10 @@
 
 #define IDENT_AREA_SIZE 64
 
+#ifndef __ASSEMBLY__
+extern unsigned long phys_offset;
+#endif
+
 #endif /* __RISCV_CONFIG_H__ */
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index 4b7b00b850..0f7879d685 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -5,6 +5,7 @@
 
 #include <public/xen.h>
 #include <xen/bug.h>
+#include <xen/const.h>
 #include <xen/mm-frame.h>
 #include <xen/pdx.h>
 #include <xen/types.h>
@@ -28,7 +29,21 @@ static inline void *maddr_to_virt(paddr_t ma)
     return NULL;
 }
 
-#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
+static inline unsigned long virt_to_maddr(unsigned long va)
+{
+    ASSERT(va >= (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE));
+    if ((va >= DIRECTMAP_VIRT_START) &&
+        (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
+        return directmapoff_to_maddr(va - DIRECTMAP_VIRT_START);
+
+    BUILD_BUG_ON(XEN_VIRT_SIZE != MB(2));
+    ASSERT((va >> (PAGETABLE_ORDER + PAGE_SHIFT)) ==
+           (_AC(XEN_VIRT_START, UL) >> (PAGETABLE_ORDER + PAGE_SHIFT)));
+
+    /* phys_offset = load_start - XEN_VIRT_START */
+    return phys_offset + va;
+}
+#define virt_to_maddr(va) virt_to_maddr((unsigned long)(va))
 
 /* Convert between Xen-heap virtual addresses and machine frame numbers. */
 #define __virt_to_mfn(va)  mfn_x(maddr_to_mfn(virt_to_maddr(va)))
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 4a628aef83..7a1919e07e 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -26,7 +26,7 @@ struct mmu_desc {
     pte_t *pgtbl_base;
 };
 
-static unsigned long __ro_after_init phys_offset;
+unsigned long __ro_after_init phys_offset;
 
 #define LOAD_TO_LINK(addr) ((unsigned long)(addr) - phys_offset)
 #define LINK_TO_LOAD(addr) ((unsigned long)(addr) + phys_offset)
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 16:04:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 16:04:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810515.1223198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swknN-0005bV-Jg; Fri, 04 Oct 2024 16:04:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810515.1223198; Fri, 04 Oct 2024 16:04: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 1swknN-0005bO-Gt; Fri, 04 Oct 2024 16:04:45 +0000
Received: by outflank-mailman (input) for mailman id 810515;
 Fri, 04 Oct 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=jgwL=RA=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1swknM-0005bC-M5
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 16:04:44 +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 5e0deeac-826a-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 18:04:42 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a8d0d0aea3cso301671466b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 09:04:42 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5c3c8fsm10040166b.3.2024.10.04.09.04.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 09:04:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e0deeac-826a-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728057882; x=1728662682; 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=yGXhc0yICj2K+QEEiwngvwgzC9xM8NG/E1TGVjkBmus=;
        b=TI3dK0o6ssG2Ijpx2L337hRBC4nea8fGHml48N1fJqcCuJkO0+nqfoBN/mmJw1HE+d
         L4IkFb7BSMpQHrP0fAueU4d8OHI+Rd8aAYiO2I6/W09fyIRjsOIYaEpbHVyFp5coeRj5
         L97DaQDTN5YvjRrg7ZcB2yjoy6yeVtL5VQvQCdZ4ijnFEsIQl3tF1SStzvrEetc4PtL5
         YfXnQKV+3IiIHtjVgUDuTyMPANHaj9NRVx0mzNtityXE7RRVjpe3ZVnEHbFu678M/mVJ
         EZIRqN25iUJ/BTNHztqe7/TtQOUW+zdn/5UCg60iFpQEwOl8Y2xzwlMrzaJBcyGYaDcg
         XqZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728057882; x=1728662682;
        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=yGXhc0yICj2K+QEEiwngvwgzC9xM8NG/E1TGVjkBmus=;
        b=ObaCYSpzB3BZAD3yv1Zb/DVQofZmHADO6abOiRR0dgAi7wOIme7WDYryzqyiXx9FeA
         jtKgR6aIcZNBGZk2PmfOSaNYeoeBETsVGtmQZtuk3nHHR5xky5LTxlpeGVHjh/n8VZ6Y
         BvCkrI+6Jq+KZGLEXcL4RT4xTRTRTsDT+T+p0LD5t10NUjok9SVbmbSWPKJHS+zNnQeg
         w0CGfb08xzR4lScRAMKXtE9CrL+D22sN/SIC2MzZFXoD9AD2nGZf0wDaQEOnzOHJ6RV5
         1tVS19wLHxdKDTK0NtevY9ZvgZ17LXvozz9+Q/7gJwmJJQpTg9C2KcfVm5Q6okSCg63V
         VUVA==
X-Gm-Message-State: AOJu0YwiY4NYRd2h9MJlwFslU4vgrPO5ooTbMHyXoEZwgJfRaz1zKXiB
	gJX03I9tLLo/K8zFCPtUnKZlh+HUHyjkVsioRG2jUMIdvrE4vn52PE8tjQ==
X-Google-Smtp-Source: AGHT+IE7HSO6d0uXf2nrKReQy+nuyaUF/Ts9WrSMU6/kNrBrGkHabLyqXuQ5/Erdmpgnfc2DL55iKg==
X-Received: by 2002:a17:907:3f86:b0:a8a:6c5d:63b2 with SMTP id a640c23a62f3a-a991bd09b0amr291003766b.18.1728057881731;
        Fri, 04 Oct 2024 09:04:41 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 0/3]  Register Xen's load address as a boot module
Date: Fri,  4 Oct 2024 18:04:34 +0200
Message-ID: <cover.1728057657.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This patch series registers Xen's load address as a boot module and
introduce virt_to_maddr(), and drops LINK_TO_LOAD() to use virt_to_maddr()
instead.

---
Changes in V2:
 - Update the commit message ( drop depency from "device tree mapping" patch
   series as it was merged to staging )
 - Other changes please look at the specific patch.
---

Oleksii Kurochko (3):
  xen/riscv: implement virt_to_maddr()
  xen/riscv: switch LINK_TO_LOAD() to virt_to_maddr()
  xen/riscv: register Xen's load address as a boot module

 xen/arch/riscv/include/asm/config.h |  4 ++++
 xen/arch/riscv/include/asm/mm.h     | 17 ++++++++++++++++-
 xen/arch/riscv/mm.c                 |  9 ++++-----
 xen/arch/riscv/setup.c              |  6 ++++++
 4 files changed, 30 insertions(+), 6 deletions(-)

-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 16:04:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 16:04:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810517.1223219 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swknP-00064v-6W; Fri, 04 Oct 2024 16:04:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810517.1223219; Fri, 04 Oct 2024 16: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 1swknP-00064m-3C; Fri, 04 Oct 2024 16:04:47 +0000
Received: by outflank-mailman (input) for mailman id 810517;
 Fri, 04 Oct 2024 16:04: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=jgwL=RA=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1swknN-0005bD-Jv
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 16:04:45 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5f5b55db-826a-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 18:04:45 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539885dd4bcso2991682e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 09:04:45 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5c3c8fsm10040166b.3.2024.10.04.09.04.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 09:04:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f5b55db-826a-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728057884; x=1728662684; 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=PNPxOIY4h0Xr4dDH/MECo/twrNAXBQx9HmZ4eZ49N1w=;
        b=K4xk+CBuhVNyin9qLX+ODBxx9nU5QvFZfgFv9lvbnOfhA6mJ0doGxqyUBHHExnxTfl
         KWdJmEYYub1iIchbwXJfj9nQZtv/gNFtb+XgpWqanPL9tQV5KQZAfFMzxFEVWl8fK6l0
         Kq68dqtY/VfYcqzrb4UveVs4tBTR/sjpa2jHnh29bQua1vkGzEufDNQOGixjI/VxYK8G
         tCL6KK7pL7tNVxHX1+5d4iypHXhlKVG/hyz27ApshYcZuJdhX5dWRP7BJrzEbM0yByib
         ZYuapatLEyBnljyD1HH4Ox0k3yVhpaNGnfZyspQFPz5cdNEKjvi55E+0+2IjUJosE1dA
         qKrA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728057884; x=1728662684;
        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=PNPxOIY4h0Xr4dDH/MECo/twrNAXBQx9HmZ4eZ49N1w=;
        b=FJna36Dsq6QQIFYF/Ynbzu0ClNhWtLVgV+qoeDZEAKY8pcMReq1fVY+pVw8xHWkoPh
         cThHb9NK2Sj0KBU55p1bQh/Q2exTiI+tD37U1/oa6CQ0CV8/SnhRmgHtqXNWJwln6Q3Q
         wTQUIshzDLAXGH/g8N2sy5Oee+Wryf0bDABmSXMcztyFjr+/sm0AKLM9KGwi2noBYaRC
         +Oz6Wb/fmKrkiPwT2LcG17UrvGPAyknR0JtCJgygjzGgHso8aqMZw80aQndHCm+1+K1v
         7mvFMPfuSsQVNube1vNKjPcQXS90vxmX90jqbYnscbKz0n1tjGglRSRquI4AG8GRZhqP
         hxaw==
X-Gm-Message-State: AOJu0YwdL4KRJ2zUBqalcGKTpZauLy6rDzV6+g6cLbn6rgjJT0woVCJN
	1jdxP+qHHfQhySlXMS5a8TSpgc4/T2tyXtepZd+lHQnGgJVvBII6Ke1vcw==
X-Google-Smtp-Source: AGHT+IFb8XLqbFe/0HgfThze9Wu/Na4Pi9HON1if44VGoiU2ytzxPH/cbOZxnrpsJQVugHA2vqZfDw==
X-Received: by 2002:a05:6512:b2a:b0:536:553f:3eec with SMTP id 2adb3069b0e04-539ab85bfb8mr2240608e87.5.1728057883730;
        Fri, 04 Oct 2024 09:04:43 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 2/3] xen/riscv: switch LINK_TO_LOAD() to virt_to_maddr()
Date: Fri,  4 Oct 2024 18:04:36 +0200
Message-ID: <5975a3a2d5d499244825e88cac3f9b6b4e9ddadb.1728057657.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728057657.git.oleksii.kurochko@gmail.com>
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Use virt_to_maddr() instead of LINK_TO_LOAD as virt_to_maddr()
covers all the cases where LINK_TO_LOAD() is used.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V2:
 - Drop the cast of virt_to_maddr() argument in remove_identity_mapping() as
   this cast is done inside virtu_to_maddr() wrapper macros.
 - Update the commit message ( rewording to be more clear )
---
 xen/arch/riscv/mm.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 7a1919e07e..b5a5535812 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -29,7 +29,6 @@ struct mmu_desc {
 unsigned long __ro_after_init phys_offset;
 
 #define LOAD_TO_LINK(addr) ((unsigned long)(addr) - phys_offset)
-#define LINK_TO_LOAD(addr) ((unsigned long)(addr) + phys_offset)
 
 /*
  * It is expected that Xen won't be more then 2 MB.
@@ -122,7 +121,7 @@ static void __init setup_initial_mapping(struct mmu_desc *mmu_desc,
                 unsigned long paddr = (page_addr - map_start) + pa_start;
                 unsigned int permissions = PTE_LEAF_DEFAULT;
                 unsigned long addr = is_identity_mapping
-                                     ? page_addr : LINK_TO_LOAD(page_addr);
+                                     ? page_addr : virt_to_maddr(page_addr);
                 pte_t pte_to_be_written;
 
                 index = pt_index(0, page_addr);
@@ -225,7 +224,7 @@ void __init setup_fixmap_mappings(void)
 
     BUG_ON(pte_is_valid(*pte));
 
-    tmp = paddr_to_pte(LINK_TO_LOAD((unsigned long)&xen_fixmap), PTE_TABLE);
+    tmp = paddr_to_pte(virt_to_maddr(&xen_fixmap), PTE_TABLE);
     write_pte(pte, tmp);
 
     RISCV_FENCE(rw, rw);
@@ -312,7 +311,7 @@ void __init remove_identity_mapping(void)
     pte_t *pgtbl;
     unsigned int index, xen_index;
     unsigned long ident_start =
-        LINK_TO_LOAD(turn_on_mmu) & XEN_PT_LEVEL_MAP_MASK(0);
+        virt_to_maddr(turn_on_mmu) & XEN_PT_LEVEL_MAP_MASK(0);
 
     for ( pgtbl = stage1_pgtbl_root, i = CONFIG_PAGING_LEVELS; i; i-- )
     {
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 16:08:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 16:08:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810535.1223239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swkqX-0008Gu-SN; Fri, 04 Oct 2024 16:08:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810535.1223239; Fri, 04 Oct 2024 16:08: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 1swkqX-0008Gn-Pd; Fri, 04 Oct 2024 16:08:01 +0000
Received: by outflank-mailman (input) for mailman id 810535;
 Fri, 04 Oct 2024 16:08: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=Ey+f=RA=linaro.org=peter.maydell@srs-se1.protection.inumbo.net>)
 id 1swkqX-0008Gh-0C
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 16:08:01 +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 d2e6a853-826a-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 18:07:58 +0200 (CEST)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2fad0f66d49so36775091fa.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 09:07:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2e6a853-826a-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1728058078; x=1728662878; 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=wYjyGMnIxNup7gKRsx4s2998ILa01TuDEJqD/qsxzYE=;
        b=AS/2bpUJPcWUTGA+gPIhSk6OxsJQkizc8Q6tKMYaoRTfGCefB7W4JBDgUwun7Of1uI
         EdWKvjxCHGovQeYK9gPumqaHb08pJtQ6ySH4OVhssDZ6LT/MafW34rj4G6cuB3FuZ9lR
         Gx+7N1zA1kC7WuEv9rRoU/yg3zBXzqPfHOrRQTbQRtUuC0FxMtOLZBZt1ezfmPPSGD3x
         4HVOX3DVFSjTDDJQoFMykocpoCsO8W+tkJ6iUCBf0ZwPiuiEDvYFwqbz0JyRJl404oY/
         hwEwwyYscLLeNIglccSyHSx4+fnmel74+uhG7AvDmFVD6IGt1JxF1F+i1tnI/YFtDuqe
         8F+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728058078; x=1728662878;
        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=wYjyGMnIxNup7gKRsx4s2998ILa01TuDEJqD/qsxzYE=;
        b=drJHif2NgF2KhXNS8zn4VGtTVHvY7fhWFq6R4T+48XgGIU3ICQR+Euz73RKdDRBQlt
         nmofJC++iDmk5jLoNBGPPgYAes1iyrozeNhgtj36l6wZB5Lme2vEEpMSadq2/z+5zKV2
         uMukKhe2yD1X6NeHkGbrSzk65Vbuedn3L38vV5KDxUwCgc7DRrAVdk89Ecm21R2aOv9s
         ONMAYjskbh+buLUv5IEs6y4vxefH7J80M9ht3Py0uPfTfCpkJPZGisM06v1Oi0LSlk7P
         KXX5mBnuGQ88WqQQ3x5stfuq+tQO6GIaFtMAkdeX8UeuWzO5IyuuQmPj2T3oGyX0SBol
         EN3Q==
X-Forwarded-Encrypted: i=1; AJvYcCXwfcogO3rIXGSxM0H40H0YU+OcY4aV+CiEiySZcPGc8FmSkW+wFNVSPDk+GgVV3LzcVkVYtZZhRM8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwUhAuirADCDfEOM2CSzcXIx2FEf8mH3Scw5loa8W9ATn5XCLX1
	MqXDZXrjGtf66dtwtdaJajzrDql4chl8FK7vMSNnw9l+aXD4DPvirZsP1AI71ILETgmpyhGcKew
	mnRRNj4H359wVrvI3rP+ACtX57DfHs3XwPFfMjg==
X-Google-Smtp-Source: AGHT+IFQSSW1Qqbr+FutV4pww9x20cyMzPY/mKFV/3n2pOfi9CeNC1DV7dZFCXWo5Sf/N16k3K/dc3naDSjqLmf9IPE=
X-Received: by 2002:a2e:9e18:0:b0:2f3:f7cf:2f01 with SMTP id
 38308e7fff4ca-2faf3d71ab3mr13946611fa.41.1728058078036; Fri, 04 Oct 2024
 09:07:58 -0700 (PDT)
MIME-Version: 1.0
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
In-Reply-To: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
From: Peter Maydell <peter.maydell@linaro.org>
Date: Fri, 4 Oct 2024 17:07:47 +0100
Message-ID: <CAFEAcA_NuLpau9KdKFGxa9yCMdgB9LSEB-3WVBAb=2aFwU2PxQ@mail.gmail.com>
Subject: Re: [PULL v2 0/5] Xen Queue
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: qemu-devel@nongnu.org, sstabellini@kernel.org, anthony@xenproject.org, 
	paul@xen.org, edgar.iglesias@amd.com, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

On Thu, 3 Oct 2024 at 19:57, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
>
> From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
>
> The following changes since commit 423be09ab9492735924e73a2d36069784441ebc6:
>
>   Merge tag 'warn-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging (2024-10-03 10:32:54 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/edgar.iglesias/qemu.git tags/edgar/xen-queue-2024-10-03-v2.for-upstream
>
> for you to fetch changes up to ca9275a4b11aced3074219d1712e29fce5036f72:
>
>   hw/arm: xenpvh: Enable PCI for ARM PVH (2024-10-03 19:37:35 +0200)
>
> ----------------------------------------------------------------
> Edgars Xen Queue.
>
> ----------------------------------------------------------------
>
> ChangeLog:
>
> v1 -> v2:
> * Removed left over trace call
>
> ----------------------------------------------------------------
>
> Dr. David Alan Gilbert (1):
>       hw/xen: Remove deadcode
>
> Edgar E. Iglesias (4):
>       hw/xen: Expose handle_bufioreq in xen_register_ioreq
>       hw/xen: xenpvh: Disable buffered IOREQs for ARM
>       hw/xen: xenpvh: Add pci-intx-irq-base property
>       hw/arm: xenpvh: Enable PCI for ARM PVH
>

Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/9.2
for any user-visible changes.

-- PMM


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 16:16:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 16:16:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810544.1223249 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swkyF-0001MQ-KC; Fri, 04 Oct 2024 16:15:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810544.1223249; Fri, 04 Oct 2024 16:15: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 1swkyF-0001MJ-HX; Fri, 04 Oct 2024 16:15:59 +0000
Received: by outflank-mailman (input) for mailman id 810544;
 Fri, 04 Oct 2024 16:15: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=YrJ5=RA=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1swkyE-0001MD-Hl
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 16:15:58 +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 ef69000a-826b-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 18:15:56 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a93b2070e0cso259212166b.3
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 09:15:56 -0700 (PDT)
Received: from localhost ([52.174.59.202]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5d007esm11306066b.29.2024.10.04.09.15.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 09:15:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ef69000a-826b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728058556; x=1728663356; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=VAl9116LxFC80Ti/IoeSQvi6I8jDd8Que48ATtHZVbY=;
        b=NtEPs3mtuWRfHxAskv+xz8i4EbEM+/gIqWzIC6WyUTzrLz9xSWe74P5o0Qd/kxvrLR
         5F7LoQRTaQckLhoA3XxNhobya803E6YJvyAjxMkANnJUwZ2pOQ4lK1OIpxsT1buvF9z9
         B4Id/4KUXWDq9ktVVCShxVdsHP5WA5oH2268k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728058556; x=1728663356;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=VAl9116LxFC80Ti/IoeSQvi6I8jDd8Que48ATtHZVbY=;
        b=RrcHL9+VvZx6gAEIJoJ/AigL6sLit6ojTXYYclzdVDDXePVhaeFSoLhJG6OWNDvKZg
         eAvKcGAnY3mkm076vkzqCcg5G4p36a/Yyawe0Af53zLLgwqYVq1hLIq6e2roDs9ayBTa
         XYqigieCPIne9c2aCuEexvJhwpmKHMlNxrH7DMKJJRhMaQu9tIvFlUJHfLhAn9oZkZjr
         1qEES+dMad3c59e7XwWm+eZbw3sCH0nuEFJDB7kbupB0cCa4AUzIaYUUifrq3zB62uzr
         bH7jtEZpLa5S6L+j5E7u4cF8nY4O73YsNpNO1GPtP0Lop3+FpqPMNVdilrK3iCcnmp9l
         RZqw==
X-Forwarded-Encrypted: i=1; AJvYcCUE7KUQrygsrW1v+h6AiuHBIE2oWA09NA2OFn8CKZDNUnYXx3xfPNX7de/LsonJEtvDHMKWRPJHVKU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzKGKS0OThV7QPIvlvKgYcU7gw/w2MEsuevimaAuNyVks+VqQ0D
	cjV/aF4oSqAinsKvhfuz8HB1CNoiNf+U1KvbsjHR5zZgaCWluoDKTB6PU8jJWwM=
X-Google-Smtp-Source: AGHT+IEoR98S0lYUoSBKbGdpVkuzlm0VuEL6xojnHg1IkEj/d/4g8bLIx89MII/Eb5gbjXeezEVY+g==
X-Received: by 2002:a17:907:d851:b0:a8a:7bed:d327 with SMTP id a640c23a62f3a-a991bd734e8mr258102166b.36.1728058555600;
        Fri, 04 Oct 2024 09:15:55 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Fri, 04 Oct 2024 17:15:54 +0100
Message-Id: <D4N5MSL7BD8A.1EGEU8W875PFN@cloud.com>
Cc: "Jan Beulich" <jbeulich@suse.com>, =?utf-8?q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Subject: Re: [PATCH v3 1/2] x86/fpu: Combine fpu_ctxt and xsave_area in
 arch_vcpu
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20240813142119.29012-1-alejandro.vallejo@cloud.com>
 <20240813142119.29012-2-alejandro.vallejo@cloud.com>
 <2b42323a-961a-4dd8-8cde-f4b19eac0dc5@citrix.com>
In-Reply-To: <2b42323a-961a-4dd8-8cde-f4b19eac0dc5@citrix.com>

Hi,

On Thu Oct 3, 2024 at 8:38 PM BST, Andrew Cooper wrote:
> On 13/08/2024 3:21 pm, Alejandro Vallejo wrote:
> > @@ -299,44 +299,14 @@ void save_fpu_enable(void)
> >  /* Initialize FPU's context save area */
> >  int vcpu_init_fpu(struct vcpu *v)
> >  {
> > -    int rc;
> > -
> >      v->arch.fully_eager_fpu =3D opt_eager_fpu;
> > -
> > -    if ( (rc =3D xstate_alloc_save_area(v)) !=3D 0 )
> > -        return rc;
> > -
> > -    if ( v->arch.xsave_area )
> > -        v->arch.fpu_ctxt =3D &v->arch.xsave_area->fpu_sse;
> > -    else
> > -    {
> > -        BUILD_BUG_ON(__alignof(v->arch.xsave_area->fpu_sse) < 16);
> > -        v->arch.fpu_ctxt =3D _xzalloc(sizeof(v->arch.xsave_area->fpu_s=
se),
> > -                                    __alignof(v->arch.xsave_area->fpu_=
sse));
> > -        if ( v->arch.fpu_ctxt )
> > -        {
> > -            fpusse_t *fpu_sse =3D v->arch.fpu_ctxt;
> > -
> > -            fpu_sse->fcw =3D FCW_DEFAULT;
> > -            fpu_sse->mxcsr =3D MXCSR_DEFAULT;
> > -        }
> > -        else
> > -            rc =3D -ENOMEM;
>
> This looks wonky.=C2=A0 It's not, because xstate_alloc_save_area() contai=
ns
> the same logic for setting up FCW/MXCSR.
>
> It would be helpful to note this in the commit message.=C2=A0 Something a=
bout
> deduplicating the setup alongside deduplicating the pointer.
>

Sure

> > diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/a=
sm/domain.h
> > index bca3258d69ac..3da60af2a44a 100644
> > --- a/xen/arch/x86/include/asm/domain.h
> > +++ b/xen/arch/x86/include/asm/domain.h
> > @@ -592,11 +592,11 @@ struct pv_vcpu
> >  struct arch_vcpu
> >  {
> >      /*
> > -     * guest context (mirroring struct vcpu_guest_context) common
> > -     * between pv and hvm guests
> > +     * Guest context common between PV and HVM guests. Includes genera=
l purpose
> > +     * registers, segment registers and other parts of the exception f=
rame.
> > +     *
> > +     * It doesn't contain FPU state, as that lives in xsave_area inste=
ad.
> >       */
>
> This new comment isn't really correct either.=C2=A0 arch_vcpu contains th=
e
> PV/HVM union, so it not only things which are common between the two.

It's about cpu_user_regs though, not arch_vcpu?

>
> I'd either leave it alone, or delete it entirely.=C2=A0 It doesn't serve =
much
> purpose IMO, and it is going to bitrot very quickly (FRED alone will
> change two of the state groups you mention).
>

I'm happy getting rid of it because it's actively confusing in its current
form. That said, I can't possibly believe there's not a single simple
description of cpu_user_regs that everyone can agree on.

> > -
> > -    void              *fpu_ctxt;
> >      struct cpu_user_regs user_regs;
> > =20
> >      /* Debug registers. */
> > diff --git a/xen/arch/x86/x86_emulate/blk.c b/xen/arch/x86/x86_emulate/=
blk.c
> > index e790f4f90056..28b54f26fe29 100644
> > --- a/xen/arch/x86/x86_emulate/blk.c
> > +++ b/xen/arch/x86/x86_emulate/blk.c
> > @@ -11,7 +11,8 @@
> >      !defined(X86EMUL_NO_SIMD)
> >  # ifdef __XEN__
> >  #  include <asm/xstate.h>
> > -#  define FXSAVE_AREA current->arch.fpu_ctxt
> > +#  define FXSAVE_AREA ((struct x86_fxsr *) \
> > +                           (void *)&current->arch.xsave_area->fpu_sse)
>
> This isn't a like-for-like replacement.
>
> Previously FXSAVE_AREA's type was void *.=C2=A0 I'd leave the expression =
as just
>
> =C2=A0=C2=A0=C2=A0 (void *)&current->arch.xsave_area->fpu_sse
>
> because struct x86_fxsr is not the only type needing to be used here in
> due course.=C2=A0=C2=A0 (There are 8 variations of data layout for older
> instructions.)
>

Sure

> >  # else
> >  #  define FXSAVE_AREA get_fpu_save_area()
> >  # endif
> > diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
> > index 5c4144d55e89..850ee31bd18c 100644
> > --- a/xen/arch/x86/xstate.c
> > +++ b/xen/arch/x86/xstate.c
> > @@ -507,9 +507,16 @@ int xstate_alloc_save_area(struct vcpu *v)
> >      unsigned int size;
> > =20
> >      if ( !cpu_has_xsave )
> > -        return 0;
> > -
> > -    if ( !is_idle_vcpu(v) || !cpu_has_xsavec )
> > +    {
> > +        /*
> > +         * This is bigger than FXSAVE_SIZE by 64 bytes, but it helps t=
reating
> > +         * the FPU state uniformly as an XSAVE buffer even if XSAVE is=
 not
> > +         * available in the host. Note the alignment restriction of th=
e XSAVE
> > +         * area are stricter than those of the FXSAVE area.
> > +         */
>
> Can I suggest the following?
>
> "On non-XSAVE systems, we allocate an XSTATE buffer for simplicity.=C2=A0
> XSTATE is backwards compatible to FXSAVE, and only one cacheline larger."
>
> It's rather more concise.
>
> ~Andrew

Sure.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 16:24:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 16:24:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810549.1223259 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swl66-0003RU-DA; Fri, 04 Oct 2024 16:24:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810549.1223259; Fri, 04 Oct 2024 16:24: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 1swl66-0003RN-9g; Fri, 04 Oct 2024 16:24:06 +0000
Received: by outflank-mailman (input) for mailman id 810549;
 Fri, 04 Oct 2024 16:24: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 1swl64-0003RH-Ny
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 16:24: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 1swl63-0000FY-MG; Fri, 04 Oct 2024 16:24:03 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.0.211])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1swl63-0007gt-G5; Fri, 04 Oct 2024 16:24: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=Fv7Q7ZScwG3I+6rJMqComt+3CkPefeDVDEgLEYi5kk8=; b=pXpx/Z0/T2sjA1TR+Nu4XCXWMq
	BPWItIQDMt9dnf/2XGr74oUo3h2eMrqD4G3L2vqMPp2DBgg1zbFi5hOf5KRsfO3LCkzuqcX7ruaY6
	qO5ujRxuViL8PwffxNbpP/FVrAs7dOPh17jUae7JFaUv2P7d6N+G/YGbbKq8yRgHZaN0=;
Message-ID: <a24807bd-5224-4110-bc0e-946287f5c90e@xen.org>
Date: Fri, 4 Oct 2024 17:24:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/8] xen/arm: platforms: Add NXP S32CC platform code
Content-Language: en-GB
To: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-6-andrei.cherechesu@oss.nxp.com>
 <94dc1668-5215-424c-9dcb-1e343451d464@xen.org>
 <b8419295-cc63-41b3-9f2d-277d81e5f85a@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <b8419295-cc63-41b3-9f2d-277d81e5f85a@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 04/10/2024 16:37, Andrei Cherechesu wrote:
> Hi Julien, Stefano,

Hi Andrei,

> 
> On 01/10/2024 13:01, Julien Grall wrote:
>> Hi Andrei,
>>
>> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>>> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>>
>>> Add code for NXP S32CC platforms (S32G2, S32G3, S32R45).
>>>
>>> S32CC platforms use the NXP LINFlexD UART driver for
>>> console by default, and rely on Dom0 having access to
>>> SCMI services for system-level resources from firmware
>>> at EL3.
>>>
>>> Platform-related quirks will be addressed in following
>>> commits.
>>
>> I don't see any specific quirks in the series. Are you intended to send follow-up?
>>
>> [...]
> 
> Well, we could use an opinion on some SoC erratum implementation
> and if it would be acceptable for you or not, from any of
> the ARM maintainers.
> 
> The erratum is about some TLB Invalidate (tlbi) instruction
> variants (by Virtual Address) which are handled incorrectly
> in some cases (for some VAs), and that need to be replaced
> with broader versions.

Can you provide more details:
   1. Is this a processor issue?
   2. Which VAs are affected?
   3. What is the impact if the erratum is hit?
   3. Do we need to do anything on the behalf of the guests?

> It doesn't apply for all S32CC platforms, but we can use the
> Host DT compatible to identify this. My idea is that we define
> a platform quirk for this and check for it using
> platform_has_quirk().
 > Then, we either:>      - modify the definition for the affected 
'tlbi' variant
>      in arm64/flushtlb.h to actually execute the broader one
>      if needed
> or:
>      - define a new wrapper for the tlbi variant we want to
>      replace the affected one with
>      - check for this quirk before its usage and call the
>      more potent version if needed (there's only one
>      occurrence of usage for the affected version).
> 
> Number 2 seems better to me, it's more customizable and
> it's similar to the existing handling for
> PLATFORM_QUIRK_GIC_64K_STRIDE for some other Arm platform.

I need a bit more details first (see my questions above). But if there 
are not many VAs affected, then we may be able to re-order the Xen 
memory layout to avoid the VAs. So we wouldn't need any specific change 
in the TLB flush operations.

>>> diff --git a/xen/arch/arm/platforms/Makefile b/xen/arch/arm/platforms/Makefile
>>> index bec6e55d1f..2c304b964d 100644
>>> --- a/xen/arch/arm/platforms/Makefile
>>> +++ b/xen/arch/arm/platforms/Makefile
>>> @@ -10,5 +10,6 @@ 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_S32CC_PLATFORM)  += s32cc.o
>>>    obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp.o
>>>    obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp-eemi.o
>>> diff --git a/xen/arch/arm/platforms/s32cc.c b/xen/arch/arm/platforms/s32cc.c
>>> new file mode 100644
>>> index 0000000000..f99a2d56f6
>>> --- /dev/null
>>> +++ b/xen/arch/arm/platforms/s32cc.c
>>
>> We only add a new platform if there are platform specific hook to implement. AFAICT, you don't implement any, so it should not be necessary.
> 
> Like I mentioned above, there's some erratum workaround which
> could make use of the platform_quirk() callback, that we want
> to send in the near future.

I think it would be best to introduce platforms/s32cc.c at that point.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 17:27:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 17:27:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810570.1223269 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swm5S-0004hx-U3; Fri, 04 Oct 2024 17:27:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810570.1223269; Fri, 04 Oct 2024 17:27: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 1swm5S-0004hq-RF; Fri, 04 Oct 2024 17:27:30 +0000
Received: by outflank-mailman (input) for mailman id 810570;
 Fri, 04 Oct 2024 17:27: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=6kl2=RA=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swm5R-0004hk-NZ
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 17:27:29 +0000
Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com
 [2a00:1450:4864:20::641])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ed2834fc-8275-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 19:27:27 +0200 (CEST)
Received: by mail-ej1-x641.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso459553166b.1
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 10:27:27 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e78757asm19247866b.102.2024.10.04.10.27.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 04 Oct 2024 10:27:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ed2834fc-8275-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728062846; x=1728667646; 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=OMia6fLadbM0+a1izECrJVWuTiZx/3bI6/pE4unjXtg=;
        b=Jmd5Hac2V9THalrJY+/RvRAV3F1d0knGgvCI3n4qrFvrvCX8qyhagsvNzfbki7mLI5
         US3K5o6geN8aDaAq7SxbpBagOMwmw1jOcy2DJCvdJkO9IdOXga83ry5SWfzmKlFSmdle
         rcEISyP0uwmmivbwRmD5sOdqGn8BIqYwFcBX4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728062846; x=1728667646;
        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=OMia6fLadbM0+a1izECrJVWuTiZx/3bI6/pE4unjXtg=;
        b=ajb2USdpzhSz/MTfSLuhEduNfZJdT6AOMlpsa66bJSQEUlFNNKxhhglbhAdBDDpLUM
         XekDbBIY666rg4Y3sW4AqxxemY3bIg6mBcFHsypEY/E70ZL23i8KUtQPb1ZV4osUPFvm
         MUKDyy62uNfRPaRsd5EZ07SHAQI6jg59lBuaHMWbjfGbfN9HFa6u3q6KSnXfW9PZz8fU
         J/xEW8iBm/WtmbprmFT7CDuHS3Z5gxP8FXPONq3gJkOoX+IdmgraNQUp1T8xmJP3iceg
         2UHmGNUyGv6NXQQhgEIdVIoT6En0Rs5fBkYdYTRmopsOrOnpMMkTwltfKzmyelKyxTFq
         MXiQ==
X-Gm-Message-State: AOJu0Yy/HIj21aPCOrssshJJFJYnfMRzvKr+oW0FzO9Dh5u05cDRgmO0
	VaxFQLb8RrXvru/tipcpadtgDiQEdIlxJf3dhLe8sGUpbgB7IRChF6PQytDqFDsOeYpdrpTFUZx
	deelyIw==
X-Google-Smtp-Source: AGHT+IHikqEpKwaHPMeWAfsqi/jUGtTdWiiqZ+Rcuf5fzkVm7JWYpNyvPh22S+h+RaFqEtfoWj2fqQ==
X-Received: by 2002:a17:907:3e94:b0:a8d:41d8:14ad with SMTP id a640c23a62f3a-a990a23cd21mr833226066b.29.1728062846443;
        Fri, 04 Oct 2024 10:27:26 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH] CI: Fix builds following qemu-xen update
Date: Fri,  4 Oct 2024 18:27:23 +0100
Message-Id: <20241004172723.2391026-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

A recent update to qemu-xen has bumped the build requirements, with Python 3.8
being the new baseline but also needing the 'ensurepip' and 'tomllib/tomli'
packages.

 * Ubuntu/Debian package 'ensurepip' separately, but it can be obtained by
   installing the python3-venv package.

 * 'tomllib' was added to the python standard library in Python 3.11, but
   previously it was a separate package named 'tomli'.

In terms of changes required to build QEMU:

 * Ubuntu 24.04 (Noble) has Python 3.12 so only needs python3-venv

 * Ubuntu 22.04 (Jammy) has Python 3.10 but does have a python3-tomli package
   that QEMU is happy with.

 * FreeBSD has Python 3.9, but Python 3.11 is available.

In terms of exclusions:

 * Ubuntu 20.04 (Focal) has Python 3.8, but lacks any kind of tomli package.

 * Fedora 29 (Python 3.7), OpenSUSE Leap 15.6 (Python 3.6), and Ubuntu
   18.04/Bionic (Python 3.6) are now too old.

Detecting tomllib/tomli is more than can fit in build's oneliner, so break it
out into a proper script.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Doug Goldstein <cardoe@cardoe.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

Using local container fixes:
  https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1482180312

FreeBSD (13,14):
  https://cirrus-ci.com/build/5553798175784960

FreeBSD 15 is broken generally again so I can't confirm the fix there.
---
 .cirrus.yml                                   |  3 ++-
 .../build/ubuntu/22.04-x86_64.dockerfile      |  2 ++
 .../build/ubuntu/24.04-x86_64.dockerfile      |  1 +
 automation/scripts/build                      |  4 ++--
 automation/scripts/qemu-deps-check.py         | 19 +++++++++++++++++++
 5 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100755 automation/scripts/qemu-deps-check.py

diff --git a/.cirrus.yml b/.cirrus.yml
index 1c2a6cb8120e..00e4c57678c2 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -7,10 +7,11 @@ freebsd_template: &FREEBSD_TEMPLATE
   install_script: pkg install -y seabios gmake ninja bash
                                  pkgconf python bison perl5
                                  yajl lzo2 pixman argp-standalone
-                                 libxml2 glib git
+                                 libxml2 glib git python311
 
   build_script:
     - cc --version
+    - export PYTHON=/usr/local/bin/python3.11
     - ./configure --with-system-seabios=/usr/local/share/seabios/bios.bin
     - gmake -j`sysctl -n hw.ncpu` clang=y
 
diff --git a/automation/build/ubuntu/22.04-x86_64.dockerfile b/automation/build/ubuntu/22.04-x86_64.dockerfile
index 230903f624d9..6aa3c4d1881d 100644
--- a/automation/build/ubuntu/22.04-x86_64.dockerfile
+++ b/automation/build/ubuntu/22.04-x86_64.dockerfile
@@ -62,6 +62,8 @@ RUN <<EOF
         meson
         ninja-build
         python3-packaging
+        python3-tomli
+        python3-venv
     )
 
     apt-get -y --no-install-recommends install "${DEPS[@]}"
diff --git a/automation/build/ubuntu/24.04-x86_64.dockerfile b/automation/build/ubuntu/24.04-x86_64.dockerfile
index 277f92facfd9..c46d152abf10 100644
--- a/automation/build/ubuntu/24.04-x86_64.dockerfile
+++ b/automation/build/ubuntu/24.04-x86_64.dockerfile
@@ -62,6 +62,7 @@ RUN <<EOF
         meson
         ninja-build
         python3-packaging
+        python3-venv
     )
 
     apt-get -y --no-install-recommends install "${DEPS[@]}"
diff --git a/automation/scripts/build b/automation/scripts/build
index 1879c1db6d0d..34416297a4b7 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -91,9 +91,9 @@ else
         cfgargs+=("--with-extra-qemuu-configure-args=\"--disable-werror\"")
     fi
 
-    # Qemu requires Python 3.5 or later, and ninja
+    # Qemu requires Python 3.8 or later, and ninja
     # and Clang 10 or later
-    if ! type python3 || python3 -c "import sys; res = sys.version_info < (3, 5); exit(not(res))" \
+    if ! type python3 || ! python3 automation/scripts/qemu-deps-check.py \
             || [[ "$cc_is_clang" == y && "$cc_ver" -lt 0x0a0000 ]] \
             || ! type ninja; then
         cfgargs+=("--with-system-qemu=/bin/false")
diff --git a/automation/scripts/qemu-deps-check.py b/automation/scripts/qemu-deps-check.py
new file mode 100755
index 000000000000..f6188afb3e2a
--- /dev/null
+++ b/automation/scripts/qemu-deps-check.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+import sys
+
+if sys.version_info < (3, 8):
+    print("Python %d.%d.%d too old" %
+          (sys.version_info.major,
+           sys.version_info.minor,
+           sys.version_info.micro))
+    exit(1)
+
+try:
+    import tomllib
+except ImportError:
+    try:
+        import tomli
+    except ImportError:
+        print("No tomli")
+        exit(1)
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 17:38:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 17:38:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810575.1223278 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swmG2-0006Yq-TM; Fri, 04 Oct 2024 17:38:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810575.1223278; Fri, 04 Oct 2024 17:38: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 1swmG2-0006Yj-Qs; Fri, 04 Oct 2024 17:38:26 +0000
Received: by outflank-mailman (input) for mailman id 810575;
 Fri, 04 Oct 2024 17:38: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 1swmG2-0006YY-6F; Fri, 04 Oct 2024 17:38: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 1swmG1-0001U0-Ox; Fri, 04 Oct 2024 17:38: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 1swmG1-0000iA-AR; Fri, 04 Oct 2024 17:38:25 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swmG1-0004ee-9k; Fri, 04 Oct 2024 17:38: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=LcQGFcqzCIyGBXfMwTOSmjSU7bT15x6iRJ+B95v34a0=; b=kSG3x6nK5LahAcU9AYHv3ZloG6
	T34+92CVrzExy5WPpUUMS02GVY8Uy4GBEHKNCB4LTBolGRx3CElLRFatrX7KpG4TXFqY3zfF2NDuN
	kcyqD37BfzXMSmYaKfGWtlVqk2JnHpRK/TiP/cNnXOPGDWkWxIvUdJWlRE+pa/2yhyPk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187958-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187958: 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-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop: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-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-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-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-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-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-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-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=3840cbe24cf060ea05a585ca497814609f5d47d1
X-Osstest-Versions-That:
    linux=7ec462100ef9142344ddbf86f2c3008b97acddbe
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 17:38:25 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187948
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187948
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187948
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187948
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187948
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187948
 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-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-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-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-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-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-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-amd64-amd64-libvirt-qcow2 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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                3840cbe24cf060ea05a585ca497814609f5d47d1
baseline version:
 linux                7ec462100ef9142344ddbf86f2c3008b97acddbe

Last test of basis   187948  2024-10-03 07:44:41 Z    1 days
Testing same since   187958  2024-10-04 00:14:57 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Aakash Menon <aakash.menon@protempis.com>
  Aakash Menon <aakash.r.menon@gmail.com>
  Aleksander Jan Bajkowski <olek2@wp.pl>
  Alexander Sverdlin <alexander.sverdlin@siemens.com>
  Anton Danilov <littlesmilingcloud@gmail.com>
  Chang Yu <marcus.yu.56@gmail.com>
  Christian Brauner <brauner@kernel.org>
  Conor Dooley <conor.dooley@microchip.com>
  Csókás, Bence <csokas.bence@prolan.hu>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Borkmann <daniel@iogearbox.net>
  Darrick J. Wong <djwong@kernel.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  Dragos Tatulea <dtatulea@nvidia.com>
  Eddie James <eajames@linux.ibm.com>
  Eduard Zingerman <eddyz87@gmail.com>
  Elena Salomatkina <esalomatkina@ispras.ru>
  Eric Dumazet <edumazet@google.com>
  Felix Fietkau <nbd@nbd.name>
  FUJITA Tomonori <fujita.tomonori@gmail.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gerd Bayer <gbayer@linux.ibm.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hui Wang <hui.wang@canonical.com>
  Ido Schimmel <idosch@nvidia.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamie Bainbridge <jamie.bainbridge@gmail.com>
  Jianbo Liu <jianbol@nvidia.com>
  Jiawei Ye <jiawei.ye@foxmail.com>
  Jiawen Wu <jiawenwu@trustnetic.com>
  Jinjie Ruan <ruanjinjie@huawei.com>
  Joey Gouly <joey.gouly@arm.com>
  Johannes Weiner <hannes@cmpxchg.org>
  Kiran K <kiran.k@intel.com>
  Leon Romanovsky <leon@kernel.org>
  Linus Torvalds <torvalds@linux-foundation.org>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Manu Bretelle <chantr4@gmail.com>
  Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
  Maxim Mikityanskiy <maxtram95@gmail.com>
  Miguel Ojeda <ojeda@kernel.org>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Mohamed Khalfella <mkhalfella@purestorage.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Nikolay Aleksandrov <razor@blackwall.org>
  Omar Sandoval <osandov@fb.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Phil Sutter <phil@nwl.cc>
  Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
  Ravikanth Tuniki <ravikanth.tuniki@amd.com>
  Roger Quadros <rogerq@kernel.org>
  Saeed Mahameed <saeedm@nvidia.com>
  Sean Anderson <sean.anderson@linux.dev>
  Shenwei Wang <shenwei.wang@nxp.com>
  Stefan Schmidt <stefan@datenfreihafen.org>
  Steve French <stfrench@microsoft.com>
  syzbot+c12e2f941af1feb5632c@syzkaller.appspotmail.com
  Thorsten Blum <thorsten.blum@linux.dev>
  Vladimir Oltean <vladimir.oltean@nxp.com>
  Willem de Bruijn <willemb@google.com>
  Xin Long <lucien.xin@gmail.com>
  Yevgeny Kliteynik <kliteyn@nvidia.com>
  zhang jiao <zhangjiao2@cmss.chinamobile.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   7ec462100ef9..3840cbe24cf0  3840cbe24cf060ea05a585ca497814609f5d47d1 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 18:15:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 18:15:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810588.1223290 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swmpV-0003cx-Ma; Fri, 04 Oct 2024 18:15:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810588.1223290; Fri, 04 Oct 2024 18: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 1swmpV-0003cq-Hn; Fri, 04 Oct 2024 18:15:05 +0000
Received: by outflank-mailman (input) for mailman id 810588;
 Fri, 04 Oct 2024 18:15: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=34DV=RA=bounce.vates.tech=bounce-md_30504962.670030a3.v1-6c8ce1e1cb354ef79dc5b54d7cbb15fb@srs-se1.protection.inumbo.net>)
 id 1swmpU-0003ck-4m
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 18:15:04 +0000
Received: from mail136-19.atl41.mandrillapp.com
 (mail136-19.atl41.mandrillapp.com [198.2.136.19])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9211b610-827c-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 20:15:02 +0200 (CEST)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-19.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4XKxXg6yflzRKLqCB
 for <xen-devel@lists.xenproject.org>; Fri,  4 Oct 2024 18:14:59 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 6c8ce1e1cb354ef79dc5b54d7cbb15fb; Fri, 04 Oct 2024 18:14: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: 9211b610-827c-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728065700; x=1728326200;
	bh=DgaFH5bUOwvzXi7v8lQ+bUNtGFos/z7bsOhh2Pm8sHA=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=wzRGOxnCk64CKp8PYGTypP4xmaVAdavquAZgkRFVPgAQwreklCW7pK+1vuTtOR2Wo
	 5r9bGCTpMVrPAp0YwCFYKjRtdLpdMQeqel7y2XHkFsiFqb7gCLTSQ/+Oiw+QB05z17
	 XjE0KQFpYd48p4/z6mbmMwHzGPPLE0FFsyLA06SB/IkesFFCIxP+TTbbg7NsEbcS5C
	 qvXYAvpDVPmV/0giMcF953yAGgp829c7PEmEY9XeQwY+N8subRlQ4L8sPkS76MKsGv
	 7JgGPTnHCU6EMfvJVvK3Vz18Q4/hRiSIQ/dYbKYpIT2V2s8VMn/s2FwbBT7Oav2djH
	 uu/1wizZViEgw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728065700; x=1728326200; i=anthony.perard@vates.tech;
	bh=DgaFH5bUOwvzXi7v8lQ+bUNtGFos/z7bsOhh2Pm8sHA=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=QPwzgFuYVo3Fpt/88rd+CsikwK7AaQKF+Pn8Zc0s6HH/R6fQVg0L7LPEz+eH9aN3Q
	 JUEkDBMY6pxSRCpr0/7ioZvpAiWdr+wQ5StdRpQoFK76o/7QML804PwANunfub0e0F
	 S5bhVDAuWwn6YpaA2ZSWayQCkRSgJsGdFMAsqOpB3xY8mcVTg7mxma7p8IGmCpDh+R
	 xx71mWv4rCx7QXmS1BGn7rsmmyA6PUseZCID6kyV2g8Q40eP5hSxMcqvSN8UABF593
	 WQjTZdCuUAqhx9YZemZo+oTqskyq9cNH+p41WW77J5br1uTRmZ7lFJd5JDhJCB30B1
	 gt8q3lJYWSVNg==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20CI:=20Fix=20builds=20following=20qemu-xen=20update?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728065698312
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Message-Id: <ZwAwoSOUQuRXeNIH@l14>
References: <20241004172723.2391026-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241004172723.2391026-1-andrew.cooper3@citrix.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.6c8ce1e1cb354ef79dc5b54d7cbb15fb?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241004:md
Date: Fri, 04 Oct 2024 18:14:59 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Fri, Oct 04, 2024 at 06:27:23PM +0100, Andrew Cooper wrote:
> A recent update to qemu-xen has bumped the build requirements, with Python 3.8
> being the new baseline but also needing the 'ensurepip' and 'tomllib/tomli'
> packages.
> 
>  * Ubuntu/Debian package 'ensurepip' separately, but it can be obtained by
>    installing the python3-venv package.
> 
>  * 'tomllib' was added to the python standard library in Python 3.11, but
>    previously it was a separate package named 'tomli'.
> 
> In terms of changes required to build QEMU:
> 
>  * Ubuntu 24.04 (Noble) has Python 3.12 so only needs python3-venv
> 
>  * Ubuntu 22.04 (Jammy) has Python 3.10 but does have a python3-tomli package
>    that QEMU is happy with.
> 
>  * FreeBSD has Python 3.9, but Python 3.11 is available.
> 
> In terms of exclusions:
> 
>  * Ubuntu 20.04 (Focal) has Python 3.8, but lacks any kind of tomli package.
> 
>  * Fedora 29 (Python 3.7), OpenSUSE Leap 15.6 (Python 3.6), and Ubuntu
>    18.04/Bionic (Python 3.6) are now too old.
> 
> Detecting tomllib/tomli is more than can fit in build's oneliner, so break it
> out into a proper script.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

The changes on the gitlab side look fine. I don't know if the changes on
the cirrus side are ok, but at least the seems to work, after looking at
the build logs. So:

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 18:26:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 18:26:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810596.1223299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swn07-0005aO-PR; Fri, 04 Oct 2024 18:26:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810596.1223299; Fri, 04 Oct 2024 18: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 1swn07-0005aH-Lf; Fri, 04 Oct 2024 18:26:03 +0000
Received: by outflank-mailman (input) for mailman id 810596;
 Fri, 04 Oct 2024 18: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=6kl2=RA=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swn06-0005aB-Hp
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 18:26:02 +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 1b6c4f0b-827e-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 20:26:01 +0200 (CEST)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-5398e3f43f3so3059017e87.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 11:26:01 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7bb57asm26199566b.178.2024.10.04.11.25.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 11:25:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1b6c4f0b-827e-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728066360; x=1728671160; 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=kvGD4iXKrioedFb9sC9XN7kLk8pAXGsQ+qVVVhcpzTY=;
        b=t4NcB/OiyVnG0TmfhGflvpW0zK6ZMzmHoDh2MVt0CVCljVEKdg35VC5C8XjI3Tx2Sy
         HnKjJOtVPFE1qZ8tU1udmFjvROBbgn5Vo0Dl5JBBQset+wX0H0HZ2G++dpIZIeIfPVbt
         YUTTghBuL1CfMExOPGLLoZ6Lj0lVOemRMtL/0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728066360; x=1728671160;
        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=kvGD4iXKrioedFb9sC9XN7kLk8pAXGsQ+qVVVhcpzTY=;
        b=Ue0WUKGS5/J4BKoFdULmzi+vG6HSsw5Z1pqQtTtoy43v+84lzBbXKymCRVS53UTvzo
         VlOV2Wz0oNFJRGkmzp9KgB2bOTFE7N9itGnwM5rQse4wU5ag5xGpntoq6G10LmusuqdW
         m5R833QEsJfWGxUYvokTNVG6VxTYxlkCpyUpYH8eyFQqBGl2ojiMaHWYHEGZM41a+NvW
         ekWa525duTPc6sKKso9BVcBchgwk9fHKWJ3tTdWheCC5JKntFKlaJW56WsgL98l1Qaow
         nTDGOd9m2H7MTbDBronEfCdxQlyrDJNOA2pKHS3xbjRxBa+c4MY7IWwwRI4+GSbmj36W
         eBGg==
X-Gm-Message-State: AOJu0YyxgWLCGxV3lPSAf1refRjhjW37XHHmAIFyuW6XkWjhT2PRAxFY
	K9ejo6c1WuIrTfhUWOJa8Q1Xe/ziS0voTh4qsxKeHnUpxEieyGg50BbQSVsn7S0=
X-Google-Smtp-Source: AGHT+IFc0fbPD0/xeag/dGbhfRUyfqozy5K/jaIT9fiSxvvtr/QSZUFs8xY69keTsaLAKr02qMRcDA==
X-Received: by 2002:a05:6512:280e:b0:539:9720:99d4 with SMTP id 2adb3069b0e04-539ab87da94mr2069642e87.28.1728066360432;
        Fri, 04 Oct 2024 11:26:00 -0700 (PDT)
Message-ID: <aae49e30-f726-4e59-b478-04ea7feffe0e@citrix.com>
Date: Fri, 4 Oct 2024 19:25:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CI: Fix builds following qemu-xen update
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241004172723.2391026-1-andrew.cooper3@citrix.com>
 <ZwAwoSOUQuRXeNIH@l14>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZwAwoSOUQuRXeNIH@l14>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04/10/2024 7:14 pm, Anthony PERARD wrote:
> On Fri, Oct 04, 2024 at 06:27:23PM +0100, Andrew Cooper wrote:
>> A recent update to qemu-xen has bumped the build requirements, with Python 3.8
>> being the new baseline but also needing the 'ensurepip' and 'tomllib/tomli'
>> packages.
>>
>>  * Ubuntu/Debian package 'ensurepip' separately, but it can be obtained by
>>    installing the python3-venv package.
>>
>>  * 'tomllib' was added to the python standard library in Python 3.11, but
>>    previously it was a separate package named 'tomli'.
>>
>> In terms of changes required to build QEMU:
>>
>>  * Ubuntu 24.04 (Noble) has Python 3.12 so only needs python3-venv
>>
>>  * Ubuntu 22.04 (Jammy) has Python 3.10 but does have a python3-tomli package
>>    that QEMU is happy with.
>>
>>  * FreeBSD has Python 3.9, but Python 3.11 is available.
>>
>> In terms of exclusions:
>>
>>  * Ubuntu 20.04 (Focal) has Python 3.8, but lacks any kind of tomli package.
>>
>>  * Fedora 29 (Python 3.7), OpenSUSE Leap 15.6 (Python 3.6), and Ubuntu
>>    18.04/Bionic (Python 3.6) are now too old.
>>
>> Detecting tomllib/tomli is more than can fit in build's oneliner, so break it
>> out into a proper script.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> The changes on the gitlab side look fine. I don't know if the changes on
> the cirrus side are ok, but at least the seems to work, after looking at
> the build logs. So:
>
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks.  Roger has given his ack on Matrix, so I'll get this committed
right away to unblock things.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 18:47:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 18:47:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810602.1223313 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swnKy-0000rC-CP; Fri, 04 Oct 2024 18:47:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810602.1223313; Fri, 04 Oct 2024 18:47: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 1swnKy-0000r5-9t; Fri, 04 Oct 2024 18:47:36 +0000
Received: by outflank-mailman (input) for mailman id 810602;
 Fri, 04 Oct 2024 18:47: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 1swnKw-0000qv-7s; Fri, 04 Oct 2024 18:47: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 1swnKv-0002gA-WD; Fri, 04 Oct 2024 18:47: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 1swnKv-0002Zt-LH; Fri, 04 Oct 2024 18:47:33 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swnKv-0002zR-Ki; Fri, 04 Oct 2024 18:47: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=cGof+zdlc8m31Llh0wBK2eVEEzkM096EL8Sqcbiycac=; b=53Rbu0tsJ2nw4HBLkMstsSoeWF
	WrZYKm69ELZV5pL8s9qM2a+2GPnR7BTO4sGPetqVsO6N1LOF+3I9BN/VOmYrF63rCjQ12eDj8xFsh
	o/1qjSJRM5SNT+YjcwKM+gwkRaOrDapY1AmKvjOAtPd3sL9RBswgQrByO9ck8u6HFjEs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187969-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187969: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=c82bf392c58e60e3e656b13627e3076d709ab796
X-Osstest-Versions-That:
    ovmf=91d806917fd2be763f067a58ef05fadcf43efab1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 18:47:33 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 c82bf392c58e60e3e656b13627e3076d709ab796
baseline version:
 ovmf                 91d806917fd2be763f067a58ef05fadcf43efab1

Last test of basis   187963  2024-10-04 05:11:31 Z    0 days
Testing same since   187969  2024-10-04 16:43:30 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Carsten Haitzler <carsten.haitzler@foss.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    


------------------------------------------------------------
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
   91d806917f..c82bf392c5  c82bf392c58e60e3e656b13627e3076d709ab796 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 18:49:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 18:49:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810608.1223323 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swnMj-0001NG-O9; Fri, 04 Oct 2024 18:49:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810608.1223323; Fri, 04 Oct 2024 18:49: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 1swnMj-0001N9-LA; Fri, 04 Oct 2024 18:49:25 +0000
Received: by outflank-mailman (input) for mailman id 810608;
 Fri, 04 Oct 2024 18:49: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=6kl2=RA=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1swnMi-0001N1-DN
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 18:49:24 +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 5e899a16-8281-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 20:49:22 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c42e7adbddso2829454a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 04 Oct 2024 11:49:22 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e663f4fsm28645166b.92.2024.10.04.11.49.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 04 Oct 2024 11:49:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e899a16-8281-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728067761; x=1728672561; 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=pXcXchHRyspHEtFKj/8Nl7FIg1t1X1qUr6b0qgmDPqQ=;
        b=XkRycn9XrhPC6pUrPWI4d1S+xrXafVPgXkH9t753cx9igOc/Nx+SOuTA92B6ResJev
         QR8/jmAU9847xHF7joc1YxucmXj2YrTWIAMvj2IWQyDfGFOcfBbCHypx67lpAnKgSVIu
         mMY/5oK3XXZEmXj8bTIvka6hPGqqDWzXi5rnw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728067761; x=1728672561;
        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=pXcXchHRyspHEtFKj/8Nl7FIg1t1X1qUr6b0qgmDPqQ=;
        b=JSWv7scpmaKQAtGJ6EA8czDBfIVnDFiN2DkCKc2zsV6irdbBAo2ApJJEegFitDAxhy
         yGC/GnavaGxivT7KyEphqieTxslq7jwjUYqE6hs4B8OM3zwWmIDpyZTEAkMElFt5sN4F
         PcpVvnCV9EUrxl8JIHKApO2X2URi8FR53u9rDE0tVRPCR4hrMia7+kNWlBRro6fVcXpS
         WExyvuo2sf8MCZw1d+he+NEakmZvn3niorgs0OzflGgmih72Oe8kv/MtMRBUEkdmbU55
         ShgGwIBsbId5SMB9w2Qb632NnL+mfwNFJJARcSgxR3eNr8tRyoDhW02uDyfWqWzY0zkl
         c9JA==
X-Forwarded-Encrypted: i=1; AJvYcCV7LYdW+es9pBgAArnFHzwb1dRWKgUDpPg2xU0bWaAEF38xMpkz/EYSko9cfkOp7I+/DzvniApMxN0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzcDxnl596JUXcI80MjFTu2RxLi6XId6b54XUuOayiDKChihDqC
	QFdXAvSC4A3ZmHsJAXofwrxLdBIji+rR2NxsSxXt6UJgs9jKVI84t8uRVHNwtPY=
X-Google-Smtp-Source: AGHT+IGK4+q9TDZZVT2IpXaTZoixlI5143zVYiecoltcha528vUPVZ6V5qYnH/aeA/3vlTaCkLUebg==
X-Received: by 2002:a17:907:960c:b0:a86:8b7b:7880 with SMTP id a640c23a62f3a-a991c06317fmr292648166b.63.1728067761494;
        Fri, 04 Oct 2024 11:49:21 -0700 (PDT)
Message-ID: <5357e6f1-6f3e-4ed4-85f9-828ffb0272e4@citrix.com>
Date: Fri, 4 Oct 2024 19:49:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Further simplify CR4 handling in
 dom0_construct_pv()
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002232008.1988682-1-andrew.cooper3@citrix.com>
 <7dbd7fae-e2e8-4508-a012-cf9b719c68f1@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <7dbd7fae-e2e8-4508-a012-cf9b719c68f1@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04/10/2024 7:52 am, Jan Beulich wrote:
> On 03.10.2024 01:20, Andrew Cooper wrote:
>> The logic would be more robust disabling SMAP based on its precense in CR4,
>> rather than SMAP's accociation with a synthetic feature.
> It's hard to tell what's more robust without knowing what future changes
> there might be. In particular ...
>
>> @@ -1064,19 +1065,19 @@ int __init dom0_construct_pv(struct domain *d,
>>       * prevents us needing to write construct_dom0() in terms of
>>       * copy_{to,from}_user().
>>       */
>> -    if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
>> +    if ( cr4 & X86_CR4_SMAP )
> ... with this adjustment ...
>
>>      {
>>          if ( IS_ENABLED(CONFIG_PV32) )
>>              cr4_pv32_mask &= ~X86_CR4_SMAP;
> ... this update of a global no longer occurs. Playing games with CR4
> elsewhere might run into issues with this lack of updating.

We don't know the future, but I'm confused by your reasoning here. 
Right now there's an expectation/assumption that FEAT_XEN_SMAP == CR4.SMAP.

In fact, the logic in staging right now is wonky if FEAT_XEN_SMAP=1 but
CR4.SMAP=1.  In this case, we'll do nothing on the way in, and then
activate SMAP on the way out.

construct_dom0() will definitely crash if SMAP is active.  So looking at
CR4 is strictly better than accidentally falling into a FEAT_XEN_SMAP=0
but CR4.SMAP=1 case.

Needing to play with the global cr4_pv32_mask is a consequence of
choosing to disabling SMAP, rather than using STAC and/or rewriting
using copy_*_user().  If you want to avoid playing with cr4_pv32_mask,
we'll need to revisit this decision.

While the APs are active/working at this point in boot, they're not
running guests (32bit PV or otherwise), so alterations to cr4_pv32_mask
don't really matter.


But, as to the robustness.  The code is now written in terms of it's
actual requirements, not its assumptions, and no longer malfunctions
when it's assumptions are violated.

> As the future is unknown, I'm really fine either way, so if you continue
> to think this way is strictly better:
> Acked-by: Jan Beulich <jbeulich@suse.com>

Thanks.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 19:31:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 19:31:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810615.1223334 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swo1l-0008Ac-Pl; Fri, 04 Oct 2024 19:31:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810615.1223334; Fri, 04 Oct 2024 19:31: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 1swo1l-0008AV-Ks; Fri, 04 Oct 2024 19:31:49 +0000
Received: by outflank-mailman (input) for mailman id 810615;
 Fri, 04 Oct 2024 19:31: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 1swo1k-0008AL-Vd; Fri, 04 Oct 2024 19:31: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 1swo1k-0003Px-PX; Fri, 04 Oct 2024 19:31: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 1swo1k-0005Kc-AP; Fri, 04 Oct 2024 19:31:48 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swo1k-00036p-9y; Fri, 04 Oct 2024 19:31: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=w+E6eBkPu54suW6JbFW8b693yWQffHpSzzR2zDkK6J8=; b=2/AGFHuN3P0te/67JBhnA1KWE5
	0EGOOuzYCctiw+yxddHk8YQQOkQCJvUjfo3+vLylhYiwUsyztd0X5DD1T00VL6JDPN4AhSZurmDx7
	tn3bPPsujLQ7S8wAYF2ZByXsKHW04k15fVWYVJXvnUWCDr9I2Ihvjf1Sr9A/auir42hc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187961-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 187961: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt: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-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-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-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=215cada34395b6b2caad507393e043594d6c86fc
X-Osstest-Versions-That:
    libvirt=3b296a98aaf43310f85f7e51d89791b985204173
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 19:31:48 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187945
 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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              215cada34395b6b2caad507393e043594d6c86fc
baseline version:
 libvirt              3b296a98aaf43310f85f7e51d89791b985204173

Last test of basis   187945  2024-10-03 04:20:39 Z    1 days
Testing same since   187961  2024-10-04 04:22:33 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  John Levon <john.levon@nutanix.com>
  Martin Kletzander <mkletzan@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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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
   3b296a98aa..215cada343  215cada34395b6b2caad507393e043594d6c86fc -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:00:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:00:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810630.1223342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpPW-00034J-2p; Fri, 04 Oct 2024 21:00:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810630.1223342; Fri, 04 Oct 2024 21:00: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 1swpPW-00034C-06; Fri, 04 Oct 2024 21:00:26 +0000
Received: by outflank-mailman (input) for mailman id 810630;
 Fri, 04 Oct 2024 21:00: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=rX0y=RA=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1swpPU-000346-NU
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:00:24 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ab64c39d-8293-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 23:00:22 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 01C27A4187E;
 Fri,  4 Oct 2024 21:00:13 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 68C33C4CEC6;
 Fri,  4 Oct 2024 21:00: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: ab64c39d-8293-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728075621;
	bh=YCqKB4xMI//wg9hUiR3UkGuVmjEvths1jKvjyC8RrIc=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=Qv72VAyN7DwOTGBD3bjppdr4aWyUVOPUEXwH/KdI1/+Ijno/0rtssWSNIvSIPXMXo
	 u0ViwvBcLvGMUau7HBI8yEyhiE2zz+VsFrm3Z3wNf+Esrcyvpo7Xsw0O/h58PzvR0i
	 db6k9UPUd3fbrKmuAJJwKvCluZEHNFdleBTuJFK/paBOpEi+70z6KZzImIzMgm7NQG
	 IbuJr4rX1GlB75G4PQ/YV1BJNE5DDoWOhqrRZZPvFv2FEqIbxbn95uaQIDRKHr/YLq
	 q/LHUDM4BdMq6VMOE31OJvTgCRzEfLB7r+Kr+1RM3GFKQ5QuynX2wQiC/6dC9Pt59w
	 pobni7FLQ9eZw==
Date: Fri, 4 Oct 2024 14:00:19 -0700 (PDT)
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, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>
Subject: Re: [PATCH v2 4/6] dt-overlay: Support target-path being root node
In-Reply-To: <20241004122220.234817-5-michal.orzel@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410041400120.1138574@ubuntu-linux-20-04-desktop>
References: <20241004122220.234817-1-michal.orzel@amd.com> <20241004122220.234817-5-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, 4 Oct 2024, Michal Orzel wrote:
> Even though in most cases device nodes are not present directly under
> the root node, it's a perfectly valid configuration (e.g. Qemu virt
> machine dtb). At the moment, we don't handle this scenario which leads
> to unconditional addition of extra leading '/' in the node full path.
> This makes the attempt to add such device overlay to fail.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> Changes in v2:
>  - Use ?: instead of implicit bool->int conversion
> ---
>  xen/common/dt-overlay.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
> index d18bd12bd38d..bfa153250922 100644
> --- a/xen/common/dt-overlay.c
> +++ b/xen/common/dt-overlay.c
> @@ -325,6 +325,7 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
>              int node_name_len;
>              unsigned int target_path_len = strlen(target_path);
>              unsigned int node_full_name_len;
> +            unsigned int extra_len;
>  
>              node_name = fdt_get_name(fdto, subnode, &node_name_len);
>  
> @@ -332,10 +333,13 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
>                  return node_name_len;
>  
>              /*
> -             * Magic number 2 is for adding '/' and '\0'. This is done to keep
> -             * the node_full_path in the correct full node name format.
> +             * Extra length is for adding '/' and '\0' unless the target path is
> +             * root in which case we don't add the '/' at the beginning. This is
> +             * done to keep the node_full_path in the correct full node name
> +             * format.
>               */
> -            node_full_name_len = target_path_len + node_name_len + 2;
> +            extra_len = (target_path_len > 1) ? 2 : 1;
> +            node_full_name_len = target_path_len + node_name_len + extra_len;
>  
>              nodes_full_path[node_num] = xmalloc_bytes(node_full_name_len);
>  
> @@ -344,9 +348,11 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
>  
>              memcpy(nodes_full_path[node_num], target_path, target_path_len);
>  
> -            nodes_full_path[node_num][target_path_len] = '/';
> +            /* Target is not root - add separator */
> +            if ( target_path_len > 1 )
> +                nodes_full_path[node_num][target_path_len++] = '/';
>  
> -            memcpy(nodes_full_path[node_num] + target_path_len + 1,
> +            memcpy(nodes_full_path[node_num] + target_path_len,
>                      node_name, node_name_len);
>  
>              nodes_full_path[node_num][node_full_name_len - 1] = '\0';
> -- 
> 2.25.1
> 


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:02:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:02:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810635.1223354 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpRt-0003cs-Gd; Fri, 04 Oct 2024 21:02:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810635.1223354; Fri, 04 Oct 2024 21:02: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 1swpRt-0003cl-Bv; Fri, 04 Oct 2024 21:02:53 +0000
Received: by outflank-mailman (input) for mailman id 810635;
 Fri, 04 Oct 2024 21:02: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=rX0y=RA=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1swpRr-0003cb-AT
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:02: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 029500a7-8294-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 23:02:49 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 6E2F15C594F;
 Fri,  4 Oct 2024 21:02:43 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8769EC4CECC;
 Fri,  4 Oct 2024 21:02: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: 029500a7-8294-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728075767;
	bh=99fL6x7aBJpu4R6Wrzg9r1y1JYZN75JTOS2TqT99aAw=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=sGe85wEDX0iOTdaHGSKvONbuKrP/OQqVofI/6d9r2xY2Y8RyFlLT23xBKVXvh1N/4
	 aoouhUZlJfCF4TRy2Xc5PcM0p1w+rB3MnLTrJErk8QkHUIKZjRCyEAQkLV8mm0Z8jd
	 SCvXfBgqej4/7MNHAiyYIlgY/eygwdv34fFgMt23WAprFcXssjPFHRvB23MbYRclJL
	 ogXvfaFXKByt392NE71cDBPLwFucEVPXZIBI+8ioe1+xl/zdd8WSlih88MZ5H7yZhn
	 vu2wNJtfXLlpDnU4sPtGpBEfJnAoeH/3/5mc2ndOrrQosM1LudkS3GIuuY8NcHIQFn
	 58Wa/DNq8ZxjA==
Date: Fri, 4 Oct 2024 14:02:45 -0700 (PDT)
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, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>
Subject: Re: [PATCH v2 5/6] dt-overlay: Ignore nodes that do not have
 __overlay__ as their subnode
In-Reply-To: <20241004122220.234817-6-michal.orzel@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410041402350.1138574@ubuntu-linux-20-04-desktop>
References: <20241004122220.234817-1-michal.orzel@amd.com> <20241004122220.234817-6-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, 4 Oct 2024, Michal Orzel wrote:
> Assumption stated in the comments as if fdt_for_each_subnode() checks
> for parent < 0 is utterly wrong. If parent is < 0, node offset is set to
> 0 (i.e. the very first node in the tree) and the loop's body is executed.
> This incorrect assumption causes overlay_node_count() to also count nodes
> that do not have __overlay__ as their subnode. The same story goes for
> overlay_get_nodes_info(), where we end up requiring each node directly
> under root node to have "target-path" set. DTBOs can specify other nodes
> including special ones like __symbols__, __fixups__ that can be left to
> reduce the number of steps a user needs to do to when it comes to invalid
> phandles.
> 
> Fix it by adding checks if overlay < 0 after respective calls to
> fdt_subnode_offset().
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Good catch!

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>



> ---
> Changes in v2:
>  - New patch
> ---
>  xen/common/dt-overlay.c | 16 ++++++----------
>  1 file changed, 6 insertions(+), 10 deletions(-)
> 
> diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
> index bfa153250922..4d75b5b36a99 100644
> --- a/xen/common/dt-overlay.c
> +++ b/xen/common/dt-overlay.c
> @@ -274,11 +274,9 @@ static unsigned int overlay_node_count(const void *overlay_fdt)
>          int overlay;
>  
>          overlay = fdt_subnode_offset(overlay_fdt, fragment, "__overlay__");
> +        if ( overlay < 0 )
> +            continue;
>  
> -        /*
> -         * overlay value can be < 0. But fdt_for_each_subnode() loop checks for
> -         * overlay >= 0. So, no need for a overlay>=0 check here.
> -         */
>          fdt_for_each_subnode(subnode, overlay_fdt, overlay)
>          {
>              num_overlay_nodes++;
> @@ -305,6 +303,10 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
>          int subnode;
>          const char *target_path;
>  
> +        overlay = fdt_subnode_offset(fdto, fragment, "__overlay__");
> +        if ( overlay < 0 )
> +            continue;
> +
>          target = fdt_overlay_target_offset(device_tree_flattened, fdto,
>                                             fragment, &target_path);
>          if ( target < 0 )
> @@ -313,12 +315,6 @@ static int overlay_get_nodes_info(const void *fdto, char **nodes_full_path)
>          if ( target_path == NULL )
>              return -EINVAL;
>  
> -        overlay = fdt_subnode_offset(fdto, fragment, "__overlay__");
> -
> -        /*
> -         * overlay value can be < 0. But fdt_for_each_subnode() loop checks for
> -         * overlay >= 0. So, no need for a overlay>=0 check here.
> -         */
>          fdt_for_each_subnode(subnode, fdto, overlay)
>          {
>              const char *node_name = NULL;
> -- 
> 2.25.1
> 


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:03:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:03:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810639.1223363 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpSU-00047x-Nx; Fri, 04 Oct 2024 21:03:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810639.1223363; Fri, 04 Oct 2024 21:03: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 1swpSU-00047q-K0; Fri, 04 Oct 2024 21:03:30 +0000
Received: by outflank-mailman (input) for mailman id 810639;
 Fri, 04 Oct 2024 21:03: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=rX0y=RA=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1swpST-0003cb-Da
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:03:29 +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 19bce23a-8294-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 23:03:27 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 914265C59D8;
 Fri,  4 Oct 2024 21:03:22 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C04A2C4CEC6;
 Fri,  4 Oct 2024 21:03: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: 19bce23a-8294-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728075806;
	bh=1Ig7ZbkmA2uy1LRqrOpi2EpmQkjG6iDaUqSNyRecaIw=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=iwOmHzvm7IaEFl+o7FeHC1Rcd0SNbnipBL2sGssvnYRN9ernsToWc4EAb25ryxHPP
	 fZGNDwxEA6ZjtQTlmKhqCJ/NMZT0d+Y6wMWrUyIVtECrR/VMJdTPnAejXcbFuZGuEz
	 shWVKpGcSAug8MAFexEfboEIXKbFoT+BQeIt+sxi1ABVjdwzNZWTxdy2IR2YQ1RmRv
	 j3Uu/HWAVGdaChSxk6OQdvVodYXVp/AcpveMDWKxPclMR8fjbx3FckIydvfHacqlPF
	 hjU+NPnkedXUJDWWD+pDs6zdaKLPv+G1bXikuwA4tqgK/t2nEyk9v7vCdC0Xbj4SpT
	 2o2PlE8mHhnbA==
Date: Fri, 4 Oct 2024 14:03:24 -0700 (PDT)
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, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>
Subject: Re: [PATCH v2 6/6] dt-overlay: Print overlay I/O memory ranges in
 hex
In-Reply-To: <20241004122220.234817-7-michal.orzel@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410041403170.1138574@ubuntu-linux-20-04-desktop>
References: <20241004122220.234817-1-michal.orzel@amd.com> <20241004122220.234817-7-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, 4 Oct 2024, Michal Orzel wrote:
> Printing I/O memory rangeset ranges in decimal is not very helpful when
> debugging, so switch to hex by adding RANGESETF_prettyprint_hex flag
> for iomem_ranges rangeset.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> Changes in v2:
>  - New patch
> ---
>  xen/common/dt-overlay.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
> index 4d75b5b36a99..5ce00514ef14 100644
> --- a/xen/common/dt-overlay.c
> +++ b/xen/common/dt-overlay.c
> @@ -869,7 +869,8 @@ static long handle_attach_overlay_nodes(struct domain *d,
>          goto out;
>      }
>  
> -    entry->iomem_ranges = rangeset_new(d, "Overlay: I/O Memory", 0);
> +    entry->iomem_ranges = rangeset_new(d, "Overlay: I/O Memory",
> +                                       RANGESETF_prettyprint_hex);
>      if (entry->iomem_ranges == NULL)
>      {
>          rc = -ENOMEM;
> -- 
> 2.25.1
> 


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:07:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:07:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810643.1223373 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpVu-0005Ca-55; Fri, 04 Oct 2024 21:07:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810643.1223373; Fri, 04 Oct 2024 21:07: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 1swpVu-0005CT-27; Fri, 04 Oct 2024 21:07:02 +0000
Received: by outflank-mailman (input) for mailman id 810643;
 Fri, 04 Oct 2024 21:07: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=ELuc=RA=zytor.com=hpa@srs-se1.protection.inumbo.net>)
 id 1swpVs-0005CM-FI
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:07:00 +0000
Received: from mail.zytor.com (unknown [2607:7c80:54:3::138])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9688f24d-8294-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 23:06:58 +0200 (CEST)
Received: from [172.27.3.244] ([76.133.66.138]) (authenticated bits=0)
 by mail.zytor.com (8.18.1/8.17.1) with ESMTPSA id 494L65GU1102942
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NO);
 Fri, 4 Oct 2024 14:06:05 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9688f24d-8294-11ef-a0bb-8be0dac302b0
DKIM-Filter: OpenDKIM Filter v2.11.0 mail.zytor.com 494L65GU1102942
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zytor.com;
	s=2024091601; t=1728075968;
	bh=XsIxGCLuwc7oDprSmGh/r3HcUoLTGC5y0f+hwyxMfwo=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=RHbE3DVWEQje/BMw0MYaccvz1CZHwlX6EAgZGBVxHM2N6A8Bs+1jWvQpqHAmpUzya
	 B92rCcmXrNdl6GfJQOI48PxiDK98iUmhievUBaOuzvKW3PAg7k45+MO2DgOhre9Bqd
	 MrXnCq+SHnBPZaEqYPEh1ZZWpqzvtfcpjsowsK7ZSQpJE3n6P52zeuoQxt6YTsZKnI
	 eOmpzoP5V4jl/5Ek7xSXJuKz/8Ygm8jcSxEYWiVLw5Mr50hkZ5MwtV2JsKhIo4+1yl
	 R0hI44pjMEjCP35l4UByBpjxQS3xPtcQR5w0P8PyQOSjLhz1QZW4Zg4KVQGx8RJEXl
	 n08E+BHxsQUWw==
Message-ID: <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com>
Date: Fri, 4 Oct 2024 14:06:05 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: Ard Biesheuvel <ardb@kernel.org>,
        Linus Torvalds <torvalds@linux-foundation.org>
Cc: Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org,
        x86@kernel.org, Andy Lutomirski <luto@kernel.org>,
        Peter Zijlstra <peterz@infradead.org>, Uros Bizjak <ubizjak@gmail.com>,
        Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>,
        Christoph Lameter <cl@linux.com>,
        Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
        Paolo Bonzini <pbonzini@redhat.com>,
        Vitaly Kuznetsov <vkuznets@redhat.com>,
        Juergen Gross <jgross@suse.com>,
        Boris Ostrovsky
 <boris.ostrovsky@oracle.com>,
        Greg Kroah-Hartman
 <gregkh@linuxfoundation.org>,
        Arnd Bergmann <arnd@arndb.de>, Masahiro Yamada <masahiroy@kernel.org>,
        Kees Cook <kees@kernel.org>, Nathan Chancellor <nathan@kernel.org>,
        Keith Packard <keithp@keithp.com>,
        Justin Stitt <justinstitt@google.com>,
        Josh Poimboeuf <jpoimboe@kernel.org>,
        Arnaldo Carvalho de Melo <acme@kernel.org>,
        Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
        Ian Rogers <irogers@google.com>,
        Adrian Hunter <adrian.hunter@intel.com>,
        Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org,
        linux-pm@vger.kernel.org, kvm@vger.kernel.org,
        xen-devel@lists.xenproject.org, linux-efi@vger.kernel.org,
        linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org,
        linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org,
        rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com>
 <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
Content-Language: en-US
From: "H. Peter Anvin" <hpa@zytor.com>
In-Reply-To: <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 10/3/24 04:13, Ard Biesheuvel wrote:
> 
>> That said, doing changes like changing "mov $sym" to "lea sym(%rip)" I
>> feel are a complete no-brainer and should be done regardless of any
>> other code generation issues.
> 
> Yes, this is the primary reason I ended up looking into this in the
> first place. Earlier this year, we ended up having to introduce
> RIP_REL_REF() to emit those RIP-relative references explicitly, in
> order to prevent the C code that is called via the early 1:1 mapping
> from exploding. The amount of C code called in that manner has been
> growing steadily over time with the introduction of 5-level paging and
> SEV-SNP and TDX support, which need to play all kinds of tricks before
> the normal kernel mappings are created.
> 

movq $sym to leaq sym(%rip) which you said ought to be smaller (and in 
reality appears to be the same size, 7 bytes) seems like a no-brainer 
and can be treated as a code quality issue -- in other words, file bug 
reports against gcc and clang.

> Compiling with -fpie and linking with --pie -z text produces an
> executable that is guaranteed to have only RIP-relative references in
> the .text segment, removing the need for RIP_REL_REF entirely (it
> already does nothing when __pic__ is #define'd).

But -fpie has a considerable cost; specifically when we have indexed 
references, as in that case the base pointer needs to be manifest in a 
register, *and* it takes up a register slot in the EA, which may end 
converting one instruction into three.

Now, the "kernel" memory model is defined in the ABI document, but there 
is nothing that prevents us from making updates to it if we need to; 
e.g. the statement that movq $sym can be used is undesirable, of course.

	-hpa



From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:07:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:07:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810644.1223383 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpW7-0005Vr-BV; Fri, 04 Oct 2024 21:07:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810644.1223383; Fri, 04 Oct 2024 21:07: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 1swpW7-0005Vk-8S; Fri, 04 Oct 2024 21:07:15 +0000
Received: by outflank-mailman (input) for mailman id 810644;
 Fri, 04 Oct 2024 21:07: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=rX0y=RA=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1swpW5-0005CM-Rf
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:07:13 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org
 [2604:1380:4641:c500::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9fe45f49-8294-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 23:07:13 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id A2CD65C5AA7;
 Fri,  4 Oct 2024 21:07:07 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C91A0C4CEC6;
 Fri,  4 Oct 2024 21:07: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: 9fe45f49-8294-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728076031;
	bh=2tF0GEJP2TJ1/pu3tvTaFoFp1nZ/tVUvuarVzMfzeVs=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ttFIiuv7asFL3XMB2BXy+4U3u5FGkUogbjLk0FcurIfRubyNAJ3tbypy4EM7fEMrr
	 HJqp9dYTrP14n7BAcJMakrq91jQYqOlRS5Fvf2/Yq6/ne8sKI8KEI5CTUlxeKHuJlm
	 zFXw0TvpzabE97JZ6JxXh+K2vvq65hkB1pICt1qzlH2ep9VsmUc8dx8BLJSoVcaTTc
	 A5t1Hnyo+BS73IwgPvHb+maGu+t+gFzQt0p1RY4PiWDEMn8oCGDNQUeDk/rsKWNcOs
	 SLEbZSBQlRNX9pfCgYxFodqJQt8W/mo8T39os4RSRXMVVbYCkD4UNzYQMvcnJcr9AH
	 w7apHiGmfUoLg==
Date: Fri, 4 Oct 2024 14:07:09 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Sergiy Kibrik <Sergiy_Kibrik@epam.com>
Subject: Re: [XEN PATCH v1 1/3] x86/hvm: introduce config option for ACPI PM
 timer
In-Reply-To: <36069df2-64ec-4f0e-908e-d0128630daea@suse.com>
Message-ID: <alpine.DEB.2.22.394.2410041404430.1138574@ubuntu-linux-20-04-desktop>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com> <3ef3724e21b196edd277c94598ebe6624813ede4.1728032664.git.Sergiy_Kibrik@epam.com> <Zv_pHR8gUrcHQU5I@macbook.local> <36069df2-64ec-4f0e-908e-d0128630daea@suse.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-452468995-1728076031=:1138574"

  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-452468995-1728076031=:1138574
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Fri, 4 Oct 2024, Jan Beulich wrote:
> On 04.10.2024 15:09, Roger Pau Monné wrote:
> > On Fri, Oct 04, 2024 at 12:31:50PM +0300, Sergiy Kibrik wrote:
> >> --- a/xen/arch/x86/include/asm/domain.h
> >> +++ b/xen/arch/x86/include/asm/domain.h
> >> @@ -496,7 +496,8 @@ struct arch_domain
> >>  
> >>  #define has_vlapic(d)      (!!((d)->arch.emulation_flags & X86_EMU_LAPIC))
> >>  #define has_vhpet(d)       (!!((d)->arch.emulation_flags & X86_EMU_HPET))
> >> -#define has_vpm(d)         (!!((d)->arch.emulation_flags & X86_EMU_PM))
> >> +#define has_vpm(d)         (IS_ENABLED(CONFIG_X86_PMTIMER) && \
> >> +                            !!((d)->arch.emulation_flags & X86_EMU_PM))
> > 
> > Do you really need the IS_ENABLED() here?  If you modify
> > emulation_flags_ok() to reject the flag if not available it won't be
> > possible for any domain to have it set.
> 
> With the IS_ENABLED() the only other approach to have the compiler DCE any
> code left unreachable would be to #define X86_EMU_PM to 0 in that case. I
> guess I'd slightly prefer that alternative, but otherwise the approach used
> here would still be wanted imo.

The compiler DCE is important, either the approach in this patch or
Jan's suggestion would work fine as far as I can tell.
--8323329-452468995-1728076031=:1138574--


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:08:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:08:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810652.1223393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpX7-0006EL-LS; Fri, 04 Oct 2024 21:08:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810652.1223393; Fri, 04 Oct 2024 21:08: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 1swpX7-0006EE-IH; Fri, 04 Oct 2024 21:08:17 +0000
Received: by outflank-mailman (input) for mailman id 810652;
 Fri, 04 Oct 2024 21:08: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=rX0y=RA=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1swpX5-0006Du-QH
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:08:15 +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 c4af3cc0-8294-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 23:08:14 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 0D8435C4D6E;
 Fri,  4 Oct 2024 21:08:09 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1C88BC4CEC6;
 Fri,  4 Oct 2024 21:08:11 +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: c4af3cc0-8294-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728076092;
	bh=n9fUKmPk/dzN6ODMSDGxb8MZOrT6zfrqRJlx/CNd1ew=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=Orp4otbBtWWPrMqV17ytXYTg20BxywjchEMMDKb6526ww+aMej2kMQGTLu5fppLss
	 +Nf/YQyc3f1jfrlKmMa/qm2oM3vGIP34hV2bvzodva9EO+IxfP/QlzUNICRfxnFP5e
	 kxGpmtUbZj+ZP+tsgtLThIC8FKZ4G+nSRVk6m/wZpPzyVUDPnKuUuSm3AK2uq1T7DK
	 Z7qQ2ub05zCmVLQnrZv6EPyMiNc+rDs5gH5o60LXAcodS3EmGtAOkRfmLuMhz1iRBI
	 D1k30KB8bhwrd2dQwSLOI+CDt/krwe77HkOM0H43rPrdsxAKRRjSCneeNDyxwN0C0F
	 Rp9umtz71toKg==
Date: Fri, 4 Oct 2024 14:08:10 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
cc: Sergiy Kibrik <Sergiy_Kibrik@epam.com>, xen-devel@lists.xenproject.org, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Jan Beulich <jbeulich@suse.com>
Subject: Re: [XEN PATCH v1 2/3] x86/hvm: introduce config option for stdvga
 emulation
In-Reply-To: <Zv_pszkRrPXstXFW@macbook.local>
Message-ID: <alpine.DEB.2.22.394.2410041407370.1138574@ubuntu-linux-20-04-desktop>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com> <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.com> <Zv_pszkRrPXstXFW@macbook.local>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-1775218464-1728076092=:1138574"

  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-1775218464-1728076092=:1138574
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Fri, 4 Oct 2024, Roger Pau Monné wrote:
> On Fri, Oct 04, 2024 at 12:33:53PM +0300, Sergiy Kibrik wrote:
> > Introduce config option X86_STDVGA so that stdvga emulation driver can later be
> > made configurable and be disabled on systems that don't need it.
> > 
> > As a first step the option is hidden from user. No functional changes intended.
> > 
> > Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
> > CC: Jan Beulich <jbeulich@suse.com>
> > ---
> >  xen/arch/x86/Kconfig              | 3 +++
> >  xen/arch/x86/hvm/Makefile         | 2 +-
> >  xen/arch/x86/include/asm/domain.h | 3 ++-
> >  xen/arch/x86/include/asm/hvm/io.h | 4 ++++
> >  4 files changed, 10 insertions(+), 2 deletions(-)
> > 
> > diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
> > index 95275dc17e..89c42ff6da 100644
> > --- a/xen/arch/x86/Kconfig
> > +++ b/xen/arch/x86/Kconfig
> > @@ -147,6 +147,9 @@ config INTEL_VMX
> >  config X86_PMTIMER
> >  	def_bool HVM
> >  
> > +config X86_STDVGA
> > +	def_bool HVM
> 
> Same as previous patch, the content of patch 3 needs to be moved here.
> 
> > +
> >  config XEN_SHSTK
> >  	bool "Supervisor Shadow Stacks"
> >  	depends on HAS_AS_CET_SS
> > diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
> > index 321241f0bf..b7741b0f60 100644
> > --- a/xen/arch/x86/hvm/Makefile
> > +++ b/xen/arch/x86/hvm/Makefile
> > @@ -22,7 +22,7 @@ obj-$(CONFIG_X86_PMTIMER) += pmtimer.o
> >  obj-y += quirks.o
> >  obj-y += rtc.o
> >  obj-y += save.o
> > -obj-y += stdvga.o
> > +obj-$(CONFIG_X86_STDVGA) += stdvga.o
> >  obj-y += vioapic.o
> >  obj-y += vlapic.o
> >  obj-y += vm_event.o
> > diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> > index 3f65bfd190..675a13d917 100644
> > --- a/xen/arch/x86/include/asm/domain.h
> > +++ b/xen/arch/x86/include/asm/domain.h
> > @@ -501,7 +501,8 @@ struct arch_domain
> >  #define has_vrtc(d)        (!!((d)->arch.emulation_flags & X86_EMU_RTC))
> >  #define has_vioapic(d)     (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC))
> >  #define has_vpic(d)        (!!((d)->arch.emulation_flags & X86_EMU_PIC))
> > -#define has_vvga(d)        (!!((d)->arch.emulation_flags & X86_EMU_VGA))
> > +#define has_vvga(d)        (IS_ENABLED(CONFIG_X86_STDVGA) && \
> 
> You don't need the IS_ENABLED() if emulation_flags_ok() is adjusted
> accordingly.

Same as patch #1 regarding compiler DCE, we could either do this or
define X86_EMU_VGA to zero
--8323329-1775218464-1728076092=:1138574--


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:17:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:17:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810664.1223402 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpfO-00087h-IJ; Fri, 04 Oct 2024 21:16:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810664.1223402; Fri, 04 Oct 2024 21: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 1swpfO-00087a-Fg; Fri, 04 Oct 2024 21:16:50 +0000
Received: by outflank-mailman (input) for mailman id 810664;
 Fri, 04 Oct 2024 21:16: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=v+dN=RA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swpfN-00087U-53
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:16:49 +0000
Received: from fout-a5-smtp.messagingengine.com
 (fout-a5-smtp.messagingengine.com [103.168.172.148])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f597f4b1-8295-11ef-99a2-01e77a169b0f;
 Fri, 04 Oct 2024 23:16:46 +0200 (CEST)
Received: from phl-compute-11.internal (phl-compute-11.phl.internal
 [10.202.2.51])
 by mailfout.phl.internal (Postfix) with ESMTP id C3E9F13801E7;
 Fri,  4 Oct 2024 17:16:44 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-11.internal (MEProxy); Fri, 04 Oct 2024 17:16:44 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 4 Oct 2024 17:16:42 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f597f4b1-8295-11ef-99a2-01e77a169b0f
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=1728076604;
	 x=1728163004; bh=MGrKuqBDBH3wosq0pmO9ag0wz4xWnN+uM/lZoESYowo=; b=
	J9Cox+mivj6Wyok8IvAfetvg49wOjnb2WBB9xAcC1a3BuzL0nTrJG7ydtRLB4Qij
	L9ChlbVtiBE9ZiAsJWOu5rBTXWnCMl/U7P7Hr0TuiZWcpcO6ttYQiUQwa2FLKQdj
	DTgpHMSHDYBGAIejssZtKAFzHsaui88lDtho4oe7JSlF8YBLucHRvi/FQ+cWC/In
	xN/iVgmwRzuU0lV6znTYYmOwPzVRWui4jQJwl7Xr/8SORDmQ8fmfEJrjr0dLwBQC
	G7iDVQTqnxhPuQy9n0qCyGcLUx2e3j/Bl1IdlXsU2o+Pl+upP/CCyRbe++cbsiFo
	hGUg2G2zWHUJ5oH42Ird3g==
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=1728076604; x=1728163004; bh=MGrKuqBDBH3wosq0pmO9ag0wz4xW
	nN+uM/lZoESYowo=; b=f/A+yPDz+gBUtJ8TdRjogboyX176ogBYS8BMhsWFUhZn
	8xfaRsi/Ed9t5JsJfXSlb2wGSs9cCU6wflHvpleci3Kn+UAKn/58KSqyGr2EosQS
	/wJqjmWsvWOrCGeqxXgBtGutykvLcvnCOqeGANasgkZYDjobrB8DMaI43rMc2NJj
	HDpU09hsoEHrj8SavVSIeDb0XsJBe40zmRoHkDSbK5EBCCM6atadPNzsfJAx8fQ7
	QdE8ywwS7gqt9+QRCyq1ZJese4Q6MldOHZnvRO7nLVJWuIUVte5iVZs6o/s5G5RY
	BczS+t4HHESXJLxAbOS7PTN8abOd8FlWCZT5PJNEHA==
X-ME-Sender: <xms:PFsAZ14NnGMJYnvTluJv54xkzETDaGlTpFxlfjsBLiCCrx_zBvrs1A>
    <xme:PFsAZy5BErzy-THLCXHPWYXmZ2MIlvzUMOEYBjFQbUK0R8rYTwQdb_N9ftrvc5hoh
    7NdfjlWdwH4WQ>
X-ME-Received: <xmr:PFsAZ8dsHWy2ZOIXeSyIJHi1bZORLH2Dc5hUKH-A2NVL3xI0OBhgrnHQ1JmDquYnJqGmclqqZzYnBfqLQoUkBjqkyE5dAqXDqg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvfedgudehlecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp
    uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg
    hnthhsucdlqddutddtmdenucfjughrpeffhffvvefukfhfgggtuggjsehgtdorredttdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpedttedvhfekudetvdelffeguedtkeethfethfffhfefteeghfeige
    elvddttdektdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr
    ohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpd
    hnsggprhgtphhtthhopeejpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehsshht
    rggsvghllhhinhhisehkvghrnhgvlhdrohhrghdprhgtphhtthhopehfvgguvghrihgtoh
    drshgvrhgrfhhinhhisegsuhhgshgvnhhgrdgtohhmpdhrtghpthhtohepgigvnhdquggv
    vhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtoheptghonh
    hsuhhlthhinhhgsegsuhhgshgvnhhgrdgtohhmpdhrtghpthhtohepughpshhmihhthhes
    rghpvghrthhushhsohhluhhtihhonhhsrdgtohhmpdhrtghpthhtohepjhgsvghulhhitg
    hhsehsuhhsvgdrtghomhdprhgtphhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghi
    thhrihigrdgtohhm
X-ME-Proxy: <xmx:PFsAZ-KGmZaoGQ2ts5isjWjZnihqxakS04akexGm2J1wQiTfF3vg9w>
    <xmx:PFsAZ5I-KZ-JNMeocqenhlPUeoVPySSUovY2eCb6Hxq92Qwc5bmVcg>
    <xmx:PFsAZ3xsRZ7ufAcHSOfh7N-GAa2HULWsMQHJy9WWiBcE0eIUKUw4XQ>
    <xmx:PFsAZ1Iq9L_uyMnTJZS-GkzOnXtqOF5Ts7EoAcdyDIg9Yp3QD4J__g>
    <xmx:PFsAZx-Gv3zJyR4OFEZGvbc0mgHz-BOBu9_UaZK3z-S45cCngEW0XeAR>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 4 Oct 2024 23:16:39 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
	xen-devel@lists.xenproject.org, consulting@bugseng.com,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
Message-ID: <ZwBbOAyfmgtjYcse@mail-itl>
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <alpine.DEB.2.22.394.2410021736050.1138574@ubuntu-linux-20-04-desktop>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="uZGS5RljdMlKseDU"
Content-Disposition: inline
In-Reply-To: <alpine.DEB.2.22.394.2410021736050.1138574@ubuntu-linux-20-04-desktop>


--uZGS5RljdMlKseDU
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 4 Oct 2024 23:16:39 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
	xen-devel@lists.xenproject.org, consulting@bugseng.com,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6

On Wed, Oct 02, 2024 at 05:36:47PM -0700, Stefano Stabellini wrote:
> On Mon, 30 Sep 2024, Federico Serafini wrote:
> > guest_handle_ok()'s expansion contains a sizeof() involving its
> > first argument which is guest_handle_cast().
> > The expansion of the latter, in turn, contains a variable
> > initialization.
> >=20
> > Since MISRA considers the initialization (even of a local variable)
> > a side effect, the chain of expansions mentioned above violates
> > MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
> > contain any expression which has potential side effect).
> >=20
> > Refactor the code to address the rule violation.
> >=20
> > Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>=20
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcAWzgACgkQ24/THMrX
1yzpIwf8C0f8+qGJF4dDpl7/gIkwsNDu3FXeLulw4H8NvFCOClBQg3Ak1+j/uS1o
VfHX09K+GjvnIBjxo3H61HRuT17lIJfEFX0OlZEkv6vjKexPo3AhPtYyPg+kji+Z
1x80FuJAHht4A4ej7ItP9fLAwmA4vp7Ed8EFOCciy4Dy20nQr8MmmIhfSbI5I9Vv
yfZv4ODQhzr7QYyS25Qk68qLHX8WwAj2L18SSYDpTW24zyFJA6sW/s6RR8i1ZK/T
EE86pOqRuJ/DHxYjCl9P9co8ruQQEE0UjKt7otKG4N/pXLBZz1lOCZ7f9qHiaq2a
PPjwFSqhyGJqGru66VxPKZ9qPDlQfw==
=ZwvH
-----END PGP SIGNATURE-----

--uZGS5RljdMlKseDU--


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:19:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:19:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810668.1223414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swphf-0000Td-Vc; Fri, 04 Oct 2024 21:19:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810668.1223414; Fri, 04 Oct 2024 21:19: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 1swphf-0000TW-R1; Fri, 04 Oct 2024 21:19:11 +0000
Received: by outflank-mailman (input) for mailman id 810668;
 Fri, 04 Oct 2024 21:19: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 1swphf-0000TM-CO; Fri, 04 Oct 2024 21:19: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 1swphf-0005M7-3Z; Fri, 04 Oct 2024 21:19: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 1swphe-0002aS-Lt; Fri, 04 Oct 2024 21:19:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swphe-0003ht-LP; Fri, 04 Oct 2024 21:19: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=OMprCluZ276jcDRp+BKs9MRHnEv21dekzmEZEAIWDqI=; b=mnL7R28++9R8hAmWFsnJlgbvY2
	ylq7GLhGCUGFTP5cKjbvJbSZZ1ybQYmO9FEEST2/soELkswReCo696XYORJCGL/u/Uxq2OsIknpUd
	IE7qMV9NaY2sAyAkcmc3FxeqlpCKH4LgNYIL0M+ROjpLwVB0wbzsarp++VgmD3Lsjefc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187972-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187972: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=df884297fd57aac379d227925e27211e667974ee
X-Osstest-Versions-That:
    ovmf=c82bf392c58e60e3e656b13627e3076d709ab796
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 21:19:10 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 df884297fd57aac379d227925e27211e667974ee
baseline version:
 ovmf                 c82bf392c58e60e3e656b13627e3076d709ab796

Last test of basis   187969  2024-10-04 16:43:30 Z    0 days
Testing same since   187972  2024-10-04 19:11:30 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Carsten Haitzler <carsten.haitzler@foss.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    


------------------------------------------------------------
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
   c82bf392c5..df884297fd  df884297fd57aac379d227925e27211e667974ee -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 21:25:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 21:25:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810674.1223424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swpnM-0001xT-Jp; Fri, 04 Oct 2024 21:25:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810674.1223424; Fri, 04 Oct 2024 21: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 1swpnM-0001xM-F5; Fri, 04 Oct 2024 21:25:04 +0000
Received: by outflank-mailman (input) for mailman id 810674;
 Fri, 04 Oct 2024 21:25: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=v+dN=RA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1swpnL-0001xG-Oa
 for xen-devel@lists.xenproject.org; Fri, 04 Oct 2024 21:25:03 +0000
Received: from fout-a5-smtp.messagingengine.com
 (fout-a5-smtp.messagingengine.com [103.168.172.148])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1d0dabb3-8297-11ef-a0bb-8be0dac302b0;
 Fri, 04 Oct 2024 23:25:02 +0200 (CEST)
Received: from phl-compute-10.internal (phl-compute-10.phl.internal
 [10.202.2.50])
 by mailfout.phl.internal (Postfix) with ESMTP id 9CB1C13802B2;
 Fri,  4 Oct 2024 17:25:00 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-10.internal (MEProxy); Fri, 04 Oct 2024 17:25:00 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 4 Oct 2024 17:24:59 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d0dabb3-8297-11ef-a0bb-8be0dac302b0
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=1728077100;
	 x=1728163500; bh=WvjiHiFyqnAhSwe+2cpYXG8hky0PnEyRjbgAF9Gqvy0=; b=
	AjT9z3nCB9aXMmZFYYaZaB7P1pWx2/65NaeyKnxVMf1d9QztbPg7xMs9cSswKkvc
	si+XbLNvvsQLFHqRyU4mcJ0UtLjxBIrFpw+yUGFc1mKeijPmNdngvU+dflsqtH1Z
	J92qbl9jIZWlAftsI9Oqv/wHluut1jbtc/XdQHJpPjdSFUwymPmuii4y7w8Vua5y
	DCKqR74Kk6GReDzBH8r6Q81K0W6iTAPbPhmGYEwLzlpUioouYGtVRemonnWaXWA0
	zT6BOymzSgi508Bm4fPh/EwmIIGpXMoYFmNtCby10v8gKAlFHuErNudczc1IRYlN
	iUh3t7o8rpP0mezU1hlVFw==
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=1728077100; x=1728163500; bh=WvjiHiFyqnAhSwe+2cpYXG8hky0P
	nEyRjbgAF9Gqvy0=; b=QtNliXESyK4mqm9Rz+7x9+cMvrxSaF1XYpkPtr3uoxuT
	i6X37bkcOuf5mKK2lr/L+u0sJibTZ6rklORWdn1yUwdfPEDedH60D8FUZb1jWyWu
	pxGzH9Z9K7trHepWkmH1r9/TCtkJS9fvywYTkw7kSKRtnpWrT/iR+xXr+p6zKxhd
	O/56f88vWCLxjcnyDVw/cGGk5rruR/b8UMt2vCOhPuWH5B//P8mBhTFdZPSRTZg8
	jD6t1QE83FDBLbUa5m6nuCx9JXa2RF3Wt8BNO23VfCYwG7NiGH7Tuol5e8A7ipt6
	apOROfoGRvx6/axXXMGe281cqS9x4lDE5z0zwA5v+w==
X-ME-Sender: <xms:LF0AZ0UIWWtZ2r0lzNFV-BZs4etMKDj9xinp794bg6FZoDHSq64mSA>
    <xme:LF0AZ4mf6G-ZRqgWs1hNhiS8EgKlk1-JGkD1dMKwqKI9sPpI6NfWba5Y14Ic24g8Z
    6_KiqB3wH-Bew>
X-ME-Received: <xmr:LF0AZ4ZbDX0W3VdexOGwjAiVk4zFNK-hbopijp2anC0V7Yb4RBSlN4aSPSGqC06cw3Fi058TAKP7jmMe_xggEOhaslx7pLWWsg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvddvfedgudeitdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp
    uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg
    hnthhsucdlqddutddtmdenucfjughrpeffhffvvefukfhfgggtuggjsehgtderredttdej
    necuhfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoe
    hmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucgg
    tffrrghtthgvrhhnpefgudelteefvefhfeehieetleeihfejhfeludevteetkeevtedtvd
    egueetfeejudenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhr
    ohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpd
    hnsggprhgtphhtthhopeehpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehfvggu
    vghrihgtohdrshgvrhgrfhhinhhisegsuhhgshgvnhhgrdgtohhmpdhrtghpthhtohepgi
    gvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthht
    oheptghonhhsuhhlthhinhhgsegsuhhgshgvnhhgrdgtohhmpdhrtghpthhtohepughpsh
    hmihhthhesrghpvghrthhushhsohhluhhtihhonhhsrdgtohhmpdhrtghpthhtohepjhgs
    vghulhhitghhsehsuhhsvgdrtghomh
X-ME-Proxy: <xmx:LF0AZzXIVRf2bvPk9zbgkE855aFFlmkgbMmmnKBZfHkIA7Cc54WP5g>
    <xmx:LF0AZ-mghcRQ6LY8LAd0zY8K9LPpaS1rgzhvJ4-u2AK7AjE03uCSyw>
    <xmx:LF0AZ4d1KaHGCBYVtjVXZeT2DHTFmkBv2jK9tv138Gp-8IAz61581Q>
    <xmx:LF0AZwHmT7vfMX7eh6yPQhYZwzjRon5gomlky7ko7EIYXC12jJ2cMA>
    <xmx:LF0AZ_DTPfc2V1ogeify66HLBtr8asB2XrhlDjD-Uu508ygJmcmCfSuu>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 4 Oct 2024 23:24:57 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: xen-devel@lists.xenproject.org, consulting@bugseng.com,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [XEN PATCH 10/12] efi: address violation of MISRA C Rule 16.3
Message-ID: <ZwBdKewtEk2JgGcW@mail-itl>
References: <cover.1725958416.git.federico.serafini@bugseng.com>
 <302110f2f41f6b7f74fcb90f8902137b0a619082.1725958417.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="2sZKY1QYcUvBh3vr"
Content-Disposition: inline
In-Reply-To: <302110f2f41f6b7f74fcb90f8902137b0a619082.1725958417.git.federico.serafini@bugseng.com>


--2sZKY1QYcUvBh3vr
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 4 Oct 2024 23:24:57 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: xen-devel@lists.xenproject.org, consulting@bugseng.com,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [XEN PATCH 10/12] efi: address violation of MISRA C Rule 16.3

On Tue, Sep 10, 2024 at 12:09:02PM +0200, Federico Serafini wrote:
> Use agreed syntax for pseudo-keyword fallthrough to meet the
> requirements to deviate a violation of MISRA C:2012 Rule 16.3:
> "An unconditional `break' statement shall terminate every
> switch-clause".
>=20
> No functional change.
>=20
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>

Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

> ---
>  xen/common/efi/runtime.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>=20
> diff --git a/xen/common/efi/runtime.c b/xen/common/efi/runtime.c
> index d03e5c90ce..376fcbd8e1 100644
> --- a/xen/common/efi/runtime.c
> +++ b/xen/common/efi/runtime.c
> @@ -691,7 +691,7 @@ int efi_runtime_call(struct xenpf_efi_runtime_call *o=
p)
> =20
>          if ( !efi_enabled(EFI_RS) || (efi_rs->Hdr.Revision >> 16) < 2 )
>              return -EOPNOTSUPP;
> -        /* XXX fall through for now */
> +        fallthrough; /* XXX fall through for now */
>      default:
>          return -ENOSYS;
>      }
> --=20
> 2.34.1
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcAXSkACgkQ24/THMrX
1yzwFwf/b+nLfw0TnlSKv6uwriKoyA+3D1Zp7BXzN5cnZhkW+MIMC1GjnG1YCfqh
WlwCMOTP2cn0A+NWOXUhD55n+989867uO9hdvkog7/YYcA1xKn3u/YtQe4REyc7l
WnRZfZYiG5cRQmFfG/xLMcYNhiVVjco6h961CJ+qHggB8SkdRIC1FpYrAlBO/rsh
eTEhqpCD59LmTS0SLpz6BVCpJ8rfE+6gJm02RfMuecMPQUZ6GnJN5pXM28h/vg2x
Hk1YXCahI9DX+beA7T/+12aceG+XftCvxAFclGzep0QcJj7N+jE2zk3bRCaxs+jA
CRSObVEBUOUWKxD5TWf6IQipT4hosg==
=d3Xv
-----END PGP SIGNATURE-----

--2sZKY1QYcUvBh3vr--


From xen-devel-bounces@lists.xenproject.org Fri Oct 04 23:10:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 04 Oct 2024 23:10:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810693.1223445 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swrR5-0000rW-QD; Fri, 04 Oct 2024 23:10:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810693.1223445; Fri, 04 Oct 2024 23:10: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 1swrR5-0000rP-NE; Fri, 04 Oct 2024 23:10:11 +0000
Received: by outflank-mailman (input) for mailman id 810693;
 Fri, 04 Oct 2024 23:10: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 1swrR3-0000rF-MX; Fri, 04 Oct 2024 23:10: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 1swrR3-0007L6-G1; Fri, 04 Oct 2024 23:10: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 1swrR2-0005Xu-Au; Fri, 04 Oct 2024 23:10:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swrR2-0000xn-Ab; Fri, 04 Oct 2024 23:10: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=sDL7XQWloFH4Xc3MI6aKxbrrxVw92Gi07TDV7Stu4nc=; b=mvSKK20hWDj7aXcQPejDfgztst
	w/NhAWEadZH4CaC8FMBBhEi7SZ8cdovSGP7bmGYKctVxi1C9Sd79PuPrdz61+QJUVNsRSCcNpZ+vd
	i0BuD9cCOkHVZFmHFkpvnqIeg1Qxor1Cxl/Lql4bLBK/OaujuZ6taFcrdAeBo5sPagKs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187973-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187973: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=54469a6918320591a3ec318eada60aed3c75334c
X-Osstest-Versions-That:
    ovmf=df884297fd57aac379d227925e27211e667974ee
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 04 Oct 2024 23:10:08 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 54469a6918320591a3ec318eada60aed3c75334c
baseline version:
 ovmf                 df884297fd57aac379d227925e27211e667974ee

Last test of basis   187972  2024-10-04 19:11:30 Z    0 days
Testing same since   187973  2024-10-04 21:45:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Tormod Volden <debian.tormod@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    


------------------------------------------------------------
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
   df884297fd..54469a6918  54469a6918320591a3ec318eada60aed3c75334c -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 00:42:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 00:42:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810702.1223455 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swss2-0004dT-6I; Sat, 05 Oct 2024 00:42:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810702.1223455; Sat, 05 Oct 2024 00:42: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 1swss2-0004dM-3T; Sat, 05 Oct 2024 00:42:06 +0000
Received: by outflank-mailman (input) for mailman id 810702;
 Sat, 05 Oct 2024 00:42: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 1swss1-0004dC-1h; Sat, 05 Oct 2024 00:42: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 1swss0-00012d-NF; Sat, 05 Oct 2024 00:42: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 1swss0-0007ts-82; Sat, 05 Oct 2024 00:42:04 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swss0-0000mn-7a; Sat, 05 Oct 2024 00:42: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=j1bBBX6N5xz4JwlP49arAlGNzyMygrBgcbLp5o3w0X8=; b=HzHSZfapQejiZqF0VSVT3SKFm9
	4s/vhdizNql780+eXge0AIxrKjjxTQdMHS4M4XwFpKmVVfjxggeGJko6X1tNgNu0CNtMNi5CbRH4E
	3eeYMWWbHmYX3RZ/OV2lA6OAw3iby5Ba074ZD4u5GdHcGhw6T7ZStd9KcB4wYf5MY/gg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187971-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187971: 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=1223375d8b7faf0eab642834292bf4924e40f425
X-Osstest-Versions-That:
    xen=bcce5a6b62761c8b678aebce33c55ea66f879f66
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 00:42:04 +0000

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

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                  1223375d8b7faf0eab642834292bf4924e40f425
baseline version:
 xen                  bcce5a6b62761c8b678aebce33c55ea66f879f66

Last test of basis   187966  2024-10-04 12:00:24 Z    0 days
Testing same since   187971  2024-10-04 19:04:00 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
   bcce5a6b62..1223375d8b  1223375d8b7faf0eab642834292bf4924e40f425 -> smoke


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 00:55:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 00:55:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810710.1223466 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swt4s-0006Ok-Ad; Sat, 05 Oct 2024 00:55:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810710.1223466; Sat, 05 Oct 2024 00: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 1swt4s-0006Od-6c; Sat, 05 Oct 2024 00:55:22 +0000
Received: by outflank-mailman (input) for mailman id 810710;
 Sat, 05 Oct 2024 00: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 1swt4r-0006OT-H9; Sat, 05 Oct 2024 00: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 1swt4r-0001IY-4k; Sat, 05 Oct 2024 00: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 1swt4q-0008Bc-Nl; Sat, 05 Oct 2024 00:55:20 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swt4q-0004wy-NH; Sat, 05 Oct 2024 00: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=9l7ih54lrA4aW7/iVTCR/t+OFeoBcNbA60StUcexYnk=; b=3bcYyNu4igGJC6bfFHZascKdwA
	Wuo/eHtWw2J2yBVp5KKu9ghCyMMthxfFw7x1O3ouwGsrEI2vWuTaLoiZp5SUDchLa+ahDZj4S/Ih6
	xw7nKv+woLIuBekaO7o2NMVxFvyeOsThyPCGnCOdwr5MgS7RxHyWWD1ENtiw5qRF9nvs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187974-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187974: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=8cce048d4834d6967a568f3a0adc1efcf97c80c7
X-Osstest-Versions-That:
    ovmf=54469a6918320591a3ec318eada60aed3c75334c
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 00:55:20 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 8cce048d4834d6967a568f3a0adc1efcf97c80c7
baseline version:
 ovmf                 54469a6918320591a3ec318eada60aed3c75334c

Last test of basis   187973  2024-10-04 21:45:07 Z    0 days
Testing same since   187974  2024-10-04 23:13:20 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    


------------------------------------------------------------
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
   54469a6918..8cce048d48  8cce048d4834d6967a568f3a0adc1efcf97c80c7 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 02:43:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 02:43:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810725.1223475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swulk-0003fH-Nj; Sat, 05 Oct 2024 02:43:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810725.1223475; Sat, 05 Oct 2024 02: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 1swulk-0003fA-Kt; Sat, 05 Oct 2024 02:43:44 +0000
Received: by outflank-mailman (input) for mailman id 810725;
 Sat, 05 Oct 2024 02:43: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 1swulj-0003f0-HU; Sat, 05 Oct 2024 02:43: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 1swulj-0002a4-9Z; Sat, 05 Oct 2024 02:43: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 1swuli-0002eD-OO; Sat, 05 Oct 2024 02:43:42 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swuli-00016U-N3; Sat, 05 Oct 2024 02:43: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=IAlq6Sfc1WNJlsP/BTCi95+C259uX3Q87TGgzNemf1I=; b=1NL6zck22yGkCDr1GpDD3yf6TE
	s+kHnfOCI6JTpDME0jsv6Rsx4eTX5kAni7+yoekv041SJJEXVJw13bywKFBYdJOm8RfJD/9/iQBlA
	+jBY18zsWGdkzsVq/ok1OrdCG4wldwrpql8Rai0fcmxppFjO79FY4noWmQonoHqUKvys=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187977-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187977: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=80d9b4449182cd17484cae72269992e642095a00
X-Osstest-Versions-That:
    ovmf=8cce048d4834d6967a568f3a0adc1efcf97c80c7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 02:43:42 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 80d9b4449182cd17484cae72269992e642095a00
baseline version:
 ovmf                 8cce048d4834d6967a568f3a0adc1efcf97c80c7

Last test of basis   187974  2024-10-04 23:13:20 Z    0 days
Testing same since   187977  2024-10-05 01:11:29 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Benjamin Doron <benjamin.doron@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    


------------------------------------------------------------
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
   8cce048d48..80d9b44491  80d9b4449182cd17484cae72269992e642095a00 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 03:12:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 03:12:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810734.1223484 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swvDc-0007sM-Ry; Sat, 05 Oct 2024 03:12:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810734.1223484; Sat, 05 Oct 2024 03:12: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 1swvDc-0007sF-PQ; Sat, 05 Oct 2024 03:12:32 +0000
Received: by outflank-mailman (input) for mailman id 810734;
 Sat, 05 Oct 2024 03:12: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 1swvDb-0007s5-4h; Sat, 05 Oct 2024 03:12: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 1swvDa-00034P-Rp; Sat, 05 Oct 2024 03:12: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 1swvDa-0003Mb-FV; Sat, 05 Oct 2024 03:12:30 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swvDa-000230-Ex; Sat, 05 Oct 2024 03:12: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=lDvGzNXCxMtURtLDpqs2u9/KXmv0r/zvM/0F5n10+Vg=; b=H4ykj3SESj9snkVDlXdsyLue8o
	JWFh4ajOOmaDfeu/yhYlKeHTFoBcmVreBKnAelIsAfR6ICPoVzQWawuMoWus+Vu7Sji83+ubYaKey
	4f1+TeoS65Tj9LkTplG3gj4ItPVLLf7X1lVWNAo8mWA8E3ui9cBaNJaYP+CDXUAKLmCE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187965-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187965: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=423be09ab9492735924e73a2d36069784441ebc6
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 03:12:30 +0000

flight 187965 qemu-mainline real [real]
flight 187976 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187965/
http://logs.test-lab.xenproject.org/osstest/logs/187976/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-amd64-amd64-libvirt-qcow2 14 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-raw 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-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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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

version targeted for testing:
 qemuu                423be09ab9492735924e73a2d36069784441ebc6
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   18 days
Failing since        187731  2024-09-17 13:11:20 Z   17 days   29 attempts
Testing same since   187953  2024-10-03 12:21:19 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jones <ajones@ventanamicro.com>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 6881 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 04:44:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 04:44:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810747.1223495 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swwdp-0002of-4z; Sat, 05 Oct 2024 04:43:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810747.1223495; Sat, 05 Oct 2024 04:43: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 1swwdp-0002oY-20; Sat, 05 Oct 2024 04:43:41 +0000
Received: by outflank-mailman (input) for mailman id 810747;
 Sat, 05 Oct 2024 04:43: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 1swwdo-0002oO-EP; Sat, 05 Oct 2024 04:43: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 1swwdo-0004lq-4w; Sat, 05 Oct 2024 04:43: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 1swwdn-0007Fn-Qq; Sat, 05 Oct 2024 04:43:39 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swwdn-0000H7-QQ; Sat, 05 Oct 2024 04:43: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=coM1JjtLidNoVQNv3DJ4VviRNoHsNVWANeEN6oHfQjs=; b=2K2B91YFfCpxk8JYfnXCz+WK0F
	YLgcUzDPcF1xY6n8ENjb992vfUS96a3uwpX/xCeuxo15l3E5wqCUDbqGyIneWU/kczzWSyLkmHiPE
	RIDHUatcpjJ9r0LLz5bAqnj3wy3Oj7sW08TEZhZoQzbIFDgaMdKennK+MztMA8/FcwDw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187975-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187975: 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=6b20755c24ccd69d2482b45dfb9193940cdc346e
X-Osstest-Versions-That:
    xen=1223375d8b7faf0eab642834292bf4924e40f425
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 04:43:39 +0000

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

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                  6b20755c24ccd69d2482b45dfb9193940cdc346e
baseline version:
 xen                  1223375d8b7faf0eab642834292bf4924e40f425

Last test of basis   187971  2024-10-04 19:04:00 Z    0 days
Testing same since   187975  2024-10-05 01:02:06 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Federico Serafini <federico.serafini@bugseng.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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
   1223375d8b..6b20755c24  6b20755c24ccd69d2482b45dfb9193940cdc346e -> smoke


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 05:58:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 05:58:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810764.1223521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swxnp-0004Mw-BV; Sat, 05 Oct 2024 05:58:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810764.1223521; Sat, 05 Oct 2024 05:58: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 1swxnp-0004Mp-8y; Sat, 05 Oct 2024 05:58:05 +0000
Received: by outflank-mailman (input) for mailman id 810764;
 Sat, 05 Oct 2024 05:58: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 1swxnn-0004MM-Sk; Sat, 05 Oct 2024 05:58: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 1swxnn-0006ZB-Q0; Sat, 05 Oct 2024 05:58: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 1swxnn-00022w-Bz; Sat, 05 Oct 2024 05:58:03 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1swxnn-0000Bg-BV; Sat, 05 Oct 2024 05:58: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=bdYJ2ppXB60Kqj8qYndBMkxipLipnONs/BI3m4JHe/g=; b=b3l2bjC75xoa82WgP+TovQ6on6
	s1MxHSukg5wjbmKpVNyabn/b55UOqj1+9pGxCqOYLFP1pKpNvZZEDfqi7hakHnJUHiQU3cgehhHzT
	4FWCGPFqv0wuNDJDBrh7BAdtUUeM5SZpxK4NC0bBfBOkzTCQNpYGY5mozA1RYdQoCGHc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187968-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187968: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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:saverestore-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-credit2:saverestore-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-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu: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-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-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=d82e0e094e7a07353ba0fb35732724316c2ec2f6
X-Osstest-Versions-That:
    xen=444cb9350f2c1cc202b6b86176ddd8e57525e2d9
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 05:58:03 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-qcow2    20 leak-check/check        fail blocked in 187955
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187955
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187955
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187955
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187955
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187955
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187955
 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-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-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-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  d82e0e094e7a07353ba0fb35732724316c2ec2f6
baseline version:
 xen                  444cb9350f2c1cc202b6b86176ddd8e57525e2d9

Last test of basis   187955  2024-10-03 14:42:21 Z    1 days
Testing same since   187968  2024-10-04 13:47:40 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>
  Stefano Stabellini <sstabellini@kernel.org>
  Stefano Stabellini <stefano.stabellini@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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   444cb9350f..d82e0e094e  d82e0e094e7a07353ba0fb35732724316c2ec2f6 -> master


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 08:03:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 08:03:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810794.1223541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swzkZ-0004y0-Hm; Sat, 05 Oct 2024 08:02:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810794.1223541; Sat, 05 Oct 2024 08: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 1swzkZ-0004xs-Dn; Sat, 05 Oct 2024 08:02:51 +0000
Received: by outflank-mailman (input) for mailman id 810794;
 Sat, 05 Oct 2024 08:02: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=+Cfp=RB=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swzkY-0004ja-37
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 08:02:50 +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 358b6c4c-82f0-11ef-a0bb-8be0dac302b0;
 Sat, 05 Oct 2024 10:02:47 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a8d6ac24a3bso545096766b.1
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 01:02:47 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9933db9c5bsm84152366b.162.2024.10.05.01.02.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 05 Oct 2024 01:02:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 358b6c4c-82f0-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728115367; x=1728720167; 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=2VvoFcFmefRJU1HuxenOdSFJ/2kcwMu91HjlIvgFZeI=;
        b=Tdbd08+S5gveKR9DvvlltzDR/ME/HcOFpBIYJQQkktP0FLjsjOqerIKKAZpJ7eshLi
         zoHaaPeWcEAtXXCDkCwrQWQPIMRJSMmepoJJkO13QJAs4txiSUgXCL3+8NZpZZ4PKOxS
         xiJ3FJ/d7OuZyQQTXfZH/mlM1efPZyzbopNho=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728115367; x=1728720167;
        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=2VvoFcFmefRJU1HuxenOdSFJ/2kcwMu91HjlIvgFZeI=;
        b=SjEEQl7G3KwY9SwzLZog37iJ6xMkltcOsy3Fa2IvEaTrgo/AQZG41uM+oTP+0CZE8S
         nDvJ/v+kLCeDTtIa2lPE2n1mBFyuPpHGbMwaFyWuTzoHIpi9yejJEUFL9eAvt3rSp9EU
         /6bOs7b7tsKhPvS8fraW3o86S95kSttovqARgX3Jg7N6BvG0auqWo91IBuQDzsTUI2Ow
         BNUvNPuYyonjKX/Mmo8hKH6MFtkO2fSfwB8yl/1nJn+uYbdR/52OKDKCpawwimxP6DeI
         eJb1ZrKjPqS+bRJLEATLzsRceDSF7PU5dLe878Af6vhk487UoaWargabSLDziIgx6fLe
         MiEA==
X-Gm-Message-State: AOJu0Yz6JgmQ12EVofcQlSYU/2RRS5R3dvzvlm0T+Ko2B+/78OfZKyWk
	n+ZD2arWBuFXRmHqKlU7HkCiZCZqQwKV1XTuJTTyyBpTwCe8dh1SgrSvTdkNboD/VJCMrXsCOEu
	K
X-Google-Smtp-Source: AGHT+IE/ex3gAvaoQoDsolPdQnnz7bSILe5y58hxvyMme+8ID/HK+5cYJywbd4D45UUouyyHvpLqxQ==
X-Received: by 2002:a17:907:9723:b0:a8a:754a:e1c1 with SMTP id a640c23a62f3a-a990a04bac6mr944693566b.8.1728115366304;
        Sat, 05 Oct 2024 01:02:46 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 1/3] x86/boot: create a C bundle for 32 bit boot code and use it
Date: Sat,  5 Oct 2024 09:02:31 +0100
Message-Id: <20241005080233.1248850-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The current method to include 32 bit C boot code is:
- compile each function we want to use into a separate object file;
- each function is compiled with -fpic option;
- convert these object files to binary files. This operation removes GOP
  which we don't want in the executable;
- a small assembly part in each file add the entry point;
- code can't have external references, all possible variables are passed
  by value or pointer;
- include these binary files in head.S.

There are currently some limitations:
- code is compiled separately, it's not possible to share a function
  (like memcpy) between different functions to use;
- although code is compiled with -fpic there's no certainty there are
  no relocations, specifically data ones. This can lead into hard to
  find bugs;
- it's hard to add a simple function;
- having to pass external variables makes hard to do multiple things
  otherwise functions would require a lot of parameters so code would
  have to be split into multiple functions which is not easy;
- we generate a single text section containing data and code, not a
  problem at the moment but if we want to add W^X protection it's
  not helpful.

Current change extends the current process:
- all object files are linked together before getting converted making
  possible to share code between the function we want to call;
- a single object file is generated with all functions to use and
  exported symbols to easily call;
- variables to use are declared in linker script and easily used inside
  C code. Declaring them manually could be annoying but makes also
  easier to check them. Using external pointers can be still an issue if
  they are not fixed. If an external symbol is not declared this gives a
  link error;
- linker script put data (bss and data) into a separate section and
  check that that section is empty making sure code is W^X compatible;

Some details of the implementation:
- C code is compiled with -fpic flags (as before);
- object files from C code are linked together;
- the single bundled object file is linked with 2 slightly different
  script files to generate 2 bundled object files;
- the 2 bundled object files are converted to binary removing the need
  for global offset tables;
- a Python script is used to generate assembly source from the 2
  binaries;
- the single assembly file is compiled to generate final bundled object
  file;
- to detect possible unwanted relocation in data/code code is generated
  with different addresses. This is enforced starting .text section at
  different positions and adding a fixed "gap" at the beginning.
  This makes sure code and data is position independent;
- to detect used symbols in data/code symbols are placed in .text
  section at different offsets (based on the line in the linker script).
  This is needed as potentially a reference to a symbol is converted to
  a reference to the containing section so multiple symbols could be
  converted to reference to same symbol (section name) and we need to
  distinguish them;
- to avoid relocations
- --orphan-handling=error option to linker is used to make sure we
  account for all possible sections from C code;

Current limitations:
- the main one is the lack of support for 64 bit code. It would make
  sure that even the code used for 64 bit (at the moment EFI code) is
  code and data position independent. We cannot assume that code that
  came from code compiled for 32 bit and compiled for 64 bit is code and
  data position independent, different compiler options lead to
  different code/data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 .gitignore                                    |   5 +-
 xen/arch/x86/boot/Makefile                    |  36 +++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  45 +++-
 xen/arch/x86/boot/cmdline.c                   |  12 --
 xen/arch/x86/boot/head.S                      |  12 --
 xen/arch/x86/boot/reloc.c                     |  14 --
 xen/tools/combine_two_binaries                | 195 ++++++++++++++++++
 7 files changed, 263 insertions(+), 56 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (63%)
 create mode 100755 xen/tools/combine_two_binaries

diff --git a/.gitignore b/.gitignore
index d88be80b28..d538c6adb1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -247,11 +247,10 @@ xen/.config
 xen/.config.old
 xen/.xen.elf32
 xen/System.map
-xen/arch/x86/boot/mkelf32
+xen/arch/x86/boot/build32.*.lds
 xen/arch/x86/boot/cmdline.S
+xen/arch/x86/boot/mkelf32
 xen/arch/x86/boot/reloc.S
-xen/arch/x86/boot/*.bin
-xen/arch/x86/boot/*.lnk
 xen/arch/x86/efi.lds
 xen/arch/x86/efi/check.efi
 xen/arch/x86/efi/mkreloc
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index ff0f965876..da87179fef 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,4 +1,4 @@
-obj-bin-y += head.o
+obj-bin-y += head.o cbundle.o
 
 head-bin-objs := cmdline.o reloc.o
 
@@ -9,7 +9,6 @@ targets   += $(head-bin-objs)
 head-bin-objs := $(addprefix $(obj)/,$(head-bin-objs))
 
 $(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(head-bin-objs:.o=.bin)
 
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
@@ -24,10 +23,29 @@ $(head-bin-objs): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
 
-%.bin: %.lnk
-	$(OBJCOPY) -j .text -O binary $< $@
-
-%.lnk: %.o $(src)/build32.lds
-	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -N -T $(filter %.lds,$^) -o $@ $<
-
-clean-files := *.lnk *.bin
+$(obj)/build32.final.lds: AFLAGS-y += -DFINAL
+$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S
+	$(call if_changed_dep,cpp_lds_S)
+
+$(obj)/%.x64.o: $(src)/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+
+$(obj)/cbundle.o: $(head-bin-objs) $(obj)/build32.other.lds $(obj)/build32.final.lds
+## link all object files together
+	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -r -o $(obj)/cbundle.tmp.o $(head-bin-objs)
+## link twice with 2 different layouts
+	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) --orphan-handling=error -N -T $(obj)/build32.other.lds -o $@.1.o $(obj)/cbundle.tmp.o
+	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) --orphan-handling=error -N -T $(obj)/build32.final.lds -Map $(obj)/cbundle.map -o $@.2.o $(obj)/cbundle.tmp.o
+## extract binaries from them
+	$(OBJCOPY) -j .text -O binary $@.1.o $@.1.bin
+	$(OBJCOPY) -j .text -O binary $@.2.o $@.2.bin
+## generate final assembly file combining and checking above binaries
+	$(PYTHON) $(srctree)/tools/combine_two_binaries \
+		--script $(obj)/build32.final.lds \
+		--bin1 $@.1.bin --bin2 $@.2.bin \
+		--map $(obj)/cbundle.map --exports cmdline_parse_early,reloc \
+		--section-header '.section .init.text, "ax", @progbits' \
+		--output $(obj)/cbundle.s
+	$(CC) -c $(obj)/cbundle.s -o $@.tmp
+	rm -f $(obj)/cbundle.tmp.o $@.1.o $@.2.o $@.1.bin $@.2.bin $(obj)/cbundle.map $(obj)/cbundle.s $@
+	mv $@.tmp $@
diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
similarity index 63%
rename from xen/arch/x86/boot/build32.lds
rename to xen/arch/x86/boot/build32.lds.S
index 56edaa727b..fe422e3d25 100644
--- a/xen/arch/x86/boot/build32.lds
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -15,22 +15,54 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-ENTRY(_start)
+#undef ENTRY
+
+#ifdef FINAL
+# define GAP 0
+# define MULT 0
+# define TEXT_START
+#else
+# define GAP 0x010200
+# define MULT 1
+# define TEXT_START 0x408020
+#endif
+# define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
+
+ENTRY(dummy_start)
 
 SECTIONS
 {
-  /* Merge code and data into one section. */
-  .text : {
+  /* Merge code and read-only data into one section. */
+  .text TEXT_START : {
+        /* Silence linker warning, we are not going to use it */
+        dummy_start = .;
+
+        /* Declare below any symbol name needed.
+         * Each symbol should be on its own line.
+         * It looks like a tedious work but we make sure the things we use.
+         * Potentially they should be all variables. */
+        DECLARE_IMPORT(__base_relocs_start);
+        DECLARE_IMPORT(__base_relocs_end);
+        . = . + GAP;
         *(.text)
         *(.text.*)
-        *(.data)
-        *(.data.*)
         *(.rodata)
         *(.rodata.*)
+  }
+
+  /* Writeable data sections. Check empty.
+   * We collapse all into code section and we don't want it to be writeable. */
+  .data : {
+        *(.data)
+        *(.data.*)
         *(.bss)
         *(.bss.*)
   }
-
+  /DISCARD/ : {
+       *(.comment)
+       *(.comment.*)
+       *(.note.*)
+  }
   /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
   .got : {
         *(.got)
@@ -64,3 +96,4 @@ ASSERT(SIZEOF(.igot.plt) == 0,    ".igot.plt non-empty")
 ASSERT(SIZEOF(.iplt) == 0,        ".iplt non-empty")
 ASSERT(SIZEOF(.plt) == 0,         ".plt non-empty")
 ASSERT(SIZEOF(.rel) == 0,         "leftover relocations")
+ASSERT(SIZEOF(.data) == 0,        "we don't want data")
diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index fc9241ede9..196c580e91 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -18,18 +18,6 @@
  * Linux kernel source (linux/lib/string.c).
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax      = &cmdline,
- *   - %edx      = &early_boot_opts.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  cmdline_parse_early      \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/kconfig.h>
 #include <xen/macros.h>
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index c4de1dfab5..e0776e3896 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -759,18 +759,6 @@ trampoline_setup:
         /* Jump into the relocated trampoline. */
         lret
 
-        /*
-         * cmdline and reloc are written in C, and linked to be 32bit PIC with
-         * entrypoints at 0 and using the fastcall convention.
-         */
-FUNC_LOCAL(cmdline_parse_early)
-        .incbin "cmdline.bin"
-END(cmdline_parse_early)
-
-FUNC_LOCAL(reloc)
-        .incbin "reloc.bin"
-END(reloc)
-
 ENTRY(trampoline_start)
 #include "trampoline.S"
 ENTRY(trampoline_end)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 8c58affcd9..94b078d7b1 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -12,20 +12,6 @@
  *    Daniel Kiper <daniel.kiper@oracle.com>
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax       = MAGIC,
- *   - %edx       = INFORMATION_ADDRESS,
- *   - %ecx       = TOPMOST_LOW_MEMORY_STACK_ADDRESS.
- *   - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  reloc                    \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/macros.h>
 #include <xen/types.h>
diff --git a/xen/tools/combine_two_binaries b/xen/tools/combine_two_binaries
new file mode 100755
index 0000000000..beb5e62156
--- /dev/null
+++ b/xen/tools/combine_two_binaries
@@ -0,0 +1,195 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+import argparse
+import re
+import struct
+import sys
+
+parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
+parser.add_argument('--script', dest='script',
+                    required=True,
+                    help='Linker script for extracting symbols')
+parser.add_argument('--bin1', dest='bin1',
+                    required=True,
+                    help='First binary')
+parser.add_argument('--bin2', dest='bin2',
+                    required=True,
+                    help='Second binary')
+parser.add_argument('--output', dest='output',
+                    help='Output file')
+parser.add_argument('--map', dest='mapfile',
+                    help='Map file to read for symbols to export')
+parser.add_argument('--exports', dest='exports',
+                    help='Symbols to export')
+parser.add_argument('--section-header', dest='section_header',
+                    default='.text',
+                    help='Section header declaration')
+args = parser.parse_args()
+
+gap = 0x010200
+text_diff = 0x408020
+
+# Parse linker script for external symbols to use.
+symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')
+symbols = {}
+lines = {}
+for line in open(args.script):
+    m = symbol_re.match(line)
+    if not m:
+        continue
+    (name, line_num) = (m.group(1), int(m.group(2)))
+    if line_num == 0:
+        raise Exception("Invalid line number found:\n\t" + line)
+    if line_num in symbols:
+        raise Exception("Symbol with this line already present:\n\t" + line)
+    if name in lines:
+        raise Exception("Symbol with this name already present:\n\t" + name)
+    symbols[line_num] = name
+    lines[name] = line_num
+
+exports = []
+if args.exports is not None:
+    exports = dict([(name, None) for name in args.exports.split(',')])
+
+# Parse mapfile, look for ther symbols we want to export.
+if args.mapfile is not None:
+    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
+    for line in open(args.mapfile):
+        m = symbol_re.match(line)
+        if not m or m.group(2) not in exports:
+            continue
+        addr = int(m.group(1), 16)
+        exports[m.group(2)] = addr
+for (name, addr) in exports.items():
+    if addr is None:
+        raise Exception("Required export symbols %s not found" % name)
+
+file1 = open(args.bin1, 'rb')
+file2 = open(args.bin2, 'rb')
+file1.seek(0, 2)
+size1 = file1.tell()
+file2.seek(0, 2)
+size2 = file2.tell()
+if size1 > size2:
+    file1, file2 = file2, file1
+    size1, size2 = size2, size1
+if size2 != size1 + gap:
+    raise Exception('File sizes do not match')
+
+file1.seek(0, 0)
+data1 = file1.read(size1)
+file2.seek(gap, 0)
+data2 = file2.read(size1)
+
+max_line = max(symbols.keys())
+
+def to_int32(n):
+    '''Convert a number to signed 32 bit integer truncating if needed'''
+    mask = (1 << 32) - 1
+    h = 1 << 31
+    return (n & mask) ^ h - h
+
+i = 0
+references = {}
+internals = 0
+while i <= size1 - 4:
+    n1 = struct.unpack('<I', data1[i:i+4])[0]
+    n2 = struct.unpack('<I', data2[i:i+4])[0]
+    i += 1
+    # The two numbers are the same, no problems
+    if n1 == n2:
+        continue
+    # Try to understand why they are different
+    diff = to_int32(n1 - n2)
+    if diff == -gap: # this is an internal relocation
+        pos = i - 1
+        print(("Internal relocation found at position %#x "
+               "n1=%#x n2=%#x diff=%#x") % (pos, n1, n2, diff),
+              file=sys.stderr)
+        i += 3
+        internals += 1
+        if internals >= 10:
+            break
+        continue
+    # This is a relative relocation to a symbol, accepted, code/data is
+    # relocatable.
+    if diff < gap and diff >= gap - max_line:
+        n = gap - diff
+        symbol = symbols.get(n)
+        # check we have a symbol
+        if symbol is None:
+            raise Exception("Cannot find symbol for line %d" % n)
+        pos = i - 1
+        print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
+        i += 3
+        references[pos] = symbol
+        continue
+    # First byte is the same, move to next byte
+    if diff & 0xff == 0 and i <= size1 - 4:
+       continue
+    # Probably a type of relocation we don't want or support
+    pos = i - 1
+    suggestion = ''
+    symbol = symbols.get(-diff - text_diff)
+    if symbol is not None:
+        suggestion = " Maybe %s is not defined as hidden?" % symbol
+    raise Exception(("Unexpected difference found at %#x "
+                     "n1=%#x n2=%#x diff=%#x gap=%#x.%s") % \
+                     (pos, n1, n2, diff, gap, suggestion))
+if internals != 0:
+    raise Exception("Previous relocations found")
+
+def line_bytes(buf, out):
+    '''Output an assembly line with all bytes in "buf"'''
+    if type(buf) == str:
+        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
+    else:
+        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)
+
+def part(start, end, out):
+    '''Output bytes of "data" from "start" to "end"'''
+    while start < end:
+        e = min(start + 16, end)
+        line_bytes(data1[start:e], out)
+        start = e
+
+def reference(pos, out):
+    name = references[pos]
+    n = struct.unpack('<I', data1[pos:pos+4])[0]
+    sign = '+'
+    if n >= (1 << 31):
+        n -= (1 << 32)
+    n += pos
+    if n < 0:
+        n = -n
+        sign = '-'
+    print("\t.hidden %s\n\t.long %s %s %#x - ." % (name, name, sign, n),
+          file=out)
+
+def output(out):
+    prev = 0
+    exports_by_addr = {}
+    for (sym, addr) in exports.items():
+        exports_by_addr.setdefault(addr, []).append(sym)
+    positions = list(references.keys())
+    positions += list(exports_by_addr.keys())
+    for pos in sorted(positions):
+        part(prev, pos, out)
+        prev = pos
+        if pos in references:
+            reference(pos, out)
+            prev = pos + 4
+        if pos in exports_by_addr:
+            for sym in exports_by_addr[pos]:
+                print("\t.global %s\n\t.hidden %s\n%s:" % (sym, sym, sym),
+                      file=out)
+    part(prev, size1, out)
+
+out = sys.stdout
+if args.output is not None:
+    out = open(args.output, 'w')
+print('\t' + args.section_header, file=out)
+output(out)
+print('\n\t.section\t.note.GNU-stack,"",@progbits', file=out)
+out.flush()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 08:03:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 08:03:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810795.1223546 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swzkZ-00051B-Og; Sat, 05 Oct 2024 08:02:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810795.1223546; Sat, 05 Oct 2024 08: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 1swzkZ-00050P-Kj; Sat, 05 Oct 2024 08:02:51 +0000
Received: by outflank-mailman (input) for mailman id 810795;
 Sat, 05 Oct 2024 08:02: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=+Cfp=RB=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swzkY-0004jU-GH
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 08:02:50 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 365b5edc-82f0-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 10:02:48 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a99415adecaso12417466b.0
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 01:02:48 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9933db9c5bsm84152366b.162.2024.10.05.01.02.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 05 Oct 2024 01:02:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 365b5edc-82f0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728115368; x=1728720168; 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=Ozqjksv56bCDRdCFqZJpI4TNrJMEv0iKvyZ9olNrAw8=;
        b=I/82Z4rezTzNX6WDj6SgSLjrgBuibZletFoCxjGjR4TEu4wvXDq8XnD3zuqDWA4/9V
         S/VnuZBMaO8Ar0GLEu/qX0xmnazAkPR2qVKlL+4rjYq+g3XaCtAiT2IDdZrIEVmbjtmE
         cftNkdVKhLB8uPPpyxQP4+FiQWAj/gDxEx3GQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728115368; x=1728720168;
        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=Ozqjksv56bCDRdCFqZJpI4TNrJMEv0iKvyZ9olNrAw8=;
        b=pcp7ersHcFuNYNhlOa3nwmwlPNSiPQiYFMDtyJT2zgvdiAk3CfV+LKlJ2Opm/rYlIp
         ivjwlEBtZNE35xIztH0WbFMbA3tdE1JjcY3iA7sQjNCV4LO73o+90ruKXAdc/Y9u/MiR
         umS/4g+1UNXqNVxVY2pv0jfuUwvveoq5TqM+JxYMNEOs3NYZeJD50QG3qAz5cTVSeTdK
         +oFZ2PuhwscGEX55s4maSWxq6RhJJaul04EOcx5n5LcfsGWu1ONhh0KQbVYo3VdZ/936
         j8F0XmFjV0EfJSfkKhuDXeY3eU2+WCLYEC4O5k1dsacC2bQEhpSbj+dBEHXHrX0n5YLl
         ap3w==
X-Gm-Message-State: AOJu0Yy99vQgFCbsONwwdtAN3fVsCMaOFo0/TYDu3SkSUuyjspc2sE5x
	2tgBZY0iw9PV99KM1WeVNhl1Fj+GqYJI7LNqvm97CuHLM8sUkS5LgMAipVpD7oQvuMNRPDGYBQL
	R
X-Google-Smtp-Source: AGHT+IH6lpvgkk/MfIqEQ6PSrdBNBI4p476VJwnlh8ZlFhZ1ceiUnGQFtnqxWj+UzsYa4J2DzrMwMA==
X-Received: by 2002:a17:907:368b:b0:a8d:6372:2d38 with SMTP id a640c23a62f3a-a990a05eeb9mr832149566b.18.1728115367967;
        Sat, 05 Oct 2024 01:02:47 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
Date: Sat,  5 Oct 2024 09:02:32 +0100
Message-Id: <20241005080233.1248850-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/Makefile           |  6 +++---
 xen/arch/x86/boot/build32.lds.S      |  5 +++++
 xen/arch/x86/boot/head.S             | 23 +--------------------
 xen/arch/x86/boot/reloc-trampoline.c | 30 ++++++++++++++++++++++++++++
 xen/arch/x86/efi/efi-boot.h          | 15 ++------------
 5 files changed, 41 insertions(+), 38 deletions(-)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index da87179fef..c16c4a8595 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,6 +1,6 @@
-obj-bin-y += head.o cbundle.o
+obj-bin-y += head.o cbundle.o reloc-trampoline.x64.o
 
-head-bin-objs := cmdline.o reloc.o
+head-bin-objs := cmdline.o reloc.o reloc-trampoline.o
 
 nocov-y   += $(head-bin-objs)
 noubsan-y += $(head-bin-objs)
@@ -43,7 +43,7 @@ $(obj)/cbundle.o: $(head-bin-objs) $(obj)/build32.other.lds $(obj)/build32.final
 	$(PYTHON) $(srctree)/tools/combine_two_binaries \
 		--script $(obj)/build32.final.lds \
 		--bin1 $@.1.bin --bin2 $@.2.bin \
-		--map $(obj)/cbundle.map --exports cmdline_parse_early,reloc \
+		--map $(obj)/cbundle.map --exports cmdline_parse_early,reloc,reloc_trampoline32 \
 		--section-header '.section .init.text, "ax", @progbits' \
 		--output $(obj)/cbundle.s
 	$(CC) -c $(obj)/cbundle.s -o $@.tmp
diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index fe422e3d25..2d10a75fb1 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -43,6 +43,11 @@ SECTIONS
          * Potentially they should be all variables. */
         DECLARE_IMPORT(__base_relocs_start);
         DECLARE_IMPORT(__base_relocs_end);
+        DECLARE_IMPORT(__trampoline_rel_start);
+        DECLARE_IMPORT(__trampoline_rel_stop);
+        DECLARE_IMPORT(__trampoline_seg_start);
+        DECLARE_IMPORT(__trampoline_seg_stop);
+        DECLARE_IMPORT(trampoline_phys);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0776e3896..ade2c5c43d 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -706,28 +706,7 @@ trampoline_setup:
         mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
 
         /* Apply relocations to bootstrap trampoline. */
-        mov     sym_esi(trampoline_phys), %edx
-        lea     sym_esi(__trampoline_rel_start), %edi
-        lea     sym_esi(__trampoline_rel_stop), %ecx
-1:
-        mov     (%edi), %eax
-        add     %edx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
-
-        /* Patch in the trampoline segment. */
-        shr     $4,%edx
-        lea     sym_esi(__trampoline_seg_start), %edi
-        lea     sym_esi(__trampoline_seg_stop), %ecx
-1:
-        mov     (%edi), %eax
-        mov     %dx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
+        call    reloc_trampoline32
 
         /* Do not parse command line on EFI platform here. */
         cmpb    $0, sym_esi(efi_platform)
diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
new file mode 100644
index 0000000000..9509dfa28a
--- /dev/null
+++ b/xen/arch/x86/boot/reloc-trampoline.c
@@ -0,0 +1,30 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/compiler.h>
+#include <xen/stdint.h>
+#include <asm/trampoline.h>
+
+extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+
+#if defined(__i386__)
+void reloc_trampoline32(void)
+#elif defined (__x86_64__)
+void reloc_trampoline64(void)
+#else
+#error Unknow architecture
+#endif
+{
+    unsigned long phys = trampoline_phys;
+    const int32_t *trampoline_ptr;
+
+    /* Apply relocations to trampoline. */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f3443364..1acceec471 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned long delta)
     }
 }
 
-extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+void reloc_trampoline64(void);
 
 static void __init relocate_trampoline(unsigned long phys)
 {
-    const int32_t *trampoline_ptr;
-
     trampoline_phys = phys;
 
     if ( !efi_enabled(EFI_LOADER) )
         return;
 
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+    reloc_trampoline64();
 }
 
 static void __init place_string(u32 *addr, const char *s)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 08:03:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 08:03:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810793.1223531 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swzkY-0004jl-9x; Sat, 05 Oct 2024 08:02:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810793.1223531; Sat, 05 Oct 2024 08: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 1swzkY-0004jb-6w; Sat, 05 Oct 2024 08:02:50 +0000
Received: by outflank-mailman (input) for mailman id 810793;
 Sat, 05 Oct 2024 08:02: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=+Cfp=RB=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swzkW-0004jU-5l
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 08:02:48 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 34d09608-82f0-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 10:02:46 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a93c1cc74fdso484341366b.3
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 01:02:46 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9933db9c5bsm84152366b.162.2024.10.05.01.02.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 05 Oct 2024 01:02:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34d09608-82f0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728115365; x=1728720165; 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=DSOSkFDzcZVeK0xanaV/TWfr6wgMeDJVU7sjkkJBLCI=;
        b=RhpQRZQ6aVKO2lvMav6OZuSzKiKxvW5SG5F5bTcJ0CWFkh40HUr96iCdGVTPA3Z0PO
         r92HngNbcc7XTbQu2V5M9OwvMrFLx5kSl0VpfzNkViSb3FSz+xRj6TrTBVTOhvmgn114
         Bmy5elgq/1BMP5qP3wDgtStgDhshQFc4Dh6jk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728115365; x=1728720165;
        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=DSOSkFDzcZVeK0xanaV/TWfr6wgMeDJVU7sjkkJBLCI=;
        b=nYynnyDBtXI7pmy9+ZYjozheXwynZrhzeueVytK389zE6LAmSr6+m4drifsus+I+19
         ft96HjUXCRBqddgTah19beg6aa/t4vFUDw4tbQEWSAwXEI2Ust4IGBA7nS9uYrjbZn4v
         gOgaudFvIVqZrJ8OpeG9wi1sDogXySZw/988m+juuyezyVaBptbOD/UDqCttuvAb6h4E
         cXBLJZxBM05wIuzhlbZAN7dyLbGe38diDJrdUNBRReH6dX9HuzKj1T8BwoTNWT5gF3r3
         8qjWP9ACCHBAaVfciBhB3qxohJ+JDTs8cHRB1cN4lZp9xPwRnr7KAH513wIer772lPrv
         TSCQ==
X-Gm-Message-State: AOJu0YygxbqgmGMXPokz/iTnYvIE0BEy6nSwm3kEvgNstRgthDyhZDtp
	B+tP85wkdQLohIoQtyvD931GwVuYB0PeoOPOcixz++4vV5vYDCu7Do5rqZf6TBHpLr1Zc0+sxe2
	b
X-Google-Smtp-Source: AGHT+IFBF06wYetgIb/JTVH0ZkrEvUcoroa1qpDzGu8T94L2bnAAyBhe6/C9X2lZjMSx0x5PMUFYgg==
X-Received: by 2002:a17:907:9281:b0:a90:c411:24e0 with SMTP id a640c23a62f3a-a991bd0bbf8mr528524066b.23.1728115365220;
        Sat, 05 Oct 2024 01:02:45 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH 0/3] Reuse 32 bit C code more safely
Date: Sat,  5 Oct 2024 09:02:30 +0100
Message-Id: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

First version as no RFC.

This series attempt to:
- use more C code, that is replace some assembly code with C;
- avoid some code duplication between C and assembly;
- prevent some issues having relocations in C code.

The idea is extending the current C to binary code conversion
done for 32 bit C code called from head.S making sure relocations
are safe and allowing external symbols usage from C code.

Note that, as an addition, scripts generating code check for no
data to allow code and data separation.

More details of the implementation are in commit message 1/3,
which is the largest patch.
Patch 2/3 reuses code to relocate the trampoline between 32 and 64 bit.
Patch 3/3 moves some code from assembly to C.

Other RFC commits were excluded, I didn't manage to entangle the issues
sharing headers between 32 and 64 bits.
Since RFC code was more tested, also with CI and some incompatibility
were fixed. On that it's weird that we need Python 3.8 for Qemu but we
still use Python 2 for Xen. Shouldn't we bump requirement to Python 3
even for Xen?

Code boot successfully using:
- BIOS boot;
- EFI boot with Grub2 and ELF file;
- direct EFI boot without Grub.

Code is currently based on "staging" branch, currently commit
6b20755c24ccd69d2482b45dfb9193940cdc346e.

Frediano Ziglio (3):
  x86/boot: create a C bundle for 32 bit boot code and use it
  x86/boot: Reuse code to relocate trampoline
  x86/boot: Use boot_vid_info and trampoline_phys variables directly
    from C code

 .gitignore                                    |   5 +-
 xen/arch/x86/boot/Makefile                    |  38 +++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  51 ++++-
 xen/arch/x86/boot/cmdline.c                   |  12 --
 xen/arch/x86/boot/head.S                      |  49 +----
 xen/arch/x86/boot/reloc-trampoline.c          |  30 +++
 xen/arch/x86/boot/reloc.c                     |  33 +--
 xen/arch/x86/efi/efi-boot.h                   |  15 +-
 xen/tools/combine_two_binaries                | 195 ++++++++++++++++++
 9 files changed, 314 insertions(+), 114 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (57%)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
 create mode 100755 xen/tools/combine_two_binaries

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 08:03:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 08:03:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810796.1223561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1swzkb-0005Qa-3a; Sat, 05 Oct 2024 08:02:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810796.1223561; Sat, 05 Oct 2024 08:02: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 1swzkb-0005QT-0L; Sat, 05 Oct 2024 08:02:53 +0000
Received: by outflank-mailman (input) for mailman id 810796;
 Sat, 05 Oct 2024 08:02: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=+Cfp=RB=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1swzkZ-0004jU-9N
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 08:02:51 +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 36dd114d-82f0-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 10:02:49 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a98f6f777f1so370744266b.2
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 01:02:49 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9933db9c5bsm84152366b.162.2024.10.05.01.02.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 05 Oct 2024 01:02:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 36dd114d-82f0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728115369; x=1728720169; 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=AkgUENXQdE4QNGEH0p3QPPSrj4g3gLBF4EM9E5qv2+o=;
        b=Veiw+osfA1vrHrn5cQHIbvkCqiXUGZgJ2lBqpFrIU2J7wmhZwLwb023od9yO9EmoQ2
         BX74MinEZ/pL00pBn8hFNWghjO5DuKchsGj5wiHvXimfT2PzZ4VNNDWRlYjnXOE9+RwJ
         CgziziehXIs4KtMZo1o3r/PhkmiLSyDTM+6xg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728115369; x=1728720169;
        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=AkgUENXQdE4QNGEH0p3QPPSrj4g3gLBF4EM9E5qv2+o=;
        b=wXVw9VqDTArLeUB5pmKgMpP1YciwpFgTpb3f/GK3pcmI/uo4iJutatlUEqIQizPgEs
         sRf4ckdBNYmGXw9+DN5LQkD2tYhiMOyyRkKjY13Mz/U6OOcfHqZV7oBKBStglLHXWZzx
         GOUq0tzdUyHi8jHtngxY1M0Qw/7n8oQfUCV15NIgdIHkQ4Gxl5rCY+qvk9Z7JXVe/wH0
         PcVFjCqmJVPAhwCqa1ig+CYvrj/iHf+8vi4zPIWGaJeSGuOcI4LPv+8WSgDsaNy71URr
         XPDDMR3ePW6pNeGmR0xx3I0gKFU6zhyVJuOfkb2HfiUjEZUM0HQYRHrkxsYB8L607E5D
         GSeA==
X-Gm-Message-State: AOJu0YyZZDUWj5CQxeGUDQ0ZudWmuqcN/mkBjSod750Q9LN/TEWno/0r
	tGbPsLSAfQeKtyq++YwU6OPJhwh893mX/cFedkGJ4efrJ/22hjTO5/P+jiUJYwVyPLLeXbl84KV
	I
X-Google-Smtp-Source: AGHT+IGD10/+6BTK/Sv5XM2Jfi9l3GfoJjMZkSYzWZkmpgTC0u0ELD7e4hZqsapGvK8h5xPPOjmnUg==
X-Received: by 2002:a17:907:9492:b0:a8d:2ec3:94f4 with SMTP id a640c23a62f3a-a991c07445amr555138766b.54.1728115368882;
        Sat, 05 Oct 2024 01:02:48 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH 3/3] x86/boot: Use boot_vid_info and trampoline_phys variables directly from C code
Date: Sat,  5 Oct 2024 09:02:33 +0100
Message-Id: <20241005080233.1248850-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/build32.lds.S |  1 +
 xen/arch/x86/boot/head.S        | 14 +-------------
 xen/arch/x86/boot/reloc.c       | 19 ++++++++++---------
 3 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 2d10a75fb1..6598a24e04 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -48,6 +48,7 @@ SECTIONS
         DECLARE_IMPORT(__trampoline_seg_start);
         DECLARE_IMPORT(__trampoline_seg_stop);
         DECLARE_IMPORT(trampoline_phys);
+        DECLARE_IMPORT(boot_vid_info);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index ade2c5c43d..dcda91cfda 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,22 +510,10 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Get bottom-most low-memory stack address. */
-        mov     sym_esi(trampoline_phys), %ecx
-        add     $TRAMPOLINE_SPACE,%ecx
-
-#ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %edx
-#else
-        xor     %edx, %edx
-#endif
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
-        push    %edx                /* Boot video info to be filled from MB2. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx) using fastcall. */
         call    reloc
-        add     $4, %esp
 
 #ifdef CONFIG_PVH_GUEST
         cmpb    $0, sym_esi(pvh_boot)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 94b078d7b1..8527fa8d01 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -19,6 +19,9 @@
 #include <xen/kconfig.h>
 #include <xen/multiboot.h>
 #include <xen/multiboot2.h>
+#include <xen/page-size.h>
+
+#include <asm/trampoline.h>
 
 #include <public/arch-x86/hvm/start_info.h>
 
@@ -176,7 +179,7 @@ static multiboot_info_t *mbi_reloc(uint32_t mbi_in, memctx *ctx)
     return mbi_out;
 }
 
-static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx *ctx)
+static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 {
     const multiboot2_fixed_t *mbi_fix = _p(mbi_in);
     const multiboot2_memory_map_t *mmap_src;
@@ -185,7 +188,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
     memory_map_t *mmap_dst;
     multiboot_info_t *mbi_out;
 #ifdef CONFIG_VIDEO
-    struct boot_video_info *video = NULL;
+    struct boot_video_info *video = &boot_vid_info;
 #endif
     uint32_t ptr;
     unsigned int i, mod_idx = 0;
@@ -290,12 +293,11 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 
 #ifdef CONFIG_VIDEO
         case MULTIBOOT2_TAG_TYPE_VBE:
-            if ( video_out )
+            if ( video )
             {
                 const struct vesa_ctrl_info *ci;
                 const struct vesa_mode_info *mi;
 
-                video = _p(video_out);
                 ci = (const void *)get_mb2_data(tag, vbe, vbe_control_info);
                 mi = (const void *)get_mb2_data(tag, vbe, vbe_mode_info);
 
@@ -321,7 +323,6 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
             if ( (get_mb2_data(tag, framebuffer, framebuffer_type) !=
                   MULTIBOOT2_FRAMEBUFFER_TYPE_RGB) )
             {
-                video_out = 0;
                 video = NULL;
             }
             break;
@@ -346,10 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
-            uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in)
 {
-    memctx ctx = { trampoline };
+    /* Get bottom-most low-memory stack address. */
+    memctx ctx = { (uint32_t)((long)trampoline_phys + TRAMPOLINE_SPACE) };
 
     switch ( magic )
     {
@@ -357,7 +358,7 @@ void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
         return mbi_reloc(in, &ctx);
 
     case MULTIBOOT2_BOOTLOADER_MAGIC:
-        return mbi2_reloc(in, video_info, &ctx);
+        return mbi2_reloc(in, &ctx);
 
     case XEN_HVM_START_MAGIC_VALUE:
         if ( IS_ENABLED(CONFIG_PVH_GUEST) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 08:31:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 08:31:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810826.1223571 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx0Cd-0002ik-43; Sat, 05 Oct 2024 08:31:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810826.1223571; Sat, 05 Oct 2024 08: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 1sx0Cd-0002id-0N; Sat, 05 Oct 2024 08:31:51 +0000
Received: by outflank-mailman (input) for mailman id 810826;
 Sat, 05 Oct 2024 08:31: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=E/Lu=RB=gmail.com=ubizjak@srs-se1.protection.inumbo.net>)
 id 1sx0Cb-0002iX-Dj
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 08:31: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 4272f4d8-82f4-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 10:31:47 +0200 (CEST)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2fadb636abaso29357331fa.3
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 01:31:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4272f4d8-82f4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728117106; x=1728721906; 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=70cU5jNP52zmkSWZHO+lBdHOcE1V/JTH2eNm2kkh0zg=;
        b=khDTdkjarS7eBKPre7SsYFsxHF6beh4Cut6vNM8Qle4lGW+ZIPsAj4OHm+MhAQWnbo
         pDUfcfFSftmA8DyQ03NZG1y5pdglkZe/vBIRIdhmcYjaTTOBgLJLdGhBeWPL87J/kVfF
         +E6z+4Ck0VWNuOeAp9rTmAuLlTdHG2AVe1rIa7ybyDBvwFlgCUhnV9e08F3wac2AQ8o+
         yVlHGPHfX2Ij/VDZZ8PEiBNjun5R1NyNIKDoBAYQoYR63RKYu4jxq4E9MgzIJFQ5gCN5
         2bsu3PJ89MBjcXLdG/HupqJaanQB1wiWBU7jngYKiw0ydTJoDkGhsiUAi1ilD0k/WEl0
         7S2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728117106; x=1728721906;
        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=70cU5jNP52zmkSWZHO+lBdHOcE1V/JTH2eNm2kkh0zg=;
        b=vhtTRGeBI0//4Ntg7lNaxuPfkNVCdob6AUlCLZ65hmKkk3g87jWuLuGNtiUjM/li0T
         gmWOSNPOY1Waqx9GNLbgGR8C3Qtd3RlHRZJWAhTYJo1SD9qxBU+RTb2GdUN+VS97m+Ay
         BwHJHhXKHK4+LKSOJ7gbdW4H2brPOu8mnOiLHe8+dxN2OWJzi/wPGFFCT9lPT1qzy6ev
         xHBqyuH4oc5WsK1/6k1GebbhtePmD7dXODnqKX0GUdW2ofC/HEK7Yb5GsznivEE3Gys1
         H/zP7yliIQGohGy91lydZfqmy9vH4k69gxmKRZlNlBgSrqpUSLvk46qeEuY86Uvvpln/
         3nUQ==
X-Forwarded-Encrypted: i=1; AJvYcCV0WvYqNMCX2zauog0bGLhxd6YEo5xd4Hx+3i0ailLDRRqsv8gTedBHuxS6Ok7NIaWQjXhY2Z0NCZY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzSj4prfpkJW/ru+s13KbrjmRzuMpWg9YLxRFh6AqwZLSAL/1KS
	ftdfMSJMJWs70nstcRVh/PXp092nZSX8BREhpEl7i0kxKM9AyF7IzXGqPX0jolKAYYpJoUfuYUV
	IO5DMFamb2KBzJRPm2Xt7FEcnyi8=
X-Google-Smtp-Source: AGHT+IGi0j/icjLt8RhHlOdJvbjdouTPFKKMu/CT/oe6l0e9sNaP3mHWfqnG22Q9j4GVb6Cdm+e2KfCpXo/Kl8KNmek=
X-Received: by 2002:a05:651c:1547:b0:2fa:d978:a6c4 with SMTP id
 38308e7fff4ca-2faf3d73888mr22769461fa.30.1728117106123; Sat, 05 Oct 2024
 01:31:46 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com> <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com>
In-Reply-To: <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com>
From: Uros Bizjak <ubizjak@gmail.com>
Date: Sat, 5 Oct 2024 10:31:37 +0200
Message-ID: <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ard Biesheuvel <ardb@kernel.org>, Linus Torvalds <torvalds@linux-foundation.org>, 
	Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, x86@kernel.org, 
	Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, 
	Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, 
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 4, 2024 at 11:06=E2=80=AFPM H. Peter Anvin <hpa@zytor.com> wrot=
e:
>
> On 10/3/24 04:13, Ard Biesheuvel wrote:
> >
> >> That said, doing changes like changing "mov $sym" to "lea sym(%rip)" I
> >> feel are a complete no-brainer and should be done regardless of any
> >> other code generation issues.
> >
> > Yes, this is the primary reason I ended up looking into this in the
> > first place. Earlier this year, we ended up having to introduce
> > RIP_REL_REF() to emit those RIP-relative references explicitly, in
> > order to prevent the C code that is called via the early 1:1 mapping
> > from exploding. The amount of C code called in that manner has been
> > growing steadily over time with the introduction of 5-level paging and
> > SEV-SNP and TDX support, which need to play all kinds of tricks before
> > the normal kernel mappings are created.
> >
>
> movq $sym to leaq sym(%rip) which you said ought to be smaller (and in
> reality appears to be the same size, 7 bytes) seems like a no-brainer
> and can be treated as a code quality issue -- in other words, file bug
> reports against gcc and clang.

It is the kernel assembly source that should be converted to
rip-relative form, gcc (and probably clang) have nothing with it.

Uros.


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 10:53:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 10:53:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810872.1223581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx2Pl-0004L4-Rt; Sat, 05 Oct 2024 10:53:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810872.1223581; Sat, 05 Oct 2024 10:53: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 1sx2Pl-0004Kw-OJ; Sat, 05 Oct 2024 10:53:33 +0000
Received: by outflank-mailman (input) for mailman id 810872;
 Sat, 05 Oct 2024 10:53: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 1sx2Pj-0004Km-Pn; Sat, 05 Oct 2024 10:53: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 1sx2Pj-0003jx-Kv; Sat, 05 Oct 2024 10:53: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 1sx2Pj-0006aJ-3u; Sat, 05 Oct 2024 10:53:31 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sx2Pj-0004UW-3K; Sat, 05 Oct 2024 10:53: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=pimcnK9kz8YWc7askCIB1WUU7TyJDdQqCjX1bpf1dL0=; b=vR0y6sP9geS80jCRHLMhbL0F3T
	2MHsScsGnK0BQEMWcX/uNq6+1YiJr+oiNYx3YFASBEYcAZY3pbuEBHX2xvNaQJKLTirTLK9AzONmx
	WuSnnuuHcdo04BFqUbSPCpS3B1Ts39/do7EQXIHx0wtDk08xPQnPVRTUaBPw4L0PJueE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187970-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187970: 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-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop: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-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-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu: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-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: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-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=0c559323bbaabee7346c12e74b497e283aaafef5
X-Osstest-Versions-That:
    linux=3840cbe24cf060ea05a585ca497814609f5d47d1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 10:53:31 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale   8 xen-boot            fail pass in 187980-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 187980 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 187980 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187958
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187958
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187958
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187958
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187958
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187958
 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-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-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 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-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-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-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                0c559323bbaabee7346c12e74b497e283aaafef5
baseline version:
 linux                3840cbe24cf060ea05a585ca497814609f5d47d1

Last test of basis   187958  2024-10-04 00:14:57 Z    1 days
Testing same since   187970  2024-10-04 17:41:58 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Al Viro <viro@zeniv.linux.org.uk>
  Alice Ryhl <aliceryhl@google.com>
  Conor Dooley <conor.dooley@microchip.com>
  Dirk Behme <dirk.behme@de.bosch.com>
  Gary Guo <gary@garyguo.net>
  Linus Torvalds <torvalds@linux-foundation.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Miguel Ojeda <ojeda@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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   3840cbe24cf0..0c559323bbaa  0c559323bbaabee7346c12e74b497e283aaafef5 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 12:24:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 12:24:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810897.1223591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx3pb-0007b2-Gk; Sat, 05 Oct 2024 12:24:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810897.1223591; Sat, 05 Oct 2024 12: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 1sx3pb-0007av-D6; Sat, 05 Oct 2024 12:24:19 +0000
Received: by outflank-mailman (input) for mailman id 810897;
 Sat, 05 Oct 2024 12: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=AzXh=RB=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sx3pZ-0007ap-Ov
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 12:24:17 +0000
Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com
 [2a00:1450:4864:20::644])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bbc3e99d-8314-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 14:24:15 +0200 (CEST)
Received: by mail-ej1-x644.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso101990566b.2
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 05:24:14 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e625a7dsm127386466b.84.2024.10.05.05.24.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 05 Oct 2024 05:24:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bbc3e99d-8314-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728131054; x=1728735854; 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=YQPr7JPAPGgSMqLg4QQTM2pu4CXyvN1amaL5HLMYaVA=;
        b=YhYgNFDgByrtMJPiFjig/i96Ahkr0daT5cBKyQqOq96FNUv2jgMDYPvy6maneKG5jt
         khnJ9flN8NY+OS2l16PtO2xL8xAx3P90k4Xc6Ow3HrKnO1RASt4rN/4d/ffpmeYnA7XA
         v4LsXY7bIuyuJnRMu02+InQNidrgLaDTGmRkw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728131054; x=1728735854;
        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=YQPr7JPAPGgSMqLg4QQTM2pu4CXyvN1amaL5HLMYaVA=;
        b=QQqj1cbnvWYtU1pTArioKWPedvFUtHgGJn3KbCDBQGhKQcnxoqtviDQ9iEU3azGuPh
         cdqQ8B4JoKJwRTcIWQbK3wukyVeyN1pbCleOJkuSU/BTBZPMPTrA2oPzbHhQWf+xrXeM
         Mrf+Fwf/pFoSVe6fzpR27yWrZbHnUZ+tvTHy7NbSS/0GSwGj0NJuMGeBWvRPTdMTCL3t
         MgFwBQNJRmm/JgL1RegKiDvJbX8YBi2CpjCsIPdmKCGG+eTMiMWEZuIrH5E8Xxk5qn+I
         dZO6x29TTi+S45fZVI43a+UqCOwQvdjMqqF+++DCMScb4KpwFJImn1U5Or1wyu9mpTh2
         wbzQ==
X-Forwarded-Encrypted: i=1; AJvYcCXASHuHI4At03fkERlj97mhMweGpHCpidI0tQe5juxAE+u5x8gMlpiCmQKAfdhUIdDv3gK1gSyVS7w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YybnGwEoTSobtW4+9Vw1KRWHht+UwdFkjYK3pFEfd+nFq9/OTNp
	CmGpF11Gvt2AEafl3WREAO3PpwyXsraCegTyhe9rIqj58I+567pzVBGOjRXU6Wc=
X-Google-Smtp-Source: AGHT+IESDsvPQBwB4Gx3eo7jHC/Evj5pCMDwL/ljov9wd2VhLCSG92dQsEMkuiOEHwQ905iQPT5rAA==
X-Received: by 2002:a17:907:3608:b0:a8d:250a:52b2 with SMTP id a640c23a62f3a-a991bcf77e3mr665486266b.6.1728131053894;
        Sat, 05 Oct 2024 05:24:13 -0700 (PDT)
Message-ID: <9a4c9017-f9be-4ebd-9f3d-c7e0b2752438@citrix.com>
Date: Sat, 5 Oct 2024 13:24:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/boot: create a C bundle for 32 bit boot code and
 use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-2-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241005080233.1248850-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> diff --git a/.gitignore b/.gitignore
> index d88be80b28..d538c6adb1 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -247,11 +247,10 @@ xen/.config
>  xen/.config.old
>  xen/.xen.elf32
>  xen/System.map
> -xen/arch/x86/boot/mkelf32
> +xen/arch/x86/boot/build32.*.lds
>  xen/arch/x86/boot/cmdline.S
> +xen/arch/x86/boot/mkelf32
>  xen/arch/x86/boot/reloc.S
> -xen/arch/x86/boot/*.bin
> -xen/arch/x86/boot/*.lnk

cmdline.S and reloc.S are stale too.  They're from an even older form of
this bodge (c/s 1ab7c128d9d1).

However, we're trying to move away from one global .gitignore file. 
Would you mind deleting all of these entries, and making a new
xen/arch/x86/boot/.gitignore with just the ones that you need.  (c/s
0a15b7695bd98 is an example of cleaning up the tools/ocaml side of things).

Feel free to make it a prep patch if you want.  This one is complicated
enough.

> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index ff0f965876..da87179fef 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,4 +1,4 @@
> -obj-bin-y += head.o
> +obj-bin-y += head.o cbundle.o

+obj-bin-y += cbundle.o
 obj-bin-y += head.o

please.  Putting things on a single line is already getting unwieldy by
patch 2.

I have to admit that I'm still not convinced of "cbundle" as a name, but
I can't think of anything better either.

>  
>  head-bin-objs := cmdline.o reloc.o
>  
> @@ -9,7 +9,6 @@ targets   += $(head-bin-objs)
>  head-bin-objs := $(addprefix $(obj)/,$(head-bin-objs))
>  
>  $(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
> -$(obj)/head.o: $(head-bin-objs:.o=.bin)
>  
>  CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
>  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
> @@ -24,10 +23,29 @@ $(head-bin-objs): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
>  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
>  LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
>  
> -%.bin: %.lnk
> -	$(OBJCOPY) -j .text -O binary $< $@
> -
> -%.lnk: %.o $(src)/build32.lds
> -	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -N -T $(filter %.lds,$^) -o $@ $<
> -
> -clean-files := *.lnk *.bin
> +$(obj)/build32.final.lds: AFLAGS-y += -DFINAL
> +$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S
> +	$(call if_changed_dep,cpp_lds_S)
> +
> +$(obj)/%.x64.o: $(src)/%.c FORCE
> +	$(call if_changed_rule,cc_o_c)
> +
> +$(obj)/cbundle.o: $(head-bin-objs) $(obj)/build32.other.lds $(obj)/build32.final.lds
> +## link all object files together
> +	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -r -o $(obj)/cbundle.tmp.o $(head-bin-objs)
> +## link twice with 2 different layouts
> +	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) --orphan-handling=error -N -T $(obj)/build32.other.lds -o $@.1.o $(obj)/cbundle.tmp.o
> +	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) --orphan-handling=error -N -T $(obj)/build32.final.lds -Map $(obj)/cbundle.map -o $@.2.o $(obj)/cbundle.tmp.o

Looking at this, I think we want an $(LD32) variable.  Also,
--orphan-handling isn't supported by all supported linkers, so you'll
have to make it conditional.  See how we handle =warn in the general case.


As a tangent, I know we have this form in the main Xen link, but I have
the same complaint there.  This is a serial operation that could be less
serial.

AFAICT, you link everything together into cbundle.tmp, then do two
(parallelisable) relink+obcopy, then run the python script.  Would it be
possible to split it into 4(?) rules.

> +## extract binaries from them
> +	$(OBJCOPY) -j .text -O binary $@.1.o $@.1.bin
> +	$(OBJCOPY) -j .text -O binary $@.2.o $@.2.bin
> +## generate final assembly file combining and checking above binaries
> +	$(PYTHON) $(srctree)/tools/combine_two_binaries \
> +		--script $(obj)/build32.final.lds \
> +		--bin1 $@.1.bin --bin2 $@.2.bin \
> +		--map $(obj)/cbundle.map --exports cmdline_parse_early,reloc \
> +		--section-header '.section .init.text, "ax", @progbits' \
> +		--output $(obj)/cbundle.s
> +	$(CC) -c $(obj)/cbundle.s -o $@.tmp
> +	rm -f $(obj)/cbundle.tmp.o $@.1.o $@.2.o $@.1.bin $@.2.bin $(obj)/cbundle.map $(obj)/cbundle.s $@
> +	mv $@.tmp $@
> diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
> similarity index 63%
> rename from xen/arch/x86/boot/build32.lds
> rename to xen/arch/x86/boot/build32.lds.S
> index 56edaa727b..fe422e3d25 100644
> --- a/xen/arch/x86/boot/build32.lds
> +++ b/xen/arch/x86/boot/build32.lds.S
> @@ -15,22 +15,54 @@
>   * with this program.  If not, see <http://www.gnu.org/licenses/>.
>   */
>  
> -ENTRY(_start)
> +#undef ENTRY

The need for this undef should have gone away with c/s b102c9f1ce29.

> +
> +#ifdef FINAL
> +# define GAP 0
> +# define MULT 0
> +# define TEXT_START
> +#else
> +# define GAP 0x010200
> +# define MULT 1
> +# define TEXT_START 0x408020
> +#endif
> +# define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
> +
> +ENTRY(dummy_start)
>  
>  SECTIONS
>  {
> -  /* Merge code and data into one section. */
> -  .text : {
> +  /* Merge code and read-only data into one section. */
> +  .text TEXT_START : {
> +        /* Silence linker warning, we are not going to use it */
> +        dummy_start = .;
> +
> +        /* Declare below any symbol name needed.
> +         * Each symbol should be on its own line.
> +         * It looks like a tedious work but we make sure the things we use.
> +         * Potentially they should be all variables. */
> +        DECLARE_IMPORT(__base_relocs_start);
> +        DECLARE_IMPORT(__base_relocs_end);
> +        . = . + GAP;

I have to admit that I've got lost here trying to follow what's going on.

The linker script is emitting symbols based on line number that are
either adjacent or all the same (depending on MULT), and these names are
also parsed by the python script ?

I also note that running this patch:

$ make -s -j8 build
 __  __            _  _    ____   ___                     _        _    
_      
 \ \/ /___ _ __   | || |  |___ \ / _ \    _   _ _ __  ___| |_ __ _| |__
| | ___
  \  // _ \ '_ \  | || |_   __) | | | |__| | | | '_ \/ __| __/ _` | '_
\| |/ _ \
  /  \  __/ | | | |__   _| / __/| |_| |__| |_| | | | \__ \ || (_| | |_)
| |  __/
 /_/\_\___|_| |_|    |_|(_)_____|\___/    \__,_|_|
|_|___/\__\__,_|_.__/|_|\___|
                                                                              
 
Position 0x70c 50 trampoline_phys
Position 0x87e 51 boot_vid_info
Position 0xade 51 boot_vid_info
Position 0xb92 51 boot_vid_info
Position 0xbae 50 trampoline_phys
Position 0xbb4 46 __trampoline_rel_start
Position 0xbba 47 __trampoline_rel_stop
Position 0xbc6 47 __trampoline_rel_stop
Position 0xbe2 48 __trampoline_seg_start
Position 0xbe8 49 __trampoline_seg_stop
Position 0xbf8 49 __trampoline_seg_stop
$

which looks like debugging leaking out to stderr.

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 13:21:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 13:21:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810922.1223601 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx4ie-0007FU-Gv; Sat, 05 Oct 2024 13:21:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810922.1223601; Sat, 05 Oct 2024 13:21: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 1sx4ie-0007FN-Cl; Sat, 05 Oct 2024 13:21:12 +0000
Received: by outflank-mailman (input) for mailman id 810922;
 Sat, 05 Oct 2024 13:21: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=AzXh=RB=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sx4id-0007FH-7g
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 13:21:11 +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 ae9d8375-831c-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 15:21:08 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c718bb04a3so3881266a12.3
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 06:21:08 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99415b7c1fsm45724566b.151.2024.10.05.06.21.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 05 Oct 2024 06:21:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae9d8375-831c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728134468; x=1728739268; 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=HiIIHAdB1XedhyZ1e8F4e+xWW7ESmRfp6pujg6xSSgM=;
        b=aKKP/a4id7EaUTy+j+3mcsYXWzzsm+nUMc4aMNer1mRmCLyJya+0scgc8To74asDQ6
         nvRbf9DEHANMuHBcLWEpWJ1LU59M2YBB08pSBQPYnreMHYLud8JS3FkkMgsx2i32ZDK/
         1YF5rgFuSGKfSmYeanxn1G16QV75u+94RSp/w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728134468; x=1728739268;
        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=HiIIHAdB1XedhyZ1e8F4e+xWW7ESmRfp6pujg6xSSgM=;
        b=XyPlKJ+UQRr0d5GX2xfK3zlxk0X0ydSq9jUbfkLdFWL4vsm9OMytPnTgyAXy5iWk11
         RtGktMLtpucSmhzKjiwfGnM/gkzbq1EajGug6+y8N5ySIf8MsyH2g0OtNkXwaNNoUu1g
         GtqPe3z2QbCXBO1G93kefUnEpn5jiPFaz5UX+sw/iALRnd/+FGnqF2iF4rheytx8zcKm
         hN6pidAWkNnMhBKEQ9RC0VblDfxcI6GhKxJXXyF5iYw5qF3B4fXZ0RIz8qfYSOsizXMq
         eNAyVVOcMtkAgxrSFNqTNCAoWERcZQJ+taaO6fK/GJF8p5qIbqCWff9MW/ALS3YMWm0x
         +vQA==
X-Forwarded-Encrypted: i=1; AJvYcCXvKdKI232Ex961g4Mdf0ZX1FU9gK0wQfz1xqncr4HXMDGNFg2J6egiyaoCG+j8DIGHqwG43YZZ8Y0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyoYhvkur9MBTltJfZ8U8wi8bMkVAcbveGG5Hb6wht9Osf6L+R+
	CR+FSiCCvKe1GJqzfukJkOhkB/hXzgE3nVMyen8v91pfVSmaJovL9HMgEZxcunU=
X-Google-Smtp-Source: AGHT+IH66oh26ORV8Sh+meM2rMo3VP16aPsqDXODffmpPaNDqmziXPQY7a86/Y1S+s25VnfAj47CTA==
X-Received: by 2002:a17:907:2d90:b0:a93:c2ae:ec5 with SMTP id a640c23a62f3a-a991bd71c64mr609720566b.31.1728134467773;
        Sat, 05 Oct 2024 06:21:07 -0700 (PDT)
Message-ID: <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
Date: Sat, 5 Oct 2024 14:21:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241005080233.1248850-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
>  xen/arch/x86/boot/Makefile           |  6 +++---
>  xen/arch/x86/boot/build32.lds.S      |  5 +++++
>  xen/arch/x86/boot/head.S             | 23 +--------------------
>  xen/arch/x86/boot/reloc-trampoline.c | 30 ++++++++++++++++++++++++++++
>  xen/arch/x86/efi/efi-boot.h          | 15 ++------------
>  5 files changed, 41 insertions(+), 38 deletions(-)
>  create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
>
> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index da87179fef..c16c4a8595 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,6 +1,6 @@
> -obj-bin-y += head.o cbundle.o
> +obj-bin-y += head.o cbundle.o reloc-trampoline.x64.o

Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch wants
introducing here.

That said, x64 is the one name for 64bit that we reliably don't use. 
Also...

> -head-bin-objs := cmdline.o reloc.o
> +head-bin-objs := cmdline.o reloc.o reloc-trampoline.o

... head-bin-objs isn't really correct now seeing as they're not
binaries in head.S.  Also ...

>  nocov-y   += $(head-bin-objs)
>  noubsan-y += $(head-bin-objs)

The no$(foo)'s needs extending to the 64bit objects too.  They're also
used early enough to explode.

In Xen, 64bit objects are the norm, and it's 32bit ones which are the
exception, so how about we special case *.i386.o instead.  Then

obj32 := cmdline.i386.o
obj32 += reloc.i386.o
obj32 += reloc-trampoline.i386.o

and apply no$(foo) over everything.

> @@ -43,7 +43,7 @@ $(obj)/cbundle.o: $(head-bin-objs) $(obj)/build32.other.lds $(obj)/build32.final
>  	$(PYTHON) $(srctree)/tools/combine_two_binaries \
>  		--script $(obj)/build32.final.lds \
>  		--bin1 $@.1.bin --bin2 $@.2.bin \
> -		--map $(obj)/cbundle.map --exports cmdline_parse_early,reloc \
> +		--map $(obj)/cbundle.map --exports cmdline_parse_early,reloc,reloc_trampoline32 \
>  		--section-header '.section .init.text, "ax", @progbits' \
>  		--output $(obj)/cbundle.s
>  	$(CC) -c $(obj)/cbundle.s -o $@.tmp
> diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
> index fe422e3d25..2d10a75fb1 100644
> --- a/xen/arch/x86/boot/build32.lds.S
> +++ b/xen/arch/x86/boot/build32.lds.S
> @@ -43,6 +43,11 @@ SECTIONS
>           * Potentially they should be all variables. */
>          DECLARE_IMPORT(__base_relocs_start);
>          DECLARE_IMPORT(__base_relocs_end);
> +        DECLARE_IMPORT(__trampoline_rel_start);
> +        DECLARE_IMPORT(__trampoline_rel_stop);
> +        DECLARE_IMPORT(__trampoline_seg_start);
> +        DECLARE_IMPORT(__trampoline_seg_stop);
> +        DECLARE_IMPORT(trampoline_phys);
>          . = . + GAP;
>          *(.text)
>          *(.text.*)
> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> index e0776e3896..ade2c5c43d 100644
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -706,28 +706,7 @@ trampoline_setup:
>          mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
>  
>          /* Apply relocations to bootstrap trampoline. */
> -        mov     sym_esi(trampoline_phys), %edx
> -        lea     sym_esi(__trampoline_rel_start), %edi
> -        lea     sym_esi(__trampoline_rel_stop), %ecx
> -1:
> -        mov     (%edi), %eax
> -        add     %edx, (%edi, %eax)
> -        add     $4,%edi
> -
> -        cmp     %ecx, %edi
> -        jb      1b
> -
> -        /* Patch in the trampoline segment. */
> -        shr     $4,%edx
> -        lea     sym_esi(__trampoline_seg_start), %edi
> -        lea     sym_esi(__trampoline_seg_stop), %ecx
> -1:
> -        mov     (%edi), %eax
> -        mov     %dx, (%edi, %eax)
> -        add     $4,%edi
> -
> -        cmp     %ecx, %edi
> -        jb      1b
> +        call    reloc_trampoline32
>  
>          /* Do not parse command line on EFI platform here. */
>          cmpb    $0, sym_esi(efi_platform)
> diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
> new file mode 100644
> index 0000000000..9509dfa28a
> --- /dev/null
> +++ b/xen/arch/x86/boot/reloc-trampoline.c
> @@ -0,0 +1,30 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/compiler.h>
> +#include <xen/stdint.h>
> +#include <asm/trampoline.h>
> +
> +extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
> +extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
> +
> +#if defined(__i386__)
> +void reloc_trampoline32(void)
> +#elif defined (__x86_64__)
> +void reloc_trampoline64(void)
> +#else
> +#error Unknow architecture
> +#endif
> +{
> +    unsigned long phys = trampoline_phys;
> +    const int32_t *trampoline_ptr;
> +
> +    /* Apply relocations to trampoline. */

Please take the opportunity to expand on this.

/*
 * Apply relocations to trampoline.
 *
 * This modifies the trampoline in place within Xen, so that it will
 * operate correctly when copied into place.
 */

This property is entirely non-obvious, and what is is hurting us trying
to make R^X work.

But - it also makes it clean how to fix the problem (later, after you've
unified the relocation paths with this patch).

> +    for ( trampoline_ptr = __trampoline_rel_start;
> +          trampoline_ptr < __trampoline_rel_stop;
> +          ++trampoline_ptr )
> +        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;

Newline here please.

> +    for ( trampoline_ptr = __trampoline_seg_start;
> +          trampoline_ptr < __trampoline_seg_stop;
> +          ++trampoline_ptr )
> +        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
> +}

I was looking at the code generation.  32bit looks fine, but 64bit is
outragous.

It turns out I have ubsan enabled in this build, and the code generation
is much better with nocov-y extended to cover reloc-trampoline.x64.o

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 13:44:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 13:44:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810935.1223610 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx54k-00020D-5p; Sat, 05 Oct 2024 13:44:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810935.1223610; Sat, 05 Oct 2024 13:44: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 1sx54k-000206-3B; Sat, 05 Oct 2024 13:44:02 +0000
Received: by outflank-mailman (input) for mailman id 810935;
 Sat, 05 Oct 2024 13:44: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=AzXh=RB=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sx54j-000200-3U
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 13:44:01 +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 deebd314-831f-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 15:43:58 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c5bca59416so3882706a12.1
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 06:43:58 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e78628fsm134392066b.135.2024.10.05.06.43.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 05 Oct 2024 06:43:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: deebd314-831f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728135837; x=1728740637; 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=UrcD1Bq1gk6XBF5nsPVkuGgrPiLUxEFjfiQYh34Tya0=;
        b=E0I31pSByhOQiW6jYm5DSnIzqOMzSJFn0j5iBnrHHla7th/4NwacnCE5NfK181PEXb
         L/ULDWU2yVJHM9P8ald2qGEsYya0iDMBZUgfrY09umJo5D66X0323gfk8eNg+t0IoT67
         BBtATAyIx+1lmuXT9VQmOJcOmI0CuFm88kdRc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728135837; x=1728740637;
        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=UrcD1Bq1gk6XBF5nsPVkuGgrPiLUxEFjfiQYh34Tya0=;
        b=AeYDlzmwxXKN3BRLUSIstbA/i3kPZIKnbeWhu5XoSRT7gW+D1wLlD96Yb/alikdJE9
         3Ho1d4/dAozNg7Tx5k3+XDIHSvUkl/+ZX5wc3L+0MdrCxBcNw587xJgM/dazEjAmpU2X
         Ww7mEQ6trRR5W5rTqPbsfQcm4u37zbBNJyKWaMD800sBh84MwTBlFi8d2SpFNiV2pTeG
         eP/UkffNjqERnKVJOjZSOHCWc8Jg2XTkclKl7Qm+IBy6GR7E/X/zy9UZkjkJLJ2cIrpL
         NPoQ9p/MDRJTNbxwme6OBoc3NlbYLDC0z0d+yFRvVtmlE7Y1bAdO9Vdx9QkYEnR4yaTf
         8Xbg==
X-Forwarded-Encrypted: i=1; AJvYcCUWBbXF+Gicbe56jJVeuunFT98IuqJOY6KtwZaS0G1mvnMxloHhSAmlExcxD1gOfSxmZ2h7PI+z4mQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyOck4lKSvZ7G3wIUrHTOhWz9ioCd9hvSNjlcLmw9JTPCuJflmZ
	hsT3X4lqdpfCNEQLFhaW+2AC6aT+XE2pouDLvRFM1Rr+geN32YUHJ2Gz3WF8Y/U=
X-Google-Smtp-Source: AGHT+IGxjMpbgayEEY0nG/NZ/ffiBVr7JmOHl1M7xflksUjhCMpJStIJnJwM+lUzyYP6ot4jj5cg4A==
X-Received: by 2002:a17:907:745:b0:a86:9d39:a2a with SMTP id a640c23a62f3a-a991bcfbc70mr611577766b.8.1728135837422;
        Sat, 05 Oct 2024 06:43:57 -0700 (PDT)
Message-ID: <10890c99-f1ed-4e59-a86b-f79cb6065aa9@citrix.com>
Date: Sat, 5 Oct 2024 14:43:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] x86/boot: Use boot_vid_info and trampoline_phys
 variables directly from C code
To: Frediano Ziglio <frediano.ziglio@cloud.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: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-4-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241005080233.1248850-4-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> index ade2c5c43d..dcda91cfda 100644
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -510,22 +510,10 @@ trampoline_setup:
>          mov     %esi, sym_esi(xen_phys_start)
>          mov     %esi, sym_esi(trampoline_xen_phys_start)
>  
> -        /* Get bottom-most low-memory stack address. */
> -        mov     sym_esi(trampoline_phys), %ecx
> -        add     $TRAMPOLINE_SPACE,%ecx
> -
> -#ifdef CONFIG_VIDEO
> -        lea     sym_esi(boot_vid_info), %edx
> -#else
> -        xor     %edx, %edx
> -#endif
> -
>          /* Save Multiboot / PVH info struct (after relocation) for later use. */
> -        push    %edx                /* Boot video info to be filled from MB2. */
>          mov     %ebx, %edx          /* Multiboot / PVH information address. */
> -        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
> +        /*      reloc(magic/eax, info/edx) using fastcall. */
>          call    reloc
> -        add     $4, %esp
>  

Please split this patch in two.  Just for testing sanity sake if nothing
else.

Now, while I think the patch is a correct transform of the code, ...

>  #ifdef CONFIG_PVH_GUEST
>          cmpb    $0, sym_esi(pvh_boot)
> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> index 94b078d7b1..8527fa8d01 100644
> --- a/xen/arch/x86/boot/reloc.c
> +++ b/xen/arch/x86/boot/reloc.c
> @@ -185,7 +188,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
>      memory_map_t *mmap_dst;
>      multiboot_info_t *mbi_out;
>  #ifdef CONFIG_VIDEO
> -    struct boot_video_info *video = NULL;
> +    struct boot_video_info *video = &boot_vid_info;

... doesn't this demonstrate that we're again writing into the
trampoline in-Xen, prior to it placing it in low memory?

> @@ -346,10 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
>  }
>  
>  /* SAF-1-safe */
> -void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
> -            uint32_t video_info)
> +void *reloc(uint32_t magic, uint32_t in)
>  {
> -    memctx ctx = { trampoline };
> +    /* Get bottom-most low-memory stack address. */
> +    memctx ctx = { (uint32_t)((long)trampoline_phys + TRAMPOLINE_SPACE) };

Again, while this is a correct transformation (best as I can tell),
wtf?  Doesn't this mean we're bump-allocating downwards into our own stack?

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 15:04:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 15:04:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810950.1223621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx6Kj-0004RM-0u; Sat, 05 Oct 2024 15:04:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810950.1223621; Sat, 05 Oct 2024 15: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 1sx6Ki-0004RF-UI; Sat, 05 Oct 2024 15:04:36 +0000
Received: by outflank-mailman (input) for mailman id 810950;
 Sat, 05 Oct 2024 15:04: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=edRR=RB=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sx6Kh-0004R9-PH
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 15:04:35 +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 20a376a3-832b-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 17:04:32 +0200 (CEST)
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 1AB1D1FBA3;
 Sat,  5 Oct 2024 15:04: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 D803113736;
 Sat,  5 Oct 2024 15:04: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 iDu9Mn9VAWcQBgAAD6G6ig
 (envelope-from <jgross@suse.com>); Sat, 05 Oct 2024 15:04: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: 20a376a3-832b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728140672; 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=/3KKG7LZPfw9Sx7QYfWQpHcT7Tnop1iS0tF91rj7sKo=;
	b=co/G/QbGA0caLJktBKxTo6aVIQW6kS2F3Aq9n6Q7SIdZW8IB4s/IZjcj92evlsqTA4tsQc
	vEgjFL1JgpQO3iBSBd2BiozMbQB9vt5GuZoyNj0iN1iTstUA0rGo9JT0mHjfEJzxVwnHvO
	RUCdsa/pVBX0klwFUAhvQee4+1v/pSM=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b="co/G/QbG"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728140672; 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=/3KKG7LZPfw9Sx7QYfWQpHcT7Tnop1iS0tF91rj7sKo=;
	b=co/G/QbGA0caLJktBKxTo6aVIQW6kS2F3Aq9n6Q7SIdZW8IB4s/IZjcj92evlsqTA4tsQc
	vEgjFL1JgpQO3iBSBd2BiozMbQB9vt5GuZoyNj0iN1iTstUA0rGo9JT0mHjfEJzxVwnHvO
	RUCdsa/pVBX0klwFUAhvQee4+1v/pSM=
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.12-rc2
Date: Sat,  5 Oct 2024 17:04:31 +0200
Message-ID: <20241005150431.12546-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 1AB1D1FBA3
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-0.998];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	TO_DN_NONE(0.00)[];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	FROM_HAS_DN(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

Linus,

Please git pull the following tag:

 git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc2-tag

xen: branch for v6.12-rc2

It contains just a single patch fixing an issue introduced in the
6.12 merge window.

Thanks.

Juergen

 drivers/xen/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Lukas Bulwahn (1):
      xen: Fix config option reference in XEN_PRIVCMD definition


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 15:16:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 15:16:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810956.1223631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx6Vg-0006EK-Vg; Sat, 05 Oct 2024 15:15:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810956.1223631; Sat, 05 Oct 2024 15: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 1sx6Vg-0006ED-T9; Sat, 05 Oct 2024 15:15:56 +0000
Received: by outflank-mailman (input) for mailman id 810956;
 Sat, 05 Oct 2024 15:15: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=edRR=RB=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sx6Vf-0006E7-Jc
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 15:15:55 +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 b64c6aa9-832c-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 17:15:53 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 C02EF1FBAE;
 Sat,  5 Oct 2024 15:15:52 +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 6A0AD13A8F;
 Sat,  5 Oct 2024 15:15:52 +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 QPnXFyhYAWfgCAAAD6G6ig
 (envelope-from <jgross@suse.com>); Sat, 05 Oct 2024 15:15: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: b64c6aa9-832c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141352; 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=O0I7WB/+l4rbymuIgcW/XxebwwdHJGWCav0ZJGUC7gQ=;
	b=qN+BHGEcPbJqyz+aLIUMtiXrGHjnUudPrIdh5DZrnqFFd33Bok1+/Vkc1fXlHYp1ImqjsR
	lcSSmhHMZg6QBLgnTHPkTh/qhnF1rMLJ2cTzl3fxysSs1i/8Sa6wjhwki/IAejb3FyocIa
	M861w1f45hBzmppCgX0q7DkSpCyZYO0=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141352; 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=O0I7WB/+l4rbymuIgcW/XxebwwdHJGWCav0ZJGUC7gQ=;
	b=qN+BHGEcPbJqyz+aLIUMtiXrGHjnUudPrIdh5DZrnqFFd33Bok1+/Vkc1fXlHYp1ImqjsR
	lcSSmhHMZg6QBLgnTHPkTh/qhnF1rMLJ2cTzl3fxysSs1i/8Sa6wjhwki/IAejb3FyocIa
	M861w1f45hBzmppCgX0q7DkSpCyZYO0=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 0/4] stubdom: prepare more fine grained Xen library usage
Date: Sat,  5 Oct 2024 17:15:44 +0200
Message-ID: <20241005151548.29184-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.27
X-Spamd-Result: default: False [-0.27 / 50.00];
	BAYES_HAM(-1.97)[94.87%];
	SUSPICIOUS_RECIPS(1.50)[];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_HAS_DN(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[10];
	FREEMAIL_CC(0.00)[suse.com,citrix.com,xen.org,kernel.org,ens-lyon.org,tycho.nsa.gov,gmail.com,vates.tech];
	TAGGED_RCPT(0.00)[];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FREEMAIL_ENVRCPT(0.00)[gmail.com]
X-Spam-Flag: NO
X-Spam-Level: 

Prepare the build system of stubdoms to allow a more fine grained
Xen library usage per stubdom (today its all or none).

This is a first step to set the stage for related Mini-OS changes
which are required to have stubdoms using e.g. only stable Xen
libraries.

Juergen Gross (4):
  stubdom: add local .gitignore file
  stubdom: explcitly add libc and lwip Mini-OS config options
  build: move xenlibs-dependencies make definition to uselibs.mk
  stubdom: add fine grained library config items to Mini-OS configs

 .gitignore                     | 37 +------------------------
 stubdom/.gitignore             | 37 +++++++++++++++++++++++++
 stubdom/Makefile               | 49 +++++++++++++++++++++++++---------
 stubdom/c/minios.cfg           |  2 ++
 stubdom/grub/minios.cfg        |  3 ++-
 stubdom/ioemu-minios.cfg       |  2 ++
 stubdom/vtpm/minios.cfg        |  3 ++-
 stubdom/vtpmmgr/minios.cfg     |  3 ++-
 stubdom/xenstore-minios.cfg    |  1 +
 stubdom/xenstorepvh-minios.cfg |  1 +
 tools/Rules.mk                 |  7 -----
 tools/libs/uselibs.mk          |  7 +++++
 12 files changed, 94 insertions(+), 58 deletions(-)
 create mode 100644 stubdom/.gitignore

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 15:16:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 15:16:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810957.1223641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx6Vn-0006Tq-5t; Sat, 05 Oct 2024 15:16:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810957.1223641; Sat, 05 Oct 2024 15:16: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 1sx6Vn-0006Tj-37; Sat, 05 Oct 2024 15:16:03 +0000
Received: by outflank-mailman (input) for mailman id 810957;
 Sat, 05 Oct 2024 15:16: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=edRR=RB=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sx6Vl-0006TD-OK
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 15:16:01 +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 b98a526f-832c-11ef-a0bb-8be0dac302b0;
 Sat, 05 Oct 2024 17:16:00 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 6E2631FE1A;
 Sat,  5 Oct 2024 15:15:58 +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 2CA8013A8F;
 Sat,  5 Oct 2024 15:15:58 +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 BB5HCS5YAWfwCAAAD6G6ig
 (envelope-from <jgross@suse.com>); Sat, 05 Oct 2024 15:15: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: b98a526f-832c-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141358; 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=HPdwuqGA7z8EJBMd2vQxym4phrJ0tE0TYVW2NGLkHuk=;
	b=qepeY9qR5p+HPhmRmFhWAtQ7M+O/H0QaCpy47X7zbanVFeyk5+BMqqZVfLjyzQyBk76iQq
	3NDb5cVo6UVLwTXNuhS5qNdxnp2cdoIrgG5txXQhuo1YAsVcWShfGjDfldCD1X+o3LslPQ
	H0TNPJk9wjKp9DKJC/Artk2x5iNCsmU=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141358; 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=HPdwuqGA7z8EJBMd2vQxym4phrJ0tE0TYVW2NGLkHuk=;
	b=qepeY9qR5p+HPhmRmFhWAtQ7M+O/H0QaCpy47X7zbanVFeyk5+BMqqZVfLjyzQyBk76iQq
	3NDb5cVo6UVLwTXNuhS5qNdxnp2cdoIrgG5txXQhuo1YAsVcWShfGjDfldCD1X+o3LslPQ
	H0TNPJk9wjKp9DKJC/Artk2x5iNCsmU=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH 1/4] stubdom: add local .gitignore file
Date: Sat,  5 Oct 2024 17:15:45 +0200
Message-ID: <20241005151548.29184-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241005151548.29184-1-jgross@suse.com>
References: <20241005151548.29184-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -6.78
X-Spamd-Result: default: False [-6.78 / 50.00];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.18)[-0.886];
	MIME_GOOD(-0.10)[text/plain];
	RCVD_COUNT_TWO(0.00)[2];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_HAS_DN(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[7];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Add a stubdom specfic .gitignore file.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 .gitignore         | 37 +------------------------------------
 stubdom/.gitignore | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 36 deletions(-)
 create mode 100644 stubdom/.gitignore

diff --git a/.gitignore b/.gitignore
index d88be80b28..5c13fb5878 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,7 +39,6 @@ cscope.po.out
 .vscode
 
 dist
-stubdom/*.tar.gz
 
 autom4te.cache/
 automation/build/yocto/*.dockerfile
@@ -66,41 +65,7 @@ docs/pdf/
 docs/txt/
 extras/
 install/*
-stubdom/*-minios-config.mk
-stubdom/autom4te.cache/
-stubdom/binutils-*
-stubdom/config.cache
-stubdom/config.log
-stubdom/config.status
-stubdom/cross-root-*
-stubdom/gcc-*
-stubdom/gmp-*
-stubdom/grub-*
-stubdom/include
-stubdom/ioemu
-stubdom/ioemu/
-stubdom/libs-*
-stubdom/libxencall-*
-stubdom/libxenevtchn-*
-stubdom/libxenforeignmemory-*
-stubdom/libxengnttab-*
-stubdom/libxentoolcore-*
-stubdom/libxentoollog-*
-stubdom/lwip-*
-stubdom/lwip/
-stubdom/mini-os-*
-stubdom/mk-headers-*
-stubdom/newlib-1.*
-stubdom/newlib-x86*
-stubdom/pciutils-*
-stubdom/pkg-config/*
-stubdom/polarssl-*
-stubdom/stubdompath.sh
-stubdom/tpm_emulator-*
-stubdom/vtpm/vtpm_manager.h
-stubdom/xenstore
-stubdom/xenstorepvh
-stubdom/zlib-*
+
 tools/*/build/lib*/*.py
 tools/autom4te.cache/
 tools/config.h
diff --git a/stubdom/.gitignore b/stubdom/.gitignore
new file mode 100644
index 0000000000..10e2547a22
--- /dev/null
+++ b/stubdom/.gitignore
@@ -0,0 +1,36 @@
+/*.tar.gz
+/*-minios-config.mk
+/autom4te.cache/
+/binutils-*
+/config.cache
+/config.log
+/config.status
+/cross-root-*
+/gcc-*
+/gmp-*
+/grub-*
+/include
+/ioemu
+/ioemu/
+/libs-*
+/libxencall-*
+/libxenevtchn-*
+/libxenforeignmemory-*
+/libxengnttab-*
+/libxentoolcore-*
+/libxentoollog-*
+/lwip-*
+/lwip/
+/mini-os-*
+/mk-headers-*
+/newlib-1.*
+/newlib-x86*
+/pciutils-*
+/pkg-config/*
+/polarssl-*
+/stubdompath.sh
+/tpm_emulator-*
+/vtpm/vtpm_manager.h
+/xenstore
+/xenstorepvh
+/zlib-*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 15:16:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 15:16:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810958.1223651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx6Vq-0006kV-Cx; Sat, 05 Oct 2024 15:16:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810958.1223651; Sat, 05 Oct 2024 15:16: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 1sx6Vq-0006kO-9j; Sat, 05 Oct 2024 15:16:06 +0000
Received: by outflank-mailman (input) for mailman id 810958;
 Sat, 05 Oct 2024 15:16: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=edRR=RB=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sx6Vp-0006TD-3r
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 15:16:05 +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 bcdfd6bc-832c-11ef-a0bb-8be0dac302b0;
 Sat, 05 Oct 2024 17:16:04 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 0F20B1FDBD;
 Sat,  5 Oct 2024 15:16:04 +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 D131E13A8F;
 Sat,  5 Oct 2024 15:16: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 3XJtMTNYAWf1CAAAD6G6ig
 (envelope-from <jgross@suse.com>); Sat, 05 Oct 2024 15:16: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>
X-Inumbo-ID: bcdfd6bc-832c-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141364; 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=gqQWygSSK4ytl3fKX2xJfCRM7bub9g07ORkZhe7KAkQ=;
	b=G/GENQ8FHHuThLUbP6nX92T+t5BxBIGtZ7/Ii0BO/IrfOjzKCljvJdjgADziygNVySe9Bk
	R0sXlh3rKRkp7lLILgz8VKGuRd26SFut/3L0SDKLsExjYqAhD8x/jdfUSKkcqoADjX+n/u
	PjwXdCDIus0gT7UVpM1BSo6wnLc3qEM=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141364; 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=gqQWygSSK4ytl3fKX2xJfCRM7bub9g07ORkZhe7KAkQ=;
	b=G/GENQ8FHHuThLUbP6nX92T+t5BxBIGtZ7/Ii0BO/IrfOjzKCljvJdjgADziygNVySe9Bk
	R0sXlh3rKRkp7lLILgz8VKGuRd26SFut/3L0SDKLsExjYqAhD8x/jdfUSKkcqoADjX+n/u
	PjwXdCDIus0gT7UVpM1BSo6wnLc3qEM=
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>,
	Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>
Subject: [PATCH 2/4] stubdom: explcitly add libc and lwip Mini-OS config options
Date: Sat,  5 Oct 2024 17:15:46 +0200
Message-ID: <20241005151548.29184-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241005151548.29184-1-jgross@suse.com>
References: <20241005151548.29184-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -5.30
X-Spamd-Result: default: False [-5.30 / 50.00];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[99.99%];
	SUSPICIOUS_RECIPS(1.50)[];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	TAGGED_RCPT(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+];
	FROM_EQ_ENVFROM(0.00)[];
	FREEMAIL_CC(0.00)[suse.com,ens-lyon.org,tycho.nsa.gov,gmail.com];
	FROM_HAS_DN(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_TLS_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email];
	RCPT_COUNT_FIVE(0.00)[5];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FREEMAIL_ENVRCPT(0.00)[gmail.com]
X-Spam-Flag: NO
X-Spam-Level: 

Today the Mini-OS build systems derives libc and lwip config options
from the stubdom and LWIPDIR make variables supplied by the Xen build
system.

In order to prepare those being explicit Mini-OS config options, add
them to the related stubdom Mini-OS config files.

While at it remove the CONFIG_START_NETWORK setting from config files
disabling lwip, as CONFIG_START_NETWORK requires lwip for becoming
effective.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 stubdom/c/minios.cfg           | 2 ++
 stubdom/grub/minios.cfg        | 3 ++-
 stubdom/ioemu-minios.cfg       | 2 ++
 stubdom/vtpm/minios.cfg        | 3 ++-
 stubdom/vtpmmgr/minios.cfg     | 3 ++-
 stubdom/xenstore-minios.cfg    | 1 +
 stubdom/xenstorepvh-minios.cfg | 1 +
 7 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/stubdom/c/minios.cfg b/stubdom/c/minios.cfg
index e69de29bb2..56d65510cd 100644
--- a/stubdom/c/minios.cfg
+++ b/stubdom/c/minios.cfg
@@ -0,0 +1,2 @@
+CONFIG_LIBC=y
+CONFIG_LWIP=y
diff --git a/stubdom/grub/minios.cfg b/stubdom/grub/minios.cfg
index 8df49092cd..5145b357e0 100644
--- a/stubdom/grub/minios.cfg
+++ b/stubdom/grub/minios.cfg
@@ -1,3 +1,4 @@
-CONFIG_START_NETWORK=n
+CONFIG_LIBC=y
+CONFIG_LWIP=n
 CONFIG_SPARSE_BSS=n
 CONFIG_TPMFRONT=y
diff --git a/stubdom/ioemu-minios.cfg b/stubdom/ioemu-minios.cfg
index a65baa3765..6153ae05f8 100644
--- a/stubdom/ioemu-minios.cfg
+++ b/stubdom/ioemu-minios.cfg
@@ -1,3 +1,5 @@
+CONFIG_LIBC=y
+CONFIG_LWIP=y
 CONFIG_START_NETWORK=n
 CONFIG_QEMU_XS_ARGS=y
 CONFIG_PCIFRONT=y
diff --git a/stubdom/vtpm/minios.cfg b/stubdom/vtpm/minios.cfg
index 31652ee4f2..22f66f1351 100644
--- a/stubdom/vtpm/minios.cfg
+++ b/stubdom/vtpm/minios.cfg
@@ -1,7 +1,8 @@
+CONFIG_LIBC=y
+CONFIG_LWIP=n
 CONFIG_TPMFRONT=y
 CONFIG_TPM_TIS=n
 CONFIG_TPMBACK=y
-CONFIG_START_NETWORK=n
 CONFIG_TEST=n
 CONFIG_PCIFRONT=n
 CONFIG_BLKFRONT=y
diff --git a/stubdom/vtpmmgr/minios.cfg b/stubdom/vtpmmgr/minios.cfg
index 3fb383d30f..a9f13a2fd2 100644
--- a/stubdom/vtpmmgr/minios.cfg
+++ b/stubdom/vtpmmgr/minios.cfg
@@ -1,7 +1,8 @@
+CONFIG_LIBC=y
+CONFIG_LWIP=n
 CONFIG_TPMFRONT=y
 CONFIG_TPM_TIS=y
 CONFIG_TPMBACK=y
-CONFIG_START_NETWORK=n
 CONFIG_TEST=n
 CONFIG_PCIFRONT=n
 CONFIG_BLKFRONT=y
diff --git a/stubdom/xenstore-minios.cfg b/stubdom/xenstore-minios.cfg
index 239da519b9..0252b59432 100644
--- a/stubdom/xenstore-minios.cfg
+++ b/stubdom/xenstore-minios.cfg
@@ -1,3 +1,4 @@
+CONFIG_LIBC=y
 CONFIG_BLKFRONT=n
 CONFIG_NETFRONT=n
 CONFIG_FBFRONT=n
diff --git a/stubdom/xenstorepvh-minios.cfg b/stubdom/xenstorepvh-minios.cfg
index 752b90d7d3..62a228f33d 100644
--- a/stubdom/xenstorepvh-minios.cfg
+++ b/stubdom/xenstorepvh-minios.cfg
@@ -1,3 +1,4 @@
+CONFIG_LIBC=y
 CONFIG_PARAVIRT=n
 CONFIG_BLKFRONT=n
 CONFIG_NETFRONT=n
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 15:16:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 15:16:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810959.1223661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx6Vw-00076M-JS; Sat, 05 Oct 2024 15:16:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810959.1223661; Sat, 05 Oct 2024 15:16: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 1sx6Vw-00076B-Gb; Sat, 05 Oct 2024 15:16:12 +0000
Received: by outflank-mailman (input) for mailman id 810959;
 Sat, 05 Oct 2024 15:16: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=edRR=RB=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sx6Vv-0006E7-Ie
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 15:16:11 +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 c03215f7-832c-11ef-99a2-01e77a169b0f;
 Sat, 05 Oct 2024 17:16:10 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 9C05021E1D;
 Sat,  5 Oct 2024 15:16:09 +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 7746513A8F;
 Sat,  5 Oct 2024 15:16:09 +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 7ZSkGzlYAWf+CAAAD6G6ig
 (envelope-from <jgross@suse.com>); Sat, 05 Oct 2024 15: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: c03215f7-832c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141369; 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=Qa1gW4DnBfzxqPMf4tD8MwJ65mRwo8BvZFHY8vU0Kx8=;
	b=N8rRKyv8Cg3c26WTDtn0+GMJ3bJl/tXLKuGUO+2oDMZUdO2P/ky7iwCSdwAcViNl0NunHB
	CD677e2i8jKUzAwq44uasGIYYD2svFLaPbpK23Y17ALfGhe7JYV+LIWgs+j8qk/OcY8OfB
	imPJ/GYgEHS/8QPNgEpSP1xhJwJ4tAM=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728141369; 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=Qa1gW4DnBfzxqPMf4tD8MwJ65mRwo8BvZFHY8vU0Kx8=;
	b=N8rRKyv8Cg3c26WTDtn0+GMJ3bJl/tXLKuGUO+2oDMZUdO2P/ky7iwCSdwAcViNl0NunHB
	CD677e2i8jKUzAwq44uasGIYYD2svFLaPbpK23Y17ALfGhe7JYV+LIWgs+j8qk/OcY8OfB
	imPJ/GYgEHS/8QPNgEpSP1xhJwJ4tAM=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 3/4] build: move xenlibs-dependencies make definition to uselibs.mk
Date: Sat,  5 Oct 2024 17:15:47 +0200
Message-ID: <20241005151548.29184-4-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241005151548.29184-1-jgross@suse.com>
References: <20241005151548.29184-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-6.77 / 50.00];
	REPLY(-4.00)[];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.17)[-0.833];
	MIME_GOOD(-0.10)[text/plain];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_HAS_DN(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid];
	FROM_EQ_ENVFROM(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCPT_COUNT_THREE(0.00)[3];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -6.77
X-Spam-Flag: NO

In order to be able to use the xenlibs-dependencies macro from stubdom
build, move it to tools/libs/uselibs.mk, which is included from
current users and stubdom/Makefile.

No functional change intended.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/Rules.mk        | 7 -------
 tools/libs/uselibs.mk | 7 +++++++
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/tools/Rules.mk b/tools/Rules.mk
index e2289c25b4..6bd636709f 100644
--- a/tools/Rules.mk
+++ b/tools/Rules.mk
@@ -81,13 +81,6 @@ endif
 # include any CFLAGS or LDLIBS relating to libbar or libbaz unless
 # they use those libraries directly (not via libfoo) too.
 
-# Give the list of Xen library that the libraries in $(1) are linked against,
-# directly or indirectly.
-define xenlibs-dependencies
-    $(sort $(foreach lib,$(1), \
-        $(USELIBS_$(lib)) $(call xenlibs-dependencies,$(USELIBS_$(lib)))))
-endef
-
 # Flags for linking recursive dependencies of Xen libraries in $(1)
 define xenlibs-rpath
     $(addprefix -Wl$(comma)-rpath-link=$(XEN_ROOT)/tools/libs/,$(call xenlibs-dependencies,$(1)))
diff --git a/tools/libs/uselibs.mk b/tools/libs/uselibs.mk
index efd7a475ba..7aa8d83e06 100644
--- a/tools/libs/uselibs.mk
+++ b/tools/libs/uselibs.mk
@@ -31,3 +31,10 @@ USELIBS_light := toollog evtchn toolcore ctrl store hypfs guest
 LIBS_LIBS += util
 USELIBS_util := light
 FILENAME_util := xlutil
+
+# Give the list of Xen library that the libraries in $(1) are linked against,
+# directly or indirectly.
+define xenlibs-dependencies
+    $(sort $(foreach lib,$(1), \
+        $(USELIBS_$(lib)) $(call xenlibs-dependencies,$(USELIBS_$(lib)))))
+endef
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 15:16:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 15:16:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.810960.1223671 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx6W1-0007Y5-VH; Sat, 05 Oct 2024 15:16:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 810960.1223671; Sat, 05 Oct 2024 15:16: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 1sx6W1-0007Xy-Ra; Sat, 05 Oct 2024 15:16:17 +0000
Received: by outflank-mailman (input) for mailman id 810960;
 Sat, 05 Oct 2024 15:16: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=edRR=RB=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sx6W0-0006TD-8a
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 15:16:16 +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 c384f09e-832c-11ef-a0bb-8be0dac302b0;
 Sat, 05 Oct 2024 17:16:15 +0200 (CEST)
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 382CC1FDDA;
 Sat,  5 Oct 2024 15:16: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 0DAB313A8F;
 Sat,  5 Oct 2024 15:16: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 k/3hAT9YAWcBCQAAD6G6ig
 (envelope-from <jgross@suse.com>); Sat, 05 Oct 2024 15:16: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: c384f09e-832c-11ef-a0bb-8be0dac302b0
Authentication-Results: smtp-out2.suse.de;
	none
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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 4/4] stubdom: add fine grained library config items to Mini-OS configs
Date: Sat,  5 Oct 2024 17:15:48 +0200
Message-ID: <20241005151548.29184-5-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241005151548.29184-1-jgross@suse.com>
References: <20241005151548.29184-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Spam-Level: 
X-Spamd-Result: default: False [-4.00 / 50.00];
	REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Spam-Flag: NO
X-Rspamd-Queue-Id: 382CC1FDDA
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org

Today Mini-OS can only be configured to use all or none Xen library.
In order to prepare a more fine grained configuration scheme, add per
library config items to the Mini-OS config files.

As some libraries pull in others, the config files need to be
extended at build time to reflect those indirect library uses.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 stubdom/.gitignore |  1 +
 stubdom/Makefile   | 49 ++++++++++++++++++++++++++++++++++------------
 2 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/stubdom/.gitignore b/stubdom/.gitignore
index 10e2547a22..c6a88467ae 100644
--- a/stubdom/.gitignore
+++ b/stubdom/.gitignore
@@ -1,3 +1,4 @@
+*.out.cfg
 /*.tar.gz
 /*-minios-config.mk
 /autom4te.cache/
diff --git a/stubdom/Makefile b/stubdom/Makefile
index 8c503c2bf8..3b501a0710 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -340,6 +340,14 @@ endef
 
 $(foreach lib,$(STUB_LIBS),$(eval $(call BUILD_lib,$(lib))))
 
+define BUILD_config
+ cp $< $@
+ for i in $(sort $(APP_LIBS) $(call xenlibs-dependencies,$(APP_LIBS))); do \
+   u=`echo $$i | tr a-z A-Z`; \
+   echo "CONFIG_LIBXEN$$u=y"; \
+ done >> $@
+endef
+
 xenstore/stamp: $(XEN_ROOT)/tools/xenstored/Makefile.common
 	$(do_links)
 
@@ -373,8 +381,12 @@ $(TARGETS_MINIOS): mini-os-%:
 # ioemu
 #######
 
-ioemu-minios-config.mk: $(CURDIR)/ioemu-minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+ioemu-minios.out.cfg: APP_LIBS = evtchn gnttab ctrl guest
+ioemu-minios.out.cfg: $(CURDIR)/ioemu-minios.cfg Makefile
+	$(BUILD_config)
+
+ioemu-minios-config.mk: ioemu-minios.out.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: ioemu
 ioemu: cross-zlib cross-libpci libxenguest ioemu-minios-config.mk
@@ -435,8 +447,12 @@ grub-upstream: grub-$(GRUB_VERSION).tar.gz
 		patch -d $@ -p1 < $$i || exit 1; \
 	done
 
-grub-$(XEN_TARGET_ARCH)-minios-config.mk: $(CURDIR)/grub/minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+grub/minios.out.cfg: APP_LIBS = guest ctrl toollog
+grub/minios.out.cfg: $(CURDIR)/grub/minios.cfg Makefile
+	$(BUILD_config)
+
+grub-$(XEN_TARGET_ARCH)-minios-config.mk: grub/minios.out.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: grub
 grub: cross-polarssl grub-upstream $(CROSS_ROOT) grub-$(XEN_TARGET_ARCH)-minios-config.mk
@@ -447,8 +463,12 @@ grub: cross-polarssl grub-upstream $(CROSS_ROOT) grub-$(XEN_TARGET_ARCH)-minios-
 # xenstore
 ##########
 
-xenstore-minios-config.mk: $(CURDIR)/xenstore-minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+xenstore-minios.out.cfg: APP_LIBS = gnttab evtchn toollog ctrl
+xenstore-minios.out.cfg: $(CURDIR)/xenstore-minios.cfg Makefile
+	$(BUILD_config)
+
+xenstore-minios-config.mk: xenstore-minios.out.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: xenstore
 xenstore: $(CROSS_ROOT) xenstore-minios-config.mk
@@ -458,8 +478,12 @@ xenstore: $(CROSS_ROOT) xenstore-minios-config.mk
 # xenstorepvh
 #############
 
-xenstorepvh-minios-config.mk: $(CURDIR)/xenstorepvh-minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+xenstorepvh-minios.out.cfg: APP_LIBS = gnttab evtchn toollog ctrl
+xenstorepvh-minios.out.cfg: $(CURDIR)/xenstorepvh-minios.cfg Makefile
+	$(BUILD_config)
+
+xenstorepvh-minios-config.mk: xenstorepvh-minios.out.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: xenstorepvh
 xenstorepvh: $(CROSS_ROOT) xenstorepvh-minios-config.mk
@@ -472,7 +496,7 @@ xenstorepvh: $(CROSS_ROOT) xenstorepvh-minios-config.mk
 .PHONY: ioemu-stubdom
 ioemu-stubdom: APP_OBJS=$(CURDIR)/ioemu/i386-stubdom/qemu.a $(CURDIR)/ioemu/i386-stubdom/libqemu.a $(CURDIR)/ioemu/libqemu_common.a
 ioemu-stubdom: mini-os-$(XEN_TARGET_ARCH)-ioemu lwip-$(XEN_TARGET_ARCH) libxenguest ioemu
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/ioemu-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(APP_OBJS)"
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/ioemu-minios.out.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(APP_OBJS)"
 
 .PHONY: c-stubdom
 c-stubdom: mini-os-$(XEN_TARGET_ARCH)-c lwip-$(XEN_TARGET_ARCH) libxenguest c
@@ -488,7 +512,7 @@ vtpmmgr-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpmmgr vtpmmgr
 
 .PHONY: pv-grub
 pv-grub: mini-os-$(XEN_TARGET_ARCH)-grub libxenguest grub
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/grub/minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/grub-$(XEN_TARGET_ARCH)/main.a
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/grub/minios.out.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/grub-$(XEN_TARGET_ARCH)/main.a
 
 .PHONY: pv-grub-if-enabled
 ifneq ($(filter grub,$(STUBDOM_TARGETS)),)
@@ -499,11 +523,11 @@ endif
 
 .PHONY: xenstore-stubdom
 xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxenguest xenstore
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.out.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a
 
 .PHONY: xenstorepvh-stubdom
 xenstorepvh-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstorepvh libxenguest xenstorepvh
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstorepvh-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstorepvh/xenstored.a
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstorepvh-minios.out.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstorepvh/xenstored.a
 
 #########
 # install
@@ -605,6 +629,7 @@ clean:
 	rm -fr grub-$(XEN_TARGET_ARCH)
 	rm -f $(STUBDOMPATH)
 	rm -f *-minios-config.mk
+	rm -f *.out.cfg
 	rm -fr pkg-config
 	-[ ! -d ioemu ] || $(MAKE) DESTDIR= -C ioemu clean
 	-[ ! -d xenstore ] || $(MAKE) -f $(CURDIR)/xenlibs.mk -C xenstore clean
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Sat Oct 05 16:48:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 16:48:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811017.1223680 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx7wc-0005Pm-AH; Sat, 05 Oct 2024 16:47:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811017.1223680; Sat, 05 Oct 2024 16:47: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 1sx7wc-0005Pf-7h; Sat, 05 Oct 2024 16:47:50 +0000
Received: by outflank-mailman (input) for mailman id 811017;
 Sat, 05 Oct 2024 16:47: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 1sx7wb-0005PV-4A; Sat, 05 Oct 2024 16:47: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 1sx7wa-0001zQ-Me; Sat, 05 Oct 2024 16:47: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 1sx7wa-00036W-7z; Sat, 05 Oct 2024 16:47:48 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sx7wa-0007gP-7c; Sat, 05 Oct 2024 16:47: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=arhf+L1Zxya7/oukAlHITntcCO+GdToNudl/SG86pwo=; b=AnF4Xe3M04VvV1RjFUiFmP0x0Z
	CY7b1jNRQ5Stb5EVSSb4hQlhRJIf+X6qkj5uAH2Vamsu+0GWNvkX9wZSHYLq1Zm54FAUoSg6snUE6
	zGaZQ61gfh4GVOd+RYyV31hrhjSglKPmRJ8wJvupWU+h3jb57a683wYCME3eoA2rkOSw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187978-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187978: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=a3fb4e93a3a7cf2be355c41cd550bef856f5ffe4
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 16:47:48 +0000

flight 187978 qemu-mainline real [real]
flight 187982 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187978/
http://logs.test-lab.xenproject.org/osstest/logs/187982/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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          15 migrate-support-check        fail   never pass
 test-arm64-arm64-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-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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

version targeted for testing:
 qemuu                a3fb4e93a3a7cf2be355c41cd550bef856f5ffe4
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   19 days
Failing since        187731  2024-09-17 13:11:20 Z   18 days   30 attempts
Testing same since   187978  2024-10-05 03:15:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jones <ajones@ventanamicro.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 7456 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 18:08:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 18:08:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811039.1223690 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sx9Bw-0007HD-UJ; Sat, 05 Oct 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 811039.1223690; Sat, 05 Oct 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 1sx9Bw-0007H6-Rn; Sat, 05 Oct 2024 18:07:44 +0000
Received: by outflank-mailman (input) for mailman id 811039;
 Sat, 05 Oct 2024 18:07: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=qT++=RB=kernel.org=pr-tracker-bot@srs-se1.protection.inumbo.net>)
 id 1sx9Bv-0007H0-6s
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 18:07:43 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b5dd9977-8344-11ef-a0bb-8be0dac302b0;
 Sat, 05 Oct 2024 20:07:41 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 4D30FA40840;
 Sat,  5 Oct 2024 18:07:31 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 729A3C4CEC2;
 Sat,  5 Oct 2024 18:07:39 +0000 (UTC)
Received: from [10.30.226.235] (localhost [IPv6:::1])
 by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id
 7109D3806656; Sat,  5 Oct 2024 18:07: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: b5dd9977-8344-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728151659;
	bh=kOk1mEifP5ATm7KsX2A7pW+Oe5vTm9hLLRMZ9JhqF+w=;
	h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
	b=YpzSyoIoqU49nCLEjAXb0xYnAFxItNRqMoE1lQOHBcWx9tHUmLzMdgon4LCsrLwnP
	 hhTDtnTNtDwbK61fncNLEF/3CgYzsrdRwsNkbTw5uwd0d2qKenSOBdUor7QXvWL7dC
	 Q2JvR9MfZhWG8V5JZzck8aJu8KU690rzaZTKDFEX6DYyZY9+M78Q+4wPmPMN8/iRvH
	 Mut6OgxqLblN9g1+3cJvJ4nZW+ZjotNXFHQe6n4Bs6LVtrelQrOXCL75Jl4RnlICTj
	 v40uhpBwbnJLf2vRTOXcjVAzb8yoWjAYZbeYcpQ+ofT7GU9nsQWeO6atAhPwlrb017
	 Jx0dfLgIiZTXQ==
Subject: Re: [GIT PULL] xen: branch for v6.12-rc2
From: pr-tracker-bot@kernel.org
In-Reply-To: <20241005150431.12546-1-jgross@suse.com>
References: <20241005150431.12546-1-jgross@suse.com>
X-PR-Tracked-List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
X-PR-Tracked-Message-Id: <20241005150431.12546-1-jgross@suse.com>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc2-tag
X-PR-Tracked-Commit-Id: 9af48210ea5f1539e1999154b0acd343efdb370b
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: fc20a3e57247e21e1bd582f604b20bf898f7d111
Message-Id: <172815166291.3145223.6038597083348976320.pr-tracker-bot@kernel.org>
Date: Sat, 05 Oct 2024 18:07:42 +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 Sat,  5 Oct 2024 17:04:31 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc2-tag

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/fc20a3e57247e21e1bd582f604b20bf898f7d111

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 20:40:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 20:40:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811054.1223700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxBZk-0001f4-Ls; Sat, 05 Oct 2024 20:40:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811054.1223700; Sat, 05 Oct 2024 20:40: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 1sxBZk-0001ex-JI; Sat, 05 Oct 2024 20:40:28 +0000
Received: by outflank-mailman (input) for mailman id 811054;
 Sat, 05 Oct 2024 20:40: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 1sxBZj-0001el-Er; Sat, 05 Oct 2024 20:40: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 1sxBZi-0005xQ-NP; Sat, 05 Oct 2024 20:40: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 1sxBZi-0003k9-AN; Sat, 05 Oct 2024 20:40:26 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxBZi-00026j-9q; Sat, 05 Oct 2024 20:40: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=8SxNb4yjWVBEta9VkNO/XirhGNeEKSZviyitwgwxm6w=; b=Z1y7ehUcOzZA7qxPshsl/Q5wLf
	4tVg733B0oMr/GRE/exGFDmhh4/ZcYW24VVugf5aSRqsrOwoyxFhXiK3VqldjZ0837gsjeYuGe77e
	c8kRTG47Xk+nXwKiU6ZmK45z3ZXMm30ZqvrYM2J0p+j3RhG2bn3mSK/CXDmby6NECusk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187979-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187979: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-qemuu-freebsd11-amd64:guest-start/freebsd.repeat:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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:saverestore-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-credit2:saverestore-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-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu: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-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-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=6b20755c24ccd69d2482b45dfb9193940cdc346e
X-Osstest-Versions-That:
    xen=d82e0e094e7a07353ba0fb35732724316c2ec2f6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 05 Oct 2024 20:40:26 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-qemuu-freebsd11-amd64 21 guest-start/freebsd.repeat fail pass in 187984-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187968
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187968
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187968
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187968
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187968
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187968
 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-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-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-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  6b20755c24ccd69d2482b45dfb9193940cdc346e
baseline version:
 xen                  d82e0e094e7a07353ba0fb35732724316c2ec2f6

Last test of basis   187968  2024-10-04 13:47:40 Z    1 days
Testing same since   187979  2024-10-05 06:02:32 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Federico Serafini <federico.serafini@bugseng.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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-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-qemuu-freebsd11-amd64                       fail    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   d82e0e094e..6b20755c24  6b20755c24ccd69d2482b45dfb9193940cdc346e -> master


From xen-devel-bounces@lists.xenproject.org Sat Oct 05 23:38:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 05 Oct 2024 23:38:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811094.1223747 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxELN-00064M-2Y; Sat, 05 Oct 2024 23:37:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811094.1223747; Sat, 05 Oct 2024 23: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 1sxELM-00064F-VC; Sat, 05 Oct 2024 23:37:48 +0000
Received: by outflank-mailman (input) for mailman id 811094;
 Sat, 05 Oct 2024 23: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=+vXK=RB=zytor.com=hpa@srs-se1.protection.inumbo.net>)
 id 1sxELL-000649-SM
 for xen-devel@lists.xenproject.org; Sat, 05 Oct 2024 23:37:48 +0000
Received: from mail.zytor.com (torg.zytor.com [2607:7c80:54:3::138])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d1160ecd-8372-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 01:37:45 +0200 (CEST)
Received: from [172.27.0.16] ([76.133.66.138]) (authenticated bits=0)
 by mail.zytor.com (8.18.1/8.17.1) with ESMTPSA id 495NapwS1593555
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NO);
 Sat, 5 Oct 2024 16:36:52 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d1160ecd-8372-11ef-a0bb-8be0dac302b0
DKIM-Filter: OpenDKIM Filter v2.11.0 mail.zytor.com 495NapwS1593555
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zytor.com;
	s=2024091601; t=1728171417;
	bh=m2bDCv+JjGunSzRwzd1ZUTedJ+jUnwm4JpAQk4uZ2LU=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=BghJEQ18w7kVZdQoBcXCZs0SU3bcgDNp6CXGpXr7UatIaOcHRnO7Ki4rpVZIgv9pe
	 Nz/Yk9sWAKxmvlzBMFe+EzcwMpOVx8UY7o5nMcwClHG2k8LpXw0UQzSqj2Ekiu9nFP
	 wt8vdbGEEzYAHkF9s6cSQNFQmtVxTKG2NMzwvRANGuDKm19FSlXxR5j1m1jSvaYdtx
	 sgCWbTe/DYdl96GonJp4olM5FfNyVaxnYW3tvOSS7nL1Z6OVpcsDWxBZnYXqBOzYxJ
	 3JEuMDZsQny031HV9xMehx7Re34CsvirpbQ/mcBdKSCBdY6WlekkljNm2jzhEgdjiU
	 mKVdT3IwdQMNA==
Message-ID: <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com>
Date: Sat, 5 Oct 2024 16:36:48 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: Uros Bizjak <ubizjak@gmail.com>
Cc: Ard Biesheuvel <ardb@kernel.org>,
        Linus Torvalds <torvalds@linux-foundation.org>,
        Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org,
        x86@kernel.org, Andy Lutomirski <luto@kernel.org>,
        Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>,
        Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>,
        Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
        Paolo Bonzini <pbonzini@redhat.com>,
        Vitaly Kuznetsov <vkuznets@redhat.com>,
        Juergen Gross <jgross@suse.com>,
        Boris Ostrovsky
 <boris.ostrovsky@oracle.com>,
        Greg Kroah-Hartman
 <gregkh@linuxfoundation.org>,
        Arnd Bergmann <arnd@arndb.de>, Masahiro Yamada <masahiroy@kernel.org>,
        Kees Cook <kees@kernel.org>, Nathan Chancellor <nathan@kernel.org>,
        Keith Packard <keithp@keithp.com>,
        Justin Stitt <justinstitt@google.com>,
        Josh Poimboeuf <jpoimboe@kernel.org>,
        Arnaldo Carvalho de Melo <acme@kernel.org>,
        Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
        Ian Rogers <irogers@google.com>,
        Adrian Hunter <adrian.hunter@intel.com>,
        Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org,
        linux-pm@vger.kernel.org, kvm@vger.kernel.org,
        xen-devel@lists.xenproject.org, linux-efi@vger.kernel.org,
        linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org,
        linux-kbuild@vger.kernel.org, linux-perf-users@vger.kernel.org,
        rust-for-linux@vger.kernel.org, llvm@lists.linux.dev
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com>
 <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
 <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com>
 <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
Content-Language: en-US
From: "H. Peter Anvin" <hpa@zytor.com>
In-Reply-To: <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 10/5/24 01:31, Uros Bizjak wrote:
>>
>> movq $sym to leaq sym(%rip) which you said ought to be smaller (and in
>> reality appears to be the same size, 7 bytes) seems like a no-brainer
>> and can be treated as a code quality issue -- in other words, file bug
>> reports against gcc and clang.
> 
> It is the kernel assembly source that should be converted to
> rip-relative form, gcc (and probably clang) have nothing with it.
> 

Sadly, that is not correct; neither gcc nor clang uses lea:

	-hpa


gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC)

hpa@tazenda:/tmp$ cat foo.c
int foobar;

int *where_is_foobar(void)
{
         return &foobar;
}

hpa@tazenda:/tmp$ gcc -mcmodel=kernel -O2 -c -o foo.o foo.c
hpa@tazenda:/tmp$ objdump -dr foo.o

foo.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <where_is_foobar>:
    0:   48 c7 c0 00 00 00 00    mov    $0x0,%rax
                         3: R_X86_64_32S foobar
    7:   c3                      ret

clang version 18.1.8 (Fedora 18.1.8-1.fc40)

hpa@tazenda:/tmp$ clang -mcmodel=kernel -O2 -c -o foo.o foo.c
hpa@tazenda:/tmp$ objdump -dr foo.o

foo.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <where_is_foobar>:
    0:   48 c7 c0 00 00 00 00    mov    $0x0,%rax
                         3: R_X86_64_32S foobar
    7:   c3                      ret



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 00:06:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 00:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811103.1223757 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxEn4-0002OQ-W6; Sun, 06 Oct 2024 00:06:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811103.1223757; Sun, 06 Oct 2024 00:06: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 1sxEn4-0002OJ-Sv; Sun, 06 Oct 2024 00:06:26 +0000
Received: by outflank-mailman (input) for mailman id 811103;
 Sun, 06 Oct 2024 00:06: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=WT1T=RC=linuxfoundation.org=torvalds@srs-se1.protection.inumbo.net>)
 id 1sxEn3-0002Jj-8g
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 00:06:25 +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 d2d12c67-8376-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 02:06:24 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c882864d3aso3569309a12.2
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 17:06:24 -0700 (PDT)
Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com.
 [209.85.208.52]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e0598abdsm1497079a12.3.2024.10.05.17.06.21
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 05 Oct 2024 17:06:22 -0700 (PDT)
Received: by mail-ed1-f52.google.com with SMTP id
 4fb4d7f45d1cf-5c882864d3aso3569283a12.2
 for <xen-devel@lists.xenproject.org>; Sat, 05 Oct 2024 17:06:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2d12c67-8376-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linux-foundation.org; s=google; t=1728173183; x=1728777983; 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=zwWtZnU6O3CUnR/7Ge8+NpuQOrJwSLSqT8+8zcDG8JI=;
        b=Jamf1JDj/llvRCSRTO441y0GpjiRQSwZlk5GCO8CUTOsM5soxSFrr2flD6OJbQcS5z
         VzOZ5B+ECAHxeZvfyDATQxQM5ua0gMj8jwUJ8n4ZJWqLEEqT6EALFKGCnRaWMU2m3big
         LSJPwhSu8+Ac6vkFh+dVH7tBnyzg624u+8iKM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728173183; x=1728777983;
        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=zwWtZnU6O3CUnR/7Ge8+NpuQOrJwSLSqT8+8zcDG8JI=;
        b=SPU42PmQpgXuYczUcKDO9eORp8H4i9yjkh6kDNffdrJ/9e0aFMQWjeLG2GZ2lC8Qk7
         XMa6WnCE48ftMmAWTvQB2B/8JmwlOjJ0qgw2qs57Ku7eiDg7SmypnGA8grvPoEMp0imp
         eilz7hvWABJdb+csbro0ayo8S/OpyC2z14p8D30sJhVnp57dRNNw0EGWF691K9NzYECB
         2tdQruuXcPTysfk5BS8RnWCM1HFVm8UytASharnKczEQSXFaYPkUJHw0WlbCEYKZnAPm
         TB9ReT8/XobXWtn8dO2lcYZxVjl6x/JKGfgdeyDBuWBsqte0QaDJe9If8/YYLXdW3trG
         NCcA==
X-Forwarded-Encrypted: i=1; AJvYcCVe/Rp9FRUVTJN/6IZ+8/15AbRIPXThkAjJmGd6XMQKQy46NO7cukkLdNyjM731iS06wONX/YM05FM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyu7EsIDVWHYBpWNKLwS2Jlp+qytkplqF2snAwbuMa8qPGTjeQp
	OfGFb7MBCjwk1qJDVRgxlVjdSYCfu/oxFKWidZvC9Hn1XluXGs/RUKkUG9SmMKMZ2Z7u3kRGiuu
	7RIYJTA==
X-Google-Smtp-Source: AGHT+IFszf4YTb+YEh0ezdEgZNybAQ7JSJu9CfSttf4MikCby3QF8dHeLv80Fsqa4AFmNFkDTIn00w==
X-Received: by 2002:a05:6402:50d0:b0:5c3:c520:b019 with SMTP id 4fb4d7f45d1cf-5c8d2eb4d87mr5212354a12.34.1728173183163;
        Sat, 05 Oct 2024 17:06:23 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCVSI3iTfqYGgn3imwPqRjluswSdPs0rEUoS6n21TWHBhqPitAqyF3j7FyVaEoTsWKnQDBjApHzASao=@lists.xenproject.org
X-Received: by 2002:a17:907:9693:b0:a99:3d93:c8bc with SMTP id
 a640c23a62f3a-a993d93cc22mr339286866b.13.1728172818387; Sat, 05 Oct 2024
 17:00:18 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
 <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com> <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
 <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com>
In-Reply-To: <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com>
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Sat, 5 Oct 2024 17:00:01 -0700
X-Gmail-Original-Message-ID: <CAHk-=wgkgnyW2V4gQQTDAOKXGZH0fqN=hApz1LFAE3OC3fhhrQ@mail.gmail.com>
Message-ID: <CAHk-=wgkgnyW2V4gQQTDAOKXGZH0fqN=hApz1LFAE3OC3fhhrQ@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Uros Bizjak <ubizjak@gmail.com>, Ard Biesheuvel <ardb@kernel.org>, 
	Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, x86@kernel.org, 
	Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, 
	Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, 
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"

On Sat, 5 Oct 2024 at 16:37, H. Peter Anvin <hpa@zytor.com> wrote:
>
> Sadly, that is not correct; neither gcc nor clang uses lea:

Looking around, this may be intentional. At least according to Agner,
several cores do better at "mov immediate" compared to "lea".

Eg a RIP-relative LEA on Zen 2 gets a throughput of two per cycle, but
a "MOV r,i" gets four. That got fixed in Zen 3 and later, but
apparently Intel had similar issues (Ivy Bridge: 1 LEA per cycle, vs 3
"mov i,r". Haswell is 1:4).

Of course, Agner's tables are good, but not necessarily always the
whole story. There are other instruction tables on the internet (eg
uops.info) with possibly more info.

And in reality, I would expect it to be a complete non-issue with any
OoO engine and real code, because you are very seldom ALU limited
particularly when there aren't any data dependencies.

But a RIP-relative LEA does seem to put a *bit* more pressure on the
core resources, so the compilers are may be right to pick a "mov".

               Linus


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 00:28:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 00:28:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811112.1223767 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxF8A-0005mK-P4; Sun, 06 Oct 2024 00:28:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811112.1223767; Sun, 06 Oct 2024 00: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 1sxF8A-0005mD-M0; Sun, 06 Oct 2024 00:28:14 +0000
Received: by outflank-mailman (input) for mailman id 811112;
 Sun, 06 Oct 2024 00:28: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 1sxF89-0005m3-Ub; Sun, 06 Oct 2024 00:28: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 1sxF89-0001tZ-LS; Sun, 06 Oct 2024 00:28: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 1sxF89-00014K-71; Sun, 06 Oct 2024 00:28:13 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxF89-00058E-6W; Sun, 06 Oct 2024 00:28: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=0U4QH4PBs3sbqQKysXutRRQViYe0HoNaCg+1lNZalyQ=; b=Cv34Sb8d3L0aNZvk1Ktdgax2rV
	y2kr1p8iZtmFxslD/DqNUUjrH1PODEjT7Bb9dKNHNNRoLt7p4s/6+fcKwGds4o9VNcvfW/pO7AXD+
	qEgPrlAAC4LGF/j9kxF6s7K/OA+HXw3L2/ti/+H0MG02sirkZyMaHoLgiZf0Rk9KBBrQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187981-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187981: regressions - trouble: broken/fail/pass
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-xl-raw:<job status>:broken:regression
    linux-linus:test-armhf-armhf-xl-raw:host-install(5):broken:regression
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-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: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-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-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-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-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-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-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-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:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=27cc6fdf720183dce1dbd293483ec5a9cb6b595e
X-Osstest-Versions-That:
    linux=0c559323bbaabee7346c12e74b497e283aaafef5
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 06 Oct 2024 00:28:13 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-raw         <job status>                 broken
 test-armhf-armhf-xl-raw       5 host-install(5)        broken REGR. vs. 187970
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail REGR. vs. 187970

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187970
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187970
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187970
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187970
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187970
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187970
 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-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-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-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-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-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-amd64-amd64-libvirt-qcow2 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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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     15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                27cc6fdf720183dce1dbd293483ec5a9cb6b595e
baseline version:
 linux                0c559323bbaabee7346c12e74b497e283aaafef5

Last test of basis   187970  2024-10-04 17:41:58 Z    1 days
Testing same since   187981  2024-10-05 10:56:41 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abdul Rahim <abdul.rahim@myyahoo.com>
  Abhishek Tamboli <abhishektamboli9@gmail.com>
  Ai Chao <aichao@kylinos.cn>
  Al Viro <viro@zeniv.linux.org.uk>
  Alessandro Zanni <alessandro.zanni87@gmail.com>
  Alex Deucher <alexander.deucher@amd.com>
  Alex Hung <alex.hung@amd.com>
  Alexandre Belloni <alexandre.belloni@bootlin.com>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alexey Klimov <alexey.klimov@linaro.org>
  Alison Schofield <alison.schofield@intel.com>
  Andrei Simion <andrei.simion@microchip.com>
  Ard Biesheuvel <ardb@kernel.org>
  Armin Wolf <W_Armin@gmx.de>
  Ashutosh Dixit <ashutosh.dixit@intel.com>
  Aurabindo Pillai <aurabindo.pillai@amd.com>
  Ba Jing <bajing@cmss.chinamobile.com>
  Baojun Xu <baojun.xu@ti.com>
  Bard Liao <yung-chuan.liao@linux.intel.com>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Ben Hutchings <benh@debian.org>
  Benjamin Tissoires <bentiss@kernel.org>
  Boris Brezillon <boris.brezillon@collabora.com>
  Catalin Marinas <catalin.marinas@arm.com>
  Charlene Liu <Charlene.Liu@amd.com>
  Charles Han <hanchunchao@inspur.com>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Christian König <christian.koenig@amd.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Chun-Yi Lee <jlee@suse.com>
  Chun-Yi Lee <joeyli.kernel@gmail.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Wheeler <daniel.wheeler@amd.com>
  Danilo Krummrich <dakr@kernel.org>
  Dave Airlie <airlied@redhat.com>
  David Arendt <admin@prnet.org>
  David Lawrence Glanzman <davidglanzman@yahoo.com>
  David Sterba <dsterba@suse.com>
  Derek Foreman <derek.foreman@collabora.com>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Easwar Hariharan <eahariha@linux.microsoft.com>
  Eder Zulian <ezulian@redhat.com>
  Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
  Fangzhi Zuo <Jerry.Zuo@amd.com>
  Filipe Manana <fdmanana@suse.com>
  Gianfranco Trad <gianf.trad@gmail.com>
  Guenter Roeck <linux@roeck-us.net>
  Guixin Liu <kanie@linux.alibaba.com>
  Gustavo Sousa <gustavo.sousa@intel.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans P. Moller <hmoller@uc.cl>
  He Lugang <helugang@uniontech.com>
  Heiko Stuebner <heiko@sntech.de>
  Hui Wang <hui.wang@canonical.com>
  Ilya Dryomov <idryomov@gmail.com>
  Imre Deak <imre.deak@intel.com>
  Jan Kara <jack@suse.cz>
  Jan Lalinsky <lalinsky@c4.cz>
  Jani Nikula <jani.nikula@intel.com>
  Janne Grunau <j@jannau.net>
  Jaroslav Kysela <perex@perex.cz>
  Jason A. Donenfeld <Jason@zx2c4.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johannes Thumshirn <johannes.thumshirn@wdc.com>
  John Stultz <jstultz@google.com>
  Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
  Josef Bacik <josef@toxicpanda.com>
  Joseph Jang <jjang@nvidia.com>
  José Roberto de Souza <jose.souza@intel.com>
  Julia Lawall <Julia.Lawall@inria.fr>
  Keerthy <j-keerthy@ti.com>
  Keith Busch <kbusch@kernel.org>
  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
  Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  Leo Li <sunpeng.li@amd.com>
  Leo Martins <loemra.dev@gmail.com>
  Lianqin Hu <hulianqin@vivo.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Liviu Dudau <liviu.dudau@arm.com>
  Lizhi Xu <lizhi.xu@windriver.com>
  Lucas De Marchi <lucas.demarchi@intel.com>
  Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
  Mark Brown <broonie@kernel.org>
  Mark Rutland <mark.rutland@arm.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Matt Roper <matthew.d.roper@intel.com>
  Matthew Auld <matthew.auld@intel.com>
  Matthew Brost <matthew.brost@intel.com>
  Maxime Ripard <mripard@kernel.org>
  Min-Hua Chen <minhuadotchen@gmail.com>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Miquel Sabaté Solà <mikisabate@gmail.com>
  Nikolai Afanasenkov <nikolai.afanasenkov@hp.com>
  Nilay Shroff <nilay@linux.ibm.com>
  Oder Chiou <oder_chiou@realtek.com>
  Oldherl Oh <me@oldherl.one>
  Pali Rohár <pali@kernel.org>
  Palmer Dabbelt <palmer@rivosinc.com>
  Parth Pancholi <parth.pancholi@toradex.com>
  Patrick Donnelly <pdonnell@redhat.com>
  Paulo Alcantara (Red Hat) <pc@manguebit.com>
  Philipp Stanner <pstanner@redhat.com>
  Pu Lehui <pulehui@huawei.com>
  Qu Wenruo <wqu@suse.com>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
  Rob Clark <robdclark@chromium.org>
  Rob Herring (Arm) <robh@kernel.org>
  Rodrigo Vivi <rodrigo.vivi@intel.com>
  Sami Tolvanen <samitolvanen@google.com>
  Sebastian Andrzej Siewior <bigeasy@linutronix.de>
  Shen Lichuan <shenlichuan@vivo.com>
  Shengjiu Wang <shengjiu.wang@nxp.com>
  Shuah Khan <skhan@linuxfoundation.org>
  Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  Steve French <stfrench@microsoft.com>
  Steven Price <steven.price@arm.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Steven Rostedt <rostedt@goodmis.org>
  syzbot+7a4842f0b1801230a989@syzkaller.appspotmail.com
  syzbot+8901c4560b7ab5c2f9df@syzkaller.appspotmail.com
  Takashi Iwai <tiwai@suse.de>
  Tang Bin <tangbin@cmss.chinamobile.com>
  Thomas Gleixner <tglx@linutronix.de>
  Thomas Zimmermann <tzimmermann@suse.de>
  Thorsten Blum <thorsten.blum@toblux.com>
  Tom Chung <chiahsuan.chung@amd.com>
  Tomas Glozar <tglozar@redhat.com>
  Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
  Uladzislau Rezki (Sony) <urezki@gmail.com>
  Uwe Kleine-König <u.kleine-koenig@baylibre.com>
  Uwe Kleine-König <ukleinek@debian.org>
  Vignesh Raghavendra <vigneshr@ti.com>
  Vijendar Mukunda <Vijendar.Mukunda@amd.com>
  Viresh Kumar <viresh.kumar@linaro.org>
  Vlastimil Babka <vbabka@suse.cz>
  wangrong <wangrong@uniontech.com>
  Wei Li <liwei391@huawei.com>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  xiao sheng wen <atzlinux@sina.com>
  Yi Zhang <yi.zhang@redhat.com>
  Yifei Liu <yifei.l.liu@oracle.com>
  Yihan Zhu <Yihan.Zhu@amd.com>
  Yu Jiaoliang <yujiaoliang@vivo.com>
  Yun Lu <luyun@kylinos.cn>
  Zhanjun Dong <zhanjun.dong@intel.com>
  Zhao Mengmeng <zhaomengmeng@kylinos.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                 fail    
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-raw                                      broken  
 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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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-raw broken
broken-step test-armhf-armhf-xl-raw host-install(5)

Not pushing.

(No revision log; it would be 4857 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 03:52:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 03:52:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811131.1223777 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxIJZ-0005SO-4K; Sun, 06 Oct 2024 03:52:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811131.1223777; Sun, 06 Oct 2024 03:52: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 1sxIJY-0005S6-Uy; Sun, 06 Oct 2024 03:52:12 +0000
Received: by outflank-mailman (input) for mailman id 811131;
 Sun, 06 Oct 2024 03:52:12 +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 1sxIJY-0005Rw-25; Sun, 06 Oct 2024 03:52:12 +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 1sxIJX-0004fo-RU; Sun, 06 Oct 2024 03:52: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 1sxIJX-0000M0-Ah; Sun, 06 Oct 2024 03:52:11 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxIJX-0004Qj-A9; Sun, 06 Oct 2024 03:52: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>
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=luUgpCshfHrR2orJmAJY8DtqTvfiToXivD5hG2ZAGLw=; b=sHKgmzLAjbXw/JQyP1VwrfoxJo
	3TukFlJZt5IaLrCckea4YH+8AEZWygN4LO2useeqHnIUkZD0QN9KU94L+RPyFCQJePaJSCPWDe4wT
	GtmS27r+/CIV0vapQ7Tcbm+pOeO/ee0vStmZpcGrcwcJRDL+Dxl8gHpoAsKh5s+qnW6M=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187983-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187983: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:host-ping-check-xen:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=a3fb4e93a3a7cf2be355c41cd550bef856f5ffe4
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 06 Oct 2024 03:52:11 +0000

flight 187983 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/187983/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt     10 host-ping-check-xen        fail pass in 187978

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt 16 saverestore-support-check fail in 187978 like 187720
 test-armhf-armhf-libvirt    15 migrate-support-check fail in 187978 never pass
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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          15 migrate-support-check        fail   never pass
 test-arm64-arm64-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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-arndale  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

version targeted for testing:
 qemuu                a3fb4e93a3a7cf2be355c41cd550bef856f5ffe4
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   19 days
Failing since        187731  2024-09-17 13:11:20 Z   18 days   31 attempts
Testing same since   187978  2024-10-05 03:15:05 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jones <ajones@ventanamicro.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 7456 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 08:00:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 08:00:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811156.1223788 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxMBE-0001Oo-S3; Sun, 06 Oct 2024 07:59:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811156.1223788; Sun, 06 Oct 2024 07: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 1sxMBE-0001Oh-Nt; Sun, 06 Oct 2024 07:59:52 +0000
Received: by outflank-mailman (input) for mailman id 811156;
 Sun, 06 Oct 2024 07:59: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=7wyB=RC=gmail.com=ubizjak@srs-se1.protection.inumbo.net>)
 id 1sxMBC-0001Ob-W4
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 07:59:51 +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 f5b32931-83b8-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 09:59:49 +0200 (CEST)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2fad5024b8dso38792181fa.1
 for <xen-devel@lists.xenproject.org>; Sun, 06 Oct 2024 00:59:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f5b32931-83b8-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728201588; x=1728806388; 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=TPKYyYBqIk2nde1TDg/wyIZWJzsFsCGXcjUuTc5pqeY=;
        b=k4F+Y31N5GRr4Q1vu/gWodvWe4TktrOmaiexYxkFjOcG/T5CoAWlKOYDgDoX3Fs048
         fhsgkRZV48Zh1zqdIjCnMULgheDiUqekct0755kUH9o17zSvTptDgwO9JchwCoJ3NQd/
         imRbts9J76XabvqdQzOR2GL94Z4r+5nTBgzS1RvpaxFupDSL17gvxFCBCfCOgH6suXEZ
         ryZuXnRL1V7TqmmvyW/Gq5sCnJWCGiK2wjjE9pTVXxw5b5IytgICQuac/9uhfSnEqP4p
         BB1Vq6sribSN8TbIOy0dl11EmmwMS0nIIaE0gxCPaRYNHamoUpK1nZtFzRgbE7ID/c+M
         zcqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728201588; x=1728806388;
        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=TPKYyYBqIk2nde1TDg/wyIZWJzsFsCGXcjUuTc5pqeY=;
        b=Fj3l8NJheniSYehIS7R+/3dIvkBJBG3zLR2cL5avAfVYUlm/jWQGtIWBYucvHpH75N
         HPLOZsAPOaX88Ibp6w5NhcEma7Qyqk8A98r+9REobBpxJQu4UQOPiKdKG+0S24+F5I6T
         7APKr7it3Bas0s9Orl3b/LIiCDOnTR/fi6ulCXf9NxSmJlgkw6KDVzIiHGl+g2pqNObl
         Mx82FaXTncLlcOJXrJWJjfRu6MB3mJ66QVu9qnANbSXEggQf3j3F+EQLBx2MOZJTDuG5
         kbY3y+cJSEmGbeqWe0izq31Mn3ekK1eDHUXHyLPpvbNZo1AJBG+TDYOlQFv/I8pbCzrk
         C+sQ==
X-Forwarded-Encrypted: i=1; AJvYcCWRfCisYmzEcHLTFVebshliuvuM9CG1oakpcRyhR0ax4YpRWtBtonwji7xjD8atGPEQtMDaY+7OS68=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzG9JYCUSmqEayFkg6xwVWmVwJNC1ALK4XoMgLK1HSQwmKHcGE8
	DjR9sga1WMl2qzz+N0vMxOyIrD9lAmjYOYhK7JFb9vdU6uP4ImNwk2QgHhINBJ+h7qsfJmfMyvh
	AUVKYL7HoyXPExUcbN+6yLtdsja4=
X-Google-Smtp-Source: AGHT+IE2zUoTNKRDJOdgkWI5Cw6UcFhRdeh7rJkjxE6MXyTsb+8X3cwADhQlSBEhykzT0ML1M4fcluEMHpcmKEmwoVU=
X-Received: by 2002:a05:651c:1549:b0:2fa:c873:45ce with SMTP id
 38308e7fff4ca-2faf3c64dcemr33189261fa.30.1728201588155; Sun, 06 Oct 2024
 00:59:48 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
 <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com> <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
 <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com>
In-Reply-To: <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com>
From: Uros Bizjak <ubizjak@gmail.com>
Date: Sun, 6 Oct 2024 09:59:40 +0200
Message-ID: <CAFULd4b==a7H0zdGVfABntL0efrS-F3eeHGu-63oyz1eh1DwXQ@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ard Biesheuvel <ardb@kernel.org>, Linus Torvalds <torvalds@linux-foundation.org>, 
	Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, x86@kernel.org, 
	Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, 
	Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, 
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, Oct 6, 2024 at 1:37=E2=80=AFAM H. Peter Anvin <hpa@zytor.com> wrote=
:
>
> On 10/5/24 01:31, Uros Bizjak wrote:
> >>
> >> movq $sym to leaq sym(%rip) which you said ought to be smaller (and in
> >> reality appears to be the same size, 7 bytes) seems like a no-brainer
> >> and can be treated as a code quality issue -- in other words, file bug
> >> reports against gcc and clang.
> >
> > It is the kernel assembly source that should be converted to
> > rip-relative form, gcc (and probably clang) have nothing with it.
> >
>
> Sadly, that is not correct; neither gcc nor clang uses lea:
>
>         -hpa
>
>
> gcc version 14.2.1 20240912 (Red Hat 14.2.1-3) (GCC)
>
> hpa@tazenda:/tmp$ cat foo.c
> int foobar;
>
> int *where_is_foobar(void)
> {
>          return &foobar;
> }
>
> hpa@tazenda:/tmp$ gcc -mcmodel=3Dkernel -O2 -c -o foo.o foo.c

Indeed, but my reply was in the context of -fpie, which guarantees RIP
relative access. IOW, the compiler will always generate sym(%rip) with
-fpie, but (obviously) can't change assembly code in the kernel when
the PIE is requested.

Otherwise, MOV $immediate, %reg is faster when PIE is not required,
which is the case with -mcmodel=3Dkernel. IIRC, LEA with %rip had some
performance issues, which may not be the case anymore with newer
processors.

Due to the non-negligible impact of PIE, perhaps some kind of
CONFIG_PIE config definition should be introduced, so the assembly
code would be able to choose optimal asm sequence when PIE and non-PIE
is requested?

Uros.


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 08:06:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 08:06:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811164.1223796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxMHt-0003et-HC; Sun, 06 Oct 2024 08:06:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811164.1223796; Sun, 06 Oct 2024 08: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 1sxMHt-0003em-EQ; Sun, 06 Oct 2024 08:06:45 +0000
Received: by outflank-mailman (input) for mailman id 811164;
 Sun, 06 Oct 2024 08: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=7wyB=RC=gmail.com=ubizjak@srs-se1.protection.inumbo.net>)
 id 1sxMHr-0003eg-Rk
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 08:06: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 eb799611-83b9-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 10:06:41 +0200 (CEST)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2fad100dd9eso34906671fa.3
 for <xen-devel@lists.xenproject.org>; Sun, 06 Oct 2024 01:06:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb799611-83b9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728202001; x=1728806801; 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=puHS7d7azwqNXLt828Ye1D2ZDeZMXjrh1xk6a66e+BY=;
        b=VsOIBDs63fgOf3NArO44UUxjFuy9LC0QnsZ/drNkqXAD0Kn4NGlwiMt/Xv27f/1Ukq
         4WRbmbQ6E5a/6ktip+W4rLv678Ywdj9QGKjJYB7lZO1jQ2+DgMLMVlILV2LRxxOQt/el
         2GPodpITqGPdlzY5qtZM6wDXHHXDwnLsnH6yrH1OAQeWFfdb7GB+eamNeSUDbilURAFh
         hatf1LdxI/KtPTwvpnhgS7rhJihsMbPB7jPMzMzs5m3Q/tlocOPFfVbqDInGoWIzrttL
         W1lA0NtmxdtAiFkMsMnc7UPvBn+ryeUo2/fcxu6lrt/L7ai4zPCYKoJpn2aCwJgOwcBv
         t4Qw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728202001; x=1728806801;
        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=puHS7d7azwqNXLt828Ye1D2ZDeZMXjrh1xk6a66e+BY=;
        b=aECxf+k9C9RyYxKc4KwxV/XyY7QnZc53TOU8TOmpjEe4ceZEbvlBokC4vX5SyWb8MN
         63MEZtTL2/HkDxGAhq9ps4cZf5L5mmElBdlFL63iE4d7X9P/Om5eJj+lGLqy69Ysl2Ps
         Y+5xhAfaZ48Bdx4unT/mINHy3jzGaBMHgwEs8rIe4vS//dsIdd5wMUVEsO2RdIFGpA5L
         V9fml40zbdeq0jXEJxMREGQUWcaoogKN/BVjvRgct7MZZ3/489JQ0ktpg846ZFb8AK9P
         YlFpIzKgCUBUCB2mnQl1KuktiRQF38wOJFYdtCjZs4f7aWP1godSooO/GKhffpCRZ63i
         C6UQ==
X-Forwarded-Encrypted: i=1; AJvYcCXOpIqORPcvMKAFwp/fB+JlZ+AU09bFk2V2wv6lJ04ZnQ8oWaM/76Cutb8lXn9Jj3DkJ0uD1YemM2g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzzSUH38XD3ih1hZK7QKNNw7Z/Ih/oX+hRSyg+druGg7Qys56RN
	tglXH5+wF+rE8FRiN9eRNtnj4xF5PFdyOqwrcZmj3sqJ84mjQtduH9LOOgs0bkLWOU1a6FYX8z6
	7nsOHAGZ1JPAuzVFcdIoOG8Mn9P8=
X-Google-Smtp-Source: AGHT+IGS61n/I1TuC+MWyJZpRj63R+p8y0BprOkKwk0SOVREtUnFaMblR5HhGoJzVJpp1ktZzeiYw7JUqStdLpYUPwI=
X-Received: by 2002:a2e:bc0e:0:b0:2fa:cc50:41b with SMTP id
 38308e7fff4ca-2faf3c508ffmr41878031fa.5.1728202000783; Sun, 06 Oct 2024
 01:06:40 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
 <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com> <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
 <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com> <CAHk-=wgkgnyW2V4gQQTDAOKXGZH0fqN=hApz1LFAE3OC3fhhrQ@mail.gmail.com>
In-Reply-To: <CAHk-=wgkgnyW2V4gQQTDAOKXGZH0fqN=hApz1LFAE3OC3fhhrQ@mail.gmail.com>
From: Uros Bizjak <ubizjak@gmail.com>
Date: Sun, 6 Oct 2024 10:06:33 +0200
Message-ID: <CAFULd4ZZxrJvJ9gF5tC-m-tmcDMvVM3te4xc7vnbF_OFU0D2=A@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Ard Biesheuvel <ardb@kernel.org>, Ard Biesheuvel <ardb+git@google.com>, 
	linux-kernel@vger.kernel.org, x86@kernel.org, 
	Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, 
	Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, 
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, Oct 6, 2024 at 2:00=E2=80=AFAM Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Sat, 5 Oct 2024 at 16:37, H. Peter Anvin <hpa@zytor.com> wrote:
> >
> > Sadly, that is not correct; neither gcc nor clang uses lea:
>
> Looking around, this may be intentional. At least according to Agner,
> several cores do better at "mov immediate" compared to "lea".
>
> Eg a RIP-relative LEA on Zen 2 gets a throughput of two per cycle, but
> a "MOV r,i" gets four. That got fixed in Zen 3 and later, but
> apparently Intel had similar issues (Ivy Bridge: 1 LEA per cycle, vs 3
> "mov i,r". Haswell is 1:4).

Yes, this is the case. I just missed your reply when replying to
Peter's mail with a not so precise answer.

Uros.


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 09:34:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 09:34:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811174.1223807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxNed-0006hg-K4; Sun, 06 Oct 2024 09:34:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811174.1223807; Sun, 06 Oct 2024 09: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 1sxNed-0006hZ-Fo; Sun, 06 Oct 2024 09:34:19 +0000
Received: by outflank-mailman (input) for mailman id 811174;
 Sun, 06 Oct 2024 09: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 1sxNec-0006hP-Bh; Sun, 06 Oct 2024 09: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 1sxNeb-0003BA-WE; Sun, 06 Oct 2024 09: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 1sxNeb-0002ao-Dp; Sun, 06 Oct 2024 09:34:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxNeb-0005AT-CR; Sun, 06 Oct 2024 09: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=6OSxZvdsY1vluzYVJFzQeXhb5vEaRbypR91PH4s2Ok8=; b=Jh0L6tFTI/NtX4ZZhrzmt6oE2+
	ZO748kEUt4IjcGvm9KqY3DVEo+56gLVYHjqpNtZfS+aybAQixgTDYLC0EtgWc+E1exxqkNrgTNtXV
	Su/0JYvtKOEydUBI3GMxJOY0Mu+7fMVwK5/mkMvUa4LXTv1erOk4k60AQ5jAH6/0b4/w=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187985-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187985: 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: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-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: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-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-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-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-amd64-amd64-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-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=8f602276d3902642fdc3429b548d73c745446601
X-Osstest-Versions-That:
    linux=0c559323bbaabee7346c12e74b497e283aaafef5
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 06 Oct 2024 09:34:17 +0000

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

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 187970
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187970
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187970
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187970
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187970
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187970
 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-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-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-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-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-amd64-amd64-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-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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                8f602276d3902642fdc3429b548d73c745446601
baseline version:
 linux                0c559323bbaabee7346c12e74b497e283aaafef5

Last test of basis   187970  2024-10-04 17:41:58 Z    1 days
Failing since        187981  2024-10-05 10:56:41 Z    0 days    2 attempts
Testing same since   187985  2024-10-06 00:44:32 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abdul Rahim <abdul.rahim@myyahoo.com>
  Abhishek Tamboli <abhishektamboli9@gmail.com>
  Ai Chao <aichao@kylinos.cn>
  Al Viro <viro@zeniv.linux.org.uk>
  Alain Volmat <alain.volmat@foss.st.com>
  Alessandro Zanni <alessandro.zanni87@gmail.com>
  Alex Deucher <alexander.deucher@amd.com>
  Alex Hung <alex.hung@amd.com>
  Alexander Dahl <ada@thorsis.com>
  Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
  Alexandre Belloni <alexandre.belloni@bootlin.com>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alexey Klimov <alexey.klimov@linaro.org>
  Alison Schofield <alison.schofield@intel.com>
  Andi Shyti <andi.shyti@kernel.org>
  Andrei Simion <andrei.simion@microchip.com>
  Ard Biesheuvel <ardb@kernel.org>
  Armin Wolf <W_Armin@gmx.de>
  Ashutosh Dixit <ashutosh.dixit@intel.com>
  Aurabindo Pillai <aurabindo.pillai@amd.com>
  Ba Jing <bajing@cmss.chinamobile.com>
  Baojun Xu <baojun.xu@ti.com>
  Baokun Li <libaokun1@huawei.com>
  Bard Liao <yung-chuan.liao@linux.intel.com>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Ben Cheatham <Benjamin.Cheatham@amd.com>
  Ben Dooks <ben.dooks@codethink.co.uk>
  Ben Hutchings <benh@debian.org>
  Benjamin Tissoires <bentiss@kernel.org>
  Boris Brezillon <boris.brezillon@collabora.com>
  Catalin Marinas <catalin.marinas@arm.com>
  Charlene Liu <Charlene.Liu@amd.com>
  Charles Han <hanchunchao@inspur.com>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Christian König <christian.koenig@amd.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Chun-Yi Lee <jlee@suse.com>
  Chun-Yi Lee <joeyli.kernel@gmail.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Wheeler <daniel.wheeler@amd.com>
  Danilo Krummrich <dakr@kernel.org>
  Dave Airlie <airlied@redhat.com>
  David Arendt <admin@prnet.org>
  David Lawrence Glanzman <davidglanzman@yahoo.com>
  David Sterba <dsterba@suse.com>
  Derek Foreman <derek.foreman@collabora.com>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Easwar Hariharan <eahariha@linux.microsoft.com>
  Eder Zulian <ezulian@redhat.com>
  Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
  Eric Sandeen <sandeen@redhat.com>
  Fangzhi Zuo <Jerry.Zuo@amd.com>
  Filipe Manana <fdmanana@suse.com>
  Gianfranco Trad <gianf.trad@gmail.com>
  Guenter Roeck <linux@roeck-us.net>
  Guixin Liu <kanie@linux.alibaba.com>
  Gustavo Sousa <gustavo.sousa@intel.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans P. Moller <hmoller@uc.cl>
  He Lugang <helugang@uniontech.com>
  Heiko Stuebner <heiko@sntech.de>
  Hui Wang <hui.wang@canonical.com>
  Ilya Dryomov <idryomov@gmail.com>
  Imre Deak <imre.deak@intel.com>
  Ira Weiny <ira.weiny@intel.com>
  Jan Kara <jack@suse.cz>
  Jan Lalinsky <lalinsky@c4.cz>
  Jani Nikula <jani.nikula@intel.com>
  Janne Grunau <j@jannau.net>
  Jaroslav Kysela <perex@perex.cz>
  Jason A. Donenfeld <Jason@zx2c4.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Jinjie Ruan <ruanjinjie@huawei.com>
  Johannes Thumshirn <johannes.thumshirn@wdc.com>
  John Johansen <john.johansen@canonical.com>
  John Stultz <jstultz@google.com>
  Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
  Josef Bacik <josef@toxicpanda.com>
  Joseph Jang <jjang@nvidia.com>
  José Roberto de Souza <jose.souza@intel.com>
  Juergen Gross <jgross@suse.com>
  Julia Lawall <Julia.Lawall@inria.fr>
  Keerthy <j-keerthy@ti.com>
  Kees Cook <kees@kernel.org>
  Keith Busch <kbusch@kernel.org>
  Kent Overstreet <kent.overstreet@linux.dev>
  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
  Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  Leo Li <sunpeng.li@amd.com>
  Leo Martins <loemra.dev@gmail.com>
  Lianqin Hu <hulianqin@vivo.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Liviu Dudau <liviu.dudau@arm.com>
  Lizhi Xu <lizhi.xu@windriver.com>
  Lucas De Marchi <lucas.demarchi@intel.com>
  Luis Henriques (SUSE) <luis.henriques@linux.dev>
  Lukas Bulwahn <lukas.bulwahn@redhat.com>
  Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
  Marek Vasut <marex@denx.de>
  Mark Brown <broonie@kernel.org>
  Mark Rutland <mark.rutland@arm.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Matt Roper <matthew.d.roper@intel.com>
  Matthew Auld <matthew.auld@intel.com>
  Matthew Brost <matthew.brost@intel.com>
  Maxime Ripard <mripard@kernel.org>
  Min-Hua Chen <minhuadotchen@gmail.com>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Miquel Sabaté Solà <mikisabate@gmail.com>
  Nathan Chancellor <nathan@kernel.org>
  Nikolai Afanasenkov <nikolai.afanasenkov@hp.com>
  Nilay Shroff <nilay@linux.ibm.com>
  Oder Chiou <oder_chiou@realtek.com>
  Oldherl Oh <me@oldherl.one>
  Pali Rohár <pali@kernel.org>
  Palmer Dabbelt <palmer@rivosinc.com>
  Parth Pancholi <parth.pancholi@toradex.com>
  Patrick Donnelly <pdonnell@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Paulo Alcantara (Red Hat) <pc@manguebit.com>
  Philipp Stanner <pstanner@redhat.com>
  Pu Lehui <pulehui@huawei.com>
  Qu Wenruo <wqu@suse.com>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ricardo Rivera-Matos <rriveram@opensource.cirrus.com>
  Rob Clark <robdclark@chromium.org>
  Rob Herring (Arm) <robh@kernel.org>
  Rodrigo Vivi <rodrigo.vivi@intel.com>
  Sami Tolvanen <samitolvanen@google.com>
  Sebastian Andrzej Siewior <bigeasy@linutronix.de>
  Shen Lichuan <shenlichuan@vivo.com>
  Shengjiu Wang <shengjiu.wang@nxp.com>
  Shuah Khan <skhan@linuxfoundation.org>
  Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  Srinivasulu Thanneeru <sthanneeru.opensrc@micron.com>
  Steve French <stfrench@microsoft.com>
  Steven Price <steven.price@arm.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Steven Rostedt <rostedt@goodmis.org>
  syzbot+7a4842f0b1801230a989@syzkaller.appspotmail.com
  syzbot+8901c4560b7ab5c2f9df@syzkaller.appspotmail.com
  Takashi Iwai <tiwai@suse.de>
  Tang Bin <tangbin@cmss.chinamobile.com>
  Theodore Ts'o <tytso@mit.edu>
  Thomas Gleixner <tglx@linutronix.de>
  Thomas Zimmermann <tzimmermann@suse.de>
  Thorsten Blum <thorsten.blum@toblux.com>
  Tom Chung <chiahsuan.chung@amd.com>
  Tomas Glozar <tglozar@redhat.com>
  Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
  Uladzislau Rezki (Sony) <urezki@gmail.com>
  Uwe Kleine-König <u.kleine-koenig@baylibre.com>
  Uwe Kleine-König <ukleinek@debian.org>
  Vignesh Raghavendra <vigneshr@ti.com>
  Vijendar Mukunda <Vijendar.Mukunda@amd.com>
  Viresh Kumar <viresh.kumar@linaro.org>
  Vlastimil Babka <vbabka@suse.cz>
  wangrong <wangrong@uniontech.com>
  Wei Li <liwei391@huawei.com>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  xiao sheng wen <atzlinux@sina.com>
  Yi Zhang <yi.zhang@redhat.com>
  Yifei Liu <yifei.l.liu@oracle.com>
  Yihan Zhu <Yihan.Zhu@amd.com>
  Yu Jiaoliang <yujiaoliang@vivo.com>
  Yun Lu <luyun@kylinos.cn>
  Zhanjun Dong <zhanjun.dong@intel.com>
  Zhao Mengmeng <zhaomengmeng@kylinos.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   0c559323bbaa..8f602276d390  8f602276d3902642fdc3429b548d73c745446601 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 13:36:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 13:36:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811214.1223817 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxRQp-0001sm-IX; Sun, 06 Oct 2024 13:36:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811214.1223817; Sun, 06 Oct 2024 13:36: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 1sxRQp-0001sf-Fb; Sun, 06 Oct 2024 13:36:19 +0000
Received: by outflank-mailman (input) for mailman id 811214;
 Sun, 06 Oct 2024 13:36: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 1sxRQn-0001sV-RZ; Sun, 06 Oct 2024 13:36: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 1sxRQn-0007QV-Hl; Sun, 06 Oct 2024 13:36: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 1sxRQn-0000M5-33; Sun, 06 Oct 2024 13:36:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxRQn-0004JD-2e; Sun, 06 Oct 2024 13:36: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=KkqOjyGkexI3dHytBM46qhu/JKQ0XAXrLOWPhOsBPv4=; b=pl3sPWHFvl1PbPUKXk6ZeCYSn2
	NmBEi7bZRdtj89eKaNARWTRHxdvNMtPHnD4Ys7eDvKScRDgxowAonx1gCPN4YYjZrkU2H3gOse9P3
	FaMq2qG0Lo0h9MWMrreNxqEvYpuAQ3AmLlde3nepZfR7e1HH2JIHYDlLHmToCQczHdr8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187986-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187986: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-qemuu-freebsd11-amd64:guest-start/freebsd.repeat:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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: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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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-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-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-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=6b20755c24ccd69d2482b45dfb9193940cdc346e
X-Osstest-Versions-That:
    xen=6b20755c24ccd69d2482b45dfb9193940cdc346e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 06 Oct 2024 13:36:17 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-qemuu-freebsd11-amd64 21 guest-start/freebsd.repeat fail in 187979 pass in 187986
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 187979
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 187979

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187979
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187979
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187979
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187979
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187979
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187979
 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-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-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  6b20755c24ccd69d2482b45dfb9193940cdc346e
baseline version:
 xen                  6b20755c24ccd69d2482b45dfb9193940cdc346e

Last test of basis   187986  2024-10-06 01:52:38 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-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                                 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 06 17:35:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 17:35:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811267.1223827 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxV9W-0005zS-0d; Sun, 06 Oct 2024 17:34:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811267.1223827; Sun, 06 Oct 2024 17:34: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 1sxV9V-0005zL-Tn; Sun, 06 Oct 2024 17:34:41 +0000
Received: by outflank-mailman (input) for mailman id 811267;
 Sun, 06 Oct 2024 17:34: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 1sxV9V-0005zB-2D; Sun, 06 Oct 2024 17:34: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 1sxV9U-0003o1-Pn; Sun, 06 Oct 2024 17:34: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 1sxV9U-0005rS-Bt; Sun, 06 Oct 2024 17:34:40 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxV9U-0001AP-BK; Sun, 06 Oct 2024 17:34: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=5fTkoOMUgSM2DV/ccpx2pnBKW+T+wP5CrzpE06ucofc=; b=qwu+e3Pt+MHodcIRifJGeYgDe8
	chsFL+Fa1uKBMK0OS8FFiJJnUXHS4Wr6Ct4N2UYOucmyqqAVXx1Q4xIZh2hgoqV5xUREv0aaRdtBG
	eiLhaIumoZWvslr0jburLHWDi9WE7RRg37SAdlDBQQiKtGR7sF12AHHDlNrtDUcfZHF8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187987-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187987: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:host-ping-check-xen:fail:heisenbug
    qemu-mainline:test-amd64-amd64-qemuu-freebsd12-amd64:guest-start.2:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=a3fb4e93a3a7cf2be355c41cd550bef856f5ffe4
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 06 Oct 2024 17:34:40 +0000

flight 187987 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/187987/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt  10 host-ping-check-xen fail in 187983 pass in 187987
 test-amd64-amd64-qemuu-freebsd12-amd64 22 guest-start.2    fail pass in 187983

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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          15 migrate-support-check        fail   never pass
 test-arm64-arm64-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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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-arndale  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

version targeted for testing:
 qemuu                a3fb4e93a3a7cf2be355c41cd550bef856f5ffe4
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   20 days
Failing since        187731  2024-09-17 13:11:20 Z   19 days   32 attempts
Testing same since   187978  2024-10-05 03:15:05 Z    1 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jones <ajones@ventanamicro.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Juraj Marcin <jmarcin@redhat.com>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       fail    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 7456 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 18:01:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 18:01:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811281.1223837 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxVZ7-0001cy-W2; Sun, 06 Oct 2024 18:01:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811281.1223837; Sun, 06 Oct 2024 18:01: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 1sxVZ7-0001cr-T0; Sun, 06 Oct 2024 18:01:09 +0000
Received: by outflank-mailman (input) for mailman id 811281;
 Sun, 06 Oct 2024 18:01: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=Lfc9=RC=aculab.com=david.laight@srs-se1.protection.inumbo.net>)
 id 1sxVZ6-0001ca-5E
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 18:01:08 +0000
Received: from eu-smtp-delivery-151.mimecast.com
 (eu-smtp-delivery-151.mimecast.com [185.58.86.151])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f539e23c-840c-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 20:01:06 +0200 (CEST)
Received: from AcuMS.aculab.com (156.67.243.121 [156.67.243.121]) by
 relay.mimecast.com with ESMTP with both STARTTLS and AUTH (version=TLSv1.2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id
 uk-mta-241-ir4EC8PtM6i_SZDW15CpKA-1; Sun, 06 Oct 2024 19:01:03 +0100
Received: from AcuMS.Aculab.com (10.202.163.4) by AcuMS.aculab.com
 (10.202.163.4) with Microsoft SMTP Server (TLS) id 15.0.1497.48; Sun, 6 Oct
 2024 19:00:09 +0100
Received: from AcuMS.Aculab.com ([::1]) by AcuMS.aculab.com ([::1]) with mapi
 id 15.00.1497.048; Sun, 6 Oct 2024 19:00:09 +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: f539e23c-840c-11ef-99a2-01e77a169b0f
X-MC-Unique: ir4EC8PtM6i_SZDW15CpKA-1
From: David Laight <David.Laight@ACULAB.COM>
To: 'Uros Bizjak' <ubizjak@gmail.com>, "H. Peter Anvin" <hpa@zytor.com>
CC: Ard Biesheuvel <ardb@kernel.org>, Linus Torvalds
	<torvalds@linux-foundation.org>, Ard Biesheuvel <ardb+git@google.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"x86@kernel.org" <x86@kernel.org>, Andy Lutomirski <luto@kernel.org>, "Peter
 Zijlstra" <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, Tejun Heo
	<tj@kernel.org>, Christoph Lameter <cl@linux.com>, Mathieu Desnoyers
	<mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>,
	"Vitaly Kuznetsov" <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>,
	"Boris Ostrovsky" <boris.ostrovsky@oracle.com>, Greg Kroah-Hartman
	<gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, Masahiro Yamada
	<masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, Nathan Chancellor
	<nathan@kernel.org>, Keith Packard <keithp@keithp.com>, Justin Stitt
	<justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, "Arnaldo
 Carvalho de Melo" <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
	"Jiri Olsa" <jolsa@kernel.org>, Ian Rogers <irogers@google.com>, Adrian
 Hunter <adrian.hunter@intel.com>, Kan Liang <kan.liang@linux.intel.com>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>, "kvm@vger.kernel.org"
	<kvm@vger.kernel.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "linux-efi@vger.kernel.org"
	<linux-efi@vger.kernel.org>, "linux-arch@vger.kernel.org"
	<linux-arch@vger.kernel.org>, "linux-sparse@vger.kernel.org"
	<linux-sparse@vger.kernel.org>, "linux-kbuild@vger.kernel.org"
	<linux-kbuild@vger.kernel.org>, "linux-perf-users@vger.kernel.org"
	<linux-perf-users@vger.kernel.org>, "rust-for-linux@vger.kernel.org"
	<rust-for-linux@vger.kernel.org>, "llvm@lists.linux.dev"
	<llvm@lists.linux.dev>
Subject: RE: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
Thread-Topic: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
Thread-Index: AQHbF8Wqw+hKPqg6T0aWZJZtJXxJh7J5/LJw
Date: Sun, 6 Oct 2024 18:00:09 +0000
Message-ID: <bfa1a86c3e4348159049e8277e9859dd@AcuMS.aculab.com>
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com>
 <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
 <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com>
 <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
 <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com>
 <CAFULd4b==a7H0zdGVfABntL0efrS-F3eeHGu-63oyz1eh1DwXQ@mail.gmail.com>
In-Reply-To: <CAFULd4b==a7H0zdGVfABntL0efrS-F3eeHGu-63oyz1eh1DwXQ@mail.gmail.com>
Accept-Language: en-GB, en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.202.205.107]
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: aculab.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64

Li4uDQo+IER1ZSB0byB0aGUgbm9uLW5lZ2xpZ2libGUgaW1wYWN0IG9mIFBJRSwgcGVyaGFwcyBz
b21lIGtpbmQgb2YNCj4gQ09ORklHX1BJRSBjb25maWcgZGVmaW5pdGlvbiBzaG91bGQgYmUgaW50
cm9kdWNlZCwgc28gdGhlIGFzc2VtYmx5DQo+IGNvZGUgd291bGQgYmUgYWJsZSB0byBjaG9vc2Ug
b3B0aW1hbCBhc20gc2VxdWVuY2Ugd2hlbiBQSUUgYW5kIG5vbi1QSUUNCj4gaXMgcmVxdWVzdGVk
Pw0KDQpJIHdvdWxkbid0IGhhdmUgdGhvdWdodCB0aGF0IHBlcmZvcm1hbmNlIG1hdHRlcmVkIGlu
IHRoZSBhc20gY29kZQ0KdGhhdCBydW5zIGR1cmluZyBzdGFydHVwPw0KDQpXaGlsZSB4ODYtODQg
Y29kZSAoaWdub3JpbmcgZGF0YSByZWZlcmVuY2VzKSBpcyBwcmV0dHkgbXVjaCBhbHdheXMNCnBv
c2l0aW9uIGluZGVwZW5kZW50LCB0aGUgc2FtZSBpc24ndCB0cnVlIG9mIGFsbCBhcmNoaXRlY3R1
cmVzLg0KU29tZSAoYXQgbGVhc3QgTmlvcy1JSSkgb25seSBoYXZlIGFic29sdXRlIGNhbGwgaW5z
dHJ1Y3Rpb25zLg0KU28geW91IGNhbid0IHJlYWxseSBtb3ZlIHRvIHBpYyBjb2RlIGdsb2JhbGx5
Lg0KDQpZb3UnZCBhbHNvIHdhbnQgJ2JhZCcgcGljIGNvZGUgdGhhdCBjb250YWluZWQgc29tZSBm
aXh1cHMgdGhhdA0KbmVlZGVkIHRoZSBjb2RlIHBhdGNoaW5nLg0KKFdoaWNoIHlvdSByZWFsbHkg
ZG9uJ3Qgd2FudCBmb3IgYSBzaGFyZWQgbGlicmFyeS4pDQpPdGhlcndpc2UgeW91IGdldCBhbiBl
eHRyYSBpbnN0cnVjdGlvbiBmb3Igbm9uLXRyaXZpYWwgZGF0YQ0KYWNjZXNzZXMuDQoNClRoaW5r
aW5nLi4uLg0KRG9lc24ndCB0aGUgY29kZSBnZW5lcmF0ZWQgZm9yIC1mcGljIGFzc3VtZSB0aGF0
IHRoZSBkeW5hbWljIGxvYWRlcg0KaGFzIHByb2Nlc3NlZCB0aGUgcmVsb2NhdGlvbnMgYmVmb3Jl
IGl0IGlzIHJ1bj8NCkJ1dCB0aGUga2VybmVsIHN0YXJ0dXAgY29kZSBpcyBydW5uaW5nIGJlZm9y
ZSB0aGV5IGNhbiBoYXZlIGJlZW4gZG9uZT8NClNvIGV2ZW4gaWYgdGhhdCBDIGNvZGUgd2VyZSAn
cGljJyBpdCBjb3VsZCBzdGlsbCBjb250YWluIHRoaW5ncyB0aGF0DQphcmUgaW52YWxpZCAocHJv
YmFibHkgYXJyYXlzIG9mIHBvaW50ZXJzPykuDQpTbyB5b3UgbG9zZSBvbmUgc2V0IG9mIGJ1Z3Mg
YW5kIGdhaW4gYW5vdGhlci4NCg0KCURhdmlkDQoNCi0NClJlZ2lzdGVyZWQgQWRkcmVzcyBMYWtl
c2lkZSwgQnJhbWxleSBSb2FkLCBNb3VudCBGYXJtLCBNaWx0b24gS2V5bmVzLCBNSzEgMVBULCBV
Sw0KUmVnaXN0cmF0aW9uIE5vOiAxMzk3Mzg2IChXYWxlcykNCg==



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 19:18:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 19:18:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811294.1223847 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxWlQ-0002AO-Ek; Sun, 06 Oct 2024 19:17:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811294.1223847; Sun, 06 Oct 2024 19: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 1sxWlQ-0002AH-C7; Sun, 06 Oct 2024 19:17:56 +0000
Received: by outflank-mailman (input) for mailman id 811294;
 Sun, 06 Oct 2024 19: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=7wyB=RC=gmail.com=ubizjak@srs-se1.protection.inumbo.net>)
 id 1sxWlP-0002AB-J4
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 19:17: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 af448144-8417-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 21:17:53 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2facf48166bso42281781fa.0
 for <xen-devel@lists.xenproject.org>; Sun, 06 Oct 2024 12:17:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af448144-8417-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728242272; x=1728847072; 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=tbSrHUSflgwuD4ZHPRPJ5BZRTLC2CQwiCglTSKbl7rw=;
        b=D3fxEFQaMa6n6zAI54SOB2anTT7PFJ/ivwwstMcvAocJm0KvHVIxKyTFi5y+RIA++o
         SxSltO60/fXzdG0LQyiskbyrNUYjTOQoj6ErKu1N3qChOZBBwj8ER3ZcEqTO9OO6rCRr
         FeifmsumjJLs73oyzClLLeeNqL9Qj3AQVcUugB4HuwRWHCjYkzrY2veRToPpIHM1EY1Q
         Pxa6L+v7B3/oD6lv4ZcTTxmpFbYY7qAk/UlW+crZaJiPr8RLaIt3XqkLEykW8o8mAXtC
         FXsWMbO9UFlDgnY1fiA+l8gr39KygW0DQUQo+ZdyFF45NZAOWJJQOJrIIYHAQGkAUfqK
         E1TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728242272; x=1728847072;
        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=tbSrHUSflgwuD4ZHPRPJ5BZRTLC2CQwiCglTSKbl7rw=;
        b=dYNStQWEZyBxLePLZM14PSE4uKbmuFw18exn/8UA8A3q9DcUzP/Z+OcPChijlfGZgQ
         +C7hV2CpGAFsb0yRsPhw5iTyLizNsEls7Mojf8i4Y0sp7DaqZjHsdzheR0vgKEIDmbec
         ayVkrG32b2utX2UEDOo3otkJQPoh2afnAIxc4EGUjH2ssoDdj5lYXFwYCbbNy20My/PD
         V/91HcVosz6ATxAfQnAK38ZY9iqG9f/P3OmMfP2Y0aCvOfm0bsWkppyKkcxtBj1BuUiE
         PHNomfuGCDI34PjGETnGlel7REDcV7kKD1HV2MQvuF9hpWEV5Oj5ZtvCNxP7ulW6+5Hd
         EW3w==
X-Forwarded-Encrypted: i=1; AJvYcCUWefXr3xbNVqFFRkn1+uLAUGKEHYawcuGhO67ChRCDHqXwwg0LO0srV8RxHDJbRdnBAKNedGuQe+c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzHadSHbgAGSbNWx7UqkbGaRQNgpVNAvyL5FSv4DOjssoZtqGdC
	+QWCRipRvWLW3w0wCY+goXgmmNmEhZaxU8t12lNvJzgxIzBpEEEQnJT0KQ3ed3E75tFIUi4AeY2
	/NgmLlBG3P7E0S+FmHhlWTEFbyDs=
X-Google-Smtp-Source: AGHT+IGRTqhJhTusYfDXEbEiyI+dDRincUEm84afE7n1AFszrvf4EDsRGd1dnnPyUdXRuJKezOE3wzgwR0sUUmJI06c=
X-Received: by 2002:a05:651c:548:b0:2fa:cdd1:4f16 with SMTP id
 38308e7fff4ca-2faf3c150bdmr36366491fa.14.1728242272173; Sun, 06 Oct 2024
 12:17:52 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com>
 <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com>
 <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com>
 <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com>
 <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com> <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com>
 <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com> <CAFULd4b==a7H0zdGVfABntL0efrS-F3eeHGu-63oyz1eh1DwXQ@mail.gmail.com>
 <bfa1a86c3e4348159049e8277e9859dd@AcuMS.aculab.com>
In-Reply-To: <bfa1a86c3e4348159049e8277e9859dd@AcuMS.aculab.com>
From: Uros Bizjak <ubizjak@gmail.com>
Date: Sun, 6 Oct 2024 21:17:40 +0200
Message-ID: <CAFULd4awNUm8MpZQ6XhPTRs6+2ZLtfnr=6vkK5DrY9L2rGR-5w@mail.gmail.com>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
To: David Laight <David.Laight@aculab.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Ard Biesheuvel <ardb@kernel.org>, 
	Linus Torvalds <torvalds@linux-foundation.org>, Ard Biesheuvel <ardb+git@google.com>, 
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "x86@kernel.org" <x86@kernel.org>, 
	Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, 
	Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>, 
	Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, 
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>, 
	"linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>, "kvm@vger.kernel.org" <kvm@vger.kernel.org>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	"linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>, 
	"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>, 
	"linux-sparse@vger.kernel.org" <linux-sparse@vger.kernel.org>, 
	"linux-kbuild@vger.kernel.org" <linux-kbuild@vger.kernel.org>, 
	"linux-perf-users@vger.kernel.org" <linux-perf-users@vger.kernel.org>, 
	"rust-for-linux@vger.kernel.org" <rust-for-linux@vger.kernel.org>, 
	"llvm@lists.linux.dev" <llvm@lists.linux.dev>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, Oct 6, 2024 at 8:01=E2=80=AFPM David Laight <David.Laight@aculab.co=
m> wrote:
>
> ...
> > Due to the non-negligible impact of PIE, perhaps some kind of
> > CONFIG_PIE config definition should be introduced, so the assembly
> > code would be able to choose optimal asm sequence when PIE and non-PIE
> > is requested?
>
> I wouldn't have thought that performance mattered in the asm code
> that runs during startup?

No, not the code that runs only once, where performance impact can be toler=
ated.

This one:

https://lore.kernel.org/lkml/20240925150059.3955569-44-ardb+git@google.com/

Uros.


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 19:39:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 19:39:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811299.1223857 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxX6V-00056X-4n; Sun, 06 Oct 2024 19:39:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811299.1223857; Sun, 06 Oct 2024 19: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 1sxX6V-00056Q-1J; Sun, 06 Oct 2024 19:39:43 +0000
Received: by outflank-mailman (input) for mailman id 811299;
 Sun, 06 Oct 2024 19:39: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=50Zd=RC=zytor.com=hpa@srs-se1.protection.inumbo.net>)
 id 1sxX6T-00056K-Tz
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 19:39:42 +0000
Received: from mail.zytor.com (torg.zytor.com [2607:7c80:54:3::138])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b8b56075-841a-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 21:39:38 +0200 (CEST)
Received: from [127.0.0.1] ([76.133.66.138]) (authenticated bits=0)
 by mail.zytor.com (8.18.1/8.17.1) with ESMTPSA id 496JcqMQ1925401
 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NO);
 Sun, 6 Oct 2024 12:38:53 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b8b56075-841a-11ef-a0bb-8be0dac302b0
DKIM-Filter: OpenDKIM Filter v2.11.0 mail.zytor.com 496JcqMQ1925401
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zytor.com;
	s=2024091601; t=1728243536;
	bh=9wpGerdLjrs32NAAxWuQr0Zn5/RQ55cLXb4OynSTbGk=;
	h=Date:From:To:CC:Subject:In-Reply-To:References:From;
	b=Lc9PbUpMwsnXTOWaJN9CXcxjSSWv5nTCaZBiscG/TQ3eHw4J2mI5nopG2gSeaI79L
	 vKMiLkZHfC5ubwiFJzuDuyB+F5uMgvtF2z0wUtlZmg4On1bnmVK4vei8WgNxba4q9u
	 muWB/vSp7UxaBGIboP+agmWEZxkTp81yyJwnS6yc0YXqeqxb0x7Ta7UpicAdHSSWND
	 7UPqiYheLQ57e2ykSnaWM8GW2tnbAX4B6xnsny8QXDU+qdSEJsjRLl9oDtWqQ/ecCq
	 0sAHRDWAdgyw5syyYB6N3mg/bKR+nVFfm3xWMRSeaGRrxOVCrWF7OfUMb2ogPNfF4Q
	 GIubVa2r9kh9w==
Date: Sun, 06 Oct 2024 12:38:52 -0700
From: "H. Peter Anvin" <hpa@zytor.com>
To: Uros Bizjak <ubizjak@gmail.com>, David Laight <David.Laight@aculab.com>
CC: Ard Biesheuvel <ardb@kernel.org>,
        Linus Torvalds <torvalds@linux-foundation.org>,
        Ard Biesheuvel <ardb+git@google.com>,
        "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
        "x86@kernel.org" <x86@kernel.org>, Andy Lutomirski <luto@kernel.org>,
        Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>,
        Tejun Heo <tj@kernel.org>, Christoph Lameter <cl@linux.com>,
        Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
        Paolo Bonzini <pbonzini@redhat.com>,
        Vitaly Kuznetsov <vkuznets@redhat.com>,
        Juergen Gross <jgross@suse.com>,
        Boris Ostrovsky <boris.ostrovsky@oracle.com>,
        Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
        Arnd Bergmann <arnd@arndb.de>, Masahiro Yamada <masahiroy@kernel.org>,
        Kees Cook <kees@kernel.org>, Nathan Chancellor <nathan@kernel.org>,
        Keith Packard <keithp@keithp.com>,
        Justin Stitt <justinstitt@google.com>,
        Josh Poimboeuf <jpoimboe@kernel.org>,
        Arnaldo Carvalho de Melo <acme@kernel.org>,
        Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
        Ian Rogers <irogers@google.com>,
        Adrian Hunter <adrian.hunter@intel.com>,
        Kan Liang <kan.liang@linux.intel.com>,
        "linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
        "linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
        "kvm@vger.kernel.org" <kvm@vger.kernel.org>,
        "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
        "linux-efi@vger.kernel.org" <linux-efi@vger.kernel.org>,
        "linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
        "linux-sparse@vger.kernel.org" <linux-sparse@vger.kernel.org>,
        "linux-kbuild@vger.kernel.org" <linux-kbuild@vger.kernel.org>,
        "linux-perf-users@vger.kernel.org" <linux-perf-users@vger.kernel.org>,
        "rust-for-linux@vger.kernel.org" <rust-for-linux@vger.kernel.org>,
        "llvm@lists.linux.dev" <llvm@lists.linux.dev>
Subject: Re: [RFC PATCH 25/28] x86: Use PIE codegen for the core kernel
User-Agent: K-9 Mail for Android
In-Reply-To: <CAFULd4awNUm8MpZQ6XhPTRs6+2ZLtfnr=6vkK5DrY9L2rGR-5w@mail.gmail.com>
References: <20240925150059.3955569-30-ardb+git@google.com> <20240925150059.3955569-55-ardb+git@google.com> <99446363-152f-43a8-8b74-26f0d883a364@zytor.com> <CAMj1kXG7ZELM8D7Ft3H+dD5BHqENjY9eQ9kzsq2FzTgP5+2W3A@mail.gmail.com> <CAHk-=wj0HG2M1JgoN-zdCwFSW=N7j5iMB0RR90aftTS3oqwKTg@mail.gmail.com> <CAMj1kXEU5RU0i11zqD0433_LMMyNQH2gCoSkU7GeXmaRXGF1Yw@mail.gmail.com> <5c7490bb-aa74-427b-849e-c28c343b7409@zytor.com> <CAFULd4Yj9LfTnWFu=c1M7Eh44+XFk0ibwL57r5H7wZjvKZ8yaA@mail.gmail.com> <3bbb85ae-8ba5-4777-999f-d20705c386e7@zytor.com> <CAFULd4b==a7H0zdGVfABntL0efrS-F3eeHGu-63oyz1eh1DwXQ@mail.gmail.com> <bfa1a86c3e4348159049e8277e9859dd@AcuMS.aculab.com> <CAFULd4awNUm8MpZQ6XhPTRs6+2ZLtfnr=6vkK5DrY9L2rGR-5w@mail.gmail.com>
Message-ID: <2E1160A8-3A0C-45BD-B729-D20EAE97A075@zytor.com>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable

On October 6, 2024 12:17:40 PM PDT, Uros Bizjak <ubizjak@gmail=2Ecom> wrote=
:
>On Sun, Oct 6, 2024 at 8:01=E2=80=AFPM David Laight <David=2ELaight@acula=
b=2Ecom> wrote:
>>
>> =2E=2E=2E
>> > Due to the non-negligible impact of PIE, perhaps some kind of
>> > CONFIG_PIE config definition should be introduced, so the assembly
>> > code would be able to choose optimal asm sequence when PIE and non-PI=
E
>> > is requested?
>>
>> I wouldn't have thought that performance mattered in the asm code
>> that runs during startup?
>
>No, not the code that runs only once, where performance impact can be tol=
erated=2E
>
>This one:
>
>https://lore=2Ekernel=2Eorg/lkml/20240925150059=2E3955569-44-ardb+git@goo=
gle=2Ecom/
>
>Uros=2E
>

Yeah, running the kernel proper as PIE seems like a lose all around=2E The=
 decompressor, ELF stub, etc, are of course a different matter entirely (an=
d at least the latter can't rely on the small or kernel memory models anywa=
y=2E)


From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:50:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:50:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811318.1223877 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZ8w-0005G2-1u; Sun, 06 Oct 2024 21:50:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811318.1223877; Sun, 06 Oct 2024 21:50: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 1sxZ8v-0005Fv-VT; Sun, 06 Oct 2024 21:50:21 +0000
Received: by outflank-mailman (input) for mailman id 811318;
 Sun, 06 Oct 2024 21:50: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ8u-00051E-J4
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:50:20 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9951dd3-842c-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:50:18 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 17282514052498.635198092673818;
 Sun, 6 Oct 2024 14:50:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9951dd3-842c-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251408; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ihZbQCud266+NDUZz2Tb/rukXT5+D9DC8M1a/qEZipprStrdI2AHKPJdnMFZVgs+nvC2S3KgblZsic6TZbhaG3HmfGdW2TMsaoeQMfMct7sLxNSJGaRwQxGct7krLILYqp4z4u5PvI4HYBHT4XtO0n5Q5z35hkOFkuaUb6jcEjM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251408; h=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=mR5FDOsbmFDquT3lrYY8U7kNVFC0meHVwZwznJGSBOs=; 
	b=QPkEm0FNYGl5Ed01FczVBht0VCsONZJDTzm8Tu70R8WQnd6yyqdhcPRl0moS7LKsdbAAuJsgoA9q9YPWR+51tA/XXk8iE3hxUhjfVckVe+nDeqt/i/2OrvAqXSUuyENOmGTyfvrL/Zuja2FaB5UFWFoCHyOofgRvE4WQof+uAFE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251408;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=mR5FDOsbmFDquT3lrYY8U7kNVFC0meHVwZwznJGSBOs=;
	b=mKYOERorUmP3k1v8c443KDu4vtZA9h9TZxKLEqeoL8SKmDr+5neBKJOiCMvDRHVc
	gzFGNyVePiuEVriUFxzy1gTYguQFlOwDKOMUZ5FLIhi/v25hHXJEvgPfW2+7ilqjJZE
	uewvKoYSwLt6jjeHx+O9CbzRZrVe+KBXgvkaI7uc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: Christopher Clark <christopher.w.clark@gmail.com>,
	jason.andryuk@amd.com,
	stefano.stabellini@amd.com,
	"Daniel P . Smith" <dpsmith@apertussolutions.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 v5 01/44] x86/boot: move x86 boot module counting into a new boot_info struct
Date: Sun,  6 Oct 2024 17:49:12 -0400
Message-Id: <20241006214956.24339-2-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

From: Christopher Clark <christopher.w.clark@gmail.com>

An initial step towards a non-multiboot internal representation of boot
modules for common code, starting with x86 setup and converting the fields
that are accessed for the startup calculations.

Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
structure initially containing a count of the number of boot modules.

No functional change intended.

Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 29 +++++++++++++
 xen/arch/x86/include/asm/setup.h    |  2 +
 xen/arch/x86/setup.c                | 64 ++++++++++++++++++-----------
 3 files changed, 71 insertions(+), 24 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootinfo.h

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
new file mode 100644
index 000000000000..a649500ee3a2
--- /dev/null
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
+ * Copyright (c) 2024 Apertus Solutions, LLC
+ * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
+ */
+
+#ifndef __XEN_X86_BOOTINFO_H__
+#define __XEN_X86_BOOTINFO_H__
+
+/*
+ * Xen internal representation of information provided by the
+ * bootloader/environment, or derived from the information.
+ */
+struct boot_info {
+    unsigned int nr_modules;
+};
+
+#endif /* __XEN_X86_BOOTINFO_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/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index d75589178b91..3d189521189d 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -32,6 +32,8 @@ int construct_dom0(
     const char *cmdline);
 void setup_io_bitmap(struct domain *d);
 
+extern struct boot_info xen_boot_info;
+
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
 void *bootstrap_map(const module_t *mod);
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index a6e77c9ed9fc..b75deb4fe4ee 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -32,6 +32,7 @@
 #include <compat/xen.h>
 #endif
 #include <xen/bitops.h>
+#include <asm/bootinfo.h>
 #include <asm/smp.h>
 #include <asm/processor.h>
 #include <asm/mpspec.h>
@@ -274,16 +275,28 @@ static int __init cf_check parse_acpi_param(const char *s)
 custom_param("acpi", parse_acpi_param);
 
 static const module_t *__initdata initial_images;
-static unsigned int __initdata nr_initial_images;
+
+struct boot_info __initdata xen_boot_info;
+
+static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
+{
+    struct boot_info *bi = &xen_boot_info;
+    const multiboot_info_t *mbi = __va(mbi_p);
+
+    bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
+
+    return bi;
+}
 
 unsigned long __init initial_images_nrpages(nodeid_t node)
 {
+    struct boot_info *bi = &xen_boot_info;
     unsigned long node_start = node_start_pfn(node);
     unsigned long node_end = node_end_pfn(node);
     unsigned long nr;
     unsigned int i;
 
-    for ( nr = i = 0; i < nr_initial_images; ++i )
+    for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
         unsigned long start = initial_images[i].mod_start;
         unsigned long end = start + PFN_UP(initial_images[i].mod_end);
@@ -297,9 +310,10 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
 void __init discard_initial_images(void)
 {
+    struct boot_info *bi = &xen_boot_info;
     unsigned int i;
 
-    for ( i = 0; i < nr_initial_images; ++i )
+    for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
 
@@ -307,7 +321,7 @@ void __init discard_initial_images(void)
                            start + PAGE_ALIGN(initial_images[i].mod_end));
     }
 
-    nr_initial_images = 0;
+    bi->nr_modules = 0;
     initial_images = NULL;
 }
 
@@ -969,6 +983,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     void *bsp_stack;
     struct cpu_info *info = get_cpu_info(), *bsp_info;
     unsigned int initrdidx, num_parked = 0;
+    struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
     unsigned long nr_pages, raw_max_page, modules_headroom, module_map[1];
@@ -1015,6 +1030,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         mod = __va(mbi->mods_addr);
     }
 
+    bi = multiboot_fill_boot_info(mbi_p);
+
     loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
                                            : "unknown";
 
@@ -1122,18 +1139,18 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            bootsym(boot_edd_info_nr));
 
     /* Check that we have at least one Multiboot module. */
-    if ( !(mbi->flags & MBI_MODULES) || (mbi->mods_count == 0) )
+    if ( !bi->nr_modules )
         panic("dom0 kernel not specified. Check bootloader configuration\n");
 
     /* Check that we don't have a silly number of modules. */
-    if ( mbi->mods_count > sizeof(module_map) * 8 )
+    if ( bi->nr_modules > sizeof(module_map) * 8 )
     {
-        mbi->mods_count = sizeof(module_map) * 8;
-        printk("Excessive multiboot modules - using the first %u only\n",
-               mbi->mods_count);
+        bi->nr_modules = sizeof(module_map) * 8;
+        printk("Excessive boot modules - using the first %u only\n",
+               bi->nr_modules);
     }
 
-    bitmap_fill(module_map, mbi->mods_count);
+    bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
 
     if ( pvh_boot )
@@ -1306,9 +1323,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     kexec_reserve_area();
 
     initial_images = mod;
-    nr_initial_images = mbi->mods_count;
 
-    for ( i = 0; !efi_enabled(EFI_LOADER) && i < mbi->mods_count; i++ )
+    for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
         if ( mod[i].mod_start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
@@ -1332,8 +1348,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        mod[mbi->mods_count].mod_start = virt_to_mfn(_stext);
-        mod[mbi->mods_count].mod_end = __2M_rwdata_end - _stext;
+        mod[bi->nr_modules].mod_start = virt_to_mfn(_stext);
+        mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
     }
 
     modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
@@ -1393,7 +1409,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules. */
             end = consider_modules(s, e, reloc_size + mask,
-                                   mod, mbi->mods_count, -1);
+                                   mod, bi->nr_modules, -1);
             end &= ~mask;
         }
         else
@@ -1414,7 +1430,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         }
 
         /* Is the region suitable for relocating the multiboot modules? */
-        for ( j = mbi->mods_count - 1; j >= 0; j-- )
+        for ( j = bi->nr_modules - 1; j >= 0; j-- )
         {
             /*
              * 'headroom' is a guess for the decompressed size and
@@ -1429,7 +1445,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             /* Don't overlap with other modules (or Xen itself). */
             end = consider_modules(s, e, size, mod,
-                                   mbi->mods_count + relocated, j);
+                                   bi->nr_modules + relocated, j);
 
             if ( highmem_start && end > highmem_start )
                 continue;
@@ -1456,7 +1472,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules (or Xen itself). */
             e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), mod,
-                                 mbi->mods_count + relocated, -1);
+                                 bi->nr_modules + relocated, -1);
             if ( s >= e )
                 break;
             if ( e > kexec_crash_area_limit )
@@ -1471,7 +1487,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( modules_headroom && !mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
-    for ( i = 0; i < mbi->mods_count; ++i )
+    for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
 
@@ -1551,7 +1567,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                     ASSERT(j);
                 }
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
-                for ( j = 0; j < mbi->mods_count; ++j )
+                for ( j = 0; j < bi->nr_modules; ++j )
                 {
                     uint64_t end = pfn_to_paddr(mod[j].mod_start) +
                                    mod[j].mod_end;
@@ -1626,7 +1642,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         }
     }
 
-    for ( i = 0; i < mbi->mods_count; ++i )
+    for ( i = 0; i < bi->nr_modules; ++i )
     {
         set_pdx_range(mod[i].mod_start,
                       mod[i].mod_start + PFN_UP(mod[i].mod_end));
@@ -2011,8 +2027,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? XENLOG_INFO : XENLOG_WARNING "Warning: ",
            cpu_has_nx ? "" : "not ");
 
-    initrdidx = find_first_bit(module_map, mbi->mods_count);
-    if ( bitmap_weight(module_map, mbi->mods_count) > 1 )
+    initrdidx = find_first_bit(module_map, bi->nr_modules);
+    if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
                initrdidx);
@@ -2022,7 +2038,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
     dom0 = create_dom0(mod, modules_headroom,
-                       initrdidx < mbi->mods_count ? mod + initrdidx : NULL,
+                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
                        kextra, loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:50:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:50:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811317.1223866 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZ8r-00051R-Qr; Sun, 06 Oct 2024 21:50:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811317.1223866; Sun, 06 Oct 2024 21:50: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 1sxZ8r-00051K-OM; Sun, 06 Oct 2024 21:50:17 +0000
Received: by outflank-mailman (input) for mailman id 811317;
 Sun, 06 Oct 2024 21:50: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ8q-00051E-Hs
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:50:16 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f5a93ec1-842c-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:50:12 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251403835311.62403873473215;
 Sun, 6 Oct 2024 14:50:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f5a93ec1-842c-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251406; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=iot5QQK2prrqA6AMiS2JZGfX/WuL0dJitFPe1g1A60NiueMf2EhsAbGBE1Fqu60wm4838/ijnKeRNFdQMjTdUcUzPUZZg1CDX+GaT6mlkET4q4Uf8+xu5Uj0mTNieGmgawBrO7E3zGIJp/iDiptQ4yqvK823gqlXeetLJ62jbic=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251406; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=522wIIyZ7Ak4tket530K/cJQ4Q6ozBp9XhRContCJQg=; 
	b=an18MrzH70ZsFA7V80sFt3AAuAtdNYTDdoBs5YQutF/ihxMPYpSr3NarO17qaG1MsqrGdNORplgD+HkExrVJ5vlvbvv5vNJAifCV7KM/76K6BWHHw/LU62DoI1sYxdlhTaJOnddeVLngcsvE+kD1NJQL9w1Uh44w+ZVjl5fJ/Aw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251406;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=522wIIyZ7Ak4tket530K/cJQ4Q6ozBp9XhRContCJQg=;
	b=SsEAsj1tCSLo5raBSWqDbO1kvr2KDoJYrSkTFHBXN4C7DgNayz1JqeOmvXwG6/Ul
	kaoE0fdRWxI+aJESw8R2h/nFFOncJjr0AEcDY9+7BQRxLBNj8dfxQ1qBop74BBalpAn
	ypsmDx+mMFOOkGf1L41hWcpyae31TT3sEkFwMJbg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com
Subject: [PATCH v5 00/44] Boot modules for Hyperlaunch
Date: Sun,  6 Oct 2024 17:49:11 -0400
Message-Id: <20241006214956.24339-1-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The Boot Modules for Hyperlaunch series is an effort to split out preliminary
changes necessary for the introduction of the Hyperlaunch domain builder
logic. These preliminary changes revolve around introducing the struct
boot_module and struct boot_domain structures. This includes converting the
dom0 construction path to use these structures. These abstractions lay the
groundwork to transform and extend the dom0 construction logic into a limited,
but general domain builder.

The splitting of Hyperlaunch into a set of series are twofold, to reduce the
effort in reviewing a much larger series, and to reduce the effort in handling
the knock-on effects to the construction logic from requested review changes.

Much thanks to AMD for supporting this work.

Documentation on Hyperlaunch:
https://wiki.xenproject.org/wiki/Hyperlaunch

Original Hyperlaunch v1 patch series:
https://lists.xenproject.org/archives/html/xen-devel/2022-07/msg00345.html

V/r,
Daniel P. Smith

Changes since v4:
- added requested inline code comments
- moved instance of struct boot_info to unit level and extern'ed
- array of struct boot_module moved into struct boot_info
- renamed function to multiboot_fill_bootinfo, now returns *struct boot_info
- multiboot_fill_bootinfo changed to take multiboot_info_t addr as param
- added missing guard that checked there were multiboot1/2 modules passed
- renmaed struct elements per the review
- fixed errant commit messages per the review
- corrected coding style per review
- attempted to repalce all open codings of page/addr translations touched 
- unified use of `bi` as var name for pointer ref to struct boot_info
- when appropriate, ensure variables where typed, eg size_t, paddr_t, etc.
- dropped all uses of "a = b = c"

Changes since v3:
- reduced scope to x86 only
- broke changes into a smaller chunks with a linear progression
- concerns about deconflicting with Arm deferred
- conversion from mb1 to boot modules no longer attempted at entry points
- the temporary conversion function is now the permenant means to convert
- incorporated suggestion from Andy Cooper for handling bootstrap_map

Changes since v2:
- combined v2 patches 7 and 8 for common review
- rebased the v2 series onto the current tip of staging (sorry)
- fixed the placement of the patch changelogs
- provided the changes description in the cover letter

Changes since v1:
- the v2 and v3 series implement functionality from v1 patches 2-4
    - v2 series objective is to enable efficient patch review in support
      of merging the functionality into the hypervisor. It implements a
      subset of the v1 series, incorporating changes from community
      feedback.
- the bootstrap map is made accessible early in the v2 series via both
  multiboot and boot module arguments until later in the series where
  multiboot use is retired. This allows for incremental conversion across
  several patches from multiboot to boot modules.
- the 32-bit x86 boot environment header is removed, and changes are
  made to allow the new common bootinfo headers to be used instead.
- Arm and RISC-V architecture bootinfo headers are added to ensure that
  builds on those architectures can complete correctly.
- The KConfig patch to set the maximum number of boot modules allowed
  is not included in this series, replaced with a static maximum define.

Andrew Cooper (1):
  x86/boot: split bootstrap_map_addr() out of bootstrap_map()

Christopher Clark (1):
  x86/boot: move x86 boot module counting into a new boot_info struct

Daniel P. Smith (42):
  x86/boot: move boot loader name to boot info
  x86/boot: move cmdline to boot info
  x86/boot: move mmap info to boot info
  x86/boot: introduce struct boot_module
  x86/boot: convert consider_modules to struct boot_module
  x86/boot: move headroom to boot modules
  x86/boot: convert setup.c mod refs to early_mod
  x86/boot: introduce boot module types
  x86/boot: introduce boot module flags
  x86/boot: add start and size fields to struct boot_module
  x86/boot: update struct boot_module on module relocation
  x86/boot: transition relocation calculations to struct boot_module
  x86/boot: introduce boot module interator
  x86/boot: introduce consumed flag for struct boot_module
  x86/boot: convert microcode loading to consume struct boot_info
  x86/boot: convert late microcode loading to struct boot_module
  x86/boot: use consumed boot module flag for microcode
  x86/boot: convert xsm policy loading to struct boot_module
  x86/boot: convert ramdisk locating to struct boot_module
  x86/boot: remove module_map usage from microcode loading
  x86/boot: remove module_map usage from xsm policy loading
  x86/boot: remove module_map usage by ramdisk loading
  x86/boot: convert create_dom0 to use boot info
  x86/boot: convert construct_dom0 to use struct boot_module
  x86/boot: relocate kextra into boot info
  x86/boot: add cmdline to struct boot_module
  x86/boot: convert dom0_construct_pv image param to struct boot_module
  x86/boot: convert dom0_construct_pv initrd param to struct boot_module
  x86/boot: convert dom0_construct_pvh to struct boot_module
  x86/boot: convert pvh_load_kernel to struct boot_module
  x86/boot: convert initial_images to struct boot_module
  x86/boot: drop the use of initial_images unit global
  x86/boot: remove usage of mod_end by discard_initial_images
  x86/boot: remove remaining early_mod references
  x86/boot: remove mod from struct boot_module
  x86/boot: introduce boot domain
  x86/boot: introduce domid field to struct boot_domain
  x86/boot: add cmdline to struct boot_domain
  x86/boot: add struct domain to struct boot_domain
  x86/boot: convert construct_dom0 to struct boot_domain
  x86/boot: convert dom0_construct_pv to struct boot_domain
  x86/boot: convert dom0_construct_pvh to struct boot_domain

 xen/arch/x86/cpu/microcode/core.c     |  78 +++----
 xen/arch/x86/dom0_build.c             |  21 +-
 xen/arch/x86/hvm/dom0_build.c         |  55 +++--
 xen/arch/x86/include/asm/bootdomain.h |  37 +++
 xen/arch/x86/include/asm/bootinfo.h   |  91 ++++++++
 xen/arch/x86/include/asm/dom0_build.h |  11 +-
 xen/arch/x86/include/asm/microcode.h  |  12 +-
 xen/arch/x86/include/asm/setup.h      |  11 +-
 xen/arch/x86/pv/dom0_build.c          |  54 ++---
 xen/arch/x86/setup.c                  | 321 ++++++++++++++++----------
 xen/include/xsm/xsm.h                 |  14 +-
 xen/xsm/xsm_core.c                    |  15 +-
 xen/xsm/xsm_policy.c                  |  18 +-
 13 files changed, 461 insertions(+), 277 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootdomain.h
 create mode 100644 xen/arch/x86/include/asm/bootinfo.h

-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:50:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:50:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811319.1223887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZ95-0005b4-Dh; Sun, 06 Oct 2024 21:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811319.1223887; Sun, 06 Oct 2024 21: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 1sxZ95-0005ax-Ac; Sun, 06 Oct 2024 21:50:31 +0000
Received: by outflank-mailman (input) for mailman id 811319;
 Sun, 06 Oct 2024 21:50: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ93-00051E-Ht
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:50:29 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id feeb7867-842c-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:50:27 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251406432355.42805100974965;
 Sun, 6 Oct 2024 14:50:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: feeb7867-842c-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251409; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Z5eFUjW7jP8wwgsV5ZT66v2d02ulH4JHOIdGYfusS0AMzh6SexOCLgcw6Gt0nxRNup0GnNpBXHr3BAr8KWpFpQWnvezKvHqPtZL1j6B3RnhR3Y4SrVwU1CA3bywMJkUOOVwTkXHjYsd1nw3/spwcMlW6vw7aIyzq6mbGVi7Z4lA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251409; h=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=+VxBmPLfHuhGyVCN3XNQywHt4j+f3k80ai+3ymBT5Xk=; 
	b=iz1LYKgAHhL+kGFzqgQn7zcroJXLw5t6A7ZyZwXc3Fc5p1oKotMk1TzL8YlftbAOPaCzhQn0EQLbzggEMAFxQuSUKyIz9tple0kPqnHvBNO2aqYSXLEG2EVJyFyGtZE73sFhTbWlZ9JWo/bUbjZ2z+JZVgSogMuHoP3ZbNaAnIk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251409;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=+VxBmPLfHuhGyVCN3XNQywHt4j+f3k80ai+3ymBT5Xk=;
	b=GiytQE2yWSs7sVb5k/vmzNXoN6PZM9lutLD9azcp0zBG6lgdb2Yuz5GaPOUqA0iT
	zO+SYJnGEnqnjkgoulzTtEaKO+yIwlZaKJb1WBPYfaqKqvEMk7KXWZxX5Ec81wrd8hw
	BYP6EkYx6UmNbnbUxN+/+680Sz46LbTCTIqHJDY8=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 02/44] x86/boot: move boot loader name to boot info
Date: Sun,  6 Oct 2024 17:49:13 -0400
Message-Id: <20241006214956.24339-3-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Transition the incoming boot loader name to be held in struct boot_info.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  2 ++
 xen/arch/x86/setup.c                | 16 ++++++++--------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index a649500ee3a2..98ba773c9bc5 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -14,6 +14,8 @@
  */
 struct boot_info {
     unsigned int nr_modules;
+
+    const char *loader;
 };
 
 #endif /* __XEN_X86_BOOTINFO_H__ */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b75deb4fe4ee..aafc098ca268 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -285,6 +285,9 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
 
     bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
 
+    bi->loader = (mbi->flags & MBI_LOADERNAME) ?
+                            __va(mbi->boot_loader_name) : "unknown";
+
     return bi;
 }
 
@@ -978,7 +981,7 @@ static struct domain *__init create_dom0(const module_t *image,
 
 void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 {
-    const char *memmap_type = NULL, *loader, *cmdline = "";
+    const char *memmap_type = NULL, *cmdline = "";
     char *kextra;
     void *bsp_stack;
     struct cpu_info *info = get_cpu_info(), *bsp_info;
@@ -1032,12 +1035,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     bi = multiboot_fill_boot_info(mbi_p);
 
-    loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
-                                           : "unknown";
-
     /* Parse the command-line options. */
     if ( mbi->flags & MBI_CMDLINE )
-        cmdline = cmdline_cook(__va(mbi->cmdline), loader);
+        cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
 
     if ( (kextra = strstr(cmdline, " -- ")) != NULL )
     {
@@ -1078,7 +1078,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     if ( pvh_boot )
         pvh_print_info();
 
-    printk("Bootloader: %s\n", loader);
+    printk("Bootloader: %s\n", bi->loader);
 
     printk("Command line: %s\n", cmdline);
 
@@ -1171,7 +1171,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         l3_bootmap[l3_table_offset(BOOTSTRAP_MAP_BASE)] =
             l3e_from_paddr(__pa(l2_bootmap), __PAGE_HYPERVISOR);
 
-        memmap_type = loader;
+        memmap_type = bi->loader;
     }
     else if ( efi_enabled(EFI_BOOT) )
         memmap_type = "EFI";
@@ -2039,7 +2039,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      */
     dom0 = create_dom0(mod, modules_headroom,
                        initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
-                       kextra, loader);
+                       kextra, bi->loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:50:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:50:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811320.1223897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZ9C-00064T-Kq; Sun, 06 Oct 2024 21:50:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811320.1223897; Sun, 06 Oct 2024 21:50: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 1sxZ9C-00063l-IE; Sun, 06 Oct 2024 21:50:38 +0000
Received: by outflank-mailman (input) for mailman id 811320;
 Sun, 06 Oct 2024 21:50: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ9B-00051E-8F
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:50:37 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0382eaac-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:50:35 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251407684824.8538448252724;
 Sun, 6 Oct 2024 14:50:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0382eaac-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251409; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=bOooYAtv2R0jfUAshkSHKN1r2PAwmPs8odeWp3OFUyDh98JANeF6ugToKDwEE/QnhUpB4FC0CdqQaP4khQWGpPgz01fda3w/2dZjr63veCoelVsyTB6N1AxgnrHYrW3Jo15LwR/aIwKNZW5nSGzeXdf2j84uRY3K7coX2RlmLqQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251409; h=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=+uni2D8IzNXNtxODgaLcie6Ece0kX1I6Od5Z1lNdP44=; 
	b=S+dOKMAUdFcxC2R6e1yGaWjCp3neuHSv008sJGOrbmyCnW7v5Ba6HaIckmNXETuSi2aQzckNmL2vMXkA/XtP4V8cTJFOayBBfhmetKWCtEqg86fTT+Ykc88Z/BtPsKsCZIA/jeeOyU2JErbBLfTTjK4RbbDFusEcZtbyQy+8DfE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251409;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=+uni2D8IzNXNtxODgaLcie6Ece0kX1I6Od5Z1lNdP44=;
	b=DJomWE9EHMgMJMnzE9RJE79vg3sH1zN2t6bw5z4mHPYXC+luiDPwvTV3RTkSQmWO
	wQdP8EPTAtAb+TFl82XCyEVr0MnZ7hFt8DF73tokzlzA6hx5bFGJInERtMMdE7EIJoU
	oVJlz2x91kxRx8F8NvnlzhiKsuQDkHJSQz3dHbLc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v5 03/44] x86/boot: move cmdline to boot info
Date: Sun,  6 Oct 2024 17:49:14 -0400
Message-Id: <20241006214956.24339-4-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Transition Xen's command line to being held in struct boot_info.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  1 +
 xen/arch/x86/setup.c                | 20 ++++++++++++--------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 98ba773c9bc5..327038465a44 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -16,6 +16,7 @@ struct boot_info {
     unsigned int nr_modules;
 
     const char *loader;
+    const char *cmdline;
 };
 
 #endif /* __XEN_X86_BOOTINFO_H__ */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index aafc098ca268..0921f296075f 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -274,6 +274,8 @@ static int __init cf_check parse_acpi_param(const char *s)
 }
 custom_param("acpi", parse_acpi_param);
 
+static const char *cmdline_cook(const char *p, const char *loader_name);
+
 static const module_t *__initdata initial_images;
 
 struct boot_info __initdata xen_boot_info;
@@ -288,6 +290,12 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
     bi->loader = (mbi->flags & MBI_LOADERNAME) ?
                             __va(mbi->boot_loader_name) : "unknown";
 
+    /* Parse the command-line options. */
+    if ( mbi->flags & MBI_CMDLINE )
+        bi->cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
+    else
+        bi->cmdline = "";
+
     return bi;
 }
 
@@ -981,7 +989,7 @@ static struct domain *__init create_dom0(const module_t *image,
 
 void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 {
-    const char *memmap_type = NULL, *cmdline = "";
+    const char *memmap_type = NULL;
     char *kextra;
     void *bsp_stack;
     struct cpu_info *info = get_cpu_info(), *bsp_info;
@@ -1035,11 +1043,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     bi = multiboot_fill_boot_info(mbi_p);
 
-    /* Parse the command-line options. */
-    if ( mbi->flags & MBI_CMDLINE )
-        cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
-
-    if ( (kextra = strstr(cmdline, " -- ")) != NULL )
+    if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )
     {
         /*
          * Options after ' -- ' separator belong to dom0.
@@ -1050,7 +1054,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         kextra += 3;
         while ( kextra[1] == ' ' ) kextra++;
     }
-    cmdline_parse(cmdline);
+    cmdline_parse(bi->cmdline);
 
     /* Must be after command line argument parsing and before
      * allocing any xenheap structures wanted in lower memory. */
@@ -1080,7 +1084,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     printk("Bootloader: %s\n", bi->loader);
 
-    printk("Command line: %s\n", cmdline);
+    printk("Command line: %s\n", bi->cmdline);
 
     printk("Xen image load base address: %#lx\n", xen_phys_start);
     if ( hypervisor_name )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:50:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:50:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811326.1223907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZ9K-0006V2-UD; Sun, 06 Oct 2024 21:50:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811326.1223907; Sun, 06 Oct 2024 21: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 1sxZ9K-0006UD-P3; Sun, 06 Oct 2024 21:50:46 +0000
Received: by outflank-mailman (input) for mailman id 811326;
 Sun, 06 Oct 2024 21:50: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ9K-0006RM-1H
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:50:46 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 08be64d6-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:50:44 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251408844260.4452650836515;
 Sun, 6 Oct 2024 14:50:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 08be64d6-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251410; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=RhoqR4I4q0pWLan9GBidh4YJmbywSpEZ/OScVBmithodruAlVI/SmieboFk950hhpG+XLWTTagdaWQAmdbE183lINDyjni7VLNZVFVrXuTlCBI+Yda64bskKs3QrLqzTbbmtZM7oX9c0kJC5l6/9vm6mdUGzqzJc7vfTfZ8PnIk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251410; h=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=im/29rNxqImDLCcMDPqpn9SU0pgWzyuA70lRR35s2/Q=; 
	b=G8Dmt+bTfgEYHN5+vTUyB76SQUBETIEnqrR9qJnxL24Z+N8LUs0IpJ38ydaTjzy238w+dzJcN0aC+Y/ilXKYOUwpho+gRqIMTIgvOf7vmdY2XjKxXuaZuDm4al/U5ztU3T3OFxykQFHtw2ZC3uGkJth5xnTUhrZDt6E9JWs6/3k=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251410;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=im/29rNxqImDLCcMDPqpn9SU0pgWzyuA70lRR35s2/Q=;
	b=RF0elIhVwAv7b9mP7rI2DCkiGAyXl/yLiFfWROi/3QYR4WGYFCiqVjBNcxAJ0Dq4
	4IsGQNA2yzzDb7Ftz11tf51EhpLMyWPOoEO+Kbscu3SlN53w4NrDuHU+0+NKKSfu8Yi
	io/n48eNUjGgEc/kuBJ9tCmhGjudDRTxjNbfWnlw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 04/44] x86/boot: move mmap info to boot info
Date: Sun,  6 Oct 2024 17:49:15 -0400
Message-Id: <20241006214956.24339-5-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Transition the memory map info to be held in struct boot_info.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  5 +++++
 xen/arch/x86/setup.c                | 12 +++++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 327038465a44..87d311ac1399 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,6 +8,8 @@
 #ifndef __XEN_X86_BOOTINFO_H__
 #define __XEN_X86_BOOTINFO_H__
 
+#include <xen/types.h>
+
 /*
  * Xen internal representation of information provided by the
  * bootloader/environment, or derived from the information.
@@ -17,6 +19,9 @@ struct boot_info {
 
     const char *loader;
     const char *cmdline;
+
+    paddr_t memmap_addr;
+    size_t memmap_length;
 };
 
 #endif /* __XEN_X86_BOOTINFO_H__ */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 0921f296075f..f0482ca8cc55 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -296,6 +296,12 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
     else
         bi->cmdline = "";
 
+    if ( mbi->flags & MBI_MEMMAP )
+    {
+        bi->memmap_addr = mbi->mmap_addr;
+        bi->memmap_length = mbi->mmap_length;
+    }
+
     return bi;
 }
 
@@ -1185,13 +1191,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         memmap_type = "Xen-e820";
     }
-    else if ( mbi->flags & MBI_MEMMAP )
+    else if ( bi->memmap_addr )
     {
         memmap_type = "Multiboot-e820";
-        while ( bytes < mbi->mmap_length &&
+        while ( bytes < bi->memmap_length &&
                 e820_raw.nr_map < ARRAY_SIZE(e820_raw.map) )
         {
-            memory_map_t *map = __va(mbi->mmap_addr + bytes);
+            memory_map_t *map = __va(bi->memmap_addr + bytes);
 
             /*
              * This is a gross workaround for a BIOS bug. Some bootloaders do
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:52:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:52:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811338.1223917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZAv-0007a5-81; Sun, 06 Oct 2024 21:52:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811338.1223917; Sun, 06 Oct 2024 21:52: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 1sxZAv-0007Zy-4J; Sun, 06 Oct 2024 21:52:25 +0000
Received: by outflank-mailman (input) for mailman id 811338;
 Sun, 06 Oct 2024 21:52: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZAt-0007Zk-OC
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:23 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 43674cee-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:52:22 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251423076361.4005991604132;
 Sun, 6 Oct 2024 14:50:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 43674cee-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251424; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Cm2yfDgYKVhiWdiJpNXBaqZCh9/wTnSqO8SGzK4i6Z2mEkoDfvn7ZaQtEFd37N1xSBjAiKfMd1b2p5Mg7D1JS9mdth0ESL+yyaBCW3jOP8Rlpf6bBk5DzLR6spYt1rzNg2USfy1EbmK2LdMywHEO220c6vuV/DuOWCPGpocKtt4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251424; h=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=rsjinz7BtJ8PUF4bqFrjiANBKB2lhUkIggv9H9Y5wr0=; 
	b=kXenxq/25XZNg6VAiDUYU2cr/yZp0s512PCAb+K53nXBh0byxnHgyNBSahYP1ZH+fH5WMkNHamDAX08LtWSR84NS9N/DjD7q9bFxFaxE8gzNSVdSQksmsrDMUOJBqYIRn4Wx0EkxSLSgkfrCEdXskCqytUbMroS/n5w0BIrztuM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251424;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=rsjinz7BtJ8PUF4bqFrjiANBKB2lhUkIggv9H9Y5wr0=;
	b=ehzm01XGqWInV9duJeZ9tiR0stjjoz0zfGP6K3UYKwH/3lybb1s+SnrcF+W59Guc
	fxTfJVR6HrLql3mNUYSPYUIvPAW9JD3Q9cpRB/sDPeYfoChjjfZkxhNRJlk7lIcrlCN
	95eZReM0hPWsK8zd0gsPWMPLoTkf1ojisL2432SE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 16/44] x86/boot: introduce consumed flag for struct boot_module
Date: Sun,  6 Oct 2024 17:49:27 -0400
Message-Id: <20241006214956.24339-17-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Allow the tracking of when a boot module has been consumed by a handler in the
hypervisor independent of when it is claimed. The instances where the
hypervisor does nothing beyond claiming, the dom0 kernel, dom0 ramdisk, and a
placeholder for itself, are updated as being consumed at the time of being
claimed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 1 +
 xen/arch/x86/setup.c                | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index c79678840d31..7833b065eff1 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -34,6 +34,7 @@ struct boot_module {
 
     uint32_t flags;
 #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
+#define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
 
     paddr_t start;
     size_t size;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 4f540c461b26..235b4e41f653 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -318,6 +318,7 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
 
     /* map the last mb module for xen entry */
     bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
+    bi->mods[bi->nr_modules].flags |= BOOTMOD_FLAG_X86_CONSUMED;
     bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];
 
     return bi;
@@ -1196,6 +1197,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
+    bi->mods[0].flags |= BOOTMOD_FLAG_X86_CONSUMED;
 
     if ( pvh_boot )
     {
@@ -2085,6 +2087,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     initrdidx = find_first_bit(module_map, bi->nr_modules);
     bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
+    bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
     if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:52:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:52:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811339.1223927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZB2-0007rn-Ds; Sun, 06 Oct 2024 21:52:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811339.1223927; Sun, 06 Oct 2024 21:52: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 1sxZB2-0007rg-Al; Sun, 06 Oct 2024 21:52:32 +0000
Received: by outflank-mailman (input) for mailman id 811339;
 Sun, 06 Oct 2024 21:52: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZB0-0007Zk-N2
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:30 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 47b2d596-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:52:29 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251424241362.33263729658347;
 Sun, 6 Oct 2024 14:50:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47b2d596-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251426; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Dj3EA8If0G5yMwKqaTp3FThzMtbUDefDpjUIs0gY1Jf2Qa/BGak3dAZk5/HG3TKYRZajafvTlz1e9aqQnGR7Noom6ODChTxju1n4YuKgcucbdbiIsoo1RuaNBWdYpwdZCiru3u/93GthrtAT0DRt4EhYwuR9bKB9dROapyAFvCw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251426; h=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=HEqo8d6ZIFv5zBQXXADComdO+6rAups1e2Re1r6sRig=; 
	b=WEzs8n0cuOpxJcvDVmDkrXvbVBzRownzeqaChiAo5YUQF/XnUvrFE5BRdi1O0aGj79QDYK4S0u1QZdhAXCZbuq5Xps3/qt5gJEE1KHckC8e3zwckB3UrvoSR1g8xZKn71UDMJyqWyqDQzqOI7Xbj4EkdU7jxvFROlArt3GlDP7I=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251426;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=HEqo8d6ZIFv5zBQXXADComdO+6rAups1e2Re1r6sRig=;
	b=SPTLkQK7xclopGcA5Q0I2EftBiP9yT7m6KmGKxBTxb7NoG/y4DlSJfWd8PFuTgyS
	odp0LsCDIwHxY6syyR7Tm/ktYZHSx2J3ZfeyzQxjSGQWrXQIXINIMnllnQqTmqRBRqm
	VboEVnRN+okPH4L9y3BpwPqVaJJVSBk5F4v4JKoc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 17/44] x86/boot: convert microcode loading to consume struct boot_info
Date: Sun,  6 Oct 2024 17:49:28 -0400
Message-Id: <20241006214956.24339-18-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Convert the microcode loading functions to take struct boot_info, and then
using struct boot_module to map and check for microcode. To keep the changes
focused, continue using the struct mod to hold the reference to the microcode
that is used by the late microcode logic.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c    | 37 +++++++++++++---------------
 xen/arch/x86/include/asm/bootinfo.h  |  1 +
 xen/arch/x86/include/asm/microcode.h | 14 ++++++-----
 xen/arch/x86/setup.c                 |  4 +--
 4 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 8564e4d2c94c..22fea80bc97e 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -35,6 +35,7 @@
 #include <xen/watchdog.h>
 
 #include <asm/apic.h>
+#include <asm/bootinfo.h>
 #include <asm/cpu-policy.h>
 #include <asm/nmi.h>
 #include <asm/processor.h>
@@ -153,10 +154,8 @@ static int __init cf_check parse_ucode(const char *s)
 custom_param("ucode", parse_ucode);
 
 static void __init microcode_scan_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+    unsigned long *module_map, const struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     uint64_t *_blob_start;
     unsigned long _blob_size;
     struct cpio_data cd;
@@ -178,16 +177,16 @@ static void __init microcode_scan_module(
     /*
      * Try all modules and see whichever could be the microcode blob.
      */
-    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
+    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
     {
         if ( !test_bit(i, module_map) )
             continue;
 
-        _blob_start = bootstrap_map(&mod[i]);
-        _blob_size = mod[i].mod_end;
+        _blob_start = bootstrap_map_bm(&bi->mods[i]);
+        _blob_size = bi->mods[i].size;
         if ( !_blob_start )
         {
-            printk("Could not map multiboot module #%d (size: %ld)\n",
+            printk("Could not map boot module #%d (size: %ld)\n",
                    i, _blob_size);
             continue;
         }
@@ -205,20 +204,18 @@ static void __init microcode_scan_module(
 }
 
 static void __init microcode_grab_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
-
     if ( ucode_mod_idx < 0 )
-        ucode_mod_idx += mbi->mods_count;
-    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
+        ucode_mod_idx += bi->nr_modules;
+    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
-    ucode_mod = mod[ucode_mod_idx];
+    bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
+    ucode_mod = *bi->mods[ucode_mod_idx].mod;
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(module_map, bi);
 }
 
 static struct microcode_ops __ro_after_init ucode_ops;
@@ -822,8 +819,8 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+int __init microcode_init_cache(
+    unsigned long *module_map, const struct boot_info *bi)
 {
     int rc = 0;
 
@@ -832,7 +829,7 @@ int __init microcode_init_cache(unsigned long *module_map,
 
     if ( ucode_scan )
         /* Need to rescan the modules because they might have been relocated */
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(module_map, bi);
 
     if ( ucode_mod.mod_end )
         rc = early_update_cache(bootstrap_map(&ucode_mod),
@@ -879,7 +876,7 @@ static int __init early_microcode_update_cpu(void)
 }
 
 int __init early_microcode_init(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+                                struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
     int rc = 0;
@@ -922,7 +919,7 @@ int __init early_microcode_init(unsigned long *module_map,
         return -ENODEV;
     }
 
-    microcode_grab_module(module_map, mbi);
+    microcode_grab_module(module_map, bi);
 
     if ( ucode_mod.mod_end || ucode_blob.size )
         rc = early_microcode_update_cpu();
diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 7833b065eff1..1ec29a423061 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -20,6 +20,7 @@ enum bootmod_type {
     BOOTMOD_XEN,
     BOOTMOD_KERNEL,
     BOOTMOD_RAMDISK,
+    BOOTMOD_MICROCODE,
 };
 
 struct boot_module {
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 57c08205d475..495c8f7a7cc5 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -4,6 +4,8 @@
 #include <xen/types.h>
 #include <xen/percpu.h>
 
+#include <asm/bootinfo.h>
+
 #include <public/xen.h>
 
 struct multiboot_info;
@@ -22,12 +24,12 @@ struct cpu_signature {
 DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 
 void microcode_set_module(unsigned int idx);
-int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
-                     unsigned long len, unsigned int flags);
-int early_microcode_init(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
-int microcode_init_cache(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
+int microcode_update(
+    XEN_GUEST_HANDLE(const_void) buf, unsigned long len, unsigned int flags);
+int early_microcode_init(
+    unsigned long *module_map, struct boot_info *bi);
+int microcode_init_cache(
+    unsigned long *module_map, const struct boot_info *bi);
 int microcode_update_one(void);
 
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 235b4e41f653..48c509b62a4c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1382,7 +1382,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * TODO: load ucode earlier once multiboot modules become accessible
      * at an earlier stage.
      */
-    early_microcode_init(module_map, mbi);
+    early_microcode_init(module_map, bi);
 
     if ( xen_phys_start )
     {
@@ -1939,7 +1939,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     timer_init();
 
-    microcode_init_cache(module_map, mbi); /* Needs xmalloc() */
+    microcode_init_cache(module_map, bi); /* Needs xmalloc() */
 
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:52:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:52:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811340.1223937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZB8-0008EH-Pm; Sun, 06 Oct 2024 21:52:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811340.1223937; Sun, 06 Oct 2024 21: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 1sxZB8-0008EA-Lz; Sun, 06 Oct 2024 21:52:38 +0000
Received: by outflank-mailman (input) for mailman id 811340;
 Sun, 06 Oct 2024 21: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZB7-0007Zk-GS
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:37 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4bd39301-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:52:36 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251425417792.9443259328399;
 Sun, 6 Oct 2024 14:50:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4bd39301-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251427; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=h/mY93XEW60nPUsutwR7iWiZgS7zET21cJ4yQTyDysiruHKRm8t7wivLjV7959M4/sdkL/q8SnA9U5T8bX9WRgc6YhSh6f/Q/pR3Esq/hlvIkQ21CMpHROlW5AakscV4z3HMXWInpNlfgjPjQ3Y70XuoITs9Yk4jajNMF6gRd5Q=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251427; h=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=8SJ3l6W5Fjze1fW/V5fSHZb+ng2bvJdWFKLTG0JGAVw=; 
	b=g/IbNRwL6A8CwnPXgVAQ/ECGSjSlk7PEmuMGs43D739olVVzdOPJjtWS7ruodofg0LKNKgvp4CJ3MokkwHYuU9Qs/NcSqEWcU8kRCRIOcx4LpQ/YLBTFu7Gydm2XJ8bQ7Mk7l4atB0csRDgz9iKZcRbq+3RezNwyELYlbexvaaE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251427;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=8SJ3l6W5Fjze1fW/V5fSHZb+ng2bvJdWFKLTG0JGAVw=;
	b=aza6s0qGlurg7cBUEJca7VCER1+nInKzjWvx1cPrFUF8NGpDHDVaWhVHogNDw7D3
	j/V78wUDLrhpr1tcTDfdNpFduw4iQ1koUcd1R3BBRYq8X5ueELxfSVqqzF97rtipF18
	LLVOqO/s6r6HLjkaZRpoidDe938Hl9dLeYQPExzU=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 18/44] x86/boot: convert late microcode loading to struct boot_module
Date: Sun,  6 Oct 2024 17:49:29 -0400
Message-Id: <20241006214956.24339-19-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Remove the use of struct mod to hold the reference for the microcode,
converting the code to work with a struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 22fea80bc97e..7bcc17e0ab2f 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -28,7 +28,6 @@
 #include <xen/err.h>
 #include <xen/guest_access.h>
 #include <xen/init.h>
-#include <xen/multiboot.h>
 #include <xen/param.h>
 #include <xen/spinlock.h>
 #include <xen/stop_machine.h>
@@ -59,7 +58,7 @@
  */
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
-static module_t __initdata ucode_mod;
+static struct boot_module __initdata ucode_mod;
 static signed int __initdata ucode_mod_idx;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
@@ -98,7 +97,7 @@ struct patch_with_flags {
 
 static struct ucode_mod_blob __initdata ucode_blob;
 /*
- * By default we will NOT parse the multiboot modules to see if there is
+ * By default we will NOT parse the boot modules to see if there is
  * cpio image with the microcode images.
  */
 static bool __initdata ucode_scan;
@@ -199,7 +198,7 @@ static void __init microcode_scan_module(
             ucode_blob.data = cd.data;
             break;
         }
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
     }
 }
 
@@ -212,7 +211,7 @@ static void __init microcode_grab_module(
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
-    ucode_mod = *bi->mods[ucode_mod_idx].mod;
+    ucode_mod = bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
         microcode_scan_module(module_map, bi);
@@ -766,14 +765,14 @@ static int __init cf_check microcode_init(void)
      */
     if ( ucode_blob.size )
     {
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
         ucode_blob.size = 0;
         ucode_blob.data = NULL;
     }
-    else if ( ucode_mod.mod_end )
+    else if ( ucode_mod.size )
     {
-        bootstrap_map(NULL);
-        ucode_mod.mod_end = 0;
+        bootstrap_map_bm(NULL);
+        ucode_mod.size = 0;
     }
 
     return 0;
@@ -831,9 +830,9 @@ int __init microcode_init_cache(
         /* Need to rescan the modules because they might have been relocated */
         microcode_scan_module(module_map, bi);
 
-    if ( ucode_mod.mod_end )
-        rc = early_update_cache(bootstrap_map(&ucode_mod),
-                                ucode_mod.mod_end);
+    if ( ucode_mod.size )
+        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
+                                ucode_mod.size);
     else if ( ucode_blob.size )
         rc = early_update_cache(ucode_blob.data, ucode_blob.size);
 
@@ -852,10 +851,10 @@ static int __init early_microcode_update_cpu(void)
         len = ucode_blob.size;
         data = ucode_blob.data;
     }
-    else if ( ucode_mod.mod_end )
+    else if ( ucode_mod.size )
     {
-        len = ucode_mod.mod_end;
-        data = bootstrap_map(&ucode_mod);
+        len = ucode_mod.size;
+        data = bootstrap_map_bm(&ucode_mod);
     }
 
     if ( !data )
@@ -921,7 +920,7 @@ int __init early_microcode_init(unsigned long *module_map,
 
     microcode_grab_module(module_map, bi);
 
-    if ( ucode_mod.mod_end || ucode_blob.size )
+    if ( ucode_mod.size || ucode_blob.size )
         rc = early_microcode_update_cpu();
 
     /*
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:52:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:52:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811341.1223947 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZBF-0000B3-1q; Sun, 06 Oct 2024 21:52:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811341.1223947; Sun, 06 Oct 2024 21:52: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 1sxZBE-0000Aw-U5; Sun, 06 Oct 2024 21:52:44 +0000
Received: by outflank-mailman (input) for mailman id 811341;
 Sun, 06 Oct 2024 21:52: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZBE-0007Zk-1r
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:44 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4fbdc0bc-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:52:43 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251426576325.80828550922445;
 Sun, 6 Oct 2024 14:50:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4fbdc0bc-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251428; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=N7iKppSVcfv0jDz46c/BvD4cZCGDru5iTva3GFu9FHVTvhmUf9lpTML2p4EIi9k9MUBmUIVXeQLPiuly8CG8ML123LKGsAA7mgAGjaNgrsNZbJwPFfvWMkJHyEwumFJnR+tGPSBZsAY9dLD1Zi9FbuW8Uvc76GXeuTD/Wed0ays=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251428; h=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=VF4eHm6uxrTpSrtxk8vxbuolB5VgBKHNdcHv6nx9QeQ=; 
	b=LJLNm2vN3suBgycEWjxJ09CR8EDgehILREXuI8TxjaGY2KRT56AuEoWTJjQ5scv3IPvg+44rj0AjobqOJcSh1vsnOX5jJ1Q0X74bZpEnxUKS+5pZyKu3ifk2VcybGsVfaSdiJlA9Hi/bIaJ6XtY+A7lhhnl4FWR85dQbiT0QYsE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251428;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=VF4eHm6uxrTpSrtxk8vxbuolB5VgBKHNdcHv6nx9QeQ=;
	b=jdwto2rbWK+65sAyB9UAyAZfy1cVxDbiBOPoToPpI6P7OBGsR3QtrR05OhORT9cT
	I9VVlY4HKGk8CqJ+ShLQn5YhCdW/3s0s09AUO4ZLTuYPJNrp7aLsS/JbNWlp+lLcMXZ
	hngLz9gRcYCJmjyAKs2gHJNOrO8hH6vCSqhyQgH4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 19/44] x86/boot: use consumed boot module flag for microcode
Date: Sun,  6 Oct 2024 17:49:30 -0400
Message-Id: <20241006214956.24339-20-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To track if the microcode boot module was loaded, a copy of the boot module is
kept. The size element of this copy is set to zero as the indicator that the
microcode was loaded. A side effect is that the modules have to be rescanned to
find the boot module post-relocation, so the cache copy can be created.

Use the consumed boot module flag to track the loading of the microcode boot
module. This removes the need to manipulate the boot module size element, no
longer requiring the copy, thus allowing it to be replaced by a reference. As a
result it is no longer necessary to rescan the boot modules after relocation
has occurred.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 7bcc17e0ab2f..5b42aad2fdd0 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -58,7 +58,7 @@
  */
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
-static struct boot_module __initdata ucode_mod;
+static struct boot_module __initdata *ucode_mod;
 static signed int __initdata ucode_mod_idx;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
@@ -211,7 +211,7 @@ static void __init microcode_grab_module(
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
-    ucode_mod = bi->mods[ucode_mod_idx];
+    ucode_mod = &bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
         microcode_scan_module(module_map, bi);
@@ -769,10 +769,10 @@ static int __init cf_check microcode_init(void)
         ucode_blob.size = 0;
         ucode_blob.data = NULL;
     }
-    else if ( ucode_mod.size )
+    else if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
     {
         bootstrap_map_bm(NULL);
-        ucode_mod.size = 0;
+        ucode_mod->flags |= BOOTMOD_FLAG_X86_CONSUMED;
     }
 
     return 0;
@@ -826,14 +826,14 @@ int __init microcode_init_cache(
     if ( !ucode_ops.apply_microcode )
         return -ENODEV;
 
-    if ( ucode_scan )
-        /* Need to rescan the modules because they might have been relocated */
+    /* Scan if microcode was not detected earlier */
+    if ( !ucode_mod )
         microcode_scan_module(module_map, bi);
 
-    if ( ucode_mod.size )
-        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
-                                ucode_mod.size);
-    else if ( ucode_blob.size )
+    if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
+        rc = early_update_cache(bootstrap_map_bm(ucode_mod),
+                                ucode_mod->size);
+    else if ( ucode_mod && ucode_blob.size )
         rc = early_update_cache(ucode_blob.data, ucode_blob.size);
 
     return rc;
@@ -851,10 +851,10 @@ static int __init early_microcode_update_cpu(void)
         len = ucode_blob.size;
         data = ucode_blob.data;
     }
-    else if ( ucode_mod.size )
+    else if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
     {
-        len = ucode_mod.size;
-        data = bootstrap_map_bm(&ucode_mod);
+        len = ucode_mod->size;
+        data = bootstrap_map_bm(ucode_mod);
     }
 
     if ( !data )
@@ -920,7 +920,7 @@ int __init early_microcode_init(unsigned long *module_map,
 
     microcode_grab_module(module_map, bi);
 
-    if ( ucode_mod.size || ucode_blob.size )
+    if ( ucode_mod || ucode_blob.size )
         rc = early_microcode_update_cpu();
 
     /*
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:52:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:52:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811343.1223956 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZBN-0000nl-8d; Sun, 06 Oct 2024 21:52:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811343.1223956; Sun, 06 Oct 2024 21: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 1sxZBN-0000ne-5t; Sun, 06 Oct 2024 21:52:53 +0000
Received: by outflank-mailman (input) for mailman id 811343;
 Sun, 06 Oct 2024 21: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZBL-0007Zk-Gy
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:51 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 53ea6be1-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:52:50 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251427757545.6494291742589;
 Sun, 6 Oct 2024 14:50:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 53ea6be1-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251429; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ee4crEVc8qe5BMK4juKcdNkqFWSezFP+nVQmV2l+x51NKld5jKi/PW8BKxf+XLdZfAI1QDm61wdIkTmakyhjd1UMIO2I0R4BKfuhDUXIpH77l76fIMFYQnj/enyoVxqqLpJ6G0yI4aZO3gT6O8LSBRxjR+ZdC7/gWOwLJhg8VLs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251429; h=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=JIn7xG+4jabXsP0NV21SdZNlGU9vp4JgVyXNn06XG5c=; 
	b=NByntYxYIG50tIZNv7RX5QKKvQlcYz9fRdREQSIGv24G3G+zUsrzawhwkBC2lvvHStMu7QVkHGXNZBSZz8MucfmkGxzraRL+c5TL6V19awXieAgQgY1RkTo27FwpayvMMpo3FAsUUyypLsz3m6Y5PEdpK6mS7nD25LZ33WRXNSA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251429;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=JIn7xG+4jabXsP0NV21SdZNlGU9vp4JgVyXNn06XG5c=;
	b=B7wx8YJy3b4x4ZoojtzxmqPKOhK8Fp0alkuYI75q4PlTATgMlXNBlkePA4nOPjwP
	/TVZ+/bb79Y5S1pLAqnBighPCC6fveZVEu+3LVLkzVGxyNuKM09V+FUBGGsK6KZEvLX
	Ri89Yvs+KuvwZ7W2K5QvygtQ7Laz6+VvcrZAZ29k=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 20/44] x86/boot: convert xsm policy loading to struct boot_module
Date: Sun,  6 Oct 2024 17:49:31 -0400
Message-Id: <20241006214956.24339-21-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Iterate through the unclaimed struct boot_module to see if any are an XSM FLASK
policy. If one is located, mark it as an xsm policy.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  1 +
 xen/arch/x86/setup.c                |  2 +-
 xen/include/xsm/xsm.h               | 11 +++++++----
 xen/xsm/xsm_core.c                  | 13 +++++++++++--
 xen/xsm/xsm_policy.c                | 15 ++++++++-------
 5 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 1ec29a423061..5cbd1cbbbccd 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -21,6 +21,7 @@ enum bootmod_type {
     BOOTMOD_KERNEL,
     BOOTMOD_RAMDISK,
     BOOTMOD_MICROCODE,
+    BOOTMOD_XSM_POLICY,
 };
 
 struct boot_module {
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 48c509b62a4c..e560fa798d71 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1865,7 +1865,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
                                   RANGESETF_prettyprint_hex);
 
-    xsm_multiboot_init(module_map, mbi);
+    xsm_multiboot_init(module_map, bi);
 
     /*
      * IOMMU-related ACPI table parsing may require some of the system domains
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731af..9e511ef8878c 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -17,7 +17,10 @@
 
 #include <xen/alternative-call.h>
 #include <xen/sched.h>
-#include <xen/multiboot.h>
+
+#ifdef CONFIG_MULTIBOOT
+#include <asm/bootinfo.h>
+#endif
 
 /* policy magic number (defined by XSM_MAGIC) */
 typedef uint32_t xsm_magic_t;
@@ -779,9 +782,9 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 
 #ifdef CONFIG_MULTIBOOT
 int xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi);
+    unsigned long *module_map, const struct boot_info *bi);
 int xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
+    unsigned long *module_map, const struct boot_info *bi,
     void **policy_buffer, size_t *policy_size);
 #endif
 
@@ -829,7 +832,7 @@ static const inline struct xsm_ops *silo_init(void)
 
 #ifdef CONFIG_MULTIBOOT
 static inline int xsm_multiboot_init (
-    unsigned long *module_map, const multiboot_info_t *mbi)
+    unsigned long *module_map, const struct boot_info *bi)
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index eaa028109bde..69d3800d4c39 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -21,6 +21,7 @@
 #ifdef CONFIG_XSM
 
 #ifdef CONFIG_MULTIBOOT
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 
@@ -140,7 +141,7 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
     int ret = 0;
     void *policy_buffer = NULL;
@@ -150,7 +151,7 @@ int __init xsm_multiboot_init(
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, mbi, &policy_buffer,
+        ret = xsm_multiboot_policy_init(module_map, bi, &policy_buffer,
                                         &policy_size);
         if ( ret )
         {
@@ -161,6 +162,14 @@ int __init xsm_multiboot_init(
     }
 
     ret = xsm_core_init(policy_buffer, policy_size);
+    if ( ret == 0 )
+    {
+        int idx = first_boot_module_index(bi, BOOTMOD_XSM_POLICY);
+
+        /* If the policy was loaded from a boot module, mark it consumed */
+        if ( idx >= 0 )
+            bi->mods[idx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+    }
     bootstrap_map(NULL);
 
     return 0;
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 8dafbc93810f..921bb254b9d1 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -21,6 +21,7 @@
 #include <xsm/xsm.h>
 #ifdef CONFIG_MULTIBOOT
 #include <xen/multiboot.h>
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 #include <xen/bitops.h>
@@ -31,11 +32,10 @@
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
+    unsigned long *module_map, struct boot_info *bi,
     void **policy_buffer, size_t *policy_size)
 {
     int i;
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     int rc = 0;
     u32 *_policy_start;
     unsigned long _policy_len;
@@ -44,13 +44,13 @@ int __init xsm_multiboot_policy_init(
      * Try all modules and see whichever could be the binary policy.
      * Adjust module_map for the module that is the binary policy.
      */
-    for ( i = mbi->mods_count-1; i >= 1; i-- )
+    for ( i = bi->nr_modules-1; i >= 1; i-- )
     {
-        if ( !test_bit(i, module_map) )
+        if ( bi->mods[i].type != BOOTMOD_UNKNOWN )
             continue;
 
-        _policy_start = bootstrap_map(mod + i);
-        _policy_len   = mod[i].mod_end;
+        _policy_start = bootstrap_map_bm(&bi->mods[i]);
+        _policy_len   = bi->mods[i].size;
 
         if ( (xsm_magic_t)(*_policy_start) == XSM_MAGIC )
         {
@@ -61,11 +61,12 @@ int __init xsm_multiboot_policy_init(
                    _policy_len,_policy_start);
 
             __clear_bit(i, module_map);
+            bi->mods[i].type = BOOTMOD_XSM_POLICY;
             break;
 
         }
 
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
     }
 
     return rc;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:55:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:55:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811350.1223967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZE6-0001v2-MB; Sun, 06 Oct 2024 21:55:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811350.1223967; Sun, 06 Oct 2024 21: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 1sxZE6-0001uv-JQ; Sun, 06 Oct 2024 21:55:42 +0000
Received: by outflank-mailman (input) for mailman id 811350;
 Sun, 06 Oct 2024 21:55: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZE4-0001uL-Uc
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:40 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b8661ecd-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:55:38 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251453021201.06087713384034;
 Sun, 6 Oct 2024 14:50:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b8661ecd-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251454; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=dOZopKojpuUEaMeIzR4cTDvLB32F4XuRU38OeKgMrGsk0EP3vccZK5qQVMoBnf2ReIHrI+Nv5QACJIoQsIomdVRObVZeGEWwkr+1CZG5+pYi1dBSm8WqLCzLqNz8cpfyVcJOJEA18a4xRj4nmSkwrXsl68cH+sFd5j8FV+EN910=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251454; h=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=7Q7gPOcTOOjpreqScRGkoQBD1OTSB+7KpnKBZPYI7Vk=; 
	b=MynRpxQF4nFVFgXCYoNdqz5jUW1TPLk1/qRCAoHrylXqVur0YP+igkswiBl1nzrFtaZvlZ/uVkZtzdo0d3VrRgcJvbq2Qq5fOqkgQI9uMh3/anlYuQkxCcKSqD1mfefIcdmA0htD23K1vi6kB6YA5L1E8LB9PfgpD8dzG3JUYFA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251454;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=7Q7gPOcTOOjpreqScRGkoQBD1OTSB+7KpnKBZPYI7Vk=;
	b=NGrYi0QQ/eIh0p1DkUfWvt/gg7u6JcMxuV8C1MdQDhWnvVc6fS+arIVZ/zrwJCN+
	CwtT8HnIIDP7Bpf061wiRdGCCXOVSpDGUtWrjuqglxLPfAzZ8QkBb0SNEb3fECLLeqG
	sGPPbsfr4EbW5wBaX7bA242Wpa9h4ZpEjYFszMXg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 42/44] x86/boot: convert construct_dom0 to struct boot_domain
Date: Sun,  6 Oct 2024 17:49:53 -0400
Message-Id: <20241006214956.24339-43-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

A struct boot_domain now encapsulates the domain reference, kernel, ramdisk,
and command line for the domain being constructed. As a result of this
encapsulation, construct_dom0 can now take a single struct boot_domain instead
of these four parameters.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/dom0_build.c        | 19 +++++++++----------
 xen/arch/x86/include/asm/setup.h |  4 +---
 xen/arch/x86/setup.c             |  2 +-
 3 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 71b2e3afc1a1..e552f2e9abef 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -597,22 +597,21 @@ int __init dom0_setup_permissions(struct domain *d)
     return rc;
 }
 
-int __init construct_dom0(struct domain *d, const struct boot_module *image,
-                          struct boot_module *initrd, const char *cmdline)
+int __init construct_dom0(struct boot_domain *bd)
 {
     int rc;
 
     /* Sanity! */
-    BUG_ON(!pv_shim && d->domain_id != 0);
-    BUG_ON(d->vcpu[0] == NULL);
-    BUG_ON(d->vcpu[0]->is_initialised);
+    BUG_ON(!pv_shim && bd->d->domain_id != 0);
+    BUG_ON(bd->d->vcpu[0] == NULL);
+    BUG_ON(bd->d->vcpu[0]->is_initialised);
 
     process_pending_softirqs();
 
-    if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image, initrd, cmdline);
-    else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, initrd, cmdline);
+    if ( is_hvm_domain(bd->d) )
+        rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
+    else if ( is_pv_domain(bd->d) )
+        rc = dom0_construct_pv(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
@@ -620,7 +619,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
         return rc;
 
     /* Sanity! */
-    BUG_ON(!d->vcpu[0]->is_initialised);
+    BUG_ON(!bd->d->vcpu[0]->is_initialised);
 
     return 0;
 }
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 04bf0e62a9d7..6fdb392432ad 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -26,9 +26,7 @@ void subarch_init_memory(void);
 
 void init_IRQ(void);
 
-int construct_dom0(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline);
+int construct_dom0(struct boot_domain *d);
 void setup_io_bitmap(struct domain *d);
 
 extern struct boot_info xen_boot_info;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e6a231bd2d42..6ea825b64541 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1013,7 +1013,7 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         }
     }
 
-    if ( construct_dom0(bd->d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
+    if ( construct_dom0(bd) != 0 )
         panic("Could not construct domain 0\n");
 
     return bd->d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:55:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:55:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811351.1223976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEG-0002Fj-0f; Sun, 06 Oct 2024 21:55:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811351.1223976; Sun, 06 Oct 2024 21: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 1sxZEF-0002Fa-UE; Sun, 06 Oct 2024 21:55:51 +0000
Received: by outflank-mailman (input) for mailman id 811351;
 Sun, 06 Oct 2024 21:55: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZED-0001uL-T4
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:49 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bdd229f3-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:55:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251454189590.8322273235076;
 Sun, 6 Oct 2024 14:50:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bdd229f3-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251456; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=iwd0CdCex8OMj6fuI4MpWjGosCNOred3h3IdfvLsLK/ip7dh9IQTuYBhR8Pz1dxOkrgIYrrRFfJvLszaOvtOPiz3siqHK9Ho2G/tShcC5WsDYo4y+mV9wvxzeKONdKj+5xquRQjglft5rqHkAmKtLOZGBsKZoK0OSHO2ne/+Wc4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251456; h=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=7/WzvHNkS1n2F3LfpTPfjCeWeMxPp7gP5SpizVRz19A=; 
	b=jITOlgra8dGn0VUihCRHh/gDs4NPoDFNbecK1fztPQQesso6+3Uf2wpXhZ+IRHCAyrGGJbTm0z4+9Gb9YDNk72bCkCdFCF/1eLkKpubXHkruxTbSRR6W87o3lottHxuZjUdmCFwjSCAN6KXJOTqkTJ30C5+T5ABVSLajDdhTVf0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251456;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=7/WzvHNkS1n2F3LfpTPfjCeWeMxPp7gP5SpizVRz19A=;
	b=ecaPOL/RvfVza2iBUz1GnLixrF33xu+KJS/H0aQCSSmr3iImOZGaKAd/AJNITxTW
	+/JQb70qLTL20LYefiGooT3WdtX10i9Id1Wgxw/kzUqk+fZYHzTGuQs3SwnPZdAMT8m
	HrvhJRYyNejxhAPGUbUKZWKvgUvjoSjBoHex1+zc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 43/44] x86/boot: convert dom0_construct_pv to struct boot_domain
Date: Sun,  6 Oct 2024 17:49:54 -0400
Message-Id: <20241006214956.24339-44-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With construct_dom0 consuming struct boot_domain, continue passing the
structure down to dom0_construct_pv.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/dom0_build.c             |  2 +-
 xen/arch/x86/include/asm/dom0_build.h |  5 ++--
 xen/arch/x86/pv/dom0_build.c          | 43 ++++++++++++---------------
 3 files changed, 22 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index e552f2e9abef..8beb33032940 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -611,7 +611,7 @@ int __init construct_dom0(struct boot_domain *bd)
     if ( is_hvm_domain(bd->d) )
         rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else if ( is_pv_domain(bd->d) )
-        rc = dom0_construct_pv(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
+        rc = dom0_construct_pv(bd);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 8f7b37f3d308..60e9cb21f14d 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -4,6 +4,7 @@
 #include <xen/libelf.h>
 #include <xen/sched.h>
 
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 
 extern unsigned int dom0_memflags;
@@ -13,9 +14,7 @@ unsigned long dom0_compute_nr_pages(struct domain *d,
                                     unsigned long initrd_len);
 int dom0_setup_permissions(struct domain *d);
 
-int dom0_construct_pv(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline);
+int dom0_construct_pv(struct boot_domain *bd);
 
 int dom0_construct_pvh(
     struct domain *d, const struct boot_module *image,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 16b8c1e40998..34974aa7cd56 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -354,10 +354,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
     return page;
 }
 
-static int __init dom0_construct(struct domain *d,
-                                 const struct boot_module *image,
-                                 struct boot_module *initrd,
-                                 const char *cmdline)
+static int __init dom0_construct(struct boot_domain *bd)
 {
     int i, rc, order, machine;
     bool compatible, compat;
@@ -373,11 +370,12 @@ static int __init dom0_construct(struct domain *d,
     struct page_info *page = NULL;
     unsigned int flush_flags = 0;
     start_info_t *si;
-    struct vcpu *v = d->vcpu[0];
-    void *image_base = bootstrap_map_bm(image);
-    unsigned long image_len = image->size;
-    void *image_start = image_base + image->headroom;
-    unsigned long initrd_len = initrd ? initrd->size : 0;
+    struct domain *d = bd->d;
+    struct vcpu *v = bd->d->vcpu[0];
+    void *image_base = bootstrap_map_bm(bd->kernel);
+    unsigned long image_len = bd->kernel->size;
+    void *image_start = image_base + bd->kernel->headroom;
+    unsigned long initrd_len = bd->ramdisk ? bd->ramdisk->size : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
@@ -613,7 +611,7 @@ static int __init dom0_construct(struct domain *d,
         initrd_pfn = vinitrd_start ?
                      (vinitrd_start - v_start) >> PAGE_SHIFT :
                      domain_tot_pages(d);
-        initrd_mfn = maddr_to_mfn(initrd->start);
+        initrd_mfn = maddr_to_mfn(bd->ramdisk->start);
         mfn = mfn_x(initrd_mfn);
         count = PFN_UP(initrd_len);
         if ( d->arch.physaddr_bitsize &&
@@ -629,13 +627,13 @@ static int __init dom0_construct(struct domain *d,
                     free_domheap_pages(page, order);
                     page += 1UL << order;
                 }
-            memcpy(page_to_virt(page), maddr_to_virt(initrd->start),
+            memcpy(page_to_virt(page), maddr_to_virt(bd->ramdisk->start),
                    initrd_len);
-            mpt_alloc = initrd->start;
+            mpt_alloc = bd->ramdisk->start;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
             initrd_mfn = page_to_mfn(page);
-            initrd->start = mfn_to_maddr(initrd_mfn);
+            bd->ramdisk->start = mfn_to_maddr(initrd_mfn);
         }
         else
         {
@@ -643,7 +641,7 @@ static int __init dom0_construct(struct domain *d,
                 if ( assign_pages(mfn_to_page(_mfn(mfn++)), 1, d, 0) )
                     BUG();
         }
-        initrd->size = 0;
+        bd->ramdisk->size = 0;
 
         iommu_memory_setup(d, "initrd", mfn_to_page(initrd_mfn),
                            PFN_UP(initrd_len), &flush_flags);
@@ -655,9 +653,9 @@ static int __init dom0_construct(struct domain *d,
     if ( domain_tot_pages(d) < nr_pages )
         printk(" (%lu pages to be allocated)",
                nr_pages - domain_tot_pages(d));
-    if ( initrd )
+    if ( bd->ramdisk )
     {
-        mpt_alloc = initrd->start;
+        mpt_alloc = bd->ramdisk->start;
         printk("\n Init. ramdisk: %"PRIpaddr"->%"PRIpaddr,
                mpt_alloc, mpt_alloc + initrd_len);
     }
@@ -885,7 +883,7 @@ static int __init dom0_construct(struct domain *d,
         if ( pfn >= initrd_pfn )
         {
             if ( pfn < initrd_pfn + PFN_UP(initrd_len) )
-                mfn = paddr_to_pfn(initrd->start) + (pfn - initrd_pfn);
+                mfn = paddr_to_pfn(bd->ramdisk->start) + (pfn - initrd_pfn);
             else
                 mfn -= PFN_UP(initrd_len);
         }
@@ -955,8 +953,8 @@ static int __init dom0_construct(struct domain *d,
     }
 
     memset(si->cmd_line, 0, sizeof(si->cmd_line));
-    if ( cmdline != NULL )
-        strlcpy((char *)si->cmd_line, cmdline, sizeof(si->cmd_line));
+    if ( bd->cmdline[0] != '\0' )
+        strlcpy((char *)si->cmd_line, bd->cmdline, sizeof(si->cmd_line));
 
 #ifdef CONFIG_VIDEO
     if ( !pv_shim && fill_console_start_info((void *)(si + 1)) )
@@ -1053,10 +1051,7 @@ out:
     return rc;
 }
 
-int __init dom0_construct_pv(struct domain *d,
-                             const struct boot_module *image,
-                             struct boot_module *initrd,
-                             const char *cmdline)
+int __init dom0_construct_pv(struct boot_domain *bd)
 {
     int rc;
 
@@ -1073,7 +1068,7 @@ int __init dom0_construct_pv(struct domain *d,
         write_cr4(read_cr4() & ~X86_CR4_SMAP);
     }
 
-    rc = dom0_construct(d, image, initrd, cmdline);
+    rc = dom0_construct(bd);
 
     if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:55:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:55:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811352.1223987 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEN-0002d2-89; Sun, 06 Oct 2024 21:55:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811352.1223987; Sun, 06 Oct 2024 21: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 1sxZEN-0002cr-5L; Sun, 06 Oct 2024 21:55:59 +0000
Received: by outflank-mailman (input) for mailman id 811352;
 Sun, 06 Oct 2024 21:55: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZEM-0001uL-Ax
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:58 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c31471e7-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:55:56 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251455348935.8420153270763;
 Sun, 6 Oct 2024 14:50:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c31471e7-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251457; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Ea3qNjfJ6VJKlg3Ct6BMonRnbgQZ2gCmLC2W4BCbI6xD3EnXqMufu7dotc5sgpf7FfsWbmSWeF6ehwnrkuxmZU/kZDQjd4lwcDNTHCS6oDwfWPOmI1fGxrupgyj+IdVgEQfLT1/POAT8lBkxrPIDPCi5pR+nGs9AFZnIIDZrh3A=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251457; h=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=k02giGfjUf1KH01cwomZDl95HUxwWx+LCdIDh2PrA48=; 
	b=EUgPSyAMFgpRqKLFztzW6V3BrQAhYsHLVpVyMk+/dqWkNE99rYsYMPbAHinD7/kvKGtu9eiBqHkZmRTszRCMOysf4t4t1eHs/+GAHmEd9qfFcGDtRoDFd+DNBn7qEuMzjrGV/JBk57ZFvwnugo/GK0XoS1UiBWgegTljmw+/aIs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251457;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=k02giGfjUf1KH01cwomZDl95HUxwWx+LCdIDh2PrA48=;
	b=inA3bTYPVuAvnEBdHUJyGaREVDHlGTWrC+XAd1FTV1aMhEFOK4hQIC1Nqy6kt5sE
	Wu9slOkOyTHGzBLWgfHzQWUGp4yHdRsUil7P37mXHYwOAEfF++8Uur6BxUmiDh38Per
	WVIEP1WgwdMExj4xnfGOj6kgLLfVZBdOrFRkDZ3g=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 44/44] x86/boot: convert dom0_construct_pvh to struct boot_domain
Date: Sun,  6 Oct 2024 17:49:55 -0400
Message-Id: <20241006214956.24339-45-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With construct_dom0 consuming struct boot_domain, continue passing the
structure down to dom0_construct_pvh.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/dom0_build.c             |  2 +-
 xen/arch/x86/hvm/dom0_build.c         | 31 +++++++++++++--------------
 xen/arch/x86/include/asm/dom0_build.h |  4 +---
 3 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 8beb33032940..6a21fd46d5a3 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -609,7 +609,7 @@ int __init construct_dom0(struct boot_domain *bd)
     process_pending_softirqs();
 
     if ( is_hvm_domain(bd->d) )
-        rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
+        rc = dom0_construct_pvh(bd);
     else if ( is_pv_domain(bd->d) )
         rc = dom0_construct_pv(bd);
     else
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index a3fd5e762dc4..755e257cdf30 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -1299,25 +1299,23 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain *d)
     }
 }
 
-int __init dom0_construct_pvh(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline)
+int __init dom0_construct_pvh(const struct boot_domain *bd)
 {
     paddr_t entry, start_info;
     int rc;
 
-    printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
+    printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", bd->domid);
 
-    if ( is_hardware_domain(d) )
+    if ( is_hardware_domain(bd->d) )
     {
         /*
          * Setup permissions early so that calls to add MMIO regions to the
          * p2m as part of vPCI setup don't fail due to permission checks.
          */
-        rc = dom0_setup_permissions(d);
+        rc = dom0_setup_permissions(bd->d);
         if ( rc )
         {
-            printk("%pd unable to setup permissions: %d\n", d, rc);
+            printk("%pd unable to setup permissions: %d\n", bd->d, rc);
             return rc;
         }
     }
@@ -1327,25 +1325,26 @@ int __init dom0_construct_pvh(
      * initialization so the iommu code can fetch the MMCFG regions used by the
      * domain.
      */
-    pvh_setup_mmcfg(d);
+    pvh_setup_mmcfg(bd->d);
 
     /*
      * Craft dom0 physical memory map and set the paging allocation. This must
      * be done before the iommu initializion, since iommu initialization code
      * will likely add mappings required by devices to the p2m (ie: RMRRs).
      */
-    pvh_init_p2m(d);
+    pvh_init_p2m(bd->d);
 
-    iommu_hwdom_init(d);
+    iommu_hwdom_init(bd->d);
 
-    rc = pvh_populate_p2m(d);
+    rc = pvh_populate_p2m(bd->d);
     if ( rc )
     {
         printk("Failed to setup Dom0 physical memory map\n");
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image, initrd, bootstrap_map_bm(image), cmdline,
+    rc = pvh_load_kernel(bd->d, bd->kernel, bd->ramdisk,
+                         bootstrap_map_bm(bd->kernel), bd->cmdline,
                          &entry, &start_info);
     if ( rc )
     {
@@ -1353,14 +1352,14 @@ int __init dom0_construct_pvh(
         return rc;
     }
 
-    rc = pvh_setup_cpus(d, entry, start_info);
+    rc = pvh_setup_cpus(bd->d, entry, start_info);
     if ( rc )
     {
         printk("Failed to setup Dom0 CPUs: %d\n", rc);
         return rc;
     }
 
-    rc = pvh_setup_acpi(d, start_info);
+    rc = pvh_setup_acpi(bd->d, start_info);
     if ( rc )
     {
         printk("Failed to setup Dom0 ACPI tables: %d\n", rc);
@@ -1369,8 +1368,8 @@ int __init dom0_construct_pvh(
 
     if ( opt_dom0_verbose )
     {
-        printk("Dom%u memory map:\n", d->domain_id);
-        print_e820_memory_map(d->arch.e820, d->arch.nr_e820);
+        printk("Dom%u memory map:\n", bd->domid);
+        print_e820_memory_map(bd->d->arch.e820, bd->d->arch.nr_e820);
     }
 
     return 0;
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 60e9cb21f14d..adbe90bfd034 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -16,9 +16,7 @@ int dom0_setup_permissions(struct domain *d);
 
 int dom0_construct_pv(struct boot_domain *bd);
 
-int dom0_construct_pvh(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline);
+int dom0_construct_pvh(const struct boot_domain *bd);
 
 unsigned long dom0_paging_pages(const struct domain *d,
                                 unsigned long nr_pages);
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811362.1223997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEp-0003VY-HE; Sun, 06 Oct 2024 21:56:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811362.1223997; Sun, 06 Oct 2024 21:56: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 1sxZEp-0003VP-DI; Sun, 06 Oct 2024 21:56:27 +0000
Received: by outflank-mailman (input) for mailman id 811362;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZDn-0007Zk-9J
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:23 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ae7c2e88-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:55:22 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251450737717.4255628801843;
 Sun, 6 Oct 2024 14:50:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae7c2e88-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251452; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=NLJZZt8iLCBbP+PTbQCQWc7wQ1SEbPaQRy9xJqJxU31rpAs2CyCTyzQJe3dBDpRUP1xPdxb+fCnkLN2OhBSLYhpKoOaHS9PYKC6YWF8S0buMfR79M2ymTBU1wErQaoVoFnzFPY9CWAi7I/l1zpKMaUKlrtqACyuQ/ygUrT2FtF4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251452; h=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=2zXTHeuS1u+eZ5P26JBIt9WYBNMZWbOEM+pEnQhRDE0=; 
	b=JWxo7XQLpm6Od5El5kRl5Ag7Tj5WNh2S7jnkvBDZDIS6RUWGWWGB803inS1wLmvbUccbAaMRmzeSdEx+bzMmsNWvu6/zWCHoA+ZfWp7gD8w/XSIToFrYST9x9ARHjvHriJcfJ1oxrEF9GmOnhDQcyCWhrJcNNVWDssLo1EPvnXg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251452;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=2zXTHeuS1u+eZ5P26JBIt9WYBNMZWbOEM+pEnQhRDE0=;
	b=a/Ge/JGD8wIdnD4U3qE61PdlSvjY1BVgo906gaI2/aS05HQQIuANSi8XEa1Bm9mP
	0FhYjseq9Jk9wk7TyQPKOi9oghNSB8eowPvlVPB9envySOGIWcqaXtZ4D8O1Y7JlugT
	kq+dxCpO9MVuu9SgIeiEKLAQEpGbOsPMI1X7Jsx4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 40/44] x86/boot: add cmdline to struct boot_domain
Date: Sun,  6 Oct 2024 17:49:51 -0400
Message-Id: <20241006214956.24339-41-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a container for the "cooked" command line for a domain.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h |  4 ++++
 xen/arch/x86/setup.c                  | 18 ++++++++----------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index d6264d554dba..00f7d9267965 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -8,9 +8,13 @@
 #ifndef __XEN_X86_BOOTDOMAIN_H__
 #define __XEN_X86_BOOTDOMAIN_H__
 
+#include <public/xen.h>
+
 struct boot_module;
 
 struct boot_domain {
+    char cmdline[MAX_GUEST_CMDLINE];
+
     domid_t domid;
 
     struct boot_module *kernel;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index a1204b2bd594..f250638edf09 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -947,8 +947,6 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
 
 static struct domain *__init create_dom0(struct boot_info *bi)
 {
-    static char __initdata cmdline[MAX_GUEST_CMDLINE];
-
     struct xen_domctl_createdomain dom0_cfg = {
         .flags = IS_ENABLED(CONFIG_TBOOT) ? XEN_DOMCTL_CDF_s3_integrity : 0,
         .max_evtchn_port = -1,
@@ -991,17 +989,17 @@ static struct domain *__init create_dom0(struct boot_info *bi)
     if ( bd->kernel->cmdline || bi->kextra )
     {
         if ( bd->kernel->cmdline )
-            safe_strcpy(cmdline, cmdline_cook(
+            safe_strcpy(bd->cmdline, cmdline_cook(
                         __va((unsigned long)bd->kernel->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
             /* kextra always includes exactly one leading space. */
-            safe_strcat(cmdline, bi->kextra);
+            safe_strcat(bd->cmdline, bi->kextra);
 
         /* Append any extra parameters. */
-        if ( skip_ioapic_setup && !strstr(cmdline, "noapic") )
-            safe_strcat(cmdline, " noapic");
+        if ( skip_ioapic_setup && !strstr(bd->cmdline, "noapic") )
+            safe_strcat(bd->cmdline, " noapic");
 
         if ( (strlen(acpi_param) == 0) && acpi_disabled )
         {
@@ -1009,14 +1007,14 @@ static struct domain *__init create_dom0(struct boot_info *bi)
             safe_strcpy(acpi_param, "off");
         }
 
-        if ( (strlen(acpi_param) != 0) && !strstr(cmdline, "acpi=") )
+        if ( (strlen(acpi_param) != 0) && !strstr(bd->cmdline, "acpi=") )
         {
-            safe_strcat(cmdline, " acpi=");
-            safe_strcat(cmdline, acpi_param);
+            safe_strcat(bd->cmdline, " acpi=");
+            safe_strcat(bd->cmdline, acpi_param);
         }
     }
 
-    if ( construct_dom0(d, bd->kernel, bd->ramdisk, cmdline) != 0 )
+    if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811363.1224003 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEp-0003Yp-Sf; Sun, 06 Oct 2024 21:56:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811363.1224003; Sun, 06 Oct 2024 21:56: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 1sxZEp-0003YT-Lw; Sun, 06 Oct 2024 21:56:27 +0000
Received: by outflank-mailman (input) for mailman id 811363;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZCh-0007Zk-W6
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:15 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 86674351-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:54:15 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172825144047617.705943069105388;
 Sun, 6 Oct 2024 14:50:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86674351-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251442; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=e0rup5qfj8UW7i/iFGXqfPAnnPEy3E+3TfdmtqTQrdbEm5IkkHATQLHqFEN7CM8dPPO0zF6whz0yK3Wa+hz8A+wy6AvAZieBtXpz9ow4oK+ayqZaQPX6+58WG7K7RWfyNszYSTFOcF6ueT/lwWvwQBIxgPmELeN813NPLSzDpUs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251442; h=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=BmGSuaBaKd3qtvehAz6QI6DFDtdVzluTKF7yLA1UKrY=; 
	b=kkNQdQizSQsesked0oWY82g0FUM7tIdvouhlyEJ5KqKd7zarFB4eydo9erBXe0V8+GdZdNB38GqoHNolfptRPiogD6BkycLnAT68vjOGWBW0SXyyrPwa95vVLKBHi/rc/9UPkkOSxKyOjajuFPxknAk+MbH5qv6GrDqN3Y+fCiY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251442;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=BmGSuaBaKd3qtvehAz6QI6DFDtdVzluTKF7yLA1UKrY=;
	b=gVvarlnL2il/njaqrQD9NyndLOgMrI4ZUEKa6vlMFO/QAh/PrOe7tnQjame1K+Ju
	IAEWZxL1jlYKYxWaJ0M3/cRFKT7lvstpNAp/nqMrSEQPqZVmoz6RMiuqwFw6QRfviIq
	hklX0CL/hOXcvn+J9vye2DHC9zhTCEp7tVNJSltg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 31/44] x86/boot: convert dom0_construct_pvh to struct boot_module
Date: Sun,  6 Oct 2024 17:49:42 -0400
Message-Id: <20241006214956.24339-32-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes both the kernel and ramdisk parameters over to struct
boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/dom0_build.c             |  3 +--
 xen/arch/x86/hvm/dom0_build.c         | 11 +++++------
 xen/arch/x86/include/asm/dom0_build.h |  7 +++----
 3 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 1d05ee53a6d8..71b2e3afc1a1 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -610,8 +610,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
-                                cmdline);
+        rc = dom0_construct_pvh(d, image, initrd, cmdline);
     else if ( is_pv_domain(d) )
         rc = dom0_construct_pv(d, image, initrd, cmdline);
     else
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 3dd913bdb029..beaa1d492077 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -1300,10 +1300,9 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain *d)
     }
 }
 
-int __init dom0_construct_pvh(struct domain *d, const module_t *image,
-                              unsigned long image_headroom,
-                              module_t *initrd,
-                              const char *cmdline)
+int __init dom0_construct_pvh(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, const char *cmdline)
 {
     paddr_t entry, start_info;
     int rc;
@@ -1347,8 +1346,8 @@ int __init dom0_construct_pvh(struct domain *d, const module_t *image,
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image, image_headroom, initrd, bootstrap_map(image),
-                         cmdline, &entry, &start_info);
+    rc = pvh_load_kernel(d, image->mod, image->headroom, initrd->mod,
+                         bootstrap_map_bm(image), cmdline, &entry, &start_info);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 2ce5ea3851af..8f7b37f3d308 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -17,10 +17,9 @@ int dom0_construct_pv(
     struct domain *d, const struct boot_module *image,
     struct boot_module *initrd, const char *cmdline);
 
-int dom0_construct_pvh(struct domain *d, const module_t *image,
-                       unsigned long image_headroom,
-                       module_t *initrd,
-                       const char *cmdline);
+int dom0_construct_pvh(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, const char *cmdline);
 
 unsigned long dom0_paging_pages(const struct domain *d,
                                 unsigned long nr_pages);
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811365.1224007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEq-0003ch-2k; Sun, 06 Oct 2024 21:56:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811365.1224007; Sun, 06 Oct 2024 21:56: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 1sxZEp-0003al-Tf; Sun, 06 Oct 2024 21:56:27 +0000
Received: by outflank-mailman (input) for mailman id 811365;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZBa-00051E-1o
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:53:06 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5c4c2da6-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:53:04 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251430044946.1779583169215;
 Sun, 6 Oct 2024 14:50:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5c4c2da6-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251432; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=fi3792AYUyNhvg31Zl86HKd8400o5iQihGwm9Cawmxrkq1DIcmW8ZuLXYrAVZSeRn1jz5fPpWoQ45ue9lgEn2wg3EvixOV2pJqHOU++dozBp5LEgsbSsZ/UqdmWTq+lq3J6jmNH7SzUF0hHaNg/KmDHEqzGzQhikyXhs/BWkykY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251432; h=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=bxPxcsxpPK9+pHqiZxrW+JILNThIMZMh2pWKm97OWhk=; 
	b=hcCFcLK+IScnUaCr0rxu4ESp73E3Qh6EJW8tlC/Dd4ywrcVu4evVPAMItudQeVpb84GfE95DqWZSk2/bxm/oa9AwzqK185DqSX9MFV8+qa9DhGyyv5+ZbHmKYabFZ3QjL5gY1Yi2cst2VB3TV/w5TlXD9qE1657Ih0lEnlHIlsE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251432;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=bxPxcsxpPK9+pHqiZxrW+JILNThIMZMh2pWKm97OWhk=;
	b=M00QmXCBVaGP+mHgTK8ZT73wNfUDOvY1+XY1G5HHQKI24oyqb5aJhsEBvy7rVHQW
	eMUb6TFl4WReUFm/wTIYhwTj626FOlXe6duBu3IDX5horwjcIWTK577wxLKEl6piORp
	Gl7VJCBlkqpo9DhMPcJuCrMPL9nR6EXdLb+2e72I=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 22/44] x86/boot: remove module_map usage from microcode loading
Date: Sun,  6 Oct 2024 17:49:33 -0400
Message-Id: <20241006214956.24339-23-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With all consumers of module_map converted, remove usage of it
by the microcode loading logic.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c    | 22 +++++++++-------------
 xen/arch/x86/include/asm/microcode.h |  6 ++----
 xen/arch/x86/setup.c                 |  4 ++--
 3 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 5b42aad2fdd0..f7ce2247a33e 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -152,8 +152,7 @@ static int __init cf_check parse_ucode(const char *s)
 }
 custom_param("ucode", parse_ucode);
 
-static void __init microcode_scan_module(
-    unsigned long *module_map, const struct boot_info *bi)
+static void __init microcode_scan_module(const struct boot_info *bi)
 {
     uint64_t *_blob_start;
     unsigned long _blob_size;
@@ -178,7 +177,7 @@ static void __init microcode_scan_module(
      */
     for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
     {
-        if ( !test_bit(i, module_map) )
+        if ( bi->mods[i].type != BOOTMOD_UNKNOWN )
             continue;
 
         _blob_start = bootstrap_map_bm(&bi->mods[i]);
@@ -202,19 +201,18 @@ static void __init microcode_scan_module(
     }
 }
 
-static void __init microcode_grab_module(
-    unsigned long *module_map, struct boot_info *bi)
+static void __init microcode_grab_module(struct boot_info *bi)
 {
     if ( ucode_mod_idx < 0 )
         ucode_mod_idx += bi->nr_modules;
     if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
-         !__test_and_clear_bit(ucode_mod_idx, module_map) )
+         (bi->mods[ucode_mod_idx].type != BOOTMOD_UNKNOWN) )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
     ucode_mod = &bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, bi);
+        microcode_scan_module(bi);
 }
 
 static struct microcode_ops __ro_after_init ucode_ops;
@@ -818,8 +816,7 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(
-    unsigned long *module_map, const struct boot_info *bi)
+int __init microcode_init_cache(const struct boot_info *bi)
 {
     int rc = 0;
 
@@ -828,7 +825,7 @@ int __init microcode_init_cache(
 
     /* Scan if microcode was not detected earlier */
     if ( !ucode_mod )
-        microcode_scan_module(module_map, bi);
+        microcode_scan_module(bi);
 
     if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
         rc = early_update_cache(bootstrap_map_bm(ucode_mod),
@@ -874,8 +871,7 @@ static int __init early_microcode_update_cpu(void)
     return microcode_update_cpu(patch, 0);
 }
 
-int __init early_microcode_init(unsigned long *module_map,
-                                struct boot_info *bi)
+int __init early_microcode_init(struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
     int rc = 0;
@@ -918,7 +914,7 @@ int __init early_microcode_init(unsigned long *module_map,
         return -ENODEV;
     }
 
-    microcode_grab_module(module_map, bi);
+    microcode_grab_module(bi);
 
     if ( ucode_mod || ucode_blob.size )
         rc = early_microcode_update_cpu();
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 495c8f7a7cc5..84e0eb487244 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -26,10 +26,8 @@ DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 void microcode_set_module(unsigned int idx);
 int microcode_update(
     XEN_GUEST_HANDLE(const_void) buf, unsigned long len, unsigned int flags);
-int early_microcode_init(
-    unsigned long *module_map, struct boot_info *bi);
-int microcode_init_cache(
-    unsigned long *module_map, const struct boot_info *bi);
+int early_microcode_init(struct boot_info *bi);
+int microcode_init_cache(const struct boot_info *bi);
 int microcode_update_one(void);
 
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e42afb0c30cb..90acd4180441 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1382,7 +1382,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * TODO: load ucode earlier once multiboot modules become accessible
      * at an earlier stage.
      */
-    early_microcode_init(module_map, bi);
+    early_microcode_init(bi);
 
     if ( xen_phys_start )
     {
@@ -1939,7 +1939,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     timer_init();
 
-    microcode_init_cache(module_map, bi); /* Needs xmalloc() */
+    microcode_init_cache(bi); /* Needs xmalloc() */
 
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811366.1224014 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEq-0003l6-JR; Sun, 06 Oct 2024 21:56:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811366.1224014; Sun, 06 Oct 2024 21:56: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 1sxZEq-0003jr-AR; Sun, 06 Oct 2024 21:56:28 +0000
Received: by outflank-mailman (input) for mailman id 811366;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZA0-00051E-4H
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:51:28 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21f21c74-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:51:26 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251414777363.47999883098566;
 Sun, 6 Oct 2024 14:50:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21f21c74-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251416; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=QtOx3JlBaNesHvtITNP5YdRA+QcUMh2LxsUf3cj2vO/0om4McBZnVdDzDJo7ix84ZnOVa8gtjpIUqNUJRwgOjndW3ABNf1gfu049YbPDaValK/gARz2aqLkp4Mf4p5mQx6Ggkw1hOh2bDiuOFhCwjy5RFnllZbaGSYfBYRZavKo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251416; h=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=Y+YFqvG91BoEhUMPMtE6Kyra9a+npi8misIshir3lQ0=; 
	b=KP/ngO2WXnRS7rSVzcQGsIZkJlVfYbWj11XuBL3az1C3GbomlReQV5LdQaMo0q6l+DAIym2kkOu3dC9nlkvqxJaOlIW2tBu1kCxZDk9S6i0HqcyjSdy2LQHe4QRXBqviaoHW8GXKAz6Ty3OGfAED/JqsGPQWcxrMzFaecb5lI94=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251416;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Y+YFqvG91BoEhUMPMtE6Kyra9a+npi8misIshir3lQ0=;
	b=ZQ8AWXZXqMbNDwrC12Vd851S24nqi8Cb1cvihhO9cxwofGqvpjLZjf98juAkzc84
	69d4bIwTUpNyI7ksM9x1vAmTM9SAC2QrQpUCJv8zywK1MDZMWvt3R8jz+ZffnzgXyTg
	IRv4RqmSYV2pnVc6XbHWI8YA9MSOu0WAdmbO6VUQ=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 09/44] x86/boot: introduce boot module types
Date: Sun,  6 Oct 2024 17:49:20 -0400
Message-Id: <20241006214956.24339-10-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit introduces module types of xen, kernel, and ramdisk to allow boot
module detect code to tag the purpose of a boot module. This reduces the need
for hard coded order assumptions and global variables to be used by consumers
of boot modules, such as domain construction.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 9 +++++++++
 xen/arch/x86/setup.c                | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index c7e6b4ebf0da..6941a8975ea6 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -14,6 +14,14 @@
 /* Max number of boot modules a bootloader can provide in addition to Xen */
 #define MAX_NR_BOOTMODS 63
 
+/* Boot module binary type / purpose */
+enum bootmod_type {
+    BOOTMOD_UNKNOWN,
+    BOOTMOD_XEN,
+    BOOTMOD_KERNEL,
+    BOOTMOD_RAMDISK,
+};
+
 struct boot_module {
     /* Transitionary only */
     module_t *mod;
@@ -22,6 +30,7 @@ struct boot_module {
      * reserved, into which it will be decompressed.
      */
     unsigned long headroom;
+    enum bootmod_type type;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index ba4bee6b93af..69c45f115523 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -311,6 +311,10 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
     for ( i = 0; i <= bi->nr_modules; i++ )
         bi->mods[i].mod = &mods[i];
 
+    /* map the last mb module for xen entry */
+    bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
+    bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];
+
     return bi;
 }
 
@@ -1171,6 +1175,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
+    bi->mods[0].type = BOOTMOD_KERNEL;
 
     if ( pvh_boot )
     {
@@ -2058,6 +2063,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? "" : "not ");
 
     initrdidx = find_first_bit(module_map, bi->nr_modules);
+    bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
     if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811367.1224023 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEr-0003xB-6I; Sun, 06 Oct 2024 21:56:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811367.1224023; Sun, 06 Oct 2024 21:56: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 1sxZEq-0003u9-Tj; Sun, 06 Oct 2024 21:56:28 +0000
Received: by outflank-mailman (input) for mailman id 811367;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ9s-00051E-35
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:51:20 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1d3ccea8-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:51:18 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251413620237.5379180699381;
 Sun, 6 Oct 2024 14:50:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d3ccea8-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251415; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=LiTgnBWASsbRJ8trdYADGK6vgq6juSZECEm8QjL9CDCtsvxz3LF86FQ8sUdvGT3bffF6845ZEo6iQiSQF9G5g8e9a+i7jzo7aIDtWH5uZOxXfU3Pg2by6fxL7CZfnsaxyW5E5jhI74mct83KbwE0mTZINsh2FuXxfMgj/h6TtYQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251415; h=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=o7PLHsPZ6nr6p3qDw0hUE5j4XeSnSAA6iUDaBG5Wocg=; 
	b=MrrEi9TDekN30wVsKVzFUkfCSsekkzZpdQ4bQZB4WSxsTIrRqBlAcG1K+ASmSKn85Au1EE+5EyhhVyBtQIVaovvB+gdGH3emmGUrW3n9XaLzIwwIkQZgWmR/p1+qbe5Kp4NDKW2S1Oh/Oxmcp/tP0Jaeo0UO0jQDkChqGTunFzE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251415;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=o7PLHsPZ6nr6p3qDw0hUE5j4XeSnSAA6iUDaBG5Wocg=;
	b=GAcHTe3bsDi165kmB/hCP67EykYZBMdvJn5U7gNPgSZvkhsgO6U+QQ+565c6FhCv
	5O871ak0iktwez3LxxlfDP2JRd2HAyfnshVeovv8qB1NZ6wKS7DGxzHBCw/fhya1bl/
	hscw1eI5f2aYZGxPiH3cmlQvWIkeao7BN+4fC4fo=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 08/44] x86/boot: convert setup.c mod refs to early_mod
Date: Sun,  6 Oct 2024 17:49:19 -0400
Message-Id: <20241006214956.24339-9-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To allow a slow conversion of x86 over to struct boot_module, start with
replacing all references to struct mod to the early_mod element of struct
boot_module. These serves twofold, first to allow the incremental transition
from struct mod fields to struct boot_module fields. The second is to allow
the conversion of function definitions from taking struct mod parameters to
accepting struct boot_module as needed when a transitioned field will be
accessed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 61 ++++++++++++++++++++++++--------------------
 1 file changed, 34 insertions(+), 27 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index dd82ca3d43e2..ba4bee6b93af 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1341,15 +1341,15 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = mod;
+    initial_images = bi->mods[0].mod;
 
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
-        if ( mod[i].mod_start & (PAGE_SIZE - 1) )
+        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-        mod[i].mod_end -= mod[i].mod_start;
-        mod[i].mod_start >>= PAGE_SHIFT;
-        mod[i].reserved = 0;
+        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
+        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
+        bi->mods[i].mod->reserved = 0;
     }
 
     /*
@@ -1360,6 +1360,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( xen_phys_start )
     {
+        unsigned int xen = bi->nr_modules;
         relocated = true;
 
         /*
@@ -1367,8 +1368,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        mod[bi->nr_modules].mod_start = virt_to_mfn(_stext);
-        mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
+        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
+        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
     }
 
     bi->mods[0].headroom =
@@ -1462,9 +1463,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             struct boot_module *bm = &bi->mods[j];
             unsigned long size;
 
-            size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
+            size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
 
-            if ( mod[j].reserved )
+            if ( bi->mods[j].mod->reserved )
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
@@ -1476,14 +1477,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             if ( s < end &&
                  (bm->headroom ||
-                  ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
+                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
             {
                 move_memory(end - size + bm->headroom,
-                            (uint64_t)mod[j].mod_start << PAGE_SHIFT,
-                            mod[j].mod_end);
-                mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += bm->headroom;
-                mod[j].reserved = 1;
+                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
+                            bm->mod->mod_end);
+                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
+                bm->mod->mod_end += bm->headroom;
+                bm->mod->reserved = 1;
             }
         }
 
@@ -1509,13 +1510,15 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( bi->mods[0].headroom && !mod->reserved )
+    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
+        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
+                        << PAGE_SHIFT;
 
-        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(mod[i].mod_end));
+        reserve_e820_ram(&boot_e820, s,
+                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
     }
 
     if ( !xen_phys_start )
@@ -1593,8 +1596,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
                 for ( j = 0; j < bi->nr_modules; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
-                                   mod[j].mod_end;
+                    uint64_t end = pfn_to_paddr(
+                                   bi->mods[j].mod->mod_start) +
+                                   bi->mods[j].mod->mod_end;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1668,11 +1672,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        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),
-                         _mfn(mod[i].mod_start),
-                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
+        set_pdx_range(bi->mods[i].mod->mod_start,
+                      bi->mods[i].mod->mod_start +
+                      PFN_UP(bi->mods[i].mod->mod_end));
+        map_pages_to_xen(
+            (unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
+            _mfn(bi->mods[i].mod->mod_start),
+            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
     }
 
 #ifdef CONFIG_KEXEC
@@ -2061,8 +2067,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(mod, bi->mods[0].headroom,
-                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
+    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
+                       initrdidx < bi->nr_modules ?
+                            bi->mods[initrdidx].mod : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811368.1224047 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEv-0004rx-Cq; Sun, 06 Oct 2024 21:56:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811368.1224047; Sun, 06 Oct 2024 21:56: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 1sxZEv-0004ri-9C; Sun, 06 Oct 2024 21:56:33 +0000
Received: by outflank-mailman (input) for mailman id 811368;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZCD-0007Zk-7f
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:53:45 +0000
Received: from sender3-of-o57.zoho.com (sender3-of-o57.zoho.com
 [136.143.184.57]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 74144c94-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:53:44 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251435852741.2371065758415;
 Sun, 6 Oct 2024 14:50:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74144c94-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251437; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=fpE4iWnG7MRWvMIXDZu0+C/SbbBTjIpEDh1IDmCnGPkCU1sscwmqpb/64Ekm2yrqwMxSqr/360Fp0v+xyuE+/teI3DEHSCLnGmd5tQ/VbXVo+L99LaX/zot6gBuOJg4s9yIhOVeDBd3TmD05LB+Fq7+WU5Fstg+wXH2KbZoWmuw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251437; h=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=U0epSQBbEatFgMV9a6wGUqA/KCfapTC+zhJG3oyewHg=; 
	b=BEd3jpvoPde7X5zkhKaKripcFM27MfHK29nhrsTBtrPQhNAD+NQTMpoKpNgdrq8/0BDihi5WpBlPhKNmomFOtMGw+NsA3C7ruzO6/hAt1WLQL8/6i2khX0sxpxbGgmlv7gcqjHGWViNwmzIRhf44dUzq22mPM8D26EccMDVL6vk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251437;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=U0epSQBbEatFgMV9a6wGUqA/KCfapTC+zhJG3oyewHg=;
	b=Nk22mfqK65/2UbA74b+aYyxLns0LP+Keh6/mmfHzt40FKiDNJt05syTMzhtgXYZV
	gItpS95yeFBYQjLHo6PKBj42MlsLV8IupcYSGSygaq83JJ4Avhd97orqhQgbwjGpbzb
	sjV2k4LXuRkKvkk8Q60Bv+VuAaXta9oWpVfC0ZiI=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 27/44] x86/boot: relocate kextra into boot info
Date: Sun,  6 Oct 2024 17:49:38 -0400
Message-Id: <20241006214956.24339-28-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Move kextra into struct boot_info, thus no longer needed to be passed as a
parameter to create_dom0.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  1 +
 xen/arch/x86/setup.c                | 12 ++++++------
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 5cbd1cbbbccd..9ed260629012 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -49,6 +49,7 @@ struct boot_module {
 struct boot_info {
     const char *loader;
     const char *cmdline;
+    const char *kextra;
 
     paddr_t memmap_addr;
     size_t memmap_length;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 135bd6591c1c..aed0837902c4 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -946,8 +946,7 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(struct boot_info *bi,
-                                         const char *kextra)
+static struct domain *__init create_dom0(struct boot_info *bi)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
 
@@ -1001,15 +1000,15 @@ static struct domain *__init create_dom0(struct boot_info *bi,
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->mod->string || kextra )
+    if ( image->mod->string || bi->kextra )
     {
         if ( image->mod->string )
             safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
                         bi->loader));
 
-        if ( kextra )
+        if ( bi->kextra )
             /* kextra always includes exactly one leading space. */
-            safe_strcat(cmdline, kextra);
+            safe_strcat(cmdline, bi->kextra);
 
         /* Append any extra parameters. */
         if ( skip_ioapic_setup && !strstr(cmdline, "noapic") )
@@ -1103,6 +1102,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         *kextra = '\0';
         kextra += 3;
         while ( kextra[1] == ' ' ) kextra++;
+        bi->kextra = kextra;
     }
     cmdline_parse(bi->cmdline);
 
@@ -2116,7 +2116,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(bi, kextra);
+    dom0 = create_dom0(bi);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811370.1224057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZEw-0005Aj-V0; Sun, 06 Oct 2024 21:56:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811370.1224057; Sun, 06 Oct 2024 21:56: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 1sxZEw-0005AI-QM; Sun, 06 Oct 2024 21:56:34 +0000
Received: by outflank-mailman (input) for mailman id 811370;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZBo-00051E-MH
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:53:20 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 650a9e33-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:53:18 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251432400543.0775612505048;
 Sun, 6 Oct 2024 14:50:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 650a9e33-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251434; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Wo8l/iqs0v+YfsaZggX/JdItZU2EmCAUgfcamMKYsfid1EJDnECFn4sKQJAHUyxaeNoJZx77kzctPUMAiCEE3FPuZJdTVYq0mFoyNv0deqgNymhsgE2nZKxOE8hkqMDpgCj2do7bb8kxhFRMjFGTanGN0yBThnxHXBEsiXGyjeM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251434; h=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=DcuCOm6F9wLbL6EWI6TTjiee10KbQ7Dlc1P2+oEs++8=; 
	b=OEG2q/wo8v1TSZnurKIcogeSRcN0SIJHJx4/3DPCCD5dqepJNRwK+THd/e1lBr9Fjz95vclJfhzCdHw4Qi9lyPxJ0hGvQBSbX3tnTV70N8A0IR8fPs+4Rs4QzRf7RaCpu3r8JSWmnuhFMpDEru3w0YeMjId5cKDEdDw2C7rIrew=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251434;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=DcuCOm6F9wLbL6EWI6TTjiee10KbQ7Dlc1P2+oEs++8=;
	b=B0mBQ53ebkIPVGD6KF5U3rj4y012k0er12okRIsoW5dXagXZ1xAP9ZPE0hVUyqSG
	pbI6CLMhIRbcSQ8luiw7Y9dsHjrhQ4Wvhp7L7JmywDTwNcT/DU5vU4HTBzFVTwDPpu+
	iZlCeOz+MOBnbtu++fqPqfxiZwc68GtGri85uFhg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 24/44] x86/boot: remove module_map usage by ramdisk loading
Date: Sun,  6 Oct 2024 17:49:35 -0400
Message-Id: <20241006214956.24339-25-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The ramdisk loading is the last user of module_map, remove
its usage and any remaining remnants of module_map.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b0946216ea3f..0d2ee19998aa 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1037,7 +1037,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
-    unsigned long nr_pages, raw_max_page, module_map[1];
+    unsigned long nr_pages, raw_max_page;
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
@@ -1187,15 +1187,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         panic("dom0 kernel not specified. Check bootloader configuration\n");
 
     /* Check that we don't have a silly number of modules. */
-    if ( bi->nr_modules > sizeof(module_map) * 8 )
+    if ( bi->nr_modules > MAX_NR_BOOTMODS + 1 )
     {
-        bi->nr_modules = sizeof(module_map) * 8;
-        printk("Excessive boot modules - using the first %u only\n",
+        bi->nr_modules = MAX_NR_BOOTMODS + 1;
+        printk("Excessive multiboot modules - using the first %u only\n",
                bi->nr_modules);
     }
 
-    bitmap_fill(module_map, bi->nr_modules);
-    __clear_bit(0, module_map); /* Dom0 kernel is always first */
+    /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
     bi->mods[0].flags |= BOOTMOD_FLAG_X86_CONSUMED;
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811372.1224067 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZF2-0005iB-7x; Sun, 06 Oct 2024 21:56:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811372.1224067; Sun, 06 Oct 2024 21:56: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 1sxZF2-0005hs-2w; Sun, 06 Oct 2024 21:56:40 +0000
Received: by outflank-mailman (input) for mailman id 811372;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZDC-0007Zk-4F
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:46 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9866d10b-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:54:45 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251445000314.8393630433128;
 Sun, 6 Oct 2024 14:50:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9866d10b-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251446; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=dOhYo29x6tMVT8LnKdGrCGuKX9X0hPFgXgg7nC98keqFG91efzoRmoIIC8MaaBqQIY+yRX2FCN78P5iVZwKq5VaZjZvtrkfoU6SSgIdnyL7fqCf4XCxB8RrLkzMGRP6Ajb2+WZdmTTUJHX7zhj+rRhdQglQDa/Bnsg2cxbpAZs4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251446; h=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=My1BwYQikiMj2XVbz63ltqTkowzAIebw6oWPH/8M3ao=; 
	b=Umb/9jG0SJ+w4FKBK4BmVF0D0iTgCz+JYO0GbZ0FH8AE9B75HMWqlrPIGY9bTAmUxLWQYoIPjrHMhnXBvmucFYCE2NSJOmXUuyY9TgtuK4vpDlFGDudE3hhYwlPtZ7pkmF++CKD3jqXSId6RdGCtyXacJTbmbbudlTZEm8+6RyY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251446;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=My1BwYQikiMj2XVbz63ltqTkowzAIebw6oWPH/8M3ao=;
	b=PRFaYn/TOdu/iACALsvxTGZRO/zqOHcAOffHIkxdNWAsaoDAnXjeKM+h6yNEid/Y
	xU1PUPiZyeOwkf2wwK2e9BPlMKrK6gBSvlfJzSwO+IqWBWa6g/cQy1RuLS/alLK1zR1
	Gpmg9Ax1/yFjXb0LthR6e2InoYkL9+fDUOhTmf00=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 35/44] x86/boot: remove usage of mod_end by discard_initial_images
Date: Sun,  6 Oct 2024 17:49:46 -0400
Message-Id: <20241006214956.24339-36-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This eliminates usage of early_mod by discard_initial_images

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b3b6e6f38622..e9e3da3204f1 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -352,12 +352,10 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t start =
-            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
+        uint64_t start = bi->mods[i].start;
 
         init_domheap_pages(start,
-                           start +
-                           PAGE_ALIGN(bi->mods[i].mod->mod_end));
+                           start + PAGE_ALIGN(bi->mods[i].size));
     }
 
     bi->nr_modules = 0;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811373.1224073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZF2-0005mu-PV; Sun, 06 Oct 2024 21:56:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811373.1224073; Sun, 06 Oct 2024 21:56: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 1sxZF2-0005lg-F9; Sun, 06 Oct 2024 21:56:40 +0000
Received: by outflank-mailman (input) for mailman id 811373;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZDf-0007Zk-SN
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:15 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id aa2c19d8-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:55:15 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251449609589.5889422713361;
 Sun, 6 Oct 2024 14:50:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa2c19d8-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251451; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=JlJUmd0TOekQy0zfycMfgmBcPBdofA2dqliJymIVQFL4guAVAhMwdknmlbB5pQFcGubRX2o1mtocpOSuZavS7KMhdjQDcYp0T/wyR6oIUJsxC29I+gG9nDqKLRxMFE5/ihFvvOqN+8nFGxsgcEMZI6CqyV2DhoH/hV44zkHE9nw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251451; h=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=sVdP9gq2A9htJd3rJlMgvzdj4EwJQkEQZWlBQ/0O9Lc=; 
	b=Fsw7UTLm80y0oFSb8nqGBJxXqxI5UIhHEatx3rbFUx+xw0UD7UuCf0V8g8YEORL+bDEnPTfqsqMEKnCp8cBehSc49+gr2QApxMiWF8HGu+8bp5uMKzEwUDpYHVjryQW1II7ucjZOyjThWlJNQ+vXRCJHwjJEXjXbpF95+iBCfLc=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251451;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=sVdP9gq2A9htJd3rJlMgvzdj4EwJQkEQZWlBQ/0O9Lc=;
	b=g+kwgIWsDoyxniQekARXJ3vbglybUrJHSapjlxf9/RclvFxM/JnH0NAs9oGnS7Ru
	KCHC64QE3x7O1CDPrPcUvVVydjEo4WzyGwT7pxS9Y2Nmbt0yboHEIfUgakeBsA4T+9X
	8/jZhdsc64Pa8U1kHA/6gvmtxFMFx/9Vqh2092Hg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 39/44] x86/boot: introduce domid field to struct boot_domain
Date: Sun,  6 Oct 2024 17:49:50 -0400
Message-Id: <20241006214956.24339-40-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a domid field to struct boot_domain to hold the assigned domain id for the
domain. During initialization, ensure all instances of struct boot_domain have
the invalid domid to ensure that the domid must be set either by convention or
configuration.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h |  2 ++
 xen/arch/x86/setup.c                  | 12 +++++++-----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index 4285223ac5ab..d6264d554dba 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -11,6 +11,8 @@
 struct boot_module;
 
 struct boot_domain {
+    domid_t domid;
+
     struct boot_module *kernel;
     struct boot_module *ramdisk;
 };
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index ad4a1f473f6d..a1204b2bd594 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -318,6 +318,9 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
     bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
     bi->mods[bi->nr_modules].flags |= BOOTMOD_FLAG_X86_CONSUMED;
 
+    for ( i = 0; i < MAX_NR_BOOTDOMS; i++ )
+        bi->domains[i].domid = DOMID_INVALID;
+
     return bi;
 }
 
@@ -959,7 +962,6 @@ static struct domain *__init create_dom0(struct boot_info *bi)
     };
     struct boot_domain *bd = &bi->domains[0];
     struct domain *d;
-    domid_t domid;
 
     if ( opt_dom0_pvh )
     {
@@ -975,15 +977,15 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
 
     /* Create initial domain.  Not d0 for pvshim. */
-    domid = get_initial_domain_id();
-    d = domain_create(domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
+    bd->domid = get_initial_domain_id();
+    d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
     if ( IS_ERR(d) )
-        panic("Error creating d%u: %ld\n", domid, PTR_ERR(d));
+        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d));
 
     init_dom0_cpuid_policy(d);
 
     if ( alloc_dom0_vcpu0(d) == NULL )
-        panic("Error creating d%uv0\n", domid);
+        panic("Error creating d%uv0\n", bd->domid);
 
     /* Grab the DOM0 command line. */
     if ( bd->kernel->cmdline || bi->kextra )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811378.1224087 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFA-00076m-5h; Sun, 06 Oct 2024 21:56:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811378.1224087; Sun, 06 Oct 2024 21:56: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 1sxZFA-00076U-1L; Sun, 06 Oct 2024 21:56:48 +0000
Received: by outflank-mailman (input) for mailman id 811378;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZA8-00051E-6z
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:51:36 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 26c117ce-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:51:34 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172825141593795.75148855391808;
 Sun, 6 Oct 2024 14:50:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26c117ce-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251418; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=VyLnwAqb497h0jJeT27j0q1Yat7Xzb8keCeAJTth3TBPQxTDXAvYDpzDYOKZ8bQ/KoNYcMEA4RFc7E+LK2+UzqospI2GJterGyuBLiwuZd1pIAhCFqSi+ehlJ/TbQPtKvyYkun94tGktUFyR9r3S8K3M8gbGJta9wDDtu0IecPg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251418; h=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=LLrOReDmzknWCbN9N+hIkJRPFFBTEgW6Ul0tsXA+CWE=; 
	b=e0kwamlqbiuM9scBH+TRRfT+uWH6AHfbLsmJ5gSg33fgjR/wS0NoZGmFfzEGFEodFOdFcn1tL+KulhnW4pWxxMxUJEO1hiVHIfXeDCmEzJW+EJZHOELAeLnX27Kijvoge/H/2mbtyOKh5+kLjXBiDOu/aZ6VYOGLTlMhSoOkjCs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251418;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=LLrOReDmzknWCbN9N+hIkJRPFFBTEgW6Ul0tsXA+CWE=;
	b=rBN8lRutmggRr/zlKN4avoLiM5bxkeFnquIdN8NtgvLXT7jZzuDxs4yxEkHTheJU
	CjQv+n5LMJCpT07tKRIh058llxRJvEaj2BC1IwWioA9lKv9/uxDvLb6Rs5AGyX9OMi2
	YbU7/kkvVuvQK2N3zqdtbk2j4zEijEZUJYUmEYP0=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 10/44] x86/boot: introduce boot module flags
Date: Sun,  6 Oct 2024 17:49:21 -0400
Message-Id: <20241006214956.24339-11-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The existing startup code employs various ad-hoc state tracking about certain
boot module types by each area of the code. A boot module flags is added to
enable tracking these different states.  The first state to be transition by
this commit is module relocation.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 4 ++++
 xen/arch/x86/setup.c                | 8 ++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 6941a8975ea6..021ff0d93643 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -31,6 +31,10 @@ struct boot_module {
      */
     unsigned long headroom;
     enum bootmod_type type;
+
+    uint32_t flags;
+#define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
+
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 69c45f115523..161415a8e667 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1354,7 +1354,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             panic("Bootloader didn't honor module alignment request\n");
         bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
         bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
-        bi->mods[i].mod->reserved = 0;
     }
 
     /*
@@ -1470,7 +1469,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
 
-            if ( bi->mods[j].mod->reserved )
+            if ( bi->mods[j].flags & BOOTMOD_FLAG_X86_RELOCATED )
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
@@ -1489,7 +1488,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                             bm->mod->mod_end);
                 bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
                 bm->mod->mod_end += bm->headroom;
-                bm->mod->reserved = 1;
+                bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
             }
         }
 
@@ -1515,7 +1514,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
+    if ( bi->mods[0].headroom &&
+         !(bi->mods[0].flags & BOOTMOD_FLAG_X86_RELOCATED) )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811380.1224097 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFC-0007f7-FC; Sun, 06 Oct 2024 21:56:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811380.1224097; Sun, 06 Oct 2024 21:56: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 1sxZFC-0007eu-BD; Sun, 06 Oct 2024 21:56:50 +0000
Received: by outflank-mailman (input) for mailman id 811380;
 Sun, 06 Oct 2024 21: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZC5-0007Zk-Qe
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:53:37 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6f9ffeb2-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:53:36 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251434720804.0768514812222;
 Sun, 6 Oct 2024 14:50:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6f9ffeb2-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251436; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=PgH7ljePXJDX6yRCAQJ5ykvq0yKj/RcIvXU0s5wZv82YnJIe1FQ1MwopCsv5YJ9KtnxzmnGaRvVTtotAK53YNtZ868u1JqLVjue2un/lwmAqI36Me5BUY1N/d5gKcCWQ4IUpUdHSTxf+xwL6s4ip0dN2QFFx0dLyWANSeGurFjE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251436; h=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=P7Tt0KAWI4oKC0YCkQ5SKG8TalzAPVfW3Oq4Jt8xlzs=; 
	b=DwX05JsgYdMxmuRkMn6FGusCgpEr7XJsrJQrSDOd88vSqVuqA0CSEJGmsTPUQSOQRFOW5if42xiJpzPLfAiQkC7j+Y/RBBUBhhcpRlHAYzSQQjB4Q/m5GywhmitPchz4MfWaETcLCn5AfHf870aOxy1JC/t4afM9ZZ7wvQvs0SA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251436;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=P7Tt0KAWI4oKC0YCkQ5SKG8TalzAPVfW3Oq4Jt8xlzs=;
	b=LgOUUKwYM6UajOFMaKTSHOOK702H6yvJ2P0KNJNNAxD4dESa1iPC2lqJBOKm1fH0
	8v6X+7Grb7AY5/IrF5MapPTT2LWY8oYJN4sJvRmfLCJGkYFU/nzTx71x99MbJL2Mk8x
	I7pIDNZ+0edNmc3JYNK2QvoQREKq+zlX49r7bbOM=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 26/44] x86/boot: convert construct_dom0 to use struct boot_module
Date: Sun,  6 Oct 2024 17:49:37 -0400
Message-Id: <20241006214956.24339-27-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The construct_dom0 function is converted to consume struct boot_module
instances for the kernel and ramdisk. With this change, it is no longer
necessary for the internal use of struct mod by create_dom0, so they are
changed to struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/dom0_build.c        | 12 +++++++-----
 xen/arch/x86/include/asm/setup.h |  6 ++----
 xen/arch/x86/setup.c             | 20 ++++++++++----------
 3 files changed, 19 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 8d56705a0861..1eff3192f72d 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -13,6 +13,7 @@
 #include <xen/softirq.h>
 
 #include <asm/amd.h>
+#include <asm/bootinfo.h>
 #include <asm/dom0_build.h>
 #include <asm/guest.h>
 #include <asm/hpet.h>
@@ -596,9 +597,8 @@ int __init dom0_setup_permissions(struct domain *d)
     return rc;
 }
 
-int __init construct_dom0(struct domain *d, const module_t *image,
-                          unsigned long image_headroom, module_t *initrd,
-                          const char *cmdline)
+int __init construct_dom0(struct domain *d, const struct boot_module *image,
+                          struct boot_module *initrd, const char *cmdline)
 {
     int rc;
 
@@ -610,9 +610,11 @@ int __init construct_dom0(struct domain *d, const module_t *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image, image_headroom, initrd, cmdline);
+        rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
+                                cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, image_headroom, initrd, cmdline);
+        rc = dom0_construct_pv(d, image->mod, image->headroom, initrd->mod,
+                               cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index bb7e73258a21..04bf0e62a9d7 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -27,10 +27,8 @@ void subarch_init_memory(void);
 void init_IRQ(void);
 
 int construct_dom0(
-    struct domain *d,
-    const module_t *image, unsigned long image_headroom,
-    module_t *initrd,
-    const char *cmdline);
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, const char *cmdline);
 void setup_io_bitmap(struct domain *d);
 
 extern struct boot_info xen_boot_info;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index c2bcddc50990..135bd6591c1c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -946,7 +946,7 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(const struct boot_info *bi,
+static struct domain *__init create_dom0(struct boot_info *bi,
                                          const char *kextra)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
@@ -962,20 +962,19 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
-    int headroom, mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
-    module_t *image, *initrd;
+    int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
+    struct boot_module *image, *initrd;
     struct domain *d;
     domid_t domid;
 
     /* Map boot_module to mb1 module for dom0 */
-    image = bi->mods[0].mod;
-    headroom = bi->mods[0].headroom;
+    image = &bi->mods[0];
 
     /* Map boot_module to mb1 module for initrd */
     if ( mod_idx < 0 )
         initrd = NULL;
     else
-        initrd = bi->mods[mod_idx].mod;
+        initrd = &bi->mods[mod_idx];
 
     if ( opt_dom0_pvh )
     {
@@ -1002,10 +1001,11 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->string || kextra )
+    if ( image->mod->string || kextra )
     {
-        if ( image->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->string), bi->loader));
+        if ( image->mod->string )
+            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
+                        bi->loader));
 
         if ( kextra )
             /* kextra always includes exactly one leading space. */
@@ -1028,7 +1028,7 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
         }
     }
 
-    if ( construct_dom0(d, image, headroom, initrd, cmdline) != 0 )
+    if ( construct_dom0(d, image, initrd, cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811381.1224101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFC-0007il-QI; Sun, 06 Oct 2024 21:56:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811381.1224101; Sun, 06 Oct 2024 21:56: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 1sxZFC-0007hO-KR; Sun, 06 Oct 2024 21:56:50 +0000
Received: by outflank-mailman (input) for mailman id 811381;
 Sun, 06 Oct 2024 21: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZDY-0007Zk-GC
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:08 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a5a8e301-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:55:07 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251448469735.6475877847893;
 Sun, 6 Oct 2024 14:50:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5a8e301-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251450; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=gL3W7KzlRXxTJffwsk5aUT1mZJiaQOy+27svywuNui7Msx45qb1ydF/8MrWILaQK296Zzb6yZktx5uGQNQYm+WH99916dHe4ggfQxgZMQvfIVn0L9/z7oD8BzKUFWpExlc94vDm6XVNajPTpEDRvTgXxQ1HGCUvJCIIM0ID2phQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251450; h=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=srKA70GY5IBQBR1ovY/FSrdYLsXQmvS6Ni95eTseTPk=; 
	b=Wk/94XUtubHsB8+OtKx7lKH+caJptOQiZwofJuER0tR0oFHQRm+zoZE7DnTM8tOpXYf4ulSWbLqzTh1ojRVIrzCXjB5CLz+US0dYZ0+/O3G4KGzLJTaCNpSIUNzq//FLMM5JQ1btEdPUMu1j9fnYb7TVYnMsyq8bveGITenttbs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251450;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=srKA70GY5IBQBR1ovY/FSrdYLsXQmvS6Ni95eTseTPk=;
	b=jk8ebFGcT01SYbHPY7n0feqNp3UUotJB+3HK4wecuh25SdZewHgX6QRPqvIYn2EV
	aAHr4DL3Qtaa5MiwRQcxTxEGm0Q4ZDAUP1J5J62T3M9h43oLqJz+CMQm80VZsk+74sN
	0dHPICoumzrVfA/Cyt2A/PDkl2FcHg3sPqVDMbDc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 38/44] x86/boot: introduce boot domain
Date: Sun,  6 Oct 2024 17:49:49 -0400
Message-Id: <20241006214956.24339-39-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To begin moving toward allowing the hypervisor to construct more than one
domain at boot, a container is needed for a domain's build information.

Introduce a new header, <xen/asm/bootdomain.h>, that contains the initial
struct boot_domain that encapsulate the build information for a domain.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h | 28 +++++++++++++++++++++++++++
 xen/arch/x86/include/asm/bootinfo.h   |  5 +++++
 xen/arch/x86/setup.c                  | 24 ++++++++---------------
 3 files changed, 41 insertions(+), 16 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootdomain.h

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
new file mode 100644
index 000000000000..4285223ac5ab
--- /dev/null
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2024 Apertus Solutions, LLC
+ * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
+ * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
+ */
+
+#ifndef __XEN_X86_BOOTDOMAIN_H__
+#define __XEN_X86_BOOTDOMAIN_H__
+
+struct boot_module;
+
+struct boot_domain {
+    struct boot_module *kernel;
+    struct boot_module *ramdisk;
+};
+
+#endif
+
+/*
+ * 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/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 4cb722e8ba0a..7b4da6cad1ed 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -9,10 +9,14 @@
 #define __XEN_X86_BOOTINFO_H__
 
 #include <xen/types.h>
+#include <asm/bootdomain.h>
 
 /* Max number of boot modules a bootloader can provide in addition to Xen */
 #define MAX_NR_BOOTMODS 63
 
+/* Max number of boot domains that Xen can construct */
+#define MAX_NR_BOOTDOMS 1
+
 /* Boot module binary type / purpose */
 enum bootmod_type {
     BOOTMOD_UNKNOWN,
@@ -55,6 +59,7 @@ struct boot_info {
 
     unsigned int nr_modules;
     struct boot_module mods[MAX_NR_BOOTMODS + 1];
+    struct boot_domain domains[MAX_NR_BOOTDOMS];
 };
 
 static inline int __init next_boot_module_index(
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 3604c8fbe40a..ad4a1f473f6d 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -957,20 +957,10 @@ static struct domain *__init create_dom0(struct boot_info *bi)
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
-    int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
-    struct boot_module *image, *initrd;
+    struct boot_domain *bd = &bi->domains[0];
     struct domain *d;
     domid_t domid;
 
-    /* Map boot_module to mb1 module for dom0 */
-    image = &bi->mods[0];
-
-    /* Map boot_module to mb1 module for initrd */
-    if ( mod_idx < 0 )
-        initrd = NULL;
-    else
-        initrd = &bi->mods[mod_idx];
-
     if ( opt_dom0_pvh )
     {
         dom0_cfg.flags |= (XEN_DOMCTL_CDF_hvm |
@@ -996,11 +986,11 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->cmdline || bi->kextra )
+    if ( bd->kernel->cmdline || bi->kextra )
     {
-        if ( image->cmdline )
-            safe_strcpy(cmdline,
-                        cmdline_cook(__va((unsigned long)image->cmdline),
+        if ( bd->kernel->cmdline )
+            safe_strcpy(cmdline, cmdline_cook(
+                        __va((unsigned long)bd->kernel->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
@@ -1024,7 +1014,7 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         }
     }
 
-    if ( construct_dom0(d, image, initrd, cmdline) != 0 )
+    if ( construct_dom0(d, bd->kernel, bd->ramdisk, cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
@@ -1204,6 +1194,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
     bi->mods[0].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+    bi->domains[0].kernel = &bi->mods[0];
 
     if ( pvh_boot )
     {
@@ -2093,6 +2084,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
         bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+        bi->domains[0].ramdisk = &bi->mods[initrdidx];
         if ( first_boot_module_index(bi, BOOTMOD_UNKNOWN) >= 0 )
             printk(XENLOG_WARNING
                    "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811388.1224117 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFI-0000EY-8P; Sun, 06 Oct 2024 21:56:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811388.1224117; Sun, 06 Oct 2024 21:56: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 1sxZFI-0000EM-4Y; Sun, 06 Oct 2024 21:56:56 +0000
Received: by outflank-mailman (input) for mailman id 811388;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZDu-0007Zk-Pc
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:30 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b2fff737-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:55:29 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251451864396.89237154171735;
 Sun, 6 Oct 2024 14:50:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2fff737-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251453; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=gUr1ufUEBitU+nDM0BWSLW+Xx/Hmfr4uUJ7xlx+234sllpYdyGknA5gSMWCbMau/MquWwq5RD4ijUNdSSaoBEBdSgBtoy8PEggI+4xEzhoLp7uArk1S8GaOPno/D7z+lKTfS0gMznOXRVjkw7dlLVd6H9e1oY15Bnn8G/9ErF58=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251453; h=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=lUf8dRXsSe31nIQ8ru6siZ++csVBXQ/vKqr++5VfORM=; 
	b=hScijmFEh7BrkJmujyCZTUJJAkAs2+95VGStCtgi8B8kR9cEHpkjAW+yj0P3AffqXOFmo7BXqn1e41v4L+pnkx+O3S3mFdtj3XqDZ7erSwQtPbZ0j3smOidZuj1UWb8nCeMz+LQiflcVkO1a68NssK+I2Fj01LF4EAqcWcw+nPQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251453;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=lUf8dRXsSe31nIQ8ru6siZ++csVBXQ/vKqr++5VfORM=;
	b=AgfTJL4QRtO6aQOjgJCvE70ZYtT2E7QXd8EQrvu+iy4V1bNFe8HdsAeQv3razu2I
	3HSiC/o56QZbRySI9kZNljZaqWp/9legmkv3yVR+jgYozRKL0m+Ui1Iya8RMN7QxsnA
	tj8cTyYW/deTCRBhwznDeieOp2fFJ0vkEwR4Iko0=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 41/44] x86/boot: add struct domain to struct boot_domain
Date: Sun,  6 Oct 2024 17:49:52 -0400
Message-Id: <20241006214956.24339-42-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Store a reference to the created domain in struct boot_domain.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h |  3 +++
 xen/arch/x86/setup.c                  | 15 +++++++--------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index 00f7d9267965..2322c459e36a 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -10,6 +10,7 @@
 
 #include <public/xen.h>
 
+struct domain;
 struct boot_module;
 
 struct boot_domain {
@@ -19,6 +20,8 @@ struct boot_domain {
 
     struct boot_module *kernel;
     struct boot_module *ramdisk;
+
+    struct domain *d;
 };
 
 #endif
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f250638edf09..e6a231bd2d42 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -959,7 +959,6 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         },
     };
     struct boot_domain *bd = &bi->domains[0];
-    struct domain *d;
 
     if ( opt_dom0_pvh )
     {
@@ -976,13 +975,13 @@ static struct domain *__init create_dom0(struct boot_info *bi)
 
     /* Create initial domain.  Not d0 for pvshim. */
     bd->domid = get_initial_domain_id();
-    d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
-    if ( IS_ERR(d) )
-        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d));
+    bd->d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
+    if ( IS_ERR(bd->d) )
+        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(bd->d));
 
-    init_dom0_cpuid_policy(d);
+    init_dom0_cpuid_policy(bd->d);
 
-    if ( alloc_dom0_vcpu0(d) == NULL )
+    if ( alloc_dom0_vcpu0(bd->d) == NULL )
         panic("Error creating d%uv0\n", bd->domid);
 
     /* Grab the DOM0 command line. */
@@ -1014,10 +1013,10 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         }
     }
 
-    if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
+    if ( construct_dom0(bd->d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
-    return d;
+    return bd->d;
 }
 
 /* How much of the directmap is prebuilt at compile time. */
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811389.1224127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFJ-0000bg-Ke; Sun, 06 Oct 2024 21:56:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811389.1224127; Sun, 06 Oct 2024 21:56: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 1sxZFJ-0000bL-En; Sun, 06 Oct 2024 21:56:57 +0000
Received: by outflank-mailman (input) for mailman id 811389;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZDQ-0007Zk-VL
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:55:00 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a12a7fa3-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:55:00 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 17282514472961014.7196473903033;
 Sun, 6 Oct 2024 14:50:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a12a7fa3-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251449; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Tsr6VNSaivJn2RLAfxpVSkPx/nM5xLWUJFWjCrYQTTA4BI6Jau0ib6xyH2CBI4qDtAqbHA+WdEaSQPAbP/AKNOOtgpGc56uFguoezQIPvivjyxpa0pgZB3UUZMDoOzET+SJBu0s+o1dcyLcHULR9fJN9wpNbl1lRYvDd9NK/vco=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251449; h=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=I5+jMetwK1mnjWjlCDImNyJTFTfOMPbGyVjb5LEAn64=; 
	b=CNE0X4BFUE8QnHnQyqlJmbbSZcDymhMnhDNqq4HQyIu4/BN6NSx201islFhmH7ILwh+BGkDeZi8KI0sMilDzXHB0FzEXzso8vWPFRK9ShXG2hM5/OMsaB1N6RatzMgl9EkncAtX0bd/ISxpKSb/yWEGBLIVq/u3jpCEOcepz93A=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251449;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=I5+jMetwK1mnjWjlCDImNyJTFTfOMPbGyVjb5LEAn64=;
	b=WNKRC8v2MtqnWGSRRDumROkzc92d0lE+p6b77ZCKnZ5gij9wVdLWTVkpLbWW6mDC
	YB3qOsF1g3mMUgwNDSTE+RB+lXCFeHUTlrZ212xgsKB9EqlNohHjt6VF3rheFPn4jbB
	wtv+gZeslGCg3UkGVjtypudDCc5R5kfn8iddhxCE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 37/44] x86/boot: remove mod from struct boot_module
Date: Sun,  6 Oct 2024 17:49:48 -0400
Message-Id: <20241006214956.24339-38-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With all references to mod field removed, remove the mod field from struct
boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 3 ---
 xen/arch/x86/setup.c                | 3 ---
 2 files changed, 6 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 3b6bfbe88770..4cb722e8ba0a 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,7 +8,6 @@
 #ifndef __XEN_X86_BOOTINFO_H__
 #define __XEN_X86_BOOTINFO_H__
 
-#include <xen/multiboot.h>
 #include <xen/types.h>
 
 /* Max number of boot modules a bootloader can provide in addition to Xen */
@@ -25,8 +24,6 @@ enum bootmod_type {
 };
 
 struct boot_module {
-    /* Transitionary only */
-    module_t *mod;
     /*
      * A boot module may contain a compressed kernel that Xen will need space
      * reserved, into which it will be decompressed.
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 0ffe8d3ff8dd..3604c8fbe40a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -308,8 +308,6 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
      */
     for ( i = 0; i <= bi->nr_modules; i++ )
     {
-        bi->mods[i].mod = &mods[i];
-
         bi->mods[i].cmdline = (char *)(paddr_t)mods[i].string;
 
         bi->mods[i].start = (paddr_t)mods[i].mod_start;
@@ -319,7 +317,6 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
     /* map the last mb module for xen entry */
     bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
     bi->mods[bi->nr_modules].flags |= BOOTMOD_FLAG_X86_CONSUMED;
-    bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];
 
     return bi;
 }
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:56:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:56:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811390.1224133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFK-0000iM-5F; Sun, 06 Oct 2024 21:56:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811390.1224133; Sun, 06 Oct 2024 21:56: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 1sxZFJ-0000hK-Q2; Sun, 06 Oct 2024 21:56:57 +0000
Received: by outflank-mailman (input) for mailman id 811390;
 Sun, 06 Oct 2024 21:56: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZAO-00051E-AM
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:51:52 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3039b3c7-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:51:50 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251418372861.7563899223412;
 Sun, 6 Oct 2024 14:50:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3039b3c7-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251420; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=I4jJR9a2EHCuDsSvc8luUnOJetc4IHL1G9aidlEdyl6Wf6TAhPZ/MMEVdENH5fLb88H9KkyeKP1RGsRr5yGHFUSs1Wcq6+zfE1mEpFQC0SPVcJw+ur0HGpd5kndTujZWqpBfVP+hKYJWJ1Md4IibIIkYSxl+kJFHMTBDhRULblo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251420; h=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=RcV1PHBeCLrZ2Ul5KaCez/ZJJqAAL9qH6Sb79p3LNdQ=; 
	b=mAiyY4SN353oPkWOzYkw6jI6Xux4ausBMrn44iPlxeVCdclSCvn00V81mFSHvMRgF5deWWbqWVyq9H5IfyZtPqBHv0D2Hvm16USNXDgnHmatp2HpD/rfhdzz6Xt274VwEjfNxOD/p8uXpyKFFhOY1aj9Kjhnj1kehU/y7uBt0N8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251420;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=RcV1PHBeCLrZ2Ul5KaCez/ZJJqAAL9qH6Sb79p3LNdQ=;
	b=OFRdUUu86PgsTQnySZnQ0V86SOkirQmUTbS0tV1xjDxC+vuwLVIwmu9Pz3P6Pauj
	BVdawHpqPVuo4ohL8IbFGbTLEH2uqTF1CWF34DwugX4mfMwUCwA5pT97W2o15Lg/MoS
	stQTTX1sdOFWEuV2RdzdPAqJwxl8kLkjmR01Tqpk=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 12/44] x86/boot: add start and size fields to struct boot_module
Date: Sun,  6 Oct 2024 17:49:23 -0400
Message-Id: <20241006214956.24339-13-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit introduces the start and size fields to struct boot_module and adds
a corresponding bootstrap mapping function, bootstrap_map_bm.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  2 ++
 xen/arch/x86/include/asm/setup.h    |  2 ++
 xen/arch/x86/setup.c                | 13 +++++++++++++
 3 files changed, 17 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 021ff0d93643..2ee0d5ad6d72 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -35,6 +35,8 @@ struct boot_module {
     uint32_t flags;
 #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
 
+    paddr_t start;
+    size_t size;
 };
 
 /*
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 213584b05fb2..bb7e73258a21 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -2,6 +2,7 @@
 #define __X86_SETUP_H_
 
 #include <xen/multiboot.h>
+#include <asm/bootinfo.h>
 #include <asm/numa.h>
 
 extern const char __2M_text_start[], __2M_text_end[];
@@ -38,6 +39,7 @@ unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
 void *bootstrap_map_addr(paddr_t start, paddr_t end);
 void *bootstrap_map(const module_t *mod);
+void *bootstrap_map_bm(const struct boot_module *bm);
 
 int remove_xen_ranges(struct rangeset *r);
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 1cc7fcba094b..093a4f5380d1 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -309,8 +309,13 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
      * should have been reserved to hold an entry for Xen.
      */
     for ( i = 0; i <= bi->nr_modules; i++ )
+    {
         bi->mods[i].mod = &mods[i];
 
+        bi->mods[i].start = (paddr_t)mods[i].mod_start;
+        bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
+    }
+
     /* map the last mb module for xen entry */
     bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
     bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];
@@ -477,6 +482,14 @@ void *__init bootstrap_map(const module_t *mod)
                               pfn_to_paddr(mod->mod_start) + mod->mod_end);
 }
 
+void *__init bootstrap_map_bm(const struct boot_module *bm)
+{
+    if ( !bm )
+        return bootstrap_map_addr(0, 0);
+
+    return bootstrap_map_addr(bm->start, bm->start + bm->size);
+}
+
 static void __init move_memory(
     uint64_t dst, uint64_t src, unsigned int size)
 {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811396.1224147 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFP-0001gr-AV; Sun, 06 Oct 2024 21:57:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811396.1224147; Sun, 06 Oct 2024 21:57: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 1sxZFP-0001gT-5x; Sun, 06 Oct 2024 21:57:03 +0000
Received: by outflank-mailman (input) for mailman id 811396;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZAd-00051E-Qz
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:07 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3997bac1-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:52:06 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251420772766.2057968943333;
 Sun, 6 Oct 2024 14:50:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3997bac1-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251422; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=AA3iZP6P+/NUmlrLARfVjAVSfA4n8YTISN1RtKfkhmPGFZfgw1dfU/vc1o/gQQqzPIR6AKHja8lt0YN1Pynje8lV9AxuNf4vfl63bayjF6IlJKuFCAW8G89Gy04C7ipNXzNddISVaG6hwB3bt3BpzJClUEVH3Zu1/8RMoDbGtRk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251422; h=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=V9QgKtPNRLsg8Bm0GHM4LvcFu8fucGZu4abX1YQ8tHQ=; 
	b=GMcYDSMT3wMGi/MRLcETsRy78RyZdQfkBsc/0w1meeY6F7iCCWCZ+fyiNi0ZbrKNpXbX+4awIq7X/wJU0PYG3U1xT3otc3bWaf4xAPpErm43Qf7kzf+vJQLHr4tgmqalcfjF7/cCbpsc8xAYv9hU1YJzI6kc3TGUrmKJpZINWXU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251422;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=V9QgKtPNRLsg8Bm0GHM4LvcFu8fucGZu4abX1YQ8tHQ=;
	b=L5/Z9p0oIL7mN5wsjEH3OoaCUdM6ct9EwaNfjjCh8LEkk/2ryoQMeOoQn+Es+Xeq
	p+7SQ26WwSaB0xokIJVP2oF90xkSINQlpFVbs2u5IYPSJ2S+Clnb9sPiYBqhDcHDMg8
	frBR+IBD2Yf9FTtjOG1u7as1Y+TEvi2D/7RuePvY=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 14/44] x86/boot: transition relocation calculations to struct boot_module
Date: Sun,  6 Oct 2024 17:49:25 -0400
Message-Id: <20241006214956.24339-15-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Use struct boot_module fields, start and size, when calculating the relocation
address and size. It also ensures that early_mod references are kept in sync.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f968758048ed..4f540c461b26 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1490,7 +1490,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             struct boot_module *bm = &bi->mods[j];
             unsigned long size;
 
-            size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
+            size = PAGE_ALIGN(bm->headroom + bm->size);
 
             if ( bi->mods[j].flags & BOOTMOD_FLAG_X86_RELOCATED )
                 continue;
@@ -1504,13 +1504,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             if ( s < end &&
                  (bm->headroom ||
-                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
+                  paddr_to_pfn(end - size) > paddr_to_pfn(bm->start)) )
             {
-                move_memory(end - size + bm->headroom,
-                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
-                            bm->mod->mod_end);
-                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
-                bm->mod->mod_end += bm->headroom;
+                move_memory(end - size + bm->headroom, bm->start, bm->size);
+                bm->start = (end - size);
+                bm->mod->mod_start = paddr_to_pfn(bm->start);
+                bm->size += bm->headroom;
+                bm->mod->mod_end = bm->size;
                 bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
             }
         }
@@ -1542,11 +1542,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
-                        << PAGE_SHIFT;
+        uint64_t s = (uint64_t)bi->mods[i].start;
 
         reserve_e820_ram(&boot_e820, s,
-                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
+                         s + PAGE_ALIGN(bi->mods[i].size));
     }
 
     if ( !xen_phys_start )
@@ -1624,9 +1623,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
                 for ( j = 0; j < bi->nr_modules; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(
-                                   bi->mods[j].mod->mod_start) +
-                                   bi->mods[j].mod->mod_end;
+                    uint64_t end = bi->mods[j].start +
+                                   bi->mods[j].size;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1700,13 +1698,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        set_pdx_range(bi->mods[i].mod->mod_start,
-                      bi->mods[i].mod->mod_start +
-                      PFN_UP(bi->mods[i].mod->mod_end));
+        set_pdx_range(paddr_to_pfn(bi->mods[i].mod->mod_start),
+                      paddr_to_pfn(bi->mods[i].mod->mod_start) +
+                      PFN_UP(bi->mods[i].size));
         map_pages_to_xen(
-            (unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
-            _mfn(bi->mods[i].mod->mod_start),
-            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
+            (unsigned long)maddr_to_virt(bi->mods[i].start),
+            maddr_to_mfn(bi->mods[i].start),
+            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);
     }
 
 #ifdef CONFIG_KEXEC
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811400.1224151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFP-0001l6-MC; Sun, 06 Oct 2024 21:57:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811400.1224151; Sun, 06 Oct 2024 21:57: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 1sxZFP-0001kR-IB; Sun, 06 Oct 2024 21:57:03 +0000
Received: by outflank-mailman (input) for mailman id 811400;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZBx-0007Zk-GA
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:53:29 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6ab2c9e8-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:53:28 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251433564220.8251256642435;
 Sun, 6 Oct 2024 14:50:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6ab2c9e8-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251435; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=R7MHXd/ljkarvCOOawrZJvHqwLEN6qXibQo25E8vRWWTvGcMktXzk/FiWCfCVumdrbXZ6MlAZ7FW7qeEjGGgRt88e3BZTidR6zscT1XZ8+DCp+hD1m8ethNd5YMalhbK5/JOiBs55/bPxS8Q6ruNMneiPuZObqEMWE+kdPWEZiU=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251435; h=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=zja2KfbtQhgM7evcwk5V6CujBNK+2yO+oACiE8xCgoo=; 
	b=AjEgxvRqeUbeUw3EX5IDrUd2AlGGyVhk7JJgfAIqh6ky4LVswxRHCBtAYvw4x2bpgk3004DLWmBOXQBH5WIGjSBRyIxK6I8vjnu1fSMdHaxwy7lPuTGHPxbmizkcCAvYWb68Is6fQCrR6b8ORE8UFMVY4vMfKEMoFoMyGNGTe3M=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251435;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=zja2KfbtQhgM7evcwk5V6CujBNK+2yO+oACiE8xCgoo=;
	b=aJC5SQJjPj2UiKQ5rMjoqsPbNa8Rq9bLZ/zJzlWjZ9Rbd65oCD3Gee5lDuQvBQVi
	IZJArVQjbtNEtmU3zOc+dxhdMQ0wCArin+jWhy2RQYV6fAU2clVOxTdIMsW6oEzthqU
	qJ2uKVU7q3Pa9Z0w/lxFw1lLGBpC06hApMeaUGmg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 25/44] x86/boot: convert create_dom0 to use boot info
Date: Sun,  6 Oct 2024 17:49:36 -0400
Message-Id: <20241006214956.24339-26-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit changes create_dom0 to no longer take the individual components and
take struct boot_info instead. Internally, it is changed to locate the kernel
and ramdisk details from struct boot_info.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 0d2ee19998aa..c2bcddc50990 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -946,10 +946,8 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(const module_t *image,
-                                         unsigned long headroom,
-                                         module_t *initrd, const char *kextra,
-                                         const char *loader)
+static struct domain *__init create_dom0(const struct boot_info *bi,
+                                         const char *kextra)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
 
@@ -964,9 +962,21 @@ static struct domain *__init create_dom0(const module_t *image,
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
+    int headroom, mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
+    module_t *image, *initrd;
     struct domain *d;
     domid_t domid;
 
+    /* Map boot_module to mb1 module for dom0 */
+    image = bi->mods[0].mod;
+    headroom = bi->mods[0].headroom;
+
+    /* Map boot_module to mb1 module for initrd */
+    if ( mod_idx < 0 )
+        initrd = NULL;
+    else
+        initrd = bi->mods[mod_idx].mod;
+
     if ( opt_dom0_pvh )
     {
         dom0_cfg.flags |= (XEN_DOMCTL_CDF_hvm |
@@ -995,7 +1005,7 @@ static struct domain *__init create_dom0(const module_t *image,
     if ( image->string || kextra )
     {
         if ( image->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->string), loader));
+            safe_strcpy(cmdline, cmdline_cook(__va(image->string), bi->loader));
 
         if ( kextra )
             /* kextra always includes exactly one leading space. */
@@ -2106,10 +2116,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
-                       (initrdidx >= 0 && initrdidx < bi->nr_modules) ?
-                            bi->mods[initrdidx].mod : NULL,
-                       kextra, bi->loader);
+    dom0 = create_dom0(bi, kextra);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811401.1224165 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFR-0002DG-Ai; Sun, 06 Oct 2024 21:57:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811401.1224165; Sun, 06 Oct 2024 21: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 1sxZFR-0002Br-4Q; Sun, 06 Oct 2024 21:57:05 +0000
Received: by outflank-mailman (input) for mailman id 811401;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ9j-0006RM-FG
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:51:11 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 186e355f-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:51:10 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172825141245318.856694027254207;
 Sun, 6 Oct 2024 14:50:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 186e355f-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251414; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=cm4ml96E4fcgfoUNWfSuPxDqelAqZ0lePU0r5/3SZRmqTO12TvlSGFYClPWgYy+WQ7uM7hyTJP3rYuWzue6Tu+NWlSmrsHSTAlvEBQeXLGkvn1LyyT5gP8FjiMWsMMywmf9GqD5qO4WSt96sIKoUmlmVQkfT9WGHFBlWYlwFQDc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251414; h=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=wmEpNJvCOY3XSQWugWw1bHFHppHVSJwVFmalxOGZtqI=; 
	b=lW0W2zWt6MbfSfzIZ+4Hj2h6xbhXlff8VC6AA+CfeA6Jd+axN2tDlzRMPCNKW8C0cxm54bd4EnYLXlTLhzFYbvSKj8Y7dbG9WDS+ciEqrkVPHIRlA5XaE0voU1Ma+z79opQii3qlv12/E7/K1H9dXNmjU8Cy38AhuSpOCZ2A+mg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251414;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=wmEpNJvCOY3XSQWugWw1bHFHppHVSJwVFmalxOGZtqI=;
	b=RUb41T8+0zFUMaqXfWuc0g5LkaRAHrNm3PhTsiZ36dzwgTlQiwvXpmtJ9q2hsqZ2
	Hf4CotJkX/vKJIaANtlwk78//gI9foC1SiWvBcBwvE0GPmbGuaCNFb+oe28tuhjUFpf
	DeH7576HCakcDhkvC4IGyeVo1gXVhBAr3x9rVNic=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 07/44] x86/boot: move headroom to boot modules
Date: Sun,  6 Oct 2024 17:49:18 -0400
Message-Id: <20241006214956.24339-8-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The purpose of struct boot_module is to encapsulate the state of boot module as
it is processed by Xen. Locating boot module state struct boot_module reduces
the number of global variables as well as the number of state variables that
must be passed around. It also lays the groundwork for hyperlaunch mult-domain
construction, where multiple instances of state variables like headroom will be
needed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  5 +++++
 xen/arch/x86/setup.c                | 23 ++++++++++++++---------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index d19473d8941e..c7e6b4ebf0da 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -17,6 +17,11 @@
 struct boot_module {
     /* Transitionary only */
     module_t *mod;
+    /*
+     * A boot module may contain a compressed kernel that Xen will need space
+     * reserved, into which it will be decompressed.
+     */
+    unsigned long headroom;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index ba9f110d98c6..dd82ca3d43e2 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1012,7 +1012,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
-    unsigned long nr_pages, raw_max_page, modules_headroom, module_map[1];
+    unsigned long nr_pages, raw_max_page, module_map[1];
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
@@ -1371,7 +1371,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
     }
 
-    modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
+    bi->mods[0].headroom =
+        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
+                         bi->mods[0].mod->mod_end);
+
     bootstrap_map(NULL);
 
 #ifndef highmem_start
@@ -1456,8 +1459,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
              * decompressor overheads of mod[0] (the dom0 kernel).  When we
              * move mod[0], we incorporate this as extra space at the start.
              */
-            unsigned long headroom = j ? 0 : modules_headroom;
-            unsigned long size = PAGE_ALIGN(headroom + mod[j].mod_end);
+            struct boot_module *bm = &bi->mods[j];
+            unsigned long size;
+
+            size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
 
             if ( mod[j].reserved )
                 continue;
@@ -1470,14 +1475,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 continue;
 
             if ( s < end &&
-                 (headroom ||
+                 (bm->headroom ||
                   ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
             {
-                move_memory(end - size + headroom,
+                move_memory(end - size + bm->headroom,
                             (uint64_t)mod[j].mod_start << PAGE_SHIFT,
                             mod[j].mod_end);
                 mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += headroom;
+                mod[j].mod_end += bm->headroom;
                 mod[j].reserved = 1;
             }
         }
@@ -1504,7 +1509,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( modules_headroom && !mod->reserved )
+    if ( bi->mods[0].headroom && !mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
@@ -2056,7 +2061,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(mod, modules_headroom,
+    dom0 = create_dom0(mod, bi->mods[0].headroom,
                        initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811403.1224177 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFU-0002uz-Rc; Sun, 06 Oct 2024 21:57:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811403.1224177; Sun, 06 Oct 2024 21: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 1sxZFU-0002ud-M5; Sun, 06 Oct 2024 21:57:08 +0000
Received: by outflank-mailman (input) for mailman id 811403;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ9U-0006RM-VL
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:50:56 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0e969338-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:50:54 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251410008152.1502674267898;
 Sun, 6 Oct 2024 14:50:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e969338-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251412; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=VTL42CyW2Td8CIuc8CEiCsM7s42uJYyrxQuZwcET4dOSm2LMiogBUUrD/mYhwRTPSHdD9ew9s0MigvGLbLu8+rMSinr578ZaiWjjJRR60yHcnpy9GP8UxuUpg4eQEWKvnzBOrVvsxMOiSjd3JaF/Jrmd3YfKWFHFE16GJYv5EmI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251412; h=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=x/0pbSRKvsD7gGf1XEw1gxRP4YoiCChfwLPAVJ7btAM=; 
	b=K29Tpnma1Y/rrhq2MO2DDBPuSBvMxy+s18+q9EFUD8UCqxJlEhg4Z3ZQUH4WdQF8DIeOGtzSHKYTrGbkzoK36IM5KB98KfMe30/P14pUgbXozOpi3Xv6ZqKeDCy9ZYUU50u4Kt2y4aTA97ipRCP+ZrJ+vRvgrGujdpReo/dxFqU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251412;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=x/0pbSRKvsD7gGf1XEw1gxRP4YoiCChfwLPAVJ7btAM=;
	b=srtDDtbUkOrvDVA12dRaCHk/xDFPGWM4XYGwGQKn4yQY84azTqhzog5sOGUhT9SU
	ShyNKLmxyCyliVtn2WYt73Q7xcS4/lqjcNUjOGLWjv8VA83cB2qu4w3vuL77y0s12cH
	QDDhnUyjkZMcxj9aChka9jB0sDOEJcyOKANgFv6U=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 05/44] x86/boot: introduce struct boot_module
Date: Sun,  6 Oct 2024 17:49:16 -0400
Message-Id: <20241006214956.24339-6-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This will introduce a new struct boot_module to provide a rich state
representation around modules provided by the boot loader. Support is for 64
boot modules, one held in reserve for Xen, and up to 63 can be provided by the
boot loader. The array of struct boot_modules will be accessible via a
reference held in struct boot_info.

A temporary `mod` parameter is included in struct boot_module to ease the
transition from using Multiboot v1 structures over to struct boot_module. Once
the transition is complete, the parameter will be dropped from the structure.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 14 ++++++++++++--
 xen/arch/x86/setup.c                |  9 +++++++++
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 87d311ac1399..d19473d8941e 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,20 +8,30 @@
 #ifndef __XEN_X86_BOOTINFO_H__
 #define __XEN_X86_BOOTINFO_H__
 
+#include <xen/multiboot.h>
 #include <xen/types.h>
 
+/* Max number of boot modules a bootloader can provide in addition to Xen */
+#define MAX_NR_BOOTMODS 63
+
+struct boot_module {
+    /* Transitionary only */
+    module_t *mod;
+};
+
 /*
  * Xen internal representation of information provided by the
  * bootloader/environment, or derived from the information.
  */
 struct boot_info {
-    unsigned int nr_modules;
-
     const char *loader;
     const char *cmdline;
 
     paddr_t memmap_addr;
     size_t memmap_length;
+
+    unsigned int nr_modules;
+    struct boot_module mods[MAX_NR_BOOTMODS + 1];
 };
 
 #endif /* __XEN_X86_BOOTINFO_H__ */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f0482ca8cc55..68eb4c848ae8 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -284,6 +284,8 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
 {
     struct boot_info *bi = &xen_boot_info;
     const multiboot_info_t *mbi = __va(mbi_p);
+    module_t *mods = __va(mbi->mods_addr);
+    unsigned int i;
 
     bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
 
@@ -302,6 +304,13 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
         bi->memmap_length = mbi->mmap_length;
     }
 
+    /*
+     * This will iterate over all modules to include an extra mb module, which
+     * should have been reserved to hold an entry for Xen.
+     */
+    for ( i = 0; i <= bi->nr_modules; i++ )
+        bi->mods[i].mod = &mods[i];
+
     return bi;
 }
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811406.1224187 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFd-00048Q-71; Sun, 06 Oct 2024 21:57:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811406.1224187; Sun, 06 Oct 2024 21:57: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 1sxZFd-000487-15; Sun, 06 Oct 2024 21:57:17 +0000
Received: by outflank-mailman (input) for mailman id 811406;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZAW-00051E-7s
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:00 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 34f9efea-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:51:58 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251419620923.5885886254096;
 Sun, 6 Oct 2024 14:50:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34f9efea-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251421; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=C7bfeo+iZKVTYaWJ5X97pyAu2kDVxcsiEi+xMdkpWZ0++YhzLoZKWU1Ef+5ToV5uGnLUK5ORBfUWDr0PyfBoba7TxiKio+tM96X2Y72MDVqqc7eCj2b04l4my8cNQaYLV2x/j5QSMVd1rdEDeR/IfkvNr6WrIlkjE7GXlxUaKz0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251421; h=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=NxzxsjEAulp7wEAc20NZOtDa3Lo4GRSs8lW4ILTmQAc=; 
	b=CSOpj5Dxfy9GmEWtV8S9F1lXQZu2+TZvRd9ylYeJPMuarO9zARlX3WG0x/V3cxX6RgNRB2hYmhT5IzUlBlaOUQc9iBj31JsR6sgQ6gLwZVEyBfaxHmV2RHRGoWbsJW7R1m8imQV8sYtvzHFw+AHeUE+aas1RreUot1mYiBeepow=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251421;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=NxzxsjEAulp7wEAc20NZOtDa3Lo4GRSs8lW4ILTmQAc=;
	b=H4X0VdXYKTpFyTzY6KNrY/d+o15qsn73YN+x6tCM7wDI/BAuaZtuMoZwEajxOEHA
	v8E2yEM7HYHxTu9TWx6kSWghcwUteA4xJS0/xGuTlTMAfZeB3HdY7NjBS62stOv8Ox5
	1dULuYPuT/XnQmLqDb6q3sQCynRU34E1vINJ+LZU=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 13/44] x86/boot: update struct boot_module on module relocation
Date: Sun,  6 Oct 2024 17:49:24 -0400
Message-Id: <20241006214956.24339-14-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

When a boot module is relocated, ensure struct boot_module start and size
fields are updated along with early_mod.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 093a4f5380d1..f968758048ed 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1392,8 +1392,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
-        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
+        bi->mods[xen].start = virt_to_mfn(_stext);
+        bi->mods[xen].size = __2M_rwdata_end - _stext;
+
+        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
+        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
     }
 
     bi->mods[0].headroom =
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811407.1224197 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFf-0004Z5-Fg; Sun, 06 Oct 2024 21:57:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811407.1224197; Sun, 06 Oct 2024 21: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 1sxZFf-0004Yt-B6; Sun, 06 Oct 2024 21:57:19 +0000
Received: by outflank-mailman (input) for mailman id 811407;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZCL-0007Zk-1e
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:53:53 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 78bbd94c-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:53:52 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251436997842.3804635331212;
 Sun, 6 Oct 2024 14:50:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 78bbd94c-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251438; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=DCFg2UlgJ9kxRpCSZac3bnSsQF7cc+mSGMixX1sZr+ZC/cGGZE3sti2n8RfT/cZabwNepzEcI0lms13FaiugCtR/6dZdw0UZMsJoqktPhuGqEh+eRhVW+l3YAB5kUQNc+Tw5gFRPZ+QDDh442a6S1nmS22AH4nliZl8edtWbKqc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251438; h=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=k6RMuxzCGNIwefwYfLaAQQdjZurM3hL6dfBBxSvt0dY=; 
	b=aoH+7sZUt2pnpMOF40B+oNADdALUkO7nH+Nln5XTjDXVYrwGTh6iDso7AiFrSBfOb+RTujKwIUgvFSnz67V+J2bpaSEXy5lvuDYl0lWh7Mlg7kWJasulye/ApEdb+rd21CP6rQp+gX7LiRpzV10l8VWSjpExEppJZBb/jzd1qLk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251438;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=k6RMuxzCGNIwefwYfLaAQQdjZurM3hL6dfBBxSvt0dY=;
	b=Aom7nRvQi3CsVAyVj3cLtDsCAbXj8WW9Y5CFYlM9nDNiuSWvv4HrloHl2a/Dh2BK
	OikVEyu1zTCDioZ7EGMmaV/Xrl0knMjqT+wX2SJ4HfDesB7YaN9aaRYNa4kf+H3Y3Wo
	W4dzKo1IymEzocC5TnfxO8x9rlyU0kxTiQcYdsP4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 28/44] x86/boot: add cmdline to struct boot_module
Date: Sun,  6 Oct 2024 17:49:39 -0400
Message-Id: <20241006214956.24339-29-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a char pointer field, cmdline, to struct boot_module to hold the address
pointed to by the string field of struct mod. This removes the need to use the
early_mod field to get to the dom0 kernel command line.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 2 ++
 xen/arch/x86/setup.c                | 9 ++++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 9ed260629012..3b6bfbe88770 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -38,6 +38,8 @@ struct boot_module {
 #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
 #define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
 
+    const char *cmdline;
+
     paddr_t start;
     size_t size;
 };
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index aed0837902c4..d5916e85f68e 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -312,6 +312,8 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
     {
         bi->mods[i].mod = &mods[i];
 
+        bi->mods[i].cmdline = (char *)(paddr_t)mods[i].string;
+
         bi->mods[i].start = (paddr_t)mods[i].mod_start;
         bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
     }
@@ -1000,10 +1002,11 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->mod->string || bi->kextra )
+    if ( image->cmdline || bi->kextra )
     {
-        if ( image->mod->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
+        if ( image->cmdline )
+            safe_strcpy(cmdline,
+                        cmdline_cook(__va((unsigned long)image->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811408.1224201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFf-0004dX-UN; Sun, 06 Oct 2024 21:57:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811408.1224201; Sun, 06 Oct 2024 21: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 1sxZFf-0004cu-L6; Sun, 06 Oct 2024 21:57:19 +0000
Received: by outflank-mailman (input) for mailman id 811408;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZDJ-0007Zk-44
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:53 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9ca37c2f-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:54:52 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251446148991.8497668397073;
 Sun, 6 Oct 2024 14:50:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9ca37c2f-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251448; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=bNsgLn464aZeuv+ZYClJOH6gMVQinmTHfCyGViv40l3gEDafLIMtfgqdqgN/DawipepLWEFW0FV2lgaxh8FeuAKm+VGGeBCMD65VnDQ5vcj8CApG2kJgyd1G9ifizG0/DQkNQT6yJql8pYZbShWisn0kMO6t5WJCa1Htf0qgMJM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251448; h=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=Jb2nZ+7HGkVeAJRXjrn8aAVl9GUxbiL1jFANEJYgSG0=; 
	b=g6cY5WkxXGcd7j5EbuC/Rlr5LpL7EXLdZ32PbuOjleyn1VHGQXGiKJ962CO9TaCho37OxeK1LdPmHdmNFxCMQ787sTW+96480Oset+KOxyH9XYnx7SoGXmqcVNQzSf9qY5EosmDlzFqCO4kQeEhilO1W9DSfPHpAGHM3RkK2+gY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251448;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Jb2nZ+7HGkVeAJRXjrn8aAVl9GUxbiL1jFANEJYgSG0=;
	b=fOWMkwhJlAAN6/oEmr96AMyxsKJnAOW0ssiGpmOniLF4SUUL7I7YWecBA0qtujvi
	ZYjxTlbSw5GAkOCigotOE1Wo2JggQD5V2X8ERk5CP5w2m0FJgjgy6eY386EUGnR7Ch+
	M31SmCeXKYz9cBd83tuM/1b+MxcALz+xKk6+dqqk=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 36/44] x86/boot: remove remaining early_mod references
Date: Sun,  6 Oct 2024 17:49:47 -0400
Message-Id: <20241006214956.24339-37-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Any direct usages of struct mod have been transitioned, remove the remaining
references to early_mod fields.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 31 +++++++++++--------------------
 1 file changed, 11 insertions(+), 20 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e9e3da3204f1..0ffe8d3ff8dd 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -334,9 +334,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = bi->mods[i].mod->mod_start;
-        unsigned long end = start +
-                            PFN_UP(bi->mods[i].mod->mod_end);
+        unsigned long start = bi->mods[i].start;
+        unsigned long end = start + PFN_UP(bi->mods[i].size);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -664,8 +663,8 @@ static uint64_t __init consider_modules(
 
     for ( i = 0; i < nr_mods ; ++i )
     {
-        uint64_t start = (uint64_t)pfn_to_paddr(mods[i].mod->mod_start);
-        uint64_t end = start + PAGE_ALIGN(mods[i].mod->mod_end);
+        uint64_t start = (uint64_t)mods[i].start;
+        uint64_t end = start + PAGE_ALIGN(mods[i].size);
 
         if ( i == this_mod )
             continue;
@@ -1380,10 +1379,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
-        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
+        if ( bi->mods[i].start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
-        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
     }
 
     /*
@@ -1404,16 +1401,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          */
         bi->mods[xen].start = virt_to_mfn(_stext);
         bi->mods[xen].size = __2M_rwdata_end - _stext;
-
-        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
-        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
     }
 
-    bi->mods[0].headroom =
-        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
-                         bi->mods[0].mod->mod_end);
-
-    bootstrap_map(NULL);
+    bi->mods[0].headroom = bzimage_headroom(
+                        bootstrap_map_bm(&bi->mods[0]),
+                        bi->mods[0].size);
+    bootstrap_map_bm(NULL);
 
 #ifndef highmem_start
     /* Don't allow split below 4Gb. */
@@ -1518,9 +1511,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             {
                 move_memory(end - size + bm->headroom, bm->start, bm->size);
                 bm->start = (end - size);
-                bm->mod->mod_start = paddr_to_pfn(bm->start);
                 bm->size += bm->headroom;
-                bm->mod->mod_end = bm->size;
                 bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
             }
         }
@@ -1708,8 +1699,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        set_pdx_range(paddr_to_pfn(bi->mods[i].mod->mod_start),
-                      paddr_to_pfn(bi->mods[i].mod->mod_start) +
+        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
+                      paddr_to_pfn(bi->mods[i].start) +
                       PFN_UP(bi->mods[i].size));
         map_pages_to_xen(
             (unsigned long)maddr_to_virt(bi->mods[i].start),
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811411.1224217 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFk-0005kC-EG; Sun, 06 Oct 2024 21:57:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811411.1224217; Sun, 06 Oct 2024 21:57: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 1sxZFk-0005jw-9k; Sun, 06 Oct 2024 21:57:24 +0000
Received: by outflank-mailman (input) for mailman id 811411;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZCa-0007Zk-7R
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:08 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 81de1d2d-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:54:07 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251439293836.8451746381855;
 Sun, 6 Oct 2024 14:50:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 81de1d2d-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251441; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=f7uPFxnNxNSwS5iGpHo5I392MgLtFiItLuV6jVa9yt/nZ98gGC97UyCPtoKwXqUtY9B2nqS7Fr+EhFdut2+kgbL/weoMWMeAsPDAdDkvMEgmDwPdyMsbmRUZjjUDaC0j836VJrc/Hh8DSPc49+DGlXb+aZRuiLWT22Sqy9eML2I=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251441; h=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=xkaiW9OjgWPFU0BNzVKSQC1ectLOUlTK2xVwSMDZnWo=; 
	b=GX8CLeUxgYtdzfLIdTRoQNixNxpkzINuW8Zh3oIegqvqbrybiFwY346I1QZ7otYvIvGO39pL9ZkBr5K6ilu/jE4iKpfhM/8QgEy/KjZC3dlDGwsVw7/ieAuCygyHIcpW64FqkZUR5W41zdcjlV1Kg4fTEhxB6oFgBo56KthT5Eg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251441;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=xkaiW9OjgWPFU0BNzVKSQC1ectLOUlTK2xVwSMDZnWo=;
	b=XcRbXHzbJsjP4VxUjD09sKr0MASD6YuZNtPsTEOsl6uGp6P3qBN4xjeTmvatswo8
	NLfZg84GZwqSsf7gLmpQ8WSet1KgN6CV2chNzZmw9kYyM8D0zE/3ZBznQfEcAF7a7Kl
	nBzuh1QsH8DL5OWxn9p4ajju2PnVASO5doAPmnAw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 30/44] x86/boot: convert dom0_construct_pv initrd param to struct boot_module
Date: Sun,  6 Oct 2024 17:49:41 -0400
Message-Id: <20241006214956.24339-31-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes the type for the initrd parameter of dom0_construct_pv to be struct
boot_module. This conversion requires several adjustments throughout dom0_construct_pv
to account for the type change. Removes the usage of early_mod field for ramdisk module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/dom0_build.c             |  2 +-
 xen/arch/x86/include/asm/dom0_build.h |  2 +-
 xen/arch/x86/pv/dom0_build.c          | 29 +++++++++++++++------------
 3 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 54db578dd29f..1d05ee53a6d8 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -613,7 +613,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
         rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
                                 cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, initrd->mod, cmdline);
+        rc = dom0_construct_pv(d, image, initrd, cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index a1f36f7d360d..2ce5ea3851af 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -15,7 +15,7 @@ int dom0_setup_permissions(struct domain *d);
 
 int dom0_construct_pv(
     struct domain *d, const struct boot_module *image,
-    module_t *initrd, const char *cmdline);
+    struct boot_module *initrd, const char *cmdline);
 
 int dom0_construct_pvh(struct domain *d, const module_t *image,
                        unsigned long image_headroom,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 7b6afe64d799..16b8c1e40998 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -356,7 +356,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
 
 static int __init dom0_construct(struct domain *d,
                                  const struct boot_module *image,
-                                 module_t *initrd,
+                                 struct boot_module *initrd,
                                  const char *cmdline)
 {
     int i, rc, order, machine;
@@ -367,7 +367,8 @@ static int __init dom0_construct(struct domain *d,
     unsigned long nr_pt_pages;
     unsigned long alloc_spfn;
     unsigned long alloc_epfn;
-    unsigned long initrd_pfn = -1, initrd_mfn = 0;
+    unsigned long initrd_pfn = -1;
+    mfn_t  initrd_mfn = { 0 };
     unsigned long count;
     struct page_info *page = NULL;
     unsigned int flush_flags = 0;
@@ -376,7 +377,7 @@ static int __init dom0_construct(struct domain *d,
     void *image_base = bootstrap_map_bm(image);
     unsigned long image_len = image->size;
     void *image_start = image_base + image->headroom;
-    unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+    unsigned long initrd_len = initrd ? initrd->size : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
@@ -612,7 +613,8 @@ static int __init dom0_construct(struct domain *d,
         initrd_pfn = vinitrd_start ?
                      (vinitrd_start - v_start) >> PAGE_SHIFT :
                      domain_tot_pages(d);
-        initrd_mfn = mfn = initrd->mod_start;
+        initrd_mfn = maddr_to_mfn(initrd->start);
+        mfn = mfn_x(initrd_mfn);
         count = PFN_UP(initrd_len);
         if ( d->arch.physaddr_bitsize &&
              ((mfn + count - 1) >> (d->arch.physaddr_bitsize - PAGE_SHIFT)) )
@@ -627,12 +629,13 @@ static int __init dom0_construct(struct domain *d,
                     free_domheap_pages(page, order);
                     page += 1UL << order;
                 }
-            memcpy(page_to_virt(page), mfn_to_virt(initrd->mod_start),
+            memcpy(page_to_virt(page), maddr_to_virt(initrd->start),
                    initrd_len);
-            mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+            mpt_alloc = initrd->start;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
-            initrd->mod_start = initrd_mfn = mfn_x(page_to_mfn(page));
+            initrd_mfn = page_to_mfn(page);
+            initrd->start = mfn_to_maddr(initrd_mfn);
         }
         else
         {
@@ -640,9 +643,9 @@ static int __init dom0_construct(struct domain *d,
                 if ( assign_pages(mfn_to_page(_mfn(mfn++)), 1, d, 0) )
                     BUG();
         }
-        initrd->mod_end = 0;
+        initrd->size = 0;
 
-        iommu_memory_setup(d, "initrd", mfn_to_page(_mfn(initrd_mfn)),
+        iommu_memory_setup(d, "initrd", mfn_to_page(initrd_mfn),
                            PFN_UP(initrd_len), &flush_flags);
     }
 
@@ -654,7 +657,7 @@ static int __init dom0_construct(struct domain *d,
                nr_pages - domain_tot_pages(d));
     if ( initrd )
     {
-        mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+        mpt_alloc = initrd->start;
         printk("\n Init. ramdisk: %"PRIpaddr"->%"PRIpaddr,
                mpt_alloc, mpt_alloc + initrd_len);
     }
@@ -763,7 +766,7 @@ static int __init dom0_construct(struct domain *d,
         if ( count < initrd_pfn || count >= initrd_pfn + PFN_UP(initrd_len) )
             mfn = pfn++;
         else
-            mfn = initrd_mfn++;
+            mfn = mfn_x(initrd_mfn) + 1;
         *l1tab = l1e_from_pfn(mfn, compat ? COMPAT_L1_PROT : L1_PROT);
         l1tab++;
 
@@ -882,7 +885,7 @@ static int __init dom0_construct(struct domain *d,
         if ( pfn >= initrd_pfn )
         {
             if ( pfn < initrd_pfn + PFN_UP(initrd_len) )
-                mfn = initrd->mod_start + (pfn - initrd_pfn);
+                mfn = paddr_to_pfn(initrd->start) + (pfn - initrd_pfn);
             else
                 mfn -= PFN_UP(initrd_len);
         }
@@ -1052,7 +1055,7 @@ out:
 
 int __init dom0_construct_pv(struct domain *d,
                              const struct boot_module *image,
-                             module_t *initrd,
+                             struct boot_module *initrd,
                              const char *cmdline)
 {
     int rc;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811413.1224223 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFk-0005q4-TW; Sun, 06 Oct 2024 21:57:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811413.1224223; Sun, 06 Oct 2024 21:57: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 1sxZFk-0005n2-JH; Sun, 06 Oct 2024 21:57:24 +0000
Received: by outflank-mailman (input) for mailman id 811413;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZCS-0007Zk-93
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:00 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7d297a9e-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:53:59 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251438140394.0842588354635;
 Sun, 6 Oct 2024 14:50:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d297a9e-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251440; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=GA8nJhzzWC/DSUASsPXxy+TDlmruTa7NuHPxxtbBHUHVWqDDhsoEAzW/9qpVTrGdRlV57dr01UmNYN9SuBw0EbyGJpOvAdm0PX4MjDA/d3mimfPqPv0vT90ZCqpCeLbd4M313Godt0fIFOpdvwaVug9U8EekJISc0fF5+u3hLPY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251440; h=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=Fh/7Uk3Vw+tb0Y+Dui/MHmomzSneFUYlu0DymL9u5VQ=; 
	b=Z/nNqAxRmVxwXoVkrDpkjmB5zZAn1jQlykm5+Ah2gWfVg/Yeuz8mUIi0H9kZhy+mCO7F3BZhQbCaBshxbfd5FXbMcmsjXGPiWLk4R2mr61Wx6+zcUl/68h8n8WBc80cTM+ZEj7mfAZUjABE43oNbTCbUDsi4X+Wwm3JybT4c0kM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251440;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Fh/7Uk3Vw+tb0Y+Dui/MHmomzSneFUYlu0DymL9u5VQ=;
	b=DZ871kCoeXOh6seUZdQULPWGkZLcXmSqefp2kAVtO/YRAwoH6FJZRCWH5HhYggc2
	YxnHzObonYO6S0gIL5jSJBv4iHnZyl6MuCIhmz4Ik6SZfPNHQGI2BkO8/YvszkSJIkq
	jVOcIxrGSI+tyA5q7nAOrBQSuAugCw8XaFfn8e+o=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 29/44] x86/boot: convert dom0_construct_pv image param to struct boot_module
Date: Sun,  6 Oct 2024 17:49:40 -0400
Message-Id: <20241006214956.24339-30-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes the type for the image parameter of dom0_construct_pv to be struct
boot_module. Removing the usage of early_mod field for kernel module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/dom0_build.c             |  3 +--
 xen/arch/x86/include/asm/dom0_build.h |  7 +++----
 xen/arch/x86/pv/dom0_build.c          | 14 ++++++--------
 3 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 1eff3192f72d..54db578dd29f 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -613,8 +613,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
         rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
                                 cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image->mod, image->headroom, initrd->mod,
-                               cmdline);
+        rc = dom0_construct_pv(d, image, initrd->mod, cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 107c1ff98367..a1f36f7d360d 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -13,10 +13,9 @@ unsigned long dom0_compute_nr_pages(struct domain *d,
                                     unsigned long initrd_len);
 int dom0_setup_permissions(struct domain *d);
 
-int dom0_construct_pv(struct domain *d, const module_t *image,
-                      unsigned long image_headroom,
-                      module_t *initrd,
-                      const char *cmdline);
+int dom0_construct_pv(
+    struct domain *d, const struct boot_module *image,
+    module_t *initrd, const char *cmdline);
 
 int dom0_construct_pvh(struct domain *d, const module_t *image,
                        unsigned long image_headroom,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 262edb6bf2f0..7b6afe64d799 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -355,8 +355,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
 }
 
 static int __init dom0_construct(struct domain *d,
-                                 const module_t *image,
-                                 unsigned long image_headroom,
+                                 const struct boot_module *image,
                                  module_t *initrd,
                                  const char *cmdline)
 {
@@ -374,9 +373,9 @@ static int __init dom0_construct(struct domain *d,
     unsigned int flush_flags = 0;
     start_info_t *si;
     struct vcpu *v = d->vcpu[0];
-    void *image_base = bootstrap_map(image);
-    unsigned long image_len = image->mod_end;
-    void *image_start = image_base + image_headroom;
+    void *image_base = bootstrap_map_bm(image);
+    unsigned long image_len = image->size;
+    void *image_start = image_base + image->headroom;
     unsigned long initrd_len = initrd ? initrd->mod_end : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
@@ -1052,8 +1051,7 @@ out:
 }
 
 int __init dom0_construct_pv(struct domain *d,
-                             const module_t *image,
-                             unsigned long image_headroom,
+                             const struct boot_module *image,
                              module_t *initrd,
                              const char *cmdline)
 {
@@ -1072,7 +1070,7 @@ int __init dom0_construct_pv(struct domain *d,
         write_cr4(read_cr4() & ~X86_CR4_SMAP);
     }
 
-    rc = dom0_construct(d, image, image_headroom, initrd, cmdline);
+    rc = dom0_construct(d, image, initrd, cmdline);
 
     if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811415.1224237 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFs-0006rA-6d; Sun, 06 Oct 2024 21:57:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811415.1224237; Sun, 06 Oct 2024 21:57: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 1sxZFs-0006qS-0r; Sun, 06 Oct 2024 21:57:32 +0000
Received: by outflank-mailman (input) for mailman id 811415;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZBS-00051E-TN
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:58 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 580a8eea-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:52:57 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172825142887696.29494057344664;
 Sun, 6 Oct 2024 14:50:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 580a8eea-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251430; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=jJzy7FhjHrKYYkfDzW82tNVzizfhfrM5oeOLo+W/ef03H2uzWQZE1RMJbmomBzr7yuJ5tRm/lTK3cOS7peDUVExqmeZw/GAPey/qiSyJQkNF6+vRm/XnQ0mcf0xSpDvbhzv+UjxmSAp99qVwmxY3y16CbU6jZIBv7l1Uz3Bh5Dk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251430; h=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=KVTUDBf5itHqMtcxsfp0xgFE01OmBqCDzmFITv9nlQc=; 
	b=BiV8zUzkA4pwde/ZeTvSzmQl7S/0z/w+sZ7jozKPUjtXQfPtdAC7H3xaMaiKMqnqFRuO8IK5+giXdmkzGi85VagWERViZd98Wshh57ttmNuz4EqRDM+ZiPGGHPeLXzIRNGGN+6T8y/v4gfhCqm84doieY3/7gkwVNyQbWkGuSL4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251430;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=KVTUDBf5itHqMtcxsfp0xgFE01OmBqCDzmFITv9nlQc=;
	b=hcqnVXJQx58AauJ0JQOQSP0iuHt8lDEUGUih0+X07oDBmnqq2BmGKe+JI3LAB11N
	jcslhyy5N3fSTEIIjJl/Mzx3f4FLRWirPE2lGpL6KFjc1aY+7aVwZ8oived+ZCvFTUp
	uyZ3CcimJ5K1VafiL4Jwf5+ZjxZYcn+2zH0tU6qM=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 21/44] x86/boot: convert ramdisk locating to struct boot_module
Date: Sun,  6 Oct 2024 17:49:32 -0400
Message-Id: <20241006214956.24339-22-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Locate the first unclaimed struct boot_module and mark it as ramdisk. If there
are any remaining unclaimed struct boot_module instances, report to the
console. In the change, the new boot module iterator is used to find the
initrd index, which returns a signed int. Switch initrdidx from unsigned to
signed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e560fa798d71..e42afb0c30cb 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1033,7 +1033,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     char *kextra;
     void *bsp_stack;
     struct cpu_info *info = get_cpu_info(), *bsp_info;
-    unsigned int initrdidx, num_parked = 0;
+    unsigned int num_parked = 0;
     struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
@@ -1042,7 +1042,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
     bool vm_init_done = false;
-    int ret;
+    int initrdidx, ret;
     struct ns16550_defaults ns16550 = {
         .data_bits = 8,
         .parity    = 'n',
@@ -2085,20 +2085,30 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? XENLOG_INFO : XENLOG_WARNING "Warning: ",
            cpu_has_nx ? "" : "not ");
 
-    initrdidx = find_first_bit(module_map, bi->nr_modules);
-    bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
-    bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
-    if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
-        printk(XENLOG_WARNING
-               "Multiple initrd candidates, picking module #%u\n",
-               initrdidx);
+    /*
+     * At this point all capabilities that consume boot modules should have
+     * claimed their boot modules. Find the first unclaimed boot module and
+     * claim it as the initrd ramdisk. Do a second search to see if there are
+     * any remaining unclaimed boot modules, and report them as unusued initrd
+     * candidates.
+     */
+    initrdidx = first_boot_module_index(bi, BOOTMOD_UNKNOWN);
+    if ( initrdidx >= 0 )
+    {
+        bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
+        bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+        if ( first_boot_module_index(bi, BOOTMOD_UNKNOWN) >= 0 )
+            printk(XENLOG_WARNING
+                   "Multiple initrd candidates, picking module #%u\n",
+                   initrdidx);
+    }
 
     /*
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
     dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
-                       initrdidx < bi->nr_modules ?
+                       (initrdidx >= 0 && initrdidx < bi->nr_modules) ?
                             bi->mods[initrdidx].mod : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811416.1224242 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFs-0006wF-LH; Sun, 06 Oct 2024 21:57:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811416.1224242; Sun, 06 Oct 2024 21:57: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 1sxZFs-0006tS-Bp; Sun, 06 Oct 2024 21:57:32 +0000
Received: by outflank-mailman (input) for mailman id 811416;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZCx-0007Zk-N8
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:31 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8fca659b-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:54:30 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251442732849.6483430442723;
 Sun, 6 Oct 2024 14:50:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8fca659b-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251444; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=UA0l215/6O/n3czwu2u4fUwznFePhivW8NOOszpzyp4vrhUg86OtZumlLWWz6MzCrR+yZhjHdWc8A+Tpfr1fvLimCrfdjeqrkXwJKck6r3/IiU6Th7s6WxR8kAH6nULeY7UOQxWq04X70a1OOIGmE7KrrOge6c82iUKgVjfryHw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251444; h=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=lFv35bSZ+DTHV5Gr3NY0x1keGRZxgvnnRPUaSaXb4uA=; 
	b=IHNicosX7CZxHz6jj1IcGGLGyY1mZ+5NyFsMxI2yFdrCxhcMAaqPUW1kbx3ItDc8Vdi5fpSAMRZEEJ/dBgiTtQ6MHe6/YnX5miHRbbSfp5habcBDwZLGep52CBX/UU4ju/3lmrj43RyHU+X/DDKSnwekM/B7PZ+5oark8SALcLY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251444;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=lFv35bSZ+DTHV5Gr3NY0x1keGRZxgvnnRPUaSaXb4uA=;
	b=RjG7c1OpcwWYakPT+LpzpGsbDcH1m1JUpb+dMY+37++R+XNTJ8NJTCmKPvW+Ntgh
	J1D77WAqkdq/lF/GFcAbhfCX8BxKjJHEeghnWiAY2PKDDs0PvJaf8gx+zNDuFAiT/i6
	i3oV4jccSgD/OAWvQtmFjJp7GZI3J0m05Gqo+ehI=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 33/44] x86/boot: convert initial_images to struct boot_module
Date: Sun,  6 Oct 2024 17:49:44 -0400
Message-Id: <20241006214956.24339-34-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The variable initial_images is used for tracking the boot modules passed in by
the boot loader. Convert to a struct boot_module and adjust the code that uses
it accordingly.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index d5916e85f68e..30a139074833 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -276,7 +276,7 @@ custom_param("acpi", parse_acpi_param);
 
 static const char *cmdline_cook(const char *p, const char *loader_name);
 
-static const module_t *__initdata initial_images;
+static const struct boot_module *__initdata initial_images;
 
 struct boot_info __initdata xen_boot_info;
 
@@ -336,8 +336,9 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = initial_images[i].mod_start;
-        unsigned long end = start + PFN_UP(initial_images[i].mod_end);
+        unsigned long start = initial_images[i].mod->mod_start;
+        unsigned long end = start +
+                            PFN_UP(initial_images[i].mod->mod_end);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -353,10 +354,12 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
+        uint64_t start =
+            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
 
         init_domheap_pages(start,
-                           start + PAGE_ALIGN(initial_images[i].mod_end));
+                           start +
+                           PAGE_ALIGN(initial_images[i].mod->mod_end));
     }
 
     bi->nr_modules = 0;
@@ -1380,7 +1383,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = bi->mods[0].mod;
+    initial_images = bi->mods;
 
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811417.1224257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZFw-0007oE-82; Sun, 06 Oct 2024 21:57:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811417.1224257; Sun, 06 Oct 2024 21:57: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 1sxZFw-0007nL-4B; Sun, 06 Oct 2024 21:57:36 +0000
Received: by outflank-mailman (input) for mailman id 811417;
 Sun, 06 Oct 2024 21: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZBh-00051E-1d
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:53:13 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6090b9fa-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:53:11 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251431236817.04787703317;
 Sun, 6 Oct 2024 14:50:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6090b9fa-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251433; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=lh3KVpki89otWeudeeH6H/BP6+EEsTgz29UixmIvZK3bmD+A6DB8m3RwBdWQBfD0FQuvqxhv1FwG0ltWi2p72FXxgFj+KLlvTplusBSft0Gc/7sGjYpY4nd4oYXabOEHYR0mNcyW2zB0VcFcF/apDbg7H4wEot5txFDJJlHqOS8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251433; h=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=+2Ke8GYb62UIWjB0JwnvDHRLpWBMoxBl4a1CfrQFltM=; 
	b=ZJx3+cenL9JK8a0gyApg0qIYO++s67R+A6jg2cO3jLc43JiFQc42ILx2UIzB/3gz2/zgwCZb7uHA+dcOO22i/Bz5v62BLnQiiAwG3cG9VMTG1IrBICEFaLXiC+cBlUiNoQbC86YO1SAe8OZ6VvxBOadWrCOk53p4Kq8KKnU8idU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251433;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=+2Ke8GYb62UIWjB0JwnvDHRLpWBMoxBl4a1CfrQFltM=;
	b=dXz6sbI74T6TmjMqwbyo0edtylcAQ1m5W7glp/4Ut07IYu/gKqsVxbwiqH8fMTh+
	QXmApr0nQCL3juUMcSxtbxKBL4dQ9p0REa7JEd4M6uMPM+qg0ZISkrgbq9pFlMaxdKE
	GdjJ6EIN3bmi56XcgKrEFTX2nYUCk/vSeds20n2g=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 23/44] x86/boot: remove module_map usage from xsm policy loading
Date: Sun,  6 Oct 2024 17:49:34 -0400
Message-Id: <20241006214956.24339-24-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c  | 2 +-
 xen/include/xsm/xsm.h | 9 +++------
 xen/xsm/xsm_core.c    | 6 ++----
 xen/xsm/xsm_policy.c  | 5 +----
 4 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 90acd4180441..b0946216ea3f 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1865,7 +1865,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
                                   RANGESETF_prettyprint_hex);
 
-    xsm_multiboot_init(module_map, bi);
+    xsm_multiboot_init(bi);
 
     /*
      * IOMMU-related ACPI table parsing may require some of the system domains
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 9e511ef8878c..791936e5285b 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -781,11 +781,9 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 #endif /* XSM_NO_WRAPPERS */
 
 #ifdef CONFIG_MULTIBOOT
-int xsm_multiboot_init(
-    unsigned long *module_map, const struct boot_info *bi);
+int xsm_multiboot_init(struct boot_info *bi);
 int xsm_multiboot_policy_init(
-    unsigned long *module_map, const struct boot_info *bi,
-    void **policy_buffer, size_t *policy_size);
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size);
 #endif
 
 #ifdef CONFIG_HAS_DEVICE_TREE
@@ -831,8 +829,7 @@ static const inline struct xsm_ops *silo_init(void)
 #include <xsm/dummy.h>
 
 #ifdef CONFIG_MULTIBOOT
-static inline int xsm_multiboot_init (
-    unsigned long *module_map, const struct boot_info *bi)
+static inline int xsm_multiboot_init(struct boot_info *bi)
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index 69d3800d4c39..0e74b96a4cc7 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -140,8 +140,7 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)
 }
 
 #ifdef CONFIG_MULTIBOOT
-int __init xsm_multiboot_init(
-    unsigned long *module_map, struct boot_info *bi)
+int __init xsm_multiboot_init(struct boot_info *bi)
 {
     int ret = 0;
     void *policy_buffer = NULL;
@@ -151,8 +150,7 @@ int __init xsm_multiboot_init(
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, bi, &policy_buffer,
-                                        &policy_size);
+        ret = xsm_multiboot_policy_init(bi, &policy_buffer, &policy_size);
         if ( ret )
         {
             bootstrap_map(NULL);
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 921bb254b9d1..a22367a62e93 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -32,8 +32,7 @@
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(
-    unsigned long *module_map, struct boot_info *bi,
-    void **policy_buffer, size_t *policy_size)
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size)
 {
     int i;
     int rc = 0;
@@ -42,7 +41,6 @@ int __init xsm_multiboot_policy_init(
 
     /*
      * Try all modules and see whichever could be the binary policy.
-     * Adjust module_map for the module that is the binary policy.
      */
     for ( i = bi->nr_modules-1; i >= 1; i-- )
     {
@@ -60,7 +58,6 @@ int __init xsm_multiboot_policy_init(
             printk("Policy len %#lx, start at %p.\n",
                    _policy_len,_policy_start);
 
-            __clear_bit(i, module_map);
             bi->mods[i].type = BOOTMOD_XSM_POLICY;
             break;
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811421.1224267 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZG1-0000EF-Kl; Sun, 06 Oct 2024 21:57:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811421.1224267; Sun, 06 Oct 2024 21:57: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 1sxZG1-0000Do-Fv; Sun, 06 Oct 2024 21:57:41 +0000
Received: by outflank-mailman (input) for mailman id 811421;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZAm-00051E-OF
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:52:16 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3ed2f10f-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:52:15 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172825142194853.559157816554375;
 Sun, 6 Oct 2024 14:50:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3ed2f10f-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251423; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=LLNk/4S0TYK3SgAjpsFQ+SoXPGn8bPocbqUn0KdQ/34RNWeoCb4cuQZZQk3qYZP9Gn6VonaXCa4nR+3iK8+CxB4pazWS3u+KBKyk+EEMAD3/p31VKkLTlIqlGLxjuERDg5Dge3GCykX4eGxOyMAbdlOpdVgl955fbsRA3T7huKg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251423; h=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=QE3lxVGKOuPftRvukhIadN4V91ghc85ZfnuZPHZLmIo=; 
	b=mJQz/cqEutJwHL/MYnPx7lLsDxEhaxyxVRNA28L/jPuxwF3Cl4ns0gSWJ/MOfU0QWCKjignlnA0sJoI0j/JYXzBewbqLiSf70UYG8PPDee7DZeUB5kUGOlblPIt5sxmPOwKPdCRR4WVy5hmD76FDhNCefC3asj5Ck9kLWXVwGHM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251423;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=QE3lxVGKOuPftRvukhIadN4V91ghc85ZfnuZPHZLmIo=;
	b=qUUxBvfdPWSDGtnAhWNDYtp4F90sB0unDG/87/VgH/qrEyInYs/+VYtBc+m1yags
	OPXcMhoLhrz9CoPmrTmcl3KIJQT1Fdi74ikWcFdJ5ma/xz1WVXJy0oEMd1CS0SRXLEf
	oVi6qucOarqEGVOzO1smJCuXSCJO0iLbzl3p0Gzg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 15/44] x86/boot: introduce boot module interator
Date: Sun,  6 Oct 2024 17:49:26 -0400
Message-Id: <20241006214956.24339-16-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Provide an iterator to go through boot module array searching based on type.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 2ee0d5ad6d72..c79678840d31 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -54,8 +54,24 @@ struct boot_info {
     struct boot_module mods[MAX_NR_BOOTMODS + 1];
 };
 
-#endif /* __XEN_X86_BOOTINFO_H__ */
+static inline int __init next_boot_module_index(
+    const struct boot_info *bi, enum bootmod_type t, int offset)
+{
+    int i;
+
+    for ( i = offset; i < bi->nr_modules; i++ )
+    {
+        if ( bi->mods[i].type == t )
+            return i;
+    }
+
+    return -1;
+}
 
+#define first_boot_module_index(bi, t)              \
+    next_boot_module_index(bi, t, 0)
+
+#endif /* __XEN_X86_BOOTINFO_H__ */
 /*
  * Local variables:
  * mode: C
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811422.1224273 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZG2-0000K3-7u; Sun, 06 Oct 2024 21:57:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811422.1224273; Sun, 06 Oct 2024 21:57: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 1sxZG1-0000Hd-Sm; Sun, 06 Oct 2024 21:57:41 +0000
Received: by outflank-mailman (input) for mailman id 811422;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZCp-0007Zk-Iq
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:23 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8aee2ea4-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:54:22 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251441612580.1270707109736;
 Sun, 6 Oct 2024 14:50:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8aee2ea4-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251443; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=fW3nCxrVxlJAABUPr8tk4DgH1UHsa2p7CIHqc/1BqtpXFFQ45MwsKwQI0vZWERsaZtCiuPOHaQoPh5DqU3zNyooPca61OCGwe+i/A5kxpEGmvs8m4XddwXEDu48c9R1OwyH06vOchMBKoDk0Cyuq7ZRXUMDm0pkmP7tqBfN4tTc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251443; h=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=8fXOlbbmg64oLi+2VKa9EtSyLufW2pfIFApT44ZRUyU=; 
	b=EftjvZP3TkSYHLBi5Uz7Kx//7SDTVvcOMvepmT1CFwiBZaiKIdZvmoaQEfH1jPEWpMEaa5T1FkK5qjst9wD6ySjzALCny+KovUxQP13BDXSWqsir2y4c5Z7RFqHg4MvKFPYvseqtqyFLsHQD9PKxhr9w4eT/ILIVlpvrJw1HEQo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251443;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=8fXOlbbmg64oLi+2VKa9EtSyLufW2pfIFApT44ZRUyU=;
	b=ncgvaws9KT3pnIYEjMeB2+66d8tCjs7I3FWF3/6UNZ5/hASim5W0wXAl+u2JjzwN
	XEMQ3aVeUGHeAOzd/x/2fKKg5J4vIh86TvWXzRdtBjWZGm6HgcZ0AwbsbMVVGDaGnEv
	FHkeOcZQBSgKAOn/z9/LPQQZrlZzG1TcdTCwYhP0=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 32/44] x86/boot: convert pvh_load_kernel to struct boot_module
Date: Sun,  6 Oct 2024 17:49:43 -0400
Message-Id: <20241006214956.24339-33-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes both the kernel and ramdisk parameters over to struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/hvm/dom0_build.c | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index beaa1d492077..a3fd5e762dc4 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -642,15 +642,14 @@ static bool __init check_and_adjust_load_address(
     return true;
 }
 
-static int __init pvh_load_kernel(struct domain *d, const module_t *image,
-                                  unsigned long image_headroom,
-                                  module_t *initrd, void *image_base,
-                                  const char *cmdline, paddr_t *entry,
-                                  paddr_t *start_info_addr)
+static int __init pvh_load_kernel(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, void *image_base,
+    const char *cmdline, paddr_t *entry, paddr_t *start_info_addr)
 {
-    void *image_start = image_base + image_headroom;
-    unsigned long image_len = image->mod_end;
-    unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+    void *image_start = image_base + image->headroom;
+    unsigned long image_len = image->size;
+    unsigned long initrd_len = initrd ? initrd->size : 0;
     struct elf_binary elf;
     struct elf_dom_parms parms;
     paddr_t last_addr;
@@ -725,7 +724,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, maddr_to_virt(initrd->start),
                                     initrd_len, v);
         if ( rc )
         {
@@ -736,9 +735,9 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
         mod.paddr = last_addr;
         mod.size = initrd_len;
         last_addr += ROUNDUP(initrd_len, elf_64bit(&elf) ? 8 : 4);
-        if ( initrd->string )
+        if ( initrd->cmdline )
         {
-            char *str = __va(initrd->string);
+            char *str = __va((unsigned long)initrd->cmdline);
             size_t len = strlen(str) + 1;
 
             rc = hvm_copy_to_guest_phys(last_addr, str, len, v);
@@ -1346,8 +1345,8 @@ int __init dom0_construct_pvh(
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image->mod, image->headroom, initrd->mod,
-                         bootstrap_map_bm(image), cmdline, &entry, &start_info);
+    rc = pvh_load_kernel(d, image, initrd, bootstrap_map_bm(image), cmdline,
+                         &entry, &start_info);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811428.1224287 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZG8-0001Gq-Dx; Sun, 06 Oct 2024 21:57:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811428.1224287; Sun, 06 Oct 2024 21:57: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 1sxZG8-0001G6-9W; Sun, 06 Oct 2024 21:57:48 +0000
Received: by outflank-mailman (input) for mailman id 811428;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZAF-00051E-TO
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:51:43 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2b57ecc8-842d-11ef-99a2-01e77a169b0f;
 Sun, 06 Oct 2024 23:51:42 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251417197888.0299636437695;
 Sun, 6 Oct 2024 14:50:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b57ecc8-842d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728251419; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=GB7ur/A9gXUq6rSTAzMhKxVJF6A9DsXJJ5AdLjSQo8OURi5mONX1ZgtDoAN30rLyKp2exHjYKuOWvtpuukY2A7z3QpRXLrW6o1FIQtXwJ8ob1352C2TwK9cAtD5Iv1GEHbn4LpY0yik5oYS+RoKj2MFGTWD6EDYQzXdri8/thJM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251419; h=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=AiMno3h27u/8NtsH+f5BaBaPNWe2g2HvJaNYtgBk2CY=; 
	b=VevxLj/VLygHMlZMlU1AJ2r/9FZ+JGNgYWxkrbFqBCtnBX7msrfZLKgs7LNA6nbYWAjE7dXaFvzi7GkNXI043hy4m5ltiQHiTsAjEymx3OxDlfYPG2oVJzwu6QYh+ce2lhEG2bOxbEP+VXUv9i4nhlHsCqg/phCp4ZNaMDnCxQA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251419;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=AiMno3h27u/8NtsH+f5BaBaPNWe2g2HvJaNYtgBk2CY=;
	b=QykZQC2TMTw0xS7zAsnTr+kV/cTI/WUHGySBVl1kr6GCWFwGDA/vhycqzJhLzt7h
	jJA4CD6YDu1Pr/nZ6ctxBGfWYy3REEJNyQtDKxr2F3tCuVaxiiyWg1NpM+DpB095M22
	Zeg/kjycUuoGFlSZwX1F5CR48eTWfULwIzcgJJLA=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v5 11/44] x86/boot: split bootstrap_map_addr() out of bootstrap_map()
Date: Sun,  6 Oct 2024 17:49:22 -0400
Message-Id: <20241006214956.24339-12-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

From: Andrew Cooper <andrew.cooper3@citrix.com>

Using an interface based on addresses directly, not modules.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/setup.h |  1 +
 xen/arch/x86/setup.c             | 19 +++++++++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 3d189521189d..213584b05fb2 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -36,6 +36,7 @@ extern struct boot_info xen_boot_info;
 
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
+void *bootstrap_map_addr(paddr_t start, paddr_t end);
 void *bootstrap_map(const module_t *mod);
 
 int remove_xen_ranges(struct rangeset *r);
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 161415a8e667..1cc7fcba094b 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -437,24 +437,22 @@ static void __init normalise_cpu_order(void)
  * Ensure a given physical memory range is present in the bootstrap mappings.
  * Use superpage mappings to ensure that pagetable memory needn't be allocated.
  */
-void *__init bootstrap_map(const module_t *mod)
+void *__init bootstrap_map_addr(paddr_t start, paddr_t end)
 {
     static unsigned long __initdata map_cur = BOOTSTRAP_MAP_BASE;
-    uint64_t start, end, mask = (1L << L2_PAGETABLE_SHIFT) - 1;
+    uint64_t mask = (1L << L2_PAGETABLE_SHIFT) - 1;
     void *ret;
 
     if ( system_state != SYS_STATE_early_boot )
-        return mod ? mfn_to_virt(mod->mod_start) : NULL;
+        return end ? maddr_to_virt(start) : NULL;
 
-    if ( !mod )
+    if ( !end )
     {
         destroy_xen_mappings(BOOTSTRAP_MAP_BASE, BOOTSTRAP_MAP_LIMIT);
         map_cur = BOOTSTRAP_MAP_BASE;
         return NULL;
     }
 
-    start = (uint64_t)mod->mod_start << PAGE_SHIFT;
-    end = start + mod->mod_end;
     if ( start >= end )
         return NULL;
 
@@ -470,6 +468,15 @@ void *__init bootstrap_map(const module_t *mod)
     return ret;
 }
 
+void *__init bootstrap_map(const module_t *mod)
+{
+    if ( !mod )
+        return bootstrap_map_addr(0, 0);
+
+    return bootstrap_map_addr(pfn_to_paddr(mod->mod_start),
+                              pfn_to_paddr(mod->mod_start) + mod->mod_end);
+}
+
 static void __init move_memory(
     uint64_t dst, uint64_t src, unsigned int size)
 {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811431.1224293 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZG9-0001Sb-AU; Sun, 06 Oct 2024 21:57:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811431.1224293; Sun, 06 Oct 2024 21:57: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 1sxZG9-0001Q6-0H; Sun, 06 Oct 2024 21:57:49 +0000
Received: by outflank-mailman (input) for mailman id 811431;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZ9c-0006RM-Oj
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:51:04 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 14032359-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:51:03 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 17282514112724.126986125020153;
 Sun, 6 Oct 2024 14:50:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 14032359-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251413; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=l+kcipkQHwlLBxkls/w+F07A6/TNidxopflU4/XNpdjLLfIemUDQzJdxXC56L/QZ1IpHnnsYvBNBTCvYQvX1bFxUpLt0+kTHrllOm5CQgvs0nSInWU4awJkYTPt4p2NRGC0CkdRV6S7ftEGt/SP6BMO4+bDiYqeCs/0fAAs27aU=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251413; h=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=BE8TyVW42746XaPgeBDvj85Fi23Wy8nFIdm1DUR4nhI=; 
	b=TQUQ1Zh9+7T4eZ1apxvDhqiKVcRwagwqe9Q9aLgN85rY/XMpPirX/QyNKeX64Dmt1quHueWRSeowfV8+LwtI3ApgSTJKldPF6w+Ji5T1xoNW2XHao+7fPTGhOh048fqzwHZZ8KIx7SyZm+P4aqiOwRzGK15oWU78HZNQuYyTwck=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251413;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=BE8TyVW42746XaPgeBDvj85Fi23Wy8nFIdm1DUR4nhI=;
	b=ERdnp+ChYfN0FQoigzs12OEgJLEXohNlZFsiZEgqcXjipzCuiWaSEMecjuBbXqKS
	wKgyue6cHU81yvA7jL7SLKxOE2vAsDGD/SPaiW89I+HekUm6uhw1Sa9ba9nFPFM6siZ
	iHp31iEcEBXHyX5pV7Fp8C5VCH/DSKv3zyla8iOc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 06/44] x86/boot: convert consider_modules to struct boot_module
Date: Sun,  6 Oct 2024 17:49:17 -0400
Message-Id: <20241006214956.24339-7-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To start transitioning consider_modules() over to struct boot_module, begin
with taking the array of struct boot_modules but use the temporary struct
element mod.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 68eb4c848ae8..ba9f110d98c6 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -629,7 +629,7 @@ static void __init noinline move_xen(void)
 #undef BOOTSTRAP_MAP_LIMIT
 
 static uint64_t __init consider_modules(
-    uint64_t s, uint64_t e, uint32_t size, const module_t *mod,
+    uint64_t s, uint64_t e, uint32_t size, const struct boot_module mods[],
     unsigned int nr_mods, unsigned int this_mod)
 {
     unsigned int i;
@@ -639,20 +639,20 @@ static uint64_t __init consider_modules(
 
     for ( i = 0; i < nr_mods ; ++i )
     {
-        uint64_t start = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
-        uint64_t end = start + PAGE_ALIGN(mod[i].mod_end);
+        uint64_t start = (uint64_t)pfn_to_paddr(mods[i].mod->mod_start);
+        uint64_t end = start + PAGE_ALIGN(mods[i].mod->mod_end);
 
         if ( i == this_mod )
             continue;
 
         if ( s < end && start < e )
         {
-            end = consider_modules(end, e, size, mod + i + 1,
+            end = consider_modules(end, e, size, &mods[i + 1],
                                    nr_mods - i - 1, this_mod - i - 1);
             if ( end )
                 return end;
 
-            return consider_modules(s, start, size, mod + i + 1,
+            return consider_modules(s, start, size, &mods[i + 1],
                                     nr_mods - i - 1, this_mod - i - 1);
         }
     }
@@ -1428,7 +1428,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules. */
             end = consider_modules(s, e, reloc_size + mask,
-                                   mod, bi->nr_modules, -1);
+                                   bi->mods, bi->nr_modules, -1);
             end &= ~mask;
         }
         else
@@ -1463,7 +1463,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
-            end = consider_modules(s, e, size, mod,
+            end = consider_modules(s, e, size, bi->mods,
                                    bi->nr_modules + relocated, j);
 
             if ( highmem_start && end > highmem_start )
@@ -1490,7 +1490,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         while ( !kexec_crash_area.start )
         {
             /* Don't overlap with modules (or Xen itself). */
-            e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), mod,
+            e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), bi->mods,
                                  bi->nr_modules + relocated, -1);
             if ( s >= e )
                 break;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Sun Oct 06 21:57:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 06 Oct 2024 21:57:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811434.1224307 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxZGF-0002Mh-Gz; Sun, 06 Oct 2024 21:57:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811434.1224307; Sun, 06 Oct 2024 21:57: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 1sxZGF-0002MO-Ao; Sun, 06 Oct 2024 21:57:55 +0000
Received: by outflank-mailman (input) for mailman id 811434;
 Sun, 06 Oct 2024 21:57: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=qR5E=RC=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sxZD4-0007Zk-PS
 for xen-devel@lists.xenproject.org; Sun, 06 Oct 2024 21:54:38 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9404fcf2-842d-11ef-a0bb-8be0dac302b0;
 Sun, 06 Oct 2024 23:54:37 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728251443868264.5790216144809;
 Sun, 6 Oct 2024 14:50:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9404fcf2-842d-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728251445; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=YjFRi6RSin7RS7URyzfSCUHHkzSAXGNAIvBhq+4Or4YqrRVxOycfoVFRNq3BKrhYyLVo4MlNsBlrzKRlGFzyGpl8ct2UugN2RAsiJ6R2mBFXHt31L6mXHI7iqVSPmwHdNf+YBtNE2+Fy78DWd9LrvxSPGObXu9MOgB9ZHt64Qh8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728251445; h=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=3hkZxM5JKY193qyhBp7nRAR8syZAmf01uqr3bX0ldPM=; 
	b=XDmtwOkTJPGnIVDuA1acDUu0BT/5MWFW8n4jhUznqfIGiSZEx0JNOftK7hI0KkeOrVIKFHuecDpWY4qMEC+pnDzh0KM70LW9n6s9tV0Dyup/0Ij7MnWNVEE5ziPjDuhgbTttwNFHOOc6WZHIV4ZGEiG5iBrHWDUATL33c/HnsWo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728251445;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=3hkZxM5JKY193qyhBp7nRAR8syZAmf01uqr3bX0ldPM=;
	b=CDdRbygm93UaItfWJV6ST87dwiZxBwGRrW/2tTQAH5J+D9lyHW1xGEcZc9w4Q+7u
	Nb1lA8vaX58bvTFb32cnIX8CwLxBMccLi/3KAW6rYmd34BIwM+TjnvjfP9W4PEpZbVs
	gnSZU58pkDzQdlouA5pnyU/pgE96Z0x17nrVfdME=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v5 34/44] x86/boot: drop the use of initial_images unit global
Date: Sun,  6 Oct 2024 17:49:45 -0400
Message-Id: <20241006214956.24339-35-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 30a139074833..b3b6e6f38622 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -276,8 +276,6 @@ custom_param("acpi", parse_acpi_param);
 
 static const char *cmdline_cook(const char *p, const char *loader_name);
 
-static const struct boot_module *__initdata initial_images;
-
 struct boot_info __initdata xen_boot_info;
 
 static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
@@ -336,9 +334,9 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = initial_images[i].mod->mod_start;
+        unsigned long start = bi->mods[i].mod->mod_start;
         unsigned long end = start +
-                            PFN_UP(initial_images[i].mod->mod_end);
+                            PFN_UP(bi->mods[i].mod->mod_end);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -355,15 +353,14 @@ void __init discard_initial_images(void)
     for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t start =
-            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
+            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
 
         init_domheap_pages(start,
                            start +
-                           PAGE_ALIGN(initial_images[i].mod->mod_end));
+                           PAGE_ALIGN(bi->mods[i].mod->mod_end));
     }
 
     bi->nr_modules = 0;
-    initial_images = NULL;
 }
 
 static void __init init_idle_domain(void)
@@ -1383,8 +1380,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = bi->mods;
-
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
         if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 03:50:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 03:50:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811636.1224316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxelP-0005or-8P; Mon, 07 Oct 2024 03:50:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811636.1224316; Mon, 07 Oct 2024 03:50: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 1sxelP-0005ok-5A; Mon, 07 Oct 2024 03:50:27 +0000
Received: by outflank-mailman (input) for mailman id 811636;
 Mon, 07 Oct 2024 03:50: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 1sxelN-0005j8-CW; Mon, 07 Oct 2024 03:50: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 1sxelM-0006Ss-Ud; Mon, 07 Oct 2024 03:50: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 1sxelM-0007wA-9Z; Mon, 07 Oct 2024 03:50:24 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxelM-0000Pg-8F; Mon, 07 Oct 2024 03:50: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=GRDBZNpfaYEMddGmerHyHQGVgtwS6QO8qtFoL4Ia5oQ=; b=Wek6nYjRFE/G07a2QYzZ4jQTyS
	JnZBGIXkwqvYes1gFACP20iasLh2Yvxna2c9YGVhDWd2Xmj4L9dWNo5Mv5NNc/8Ye71kGp8ic0ukN
	OQThNutiOys7TJnHtoV+qWonPFD3a/XvbT8CyXstPgQKI6rIFU27r5W0YkGujQld0tlY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187988-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187988: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-xl-qcow2:xen-boot:fail:heisenbug
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=b5ab62b3c0050612c7f9b0b4baeb44ebab42775a
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 07 Oct 2024 03:50:24 +0000

flight 187988 qemu-mainline real [real]
flight 187990 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187988/
http://logs.test-lab.xenproject.org/osstest/logs/187990/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-libvirt-vhd 22 leak-check/check         fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-qcow2     8 xen-boot            fail pass in 187990-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-qcow2   14 migrate-support-check fail in 187990 never pass
 test-armhf-armhf-xl-qcow2 15 saverestore-support-check fail in 187990 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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          15 migrate-support-check        fail   never pass
 test-arm64-arm64-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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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-arndale  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

version targeted for testing:
 qemuu                b5ab62b3c0050612c7f9b0b4baeb44ebab42775a
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   20 days
Failing since        187731  2024-09-17 13:11:20 Z   19 days   33 attempts
Testing same since   187988  2024-10-06 17:41:20 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 7931 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 07:03:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 07:03:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811656.1224335 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxhmA-0003XV-Df; Mon, 07 Oct 2024 07:03:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811656.1224335; Mon, 07 Oct 2024 07:03: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 1sxhmA-0003XO-BB; Mon, 07 Oct 2024 07:03:26 +0000
Received: by outflank-mailman (input) for mailman id 811656;
 Mon, 07 Oct 2024 07: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxhm9-0003XI-J2
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 07:03: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 3e10b45a-847a-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 09:03:23 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9957588566so73924266b.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 00:03:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5bbda0sm341411866b.27.2024.10.07.00.03.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 00:03:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3e10b45a-847a-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728284603; x=1728889403; 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=EbrTWmQGNrVuRTm0iS5Kxl5J0pmLTTgfvczD5zPth3A=;
        b=PPGuaroY0Pcull3m6fhU9Fg/DR4lLkr4v/4zG8ktag+a4UHRgXVeEKT+FhUpa8IhqF
         FzbuVAVj+tVgUQaMXmZXRUVdQx/gy8jgkikAS0zPbTGorG9jPkIDkd9CQTFfYg2Q/pJp
         non+8Df0ljnLZiK9DEGB2pnzaZA5cHWhUyfm2tVul7jO16fjZp52B73uwi9YFeDhGlls
         loLJqJnmwVqnnoNPkds4vH9PtvOGtV5Lp/98SsnbiDm21QzLjczgIjwvLouNgLv2R/CR
         PKw26SfDsZHGhZwLKmM+ao101HLENUXyRVoI5nxlUpURooPeYlUTERxzYwETbC9NIaxg
         xi2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728284603; x=1728889403;
        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=EbrTWmQGNrVuRTm0iS5Kxl5J0pmLTTgfvczD5zPth3A=;
        b=Uv8d9MCloPawaAbPUDXViebYbafChhc7fkXjw56tlnObz2f+BaEFiJ6eS9hOSW12ew
         Cu3ChMGch3MA5PsuO0A2GIm/RAxaF51FuYWFmwxkzcOttHzAY4X5oUqj8a7nQ7Qy/UT8
         2BsBzEfACoOu5DxsypbkYvK53X2fkJYBidAabsOSgHGK/35gJUBV+/dV+N6flXdA1z/X
         4k83wSXIi+zlWq7jjJFPAWrRUmKrrMrQxe+pztLztXa19dV+jPP5R/0kcxCkmkQuy8C6
         XYjjaQwAwUPglIdkmEiVAmXW/eIUdx0zDt/76nFFFdQim4W9eNemL9YVX82TlGEbFylH
         9ajw==
X-Forwarded-Encrypted: i=1; AJvYcCUgYTYibh3asKVpz6kVGMSbU2DNNJh2NE3AVCn09+s/eXab/+IPNQ8mOf3qG1YhPhes4UZZuhp8BpY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwDAdPFELUD+UACRrtdfVgUiSNuOM/e4tRyTyf8OHr21RR/aY5C
	d+LOPEStVlTa5nnfTjtt2iMbtGke8r7acSJhdRmCvq/Rys3wOJZv9gHNGlVnEg==
X-Google-Smtp-Source: AGHT+IHaLJADnJCa9h7F5hjdgGyuMNn2fNLZtpz4IF4FfvMRjb0vcuKOLgY4cBXdsHLxuQI56mjMXQ==
X-Received: by 2002:a17:907:2d8a:b0:a99:53f5:3f33 with SMTP id a640c23a62f3a-a9953f5429cmr300316666b.33.1728284602909;
        Mon, 07 Oct 2024 00:03:22 -0700 (PDT)
Message-ID: <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com>
Date: Mon, 7 Oct 2024 09:03:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>, xen-devel@lists.xenproject.org
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com>
 <e7e5200e-4577-4f67-bb3e-6f71086fc663@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: <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05.10.2024 15:21, Andrew Cooper wrote:
> On 05/10/2024 9:02 am, Frediano Ziglio wrote:
>> --- a/xen/arch/x86/boot/Makefile
>> +++ b/xen/arch/x86/boot/Makefile
>> @@ -1,6 +1,6 @@
>> -obj-bin-y += head.o cbundle.o
>> +obj-bin-y += head.o cbundle.o reloc-trampoline.x64.o
> 
> Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch wants
> introducing here.
> 
> That said, x64 is the one name for 64bit that we reliably don't use. 
> Also...
> 
>> -head-bin-objs := cmdline.o reloc.o
>> +head-bin-objs := cmdline.o reloc.o reloc-trampoline.o
> 
> ... head-bin-objs isn't really correct now seeing as they're not
> binaries in head.S.  Also ...
> 
>>  nocov-y   += $(head-bin-objs)
>>  noubsan-y += $(head-bin-objs)
> 
> The no$(foo)'s needs extending to the 64bit objects too.  They're also
> used early enough to explode.
> 
> In Xen, 64bit objects are the norm, and it's 32bit ones which are the
> exception, so how about we special case *.i386.o instead.  Then
> 
> obj32 := cmdline.i386.o
> obj32 += reloc.i386.o
> obj32 += reloc-trampoline.i386.o

I'd like to advocate for ix86 or i686. i386 gives a wrong impression imo.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 07:21:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 07:21:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811663.1224347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxi41-0007om-Up; Mon, 07 Oct 2024 07:21:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811663.1224347; Mon, 07 Oct 2024 07:21: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 1sxi41-0007of-QY; Mon, 07 Oct 2024 07:21:53 +0000
Received: by outflank-mailman (input) for mailman id 811663;
 Mon, 07 Oct 2024 07:21: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxi40-0007oZ-OY
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 07:21:52 +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 d27360ab-847c-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 09:21:51 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a99388e3009so227587966b.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 00:21:51 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994ede6181sm154866566b.147.2024.10.07.00.21.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 00:21:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d27360ab-847c-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728285711; x=1728890511; 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=fqmetPXZ2QZ9p6bROm9aPqZWvjS4bFoBafKVfkVBfjA=;
        b=JS+tCwmSUMN81dzHvVHukPSHOSit0Aa37pAZc19sgi0CvsQfisCSYk+ESJY5AhhUG1
         Z3yjrXzrh8q+aM4+nfRnfvCMSTu7KoGL9pSUjXwtQirGKcYY9l2vFD9D+512WVLUm/32
         0T55sZq4U8Pi3GCqx+IAiMqK3kueJOAg1kTjyfoYYCrpt6S2F55QA+d8cktVsfmJkvAe
         f2Tvimdt01AABUAyzH5Pq1eDE2WA2V5c4/3oSjX1jD14hGouBkWSG1SOtrP/VF3iSg6e
         b3TlT6AMrGNtND3/YaFKkN/WihSkNl9MOUCchy1i6+8m5/Y0gKgJlpRy5wJwFmOGEIt4
         RLVg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728285711; x=1728890511;
        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=fqmetPXZ2QZ9p6bROm9aPqZWvjS4bFoBafKVfkVBfjA=;
        b=nHq7nZiiJTzuHpCoTqLOjAdhSjQ4u6JjArst274YypJbWY36ToRql08LeLdBHzjc8N
         MNxc3rqnGa8kLFUrtG5WHw+Ct9Y7jo7QKcH6u7UFBGsrDisu98iSd9fvvrXIi6QBFF+v
         6TOKlVCept3hZ0HtvywDV3XP+DMjBeqyrR4j42skeeZFJjtI1hkLBrpsKtPMVrIeoGWJ
         /kaVv2B5dkgGwtJfiqppWf+VVp7myOoGcctGBgVG3XD13vUgmODYB4N9BNP0lY8fXRVI
         TK6QnU6JI0ZNdKd3fuYDFSR5TaPyEiW7O3asLIsndw3FJAIifzzRYBjZPn8i1Qb1bmIT
         ODOQ==
X-Forwarded-Encrypted: i=1; AJvYcCVOxWu8bOiGEUDRCJ+g2rGBxb/qPaHEYTmf73m2Bkzb2fWhLaoZ3cGxaOm5chsEyMyacpnCXj8IE6M=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw1mk/JGCzjrg/ygWVCZqLZchRSBNsUSlSvr051hAJFOPZ3N1LZ
	kNsHyBgAxUWWkQtGRD9ZhP4kQqZ4SC+8bmF+c6469BlwbVX10gOw8p7uXkHZ4tZT8fDrya+rN0Q
	=
X-Google-Smtp-Source: AGHT+IF/JGxnXw6HxO7rE1qL/YIQIV7biOwjaFZZOuTdfCVrgaS/+1+Rkb/zQBbHaEOzcaDF6/Fvrw==
X-Received: by 2002:a17:907:3605:b0:a93:a664:a257 with SMTP id a640c23a62f3a-a991c022d3fmr1031188966b.61.1728285710798;
        Mon, 07 Oct 2024 00:21:50 -0700 (PDT)
Message-ID: <5d85907a-3c37-40ad-b1b6-833a01400423@suse.com>
Date: Mon, 7 Oct 2024 09:21:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Further simplify CR4 handling in
 dom0_construct_pv()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002232008.1988682-1-andrew.cooper3@citrix.com>
 <7dbd7fae-e2e8-4508-a012-cf9b719c68f1@suse.com>
 <5357e6f1-6f3e-4ed4-85f9-828ffb0272e4@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: <5357e6f1-6f3e-4ed4-85f9-828ffb0272e4@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04.10.2024 20:49, Andrew Cooper wrote:
> On 04/10/2024 7:52 am, Jan Beulich wrote:
>> On 03.10.2024 01:20, Andrew Cooper wrote:
>>> The logic would be more robust disabling SMAP based on its precense in CR4,
>>> rather than SMAP's accociation with a synthetic feature.
>> It's hard to tell what's more robust without knowing what future changes
>> there might be. In particular ...
>>
>>> @@ -1064,19 +1065,19 @@ int __init dom0_construct_pv(struct domain *d,
>>>       * prevents us needing to write construct_dom0() in terms of
>>>       * copy_{to,from}_user().
>>>       */
>>> -    if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
>>> +    if ( cr4 & X86_CR4_SMAP )
>> ... with this adjustment ...
>>
>>>      {
>>>          if ( IS_ENABLED(CONFIG_PV32) )
>>>              cr4_pv32_mask &= ~X86_CR4_SMAP;
>> ... this update of a global no longer occurs. Playing games with CR4
>> elsewhere might run into issues with this lack of updating.
> 
> We don't know the future, but I'm confused by your reasoning here. 
> Right now there's an expectation/assumption that FEAT_XEN_SMAP == CR4.SMAP.
> 
> In fact, the logic in staging right now is wonky if FEAT_XEN_SMAP=1 but
> CR4.SMAP=1.  In this case, we'll do nothing on the way in, and then
> activate SMAP on the way out.

I assume you meant "but CR4.SMAP=0". In that case yes, the logic here would
(kind of as a side effect) correct the wrong combination of state.

> construct_dom0() will definitely crash if SMAP is active.  So looking at
> CR4 is strictly better than accidentally falling into a FEAT_XEN_SMAP=0
> but CR4.SMAP=1 case.

It's better when taking one possible perspective, yes. Otoh CR4.SMAP=1 when
FEAT_XEN_SMAP=0 is a bug, and hence deserves being noticed (if nothing
else then by Xen crashing).

> Needing to play with the global cr4_pv32_mask is a consequence of
> choosing to disabling SMAP, rather than using STAC and/or rewriting
> using copy_*_user().  If you want to avoid playing with cr4_pv32_mask,
> we'll need to revisit this decision.
> 
> While the APs are active/working at this point in boot, they're not
> running guests (32bit PV or otherwise), so alterations to cr4_pv32_mask
> don't really matter.

I didn't really think of APs, but of the BSP itself.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 07:49:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 07:49:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811672.1224356 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxiUm-0000R1-QL; Mon, 07 Oct 2024 07:49:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811672.1224356; Mon, 07 Oct 2024 07:49: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 1sxiUm-0000Qu-M0; Mon, 07 Oct 2024 07:49:32 +0000
Received: by outflank-mailman (input) for mailman id 811672;
 Mon, 07 Oct 2024 07:49: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 1sxiUl-0000Qk-3H; Mon, 07 Oct 2024 07:49: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 1sxiUk-0002gX-Pa; Mon, 07 Oct 2024 07:49: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 1sxiUk-0000y2-Av; Mon, 07 Oct 2024 07:49:30 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxiUk-000328-AK; Mon, 07 Oct 2024 07:49: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=G0iJQ8TTI9RCz3iqxuVq8DNegsgRGfginz4zvRRNg1A=; b=zRfskFc9YPzm1soL9qRsg4+iiz
	ErwSW0FNXO+eCuboDBzTTygrpT0W7hDBdEN+BBJ8NB2IUYYxmnYu+RgvMK7PG2Ms4TnVMG1XQzZEv
	LinQOrHqqk+PSTETonk+c7UtXYG6Gl/Cw2NV5aZzwqvybGxDzfYaCWYuuVQv6Rq/57OU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187989-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187989: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install: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: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-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-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-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-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-amd64-amd64-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-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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=2a130b7e1fcdd83633c4aa70998c314d7c38b476
X-Osstest-Versions-That:
    linux=8f602276d3902642fdc3429b548d73c745446601
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 07 Oct 2024 07:49:30 +0000

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

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 187995-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187985
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187985
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187985
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187985
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187985
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187985
 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-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-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-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-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-amd64-amd64-libvirt-qcow2 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-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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                2a130b7e1fcdd83633c4aa70998c314d7c38b476
baseline version:
 linux                8f602276d3902642fdc3429b548d73c745446601

Last test of basis   187985  2024-10-06 00:44:32 Z    1 days
Testing same since   187989  2024-10-06 19:42:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Aaron Thompson <dev@aaront.org>
  Anaswara T Rajan <anaswaratrajan@gmail.com>
  Armin Wolf <W_Armin@gmx.de>
  Crag Wang <crag_wang@dell.com>
  Fuad Tabba <tabba@google.com>
  Hans de Goede <hdegoede@redhat.com>
  Jason A. Donenfeld <Jason@zx2c4.com>
  Jithu Joseph <jithu.joseph@intel.com>
  Joey Gouly <joey.gouly@arm.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Marc Zyngier <maz@kernel.org>
  Mark Brown <broonie@kernel.org>
  Masahiro Yamada <masahiroy@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Oliver Upton <oliver.upton@linux.dev>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Menzel <pmenzel@molgen.mpg.de> # Dell XPS 13 9360/0596KF
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Rob Herring (Arm) <robh@kernel.org>
  Sami Tolvanen <samitolvanen@google.com>
  Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  Todd Brandt <todd.e.brandt@intel.com>
  Vincent Donnefort <vdonnefort@google.com>
  Xu Yang <xu.yang_2@nxp.com>
  Zach Wade <zachwade.k@gmail.com>
  Zenghui Yu <yuzenghui@huawei.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                 fail    
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   8f602276d390..2a130b7e1fcd  2a130b7e1fcdd83633c4aa70998c314d7c38b476 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 08:00:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 08:00:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811688.1224366 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxifk-0008Vp-5a; Mon, 07 Oct 2024 08:00:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811688.1224366; Mon, 07 Oct 2024 08: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 1sxifk-0008Vi-1g; Mon, 07 Oct 2024 08:00:52 +0000
Received: by outflank-mailman (input) for mailman id 811688;
 Mon, 07 Oct 2024 08:00: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=Yeu4=RD=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1sxifi-0008VM-Ej
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 08:00:50 +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 42a583e4-8482-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 10:00:47 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a99422929b2so196945766b.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 01:00:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42a583e4-8482-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728288046; x=1728892846; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=Zb3Tz2q+S0CeChgY/3c261d0yspotmiJkNTNQnkBuVk=;
        b=R6GK1d6FREQ7IHYEh3+WXy5YuhrMAQdTGXRBHyy7d7pkx2vkfrtyO2UBqPDNDc8fXf
         ZSKI6Iu8npd8Lk5F20EKxAvpGol9GU6ozycx8kfQllhRl82MpK7CDua7UAtiJCSidw52
         743tFLgNnHz2d573d5puWbcfbR7ogCZSYvtEk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728288046; x=1728892846;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Zb3Tz2q+S0CeChgY/3c261d0yspotmiJkNTNQnkBuVk=;
        b=bGZgcVanjoRqDE0HU7RWvmbzP+l+NUgpkKTUFziNnBYz0wuDe/mZHeQ9U9bo6Bkagq
         2WepXNjkAoe6v83SdXAPm1Z9e8FGU1mBweSM3qNAJuLuB7eMsL1a5mTM4M9ta308OL91
         lcwpJ6stDptMcULez9tRGvWdwKxwAGwv0Orhe+aeErcjN7TqLm955gEQFZM7wI+ws+/f
         eeymn4ZPafLzyj5ERZrMk8FMeQQc/S/WIWdZXUckHnSFMK2D2xsgJtcKDqb6jEgwRpDA
         xl6T6ZxDKaXmsgL6YPuzUy7G0xBPCC4obawzlWeRg83/IFsFN6owIAjXhZEFvhOAhAnZ
         HypQ==
X-Gm-Message-State: AOJu0Yyn0/5vk5HxRyX6XHwbAtanuks0WD7l/SI5jKYalxbnnJoN7yU/
	iQnYQd+y7yi/qt/rZ7yctwdk92J8aPn8a67vRB4pzxQqLuDP82L94FaEtlSLHGFkpGOFOfu1ADt
	wlsi4kPnXvOvuGuckHdXBXquArd91sjRTZpeC9vtEN8Xgg4rG
X-Google-Smtp-Source: AGHT+IHuIJGQL84GgiPJUrQ3k8dlGluWEzDJsy5zkLgg6eYx05f4XTVlsT9mOtmbRs6I0PJbQlPNRqblf2eHM7yCZio=
X-Received: by 2002:a17:907:97d5:b0:a99:3eae:87f3 with SMTP id
 a640c23a62f3a-a993eae8b86mr697115166b.47.1728288045692; Mon, 07 Oct 2024
 01:00:45 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Mon, 7 Oct 2024 09:00:00 +0100
Message-ID: <CAO-mL=yKtUmMZNgAbB_cE+P2WrhyHKDN4LqrKtqVHZEKQc=jZw@mail.gmail.com>
Subject: XEN PROJECT MEETUP: TALKS ANNOUNCED!
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Cc: "committers @ xenproject . org" <committers@xenproject.org>
Content-Type: multipart/related; boundary="00000000000008cbe60623de6b14"

--00000000000008cbe60623de6b14
Content-Type: multipart/alternative; boundary="00000000000008cbe50623de6b13"

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

[image: Xen Project Meetup (1).png]
<https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8AP+Haft0+RwozJMKojY5lVs=
7waL-xDY/>*Register
using the link here*
<https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8AP+Haft0+RwozJMKojY5lVs=
7waL-xDY/>

*Agenda*

*Talk:* *The journey towards using Xen in embedded systems*
*Speaker: **Julien Grall*
*About:* *Julien Grall is a kernel/hypervisor engineer in the Amazon EC2
team. Julien has been involved in Xen community since 2012. Today he is a
Xen Project committer, and he maintains Xen on Arm.*

*Talk:* *Xen on the Arm=C2=AE RD-1-AE*
*Speaker: **Luca Fancellu*
*About:* *Luca Fancellu is a Staff Software Engineer in the software
division at Arm, working on the latest designed Automotive platforms,
contributing on the Xen Hypervisor from a couple of years. Luca has
experience in safety-critical and embedded software for the Automotive
sector, you will probably find most of the products he worked on running on
wheels right now.*

See you there!

Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>

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

<div dir=3D"ltr"><div><br></div><div><br></div><div><br></div><img src=3D"c=
id:ii_m1t87xjg1" alt=3D"Xen Project Meetup (1).png" width=3D"362" height=3D=
"362" style=3D"margin-right: 0px;"><div><div><a href=3D"https://cryptpad.fr=
/form/#/2/form/view/I6uugZHhi6E8AP+Haft0+RwozJMKojY5lVs7waL-xDY/" target=3D=
"_blank"></a><a href=3D"https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8=
AP+Haft0+RwozJMKojY5lVs7waL-xDY/" target=3D"_blank"><b>Register using the l=
ink here</b></a><br></div><div><b><br></b></div><div><b><u>Agenda</u></b></=
div><div><br></div><div><div><b>Talk:</b>=C2=A0<i>The journey towards using=
 Xen in embedded systems</i></div><div><b>Speaker:=C2=A0</b><i>Julien Grall=
</i></div><div><b>About:</b>=C2=A0<i>Julien Grall is a kernel/hypervisor en=
gineer in the Amazon EC2 team. Julien has been involved in Xen community si=
nce 2012. Today he is a Xen Project committer, and he maintains Xen on Arm.=
</i></div></div><div><br></div><div><b>Talk:</b> <i>Xen on the Arm=C2=AE RD=
-1-AE</i></div><div><b>Speaker: </b><i>Luca Fancellu</i></div><div><b>About=
:</b> <i>Luca Fancellu is a Staff Software Engineer in the software divisio=
n at Arm, working on the latest designed Automotive platforms, contributing=
 on the Xen Hypervisor from a couple of years. Luca has experience in safet=
y-critical and embedded software for the Automotive sector, you will probab=
ly find most of the products he worked on running on wheels right now.</i><=
/div><div><br></div><div>See you there!=C2=A0</div><div><br></div><div><div=
 dir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><=
div dir=3D"ltr"><div>Kelly Choi<br></div><div><div style=3D"color:rgb(136,1=
36,136)">Community Manager</div><div style=3D"color:rgb(136,136,136)"><a hr=
ef=3D"https://xenproject.org/" target=3D"_blank">Xen Project</a><br></div><=
/div></div></div></div></div></div>

--00000000000008cbe50623de6b13--
--00000000000008cbe60623de6b14
Content-Type: image/png; name="Xen Project Meetup (1).png"
Content-Disposition: inline; filename="Xen Project Meetup (1).png"
Content-Transfer-Encoding: base64
Content-ID: <ii_m1t87xjg1>
X-Attachment-Id: ii_m1t87xjg1

iVBORw0KGgoAAAANSUhEUgAABLAAAASwCAYAAADrIbPPAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAE
9mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczpt
ZXRhLyc+CiAgICAgICAgPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5
LzAyLzIyLXJkZi1zeW50YXgtbnMjJz4KCiAgICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv
dXQ9JycKICAgICAgICB4bWxuczpkYz0naHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8n
PgogICAgICAgIDxkYzp0aXRsZT4KICAgICAgICA8cmRmOkFsdD4KICAgICAgICA8cmRmOmxpIHht
bDpsYW5nPSd4LWRlZmF1bHQnPlhlbiBQcm9qZWN0IE1lZXR1cCAtIDE8L3JkZjpsaT4KICAgICAg
ICA8L3JkZjpBbHQ+CiAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICA8L3JkZjpEZXNjcmlwdGlv
bj4KCiAgICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICAgICAgICB4bWxuczpB
dHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogICAgICAgIDxBdHRy
aWI6QWRzPgogICAgICAgIDxyZGY6U2VxPgogICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0n
UmVzb3VyY2UnPgogICAgICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEwLTAzPC9BdHRyaWI6Q3Jl
YXRlZD4KICAgICAgICA8QXR0cmliOkV4dElkPjM5ZjJiMDdhLTY4MzAtNGYyNi04N2JkLWRlNjc4
YTFiYTA2MDwvQXR0cmliOkV4dElkPgogICAgICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1
ODA8L0F0dHJpYjpGYklkPgogICAgICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3Vj
aFR5cGU+CiAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgPC9yZGY6U2VxPgogICAgICAgIDwvQXR0
cmliOkFkcz4KICAgICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KCiAgICAgICAgPHJkZjpEZXNjcmlw
dGlvbiByZGY6YWJvdXQ9JycKICAgICAgICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20v
cGRmLzEuMy8nPgogICAgICAgIDxwZGY6QXV0aG9yPktlbGx5IENob2k8L3BkZjpBdXRob3I+CiAg
ICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CgogICAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFi
b3V0PScnCiAgICAgICAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4K
ICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcik8L3htcDpDcmVhdG9yVG9v
bD4KICAgICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgICA8L3JkZjpSREY+
CiAgICAgICAgPC94OnhtcG1ldGE+KKRa6gAFRl9JREFUeJzs2DEBACAMwDDAv+fhgJceiYLe3TMz
CwAAAACizu8AAAAAAHgxsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgz
sAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOw
AAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AA
AAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAA
AABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAA
AEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAA
SDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABI
uwAAAP//7N3Zc5xndt/x7/OuvXdjJ8AFoihRa0myNGOPy3FSSezkwr7xTSr/Yi5yF5fLdiWZSJ6R
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
+O8qxtsMC2RFiigdIi0SoCgOhvkO4t3xmvYYT9tRVKAYr0N3UDUXD+ao7N/e0jxo0oAQCkrqHBJM
RHRIBQoM4l2EaQ95Pu3GQQEhBFb9C7i0+DOcbfwYSnKGIBERzR8GWERE9BTioHVECg2abqDAd7cY
Onpt3EKY4+mVUWW1lhQSShrf+xPlfxeQgBAMr4iIjqAocvTjbYTZcKr5hbqyULOWcbL+A5yuf4wF
9ySk5OUBERHNJ75CERHRU31TMQVAqD/7/5pkewkR0euQFxm60RbCdHCk28nxcgxLuahabTTsdbTd
U1irXkbDXoepnJd0xERERNNjgEVERERE9IYoUKAocqAAbM2Hb7SQ5jEggKIokBcZ8iKDJvVxlSsg
oWAoG6bmwtFrqJiLaHun0XZPoWGvwdGr4IxBIiKadwywiIiIiIjeFEU5X3Ctcgmm5mF3dA974QNI
IZHm0XjL7AAVqw1NGBBCwlR2GVY5G6jbq6hZy9CEflBpS0RE9CZggEVERERE9IYQopxRWLWWIIWC
pVw4ehVSKCR5iCDtI0h6qNsr0KRZVl9pFlrOcVTNNhy9xvCKiIjeSKIoisknPxIRERER0StVFDmS
PEKcBYiyIaJ0AAGBrEiR5BHSLIKlV6CEgoCEkhocvQZDOdCkAfmUuYZERETzjgEWERERERERERHN
NdYOExERERERERHRXGOARUREREREREREc40BFhERERERERERzTUGWERERERERERENNcYYBERERER
ERER0VxjgEVERERERERERHONARYREREREREREc01BlhERERERERERDTXGGAREREREREREdFcY4BF
RERERERERERzjQEWERERERERERHNNQZYREREREREREQ01xhgERERERERERHRXGOARURERERERERE
c40BFhERERERERERzTUGWERERERERERENNcYYBERERERERER0VxjgEVERERERERERHONARYRERER
EREREc01BlhERERERERERDTXGGAREREREREREdFcY4BFRERERERERERz7f8DAAD//+zdeXyM1/4H
8I+ICBJJZClCbW1dJJRauthCVIOgthRBgtZV7SUu115tLqGklmqVaJQbuSJXSCzZ7NEEsdwkJHZC
EklMlknIYrL9/sjL/PrMM0lmi5lbn/fr5fVyzjzPOWdmnnmY75zzPQxgERERERERERGRQWMAi4iI
iIiIiIiIDBoDWEREREREREREZNAYwCIiIiIiIiIiIoPGABYRERERERERERk0BrCIiIiIiIiIiMig
MYBFREREREREREQGjQEsIiIiIiIiIiIyaAxgERERERERERGRQWMAi4iIiIiIiIiIDBoDWERERERE
REREZNAYwCIiIiIiIiIiIoPGABYRERERERERERk0BrCIiIiIiIiIiMigMYBFREREREREREQGjQEs
IiIiIiIiIiIyaAxgERERERERERGRQWMAi4iIiIiIiIiIDBoDWEREREREREREZNAYwCIiIiIiIiIi
IoPGABYRERERERERERk0BrCIiIiIiIiIiMigMYBFREREREREREQGjQEsIiIiIiIiIiIyaAxgERER
ERERERGRQWMAi4iIiIiIiIiIDBoDWEREREREREREZNAYwCIiIiIiIiIiIoPGABYRERERERERERk0
BrCIiIiIiIiIiMigMYBFREREREREREQGzVjfAyAiIvqzyczMREpKirxsZGQEJycnPY6o/hQXFyMl
JQUWFhZ466230KBBA72MIysrC8nJyYK6oUOH6mUsRERERKR7DGARERHpWHR0NDw8POTlpk2boqio
SH8Dqifh4eGYNWsWsrKyAADOzs4ICgqCtbX1Kx/LqVOn4O7uLqirqqp65eMgIiIiovrBABYR0f+I
srIy3Lx5E0lJScjMzERBQQFKSkpgZmYGMzMztGnTBl26dMFf/vIXmJqa6nu49CcnlUrh4eEBiUQi
rzt58iSWL1+OnTt36nFkVN8qKiqUBgcbNGiAhg0b6qVvIyMjGBkxMwYREdGfGQNYREQGrKKiAmFh
YTh06BCOHTuGgoKCOs8xNzeHs7MzxowZg8mTJ8PExOQVjJReNwkJCYLg1Utnz5599YOhV8rR0RE3
b95U+ti9e/fQqVOneum3oKAAbdq0wfPnz0WPjRo1CkePHq2XfomIiMgw8KcqIiIDVFVVhYCAAHTv
3h3jx49HYGCgSsErAHj27BkOHz4MDw8PdO7cGTt27OBSKtI5CwsLterp9RAUFFRvbYeEhCgNXhER
EdHrgQEsIiIDk5aWBhcXF0yfPl2QCFwTqampmDt3LlxcXJCdna2jERIBPXr0wMCBA0X1n3/+uR5G
Q4aiPgNY9dn266iiogJ3795FWFgYZDKZvodDRERUJy4hJCIyIPHx8Rg9enSNwSYTExM4ODiga9eu
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
RKRpOs+fP3/e1oMgIiIi0iYlJSXIzc3F3bt3UV1djaqqKjx58gQdO3aERCJB9+7dYWdnBwcHBxgY
GLT1cImIiIjeeAywiIiIiIiIiIhIq7EGFhERERERERERaTUGWEREREREREREpNUYYBERERERERER
kVZjgEVERERERERERFqNARYREREREREREWk1BlhERERERERERKTVGGAREREREREREZFWY4BFRERE
RERERERajQEWERERERERERFpNQZYRERERERERESk1RhgERERERERERGRVmOARUREREREREREWo0B
FhERERERERERaTUGWEREREREREREpNUYYBERERERERERkVZjgEVERERERERERFqNARYRERERERER
EWk1BlhERERERERERKTVGGAREREREREREZFWY4BFRERERERERERajQEWERERERERERFpNQZYRERE
RERERESk1RhgERERERERERGRVmOARUREREREREREWo0BFhERERERERERaTUGWEREREREREREpNUY
YBERERERERERkVZjgEVERERERERERFrt/wAAAP//7N13VBTn1wfwr1RBugiKqIAYbDQLdkEEGxFN
UMAWKWoUNbYkdn92QhIMJrYoYgUlgkoUKzbAAogINmLDDoKKgiJ1ef/gMO/MsmV2AUG8n3M8Z591
2i67z+zcuc99KIBFCCGEEEIIIYQQQuo1CmARQgghhBBCCCGEkHqNAliEEEIIIYQQQgghpF6jABYh
hBBCCCGEEEIIqdcogEUIIYQQQgghhBBC6jUKYBFCCCGEEEIIIYSQeo0CWIQQQgghhBBCCCGkXqMA
FiGEEEIIIYQQQgip1yiARQghhBBCCCGEEELqNQpgEUIIIYQQQgghhJB6jQJYhBBCCCGEEEIIIaRe
owAWIYQQQgghhBBCCKnXKIBFCCGEEEIIIYQQQuo1pbo+AEIIEefq1avMYxMTE+jr69fh0ZDalJ+f
j//++49pW1paQlVVtQ6PiEiSmZmJ58+fAwCUlZVhbW1dx0dE6hvqv4k01O8TQgiRVaPy8vLyuj4I
QggRpVGjRszj7du3w8fHpw6PhtSm8+fPY8CAAUz73r17MDc3r8MjIpL4+/tj0aJFAABjY2M8ffq0
jo+I1DfUfxNpqN8nhBAiK8rAIuQLU1xcjA0bNjDt3r17o2fPnjJt48KFC0hOTgYAaGpqYvLkyTKt
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
wk5nrq+vL5OgNr/rsTAPLP6wMq4Z8UpKfHw8Hjx4gJiYGDx79gwPHjwQcGNVVtj3RlaxQ/7r/Pbt
W04uk9JmUGEjzcSntFm8eDHhBdGoUSOmLaakpGD+/PlShVay7wlQZNUvTlPOFS0tLWaiz8U7SlNT
EyYmJlKdg40s96NSpUpwdHRkVjrT09MRGRmJc+fO4fjx48TAfe3aNfTr1w+RkZFCB4uyuGYaGhoy
t+EhQ4bA3d2d6Sf2798vVDS3GHb4oKmpKbp37y5yW/a1yMnJgZeXl1R1YxuLuIY882cKkyefP38m
DBey9uvm5uaMhtibN29QWFjIOcxBWWFrKmpoaMjd26Ys2pI42P0MV08z/pcuZVr8KG1K87kUhq2t
LaZNm4bNmzcDENTNGT16tEwZ/Nj3uizGfmVqQ4mJibh79y5iYmIQGxuL+/fvS71IJgphSR+4UFKx
Zi7IomWqoqKCJk2aICoqCgB3EeiSjO1cYeuqyTqmNWvWjLNXGTvZSVxcHL59+yYxQuXatWvM5zp1
6ojURlOmcUKZnlVzc3OpogE2bNgAX19fxvHh7t27GDZsGC5evCh0rvLnzx9MmTKFMdIZGxvD19dX
LnWXBX5vN1n1bIspiedrxYoVCe1kLsiS3dbMzAzTp0/Hxo0bie+7d++OQYMGSX08eUINWHKA/SIq
a0pNfs0BYbH9/Jb7kgrIiePdu3fYsWMHjh8/LlaI0traGp8/f5bL6nNpwK6XrLoOXO6NMNi6FuWV
+/fvE1nrOnbsiKtXr6Jjx45MGuf9+/djzJgxsLe353RM/hWX4rTYpYky6MLo6elhwIABGDBgAPz9
/REQEIBVq1Yxg+CdO3fg5+eHJUuWCOxbFtdMT09P5nBjXV1dODs7Mynujx07hk2bNgnV9fn9+zfC
w8OZsqurq9jzsp/pV69eYfXq1TLVURpKU2eC3/NO1rbKrmN2djays7NLrNFQ1rDvdfXq1aUOH5Tm
+IpqS+Jgh0Xwh4qIgn8eoExCsKVNWei/eHt748SJEwJi64aGhjK3H/a9LovQmLJuQ2lpaQgODkZY
WJjYBDa1atWCnp6eVJ5GbPhD/LjCVY+uJMja77PnmVyNIyUZ27nCnrPI+pxK47XVtWtXNG7cGK9f
vwaPx4OPj49YYfYvX74whmgAYl/GlWmc4F88L0/9vaamJpYtW4b8/HysXLkSQFGinyNHjgiV3lm2
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
GBkZoW/fvti6dSsSExOrveBb23XR19fHokWLkJycjJkzZ8LGxkZh35YtW2L27NlISUlBcHCwVkUk
XcXVJVXuP3sbHBwccPHiRezatQteXl4KdxEaGhpiwIAB2L9/P+Lj49Uq0AQHB6Nbt25Ce8qUKRg4
cKCkcpRSXCIiejfwCCEREVEt8+DBA9y4cQMZGRkoKCiAiYkJbGxs4OjoqLRoJU9OTg4yMjJgb2+v
8FJzqUtPT8eNGzeQlpaGV69eQV9fH/Xr10erVq3g5OQkukdMVTW1LiUlJUhOTsbNmzeRk5MDPT09
WFpaokuXLujUqZPCX/C1pau476KsrCwkJiYiNTUV+fn5MDMzQ8uWLeHs7Cy6F0pdJSUluHv3LszN
zZUWJHWZo1TjEhFR3cQCFhERERERERERSRr//EZERERERERERJLGAhYREREREREREUkaC1hERERE
RERERCRpLGAREREREREREZGksYBFRERERERERESS9v8AAAD//+zYsQAAAADAIH/raewojAQWAAAA
AGsCCwAAAIA1gQUAAADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABr
AgsAAACANYEFAAAAwJrAAgAAAGBNYAEAAACwJrAAAAAAWBNYAAAAAKwJLAAAAADWBBYAAAAAawIL
AAAAgDWBBQAAAMCawAIAAABgTWABAAAAsCawAAAAAFgTWAAAAACsCSwAAAAA1gQWAAAAAGsCCwAA
AIA1gQUAAADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABrAgsAAACA
NYEFAAAAwJrAAgAAAGBNYAEAAACwJrAAAAAAWBNYAAAAAKwJLAAAAADWBBYAAAAAawILAAAAgDWB
BQAAAMCawAIAAABgTWABAAAAsCawAAAAAFgTWAAAAACsCSwAAAAA1gQWAAAAAGsCCwAAAIA1gQUA
AADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABrAQAA///s3V2MZdl5
1vH/u9be56s+urqrv3smhpmxx4Mh9jA2M7bHduCSG24RGC6RkIiUO4QESLlBCCQCEgiuzFVAQnKE
QLEEln1DJJLYURw5cdBYYDu2x2P3zHRX1fk+e62Xi7XOPtUdB+G4u6fG8/wk9+mqOrXPPlWevnj0
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
jlZBYfxl9O3M/eptlvznXVqFRDOq91hA8YlYPloERVG47rrreP311wEaFLAA7r//flRV5X//93+p
rq6murqaDz74oNEYRnfddVe9VgMuQkJCmD17NuPHjzcW2Y1x9OhR3nrrLRYtWsTbb7/tYSXgLcOH
D2fFihXcddddhgvhxo0bG7XESktL48MPP2y03n79+nH33XcbC8kff/zRI+C4i88//9wjgD7AgAED
WLVqFdOmTSM7OxuANWvWGE/q62PQoEEsW7aMgICARtt1ueLv78+qVau4/fbbDWuYHTt2sGPHjgaP
SUhIYOHChVxzzTWXqpmXJS01X1riHveWgIAAXnjhBW67TX/gWlBQUK971/z58/m///u/c/7/8ssv
ExISwpw5c7Db7eTk5PDqq682eD5/f3+ee+45/vznP19QuyMjI1mwYAG/+c1vsNlsHDp0iGnTptVb
dtKkSTz33HMsWLDACBz+4osvAjBr1qx6BawZM2awePFi47749NNP+fTTTz3KLF68mGeeeeYcK7gL
GdPIyEjWrVvH1KlTjdhpGRkZZGRkNDgW8fHxLF261MPy61Li7+/P559/zqRJkwwR68CBAw1a2P32
t7/l7bff5rXXXrtkbUxKSvLYd0/MkJSU5BOwfJwXPhdCH794NE2j7PRp/vzYk2D2p/eI69Ec+hNk
bxbBUkpMFv8WURzqO78QAludFc3h0GM9BYfj0BRKak2NxnVqCIcGbcIEqpCcKK40Ym8pioLZpNIm
JpyikydwOGyGoKcIQdromxl+w30UHj/MV+8/S+Hxg6imM/E1XKbT+l+Bw1ZHxsblxLTtTJuOfZGa
Vq95tVnYOPej5Yx/ZGlpGQ99VMhj+8aw1PxXiomBemOyS8x+gfgFhnD4xCmEoiCEQs8OCQQH+rG/
UMHSgMGcBEL8wO7QkJouCtZVlWOvqzYszRriTCZKMyNunEllnZ0//e0xDh85xicrv2bzth04HA40
CZGh/twwvDORof4IIcjNL6SiovKydYWTSDRNv2cAY9Cl1JCaM2aVEFjMZvJPnuJfH61g49btWMz6
s44JV7VnWM+2+JktnDEyk6hmgaqe0TMNIRKXyCrpFmMhNEg1rNOEECAlXWOTmf2rP2BWTcz/7EVW
b//c2abLcwx9/PJxF1PWrl3baOySe++9l507d3LPPfcQFVV/1kxFURgxYgSfffYZ77zzjhEc+mxW
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
--00000000000008cbe60623de6b14--


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 08:07:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 08:07:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811700.1224376 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sximN-0005q4-F5; Mon, 07 Oct 2024 08:07:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811700.1224376; Mon, 07 Oct 2024 08:07: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 1sximN-0005px-B0; Mon, 07 Oct 2024 08:07:43 +0000
Received: by outflank-mailman (input) for mailman id 811700;
 Mon, 07 Oct 2024 08:07: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sximL-0005pr-O3
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 08:07:41 +0000
Received: from mail-oa1-x2e.google.com (mail-oa1-x2e.google.com
 [2001:4860:4864:20::2e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 383e04cd-8483-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 10:07:39 +0200 (CEST)
Received: by mail-oa1-x2e.google.com with SMTP id
 586e51a60fabf-287df15714cso702682fac.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 01:07:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 383e04cd-8483-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728288458; x=1728893258; 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=WhNHF8fDbr8Ibhn5PQeXr6B5abMvdFG2SRJwcyUmzcc=;
        b=lPTm/EflEC79a+DZSOoRpjmMOHbmPN25oouNCQLzSB89MaJqoAoDpI54TarK89apIm
         ZvSKEIGz823N23H2nur0rrPsRZVh0+QBQ8NUgG01gZcYpjthAOwS9bpiIjCd18SNZP4H
         5/FXiRg1ZxX8t/p5bE+8UlC8tnO5BLz5njhQQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728288458; x=1728893258;
        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=WhNHF8fDbr8Ibhn5PQeXr6B5abMvdFG2SRJwcyUmzcc=;
        b=cJSP1JxYjfVt7BARjKMnxRgrsCbyEme8MLSp5/kZsRglWykofWXNaTfgw6nn57rj4C
         umCtlP3W1PRr/STRtex8LIDc9ysLP7s3FMVwjxj2Xg+ePUCtI429BaF+5XiHBFI5yr75
         r9G2fYJbFYJ4RTPRSGj2ydUdHWmKBB9tTAmH2rchjlO7gzvbVyydhTDRsdQdhKkIf+XJ
         qorBkS+5LDW+kTP0w1WQmKgoxDWp6Dk6IQ0kYdcOCTgN6q+tzPKQyMLYW9bG0xf/2pi5
         5wMknGQnyqCGsyhXu9VYbFA1VKIAz/UcRWVm78odtEK7KwHZVDCGPcUCQgymCr4B239s
         jNmA==
X-Forwarded-Encrypted: i=1; AJvYcCUNWBX0f5EuZW6A7NIMqrCZvljsOY4eIi2xxrsE3FC9YyVtiQbwhVcpqiIGmq2To+Ly5P6XzH3LXZ0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzv+9MhZ6qz+T4RPa7W6+DIUl0uavlM5b8WcmWfZLZynYVN5MWZ
	zCGjkIW7tXW099PaW9dCRiy3boHTwJ+XHuMAqTo5yQCcW7WjC5QVW4H44vNbbDXGXGjyw3FSaQP
	CPggncNdodtUAqTz5ZHAt3fv+8WcW+W/W+8nZxQ==
X-Google-Smtp-Source: AGHT+IHYYM54uw1usKKRX4JCaqSM8Y0QXpAIwAgOzxcgUL3CSflRfcZ5q84KpaXb13h5nRi6TlQKHqfxIpVvdfpbXyk=
X-Received: by 2002:a05:6870:d182:b0:277:f722:45e1 with SMTP id
 586e51a60fabf-287c1da9fc5mr6808931fac.17.1728288458468; Mon, 07 Oct 2024
 01:07:38 -0700 (PDT)
MIME-Version: 1.0
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com> <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
 <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com>
In-Reply-To: <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 7 Oct 2024 09:07:26 +0100
Message-ID: <CACHz=Zg3R4Ybr0GwhSaYsOo72mWtapnpQ7w-Wb=wjrf-or1J_g@mail.gmail.com>
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
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>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 7, 2024 at 8:03=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 05.10.2024 15:21, Andrew Cooper wrote:
> > On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> >> --- a/xen/arch/x86/boot/Makefile
> >> +++ b/xen/arch/x86/boot/Makefile
> >> @@ -1,6 +1,6 @@
> >> -obj-bin-y +=3D head.o cbundle.o
> >> +obj-bin-y +=3D head.o cbundle.o reloc-trampoline.x64.o
> >
> > Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch want=
s
> > introducing here.
> >
> > That said, x64 is the one name for 64bit that we reliably don't use.
> > Also...
> >
> >> -head-bin-objs :=3D cmdline.o reloc.o
> >> +head-bin-objs :=3D cmdline.o reloc.o reloc-trampoline.o
> >
> > ... head-bin-objs isn't really correct now seeing as they're not
> > binaries in head.S.  Also ...
> >
> >>  nocov-y   +=3D $(head-bin-objs)
> >>  noubsan-y +=3D $(head-bin-objs)
> >
> > The no$(foo)'s needs extending to the 64bit objects too.  They're also
> > used early enough to explode.
> >
> > In Xen, 64bit objects are the norm, and it's 32bit ones which are the
> > exception, so how about we special case *.i386.o instead.  Then
> >
> > obj32 :=3D cmdline.i386.o
> > obj32 +=3D reloc.i386.o
> > obj32 +=3D reloc-trampoline.i386.o
>
> I'd like to advocate for ix86 or i686. i386 gives a wrong impression imo.
>
> Jan

Why not simply x86 ? We already use it.

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 08:16:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 08:16:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811705.1224387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxiuJ-0007Me-5z; Mon, 07 Oct 2024 08:15:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811705.1224387; Mon, 07 Oct 2024 08:15: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 1sxiuJ-0007MX-1n; Mon, 07 Oct 2024 08:15:55 +0000
Received: by outflank-mailman (input) for mailman id 811705;
 Mon, 07 Oct 2024 08:15: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxiuH-0007MR-TB
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 08:15:53 +0000
Received: from mail-oo1-xc2b.google.com (mail-oo1-xc2b.google.com
 [2607:f8b0:4864:20::c2b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5e1e7cd1-8484-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 10:15:52 +0200 (CEST)
Received: by mail-oo1-xc2b.google.com with SMTP id
 006d021491bc7-5e7e14594f9so920970eaf.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 01:15:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e1e7cd1-8484-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728288951; x=1728893751; 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=UNfOtc0USAVbZN8avUG0QPZqNqvwgdiET3BO2LfJ9fo=;
        b=jgI1klxDBvtDMM3+/3u8qboAsYKO3+XWet3gW9KEXK8PYze/q/pdsgM1jZIBjsvtxZ
         faS2rgmymQrCvQ/lfQ1w33jl+8tPl/X+lZ5eVzNEYhHk+ZbZBUojApIisDKLYXrzkrK0
         VkmvR81AiJ5pOhz9b6qUrLKLeUw9YirLm+3pU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728288951; x=1728893751;
        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=UNfOtc0USAVbZN8avUG0QPZqNqvwgdiET3BO2LfJ9fo=;
        b=e6lM6v5I9Y6u5SMO7suonU27QX4NW7LQTmMJPVvHFskMseUp58EayZKMuoWZ3j0T7q
         TqC5OZ0UBDvGmdQ1agmkwF5Gddov2Qy6YJYr2TT5oAKh10XIMOqvyOxQlmV0Uiol326t
         2IjLQIT8wlPONDG2rSwrne4S826NRUtbbj00v0BPIQHG/x3vnJ9BwIXFWQW+ek/kge1d
         04jwCFVs7Wf0pf6AUSZ01KorE1op5QMI/srplaY15M2EG2i7gyOJasl3PNly8hoOyH+g
         mU2Ew6LohLX4Im7zyql9wWO/68P2Mxc93fycB/xzfaJ+e9uUpSTXsCH7o/pMeC1hylRT
         bL6A==
X-Forwarded-Encrypted: i=1; AJvYcCXFdmAHHvsNX+imYmUSKIjWPXApBhw0veEz9sUJv4QVVhqyEQ+hCdKnAVaBvyrbq9p+p6jsZslJKqg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YygZpQpN0tD3/83CQa15QB1+Ubxt6qETfLxmIdnhZoTdlN5V+BX
	X4/uwFb7kyb6KqjmmZy/H5QRS8fQ1+HT6HNssRYD4uBTllUrilWPgofhBC1bwlYe4oxs6I20gv3
	+VIJimhe5fpb/DqOu7Tkj8nV5NEhqSrFvccBYUA==
X-Google-Smtp-Source: AGHT+IGel2iufVWE7yEaXpiUCOzSGhpWA1BLe8FeSt7fhAc564KN+Bkzi+N7ZzjWlot25bVnoMqBzEW8ipt2gWvdhbE=
X-Received: by 2002:a05:6870:ec86:b0:24e:8987:6f34 with SMTP id
 586e51a60fabf-287c1d38c6fmr6879006fac.3.1728288951492; Mon, 07 Oct 2024
 01:15:51 -0700 (PDT)
MIME-Version: 1.0
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com> <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
 <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com> <CACHz=Zg3R4Ybr0GwhSaYsOo72mWtapnpQ7w-Wb=wjrf-or1J_g@mail.gmail.com>
In-Reply-To: <CACHz=Zg3R4Ybr0GwhSaYsOo72mWtapnpQ7w-Wb=wjrf-or1J_g@mail.gmail.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 7 Oct 2024 09:15:40 +0100
Message-ID: <CACHz=ZjCAEE2kiWdce0ApQqtA-3urSMFJYRdKv8Qa_-BrZZ8bw@mail.gmail.com>
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
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>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 7, 2024 at 9:07=E2=80=AFAM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> On Mon, Oct 7, 2024 at 8:03=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wr=
ote:
> >
> > On 05.10.2024 15:21, Andrew Cooper wrote:
> > > On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> > >> --- a/xen/arch/x86/boot/Makefile
> > >> +++ b/xen/arch/x86/boot/Makefile
> > >> @@ -1,6 +1,6 @@
> > >> -obj-bin-y +=3D head.o cbundle.o
> > >> +obj-bin-y +=3D head.o cbundle.o reloc-trampoline.x64.o
> > >
> > > Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch wa=
nts
> > > introducing here.
> > >
> > > That said, x64 is the one name for 64bit that we reliably don't use.
> > > Also...
> > >
> > >> -head-bin-objs :=3D cmdline.o reloc.o
> > >> +head-bin-objs :=3D cmdline.o reloc.o reloc-trampoline.o
> > >
> > > ... head-bin-objs isn't really correct now seeing as they're not
> > > binaries in head.S.  Also ...
> > >
> > >>  nocov-y   +=3D $(head-bin-objs)
> > >>  noubsan-y +=3D $(head-bin-objs)
> > >
> > > The no$(foo)'s needs extending to the 64bit objects too.  They're als=
o
> > > used early enough to explode.
> > >
> > > In Xen, 64bit objects are the norm, and it's 32bit ones which are the
> > > exception, so how about we special case *.i386.o instead.  Then
> > >
> > > obj32 :=3D cmdline.i386.o
> > > obj32 +=3D reloc.i386.o
> > > obj32 +=3D reloc-trampoline.i386.o
> >
> > I'd like to advocate for ix86 or i686. i386 gives a wrong impression im=
o.
> >
> > Jan
>
> Why not simply x86 ? We already use it.
>

Looking at current files, we also use (to distinguish more clearly 32
and 64 bit) x86_32.

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 09:05:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 09:05:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811774.1224427 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxjfk-000545-5G; Mon, 07 Oct 2024 09:04:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811774.1224427; Mon, 07 Oct 2024 09:04: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 1sxjfk-00053y-2A; Mon, 07 Oct 2024 09:04:56 +0000
Received: by outflank-mailman (input) for mailman id 811774;
 Mon, 07 Oct 2024 09:04: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxjfi-00053s-N6
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 09:04:54 +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 36a10b48-848b-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 11:04:52 +0200 (CEST)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-37ce8458ae3so3899532f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 02:04:52 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99594a1e57sm84006666b.116.2024.10.07.02.04.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 02:04:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 36a10b48-848b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728291892; x=1728896692; 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=DoRRoVHbPFblqfjZIAeEt9phoNZleCDvQy8rWxFLdno=;
        b=KnlKjMbsWd7nNpXdg5YZZsFs1xsIuCkRNHqcNqyCu1o0K7XPRj5U/bieTxh9SqKItX
         MYaB2iCGZP4aNaj9btKDHtufe/lHOpj+mVzvI7H0Gssr0TVDFpzBbDyRbQE2fxlbIi3N
         +FHccQM+qHrCnvY1ftPgBYgICc7yQGplnvhE4Hai7oM/cOU/A/KQWiujwgA0msRF2arg
         3yFyrLDiiIaBJl2uOsn285XFAbfKo3UZmvDJVqk1h1MSUG5MfKNWIUjUgZEhSeXi15LM
         7M9olCGPHtTFGnRNqCmRhSaiJWUC2+vnWszB02679edvp66kLzMnPSPnEhCov+ShS8f6
         j4jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728291892; x=1728896692;
        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=DoRRoVHbPFblqfjZIAeEt9phoNZleCDvQy8rWxFLdno=;
        b=ieOOcWlk7a+b1goP5pStOnYWun2JfIJlrzVGwU5lY5dn2jLrUZpEUYyx8AaY4v9UIC
         UMpR6QcbokmgbnKHKuAXh66Pes/PI+MeRALUMPSumbct4XqjffwqFiSTOPlnOSaOETO1
         mZJBAq3f0iQSvsHWdir2Bajk38Qswa/FUn24bPwGLwXQea65u+mEcpNug3Tp0FtCtQfr
         TVRCDwkMHYJX1JzK2JjmlZ3Bx2XqqIZjHInVnPNtFUDkHSG1RA2KZkfVANYp4WNh384S
         dEXVfaEfjmtU8clXiU3xQSblkJjm7MNctfJJIVgNm3lmoIf8tCpwANfW+U6jlDGGDco2
         YVLw==
X-Forwarded-Encrypted: i=1; AJvYcCUz0eZPWW6ijMqs1L49Hb/J0fxzapO9+ogsupS+trufb53nGIe0F8kBNfl6LnsqWa8oTbhFVhddyaw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzyGKhkT9WHgxwKL4naAD3H2inRwOa4WrVM6f4n839yTKZsH5cG
	uQ9D4lyvS8kuX55TgOAKwWrYGMiC3WdQrlin+cQ2xvNMppVi4fLecJ9SiVN1iw==
X-Google-Smtp-Source: AGHT+IFskJ3TpdHyGqZZhl51F4nsOeUheIUbG0SHO1/Ha5J+FKLmItvd5kBoU16F8L6G4lP6cYoumQ==
X-Received: by 2002:a5d:43d1:0:b0:37c:cfbb:d357 with SMTP id ffacd0b85a97d-37d0e77743emr8855075f8f.30.1728291891954;
        Mon, 07 Oct 2024 02:04:51 -0700 (PDT)
Message-ID: <0439f313-1360-47b0-ae7e-a2a74ee4d51e@suse.com>
Date: Mon, 7 Oct 2024 11:04:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com>
 <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
 <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com>
 <CACHz=Zg3R4Ybr0GwhSaYsOo72mWtapnpQ7w-Wb=wjrf-or1J_g@mail.gmail.com>
 <CACHz=ZjCAEE2kiWdce0ApQqtA-3urSMFJYRdKv8Qa_-BrZZ8bw@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: <CACHz=ZjCAEE2kiWdce0ApQqtA-3urSMFJYRdKv8Qa_-BrZZ8bw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07.10.2024 10:15, Frediano Ziglio wrote:
> On Mon, Oct 7, 2024 at 9:07 AM Frediano Ziglio
> <frediano.ziglio@cloud.com> wrote:
>>
>> On Mon, Oct 7, 2024 at 8:03 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>
>>> On 05.10.2024 15:21, Andrew Cooper wrote:
>>>> On 05/10/2024 9:02 am, Frediano Ziglio wrote:
>>>>> --- a/xen/arch/x86/boot/Makefile
>>>>> +++ b/xen/arch/x86/boot/Makefile
>>>>> @@ -1,6 +1,6 @@
>>>>> -obj-bin-y += head.o cbundle.o
>>>>> +obj-bin-y += head.o cbundle.o reloc-trampoline.x64.o
>>>>
>>>> Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch wants
>>>> introducing here.
>>>>
>>>> That said, x64 is the one name for 64bit that we reliably don't use.
>>>> Also...
>>>>
>>>>> -head-bin-objs := cmdline.o reloc.o
>>>>> +head-bin-objs := cmdline.o reloc.o reloc-trampoline.o
>>>>
>>>> ... head-bin-objs isn't really correct now seeing as they're not
>>>> binaries in head.S.  Also ...
>>>>
>>>>>  nocov-y   += $(head-bin-objs)
>>>>>  noubsan-y += $(head-bin-objs)
>>>>
>>>> The no$(foo)'s needs extending to the 64bit objects too.  They're also
>>>> used early enough to explode.
>>>>
>>>> In Xen, 64bit objects are the norm, and it's 32bit ones which are the
>>>> exception, so how about we special case *.i386.o instead.  Then
>>>>
>>>> obj32 := cmdline.i386.o
>>>> obj32 += reloc.i386.o
>>>> obj32 += reloc-trampoline.i386.o
>>>
>>> I'd like to advocate for ix86 or i686. i386 gives a wrong impression imo.
>>
>> Why not simply x86 ? We already use it.
>>
> 
> Looking at current files, we also use (to distinguish more clearly 32
> and 64 bit) x86_32.

Either would be fine with me; as to x86 I took it that Andrew wanted to
express the 32-bit-ness, which x86 alone doesn't unambiguously do.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 09:07:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 09:07:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811781.1224437 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxjhn-00079Z-GK; Mon, 07 Oct 2024 09:07:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811781.1224437; Mon, 07 Oct 2024 09: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 1sxjhn-00078q-Cl; Mon, 07 Oct 2024 09:07:03 +0000
Received: by outflank-mailman (input) for mailman id 811781;
 Mon, 07 Oct 2024 09:07: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 1sxjhm-000765-Gw; Mon, 07 Oct 2024 09:07: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 1sxjhm-0004fU-AO; Mon, 07 Oct 2024 09:07: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 1sxjhl-0003um-OS; Mon, 07 Oct 2024 09:07:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxjhl-0003Rx-Nz; Mon, 07 Oct 2024 09:07: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=HDR6swYsBdmAoDkGq7u7jQ9iMMziHUabTZn/S7qRM0I=; b=cIzR2Pb/ohTi4gyTKqv1WMpIIJ
	vb9rWxOOX4gSedbgiEcbNb69KhudJ5PPCl2iLa3NGGjOMZ4pYWvRkjo+VcgYNHSkShOENpl4Pdjxu
	qTw5cFCDlgSw1MmNFxiye2JgyJTzpdXBQeWrIssvOUyc1hUZv8oh1eRfJ0/d+eW4NnQQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187991-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 187991: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    xen-unstable:test-armhf-armhf-examine:reboot:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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: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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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-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-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-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=6b20755c24ccd69d2482b45dfb9193940cdc346e
X-Osstest-Versions-That:
    xen=6b20755c24ccd69d2482b45dfb9193940cdc346e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 07 Oct 2024 09:07:01 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail in 187986 pass in 187991
 test-amd64-amd64-libvirt-vhd 22 leak-check/check fail in 187986 pass in 187991
 test-armhf-armhf-examine      8 reboot                     fail pass in 187986

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187986
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187986
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187986
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187986
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187986
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187986
 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-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-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  6b20755c24ccd69d2482b45dfb9193940cdc346e
baseline version:
 xen                  6b20755c24ccd69d2482b45dfb9193940cdc346e

Last test of basis   187991  2024-10-07 01:52:11 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                     fail    
 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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 07 09:33:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 09:33:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811797.1224459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxk7P-0000Nc-NM; Mon, 07 Oct 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 811797.1224459; Mon, 07 Oct 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 1sxk7P-0000NV-K0; Mon, 07 Oct 2024 09:33:31 +0000
Received: by outflank-mailman (input) for mailman id 811797;
 Mon, 07 Oct 2024 09:33: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 1sxk7O-0000NL-4w; Mon, 07 Oct 2024 09:33: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 1sxk7O-00056h-3O; Mon, 07 Oct 2024 09:33: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 1sxk7N-0004xF-L9; Mon, 07 Oct 2024 09:33:29 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxk7N-0006aq-Kg; Mon, 07 Oct 2024 09:33: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=QJedEJdxRQ76OiGLE46W52bjwVqymTnal2vhI6HYOgQ=; b=s3n+eIRTxVeTmsUCBaq+cmKwQI
	V8rCD6HnTtPtCsz2VK8uzxbmJ/FvU93KctVD1PNGgUABAF+cdsxJm1WMwgGltxn0QfImeiStB+V1y
	3JfYZoF2Bq7rLezugaYPJKNcaKDi2mjcX6e3K/sgKzzsIyXDy2whoEjoArwxyg20ercE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187996-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 187996: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=596773f5e33ec03968b8e8621ff4958b3eeaf412
X-Osstest-Versions-That:
    ovmf=80d9b4449182cd17484cae72269992e642095a00
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 07 Oct 2024 09:33:29 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 596773f5e33ec03968b8e8621ff4958b3eeaf412
baseline version:
 ovmf                 80d9b4449182cd17484cae72269992e642095a00

Last test of basis   187977  2024-10-05 01:11:29 Z    2 days
Testing same since   187996  2024-10-07 07:43:20 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Oliver Smith-Denny <osde@linux.microsoft.com>
  Oliver Smith-Denny <osde@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    


------------------------------------------------------------
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
   80d9b44491..596773f5e3  596773f5e33ec03968b8e8621ff4958b3eeaf412 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 09:48:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 09:48:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811811.1224469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxkLI-0001Rc-Qz; Mon, 07 Oct 2024 09:47:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811811.1224469; Mon, 07 Oct 2024 09:47: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 1sxkLI-0001RV-OM; Mon, 07 Oct 2024 09:47:52 +0000
Received: by outflank-mailman (input) for mailman id 811811;
 Mon, 07 Oct 2024 09:47: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=arWC=RD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sxkLG-0001RP-Tc
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 09:47:51 +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 36bd90b5-8491-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 11:47:49 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a8d6d0fe021so730120566b.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 02:47:49 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7e2645sm355438966b.204.2024.10.07.02.47.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 02:47:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 36bd90b5-8491-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728294469; x=1728899269; 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=V7y1Xs4/9Dpz4mMF+uwep1zlmZ/e4BzbFivFTzR1Rbw=;
        b=Sj4IbnjNTKs037DyG10He+V98D42Ow9uONMstu7MknqFGURENp+R9DqAh0v0ZnimWO
         Y2iV02WdZPtg/rjks5hqNVVFMWoLJFoskUq1zaUFKSHlwzHtru9nEVtvAszc453xhTNi
         NnjpjFB8Vmz179xtxv/QEUO+liGTyfjXZxs/Y=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728294469; x=1728899269;
        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=V7y1Xs4/9Dpz4mMF+uwep1zlmZ/e4BzbFivFTzR1Rbw=;
        b=IMolyVLcbSOlfgZt7iSl70iBfwd1PfMd+N1gV9qJAMPIiayGT7xd6Y9+GgFMZEMBjS
         JHuhiLIOL0WPizo+Y1lZHE1B9uIqlIqjzPccaFEB5hCMPTLDKnPkC+OC0SzVTWq9yl+h
         A+mQXJHmwRyceD2K1RUqLuoA+1rZyJLgUFtlzPs2OoKnmu29UcRp29aq5vdXUSI86jiG
         hhFLNE8/UxAfLESiC96Mn9n5boRNimIp7HenF0QgC1pCpQ8wpQIRsKJd2CbtAkQqfAV7
         DLKBxjKGT1EjmMwWFsFuM0z1vB2bocVTrfm3wwAebVLySeN58jXuY2/zFD+11xWy6ugA
         XhSw==
X-Forwarded-Encrypted: i=1; AJvYcCURhASA12J6o3+7pzDAVmsNP3enZXMQzuE5eNldPWFZE2qDpXi6Cuy2sg2241Iw+cLwwOdivwJQ1Hw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyOquCNnGftQYQukufp+Mc46N0xxLU7qZwtxjeNYNYdLZV7LFXz
	s2yXUQFfysnbaPcqXX6WZnsP4fEJIHpZIlVediywE0ZISyg/R9kl+CECbsYlaBM=
X-Google-Smtp-Source: AGHT+IHkEs1Y9AGKbXoPvaUED/QTZxU7VzPtHOIyGRiH9RIyQ7mD9WaFbrRbEVy2FnYkYDod0gMP+Q==
X-Received: by 2002:a17:907:948e:b0:a99:5671:aae4 with SMTP id a640c23a62f3a-a995671abe5mr307244866b.22.1728294469011;
        Mon, 07 Oct 2024 02:47:49 -0700 (PDT)
Message-ID: <c3599934-8ea6-44d3-95da-9a307f952f2d@citrix.com>
Date: Mon, 7 Oct 2024 10:47:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
To: Jan Beulich <jbeulich@suse.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com>
 <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
 <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com>
 <CACHz=Zg3R4Ybr0GwhSaYsOo72mWtapnpQ7w-Wb=wjrf-or1J_g@mail.gmail.com>
 <CACHz=ZjCAEE2kiWdce0ApQqtA-3urSMFJYRdKv8Qa_-BrZZ8bw@mail.gmail.com>
 <0439f313-1360-47b0-ae7e-a2a74ee4d51e@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <0439f313-1360-47b0-ae7e-a2a74ee4d51e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 10:04 am, Jan Beulich wrote:
> On 07.10.2024 10:15, Frediano Ziglio wrote:
>> On Mon, Oct 7, 2024 at 9:07 AM Frediano Ziglio
>> <frediano.ziglio@cloud.com> wrote:
>>> On Mon, Oct 7, 2024 at 8:03 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>> On 05.10.2024 15:21, Andrew Cooper wrote:
>>>>> On 05/10/2024 9:02 am, Frediano Ziglio wrote:
>>>>>> --- a/xen/arch/x86/boot/Makefile
>>>>>> +++ b/xen/arch/x86/boot/Makefile
>>>>>> @@ -1,6 +1,6 @@
>>>>>> -obj-bin-y += head.o cbundle.o
>>>>>> +obj-bin-y += head.o cbundle.o reloc-trampoline.x64.o
>>>>> Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch wants
>>>>> introducing here.
>>>>>
>>>>> That said, x64 is the one name for 64bit that we reliably don't use.
>>>>> Also...
>>>>>
>>>>>> -head-bin-objs := cmdline.o reloc.o
>>>>>> +head-bin-objs := cmdline.o reloc.o reloc-trampoline.o
>>>>> ... head-bin-objs isn't really correct now seeing as they're not
>>>>> binaries in head.S.  Also ...
>>>>>
>>>>>>  nocov-y   += $(head-bin-objs)
>>>>>>  noubsan-y += $(head-bin-objs)
>>>>> The no$(foo)'s needs extending to the 64bit objects too.  They're also
>>>>> used early enough to explode.
>>>>>
>>>>> In Xen, 64bit objects are the norm, and it's 32bit ones which are the
>>>>> exception, so how about we special case *.i386.o instead.  Then
>>>>>
>>>>> obj32 := cmdline.i386.o
>>>>> obj32 += reloc.i386.o
>>>>> obj32 += reloc-trampoline.i386.o
>>>> I'd like to advocate for ix86 or i686. i386 gives a wrong impression imo.
>>> Why not simply x86 ? We already use it.
>>>
>> Looking at current files, we also use (to distinguish more clearly 32
>> and 64 bit) x86_32.
> Either would be fine with me; as to x86 I took it that Andrew wanted to
> express the 32-bit-ness, which x86 alone doesn't unambiguously do.

On further thought, why not just foo.32.o ?

That should be clear enough.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 09:53:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 09:53:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811816.1224480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxkQy-000477-F7; Mon, 07 Oct 2024 09:53:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811816.1224480; Mon, 07 Oct 2024 09: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 1sxkQy-000470-Ag; Mon, 07 Oct 2024 09:53:44 +0000
Received: by outflank-mailman (input) for mailman id 811816;
 Mon, 07 Oct 2024 09:53: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=arWC=RD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sxkQx-00046u-S5
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 09:53:43 +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 095f6848-8492-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 11:53:43 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c8967dd2c7so5348206a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 02:53:43 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a996167411csm18051766b.14.2024.10.07.02.53.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 02:53:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 095f6848-8492-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728294822; x=1728899622; 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=gMVPuUJ6XxSqJ7vWXv7AfdLriI/hral7DxoQQy17U+M=;
        b=AsPJhPfKrql7eKGHjrb3t4AkWK2jURtVR952qEs9mWqEOvOya3tiv0BQlWaexxLtC3
         VX53Z8xi9x6qJebTRZfkWFJcZMwqgXBfvsxc5CkkUxJ2fQU/FHXS1ZFRICxRukoNjCXq
         Nv+Xgi5l6gWp4bR0Qu1ADxBS/N14N+rZQYY2s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728294822; x=1728899622;
        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=gMVPuUJ6XxSqJ7vWXv7AfdLriI/hral7DxoQQy17U+M=;
        b=IO/OODtktmhnxUAokr8jFgfDNA0q9A6bU7KLX/3Jso10cXTviQWTigk35MZlFWQZ0Y
         8kN/MKD5a0Y/t4UKrc3s7MUGfR3ASLbETzHxrxvyVj7QevwsNSXB6hC362JAueAi8jL/
         hZhKex0rWmcZc1mYnADrkOsT9Hr67iLmRN39X1Pu1A+v2MdxQ0Ej/DfhG0zBgxSV8fbv
         faRr2uSBwKir/r69IDHDXEDU0EVImZ/vd0W69bmXt6jnOh4p8UmzmHYclMWzjQSgluWB
         tkg2R92zl1o0Jx3dfdDjGuKL3UEDvlB5hrSnREKtRC2AwK+NY5hYXpO3kyGH/v5Rmdqk
         4xpA==
X-Forwarded-Encrypted: i=1; AJvYcCXT6TapXfL8qd2d7MUakg8ys8iXGQLRKynSFRZGx10tW9Eay4VUQ2r5CYVDfZ2FHZ643t8noADP2Bw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxg45JiQtbEwcnf7aF6fw7cluVwyvW8PdQOT+Fe1nfHpVhG0gle
	r35fNgM0oT3FqkvzdwGx4xH3IexQMnbbtNVHCPjYawdQDe2XJ97wodAjH3RdRQo=
X-Google-Smtp-Source: AGHT+IEuB+KLGSE6x8PwnpTSGszNSXkpu9Owik4gHTD/jqFqQggj9tzodzGBUtvgI5mZ862Q1NkuNA==
X-Received: by 2002:a17:907:3f95:b0:a99:43b2:41af with SMTP id a640c23a62f3a-a9943b24416mr742078866b.56.1728294822392;
        Mon, 07 Oct 2024 02:53:42 -0700 (PDT)
Message-ID: <e6097d64-b8d6-4b66-9a35-0fd785773c01@citrix.com>
Date: Mon, 7 Oct 2024 10:53:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/boot: create a C bundle for 32 bit boot code and
 use it
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-2-frediano.ziglio@cloud.com>
 <9a4c9017-f9be-4ebd-9f3d-c7e0b2752438@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <9a4c9017-f9be-4ebd-9f3d-c7e0b2752438@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05/10/2024 1:24 pm, Andrew Cooper wrote:
> On 05/10/2024 9:02 am, Frediano Ziglio wrote:
>> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
>> index ff0f965876..da87179fef 100644
>> --- a/xen/arch/x86/boot/Makefile
>> +++ b/xen/arch/x86/boot/Makefile
>> @@ -1,4 +1,4 @@
>> -obj-bin-y += head.o
>> +obj-bin-y += head.o cbundle.o
> +obj-bin-y += cbundle.o
>  obj-bin-y += head.o
>
> please.  Putting things on a single line is already getting unwieldy by
> patch 2.
>
> I have to admit that I'm still not convinced of "cbundle" as a name, but
> I can't think of anything better either.

Based on the other thread, and in combination with existing Kbuild
nomenclature, this probably wants to be built_in_32.o

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 09:56:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 09:56:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811822.1224489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxkTs-00060r-S6; Mon, 07 Oct 2024 09:56:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811822.1224489; Mon, 07 Oct 2024 09: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 1sxkTs-00060k-OI; Mon, 07 Oct 2024 09:56:44 +0000
Received: by outflank-mailman (input) for mailman id 811822;
 Mon, 07 Oct 2024 09:56: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=arWC=RD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sxkTr-0005wj-FH
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 09:56:43 +0000
Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com
 [2a00:1450:4864:20::542])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 73dc32ee-8492-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 11:56:41 +0200 (CEST)
Received: by mail-ed1-x542.google.com with SMTP id
 4fb4d7f45d1cf-5c5bca59416so5825697a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 02:56:41 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05951b1sm3035174a12.2.2024.10.07.02.56.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 02:56:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73dc32ee-8492-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728295001; x=1728899801; 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=qHhCBcNpd/KLyJyzncZuqeqe+vPakOjSHrt3vvS/2Jo=;
        b=kuZCC4SintgL7nyYSXtXwPSUkNDgAUEdBHhjp2wr8pCjHmDs8udnhjGi/7Qbdl4Ur6
         XdXw6fv7v2GZ9ZXLDvLgI0BU6udEN0TnFapHkfcIjBOjHI9lZWIbzoag+sc2A3UxVtC3
         qY4GbiK2I68pXCetguapIFAm2cdvdTs45pjlY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728295001; x=1728899801;
        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=qHhCBcNpd/KLyJyzncZuqeqe+vPakOjSHrt3vvS/2Jo=;
        b=XOrMMUfrhkCVwvJErktq2sY5D2j9rZhL7wIjUN7cCprPYiFKTjuRM3DXt+b1Pzm5gj
         IqM4S6ocfw6AQSXTZf3aHD2PvjH2fBGLiHs6RANG8e/sz9t6gQMSEF7wRb7vOnUy2SJ5
         45wwTqmKGic+lQXg8nrpliaHGX1wysb90yZIQT5nlArVlSU1a5Yv8C6rODESa0x9jeip
         uJYP/X8Fb1p+4tBa7zvB1cUl0YUoky8m3lg+442pfuuebCq7P3mOcmybWrwKQGVvXYUd
         +Ww6oMKsHGdCCC9F7pbQJgDpDJ4MT1F3B+IUUOZhi9I8zc5rGTphpyGr6UHvCjbE4aNo
         dknw==
X-Gm-Message-State: AOJu0YzpVN/93N+7HfdOgUwxyG6b3K/W/wBW5PyfPCVW7pYIX1zNZJnE
	PXtB0Iskmdbv0P+x9tm2YrIrcOrtcEKmTEgjnS7ogd7mbO1KklMjLqs4C2QtPLG9AWXW2yCgLjZ
	dILW75Q==
X-Google-Smtp-Source: AGHT+IEsfMlBsnx6myAc9pYHzi5NQg31vWwoVZJKvx8ua+J7kSNa0iRT7Rlm4deS5sO/HmpAq/k+IA==
X-Received: by 2002:a05:6402:42c8:b0:5c2:5f0a:4a3e with SMTP id 4fb4d7f45d1cf-5c8d2e262ebmr9357977a12.12.1728295000713;
        Mon, 07 Oct 2024 02:56:40 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH] CI: Drop bin86/dev86 from archlinux container
Date: Mon,  7 Oct 2024 10:56:37 +0100
Message-Id: <20241007095637.2450599-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

These packages have moved out of main to AUR, and are not easily accessible
any more.  Drop them, because they're only needed for RomBIOS which is very
legacy these days.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Doug Goldstein <cardoe@cardoe.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

v2:
 * Repost now that stubdom is fixed with GCC-14
---
 automation/build/archlinux/current.dockerfile | 2 --
 1 file changed, 2 deletions(-)

diff --git a/automation/build/archlinux/current.dockerfile b/automation/build/archlinux/current.dockerfile
index 8929e9b5f022..657ddd77a85c 100644
--- a/automation/build/archlinux/current.dockerfile
+++ b/automation/build/archlinux/current.dockerfile
@@ -6,10 +6,8 @@ LABEL maintainer.name="The Xen Project" \
 RUN pacman-key --init
 
 RUN pacman -S --refresh --sysupgrade --noconfirm --noprogressbar --needed \
-        bin86 \
         bridge-utils \
         bzip2 \
-        dev86 \
         discount \
         dtc \
         e2fsprogs \
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:00:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:00:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811829.1224498 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxkXJ-0003SH-7f; Mon, 07 Oct 2024 10:00:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811829.1224498; Mon, 07 Oct 2024 10: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 1sxkXJ-0003SA-57; Mon, 07 Oct 2024 10:00:17 +0000
Received: by outflank-mailman (input) for mailman id 811829;
 Mon, 07 Oct 2024 10: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxkXH-0003S4-Rg
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:00:15 +0000
Received: from mail-oa1-x2b.google.com (mail-oa1-x2b.google.com
 [2001:4860:4864:20::2b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f1db3756-8492-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 12:00:13 +0200 (CEST)
Received: by mail-oa1-x2b.google.com with SMTP id
 586e51a60fabf-287ac3fe2a8so2150215fac.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 03:00:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f1db3756-8492-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728295212; x=1728900012; 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=AeL/Pn/uSEOqUDSwyWeFTtP/drxeO1XBWoOpYmC58g4=;
        b=NxOIp1rJBaGubccAm/wqB2fnswFFJslK50wR+fHUWD/DLFtID1ulOEKxn4pL0eYoR5
         DbWuh6IJQX0rQG8AkSujoGz1I4QS6VLstq1RE6wKSEWkviGFqqVGDwT7xRM94tdWmQpw
         vw2N9eve+KLcIK9IoXj12caZbEf9Om5SS9b4g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728295212; x=1728900012;
        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=AeL/Pn/uSEOqUDSwyWeFTtP/drxeO1XBWoOpYmC58g4=;
        b=rxu5WlxX6afG2Y3/hCL2yBGNRnPkN+EtcozvIzCxYtBNYIs2+57p1dkizf30Tpm1wD
         FqBxamunxmxN3fnri9jBe1U1X1u0EsYLnwM1vHCLuSb+vjsmDdWyUaUzTJUUEeuqWbt0
         bPd43+RJT2U5fYywdcw8gp8YjCUGYzyu9kHUe4D+98NNlJC8JAlzyZcwJtBlGXLQVKXI
         kAStUG9hK1DyGjB/K3gS8Z1z7zDrFvGi9wishWjYsd9GafQU8RFWkQZVJrbFeibcLotd
         Xew1my9LLvq2G1a4QmmPjAsRtFsD+3P+dhIP0QiMh7kToCvl+4GBdUPQZQ5se689yPm8
         mtfg==
X-Forwarded-Encrypted: i=1; AJvYcCU5k+sPiaYPUnxP7cFBiStGje+DXbcOpMQDsU9ZILvFAPO+UQMZlOx+vLgHvbcN+vMqVfDQ3JkwVbA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx6hNd8qGRsDk2upUzSoAnFuAKq9Ti0kOVV4fme+zyBL72lI79M
	/d6MF6c17w2ijPOnRAV1nIRzWlXaiEFSwL9u9Mu8AlQtxJl2+kZnZFzQBV6Vrx0ZTHIHxD/fjO2
	8g1TJ5JMAwG8WEaYupe0LZZltVUZNKHIfRWKjnw==
X-Google-Smtp-Source: AGHT+IGlepucfrnXRcWQ0qPQQTS5lK/pHJLXSdDvFSDlQAir2By7fhYdU+tJmn46Crm1BHz8018ySGizqm/lOOizdsg=
X-Received: by 2002:a05:6871:5296:b0:25e:fb:af8c with SMTP id
 586e51a60fabf-287c1e7be27mr7678720fac.18.1728295212419; Mon, 07 Oct 2024
 03:00:12 -0700 (PDT)
MIME-Version: 1.0
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com> <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
 <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com> <CACHz=Zg3R4Ybr0GwhSaYsOo72mWtapnpQ7w-Wb=wjrf-or1J_g@mail.gmail.com>
 <CACHz=ZjCAEE2kiWdce0ApQqtA-3urSMFJYRdKv8Qa_-BrZZ8bw@mail.gmail.com>
 <0439f313-1360-47b0-ae7e-a2a74ee4d51e@suse.com> <c3599934-8ea6-44d3-95da-9a307f952f2d@citrix.com>
In-Reply-To: <c3599934-8ea6-44d3-95da-9a307f952f2d@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 7 Oct 2024 11:00:01 +0100
Message-ID: <CACHz=ZgAfQP3ChV=CqNxKDWGHQ-DVreTCJ_svGEuyqfnzuzRXQ@mail.gmail.com>
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 7, 2024 at 10:47=E2=80=AFAM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> On 07/10/2024 10:04 am, Jan Beulich wrote:
> > On 07.10.2024 10:15, Frediano Ziglio wrote:
> >> On Mon, Oct 7, 2024 at 9:07=E2=80=AFAM Frediano Ziglio
> >> <frediano.ziglio@cloud.com> wrote:
> >>> On Mon, Oct 7, 2024 at 8:03=E2=80=AFAM Jan Beulich <jbeulich@suse.com=
> wrote:
> >>>> On 05.10.2024 15:21, Andrew Cooper wrote:
> >>>>> On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> >>>>>> --- a/xen/arch/x86/boot/Makefile
> >>>>>> +++ b/xen/arch/x86/boot/Makefile
> >>>>>> @@ -1,6 +1,6 @@
> >>>>>> -obj-bin-y +=3D head.o cbundle.o
> >>>>>> +obj-bin-y +=3D head.o cbundle.o reloc-trampoline.x64.o
> >>>>> Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch =
wants
> >>>>> introducing here.
> >>>>>
> >>>>> That said, x64 is the one name for 64bit that we reliably don't use=
.
> >>>>> Also...
> >>>>>
> >>>>>> -head-bin-objs :=3D cmdline.o reloc.o
> >>>>>> +head-bin-objs :=3D cmdline.o reloc.o reloc-trampoline.o
> >>>>> ... head-bin-objs isn't really correct now seeing as they're not
> >>>>> binaries in head.S.  Also ...
> >>>>>
> >>>>>>  nocov-y   +=3D $(head-bin-objs)
> >>>>>>  noubsan-y +=3D $(head-bin-objs)
> >>>>> The no$(foo)'s needs extending to the 64bit objects too.  They're a=
lso
> >>>>> used early enough to explode.
> >>>>>
> >>>>> In Xen, 64bit objects are the norm, and it's 32bit ones which are t=
he
> >>>>> exception, so how about we special case *.i386.o instead.  Then
> >>>>>
> >>>>> obj32 :=3D cmdline.i386.o
> >>>>> obj32 +=3D reloc.i386.o
> >>>>> obj32 +=3D reloc-trampoline.i386.o
> >>>> I'd like to advocate for ix86 or i686. i386 gives a wrong impression=
 imo.
> >>> Why not simply x86 ? We already use it.
> >>>
> >> Looking at current files, we also use (to distinguish more clearly 32
> >> and 64 bit) x86_32.
> > Either would be fine with me; as to x86 I took it that Andrew wanted to
> > express the 32-bit-ness, which x86 alone doesn't unambiguously do.
>
> On further thought, why not just foo.32.o ?
>
> That should be clear enough.
>
> ~Andrew

At this point, it starts to be more of a personal preference.
I slightly prefer x86_32 looking at file names and Makefile's macros.
Pick one.

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:06:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:06:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811837.1224508 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxkd9-0004Jz-Ui; Mon, 07 Oct 2024 10:06:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811837.1224508; Mon, 07 Oct 2024 10:06: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 1sxkd9-0004Js-S5; Mon, 07 Oct 2024 10:06:19 +0000
Received: by outflank-mailman (input) for mailman id 811837;
 Mon, 07 Oct 2024 10:06: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxkd8-0004Jm-OD
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:06:18 +0000
Received: from mail-oo1-xc32.google.com (mail-oo1-xc32.google.com
 [2607:f8b0:4864:20::c32])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ca3d580c-8493-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 12:06:16 +0200 (CEST)
Received: by mail-oo1-xc32.google.com with SMTP id
 006d021491bc7-5e1b35030aeso2383107eaf.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 03:06:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca3d580c-8493-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728295575; x=1728900375; 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=QybiIe0c5NadOU57P94fpp2RVSmefrf1PWalMOJsmvo=;
        b=KtKR4eUPBCTwABYrlw8mT4pzOT02EPWL7Nn6hYA2Q6H7dJquP+HdlgOKQFM0gou2u1
         RYDtq6l63u+yUGEfyZyxHAmNeMk5qraKQbJOXlaT2xtGngySE6QK0c/YC+YIennMBvjt
         EZCVBbLaeBmJivS31CTaV60PUX4t5r1VCH3Lc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728295575; x=1728900375;
        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=QybiIe0c5NadOU57P94fpp2RVSmefrf1PWalMOJsmvo=;
        b=M5aeB8VlebZC8KYehIMDIPrjq2Of20zAB8PNlFIGHK07/K/zm8rmVHd4laGJ8mEYLa
         Qs0SxLSNQbKUAgHZgbz6U5pKYbeRnBpQD1ciE2MujD8a3aFW+00U6imzjB9Rg/3Y8ibq
         PcIzpimwaHkHHNV+W71C7AtraXlXTo3QojJF5erL6BbIWfr5dMkqFWH9Q2SXDUCLxPyR
         0gDs7NG9EmyKoIWCi9oALbFwtMbE5J9xnR+HyBTejQMF6A4TO4aOKSh8Zp5AwLS7A9qx
         vDZbX3BQj72Osg6CBeAYG5lkFrKi6EP7OVsYSNrbd7g9j10wC78XM8WHLD+9BHO1R1hR
         WDLg==
X-Gm-Message-State: AOJu0YxXb1Apikr/PxmHlJqHCr0E3IjnVC1wNap1Km+XqFEVhFdqjX92
	wo/gytM1rM7VuJ90L77PXYiF4ybesi1Rz0DnkK/ySxeypoAM9AiMArk1/cSctoYpbrQANFy9lHR
	JfBQp2P9NsyOA/hRVtuAZLq6dm9HH+5BVPmtjsQ==
X-Google-Smtp-Source: AGHT+IHj3zbIvg2kIKf2LKf5aPYjDSiltXsj6Ls/NCUxShteav3Bbh2v+sVUUaf7ZkDX2Bw0i2ZJZL9YH0iu3E1oto0=
X-Received: by 2002:a05:6871:109:b0:270:27e6:6f1a with SMTP id
 586e51a60fabf-287c22b5ae2mr5508641fac.41.1728295575415; Mon, 07 Oct 2024
 03:06:15 -0700 (PDT)
MIME-Version: 1.0
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-4-frediano.ziglio@cloud.com> <10890c99-f1ed-4e59-a86b-f79cb6065aa9@citrix.com>
In-Reply-To: <10890c99-f1ed-4e59-a86b-f79cb6065aa9@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 7 Oct 2024 11:06:04 +0100
Message-ID: <CACHz=Zj=Bf9cXML1XcHYpC3wXi0A-wvYvy3DTSAVn4xtmOii6w@mail.gmail.com>
Subject: Re: [PATCH 3/3] x86/boot: Use boot_vid_info and trampoline_phys
 variables directly from C code
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, Oct 5, 2024 at 2:43=E2=80=AFPM Andrew Cooper <andrew.cooper3@citrix=
.com> wrote:
>
> On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> > diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> > index ade2c5c43d..dcda91cfda 100644
> > --- a/xen/arch/x86/boot/head.S
> > +++ b/xen/arch/x86/boot/head.S
> > @@ -510,22 +510,10 @@ trampoline_setup:
> >          mov     %esi, sym_esi(xen_phys_start)
> >          mov     %esi, sym_esi(trampoline_xen_phys_start)
> >
> > -        /* Get bottom-most low-memory stack address. */
> > -        mov     sym_esi(trampoline_phys), %ecx
> > -        add     $TRAMPOLINE_SPACE,%ecx
> > -
> > -#ifdef CONFIG_VIDEO
> > -        lea     sym_esi(boot_vid_info), %edx
> > -#else
> > -        xor     %edx, %edx
> > -#endif
> > -
> >          /* Save Multiboot / PVH info struct (after relocation) for lat=
er use. */
> > -        push    %edx                /* Boot video info to be filled fr=
om MB2. */
> >          mov     %ebx, %edx          /* Multiboot / PVH information add=
ress. */
> > -        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) =
using fastcall. */
> > +        /*      reloc(magic/eax, info/edx) using fastcall. */
> >          call    reloc
> > -        add     $4, %esp
> >
>
> Please split this patch in two.  Just for testing sanity sake if nothing
> else.
>

Sorry, it's not clear how it should be split. What are the 2 parts ?

> Now, while I think the patch is a correct transform of the code, ...
>
> >  #ifdef CONFIG_PVH_GUEST
> >          cmpb    $0, sym_esi(pvh_boot)
> > diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> > index 94b078d7b1..8527fa8d01 100644
> > --- a/xen/arch/x86/boot/reloc.c
> > +++ b/xen/arch/x86/boot/reloc.c
> > @@ -185,7 +188,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in=
, uint32_t video_out, memctx
> >      memory_map_t *mmap_dst;
> >      multiboot_info_t *mbi_out;
> >  #ifdef CONFIG_VIDEO
> > -    struct boot_video_info *video =3D NULL;
> > +    struct boot_video_info *video =3D &boot_vid_info;
>
> ... doesn't this demonstrate that we're again writing into the
> trampoline in-Xen, prior to it placing it in low memory?
>

Yes, C is more readable to human beings.
There's nothing to demonstrate as far as I'm concerned. I pointed out
different times the assumption you can write into the trampoline to
set it up is spread in multiple places. This change just makes it more
clear just using a more readable language.

> > @@ -346,10 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_=
in, uint32_t video_out, memctx
> >  }
> >
> >  /* SAF-1-safe */
> > -void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
> > -            uint32_t video_info)
> > +void *reloc(uint32_t magic, uint32_t in)
> >  {
> > -    memctx ctx =3D { trampoline };
> > +    /* Get bottom-most low-memory stack address. */
> > +    memctx ctx =3D { (uint32_t)((long)trampoline_phys + TRAMPOLINE_SPA=
CE) };
>
> Again, while this is a correct transformation (best as I can tell),
> wtf?  Doesn't this mean we're bump-allocating downwards into our own stac=
k?
>
> ~Andrew

Yes, that's how it works, no regressions here.

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:12:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:12:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811844.1224519 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxkin-0004RA-I9; Mon, 07 Oct 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 811844.1224519; Mon, 07 Oct 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 1sxkin-0004R3-EC; Mon, 07 Oct 2024 10:12:09 +0000
Received: by outflank-mailman (input) for mailman id 811844;
 Mon, 07 Oct 2024 10:12: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=68k9=RD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sxkil-0004Qx-UG
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:12:07 +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 9ac902cf-8494-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 12:12:05 +0200 (CEST)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-5399041167cso6353453e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 03:12:05 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5d0a3dsm359961666b.24.2024.10.07.03.12.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 03:12:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9ac902cf-8494-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728295925; x=1728900725; 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=CFSHhKbYhEmL6Sr9NK5TSCAEli7Qx8cjTwwlN5tVCHk=;
        b=NhZFt2WLXflo9NDRcc/kZ6ozoHwYURZKFaxZ21gZrBIRL8YcOwJ6cyHFsY91icaJ+6
         jCaVQhXOQR4j+JUuK1Dzobd/KcGOwzcj5L7/DJmTeKh45uLMmc+kwLxx21gPOvinRcBI
         ClSQtfAmPxhvj8vDEv/cimGBxZ3JAP4zafl8Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728295925; x=1728900725;
        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=CFSHhKbYhEmL6Sr9NK5TSCAEli7Qx8cjTwwlN5tVCHk=;
        b=pe4ap7dkXn4FE5gqldF84MJM9C7vHF+qMXB6xjVMEiWIkMbqgELFqCnh5Tgw+3D34s
         j8v7fWD00WNFUXS/pwBfW2yhmAmeXg2xDaOb8eJ0w6ksWYBLYqBOd2aRGppwkQ7wxWKI
         Ak7Ssygn5Ryb+UjuYeIVIubDFnD7AD/hg6zeQm9s8wKtvSVBjB1YmeHKw7q4eiX9TLp7
         K6hBIvbjwCzN2uBO65j5tSzpo3FfO9gGaQS+gPl7JnNmEO6slHmBeSuOBzPmeyCN7kDa
         SSmSVW2v1RRd7Vy0X7kMOEyXgmA2pVthS0su7IO3rtRV0wuBCCOJnf99QEpS17+0R1Ll
         xx7w==
X-Forwarded-Encrypted: i=1; AJvYcCWjjoUw6ULYU35ypJh5hqMWJCiiS69XbEn5H+SWwT+weRO/IwW9vv79iL5+gOsjz17gkFMniJJaWCc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw+QdoLSK6CPcWlMzl91hNHkiAUPYVkov4Im85C1mymXIJWdov+
	FCtRhzDCn0ARFiaqqYYDKcanT5WmKfAhnwpgVcEUn/A53n3ATnz4JIsSDkiilXY=
X-Google-Smtp-Source: AGHT+IH3RzFjV8RvrlEmMJxpqLllHphwKRxkb3q7KCjAtPBgIIuWQoBEY5KRtR0Mj/2wHDN6Hsqthg==
X-Received: by 2002:a05:6512:1256:b0:536:741a:6bc5 with SMTP id 2adb3069b0e04-539ab84e0ebmr5598135e87.12.1728295925316;
        Mon, 07 Oct 2024 03:12:05 -0700 (PDT)
Date: Mon, 7 Oct 2024 12:12:03 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Sergiy Kibrik <Sergiy_Kibrik@epam.com>
Subject: Re: [XEN PATCH v1 1/3] x86/hvm: introduce config option for ACPI PM
 timer
Message-ID: <ZwOz81NgKetWDpVc@macbook.local>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
 <3ef3724e21b196edd277c94598ebe6624813ede4.1728032664.git.Sergiy_Kibrik@epam.com>
 <Zv_pHR8gUrcHQU5I@macbook.local>
 <36069df2-64ec-4f0e-908e-d0128630daea@suse.com>
 <alpine.DEB.2.22.394.2410041404430.1138574@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.2410041404430.1138574@ubuntu-linux-20-04-desktop>

On Fri, Oct 04, 2024 at 02:07:09PM -0700, Stefano Stabellini wrote:
> On Fri, 4 Oct 2024, Jan Beulich wrote:
> > On 04.10.2024 15:09, Roger Pau Monné wrote:
> > > On Fri, Oct 04, 2024 at 12:31:50PM +0300, Sergiy Kibrik wrote:
> > >> --- a/xen/arch/x86/include/asm/domain.h
> > >> +++ b/xen/arch/x86/include/asm/domain.h
> > >> @@ -496,7 +496,8 @@ struct arch_domain
> > >>  
> > >>  #define has_vlapic(d)      (!!((d)->arch.emulation_flags & X86_EMU_LAPIC))
> > >>  #define has_vhpet(d)       (!!((d)->arch.emulation_flags & X86_EMU_HPET))
> > >> -#define has_vpm(d)         (!!((d)->arch.emulation_flags & X86_EMU_PM))
> > >> +#define has_vpm(d)         (IS_ENABLED(CONFIG_X86_PMTIMER) && \
> > >> +                            !!((d)->arch.emulation_flags & X86_EMU_PM))
> > > 
> > > Do you really need the IS_ENABLED() here?  If you modify
> > > emulation_flags_ok() to reject the flag if not available it won't be
> > > possible for any domain to have it set.
> > 
> > With the IS_ENABLED() the only other approach to have the compiler DCE any
> > code left unreachable would be to #define X86_EMU_PM to 0 in that case. I
> > guess I'd slightly prefer that alternative, but otherwise the approach used
> > here would still be wanted imo.
> 
> The compiler DCE is important, either the approach in this patch or
> Jan's suggestion would work fine as far as I can tell.

I guess I was too focused on has_vpm() usage: note that has_vpm() is
only used in the file that's being removed from the build, so there
will be nothing to DCE afterwards.  That however might not be the case
for all has_* options, neither for has_vpm() moving forwards.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:14:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:14:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811849.1224529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxklQ-000509-UJ; Mon, 07 Oct 2024 10:14:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811849.1224529; Mon, 07 Oct 2024 10: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 1sxklQ-000502-RE; Mon, 07 Oct 2024 10:14:52 +0000
Received: by outflank-mailman (input) for mailman id 811849;
 Mon, 07 Oct 2024 10: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=68k9=RD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sxklO-0004zv-Pa
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:14:50 +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 fc8ebe5b-8494-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 12:14:49 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-53993564cb1so4588268e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 03:14:49 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7e3b54sm358604066b.211.2024.10.07.03.14.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 03:14:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc8ebe5b-8494-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728296089; x=1728900889; 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=9GtaJPDI2oXiodho5q0lJPE2HxeAvEUViQCleTXMbHI=;
        b=G8AruxJ5pFTipfdIbt+fLJ4ZlM4JwlIAPjKGLGSo7NKpX5A7m6+GAJ3c6RLJ3ejnAJ
         k1steYqmVCwU27Zaw+1QclvmLpnvAkrgVBmroAE7ffN0gSfsBvJ1wRMkqhS6WsHPIYWm
         dvfMgNp1MV0SLn4BFnbPnlphHK4+qRaZEtm4E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728296089; x=1728900889;
        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=9GtaJPDI2oXiodho5q0lJPE2HxeAvEUViQCleTXMbHI=;
        b=HmJXZILVaCGF4l/hfwokXK5uzLBYgWu/dtN+EtWlR/BVXZ6hUzEuQ9XMGWeJbplWEJ
         M1DDt9bQcxJPNoJ0gKiMfPzEYvcu2rdrT33BdxZly/pmJm9LfjI1xr3kyatotaWo185q
         wfC0milTpLZDQ4qmkDJ7FDWC/17RnEecWEOzdwtcEo9sFTquDC6QyB7wyegbOL73LZ1O
         PL02qlrOspu06JfnXbNZc9getAKBNP28P+dmEhH7fJUtaBbV8COb5Xei4E7bkK+2UioR
         mwtmj4ACrWb1OowQ5gLXZgiJTnzYs0q1GDoGfyjKr2MpwbMSU+yr74Ex6GUVvfm6B2ek
         Pa/A==
X-Forwarded-Encrypted: i=1; AJvYcCWGHNX6il7BFY153gbnRTwx4QZrkRFCqESkqkZcwC0WXhI+C23tWkNvrq43ZBdof+CmOjoBVGoorVI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzQHx66y36Z5Gj7P8+YZHmTePIcbvO0pMhm618ZdUy0W7BZGncr
	mGv8cUUXVqVtY8PlrypnX7FfGzB5XlV0lb4aWVAWTpFNo/pQ05rDs8AZVQJGHRs=
X-Google-Smtp-Source: AGHT+IE6Uhjc1HCq1+GB7jQICHiXL98qFxGbK++UQXlXnh6rCQVdH2UVaMb1x+vq+3OtXDKPk/caFQ==
X-Received: by 2002:a05:6512:1091:b0:536:548a:ff89 with SMTP id 2adb3069b0e04-539ab8ae3eamr5143755e87.39.1728296089414;
        Mon, 07 Oct 2024 03:14:49 -0700 (PDT)
Date: Mon, 7 Oct 2024 12:14:48 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Sergiy Kibrik <Sergiy_Kibrik@epam.com>, xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [XEN PATCH v1 2/3] x86/hvm: introduce config option for stdvga
 emulation
Message-ID: <ZwO0mH0X96pbx8z_@macbook.local>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com>
 <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.com>
 <Zv_pszkRrPXstXFW@macbook.local>
 <alpine.DEB.2.22.394.2410041407370.1138574@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.2410041407370.1138574@ubuntu-linux-20-04-desktop>

On Fri, Oct 04, 2024 at 02:08:10PM -0700, Stefano Stabellini wrote:
> On Fri, 4 Oct 2024, Roger Pau Monné wrote:
> > On Fri, Oct 04, 2024 at 12:33:53PM +0300, Sergiy Kibrik wrote:
> > > Introduce config option X86_STDVGA so that stdvga emulation driver can later be
> > > made configurable and be disabled on systems that don't need it.
> > > 
> > > As a first step the option is hidden from user. No functional changes intended.
> > > 
> > > Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
> > > CC: Jan Beulich <jbeulich@suse.com>
> > > ---
> > >  xen/arch/x86/Kconfig              | 3 +++
> > >  xen/arch/x86/hvm/Makefile         | 2 +-
> > >  xen/arch/x86/include/asm/domain.h | 3 ++-
> > >  xen/arch/x86/include/asm/hvm/io.h | 4 ++++
> > >  4 files changed, 10 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
> > > index 95275dc17e..89c42ff6da 100644
> > > --- a/xen/arch/x86/Kconfig
> > > +++ b/xen/arch/x86/Kconfig
> > > @@ -147,6 +147,9 @@ config INTEL_VMX
> > >  config X86_PMTIMER
> > >  	def_bool HVM
> > >  
> > > +config X86_STDVGA
> > > +	def_bool HVM
> > 
> > Same as previous patch, the content of patch 3 needs to be moved here.
> > 
> > > +
> > >  config XEN_SHSTK
> > >  	bool "Supervisor Shadow Stacks"
> > >  	depends on HAS_AS_CET_SS
> > > diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
> > > index 321241f0bf..b7741b0f60 100644
> > > --- a/xen/arch/x86/hvm/Makefile
> > > +++ b/xen/arch/x86/hvm/Makefile
> > > @@ -22,7 +22,7 @@ obj-$(CONFIG_X86_PMTIMER) += pmtimer.o
> > >  obj-y += quirks.o
> > >  obj-y += rtc.o
> > >  obj-y += save.o
> > > -obj-y += stdvga.o
> > > +obj-$(CONFIG_X86_STDVGA) += stdvga.o
> > >  obj-y += vioapic.o
> > >  obj-y += vlapic.o
> > >  obj-y += vm_event.o
> > > diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> > > index 3f65bfd190..675a13d917 100644
> > > --- a/xen/arch/x86/include/asm/domain.h
> > > +++ b/xen/arch/x86/include/asm/domain.h
> > > @@ -501,7 +501,8 @@ struct arch_domain
> > >  #define has_vrtc(d)        (!!((d)->arch.emulation_flags & X86_EMU_RTC))
> > >  #define has_vioapic(d)     (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC))
> > >  #define has_vpic(d)        (!!((d)->arch.emulation_flags & X86_EMU_PIC))
> > > -#define has_vvga(d)        (!!((d)->arch.emulation_flags & X86_EMU_VGA))
> > > +#define has_vvga(d)        (IS_ENABLED(CONFIG_X86_STDVGA) && \
> > 
> > You don't need the IS_ENABLED() if emulation_flags_ok() is adjusted
> > accordingly.
> 
> Same as patch #1 regarding compiler DCE, we could either do this or
> define X86_EMU_VGA to zero

Yup, seen that.  Defining iX86_EMU_VGA to 0 would be my preference,
like it's done for the !CONFIG_HVM case.

Note however, that like has_vpm(), has_vvga() is only used in the file
that this patch makes optional from the build.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:24:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:24:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811857.1224538 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxkuv-0002BG-PJ; Mon, 07 Oct 2024 10:24:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811857.1224538; Mon, 07 Oct 2024 10:24: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 1sxkuv-0002B9-Mj; Mon, 07 Oct 2024 10:24:41 +0000
Received: by outflank-mailman (input) for mailman id 811857;
 Mon, 07 Oct 2024 10:24: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxkuu-0002B3-Ct
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:24: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 5b2bfcc3-8496-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 12:24:38 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c5b954c359so4997888a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 03:24:38 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a995138f458sm149901366b.209.2024.10.07.03.24.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 03:24:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b2bfcc3-8496-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728296678; x=1728901478; 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=gC+zrrm9V1XyVSw81BagawSFuW5ySZSfJNKigjHTywo=;
        b=J0abY1GsRuSh83PLn9GACZipFn687QlGzCCanF7ga1DpAP/ZnrC6xejhHtd14aeokJ
         NHBE9M4BP4wH0oWuvxHA7hJHfep2QK4fyuwpWYL+BVtzAd/ATiQbF+rQeFfJ7HrTwdaI
         FYuaZWG/rY8iMopwo4Rho8fjtVdmOJes9/fQDyIToNHlkKI46Iz7QAeMnxoVXHGQgV0Q
         NihFH4FQHxDGqj3NSJdKi3v7Pu5be2vXqAwtYnnuQVdGuahNueh7S6lyGid5xB2J/XvH
         5NtHOO8Y1BZMkXucefUjI9xZ4FkDzjygGWDVAiStpi1Qc8utr5N6caSzHknSfrufPHTv
         PxNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728296678; x=1728901478;
        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=gC+zrrm9V1XyVSw81BagawSFuW5ySZSfJNKigjHTywo=;
        b=h8FxrCtBZFJtUXxYdz5mrrEPNzrTRmxZYKS5yaZ+Twn0ZLnU+SkvqiLcfQ1ZssOEat
         vjQ4am/2m3SCqH+AuXGyx5RzDIsJJwoyvMbbC9KmdKFhdtmSG3VgPnoii7Ny9mZUiUsb
         U3h15ViG9sI9XCoWOeNg1HKEcTQZ9IjtTSABgQxb490XrCot8TFJiSnWEIkhTdIIZ3wd
         K7bh+dh2ZaalRP3kXrUCOY+pNgT6LetHB0x0lx2ofb26VOOhLZiuMUucUNqSuKMzvHUM
         yn50LwReCbXdYepnXkBKwYvhSPYFPiLhHVobuO9l6r0/3GuCvvwN1DQfysmQd/rpedU6
         O4rg==
X-Forwarded-Encrypted: i=1; AJvYcCVLyLIeD7HM64sVj1WwYGRmVaNdlihhabla7BbS5NSyWsfE4z2Tl0dKFDmgSs8nQL3MmnR0IgqYwHI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzUceDorIOkci6HazGLH5337h2OJy5ADFWiPl8McfDoU2QdjTnu
	7A9PHA0a2rNEg6096asvsp1wlH1CNm9ZG7ym297SAKykTcKTlI+nKR57V8rsxA==
X-Google-Smtp-Source: AGHT+IHCxEOaJtjQic9cuZ4/ur4nSFipLtL/rtbQ0jKGUnb+5JbkwBa2LTLa+P2Lea7R6Nt5qOXu5A==
X-Received: by 2002:a17:907:743:b0:a77:c95e:9b1c with SMTP id a640c23a62f3a-a991bd79527mr1246051066b.27.1728296677681;
        Mon, 07 Oct 2024 03:24:37 -0700 (PDT)
Message-ID: <2795fca2-5765-4337-9110-4b0166becd90@suse.com>
Date: Mon, 7 Oct 2024 12:24:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Reuse code to relocate trampoline
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-3-frediano.ziglio@cloud.com>
 <e7e5200e-4577-4f67-bb3e-6f71086fc663@citrix.com>
 <0bfcd06d-cc3a-4048-bab4-0d5cd794fa1a@suse.com>
 <CACHz=Zg3R4Ybr0GwhSaYsOo72mWtapnpQ7w-Wb=wjrf-or1J_g@mail.gmail.com>
 <CACHz=ZjCAEE2kiWdce0ApQqtA-3urSMFJYRdKv8Qa_-BrZZ8bw@mail.gmail.com>
 <0439f313-1360-47b0-ae7e-a2a74ee4d51e@suse.com>
 <c3599934-8ea6-44d3-95da-9a307f952f2d@citrix.com>
 <CACHz=ZgAfQP3ChV=CqNxKDWGHQ-DVreTCJ_svGEuyqfnzuzRXQ@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: <CACHz=ZgAfQP3ChV=CqNxKDWGHQ-DVreTCJ_svGEuyqfnzuzRXQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07.10.2024 12:00, Frediano Ziglio wrote:
> On Mon, Oct 7, 2024 at 10:47 AM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>>
>> On 07/10/2024 10:04 am, Jan Beulich wrote:
>>> On 07.10.2024 10:15, Frediano Ziglio wrote:
>>>> On Mon, Oct 7, 2024 at 9:07 AM Frediano Ziglio
>>>> <frediano.ziglio@cloud.com> wrote:
>>>>> On Mon, Oct 7, 2024 at 8:03 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>>>> On 05.10.2024 15:21, Andrew Cooper wrote:
>>>>>>> On 05/10/2024 9:02 am, Frediano Ziglio wrote:
>>>>>>>> --- a/xen/arch/x86/boot/Makefile
>>>>>>>> +++ b/xen/arch/x86/boot/Makefile
>>>>>>>> @@ -1,6 +1,6 @@
>>>>>>>> -obj-bin-y += head.o cbundle.o
>>>>>>>> +obj-bin-y += head.o cbundle.o reloc-trampoline.x64.o
>>>>>>> Ah.  I think the $(obj)/%.x64.o rule you had in the previous patch wants
>>>>>>> introducing here.
>>>>>>>
>>>>>>> That said, x64 is the one name for 64bit that we reliably don't use.
>>>>>>> Also...
>>>>>>>
>>>>>>>> -head-bin-objs := cmdline.o reloc.o
>>>>>>>> +head-bin-objs := cmdline.o reloc.o reloc-trampoline.o
>>>>>>> ... head-bin-objs isn't really correct now seeing as they're not
>>>>>>> binaries in head.S.  Also ...
>>>>>>>
>>>>>>>>  nocov-y   += $(head-bin-objs)
>>>>>>>>  noubsan-y += $(head-bin-objs)
>>>>>>> The no$(foo)'s needs extending to the 64bit objects too.  They're also
>>>>>>> used early enough to explode.
>>>>>>>
>>>>>>> In Xen, 64bit objects are the norm, and it's 32bit ones which are the
>>>>>>> exception, so how about we special case *.i386.o instead.  Then
>>>>>>>
>>>>>>> obj32 := cmdline.i386.o
>>>>>>> obj32 += reloc.i386.o
>>>>>>> obj32 += reloc-trampoline.i386.o
>>>>>> I'd like to advocate for ix86 or i686. i386 gives a wrong impression imo.
>>>>> Why not simply x86 ? We already use it.
>>>>>
>>>> Looking at current files, we also use (to distinguish more clearly 32
>>>> and 64 bit) x86_32.
>>> Either would be fine with me; as to x86 I took it that Andrew wanted to
>>> express the 32-bit-ness, which x86 alone doesn't unambiguously do.
>>
>> On further thought, why not just foo.32.o ?
>>
>> That should be clear enough.
> 
> At this point, it starts to be more of a personal preference.
> I slightly prefer x86_32 looking at file names and Makefile's macros.
> Pick one.

I like Andrew's most recent suggestion, fwiw.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:35:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:35:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811867.1224553 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxl50-00037N-PY; Mon, 07 Oct 2024 10:35:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811867.1224553; Mon, 07 Oct 2024 10: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 1sxl50-00037G-M8; Mon, 07 Oct 2024 10:35:06 +0000
Received: by outflank-mailman (input) for mailman id 811867;
 Mon, 07 Oct 2024 10: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=4XqV=RD=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sxl4z-00035P-B4
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:35:05 +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 ce010888-8497-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 12:35:01 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 58DB621C04;
 Mon,  7 Oct 2024 10:34: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 1CFF713786;
 Mon,  7 Oct 2024 10:34: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 fYnqBFO5A2dgKgAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 07 Oct 2024 10:34: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: ce010888-8497-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728297299; 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=ZASSLIzfHqopUtGvOkhmKp1Hp3ymOFW1ke9KMIdGtSQ=;
	b=qWA/KZVtlbhcqxrzer4qaMDdaXGJe4OTqULyWuuERjuHGtJFJjogZRb9H3mE+fiZMZTrTu
	mXAHjbTMVDgP2228XqpIfaWQFfcBP8hN/ir/7IsfOVsAFjJtCljyF2axKV9BSy/DTA9ZlJ
	RJBua9GTHXGoI3k7PYoy07kXZAUXDAI=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728297299; 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=ZASSLIzfHqopUtGvOkhmKp1Hp3ymOFW1ke9KMIdGtSQ=;
	b=qWA/KZVtlbhcqxrzer4qaMDdaXGJe4OTqULyWuuERjuHGtJFJjogZRb9H3mE+fiZMZTrTu
	mXAHjbTMVDgP2228XqpIfaWQFfcBP8hN/ir/7IsfOVsAFjJtCljyF2axKV9BSy/DTA9ZlJ
	RJBua9GTHXGoI3k7PYoy07kXZAUXDAI=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 0/2] support individual Xen library use cases
Date: Mon,  7 Oct 2024 12:34:54 +0200
Message-ID: <20241007103456.14946-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.77
X-Spamd-Result: default: False [-2.77 / 50.00];
	BAYES_HAM(-2.97)[99.88%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Instead of using either none or all Xen libraries, support each
library individually.

This series needs to be applied only after the related Xen side series
"stubdom: prepare more fine grained Xen library usage" has been
applied.

Juergen Gross (2):
  mini-os: add config support for each Xen library
  mini-os: drop CONFIG_XC support

 Config.mk | 11 +++++++++--
 Makefile  | 18 +++++++++++++++++-
 2 files changed, 26 insertions(+), 3 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:35:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:35:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811868.1224563 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxl53-0003M6-4T; Mon, 07 Oct 2024 10:35:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811868.1224563; Mon, 07 Oct 2024 10: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 1sxl53-0003Lz-1D; Mon, 07 Oct 2024 10:35:09 +0000
Received: by outflank-mailman (input) for mailman id 811868;
 Mon, 07 Oct 2024 10:35: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=4XqV=RD=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sxl51-0003GC-Ho
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:35:07 +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 d0e0400a-8497-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 12:35:06 +0200 (CEST)
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 E20621FD38;
 Mon,  7 Oct 2024 10:35:04 +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 B731C13786;
 Mon,  7 Oct 2024 10:35: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 O4kvK1i5A2d0KgAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 07 Oct 2024 10:35: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: d0e0400a-8497-11ef-a0bb-8be0dac302b0
Authentication-Results: smtp-out2.suse.de;
	none
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 1/2] add config support for each Xen library
Date: Mon,  7 Oct 2024 12:34:55 +0200
Message-ID: <20241007103456.14946-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241007103456.14946-1-jgross@suse.com>
References: <20241007103456.14946-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Spam-Level: 
X-Spamd-Result: default: False [-4.00 / 50.00];
	REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Spam-Flag: NO
X-Rspamd-Queue-Id: E20621FD38
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org

Instead of adding all or no Xen library (controlled by CONFIG_XC),
support a dedicated config option for each library instead. In order
to support older Xen stubdom build versions, let CONFIG_XC enable
all CONFIG_LIBXEN options.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 Config.mk | 19 +++++++++++++++++++
 Makefile  | 18 +++++++++++++++++-
 2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/Config.mk b/Config.mk
index f2d1f0ae..d0fbacac 100644
--- a/Config.mk
+++ b/Config.mk
@@ -212,6 +212,25 @@ $(foreach i,$(CONFIG-n),$(eval $(i) ?= n))
 CONFIG-x += CONFIG_LIBXS
 CONFIG_LIBXS ?= $(CONFIG_XENBUS)
 
+CONFIG-x += CONFIG_LIBXENCALL
+CONFIG-x += CONFIG_LIBXENCTRL
+CONFIG-x += CONFIG_LIBXENDEVICEMODEL
+CONFIG-x += CONFIG_LIBXENEVTCHN
+CONFIG-x += CONFIG_LIBXENFOREIGNMEMORY
+CONFIG-x += CONFIG_LIBXENGNTTAB
+CONFIG-x += CONFIG_LIBXENGUEST
+CONFIG-x += CONFIG_LIBXENTOOLCORE
+CONFIG-x += CONFIG_LIBXENTOOLLOG
+CONFIG_LIBXENCALL ?= $(CONFIG_XC)
+CONFIG_LIBXENCTRL ?= $(CONFIG_XC)
+CONFIG_LIBXENDEVICEMODEL ?= $(CONFIG_XC)
+CONFIG_LIBXENEVTCHN ?= $(CONFIG_XC)
+CONFIG_LIBXENFOREIGNMEMORY ?= $(CONFIG_XC)
+CONFIG_LIBXENGNTTAB ?= $(CONFIG_XC)
+CONFIG_LIBXENGUEST ?= $(CONFIG_XC)
+CONFIG_LIBXENTOOLCORE ?= $(CONFIG_XC)
+CONFIG_LIBXENTOOLLOG ?= $(CONFIG_XC)
+
 CONFIG-all := $(CONFIG-y) $(CONFIG-n) $(CONFIG-x)
 
 # Export config items as compiler directives
diff --git a/Makefile b/Makefile
index 6c8df8b5..ffa8d1a8 100644
--- a/Makefile
+++ b/Makefile
@@ -123,23 +123,39 @@ endif
 OBJS := $(filter-out $(OBJ_DIR)/lwip%.o $(LWO), $(OBJS))
 
 ifeq ($(libc),y)
-ifeq ($(CONFIG_XC),y)
+ifeq ($(CONFIG_LIBXENTOOLCORE),y)
 APP_LDLIBS += -L$(TOOLCORE_PATH) -whole-archive -lxentoolcore -no-whole-archive
 LIBS += $(TOOLCORE_PATH)/libxentoolcore.a
+endif
+ifeq ($(CONFIG_LIBXENTOOLLOG),y)
 APP_LDLIBS += -L$(TOOLLOG_PATH) -whole-archive -lxentoollog -no-whole-archive
 LIBS += $(TOOLLOG_PATH)/libxentoollog.a
+endif
+ifeq ($(CONFIG_LIBXENEVTCHN),y)
 APP_LDLIBS += -L$(EVTCHN_PATH) -whole-archive -lxenevtchn -no-whole-archive
 LIBS += $(EVTCHN_PATH)/libxenevtchn.a
+endif
+ifeq ($(CONFIG_LIBXENGNTTAB),y)
 APP_LDLIBS += -L$(GNTTAB_PATH) -whole-archive -lxengnttab -no-whole-archive
 LIBS += $(GNTTAB_PATH)/libxengnttab.a
+endif
+ifeq ($(CONFIG_LIBXENCALL),y)
 APP_LDLIBS += -L$(CALL_PATH) -whole-archive -lxencall -no-whole-archive
 LIBS += $(CALL_PATH)/libxencall.a
+endif
+ifeq ($(CONFIG_LIBXENFOREIGNMEMORY),y)
 APP_LDLIBS += -L$(FOREIGNMEMORY_PATH) -whole-archive -lxenforeignmemory -no-whole-archive
 LIBS += $(FOREIGNMEMORY_PATH)/libxenforeignmemory.a
+endif
+ifeq ($(CONFIG_LIBXENDEVICEMODEL),y)
 APP_LDLIBS += -L$(DEVICEMODEL_PATH) -whole-archive -lxendevicemodel -no-whole-archive
 LIBS += $(DEVICEMODEL_PATH)/libxendevicemodel.a
+endif
+ifeq ($(CONFIG_LIBXENGUEST),y)
 APP_LDLIBS += -L$(GUEST_PATH) -whole-archive -lxenguest -no-whole-archive
 LIBS += $(GUEST_PATH)/libxenguest.a
+endif
+ifeq ($(CONFIG_LIBXENCTRL),y)
 APP_LDLIBS += -L$(CTRL_PATH) -whole-archive -lxenctrl -no-whole-archive
 LIBS += $(CTRL_PATH)/libxenctrl.a
 endif
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:35:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:35:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811871.1224581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxl58-0003jB-D9; Mon, 07 Oct 2024 10:35:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811871.1224581; Mon, 07 Oct 2024 10:35: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 1sxl58-0003j3-AB; Mon, 07 Oct 2024 10:35:14 +0000
Received: by outflank-mailman (input) for mailman id 811871;
 Mon, 07 Oct 2024 10:35: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=4XqV=RD=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sxl56-0003GC-Gi
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:35:12 +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 d42bf279-8497-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 12:35:10 +0200 (CEST)
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 89CA121BF8;
 Mon,  7 Oct 2024 10:35: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 596C313786;
 Mon,  7 Oct 2024 10:35: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 1lMhFF65A2eFKgAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 07 Oct 2024 10:35: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: d42bf279-8497-11ef-a0bb-8be0dac302b0
Authentication-Results: smtp-out1.suse.de;
	none
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH 2/2] drop CONFIG_XC support
Date: Mon,  7 Oct 2024 12:34:56 +0200
Message-ID: <20241007103456.14946-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241007103456.14946-1-jgross@suse.com>
References: <20241007103456.14946-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Spam-Level: 
X-Spamd-Result: default: False [-4.00 / 50.00];
	REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Spam-Flag: NO
X-Rspamd-Queue-Id: 89CA121BF8
X-Rspamd-Pre-Result: action=no action;
	module=replies;
	Message is reply to one we originated
X-Rspamd-Action: no action
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org

CONFIG_XC is no longer needed with individual CONFIG_LIBXEN support.

Remove it, while disabling the CONFIG_LIBXEN items by default.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 Config.mk | 30 +++++++++---------------------
 1 file changed, 9 insertions(+), 21 deletions(-)

diff --git a/Config.mk b/Config.mk
index d0fbacac..f59a0cf4 100644
--- a/Config.mk
+++ b/Config.mk
@@ -193,6 +193,15 @@ CONFIG-n += CONFIG_9PFRONT
 CONFIG-n += CONFIG_TPM_TIS
 CONFIG-n += CONFIG_TPMBACK
 CONFIG-n += CONFIG_BALLOON
+CONFIG-n += CONFIG_LIBXENCALL
+CONFIG-n += CONFIG_LIBXENCTRL
+CONFIG-n += CONFIG_LIBXENDEVICEMODEL
+CONFIG-n += CONFIG_LIBXENEVTCHN
+CONFIG-n += CONFIG_LIBXENFOREIGNMEMORY
+CONFIG-n += CONFIG_LIBXENGNTTAB
+CONFIG-n += CONFIG_LIBXENGUEST
+CONFIG-n += CONFIG_LIBXENTOOLCORE
+CONFIG-n += CONFIG_LIBXENTOOLLOG
 # Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
 # console apart of standard dom0 handled console.
 CONFIG-n += CONFIG_USE_XEN_CONSOLE
@@ -201,8 +210,6 @@ CONFIG-y += CONFIG_PARAVIRT
 else
 CONFIG-n += CONFIG_PARAVIRT
 endif
-# Support legacy CONFIG_XC value
-CONFIG_XC ?= $(libc)
 
 CONFIG-$(lwip) += CONFIG_LWIP
 
@@ -212,25 +219,6 @@ $(foreach i,$(CONFIG-n),$(eval $(i) ?= n))
 CONFIG-x += CONFIG_LIBXS
 CONFIG_LIBXS ?= $(CONFIG_XENBUS)
 
-CONFIG-x += CONFIG_LIBXENCALL
-CONFIG-x += CONFIG_LIBXENCTRL
-CONFIG-x += CONFIG_LIBXENDEVICEMODEL
-CONFIG-x += CONFIG_LIBXENEVTCHN
-CONFIG-x += CONFIG_LIBXENFOREIGNMEMORY
-CONFIG-x += CONFIG_LIBXENGNTTAB
-CONFIG-x += CONFIG_LIBXENGUEST
-CONFIG-x += CONFIG_LIBXENTOOLCORE
-CONFIG-x += CONFIG_LIBXENTOOLLOG
-CONFIG_LIBXENCALL ?= $(CONFIG_XC)
-CONFIG_LIBXENCTRL ?= $(CONFIG_XC)
-CONFIG_LIBXENDEVICEMODEL ?= $(CONFIG_XC)
-CONFIG_LIBXENEVTCHN ?= $(CONFIG_XC)
-CONFIG_LIBXENFOREIGNMEMORY ?= $(CONFIG_XC)
-CONFIG_LIBXENGNTTAB ?= $(CONFIG_XC)
-CONFIG_LIBXENGUEST ?= $(CONFIG_XC)
-CONFIG_LIBXENTOOLCORE ?= $(CONFIG_XC)
-CONFIG_LIBXENTOOLLOG ?= $(CONFIG_XC)
-
 CONFIG-all := $(CONFIG-y) $(CONFIG-n) $(CONFIG-x)
 
 # Export config items as compiler directives
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:36:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:36:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811864.1224590 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxl65-0004qu-NX; Mon, 07 Oct 2024 10:36:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811864.1224590; Mon, 07 Oct 2024 10:36: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 1sxl65-0004qn-L2; Mon, 07 Oct 2024 10:36:13 +0000
Received: by outflank-mailman (input) for mailman id 811864;
 Mon, 07 Oct 2024 10:30: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=yj4Z=RD=syndicat.com=nd@srs-se1.protection.inumbo.net>)
 id 1sxl0g-00031M-Pm
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:30:39 +0000
Received: from mail.syndicat.com (mail.syndicat.com [62.146.89.62])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 30b5e5f1-8497-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 12:30:36 +0200 (CEST)
Received: from localhost.syndicat.com ([127.0.0.1]:62311 helo=localhost)
 by mail.syndicat.com with esmtp (Syndicat PostHamster 12.2 4.96.1)
 (envelope-from <nd@syndicat.com>) id 1sxkzy-0002o3-0X;
 Mon, 07 Oct 2024 12:29:54 +0200
Received: from mail.syndicat.com ([127.0.0.1])
 by localhost (mail.syndicat.com [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id S8PNeOnJl_IF; Mon,  7 Oct 2024 12:29:53 +0200 (CEST)
Received: from [62.89.4.53] (port=62965 helo=gongov.localnet)
 by mail.syndicat.com with esmtpsa  (TLS1.3) tls TLS_AES_256_GCM_SHA384
 (Syndicat PostHamster 12.2 4.96.1) (envelope-from <nd@syndicat.com>)
 id 1sxkzx-0007Je-1p; Mon, 07 Oct 2024 12:29:53 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 30b5e5f1-8497-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=syndicat.com; s=x; h=Content-Type:MIME-Version:References:In-Reply-To:
	Message-ID:Date:Subject:Cc:Reply-To:To:From:Sender:Content-Transfer-Encoding:
	Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
	Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
	List-Subscribe:List-Post:List-Owner:List-Archive;
	bh=EAprCz2Gwkm9+pncvZr2IJ9AQor7OnWEiPmOKypE4qM=; b=q80ZG8feEmafqmtw50AGULQgzC
	IwN3tCOeXvM5hn1fH50Ucu4L6mzmZIoDlIrYPC0yiQNideCrU3IdTqYtQ50ikYSSj0bTzM7voe/9D
	BYz1SC6qdLx8BGQJUAgxcfKWBkMnJ8JNITx6w3PL5lejmIZKo+Sb5KSRO4s7wBs5YoSE=;
X-Virus-Scanned: amavisd-new at syndicat.com
From: Niels Dettenbach <nd@syndicat.com>
To: x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>
Reply-To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 "Peter Zijlstra (Intel)" <peterz@infradead.org>,
 Ingo Molnar <mingo@redhat.com>, Thomas Gleixner <tglx@linutronix.de>,
 linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
 xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/1] x86: SMP broken on Xen PV DomU since 6.9
Date: Mon, 07 Oct 2024 12:29:46 +0200
Message-ID: <3635258.LM0AJKV5NW@gongov>
Organization: Syndicat IT&Internet
Disposition-Notification-To:
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
In-Reply-To: <45f3a10c-8695-42cb-abb8-8c13ce1a476b@suse.com>
References:
 <2210883.Icojqenx9y@gongov> <864022534.0ifERbkFSE@gongov>
 <45f3a10c-8695-42cb-abb8-8c13ce1a476b@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart16948470.geO5KgaWL5";
 micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Report-Abuse-To: abuse@syndicat.com (see https://www.syndicat.com/kontakt/kontakte/)
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname - mail.syndicat.com
X-AntiAbuse: Original Domain - lists.xenproject.org
X-AntiAbuse: Sender Address Domain - syndicat.com

--nextPart16948470.geO5KgaWL5
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Niels Dettenbach <nd@syndicat.com>
To: x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>
Reply-To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Subject: Re: [PATCH 1/1] x86: SMP broken on Xen PV DomU since 6.9
Date: Mon, 07 Oct 2024 12:29:46 +0200
Message-ID: <3635258.LM0AJKV5NW@gongov>
Organization: Syndicat IT&Internet
In-Reply-To: <45f3a10c-8695-42cb-abb8-8c13ce1a476b@suse.com>
MIME-Version: 1.0

Am Freitag, 4. Oktober 2024, 12:29:57  schrieb J=C3=BCrgen Gro=C3=9F:
> On 04.10.24 12:05, Niels Dettenbach wrote:
>=20
> > Virtual machines under Xen Hypervisor (DomU) running in Xen PV mode use
> > a
> > special, nonstandard synthetized CPU topology which "just works" under
> > kernels 6.9.x while newer kernels wrongly assuming a "crash kernel" and
> > disable SMP (reducing to one CPU core) because the newer topology
> > implementation produces a wrong error "[Firmware Bug]: APIC enumeration
> > order not specification compliant" after new topology checks which are
> > improper for Xen PV platform. As a result, the kernel disables SMP and
> > activates just one CPU core within the PV DomU "VM" (DomU in PV mode).
> >=20
> > The patch disables the regarding checks if it is running in Xen PV
> > mode (only) and bring back SMP / all CPUs as in the past to such DomU
> > VMs. The Xen subsystem takes care of the proper interaction between
> > "guest" (DomU) and the "host" (Dom0).
> >=20
> > Signed-off-by: Niels Dettenbach <nd@syndicat.com>
>=20
>=20
> Does the attached patch instead of yours help?
>=20
> Compile tested only.


it does =C3=9F)))


domU:
=2D- snip --
vcpus=3D6
cpu=3D"12,13,14,15,23,24"
=2D- snap --


=2D- snip --
[    0.500458] cpu 0 spinlock event irq 1
[    0.500485] VPMU disabled by hypervisor.
[    0.501273] Performance Events: unsupported p6 CPU model 62 no PMU drive=
r, software events only.
[    0.501304] signal: max sigframe size: 1776
[    0.501410] rcu: Hierarchical SRCU implementation.
[    0.501428] rcu:     Max phase no-delay instances is 400.
[    0.502032] NMI watchdog: Perf NMI watchdog permanently disabled
[    0.502309] smp: Bringing up secondary CPUs ...
[    0.502759] installing Xen timer for CPU 2
[    0.503384] installing Xen timer for CPU 4
[    0.503838] cpu 2 spinlock event irq 16
[    0.503870] cpu 4 spinlock event irq 17
[    0.504867] installing Xen timer for CPU 1
[    0.505495] installing Xen timer for CPU 3
[    0.506125] installing Xen timer for CPU 5
[    0.506363] cpu 1 spinlock event irq 33
[    0.507869] cpu 3 spinlock event irq 34
[    0.507901] cpu 5 spinlock event irq 35
[    0.507923] smp: Brought up 1 node, 6 CPUs
=2D- snap --



thank you very much!


niels.


--nextPart16948470.geO5KgaWL5
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

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

iQIzBAABCgAdFiEEen+3H2N8RDyGzUZnDbtaiEWSKkQFAmcDuBoACgkQDbtaiEWS
KkQnsg/+KCqd6M8AuOs1taM3LOothfBX+XvsqupFVM3+d6q88qITNequbF+q5ktV
QfVFy5i3GcIah1mx4cXMEBGipYczDEHQ9qQg2WnyRkgXBstPByztA2N47h7EyzXd
UcEDcApFiuonMxVV6r5/j01OIRAmk7zLrJzDpzUkh6ybJV4rpj+b+rabboHS1wA3
G5xmRCSZVGXQaxAKWUzt2IL/NEd0/36JvZgMukolf5Dj9Mbe8Uy7EhGxTCTUCQyO
kbfb7kd/HVdW4+tFXAU+U18Lvmg/cKt0ECdv/Adj+8ZYBfAgAJyWglQIgGlozHCm
OYPjBIEQe4KdODFg8xFa4Z4gQbEsfB1tZekj/rzMk54iHX71DYPNjCD9Mdk3+W1K
EUtOnLDZuLklbNfr6fE2NLcClVG4BeaFAj4xwY4o7YxCz0KUlvJkX6wdHGojCu+F
kvBIXDLu/0Kvor1mPSlsnWZ0No+pq1MsiRgXeLGhVW08wO4RQD9ZZAu/KEsjkZK+
tw3jTazLcfxsJlh5zAK/toG0ST9HNac5AJ1BYjFKW6+wbVNIjlAkCAB/MLIaTmq4
da0881C3+yYlk0aJMGSxqTW7S9hvECHsWoFak+6E/vy1pvYqJDrkAflYPufsVpjv
RNo2XOKfCztP2oSOypiQJSdvl+9NwXWhbJvwc1m7HNWFHYU5xJQ=
=WEKw
-----END PGP SIGNATURE-----

--nextPart16948470.geO5KgaWL5--





From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:42:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:42:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811913.1224600 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxlBn-0002MH-At; Mon, 07 Oct 2024 10:42:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811913.1224600; Mon, 07 Oct 2024 10:42: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 1sxlBn-0002MA-7r; Mon, 07 Oct 2024 10:42:07 +0000
Received: by outflank-mailman (input) for mailman id 811913;
 Mon, 07 Oct 2024 10:42: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=4XqV=RD=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sxlBm-0002M2-Ht
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:42:06 +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 cabc0e05-8498-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 12:42:04 +0200 (CEST)
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 C4C8C21C0F;
 Mon,  7 Oct 2024 10:42: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 6C82D132BD;
 Mon,  7 Oct 2024 10:42: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 kbxuGPu6A2fJLAAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 07 Oct 2024 10:42: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>
X-Inumbo-ID: cabc0e05-8498-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728297723; 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=BD5PqP23e7/83Pok91rp0zgpvGvnOoNWAFujvQURO0Y=;
	b=uXtvUwVVTWamdCCB5gkbPQvkslxeS+AD8S+d35rK1j18gHSNdXkZbY6KSMibb5uqLZ77k9
	FN3V799o9L39Sf6Q/QXuu7pAmtrAnngIbO0BEn9k9X5vkbR5H65Vc/QMt8zqqBn7wmTMFq
	t8KIn7KNpc3beG5wxA+k1bmoVvOEWXA=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=uXtvUwVV
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728297723; 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=BD5PqP23e7/83Pok91rp0zgpvGvnOoNWAFujvQURO0Y=;
	b=uXtvUwVVTWamdCCB5gkbPQvkslxeS+AD8S+d35rK1j18gHSNdXkZbY6KSMibb5uqLZ77k9
	FN3V799o9L39Sf6Q/QXuu7pAmtrAnngIbO0BEn9k9X5vkbR5H65Vc/QMt8zqqBn7wmTMFq
	t8KIn7KNpc3beG5wxA+k1bmoVvOEWXA=
From: Juergen Gross <jgross@suse.com>
To: linux-kernel@vger.kernel.org,
	x86@kernel.org
Cc: Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	xen-devel@lists.xenproject.org,
	Niels Dettenbach <nd@syndicat.com>
Subject: [PATCH] x86/xen: mark boot CPU of PV guest in MSR_IA32_APICBASE
Date: Mon,  7 Oct 2024 12:42:01 +0200
Message-ID: <20241007104201.15607-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: C4C8C21C0F
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	TO_DN_SOME(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[11];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	DKIM_TRACE(0.00)[suse.com:+];
	FROM_HAS_DN(0.00)[]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

Recent topology checks of the x86 boot code uncovered the need for
PV guests to have the boot cpu marked in the APICBASE MSR.

Fixes: 9d22c96316ac ("x86/topology: Handle bogus ACPI tables correctly")
Reported-by: Niels Dettenbach <nd@syndicat.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/xen/enlighten_pv.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index 2c12ae42dc8b..d6818c6cafda 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -1032,6 +1032,10 @@ static u64 xen_do_read_msr(unsigned int msr, int *err)
 	switch (msr) {
 	case MSR_IA32_APICBASE:
 		val &= ~X2APIC_ENABLE;
+		if (smp_processor_id() == 0)
+			val |= MSR_IA32_APICBASE_BSP;
+		else
+			val &= ~MSR_IA32_APICBASE_BSP;
 		break;
 	}
 	return val;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 10:57:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 10:57:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811921.1224612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxlQ4-00029I-Io; Mon, 07 Oct 2024 10:56:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811921.1224612; Mon, 07 Oct 2024 10: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 1sxlQ4-00029B-Dm; Mon, 07 Oct 2024 10:56:52 +0000
Received: by outflank-mailman (input) for mailman id 811921;
 Mon, 07 Oct 2024 10:56: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxlQ2-000293-Vn
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 10:56:51 +0000
Received: from mail-ot1-x330.google.com (mail-ot1-x330.google.com
 [2607:f8b0:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d9fe005f-849a-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 12:56:49 +0200 (CEST)
Received: by mail-ot1-x330.google.com with SMTP id
 46e09a7af769-71547c00de3so2208006a34.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 03:56:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d9fe005f-849a-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728298608; x=1728903408; 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=0T78XKq+HRxXQOqIXXjmBCiLh1IZoWrjBdx1HfgWpEc=;
        b=dwRw0NutDZ2cKpIJUOgf3PXdZnr99fBh1y0PkSv4Se3Name/wdZBctQG459AtdV5k5
         iP1GLePqvPWJ4xcVN2KAyvGkpQ3l2GU4+wwvgfdIZzpDg3p0nsK7cROMeRBeG5jq7J2G
         p1h0d6g2eIeXZWQqsLryYAWXa5FRX6Z42eltk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728298608; x=1728903408;
        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=0T78XKq+HRxXQOqIXXjmBCiLh1IZoWrjBdx1HfgWpEc=;
        b=RFcIbclDBtt5TXw80FXjBhZNY5Kn/UNqiwDIpEyxEZUWFP0SEgakSjl10D6DaMtatF
         rV9iz6/qz15aBHpQ5IAtT9PiPfuDNle8+QaKfrM8FAu3ZyCcU3gePpAk6rNq89LCo3dj
         eF8RR2IEnxkaoi6fvIyr2LxgzIM7V5Dfb7qqvxPepWlmavDoVWLWeeS7dzkGsClMITAb
         NrlrZ1F5BptktiUmUvhvst8lvvWj/fkXEKN002Iwd8794hSqvBxXrhxjAfE1NoC19kax
         ix1vKYgi1t12ZZtT/LunK1vC1Hy32eucoyCWobgHtxBHQMR7stLwjlo4mZbE6xdsXAw4
         JzKg==
X-Gm-Message-State: AOJu0YxEKe8SQfCFNVv7ADRmKGWGXrh2B3YwbxiBgRC+B+1ZxLL+4DgY
	Rt38p80DtvW95zh/DThZ0aTjB09nksI65p5Uqjq/ezJ+bBcaK9v0FqW1KF9Kcrtz4rIob5BN7aC
	tsj9iJL3GMcRUoyHk9lCHFPwY4+IzOfG223Mn9A==
X-Google-Smtp-Source: AGHT+IEeEjwFvSn0l2wxSlAl2D9YTFozdTG1nWwF59KskADYra4My/GR6ACYzN68Zx395cjF0IuthgTOuFzDY0SzQ5U=
X-Received: by 2002:a05:6870:b69e:b0:270:1fc6:18 with SMTP id
 586e51a60fabf-287c1d38cbfmr7915573fac.3.1728298608316; Mon, 07 Oct 2024
 03:56:48 -0700 (PDT)
MIME-Version: 1.0
References: <20241005080233.1248850-1-frediano.ziglio@cloud.com>
 <20241005080233.1248850-4-frediano.ziglio@cloud.com> <10890c99-f1ed-4e59-a86b-f79cb6065aa9@citrix.com>
 <CACHz=Zj=Bf9cXML1XcHYpC3wXi0A-wvYvy3DTSAVn4xtmOii6w@mail.gmail.com>
In-Reply-To: <CACHz=Zj=Bf9cXML1XcHYpC3wXi0A-wvYvy3DTSAVn4xtmOii6w@mail.gmail.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 7 Oct 2024 11:56:37 +0100
Message-ID: <CACHz=ZigY-vWGK3vpBUVqBO5KGmKD+CZCAavyW+-FV1qZ=3Z9Q@mail.gmail.com>
Subject: Re: [PATCH 3/3] x86/boot: Use boot_vid_info and trampoline_phys
 variables directly from C code
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 7, 2024 at 11:06=E2=80=AFAM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> On Sat, Oct 5, 2024 at 2:43=E2=80=AFPM Andrew Cooper <andrew.cooper3@citr=
ix.com> wrote:
> >
> > On 05/10/2024 9:02 am, Frediano Ziglio wrote:
> > > diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> > > index ade2c5c43d..dcda91cfda 100644
> > > --- a/xen/arch/x86/boot/head.S
> > > +++ b/xen/arch/x86/boot/head.S
> > > @@ -510,22 +510,10 @@ trampoline_setup:
> > >          mov     %esi, sym_esi(xen_phys_start)
> > >          mov     %esi, sym_esi(trampoline_xen_phys_start)
> > >
> > > -        /* Get bottom-most low-memory stack address. */
> > > -        mov     sym_esi(trampoline_phys), %ecx
> > > -        add     $TRAMPOLINE_SPACE,%ecx
> > > -
> > > -#ifdef CONFIG_VIDEO
> > > -        lea     sym_esi(boot_vid_info), %edx
> > > -#else
> > > -        xor     %edx, %edx
> > > -#endif
> > > -
> > >          /* Save Multiboot / PVH info struct (after relocation) for l=
ater use. */
> > > -        push    %edx                /* Boot video info to be filled =
from MB2. */
> > >          mov     %ebx, %edx          /* Multiboot / PVH information a=
ddress. */
> > > -        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk=
) using fastcall. */
> > > +        /*      reloc(magic/eax, info/edx) using fastcall. */
> > >          call    reloc
> > > -        add     $4, %esp
> > >
> >
> > Please split this patch in two.  Just for testing sanity sake if nothin=
g
> > else.
> >
>
> Sorry, it's not clear how it should be split. What are the 2 parts ?
>

Never mind, understood, one variable per commit.

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 12:48:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 12:48:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811968.1224622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxn9W-0000Gr-4o; Mon, 07 Oct 2024 12:47:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811968.1224622; Mon, 07 Oct 2024 12:47: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 1sxn9W-0000Gk-0N; Mon, 07 Oct 2024 12:47:54 +0000
Received: by outflank-mailman (input) for mailman id 811968;
 Mon, 07 Oct 2024 12:47: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=A6ez=RD=bounce.vates.tech=bounce-md_30504962.6703d874.v1-9f5efe9abb5e4bfe8737a8c13d10aab3@srs-se1.protection.inumbo.net>)
 id 1sxn9T-0000Ge-WB
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 12:47:52 +0000
Received: from mail137-12.atl71.mandrillapp.com
 (mail137-12.atl71.mandrillapp.com [198.2.137.12])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5c1d89c2-84aa-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 14:47:50 +0200 (CEST)
Received: from pmta07.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail137-12.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4XMf7m5Rkfz5QkPWm
 for <xen-devel@lists.xenproject.org>; Mon,  7 Oct 2024 12:47:48 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 9f5efe9abb5e4bfe8737a8c13d10aab3; Mon, 07 Oct 2024 12:47: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: 5c1d89c2-84aa-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728305268; x=1728565768;
	bh=QXW5FrsKYwaOPiXwxcQJyb9Hb2CF90cx9YcRtpeM+Ak=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=iu7y3Lx2Fp5RaQ67OTdCjkk0IzeC0JiIVBmGQifNHyICD4KaNQviujCnXbVTpJ8ZZ
	 2Be5M+pvJo2kA666BTwfctkp8X4YcDJTxAjNiSzM1kki1nEx+8UlRuxb/qmAQk0pVi
	 gxBdE9Ch3uU2WQ7WW2+A6Nzr/3xtXG5lIgeHxEBTA5B7JFzKEEJRN9yaeiWH8knuXb
	 xKzsliSNnlmbFvWo2FBso9Y2PGSYMJUiovaob+mqRlt5uzPqbUMOHqwEJmjTJXPDol
	 SsLXHa1ja9UVl8PRtTqj2OdIpdzu17vAjpCkygFW6ecN/qErynS+FKB0CX8sKIFVt7
	 7G8Qs2kuuQbOw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728305268; x=1728565768; i=anthony.perard@vates.tech;
	bh=QXW5FrsKYwaOPiXwxcQJyb9Hb2CF90cx9YcRtpeM+Ak=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=XDo0TIsl1MnRCcEuTQlCa+9AUpE/HsVgVLHsuvrmwKOAUzDcv83B3mDeQ4N3W47ZK
	 O+or7uDs8PkoSbWYPP1VqYwKVSDb66B9iigsBKVATp4vyCj1AAMEjwiDSJun7uwVLs
	 mzqGUxh9RdYSPCX7QKrjg0n0mF+2k6kBC5tHFjXDoGtQQ/KHZD+JJVVcSqGoCuURHO
	 S/5GBnY8Qq9Oa/yR4GURer12F6hs1v0rDsfCerKpnKprZio6us0xupsx6UptCGdnrH
	 3448UwZFIlKZ8TCh7ztjLgYqRa+NVDrpiiC2o5e+qsXqcMvChno00sIfDTG1otibjB
	 AIqSQ8etLMcdg==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=201/4]=20stubdom:=20add=20local=20.gitignore=20file?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728305267516
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Samuel Thibault <samuel.thibault@ens-lyon.org>
Message-Id: <ZwPYcubFAkIs+pf9@l14>
References: <20241005151548.29184-1-jgross@suse.com> <20241005151548.29184-2-jgross@suse.com>
In-Reply-To: <20241005151548.29184-2-jgross@suse.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.9f5efe9abb5e4bfe8737a8c13d10aab3?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241007:md
Date: Mon, 07 Oct 2024 12:47:48 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Sat, Oct 05, 2024 at 05:15:45PM +0200, Juergen Gross wrote:
> Add a stubdom specfic .gitignore file.

More like "Move stubdom specific ignored file into it." because there's
no changes to the list of ignored paths, and we don't usually need to
repeate the title of the commit in its description in the Xen repo.

> Signed-off-by: Juergen Gross <jgross@suse.com>

In any case all looks fine:
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 12:56:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 12:56:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811973.1224632 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxnI9-0006kh-0D; Mon, 07 Oct 2024 12:56:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811973.1224632; Mon, 07 Oct 2024 12:56: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 1sxnI8-0006k8-RK; Mon, 07 Oct 2024 12:56:48 +0000
Received: by outflank-mailman (input) for mailman id 811973;
 Mon, 07 Oct 2024 12:56: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxnI7-0006c1-Iv
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 12:56:47 +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 9b403ee7-84ab-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 14:56:45 +0200 (CEST)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fabd2c4ac0so46558431fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 05:56:45 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05aa730sm3154868a12.36.2024.10.07.05.56.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 05:56:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b403ee7-84ab-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728305804; x=1728910604; 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=l5rHd8j7SQtWo0/HDn0HELBYlIhnDhpmKYqeRzmVZ+w=;
        b=Gl5SR2KuMm+wrm0YWF57YFAUsOm9lpUfm0tpYTZPFNFfJEvSE9+MUxTvdEuJvytkec
         XUp1ie7iQEBTFnn9v0wfmNthIG7exl9f0p7AOZk8lEJ4PSDREJAEuukTU39cjlonBGls
         7hnJB6Me2Aek9RUVph3/m0rFT9CtPJy69hLJ0+LBkkRDRDk5NohcE07Cplr/juxmxHK4
         JK9cB2abtyRc5dTlH0r/4gXUJzTGS2LQ12T2Jwqe+Jl3qNF8fz1NwfYv6YW8Inw5jRwW
         /YnAv7izMLqxADN8eLz0EU7s6IqwHoeB5TG6mLvoU9+yK5/9KBpFvcTXOfL+jLesQXOq
         DU9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728305804; x=1728910604;
        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=l5rHd8j7SQtWo0/HDn0HELBYlIhnDhpmKYqeRzmVZ+w=;
        b=DCHQgyQ/d2AqTjed8Mek7amRy43MWtIfIYUAjkAiNq8FC7OB3b2IXqaO319V67CIGt
         PAE0iyQ+67nrp6xZvG4PYtF8tsyfzy7M/vCp75VMtSnAfEobb7bvVUXJrQIBEJ/0UpVx
         r8qbprZcWrdzQHJNQC3JK4wvzw0v3yLFx2ken54KO6TUut3s4VYPmC6CzGbuQ55d66mm
         DIDZg0Lnif5W3aRWZE+4sV7Vg0E9sacqkccpB3DajWXDfLz+bHY0mm00W68EmMMjmi3I
         gCjAzcGs/PVvqYyc7pUph4fIe4d8rsjmaWDeS/etcHQykOAlViB2vwc+WsZW7Ro8Qtfy
         r/kw==
X-Forwarded-Encrypted: i=1; AJvYcCWq/tnKCsOSTrBxrJ8jzKEak+HbXO9WXukQiG5SR+gdNOMlgkTkYicwCGNva87qC4B9g2Ls5ukms80=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzKxtOJN1uhoEQd9rkqD1uQPRYDuaJa/hjHUmucia5ugKBCaEDt
	efJQgjXukOjasbjc+wy5SqY5v7WygqlTHUySlBdAdoFXr6WnyIjzxSx2ElWHeg==
X-Google-Smtp-Source: AGHT+IHQuhaZMa4UP1pTIdanpAjT+7YEeHm2TfiibS3L4BDUR/l+kjM7CeuwOuOoITr62P2fbSERJQ==
X-Received: by 2002:a05:651c:2225:b0:2fa:c9eb:53ce with SMTP id 38308e7fff4ca-2faf3c740b1mr55222931fa.26.1728305804352;
        Mon, 07 Oct 2024 05:56:44 -0700 (PDT)
Message-ID: <82d6f3a3-b3bf-4e4b-bf5c-39f5b857897a@suse.com>
Date: Mon, 7 Oct 2024 14:56:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/7] x86: Introduce x86_decode_lite()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-2-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: <20241002152725.1841575-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.10.2024 17:27, Andrew Cooper wrote:
> --- /dev/null
> +++ b/xen/arch/x86/x86_emulate/decode-lite.c
> @@ -0,0 +1,311 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include "private.h"
> +
> +#define Imm8   (1 << 0)
> +#define Imm    (1 << 1)
> +#define Moffs  (1 << 2)
> +#define Branch (1 << 5) /* ... that we care about */
> +/*      ModRM  (1 << 6) */
> +#define Known  (1 << 7)
> +
> +#define ALU_OPS                                 \
> +    (Known|ModRM),                              \
> +    (Known|ModRM),                              \
> +    (Known|ModRM),                              \
> +    (Known|ModRM),                              \
> +    (Known|Imm8),                               \
> +    (Known|Imm)
> +
> +static const uint8_t init_or_livepatch_const onebyte[256] = {
> +    [0x00] = ALU_OPS, /* ADD */ [0x08] = ALU_OPS, /* OR  */
> +    [0x10] = ALU_OPS, /* ADC */ [0x18] = ALU_OPS, /* SBB */
> +    [0x20] = ALU_OPS, /* AND */ [0x28] = ALU_OPS, /* SUB */
> +    [0x30] = ALU_OPS, /* XOR */ [0x38] = ALU_OPS, /* CMP */
> +/*  [0x40 ... 0x4f] = REX prefixes */

For these and other aspects further down, may I ask for a comment at the
top of the file setting the scope for this new function (and its
associated data) as being strictly 64-bit only? And perhaps even strictly
covering only what Xen may legitimately use (largely excluding APX for
the foreseeable future, i.e. until such time that we might decide to
allow Xen itself to use APX throughout its code).

Besides APX, with more immediate uses in mind, I wonder about e.g.
BMI/BMI2 insns, which live outside the one/two-byte maps.

I would further appreciate if we could be consistent with the mentioning
(or not) of prefixes: The REX ones here are the only ones that the table
mentions right now. In fact I wonder whether a Prefix attribute wouldn't
be nice to have, so you don't need to open-code all of them in the
function itself.

> +    [0x50 ... 0x5f] = (Known),             /* PUSH/POP %reg */
> +
> +    [0x63]          = (Known|ModRM),       /* MOVSxd */
> +
> +    [0x68]          = (Known|Imm),         /* PUSH $imm */
> +    [0x69]          = (Known|ModRM|Imm),   /* IMUL $imm/r/rm */
> +    [0x6a]          = (Known|Imm8),        /* PUSH $imm8 */
> +    [0x6b]          = (Known|ModRM|Imm8),  /* PUSH $imm8/r/rm */

IMUL? I'm also slightly irritated by $imm{,8}/r/rm - better to use commas
to separate operands, and then rm is the middle one (2nd source) while r
is the destination (last), if already you want AT&T operand order.

> +    [0x6c ... 0x6f] = (Known),             /* INS/OUTS */
> +
> +    [0x70 ... 0x7f] = (Known|Branch|Imm8), /* Jcc disp8 */
> +    [0x80]          = (Known|ModRM|Imm8),  /* Grp1 */
> +    [0x81]          = (Known|ModRM|Imm),   /* Grp1 */
> +
> +    [0x83]          = (Known|ModRM|Imm8),  /* Grp1 */
> +    [0x84 ... 0x8e] = (Known|ModRM),       /* TEST/XCHG/MOV/MOV-SREG/LEA r/rm */
> +
> +    [0x90 ... 0x99] = (Known),             /* NOP/XCHG rAX/CLTQ/CQTO */

Omitting PUSH (at 0x8f) is somewhat odd, considering that it's a pretty
"normal" insn.

> +    [0x9b ... 0x9f] = (Known),             /* FWAIT/PUSHF/POPF/SAHF/LAHF */
> +
> +    [0xa0 ... 0xa3] = (Known|Moffs),       /* MOVABS */
> +    [0xa4 ... 0xa7] = (Known),             /* MOVS/CMPS */
> +    [0xa8]          = (Known|Imm8),        /* TEST %al */
> +    [0xa9]          = (Known|Imm),         /* TEST %al */

%rAX?

> +    [0xaa ... 0xaf] = (Known),             /* STOS/LODS/SCAS */
> +    [0xb0 ... 0xb7] = (Known|Imm8),        /* MOV $imm8, %reg */
> +    [0xb8 ... 0xbf] = (Known|Imm),         /* MOV $imm{16,32,64}, %reg */
> +    [0xc0 ... 0xc1] = (Known|ModRM|Imm8),  /* Grp2 (ROL..SAR $imm8, %reg) */
> +
> +    [0xc3]          = (Known),             /* RET */

With the absence of Branch here I think it would be nice if at least the
description went into a little more detail as to the comment higher up
saying "... that we care about".

> +    [0xc6]          = (Known|ModRM|Imm8),  /* Grp11, Further ModRM decode */
> +    [0xc7]          = (Known|ModRM|Imm),   /* Grp11, Further ModRM decode */
> +
> +    [0xcb ... 0xcc] = (Known),             /* LRET/INT3 */
> +    [0xcd]          = (Known|Imm8),        /* INT $imm8 */

No IRET, when you have things like e.g. ICEBP and CLTS?

> +    [0xd0 ... 0xd3] = (Known|ModRM),       /* Grp2 (ROL..SAR {$1,%cl}, %reg) */
> +
> +    [0xe4 ... 0xe7] = (Known|Imm8),        /* IN/OUT $imm8 */
> +    [0xe8 ... 0xe9] = (Known|Branch|Imm),  /* CALL/JMP disp32 */
> +    [0xeb]          = (Known|Branch|Imm8), /* JMP disp8 */
> +    [0xec ... 0xef] = (Known),             /* IN/OUT %dx */
> +
> +    [0xf1]          = (Known),             /* ICEBP */
> +    [0xf4]          = (Known),             /* HLT */
> +    [0xf5]          = (Known),             /* CMC */
> +    [0xf6 ... 0xf7] = (Known|ModRM),       /* Grp3, Further ModRM decode */
> +    [0xf8 ... 0xfd] = (Known),             /* CLC ... STD */
> +    [0xfe ... 0xff] = (Known|ModRM),       /* Grp4 */
> +};
> +static const uint8_t init_or_livepatch_const twobyte[256] = {
> +    [0x00 ... 0x03] = (Known|ModRM),       /* Grp6/Grp7/LAR/LSL */
> +    [0x06]          = (Known),             /* CLTS */
> +    [0x09]          = (Known),             /* WBINVD */
> +    [0x0b]          = (Known),             /* UD2 */
> +
> +    [0x18 ... 0x1f] = (Known|ModRM),       /* Grp16 (Hint Nop) */
> +    [0x20 ... 0x23] = (Known|ModRM),       /* MOV %cr/%dr */
> +
> +    [0x30 ... 0x33] = (Known),             /* WRMSR/RDTSC/RDMSR/RDPMC */
> +
> +    [0x40 ... 0x4f] = (Known|ModRM),       /* CMOVcc */
> +
> +    [0x80 ... 0x8f] = (Known|Branch|Imm),  /* Jcc disp32 */
> +    [0x90 ... 0x9f] = (Known|ModRM),       /* SETcc */
> +
> +    [0xa0 ... 0xa2] = (Known),             /* PUSH/POP %fs/CPUID */
> +    [0xa3]          = (Known|ModRM),       /* BT r/rm */
> +    [0xa4]          = (Known|ModRM|Imm8),  /* SHLD $imm8 */
> +    [0xa5]          = (Known|ModRM),       /* SHLD %cl */
> +
> +    [0xa8 ... 0xa9] = (Known),             /* PUSH/POP %gs */
> +
> +    [0xab]          = (Known|ModRM),       /* BTS */
> +    [0xac]          = (Known|ModRM|Imm8),  /* SHRD $imm8 */
> +    [0xad ... 0xaf] = (Known|ModRM),       /* SHRD %cl/Grp15/IMUL */
> +
> +    [0xb0 ... 0xb9] = (Known|ModRM),       /* CMPXCHG/LSS/BTR/LFS/LGS/MOVZxx/POPCNT/Grp10 */

Grp10 is kind of odd - I think UD1 would be more concise, despite the SDM
indeed using group 10 there.

> +    [0xba]          = (Known|ModRM|Imm8),  /* Grp8 */
> +    [0xbb ... 0xbf] = (Known|ModRM),       /* BSR/BSF/BSR/MOVSX */

0xbb is BTC I think.

> +    [0xc0 ... 0xc1] = (Known|ModRM),       /* XADD */
> +    [0xc7]          = (Known|ModRM),       /* Grp9 */
> +    [0xc8 ... 0xcf] = (Known),             /* BSWAP */

With UD1 and UD2, perhaps UD0 would make sense to also have in the table?

> +};
> +
> +/*
> + * Bare minimum x86 instruction decoder to parse the alternative replacement
> + * instructions and locate the IP-relative references that may need updating.
> + *
> + * These are:
> + *  - disp8/32 from near branches
> + *  - RIP-relative memory references
> + *
> + * The following simplifications are used:
> + *  - All code is 64bit, and the instruction stream is safe to read.
> + *  - The 67 prefix is not implemented, so the address size is only 64bit.

As to the earlier remark - maybe this part of the comment could simply
move to the top of the file?

> + * Inputs:
> + *  @ip  The position to start decoding from.
> + *  @end End of the replacement block.  Exceeding this is considered an error.
> + *
> + * Returns: x86_decode_lite_t
> + *  - On failure, length of 0.
> + *  - On success, length > 0.  For rel_sz > 0, rel points at the relative
> + *    field in the instruction stream.
> + */
> +x86_decode_lite_t init_or_livepatch x86_decode_lite(void *ip, void *end)

Imo both pointers would be nice to be to-const.

> +{
> +    void *start = ip, *rel = NULL;
> +    unsigned int opc, rel_sz = 0;
> +    uint8_t b, d, rex = 0, osize = 4;
> +
> +#define OPC_TWOBYTE (1 << 8)
> +
> +    /* Mutates IP, uses END. */
> +#define FETCH(ty)                                       \
> +    ({                                                  \
> +        ty _val;                                        \
> +                                                        \
> +        if ( (ip + sizeof(ty)) > end )                  \
> +            goto overrun;                               \
> +        _val = *(ty *)ip;                               \
> +        ip += sizeof(ty);                               \
> +        _val;                                           \
> +    })
> +
> +    for ( ;; ) /* Prefixes */
> +    {
> +        switch ( b = FETCH(uint8_t) )
> +        {
> +        case 0x26: /* ES override */
> +        case 0x2e: /* CS override */
> +        case 0x36: /* DS override */
> +        case 0x3e: /* SS override */
> +        case 0x64: /* FS override */
> +        case 0x65: /* GS override */

If you don't like the idea of a Prefix attribute I wonder in how far we
actually need all of the above, when you already ...

> +        case 0xf0: /* LOCK */
> +        case 0xf2: /* REPNE */
> +        case 0xf3: /* REP */
> +            break;
> +
> +        case 0x66: /* Operand size override */
> +            osize = 2;
> +            break;
> +
> +        /* case 0x67: Address size override, not implemented */

... deliberately leave of this one.

> +        case 0x40 ... 0x4f: /* REX */
> +            rex = b;
> +            continue;
> +
> +        default:
> +            goto prefixes_done;
> +        }
> +        rex = 0; /* REX cancelled by subsequent legacy prefix. */
> +    }
> + prefixes_done:
> +
> +    if ( rex & 0x08 ) /* REX.W */

Can you please use REX_W here?

> +        osize = 8;
> +
> +    /* Fetch the main opcode byte(s) */
> +    if ( b == 0x0f )
> +    {
> +        b = FETCH(uint8_t);
> +        opc = OPC_TWOBYTE | b;
> +
> +        d = twobyte[b];
> +    }
> +    else
> +    {
> +        opc = b;
> +        d = onebyte[b];
> +    }
> +
> +    if ( unlikely(!(d & Known)) )
> +        goto unknown;
> +
> +    if ( d & ModRM )
> +    {
> +        uint8_t modrm = FETCH(uint8_t);
> +        uint8_t mod = modrm >> 6;
> +        uint8_t reg = (modrm >> 3) & 7;
> +        uint8_t rm = modrm & 7;
> +
> +        /* ModRM/SIB decode */
> +        if ( mod == 0 && rm == 5 ) /* RIP relative */
> +        {
> +            rel = ip;
> +            rel_sz = 4;
> +            FETCH(uint32_t);
> +        }
> +        else if ( mod != 3 && rm == 4 ) /* SIB */
> +        {
> +            uint8_t sib = FETCH(uint8_t);
> +            uint8_t base = sib & 7;
> +
> +            if ( mod == 0 && base == 5 )
> +                goto disp32;
> +        }
> +
> +        if ( mod == 1 ) /* disp8 */
> +            FETCH(uint8_t);
> +        else if ( mod == 2 ) /* disp32 */
> +        {
> +        disp32:
> +            FETCH(uint32_t);

The values aren't used, so the types don't matter overly much, yet int8_t
and int32_t would be a more accurate representation of what's being
fetched.

> +        }
> +
> +        /* ModRM based decode adjustements */
> +        switch ( opc )
> +        {
> +        case 0xc7: /* Grp11 XBEGIN is a branch. */
> +            if ( modrm == 0xf8 )
> +                d |= Branch;
> +            break;
> +        case 0xf6: /* Grp3 TEST(s) have extra Imm8 */
> +            if ( reg == 0 || reg == 1 )
> +                d |= Imm8;
> +            break;
> +        case 0xf7: /* Grp3 TEST(s) have extra Imm */
> +            if ( reg == 0 || reg == 1 )
> +                d |= Imm;
> +            break;
> +        }

In this switch() you don't distinguish 1- and 2-byte maps at all. This
is an issue in particular for 0xc7.

Blank lines between case blocks would also be nice, as this switch() is
going to only ever grow.

> +    }
> +
> +    if ( d & Branch )
> +    {
> +        /*
> +         * We don't tolerate 66-prefixed call/jmp in alternatives.  Some are
> +         * genuinely decoded differently between Intel and AMD CPUs.
> +         *
> +         * We also don't support APX instructions, so don't have to cope with
> +         * JMPABS which is the first branch to have an 8-byte immediate.
> +         */
> +        if ( osize < 4 )
> +            goto bad_osize;
> +
> +        rel = ip;
> +        rel_sz = (d & Imm8) ? 1 : 4;
> +    }
> +
> +    if ( d & (Imm | Imm8 | Moffs) )
> +    {
> +        if ( d & Imm8 )
> +            osize = 1;
> +        else if ( d & Moffs )
> +            osize = 8;
> +        else if ( osize == 8 && !(opc >= 0xb8 && opc <= 0xbf) )

Again want to also take the opcode map into account, even if - by luck -
this would work as is for now.

Also could I talk you into converting the two comparisons into one, along
the lines of "(opc | 7) != 0xbf"?

> --- a/xen/arch/x86/x86_emulate/private.h
> +++ b/xen/arch/x86/x86_emulate/private.h
> @@ -9,7 +9,9 @@
>  #ifdef __XEN__
>  
>  # include <xen/bug.h>
> +# include <xen/init.h>
>  # include <xen/kernel.h>
> +# include <xen/livepatch.h>
>  # include <asm/endbr.h>
>  # include <asm/msr-index.h>
>  # include <asm/x86-vendors.h>

It's only the new file that needs these - can we limit the dependencies
to just that one by putting these new #include-s there?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 13:15:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 13:15:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811982.1224641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxnZf-00067L-Ca; Mon, 07 Oct 2024 13:14:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811982.1224641; Mon, 07 Oct 2024 13:14: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 1sxnZf-00067E-9b; Mon, 07 Oct 2024 13:14:55 +0000
Received: by outflank-mailman (input) for mailman id 811982;
 Mon, 07 Oct 2024 13:14: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=fxJ7=RD=bounce.vates.tech=bounce-md_30504962.6703dec9.v1-984043e1a2f64376ad4a9cf35510a7a1@srs-se1.protection.inumbo.net>)
 id 1sxnZd-000678-0e
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 13:14:53 +0000
Received: from mail137-12.atl71.mandrillapp.com
 (mail137-12.atl71.mandrillapp.com [198.2.137.12])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 21f93378-84ae-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 15:14:50 +0200 (CEST)
Received: from pmta07.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail137-12.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4XMfkx1z2Cz5QkMBW
 for <xen-devel@lists.xenproject.org>; Mon,  7 Oct 2024 13:14:49 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 984043e1a2f64376ad4a9cf35510a7a1; Mon, 07 Oct 2024 13:14: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: 21f93378-84ae-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728306889; x=1728567389;
	bh=hqiuWdgqsKyqZFC2MM7hiL1EbjI6zoYTHX/g6Epy9L0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=ltXHhXpzPZRmwljJxCN+yx9mBZgW34iCJkgft2AgadlBTnO9osvu8KzaASwpvKeCv
	 CJdq4IJm5kxVS0mIyNKCExQg0vfcAAQTU2lm7xOPkkI5kyZQ9BaFwXFMEYr2XE3kU4
	 TxaYvpTANhv2ecUkRbK1d5Pn5bVz5C/4+09qkWqTG7bH98K1P1oHXBUw1eic/J7Mv/
	 /2bR6Wm4sL2D5EIPGczcu8gYqb+gfAH5335BVfpF2gnq1nR45OONrN8DAvO5VlBuPR
	 lLkqkiZDRT3o5IoiOkFMRU2COlYHu4QizjJXUQueIs6eAKwf5J4MH0j8m6q6PW5hZi
	 V3KVF/dh9oX/A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728306889; x=1728567389; i=anthony.perard@vates.tech;
	bh=hqiuWdgqsKyqZFC2MM7hiL1EbjI6zoYTHX/g6Epy9L0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=K88bGAOse6prWX17yDUnvCMVS74cvFqsNp84eJ8BYu/wXPS04LQyJNAJUG4Yy3kRY
	 l8lGNrhqSLBE7Myuy7WbFrvNm6JlEgTb+gR6HfsJtGwArJUu5vAry1qZ8jrl8fokFo
	 iR/HG9Hb/zZTnHvYedYItU3IFlxivXkVTuqW54692kGQR0xuY1IWnG49XrZKv1j2Zy
	 hAgbg7M//dX6Xfday5SvQF2l0T+nT/nkhZnCYaBvvJxT1svQAb+b6vJ7oQMn3FtqIJ
	 hJ6N+VLtD6/6QvGETnNAkn6xCfI6qzWD795uBB2yE3Cb3ocWKaDsmmyTp6cokhslJv
	 Zr3ghx66ITrAQ==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=203/4]=20build:=20move=20xenlibs-dependencies=20make=20definition=20to=20uselibs.mk?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728306888583
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org
Message-Id: <ZwPeyJy2K+sNFKy9@l14>
References: <20241005151548.29184-1-jgross@suse.com> <20241005151548.29184-4-jgross@suse.com>
In-Reply-To: <20241005151548.29184-4-jgross@suse.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.984043e1a2f64376ad4a9cf35510a7a1?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241007:md
Date: Mon, 07 Oct 2024 13:14:49 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Sat, Oct 05, 2024 at 05:15:47PM +0200, Juergen Gross wrote:
> In order to be able to use the xenlibs-dependencies macro from stubdom
> build, move it to tools/libs/uselibs.mk, which is included from
> current users and stubdom/Makefile.
> 
> No functional change intended.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Acked-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 13:41:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 13:41:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.811994.1224650 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxnz9-00082x-GZ; Mon, 07 Oct 2024 13:41:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 811994.1224650; Mon, 07 Oct 2024 13: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 1sxnz9-00082q-Dw; Mon, 07 Oct 2024 13:41:15 +0000
Received: by outflank-mailman (input) for mailman id 811994;
 Mon, 07 Oct 2024 13:41: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 1sxnz8-00082b-69; Mon, 07 Oct 2024 13:41: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 1sxnz8-0001Hk-3W; Mon, 07 Oct 2024 13:41: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 1sxnz7-00070u-Io; Mon, 07 Oct 2024 13:41:13 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxnz7-0006Fs-IC; Mon, 07 Oct 2024 13:41: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=7Cdej+adiCoj6cMUfxxLDRDaIOlnOphlBAbfU5f4RZg=; b=lpE6zT3bTcdfIgCn0laA0hUyQ5
	10bPsRNQ6noSxxTeV8vmchdfFkgmA57eAcJGOxvmZ1DARic9RCYtbMgH7tSg7OkZT5xyCISEBJ1nV
	1rNFPXT2gSMbbbpTfr3TZVe/edtIHDA3F/o+VLe1CiVxHyYP1SfIfyBT0LoidXB+0ZzM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187992-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187992: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-xl-qcow2:xen-boot:fail:heisenbug
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-xl-credit1:xen-boot:fail:heisenbug
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=b5ab62b3c0050612c7f9b0b4baeb44ebab42775a
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 07 Oct 2024 13:41:13 +0000

flight 187992 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/187992/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-qcow2     8 xen-boot         fail in 187988 pass in 187992
 test-amd64-amd64-libvirt-vhd 22 leak-check/check fail in 187988 pass in 187992
 test-armhf-armhf-xl-credit1   8 xen-boot                   fail pass in 187988

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 187988 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 187988 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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          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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                b5ab62b3c0050612c7f9b0b4baeb44ebab42775a
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   21 days
Failing since        187731  2024-09-17 13:11:20 Z   20 days   34 attempts
Testing same since   187988  2024-10-06 17:41:20 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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                                  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-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 7931 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:00:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:00:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812012.1224661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoHT-0003pu-3q; Mon, 07 Oct 2024 14:00:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812012.1224661; Mon, 07 Oct 2024 14:00: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 1sxoHT-0003pn-0U; Mon, 07 Oct 2024 14:00:11 +0000
Received: by outflank-mailman (input) for mailman id 812012;
 Mon, 07 Oct 2024 14:00: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxoHR-0003ph-9S
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:00:09 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7528be49-84b4-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:00:06 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99543ab209so138256966b.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:00:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5bb23bsm383175466b.34.2024.10.07.07.00.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 07:00:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7528be49-84b4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728309606; x=1728914406; 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=yP7C1cRq+tVeQqg2EdeMEc2ru3gbBmgfy9ow+ZBz+i4=;
        b=AKV++gRGneA6ZB7WbnS0QzNhEXmwh0NVZsPd0xnKMc1mxfXrLjmtt6AOzS2sDGp3dD
         wnvTXDWx4aEj8Olp46LlEd0C/GN0WA1R/FQ6ekWNZ9p+6mFD0wfZbESOCwHHrGs4jsQN
         YVQS9rxuHxjtwYJCy4k8xWnh65r46UVpK2H0inbSWoOMtm5Nu2krbDShGXHTxUo3xh1D
         tvZ/d6y0eBgx8QAHnF2Fcki7H9USwHzfXZtvm8r5t2f+Rp5A4ZvvIZhDDteCSzfKr68l
         6cRKTsjtRgmOneVsSunl7CEuCC8vk4S3VGriXU/JI6mbL7zdGvW59qfPnp28dEYQQgw5
         U7Pw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728309606; x=1728914406;
        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=yP7C1cRq+tVeQqg2EdeMEc2ru3gbBmgfy9ow+ZBz+i4=;
        b=A7G4o3kMNJnhvGbetitMqEiF7lgG50VlDXssNa78LuHVJZLCAFcFEpxYnWyV46J0bF
         EwC0OU+bAshFT8bV0mcKGPMslET8ZdYSuoAJdrVMh7VATuU3j75OLkbTo7v+FGR5MXBl
         W9hNIQhGWuer+FgaVHg5FM+BtOTjSRn1Z9HKL2Vtap1vdAcwiNdfaJzJJXvg3sBaoEZv
         op3lX+OiV2rHHFLq3Dwz5mdE3Q/9va+Annqrp9aQgitA666dix+To2YssM0B1PyGqrk7
         dgu82nWNRsM1n5IQ03TlqeNzNZVLGOjg6lAiHtwLC4EHN7MG04CqprTi0odlQF1+G3RY
         1eZg==
X-Forwarded-Encrypted: i=1; AJvYcCWnDXz8BgfryEVx23VSa7YNIj9Y25syGIPlKhL+HXBUtIL4m/u7oOFf+/beorPz9gx3i9LY/VPe/04=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxA4EiEWE9hCdKHlIcon5YlqcSSD8Fxes7mUFL1vuFFE+qRk2kw
	qM/CeVOfKJNcuiHp0BIc9YoO/GF6HSCrfzgzrzRuOG+9VO2connZH5xPrB+Gwg==
X-Google-Smtp-Source: AGHT+IFQhxwvRQkSOEGnxBa7K6zrR8K2O4cDAKmlVefUyu+woeyaIcvtW+vt5nTijfiqgxZRKrWhQw==
X-Received: by 2002:a17:907:3e20:b0:a8a:8915:6bf6 with SMTP id a640c23a62f3a-a991c0308famr1232772066b.52.1728309605920;
        Mon, 07 Oct 2024 07:00:05 -0700 (PDT)
Message-ID: <0ff2d8f4-61d2-4eca-a6ee-022624ee3bcb@suse.com>
Date: Mon, 7 Oct 2024 16:00:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/7] tests/x86: Introduce a userspace test harness for
 x86_decode_lite()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-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: <20241002152725.1841575-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.10.2024 17:27, Andrew Cooper wrote:
> Back to this patch, I can't find any way to get Clang happy with rex.w for
> explicit prefixing.  I suspect we're just going to need to ignore this test
> case for clang=y.

ISTR experimenting with that too a little while back, finding that newer
Clang supports at least rex64.

> Also, Clang and GAS disagree on needing .allow_index_reg for %riz.

Disagree in which way? Does Clang accept it even without the directive?
If so, that maybe fine for AT&T syntax code, but it definitely isn't for
Intel syntax.

> --- a/tools/tests/Makefile
> +++ b/tools/tests/Makefile
> @@ -5,6 +5,7 @@ SUBDIRS-y :=
>  SUBDIRS-y += resource
>  SUBDIRS-$(CONFIG_X86) += cpu-policy
>  SUBDIRS-$(CONFIG_X86) += tsx
> +SUBDIRS-$(CONFIG_X86) += x86-decode-lite

Won't this be wrong when the tool stack is built 32-bit?

> --- /dev/null
> +++ b/tools/tests/x86-decode-lite/Makefile
> @@ -0,0 +1,45 @@
> +XEN_ROOT = $(CURDIR)/../../..
> +include $(XEN_ROOT)/tools/Rules.mk
> +
> +TARGET := test-x86-decode-lite
> +
> +.PHONY: all
> +all: $(TARGET)
> +
> +.PHONY: run
> +run: $(TARGET)
> +	./$<
> +
> +.PHONY: clean
> +clean:
> +	$(RM) -- *.o $(TARGET) $(DEPS_RM)
> +
> +.PHONY: distclean
> +distclean: clean
> +	$(RM) -- *~
> +
> +.PHONY: install
> +install: all
> +	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
> +	$(INSTALL_PROG) $(TARGET) $(DESTDIR)$(LIBEXEC_BIN)
> +
> +.PHONY: uninstall
> +uninstall:
> +	$(RM) -- $(DESTDIR)$(LIBEXEC_BIN)/$(TARGET)
> +
> +.PHONY: uninstall
> +uninstall:
> +
> +vpath %.c ../../../xen/arch/x86/x86_emulate

What is it that you take from there? All ...

> +CFLAGS += $(CFLAGS_xeninclude) -I. -I../../../xen/arch/x86/
> +CFLAGS += $(APPEND_CFLAGS)
> +
> +LDFLAGS += $(APPEND_LDFLAGS)
> +
> +%.o: Makefile
> +
> +$(TARGET): main.o insns.o decode-lite.o

... objects enumerated here come from local sources.

> --- /dev/null
> +++ b/tools/tests/x86-decode-lite/insns.S
> @@ -0,0 +1,703 @@
> +#include "macro-magic.h"
> +
> +        .code64
> +
> +#ifndef __clang__
> +        .allow_index_reg
> +#endif
> +        .text
> +
> +DECL(tests_rel0)
> +modrm:
> +        /* Mod=0, Reg=0, RM {0..f} */
> +        _ add %al, (%rax)
> +        _ add %al, (%rcx)
> +        _ add %al, (%rdx)
> +        _ add %al, (%rbx)
> +        _ add %al, (%rsp) /* SIB */
> +        /*add %al, (%rbp)    RIP --> tests_rel4 */
> +        _ add %al, (%rsi)
> +        _ add %al, (%rdi)
> +        _ add %al, (%r8)
> +        _ add %al, (%r9)
> +        _ add %al, (%r10)
> +        _ add %al, (%r11)
> +        _ add %al, (%r12) /* SIB */
> +        /*add %al, (%r13)    RIP --> tests_rel4 */
> +        _ add %al, (%r14)
> +        _ add %al, (%r15)

There's a lot of redundancy here and below - did you consider using .irp
to reduce this some?

> +        /* Mod=1, Reg=0, RM {0..f} */
> +        _ add %al, 0x01(%rax)
> +        _ add %al, 0x01(%rcx)
> +        _ add %al, 0x01(%rdx)
> +        _ add %al, 0x01(%rbx)
> +        _ add %al, 0x01(%rsp) /* SIB */
> +        _ add %al, 0x01(%rbp)
> +        _ add %al, 0x01(%rsi)
> +        _ add %al, 0x01(%rdi)
> +        _ add %al, 0x01(%r8)
> +        _ add %al, 0x01(%r9)
> +        _ add %al, 0x01(%r10)
> +        _ add %al, 0x01(%r11)
> +        _ add %al, 0x01(%r12) /* SIB */
> +        _ add %al, 0x01(%r13)
> +        _ add %al, 0x01(%r14)
> +        _ add %al, 0x01(%r15)
> +
> +        /* Mod=2, Reg=0, RM {0..f} */
> +        _ add %al, 0x7f000001(%rax)
> +        _ add %al, 0x7f000001(%rcx)
> +        _ add %al, 0x7f000001(%rdx)
> +        _ add %al, 0x7f000001(%rbx)
> +        _ add %al, 0x7f000001(%rsp) /* SIB */
> +        _ add %al, 0x7f000001(%rbp)
> +        _ add %al, 0x7f000001(%rsi)
> +        _ add %al, 0x7f000001(%rdi)
> +        _ add %al, 0x7f000001(%r8)
> +        _ add %al, 0x7f000001(%r9)
> +        _ add %al, 0x7f000001(%r10)
> +        _ add %al, 0x7f000001(%r11)
> +        _ add %al, 0x7f000001(%r12) /* SIB */
> +        _ add %al, 0x7f000001(%r13)
> +        _ add %al, 0x7f000001(%r14)
> +        _ add %al, 0x7f000001(%r15)
> +
> +        /* Mod=3, Reg=0, RM {0..f} */
> +        _ add %al, %al
> +        _ add %al, %cl
> +        _ add %al, %dl
> +        _ add %al, %bl
> +        _ add %al, %ah
> +        _ add %al, %ch
> +        _ add %al, %dh
> +        _ add %al, %dl
> +        _ add %al, %r8b
> +        _ add %al, %r9b
> +        _ add %al, %r10b
> +        _ add %al, %r11b
> +        _ add %al, %r12b
> +        _ add %al, %r13b
> +        _ add %al, %r14b
> +        _ add %al, %r15b
> +
> +sib:
> +        /* Mod=0, Reg=0, RM=4, SIB S=3, I=0, B {0..f} */
> +        _ add %al, (%rax, %rax, 8)
> +        _ add %al, (%rcx, %rax, 8)
> +        _ add %al, (%rdx, %rax, 8)
> +        _ add %al, (%rbx, %rax, 8)
> +        _ add %al, (%rsp, %rax, 8)
> +        _ add %al, (    , %rax, 8) /* "none", %rbp encoded with mod=1/2 */
> +        _ add %al, (%rsi, %rax, 8)
> +        _ add %al, (%rdi, %rax, 8)
> +        _ add %al, (%r8,  %rax, 8)
> +        _ add %al, (%r9,  %rax, 8)
> +        _ add %al, (%r10, %rax, 8)
> +        _ add %al, (%r11, %rax, 8)
> +        _ add %al, (%r12, %rax, 8)
> +        _ rex.b add %al,(,%rax, 8) /* "none", %r13 encoded with mod=1/2 */
> +        _ add %al, (%r14, %rax, 8)
> +        _ add %al, (%r15, %rax, 8)
> +
> +        /* Mod=1, Reg=0, RM=4, SIB S=3, I=0, B {0..f} */
> +        _ add %al, 0x01(%rax, %rax, 8)
> +        _ add %al, 0x01(%rcx, %rax, 8)
> +        _ add %al, 0x01(%rdx, %rax, 8)
> +        _ add %al, 0x01(%rbx, %rax, 8)
> +        _ add %al, 0x01(%rsp, %rax, 8)
> +        _ add %al, 0x01(%rbp, %rax, 8)
> +        _ add %al, 0x01(%rsi, %rax, 8)
> +        _ add %al, 0x01(%rdi, %rax, 8)
> +        _ add %al, 0x01(%r8,  %rax, 8)
> +        _ add %al, 0x01(%r9,  %rax, 8)
> +        _ add %al, 0x01(%r10, %rax, 8)
> +        _ add %al, 0x01(%r11, %rax, 8)
> +        _ add %al, 0x01(%r12, %rax, 8)
> +        _ add %al, 0x01(%r13, %rax, 8)
> +        _ add %al, 0x01(%r14, %rax, 8)
> +        _ add %al, 0x01(%r15, %rax, 8)
> +
> +        /* Mod=2, Reg=0, RM=4, SIB S=3, I=0, B {0..f} */
> +        _ add %al, 0x7f000001(%rax, %rax, 8)
> +        _ add %al, 0x7f000001(%rcx, %rax, 8)
> +        _ add %al, 0x7f000001(%rdx, %rax, 8)
> +        _ add %al, 0x7f000001(%rbx, %rax, 8)
> +        _ add %al, 0x7f000001(%rsp, %rax, 8)
> +        _ add %al, 0x7f000001(%rbp, %rax, 8)
> +        _ add %al, 0x7f000001(%rsi, %rax, 8)
> +        _ add %al, 0x7f000001(%rdi, %rax, 8)
> +        _ add %al, 0x7f000001(%r8,  %rax, 8)
> +        _ add %al, 0x7f000001(%r9,  %rax, 8)
> +        _ add %al, 0x7f000001(%r10, %rax, 8)
> +        _ add %al, 0x7f000001(%r11, %rax, 8)
> +        _ add %al, 0x7f000001(%r12, %rax, 8)
> +        _ add %al, 0x7f000001(%r13, %rax, 8)
> +        _ add %al, 0x7f000001(%r14, %rax, 8)
> +        _ add %al, 0x7f000001(%r15, %rax, 8)
> +
> +        /* Mod=0, Reg=0, RM=4, SIB S=3, I=4, B {0..f} */
> +        _ add %al, (%rax, %riz, 8)
> +        _ add %al, (%rcx, %riz, 8)
> +        _ add %al, (%rdx, %riz, 8)
> +        _ add %al, (%rbx, %riz, 8)
> +        _ add %al, (%rsp, %riz, 8)
> +        _ add %al, (    , %riz, 8) /* %rbp encoded with mod=1/2 */
> +        _ add %al, (%rsi, %riz, 8)
> +        _ add %al, (%rdi, %riz, 8)
> +        _ add %al, (%r8,  %riz, 8)
> +        _ add %al, (%r9,  %riz, 8)
> +        _ add %al, (%r10, %riz, 8)
> +        _ add %al, (%r11, %riz, 8)
> +        _ add %al, (%r12, %riz, 8)
> +        _ rex.b add %al,(,%riz, 8) /* %r13 encoded with mod=1/2 */
> +        _ add %al, (%r14, %riz, 8)
> +        _ add %al, (%r15, %riz, 8)
> +
> +        /* Mod=1, Reg=0, RM=4, SIB S=3, I=4, B {0..f} */
> +        _ add %al, 0x01(%rax, %riz, 8)
> +        _ add %al, 0x01(%rcx, %riz, 8)
> +        _ add %al, 0x01(%rdx, %riz, 8)
> +        _ add %al, 0x01(%rbx, %riz, 8)
> +        _ add %al, 0x01(%rsp, %riz, 8)
> +        _ add %al, 0x01(%rbp, %riz, 8)
> +        _ add %al, 0x01(%rsi, %riz, 8)
> +        _ add %al, 0x01(%rdi, %riz, 8)
> +        _ add %al, 0x01(%r8,  %riz, 8)
> +        _ add %al, 0x01(%r9,  %riz, 8)
> +        _ add %al, 0x01(%r10, %riz, 8)
> +        _ add %al, 0x01(%r11, %riz, 8)
> +        _ add %al, 0x01(%r12, %riz, 8)
> +        _ add %al, 0x01(%r13, %riz, 8)
> +        _ add %al, 0x01(%r14, %riz, 8)
> +        _ add %al, 0x01(%r15, %riz, 8)
> +
> +        /* Mod=2, Reg=0, RM=4, SIB S=3, I=4, B {0..f} */
> +        _ add %al, 0x7f000001(%rax, %riz, 8)
> +        _ add %al, 0x7f000001(%rcx, %riz, 8)
> +        _ add %al, 0x7f000001(%rdx, %riz, 8)
> +        _ add %al, 0x7f000001(%rbx, %riz, 8)
> +        _ add %al, 0x7f000001(%rsp, %riz, 8)
> +        _ add %al, 0x7f000001(%rbp, %riz, 8)
> +        _ add %al, 0x7f000001(%rsi, %riz, 8)
> +        _ add %al, 0x7f000001(%rdi, %riz, 8)
> +        _ add %al, 0x7f000001(%r8,  %riz, 8)
> +        _ add %al, 0x7f000001(%r9,  %riz, 8)
> +        _ add %al, 0x7f000001(%r10, %riz, 8)
> +        _ add %al, 0x7f000001(%r11, %riz, 8)
> +        _ add %al, 0x7f000001(%r12, %riz, 8)
> +        _ add %al, 0x7f000001(%r13, %riz, 8)
> +        _ add %al, 0x7f000001(%r14, %riz, 8)
> +        _ add %al, 0x7f000001(%r15, %riz, 8)
> +
> +        .macro alu_ops op
> +        _ \op %al, (%rax)
> +        _ \op %eax, (%rax)
> +        _ \op (%rax), %al
> +        _ \op (%rax), %eax
> +        _ \op $1, %al
> +        _ \op $0x7f000001, %eax

While immediate forms below also come in word and qword flavors, no such
exist for the non-immediate forms above. Is that intentional?

> +        /* Vary osize on imm fields */
> +        _ data16 \op $1, %al
> +        _ rex.w \op $1, %al
> +        _ data16 rex.w \op $1, %al

Yet for byte ops the immediate is never going to be wider than a byte.
Wouldn't these be more interesting with word/dword/qword operand size?

> +        _ \op $0x7f01, %ax
> +        _ \op $0x7f000001, %rax
> +        _ data16 \op $0x7f000001, %rax
> +        .endm
> +
> +onebyte_row_0x:
> +        alu_ops add
> +        alu_ops or
> +
> +onebyte_row_1x:
> +        alu_ops adc
> +        alu_ops sbb
> +
> +onebyte_row_2x:
> +        alu_ops and
> +        .code32
> +        _ es nop
> +        .code64
> +        alu_ops sub
> +        _ cs nop
> +
> +onebyte_row_3x:
> +        alu_ops xor
> +        .code32
> +        _ ss nop
> +        .code64
> +        alu_ops cmp
> +        _ ds nop
> +
> +/* onebyte_row_4x --> rex prefixes */
> +
> +onebyte_row_5x:
> +        _ push %rax
> +        _ push %rcx
> +        _ push %rdx
> +        _ push %rbx
> +        _ push %rsp
> +        _ push %rbp
> +        _ push %rsi
> +        _ push %rdi
> +        _ pop %rax
> +        _ pop %rcx
> +        _ pop %rdx
> +        _ pop %rbx
> +        _ pop %rsp
> +        _ pop %rbp
> +        _ pop %rsi
> +        _ pop %rdi
> +
> +onebyte_row_6x:
> +        /*pusha,popa,bound --> not supported */
> +        _ movsxd (%rax), %eax
> +        _ movslq (%rax), %rax
> +        _ fs nop
> +        _ gs nop
> +        _ data16 nop
> +        /* addr32 --> not supported */
> +        _ pushq $0x7f000001
> +        _ pushw $0x7f01
> +        _ rex.w pushq $0x7f000001
> +        _ imul $0x7f01, %ax, %ax
> +        _ imul $0x7f000001, %eax, %eax
> +        _ imul $0x7f000001, %rax, %rax
> +        _ pushq $0
> +        _ pushw $0
> +        _ rex.w pushq $0
> +        _ imul $0, %ax, %ax
> +        _ imul $0, %eax, %eax
> +        _ imul $0, %rax, %rax
> +        _ insb
> +        _ insw
> +        _ insl
> +        _ outsb
> +        _ outsw
> +        _ outsl
> +
> +/* onebyte_row_7x: --> Jcc disp8 */
> +
> +onebyte_row_8x:
> +        _ add $0, %cl /* Grp1 */
> +        _ data16 add $0, %cl
> +        _ rex.w add $0, %cl
> +        _ add $0x7f01, %cx
> +        _ add $0x7f000001, %ecx
> +        _ add $0x7f000001, %rcx
> +        _ add $0, %cx
> +        _ add $0, %ecx
> +        _ add $0, %rcx
> +        _ test %cl, %cl
> +        _ test %ecx, %ecx
> +        _ xchg %cl, %cl
> +        _ xchg %ecx, %ecx
> +        _ mov %cl, (%rax)
> +        _ mov %ecx, (%rax)
> +        _ mov (%rax), %cl
> +        _ mov (%rax), %ecx
> +        _ mov %cs, (%rax)
> +        _ lea (%rax), %eax
> +        _ mov (%rax), %cs
> +        /*pop mem --> Grp1a, Not supported (XOP prefix adjacent) */
> +
> +onebyte_row_9x:
> +        _ nop
> +        _ pause
> +        _ xchg %ax, %ax
> +        _ xchg %eax, %eax
> +        _ xchg %rax, %rax
> +        _ rex.w xchg %rax, %rax
> +        _ cltq
> +        _ cqto
> +        _ wait
> +        _ pushf
> +        _ popf
> +        _ sahf
> +        _ lahf
> +
> +onebyte_row_ax:
> +        _ mov 0x8000000000000001, %al
> +        _ mov 0x8000000000000001, %ax
> +        _ mov 0x8000000000000001, %eax
> +        _ mov 0x8000000000000001, %rax
> +        _ mov %al,  0x8000000000000001
> +        _ mov %ax,  0x8000000000000001
> +        _ mov %eax, 0x8000000000000001
> +        _ mov %rax, 0x8000000000000001
> +        _ movsb
> +        _ movsl
> +        _ cmpsb
> +        _ cmpsl
> +        _ test $0, %al
> +        _ test $0x80000001, %eax
> +        _ test $0x7f000001, %rax
> +        _ stosb
> +        _ stosl
> +        _ lodsb
> +        _ lodsl
> +        _ scasb
> +        _ scasl
> +
> +onebyte_row_bx:
> +        _ mov $0, %al
> +        _ mov $0, %cl
> +        _ mov $0x7f01, %ax
> +        _ mov $0x7f01, %cx
> +        _ mov $0x7f000001, %eax
> +        _ mov $0x7f000001, %ecx
> +        _ mov $0x7f00000000000001, %rax
> +        _ mov $0x7f00000000000001, %rcx
> +
> +onebyte_row_cx:
> +        _ rol $0, %al /* Grp2 */
> +        _ rol $0, %ax
> +        _ rol $0, %eax
> +        _ rol $0, %rax
> +        /*ret $0 --> not supported */
> +        _ ret
> +        /*les,lds --> not supported */

LES and LDS don't even exist for 64-bit code.

> +        _ movb $0, (%rax) /* Grp11 */
> +        _ movw $0, (%rax)
> +        _ movl $0, (%rax)
> +        _ movq $0, (%rax)
> +        /*xbegin (Grp11) --> disp32 */
> +        /*enter,leave,lretq $0 --> not supported */
> +        _ lretq
> +        _ int3
> +        _ int $0
> +        /*into,iret --> not supported */
> +
> +onebyte_row_dx:
> +        _ rol $1, %al /* Grp2 */
> +        _ rol $1, %ax
> +        _ rol $1, %eax
> +        _ rol $1, %rax
> +        _ rol %cl, %al
> +        _ rol %cl, %ax
> +        _ rol %cl, %eax
> +        _ rol %cl, %rax
> +        /*aam,aad,setalc,xlat,d8...df --> not supported */
> +
> +onebyte_row_ex:
> +        /*loop{ne,e,},jrcxz --> not supported */
> +        _ in $0, %al
> +        _ in $0, %eax
> +        _ out %al,  $0
> +        _ out %eax, $0
> +        /*call,jmp --> disp32 */
> +        /*ljmp --> not supported */

Nor does this, and you also don't have a similar comment for lcall (0x9a).

> +        /*jmp --> disp8 */
> +        _ in %dx, %al
> +        _ in %dx, %eax
> +        _ out %al,  %dx
> +        _ out %eax, %dx
> +
> +onebyte_row_fx:
> +        _ lock addb $0, (%rax)
> +        n "icebp" .byte 0xf1 /* icebp */
> +        _ repne nop
> +        _ repe nop
> +        _ hlt
> +        _ cmc
> +        _ test $0, %cl /* Grp3, /0 has extra Imm{8,} */
> +        _ not %cl
> +        _ test $0x7f01, %cx
> +        _ not %cx
> +        _ test $0x7f000001, %ecx
> +        _ not %ecx
> +        _ test $0x7f000001, %rcx
> +        _ not %rcx
> +        _ clc
> +        _ stc
> +        _ cli
> +        _ sti
> +        _ cld
> +        _ std
> +        _ inc %cl /* Grp4 */
> +        _ dec %cl
> +        _ inc %ecx /* Grp5 */
> +        _ dec %ecx
> +        _ call *(%rax)
> +        _ lcall *(%rax)
> +        _ jmp *(%rax)
> +        _ ljmp *(%rax)
> +        _ push (%rax)
> +
> +twobyte_row_0x:
> +        _ sldt (%rax) /* Grp6 */
> +        _ sgdt (%rax) /* Grp7 */
> +        _ lar (%rax), %eax
> +        _ lsl (%rax), %eax
> +        _ clts
> +        _ wbinvd
> +        _ ud2a
> +
> +twobyte_row_1x:
> +        _ prefetchnta (%rax) /* Grp16 (Hint Nop) */
> +        _ nopl (%rax)
> +
> +twobyte_row_2x:
> +        _ mov %cr0, %rax
> +        _ mov %dr0, %rax
> +        _ mov %rax, %cr0
> +        _ mov %rax, %dr0
> +
> +twobyte_row_3x:
> +        _ wrmsr
> +        _ rdtsc
> +        _ rdmsr
> +        _ rdpmc
> +
> +twobyte_row_4x:
> +        _ cmovo (%rax), %eax
> +        _ cmovg (%rax), %eax
> +
> +/* twobyte_row_8x: --> Jcc disp32 */
> +
> +twobyte_row_9x:
> +        _ seto (%rax)
> +        _ setg (%rax)
> +
> +twobyte_row_ax:
> +        _ push %fs
> +        _ pop %fs
> +        _ cpuid
> +        _ bt %eax, (%rax)
> +        _ shld $0, %ax, (%rax)
> +        _ shld $0, %eax, (%rax)
> +        _ shld $0, %rax, (%rax)
> +        _ shld %cl, %ax, (%rax)
> +        _ shld %cl, %eax, (%rax)
> +        _ shld %cl, %rax, (%rax)
> +        _ push %gs
> +        _ pop %gs
> +        /*rsm --> not supported */
> +        _ bts %eax, (%rax)
> +        _ shrd $0, %ax, (%rax)
> +        _ shrd $0, %eax, (%rax)
> +        _ shrd $0, %rax, (%rax)
> +        _ shrd %cl, %ax, (%rax)
> +        _ shrd %cl, %eax, (%rax)
> +        _ shrd %cl, %rax, (%rax)
> +        _ fxsave (%rax) /* Grp15 */
> +        _ imul (%rax), %eax
> +
> +twobyte_row_bx:
> +        _ cmpxchg %al, (%rax)
> +        _ cmpxchg %eax, (%rax)
> +        _ lss (%rax), %eax
> +        _ btr %eax, (%rax)
> +        _ lfs (%rax), %eax
> +        _ lgs (%rax), %eax
> +        _ movzbl (%rax), %eax
> +        _ movzwl (%rax), %eax
> +        _ popcnt (%rax), %eax
> +        _ ud1 (%rax), %eax /* Grp10 */
> +        _ bt $0, %ax /* Grp8 */
> +        _ bt $0, %eax
> +        _ bt $0, %rax
> +        _ btc %eax, (%rax)
> +        _ bsf (%rax), %eax
> +        _ bsr (%rax), %eax
> +        _ movsbl (%rax), %eax
> +        _ movswl (%rax), %eax
> +
> +twobyte_row_cx:
> +        _ xadd %al, (%rax)
> +        _ xadd %eax, (%rax)
> +        _ cmpxchg8b (%rax) /* Grp9 */
> +        _ bswap %eax
> +        _ bswap %edi
> +
> +END(tests_rel0)
> +
> +DECL(tests_rel1)
> +disp8:
> +1:
> +        _ jo   1b
> +        _ jno  1b
> +        _ jb   1b
> +        _ jae  1b
> +        _ je   1b
> +        _ jne  1b
> +        _ jbe  1b
> +        _ ja   1b
> +        _ js   1b
> +        _ jns  1b
> +        _ jp   1b
> +        _ jnp  1b
> +        _ jl   1b
> +        _ jge  1b
> +        _ jle  1b
> +        _ jg   1b
> +        _ jmp  1b
> +
> +disp8_rex:
> +        _ rex.w jo   1b
> +        _ rex.w jno  1b
> +        _ rex.w jb   1b
> +        _ rex.w jae  1b
> +        _ rex.w je   1b
> +        _ rex.w jne  1b
> +        _ rex.w jbe  1b
> +        _ rex.w ja   1b
> +        _ rex.w js   1b
> +        _ rex.w jns  1b
> +        _ rex.w jp   1b
> +        _ rex.w jnp  1b
> +        _ rex.w jl   1b
> +        _ rex.w jge  1b
> +        _ rex.w jle  1b
> +        _ rex.w jg   1b
> +        _ rex.w jmp  1b
> +END(tests_rel1)
> +
> +DECL(tests_rel4)
> +disp32:
> +        _ call   other_section
> +        _ jmp    other_section
> +        _ jo     other_section
> +        _ jno    other_section
> +        _ jb     other_section
> +        _ jae    other_section
> +        _ je     other_section
> +        _ jne    other_section
> +        _ jbe    other_section
> +        _ ja     other_section
> +        _ js     other_section
> +        _ jns    other_section
> +        _ jp     other_section
> +        _ jnp    other_section
> +        _ jl     other_section
> +        _ jge    other_section
> +        _ jle    other_section
> +        _ jg     other_section
> +        _ xbegin other_section
> +
> +disp32_rex:
> +        _ rex.w call   other_section
> +        _ rex.w jmp    other_section
> +        _ rex.w jo     other_section
> +        _ rex.w jno    other_section
> +        _ rex.w jb     other_section
> +        _ rex.w jae    other_section
> +        _ rex.w je     other_section
> +        _ rex.w jne    other_section
> +        _ rex.w jbe    other_section
> +        _ rex.w ja     other_section
> +        _ rex.w js     other_section
> +        _ rex.w jns    other_section
> +        _ rex.w jp     other_section
> +        _ rex.w jnp    other_section
> +        _ rex.w jl     other_section
> +        _ rex.w jge    other_section
> +        _ rex.w jle    other_section
> +        _ rex.w jg     other_section
> +        _ rex.w xbegin other_section
> +
> +riprel:
> +        _ add %al, 0(%rip)
> +        _ rex.b add %al, 0(%rip)
> +
> +        _ addb $1, 0(%rip)
> +        _ rex.b addb $1, 0(%rip)
> +
> +        _ addl $0x7f000001, 0(%rip)
> +        _ rex.b addl $0x7f000001, 0(%rip)
> +END(tests_rel4)
> +
> +DECL(tests_unsup)
> +
> +unsup_prefix: /* Prefixes unimplemented for simplicity. */
> +        _ vaddpd %zmm0, %zmm0, %zmm0 /* 0x62 EVEX */
> +        _ addr32 nop                 /* 0x67 Address size override */
> +        _ bextr $0, %eax, %eax       /* 0x8f XOP */
> +        _ bextr %eax, %eax, %eax     /* 0xc4 VEX3 */
> +        _ vaddpd %ymm0, %ymm0, %ymm0 /* 0xc5 VEX2 */
> +        n "jmpabs 0" .byte 0xd5, 0x00, 0xa1, 0x01, 0, 0, 0, 0, 0, 0, 0x80 /* 0xd5 REX2 */
> +        _ fadds (%rax)               /* 0xd8 ... 0xdf ESCAPE (x87) */
> +        _ femms                      /* 0x0f,0x0e ... 0x0f 3DNOW */
> +
> +unsup_branch:
> +1:
> +        _ loopne 1b
> +        _ loope  1b
> +        _ loop   1b
> +        _ jrcxz  1b
> +
> +opsize_branch: /* 66-prefixed branches are decoded differently by vendors */
> +        _ data16 call   other_section
> +        _ data16 jmp    other_section
> +        _ data16 jo     other_section
> +        _ data16 jno    other_section
> +        _ data16 jb     other_section
> +        _ data16 jae    other_section
> +        _ data16 je     other_section
> +        _ data16 jne    other_section
> +        _ data16 jbe    other_section
> +        _ data16 ja     other_section
> +        _ data16 js     other_section
> +        _ data16 jns    other_section
> +        _ data16 jp     other_section
> +        _ data16 jnp    other_section
> +        _ data16 jl     other_section
> +        _ data16 jge    other_section
> +        _ data16 jle    other_section
> +        _ data16 jg     other_section
> +        _ data16 xbegin other_section
> +
> +not_64bit: /* Not valid/encodable in 64bit mode */
> +        .code32
> +        _ push %es
> +        _ pop %es
> +        _ push %cs
> +        _ push %ss
> +        _ pop %ss
> +        _ push %ds
> +        _ pop %ds
> +        _ daa
> +        _ das
> +        _ aaa
> +        _ aas
> +        _ pusha
> +        _ popa
> +        _ bound %eax, (%eax)
> +        /*arpl %ax, %ax --> movsxd in 64bit mode */
> +        /* Grp1 */
> +        _ lcall $-1, $-1
> +        _ les (%eax), %eax
> +        _ lds (%eax), %eax
> +        _ into
> +        _ aam $0
> +        _ aad $0 /* Also REX2, also not supported */
> +        n "salc" .byte 0xd6
> +        _ ljmp $-1, $-1
> +        .code64

I'm not sure we want to test these. Any of them can gain meaning (like D5
now did as REX2, and like D6 was for L1OM). Yes, for now we don't support
e.g. REX2, but that can change.

> --- /dev/null
> +++ b/tools/tests/x86-decode-lite/macro-magic.h
> @@ -0,0 +1,52 @@
> +#ifndef X86_DECODE_LITE_LINKAGE_H
> +#define X86_DECODE_LITE_LINKAGE_H
> +
> +/* Start a 'struct test' array */
> +.macro start_arr aname
> +    .pushsection .data.rel.ro.\aname, "aw", @progbits
> +    .globl \aname
> +    .type \aname, STT_OBJECT
> +\aname:

No .align (or alike)?

> +    .popsection
> +
> +    /* Declare a macro wrapping \aname */
> +    .macro pushsection_arr
> +    .pushsection .data.rel.ro.\aname, "aw", @progbits
> +    .endm
> +.endm
> +
> +/* Macro 'n' to wrap the metadata of an instruction.  Name can be different. */
> +.macro n name:req insn:vararg
> +    /* Emit the instruction, with start & end markers. */
> +.Ls\@: \insn
> +.Le\@:
> +
> +    /* Emit \name as a string. */
> +    .pushsection .rosdata.str1, "aMS", @progbits, 1

.rodata.str1?

> +.Ln\@: .asciz "\name"
> +    .popsection
> +
> +    /* Emit an entry into the array. */
> +    pushsection_arr
> +    .quad .Ln\@, .Ls\@, .Le\@ - .Ls\@
> +    .popsection
> +.endm
> +
> +/* Macro '_' where the name is the instruction itself. */
> +.macro _ insn:vararg
> +    n "\insn" \insn

As agreed upon elsewhere, perhaps better to use a comma to separate the
arguments (and also macro parameters further up).

> --- /dev/null
> +++ b/tools/tests/x86-decode-lite/x86-emulate.h
> @@ -0,0 +1,27 @@
> +#ifndef X86_EMULATE_H
> +#define X86_EMULATE_H
> +
> +#include <assert.h>
> +#include <stdbool.h>
> +#include <stdint.h>
> +#include <stdlib.h>
> +#include <string.h>
> +
> +#include <xen/asm/x86-defns.h>
> +#include <xen/asm/x86-vendors.h>
> +
> +#include <xen-tools/common-macros.h>
> +
> +#define ASSERT assert
> +
> +#define printk(...)
> +
> +#define likely
> +#define unlikely
> +#define cf_check
> +#define init_or_livepatch
> +#define init_or_livepatch_const
> +
> +#include "x86_emulate/x86_emulate.h"
> +
> +#endif /* X86_EMULATE_H */

Deliberately not re-using the test harness'es x86-emulate.h?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:03:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:03:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812020.1224670 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoKm-0004TQ-L7; Mon, 07 Oct 2024 14:03:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812020.1224670; Mon, 07 Oct 2024 14:03: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 1sxoKm-0004TJ-IV; Mon, 07 Oct 2024 14:03:36 +0000
Received: by outflank-mailman (input) for mailman id 812020;
 Mon, 07 Oct 2024 14:03: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=68k9=RD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sxoKk-0004TD-Pr
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:03:34 +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 eff805ef-84b4-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:03:32 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9963e47b69so27454466b.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:03:32 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7840b6sm381824866b.101.2024.10.07.07.03.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:03:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eff805ef-84b4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728309812; x=1728914612; 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=CIibmESNiAHxwibKuOWS9nvVl03nkcPOYAxCILNTlPk=;
        b=EWgnLWjF/nFRc0vzUhhgQi3n3XkP+emVrSd++wLE4YdG8zBdMhzT5KHl9/2Gs0jRUf
         qq3aUEPB/4/mzZJawL0eo3GuEKXm6yBqZpauL4L5wbXnR5+1I0sYbzxHLQ0mICDPLBJW
         fF5vzl7lakuxDcPBKQ+KTGWgTkUjTtsRHq3bg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728309812; x=1728914612;
        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=CIibmESNiAHxwibKuOWS9nvVl03nkcPOYAxCILNTlPk=;
        b=WLNx8arVxcFiuf1Ny+FqGwC8RZwLODaumS0A3ivpvoDc3/bpJGuR0SbXzK59CzwELC
         Ab4/Ldf0yvcUPNpvr15OaGwNev6PZYC6Fn4HyduN27AirpcxoFyfubfxZeFhz4zaJniY
         9VPQ27oRhsGIBmlUPtLs9RRl0sYUtRBhGU/c43CLT5o9clu57hTDwB1CHMYawuZgDYN3
         GKs8itClbt18E56ZAzdVV9fbWW+NZKwv+x3RhYhhJ7FaG252faFAkbXSSyVoxrfHFg4K
         I/qgrwJJa5Ql0YNfo2yQL7gJ3AP6GnN+jD5MbsItSlN7L4sQXMOQT1vOJgOLvC4dRf6Y
         TpSg==
X-Gm-Message-State: AOJu0Yw7/jO9uYWQxo4TEoQXrYqgqEY831Ho2E8cPfEKijl1E8R8cvVb
	9xyUp78WPh5cfYxuJXc3TvBgJ81VUeR5A/GzygeXualZLt1pd4oIxTXWlUc1/MGhaKOG7zwUF0I
	A
X-Google-Smtp-Source: AGHT+IFpnlGhKvrQdlxuo5jEFRzMdphsLWx6zGErXfZyCU73LLnfRAH2gFOxi0phbxKOxupSrdWmxg==
X-Received: by 2002:a17:907:7248:b0:a99:5110:7a4d with SMTP id a640c23a62f3a-a99511081f3mr465254466b.61.1728309811812;
        Mon, 07 Oct 2024 07:03:31 -0700 (PDT)
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>
Subject: [PATCH] x86/msr: add log messages to MSR state load error paths
Date: Mon,  7 Oct 2024 16:03:17 +0200
Message-ID: <20241007140317.67478-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Some error paths in the MSR state loading logic don't contain error messages,
which makes debugging them quite hard without adding extra patches to print the
information.

Add two new log messages to the MSR state load path that print information
about the entry that failed to load.

No functional change intended.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/hvm/hvm.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 69a25571db8d..c71087f636c4 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1598,10 +1598,19 @@ static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h)
             rc = guest_wrmsr(v, ctxt->msr[i].index, ctxt->msr[i].val);
 
             if ( rc != X86EMUL_OKAY )
+            {
+                printk(XENLOG_G_ERR
+                       "HVM%d.%d load MSR %#x with value %#lx failed: %d\n",
+                       d->domain_id, vcpuid, ctxt->msr[i].index,
+                       ctxt->msr[i].val, rc);
                 return -ENXIO;
+            }
             break;
 
         default:
+            printk(XENLOG_G_ERR
+                   "HVM%d.%d attempted load of unhandled MSR %#x\n",
+                   d->domain_id, vcpuid, ctxt->msr[i].index);
             return -ENXIO;
         }
     }
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:15:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:15:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812028.1224681 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoVw-0002dP-KD; Mon, 07 Oct 2024 14:15:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812028.1224681; Mon, 07 Oct 2024 14:15: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 1sxoVw-0002dI-H2; Mon, 07 Oct 2024 14:15:08 +0000
Received: by outflank-mailman (input) for mailman id 812028;
 Mon, 07 Oct 2024 14:15: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=3K0A=RD=bounce.vates.tech=bounce-md_30504962.6703ece5.v1-e4b4ec1c099d432daf5024f596d40253@srs-se1.protection.inumbo.net>)
 id 1sxoVu-0002dC-Bb
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:15:06 +0000
Received: from mail136-19.atl41.mandrillapp.com
 (mail136-19.atl41.mandrillapp.com [198.2.136.19])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8b236f69-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:15:03 +0200 (CEST)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-19.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4XMh4P34lszRKLpp7
 for <xen-devel@lists.xenproject.org>; Mon,  7 Oct 2024 14:15:01 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 e4b4ec1c099d432daf5024f596d40253; Mon, 07 Oct 2024 14:15: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: 8b236f69-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728310501; x=1728571001;
	bh=7jz/JF0imIsyLz4oBOtbWgfyOvhsbWlu3YjootK9YSk=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=cr3OC27rEPQtyggxp+aGu+lgbyr52huxgmS22kTuSEEJtK89J0FUyRAA7UAJhGwzd
	 75XyNZYH23CkTGLRdg1jpJQFNCHE3QFlVfhMuXFhyq+j4tIoXSK4lbEbTTer015iDu
	 xGDhoCEgmC8NoGcb3JJq2k7s+0HgUqpBBqaQtwqIEf7ARBAgB4ac5tDo00vnarA5GY
	 1W6FWPFQ2vTs6Zc6Ua5ZMNNuOXcd5OVLnDDOlHXO8oqHd9BLcL7Y+6yjZsiC0BgSJg
	 2A13alRXDl8fU3vojRxk/BnxEeNoRbbJopj9HPfqhLJuiexU8kqosuMdnX4rrmZJ2O
	 GNA0hVOxGE7yg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728310501; x=1728571001; i=anthony.perard@vates.tech;
	bh=7jz/JF0imIsyLz4oBOtbWgfyOvhsbWlu3YjootK9YSk=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=ecwtzHLUHA7Fsh/H46FWNfVNLSMxKUn+BomVakKvGkT2nRv5mpYuHZwDSij6b5Rz9
	 BTF8lKGk7CpKWDMPBKtPnDdYf5OtrCaW6UEsBkY64vQT5yI8trF7DIVLYNykJRNnlc
	 b1N2YF54eChQjzneQhNqJcUwzovtzveksses9dc8V9DJzz5rnKryg2BD08G4kJVdAq
	 S8SUMdLVWb+Ln0+oTZ2+U3fSWCpCdzx8it5VN+oiwaY+8tR5dLXwcSTpHzjuh2rAds
	 ioTkRRaL5DmIQz0or51lxrYj9uiJZlBjH0Y372Zm/90WpyXpKGvmTE07uQQRo4uoVT
	 ai8Pa4Dxfj5GA==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=204/4]=20stubdom:=20add=20fine=20grained=20library=20config=20items=20to=20Mini-OS=20configs?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728310500553
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Samuel Thibault <samuel.thibault@ens-lyon.org>
Message-Id: <ZwPs44n9WlyPHo9q@l14>
References: <20241005151548.29184-1-jgross@suse.com> <20241005151548.29184-5-jgross@suse.com>
In-Reply-To: <20241005151548.29184-5-jgross@suse.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.e4b4ec1c099d432daf5024f596d40253?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241007:md
Date: Mon, 07 Oct 2024 14:15:01 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Sat, Oct 05, 2024 at 05:15:48PM +0200, Juergen Gross wrote:
> diff --git a/stubdom/Makefile b/stubdom/Makefile
> index 8c503c2bf8..3b501a0710 100644
> --- a/stubdom/Makefile
> +++ b/stubdom/Makefile
> @@ -340,6 +340,14 @@ endef
>  
>  $(foreach lib,$(STUB_LIBS),$(eval $(call BUILD_lib,$(lib))))
>  
> +define BUILD_config
> + cp $< $@
> + for i in $(sort $(APP_LIBS) $(call xenlibs-dependencies,$(APP_LIBS))); do \
> +   u=`echo $$i | tr a-z A-Z`; \
> +   echo "CONFIG_LIBXEN$$u=y"; \
> + done >> $@
> +endef

I don't think I like having a recipe hidden like that in a variable,
maybe if it was a full rule it would be a bit less annoying to me. But
how about something slightly different:

First, the name, "GEN_config" would be a bit better, then we could have
it only do the output and not writing any file:

define GEN_config
 (cat '$<' && \
 for i in $(sort $(APP_LIBS) $(call xenlibs-dependencies,$(APP_LIBS))); do \
   u=`echo $$i | tr a-z A-Z`; \
   echo "CONFIG_LIBXEN$$u=y"; \
 done)
endef

The this can be used in rules as:
    $(GEN_config) > $@

Would that be ok?

(It might be better to have the macro not depends on the environment
have take parameter explicitly which could be used as $(call
GEN_config,$<,evtchn gnttab) > $@ or take a variable if it's useful
elsewhere, but I'm already fine if $@ is taken out of the macro.)

> +
>  xenstore/stamp: $(XEN_ROOT)/tools/xenstored/Makefile.common
>  	$(do_links)
>  
> @@ -373,8 +381,12 @@ $(TARGETS_MINIOS): mini-os-%:
>  # ioemu
>  #######
>  
> -ioemu-minios-config.mk: $(CURDIR)/ioemu-minios.cfg
> -	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
> +ioemu-minios.out.cfg: APP_LIBS = evtchn gnttab ctrl guest
> +ioemu-minios.out.cfg: $(CURDIR)/ioemu-minios.cfg Makefile

Could you change the suffix to ".gen.cfg"? ".out.cfg" is a bit generic
while "generated" is more common for the kind of file that are
automatically generated by the build system for it's own use.

BTW, in the first prerequisite, $(CURDIR) isn't necessary anymore, it
was only to be used in "MINIOS_CONFIG" just below.

> +	$(BUILD_config)
> +
> +ioemu-minios-config.mk: ioemu-minios.out.cfg
> +	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:16:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:16:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812032.1224691 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoWl-00037T-Su; Mon, 07 Oct 2024 14:15:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812032.1224691; Mon, 07 Oct 2024 14:15: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 1sxoWl-00037M-PA; Mon, 07 Oct 2024 14:15:59 +0000
Received: by outflank-mailman (input) for mailman id 812032;
 Mon, 07 Oct 2024 14:15: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxoWl-0002dC-Bi
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:15:59 +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 ac0e4b21-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:15:57 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c903f5bd0eso489154a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:15:57 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c119esm3386204a12.55.2024.10.07.07.15.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:15:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ac0e4b21-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728310557; x=1728915357; 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=3VCbuxC6JGJm8j1BwRkys9Y1PD6avfaNtISsr+2/hAU=;
        b=RQdXaZSfXU7maCCuR3W2wES031/535CsK1DGGSrXixDdvztAYdUkA6UF+aEOYiNcYO
         EPblOtpH46NnI7htm4GCgE4GZRHcKugiCuuMPwhQe23dGDUxXQePHS35zTZXctxEqf+h
         9dVXkOnYj4VOH6LwQtR3733Gqk7kp/RDWlRro=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310557; x=1728915357;
        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=3VCbuxC6JGJm8j1BwRkys9Y1PD6avfaNtISsr+2/hAU=;
        b=ZMbj3kAaoBq0EreWSF3R85EjfkaaRzPIY4GE+s0lc/2Z9NSu6KLDWRAECHMmQbHDyZ
         0bFFkLgg7e6PF2bstMqOJreuf1LmR3c6XBwPRhPtIR5Ryfvc86HmBN4uHO3mGX8rFldH
         RH9eWKh1ysocj/6VrCaxPg7spy2/orLwlYV3MgEFv3nboRZXiRQs/OeqhfVgKKPZyZI5
         ww4xGClJkrVhwAGx4ZQ8GIGMgZc3wtFpQYM1dDU5wdK8oueCIVgqDWID2J8Ijd55zWRg
         lUNB5l/N8lSi0e9RA0mZJMV7Opsqrahy0RI5r099gomXSy+lFgYbcvBTz/xM+jdbjqIl
         B/0w==
X-Gm-Message-State: AOJu0Yzso9ocM9zVCtAgMfSnhY34ohyMJR0WzVrOCLDNJ6QLkDE2wyxt
	zc9H4qoYP4AOzevbLExN7zFVFFsN6jwNue1FC6F8ZaL1jwo6OcXR2p/9jirtndJFJT0S1o4NIkp
	Y
X-Google-Smtp-Source: AGHT+IGUmKrNBklvvNLErYZY3uJFOI579Vy2t8yLFBBWim+kwzXsY857xkGf5BHjOp+A9Az492dKJg==
X-Received: by 2002:a05:6402:40cf:b0:5c2:4cbe:ac1c with SMTP id 4fb4d7f45d1cf-5c8d2d00f16mr10677343a12.4.1728310556988;
        Mon, 07 Oct 2024 07:15:56 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v2 0/6] Reuse 32 bit C code more safely
Date: Mon,  7 Oct 2024 15:15:33 +0100
Message-Id: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series attempt to:
- use more C code, that is replace some assembly code with C;
- avoid some code duplication between C and assembly;
- prevent some issues having relocations in C code.

The idea is extending the current C to binary code conversion
done for 32 bit C code called from head.S making sure relocations
are safe and allowing external symbols usage from C code.

Note that, as an addition, scripts generating code check for no
data to allow code and data separation.

More details of the implementation are in commit message 3/6,
which is the largest patch.
Patch 4/6 reuses code to relocate the trampoline between 32 and 64 bit.
Patches 5/6 and 6/6 move some code from assembly to C.

Other RFC commits were excluded, I didn't manage to entangle the issues
sharing headers between 32 and 64 bits.
Since RFC code was more tested, also with CI and some incompatibility
were fixed. On that it's weird that we need Python 3.8 for Qemu but we
still use Python 2 for Xen. Shouldn't we bump requirement to Python 3
even for Xen?

Code boot successfully using:
- BIOS boot;
- EFI boot with Grub2 and ELF file;
- direct EFI boot without Grub.

Code is currently based on "master" branch, currently commit
6b20755c24ccd69d2482b45dfb9193940cdc346e.

Changes since v1:
- 2 preliminary commits for adjust .gitignore;
- last commit split (one variable at a time);
- lot of style and names changes;
- first commit, now 3/6 had some build changes, more details on
  commit message.

Frediano Ziglio (6):
  .gitignore: Remove not generated files
  x86/boot: Rationalise .gitignore
  x86/boot: create a C bundle for 32 bit boot code and use it
  x86/boot: Reuse code to relocate trampoline
  x86/boot: Use trampoline_phys variable directly from C code
  x86/boot: Use boot_vid_info variable directly from C code

 .gitignore                                    |   5 -
 xen/arch/x86/boot/.gitignore                  |   4 +
 xen/arch/x86/boot/Makefile                    |  62 ++++--
 .../x86/boot/{build32.lds => build32.lds.S}   |  49 ++++-
 xen/arch/x86/boot/cmdline.c                   |  12 --
 xen/arch/x86/boot/head.S                      |  49 +----
 xen/arch/x86/boot/reloc-trampoline.c          |  36 ++++
 xen/arch/x86/boot/reloc.c                     |  33 +--
 xen/arch/x86/efi/efi-boot.h                   |  15 +-
 xen/tools/combine_two_binaries                | 198 ++++++++++++++++++
 10 files changed, 344 insertions(+), 119 deletions(-)
 create mode 100644 xen/arch/x86/boot/.gitignore
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (57%)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
 create mode 100755 xen/tools/combine_two_binaries

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:16:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:16:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812033.1224701 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoWn-0003MK-2P; Mon, 07 Oct 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 812033.1224701; Mon, 07 Oct 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 1sxoWm-0003M9-Vt; Mon, 07 Oct 2024 14:16:00 +0000
Received: by outflank-mailman (input) for mailman id 812033;
 Mon, 07 Oct 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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxoWm-0002yM-0e
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:00 +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 ad1e8014-84b6-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 16:15:59 +0200 (CEST)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2f7657f9f62so43340481fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:15:59 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c119esm3386204a12.55.2024.10.07.07.15.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:15:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad1e8014-84b6-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728310559; x=1728915359; 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=qIJLH+pNn+xqq0KYYUmnx97/J/kG6GN6HUy92X5OMa0=;
        b=Cenvume+/1eXLkAOGI8TFA2+yxll8HKGlSohKjhNQ3JHfXXSZu1OCLKXxSKHbCbg3k
         UN3aCk1GO5kNfJdER1uW4zC66qlb43gr+adpGXfmI9DFbezXuSMKWAqz/5szn0fpJfhz
         H31wkAuMnRLshRQP8Oc3K/oa5pgq5nxnBeuAE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310559; x=1728915359;
        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=qIJLH+pNn+xqq0KYYUmnx97/J/kG6GN6HUy92X5OMa0=;
        b=BKefQE2d4hv5YSqvUzH480/kp1eLrQOwkcsZpuAyMsxjDIusN5444kU6nXFKJlI6rQ
         ReZV0hDNW+NiD2lkibeXGb1nkZcz+plWWa12zC7CNhDFUSFi6gQGYMmfpUw0ec21I2wj
         KddRwrkjSyAGFw9y2g3Eh7Ve3DIta9g1tz0qx15WA/BKIyJIun3XAMBePCAYz9dcVdst
         aBSiSZC52Gg2QXMGJy4MRKET2nKPCiPvFuukii/N1+uZbu93017m/bQ0AZ02arJLhbTT
         EassB7GRF9Nm28zmkIvt3q1XCgIj4GQozMwfzIDbSem88oFfNtl46lCWyvCsZ2OlCwgp
         m8Ww==
X-Gm-Message-State: AOJu0YzAGhjiWZ1aTnRQoIycO7Wlw7jMUXRrmWTp5cuLq1ovnLda+AAp
	2Do/rePpkx6b0m8RRSXv2Iagx7QDyXFS9ImPRVKrkV89DjhczAhvmX/wHDQi1PCVFVhGGjVKKMR
	j
X-Google-Smtp-Source: AGHT+IFNbTQpUUEqggAFsPrlPpU+tdz/i1iNVix2p3NCtxBXowfuW1xn2FiwJJO1fIXkltbQdVMzQw==
X-Received: by 2002:a05:651c:210e:b0:2f9:cf64:aaf6 with SMTP id 38308e7fff4ca-2faf3c30324mr51177771fa.17.1728310558686;
        Mon, 07 Oct 2024 07:15:58 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v2 2/6] x86/boot: Rationalise .gitignore
Date: Mon,  7 Oct 2024 15:15:35 +0100
Message-Id: <20241007141539.1899350-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Strip all related content out of the root .gitignore, and provide a
more local .gitignore's with up-to-date patterns.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 .gitignore                   | 3 ---
 xen/arch/x86/boot/.gitignore | 3 +++
 2 files changed, 3 insertions(+), 3 deletions(-)
 create mode 100644 xen/arch/x86/boot/.gitignore

diff --git a/.gitignore b/.gitignore
index 5a75b204f7..dae97ebfd7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -247,9 +247,6 @@ xen/.config
 xen/.config.old
 xen/.xen.elf32
 xen/System.map
-xen/arch/x86/boot/mkelf32
-xen/arch/x86/boot/*.bin
-xen/arch/x86/boot/*.lnk
 xen/arch/x86/efi.lds
 xen/arch/x86/efi/check.efi
 xen/arch/x86/efi/mkreloc
diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
new file mode 100644
index 0000000000..a379db7988
--- /dev/null
+++ b/xen/arch/x86/boot/.gitignore
@@ -0,0 +1,3 @@
+/mkelf32
+/*.bin
+/*.lnk
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:16:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:16:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812034.1224708 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoWn-0003Pp-F6; Mon, 07 Oct 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 812034.1224708; Mon, 07 Oct 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 1sxoWn-0003PJ-7q; Mon, 07 Oct 2024 14:16:01 +0000
Received: by outflank-mailman (input) for mailman id 812034;
 Mon, 07 Oct 2024 14:16: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxoWm-0002dC-Bi
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:00 +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 ac8acb83-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:15:58 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c88e45f467so7377292a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:15:58 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c119esm3386204a12.55.2024.10.07.07.15.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:15:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ac8acb83-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728310558; x=1728915358; 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=MRy9E4WznSom1/J2SL1lqN+BMsNpK3QJfQzYcePqKBM=;
        b=U0BRj+1EFayGnxqF3DrtI/WXWs7JsnXjt9SIqL5tx9A6hWVJToBJUXtxZDzlb2Y1XL
         wv5y5kdd0asreaKdP1pOnDi4ltcL0lr1JDK9kbiG9cyQIdV8joJ5+XK3MJ532PFtmGcJ
         EomCUbiPZZW/t4rudu9DfirJWkd3V23Lf8/Qs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310558; x=1728915358;
        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=MRy9E4WznSom1/J2SL1lqN+BMsNpK3QJfQzYcePqKBM=;
        b=obqZxP91uS0+tONWi+PxpsnK+OeW4QpTEFc6BsS5Mprx8V3dXsIBMtimROas6Vh8Bn
         JYkbLu/NBgvhmSxKJaxW3bFv6fSFiVjy4hrni8JvbsNAy162Sw4yIvjH/dyE28l0431S
         62a48EArqBTsgEeWynOBDyMXRHWrf2wj3urkkfUVitQ1ByLfyaDQISTwPf9mgBZvvlAa
         HzCA5aDNijeoq/fLvK4PLJrOvleZdZXifbuwz9D1+/t1DuzK6we0QvOf+t3gKBv3elbG
         scDMGZ2HZG+PHgVdBmT9He0A7XaEaMq4Iw+9yycghbG2sHsRSC4TamAZNHzwqEO2Y+ux
         Jy0A==
X-Gm-Message-State: AOJu0Yw8wj0DDanLn0hrDsECU2weptln2mWT4UnSZUd4BK+AhNFeu7vV
	i/Wv6w8DcVghOnGdMpIG5Rn+gBJ4hIknEVGsnDS8CrQ1nhhWBJhiyYgpheAj88kS1Sc6GYntPoq
	8
X-Google-Smtp-Source: AGHT+IFvMZ3MdnMKNmBIXqM2N3QWIBgPc3V0XUJuKrj9sTyeYf5AjCIfkMr96MfWko9Ru+iosrKe+w==
X-Received: by 2002:a05:6402:13c1:b0:5c8:a023:6b8b with SMTP id 4fb4d7f45d1cf-5c8d2f7d4bbmr14029909a12.15.1728310557854;
        Mon, 07 Oct 2024 07:15:57 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 1/6] .gitignore: Remove not generated files
Date: Mon,  7 Oct 2024 15:15:34 +0100
Message-Id: <20241007141539.1899350-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Both reloc.S and cmdline.S are not generated since commit
d58a509e01c4833515a9a8340706d1a23bef168b
("build,x86: remove the need for build32.mk").

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 .gitignore | 2 --
 1 file changed, 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index d88be80b28..5a75b204f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -248,8 +248,6 @@ xen/.config.old
 xen/.xen.elf32
 xen/System.map
 xen/arch/x86/boot/mkelf32
-xen/arch/x86/boot/cmdline.S
-xen/arch/x86/boot/reloc.S
 xen/arch/x86/boot/*.bin
 xen/arch/x86/boot/*.lnk
 xen/arch/x86/efi.lds
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:16:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:16:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812035.1224721 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoWp-0003sP-Nh; Mon, 07 Oct 2024 14:16:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812035.1224721; Mon, 07 Oct 2024 14:16: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 1sxoWp-0003sE-IS; Mon, 07 Oct 2024 14:16:03 +0000
Received: by outflank-mailman (input) for mailman id 812035;
 Mon, 07 Oct 2024 14:16: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxoWo-0002dC-Eu
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:02 +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 adbff330-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:16:00 +0200 (CEST)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fad100dd9eso43570731fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:16:00 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c119esm3386204a12.55.2024.10.07.07.15.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:15:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: adbff330-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728310560; x=1728915360; 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=kevqHPlOngQuOmstH4bxiNiM3x5PtCpRDsAd+HUlWeY=;
        b=Z1vaYX1/CBgJ6kccOX7CDSYKJJauOIY/4LJs9nbk5CrQ2TmKbdBn7d6DLvfdOsQkob
         Uj+ma+mBwCFUPsuCoDCx7+IlHPYhv1WERczCUWUbDI1eGzhLRBBkP+LjxcxPUjemqJNn
         +1ePrSx+MEjgBMi4qZs63Ln8A4BOi0ISCgk5k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310560; x=1728915360;
        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=kevqHPlOngQuOmstH4bxiNiM3x5PtCpRDsAd+HUlWeY=;
        b=tOvXF0N1W9t0shcu1DKUTcXRlVainPlNdNEc7tlklb9yV4ioUGAFSoiTEHcvMjW5Et
         OUQoRg3dZg/kNffDHugQ4i87Mg8Uysv2jXlbQxEizjODws0N6aF/tgYsKrvUkhz2aDq6
         ld6i3b0s9F35MITqJO19YxhzztbtcV50sRGe01WZJot21fYZhRB6henEnr50F1bqpCSK
         2hBScurrIdBzX5wENwlzynfZ0SpxfRAf07RQ91BZS72poCBXW1bnKiltXhTrs7OIk2nV
         qt1DVvkeArILoumM0mNKMTSmGOadh4swJHsg1HTq24Tan9XtgkX/n9K7wF6TN+lQqj0A
         hSpg==
X-Gm-Message-State: AOJu0YyQiOn2w3GA5aMd1pBbEB4NBh9JQj0c4ZD/ArIqT4x8qpA9k41z
	512t34mOH3dDyjmqSv1MG1xpxolRn7hRaugENgrwiXmwkrMRo2Z68xlzvAe8Zo/0PqKWzLHAO6V
	K
X-Google-Smtp-Source: AGHT+IHw20XEq5ecpCu6XjF/82Itx+TwEG2127ZTLEGPT+LIXZIPw4moIGX/J/LwktozDD77sKAIAQ==
X-Received: by 2002:a05:651c:501:b0:2f3:f4e2:869c with SMTP id 38308e7fff4ca-2faf3dac8edmr55377141fa.44.1728310559658;
        Mon, 07 Oct 2024 07:15:59 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 3/6] x86/boot: create a C bundle for 32 bit boot code and use it
Date: Mon,  7 Oct 2024 15:15:36 +0100
Message-Id: <20241007141539.1899350-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The current method to include 32 bit C boot code is:
- compile each function we want to use into a separate object file;
- each function is compiled with -fpic option;
- convert these object files to binary files. This operation removes GOP
  which we don't want in the executable;
- a small assembly part in each file add the entry point;
- code can't have external references, all possible variables are passed
  by value or pointer;
- include these binary files in head.S.

There are currently some limitations:
- code is compiled separately, it's not possible to share a function
  (like memcpy) between different functions to use;
- although code is compiled with -fpic there's no certainty there are
  no relocations, specifically data ones. This can lead into hard to
  find bugs;
- it's hard to add a simple function;
- having to pass external variables makes hard to do multiple things
  otherwise functions would require a lot of parameters so code would
  have to be split into multiple functions which is not easy;
- we generate a single text section containing data and code, not a
  problem at the moment but if we want to add W^X protection it's
  not helpful.

Current change extends the current process:
- all object files are linked together before getting converted making
  possible to share code between the function we want to call;
- a single object file is generated with all functions to use and
  exported symbols to easily call;
- variables to use are declared in linker script and easily used inside
  C code. Declaring them manually could be annoying but makes also
  easier to check them. Using external pointers can be still an issue if
  they are not fixed. If an external symbol is not declared this gives a
  link error;
- linker script put data (bss and data) into a separate section and
  check that that section is empty making sure code is W^X compatible;

Some details of the implementation:
- C code is compiled with -fpic flags (as before);
- object files from C code are linked together;
- the single bundled object file is linked with 2 slightly different
  script files to generate 2 bundled object files;
- the 2 bundled object files are converted to binary removing the need
  for global offset tables;
- a Python script is used to generate assembly source from the 2
  binaries;
- the single assembly file is compiled to generate final bundled object
  file;
- to detect possible unwanted relocation in data/code code is generated
  with different addresses. This is enforced starting .text section at
  different positions and adding a fixed "gap" at the beginning.
  This makes sure code and data is position independent;
- to detect used symbols in data/code symbols are placed in .text
  section at different offsets (based on the line in the linker script).
  This is needed as potentially a reference to a symbol is converted to
  a reference to the containing section so multiple symbols could be
  converted to reference to same symbol (section name) and we need to
  distinguish them;
- to avoid relocations
- --orphan-handling=error option to linker is used to make sure we
  account for all possible sections from C code;

Current limitations:
- the main one is the lack of support for 64 bit code. It would make
  sure that even the code used for 64 bit (at the moment EFI code) is
  code and data position independent. We cannot assume that code that
  came from code compiled for 32 bit and compiled for 64 bit is code and
  data position independent, different compiler options lead to
  different code/data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- separate lines adding files in Makefile;
- remove unneeded "#undef ENTRY" in build32.lds.S;
- print some information from combine_two_binaries only passing --verbose;
- detect --orphan-handling=error option dynamically;
- define and use a LD32;
- more intermediate targets to build more in parallel;
- use obj32 in Makefile to keep list of 32 bit object files;
- 32 bit object files are now named XXX.32.o;
- rename "cbundle" to "built_in_32".
---
 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  58 +++--
 .../x86/boot/{build32.lds => build32.lds.S}   |  43 +++-
 xen/arch/x86/boot/cmdline.c                   |  12 --
 xen/arch/x86/boot/head.S                      |  12 --
 xen/arch/x86/boot/reloc.c                     |  14 --
 xen/tools/combine_two_binaries                | 198 ++++++++++++++++++
 7 files changed, 283 insertions(+), 59 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (63%)
 create mode 100755 xen/tools/combine_two_binaries

diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
index a379db7988..ebad650e5c 100644
--- a/xen/arch/x86/boot/.gitignore
+++ b/xen/arch/x86/boot/.gitignore
@@ -1,3 +1,4 @@
 /mkelf32
-/*.bin
-/*.lnk
+/build32.*.lds
+/built_in_32.*.bin
+/built_in_32.*.map
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index ff0f965876..4cf0d7e140 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,15 +1,18 @@
+obj32 := cmdline.o
+obj32 += reloc.o
+
 obj-bin-y += head.o
+obj-bin-y += built_in_32.o
 
-head-bin-objs := cmdline.o reloc.o
+obj32 := $(patsubst %.o,%.32.o,$(obj32))
 
-nocov-y   += $(head-bin-objs)
-noubsan-y += $(head-bin-objs)
-targets   += $(head-bin-objs)
+nocov-y   += $(obj32)
+noubsan-y += $(obj32)
+targets   += $(obj32)
 
-head-bin-objs := $(addprefix $(obj)/,$(head-bin-objs))
+obj32 := $(addprefix $(obj)/,$(obj32))
 
 $(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(head-bin-objs:.o=.bin)
 
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
@@ -17,17 +20,46 @@ CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
 CFLAGS_x86_32 += -nostdinc -include $(filter %/include/xen/config.h,$(XEN_CFLAGS))
 CFLAGS_x86_32 += $(filter -I% -O%,$(XEN_CFLAGS)) -D__XEN__
 
+LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
+
 # override for 32bit binaries
-$(head-bin-objs): CFLAGS_stack_boundary :=
-$(head-bin-objs): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
+$(obj32): CFLAGS_stack_boundary :=
+$(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
 
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
 
-%.bin: %.lnk
-	$(OBJCOPY) -j .text -O binary $< $@
+$(obj)/%.32.o: $(src)/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+
+$(obj)/build32.final.lds: AFLAGS-y += -DFINAL
+$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S
+	$(call if_changed_dep,cpp_lds_S)
+
+orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
+
+# link all object files together
+$(obj)/built_in_32.tmp.o: $(obj32)
+	$(LD32) -r -o $@ $(obj32)
+
+$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.tmp.o
+## link bundle with a given layout
+	$(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
+## extract binaries from object
+	$(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
+	rm -f $(obj)/built_in_32.$(*F).o
 
-%.lnk: %.o $(src)/build32.lds
-	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -N -T $(filter %.lds,$^) -o $@ $<
+# generate final object file combining and checking above binaries
+$(obj)/built_in_32.o: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
+	$(PYTHON) $(srctree)/tools/combine_two_binaries \
+		--script $(obj)/build32.final.lds \
+		--bin1 $(obj)/built_in_32.other.bin --bin2 $(obj)/built_in_32.final.bin \
+		--map $(obj)/built_in_32.final.map \
+		--exports cmdline_parse_early,reloc \
+		--section-header '.section .init.text, "ax", @progbits' \
+		--output $(obj)/built_in_32.s
+	$(CC) -c $(obj)/built_in_32.s -o $@.tmp
+	rm -f $(obj)/built_in_32.s $@
+	mv $@.tmp $@
 
-clean-files := *.lnk *.bin
+clean-files := built_in_32.*.bin built_in_32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
similarity index 63%
rename from xen/arch/x86/boot/build32.lds
rename to xen/arch/x86/boot/build32.lds.S
index 56edaa727b..72a4c5c614 100644
--- a/xen/arch/x86/boot/build32.lds
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -15,22 +15,52 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-ENTRY(_start)
+#ifdef FINAL
+# define GAP 0
+# define MULT 0
+# define TEXT_START
+#else
+# define GAP 0x010200
+# define MULT 1
+# define TEXT_START 0x408020
+#endif
+# define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
+
+ENTRY(dummy_start)
 
 SECTIONS
 {
-  /* Merge code and data into one section. */
-  .text : {
+  /* Merge code and read-only data into one section. */
+  .text TEXT_START : {
+        /* Silence linker warning, we are not going to use it */
+        dummy_start = .;
+
+        /* Declare below any symbol name needed.
+         * Each symbol should be on its own line.
+         * It looks like a tedious work but we make sure the things we use.
+         * Potentially they should be all variables. */
+        DECLARE_IMPORT(__base_relocs_start);
+        DECLARE_IMPORT(__base_relocs_end);
+        . = . + GAP;
         *(.text)
         *(.text.*)
-        *(.data)
-        *(.data.*)
         *(.rodata)
         *(.rodata.*)
+  }
+
+  /* Writeable data sections. Check empty.
+   * We collapse all into code section and we don't want it to be writeable. */
+  .data : {
+        *(.data)
+        *(.data.*)
         *(.bss)
         *(.bss.*)
   }
-
+  /DISCARD/ : {
+       *(.comment)
+       *(.comment.*)
+       *(.note.*)
+  }
   /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
   .got : {
         *(.got)
@@ -64,3 +94,4 @@ ASSERT(SIZEOF(.igot.plt) == 0,    ".igot.plt non-empty")
 ASSERT(SIZEOF(.iplt) == 0,        ".iplt non-empty")
 ASSERT(SIZEOF(.plt) == 0,         ".plt non-empty")
 ASSERT(SIZEOF(.rel) == 0,         "leftover relocations")
+ASSERT(SIZEOF(.data) == 0,        "we don't want data")
diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index fc9241ede9..196c580e91 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -18,18 +18,6 @@
  * Linux kernel source (linux/lib/string.c).
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax      = &cmdline,
- *   - %edx      = &early_boot_opts.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  cmdline_parse_early      \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/kconfig.h>
 #include <xen/macros.h>
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index c4de1dfab5..e0776e3896 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -759,18 +759,6 @@ trampoline_setup:
         /* Jump into the relocated trampoline. */
         lret
 
-        /*
-         * cmdline and reloc are written in C, and linked to be 32bit PIC with
-         * entrypoints at 0 and using the fastcall convention.
-         */
-FUNC_LOCAL(cmdline_parse_early)
-        .incbin "cmdline.bin"
-END(cmdline_parse_early)
-
-FUNC_LOCAL(reloc)
-        .incbin "reloc.bin"
-END(reloc)
-
 ENTRY(trampoline_start)
 #include "trampoline.S"
 ENTRY(trampoline_end)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 8c58affcd9..94b078d7b1 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -12,20 +12,6 @@
  *    Daniel Kiper <daniel.kiper@oracle.com>
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax       = MAGIC,
- *   - %edx       = INFORMATION_ADDRESS,
- *   - %ecx       = TOPMOST_LOW_MEMORY_STACK_ADDRESS.
- *   - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  reloc                    \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/macros.h>
 #include <xen/types.h>
diff --git a/xen/tools/combine_two_binaries b/xen/tools/combine_two_binaries
new file mode 100755
index 0000000000..ea2d6ddc4e
--- /dev/null
+++ b/xen/tools/combine_two_binaries
@@ -0,0 +1,198 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+import argparse
+import re
+import struct
+import sys
+
+parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
+parser.add_argument('--script', dest='script',
+                    required=True,
+                    help='Linker script for extracting symbols')
+parser.add_argument('--bin1', dest='bin1',
+                    required=True,
+                    help='First binary')
+parser.add_argument('--bin2', dest='bin2',
+                    required=True,
+                    help='Second binary')
+parser.add_argument('--output', dest='output',
+                    help='Output file')
+parser.add_argument('--map', dest='mapfile',
+                    help='Map file to read for symbols to export')
+parser.add_argument('--exports', dest='exports',
+                    help='Symbols to export')
+parser.add_argument('--section-header', dest='section_header',
+                    default='.text',
+                    help='Section header declaration')
+parser.add_argument('-v', '--verbose',
+                    action='store_true')
+args = parser.parse_args()
+
+gap = 0x010200
+text_diff = 0x408020
+
+# Parse linker script for external symbols to use.
+symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')
+symbols = {}
+lines = {}
+for line in open(args.script):
+    m = symbol_re.match(line)
+    if not m:
+        continue
+    (name, line_num) = (m.group(1), int(m.group(2)))
+    if line_num == 0:
+        raise Exception("Invalid line number found:\n\t" + line)
+    if line_num in symbols:
+        raise Exception("Symbol with this line already present:\n\t" + line)
+    if name in lines:
+        raise Exception("Symbol with this name already present:\n\t" + name)
+    symbols[line_num] = name
+    lines[name] = line_num
+
+exports = []
+if args.exports is not None:
+    exports = dict([(name, None) for name in args.exports.split(',')])
+
+# Parse mapfile, look for ther symbols we want to export.
+if args.mapfile is not None:
+    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
+    for line in open(args.mapfile):
+        m = symbol_re.match(line)
+        if not m or m.group(2) not in exports:
+            continue
+        addr = int(m.group(1), 16)
+        exports[m.group(2)] = addr
+for (name, addr) in exports.items():
+    if addr is None:
+        raise Exception("Required export symbols %s not found" % name)
+
+file1 = open(args.bin1, 'rb')
+file2 = open(args.bin2, 'rb')
+file1.seek(0, 2)
+size1 = file1.tell()
+file2.seek(0, 2)
+size2 = file2.tell()
+if size1 > size2:
+    file1, file2 = file2, file1
+    size1, size2 = size2, size1
+if size2 != size1 + gap:
+    raise Exception('File sizes do not match')
+
+file1.seek(0, 0)
+data1 = file1.read(size1)
+file2.seek(gap, 0)
+data2 = file2.read(size1)
+
+max_line = max(symbols.keys())
+
+def to_int32(n):
+    '''Convert a number to signed 32 bit integer truncating if needed'''
+    mask = (1 << 32) - 1
+    h = 1 << 31
+    return (n & mask) ^ h - h
+
+i = 0
+references = {}
+internals = 0
+while i <= size1 - 4:
+    n1 = struct.unpack('<I', data1[i:i+4])[0]
+    n2 = struct.unpack('<I', data2[i:i+4])[0]
+    i += 1
+    # The two numbers are the same, no problems
+    if n1 == n2:
+        continue
+    # Try to understand why they are different
+    diff = to_int32(n1 - n2)
+    if diff == -gap: # this is an internal relocation
+        pos = i - 1
+        print(("Internal relocation found at position %#x "
+               "n1=%#x n2=%#x diff=%#x") % (pos, n1, n2, diff),
+              file=sys.stderr)
+        i += 3
+        internals += 1
+        if internals >= 10:
+            break
+        continue
+    # This is a relative relocation to a symbol, accepted, code/data is
+    # relocatable.
+    if diff < gap and diff >= gap - max_line:
+        n = gap - diff
+        symbol = symbols.get(n)
+        # check we have a symbol
+        if symbol is None:
+            raise Exception("Cannot find symbol for line %d" % n)
+        pos = i - 1
+        if args.verbose:
+            print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
+        i += 3
+        references[pos] = symbol
+        continue
+    # First byte is the same, move to next byte
+    if diff & 0xff == 0 and i <= size1 - 4:
+       continue
+    # Probably a type of relocation we don't want or support
+    pos = i - 1
+    suggestion = ''
+    symbol = symbols.get(-diff - text_diff)
+    if symbol is not None:
+        suggestion = " Maybe %s is not defined as hidden?" % symbol
+    raise Exception(("Unexpected difference found at %#x "
+                     "n1=%#x n2=%#x diff=%#x gap=%#x.%s") % \
+                     (pos, n1, n2, diff, gap, suggestion))
+if internals != 0:
+    raise Exception("Previous relocations found")
+
+def line_bytes(buf, out):
+    '''Output an assembly line with all bytes in "buf"'''
+    if type(buf) == str:
+        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
+    else:
+        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)
+
+def part(start, end, out):
+    '''Output bytes of "data" from "start" to "end"'''
+    while start < end:
+        e = min(start + 16, end)
+        line_bytes(data1[start:e], out)
+        start = e
+
+def reference(pos, out):
+    name = references[pos]
+    n = struct.unpack('<I', data1[pos:pos+4])[0]
+    sign = '+'
+    if n >= (1 << 31):
+        n -= (1 << 32)
+    n += pos
+    if n < 0:
+        n = -n
+        sign = '-'
+    print("\t.hidden %s\n\t.long %s %s %#x - ." % (name, name, sign, n),
+          file=out)
+
+def output(out):
+    prev = 0
+    exports_by_addr = {}
+    for (sym, addr) in exports.items():
+        exports_by_addr.setdefault(addr, []).append(sym)
+    positions = list(references.keys())
+    positions += list(exports_by_addr.keys())
+    for pos in sorted(positions):
+        part(prev, pos, out)
+        prev = pos
+        if pos in references:
+            reference(pos, out)
+            prev = pos + 4
+        if pos in exports_by_addr:
+            for sym in exports_by_addr[pos]:
+                print("\t.global %s\n\t.hidden %s\n%s:" % (sym, sym, sym),
+                      file=out)
+    part(prev, size1, out)
+
+out = sys.stdout
+if args.output is not None:
+    out = open(args.output, 'w')
+print('\t' + args.section_header, file=out)
+output(out)
+print('\n\t.section\t.note.GNU-stack,"",@progbits', file=out)
+out.flush()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:16:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:16:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812036.1224728 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoWq-0003yd-Bx; Mon, 07 Oct 2024 14:16:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812036.1224728; Mon, 07 Oct 2024 14:16: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 1sxoWq-0003xR-3f; Mon, 07 Oct 2024 14:16:04 +0000
Received: by outflank-mailman (input) for mailman id 812036;
 Mon, 07 Oct 2024 14:16: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxoWo-0002dC-Sm
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:02 +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 ae238ce7-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:16:01 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c89bdb9019so5457342a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:16:01 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c119esm3386204a12.55.2024.10.07.07.15.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:16:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae238ce7-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728310560; x=1728915360; 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=q5/3n16EnUjBRG5AvCw7/t22OjOl8ho/k7P3Cayw7x4=;
        b=JMotmb1zXRpyEXRBchG+DiWRiJ66nUNB07SzW6pOc3fGZgD3ORIe3IHJ8I+9n0Irbe
         6/5Xt2G5U+xBocjNfbOIPzRV7k6Z9SCFnuSv1qs3+ynlm5dm6i56Ocb1LiRZauZpDucX
         joEpFnVBF4a/idQILV5X3SkAy/fJKYBBTmUtM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310560; x=1728915360;
        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=q5/3n16EnUjBRG5AvCw7/t22OjOl8ho/k7P3Cayw7x4=;
        b=wAlbi2HXjH557nKDyp8ZZYP7cbuBmj4X1thne8i9N0sPermzt0ZWiaQ36akPAO2S2h
         XNSNuYaXBD/N1KJZyRIdG48LZXYCOYtgRrzZQ7PLRtGJi27nNDDUxOlbBbhZ2bCFoj19
         EhWi/d1csQLBroVmoU4KPbdEQDOZac9g6CmeiLJ9zTSEZP8bBwSkIGF4a15CxWLAo9Jh
         6Z/wJzZBUQMfVT3xpD0/lpmMmDn+sZenfL2iHm182PeBGWGyadgcnTdmObvcOLUpfqfD
         m2fdsImQfBmbtzuyTjKjAMWj+NtTcYx+YUcBMHGZooEP4wGyYlSxNSGs0PlUmIcJIlIt
         YDng==
X-Gm-Message-State: AOJu0Yx8DhKD6qm71Q/jlBi6VMAFy2CEeaohy6ffI7eNlJFxR+9SlQwv
	DJWw4IxDYkMiH59OEe9JBZKj1zbm09PgMdfoxQ/XzUSi1so737NGAs0uhH8gO/o7cGeJDHtayVW
	h
X-Google-Smtp-Source: AGHT+IHhLmA9sj29joNRSENtbo+EU9iWrDMzaKaKjUrgFrbDBZuEVwcfQuKSr9IZpyP9F4R+RHO9WQ==
X-Received: by 2002:a05:6402:3582:b0:5c8:9515:cbe with SMTP id 4fb4d7f45d1cf-5c8d2dfbf42mr9281339a12.3.1728310560431;
        Mon, 07 Oct 2024 07:16:00 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v2 4/6] x86/boot: Reuse code to relocate trampoline
Date: Mon,  7 Oct 2024 15:15:37 +0100
Message-Id: <20241007141539.1899350-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/Makefile           | 12 ++++++----
 xen/arch/x86/boot/build32.lds.S      |  5 ++++
 xen/arch/x86/boot/head.S             | 23 +-----------------
 xen/arch/x86/boot/reloc-trampoline.c | 36 ++++++++++++++++++++++++++++
 xen/arch/x86/efi/efi-boot.h          | 15 ++----------
 5 files changed, 52 insertions(+), 39 deletions(-)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 4cf0d7e140..24b4b0cb17 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,14 +1,18 @@
 obj32 := cmdline.o
 obj32 += reloc.o
+obj32 += reloc-trampoline.o
+
+obj64 := reloc-trampoline.o
 
 obj-bin-y += head.o
 obj-bin-y += built_in_32.o
+obj-bin-y += $(obj64)
 
 obj32 := $(patsubst %.o,%.32.o,$(obj32))
 
-nocov-y   += $(obj32)
-noubsan-y += $(obj32)
-targets   += $(obj32)
+nocov-y   += $(obj32) $(obj64)
+noubsan-y += $(obj32) $(obj64)
+targets   += $(obj32) $(obj64)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
@@ -55,7 +59,7 @@ $(obj)/built_in_32.o: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
 		--script $(obj)/build32.final.lds \
 		--bin1 $(obj)/built_in_32.other.bin --bin2 $(obj)/built_in_32.final.bin \
 		--map $(obj)/built_in_32.final.map \
-		--exports cmdline_parse_early,reloc \
+		--exports cmdline_parse_early,reloc,reloc_trampoline32 \
 		--section-header '.section .init.text, "ax", @progbits' \
 		--output $(obj)/built_in_32.s
 	$(CC) -c $(obj)/built_in_32.s -o $@.tmp
diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 72a4c5c614..9d09e3adbd 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -41,6 +41,11 @@ SECTIONS
          * Potentially they should be all variables. */
         DECLARE_IMPORT(__base_relocs_start);
         DECLARE_IMPORT(__base_relocs_end);
+        DECLARE_IMPORT(__trampoline_rel_start);
+        DECLARE_IMPORT(__trampoline_rel_stop);
+        DECLARE_IMPORT(__trampoline_seg_start);
+        DECLARE_IMPORT(__trampoline_seg_stop);
+        DECLARE_IMPORT(trampoline_phys);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0776e3896..ade2c5c43d 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -706,28 +706,7 @@ trampoline_setup:
         mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
 
         /* Apply relocations to bootstrap trampoline. */
-        mov     sym_esi(trampoline_phys), %edx
-        lea     sym_esi(__trampoline_rel_start), %edi
-        lea     sym_esi(__trampoline_rel_stop), %ecx
-1:
-        mov     (%edi), %eax
-        add     %edx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
-
-        /* Patch in the trampoline segment. */
-        shr     $4,%edx
-        lea     sym_esi(__trampoline_seg_start), %edi
-        lea     sym_esi(__trampoline_seg_stop), %ecx
-1:
-        mov     (%edi), %eax
-        mov     %dx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
+        call    reloc_trampoline32
 
         /* Do not parse command line on EFI platform here. */
         cmpb    $0, sym_esi(efi_platform)
diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
new file mode 100644
index 0000000000..c899e99b08
--- /dev/null
+++ b/xen/arch/x86/boot/reloc-trampoline.c
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/compiler.h>
+#include <xen/stdint.h>
+#include <asm/trampoline.h>
+
+extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+
+#if defined(__i386__)
+void reloc_trampoline32(void)
+#elif defined (__x86_64__)
+void reloc_trampoline64(void)
+#else
+#error Unknow architecture
+#endif
+{
+    unsigned long phys = trampoline_phys;
+    const int32_t *trampoline_ptr;
+
+    /*
+     * Apply relocations to trampoline.
+     *
+     * This modifies the trampoline in place within Xen, so that it will
+     * operate correctly when copied into place.
+     */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f3443364..1acceec471 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned long delta)
     }
 }
 
-extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+void reloc_trampoline64(void);
 
 static void __init relocate_trampoline(unsigned long phys)
 {
-    const int32_t *trampoline_ptr;
-
     trampoline_phys = phys;
 
     if ( !efi_enabled(EFI_LOADER) )
         return;
 
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+    reloc_trampoline64();
 }
 
 static void __init place_string(u32 *addr, const char *s)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:16:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:16:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812037.1224732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoWq-000436-K9; Mon, 07 Oct 2024 14:16:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812037.1224732; Mon, 07 Oct 2024 14:16: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 1sxoWq-00041v-De; Mon, 07 Oct 2024 14:16:04 +0000
Received: by outflank-mailman (input) for mailman id 812037;
 Mon, 07 Oct 2024 14:16: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxoWp-0002yM-JU
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:03 +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 af1ecbae-84b6-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 16:16:03 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so8749903a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:16:03 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c119esm3386204a12.55.2024.10.07.07.16.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:16:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af1ecbae-84b6-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728310562; x=1728915362; 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=jmMdYCt1I0XZA3ClyzHKp7S/KpmvK5I8XHuXhKfs8dM=;
        b=QQHoR0UXxrdhfBXf1bycse/+4+40fS+x4bO8xs1rmoGDsdZ8O98y6OPqCFliyoJa+W
         saixbiEQATQLtZcgxuSmP3vWQ/2BThuAU6Mbe7ulorqxs8b2Sr4mE7kiEjJIz/1YpzSS
         QY9JNuGar0zNtTU5VBf1aoanUOadTYASlPvAQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310562; x=1728915362;
        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=jmMdYCt1I0XZA3ClyzHKp7S/KpmvK5I8XHuXhKfs8dM=;
        b=HARfZtmUPFzxP9+KU/cqvG0LGXZQ/0z1FjNI9rcUfOYaJDJe7Q5UpD5h55DwOuh4/9
         dp4JgimBcSvnR2stJTIxSSOvkMKrt5uif+0w5U/eB5PPlDHSBsTewuC45mPYk9AP8wut
         sk9V8i52zLdueIpluRuXdEl8ieGmq19EYBXAwzEaQXOPOumfMsT38MXdT0o+JBWmFpyA
         N0DY/KNr1LApKXvR4T56jJsV57UKLaPeSKz0GjerK7KEpX2yrR/NSmnCwu5CJrllPZjo
         n6JLL7VJrPcgxBQar+ClQW1oPxWt+Ge4aRrHY70gko7Tz1xISeR2a3JJcC7s2pDm3aFJ
         zniQ==
X-Gm-Message-State: AOJu0YzLretnQVwUDIqtV4jBvm8OxoTwU4p/ZwKjYveTqX7QxORwrdlO
	Di8JBXgyOCzHeyL2adY/nRGRCOuY9qCzT79F/+njT6M71MuyCxYcQTWe8j4i/6THRbpGRSzBZD0
	j
X-Google-Smtp-Source: AGHT+IFPRmj/tcAamcM2IaLVdwc5e0ZRbueK5DWj7yl1eChU2Au+DckDwtKwMAHqsfJe28ghGrgmww==
X-Received: by 2002:a05:6402:5250:b0:5c5:c444:4e3a with SMTP id 4fb4d7f45d1cf-5c8d2e5523bmr13554093a12.0.1728310562231;
        Mon, 07 Oct 2024 07:16:02 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v2 6/6] x86/boot: Use boot_vid_info variable directly from C code
Date: Mon,  7 Oct 2024 15:15:39 +0100
Message-Id: <20241007141539.1899350-7-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/build32.lds.S |  1 +
 xen/arch/x86/boot/head.S        |  9 +--------
 xen/arch/x86/boot/reloc.c       | 12 +++++-------
 3 files changed, 7 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 9d09e3adbd..26ef609523 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -46,6 +46,7 @@ SECTIONS
         DECLARE_IMPORT(__trampoline_seg_start);
         DECLARE_IMPORT(__trampoline_seg_stop);
         DECLARE_IMPORT(trampoline_phys);
+        DECLARE_IMPORT(boot_vid_info);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 32b658fa2b..dcda91cfda 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,16 +510,9 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Boot video info to be filled from MB2. */
-#ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %ecx
-#else
-        xor     %ecx, %ecx
-#endif
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx) using fastcall. */
         call    reloc
 
 #ifdef CONFIG_PVH_GUEST
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 4cca61adec..8527fa8d01 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -179,7 +179,7 @@ static multiboot_info_t *mbi_reloc(uint32_t mbi_in, memctx *ctx)
     return mbi_out;
 }
 
-static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx *ctx)
+static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 {
     const multiboot2_fixed_t *mbi_fix = _p(mbi_in);
     const multiboot2_memory_map_t *mmap_src;
@@ -188,7 +188,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
     memory_map_t *mmap_dst;
     multiboot_info_t *mbi_out;
 #ifdef CONFIG_VIDEO
-    struct boot_video_info *video = NULL;
+    struct boot_video_info *video = &boot_vid_info;
 #endif
     uint32_t ptr;
     unsigned int i, mod_idx = 0;
@@ -293,12 +293,11 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 
 #ifdef CONFIG_VIDEO
         case MULTIBOOT2_TAG_TYPE_VBE:
-            if ( video_out )
+            if ( video )
             {
                 const struct vesa_ctrl_info *ci;
                 const struct vesa_mode_info *mi;
 
-                video = _p(video_out);
                 ci = (const void *)get_mb2_data(tag, vbe, vbe_control_info);
                 mi = (const void *)get_mb2_data(tag, vbe, vbe_mode_info);
 
@@ -324,7 +323,6 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
             if ( (get_mb2_data(tag, framebuffer, framebuffer_type) !=
                   MULTIBOOT2_FRAMEBUFFER_TYPE_RGB) )
             {
-                video_out = 0;
                 video = NULL;
             }
             break;
@@ -349,7 +347,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in)
 {
     /* Get bottom-most low-memory stack address. */
     memctx ctx = { (uint32_t)((long)trampoline_phys + TRAMPOLINE_SPACE) };
@@ -360,7 +358,7 @@ void *reloc(uint32_t magic, uint32_t in, uint32_t video_info)
         return mbi_reloc(in, &ctx);
 
     case MULTIBOOT2_BOOTLOADER_MAGIC:
-        return mbi2_reloc(in, video_info, &ctx);
+        return mbi2_reloc(in, &ctx);
 
     case XEN_HVM_START_MAGIC_VALUE:
         if ( IS_ENABLED(CONFIG_PVH_GUEST) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:16:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:16:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812038.1224749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoWs-0004YA-2t; Mon, 07 Oct 2024 14:16:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812038.1224749; Mon, 07 Oct 2024 14:16: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 1sxoWr-0004Vq-Q3; Mon, 07 Oct 2024 14:16:05 +0000
Received: by outflank-mailman (input) for mailman id 812038;
 Mon, 07 Oct 2024 14:16: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=aWQm=RD=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sxoWp-0002dC-KI
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:03 +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 aea8827a-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:16:02 +0200 (CEST)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2fad15b3eeeso47337221fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:16:02 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c119esm3386204a12.55.2024.10.07.07.16.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:16:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aea8827a-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728310561; x=1728915361; 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=tpfgwl9+LkPM73G0fVQDQXvT2n2qaAQPOJ+RtwChmH0=;
        b=eIgGHE2YFTf0f7wq7yvQ6ztv3EUjegLUvcaB59N2JIxNkJtPLt8WVcJVXzeVrU9/jL
         YV7vKWyU15mtpHde3lSIN9pGjZslQGtlhO0I0eTRrJ3HHdDm9N+ozHiOfCNWqubnrjIr
         0J+uQR3b04WreMNgYY1msP6WfK0P8b/rYntoo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310561; x=1728915361;
        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=tpfgwl9+LkPM73G0fVQDQXvT2n2qaAQPOJ+RtwChmH0=;
        b=cGmHVgdbwTCsNPPdRvDGf2VEPPrka3ROSaDL2k4xbToJlQd3doo2nFk2JPsbPuQZV+
         qJN8kM/OXEIbRhxrTzuk7NeZVSHcqACo/oXc1bbKcuoAvQ6ZDvNPjt/U4l+7nCdNW1Au
         3BlvWxnqFUgtFZNfBaIVi4HZG1aEEQTR2TmABuLQ//HCITeLx+E9voFQOTgsVqJvOnNL
         o7LelKxjEJvSJYusOa3ch69khyd5Hv98YEE/K4VRBBHRfNdcKxKO5cTCfawy9o943JPp
         o99tfixy0BJ1Z4qMlHTCz6KKVT1a9IrieJpWm/fXgEejfr7rTowkF7HHtdQuvLfbNEDm
         kdGA==
X-Gm-Message-State: AOJu0Ywda0T2yn7L+IoiZJnzxHDbZ++cUysWl++n+2JUFK2lP8JBgCMZ
	tHzjmAVilYDbPLs8JDik7G1DqRNvi3KZKLkbYUNsJuViQPzmcxIBQZdMKrEuJ1Nmjetp56XnYB0
	p
X-Google-Smtp-Source: AGHT+IEF0VnaL/GsX6YzvLTL6b7/rr5ZLQnGRRxavwji5QCpcOUL3lClS1wbCjiH2SxtHUBATOzmmQ==
X-Received: by 2002:a05:651c:19a2:b0:2fa:c60a:ce6f with SMTP id 38308e7fff4ca-2faf3c1cf0emr57552911fa.16.1728310561379;
        Mon, 07 Oct 2024 07:16:01 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v2 5/6] x86/boot: Use trampoline_phys variable directly from C code
Date: Mon,  7 Oct 2024 15:15:38 +0100
Message-Id: <20241007141539.1899350-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.
---
 xen/arch/x86/boot/head.S  | 13 ++++---------
 xen/arch/x86/boot/reloc.c |  9 ++++++---
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index ade2c5c43d..32b658fa2b 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,22 +510,17 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Get bottom-most low-memory stack address. */
-        mov     sym_esi(trampoline_phys), %ecx
-        add     $TRAMPOLINE_SPACE,%ecx
-
+        /* Boot video info to be filled from MB2. */
 #ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %edx
+        lea     sym_esi(boot_vid_info), %ecx
 #else
-        xor     %edx, %edx
+        xor     %ecx, %ecx
 #endif
 
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
-        push    %edx                /* Boot video info to be filled from MB2. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx, video/stk) using fastcall. */
         call    reloc
-        add     $4, %esp
 
 #ifdef CONFIG_PVH_GUEST
         cmpb    $0, sym_esi(pvh_boot)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 94b078d7b1..4cca61adec 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -19,6 +19,9 @@
 #include <xen/kconfig.h>
 #include <xen/multiboot.h>
 #include <xen/multiboot2.h>
+#include <xen/page-size.h>
+
+#include <asm/trampoline.h>
 
 #include <public/arch-x86/hvm/start_info.h>
 
@@ -346,10 +349,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
-            uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in, uint32_t video_info)
 {
-    memctx ctx = { trampoline };
+    /* Get bottom-most low-memory stack address. */
+    memctx ctx = { (uint32_t)((long)trampoline_phys + TRAMPOLINE_SPACE) };
 
     switch ( magic )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:25:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:25:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812052.1224761 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxofU-0004s0-R6; Mon, 07 Oct 2024 14:25:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812052.1224761; Mon, 07 Oct 2024 14: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 1sxofU-0004rt-OL; Mon, 07 Oct 2024 14:25:00 +0000
Received: by outflank-mailman (input) for mailman id 812052;
 Mon, 07 Oct 2024 14: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxofU-0004rn-6L
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:25:00 +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 ee2c1515-84b7-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:24:58 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9941a48ac8so260804566b.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:24:58 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993fdd2202sm309529566b.55.2024.10.07.07.24.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 07:24:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee2c1515-84b7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728311098; x=1728915898; 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=6UzigQuNzrZ1FoMMvpeImqwe6ltTBix1eG3I2N7VJcg=;
        b=VUBaKoujXweY9t/Xlu8O61Eh/Pq6cKuRhjKZblqmfXrvrAQN+2Man3YxZM5YYfy1bb
         Uy0f3pFTnQ0/TTJC5FDOY6QspWn8ndC4mAf1hFXDDtVYyUsXrcjiFpNol7ax6MbJTlF4
         8of/b9gwf2IItrfWGE9N4vhZ1DLqOodLRlx/pfsde9u2VdfCRfdGr99gALP++cw1nlOF
         qk3d1eXq+uPDNKqfM/0lym0Hv3YdLd8XheJ0lB8W/VFhXKmwNF80VI2S9FhAynSXn7PP
         J6RUcnM73nGKq78tdMmbJ0zA3fuj2L3gofIJDwrhBBp14Hx8u2wDH9FdenLZIbcNGb6t
         QVig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728311098; x=1728915898;
        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=6UzigQuNzrZ1FoMMvpeImqwe6ltTBix1eG3I2N7VJcg=;
        b=Hy6v+kq8BMZunrlCRQdzhySqdMDm6BWktox/bEd9RbBZhJbA0b/XUVvG0YB+4eG0gM
         XxYF+E6XolfwkCUcNMGbXAGEAbpyguQvIS/rYHtQtkKNunArrdWGiZgVY638hUJkvyfU
         ilFNUswHCLezJvpEgCY6fJuxQmwC5Gts3SvhTZwPl6ChmvLoqWEUDHcjSuRi1AtBtUtJ
         INZhPxwl3spkatCSmsRvflxZYOcjblyGrBbxhmDWStCQaU/xGqdY64p0h1cS0ruWqjxS
         RthiNBOoUsa6kHI/vrF9tuf5fTD2Ym/5YwjMSPCTwYi/V+4BC9JSp1jGkr9+fZZxDDmy
         hysA==
X-Forwarded-Encrypted: i=1; AJvYcCV9c4gM5JwgharYBmcktf6bEYxpgPRxo1vxw6OmbeYGz1YSIdx7zTTSs66C6c4sOCDiAVdzyjxg338=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwhJF76/DEv9sDt7rqoYi2fIsnCFdt4V9aKMXJh9V+E1qrkcFfT
	fErt3w1e4idvllyr2/MKDFo3smQec+Ox4lrEr6WjGsQypKk6JAUXMtzv2fbKmQ==
X-Google-Smtp-Source: AGHT+IERRVvLSXhtAYFKXucaccBsI8R5m13Nc+37x3xEhCpGU0P9EZ7klNCQYmW9S2K/VWscyQZp2Q==
X-Received: by 2002:a17:907:2cc2:b0:a99:6476:ce78 with SMTP id a640c23a62f3a-a99647705c3mr31432366b.17.1728311097692;
        Mon, 07 Oct 2024 07:24:57 -0700 (PDT)
Message-ID: <f334ebae-eeda-4582-92e6-1cfcfa765b67@suse.com>
Date: Mon, 7 Oct 2024 16:24:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/4] x86/emul: add defensive code
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1728308312.git.federico.serafini@bugseng.com>
 <063bd71b535825715bd54ee9238bec2fc87f0bba.1728308312.git.federico.serafini@bugseng.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: <063bd71b535825715bd54ee9238bec2fc87f0bba.1728308312.git.federico.serafini@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 16:16, Federico Serafini wrote:
> Add defensive code after unreachable program points.
> This also meets the requirements to deviate violations of MISRA C:2012
> Rule 16.3: "An unconditional `break' statement shall terminate every
> switch-clause".
> 
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>

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




From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:26:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:26:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812062.1224770 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxogs-0005Z4-8C; Mon, 07 Oct 2024 14:26:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812062.1224770; Mon, 07 Oct 2024 14:26: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 1sxogs-0005Yx-5i; Mon, 07 Oct 2024 14:26:26 +0000
Received: by outflank-mailman (input) for mailman id 812062;
 Mon, 07 Oct 2024 14:26: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=/gRD=RD=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1sxoXO-0002yM-3E
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:38 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c3bc471c-84b6-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 16:16:37 +0200 (CEST)
Received: from truciolo.bugseng.com (unknown [37.162.58.49])
 by support.bugseng.com (Postfix) with ESMTPSA id 4C67E4EE074C;
 Mon,  7 Oct 2024 16:16:36 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c3bc471c-84b6-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1728310597; bh=Cj7N+K8vyoIngmTvtRYCAMfqpWWddHIl9pmTFZ7wneY=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=HlM9scJN3uJ3HDUAg+2dJHb1oLxWkXIjhV32iHKtNcMKHzFdTtGNxjUfVtugP5QZf
	 pinxogS46o5Y5Vq9wmzsTzfT5LtLERkht6uXnM+jIQGHCJbAQ45yG1ckvoTa5PBIH8
	 hCLAgvPD74v/aZa42Ji+wDxzrJXWnrZstmeFw1bJMszg1MWt2GxMaEaibWDnRBaMwj
	 LugF/OPtHc8rdwS/+F2oAsmwO/Wq935GBF+GPJyj7Ku3Ihp+rgZ481hUrV1EfT1cAh
	 walqsVhR3YBwGY7C0LUc6C4CrKeQOizm7nVh8LJa7sfcezrrbU5S4tz8y4bOTrdrrC
	 XUHLbd6hHFOxA==
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>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v2 4/4] xen/pci: address a violation of MISRA C Rule 16.3
Date: Mon,  7 Oct 2024 16:16:19 +0200
Message-ID: <c662cae0f545a4e4e3921ae13bf69dc02884d9ee.1728308312.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1728308312.git.federico.serafini@bugseng.com>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Refactor the code to avoid an implicit fallthrough and address
a violation 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>
---
Changes in v2:
- improved description.
---
 xen/drivers/passthrough/pci.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 5a446d3dce..a5705def3f 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -170,8 +170,10 @@ static int __init cf_check parse_phantom_dev(const char *str)
     {
     case 1: case 2: case 4:
         if ( *s )
-    default:
             return -EINVAL;
+        break;
+    default:
+        return -EINVAL;
     }
 
     phantom_devs[nr_phantom_devs++] = phantom;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:26:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:26:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812070.1224781 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoh8-0006Yh-HQ; Mon, 07 Oct 2024 14:26:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812070.1224781; Mon, 07 Oct 2024 14: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 1sxoh8-0006Ya-ET; Mon, 07 Oct 2024 14:26:42 +0000
Received: by outflank-mailman (input) for mailman id 812070;
 Mon, 07 Oct 2024 14: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=/gRD=RD=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1sxoXK-0002yM-Tf
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:35 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c1249571-84b6-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 16:16:33 +0200 (CEST)
Received: from truciolo.bugseng.com (unknown [37.162.58.49])
 by support.bugseng.com (Postfix) with ESMTPSA id 914A14EE073C;
 Mon,  7 Oct 2024 16:16:31 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1249571-84b6-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1728310592; bh=Rw/6lZkUT95Q5eXiyKwB9nvEthMA7107H6dUFqAvFQw=;
	h=From:To:Cc:Subject:Date:From;
	b=PR80RBPwTk9ySh5HosVxP/egnBDn97uzlcxtiypTM+0tEi8iw531G0Et2nFuLocaS
	 2CPXIZz2w4kx6RKmlti9Ld9oVsS8ZHKHKB8hJ3DBTJPEWNv+WC3XAnfjxotlJQO2Vi
	 dvYN4x+pz5C9SyANk1QxprD+LJUqp8owQKU+gmE6uJD8npZ6k/tWWwcdFMbeuTSiFT
	 SAh67lsl1aBISFXYTDMBQa3hvI9rbLPP7aU45RZRdqKuNW5Y79x6QCJTM3vB7zHstr
	 xyGO+I747qvh5tcGWDHfhy53YkTgXVD1FXeULTzYfaaOT53/mr82oN86b3ZBl+y8bR
	 Qx0+cg8ztvjpg==
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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v2 0/4] x86: address violations of MISRA C Rule 16.3
Date: Mon,  7 Oct 2024 16:16:15 +0200
Message-ID: <cover.1728308312.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

If these 4 patches will be committed, only 4 violations will be left:
these are under x86_emulate and involve some fallthrough cases.
I'll wait for instructions from x86 maintainers about the right "format" to make
the fallthrough intention explicit (i.e., a comment or the fallthrough keyword
that is not defined in x86-emulate.h at the moment).

Federico Serafini (4):
  x86/emul: add defensive code
  x86/emul: address violations of MISRA C Rule 16.3
  xen/vpci: address violations of MISRA C Rule 16.3
  xen/pci: address a violation of MISRA C Rule 16.3

 xen/arch/x86/x86_emulate/fpu.c         | 5 +++++
 xen/arch/x86/x86_emulate/x86_emulate.c | 3 +++
 xen/drivers/passthrough/pci.c          | 4 +++-
 xen/drivers/vpci/msix.c                | 2 ++
 4 files changed, 13 insertions(+), 1 deletion(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:26:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:26:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812071.1224791 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoh9-0006rq-Nw; Mon, 07 Oct 2024 14:26:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812071.1224791; Mon, 07 Oct 2024 14: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 1sxoh9-0006rj-KW; Mon, 07 Oct 2024 14:26:43 +0000
Received: by outflank-mailman (input) for mailman id 812071;
 Mon, 07 Oct 2024 14:26: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=arWC=RD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sxoXb-0002yM-0G
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:51 +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 cb5b7f2f-84b6-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 16:16:50 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c718bb04a3so6355922a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:16:50 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99420bcc1esm293784766b.199.2024.10.07.07.16.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 07:16:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cb5b7f2f-84b6-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728310610; x=1728915410; 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=v9PKZQwIn/DtPDlzLfWy1uQqywpKMW3MzbGHsy0oE7A=;
        b=lOMjpVJcv4/H+WmdDrvYQlXppoXf4UxUstX1Opoo/sTacr+COqq0hj4UHZCSWBLbui
         ewQey1pl9kLrY5YkjsnBrVpR/MQkP/F2wosLwdJzdGg+nakX8NUQMRKvn1gRxiA0Rcsv
         KhjBolkGFAqBfekJLhJQOTi8whGNT5ik6oa0s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728310610; x=1728915410;
        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=v9PKZQwIn/DtPDlzLfWy1uQqywpKMW3MzbGHsy0oE7A=;
        b=WI+6ondPGKH9wrl+UdQW2LG7frZ4ELMp/DYTdXQILexa3v7Nx/fjJtjic1dC/GORez
         1Ae+NQVisnakVFcBhD6kOlyYab5Mi7NyKtM9ELCIYb9qfUI7ibCVmfZfXxdx81ozOgjI
         ENwfVDirp2z0HaVJ9/hoEd0dDIQ8fisLxFn+m2R+SasDJPFHjIb2mQp5kjjX2vR4xCeO
         7XYZqXRa6Ktda93zoHWDmZktC2yNM30ppxRXh1AXD68l6K0HL4hQTNTkUquVDfT0u+vA
         0xyy2oQQVc003wvUN9sDp44KA1gplMzmJAHxETvbVxyVFqoAhjzkygcKoekUJb1q+8Lz
         aZiA==
X-Forwarded-Encrypted: i=1; AJvYcCUQK4UhStGCaLTonEFj44mAqEUtTjNu5zeaBARP3oAyR01Z2X77TP1+Sa7IDCEgYyayqNEqkOtjBpQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvNZfHyYmUGls1W8Sk/JVyd/vo5YRNfPcu1kh53PcwhpZOjiWp
	PUYmslO/3tnstCS+QM6wmaUerHyGguz9E4/8YRtudEe+6hOsZxsgcjXlyVDxQ5E=
X-Google-Smtp-Source: AGHT+IFzjg7iAkfO/wHvo/8jgxSTXCTz6uIYd3Y8CdEE2ov20gdY8rEkaM+a6xTrhhloAQBK/k3nHw==
X-Received: by 2002:a17:907:94c3:b0:a86:96f5:fa81 with SMTP id a640c23a62f3a-a991bd757admr1565945966b.32.1728310609754;
        Mon, 07 Oct 2024 07:16:49 -0700 (PDT)
Message-ID: <765f0d29-8be8-4f53-90df-c9fbeb1eca68@citrix.com>
Date: Mon, 7 Oct 2024 15:16:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/msr: add log messages to MSR state load error paths
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>
References: <20241007140317.67478-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241007140317.67478-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 3:03 pm, Roger Pau Monne wrote:
> Some error paths in the MSR state loading logic don't contain error messages,
> which makes debugging them quite hard without adding extra patches to print the
> information.
>
> Add two new log messages to the MSR state load path that print information
> about the entry that failed to load.
>
> No functional change intended.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
>  xen/arch/x86/hvm/hvm.c | 9 +++++++++

Can we fix the PV side at the same time too?

>  1 file changed, 9 insertions(+)
>
> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> index 69a25571db8d..c71087f636c4 100644
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -1598,10 +1598,19 @@ static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h)
>              rc = guest_wrmsr(v, ctxt->msr[i].index, ctxt->msr[i].val);
>  
>              if ( rc != X86EMUL_OKAY )
> +            {
> +                printk(XENLOG_G_ERR
> +                       "HVM%d.%d load MSR %#x with value %#lx failed: %d\n",
> +                       d->domain_id, vcpuid, ctxt->msr[i].index,
> +                       ctxt->msr[i].val, rc);

Just %pv please.  I don't want to propagate the (occasionally ambiguous)
HVM%d form.

Also, rc may not be great to render.  It's an X86EMUL_*, not an errno.

And saying that, we have a discontinuity between PV and HVM.  PV
translates !OKAY into -EINVAL, whereas HVM translates into -ENXIO.  /sigh

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:28:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:28:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812091.1224801 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoij-00020p-1J; Mon, 07 Oct 2024 14:28:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812091.1224801; Mon, 07 Oct 2024 14:28: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 1sxoii-00020i-Uw; Mon, 07 Oct 2024 14:28:20 +0000
Received: by outflank-mailman (input) for mailman id 812091;
 Mon, 07 Oct 2024 14:28: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=mBo3=RD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sxoih-0001vP-GX
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:28:19 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6504121e-84b8-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:28:17 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a995ec65c35so111246066b.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:28:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99525346b4sm164159166b.124.2024.10.07.07.28.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 07:28:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6504121e-84b8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728311297; x=1728916097; 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=mOFJP3SNRaQwpw2JZooN/AnokeTbtqrd1zcnTTIB/Mk=;
        b=EeI5V2sp0gy9oJlyDukiUgxJKdLPYyT6Yxly3MP1S97VkJhDcxB7uIKaPnpT78gPV4
         ALFv8rzXo+iayXZkzhFG1BC6kB8d1y4VgXVmr13/p9qi42iOtnRn1FxyUiYgza9ytnSc
         /pvmGpZ5P0nr70Gj8vH1yp8i+dQr/6qiuzvOw0Y6uJgkSJCnuk75lqTfmTiohRMLTA74
         /jdUXauuQ9ToHlCBa5vd7rvoqgKqqMsvODSLWcp+i+FbTRRBYG6EBJuhkZeLvIhyIU80
         /RUe8V7twyIqjY6gmuEdk1BSPMnhaHWaULtHTTDoYw9Lt1hHzaiyNHnI6uyRqjkAmcKC
         qFag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728311297; x=1728916097;
        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=mOFJP3SNRaQwpw2JZooN/AnokeTbtqrd1zcnTTIB/Mk=;
        b=D4YfrfqWC1hHtQZ4fdASmk3um86AutIk/YCzE25iq5Zn70Q27Q16P+BDHtofhqvJsO
         x+8thWPm7UIr/kGbieI4PtfuLGV4azjjSGR0T5tC+Jspg9SUM0fxBxI97phsfS+sGXFn
         mfL2h1czKVPvCGUWxdNI4BIBJnKiC9YbUjJi05yA7s15f4SuOHWBQNH0RJcoHKfI41iR
         DL9ahGjr1dgB8j60b/IIr74gBKthjDUzdIJXvLH0k5lU9d2YgQ9+zwalZTGDPxvFEjzg
         k8lg3/ITIWQWJDFwkU8ocrenVLIaSJH6K2PJq8z0v3wsO1cawHVinmIxzQqLzqg/7AOa
         fWYg==
X-Forwarded-Encrypted: i=1; AJvYcCVn7yaYg0UJ3kjontj6N6v8COAKm0fQbrnGsxoO2KUvUELoEJN/26c/OB5/uw8GlK+Sxgn+9Lzjx/U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxTtBaedTiC8k/a8IWtqeyXBHPQKCNBJYjKPFNcm5fCXapbLjPf
	vXmmEFUri7BuvlYewuRlSIcFPH1h+aKpeiRnug3gBz6levEcEFCc/Ywu7ncBB01C2WWix7d2lX4
	=
X-Google-Smtp-Source: AGHT+IFaGu/kOnvA1iw/mPJPo5u6+ziQTk777SZOLyK9maRGbVvItjyWpamVkBo1AnpEoyMPwcV9zA==
X-Received: by 2002:a17:907:36c8:b0:a8d:43c5:9a16 with SMTP id a640c23a62f3a-a991cede585mr1313025966b.6.1728311297166;
        Mon, 07 Oct 2024 07:28:17 -0700 (PDT)
Message-ID: <d6c0cb7a-5a71-4018-abe1-4ed81a1da71b@suse.com>
Date: Mon, 7 Oct 2024 16:28:16 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 2/4] x86/emul: address violations of MISRA C Rule
 16.3
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1728308312.git.federico.serafini@bugseng.com>
 <662440bc082fcb91ad9489999add02fc71416d45.1728308312.git.federico.serafini@bugseng.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: <662440bc082fcb91ad9489999add02fc71416d45.1728308312.git.federico.serafini@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 16:16, Federico Serafini wrote:
> @@ -457,6 +460,8 @@ int x86emul_fpu(struct x86_emulate_state *s,
>              case 7: /* fistp m64i */
>                  goto fpu_memdst64;
>              }
> +            ASSERT_UNREACHABLE();
> +            break;

"return X86EMUL_UNHANDLEABLE" like is also used just a few lines down
from here?

Jan



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:28:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:28:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812092.1224812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoiy-0002YQ-Be; Mon, 07 Oct 2024 14:28:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812092.1224812; Mon, 07 Oct 2024 14:28: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 1sxoiy-0002YB-5T; Mon, 07 Oct 2024 14:28:36 +0000
Received: by outflank-mailman (input) for mailman id 812092;
 Mon, 07 Oct 2024 14:28: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=/gRD=RD=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1sxoXL-0002yM-TY
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:35 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c25ca249-84b6-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 16:16:35 +0200 (CEST)
Received: from truciolo.bugseng.com (unknown [37.162.58.49])
 by support.bugseng.com (Postfix) with ESMTPSA id D37314EE0745;
 Mon,  7 Oct 2024 16:16:33 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c25ca249-84b6-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1728310595; bh=bPGNGs/7gKws9KC4a8OFYQw2+N/QcDxZjIxN7dUNgMw=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=kNh/5lISmIQ1gmhVCXsh3Ez15sbICvQAm7ysmvf676GQzNBIlv2V2aSe2xHDGo4sP
	 wpMcgMFqQnALlSIk2QY9IIUG/O/+o7g8lL1lQjw4EdlaTtR+h1pEWtZFmMlpOiitUe
	 ihO3ihs9V3gfIXk4jPbloTuP45zJ+Nz+bmCPE6keWYqjmGBlQHMzu9jX7WKKj1hw9W
	 7Jxnt4WVAeh0EG3Az1cmMGCqfGi5DGFoD1sygqxPloAbZtZZzTVEE8DaHBCeOzn5WT
	 lNeJNlRFbF8UuGpFzvDqgt3pOWIXySZzTCl9/+3IsSxKovXJMrJabk0nXwUwK2PVZL
	 ivq6qW/m4a2Yg==
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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v2 2/4] x86/emul: address violations of MISRA C Rule 16.3
Date: Mon,  7 Oct 2024 16:16:17 +0200
Message-ID: <662440bc082fcb91ad9489999add02fc71416d45.1728308312.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1728308312.git.federico.serafini@bugseng.com>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add missing break statements to address violations of MISRA C:2012
Rule 16.3 (An unconditional `break' statement shall terminate
every switch-clause).

Make explicit unreachability of a program points with
ASSERT_UNREACHABLE().

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
Changes in v2:
- unreachability made explicit.
---
 xen/arch/x86/x86_emulate/fpu.c         | 5 +++++
 xen/arch/x86/x86_emulate/x86_emulate.c | 1 +
 2 files changed, 6 insertions(+)

diff --git a/xen/arch/x86/x86_emulate/fpu.c b/xen/arch/x86/x86_emulate/fpu.c
index 480d879657..f0dab346e0 100644
--- a/xen/arch/x86/x86_emulate/fpu.c
+++ b/xen/arch/x86/x86_emulate/fpu.c
@@ -218,6 +218,7 @@ int x86emul_fpu(struct x86_emulate_state *s,
              */
             if ( dst->type == OP_MEM && !s->fpu_ctrl && !fpu_check_write() )
                 dst->type = OP_NONE;
+            break;
         }
         break;
 
@@ -296,6 +297,7 @@ int x86emul_fpu(struct x86_emulate_state *s,
             default:
                 generate_exception(X86_EXC_UD);
             }
+            break;
         }
         break;
 
@@ -386,6 +388,7 @@ int x86emul_fpu(struct x86_emulate_state *s,
              */
             if ( dst->type == OP_MEM && !s->fpu_ctrl && !fpu_check_write() )
                 dst->type = OP_NONE;
+            break;
         }
         break;
 
@@ -457,6 +460,8 @@ int x86emul_fpu(struct x86_emulate_state *s,
             case 7: /* fistp m64i */
                 goto fpu_memdst64;
             }
+            ASSERT_UNREACHABLE();
+            break;
         }
         break;
 
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index 6b6b8c8fe4..30674ec301 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -8310,6 +8310,7 @@ x86_emulate(
         }
         if ( rc != 0 )
             goto done;
+        break;
     default:
         break;
     }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:29:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:29:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812105.1224820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxojj-0004OG-Hj; Mon, 07 Oct 2024 14:29:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812105.1224820; Mon, 07 Oct 2024 14:29: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 1sxojj-0004O9-Ej; Mon, 07 Oct 2024 14:29:23 +0000
Received: by outflank-mailman (input) for mailman id 812105;
 Mon, 07 Oct 2024 14:29: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=/gRD=RD=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1sxoXM-0002dC-8D
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:36 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c16f7f91-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:16:33 +0200 (CEST)
Received: from truciolo.bugseng.com (unknown [37.162.58.49])
 by support.bugseng.com (Postfix) with ESMTPSA id ACA1E4EE0743;
 Mon,  7 Oct 2024 16:16:32 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c16f7f91-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1728310593; bh=pkehAqIigHugA14oiN/kSXZIjXGX6ygiIRmSA9aEPl0=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=DNsLZMClLCIOP+iP8GcTHaCg58dgwWfkO4r+WhG5ZXUvUN0XFBIc1ScaaIwfzRhfL
	 /odxlPhj6dvIpEFtVIF20a88aIPFblEWcM9g0rkadhHOmkTB3USqkpTDp7NgUBeY98
	 MTLbB+0j3XluWB88FxHjz3xVp9fqLMQ6qyJPvbUu7PfiJqqityPafRMrZwu69ubTxE
	 lIKwmy0JRR7Zzllp5I0yEmMUAevmpLiiC+TE4zq4Eu2Dx2CAwQheVCtNXeVZxWiLG0
	 152/2bXWyuG0avdiQDhlCSmOm7vhz6e0TVYB7cN0QiwA2KjZmGXLJRqaomAEafzt7V
	 iRuv3ufAY364Q==
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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v2 1/4] x86/emul: add defensive code
Date: Mon,  7 Oct 2024 16:16:16 +0200
Message-ID: <063bd71b535825715bd54ee9238bec2fc87f0bba.1728308312.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1728308312.git.federico.serafini@bugseng.com>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add defensive code after unreachable program points.
This also meets the requirements to deviate violations of MISRA C:2012
Rule 16.3: "An unconditional `break' statement shall terminate every
switch-clause".

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
Changes in v2:
- use goto unhandleable.
---
 xen/arch/x86/x86_emulate/x86_emulate.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index 0ea0d5e67e..6b6b8c8fe4 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -6840,6 +6840,7 @@ x86_emulate(
             break;
         default:
             ASSERT_UNREACHABLE();
+            goto unhandleable;
         }
         break;
 #ifdef HAVE_AS_SSE4_2
@@ -6868,6 +6869,7 @@ x86_emulate(
 # endif
         default:
             ASSERT_UNREACHABLE();
+            goto unhandleable;
         }
         break;
 #endif
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:29:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:29:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812107.1224831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxojy-00056T-Tf; Mon, 07 Oct 2024 14:29:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812107.1224831; Mon, 07 Oct 2024 14:29: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 1sxojy-00055m-Qj; Mon, 07 Oct 2024 14:29:38 +0000
Received: by outflank-mailman (input) for mailman id 812107;
 Mon, 07 Oct 2024 14:29: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=/gRD=RD=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1sxoXO-0002dC-IW
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:16:38 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c2f69c14-84b6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:16:36 +0200 (CEST)
Received: from truciolo.bugseng.com (unknown [37.162.58.49])
 by support.bugseng.com (Postfix) with ESMTPSA id 67D704EE0746;
 Mon,  7 Oct 2024 16:16:35 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2f69c14-84b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1728310596; bh=E7dB2FCofs9MFp7zihxh1wxnARDyNN7WgWI2FwQOK0E=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=xVPGjM9WjmZpi8GG7K9MaKDBHZwteFI3oEC0yibwshSbIA5MxmazJ2nlmAPH8z8XV
	 ydBaf+FQ3AAfT6hfAwEp+ksKFO0j3UVtrKrGnAda5JHB1CZ95YQ3HUS/3Q1OZ2nTxQ
	 H8syHKDPHxjy1fQyO5r4zkGDoCtrIXjXLuLv8lw5Kczd1hIT4IKijqL9g9v9qI11gI
	 +qEtVlpB+dKouWU80A4wXuR4lR6tr4lT2lzuSLkIu6ghEwCTary4FKkxx9+cdLJx3x
	 CXMSp0RmQwR08y0eiH6H9A5HEKEw+OjqeWqpyEo39l4OUfYP5eQLpvAWdO2oIA/i1I
	 0gH2S1Owz3nLA==
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v2 3/4] xen/vpci: address violations of MISRA C Rule 16.3
Date: Mon,  7 Oct 2024 16:16:18 +0200
Message-ID: <a91c0223b827593f5c1a7ca7ece786266e5b8f52.1728308312.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1728308312.git.federico.serafini@bugseng.com>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

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>
---
Changes from v2:
- simply break without returning X86EMUL_UNHANDLEABLE.

As pointed out by Jan, these functions only return X86EMUL_OKAY but:
https://lists.xenproject.org/archives/html/xen-devel/2024-09/msg00727.html

Do you have any comments?
---
 xen/drivers/vpci/msix.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
index fbe710ab92..5bb4444ce2 100644
--- a/xen/drivers/vpci/msix.c
+++ b/xen/drivers/vpci/msix.c
@@ -364,6 +364,7 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
 
     default:
         ASSERT_UNREACHABLE();
+        break;
     }
     spin_unlock(&vpci->lock);
 
@@ -512,6 +513,7 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
 
     default:
         ASSERT_UNREACHABLE();
+        break;
     }
     spin_unlock(&vpci->lock);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:44:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:44:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812137.1224841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxoxu-000452-3v; Mon, 07 Oct 2024 14:44:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812137.1224841; Mon, 07 Oct 2024 14:44: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 1sxoxu-00044v-0B; Mon, 07 Oct 2024 14:44:02 +0000
Received: by outflank-mailman (input) for mailman id 812137;
 Mon, 07 Oct 2024 14:44: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=ITCe=RD=cloud.com=matthew.barnes@srs-se1.protection.inumbo.net>)
 id 1sxoxs-00042A-8N
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:44: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 95b417b6-84ba-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 16:43:58 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so8814283a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 07:43:58 -0700 (PDT)
Received: from mbarnes-x-u.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e0594944sm3253004a12.20.2024.10.07.07.43.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 07:43:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95b417b6-84ba-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728312237; x=1728917037; 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=sNAC+18oEUnhb5mytedDay7gb4s9baqUanV1IJn4ddk=;
        b=Iao3N16ZYhmyXnB4iiJ8cnKls+Ja74LF117aAu4SneL8cbXfsFp+Z4XQ4h8myZ81f3
         eBoURQPlebj/s5R0swcp15mrUwwDBqEdCmiAgAnqtnk/ptstf2bLJbysIqBWJWxb90fu
         BCbLY8182fPXBzqE/QHGep2E08AdM+PevEzck=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728312237; x=1728917037;
        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=sNAC+18oEUnhb5mytedDay7gb4s9baqUanV1IJn4ddk=;
        b=tkLxWVNWG1e1VvdZMUNuqlJw3TAIfsJftJBMVAWa8btXluoLe8Nv4uhKuKAd7FDhwy
         klIJigrzM5G2WeYIY4cororBZgsfxhC6xMeQPy1LuqazVMf+fDS/+93ahR+ZfqC89sBw
         SzChoy374pulXVN863PHhOv8eflcSJFhM5tMQRB+nX4r02tDvvOGdHZkZBb/hoytUWER
         YeZJAEIhDECMmr8QUbzP8fDhziPa+VI2o/7XwIyK3iSFj75LpjZYRRVldNdotfttI3mV
         JXSW+v0TGZaX7+FVmdVZeXv5LPCByB/OEDifnRkONUGf9TkiHyRc/n0EJgoqh0Xg58eJ
         q1tA==
X-Gm-Message-State: AOJu0YzsYwaFOeYSIdY79f7DxB+61FTCVwLl+gUxK1yPM4s4Hz0E+FFK
	9PHhatuU46CZ4Gx8AgJPn5/dtfLu2E+10Vajt90G2qmwqynU0zGj6FqIkVxtMV/SI3YDloxpc34
	R
X-Google-Smtp-Source: AGHT+IHfl/BqmCCe9MxIo313nFBT75bWyhQ42eYn/Vq4XVqWpPa7GUB2WOsV0eiJUkQ4DK1WYnxY+Q==
X-Received: by 2002:a05:6402:354d:b0:5c8:97b9:58a6 with SMTP id 4fb4d7f45d1cf-5c8d2f1d9e1mr12054541a12.1.1728312237360;
        Mon, 07 Oct 2024 07:43:57 -0700 (PDT)
From: Matthew Barnes <matthew.barnes@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Matthew Barnes <matthew.barnes@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>
Subject: [PATCH v2] x86/APIC: Switch flat driver to use phys dst for ext ints
Date: Mon,  7 Oct 2024 15:34:43 +0100
Message-Id: <0db68e62ffc428f553a30397df1e79068d26bb5f.1728311378.git.matthew.barnes@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Bcc: Matthew Barnes <matthew.barnes@cloud.com>
Content-Transfer-Encoding: 8bit

External interrupts via logical delivery mode in xAPIC do not benefit
from targeting multiple CPUs and instead simply bloat up the vector
space.

However the xAPIC flat driver currently uses logical delivery for
external interrupts.

This patch switches the xAPIC flat driver to use physical destination
mode for external interrupts, instead of logical destination mode.

This patch also applies the following non-functional changes:
- Remove now unused logical flat functions
- Expand GENAPIC_FLAT and GENAPIC_PHYS macros, and delete them.

Resolves: https://gitlab.com/xen-project/xen/-/issues/194
Signed-off-by: Matthew Barnes <matthew.barnes@cloud.com>
---
Changes in v2:
- Reword commit message
- Expand and delete GENAPIC_* macros
- Bundle patch series into one patch
---
 xen/arch/x86/genapic/bigsmp.c      |  8 +++++++-
 xen/arch/x86/genapic/default.c     |  8 +++++++-
 xen/arch/x86/genapic/delivery.c    | 10 ----------
 xen/arch/x86/include/asm/genapic.h | 20 +-------------------
 4 files changed, 15 insertions(+), 31 deletions(-)

diff --git a/xen/arch/x86/genapic/bigsmp.c b/xen/arch/x86/genapic/bigsmp.c
index e97e4453a033..b2e721845275 100644
--- a/xen/arch/x86/genapic/bigsmp.c
+++ b/xen/arch/x86/genapic/bigsmp.c
@@ -46,5 +46,11 @@ static int __init cf_check probe_bigsmp(void)
 
 const struct genapic __initconst_cf_clobber apic_bigsmp = {
 	APIC_INIT("bigsmp", probe_bigsmp),
-	GENAPIC_PHYS
+	.int_delivery_mode = dest_Fixed,
+	.int_dest_mode = 0, /* physical delivery */
+	.init_apic_ldr = init_apic_ldr_phys,
+	.vector_allocation_cpumask = vector_allocation_cpumask_phys,
+	.cpu_mask_to_apicid = cpu_mask_to_apicid_phys,
+	.send_IPI_mask = send_IPI_mask_phys,
+	.send_IPI_self = send_IPI_self_legacy
 };
diff --git a/xen/arch/x86/genapic/default.c b/xen/arch/x86/genapic/default.c
index a968836a1878..59c79afdb8fa 100644
--- a/xen/arch/x86/genapic/default.c
+++ b/xen/arch/x86/genapic/default.c
@@ -16,5 +16,11 @@
 /* should be called last. */
 const struct genapic __initconst_cf_clobber apic_default = {
 	APIC_INIT("default", NULL),
-	GENAPIC_FLAT
+	.int_delivery_mode = dest_Fixed,
+	.int_dest_mode = 0, /* physical delivery */
+	.init_apic_ldr = init_apic_ldr_flat,
+	.vector_allocation_cpumask = vector_allocation_cpumask_phys,
+	.cpu_mask_to_apicid = cpu_mask_to_apicid_phys,
+	.send_IPI_mask = send_IPI_mask_flat,
+	.send_IPI_self = send_IPI_self_legacy
 };
diff --git a/xen/arch/x86/genapic/delivery.c b/xen/arch/x86/genapic/delivery.c
index d1f99bf6834a..3def78f380d3 100644
--- a/xen/arch/x86/genapic/delivery.c
+++ b/xen/arch/x86/genapic/delivery.c
@@ -19,16 +19,6 @@ void cf_check init_apic_ldr_flat(void)
 	apic_write(APIC_LDR, val);
 }
 
-const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu)
-{
-	return &cpu_online_map;
-} 
-
-unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask)
-{
-	return cpumask_bits(cpumask)[0]&0xFF;
-}
-
 /*
  * PHYSICAL DELIVERY MODE (unicast to physical APIC IDs).
  */
diff --git a/xen/arch/x86/include/asm/genapic.h b/xen/arch/x86/include/asm/genapic.h
index a694371c6d16..2f46f173c1d4 100644
--- a/xen/arch/x86/include/asm/genapic.h
+++ b/xen/arch/x86/include/asm/genapic.h
@@ -44,29 +44,11 @@ extern const struct genapic apic_bigsmp;
 void cf_check send_IPI_self_legacy(uint8_t vector);
 
 void cf_check init_apic_ldr_flat(void);
-unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask);
+const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
 void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector);
-const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu);
-#define GENAPIC_FLAT \
-	.int_delivery_mode = dest_LowestPrio, \
-	.int_dest_mode = 1 /* logical delivery */, \
-	.init_apic_ldr = init_apic_ldr_flat, \
-	.vector_allocation_cpumask = vector_allocation_cpumask_flat, \
-	.cpu_mask_to_apicid = cpu_mask_to_apicid_flat, \
-	.send_IPI_mask = send_IPI_mask_flat, \
-	.send_IPI_self = send_IPI_self_legacy
 
 void cf_check init_apic_ldr_phys(void);
 unsigned int cf_check cpu_mask_to_apicid_phys(const cpumask_t *cpumask);
 void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector);
-const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
-#define GENAPIC_PHYS \
-	.int_delivery_mode = dest_Fixed, \
-	.int_dest_mode = 0 /* physical delivery */, \
-	.init_apic_ldr = init_apic_ldr_phys, \
-	.vector_allocation_cpumask = vector_allocation_cpumask_phys, \
-	.cpu_mask_to_apicid = cpu_mask_to_apicid_phys, \
-	.send_IPI_mask = send_IPI_mask_phys, \
-	.send_IPI_self = send_IPI_self_legacy
 
 #endif
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:58:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:58:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812146.1224851 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxpBd-0005oz-9I; Mon, 07 Oct 2024 14:58:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812146.1224851; Mon, 07 Oct 2024 14:58: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 1sxpBd-0005os-6W; Mon, 07 Oct 2024 14:58:13 +0000
Received: by outflank-mailman (input) for mailman id 812146;
 Mon, 07 Oct 2024 14:58: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 1sxpBb-0005oi-Hc; Mon, 07 Oct 2024 14:58: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 1sxpBb-0002kJ-EW; Mon, 07 Oct 2024 14:58: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 1sxpBb-0000ZC-3E; Mon, 07 Oct 2024 14:58:11 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxpBb-0004gq-2q; Mon, 07 Oct 2024 14:58: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>
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=eYk8zlFZVW3eUZHBhLHAm/4lxZ0XRkvFnQp5oBoxBy0=; b=CLSZSO6FrWvCdzCOZQ2cuXc0Fj
	U6E78lFYZCkrFwt3fIixBjmivz8g8gzr/6kMTtQ+GWnkaKk+Et6YPgsQDujyiGHkke9B5pYIFJKX8
	tFHKlESH0wANwRGM6Jx77zJ5uf+jtyupd4cvgkRj2XSzdxQzyPSDO51iQegfW2k95mLU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187998-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 187998: 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=29555668b5725b9d5393b72bfe7ff9a3fa606714
X-Osstest-Versions-That:
    xen=6b20755c24ccd69d2482b45dfb9193940cdc346e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 07 Oct 2024 14:58:11 +0000

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

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                  29555668b5725b9d5393b72bfe7ff9a3fa606714
baseline version:
 xen                  6b20755c24ccd69d2482b45dfb9193940cdc346e

Last test of basis   187975  2024-10-05 01:02:06 Z    2 days
Testing same since   187998  2024-10-07 10:04:08 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Federico Serafini <federico.serafini@bugseng.com>
  Jan Beulich <jbeulich@suse.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Roger Pau Monné <roger.pau@citrix.com>
  Stefano Stabellini <sstabellini@kernel.org>

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
   6b20755c24..29555668b5  29555668b5725b9d5393b72bfe7ff9a3fa606714 -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 14:58:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 14:58:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812151.1224861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxpC3-0007MZ-Hw; Mon, 07 Oct 2024 14:58:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812151.1224861; Mon, 07 Oct 2024 14: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 1sxpC3-0007MQ-F9; Mon, 07 Oct 2024 14:58:39 +0000
Received: by outflank-mailman (input) for mailman id 812151;
 Mon, 07 Oct 2024 14: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=2eb/=RD=bounce.vates.tech=bounce-md_30504962.6703f71b.v1-7602c395d26546e39c5f9dc8eef4f58c@srs-se1.protection.inumbo.net>)
 id 1sxpC2-0007G0-3G
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 14:58:38 +0000
Received: from mail136-19.atl41.mandrillapp.com
 (mail136-19.atl41.mandrillapp.com [198.2.136.19])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a1208466-84bc-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 16:58:37 +0200 (CEST)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-19.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4XMj2g0GzszRKLmR5
 for <xen-devel@lists.xenproject.org>; Mon,  7 Oct 2024 14:58:35 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 7602c395d26546e39c5f9dc8eef4f58c; Mon, 07 Oct 2024 14: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: a1208466-84bc-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728313115; x=1728573615;
	bh=Tu49QG85yQ27QrS1s7PP1qXcOb4aQI1T1GQD/voDLUg=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=eP4cjJYWoNDAGLkK0m+/4lZLiRAYoB8p4p8otxAYzDP/BNsR4wl/AA2bWyQsPKKK5
	 pZf6aubu1akV97O+OlW3rcQLG2TsagNYzJVRMhRZxPlaD539XtHnGkQflxi8uWp1RL
	 IY/XkA5DC1YdFzgXURE8bzlDoDPv5WhjJvTCXCFrKX8NvXEzGX8OaeQJkHdv/jwm4a
	 DlnaSamcRCl+n1GhbsQlJUzBlHS0VGqeiHr+89/41cYWmJe5F1Re3jrXUryD2P+RZk
	 aUC7OWjDahlksongj0ndDqf3Z4VP0ob4fEVA/OGWANyGfsv77Gwf82ApoPQDMTXyU1
	 jhUxPqDvTShBw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728313115; x=1728573615; i=anthony.perard@vates.tech;
	bh=Tu49QG85yQ27QrS1s7PP1qXcOb4aQI1T1GQD/voDLUg=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=baaDN7A1l4Uw8Ykr/uoEjZdKXrW5kxwZ959yC1vB04XMRcjpAX+epl286XiFKX7gQ
	 kb6D3FuRQQcmTa30ndTsOKXsC4eVVyKSL70XMd0gNmj2kMc10lkwAbP1a/LNKlEVuM
	 a4t6e2eTQuKs++2F0geIV2+wjT3ReJ2pgIxXygUjasYdoi5aDhyZNBvuro66BHWVOx
	 Nlz6tsZKonB+gx/m0/+gTJy7BsWijDm9CQxXeqIUGo+O0tlmfLO3b9p18uSeoGiTWT
	 LazX/bRW7EJMROk6jbfQdaHDqxEQ62HbO8pILGjur80GeaXLtoUSGzTqv6WzzlW6bM
	 mCaKDAL4NtRcg==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20CI:=20Drop=20bin86/dev86=20from=20archlinux=20container?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728313111091
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, Doug Goldstein <cardoe@cardoe.com>
Message-Id: <ZwP3FiXXCmlyxeHF@l14>
References: <20241007095637.2450599-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241007095637.2450599-1-andrew.cooper3@citrix.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.7602c395d26546e39c5f9dc8eef4f58c?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241007:md
Date: Mon, 07 Oct 2024 14:58:35 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 07, 2024 at 10:56:37AM +0100, Andrew Cooper wrote:
> These packages have moved out of main to AUR, and are not easily accessib=
le
> any more.  Drop them, because they're only needed for RomBIOS which is ve=
ry
> legacy these days.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:08:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:08:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812160.1224871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxpLO-000533-ED; Mon, 07 Oct 2024 15:08:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812160.1224871; Mon, 07 Oct 2024 15:08: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 1sxpLO-00052w-Bd; Mon, 07 Oct 2024 15:08:18 +0000
Received: by outflank-mailman (input) for mailman id 812160;
 Mon, 07 Oct 2024 15: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=4XqV=RD=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sxpLN-00052q-I4
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:08:17 +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 fad3690c-84bd-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 17:08:16 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a99415adecaso306013066b.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:08:16 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993a4ff9f7sm338512166b.26.2024.10.07.08.08.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 08:08:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fad3690c-84bd-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728313696; x=1728918496; darn=lists.xenproject.org;
        h=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=dA0ITAZ4qY/U9ajegJDv0otdEJUQKgUELyNEPoloRWw=;
        b=KyLI+TXYxB+e5/pn/QeK0rQWbx5AbneM54o5ECwi7cDxCpUY2KNpykOz7gn4qJL12Y
         NO/qCPo3Av+7MF27pTuROIx5E0R/xbwYL73Jzc43mjsSVzQh6tEt3pt1SEMwWWONrNPO
         cYFBnUThUX5jVEPqaqbZZ34befhlAqoSvmw/hdyyuSMJ6HLDjohZhgKLBPM66bSMe8Sc
         7ezC5xRV6n7XCfbo5zmyomJTqB9KmNW2XkidMIcFqs9Ftxwte4KGHmmv8vNoeU1RdJxL
         osv6PhJltx4YZZvOP52fVQubW76dRC7IjlxBNSExmHOzH/bDMQJ0vQAoqpCKvL92sQUG
         PBRw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728313696; x=1728918496;
        h=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=dA0ITAZ4qY/U9ajegJDv0otdEJUQKgUELyNEPoloRWw=;
        b=NBhQPrHoyHTjF4OAvGgbEju1MawGGrzG6IXOtQi5g6wY4kFxMXMcwY2w9RbBn9pUOV
         gUfkWsiW5Ejg/uBfah5vA8AMnMmZu/IN7IAygDXRlGGqGCiXP+hHPcjMaZDhdmLozOB+
         dUO1Oz7w+ljVMwFPutGZcAgGFUcq83cQGPRKVwTUkClc+q6K61OiB0RA+nT9DACgTXG5
         zqaR0I3jpJflOZ9XcTvUDaNhcYXNjzAygPNFeAWNE3yfbFEv4AvPyr3H/OUpHjvRjXyr
         YY8d/UAX9sJn8JvBi8iSaKGfZ09RPlN8UGCVFgg2uh1HqxX4+OzRxwyDhMdXFmD4RLHY
         wf4w==
X-Gm-Message-State: AOJu0YyetHIhORhKxW9iThQCeb7UCJCjH2VK2ELHWX7qXtdMzquvpUGh
	ljHRfFUcGbjS1DhYVlh3pp0Kldl2zM2um2b7tXB5P3NFkNA0esiaNZ/LdVVO+QU=
X-Google-Smtp-Source: AGHT+IG3/hOgUyzhVHACqsRMupClv5bYxcfkZDTwYwSG5uRunlXVSBfPK9Guv3UbwGmjf4Qs9MlZ3w==
X-Received: by 2002:a17:906:d54c:b0:a8d:2fdb:b449 with SMTP id a640c23a62f3a-a990a05ef2emr1614084766b.16.1728313695842;
        Mon, 07 Oct 2024 08:08:15 -0700 (PDT)
Message-ID: <d373269c-8d9e-4470-bd5c-d694309ed10b@suse.com>
Date: Mon, 7 Oct 2024 17:08:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/4] stubdom: add fine grained library config items to
 Mini-OS configs
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
References: <20241005151548.29184-1-jgross@suse.com>
 <20241005151548.29184-5-jgross@suse.com> <ZwPs44n9WlyPHo9q@l14>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <ZwPs44n9WlyPHo9q@l14>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------QIHa6DGlaZlhcZqtWBYl04rZ"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------QIHa6DGlaZlhcZqtWBYl04rZ
Content-Type: multipart/mixed; boundary="------------RoWIdNJ8TB5FlPqO6mvO25IY";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
Message-ID: <d373269c-8d9e-4470-bd5c-d694309ed10b@suse.com>
Subject: Re: [PATCH 4/4] stubdom: add fine grained library config items to
 Mini-OS configs
References: <20241005151548.29184-1-jgross@suse.com>
 <20241005151548.29184-5-jgross@suse.com> <ZwPs44n9WlyPHo9q@l14>
In-Reply-To: <ZwPs44n9WlyPHo9q@l14>

--------------RoWIdNJ8TB5FlPqO6mvO25IY
Content-Type: multipart/mixed; boundary="------------bUbp8rNETigncjQJ0IRiFGGf"

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

T24gMDcuMTAuMjQgMTY6MTUsIEFudGhvbnkgUEVSQVJEIHdyb3RlOg0KPiBPbiBTYXQsIE9j
dCAwNSwgMjAyNCBhdCAwNToxNTo0OFBNICswMjAwLCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0K
Pj4gZGlmZiAtLWdpdCBhL3N0dWJkb20vTWFrZWZpbGUgYi9zdHViZG9tL01ha2VmaWxlDQo+
PiBpbmRleCA4YzUwM2MyYmY4Li4zYjUwMWEwNzEwIDEwMDY0NA0KPj4gLS0tIGEvc3R1YmRv
bS9NYWtlZmlsZQ0KPj4gKysrIGIvc3R1YmRvbS9NYWtlZmlsZQ0KPj4gQEAgLTM0MCw2ICsz
NDAsMTQgQEAgZW5kZWYNCj4+ICAgDQo+PiAgICQoZm9yZWFjaCBsaWIsJChTVFVCX0xJQlMp
LCQoZXZhbCAkKGNhbGwgQlVJTERfbGliLCQobGliKSkpKQ0KPj4gICANCj4+ICtkZWZpbmUg
QlVJTERfY29uZmlnDQo+PiArIGNwICQ8ICRADQo+PiArIGZvciBpIGluICQoc29ydCAkKEFQ
UF9MSUJTKSAkKGNhbGwgeGVubGlicy1kZXBlbmRlbmNpZXMsJChBUFBfTElCUykpKTsgZG8g
XA0KPj4gKyAgIHU9YGVjaG8gJCRpIHwgdHIgYS16IEEtWmA7IFwNCj4+ICsgICBlY2hvICJD
T05GSUdfTElCWEVOJCR1PXkiOyBcDQo+PiArIGRvbmUgPj4gJEANCj4+ICtlbmRlZg0KPiAN
Cj4gSSBkb24ndCB0aGluayBJIGxpa2UgaGF2aW5nIGEgcmVjaXBlIGhpZGRlbiBsaWtlIHRo
YXQgaW4gYSB2YXJpYWJsZSwNCj4gbWF5YmUgaWYgaXQgd2FzIGEgZnVsbCBydWxlIGl0IHdv
dWxkIGJlIGEgYml0IGxlc3MgYW5ub3lpbmcgdG8gbWUuIEJ1dA0KPiBob3cgYWJvdXQgc29t
ZXRoaW5nIHNsaWdodGx5IGRpZmZlcmVudDoNCj4gDQo+IEZpcnN0LCB0aGUgbmFtZSwgIkdF
Tl9jb25maWciIHdvdWxkIGJlIGEgYml0IGJldHRlciwgdGhlbiB3ZSBjb3VsZCBoYXZlDQo+
IGl0IG9ubHkgZG8gdGhlIG91dHB1dCBhbmQgbm90IHdyaXRpbmcgYW55IGZpbGU6DQo+IA0K
PiBkZWZpbmUgR0VOX2NvbmZpZw0KPiAgIChjYXQgJyQ8JyAmJiBcDQo+ICAgZm9yIGkgaW4g
JChzb3J0ICQoQVBQX0xJQlMpICQoY2FsbCB4ZW5saWJzLWRlcGVuZGVuY2llcywkKEFQUF9M
SUJTKSkpOyBkbyBcDQo+ICAgICB1PWBlY2hvICQkaSB8IHRyIGEteiBBLVpgOyBcDQo+ICAg
ICBlY2hvICJDT05GSUdfTElCWEVOJCR1PXkiOyBcDQo+ICAgZG9uZSkNCj4gZW5kZWYNCj4g
DQo+IFRoZSB0aGlzIGNhbiBiZSB1c2VkIGluIHJ1bGVzIGFzOg0KPiAgICAgICQoR0VOX2Nv
bmZpZykgPiAkQA0KPiANCj4gV291bGQgdGhhdCBiZSBvaz8NCg0KQWJzb2x1dGVseSBmaW5l
IHdpdGggbWUuDQoNCj4gKEl0IG1pZ2h0IGJlIGJldHRlciB0byBoYXZlIHRoZSBtYWNybyBu
b3QgZGVwZW5kcyBvbiB0aGUgZW52aXJvbm1lbnQNCj4gaGF2ZSB0YWtlIHBhcmFtZXRlciBl
eHBsaWNpdGx5IHdoaWNoIGNvdWxkIGJlIHVzZWQgYXMgJChjYWxsDQo+IEdFTl9jb25maWcs
JDwsZXZ0Y2huIGdudHRhYikgPiAkQCBvciB0YWtlIGEgdmFyaWFibGUgaWYgaXQncyB1c2Vm
dWwNCj4gZWxzZXdoZXJlLCBidXQgSSdtIGFscmVhZHkgZmluZSBpZiAkQCBpcyB0YWtlbiBv
dXQgb2YgdGhlIG1hY3JvLikNCj4gDQo+PiArDQo+PiAgIHhlbnN0b3JlL3N0YW1wOiAkKFhF
Tl9ST09UKS90b29scy94ZW5zdG9yZWQvTWFrZWZpbGUuY29tbW9uDQo+PiAgIAkkKGRvX2xp
bmtzKQ0KPj4gICANCj4+IEBAIC0zNzMsOCArMzgxLDEyIEBAICQoVEFSR0VUU19NSU5JT1Mp
OiBtaW5pLW9zLSU6DQo+PiAgICMgaW9lbXUNCj4+ICAgIyMjIyMjIw0KPj4gICANCj4+IC1p
b2VtdS1taW5pb3MtY29uZmlnLm1rOiAkKENVUkRJUikvaW9lbXUtbWluaW9zLmNmZw0KPj4g
LQlNSU5JT1NfQ09ORklHPSIkPCIgQ09ORklHX0ZJTEU9IiQoQ1VSRElSKS8kQCIgJChNQUtF
KSBERVNURElSPSAtQyAkKE1JTklfT1MpIGNvbmZpZw0KPj4gK2lvZW11LW1pbmlvcy5vdXQu
Y2ZnOiBBUFBfTElCUyA9IGV2dGNobiBnbnR0YWIgY3RybCBndWVzdA0KPj4gK2lvZW11LW1p
bmlvcy5vdXQuY2ZnOiAkKENVUkRJUikvaW9lbXUtbWluaW9zLmNmZyBNYWtlZmlsZQ0KPiAN
Cj4gQ291bGQgeW91IGNoYW5nZSB0aGUgc3VmZml4IHRvICIuZ2VuLmNmZyI/ICIub3V0LmNm
ZyIgaXMgYSBiaXQgZ2VuZXJpYw0KPiB3aGlsZSAiZ2VuZXJhdGVkIiBpcyBtb3JlIGNvbW1v
biBmb3IgdGhlIGtpbmQgb2YgZmlsZSB0aGF0IGFyZQ0KPiBhdXRvbWF0aWNhbGx5IGdlbmVy
YXRlZCBieSB0aGUgYnVpbGQgc3lzdGVtIGZvciBpdCdzIG93biB1c2UuDQoNCk9rYXkuDQoN
Cj4gDQo+IEJUVywgaW4gdGhlIGZpcnN0IHByZXJlcXVpc2l0ZSwgJChDVVJESVIpIGlzbid0
IG5lY2Vzc2FyeSBhbnltb3JlLCBpdA0KPiB3YXMgb25seSB0byBiZSB1c2VkIGluICJNSU5J
T1NfQ09ORklHIiBqdXN0IGJlbG93Lg0KDQpBaCwgcmlnaHQuIFdpbGwgcmVtb3ZlIGl0Lg0K
DQoNCkp1ZXJnZW4NCg==
--------------bUbp8rNETigncjQJ0IRiFGGf
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------bUbp8rNETigncjQJ0IRiFGGf--

--------------RoWIdNJ8TB5FlPqO6mvO25IY--

--------------QIHa6DGlaZlhcZqtWBYl04rZ
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/Ey8FAmcD+V8FAwAAAAAACgkQsN6d1ii/Ey++
LwgAh4Hv9ExnVdgbzABDPjqdS9osTjDV+OkgECqa4eBfkZCDqesuRaYcyUt89q3hvjY3Rq91RCTh
uS+CQADN7VcssJ177Gu+GcVnTR514SBds1HuU2J/pLiqcvylvvWO986bPXz6r7sH4JYn/lhbxFLd
kaQAX6SLzorJjKQxMtkGZnnBUJyI0JaenuSQ3xVQ/BQ3RQGXrgwDME1S922wQmlQQSBUTBEPbVt3
zU8LQNVBN1hY9tMvb+BT8xzcIrSX1uHoScmlev7/XjlULRPw2qG6/g1w9jXMkhr2pI5dbe1Jn1WV
otJOLDPhY7NrIGCvAH/JhByKlgO7m+NAh4Y1iak2hQ==
=s64H
-----END PGP SIGNATURE-----

--------------QIHa6DGlaZlhcZqtWBYl04rZ--


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:23:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:23:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812170.1224882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxpZy-0007ta-Pc; Mon, 07 Oct 2024 15:23:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812170.1224882; Mon, 07 Oct 2024 15:23: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 1sxpZy-0007tC-LE; Mon, 07 Oct 2024 15:23:22 +0000
Received: by outflank-mailman (input) for mailman id 812170;
 Mon, 07 Oct 2024 15:23: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=JJzu=RD=aepfle.de=olaf@srs-se1.protection.inumbo.net>)
 id 1sxpZx-0007l2-2o
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:23:21 +0000
Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de
 [81.169.146.219]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 13d532c9-84c0-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 17:23:18 +0200 (CEST)
Received: from sender by smtp.strato.de (RZmta 51.2.8 AUTH)
 with ESMTPSA id D2e8f2097FN6uqC
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))
 (Client did not present a certificate);
 Mon, 7 Oct 2024 17:23:06 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13d532c9-84c0-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728314586; cv=none;
    d=strato.com; s=strato-dkim-0002;
    b=M02XMiykRRo7bGwbbi6boN4cikEwYjx765x9X//8zAPm/h/+W7MP/thEie6L0CKB3l
    /9NJvHrhoHUAo4+jO00xyfJr3/06eosoWVoM6OXHV+uEU4vj0emAHqt/J2SkaZsptmYn
    23mD/mQfhmuE7/RqSW8FqnKovw+HGFOKlO8YUChA4FzsdlfXcgv3i4+TBy+21UHk5Zjz
    XgwncErIoyFvf2GxPD0hkZuh9OIs0p4LRCQTDja3rHHmI1i7L448rUZAU03PeyHkdPhQ
    4KvJUDv2lv6hVxYXnNgrIoJLTQFCHQB8QOF50sqnypxYClnSvb+W24fM8Cjm6NurtBFq
    gSjg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1728314586;
    s=strato-dkim-0002; d=strato.com;
    h=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;
    bh=ZLyyPyY21XH/g5GFUA65N9ZAMMYv+X479puQnKzqNyI=;
    b=toYD0Qi5HfCahP/N4HQW87XGlg1VN+Ej9wIzrm9LNhbzqx14OFd0FzudaVpmeelfUh
    x3eFLk5ghFpPgYzc/3ZmaeAW3HEpG2kFDDt/402BoIiHDtg2zEJhxojwhH+DQMeDXnGI
    iT7TeZD9hs3kV60UiBSg2lVVfQU/J4iw38U3fFnb/+86o4HKLTDr/3SlS9nsQcZ9c+5c
    ZthCeiKBDTVYmmz387vSlATKo87Y+sgBZiBqILyvivt1Y4y7yM6YR3rsEF/FBBZRQJR2
    DrqQlGhh2z5oaImIA/aCu+6ncZmFXV/Xn/9XYaXOabU9x8Cmgm+I7QV/lBbZKb9K4FNb
    ZIlA==
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=1728314586;
    s=strato-dkim-0002; d=aepfle.de;
    h=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;
    bh=ZLyyPyY21XH/g5GFUA65N9ZAMMYv+X479puQnKzqNyI=;
    b=MfIyMuOBHMFZVEpjVLajPbktriRjeQ4x5QdTKND3FsOuzGvaQWpLA52sBwFaTR38LG
    AOYkiIeczIfWB747Sa5WFk6vdEKv//ARVBmlgjnzYABdfJpIvAxsVPNIta6EWjtq305F
    IH6jsWLOdVVh9r5bWgFsQIcotEhKzv10l9dj05ZhifKZPC1WRxjSAguR7WXuloSjkp4n
    D1VyItWrk8bZ+vxjg7cjmhkCSPQJzP8oXO8j+nTTBhZDrN37xC3yV3xEUW9MR9bXSw52
    e8NNIBE3PshKHDg3TxinpCeehrPCc6zkCS8URcxpbqvW41t3TMG9yAMO/JE538M9r3kY
    rfuw==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1728314586;
    s=strato-dkim-0003; d=aepfle.de;
    h=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;
    bh=ZLyyPyY21XH/g5GFUA65N9ZAMMYv+X479puQnKzqNyI=;
    b=FFqZgk5Pe4wEW5uo8855Mh9oSq46hJN0JIkltRfvmYsco6Ew3n7bbmzBwbqJzAiR4w
    tiz7a24tSAwpd+VntaDw==
X-RZG-AUTH: ":P2EQZWCpfu+qG7CngxMFH1J+3q8wa/QXkBR9MXjAuzpIG0mv9coXAg4x9Fz7RcwtehfOImJwE3/YIR5VTNLPLdtEAAwSMQ=="
From: Olaf Hering <olaf@aepfle.de>
To: xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1] automation: use PYTHON for qemu-deps-check.py
Date: Mon,  7 Oct 2024 17:22:45 +0200
Message-ID: <20241007152259.1353-1-olaf@aepfle.de>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="us-ascii"

This enables use of something else than the system 'python3' binary.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
 automation/scripts/build | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/automation/scripts/build b/automation/scripts/build
index 34416297a4..5d806c235a 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -93,7 +93,7 @@ else
 
     # Qemu requires Python 3.8 or later, and ninja
     # and Clang 10 or later
-    if ! type python3 || ! python3 automation/scripts/qemu-deps-check.py \
+    if ! type "${PYTHON:-python3}" || ! "${PYTHON:-python3}" automation/scripts/qemu-deps-check.py \
             || [[ "$cc_is_clang" == y && "$cc_ver" -lt 0x0a0000 ]] \
             || ! type ninja; then
         cfgargs+=("--with-system-qemu=/bin/false")


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:25:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:25:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812174.1224890 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxpc9-0000O2-3p; Mon, 07 Oct 2024 15:25:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812174.1224890; Mon, 07 Oct 2024 15:25: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 1sxpc9-0000Nv-1E; Mon, 07 Oct 2024 15:25:37 +0000
Received: by outflank-mailman (input) for mailman id 812174;
 Mon, 07 Oct 2024 15:25: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=JJzu=RD=aepfle.de=olaf@srs-se1.protection.inumbo.net>)
 id 1sxpc7-0000Np-VS
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:25:35 +0000
Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de
 [85.215.255.20]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 653d9468-84c0-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 17:25:34 +0200 (CEST)
Received: from sender by smtp.strato.de (RZmta 51.2.8 AUTH)
 with ESMTPSA id D2e8f2097FPNuqs
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))
 (Client did not present a certificate);
 Mon, 7 Oct 2024 17:25:23 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 653d9468-84c0-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728314723; cv=none;
    d=strato.com; s=strato-dkim-0002;
    b=Q9ojUWQuxhJOLieoG6J9uCcY5POJ6/6N6W6YqGe5YX6kjuQnXtxVO2YoyuXFf2OUTN
    I45DjvA1vaDdzdQ6DChCioz+fH+NA7BijAw1mAUq3UP/VjbkUq2+T/9VKFkFOOnzeou4
    FldZDv0wjwe8VpyuAk0p/cHysSV2KfxmHcDGmEHl8gmuV8/nhQ9l2OezMPfvTNYZ8U18
    3JxFXWMTgxZ6UvpQSmCk9e/hv6Mqt7FJLmVsiubMQMP0atMA1x15cEcZcOP07HsqeBlh
    ihhwI72+VJLWPFV5E91QN5kDRKGCjFkR7nl5qILrzitTrXKyng/zpQowqegxZO3vdEk3
    ZCIw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1728314723;
    s=strato-dkim-0002; d=strato.com;
    h=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;
    bh=FeyqiNHX8OGIR4enV6XOW6e4DYpDZvrYhLsY8C6tuoA=;
    b=C+jgREji1jcL8dMlYczMucByYGz6/cGdDpBXWEOQwGiD5LrjsUjQ8HFczEHyN3vwRm
    7GX6nuyVnrmg9459p4u9ZXiIVLSJkNGX7QAK+jks+it+5oPa1LzoZViczUrEib15EIud
    RoKEzCnK1JW0/2xnKQe8hsjAuzUCn1GLgNEITP+gU/4nqvpB6/DD+DOBcpd89J7seT7l
    mm7m7QdiobPXNn/FETR/cooBfJLBpClP+ldfOwqdClTFIogIL/85nKKIz/1WvraBepML
    nCfZwH8BNbIhPO68XIjdvwxfuVv249zYN/YkAJb/CxoFbpSPtEN+JOnSNrCK7SbuCHmt
    yfzQ==
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=1728314723;
    s=strato-dkim-0002; d=aepfle.de;
    h=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;
    bh=FeyqiNHX8OGIR4enV6XOW6e4DYpDZvrYhLsY8C6tuoA=;
    b=kDGFDPQ4Puda6+XX0ZgtwrYXskg9KlRwcMx0hGIGWwKZb7ir6MyqWXN3sbw10D57ht
    /SnNvS+ywIfS90U6mJGXldDn3m+l/mll0c3XQxARizOBWPiR1UFNbzsMvOfRuDgKLoIb
    EYJguqUWKqpdLiltMSSERje0aXr6y33umqy+P0KUzI49rHyTsIrGebnGdDdRbXO7oMJJ
    pbffACQ13Nep5appQS3nloSk4TXh68Co5rwdYTED4EbZr0Mv93VwwB4YbVb4P19xpPIm
    C3JKb0xaVMHrD9InO5ecE+jMJDaIFdX8chLCluMwDerFVBx0Vh+dUjV1ZGWhlFEMGM0W
    IcBQ==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1728314723;
    s=strato-dkim-0003; d=aepfle.de;
    h=Message-ID:Date:Subject:Cc:To:From:Cc:Date:From:Subject:Sender;
    bh=FeyqiNHX8OGIR4enV6XOW6e4DYpDZvrYhLsY8C6tuoA=;
    b=gXU63sYL6l8cUDUKEQ1x62q7Xeus+gHbkWlb7MmDkNjtBvvsBxPnSig9Zl8FCw3Vm/
    zxO/cXDinLNzABvkVcAw==
X-RZG-AUTH: ":P2EQZWCpfu+qG7CngxMFH1J+3q8wa/QXkBR9MXjAuzpIG0mv9coXAg4x9Fz7RcwtehfOImJwE3/YIR5VTNLPLdtEAAwSMQ=="
From: Olaf Hering <olaf@aepfle.de>
To: xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1] automation: use python-3.11 in Leap container
Date: Mon,  7 Oct 2024 17:25:09 +0200
Message-ID: <20241007152518.1416-1-olaf@aepfle.de>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="us-ascii"

python311 is available since Leap 15.4 as additional Python variant.

Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
 automation/build/opensuse/leap-15.6-x86_64.dockerfile | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/automation/build/opensuse/leap-15.6-x86_64.dockerfile b/automation/build/opensuse/leap-15.6-x86_64.dockerfile
index ea70dffe2a..97890dfc00 100644
--- a/automation/build/opensuse/leap-15.6-x86_64.dockerfile
+++ b/automation/build/opensuse/leap-15.6-x86_64.dockerfile
@@ -3,6 +3,7 @@ FROM --platform=linux/amd64 opensuse/leap:15.6
 LABEL maintainer.name="The Xen Project"
 LABEL maintainer.email="xen-devel@lists.xenproject.org"
 
+ENV PYTHON=python3.11
 ENV XEN_TARGET_ARCH=x86_64
 
 RUN <<EOF
@@ -25,7 +26,7 @@ RUN <<EOF
         gawk
         gcc
         make
-        python3
+        python311
 
         # Tools (general)
         git-core
@@ -53,8 +54,8 @@ RUN <<EOF
         # xentop
         'pkgconfig(ncurses)'
         # Python bindings
-        python3-devel
-        python3-setuptools
+        python311-devel
+        python311-setuptools
         # Ocaml bindings/oxenstored
         ocaml
         ocaml-findlib
@@ -68,7 +69,7 @@ RUN <<EOF
         ninja
         'pkgconfig(glib-2.0)'
         'pkgconfig(pixman-1)'
-        python3-packaging
+        python311-packaging
     )
 
     zypper install -y --no-recommends "${DEPS[@]}"


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:32:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:32:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812182.1224900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxpiw-00074H-Ob; Mon, 07 Oct 2024 15:32:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812182.1224900; Mon, 07 Oct 2024 15:32: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 1sxpiw-00074A-M0; Mon, 07 Oct 2024 15:32:38 +0000
Received: by outflank-mailman (input) for mailman id 812182;
 Mon, 07 Oct 2024 15:32: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=68k9=RD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sxpiu-000744-Ul
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:32:36 +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 600e9e3f-84c1-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 17:32:34 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a995f56ea2dso101493266b.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:32:34 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994a4294c8sm242165366b.123.2024.10.07.08.32.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 08:32:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 600e9e3f-84c1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728315154; x=1728919954; 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=IsY03DrtwlUf80OkHLUrMMkRYTBMf+KRgT4dXu+TUlM=;
        b=gcqwMPOttFBPGbVOFOXqkEqV8P3yGK4sdjG7CQBXqw/BQ9v+LltzzWEp8HqLJkpUPp
         saEH9Jg5X8QwQK1z7m/HxNMnx0EEss63TIetRWjfo50Z/5bG/DgtRPEMM4+JognQZZm6
         9VbkL8+NkGF9CrjLQ8BxYiUcBHSC+WdjmT+6g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728315154; x=1728919954;
        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=IsY03DrtwlUf80OkHLUrMMkRYTBMf+KRgT4dXu+TUlM=;
        b=hQsYWJlvulD3uwts2YFsiJgDBiDe9sN3v0SL2J2wIl+sil+KrmW7OqyqLLHNLfLrFY
         ALsKQjlIdYWYOAHNfvMwR/3VC9qCUbKTtRVnKLH2dLVh5sLbK0bKmQywDvkFQwu+OVwc
         ut/GGNk1sbazI72I0CyHwh+8JcMsxgnpcI3Nzf44sTlE0lpoLNz+qttrK2VKO2pkHl00
         x+fjTV2WuTBea+zDe/TThkMHbelP+9CwgWmN2moo46gOa9jmsx7wUFLHgMOjoGw5hAQy
         ebC3d9YODBYZCoJQYcX31DvPD0QTsWa3SeZnH5ga1VOxTsMg2ywXueoxYceRkD4qNH8B
         BIzA==
X-Gm-Message-State: AOJu0Yz4fsr/zDHqsU9xbzRD0R61oYvzmaIVWHCIafDMHLToZkuAm/mX
	vmL7erAI3A7sMABQaIQr5YyyUhtRoVnJgt8UoDggxt2Z6L77RrMyQ/xdJr17SHLhntpc+RzKNxc
	L
X-Google-Smtp-Source: AGHT+IHFRTIPBkLTovc6sBk1orfXkprlAg9pu5OAg6W1fCodnxsoHqb5aVP6HlJN6NtRL0iH8pmdvQ==
X-Received: by 2002:a17:907:7ba7:b0:a86:7e7f:69ab with SMTP id a640c23a62f3a-a991bd477e4mr1369664966b.15.1728315154199;
        Mon, 07 Oct 2024 08:32:34 -0700 (PDT)
Date: Mon, 7 Oct 2024 17:32:33 +0200
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>
Subject: Re: [PATCH] x86/msr: add log messages to MSR state load error paths
Message-ID: <ZwP_EZttiZ78DKPT@macbook.local>
References: <20241007140317.67478-1-roger.pau@citrix.com>
 <765f0d29-8be8-4f53-90df-c9fbeb1eca68@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <765f0d29-8be8-4f53-90df-c9fbeb1eca68@citrix.com>

On Mon, Oct 07, 2024 at 03:16:47PM +0100, Andrew Cooper wrote:
> On 07/10/2024 3:03 pm, Roger Pau Monne wrote:
> > Some error paths in the MSR state loading logic don't contain error messages,
> > which makes debugging them quite hard without adding extra patches to print the
> > information.
> >
> > Add two new log messages to the MSR state load path that print information
> > about the entry that failed to load.
> >
> > No functional change intended.
> >
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >  xen/arch/x86/hvm/hvm.c | 9 +++++++++
> 
> Can we fix the PV side at the same time too?

Sure, I think that would be XEN_DOMCTL_set_vcpu_msrs?

I've noticed that such hypercall doesn't return an error if the MSR is
not handled by Xen (there's no default case returning an error in the
switch that processes the entries to load).

> >  1 file changed, 9 insertions(+)
> >
> > diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> > index 69a25571db8d..c71087f636c4 100644
> > --- a/xen/arch/x86/hvm/hvm.c
> > +++ b/xen/arch/x86/hvm/hvm.c
> > @@ -1598,10 +1598,19 @@ static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h)
> >              rc = guest_wrmsr(v, ctxt->msr[i].index, ctxt->msr[i].val);
> >  
> >              if ( rc != X86EMUL_OKAY )
> > +            {
> > +                printk(XENLOG_G_ERR
> > +                       "HVM%d.%d load MSR %#x with value %#lx failed: %d\n",
> > +                       d->domain_id, vcpuid, ctxt->msr[i].index,
> > +                       ctxt->msr[i].val, rc);
> 
> Just %pv please.  I don't want to propagate the (occasionally ambiguous)
> HVM%d form.

I also wanted to use %pv here, but it will get out of sync
(style-wise) with the rest of messages of the HVM context loading
logic?  IOW: my preference would be to switch all in one go.

> Also, rc may not be great to render.  It's an X86EMUL_*, not an errno.

Yeah, I know, but at the end it's a message for someone that knows how
to debug the code, so if the error code it's X86EMUL_ based it's at
least bet than not printing it.

> And saying that, we have a discontinuity between PV and HVM.  PV
> translates !OKAY into -EINVAL, whereas HVM translates into -ENXIO.  /sigh

Hm, great, one thing at a time.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:35:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:35:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812187.1224910 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxplX-0007dC-4r; Mon, 07 Oct 2024 15:35:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812187.1224910; Mon, 07 Oct 2024 15:35: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 1sxplX-0007d5-1u; Mon, 07 Oct 2024 15:35:19 +0000
Received: by outflank-mailman (input) for mailman id 812187;
 Mon, 07 Oct 2024 15:35: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=arWC=RD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sxplW-0007cx-M3
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:35:18 +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 c01ba9e8-84c1-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 17:35:17 +0200 (CEST)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-539908f238fso5081467e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:35:15 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05a9358sm3278526a12.27.2024.10.07.08.35.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 08:35:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c01ba9e8-84c1-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728315315; x=1728920115; 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=pSWpmC3UN2VjifQaNpwOV/JbgIK1VDU69pLYkH7ldOQ=;
        b=lP5j9ALTXvhDZGZYLx9A8uJVIn1c6CZ6RoA+TvylrGkEoFqD9lgqO1nvM2XF+contz
         7Ipd92y/1O5nNIxq8HKegc5pmPwhYO/VqwprbMB/AkszRRt0ikwMwBzmsbBEPbiFDHxb
         HyEOGF903RmvfkXa2dWVXnBhEg7GkvhJJc6TA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728315315; x=1728920115;
        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=pSWpmC3UN2VjifQaNpwOV/JbgIK1VDU69pLYkH7ldOQ=;
        b=Mm6VoLRQ2YhjcY6vBQB0RH3sJbkrKbQ7oLcBqoq6q3eYxpBbOsq16MGMUlvQBKgR1l
         LNIz4xoeOJ8IM5mHi+qpX3zo6B04DlP52PyaxCimHlVroKewRrrp0FoiiPfSTTJqKeUR
         GWwadU8T7dViI98qTw2IBve8oUsNmlZfginB5hozW9IQ/J3DD51WzBI43dWJENNz2w6B
         B2uZ/pQ0Yo5lUDmj1o802wf2/mwbLuwVBl5/3ysJRMoQMzyRU00Vvbn2e73tndDvZvgD
         y+MHkEEOt3qS2DcY/5JsTdqQ7wsmn2aD9fIXbfvGjiyF4NT1Gm1nd/u7KUs3gZWotepB
         kJbg==
X-Forwarded-Encrypted: i=1; AJvYcCVXkkWW+AG6gIKvXkRhhTlC3hPJMR1aw2e/GyG7KOht3MlYZHBYs2CBuAVbxWB98HD5yTIJ7beNOvM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxGSwOGBiwLCMe2iecgep6wuLjs6upqsGj/a5fk1iEnf+JnJ1f2
	EXSmEiMcaRmvECbbYaPW4ERyQ1rOy+mHp70Rz3J9QWm6aAGZCouSXaO0zxh3XMw=
X-Google-Smtp-Source: AGHT+IHfurIJgjKf5jvWOgwxsDNMCbrm5hO5TM701GlQH2KoxDrTjf7YC1VtMTQx22K2dW5fsJskEQ==
X-Received: by 2002:a05:6512:402a:b0:539:94d5:244b with SMTP id 2adb3069b0e04-539ab9eadd4mr5921381e87.45.1728315315278;
        Mon, 07 Oct 2024 08:35:15 -0700 (PDT)
Message-ID: <e7f552d7-f9c3-4f22-8a18-68294324a676@citrix.com>
Date: Mon, 7 Oct 2024 16:35:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] automation: use PYTHON for qemu-deps-check.py
To: Olaf Hering <olaf@aepfle.de>, xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241007152259.1353-1-olaf@aepfle.de>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241007152259.1353-1-olaf@aepfle.de>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 4:22 pm, Olaf Hering wrote:
> This enables use of something else than the system 'python3' binary.
>
> Signed-off-by: Olaf Hering <olaf@aepfle.de>
> ---
>  automation/scripts/build | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/automation/scripts/build b/automation/scripts/build
> index 34416297a4..5d806c235a 100755
> --- a/automation/scripts/build
> +++ b/automation/scripts/build
> @@ -93,7 +93,7 @@ else
>  
>      # Qemu requires Python 3.8 or later, and ninja
>      # and Clang 10 or later
> -    if ! type python3 || ! python3 automation/scripts/qemu-deps-check.py \
> +    if ! type "${PYTHON:-python3}" || ! "${PYTHON:-python3}" automation/scripts/qemu-deps-check.py \
>              || [[ "$cc_is_clang" == y && "$cc_ver" -lt 0x0a0000 ]] \
>              || ! type ninja; then
>          cfgargs+=("--with-system-qemu=/bin/false")
>

Thanks, but I'm just about to delete this whole construct in order to
avoid wasting so much CI time doing redundant builds of QEMU.

I expect the end result to with your adjustment to the Leap container,
with no change necessary here.

While I think it's useful to have Leap able to do builds of QEMU given
how easy it is to fix, I'll be removing it by default from Gitlab runs. 
We spend more than ~50% of wallclock time building QEMU, when 99% of
changes aren't even liable to change the interaction with QEMU.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:42:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:42:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812195.1224921 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxprv-0005vn-QN; Mon, 07 Oct 2024 15:41:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812195.1224921; Mon, 07 Oct 2024 15:41: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 1sxprv-0005vg-NV; Mon, 07 Oct 2024 15:41:55 +0000
Received: by outflank-mailman (input) for mailman id 812195;
 Mon, 07 Oct 2024 15:41: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=JJzu=RD=aepfle.de=olaf@srs-se1.protection.inumbo.net>)
 id 1sxpru-0005va-CE
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:41:54 +0000
Received: from mo4-p01-ob.smtp.rzone.de (mo4-p01-ob.smtp.rzone.de
 [85.215.255.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ac50c98f-84c2-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 17:41:52 +0200 (CEST)
Received: from sender by smtp.strato.de (RZmta 51.2.8 AUTH)
 with ESMTPSA id D2e8f2097FffutE
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))
 (Client did not present a certificate);
 Mon, 7 Oct 2024 17:41:41 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ac50c98f-84c2-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728315701; cv=none;
    d=strato.com; s=strato-dkim-0002;
    b=ctoCGH8ds0I4kTFd+1VAIM/YOqzI8i6XfYKWtKqA9Tz4R75G/d6ozrPzh9G95FfmtC
    oc/zPKjmNJRGS2WKAya2k1cz6UiLBSNyvhJMJDLmbpMXhm+HdrGllEcu9s5NFdo3tX6g
    6uGzeZ7rcHR0H8O24UEtEPQDYa7HOlcyUgU2SNUgeUa+iUVubcq5eBYn6Wygo4mwlMH+
    iAXp5+KPBnslXrLpWT3kxePzRG4Lo7fhYFpdwxpdl0UlUlJJPoC5ggqq55yseGn74SNp
    opIGGcfUauzMK3QCId4TqFPV+3w7ZbX+N6B0ARj/aQHMDR8TGGcxXgymoMeKb563m2WR
    BGxw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1728315701;
    s=strato-dkim-0002; d=strato.com;
    h=References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date:Cc:Date:
    From:Subject:Sender;
    bh=v6LLQ+SsIt0thm9uOSeifd1Epsg5iTo6AT+D/8PnPTQ=;
    b=E8J+1KUPA4Fo/6lR7uGx7I2pMl7yYvbNxtJNGoF/vnkP0bRSJTcVhCH0Wbv9mq017Y
    vFmdsecJWyLGm1JYMqAOYdKVgyVdZzvgy9FxRLLP9qtHuv5KTo2gYg0dgQIBO2OpAikV
    auC/3ZlWyRCuAcMUa9Vr9E6fim5MSmzNd8QSqn0+bPjmp5nPqC3cPBh5despAt9El+iC
    m0BiLDa22vWQpIghJ6d+BNuPZcqyjhC5953nwklcKQBzLHGUDQmD1fe+4PvFeu5u/gFv
    2J7VAWliHbAk3wU/Tr/KgrKfttauJNTVKCnqlYjUPUb2J9/p7xjQyboNBQWqiua3EMEG
    AXLQ==
ARC-Authentication-Results: i=1; strato.com;
    arc=none;
    dkim=none
X-RZG-CLASS-ID: mo01
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1728315701;
    s=strato-dkim-0002; d=aepfle.de;
    h=References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date:Cc:Date:
    From:Subject:Sender;
    bh=v6LLQ+SsIt0thm9uOSeifd1Epsg5iTo6AT+D/8PnPTQ=;
    b=Swl1oDQb10p79tTGcshp/z/xXo4q3bAUvGuYBFUrs782WpAsSsf2vdaErzUEky+YMf
    tSQ34xZTdf0EFYG/WYSeARiYEC5UMsUzTRdkyh1DfT5mt+1GklhkQMx5BYm/JBU160L8
    s3R3tNO/+nY90rm5FI18W7ylCq+ssNqyNII6ASBf85JWVlNvqKgovzS5QgxoEOwabUNN
    U3NfwKGWuP0yhkTbIOLiFsybank4VjlAWrp4KVqoKp+lUXZVx/FE8ZEhydKzYPf4x4yG
    iiV5F3Nwf6x4w4ESQBoAndL1PlCnETEKUZS1AI5QozpcQiI9/XslpSJWcFFRv3JQR2t+
    BGCw==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1728315701;
    s=strato-dkim-0003; d=aepfle.de;
    h=References:In-Reply-To:Message-ID:Subject:Cc:To:From:Date:Cc:Date:
    From:Subject:Sender;
    bh=v6LLQ+SsIt0thm9uOSeifd1Epsg5iTo6AT+D/8PnPTQ=;
    b=BV/Vg7DThKf2u2bKZcmjAneJpXZr1FXfWJeNMq7GRkpzPa4ta6+QTlS8XdZgk5vDJH
    MtHn2toc2IvzyxZ1fYDg==
X-RZG-AUTH: ":P2EQZWCpfu+qG7CngxMFH1J+3q8wa/QLpd5ylWvMDX3y/OuD5rXVisR4WhSIPErsYj46j6YNLTj1Qc8innI3ISQYqcHUew=="
Date: Mon, 7 Oct 2024 17:41:32 +0200
From: Olaf Hering <olaf@aepfle.de>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v1] automation: use PYTHON for qemu-deps-check.py
Message-ID: <20241007174132.04ea99e7.olaf@aepfle.de>
In-Reply-To: <e7f552d7-f9c3-4f22-8a18-68294324a676@citrix.com>
References: <20241007152259.1353-1-olaf@aepfle.de>
	<e7f552d7-f9c3-4f22-8a18-68294324a676@citrix.com>
X-Mailer: Claws Mail (olh) 20240408T134401.7adfa8f7 hat ein Softwareproblem, kann man nichts machen.
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/4NT.P0/p.1/Apk=fJkFGymn";
 protocol="application/pgp-signature"; micalg=pgp-sha256
Content-Transfer-Encoding: 7bit

--Sig_/4NT.P0/p.1/Apk=fJkFGymn
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Mon, 7 Oct 2024 16:35:13 +0100 Andrew Cooper <andrew.cooper3@citrix.com>:

> We spend more than ~50% of wallclock time building QEMU, when 99% of
> changes aren't even liable to change the interaction with QEMU.

Makes sense, thank you.


Olaf

--Sig_/4NT.P0/p.1/Apk=fJkFGymn
Content-Type: application/pgp-signature
Content-Description: Digitale Signatur von OpenPGP

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

iQIzBAEBCAAdFiEE97o7Um30LT3B+5b/86SN7mm1DoAFAmcEASwACgkQ86SN7mm1
DoDa+xAAkKsGYpIdMg+e5O8wt6g9Tt1C6xH+q7lrTSGnfylGOFR9PWCKy4koDhyJ
j67WA0tSEeiO4Avxbw6rAgGUgAAzB7OWYwZra+Up7dEaFzLnq6WkXWDM4J/c2/L9
LJhy6jdyqW7CoASRURRR+/SxGyAYcMguZURHTHWvcECHIkrNOFi8s9oWKj1GC2hx
81SoibnPEDC/08Ic6vgfotxg65LLGSCmh91/G5myrEnckvVybSNV+j0PY6uabzER
Oxwiz5/IaIQf1GeEhD20ziYSPTeMnNSqZ3RQdoEDlpz7bswYmqCAiTVEzYGLuozX
M+YiCQITRmhKf1MDFDd17BJwr+VyoQ6LWe0ICxtV0OMI1cWdK9o4nebV+GdD0ChY
laCzUeyay4gawpziPo1IGnKJ4EjR+HtNy4JKT/V/jdiMKb+p9falyPUuOSscpm+j
o2FZ5oquECxxdD7Yi+/2xKV+LGTwWWcQ4XqPztgqqr0mtd6FSmw4C+FIX+avDX/K
emJg5uB1a9KGdb8oAvKMm/JjiBgQLjhBNvp/fC4D7X4fsmH7/by6YGKj6cLllOcU
Z1HyZYmtlIi8+7xJrFTG2O8V8wXWxdn/tvezXt4pnrcTF661iAlfe8l0D15ro1pi
Vn4WoYF7CsDC4vaZFEdQ72lxqjodqN0JDniFhyQCHvDDMFiKpdw=
=cZEK
-----END PGP SIGNATURE-----

--Sig_/4NT.P0/p.1/Apk=fJkFGymn--


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:43:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:43:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812204.1224931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxpt2-0006V7-7u; Mon, 07 Oct 2024 15:43:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812204.1224931; Mon, 07 Oct 2024 15:43: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 1sxpt2-0006Uy-4q; Mon, 07 Oct 2024 15:43:04 +0000
Received: by outflank-mailman (input) for mailman id 812204;
 Mon, 07 Oct 2024 15:43: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=zRLk=RD=linaro.org=peter.maydell@srs-se1.protection.inumbo.net>)
 id 1sxpt1-0006L5-81
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:43:03 +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 d5b962ee-84c2-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 17:43:01 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fabfc06de3so49658791fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:43:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d5b962ee-84c2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1728315781; x=1728920581; 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=cpMX1eumT+9vHxAImP8gJlIeH1i2TPrcR6wzeFPuFJM=;
        b=LCd5Q6cyEN44PGMcdNTw5hGKPYHHJEs+9kg200cnGjyK6bAC/rHG9lZudsCmB1UW2w
         7q6D4XRFsM2ga8yfuYvpgDI7sNWcKxCZY0m8DP1VhY0TitiBSCfdrgIQHGjqlOiMlG/z
         /V26gHKjjESiqFnKxQbb05uRCI8s0BVnyGQb4ec8ZQ/TlAM9IJRKDr4YCnjFSaaOf73R
         +Eu7uihVz1WH6x72ww/XOZDHxzS7wjjgBNRWJ1odrjDm53XkR47y/QFY697tx98IDAvk
         MSrXyG9TGEZkMGFIYj+Ii+NqDcRcjz0fTCG0kg8/dqA9bjpxRJzchOI1T8AMb1QLjkkW
         ZqWg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728315781; x=1728920581;
        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=cpMX1eumT+9vHxAImP8gJlIeH1i2TPrcR6wzeFPuFJM=;
        b=SJAcFnRhNjlpPuQ1Cr8jNB14DomUAcpHYRQ8QcVcZk+XLRIj+7bk5Gf/13jpf5pDNi
         Wf5ge2yJuQALISY9HhTZj9FuILn4ElVJNppVmdVQ4BXkGp0Pd8jdNSpiVd74i8nvtTSz
         3Av8jfP6E7brwgw0/IaZUH0oVHwgCA4kMWs2mSZqg0usy/UpahABtkATn60V+KtokZi3
         MvJAiIF+4vXOmKW6S9bMt2bSu+OB3B8Ag10WbOktKoE1k9+bq4ruh/Yw2n+K/CWJmlCL
         8fYx/K2mfuTGWMkbi8AOGDUufqwnTWRcMNhDo3D7guu+QRktevkAO/RyCV1M9+YmTgAl
         2XAQ==
X-Forwarded-Encrypted: i=1; AJvYcCVg5TSOZwb+rhYNKQ1/urYKaEeDl35u9tDcqy7LWi+nHLEa9xFYKp94ie1Fd/zfPFHU5d1FleWmjTI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwNERBeEXAU4x0heD7kPCodSaxsbaOk8FCjdBAUbTklxo8NR41u
	tugcrF3WUjVoCtaHy8JZlFp3PiG+a58Dzr6+iIIb71l3AYUAVydnBjVCbSg/hiFIXQwpAAOtrC5
	/ODIgJ9W5ZhUTsGlriDW+UHUCxsRkiPzGvZHhSg==
X-Google-Smtp-Source: AGHT+IETk110tVG61E3F4FABrVSMPupalOBdEBJHK8o1Bqxb8M7h2LJ4plW2qf4888jIdIKNQ+CkKsjEM2CDkn/sJBA=
X-Received: by 2002:a2e:4e02:0:b0:2f5:2e2:eadf with SMTP id
 38308e7fff4ca-2faf3c1c87fmr45497171fa.10.1728315780966; Mon, 07 Oct 2024
 08:43:00 -0700 (PDT)
MIME-Version: 1.0
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com> <20241003185655.1480819-3-edgar.iglesias@gmail.com>
In-Reply-To: <20241003185655.1480819-3-edgar.iglesias@gmail.com>
From: Peter Maydell <peter.maydell@linaro.org>
Date: Mon, 7 Oct 2024 16:42:49 +0100
Message-ID: <CAFEAcA9SgThjVW=VY_ZeKZh0bAe+rbTReK00DAQEXgMwD8cNqQ@mail.gmail.com>
Subject: Re: [PULL v2 2/5] hw/xen: Expose handle_bufioreq in xen_register_ioreq
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: qemu-devel@nongnu.org, sstabellini@kernel.org, anthony@xenproject.org, 
	paul@xen.org, edgar.iglesias@amd.com, xen-devel@lists.xenproject.org, 
	Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <richard.henderson@linaro.org>, 
	Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, 
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Content-Type: text/plain; charset="UTF-8"

On Thu, 3 Oct 2024 at 19:57, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
>
> From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
>
> Expose handle_bufioreq in xen_register_ioreq().
> This is to allow machines to enable or disable buffered ioreqs.
>
> No functional change since all callers still set it to
> HVM_IOREQSRV_BUFIOREQ_ATOMIC.
>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>

Hi; Coverity has noticed a problem (CID 1563383) with this change:

> diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
> index 3a9d6f981b..7d2b72853b 100644
> --- a/hw/xen/xen-hvm-common.c
> +++ b/hw/xen/xen-hvm-common.c
> @@ -667,6 +667,8 @@ static int xen_map_ioreq_server(XenIOState *state)
>      xen_pfn_t ioreq_pfn;
>      xen_pfn_t bufioreq_pfn;
>      evtchn_port_t bufioreq_evtchn;

In this function bufioreq_evtchn is declared uninitialized...

> +    unsigned long num_frames = 1;
> +    unsigned long frame = 1;
>      int rc;
>
>      /*
> @@ -675,59 +677,78 @@ static int xen_map_ioreq_server(XenIOState *state)
>       */
>      QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_bufioreq != 0);
>      QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_ioreq(0) != 1);
> +
> +    if (state->has_bufioreq) {
> +        frame = 0;
> +        num_frames = 2;
> +    }
>      state->fres = xenforeignmemory_map_resource(xen_fmem, xen_domid,
>                                           XENMEM_resource_ioreq_server,
> -                                         state->ioservid, 0, 2,
> +                                         state->ioservid,
> +                                         frame, num_frames,
>                                           &addr,
>                                           PROT_READ | PROT_WRITE, 0);
>      if (state->fres != NULL) {
>          trace_xen_map_resource_ioreq(state->ioservid, addr);
> -        state->buffered_io_page = addr;
> -        state->shared_page = addr + XC_PAGE_SIZE;
> +        state->shared_page = addr;
> +        if (state->has_bufioreq) {
> +            state->buffered_io_page = addr;
> +            state->shared_page = addr + XC_PAGE_SIZE;
> +        }
>      } else if (errno != EOPNOTSUPP) {
>          error_report("failed to map ioreq server resources: error %d handle=%p",
>                       errno, xen_xc);
>          return -1;
>      }
>
> -    rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
> -                                   (state->shared_page == NULL) ?
> -                                   &ioreq_pfn : NULL,
> -                                   (state->buffered_io_page == NULL) ?
> -                                   &bufioreq_pfn : NULL,
> -                                   &bufioreq_evtchn);

...which was OK prior to this change, because (ignoring the
early-exit case) we would always pass through this function
call, which initializes bufioreq_evtchn...

> -    if (rc < 0) {
> -        error_report("failed to get ioreq server info: error %d handle=%p",
> -                     errno, xen_xc);
> -        return rc;
> -    }
> +    /*
> +     * If we fail to map the shared page with xenforeignmemory_map_resource()
> +     * or if we're using buffered ioreqs, we need xen_get_ioreq_server_info()
> +     * to provide the the addresses to map the shared page and/or to get the
> +     * event-channel port for buffered ioreqs.
> +     */
> +    if (state->shared_page == NULL || state->has_bufioreq) {
> +        rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
> +                                       (state->shared_page == NULL) ?
> +                                       &ioreq_pfn : NULL,
> +                                       (state->has_bufioreq &&
> +                                        state->buffered_io_page == NULL) ?
> +                                       &bufioreq_pfn : NULL,
> +                                       &bufioreq_evtchn);

...but now the initialization has moved inside an if() so it only
happens under certain conditions...

> +        if (rc < 0) {
> +            error_report("failed to get ioreq server info: error %d handle=%p",
> +                         errno, xen_xc);
> +            return rc;
> +        }
>
> -    if (state->shared_page == NULL) {
> -        trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
> +        if (state->shared_page == NULL) {
> +            trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
>
> -        state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
> -                                                  PROT_READ | PROT_WRITE,
> -                                                  1, &ioreq_pfn, NULL);
> +            state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
> +                                                      PROT_READ | PROT_WRITE,
> +                                                      1, &ioreq_pfn, NULL);
> +        }
>          if (state->shared_page == NULL) {
>              error_report("map shared IO page returned error %d handle=%p",
>                           errno, xen_xc);
>          }
> -    }
>
> -    if (state->buffered_io_page == NULL) {
> -        trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
> +        if (state->has_bufioreq && state->buffered_io_page == NULL) {
> +            trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
>
> -        state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
> -                                                       PROT_READ | PROT_WRITE,
> -                                                       1, &bufioreq_pfn,
> -                                                       NULL);
> -        if (state->buffered_io_page == NULL) {
> -            error_report("map buffered IO page returned error %d", errno);
> -            return -1;
> +            state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
> +                                                        PROT_READ | PROT_WRITE,
> +                                                        1, &bufioreq_pfn,
> +                                                        NULL);
> +            if (state->buffered_io_page == NULL) {
> +                error_report("map buffered IO page returned error %d", errno);
> +                return -1;
> +            }
>          }
>      }
>
> -    if (state->shared_page == NULL || state->buffered_io_page == NULL) {
> +    if (state->shared_page == NULL ||
> +        (state->has_bufioreq && state->buffered_io_page == NULL)) {
>          return -1;
>      }

...and the tail end of the function has not been modified, so
(not visible in this diff context) when we do:

    trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);

    state->bufioreq_remote_port = bufioreq_evtchn;

    return 0;

we may be using it uninitialized (in the trace statement
and when assigning it to state->bufioreq_remote_port).

Could you have a look at this and send a fix, please?

thanks
-- PMM


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:52:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:52:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812215.1224956 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxq2Y-0003vh-K3; Mon, 07 Oct 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 812215.1224956; Mon, 07 Oct 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 1sxq2Y-0003uj-F0; Mon, 07 Oct 2024 15:52:54 +0000
Received: by outflank-mailman (input) for mailman id 812215;
 Mon, 07 Oct 2024 15: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=g5Pn=RD=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1sxq2W-0003e1-Vb
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:52:52 +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 34b65552-84c4-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 17:52:50 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c883459b19so5447844a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:52:50 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99309aa6afsm386160366b.112.2024.10.07.08.52.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 08:52:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34b65552-84c4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728316370; x=1728921170; 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=+kQumULdyDnzcg6JI93dHiiynHRn4XaUPGErs4CDNzk=;
        b=Cgx98B5sK8tLUOFDTo+wu1eXRcZ3obK8+V+/Enw+jztS1HUas/HlmqEnreFWSoqnRl
         bGVt9JbkRdu8mBS3evJBz2sXSRFngXtltRBzZHpTr6tC/ip8gZDveTBOI9D8oxGliI+t
         IfWDFI2nC/Mj+mkAw+LPf/6dn5KtISR3NkZpo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728316370; x=1728921170;
        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=+kQumULdyDnzcg6JI93dHiiynHRn4XaUPGErs4CDNzk=;
        b=hDDFwTx8/C2XtLfSaYYXe9mYELFr1d3HyUt5CI57I0KxmOTnuG1lpYp4BtnbcbxmEE
         neVj1E9anZJb1WV5+17GKZYgHcX4Ok78Zsb5xUgsmLNcrurxjW52Z8HntLN/xwS1Q/ru
         rhQWIQydiiQ6YVVPXS+7d/kOMZHTfmH8dzXf1hawan3qHCdrdProfgB7+/jTgIEqckIW
         H+HKdR4Pz0ToKyZsR7R76Fp2c9fmrxCFgKUU1m4SNm7v83xz6zr8+XsxTZArSWc61CKk
         nEvQCcsOvsvQWNm5yOK0OQbn3pX5Xv9a49cPQOmXRDd0D7z0SyEZNmseqO7mp2LHDftC
         Mz1Q==
X-Gm-Message-State: AOJu0Yw9MMA9TG3V829L7FsjImiyIo1CXgpz/SB9m3OMngTpZJtGU4B7
	XSVZy4vXS4uYeYGfSZpzk6tq4ba8fnLlXc16gzFMAV3QZW2HV5mDs7Cjuk6eAjL88DF2h87XCuu
	/ls4=
X-Google-Smtp-Source: AGHT+IFeS1aGikZa/2CCCW+bTi/6nxN6yDikauWJ9uayDE0wfguFSZ3Uanl+1QrXjk08rcRMni77Qg==
X-Received: by 2002:a17:907:3f25:b0:a99:61f7:8413 with SMTP id a640c23a62f3a-a9961f78458mr97631566b.23.1728316369658;
        Mon, 07 Oct 2024 08:52:49 -0700 (PDT)
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>
Subject: [PATCH v4 2/2] x86/fpu: Rework fpu_setup_fpu() uses to split it in two
Date: Mon,  7 Oct 2024 16:52:40 +0100
Message-ID: <20241007155240.17186-3-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
References: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

It was trying to do too many things at once and there was no clear way of
defining what it was meant to do. This commit splits the function in two.

  1. A function to return the FPU to power-on reset values.
  2. A x87/SSE state loader (equivalent to the old function when it took
     a data pointer).

The old function also had a concept of "default" values that the FPU
would be configured for in some cases but not others. This patch removes
that 3rd vague initial state and replaces it with power-on reset.

While doing this make sure the abridged control tag is consistent with the
manuals and starts as 0xFF

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
--
@Jan: The patch changed substantially. Are you still ok with this R-by?

v4:
  * Reworded commit message and title
  * Remove vcpu_default_fpu() and replaced its uses with vcpu_reset_fpu()
  * s/FTW_RESET/FXSAVE_FTW_RESET/ (plus comment)
  * Remove FCW_DEFAULT, as it's the leftover reset value from the 80287
    (which we largely don't care about anymore).
---
 xen/arch/x86/domain.c             |  7 +++--
 xen/arch/x86/hvm/hvm.c            | 12 +++-----
 xen/arch/x86/i387.c               | 51 +++++++++++--------------------
 xen/arch/x86/include/asm/i387.h   | 21 ++++++++++---
 xen/arch/x86/include/asm/xstate.h |  1 +
 5 files changed, 45 insertions(+), 47 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 89aad7e8978f..78a13e6812c9 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1186,9 +1186,10 @@ int arch_set_info_guest(
          is_pv_64bit_domain(d) )
         v->arch.flags &= ~TF_kernel_mode;
 
-    vcpu_setup_fpu(v, v->arch.xsave_area,
-                   flags & VGCF_I387_VALID ? &c.nat->fpu_ctxt : NULL,
-                   FCW_DEFAULT);
+    if ( flags & VGCF_I387_VALID )
+        vcpu_setup_fpu(v, &c.nat->fpu_ctxt);
+    else
+        vcpu_reset_fpu(v);
 
     if ( !compat )
     {
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 77fe282118f7..44f4964aa036 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1163,10 +1163,10 @@ static int cf_check hvm_load_cpu_ctxt(struct domain *d, hvm_domain_context_t *h)
     seg.attr = ctxt.ldtr_arbytes;
     hvm_set_segment_register(v, x86_seg_ldtr, &seg);
 
-    /* Cover xsave-absent save file restoration on xsave-capable host. */
-    vcpu_setup_fpu(v, xsave_enabled(v) ? NULL : v->arch.xsave_area,
-                   ctxt.flags & XEN_X86_FPU_INITIALISED ? ctxt.fpu_regs : NULL,
-                   FCW_RESET);
+    if ( ctxt.flags & XEN_X86_FPU_INITIALISED )
+        vcpu_setup_fpu(v, &ctxt.fpu_regs);
+    else
+        vcpu_reset_fpu(v);
 
     v->arch.user_regs.rax = ctxt.rax;
     v->arch.user_regs.rbx = ctxt.rbx;
@@ -4006,9 +4006,7 @@ void hvm_vcpu_reset_state(struct vcpu *v, uint16_t cs, uint16_t ip)
         v->arch.guest_table = pagetable_null();
     }
 
-    if ( v->arch.xsave_area )
-        v->arch.xsave_area->xsave_hdr.xstate_bv = 0;
-    vcpu_setup_fpu(v, v->arch.xsave_area, NULL, FCW_RESET);
+    vcpu_reset_fpu(v);
 
     arch_vcpu_regs_init(v);
     v->arch.user_regs.rip = ip;
diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index fbb9d3584a3d..916d9b572598 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -303,41 +303,26 @@ int vcpu_init_fpu(struct vcpu *v)
     return xstate_alloc_save_area(v);
 }
 
-void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
-                    const void *data, unsigned int fcw_default)
+void vcpu_reset_fpu(struct vcpu *v)
 {
-    fpusse_t *fpu_sse = &v->arch.xsave_area->fpu_sse;
-
-    ASSERT(!xsave_area || xsave_area == v->arch.xsave_area);
-
-    v->fpu_initialised = !!data;
-
-    if ( data )
-    {
-        memcpy(fpu_sse, data, sizeof(*fpu_sse));
-        if ( xsave_area )
-            xsave_area->xsave_hdr.xstate_bv = XSTATE_FP_SSE;
-    }
-    else if ( xsave_area && fcw_default == FCW_DEFAULT )
-    {
-        xsave_area->xsave_hdr.xstate_bv = 0;
-        fpu_sse->mxcsr = MXCSR_DEFAULT;
-    }
-    else
-    {
-        memset(fpu_sse, 0, sizeof(*fpu_sse));
-        fpu_sse->fcw = fcw_default;
-        fpu_sse->mxcsr = MXCSR_DEFAULT;
-        if ( v->arch.xsave_area )
-        {
-            v->arch.xsave_area->xsave_hdr.xstate_bv &= ~XSTATE_FP_SSE;
-            if ( fcw_default != FCW_DEFAULT )
-                v->arch.xsave_area->xsave_hdr.xstate_bv |= X86_XCR0_X87;
-        }
-    }
+    v->fpu_initialised = false;
+    *v->arch.xsave_area = (struct xsave_struct) {
+        .fpu_sse = {
+            .mxcsr = MXCSR_DEFAULT,
+            .fcw = FCW_RESET,
+            .ftw = FXSAVE_FTW_RESET,
+        },
+        .xsave_hdr.xstate_bv = X86_XCR0_X87,
+    };
+}
 
-    if ( xsave_area )
-        xsave_area->xsave_hdr.xcomp_bv = 0;
+void vcpu_setup_fpu(struct vcpu *v, const void *data)
+{
+    v->fpu_initialised = true;
+    *v->arch.xsave_area = (struct xsave_struct) {
+        .fpu_sse = *(const fpusse_t*)data,
+        .xsave_hdr.xstate_bv = XSTATE_FP_SSE,
+    };
 }
 
 /* Free FPU's context save area */
diff --git a/xen/arch/x86/include/asm/i387.h b/xen/arch/x86/include/asm/i387.h
index a783549db991..652d7ad2deb6 100644
--- a/xen/arch/x86/include/asm/i387.h
+++ b/xen/arch/x86/include/asm/i387.h
@@ -31,10 +31,23 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts);
 void vcpu_restore_fpu_lazy(struct vcpu *v);
 void vcpu_save_fpu(struct vcpu *v);
 void save_fpu_enable(void);
-
 int vcpu_init_fpu(struct vcpu *v);
-struct xsave_struct;
-void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
-                    const void *data, unsigned int fcw_default);
 void vcpu_destroy_fpu(struct vcpu *v);
+
+/*
+ * Restore v's FPU to power-on reset values
+ *
+ * @param v vCPU containing the FPU
+ */
+void vcpu_reset_fpu(struct vcpu *v);
+
+/*
+ * Load x87/SSE state into v's FPU
+ *
+ * Overrides the XSAVE header to set the state components to be x87 and SSE.
+ *
+ * @param v    vCPU containing the FPU
+ * @param data 512-octet blob for x87/SSE state
+ */
+void vcpu_setup_fpu(struct vcpu *v, const void *data);
 #endif /* __ASM_I386_I387_H */
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index b4ee5559534a..07017cc4edfd 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -14,6 +14,7 @@
 
 #define FCW_DEFAULT               0x037f
 #define FCW_RESET                 0x0040
+#define FXSAVE_FTW_RESET          0xFF /* Abridged Tag Word format */
 #define MXCSR_DEFAULT             0x1f80
 
 extern uint32_t mxcsr_mask;
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:52:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:52:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812213.1224940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxq2W-0003e9-40; Mon, 07 Oct 2024 15:52:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812213.1224940; Mon, 07 Oct 2024 15:52: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 1sxq2W-0003e2-1G; Mon, 07 Oct 2024 15:52:52 +0000
Received: by outflank-mailman (input) for mailman id 812213;
 Mon, 07 Oct 2024 15:52: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=g5Pn=RD=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1sxq2U-0003dv-90
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:52:50 +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 33eeded2-84c4-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 17:52:49 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a994ecf79e7so190911166b.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:52:49 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99309aa6afsm386160366b.112.2024.10.07.08.52.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 08:52:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 33eeded2-84c4-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728316368; x=1728921168; 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=eaoG66Tciv7HDtCU2mUwzFbWhnHHcMuWC3pU1aag758=;
        b=iqrIsWWYRjyU+EYaO61eaW+GbfVuP49DWBdSUlhqRe1pzcw6iu6ZasSv0QM4vrMFSg
         lItVWNM6cji3qzSMKaiT+Pnw9LZJelUKVOGJ1td7mmMqIY9JnsQ8Pktv9Fydoj194Efd
         D8069Vb8VGlEgWVSsZL9Aw3eJSMo3PFW6WfAg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728316368; x=1728921168;
        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=eaoG66Tciv7HDtCU2mUwzFbWhnHHcMuWC3pU1aag758=;
        b=MI9KP3AmHldAIaLVZ+o9/DCpIvDSrGhThQKtJTA449I12ZVUIiX7mzGIRpLp6AlxDM
         Xf/39TxS8PVcXQkMBjKUgjf9EQkCOJ48HmVUBOMZYns6vLvNp/VQYeSkNXZvElW2uiYJ
         RcAiq4Vz0AHJgPuKqEiFC7Yh2EToKxIPT8wgMHaq0PsoEQjKJFW5sj4brOIqycLaY9Xn
         nEZe9/GMbXzloBqJ9/o0CYFGuuRTlKDsv7HlpyKmT8/9GxJwMMM2AYfZspq002gHLyZl
         bU5MLahhDxmfHrPwO+WUM8JIUtlsbTBg08KG52uWOu9CdAyK+lzyzg+7I7E1wv64aaQt
         cleQ==
X-Gm-Message-State: AOJu0Yw5cSd8H6gY5MgSgP9tAxxXsPW+idVAyBta6BO4x+GIjR/7mWBp
	1c+NfLAjZa68ZbnWadZLDoOi6Ap9qU0XAPkYzyMyeqPdUwEmAc8bb/9SBT/+C2gNzRtyZRn+6Wr
	59qA=
X-Google-Smtp-Source: AGHT+IEdgfriBRNJmiLKeAn2pqQsdv5NNiBIrLm/crufZmoezz0gZbRSmgTR30QOwUyPYLdzF+fKmQ==
X-Received: by 2002:a17:906:da89:b0:a8a:837c:ebd4 with SMTP id a640c23a62f3a-a991bd71c4emr1375494666b.27.1728316368136;
        Mon, 07 Oct 2024 08:52:48 -0700 (PDT)
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>
Subject: [PATCH v4 0/2] x86: FPU handling cleanup
Date: Mon,  7 Oct 2024 16:52:38 +0100
Message-ID: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

v3: https://lore.kernel.org/xen-devel/20240813142119.29012-1-alejandro.vallejo@cloud.com/
v3 -> v4: Removal vcpu_default_fpu() + style changes

v2: https://lore.kernel.org/xen-devel/20240808134150.29927-1-alejandro.vallejo@cloud.com/
v2 -> v3: Cosmetic changes and wiped big comment about missing data in the
          migration stream. Details in each patch.

v1: https://lore.kernel.org/xen-devel/cover.1720538832.git.alejandro.vallejo@cloud.com/
v1 -> v2: v1/patch1 and v1/patch2 are already in staging.

=============================== Original cover letter =========================
I want to eventually reach a position in which the FPU state can be allocated
from the domheap and hidden via the same core mechanism proposed in Elias'
directmap removal series. Doing so is complicated by the presence of 2 aliased
pointers (v->arch.fpu_ctxt and v->arch.xsave_area) and the rather complicated
semantics of vcpu_setup_fpu(). This series tries to simplify the code so moving
to a "map/modify/unmap" model is more tractable.

Patches 1 and 2 are trivial refactors.

Patch 3 unifies FPU state so an XSAVE area is allocated per vCPU regardless of
the host supporting it or not. The rationale is that the memory savings are
negligible and not worth the extra complexity.

Patch 4 is a non-trivial split of the vcpu_setup_fpu() into 2 separate
functions. One to override x87/SSE state, and another to set a reset state.
===============================================================================

Alejandro Vallejo (3):
  x86/fpu: Combine fpu_ctxt and xsave_area in arch_vcpu
  x86/fpu: Rework fpu_setup_fpu() uses to split it in two
  x86/fpu: Remove remaining uses of FCW_DEFAULT

 xen/arch/x86/domain.c             |  7 ++-
 xen/arch/x86/domctl.c             |  6 +-
 xen/arch/x86/hvm/emulate.c        |  4 +-
 xen/arch/x86/hvm/hvm.c            | 18 +++---
 xen/arch/x86/i387.c               | 94 ++++++++-----------------------
 xen/arch/x86/include/asm/domain.h |  6 --
 xen/arch/x86/include/asm/i387.h   | 21 +++++--
 xen/arch/x86/include/asm/xstate.h |  2 +-
 xen/arch/x86/x86_emulate/blk.c    |  2 +-
 xen/arch/x86/xstate.c             | 14 +++--
 xen/common/efi/runtime.c          |  2 +-
 11 files changed, 74 insertions(+), 102 deletions(-)

-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:52:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:52:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812214.1224950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxq2Y-0003sX-AD; Mon, 07 Oct 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 812214.1224950; Mon, 07 Oct 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 1sxq2Y-0003sQ-7c; Mon, 07 Oct 2024 15:52:54 +0000
Received: by outflank-mailman (input) for mailman id 812214;
 Mon, 07 Oct 2024 15:52: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=g5Pn=RD=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1sxq2W-0003e1-Og
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:52:52 +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 345145c4-84c4-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 17:52:49 +0200 (CEST)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3e8a74so6453400a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:52:49 -0700 (PDT)
Received: from mewpvdipd1023.corp.cloud.com ([52.174.59.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99309aa6afsm386160366b.112.2024.10.07.08.52.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 08:52:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 345145c4-84c4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728316369; x=1728921169; 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=9TYzH8XXnpnrv/vwFrSTuoTElqLW4Sow9Xi2H8+/uD4=;
        b=ASJaZNn4/GJBhnjdt/jUz4gJ6SpY8OEMlq+HuRyw68dnVNGquDdTGqN4x5HlVbwkP6
         dLszoEtEwz/WOgQMJfhyLE+VuIcQwo1A1LYJOLJvkq0vVlyArTVxjylqJq7997rE4Cna
         fK89GyuzK+vvHHSFBVf6Rj4KO9zduhfzsT2MM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728316369; x=1728921169;
        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=9TYzH8XXnpnrv/vwFrSTuoTElqLW4Sow9Xi2H8+/uD4=;
        b=jbNJv4xk+ATYHjizFIllfa7On7NIzNB6EOTSDTzL0fI9n0PInVHXxOiVbhJWSJS6dQ
         VKFttTDMHf+nc3nS5JqLEMJFWzHiryKd3iHpT+wW5O0uWzsiVSco3baFqqwENVxwxM5r
         ESLp56VVFLE68XeRY0nNeb4mjyy6o0h6iGWhXlnhZ9OUwaXyWbITT1kdfvmv/dArs25d
         fVE/1J8h3qmvIyz5De6v3MMJgcsEAhXWQoGlvmItoMDLgNscW9dVecA4d0p1clRTHf2n
         1sW9zR24zTum01sOQqPR2nBcmWQ8dLHtH7vwefZ+fevVDpauFX/rS/ryugGcPMU46C78
         rFTA==
X-Gm-Message-State: AOJu0YxlfsSkdtdMgpN4UITLUfadvFWadOKCF1Cpp3IqKSjk9khdOoZv
	jNnA7YLXpcCzIUMPWloOsirWm26LnuwWXuQfQudEmJ2/dSMFzVpOu+I0RUxrCVQT3qEj0AmaQQX
	Hfr4=
X-Google-Smtp-Source: AGHT+IFD+UoGl7Y5EgfhtlbByitJiOettPiLgEYOoIkKxFGeYn1wuwO0Qjdsd2PFWKnfZM2Ta5r92g==
X-Received: by 2002:a17:907:960c:b0:a86:8b7b:7880 with SMTP id a640c23a62f3a-a991c06317fmr1040261066b.63.1728316368981;
        Mon, 07 Oct 2024 08:52:48 -0700 (PDT)
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>
Subject: [PATCH v4 1/2] x86/fpu: Combine fpu_ctxt and xsave_area in arch_vcpu
Date: Mon,  7 Oct 2024 16:52:39 +0100
Message-ID: <20241007155240.17186-2-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
References: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

fpu_ctxt is either a pointer to the legacy x87/SSE save area (used by FXSAVE) or
a pointer aliased with xsave_area that points to its fpu_sse subfield. Such
subfield is at the base and is identical in size and layout to the legacy
buffer.

This patch merges the 2 pointers in the arch_vcpu into a single XSAVE area. In
the very rare case in which the host doesn't support XSAVE all we're doing is
wasting a tiny amount of memory and trading those for a lot more simplicity in
the code.

While at it, dedup the setup logic in vcpu_init_fpu() and integrate it
into xstate_alloc_save_area().

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
--
v4:
  * Amend commit message with extra note about deduping vcpu_init_fpu()
  * Remove comment on top of cpu_user_regs (though I really think there
    ought to be a credible one, in one form or another).
  * Remove cast from blk.c so FXSAVE_AREA is "void *"
  * Simplify comment in xstate_alloc_save_area() for the "host has no
    XSAVE" case.
---
 xen/arch/x86/domctl.c             |  6 ++++-
 xen/arch/x86/hvm/emulate.c        |  4 +--
 xen/arch/x86/hvm/hvm.c            |  6 ++++-
 xen/arch/x86/i387.c               | 45 +++++--------------------------
 xen/arch/x86/include/asm/domain.h |  6 -----
 xen/arch/x86/x86_emulate/blk.c    |  2 +-
 xen/arch/x86/xstate.c             | 12 ++++++---
 7 files changed, 28 insertions(+), 53 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 96d816cf1a7d..2d115395da90 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1379,7 +1379,11 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
 #define c(fld) (c.nat->fld)
 #endif
 
-    memcpy(&c.nat->fpu_ctxt, v->arch.fpu_ctxt, sizeof(c.nat->fpu_ctxt));
+    BUILD_BUG_ON(sizeof(c.nat->fpu_ctxt) !=
+                 sizeof(v->arch.xsave_area->fpu_sse));
+    memcpy(&c.nat->fpu_ctxt, &v->arch.xsave_area->fpu_sse,
+           sizeof(c.nat->fpu_ctxt));
+
     if ( is_pv_domain(d) )
         c(flags = v->arch.pv.vgc_flags & ~(VGCF_i387_valid|VGCF_in_kernel));
     else
diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index aa97ca1cbffd..f2bc6967dfcb 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2371,7 +2371,7 @@ static int cf_check hvmemul_get_fpu(
         alternative_vcall(hvm_funcs.fpu_dirty_intercept);
     else if ( type == X86EMUL_FPU_fpu )
     {
-        const fpusse_t *fpu_ctxt = curr->arch.fpu_ctxt;
+        const fpusse_t *fpu_ctxt = &curr->arch.xsave_area->fpu_sse;
 
         /*
          * Latch current register state so that we can back out changes
@@ -2411,7 +2411,7 @@ static void cf_check hvmemul_put_fpu(
 
     if ( aux )
     {
-        fpusse_t *fpu_ctxt = curr->arch.fpu_ctxt;
+        fpusse_t *fpu_ctxt = &curr->arch.xsave_area->fpu_sse;
         bool dval = aux->dval;
         int mode = hvm_guest_x86_mode(curr);
 
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 7b2e1c9813d6..77fe282118f7 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -914,7 +914,11 @@ static int cf_check hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t *h)
 
     if ( v->fpu_initialised )
     {
-        memcpy(ctxt.fpu_regs, v->arch.fpu_ctxt, sizeof(ctxt.fpu_regs));
+        BUILD_BUG_ON(sizeof(ctxt.fpu_regs) !=
+                     sizeof(v->arch.xsave_area->fpu_sse));
+        memcpy(ctxt.fpu_regs, &v->arch.xsave_area->fpu_sse,
+               sizeof(ctxt.fpu_regs));
+
         ctxt.flags = XEN_X86_FPU_INITIALISED;
     }
 
diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index 134e0bece519..fbb9d3584a3d 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -39,7 +39,7 @@ static inline void fpu_xrstor(struct vcpu *v, uint64_t mask)
 /* Restore x87 FPU, MMX, SSE and SSE2 state */
 static inline void fpu_fxrstor(struct vcpu *v)
 {
-    const fpusse_t *fpu_ctxt = v->arch.fpu_ctxt;
+    const fpusse_t *fpu_ctxt = &v->arch.xsave_area->fpu_sse;
 
     /*
      * Some CPUs don't save/restore FDP/FIP/FOP unless an exception
@@ -151,7 +151,7 @@ static inline void fpu_xsave(struct vcpu *v)
 /* Save x87 FPU, MMX, SSE and SSE2 state */
 static inline void fpu_fxsave(struct vcpu *v)
 {
-    fpusse_t *fpu_ctxt = v->arch.fpu_ctxt;
+    fpusse_t *fpu_ctxt = &v->arch.xsave_area->fpu_sse;
     unsigned int fip_width = v->domain->arch.x87_fip_width;
 
     if ( fip_width != 4 )
@@ -212,7 +212,7 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts)
      * above) we also need to restore full state, to prevent subsequently
      * saving state belonging to another vCPU.
      */
-    if ( v->arch.fully_eager_fpu || (v->arch.xsave_area && xstate_all(v)) )
+    if ( v->arch.fully_eager_fpu || xstate_all(v) )
     {
         if ( cpu_has_xsave )
             fpu_xrstor(v, XSTATE_ALL);
@@ -299,44 +299,14 @@ void save_fpu_enable(void)
 /* Initialize FPU's context save area */
 int vcpu_init_fpu(struct vcpu *v)
 {
-    int rc;
-
     v->arch.fully_eager_fpu = opt_eager_fpu;
-
-    if ( (rc = xstate_alloc_save_area(v)) != 0 )
-        return rc;
-
-    if ( v->arch.xsave_area )
-        v->arch.fpu_ctxt = &v->arch.xsave_area->fpu_sse;
-    else
-    {
-        BUILD_BUG_ON(__alignof(v->arch.xsave_area->fpu_sse) < 16);
-        v->arch.fpu_ctxt = _xzalloc(sizeof(v->arch.xsave_area->fpu_sse),
-                                    __alignof(v->arch.xsave_area->fpu_sse));
-        if ( v->arch.fpu_ctxt )
-        {
-            fpusse_t *fpu_sse = v->arch.fpu_ctxt;
-
-            fpu_sse->fcw = FCW_DEFAULT;
-            fpu_sse->mxcsr = MXCSR_DEFAULT;
-        }
-        else
-            rc = -ENOMEM;
-    }
-
-    return rc;
+    return xstate_alloc_save_area(v);
 }
 
 void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
                     const void *data, unsigned int fcw_default)
 {
-    /*
-     * For the entire function please note that vcpu_init_fpu() (above) points
-     * v->arch.fpu_ctxt into v->arch.xsave_area when XSAVE is available. Hence
-     * accesses through both pointers alias one another, and the shorter form
-     * is used here.
-     */
-    fpusse_t *fpu_sse = v->arch.fpu_ctxt;
+    fpusse_t *fpu_sse = &v->arch.xsave_area->fpu_sse;
 
     ASSERT(!xsave_area || xsave_area == v->arch.xsave_area);
 
@@ -373,10 +343,7 @@ void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
 /* Free FPU's context save area */
 void vcpu_destroy_fpu(struct vcpu *v)
 {
-    if ( v->arch.xsave_area )
-        xstate_free_save_area(v);
-    else
-        xfree(v->arch.fpu_ctxt);
+    xstate_free_save_area(v);
 }
 
 /*
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 5219c4fb0f69..b79d6badd71c 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -591,12 +591,6 @@ struct pv_vcpu
 
 struct arch_vcpu
 {
-    /*
-     * guest context (mirroring struct vcpu_guest_context) common
-     * between pv and hvm guests
-     */
-
-    void              *fpu_ctxt;
     struct cpu_user_regs user_regs;
 
     /* Debug registers. */
diff --git a/xen/arch/x86/x86_emulate/blk.c b/xen/arch/x86/x86_emulate/blk.c
index e790f4f90056..08a05f8453f7 100644
--- a/xen/arch/x86/x86_emulate/blk.c
+++ b/xen/arch/x86/x86_emulate/blk.c
@@ -11,7 +11,7 @@
     !defined(X86EMUL_NO_SIMD)
 # ifdef __XEN__
 #  include <asm/xstate.h>
-#  define FXSAVE_AREA current->arch.fpu_ctxt
+#  define FXSAVE_AREA ((void *)&current->arch.xsave_area->fpu_sse)
 # else
 #  define FXSAVE_AREA get_fpu_save_area()
 # endif
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 57a0749f0d54..af9e345a7ace 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -508,9 +508,15 @@ int xstate_alloc_save_area(struct vcpu *v)
     unsigned int size;
 
     if ( !cpu_has_xsave )
-        return 0;
-
-    if ( !is_idle_vcpu(v) || !cpu_has_xsavec )
+    {
+        /*
+         * On non-XSAVE systems, we allocate an XSTATE buffer for simplicity.
+         * XSTATE is backwards compatible to FXSAVE, and only one cacheline
+         * larger.
+         */
+        size = XSTATE_AREA_MIN_SIZE;
+    }
+    else if ( !is_idle_vcpu(v) || !cpu_has_xsavec )
     {
         size = xsave_cntxt_size;
         BUG_ON(size < XSTATE_AREA_MIN_SIZE);
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 15:59:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 15:59:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812237.1224971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxq99-0003E9-EG; Mon, 07 Oct 2024 15:59:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812237.1224971; Mon, 07 Oct 2024 15:59: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 1sxq99-0003E2-Ae; Mon, 07 Oct 2024 15:59:43 +0000
Received: by outflank-mailman (input) for mailman id 812237;
 Mon, 07 Oct 2024 15:59: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=g5Pn=RD=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1sxq97-0003Dd-Tw
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 15:59:41 +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 28cd50ab-84c5-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 17:59:40 +0200 (CEST)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-5398e33155fso5758304e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 08:59:40 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99325c5c48sm388172266b.170.2024.10.07.08.59.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 08:59:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 28cd50ab-84c5-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728316779; x=1728921579; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=12COLQx8z2XFe6amR/mvWLGl0kGN+KarOHS2OvuT2G8=;
        b=DeC5SHSmRu98aLrzO/C3y4wC7M8MpxcSTyJL0OjbNMJVATgL0VtrnrOB/ozLm/nzPi
         +MPK0dNuW0f7vJmVQvjud8Kves4cQyD9A+J45lfGXNIV5vGGLZ+2TcMkcQBHleUhhr0u
         n03xovhem0ISKwcq2dS5jybqWajG2/TdCpEpE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728316779; x=1728921579;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=12COLQx8z2XFe6amR/mvWLGl0kGN+KarOHS2OvuT2G8=;
        b=OHGhAQSLw/C6/kAEajb9uMFupSK5UGUHGuqkkr+WYP5mKg2MjSp7QL3vi46W2tW79+
         hByo/sE93fFrkuMymaKo9ovCXjm2bgWZi2xLDvWKHFSELmN1p+d0cYlcZ2d4usF3Y4xk
         U0eFw84hAXVIp0j6prHbaPZLEjLIkQ4DGXUqMW7ME9X/KWmiSX2eeq81Ny0XGkm4eIhP
         nYvuQuy3ZULVldP/m4SCDfW9csthCVvPUenurb/mEhS0uJ2KCvZH3sHJknSgOVtuZK1o
         5iVnxbnTrg7yEHx7xpWQ73GZ+gHYkPW9ecqgaGY0k3yLkglt2DIXRy3InuUpIf6pIkE4
         wzXA==
X-Forwarded-Encrypted: i=1; AJvYcCVGff7KGT7iXM6TWHwuKP1uf3/4AD5Alo6bbJ+N7HV56j7iIvq21eMCUPt2Uon+2FNGhF18oxvh8UE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yztoj8dpVG7BgC6S+EeYN8MrKdFOvm9mxzsAZI+FD0AKUgywfv4
	chunoO8Hf9IsNkXU1dUpNHQ+hlNkx+AagioC6rVzcJF8mhvQ4qRoqFiJYSCEFKo=
X-Google-Smtp-Source: AGHT+IFHmBD5rR0BRIaaupl4dWspvlQ0vQi8tNA3YLtWnTHr0Qtoz9nYxmurff0yceRF0WDEqxXKIw==
X-Received: by 2002:a05:6512:e88:b0:539:8ad5:5093 with SMTP id 2adb3069b0e04-539ab88ce30mr7193975e87.35.1728316779404;
        Mon, 07 Oct 2024 08:59:39 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 07 Oct 2024 16:59:38 +0100
Message-Id: <D4PP5YZ1G78X.PJY4WZKR15YX@cloud.com>
Cc: "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>
Subject: Re: [PATCH v3 2/2] x86/fpu: Split fpu_setup_fpu() in three
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20240813142119.29012-1-alejandro.vallejo@cloud.com>
 <20240813142119.29012-3-alejandro.vallejo@cloud.com>
 <c83942d9-bb55-45c2-9a44-314266ce14c0@suse.com>
 <D3EXG6HDKMYR.15275C42NLLBL@cloud.com>
 <D4M7ZZL8YUXE.1D7KX3JJDYH6L@cloud.com>
 <1a0d69a0-84fb-4178-9f73-5490bb1d1adf@suse.com>
In-Reply-To: <1a0d69a0-84fb-4178-9f73-5490bb1d1adf@suse.com>

Hi,

On Fri Oct 4, 2024 at 7:08 AM BST, Jan Beulich wrote:
> On 03.10.2024 15:54, Alejandro Vallejo wrote:
> > On Tue Aug 13, 2024 at 5:33 PM BST, Alejandro Vallejo wrote:
> >> On Tue Aug 13, 2024 at 3:32 PM BST, Jan Beulich wrote:
> >>> On 13.08.2024 16:21, Alejandro Vallejo wrote:
> >>>> It was trying to do too many things at once and there was no clear w=
ay of
> >>>> defining what it was meant to do. This commit splits the function in=
 three.
> >>>>
> >>>>   1. A function to return the FPU to power-on reset values.
> >>>>   2. A function to return the FPU to default values.
> >>>>   3. A x87/SSE state loader (equivalent to the old function when it =
took a data
> >>>>      pointer).
> >>>>
> >>>> While at it, make sure the abridged tag is consistent with the manua=
ls and
> >>>> start as 0xFF.
> >>>>
> >>>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> >>>
> >>> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> >>>
> >>>> ---
> >>>> v3:
> >>>>   * Adjust commit message, as the split is now in 3.
> >>>>   * Remove bulky comment, as the rationale for it turned out to be
> >>>>     unsubstantiated. I can't find proof in xen-devel of the stream
> >>>>     operating the way I claimed, and at that point having the commen=
t
> >>>>     at all is pointless
> >>>
> >>> So you deliberately removed the comment altogether, not just point 3 =
of it?
> >>>
> >>> Jan
> >>
> >> Yes. The other two cases can be deduced pretty trivially from the cond=
itional,
> >> I reckon. I commented them more heavily in order to properly introduce=
 (3), but
> >> seeing how it was all a midsummer dream might as well reduce clutter.
> >>
> >> I got as far as the original implementation of XSAVE in Xen and it see=
ms to
> >> have been tested against many combinations of src and dst, none of whi=
ch was
> >> that ficticious "xsave enabled + xsave context missing". I suspect the
> >> xsave_enabled(v) was merely avoiding writing to the XSAVE buffer just =
for
> >> efficiency (however minor effect it might have had). I just reverse en=
gineering
> >> it wrong.
> >>
> >> Which reminds me. Thanks for mentioning that, because it was really ju=
st
> >> guesswork on my part.
> >>
> >> Cheers,
> >> Alejandro
> >=20
> > Playing around with the FPU I noticed this patch wasn't committed, did =
it fall
> > under the cracks or is there a specific reason?
>
> Well, it's patch 2 in a series with no statement that it's independent of=
 patch

I meant the series as a whole, rather than this specific patch. They are in=
deed
not independent.

> 1, and patch 1 continues to lack an ack (based on earlier comments of min=
e you
> probably have inferred that I'm not intending to ack it in this shape, wh=
ile at
> the same time - considering the arguments you gave - I also don't mean to=
 stand
> in the way of it going in with someone else's ack).

I didn't infer that at all, I'm afraid. I merely thought you had been busy =
and
forgot about it. Is the "in this shape" about the overallocation that you
mentioned in v1?

>
> Jan

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 16:10:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 16:10:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812246.1224981 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxqJk-0002re-C5; Mon, 07 Oct 2024 16:10:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812246.1224981; Mon, 07 Oct 2024 16: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 1sxqJk-0002rX-8X; Mon, 07 Oct 2024 16:10:40 +0000
Received: by outflank-mailman (input) for mailman id 812246;
 Mon, 07 Oct 2024 16:10: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=arWC=RD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sxqJi-0002rR-Iv
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 16:10:38 +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 aff245bf-84c6-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 18:10:36 +0200 (CEST)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2fac3f20f1dso48546161fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 09:10:36 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05ecda3sm3327589a12.73.2024.10.07.09.10.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 09:10:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aff245bf-84c6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728317436; x=1728922236; 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=VFTyB/AkP4fpgABVjnSWtiP1n6mALu5+GNw6wcNlCr0=;
        b=SqOcBu5VoVcbvt5+0KXUIDdg6EQuDmQeW2e8935zpSCKzbVO2ykkSL98Vra+rjqbKM
         dBsfga/8f/ilUop6/O9vwjj90uPaK9wIyAB71wlg8rKIfLyM7Sm5g7vJG9qtB4TaPrrU
         82jSx8TARZ2usIkjuYTNtXRKubbB2IFdcuFfE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728317436; x=1728922236;
        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=VFTyB/AkP4fpgABVjnSWtiP1n6mALu5+GNw6wcNlCr0=;
        b=Iv9pqBaZm2k0bRzZvGEVhHcRIPo7Fo8/xhSVmGAcCZgYIHDHQ+WkpTTv+WTq4mTMO2
         Nsr6f7b/qNiBUKXIMlpkbd8wm9z9s2Dz5fziclyHFWSj+9JjDsymWkJ2CZ+9BlidwNR3
         WH7vhV5zGNCmBjKzLea5mYxz00RCemJ3KZ75UU/HzqkpPdl7LTjEe5VlXF0eyx3SHowg
         Z14CfDy7aj2n6+eQCNcelgGM10rlZglETmzt4YgBi9xeZ8IUjAH0jOal0rGw1puiYrbm
         uc3kzETweoqLRFK98XCF8vCAjpBfv7JnGDSjDKYYZ7XKQNu/affBUeTS715Fgl/x11dD
         ns3g==
X-Forwarded-Encrypted: i=1; AJvYcCW6IFcHrIzfAdCS99YzPG0Z3VzKPzTEeaofwQPebvx0Zo6tVna9jeynRc/eBo0Q07oOVrNDstd0G+s=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzIQuDj4MfG4TQXk2X4dVYVrVwuf+5Sp5AxB8tiJrvRwcOthxbn
	QaXuXi2vyZ9hnIjStd9OGws3UcgwvEqey4QhRhfSsqs8O7VD5rURUYrShNATBIuB/osO95w0N/6
	l1is=
X-Google-Smtp-Source: AGHT+IF8JkSGx3x1oyL8MgNcKrnOgkHoV0syF+T83ExyM/iNJMd5WNm95KcSU+RgJrHxXNIbtffkPQ==
X-Received: by 2002:a05:651c:154a:b0:2fa:cfcc:6227 with SMTP id 38308e7fff4ca-2faf3c13beamr58111401fa.17.1728317435724;
        Mon, 07 Oct 2024 09:10:35 -0700 (PDT)
Message-ID: <a831b390-5136-40fd-8bc3-2b373ec0ec84@citrix.com>
Date: Mon, 7 Oct 2024 17:10:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] automation: use python-3.11 in Leap container
To: Olaf Hering <olaf@aepfle.de>, xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241007152518.1416-1-olaf@aepfle.de>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241007152518.1416-1-olaf@aepfle.de>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 4:25 pm, Olaf Hering wrote:
> python311 is available since Leap 15.4 as additional Python variant.
>
> Signed-off-by: Olaf Hering <olaf@aepfle.de>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

I'm tempted to take and deploy this immediately.  Leap is already not
building QEMU, and this patch doesn't change.


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 17:18:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 17:18:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812255.1224991 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxrMf-0002aQ-1U; Mon, 07 Oct 2024 17:17:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812255.1224991; Mon, 07 Oct 2024 17: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 1sxrMe-0002aJ-Uz; Mon, 07 Oct 2024 17:17:44 +0000
Received: by outflank-mailman (input) for mailman id 812255;
 Mon, 07 Oct 2024 17: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=arWC=RD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sxrMd-0002Zu-0b
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 17:17:43 +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 0ea4cc24-84d0-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 19:17:40 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso385427066b.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 10:17:40 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99501181a6sm198410266b.139.2024.10.07.10.17.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 10:17:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0ea4cc24-84d0-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728321460; x=1728926260; 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=pnYbBSFeug3l/M+BpSP9PM1bv9hDXAFVFf88pRbo3RY=;
        b=eY9kjghQatM4rcx/MNokhyVEE0UCq07kLg+Bi0e+tDTqF2DrqVYIg0P+feGm4cDssh
         mdCY6VylU5rsBcYc6gXtCjJUYwhdFP+oYQYmzc7ENmWFr3JYj56sNsFrneFwphuC5ymK
         8KZDI5nqDfOnXoIvYwtGKr5b+KER4GuRB5MRs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728321460; x=1728926260;
        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=pnYbBSFeug3l/M+BpSP9PM1bv9hDXAFVFf88pRbo3RY=;
        b=MgOtPIzz0xgQVl/HE+ZJYdKbmRddoNWoPFK+DPicy+ix4yh6MhHKVEsZ43YiloSapC
         q0FDEpjhy8piax48JLVV/VC1k6PNcWzbadt22D92BHYd4dcow48J/pMXSps3KkaR9AvS
         9Op+MCor1ggKke+B6a7SJng5BKpPnbGCuYeyA/UpI6x+s4H7yEqDXqvpB7DRSVoN6bZt
         rI0F7RhC1FdB9UmN/lCTtLBnsIR5bVBHJK93Q3KQ4QyM0bjM3pyMfIoohPKNsSCfjV5I
         WLubpzKkNLu9HWcUe1p8T+1xt46hAmW2Fylm4ez+T8Ey5ddxKkI8+CqUqGONLPX/4jQ+
         ZqPg==
X-Forwarded-Encrypted: i=1; AJvYcCV2KNe9bRs1cuynkn5DWR0ZwDIJ89m6ZElVsbmgcYUp6v7bjxE9PR2OCCL9u/7kR9pkd5jnJFNr98I=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzqLd77zgjkf/CeLHHKWLKYDTDKM3A9aKL0oyO53l/wDwOg81zE
	ELDHDus4N1BT4nLewUucVITEEunQjBDhyPA7c1BZpGGZf2fzo7POYSrJOaKRHAo=
X-Google-Smtp-Source: AGHT+IExTs0BhJWgd+zyZFZEi05/ok5Keasq0OSLCH5tLD6pVVmO6Mq29r3mZDyCFnVdY4AS/1VMsg==
X-Received: by 2002:a17:907:7288:b0:a86:7cac:f871 with SMTP id a640c23a62f3a-a991c01a735mr1528698466b.54.1728321459924;
        Mon, 07 Oct 2024 10:17:39 -0700 (PDT)
Message-ID: <c83b550f-9cba-4ae5-a887-6a962588df88@citrix.com>
Date: Mon, 7 Oct 2024 18:17:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/7] x86: Introduce x86_decode_lite()
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-2-andrew.cooper3@citrix.com>
 <82d6f3a3-b3bf-4e4b-bf5c-39f5b857897a@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <82d6f3a3-b3bf-4e4b-bf5c-39f5b857897a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 1:56 pm, Jan Beulich wrote:
> On 02.10.2024 17:27, Andrew Cooper wrote:
>> --- /dev/null
>> +++ b/xen/arch/x86/x86_emulate/decode-lite.c
>> @@ -0,0 +1,311 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#include "private.h"
>> +
>> +#define Imm8   (1 << 0)
>> +#define Imm    (1 << 1)
>> +#define Moffs  (1 << 2)
>> +#define Branch (1 << 5) /* ... that we care about */
>> +/*      ModRM  (1 << 6) */
>> +#define Known  (1 << 7)
>> +
>> +#define ALU_OPS                                 \
>> +    (Known|ModRM),                              \
>> +    (Known|ModRM),                              \
>> +    (Known|ModRM),                              \
>> +    (Known|ModRM),                              \
>> +    (Known|Imm8),                               \
>> +    (Known|Imm)
>> +
>> +static const uint8_t init_or_livepatch_const onebyte[256] = {
>> +    [0x00] = ALU_OPS, /* ADD */ [0x08] = ALU_OPS, /* OR  */
>> +    [0x10] = ALU_OPS, /* ADC */ [0x18] = ALU_OPS, /* SBB */
>> +    [0x20] = ALU_OPS, /* AND */ [0x28] = ALU_OPS, /* SUB */
>> +    [0x30] = ALU_OPS, /* XOR */ [0x38] = ALU_OPS, /* CMP */
>> +/*  [0x40 ... 0x4f] = REX prefixes */
> For these and other aspects further down, may I ask for a comment at the
> top of the file setting the scope for this new function (and its
> associated data) as being strictly 64-bit only? And perhaps even strictly
> covering only what Xen may legitimately use (largely excluding APX for
> the foreseeable future, i.e. until such time that we might decide to
> allow Xen itself to use APX throughout its code).
>
> Besides APX, with more immediate uses in mind, I wonder about e.g.
> BMI/BMI2 insns, which live outside the one/two-byte maps.

They're not needed yet, and it would require extra decode complexity.

> I would further appreciate if we could be consistent with the mentioning
> (or not) of prefixes: The REX ones here are the only ones that the table
> mentions right now. In fact I wonder whether a Prefix attribute wouldn't
> be nice to have, so you don't need to open-code all of them in the
> function itself.

The comment about REX prefixes is only here because you insisted on it.

But I really don't like double-explaining things.

>> +    [0x6c ... 0x6f] = (Known),             /* INS/OUTS */
>> +
>> +    [0x70 ... 0x7f] = (Known|Branch|Imm8), /* Jcc disp8 */
>> +    [0x80]          = (Known|ModRM|Imm8),  /* Grp1 */
>> +    [0x81]          = (Known|ModRM|Imm),   /* Grp1 */
>> +
>> +    [0x83]          = (Known|ModRM|Imm8),  /* Grp1 */
>> +    [0x84 ... 0x8e] = (Known|ModRM),       /* TEST/XCHG/MOV/MOV-SREG/LEA r/rm */
>> +
>> +    [0x90 ... 0x99] = (Known),             /* NOP/XCHG rAX/CLTQ/CQTO */
> Omitting PUSH (at 0x8f) is somewhat odd, considering that it's a pretty
> "normal" insn.

Except it's not.  It's the XOP prefix too, and would require extra
decode complexity.

>> +    [0xc6]          = (Known|ModRM|Imm8),  /* Grp11, Further ModRM decode */
>> +    [0xc7]          = (Known|ModRM|Imm),   /* Grp11, Further ModRM decode */
>> +
>> +    [0xcb ... 0xcc] = (Known),             /* LRET/INT3 */
>> +    [0xcd]          = (Known|Imm8),        /* INT $imm8 */
> No IRET, when you have things like e.g. ICEBP and CLTS?

The absence of IRET is intentional, because it can't be used safely. 
SYSRET/EXIT are excluded too for consistency.

IRET can be added if/when it is needed, and someone has figured out a
way of adjusting the exception table entry.

>> +};
>> +
>> +/*
>> + * Bare minimum x86 instruction decoder to parse the alternative replacement
>> + * instructions and locate the IP-relative references that may need updating.
>> + *
>> + * These are:
>> + *  - disp8/32 from near branches
>> + *  - RIP-relative memory references
>> + *
>> + * The following simplifications are used:
>> + *  - All code is 64bit, and the instruction stream is safe to read.
>> + *  - The 67 prefix is not implemented, so the address size is only 64bit.
> As to the earlier remark - maybe this part of the comment could simply
> move to the top of the file?

I really don't want to split the comment.  It needs to all live together.

Given this is a single-function file, I also don't see the need for this
comment to move away from here.  You can't interpret the decode tables
without reading the function.

>
>> + * Inputs:
>> + *  @ip  The position to start decoding from.
>> + *  @end End of the replacement block.  Exceeding this is considered an error.
>> + *
>> + * Returns: x86_decode_lite_t
>> + *  - On failure, length of 0.
>> + *  - On success, length > 0.  For rel_sz > 0, rel points at the relative
>> + *    field in the instruction stream.
>> + */
>> +x86_decode_lite_t init_or_livepatch x86_decode_lite(void *ip, void *end)
> Imo both pointers would be nice to be to-const.

In v1, you also identified why that wouldn't compile.

>
>> +{
>> +    void *start = ip, *rel = NULL;
>> +    unsigned int opc, rel_sz = 0;
>> +    uint8_t b, d, rex = 0, osize = 4;
>> +
>> +#define OPC_TWOBYTE (1 << 8)
>> +
>> +    /* Mutates IP, uses END. */
>> +#define FETCH(ty)                                       \
>> +    ({                                                  \
>> +        ty _val;                                        \
>> +                                                        \
>> +        if ( (ip + sizeof(ty)) > end )                  \
>> +            goto overrun;                               \
>> +        _val = *(ty *)ip;                               \
>> +        ip += sizeof(ty);                               \
>> +        _val;                                           \
>> +    })
>> +
>> +    for ( ;; ) /* Prefixes */
>> +    {
>> +        switch ( b = FETCH(uint8_t) )
>> +        {
>> +        case 0x26: /* ES override */
>> +        case 0x2e: /* CS override */
>> +        case 0x36: /* DS override */
>> +        case 0x3e: /* SS override */
>> +        case 0x64: /* FS override */
>> +        case 0x65: /* GS override */
> If you don't like the idea of a Prefix attribute

I don't like the idea of making this intentionally dissimilar to the
main decoder, just to safe a few lines of source code.

GCC optimises it into a bitmap anyway.

>  I wonder in how far we
> actually need all of the above, when you already ...
>
>> +        case 0xf0: /* LOCK */
>> +        case 0xf2: /* REPNE */
>> +        case 0xf3: /* REP */
>> +            break;
>> +
>> +        case 0x66: /* Operand size override */
>> +            osize = 2;
>> +            break;
>> +
>> +        /* case 0x67: Address size override, not implemented */
> ... deliberately leave of this one.

Excluding 67 is intentional because it a) has no business being used,
and b) adds a huge amount of decode complexity.

Whereas two of segment prefixes are already necessary to decode the
alternatives we have today.
>> +        case 0x40 ... 0x4f: /* REX */
>> +            rex = b;
>> +            continue;
>> +
>> +        default:
>> +            goto prefixes_done;
>> +        }
>> +        rex = 0; /* REX cancelled by subsequent legacy prefix. */
>> +    }
>> + prefixes_done:
>> +
>> +    if ( rex & 0x08 ) /* REX.W */
> Can you please use REX_W here?

Oh, it is available.  Ok.

>
>> +        osize = 8;
>> +
>> +    /* Fetch the main opcode byte(s) */
>> +    if ( b == 0x0f )
>> +    {
>> +        b = FETCH(uint8_t);
>> +        opc = OPC_TWOBYTE | b;
>> +
>> +        d = twobyte[b];
>> +    }
>> +    else
>> +    {
>> +        opc = b;
>> +        d = onebyte[b];
>> +    }
>> +
>> +    if ( unlikely(!(d & Known)) )
>> +        goto unknown;
>> +
>> +    if ( d & ModRM )
>> +    {
>> +        uint8_t modrm = FETCH(uint8_t);
>> +        uint8_t mod = modrm >> 6;
>> +        uint8_t reg = (modrm >> 3) & 7;
>> +        uint8_t rm = modrm & 7;
>> +
>> +        /* ModRM/SIB decode */
>> +        if ( mod == 0 && rm == 5 ) /* RIP relative */
>> +        {
>> +            rel = ip;
>> +            rel_sz = 4;
>> +            FETCH(uint32_t);
>> +        }
>> +        else if ( mod != 3 && rm == 4 ) /* SIB */
>> +        {
>> +            uint8_t sib = FETCH(uint8_t);
>> +            uint8_t base = sib & 7;
>> +
>> +            if ( mod == 0 && base == 5 )
>> +                goto disp32;
>> +        }
>> +
>> +        if ( mod == 1 ) /* disp8 */
>> +            FETCH(uint8_t);
>> +        else if ( mod == 2 ) /* disp32 */
>> +        {
>> +        disp32:
>> +            FETCH(uint32_t);
> The values aren't used, so the types don't matter overly much, yet int8_t
> and int32_t would be a more accurate representation of what's being
> fetched.

Why does that matter?  I'm skipping a number of bytes, not interpreting
the result.

>
>> +        }
>> +
>> +        /* ModRM based decode adjustements */
>> +        switch ( opc )
>> +        {
>> +        case 0xc7: /* Grp11 XBEGIN is a branch. */
>> +            if ( modrm == 0xf8 )
>> +                d |= Branch;
>> +            break;
>> +        case 0xf6: /* Grp3 TEST(s) have extra Imm8 */
>> +            if ( reg == 0 || reg == 1 )
>> +                d |= Imm8;
>> +            break;
>> +        case 0xf7: /* Grp3 TEST(s) have extra Imm */
>> +            if ( reg == 0 || reg == 1 )
>> +                d |= Imm;
>> +            break;
>> +        }
> In this switch() you don't distinguish 1- and 2-byte maps at all.

See OPC_TWOBYTE.  They are distinguished here.
>> +    }
>> +
>> +    if ( d & Branch )
>> +    {
>> +        /*
>> +         * We don't tolerate 66-prefixed call/jmp in alternatives.  Some are
>> +         * genuinely decoded differently between Intel and AMD CPUs.
>> +         *
>> +         * We also don't support APX instructions, so don't have to cope with
>> +         * JMPABS which is the first branch to have an 8-byte immediate.
>> +         */
>> +        if ( osize < 4 )
>> +            goto bad_osize;
>> +
>> +        rel = ip;
>> +        rel_sz = (d & Imm8) ? 1 : 4;
>> +    }
>> +
>> +    if ( d & (Imm | Imm8 | Moffs) )
>> +    {
>> +        if ( d & Imm8 )
>> +            osize = 1;
>> +        else if ( d & Moffs )
>> +            osize = 8;
>> +        else if ( osize == 8 && !(opc >= 0xb8 && opc <= 0xbf) )
> Again want to also take the opcode map into account, even if - by luck -
> this would work as is for now.
>
> Also could I talk you into converting the two comparisons into one, along
> the lines of "(opc | 7) != 0xbf"?

That's the kind of obfuscation which should be left to the compiler.

I know you think like that, but most others (including myself) do not.
>> --- a/xen/arch/x86/x86_emulate/private.h
>> +++ b/xen/arch/x86/x86_emulate/private.h
>> @@ -9,7 +9,9 @@
>>  #ifdef __XEN__
>>  
>>  # include <xen/bug.h>
>> +# include <xen/init.h>
>>  # include <xen/kernel.h>
>> +# include <xen/livepatch.h>
>>  # include <asm/endbr.h>
>>  # include <asm/msr-index.h>
>>  # include <asm/x86-vendors.h>
> It's only the new file that needs these - can we limit the dependencies
> to just that one by putting these new #include-s there?

Not if you want the userspace harness in patch 2 to compile.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 17:58:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 17:58:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812267.1225001 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxrzY-0001PE-3T; Mon, 07 Oct 2024 17:57:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812267.1225001; Mon, 07 Oct 2024 17:57: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 1sxrzY-0001P7-0m; Mon, 07 Oct 2024 17:57:56 +0000
Received: by outflank-mailman (input) for mailman id 812267;
 Mon, 07 Oct 2024 17:57: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxrzX-0001P1-66
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 17:57:55 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20631.outbound.protection.outlook.com
 [2a01:111:f403:2412::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ab927884-84d5-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 19:57:52 +0200 (CEST)
Received: from BYAPR08CA0013.namprd08.prod.outlook.com (2603:10b6:a03:100::26)
 by PH0PR12MB7885.namprd12.prod.outlook.com (2603:10b6:510:28f::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Mon, 7 Oct
 2024 17:57:48 +0000
Received: from CO1PEPF000075EF.namprd03.prod.outlook.com
 (2603:10b6:a03:100:cafe::20) by BYAPR08CA0013.outlook.office365.com
 (2603:10b6:a03:100::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.21 via Frontend
 Transport; Mon, 7 Oct 2024 17:57:47 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CO1PEPF000075EF.mail.protection.outlook.com (10.167.249.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 17:57:47 +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.39; Mon, 7 Oct
 2024 12:57:47 -0500
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.39; Mon, 7 Oct
 2024 12:57:46 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 12:57:46 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ab927884-84d5-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=V1BdmLSraNUSL51R9np04LUwIHK5L4PMLX7AIq29B/DoS4YXgPcKIp96mZ9rbcL5XVj76G1m04yNs0pr1Kizo7WgwZkTC5MIdVbUDI5Lw7LbFG6OLNOQ6FeWesfGe0aemGUU42Lmr4a2q70aprho6UupUVtGsyTacC0HH7/w1WzPXmtnReuyb5A8P5zE54+DuV4zIyTyhBSJZre6y1gTlsgOow/OzsgKOsaet+dMeTTyib9DITWmWZ7CTnUWVlRgo5WcNPXiK9LpSoQQjgltrIqWOfJY/z6fwosqmMB+oFhe7THkjgtauVt/5N53ZRPdDRKeYv5BRnCzEt3da69Grg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=kw0w3/mNYMUZ902W+Tw8z6DhauJJdrSRxtFWJbURlv0=;
 b=HpBguyLzRcTkeC8TM5ROA6zaT0Rrsj3tpUa1zMXNfqhYCr/jc4u5r8SVQ4bSYYLuoZiUdLzbE765/FkjouCCfhWOjYMoVwstrpYV6/2bPGr8yD/tyY9k6ajhVcZ/gJ5u7T3ago0WYa45L7OMsNjlJ3KvsbC0NJGI+XnBgWPizkIrHaeilI6YBCGSRJjcmGWlk8RjpqR3swE6REa84YpoKjkCQkBWVuXfj8RBQ0v6Fe2drYd3uKvsr3eNl52yWnx1ghiTNAW/kfH+RSzWpa4XGPlQEHv8EfUA6dXvMZcU2AOH5N0FmnM1TJR+KPclg1pFu+E0eqCJgKC1IuTLUhFPpA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=kw0w3/mNYMUZ902W+Tw8z6DhauJJdrSRxtFWJbURlv0=;
 b=YDaAfhiCsh6yyGZFD3P019U2jRD7SdSze6UvZjWJhdBZjJpD4n+GC+lHCHQlbU5Ru2IOEtti7w4WVKN3N6ZItzJOO6t7F+5fmcONBYmx05Oqtv10xVc8Zc+TBcee6aV8h+akqa36lLofxkhZmERoEsTMlXWONu+gM7HjmYba4gI=
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: <1e3d6e99-37df-4824-8702-3e8ae7a4923f@amd.com>
Date: Mon, 7 Oct 2024 13:57:45 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/44] x86/boot: move x86 boot module counting into a
 new boot_info struct
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: Christopher Clark <christopher.w.clark@gmail.com>,
	<stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-2-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-2-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000075EF:EE_|PH0PR12MB7885:EE_
X-MS-Office365-Filtering-Correlation-Id: e40447c0-d378-43aa-3e17-08dce6f98d93
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SjczcjJ1cW1EQ1FpZERqV29teCtiMDFjaFBkcUd5UFgxcWF6eCtBWFNJZVRu?=
 =?utf-8?B?b0hBa0tGMklDVmhCbm1CanJUMVVaL1dIRkQ4MzRaN3dBQXdpY3RoUDFYcVFK?=
 =?utf-8?B?Nnl6L000U0JFa1RadTVmQk9zMFNXN09BRFdYY3lrK05QM3lNdmw2KzZMMHdY?=
 =?utf-8?B?eXFkRGl0bVJNaWdDVGRUSzN1aDJldTh6RUpUaTVTWXhEbWlXYzFWNzdCbVBO?=
 =?utf-8?B?WmdIVWZ5MDRZdVZrd2F2ektGcWtOM1BzZTIrSmVwZlF1MklVaEhoQzVCcndv?=
 =?utf-8?B?RWk4OFdoSEUrcDZUSHo2ejllYlFHTVlIQWN0bjRxVDVEeU54bUNVTTNSMG5F?=
 =?utf-8?B?bnVSWlFDZDJXbHRSME5OVThrRjExY2Y0NVlOK3ViK0pjMzVZQVJaWTJ3YWsv?=
 =?utf-8?B?VW0wTkRhMnhIMkFON0FQTVkvYnF3WkpSQmZnRnBCNHRUZHlqRG1heGRudi96?=
 =?utf-8?B?bU9ScW1mZysvZm5JbEJYdisyTmpWUW85cmR2cnB2TzlPMGkzdGlCQlRHZ0Ri?=
 =?utf-8?B?KzQvemxUMktqanNqNjdhQ2tUZUpjcVNpdlZ3TWFBOUcwSVhvQVhNOTVzNWhY?=
 =?utf-8?B?RG8yYlRab3piajdYL2hPVDdnN0dIVXhJVTlGekk1bXVocmYvdjQ0cTRnUjhy?=
 =?utf-8?B?U0h5eVpTMXBKOUcrYldaVDFtWUUyYkloMVhmWGlYVXFIc1BkdGFPcUFhR3Ni?=
 =?utf-8?B?NjB0T0hTVnZVMUVsZENHQTZFRGl6djUyVkpaVFVMamUwL1gvckx2NGNiRHZ5?=
 =?utf-8?B?dmpXNzNuK1RMTThWbWZ5YkZPSDBMMGdzVFl6Q0lsMUtCQ0RlMmZEa05TR1p5?=
 =?utf-8?B?MjExMmtPclJXaDhwOEx6U2ZnUm1SWnl5Y2JiS1hvTUpIMU94Wm42NEhrSVF3?=
 =?utf-8?B?d1NIMEdmZExVWVRlUWtGRXRxRU5tSks5UlRRYlZnNlB5eWxoSnpITkRqNytr?=
 =?utf-8?B?Z3JVK1Z6NmxwaGowUjd4MUJvQ0prNjFuSGZXQWZDR1YwamlsVVVqS0FOUlRC?=
 =?utf-8?B?clpzNDlSNXF4YjJWWTliYk12M3YraHBPNzRkUUJXSG1YN0h3UVpOdTRzcWhy?=
 =?utf-8?B?Zy9pdFZsZFpMYjQ0ajUwL1pKa0pMV0RKd1F0aE9UNmlqSy8va3hkT3ZsNDNZ?=
 =?utf-8?B?ZFdEMERlWlZCRDdVcndnTUc4TlJGWU00QjhWdUVKMEVTODBuQ0hJWm9SNDRP?=
 =?utf-8?B?c3BCVHluMnpiSy9ZSU80a2x3d3lJSzNWV2JPUTZPUlE4VXQ5VXRNL0VrbTJk?=
 =?utf-8?B?ekY5TlRlN3RvcG85NUxjWHNZK0dkMk80MjltVkNkNmhNUEE3SWd1bU4wQXVF?=
 =?utf-8?B?anJGNHZkWHg5bWcxOThwVHNING0yMFVoM0NHU3grUWhMQ0FNOUF1ZENTZlJL?=
 =?utf-8?B?S3dzRWhaVXNobDd6dDdJZmQzME5uQTJSWnZEc2VuejVkSUlENHNSSVkwVG9Z?=
 =?utf-8?B?bSt2YkhjQnNwS2VrY0ZFQ1pFbTl3UUFVQ0IxZ1BJeVNDTVFvSm53Q3BXV0dq?=
 =?utf-8?B?SVBtd0J0QUhOYjNDdkRvRENrV3FHeHJlM1lxbEIxTGZDcE5iSTR1S3gxaVRs?=
 =?utf-8?B?aXlveTNmbzJZZSthRUdyODZNZGRPUFFXTjVnV3Bhd0NEUnQ4d0tPR3gwU3VH?=
 =?utf-8?B?bVQzK3pEWUdPek1VcXBUMWN2MjdLSDM1TitiRzhjTWZDbjY5R3VXQzV4bkNt?=
 =?utf-8?B?bHozZkpTc2pLZTEvcEtOQkZMZkY3Z3MvK0UvUE5lR1p2WXkzQTlqdVJOa3gw?=
 =?utf-8?B?cUpNbTRJTUxMTDNxT0s4MXNOclcwNElLZlp3bWgweDBmZUpUcklxWGlybmhj?=
 =?utf-8?Q?HQYETFsQj1AhOLcYzClqxVlj3vF+E4+9JdI64=3D?=
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:(13230040)(82310400026)(1800799024)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 17:57:47.4687
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e40447c0-d378-43aa-3e17-08dce6f98d93
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:
	CO1PEPF000075EF.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7885

On 2024-10-06 17:49, Daniel P. Smith wrote:
> From: Christopher Clark <christopher.w.clark@gmail.com>
> 
> An initial step towards a non-multiboot internal representation of boot
> modules for common code, starting with x86 setup and converting the fields
> that are accessed for the startup calculations.
> 
> Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
> structure initially containing a count of the number of boot modules.
> 
> No functional change intended.
> 
> Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootinfo.h | 29 +++++++++++++
>   xen/arch/x86/include/asm/setup.h    |  2 +
>   xen/arch/x86/setup.c                | 64 ++++++++++++++++++-----------
>   3 files changed, 71 insertions(+), 24 deletions(-)
>   create mode 100644 xen/arch/x86/include/asm/bootinfo.h
> 
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> new file mode 100644
> index 000000000000..a649500ee3a2
> --- /dev/null
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -0,0 +1,29 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
> + * Copyright (c) 2024 Apertus Solutions, LLC
> + * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
> + */
> +
> +#ifndef __XEN_X86_BOOTINFO_H__
> +#define __XEN_X86_BOOTINFO_H__

I haven't been following closely, but I think if we follow Frediano's 
naming scheme, it would be:
ASM__X86__BOOTINFO_H

With that (or whatever it should be),
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

> +
> +/*
> + * Xen internal representation of information provided by the
> + * bootloader/environment, or derived from the information.
> + */

I guess fine for now.  Should probably be expanded when it starts 
containing Hyperlaunch domain configs.

> +struct boot_info {
> +    unsigned int nr_modules;
> +};
> +
> +#endif /* __XEN_X86_BOOTINFO_H__ */

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 17:59:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 17:59:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812273.1225011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxs0c-0001vd-By; Mon, 07 Oct 2024 17:59:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812273.1225011; Mon, 07 Oct 2024 17: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 1sxs0c-0001vW-9I; Mon, 07 Oct 2024 17:59:02 +0000
Received: by outflank-mailman (input) for mailman id 812273;
 Mon, 07 Oct 2024 17:59: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxs0b-0001uV-GD
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 17:59:01 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20607.outbound.protection.outlook.com
 [2a01:111:f403:2412::607])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d3d61516-84d5-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 19:59:00 +0200 (CEST)
Received: from BY3PR10CA0003.namprd10.prod.outlook.com (2603:10b6:a03:255::8)
 by SA0PR12MB7001.namprd12.prod.outlook.com (2603:10b6:806:2c0::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 17:58:56 +0000
Received: from CO1PEPF000042AB.namprd03.prod.outlook.com
 (2603:10b6:a03:255:cafe::1f) by BY3PR10CA0003.outlook.office365.com
 (2603:10b6:a03:255::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 17:58:53 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000042AB.mail.protection.outlook.com (10.167.243.40) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 17:58:53 +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.39; Mon, 7 Oct
 2024 12:58:52 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 12:58:52 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d3d61516-84d5-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=UgDnz3wA6edyi3g3JLKJcxN88j3C3WQyHySJOZ2hSwYKhq3ZPAkw2iAK04OM5h6/Ooi3AF3mItpDCS41FtQVlJC55TEDF8YwJuQMtarAkMjrcK5gaOBpAw4UiRvY0EswOR2dZr+ayyAL4PS3U1WPt16Skh8MG7VGDlQ2u8ZrRy0mgli6izqgnXJ5cgqdPgW0JuOVUc8lg/5ga85+XbVwSotbHks2PTSMHGtLYRTWZQwKUfFxH7TLTMnl4ISxYkzOZc+ImayTava4HKK6KGtbvdrH+S0oQRiQWycY8QR2U71LshAOXDOgxtPr9XmNN4zYx0x/9qx2864/uqaCsC0H2A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=uv+L8aNm3U+yVokkrRUJQwY1q1ikJirwZcpw4sLl2TA=;
 b=NfIcm5YhhzyIywfPGwzsOmlRBevaaQM3tMKbhUxzWXAFfD2uXD4GNFaThdWRRjyiVUkXhhCUVZJWgrbKPql9Ht3H/nuBnjZ8HAddRRVYolIfbqyaKzeaT8l+WgcDjbuiBFnFATqyNwTCaV89VgiCgRN8lTMBos9J22edFTtOeDnE6OZapZBmPxa0SQhDO1iumB63hRpzMPrskJQmbAe0/dbDCpd4538d22YBRXQyrIex5GtGeOcVPfqgMf65nD2LtPoxX8Tw/dYBOvLQQR5YMTBwSvp1VldT60ianZloIWoaxsOSk8uyjKR4l//STTke89UxMKQJT8RyOT6jp7apEg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=uv+L8aNm3U+yVokkrRUJQwY1q1ikJirwZcpw4sLl2TA=;
 b=rmikQTjzCbhPbTT/e26LamUCZzAC6gWNyomacLgFqvoMQKv2C8cqQo4MHFy0chdtpD7tjB98RKw5L3lHU2PYlPib3mV//W/rVLTgTE6YtxUu4C01lSRvdZf0xxAAc5PyN//lvqQwVVaXvw5okuKCbOLtaKYZknV7ZFWzfdBLbp4=
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: <7e9fcf80-7951-4111-92cf-b59db62aabad@amd.com>
Date: Mon, 7 Oct 2024 13:58:46 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/44] x86/boot: move boot loader name to boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-3-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-3-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000042AB:EE_|SA0PR12MB7001:EE_
X-MS-Office365-Filtering-Correlation-Id: de1d6ab2-ac1c-46b4-32d6-08dce6f9b4ff
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SlBxcDhWZmlCSWlhVjlDbWEyM3Y2VG52eGhKK0JHbE9Nb09BZURiYUhJUHlm?=
 =?utf-8?B?UWd5NURoREduOUlEUHhYUWIyNUlUTnpCZnlySEVPbUhSUmZ2dzNZSi9aVUVT?=
 =?utf-8?B?aXdhNHNqSzZiSzFqOTRpT05tMzJoS09PT1dsRWRwaVhsSEM2VXFQMGFPWFBK?=
 =?utf-8?B?bVdybzk5dnU1VHJ1NkpPajk3V1ZrUWtEcW9kMXBCaVdHbzhQL0FWclMvekhk?=
 =?utf-8?B?Ny9hUmozVFJNZElFN1ZqUjVEbzFWT1VOaE1nM0k3QXRicmdNN2dRODh3SzJ1?=
 =?utf-8?B?ZlBPNjY1eVhlcWVqc0IyMzlTMmF5c1BIdzNBSFV5ZXNKL1ZBZHJJY2VNNmp0?=
 =?utf-8?B?aUxsTzJWNEdWRFk4RGxQeHRKdVk5TnhPa3ZuM3J5K2ExUHJMeEhHcTZVNnJ0?=
 =?utf-8?B?R2U3RTlwNFBQa1p3Z1RMSnpBWjRBbytxeWptMFc1ZGNXZjhsRUM4Z1RhR3Ja?=
 =?utf-8?B?a3BwYTdlNFJWODlPL2FQWElLU29Ed0padGZpRmtmVXo1eDRLdkV1ZS9MUk9a?=
 =?utf-8?B?Q1pGMFVxb0NxeDF5eEJ2Q25PM1lVcXExdUlSR1pxcFVQSVNLRk0ranRSMnhw?=
 =?utf-8?B?ekZ0M3FCZ0xHRUFCYll4QUV3VHN3MDU4dmhCM29nampmcyt1N0tpbU92bVdp?=
 =?utf-8?B?UjZnYm9wVUhKVFZlN3ZhNFBDd0VwK1cxbERaeERjT3ltNjkwZUZLYklCSlk0?=
 =?utf-8?B?MVltRjl6NlFRZzBreDllQklGRWFQTHJ3TjRxR2UvMkp2dzcrRElWMVhsOXVU?=
 =?utf-8?B?TzVtRHBTeVZoWUtleklkQzlmTmVwQ1N5RlI1ZDFXS05jMzlJMUxEVkdXNi8w?=
 =?utf-8?B?N0FLZjFRKzgrVDM2UzJKODhZUVp4dUlxMjdLR01sR0xieTZrejJVUTAwaVdW?=
 =?utf-8?B?U25vZXcxSk5ycmp6aXFPNExsb0crQ21sdDN0eWFBUDR1cEpUdXZvb3RyalRw?=
 =?utf-8?B?UGdZUDBJNWF2MXZjT2ZVNDFRK0FVREt3MUVsNHkzWXlDdExmWDA0TzUyS0Vr?=
 =?utf-8?B?TjdKL3pUVkwybEVBaVpKT1FiV3l2Rk56YjlvclMyR1RWWVY0NnVIaW85VTFw?=
 =?utf-8?B?MXBaVGN6ZXhwZVVmdS9oMGk5enUxNGN2Nnp5Y0k3Q3ZqWXgxZHkvTHRPaHla?=
 =?utf-8?B?ZjVTYWQyM2tzcU1MbENDS1ViUS9WUXlhTkdoTXpKWVMreFFnOXREcm9hNmtr?=
 =?utf-8?B?WVlEWkpDbmFvbDJrZWg2N0tMZW1sNnlQRlZxUnRaQ2YvUlhabkVUNGJvZ3Jh?=
 =?utf-8?B?WlJWQktuUUZQQXRPakZQZUJEZ2ZzUkEvb0ZUYnRVc0thcDFTSFhmcWtiUVBH?=
 =?utf-8?B?TlJLZGgyWXZSbWJCb2JkUzBhZEppSENkNisyZ1JzWjN2bXFKM0h2UVZERmZB?=
 =?utf-8?B?M1lSRjFoaWxva0F5MkFaVVpmdXg5M2lTZ1dhc0t2SG1FUzdFWUR4OXhrb3RQ?=
 =?utf-8?B?eDRaQmFYaUIrOHI3d215aThlaW1NZStCRnRaRm1oaUpCckZVclptOUoxaHBM?=
 =?utf-8?B?QnN2R0FUVkY1dmwxdmx2d3lDY0MyRjM0c1REc0VVRWRrVGpHNlNsZ3hkUDZx?=
 =?utf-8?B?WHV6cWxyanB3UWhEVjFVMHRrWmhtWXNMbzdLNkhlTnhsTFRBVVFjOFB5cmRS?=
 =?utf-8?B?TE1rQkpRWW9qd0djVTlVL0Z0N2RoNGEzdktuUEJjOXFxVXZmamw1MGY2enRV?=
 =?utf-8?B?UndUWU1VS3Z6RkIxbUEvUXRWRWlqNlJtRWZCQVgxUlUySmp5S2ZHWDZWdU5l?=
 =?utf-8?B?aTFKR2dGM1RxdGp6K1hUNXpMWmNveG5NOGQ5ZDRjTFk4TkcrQWJjcEIwUjJt?=
 =?utf-8?B?a053SS9LZ0lGVWZobkErTkt4eDh4ZXZJWVpEYWlOby90NnVuNVFTZ0ozUDM4?=
 =?utf-8?Q?I8m8eGF+9+oCz?=
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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 17:58:53.5605
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: de1d6ab2-ac1c-46b4-32d6-08dce6f9b4ff
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:
	CO1PEPF000042AB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB7001

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Transition the incoming boot loader name to be held in struct boot_info.
> 
> No functional change intended.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 18:09:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 18:09:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812296.1225021 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxsAY-0007El-8J; Mon, 07 Oct 2024 18:09:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812296.1225021; Mon, 07 Oct 2024 18:09: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 1sxsAY-0007Ee-48; Mon, 07 Oct 2024 18:09:18 +0000
Received: by outflank-mailman (input) for mailman id 812296;
 Mon, 07 Oct 2024 18:09: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxsAW-0007DD-Ut
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 18:09:16 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20631.outbound.protection.outlook.com
 [2a01:111:f403:2417::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 42427237-84d7-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 20:09:14 +0200 (CEST)
Received: from CH0PR03CA0264.namprd03.prod.outlook.com (2603:10b6:610:e5::29)
 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.8026.22; Mon, 7 Oct
 2024 18:09:10 +0000
Received: from CH2PEPF0000009A.namprd02.prod.outlook.com
 (2603:10b6:610:e5:cafe::74) by CH0PR03CA0264.outlook.office365.com
 (2603:10b6:610:e5::29) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.21 via Frontend
 Transport; Mon, 7 Oct 2024 18:09:10 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 18:09: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.39; Mon, 7 Oct
 2024 13:09:09 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 13:09:08 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42427237-84d7-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qnRAXJ+i/iG9axzbSJiTUFxDy0YSPE53V6yS8hX7uCnjoam84Zy+umxu6mhdDdHzyl4x7i03Zoqdcl/LAydcuo76gBuUGfKG4x/aJK5zLnC1PbdQAq1+TeS0jXL/QyU6C4mgySX2NDkJy4i/v4fvN6pecr7W3zq0tsGeV3U4IwX1cidIvT3+fL25uCaGGeJrpd8bMvz2Vsfht2OyKBIg/3d1SJdd8lU4WLrPzvVnYSPeSCF8DmuWUm0JyVLDgkOZlPn29qrXyLK2d8TA6wfp6BdYUE+hc2tNrfWzTNCBpKhfitxyQQH+DX2sJTGW2UTdyfTjnCk1RcDnCtkPhXiSPA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=DHQUuRuCSKQUILuLwdP1XnGT51mR8amYHJG7lPGd90I=;
 b=Y7FLm0ZgfjwV9P+OJufMl08XekaRWYn5mkT4mOd3GHNUDU6J/U2DQvW3gZTvfzmrWnXBSj0ZuoK2m3YngY7Sbt9B9HWA7JY9Rot8wYabDJ5X+HHFEf2I0/AxZW5UKDw8rPgzU/nq5SFydTsBd5j9TChrT90ODSI+ELUEyskqU4rkRK/LpgNPjVBWhtWuOt7oK6+FNbnFlU0oMhEF7qcrvypbMvnBg13NEMsekqroJrW7wJ5dwXPoriaxIZvCQ6mOQbiWjGblQBON7TsXH2UlSjcf/3hun8/mYsiLOCigwRHWEcQ21D83jsmFdlL4IKpiuAmNUuP0d2DtAdzgQv/KOw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=DHQUuRuCSKQUILuLwdP1XnGT51mR8amYHJG7lPGd90I=;
 b=uCTDgXkg+rlVxbIR2F1GyCphodhmUgck+ptDuAZf850KrxLf+L491rTB0I9vJho3yS/tApA5AEHItl+fRLBePFu1lV5HmDJx+i0+yjzmBo8UCJmWJHeQmtcTK4BlW8+YfZlPhDHaMACr8rtaWOitkzg+sSbRk72zY9lxc3p7bO8=
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: <304c8c42-cfb7-4b0b-aaa7-8c673f9f2fa6@amd.com>
Date: Mon, 7 Oct 2024 14:09:08 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 03/44] x86/boot: move cmdline to boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-4-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-4-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF0000009A:EE_|SJ2PR12MB7797:EE_
X-MS-Office365-Filtering-Correlation-Id: f9bd53ae-b61a-41dc-f33e-08dce6fb2467
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RjVKTStESUlCd1B6Rlo2T09oL1U4NmJCUmVVR0tKUGpDSmp3WTJlYzEyZVNV?=
 =?utf-8?B?aHBxdnh3N0V1MG0wVnd1ekR4bSsrUzhOa0VZTUJ2UTlFT2FVSGFYN2c2cnhq?=
 =?utf-8?B?TkY4cWxGdTB5MlBLdVJ6Z280WFh2bWlnVGFaMm5XUThLRFFpdkptdm9ablpm?=
 =?utf-8?B?bFdBdkUyQVBXUXNsUjV3NG9rcmM0akpucUREVmk0RjdmekQxUGVQMGNNNTg4?=
 =?utf-8?B?SjRvRGdCRXR1V3ZmWEd0TG1zSzFFL1laK2pPNmZtT3FReVNkdTRKWW81bE4y?=
 =?utf-8?B?MG1oY2xLN2ZiVFU5Q3FBZkxQazlEdTZ1ZEdSMFpiOSt1YWNOb0x4ejlRLzJz?=
 =?utf-8?B?S0lnaDQwdGhxZW1vZXdKL0lYTHBORWpuY0JnRlpxVklHVUVtWkVwWkxMbWxm?=
 =?utf-8?B?ZDJmbitKMUQ0VlBBT3pUdWVnUW8vTVB4TUxjUWtCVWh2d1Q5ZkxydGQ2SUYr?=
 =?utf-8?B?N01oVWd6UDZVM0YvMjk1d0l5TFlXZGdsZW1BTmpObDZxUEh5MkxsRFVRYkpZ?=
 =?utf-8?B?OFFMbUREMUkzcHFmSVYrWVpQWWU5aE1VNXpXZnJDaU1nUndhbzlYSUh4S0hl?=
 =?utf-8?B?UTNSQVRyMk5rRi9Ccjh4ektabGZMdnY2cjlKRXgvVEUrZmQ2Mm5HR3ZwN052?=
 =?utf-8?B?UllDUUM3Z1BnQ3YvSHU2TnEvME1XUnFlZSs3YklzR3lEUStsTnMxMUFqVXNP?=
 =?utf-8?B?TVhiM1NhU0w5LzZTQXBJUTh2bVVNTTFKc3RQcXgzSk1GTUFjQXdzYk5pQXpU?=
 =?utf-8?B?YURGKzl2azExek9ORzdEMEVVRm0wZVR6T3RpNmdlZmhwMUZMZForb1RZS2RR?=
 =?utf-8?B?K0piVUFiYUlObU1GUzgxOFUxbUxKYlRrUzB1c2gzRVFac1VCQVYvdWhzc0Jj?=
 =?utf-8?B?c250SnEzYk5TVFUzMDE4YWRsNWYxN3I1R2pTbmxwVHRtWGE0WU8wZVNUR3Zh?=
 =?utf-8?B?OXduUlVsWTVXc0h5MGo2NE9aZStIQzl4cTIyR21pd1N4U3hxRWtMRFhYVVoz?=
 =?utf-8?B?dnhEYUwwdld5VUxUVUo2V255ZGRFV2FuQ0lCc3NsZ1pSNkNLdTUzMjFSSHVx?=
 =?utf-8?B?UGhlL0Q3dWFsd2ZsR0ZaTHhSNVNzK21VejFQKzFhR3lQUnpZTHo2Ry8rVUND?=
 =?utf-8?B?NWhlbVhMaWg3UjlpbWdNS0N6bWhQRmp3TGdtbFVhSGRZZHBPUHA0NG44VHVR?=
 =?utf-8?B?c3JLMkY0dHlKNkNTdDVSeGU0aGIwckhxZERBdFA3d1BxT1NTdHJ2NkF2K000?=
 =?utf-8?B?N2JJTjBFQWxIZElaeUVWdFNxekNBNGVLeEwrdndSVEJtU3pJOUFGSzNwUU95?=
 =?utf-8?B?NzBmUFpvL0hxRUdvaXFuT1l5OVlBYVpXWVFVYWNTbXRlZjJqWGtqV2VOVEFZ?=
 =?utf-8?B?Vklwd09HZncyZS95Q0loVHc3RUZkZHcvOVdYbDltNkVPMUl6bEhYeHBJR3F3?=
 =?utf-8?B?SjZIUEdIT3pDM2x4aThWUld4em9od1BXdFA2b3R5dW1qMGV0a2xQMWppSkUx?=
 =?utf-8?B?QnJnZW1oM2FLV015czg0NFZTTWlPOUprN2E5K0JVUllEeUlFVncwY0lzaXpv?=
 =?utf-8?B?bVE0WFl5Ui9BTlBaYjRhcko3ZTZKaC9UM3J1RHNxM0Zoc1lGWVM5cVRTRWhV?=
 =?utf-8?B?cFArNERPQXN3dG01QnRlN2lDdVdPQWNSdGp0dm9tVWNQd21NSHh2VkhxVWo0?=
 =?utf-8?B?cnJlWXFpU1lTSy9GZDVNVEltTVM2N2VGSTNWZlNWc1pIbHkzVytQL0ZGQVZy?=
 =?utf-8?B?MkFOU1VQbE96anpod3V3R0RQV1FDdzMrTVZ0U05jRVdNMVpRQmF6aWJabGt2?=
 =?utf-8?B?MWwybVJOOGtLTERiOXlVbVhJZTdYcmZRL1g1a2gxWkx5a29vN3dmS01odDdo?=
 =?utf-8?Q?2OtXQX/5FBBB3?=
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:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 18:09:10.0958
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f9bd53ae-b61a-41dc-f33e-08dce6fb2467
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:
	CH2PEPF0000009A.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7797

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Transition Xen's command line to being held in struct boot_info.
> 
> No functional change intended.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---

>   #endif /* __XEN_X86_BOOTINFO_H__ */
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index aafc098ca268..0921f296075f 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -274,6 +274,8 @@ static int __init cf_check parse_acpi_param(const char *s)
>   }
>   custom_param("acpi", parse_acpi_param);
>   
> +static const char *cmdline_cook(const char *p, const char *loader_name);

Is there a reason not to move cmdline_cook() (and loader_is_grub2()) 
earlier to avoid this forward declaration?

Everything else looks okay.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 18:10:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 18:10:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812308.1225031 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxsBt-0001al-KU; Mon, 07 Oct 2024 18:10:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812308.1225031; Mon, 07 Oct 2024 18:10: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 1sxsBt-0001ae-HX; Mon, 07 Oct 2024 18:10:41 +0000
Received: by outflank-mailman (input) for mailman id 812308;
 Mon, 07 Oct 2024 18:10: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxsBs-00082f-7j
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 18:10:40 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20603.outbound.protection.outlook.com
 [2a01:111:f403:2408::603])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 74b695fc-84d7-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 20:10:39 +0200 (CEST)
Received: from CH0PR03CA0363.namprd03.prod.outlook.com (2603:10b6:610:119::32)
 by SJ0PR12MB6967.namprd12.prod.outlook.com (2603:10b6:a03:44b::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Mon, 7 Oct
 2024 18:10:34 +0000
Received: from CH2PEPF000000A0.namprd02.prod.outlook.com
 (2603:10b6:610:119:cafe::a7) by CH0PR03CA0363.outlook.office365.com
 (2603:10b6:610:119::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 18:10:34 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH2PEPF000000A0.mail.protection.outlook.com (10.167.244.26) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 18:10:34 +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.39; Mon, 7 Oct
 2024 13:10:33 -0500
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.39; Mon, 7 Oct
 2024 13:10:32 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 13:10:32 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74b695fc-84d7-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=VuVzakuSn4hu2oZIXOWzHklCBrYJVAlMwsX11qqMLmMC1cdolYz1BU11/opuPKvD8gKweJV/Sa1GPlVg1EcAk3XcVsrxdb6XLjKTlPPuHtYOVxh6H35BXVCgVRiqLHNb8kAb7HOLdRNODeJlO97C/9mXWEon94okVzQ8VXLZ85b219IPRrUTm1fGbY0okmhV2DbetOMx1bjR4mpds6ej/rJ/ASjpgylbfkL/Q6wbOUjj4amp/Bjb39hU/XYJ6iTHg9v6B90CeU1qhy7QcfFXFxRINAksx8OCM5tYYmlki19iwB804KfGzANWJx6Br+0tTIs5HDiHh+Ar3PTRKbR/tw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=smoP3l9YB8H0TfxpKvwRtrRrABEM9KvXZ7q4KOvTKtU=;
 b=k1sUwqRY5BL6itbV/PEraBKhAacecXf0O/xxcSdUnf2q+gmZUuOqMBFUMSBJiK2jRrp0EckRuWYbODoH8LxIgd5JQVEIUJs4JLdStTiP0oxMbfM1Egqc7o0LuBzu/2D3imiqrDrrfp8sQr3hRvgbI9VplorixZknPxkdH+ej/Cj1xLq8BQT1Ld99DGebD/eBzaEWaqD0XBbw5vKFrRnPUiV/vCQXuuONRerDLdICXVP2pA2xlygW+KLkeQgB7SLd1nrACznhKvvpHbnCJDUHF5V622cuuflrPXMGvU58uWG3dcgd0pMlVNP5tOhK699ccfl2amy5xCJa1GI4r+UABQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=smoP3l9YB8H0TfxpKvwRtrRrABEM9KvXZ7q4KOvTKtU=;
 b=ykm4MkM5N2Ia0SSNoQTo9XHgh2iyI2P3IhRcfiCccYWLDCIvjqey8kjBxCLEFkejdqzi/KyT/AOf5ondO3bsqDpUwOm58NJ+zRAFN113Y8i3Se9PCt4ukP7+lN48C277zWcwLtJBv4OC28ing70ly6Pje5c9eqU1UPcaNuc/FsE=
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: <f95ffdf0-be7a-429f-962a-cf53123f875b@amd.com>
Date: Mon, 7 Oct 2024 14:10:32 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/44] x86/boot: move mmap info to boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-5-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-5-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF000000A0:EE_|SJ0PR12MB6967:EE_
X-MS-Office365-Filtering-Correlation-Id: ec10083f-4e36-4c59-be83-08dce6fb5689
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZW91N1JJWE0xeGdiUmFpVzBvMU5KNXhHd295dW1rZDY3VEdXaGVUVDc2WUE3?=
 =?utf-8?B?RFhhMEVJRWVuZyt6RjFOODBLYnVyR1QvVXdnUXhJVnFaZTBlTlBtZmJma1hY?=
 =?utf-8?B?NElKa0srWjlQcnRUc3ZCQUJDdTJKVkxjRXFpREd0WHpPUllCOVFXN1lRZEpt?=
 =?utf-8?B?eE9mQzU5WUlaSG1TeFNnMjFUTHN6alZEOU9PSzJvbWd0QTlyVDFydnZqR3dt?=
 =?utf-8?B?RUZsWEgyWDZjNkp6WHEwSkZJdi9KOUlrN2VqbHZxbmowdlVkdVhIc2h5bFVS?=
 =?utf-8?B?K2dVMVdFdU5XcDFYSjVaZGs5L0Q3WmZ0M0V3ZlF1VW9DbUZMaDk2UC9KYmt4?=
 =?utf-8?B?c3MwMm1ZdVg5TUJCbTVJeVY3eXE3bi9qdk1ZTkZzMUkzemhqcXJZT21rVy9P?=
 =?utf-8?B?WW5GNGwxMVdXU3FoL0lGK0V4L2tuVnh2U2RhOHFKa1Y5ODZYMjllVkpMUTJw?=
 =?utf-8?B?cnlGTnZucmcreW5vK2Rpa3NuR1JpMnE1SVVkd3BteTNGZTREVGF5ZXBMVGVP?=
 =?utf-8?B?N3cyQU9xT0txK1U2cEpiRk9OQnoyT0ZBV2FMWkZnS1hYdU5zNUVEUmo4VlB3?=
 =?utf-8?B?TmYwRGp2SjRrR1RDKzdidTJtT1RvNlpSbnpYMTZQTCswZVlQZXIyVlViUmlP?=
 =?utf-8?B?b3BiNDRkaXJIVmxEWE55NE5xVWpYMzk5RFhlM2pwOGlDUXVGTnFkY24rMHdE?=
 =?utf-8?B?aEllUkpnekdEaGJNMjFOV3FUVVRGV1o2OURZN1JnTHpTbjFTbUkrdk4rY3Nq?=
 =?utf-8?B?UTl0aFNZTUwvRHdvdDArN0M1ZjB1K1Vxd2xzWWVEaXZSTGNBeGsweG1FcURj?=
 =?utf-8?B?RjU4ME5LR25JMzkwQ0R2WTFmb1hHWms3d2U5NHcrTjAybHc1dGdJWFEvWlkv?=
 =?utf-8?B?T2VrS2U2VlNZVjZyUjdZTFlRMUIyT2QraTZtckxHUk5YWUxXOUFuSmN4ZTc1?=
 =?utf-8?B?bUY1eHhydFFXMjVtSVFMRjlYVFAybjYxUmt5VUFkT05KSWw1ajN6bGNQT0ZL?=
 =?utf-8?B?ek5ZZEpVMHllc3RlK2MvcFd5TDNHVEQ5bEk3TDUxNkJtZVpJZEhRYVJhbUdE?=
 =?utf-8?B?RXpiR0hweEZYZnFLaTA3MVRxQVhwVW0vMmpYNWE5UXB6OGtqLzNOUEdqN0dy?=
 =?utf-8?B?Vm5OSDNoWHpJRGRBcFBuK1grcDBCbnBHME84YmtFcXZMS1UzRlN6THJZaDNo?=
 =?utf-8?B?TytuRzZ1NmdrS3Z5SytSZUVXdVREZ1Y0TlIzb2I4VVJUa0p5NXJ2V1ZYZDhx?=
 =?utf-8?B?dm5PN1lhV2pZNGdldFBneDVQbVU5TzBFa29YekY0UFpLU2psM1dJYy9VRGhl?=
 =?utf-8?B?bi9CcmxwbXJBbmxEclJuRWJ6aENIYjEvdXhodHNCT0RnZVFTR20zbVdlaFJF?=
 =?utf-8?B?UVphaUN1MEhlTE9qalFSWE1EUWdMQk1FQXM4VFA5ZTFMNVF4RWdPaEtGdjVY?=
 =?utf-8?B?YXlBWm9qS2l6cHlSUmRsTEpzMVZaWWN1ZWVWRkVMOWczYTZPTmFEckUyc2xR?=
 =?utf-8?B?U2g1NjMySzdydUVnWE41T051TFdpMEhCNkNvYzdlVjJZN0V5VHYrSjlLUCtj?=
 =?utf-8?B?UGVCZDJzMExoOWZrRmcyb0tSTWhaUDNCdHZPSkhzeHRnTHc4cnNQY2tsNDNR?=
 =?utf-8?B?ZGlqZkFRNkFGelNOQnBWZ0VrbXFWandnTFZ0SFZVTENkMWpJSHdIeWRCMUh4?=
 =?utf-8?B?dzFBcUlqS3NOUzh4RXVncWFUTEVUV2tqYi9BWjNaRVlBYW11eXFGTzNad0dV?=
 =?utf-8?B?RnB6cXF3eVh2OEZjUVRuSDZkZm8rQy92Si9LMHY3L0Z2OU55eGhJa0dOdjAx?=
 =?utf-8?B?NGFnT3RhY2V6UmliMWQwWTViQWdMckd0aE00enF1T2V0S0JnYVZzRDJXdW1Z?=
 =?utf-8?Q?o1gVC+H4aeXWS?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 18:10:34.1409
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ec10083f-4e36-4c59-be83-08dce6fb5689
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:
	CH2PEPF000000A0.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6967

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Transition the memory map info to be held in struct boot_info.
> 
> No functional change intended.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 18:26:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 18:26:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812317.1225041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxsR8-0000Nm-Vh; Mon, 07 Oct 2024 18:26:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812317.1225041; Mon, 07 Oct 2024 18:26: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 1sxsR8-0000Nf-Rj; Mon, 07 Oct 2024 18:26:26 +0000
Received: by outflank-mailman (input) for mailman id 812317;
 Mon, 07 Oct 2024 18: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=59Io=RD=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sxsR8-0008UV-5j
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 18:26:26 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2062e.outbound.protection.outlook.com
 [2a01:111:f403:2417::62e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a5c87551-84d9-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 20:26:23 +0200 (CEST)
Received: from BN9PR03CA0586.namprd03.prod.outlook.com (2603:10b6:408:10d::21)
 by BY5PR12MB4260.namprd12.prod.outlook.com (2603:10b6:a03:206::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Mon, 7 Oct
 2024 18:26:08 +0000
Received: from MN1PEPF0000F0E1.namprd04.prod.outlook.com
 (2603:10b6:408:10d:cafe::f5) by BN9PR03CA0586.outlook.office365.com
 (2603:10b6:408:10d::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 18:26:08 +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.8048.13 via Frontend Transport; Mon, 7 Oct 2024 18:26: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.39; Mon, 7 Oct
 2024 13:26:07 -0500
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.39 via
 Frontend Transport; Mon, 7 Oct 2024 13:26:06 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5c87551-84d9-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hds3VkW6Ny1E8agi2EIasJT5mYbGqGsd3iy0c9U29DH3tUJjIPItzqcBuYioLdxmk8QJ0kqnMglgyl2evs5WJuUaad3UueIzryK4zIpni8C3kmgRNYJFMX3bnJ4dHHDApfxOhHGIYdgVOAtWK5Jm9qMym7sYt9coMJzFrh+Pfllm5JrEKIduvdx34yXajg0OWwdulgSjwnMc84KSBTgPGdcGCbRq0+aAPNBWlL1piER6uXbjsW3sbUADLLuGO7a+E+liI3BwFxlzIHOAI+ZkIbr6lo3py836bkfbLplXkIVBHbBAXyPBh1tTIpXzx0n8q0h83Y1UUjPKW7c7nMzUBw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=K2kJUBNkb3E+6TTcKbhCoBVt/6sNVP7REmYo5B8QLqs=;
 b=AzyDN75mzHFlelOJ67ZPAQnQzjA9oQvl+elFiU7s2yFr8oR4lFbc0EsrouPb9xEqUDQpFSwIOzOcfbJfKe2Jvy4K8CbNYRpjevRv4AXjuhKS86YRB/8bBzNmGBuIJ5fEArLdAF8nr2MSMZse1zG36fSL+Kh8Fo9X87wsDtVo6IHv6ieI8XABUfRflKwIqqYXIG0uGEhrnbY8hiCxJMS9+OfpSVHhxKkyud4tXu+NDppth4tZ3lFxD1gPEe5FIC3jCGefeCJaOS1JWUn9DJRE0kqFDT4siPgJcg/4yB5C8pe/b8w39qwFhj1gA0dYkd6daQHiNIJOVhZu8DQrGEo6/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=K2kJUBNkb3E+6TTcKbhCoBVt/6sNVP7REmYo5B8QLqs=;
 b=T2OznKXWwkMTYmHaWHWD0T0Xq1JCz595Sgxof+arv9f00Ifm6wxUeSu8JM8FAPtSTxI0twkSzoZXijxt88riM6bsj7be6iTf21NO37N809YX8RXd/sW+x78J3+IRySyC5YGdxLRad4YRR2MCOu6L1EG4PQjdTBJevX2P4MwQz68=
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: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	"Michal Orzel" <michal.orzel@amd.com>, Artem Mygaiev
	<artem_mygaiev@epam.com>, "Hisao Munakata" <hisao.munakata.vt@renesas.com>
Subject: [PATCH] docs: fusa: Replace VM with domain
Date: Mon, 7 Oct 2024 19:26:03 +0100
Message-ID: <20241007182603.826807-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
Received-SPF: None (SATLEXMB03.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E1:EE_|BY5PR12MB4260:EE_
X-MS-Office365-Filtering-Correlation-Id: a42fb8e3-1280-4d53-26fc-08dce6fd8310
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?GmEeCDn/c3SK0g74cRUAi5chkPmB3SXeGwbswQvc6fNUS0otHqrPUF+mPgGs?=
 =?us-ascii?Q?OUi6SrvohjfNYvaAV6CCnWEaCEFyGwPqNkO+c52JEwZyieljxRc5vJRe3G5b?=
 =?us-ascii?Q?OV1kikA614m4w8iHUXIG58V8KPjovrbz9hL6Kh4UCeosudijLjzptXLP9+Nh?=
 =?us-ascii?Q?+ucFS2SvIOv8FHfJsL9vIam15/pE89Lu+NJW33O0miO3bVufb5R+QBww6JwR?=
 =?us-ascii?Q?3F9pUw/g4ivmziQ9EF23icSHzfa5MQarugKzn+y5VZ4i+xIEI7eAoTbTouEg?=
 =?us-ascii?Q?00cSwx1MsR1VT+H5Q4ZNtoWyiwZS9ex5Ay1NlrB9ClwPBUgl3tC96y3TG5Ir?=
 =?us-ascii?Q?apsG33b+bOJutIcLof4Eb3x8C598EPOf5VS2bAvE2O7LxPHxM7orOEj9OMLs?=
 =?us-ascii?Q?3uf+6j3dD1DIr5jYmGmS/tPAQ3iX3Py6rWE/dWcVoCAsgbALfA/+9jfb4G8r?=
 =?us-ascii?Q?kYaGB2o5mVx6nD+tnJcpRFzL5DG9Q7AWS5EHGMbYViKcu6ws/c1rUmo3tCaO?=
 =?us-ascii?Q?xR/o2twhNzBKVPG7I4q+thGNbxln/uvFZ5ijXRDfKTXQ+Aefskn2p6lberkW?=
 =?us-ascii?Q?i49ZqNmzRP6F8m/bb5WHxmPryHIP0ZNe9Tn5axD7lKTgE2PoKAwJGLgNQWQe?=
 =?us-ascii?Q?dLEWGiefPX50jY5m3LxbwlFQArBD/PDsByViqv0xarchfj+4EIFMnI2GzVpm?=
 =?us-ascii?Q?vGz1is1+7gv+E6oufgtFY1j1EzyeI/jcaVRryFC1HuXysLt06xd2NRAyvCXF?=
 =?us-ascii?Q?md8VyuCB+9F3wBpm9YFNJpoDbYRSNyrbWqAvFIf65J6xY0T8XKQwCLVi1hAa?=
 =?us-ascii?Q?4BhCvPEiLmAedbtdZwsN4x2Ly5k8tBkX2u3xpHk38rvxco3/YWAM99kX+JuO?=
 =?us-ascii?Q?59xYRRz2MrE01ruGrmgusSrgnOB0TtQjJHv3esZt35WC1KUAEO8sFqAmL1B0?=
 =?us-ascii?Q?ribSv9axK5CWa7w1nw+vM+EN9OVPvsTuT1ucJ4WC1lITJcWUOfSlPIx0aoqo?=
 =?us-ascii?Q?vxtFl6q7tNsZWSOcCxHerwCtwxp5wdVNRfcFhZrZTpK/xNAs4W5x3Llco1ks?=
 =?us-ascii?Q?D2g6rgQzuuxzCJgF9MwgJfWruaygiUdYI2hrkKD53C1n4DFYPveA3B3D3vAh?=
 =?us-ascii?Q?/Qt1bjEpAsk7VvZvgjkXWGW6ga7ItrpEUzuKVDP5vJQe5XPLwtYra/CIDmtq?=
 =?us-ascii?Q?GPKV/V/TLYlBIq2M0LpQuVEPy+YQdWuRX0LiMphakcxtFi+NydLSX4uWO8Tz?=
 =?us-ascii?Q?uHmyLfjTGaSiqpe2S5WpWHGPHD0LqYWyc5TdxbEZN1rMDce7RSJpMQI02S+i?=
 =?us-ascii?Q?nlnP0XKhRnYaEWlMJ/gUrb5fgKRCzqxJrEpQo3i5OTiuSozxEe+H1cj82EAG?=
 =?us-ascii?Q?+BBQYHY=3D?=
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:(13230040)(376014)(82310400026)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 18:26:07.9131
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a42fb8e3-1280-4d53-26fc-08dce6fd8310
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: BY5PR12MB4260

We should use the word domain everywhere (instead of VM or guest).

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
 docs/fusa/reqs/market-reqs/reqs.rst        | 26 +++++++++++-----------
 docs/fusa/reqs/product-reqs/arm64/reqs.rst | 10 ++++-----
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/docs/fusa/reqs/market-reqs/reqs.rst b/docs/fusa/reqs/market-reqs/reqs.rst
index e98f348cf4..f456788d96 100644
--- a/docs/fusa/reqs/market-reqs/reqs.rst
+++ b/docs/fusa/reqs/market-reqs/reqs.rst
@@ -3,13 +3,13 @@
 Functional Requirements
 =======================
 
-Run Arm64 VMs
--------------
+Run Arm64 domains
+-----------------
 
-`XenMkt~run_arm64_vms~1`
+`XenMkt~run_arm64_domains~1`
 
 Description:
-Xen shall run Arm64 VMs.
+Xen shall run Arm64 domains.
 
 Rationale:
 
@@ -18,13 +18,13 @@ Comments:
 Needs:
  - XenProd
 
-Provide timer to the VMs
-------------------------
+Provide timer to the domains
+----------------------------
 
-`XenMkt~provide_timer_vms~1`
+`XenMkt~provide_timer_domains~1`
 
 Description:
-Xen shall provide a timer to a VM.
+Xen shall provide a timer to a domain.
 
 Rationale:
 
@@ -33,17 +33,17 @@ Comments:
 Needs:
  - XenProd
 
-Provide console to the VMs
---------------------------
+Provide console to the domains
+------------------------------
 
-`XenMkt~provide_console_vms~1`
+`XenMkt~provide_console_domains~1`
 
 Description:
-Xen shall provide a console to a VM.
+Xen shall provide a console to a domain.
 
 Rationale:
 
 Comments:
 
 Needs:
- - XenProd
\ No newline at end of file
+ - XenProd
diff --git a/docs/fusa/reqs/product-reqs/arm64/reqs.rst b/docs/fusa/reqs/product-reqs/arm64/reqs.rst
index 97e90813ec..db91c47a02 100644
--- a/docs/fusa/reqs/product-reqs/arm64/reqs.rst
+++ b/docs/fusa/reqs/product-reqs/arm64/reqs.rst
@@ -16,8 +16,8 @@ Rationale:
 Comments:
 
 Covers:
- - `XenMkt~run_arm64_vms~1`
- - `XenMkt~provide_timer_vms~1`
+ - `XenMkt~run_arm64_domains~1`
+ - `XenMkt~provide_timer_domains~1`
 
 Needs:
  - XenSwdgn
@@ -35,8 +35,8 @@ Rationale:
 Comments:
 
 Covers:
- - `XenMkt~run_arm64_vms~1`
- - `XenMkt~provide_console_vms~1`
+ - `XenMkt~run_arm64_domains~1`
+ - `XenMkt~provide_console_domains~1`
 
 Needs:
- - XenSwdgn
\ No newline at end of file
+ - XenSwdgn
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 18:30:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 18:30:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812323.1225052 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxsUf-0005sZ-GP; Mon, 07 Oct 2024 18:30:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812323.1225052; Mon, 07 Oct 2024 18:30: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 1sxsUf-0005sS-AY; Mon, 07 Oct 2024 18:30:05 +0000
Received: by outflank-mailman (input) for mailman id 812323;
 Mon, 07 Oct 2024 18:30: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxsUe-0005ae-0t
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 18:30:04 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on2062a.outbound.protection.outlook.com
 [2a01:111:f403:2414::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2993ce68-84da-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 20:30:01 +0200 (CEST)
Received: from SJ0PR03CA0389.namprd03.prod.outlook.com (2603:10b6:a03:3a1::34)
 by IA1PR12MB7757.namprd12.prod.outlook.com (2603:10b6:208:422::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 18:29:57 +0000
Received: from CO1PEPF000066E9.namprd05.prod.outlook.com
 (2603:10b6:a03:3a1:cafe::62) by SJ0PR03CA0389.outlook.office365.com
 (2603:10b6:a03:3a1::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 18:29:57 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CO1PEPF000066E9.mail.protection.outlook.com (10.167.249.11) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 18:29:56 +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.39; Mon, 7 Oct
 2024 13:29:55 -0500
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.39; Mon, 7 Oct
 2024 13:29:54 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 13:29:54 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2993ce68-84da-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=xMQDkRpEQVEv30DThhyIDYib0H+Ylk4XC1GSbiK2dUCKNklwWNQcmpb23JCqvR5/s6Tj1N7OREKyD5iBGpiqnL8L+8u9+O7SmcDJlE2Oj79at0+sbC7wpWVhglnjw7mzJ90eFDtS/BeGZG/iI2JGFi9i4K9OVfggOBO6O+T/MXCVDF3OxBSprwy8/W+EQraG1G5f8U0LDj4rIv588yNGhA2JnV0gb23VUninDBkSgFY/WnQMV/W9AGO2JndqXSnqSmbi2JuE1pGQhMOhQMw6qRlLn/gKSeja9HE7XMQc35rUa+6kyBPAY7mzFWO2e8p0vwFmLSfIjc10jgkEpqRXjg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jXdStPcKp5xULxtvO5K0TAiNQCsaBDp8leCzGh7ggoE=;
 b=X4L7uIJHoHB9neGPieXex6HqaWcF2qz7WxOPb3Vb+gJ5zZFdOWG06/nQ/qxrXss5Od0PsmELm7m7QSeM6lgTvPfPwL99GrO8ygfEVK+o/+snHwsq3UwoAvWbW+MWBveEfsO7eCe8uzVojmHOiCgT4bMH3iJGEeouuuA4gJvmMG+zeEorttUDc+vX9VRc8jx5EuvtY0kNCXhbfAboDuIR8Z+Ruen/3t81KXV7UIJNWgLXOAX2aa6iKaCdjWl+8Y/s3qB/d7k31LhH4hLwg2eXYUwL5O8qFQ+xcM+jkSea7VNr5OhQEEGXhjR4+fczfH1wv+hqW4+5rLYCcV8i30UH0A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=jXdStPcKp5xULxtvO5K0TAiNQCsaBDp8leCzGh7ggoE=;
 b=dpjXXMBMrnXicj6fq7HivHtK7Etm+lRaTbfcInWspTdM1I217H8iTiIJz0MqwCRsExIElIpOB6ZbUqG1YIpNreyA1ULu18oMDY5GgdMKds/+L5Bk+bPSQkl9QCnLc5kodMZNy57YE48YR7+oJLQ+4y/gIgg2P3olDBUcqyPTnBs=
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: <2fa284ee-907d-4899-aa78-82481cfbfc6a@amd.com>
Date: Mon, 7 Oct 2024 14:29:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 05/44] x86/boot: introduce struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-6-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-6-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000066E9:EE_|IA1PR12MB7757:EE_
X-MS-Office365-Filtering-Correlation-Id: e21e5e8e-8e21-411e-4395-08dce6fe0b84
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SXFKQ0JWSVdSZi8xUmpla3BxcldQbDBaNTNZelJrSlhuVGJqYnJMRUtJYW5v?=
 =?utf-8?B?K1QxUnM2MjdLY29HRGVZM1o0d3Q3UUZEY0N5elZ3VEJURUR4RjJzWVgzTW5V?=
 =?utf-8?B?eUx4KzVzYTVZdUxXWFpRdFIxUmFUQmFCakdGRWF5clVXSzNkTVYxbFd6WUt2?=
 =?utf-8?B?RUxrYzZMa0FtbkZIMkt4Z2tHbCsxK2ZqKzRvN2JpcGNVeGJIZ3l1TzF1TVYw?=
 =?utf-8?B?bEJGWnBlOUJoNkIzSzJ2R3BQc2ZqWDA2dXd5OEQ2OTFqNWhTOTBKTGIyL01B?=
 =?utf-8?B?UjhCZ01vVXVqRERQbGM1SG1aRk5aQnVPSFpNVUFtVVhQMUdtaVRQVnpmWkMz?=
 =?utf-8?B?RUNJZWszTldtT2s1cVpuY2tZcWZTSXNnZnBkeko2UEI3ZmdjcEYzSTRhSkJH?=
 =?utf-8?B?RFNmWHhITWpGQTJWM2cxTm9aalFYd2tnZlRnazd1ZUVJNUhRTjlnOTZoRTdw?=
 =?utf-8?B?L1NaL1FBMDd3UU9lR2VzOGZWUnBPLzlTb0dhWEtVMnJEbE9RNEVWWmc5MEdq?=
 =?utf-8?B?dFd1T2U2Q3FHdVNURU5sd2Z0czVtMDJZdFc4TmVOeXo5UkEzbFJpMkRwOUxQ?=
 =?utf-8?B?c2hJWGpXQmtQclp4ckxmeHpmZW9LSTBRL2lkTzlCNG05WG9MajVNUEI2L1BF?=
 =?utf-8?B?NFFWOGk3TTE3WGRMWk5vK09EelFYQjhsSFhjUGxGZzBkaGx3NWgzQ25HRHRV?=
 =?utf-8?B?NUtOSEVRRlBXWTlINkI3QXJUZll6aERpYlY3M1VhOVlEZ3BoYXYzVWs1VHRp?=
 =?utf-8?B?bS9Idms5NmZQRHBpTHZ2cXBiL1UzUlJuUVBlQTRkSjE1clJuR1NCc016TTBz?=
 =?utf-8?B?MmVoMU9aZmdrQVQ0eWFLQm5xbE9DODI0RDZyTWV2YkJvV3JYR2lWc2tkYitW?=
 =?utf-8?B?NzJ3NkdLWmVOYXZBQThNN1NNOE9BcWVmVGN3dWxWSG1OaVIwWFQyWWVpd0RH?=
 =?utf-8?B?cUt2SjBvalJBOTA5MjVEd3QrODVJQmIzbm9VQmtzbWpTTk43ZjdlclFmRDlQ?=
 =?utf-8?B?QjJUVlI1WW1oVGR3L005ZkpVN3ZoejVvTnQ1TjRVZ2tNVE5XZll1a0ZucjJS?=
 =?utf-8?B?SzJCeWl6MllQaDFpTkZwYzZXSVZ2K0xOdDMzbm53dmVJd1I3UlNVSUJCSG9s?=
 =?utf-8?B?QVRKeUZ5UHVreDhCWXdQS1FCSzJrSy9MZHJXU3dUcTNTalcwL1FUSkxJblV4?=
 =?utf-8?B?cmhZOEg3UWtuNmhjUDNmVW1tYktGZU9iUzA2Q1VWSHZUZTM1YnJZazFZMDRw?=
 =?utf-8?B?UHMxb0xCL0IxdXJ5dmlMN2JMV3dxRktZS0lGMTU3YWVJczEzQjJiWXlEWENI?=
 =?utf-8?B?eHZpT1pJQkdsMVFnNTZXejNZd2kxa1VQYXdzR2dHZ1FSOUZ6NDNuZGFQb3VK?=
 =?utf-8?B?OEpaNjZta0llUGxvTE1mbllJeTdoYXAvaDdpS2lKaTExa2svVzlGczZIRHVH?=
 =?utf-8?B?ZWdCdGc3VkRiZ3ZPUlZlK1JyNHpESElvK2FxUklCNjArS2xJMmFhOSsxVHla?=
 =?utf-8?B?OUhYTlJNNFA2eWJUMWlORnRGTUcxSHdxb2F0VjVycEFKMGhXQnpVc0ZQUUtK?=
 =?utf-8?B?VmUva2lrYVR4L3NodVhmd2hnbnJTc0JHSE5OSlNoNlBFbDhzSWExeSs3dUk0?=
 =?utf-8?B?bHRSUnJJSVhsc1pabXM4VHlwVUFVd2xEZENKY01LYmoydHJTYmNGaTdhb0tO?=
 =?utf-8?B?VnB1azM5WXlwelJ0eEk2S05EOVhRblRzNlQwaFFoc25NcnVkWXN6alpzYnA2?=
 =?utf-8?B?ZzkzVlBYWkRBQ1VoNk0wRW1aekRjK3E0eWJ2aEpKUjVvRnNLbmtWejZJbllE?=
 =?utf-8?B?b1FCZEZsU094SjlaeE5iMGFHM1B3cE1wd0RTZmZQczFmanRrV0dEc0VMM0NX?=
 =?utf-8?Q?VFAWaRPvp+0eI?=
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:(13230040)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 18:29:56.7191
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e21e5e8e-8e21-411e-4395-08dce6fe0b84
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:
	CO1PEPF000066E9.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7757

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This will introduce a new struct boot_module to provide a rich state
> representation around modules provided by the boot loader. Support is for 64
> boot modules, one held in reserve for Xen, and up to 63 can be provided by the
> boot loader. The array of struct boot_modules will be accessible via a
> reference held in struct boot_info.
> 
> A temporary `mod` parameter is included in struct boot_module to ease the
> transition from using Multiboot v1 structures over to struct boot_module. Once
> the transition is complete, the parameter will be dropped from the structure.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootinfo.h | 14 ++++++++++++--
>   xen/arch/x86/setup.c                |  9 +++++++++
>   2 files changed, 21 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index 87d311ac1399..d19473d8941e 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -8,20 +8,30 @@
>   #ifndef __XEN_X86_BOOTINFO_H__
>   #define __XEN_X86_BOOTINFO_H__
>   
> +#include <xen/multiboot.h>
>   #include <xen/types.h>
>   
> +/* Max number of boot modules a bootloader can provide in addition to Xen */
> +#define MAX_NR_BOOTMODS 63
> +
> +struct boot_module {
> +    /* Transitionary only */
> +    module_t *mod;
> +};
> +
>   /*
>    * Xen internal representation of information provided by the
>    * bootloader/environment, or derived from the information.
>    */
>   struct boot_info {
> -    unsigned int nr_modules;
> -

(You should probably re-work the other patches to insert ahead of this 
and avoid the movement.)

>       const char *loader;
>       const char *cmdline;
>   
>       paddr_t memmap_addr;
>       size_t memmap_length;
> +
> +    unsigned int nr_modules;
> +    struct boot_module mods[MAX_NR_BOOTMODS + 1];
>   };

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 18:37:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 18:37:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812336.1225060 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxsbW-0003S8-8L; Mon, 07 Oct 2024 18:37:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812336.1225060; Mon, 07 Oct 2024 18:37: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 1sxsbW-0003S1-5r; Mon, 07 Oct 2024 18:37:10 +0000
Received: by outflank-mailman (input) for mailman id 812336;
 Mon, 07 Oct 2024 18:37: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxsbV-0003Rv-9G
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 18:37:09 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20604.outbound.protection.outlook.com
 [2a01:111:f403:2416::604])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 26ebe63c-84db-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 20:37:07 +0200 (CEST)
Received: from MN0PR04CA0002.namprd04.prod.outlook.com (2603:10b6:208:52d::13)
 by MW4PR12MB7213.namprd12.prod.outlook.com (2603:10b6:303:22a::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 18:37:02 +0000
Received: from BN2PEPF000044AB.namprd04.prod.outlook.com
 (2603:10b6:208:52d:cafe::5e) by MN0PR04CA0002.outlook.office365.com
 (2603:10b6:208:52d::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 18:37:02 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN2PEPF000044AB.mail.protection.outlook.com (10.167.243.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 18:37:01 +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.39; Mon, 7 Oct
 2024 13:37:00 -0500
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.39; Mon, 7 Oct
 2024 13:37:00 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 13:36:59 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26ebe63c-84db-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=b7N/5Ui8Lvy5qsi8iOvYjaPOXOtSu2CSMGMQ6/Yg1ZdGNIyK+m6/A08HfcS1223el5aT5ydqn0EMhFGRA42obs+8PqE63CclMm8MUPi8FBBYpSStQDnLhmGqO991t56Cg8+F5EgNRtYJ9QZMl0Xc1FymJOpjsHARFXiS5jEN2e0wIo70uOCesEdMeHjFSBTOywsiYw/icF3Oxk3/q8eCDQfoxazpqFEKMs4l2EhxVwJQDl4+NSKlveHeph30oE9y2K7Dl0F2xILx+kZOB/w7V3UPL/PWVVvr6irQp7T8StbHm1TQ8OurA8Bzd0Qc4ZnLjbftkx79kTKnSYP+CMsuOg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=fwc2pQqtFhWyGWFjKNvV1HbZoNj8Jl6VTxoBD/7+roc=;
 b=P9/QCtMNCJPfWJ9wVmyVZ71YpeukzmHWfYWqXQl+Z/Pl0K4MhU38CfQ4rWtIEEUM8Ua/6d5cX9lFtSV/5pp5lLigpUcbTft/FnvReB989hHvs6Z+fXEUIW1LYfEUAzPVhNmcyl+eujcVIMllsGdeJlbjw7sSqU7l0PwN4DFk1nNzY1WWQDRJQKuA+A3qOBGF6ShWsd9VLmIPPwhom1YLAKtFfQi09kg59NKhCP+OLzmLkzarZ5DTnDTnlADBHJ2FgWLIaeg3Zv8whDfq7TCUD9GbVm7zBRB8FSHHAmKalFDqCdqwjb41VpFtTysXezKTr7KqqqWVFxUrtg6tQPkFzg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=fwc2pQqtFhWyGWFjKNvV1HbZoNj8Jl6VTxoBD/7+roc=;
 b=XBrK3fJxr5Ykbct+h3s4joZ2x/PXeL/BDBOiEc613QY3Jxblc158P2HbJvG+jf5Oln8oQrPTuPh2aUIZ5EX34mJUwyxdY9faJbiD/OqWP5aw7In7pdIzAWdMytTbypn8VxS6sUcoL1e8/ZZQ1tgKkCchLD2uwJOqmoD2dORnkOk=
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: <dafa43ad-2355-459c-b4a7-231bb6f43dbf@amd.com>
Date: Mon, 7 Oct 2024 14:36:59 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 06/44] x86/boot: convert consider_modules to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-7-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-7-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044AB:EE_|MW4PR12MB7213:EE_
X-MS-Office365-Filtering-Correlation-Id: 9441bbba-13b5-49fc-f110-08dce6ff08ee
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MmtHRmU1TFdWZWdITjFrMmJFV3o1cHhPdzNxZ3JQOHFlcDlXTHR4N2lNWTR1?=
 =?utf-8?B?QUJIek9FcWVnL2R5ak8wZHB3aEZDRHY0T1NmSEM4Ni85NllhVGhPYWRCM1Bl?=
 =?utf-8?B?T1B1SHlLdExkQXJyZkEzTEFxVWZ6QWV2bGp1Z1AwMThXVDBKUzdOd2ZwZEs4?=
 =?utf-8?B?Wmc1UThoS2E5bjMvMTVQdXZ1VldPQ3R3Z3hhVWVlWmgvTFZtTHFWTXdRS0RD?=
 =?utf-8?B?YnhYQUtVNmpqUkpCOXdsRE45ZUlTdWJVb2JHYk1PRUV3MGdieDhwVm5EbklS?=
 =?utf-8?B?bDVJWUxOMkc4eGEvL3VzRHQ5VU8vNVFCQVFabVlxUVg4NTR3anlVWkxvUTZZ?=
 =?utf-8?B?TUQxQlZhN3NtZXR2WG1acTkzbzZtTFptQWpkY2Ztem1RMmRZY3MvVklMSHZV?=
 =?utf-8?B?b3JPTTFBVmI3OTlEbU9NU204QloxMmU5QkhIZkxWZFRZWnYyalBTUU5jTkIw?=
 =?utf-8?B?dG5zTmJ4U1ZUVjB5Sk5yVXBGOWlnQ0xRZGZDaG1lNklkM0pjR1RPK21jU29C?=
 =?utf-8?B?NkxUdkFKS1daeWRLZlhqMVpHUGEvRnEyUUNiZ3A2MjdVQjgvUUovVE9ralQv?=
 =?utf-8?B?djdxTWV3bm05dlk3WUxCTEh3dXNPeEllNG0zMVVOZFlaajcyUHRjYjcvMFQ2?=
 =?utf-8?B?ZGhCQ0tUbmVPNWFjRmxDdFFvY1p5bFh3WUg1ZU5wL3cyWU4yU3B1UWhWRklq?=
 =?utf-8?B?WHowTHJuaklKNWFuQWJ5WFc2TXJGb201aC9wcy9RQ21zdVR5WGxBbjlJQSsy?=
 =?utf-8?B?Tk5KYzFka2hkbWh1YzRpWlVSeEZJN2IrZFE5V2NkZjFsWG1QSHpBZEZtKzRY?=
 =?utf-8?B?aDY0TjFSY0hxWVdOb3FLaWI0bGV0T3ZoZVE5ZWQ1T2VlcUtkVWFnNmVnSVAr?=
 =?utf-8?B?cW96TXhNdDFEZisvZ2VNU2tNQlpGOFljMWI4NEJ0Z1ZFOCtqUjN3bFZHNmZi?=
 =?utf-8?B?R1B5WDRSTEN3RkxMSXR0cHdUUDBqMkVQZTFPUHd6eVRuODlIWDhUT0RyRkZC?=
 =?utf-8?B?blNwQi9sZE5Ld1h2Y3A5RG5PUHczSXI1cjFLSG5uOVpiZ1VtT1czTUJQdVhK?=
 =?utf-8?B?cUdzMFJEY0JmcGV5L0NMS1BxRjRobzNnNHBObVRiNE81eEV0S2hqS2F5L3VD?=
 =?utf-8?B?TDlrMVQ2WDcySjVXbTNtSk9oalEzd1A0a1VGVWZnWTJXamk4dFpQQTEzTlpI?=
 =?utf-8?B?RFFhcDdSd0lNME15SlBIR0VKeFlrUHNXUmw3TzNTZDNJcFpjSm9DcDhWbzFl?=
 =?utf-8?B?MVBOYXNiMjVRV2lrVkVpRG1oSkRmZk9sY1hENXN1YmMvbVlBSHNGSThWamM1?=
 =?utf-8?B?Uk1IZXNJRDBkem82NFBkZjVRNkFBOXNiVmgrYmlqMkc5N3lzU2tMTWJoTTFv?=
 =?utf-8?B?bUJBcUVNazZVV3JuTzU1L3ZzS2ZuS2orZmlMYXI4QU15NWJYdUVOd1NhU3Y1?=
 =?utf-8?B?OTUwQ1dYYWY5KzliYk9zUXhwWmdpYThpYnZYa0JRS2VVUW85ZlNwbDhjL1pn?=
 =?utf-8?B?RTZWN1VFeFFZT2ZuT3psc2NQaVRwUFp0Ym94b2dCd2wwNkZLZVh6L3g0TTNQ?=
 =?utf-8?B?OUYxaTh1aUF6d2EvRlVFcndZQ2VMTlYyWnRoYWxnajdpRWxNQllpcVp2OURL?=
 =?utf-8?B?Vm5aVmE2VGd2VDdHNGtMNmo1UkhEVm0vS2doREpSditJVlBjN2xFRmZPdHMr?=
 =?utf-8?B?SlpkWkMzeWovanR0cGVPMzFNNHUzNzIyZXlweGJmWXFwWExBa2RVYkxNMGdm?=
 =?utf-8?B?bnhvUkxuRmFVRk1sajN5Qk1yNzNtT1haSmdyMTc5OUphSkhaOHVvOTBaRlJi?=
 =?utf-8?B?dkhoejBVNmtIZUo1MEhQNXhXN3J4SkVLVnZzUGdEWGVqL2lzRng1QzJQb24y?=
 =?utf-8?Q?/K7JFUA6NYcnT?=
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:(13230040)(1800799024)(376014)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 18:37:01.9912
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9441bbba-13b5-49fc-f110-08dce6ff08ee
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:
	BN2PEPF000044AB.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7213

On 2024-10-06 17:49, Daniel P. Smith wrote:
> To start transitioning consider_modules() over to struct boot_module, begin
> with taking the array of struct boot_modules but use the temporary struct
> element mod.
> 
> No functional change intended.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 18:55:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 18:55:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812345.1225070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxst0-0002dA-Gk; Mon, 07 Oct 2024 18:55:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812345.1225070; Mon, 07 Oct 2024 18: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 1sxst0-0002d3-DJ; Mon, 07 Oct 2024 18:55:14 +0000
Received: by outflank-mailman (input) for mailman id 812345;
 Mon, 07 Oct 2024 18: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxssy-0002cx-Km
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 18:55:12 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2413::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id acb2b091-84dd-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 20:55:10 +0200 (CEST)
Received: from BYAPR05CA0086.namprd05.prod.outlook.com (2603:10b6:a03:e0::27)
 by DS0PR12MB6607.namprd12.prod.outlook.com (2603:10b6:8:d1::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Mon, 7 Oct
 2024 18:55:06 +0000
Received: from SJ5PEPF000001D5.namprd05.prod.outlook.com
 (2603:10b6:a03:e0:cafe::55) by BYAPR05CA0086.outlook.office365.com
 (2603:10b6:a03:e0::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16 via Frontend
 Transport; Mon, 7 Oct 2024 18:55:06 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001D5.mail.protection.outlook.com (10.167.242.57) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 18:55:06 +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.39; Mon, 7 Oct
 2024 13:55:05 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 13:55:04 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acb2b091-84dd-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EKNoCNqlMwzdUiSrDvX3aXc7WhG5WTj1UGMFXF6/Yr8wiZnJjO8CcE8J1Ochg/tVnZJW73yvs8jHtfAwGPPJ+8mFI5whdb4xVLixsv7Og+OfreVr1Fz8BjJ1QDIb1X0JHn804TT/YZfgdyeq4lX6L2wmUJR2b2JtSXA+bg5r0HWEDrmsHt0M8bAA8+YkTFcdgbk+nET4VXfrNjsfgQjIdXHHvtA28i1GgtaU0aRdfYLJxSFUtkH/7OjZtBojVKzq4rrU+qRw1lHzieB6r1tK3AS21drG9nhm7WU3Luw2Gnxr8YPq8ljiU6wf8W21d7qHQ8uK/1jqszk1EM8kIhtyKQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=OwYtHh0L3KCIcFt+4d2OyIplEEg0uBKf3d0pfIJMBiE=;
 b=eLyEJfDL1C27/oTD+4MNIR1hsAk10SiAqQ1Q6cIbKG5g6os56OgefrCNvwWru2Z4/uyMKGwwCugS3N/P0nVc+X8VQe4JkLbMLN0wmGKvKe9QHUishTERaFEVrnxgBmFO25ahAjfHasi//P5jqIfLLux4ACyips1KXtz4YlctvluEPDOZY1rfkxTnRvFJW6efsIUbEgTs+EGqyM0KLDNDovb/s6v1A07OKlZ/FNjV7WhPEMowEMYskd65kgXiBv67lGzpZS/QhcHUiUiEVj1k0vIDN+tEOOH5VTcl0jXIAPfV5t2hU6rZOBtcKs70QykJneezKtGbx3GhA1MldS5aKg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=OwYtHh0L3KCIcFt+4d2OyIplEEg0uBKf3d0pfIJMBiE=;
 b=zFT698ZMX6HZlszX1ymRhNaE+1OLOicUhs+ayjuhCHWCAD4+JfwgHHrx+q8yWAb8eXAxd7H2/FtJGxznFgv1qrNn7pdJWXJNerlYM3vJvrxR030XefAl+X4vWZ1eHKE8fNbOUllQ6zue8bfLcsjc5F+hNPkEQhoTjxenk2c9J/Y=
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: <af3c6fae-ac24-4629-b295-2dedb5824819@amd.com>
Date: Mon, 7 Oct 2024 14:55:04 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 07/44] x86/boot: move headroom to boot modules
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-8-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-8-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D5:EE_|DS0PR12MB6607:EE_
X-MS-Office365-Filtering-Correlation-Id: 65eb3dd5-7775-4309-6730-08dce7018f2d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?OFM0bzNvSkp3SDlUSFBwaDYyZ2VGU3hIQno1YnRENnBZY1RSaTJZOS9Kd0E3?=
 =?utf-8?B?Ymx6ekxrdEp0Z2VNZ0hFMnVhYnBvOVFKMlFhbjlGb25zdXhDRG53SUNYVGt0?=
 =?utf-8?B?Wkhld1FJcDgxdy82WU8yVFQ2bFFJN2NabDNmVk1UWFB6cy9wUHdXcXVLK3B4?=
 =?utf-8?B?R011N21SVTJWZ2htR0FqTkRndlRubVRJTHZiekxETlAzQlM1bkhKdURyQ25o?=
 =?utf-8?B?eEhPcWxKV0JLM1NPc3orUDJ0VTltS2JiZjgyT0I2cWFpbHVSbUg0SHR4MjN0?=
 =?utf-8?B?NXRPb1U3dm55bEZGU0dlcmNqQ2kwVlp3WldtZ0gxemZvZzRBc1VxSkRTYXhV?=
 =?utf-8?B?UFdpWjVtMEw1RHA1clZWejYvMHFzYzVtU2swNis5T1dpUGwyZkJlSDFGalhp?=
 =?utf-8?B?Y2k3b3phZzJJU01FeVdrQVQ4a3ExYjF6VjhQKzBWZGZNSlVJc2NkMWNyWm43?=
 =?utf-8?B?VHg1RllSbjhjdlRsNjQvMS9qcWp0N1M0eVVZRFVTcXFISVNycDhUczE0NURF?=
 =?utf-8?B?SGVvRlkyVGJoNVJuNFI4N0xmWkdLeTFnZHZSSUVWOVlLMXlPT0V6Qm1hK21L?=
 =?utf-8?B?L0xJRVVSSS9iY1pFeGdwd3hxUkJ4YUM1MXhueGtDUjZJWUxtN0dyTjBFZ1lq?=
 =?utf-8?B?U0R5Zk5MWFVtM2lIbTdyY2xxejE3YzIydUpOSzcwN0xITDlFOFJJUXBMdTVM?=
 =?utf-8?B?Sklvek5BTkQ2M08vWmx4anBuV21EeVNKV3NEZzhGTjVYSVJXd2lzdDh0TnNW?=
 =?utf-8?B?MzlDOFlqaXJSUDZnc2thblJUZVNFL0tESkd1VlJoUVI4ZkNYZUNJQmlCbGJs?=
 =?utf-8?B?VytnZVdFZWFjZDAxVXJvT1lzbkdoaGMvOFkxSExuZzdFTW5kUWtsWDJWMW5k?=
 =?utf-8?B?Z21TbUo2cEwxNENrQnNvUE1yMzZPU1h4TjloLy8rT3RvQWRmaWE4eTc3eEUw?=
 =?utf-8?B?TmMwSUNZK3dJVVkvbmFmNUhRbkpEYUg2cnBLakdiNm1NK2VsR2VYUXI5dlFo?=
 =?utf-8?B?ck1oaVBvRDg0SVBwWWNQbGQyakUvQ1JpRFFoZTJ4bVRwTHVMWHh1LzkraElP?=
 =?utf-8?B?anNXMThjRldzRnk5RkdCeTUweFNqeE5jcDBSQmlxSjZaMXhvaHp1bWtCQ3dy?=
 =?utf-8?B?eG9sQU5vdTFidVIwb3JreCtYTUdodk5LbVRwVWRiM2lCUGlzekpQbEc5S1RV?=
 =?utf-8?B?dGpFLzQycUNoZm5uNnN3QjBHa0UxV0s5S2lKc204djZWQ2dxbE5QUmVWM0pk?=
 =?utf-8?B?aVBqS2I3Q2hFSFQxK3Q3NUU5WTNNbmNHeCtmeHd1VEFTQTBqL2Z1aW9xTnRI?=
 =?utf-8?B?ZXhQSkRVNmdpWnNZT25BRWhUSDVOK1BYbGt3US9BV2pFblBPWmtoTkszVDda?=
 =?utf-8?B?K21iSDhlazcrTUlwM0w3ODFUSnc5V3BHRWNSQVVvNTgxNXZDWWpPOW9VSU8x?=
 =?utf-8?B?S1dCMnVxdEhYR1h5eFhRTk9VRmFJSXl0c0xST0wwbFliZVdVaVM5ZHd3T3E0?=
 =?utf-8?B?NllCaTlJR0dQcjRqYm9aZ1QxSDUyejA2QjB6eElGeVlkdWEwL2NlWXp4K2sw?=
 =?utf-8?B?eHpLWnMyb2hNVzA5TzhnWmFodFMzeUtGaHpveGxSVm8ydGdNWkZtWWp0OUNT?=
 =?utf-8?B?bk1SWGF2Zy96NFlibi9NMDVrckhyL1BWbE5LeXRXUy9KaEhnQlFzcEFVNUFn?=
 =?utf-8?B?Wkh4NGNGUmQ3aXk4L0hGblFQaG0xWkZndndHanRIUEIvRFhPNTBXQy9jaHFY?=
 =?utf-8?B?UkZ2Y3c2QlIxSDRsQU1pV1o3OWRmUHV0TW9RaHpvQWpralFic0IzOUp3anlq?=
 =?utf-8?Q?4W1pKnLU6l7ZLXs42WS4cWCgL4eRPYyR01DY4=3D?=
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:(13230040)(82310400026)(1800799024)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 18:55:06.1931
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 65eb3dd5-7775-4309-6730-08dce7018f2d
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:
	SJ5PEPF000001D5.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6607

On 2024-10-06 17:49, Daniel P. Smith wrote:
> The purpose of struct boot_module is to encapsulate the state of boot module as
> it is processed by Xen. Locating boot module state struct boot_module reduces
> the number of global variables as well as the number of state variables that
> must be passed around. It also lays the groundwork for hyperlaunch mult-domain
> construction, where multiple instances of state variables like headroom will be
> needed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootinfo.h |  5 +++++
>   xen/arch/x86/setup.c                | 23 ++++++++++++++---------
>   2 files changed, 19 insertions(+), 9 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index d19473d8941e..c7e6b4ebf0da 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -17,6 +17,11 @@
>   struct boot_module {
>       /* Transitionary only */
>       module_t *mod;
> +    /*
> +     * A boot module may contain a compressed kernel that Xen will need space
> +     * reserved, into which it will be decompressed.

Maybe "Extra space, before the module data, for compressed kernel 
modules to be decompressed into."

And some ascii art could help:

[ headroom ][ compressed data ]
  <decompression>
[ decompressed data ]

(Not sure how to create a down arrow...)

> +     */
> +    unsigned long headroom;
>   };
>   
>   /*
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index ba9f110d98c6..dd82ca3d43e2 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1012,7 +1012,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>       struct boot_info *bi;
>       multiboot_info_t *mbi;
>       module_t *mod;
> -    unsigned long nr_pages, raw_max_page, modules_headroom, module_map[1];
> +    unsigned long nr_pages, raw_max_page, module_map[1];
>       int i, j, e820_warn = 0, bytes = 0;
>       unsigned long eb_start, eb_end;
>       bool acpi_boot_table_init_done = false, relocated = false;
> @@ -1371,7 +1371,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>           mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
>       }
>   
> -    modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
> +    bi->mods[0].headroom =
> +        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
> +                         bi->mods[0].mod->mod_end);
> +
>       bootstrap_map(NULL);
>   
>   #ifndef highmem_start
> @@ -1456,8 +1459,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>                * decompressor overheads of mod[0] (the dom0 kernel).  When we
>                * move mod[0], we incorporate this as extra space at the start.
>                */
> -            unsigned long headroom = j ? 0 : modules_headroom;
> -            unsigned long size = PAGE_ALIGN(headroom + mod[j].mod_end);
> +            struct boot_module *bm = &bi->mods[j];
> +            unsigned long size;
> +
> +            size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);

Just do
             unsigned long size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
?

>   
>               if ( mod[j].reserved )
>                   continue;

The rest looks good.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 18:55:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 18:55:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812348.1225080 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxstV-000354-Ox; Mon, 07 Oct 2024 18:55:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812348.1225080; Mon, 07 Oct 2024 18: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 1sxstV-00034v-M7; Mon, 07 Oct 2024 18:55:45 +0000
Received: by outflank-mailman (input) for mailman id 812348;
 Mon, 07 Oct 2024 18: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=RzQd=RD=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1sxstT-00031L-Qc
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 18:55:43 +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 c099259e-84dd-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 20:55:42 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-5398d171fa2so5456393e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 11:55:42 -0700 (PDT)
Received: from EPUAKYIW03DD.. ([91.123.151.46])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539aff23530sm903643e87.239.2024.10.07.11.55.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 11:55:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c099259e-84dd-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728327342; x=1728932142; 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=0O/bwYVoYbl6H5jEzHRfmeoSwPu6F3N4nQtAhVDwn+U=;
        b=LNm9OnFzqyClPXyBbLjPnSQPmqPfA76E1z5czt8gmTofQCTNP0BpRQFuxRyuRdrBVP
         T0y+0F1Laui1u9FSL8RE9nGl5TsT8UoKVLvqO2G8ib4qrI64SfGjdtyQhK9lOB5tUueA
         7ImXSJE21zBJuTxsYAeZc2IdeBzB7MXDWmC10rqhtpaTdkgYPgOwoMZlgBp4sS+dUDb8
         aaFm9GHRdvrnkmFJwb82iusZYptc2L93QBU9nXlJHIXB2blNLgaPDVzp/3Pe0MP9xaj4
         C9Tv4rcKG3LFeqZycXbecLFpm2/FfX1ZATlK/1WGc7V367+Vhc77lran/6m1CVwKeUij
         pbOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728327342; x=1728932142;
        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=0O/bwYVoYbl6H5jEzHRfmeoSwPu6F3N4nQtAhVDwn+U=;
        b=qwQQ3cJjCL9kGMAiSP9I/ijecblHvMVymLhKP8f3ZwWorQJkCZgF/eaRdVbAYa0pIZ
         dKdgs7zB357xe5BqbkVGS41fEVIwVfIBph2mSV3LLHW9ga41yG5ESbdKaxNPPw7rm0Ip
         3Ut7NYzkhsgZnloUyEQ4/5ImMAZdOXFbAJV/wvZAffK5y46ZkjEqqo88HQ8jd2pDE8fj
         WHdJarel8k56rpeWN2I8Q6Q0iePhK/WvGJdJb35620JWCDqxierCjccx5zIrta84ezfP
         BlE8nCJGCHLcp0JTf7JcIPXOkR3LgOkSKRCu9nQMj18djNm+f7Z6Q9idn5v4ERlSL6pl
         V9ag==
X-Gm-Message-State: AOJu0YxwArIG59/6PmpoiDbndSCFbfk4pZwsS/1VG1Bk0OUdcCO8i8Zd
	PkvGREW8tRfnmmj7VybbT/kPpz2akR4Hlg7cx8P2Ci95Fr9R2EXohN4oIA==
X-Google-Smtp-Source: AGHT+IE1dijPr6it5cor4eT0Dl7l9AHJXIHyY/lyMwb9CGjNnafq4K6WEn5eNDOGsSytgTdPtHv3RA==
X-Received: by 2002:a05:6512:1155:b0:539:9225:43a6 with SMTP id 2adb3069b0e04-539ab88ccb1mr7667357e87.35.1728327341455;
        Mon, 07 Oct 2024 11:55:41 -0700 (PDT)
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	Artem Mygaiev <artem_mygaiev@epam.com>,
	Hisao Munakata <hisao.munakata.vt@renesas.com>
Subject: [PATCH] docs: fusa: Add requirements for Device Passthrough
Date: Mon,  7 Oct 2024 21:55:08 +0300
Message-Id: <20241007185508.3044115-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>

Add common requirements for a physical device assignment to Arm64
and AMD64 PVH domains.

Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
---
Based on:
[PATCH] docs: fusa: Replace VM with domain
https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
---
---
 .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
 docs/fusa/reqs/index.rst                      |   1 +
 docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
 docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
 4 files changed, 428 insertions(+)
 create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
 create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst

diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst b/docs/fusa/reqs/design-reqs/common/passthrough.rst
new file mode 100644
index 0000000000..a1d6676f65
--- /dev/null
+++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
@@ -0,0 +1,365 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Device Passthrough
+==================
+
+The following are the requirements related to a physical device assignment
+[1], [2] to Arm64 and AMD64 PVH domains.
+
+Requirements for both Arm64 and AMD64 PVH
+=========================================
+
+Hide IOMMU from a domain
+------------------------
+
+`XenSwdgn~passthrough_hide_iommu_from_domain~1`
+
+Description:
+Xen shall not expose the IOMMU device to the domain even if I/O virtualization
+is disabled. The IOMMU shall be under hypervisor control only.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Discover PCI devices from hardware domain
+-----------------------------------------
+
+`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
+
+Description:
+The hardware domain shall enumerate and discover PCI devices and inform Xen
+about their appearance and disappearance.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Discover PCI devices from Xen
+-----------------------------
+
+`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
+
+Description:
+Xen shall discover PCI devices (enumerated by the firmware beforehand) during
+boot if the hardware domain is not present.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Assign PCI device to domain (with IOMMU)
+----------------------------------------
+
+`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
+
+Description:
+Xen shall assign a specified PCI device (always implied as DMA-capable) to
+a domain during its creation using passthrough (partial) device tree on Arm64
+and Hyperlaunch device tree on AMD-x86. The physical device to be assigned is
+protected by the IOMMU.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Deassign PCI device from domain (with IOMMU)
+--------------------------------------------
+
+`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
+
+Description:
+Xen shall deassign a specified PCI device from a domain during its destruction.
+The physical device to be deassigned is protected by the IOMMU.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Forbid the same PCI device assignment to multiple domains
+---------------------------------------------------------
+
+`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
+
+Description:
+Xen shall not assign the same PCI device to multiple domains by failing to
+create a new domain if the device to be passed through is already assigned
+to the existing domain. Also different PCI devices which share some resources
+(interrupts, IOMMU connections) can be assigned only to the same domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Requirements for Arm64 only
+===========================
+
+Assign interrupt-less platform device to domain
+-----------------------------------------------
+
+`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
+
+Description:
+Xen shall assign a specified platform device that has only a MMIO region
+(does not have any interrupts) to a domain during its creation using passthrough
+device tree.
+The example of interrupt-less device is PWM or clock controller.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Deassign interrupt-less platform device from domain
+---------------------------------------------------
+
+`XenSwdgn~passthrough_deassign_interrupt_less_platform_device~1`
+
+Description:
+Xen shall deassign a specified platform device that has only a MMIO region
+(does not have any interrupts) from a domain during its destruction.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Assign non-DMA-capable platform device to domain
+------------------------------------------------
+
+`XenSwdgn~passthrough_assign_non_dma_platform_device~1`
+
+Description:
+Xen shall assign a specified non-DMA-capable platform device to a domain during
+its creation using passthrough device tree.
+The example of non-DMA-capable device is Timer.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Deassign non-DMA-capable platform device from domain
+----------------------------------------------------
+
+`XenSwdgn~passthrough_deassign_non_dma_platform_device~1`
+
+Description:
+Xen shall deassign a specified non-DMA-capable platform device from a domain
+during its destruction.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Assign DMA-capable platform device to domain (with IOMMU)
+---------------------------------------------------------
+
+`XenSwdgn~passthrough_assign_dma_platform_device_with_iommu~1`
+
+Description:
+Xen shall assign a specified DMA-capable platform device to a domain during
+its creation using passthrough device tree. The physical device to be assigned
+is protected by the IOMMU.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Deassign DMA-capable platform device from domain (with IOMMU)
+-------------------------------------------------------------
+
+`XenSwdgn~passthrough_deassign_dma_platform_device_with_iommu~1`
+
+Description:
+Xen shall deassign a specified DMA-capable platform device from a domain during
+its destruction. The physical device to be deassigned is protected by the IOMMU.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Assign DMA-capable platform device to domain (without IOMMU)
+------------------------------------------------------------
+
+`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
+
+Description:
+Xen shall assign a specified DMA-capable platform device to a domain during
+its creation using passthrough device tree. The physical device to be assigned
+is not protected by the IOMMU.
+The DMA-capable device assignment which is not behind an IOMMU is allowed for
+the direct mapped domains only. The direct mapped domain must be either safe or
+additional security mechanisms for protecting against possible malicious or
+buggy DMA devices must be in place, e.g. Xilinx memory protection unit (XMPU)
+and Xilinx peripheral protection unit (XPPU).
+
+Rationale:
+The IOMMU is absent from the system or it is disabled (status = "disabled"
+in the host device tree).
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Deassign DMA-capable platform device from domain (without IOMMU)
+----------------------------------------------------------------
+
+`XenSwdgn~passthrough_deassign_dma_platform_device_without_iommu~1`
+
+Description:
+Xen shall deassign a specified DMA-capable platform device from a domain during
+its destruction. The physical device to be deassigned is not protected
+by the IOMMU.
+
+Rationale:
+The IOMMU is absent from the system or it is disabled (status = "disabled"
+in the host device tree).
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Map platform device MMIO region identity
+----------------------------------------
+
+`XenSwdgn~passthrough_map_platform_device_mmio_region_ident~1`
+
+Description:
+Xen shall map platform device memory region identity (guest address ==
+physical address) when assigning a specified platform device to a domain.
+The device can be either non-DMA-capable or DMA-capable.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Map platform device MMIO region non-identity
+--------------------------------------------
+
+`XenSwdgn~passthrough_map_platform_device_mmio_region_non_ident~1`
+
+Description:
+Xen shall map platform device memory region non-identity (guest address !=
+physical address) when assigning a specified platform device to a domain.
+The device can be either non-DMA-capable or DMA-capable.
+
+Rationale:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Assign PCI device to domain (without IOMMU)
+-------------------------------------------
+
+`XenSwdgn~passthrough_assign_pci_device_without_iommu~1`
+
+Description:
+Xen shall assign a specified PCI device to a domain during its creation using
+passthrough device tree. The physical device to be assigned is not protected
+by the IOMMU.
+The DMA-capable device assignment which is not behind an IOMMU is allowed for
+the direct mapped domains only. The direct mapped domain must be either safe or
+additional security mechanisms for protecting against possible malicious or
+buggy DMA devices must be in place, e.g. Xilinx memory protection unit (XMPU)
+and Xilinx peripheral protection unit (XPPU).
+
+Rationale:
+The IOMMU is absent from the system or it is disabled (status = "disabled"
+in the host device tree).
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Deassign PCI device from domain (without IOMMU)
+-----------------------------------------------
+
+`XenSwdgn~passthrough_deassign_pci_device_without_iommu~1`
+
+Description:
+Xen shall deassign a specified PCI device from a domain during its destruction.
+The physical device to be deassigned is not protected by the IOMMU.
+
+Rationale:
+The IOMMU is absent from the system or it is disabled (status = "disabled"
+in the host device tree).
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Forbid the same platform device assignment to multiple domains
+--------------------------------------------------------------
+
+`XenSwdgn~passthrough_forbid_same_platform_device_assignment~1`
+
+Description:
+Xen shall not assign the same platform device to multiple domains by failing
+to create a new domain if the device to be passed through is already assigned
+to the existing domain. Also, different platform devices which share some
+resources (interrupts, IOMMU connections) can be assigned only to the same
+domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~device_passthrough~1`
+
+Notes
+=====
+
+The AMD64 PVH-specific requirements are written under the assumption that once
+the Hyperlaunch feature is completed, Xen shall assign a PCI device to boot
+time domains. This is not the case today, where the PCI device can be passed
+through only to domains launched by a control (toolstack) domain.
+
+The Arm64-specific requirements are written under the assumption that once
+the dom0less PCI Passthrough feature is completed, Xen shall assign a PCI device
+to boot time domains. This is not the case today, where only the platform device
+Passthrough is supported.
+
+[1] https://xenbits.xenproject.org/gitweb/?p=xen.git;a=blob;f=docs/misc/arm/passthrough.txt;hb=HEAD
+[2] https://xenbits.xenproject.org/gitweb/?p=xen.git;a=blob;f=docs/misc/arm/passthrough-noiommu.txt;hb=HEAD
diff --git a/docs/fusa/reqs/index.rst b/docs/fusa/reqs/index.rst
index 183f183b1f..19c2f26b2b 100644
--- a/docs/fusa/reqs/index.rst
+++ b/docs/fusa/reqs/index.rst
@@ -10,3 +10,4 @@ Requirements documentation
    market-reqs
    product-reqs
    design-reqs/arm64
+   design-reqs/common
diff --git a/docs/fusa/reqs/market-reqs/reqs.rst b/docs/fusa/reqs/market-reqs/reqs.rst
index f456788d96..37a443395b 100644
--- a/docs/fusa/reqs/market-reqs/reqs.rst
+++ b/docs/fusa/reqs/market-reqs/reqs.rst
@@ -47,3 +47,36 @@ Comments:
 
 Needs:
  - XenProd
+
+Run AMD-x86 domains
+-------------------
+
+`XenMkt~run_x86_domains~1`
+
+Description:
+Xen shall run AMD-x86 domains.
+
+Rationale:
+
+Comments:
+
+Needs:
+ - XenProd
+
+Domain device assignment
+------------------------
+
+`XenMkt~domain_device_assignment~1`
+
+Description:
+Xen shall assign device to each domain.
+
+For example, it shall assign GPU to domain A, MMC to domain B. Only the domain
+assigned to a device, shall have exclusive access to the device.
+
+Rationale:
+
+Comments:
+
+Needs:
+ - XenProd
diff --git a/docs/fusa/reqs/product-reqs/common/reqs.rst b/docs/fusa/reqs/product-reqs/common/reqs.rst
new file mode 100644
index 0000000000..9304399e4d
--- /dev/null
+++ b/docs/fusa/reqs/product-reqs/common/reqs.rst
@@ -0,0 +1,29 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Domain Creation And Runtime
+===========================
+
+Device Passthrough
+------------------
+
+`XenProd~device_passthrough~1`
+
+Description:
+Xen shall provide mechanism for assigning a physical device to the domains.
+
+For example:
+
+- PCI passthrough
+- MMC passthrough
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenMkt~run_arm64_domains~1`
+ - `XenMkt~run_x86_domains~1`
+ - `XenMkt~domain_device_assignment~1`
+
+Needs:
+ - XenSwdgn
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 19:35:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 19:35:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812367.1225091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxtVF-0002jN-KY; Mon, 07 Oct 2024 19:34:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812367.1225091; Mon, 07 Oct 2024 19:34: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 1sxtVF-0002jG-HI; Mon, 07 Oct 2024 19:34:45 +0000
Received: by outflank-mailman (input) for mailman id 812367;
 Mon, 07 Oct 2024 19:34: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxtVE-0002iu-CI
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 19:34:44 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on2060e.outbound.protection.outlook.com
 [2a01:111:f403:2009::60e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 327b55ad-84e3-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 21:34:42 +0200 (CEST)
Received: from BYAPR01CA0015.prod.exchangelabs.com (2603:10b6:a02:80::28) by
 DM4PR12MB6638.namprd12.prod.outlook.com (2603:10b6:8:b5::5) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8026.22; Mon, 7 Oct 2024 19:34:36 +0000
Received: from SJ5PEPF000001E9.namprd05.prod.outlook.com
 (2603:10b6:a02:80:cafe::4) by BYAPR01CA0015.outlook.office365.com
 (2603:10b6:a02:80::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7982.34 via Frontend
 Transport; Mon, 7 Oct 2024 19:34:36 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001E9.mail.protection.outlook.com (10.167.242.197) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 19:34:36 +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.39; Mon, 7 Oct
 2024 14:34:35 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 14:34:34 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 327b55ad-84e3-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=t3mTZWyhz9IAhFQZjUqFnuP22UK6KrHl+UIk0Nb4eD+y6bLbbdcnLdrVcZkQJJVh7Ar+hSJpf6AaNGS3kF4ZkSPL6NOcO325ovkIh7WWeJOHKRs2do1uVcIYMBm5kMkyeFVpdC6iXv0n48GIXP1bCi1BX5jEjls2t8E+bEA1To5pZUVsmLxDtqUbzGX/Q0VXw+1EGQvLHH+6RP9zk0qj043X6WdmEAFG7Azll0Vs512SOlGNm0u0x32MrUmt/FWdRkm42iIyBKdsnUWz9/t4MM+E0BaR1saHpOFaxyxjOxuzC/wm/j4BpuD4mf1Mhqi8W6L7LL3mBuhxbHGjC8hBWg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=+Br5IqemP5mmEKm3QmgCNxQLdckF52FE8XN2atHAZPg=;
 b=HI0itcflEx9L4XMx2sCRn58B2hU74rcULT7dqKI/YWB3x96bQz5JOn9jgmsQZuF2M+TpM/EZiEZX0/aoGAwyulSpKGXBdNrRh0uRDt2HIRQC7ZcZFWMCkY62mFa22XA21r5kJxvIJIazA2iKZTyTs7VL/p75g8RAsUFbpEseo1KnO9SY5ezf8jB3LuRGGzF3+t/zFGvzu5A5c4oV/k8dYabQt3OOzjcc/FkNAcTkJFbrYAUPRcjzVbMEnkS0Tf5I9h6FOTpTQPjP79fEeXFiMuZeKM5zUT9UUuSwYQbkFzlRYcQ2UWCVfZdsjmWIHx83ziLavUNj5/NN98hwoRcIlw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=+Br5IqemP5mmEKm3QmgCNxQLdckF52FE8XN2atHAZPg=;
 b=EJIT9nTc9AFA+QAl7SY6ZAeor56LYhBl7VXkkxrsW92VLd+v2neFaeG4M+UHqirh1xVoiE6UPW8xqq/3FZraqHKEi9l73ByIDLwPv7rHRZgJ79bJLs1XZRMroFGZX6BHR3gE1g7/sfA+PQFjBPUOVz9rBvp9CAvns1bWN0XLfyY=
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: <a2346abb-e332-40a3-88bb-0159f6a359e8@amd.com>
Date: Mon, 7 Oct 2024 15:34:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/44] x86/boot: convert setup.c mod refs to early_mod
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-9-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-9-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001E9:EE_|DM4PR12MB6638:EE_
X-MS-Office365-Filtering-Correlation-Id: 7ec72ae9-5bba-4cc1-d460-08dce70713d8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?dy9OeTNuSDV0VHA2MUtXNmtaSW5TQjJSUkk1ZFNTbis0SWlkMXAvdXAybE9D?=
 =?utf-8?B?Nk4zdU85bkFZR00yZGJzdTVkWTcrSUxSNXhzcmxGSlRXRDVCcmp3WlBjdFJl?=
 =?utf-8?B?QjZRQzg3TEFLdThvemwvSTh4NFdOdDNsRG5qa2txc1A5cjRkQlNCdS9OWTN2?=
 =?utf-8?B?b1hLOWFlTXJRSXdZdC9MUDN4S3hoUFpCaHBreGhBL0cyQ1RCT0gvOE5GYyth?=
 =?utf-8?B?VXFTdTB4WGdqSkdtaGhTNFdETU5neEJFUkdCNTVhU2lIckhZVVpmMEtaTUVB?=
 =?utf-8?B?MDlHWlZlUmtlcFNibXdjWTFBZHVzV0pWdndBTVBmTjJueXc4cVFDeDkxOXZy?=
 =?utf-8?B?Y25FQjJ3Ull6WitjZVdkbHpncU11YWU3WnNiY0xkVE5PTFJrNWczdUd3QVlS?=
 =?utf-8?B?OEd4b1p0V0VSdEY1TmprTm9MWVFGUEJZSEwxTGdzT3g1Nlg4SXlkbzBzOUli?=
 =?utf-8?B?Ukxuci84akh1UUVqbTB3N0JmREErbDZSOURieTVlSmVmY3VuaCt1VkxCMEVp?=
 =?utf-8?B?Q0g5YmEwbzJEOUZFcnZCV2QrL2pOV3NIUGFhMnFjOHR6dmt1bzR3ZTFXdU1O?=
 =?utf-8?B?bzNsK1liRzhsd21STXZmZHJhcmVmTUc4UDJBRkpzc2hVMXZweFdhRC8wcll6?=
 =?utf-8?B?QlRjdU81OFhEL0xGN2pOZFR0RnZodTdVbmNTSHpvQXVRTWZxcWJFWDBLYmxX?=
 =?utf-8?B?MURBT3c3eG5EOGdNZ09UaWYya0pySEdCaURia1M5WVV1TlV3cVlZNkY0L0ty?=
 =?utf-8?B?aGJYT1QwaEF4SHhGaG1ad3FibS9aRlVQN3dQL3lScGQyT2tnMXBmM3FMMmxX?=
 =?utf-8?B?U2tBUjFSSk5VcVBBRjdwbmRPckJEOU5qNUpBM1AzWlNtNm84a2VrKy9NTGp5?=
 =?utf-8?B?QXlabXhKYUVsQzZyY0p6UHI1UEhVNXE1ZkpTZ3R4NFJGall3YVhla0QwWThL?=
 =?utf-8?B?bFdNMlMvekJ3UThhdjZjbHVUY0RUUDhlWFRuVlFIbVh6T01YWVpyeW9JeXhT?=
 =?utf-8?B?RlhCRERjam9tdnBKT3YrYkRtV2lPZjFyeDFTQ3R4RDdTYXFRMDRGSzU2SjVy?=
 =?utf-8?B?aTg0a2dFbUs4NDlQeFFvdzBsRnlVQ3c0RFUzaU9ZMGlkSUZCT3laTFY4NDRu?=
 =?utf-8?B?bzdzN3RWWW1PczdJcEtpZGQvWHZSTW8wVGhKNXhJR0ltanhibVZRYXE1bXhP?=
 =?utf-8?B?WlYwbGpjckFkMUk1RHgwQ3dHOGZsL1Q3aEpzWkRITlV6eVhkWGI4anBldldL?=
 =?utf-8?B?clFHdlF3WTlhU1VoMVhpTGdlbFdoU2dEamFYcWZ3b3dsNk96ZjFFS1FZRkd6?=
 =?utf-8?B?NlFXdkJaREUwRVdnand1dnB4eGhXUGEvcE5vL3F5cHRTUjJyVzZsK05IckJ0?=
 =?utf-8?B?NkZqS0dzTzZpQ0tkamVrNmp0MjMvNHpYTXFDMXZnd3I4V21hQ0YzZ1lxR0lN?=
 =?utf-8?B?NlRGSXZaMzNkWW12TlRrMHBsekx5MHVxWnBuK08xd1VtdjU5RmpyT1gxTnVM?=
 =?utf-8?B?WDRmbFJHeGxGLzVrdTY3N2NSQTk3U1F1Ujl3OG1SMGovVzdBMk1hejNJR25E?=
 =?utf-8?B?Y3dTd2Jac1NZZFRLTUR0eFhwZTdKK1B6bEZRNTRJN0FoYW9wZGxabnp1Njkz?=
 =?utf-8?B?QzFTRThVeVJVNCtEWjZvMVFRRTlYR2JPZCtOMmE2WkpGUVFheEduT0pMbnlz?=
 =?utf-8?B?NHBBQXJLRlcwWTVHcU52ZzZGY0VtelQ4YzNzTlVoeDVrRGtMYzdDenJuN3RB?=
 =?utf-8?B?Ym82SEFNa1h6L216bDVFZXozQnFRRlZkbndkYjBVa3N3bm5kMWVBbmx6TGYx?=
 =?utf-8?B?ZmtubHFLeW50WkJaY0hKZ29nVEM0L3FMYWZvRzRwcTc0SlNnR2Y0c2wvQkpx?=
 =?utf-8?Q?hvHGiQb++/EXe?=
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:(13230040)(82310400026)(36860700013)(1800799024)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 19:34:36.2126
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7ec72ae9-5bba-4cc1-d460-08dce70713d8
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:
	SJ5PEPF000001E9.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6638

On 2024-10-06 17:49, Daniel P. Smith wrote:
> To allow a slow conversion of x86 over to struct boot_module, start with
> replacing all references to struct mod to the early_mod element of struct
> boot_module. These serves twofold, first to allow the incremental transition
> from struct mod fields to struct boot_module fields. The second is to allow
> the conversion of function definitions from taking struct mod parameters to
> accepting struct boot_module as needed when a transitioned field will be
> accessed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 61 ++++++++++++++++++++++++--------------------
>   1 file changed, 34 insertions(+), 27 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index dd82ca3d43e2..ba4bee6b93af 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1341,15 +1341,15 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>       set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
>       kexec_reserve_area();
>   
> -    initial_images = mod;
> +    initial_images = bi->mods[0].mod;

Isn't this wrong?
mod is the array of module_t * of *all* modules, but bi->mods[0].mod is 
a single module_t *?

>   
>       for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
>       {
> -        if ( mod[i].mod_start & (PAGE_SIZE - 1) )
> +        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
>               panic("Bootloader didn't honor module alignment request\n");
> -        mod[i].mod_end -= mod[i].mod_start;
> -        mod[i].mod_start >>= PAGE_SHIFT;
> -        mod[i].reserved = 0;
> +        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
> +        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
> +        bi->mods[i].mod->reserved = 0;
>       }
>   
>       /*

> @@ -1509,13 +1510,15 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   #endif
>       }
>   
> -    if ( bi->mods[0].headroom && !mod->reserved )
> +    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
>           panic("Not enough memory to relocate the dom0 kernel image\n");
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
> +        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
> +                        << PAGE_SHIFT;

pfn_to_paddr() ?

>   
> -        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(mod[i].mod_end));
> +        reserve_e820_ram(&boot_e820, s,
> +                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
>       }
>   
>       if ( !xen_phys_start )
> @@ -1593,8 +1596,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>                   map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
>                   for ( j = 0; j < bi->nr_modules; ++j )
>                   {
> -                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
> -                                   mod[j].mod_end;
> +                    uint64_t end = pfn_to_paddr(
> +                                   bi->mods[j].mod->mod_start) +
> +                                   bi->mods[j].mod->mod_end;

I think you want a different indent.  I think
     uint64_t end = pfn_to_paddr(bi->mods[j].mod->mod_start)

will all fit on one line (indented all the way).  (Thunderbird makes it 
difficult me to send indented.)

>   
>                       if ( map_e < end )
>                           map_e = end;
> @@ -1668,11 +1672,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        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),
> -                         _mfn(mod[i].mod_start),
> -                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
> +        set_pdx_range(bi->mods[i].mod->mod_start,
> +                      bi->mods[i].mod->mod_start +
> +                      PFN_UP(bi->mods[i].mod->mod_end));
> +        map_pages_to_xen(
> +            (unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),

map_pages_to_xen((unsigned long)maddr_to_virt(bi->mods[i].start),

All fits on one line.

> +            _mfn(bi->mods[i].mod->mod_start),
> +            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
>       }
>   
>   #ifdef CONFIG_KEXEC

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 19:41:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 19:41:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812374.1225101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxtc7-0000m8-9N; Mon, 07 Oct 2024 19:41:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812374.1225101; Mon, 07 Oct 2024 19:41: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 1sxtc7-0000m1-6i; Mon, 07 Oct 2024 19:41:51 +0000
Received: by outflank-mailman (input) for mailman id 812374;
 Mon, 07 Oct 2024 19:41: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 1sxtc6-0000lr-4I; Mon, 07 Oct 2024 19:41: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 1sxtc6-0008M2-0x; Mon, 07 Oct 2024 19:41: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 1sxtc5-0007Ub-KV; Mon, 07 Oct 2024 19:41:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxtc5-00034d-K1; Mon, 07 Oct 2024 19:41: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=JazUTjCwAkLj4V7s93DvpDiLq6OE6I0P+q6bmkmRXkg=; b=P7Va2biwUK6IQYVwD5NU0H7RKq
	GYq4S8CKfi5fxi7Bq6wvyRx/HLM8f+vF3eVNmI4WkitvO4aYtCiofPyAW7jFQEy4MTr5W9nYgeeRH
	SsseJ9+ekM4bkVmblzHsHJKUIAiIKgm5sWElPgAV0CjCcV7LwTL8NXz1+R9ZjsjKA1uI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187997-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 187997: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-libvirt-vhd:leak-check/check: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: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-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-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-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-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-amd64-amd64-libvirt-qcow2: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-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b
X-Osstest-Versions-That:
    linux=2a130b7e1fcdd83633c4aa70998c314d7c38b476
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 07 Oct 2024 19:41:49 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check    fail pass in 188001-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187989
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187989
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187989
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187989
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187989
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187989
 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-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-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-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-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-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-amd64-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b
baseline version:
 linux                2a130b7e1fcdd83633c4aa70998c314d7c38b476

Last test of basis   187989  2024-10-06 19:42:55 Z    0 days
Testing same since   187997  2024-10-07 07:52:48 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   2a130b7e1fcd..8cf0b93919e1  8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 19:51:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 19:51:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812387.1225112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxtl1-0007JM-AH; Mon, 07 Oct 2024 19:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812387.1225112; Mon, 07 Oct 2024 19: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 1sxtl1-0007JF-6B; Mon, 07 Oct 2024 19:51:03 +0000
Received: by outflank-mailman (input) for mailman id 812387;
 Mon, 07 Oct 2024 19: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxtl0-0007J8-5D
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 19:51:02 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2413::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7928f32f-84e5-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 21:50:59 +0200 (CEST)
Received: from SJ0PR03CA0366.namprd03.prod.outlook.com (2603:10b6:a03:3a1::11)
 by DM6PR12MB4154.namprd12.prod.outlook.com (2603:10b6:5:21d::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Mon, 7 Oct
 2024 19:50:55 +0000
Received: from SJ5PEPF000001F0.namprd05.prod.outlook.com
 (2603:10b6:a03:3a1:cafe::a5) by SJ0PR03CA0366.outlook.office365.com
 (2603:10b6:a03:3a1::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 19:50:54 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001F0.mail.protection.outlook.com (10.167.242.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 19:50:54 +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.39; Mon, 7 Oct
 2024 14:50:53 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 14:50:53 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7928f32f-84e5-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=rswqdLJY1aksJvD/2Vsgo8C0GmZ8Z8HEcVXobe/RhT1pJkF7D7i6+zfa7ZyO3UNHiDBVnmfRmQZtyFbOsrOmkPJluI8hdnIDa1RFM6t+voMVMZbwjagLGQDtBiTsKz/yA7TEozIiVPnjl+nL1N9/LzId0/DeYOrJZF2Tujfjibsvj1FccXj3Rnp6pvUISeVKwa5obWo2k4YfdMF3zXrAGeB27rIOtx/3li1c6h7hZkOglv1koHupdOlKWNtt+LVZeFro2OYbpMvv+iH73vqL2TbTYQo5LRKWiaMJzPAoaEAeFVeGLGey7uUFQQQilxeGisVh+e3XZ4E4a+PYqsIbTg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=9PNy/YK5F8zUiWjHfpze0wKfCrrd86+vfXfJLFlEJ78=;
 b=eKhEjxgkLhdjWe3t86SL4oJbY7ivsILY7ktr+KQxJr5QhzzP2ULc+gQRGhnlCB5nLAibtp/zMTZBoynaC8NU4Jd3B/HaJsQl1noAmrYB260SQZ0GCcyzqCn6enDHlUB8ZwTMmd1VDTk6fTnpPCs1U5PWVxzdCUqcaQRcNzwEN+pwMboYJoKKSZRoYKInonzxhjsbqACd93u59QEHHJxIxK4eHOwBshDGrYe5h6Kr/M8SCvPWO6npILDInwJemcCQDTNStMjn1OWQtaR1vRF3xByYBWI9kWzIexkxsBKeJdtvuiX5TpXLiQ/lkCGPvFYQl3BxulkPvYESVgxrla0QxQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=9PNy/YK5F8zUiWjHfpze0wKfCrrd86+vfXfJLFlEJ78=;
 b=KO6rcMo39WmbolS2KnHpM1+h/IfP8KE9m5T/qYf0gk62tyc1Cdc+hlPO6R/p890WUp78IGyZWBBm5KpWqVeWmsYT83FCtYa3vB/4v0WLmSVkOZvjqONbaGacZhbWZMErVIjQ+nn9rnXXKbGyVvu4kJ7Xvf7NXcEEN+iueqDiHRY=
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: <e45d1cb7-333e-47a3-8834-5cb927e42e3b@amd.com>
Date: Mon, 7 Oct 2024 15:50:53 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/44] x86/boot: introduce boot module types
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-10-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-10-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001F0:EE_|DM6PR12MB4154:EE_
X-MS-Office365-Filtering-Correlation-Id: 8b483cd3-1b4c-49af-5c33-08dce7095b09
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eU0rSVdwTm9YWmd5VVlQa1E1bmZTMUdWWUROeEc2bUVGUWpGL2poRStsall2?=
 =?utf-8?B?SDdWajBHNjZaS0lpTS9lZmt6NkJSZCtOU2IyVDhNTGVDL3F0VXpQUlhiU0hx?=
 =?utf-8?B?d3JkbFZ3WEl2M3laaGg4MHQ3blBNc2EyVXdoaU9nZXdiZ3cxL2tXcks2Zytq?=
 =?utf-8?B?UnJHQlA2eVZkY3F4U2Q0UzFGNko5SHkrTjNjc3IzM0xJR2F5Q2Q1VkxtRUpk?=
 =?utf-8?B?LzU1ekRwK0hQTjgyd2hENndZVmRYaGpiYkRUMVZ6dGFYSzVNaVVkRWRuVmNq?=
 =?utf-8?B?MmJXN1JRVmRiTWFVWFgzQWJoeThFNTFtcnlTdXpqQWc3dEhyengxem05MGJV?=
 =?utf-8?B?VTk5UWY1akxRUVpqRXJINHprSXFtTFVpTXA3M25iTTcrZDhtNHVTQ0ppMDVP?=
 =?utf-8?B?aUsrdWFKWVBwaVhaRFRIMFBrLzNGNHFyRFdDVnRMVitIR3hLN1p1RFZmdWxN?=
 =?utf-8?B?dlJVNUxPTkIrNHVrK1ZzZjg4L1B4dXNlamd3V2pkam1QRzYwTGp6dUthU1lO?=
 =?utf-8?B?bzYrZUJ0U2lGSXQ1MEFNWU5LM3BOZzRwTWFWVUJzYjhWc29KeEhJMkFyK3l1?=
 =?utf-8?B?S01SSzNxZlN5bU1IeXVyYzBCM2tDMllGTk9rYzdoSE9veURaUkgrc0FqS3N4?=
 =?utf-8?B?K3ZYbnBHNDFqQU1lRXJ4am40Ym9FVDgxTWd6V1ZoeHBzczFITzZMV3lkSmhp?=
 =?utf-8?B?c3U1V21WektoTGF6M2pYWHNuY29iWVd4WUR2eXpLNlRYWXZkTi9NbWxVMVRl?=
 =?utf-8?B?Q1VQRDVTbmVIWnBwUElqQjZzejZtN1VoWUpkaHVOUUZGOEgvbGUvcXZ5WnZJ?=
 =?utf-8?B?c2J2d0s4WHhYUjdwNi9oT1h0bmgxVk5qMnNuTTJJTXI5WmZSdDc2T3VobHlk?=
 =?utf-8?B?VzdmckVvU0pOQjhQTDNWT1B0UlRkWHE5bFZrOVAvbDNwYXpOMVdTRHE1eEEx?=
 =?utf-8?B?QXZPYm9kRHlHRW13MjZtcGVaNU8zUkhkTGM1aitLSFA4ajdkUDZWUXlrUzB6?=
 =?utf-8?B?VnRYQ1REekk2N1JJVXB2VWs5YnZ3QjFZTUpLTVN6K1JoVHQzUXNkVkxrRTQ1?=
 =?utf-8?B?ZGdXdWhtcEdFdmtXS09rZEt4T3VwYWEyNWJpTVY4QU1OU1lmTjZpKzZFMWlZ?=
 =?utf-8?B?NFNLb2tPbStJTk1HUEw4TDVzdlBVWUJXM0c5UERVblVzcFpCSzgyemlaL3lx?=
 =?utf-8?B?cWNTUWFVZzlqVmJZUjdYNi9UelpaeXI2REEzcUNsRXkrVEExbjNrTVRnMmd6?=
 =?utf-8?B?dTU3V1NvR0ZKYmlYY3g3T1ZPdW4zTGtsS2N0SEw5SDJ4R0JQQnI4bERHNGFT?=
 =?utf-8?B?WXhMdmF0bWFGSlZ2ak9wZHcrU0NJREdEd3lOdHN5RnZJbTByNFF4NjdWQzBl?=
 =?utf-8?B?emtxc280L29tM0c1L3lqblJvUWc0UnVkR0lGRlJwZ2thTnNDTXpXRzhlNElS?=
 =?utf-8?B?R0JGV2JSZEN2WjhXditwb3I3YmxXK1pDa3ZlQ1JpUmRLck1EMUxIRTBSOWRL?=
 =?utf-8?B?ZlJtMktXTTYzZkxZYnBxaHZncHdjQkQweG9UTWV2Z2lSMkJCMGd3L1pCODhC?=
 =?utf-8?B?VWw1UWo1dlVpOTdrOGlHOXhVbkJXV25kQ0tOTHBrdmZrYmlRZVRtV0trTTNp?=
 =?utf-8?B?bG5kTjdXdElteXMxbi9NREJNaC9zY2hERWxYYlBNY3NHNGhnV3VJK0JwNVpk?=
 =?utf-8?B?cGQ3U0tIak45R0g1Uk12VTNCNGxFc0Z6ajdFZFJvcUxPMkhoTDBRUlpENzF0?=
 =?utf-8?B?VlRVTUZVUlpOVCt2aUkwa1B2YjBSaUp2cFNUYktQN1kzMVY0cHROWjB5WG5r?=
 =?utf-8?B?aHlrU1F3ckx0Q2ZLZ3VRQyt3bjBSWURDRzlwNnc2NEdkVFQ3M1BnYVNPRUJ0?=
 =?utf-8?Q?1tSQ4tbaCcoCx?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 19:50:54.6423
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b483cd3-1b4c-49af-5c33-08dce7095b09
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:
	SJ5PEPF000001F0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4154

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This commit introduces module types of xen, kernel, and ramdisk to allow boot
> module detect code to tag the purpose of a boot module. This reduces the need
> for hard coded order assumptions and global variables to be used by consumers
> of boot modules, such as domain construction.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---

> @@ -2058,6 +2063,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>              cpu_has_nx ? "" : "not ");
>   
>       initrdidx = find_first_bit(module_map, bi->nr_modules);
> +    bi->mods[initrdidx].type = BOOTMOD_RAMDISK;

This is incorrect if an initrd isn't present.

>       if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
>           printk(XENLOG_WARNING
>                  "Multiple initrd candidates, picking module #%u\n",


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:02:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:02:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812393.1225121 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxtvo-0005QV-8d; Mon, 07 Oct 2024 20:02:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812393.1225121; Mon, 07 Oct 2024 20: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 1sxtvo-0005QO-5O; Mon, 07 Oct 2024 20:02:12 +0000
Received: by outflank-mailman (input) for mailman id 812393;
 Mon, 07 Oct 2024 20:02: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxtvm-0005QI-Vf
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:02:10 +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 08647281-84e7-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 22:02:09 +0200 (CEST)
Received: from SJ0PR05CA0054.namprd05.prod.outlook.com (2603:10b6:a03:33f::29)
 by PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.20; Mon, 7 Oct
 2024 20:02:05 +0000
Received: from SJ5PEPF000001EF.namprd05.prod.outlook.com
 (2603:10b6:a03:33f:cafe::34) by SJ0PR05CA0054.outlook.office365.com
 (2603:10b6:a03:33f::29) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.13 via Frontend
 Transport; Mon, 7 Oct 2024 20:02:05 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001EF.mail.protection.outlook.com (10.167.242.203) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 20:02:05 +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.39; Mon, 7 Oct
 2024 15:02:04 -0500
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.39; Mon, 7 Oct
 2024 15:02:04 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 15:02:03 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 08647281-84e7-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hVx3Ej7bhpb1xkaHR4cfPZP3YvbMSHSwDO1a9NFtekaXvp39JBm9OJSbRTrKZEjpChBANpPHQ40FmaIzfiQlucNMg8nX7vrR6og27KcGZRqrS0XYFmoWN3VFplF+K1kmTHW0pP57PDWDdqleiiSztx6PBL586Tx45O83iSyTY2bB03xYxhepriTl8vNEqTHarycHP3EGTg0cGN56+khoSFtHh/ik/+o6eYQs+Z3G6z55LozbEnFI8KuHMCKR1htS8Ep9WD0y8qOrRIc1hbUh0fZ35/iQQ3wQDSXx3k7SdeQxlWd1k50fY6rkePQrCqIvBjo2KJaDrOCNHPMCX8S6tw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=hvDiLvzIcbE3BKIWnhAdC7LU+eUaE8AcSFhnuIGATzM=;
 b=Hox2bAAz8iK1v4lG7LubZ8J1WH77ZVcqcZ9ok5pp9jk80Nac4QMoiKX4F8tjPO9J/NrOv0ERzeNzrF+Ci49sr1JIoJu+0umWrvjKL5uTWBu+HZzuBugZS//6ADcrPbxd4uHuLJ4PbmPdZ1pwBxLhMxXNqUR4NtJIiwPYhPFU6wxuBfkiMvwtO8jN2ivmQ8cAo0TD6a8430E/M+ZGe3S/5qqjmvNUDBx/U13B4TRGnBuA/hnx1EIkQI/s6c7BN00KSfGcQtwNZGnulf2rZOz4AYEhXRRj6xbeGc6QbxG0RuE9RdgsBSr3BDkZ5Sb9B9cK8AMNPDoyJzi2ZpSyleFnjA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=hvDiLvzIcbE3BKIWnhAdC7LU+eUaE8AcSFhnuIGATzM=;
 b=XEYaEcMnAVnKjNK/YaYBt/RZOQlNoEacn1cmGCNhxxTgnSp8+HLJVRT2Cad2nOMx+VBQFILKfK6YE9bPEFEsh09QocVgJOQ4We2mkg2qOiWdEEkgzDrEaTr0RAnqRMh7eOLIV5uQa5cS2SYu4fjyNS50+9Ob9j+ahGgtmrz0rg4=
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: <9372d72c-c98d-495b-bc3c-8b81208f7cd5@amd.com>
Date: Mon, 7 Oct 2024 16:02:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 10/44] x86/boot: introduce boot module flags
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-11-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-11-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001EF:EE_|PH8PR12MB7277:EE_
X-MS-Office365-Filtering-Correlation-Id: 34af617d-dc80-432a-b29d-08dce70aead4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?TWNERWNwMjAyS0FWR0RNdDNlL0lSMVlTUFpJeFgzcXFoNXc1dU1xcEtwMXNn?=
 =?utf-8?B?NzhpaXlwbzUvVG05K0RNUW9WclRzRWc5UXVodXlnNVBqV2lsVWpBNWh2VmF2?=
 =?utf-8?B?Q3ExOE94K3VPYnovMCtWYUNjSzFHejhuRDNwS0V0MjUzZDNyc2Z5eDZreTZn?=
 =?utf-8?B?aStEUUdtQURnNG03ZzU5ZjNVdERyVjNpcm1wOTlTdGVkSXRBZUgwb2xSNlo4?=
 =?utf-8?B?OTZiRnlZR2FXamNjeFV4WWhERm5LVkFzbTlLbWFmMDc1UkVIRFdJTzVDVlQ4?=
 =?utf-8?B?N1lEaEF5WUt1N2dqY2FVQ29xVVpTN3cxZmFZTzJiVzNyTVp5cUM4QWpvNGlV?=
 =?utf-8?B?bnIyci82cC8wNVBmV0NXcGFRcUZ1WFd0US93Q29YNUh2OVIraUtBWHhzWGhk?=
 =?utf-8?B?dmF0WTdkRFVVbEhBdUUvZzBlL29zbWhhOVVlNThZd1FYREJ1dk1DSmM1ZXgy?=
 =?utf-8?B?alRhVU1kNFBNbjh3SFBoS2kzamFXdlAreWVmS0hOaU5nUCtXWHBtZDExZW9C?=
 =?utf-8?B?MzBHUTJ4R0NxcW0rcm5wbGR0YnRtMTRHK1FXdE9obURhaGgzNU9KeXFaUGky?=
 =?utf-8?B?RWRwT3UyL1k5UVF0Y1E0RDhXbXJQaGFHajh4aU1aTFl6amN6NlQrZzlIcE01?=
 =?utf-8?B?ME5CZS8vRm8xdXNFM3Nhem9ydzZjQ29EeXRJVEpQZGpaR2VBSW0vSC9RSFgr?=
 =?utf-8?B?RTF1UWNiemF3TGY3MHFJUWJMcTV0QUpjVzBHU2NOQVBzL1h0eWh2Y3pQM3NY?=
 =?utf-8?B?U2MvNEI2V0t3a1FLaVZBeGo1aHA2NjBZa3FhWVJqbzBZa3ExbEwwb3VHS2J5?=
 =?utf-8?B?TjV1UzBNbHYzdVROekhIUkdHcHhXYUYzN1grODhnelhmbUtIRFBXaUNaTGlp?=
 =?utf-8?B?QWJ5MUF0N3RRTVdacnhaS2FsMmpOM2R2dVZWMHloWldhRXB6YVg5bFhEWGtz?=
 =?utf-8?B?Q0FQcG1qdmZwZmIwRUpyQmNxNDRVc1JYWW5MNy9hNkczWUR0YWVoL0g4VFpM?=
 =?utf-8?B?OEIrdXlxY0ozMkdCanN6WTJZbE02RzVwSVYyRUcwYStvcVd0eGtFVDRsdnBi?=
 =?utf-8?B?bGl5OVBQS2tBVS9MSkN5emp4Y3ZobGRCbVdlVGxTSTdkTzdzeWtlR2p3WkQz?=
 =?utf-8?B?U2RjZ0tGNE51RXF2K1MzRVVrVVNTc2R6ZnhIeU50SlN1K1hTa2piQlVpQ29m?=
 =?utf-8?B?N3RuSS9nL1BDMkNvSTF3QUNOREgxSUhBc21KT1hZRWtzTUFpS1BUV2xQTWRK?=
 =?utf-8?B?aHRHT2JBQWhMMDZaSFc2UXJZdFo4aWo4bnFuVjZaYTd4ekJ5Y2ZWbDRZeXlk?=
 =?utf-8?B?bmlhYXYxT3Nock42ZFZZWDBYd2tPcW9hTEJBZUZJT1MramxIYzVNVVRlY3hp?=
 =?utf-8?B?NzNRT3hxR216ei9NeXJNLytGamlwci9BaHlaejNmSCtDdXp0U0tHMmNJR2pB?=
 =?utf-8?B?MWVPNDJxcmNMazFETXFja0E0NGVnVXJtdWxsUmZpSk1MUGczcG0zWjVTYWNt?=
 =?utf-8?B?aXljNjUyaS9QR3hpbnNkTTlnMStNSnMzOUhnSXdmakxPR3pINlova0V1M0Fv?=
 =?utf-8?B?OXQxQktqUWpScWg4QUdqYytLM0FVS3VPRklCQzhGOTFGK3VKQjZ0L0JmWVVK?=
 =?utf-8?B?M1I3QTdHZXBCb0hDMDdzNUhuZFlJY0U1L2R4Qnovdng0T0F2Vzc0aGgvREQz?=
 =?utf-8?B?QlY2WDVHMzJNOGlWd2NwcU1TSVpBeDhWNHhYVFczQnI2cWg5Z0xHczA1aW5x?=
 =?utf-8?B?dTd6RTc3VHk2eGV1ZjJQbEpzNEdBblNWaDFjRzBNSUVlekd3Tnk5WHlKZHpC?=
 =?utf-8?B?bkpPc0tXeHNCOWpQMFNZZDJtSVVjbUR5Y1JIS25TWXd4cGlzaGdRUVA4NEdr?=
 =?utf-8?Q?+sXvC5tz1665o?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 20:02:05.3858
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 34af617d-dc80-432a-b29d-08dce70aead4
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:
	SJ5PEPF000001EF.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7277

On 2024-10-06 17:49, Daniel P. Smith wrote:
> The existing startup code employs various ad-hoc state tracking about certain
> boot module types by each area of the code. A boot module flags is added to
> enable tracking these different states.  The first state to be transition by
> this commit is module relocation.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootinfo.h | 4 ++++
>   xen/arch/x86/setup.c                | 8 ++++----
>   2 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index 6941a8975ea6..021ff0d93643 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -31,6 +31,10 @@ struct boot_module {
>        */
>       unsigned long headroom;
>       enum bootmod_type type;
> +
> +    uint32_t flags;
> +#define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
> +

Stray newline.  Otherwise:
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

>   };
>   
>   /*


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:04:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:04:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812399.1225131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxty7-0005zC-Kb; Mon, 07 Oct 2024 20:04:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812399.1225131; Mon, 07 Oct 2024 20:04: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 1sxty7-0005z5-Hi; Mon, 07 Oct 2024 20:04:35 +0000
Received: by outflank-mailman (input) for mailman id 812399;
 Mon, 07 Oct 2024 20:04: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxty5-0005yx-LB
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:04:33 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2413::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5d721cff-84e7-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 22:04:32 +0200 (CEST)
Received: from SA0PR11CA0035.namprd11.prod.outlook.com (2603:10b6:806:d0::10)
 by SN7PR12MB7835.namprd12.prod.outlook.com (2603:10b6:806:328::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 20:04:28 +0000
Received: from SA2PEPF00003AE9.namprd02.prod.outlook.com
 (2603:10b6:806:d0:cafe::44) by SA0PR11CA0035.outlook.office365.com
 (2603:10b6:806:d0::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.21 via Frontend
 Transport; Mon, 7 Oct 2024 20:04:26 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF00003AE9.mail.protection.outlook.com (10.167.248.9) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 20:04:26 +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.39; Mon, 7 Oct
 2024 15:04:23 -0500
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.39; Mon, 7 Oct
 2024 15:04:23 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 15:04:22 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d721cff-84e7-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=KgOouPM9HmN95bQj22Tj+DC8+wPXcxR1mGzhfFP47DkZIKVu6bGExnFQvbC6viXE6YVUCsjL5pUqRuIu9XwfLhK+robo7cEknKOs+exZOL8rqpXEELhaLsg0leF6svkqBfIMjJemHMbcSN1G7PjYYDcbjJKGoDQLGxPU/KC0NB1M2SaI4a+7Roz+euyna747bGZBm4k11PM7WcuLF4susnJm9j+2JVkvsSyKZThD8nrMElb7HU1AYBN4xjTXJG1cINJVkqcNhBxPrWG0WqBHLx/SNOhepAMdW5mz+XylKbHmOo1rZQl1GwR2v+45TY6uks/+5ltH5kVog9+k4L8+Ew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=MOPG92eorYTmfbe61E1Wdo4sHKbT7AKPHtX0ScPWvm4=;
 b=boqYoWNrihT75W9I7MJ/Q1INWKZyS6+YNxZu7Rlx/j5YAW4cFAq1Inlvpfhmb9hCBT+LA+BRwGfj3g09sqipQSiRKHGstLusi8Yu01R5zNzPPlnJMwR2Kn04A44zmbrB0bJw6Xk9Br3BTkFCzjnc43QyYIYu4pV58vyvDFbo4/98gbDDo3H7m/Np9IfnyOBe/SfIkyHXqDFCF2GHwO/u8pzCRQxKIdzxaAVNHRjnco9wKmdl8wtAbZsDabCS8x50hoOCkjWs8HziZGpddVcv6OTBo8eWWFbiHzOvLFw8zFG6g60JypvkNZzINY8FPWF8gwM8UQlGVLsZqN/h3FnbgQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=MOPG92eorYTmfbe61E1Wdo4sHKbT7AKPHtX0ScPWvm4=;
 b=1lAmfPz/z9s2Wukl9T6p6OKFQpR3HUIUnx3KrgYjaOMztGUWdI31hLGAoelAIdmi3b5bQ9K4iF5Yg4saC8G0Au2l/AzBU2dbrC1cm2ayMvuE9cyTtY/MKHAtZ2vjCMObQ8JMbR9Ur36+KRnZQR/T8px4QrSgvUSQ9dUgSG9Soh0=
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: <89c73590-cd9b-4796-9359-3b37fd55a5ae@amd.com>
Date: Mon, 7 Oct 2024 16:04:22 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 11/44] x86/boot: split bootstrap_map_addr() out of
 bootstrap_map()
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>,
	<christopher.w.clark@gmail.com>, <stefano.stabellini@amd.com>, Jan Beulich
	<jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-12-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-12-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF00003AE9:EE_|SN7PR12MB7835:EE_
X-MS-Office365-Filtering-Correlation-Id: 27c3e0d7-fb49-4009-c598-08dce70b3eed
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?dXRCMVFOMGVPN000RWhYR0tnTlo3SllPN200K0lTd0xNL1RXN2ZIU2VWSmtT?=
 =?utf-8?B?b1RxU3RubXhzTTQ2T01GQzFOQ0IwNUpsQkhNQWZsa1dqa0p6dlJ1Y3J3eDcz?=
 =?utf-8?B?RVp6bnVyTU9CS0tqcDIwR21CQkl3c3RoRXVNU05GeFU2RnExQ0ZHT2FYWnh6?=
 =?utf-8?B?ZVNVSHUxLzh5alNSWjFVbERYcFJNMlpNbU5Ta2R4dGNuRmp1RUNjM0NQcTJp?=
 =?utf-8?B?TVhEakZEQ2d0aENkeUdiN2xxRmJTU1lPR05UeklyajBnbnZQaVp5WE5QQ0JI?=
 =?utf-8?B?ZU02eGUyOCtzYW5vc2V2Ym5tRW5QQUhvZ0ZOSW5ZdFRHZDJOSFhTU3NBWHpy?=
 =?utf-8?B?RTcrLzhiN0hkZHBzK0R2dnBZRVFPK05qTVNsZWRiQzdpVisyVzFHbEswSC9z?=
 =?utf-8?B?bjc1WW5BTnZNWjZIb05naTNCSFJqak5VRzR6cGpNQTJOR0JuSzVXTlhnM1A4?=
 =?utf-8?B?a2prZDEvVCt6bVY0dTZUc3l5bytYU3hGc1B1a0JkK0E3M1ZWK3ZGOHptWTI5?=
 =?utf-8?B?NXozeVJQVnFTVFhRWVhNTDBKZ2NzS1FhYmlnelQzZUdrNnRNbFhvVm1QRGxi?=
 =?utf-8?B?WkYvejJBTkRVMG9JWmI2OGcvNkNaN1NiejBPZmNGYXlvMGFuTFJLc1YxUSty?=
 =?utf-8?B?RUMrb205QlRjVFVrWDhEeVQyWmpZZGlIdUI2VXQyVEZSc0FqVnNwb3ZRSG83?=
 =?utf-8?B?Y2VTYUt6bi93dGltRlQwaUJOSCthZm9laENRMGMyeHpRMnBrbHNydmlwcWor?=
 =?utf-8?B?amhhcjVzL0RUTjZjeU1icVgvdW9ON2VXUURDZUNSMXRjL256aEdKS3NMa2xu?=
 =?utf-8?B?NjNqeVhqQWxwZXVHY3I3YlI3a0FicjJnOEVRWFIyTmRZMjZURDRmL3lRc3FQ?=
 =?utf-8?B?ZzBHMElxWXh0cmRONGNQK0lFaktMZHplcnVjT1dFb3dzSXJQN2VHTytZc1VJ?=
 =?utf-8?B?Vnc5ZFZvdlpFNE1nSnNFTkVrSXA5QnBJQXhhRS83SVVML0NpbWtKd1Y5YXVW?=
 =?utf-8?B?RklhV2xKdFNQdkRZUUl3VHNIb25uR3ZpQUtweEUrVFpxK1BnL2d5QXFic2t0?=
 =?utf-8?B?aUFjcEFFMmdrMjZ5Y2JPbGVIZFhGQ3Y3VlcwdHRhdnN3bkJCVEJnN2hrQVFl?=
 =?utf-8?B?R3ZGNUU0MDh1SW9zaXMvdlVvSWQ5WHJqVHpIektXVlFuYnloNVB2a0k1dVFy?=
 =?utf-8?B?eDFoaWRoT1Y0MDI4Mzk1cDE3TWV3aSsvZHd6WXkvdDA4TDRMcllvS0R2dUcx?=
 =?utf-8?B?Rm5PMDJJaFBIakszTU44ZHZXSXZ3NDVEZG0vcEVNekphYTJLUFFrUG1aT0ZM?=
 =?utf-8?B?SnNyV3hFZm1RNUZhSVlJcmdCcC9UTE1td2V1RzNqUlNkYnU2QXFDN0cxRXhp?=
 =?utf-8?B?SVVBMERRcnp1V0ticGljZTlEQ0xxWS9GZ2dIK0x3cGlaeDgzdkp2VENsTDRi?=
 =?utf-8?B?T3VaZ1Q3M1hrb0Y4VmFnalkwbFQ1Y0U2dTJ2T2ZoaVo5RjNZOW4xVnFKdndD?=
 =?utf-8?B?QTFyaUNMcnJGNzdyMGMrOGpwYmZVaHkwZWU0NzdrbUhCTWtsdmZHa3prN1Jt?=
 =?utf-8?B?eUQzVndCQnR4a1huRUpQbEJXQWZtdDEvTnlJeHFyM3ZHMUpRWitxNzlMOW1q?=
 =?utf-8?B?b0dWWjBKYVNZK042aTJzMXdxVDNFTU93VlhtbnJRMnA4TE1GbDI2NkVIZVZK?=
 =?utf-8?B?SUVvZjlRMEtoSmhxZUVRc1R3YW5VTGlEelRtb3JnRktaanNSUXhlU000eDVi?=
 =?utf-8?B?QStjVVJ4TWV6UzJ3VmhKenlpYXdWamtjMm8yUUUvVXA4SWh2alJYUXVqcUtS?=
 =?utf-8?B?cnlFMFRhUFp6amp4OXQ3VjlYNDkydWlTYkRreEdDQi9Ib1lVRkdjV09wLzly?=
 =?utf-8?Q?ZJQZmRpJoIgXA?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 20:04:26.5258
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 27c3e0d7-fb49-4009-c598-08dce70b3eed
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:
	SA2PEPF00003AE9.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7835

On 2024-10-06 17:49, Daniel P. Smith wrote:
> From: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Using an interface based on addresses directly, not modules.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:06:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:06:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812409.1225141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxu0G-0007JW-5F; Mon, 07 Oct 2024 20:06:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812409.1225141; Mon, 07 Oct 2024 20:06: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 1sxu0G-0007JP-13; Mon, 07 Oct 2024 20:06:48 +0000
Received: by outflank-mailman (input) for mailman id 812409;
 Mon, 07 Oct 2024 20:06: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxu0E-0006Z9-V2
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:06:46 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20605.outbound.protection.outlook.com
 [2a01:111:f403:200a::605])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ac699f9b-84e7-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 22:06:45 +0200 (CEST)
Received: from BN9PR03CA0863.namprd03.prod.outlook.com (2603:10b6:408:13d::28)
 by IA0PR12MB9009.namprd12.prod.outlook.com (2603:10b6:208:48f::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 20:06:39 +0000
Received: from BN3PEPF0000B06D.namprd21.prod.outlook.com
 (2603:10b6:408:13d:cafe::41) by BN9PR03CA0863.outlook.office365.com
 (2603:10b6:408:13d::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.21 via Frontend
 Transport; Mon, 7 Oct 2024 20:06:39 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN3PEPF0000B06D.mail.protection.outlook.com (10.167.243.72) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.0 via Frontend Transport; Mon, 7 Oct 2024 20:06:39 +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.39; Mon, 7 Oct
 2024 15:06:38 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 15:06:37 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ac699f9b-84e7-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=aR7XlkQyUc03fpI1OHMfTyTFkCfdshBIzntYIvfrXtekTbZ0waOo/8D5Tvdh7VLqWgwvyQbSG4LUf3dEv+EHJAuE54IEhAPDIYwSLpfVpusXEwmpZ1NiNB4Cb14ZkRV6S73sBcXUTk2IjG0p16drv9FZ7NKQYDEj4HXklknqzH6XAud0xep4VoqUMkdGQ056vIiZZigbBXDZw6PlS73CuB+k23X48Js4Uh7tJ5qUCfK1cEaBz5HcAy9AgRNyzBPRzioLhLPxiGhNH9i0lWAg2DeStdMcr23y72IwM1GL4aNjCJ38+4j8U5umlJTiqXlwSKIGi8ThPT8DVnAiM5ieTw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=hrLGksyjXFFJ5wvDTkbI352fbo+xtAqIlEhAL1dPVqc=;
 b=LTuP0k3wESB9xbDYAatIo8LDrHrinyOkaYTv1PueoDU1o/XVAr59heSxI3QndxyHwCiUM78Bhsi91vUBHyaGbFp0GNsA39OgKEIA2kahSIS6qPtp8StWKWXcedf8eTgEesKj1X8EOeJCY9UXfACTCIoW5JVhkje3LfJ2ocqndy8dlNOa+LRIUCNbLupxjgp6eObaJJyLzlnCpKHqu46gdmipNSeshWZRgAaHDY7aOoDBY+011for+P93oF4URs8waKvAIKTRA4Ag3eYIK+/N1PxfD0aUeH83k1iNmAaidmgRfcYusoD1+ZjA0hMmZ/ZxAapFJ2+DudfXcIWFM7YrJA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=hrLGksyjXFFJ5wvDTkbI352fbo+xtAqIlEhAL1dPVqc=;
 b=C5NAwfVVYmY1Tpxfayr/hxDYnvPvUL2NU4XDZKrqeAHwIRTE9nE8W20ZF6tsTirSN4ce96Ykz/Ty4/bwTzJrAloep32r6WgUeLY6wm1k+5VD8KcSpi+8o2fzfdf3F8V/zoiMn3IlZN9aOTbiwVEkxoI/bqnaOdOImVaorrgLTDc=
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: <63bb9a83-7f54-43b9-99b6-e1dd40361763@amd.com>
Date: Mon, 7 Oct 2024 16:06:37 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 12/44] x86/boot: add start and size fields to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-13-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-13-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF0000B06D:EE_|IA0PR12MB9009:EE_
X-MS-Office365-Filtering-Correlation-Id: d165b028-5b68-470e-fa55-08dce70b8df2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MW5idU5FQkhhaUJFQzd4emF5WGZFaWtmUG1BMmErRG54dTRrMThKckV4bCtK?=
 =?utf-8?B?RU4yS3dEamtrWHkzWEswbFhJVGQxT214c3oyQXMyaGI3M1dpMGxLZEZtSGJH?=
 =?utf-8?B?Q1dWWjZ0b29XQW82UnJrN29jeUdSOFlaZ1JvdmpHM2dxWGNCVTJsdzVsUjBC?=
 =?utf-8?B?RDFNSWVnZVVkY1laS3pWYnNTMDJKN3gySS8zVGZaQ1FVcHhwV0QwSDZHK0N3?=
 =?utf-8?B?K1ZHMVlESlkrWmQ0bU9mTmJVWXFLNmtPMDFZTXFRYzNGMG5iVHk4eHBZbTg0?=
 =?utf-8?B?Si9QQktubkZyQ0dyanlGV1RzMy9rU1BBaUhoQVhuNkdLRGxUYW9hVWlmNTVv?=
 =?utf-8?B?Z1YwcTF0alc4dWdkaHFUMkk5eXk0RUtVRlRSNkJHbTJTSmRsZDFNblp4dDZZ?=
 =?utf-8?B?cytVQWdyR3piSGtKZ3VoMEJNdTR1YXNhd0tzeWw2elJYWEFsQVliUnRJdmhF?=
 =?utf-8?B?LzF1REtIZnA5dEQxbXZYblZFcVA3dnE1WW42NUhGVmtMMlZaT25EclZHY0J1?=
 =?utf-8?B?aWFDNzZhd2pwZkNndzdYYmovTU1aczlnQWRVMXJsblp0cWdsK2RQTlFHWG1C?=
 =?utf-8?B?MWxCMG04T0pVRE5qTkhIdWtiK1JCL0pnc3hGZVpGNXh5bEtrYUdCdEkxa1BM?=
 =?utf-8?B?L2ZWRG83THRvYW5TaDZua2pWSWZqOWtQV2hlUVlIRUZSWjhoU3VEa29KcG50?=
 =?utf-8?B?bytLbGR5c20vY0lHcWRoRm9sWHl2bWFPeDh1VjhIUHZJeE5HTG9ZQ3pBVGtQ?=
 =?utf-8?B?OTZzOWFzQUdESEtqdExYNnNBMVhjZnQ3eUxUVjNROHd0alJ5NE1BMWdkdGNo?=
 =?utf-8?B?OE5LcEdLbUJmZWhYbldpK04wSXdNNmdDeE5senpYNmlpaFVBNnpFU2dpZTFH?=
 =?utf-8?B?NzBodCt2Mzl6MXhqN1FRZzdhTjFhaUJicVN2bnphYmFZTzdVWUNiOWFBcnlP?=
 =?utf-8?B?c0lPNDc5UGNNTG9DYk1VQU5ReVovd2RXb0xyYVNkUWtCM0NQbnBqcGYzTmtT?=
 =?utf-8?B?UTRlMWxOaXNDOXNDaVNnRlBGSnJTRGJ2MXJreHQzV3MrbTZkTWg0QXllY2NL?=
 =?utf-8?B?TUM3SG1jZStMVWU2RFFyL01TRHV4TDhoamZqaWhoc3R3UDdHK1NIdTRHVy84?=
 =?utf-8?B?ZjZmV1U3MEZ3VHd5NmlCV1QwY0h1T0dDaWNLd2dUMXNkYmFGaVBXU0JZUU9H?=
 =?utf-8?B?YnZNRThMYkFOWmJJWlZZM0FhYWh5OGpXTmVzeEVnbzBwVzJMeDU3VjBDUFRj?=
 =?utf-8?B?RzFTYVhrcU5aNnUxTy9BZFlwOWhzbU50TWVyaEhpVVFkaEd6NEgwTi9tbnQw?=
 =?utf-8?B?cCtVRHFqS2t1TU5HaHN6bVlrOWRZT2pmTkpQWWZ1RjZwZU12VWtOc2Q1OWU2?=
 =?utf-8?B?V2J2TWovVVhpei8zQUdaY3FJZk5uVkV3MFEyd0xRTTZXcFBkVU5yVEp1NVpI?=
 =?utf-8?B?QnFOZUt4N3J0SXhqZTVLcW9iZHRVcDBqS0FzbUtKNjFiRGJqL05Xc3NHZXUr?=
 =?utf-8?B?UGNDWE8yU0JFUWdZUW8vL0Z6Ulg1NzExSnMxWm9jbnl5QVBibjlUOG1Pakpy?=
 =?utf-8?B?MGZTMngwTDZZdXBpNkVrMlhteGw3Tk1FVXFSNUtvZjc1TTBxQmptWXgxOWJ0?=
 =?utf-8?B?b2xHOHgwcGZRMTJMYmpZdGdUZmRRN3M5UXlHcW96c1RCcTdvNkQ0WXpOUXhL?=
 =?utf-8?B?VjExSUN2dUZqTGN1Um9jdUxPQ3REaVFYRVNldys4UXRLY0pzUzJSOG9sbkFN?=
 =?utf-8?B?MDBHSWloVjRmcjM5c2RNRnhPTE9MSGhKZmRNV3Y0dEcxQ3RLL0hWb2pwUllr?=
 =?utf-8?B?MDhoUWhKS1JucTVmdC9EZ1JEZVdzdkdkR0I4ZlV6MXdaL1pBMnV2RFZ4MXhz?=
 =?utf-8?Q?5T66GP7KlxSIe?=
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:(13230040)(82310400026)(376014)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 20:06:39.1154
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d165b028-5b68-470e-fa55-08dce70b8df2
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:
	BN3PEPF0000B06D.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB9009

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This commit introduces the start and size fields to struct boot_module and adds
> a corresponding bootstrap mapping function, bootstrap_map_bm.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:24:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:24:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812415.1225150 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuHV-0002QQ-FQ; Mon, 07 Oct 2024 20:24:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812415.1225150; Mon, 07 Oct 2024 20: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 1sxuHV-0002QJ-Cy; Mon, 07 Oct 2024 20:24:37 +0000
Received: by outflank-mailman (input) for mailman id 812415;
 Mon, 07 Oct 2024 20: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=QHG9=RD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sxuHT-0002QD-S0
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:24:35 +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 2a16aaef-84ea-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 22:24:34 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id D9BC85C54CC;
 Mon,  7 Oct 2024 20:24:28 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C98B7C4CEC6;
 Mon,  7 Oct 2024 20:24: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: 2a16aaef-84ea-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728332672;
	bh=yIgdFyeI8J6rii4fHmrqh67KlXYe2GZlpB103AnFXmM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=r4ClFUVy6YP4IlWSdYqUw5SrNdGtWXn632j+L88PKpkYYgM8Wt3as6kTf13VraMQR
	 y+Ua7X5qVVzE+xFyXgrlQACi8e/X/nIL3h29b/3SPsMsGsoKUw4Z7eb6lhV20CMdCq
	 5Bs5crDkLVw2puemsJONsNL4wG6yc6PbthghU7QAAj0GOyvzmiPNmG/F2vc7FGtMoX
	 tMYmxKw+A/B5yCEORjvyRvTDO4Q4nHEECbHtn88Hn0aSVJ/f8RP1ZMXEBZLxAiaSIO
	 FVuxFd4OSeSoExum5324ntdfcBF2f9ha3BB3Yr8komuWeJ0cO/RrG0NbJM9XBr988K
	 ndfGmMOik3cBQ==
Date: Mon, 7 Oct 2024 13:24:30 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Anthony PERARD <anthony.perard@vates.tech>
cc: Andrew Cooper <andrew.cooper3@citrix.com>, 
    Xen-devel <xen-devel@lists.xenproject.org>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH] CI: Drop bin86/dev86 from archlinux container
In-Reply-To: <ZwP3FiXXCmlyxeHF@l14>
Message-ID: <alpine.DEB.2.22.394.2410071323380.1138574@ubuntu-linux-20-04-desktop>
References: <20241007095637.2450599-1-andrew.cooper3@citrix.com> <ZwP3FiXXCmlyxeHF@l14>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-318360012-1728332625=:1138574"
Content-ID: <alpine.DEB.2.22.394.2410071324290.1138574@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-318360012-1728332625=:1138574
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410071324291.1138574@ubuntu-linux-20-04-desktop>

On Mon, 7 Oct 2024, Anthony PERARD wrote:
> On Mon, Oct 07, 2024 at 10:56:37AM +0100, Andrew Cooper wrote:
> > These packages have moved out of main to AUR, and are not easily accessible
> > any more.  Drop them, because they're only needed for RomBIOS which is very
> > legacy these days.
> >
> > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>
--8323329-318360012-1728332625=:1138574--


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:24:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:24:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812416.1225161 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuHi-0002ih-N6; Mon, 07 Oct 2024 20:24:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812416.1225161; Mon, 07 Oct 2024 20: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 1sxuHi-0002ia-KU; Mon, 07 Oct 2024 20:24:50 +0000
Received: by outflank-mailman (input) for mailman id 812416;
 Mon, 07 Oct 2024 20:24: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=QHG9=RD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sxuHh-0002i3-7S
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:24:49 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 319cec4b-84ea-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 22:24:46 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id E7BCAA4083D;
 Mon,  7 Oct 2024 20:24:36 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F119C4CEC6;
 Mon,  7 Oct 2024 20:24: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: 319cec4b-84ea-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728332685;
	bh=kGlF+GBbot2nWjfiSmrO4L3Xw0iTyJHFFwtaScNZIX8=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=Ftlc5BCBFCb4rsA8h41q7jdiaMOjTAsonDSZWqv7NFgdzrVxMxqKfljg/SSRqQfbY
	 ZZnIAWTUecKBgeHt2lQ2VrKiSyKbqgG61tOXzUOlvkt4YHMSzGqGjwabIsxjC6DQP1
	 UpZkCa4gBG80Bw7+QkvUxU9e4Um/0ywLwBFclDRIb7kAdJBJyoZsoKPOjJsvrlxLnB
	 MlSeNBgWu87xO8UB6y3rYE8QtTS8ccdJyly9lHn0FxnU4D65R/9k62AjNA0YcL6my/
	 RzyqI1UPCN3GWJjoEpF5hvpDpy4IpFwNwlcZrHSJYYnYxlWvG78vB+MjO4Sloex6bV
	 Abf3RlOw025sQ==
Date: Mon, 7 Oct 2024 13:24:42 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    Sergiy Kibrik <Sergiy_Kibrik@epam.com>, xen-devel@lists.xenproject.org, 
    Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>
Subject: Re: [XEN PATCH v1 2/3] x86/hvm: introduce config option for stdvga
 emulation
In-Reply-To: <ZwO0mH0X96pbx8z_@macbook.local>
Message-ID: <alpine.DEB.2.22.394.2410071311380.1138574@ubuntu-linux-20-04-desktop>
References: <cover.1728032664.git.Sergiy_Kibrik@epam.com> <05a027b7021ce6deb5b48078034e560a38ca8d23.1728032664.git.Sergiy_Kibrik@epam.com> <Zv_pszkRrPXstXFW@macbook.local> <alpine.DEB.2.22.394.2410041407370.1138574@ubuntu-linux-20-04-desktop>
 <ZwO0mH0X96pbx8z_@macbook.local>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1408700942-1728331926=:1138574"
Content-ID: <alpine.DEB.2.22.394.2410071312110.1138574@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-1408700942-1728331926=:1138574
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410071312111.1138574@ubuntu-linux-20-04-desktop>

On Mon, 7 Oct 2024, Roger Pau Monné wrote:
> On Fri, Oct 04, 2024 at 02:08:10PM -0700, Stefano Stabellini wrote:
> > On Fri, 4 Oct 2024, Roger Pau Monné wrote:
> > > On Fri, Oct 04, 2024 at 12:33:53PM +0300, Sergiy Kibrik wrote:
> > > > Introduce config option X86_STDVGA so that stdvga emulation driver can later be
> > > > made configurable and be disabled on systems that don't need it.
> > > > 
> > > > As a first step the option is hidden from user. No functional changes intended.
> > > > 
> > > > Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com>
> > > > CC: Jan Beulich <jbeulich@suse.com>
> > > > ---
> > > >  xen/arch/x86/Kconfig              | 3 +++
> > > >  xen/arch/x86/hvm/Makefile         | 2 +-
> > > >  xen/arch/x86/include/asm/domain.h | 3 ++-
> > > >  xen/arch/x86/include/asm/hvm/io.h | 4 ++++
> > > >  4 files changed, 10 insertions(+), 2 deletions(-)
> > > > 
> > > > diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
> > > > index 95275dc17e..89c42ff6da 100644
> > > > --- a/xen/arch/x86/Kconfig
> > > > +++ b/xen/arch/x86/Kconfig
> > > > @@ -147,6 +147,9 @@ config INTEL_VMX
> > > >  config X86_PMTIMER
> > > >  	def_bool HVM
> > > >  
> > > > +config X86_STDVGA
> > > > +	def_bool HVM
> > > 
> > > Same as previous patch, the content of patch 3 needs to be moved here.
> > > 
> > > > +
> > > >  config XEN_SHSTK
> > > >  	bool "Supervisor Shadow Stacks"
> > > >  	depends on HAS_AS_CET_SS
> > > > diff --git a/xen/arch/x86/hvm/Makefile b/xen/arch/x86/hvm/Makefile
> > > > index 321241f0bf..b7741b0f60 100644
> > > > --- a/xen/arch/x86/hvm/Makefile
> > > > +++ b/xen/arch/x86/hvm/Makefile
> > > > @@ -22,7 +22,7 @@ obj-$(CONFIG_X86_PMTIMER) += pmtimer.o
> > > >  obj-y += quirks.o
> > > >  obj-y += rtc.o
> > > >  obj-y += save.o
> > > > -obj-y += stdvga.o
> > > > +obj-$(CONFIG_X86_STDVGA) += stdvga.o
> > > >  obj-y += vioapic.o
> > > >  obj-y += vlapic.o
> > > >  obj-y += vm_event.o
> > > > diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
> > > > index 3f65bfd190..675a13d917 100644
> > > > --- a/xen/arch/x86/include/asm/domain.h
> > > > +++ b/xen/arch/x86/include/asm/domain.h
> > > > @@ -501,7 +501,8 @@ struct arch_domain
> > > >  #define has_vrtc(d)        (!!((d)->arch.emulation_flags & X86_EMU_RTC))
> > > >  #define has_vioapic(d)     (!!((d)->arch.emulation_flags & X86_EMU_IOAPIC))
> > > >  #define has_vpic(d)        (!!((d)->arch.emulation_flags & X86_EMU_PIC))
> > > > -#define has_vvga(d)        (!!((d)->arch.emulation_flags & X86_EMU_VGA))
> > > > +#define has_vvga(d)        (IS_ENABLED(CONFIG_X86_STDVGA) && \
> > > 
> > > You don't need the IS_ENABLED() if emulation_flags_ok() is adjusted
> > > accordingly.
> > 
> > Same as patch #1 regarding compiler DCE, we could either do this or
> > define X86_EMU_VGA to zero
> 
> Yup, seen that.  Defining iX86_EMU_VGA to 0 would be my preference,
> like it's done for the !CONFIG_HVM case.

OK, in that case I suggest we go with defining X86_EMU_VGA and
X86_EMU_PM to 0


> Note however, that like has_vpm(), has_vvga() is only used in the file
> that this patch makes optional from the build.

Yeah but it seems more robust not to rely on that
--8323329-1408700942-1728331926=:1138574--


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:30:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:30:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812427.1225171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuN1-00087g-9j; Mon, 07 Oct 2024 20:30:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812427.1225171; Mon, 07 Oct 2024 20: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 1sxuN1-00087Z-6I; Mon, 07 Oct 2024 20:30:19 +0000
Received: by outflank-mailman (input) for mailman id 812427;
 Mon, 07 Oct 2024 20: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=QHG9=RD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sxuMz-00087T-Fm
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:30:17 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f5f9ec23-84ea-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 22:30:16 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 8E084A404A3;
 Mon,  7 Oct 2024 20:30:06 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 035B4C4CEC6;
 Mon,  7 Oct 2024 20:30: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: f5f9ec23-84ea-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728333014;
	bh=sgKV1X920oNJ4s7lMbLjM0/ZB0gWwAgObClo78OlrU0=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=tM1wYyEQTqcVQ9K4lpt3SwSJM9GKwiezURPL0kmTXNgR8x2lH8D43x4ccCxebnrbl
	 W7+4kObsrhTLFGpMrmWFuIfmKR3ETbIpfg0n1yLVcrYpeT91R+OQOhP5TSzLDfA75X
	 2C6LBaMt0QxISscCdCZGGQZWSuygcmeriPCZxxD8G4pcLtF9PFBVdfGvCT/rbpCu3A
	 NoucO+ZzPJTds3uitYDQFtJkkaVBy1gc3RVopJ4plCl7rSdUe0nEpyd7H1T/1lRshJ
	 yt8YBIPfl1A9RH9hKzauBYry2qCXXBoMyhduQxft+zUERRUlA45r1O4Dkp0DrJKxHN
	 gelpaqB9dT7kA==
Date: Mon, 7 Oct 2024 13:30:08 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Olaf Hering <olaf@aepfle.de>, xen-devel@lists.xenproject.org, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v1] automation: use python-3.11 in Leap container
In-Reply-To: <a831b390-5136-40fd-8bc3-2b373ec0ec84@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410071329270.3512606@ubuntu-linux-20-04-desktop>
References: <20241007152518.1416-1-olaf@aepfle.de> <a831b390-5136-40fd-8bc3-2b373ec0ec84@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-1729065238-1728333014=:3512606"

  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-1729065238-1728333014=:3512606
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Mon, 7 Oct 2024, Andrew Cooper wrote:
> On 07/10/2024 4:25 pm, Olaf Hering wrote:
> > python311 is available since Leap 15.4 as additional Python variant.
> >
> > Signed-off-by: Olaf Hering <olaf@aepfle.de>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

assuming it doesn't break the build:
Acked-by: Stefano Stabellini <sstabellini@kernel.org>

> I'm tempted to take and deploy this immediately.  Leap is already not
> building QEMU, and this patch doesn't change.

I am OK with that
--8323329-1729065238-1728333014=:3512606--


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:31:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:31:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812432.1225180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuOE-0000Z4-Ja; Mon, 07 Oct 2024 20:31:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812432.1225180; Mon, 07 Oct 2024 20:31: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 1sxuOE-0000Yx-Gf; Mon, 07 Oct 2024 20:31:34 +0000
Received: by outflank-mailman (input) for mailman id 812432;
 Mon, 07 Oct 2024 20: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxuOD-0000Yr-FC
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:31:33 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2060b.outbound.protection.outlook.com
 [2a01:111:f403:2417::60b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 22d021db-84eb-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 22:31:32 +0200 (CEST)
Received: from SA0PR11CA0014.namprd11.prod.outlook.com (2603:10b6:806:d3::19)
 by MW6PR12MB8664.namprd12.prod.outlook.com (2603:10b6:303:23c::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Mon, 7 Oct
 2024 20:31:27 +0000
Received: from SA2PEPF00003F68.namprd04.prod.outlook.com
 (2603:10b6:806:d3:cafe::b9) by SA0PR11CA0014.outlook.office365.com
 (2603:10b6:806:d3::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 20:31:27 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SA2PEPF00003F68.mail.protection.outlook.com (10.167.248.43) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 20:31:26 +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.39; Mon, 7 Oct
 2024 15:31:26 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 15:31:25 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 22d021db-84eb-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=nJJGdRxyt+YKdBCeyRZjY6/7Waj0+DAHQVVgngH9J2QVPeAXd4nfpXR8Qy1wslSW7QdlbeRNycqJPx/CNc74w7ZEs07gx9XySAodP8S2Cxy9znY7gB9LiyqqTrQIkJUpSFnoEs8Vb6lOwb8ingyunyiUYVldjYa8rYDNjfWG/DaX/1vHIczurRYMw33LQHCopY36THwJU5QsgnjPagW7B0o42ExX8y+dm1gCVogZGnWFI1CoEI0Ci4StN2bXPdOlq7jLGMsyncYuVJCTdw9p1xgMLfRaeZhhQko3lE52hSzUZNY3JPT4ckmBlGqHZHg2W/pCWcwmPHekYkXMvq1ZoQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=rVgA2uvEditNMcaetxjBNpetmRO/dF8TLAN1iuHd40E=;
 b=F1IlltoEdzsHYw3X5bA5fLZd4OtnJXJY/UIzFNxU6vfb57G609im/F3CUQcGH5shCxZw2+7HhoWQroGisJYV9NrULQbOwn7BZPN+0WxsMo3VC5ccJXSEZ/tpJRa2hIgxvDqWYhFWoWoe1edzVMlZBqgG3E2aZhLGps7vKFwoaqDed2f8TaGuiv6RxBKSGJlGHTwWyEVCLJIo/OVwS4okFGVOtYuWgBYyxCj0yZrtct5Vi4sc7yo59v5e2QdaYwg0DvnnZ3E6nv9Np+Bpge/PlMnvI+ygav5g0dHbJqa8Wil8DU3GNfhY35M7GESp446lsozdNFkTtDq8X3XfmzFOjA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=rVgA2uvEditNMcaetxjBNpetmRO/dF8TLAN1iuHd40E=;
 b=VUhDxKFSzU1zbSe7Fg1WcdsJ4dgJEzPBGSJwsK+YF6/8IU61pEkGoTsvhU9qxS0YgY4jUXAxZ58NZwe6HaQM9O/MkgVqQaO4CT3pDrijczPxFGNplAV2JbtaP2rOkARO6zozxGU0bTFTksL1MfYCK5L81n+k93rTP56u2I6nGRk=
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: <87771eef-050a-4d2f-845f-cbb053be4f72@amd.com>
Date: Mon, 7 Oct 2024 16:31:25 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/44] x86/boot: update struct boot_module on module
 relocation
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-14-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-14-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF00003F68:EE_|MW6PR12MB8664:EE_
X-MS-Office365-Filtering-Correlation-Id: 6f2adfc9-bdd0-4228-9ced-08dce70f04ca
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eE8rMm41RW9waDEwc1N0RnVrb1FOV0Q0c2tjbExyN0xVMy9ldkVPNnFKTkVC?=
 =?utf-8?B?SE8veDZaSkFNSElwWG0vZXVqZFYwVkk4Z1c3VVFhNlN0cVZJaFBRbnpuakFP?=
 =?utf-8?B?Yi9NSFNkMEk5MGtOSUVtZDROSG9Ec1FCRU5hMnNTRVE3ZTZ4Sm1CcC9MeFVJ?=
 =?utf-8?B?cnU5UUZJVXljakVoaHUwVXBEaURTa3BQdVJMT1g2S1Vjaml2R2NOcTRtN3Uv?=
 =?utf-8?B?VTk2MEtLNUlNbjA3VW11MEkrWXl4RDFSRGUvbzJxQlQ1RnJGcWJya1FsOXI3?=
 =?utf-8?B?N244c1FtS3RUcDNSNzU4MFVkZnFkK3MzOXBZTHpyQlAvU1B3TFZTOEU3WEFL?=
 =?utf-8?B?bnlWRlBKbjMzWFZvOFdDamVnWDFZdFF1QnB0KzludHgvZjZUTU9tRCtBYWpG?=
 =?utf-8?B?TVEwWXpGTjM5V0x5TjVSeGlBUWNSTTlXSTF5NGg4TDk0UGFyQk1OTUJ5V05I?=
 =?utf-8?B?Q2c1emhPbkl1eE8yekJhL0N5U01LcEg1SWMxVUxEbnJjL292YUlqbnM3Zkhm?=
 =?utf-8?B?RFl6SEJCcGcxZ1lZMW9WZktYSkZzWTk4V0pmNkd5MUpkVXdLWkdMdVkwQUFT?=
 =?utf-8?B?dnNWM01RbC8xRWFCZVYzdVh6c2lLN2liZjRCMzl1L09kTmdQaHU0cm92ZjB5?=
 =?utf-8?B?Z1A0Y0FkbG4xVHZ0S3lteWRlVWxZT3RCK3l1M3NwOVlKaVpoMSt4S0syTnY0?=
 =?utf-8?B?TEgxUkJzY0VSNWFvU3hqNnZHUXNueElPMDZqSnUzckxVNnRQTkRDbG0vcUNu?=
 =?utf-8?B?ZkcxbWNJcHVheE0weWFybERPY3hOQ3NEdllUNlBhN3dLd1pZL3FVV0p1V2FV?=
 =?utf-8?B?alhBdHFqY0ttZld3QUtLZXhNUVB4NVhnU3FPaUFISTdHa1c5a1JPNnBRVk1Q?=
 =?utf-8?B?UVVHREhTbzlPNyt4bzY5V1BpbTdkdlFZcmFFek1VTUJ2b09zbFF1ZjR2N3R1?=
 =?utf-8?B?U1NEVUEwbGtFaUlKVkVjZGJDQVJXR3FrTEVETGJXdzVjZFh3eVVNcGFZbEVH?=
 =?utf-8?B?VFJSdFJlKytDbmlPa3NGRlNCWE5sVERlNk5wYjk2UWxGRmZjSy9zRFVkd1Ja?=
 =?utf-8?B?UElNNGc3Z1J3blZVODhDdWczbWRGM3pHMmhvdVVVM2FFb0g3Z0JscXRTYlZV?=
 =?utf-8?B?eDNtdGZ3Tyt0cVZMWHJhL3hBb2UwTUNkaUNONjNyNkxLUU90eTVTZk9KZW5P?=
 =?utf-8?B?dzE2dnNBaUJreHVoekRVY3NzZy9KSlZ4cUFTTHNHNVBFUC9JZlNRRjYxa1NV?=
 =?utf-8?B?R3lUcmZvWSs2MTBlZXZtRDdRR0w3b0RkK3ZsWDJCVFJpV081MTZjYnJqbWFS?=
 =?utf-8?B?WUdsMWlPYzk0bHVUemh0ZzhQVUc5MDJpaktEV3ZkZ1YvdThQVWY2Si9hUTNu?=
 =?utf-8?B?OTh6OFNROVI4TURrdTY2U2NGRzFmVWtTaGNJOUxXMDNTVSs2cTBhSDBValhq?=
 =?utf-8?B?T2YxRmZ0eDJGMmtlVllHSkFyaGtRSFBpbHdzTUNBMDMzOFM4djFsN0k0V2N5?=
 =?utf-8?B?U21ycll6d1VlSzI4TGFxRWNMSldrbGhLQ2k3Z04vVEJLM20rdUhUL29sY3RJ?=
 =?utf-8?B?UFdaNitwVEdQMTllTUdEODBIOFdKL05SYzNtaGlIOXVIWmYyTVFuWjhXYjMv?=
 =?utf-8?B?ZjJGTWtNSHVrcGZFN3dmWWZBOGpSTDR3OWhMN2pvbUl4YjJkZ0FjSHgrSzlt?=
 =?utf-8?B?aVFRNnRxSjBKaXZ6VUVCM3pMRlR0Kzl3b0J3UE90UTJxejlURWkydmFTaHlZ?=
 =?utf-8?B?NENHUitKUGM5aGZ6bDNITzl3L1M4a0VrR3NIZ1pKSUs5RzYyZHhFN0tnTGpq?=
 =?utf-8?B?WThMYUJEVXJXL0UxUmNIek43bURBVFFiZ2pVY2NPUXZqV0ovUzBzSFlPeSs1?=
 =?utf-8?Q?dIbaMBlM5Fee6?=
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:(13230040)(36860700013)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 20:31:26.9899
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6f2adfc9-bdd0-4228-9ced-08dce70f04ca
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:
	SA2PEPF00003F68.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8664

On 2024-10-06 17:49, Daniel P. Smith wrote:
> When a boot module is relocated, ensure struct boot_module start and size
> fields are updated along with early_mod.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 093a4f5380d1..f968758048ed 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1392,8 +1392,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>            * respective reserve_e820_ram() invocation below. No need to
>            * query efi_boot_mem_unused() here, though.
>            */
> -        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
> -        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
> +        bi->mods[xen].start = virt_to_mfn(_stext);
> +        bi->mods[xen].size = __2M_rwdata_end - _stext;

The last patch did:
bi->mods[i].start = (paddr_t)mods[i].mod_start;

and start is a paddr_t.

Is virt_to_mfn() wrong?

> +
> +        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
> +        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
>       }
>   
>       bi->mods[0].headroom =


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:33:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:33:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812442.1225191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuQ0-0002Ew-29; Mon, 07 Oct 2024 20:33:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812442.1225191; Mon, 07 Oct 2024 20:33: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 1sxuPz-0002Ep-Vh; Mon, 07 Oct 2024 20:33:23 +0000
Received: by outflank-mailman (input) for mailman id 812442;
 Mon, 07 Oct 2024 20:33: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=QHG9=RD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sxuPz-0002Eg-1E
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:33:23 +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 63fb8196-84eb-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 22:33:21 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 5C10F5C5A26;
 Mon,  7 Oct 2024 20:33:15 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6B901C4CECD;
 Mon,  7 Oct 2024 20:33:18 +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: 63fb8196-84eb-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728333199;
	bh=KKoeqB5aOXHUbcC90JrwS5UQpKJt2Bo1JG6b30Iqi4g=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=FRxfPgR/n6jsuq5w9CxwGLLKyA/nN+2BA52c5+UTWUoBgP91GgIRP7iWyt609c5VQ
	 3SweDOqs5GhdJQDGcnaDAHO7iRhYKE7KaqL1tVW0ZRROBOh56tG/SDf87ljtPcGZGR
	 qlHBulQvNELWVjfWbyyGtplxTMZmUx8gBGkSU0fxN5T/Mf7x8mD3MtLgK8ZO4sr5JZ
	 eavRPGyPnn2QiJ7GaZRf/81l1KPLN+tCQjZ2ecIs+fVy2wWCZEd16gp+MbwwCIR1QI
	 BJp04MBgItv9coQCO/7nNV4Fvm50qv5mOtWIUcMdPlq8sLlRHwXgB8BYJyZ0LTTyRw
	 DttRHBy0V3whg==
Date: Mon, 7 Oct 2024 13:33:17 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Olaf Hering <olaf@aepfle.de>, xen-devel@lists.xenproject.org, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v1] automation: use PYTHON for qemu-deps-check.py
In-Reply-To: <e7f552d7-f9c3-4f22-8a18-68294324a676@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410071330210.3512606@ubuntu-linux-20-04-desktop>
References: <20241007152259.1353-1-olaf@aepfle.de> <e7f552d7-f9c3-4f22-8a18-68294324a676@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-1500325137-1728333199=:3512606"

  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-1500325137-1728333199=:3512606
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Mon, 7 Oct 2024, Andrew Cooper wrote:
> On 07/10/2024 4:22 pm, Olaf Hering wrote:
> > This enables use of something else than the system 'python3' binary.
> >
> > Signed-off-by: Olaf Hering <olaf@aepfle.de>
> > ---
> >  automation/scripts/build | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/automation/scripts/build b/automation/scripts/build
> > index 34416297a4..5d806c235a 100755
> > --- a/automation/scripts/build
> > +++ b/automation/scripts/build
> > @@ -93,7 +93,7 @@ else
> >  
> >      # Qemu requires Python 3.8 or later, and ninja
> >      # and Clang 10 or later
> > -    if ! type python3 || ! python3 automation/scripts/qemu-deps-check.py \
> > +    if ! type "${PYTHON:-python3}" || ! "${PYTHON:-python3}" automation/scripts/qemu-deps-check.py \
> >              || [[ "$cc_is_clang" == y && "$cc_ver" -lt 0x0a0000 ]] \
> >              || ! type ninja; then
> >          cfgargs+=("--with-system-qemu=/bin/false")
> >
> 
> Thanks, but I'm just about to delete this whole construct in order to
> avoid wasting so much CI time doing redundant builds of QEMU.
> 
> I expect the end result to with your adjustment to the Leap container,
> with no change necessary here.
> 
> While I think it's useful to have Leap able to do builds of QEMU given
> how easy it is to fix, I'll be removing it by default from Gitlab runs. 
> We spend more than ~50% of wallclock time building QEMU, when 99% of
> changes aren't even liable to change the interaction with QEMU.

I agree with you 100%.

We could switch the default so that QEMU is not built unless explicitely
requested, maybe via a job variable similar to "debug" or
"HYPERVISOR_ONLY".
--8323329-1500325137-1728333199=:3512606--


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:44:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:44:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812449.1225201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuaY-0007Js-15; Mon, 07 Oct 2024 20:44:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812449.1225201; Mon, 07 Oct 2024 20:44: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 1sxuaX-0007Jl-U0; Mon, 07 Oct 2024 20:44:17 +0000
Received: by outflank-mailman (input) for mailman id 812449;
 Mon, 07 Oct 2024 20:44: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxuaW-0007Jf-IP
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:44:16 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on2061d.outbound.protection.outlook.com
 [2a01:111:f403:2412::61d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e8693cb2-84ec-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 22:44:13 +0200 (CEST)
Received: from MN2PR18CA0026.namprd18.prod.outlook.com (2603:10b6:208:23c::31)
 by SA3PR12MB8021.namprd12.prod.outlook.com (2603:10b6:806:305::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 20:44:08 +0000
Received: from BL02EPF0001A103.namprd05.prod.outlook.com
 (2603:10b6:208:23c:cafe::2d) by MN2PR18CA0026.outlook.office365.com
 (2603:10b6:208:23c::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.21 via Frontend
 Transport; Mon, 7 Oct 2024 20:44:08 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL02EPF0001A103.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.8048.13 via Frontend Transport; Mon, 7 Oct 2024 20:44: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.39; Mon, 7 Oct
 2024 15:44:07 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 15:44:06 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8693cb2-84ec-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=l3Cg+g5KZ0dziZTabN8I5EY/7PJqW884FSFwP/cAAJlVJMyUT8IEIekxNpd0QOd4AVOtYtuAhK55+kUnErcPbLZgHCOGv/kF9mi/KNAlCDB3DXInMUoqA9SFMPRQ+h7MmqVv/EgzAeJYgkSehsBq+hRLvsGJjvxdqd/JKCtNqShcxrybBw0o6kE6k6obGZebCFTERp42nShypVJhhuVi8aVapduroRcpLzGI0NPvqcyOpC93gVRS0j94iKUYYFLk2YUfED5bhlX+pSo+KfOdEnD3WSKWxYWc3nxHe+lTAM8T3phD4IFLbPDkAloPvxUqVM9VwQpSGs5pydETJNITQQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=7aFKNN8zeTmL9p0hh2u5Ql5ouGkss6IbcxyAIunV52o=;
 b=NotYfhBlz5yM23RIwsQCRGNcvGPdqaakgb5wWuEWIowaUmFgVlJQfBm2BtqC09jFbnTAi0pGw46dBHwceERYqhShNCmUETV5R7TvawyKf3unu7mgRrq9oRg9EuJbViFk2pHBUv1D1dpcpkscxamlOrxhnSuiLdDsyONpD8hAu8Ln89gc8hNjeObtqtjLc4xLia0ZNK+BVS7pEp3mCNNVn38FUrZgoyaWJbWSJnt7zU5e9vVOsOasIG0DjFaYLMxMRcC7A6yNayrtI3AIl3lg44EFnHUk7/V1HeUDagSCVXfIdnYjkSAY6++6lfEV0ofNYIbSyMkpa9fiq5QVc4zJBg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=7aFKNN8zeTmL9p0hh2u5Ql5ouGkss6IbcxyAIunV52o=;
 b=pcz7IG9gTVCGExZONIkabs96c0UEUcIDTcX0chj28F/qe794QeunOzvlc9IleI1jBsi2kDG7/nqulxn+9j7NrbJ/PIN5FQXScGgNGg87VPDXbsRYZm3tDOa1W4OBsIefrDx1lh3yHeoGG5+97+2ShM0CtdHL/rUTnscHLJyqm2Y=
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: <bd0e24a2-dbd5-41d7-a85f-6aa6f90c0e54@amd.com>
Date: Mon, 7 Oct 2024 16:44:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 14/44] x86/boot: transition relocation calculations to
 struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-15-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-15-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A103:EE_|SA3PR12MB8021:EE_
X-MS-Office365-Filtering-Correlation-Id: a1ea8454-6663-4f99-4ad4-08dce710ca83
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eHJEeXVkaDYwYVMydmI1a2RNR2hoRnRIS1FCVS94TktzM2RrU0lGbDhMeExu?=
 =?utf-8?B?blcrdTB6N0hKT0V3VnIwT0Y4UkQ2Qk5XSlJFUkU4S2ZLNXVYcUo1L1hPYVJP?=
 =?utf-8?B?WUlMS3p3YVhBQkJLdGh6WFpPQWgwa28rT3N6SUx3cXBWM1RtN3cwWXQ1WDBF?=
 =?utf-8?B?Z251VS9PY2d0dWtsb2FUTWxJOXNaMVRUWkxUeExKT2EyRzlWeGJoKzVnOWVk?=
 =?utf-8?B?Si9tM08ySnZPamdVWjZNaTV4d3RCVjdoRklhbVJlcUZGZ2VRUU1SY1hESTBt?=
 =?utf-8?B?R3BzTTRMbWh2RlovYlFoOFl6VDV5WU1oVEpiNHpXRzV1aFdxSE92SDcxNWxU?=
 =?utf-8?B?T2lRb2s5am9TMjE5TTI2V3JzMFpueDM3S1VQbmY5cjNYelpoUXZiS3JwZkVs?=
 =?utf-8?B?SzdWSUFkUDBXOHV2MktvNDlLOGNlYjM3YzM4Z0htNXFvalJENHYxODNLTURX?=
 =?utf-8?B?MmIrMEhWSFlqWVZlWlowM2srb2ZVQnBjSGlUNlJiU3VHb3AxbFFLeDZIVUZv?=
 =?utf-8?B?OGswbHZWRGZBbkRlMzdNK0pOL3RwQVVJSlJRY09rZWhLSHFyT3FjZWg4SFc1?=
 =?utf-8?B?bUd0d2FLamNYUEdkSTkvRXA2SlkxdmZuL2FlYWFRSEMrS1FBNGNLMXRaVW1O?=
 =?utf-8?B?OGU1SVQ0alpiakpBd1lvR1B3QW54aHNoZDNmQ2N1czFUb3JNY3FydnZxL1BW?=
 =?utf-8?B?Qld0M0hMWEVlUFZndmE0MHBPR1A1a1JFQnFnTWJjVWIzRzRjL3BnNzdPYlhI?=
 =?utf-8?B?cnU0STNyMW42UGJhNXZRR3BvN0JzKzVyUjRTVFhhWk5oY0Z2QkdidThPTm9U?=
 =?utf-8?B?czA1TnN1S3NaRXdNbmlHWjRXakthaTBQaS8xdklXdkJhejRpQXMvcDZJK0tL?=
 =?utf-8?B?aUtJNTlLRFRLZUk0ZjVlQTlWcWJ5WHJjNGNqeGdaSnZrVHhoKzBoYldvK1Fu?=
 =?utf-8?B?RE4rbjlZT3pPVVFaeDB3STVMblZQSTlvSnJHL3phTk9xNTk2R2N3WCtsRWlQ?=
 =?utf-8?B?cFBna0RjU0cwMGRzcEU3ZERNeE56TmNiOXJheS9hcTZNZjgzdFVHQkQrQWls?=
 =?utf-8?B?MWZ1cUJLcFY2NVo4QkYxM3lKdldQaHNjWFZSRzFJdEZOTmpvcGVGdStGcm1X?=
 =?utf-8?B?Q1c5bVZKUXpJKzVobG5lYmpVd2g0ZXVhSmNDbnh5eHgvbXFKenhLZlRRYTdI?=
 =?utf-8?B?dW16a1pISkY2RzVPTjNkY2lXcGZXWmM3ZGxDeFdRdDZ6Y1h1NzA2YjQ3eC9m?=
 =?utf-8?B?T09nN3E4eDk4eVFHTW1lVE45cGQ2S1BEZUk3dktOeDFlQldQVE5OZkFQT2oy?=
 =?utf-8?B?bTN6ZUNXOXdUSzdyRjlvOFVpbDZnSnMySnFRV2ZsQXZ3NXNPTXNHVFRMMmtL?=
 =?utf-8?B?R2hXa2pYSExVaDBiY2ZrbVNDYkk2c0w1cEpEdXNYekNYTThYaGNkSnVPUWsw?=
 =?utf-8?B?NmV3RjhOWm9URTlQVWRuaXlKQm5uZFUvTzZ2MElSU3pxbjlmUlRDUW1zNUlr?=
 =?utf-8?B?YnlSK2k4cStMMG5ydTVKaVc2YVR6ZHl4M0Yrc3pSaDF6QmZqazZhZytGdk5X?=
 =?utf-8?B?Z2JrK3QzaWM3ZkFCczV4eDlYRy9aUlhVSnpoTlNTQkFBSTlOTGdBVjNLc20r?=
 =?utf-8?B?ZldETnUyT0xsbmthdU95bDhldW10TEJybXpzUlV6MzBqbnlWZlAxSi9VVWtv?=
 =?utf-8?B?MzNKQWpLTUlDSnVvWmFxVDh4aGplWWR6Y2RvVVNDTGx1ZVY5NkpVeXZFN2Jr?=
 =?utf-8?B?emtiNEFrVFc1Y0svNWlNaHVPaWMydTVJbVpvSHArZkdMUCtlTE1qdHo0eTlT?=
 =?utf-8?B?azRUdnFtWkpLOWtHU29DRWlwcERGTlBRTTFVN3ZISWF6d3dta3Q2OHAxMHZv?=
 =?utf-8?Q?O9xu2iwoPRi2J?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 20:44:08.2081
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a1ea8454-6663-4f99-4ad4-08dce710ca83
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:
	BL02EPF0001A103.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8021

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Use struct boot_module fields, start and size, when calculating the relocation
> address and size. It also ensures that early_mod references are kept in sync.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 36 +++++++++++++++++-------------------
>   1 file changed, 17 insertions(+), 19 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index f968758048ed..4f540c461b26 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1490,7 +1490,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>               struct boot_module *bm = &bi->mods[j];
>               unsigned long size;
>   
> -            size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
> +            size = PAGE_ALIGN(bm->headroom + bm->size);

Is there a mismatch from mod_end in PFNs to bm->size in bytes?  Or is 
mod_start in pfns and mod_end in bytes?

>   
>               if ( bi->mods[j].flags & BOOTMOD_FLAG_X86_RELOCATED )
>                   continue;
> @@ -1504,13 +1504,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   
>               if ( s < end &&
>                    (bm->headroom ||
> -                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
> +                  paddr_to_pfn(end - size) > paddr_to_pfn(bm->start)) )

Drop the paddr_to_pfn if both sides are now in bytes?

>               {
> -                move_memory(end - size + bm->headroom,
> -                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
> -                            bm->mod->mod_end);
> -                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
> -                bm->mod->mod_end += bm->headroom;
> +                move_memory(end - size + bm->headroom, bm->start, bm->size);
> +                bm->start = (end - size);
> +                bm->mod->mod_start = paddr_to_pfn(bm->start);
> +                bm->size += bm->headroom;
> +                bm->mod->mod_end = bm->size;
>                   bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
>               }
>           }

> @@ -1700,13 +1698,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        set_pdx_range(bi->mods[i].mod->mod_start,
> -                      bi->mods[i].mod->mod_start +
> -                      PFN_UP(bi->mods[i].mod->mod_end));
> +        set_pdx_range(paddr_to_pfn(bi->mods[i].mod->mod_start),
> +                      paddr_to_pfn(bi->mods[i].mod->mod_start) +

Shouldn't these be
     paddr_to_pfn(bi->mods[i].start)
?

> +                      PFN_UP(bi->mods[i].size));
>           map_pages_to_xen(
> -            (unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
> -            _mfn(bi->mods[i].mod->mod_start),
> -            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
> +            (unsigned long)maddr_to_virt(bi->mods[i].start),
> +            maddr_to_mfn(bi->mods[i].start),
> +            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);

First argument should fit on same line as map_pages_to_xen().

>       }
>   
>   #ifdef CONFIG_KEXEC

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:59:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:59:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812456.1225211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuos-0001LD-84; Mon, 07 Oct 2024 20:59:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812456.1225211; Mon, 07 Oct 2024 20: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 1sxuos-0001KO-4m; Mon, 07 Oct 2024 20:59:06 +0000
Received: by outflank-mailman (input) for mailman id 812456;
 Mon, 07 Oct 2024 20: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 1sxuor-0001Ig-4U
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20: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 1sxuoq-0001Hm-NB; Mon, 07 Oct 2024 20:59:04 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.244])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1sxuoq-0006cA-FL; Mon, 07 Oct 2024 20: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=pj+K4SNah9KojAvbwf89QgPYuu7KXHUgK2rehIlQMRc=; b=qfIBGgrlgK8+GhAelOqKj9vywP
	3p9f66zahChdXTdWZhOHDQJiZX8WCT4o55Ut0zvJTehR80c2f5biQR2VZ2a84s0btaL/I0/9p6yHO
	sxS6BYfL+23r+L9NzN3IxRTQ5j7GPaIgy2q8HIE2VHjPTgciJRX5UaYt0d/fIK36N/TQ=;
Message-ID: <cbd48ae4-e8c8-443c-bc1f-f8f99e0a2301@xen.org>
Date: Mon, 7 Oct 2024 21:59:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/8] xen/arm: Add SCMI over SMC calls handling layer
To: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-4-andrei.cherechesu@oss.nxp.com>
 <e713ae46-104a-4414-8ad3-02ca8b0a521d@xen.org>
 <3092497c-8626-4e86-b28a-16594eb2a4f0@oss.nxp.com>
 <45a70cd4-f7a0-4ef8-ab90-c256ec6e544e@xen.org>
 <206efc95-7ba4-4df3-99ea-d40b4540c5aa@oss.nxp.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <206efc95-7ba4-4df3-99ea-d40b4540c5aa@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

On 03/10/2024 17:40, Andrei Cherechesu wrote:
> Hi Julien,
> 
> On 03/10/2024 19:07, Julien Grall wrote:
>>
>>
>> On 03/10/2024 16:27, Andrei Cherechesu wrote:
>>> Hi Julien,
>>
>> Hi Andrei,
>>
>>> On 01/10/2024 12:35, Julien Grall wrote:
>>>>
>>>>> , the initialization fails silently, as it's not mandatory.
>>>>> Otherwise, we get the 'arm,smc-id' DT property from the node,
>>>>> to know the SCMI SMC ID we handle. The 'shmem' memory ranges
>>>>> are not validated, as the SMC calls are only passed through
>>>>> to EL3 FW if coming from Dom0 and as if Dom0 would be natively
>>>>> running.
>>>>>
>>>>> Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>>>> ---
>>>>>     xen/arch/arm/Kconfig                |  10 ++
>>>>>     xen/arch/arm/Makefile               |   1 +
>>>>>     xen/arch/arm/include/asm/scmi-smc.h |  52 +++++++++
>>>>>     xen/arch/arm/scmi-smc.c             | 163 ++++++++++++++++++++++++++++
>>>>>     4 files changed, 226 insertions(+)
>>>>>     create mode 100644 xen/arch/arm/include/asm/scmi-smc.h
>>>>>     create mode 100644 xen/arch/arm/scmi-smc.c
>>>>>
>>>>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>>>>> index 323c967361..adf53e2de1 100644
>>>>> --- a/xen/arch/arm/Kconfig
>>>>> +++ b/xen/arch/arm/Kconfig
>>>>> @@ -245,6 +245,16 @@ config PARTIAL_EMULATION
>>>>>           not been emulated to their complete functionality. Enabling this might
>>>>>           result in unwanted/non-spec compliant behavior.
>>>>>     +config SCMI_SMC
>>>>> +    bool "Enable forwarding SCMI over SMC calls from Dom0 to EL3 firmware"
>>>>
>>>> Strictly speaking you are forwarding SMC from the hardware domain. For Arm, it is dom0 but it doesn't need to.
>>>
>>> Well, SCMI is Arm-specific and so are SMCs, but I agree to change
>>> to "hardware domain" / "hwdom" in order to keep the language generic.
>>
>> To clarify, I meant that it would be possible to have an hardware domain on Arm. This is not used/implemented today but most of the code is adhering to the language. The only reason where we would use dom0 is when we explicitely check for domain_id 0 in the code.
>>
>> [...]
> 
> Thank you for the clarification.
> 
>>
>>>>> +        return -EINVAL;
>>>>> +    }
>>>>> +
>>>>> +    ret = scmi_check_smccc_ver();
>>>>> +    if ( ret )
>>>>> +        goto err;
>>>>> +
>>>>> +    ret = scmi_dt_init_smccc();
>>>>> +    if ( ret == -EOPNOTSUPP )
>>>>> +        return ret;
>>>>> +    if ( ret )
>>>>> +        goto err;
>>>>> +
>>>>> +    printk(XENLOG_INFO "Using SCMI with SMC ID: 0x%x\n", scmi_smc_id);
>>>>> +
>>>>> +    return 0;
>>>>> +
>>>>> +err:
>>>>> +    printk(XENLOG_ERR "SCMI: Initialization failed (ret = %d)\n", ret);
>>>>
>>>> In the commit message, you said the SCMI subsystem was optional. But here you use XENLOG_ERR. Shouldn't it be a warn or XENLOG_INFO/XENLOG_WARN?
>>>
>>> Well, SCMI is optional, in the sense that if we don't find the
>>> SCMI firmware node in the host DT, we exit silently (-EOPNOTSUPP)
>>> and we return right away (no error printed).
>>>
>>> But if we do find the SCMI node, it means that we should initialize
>>> the SCMI subsystem, right? And if we're trying to do that and we
>>> find that the DT node is not correctly formatted (i.e. the
>>> 'arm,smc-id' property), I think we should print an error.
>>
>> Correct me if I am wrong, but from the doc, I understood that the property arm,smc-id is only necessary if the transport is SMC/HVC.
>>
>> So I don't think we should print an error if it is not found as this is effectively optional.
> 
> I believe your understanding is correct, the 'arm,smc-id' property
> is needed if the SCMI firmware node has either "arm,scmi-smc" or
> "arm,scmi-smc-param" compatibles [0]. We only support the
> "arm,scmi-smc" compatible with our implementation, though, as you
> mentioned there should not be any addresses passed in the regs
> alongside the SMC call. That would need to happen with the
> "arm,scmi-smc-param" compatible.
> 
> But, by "if we do find the SCMI firmware node" I effectively meant
> "if we find the node in Host DT with 'arm,scmi-smc' compatible",
> since we're only implementing this specific variant. And that's
> why I implied that a valid 'arm,smc-id' property is equivalent to
> having a correctly defined SCMI firmware node. Having found the
> "arm,scmi-smc" compatible node (which IMO means we should commit to
> initializing the SCMI layer), shouldn't we print if we tried to init
> the SCMI layer and failed (due to incorrect formatting of the node)?
> 
> I hope I explained it better now.

Yes. Thanks for the clarification!

  If there's still anything unclear,
> let me know.

It is now clear. For I agree this should be an error if we can't find 
the property arm,smc-id.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 20:59:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 20:59:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812460.1225221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxupf-0002Y1-Fc; Mon, 07 Oct 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 812460.1225221; Mon, 07 Oct 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 1sxupf-0002Xu-Ca; Mon, 07 Oct 2024 20:59:55 +0000
Received: by outflank-mailman (input) for mailman id 812460;
 Mon, 07 Oct 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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxupe-0001wk-9j
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 20:59:54 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20624.outbound.protection.outlook.com
 [2a01:111:f403:2416::624])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 184c8f59-84ef-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 22:59:52 +0200 (CEST)
Received: from SJ0PR03CA0185.namprd03.prod.outlook.com (2603:10b6:a03:2ef::10)
 by DS7PR12MB5719.namprd12.prod.outlook.com (2603:10b6:8:72::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 20:59:47 +0000
Received: from SJ1PEPF0000231B.namprd03.prod.outlook.com
 (2603:10b6:a03:2ef:cafe::fb) by SJ0PR03CA0185.outlook.office365.com
 (2603:10b6:a03:2ef::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Mon, 7 Oct 2024 20:59:47 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF0000231B.mail.protection.outlook.com (10.167.242.232) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 20:59:46 +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.39; Mon, 7 Oct
 2024 15:59:46 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 15:59:45 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 184c8f59-84ef-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qcamZEPV0n7DmSKlK5I7ubMMpjRyCx/+vuE5z0XZFl917XL7MNt9b5WRIgDQotFedWuSNHh7JCrIEC1LyClaQ30y7bI8y5bMDyoYBfGapl34L+Rpvpjbvx6/9Tt+HOyPe8275ubNvdQ5+cyKwJoICwAdiA1AZ04YM/7g023uFgj7d+sdPQGH/5KZZMBPiMci6YfC1yRg0BiK5+MoOK0anhKvwsJzjZi15KoHL9t0hprXSn+7sZrqhbTVexjlZGirl/SgfH1qX+LtU3JzvwqmcNJlhxqKyWB4yzgzNchK91dKrOnNKOiUO/RjJ90Z0J2EdKt9SZ6pwwxzyQtlvpY7QQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=j45+7VwGAZ/wVzON808c9FkZuHDzv3QDFCwNFwomm0g=;
 b=hfLEgsw6XPZ8rj+w0VLcuJU0qfjNTVTKH7NnmPTtd5rE5KJVBkdRr32fSGILvKGRJo4ummUpui7fgNQEbVmrw7hQ4n5OxbqbO8L/IE3ERwlfYv+yAzrVW6Rn1ZNzN5ryvcCO513BjwQ1DpBZUtGULOOerETsP4d3OV8mUz6XBaIfjz2qmyxx0fw4Mwz/4KSpSnrElO3Uvi0kuDVO3OeuZRi5EYjB8ciTCX77xmSAXKmTug49zzor3DQqgDCbBjPGvUk338FSe/F++90rTULzUvPEpAe3gogydgRvIicVgnL/S8zdIteqOVZ8WImuAdepWNDy0Xf0JVqPdbkVCYyPbw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=j45+7VwGAZ/wVzON808c9FkZuHDzv3QDFCwNFwomm0g=;
 b=bF+okwfXyXm6Y7zTS3CW5+C1BIQAKHOtX1gL8yCkj6PGt6q7s71SSjEGM5wgIAByFBk5AUy7qYuhtK1MhZWS29YUqK7FdpXaeQtBeHRaVl3tZumfTFwa17um2d56fm2pW704/EBG3xwoJdqnYlKpIt7CNTbqMuzJBcTMSlJRh4Q=
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: <b112c378-7536-48e2-937b-d58fd62f9737@amd.com>
Date: Mon, 7 Oct 2024 16:59:45 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 15/44] x86/boot: introduce boot module interator
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-16-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-16-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231B:EE_|DS7PR12MB5719:EE_
X-MS-Office365-Filtering-Correlation-Id: 19eda48a-2dcd-45ae-76f2-08dce712fa0a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SHpZTW44bkt0ZFNTVWMzaVpNLy9wcHBwbkFkWkR0N2NhY3NSeHJWUFVkWXAz?=
 =?utf-8?B?TWhOVnVRK3FsbFBrWmJ4ZUMwOTM3ZjdsQ3M5NVluWEZwY1pUamNranBva3hT?=
 =?utf-8?B?aVZ3UUErajlicnkrU3NscnFOTTRWZzFtcG91dmZQZERwdG1xWkY4QlZZSjgv?=
 =?utf-8?B?Vi9Sc0Q1Sm1INERickd5amZEMCt2UXpzUWgrY2ZXU21RN1FMdnU4ZWtPZVZo?=
 =?utf-8?B?NldOeVdvOHdxd1FYaStuRHkyeUtXakRZVkhCU3F5aW5mUDg1T0V5cGpUYk9h?=
 =?utf-8?B?WUNaYktnV3lyVFZhejAyQW5LeTF3VG16SmpQZzdlWkdPc1VVZjRXZ3ZYV2Vr?=
 =?utf-8?B?aUUzNmVrLzBKUG1mS3RJRU85M01tbHJyNWNNa3FxdWVLV3Rwemg4RXFYODhh?=
 =?utf-8?B?cFBQMmZkYkppOUNEckdHZTNlMHpua0V6a2MyY29DQVJybVhSeWowNVZHc0oy?=
 =?utf-8?B?d0JxWWZvZWNIT1YvdHJkZ1V6K25zbnlUMnQyNUJNVW85cXZMRVR1U3NxSExS?=
 =?utf-8?B?anZUU2k1K2VvVlN2K3pZaGg3aUFHMEVvZm1lWSs5S29GSFBCUFdoalRBMTFZ?=
 =?utf-8?B?bCtMZEhZUmxFbGdjNm9sYUh4ci9sUE84M2pNUUJpUWF1VUdqcDlUbjZENHY5?=
 =?utf-8?B?d2Z6czlrSldHK2tmWG1sWnNMU2ZZc1ZJMXpXM09zamdQeFF4MEM0bjg5a1Js?=
 =?utf-8?B?Si9sWnhlVHA5S0lrbGZuQU01Y25acVk0N1ZTOEtZaWFtOGNqVldhblJqZ045?=
 =?utf-8?B?OVBVMm0wMXo4V3pnSG5tMm9jUzhuMDhQT09ua1RhdlZZeUtFVk1PV3A4M0lW?=
 =?utf-8?B?QVhTUlB6eDlQTjNjUVg2UUdVKzVrRVJIeXJHb0lUVzZvYWhzTlc5ZkZqdnVx?=
 =?utf-8?B?ajMwZDBMbmJvV3dVWUttQUFySHBUTGc1cDN0QzAwalRYMldOMm85NUlpSHRZ?=
 =?utf-8?B?YVM3M045bldjbStOdElBTkR2ZEJqV3k1WkhrSE9GbTJSZkJzMXltUWE4aWpF?=
 =?utf-8?B?L1lKME84NWtteG5HRGxBNkZoaGtsUUxBZHZRck1hNnhnV0x2ZDRxemNZQUt3?=
 =?utf-8?B?YWdYQm4xbHZGbENmbkJpeThGVkdNamxqZUhuRUVPUnUrZ0VZQ0hFdVVmb2Rq?=
 =?utf-8?B?N3Y1Z0M0MTBtT2ltUjArV0xlaE5iWVVtMlA5TFJ5L1dERW5NZ2c3WHdkNlA5?=
 =?utf-8?B?ZkZPeUpmK3JBWit5UlVyMWtlc3hhOERrWEhLeUNkMGJoY3JYTUNLRUpmYWNS?=
 =?utf-8?B?SzIzbTl6OFEzSFV4M2xWV1pGVGhSZTJodHNDa0xlSE9PVGJWU0xvVkh6aTc5?=
 =?utf-8?B?dFZZUU9jSmNSZ1dsbGFhT01jNWdOUWJ6aE81ckI4SldTSmxobUNwMDRaZVY1?=
 =?utf-8?B?b3E2Tlk4UFFqczluUVMwdHlhT2JqOGFvUVFKa0RyQ2UybW5EV1d0aGd3aFFQ?=
 =?utf-8?B?aU8xSXEvdDlodUdFWTFZVkpJa2doS2dEZ3lFQTlOOW9GYTQ0enppbEUxWU1B?=
 =?utf-8?B?cUppV09RcUVQMFNMdVQvMnFNZkliMHFtUXB2azIrYnZKdTYzOExZWmg5YU1y?=
 =?utf-8?B?SnBTVW1SbGtEa0gwZVRvU3Y3b3NIQkdBa3YwcWQ3VXJlWlBJeVpTV0U2blly?=
 =?utf-8?B?Mko5WnM1YW54cWY2MVNSZmtDaEZIL0p1TE10U3lUMzVwa1JidytEaHlYcndR?=
 =?utf-8?B?RWVvQVhNbmhNODFtc3ZMaSszWVM1bzlwVnNuRVVyWnQyaFpLRVBEL2EwN29W?=
 =?utf-8?B?RVhhYm5zd0VmWnFjcC9BYUtlY2pZM3NEa2Q2Qm1QKzVmNjdSNHhBbmwrYWNQ?=
 =?utf-8?B?eStWRVV4TUV2OW90UjMvN2JyRnA4dWhxT3lxclU3bGtSUFZnVGJJZHRxOGk3?=
 =?utf-8?Q?GGVmj4lGWZPMu?=
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:(13230040)(36860700013)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 20:59:46.8778
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 19eda48a-2dcd-45ae-76f2-08dce712fa0a
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:
	SJ1PEPF0000231B.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5719

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Provide an iterator to go through boot module array searching based on type.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:06:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:06:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812472.1225230 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuw8-0006CE-8u; Mon, 07 Oct 2024 21:06:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812472.1225230; Mon, 07 Oct 2024 21: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 1sxuw8-0006C7-6L; Mon, 07 Oct 2024 21:06:36 +0000
Received: by outflank-mailman (input) for mailman id 812472;
 Mon, 07 Oct 2024 21:06: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxuw7-0006C1-EF
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:06:35 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20614.outbound.protection.outlook.com
 [2a01:111:f403:2414::614])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 07e8430a-84f0-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 23:06:34 +0200 (CEST)
Received: from BL1PR13CA0182.namprd13.prod.outlook.com (2603:10b6:208:2be::7)
 by SJ0PR12MB6709.namprd12.prod.outlook.com (2603:10b6:a03:44a::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Mon, 7 Oct
 2024 21:06:29 +0000
Received: from BL6PEPF0001AB52.namprd02.prod.outlook.com
 (2603:10b6:208:2be:cafe::8f) by BL1PR13CA0182.outlook.office365.com
 (2603:10b6:208:2be::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16 via Frontend
 Transport; Mon, 7 Oct 2024 21:06:29 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB52.mail.protection.outlook.com (10.167.241.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 21:06:29 +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.39; Mon, 7 Oct
 2024 16:06:28 -0500
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.39; Mon, 7 Oct
 2024 16:06:28 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 16:06:27 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 07e8430a-84f0-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=e4dU5kKLDEhQaq6NYdB1hqPGA4NcAt6XaqDXZeIXzg0+bSkJt5mTOj6xQYrOiQrBYBv9Ev2/bVsDIU3cl+Kvr5rEviDEIZbA+RPq9g4NJFrcVjXCjsiNybPZNaXrz654z4tediY6n45wzvNyznBEMeHKM6ZeyNmzEt4I7CFnz4NioSnkuTeBtW+A2zo6dKQqjXsH9ITzDrUOD/pgWjGJaOGQj0ziQ4RxJPfWIfS82YZWuliCWMyqrSOtg28GF98VBePmh9baebWiZ9isBs0JqVIa7i8iKS9f3XehrU01/udkPThzStOBu/vDb6Eg7gcNcd26hikAr+KltPmHaRl7Hg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=w/jLrYv6sruhQhCvgUJhLINQZL/WmccbcXi5xSDIPKI=;
 b=GKrBLfHbpBCYZCauMdquTAmb84o0pHEu06JN6PqQ9r0BQcGFDNdpDY5FIMx7m61gCFAud5l9AwlUB2E0AYDfDM5uPCwdoKtwvt+rG1AtjyYyXSjbRrTTsQtDPvvf2wHePtr679PTn1vf8n1TS+CNwyE4dAhdez9GQisse74wmZoDcjfB9T2eF5aWz0JsOAQbElaXtqydvwRGN+CLFS33iJQfDFJa7QCY6L8xICna4IQNJ9H4JUzGBpP5ySv5wXmafMaiI5qys6uvz0/iMNAZ17ZYxMF8qg8V177EVKAo+peXuVflc0WAWGWoq4qa8t1UpKE4HmtdhsSNFWHKPF8gcw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=w/jLrYv6sruhQhCvgUJhLINQZL/WmccbcXi5xSDIPKI=;
 b=IohJXxrS1gzPwzRYo4phR7w476+e1CvWX/vemQ9U+uByEQ2llmsBVrC635gdi7F3+Dh0bJwHSjFY5uAdIgXvPJ/yk7IoqfC2VS9MyyXmhS/iJziQqKzqbc+HUwCglA/vvsu7ZPlj+x2z6DZogBVGx7FpBIvvZ7RhhIKPISTPBTY=
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: <2b939d07-23ed-4945-83a4-d615c32bf69c@amd.com>
Date: Mon, 7 Oct 2024 17:06:27 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 16/44] x86/boot: introduce consumed flag for struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-17-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-17-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB52:EE_|SJ0PR12MB6709:EE_
X-MS-Office365-Filtering-Correlation-Id: e397b0ba-f8b4-4dbe-edda-08dce713e9d2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?bkRrRlR0cWFhQ052eWxwZXNEMGpDSWlzcnlYTU9TRGN0UDFjeS9tNFRIa0w2?=
 =?utf-8?B?My9LUDVnVkRQVEJONlRaTDhjcVNDZnNLWDJQdktRUlRqNG0vbnNWWlE3YUFV?=
 =?utf-8?B?Wm02akNtd1ZzOXBKWTNERU8xaGdaUTJSMDJ4WE44cWpSV1ludDhGWEE1MDQv?=
 =?utf-8?B?YkdFVityMTZzL2ovd2lxanJRSG5tc3huMXJSWDB4cjRMNmpwZE9XaEx0ajhM?=
 =?utf-8?B?WC9iK3ZwbFZQcDdQRkxuM0M0d3VPZzdYMEg3djVPU1Y4NnFwclpBdHBNSWZq?=
 =?utf-8?B?WFZOY2UvWWhMTiswNnYyaEFYcVNSSDVpVk1CZ3ppRHNpTzFDSTNwUHlxdEpN?=
 =?utf-8?B?bnhHRXhhQ09Zb1d2K2ZOeHdDL044cW1ic1JwdHRTWFdTbldSQUZMdHljVDZJ?=
 =?utf-8?B?bi9DcXR4QnFKd1RKdzc5QndLdWNkTXdkZEswRDRiOEx3bkFGSWJLd2dMUzl0?=
 =?utf-8?B?NE96UjIwQmhlQzlIeTBVYzVBZnBIWExpZ0NHMWdwa2J1aWdZclRFS0JZNFZO?=
 =?utf-8?B?alp5Mi9XR0VuNVRBRkZSMFNnbDY3U2dZWjk2YU15YmZHMnc4Z0JjTk42bDRx?=
 =?utf-8?B?RGFQQnk0M0tURTQ3dUNXOUY4ZkNpMmNiQWwraU9ndmFaQmFLWW96TkxacHMr?=
 =?utf-8?B?MG93YWI2ZVlNcnRDV3BXM2xpNm5MNTkzclhzdWZFQXh5QnUvbnRRRFNPUG12?=
 =?utf-8?B?K2c4UysvSUxTZVhPZXFhaWk1K0pvUkppcEhrWGNHTDdDK3N6emJ3cHFGRU1N?=
 =?utf-8?B?Uk1BczBxa3BRaXZ1YUlJaFEyMHpBUDh3WlAxOHlRekx0YkJ0QXkvYmFwRi9v?=
 =?utf-8?B?TTUwWi91cXM4RllxM0J0R0ZadFVZSTg1ZW1KNXUwWU9vZjlLbXhBWTBnVVFw?=
 =?utf-8?B?eTNqOWJCenJHclVPUkxmVEk3dzJDeDBiMmhVT1BkNDRKVnlnUmhVK1JUWExs?=
 =?utf-8?B?NFF4MlM0d240K3RsemgzUU4xZnpNQ2FzV2FWSGc0eXNHRWlNclh3WktUWFZi?=
 =?utf-8?B?TTFaWlI3dHJlQnhlNzJIMGNlMy9xYTBJbmQxeEFxL2tLY3VMdWVMdEhOVlN1?=
 =?utf-8?B?T3gwaFZoYUVxcHljdEJBWE1aS2U4MGJzVU5xcldkY0tnbnJiY2JwZGVJRmpm?=
 =?utf-8?B?NUQ2TXlwZkxjd0Q4S2tGQlhxcGM2UXR0ZmRCZFp2d2lGRkJ4aFMvckZ1WHRP?=
 =?utf-8?B?WnlQTFRULzlZQmV4Y2JWcFFPVllkUDVHYUEvNW1kbTR2ZHdKZWhlNmxnMmxk?=
 =?utf-8?B?QWNlc29vRHBwcDBPdEZCQ3ljenlnT1ZMWUlXMHE4SHFGczlCRWs4R3Jwbk1h?=
 =?utf-8?B?MjRXeHkvbW1JMFVNWXRFa1NCYlFIWEx2dkJSWW9vREFiS3M1dS9DUTdvaEg0?=
 =?utf-8?B?ZE9hU0lDalpzNHpCZ21nL3Z0M0NwT0YvZWo0VDc4cWs1ZlRlaWZCRFM0QTZO?=
 =?utf-8?B?K2ZHVm1LT1UvMTNOUWlHWHpIVjV2SFJqVGN5dFBQWlFubnBidUQ1RjdNcGRk?=
 =?utf-8?B?ZG53bUg5NGk0NEhmdis1ZHo4N0xXVElHOWI3QUxveXVZTWhscDU3R2V1VUd4?=
 =?utf-8?B?cHB3bzRjNXZIT2pRbFd1UTUycDRqb0UwVWkzejdsNG12SkRRYXhpbG5ZRHhn?=
 =?utf-8?B?cEsyMlhITmNpNGpVYUdsZ2F5NjBYZE41eFBoNWk0TjdVb21Rc2hWRUhuVVZa?=
 =?utf-8?B?aGNpaEtGVElWTS9MbE9OOXJIN2JrMFFaQ2NBQkZTQmFUQ3QzMlRsN0trNUFX?=
 =?utf-8?B?Y0d2Y3pzUkkzN2ZrQWJLWW5TWHA2NVpZYzJXd2VNM01IU09wMWZ6UTgzcTZ2?=
 =?utf-8?Q?xPy+XMxvXixsji3Fd1WxRlMog+Jh1JKmN0QME=3D?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 21:06:29.2296
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e397b0ba-f8b4-4dbe-edda-08dce713e9d2
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:
	BL6PEPF0001AB52.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6709

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Allow the tracking of when a boot module has been consumed by a handler in the
> hypervisor independent of when it is claimed. The instances where the
> hypervisor does nothing beyond claiming, the dom0 kernel, dom0 ramdisk, and a
> placeholder for itself, are updated as being consumed at the time of being
> claimed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootinfo.h | 1 +
>   xen/arch/x86/setup.c                | 3 +++
>   2 files changed, 4 insertions(+)
> 
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index c79678840d31..7833b065eff1 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -34,6 +34,7 @@ struct boot_module {
>   
>       uint32_t flags;
>   #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
> +#define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
>   
>       paddr_t start;
>       size_t size;
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 4f540c461b26..235b4e41f653 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -318,6 +318,7 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>   
>       /* map the last mb module for xen entry */
>       bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
> +    bi->mods[bi->nr_modules].flags |= BOOTMOD_FLAG_X86_CONSUMED;
>       bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];
>   
>       return bi;
> @@ -1196,6 +1197,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>       bitmap_fill(module_map, bi->nr_modules);
>       __clear_bit(0, module_map); /* Dom0 kernel is always first */
>       bi->mods[0].type = BOOTMOD_KERNEL;
> +    bi->mods[0].flags |= BOOTMOD_FLAG_X86_CONSUMED;

I think these first two can be straight assignments since they occur 
before relocation.

>       if ( pvh_boot )
>       {
> @@ -2085,6 +2087,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   
>       initrdidx = find_first_bit(module_map, bi->nr_modules);
>       bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
> +    bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
>       if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
>           printk(XENLOG_WARNING
>                  "Multiple initrd candidates, picking module #%u\n",

This one is after relocation, so |= is necessary.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:08:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:08:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812479.1225241 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxuyN-00084z-Kt; Mon, 07 Oct 2024 21:08:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812479.1225241; Mon, 07 Oct 2024 21: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 1sxuyN-00084s-Hs; Mon, 07 Oct 2024 21:08:55 +0000
Received: by outflank-mailman (input) for mailman id 812479;
 Mon, 07 Oct 2024 21:08:54 +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 1sxuyM-00084m-38
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:08:54 +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 1sxuyL-0001Tm-VV; Mon, 07 Oct 2024 21:08:53 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.244])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1sxuyL-0007lJ-OB; Mon, 07 Oct 2024 21:08: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=YRilv+qYN2k6jN9oEBmLK7DNiBEqfg40170+ZBRSaiE=; b=jhtACPRKoWFBJ0LZUP6TSCvJjP
	lKVN4FkolmqF5kQNV4hV4bHcJn1H6ynOFnpL2Q7OwpEWhvCvVTS8n/SBh570eHYbFd7fWA2ciJawY
	Vho8TQjS0wxHjrwg4HHJo3nvqInB3Ahld+zIP9KEFjaP27Nnna3U1ce1IMdszOtA/TPk=;
Message-ID: <2a4f02ed-d71f-4475-9f9f-60d68991bc3b@xen.org>
Date: Mon, 7 Oct 2024 22:08:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] ioreq: don't wrongly claim "success" in
 ioreq_send_buffered()
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <3b4a324c-dbe6-4647-a73a-afdb94ff2ecd@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <3b4a324c-dbe6-4647-a73a-afdb94ff2ecd@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 30/09/2024 11:28, Jan Beulich wrote:
> Returning a literal number is a bad idea anyway when all other returns
> use IOREQ_STATUS_* values. The function is dead on Arm, and mapping to
> X86EMUL_OKAY is surely wrong on x86.
> 
> Fixes: f6bf39f84f82 ("x86/hvm: add support for broadcast of buffered ioreqs...")
> 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 Mon Oct 07 21:16:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:16:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812488.1225261 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxv64-0005qp-Im; Mon, 07 Oct 2024 21:16:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812488.1225261; Mon, 07 Oct 2024 21: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 1sxv64-0005qi-G6; Mon, 07 Oct 2024 21:16:52 +0000
Received: by outflank-mailman (input) for mailman id 812488;
 Mon, 07 Oct 2024 21:16: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=siVB=RD=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1sxv62-0005cZ-Q7
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:16:50 +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 775dd5cf-84f1-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 23:16:49 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-5398e33155fso6148915e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 14:16:49 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539aff1d214sm945051e87.132.2024.10.07.14.16.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 14:16:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 775dd5cf-84f1-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728335809; x=1728940609; 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=nOZFp0KYwy2xarbmigXeGI5Kh1b1KEGSJbQb+7v41UY=;
        b=ciWCKC877jDoBu+nQy8mdklxzVY0cll1eTi/IkSbRhKTD2pZEaRc/VuHOL6w+vWXMs
         g7Agbyi691eXU/rxRKQ0CA/bp9cVqX5jBOKHcGs3vX0K+0xAmIB/mCiLgjbDVZKfKxPr
         D48GrXXbjlcutIvKT/a1XkuhkN/zMNyPlLzTSd3H3jy2OLGj4EvGn69mQ1udX967aE8j
         S75tPAjE9gntII0BeaDJpbu0VItYRYxTBNzrDXDMlbZclBJirWybveAB8Hvk0l5puGUe
         B31Kq922qWjT1gB908sRZFR2VHSsw/jXK+Q7AyzLXxaYZENH3YAQA/gIWCPSFOAyJnf0
         58xQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728335809; x=1728940609;
        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=nOZFp0KYwy2xarbmigXeGI5Kh1b1KEGSJbQb+7v41UY=;
        b=jaYmD3HwOb5XqBnMcp4NaPGs9uXcDqwgi6efyg/b5C1I6vClHrraS7mdsB1144qbxs
         6d14IFyMWhj0JlbMzfrbsgvSQZOK+J4uUA1ItLqKeyM93BU8Ufpw0TaQLWwhZI5nhg79
         22LNfMOmqIZojs5WW2prnpwYHe5/Mm/1NeM2TLIoeLDK9cacMatS9BjioyGrAicJscpQ
         RDcnEtyhBtlUREy2v5+6WXfDL5eNyoEdq2jNvXLYkJ8ADuB90Akw43xqYzmfTkqFF6Kn
         iBq5M6k+OWC0D3guMiQ9ZFOkTImIHRhCa/xoo7LaGl9S/dthsGAmyFXKaSIFKtJoX6lZ
         h5Hw==
X-Forwarded-Encrypted: i=1; AJvYcCWyXrPHlShBN8oq1EY68cPlXWnLJHpp7s+Zrty2HolLURtUo+bSFiFHl8IHPu6nVPt8TtjnaT2hx0k=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwsZeCunnBwJZfhtW6byJ1nvsvnmjHNGdmLkMWLNqduodgck6P7
	0PCH4VWqaM+/kJeK1uRlq26SQ+tm/Sxye6HcNQqNUanOs9v9gkkz
X-Google-Smtp-Source: AGHT+IEDn3064h8cU2IDaRl8of4yOaXKWQsj91WD4UsSn5HTEcpmp2TwGmNka3Rpk/B+XuSHazDZAQ==
X-Received: by 2002:a05:6512:304b:b0:539:93b2:1383 with SMTP id 2adb3069b0e04-539ab9e1738mr6600333e87.46.1728335808875;
        Mon, 07 Oct 2024 14:16:48 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [PATCH v1 1/1] hw/xen: Avoid use of uninitialized bufioreq_evtchn
Date: Mon,  7 Oct 2024 23:16:42 +0200
Message-ID: <20241007211643.1572271-2-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241007211643.1572271-1-edgar.iglesias@gmail.com>
References: <20241007211643.1572271-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Avoid use of uninitialized bufioreq_evtchn. It should only
be used if buffered IOREQs are enabled.

Resolves: Coverity CID 1563383
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/xen/xen-hvm-common.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 7d2b72853b..7ffbbfea23 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -752,9 +752,10 @@ static int xen_map_ioreq_server(XenIOState *state)
         return -1;
     }
 
-    trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
-
-    state->bufioreq_remote_port = bufioreq_evtchn;
+    if (state->has_bufioreq) {
+        trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
+        state->bufioreq_remote_port = bufioreq_evtchn;
+    }
 
     return 0;
 }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:16:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:16:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812487.1225251 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxv63-0005cm-CO; Mon, 07 Oct 2024 21:16:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812487.1225251; Mon, 07 Oct 2024 21:16: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 1sxv63-0005cf-95; Mon, 07 Oct 2024 21:16:51 +0000
Received: by outflank-mailman (input) for mailman id 812487;
 Mon, 07 Oct 2024 21:16: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=siVB=RD=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1sxv61-0005cT-IA
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:16:49 +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 761cb62f-84f1-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 23:16:47 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5369f1c7cb8so5193912e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 14:16:47 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539aff1d1f3sm940665e87.153.2024.10.07.14.16.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 07 Oct 2024 14:16:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 761cb62f-84f1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728335807; x=1728940607; 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=WTsx4tGg+0BZ0batbq5fRRa5gbLdHaXOR3GOVsVa/MI=;
        b=Zk8TM0izDAjuDtXwcoLR5sSdPnDrXfSlZwAVFKTj61GNXYGTDpU6eI+mQNRM8xL5/k
         Ml45zEaBZzvPvd/Xd1Yr9VSzGzoV0iCVaS4QJh8WbdgkbOdk4fom7QpRXlwYyNMtElGX
         JiddsgiK93PDHBZiZ+2KAz4zb5c1OnrcUepdujJbpgU9muNJjUXLOVqQq8JxHMrc2ai1
         E05ypUglKj9sk3UzzMmA4jHBrpCFjFtV9D2oSeq7PUS1Rsa5gXcZwmc46GQ6ZQM+XUNE
         +duACPICsEFRixpKBy3S6Hp1f5r4cmRDMsHUqMNWT+VujJlgovHCeTEau0WsiObbDZSV
         fZZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728335807; x=1728940607;
        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=WTsx4tGg+0BZ0batbq5fRRa5gbLdHaXOR3GOVsVa/MI=;
        b=UheHQ8gLYis93U6j9GvziPaY5AvdYclYOwML2cFP/AmmfGikMMZScGFAV600kJWgHz
         GSd6ufNdzS1+/dAnVBOfSGQDBlwkuN+IiS+5/0lGFUJ+Yj3uUKOEERsP2SZ7o0TLJXgV
         2i+WNPaiuBtDdfEnCCyMVG26CZR1zxeC7Cuk+TdISt1G20sSpP/LyfR+VkVmhhDR8+UQ
         PEgM1mZwt/iYkxJfod5C43BSKGSdbfuxZSgf4OY0wax6cr85N/Y6OyXZbVx8plUmNMts
         VV1+iVVGmn9zVdc59dx20/FWJZwxyr8meTOPvHIMJIlQDb1mVzBVUSgKhBlwBC/NHN8U
         DLuA==
X-Forwarded-Encrypted: i=1; AJvYcCUuf/Y90qkE3yFF5zDlCKTF/GmQiqd5usqjaXZ/1PggDvd+yYpWEO16qdW11UkXVfYrlbd4xAxX90E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzliFvsMw/rDAyfV0pUoCH3wwTyVRhnCyoWGHLh9PHWYjAmAU/c
	gmMmXvU/XdfK2hpmsDPT7NiPj1+qJM6aUXuO8d/IlfKG1OAoGlqu
X-Google-Smtp-Source: AGHT+IHM96Ou/Yg0S6T+8VUjhm8uxhY/cn7FmBubowF4/pRcTBUlupijb+NR9My3MkGaQGgdakpFhQ==
X-Received: by 2002:a05:6512:ba2:b0:536:9f02:17b4 with SMTP id 2adb3069b0e04-539ab9cf41bmr6550868e87.40.1728335806821;
        Mon, 07 Oct 2024 14:16:46 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org
Subject: [PATCH v1 0/1] hw/xen: Avoid Avoid use of uninitialized bufioreq_evtchn
Date: Mon,  7 Oct 2024 23:16:41 +0200
Message-ID: <20241007211643.1572271-1-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

This has a fix for Coverity CID 1563383 reported by Peter.

Avoid use of uninitialized bufioreq_evtchn. It should only
be used if buffered IOREQs are enabled.

Cheers,
Edgar

Edgar E. Iglesias (1):
  hw/xen: Avoid use of uninitialized bufioreq_evtchn

 hw/xen/xen-hvm-common.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:23:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:23:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812496.1225270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxvC1-0004Ec-5n; Mon, 07 Oct 2024 21:23:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812496.1225270; Mon, 07 Oct 2024 21: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 1sxvC1-0004EV-30; Mon, 07 Oct 2024 21:23:01 +0000
Received: by outflank-mailman (input) for mailman id 812496;
 Mon, 07 Oct 2024 21:22: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=EMKW=RD=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sxvBz-0004EP-Rz
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:22:59 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2061d.outbound.protection.outlook.com
 [2a01:111:f403:2417::61d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 529670b6-84f2-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 23:22:58 +0200 (CEST)
Received: from PH3PEPF0000409E.namprd05.prod.outlook.com (2603:10b6:518:1::4e)
 by CY5PR12MB6576.namprd12.prod.outlook.com (2603:10b6:930:40::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Mon, 7 Oct
 2024 21:22:52 +0000
Received: from CY4PEPF0000EE32.namprd05.prod.outlook.com
 (2a01:111:f403:f912::2) by PH3PEPF0000409E.outlook.office365.com
 (2603:1036:903:49::3) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.15 via Frontend
 Transport; Mon, 7 Oct 2024 21:22:52 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CY4PEPF0000EE32.mail.protection.outlook.com (10.167.242.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Mon, 7 Oct 2024 21:22:51 +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.39; Mon, 7 Oct
 2024 16:22:49 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 7 Oct 2024 16:22:48 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 529670b6-84f2-11ef-a0bb-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vdm9A7LOLk16Q1XqB3K3BCgcqLvtpIfv0Ifx8iPziblZzdAHXVCMwJlR756BPSgGFZPAoewJUAKUfQ81Qe5XS63pA6Ksw+NNpLAS0e037Y86sJLc4i4zKBDMqNtbvk4rYwCd8VzRj9ZVY0opSR2HCdI1ndfA5n22Wps2CavJTLsQ9zZyQBJRPKMsZiTxRqfsXY14mUHFUStDIqnA2+5I4vVVp4I/pM3vglZ1COw4npwV7Vq4PNzD/sp6ZFFopkwUxY8wSqgCKkqbg+q7Lx89CUVcUs2fNUaNC9sOsMCYcYoQYM5BkHs31I+RFSX3/VpkXvQNh2Ym8UckiQYwZ6/8aw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=d9FYQmmvfNAFaiF/JWWU9p2Bg+UkfmhFpA5nOwPwFL8=;
 b=pRmiz3I1EmXVQfMxO60JXsbX8/FQUp/PqsnlaPQlaLxBp4bdRWX7rnYd+NzCn0/uKIW9rLIKOUE/GbhuMRK2SAma224H6IyE9N80W3evH9/hqt2J/Buz5XjCF6dypEg3WWFio63Hj7VTnInNEplCWrRq/SwxwxbhTiYUeQpjVyPMUMmlgfeGRL0T1KUpKEYRzTD8pW6hQLmPmPdbJmh0ZlUpUXO3TAJUXipLJhbfZEvPymq9YIbnyht+aRgRSBFhiJNA2tM+NPtDDYsAy0t/A+Q3cAoKnVvFx8ZgPw58OJnrtqczLGJ1tHCLRyv00Ti33Wo54NvKbPQ+8XA5EJtzaw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=d9FYQmmvfNAFaiF/JWWU9p2Bg+UkfmhFpA5nOwPwFL8=;
 b=T/o2FpqQgsNXGzo+K24D8ERTVR56FcCa1fom70IXVfScUEww6oq134y9RHyzea6Tw+opJ/UeK7LZi/lfK+pU4EHW/Ejm+ZfIaEzManUyXn2XV/4XJqu1cIdzvZXTAeRAzaFEX3WZWHhGGr2Y9OyMvWJe7xNieoZCTs4XdTYsD3I=
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: <d0d8e53d-d2a2-4441-86cd-6f50aaa36075@amd.com>
Date: Mon, 7 Oct 2024 17:22:48 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 17/44] x86/boot: convert microcode loading to consume
 struct boot_info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-18-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-18-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE32:EE_|CY5PR12MB6576:EE_
X-MS-Office365-Filtering-Correlation-Id: 6aa89e93-14f0-493b-99bc-08dce71633a4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?T3dNVkZlajBNMnk5aFNNTTQzOHYrbDE2NUlNWjIxTlhaY0M5WjdCaWhKbThy?=
 =?utf-8?B?RmVwMFhhMEdUcFNmTUFnRmVJc0RkbUtSYm1jTFQvb2tXcmpZZ3pEc0pUR01p?=
 =?utf-8?B?b3RiUXNScGRvV0cwT2V5UC8yREZBTjAvWDNMdC9GUmtoQVRWZUtGUWp6dDNU?=
 =?utf-8?B?bHNQajhGSm9LQW9jdzdMTnVDMVVkZFdvVHg5bG11NDUzUi96Z2FaSGFJd05E?=
 =?utf-8?B?SWJkemlLQTJQWEwxUGJlZUlvZVlVOVNxVmJ4SEVzVHpEYlcyMU9EVE5pSlFZ?=
 =?utf-8?B?RUVFQkc1eTcwUVFVS3paNUQxL0NlQ2JrRFBhYUxIL3JLUHVuOXl5TXAvWDAy?=
 =?utf-8?B?OWJHbnRIRGZ0SnhTV0FZNjI1RmJVSG5uUDlyQnM4SDRPUzh1c0RzeW1teTN4?=
 =?utf-8?B?SmFnR2ZSK0lneXdSS0lOOWZ6ZzdLd2VnaGhBNldGRkc3SnRud2laenFIa3Qx?=
 =?utf-8?B?Wmw2OUl6VzhyZDNiVmxtcjBSbW45YUtNMEZqTzZlWHpxZm9YQmtUWkMva3hD?=
 =?utf-8?B?NlQwdU5YZ2V0cjI5cXJFWG5nV3VORC9iRyt5R241cVpNSElNV1NXMjhvYWZH?=
 =?utf-8?B?VFJhNWViZUx4cVBXNEU5eUhuclNVU1l0RFRudVdMMzk0NzZGR0NXKzEyUTFS?=
 =?utf-8?B?Znl4ZldhejA1cGEzMDJ4ZnRMci9yMUNxK0REU3J3M1dnR215OXlqUHZscVZJ?=
 =?utf-8?B?K1VRN3RlelNhdnNQdGJWbzM2OGYxMHpkd1ZsY3FqL01BQ1JZRlBPUjlVcjNE?=
 =?utf-8?B?QlVFN0YzUTZXUDZydmx5d29tMkJzblJGSTBSVE1HVjVNSm90WWM5czhBMjJX?=
 =?utf-8?B?V3dONDdDbVJyNm9pTGpzNElvdGtmM3liblAzZGpOVVJKS0R4UFRtb2xIL3ZE?=
 =?utf-8?B?dDJXOUJUU05xdXY3YmlQaGtscmxrbVA5bHk0b0Zna1B2ZEJzd3k5L1BnblAx?=
 =?utf-8?B?bFNxQk4wdEpkekxUSEVSc1YyRmpHLzJSUzd2dEpYZWJUbHVrSWlYcHJSU3Vh?=
 =?utf-8?B?ZG5WSEVOWU41VWhmcm9nZ3BibDV0VUFlZW5pd1AyYVZpR2dCcjBMQlRDcWJz?=
 =?utf-8?B?Nml2bm9NOUMyTHRXaWphQjRnL0ovVzY5RXNkQWJ0NW1SY0ZSTldGTWRPWXBF?=
 =?utf-8?B?S3Ewa1VWMTR6U1QyYTJ5VXkvTjJNanFYNklHMXNFNG1zV1F6SUtucVFGUitk?=
 =?utf-8?B?ZlA4a2VRVGhzQnBrcHJRU09pNkRBZ2lmNDZPUUpXZjFHYTNsd1FhQzlUdGxZ?=
 =?utf-8?B?Z3NXZEFDRzlPNXFaQWN3VCt4L1A2NjhxRVN1clo4Nmo4T0ZVbWw0K2I1dkJk?=
 =?utf-8?B?Ky9maytqQ3hpNk5HTGFWNHBLTUdzTlR4TVduaExzNmd6M1NCTHZ1bHZBT0g0?=
 =?utf-8?B?eXN4MW95ZlZkYWZhNThqb3ZzU2dYQkw0NlplcmdkNUl0VkkyQ2RRZmtFc1Y5?=
 =?utf-8?B?dmg4YThkWDIwN2s4Q2tuMWw5MUNjZ2RrQWRDenZSelNDTE82cTJiVFNjU3FW?=
 =?utf-8?B?ellMbS9UeEpVdU85cWJ6czRzWGhEOXpaS25nb0F5Wm1TSTlSRURCdjRzenNh?=
 =?utf-8?B?MEwyL0JwVzRZMkVZTXdQaUZqMkR3aWxxSFBmb1QvZElCVnU2UzdKaXlxME41?=
 =?utf-8?B?YS9vMEN5bUE2K0lpSjVBTlhLdkNWanJCbHJUc2RPUnFhZjJaZVhBQzJEK1FS?=
 =?utf-8?B?dTVCNmFuZVBIbFdrMFZhZGladzY0RVVLQm5WMmJmekFvTEdzMWpBNDhtaXJG?=
 =?utf-8?B?aFc5ejV6VGpnWVl4UGxGM2poZ05kWk0xa1NsdWhvRHJsRkVob01YTlhqNzlr?=
 =?utf-8?B?QXYrUDBkOUx1bUxEaDFESkl4NW0xa1VTNk5Rc1FxZEQyN3ZWVTRIeVBDbklU?=
 =?utf-8?Q?vIY4DdVknDE/d?=
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:(13230040)(82310400026)(1800799024)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2024 21:22:51.9458
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6aa89e93-14f0-493b-99bc-08dce71633a4
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:
	CY4PEPF0000EE32.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6576

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Convert the microcode loading functions to take struct boot_info, and then
> using struct boot_module to map and check for microcode. To keep the changes
> focused, continue using the struct mod to hold the reference to the microcode
> that is used by the late microcode logic.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/cpu/microcode/core.c    | 37 +++++++++++++---------------
>   xen/arch/x86/include/asm/bootinfo.h  |  1 +
>   xen/arch/x86/include/asm/microcode.h | 14 ++++++-----
>   xen/arch/x86/setup.c                 |  4 +--
>   4 files changed, 28 insertions(+), 28 deletions(-)
> 
> diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
> index 8564e4d2c94c..22fea80bc97e 100644
> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c

> @@ -205,20 +204,18 @@ static void __init microcode_scan_module(
>   }
>   
>   static void __init microcode_grab_module(
> -    unsigned long *module_map,
> -    const multiboot_info_t *mbi)
> +    unsigned long *module_map, struct boot_info *bi)
>   {
> -    module_t *mod = (module_t *)__va(mbi->mods_addr);
> -
>       if ( ucode_mod_idx < 0 )
> -        ucode_mod_idx += mbi->mods_count;
> -    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
> +        ucode_mod_idx += bi->nr_modules;
> +    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
>            !__test_and_clear_bit(ucode_mod_idx, module_map) )
>           goto scan;
> -    ucode_mod = mod[ucode_mod_idx];
> +    bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
> +    ucode_mod = *bi->mods[ucode_mod_idx].mod;

Why the dereference: *bi->mods[ucode_mod_idx].mod; ?  I don't think it 
should be there.

>   scan:
>       if ( ucode_scan )
> -        microcode_scan_module(module_map, mbi);
> +        microcode_scan_module(module_map, bi);
>   }
>   
>   static struct microcode_ops __ro_after_init ucode_ops;
> @@ -822,8 +819,8 @@ static int __init early_update_cache(const void *data, size_t len)
>       return rc;
>   }
>   
> -int __init microcode_init_cache(unsigned long *module_map,
> -                                const struct multiboot_info *mbi)
> +int __init microcode_init_cache(
> +    unsigned long *module_map, const struct boot_info *bi)

Why the indent style change?  I prefer the original indent and it 
doesn't seem like the line length matters.  And it looks like you 
restore the indent later.

>   {
>       int rc = 0;
>   

> diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
> index 57c08205d475..495c8f7a7cc5 100644
> --- a/xen/arch/x86/include/asm/microcode.h
> +++ b/xen/arch/x86/include/asm/microcode.h
> @@ -4,6 +4,8 @@
>   #include <xen/types.h>
>   #include <xen/percpu.h>
>   
> +#include <asm/bootinfo.h>
> +
>   #include <public/xen.h>
>   
>   struct multiboot_info;
> @@ -22,12 +24,12 @@ struct cpu_signature {
>   DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
>   
>   void microcode_set_module(unsigned int idx);
> -int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
> -                     unsigned long len, unsigned int flags);
> -int early_microcode_init(unsigned long *module_map,
> -                         const struct multiboot_info *mbi);
> -int microcode_init_cache(unsigned long *module_map,
> -                         const struct multiboot_info *mbi);
> +int microcode_update(
> +    XEN_GUEST_HANDLE(const_void) buf, unsigned long len, unsigned int flags);
> +int early_microcode_init(
> +    unsigned long *module_map, struct boot_info *bi);
> +int microcode_init_cache(
> +    unsigned long *module_map, const struct boot_info *bi);

More indent churn.  The diff would be smaller without it.

>   int microcode_update_one(void);
>   
>   #endif /* ASM_X86__MICROCODE_H */


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:25:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:25:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812505.1225281 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxvEh-0004ra-MI; Mon, 07 Oct 2024 21:25:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812505.1225281; Mon, 07 Oct 2024 21: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 1sxvEh-0004rT-JZ; Mon, 07 Oct 2024 21:25:47 +0000
Received: by outflank-mailman (input) for mailman id 812505;
 Mon, 07 Oct 2024 21: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 1sxvEg-0004rK-SZ
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21: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 1sxvEc-0001kX-JP; Mon, 07 Oct 2024 21:25:42 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.244])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1sxvEc-0000x1-Db; Mon, 07 Oct 2024 21:25: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=qNbhSI5DIZ/cinGKIaF6vNU1V6SegZJbxkOIxeLm+94=; b=NhaEi5edEz3HEjtUB45gDTqx5k
	aaMUScwZ5iVT+YVkzN7751psiWQDADZySlo47ObGcK4Gb4ocuZnN2/Ijk6CyTKweGwtxhwHHEVgzw
	loZBNmj2nYe3IvcAJmYdBnNdPFOfwRm7cuaxMKYWFIYCrpQcPI6sW7dXmA8T9dqQ8Nhk=;
Message-ID: <3b160dfe-9f46-479b-acd6-57f6ca6da72e@xen.org>
Date: Mon, 7 Oct 2024 22:25:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/4] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>, Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20240918175102.223076-1-ayan.kumar.halder@amd.com>
 <20240918175102.223076-5-ayan.kumar.halder@amd.com>
 <c27ebb1a-6ca4-41d7-99d8-ea613e3120fc@suse.com>
 <c0ce0c42-6b23-4687-a444-81a617629125@amd.com>
 <dc2ba7dd-fc55-4f4b-a33f-c733bb142efe@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <dc2ba7dd-fc55-4f4b-a33f-c733bb142efe@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Jan,

On 24/09/2024 13:22, Jan Beulich wrote:
> On 24.09.2024 13:54, Ayan Kumar Halder wrote:
>> Hi Jan,
>>
>> On 23/09/2024 11:23, Jan Beulich wrote:
>>> On 18.09.2024 19:51, Ayan Kumar Halder wrote:
>>>> Secondary cpus initialization is not yet supported. Thus, we print an
>>>> appropriate message and put the secondary cpus in WFE state.
>>>>
>>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>>> ---
>>>> Changes from :-
>>>>
>>>> v1 - 1. NR_CPUS is defined as 1 for MPU
>>> Not quite, what you do is ...
>>>
>>>> --- a/xen/arch/Kconfig
>>>> +++ b/xen/arch/Kconfig
>>>> @@ -11,6 +11,7 @@ config NR_CPUS
>>>>    	default "8" if ARM && RCAR3
>>>>    	default "4" if ARM && QEMU
>>>>    	default "4" if ARM && MPSOC
>>>> +	default "1" if ARM && MPU
>>>>    	default "128" if ARM
>>>>    	help
>>>>    	  Controls the build-time size of various arrays and bitmaps
>>> ... merely set the default. I wonder how useful that is, the more that
>>> - as per the description - this is temporary only anyway.
>>
>> Yes, I can enforce a build time check like this.
>>
>> --- a/xen/arch/arm/setup.c
>> +++ b/xen/arch/arm/setup.c
>> @@ -295,6 +295,12 @@ void asmlinkage __init start_xen(unsigned long
>> fdt_paddr)
>>        struct domain *d;
>>        int rc, i;
>>
>> +    /*
>> +     * Currently MPU does not support SMP.
>> +     */
>> +#ifdef CONFIG_MPU
>> +    BUILD_BUG_ON(NR_CPUS > 1);
>> +#endif
>>        dcache_line_bytes = read_dcache_line_bytes();
>>
>> Does this look ok ?
> 
> Well, I'd still want to understand the purpose (if I was maintainer of
> this code at least). You can't bring up secondary processors yet - fine.
> But why does that mean you want to limit the build to NR_CPUS=1? Any
> number is fine, but just not useful?

I have suggested to restrict NR_CPUS because it is not clear whether 
cpu_up() would even work on MPU. In its current state, it may return an 
error but could also corrupt the system.

At least for Xen on Arm, we have no other way to temporarly disable SMP 
support (aside modify the provided DTB, but I would like to avoid it).

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:38:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:38:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812515.1225292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxvQw-0005jx-R5; Mon, 07 Oct 2024 21:38:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812515.1225292; Mon, 07 Oct 2024 21:38: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 1sxvQw-0005ie-LX; Mon, 07 Oct 2024 21:38:26 +0000
Received: by outflank-mailman (input) for mailman id 812515;
 Mon, 07 Oct 2024 21:38: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=QHG9=RD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sxvQv-0005dL-AZ
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:38:25 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org
 [2604:1380:4641:c500::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 796cf64b-84f4-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 23:38:22 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id CB92D5C5DC1;
 Mon,  7 Oct 2024 21:38:16 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E5EBC4CEC6;
 Mon,  7 Oct 2024 21:38: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: 796cf64b-84f4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728337100;
	bh=sEdm/Squhg0RayXaMiMYS8WlURo2VsJiTcHepsTlbOw=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=OfQMnxzS4bmH0pWAKZUSygxAlGllc7trAVGMqekjMME2xfZiWhzE5d71Zf/7/Qu6/
	 P+Spgssnwj6FQbW1seYFxBfGB6iv5NGZKy+mOTD3BxYiqzaebsoOnq2je21ra0q9oy
	 qrkRdcUrljMKGo8Tu8qhCTQ5/hf7u3+3JrEzNg7Y4TShpkSsTpuodEg8ZibudQq5KK
	 YsQtvo8VbLuaR8I8TDtnA+9M/ew6lkO9tEeIKGxA7gluhxJzigl78n9GCzkKd1ksil
	 IUKVga62b580GgKAgl496YPD6aWncR8d7YpaCPV0dEzGLbwYW3flCoE9lo1A38+GqL
	 ockWvt1U0b53A==
Date: Mon, 7 Oct 2024 14:38:18 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
cc: qemu-devel@nongnu.org, sstabellini@kernel.org, anthony@xenproject.org, 
    paul@xen.org, peter.maydell@linaro.org, edgar.iglesias@amd.com, 
    xen-devel@lists.xenproject.org
Subject: Re: [PATCH v1 1/1] hw/xen: Avoid use of uninitialized
 bufioreq_evtchn
In-Reply-To: <20241007211643.1572271-2-edgar.iglesias@gmail.com>
Message-ID: <alpine.DEB.2.22.394.2410071438110.3512606@ubuntu-linux-20-04-desktop>
References: <20241007211643.1572271-1-edgar.iglesias@gmail.com> <20241007211643.1572271-2-edgar.iglesias@gmail.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 7 Oct 2024, Edgar E. Iglesias wrote:
> From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
> 
> Avoid use of uninitialized bufioreq_evtchn. It should only
> be used if buffered IOREQs are enabled.
> 
> Resolves: Coverity CID 1563383
> Reported-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>  hw/xen/xen-hvm-common.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
> index 7d2b72853b..7ffbbfea23 100644
> --- a/hw/xen/xen-hvm-common.c
> +++ b/hw/xen/xen-hvm-common.c
> @@ -752,9 +752,10 @@ static int xen_map_ioreq_server(XenIOState *state)
>          return -1;
>      }
>  
> -    trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
> -
> -    state->bufioreq_remote_port = bufioreq_evtchn;
> +    if (state->has_bufioreq) {
> +        trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
> +        state->bufioreq_remote_port = bufioreq_evtchn;
> +    }
>  
>      return 0;
>  }
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:44:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:44:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812521.1225301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxvWm-00020w-Bi; Mon, 07 Oct 2024 21:44:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812521.1225301; Mon, 07 Oct 2024 21:44: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 1sxvWm-00020p-8a; Mon, 07 Oct 2024 21:44:28 +0000
Received: by outflank-mailman (input) for mailman id 812521;
 Mon, 07 Oct 2024 21:44: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=QHG9=RD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sxvWl-00020j-CL
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:44:27 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 52326b4d-84f5-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 23:44:26 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 526B9A4086D;
 Mon,  7 Oct 2024 21:44:16 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A9D8AC4CECD;
 Mon,  7 Oct 2024 21:44: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: 52326b4d-84f5-11ef-a0bb-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728337464;
	bh=dsIN3HN8rPdN2lOtYfmq32KUMmIZ6M+ZX6V2MykRGrY=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=cOEFcXjUFDPNnHWnQJzSuV3kSEs6ll0exiKGTsfoTkDpms/Ar9BcYlOEitkJMpN3U
	 NLIP/pRkg96KHQfs9AdoFP9RGdyV04M5B5wpQGPBYzm2Tdhh7gIedfVSGmZMlisptr
	 282Sos8gw2UxbxdExW0JSWOgyzB3ruG0voRwMKtIYC9QyO+jzp6P2Gd/dNNT9SvSHQ
	 3cITx3Y3Ioxjei0LNLYvxv+RILBhdCPlmcCrPsr8clZw/AhtaGNonNIhB4M00seWDN
	 j7D0Cc21Q56Y7Fn6gbTwVhEWbKkev9JBKoTiAAAKZ5odZ3Bn9bdHnLi6a+5B/EsK0T
	 d3yLV8ia6WOgA==
Date: Mon, 7 Oct 2024 14:44:22 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Federico Serafini <federico.serafini@bugseng.com>
cc: xen-devel@lists.xenproject.org, consulting@bugseng.com, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v2 3/4] xen/vpci: address violations of MISRA C Rule
 16.3
In-Reply-To: <a91c0223b827593f5c1a7ca7ece786266e5b8f52.1728308312.git.federico.serafini@bugseng.com>
Message-ID: <alpine.DEB.2.22.394.2410071442570.3512606@ubuntu-linux-20-04-desktop>
References: <cover.1728308312.git.federico.serafini@bugseng.com> <a91c0223b827593f5c1a7ca7ece786266e5b8f52.1728308312.git.federico.serafini@bugseng.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 7 Oct 2024, Federico Serafini wrote:
> 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>
> ---
> Changes from v2:
> - simply break without returning X86EMUL_UNHANDLEABLE.
> 
> As pointed out by Jan, these functions only return X86EMUL_OKAY but:
> https://lists.xenproject.org/archives/html/xen-devel/2024-09/msg00727.html
> 
> Do you have any comments?
> ---
>  xen/drivers/vpci/msix.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
> index fbe710ab92..5bb4444ce2 100644
> --- a/xen/drivers/vpci/msix.c
> +++ b/xen/drivers/vpci/msix.c
> @@ -364,6 +364,7 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
>  
>      default:
>          ASSERT_UNREACHABLE();
> +        break;
>      }
>      spin_unlock(&vpci->lock);
>  
> @@ -512,6 +513,7 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
>  
>      default:
>          ASSERT_UNREACHABLE();
> +        break;
>      }
>      spin_unlock(&vpci->lock);

I think in both cases it should be:

spin_unlock(&vpci->lock);
return X86EMUL_UNHANDLEABLE;

In general, it seems to be that we want to return X86EMUL_UNHANDLEABLE
in these situations and either we returning it from the default label,
or we need to do rc = X86EMUL_UNHANDLEABLE; and later on return rc;


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:45:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:45:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812525.1225310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxvXa-0002UB-JA; Mon, 07 Oct 2024 21:45:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812525.1225310; Mon, 07 Oct 2024 21:45: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 1sxvXa-0002U4-GT; Mon, 07 Oct 2024 21:45:18 +0000
Received: by outflank-mailman (input) for mailman id 812525;
 Mon, 07 Oct 2024 21:45: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=QHG9=RD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1sxvXZ-0002T9-0T
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:45:17 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6fbb8f03-84f5-11ef-99a2-01e77a169b0f;
 Mon, 07 Oct 2024 23:45:15 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id EFDACA4086D;
 Mon,  7 Oct 2024 21:45:05 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 34B1EC4CEC6;
 Mon,  7 Oct 2024 21:45: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: 6fbb8f03-84f5-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728337514;
	bh=Mh4sT+IaV43reervkTF/KCNaezg5y8WO/3Q6Uoo4PZI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=rNyYjOynwcMHFfFkvSy7s5d3XfeMAwSBnYwo47yaioLepDKp1exHfz4kORLM4B19s
	 hZES1CKspw3LwdhGQuQa7/hu1HiIlkHJ1pmZOInNHGz/sSjGZQ5Rqp8q+7zfqwjsnG
	 PWhT7Ky8k4ZgQbq1s6f0arAGLjc1pA2U9bfnQIUfyBpmNhf3LGbn0ifvY1W+cZHRiT
	 1mnuD9jVHGb2lLdzwOeHbfKxd0vp5PXCtEhX0u8N5kzBYbs52lO5i2Q2TvnY3wza2U
	 k0aO69tnnyokGKlqLG503ogYPDHYY9jncQIQayo46DlOzFi8It6CU+SOWpgaKP3CzL
	 rvHup6NvLsMfQ==
Date: Mon, 7 Oct 2024 14:45:11 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Federico Serafini <federico.serafini@bugseng.com>
cc: xen-devel@lists.xenproject.org, consulting@bugseng.com, 
    Jan Beulich <jbeulich@suse.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v2 4/4] xen/pci: address a violation of MISRA C Rule
 16.3
In-Reply-To: <c662cae0f545a4e4e3921ae13bf69dc02884d9ee.1728308312.git.federico.serafini@bugseng.com>
Message-ID: <alpine.DEB.2.22.394.2410071445060.3512606@ubuntu-linux-20-04-desktop>
References: <cover.1728308312.git.federico.serafini@bugseng.com> <c662cae0f545a4e4e3921ae13bf69dc02884d9ee.1728308312.git.federico.serafini@bugseng.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 7 Oct 2024, Federico Serafini wrote:
> Refactor the code to avoid an implicit fallthrough and address
> a violation 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>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> Changes in v2:
> - improved description.
> ---
>  xen/drivers/passthrough/pci.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
> index 5a446d3dce..a5705def3f 100644
> --- a/xen/drivers/passthrough/pci.c
> +++ b/xen/drivers/passthrough/pci.c
> @@ -170,8 +170,10 @@ static int __init cf_check parse_phantom_dev(const char *str)
>      {
>      case 1: case 2: case 4:
>          if ( *s )
> -    default:
>              return -EINVAL;
> +        break;
> +    default:
> +        return -EINVAL;
>      }
>  
>      phantom_devs[nr_phantom_devs++] = phantom;
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 21:51:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 21:51:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812533.1225321 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxvd3-0001A2-5p; Mon, 07 Oct 2024 21:50:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812533.1225321; Mon, 07 Oct 2024 21:50: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 1sxvd3-00019v-3D; Mon, 07 Oct 2024 21:50:57 +0000
Received: by outflank-mailman (input) for mailman id 812533;
 Mon, 07 Oct 2024 21:50: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=4SUe=RD=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1sxvd1-00019p-4g
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 21:50:55 +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 3986e886-84f6-11ef-a0bb-8be0dac302b0;
 Mon, 07 Oct 2024 23:50:53 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 3529DA04EB;
 Mon,  7 Oct 2024 23:50:53 +0200 (CEST)
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 aTi6RukUwb9d; Mon,  7 Oct 2024 23:50:53 +0200 (CEST)
Received: from begin (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (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 E95A2A04E8;
 Mon,  7 Oct 2024 23:50:52 +0200 (CEST)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1sxvcy-0000000A4XW-22Yd; Mon, 07 Oct 2024 23:50:52 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3986e886-84f6-11ef-a0bb-8be0dac302b0
Date: Mon, 7 Oct 2024 23:50:52 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>
Subject: Re: [PATCH 2/4] stubdom: explcitly add libc and lwip Mini-OS config
 options
Message-ID: <ZwRXvG4a2Jtgba2s@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org,
	Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>
References: <20241005151548.29184-1-jgross@suse.com>
 <20241005151548.29184-3-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241005151548.29184-3-jgross@suse.com>
Organization: I am not organized

> diff --git a/stubdom/grub/minios.cfg b/stubdom/grub/minios.cfg
> index 8df49092cd..5145b357e0 100644
> --- a/stubdom/grub/minios.cfg
> +++ b/stubdom/grub/minios.cfg
> @@ -1,3 +1,4 @@
> -CONFIG_START_NETWORK=n
> +CONFIG_LIBC=y
> +CONFIG_LWIP=n
>  CONFIG_SPARSE_BSS=n
>  CONFIG_TPMFRONT=y

Grub does use LWIP, and just does not want mini-os to start network
automatically, grub does so by itself from minios_probe.

> diff --git a/stubdom/vtpm/minios.cfg b/stubdom/vtpm/minios.cfg
> index 31652ee4f2..22f66f1351 100644
> --- a/stubdom/vtpm/minios.cfg
> +++ b/stubdom/vtpm/minios.cfg
> @@ -1,7 +1,8 @@
> +CONFIG_LIBC=y
> +CONFIG_LWIP=n
>  CONFIG_TPMFRONT=y
>  CONFIG_TPM_TIS=n
>  CONFIG_TPMBACK=y
> -CONFIG_START_NETWORK=n
>  CONFIG_TEST=n
>  CONFIG_PCIFRONT=n
>  CONFIG_BLKFRONT=y
> diff --git a/stubdom/vtpmmgr/minios.cfg b/stubdom/vtpmmgr/minios.cfg
> index 3fb383d30f..a9f13a2fd2 100644
> --- a/stubdom/vtpmmgr/minios.cfg
> +++ b/stubdom/vtpmmgr/minios.cfg
> @@ -1,7 +1,8 @@
> +CONFIG_LIBC=y
> +CONFIG_LWIP=n
>  CONFIG_TPMFRONT=y
>  CONFIG_TPM_TIS=y
>  CONFIG_TPMBACK=y
> -CONFIG_START_NETWORK=n
>  CONFIG_TEST=n
>  CONFIG_PCIFRONT=n
>  CONFIG_BLKFRONT=y

I guess vtpm indeed don't need lwip.

Samuel


From xen-devel-bounces@lists.xenproject.org Mon Oct 07 22:13:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 07 Oct 2024 22:13:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812557.1225335 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxvyx-0005dl-0z; Mon, 07 Oct 2024 22:13:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812557.1225335; Mon, 07 Oct 2024 22: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 1sxvyw-0005dM-St; Mon, 07 Oct 2024 22:13:34 +0000
Received: by outflank-mailman (input) for mailman id 812557;
 Mon, 07 Oct 2024 22:13: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=4SUe=RD=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1sxvyw-0005cx-Gz
 for xen-devel@lists.xenproject.org; Mon, 07 Oct 2024 22:13:34 +0000
Received: from sonata.ens-lyon.org (sonata.ens-lyon.org [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 62190f25-84f9-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 00:13:30 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 9F041A04F7;
 Tue,  8 Oct 2024 00:13:29 +0200 (CEST)
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 HuvIWjaylGeg; Tue,  8 Oct 2024 00:13:29 +0200 (CEST)
Received: from begin (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (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 83527A048A;
 Tue,  8 Oct 2024 00:13:29 +0200 (CEST)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1sxvyr-0000000AIBP-0WPb; Tue, 08 Oct 2024 00:13:29 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 62190f25-84f9-11ef-99a2-01e77a169b0f
Date: Tue, 8 Oct 2024 00:13:29 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [MINI-OS PATCH 2/2] drop CONFIG_XC support
Message-ID: <ZwRdCU20l8PUPQ-V@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
References: <20241007103456.14946-1-jgross@suse.com>
 <20241007103456.14946-3-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20241007103456.14946-3-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le lun. 07 oct. 2024 12:34:56 +0200, a ecrit:
> CONFIG_XC is no longer needed with individual CONFIG_LIBXEN support.

I don't really see why in the previous patch you introduced
compatibility and here you remove it?

Samuel

> Remove it, while disabling the CONFIG_LIBXEN items by default.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
>  Config.mk | 30 +++++++++---------------------
>  1 file changed, 9 insertions(+), 21 deletions(-)
> 
> diff --git a/Config.mk b/Config.mk
> index d0fbacac..f59a0cf4 100644
> --- a/Config.mk
> +++ b/Config.mk
> @@ -193,6 +193,15 @@ CONFIG-n += CONFIG_9PFRONT
>  CONFIG-n += CONFIG_TPM_TIS
>  CONFIG-n += CONFIG_TPMBACK
>  CONFIG-n += CONFIG_BALLOON
> +CONFIG-n += CONFIG_LIBXENCALL
> +CONFIG-n += CONFIG_LIBXENCTRL
> +CONFIG-n += CONFIG_LIBXENDEVICEMODEL
> +CONFIG-n += CONFIG_LIBXENEVTCHN
> +CONFIG-n += CONFIG_LIBXENFOREIGNMEMORY
> +CONFIG-n += CONFIG_LIBXENGNTTAB
> +CONFIG-n += CONFIG_LIBXENGUEST
> +CONFIG-n += CONFIG_LIBXENTOOLCORE
> +CONFIG-n += CONFIG_LIBXENTOOLLOG
>  # Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
>  # console apart of standard dom0 handled console.
>  CONFIG-n += CONFIG_USE_XEN_CONSOLE
> @@ -201,8 +210,6 @@ CONFIG-y += CONFIG_PARAVIRT
>  else
>  CONFIG-n += CONFIG_PARAVIRT
>  endif
> -# Support legacy CONFIG_XC value
> -CONFIG_XC ?= $(libc)
>  
>  CONFIG-$(lwip) += CONFIG_LWIP
>  
> @@ -212,25 +219,6 @@ $(foreach i,$(CONFIG-n),$(eval $(i) ?= n))
>  CONFIG-x += CONFIG_LIBXS
>  CONFIG_LIBXS ?= $(CONFIG_XENBUS)
>  
> -CONFIG-x += CONFIG_LIBXENCALL
> -CONFIG-x += CONFIG_LIBXENCTRL
> -CONFIG-x += CONFIG_LIBXENDEVICEMODEL
> -CONFIG-x += CONFIG_LIBXENEVTCHN
> -CONFIG-x += CONFIG_LIBXENFOREIGNMEMORY
> -CONFIG-x += CONFIG_LIBXENGNTTAB
> -CONFIG-x += CONFIG_LIBXENGUEST
> -CONFIG-x += CONFIG_LIBXENTOOLCORE
> -CONFIG-x += CONFIG_LIBXENTOOLLOG
> -CONFIG_LIBXENCALL ?= $(CONFIG_XC)
> -CONFIG_LIBXENCTRL ?= $(CONFIG_XC)
> -CONFIG_LIBXENDEVICEMODEL ?= $(CONFIG_XC)
> -CONFIG_LIBXENEVTCHN ?= $(CONFIG_XC)
> -CONFIG_LIBXENFOREIGNMEMORY ?= $(CONFIG_XC)
> -CONFIG_LIBXENGNTTAB ?= $(CONFIG_XC)
> -CONFIG_LIBXENGUEST ?= $(CONFIG_XC)
> -CONFIG_LIBXENTOOLCORE ?= $(CONFIG_XC)
> -CONFIG_LIBXENTOOLLOG ?= $(CONFIG_XC)
> -
>  CONFIG-all := $(CONFIG-y) $(CONFIG-n) $(CONFIG-x)
>  
>  # Export config items as compiler directives
> -- 
> 2.43.0
> 

-- 
Samuel
 Cliquez sur le lien qui suit dans ce mail...vous n'avez plus qu'a vous
 inscrire pour gagner de l'argent en restant connecte....et puis faites
 passer le message et vous gagnerez encore plus d'argent ...
 -+- AC in NPC : Neuneu a rencontré le Pere Noël -+-


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 02:01:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 02:01:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812572.1225345 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sxzX3-00076r-ON; Tue, 08 Oct 2024 02:01:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812572.1225345; Tue, 08 Oct 2024 02:01: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 1sxzX3-00076k-L8; Tue, 08 Oct 2024 02:01:01 +0000
Received: by outflank-mailman (input) for mailman id 812572;
 Tue, 08 Oct 2024 02:01: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 1sxzX2-00076a-BE; Tue, 08 Oct 2024 02:01: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 1sxzX2-0006KV-6r; Tue, 08 Oct 2024 02:01: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 1sxzX1-0004rC-DW; Tue, 08 Oct 2024 02:00:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sxzX1-0001tN-D2; Tue, 08 Oct 2024 02: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>
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=o497kfXkZ50KoLtDwpMR/ekgbbw0QF3fsEFG+4PH+K8=; b=x0TFhpzzBWi5omV6x7/7Uq5sUZ
	2YVr3sQEQmqnfG1oPwjtKiyqi4WvgotmnH8yRsaG1O/AUOT3FZwX10UxTpVDft/zU+hLMqPawIZf5
	bIgi57cvyirge5Py78RqHI3MrZyp93RP+x+62dXQQmOJgwah25upWqgT0XuQgB10HMog=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-187999-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 187999: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=b5ab62b3c0050612c7f9b0b4baeb44ebab42775a
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 02:00:59 +0000

flight 187999 qemu-mainline real [real]
flight 188003 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/187999/
http://logs.test-lab.xenproject.org/osstest/logs/188003/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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          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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                b5ab62b3c0050612c7f9b0b4baeb44ebab42775a
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   21 days
Failing since        187731  2024-09-17 13:11:20 Z   20 days   35 attempts
Testing same since   187988  2024-10-06 17:41:20 Z    1 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 7931 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 03:03:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 03:03:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812589.1225355 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy0VL-0006JH-BX; Tue, 08 Oct 2024 03:03:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812589.1225355; Tue, 08 Oct 2024 03:03: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 1sy0VL-0006JA-7x; Tue, 08 Oct 2024 03:03:19 +0000
Received: by outflank-mailman (input) for mailman id 812589;
 Tue, 08 Oct 2024 03:03: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 1sy0VJ-0006J0-Kh; Tue, 08 Oct 2024 03:03: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 1sy0VJ-0007Pu-JC; Tue, 08 Oct 2024 03:03: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 1sy0VJ-0008Ce-8M; Tue, 08 Oct 2024 03:03:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sy0VJ-000662-7u; Tue, 08 Oct 2024 03: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>
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=wD666rq1Na+w+1mlwO7dfUMr92aZ6tlE2aRDCWhKv2A=; b=2VE/ajqNduH2SIUB7UUU1dPYKH
	vML6AypEKmlVBLk2CQCv4NPGm+JQpC8vJu+cwg9Am/YyYC6Xc/aQNDbSU8/HPaNpSn4mLne1UjfaW
	hw+9w0BBF6w8AxdNk98CVYKv86DhC4tp3ASCLoLVUBpcyAakXPseC2Kd9IugVqqfg3lw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188004-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188004: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=d99045f39220e2ad075ae5b93b53bbabd5923cb4
X-Osstest-Versions-That:
    ovmf=596773f5e33ec03968b8e8621ff4958b3eeaf412
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 03:03:17 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 d99045f39220e2ad075ae5b93b53bbabd5923cb4
baseline version:
 ovmf                 596773f5e33ec03968b8e8621ff4958b3eeaf412

Last test of basis   187996  2024-10-07 07:43:20 Z    0 days
Testing same since   188004  2024-10-08 00:41:35 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Oliver Smith-Denny <osde@linux.microsoft.com>
  Oliver Smith-Denny <osde@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    


------------------------------------------------------------
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
   596773f5e3..d99045f392  d99045f39220e2ad075ae5b93b53bbabd5923cb4 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 04:53:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 04:53:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812601.1225364 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy2DW-00006o-Uo; Tue, 08 Oct 2024 04:53:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812601.1225364; Tue, 08 Oct 2024 04:53: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 1sy2DW-00006h-SC; Tue, 08 Oct 2024 04:53:02 +0000
Received: by outflank-mailman (input) for mailman id 812601;
 Tue, 08 Oct 2024 04:53: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 1sy2DW-00006X-9a; Tue, 08 Oct 2024 04:53: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 1sy2DW-0000wc-7C; Tue, 08 Oct 2024 04:53: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 1sy2DV-0004FN-MS; Tue, 08 Oct 2024 04:53:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sy2DV-0005qS-M9; Tue, 08 Oct 2024 04:53: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=AFjcjlk5IVxf5bXIV1WEsIC0Pmw28fxbf8OGCvSsE0s=; b=GZmrFMszYZ8KbJdRjfm0XxaOdm
	P6ueAeiT6ehY65jM/V7fPvFpWpVPIQEQEr28fiPfKnjoLIcpa3BXN28Ae5OiZgDA5H2UaR69QXtdr
	RhAWZNXWTJ3lk4caQM3g+7i0kvz42yFdF/tp1cA05hv9/UD83yfsXxEFgemxQW3Kee+I=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188000-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188000: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-pygrub:guest-localmigrate/x10:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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: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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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-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-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-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=29555668b5725b9d5393b72bfe7ff9a3fa606714
X-Osstest-Versions-That:
    xen=6b20755c24ccd69d2482b45dfb9193940cdc346e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 04:53:01 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-pygrub   19 guest-localmigrate/x10 fail pass in 188007-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187991
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187991
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187991
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187991
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187991
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187991
 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-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-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  29555668b5725b9d5393b72bfe7ff9a3fa606714
baseline version:
 xen                  6b20755c24ccd69d2482b45dfb9193940cdc346e

Last test of basis   187991  2024-10-07 01:52:11 Z    1 days
Testing same since   188000  2024-10-07 15:09:08 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Federico Serafini <federico.serafini@bugseng.com>
  Jan Beulich <jbeulich@suse.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Roger Pau Monné <roger.pau@citrix.com>
  Stefano Stabellini <sstabellini@kernel.org>

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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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                                      fail    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   6b20755c24..29555668b5  29555668b5725b9d5393b72bfe7ff9a3fa606714 -> master


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 05:54:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 05:54:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812613.1225387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3Aw-0007qW-G5; Tue, 08 Oct 2024 05:54:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812613.1225387; Tue, 08 Oct 2024 05: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 1sy3Aw-0007qP-Cr; Tue, 08 Oct 2024 05:54:26 +0000
Received: by outflank-mailman (input) for mailman id 812613;
 Tue, 08 Oct 2024 05:54: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 1sy3Av-0007qF-OL; Tue, 08 Oct 2024 05:54: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 1sy3Av-0002Hw-Ml; Tue, 08 Oct 2024 05:54: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 1sy3Av-0006Ur-6S; Tue, 08 Oct 2024 05:54:25 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sy3Av-0000UM-3i; Tue, 08 Oct 2024 05:54: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=eSioCR8QEji3AM34XvHZ6hyA2QtJdn2qT/xIeufhoN8=; b=w+L/XvOxhcXgkvHR9u0C4IzFPj
	DU/8HAm3Fo5zsG0ysPQa5xJGV/phAYAHUZkj0nuDZ0Ewdj8Smcrf+h79LKi4TB/3GqNQO8B77YPpp
	l0OkvAkUvhhJgubXCg2S/CdIVqNchnUdVWRt1T4Jqd7MGjcBkaKPiJXs9YSQkp43X/78=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188006-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188006: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=550c38a29961ab1c9cc4f9a17cdd3346566c4bef
X-Osstest-Versions-That:
    ovmf=d99045f39220e2ad075ae5b93b53bbabd5923cb4
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 05:54:25 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 550c38a29961ab1c9cc4f9a17cdd3346566c4bef
baseline version:
 ovmf                 d99045f39220e2ad075ae5b93b53bbabd5923cb4

Last test of basis   188004  2024-10-08 00:41:35 Z    0 days
Testing same since   188006  2024-10-08 03:05:52 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Linus Liu <linus.liu@intel.com>
  Oliver Smith-Denny <osde@linux.microsoft.com>
  Oliver Smith-Denny <osde@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    


------------------------------------------------------------
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
   d99045f392..550c38a299  550c38a29961ab1c9cc4f9a17cdd3346566c4bef -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 05:59:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 05:59:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812623.1225397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3Fa-0002ua-1g; Tue, 08 Oct 2024 05:59:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812623.1225397; Tue, 08 Oct 2024 05: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 1sy3FZ-0002uT-Un; Tue, 08 Oct 2024 05:59:13 +0000
Received: by outflank-mailman (input) for mailman id 812623;
 Tue, 08 Oct 2024 05:59: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy3FY-0002uI-FC
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 05:59:12 +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 701a3ecd-853a-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 07:59:11 +0200 (CEST)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-37ce9644daaso3414114f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 22:59:10 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05eb34csm3927725a12.59.2024.10.07.22.59.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 22:59:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 701a3ecd-853a-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728367150; x=1728971950; darn=lists.xenproject.org;
        h=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=26d1rfUuMlhiGKmx+jD5HJ+W6LdLEy3kLIG52H3Zkcg=;
        b=RhQ5O4w2+WtVWTOZ7Jq+x5Nh6RugiYyOmquOLLsRVGEgk0JB7hyx25OZ+7ov8SFFtQ
         Jx1Xjs4Cu91yh01dcOTFuPwiiKYhhcEQJcmmi7F2P+R2qL50r+ElfbfagEO6GDc50hxn
         W2ns/V6/3F2/13jfBPQ4qTtt2UUf/Awdgn1JunhGKW5dRGoJwd92UQhAeMK/8dcIdrc3
         Y/4QsAiAMh+GznXB0sYI8f4wS15nypSwCfEsLNcyVWNbOPxzaaZTwlYNshlfXPNrTUeF
         zuTl+eh3RiufGmVpPuQ4DvLY3JaEQpH7Xmmm+GvP6gZ/tHKPftO7ahbFkzBMcWloSBO3
         SQQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728367150; x=1728971950;
        h=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=26d1rfUuMlhiGKmx+jD5HJ+W6LdLEy3kLIG52H3Zkcg=;
        b=l3m9/tiXGS/Tnjt5dYOiXukzruELit0lMdmWmOXADUkyh+uWRvYpP6ARDGFpq3knLB
         /69EBxUDuWvSZBUDl3PFA550TBIwWP3uJJ/2sPITDoYUTuWbsq7a3ZVIzUcD4ImAIjIG
         pUNsWZOk6v6njVvGxGT7Pj8o3nzUF7i/KovItiWWRA7RyaG2AziJhD/Fi2F2o993zz+R
         ywKPEKhWZXnJhljqjOr/BNQwxgVVblSrm35BxKAiFM2IupQa6ieftjtw5upI6rkXzdef
         I0Mpy+x1PC//2jEbbVr0TWcPKNOgELRQT79vr72bseVv5Es18Z6g/cKAJA55gVMiwi/X
         60fg==
X-Forwarded-Encrypted: i=1; AJvYcCVsX5nSxVpyW/QtfBEHM4Hw+CNjSKC4Ar5b4kKuDAoHMd93AeFQahX4Ub5nbnwnScGCi5k9XFEjqzM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxE2kI2bhISqOGr92i/5M9RwhqlaogAlgEyEr/ddaZh+C84uKiR
	xSRAWIGGc4wW/J009jMiw9b5iLjZ2ixVOPg0g5/a3FSY3csWKAZFAtHtsarL1g==
X-Google-Smtp-Source: AGHT+IELPQp8jecRWkGRxxwA4EWYRUz9X79CLIDpxh6rGKDwJZ1Drp/Db9L6rlIYfTmX/96abZw1Wg==
X-Received: by 2002:a5d:4411:0:b0:377:9867:9028 with SMTP id ffacd0b85a97d-37d0e8e2837mr8260587f8f.44.1728367150112;
        Mon, 07 Oct 2024 22:59:10 -0700 (PDT)
Content-Type: multipart/mixed; boundary="------------2zBCrRS4K8n5HsxT4n0sMbJF"
Message-ID: <1f8f6a0c-980f-43cb-9967-801641f8dbc0@suse.com>
Date: Tue, 8 Oct 2024 07:59:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
To: Roberto Bagnara <roberto.bagnara@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
 consulting@bugseng.com, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
 <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
 <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
 <alpine.DEB.2.22.394.2410011431360.451631@ubuntu-linux-20-04-desktop>
 <02833aad-d6f1-4ffa-8d4a-d8c31e9b0524@suse.com>
 <2f51a8e7-4044-4a84-a541-100799a28012@bugseng.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: <2f51a8e7-4044-4a84-a541-100799a28012@bugseng.com>

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

On 02.10.2024 08:54, Roberto Bagnara wrote:
> On 2024-10-02 08:09, Jan Beulich wrote:
>> On 01.10.2024 23:36, Stefano Stabellini wrote:
>>> On Tue, 1 Oct 2024, Jan Beulich wrote:
>>>> On 01.10.2024 07:25, Roberto Bagnara wrote:
>>>>> On 2024-09-30 15:07, Jan Beulich wrote:
>>>>>> On 30.09.2024 14:49, Federico Serafini wrote:
>>>>>>> guest_handle_ok()'s expansion contains a sizeof() involving its
>>>>>>> first argument which is guest_handle_cast().
>>>>>>> The expansion of the latter, in turn, contains a variable
>>>>>>> initialization.
>>>>>>>
>>>>>>> Since MISRA considers the initialization (even of a local variable)
>>>>>>> a side effect, the chain of expansions mentioned above violates
>>>>>>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
>>>>>>> contain any expression which has potential side effect).
>>>>>>
>>>>>> I'm afraid I need to ask for clarification of terminology and alike here.
>>>>>> While the Misra doc has a section on Persistent Side Effects in its
>>>>>> Glossary appendix, what constitutes a side effect from its pov isn't
>>>>>> really spelled out anywhere. Which in turn raises the question whether it
>>>>>> is indeed Misra (and not just Eclair) which deems initialization a side
>>>>>> effect. This is even more so relevant as 13.6 talks of only expressions,
>>>>>> yet initializers fall under declarations (in turn involving an expression
>>>>>> on the rhs of the equal sign).
>>>>>>
>>>>>> All the same of course affects patch 2 then, too.
>>>>>
>>>>> MISRA C leaves the definition of "side effect" to the C Standard.
>>>>> E.g., C18 5.1.2.3p2:
>>>>>
>>>>>     Accessing a volatile object, modifying an object, modifying a file,
>>>>>     or calling a function that does any of those operations are all
>>>>>     side effects,[omitted irrelevant footnote reference] which are
>>>>>     changes in the state of the execution environment.
>>>>>
>>>>> The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
>>>>> indirectly confirms that initialization is always a side effect.
>>>>
>>>> Hmm, that's interesting: There's indeed an example with an initializer
>>>> there. Yet to me the text you quote from the C standard does not say
>>>> that initialization is a side effect - it would be "modifying an
>>>> object" aiui, yet ahead of initialization being complete the object
>>>> doesn't "exist" imo, and hence can be "modified" only afterwards.
>>>
>>> I feel it's becoming a bit too philosophical. Since there's some room
>>> for interpretation and only two violations left to address, I believe
>>> it's best to stick with the stricter interpretation of the definition.
>>> Therefore, I'd proceed with this series in its current form.
>>
>> Proceeding with the series in its current form may be okay (as you say,
>> you view the changes as readability improvements anyway), but imo the
>> interpretation needs settling on no matter what. In fact even for these
>> two patches it may affect what their descriptions ought to say (would
>> be nice imo to avoid permanently recording potentially misleading
>> information by committing as is). And of course clarity would help
>> dealing with future instances that might appear. I take it you realize
>> that if someone had submitted a patch adding code similar to the
>> original forms of what's being altered here, it would be relatively
>> unlikely for a reviewer to spot the issue. IOW here we're making
>> ourselves heavily dependent upon Eclair spotting (supposed) issues,
>> adding extra work and delays for such changes to go in.
> 
> You can do two things to obtain a second opinion:
> 
> 1) Use the MISRA forum (here is the link to the forum
>     section devoted to the side-effect rules of MISRA C:2012
>     and MISRA C:2023 (https://forum.misra.org.uk/forumdisplay.php?fid=168).
>     The MISRA C Working Group will, in due course, provide
>     you with an official answer to your questions about what,
>     for the interpretation of Rule 13.6, has to be considered
>     a side effect.
> 
> 2) Reach out to your ISO National Body and try to obtain
>     an official answer from ISO/IEC JTC1/SC22/WG14 (the
>     international standardization working group for the
>     programming language C) to your questions about what the
>     C Standard considers to be side effects.

I took the latter route, and to my (positive) surprise I got back an answer
the same day. There was a request for someone to confirm, but so far I didn't
see further replies. Since this is a German institution I raised the question
in German and got back an answer in German (attached); I've tried my best to
translate this without falsifying anything, but I've omitted non-technical
parts:

"Initialization of an object is never a side effect of the initialization
by itself. Of course expressions used for initialization can themselves have
side effects on other objects.

@Andreas: Do you agree? C after all has a far simpler object model than C++.
The (potential) change in object representation (i.e. the bytes underlying
the object) is not a side effect of object initialization, but its primary
purpose."

Further for Misra she added a reference to a Swiss person, but I think with
Bugseng we have sufficient expertise there.

Jan
--------------2zBCrRS4K8n5HsxT4n0sMbJF
Content-Type: message/rfc822; name="AW: Klarstellung zu ISO/IEC
 JTC1/SC22/WG14.eml"
Content-Disposition: attachment; filename="AW: Klarstellung zu ISO/IEC
 JTC1/SC22/WG14.eml"
Content-Transfer-Encoding: 7bit

Delivered-To: jbeulich@suse.com
Received: by 2002:aa6:d944:0:b0:29e:fd31:2d61 with SMTP id w4csp815882lkc;
        Wed, 2 Oct 2024 06:31:13 -0700 (PDT)
X-Forwarded-Encrypted: i=3; AJvYcCUlFKYRaZYurI/h7lQwXs152YhXa5iwjjWQYctxdsY+sbL897nj3ukkJ9Bg3+drc2kvK2webpch8A==@suse.com
X-Google-Smtp-Source: AGHT+IFcRQYJ5yGqL8Ek4N3GF+m4qWcUaFbE6DfiTpe9tSR3G+Ut0B7svl+CrxUKa/uhWZFoi2ir
X-Received: by 2002:a05:6000:e11:b0:37c:ced1:dd06 with SMTP id ffacd0b85a97d-37cfb9f9ccbmr1874792f8f.41.1727875873631;
        Wed, 02 Oct 2024 06:31:13 -0700 (PDT)
ARC-Seal: i=2; a=rsa-sha256; t=1727875873; cv=pass;
        d=google.com; s=arc-20240605;
        b=Ccsmv0tSonPNOmraBzwBXS3zs8xzOLjV8jSifYGhBVO2J0O/1+ul+u+ly3WtnqRR70
         GRKB7a+0GGpnFST969+Syw6GOwi4Rqq61CYguA8Kaisc5kZxaVWAmnfXTNnFDmnZt5lo
         dnle60GSE3eLKBsmo9Gufw9fD4EVvc1HlXqdLNggfjxitEDYEFcqfvOkClAMKsQLGR3N
         KTY1uuZkOD2O+6P+qHI5m54C+1aUeHkUzMPHRd9H+SR3r6WMCG8F84RhR+Vw+u9p+xR+
         EYRLbZr2ffVhkM/Ewok4mbW+QibOrtfXoURvdLlgoP3mVqUBTU8jTfWyQGHa8YVX3jIw
         yVmg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605;
        h=importance:content-transfer-encoding:mime-version:subject
         :references:in-reply-to:message-id:cc:to:from:date:dkim-signature
         :dkim-signature;
        bh=gqLzixRFcExxmwgQxITcEHF+zRUaT8QWyXD37Sf7WF4=;
        fh=wjE6VCDYDgSWmMpPztkPEeR7njgHslLn8MmGM3lclnI=;
        b=NfDr9hJCAEEloGqHJW5XvsxJuXCTuNe1wvcmSUlm19mdO+L1wlAYUVWvVsYeki56DW
         i60MNPV3tEY5lksIWxJqHMhzdF78NNtm97DWr8bTkzzqJbtaVEpfqfGlhUpcqe2/eOBf
         p1qRpSlD+kec+zyy8Y2w/9hCy27TkJWQTLc3mnVH1XDdr3V9v8alQ59/3mIMNlGLjb6b
         ybuRFPCm9HSSfwq2R3u6Qvls4XsIMpb4F+ftIPM5cBn1Z26HxqM5fSUpwXKSP7It6g5r
         xFpemWpu3cro+1osIt3d1FLhtTYfuGmdNB45TvCLvnCvfvb1a6jN7C7f5vH2OLxXN56m
         /rSw==;
        dara=google.com
ARC-Authentication-Results: i=2; mx.google.com;
       dkim=pass header.i=@ngrt.de header.s=strato-dkim-0002 header.b=Av+BfH85;
       dkim=neutral (no key) header.i=@ngrt.de header.s=strato-dkim-0003;
       arc=pass (i=1);
       spf=pass (google.com: domain of dani@ngrt.de designates 85.215.255.24 as permitted sender) smtp.mailfrom=dani@ngrt.de
Return-Path: <dani@ngrt.de>
Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de. [85.215.255.24])
        by mx.google.com with ESMTPS id ffacd0b85a97d-37cd56cf6c8si5300144f8f.617.2024.10.02.06.31.13
        for <jbeulich@suse.com>
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Wed, 02 Oct 2024 06:31:13 -0700 (PDT)
Received-SPF: pass (google.com: domain of dani@ngrt.de designates 85.215.255.24 as permitted sender) client-ip=85.215.255.24;
Authentication-Results: mx.google.com;
       dkim=pass header.i=@ngrt.de header.s=strato-dkim-0002 header.b=Av+BfH85;
       dkim=neutral (no key) header.i=@ngrt.de header.s=strato-dkim-0003;
       arc=pass (i=1);
       spf=pass (google.com: domain of dani@ngrt.de designates 85.215.255.24 as permitted sender) smtp.mailfrom=dani@ngrt.de
ARC-Seal: i=1; a=rsa-sha256; t=1727875873; cv=none;
    d=strato.com; s=strato-dkim-0002;
    b=Abrj5yW+HdijCFE1QHmPhJ02h0qBgoyX/e5PcMv+3s2FoJkI4t+NPpVKqr0POW4ECa
    Xgk5eujrEcBsdWp/T2bIFfAD1R6xKeE3h4qwR/uHOc8ISLSUGVqVLsw3Iet55evVqJvF
    bIOv1GhgjGa+PWZt2Jrm9cNxfNFrgndjk8ocLZ3NclYudDn0XSg20Xy4zyxaubLCCx51
    GfCGk4TSmvrtYVZWGSZHswYQNXJzq8zcu3vuacSbL4WOjgQbmLu/5UDpfZmSHxmzegYL
    IPXZ89Kom/KFepabWl/WMOXuG4AzCXKlHZOR04WMd4jZvjlOv63VzpGJAKLTqFvc+fN/
    uTgw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1727875873;
    s=strato-dkim-0002; d=strato.com;
    h=Subject:References:In-Reply-To:Message-ID:Cc:To:From:Date:Cc:Date:
    From:Subject:Sender;
    bh=gqLzixRFcExxmwgQxITcEHF+zRUaT8QWyXD37Sf7WF4=;
    b=Q6XWALr3hfdXMnqQIn14d+NatToraGG7HjA+ToS4UJnpVVhWJsG8qBlpaLvfKi2Lup
    Qlm4yTf4DNp67XkjDA9cYEwYtQbudIer1MShNaMXtc6z9bxsGXL/Oh6kCGqpsDZMJMcE
    dQ9+bxry2PVfYO6BIuenMt3aZI0pXIySzB3QpSkfDKbaSnSPDmlSmrNsiImU9h/hRzhk
    LyCx2iyrQWADTgx0EW+XrTitYSIfoCB0XZUI4Dhe9ne9J0h80OCH+4XiFYx6xNzLKaUS
    dkBc8oYdBFigoDwv9POQmOF2w7FuUqMtKd70EgaFKNTtnxyrKJlxFxlpO0QJo7CS4VcM
    rU6w==
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=1727875873;
    s=strato-dkim-0002; d=ngrt.de;
    h=Subject:References:In-Reply-To:Message-ID:Cc:To:From:Date:Cc:Date:
    From:Subject:Sender;
    bh=gqLzixRFcExxmwgQxITcEHF+zRUaT8QWyXD37Sf7WF4=;
    b=Av+BfH85GQ9ECzlC4ADD6WurBdFbutoMfQszQfBszTRyiVM0TZE/YCwdV5tJE/Z5QM
    db5xpXW2zg2FkzaT14cB2Or9totjrPSiybbSojijvlUHD27zXgoAYb5oHqFOf3Xt4UPf
    yGlt3ejah93HiRFZic7Uh+zgvlZsPO8aS9LAeXgm7cpogDbNRosTYSU71iN2gLHPLo9k
    g7X0OGkPjbAUC6pJXcynPdM9VoFy9rZ8alUgA/AoTmMvQn8jV9YYoAzq7m77Cnh2q7b5
    Tf663YZ4+2805MFrhp9HRZq7/L09fOAdz6mrS7pYiO+Cc8/IZRWA61fwIAlvXrOJ07bb
    kQYQ==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1727875873;
    s=strato-dkim-0003; d=ngrt.de;
    h=Subject:References:In-Reply-To:Message-ID:Cc:To:From:Date:Cc:Date:
    From:Subject:Sender;
    bh=gqLzixRFcExxmwgQxITcEHF+zRUaT8QWyXD37Sf7WF4=;
    b=wTBbHMhx/6GL9ys4qh7ER/wiHOfilLdOTdyXjfV/FPFuBt/3BrY3K6woEJ+TNJiQre
    9hXojmNrDT/tjWbkriAg==
X-RZG-AUTH: ":KG0KfGCmfO2xIKhf4vD7ORHThey/wL2HBH6a3w/S2CcNEt1015DndVmP"
Received: from ox-live-app302.back.ox.d0m.de
    by smtp-ox.front (RZmta 51.2.8 AUTH)
    with ESMTPSA id g2ce28092DVCZRm
	(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve X9_62_prime256v1 with 256 ECDH bits, eq. 3072 bits RSA))
	(Client did not present a certificate);
    Wed, 2 Oct 2024 15:31:12 +0200 (CEST)
Date: Wed, 2 Oct 2024 15:31:12 +0200 (CEST)
From: Daniela Engert <dani@ngrt.de>
To: =?UTF-8?Q?Wellh=C3=B6fer=2C_Johannes?= <Johannes.Wellhoefer@din.de>,
	"jbeulich@suse.com" <jbeulich@suse.com>
Cc: Andreas Weis <der_ghulbus@ghulbus-inc.de>
Message-ID: <1532591295.2404908.1727875872865@com4.strato.de>
In-Reply-To: <BEZP281MB186263DD7EAE62D49202FDCC83702@BEZP281MB1862.DEUP281.PROD.OUTLOOK.COM>
References: <1967078726.21.1727857048144@cae-live-2-1.cae.dg-init-cm-int-prod.svc.cluster.local>
 <BEVP281MB3443E83F6317B6087B01AC91AE702@BEVP281MB3443.DEUP281.PROD.OUTLOOK.COM>
 <BEZP281MB186263DD7EAE62D49202FDCC83702@BEZP281MB1862.DEUP281.PROD.OUTLOOK.COM>
Subject: Re: AW: Klarstellung zu ISO/IEC JTC1/SC22/WG14
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Priority: 3
Importance: Normal
X-Mailer: Open-Xchange Mailer v7.10.6-Rev68
X-Originating-Client: open-xchange-appsuite

Hallo zusammen,

bitte nicht wundern, aber sobald ich "Ingenieur" rieche, bin ich sofort bei=
m "Du" (bin ja selber eine).
Mein Hauptfokus liegt zwar auf C++, und C ist f=C3=BCr mich ein "Seiteneffe=
kt", aber diese Frage kann ich vermutlich ebenfalls beantworten:

Die Initialisierung eines Objekts ist niemals ein Seiteneffekt der Initiali=
sierung von sich selbst. In den Expressions, welche zur Initialisierung eva=
luiert werden, k=C3=B6nnen jedoch sehr wohl Seiteneffekte in anderen Objekt=
en auftreten.

@Andreas: kannst du dem zustimmen? C hat ja ein sehr viel einfacheres Objek=
tmodell als C++. Die (potentielle) =C3=84nderung der Objektrepr=C3=A4sentat=
ion (d.h. die Bytes, welche das Objekt hinterlegen) ist ja kein Seiteneffek=
t der Objektinitialisierung, sondern sein prim=C3=A4rer Zweck.

Wenn es um MISRA geht, w=C3=A4re sicherlich P. Sommerlad der richtige Anspr=
echpartner (https://sommerlad.ch/). Ansonsten tagt das WG14 Komittee gerade=
, gro=C3=9Fe Teile der WG14 Tafelrunde sind versammelt, Robert Seacord ist =
sein Chair.

lG Daniela



> Wellh=C3=B6fer, Johannes <johannes.wellhoefer@din.de> hat am 02.10.2024 1=
5:02 CEST geschrieben:
>=20
>=20
> Danke Manuela, f=C3=BCrs weiterleiten.
> =20
>  Sehr geehrter Herr Beulich,=20
> =20
>  vielen Dank f=C3=BCr Ihre Anfrage. Ich habe Frau Engert hier mit in den =
Emailverlauf genommen. Sie arbeitet als deutsche Expertin in der JTC1/SC22/=
WG14 mit.
>=20
> @Daniela Engert k=C3=B6nnen Sie Herrn Beulich mit seiner Frage (unten im =
Verlauf gelb markiert) weiterhelfen?
> =20
>  Mit freundlichen Gr=C3=BC=C3=9Fen
>=20
> Johannes Wellh=C3=B6fer
> Er/Sein
> Projektmanager
> DIN-Normenausschuss Informationstechnik und Anwendungen (NIA)
> DIN Deutsches Institut f=C3=BCr Normung e. V. =E2=80=93 Industrie und Inf=
ormationstechnik (DIN =E2=80=93 NuS IIT IuA)
>=20
> LinkedIn (https://www.linkedin.com/in/johannes-wellhoefer/) | T +49 30 26=
01-2455 | F +49 30 2601-4-2455 | M +49 174 2007820
> LinkedIn-Kanal des Normenausschusses f=C3=BCr Informationstechnik und Anw=
endungen (https://www.linkedin.com/showcase/din-nia/)
>=20
>=20
>=20
>=20
> Ab sofort kostenlos: Der Normungs-Monitor (https://www.din.de/de/din-und-=
seine-partner/presse/mitteilungen/ab-januar-kostenlos-der-normungs-monitor-=
983794)
> Unkompliziert zu Normungsprojekten Ihrer Branche auf dem Laufenden bleibe=
n
>=20
>=20
> Folgen Sie uns auf=09 https://twitter.com/DIN_Norm=09 https://www.linkedi=
n.com/company/din-ev=09 https://www.youtube.com/user/DINBerlin=09
>=20
> DIN Deutsches Institut f=C3=BCr Normung e. V., Am DIN-Platz, Burggrafenst=
ra=C3=9Fe 6, 10787 Berlin; www.din.de (http://www.din.de/)} Registergericht=
: AG Berlin-Charlottenburg, VR 288 B; Pr=C3=A4sident: Ulrich B. Stoll; Vors=
tand: Christoph Winterhalter (Vorsitzender), Daniel Schmidt;
> Der Inhalt dieser E-Mail (einschlie=C3=9Flich Anh=C3=A4ngen) ist vertraul=
ich. Falls Sie diese E-Mail versehentlich erhalten haben, l=C3=B6schen Sie =
sie bitte und informieren den Absender. The contents of this e-mail (includ=
ing attachments) are confidential. If you received this e-mail in error, pl=
ease delete it and notify the sender.
> -----Urspr=C3=BCngliche Nachricht-----
>  Von: Tillack-L=C3=BCbke, Manuela <Manuela.Tillack-luebke@din.de>=20
>  Gesendet: Mittwoch, 2. Oktober 2024 12:09
>  An: Wellh=C3=B6fer, Johannes <Johannes.Wellhoefer@din.de>
>  Betreff: WG: Klarstellung zu ISO/IEC JTC1/SC22/WG14
>=20
> Lieber Johannes,
>=20
> zust=C3=A4ndigkeitshalber bitte ich Dich um Beantwortung der unten angef=
=C3=BCgten Anfrage. Vielen Dank.
>=20
>=20
> Mit besten Gr=C3=BC=C3=9Fen
>=20
> Manuela
> AP A. 634
> -=C2=A02419
>=20
>=20
>=20
> -----Urspr=C3=BCngliche Nachricht-----
> Von: info@din.de <info@din.de>
> Gesendet: Mittwoch, 2. Oktober 2024 10:17
> An: DIN Info <DIN-Info@din.de>
> Betreff: Klarstellung zu ISO/IEC JTC1/SC22/WG14
>=20
> Guten Tag,
>=20
> folgende Nachricht wurde auf https://www.din.de/de an Sie geschickt.
>=20
> Guten Tag,
>=20
> im Zusammenhang mit Misra C:2012 ist eine Interpretationsfrage zum C99 St=
andard (ISO/IEC 9899:TC3) aufgetaucht. Zur Kl=C3=A4rung wurde ich an den IS=
O National Body verwiesen, der - soweit ich feststellen kann - Sie sind.
>=20
> Die eigentliche Frage betrifft "side effects": F=C3=A4llt die Initialisie=
rung eines Objekts auch darunter?
>=20
> In der Hoffnung, dass Sie uns bei der Kl=C3=A4rung behilflich sein k=C3=
=B6nnen, m=C3=B6glicherweise auch durch Verweis an eine andere geeignete St=
elle, vielen Dank im Voraus,
> Jan Beulich
>=20
> Herr Jan Beulich
> jbeulich@suse.com

--------------2zBCrRS4K8n5HsxT4n0sMbJF--


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 06:00:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 06:00:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812631.1225406 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3Gh-0004Qr-DQ; Tue, 08 Oct 2024 06:00:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812631.1225406; Tue, 08 Oct 2024 06: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 1sy3Gh-0004Qk-AK; Tue, 08 Oct 2024 06:00:23 +0000
Received: by outflank-mailman (input) for mailman id 812631;
 Tue, 08 Oct 2024 06: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=gcc3=RE=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1sy3Gf-0003LM-Ks
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 06:00:21 +0000
Received: from EUR02-DB5-obe.outbound.protection.outlook.com
 (mail-db5eur02on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2608::61b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 98f7657c-853a-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 08:00:19 +0200 (CEST)
Received: from AM6P192CA0035.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:83::48)
 by GV2PR08MB8003.eurprd08.prod.outlook.com (2603:10a6:150:af::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 06:00:11 +0000
Received: from AM4PEPF00027A5E.eurprd04.prod.outlook.com
 (2603:10a6:209:83:cafe::4) by AM6P192CA0035.outlook.office365.com
 (2603:10a6:209:83::48) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Tue, 8 Oct 2024 06:00:11 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00027A5E.mail.protection.outlook.com (10.167.16.72) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8048.13
 via Frontend Transport; Tue, 8 Oct 2024 06:00:09 +0000
Received: ("Tessian outbound 1cf41b4bd505:v473");
 Tue, 08 Oct 2024 06:00:09 +0000
Received: from L31b5525c66d6.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 4DBB61AA-6699-4306-AD18-6DCB99BFD93D.1; 
 Tue, 08 Oct 2024 06:00:02 +0000
Received: from EUR03-DBA-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L31b5525c66d6.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 08 Oct 2024 06:00:02 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by GV2PR08MB9326.eurprd08.prod.outlook.com (2603:10a6:150:d4::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 05:59:57 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8026.020; Tue, 8 Oct 2024
 05:59: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>
X-Inumbo-ID: 98f7657c-853a-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=qw3q+jdC9TIKsUiJ6TOsD3FMnYkN673aKyQHg/PyzhaaKetC7G9vXkCLSyfKUyFIJJ9OZ4sbZNzilVFqIqcdE5uTMYBB/fmqdsVfTeyg2egPHoeuw4vChXklBGNRp7WeB6ZyuMoMjzQIRX8dLS++1M01qRR7YGUHbVDmfGIeUtX7o6fzyi5k1F3scU1IIQvauywV9+R2SmLQ+2/JA14XMo0jsCk242uVyE0oum0GnaDPK75q20YYKN085kwcghnPz1VSqSX86dktdH7gVAN/cXFOqSBZl0t9PgYm7qO0mDMn18Jhhnd4kisS/N3XaBLao5s/9nyP8/8fzeHcBEN+SA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=WRCEqCyMsoz+j4uNpGlBOdtWaIj1N+tXt+fPR807E24=;
 b=Y3xw1ziRRvBiZ8JV2sjUV3OImyr5W/OkgfqWslBfzX+lksMVVUbc4nkDuLY5h74SGUWuM46llGHUWQOWw5mKHJuPTslvowJUZvtHqVdgipX4Z+wFKDeTfgbV7lspUuqw2TLKpUQlIjl7CzYQdDWfgEkD7f16PWI7a/jzko/6/H8g5owDkAx14mqjwzxkeT0D22NSTP74LQWnxePpG5Sd8NlG860rZZiELl0a7Cqdv0gKH/L/tpQw6NtD+ONlnv+HliKr75w3dpdCBjHw42V8K8IfoThFRwaU4/IeHdZc5OViX0tEtfyRBIaxICOXbIyMStHwAvYtRss8uBSH4Hvvgg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WRCEqCyMsoz+j4uNpGlBOdtWaIj1N+tXt+fPR807E24=;
 b=mWQzkQzvLV6HM4klQOsDRQAgOedj2VNvBLRva2GluAumLGRz+4zK8oHIPGcGxd+AJL2HiTH9gdjM07Rl6/I7bm1glVurasQGaagl61QQmcY4vEW8EpIf4c6swM3fDSZeJmKqFK36sejwnBnJ3eMXbRx4AcklYQhkbPOocTgiJoo=
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=arm.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: 2924a6db62dbd442
X-TessianGatewayMetadata: 3Da2/y6F+SEV9SdtW6gjez6JolyuiVRd7OjZZLYFtyVvao7FSTdq/RT47tBqLYuaqlruS9G2pexGjtC8QO01OMXzCrFD4/OG/nR+pbHYLhHgvAc3UeuM/ecOG+wsKm5ySwG8pFgb4Fdm2js+47ezwTCl+mmjx+G4JLKCiKadxEA=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=iYVmJene64omy9Bs1En71Kzl5LJjHVKlJjPm+PTV+rTlQlyUvqGZjqfsqDWLLBrhjgP52sMW8f5E2L8mAbQvxd5/1wNWwIM8osYP53MAmpv9X/tn9+Aaqoz/h/u11RexdIsS6Go+JuaO3Zea8YuAQC+NwVZfBXY7tScDmVxuT6sFTc/f7cwnVvI+0UOJdtUyyWWsxO50e8LRL5D1j57Hv4YVs+oVr4EElwSO6/gSCsqMAipSYleAvPDn91yoLszRDLXCxFldsaI5Nm74EbIMC2N9DApeG0sWIyoCE1vY7tVgA3jVyI59Fh0OQ02l0qsgijGaCOhkX+jbM3KoNYqUJA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=WRCEqCyMsoz+j4uNpGlBOdtWaIj1N+tXt+fPR807E24=;
 b=YnlGoJEE+uzSSxjSxEm3ugh2QK3hn2/+Or7rpgL+HutbWQHT2Qg8dhVNKSRY7tCL1wbp1ax97TZMAEWjTYn6bf9ey53vhyjM6qY5AMKhjhw/uoJOWkW7SjlQ74OJiOUi8uXcCY9yOTAkr+lNyoMwLOP4aABqsFp6V+29rE1EpiGZTny/vhA9ZryFTs2Rr4V2oK6LcHb4SAbmw3igCALLxyqs1NDzAtZPy273NpLFFknTCNNQ5B9hEdbEK2yA0wWBHy/YsLht9NH3aYfTDF3AdmoeUty+CsrtdBOcZBCwh732yjYgHr8kKW+x0rzdTtK7nlyYXrtrnjYeK/wx+mCKLA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WRCEqCyMsoz+j4uNpGlBOdtWaIj1N+tXt+fPR807E24=;
 b=mWQzkQzvLV6HM4klQOsDRQAgOedj2VNvBLRva2GluAumLGRz+4zK8oHIPGcGxd+AJL2HiTH9gdjM07Rl6/I7bm1glVurasQGaagl61QQmcY4vEW8EpIf4c6swM3fDSZeJmKqFK36sejwnBnJ3eMXbRx4AcklYQhkbPOocTgiJoo=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>, Artem Mygaiev
	<artem_mygaiev@epam.com>, Hisao Munakata <hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Replace VM with domain
Thread-Topic: [PATCH] docs: fusa: Replace VM with domain
Thread-Index: AQHbGOZmO2f9eW2m8k6uL+vxaGKAvbJ8XMAA
Date: Tue, 8 Oct 2024 05:59:57 +0000
Message-ID: <EC2E3BA4-D74A-4A10-91C9-95B3ACD09AD1@arm.com>
References: <20241007182603.826807-1-ayan.kumar.halder@amd.com>
In-Reply-To: <20241007182603.826807-1-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|GV2PR08MB9326:EE_|AM4PEPF00027A5E:EE_|GV2PR08MB8003:EE_
X-MS-Office365-Filtering-Correlation-Id: e4ea886a-08ea-49bc-bc39-08dce75e7752
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|10070799003|366016|376014|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?dOmcPDH5keMRH1mdCxBm2DI5J2spL3txNl0eRh6qmvMRR6Tt6svC7BeKQ3cD?=
 =?us-ascii?Q?QG7RoOqnVWakUbueibVjWtiTZeaJ3nBCPdhQsLDcxoH4ahjkOuQDGe/fKJxK?=
 =?us-ascii?Q?sO1sadb712RFH9LszTSnYkfdEiou3UzH7RBv7PQw5FhuDqrxR1WfLHnXncpl?=
 =?us-ascii?Q?LILxRNMK/NQnucTNbH9VS1qsTw4aFyCEtg1s7BQ2zsoWIrqxDfRYOhxv4zgL?=
 =?us-ascii?Q?X+8H1KNY4+8HdCar0fPtorW6cARZMhpmz4nQesuue8rt4SmYPr8u3wFV/bS3?=
 =?us-ascii?Q?okKWcIuR2elvMymYL97Uv85b8cCFcAeSQDX5qi+p0Kf6/pQ/m2eojz9tHBfu?=
 =?us-ascii?Q?i1OONGSrvP1XOQkGfevRqP4RtR91bFWpgTB91efZluuuck2NNQaP1GZoUkBe?=
 =?us-ascii?Q?mUJYOOERxySQ+e1/ldGWzNWzyh6FPJ2L52Q5Xug8JJNYWZhnU2IuSlIBSuaA?=
 =?us-ascii?Q?JBB4rZ86rPD2iR9PQ25ga227stxD5qRkr4a0TGqu/udtgj59sjjMYWnqVwov?=
 =?us-ascii?Q?V83G3YwuNPWJW/QGpQpxmGa9PXAPDi9ZM1upFKaiG0+Hjl4Hcld8TN5i+xOk?=
 =?us-ascii?Q?XlAlwQ2P9qLFIFdLYweteF46+UH/30jTgnkIpVt2mXi2Eo+KiQhdwsQiQ/5X?=
 =?us-ascii?Q?pqo3hSTUDIs1Xjpebr4+TTKvnWxrGXN7PyJy3XVNcOhm9VwVlx480GOT4t/W?=
 =?us-ascii?Q?cjFbvXL8B+X+fpWi7SDRUOx/+PNyKew/0OPzopiRBK8j7X7pxZVGMvm4LT02?=
 =?us-ascii?Q?gPbJ7sD5wppRVFBYLyY2OwFMjSXgue8SAKwo34eAI3dbnfUHcODf6gRilwJq?=
 =?us-ascii?Q?w9qpl+0ND6Z6NkE8rsoMAPGlt/E+aFjrP9ZGSHmun78mC/3Z3OTmSB9BUyT/?=
 =?us-ascii?Q?4RfsiLBJKoygxtke4cm73cHl5DEJlDUPwX7yPGMYnxeSfXXAMVm2HZexZ5YX?=
 =?us-ascii?Q?6BwdrEcUwhWuZbMsA7LFx63R6m1m/5xRCw+0YeLlVJwPpztp1f0rqaebsKEf?=
 =?us-ascii?Q?aWbNaF9gSLTukDMN7S+j1c8Rp9ygU5jVpX5hjzToNwO928hBXFUums37ZHdz?=
 =?us-ascii?Q?Wn406n6pZeuiBxUk1UF9xe316ZRdywnKHDo6lNUYSiMN/Zr6Pa+VCotBL/Lx?=
 =?us-ascii?Q?x7dXUa66oBHKcU4fTum9mhLDqUVsdvEyeU0VW1TEI+7x+KezqOCNg0Za/hKS?=
 =?us-ascii?Q?al7w1c/zIG+3rGZsjWOiVZhW1huy5H0KYcGR9VNeoNYM9blcuZ0sqMlLDxd3?=
 =?us-ascii?Q?e9URJNJRFEI6JtCVbd96FFKEa+qCm4FEbFoaZcRstliOVeINk1QvDkvSo1PU?=
 =?us-ascii?Q?KAsmKNFKMJw9nfP29FIPpDUB?=
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:(13230040)(10070799003)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <999FBE62FF102544B874837A5BDFDCB0@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9326
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A5E.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f6924e84-f838-4006-1c20-08dce75e7038
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?HsxyZUBSev6xpFF71bAQigC7GapXMxdmFlmThOki7XDqRIZnUTkVlcnXStiC?=
 =?us-ascii?Q?IwEvWgYV8+ovBSq0xtZEGE9tEgkraRmYFXD77AdKkpjj0loNEsFiyI4T2g6q?=
 =?us-ascii?Q?VM+MmAJwxE4YWLIRFSiTl5b9kwnpJFi7f8jwMo4k/75OlgsyUl14EdH4yjiL?=
 =?us-ascii?Q?h0fP8igLK5qsetVpLz2/Y0H9KyW/H5abtAAxbt4E0Raj+T5rtKWdn9Hf+fI8?=
 =?us-ascii?Q?iDK26hc635X1J1j4nZ8XWjd8ThQd7kMGo7vELAWUb0ncqtvc6ZKH20UOf8Q5?=
 =?us-ascii?Q?uDtxrxyue9Aeqs7Mo5C0vuSfDkbYRDC7WPPOa+UBNU9maB0r9GsYH+plAffH?=
 =?us-ascii?Q?IM/7FVB62xLPsHdu4Qoee8H4x8xhY0R0XAxvFzhn/SB3TmEuX2ZKLf7v3Vdm?=
 =?us-ascii?Q?oW1KpMM9MMy+f3/2Anbp+DoSeFqvxGesBlMQJ5KbPn3Vs6gKLUzgwvwGP9A2?=
 =?us-ascii?Q?maAZwiqsqlSz7SApbfTO2OX4Sim611snemrhBMtMfTHVPSNomMQYG42fgnZI?=
 =?us-ascii?Q?P3SQW0W4z/orGt+Vwmc2/FvUv7Q8VeLpWciBjLOdjOWCu1yQ4AkxbXyrRlE7?=
 =?us-ascii?Q?hO/4QIEp4Zk01h9uZWNsuuai7aZ/J/zfOOEmHu16+bMB754IP4z51YYPC6En?=
 =?us-ascii?Q?SEE8kyErbB74crk3ez6dSZ6UrfyUfhUWwtChSgTPif72IhzgBWR5JcpwTo2+?=
 =?us-ascii?Q?m2HO1fDsShO2Qf+ahxOmR0H+lmqafNXEUYq6fH8yOTZDIkLu4DsYu3mL26ML?=
 =?us-ascii?Q?iAYF7Cc7KuWsoJpYk+GPrl8UusZnPAg7rrptl87nlJE/Lcmud9dykfg+Q6L5?=
 =?us-ascii?Q?+VndypiFc8lPq4jxAmcnd0O7TcTgNKHUojfSdjcGDjwU4cK414WQt84kIZ3I?=
 =?us-ascii?Q?T1vgh2BOr9Oo2LoWNfvvRE9vsPdY/3tpzHfxQVI8bJEaeZXMwMwMO42D2nmx?=
 =?us-ascii?Q?DPC0XzispuCqgviVo2qiZfaU8ARxguQ7vpDiJg0xVMBuqh+wNGlppoj+WLie?=
 =?us-ascii?Q?CvUG1sVATd6ftfgajvKpIvtMTrGs3mk1km4O28n5ddRdWDPmnCEs+xcylVMW?=
 =?us-ascii?Q?06APyT/IC6s1Prflq2VbdpDU7l4trbGe9Tq6hT52hi2nsgFX0YBQzSy0e//D?=
 =?us-ascii?Q?DdhUiO6N2R7tC2O5z6J1PqlI8y44Zk49zpu7MveVCQW1qXNycRYOjxP4oooE?=
 =?us-ascii?Q?r7H6YN1TYBez2CR/5N6yrL5X7NoEdchxFWN1B3+DLRzZNx5P55EO1UdasAGb?=
 =?us-ascii?Q?syhJng/vOA9ZsKV8ZZY0rozLyZBXSHVDQu5+/lywjxU0fHZAvw181Fik8QZs?=
 =?us-ascii?Q?yPy/t6ghC7Orw16yfvSrO2ptUXRIIESmJ52P/1QbDZ7y5cYijbPFqqCcfHMx?=
 =?us-ascii?Q?f8MIsHc=3D?=
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:(13230040)(35042699022)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 06:00:09.3370
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e4ea886a-08ea-49bc-bc39-08dce75e7752
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:
	AM4PEPF00027A5E.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB8003

Hi Ayan,

> On 7 Oct 2024, at 20:26, Ayan Kumar Halder <ayan.kumar.halder@amd.com> wr=
ote:
>=20
> We should use the word domain everywhere (instead of VM or guest).
>=20
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>

Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand

> ---
> docs/fusa/reqs/market-reqs/reqs.rst        | 26 +++++++++++-----------
> docs/fusa/reqs/product-reqs/arm64/reqs.rst | 10 ++++-----
> 2 files changed, 18 insertions(+), 18 deletions(-)
>=20
> diff --git a/docs/fusa/reqs/market-reqs/reqs.rst b/docs/fusa/reqs/market-=
reqs/reqs.rst
> index e98f348cf4..f456788d96 100644
> --- a/docs/fusa/reqs/market-reqs/reqs.rst
> +++ b/docs/fusa/reqs/market-reqs/reqs.rst
> @@ -3,13 +3,13 @@
> Functional Requirements
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>=20
> -Run Arm64 VMs
> --------------
> +Run Arm64 domains
> +-----------------
>=20
> -`XenMkt~run_arm64_vms~1`
> +`XenMkt~run_arm64_domains~1`
>=20
> Description:
> -Xen shall run Arm64 VMs.
> +Xen shall run Arm64 domains.
>=20
> Rationale:
>=20
> @@ -18,13 +18,13 @@ Comments:
> Needs:
>  - XenProd
>=20
> -Provide timer to the VMs
> -------------------------
> +Provide timer to the domains
> +----------------------------
>=20
> -`XenMkt~provide_timer_vms~1`
> +`XenMkt~provide_timer_domains~1`
>=20
> Description:
> -Xen shall provide a timer to a VM.
> +Xen shall provide a timer to a domain.
>=20
> Rationale:
>=20
> @@ -33,17 +33,17 @@ Comments:
> Needs:
>  - XenProd
>=20
> -Provide console to the VMs
> ---------------------------
> +Provide console to the domains
> +------------------------------
>=20
> -`XenMkt~provide_console_vms~1`
> +`XenMkt~provide_console_domains~1`
>=20
> Description:
> -Xen shall provide a console to a VM.
> +Xen shall provide a console to a domain.
>=20
> Rationale:
>=20
> Comments:
>=20
> Needs:
> - - XenProd
> \ No newline at end of file
> + - XenProd
> diff --git a/docs/fusa/reqs/product-reqs/arm64/reqs.rst b/docs/fusa/reqs/=
product-reqs/arm64/reqs.rst
> index 97e90813ec..db91c47a02 100644
> --- a/docs/fusa/reqs/product-reqs/arm64/reqs.rst
> +++ b/docs/fusa/reqs/product-reqs/arm64/reqs.rst
> @@ -16,8 +16,8 @@ Rationale:
> Comments:
>=20
> Covers:
> - - `XenMkt~run_arm64_vms~1`
> - - `XenMkt~provide_timer_vms~1`
> + - `XenMkt~run_arm64_domains~1`
> + - `XenMkt~provide_timer_domains~1`
>=20
> Needs:
>  - XenSwdgn
> @@ -35,8 +35,8 @@ Rationale:
> Comments:
>=20
> Covers:
> - - `XenMkt~run_arm64_vms~1`
> - - `XenMkt~provide_console_vms~1`
> + - `XenMkt~run_arm64_domains~1`
> + - `XenMkt~provide_console_domains~1`
>=20
> Needs:
> - - XenSwdgn
> \ No newline at end of file
> + - XenSwdgn
> --=20
> 2.25.1
>=20



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 06:18:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 06:18:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812640.1225416 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3Xe-0003fh-Mq; Tue, 08 Oct 2024 06:17:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812640.1225416; Tue, 08 Oct 2024 06:17: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 1sy3Xe-0003fa-K5; Tue, 08 Oct 2024 06:17:54 +0000
Received: by outflank-mailman (input) for mailman id 812640;
 Tue, 08 Oct 2024 06:17: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=gcc3=RE=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1sy3Xd-0003fU-9d
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 06:17:53 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on20624.outbound.protection.outlook.com
 [2a01:111:f403:2613::624])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0b719ea6-853d-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 08:17:50 +0200 (CEST)
Received: from DUZPR01CA0212.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b4::18) by PAWPR08MB9124.eurprd08.prod.outlook.com
 (2603:10a6:102:330::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 06:17:44 +0000
Received: from DU2PEPF00028D0A.eurprd03.prod.outlook.com
 (2603:10a6:10:4b4:cafe::a6) by DUZPR01CA0212.outlook.office365.com
 (2603:10a6:10:4b4::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Tue, 8 Oct 2024 06:17:44 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU2PEPF00028D0A.mail.protection.outlook.com (10.167.242.170) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8048.13
 via Frontend Transport; Tue, 8 Oct 2024 06:17:42 +0000
Received: ("Tessian outbound 10d5cea79515:v473");
 Tue, 08 Oct 2024 06:17:42 +0000
Received: from Le56475db8645.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 C9F59641-B9EE-4605-82E1-00DAC4D64958.1; 
 Tue, 08 Oct 2024 06:17:36 +0000
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Le56475db8645.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 08 Oct 2024 06:17:36 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by DB5PR08MB10140.eurprd08.prod.outlook.com (2603:10a6:10:4a1::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 06:17:33 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8026.020; Tue, 8 Oct 2024
 06:17: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: 0b719ea6-853d-11ef-a0bc-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=EQt9qOzPEbNEkzqT15jdMv91IL0h/ld7Uluywo1akD/K5Btz9S9+g+NXaATS8mVHGujfTMvQbGRBqfd6fP8isrs6an7KEqUuGsfbqAxFPw2ge+yMvmgfcLBo/MxQ56F4Ib/Eui8ZXsfcmzRnJ04cETmA9S+VOLpQ+61DveXO+qauOs6f00MDesOVTKJXCbaVDavJGjv0k3IIL5TcbwlTRJmdaCshRVcYgZGGshRbJ3479OgQF0Zt04vPU1An5nMoRNGcRjzeQgmLs+2TG0vDj2yR0ywa2EiJeka7GCI1JyDMCucaHcKMhqoMsTYEB2UBgWzMlXCM1TgIGUDS/aQeug==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=lmHOosmyx3g03xqTXPYVlO8bD47vn9U8JlbRp0R9hfc=;
 b=DYOUUNpGosFdzw9KJ/hockBg4SdZfbCzjUDEAYfYhfHucwFYdp5fJW6+GvvcmAwy2k1QPv1QPLegxXdkxRHpjUmqXT+ohOdA9jDz4wSygg7lG93b5svlK05jcS6ERq1Jc5talji1On5VMxvrR+Oe925XMwc+C91CsvrVhN7I6xv6qyE2YAbsimiTCiXqVH2Hyvpv5NICFnrLttm7Z+n2WAXlMEQZ8+NRvz+rO9PT5wvWDzSw+Hz5mNTnwOtORfFN2NGugrkwi2xii7t5ToUH3qm0GTsjT+4ahiEJudnVoBTHezfdM4AhaqjYQiF7IaJ+62jIT/FnsuJHumf2BFAQ1w==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lmHOosmyx3g03xqTXPYVlO8bD47vn9U8JlbRp0R9hfc=;
 b=Kka2YI+Kt31DLbqz+LpH7Ia4fBBuwkSp05Y1ds/0Y1tFOjqJ6SUsVx6DmAYHojp9XqVb6O3aqiSlKuV4Z6HA8cSu/o36s11FcuS3ZXwin+PNZ+paI8pTMQZXn6Lw5V2kjOY4WgoVDmvQXg8bmO9kwbzdHqkT500IpendYsDU2us=
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=arm.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: 50acfd5d732232b0
X-TessianGatewayMetadata: PAfQxwn6/M2vCfzlqSnFBQOYe5Cvzzn+3BBlRytkaghIS5LUjYSg0eZoco5EPRRNvFQW0ZDz66q+TSHSNWmAhyhteNfE0AF4HhcfHleuNGvKyGuI1KPGr7gJZlzIZe11zT7rVFSbKdrtVSyiPEaxOItmZF3khtvpe2fSu94/jfk=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=J5dlA8HAe7bJ9TxD+KFwzsL2ze+w4m6HQyHOrRo5SaeTeCQPz8tOrWZl7MTm2GRUN65f1Jw5ZXMl0dJCMKfYAMOAx+VAcHIxJKEWL2x5X506tlq6mbTAkaSrEq4GcTGwv3vg4urNznOPrQQGrGqi3qD2wbqPa/KiqVdYOucLQPeQZLOPvGCjt9BWhoxvvtRzTjS3AaLg2Z3DVmh5Y4hoGerX1nLpzwBWND8lCDHroSAzyVYCH73w3Rb5NSCD8R1P4lT0Hq7bRKHh3r4VZZ5Xfp2Lmv17VxTQ44hmTSrm0BTlMT/8sE5XuQyblbfSgcFR+alDetVj0am53nXxyi+3NQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=lmHOosmyx3g03xqTXPYVlO8bD47vn9U8JlbRp0R9hfc=;
 b=tFXTBVL69PoZ+6tvYlmWmiqWnCwo3Lw48vtGDPdWxIEgvP4oyfh4Yxy19lO+AL1uQ73qOPZ/VMaKeFfb9tl8gahSlAnqQVkK8IWIwSlWZf6kdNOJZPEBP6EN1C5b9PhXaactce/siB/Z+DuajfU7vC6GaB5tVh9tvQDfFQfOL5LCO+7UB3Xoiduhsoo8rGvyIO6ujdtcxpgAYqpn7DPrFxR6SCzDEa/WdGoS0kFMiP02mPV+MwphztLBDlXDA16Nin+UjwZn2BrHXwIfhLEEYgXQuR8AQ9Ah0jZUBbv7mGHybKdtS76XHQwL6VT3iHH42gW6K7VwOGKTNdt03ju1mg==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lmHOosmyx3g03xqTXPYVlO8bD47vn9U8JlbRp0R9hfc=;
 b=Kka2YI+Kt31DLbqz+LpH7Ia4fBBuwkSp05Y1ds/0Y1tFOjqJ6SUsVx6DmAYHojp9XqVb6O3aqiSlKuV4Z6HA8cSu/o36s11FcuS3ZXwin+PNZ+paI8pTMQZXn6Lw5V2kjOY4WgoVDmvQXg8bmO9kwbzdHqkT500IpendYsDU2us=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Oleksandr Tyshchenko <olekstysh@gmail.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, Artem Mygaiev <artem_mygaiev@epam.com>, Hisao
 Munakata <hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Topic: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Index: AQHbGOqFqldnvX8xNEmI4LnFnImSpbJ8YaSA
Date: Tue, 8 Oct 2024 06:17:33 +0000
Message-ID: <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
In-Reply-To: <20241007185508.3044115-1-olekstysh@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|DB5PR08MB10140:EE_|DU2PEPF00028D0A:EE_|PAWPR08MB9124:EE_
X-MS-Office365-Filtering-Correlation-Id: b7f98dca-c826-4965-15f1-08dce760eb0f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?QstxkUuzduhj2S3VUAK5ChJnC31xX6r24kszYa8ohT+hBiqA9Bn4r3vx82qA?=
 =?us-ascii?Q?8KhJyvm3j565rSeXE11tGJBPRCg6kMpOJJsWFobY8+tnHyZJuIXmusJ7qQC6?=
 =?us-ascii?Q?CmM4I0f1axLb3iY6OK8SXdLUp8WYESiyXeDqCjBS2irzbqdkjN9TvjHof7WA?=
 =?us-ascii?Q?Mg7d1qwbltbC9FXE6MoQH1wAJBhdFpaQeJjYrVEYV7iEAkPY5COo4uUaBbr4?=
 =?us-ascii?Q?FZdb65E9rZFT+SnTTvRdF5IUrAlrCXb2kZ9meksm5aHjX0DuGPMC52UzS4Bh?=
 =?us-ascii?Q?heYo44xAAYr6umkXa+9qaoxzopjgR2du6UPWB/sXSsRo3Qz7k4RcRM6uUizG?=
 =?us-ascii?Q?Ctse0Mo0dzgrjB30ZWc0JiHPbl0QWULx1ogQCFe4gd8q+OBzrWU6nzH0iZUg?=
 =?us-ascii?Q?afskoDXlxERZNZ2PadUCeayT7S91l1qLuDv83+RHL38KDxQtmpWkTcBoz/pC?=
 =?us-ascii?Q?ytO4PEa3hE7XLJ5+mR0S42xiqufWobVuP2mnHrza77I9etdNhV7qE8kl0KdH?=
 =?us-ascii?Q?YAOzvZC5qQ981OeOv54vDqpcK/zCZtNQxvxmGCEw0/tyfiG+taaVjp0nQgub?=
 =?us-ascii?Q?Zsthc2uEkFEO/dspBlhrJSq4FNGX1hVrfFL+ySq1L4oQkO4S6scCI5Fc4xum?=
 =?us-ascii?Q?qm4nPbNdbjA2pof/w/uLwUFdDnW/vivqh8tKGc2W2Agdnk1k5T+MwlgvDCnn?=
 =?us-ascii?Q?sqlTAbM5kX+8TYTp60f4ydiIRlaQDBe4PwtPRCyTetNFmpoTop/JD1edg2O6?=
 =?us-ascii?Q?SvWye7J2C7do7uDiTt3r3ocQ/f4R+AIZUvwq52QX772V+Bay3iCqsE612kfV?=
 =?us-ascii?Q?+WYYx91XtWgpLAr5cRiRn7BfXLP7H5vYnmeNjWWBZJf5NLkigros2oqrZKce?=
 =?us-ascii?Q?FFdgSGgOwNEwqRanLY8TLNQ9zkyz/cviJ9Rk8CQoZZnCDo4eg8w7jb3zO2ko?=
 =?us-ascii?Q?dyhRGfLsvex8DvXD70N7ry8+8iFNEQqOY3YBVCsh1nOyczz6peTnuU8iIjZr?=
 =?us-ascii?Q?AxvulNUenQswKFh+dBegbcMShTMLT7lUUoXwM6Wh8C+p2tDQ/gPolAZU0z8Q?=
 =?us-ascii?Q?CDrYP6xEF1se4+DdNwu3/eG723p+7/CQk5lw3ZLKnfgPYQj9yl2dof6ZI6pQ?=
 =?us-ascii?Q?b7qeQA9AHlx/5WJVT6Ma1yl34DZ2vAn2DOJXiVbwaxBaxdTHHL1ifus0IwF+?=
 =?us-ascii?Q?OsdIzz5ZGhZcXpLFiGY7yhF2rVVPgoswt/JuEN1x5Wtdclcb4VrJVb2ES0PM?=
 =?us-ascii?Q?fWAguRKYoV6y57NEfD+hTdcRlXw1Fv9JWt7YSYIIpQ=3D=3D?=
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:(13230040)(1800799024)(376014)(10070799003)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <307CF8282DD7C84FAA4B6D2547E23402@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR08MB10140
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D0A.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	aa5865aa-789f-491a-6a27-08dce760e5ba
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|82310400026|35042699022|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Gh2mp016HaMe9ytM45a00oUdsIuA+ZT/bEMvvnKclmqcJih/UfGPDOeuUndp?=
 =?us-ascii?Q?7ANXY4IW61PPaQwvArkBjALIID3Mtt3B2t+jlHCH4QO3y10drldcsTnUsFye?=
 =?us-ascii?Q?qDyuWwMrCSbUsHGkWYLwSdwkFDQRArRqGvL6CTAPzmWChib7ekwNBN/D56kr?=
 =?us-ascii?Q?gQHrdLbUm9nN/AiyjtTR4y/0NaxgkOBOdx41OJ3zT8g4EWQS3mcWvXJ2z3fF?=
 =?us-ascii?Q?SSFk5KDK9XnZzbLFHV4bpRFecaRurW1LZDK9OdUr4gCV/VGEg7XpeM4gzXR4?=
 =?us-ascii?Q?25F51GckSgWLWtUKpZqqJZle3mHWYGQ0UJupX3bf0caB8sFAq2MfahFtUuQf?=
 =?us-ascii?Q?Xn27TBzs00Gpf843++Yp0eKf4IVc0BB1ZacuXvXKhRQV84+l6xrgc8PHSXqH?=
 =?us-ascii?Q?ijqSW35HG6be5pSPIl7wtWMemRMjTExD9yTo8+Dx2sCOnnEJL3wAqF6RfNDH?=
 =?us-ascii?Q?ViKkTVt3exxykAujccBSe6el+ljI6HM3GaRAMFU/pUTxzcVpVlMtsERcUbNu?=
 =?us-ascii?Q?26aKo03YdVZfvXeWV/+YVsa4QeOcPDq/bU9cjYUnxq1DSJVxf9iq6JmW/wFF?=
 =?us-ascii?Q?PZDBtHHcJGfBm9Y/oJiK4uyyZcuOtanCOoxhmdL0vWl8awmaSUbxUW7+QrM/?=
 =?us-ascii?Q?wIJVrJymLg2kfa1aOLZ3RChWExCNV5Vs3C7viLIpzIl3L8W+eJdcFHu4h3Si?=
 =?us-ascii?Q?Sy387cmmRBuEDU7mYrTKO3rt0RB2RwPR1iPyVo5rEmt0eCN1U4+hqPXHWWCF?=
 =?us-ascii?Q?3U1gqPPOxoUGSkdNSjIVouSsxk+3oGtsKY2dilLRS9aVnoMU8wlfmuINH14S?=
 =?us-ascii?Q?0ZhvhHrBsoiLwf7ZPg32dJm3WKacrBAv16UM+Qg0YHhaC2g0PpLmDr5QSliB?=
 =?us-ascii?Q?lTgycyxIWUxoHD/VS6WyCOO/YnwwaZmkgjx5+PVQPaBHxRwZm6+F8acDvgHi?=
 =?us-ascii?Q?2AJlJiUauvtYtjwa+qrLVwlSE/u4XH801RAhL26UpFQVOKTAM+2WFvIj+NEJ?=
 =?us-ascii?Q?tdvMjjP8wBbRpTFgsJlVjiuu3lo6K1lycA/O+O85R26T7RTXgFStY/ay6VzM?=
 =?us-ascii?Q?SFuj8JYMVKkFCzA+eQAzYaXnhxeg4GJ1UuC4T/uO9fsmgLCoHxf3MKm0FQqu?=
 =?us-ascii?Q?lA+tFsbl6Sd/3PXZU4I6zAIt0mYXA8GB6iibdvLs1cuRRDJdfTyr84ui+oVx?=
 =?us-ascii?Q?my2Y1patOclFQhzf6ZcDy+C3emRVMzveRceeSiWfZAOXu3KhftXi1dCwihSF?=
 =?us-ascii?Q?UJ4FVKcIF8QThSoXkhOotuiW75e2kaYeq8F1NCQuUM6efJKc6gF2wwk+IITH?=
 =?us-ascii?Q?zXREQmCG28xIJgTiGiG2fr0i?=
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:ErrorRetry;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(82310400026)(35042699022)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 06:17:42.6122
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b7f98dca-c826-4965-15f1-08dce760eb0f
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:
	DU2PEPF00028D0A.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9124

Hi,

> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote=
:
>=20
> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>=20
> Add common requirements for a physical device assignment to Arm64
> and AMD64 PVH domains.
>=20
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> ---
> Based on:
> [PATCH] docs: fusa: Replace VM with domain
> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com=
/
> ---
> ---
> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
> docs/fusa/reqs/index.rst                      |   1 +
> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
> 4 files changed, 428 insertions(+)
> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>=20
> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst b/docs/fus=
a/reqs/design-reqs/common/passthrough.rst
> new file mode 100644
> index 0000000000..a1d6676f65
> --- /dev/null
> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
> @@ -0,0 +1,365 @@
> +.. SPDX-License-Identifier: CC-BY-4.0
> +
> +Device Passthrough
> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> +
> +The following are the requirements related to a physical device assignme=
nt
> +[1], [2] to Arm64 and AMD64 PVH domains.
> +
> +Requirements for both Arm64 and AMD64 PVH
> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> +
> +Hide IOMMU from a domain
> +------------------------
> +
> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
> +
> +Description:
> +Xen shall not expose the IOMMU device to the domain even if I/O virtuali=
zation
> +is disabled. The IOMMU shall be under hypervisor control only.
> +
> +Rationale:

I think there should be a rationale here to explain why we do not want the =
IOMMU
in particular to be assigned to a domain.

Added to that, I am not completely sure that there is a clear way to test t=
his one
as for example one could assign registers not known by Xen.

Shouldn't this requirement in fact be an assumption of use ?

> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Discover PCI devices from hardware domain
> +-----------------------------------------
> +
> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
> +
> +Description:
> +The hardware domain shall enumerate and discover PCI devices and inform =
Xen
> +about their appearance and disappearance.

Again this is a design requirement telling what should be done by a domain.
This is an interface or an assumption of use but not a Xen design req.

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Discover PCI devices from Xen
> +-----------------------------
> +
> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
> +
> +Description:
> +Xen shall discover PCI devices (enumerated by the firmware beforehand) d=
uring
> +boot if the hardware domain is not present.

I am a bit wondering here why we would not want Xen to always do it if we h=
ave
the code to do it in Xen anyway.

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign PCI device to domain (with IOMMU)
> +----------------------------------------
> +
> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
> +
> +Description:
> +Xen shall assign a specified PCI device (always implied as DMA-capable) =
to
> +a domain during its creation using passthrough (partial) device tree on =
Arm64
> +and Hyperlaunch device tree on AMD-x86. The physical device to be assign=
ed is
> +protected by the IOMMU.

This is a very long and complex requirement.
I would suggest to split it in 3:
- generic: Xen shall support assign PCI devices to domains.
- arm64 one: Xen shall assign PCI devices based on device tree (explain how=
 this is configured in dts)
- amd: xxxx based on hyperlaunch
- Xen shall use the IOMMU to enforce DMA operations done by a PCI device as=
signed to a domain to be restricted to the memory of the given domain.

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign PCI device from domain (with IOMMU)
> +--------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
> +
> +Description:
> +Xen shall deassign a specified PCI device from a domain during its destr=
uction.
> +The physical device to be deassigned is protected by the IOMMU.

Remove second sentence or turn it into a req to say that the PCI device sha=
ll not be allowed to do DMA anymore somehow.

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Forbid the same PCI device assignment to multiple domains
> +---------------------------------------------------------
> +
> +`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
> +
> +Description:
> +Xen shall not assign the same PCI device to multiple domains by failing =
to
> +create a new domain if the device to be passed through is already assign=
ed
> +to the existing domain. Also different PCI devices which share some reso=
urces
> +(interrupts, IOMMU connections) can be assigned only to the same domain.

Please split and simplify
- Xen shall assign a single device to a single domain
- Xen shall assign PCI devices sharing resources to the same domain.

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Requirements for Arm64 only
> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> +
> +Assign interrupt-less platform device to domain
> +-----------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
> +
> +Description:
> +Xen shall assign a specified platform device that has only a MMIO region
> +(does not have any interrupts) to a domain during its creation using pas=
sthrough
> +device tree.
> +The example of interrupt-less device is PWM or clock controller.

I am a bit puzzled by this req. Why making a specific case for interrupt le=
ss ?

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign interrupt-less platform device from domain
> +---------------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_interrupt_less_platform_device~1`
> +
> +Description:
> +Xen shall deassign a specified platform device that has only a MMIO regi=
on
> +(does not have any interrupts) from a domain during its destruction.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign non-DMA-capable platform device to domain
> +------------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_non_dma_platform_device~1`
> +
> +Description:
> +Xen shall assign a specified non-DMA-capable platform device to a domain=
 during
> +its creation using passthrough device tree.
> +The example of non-DMA-capable device is Timer.

Again why making a specific case here ?

Wouldn't it me more logic to describe device passthrough and then what Xen =
should do for interrupts and for DMA ?

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign non-DMA-capable platform device from domain
> +----------------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_non_dma_platform_device~1`
> +
> +Description:
> +Xen shall deassign a specified non-DMA-capable platform device from a do=
main
> +during its destruction.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign DMA-capable platform device to domain (with IOMMU)
> +---------------------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_dma_platform_device_with_iommu~1`
> +
> +Description:
> +Xen shall assign a specified DMA-capable platform device to a domain dur=
ing
> +its creation using passthrough device tree. The physical device to be as=
signed
> +is protected by the IOMMU.

This requirement is not a design but an higher level as it does not tell an=
ything about implementation.

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign DMA-capable platform device from domain (with IOMMU)
> +-------------------------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_dma_platform_device_with_iommu~1`
> +
> +Description:
> +Xen shall deassign a specified DMA-capable platform device from a domain=
 during
> +its destruction. The physical device to be deassigned is protected by th=
e IOMMU.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign DMA-capable platform device to domain (without IOMMU)
> +------------------------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
> +
> +Description:
> +Xen shall assign a specified DMA-capable platform device to a domain dur=
ing
> +its creation using passthrough device tree. The physical device to be as=
signed
> +is not protected by the IOMMU.
> +The DMA-capable device assignment which is not behind an IOMMU is allowe=
d for
> +the direct mapped domains only. The direct mapped domain must be either =
safe or
> +additional security mechanisms for protecting against possible malicious=
 or
> +buggy DMA devices must be in place, e.g. Xilinx memory protection unit (=
XMPU)
> +and Xilinx peripheral protection unit (XPPU).


Please split in several reqs.


Stopping here my review for now.

Cheers
Bertrand

> +
> +Rationale:
> +The IOMMU is absent from the system or it is disabled (status =3D "disab=
led"
> +in the host device tree).
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign DMA-capable platform device from domain (without IOMMU)
> +----------------------------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_dma_platform_device_without_iommu~1`
> +
> +Description:
> +Xen shall deassign a specified DMA-capable platform device from a domain=
 during
> +its destruction. The physical device to be deassigned is not protected
> +by the IOMMU.
> +
> +Rationale:
> +The IOMMU is absent from the system or it is disabled (status =3D "disab=
led"
> +in the host device tree).
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Map platform device MMIO region identity
> +----------------------------------------
> +
> +`XenSwdgn~passthrough_map_platform_device_mmio_region_ident~1`
> +
> +Description:
> +Xen shall map platform device memory region identity (guest address =3D=
=3D
> +physical address) when assigning a specified platform device to a domain=
.
> +The device can be either non-DMA-capable or DMA-capable.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Map platform device MMIO region non-identity
> +--------------------------------------------
> +
> +`XenSwdgn~passthrough_map_platform_device_mmio_region_non_ident~1`
> +
> +Description:
> +Xen shall map platform device memory region non-identity (guest address =
!=3D
> +physical address) when assigning a specified platform device to a domain=
.
> +The device can be either non-DMA-capable or DMA-capable.
> +
> +Rationale:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign PCI device to domain (without IOMMU)
> +-------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_pci_device_without_iommu~1`
> +
> +Description:
> +Xen shall assign a specified PCI device to a domain during its creation =
using
> +passthrough device tree. The physical device to be assigned is not prote=
cted
> +by the IOMMU.
> +The DMA-capable device assignment which is not behind an IOMMU is allowe=
d for
> +the direct mapped domains only. The direct mapped domain must be either =
safe or
> +additional security mechanisms for protecting against possible malicious=
 or
> +buggy DMA devices must be in place, e.g. Xilinx memory protection unit (=
XMPU)
> +and Xilinx peripheral protection unit (XPPU).
> +
> +Rationale:
> +The IOMMU is absent from the system or it is disabled (status =3D "disab=
led"
> +in the host device tree).
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign PCI device from domain (without IOMMU)
> +-----------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_pci_device_without_iommu~1`
> +
> +Description:
> +Xen shall deassign a specified PCI device from a domain during its destr=
uction.
> +The physical device to be deassigned is not protected by the IOMMU.
> +
> +Rationale:
> +The IOMMU is absent from the system or it is disabled (status =3D "disab=
led"
> +in the host device tree).
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Forbid the same platform device assignment to multiple domains
> +--------------------------------------------------------------
> +
> +`XenSwdgn~passthrough_forbid_same_platform_device_assignment~1`
> +
> +Description:
> +Xen shall not assign the same platform device to multiple domains by fai=
ling
> +to create a new domain if the device to be passed through is already ass=
igned
> +to the existing domain. Also, different platform devices which share som=
e
> +resources (interrupts, IOMMU connections) can be assigned only to the sa=
me
> +domain.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Notes
> +=3D=3D=3D=3D=3D
> +
> +The AMD64 PVH-specific requirements are written under the assumption tha=
t once
> +the Hyperlaunch feature is completed, Xen shall assign a PCI device to b=
oot
> +time domains. This is not the case today, where the PCI device can be pa=
ssed
> +through only to domains launched by a control (toolstack) domain.
> +
> +The Arm64-specific requirements are written under the assumption that on=
ce
> +the dom0less PCI Passthrough feature is completed, Xen shall assign a PC=
I device
> +to boot time domains. This is not the case today, where only the platfor=
m device
> +Passthrough is supported.
> +
> +[1] https://xenbits.xenproject.org/gitweb/?p=3Dxen.git;a=3Dblob;f=3Ddocs=
/misc/arm/passthrough.txt;hb=3DHEAD
> +[2] https://xenbits.xenproject.org/gitweb/?p=3Dxen.git;a=3Dblob;f=3Ddocs=
/misc/arm/passthrough-noiommu.txt;hb=3DHEAD
> diff --git a/docs/fusa/reqs/index.rst b/docs/fusa/reqs/index.rst
> index 183f183b1f..19c2f26b2b 100644
> --- a/docs/fusa/reqs/index.rst
> +++ b/docs/fusa/reqs/index.rst
> @@ -10,3 +10,4 @@ Requirements documentation
>    market-reqs
>    product-reqs
>    design-reqs/arm64
> +   design-reqs/common
> diff --git a/docs/fusa/reqs/market-reqs/reqs.rst b/docs/fusa/reqs/market-=
reqs/reqs.rst
> index f456788d96..37a443395b 100644
> --- a/docs/fusa/reqs/market-reqs/reqs.rst
> +++ b/docs/fusa/reqs/market-reqs/reqs.rst
> @@ -47,3 +47,36 @@ Comments:
>=20
> Needs:
>  - XenProd
> +
> +Run AMD-x86 domains
> +-------------------
> +
> +`XenMkt~run_x86_domains~1`
> +
> +Description:
> +Xen shall run AMD-x86 domains.
> +
> +Rationale:
> +
> +Comments:
> +
> +Needs:
> + - XenProd
> +
> +Domain device assignment
> +------------------------
> +
> +`XenMkt~domain_device_assignment~1`
> +
> +Description:
> +Xen shall assign device to each domain.
> +
> +For example, it shall assign GPU to domain A, MMC to domain B. Only the =
domain
> +assigned to a device, shall have exclusive access to the device.
> +
> +Rationale:
> +
> +Comments:
> +
> +Needs:
> + - XenProd
> diff --git a/docs/fusa/reqs/product-reqs/common/reqs.rst b/docs/fusa/reqs=
/product-reqs/common/reqs.rst
> new file mode 100644
> index 0000000000..9304399e4d
> --- /dev/null
> +++ b/docs/fusa/reqs/product-reqs/common/reqs.rst
> @@ -0,0 +1,29 @@
> +.. SPDX-License-Identifier: CC-BY-4.0
> +
> +Domain Creation And Runtime
> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
> +
> +Device Passthrough
> +------------------
> +
> +`XenProd~device_passthrough~1`
> +
> +Description:
> +Xen shall provide mechanism for assigning a physical device to the domai=
ns.
> +
> +For example:
> +
> +- PCI passthrough
> +- MMC passthrough
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenMkt~run_arm64_domains~1`
> + - `XenMkt~run_x86_domains~1`
> + - `XenMkt~domain_device_assignment~1`
> +
> +Needs:
> + - XenSwdgn
> --=20
> 2.34.1
>=20



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 06:21:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 06:21:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812648.1225426 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3aw-0005Bu-9S; Tue, 08 Oct 2024 06:21:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812648.1225426; Tue, 08 Oct 2024 06:21: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 1sy3aw-0005Bn-6B; Tue, 08 Oct 2024 06:21:18 +0000
Received: by outflank-mailman (input) for mailman id 812648;
 Tue, 08 Oct 2024 06:21: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy3av-0005Bh-7k
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 06:21:17 +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 85fefe92-853d-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 08:21:16 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9977360f9fso26655266b.0
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 23:21:16 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9952bd2b24sm240265366b.163.2024.10.07.23.21.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 23:21:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 85fefe92-853d-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728368475; x=1728973275; 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=ZckXbyXPo/+MqlXxLBGb0IGYUR+yj/VGaasMMPb2MC0=;
        b=erUKBBsbSF1BJEmL+aM7Wxzp+XT/r3AIJR23cXrAh2IHXHdO0F4Sn+V+UMqw8FdKAm
         PhqZF3C3XnIoNwQbBJfBbfP5QMlszaBF4EQHAaiQqSlz3iftHpiIJ1xJyL9WHwqQSKAy
         NFWFRdKOw7HZeH7tllONIDKHLDfHKJEDqFpnS7v50Z5ne+iG57paRgWo8NPY8Mm5vdgi
         oNx96VVfibpzPhxZnlgRefaIDNBXOahatq4NNDTk4GgBp4noJEq7CW0teXkgIfqCLDsl
         GGWvOTK4H7N9AGtyEX86B8jKBx/H4ZGVLM24wPGlNXnwaZPXwEl/hg0xofeXEKuCwJ1Z
         ZGNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728368475; x=1728973275;
        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=ZckXbyXPo/+MqlXxLBGb0IGYUR+yj/VGaasMMPb2MC0=;
        b=VkXe8ms75MZsatSH70THoUOgn2Si+z/ptZv4bTrrWqoLE/435TUT8dGj+APwBEWOif
         1RKVfgeldKtE8PW/+9YQ8D2bV6DbhwVle9nf16Q7Gj0LulFA+kHWdilI7wbyraBoCQ8j
         JphgaP5/LwQKZZtgnx6pvWfM+LckToPjHqoC/gPqR40D7krY/HdLElxaez7DYQ4zxP6c
         Uc+y09iE5+GK6dhwFYNyqX7ULpYHmfeCl8qUZqjid8uaD6ePMr5FecW/uxIcef9T3c/A
         PsyiiXQcDVSoKEXncgLJBn0bj0OR3J3tb5W4jo6vGnO7pYxU+mY09W6ZbQmd/v6/l2X3
         mGbw==
X-Forwarded-Encrypted: i=1; AJvYcCUQp2ai1Q9ODeLdt1jocKrlkEqkzHqHiC2qy3w/gKte3mlu2sx2+p0d+K7jqL8ftgxhxcrLfM+gnl4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwaDXHxv6IKl+znWgR2kl2yFkz+I4rnsGScyXUfJQDv7YpMgBfT
	lQOVo27eflsiItVNDE2SLugy7CLwhX0owL/JdYeAwubh0m9TfXIV/LfWEtYZIw==
X-Google-Smtp-Source: AGHT+IGcO0dTPjYyhMTRJvhTU8esFRsjbXd8xYNt3W/eRrl2D9G+WG7v5nRRYOrQWt/G3xaCWOsNKg==
X-Received: by 2002:a17:907:9281:b0:a7a:97ca:3056 with SMTP id a640c23a62f3a-a991bd0a833mr1358650166b.16.1728368475410;
        Mon, 07 Oct 2024 23:21:15 -0700 (PDT)
Message-ID: <ff8bef04-d17c-427a-820f-3565ffeafde3@suse.com>
Date: Tue, 8 Oct 2024 08:21:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/4] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
To: Julien Grall <julien@xen.org>, Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20240918175102.223076-1-ayan.kumar.halder@amd.com>
 <20240918175102.223076-5-ayan.kumar.halder@amd.com>
 <c27ebb1a-6ca4-41d7-99d8-ea613e3120fc@suse.com>
 <c0ce0c42-6b23-4687-a444-81a617629125@amd.com>
 <dc2ba7dd-fc55-4f4b-a33f-c733bb142efe@suse.com>
 <3b160dfe-9f46-479b-acd6-57f6ca6da72e@xen.org>
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: <3b160dfe-9f46-479b-acd6-57f6ca6da72e@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07.10.2024 23:25, Julien Grall wrote:
> Hi Jan,
> 
> On 24/09/2024 13:22, Jan Beulich wrote:
>> On 24.09.2024 13:54, Ayan Kumar Halder wrote:
>>> Hi Jan,
>>>
>>> On 23/09/2024 11:23, Jan Beulich wrote:
>>>> On 18.09.2024 19:51, Ayan Kumar Halder wrote:
>>>>> Secondary cpus initialization is not yet supported. Thus, we print an
>>>>> appropriate message and put the secondary cpus in WFE state.
>>>>>
>>>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>>>> ---
>>>>> Changes from :-
>>>>>
>>>>> v1 - 1. NR_CPUS is defined as 1 for MPU
>>>> Not quite, what you do is ...
>>>>
>>>>> --- a/xen/arch/Kconfig
>>>>> +++ b/xen/arch/Kconfig
>>>>> @@ -11,6 +11,7 @@ config NR_CPUS
>>>>>    	default "8" if ARM && RCAR3
>>>>>    	default "4" if ARM && QEMU
>>>>>    	default "4" if ARM && MPSOC
>>>>> +	default "1" if ARM && MPU
>>>>>    	default "128" if ARM
>>>>>    	help
>>>>>    	  Controls the build-time size of various arrays and bitmaps
>>>> ... merely set the default. I wonder how useful that is, the more that
>>>> - as per the description - this is temporary only anyway.
>>>
>>> Yes, I can enforce a build time check like this.
>>>
>>> --- a/xen/arch/arm/setup.c
>>> +++ b/xen/arch/arm/setup.c
>>> @@ -295,6 +295,12 @@ void asmlinkage __init start_xen(unsigned long
>>> fdt_paddr)
>>>        struct domain *d;
>>>        int rc, i;
>>>
>>> +    /*
>>> +     * Currently MPU does not support SMP.
>>> +     */
>>> +#ifdef CONFIG_MPU
>>> +    BUILD_BUG_ON(NR_CPUS > 1);
>>> +#endif
>>>        dcache_line_bytes = read_dcache_line_bytes();
>>>
>>> Does this look ok ?
>>
>> Well, I'd still want to understand the purpose (if I was maintainer of
>> this code at least). You can't bring up secondary processors yet - fine.
>> But why does that mean you want to limit the build to NR_CPUS=1? Any
>> number is fine, but just not useful?
> 
> I have suggested to restrict NR_CPUS because it is not clear whether 
> cpu_up() would even work on MPU. In its current state, it may return an 
> error but could also corrupt the system.
> 
> At least for Xen on Arm, we have no other way to temporarly disable SMP 
> support (aside modify the provided DTB, but I would like to avoid it).

I see. Ayan: Could this be made a little more clear in the description
and / or code comment?

Furthermore I'm then puzzled by the use of BUILD_BUG_ON(). If you want
to prevent people building SMP configs, wouldn't you be better off doing
so right in Kconfig:

config NR_CPUS
	int "Maximum number of CPUs"
	range 1 16383 if !MPU
	range 1 1

or

config NR_CPUS
	int "Maximum number of CPUs"
	range 1 1 if MPU
	range 1 16383

? Since the 2nd form leaves the primary line untouched, I guess I like
this slightly better, despite the outlier then coming first. (The above
would presumably still require the default adjustment that you already
have.)

Finally, having observed interesting build issues with newer gcc when
trying to build UP configs, did you check that Arm actually builds fine
that way with recent-ish gcc?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 06:29:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 06:29:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812655.1225437 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3is-0000UL-1d; Tue, 08 Oct 2024 06:29:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812655.1225437; Tue, 08 Oct 2024 06:29: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 1sy3ir-0000UE-US; Tue, 08 Oct 2024 06:29:29 +0000
Received: by outflank-mailman (input) for mailman id 812655;
 Tue, 08 Oct 2024 06:29: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy3ir-0000U8-71
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 06:29:29 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aa827ac3-853e-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 08:29:26 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9953bdc341so227736366b.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 23:29:26 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994ba82d1esm305693266b.137.2024.10.07.23.29.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 23:29:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa827ac3-853e-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728368966; x=1728973766; 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=KZGsrB7RxqXhb1LInJv8XhWEKztqKZAHC2j1jEUY9Dg=;
        b=EkaDKgpLjEpTs60IWAJ4RbrJ4BOGsUcJlTg1pp1PlaAOG82A4W8yGzxuE6e3X9Co8B
         uQsEDkhbjP9kiKZezGX1hw0eKp2Z43rRL2W+dXBMc1/nnPZNCTr7r1rHdtPg4uLEUSlZ
         puM8UQZUJ2Hx8QQbpKB5//+Dd40xvZx2dQDdiNCq1beX0ltaiWOeu6+gYTKSnIhZ5Sn5
         hPUUuZOPISgqHk1of1cFHe+B8YWD+okfdJWahPndwjcpN7GUwuA3baFPxsFu3khYr7rd
         nKhOVnP8liMLSRH+aQGDe9CuzAPXwP/ZPhDlSra8uFRnk9n0Y/llx0H44HvKNPBPu2cl
         R3YA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728368966; x=1728973766;
        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=KZGsrB7RxqXhb1LInJv8XhWEKztqKZAHC2j1jEUY9Dg=;
        b=nSlhOqj/Mt7K/5RnrKKsgNCkZiSOsCOF07INTUz4DW33PjCYg94BCuJTlA9C0ZOBJp
         f7Eh1t+duMgncXXu8vF/16k/B8T0GaA0ljcMfEBBcFCPwrMp1FaB82X8qluyt7TQsuH4
         08Rcbc8cO7GSJNaQGd+29rdEzeI+r/VHTw0ugNFuGV5M8Z3IBeZ5wlgz58zwaS2oIvuX
         e2m8iOvgKnjz2dNLY7ujwDKMoJlbPJiPEAvtrOpeArH42i9/aZGEB+1c/Da3lLFKIVHj
         RDlt8QBNdF5S16DQ+HYH4QrrZG2FP75rBqUrKksmW6T/BbjISKaEW/jloKlwRbU9GcCd
         umjw==
X-Gm-Message-State: AOJu0YzEFl4cy6EG+S1pCZNAOLC37DgLikglt69Ovw8X/R0YjJ4WeSa0
	VNH84EmS+xx7YopQWG235pKIeiN1eSg1KcBGSRZmhyV/d1CINlA9UdXDYomB3g==
X-Google-Smtp-Source: AGHT+IG53OSdCTonVjQy60gOROoY68vLtEdccPJgADV6Jf0pU/Vw8vcLgIkU4cyA/B6hi8lniVcS/A==
X-Received: by 2002:a17:907:7208:b0:a99:442c:a694 with SMTP id a640c23a62f3a-a99442ca75fmr1086375166b.22.1728368964314;
        Mon, 07 Oct 2024 23:29:24 -0700 (PDT)
Message-ID: <2e70a742-e996-4748-a716-b88e998af215@suse.com>
Date: Tue, 8 Oct 2024 08:29:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/msr: add log messages to MSR state load error paths
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>
References: <20241007140317.67478-1-roger.pau@citrix.com>
 <765f0d29-8be8-4f53-90df-c9fbeb1eca68@citrix.com>
 <ZwP_EZttiZ78DKPT@macbook.local>
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: <ZwP_EZttiZ78DKPT@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07.10.2024 17:32, Roger Pau Monné wrote:
> On Mon, Oct 07, 2024 at 03:16:47PM +0100, Andrew Cooper wrote:
>> On 07/10/2024 3:03 pm, Roger Pau Monne wrote:
>>> Some error paths in the MSR state loading logic don't contain error messages,
>>> which makes debugging them quite hard without adding extra patches to print the
>>> information.
>>>
>>> Add two new log messages to the MSR state load path that print information
>>> about the entry that failed to load.
>>>
>>> No functional change intended.
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> ---
>>>  xen/arch/x86/hvm/hvm.c | 9 +++++++++
>>
>> Can we fix the PV side at the same time too?
> 
> Sure, I think that would be XEN_DOMCTL_set_vcpu_msrs?
> 
> I've noticed that such hypercall doesn't return an error if the MSR is
> not handled by Xen (there's no default case returning an error in the
> switch that processes the entries to load).

I see

                ret = -EINVAL;
                ...
                switch ( msr.index )
                {
                    ...
                    if ( guest_wrmsr(v, msr.index, msr.value) != X86EMUL_OKAY )
                        break;
                    continue;
                }
                break;

which to me means we'll return -EINVAL both when handling an MSR fails (1st
"break") and when encountering an unhandled MSR (2nd "break").

>>> --- a/xen/arch/x86/hvm/hvm.c
>>> +++ b/xen/arch/x86/hvm/hvm.c
>>> @@ -1598,10 +1598,19 @@ static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h)
>>>              rc = guest_wrmsr(v, ctxt->msr[i].index, ctxt->msr[i].val);
>>>  
>>>              if ( rc != X86EMUL_OKAY )
>>> +            {
>>> +                printk(XENLOG_G_ERR
>>> +                       "HVM%d.%d load MSR %#x with value %#lx failed: %d\n",
>>> +                       d->domain_id, vcpuid, ctxt->msr[i].index,
>>> +                       ctxt->msr[i].val, rc);
>>
>> Just %pv please.  I don't want to propagate the (occasionally ambiguous)
>> HVM%d form.
> 
> I also wanted to use %pv here, but it will get out of sync
> (style-wise) with the rest of messages of the HVM context loading
> logic?  IOW: my preference would be to switch all in one go.

I deliberately started using %pv when touching hvm_save() somewhat recently.
So there is some inconsistency right now anyway, and I guess we'll want to
move to the new form as we touch code in this area.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 06:37:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 06:37:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812663.1225446 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3qd-0003c7-PW; Tue, 08 Oct 2024 06:37:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812663.1225446; Tue, 08 Oct 2024 06: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 1sy3qd-0003c0-Mw; Tue, 08 Oct 2024 06:37:31 +0000
Received: by outflank-mailman (input) for mailman id 812663;
 Tue, 08 Oct 2024 06:37: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy3qc-0003bs-Mi
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 06:37:30 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c9d22b68-853f-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 08:37:28 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a997736106fso22502966b.3
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 23:37:28 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9943ea4936sm362179866b.174.2024.10.07.23.37.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 23:37:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c9d22b68-853f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728369448; x=1728974248; 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=neiYlOGTX8H9Lka0iRG1DKgQQ23BDMyH4pgriFqnD8o=;
        b=M8NL+RYShKjEr2/YRxZCYy9K2CCwebaatwO5UxSQnq8AG39nCMepJx8PMzuQf0LjMI
         8qjts8FxftpQCDGfgLY5/QuvqpJWfjC1/g/5Lrg0NNa08Mq5oRvct7bAKd/FhjO+Mrja
         XYp9bwnAO3CfyN0p88TnDP+vM11H73aXX466RgSOIYXOpP5s3QXm5N5waJs5iuGz+ALl
         h3cnE6fbxTGnUkCnbCB/1BRkYJalhcj3KMOy+Pf6y9FItMc3ka+PSbN7ETyf2Zrzjtf6
         wIPhh5aIoYXAv3rncFly3f/Cyy8nCKfRNUfZYosr9mmzF37LB2DCgwj1/DAz2e6jHUAA
         vQRQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728369448; x=1728974248;
        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=neiYlOGTX8H9Lka0iRG1DKgQQ23BDMyH4pgriFqnD8o=;
        b=jLnGrV+bPEiDOHHzY46tspC+ci7d/xah2r810UrfTIpx8QTI6Ezr7inQIPh6RUpRHC
         26LM7u0Tdc644vumAOL8rGqq7AgZoszBuEZOmvD6HvlnUQDW13i+AOizC040V7zmF0Tc
         dGMvY7I20XYnYp0V1geZpGOxhBag8FXtLj3FxTNc7UD1jkEvc2jWqWSwhAiF7zmGa9dO
         WxG5dDWogkN7zSJFKsBj0OUdPFWT817CPiAjHtOaZp5800YZba+6CLNwbbVJSvo96WRw
         MZ4or3HTqxrYBlp63FBYuwFafakbibZ+TIrgFl4BQuIYip0OORoZM3YVuWxH4s6p7JwB
         1xEg==
X-Forwarded-Encrypted: i=1; AJvYcCWqsdLhxHIXhqRiP+Hh/5qgyKBP0D8ZKkjRJTkErBhWHrwXZyCVwzyMxb75kyfF1gjxlbG5XNVF8J8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwmTGMmBDISI+QD1p/SLDN87fnJzQ6emYFStcOAcA3Ut8K+g2cB
	5sFyGKzj00pvqfeHSBV7vAsGobRqBkAvfGzHO6zthFJoozaRSiCzKN8gxJ54KQ==
X-Google-Smtp-Source: AGHT+IGaAMC6wm2wXc4QOhgwngN11jbM4r+PktodmmFFvPyDrRU4+cUwl3aGacqeLvB0lOAN6wsrzg==
X-Received: by 2002:a17:907:97cf:b0:a99:408c:6a16 with SMTP id a640c23a62f3a-a99408c6d34mr919957266b.12.1728369448159;
        Mon, 07 Oct 2024 23:37:28 -0700 (PDT)
Message-ID: <260d904c-54b0-456e-b4a5-9811f2e62c2c@suse.com>
Date: Tue, 8 Oct 2024 08:37:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/2] x86/fpu: Rework fpu_setup_fpu() uses to split it
 in two
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: 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: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
 <20241007155240.17186-3-alejandro.vallejo@cloud.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: <20241007155240.17186-3-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 17:52, Alejandro Vallejo wrote:
> It was trying to do too many things at once and there was no clear way of
> defining what it was meant to do. This commit splits the function in two.
> 
>   1. A function to return the FPU to power-on reset values.
>   2. A x87/SSE state loader (equivalent to the old function when it took
>      a data pointer).
> 
> The old function also had a concept of "default" values that the FPU
> would be configured for in some cases but not others. This patch removes
> that 3rd vague initial state and replaces it with power-on reset.
> 
> While doing this make sure the abridged control tag is consistent with the
> manuals and starts as 0xFF
> 
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> --
> @Jan: The patch changed substantially. Are you still ok with this R-by?

I am. However in such a situation imo you'd better drop the tag, for it to
be re-offered (if desired). It can very well happen that the person simply
doesn't notice the question pointed at them.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 06:41:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 06:41:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812667.1225456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3uf-0006bw-8v; Tue, 08 Oct 2024 06:41:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812667.1225456; Tue, 08 Oct 2024 06:41: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 1sy3uf-0006bp-6H; Tue, 08 Oct 2024 06:41:41 +0000
Received: by outflank-mailman (input) for mailman id 812667;
 Tue, 08 Oct 2024 06:41: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy3ud-0006bh-Bg
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 06:41: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 5e6a91ee-8540-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 08:41:38 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3f28b6so7573733a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 23:41:38 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993fd777e6sm390280166b.79.2024.10.07.23.41.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 23:41:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e6a91ee-8540-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728369697; x=1728974497; 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=qQD0m0Q0QJDu4tcwfWlE9/BItmbriET4OngEe69afxk=;
        b=LVwxfSavKAIYjVTGjl3gBll8/gWZEDuEXfzq+neqTvSfML4kgzlmMCaiFDOSsSB3Rn
         N0D07GGhktX39H3BoASEqiHfY5StpYeQSpJfQybP/0dNu+wsX3LFSpI/KbpYKbD69O+E
         PlXlmXQwAGJvP0MzC653sHAzSDtIxV19k6PZkD2Iui8PEUvhvaMk5/4KaP54f2Q9m+Jj
         MOY55d/cEakZ3I+2NuHzpthm+DdesPdggRMq4eesLgsYdV2xf0Wbb/D9YrULZS1q6Hpz
         uLX7tKoQbRUSAhr0F8kzsPgfilCGoz/A6XyZ/3Ah7wyl2K1H5BIwiS+XhZnf4uRENmTX
         ZkKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728369697; x=1728974497;
        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=qQD0m0Q0QJDu4tcwfWlE9/BItmbriET4OngEe69afxk=;
        b=MxgvpL16E625Ck1uzNMhsxVtuYSHv8kq1xnPgH9ZZEkk1ki+v+/zP0/yQ81d8zNyn7
         vnru8tDDNCBa8Mm1ez2SpCgTNxNsmx9eC0k306tiBtxiUNnjqDPWBKhlhrexUfySIYNO
         6y4mq9t8eyTHkvKHfVMEQjTS9+DY0l8QeudVEDIbQYYUFvQUHtzyMf4hA2Bw/klmasUn
         dmIqe18HOcGgQOckm/Os6ts1vvZXJnnLAt/zIJFIR0Kibv0H6kbtZplV+s+SzMbJvVtQ
         6CL2zR89a0XyE0YvuA5eDFGsU2kBliOP+7YL/TeTiq8K8d6ihDlba0Uo1rICQws0wsX4
         66rw==
X-Forwarded-Encrypted: i=1; AJvYcCUJwwXIFmW3osajLqg0VXtnDzhm7hfy3BsSE4zHR5GLucHjDku1DeXFzH7Q1msX0BfGUSWPSdf4KWc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxyORWnmJjhig/YRV3fCZSr/PYrlJiz3iuGDilYg4P2NJFGLanO
	f4RMkZTyvxr7PUPNv2XzXpf8SEOr/941gu/I9xeYMgV4oeC92nGMsZMlfe1j3A==
X-Google-Smtp-Source: AGHT+IHus3z9RlIARnEcLZiQVnzGehqTko/fW6UJ41h+cLIoyW0vkWa7FlcEmSDdobfyeUiKmBtEXA==
X-Received: by 2002:a17:906:f590:b0:a99:4278:8df8 with SMTP id a640c23a62f3a-a99427898f3mr1014612066b.34.1728369697520;
        Mon, 07 Oct 2024 23:41:37 -0700 (PDT)
Message-ID: <87f57db3-3784-47b2-a923-ca09cfee91b2@suse.com>
Date: Tue, 8 Oct 2024 08:41:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/44] x86/boot: move x86 boot module counting into a
 new boot_info struct
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: Christopher Clark <christopher.w.clark@gmail.com>,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-2-dpsmith@apertussolutions.com>
 <1e3d6e99-37df-4824-8702-3e8ae7a4923f@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: <1e3d6e99-37df-4824-8702-3e8ae7a4923f@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 19:57, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> --- /dev/null
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -0,0 +1,29 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +/*
>> + * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
>> + * Copyright (c) 2024 Apertus Solutions, LLC
>> + * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
>> + */
>> +
>> +#ifndef __XEN_X86_BOOTINFO_H__
>> +#define __XEN_X86_BOOTINFO_H__
> 
> I haven't been following closely, but I think if we follow Frediano's 
> naming scheme, it would be:
> ASM__X86__BOOTINFO_H

The new scheme became "official" only after Daniel posted the series, by me
actually committing what previously was only a proposal (coming from Bugseng
originally, as a result of long winded discussions). But yes, now that it's
official new headers ought to adhere to it.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 06:42:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 06:42:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812675.1225467 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy3vZ-0007BJ-Ll; Tue, 08 Oct 2024 06:42:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812675.1225467; Tue, 08 Oct 2024 06:42: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 1sy3vZ-0007BC-IP; Tue, 08 Oct 2024 06:42:37 +0000
Received: by outflank-mailman (input) for mailman id 812675;
 Tue, 08 Oct 2024 06:42: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy3vZ-00072S-17
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 06:42:37 +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 809a7335-8540-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 08:42:35 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c8967dd2c7so6523903a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 07 Oct 2024 23:42:35 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05bc44esm3974555a12.43.2024.10.07.23.42.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 07 Oct 2024 23:42:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 809a7335-8540-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728369755; x=1728974555; 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=/hxtuxb9JkMDKnwDTXq5dj+ldZwiMY8RptUFXBhqgpY=;
        b=WEdkXSNXJdWHRyq+QyT4uwLmOE80hRWJ4z2JS8RcyB+30iVyERX5awnbAoffr1YP6p
         ePF55OIbFWGeVrIFasFrHZVO0ayiv6J3HOV1Q3VjMLKHJyR28MZ3dB6C83XUTHoI+o+n
         YmoQtSdMgzX7lkqIrODAnouYm+NmlZkZAnH0JAD8bnviCCjW1XFlWXBycRK1HrjsJn+K
         T0OTRSpetHnv02QjlrRFpFOEj8XNMSFSLEaB5VauO4VXJIkyQlkS5FFeT9dnPuX7KSPT
         oYDf7etv90LWfi5AyohmnQeKQ+tPDX4fHZh/vv/KEzTGQ/D8D/1ZgDsdz2ywojFc0uMl
         hGSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728369755; x=1728974555;
        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=/hxtuxb9JkMDKnwDTXq5dj+ldZwiMY8RptUFXBhqgpY=;
        b=c08uI9VfM0FqgJx0uZDQ5Q71vdgvDheToi7Rd7Up4Ykcfg9xuos8cKJO7ErRJMiwzO
         RCwgbrBIj3Orlg/YLx+ke+GDM75QQ6DvK9cw/U9xh2C2TWwQ9B6BSBQMFVlhWBVAiD5y
         jTI8QVWe7PWrMTocyMNuClBTe8Svd/7ay/ZecZBJlGJNJU5rpyqYjvCb1WJeT9Yioc/R
         hxPWSNEjh4dyNN9S8b1Q60IaYRnmK05kp1fdLygjzJOmM72K4ElHO3Mh7enHpkxGDp26
         5TQKR5N+npSY5O0Afa2266DlunbWlRETJGuPovP19QRoKhB3/AWCPeTpFxp7GFWJlzcM
         ZvKA==
X-Forwarded-Encrypted: i=1; AJvYcCXOzGxpGqv8MT+QQoZkEfVYA8p3zbDb+BLuEcnrIGZpAOH753cRz+gM9u8+YP3MwlT00yU7+7QlDiY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKUDCp3SDeVDt+C/cAVmYOMqL7W8Xyk/lsqmgdbtRccnNATSbw
	zJnqHKxjlWnQ6FHYCekHT7NO9FEAMT1U1zhQHnSOPNkKc2OOCSAvA5Y/2hToow==
X-Google-Smtp-Source: AGHT+IF54CV73JjL/aV7Ubza8ImbstDWWxLwlBjZWaeYsfUI2kkGesXJ3obVksSqNU/hmJ7+K7YvEg==
X-Received: by 2002:a05:6402:4401:b0:5bf:c8:78a with SMTP id 4fb4d7f45d1cf-5c8d2e260d4mr15100712a12.17.1728369754936;
        Mon, 07 Oct 2024 23:42:34 -0700 (PDT)
Message-ID: <543a0931-e0a8-40be-98f9-fcb4e228a80b@suse.com>
Date: Tue, 8 Oct 2024 08:42:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 03/44] x86/boot: move cmdline to boot info
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-4-dpsmith@apertussolutions.com>
 <304c8c42-cfb7-4b0b-aaa7-8c673f9f2fa6@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: <304c8c42-cfb7-4b0b-aaa7-8c673f9f2fa6@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 20:09, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Transition Xen's command line to being held in struct boot_info.
>>
>> No functional change intended.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
> 
>>   #endif /* __XEN_X86_BOOTINFO_H__ */
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index aafc098ca268..0921f296075f 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -274,6 +274,8 @@ static int __init cf_check parse_acpi_param(const char *s)
>>   }
>>   custom_param("acpi", parse_acpi_param);
>>   
>> +static const char *cmdline_cook(const char *p, const char *loader_name);
> 
> Is there a reason not to move cmdline_cook() (and loader_is_grub2()) 
> earlier to avoid this forward declaration?

At a guess: To limit churn?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 07:36:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 07:36:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812689.1225477 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy4ld-0003mA-GJ; Tue, 08 Oct 2024 07:36:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812689.1225477; Tue, 08 Oct 2024 07: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 1sy4ld-0003m3-Cy; Tue, 08 Oct 2024 07:36:25 +0000
Received: by outflank-mailman (input) for mailman id 812689;
 Tue, 08 Oct 2024 07:36: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=/rYz=RE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sy4lc-0003lp-I9
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 07:36:24 +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 048d1a60-8548-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 09:36:23 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso467971166b.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 00:36:23 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994f38068fsm276431266b.40.2024.10.08.00.36.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 00:36:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 048d1a60-8548-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728372983; x=1728977783; 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=iF4f9ksq05aKSxj7D5QNKeUaUgzLwNZdA8HTt4BDmrE=;
        b=txDngEaB50X2V9BdjJtqkF6K8Iq+OJubWcga6+n6/rBXDi9LyH0XcORCgiqA8VLPhI
         xi0c7kEKY8Q5GwRlMx5B30xH+tApihJ4uNC1fohbJsI1iuboPL13LILsMfrZXJsU2fem
         USsj3xLILMf1YlshRT0AVK2R2nDKDzi8Hawj8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728372983; x=1728977783;
        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=iF4f9ksq05aKSxj7D5QNKeUaUgzLwNZdA8HTt4BDmrE=;
        b=HKkzQEllTGT1nDZ1GAwo99dWkKm2RGQ4Qn8rtj+i/IMZ7XXcD1pDBuRHxsO/xeWSHr
         I69yS36ERniwQmII0IUEs6UqN73QwUBWDmEaxUk0gn2YmhzUX0C54fl+QJd095BBd5Tf
         IC5DT8WzCp1bAuMWLL1XYUjFR/6OdaJaz80GFhoo9tBfJHSQm+ZXgkukXhnEihDEjWNH
         vjLmTLfMHYDibI9lXMKqyHqik55R4Nn64XLVXTKiVkj8AsnHu5ipsICZZl/yeyREdfMR
         dLxNX8f98/zG7mEPYUViLCf+B+cRlLMFTY9iEi5Djx4ZrZoDNADyqTTXpPegoouqBKnN
         oFaQ==
X-Gm-Message-State: AOJu0YyQM6n7KDyi2mkwU8uNRcJ34qrqvYqLTAiHN9eSM1sDpzYvias5
	EjXdnKtg68OAohNaBKq1UVQzdOMpHiafW1bR5r2pFp9Dt+6kf7z1M+t0XVXoBZc=
X-Google-Smtp-Source: AGHT+IHclnghXZ31ffSxbInulvSX+uO1wCzVSsUxw0JzyY4u+8do4WiY9sWRMb1TxMWuvsKs6O4gig==
X-Received: by 2002:a17:907:e88:b0:a99:529d:8199 with SMTP id a640c23a62f3a-a99529d8253mr693856266b.62.1728372982628;
        Tue, 08 Oct 2024 00:36:22 -0700 (PDT)
Date: Tue, 8 Oct 2024 09:36:21 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH] x86/msr: add log messages to MSR state load error paths
Message-ID: <ZwTg9ToFSKymnLnm@macbook.local>
References: <20241007140317.67478-1-roger.pau@citrix.com>
 <765f0d29-8be8-4f53-90df-c9fbeb1eca68@citrix.com>
 <ZwP_EZttiZ78DKPT@macbook.local>
 <2e70a742-e996-4748-a716-b88e998af215@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <2e70a742-e996-4748-a716-b88e998af215@suse.com>

On Tue, Oct 08, 2024 at 08:29:23AM +0200, Jan Beulich wrote:
> On 07.10.2024 17:32, Roger Pau Monné wrote:
> > On Mon, Oct 07, 2024 at 03:16:47PM +0100, Andrew Cooper wrote:
> >> On 07/10/2024 3:03 pm, Roger Pau Monne wrote:
> >>> Some error paths in the MSR state loading logic don't contain error messages,
> >>> which makes debugging them quite hard without adding extra patches to print the
> >>> information.
> >>>
> >>> Add two new log messages to the MSR state load path that print information
> >>> about the entry that failed to load.
> >>>
> >>> No functional change intended.
> >>>
> >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> >>> ---
> >>>  xen/arch/x86/hvm/hvm.c | 9 +++++++++
> >>
> >> Can we fix the PV side at the same time too?
> > 
> > Sure, I think that would be XEN_DOMCTL_set_vcpu_msrs?
> > 
> > I've noticed that such hypercall doesn't return an error if the MSR is
> > not handled by Xen (there's no default case returning an error in the
> > switch that processes the entries to load).
> 
> I see
> 
>                 ret = -EINVAL;
>                 ...
>                 switch ( msr.index )
>                 {
>                     ...
>                     if ( guest_wrmsr(v, msr.index, msr.value) != X86EMUL_OKAY )
>                         break;
>                     continue;
>                 }
>                 break;
> 
> which to me means we'll return -EINVAL both when handling an MSR fails (1st
> "break") and when encountering an unhandled MSR (2nd "break").

Oh, I see, I was expecting a construct similar to the one used in
hvm_load_cpu_msrs() and didn't spot that continue.  The logic there is
very obfuscated IMO.

> >>> --- a/xen/arch/x86/hvm/hvm.c
> >>> +++ b/xen/arch/x86/hvm/hvm.c
> >>> @@ -1598,10 +1598,19 @@ static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h)
> >>>              rc = guest_wrmsr(v, ctxt->msr[i].index, ctxt->msr[i].val);
> >>>  
> >>>              if ( rc != X86EMUL_OKAY )
> >>> +            {
> >>> +                printk(XENLOG_G_ERR
> >>> +                       "HVM%d.%d load MSR %#x with value %#lx failed: %d\n",
> >>> +                       d->domain_id, vcpuid, ctxt->msr[i].index,
> >>> +                       ctxt->msr[i].val, rc);
> >>
> >> Just %pv please.  I don't want to propagate the (occasionally ambiguous)
> >> HVM%d form.
> > 
> > I also wanted to use %pv here, but it will get out of sync
> > (style-wise) with the rest of messages of the HVM context loading
> > logic?  IOW: my preference would be to switch all in one go.
> 
> I deliberately started using %pv when touching hvm_save() somewhat recently.
> So there is some inconsistency right now anyway, and I guess we'll want to
> move to the new form as we touch code in this area.

Ack, will adjust to use "HVM %pv" then.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 07:47:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 07:47:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812698.1225486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy4wg-0002pG-EX; Tue, 08 Oct 2024 07:47:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812698.1225486; Tue, 08 Oct 2024 07:47: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 1sy4wg-0002p9-Bz; Tue, 08 Oct 2024 07:47:50 +0000
Received: by outflank-mailman (input) for mailman id 812698;
 Tue, 08 Oct 2024 07:47: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=TTuH=RE=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sy4wf-0002p3-Hi
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 07:47:49 +0000
Received: from mail-oo1-xc36.google.com (mail-oo1-xc36.google.com
 [2607:f8b0:4864:20::c36])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9bbbcb11-8549-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 09:47:47 +0200 (CEST)
Received: by mail-oo1-xc36.google.com with SMTP id
 006d021491bc7-5e1c63c9822so3003416eaf.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 00:47:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9bbbcb11-8549-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728373666; x=1728978466; 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=M+yAkcApRDaTj3RIrU3CRAMx4qZBSDaLuIfOAql1WOs=;
        b=PxgVA+1W/WGkuz1dZCfyDCwDcYmNUL9+l7aRwbUYGse3cuSC1c7LtKZRsgj3CTtYmz
         NTdLZd6hzaIOw+/fVuxE4dPW42CSH7qTy6WelvzwBN/Nf/wQIeaCadJj9I2xpeLPTx37
         ARC3gVmbJCiZ5ik4iyyRm5FqSi8T3kc8Aizpg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728373666; x=1728978466;
        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=M+yAkcApRDaTj3RIrU3CRAMx4qZBSDaLuIfOAql1WOs=;
        b=F06phUf1rz3J2/c0CTO3VPZZ4Z8S/+7+OngubLhtipVqV0dZdVehJdUbAz4i2iyo26
         KqfGQk3l5YH3Z9y9ggLPiaCC2FrXtpK+vhJDo/Zeh3Q4IENlOVdK1hoX7DjepbKs0yrW
         6jH2QH8PNo1aw0W0LkhUzcb7AiVtcXo9kVA2E0GijWamPH/QViCebGHXK2iQ2kjuokKT
         ESc3QcwLB3TDIOp8I+4BgGV8LMZDx3uijKVGWvUH4FSNRhtjD6OkuCDQUHFG6k+1D1hN
         lJqk68XcHkZeDnbmstgjtlPDGagIQtKqNugHio1tbN34fsVE3Tqbeh6+0jXkkBM/bHG2
         BR7w==
X-Gm-Message-State: AOJu0Yz9Yb88lO1cZ1DmKBA2atp1mtQdu2gLPQT/FFR2F4vzG0XHKFxH
	ZGXPib3H3awCG9KDAYkXMK6AN7b2W5YZizIbDBpCTyzqxdmv0HkpaBYrujEAh0cFJ8JtsHZFu64
	S7VHjXgCbcXInBCInDWDsjZxi8SnM5mFWDTJKZw==
X-Google-Smtp-Source: AGHT+IGX97qMDx3i5+ZluNnIZpm/ACE+qh4xbwifx80Q6FGVwt9NCl1EF3xWgvOdo0Om7vjThPtd1+17b5l0EXT4qF0=
X-Received: by 2002:a05:6870:8a10:b0:268:9f88:18ef with SMTP id
 586e51a60fabf-287c1da9e99mr8281258fac.13.1728373665604; Tue, 08 Oct 2024
 00:47:45 -0700 (PDT)
MIME-Version: 1.0
References: <20241007155240.17186-1-alejandro.vallejo@cloud.com> <20241007155240.17186-2-alejandro.vallejo@cloud.com>
In-Reply-To: <20241007155240.17186-2-alejandro.vallejo@cloud.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Tue, 8 Oct 2024 08:47:34 +0100
Message-ID: <CACHz=ZhGt7Lw5vHY-Ykc0_ouutMnurhWg2AQTkUF1MYXyp=fRw@mail.gmail.com>
Subject: Re: [PATCH v4 1/2] x86/fpu: Combine fpu_ctxt and xsave_area in arch_vcpu
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Xen-devel <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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 7, 2024 at 4:52=E2=80=AFPM Alejandro Vallejo
<alejandro.vallejo@cloud.com> wrote:
>
> fpu_ctxt is either a pointer to the legacy x87/SSE save area (used by FXS=
AVE) or
> a pointer aliased with xsave_area that points to its fpu_sse subfield. Su=
ch
> subfield is at the base and is identical in size and layout to the legacy
> buffer.
>
> This patch merges the 2 pointers in the arch_vcpu into a single XSAVE are=
a. In
> the very rare case in which the host doesn't support XSAVE all we're doin=
g is
> wasting a tiny amount of memory and trading those for a lot more simplici=
ty in
> the code.
>
> While at it, dedup the setup logic in vcpu_init_fpu() and integrate it
> into xstate_alloc_save_area().
>
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> --
> v4:
>   * Amend commit message with extra note about deduping vcpu_init_fpu()
>   * Remove comment on top of cpu_user_regs (though I really think there
>     ought to be a credible one, in one form or another).
>   * Remove cast from blk.c so FXSAVE_AREA is "void *"
>   * Simplify comment in xstate_alloc_save_area() for the "host has no
>     XSAVE" case.
> ---
>  xen/arch/x86/domctl.c             |  6 ++++-
>  xen/arch/x86/hvm/emulate.c        |  4 +--
>  xen/arch/x86/hvm/hvm.c            |  6 ++++-
>  xen/arch/x86/i387.c               | 45 +++++--------------------------
>  xen/arch/x86/include/asm/domain.h |  6 -----
>  xen/arch/x86/x86_emulate/blk.c    |  2 +-
>  xen/arch/x86/xstate.c             | 12 ++++++---
>  7 files changed, 28 insertions(+), 53 deletions(-)
>
> diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
> index 96d816cf1a7d..2d115395da90 100644
> --- a/xen/arch/x86/domctl.c
> +++ b/xen/arch/x86/domctl.c
> @@ -1379,7 +1379,11 @@ void arch_get_info_guest(struct vcpu *v, vcpu_gues=
t_context_u c)
>  #define c(fld) (c.nat->fld)
>  #endif
>
> -    memcpy(&c.nat->fpu_ctxt, v->arch.fpu_ctxt, sizeof(c.nat->fpu_ctxt));
> +    BUILD_BUG_ON(sizeof(c.nat->fpu_ctxt) !=3D
> +                 sizeof(v->arch.xsave_area->fpu_sse));
> +    memcpy(&c.nat->fpu_ctxt, &v->arch.xsave_area->fpu_sse,
> +           sizeof(c.nat->fpu_ctxt));
> +
>      if ( is_pv_domain(d) )
>          c(flags =3D v->arch.pv.vgc_flags & ~(VGCF_i387_valid|VGCF_in_ker=
nel));
>      else
> diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
> index aa97ca1cbffd..f2bc6967dfcb 100644
> --- a/xen/arch/x86/hvm/emulate.c
> +++ b/xen/arch/x86/hvm/emulate.c
> @@ -2371,7 +2371,7 @@ static int cf_check hvmemul_get_fpu(
>          alternative_vcall(hvm_funcs.fpu_dirty_intercept);
>      else if ( type =3D=3D X86EMUL_FPU_fpu )
>      {
> -        const fpusse_t *fpu_ctxt =3D curr->arch.fpu_ctxt;
> +        const fpusse_t *fpu_ctxt =3D &curr->arch.xsave_area->fpu_sse;
>
>          /*
>           * Latch current register state so that we can back out changes
> @@ -2411,7 +2411,7 @@ static void cf_check hvmemul_put_fpu(
>
>      if ( aux )
>      {
> -        fpusse_t *fpu_ctxt =3D curr->arch.fpu_ctxt;
> +        fpusse_t *fpu_ctxt =3D &curr->arch.xsave_area->fpu_sse;
>          bool dval =3D aux->dval;
>          int mode =3D hvm_guest_x86_mode(curr);
>
> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
> index 7b2e1c9813d6..77fe282118f7 100644
> --- a/xen/arch/x86/hvm/hvm.c
> +++ b/xen/arch/x86/hvm/hvm.c
> @@ -914,7 +914,11 @@ static int cf_check hvm_save_cpu_ctxt(struct vcpu *v=
, hvm_domain_context_t *h)
>
>      if ( v->fpu_initialised )
>      {
> -        memcpy(ctxt.fpu_regs, v->arch.fpu_ctxt, sizeof(ctxt.fpu_regs));
> +        BUILD_BUG_ON(sizeof(ctxt.fpu_regs) !=3D
> +                     sizeof(v->arch.xsave_area->fpu_sse));
> +        memcpy(ctxt.fpu_regs, &v->arch.xsave_area->fpu_sse,
> +               sizeof(ctxt.fpu_regs));
> +
>          ctxt.flags =3D XEN_X86_FPU_INITIALISED;
>      }
>
> diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
> index 134e0bece519..fbb9d3584a3d 100644
> --- a/xen/arch/x86/i387.c
> +++ b/xen/arch/x86/i387.c
> @@ -39,7 +39,7 @@ static inline void fpu_xrstor(struct vcpu *v, uint64_t =
mask)
>  /* Restore x87 FPU, MMX, SSE and SSE2 state */
>  static inline void fpu_fxrstor(struct vcpu *v)
>  {
> -    const fpusse_t *fpu_ctxt =3D v->arch.fpu_ctxt;
> +    const fpusse_t *fpu_ctxt =3D &v->arch.xsave_area->fpu_sse;
>
>      /*
>       * Some CPUs don't save/restore FDP/FIP/FOP unless an exception
> @@ -151,7 +151,7 @@ static inline void fpu_xsave(struct vcpu *v)
>  /* Save x87 FPU, MMX, SSE and SSE2 state */
>  static inline void fpu_fxsave(struct vcpu *v)
>  {
> -    fpusse_t *fpu_ctxt =3D v->arch.fpu_ctxt;
> +    fpusse_t *fpu_ctxt =3D &v->arch.xsave_area->fpu_sse;
>      unsigned int fip_width =3D v->domain->arch.x87_fip_width;
>
>      if ( fip_width !=3D 4 )
> @@ -212,7 +212,7 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool ne=
ed_stts)
>       * above) we also need to restore full state, to prevent subsequentl=
y
>       * saving state belonging to another vCPU.
>       */
> -    if ( v->arch.fully_eager_fpu || (v->arch.xsave_area && xstate_all(v)=
) )
> +    if ( v->arch.fully_eager_fpu || xstate_all(v) )
>      {
>          if ( cpu_has_xsave )
>              fpu_xrstor(v, XSTATE_ALL);
> @@ -299,44 +299,14 @@ void save_fpu_enable(void)
>  /* Initialize FPU's context save area */
>  int vcpu_init_fpu(struct vcpu *v)
>  {
> -    int rc;
> -
>      v->arch.fully_eager_fpu =3D opt_eager_fpu;
> -
> -    if ( (rc =3D xstate_alloc_save_area(v)) !=3D 0 )
> -        return rc;
> -
> -    if ( v->arch.xsave_area )
> -        v->arch.fpu_ctxt =3D &v->arch.xsave_area->fpu_sse;
> -    else
> -    {
> -        BUILD_BUG_ON(__alignof(v->arch.xsave_area->fpu_sse) < 16);
> -        v->arch.fpu_ctxt =3D _xzalloc(sizeof(v->arch.xsave_area->fpu_sse=
),
> -                                    __alignof(v->arch.xsave_area->fpu_ss=
e));
> -        if ( v->arch.fpu_ctxt )
> -        {
> -            fpusse_t *fpu_sse =3D v->arch.fpu_ctxt;
> -
> -            fpu_sse->fcw =3D FCW_DEFAULT;
> -            fpu_sse->mxcsr =3D MXCSR_DEFAULT;
> -        }
> -        else
> -            rc =3D -ENOMEM;
> -    }
> -
> -    return rc;
> +    return xstate_alloc_save_area(v);
>  }
>
>  void vcpu_setup_fpu(struct vcpu *v, struct xsave_struct *xsave_area,
>                      const void *data, unsigned int fcw_default)
>  {
> -    /*
> -     * For the entire function please note that vcpu_init_fpu() (above) =
points
> -     * v->arch.fpu_ctxt into v->arch.xsave_area when XSAVE is available.=
 Hence
> -     * accesses through both pointers alias one another, and the shorter=
 form
> -     * is used here.
> -     */
> -    fpusse_t *fpu_sse =3D v->arch.fpu_ctxt;
> +    fpusse_t *fpu_sse =3D &v->arch.xsave_area->fpu_sse;
>
>      ASSERT(!xsave_area || xsave_area =3D=3D v->arch.xsave_area);
>
> @@ -373,10 +343,7 @@ void vcpu_setup_fpu(struct vcpu *v, struct xsave_str=
uct *xsave_area,
>  /* Free FPU's context save area */
>  void vcpu_destroy_fpu(struct vcpu *v)
>  {
> -    if ( v->arch.xsave_area )
> -        xstate_free_save_area(v);
> -    else
> -        xfree(v->arch.fpu_ctxt);
> +    xstate_free_save_area(v);
>  }
>
>  /*
> diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm=
/domain.h
> index 5219c4fb0f69..b79d6badd71c 100644
> --- a/xen/arch/x86/include/asm/domain.h
> +++ b/xen/arch/x86/include/asm/domain.h
> @@ -591,12 +591,6 @@ struct pv_vcpu
>
>  struct arch_vcpu
>  {
> -    /*
> -     * guest context (mirroring struct vcpu_guest_context) common
> -     * between pv and hvm guests
> -     */
> -
> -    void              *fpu_ctxt;
>      struct cpu_user_regs user_regs;
>
>      /* Debug registers. */
> diff --git a/xen/arch/x86/x86_emulate/blk.c b/xen/arch/x86/x86_emulate/bl=
k.c
> index e790f4f90056..08a05f8453f7 100644
> --- a/xen/arch/x86/x86_emulate/blk.c
> +++ b/xen/arch/x86/x86_emulate/blk.c
> @@ -11,7 +11,7 @@
>      !defined(X86EMUL_NO_SIMD)
>  # ifdef __XEN__
>  #  include <asm/xstate.h>
> -#  define FXSAVE_AREA current->arch.fpu_ctxt
> +#  define FXSAVE_AREA ((void *)&current->arch.xsave_area->fpu_sse)

Could you use "struct x86_fxsr *" instead of "void*" ?
Maybe adding another "struct x86_fxsr fxsr" inside the anonymous
fpu_sse union would help here.

>  # else
>  #  define FXSAVE_AREA get_fpu_save_area()
>  # endif
> diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
> index 57a0749f0d54..af9e345a7ace 100644
> --- a/xen/arch/x86/xstate.c
> +++ b/xen/arch/x86/xstate.c
> @@ -508,9 +508,15 @@ int xstate_alloc_save_area(struct vcpu *v)
>      unsigned int size;
>
>      if ( !cpu_has_xsave )
> -        return 0;
> -
> -    if ( !is_idle_vcpu(v) || !cpu_has_xsavec )
> +    {
> +        /*
> +         * On non-XSAVE systems, we allocate an XSTATE buffer for simpli=
city.
> +         * XSTATE is backwards compatible to FXSAVE, and only one cachel=
ine
> +         * larger.
> +         */
> +        size =3D XSTATE_AREA_MIN_SIZE;
> +    }
> +    else if ( !is_idle_vcpu(v) || !cpu_has_xsavec )
>      {
>          size =3D xsave_cntxt_size;
>          BUG_ON(size < XSTATE_AREA_MIN_SIZE);

Frediano


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 07:52:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 07:52:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812703.1225497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy51A-0004Jh-VU; Tue, 08 Oct 2024 07:52:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812703.1225497; Tue, 08 Oct 2024 07:52: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 1sy51A-0004Ja-St; Tue, 08 Oct 2024 07:52:28 +0000
Received: by outflank-mailman (input) for mailman id 812703;
 Tue, 08 Oct 2024 07:52: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy51A-0004JU-2T
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 07:52:28 +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 42fca07b-854a-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 09:52:27 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3f28b6so7657097a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 00:52:27 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05bc44esm4030738a12.43.2024.10.08.00.52.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 00:52:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42fca07b-854a-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728373946; x=1728978746; 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=b1mRAv/0+dyUig1J5qbv12Vle4oll3D4nM7TXszuAP0=;
        b=gnNUm4PgukUlVIigi3v7BcfvXiFfpk2hQGK53T1ewvuXl/PYREKV+scmKDW8OqkJsy
         qv9FUBU6yZWveeZ2PweLzpKO5/qNA1fG8pyWaCe7scJ599ZRpbZPnCHtzPxSWWj42Evq
         5A/Vbs1H93VYD9ayxfjEB5sgw/y8ALzbXXpFSkhboJYhVhc369Aivxok74p3SBgeKLld
         dPvTlRmVbL+tfZD7xz1tUrMvH7u8VpYpa7l2O+LtEicK3O4dGNnRc3ZbdUkfx7Seecyj
         XdgOOzTOcmJVb9higk6pNlk68bAutFvH509Zlbf+iF414/8p/cxhPGcQsVOTb1tGvJ+S
         HcyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728373946; x=1728978746;
        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=b1mRAv/0+dyUig1J5qbv12Vle4oll3D4nM7TXszuAP0=;
        b=nrdN9V8JNn9e+EHaVKO+H0vPvJGCm/WXIqiuWUsCBudAchbAR8CgSZSVHFHEGnpieL
         EcpsU/29lfHPhOW5YwHVdVUja+vG65Z0CnYDKMM3UgLy97DWfXRJznjZalCjWisp1viW
         dzup3QLzz97vYNjQ5NEYFt8eh0uCqnCJ/rPUrAkTqyuDDWXSDIaGI6cOaC3h5BnT2iLU
         ErokafsLkplXOtNBpkPnTvTatY1/LcOSAsdBxvF2su/RNJ/x3agQZKOp489vM/uDV518
         cR4Xmj0NFEcZyQKIfWIcFRld5SuG8VsMo+czl5kdfUCK6ZRpgB6gNYnFsvNTz7qZC6Id
         uovg==
X-Forwarded-Encrypted: i=1; AJvYcCUua/o1wrXyIfJWvrurc5tsji0LLDkP5zFuDv4BfVn4OG2I8WEPWjeGUSCYQVAWy1i1MSg/A8VV6Wk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx9eeQSI/nPRFIEMo3JyiPfF5w/IQlkAR2+OF2hhMc/YzOsa2G3
	RRhPOvlajX9am1YC+ftwK2uT5bPmjc7r1Eb5/dtR20ZriXlWzpxhcG4nAQf0Cg==
X-Google-Smtp-Source: AGHT+IHH2VD024HFk8m+6wPtN0VrLEIZfY8igRZGdp4/rq7lg5QDe6OfbJgge/F1c9rzqDbiuX/OWQ==
X-Received: by 2002:a05:6402:3217:b0:5c8:9624:326a with SMTP id 4fb4d7f45d1cf-5c8d2e1885emr15471484a12.14.1728373946536;
        Tue, 08 Oct 2024 00:52:26 -0700 (PDT)
Message-ID: <725b7cfb-563c-4d46-a0be-e843a1cc9bb3@suse.com>
Date: Tue, 8 Oct 2024 09:52:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/2] x86/fpu: Split fpu_setup_fpu() in three
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: 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: <20240813142119.29012-1-alejandro.vallejo@cloud.com>
 <20240813142119.29012-3-alejandro.vallejo@cloud.com>
 <c83942d9-bb55-45c2-9a44-314266ce14c0@suse.com>
 <D3EXG6HDKMYR.15275C42NLLBL@cloud.com> <D4M7ZZL8YUXE.1D7KX3JJDYH6L@cloud.com>
 <1a0d69a0-84fb-4178-9f73-5490bb1d1adf@suse.com>
 <D4PP5YZ1G78X.PJY4WZKR15YX@cloud.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: <D4PP5YZ1G78X.PJY4WZKR15YX@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 17:59, Alejandro Vallejo wrote:
> On Fri Oct 4, 2024 at 7:08 AM BST, Jan Beulich wrote:
>> On 03.10.2024 15:54, Alejandro Vallejo wrote:
>>> On Tue Aug 13, 2024 at 5:33 PM BST, Alejandro Vallejo wrote:
>>>> On Tue Aug 13, 2024 at 3:32 PM BST, Jan Beulich wrote:
>>>>> On 13.08.2024 16:21, Alejandro Vallejo wrote:
>>>>>> It was trying to do too many things at once and there was no clear way of
>>>>>> defining what it was meant to do. This commit splits the function in three.
>>>>>>
>>>>>>   1. A function to return the FPU to power-on reset values.
>>>>>>   2. A function to return the FPU to default values.
>>>>>>   3. A x87/SSE state loader (equivalent to the old function when it took a data
>>>>>>      pointer).
>>>>>>
>>>>>> While at it, make sure the abridged tag is consistent with the manuals and
>>>>>> start as 0xFF.
>>>>>>
>>>>>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>>>>>
>>>>> Reviewed-by: Jan Beulich <jbeulich@suse.com>
>>>>>
>>>>>> ---
>>>>>> v3:
>>>>>>   * Adjust commit message, as the split is now in 3.
>>>>>>   * Remove bulky comment, as the rationale for it turned out to be
>>>>>>     unsubstantiated. I can't find proof in xen-devel of the stream
>>>>>>     operating the way I claimed, and at that point having the comment
>>>>>>     at all is pointless
>>>>>
>>>>> So you deliberately removed the comment altogether, not just point 3 of it?
>>>>>
>>>>> Jan
>>>>
>>>> Yes. The other two cases can be deduced pretty trivially from the conditional,
>>>> I reckon. I commented them more heavily in order to properly introduce (3), but
>>>> seeing how it was all a midsummer dream might as well reduce clutter.
>>>>
>>>> I got as far as the original implementation of XSAVE in Xen and it seems to
>>>> have been tested against many combinations of src and dst, none of which was
>>>> that ficticious "xsave enabled + xsave context missing". I suspect the
>>>> xsave_enabled(v) was merely avoiding writing to the XSAVE buffer just for
>>>> efficiency (however minor effect it might have had). I just reverse engineering
>>>> it wrong.
>>>>
>>>> Which reminds me. Thanks for mentioning that, because it was really just
>>>> guesswork on my part.
>>>>
>>>> Cheers,
>>>> Alejandro
>>>
>>> Playing around with the FPU I noticed this patch wasn't committed, did it fall
>>> under the cracks or is there a specific reason?
>>
>> Well, it's patch 2 in a series with no statement that it's independent of patch
> 
> I meant the series as a whole, rather than this specific patch. They are indeed
> not independent.
> 
>> 1, and patch 1 continues to lack an ack (based on earlier comments of mine you
>> probably have inferred that I'm not intending to ack it in this shape, while at
>> the same time - considering the arguments you gave - I also don't mean to stand
>> in the way of it going in with someone else's ack).
> 
> I didn't infer that at all, I'm afraid. I merely thought you had been busy and
> forgot about it. Is the "in this shape" about the overallocation that you
> mentioned in v1?

Yes.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:16:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:16:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812761.1225535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5O9-0006tJ-GY; Tue, 08 Oct 2024 08:16:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812761.1225535; Tue, 08 Oct 2024 08:16: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 1sy5O9-0006tC-Dw; Tue, 08 Oct 2024 08:16:13 +0000
Received: by outflank-mailman (input) for mailman id 812761;
 Tue, 08 Oct 2024 08:16: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy5O8-0006sY-FR
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:16:12 +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 940b32c4-854d-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 10:16:11 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c5b9d2195eso7617166a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 01:16:11 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05ad8cfsm4081993a12.37.2024.10.08.01.16.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 01:16:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 940b32c4-854d-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728375371; x=1728980171; 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=XD1ID4dK0vBevMAWfrj3Br3tfpyEJB+nRXLc2CosiCc=;
        b=QmvwfoCKzFB8WEYH5guvsWQkWrTT/QMMatowgE3Ml0K3GwPjrdfbyMxdIPuNjGXvek
         2EHst6u1N9AFOmh7O2dP1tB2pKbDic5yhE+FeDL+u6uLRgywm7rUYEKLuCiebqpsbRvB
         lqSBdce7OI3J9rQ/hytLRpLtJCERw+aXePcn6VPQBeVPJeIVPiRz3E3GnJmPt7SJ2+/0
         NDizGnl7DqcmAZU4oS1LNHAb77XccRzLG4tTp0BhBq92S1GjnVDcwvY/0jFlfltMmY6A
         VXm9tYLnKO62pLQ9s2YEDU1EtPyWr8wyC6o+ilfSFBiAtsqCsQvO9l/pDfa2GWkgOr0/
         a3jA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728375371; x=1728980171;
        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=XD1ID4dK0vBevMAWfrj3Br3tfpyEJB+nRXLc2CosiCc=;
        b=bmLui61px8pzvDDayhWR96GIi+e5bl5BSCOwLRInNwdvVfdY/rbvWz4Max8trbB2oI
         8XexR4RGQA171wUXzziTb83OeK2FGvvnZ2xEPJcbTvx8pZpdz2YbMO0ZSq4gf1oLN8Jy
         qAJQ7G92KY6y8B1nRHVxEU9CmCKrJ5mJ6z31WGlBpzKIl39EprkNvLVOGXD+VvNi1oxy
         h7RnUSlSGf9BcCS6D4m7dAnNqKXkUfKDNQeg34djfoOmotUp69gzC8qizrchBahhs5n4
         ia8DwKTkHHp5JCjeLQPK19IQWK89ZFOhfXZvUtfPoev8g9FbllqiMG4WSPe0bQJDo5F0
         fGTw==
X-Forwarded-Encrypted: i=1; AJvYcCXW/jgf4QxOnJVgY/jZ1aaUVifocj+VDj28K9Sjmh67150O59eCQYD7laKwM/dK/bCQ3s3dZkXkWVM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YztBCGFXPoE2lLLER4+tNUmDCqbEetXH3WZVsNcChWPtSAyIh7/
	fPSXJnSVIaydGuuD9WaAChmzy/QhwGYHf1RzNN4YPQzi03d3qBszUeOA7DAJUWj/WDAvTq6twgo
	=
X-Google-Smtp-Source: AGHT+IEM5hZLBoOpSDT7lXegmWf0Ym768BFwps70e1KhrP18nlnkP15HqNzUgS021OsgmMKC1phF3Q==
X-Received: by 2002:a05:6402:2808:b0:5c8:9861:a2c0 with SMTP id 4fb4d7f45d1cf-5c8d2e743c6mr11913965a12.25.1728375370766;
        Tue, 08 Oct 2024 01:16:10 -0700 (PDT)
Message-ID: <9507c361-845c-4c00-8cb2-507e413be544@suse.com>
Date: Tue, 8 Oct 2024 10:16:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/7] x86: Introduce x86_decode_lite()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-2-andrew.cooper3@citrix.com>
 <82d6f3a3-b3bf-4e4b-bf5c-39f5b857897a@suse.com>
 <c83b550f-9cba-4ae5-a887-6a962588df88@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: <c83b550f-9cba-4ae5-a887-6a962588df88@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07.10.2024 19:17, Andrew Cooper wrote:
> On 07/10/2024 1:56 pm, Jan Beulich wrote:
>> On 02.10.2024 17:27, Andrew Cooper wrote:
>>> --- /dev/null
>>> +++ b/xen/arch/x86/x86_emulate/decode-lite.c
>>> @@ -0,0 +1,311 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +
>>> +#include "private.h"
>>> +
>>> +#define Imm8   (1 << 0)
>>> +#define Imm    (1 << 1)
>>> +#define Moffs  (1 << 2)
>>> +#define Branch (1 << 5) /* ... that we care about */
>>> +/*      ModRM  (1 << 6) */
>>> +#define Known  (1 << 7)
>>> +
>>> +#define ALU_OPS                                 \
>>> +    (Known|ModRM),                              \
>>> +    (Known|ModRM),                              \
>>> +    (Known|ModRM),                              \
>>> +    (Known|ModRM),                              \
>>> +    (Known|Imm8),                               \
>>> +    (Known|Imm)
>>> +
>>> +static const uint8_t init_or_livepatch_const onebyte[256] = {
>>> +    [0x00] = ALU_OPS, /* ADD */ [0x08] = ALU_OPS, /* OR  */
>>> +    [0x10] = ALU_OPS, /* ADC */ [0x18] = ALU_OPS, /* SBB */
>>> +    [0x20] = ALU_OPS, /* AND */ [0x28] = ALU_OPS, /* SUB */
>>> +    [0x30] = ALU_OPS, /* XOR */ [0x38] = ALU_OPS, /* CMP */
>>> +/*  [0x40 ... 0x4f] = REX prefixes */
>> For these and other aspects further down, may I ask for a comment at the
>> top of the file setting the scope for this new function (and its
>> associated data) as being strictly 64-bit only? And perhaps even strictly
>> covering only what Xen may legitimately use (largely excluding APX for
>> the foreseeable future, i.e. until such time that we might decide to
>> allow Xen itself to use APX throughout its code).
>>
>> Besides APX, with more immediate uses in mind, I wonder about e.g.
>> BMI/BMI2 insns, which live outside the one/two-byte maps.
> 
> They're not needed yet, and it would require extra decode complexity.
> 
>> I would further appreciate if we could be consistent with the mentioning
>> (or not) of prefixes: The REX ones here are the only ones that the table
>> mentions right now. In fact I wonder whether a Prefix attribute wouldn't
>> be nice to have, so you don't need to open-code all of them in the
>> function itself.
> 
> The comment about REX prefixes is only here because you insisted on it.

Did I? Looking back at my v1 replies I can't spot such a comment. But anyway,
what I'd like to ask for is consistency: Mention all (relevant) prefixes, or
none of them.

>>> +    [0x6c ... 0x6f] = (Known),             /* INS/OUTS */
>>> +
>>> +    [0x70 ... 0x7f] = (Known|Branch|Imm8), /* Jcc disp8 */
>>> +    [0x80]          = (Known|ModRM|Imm8),  /* Grp1 */
>>> +    [0x81]          = (Known|ModRM|Imm),   /* Grp1 */
>>> +
>>> +    [0x83]          = (Known|ModRM|Imm8),  /* Grp1 */
>>> +    [0x84 ... 0x8e] = (Known|ModRM),       /* TEST/XCHG/MOV/MOV-SREG/LEA r/rm */
>>> +
>>> +    [0x90 ... 0x99] = (Known),             /* NOP/XCHG rAX/CLTQ/CQTO */
>> Omitting PUSH (at 0x8f) is somewhat odd, considering that it's a pretty
>> "normal" insn.
> 
> Except it's not.  It's the XOP prefix too, and would require extra
> decode complexity.

Well, just like you don't decode VEX/EVEX, you could opt not to decode XOP
despite decoding this PUSH form. Otherwise I'm inclined to ask that no PUSH
or POP should be decoded.

>>> +    [0xc6]          = (Known|ModRM|Imm8),  /* Grp11, Further ModRM decode */
>>> +    [0xc7]          = (Known|ModRM|Imm),   /* Grp11, Further ModRM decode */
>>> +
>>> +    [0xcb ... 0xcc] = (Known),             /* LRET/INT3 */
>>> +    [0xcd]          = (Known|Imm8),        /* INT $imm8 */
>> No IRET, when you have things like e.g. ICEBP and CLTS?
> 
> The absence of IRET is intentional, because it can't be used safely. 
> SYSRET/EXIT are excluded too for consistency.
> 
> IRET can be added if/when it is needed, and someone has figured out a
> way of adjusting the exception table entry.

If it has an attached exception table entry. If it doesn't, I think its
use would in principle be fine. And an attached exception table entry could
similarly be a problem for any other insn, couldn't it? The same argument
would in particular apply to LRET, I think.

Anyway, once again my main concern here are apparent inconsistencies. Any
of them will make it more difficult to judge what needs / doesn't need
adding here going forward.

>>> +};
>>> +
>>> +/*
>>> + * Bare minimum x86 instruction decoder to parse the alternative replacement
>>> + * instructions and locate the IP-relative references that may need updating.
>>> + *
>>> + * These are:
>>> + *  - disp8/32 from near branches
>>> + *  - RIP-relative memory references
>>> + *
>>> + * The following simplifications are used:
>>> + *  - All code is 64bit, and the instruction stream is safe to read.
>>> + *  - The 67 prefix is not implemented, so the address size is only 64bit.
>> As to the earlier remark - maybe this part of the comment could simply
>> move to the top of the file?
> 
> I really don't want to split the comment.  It needs to all live together.
> 
> Given this is a single-function file, I also don't see the need for this
> comment to move away from here.  You can't interpret the decode tables
> without reading the function.

I'm torn; I think having some fundamental information at the top of the file
would help. Yet keeping commentary together is also a valid aspect.

>>> + * Inputs:
>>> + *  @ip  The position to start decoding from.
>>> + *  @end End of the replacement block.  Exceeding this is considered an error.
>>> + *
>>> + * Returns: x86_decode_lite_t
>>> + *  - On failure, length of 0.
>>> + *  - On success, length > 0.  For rel_sz > 0, rel points at the relative
>>> + *    field in the instruction stream.
>>> + */
>>> +x86_decode_lite_t init_or_livepatch x86_decode_lite(void *ip, void *end)
>> Imo both pointers would be nice to be to-const.
> 
> In v1, you also identified why that wouldn't compile.

Hmm, right. It's been a while. Would it be too much to ask that you add a
sentence to that effect to the description?

>>> +{
>>> +    void *start = ip, *rel = NULL;
>>> +    unsigned int opc, rel_sz = 0;
>>> +    uint8_t b, d, rex = 0, osize = 4;
>>> +
>>> +#define OPC_TWOBYTE (1 << 8)
>>> +
>>> +    /* Mutates IP, uses END. */
>>> +#define FETCH(ty)                                       \
>>> +    ({                                                  \
>>> +        ty _val;                                        \
>>> +                                                        \
>>> +        if ( (ip + sizeof(ty)) > end )                  \
>>> +            goto overrun;                               \
>>> +        _val = *(ty *)ip;                               \
>>> +        ip += sizeof(ty);                               \
>>> +        _val;                                           \
>>> +    })
>>> +
>>> +    for ( ;; ) /* Prefixes */
>>> +    {
>>> +        switch ( b = FETCH(uint8_t) )
>>> +        {
>>> +        case 0x26: /* ES override */
>>> +        case 0x2e: /* CS override */
>>> +        case 0x36: /* DS override */
>>> +        case 0x3e: /* SS override */
>>> +        case 0x64: /* FS override */
>>> +        case 0x65: /* GS override */
>> If you don't like the idea of a Prefix attribute
> 
> I don't like the idea of making this intentionally dissimilar to the
> main decoder, just to safe a few lines of source code.
> 
> GCC optimises it into a bitmap anyway.

Well, okay then.

>>  I wonder in how far we
>> actually need all of the above, when you already ...
>>
>>> +        case 0xf0: /* LOCK */
>>> +        case 0xf2: /* REPNE */
>>> +        case 0xf3: /* REP */
>>> +            break;
>>> +
>>> +        case 0x66: /* Operand size override */
>>> +            osize = 2;
>>> +            break;
>>> +
>>> +        /* case 0x67: Address size override, not implemented */
>> ... deliberately leave of this one.
> 
> Excluding 67 is intentional because it a) has no business being used,
> and b) adds a huge amount of decode complexity.

I largely agree with a), but why b)? The only difference in decode is
how to treat moffs. In any event - the comments here again were because
things looks somewhat inconsistent the way they are right now. As that's
deliberate, it's perhaps tolerable.

> Whereas two of segment prefixes are already necessary to decode the
> alternatives we have today.
>>> +        case 0x40 ... 0x4f: /* REX */
>>> +            rex = b;
>>> +            continue;
>>> +
>>> +        default:
>>> +            goto prefixes_done;
>>> +        }
>>> +        rex = 0; /* REX cancelled by subsequent legacy prefix. */
>>> +    }
>>> + prefixes_done:
>>> +
>>> +    if ( rex & 0x08 ) /* REX.W */
>> Can you please use REX_W here?
> 
> Oh, it is available.  Ok.
> 
>>
>>> +        osize = 8;
>>> +
>>> +    /* Fetch the main opcode byte(s) */
>>> +    if ( b == 0x0f )
>>> +    {
>>> +        b = FETCH(uint8_t);
>>> +        opc = OPC_TWOBYTE | b;
>>> +
>>> +        d = twobyte[b];
>>> +    }
>>> +    else
>>> +    {
>>> +        opc = b;
>>> +        d = onebyte[b];
>>> +    }
>>> +
>>> +    if ( unlikely(!(d & Known)) )
>>> +        goto unknown;
>>> +
>>> +    if ( d & ModRM )
>>> +    {
>>> +        uint8_t modrm = FETCH(uint8_t);
>>> +        uint8_t mod = modrm >> 6;
>>> +        uint8_t reg = (modrm >> 3) & 7;
>>> +        uint8_t rm = modrm & 7;
>>> +
>>> +        /* ModRM/SIB decode */
>>> +        if ( mod == 0 && rm == 5 ) /* RIP relative */
>>> +        {
>>> +            rel = ip;
>>> +            rel_sz = 4;
>>> +            FETCH(uint32_t);
>>> +        }
>>> +        else if ( mod != 3 && rm == 4 ) /* SIB */
>>> +        {
>>> +            uint8_t sib = FETCH(uint8_t);
>>> +            uint8_t base = sib & 7;
>>> +
>>> +            if ( mod == 0 && base == 5 )
>>> +                goto disp32;
>>> +        }
>>> +
>>> +        if ( mod == 1 ) /* disp8 */
>>> +            FETCH(uint8_t);
>>> +        else if ( mod == 2 ) /* disp32 */
>>> +        {
>>> +        disp32:
>>> +            FETCH(uint32_t);
>> The values aren't used, so the types don't matter overly much, yet int8_t
>> and int32_t would be a more accurate representation of what's being
>> fetched.
> 
> Why does that matter?  I'm skipping a number of bytes, not interpreting
> the result.

It matters from a doc pov only at this point. When one simply reads this
code, one may wonder "why unsigned". Just like I did.

>>> +        }
>>> +
>>> +        /* ModRM based decode adjustements */
>>> +        switch ( opc )
>>> +        {
>>> +        case 0xc7: /* Grp11 XBEGIN is a branch. */
>>> +            if ( modrm == 0xf8 )
>>> +                d |= Branch;
>>> +            break;
>>> +        case 0xf6: /* Grp3 TEST(s) have extra Imm8 */
>>> +            if ( reg == 0 || reg == 1 )
>>> +                d |= Imm8;
>>> +            break;
>>> +        case 0xf7: /* Grp3 TEST(s) have extra Imm */
>>> +            if ( reg == 0 || reg == 1 )
>>> +                d |= Imm;
>>> +            break;
>>> +        }
>> In this switch() you don't distinguish 1- and 2-byte maps at all.
> 
> See OPC_TWOBYTE.  They are distinguished here.

Oh, I've overlooked that, sorry.

>>> +    }
>>> +
>>> +    if ( d & Branch )
>>> +    {
>>> +        /*
>>> +         * We don't tolerate 66-prefixed call/jmp in alternatives.  Some are
>>> +         * genuinely decoded differently between Intel and AMD CPUs.
>>> +         *
>>> +         * We also don't support APX instructions, so don't have to cope with
>>> +         * JMPABS which is the first branch to have an 8-byte immediate.
>>> +         */
>>> +        if ( osize < 4 )
>>> +            goto bad_osize;
>>> +
>>> +        rel = ip;
>>> +        rel_sz = (d & Imm8) ? 1 : 4;
>>> +    }
>>> +
>>> +    if ( d & (Imm | Imm8 | Moffs) )
>>> +    {
>>> +        if ( d & Imm8 )
>>> +            osize = 1;
>>> +        else if ( d & Moffs )
>>> +            osize = 8;
>>> +        else if ( osize == 8 && !(opc >= 0xb8 && opc <= 0xbf) )
>> Again want to also take the opcode map into account, even if - by luck -
>> this would work as is for now.
>>
>> Also could I talk you into converting the two comparisons into one, along
>> the lines of "(opc | 7) != 0xbf"?
> 
> That's the kind of obfuscation which should be left to the compiler.

If only it actually did. I didn't check recently, but last I checked they
still didn't take opportunities like this.

>>> --- a/xen/arch/x86/x86_emulate/private.h
>>> +++ b/xen/arch/x86/x86_emulate/private.h
>>> @@ -9,7 +9,9 @@
>>>  #ifdef __XEN__
>>>  
>>>  # include <xen/bug.h>
>>> +# include <xen/init.h>
>>>  # include <xen/kernel.h>
>>> +# include <xen/livepatch.h>
>>>  # include <asm/endbr.h>
>>>  # include <asm/msr-index.h>
>>>  # include <asm/x86-vendors.h>
>> It's only the new file that needs these - can we limit the dependencies
>> to just that one by putting these new #include-s there?
> 
> Not if you want the userspace harness in patch 2 to compile.

This is inside #ifdef __XEN__, so how can the userspace harness'es build
matter? Of course the #include-s, once moved, would need to be inside a
similar #ifdef.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:31:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:31:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812794.1225544 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5cg-0004l5-NH; Tue, 08 Oct 2024 08:31:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812794.1225544; Tue, 08 Oct 2024 08:31: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 1sy5cg-0004ky-Kn; Tue, 08 Oct 2024 08:31:14 +0000
Received: by outflank-mailman (input) for mailman id 812794;
 Tue, 08 Oct 2024 08:31: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 1sy5ce-0004ks-Sy
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:31:12 +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 1sy5ce-0005bI-CM; Tue, 08 Oct 2024 08:31:12 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.0.211])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1sy5ce-0000TZ-54; Tue, 08 Oct 2024 08:31: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=tiIp7ZeuBCwflvEl2uQ1t2+G3Fu8unsKhS5berx9g1k=; b=tqhSOXic//l3H83oE7Y7IqhvX8
	j/YGdQYwFTi/dPqj0WhgOZKuJ7B66yESgqZyP6TC9nwDITcOBaDPaTiRqoLH0+72ipHubMTQullru
	/uRO2thTZmsbHCAJNxlCFSORoUjpto9oKDYUeHa6ihN8eI1TDz6G2C8yB36g1TXNo4yE=;
Message-ID: <dd4e3460-eed6-4a4d-82c8-c3d89b0d52e6@xen.org>
Date: Tue, 8 Oct 2024 09:31:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] types: replace remaining uses of s64
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>
References: <e3ba27ee-1534-40c1-b635-17ff89f50a6b@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <e3ba27ee-1534-40c1-b635-17ff89f50a6b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 01/10/2024 14:30, Jan Beulich wrote:
> --- a/xen/arch/arm/include/asm/arm64/cpufeature.h
> +++ b/xen/arch/arm/include/asm/arm64/cpufeature.h

This file needs to stick with Linux coding style. I don't think it is a 
problem to include "xen/linux-compat.h" here because the header is only 
included directly in two *.c. (There are no indirect inclusion).

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:38:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:38:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812804.1225559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5jP-0002FX-KA; Tue, 08 Oct 2024 08:38:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812804.1225559; Tue, 08 Oct 2024 08: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 1sy5jP-0002EK-Fj; Tue, 08 Oct 2024 08:38:11 +0000
Received: by outflank-mailman (input) for mailman id 812804;
 Tue, 08 Oct 2024 08: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=/rYz=RE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sy5jO-00027a-47
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:38:10 +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 a555c321-8550-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 10:38:09 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a99415adecaso443374166b.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 01:38:09 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994f38068fsm283632966b.40.2024.10.08.01.38.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 01:38:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a555c321-8550-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728376688; x=1728981488; 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=XH4xpZLptCZ6C2dJ+MYc8/xilU4dhsL/mNlDZC0yzNk=;
        b=lMmfHfK+BndP1P3ecWm4fEoD8CAlhWHblrvOP2dZ9DU4ed996j6C7gjr4bluIHTlyl
         jnetgQGATFKT+LF9yZ4Vgo6i5QMZJBgHC5bXsmIYtPVAv/3O5X8BdYO1oxih5Lus5MCz
         GywGkfk+tNVE86QRm2pVQh7a761wslVIiDdX0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728376688; x=1728981488;
        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=XH4xpZLptCZ6C2dJ+MYc8/xilU4dhsL/mNlDZC0yzNk=;
        b=JYiM4oThjRS4sQ7SRtl60keBPJQS/YqmNQnDI4uc2tv5LXLgCSQWLMW2ii5ipN7Z82
         K9fZHXsGLzoeMQY9/0XIz6L0HiaA5ti+xgt9GjrO+gmSV+dlzbDFTbMum4qB4iALO6J5
         u0UpN6/KrgJFrB6kMGlXzZzv6Il04MgsB5W7FwWtaP0fO+OCZcCVroQSYWP0TrnyqsAl
         iScideLkfHPZt8yq3pQbIVRJG9IrVKm/WI8KsjcMQ18TYX8lSasEcmt6PH4MEx+2SU3j
         trZvubOnBWXR598cl65vZBtN3ldFRXG6pi/1UacimBsiL+AyyWs2+r6FxFhPKhVwKMr9
         8hYg==
X-Gm-Message-State: AOJu0Yz1D9Eut7TNeM2Mp23ehp/8Y0ElfejsywcYdVbfHjvdHN5XwqrI
	ESSQrTXHjhgfUgVxFdKadKkEy6GTwz//qzyr2YJSbYBmzfmS/fPglsmxy0RnrTJJd5ytq9WiV2r
	Y
X-Google-Smtp-Source: AGHT+IEBCg4ZG9tl9DtNzsHD5BX6MV6mwIUL7ZZuM4RoMBxzjkKMMIZ4Xa9Sh+in1pgMQZ6Xq/fgpA==
X-Received: by 2002:a17:906:6a0a:b0:a99:637c:c2e0 with SMTP id a640c23a62f3a-a99679501b7mr207715766b.31.1728376688167;
        Tue, 08 Oct 2024 01:38:08 -0700 (PDT)
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>
Subject: [PATCH v2] x86/msr: add log messages to MSR state load error paths
Date: Tue,  8 Oct 2024 10:37:56 +0200
Message-ID: <20241008083756.72829-2-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
In-Reply-To: <20241008083756.72829-1-roger.pau@citrix.com>
References: <20241008083756.72829-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Some error paths in the MSR state loading logic don't contain error messages,
which makes debugging them quite hard without adding extra patches to print the
information.

Add two new log messages to the MSR state load path that print information
about the entry that failed to load, for both PV and HVM.

While there also adjust XEN_DOMCTL_set_vcpu_msrs to return -ENXIO in case the
MSR is unhandled or can't be loaded, so it matches the error code used by HVM
MSR loading (and it's less ambiguous than -EINVAL).

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v1:
 - Add messages to PV MSR loading.
 - Return -ENXIO from PV loading path also.
 - Do not print the return code from guest_wrmsr(), it's not specially helpful
   given the current logic, as it will always be X86EMUL_EXCEPTION in case of
   failure.
---
 xen/arch/x86/domctl.c  | 8 ++++++++
 xen/arch/x86/hvm/hvm.c | 7 +++++++
 2 files changed, 15 insertions(+)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 96d816cf1a7d..f76de5be9437 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1166,6 +1166,7 @@ long arch_do_domctl(
                 if ( msr.reserved )
                     break;
 
+                ret = -ENXIO;
                 switch ( msr.index )
                 {
                 case MSR_SPEC_CTRL:
@@ -1174,9 +1175,16 @@ long arch_do_domctl(
                 case MSR_AMD64_DR0_ADDRESS_MASK:
                 case MSR_AMD64_DR1_ADDRESS_MASK ... MSR_AMD64_DR3_ADDRESS_MASK:
                     if ( guest_wrmsr(v, msr.index, msr.value) != X86EMUL_OKAY )
+                    {
+                        printk(XENLOG_G_ERR
+                               "%pv load MSR %#x with value %#lx failed\n",
+                               v, msr.index, msr.value);
                         break;
+                    }
                     continue;
                 }
+                printk(XENLOG_G_ERR "%pv attempted load of unhandled MSR %#x\n",
+                       v, msr.index);
                 break;
             }
 
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 69a25571db8d..200f0a414138 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1598,10 +1598,17 @@ static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h)
             rc = guest_wrmsr(v, ctxt->msr[i].index, ctxt->msr[i].val);
 
             if ( rc != X86EMUL_OKAY )
+            {
+                printk(XENLOG_G_ERR
+                       "HVM %pv load MSR %#x with value %#lx failed\n",
+                       v, ctxt->msr[i].index, ctxt->msr[i].val);
                 return -ENXIO;
+            }
             break;
 
         default:
+            printk(XENLOG_G_ERR "HVM %pv attempted load of unhandled MSR %#x\n",
+                   v, ctxt->msr[i].index);
             return -ENXIO;
         }
     }
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:38:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:38:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812803.1225555 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5jP-0002CQ-DQ; Tue, 08 Oct 2024 08:38:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812803.1225555; Tue, 08 Oct 2024 08: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 1sy5jP-0002CJ-9q; Tue, 08 Oct 2024 08:38:11 +0000
Received: by outflank-mailman (input) for mailman id 812803;
 Tue, 08 Oct 2024 08:38: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=/rYz=RE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sy5jN-00027a-G6
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:38:09 +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 a4a090be-8550-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 10:38:08 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9950d27234so291934866b.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 01:38:07 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993f13620dsm409753466b.215.2024.10.08.01.38.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 01:38:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a4a090be-8550-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728376687; x=1728981487; 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=m3rWamNd2rtptE3YePGwHSfGEHWYJhUnCLfE+jd0lUs=;
        b=v8rZwZQNKXgclQq1EDr1ddKbNI1MHlSCIks68bEMDnL/Yj/XSn+P2scIA44H+Cy4qK
         67cyvgLwKsGO31gp9C4A1xaCRjAa1HKzt+/0IW45cXNfu4m+hIjZA4EdtrhU8C2d4j3Q
         4dTCwqFbJKw6UTIr7ErKkIJm+hq5lvGT8VUdw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728376687; x=1728981487;
        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=m3rWamNd2rtptE3YePGwHSfGEHWYJhUnCLfE+jd0lUs=;
        b=DKVv9Uan/IrpOaU64IxOEdrscm/8/3/T+uYW4FOXSAmCh1j4M1YLPRNF+/YTGlnBVz
         w1D8izgwBHXGYrCGFQUEVKRarA5kx5wUBQYezb1IS62UBD02MUhUBeJKqYe/etczd+oy
         QHkuN3JOMfK++D5aWi6iO4T5ESN9/M71vbmevCQ9M4MqLUYcwKyVJ+3UFfHaXfQJ/ZOo
         cvS+rWHSzK0roKSMX2GiohUQfZyVheC6obrXOeavTueFthXIn09E3xe1DFAcuFRD6R8c
         DQSqYSIsZ04de19WaionIawtavnUmCS0t0+oJYxCyr8X9wTRRFWe0Uow0tCLoI1A3i5p
         BH+A==
X-Gm-Message-State: AOJu0YxMTn/6irznasKyToYAWAOG5+Gg3+p/zZjjAvqlMxFREEI1YWRk
	CGdd8/zmG0mkQ1ZsijyMwx7oC5yeR0AXq391CYVCQ2p+Alpgturu+ETe+EuIelbFx2dtXzlw2Bi
	A
X-Google-Smtp-Source: AGHT+IFZewXbZuFwWYvo/BnKc0vjjH0u4vA1EH8+3Nk1DBT90oUr5BgrimXMQU1AnM9Bmf41seUvXg==
X-Received: by 2002:a17:907:9304:b0:a8d:7b7d:8c39 with SMTP id a640c23a62f3a-a991c03145bmr1519329266b.43.1728376687011;
        Tue, 08 Oct 2024 01:38:07 -0700 (PDT)
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>
Subject: [PATCH] x86/domctl: fix maximum number of MSRs in XEN_DOMCTL_{get,set}_vcpu_msrs
Date: Tue,  8 Oct 2024 10:37:55 +0200
Message-ID: <20241008083756.72829-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Since the addition of the MSR_AMD64_DR{1-4}_ADDRESS_MASK MSRs to the
msrs_to_send array, the calculations for the maximum number of MSRs that
the hypercall can handle is off by 4.

Remove the addition of 4 to the maximum number of MSRs that
XEN_DOMCTL_{set,get}_vcpu_msrs supports, as those are already part of the
array.

A further adjustment could be to subtract 4 from the maximum size if the DBEXT
CPUID feature is not exposed to the guest, but guest_{rd,wr}msr() will already
perform that check when fetching or loading the MSRs.  The maximum array is
used to indicate the caller of the buffer it needs to allocate in the get case,
and as an early input sanitation in the set case, using a buffer size slightly
lager than required is not an issue.

Fixes: 86d47adcd3c4 ('x86/msr: Handle MSR_AMD64_DR{0-3}_ADDRESS_MASK in the new MSR infrastructure')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
I'm tempted to just get rid of nr_msrs and use ARRAY_SIZE(msrs_to_send)
instead, but refrained from doing it.
---
 xen/arch/x86/domctl.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index f76de5be9437..37ebcb3abbc7 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1088,10 +1088,6 @@ long arch_do_domctl(
              !is_pv_domain(d) )
             break;
 
-        /* Count maximum number of optional msrs. */
-        if ( boot_cpu_has(X86_FEATURE_DBEXT) )
-            nr_msrs += 4;
-
         if ( domctl->cmd == XEN_DOMCTL_get_vcpu_msrs )
         {
             ret = 0; copyback = true;
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:39:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:39:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812815.1225575 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5kK-0003Og-0a; Tue, 08 Oct 2024 08:39:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812815.1225575; Tue, 08 Oct 2024 08:39: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 1sy5kJ-0003OZ-To; Tue, 08 Oct 2024 08:39:07 +0000
Received: by outflank-mailman (input) for mailman id 812815;
 Tue, 08 Oct 2024 08:39: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=/rYz=RE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sy5kJ-00027a-7s
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:39:07 +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 c7ae4b40-8550-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 10:39:06 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a93c1cc74fdso889699466b.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 01:39:06 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994d5fbef4sm301560066b.166.2024.10.08.01.39.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 01:39:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c7ae4b40-8550-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728376746; x=1728981546; 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=XH4xpZLptCZ6C2dJ+MYc8/xilU4dhsL/mNlDZC0yzNk=;
        b=kSgi0ZIQqibYtdaZZlOL8sNO1DIH5psPg13h+LVk3knD59zNI0KVaO+Mjm0EV8LX46
         QZTKPiLr1iGWRdvqW7YeNMBPmd6yfaTI0iyoZ2EXx0hSBAClOD7PGwrX6G1Q9Lw6X0VM
         Bh3ue62A/o7d6cZnYpN3ZW5bilf/upNGPvfq0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728376746; x=1728981546;
        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=XH4xpZLptCZ6C2dJ+MYc8/xilU4dhsL/mNlDZC0yzNk=;
        b=o+bf1ClzW5ROpwmRuk9iJXSrneiB/6PGd0nv8tdp4e6rgAWnbOc7jI6WA9puaMhSzd
         v+pu06NnuKTXk+g1XsvvKW8tjC5nL4NVCKLZFoOlb98kYSE+bskSpCg0HJkDZIvbJCpS
         e0U+qmfnLiCTlfBzMBSeUlEyc7pkbIa7ySZPnbc8+l3s+jHw3tfBNLIMvmQ9Hp+qfP3a
         PH34rTB8JDSicANOHMHEDnFF0IJ1dXAcuxLSKhGI9nrbL9nnHFvoZKBu0XxjQsU9V5O4
         3Pjd+kuDus1IMeri6HJPexVnpJzZ/xOydO+Rg/dqMtrQ/sU+qFXOHGjplPV+Lljs0RXr
         0oOg==
X-Gm-Message-State: AOJu0YzlgsMcEH2J7zd0IuRa5+hUkHjRYYYycNUEVu7OrLa/b4mTNa2w
	Ym+KOrvDM3jR9H3UdEr3xpzzMkYmuL3qYp87oJWbckmM4pWZh7xDpgGGbSBLolY37j1VF7X0xH8
	8
X-Google-Smtp-Source: AGHT+IEiTqV0Z7Wc62OgQfur6LtB6ahmdwOUDQuXTFad+6bufrugr/W2oDUY0dDzNfEND/ix/rixlQ==
X-Received: by 2002:a17:907:6095:b0:a99:46ff:f4e6 with SMTP id a640c23a62f3a-a9947000935mr927692166b.61.1728376745825;
        Tue, 08 Oct 2024 01:39:05 -0700 (PDT)
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>
Subject: [PATCH v2] x86/msr: add log messages to MSR state load error paths
Date: Tue,  8 Oct 2024 10:39:01 +0200
Message-ID: <20241008083901.72850-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Some error paths in the MSR state loading logic don't contain error messages,
which makes debugging them quite hard without adding extra patches to print the
information.

Add two new log messages to the MSR state load path that print information
about the entry that failed to load, for both PV and HVM.

While there also adjust XEN_DOMCTL_set_vcpu_msrs to return -ENXIO in case the
MSR is unhandled or can't be loaded, so it matches the error code used by HVM
MSR loading (and it's less ambiguous than -EINVAL).

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v1:
 - Add messages to PV MSR loading.
 - Return -ENXIO from PV loading path also.
 - Do not print the return code from guest_wrmsr(), it's not specially helpful
   given the current logic, as it will always be X86EMUL_EXCEPTION in case of
   failure.
---
 xen/arch/x86/domctl.c  | 8 ++++++++
 xen/arch/x86/hvm/hvm.c | 7 +++++++
 2 files changed, 15 insertions(+)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 96d816cf1a7d..f76de5be9437 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1166,6 +1166,7 @@ long arch_do_domctl(
                 if ( msr.reserved )
                     break;
 
+                ret = -ENXIO;
                 switch ( msr.index )
                 {
                 case MSR_SPEC_CTRL:
@@ -1174,9 +1175,16 @@ long arch_do_domctl(
                 case MSR_AMD64_DR0_ADDRESS_MASK:
                 case MSR_AMD64_DR1_ADDRESS_MASK ... MSR_AMD64_DR3_ADDRESS_MASK:
                     if ( guest_wrmsr(v, msr.index, msr.value) != X86EMUL_OKAY )
+                    {
+                        printk(XENLOG_G_ERR
+                               "%pv load MSR %#x with value %#lx failed\n",
+                               v, msr.index, msr.value);
                         break;
+                    }
                     continue;
                 }
+                printk(XENLOG_G_ERR "%pv attempted load of unhandled MSR %#x\n",
+                       v, msr.index);
                 break;
             }
 
diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 69a25571db8d..200f0a414138 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1598,10 +1598,17 @@ static int cf_check hvm_load_cpu_msrs(struct domain *d, hvm_domain_context_t *h)
             rc = guest_wrmsr(v, ctxt->msr[i].index, ctxt->msr[i].val);
 
             if ( rc != X86EMUL_OKAY )
+            {
+                printk(XENLOG_G_ERR
+                       "HVM %pv load MSR %#x with value %#lx failed\n",
+                       v, ctxt->msr[i].index, ctxt->msr[i].val);
                 return -ENXIO;
+            }
             break;
 
         default:
+            printk(XENLOG_G_ERR "HVM %pv attempted load of unhandled MSR %#x\n",
+                   v, ctxt->msr[i].index);
             return -ENXIO;
         }
     }
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:42:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:42:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812823.1225584 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5nE-0004yL-EY; Tue, 08 Oct 2024 08:42:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812823.1225584; Tue, 08 Oct 2024 08:42: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 1sy5nE-0004yE-BM; Tue, 08 Oct 2024 08:42:08 +0000
Received: by outflank-mailman (input) for mailman id 812823;
 Tue, 08 Oct 2024 08:42: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy5nD-0004xD-3P
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:42:07 +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 32bf5ebf-8551-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 10:42:06 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c42f406e29so7096776a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 01:42:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9935ee4594sm453864466b.189.2024.10.08.01.42.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 01:42:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 32bf5ebf-8551-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728376926; x=1728981726; 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=xWAQuuPY3Y+UKj3p0PpqioXI6PMXZagE2PwXUZ/T8mQ=;
        b=NsFH+kQsPbXUuOXXqmfnEB2cPz4lil/KCvrXaN4ChNeVHayyEiR3/ZZJ8uYC0pQ9ts
         0dUFH/iKHyHyTPtIlQzZZOJt7fTKBrwTl4mZZ3LZaztEvNBsGlbdci43Yypkw8fCwY6g
         d8gbyskD24E+wAJmDJu6wRm5YRJIzTzHf2KKioJbBT2CPZLBYSmhZeRlesXV9mn6Jpda
         cei+jMMUY6MtYPx/HQOkZZvkGVwwcNfggAEXZGNuRC+o17X0CEz7p+5jw1sU7ClbhgKf
         II6oDAttNooAlpfUfAxSIzUPPNmHGI2BNCVg1w7agjOFqvRLVV3PbqQb7dZ8YM1G+S8q
         4zAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728376926; x=1728981726;
        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=xWAQuuPY3Y+UKj3p0PpqioXI6PMXZagE2PwXUZ/T8mQ=;
        b=Jd+r8GRgIyy+MRcR0jt6lHaHcmRoo1GQeiYZwZC1PorirRv4Y7LEpVf7BNKlorG2tT
         T4pDLfwmHNHy2cq7b21+ZPEhqjWsQK7uh241BdVbuIoOISDA06LAjztY34WfYxpyO1sR
         mI9i9fygMj9veDJRx4sfx30OA9GhVPBiYKhFK5PACkYBj8b4IQIxCyEdI0uBRl/jv/JN
         Qf880zaEBcaoxl06dal3IHtzKRWJNo3G0F/VZFzcdTXGWDDd75Ajvrp4VvqAxMf5UGlQ
         GK8M21XT1lGBPM1cDpNs1MUnGkvWC8dGE6gP6HPB54VvwyvOZ1OTp8oaR2CYKypFjeqx
         eKZw==
X-Forwarded-Encrypted: i=1; AJvYcCVvOGEsZHPmIfXBFphSfGp+GVKiK0SJhE6pzZRMghQYSWkvpi5D2NUZQ+g3qrsqF4c0l2/FmgPM6cQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy81OXA3kKedqujvhrL+sDYOxMsPGQWlbVKcg9HyP86bNpq8ctW
	eG9pRJQ9Y3E+fRhLAMez0NNfwR/j8jilTk43U7UVI1dACS4KonIpgFLNfgdoJRoeJBH1xuvPusI
	=
X-Google-Smtp-Source: AGHT+IHfc+jN9E6FOcW4F6hb05kYzApUrmg9nbK6IAr2e+5LHC3B333zcu5WC0sABjIWSEZ+vuhT3A==
X-Received: by 2002:a17:907:7244:b0:a99:36e8:c353 with SMTP id a640c23a62f3a-a9936e8c51bmr1145427466b.56.1728376925753;
        Tue, 08 Oct 2024 01:42:05 -0700 (PDT)
Message-ID: <0b34d746-cc7c-4db0-96c4-44ae3d6c6172@suse.com>
Date: Tue, 8 Oct 2024 10:42:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/domctl: fix maximum number of MSRs in
 XEN_DOMCTL_{get,set}_vcpu_msrs
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20241008083756.72829-1-roger.pau@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: <20241008083756.72829-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.10.2024 10:37, Roger Pau Monne wrote:
> Since the addition of the MSR_AMD64_DR{1-4}_ADDRESS_MASK MSRs to the
> msrs_to_send array, the calculations for the maximum number of MSRs that
> the hypercall can handle is off by 4.
> 
> Remove the addition of 4 to the maximum number of MSRs that
> XEN_DOMCTL_{set,get}_vcpu_msrs supports, as those are already part of the
> array.
> 
> A further adjustment could be to subtract 4 from the maximum size if the DBEXT
> CPUID feature is not exposed to the guest, but guest_{rd,wr}msr() will already
> perform that check when fetching or loading the MSRs.  The maximum array is
> used to indicate the caller of the buffer it needs to allocate in the get case,
> and as an early input sanitation in the set case, using a buffer size slightly
> lager than required is not an issue.
> 
> Fixes: 86d47adcd3c4 ('x86/msr: Handle MSR_AMD64_DR{0-3}_ADDRESS_MASK in the new MSR infrastructure')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

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

> ---
> I'm tempted to just get rid of nr_msrs and use ARRAY_SIZE(msrs_to_send)
> instead, but refrained from doing it.

I think the variable would indeed better go away now. Yet that doesn't
necessarily need to happen right here.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:42:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:42:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812824.1225594 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5nT-0005JS-Lr; Tue, 08 Oct 2024 08:42:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812824.1225594; Tue, 08 Oct 2024 08:42: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 1sy5nT-0005JL-JA; Tue, 08 Oct 2024 08:42:23 +0000
Received: by outflank-mailman (input) for mailman id 812824;
 Tue, 08 Oct 2024 08:42: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=TTuH=RE=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sy5nR-0004xD-Ut
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:42:21 +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 3ba6a7c1-8551-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 10:42:21 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c5b954c359so6176113a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 01:42:21 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e784012sm478647966b.109.2024.10.08.01.42.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 01:42:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3ba6a7c1-8551-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728376940; x=1728981740; 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=vpXWYdq1849X0Tk2QXIfCmOFvI7h/tXkYDx2ovlXJWA=;
        b=Sqi57o6Gv7LKofPAEc1Z7xMl/V4KGxC+1LxB8DfWtRbgwhEb26eTrQNgf+3b5lqC4R
         a+wOpD6WWAUEpcGi8HFq2L7JgAZJNkAUjiWHrTGHEZVlZmvUKx5LFel5TTO4OwLT1PVs
         8MAKNDnytti/tS84jqCeBYiBu+D9AIWJ7m1UQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728376940; x=1728981740;
        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=vpXWYdq1849X0Tk2QXIfCmOFvI7h/tXkYDx2ovlXJWA=;
        b=XXUUNJjpfg4+Ql1ZnoDJ3eHDcyHo+nIkEecZQ6SOCrM7dE4Jl19hChaSROFAFdrlbv
         M0u295DNNxPH3zsbAe8NbvLMtSWTHUrZ7/UPIO//JWiIT0qKDpuWtzsUj3N066vT1Zya
         Nz+Sx1YLKqLFHJRoX4UveyGqi1qYQBE9OlobhrGD5BxbrIk+zqPyP9P9TQV9MBP7MSEf
         5RzU+rQGw0dHKciRpRq8aTNfBqsJMmJGeWz/OPypNGl6zfNN9b15LjCMT3wj7bCzn3yy
         4H2CPQOuDF2PKFJhqfjCL7lCmZkxg3iM7stS9CZK9CKyLHMxODSU7Eyt6kfjdtGHVwwk
         Q4WA==
X-Gm-Message-State: AOJu0YyZOpYcijD6GQJ0zn+/qzK/5JRw1qcGAWTjrp+15VgirPJFWlKO
	pBKx98inIhCKcHDFSFYswk+wqeDMdmeiy5r7Esxabqu2cYxQ02aKhjTOtxRVPk0Go8DY+92T/YY
	w
X-Google-Smtp-Source: AGHT+IFRkwahzJHXTsFCJeQ5jZuq7EfZBvMwgXTPOofdTv89NQ4RuznEoEO+xzanrMjlq7Lbm645sg==
X-Received: by 2002:a17:907:1ca9:b0:a87:31c:c6c4 with SMTP id a640c23a62f3a-a991bd497d1mr1368907366b.24.1728376940413;
        Tue, 08 Oct 2024 01:42:20 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] x86: Use standard C types in multiboot2.h header
Date: Tue,  8 Oct 2024 09:41:57 +0100
Message-Id: <20241008084157.35652-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The header already uses standard types for many fields, extend
their usage.
No functional change.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/include/xen/multiboot2.h | 62 ++++++++++++++++++------------------
 1 file changed, 31 insertions(+), 31 deletions(-)

diff --git a/xen/include/xen/multiboot2.h b/xen/include/xen/multiboot2.h
index f792040205..7cda620eec 100644
--- a/xen/include/xen/multiboot2.h
+++ b/xen/include/xen/multiboot2.h
@@ -115,46 +115,46 @@
 
 #ifndef __ASSEMBLY__
 typedef struct {
-    u32 total_size;
-    u32 reserved;
+    uint32_t total_size;
+    uint32_t reserved;
 } multiboot2_fixed_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
+    uint32_t type;
+    uint32_t size;
 } multiboot2_tag_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
-    u32 load_base_addr;
+    uint32_t type;
+    uint32_t size;
+    uint32_t load_base_addr;
 } multiboot2_tag_load_base_addr_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
+    uint32_t type;
+    uint32_t size;
     char string[];
 } multiboot2_tag_string_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
-    u32 mem_lower;
-    u32 mem_upper;
+    uint32_t type;
+    uint32_t size;
+    uint32_t mem_lower;
+    uint32_t mem_upper;
 } multiboot2_tag_basic_meminfo_t;
 
 typedef struct {
-    u64 addr;
-    u64 len;
-    u32 type;
-    u32 zero;
+    uint64_t addr;
+    uint64_t len;
+    uint32_t type;
+    uint32_t zero;
 } multiboot2_memory_map_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
-    u32 entry_size;
-    u32 entry_version;
+    uint32_t type;
+    uint32_t size;
+    uint32_t entry_size;
+    uint32_t entry_version;
     multiboot2_memory_map_t entries[];
 } multiboot2_tag_mmap_t;
 
@@ -212,22 +212,22 @@ typedef struct
 } multiboot2_tag_framebuffer_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
-    u64 pointer;
+    uint32_t type;
+    uint32_t size;
+    uint64_t pointer;
 } multiboot2_tag_efi64_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
-    u64 pointer;
+    uint32_t type;
+    uint32_t size;
+    uint64_t pointer;
 } multiboot2_tag_efi64_ih_t;
 
 typedef struct {
-    u32 type;
-    u32 size;
-    u32 mod_start;
-    u32 mod_end;
+    uint32_t type;
+    uint32_t size;
+    uint32_t mod_start;
+    uint32_t mod_end;
     char cmdline[];
 } multiboot2_tag_module_t;
 #endif /* __ASSEMBLY__ */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 08:43:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 08:43:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812832.1225605 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy5oQ-0005zM-0l; Tue, 08 Oct 2024 08:43:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812832.1225605; Tue, 08 Oct 2024 08: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 1sy5oP-0005zF-Tx; Tue, 08 Oct 2024 08:43:21 +0000
Received: by outflank-mailman (input) for mailman id 812832;
 Tue, 08 Oct 2024 08: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy5oO-0005z3-Pu
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 08:43: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 5eaf4579-8551-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 10:43:19 +0200 (CEST)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fad6de2590so79054041fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 01:43:19 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994cea5a6fsm306886766b.224.2024.10.08.01.43.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 01:43:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5eaf4579-8551-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728376999; x=1728981799; 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=iRkMXWzx8WVYIbynDLk0om8TiVsnT5FyHke2/Vuz8qE=;
        b=Cb+fNF1NdkArYhL3Jap+DAQnRJ00DYvCNsQVLG5DaWy8xrtXVvffq+PTdT96G0wrvF
         2GRApDiMdcHLdXZ1AFp90VhRTZ0ZKY2oa6sY6BwESdGOP0UpCjJX/RECm5S3J6FZFOVT
         +29cmk7ftsmb0mfVGfy6TJIntXHOq/ABObNvjrhFHGPw4NbyoiQThsBV0x8NgE6FXLti
         ZxOZWnmho8mI6pVJSc4rv3I4B91KYbMNVMMuMhwvVSiRo+w227z8jfE9WhqD+WmXDsuC
         fLrddfjyDUCbno/vBbGyOZJKALm8Ssiwx27dd7ZFwiH1tt69Z9bHdEHEChVwNq45FYsS
         iUjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728376999; x=1728981799;
        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=iRkMXWzx8WVYIbynDLk0om8TiVsnT5FyHke2/Vuz8qE=;
        b=o97qNaftqhVFGf/t0iJV+23mjdlf3dOY4jaon9IpjWsYV9GU5srq4gOsyzNyrYVcO6
         Ys4YUDORmXU7rew+OVWJikum1HvpaTEkS3NZmus4wT+ukjE01ZtNpqNYYNw0zA25pqSz
         YavszQPmBY5YJIGAzfeua++Zm2N6+T7adNK+jdrUeXPQjQmGpDafV4iukbaClBXaVrKP
         CrNPPVo2oLrpd27Y4jjMMspYiZmphtNPrQeF84n1A0mLQ+Hee6cvkBhBaz/LPIRjBRRr
         YUmgU6BE6gcIVF6auxlqpGP14VziYRyWVXcFplxicwOvf30SXlD4h1wqrk3+X7nbC5gF
         DqKw==
X-Forwarded-Encrypted: i=1; AJvYcCW/GuvIfzBouZhPvCO1S/BO8h6+yoVq2mvPQ0SShBwLPNT4gqfU1i2R3EnqQqKHjQL+2WYbbzp9gOw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywvl0bvPoLV9PvGJB20XD1uhv+w4tQXvuuelmTxMZ5q1UzQCvwX
	ky6vpiMO6aBUvwFzbtS76IHkyUixKu542sn6AzWzlcHSdKfLMB2S80ZPMRfzaw==
X-Google-Smtp-Source: AGHT+IEQAJmdaC2rPkT+9g8bVlzz84hdx5B29D1nmR2bNqvZhEdl7M5jd2yE/Pjp9bl+TVjY6jBhpg==
X-Received: by 2002:a2e:be85:0:b0:2fa:d7ea:a219 with SMTP id 38308e7fff4ca-2faf3d79182mr96385981fa.37.1728376999382;
        Tue, 08 Oct 2024 01:43:19 -0700 (PDT)
Message-ID: <34143892-d278-403b-98e5-127b52f1c446@suse.com>
Date: Tue, 8 Oct 2024 10:43:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: Use standard C types in multiboot2.h header
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241008084157.35652-1-frediano.ziglio@cloud.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: <20241008084157.35652-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.10.2024 10:41, Frediano Ziglio wrote:
> The header already uses standard types for many fields, extend
> their usage.
> No functional change.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:00:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:00:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812896.1225631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy64x-0007kl-Md; Tue, 08 Oct 2024 09:00:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812896.1225631; Tue, 08 Oct 2024 09:00: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 1sy64x-0007ke-Jh; Tue, 08 Oct 2024 09:00:27 +0000
Received: by outflank-mailman (input) for mailman id 812896;
 Tue, 08 Oct 2024 09:00: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=/rYz=RE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sy64w-0007kY-Qc
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 09:00:26 +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 c12aeeea-8553-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 11:00:24 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a995ec65c35so258031966b.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 02:00:24 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9950077d1asm277538866b.57.2024.10.08.02.00.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 02:00:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c12aeeea-8553-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728378023; x=1728982823; 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=qXt9TcgzVC1/+dbwowjKde6qB7q/2kyxwWW4B7x43KI=;
        b=F3Bv/ttZAmSG5Hic6OrYcowpbtqOM5UK5aLoDkajaEyP95v4jVpQxo7O/WyOGzqQUm
         yzTHznn6rxmdSaAJenalf4InYbJ3ei/j2kmSpPSuXPd9Hcx88jbQmZdFAUdNjmJfhfbT
         jgS7KeRS7KY9gTBk4M1CI1eaT2XfXq2g7J6wI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728378023; x=1728982823;
        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=qXt9TcgzVC1/+dbwowjKde6qB7q/2kyxwWW4B7x43KI=;
        b=cF1AHplZ5r+bMJK2QJJu+/FKIe3HxvfsLI2H+VS3Jq3JwxKtocRcEuGv659KeI3mLN
         GW8abYvB9g8iZ+kEWhnwzeupZdHDumniRJEaJg0Ih1KLZrN5oigXJxQken28Uqqx01fB
         hxx2Au7WENVDpgsc3eaSKNrEnQ+i/6gidRHK3GzmBs+b1vFuSa86SZD/ZHpcvup6voRs
         e6GQTG71chYfSqzHLCxYMWuJZIQg3kI+ZwGUJsCiFekFBk3Wz/67ujN/0yPWPfFQAvbK
         aedpQ+6t55vriy0kTbIh4eJuruMJkFa9Q27iLDBEW1C31OgSxEgFAOWT/dgKxIIly+gF
         gQ5g==
X-Gm-Message-State: AOJu0YxeDVfjaxB2RAPRVGum4R0ftKge9Mw59N2YmCcdI/behs0mZr8Y
	iEzwugbfBcSFVscNBQklC7jpx3XgLShg+ZvFbX6QBjM9IImOyRbx/qZC15SWn3NBFtNDlJ7sZwL
	L
X-Google-Smtp-Source: AGHT+IErC76okJMwfJUh38lSIg1K0pHNBMbuYMSsK7ChmoZSRiMi0FR8zGn0npimPpLuQuypugOH0g==
X-Received: by 2002:a17:907:6d25:b0:a99:5c07:9f5b with SMTP id a640c23a62f3a-a996785140cmr246902566b.6.1728378023379;
        Tue, 08 Oct 2024 02:00:23 -0700 (PDT)
Date: Tue, 8 Oct 2024 11:00:22 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v2] x86/msr: add log messages to MSR state load error
 paths
Message-ID: <ZwT0psBW-yC_KFKQ@macbook.local>
References: <20241008083756.72829-1-roger.pau@citrix.com>
 <20241008083756.72829-2-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20241008083756.72829-2-roger.pau@citrix.com>

I've wrongly send this together with "x86/domctl: fix maximum number
of MSRs in XEN_DOMCTL_{get,set}_vcpu_msrs".  There's a separate email
with just "[PATCH v2] x86/msr: add log messages to MSR state load
error paths".  Both have the same contents.

Roger.


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:06:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812904.1225641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy6Af-0008PE-DP; Tue, 08 Oct 2024 09:06:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812904.1225641; Tue, 08 Oct 2024 09:06: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 1sy6Af-0008P7-9i; Tue, 08 Oct 2024 09:06:21 +0000
Received: by outflank-mailman (input) for mailman id 812904;
 Tue, 08 Oct 2024 09:06: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 1sy6Ae-0008Ox-0i; Tue, 08 Oct 2024 09:06: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 1sy6Ad-0006CQ-S2; Tue, 08 Oct 2024 09:06: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 1sy6Ad-0007mO-Ed; Tue, 08 Oct 2024 09:06:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sy6Ad-0003Jr-EB; Tue, 08 Oct 2024 09:06: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=CGMg6CUyHA3TdjVPfdQVN9PrdcEYu5QPnWBqwK6Op1s=; b=R5JmnvuXgr1JaHq896ud2MEkYU
	eIRUGPe+7roahE+jiHhgKn09ZZdqefE4fuu6nQVVZPssZDF2o3MNGWiGmgrDB6+TnTRXLiXwOvtw1
	0vG8xCj6Sy7wHXPnQaadxR+1+tcOkP/yBrLjihwkAooBbHx87rrDvfyU5w2prxbom+Y0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188002-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188002: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-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: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-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-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-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-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-amd64-amd64-libvirt-qcow2: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-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=87d6aab2389e5ce0197d8257d5f8ee965a67c4cd
X-Osstest-Versions-That:
    linux=8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 09:06:19 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-examine      8 reboot              fail pass in 188010-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187997
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187997
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187997
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187997
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187997
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187997
 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-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-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-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-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-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-amd64-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                87d6aab2389e5ce0197d8257d5f8ee965a67c4cd
baseline version:
 linux                8cf0b93919e13d1e8d4466eb4080a4c4d9d66d7b

Last test of basis   187997  2024-10-07 07:52:48 Z    1 days
Testing same since   188002  2024-10-07 20:14:37 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Haoran Zhang <wh1sper@zju.edu.cn>
  Jason Wang <jasowang@redhat.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Marco Elver <elver@google.com>
  Michael S. Tsirkin <mst@redhat.com>
  Mike Christie <michael.christie@oracle.com>
  Srujana Challa <schalla@marvell.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                     fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   8cf0b93919e1..87d6aab2389e  87d6aab2389e5ce0197d8257d5f8ee965a67c4cd -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:18:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:18:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812914.1225651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy6MR-0007xR-E9; Tue, 08 Oct 2024 09:18:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812914.1225651; Tue, 08 Oct 2024 09: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 1sy6MR-0007xK-AZ; Tue, 08 Oct 2024 09:18:31 +0000
Received: by outflank-mailman (input) for mailman id 812914;
 Tue, 08 Oct 2024 09:18: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=CgLP=RE=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sy6MQ-0007xD-4T
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 09:18:30 +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 47a048d8-8556-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 11:18:28 +0200 (CEST)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-4305413aec9so2943385e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 02:18:28 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-42f86b44380sm121058075e9.34.2024.10.08.02.18.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 02:18:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47a048d8-8556-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728379108; x=1728983908; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ZlnU4XgnFcBmUh04YYKcHcjGGK3C6aHa7qrv7S+FCDM=;
        b=fe1YroYLpwK4v+BJAS/AFs3EhH8H273o44uUBGA+YLMCx98pAVbEICmMJ63SI6fXZr
         Xq8hvD917nyaGLx5toLOCVU6dSSjlZEi9HmpTXtXxvGvR/QE8On/64RrmHA5XX4W5zqZ
         0g31+sqTlSWUqrmGuP6uV2Jkd7jRY703dhWqgz/9BxQqLZWU9NzGDDaosra8P2y0XOFP
         btZRVdXiUuHNwK9FfBhmQi1LNVCjbp7Jmtp2BWfssR2cIgr19Sim3m5totHkMNwBHeeZ
         Jfh7szqtWxoDl33NI9RcPAawG35G37cwDMtr7T7al6sOrUtRal786FCVdpXfWPU96G35
         27eQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728379108; x=1728983908;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=ZlnU4XgnFcBmUh04YYKcHcjGGK3C6aHa7qrv7S+FCDM=;
        b=ttJGgX8A2U3XW3rLgI5wwEqO0oF5Ixk4EQfvIOKSBxvCOPGcTgI5Auvo2PDSImx6HA
         841wsYKvHZ0QrkPdj8p7QTZF372OTw2syD1E8TqODdM4egTAeJdswrtSqv+gATs0IXUi
         qOT5sKKOeIeEk6+2Q9CYHS8GewTO8HMAmCX08IOl1dFSsvNKFM3IwRAMe9zZ/EiY582s
         wuP3xKhlFOR+WlWQR815FefV0wHB9as7xi9hzvqD8cRAhEbV7TQjwYpt4s63463KRyZu
         LFwfBjFfiNE/n7tnri/zFBgYmbJKQXGfhI9neUkQzF7FywAYIo8iH8IAA9AqVoaUz4HS
         4sfw==
X-Forwarded-Encrypted: i=1; AJvYcCW7fOiXFlAxojheFv8SY3O28fUn920HP0aKt3LzNBG2avvQEqdnky24rAAwDknQdheU5fJBjHjLKnI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxaYVuAvHCcSqDzJQ3YAoKSlSZimc18WbVCVJWYykpYXcG6WwSS
	lPizznkyPGXYM6y6Ej/G45J3FY2kOG4eMU4E0G1aT7NvNS9p8UkunwSVA1vp6wQ=
X-Google-Smtp-Source: AGHT+IEvwmWJgw9Lo/VaTgMlZ8apwFiDbaYv77mTkjbIWNeHOMQDM7k/jgV2kqDgK8SISNTwpChV3A==
X-Received: by 2002:a05:600c:1da8:b0:426:5fbc:f319 with SMTP id 5b1f17b1804b1-42f85aef6edmr111732375e9.33.1728379108180;
        Tue, 08 Oct 2024 02:18:28 -0700 (PDT)
Message-ID: <5b4233fc-ea12-4b19-bff9-dfb6c6c43832@suse.com>
Date: Tue, 8 Oct 2024 11:18:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/4] stubdom: explcitly add libc and lwip Mini-OS config
 options
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 xen-devel@lists.xenproject.org, Daniel De Graaf <dgdegra@tycho.nsa.gov>,
 Quan Xu <quan.xu0@gmail.com>
References: <20241005151548.29184-1-jgross@suse.com>
 <20241005151548.29184-3-jgross@suse.com> <ZwRXvG4a2Jtgba2s@begin>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <ZwRXvG4a2Jtgba2s@begin>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------Z2i7HuoZA5rLOyG7aZj0MOiO"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Z2i7HuoZA5rLOyG7aZj0MOiO
Content-Type: multipart/mixed; boundary="------------50wf0jqV05phGBcWWWfdT1eP";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 xen-devel@lists.xenproject.org, Daniel De Graaf <dgdegra@tycho.nsa.gov>,
 Quan Xu <quan.xu0@gmail.com>
Message-ID: <5b4233fc-ea12-4b19-bff9-dfb6c6c43832@suse.com>
Subject: Re: [PATCH 2/4] stubdom: explcitly add libc and lwip Mini-OS config
 options
References: <20241005151548.29184-1-jgross@suse.com>
 <20241005151548.29184-3-jgross@suse.com> <ZwRXvG4a2Jtgba2s@begin>
In-Reply-To: <ZwRXvG4a2Jtgba2s@begin>

--------------50wf0jqV05phGBcWWWfdT1eP
Content-Type: multipart/mixed; boundary="------------Ol4E1B5bS0KZhH0YJoQlqj2I"

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

T24gMDcuMTAuMjQgMjM6NTAsIFNhbXVlbCBUaGliYXVsdCB3cm90ZToNCj4+IGRpZmYgLS1n
aXQgYS9zdHViZG9tL2dydWIvbWluaW9zLmNmZyBiL3N0dWJkb20vZ3J1Yi9taW5pb3MuY2Zn
DQo+PiBpbmRleCA4ZGY0OTA5MmNkLi41MTQ1YjM1N2UwIDEwMDY0NA0KPj4gLS0tIGEvc3R1
YmRvbS9ncnViL21pbmlvcy5jZmcNCj4+ICsrKyBiL3N0dWJkb20vZ3J1Yi9taW5pb3MuY2Zn
DQo+PiBAQCAtMSwzICsxLDQgQEANCj4+IC1DT05GSUdfU1RBUlRfTkVUV09SSz1uDQo+PiAr
Q09ORklHX0xJQkM9eQ0KPj4gK0NPTkZJR19MV0lQPW4NCj4+ICAgQ09ORklHX1NQQVJTRV9C
U1M9bg0KPj4gICBDT05GSUdfVFBNRlJPTlQ9eQ0KPiANCj4gR3J1YiBkb2VzIHVzZSBMV0lQ
LCBhbmQganVzdCBkb2VzIG5vdCB3YW50IG1pbmktb3MgdG8gc3RhcnQgbmV0d29yaw0KPiBh
dXRvbWF0aWNhbGx5LCBncnViIGRvZXMgc28gYnkgaXRzZWxmIGZyb20gbWluaW9zX3Byb2Jl
Lg0KDQpBcmUgeW91IHN1cmU/IExXSVBESVIgaXNuJ3QgYmVpbmcgc2V0IGZvciBidWlsZGlu
ZyBncnViLXN0dWJkb20uIEhvdw0KZG9lcyB0aGlzIHdvcms/DQoNCg0KSnVlcmdlbg0K
--------------Ol4E1B5bS0KZhH0YJoQlqj2I
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------Ol4E1B5bS0KZhH0YJoQlqj2I--

--------------50wf0jqV05phGBcWWWfdT1eP--

--------------Z2i7HuoZA5rLOyG7aZj0MOiO
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/Ey8FAmcE+OIFAwAAAAAACgkQsN6d1ii/Ey9N
PggAkGedjuw2pjGpTMbqXdNZQI9vWiKd6N/kmc5JQnzUqMgrA7N4zNkhpz2LLfyvaYKXKpZLN5cZ
PqkBwFcq1odKu6xf0hqYO3Z5pY+dCcNv8X86o+psvwLmCMXNU4er3SL786fLQu7KaXUhjIseDrHi
lJGqKBQPpKmGXdsy4s3j3hfEElyefL1jFyRrP0JE0Ao17mwUWVo4NmQ0iIEYesKUqDi7yqE8EkQj
yw8G+anaggJMn5qL/XPeq+I+Z9FqWkuuw0+5TecgrKLW/PESYQ5TwJTv6v0bHSJoLf9m339skGA+
lf5jAPD2IVIgm9lv6s3Cr3ktIenL/qFlNSz0ZpoTAA==
=H/eP
-----END PGP SIGNATURE-----

--------------Z2i7HuoZA5rLOyG7aZj0MOiO--


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:22:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:22:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812922.1225661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy6Px-00013g-0g; Tue, 08 Oct 2024 09:22:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812922.1225661; Tue, 08 Oct 2024 09:22: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 1sy6Pw-00013Z-Tg; Tue, 08 Oct 2024 09:22:08 +0000
Received: by outflank-mailman (input) for mailman id 812922;
 Tue, 08 Oct 2024 09:22: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=95Tx=RE=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1sy6Pw-00013T-Kz
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 09:22:08 +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 c94eea49-8556-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 11:22:07 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 226CCA0522;
 Tue,  8 Oct 2024 11:22:06 +0200 (CEST)
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 b36NvorYlX62; Tue,  8 Oct 2024 11:22:06 +0200 (CEST)
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 C9945A051D;
 Tue,  8 Oct 2024 11:22:05 +0200 (CEST)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1sy6Pt-0000000ByQo-2P21; Tue, 08 Oct 2024 11:22:05 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c94eea49-8556-11ef-a0bc-8be0dac302b0
Date: Tue, 8 Oct 2024 11:22:05 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>
Subject: Re: [PATCH 2/4] stubdom: explcitly add libc and lwip Mini-OS config
 options
Message-ID: <ZwT5vdOPkcydf3hn@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	xen-devel@lists.xenproject.org,
	Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>
References: <20241005151548.29184-1-jgross@suse.com>
 <20241005151548.29184-3-jgross@suse.com>
 <ZwRXvG4a2Jtgba2s@begin>
 <5b4233fc-ea12-4b19-bff9-dfb6c6c43832@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <5b4233fc-ea12-4b19-bff9-dfb6c6c43832@suse.com>
Organization: I am not organized

Jürgen Groß, le mar. 08 oct. 2024 11:18:26 +0200, a ecrit:
> On 07.10.24 23:50, Samuel Thibault wrote:
> > > diff --git a/stubdom/grub/minios.cfg b/stubdom/grub/minios.cfg
> > > index 8df49092cd..5145b357e0 100644
> > > --- a/stubdom/grub/minios.cfg
> > > +++ b/stubdom/grub/minios.cfg
> > > @@ -1,3 +1,4 @@
> > > -CONFIG_START_NETWORK=n
> > > +CONFIG_LIBC=y
> > > +CONFIG_LWIP=n
> > >   CONFIG_SPARSE_BSS=n
> > >   CONFIG_TPMFRONT=y
> > 
> > Grub does use LWIP, and just does not want mini-os to start network
> > automatically, grub does so by itself from minios_probe.
> 
> Are you sure? LWIPDIR isn't being set for building grub-stubdom. How
> does this work?

Ah, sorry, grub implements tcp/ip itself indeed, so it's only netfront
that stubdom-grub needs.

Samuel


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:22:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:22:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812924.1225675 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy6Q4-0001Kg-Bl; Tue, 08 Oct 2024 09:22:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812924.1225675; Tue, 08 Oct 2024 09: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 1sy6Q4-0001KR-71; Tue, 08 Oct 2024 09:22:16 +0000
Received: by outflank-mailman (input) for mailman id 812924;
 Tue, 08 Oct 2024 09:22: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=CgLP=RE=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sy6Q3-0001JS-I3
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 09:22:15 +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 cd3f305f-8556-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 11:22:13 +0200 (CEST)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5c5cf26b95aso6992672a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 02:22:13 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7e2252sm478114266b.206.2024.10.08.02.22.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 02:22:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd3f305f-8556-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728379332; x=1728984132; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=bhbXjuXR22fmRf7h/7I3p8JRUfqayVs73J8eKiD20jg=;
        b=ZL/m+nJZzSoxP3ylH8DbOTTNnufZ1yBOnX3QbJtWqoxFfCft7mhpLsrW4Uvls8pBBF
         Atm4XEN4HLQEjZGskkIRG/XFC60EHRP9QKGkoXtnf5eT1hkRB7KDLnEJdtDW8ScwdaIT
         nPDNIxhFd+pEFj1WCOf59B37FfJVI/7fgEOW5zD2bzgToUrqLrCfrHhkdP7CVUuVCD6+
         AFrDtXoBHZlaLxzQ58QxC7UVYYPrqXFQWbuNF3B9sWaAKUY12vyGAjhP2mDBvITc8MRE
         guR3/TWsHco07b91G8/pLqu2e+X7JVioClUgq8C+AJGANHoRQqCdFgnevbPd9leJzNaV
         ByCA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728379332; x=1728984132;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=bhbXjuXR22fmRf7h/7I3p8JRUfqayVs73J8eKiD20jg=;
        b=Mu/KL6qwX057BrUZ9qD/iVz0awx+TDUBK2RIQT7FjNjkUF07nAHxp3ymRg7cuJAqJm
         Gs7D9AZ1nfphe+0UrbY5RS1aiHPcrc94Orosn3Ned+Ae4UW3u712MER6vMdIG3b991Kf
         Pj5sK3ojONaIxa8cmSWIyIHj1duv6nXTTHgiAXA6XRbblZhrmh6P4WzGStXBz52Bf8Ro
         kYmPqCGBG0S0pqSG1Kulc3nH+w5pAonQ/UTuIvWepzFVToh8CFNjRB/r0F2iYABXus0f
         56BmztOgrMJc3xZDAa6BnMItHt+iTAjohny318gWOlqCigC38uzKzpse3YSn2Tg87e9u
         oVLg==
X-Forwarded-Encrypted: i=1; AJvYcCWZQw6SQKhWu4UhVVrgwcAczMQ7nISfTMSilkc13CE334dl7zEtsuiyo8T7oi+TW8vP4wSHocKIXkU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxp3VVXqbONAu7vZgJlYcfZAIO31PzpOL5QPes3B62p6ei6sxBs
	gH0UyCSAODjtVyRRxxlhTrZbLLa9yY/FHojsR5XPbyC7NMjCyKe1KZd+8e6RRCoWYno5HNUEQPE
	Q
X-Google-Smtp-Source: AGHT+IFhDxyaEpBfTM81xWO+233JafMDwIBWB6HTrSG3DntYX0AomcK3taY938zwJEs3VGSXCviJoA==
X-Received: by 2002:a17:907:9410:b0:a99:745b:82aa with SMTP id a640c23a62f3a-a99745b84c6mr129930266b.54.1728379332376;
        Tue, 08 Oct 2024 02:22:12 -0700 (PDT)
Message-ID: <a5a3abe5-245c-47ec-b197-261f4a61ccac@suse.com>
Date: Tue, 8 Oct 2024 11:22:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH 2/2] drop CONFIG_XC support
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
References: <20241007103456.14946-1-jgross@suse.com>
 <20241007103456.14946-3-jgross@suse.com> <ZwRdCU20l8PUPQ-V@begin>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <ZwRdCU20l8PUPQ-V@begin>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------xTspKBEZryOy634QdTJpSbC2"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------xTspKBEZryOy634QdTJpSbC2
Content-Type: multipart/mixed; boundary="------------H0AneJI2sUflDMqFg6kReMTx";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Message-ID: <a5a3abe5-245c-47ec-b197-261f4a61ccac@suse.com>
Subject: Re: [MINI-OS PATCH 2/2] drop CONFIG_XC support
References: <20241007103456.14946-1-jgross@suse.com>
 <20241007103456.14946-3-jgross@suse.com> <ZwRdCU20l8PUPQ-V@begin>
In-Reply-To: <ZwRdCU20l8PUPQ-V@begin>

--------------H0AneJI2sUflDMqFg6kReMTx
Content-Type: multipart/mixed; boundary="------------q2CGJI5btKacIlYabtTcF5GI"

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

T24gMDguMTAuMjQgMDA6MTMsIFNhbXVlbCBUaGliYXVsdCB3cm90ZToNCj4gSnVlcmdlbiBH
cm9zcywgbGUgbHVuLiAwNyBvY3QuIDIwMjQgMTI6MzQ6NTYgKzAyMDAsIGEgZWNyaXQ6DQo+
PiBDT05GSUdfWEMgaXMgbm8gbG9uZ2VyIG5lZWRlZCB3aXRoIGluZGl2aWR1YWwgQ09ORklH
X0xJQlhFTiBzdXBwb3J0Lg0KPiANCj4gSSBkb24ndCByZWFsbHkgc2VlIHdoeSBpbiB0aGUg
cHJldmlvdXMgcGF0Y2ggeW91IGludHJvZHVjZWQNCj4gY29tcGF0aWJpbGl0eSBhbmQgaGVy
ZSB5b3UgcmVtb3ZlIGl0Pw0KDQpPcmlnaW5hbGx5IEkgbWVhbnQgdG8gc3BsaXQgdGhlIHNl
cmllcyBieSBzZW5kaW5nIHRoZSBmaXJzdCBwYXRjaCBhcyBhDQpzdGFuZGFsb25lIG9uZSBh
bmQgdGhlbiB0aGUgc2Vjb25kIGFmdGVyIHRoZSBYZW4gc2lkZSBwYXRjaGVzIHdlbnQgaW4u
DQoNCldoZW4gY2hhbmdpbmcgbXkgbWluZCBpbiB0aGlzIHJlZ2FyZCBJIHRob3VnaHQgZHJv
cHBpbmcgQ09ORklHX1hDIG1pZ2h0DQpiZSBjb250cm92ZXJzaWFsLCBzbyBJIGRlY2lkZWQg
dG8ga2VlcCB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZQ0KQ09ORklHX0xJQlhFTiBpdGVtcyBh
bmQgdGhlIGRyb3BwaW5nIG9mIENPTkZJR19YQyBzZXBhcmF0ZS4NCg0KSSBjYW4gbWVyZ2Ug
dGhlIHBhdGNoZXMgaWYgeW91IGxpa2UgdGhhdCBiZXR0ZXIuDQoNCg0KSnVlcmdlbg0K
--------------q2CGJI5btKacIlYabtTcF5GI
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------q2CGJI5btKacIlYabtTcF5GI--

--------------H0AneJI2sUflDMqFg6kReMTx--

--------------xTspKBEZryOy634QdTJpSbC2
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/Ey8FAmcE+cMFAwAAAAAACgkQsN6d1ii/Ey8g
uQf+IBpAeq+MQVp9ROy2eRAdKHEAjEtEdTvRvQfzqHO8vNKvDjuwWGgJKtB0d+Mnub6Kxx7158ya
o8J8p2ufNRT72IzALU7zMxCUg2jqpGEg20y7AEGIaAY1Ae2T1QAZdxelB5QQ88QFRC1vCvyVLzO6
Yjg6FCcyTLkk0OBIkaOmxzb0kPsGaVKsVPXYdu3hp59Yyq9AGePv2pp7U0jLAJCDtLAuEm3kN0vR
opd0JEEyIGypdHIArWjep+9s727CaQi0ZsHRsfO1V+Rf1i+IWdD0aRBbF8Mgql/gC358aG+2MDTh
xYRuNpOv7T+CMWw57lvqNDc1cn5H+ZNBtb0sQpte9Q==
=ih7I
-----END PGP SIGNATURE-----

--------------xTspKBEZryOy634QdTJpSbC2--


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:27:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:27:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812937.1225685 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy6VG-0005BM-Vc; Tue, 08 Oct 2024 09:27:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812937.1225685; Tue, 08 Oct 2024 09:27: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 1sy6VG-0005BF-RH; Tue, 08 Oct 2024 09:27:38 +0000
Received: by outflank-mailman (input) for mailman id 812937;
 Tue, 08 Oct 2024 09:27: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=95Tx=RE=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1sy6VF-0005B9-59
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 09:27:37 +0000
Received: from sonata.ens-lyon.org (sonata.ens-lyon.org [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8d160c27-8557-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 11:27:35 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 99451A0522;
 Tue,  8 Oct 2024 11:27:34 +0200 (CEST)
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 5CZnuJGKckHA; Tue,  8 Oct 2024 11:27:34 +0200 (CEST)
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 7E874A0507;
 Tue,  8 Oct 2024 11:27:34 +0200 (CEST)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1sy6VC-0000000CBdi-1H4u; Tue, 08 Oct 2024 11:27:34 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d160c27-8557-11ef-99a2-01e77a169b0f
Date: Tue, 8 Oct 2024 11:27:34 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>
Subject: Re: [PATCH 2/4] stubdom: explcitly add libc and lwip Mini-OS config
 options
Message-ID: <ZwT7Bvl4OXe3e_N2@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org,
	Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Quan Xu <quan.xu0@gmail.com>
References: <20241005151548.29184-1-jgross@suse.com>
 <20241005151548.29184-3-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20241005151548.29184-3-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le sam. 05 oct. 2024 17:15:46 +0200, a ecrit:
> Today the Mini-OS build systems derives libc and lwip config options
> from the stubdom and LWIPDIR make variables supplied by the Xen build
> system.
> 
> In order to prepare those being explicit Mini-OS config options, add
> them to the related stubdom Mini-OS config files.
> 
> While at it remove the CONFIG_START_NETWORK setting from config files
> disabling lwip, as CONFIG_START_NETWORK requires lwip for becoming
> effective.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  stubdom/c/minios.cfg           | 2 ++
>  stubdom/grub/minios.cfg        | 3 ++-
>  stubdom/ioemu-minios.cfg       | 2 ++
>  stubdom/vtpm/minios.cfg        | 3 ++-
>  stubdom/vtpmmgr/minios.cfg     | 3 ++-
>  stubdom/xenstore-minios.cfg    | 1 +
>  stubdom/xenstorepvh-minios.cfg | 1 +
>  7 files changed, 12 insertions(+), 3 deletions(-)
> 
> diff --git a/stubdom/c/minios.cfg b/stubdom/c/minios.cfg
> index e69de29bb2..56d65510cd 100644
> --- a/stubdom/c/minios.cfg
> +++ b/stubdom/c/minios.cfg
> @@ -0,0 +1,2 @@
> +CONFIG_LIBC=y
> +CONFIG_LWIP=y
> diff --git a/stubdom/grub/minios.cfg b/stubdom/grub/minios.cfg
> index 8df49092cd..5145b357e0 100644
> --- a/stubdom/grub/minios.cfg
> +++ b/stubdom/grub/minios.cfg
> @@ -1,3 +1,4 @@
> -CONFIG_START_NETWORK=n
> +CONFIG_LIBC=y
> +CONFIG_LWIP=n
>  CONFIG_SPARSE_BSS=n
>  CONFIG_TPMFRONT=y
> diff --git a/stubdom/ioemu-minios.cfg b/stubdom/ioemu-minios.cfg
> index a65baa3765..6153ae05f8 100644
> --- a/stubdom/ioemu-minios.cfg
> +++ b/stubdom/ioemu-minios.cfg
> @@ -1,3 +1,5 @@
> +CONFIG_LIBC=y
> +CONFIG_LWIP=y
>  CONFIG_START_NETWORK=n
>  CONFIG_QEMU_XS_ARGS=y
>  CONFIG_PCIFRONT=y
> diff --git a/stubdom/vtpm/minios.cfg b/stubdom/vtpm/minios.cfg
> index 31652ee4f2..22f66f1351 100644
> --- a/stubdom/vtpm/minios.cfg
> +++ b/stubdom/vtpm/minios.cfg
> @@ -1,7 +1,8 @@
> +CONFIG_LIBC=y
> +CONFIG_LWIP=n
>  CONFIG_TPMFRONT=y
>  CONFIG_TPM_TIS=n
>  CONFIG_TPMBACK=y
> -CONFIG_START_NETWORK=n
>  CONFIG_TEST=n
>  CONFIG_PCIFRONT=n
>  CONFIG_BLKFRONT=y
> diff --git a/stubdom/vtpmmgr/minios.cfg b/stubdom/vtpmmgr/minios.cfg
> index 3fb383d30f..a9f13a2fd2 100644
> --- a/stubdom/vtpmmgr/minios.cfg
> +++ b/stubdom/vtpmmgr/minios.cfg
> @@ -1,7 +1,8 @@
> +CONFIG_LIBC=y
> +CONFIG_LWIP=n
>  CONFIG_TPMFRONT=y
>  CONFIG_TPM_TIS=y
>  CONFIG_TPMBACK=y
> -CONFIG_START_NETWORK=n
>  CONFIG_TEST=n
>  CONFIG_PCIFRONT=n
>  CONFIG_BLKFRONT=y
> diff --git a/stubdom/xenstore-minios.cfg b/stubdom/xenstore-minios.cfg
> index 239da519b9..0252b59432 100644
> --- a/stubdom/xenstore-minios.cfg
> +++ b/stubdom/xenstore-minios.cfg
> @@ -1,3 +1,4 @@
> +CONFIG_LIBC=y
>  CONFIG_BLKFRONT=n
>  CONFIG_NETFRONT=n
>  CONFIG_FBFRONT=n
> diff --git a/stubdom/xenstorepvh-minios.cfg b/stubdom/xenstorepvh-minios.cfg
> index 752b90d7d3..62a228f33d 100644
> --- a/stubdom/xenstorepvh-minios.cfg
> +++ b/stubdom/xenstorepvh-minios.cfg
> @@ -1,3 +1,4 @@
> +CONFIG_LIBC=y
>  CONFIG_PARAVIRT=n
>  CONFIG_BLKFRONT=n
>  CONFIG_NETFRONT=n
> -- 
> 2.43.0
> 

-- 
Samuel
Pour un père, autant mourir que de faire plein de calculs et pas s'occuper
de son fils
 -+- y sur #ens-mim - sombres histoires de zombies -+-


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:38:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:38:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812948.1225694 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy6fz-0008Px-SA; Tue, 08 Oct 2024 09:38:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812948.1225694; Tue, 08 Oct 2024 09: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 1sy6fz-0008Pq-Pf; Tue, 08 Oct 2024 09:38:43 +0000
Received: by outflank-mailman (input) for mailman id 812948;
 Tue, 08 Oct 2024 09: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=r5fn=RE=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1sy6fy-0008Pk-85
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 09:38:42 +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 1a067124-8559-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 11:38:40 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a8d43657255so853019166b.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 02:38:40 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993ab8e75esm430768666b.222.2024.10.08.02.38.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 02:38:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1a067124-8559-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728380320; x=1728985120; darn=lists.xenproject.org;
        h=in-reply-to:references:from:subject:cc:to:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=09lpA4D+P0B1cNowckUFgOKjxnycBsShODd6kGoWQpM=;
        b=lhBEgbUgLutpGnMGUvG/ObtXAcCqG+Da5EFK5rYunCdv/DG/0ScemT3LWNwpo+nCER
         ayZO+5rSdMYx3XpUTyXKKP3jpzAfpMKTby4KJ8j6+2ENMWVFd14fPNF/QQepVi2Pk4IR
         Z4EeUoU5RAZXDAM95m46CeLI7/Cxzj7kA6u1c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728380320; x=1728985120;
        h=in-reply-to:references:from:subject:cc:to:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=09lpA4D+P0B1cNowckUFgOKjxnycBsShODd6kGoWQpM=;
        b=wC+ks0uSRjrITTMajtNcPG/K8oB3uBfrM2Lzg0DXXfWBp6BwWOj94H3Hd7g9CoY17M
         nB4Ep2YZah3dh13gSVoxruBYlhZKwBTQzbvpN84JcN2YXGjupX1fWJLebmhLKVZXm35Q
         oZIAvYx03oiamNUrUps/aGanJvHavlJpUaefTliqluutDHBgDNBqM5PbDpKSyFCRrYjQ
         isbX8GrhfeLlIQCy+0Dzt/tIe+eWMKXkX0RjrlQ5gz4IPIO34mjSv+qEuMEk4amxTPNT
         7qiNdpk9bFmKVwiuy2yynnbfM49cEZIuZkECo63vS1dw6e6nDW3rg5PaS1ZreU9CRs3E
         rr2w==
X-Forwarded-Encrypted: i=1; AJvYcCVIHgE6yOZDk50ky1chgUDmVtI0+f9I/a+DILhyh+BSh7QNUGcCc+7XlqyTKV9UMrKqOLCKI2iwHh0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzWZL+EBP+apDjX70Us5m3b74C3zniZrocgVtX1uaWd6p8Sw772
	mAkeEEodi+UUrnV4yjB362i2N1UjuThlyRfSsq+6PBcY3UNT4c1D5KLKWP59rxE=
X-Google-Smtp-Source: AGHT+IF6yvsJAQtvj5aO7KEBTEetVL2qhIA8wXkCQGXNwBvOmfrPwxROIZ+ROBLH68nJaiiQORepuQ==
X-Received: by 2002:a17:907:3f21:b0:a99:76bc:d753 with SMTP id a640c23a62f3a-a9976bcd8c6mr145338566b.45.1728380320242;
        Tue, 08 Oct 2024 02:38:40 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 08 Oct 2024 10:38:39 +0100
Message-Id: <D4QBOT9OWGK2.1AOPQG6UGK35F@cloud.com>
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>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v4 2/2] x86/fpu: Rework fpu_setup_fpu() uses to split it
 in two
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
X-Mailer: aerc 0.18.2
References: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
 <20241007155240.17186-3-alejandro.vallejo@cloud.com>
 <260d904c-54b0-456e-b4a5-9811f2e62c2c@suse.com>
In-Reply-To: <260d904c-54b0-456e-b4a5-9811f2e62c2c@suse.com>

On Tue Oct 8, 2024 at 7:37 AM BST, Jan Beulich wrote:
> On 07.10.2024 17:52, Alejandro Vallejo wrote:
> > It was trying to do too many things at once and there was no clear way =
of
> > defining what it was meant to do. This commit splits the function in tw=
o.
> >=20
> >   1. A function to return the FPU to power-on reset values.
> >   2. A x87/SSE state loader (equivalent to the old function when it too=
k
> >      a data pointer).
> >=20
> > The old function also had a concept of "default" values that the FPU
> > would be configured for in some cases but not others. This patch remove=
s
> > that 3rd vague initial state and replaces it with power-on reset.
> >=20
> > While doing this make sure the abridged control tag is consistent with =
the
> > manuals and starts as 0xFF
> >=20
> > Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> > Reviewed-by: Jan Beulich <jbeulich@suse.com>
> > --
> > @Jan: The patch changed substantially. Are you still ok with this R-by?
>
> I am. However in such a situation imo you'd better drop the tag, for it t=
o
> be re-offered (if desired). It can very well happen that the person simpl=
y
> doesn't notice the question pointed at them.
>
> Jan

Noted for next time. Thanks for the promptness!

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 09:41:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 09:41:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812955.1225705 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy6j3-0003Jd-Ak; Tue, 08 Oct 2024 09:41:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812955.1225705; Tue, 08 Oct 2024 09: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 1sy6j3-0003JW-70; Tue, 08 Oct 2024 09:41:53 +0000
Received: by outflank-mailman (input) for mailman id 812955;
 Tue, 08 Oct 2024 09:41: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=r5fn=RE=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1sy6j1-0003JO-JH
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 09:41:51 +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 8b3cce37-8559-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 11:41:50 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c8a2579d94so6359635a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 02:41:50 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e0597824sm4100676a12.15.2024.10.08.02.41.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 02:41:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8b3cce37-8559-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728380510; x=1728985310; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=r0GvKrZlY5f5H03b8MI4AuWciNIlH5iRRgXM7eyGylA=;
        b=B2nqKaf53vPrdC+eT3n78GKxvzip8mcSsX1ZzFB8ZYdsjpsEvdtUb6E8e4qU0jEKDy
         7PKTIKqQjMxVccJlTryDjMsER7QDXpqiwRRAWQnjjuRhBlGbUat/o6jzWIbwzITLjSiQ
         PYTgWTPbTM5aXch9qv0xLZO/l9PX5ssI83hCE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728380510; x=1728985310;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=r0GvKrZlY5f5H03b8MI4AuWciNIlH5iRRgXM7eyGylA=;
        b=mr9JwgSEqKSq+IaN5zr7UZnBB0RM1Em1ldVXj0jFtmlyEZ/oGUbbNtwaF8fgVnrlbk
         j/GP62wQsrK3anPUKfCaQ6BxB+7eMheGb8XjCH9ubxR2G6LxuPpIQjZdKQNPNcjburEM
         41YjG4T2WJpNl/oH47UWtpMXMoN7Ai/2JvFJS6CZC+s0+zP5qpmr2VooTiYBj8dU8l6X
         HoAOjEEgIhe43kfX9sTbs5l+Pq+XI0zrq2iMp71UlwNkk37ksjpKfOdfa/uM6SS6Uir1
         QUCTZviA+IvX7AI3fu+Op2DiC07TYIcpyoivT3rvEeBE0wAeT9kCp2vmKO2EbVsH/0GD
         J0qQ==
X-Gm-Message-State: AOJu0YywD03j2JHrxSMlO4UgESIgEol/yA+fr0Io8L76dcFcGjifpK9a
	rpu8mGr3wNJNapEvFWxog0cI7A73pBMJ929V7trnMc4AdCs3c5lofxgTGIKJ20c=
X-Google-Smtp-Source: AGHT+IGYPm2+WwJi4qMjy1LjvdVuA8778kZtUKRf7RblPML10DTazPvGtm4ahrSoAmdfoDIv1620bQ==
X-Received: by 2002:a05:6402:3811:b0:5c8:9f44:8145 with SMTP id 4fb4d7f45d1cf-5c8d2e8769dmr12600073a12.26.1728380510074;
        Tue, 08 Oct 2024 02:41:50 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 08 Oct 2024 10:41:49 +0100
Message-Id: <D4QBR8J2LHN2.CY0Y57DBOKZC@cloud.com>
Cc: "Xen-devel" <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>
Subject: Re: [PATCH v4 1/2] x86/fpu: Combine fpu_ctxt and xsave_area in
 arch_vcpu
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Frediano Ziglio" <frediano.ziglio@cloud.com>
X-Mailer: aerc 0.18.2
References: <20241007155240.17186-1-alejandro.vallejo@cloud.com>
 <20241007155240.17186-2-alejandro.vallejo@cloud.com>
 <CACHz=ZhGt7Lw5vHY-Ykc0_ouutMnurhWg2AQTkUF1MYXyp=fRw@mail.gmail.com>
In-Reply-To: <CACHz=ZhGt7Lw5vHY-Ykc0_ouutMnurhWg2AQTkUF1MYXyp=fRw@mail.gmail.com>

On Tue Oct 8, 2024 at 8:47 AM BST, Frediano Ziglio wrote:
> On Mon, Oct 7, 2024 at 4:52=E2=80=AFPM Alejandro Vallejo
> <alejandro.vallejo@cloud.com> wrote:
> >
> > fpu_ctxt is either a pointer to the legacy x87/SSE save area (used by F=
XSAVE) or
> > a pointer aliased with xsave_area that points to its fpu_sse subfield. =
Such
> > subfield is at the base and is identical in size and layout to the lega=
cy
> > buffer.
> >
> > This patch merges the 2 pointers in the arch_vcpu into a single XSAVE a=
rea. In
> > the very rare case in which the host doesn't support XSAVE all we're do=
ing is
> > wasting a tiny amount of memory and trading those for a lot more simpli=
city in
> > the code.
> >
> > While at it, dedup the setup logic in vcpu_init_fpu() and integrate it
> > into xstate_alloc_save_area().
> >
> > Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> > --
> > v4:
> >   * Amend commit message with extra note about deduping vcpu_init_fpu()
> >   * Remove comment on top of cpu_user_regs (though I really think there
> >     ought to be a credible one, in one form or another).
> >   * Remove cast from blk.c so FXSAVE_AREA is "void *"
> >   * Simplify comment in xstate_alloc_save_area() for the "host has no
> >     XSAVE" case.
> > ---
> >  xen/arch/x86/domctl.c             |  6 ++++-
> >  xen/arch/x86/hvm/emulate.c        |  4 +--
> >  xen/arch/x86/hvm/hvm.c            |  6 ++++-
> >  xen/arch/x86/i387.c               | 45 +++++--------------------------
> >  xen/arch/x86/include/asm/domain.h |  6 -----
> >  xen/arch/x86/x86_emulate/blk.c    |  2 +-
> >  xen/arch/x86/xstate.c             | 12 ++++++---
> >  7 files changed, 28 insertions(+), 53 deletions(-)
> >
> > diff --git a/xen/arch/x86/x86_emulate/blk.c b/xen/arch/x86/x86_emulate/=
blk.c
> > index e790f4f90056..08a05f8453f7 100644
> > --- a/xen/arch/x86/x86_emulate/blk.c
> > +++ b/xen/arch/x86/x86_emulate/blk.c
> > @@ -11,7 +11,7 @@
> >      !defined(X86EMUL_NO_SIMD)
> >  # ifdef __XEN__
> >  #  include <asm/xstate.h>
> > -#  define FXSAVE_AREA current->arch.fpu_ctxt
> > +#  define FXSAVE_AREA ((void *)&current->arch.xsave_area->fpu_sse)
>
> Could you use "struct x86_fxsr *" instead of "void*" ?
> Maybe adding another "struct x86_fxsr fxsr" inside the anonymous
> fpu_sse union would help here.
>

I did in v3, and Andrew suggested to keep the (void *). See:

  https://lore.kernel.org/xen-devel/2b42323a-961a-4dd8-8cde-f4b19eac0dc5@ci=
trix.com/

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 10:26:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 10:26:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812971.1225715 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy7QD-0003qT-LN; Tue, 08 Oct 2024 10:26:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812971.1225715; Tue, 08 Oct 2024 10: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 1sy7QD-0003qM-Ic; Tue, 08 Oct 2024 10:26:29 +0000
Received: by outflank-mailman (input) for mailman id 812971;
 Tue, 08 Oct 2024 10:26: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=J5/k=RE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1sy7QC-0003qG-3M
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 10:26:28 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c5dd31c3-855f-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 12:26:26 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a8ce5db8668so839042866b.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 03:26:26 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e806adcsm490324966b.221.2024.10.08.03.26.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 03:26:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5dd31c3-855f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728383185; x=1728987985; 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=M0xphy+/GSl37pA2BYPL60sCH2pffb9Gy+6HIKutHe4=;
        b=J1LmJw3HCKChwCwQIh057zBf6nMIX6oLZg8aPB/yFisj0B4DiMrrAFkmhZhAUiravu
         ZW0oRooE60rAGjrPnX4REPvj3WLbzODyNUwpv5PXNeLcFppDQZ8VTRGw9c6pqBYlUJQq
         9REmw4I0PlXE7XBTCdtLxAInqV6d+94KIDUn6XdduIvJ62p+SVGMot2nrznUbeLoZsK1
         4COAHIf8/jv4Xh3yBxQv772JBGGdYYieppVei0+a/5nOAl/LJFpihJWqpHcP8RtqeBQR
         3qLHcgRpWfWLg9bNhfBPsN6LPPJzfhqeDO+beoTD6JHvWku0bL10NEmBBuRk5o+eK9NI
         ARwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728383185; x=1728987985;
        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=M0xphy+/GSl37pA2BYPL60sCH2pffb9Gy+6HIKutHe4=;
        b=NztMbGtQkqPZ5vsqfneOdcvZljqV0fxKd2kDd0BIh8pI6YT1lDCA52j8a3eRG6ekj+
         jqHjW1rsnnaHdfSe8ajLVuZPHlWHK536cAlByNU1mf0G9QCwlDY1N5oTHl8dzsubnKoD
         IRSnYUAruhMf1bFp1jZhuCeaf7q2/b4GYCAOhvrrpTv0pyfKrMosIUrj/T7aH36QtICQ
         kyhKwhRgXIfgBqeu2yPJT5VZXKA9o4fzp1unxPI1rjp0XTuWmXwcu2vYMhaW/EN81Rbl
         pcl1AgIm0ACjOaFioYpLMNw0wCFfP9H60PD0pJlGX4FWETz3VU71f1u9FZpZSmqpE0KV
         AI2w==
X-Gm-Message-State: AOJu0YyL6EZKdl5FC1xlAyPW9sZRB4HwSEYuU6l/QlV1nJsCSWpRguie
	pzktJPImoRHFr2eFOa+Mt9AmoskAscWbzapAF8SwkJlNgKExOfCq1qylWg==
X-Google-Smtp-Source: AGHT+IEosO9dJmIMXAtB5pmd3r9xNphTn0D6uzZWrtUouEFdlx/oh80EQZS0Zw2/qKfQaUWGS5YGNA==
X-Received: by 2002:a17:907:3f8a:b0:a99:5240:381e with SMTP id a640c23a62f3a-a9952403a3dmr679855266b.18.1728383185033;
        Tue, 08 Oct 2024 03:26:25 -0700 (PDT)
Message-ID: <5771a606964dfaf7d507a5ecbc315dbbf8eac479.camel@gmail.com>
Subject: Re: [PATCH v2 1/3] xen/riscv: implement virt_to_maddr()
From: oleksii.kurochko@gmail.com
To: xen-devel@lists.xenproject.org
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Julien
 Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Date: Tue, 08 Oct 2024 12:26:23 +0200
In-Reply-To: <25a0fa030db90c929379a799aa5e03bed0197665.1728057657.git.oleksii.kurochko@gmail.com>
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
	 <25a0fa030db90c929379a799aa5e03bed0197665.1728057657.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Fri, 2024-10-04 at 18:04 +0200, Oleksii Kurochko wrote:
> Implement the virt_to_maddr() function to convert virtual addresses
> to machine addresses, including checks for address ranges such as
> the direct mapping area (DIRECTMAP_VIRT_START) and the Xen virtual
> address space. To implement this, the phys_offset variable is made
> accessible outside of riscv/mm.c.
>=20
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V2:
> =C2=A0 - Drop casts in virt_to_maddr() for ASSERT which checks that VA is
> =C2=A0=C2=A0=C2=A0 in the range of where Xen is located.
> =C2=A0 - Add UL suffix for or XEN_VIRT_START by using _AC(..., UL) and ad=
d
> inclusion
> =C2=A0=C2=A0=C2=A0 of <xen/const.h>
> =C2=A0 - Add the comment above return which explains why there is no need
> =C2=A0=C2=A0=C2=A0 to do " - XEN_VIRT_START.
> ---
> =C2=A0xen/arch/riscv/include/asm/config.h |=C2=A0 4 ++++
> =C2=A0xen/arch/riscv/include/asm/mm.h=C2=A0=C2=A0=C2=A0=C2=A0 | 17 ++++++=
++++++++++-
> =C2=A0xen/arch/riscv/mm.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=C2=A0 |=C2=A0 2 +-
> =C2=A03 files changed, 21 insertions(+), 2 deletions(-)
>=20
> diff --git a/xen/arch/riscv/include/asm/config.h
> b/xen/arch/riscv/include/asm/config.h
> index 7dbb235685..8884aeab16 100644
> --- a/xen/arch/riscv/include/asm/config.h
> +++ b/xen/arch/riscv/include/asm/config.h
> @@ -155,6 +155,10 @@
> =C2=A0
> =C2=A0#define IDENT_AREA_SIZE 64
> =C2=A0
> +#ifndef __ASSEMBLY__
> +extern unsigned long phys_offset;
> +#endif
> +
> =C2=A0#endif /* __RISCV_CONFIG_H__ */
> =C2=A0/*
> =C2=A0 * Local variables:
> diff --git a/xen/arch/riscv/include/asm/mm.h
> b/xen/arch/riscv/include/asm/mm.h
> index 4b7b00b850..0f7879d685 100644
> --- a/xen/arch/riscv/include/asm/mm.h
> +++ b/xen/arch/riscv/include/asm/mm.h
> @@ -5,6 +5,7 @@
> =C2=A0
> =C2=A0#include <public/xen.h>
> =C2=A0#include <xen/bug.h>
> +#include <xen/const.h>
> =C2=A0#include <xen/mm-frame.h>
> =C2=A0#include <xen/pdx.h>
> =C2=A0#include <xen/types.h>
> @@ -28,7 +29,21 @@ static inline void *maddr_to_virt(paddr_t ma)
> =C2=A0=C2=A0=C2=A0=C2=A0 return NULL;
> =C2=A0}
> =C2=A0
> -#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
> +static inline unsigned long virt_to_maddr(unsigned long va)
> +{
> +=C2=A0=C2=A0=C2=A0 ASSERT(va >=3D (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE=
));
It should be ASSERT(va < (...)).

Then I can't use virt_to_maddr() instead of LINK_TO_LOAD() as=20
address from Xen's VA space ( XEN_VIRT_START ) are higher then
(DIRECTMAP_VIRT_START + DIRECTMAP_SIZE).

Or as an option we could consider to drop this ASSERT() as if
VA is from directmap range the if below will catch that; otherwise
we have another one ASSERT() which checks that VA is from Xen VA range
where it is sage to use (phys_offset + va).

Could we consider just dropping "ASSERT(va < (DIRECTMAP_VIRT_START +
DIRECTMAP_SIZE))" or I am missing something?

~ Oleksii


> +=C2=A0=C2=A0=C2=A0 if ((va >=3D DIRECTMAP_VIRT_START) &&
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (va < (DIRECTMAP_VIRT_START +=
 DIRECTMAP_SIZE)))
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return directmapoff_to_maddr(=
va - DIRECTMAP_VIRT_START);
> +
> +=C2=A0=C2=A0=C2=A0 BUILD_BUG_ON(XEN_VIRT_SIZE !=3D MB(2));
> +=C2=A0=C2=A0=C2=A0 ASSERT((va >> (PAGETABLE_ORDER + PAGE_SHIFT)) =3D=3D
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (_AC(XEN_VI=
RT_START, UL) >> (PAGETABLE_ORDER +
> PAGE_SHIFT)));
> +
> +=C2=A0=C2=A0=C2=A0 /* phys_offset =3D load_start - XEN_VIRT_START */
> +=C2=A0=C2=A0=C2=A0 return phys_offset + va;
> +}
> +#define virt_to_maddr(va) virt_to_maddr((unsigned long)(va))
> =C2=A0
> =C2=A0/* Convert between Xen-heap virtual addresses and machine frame
> numbers. */
> =C2=A0#define __virt_to_mfn(va)=C2=A0 mfn_x(maddr_to_mfn(virt_to_maddr(va=
)))
> diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
> index 4a628aef83..7a1919e07e 100644
> --- a/xen/arch/riscv/mm.c
> +++ b/xen/arch/riscv/mm.c
> @@ -26,7 +26,7 @@ struct mmu_desc {
> =C2=A0=C2=A0=C2=A0=C2=A0 pte_t *pgtbl_base;
> =C2=A0};
> =C2=A0
> -static unsigned long __ro_after_init phys_offset;
> +unsigned long __ro_after_init phys_offset;
> =C2=A0
> =C2=A0#define LOAD_TO_LINK(addr) ((unsigned long)(addr) - phys_offset)
> =C2=A0#define LINK_TO_LOAD(addr) ((unsigned long)(addr) + phys_offset)



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 10:35:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 10:35:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812977.1225725 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy7YQ-0008Cr-Fv; Tue, 08 Oct 2024 10:34:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812977.1225725; Tue, 08 Oct 2024 10:34: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 1sy7YQ-0008Ck-Bk; Tue, 08 Oct 2024 10:34:58 +0000
Received: by outflank-mailman (input) for mailman id 812977;
 Tue, 08 Oct 2024 10:34: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy7YO-0008Cd-TG
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 10:34:56 +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 f5c920ec-8560-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 12:34:55 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-53997328633so7070924e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 03:34:55 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7b24e9sm487191166b.156.2024.10.08.03.34.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 03:34:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f5c920ec-8560-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728383695; x=1728988495; 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=y1lruDGxJ4F/+6/WfMGUa0G8LwxSGUIlpCd+O15Iydg=;
        b=bkL3WYO5IJd7+NO6ly4gUbrn9PY1fPkznUB1CtXJmSZYVZfNuUwp5D6VFhQsMVXPmE
         ItK8K2htuMT4CyBBBSP0rTqRRyuYYOPGPSOZ74Iu+3DjeDpBV/uY1dAmHqHshotrl9VW
         ig1BvCaBFznt+yTot8hPg48vk/gbDl8qGUJiuKU53gMjWUqMWIy0E7gp56mq/zEdnv29
         YcyHPX5ysyK0X9IgRxtgxWku0f9rv7GOLLfLxkg1pWyRn2lwQmAoUiGmLl1mCPPHPy/6
         Uy8JaFKnTa31nVlppcPV03sl1H1vIhDY/Npdx1TnDUj0JNpqo2wns++Q1XvzTReKqGRU
         DvPQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728383695; x=1728988495;
        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=y1lruDGxJ4F/+6/WfMGUa0G8LwxSGUIlpCd+O15Iydg=;
        b=Sk+Rp4LZjjhh3JwP8tVcHRUzy21lVejLRqvr7dsgYwTNboT3ndyKUUhMhehKya9EEa
         vnD9h4rcQq48qqPPHxqp2Rwmyek4/3PDjSEI3zqzuZUN/L9u9y8EuGpbF7XNKnqH2Ra+
         2KFUIsjnXfhVsjt815GEgVT3FsyypgdCcKIqvmR0FGYDTzEEeUQlXfHdAT4rhk/HZeIu
         jYZBAAGmzBoTbic8VfnDq4mHHnAZMrUzZQo2O8byjpohjKJnMavTet/UGUHhzEsy3Pcy
         IaVzknMdYNHjjGZ2cOjY4Szz/yhMRO2VTEEqW99kaYUf1YFWr0fhjDWYWpif9QivkW2C
         uqPA==
X-Forwarded-Encrypted: i=1; AJvYcCVyanh/ZbVuaoy6hMfi9kpnvGoFz52fQLbo4JnfjijqoRbkBSHcIVBRv0EcSSNHFWqzfGFhSmSOsXY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwQ6pr50ksfWstv1oD15odSeZ4/68ZiRI4rgAmDb7xyfP7OAO6a
	SlWzozYfndR1mTItkjVwxIqtMURiXmfBAd/pXv8j0OV74ZfZ3G+DgQA08laTdw==
X-Google-Smtp-Source: AGHT+IFZOvOwXkmYNSUFNzx4R4CsoVfHyPe9NL7RK7e6OfqjtUKCqnEpUXAYrrH8xDpqhUwyzlKfGQ==
X-Received: by 2002:a05:6512:2315:b0:539:9767:903d with SMTP id 2adb3069b0e04-539ab9ec629mr8115733e87.60.1728383695201;
        Tue, 08 Oct 2024 03:34:55 -0700 (PDT)
Message-ID: <98fdc897-2ad7-47c6-a633-70dfa381e562@suse.com>
Date: Tue, 8 Oct 2024 12:34:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] xen/riscv: implement virt_to_maddr()
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
 <25a0fa030db90c929379a799aa5e03bed0197665.1728057657.git.oleksii.kurochko@gmail.com>
 <5771a606964dfaf7d507a5ecbc315dbbf8eac479.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: <5771a606964dfaf7d507a5ecbc315dbbf8eac479.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.10.2024 12:26, oleksii.kurochko@gmail.com wrote:
> On Fri, 2024-10-04 at 18:04 +0200, Oleksii Kurochko wrote:
>> @@ -28,7 +29,21 @@ static inline void *maddr_to_virt(paddr_t ma)
>>      return NULL;
>>  }
>>  
>> -#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
>> +static inline unsigned long virt_to_maddr(unsigned long va)
>> +{
>> +    ASSERT(va >= (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE));
> It should be ASSERT(va < (...)).
> 
> Then I can't use virt_to_maddr() instead of LINK_TO_LOAD() as 
> address from Xen's VA space ( XEN_VIRT_START ) are higher then
> (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE).
> 
> Or as an option we could consider to drop this ASSERT() as if
> VA is from directmap range the if below will catch that; otherwise
> we have another one ASSERT() which checks that VA is from Xen VA range
> where it is sage to use (phys_offset + va).
> 
> Could we consider just dropping "ASSERT(va < (DIRECTMAP_VIRT_START +
> DIRECTMAP_SIZE))" or I am missing something?

Counter question: Why did you put the ASSERT() there when - once
corrected - it's actually pointless? What you want to make sure is
that virt_to_maddr() can't be invoked with bad argument (without
noticing). If that's achieved with just the other assertion (as it
looks to be), then leaving out this assertion ought to be fine.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 10:36:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 10:36:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812983.1225735 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy7aH-0001mZ-RD; Tue, 08 Oct 2024 10:36:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812983.1225735; Tue, 08 Oct 2024 10:36: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 1sy7aH-0001mS-NV; Tue, 08 Oct 2024 10:36:53 +0000
Received: by outflank-mailman (input) for mailman id 812983;
 Tue, 08 Oct 2024 10:36: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy7aG-0001fx-GR
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 10:36:52 +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 3a15b935-8561-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 12:36:50 +0200 (CEST)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-53997328633so7074115e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 03:36:50 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9947ec941asm355057966b.54.2024.10.08.03.36.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 03:36:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3a15b935-8561-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728383810; x=1728988610; 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=E7w+Lza7mtTvwar/7bwJvXeztIEDPySn0Yny7jXdBVI=;
        b=GmMMy8bSg2k3X41yC3X6a0Xub//LSssbiuBDiqasJuZ6WEdAoRBphSbze9sTdaZ7uf
         737YGv3KMMNJXAARJYZBtXjtEJQfT68ThchgocEeLZCrMEg2Adag5k2FnoIHQjrxo7SB
         dIjfqZn5R9syLVSQsVc+uMEJ+fS0Dd0/JayGplfamHojW8zKi+uf0WK3trOEaIwgSa1x
         vgHpFa3ddL1/36TPzUydv/twK+fuMAA5H7zMG3bjYXJPB7VlAarCZuFKFyuln9ZZuQl+
         Suic4hWKBVEjE2MCryV3ERzd8YbAQPCmUnHbo6qFP9y53S51c5A9NWvoWz9Dr/l8Hv3B
         Vtzw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728383810; x=1728988610;
        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=E7w+Lza7mtTvwar/7bwJvXeztIEDPySn0Yny7jXdBVI=;
        b=i0x9ru8lxq+/ZK+C9QCG7Gw1eZgZVq0aG2ZuYWZ2PGa4or8AGcFs5s3dgHrsxgk6iQ
         7bzZybKJLAJAaqCs+aavHel1Mr8rcDGehqZErWmsJEhc7W18Ks54R+AEEk6BciEPkw/X
         OhX1VefL7eBNDNfP9V1yJ6dqB9pJLNOoSxn/cSi7PjMMDh4CNYLJ4sHk+W9lAES10MAi
         OsRTNh1mg8EcQICpRsYuOfjZA/UBeTs/bJzfcoT41KHmL9Jwo4f1fqL2APWlE2/4OiCZ
         x6stCBKJFCuBR4hLm6I/v9lMr33oOa5hi5BRIDvrBltJsnYxfcP/sFItwcaP3EVVl4da
         S2jA==
X-Forwarded-Encrypted: i=1; AJvYcCXU4FMKi+eui2voYd6Y15Y4StAltECp8JZoJdyF9pXmtha0uYeBtJWCiw89Aq4JeUcHWNfDZCFOor4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YypA0baFSLDpVfYcbdq+89/rFxkCYFWI+5O/nFYAF7DQOmEfqhZ
	BCNGPo1Fb+HMG0FYrAkDQ0SCqb3IuPaV6sJKFiOsZ6LM4Af97e6OeLGlrz1s5A==
X-Google-Smtp-Source: AGHT+IFCYIFr+sOcWoFFHCuXS97jl9BSsHhf+ygQnjLyhxOnOwLjKuVcYSYrlAiGWyuxigR9xJGoZg==
X-Received: by 2002:ac2:4c45:0:b0:539:8a50:6ee8 with SMTP id 2adb3069b0e04-539ab9e6ed9mr10453318e87.57.1728383809901;
        Tue, 08 Oct 2024 03:36:49 -0700 (PDT)
Message-ID: <92176e9b-a486-4607-92ba-d531b4f16bc1@suse.com>
Date: Tue, 8 Oct 2024 12:36:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/3] xen/riscv: switch LINK_TO_LOAD() to
 virt_to_maddr()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
 <5975a3a2d5d499244825e88cac3f9b6b4e9ddadb.1728057657.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: <5975a3a2d5d499244825e88cac3f9b6b4e9ddadb.1728057657.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 18:04, Oleksii Kurochko wrote:
> Use virt_to_maddr() instead of LINK_TO_LOAD as virt_to_maddr()
> covers all the cases where LINK_TO_LOAD() is used.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 10:37:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 10:37:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812985.1225745 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy7ak-0003pd-1x; Tue, 08 Oct 2024 10:37:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812985.1225745; Tue, 08 Oct 2024 10:37: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 1sy7aj-0003pW-VJ; Tue, 08 Oct 2024 10:37:21 +0000
Received: by outflank-mailman (input) for mailman id 812985;
 Tue, 08 Oct 2024 10:37: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy7ai-0003nZ-8u
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 10:37:20 +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 4b7f1d13-8561-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 12:37:19 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9963e47b69so181468366b.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 03:37:19 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99431f247bsm388932466b.168.2024.10.08.03.37.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 03:37:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4b7f1d13-8561-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728383839; x=1728988639; 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=TmKqm9pAcI1YtH+vLzyii2UOJep+kWr4LlRGP6nAIX4=;
        b=Y0aVfmqbgjyLa7oVKicx8RaOkX7Y+LZWLyoEX2AnMF3kC8AjeCHWYkfuOePAeBRBlW
         87YvjCeu4AvQerdc/ANjUz0ByytGI8GcxUfouoVrQ2qDnYkXdbGhiB1uyncqo0BoJrtQ
         Q5GtdpllBVaGO9Y9gRVtiJgQ2gYtyIqZtosBzh3QH1gvpvkJtRaDacARkgU1aZqrIKta
         tQEd46GGjJMJVoTN/s8LFcog5jh9VJ3as/eOYayfWjNKnBsJFq6a9NbfRTYfQ33WwulD
         muUd3etN7zpOjxgs2zdGp+MerwXUVBebMPczaRwxjsMqaS70nmRRtuBXId5xjNf7VTyd
         u3VQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728383839; x=1728988639;
        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=TmKqm9pAcI1YtH+vLzyii2UOJep+kWr4LlRGP6nAIX4=;
        b=aFXke8UXvN8wpb/jNTE1fI+nhH+YsCxTUGQaybl+95LRiwi32tbFyNKueFgkJFzxVX
         ccFQBeLmzSiA8FpRFNh/0fLmg8Zo3BYAk6FZ6Bl5oIzOLg2hyy4RYBBzZXaU9BE4MTrS
         r4sdR1IWPIgmEUL37d9yR0jMIAFSTrwp6IcqUJuFqz7P99aYXWiYquzHb0+qX7U3cx9+
         zei4as2+syCfhtZzO/J6lgiQkpL7fx8ti7blxj3K+NkBUiy7+mHEOrDP+/HMnomEN/LU
         RrPB1ELRPk2+ONLVm4R+4vpqS/c7+iaHZzyops8xBLWDRY8TwXgdc0Jumr84qubalpzO
         l4gA==
X-Forwarded-Encrypted: i=1; AJvYcCV8hCsdmQNNG7fjoIr/tsGIuxxFS7jib7XvEuR83UxcjrJONXcYF7wJ7qdAc2j4t/WqmwLmTPaR/bI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvOhHcfYebruHXhsn/vfK6TAaI4EhwnwEDPhx81BK17s2yicOd
	FgtvsN7+BLKIjqILfnzP9XGfE1C/9cyhNX/MjvQ2k2yac5ByUiAnxR3UPU/Ewg==
X-Google-Smtp-Source: AGHT+IEz7Tofp/a6tcksSTUlkRUl2X1iUOYKAQoHwnM9XaaVFmvwLWQyrW5ntnaSJiJOEfx099kyTw==
X-Received: by 2002:a17:907:3f86:b0:a8a:6c5d:63b2 with SMTP id a640c23a62f3a-a991bd09b0amr1570154666b.18.1728383839244;
        Tue, 08 Oct 2024 03:37:19 -0700 (PDT)
Message-ID: <e144d508-983d-4c88-adc7-e84efa67899b@suse.com>
Date: Tue, 8 Oct 2024 12:37:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] xen/riscv: register Xen's load address as a boot
 module
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
 <1850d637a9588a1b00bf07cf0e443486f3895938.1728057657.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: <1850d637a9588a1b00bf07cf0e443486f3895938.1728057657.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 18:04, Oleksii Kurochko wrote:
> Avoid using BOOTMOD_XEN region for other purposes or boot modules
> which could result in memory corruption or undefined behaviour.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 10:47:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 10:47:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.812995.1225755 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy7kR-0006Vy-Vs; Tue, 08 Oct 2024 10:47:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 812995.1225755; Tue, 08 Oct 2024 10: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 1sy7kR-0006Vr-Ry; Tue, 08 Oct 2024 10:47:23 +0000
Received: by outflank-mailman (input) for mailman id 812995;
 Tue, 08 Oct 2024 10: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=/rYz=RE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sy7kP-0006Vl-MZ
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 10:47:21 +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 b10a8d1c-8562-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 12:47:19 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-5398e3f43f3so6250916e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 03:47:19 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7860cbsm489760866b.120.2024.10.08.03.47.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 03:47:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b10a8d1c-8562-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728384439; x=1728989239; 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=Eg++UNuGwihTMeqEph3/1UZvbpjvouqeJeWvfpFRaaM=;
        b=HQemkBrRZWXGEUq/6WYk4p1r9ean4Wzmi/mg1WUQolZqY7m1mGcpmCUgXPc42dWa2E
         U/V33Tah0S/O5KhwOYmxJtW93Gij3+7MfiE0RyXPZX1s9a+ihFEQudd3jeYMhQbIOb+d
         1jHsiq8gGeDyvDwW5cMf+p+NWEbdrSGyxsyMw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728384439; x=1728989239;
        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=Eg++UNuGwihTMeqEph3/1UZvbpjvouqeJeWvfpFRaaM=;
        b=I0h1vuyiDxF2hRj0n7EfWSyRsq4MwiLdgkzirwKtc0kuXfBhgk8zF369wqEuwwUZwE
         vHRyHbohYM8tjt3aO91OXTzQFnZ0SUBzJ0CNSBfQwQlWaFX6EJnAFw3K/YxD1ghoNGSf
         JYWjxlbEJCDtb06pNwBYvU5lLRQgmEuxIe85SBX7Uleoe187U4i+xFtJ+L+FgSjKrru1
         CsOD/3mlZM7icmepVumWZLJTaKmL+cPH4Y0nWae/IspeZodV173idmnLeN+tMhVqZB32
         3YenErm0amsIU/Waxzr6zijjRrfPEuKt35MD+QeclqgPPVVIMvrFuWfmfZwWa2KkzoEJ
         eyGA==
X-Gm-Message-State: AOJu0YytuGQfQwFApJAa/GD9v0OP6q4bICTHdLfTnP9czaI5gHOUWZcv
	CFkCOQSwIQ3l6/ADR/eFkKGkWTkdkeatvinI2DvDZH8Wo1f3hJUeLGlAMAm4OsFJXnHidZvrlCG
	8
X-Google-Smtp-Source: AGHT+IGlsedWb3JNFYZnMZpvr0kKZ/pocJ/gYOQya5Hsh1jDsWYIZfdaQ3OJN3v/n8LnEGgFWTdUmg==
X-Received: by 2002:a05:6512:3d93:b0:52c:e326:f4cf with SMTP id 2adb3069b0e04-539ab84e3a7mr8146475e87.3.1728384438751;
        Tue, 08 Oct 2024 03:47:18 -0700 (PDT)
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>,
	Willi Junga <xenproject@ymy.be>
Subject: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD is not behind any IOMMU
Date: Tue,  8 Oct 2024 12:47:06 +0200
Message-ID: <20241008104706.74001-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

IVMD table contains restrictions about memory which must be mandatory assigned
to devices (and which permissions it should use), or memory that should be
never accessible to devices.

Some hardware however contains ranges in IVMD that reference devices outside of
the IVHD tables (in other words, devices not behind any IOMMU).  Such mismatch
will cause Xen to fail in register_range_for_device(), ultimately leading to
the IOMMU being disabled, and Xen crashing as x2APIC support might be already
enabled and relying on the IOMMU functionality.

Relax IVMD parsing: allow IVMD blocks to reference devices not assigned to any
IOMMU.  It's impossible for Xen to fulfill the requirement in the IVMD block if
the device is not behind any IOMMU, but it's no worse than booting without
IOMMU support, and thus not parsing ACPI IVRS in the first place.

Reported-by: Willi Junga <xenproject@ymy.be>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/drivers/passthrough/amd/iommu_acpi.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/xen/drivers/passthrough/amd/iommu_acpi.c b/xen/drivers/passthrough/amd/iommu_acpi.c
index 3f5508eba049..c416120326c9 100644
--- a/xen/drivers/passthrough/amd/iommu_acpi.c
+++ b/xen/drivers/passthrough/amd/iommu_acpi.c
@@ -248,8 +248,9 @@ static int __init register_range_for_device(
     iommu = find_iommu_for_device(seg, bdf);
     if ( !iommu )
     {
-        AMD_IOMMU_ERROR("IVMD: no IOMMU for Dev_Id %#x\n", bdf);
-        return -ENODEV;
+        AMD_IOMMU_WARN("IVMD: no IOMMU for device %pp - ignoring constrain\n",
+                       &PCI_SBDF(seg, bdf));
+        return 0;
     }
     req = ivrs_mappings[bdf].dte_requestor_id;
 
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 11:02:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 11:02:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813004.1225765 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy7z9-0005hn-As; Tue, 08 Oct 2024 11:02:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813004.1225765; Tue, 08 Oct 2024 11: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 1sy7z9-0005hg-6o; Tue, 08 Oct 2024 11:02:35 +0000
Received: by outflank-mailman (input) for mailman id 813004;
 Tue, 08 Oct 2024 11: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=/rYz=RE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1sy7z8-0005g3-51
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 11:02:34 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d13b6df6-8564-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 13:02:32 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so1641309a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 04:02:32 -0700 (PDT)
Received: from localhost ([213.195.117.215]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993ddeddadsm430420666b.198.2024.10.08.04.02.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 04:02:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d13b6df6-8564-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728385352; x=1728990152; 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=KxoKyEG4kDrOJBu2MRInnkIYHJz/geXpCLu5nCBzoFk=;
        b=aD6GWcBlpjTSuMU/BuGrL3kvrW/kuGpX9LCnrh9ylXtLZgZ4UnSu7MSfDB41sPsxry
         2EbjhaHeSuHUXYmnCHVCSqNTt0aHLly8B+e3++bUjslTgG3z7MVEpLr5fqORbEvWHsqd
         qRDWSsbly1j0xcgwfJ6H49vsdV8ef6seP5ym4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728385352; x=1728990152;
        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=KxoKyEG4kDrOJBu2MRInnkIYHJz/geXpCLu5nCBzoFk=;
        b=Pfaso0BIudPFS4JLKAvvQCkI1Qn5SOK4qF61wKDmu520W/RYcjA3JuNs/uiituK9lw
         Qr1RihkcwRYa+CO1cl8fC6UqAcboyXrPE/xef/Zs2Gdfd0eT+XX8E2TuphGBpgvVrwE+
         VND4K8M949wg3Z3/BEia80A4jjfD8jtjdHf1n8/4INE1NUStV7ZNWhJNeL2edHhgWYE7
         aFMdC3eY7ZlMyEQD0sxUjHtf0L1rtRTOfkYFYqEhE2Z3Ji5mcqzgkcqG3dC2V77f8zk4
         tPorgeHDHbHlZHv6kNgeogc/y1FgVgtBluZ4l6LE9H97mKT2ziAchj2RBQK777/fp1jO
         nu6g==
X-Gm-Message-State: AOJu0YzQeIb9ehbvhFzwWWH+Gytyiw7LiNFYKDKDWxh3hcykHFqpQqVw
	yu/n6fM7YXQFggNuZQjnLnmEhzp5RwJ86zscdu/ozfQ0UbVNS9slLmcUk7uXT+w=
X-Google-Smtp-Source: AGHT+IH2cRqiiz3elmPs3FoPisfIq9ty2XQqhOsxtnTHzIA4K7T13Y6MET3veuUGxbtpOQQsWz1iUw==
X-Received: by 2002:a17:907:728b:b0:a93:bc27:de24 with SMTP id a640c23a62f3a-a9967856817mr312380766b.1.1728385351973;
        Tue, 08 Oct 2024 04:02:31 -0700 (PDT)
Date: Tue, 8 Oct 2024 13:02:30 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Matthew Barnes <matthew.barnes@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v2] x86/APIC: Switch flat driver to use phys dst for ext
 ints
Message-ID: <ZwURRqxvX0G7vRVV@macbook.local>
References: <0db68e62ffc428f553a30397df1e79068d26bb5f.1728311378.git.matthew.barnes@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <0db68e62ffc428f553a30397df1e79068d26bb5f.1728311378.git.matthew.barnes@cloud.com>

On Mon, Oct 07, 2024 at 03:34:43PM +0100, Matthew Barnes wrote:
> External interrupts via logical delivery mode in xAPIC do not benefit
> from targeting multiple CPUs and instead simply bloat up the vector
> space.
> 
> However the xAPIC flat driver currently uses logical delivery for
> external interrupts.
> 
> This patch switches the xAPIC flat driver to use physical destination
> mode for external interrupts, instead of logical destination mode.
> 
> This patch also applies the following non-functional changes:
> - Remove now unused logical flat functions
> - Expand GENAPIC_FLAT and GENAPIC_PHYS macros, and delete them.
> 
> Resolves: https://gitlab.com/xen-project/xen/-/issues/194
> Signed-off-by: Matthew Barnes <matthew.barnes@cloud.com>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Just some nits below (and suggestions for future work).

> ---
> Changes in v2:
> - Reword commit message
> - Expand and delete GENAPIC_* macros
> - Bundle patch series into one patch
> ---
>  xen/arch/x86/genapic/bigsmp.c      |  8 +++++++-
>  xen/arch/x86/genapic/default.c     |  8 +++++++-

The organization of giles herre is very bad.  bigsmp.c and default.c are
almost empty files, and delivery.c is almost empty also.  IT should
all be unified into a single xapic.c file, and rename the genapic folder
to plain apic IMO.  Not for you to do here, just realized while
looking at the changes.

>  xen/arch/x86/genapic/delivery.c    | 10 ----------
>  xen/arch/x86/include/asm/genapic.h | 20 +-------------------
>  4 files changed, 15 insertions(+), 31 deletions(-)
> 
> diff --git a/xen/arch/x86/genapic/bigsmp.c b/xen/arch/x86/genapic/bigsmp.c
> index e97e4453a033..b2e721845275 100644
> --- a/xen/arch/x86/genapic/bigsmp.c
> +++ b/xen/arch/x86/genapic/bigsmp.c
> @@ -46,5 +46,11 @@ static int __init cf_check probe_bigsmp(void)
>  
>  const struct genapic __initconst_cf_clobber apic_bigsmp = {
>  	APIC_INIT("bigsmp", probe_bigsmp),
> -	GENAPIC_PHYS
> +	.int_delivery_mode = dest_Fixed,
> +	.int_dest_mode = 0, /* physical delivery */
> +	.init_apic_ldr = init_apic_ldr_phys,
> +	.vector_allocation_cpumask = vector_allocation_cpumask_phys,
> +	.cpu_mask_to_apicid = cpu_mask_to_apicid_phys,
> +	.send_IPI_mask = send_IPI_mask_phys,
> +	.send_IPI_self = send_IPI_self_legacy
>  };
> diff --git a/xen/arch/x86/genapic/default.c b/xen/arch/x86/genapic/default.c
> index a968836a1878..59c79afdb8fa 100644
> --- a/xen/arch/x86/genapic/default.c
> +++ b/xen/arch/x86/genapic/default.c
> @@ -16,5 +16,11 @@
>  /* should be called last. */
>  const struct genapic __initconst_cf_clobber apic_default = {
>  	APIC_INIT("default", NULL),
> -	GENAPIC_FLAT
> +	.int_delivery_mode = dest_Fixed,
> +	.int_dest_mode = 0, /* physical delivery */
> +	.init_apic_ldr = init_apic_ldr_flat,
> +	.vector_allocation_cpumask = vector_allocation_cpumask_phys,
> +	.cpu_mask_to_apicid = cpu_mask_to_apicid_phys,

After this change all APIC drivers use the same values for the
int_delivery_mode, int_dest_mode, vector_allocation_cpumask and
cpu_mask_to_apicid fields, at which point we can remove the hooks and
adjust the code.  For example vector_allocation_cpumask_phys() should
be renamed to vector_allocation_cpumask(), and the
vector_allocation_cpumask removed.

Can be done in a followup commit.

As a small nit, it would be good if the remaining fields (used for IPI
sending): init_apic_ldr, send_IPI_{mask,self} are grouped together.  I
would move the initialization of the init_apic_ldr field just above
send_IPI_mask.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 11:33:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 11:33:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813019.1225799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy8Su-0002PH-Pl; Tue, 08 Oct 2024 11:33:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813019.1225799; Tue, 08 Oct 2024 11: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 1sy8Su-0002PA-MD; Tue, 08 Oct 2024 11:33:20 +0000
Received: by outflank-mailman (input) for mailman id 813019;
 Tue, 08 Oct 2024 11:33: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy8St-0002P4-3N
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 11:33:19 +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 1c8bca68-8569-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 13:33:17 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c5b9d2195eso7864522a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 04:33:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e619b1fsm495169666b.49.2024.10.08.04.33.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 04:33:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c8bca68-8569-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728387196; x=1728991996; 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=YkJp9rgVOFuVqiZYGzzTwGKfg7hukVvo6fq48Ik6+hA=;
        b=dEjp+V01H9hxk0Rmljx1iSfNugHSTlKZ5ZwCniHfDZ0/sle99mBAg4cnHidXNNgppE
         WydYkv6JjFBQ6uF3HMJ1xrSiThRagBhmM3xtaWLXL8IvO9kojpkioKlH5qLKB7YsaxkA
         0svtK7NpDjsILqNXK7o96c5j6F9QBvVNmwN/qvJ4bzauawmsayqV6U7IUb0rdRAS57JR
         k9wUODxJRmJqqC6ppgujPoGLea2K2VLcXi5U/xGeoXTirHAgg2NV1bKwCZC/UqvCeaq+
         StTwjZFrWpqMMsGyfLLJLXk6PjRsaPAYihmguQqS/5QfQT8sZfJlBNEVTZUKGVgtOYof
         xBVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728387196; x=1728991996;
        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=YkJp9rgVOFuVqiZYGzzTwGKfg7hukVvo6fq48Ik6+hA=;
        b=NEnPgKviOEse2WDjAE/RTHkh6xj+CH3YhR55WEb+WWE3zG1jxNYC4bhyE5ngf7qG1E
         dqAI4Gw0+JAcrDhySG+3cNlTh12JdbG2yb/ERmWR39DCmthv/kIxgtcVRq1DvJVV5TmY
         12P7R3K+GhHe6VRv82D8A0M99xW0Z6qN8dePW1Se/uJ8kjOwQIWYGLbw6hHKMUcyR8wm
         I4GHdrG+iW3Qf6vEU54uRprQWgmWpjDMiPlczqgSGmqCy7gvVSMfB6Rm+/5l6U383jqu
         0pGQG3iWGvEFwkADm2OuY0OCaF4LR93ofVVHh+18Pc2rciUc3RuZiLIpLR02vSs726DZ
         NBrw==
X-Forwarded-Encrypted: i=1; AJvYcCWOuKSAJWk984pMtZmAw6Ig1raPHGa/QtAlR2nqPQCqeoXYYJ1LVo5nCI2h1YkuKFi3Jlevey+OMmY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxNMz/3gqQuK2XiV1XhCDER9WFi+XXlOcxFP8syPhqFjoACn2C1
	lBUoOkMsGURv2EzuiSGYtJN/3jjNZG9VwyCuLNXcDATEa9mBYhZSsTaGBloa1Q==
X-Google-Smtp-Source: AGHT+IEc6Q/IuOV/LJV/OxHf+djuOWrN6YYuYY0/1odwrmepBZRaPFAq8ovuQ0S3Q/C+aV6A3WD+aQ==
X-Received: by 2002:a17:906:c10e:b0:a99:76a9:a9b3 with SMTP id a640c23a62f3a-a9976a9abb7mr176888066b.14.1728387196344;
        Tue, 08 Oct 2024 04:33:16 -0700 (PDT)
Message-ID: <8979f6f8-8f51-4fb4-8df0-663037c1b3c1@suse.com>
Date: Tue, 8 Oct 2024 13:33:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 6/7] x86/alternative: Relocate all insn-relative fields
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-7-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: <20241002152725.1841575-7-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.10.2024 17:27, Andrew Cooper wrote:
> Right now, relocation of displacements is restricted to finding 0xe8/e9 as the
> first byte of the replacement, but this is overly restrictive.
> 
> Use x86_decode_lite() to find and adjust all insn-relative fields.
> 
> As with disp8's not leaving the replacemnet block, some disp32's don't either.
> e.g. the RSB stuffing loop.  These stay unmodified.
> 
> For now, leave the altcall devirtualisation alone.  These require more care to
> transform into the new scheme.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 11:37:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 11:37:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813023.1225809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy8Wq-0004hx-7g; Tue, 08 Oct 2024 11:37:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813023.1225809; Tue, 08 Oct 2024 11: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 1sy8Wq-0004hq-4t; Tue, 08 Oct 2024 11:37:24 +0000
Received: by outflank-mailman (input) for mailman id 813023;
 Tue, 08 Oct 2024 11: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy8Wo-0004hk-I2
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 11:37: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 ae2e9143-8569-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 13:37:21 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c88c9e45c2so11323286a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 04:37:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99399c6735sm451385566b.9.2024.10.08.04.37.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 04:37:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae2e9143-8569-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728387441; x=1728992241; 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=06UuNuw5Z8f7hSoelTlImNXDUjzLKORjRu0xLjZDUUM=;
        b=Q0czfW08MgLh9KRpdNLCMBge0+z+f2yk+l0xoepTasLEa9BRrSPpINV5v/bgvRXiGc
         /z+3fFp2Nh5pPt3LAvHcAcJhs8bt2SVKByqtyV/kbNu+MWEjMP3jlE3lZaElMRiX3P+7
         diIOLpskBaWAJI1oKTrZS/Ii1VHtRunpTPpGrfCmPB36D6OHKGIXiZ1sTg1hWNKBP20I
         0uMwMMrSqhU1ZT2XgTIx+wlMxhT9d+I8aG69NDPH0LW8j+QG0EcZNoRwb2YCuuASG2+q
         h2Kjv2jhYeFsosN14PMiuJ0OBgXMnvz2Gc49f3ZLjOO2GRDnXu75djG3g9PKlSvVpb9a
         IJ0Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728387441; x=1728992241;
        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=06UuNuw5Z8f7hSoelTlImNXDUjzLKORjRu0xLjZDUUM=;
        b=Abmx4Nz/DJTlafX9z9Kf21E46uZuWoALEoTR7y4438qXfcqsMHCAkqHDO0Zt7hHqq+
         ihfyPAnuAnrx+IrkeIo6tPgIYxvr3h1DQgLHGI6yoRetjEnEucN2VZs4QRVJLHpQDFKr
         hKM+kj1wihn5mElW9/PEXrt4YPdGeQXyfiR5EhqL30o9BeCMoIDbufP8oO5xuekaWMjl
         gLxsnWl3lNNJ5mM69cx9AIVGgkFffzxhRmKOK+Ygbv5y8I2vERC50H2ZKU1qW29ee/MY
         UMHK7M6e/d3V+JZCAG3ityR5b8AwYF+o85CRcEKG84lqg66sDeeMXdNc7sgT3oQlqcuB
         t9ZA==
X-Forwarded-Encrypted: i=1; AJvYcCXcGINQuERmijILTxRPhZsXVYZdhGBCfNVbplbebXqHHRpilzFTqfznkuXc6dNvMwOwc5E9S5KP6QU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyoUEUYEkyowGtpXNDZF7F+v5zp53kBfOdChGayAZ+w2kxwmo1n
	KvBcptofC0GDQo5kdnx7QPy0gokHfyTxnpQs2rLZE0P1WOWDsXTw2Mj60qNxY7i2tlBs4noezcI
	=
X-Google-Smtp-Source: AGHT+IGn8MuxlDyB051BtMhGOTcAjQ7C9yflk7YQnYUW+x3+Bv+zQNd9t1Atj45H3Q4uzjLKxKxGpA==
X-Received: by 2002:a17:907:7e8e:b0:a99:5f45:cb69 with SMTP id a640c23a62f3a-a996785ef29mr348132866b.4.1728387440690;
        Tue, 08 Oct 2024 04:37:20 -0700 (PDT)
Message-ID: <bbd4347d-7225-48dd-8ccc-007f399a325f@suse.com>
Date: Tue, 8 Oct 2024 13:37:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 7/7] x86/spec-ctrl: Introduce and use DO_COND_BHB_SEQ
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241002152725.1841575-1-andrew.cooper3@citrix.com>
 <20241002152725.1841575-8-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: <20241002152725.1841575-8-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.10.2024 17:27, Andrew Cooper wrote:
> Now that alternatives can fix up call displacements even when they're not the
> first instruction of the replacement, move the SCF_entry_bhb conditional
> inside the replacement block.
> 
> This removes a conditional branch from the fastpaths of BHI-unaffected
> hardware.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 11:47:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 11:47:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813030.1225818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy8g1-0002J6-2h; Tue, 08 Oct 2024 11:46:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813030.1225818; Tue, 08 Oct 2024 11:46: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 1sy8g0-0002Iz-W5; Tue, 08 Oct 2024 11:46:52 +0000
Received: by outflank-mailman (input) for mailman id 813030;
 Tue, 08 Oct 2024 11: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy8fz-0002It-AN
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 11:46:51 +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 014b1f5e-856b-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 13:46:50 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so1719485a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 04:46:50 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05f3969sm4248175a12.87.2024.10.08.04.46.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 04:46:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 014b1f5e-856b-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728388010; x=1728992810; 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=6xZaYswXVmoMyaE62q3+SUCu3H/UnIU8UaWHNZvQhqY=;
        b=JJM9QW82zG2kVgjWkAe/+TDEdRkqGKqDgZ2SyDz/WpnCR/p6cQctvH0Aa0X0EGts5v
         HzDpS157SRfrmbOAJEBNjDF97fkL8VyZpTwkLfM80kzxjVMASh+d96TwTgB8GUT53vS8
         dMBqnlwD+c7KeAtKldmcp0ns+3OHzmX1D/OpekrATzBXySdtSdAlZJbpScja2dOnS/wX
         3mke3bzQLYt9Z/p1Hs2QYgtwxQuUWUNVv6MpwvQcFFeCQOdytrH785oBnzYvoAbl7iBl
         BW4Hg0Q4wneMfx7exMcLIztZ8HCOg3nk+xJFa5QOue6Bs/ZNGTWSHIXqpOm7hEqQEEgW
         o0Fw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728388010; x=1728992810;
        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=6xZaYswXVmoMyaE62q3+SUCu3H/UnIU8UaWHNZvQhqY=;
        b=h58COp84Gsmny+bxPgCenG5G7C8Bda7oAIBzDma/bD61i6cZzGmmklwi/am1VjIz6c
         N/Z2x0mZ94deRfhK7FDs4cxq/jvUTRWxtZF+h68x4jFds0/cVHo0E4M+nSp/kc4GzoBJ
         x3nrDHIY79ikK0QGXMALVnY9UHTqCHsN1BLGHcVH0vZK6fI9S0uGIgvsMXGg8y88RheZ
         KYahk7OKpbuRdjx6q4CL0OJsIwDg5/BLrP8FFmhHjp1Zo+3bOnBGH7V+yPc3ekV1vDQ7
         Kz+EFXPdTZ/y8BFMsvcmATLIUUZWtBo1pwI0hOj6o7i0eFN6x725JTgqG0HQRqrUot6c
         J7Ow==
X-Forwarded-Encrypted: i=1; AJvYcCXNsf3SAk+WNpjSf76ta6v9bGpP/1lwOUz1Vn8TakS/SM4z/rmzagVZ7wYul92upjtpAe5OKeI816E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyojJcZpoF9znTpkgPe2d9fOWbqg8DjxwEgK7/X2x0X0sQCXDoo
	E3VapVyA8IN7etbyeQF19i7O9Rq8ZqfWXDPO/kFkjhztpNucPnyVImptqPUnMg==
X-Google-Smtp-Source: AGHT+IEURzfQn/D3al1SWEg+uxNFwOrALJKOs5kH4nzZOXjATjyX7EeXIOz9cEFXncQSc0bZ4YA86w==
X-Received: by 2002:a05:6402:2185:b0:5c5:c2a7:d535 with SMTP id 4fb4d7f45d1cf-5c905d2113fmr4116309a12.16.1728388009749;
        Tue, 08 Oct 2024 04:46:49 -0700 (PDT)
Message-ID: <3351f1f4-406f-4081-b3ad-9d71ce4bb279@suse.com>
Date: Tue, 8 Oct 2024 13:46:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: Introduce NODE_DATA->node_present_pages(RAM
 pages)
To: Bernhard Kaindl <bernhard.kaindl@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <20241002102331.437048-1-bernhardkaindl7@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: <20241002102331.437048-1-bernhardkaindl7@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.10.2024 12:23, Bernhard Kaindl wrote:
> From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
> 
> Changes in v2:
> - Remove update of numainfo call, only calculate RAM for each node.
> - Calculate RAM based on page boundaries, coding style fixes

Nit: This shouldn't be part of the description (eventual commit message);
it belongs ...

> Some admin tools like 'xl info -n' like to display the total memory
> for each NUMA node. The Xen backend[1] of hwloc comes to mind too.
> 
> The total amount of RAM on a NUMA node is not needed by Xen internally:
> Xen only uses NODE_DATA->node_spanned_pages, but that can be confusing
> for users as it includes memory holes (can be as large as 2GB on x86).
> 
> Calculate the RAM per NUMA node by iterating over arch_get_ram_range()
> which returns the e820 RAM entries on x86 and update it on memory_add().
> 
> Use NODE_DATA->node_present_pages (like in the Linux kernel) to hold
> this info and in a later commit, find a way for tools to read it.
> 
> [1] hwloc with Xen backend: https://github.com/xenserver-next/hwloc/
> 
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
> ---

... below this first (or any later) such separator.

> --- a/xen/common/numa.c
> +++ b/xen/common/numa.c
> @@ -499,15 +499,41 @@ int __init compute_hash_shift(const struct node *nodes,
>      return shift;
>  }
>  
> -/* Initialize NODE_DATA given nodeid and start/end */
> +/**
> + * @brief Initialize a NUMA node's NODE_DATA given nodeid and start/end addrs.
> + *
> + * This function sets up the boot memory for a given NUMA node by calculating
> + * the node's start and end page frame numbers (PFNs) and determining
> + * the number of present RAM pages within the node's memory range.
> + *
> + * @param nodeid The identifier of the node to initialize.
> + * @param start The starting physical address of the node's memory range.
> + * @param end The ending physical address of the node's memory range.
> + */
>  void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end)
>  {
>      unsigned long start_pfn = paddr_to_pfn(start);
>      unsigned long end_pfn = paddr_to_pfn(end);
> +    unsigned long ram_start_pfn, ram_end_pfn;

These two variables would better live inside the loop, as it's only there
that they're used.

> +    unsigned int idx = 0;
> +    int err;
> +    paddr_t ram_start, ram_end;
>  
>      NODE_DATA(nodeid)->node_start_pfn = start_pfn;
>      NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
>  
> +    /* Calculate the numer of present RAM pages within the node: */

Nit: number

> +    NODE_DATA(nodeid)->node_present_pages = 0;
> +    while ( (err = arch_get_ram_range(idx++, &ram_start, &ram_end)) != -ENOENT )
> +    {
> +        if ( err || ram_start >= end || ram_end <= start )
> +            continue;  /* Not RAM (err != 0) or range is outside the node */
> +
> +        /* Add RAM that in the node's memory range (within start and end): */

Nit: I think you either want "that's" or s/that in/from/ (or something
substantially similar).

> +        ram_end_pfn = min(ram_end, end) >> PAGE_SHIFT;
> +        ram_start_pfn = (PAGE_ALIGN(max(ram_start, start))) >> PAGE_SHIFT;

You effectively do the comparisons twice - once in the if() and then a
second time in the min() / max(). Can't you simply check ram_start_pfn
against ram_end_pfn, totaling to one less comparison?

Also please don't open-code PFN_DOWN() / PFN_UP().

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 11:48:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 11:48:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813035.1225829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy8ho-0002pp-F6; Tue, 08 Oct 2024 11:48:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813035.1225829; Tue, 08 Oct 2024 11: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 1sy8ho-0002pi-BL; Tue, 08 Oct 2024 11:48:44 +0000
Received: by outflank-mailman (input) for mailman id 813035;
 Tue, 08 Oct 2024 11:48: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy8hn-0002pa-RN
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 11:48:43 +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 44626749-856b-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 13:48:42 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c5b954c359so6361777a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 04:48:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993ea3b890sm436639666b.167.2024.10.08.04.48.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 04:48:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 44626749-856b-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728388122; x=1728992922; 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=5FlZ+2220PNV0hgipAHf1HFiXKJ01L13PeHf5yRAK7c=;
        b=B+dxREMjvqk3edXl4tYL38ZdpfaF9X4/R38+Sd5eraIGYSbxSU9KW5K/ux9jf08sVO
         MBbcGNXySHm5ZTRe/4iufTY4XkrmcvqP83x/9gHQ/m3AiKUPf6ZsObkFhXFIU/E6aN5O
         CI1SiZLsBUsITGNnhSzG2ghn+ArY9HbAbcpnye0xaLADUqiytZ20jgixku2V2SLZmLTA
         zjyx9IpMJvr2GK/DtdgSf1JBCERpq5mkAxpFChLDmtDGg7SC2UljENIhzziMA/Szz/5R
         aIlmqfxMSvEym1eAqzHw9zI1QDANhraJd7Y6S6cvvZ/jvK1RlHBB+GzacUiZVjJ2nwBw
         JAbg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728388122; x=1728992922;
        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=5FlZ+2220PNV0hgipAHf1HFiXKJ01L13PeHf5yRAK7c=;
        b=OL4Gro23He7ReUTkpNQ1U7/WTyfwslSYS8Gci2YRoK3bN8rL29e9gLF0rqgxQOt8sW
         R56qjPM28nuF6MfwTy4r1xMiPAfd5PcEfnrLz0ANJMSHgybMQs/VvYiGnijrJ/c3ePui
         Lphs+cE3VX9NqnFEvR1g6es1cJNX/uOus+8D7orQydU9BLFx8tp9PpMybPOo9637CsFw
         0i2WAqf2twe8xsFiZQCbNCWEGwrHbs5yMITnC7bPo6bjH6r1KqU77XrFmS9WSeuHSL7A
         iPHJ5PajHUHsN1u/LowjlIwAKs5Unv7DqOBgLsVP4gTT8sCqSZhvgr9sMOLtcDcMi0Vc
         78xw==
X-Forwarded-Encrypted: i=1; AJvYcCXsT48+XNYygZ8XpHBYFB2VIAwu17hqqe0qb5rk16mkMZ2IxXH3pr3pwswBbjRcvTZ6bzetO46KILE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwIjkycjy9HOz9KEo0krAeVm60LtCyr/WLouANahMrZxQ7B6AsF
	EV612V6viwE52KZz56j8oeq5pTw3qo6+XFzqYSriR1ngs1+Oan8Li1RkeJUBQw==
X-Google-Smtp-Source: AGHT+IF5mUqzkTJE/j109mGmy0XS3vDZ4u1qE4Me0FVp1Qdk3oWsMSV52z6rBOY8mgxySa+01H3Yvg==
X-Received: by 2002:a17:907:94c3:b0:a7d:a680:23b5 with SMTP id a640c23a62f3a-a991bd79fc2mr1821299266b.33.1728388122188;
        Tue, 08 Oct 2024 04:48:42 -0700 (PDT)
Message-ID: <2a020197-e061-4d8d-9d49-df7878153d85@suse.com>
Date: Tue, 8 Oct 2024 13:48:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] MAINTAINERS: minor file line update
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <20241004111127.897937-1-frediano.ziglio@cloud.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: <20241004111127.897937-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 13:11, Frediano Ziglio wrote:
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -517,7 +517,7 @@ F:	stubdom/
>  TEE MEDIATORS
>  M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>  S:	Supported
> -F:	xen/arch/arm/include/asm/tee
> +F:	xen/arch/arm/include/asm/tee/
>  F:	xen/arch/arm/tee/

I think this is a change which actually wants ack-ing by the maintainer
named here, not THE REST. Cc-ing Volodymyr.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 12:02:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 12:02:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813058.1225838 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy8vV-0000Sq-0D; Tue, 08 Oct 2024 12:02:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813058.1225838; Tue, 08 Oct 2024 12:02: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 1sy8vU-0000Sj-Tg; Tue, 08 Oct 2024 12:02:52 +0000
Received: by outflank-mailman (input) for mailman id 813058;
 Tue, 08 Oct 2024 12:02: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=LJPt=RE=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sy8vT-0000Sd-Ps
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 12:02:51 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3d926485-856d-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 14:02:50 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c5cf26b95aso7186699a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 05:02:50 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9945cdcc60sm374341066b.28.2024.10.08.05.02.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 05:02:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d926485-856d-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728388970; x=1728993770; 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=sgDqoKbuDUm0T+uftFs7shPnZGJaEgaVaNmPYaCWirM=;
        b=lMoBf4LJPyB0lKriSc/oJ9wmMjn0TjGtBGnr4pGoje/RO+9HmiPSIhfqR/fITglV0c
         XyWX2fDtkt7QD71rKacnR4yqz8QDusoDC107gbdR1IzHfh7A35gdeqHi5L0hHhUsQd+K
         p1kfZYACb8TKh4o80nHZNJWE6kYxig3c2MRIA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728388970; x=1728993770;
        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=sgDqoKbuDUm0T+uftFs7shPnZGJaEgaVaNmPYaCWirM=;
        b=vWmhq5aGphXJ+f7XAhMSl8GQb/M3oHNhPMhzLcmZY5LUTAGtxVI3sK1CmUHrX6/sWS
         dRdZO3EHs79TuLFDQtY/ZvHETZCkNBRVY5rPVdFXeOvY29RvhB8LDe099RnbDeMRAKYI
         NFYgtO51E6JIrZQIvTfQAMZisOJ+bt/OudqgRC26Tm/iePR0LRXHO+fsLemJ3fgwaoOm
         QxKMai9wTo8OHcTYzer3ixa1lAC2N9cznvWjyF5b5oKw2HKxnOnyxCXt8U1FiZqkUYqA
         52m+xjAjimNwUk8lKfUoU1z4UTN6mJzmpag/9PidD1LvDlm96Tibpj9DoyebWkHtRbjI
         4FmQ==
X-Forwarded-Encrypted: i=1; AJvYcCU7yMqUtc92xDQktUQ1nFqhI/zpjYbogjsN4XFEILFWBg1BMdcvfGlgZxDRLDHs6Z4dt4yL2fgLijs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwjVYhoBXgBNzaSH4ha4Ila852QBd2u48e5BHFj4XKiTNhyjqIZ
	EqJgb36FISVZUrchS2JXZRcXKpgG9uTSLACNVWo2TWKGb82FhrnHaF+BbzgK/lE=
X-Google-Smtp-Source: AGHT+IE8FVNFCS4YiuoBW1fpcCkrQIcGTM3sE7GRBoRJCHhvUBIZ3fN42foIVxWKzr7cPN2Lvodndg==
X-Received: by 2002:a17:906:6a0e:b0:a99:55e7:9721 with SMTP id a640c23a62f3a-a9955e79c8amr646951966b.46.1728388969645;
        Tue, 08 Oct 2024 05:02:49 -0700 (PDT)
Message-ID: <d0fef81e-6c71-41fb-b159-08519f078477@citrix.com>
Date: Tue, 8 Oct 2024 13:02:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 0/6] Reuse 32 bit C code more safely
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
Content-Language: en-GB
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: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07/10/2024 3:15 pm, Frediano Ziglio wrote:
> Frediano Ziglio (6):
>   .gitignore: Remove not generated files
>   x86/boot: Rationalise .gitignore

These two are trivial so I've taken them.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 12:42:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 12:42:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813078.1225858 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy9XN-0000mR-T8; Tue, 08 Oct 2024 12:42:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813078.1225858; Tue, 08 Oct 2024 12:42: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 1sy9XN-0000mK-Ot; Tue, 08 Oct 2024 12:42:01 +0000
Received: by outflank-mailman (input) for mailman id 813078;
 Tue, 08 Oct 2024 12:41: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sy9XL-0000mE-St
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 12:41:59 +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 b4f0f5a2-8572-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 14:41:58 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c8967dd2c7so6956330a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 05:41:58 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05ecda3sm4264912a12.73.2024.10.08.05.41.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 05:41:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b4f0f5a2-8572-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728391317; x=1728996117; 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=BySjep1xRxNNS1Z9IMZ19XGhLwkUK6QE0n96zBZDpCw=;
        b=eMGBwlI52b9ti/NJk3CXiSvhn9uOHSN6R5AXVDHrM5mtjFfEyVzISkTnMnvS8580IX
         bHY8RKwfR0Xf8gjUZ+CTD2M4a3mwu1sVytAV7iDtd7hX8gHJZ/FuoTm1JYMNCmYxUlp4
         jyWPaHH4a4NH/AE/KdyjJe4Q8nTBznDlxrkbeDpZ5CxEUHPLdWvKMBceZsL4xf2L3Wgx
         jSQaeo4Q06w1C1bTvPJs+1BPlFB+niVJG7abRHFMAWDpru7oAcELTh1pCzHBYqiaYQ+W
         rpWNMWD5uX6XxmLG169NKzLLzy27mi8QyRE7E/YpAf7maR/J7bYNU2wQyz9sR49t/V1e
         pArw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728391317; x=1728996117;
        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=BySjep1xRxNNS1Z9IMZ19XGhLwkUK6QE0n96zBZDpCw=;
        b=f72tz4jhOk3qs/s34hpaf2WTR3Zkeqe7GdsSZyPg0qkXw1INDO5lyRAn+/huC/U+68
         o+GqdKyJjNgabN1ZDN6cpIajUqV0sq17Y4mHg5sRlOhYKjaHBQ7JdsE2SGPA60nWdo8/
         No7Uco/e2cSRnAQR8TMIJ4a1Jw1Jf3inYzU5eOx8R7PCXexWYOzaejuSqSkRYJYylj1J
         7mpHusTF83OJ28Xe7fqB+DLI8J3UzSrtK5FoLk5AvWZuzMIIH+Z+8IBK8RorKcj/RFh8
         tjtYfjsF9gazwgN9G4KsyHCCTu8i5X24Gd1lAHavNEj4PPj1UNVLI2mCAK0l1+AszXlf
         LmQQ==
X-Forwarded-Encrypted: i=1; AJvYcCXung8sB4e7GJMv4lvsxwqCbfW/GFfsxcbSw9B6wgZxoKZNZ7m/4r334YyCiG1tv5Ait2uIQHneas0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwiA9glUwwnzqFxjyv5gChLvYKaafEie40BZgx29IT/0lmH11pn
	ZgMNQYJD1qEWnCzYM5gmzeiV6nAmB6abz23P2toTx4urBq0xsILqe3az9xGwYQ==
X-Google-Smtp-Source: AGHT+IGAlu+cKaCVckdsg3uxp4v+w6rA+Mc10Zlx1d75GCxMMDHNYGM8rocZjRFfZS/PnTRQ71K4/g==
X-Received: by 2002:a05:6402:51d0:b0:5c8:b983:cf35 with SMTP id 4fb4d7f45d1cf-5c8d2e73414mr13622212a12.22.1728391317524;
        Tue, 08 Oct 2024 05:41:57 -0700 (PDT)
Message-ID: <24ac3cd7-5c49-49d2-9a74-9e8572c62dba@suse.com>
Date: Tue, 8 Oct 2024 14:41:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/msr: add log messages to MSR state load error
 paths
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20241008083901.72850-1-roger.pau@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: <20241008083901.72850-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.10.2024 10:39, Roger Pau Monne wrote:
> Some error paths in the MSR state loading logic don't contain error messages,
> which makes debugging them quite hard without adding extra patches to print the
> information.
> 
> Add two new log messages to the MSR state load path that print information
> about the entry that failed to load, for both PV and HVM.
> 
> While there also adjust XEN_DOMCTL_set_vcpu_msrs to return -ENXIO in case the
> MSR is unhandled or can't be loaded, so it matches the error code used by HVM
> MSR loading (and it's less ambiguous than -EINVAL).
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

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

> ---
> Changes since v1:
>  - Add messages to PV MSR loading.
>  - Return -ENXIO from PV loading path also.

I'm not fully convinced of the need to change the error code, but I also don't
mind it.

Jan



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 12:50:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 12:50:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813087.1225886 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy9f3-0004YO-Ok; Tue, 08 Oct 2024 12:49:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813087.1225886; Tue, 08 Oct 2024 12:49: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 1sy9f3-0004YH-M7; Tue, 08 Oct 2024 12:49:57 +0000
Received: by outflank-mailman (input) for mailman id 813087;
 Tue, 08 Oct 2024 12:49: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=qE7Y=RE=bugseng.com=roberto.bagnara@srs-se1.protection.inumbo.net>)
 id 1sy9f2-0004YB-7W
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 12:49:56 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d1001115-8573-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 14:49:54 +0200 (CEST)
Received: from [192.168.1.219] (unknown [151.29.43.51])
 by support.bugseng.com (Postfix) with ESMTPSA id 5C8684EE0743;
 Tue,  8 Oct 2024 14:49:53 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d1001115-8573-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1728391793; bh=sFalaaj0L0R8cRkDDRzsDFz2MqByPFvCoeHbDBl5VKg=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=OaYlCq6v7kxthcLSesbDecUhPvaaWU3tTpNHJQqDePAmFMThQ+a+WE6siQzete461
	 REmng6h9dqlU49dNd1LGbIb20dTEQHTqX/zQ5UkgB4/MW+oNEIUk+GMfz/IOQEoVwu
	 0H9N8Xmw4MXLy5dub2bE/FuPlaClTBmX7NwUI8s45bnuIYQhyBt5+FENCP2rlZMbR8
	 D8CWaJwEx9fw6wZG4HXCt4nKtf++sZy9Nc10BvXQ+6+zvRnmUnq2+qWh8kfR2mnTMd
	 c7jdUks0bfQz5lTl371fYQGyAaBIpYbQDU9Bhskt9NnQjAqG9oiWqFUCeYKgXrf9yv
	 Gc1IHtrVi7YFA==
Message-ID: <9adf139f-cfa4-4e71-a02b-5b7cff898d01@bugseng.com>
Date: Tue, 8 Oct 2024 14:49:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
To: Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
 consulting@bugseng.com, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
 <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
 <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
 <alpine.DEB.2.22.394.2410011431360.451631@ubuntu-linux-20-04-desktop>
 <02833aad-d6f1-4ffa-8d4a-d8c31e9b0524@suse.com>
 <2f51a8e7-4044-4a84-a541-100799a28012@bugseng.com>
 <1f8f6a0c-980f-43cb-9967-801641f8dbc0@suse.com>
Content-Language: en-US
From: Roberto Bagnara <roberto.bagnara@bugseng.com>
In-Reply-To: <1f8f6a0c-980f-43cb-9967-801641f8dbc0@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2024-10-08 07:59, Jan Beulich wrote:
> On 02.10.2024 08:54, Roberto Bagnara wrote:
>> On 2024-10-02 08:09, Jan Beulich wrote:
>>> On 01.10.2024 23:36, Stefano Stabellini wrote:
>>>> On Tue, 1 Oct 2024, Jan Beulich wrote:
>>>>> On 01.10.2024 07:25, Roberto Bagnara wrote:
>>>>>> On 2024-09-30 15:07, Jan Beulich wrote:
>>>>>>> On 30.09.2024 14:49, Federico Serafini wrote:
>>>>>>>> guest_handle_ok()'s expansion contains a sizeof() involving its
>>>>>>>> first argument which is guest_handle_cast().
>>>>>>>> The expansion of the latter, in turn, contains a variable
>>>>>>>> initialization.
>>>>>>>>
>>>>>>>> Since MISRA considers the initialization (even of a local variable)
>>>>>>>> a side effect, the chain of expansions mentioned above violates
>>>>>>>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
>>>>>>>> contain any expression which has potential side effect).
>>>>>>>
>>>>>>> I'm afraid I need to ask for clarification of terminology and alike here.
>>>>>>> While the Misra doc has a section on Persistent Side Effects in its
>>>>>>> Glossary appendix, what constitutes a side effect from its pov isn't
>>>>>>> really spelled out anywhere. Which in turn raises the question whether it
>>>>>>> is indeed Misra (and not just Eclair) which deems initialization a side
>>>>>>> effect. This is even more so relevant as 13.6 talks of only expressions,
>>>>>>> yet initializers fall under declarations (in turn involving an expression
>>>>>>> on the rhs of the equal sign).
>>>>>>>
>>>>>>> All the same of course affects patch 2 then, too.
>>>>>>
>>>>>> MISRA C leaves the definition of "side effect" to the C Standard.
>>>>>> E.g., C18 5.1.2.3p2:
>>>>>>
>>>>>>      Accessing a volatile object, modifying an object, modifying a file,
>>>>>>      or calling a function that does any of those operations are all
>>>>>>      side effects,[omitted irrelevant footnote reference] which are
>>>>>>      changes in the state of the execution environment.
>>>>>>
>>>>>> The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
>>>>>> indirectly confirms that initialization is always a side effect.
>>>>>
>>>>> Hmm, that's interesting: There's indeed an example with an initializer
>>>>> there. Yet to me the text you quote from the C standard does not say
>>>>> that initialization is a side effect - it would be "modifying an
>>>>> object" aiui, yet ahead of initialization being complete the object
>>>>> doesn't "exist" imo, and hence can be "modified" only afterwards.
>>>>
>>>> I feel it's becoming a bit too philosophical. Since there's some room
>>>> for interpretation and only two violations left to address, I believe
>>>> it's best to stick with the stricter interpretation of the definition.
>>>> Therefore, I'd proceed with this series in its current form.
>>>
>>> Proceeding with the series in its current form may be okay (as you say,
>>> you view the changes as readability improvements anyway), but imo the
>>> interpretation needs settling on no matter what. In fact even for these
>>> two patches it may affect what their descriptions ought to say (would
>>> be nice imo to avoid permanently recording potentially misleading
>>> information by committing as is). And of course clarity would help
>>> dealing with future instances that might appear. I take it you realize
>>> that if someone had submitted a patch adding code similar to the
>>> original forms of what's being altered here, it would be relatively
>>> unlikely for a reviewer to spot the issue. IOW here we're making
>>> ourselves heavily dependent upon Eclair spotting (supposed) issues,
>>> adding extra work and delays for such changes to go in.
>>
>> You can do two things to obtain a second opinion:
>>
>> 1) Use the MISRA forum (here is the link to the forum
>>      section devoted to the side-effect rules of MISRA C:2012
>>      and MISRA C:2023 (https://forum.misra.org.uk/forumdisplay.php?fid=168).
>>      The MISRA C Working Group will, in due course, provide
>>      you with an official answer to your questions about what,
>>      for the interpretation of Rule 13.6, has to be considered
>>      a side effect.
>>
>> 2) Reach out to your ISO National Body and try to obtain
>>      an official answer from ISO/IEC JTC1/SC22/WG14 (the
>>      international standardization working group for the
>>      programming language C) to your questions about what the
>>      C Standard considers to be side effects.
> 
> I took the latter route, and to my (positive) surprise I got back an answer
> the same day. There was a request for someone to confirm, but so far I didn't
> see further replies. Since this is a German institution I raised the question
> in German and got back an answer in German (attached); I've tried my best to
> translate this without falsifying anything, but I've omitted non-technical
> parts:
> 
> "Initialization of an object is never a side effect of the initialization
> by itself. Of course expressions used for initialization can themselves have
> side effects on other objects.
> 
> @Andreas: Do you agree? C after all has a far simpler object model than C++.
> The (potential) change in object representation (i.e. the bytes underlying
> the object) is not a side effect of object initialization, but its primary
> purpose."
> 
> Further for Misra she added a reference to a Swiss person, but I think with
> Bugseng we have sufficient expertise there.

Unfortunately, the (translation of the) answer you received adds
confusion to previous confusion: who answered has highlighted the
"side" part of the term, which is indeed relevant in computer science,
but not for the C standard.  To the point that the same argument could
be used to deny that ++i has a side effect because the increment is
the "primary" effect...

Part of the confusion is maybe in the the following paragraph Jan
wrote earlier:

 > Hmm, that's interesting: There's indeed an example with an initializer
 > there. Yet to me the text you quote from the C standard does not say
 > that initialization is a side effect - it would be "modifying an
 > object" aiui, yet ahead of initialization being complete the object
 > doesn't "exist" imo, and hence can be "modified" only afterwards.

In C, it is not true that the object does not exist ahead of
initialization.  Try the following:

extern int f(int* p);

int main() {
   int i = f(&i);
}

Kind regards,

    Roberto


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 12:50:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 12:50:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813090.1225897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy9fm-0005tv-0a; Tue, 08 Oct 2024 12:50:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813090.1225897; Tue, 08 Oct 2024 12: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 1sy9fl-0005to-UA; Tue, 08 Oct 2024 12:50:41 +0000
Received: by outflank-mailman (input) for mailman id 813090;
 Tue, 08 Oct 2024 12:50: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sy9fk-0005rB-E7
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 12:50:40 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on2060f.outbound.protection.outlook.com
 [2a01:111:f403:240a::60f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id eafc7c13-8573-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 14:50:39 +0200 (CEST)
Received: from SJ0PR05CA0195.namprd05.prod.outlook.com (2603:10b6:a03:330::20)
 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.8048.16; Tue, 8 Oct
 2024 12:50:32 +0000
Received: from SJ5PEPF000001CD.namprd05.prod.outlook.com
 (2603:10b6:a03:330:cafe::db) by SJ0PR05CA0195.outlook.office365.com
 (2603:10b6:a03:330::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.12 via Frontend
 Transport; Tue, 8 Oct 2024 12:50:32 +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.8048.13 via Frontend Transport; Tue, 8 Oct 2024 12:50:32 +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.39; Tue, 8 Oct
 2024 07:50:31 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 07:50:31 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eafc7c13-8573-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vq8ofC4XG01l7MgYJ90ongGsNdaGcCkqPnRzmWgTAJGHiaW4rozRSUk0ga6Qc22wMRh8xh2f1bDvDgIL+Hv9qpmK1Fc2Gd8Qi60Vj4cGwMSsm+pRGG4GcZPhQq/q0vOvS7IcekaJWPvcn6l9DIY42ll6oicWp7wX5wl2vnevTswk3FnbJq34w1OSVuoilYG2PYg2o118l/t3seeJnauJ5B0yywtrpGsEmGgbmWwbDAatOiJtISOunpsZKYofXTpBhmSNlOEOwpNfG6TxX1T1tv4k2aPcV6dmWDisPfFGgeoxaQQk/4prkpuUsfswYzxKxFZ5LOExkmdeCCsU/2zxXg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Att16ngqradHmcNqIGn7ZQ/14WMy3qBbbxrwzUT/qzI=;
 b=f2pqWyhVOMtAihFhzf6z2nweGcQnNE5HTa05rJwxkamWrv0F4O2bBcAww0JQdzHc35z5c/jH+RacVvBtLtfQzwW+9kj0Od/p+DOy4vW9ZCU26WRxVD/2u7UwU9TJ/WT3iFZtzoYInW0sTWKBpNavY7bISg4rfJcVGKpRgncPmRvJVMmOysSKagxgHIstAyRshxuHh5fBVD0O6T/8rvbJ+XBp8Y0VlBcGsDcTkWJzbM89g7mR27XiMnQr2PEt1WNimyg6p+zPI1Tzq3CitWlRaTT9LN2Hvej7B1TISFi3ePgldgG+189OzbcK09ckoan1uyN5DYieWk6uEiOK+YzDZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=Att16ngqradHmcNqIGn7ZQ/14WMy3qBbbxrwzUT/qzI=;
 b=fGQz7GcQUN/zC8Owul+VBpge01Hkj7X7y0Cp/xeyTuxlqP4+UmVbCSDJU9aUXklbbKF3226ca9O7wmQZ0jfEd9zUo1qD1L/yJk3vZfihBS6i41bGrfF08wGk+ix/VqAl2oXbJeeuH+MLH0OXfeXhKuuQTvNjp+3VxPh3h/p2Jc8=
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: <f27aa052-9f6c-4684-8a94-98123576d8cc@amd.com>
Date: Tue, 8 Oct 2024 08:50:33 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 18/44] x86/boot: convert late microcode loading to
 struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-19-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-19-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CD:EE_|PH7PR12MB7890:EE_
X-MS-Office365-Filtering-Correlation-Id: a5f34e7f-63ad-41df-5c62-08dce797cbed
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VXBLdDRod1dsZFdRcnhGWUFYRlhuWFdZMkxOT3d3VGFDV2xlUVlERmFJMXNY?=
 =?utf-8?B?REdxV2ZlS3VzT1FQQzFuYTgwQXVwYnVIdVNMeDduV3VreEhyTnE0SFgzZkxH?=
 =?utf-8?B?TTJUZWxQWjQrR0lmaEN5cVE0WW9VVWNMYk9WQ2wvcTlxdmF6Y1J6QVkrM2ox?=
 =?utf-8?B?MS8xMmd1ZEZ1Nis1aGYzNE9ra1I4ODErdjRlOW1Gb2pwL2NiZUxLZlNEN25v?=
 =?utf-8?B?MkRrVjdndFZucXgvOTdEclRwQ2NkSXBQY1ZZODh3Ym5GcVRmUjI3L3lPRTlx?=
 =?utf-8?B?NFlqNjZkWHhmbko3Y2dpc0YrNWd3dXFsZVpuaXJnaG5uUkpSem01aHpscTdy?=
 =?utf-8?B?UXR0Z3NLZTkwSVFCUDJnZGVQY0VQYXphRjJNaTlaS1Y5SmRZUnR1cWplanNO?=
 =?utf-8?B?bUZmbzV6TlJtRjQyQlQ5a3ZaVXMvdUZuVVdtNytsVitxa280WDhIL1Fpbnk4?=
 =?utf-8?B?a1FQTkRqY1VweTA1REdUbFpBM3hmTGF2alB5RHB0T3E1QmJOcThTQkt1RTJY?=
 =?utf-8?B?Rmt4dmZXNC9wbDhLMG1IZnA5aSt4R2dEVVdYSldoc2R0b01Qa3VtUGVKZjBW?=
 =?utf-8?B?eHdRSnoweE92cnpxeXhBdDExVndYR2Yxa0JkVDVKZ1lxcW1ZbXcxcUZDNGM0?=
 =?utf-8?B?R1k5TXdYc2c0eTZSY0YxdzBBcmJ4K3N4U1ZLNjZoVmVEUGtZNTN2MGxyL2RZ?=
 =?utf-8?B?OHpWNVdkQjNHVEl3YlFhbVBuNWJCZVY3T08yYm15ZTJXL01QWStlMC9tdCtO?=
 =?utf-8?B?Z1pwUjdadVJIR21ISmZpM3o0eUptWlNPUzlTZzdTK0hWcW4zMnJIUXExU0cz?=
 =?utf-8?B?dzVVd1dJRVJlWVpyaTFCS01xbGtLOEJoWkIzcnMyV2JmSDZqQUM1RjJmSW9N?=
 =?utf-8?B?Z3EwY1dDNUk4djR6djdUaG1pQ0tiT1VZS1VsazdSbXpNdmZLNXVWSkc1dFlL?=
 =?utf-8?B?Tk1jOFhLdzUxYkIyamY0QW5pc3ZmL1ExUy9Ud3lveU9UUWpHQ3hIT0ZWUHIw?=
 =?utf-8?B?SExRVEZVUjdJaHlhS1VoUVluNmZBNEVYeDByRkQvYUVWTExkR0c0c0dQOXdH?=
 =?utf-8?B?alh2SzBPUFFJTTJReURsbnUwRERnMjMzM0VzWGZ6ZXQ5aHJ2b0VXa3N1cDFy?=
 =?utf-8?B?MlRpVVBkYmpsY3UwWVpWS0U3di9kL3dRbzZyNjJ4azlLa2Z6Qm90eGVXR3Yr?=
 =?utf-8?B?RHZFWUVIakdXOGVST1NBRVZYRUNqVWp5VzRvUDhuaWpJWldVdHk4cCtxeDhj?=
 =?utf-8?B?dG9vS21zVEJMTGV4M1VWWlNzL0NNQnVHRm91MHRaSjBGUzNUbjF6L1lmUHd4?=
 =?utf-8?B?MTROWXVUZjM0U2RWcVNjR1RZZ1JwYUxHaEluR0RWdnFqcDVjSURjZTdDYW9u?=
 =?utf-8?B?WG9VczQ0bHN3Tmo5dmllRHl6eVhJTE9lN2NQN1pRZ0N4di9GV1Vac05wMzQv?=
 =?utf-8?B?K1ZWWlBtWWczS3hLamxLNEpBUkI0VTN4Sm5NSHZIa1NtVTRvSEl3Yi9RVlFr?=
 =?utf-8?B?MklucEpGZjlMVUNOQ1F2TW5NVkFmTmJlWmd4cHV3aEtNWWE0UE53QkpibjJp?=
 =?utf-8?B?a0EzdWxsbmd0MGFwZFl6Wmp3VXdXRUlmSjRCY0JZczBRUHJtZ1BFdWZSRTZK?=
 =?utf-8?B?aUtUZGtUQ3ZyR05XdXRsZ1VpWDV0Ri95WTRKOG1XVWpYOGl0SktaenZyOXV1?=
 =?utf-8?B?VGlUT3NqbUNzd1dUQTdlWUszLzcvSnFveE1CMWZCSDlNdUR0VC9EM052UWQv?=
 =?utf-8?B?RnlpNDhSSTRGYUs3R2Z0dTNualNSQU14UEVvemJUdStWZHZZVTJsQkt5SDlL?=
 =?utf-8?B?ckwvU0hlSCtQY2RXTkVGeWd2Y09HMGgrTkdVOUFLTi90OHBjYUlDM3N2SUlj?=
 =?utf-8?Q?LwmX1HgO2Dzka?=
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:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 12:50:32.4988
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a5f34e7f-63ad-41df-5c62-08dce797cbed
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: PH7PR12MB7890

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Remove the use of struct mod to hold the reference for the microcode,
> converting the code to work with a struct boot_module.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 12:50:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 12:50:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813093.1225907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy9g1-0006GY-Bq; Tue, 08 Oct 2024 12:50:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813093.1225907; Tue, 08 Oct 2024 12:50: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 1sy9g1-0006GR-8g; Tue, 08 Oct 2024 12:50:57 +0000
Received: by outflank-mailman (input) for mailman id 813093;
 Tue, 08 Oct 2024 12:50: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sy9fz-0006FM-JW
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 12:50:55 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on2061c.outbound.protection.outlook.com
 [2a01:111:f403:2409::61c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f351d56c-8573-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 14:50:53 +0200 (CEST)
Received: from DM6PR08CA0046.namprd08.prod.outlook.com (2603:10b6:5:1e0::20)
 by CH3PR12MB8332.namprd12.prod.outlook.com (2603:10b6:610:131::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 12:50:45 +0000
Received: from DS3PEPF000099E2.namprd04.prod.outlook.com
 (2603:10b6:5:1e0:cafe::ab) by DM6PR08CA0046.outlook.office365.com
 (2603:10b6:5:1e0::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Tue, 8 Oct 2024 12:50:45 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS3PEPF000099E2.mail.protection.outlook.com (10.167.17.201) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 12:50:45 +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.39; Tue, 8 Oct
 2024 07:50:44 -0500
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.39; Tue, 8 Oct
 2024 07:50:44 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 07:50:43 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f351d56c-8573-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=sakpdsTion0Q/fjPI4FhF9ZqdFrexHgMV5LB8DS7B1mPQ6ylF2qViFF5KNy0OI8LIscIDD3HbQOjr18dM9aXpgHIL3W+aXGLLxS0FHkPiDAScdigp6Ud3QYBCf+qY7f54tFnQFKBs5h6VqGka4ovGQdZLUlwX6R5FldGRGueW1AodYQMGymBKBsQfDWbluujfYhzJ/dr+kDj+t37xbHbDvoo8qWnzwzZ/LPK0YiqYIRMC6yt+h5lxBduWYwKWvjBn4kL6TR5dM8gFmgBwBJ5qEeEggOSmfWZ25DCMEcTxeh6mC+vQNeTBRCJFvrs7zoYEqZVWsN+S6AYCJv27+1CNA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=9BxxHN748KKqosFLQm/xYgkzGxJlTZQb0cyL8d+Np04=;
 b=PanlExWs6WHxewcSsHf14JoTAinmr2Q0cajXt19KyfYPHHOSrqyfnWQB3ueh9o1Z1AvW48gwDf272IN8Jjg5dP5ryYKTK10XlgJ6Zm3D59Q0Z0WnftY+T0TFpHfHJTHOkAo33EGsw9Dg8lQnCLd5gAcbzgHRt9JQO2EHX9NA8qYp0iC0hTNNC/cP66ChaTALNtX5cLV3SjovJvmUPrT8XcwPm8jzL3r9oDFG/yiSuUCYZLauDM4FKUETv3KmWg9fWb+OlVrF62CRx13AdcRMncGCBiHIwwnLV62mFD7x1BONzMvwEtqZRhPkLZT10/IkrLgZ2Wuas9DL8THL5qDTtA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=9BxxHN748KKqosFLQm/xYgkzGxJlTZQb0cyL8d+Np04=;
 b=CnVuUoT2SXJB58X5I2AAtdkT+H8fINYMroibUkVwH5sq2b4IUqnoyDPbiffhPSFGkVjCQ4zog+T/e7EtKezW4z6znUj6EeQ2hrHBThXI573yxxBMj0gQgtVF9Zt2V3+0+0XD7HwKfY0P1DJjGTVUIpZUHxAxe8I/BGT60e7QHfQ=
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: <62d1b295-6c79-48d3-a340-1544ca8ed534@amd.com>
Date: Tue, 8 Oct 2024 08:50:46 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 17/44] x86/boot: convert microcode loading to consume
 struct boot_info
From: Jason Andryuk <jason.andryuk@amd.com>
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-18-dpsmith@apertussolutions.com>
 <d0d8e53d-d2a2-4441-86cd-6f50aaa36075@amd.com>
Content-Language: en-US
In-Reply-To: <d0d8e53d-d2a2-4441-86cd-6f50aaa36075@amd.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099E2:EE_|CH3PR12MB8332:EE_
X-MS-Office365-Filtering-Correlation-Id: 865bbfd7-c492-4ffe-0c7b-08dce797d38e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VGZtTzkva2JremtZeldEd1VEUklUSGlscnJCWkFlQW1aRlBkQ21oQkVyUmdH?=
 =?utf-8?B?QmhHaTFvQ1RWM1hrbFAycGFBekg4M0JTZTg0dGRCRFBQWEliM0lvdldmSU0v?=
 =?utf-8?B?VU9LMjBuQWgrM3dlcVJkZUs2UDFQOXlyK2FoR1hpSUJtYVREWjcwTkVSVFZM?=
 =?utf-8?B?MG91VmFSaGZ1YmNCS05pL096aDUzMjUyQVVmTkw2M0s5cDNyN2FiTFJ2bFkv?=
 =?utf-8?B?WWZXV2EzZE5vc2FFRUlvektXelNMeG11bWdDUFY0bm1pZnRQTS9PUHRQdWxn?=
 =?utf-8?B?WEQzUmdCcStUVjR0OU5CQldJWDBFaW5WQjFkMzFWSDY2OGo0dERseER4a21E?=
 =?utf-8?B?SjZaS2JxNm9heGpKdzRDMS9sTFpQdlpoWVNkNmU3WHduR1BJMzNwbVV0MElF?=
 =?utf-8?B?NUV1aVF6ajVGUXRlWWdyMGNUOVgvNXZwWWNycDNjR2FLQm9QaTVVNFdoZ0Fz?=
 =?utf-8?B?ajBpZE5HMlJjSGJTSk5RRDRFR3hnc29TaHdGY0FXeEg5LzhwY1JiamlKTnZo?=
 =?utf-8?B?VUlHN1RwOFNjS0pWVnIvSExtOW5HeHg0NncvV0QvVWJpVklTNVpMNFQveW1K?=
 =?utf-8?B?UWl5blF5c280VTZkUlhXU1dERVdzbVliUmV6YVozakxkL1IxV1dDM3J1Uzgz?=
 =?utf-8?B?eTJWVVZScVdYeCsxcnFoU1F5Tk1qaFFRNzBZd1V2Y1R5SC9SdHdwVTA4MUds?=
 =?utf-8?B?UnN1dVVkU1AwbHdpSFE5VjEyRzh0UVE0MTZueGg0OHQ5VzU2WVdUZzc2SHVD?=
 =?utf-8?B?UzZMeVgxdGtwU0RERWd4S01WS3hoZnpXb09WVjFOZnBoWEhPTVJhY0Q0UEVz?=
 =?utf-8?B?aG5MSTdBOG82elUvekV1MTZxVXRNVUtHZlBrb1kvSW55YXpDMkYvVGdyanFX?=
 =?utf-8?B?eXltN2YxL3VjSXpyQm14aGhpQ21HNTZmZUpQRS9iMFh2SHpTejI0cm05UUJF?=
 =?utf-8?B?ZGYwdkhyVElJZzJhQk94NG0rc3lsZ242N3hCVnd1OG9qVHEvcm5LL1NyN1FQ?=
 =?utf-8?B?c3RrN3lWdlN4aWMyMVRUMzZEUHpiRUorUTU1WHJBRFl1R1k1ZWpySUp6NXpt?=
 =?utf-8?B?U3krSzNYTitsSVc2cjNoTVlxYzNkR2wxZzRBbVR1QVJ3V09VazVjT0V0MkJC?=
 =?utf-8?B?Zkw1VWxoMFU1eDlFdVpwT0RrQjBMMTB0S2Ivb2NjVG1MdXJWR296OTVIdzlD?=
 =?utf-8?B?d1NZTjNZeHVzaS9Vb0FtOHo1eVlja0tEY2diajd0b0lLeHRydWxRcnZXV0Zh?=
 =?utf-8?B?Z2dra0ljZGlOa1RyOXdaUCt1UG1UY0VobHB0WUpCUkYrZnZkWU1DeVRTRW5t?=
 =?utf-8?B?ZnE3MnVZbmNLR2xuVitBVjVWUUkwTUhEbHdvbnMvd3ljQ3hZb2s0QTRDbXhH?=
 =?utf-8?B?MGJRTXByNEp1OFduaHI1aEtCNFErZGVndEswNzRKcDlQYkw4N2RtdzUyWVd6?=
 =?utf-8?B?WkNCOHR3ZWpXTk13d01SeDYrWU1vdjZJQnVEUCtUUXNEeHBCQUtlbWc2VVAy?=
 =?utf-8?B?R2pOWjhUcnJZVCtrZi9hNWpIeTZCb2xEaVdKQlZuSC81T3p1WTBaVjdla2k1?=
 =?utf-8?B?MG9ONk9tRGRkeGYzZmYwQ1o5K2tuaGh1QTQrcHJOaGE5Q1hFbEZlMlNmbHZP?=
 =?utf-8?B?SEtZcXl4MjdKTE51R2RwMWcrMnNFNTNHWW5tRW5ydE5RNVIxVXRMUXU1QlFP?=
 =?utf-8?B?amdydDgxUVRyMmM0d0dBZng5aklwTWpsVlFSM1FxMzlPcDJaOUxKZmRFaDly?=
 =?utf-8?B?OEhNZDJ5YmRUdzc4ZUtzWURSNWszenJWOG1ydXlMQ0lBWXV4STZybDIwNXhv?=
 =?utf-8?B?U0wzQU1ROUsxaW9kSGZMS2VwendiWmFGT2xOWWc4YitWNkphQkJvcEF4ekxF?=
 =?utf-8?Q?AMLcjPvUl+kZG?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 12:50:45.3897
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 865bbfd7-c492-4ffe-0c7b-08dce797d38e
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:
	DS3PEPF000099E2.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8332

On 2024-10-07 17:22, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Convert the microcode loading functions to take struct boot_info, and 
>> then
>> using struct boot_module to map and check for microcode. To keep the 
>> changes
>> focused, continue using the struct mod to hold the reference to the 
>> microcode
>> that is used by the late microcode logic.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/cpu/microcode/core.c    | 37 +++++++++++++---------------
>>   xen/arch/x86/include/asm/bootinfo.h  |  1 +
>>   xen/arch/x86/include/asm/microcode.h | 14 ++++++-----
>>   xen/arch/x86/setup.c                 |  4 +--
>>   4 files changed, 28 insertions(+), 28 deletions(-)
>>
>> diff --git a/xen/arch/x86/cpu/microcode/core.c 
>> b/xen/arch/x86/cpu/microcode/core.c
>> index 8564e4d2c94c..22fea80bc97e 100644
>> --- a/xen/arch/x86/cpu/microcode/core.c
>> +++ b/xen/arch/x86/cpu/microcode/core.c
> 
>> @@ -205,20 +204,18 @@ static void __init microcode_scan_module(
>>   }
>>   static void __init microcode_grab_module(
>> -    unsigned long *module_map,
>> -    const multiboot_info_t *mbi)
>> +    unsigned long *module_map, struct boot_info *bi)
>>   {
>> -    module_t *mod = (module_t *)__va(mbi->mods_addr);
>> -
>>       if ( ucode_mod_idx < 0 )
>> -        ucode_mod_idx += mbi->mods_count;
>> -    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
>> +        ucode_mod_idx += bi->nr_modules;
>> +    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
>>            !__test_and_clear_bit(ucode_mod_idx, module_map) )
>>           goto scan;
>> -    ucode_mod = mod[ucode_mod_idx];
>> +    bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
>> +    ucode_mod = *bi->mods[ucode_mod_idx].mod;
> 
> Why the dereference: *bi->mods[ucode_mod_idx].mod; ?  I don't think it 
> should be there.

Oh, the next patch shows ucode_mod is not a pointer, so dereferencing is 
correct.   Sorry for the noise.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 13:01:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 13:01:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813110.1225917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sy9pv-0002ps-9A; Tue, 08 Oct 2024 13:01:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813110.1225917; Tue, 08 Oct 2024 13:01: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 1sy9pv-0002pl-5D; Tue, 08 Oct 2024 13:01:11 +0000
Received: by outflank-mailman (input) for mailman id 813110;
 Tue, 08 Oct 2024 13:01: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=7aYj=RE=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1sy9pt-0002pf-Gv
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 13:01:09 +0000
Received: from fhigh-a8-smtp.messagingengine.com
 (fhigh-a8-smtp.messagingengine.com [103.168.172.159])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 60f5e540-8575-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 15:01:06 +0200 (CEST)
Received: from phl-compute-01.internal (phl-compute-01.phl.internal
 [10.202.2.41])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 21E751140227;
 Tue,  8 Oct 2024 09:01:05 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-01.internal (MEProxy); Tue, 08 Oct 2024 09:01:05 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 8 Oct 2024 09:01:02 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 60f5e540-8575-11ef-99a2-01e77a169b0f
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=1728392465;
	 x=1728478865; bh=taQaM4mliRg41dfr8UW+UA/4bdOxFihm4Mv6IQ6cfkw=; b=
	dG7AUr4F+A/ofYnwD9NRDHrXqTkGjpsl6FWtY7pP8XfcWkp+wbv00/0vuKPuzTN/
	wo/D5YHQ5Q/iBRj9okslPdvBhHHSXbWoXhs420ViDP+WCREYAeD10Rh4OJOm1ooL
	v/el3nspJuKJSRumbGNOFTWT1nz6rdmFo8v/hUDIMMz0E52O6lma/bzgQ8eUp13e
	iY83i4av+lWcd8jvjGbEjnvsvC11fJtKWBuLBV1bJ0jiox0ErvJQ4YnzNrgKVr8Y
	dNirywfe/fdWgGOv13hQKucXUXRfN5PmGRIXo6dQUyfb9611f2GBIwwsrcXBkOhx
	2ZfLNKUZ1N/ztDBFtbodJQ==
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=1728392465; x=1728478865; bh=taQaM4mliRg41dfr8UW+UA/4bdOx
	Fihm4Mv6IQ6cfkw=; b=aKiiRm3Z2OKsENYiL2R5ez5cpZJEtVrLjmYOwlGPskH0
	mh5AQhiRESK4KvrhFGT0bQZmOYU6DJaMTZhC9m6C3eU4bU5JDIMdZjj4cjqITliw
	39Ix/N+ZtUc6Tymy0RLDjYBICwi6iXB9ZV4Cg0//UyqCbZHVmAL17DLgEcbI1J4e
	2v9uRvKE6q93UamxuvHScD0wCgmSXuZi0rrO833WJ1XXmVu0PpUz6uuogaZE8Fz4
	2KVj3GIpW+/RUyuNZ9USly1JKvgBFt+y7fqqHjUYrZZoamdfjWnV/d80rx0BOyRu
	M9qX2ZZNQguylTE1UtBWzmQbc2qRw+bCZzemph8a4Q==
X-ME-Sender: <xms:EC0FZ1AevPefEwgqVIUqdqakbBdvSFIQh7NceqwBRy09GDWa9qyfcw>
    <xme:EC0FZzjkChhvMUEG-HndO05S_X5NuENFix6VZLrssm9qUPaHXOWKM_5Cc9OsG73QM
    -onRtW3lx_fmw>
X-ME-Received: <xmr:EC0FZwnUrfAuqXsQlRwKRW7pzRfuN1Dl78W2uR9Vtw6v8lenDFuMFL4>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdefuddgheelucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepfeffudeludffvdegleelgeetfeffvdetudegtefhleehteffgfffhe
    dukeeitdeknecuffhomhgrihhnpehmihhsrhgrrdhorhhgrdhukhenucevlhhushhtvghr
    ufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvh
    hishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopeekpdhmohgu
    vgepshhmthhpohhuthdprhgtphhtthhopehrohgsvghrthhordgsrghgnhgrrhgrsegsuh
    hgshgvnhhgrdgtohhmpdhrtghpthhtohepjhgsvghulhhitghhsehsuhhsvgdrtghomhdp
    rhgtphhtthhopehsshhtrggsvghllhhinhhisehkvghrnhgvlhdrohhrghdprhgtphhtth
    hopehfvgguvghrihgtohdrshgvrhgrfhhinhhisegsuhhgshgvnhhgrdgtohhmpdhrtghp
    thhtoheptghonhhsuhhlthhinhhgsegsuhhgshgvnhhgrdgtohhmpdhrtghpthhtohepug
    hpshhmihhthhesrghpvghrthhushhsohhluhhtihhonhhsrdgtohhmpdhrtghpthhtohep
    rghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhopeigvg
    hnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrgh
X-ME-Proxy: <xmx:EC0FZ_zJsjEwVsjSpx-oGeCgwLNBq1tkDyi6KDTDKBJTCa8BS2qqDg>
    <xmx:EC0FZ6QsLMNAm7r8Ucl1VfGVouqdhp9mDlK03Znokj2vRIwpp8IbhQ>
    <xmx:EC0FZyb2AKqWfWCNIH52uP5iu-UIGG8AAngnYn-W-yPzsn_F5Jt7eQ>
    <xmx:EC0FZ7SDNJFfu0XaVw4KNQxVAfuDVfJxfZ7Y_6SLaici2H5KItT9RA>
    <xmx:ES0FZ3TsVYwA7pvBoGl_T7dZvpJnXDo64LUQeMiZcs5zrlZNy9MFxl1F>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 8 Oct 2024 15:00:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roberto Bagnara <roberto.bagnara@bugseng.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Federico Serafini <federico.serafini@bugseng.com>,
	consulting@bugseng.com,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
Message-ID: <ZwUtCytUDP4RM-Ro@mail-itl>
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
 <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
 <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
 <alpine.DEB.2.22.394.2410011431360.451631@ubuntu-linux-20-04-desktop>
 <02833aad-d6f1-4ffa-8d4a-d8c31e9b0524@suse.com>
 <2f51a8e7-4044-4a84-a541-100799a28012@bugseng.com>
 <1f8f6a0c-980f-43cb-9967-801641f8dbc0@suse.com>
 <9adf139f-cfa4-4e71-a02b-5b7cff898d01@bugseng.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="Exw4z9V4c1GWFuBB"
Content-Disposition: inline
In-Reply-To: <9adf139f-cfa4-4e71-a02b-5b7cff898d01@bugseng.com>


--Exw4z9V4c1GWFuBB
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 8 Oct 2024 15:00:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roberto Bagnara <roberto.bagnara@bugseng.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Federico Serafini <federico.serafini@bugseng.com>,
	consulting@bugseng.com,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6

On Tue, Oct 08, 2024 at 02:49:52PM +0200, Roberto Bagnara wrote:
> On 2024-10-08 07:59, Jan Beulich wrote:
> > On 02.10.2024 08:54, Roberto Bagnara wrote:
> > > On 2024-10-02 08:09, Jan Beulich wrote:
> > > > On 01.10.2024 23:36, Stefano Stabellini wrote:
> > > > > On Tue, 1 Oct 2024, Jan Beulich wrote:
> > > > > > On 01.10.2024 07:25, Roberto Bagnara wrote:
> > > > > > > On 2024-09-30 15:07, Jan Beulich wrote:
> > > > > > > > On 30.09.2024 14:49, Federico Serafini wrote:
> > > > > > > > > guest_handle_ok()'s expansion contains a sizeof() involvi=
ng its
> > > > > > > > > first argument which is guest_handle_cast().
> > > > > > > > > The expansion of the latter, in turn, contains a variable
> > > > > > > > > initialization.
> > > > > > > > >=20
> > > > > > > > > Since MISRA considers the initialization (even of a local=
 variable)
> > > > > > > > > a side effect, the chain of expansions mentioned above vi=
olates
> > > > > > > > > MISRA C:2012 Rule 13.6 (The operand of the `sizeof' opera=
tor shall not
> > > > > > > > > contain any expression which has potential side effect).
> > > > > > > >=20
> > > > > > > > I'm afraid I need to ask for clarification of terminology a=
nd alike here.
> > > > > > > > While the Misra doc has a section on Persistent Side Effect=
s in its
> > > > > > > > Glossary appendix, what constitutes a side effect from its =
pov isn't
> > > > > > > > really spelled out anywhere. Which in turn raises the quest=
ion whether it
> > > > > > > > is indeed Misra (and not just Eclair) which deems initializ=
ation a side
> > > > > > > > effect. This is even more so relevant as 13.6 talks of only=
 expressions,
> > > > > > > > yet initializers fall under declarations (in turn involving=
 an expression
> > > > > > > > on the rhs of the equal sign).
> > > > > > > >=20
> > > > > > > > All the same of course affects patch 2 then, too.
> > > > > > >=20
> > > > > > > MISRA C leaves the definition of "side effect" to the C Stand=
ard.
> > > > > > > E.g., C18 5.1.2.3p2:
> > > > > > >=20
> > > > > > >      Accessing a volatile object, modifying an object, modify=
ing a file,
> > > > > > >      or calling a function that does any of those operations =
are all
> > > > > > >      side effects,[omitted irrelevant footnote reference] whi=
ch are
> > > > > > >      changes in the state of the execution environment.
> > > > > > >=20
> > > > > > > The MISRA C:2012/2023 Glossary entry for "Persistent side eff=
ect"
> > > > > > > indirectly confirms that initialization is always a side effe=
ct.
> > > > > >=20
> > > > > > Hmm, that's interesting: There's indeed an example with an init=
ializer
> > > > > > there. Yet to me the text you quote from the C standard does no=
t say
> > > > > > that initialization is a side effect - it would be "modifying an
> > > > > > object" aiui, yet ahead of initialization being complete the ob=
ject
> > > > > > doesn't "exist" imo, and hence can be "modified" only afterward=
s.
> > > > >=20
> > > > > I feel it's becoming a bit too philosophical. Since there's some =
room
> > > > > for interpretation and only two violations left to address, I bel=
ieve
> > > > > it's best to stick with the stricter interpretation of the defini=
tion.
> > > > > Therefore, I'd proceed with this series in its current form.
> > > >=20
> > > > Proceeding with the series in its current form may be okay (as you =
say,
> > > > you view the changes as readability improvements anyway), but imo t=
he
> > > > interpretation needs settling on no matter what. In fact even for t=
hese
> > > > two patches it may affect what their descriptions ought to say (wou=
ld
> > > > be nice imo to avoid permanently recording potentially misleading
> > > > information by committing as is). And of course clarity would help
> > > > dealing with future instances that might appear. I take it you real=
ize
> > > > that if someone had submitted a patch adding code similar to the
> > > > original forms of what's being altered here, it would be relatively
> > > > unlikely for a reviewer to spot the issue. IOW here we're making
> > > > ourselves heavily dependent upon Eclair spotting (supposed) issues,
> > > > adding extra work and delays for such changes to go in.
> > >=20
> > > You can do two things to obtain a second opinion:
> > >=20
> > > 1) Use the MISRA forum (here is the link to the forum
> > >      section devoted to the side-effect rules of MISRA C:2012
> > >      and MISRA C:2023 (https://forum.misra.org.uk/forumdisplay.php?fi=
d=3D168).
> > >      The MISRA C Working Group will, in due course, provide
> > >      you with an official answer to your questions about what,
> > >      for the interpretation of Rule 13.6, has to be considered
> > >      a side effect.
> > >=20
> > > 2) Reach out to your ISO National Body and try to obtain
> > >      an official answer from ISO/IEC JTC1/SC22/WG14 (the
> > >      international standardization working group for the
> > >      programming language C) to your questions about what the
> > >      C Standard considers to be side effects.
> >=20
> > I took the latter route, and to my (positive) surprise I got back an an=
swer
> > the same day. There was a request for someone to confirm, but so far I =
didn't
> > see further replies. Since this is a German institution I raised the qu=
estion
> > in German and got back an answer in German (attached); I've tried my be=
st to
> > translate this without falsifying anything, but I've omitted non-techni=
cal
> > parts:
> >=20
> > "Initialization of an object is never a side effect of the initializati=
on
> > by itself. Of course expressions used for initialization can themselves=
 have
> > side effects on other objects.
> >=20
> > @Andreas: Do you agree? C after all has a far simpler object model than=
 C++.
> > The (potential) change in object representation (i.e. the bytes underly=
ing
> > the object) is not a side effect of object initialization, but its prim=
ary
> > purpose."
> >=20
> > Further for Misra she added a reference to a Swiss person, but I think =
with
> > Bugseng we have sufficient expertise there.
>=20
> Unfortunately, the (translation of the) answer you received adds
> confusion to previous confusion: who answered has highlighted the
> "side" part of the term, which is indeed relevant in computer science,
> but not for the C standard.  To the point that the same argument could
> be used to deny that ++i has a side effect because the increment is
> the "primary" effect...
>=20
> Part of the confusion is maybe in the the following paragraph Jan
> wrote earlier:
>=20
> > Hmm, that's interesting: There's indeed an example with an initializer
> > there. Yet to me the text you quote from the C standard does not say
> > that initialization is a side effect - it would be "modifying an
> > object" aiui, yet ahead of initialization being complete the object
> > doesn't "exist" imo, and hence can be "modified" only afterwards.
>=20
> In C, it is not true that the object does not exist ahead of
> initialization.  Try the following:
>=20
> extern int f(int* p);
>=20
> int main() {
>   int i =3D f(&i);
> }

This is interesting discussion, but I don't think it needs to block
anything. The proposed change doesn't violate any other rule/code style,
and I'd argue it's more readable. Taking more strict interpretation in
this case doesn't really hurt. I already acked this patch.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcFLQsACgkQ24/THMrX
1yxdpQf8CnObZMn8i8a5xILyZdTvpXTjjRwGjaUskND7W/Al1e2d/NCNVAuI9CgU
n4doJ2wIryJPKDZapjfaF2KHsvbXBPQp+Ptm/yCoNw2dLnaQmljnZa6fjOV8Zr8U
1DI1b9XZD3hwKcwPGJNi941s8oN9hFntArIs0PNTf71K/lovTnwEW0A5zEZ4agXP
9PhYwTffefw/HVFKv2dLGyMUJblXnlSYyet618oUTO33BZ2KV6RIHsipoNk1wc+s
5jMCFFmDUAuhFNIMfwkodZxZns8sa4bZheMnH6DxmlrSGyloHw9URId/q+nxbytq
8sI4Zfciy1EdIcKtOEFfSUpimvj75A==
=1Mpf
-----END PGP SIGNATURE-----

--Exw4z9V4c1GWFuBB--


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 13:41:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 13:41:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813126.1225927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syASo-0002oA-6g; Tue, 08 Oct 2024 13:41:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813126.1225927; Tue, 08 Oct 2024 13: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 1syASo-0002o3-3M; Tue, 08 Oct 2024 13:41:22 +0000
Received: by outflank-mailman (input) for mailman id 813126;
 Tue, 08 Oct 2024 13:41: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syASn-0002nx-FC
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 13:41:21 +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 000d9a16-857b-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 15:41:20 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a993302fa02so400892866b.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 06:41:20 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a995a54ddf3sm221652866b.216.2024.10.08.06.41.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 06:41:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 000d9a16-857b-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728394879; x=1728999679; 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=L3sqw8HRXhg+hOWbbpSW0F4f+e9mw+hASKZAV9R8+Eo=;
        b=CkGs6Bx5r499nrzMVDCjVlLd3Fel0CaKNRdg01E7ea3XdyfI9AUJZffN0uGKKg08y1
         /JNC+mjQ8lvZsTrFjJMBc1QVnXUlIj+XktI/CAzpV2WRzyVnfXrWjHkdBt3Rfia6/42g
         YK8XMyH/4XmTJSf/b8kEb+vDUMnYC5GsAwO9yLATcT/ZnOvMmZPorZWaOLKGsBrIbHCf
         kpvEupj0vT2KmHNJ3gpHo+FjHZxRlP9JQpnKeQXjNMcjRAjO2yvYMyzcyWT5pr32fun9
         XyW5uAKMQl7BSZB9itIcQ+nGZSGNkHN+Ht+sN3VI5JMdmgGG/2AAuOn2bX7Gu8Np0eVx
         meVg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728394879; x=1728999679;
        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=L3sqw8HRXhg+hOWbbpSW0F4f+e9mw+hASKZAV9R8+Eo=;
        b=vaqRXvG2BVaqm0zAMRqpy9O8cywMe39XjJvHqsYPEueUmFNhQikKJxQTxh4dpsbBKH
         F7BkHI3rBIzuO/Z6qupJqhG1TxBdNXCj9dZOJQV6JgngsiiKNkNHWnijwXcImo7sDmA3
         KAWI5tCMzABsqfB5O2xVgxD7dsuyq/IP5xOW7ea/bRthE8OPoqPuoesF9Q/KMcROC2qR
         CRxfuMPGyHrdWP8x4zUawLzKERG7eNXODQ1/NMQvf/gw1zKXkCZ3k/PNyhG22241vqf2
         wJex29ZNP1prap/tMiGBuVLTepyF+OTMTkwEk+S0XCXI/qxRAod1mb28DqwHb6JW1alH
         eqMg==
X-Forwarded-Encrypted: i=1; AJvYcCXCji2/b7a66TvzOsOEXbFdtFjtpmdlWX8uORqmblRsZKKy84eLwv0mOs/TjUY4uiT4DLUl3U5cqUs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YybwCXnfVfdwE+/Sq/NPsILIFwctw1bjjtYvdbvTxWu/2tqd/J2
	7K38tDd1ubU91tLIjZR79UG0TzkHm00BN/lUYb41/x0GfKBgRPT6KTRjrSuH6g==
X-Google-Smtp-Source: AGHT+IGb9LYcchxmoAAyUYZg784v5w+9W2z2QYdp2aTp7Ldw99cmOzBiLk2raquEv3TJEbiUZ8Go+w==
X-Received: by 2002:a17:907:e9f:b0:a99:501c:b841 with SMTP id a640c23a62f3a-a99501cb8f4mr710252466b.28.1728394879364;
        Tue, 08 Oct 2024 06:41:19 -0700 (PDT)
Message-ID: <1a090bce-69a7-4a72-b1f4-86608fefc789@suse.com>
Date: Tue, 8 Oct 2024 15:41:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 1/3] EFI: address a violation of MISRA C Rule 13.6
To: Roberto Bagnara <roberto.bagnara@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
 consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel@lists.xenproject.org
References: <cover.1727690180.git.federico.serafini@bugseng.com>
 <c447f9faf0283bc6b83bbfbf05acd7acca00762d.1727690180.git.federico.serafini@bugseng.com>
 <b4fafd2c-d71a-4336-b009-07f3474f5a04@suse.com>
 <a8dfe133-6f9b-4a26-918b-d0531d6af918@bugseng.com>
 <8d5e4761-9fc2-4e18-a6c2-9df1822dbbea@suse.com>
 <alpine.DEB.2.22.394.2410011431360.451631@ubuntu-linux-20-04-desktop>
 <02833aad-d6f1-4ffa-8d4a-d8c31e9b0524@suse.com>
 <2f51a8e7-4044-4a84-a541-100799a28012@bugseng.com>
 <1f8f6a0c-980f-43cb-9967-801641f8dbc0@suse.com>
 <9adf139f-cfa4-4e71-a02b-5b7cff898d01@bugseng.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: <9adf139f-cfa4-4e71-a02b-5b7cff898d01@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.10.2024 14:49, Roberto Bagnara wrote:
> On 2024-10-08 07:59, Jan Beulich wrote:
>> On 02.10.2024 08:54, Roberto Bagnara wrote:
>>> On 2024-10-02 08:09, Jan Beulich wrote:
>>>> On 01.10.2024 23:36, Stefano Stabellini wrote:
>>>>> On Tue, 1 Oct 2024, Jan Beulich wrote:
>>>>>> On 01.10.2024 07:25, Roberto Bagnara wrote:
>>>>>>> On 2024-09-30 15:07, Jan Beulich wrote:
>>>>>>>> On 30.09.2024 14:49, Federico Serafini wrote:
>>>>>>>>> guest_handle_ok()'s expansion contains a sizeof() involving its
>>>>>>>>> first argument which is guest_handle_cast().
>>>>>>>>> The expansion of the latter, in turn, contains a variable
>>>>>>>>> initialization.
>>>>>>>>>
>>>>>>>>> Since MISRA considers the initialization (even of a local variable)
>>>>>>>>> a side effect, the chain of expansions mentioned above violates
>>>>>>>>> MISRA C:2012 Rule 13.6 (The operand of the `sizeof' operator shall not
>>>>>>>>> contain any expression which has potential side effect).
>>>>>>>>
>>>>>>>> I'm afraid I need to ask for clarification of terminology and alike here.
>>>>>>>> While the Misra doc has a section on Persistent Side Effects in its
>>>>>>>> Glossary appendix, what constitutes a side effect from its pov isn't
>>>>>>>> really spelled out anywhere. Which in turn raises the question whether it
>>>>>>>> is indeed Misra (and not just Eclair) which deems initialization a side
>>>>>>>> effect. This is even more so relevant as 13.6 talks of only expressions,
>>>>>>>> yet initializers fall under declarations (in turn involving an expression
>>>>>>>> on the rhs of the equal sign).
>>>>>>>>
>>>>>>>> All the same of course affects patch 2 then, too.
>>>>>>>
>>>>>>> MISRA C leaves the definition of "side effect" to the C Standard.
>>>>>>> E.g., C18 5.1.2.3p2:
>>>>>>>
>>>>>>>      Accessing a volatile object, modifying an object, modifying a file,
>>>>>>>      or calling a function that does any of those operations are all
>>>>>>>      side effects,[omitted irrelevant footnote reference] which are
>>>>>>>      changes in the state of the execution environment.
>>>>>>>
>>>>>>> The MISRA C:2012/2023 Glossary entry for "Persistent side effect"
>>>>>>> indirectly confirms that initialization is always a side effect.
>>>>>>
>>>>>> Hmm, that's interesting: There's indeed an example with an initializer
>>>>>> there. Yet to me the text you quote from the C standard does not say
>>>>>> that initialization is a side effect - it would be "modifying an
>>>>>> object" aiui, yet ahead of initialization being complete the object
>>>>>> doesn't "exist" imo, and hence can be "modified" only afterwards.
>>>>>
>>>>> I feel it's becoming a bit too philosophical. Since there's some room
>>>>> for interpretation and only two violations left to address, I believe
>>>>> it's best to stick with the stricter interpretation of the definition.
>>>>> Therefore, I'd proceed with this series in its current form.
>>>>
>>>> Proceeding with the series in its current form may be okay (as you say,
>>>> you view the changes as readability improvements anyway), but imo the
>>>> interpretation needs settling on no matter what. In fact even for these
>>>> two patches it may affect what their descriptions ought to say (would
>>>> be nice imo to avoid permanently recording potentially misleading
>>>> information by committing as is). And of course clarity would help
>>>> dealing with future instances that might appear. I take it you realize
>>>> that if someone had submitted a patch adding code similar to the
>>>> original forms of what's being altered here, it would be relatively
>>>> unlikely for a reviewer to spot the issue. IOW here we're making
>>>> ourselves heavily dependent upon Eclair spotting (supposed) issues,
>>>> adding extra work and delays for such changes to go in.
>>>
>>> You can do two things to obtain a second opinion:
>>>
>>> 1) Use the MISRA forum (here is the link to the forum
>>>      section devoted to the side-effect rules of MISRA C:2012
>>>      and MISRA C:2023 (https://forum.misra.org.uk/forumdisplay.php?fid=168).
>>>      The MISRA C Working Group will, in due course, provide
>>>      you with an official answer to your questions about what,
>>>      for the interpretation of Rule 13.6, has to be considered
>>>      a side effect.
>>>
>>> 2) Reach out to your ISO National Body and try to obtain
>>>      an official answer from ISO/IEC JTC1/SC22/WG14 (the
>>>      international standardization working group for the
>>>      programming language C) to your questions about what the
>>>      C Standard considers to be side effects.
>>
>> I took the latter route, and to my (positive) surprise I got back an answer
>> the same day. There was a request for someone to confirm, but so far I didn't
>> see further replies. Since this is a German institution I raised the question
>> in German and got back an answer in German (attached); I've tried my best to
>> translate this without falsifying anything, but I've omitted non-technical
>> parts:
>>
>> "Initialization of an object is never a side effect of the initialization
>> by itself. Of course expressions used for initialization can themselves have
>> side effects on other objects.
>>
>> @Andreas: Do you agree? C after all has a far simpler object model than C++.
>> The (potential) change in object representation (i.e. the bytes underlying
>> the object) is not a side effect of object initialization, but its primary
>> purpose."
>>
>> Further for Misra she added a reference to a Swiss person, but I think with
>> Bugseng we have sufficient expertise there.
> 
> Unfortunately, the (translation of the) answer you received adds
> confusion to previous confusion: who answered has highlighted the
> "side" part of the term, which is indeed relevant in computer science,
> but not for the C standard.

I can't see any highlighting in the original reply I received.

>  To the point that the same argument could
> be used to deny that ++i has a side effect because the increment is
> the "primary" effect...

Well, if it's just "++i;" there's no side effect, just a primary one. In
"n = ++i + j--;" there are side effects (the increment and decrement).

> Part of the confusion is maybe in the the following paragraph Jan
> wrote earlier:
> 
>  > Hmm, that's interesting: There's indeed an example with an initializer
>  > there. Yet to me the text you quote from the C standard does not say
>  > that initialization is a side effect - it would be "modifying an
>  > object" aiui, yet ahead of initialization being complete the object
>  > doesn't "exist" imo, and hence can be "modified" only afterwards.
> 
> In C, it is not true that the object does not exist ahead of
> initialization.

I quoted "exist" for that reason. Of course the object's lifetime starts
with its declaration. It just has indeterminate value at that point.

>  Try the following:
> 
> extern int f(int* p);
> 
> int main() {
>    int i = f(&i);
> }

Which to me falls under "Of course expressions used for initialization
can themselves have side effects on other objects." Just that "other"
isn't quite right here.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 13:47:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 13:47:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813135.1225937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syAZ2-0006TR-Uj; Tue, 08 Oct 2024 13:47:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813135.1225937; Tue, 08 Oct 2024 13:47: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 1syAZ2-0006TK-R6; Tue, 08 Oct 2024 13:47:48 +0000
Received: by outflank-mailman (input) for mailman id 813135;
 Tue, 08 Oct 2024 13:47: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syAZ1-0006TE-SW
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 13:47:47 +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 e47c9506-857b-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 15:47:43 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c91756c9easo438397a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 06:47:43 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993ddeddadsm447922366b.198.2024.10.08.06.47.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 06:47:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e47c9506-857b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728395263; x=1729000063; 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=QgWOOvVdQmS4MEvAnQKe4lFMkH0ETJ4cHFM1MHN8sGs=;
        b=Sisw4gHn5oRdPtU877taHugr7qMWB+pJQ4Lc9V9Cj/RQjBlmUIdAXd6XgjuQGXpIjp
         p8g4JYWoSWFqu/UNp4uNBBf6gFmVjgbuFRmux1bnZHeBimplC+HNlqIznOpzG4YPu4wE
         eCJBweA/e4dU1cpvbV+MbErYGw/DVRHEBxcVDKfV1PVQTAxvs6W0zCYUbCzuI5ctN56y
         BQoAy0TAtD37vbetVfRuwBykSgQbDhcEMnkv+8fnOHzXEq9eCOMjm+UZpyvZHnAfkcrq
         Kags61n2eODgZD7hYWntCoEv1mnn20RfGvXNEPbICSwLTG0KLfoFMxnPKIla4Sgs+6Cn
         SNjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728395263; x=1729000063;
        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=QgWOOvVdQmS4MEvAnQKe4lFMkH0ETJ4cHFM1MHN8sGs=;
        b=Dt+hkw8Gm2UmNcXbad2r2q5VwePCrnqEjm6JaD3EzVVuHeCTQhlOO/E3OBg/W0y+py
         0kqmsCo8sxdodhScAqULIWnoRgOxvi+Uj4gq+chlRp3uKgA1bu5CwSUUHLJe0cckVm98
         9u9yrTm+rRCdHW1EF+g+yXLu8lHp0OO2fkanC5EhxqCIIpAninNvFoNGlKLJwHrW+GKy
         m+2Iq3WGgUNZZ5yDyooOJU8/XlgXsvON4YYTti1bq8RVrOUoZ8kbZES7qpfbWiurxzBw
         H9yFL9JOkRjsndpU2fbGTok0LmWPbVxp8MsHcfY5NPcxXQEUkZ8O+d/ehxqlwF4jxLQ8
         UFVg==
X-Forwarded-Encrypted: i=1; AJvYcCXSsjwjzcbRN6edvim2tzOSi8n7k4hsR43dCzidXPPeS2v3TWS0Ngow5N+GXHgFMo8VaAGFg4Z/sLU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyHlanWLDtTeiBvnrWdWqoPIYU9Fr6R55wLqH9WHIEpUSAFokYd
	R/3MX19cxfYXoqav3+6x4ZV60BN2pHp8n2vyOHLFEOhNkpXkKpWobmz7+gJhRg==
X-Google-Smtp-Source: AGHT+IEtfuUDOvsPaNNLvgH0oL/IIP/2ldG9WGpDs3a9UrErsVVPhYQQweSvmkJWM/hQ7bsaB+Z+7g==
X-Received: by 2002:a17:907:29d3:b0:a99:6109:893c with SMTP id a640c23a62f3a-a9984740004mr14702466b.27.1728395262761;
        Tue, 08 Oct 2024 06:47:42 -0700 (PDT)
Message-ID: <4e493976-549d-4c63-8fc6-61479ceebe9b@suse.com>
Date: Tue, 8 Oct 2024 15:47:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/APIC: Switch flat driver to use phys dst for ext
 ints
To: Matthew Barnes <matthew.barnes@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <0db68e62ffc428f553a30397df1e79068d26bb5f.1728311378.git.matthew.barnes@cloud.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: <0db68e62ffc428f553a30397df1e79068d26bb5f.1728311378.git.matthew.barnes@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 16:34, Matthew Barnes wrote:
> --- a/xen/arch/x86/include/asm/genapic.h
> +++ b/xen/arch/x86/include/asm/genapic.h
> @@ -44,29 +44,11 @@ extern const struct genapic apic_bigsmp;
>  void cf_check send_IPI_self_legacy(uint8_t vector);
>  
>  void cf_check init_apic_ldr_flat(void);
> -unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask);
> +const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);

Why does this decl move to between two flat decls, rather than ...

>  void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector);
> -const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu);
> -#define GENAPIC_FLAT \
> -	.int_delivery_mode = dest_LowestPrio, \
> -	.int_dest_mode = 1 /* logical delivery */, \
> -	.init_apic_ldr = init_apic_ldr_flat, \
> -	.vector_allocation_cpumask = vector_allocation_cpumask_flat, \
> -	.cpu_mask_to_apicid = cpu_mask_to_apicid_flat, \
> -	.send_IPI_mask = send_IPI_mask_flat, \
> -	.send_IPI_self = send_IPI_self_legacy
>  
>  void cf_check init_apic_ldr_phys(void);
>  unsigned int cf_check cpu_mask_to_apicid_phys(const cpumask_t *cpumask);
>  void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector);
> -const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);

... staying where it was, next to other phys ones?

I can certainly adjust this back while committing ...

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 13:55:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 13:55:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813142.1225947 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syAgg-00082C-Mj; Tue, 08 Oct 2024 13:55:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813142.1225947; Tue, 08 Oct 2024 13: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 1syAgg-000825-KA; Tue, 08 Oct 2024 13:55:42 +0000
Received: by outflank-mailman (input) for mailman id 813142;
 Tue, 08 Oct 2024 13:55: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=gcc3=RE=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1syAge-00081z-Tq
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 13:55:40 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id feefcaaf-857c-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 15:55:38 +0200 (CEST)
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 57018DA7;
 Tue,  8 Oct 2024 06:56:06 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.77.92])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D97EF3F58B;
 Tue,  8 Oct 2024 06:55:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: feefcaaf-857c-11ef-99a2-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] MAINTAINERS: add myself as maintainer for arm tee
Date: Tue,  8 Oct 2024 15:54:58 +0200
Message-ID: <e853549e25d26264e1a470336a98c48d22b799eb.1728395637.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

With Tee mediators now containing Optee and FF-A implementations, add
myself as maintainers to have someone handling the FF-A side.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index fb0ebf093965..2450b0f9ff9e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -516,6 +516,7 @@ F:	stubdom/
 
 TEE MEDIATORS
 M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
+M:	Bertrand Marquis <bertrand.marquis@arm.com>
 S:	Supported
 F:	xen/arch/arm/include/asm/tee
 F:	xen/arch/arm/tee/
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:01:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:01:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813146.1225957 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syAmM-0004EX-AB; Tue, 08 Oct 2024 14:01:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813146.1225957; Tue, 08 Oct 2024 14: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 1syAmM-0004EQ-76; Tue, 08 Oct 2024 14:01:34 +0000
Received: by outflank-mailman (input) for mailman id 813146;
 Tue, 08 Oct 2024 14:01: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syAmL-0004EI-7V
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:01:33 +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 d2710117-857d-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 16:01:32 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c89e66012aso7475716a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:01:32 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5bb208sm512283166b.22.2024.10.08.07.01.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:01:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2710117-857d-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728396091; x=1729000891; 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=dUJqdgqjDh1k5YyMXrH9PCRFMIw93isETC+QzMtPZ9E=;
        b=FoFt6XZ9UZpNAOj3eLakSseHrFVcBAUGatOuXSVhmX2TvOIFYhx+zDl8zk06kyf6gj
         h6hPQzNKG+BpOg1GRcKV49bKYBl7IAbkhGqES8qffRXgfkwpe7XI1lF4IH/Li8Fo56cV
         PhUHGGEqB8Rp6P//cfrlM03ZBOdCLAaSJw+RW0QUg8h4SnlSF8IVTUlkmDDiShn2MS/t
         5QM5Q9vU5MIwlHcJrcRDQ9agYorjS2Ox28Qyqr+VInd4C+bL0lC1fZRg8Hv3wVpwh3t0
         wajeZL3gacwu99mDZZx4o57BL9lFXzHAegQVPT2iHasBMQVIZjYdB1iYK/KaOQ5YjFds
         JZDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728396091; x=1729000891;
        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=dUJqdgqjDh1k5YyMXrH9PCRFMIw93isETC+QzMtPZ9E=;
        b=WUDqW7HWOLBc445b12tjisMggBuaO6BtkKd/bXpi4VPeWOd9VzKB4dsc3wR4SzmCi7
         KQZQ189UyAXlEDQ0WZv7vhZotp3uDnxlW/S+1dB8CuHHZyoMhOGIa1j5BTuqcXbv9jp/
         369A+1NDaKcbhBIWAZgXDJPNaGsoXzjQEQ3wsydZ27q+Rz6sRU2z/cr5DAj0CTod+6wN
         mlB6dbEvdlv24m1+xACtHTwA6/hkB9M+AIFHDsdIvBvQV1xuhzpy1V/Ty76NnH/A2IUO
         +SdKJ+pao+lfQzDJnStT773DRGEKHG8Rw5eQWuG+mIZw/B9ITOz85lxtx4q8de2tQnv7
         AG8A==
X-Forwarded-Encrypted: i=1; AJvYcCWqzbfB6dD6k/u91MJlWTxWvSbQrMzOq70QhLF5EuY3mGnAGjhncJAYTCsw1MGmgsPF80c9dNCQMtc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxqP3Ipx1acAckYRITQi4YGYrRFprX2mjmt6nF05efonPLgbPA3
	m3qik7bgwvJKV4cYAF9P/A0kXcirTsOiJn/xqxJaKXljYdXBF3jlRKc+PnL8p14poTPE4zXb6NM
	=
X-Google-Smtp-Source: AGHT+IGv0vCFBsZD0TyXSRiC7QjQ5O9M7LZySYYvCR02j54A33TEn2mqx8QMBXHakdzvTAZhS57aAA==
X-Received: by 2002:a17:907:9726:b0:a8d:5472:b591 with SMTP id a640c23a62f3a-a991bce5c40mr1759592666b.5.1728396089786;
        Tue, 08 Oct 2024 07:01:29 -0700 (PDT)
Message-ID: <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
Date: Tue, 8 Oct 2024 16:01:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, xen-devel@lists.xenproject.org
References: <20241008104706.74001-1-roger.pau@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: <20241008104706.74001-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.10.2024 12:47, Roger Pau Monne wrote:
> IVMD table contains restrictions about memory which must be mandatory assigned
> to devices (and which permissions it should use), or memory that should be
> never accessible to devices.
> 
> Some hardware however contains ranges in IVMD that reference devices outside of
> the IVHD tables (in other words, devices not behind any IOMMU).  Such mismatch
> will cause Xen to fail in register_range_for_device(), ultimately leading to
> the IOMMU being disabled, and Xen crashing as x2APIC support might be already
> enabled and relying on the IOMMU functionality.

I find it hard to believe that on x86 systems with IOMMUs some devices would
be left uncovered by any IOMMU. Is it possible that IVHD is flawed there? In
which case we might rightfully refuse to boot? (Can you share e.g. that
"iommu=debug" output that results from parsing the tables on that system?)

> Relax IVMD parsing: allow IVMD blocks to reference devices not assigned to any
> IOMMU.  It's impossible for Xen to fulfill the requirement in the IVMD block if
> the device is not behind any IOMMU, but it's no worse than booting without
> IOMMU support, and thus not parsing ACPI IVRS in the first place.
> 
> Reported-by: Willi Junga <xenproject@ymy.be>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
>  xen/drivers/passthrough/amd/iommu_acpi.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/amd/iommu_acpi.c b/xen/drivers/passthrough/amd/iommu_acpi.c
> index 3f5508eba049..c416120326c9 100644
> --- a/xen/drivers/passthrough/amd/iommu_acpi.c
> +++ b/xen/drivers/passthrough/amd/iommu_acpi.c
> @@ -248,8 +248,9 @@ static int __init register_range_for_device(
>      iommu = find_iommu_for_device(seg, bdf);
>      if ( !iommu )
>      {
> -        AMD_IOMMU_ERROR("IVMD: no IOMMU for Dev_Id %#x\n", bdf);
> -        return -ENODEV;
> +        AMD_IOMMU_WARN("IVMD: no IOMMU for device %pp - ignoring constrain\n",

I'm not a native speaker, but "constrain" to me can only be a verb (with
"constraint" being the noun). IOW as worded I'm afraid I can't make sense
of the message.

> +                       &PCI_SBDF(seg, bdf));
> +        return 0;
>      }
>      req = ivrs_mappings[bdf].dte_requestor_id;
>  

Down from here in parse_ivmd_device_iommu() is somewhat similar code.
Wouldn't that need adjusting similarly then? Or else shouldn't the
adjustment above be accompanied by a comment clarifying that the
behavior is just because of observations on certain hardware?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:03:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:03:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813152.1225967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syAo3-0004lJ-Ke; Tue, 08 Oct 2024 14:03:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813152.1225967; Tue, 08 Oct 2024 14:03: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 1syAo3-0004lC-HE; Tue, 08 Oct 2024 14:03:19 +0000
Received: by outflank-mailman (input) for mailman id 813152;
 Tue, 08 Oct 2024 14:03: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syAo1-0004l4-Ki
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:03:17 +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 10d278cb-857e-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 16:03:16 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9968114422so123875066b.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:03:16 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99384f8258sm480630166b.16.2024.10.08.07.03.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:03:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10d278cb-857e-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728396196; x=1729000996; 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=lc086HIpNhWaQTWIXhDl/159HP+WwwT7ahDqkkt2P+o=;
        b=g6xWy5HMT/S3nKyxlwnBDKrlM6s3zeOQVUPE1pwC+oO+euIW9dTH0mndYEzN3n0fim
         PxU0QtzNHL64HXdCFueGoTwLbkQqCqpKCpMxQG7f9W2FoOx/Y9q6RM5yP591h+CIokoP
         isI83WhX679AVpJknBGfpW1EX2sKK+uOrkpxcsP6HO+s3TcQP5pHiCTMGTfWe8lyT9E1
         rmYMX2ripqcorGBj7lKDSGWPSAYmUXF9lDKLksjzYBOyeE/B6vl+xZTpiNy9FAYmAqjP
         0DetsbVSw5HJFWkgRXJF+ZspTuk/VWA3EilxkHtFs2hR4Bm8USisusr1ZtqpiU7W1KZF
         qe5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728396196; x=1729000996;
        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=lc086HIpNhWaQTWIXhDl/159HP+WwwT7ahDqkkt2P+o=;
        b=auQ9lD1LR6vM2k1rYNilVUf3zca3VaLl4zQS2ACZ8uXyykN19KtuoAxFQQS/8cqZjy
         6wK4Sh9ixrbKtE9B91ZVkElhfphFVfgkOJFrkw60nKe6ERtEJ7TRVbcMaYEUxRt6hXzI
         OHeNU/BEubMtxhJnJqLbGv981BKCDVohJfc/QkfujRAJXZ4jhiPguWHlJUcAEg6S44gx
         dI/4ZX3MoeTNkiPNhb/H3HpJ4njzaqDXWY+JVennT/ACYTLAmtw33wj5arUMrJtynMyj
         KNdMpt6rkg/hijPEzS9a6Aau0b8bTbQXY9j08sv6PSz/ffUF6Er43sliy5oqfOPdzMW0
         ZRHg==
X-Forwarded-Encrypted: i=1; AJvYcCXJ9UlcgQRs8XSEFD9g8i/CR6PP2PCIoxCeDbCl6LfMkdZ7e1ylG0xhPUJqXqNDHTBstqhO75RqaFI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxBKgHUrde6QbaZlLHVH/jK1GVJ6lLtk1GmtpaqlC1fPoE+aaZ8
	5dB/OLuaufgQ1WMUwxvAyanz5hpGJ3Kb1ABKeAhhjpg7E7yJ+ojvIazRq5wJ3A==
X-Google-Smtp-Source: AGHT+IF0GYoeccRNogHZXhSjcDctnUv0ASq+gT5+K0I9unxq33ZgeKqxQgxrpDU0k3vlUGgMz6dQ/A==
X-Received: by 2002:a17:907:944a:b0:a99:77f0:5208 with SMTP id a640c23a62f3a-a9977f06fc1mr162338966b.12.1728396196055;
        Tue, 08 Oct 2024 07:03:16 -0700 (PDT)
Message-ID: <4f6ba64e-2392-4793-aca4-b90a231900a4@suse.com>
Date: Tue, 8 Oct 2024 16:03:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] MAINTAINERS: add myself as maintainer for arm tee
To: Bertrand Marquis <bertrand.marquis@arm.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <e853549e25d26264e1a470336a98c48d22b799eb.1728395637.git.bertrand.marquis@arm.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: <e853549e25d26264e1a470336a98c48d22b799eb.1728395637.git.bertrand.marquis@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.10.2024 15:54, Bertrand Marquis wrote:
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -516,6 +516,7 @@ F:	stubdom/
>  
>  TEE MEDIATORS
>  M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> +M:	Bertrand Marquis <bertrand.marquis@arm.com>
>  S:	Supported
>  F:	xen/arch/arm/include/asm/tee
>  F:	xen/arch/arm/tee/

Like for Frediano's change to this section, I think the ack should come
from the present maintainer, whom I have no Cc-ed.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:20:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:20:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813160.1225977 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syB4D-0004Dn-W2; Tue, 08 Oct 2024 14:20:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813160.1225977; Tue, 08 Oct 2024 14:20: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 1syB4D-0004DI-Sw; Tue, 08 Oct 2024 14:20:01 +0000
Received: by outflank-mailman (input) for mailman id 813160;
 Tue, 08 Oct 2024 14:20: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=NioN=RE=cloud.com=matthew.barnes@srs-se1.protection.inumbo.net>)
 id 1syB4C-00046T-Lv
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:20:00 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6621b78c-8580-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 16:19:58 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-5366fd6fdf1so7783411e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:19:58 -0700 (PDT)
Received: from EMEAENGAAD91498 ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e8145b8sm511780266b.225.2024.10.08.07.19.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 07:19:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6621b78c-8580-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728397198; x=1729001998; 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=Ly/H240SVE3aP56lLZibBqlGTjhAjXksO5m7IpCVeeA=;
        b=FYGS0JAg5erV9WVhU9pUfr75mcnSJxdE56eANfBKCiK5ucuiO61kpWSTk5XaEJKu2l
         DAxFaTbb0cXT3vXY64lhjmNF4rW2df/tPmtz3vntknkT3EwHF9GN2XRmNMzkJ2Aow2De
         SlzV8D9JCqgmClnx+ShKkAQwOAv7aSBm5Dje4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728397198; x=1729001998;
        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=Ly/H240SVE3aP56lLZibBqlGTjhAjXksO5m7IpCVeeA=;
        b=sNruvk+z6LVZbfB64x+bvZ+SSC2ClyeTRxAWhWUQyg3dSF5pPGCRaULOfzBPhAPc3J
         cV8vYhc8s8CYCcisnFfqNk3Pp8M3zTqDF2gmhfwmwFzeqQFFIqXM+rmdpG6oxnXzbm83
         5iYd2gXnGMxO/A4izq0plRvxwofG94E2xf0azmtliHKSdx9NNI5e7yIGlrJkZrw4jpVT
         DffEi0wBA7Vi+l+W0hq96yr2GrXJyIzNEFJp/2XdsKSs7YrWS2FO/7nTRg5NxblAQqVQ
         8mIvE/xYIMh82ANZwLGwOYB6RVWeBzsrmcFvK8d9ic3x3wSWhUvqSM9KrSR6277HoBdG
         yB4Q==
X-Forwarded-Encrypted: i=1; AJvYcCXQHA0z8TD/fQcWWZFXbNxrqa31gXoU7cdQ5dx/KrjZTpxAIXspdpdKRSpxzWW4SUY8X5X8VhPRc3M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxhoC2bDuV2ao7TxyGwMSov3RXcfedZqdiEj7CwMUzsg1NvDyMM
	RnPI4x17EHCRsbBS+/axWa3VarEKqTZ25UlyHTjVwH/4LIxSOw6p4JdHq7oKZWw=
X-Google-Smtp-Source: AGHT+IFvQl0/JPSRqTdYCJvOVzbQiBqb+LD0kIKz7cogjPRmPr+clclewLzggZqCrgW63braPXQevg==
X-Received: by 2002:a05:6512:3e01:b0:530:aea3:4659 with SMTP id 2adb3069b0e04-539ab84a2f2mr8609531e87.9.1728397198155;
        Tue, 08 Oct 2024 07:19:58 -0700 (PDT)
Date: Tue, 8 Oct 2024 15:19:52 +0100
From: Matthew Barnes <matthew.barnes@cloud.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, 
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/APIC: Switch flat driver to use phys dst for ext
 ints
Message-ID: <rr7iespn4r23lbzgobw3vwduwza3a6ii7rkw2jjagpebz4bzzb@b34z676rcaou>
References: <0db68e62ffc428f553a30397df1e79068d26bb5f.1728311378.git.matthew.barnes@cloud.com>
 <4e493976-549d-4c63-8fc6-61479ceebe9b@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4e493976-549d-4c63-8fc6-61479ceebe9b@suse.com>

On Tue, Oct 08, 2024 at 03:47:41PM +0200, Jan Beulich wrote:
> On 07.10.2024 16:34, Matthew Barnes wrote:
> > --- a/xen/arch/x86/include/asm/genapic.h
> > +++ b/xen/arch/x86/include/asm/genapic.h
> > @@ -44,29 +44,11 @@ extern const struct genapic apic_bigsmp;
> >  void cf_check send_IPI_self_legacy(uint8_t vector);
> >  
> >  void cf_check init_apic_ldr_flat(void);
> > -unsigned int cf_check cpu_mask_to_apicid_flat(const cpumask_t *cpumask);
> > +const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
> 
> Why does this decl move to between two flat decls, rather than ...
> 
> >  void cf_check send_IPI_mask_flat(const cpumask_t *cpumask, int vector);
> > -const cpumask_t *cf_check vector_allocation_cpumask_flat(int cpu);
> > -#define GENAPIC_FLAT \
> > -	.int_delivery_mode = dest_LowestPrio, \
> > -	.int_dest_mode = 1 /* logical delivery */, \
> > -	.init_apic_ldr = init_apic_ldr_flat, \
> > -	.vector_allocation_cpumask = vector_allocation_cpumask_flat, \
> > -	.cpu_mask_to_apicid = cpu_mask_to_apicid_flat, \
> > -	.send_IPI_mask = send_IPI_mask_flat, \
> > -	.send_IPI_self = send_IPI_self_legacy
> >  
> >  void cf_check init_apic_ldr_phys(void);
> >  unsigned int cf_check cpu_mask_to_apicid_phys(const cpumask_t *cpumask);
> >  void cf_check send_IPI_mask_phys(const cpumask_t *mask, int vector);
> > -const cpumask_t *cf_check vector_allocation_cpumask_phys(int cpu);
> 
> ... staying where it was, next to other phys ones?

My bad, it's a remnant from an older version of this patch.
There's no reason for the declaration to move.

- Matt


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:21:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:21:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813168.1225987 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syB63-0005Zo-Cy; Tue, 08 Oct 2024 14:21:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813168.1225987; Tue, 08 Oct 2024 14:21: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 1syB63-0005Zh-9z; Tue, 08 Oct 2024 14:21:55 +0000
Received: by outflank-mailman (input) for mailman id 813168;
 Tue, 08 Oct 2024 14:21: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syB62-0005Zb-51
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:21:54 +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 a9b03cdc-8580-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 16:21:52 +0200 (CEST)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-53991d05416so7001455e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:21:52 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9957d955f8sm252397866b.74.2024.10.08.07.21.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:21:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a9b03cdc-8580-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728397312; x=1729002112; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=GX1+YiPqsPAKXIcHCwuClTVq626JPPcid4X0DNWH5p4=;
        b=WXzMttNdcdCz1SzoG0VdtBEV82N+GEbx1qi8g3kdzINu8plbOEiKbGZmAxMqSov+Lg
         I6/zJwoSO768ghVp1+LgiW3Hc9keWMn/mtz1sR4a38VcmekBfVs3nhoJ4pNhjpXh4d9W
         YtyC2adc0/tTqdlLHPAlkkQsnzRoeGQHIhWJEnHdnel+grALEJk65lIoCZGjh+dSLncE
         /4rKQjEjvYd8qwGk3JRzUm9SKnbpb+KVBIMPrw4ZMMZ4o+44WWawz2qad5IisPRdlKyB
         SVOgxmvt6tXD1vSwhDbtJ2a/xhi1LUaKXzbQNMxMeNxnx4WorGgNghhCyhQVdCYkzjF5
         s3DQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728397312; x=1729002112;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=GX1+YiPqsPAKXIcHCwuClTVq626JPPcid4X0DNWH5p4=;
        b=ZGvd+g3Wi30tghTb5kyj9+H37Sx7EaBpwBRpo0T4SP1dmhGVbyR/S7C/hvf//m97+i
         t0l6hivtPHCiJjTA5wjm12Z9xirtQRhlJ5MHIh2kj+4heVEWPJGVtUZmLNmp7YslVTMm
         MP9T7h2Rj/uaIiXPYpnqF4MPxVOojrUiuese8KWj/lzhIT+AyWkjAEOf34M4a/DwyE4B
         ULonJDMWODyDNg3+87MRyQsAq4ujTtHV5CvIY4jSNBYsRGUZpt0lp+MiEtIJm+oPyY4j
         4rCXsGxw/dibH5akXSf453ngGpDpq3ww9he1LWwNBnisIvnnd65IF4Av33XiR0iqlkMy
         j6ow==
X-Gm-Message-State: AOJu0Ywn33V4ST95Wh6rn5hIlT1vm8sir9r0Uk+c/RUKjuQvJKKl13YO
	dcfiyX0rEJr/FnsDWTVfHzwuGdJiKNIO0U+0hHuuwY7YGfmWTsBTynjErZ7ZTVOb7Sa2cCfDNlI
	=
X-Google-Smtp-Source: AGHT+IGtrTNqhmXarAqNZQ9v7WNoAAutIJXFQQgkUlcm0JRoEv0kiPLOqAIFxKZaSvI6i9OY70gjmw==
X-Received: by 2002:a05:6512:3195:b0:539:901c:e2e with SMTP id 2adb3069b0e04-539ab9e874cmr10170093e87.58.1728397310313;
        Tue, 08 Oct 2024 07:21:50 -0700 (PDT)
Message-ID: <d03203bf-8fbe-4e50-bcb4-3c12eeaa6588@suse.com>
Date: Tue, 8 Oct 2024 16:21:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 03/19] xen: Update header guards - ACPI
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
 <20241004081713.749031-4-frediano.ziglio@cloud.com>
Content-Language: en-US
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: <20241004081713.749031-4-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 10:16, Frediano Ziglio wrote:
> Updated headers related to ACPI.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
>  xen/drivers/acpi/apei/apei-internal.h     | 4 ++--
>  xen/include/acpi/acconfig.h               | 6 +++---
>  xen/include/acpi/acexcep.h                | 6 +++---
>  xen/include/acpi/acglobal.h               | 6 +++---
>  xen/include/acpi/achware.h                | 6 +++---
>  xen/include/acpi/aclocal.h                | 6 +++---
>  xen/include/acpi/acmacros.h               | 4 ++--
>  xen/include/acpi/acnames.h                | 6 +++---
>  xen/include/acpi/acoutput.h               | 6 +++---
>  xen/include/acpi/acpi.h                   | 6 +++---
>  xen/include/acpi/acpiosxf.h               | 6 +++---
>  xen/include/acpi/acpixf.h                 | 6 +++---
>  xen/include/acpi/actables.h               | 6 +++---
>  xen/include/acpi/actbl.h                  | 6 +++---
>  xen/include/acpi/actbl1.h                 | 6 +++---
>  xen/include/acpi/actbl2.h                 | 6 +++---
>  xen/include/acpi/actbl3.h                 | 6 +++---
>  xen/include/acpi/actypes.h                | 6 +++---
>  xen/include/acpi/acutils.h                | 6 +++---
>  xen/include/acpi/apei.h                   | 4 ++--
>  xen/include/acpi/cpufreq/cpufreq.h        | 6 +++---
>  xen/include/acpi/cpufreq/processor_perf.h | 6 +++---
>  xen/include/acpi/pdc_intel.h              | 6 +++---
>  xen/include/acpi/platform/acenv.h         | 6 +++---
>  xen/include/acpi/platform/acgcc.h         | 6 +++---
>  xen/include/acpi/platform/aclinux.h       | 6 +++---
>  26 files changed, 75 insertions(+), 75 deletions(-)

Most of the files actually were originally imported from ACPI CA (through
Linux as an intermediary). I'm uncertain whether we should fiddle with
such files for purposes like this one. Stefano - thoughts?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:24:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:24:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813174.1225997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syB8C-00069L-P2; Tue, 08 Oct 2024 14:24:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813174.1225997; Tue, 08 Oct 2024 14:24: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 1syB8C-00069E-LO; Tue, 08 Oct 2024 14:24:08 +0000
Received: by outflank-mailman (input) for mailman id 813174;
 Tue, 08 Oct 2024 14:24: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syB8B-000697-L1
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:24:07 +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 f9ed70b8-8580-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 16:24:06 +0200 (CEST)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-53995380bb3so6901612e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:24:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9941a697cesm431307466b.173.2024.10.08.07.24.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:24:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9ed70b8-8580-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728397446; x=1729002246; 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=ntahxafuWpFzDvL54TPOY/ookNL6A4YtPZ/F0Y0SSfQ=;
        b=TdcbXl8ZDsihn6g14Lr8049oT7jRrEtGS+nvMr4L0muvwiUnSPSYEt/pdxL8x8LmHP
         1/fUE5v7/k+E4kXUNUlynywH/9KA/ORX0957Li7/44Z1SNFUIo1tvMqE289Ui8t2NSho
         v4zxLaap21ls7YTStFk/y7CqRs15TyooERhOHhGYVYlaGxsENvbXYkvghNc2rs9CGO7f
         uq7PAx+xmBoqoR9CjN3zaqKYAhLx9R9yMAWcdzEoeGZa48WBzY8+ubqRR1K2XKb6G3sl
         iNJCpGvVY4y3dwa3ibYYU6WZiYkWE2JB9HFi6Sg9CIK7KQAeFMTxNYC4U1JhIXPUOQuz
         V51A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728397446; x=1729002246;
        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=ntahxafuWpFzDvL54TPOY/ookNL6A4YtPZ/F0Y0SSfQ=;
        b=ik/sc3kXZTUhu197rU6WtXctysN2UMqfWg0AbiuOywnP0Rtg5Ct/KWojFn8rWqKGUt
         Cksl7Q5f4gDP2ltQkPGapNqIMdJcrDBaIlgfz1EVgj2bpvt5N4cYUkUYwGG4ltSKqAZV
         0sDRCQxRbYqzxXuMslONmPEkk+UyMcHVqHekkghEOzk39AIHCeQx6SIGEv4XWJwnwaTX
         hRtSpZ4/2DDTD3hpaYxjviosulnVyInnOav6V135R5lONUEcRDr05hfCjKyNNCpelqTe
         f8Ti77wylN38O+kYEWikx7f917M2P70nRZZeF+hpsWmbocMmehjR02FVyo9luN/O5t4s
         Lq2g==
X-Forwarded-Encrypted: i=1; AJvYcCUqj7UA2YAjgiv0ZFOyWLQLDAWOregCZHWv6aF5Yogf0KCmPJrwuVgFGXk6AToPxjz8YogPytoGxkU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyTPraCd3CMKu07oQyQ9PPiFR5efDE8AJ3/eO8iyopSmULXFGnU
	l/v170l76o3Oq2urSY5ZbCpl/ayjh7I6PU5pAlWHISx5ICMhk+zi3TTu3dNHBQ==
X-Google-Smtp-Source: AGHT+IGM+r1YHDEJP+A3fDijRhMyeK1VAMZMybIvkiCGWGRZwXXVO/+l0B7P11ZPTl8S89xaXksIuQ==
X-Received: by 2002:a05:6512:33d2:b0:52e:767a:ada3 with SMTP id 2adb3069b0e04-539ab9e16femr8028309e87.47.1728397446196;
        Tue, 08 Oct 2024 07:24:06 -0700 (PDT)
Message-ID: <e70f475d-f373-4ab8-a4f7-5562d0d76c78@suse.com>
Date: Tue, 8 Oct 2024 16:24:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 11/19] xen: Update header guards - Kconfig
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Doug Goldstein <cardoe@cardoe.com>, xen-devel@lists.xenproject.org
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
 <20241004081713.749031-12-frediano.ziglio@cloud.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: <20241004081713.749031-12-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 10:17, Frediano Ziglio wrote:
> Updated headers related to Kconfig.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
>  xen/tools/kconfig/expr.h   | 6 +++---
>  xen/tools/kconfig/images.h | 6 +++---
>  xen/tools/kconfig/list.h   | 4 ++--
>  xen/tools/kconfig/lkc.h    | 6 +++---
>  4 files changed, 11 insertions(+), 11 deletions(-)

This is a standalone tool, and hence the guards used here can't conflict
with those used in headers involved the the building of the Xen binary /
binaries itself / themselves. I'd vote for leaving such alone, unless
there's an actual reason to alter their guards too.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:34:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:34:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813183.1226006 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syBIB-00029u-Kr; Tue, 08 Oct 2024 14:34:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813183.1226006; Tue, 08 Oct 2024 14:34: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 1syBIB-00029n-HL; Tue, 08 Oct 2024 14:34:27 +0000
Received: by outflank-mailman (input) for mailman id 813183;
 Tue, 08 Oct 2024 14:34: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syBI9-00029h-SS
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:34:25 +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 6a58a073-8582-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 16:34:24 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c91a7141b8so161712a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:34:24 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9950ef9f45sm306240166b.37.2024.10.08.07.34.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:34:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a58a073-8582-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728398064; x=1729002864; 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=LA4lJFd9gjECCkUvfg3uw4f0Ym7fSn6imjWNBu9BpSw=;
        b=We34xpTGcWVCKVjP4LWvJj03eaJkVbQFRPT74am46a+9IU4Zjlxn2FBCV7JzmHAEoN
         Zuap8qcFWTqStDZIKyZwsoIRVCD9ciC0f002rVb9xbvdmF8qhd0J66BkRskB9Ies1TLl
         MNaQpyTH591EXAko+5NYr7RVBXUk3CIyjOfZXmd8z+PwD5JG5Qj1wPJl6E6T/XePJKAK
         34wh6j+AHbezuaPKiSi7a1PLdcFj+qUfy2R5vSKf4bf3+WyoHPHj8PdXYRbcgvIKgfX2
         C815ciVJOB8bciHtkxZ73FbTlHV0lmtNFbi2hvcS8kzP7flj4JoOMwY7yQj7xeYG4sdJ
         DYJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728398064; x=1729002864;
        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=LA4lJFd9gjECCkUvfg3uw4f0Ym7fSn6imjWNBu9BpSw=;
        b=tfCGqf/aSdQYc7+WKCqpPxfBTnwA5whBzXzlci8bEBSqbZkGLNUXV7fDhWYElGarP9
         semXbLZfM5xJCf22s6E9eQgoLF7d6Rz6SOVi4WsGEChS5F6EJjQArVu8Ct/RP+vzPWHx
         EHnTTvr+/CreEnB39aeOnLy+P5gkoXgdsGGc4EI4innn+BRHenWerp6hnhcfG2lSC7aH
         Flik+OmOVitgfcUA7qv9bgaRFQoo8GU8gJIjtq4+OLjaxEGtrbtMA4adq56Sz5Jzp1x1
         Lyjz6YPS//Q5q5dVzQoAZ5ULEN3UYhmvOfjmih3muBzRiVyEijOMYRQQ3dZlTyTZ/BCf
         A7GQ==
X-Forwarded-Encrypted: i=1; AJvYcCVZ8sHxO1bfCEF7aASAouqlqWtOfFIaOIdw20VWUxcZgubZ9TASNqodvX6AfHSGJCUBEL/mX0C8FPA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqBg0iTfEBZnNLHL3YMxJ1nVRDrFf6gKsc5lwMAnhFz2Uq4xYu
	6qI8WFgstso6B9kSrBidv90PLwggSsL905Fi7CLKxnvoJ6l7ORHqujOX8T6E2g==
X-Google-Smtp-Source: AGHT+IEu4psKJO5cv7B3wJ5SPMJTjnp2aPK3672HegSm8UjR3Talt+YjxAWRwVZy0LiqOjjekw3REw==
X-Received: by 2002:a17:907:961b:b0:a86:a4b1:d2b8 with SMTP id a640c23a62f3a-a991bcf6f90mr1533956666b.4.1728398064207;
        Tue, 08 Oct 2024 07:34:24 -0700 (PDT)
Message-ID: <3ba27327-a2f1-4544-8437-678ba01f7c4d@suse.com>
Date: Tue, 8 Oct 2024 16:34:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 15/19] xen: Update header guards - RISC-V
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Alexandru Isaila <aisaila@bitdefender.com>,
 Petre Pircalabu <ppircalabu@bitdefender.com>, xen-devel@lists.xenproject.org
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
 <20241004081713.749031-16-frediano.ziglio@cloud.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: <20241004081713.749031-16-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 10:17, Frediano Ziglio wrote:
> Updated headers related to RISC-V.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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

> ---
>  xen/arch/riscv/include/asm/acpi.h           | 6 +++---
>  xen/arch/riscv/include/asm/asm.h            | 6 +++---
>  xen/arch/riscv/include/asm/atomic.h         | 6 +++---
>  xen/arch/riscv/include/asm/bitops.h         | 6 +++---
>  xen/arch/riscv/include/asm/bug.h            | 6 +++---
>  xen/arch/riscv/include/asm/byteorder.h      | 6 +++---
>  xen/arch/riscv/include/asm/cache.h          | 6 +++---
>  xen/arch/riscv/include/asm/cmpxchg.h        | 6 +++---
>  xen/arch/riscv/include/asm/config.h         | 6 +++---
>  xen/arch/riscv/include/asm/cpufeature.h     | 6 +++---
>  xen/arch/riscv/include/asm/csr.h            | 6 +++---
>  xen/arch/riscv/include/asm/current.h        | 6 +++---
>  xen/arch/riscv/include/asm/domain.h         | 6 +++---
>  xen/arch/riscv/include/asm/early_printk.h   | 6 +++---
>  xen/arch/riscv/include/asm/event.h          | 6 +++---
>  xen/arch/riscv/include/asm/fence.h          | 6 +++---
>  xen/arch/riscv/include/asm/fixmap.h         | 6 +++---
>  xen/arch/riscv/include/asm/flushtlb.h       | 6 +++---
>  xen/arch/riscv/include/asm/guest_access.h   | 6 +++---
>  xen/arch/riscv/include/asm/guest_atomics.h  | 6 +++---
>  xen/arch/riscv/include/asm/io.h             | 6 +++---
>  xen/arch/riscv/include/asm/irq.h            | 6 +++---
>  xen/arch/riscv/include/asm/mm.h             | 6 +++---
>  xen/arch/riscv/include/asm/monitor.h        | 6 +++---
>  xen/arch/riscv/include/asm/nospec.h         | 6 +++---
>  xen/arch/riscv/include/asm/p2m.h            | 6 +++---
>  xen/arch/riscv/include/asm/page-bits.h      | 6 +++---
>  xen/arch/riscv/include/asm/page.h           | 6 +++---
>  xen/arch/riscv/include/asm/pmap.h           | 6 +++---
>  xen/arch/riscv/include/asm/processor.h      | 6 +++---
>  xen/arch/riscv/include/asm/regs.h           | 6 +++---
>  xen/arch/riscv/include/asm/riscv_encoding.h | 4 ++--
>  xen/arch/riscv/include/asm/sbi.h            | 6 +++---
>  xen/arch/riscv/include/asm/setup.h          | 6 +++---
>  xen/arch/riscv/include/asm/smp.h            | 4 ++--
>  xen/arch/riscv/include/asm/spinlock.h       | 6 +++---
>  xen/arch/riscv/include/asm/string.h         | 6 +++---
>  xen/arch/riscv/include/asm/system.h         | 6 +++---
>  xen/arch/riscv/include/asm/time.h           | 6 +++---
>  xen/arch/riscv/include/asm/traps.h          | 6 +++---
>  xen/arch/riscv/include/asm/types.h          | 6 +++---
>  41 files changed, 121 insertions(+), 121 deletions(-)

For the bulk of the changes you didn't Cc anyone who can ack them. Note that
the RISCV section of ./MAINTAINERS presently has only R: entries. You need
to Cc THE REST in such a case.

It is probably also a good idea to Cc the person(s) doing the bulk of the
work in a given area at a given point in time. Then again, Oleksii, maybe
you want to consider adding yourself as R: in that section, too? That way
you will be Cc-ed on patches (as long as people respect ./MAINTAINERS).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:35:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:35:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813188.1226016 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syBJ6-00031b-St; Tue, 08 Oct 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 813188.1226016; Tue, 08 Oct 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 1syBJ6-00031U-Pv; Tue, 08 Oct 2024 14:35:24 +0000
Received: by outflank-mailman (input) for mailman id 813188;
 Tue, 08 Oct 2024 14:35: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syBJ5-0002oW-Ij
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:35:23 +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 8d0c0a24-8582-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 16:35:23 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c91756c9easo542729a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:35:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9958647caasm253928466b.213.2024.10.08.07.35.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:35:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d0c0a24-8582-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728398122; x=1729002922; 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=JQ55pjdPeb3ZVFEJGCWyrPSNwYuVHUdUxj2TK1Mv+6w=;
        b=P/sk638CPpHpb+W6VhNzj0FU7TwEP7aC0pg603PVDeHl9L5lEjtg47dKgp8JpC2yZT
         +YuJPamaMw6Tw+zSfL8/D2/kAnOIsmkjqUyZDYwB3CzqoGihjV03nnZhuMcODNFv8Yt5
         DkWogeBItnrjz/32NRDniqghX9ZeAWDLkgvIW+30XxIs52QvVQ4yPZ/ztKtSb7/y1Yey
         QCrgTZo4WOMtec3MEGlSIBB66F1qx+HT/JipG8dT5Z3yGeBRC9EZkXnkVLEwObGEhz+o
         vPxtZ2M1UDs6mMIboZXVFdbZ27uqXOUQ69y0Pv9anq1EXgIceVdxlY5/JD4z+ntATYc8
         0z+w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728398122; x=1729002922;
        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=JQ55pjdPeb3ZVFEJGCWyrPSNwYuVHUdUxj2TK1Mv+6w=;
        b=mVodv9Vsi0WmPC6XMBkiv4zABZJyj+YrGyWBUKpoTvVcuZP2oN1SpNJAm/r6R1Mj9P
         yst0qiZAM7v2t+aNRInnB+cY5u/gAYHYiSvpEKVgIwLKzPH8jYJv4FDUc1Ut2x53gf/c
         91q9xFfont22nG0/VJtcO5035zpWYTGrZrKpfxYAUl1Du8eQgI8RN8swqF96vOAhETHf
         8b2pmQ+K0vWceAHohvmiGe2y8JgZ9gM1VAIKRaxL++6Td0dP6yY0YdCQQEwBv4bGZbeg
         g2FKexeHtztnP0bV0T/7F3o8g+WJXomiSQoFJs9KMOYQxSsfYzraf252OYRMWObBLUEC
         EvrQ==
X-Forwarded-Encrypted: i=1; AJvYcCUl0IQqA2ImrHoVw9MqVdiH1xdDoMuWN22L7FWd2uqh0X5N80iGNXDelcrlfiPDC2/YgiZ/82wOrko=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyT+27scGLd80VOeXHvOflf46xQz149l9N1WXhQLpenOLOxxe0N
	EGgtQSSFlNJWaFTD0V+ZgJKwR4K8cY0C5925NtNG3N7COk0iyA0vZ2FWtbFLJw==
X-Google-Smtp-Source: AGHT+IHgV9NkERj755xLtJ4Zbd0uyi8yhJuZ3l95kK5DQG7WSBEjIcuu2huGI2bwsV87S0Qhwt4B1Q==
X-Received: by 2002:a17:907:6d25:b0:a99:5c07:9f5b with SMTP id a640c23a62f3a-a996785140cmr386718866b.6.1728398122596;
        Tue, 08 Oct 2024 07:35:22 -0700 (PDT)
Message-ID: <54f11b9c-95cd-4694-a917-70e5904c6122@suse.com>
Date: Tue, 8 Oct 2024 16:35:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 09/19] xen: Update header guards - Intel TXT
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Lukasz Hawrylko <lukasz@hawrylko.pl>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
 <20241004081713.749031-10-frediano.ziglio@cloud.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: <20241004081713.749031-10-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 10:17, Frediano Ziglio wrote:
> Updated headers related to Intel trusted execution technology.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:36:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:36:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813190.1226026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syBJz-0003YG-4p; Tue, 08 Oct 2024 14:36:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813190.1226026; Tue, 08 Oct 2024 14:36: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 1syBJz-0003Y9-21; Tue, 08 Oct 2024 14:36:19 +0000
Received: by outflank-mailman (input) for mailman id 813190;
 Tue, 08 Oct 2024 14:36: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=Iuf0=RE=gmail.com=brgerst@srs-se1.protection.inumbo.net>)
 id 1syBJx-0003Xk-Gr
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:36: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 acf81a25-8582-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 16:36:16 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-53994aadb66so5158366e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:36:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acf81a25-8582-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728398176; x=1729002976; 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=RAzASSCUQ2aUVsiLqBLU+OR2T2BBF/GKBA/6/Hrht2Y=;
        b=OedTASEAtWBKMJ4Akhroy+D+a9A946k/M4Lef9/Ysfv16TWLfcTMHSFBsmxzkWuR4U
         CeS6xivMHVQmvX1KmcZvUQnQJKAH0+V6ctvVAi20lCUAyT+8K+8JJSs2YKK2FOc+Cj1L
         4bvasG/usyAhSN5s08aeA46fzwYrFRU7h5Kuk1ugPnz7SofWI0PGfe7DQhkXnmbvrO+l
         gZNxjxS1QrGbcLB8D9kgT3VWf5qe+bW3NC2Et4oMeHSrySZrcMNbGDIuI6Q53Uyf/k2a
         /TjEkjdQHmxTGGEh4VET60Vjdl1PZojQpjzGwVVCMLEiQCteTyT/rBDZa1PS4ip1lVmB
         ekIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728398176; x=1729002976;
        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=RAzASSCUQ2aUVsiLqBLU+OR2T2BBF/GKBA/6/Hrht2Y=;
        b=cIcy4yVkzlymKiGch3gL6QteJ30YEMUTKoo7X8d3z3J5egYTGlNoiseXcFhI/GrBwl
         0U3V9r7LUrhuaZqJ0axafibW5vuwj4imoLv9w2gSPUETp7qrDJK8zJb/Noa4r/ZU2S83
         +2MnknRiKGwU6bjQvi451Qc/up9ipYOJ+vfp29ozTWIplZG4PvYGU14sGqzA51keWhKr
         hvrGlvQ53SQN2IUdSXOWk1kFPPeP9eu9mcCOYwtf9RKiX16wQ50+a//rftnM1Q2RRAxJ
         Y8dYQvyG/UpGYIl5is0SsGPqIFgAMzug/ebDOcM0hQAHk2DgtixIjaNLl4t+O53mUMgi
         zb2g==
X-Forwarded-Encrypted: i=1; AJvYcCXlqGhLKdt4EE8Q0tCuMMX9oIwvuEREt++juWt2qOe+anCh8MeqEXkYIrfABNrf77kuSzaTcaoCBSM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwajCa7hfI9WqMfzbv4N7YgR1OCi8ZqhfhGPWpNjPr96rbP8NFR
	YuKPP6O0KfqAThl67wptZvrPbEVDtVSjdE2m1TU7MCxekee2l42zM7mGcyVP8QWW+zKTrS/ccaW
	s4zW28ht0sHfzOaZ6Eoo7xn/OzQ==
X-Google-Smtp-Source: AGHT+IFk7uSGpMKxSJMgul6omDcmQyMQl5Zy1l8C5NVTbpCgjnnjxrxdxyhpPaT355keXYtQRCu422aiN8olYIcP4XU=
X-Received: by 2002:a05:6512:3085:b0:539:8a9a:4e56 with SMTP id
 2adb3069b0e04-539ab8c6fb8mr8574397e87.53.1728398175714; Tue, 08 Oct 2024
 07:36:15 -0700 (PDT)
MIME-Version: 1.0
References: <20240925150059.3955569-30-ardb+git@google.com>
 <20240925150059.3955569-35-ardb+git@google.com> <CAFULd4ZNwfPZO-yDjrtT2ANV509HeeYgR80b9AFachaVW5zqrg@mail.gmail.com>
 <CAMzpN2j4uj=mhdi7QHaA7y_NLtaHuRpnit38quK6RjvxdUYQew@mail.gmail.com> <CAMj1kXF3_Hj9j2f_cBtwTFWvEmB0UoEs_cGkRiWc4AErDx0ftQ@mail.gmail.com>
In-Reply-To: <CAMj1kXF3_Hj9j2f_cBtwTFWvEmB0UoEs_cGkRiWc4AErDx0ftQ@mail.gmail.com>
From: Brian Gerst <brgerst@gmail.com>
Date: Tue, 8 Oct 2024 10:36:03 -0400
Message-ID: <CAMzpN2jWRV8-JzM2FjSvSz+VoDrNVeEJPgF7N5ksLaADHpnHsA@mail.gmail.com>
Subject: Re: [RFC PATCH 05/28] x86: Define the stack protector guard symbol explicitly
To: Ard Biesheuvel <ardb@kernel.org>
Cc: Uros Bizjak <ubizjak@gmail.com>, Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, 
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>, Andy Lutomirski <luto@kernel.org>, 
	Peter Zijlstra <peterz@infradead.org>, Dennis Zhou <dennis@kernel.org>, Tejun Heo <tj@kernel.org>, 
	Christoph Lameter <cl@linux.com>, Mathieu Desnoyers <mathieu.desnoyers@efficios.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, 
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Arnd Bergmann <arnd@arndb.de>, 
	Masahiro Yamada <masahiroy@kernel.org>, Kees Cook <kees@kernel.org>, 
	Nathan Chancellor <nathan@kernel.org>, Keith Packard <keithp@keithp.com>, 
	Justin Stitt <justinstitt@google.com>, Josh Poimboeuf <jpoimboe@kernel.org>, 
	Arnaldo Carvalho de Melo <acme@kernel.org>, Namhyung Kim <namhyung@kernel.org>, Jiri Olsa <jolsa@kernel.org>, 
	Ian Rogers <irogers@google.com>, Adrian Hunter <adrian.hunter@intel.com>, 
	Kan Liang <kan.liang@linux.intel.com>, linux-doc@vger.kernel.org, 
	linux-pm@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	linux-efi@vger.kernel.org, linux-arch@vger.kernel.org, 
	linux-sparse@vger.kernel.org, linux-kbuild@vger.kernel.org, 
	linux-perf-users@vger.kernel.org, rust-for-linux@vger.kernel.org, 
	llvm@lists.linux.dev
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 4, 2024 at 9:15=E2=80=AFAM Ard Biesheuvel <ardb@kernel.org> wro=
te:
>
> On Sat, 28 Sept 2024 at 15:41, Brian Gerst <brgerst@gmail.com> wrote:
> >
> > On Wed, Sep 25, 2024 at 2:33=E2=80=AFPM Uros Bizjak <ubizjak@gmail.com>=
 wrote:
> > >
> > > On Wed, Sep 25, 2024 at 5:02=E2=80=AFPM Ard Biesheuvel <ardb+git@goog=
le.com> wrote:
> > > >
> > > > From: Ard Biesheuvel <ardb@kernel.org>
> > > >
> > > > Specify the guard symbol for the stack cookie explicitly, rather th=
an
> > > > positioning it exactly 40 bytes into the per-CPU area. Doing so rem=
oves
> > > > the need for the per-CPU region to be absolute rather than relative=
 to
> > > > the placement of the per-CPU template region in the kernel image, a=
nd
> > > > this allows the special handling for absolute per-CPU symbols to be
> > > > removed entirely.
> > > >
> > > > This is a worthwhile cleanup in itself, but it is also a prerequisi=
te
> > > > for PIE codegen and PIE linking, which can replace our bespoke and
> > > > rather clunky runtime relocation handling.
> > >
> > > I would like to point out a series that converted the stack protector
> > > guard symbol to a normal percpu variable [1], so there was no need to
> > > assume anything about the location of the guard symbol.
> > >
> > > [1] "[PATCH v4 00/16] x86-64: Stack protector and percpu improvements=
"
> > > https://lore.kernel.org/lkml/20240322165233.71698-1-brgerst@gmail.com=
/
> > >
> > > Uros.
> >
> > I plan on resubmitting that series sometime after the 6.12 merge
> > window closes.  As I recall from the last version, it was decided to
> > wait until after the next LTS release to raise the minimum GCC version
> > to 8.1 and avoid the need to be compatible with the old stack
> > protector layout.
> >
>
> Hi Brian,
>
> I'd be more than happy to compare notes on that - I wasn't aware of
> your intentions here, or I would have reached out before sending this
> RFC.
>
> There are two things that you would need to address for Clang support
> to work correctly:
> - the workaround I cc'ed you on the other day [0],
> - a workaround for the module loader so it tolerates the GOTPCRELX
> relocations that Clang emits [1]
>
>
>
> [0] https://lore.kernel.org/all/20241002092534.3163838-2-ardb+git@google.=
com/
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git/commit=
/?id=3Da18121aabbdd

The first patch should be applied independently as a bug fix, since it
already affects the 32-bit build with clang.

I don't have an environment with an older clang compiler to test the
second patch, but I'll assume it will be necessary.  I did run into an
issue with the GOTPCRELX relocations before [1], but I thought it was
just an objtool issue and didn't do more testing to know if modules
were broken or not.

Brian Gerst

[1] https://lore.kernel.org/all/20231026160100.195099-6-brgerst@gmail.com/


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:36:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:36:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813197.1226037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syBKX-0004SN-GE; Tue, 08 Oct 2024 14:36:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813197.1226037; Tue, 08 Oct 2024 14:36: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 1syBKX-0004SG-Ct; Tue, 08 Oct 2024 14:36:53 +0000
Received: by outflank-mailman (input) for mailman id 813197;
 Tue, 08 Oct 2024 14:36: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syBKW-0004S5-EI
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:36:52 +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 c128e435-8582-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 16:36:50 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-5398e33155fso7073954e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:36:50 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e664ed8sm519943366b.95.2024.10.08.07.36.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:36:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c128e435-8582-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728398210; x=1729003010; 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=pwqrwefo857erRw28hHbTwHYu6QKZysbaAEuf9hbHVE=;
        b=fEYEMmRscNI6R2wFdJgykM1c2ktWQPMgR45k6zt6bAkSlHwuSmGV5WM1fC8E2v0iYP
         yqCex/Hz2nB9vdXwJOZTrfJkC0ReQLqTFLaScvhjH9+gTVtRQKkpMwfZXfU9AOwpHVME
         u/Nl/ZvBjlrDs5CJRuJ3I5RX/SZDNVdO4Za3QGnhQStBbUH0CV30H91clKsTlgDE3yZV
         XeRgeTThpHLx3tpS3h4LVpQB40tu7wReMvLNwaXxCNbYK+HF/zsD3Voqt+T3bFDQGBuT
         yj8k4nD/HxrHK9nDlkcqlEw8EDjesa9luWzY0vU3hekZba5HV1lA6pucw50uJrHq89jN
         kXmQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728398210; x=1729003010;
        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=pwqrwefo857erRw28hHbTwHYu6QKZysbaAEuf9hbHVE=;
        b=huKzb8Q/NMhY2zRkVeHVKxUd+F45Qy1kUpM/e5cZMhMH6gzUwn5bbOIrSC4VGuwL35
         usfvUm/s+PrbijlpUlWhtW4PzG0tVf/azUmSthgklhGNGsZz73nSpyMbScQb4mLSttYt
         QhZO8wkQckZ9hg2b4/x5BUuzvA5N+u8UnICnsa+j5rsiL2ZH7qnEZZkslA+NHGS07NK3
         fnA6ttAElU9kAKA3F5TPXd7oowR7ri6ha9eeN6B3qaggz3scEgE5+cIXKNH0KlbYVfXQ
         vF32Dt7kqzwZJLqZnXlkj1wu3vIve3GTD57wRFIhR7/PX5D2WFgLzXovzaV719U0I0jm
         gLXg==
X-Forwarded-Encrypted: i=1; AJvYcCU0ZU8rfLXLxuiSX1LRo3en1BVQJ9EUKt6ztTcygj/UVDnakQEHXljJ/I9pZjK3bdigyisf61hZEoo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyFzh4qtKNnRBzhzNzROtPyPGfdfXTKmBr3i86dLSWmL+SpY6ne
	ADCPWDmDBMvqeMNqG9cJknMU7CNGAVU728LA7onDFq1yEg4aOrkPVt7HdAOf9A==
X-Google-Smtp-Source: AGHT+IEixP9AT5ftgua929so5Yje9NYxU3S2jxxKyQRdYkObt52CqWSrHlZY2JSZoZdQz4HnWP37GQ==
X-Received: by 2002:a05:6512:33d0:b0:539:a3eb:d000 with SMTP id 2adb3069b0e04-539ab9e16b8mr8201222e87.42.1728398209978;
        Tue, 08 Oct 2024 07:36:49 -0700 (PDT)
Message-ID: <91bf52b6-5e1f-4ce5-8eef-362efa55759e@suse.com>
Date: Tue, 8 Oct 2024 16:36:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/19] xen: Update header guards - I/O MMU
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
 <20241004081713.749031-11-frediano.ziglio@cloud.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: <20241004081713.749031-11-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.10.2024 10:17, Frediano Ziglio wrote:
> Updated headers related to I/O MMU.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:46:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:46:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813208.1226047 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syBU1-0000m7-CL; Tue, 08 Oct 2024 14:46:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813208.1226047; Tue, 08 Oct 2024 14:46: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 1syBU1-0000m0-8V; Tue, 08 Oct 2024 14:46:41 +0000
Received: by outflank-mailman (input) for mailman id 813208;
 Tue, 08 Oct 2024 14:46: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 1syBU0-0000lq-5U; Tue, 08 Oct 2024 14:46: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 1syBTz-0003fj-T4; Tue, 08 Oct 2024 14:46: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 1syBTz-0007kw-F7; Tue, 08 Oct 2024 14:46:39 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syBTz-0007FB-Er; Tue, 08 Oct 2024 14:46: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=G3e02jUs98QBSTNlGwHJzusTuLllK4QVciE313r2JOU=; b=A+8eVb0fuydlzUSUDV2OD8RNqp
	dJSgexLwvJ3aCT+LjDwHs+ttT7FrZo6YNaHZt2sqUH8xFXLX6dBoE1gvzfKy2lcRPbGRCoZ7opLGy
	OgBLspIbmW5sqjK9wZ+8HmnxLY1QfhxdNmZ+ObdC0Gva20hkqh5mHF5qjuoMBhtwIK4g=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188005-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188005: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-xl-qcow2:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=2af37e791906cfda42cb9604a16d218e56994bb1
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 14:46:39 +0000

flight 188005 qemu-mainline real [real]
flight 188012 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188005/
http://logs.test-lab.xenproject.org/osstest/logs/188012/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-qcow2    20 leak-check/check    fail pass in 188012-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-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-raw 14 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                2af37e791906cfda42cb9604a16d218e56994bb1
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   22 days
Failing since        187731  2024-09-17 13:11:20 Z   21 days   36 attempts
Testing same since   188005  2024-10-08 02:05:22 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 8214 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 14:56:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 14:56:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813217.1226057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syBdS-0005fV-8O; Tue, 08 Oct 2024 14:56:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813217.1226057; Tue, 08 Oct 2024 14:56: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 1syBdS-0005fO-5U; Tue, 08 Oct 2024 14:56:26 +0000
Received: by outflank-mailman (input) for mailman id 813217;
 Tue, 08 Oct 2024 14:56: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syBdR-0005SR-3Z
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 14:56:25 +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 7c459433-8585-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 16:56:23 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so662655566b.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 07:56:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9940fd1c8csm431811766b.128.2024.10.08.07.56.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 07:56:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c459433-8585-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728399383; x=1729004183; 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=1bBzizEXVlhacuzkk9KpCDJysZs/CovklXHjtslN3Go=;
        b=Wjo+3nqkpwX9yI346ddPrOpuqDyI0/wDzCCNjYDfrAFwkBbv4Q+WF+di+pAvVfjfen
         M0v4/QV46+aVOBh6OlJJPSoeQFqOr2i7zNeXCPeQnQlGyDTPPYArllbCmIxwAkdUp2tY
         BhextSl3eAqnrQrdpFXnJ5l6LLu9iE6ZRrAaBlkRdsq77XkL5CEIiHnNYP212JJ56pvn
         L8gwWUtnd9F6+VrftuI0EWrz0UrvWFvZ41qm2Z1NQi4PaR3VC3LSrHtV8QZNysE6FUaR
         AjKBP1im6T6Vipey5Epd/QN5X2B0QXvOt52GTrli9JV5+HdGIv/xYSUsmaXulWaUEjmV
         Noqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728399383; x=1729004183;
        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=1bBzizEXVlhacuzkk9KpCDJysZs/CovklXHjtslN3Go=;
        b=DR+6XRvcR3q9P6hEY+fWYWwMQdrerjw/iU+f6A926ozportvjuUqfRu7B9R8YRUQga
         teqkTB8hlTz2XUgouN2RqSsdREfgOdZrxLjfM+SeCLlt7zCcdVCrhjW1Djfogde/mnYG
         1+6ey9/HX0jPdYNS6Jd9inIreMlaxsZh5JTZVmxGzFOUNZV7wD8VOyysyUn90tZe0nnP
         yZToiD/OYIwlxfrlG5+6Yjmimz9Uwz4U1fkzrw0Md42Fw/lpSiVQtssjnFq9etYEvJRR
         5g40aEBGZz5oIcOhFcUrW48JPCstiVSB7gJwiTGqsMQVyO5RSdoATCeUzhigTN2Oq047
         8heA==
X-Gm-Message-State: AOJu0YyHBJINWeI/kJaxOy0hPfGz7SCcs2zSMWOFI4FD8X+wG85vGXQS
	fKuA9FSEhgIynmEF+vfgZA9AFRbRAV7ui+PCHkjOyc6VEsb4lyZcQvgdrWi1xROkW5uGiJcU3o4
	=
X-Google-Smtp-Source: AGHT+IFQ9IfilNXTKDhNjdSc5rIoCGt1azwX3PlVLMO+Y3bLsQy4XciqlThV6UbDio8nRWvjZq79fw==
X-Received: by 2002:a17:907:97cf:b0:a99:408c:6a10 with SMTP id a640c23a62f3a-a99408c6d29mr1107435966b.16.1728399382849;
        Tue, 08 Oct 2024 07:56:22 -0700 (PDT)
Message-ID: <cfaf8df7-e78e-46be-b6d4-499dd96e0f66@suse.com>
Date: Tue, 8 Oct 2024 16:56:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v4] types: replace remaining uses of s64
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?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>,
 Michal Orzel <michal.orzel@amd.com>,
 Ross Lagerwall <ross.lagerwall@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

... and move the type itself to linux-compat.h. An exception being
arch/arm/arm64/cpufeature.c and arch/arm/include/asm/arm64/cpufeature.h,
which are to use linux-compat.h instead (the former by including the
latter).

While doing so
- correct the type of union uu's uq field in lib/divmod.c,
- switch a few adjacent types as well, for (a little bit of)
  consistency.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ross Lagerwall <ross.lagerwall@citrix.com>
---
v4: Use linux-compat.h in arch/arm/include/asm/arm64/cpufeature.h.
v3: Use linux-compat.h in arch/arm/arm64/cpufeature.c.
v2: Split off ubsan.[ch] adjustments. Re-base.

--- a/xen/arch/arm/arm64/livepatch.c
+++ b/xen/arch/arm/arm64/livepatch.c
@@ -119,7 +119,7 @@ static u64 do_reloc(enum aarch64_reloc_o
 
 static int reloc_data(enum aarch64_reloc_op op, void *place, u64 val, int len)
 {
-    s64 sval = do_reloc(op, place, val);
+    int64_t sval = do_reloc(op, place, val);
 
     switch ( len )
     {
@@ -136,7 +136,7 @@ static int reloc_data(enum aarch64_reloc
         break;
 
     case 64:
-        *(s64 *)place = sval;
+        *(int64_t *)place = sval;
         break;
 
     default:
@@ -155,9 +155,9 @@ enum aarch64_insn_movw_imm_type {
 static int reloc_insn_movw(enum aarch64_reloc_op op, void *dest, u64 val,
                            int lsb, enum aarch64_insn_movw_imm_type imm_type)
 {
-    u64 imm;
-    s64 sval;
-    u32 insn = *(u32 *)dest;
+    uint64_t imm;
+    int64_t sval;
+    uint32_t insn = *(uint32_t *)dest;
 
     sval = do_reloc(op, dest, val);
     imm = sval >> lsb;
@@ -200,9 +200,9 @@ static int reloc_insn_movw(enum aarch64_
 static int reloc_insn_imm(enum aarch64_reloc_op op, void *dest, u64 val,
                           int lsb, int len, enum aarch64_insn_imm_type imm_type)
 {
-    u64 imm, imm_mask;
-    s64 sval;
-    u32 insn = *(u32 *)dest;
+    uint64_t imm, imm_mask;
+    int64_t sval;
+    uint32_t insn = *(uint32_t *)dest;
 
     /* Calculate the relocation value. */
     sval = do_reloc(op, dest, val);
@@ -220,7 +220,7 @@ static int reloc_insn_imm(enum aarch64_r
      * Extract the upper value bits (including the sign bit) and
      * shift them to bit 0.
      */
-    sval = (s64)(sval & ~(imm_mask >> 1)) >> (len - 1);
+    sval = (int64_t)(sval & ~(imm_mask >> 1)) >> (len - 1);
 
     /*
      * Overflow has occurred if the upper bits are not all equal to
--- a/xen/arch/arm/include/asm/arm64/cpufeature.h
+++ b/xen/arch/arm/include/asm/arm64/cpufeature.h
@@ -1,6 +1,8 @@
 #ifndef __ASM_ARM_ARM64_CPUFEATURES_H
 #define __ASM_ARM_ARM64_CPUFEATURES_H
 
+#include <xen/linux-compat.h>
+
 /*
  * CPU feature register tracking
  *
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1223,7 +1223,7 @@ void vlapic_tdt_msr_set(struct vlapic *v
     if ( value > guest_tsc )
     {
         uint64_t delta = gtsc_to_gtime(v->domain, value - guest_tsc);
-        delta = max_t(s64, delta, 0);
+        delta = max_t(int64_t, delta, 0);
 
         HVM_DBG_LOG(DBG_LEVEL_VLAPIC_TIMER, "delta[0x%016"PRIx64"]", delta);
 
--- a/xen/arch/x86/include/asm/hvm/vcpu.h
+++ b/xen/arch/x86/include/asm/hvm/vcpu.h
@@ -134,8 +134,8 @@ struct hvm_vcpu {
     unsigned long       hw_cr[5];
 
     struct vlapic       vlapic;
-    s64                 cache_tsc_offset;
-    u64                 guest_time;
+    int64_t             cache_tsc_offset;
+    uint64_t            guest_time;
 
     /* Lock and list for virtual platform timers. */
     spinlock_t          tm_lock;
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -66,10 +66,10 @@ struct cpu_time {
 struct platform_timesource {
     const char *id;
     const char *name;
-    u64 frequency;
+    uint64_t frequency;
     /* Post-init this hook may only be invoked via the read_counter() wrapper! */
-    u64 (*read_counter)(void);
-    s64 (*init)(struct platform_timesource *);
+    uint64_t (*read_counter)(void);
+    int64_t (*init)(struct platform_timesource *);
     void (*resume)(struct platform_timesource *);
     int counter_bits;
 };
@@ -368,7 +368,7 @@ static u64 cf_check read_pit_count(void)
     return count32;
 }
 
-static s64 __init cf_check init_pit(struct platform_timesource *pts)
+static int64_t __init cf_check init_pit(struct platform_timesource *pts)
 {
     u8 portb = inb(0x61);
     u64 start, end;
@@ -610,7 +610,7 @@ static u64 cf_check read_pmtimer_count(v
     return inl(pmtmr_ioport);
 }
 
-static s64 __init cf_check init_pmtimer(struct platform_timesource *pts)
+static int64_t __init cf_check init_pmtimer(struct platform_timesource *pts)
 {
     if ( !pmtmr_ioport || (pmtmr_width != 24 && pmtmr_width != 32) )
         return 0;
@@ -655,7 +655,7 @@ static unsigned int __initdata tsc_flags
  * Called in verify_tsc_reliability() under reliable TSC conditions
  * thus reusing all the checks already performed there.
  */
-static s64 __init cf_check init_tsc(struct platform_timesource *pts)
+static int64_t __init cf_check init_tsc(struct platform_timesource *pts)
 {
     u64 ret = pts->frequency;
 
@@ -1034,9 +1034,9 @@ static void __init reset_platform_timer(
     spin_unlock_irq(&platform_timer_lock);
 }
 
-static s64 __init try_platform_timer(struct platform_timesource *pts)
+static int64_t __init try_platform_timer(struct platform_timesource *pts)
 {
-    s64 rc = pts->init(pts);
+    int64_t rc = pts->init(pts);
 
     if ( rc <= 0 )
         return rc;
@@ -1070,7 +1070,7 @@ static u64 __init init_platform_timer(vo
 
     struct platform_timesource *pts = NULL;
     unsigned int i;
-    s64 rc = -1;
+    int64_t rc = -1;
 
     /* clocksource=tsc is initialized via __initcalls (when CPUs are up). */
     if ( (opt_clocksource[0] != '\0') && strcmp(opt_clocksource, "tsc") )
@@ -1923,7 +1923,7 @@ static void cf_check local_time_calibrat
      * Weirdness can happen if we lose sync with the platform timer.
      * We could be smarter here: resync platform timer with local timer?
      */
-    if ( ((s64)stime_elapsed64 < (EPOCH / 2)) )
+    if ( ((int64_t)stime_elapsed64 < (EPOCH / 2)) )
         goto out;
 
     /*
@@ -2398,7 +2398,7 @@ static void __init tsc_check_writability
 
         write_tsc(tsc | (1ULL << 32));
         tmp = rdtsc();
-        if ( ABS((s64)tmp - (s64)tmp2) < (1LL << 31) )
+        if ( ABS((int64_t)tmp - (int64_t)tmp2) < (1LL << 31) )
             what = "only partially";
     }
     else
--- a/xen/drivers/acpi/apei/erst.c
+++ b/xen/drivers/acpi/apei/erst.c
@@ -105,7 +105,7 @@ static inline int erst_errno(int command
 
 static int erst_timedout(u64 *t, u64 spin_unit)
 {
-	if ((s64)*t < spin_unit) {
+	if ((int64_t)*t < spin_unit) {
 		printk(XENLOG_WARNING "Firmware does not respond in time\n");
 		return 1;
 	}
--- a/xen/include/acpi/actypes.h
+++ b/xen/include/acpi/actypes.h
@@ -147,8 +147,8 @@ typedef int INT32;
 
 /*! [End] no source code translation !*/
 
-typedef u64 acpi_native_uint;
-typedef s64 acpi_native_int;
+typedef uint64_t acpi_native_uint;
+typedef int64_t acpi_native_int;
 
 typedef u64 acpi_io_address;
 typedef u64 acpi_physical_address;
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -15,7 +15,7 @@ typedef int8_t  s8, __s8;
 typedef uint8_t __u8;
 typedef int16_t s16, __s16;
 typedef int32_t s32, __s32;
-typedef int64_t __s64;
+typedef int64_t s64, __s64;
 
 typedef paddr_t phys_addr_t;
 
--- a/xen/include/xen/time.h
+++ b/xen/include/xen/time.h
@@ -29,7 +29,7 @@ struct vcpu;
  * of real time into system time 
  */
 
-typedef s64 s_time_t;
+typedef int64_t s_time_t;
 #define PRI_stime PRId64
 
 s_time_t get_s_time_fixed(u64 at_tick);
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -8,7 +8,6 @@
 typedef uint8_t u8;
 typedef uint16_t u16, __u16;
 typedef uint32_t u32, __u32;
-typedef int64_t s64;
 typedef uint64_t u64, __u64;
 
 #include <asm/types.h>
--- a/xen/lib/divmod.c
+++ b/xen/lib/divmod.c
@@ -46,8 +46,8 @@
  * one or more of the following formats.
  */
 union uu {
-    s64            q;              /* as a (signed) quad */
-    s64            uq;             /* as an unsigned quad */
+    int64_t        q;              /* as a (signed) quad */
+    uint64_t       uq;             /* as an unsigned quad */
     long           sl[2];          /* as two signed longs */
     unsigned long  ul[2];          /* as two unsigned longs */
 };
@@ -72,7 +72,7 @@ union uu {
  * and assembly.
  */
 #define CHAR_BIT        8               /* number of bits in a char */
-#define QUAD_BITS       (sizeof(s64) * CHAR_BIT)
+#define QUAD_BITS       (sizeof(int64_t) * CHAR_BIT)
 #define LONG_BITS       (sizeof(long) * CHAR_BIT)
 #define HALF_BITS       (sizeof(long) * CHAR_BIT / 2)
 
@@ -324,7 +324,7 @@ u64 __qdivrem(u64 uq, u64 vq, u64 *arq)
  * Divide two signed quads.
  * Truncates towards zero, as required by C99.
  */
-s64 __divdi3(s64 a, s64 b)
+int64_t __divdi3(int64_t a, int64_t b)
 {
     u64 ua, ub, uq;
     int neg = (a < 0) ^ (b < 0);
@@ -361,7 +361,7 @@ u64 __umoddi3(u64 a, u64 b)
  *  11 % -5 =  1
  * -11 % -5 = -1
  */
-s64 __moddi3(s64 a, s64 b)
+int64_t __moddi3(int64_t a, int64_t b)
 {
     u64 ua, ub, urem;
     int neg = (a < 0);
@@ -374,7 +374,7 @@ s64 __moddi3(s64 a, s64 b)
 /*
  * Quotient and remainder of unsigned long long division
  */
-s64 __ldivmod_helper(s64 a, s64 b, s64 *r)
+int64_t __ldivmod_helper(int64_t a, int64_t b, int64_t *r)
 {
     u64 ua, ub, rem, quot;
 


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:05:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:05:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813227.1226067 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syBm1-0001mq-5m; Tue, 08 Oct 2024 15:05:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813227.1226067; Tue, 08 Oct 2024 15:05: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 1syBm1-0001mj-2U; Tue, 08 Oct 2024 15:05:17 +0000
Received: by outflank-mailman (input) for mailman id 813227;
 Tue, 08 Oct 2024 15:05: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 1syBlz-0001mZ-7e; Tue, 08 Oct 2024 15: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 1syBlz-000408-2S; Tue, 08 Oct 2024 15: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 1syBly-0008Bc-JT; Tue, 08 Oct 2024 15:05:14 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syBly-0005cJ-JB; Tue, 08 Oct 2024 15: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=s6DHwI9UK24hzm4o/vjcy2AjKSxW1dURqmFibRIECOU=; b=sVNMlYEEgcPquPmg5DhmLXMfXU
	vpMCIzlT4F8G9k4EY1AJeiAh2Vyu1MbdHn4PXMhuF+LRycP/bflFFgdG3DaU9WfflUmcAz9D/6VuS
	k+4u4TAfhwfWJ3HL5hDRNu8ksU2aaVTMVsQ9zGDqQP27DkOlw7Nfbw3cx9kOdgor5Wdk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188011-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188011: 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=16a81486c4cdafa8d881dec529a99e2441109872
X-Osstest-Versions-That:
    xen=29555668b5725b9d5393b72bfe7ff9a3fa606714
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 15:05:14 +0000

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

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                  16a81486c4cdafa8d881dec529a99e2441109872
baseline version:
 xen                  29555668b5725b9d5393b72bfe7ff9a3fa606714

Last test of basis   187998  2024-10-07 10:04:08 Z    1 days
Testing same since   188011  2024-10-08 12:02:09 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Olaf Hering <olaf@aepfle.de>
  Stefano Stabellini <sstabellini@kernel.org>

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
   29555668b5..16a81486c4  16a81486c4cdafa8d881dec529a99e2441109872 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:25:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:25:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813237.1226077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syC5p-00020F-Od; Tue, 08 Oct 2024 15:25:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813237.1226077; Tue, 08 Oct 2024 15:25: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 1syC5p-000208-Lo; Tue, 08 Oct 2024 15:25:45 +0000
Received: by outflank-mailman (input) for mailman id 813237;
 Tue, 08 Oct 2024 15:25: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=J5/k=RE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syC5o-000202-PN
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:25:44 +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 94e9ca33-8589-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 17:25:42 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-539908f238fso6529781e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 08:25:42 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539aff2835csm1220925e87.275.2024.10.08.08.25.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 08:25:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 94e9ca33-8589-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728401142; x=1729005942; 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=xei4YqvZnyECK4HqNJplQQsY2wiWAmO1gRPdYf7JWeI=;
        b=VwpcRRZew9OEOe+mjuzggy/ZkU80GU1KnZd/UPViYg7Vs8pKRs8rNk2HKcNYNavTdB
         bxj9HY0YRFZqc+lcz2G/r4WPI01LSJRNojnK0qsk30CvAtPpts7z/0VbffGgbGoJCnqU
         cb6+MH+NMDgF1seHESYzAoKR9ACOsYUsNE81kRdlXSFTUts8W1Kb8ZCIsfhA8Y8Z29M9
         XUjzHUkG4YSEH69NpPLSMok5fZl3Xw5eBCcp6TxuAsGm/DRAkRCJQnbwDeixP8znYOg8
         5jbV6o/FSZih7XryLvzqKHA0+5C94oj8XV/9WbjWt18ZPD+SchWgViBrwGS2qdOIDgOv
         vF/Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728401142; x=1729005942;
        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=xei4YqvZnyECK4HqNJplQQsY2wiWAmO1gRPdYf7JWeI=;
        b=OqJI/aPmD7zeYr4Nw3FTHYo8Bi7lVQPUHz9/6fBGCj5rUjVwkiEHT9yhCEfikBj5Ji
         yHwTz3cIb6YQEM1lKzn3ggMVmlpy1bxRD3iP9GPlPt56M0IjGLHosJvebVm74SryJYy8
         GkZCsE10xHPIiZkIA/IWrV2PZcKiGKOMLPr53ZWKzXs7Oim2IEYoT6mKbSxxv8dj9YIB
         lqNABzvxWvPwr4ZlaVAkTuW6qjeiZ7DhEA33YJLd6lS5upCFG02mFn50tzjdmD0/zQgS
         rL5I40hImlx5KO2Alr0IcUbale2MGeC3YW7rwDVULuPf36xIdA3svxjjhmH7UzLJKPB1
         h4QA==
X-Gm-Message-State: AOJu0YxKveLUInsmS2qy7c3mdVHkAOb59Q7vfCFuDXGZrRL9CdjOpoKM
	DXSUmoT6lpk97Ow3M1L+0oD6gSVdazbnA/HSUsVOeVTKpHOmjaB0VTfbrw==
X-Google-Smtp-Source: AGHT+IGB4dJp5KBsHAeoxooyJ7jWzVHuWOIfpJ1oxuz4Z9xMNsRP5DikvJOjcBQVcDt5mrQgXGBtmw==
X-Received: by 2002:a05:6512:1382:b0:52e:9cc7:4461 with SMTP id 2adb3069b0e04-539ab86253bmr8441234e87.5.1728401141567;
        Tue, 08 Oct 2024 08:25:41 -0700 (PDT)
Message-ID: <a2c4278891263ee8d3431321367a32246d7498c7.camel@gmail.com>
Subject: Re: [PATCH v5 0/6] Move {acpi_}device_init() and device_get_class()
 to common code
From: oleksii.kurochko@gmail.com
To: xen-devel@lists.xenproject.org
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Julien Grall
 <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Roger Pau
 =?ISO-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>, Bertrand Marquis
 <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Alistair Francis
 <alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, Connor
 Davis <connojdavis@gmail.com>
Date: Tue, 08 Oct 2024 17:25:40 +0200
In-Reply-To: <cover.1727452451.git.oleksii.kurochko@gmail.com>
References: <cover.1727452451.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

Hello everyone,

Except the comments ( which Jan wrote could be adjusted while
committing ) for patch 1 everything is properly Acked/Reviewed ( if I
am not missing something ).

I also checked if the patch series rebase/apply on top of current
staging and I hadn't any issue.

Could someone please tell me what should be my next steps? Should I
resend this patch series in case I miss something?

Thanks.

~ Oleksii

On Fri, 2024-09-27 at 18:32 +0200, Oleksii Kurochko wrote:
> The {acpi_}device_init() and device_get_class() functions are
> identical across
> Arm and RISC-V, and they are likely to remain the same for other
> architectures
> like PPC.
> Since there is no architecture-specific logic within these functions,
> they are
> good candidates to be moved to the common codebase.
>=20
> This patch series refactors the code by moving these functions to the
> common
> directory, reducing code duplication and simplifying future
> maintenance.
>=20
> ---
> Changes in V5:
> =C2=A0- Rename SIMPLE_DECL_SECTION to DECL_SECTION_WITH_LADDR and update
> the other
> =C2=A0=C2=A0 patches correspondingly.
> =C2=A0- Drop macros argument for=C2=A0 ACPI_DEV_INFO and DT_DEV_INFO.
> ---
> Changes in V4:
> =C2=A0- Introduce SIMPLE_DECL_SECTION to cover the cases when an
> architecture wants
> =C2=A0=C2=A0 to use section declaration without specifying an load addres=
s.
> =C2=A0- Refactor macors ACPI_DEV_INFO and DT_DEV_INFO and update their
> defintion.
> ---
> Changes in V3:
> =C2=A0- drop _SECTIONS from the name of the macros ADEV_INFO and
> DT_DEV_INFO
> =C2=A0- update the definion of macros ADEV_INFO and DT_DEV_INFO
> =C2=A0- drop DEVICE_INIT config.
> ---
> Changes in v2:
> =C2=A0- Introduce macros for definition of ACPI and Device Tree sections.
> =C2=A0- Introduce CONFIG_DEVICE_INIT to make common/device.o compilable
> only for Arm,
> =C2=A0=C2=A0 PPC and RISC-V.
> ---
>=20
> Oleksii Kurochko (6):
> =C2=A0 xen: introduce DECL_SECTION_WITH_LADDR
> =C2=A0 xen: define ACPI and DT device info sections macros
> =C2=A0 xen/arm: use {DT,ACPI}_DEV_INFO for device info sections
> =C2=A0 xen/ppc: add section for device information in linker script
> =C2=A0 xen/riscv: add section for device information in linker script
> =C2=A0 xen/common: move device initialization code to common code
>=20
> =C2=A0xen/arch/arm/device.c=C2=A0=C2=A0=C2=A0=C2=A0 | 71 +---------------=
-----------------
> =C2=A0xen/arch/arm/xen.lds.S=C2=A0=C2=A0=C2=A0 | 14 +------
> =C2=A0xen/arch/ppc/xen.lds.S=C2=A0=C2=A0=C2=A0 |=C2=A0 4 ++
> =C2=A0xen/arch/riscv/xen.lds.S=C2=A0 |=C2=A0 2 +
> =C2=A0xen/arch/x86/xen.lds.S=C2=A0=C2=A0=C2=A0 |=C2=A0 6 ++-
> =C2=A0xen/common/Makefile=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +
> =C2=A0xen/common/device.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 82
> +++++++++++++++++++++++++++++++++++++++
> =C2=A0xen/include/xen/xen.lds.h | 22 +++++++++++
> =C2=A08 files changed, 120 insertions(+), 83 deletions(-)
> =C2=A0create mode 100644 xen/common/device.c
>=20



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:28:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:28:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813244.1226086 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syC8U-0005Q7-4s; Tue, 08 Oct 2024 15:28:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813244.1226086; Tue, 08 Oct 2024 15:28: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 1syC8U-0005Q0-2B; Tue, 08 Oct 2024 15:28:30 +0000
Received: by outflank-mailman (input) for mailman id 813244;
 Tue, 08 Oct 2024 15:28: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=J5/k=RE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syC8T-0005Pu-1Q
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:28:29 +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 f77d0f7b-8589-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 17:28:28 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-5398939d29eso7127937e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 08:28:28 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539aff233a0sm1223916e87.199.2024.10.08.08.28.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 08:28:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f77d0f7b-8589-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728401308; x=1729006108; 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+0QgJr4CAoh+r2Aye/Kcb7f5/wbnuGkuXv0LfoUMzA=;
        b=boXtW3sKaSRASpjhNQ0nvTg+Ql8iyY/HxqzRx21Jyox6fiSL73LjJJCypLL2J9kROb
         raq4V4zCqAalBqHmG0P0k7wG9b0Ndw6SlYg2LOr2IbVgGFp1pehulHzGK1NftFU/4ZWo
         H+gqr4tI2sluC0Uzo9uT0tN5Rh9TndBL3d0xLWkamyZFwJ3e3wTjr3XyGJGqgVuk5ipN
         3MdN14Szb3Kk6L7ypKlpJENH6dqbicPfmlmV+up9zV1/wgtFgmGM8AAqFwfVtjWz8Ke6
         XgF5wk8nNFEA2a+K0O9ZkKxt9oeTYzISbDh30+rW4Ltgvp2kTZWIt+xTJxmUcXMMTWlQ
         KCTQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728401308; x=1729006108;
        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+0QgJr4CAoh+r2Aye/Kcb7f5/wbnuGkuXv0LfoUMzA=;
        b=SyKvp1GFehJQrkRh/9YV3P7aZLFlf+0cO3vshG7MCCcQb31ZlM446o6trc9Y9p/CZy
         S5hDUitv+/uJSGdjw3oNtpOTeQRZPlTfSWDcCUtc/sFExE2lI6+IE6PfBcdOLeWnH73l
         LuMdAhJwI3uY9xgUlP6bov4IrkR9i5lidpJgQAI0cdkXeDbHkPxHB/Dlxtgspe6X1vkP
         y82W3PFMdwwmzB6j6IMVOQZQgCobacYIGYNrqz6q1dtCF3euI8OmQtj8ky8EpN1WdDoX
         jHer65Ut3x/T5t7TAo7ghDEbdydpnPzefe/XJMASZJABzoEYhPYPtAno4qhZLU6wowyB
         kjDQ==
X-Forwarded-Encrypted: i=1; AJvYcCWtERf2lhZmEJICYNs5Fhd/6sqiavDSVq3Xy8vqTDbQtCfPHfQIQF9XgRzo8E/cduIWiAhNOLZQeu0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxk7y4/VH0nhdMDXv1bSl77gQEe7tUqtXR490iuddZz/I1Mbc9w
	fRI7vqWljqlgpKoRw6JwGclAmZ+CTVTcj0EIdl0zknQZOzj8Oj5h
X-Google-Smtp-Source: AGHT+IGqrCB69/cN/2ne/yc+LB74SI1R5+qU+Jt3woNSn40sE1XtbqV4FR9+ffqk1OuzRp23kg5weA==
X-Received: by 2002:a05:6512:239c:b0:536:5625:511a with SMTP id 2adb3069b0e04-539ab8adc1emr7175470e87.47.1728401307331;
        Tue, 08 Oct 2024 08:28:27 -0700 (PDT)
Message-ID: <c11cbcc557ce4a33c14f721e9a9e7305ba7c9231.camel@gmail.com>
Subject: Re: [PATCH v3 15/19] xen: Update header guards - RISC-V
From: oleksii.kurochko@gmail.com
To: Jan Beulich <jbeulich@suse.com>, Frediano Ziglio
 <frediano.ziglio@cloud.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Tamas K
 Lengyel <tamas@tklengyel.com>, Alexandru Isaila <aisaila@bitdefender.com>,
 Petre Pircalabu <ppircalabu@bitdefender.com>, xen-devel@lists.xenproject.org
Date: Tue, 08 Oct 2024 17:28:26 +0200
In-Reply-To: <3ba27327-a2f1-4544-8437-678ba01f7c4d@suse.com>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
	 <20241004081713.749031-16-frediano.ziglio@cloud.com>
	 <3ba27327-a2f1-4544-8437-678ba01f7c4d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

T24gVHVlLCAyMDI0LTEwLTA4IGF0IDE2OjM0ICswMjAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAwNC4xMC4yMDI0IDEwOjE3LCBGcmVkaWFubyBaaWdsaW8gd3JvdGU6Cj4gPiBVcGRhdGVkIGhl
YWRlcnMgcmVsYXRlZCB0byBSSVNDLVYuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEZyZWRpYW5v
IFppZ2xpbyA8ZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbT4KPiAKPiBBY2tlZC1ieTogSmFuIEJl
dWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+IAo+ID4gLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2
L2luY2x1ZGUvYXNtL2FjcGkuaMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKg
eGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg
NiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXRvbWljLmjCoMKgwqDC
oMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYml0
b3BzLmjCoMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5j
bHVkZS9hc20vYnVnLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVu
L2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmjCoMKgwqDCoMKgIHwgNiArKystLS0K
PiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vY2FjaGUuaMKgwqDCoMKgwqDCoMKgwqDC
oCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NtcHhjaGcuaMKg
wqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v
Y29uZmlnLmjCoMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3Yv
aW5jbHVkZS9hc20vY3B1ZmVhdHVyZS5owqDCoMKgwqAgfCA2ICsrKy0tLQo+ID4gwqB4ZW4vYXJj
aC9yaXNjdi9pbmNsdWRlL2FzbS9jc3IuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrKy0t
LQo+ID4gwqB4ZW4vYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9jdXJyZW50LmjCoMKgwqDCoMKgwqDC
oCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2RvbWFpbi5owqDC
oMKgwqDCoMKgwqDCoCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNt
L2Vhcmx5X3ByaW50ay5owqDCoCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1
ZGUvYXNtL2V2ZW50LmjCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrKy0tLQo+ID4gwqB4ZW4vYXJj
aC9yaXNjdi9pbmNsdWRlL2FzbS9mZW5jZS5owqDCoMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0K
PiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vZml4bWFwLmjCoMKgwqDCoMKgwqDCoMKg
IHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vZmx1c2h0bGIuaMKg
wqDCoMKgwqDCoCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2d1
ZXN0X2FjY2Vzcy5owqDCoCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUv
YXNtL2d1ZXN0X2F0b21pY3MuaMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5j
bHVkZS9hc20vaW8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKysrLS0tCj4gPiDCoHhl
bi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2lycS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYg
KysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL21tLmjCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgfCA2ICsrKy0tLQo+ID4gwqB4ZW4vYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9t
b25pdG9yLmjCoMKgwqDCoMKgwqDCoCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2lu
Y2x1ZGUvYXNtL25vc3BlYy5owqDCoMKgwqDCoMKgwqDCoCB8IDYgKysrLS0tCj4gPiDCoHhlbi9h
cmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3AybS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKysr
LS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhZ2UtYml0cy5owqDCoMKgwqDC
oCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3BhZ2UuaMKgwqDC
oMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9h
c20vcG1hcC5owqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrKy0tLQo+ID4gwqB4ZW4vYXJjaC9y
aXNjdi9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaMKgwqDCoMKgwqAgfCA2ICsrKy0tLQo+ID4gwqB4
ZW4vYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9yZWdzLmjCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYg
KysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Jpc2N2X2VuY29kaW5nLmgg
fCA0ICsrLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc2JpLmjCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20v
c2V0dXAuaMKgwqDCoMKgwqDCoMKgwqDCoCB8IDYgKysrLS0tCj4gPiDCoHhlbi9hcmNoL3Jpc2N2
L2luY2x1ZGUvYXNtL3NtcC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDQgKystLQo+ID4gwqB4
ZW4vYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9zcGlubG9jay5owqDCoMKgwqDCoMKgIHwgNiArKyst
LS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3RyaW5nLmjCoMKgwqDCoMKgwqDC
oMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3lzdGVtLmjC
oMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9h
c20vdGltZS5owqDCoMKgwqDCoMKgwqDCoMKgwqAgfCA2ICsrKy0tLQo+ID4gwqB4ZW4vYXJjaC9y
aXNjdi9pbmNsdWRlL2FzbS90cmFwcy5owqDCoMKgwqDCoMKgwqDCoMKgIHwgNiArKystLS0KPiA+
IMKgeGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vdHlwZXMuaMKgwqDCoMKgwqDCoMKgwqDCoCB8
IDYgKysrLS0tCj4gPiDCoDQxIGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCAxMjEg
ZGVsZXRpb25zKC0pCj4gCj4gRm9yIHRoZSBidWxrIG9mIHRoZSBjaGFuZ2VzIHlvdSBkaWRuJ3Qg
Q2MgYW55b25lIHdobyBjYW4gYWNrIHRoZW0uCj4gTm90ZSB0aGF0Cj4gdGhlIFJJU0NWIHNlY3Rp
b24gb2YgLi9NQUlOVEFJTkVSUyBwcmVzZW50bHkgaGFzIG9ubHkgUjogZW50cmllcy4gWW91Cj4g
bmVlZAo+IHRvIENjIFRIRSBSRVNUIGluIHN1Y2ggYSBjYXNlLgo+IAo+IEl0IGlzIHByb2JhYmx5
IGFsc28gYSBnb29kIGlkZWEgdG8gQ2MgdGhlIHBlcnNvbihzKSBkb2luZyB0aGUgYnVsayBvZgo+
IHRoZQo+IHdvcmsgaW4gYSBnaXZlbiBhcmVhIGF0IGEgZ2l2ZW4gcG9pbnQgaW4gdGltZS4gVGhl
biBhZ2FpbiwgT2xla3NpaSwKPiBtYXliZQo+IHlvdSB3YW50IHRvIGNvbnNpZGVyIGFkZGluZyB5
b3Vyc2VsZiBhcyBSOiBpbiB0aGF0IHNlY3Rpb24sIHRvbz8gVGhhdAo+IHdheQo+IHlvdSB3aWxs
IGJlIENjLWVkIG9uIHBhdGNoZXMgKGFzIGxvbmcgYXMgcGVvcGxlIHJlc3BlY3QKPiAuL01BSU5U
QUlORVJTKS4KU3VyZSwgSSB3aWxsIHNlbmQgYSBwYXRjaCB3aXRoIGFkZGluZyBteXNlbGYgYXMg
UjogZm9yIFJJU0MtViBpbgpNQUlOVEFJTkVSUyBmaWxlLgoKfiBPbGVrc2lpCg==



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:30:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:30:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813249.1226097 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCAf-0006zA-GU; Tue, 08 Oct 2024 15:30:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813249.1226097; Tue, 08 Oct 2024 15:30: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 1syCAf-0006z3-DJ; Tue, 08 Oct 2024 15:30:45 +0000
Received: by outflank-mailman (input) for mailman id 813249;
 Tue, 08 Oct 2024 15:30: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syCAe-0006yx-OE
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:30:44 +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 47be9f46-858a-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 17:30:42 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c8967dd2c7so7194674a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 08:30:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a997ee645fbsm52013966b.133.2024.10.08.08.30.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 08:30:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47be9f46-858a-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728401442; x=1729006242; 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=XjmyVc7FFOhdqrCKIZH8v8SqquIn999SeKsAYd5ocTM=;
        b=W4ao2MPffKtUqXkgRtg20pZqx4UdQT2D2rGvQIm1I8H1a80qVNeKpaUSITl1flK19b
         AhzH+trQ1RhajFMUPU7l6chCWPc5D04/k7X7n/imv47JIqUquTUw9C+h6IFuziU/41wf
         s+gENLmAd+TfY0KXe8G/LZ2lUMyz+7Zs9e/FH2kBEN8lvHOCnwh4WRsQXXvKLuenSpP4
         Vlueww408WdRiqJz03VNqm1KiALU+BhPxMz1j2tSSpUSuwN+LNez+Rrk7InEN8hlXnVG
         hPfZLhZXpVII9hxsEXNKGs3mmxdFyCg3C18z4ILVLnd3/7+smgn812+KfnLUh77Sih6U
         Sq6w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728401442; x=1729006242;
        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=XjmyVc7FFOhdqrCKIZH8v8SqquIn999SeKsAYd5ocTM=;
        b=qwk/ivW3wxjNyaUCgJK16+w1qmj1zy9k9GYnwLe6moJgSD5Aj117ZxTc+XjEGt7pqG
         IQm3Z2g8VjVHdb8BiXwLbtBWGn/XS9TnYUdrQrdzK5CxeLFumuN4uRkgKEf74LF/n1TO
         JJU1a3Z3Ll+AKOLxsIuKGBnR+1VRACzhd6LA1w/q+G8tTsfA7hmQOKKn4Ei04xj6d+Sq
         72pXtvRU6NwhyDSn0ZK/93vB9gMM4iC9H5H7jTrzvGLG6gGGLkFmbXXGAd/+nTEb6Bnj
         G4+Mf1yYmw2nd3z3r3mj3ioDSaOf8Geo1DbAMDD9AunVKKMOWbfBSuCn+/dRHiseqlHm
         5bXA==
X-Forwarded-Encrypted: i=1; AJvYcCXuBmqYaY7FTPuYMR1tZJIYH2Bgz7I9RUy8wAEMm4Pf5IPWGw2geUVJjlseseydLPjW/qC99Sx4g2M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyWrwdOa1fJHpohnE1TRiTlNm0ZEm5QqBqjzIHz26jIMrDw2U8W
	7W8exP2kTvTEkqDrIplur5JG549scB1B0VF7ICf2NjqOXHIjOclrMVve7YnB+Q==
X-Google-Smtp-Source: AGHT+IFQnKS9IZ+GblJWBlRCcWOnHPlmX2j477K5AB3MGTy5Yye6XxRYH+ebOZzSUN9BGA35xOZeXg==
X-Received: by 2002:a17:907:9281:b0:a7a:97ca:3056 with SMTP id a640c23a62f3a-a991bd0a833mr1507834966b.16.1728401442243;
        Tue, 08 Oct 2024 08:30:42 -0700 (PDT)
Message-ID: <0c3f6b3d-7040-43e2-823f-520dcbeec31d@suse.com>
Date: Tue, 8 Oct 2024 17:30:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 0/6] Move {acpi_}device_init() and device_get_class()
 to common code
To: oleksii.kurochko@gmail.com
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.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>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
References: <cover.1727452451.git.oleksii.kurochko@gmail.com>
 <a2c4278891263ee8d3431321367a32246d7498c7.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: <a2c4278891263ee8d3431321367a32246d7498c7.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.10.2024 17:25, oleksii.kurochko@gmail.com wrote:
> Except the comments ( which Jan wrote could be adjusted while
> committing ) for patch 1 everything is properly Acked/Reviewed ( if I
> am not missing something ).

I didn't spot a PPC ack so far; did I miss it?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:41:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:41:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813255.1226106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCL1-0003Bz-EM; Tue, 08 Oct 2024 15:41:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813255.1226106; Tue, 08 Oct 2024 15: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 1syCL1-0003Bs-Bm; Tue, 08 Oct 2024 15:41:27 +0000
Received: by outflank-mailman (input) for mailman id 813255;
 Tue, 08 Oct 2024 15:41: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syCL0-0003Bm-EE
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:41:26 +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 c6615779-858b-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 17:41:25 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a993302fa02so418563866b.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 08:41:24 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993ab8e75esm467927066b.222.2024.10.08.08.41.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 08:41:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c6615779-858b-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728402084; x=1729006884; 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=9MnXq9VGUzWcgrfmo5odjgxM/AYFL8uVN88pkaI9Ej8=;
        b=C2cOzH0Luct200T944ypXc5zgMcgBYIDzi1XkJ8aNhpg/r9LWBVXUnIeHHZZfOqaTw
         S6dShf/rNaFrp3IrTMOazzsQeLAOv8hZK3OTvi/d+rizRWWie/BrSngQx+RCg0d0WJEa
         s6IhaQIXZZKvD0+4/g4R8cfhLgre4n6OHITjW00DPbaJFE1vrqKC23BYAB2uX8u5M2DP
         lgo3Va6ythfBv9JM/6WF0qw4BARJrH8/kQz6xkb0SJ1wSfSNWYBfZDfybo+Y2QgOe9Qx
         +mNq3pIeC8CiWXqrBLLoDW3+56gv1OJUPZX+iat+xewRTRuBy36gOWxewGqTP8rgg/3N
         J73A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728402084; x=1729006884;
        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=9MnXq9VGUzWcgrfmo5odjgxM/AYFL8uVN88pkaI9Ej8=;
        b=jUQiqGlEwK6CUytBpP9b0GbKOHtTtiD/Z42GkJcfYenZ+92PNYOYiE2g/dr4MzP95L
         RznqPW3r28q2Dzgm1FcVHuyhNa9ER29caFKsjzPJ+p7X+dE9KHODAEKVHM+CSQM/d98B
         2Oh0TC4RMLcD593SRVk9K+r+Uo3k7ZfNNoTq3hrVjcJuTDOTFxQUrbKVZXI3FUIL0Q7v
         1KWQ+eiza6+nhMocrh5i0lDVg+XTWs46wazSpWYOoEMKMmstGjvdsk9+xRW5XEvaIz6O
         z1C9i10hG8vKYOGjssRmrqYBC4S/mf8vGYZwCmgENchDS4JL51IOP7fCs1vzw8EfJ0+7
         L6ow==
X-Forwarded-Encrypted: i=1; AJvYcCUmrfwx++YsOAAlJlOlV5udn+y5Ya3mkzNwp64zFjaeLx99DCTuqQRbE39h5BvcTYqaZZwkIqw/01M=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw6gzP938anJf5hbXoKHj7uH0jGSoXiIeZrE43hbjHhADMkmE8a
	Q4itEHZzprifwTa7zbGfW/UtfLuldxap9+M/7WnznI1qXPcO9RZ2cwdPLcKtQA==
X-Google-Smtp-Source: AGHT+IEaSkaMhY/wPAEcvQ0kCzpZeXfDMB4c8m9F/LMXZCzWJRum7blijYRGzUDZkLxTPwREp74bpA==
X-Received: by 2002:a17:907:9627:b0:a99:4615:f58c with SMTP id a640c23a62f3a-a994615f65amr979285566b.2.1728402084250;
        Tue, 08 Oct 2024 08:41:24 -0700 (PDT)
Message-ID: <40034a00-6f1d-4a39-9f00-2daa671a13d1@suse.com>
Date: Tue, 8 Oct 2024 17:41:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 02/11] x86/vlapic: Move lapic migration checks to the
 check hooks
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: 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: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-3-alejandro.vallejo@cloud.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: <20241001123807.605-3-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01.10.2024 14:37, Alejandro Vallejo wrote:
> While doing this, factor out checks common to architectural and hidden
> state.
> 
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
> --
> Last reviewed in the topology series v3. Fell under the cracks.
> 
>   https://lore.kernel.org/xen-devel/ZlhP11Vvk6c1Ix36@macbook/

It's not the 1st patch in the series, and I can't spot anywhere that it is
made clear that this one can go in ahead of patch 1. I may have overlooked
something in the long-ish cover letter.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:47:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:47:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813263.1226117 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCQO-0004Mi-51; Tue, 08 Oct 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 813263.1226117; Tue, 08 Oct 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 1syCQO-0004Mb-2F; Tue, 08 Oct 2024 15:47:00 +0000
Received: by outflank-mailman (input) for mailman id 813263;
 Tue, 08 Oct 2024 15:46: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=J5/k=RE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syCQM-0004K6-6c
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:46:58 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8ca4b495-858c-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 17:46:57 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-5398e4ae9efso6330291e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 08:46:57 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539afec8255sm1250464e87.83.2024.10.08.08.46.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 08:46:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ca4b495-858c-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728402417; x=1729007217; 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=YGSBdGVHlzIh/+oS8TTr6YgrG7CcHINbGde7fUVmVfw=;
        b=cLEmYDCLQ7iZHdmvN2fqoQrr+HcxT8Le64XznuVV7xgxW3ftl37KwV8YnRfDpxSd5w
         +BIPi48K8xOk4GbP8ZCgxJusqTUmNdEzrI3rWn36HasLbakX6iwvZd9ySx0ud9YsCnKu
         U79W52y7VGDux02McOFY5/S+hmi2HH/ExMgdvNJ3PXJ51TabsWwGMs158ATWAuXD7UZe
         Ag34YFnrWx6FlDlj20hrfXgyKyTaUKnBzrtjwFmRU8bdyeXH/NXkjsE0o0Bk8OZCnxC/
         xfznWuHXbPJRzF2TfZ9ky8fv39HWuyt1WhGDR6Wr0hoN3GQJvDWEe3//OyvcB3Pmi1+j
         T4IA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728402417; x=1729007217;
        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=YGSBdGVHlzIh/+oS8TTr6YgrG7CcHINbGde7fUVmVfw=;
        b=o7WHchGdnMOTQVSExOyvzflZASRUKupXvYpHVbpBfFxU1DE5jHlaRv1PEi6Dc8fFOm
         gLqMkspNtiWXXDLyuRr4zyizoOgCj+R0/hc6vsv3AK0rE8jrppz5yDETndB5zyZX4Eue
         wSuMtlSKFiU14nFqAJEYF99PX5AvOCkCYKGpq+NPyYFLqErud1WVdv8L+4GHLHJTmRQ3
         7nS7hfLdTF3YN2RUiYnq+e4Gt0jB/OwSWREWYA98CLHynXZRnImMHRNGtvBTWlmbfoNo
         TA4SsV4SJ9Jc0mXslWhzeiCww+JC4uOXeeg2buStOo/RFUPtUlm4PswE3z4kGGNnKJF2
         SwDg==
X-Forwarded-Encrypted: i=1; AJvYcCV77ArayW5xswLn9YIvlYgFG57ySqOAk1GkbI0DMiz9MM0RtILxBzYtaYAxdnSFNQEdJNy1nWu4254=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyPOLYYotzH/vpzy4R69UmVRIDV3aoL+MS58LHnw3KsnLWA2cCP
	EU7PeMkSD9cPzmMBDTOF7RHAMHUHUm8q3IGSdkq1pXbBPhDMdJzl
X-Google-Smtp-Source: AGHT+IGv05znTk/rXN9oxLcNIdcxYbTUyzPZ/Thuw8hNPZLu+vdxuFycSq4DdTAHc8D6RKM5r+DY6A==
X-Received: by 2002:a05:6512:31c3:b0:52c:8c4d:f8d6 with SMTP id 2adb3069b0e04-539ab9de3f1mr9215652e87.45.1728402416607;
        Tue, 08 Oct 2024 08:46:56 -0700 (PDT)
Message-ID: <17c7d988e45d7c82448b81fe66b01a5ceca0c15e.camel@gmail.com>
Subject: Re: [PATCH v5 0/6] Move {acpi_}device_init() and device_get_class()
 to common code
From: oleksii.kurochko@gmail.com
To: Jan Beulich <jbeulich@suse.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Roger Pau =?ISO-8859-1?Q?Monn=E9?=
 <roger.pau@citrix.com>, Bertrand Marquis <bertrand.marquis@arm.com>, Michal
 Orzel <michal.orzel@amd.com>, Volodymyr Babchuk
 <Volodymyr_Babchuk@epam.com>, Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
Date: Tue, 08 Oct 2024 17:46:55 +0200
In-Reply-To: <0c3f6b3d-7040-43e2-823f-520dcbeec31d@suse.com>
References: <cover.1727452451.git.oleksii.kurochko@gmail.com>
	 <a2c4278891263ee8d3431321367a32246d7498c7.camel@gmail.com>
	 <0c3f6b3d-7040-43e2-823f-520dcbeec31d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-08 at 17:30 +0200, Jan Beulich wrote:
> On 08.10.2024 17:25, oleksii.kurochko@gmail.com=C2=A0wrote:
> > Except the comments ( which Jan wrote could be adjusted while
> > committing ) for patch 1 everything is properly Acked/Reviewed ( if
> > I
> > am not missing something ).
>=20
> I didn't spot a PPC ack so far; did I miss it?
Yeah, you are right I confused ( I thought that he gave his Ack before
and I just forgot to add it ) with another one patch where Shawn gave
his Ack. I will ask Shawn to look at patch 1.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:48:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:48:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813267.1226127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCRP-0006DE-DW; Tue, 08 Oct 2024 15:48:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813267.1226127; Tue, 08 Oct 2024 15:48: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 1syCRP-0006D7-Aw; Tue, 08 Oct 2024 15:48:03 +0000
Received: by outflank-mailman (input) for mailman id 813267;
 Tue, 08 Oct 2024 15:48: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=J5/k=RE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syCRO-0006Bn-LR
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:48:02 +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 b2fd00d4-858c-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 17:48:01 +0200 (CEST)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-5369f1c7cb8so6269778e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 08:48:01 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539afe32721sm1243599e87.0.2024.10.08.08.48.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 08:48:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2fd00d4-858c-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728402481; x=1729007281; 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=8STzR2wZXHnVeQ/eH4jvwv7sLTkrF8h23aYxeCGecL0=;
        b=BBa+yI91D9AWNHJb+LaN35aGRddv4ylXMyPzjgJwgLXRs3UOVF7OG4CjAX0Tg64nFo
         z+dKydTq8abHPBnZsICd/32eB6zksNWOiFxOOD03wyiSsG66u5MIrI+ll3w2GR3GhidL
         EI2EsUlYu9nRQVnMdQDx4cOLQ8YTF2ZOLk1c/BxVtzMhNWZbF1xQIV33qg6+LKb4Hzb4
         p9uM42ZTjKG9B+IU9k+0kgxQ3i0HjBgh6Ki1GOoLv6Rp4F15iQ9X2uP67MmwMEX3H5q4
         s6v5rz+ALJNi4fOM2g2XONn1vpAnLzzkqyLPtBcF509gkuCgsWTkOT1HQBUkL0/mHS0u
         o45w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728402481; x=1729007281;
        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=8STzR2wZXHnVeQ/eH4jvwv7sLTkrF8h23aYxeCGecL0=;
        b=k2YXQveL+93RV6vl2zYKFZwskXWIHSn0LNFNhPIZLnvn3CIEo9D5orlGQWByLh7BWH
         T/kBaE1+pxmi9di1Yoq0DlW9tTPZLkzxp8Ld/zutgo9s6m3MKqENt2+efHdrwciGs0e6
         e6b9HAssw2A5h+nUtKvKaLmYNod82bGmyhHg1Q7vEdRF1255KgayrlzfhCVpy/THDpNW
         XpZ63h/e7RwQoawHNiuAcat9OX/iklZUiqzmD/2n5PvBy1j4xN0u2B/7aCYvGS9TfOqp
         k1UKjj+94zN7UZnNNUjOA7USmISvPvGAfhFwhpX2mn9N7z81B7Uk7Z22NW9YTAs5h1j7
         8Whg==
X-Gm-Message-State: AOJu0Yy2f4RpJcp4hzV5HIbxflGTIU20vs5osBkBlHcA/NWIN5Goae8N
	FTmbak8Jhoj5J+00NGoMQx6V39BVoQ7Xcx4CARH7Xjlw6sw8iFfU7rGkYw==
X-Google-Smtp-Source: AGHT+IHU67EkF8PITybY7gS2Hk0NIos5CJZzxjdcQKhLnyxdDPe3Xl0YLPYimv+Jr0aFTFBNUKU1Ww==
X-Received: by 2002:a05:6512:e84:b0:530:aa82:a50a with SMTP id 2adb3069b0e04-539ab9d0326mr8788274e87.45.1728402480587;
        Tue, 08 Oct 2024 08:48:00 -0700 (PDT)
Message-ID: <0ee9d1259a824b07642040d3b488c29aa6117f72.camel@gmail.com>
Subject: Re: [PATCH v5 1/6] xen: introduce DECL_SECTION_WITH_LADDR
From: oleksii.kurochko@gmail.com
To: xen-devel@lists.xenproject.org, Shawn Anastasio
	 <sanastasio@raptorengineering.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>,  Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>, Roger Pau =?ISO-8859-1?Q?Monn=E9?=
 <roger.pau@citrix.com>
Date: Tue, 08 Oct 2024 17:47:59 +0200
In-Reply-To: <e835f07478a528266f72d9ac99c090464522bbdf.1727452451.git.oleksii.kurochko@gmail.com>
References: <cover.1727452451.git.oleksii.kurochko@gmail.com>
	 <e835f07478a528266f72d9ac99c090464522bbdf.1727452451.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

Hello Shawn,

On Fri, 2024-09-27 at 18:32 +0200, Oleksii Kurochko wrote:
> Introduce DECL_SECTION_WITH_LADDR in order to signal whether
> DECL_SECTION() should specify a load address or not.
>=20
> Update {ppc,x86}/xen.lds.S to use DECL_SECTION_WITH_LADDR.
>=20
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

Could you please take a look at this patch as it requires your Ack?

Thanks in advance.

~ Oleksii

> ---
> Changes in V5:
> =C2=A0- s/SIMPLE_DECL_SECTION/DECL_SECTION_WITH_LADDR.
> =C2=A0- add space between # and define in x86/xen.lds.S.
> =C2=A0- use DECL_SECTION_WITH_LADDR in ppc/xen.lds.S.
> =C2=A0- update the commit message.
> =C2=A0- add Acked-by: Jan Beulich <jbeulich@suse.com>.
> ---
> Changes in V4:
> =C2=A0- new patch
> ---
> =C2=A0xen/arch/ppc/xen.lds.S=C2=A0=C2=A0=C2=A0 | 2 ++
> =C2=A0xen/arch/x86/xen.lds.S=C2=A0=C2=A0=C2=A0 | 6 ++++--
> =C2=A0xen/include/xen/xen.lds.h | 6 ++++++
> =C2=A03 files changed, 12 insertions(+), 2 deletions(-)
>=20
> diff --git a/xen/arch/ppc/xen.lds.S b/xen/arch/ppc/xen.lds.S
> index 0c4b94814b..30b4a6ced8 100644
> --- a/xen/arch/ppc/xen.lds.S
> +++ b/xen/arch/ppc/xen.lds.S
> @@ -1,4 +1,6 @@
> =C2=A0#include <xen/lib.h>
> +
> +#define DECL_SECTION_WITH_LADDR
> =C2=A0#include <xen/xen.lds.h>
> =C2=A0
> =C2=A0OUTPUT_ARCH(powerpc:common64)
> diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
> index b60d2f0d82..7d2aa2d801 100644
> --- a/xen/arch/x86/xen.lds.S
> +++ b/xen/arch/x86/xen.lds.S
> @@ -3,6 +3,10 @@
> =C2=A0
> =C2=A0#include <xen/cache.h>
> =C2=A0#include <xen/lib.h>
> +
> +#ifndef EFI
> +# define DECL_SECTION_WITH_LADDR
> +#endif
> =C2=A0#include <xen/xen.lds.h>
> =C2=A0#include <asm/page.h>
> =C2=A0#undef ENTRY
> @@ -12,9 +16,7 @@
> =C2=A0
> =C2=A0#define FORMAT "pei-x86-64"
> =C2=A0#undef __XEN_VIRT_START
> -#undef DECL_SECTION
> =C2=A0#define __XEN_VIRT_START __image_base__
> -#define DECL_SECTION(x) x :
> =C2=A0
> =C2=A0ENTRY(efi_start)
> =C2=A0
> diff --git a/xen/include/xen/xen.lds.h b/xen/include/xen/xen.lds.h
> index 24b8900ffe..c6178bdc42 100644
> --- a/xen/include/xen/xen.lds.h
> +++ b/xen/include/xen/xen.lds.h
> @@ -5,6 +5,8 @@
> =C2=A0 * Common macros to be used in architecture specific linker scripts=
.
> =C2=A0 */
> =C2=A0
> +#ifdef DECL_SECTION_WITH_LADDR
> +
> =C2=A0/*
> =C2=A0 * Declare a section whose load address is based at PA 0 rather tha=
n
> =C2=A0 * Xen's virtual base address.
> @@ -15,6 +17,10 @@
> =C2=A0# define DECL_SECTION(x) x : AT(ADDR(x) - __XEN_VIRT_START)
> =C2=A0#endif
> =C2=A0
> +#else /* !DECL_SECTION_WITH_LADDR */
> +#define DECL_SECTION(x) x :
> +#endif
> +
> =C2=A0/*
> =C2=A0 * To avoid any confusion, please note that the EFI macro does not
> correspond
> =C2=A0 * to EFI support and is used when linking a native EFI (i.e.
> PE/COFF) binary,



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:50:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:50:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813274.1226136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCTm-0000RE-PN; Tue, 08 Oct 2024 15:50:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813274.1226136; Tue, 08 Oct 2024 15: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 1syCTm-0000R7-Mo; Tue, 08 Oct 2024 15:50:30 +0000
Received: by outflank-mailman (input) for mailman id 813274;
 Tue, 08 Oct 2024 15: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=LJPt=RE=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syCTl-0000R1-8j
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:50:29 +0000
Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com
 [2a00:1450:4864:20::644])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 09dded77-858d-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 17:50:27 +0200 (CEST)
Received: by mail-ej1-x644.google.com with SMTP id
 a640c23a62f3a-a8d43657255so913395266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 08:50:27 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9941a697cesm439360466b.173.2024.10.08.08.50.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 08:50:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 09dded77-858d-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728402626; x=1729007426; 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=viNKaWigGzOlrQZAhgePu9LuWwDMpqKJnRmkndvxJ6Q=;
        b=Vn1cNj7aVY3INk9lkpv7SEW066JBAlv3Qx+JGWIIk6HvEy9EqWo8po8pBkiFHUBey9
         C1r/nR2MggRFgvSoH5p7RC0N6HAQeThzDCmPGng6oIu7RK53Lxq0S/xgSdWbwMKDbKms
         dwLY0+NFq7RynRnWzI+v6JnPVAPPb2dUckZ/0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728402626; x=1729007426;
        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=viNKaWigGzOlrQZAhgePu9LuWwDMpqKJnRmkndvxJ6Q=;
        b=gjdbrdN/fIRo/+7ljsCLNkD2W3HsoPVM9j3qJjJU4eV4mHyBGO8Vy08OyBv8erfe4m
         awRjotbKWgEtYv9NISIaLIbJl3SIVqkc0MJHhCpmE1wF9P4iYVmX6hy0KdkWUaXOajxE
         J67/25LlvUl5RFSlXvKaKVwmm8N9uh14NVzqaySNDOruajrKp5nZpsqFpiqzBOUdaJ9M
         T8M1gvDZABwsk82/DYe7MgR5Ry7nhDIfOc6lBiaYTpwbwKH+pIWsvRqDqI1xKB/PWXx1
         emBCeMvMwlofBF7AmkNLlhzvGMr7L5dP/btAYouEN5baVKwfNqzus9WI14pC9d+D/1bJ
         uUtQ==
X-Gm-Message-State: AOJu0YwrGAY9Y012P/uYeJWcw7jmH3KPa3YUFZ5f5/4cbbnqQAadK0/2
	Pp/AfSFC5rOiZVM890EHkOHMTMGAndno+uVPJq/+9SDdUytMpVtcOgiSL8ngqK8nukVSQ8KbdiN
	NqVoDEA==
X-Google-Smtp-Source: AGHT+IH+lXR01E88RrT+NAwWpClfh+d2YRrLosSvb5y0RXINfQz3+JCTGUh4RRmZ23HTONqSwxPvqQ==
X-Received: by 2002:a17:907:36cc:b0:a93:ae71:994c with SMTP id a640c23a62f3a-a991c0516aamr1604140366b.57.1728402626503;
        Tue, 08 Oct 2024 08:50:26 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH] CI: Stop building QEMU in general
Date: Tue,  8 Oct 2024 16:50:23 +0100
Message-Id: <20241008155023.2571517-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We spend an awful lot of CI time building QEMU, even though most changes don't
touch the subset of tools/libs/ used by QEMU.  Some numbers taken at a time
when CI was otherwise quiet:

                       With     Without
  Alpine:              13m38s   6m04s
  Debian 12:           10m05s   8m10s
  OpenSUSE Tumbleweed: 11m40s   7m54s
  Ubuntu 24.04:        14m56s   8m06s

which is a >50% improvement in wallclock time in some cases.

The only build we have that needs QEMU is alpine-3.18-gcc-debug.  This is the
build deployed and used by the QubesOS ADL-* and Zen3p-* jobs.

Xilinx-x86_64 deploys it too, but is PVH-only and doesn't use QEMU.

QEMU is also built by CirrusCI for FreeBSD (fully Clang/LLVM toolchain).

This should help quite a lot with Gitlab CI capacity.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Doug Goldstein <cardoe@cardoe.com>
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

I did consider putting in a build of QEMU on arm64 for good measure, but I
can't find any build job which currently does; none of the arm64 containers
have ninja by the looks of things.

Run with this patch in place:
  https://gitlab.com/xen-project/people/sstabellini/xen/-/pipelines/1486822209
---
 automation/gitlab-ci/build.yaml       |  1 +
 automation/scripts/build              |  7 ++-----
 automation/scripts/qemu-deps-check.py | 19 -------------------
 3 files changed, 3 insertions(+), 24 deletions(-)
 delete mode 100755 automation/scripts/qemu-deps-check.py

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index c668736bdc2f..c83e0bdbe119 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -339,6 +339,7 @@ alpine-3.18-gcc-debug:
   extends: .gcc-x86-64-build-debug
   variables:
     CONTAINER: alpine:3.18
+    QEMU: y
 
 debian-bookworm-gcc-debug:
   extends: .gcc-x86-64-build-debug
diff --git a/automation/scripts/build b/automation/scripts/build
index 34416297a4b7..926cf5b46d17 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -91,11 +91,8 @@ else
         cfgargs+=("--with-extra-qemuu-configure-args=\"--disable-werror\"")
     fi
 
-    # Qemu requires Python 3.8 or later, and ninja
-    # and Clang 10 or later
-    if ! type python3 || ! python3 automation/scripts/qemu-deps-check.py \
-            || [[ "$cc_is_clang" == y && "$cc_ver" -lt 0x0a0000 ]] \
-            || ! type ninja; then
+    # QEMU is only for those who ask
+    if [[ "$QEMU" != "y" ]]; then
         cfgargs+=("--with-system-qemu=/bin/false")
     fi
 
diff --git a/automation/scripts/qemu-deps-check.py b/automation/scripts/qemu-deps-check.py
deleted file mode 100755
index f6188afb3e2a..000000000000
--- a/automation/scripts/qemu-deps-check.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-import sys
-
-if sys.version_info < (3, 8):
-    print("Python %d.%d.%d too old" %
-          (sys.version_info.major,
-           sys.version_info.minor,
-           sys.version_info.micro))
-    exit(1)
-
-try:
-    import tomllib
-except ImportError:
-    try:
-        import tomli
-    except ImportError:
-        print("No tomli")
-        exit(1)
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 15:57:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 15:57:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813283.1226148 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCa7-0001XF-Gn; Tue, 08 Oct 2024 15:57:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813283.1226148; Tue, 08 Oct 2024 15:57: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 1syCa7-0001X8-C2; Tue, 08 Oct 2024 15:57:03 +0000
Received: by outflank-mailman (input) for mailman id 813283;
 Tue, 08 Oct 2024 15:57: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syCa6-0001Vf-4M
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 15:57:02 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20615.outbound.protection.outlook.com
 [2a01:111:f403:2405::615])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f311898b-858d-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 17:56:59 +0200 (CEST)
Received: from SA1PR04CA0022.namprd04.prod.outlook.com (2603:10b6:806:2ce::17)
 by SA1PR12MB7245.namprd12.prod.outlook.com (2603:10b6:806:2bf::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 15:56:55 +0000
Received: from SN1PEPF000397B4.namprd05.prod.outlook.com
 (2603:10b6:806:2ce:cafe::53) by SA1PR04CA0022.outlook.office365.com
 (2603:10b6:806:2ce::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 15:56:55 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SN1PEPF000397B4.mail.protection.outlook.com (10.167.248.58) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 15:56: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.39; Tue, 8 Oct
 2024 10:56:54 -0500
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.39; Tue, 8 Oct
 2024 10:56:54 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 10:56:53 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f311898b-858d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ybON4rfynR8EKOsXiNMhl45lLIFjFqKnhPpkj4vQLDcBplq6DBjfh96TVoemR25YJOEqHw+mhNg+88IUuB/cqLrKZ1Ab0+6wft6/2ykv2/ZXSynqtdqILqidExv7yK9OohVG0nhV7z5/GyNLwzcZqOLWwR5doKSJD5UyY/TfoL0fWsbv0c/1z7JbC41CLda5rd5SaDQpTrLeq1bFJPseU9xsGs0sVn0yxE+MFbuDFEMBeTeoTDnkNC9Pd3cW3AupQ6BXYzlbgVSJUprYTuGTp3j5UU661YqSPXCg6J48BlYZ8Vtep8MkZU4sZWofNJ0ps3Dx3b9SZ3bXkwEiLRrkuQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=4WlfGc3hhiPsTYyaOy5XjpupH0pBE9z7x2O0qbdzlCw=;
 b=DyhWLYhCqo6M578aG9gOz1Q6CQgfmZSSRSY0N3Nx2ezZLTMwIp/7ZqVHmDaHH8gN3iqfWlmUzxkfMxWp/49rijIxkYF31QEelE8Qyj2dQkVNQJ4rRNIJvOoopDW1urRRYiDHLcbdKJZngdrGQLawlAYO+j1xAp9HO2D2GEUxRKjz0PEf4AHK2m1aPCnwyDCxoj1izU4bURtmjFauQzOmCVmRWvK5CTXuXSiaIrSBj5KxT+ev1anpzeinuzTMcL79RhQ4Jon2DalbufCQAMXkWmCa9wL1f/Ojf6NOjmtkZrHkj4YzRAke8mg8FJy3txGih7uIYEH3GWooht2sKRSs3Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=4WlfGc3hhiPsTYyaOy5XjpupH0pBE9z7x2O0qbdzlCw=;
 b=V3fJ5n9SJqhHLt3NtnnbLBaTEu4oFM2svAj9/K4jr7yWK0kLPszRHxMhBJrPYoeAe9f9UodZwL1hTAceLDZ6z5GwqB3tJeqYRbJEr+YtKPohER3cS0XViCSp19z1XDFGqNI7t2pZdmHGbkk4V+Gwn5qRiPr5LtiTjzwSbCkrXSo=
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: <f2711741-5e05-4ad4-af33-6df18b09fb1e@amd.com>
Date: Tue, 8 Oct 2024 11:56:55 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 19/44] x86/boot: use consumed boot module flag for
 microcode
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-20-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-20-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397B4:EE_|SA1PR12MB7245:EE_
X-MS-Office365-Filtering-Correlation-Id: 3c39cb19-d5b8-461c-7285-08dce7b1d517
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?UEk4R1o2Z2RXbHF1YXhWN1Z2TmlrV3AzcFBydTFqdlFVNG43aUhlWnVBTVdF?=
 =?utf-8?B?WXhrc3J0NkZvdUIvM0xWN1RUbkhVWWFoQ3M4Y2s2NjVEN3pZTkFxMDg3U0lO?=
 =?utf-8?B?Wk15dklqVHNyZVIzZ215dEQ0MG8zYU1pVFJ2V1hWYnhyTkFTZHhmYXk0RWhG?=
 =?utf-8?B?UjhWbmtSVU9WQkZ5WWd5dlNtYkJHVzJEb2Y5YXVxL1hkT29US0VjVFhSQWxt?=
 =?utf-8?B?RnZwekRISE9SckI0MGFITmJRbnhuTmllaFM5bXZNSytxQ2dQdnk0UFN6QytM?=
 =?utf-8?B?cUNsQStZL05oQXlQeHg0MUgyQm9FMGdaOWY0REFhK1dTRTZOWDl6b2ZwKzFq?=
 =?utf-8?B?QTJucnU1UUZwMDhJeHhXUyt2S0xITUNzN2MxTG5wOEliMFI5UjUrbjVnUmVK?=
 =?utf-8?B?L1hDclBScUtTNW5HS2lMdG1aZTg3eHJSSTZtVGlkcGtoSURDcGgyQngrOGxh?=
 =?utf-8?B?N3NlRng2cE9rWDYveFViUWltalMwT0FxV082V0o3YUhsUDkrdGtHVmM5citN?=
 =?utf-8?B?bVpJbGtKUXk3bnp2Q2xxOHlWRHBsN0JWTGlJc0lXRXRiWGtJRVE0WDF3ektF?=
 =?utf-8?B?eUU1Y0VReXQ2L3N0Y3ZMOGJ2Z2JHb0pxdGpNeVRsdzNFTnVCRkZldm5Eb1Zv?=
 =?utf-8?B?YjBkbi9zK1pqdUF1dDNwRUVDanNycjExZHdqSE1rdUxTRmFvOEdUTHNCK1Fn?=
 =?utf-8?B?ZUhaQVM3N0xOYVh0VFNZNmJZbllidUpLR2NYNkZsYlU1M001QjRXVGVKRVZY?=
 =?utf-8?B?QjM0c0dScmZyLzU3djJzZ3VKenNWVW0wZnVVMFV2VGF3eTA3T0VSdmJ1bVJo?=
 =?utf-8?B?dzhCbHFXUDhrR2lPQXU3TXVhN09wZE9Yb1prMG9IYlBaN3d1dXd0Mjg1M3gz?=
 =?utf-8?B?a1BFMzdrZjNYeTZUZTdzc3duQkhsUUVoL042RFhBcEZmdjI2UlJ4bGpWSHFB?=
 =?utf-8?B?cEtJdjVOQWJWVHRGQS9nQ05kRVdheWNtcTBSc3lFbDRaQkJ2dVFtUXpFZzlR?=
 =?utf-8?B?Uk5HZERLOVFUU0M0enlOdjNRUEI1bklaNzhGUGtvYXFNLyszdXBPZ2lHZHU2?=
 =?utf-8?B?cjV5dURtV0lYWWE4MHZlWlZiOXptUXJxS0w4V1JUdE0rOEpwVGRWR0txdk9X?=
 =?utf-8?B?Y1VTU2tvWmRDQ1pZUG9ON3BwN0YwSEtnV1pvNkY5OGxwVzN3NHVLWDVFZjQy?=
 =?utf-8?B?MmJtT1laK2NFaGc3Zm9LSzFEblMrbXppa2paZDFiZUI5dm5Wb3l0UFRTUDF1?=
 =?utf-8?B?UlMzVGxjNFFOcHpLZjRQdlBMZHhWUDJLcDVaVWhWQVpHK0hoa05qdk16WDBU?=
 =?utf-8?B?YXRkZmN2bCs0MWhnYVZoYzF5TWtIZlRpbmlDV0MyS2pzdmtKSmdMUXh3RlNn?=
 =?utf-8?B?U1Frdjk4T3VXbk90c1BmMTFicGxnMmN0S0dVVTR6a1ZXTGU4NVBJMGhVakRo?=
 =?utf-8?B?dXV2TVl0QWswUlJ1UDZjU01iUzZ4WVJudjJkS09Qc3JmSS9yd3dhdkJCRlUz?=
 =?utf-8?B?OHowWGdxL2piekIwNHN5dlJGOVJYRU92dFo3TG55VjJJSnJIbHJwUjFFTGUy?=
 =?utf-8?B?clhGdkhaUm5YSGlhVGNxaHdLclVTaHF6QXlvQk4vLzc2SWlLT3F3REpERUk1?=
 =?utf-8?B?OEpqdGZUQkJMN25FeUxYK0E3WVNxdTFUaHBGMDFQdzUwT3hFY2RWUUErQjVC?=
 =?utf-8?B?b2tqOTVBZ1dXY2xJTDdEQ1BoNFdnNmpkQUZ3R3VZQVFjeUxOcmFrcTV1cFdR?=
 =?utf-8?B?ZlBVYUdMZXpvMnFBdWdRREg5cTBCUThEZVh1K0ZRKzNvRFZ5cEhFdTlkWEZy?=
 =?utf-8?B?R3o0cy9MTGNCVlJDYVJyRDhZR1RKM2NvOHh6a3U2Z0lYcTBtZy82aStYdEZG?=
 =?utf-8?Q?cczAJolkShR8M?=
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:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 15:56:54.9297
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3c39cb19-d5b8-461c-7285-08dce7b1d517
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:
	SN1PEPF000397B4.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7245

On 2024-10-06 17:49, Daniel P. Smith wrote:
> To track if the microcode boot module was loaded, a copy of the boot module is
> kept. The size element of this copy is set to zero as the indicator that the
> microcode was loaded. A side effect is that the modules have to be rescanned to
> find the boot module post-relocation, so the cache copy can be created.
> 
> Use the consumed boot module flag to track the loading of the microcode boot
> module. This removes the need to manipulate the boot module size element, no
> longer requiring the copy, thus allowing it to be replaced by a reference. As a
> result it is no longer necessary to rescan the boot modules after relocation
> has occurred.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/cpu/microcode/core.c | 28 ++++++++++++++--------------
>   1 file changed, 14 insertions(+), 14 deletions(-)
> 
> diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
> index 7bcc17e0ab2f..5b42aad2fdd0 100644
> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c

> @@ -826,14 +826,14 @@ int __init microcode_init_cache(
>       if ( !ucode_ops.apply_microcode )
>           return -ENODEV;
>   
> -    if ( ucode_scan )
> -        /* Need to rescan the modules because they might have been relocated */
> +    /* Scan if microcode was not detected earlier */
> +    if ( !ucode_mod )

ucode_scan is a user-controlled variable (ucode=scan=$bool), so I think 
it still needs to be respected.

>           microcode_scan_module(module_map, bi);
>   
> -    if ( ucode_mod.size )
> -        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
> -                                ucode_mod.size);
> -    else if ( ucode_blob.size )
> +    if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
> +        rc = early_update_cache(bootstrap_map_bm(ucode_mod),
> +                                ucode_mod->size);
> +    else if ( ucode_mod && ucode_blob.size )

ucode_blob seems independent of ucode_mod, so I don't see why this 
didn't stay `else if ( ucode_blob.size )`

>           rc = early_update_cache(ucode_blob.data, ucode_blob.size);
>   
>       return rc;
> @@ -851,10 +851,10 @@ static int __init early_microcode_update_cpu(void)

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:00:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:00:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813291.1226157 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCdW-0006LT-2i; Tue, 08 Oct 2024 16:00:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813291.1226157; Tue, 08 Oct 2024 16:00: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 1syCdV-0006LM-WF; Tue, 08 Oct 2024 16:00:34 +0000
Received: by outflank-mailman (input) for mailman id 813291;
 Tue, 08 Oct 2024 16:00: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syCdU-0006LG-MY
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:00:32 +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 7195a656-858e-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 18:00:31 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c882864d3aso6547123a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 09:00:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05eb7b7sm4462105a12.68.2024.10.08.09.00.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 09:00:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7195a656-858e-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728403230; x=1729008030; 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=AnUwlHV85d5fiLD3WDSQYdspkPTRoFlRMY42aE97+lU=;
        b=B+8Bf6LoLjWNEgcxjOLz0g+Dicq7eemxrTXNod5HDVh3BSUfq/DdrQbB2iXix5ImUf
         cTGeFntiHRAQKl8gci3Yzznu/QZu/DuIdEPKoKC+zKoyExZ4PTBypz6//QK/Yk2AqRPn
         rkFo1ldHZJZOo7m62ZcEJRtSm0hxfxkMql5mZcsvo06/WxKUbQ8SQ7/sffj6N65VPNck
         IayJcycJIrAG90JSLzR/1ZZA8HtQAylR8DTb4aRwUADaMYWkmCxo/amJBMq0lginFdT7
         ZQ0b+LNzzlAU4w2yGbeQK5ov3OZQEoVLjImA5wzlPPRl7RsWNY19p+VKFhUQqpY2Rvza
         LjGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728403230; x=1729008030;
        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=AnUwlHV85d5fiLD3WDSQYdspkPTRoFlRMY42aE97+lU=;
        b=Qfi+iosVz9Hk8WAW5wHSFpg4XiRp5uj4CBeHdN/z3XdHRghQOEh8GOEpCG4AmJTbcc
         qsrRg9sVylxAE02i6kZvKh9/of7kuB3wDNK/G0hd/guQODptXF0P6qsczUxI7/KMc2u3
         cnT/JM1xgis9Cw4gngrZ+3cJKuipyD5xYglZj7X5g8loCXObKc0geJkOQOMuyg25NzrI
         ZECNQRWWhzuLBmTix1BbVYSbkbdbWUXCXWSmkhuLdawB3/mGl3lPwJrvJe6QWIr4FESX
         6qAO6La3c1sGByMBVADidHaxY1jz6Jy382iZNt+6ZA476idBXNqhEpzAd42oS4PNWE2v
         BfOA==
X-Gm-Message-State: AOJu0YzHUCIkwQYh9XessNEeBMtYga63o4noSq8ZitlkzkPno/Z1NvVL
	pX10/WclUjKxsKYTDoTZhvQtHothlIlZS3iXFDbrS27q5FjZR1HhxdcmIFw++kVxFY6rxGmUyCg
	=
X-Google-Smtp-Source: AGHT+IHqc9NTJzD2RqG2SQ/BvLDAOQZd17TXFjAceAUFvOJC2oW1OrP2iCDiK9hsu/+vR82J/BqeVg==
X-Received: by 2002:a05:6402:3714:b0:5c8:9668:45a6 with SMTP id 4fb4d7f45d1cf-5c8d2e262f6mr12691221a12.13.1728403230281;
        Tue, 08 Oct 2024 09:00:30 -0700 (PDT)
Message-ID: <cdf93d64-dcc0-4e01-88fe-71145ffff1ff@suse.com>
Date: Tue, 8 Oct 2024 18:00:29 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86: restore semicolon after explicit DS prefix
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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

It's not unnecessary (as the earlier commit claimed): The integrated
assembler of Clang up to 11 complains about an "invalid operand for
instruction".

Fixes: b42cf31d1165 ("x86: use alternative_input() in cache_flush()")
Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/flushtlb.c
+++ b/xen/arch/x86/flushtlb.c
@@ -286,7 +286,7 @@ void cache_flush(const void *addr, unsig
          * + prefix than a clflush + nop, and hence the prefix is added instead
          * of letting the alternative framework fill the gap by appending nops.
          */
-        alternative_input("ds clflush %[p]",
+        alternative_input("ds; clflush %[p]",
                           "data16 clflush %[p]", /* clflushopt */
                            X86_FEATURE_CLFLUSHOPT,
                            [p] "m" (*(const char *)(addr)));


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:03:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:03:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813297.1226166 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCg8-0006so-G0; Tue, 08 Oct 2024 16:03:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813297.1226166; Tue, 08 Oct 2024 16:03: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 1syCg8-0006sh-DG; Tue, 08 Oct 2024 16:03:16 +0000
Received: by outflank-mailman (input) for mailman id 813297;
 Tue, 08 Oct 2024 16:03: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=J5/k=RE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syCg7-0006rp-TI
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:03:15 +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 d369670a-858e-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 18:03:15 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fac275471dso56972201fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 09:03:15 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faf9b24642sm12287761fa.82.2024.10.08.09.03.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 09:03:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d369670a-858e-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728403394; x=1729008194; 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=gr3jfdjN2IAATYfVe7H/52XJ9irHMNf7CDGnxXUGKes=;
        b=efW4EUHB5KQM47xKqfDarQFUmyC0/ewY+3N3COv7TxI87fzfiChMm485zAPPT9t+gZ
         EqkgZrNkItfgXdpL7zLtp3HNzudMG3/1JR1rj8vJc/V+yBlewx7H3UEYihOXuO7ReLRo
         VuicAUlTPZr3Ht63a9ssHVhkPqp4Cr79j30oBjjZ4RtuZDS/NFxcaTsqnPd8HZ6n+Rhj
         fFbatYe7cSdcsD5mk9AteqLaiJlfproxwuLc7yXhBPZ9prf3bQI4b9k9GiX2qLj6NUUB
         N7WmAU3Ajaief51/F8C+ktmSGDyHDiPYk4M4Xt5HLSy3NPgZQWy3Sfx/FoVeeiukoxL+
         Ub7g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728403394; x=1729008194;
        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=gr3jfdjN2IAATYfVe7H/52XJ9irHMNf7CDGnxXUGKes=;
        b=BDyWl/X+0/pToq4SK8QBaJAnoVCPBfL3r2S3I836Kp2e5l6AAOTv3YYp+XNu/nF70R
         Tj6qG7GkYmryBy3RirEsMvOk4edrdUgFNTSlviWpaMK6hIFwG2EJFvkaqDhEuQdUrXVf
         Ip5+b63E93CaUY1PE6y0GpQKaPck91t748PbliGy4LlkzYPX649nDS9ZMvCQId8rG9dE
         YUoM6fb7f+2Lh84CDW9OPz7XcZ5ZDMS6otrFb5GgfsmTiCajrR4bJux06P+vM8h5zjLD
         +K3aIfqGBNmpoQs7J89GdJoaXbJGPFTAPDLuErImkLG1xggrLgcO93L3p5P0NZIcCGa4
         IsvQ==
X-Gm-Message-State: AOJu0YyJYk2OVRUzT58NvuF03mQjbgUWZY0R+/NYN/7eotqm8puMMJqb
	WRp2n+W5Rju0gHzlHOFLj+0eVO5xwProbCn/vUv6EVUMzazULGnmOir+FA==
X-Google-Smtp-Source: AGHT+IHS3PfMzfAFSOAmiLLvuEiZ63nmFUW5Ld5RzH9RCmUdAY2uTn7QoDIlcUpxEZt5UjnqNDPQ/w==
X-Received: by 2002:a2e:6119:0:b0:2f7:5ca2:6d10 with SMTP id 38308e7fff4ca-2fb16048f13mr1819121fa.15.1728403393967;
        Tue, 08 Oct 2024 09:03:13 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] MAINTAINERS: Add myself as a reviewer for RISC-V
Date: Tue,  8 Oct 2024 18:03:08 +0200
Message-ID: <20241008160309.78329-1-oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

As an active contributor to Xen's RISC-V port, so add myself
to the list of reviewers.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index fb0ebf0939..6b0b5654d6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -485,6 +485,7 @@ RISCV
 R:	Alistair Francis <alistair.francis@wdc.com>
 R:	Bob Eshleman <bobbyeshleman@gmail.com>
 R:	Connor Davis <connojdavis@gmail.com>
+R:	Oleksii Kurochko <oleksii.kurochko@gmail.com>
 S:	Supported
 F:	config/riscv64.mk
 F:	xen/arch/riscv/
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:04:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:04:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813299.1226176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCh4-0007Pa-O9; Tue, 08 Oct 2024 16:04:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813299.1226176; Tue, 08 Oct 2024 16:04: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 1syCh4-0007PT-Ld; Tue, 08 Oct 2024 16:04:14 +0000
Received: by outflank-mailman (input) for mailman id 813299;
 Tue, 08 Oct 2024 16:04: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 1syCh3-0007PN-U9
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:04: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 1syCh3-0005VB-Dd; Tue, 08 Oct 2024 16:04:13 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.0.211])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1syCh3-0003Hk-89; Tue, 08 Oct 2024 16:04: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=wcF1gjhpLs59mNcfajJ5pB7YlhEWMmrTXkmxK7u8E2Q=; b=lSwWWQCkYuVbJswN9ogvWplv7f
	rEkFEvEFNihg3GKDHYPAzZjsS52IbYXKe0NRGNtS2msjVmkNgZsTEn/RSZVXLPwZ4JTfjzyR0+UlM
	NiWBK9J5hpcHdSTT6gnSnO39SQun3dBeX7Q33rx+Psi4q+EU9YHeHxg6DsZdLxNIjU+A=;
Message-ID: <f50873b5-250e-4a56-8e8b-bfc70ef733b3@xen.org>
Date: Tue, 8 Oct 2024 17:04:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] types: replace remaining uses of s64
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>
References: <cfaf8df7-e78e-46be-b6d4-499dd96e0f66@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <cfaf8df7-e78e-46be-b6d4-499dd96e0f66@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 08/10/2024 15:56, Jan Beulich wrote:
> ... and move the type itself to linux-compat.h. An exception being
> arch/arm/arm64/cpufeature.c and arch/arm/include/asm/arm64/cpufeature.h,
> which are to use linux-compat.h instead (the former by including the
> latter).
> 
> While doing so
> - correct the type of union uu's uq field in lib/divmod.c,
> - switch a few adjacent types as well, for (a little bit of)
>    consistency.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Acked-by: Ross Lagerwall <ross.lagerwall@citrix.com>

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:06:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:06:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813305.1226186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCiy-0007wn-3Q; Tue, 08 Oct 2024 16:06:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813305.1226186; Tue, 08 Oct 2024 16:06: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 1syCiy-0007wg-0u; Tue, 08 Oct 2024 16:06:12 +0000
Received: by outflank-mailman (input) for mailman id 813305;
 Tue, 08 Oct 2024 16:06: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=Vy9o=RE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syCiw-0007wY-PT
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:06: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 3aef0ad9-858f-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 18:06:08 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c5b9d2195eso8246316a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 09:06:08 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994787fa61sm388977766b.169.2024.10.08.09.06.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 09:06:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3aef0ad9-858f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728403568; x=1729008368; 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=10R+q4cNG7YIf3GtFxYZtpMB5Pf/OK0yaXmE7ifSyDQ=;
        b=GAABs/zYYciGobVKZmEKCZc8OKbRQkgkT6cCf41SqFFjWNBllWgIYWjl29PDVjcyB9
         s/pHrXXwq1mXDKiZrfMKEvI40OdjANJ4CyhpZeRc4fWg7+M3tYJhzezgiFh90Puj2twZ
         p3J3evc5dyakYadxm1oi8bzLT8lsb/7hwMideo2mlKCNbcqQcUKcaO8zupewJt8KsBOZ
         yP+R1EHbVJfAraAEMeQz4QDLlvZ1eAMk4szQ9THFLIglPLiF73z9RZcKyL9LGnb1hfKl
         JahrkGWyZWRG9bGKTCzaNtSyJ+X4xTFIfrFy4Fiv+DmLdxNXvdz87SdIpWEMg/0ZchtL
         y1iQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728403568; x=1729008368;
        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=10R+q4cNG7YIf3GtFxYZtpMB5Pf/OK0yaXmE7ifSyDQ=;
        b=G7S/WWzqLE8ZRC1GHOH/BqOo2pB1AZPTcRz36Wc/kNGQJbLMZwPyFr+Mu2Ymva6z31
         t7zkYkzQi6nhICttcX4mHiNN+Fh7HYDNok5OA7/g1MuaYh4fCRei/STkEdceXa6jxPKG
         WLsmP6VJoUZtn9XyHWD4ZuZE6zi1zp9q7tAoeYHe74046g+vgrKlGziYgCitnFdarq9A
         rVxVXOF5nq+iOtzRHnE7jEU7XbIZv87YpSJQD+dvZXK3u8dYIrZ47DWFOHHux4ceouY5
         wA4ED7pc2H6aj7TOGCQXzh71mAoSC3AQBmsJFVhALN1cgzXOujOSH6gxBzrxPKQaeJyj
         QMnw==
X-Forwarded-Encrypted: i=1; AJvYcCX2URUgSROpe03d+hzx9CC/oDx9RFBKL1owTC35cdd3XL4L2DmNu2yY4qd3MIB9tX9G0970ggh+INQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwFZVaZNPQHzIAuJ73s1Gjt0w6JM29++nbCVLNk0lslRM6+jrEK
	oNMFQlQeF8/88rU3OSa5PrneaDQwG013Bh4YEdXXBh25Ap87AtJnMicM0FJchw==
X-Google-Smtp-Source: AGHT+IEt9QvormQHAzyxBdzgMY06j20Mh4q/KdWkVuolDVgwvvPPuYIdQaWn/vD/ryHen1Z/MChtlA==
X-Received: by 2002:a17:907:ea0:b0:a80:7193:bd93 with SMTP id a640c23a62f3a-a991bd40f79mr1710939366b.25.1728403568158;
        Tue, 08 Oct 2024 09:06:08 -0700 (PDT)
Message-ID: <ff4d8168-9e9b-4c24-86af-6960652d803a@suse.com>
Date: Tue, 8 Oct 2024 18:06:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] MAINTAINERS: Add myself as a reviewer for RISC-V
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241008160309.78329-1-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: <20241008160309.78329-1-oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.10.2024 18:03, Oleksii Kurochko wrote:
> As an active contributor to Xen's RISC-V port, so add myself
> to the list of reviewers.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:14:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:14:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813317.1226197 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCqP-0004Jr-TX; Tue, 08 Oct 2024 16:13:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813317.1226197; Tue, 08 Oct 2024 16:13: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 1syCqP-0004Jk-P2; Tue, 08 Oct 2024 16:13:53 +0000
Received: by outflank-mailman (input) for mailman id 813317;
 Tue, 08 Oct 2024 16:13: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syCqO-0004Ja-4L
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:13:52 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on20623.outbound.protection.outlook.com
 [2a01:111:f400:7ea9::623])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4d234923-8590-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 18:13:50 +0200 (CEST)
Received: from DS7PR07CA0023.namprd07.prod.outlook.com (2603:10b6:5:3af::28)
 by MN0PR12MB5858.namprd12.prod.outlook.com (2603:10b6:208:379::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.19; Tue, 8 Oct
 2024 16:13:37 +0000
Received: from DS2PEPF00003439.namprd02.prod.outlook.com
 (2603:10b6:5:3af:cafe::3f) by DS7PR07CA0023.outlook.office365.com
 (2603:10b6:5:3af::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 16:13:37 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS2PEPF00003439.mail.protection.outlook.com (10.167.18.36) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 16:13:37 +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.39; Tue, 8 Oct
 2024 11:13:36 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 11:13:35 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4d234923-8590-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Vwuayvcub7BGPPcMZ/xW/yNYRd+gxuqE/HoGp5t3eiEi4rPlROj4y8gTqCqGmHQ8DxGH2T58/Wjhrb9CXZYKGpPFyf2JFqGQk+7r/V/KOW5OlbIz2r99bN8teYOcrpbnbkREGCik9XWwznqwDegCo/o8tYPCYhNemS58W5esfOEfTxLNFhf6bQUV2e1CNCzFN/9QGdrzYcNUmyCzkhSm4UY8uadPz8ZvITNGy5XTY2sScRLUsa3fRnkG3vGHJfCv1KK/0q2uV3wcixqyeyqfNMIQzfKKshpWUha52RLhYQLuGwg+0L2Gy58hgoVFcBHWoXWRyiuwg8FddEa8hsC1HA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=i/wLgfdjPfry5iwOwVFF2Sb4MZxo8UqwRq36uhx649w=;
 b=it8AfOuPkMOqIZ7AJba1wxcRVa7mehtCc1kYVG2TDv0Lvn8zp4d5RU8jDfXzBi0wKi367mjQG1bzGfPgL2zTi+G3uld0qR8nrfMQ4PsoczstB/SNjWt0mo2d57zBib+VoBc2nurOZqw1ZpUJzApgeKLfP5m/33otICfnOw9SuEGF9N5Df/Chsb9J05HCo080Px/2dqqUgnKM7hJpIgIj8sXaBrKiTsnWR/9gr9TIQF2UkRJ5fJp9Sdf3HMihtNgnLi467mB/+UAp5CXcpTHyHg3+ZbNNJK8GlZMwiorxL5GbPFfSZTjJ58C39//qIGWR4v22rweW0EaofQXqVNb8mw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=i/wLgfdjPfry5iwOwVFF2Sb4MZxo8UqwRq36uhx649w=;
 b=t1WEs+6M2PWMxQZ0I87kC267Z5adEfAx0Q70pmG6VDF4IOCu+PuJMCGBcfNAgaRHapwkCMKPNQvLUJ5IqdxfLuvEu48SPMeCNhVC5WpSsbj5uVORefDcKZ4siUdO4qyuNIYd2J3bvkkGtuDaIPJdq8IL7LRxRMUluGMHZ+EZGNE=
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: <eaa648a6-c34a-47c5-a4fb-a3e56982abba@amd.com>
Date: Tue, 8 Oct 2024 12:13:37 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 20/44] x86/boot: convert xsm policy loading to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-21-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-21-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF00003439:EE_|MN0PR12MB5858:EE_
X-MS-Office365-Filtering-Correlation-Id: 6c07a5f4-6e63-4ff3-66fe-08dce7b42ace
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZWdlQ1krTUUyVmd6Nktxb3dsYjVaUitwQ0NXQTB0aDFoYlQrRUMwRjd2anlZ?=
 =?utf-8?B?ZXNuakxrSXZUczdTRURPSnRYenk2cFJXNHlyQUxvZmdvQnBhUmErbFUyemYv?=
 =?utf-8?B?MnoveGpuZUR0aHkxM1BFK2g4cENmaHNPWVBWOGJjaDUyUzQxYmk3cTJWanA4?=
 =?utf-8?B?Mk5YT0t2QW9TOStFRnEzUEtUdVhFNmgvNUJDVWFBbFRZVkpyQjFPbnpLUnJu?=
 =?utf-8?B?UGdlRkhiNkZXcWxFdUREbk9oUU1VaVNCYlNiejd1ZXVVeU1rZ3JhTzVXem8w?=
 =?utf-8?B?QkpIbFhyRkpBNTVTNEdVSTRXblJ5RVg5Y3pOUzFXVXVnQytnd0NXK0ZnTGRD?=
 =?utf-8?B?TU9JcklQTGhza1NEQXhhemluZHhLbVVzOUFic2NwSFdDME44WTJXYm9CRVU4?=
 =?utf-8?B?VjZtR3B0a2l6bjlwTU5TMTlqMFdxdVJibjhwNVdKV2N0eEpSVWtMUHI5Vnd4?=
 =?utf-8?B?RWJVREN6a0VuNHBia1dKcVZPaGhNZU1hM25kK2owZ2ZaZVRLZDRvL01TV3hS?=
 =?utf-8?B?SE1LVkZiN3ZwclhDaWtTZWU3d2szNmdGM3VoSm5iblVuMGpwSlBsZVRpbTdK?=
 =?utf-8?B?MFdRYTBKMUcyN2tETmVYaHB1c0plQy9aSG1LZnkrYXZjQ2dJbC9DdEkxNW9G?=
 =?utf-8?B?anl1QStNTFY0Q1FFR004U2xRQmZKcVFkdkxtTEdKOE40ZEc1d212NU9IdUkx?=
 =?utf-8?B?c04xVDh0U3hmT2FKeDR6TVlPbjcrUVNzK2lWWXg5ZklUWHRjZjFFYlFXczcz?=
 =?utf-8?B?RDZaMjllVjNNSXhoblA2bENqL1VoZjhUQXJvQnQ2T2ZKcmtGTm1wdHhNaWYy?=
 =?utf-8?B?cWhzWUZtNUl4MkhiUThtZjRiVU45aThQaitBZkMrUjJWL1hmVS96TTJOZXJi?=
 =?utf-8?B?RjVWcUl2Y0xReTJBMXR5NHJYbWUrcmc5MTFWWVZRWG1jZHcrUUpCb1BZRGFt?=
 =?utf-8?B?ZkVjY2llbWc5bjdjWG5jUklXSFMrK2dHZHAxdGtxYjdyMHQ2M003alNVaVFu?=
 =?utf-8?B?Rm9MSW9ZK1FYSzdBbWlRazUrdHdIb3JqeHVOYnA4SDZwUHVZN09HZUNZU2Zh?=
 =?utf-8?B?Zm5vR1Z3c3d1bExBNkZwUlltZFZLRU1aeXBoQ3hHR0s0anV4dXplclhOL3JO?=
 =?utf-8?B?YjhBQzRndVNsTUlqcVhNelQwK0Z1SjB6RUloOVp2SUxiQXBFelNzejQrdkNo?=
 =?utf-8?B?bGhOZ1hYS0JlSytEWm9XUUpiQjk3NzhNd21FRURpYzBrNjRxYkpFQ1Z5SFMx?=
 =?utf-8?B?OWs4Rks4RWV5S1owMXY5SUswUExvV1RKckpvcnRYck4yZ1lHT2hYME1SRC9a?=
 =?utf-8?B?UmVSdmdjSXBpdVFlYkRiZzF5YnlXMER6amw5bUd5UTBVRGROTGFYWnYrd0Nr?=
 =?utf-8?B?SWNYbGc1SVJiNzd4cEI2YUNwSk5paXpTSWRTMUROL1BXNjRFQXZleDJlT3dH?=
 =?utf-8?B?K3djSXZLdEJSRElDOWZYUFNKWWIyRnNHUUQyYnhuaUltSTZ0L1pnUjJrTXNx?=
 =?utf-8?B?SmpvZnU1OVZ0WDlSRjJUa29xZlZqUmJ4OHZWK3YreGdGbWhqNER6cE94RjZF?=
 =?utf-8?B?RDZnRmJlMDZzb1lYRW4wNHBIajJ1OTBCTFpUYk9BQ1RKK20rMm1LYnZZNk9K?=
 =?utf-8?B?clhQaFQvSHBGUXZZak5abityMFZGajU1SmQzSzZLQ0tGdUpmdjVlZHR0WlVx?=
 =?utf-8?B?WkVBVTkrUVpQVGp0dkN6VU5mQUdLekk3QTVCdktTZ2trTXZHRnJPd1VYSUt2?=
 =?utf-8?B?TDFUQXFYUy9ZQm9QR2NhVmh0a0xmWU1paTd6bGtQRnQvanBJQm92Wm91UE9X?=
 =?utf-8?B?d0NSOTlPa3FDazZTUzBaNVd3Zno3MG5DMnI0UmJLNzJFTWRpRmVPRE5nR3Z3?=
 =?utf-8?Q?T5tTskbKu6CGg?=
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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 16:13:37.6973
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6c07a5f4-6e63-4ff3-66fe-08dce7b42ace
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:
	DS2PEPF00003439.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5858

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Iterate through the unclaimed struct boot_module to see if any are an XSM FLASK
> policy. If one is located, mark it as an xsm policy.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

> @@ -161,6 +162,14 @@ int __init xsm_multiboot_init(
>       }
>   
>       ret = xsm_core_init(policy_buffer, policy_size);
> +    if ( ret == 0 )
> +    {
> +        int idx = first_boot_module_index(bi, BOOTMOD_XSM_POLICY);
> +
> +        /* If the policy was loaded from a boot module, mark it consumed */
> +        if ( idx >= 0 )
> +            bi->mods[idx].flags |= BOOTMOD_FLAG_X86_CONSUMED;

Maybe xsm_multiboot_policy_init() should return the idx used instead of 
having a second search?  (Also, xsm_multiboot_policy_init() can't fail?)

> +    }
>       bootstrap_map(NULL);
>   
>       return 0;

The other changes look okay.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:15:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:15:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813324.1226207 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syCri-00058a-8v; Tue, 08 Oct 2024 16:15:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813324.1226207; Tue, 08 Oct 2024 16:15: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 1syCri-00058T-6A; Tue, 08 Oct 2024 16:15:14 +0000
Received: by outflank-mailman (input) for mailman id 813324;
 Tue, 08 Oct 2024 16:15: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=UDM+=RE=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1syCrg-00058E-CK
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:15:12 +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 7e6008b0-8590-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 18:15:11 +0200 (CEST)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2fadb636abaso58312701fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 09:15:11 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faf9ab16d6sm12134871fa.9.2024.10.08.09.15.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 08 Oct 2024 09:15:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e6008b0-8590-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728404111; x=1729008911; darn=lists.xenproject.org;
        h=user-agent: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=IMIvpHcd45lnY83/T5RuSlqtxEHFtUU4rXlFswYQzkM=;
        b=FL3ZlS9clDW6vQM1axDGbaMBOZ4sCMzN3afPgSnLmNyuiHhQs49bO61fjw7w/t9V0C
         fCLp8uC0XgN9LYUKvcEAatefwC7wWzKAgQ8d02kIKlyloR0A95B/im3H4FX1Ap3FppB+
         kEUhXvqBiEPb+zFb4jbNQGwFFGD+9xP/bW545StcT5eHo8ySeadNnJJRsbV+w385SVVV
         6vI12QEUD6Uhw06lssKHlfEfE9J/jSNWMRuToj3OW+WFI0WhByaRgOnaFWecPsc01abB
         O6zkGtTphrJFFbPUQQONTMghOcO4U3gDLGUuTw9VVZ17E5hVdSDOj93FFEkTVaaCAzCl
         bYSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728404111; x=1729008911;
        h=user-agent: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=IMIvpHcd45lnY83/T5RuSlqtxEHFtUU4rXlFswYQzkM=;
        b=BJWpB+FzI3mxOliFik2sgc912Zlz3ZodB2s/ojvHkILY5KhgQ2wo7UAHlW+A/QrWXC
         DL3Jae0tsXnFLRQw3DCYYlCuvkfvJrNUtpvHt/CI2E8EV7LVqLWIpt096UY7cJ2kg8Da
         Iq6Zox3xKcmsQgbQbXffblEcVKTCeBRftpt+vFXMfE6t0dVFTwyccrq2HA+/Yeoy2A0o
         lqtdYYFHmbbwX222KqoWiTj7VfUBjq4acJBq92LxmcgkZwtArwH5xGIYQEDwH3YgS2I9
         ng2fbCq5tjHvd5W9WWobnF1qKG54nx3fO0vnDc6fCq+OOOzYVT9IU0A8CGAC++HVL8gN
         v2Rg==
X-Forwarded-Encrypted: i=1; AJvYcCWId62tMwQFVmXp3t2joTMRtFhq73g0kcjOjJTDcQZzfvG9tXedDM6Yu9K7jUrlPCQAEMMPGC2lLZA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx1zcNcRL3jZTg6SEtn4lHy9s9xA8jH0QgjmlVAQlPiFHDKpw2s
	7+1wmORaKbKaM1OHN2jyaqC8VnwgDeUSducrjiz8A9a18KvKc6ht
X-Google-Smtp-Source: AGHT+IGDWMbqRpqybixokuuP3QnOFg281QMvVsPNrT/ERnJ4OB4eKlTCgCDG90riRqCH5QN2YB4N+Q==
X-Received: by 2002:a2e:bea7:0:b0:2fb:c20:dbc5 with SMTP id 38308e7fff4ca-2fb0c20dc90mr31779931fa.29.1728404110528;
        Tue, 08 Oct 2024 09:15:10 -0700 (PDT)
Date: Tue, 8 Oct 2024 18:15:09 +0200
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, sstabellini@kernel.org, anthony@xenproject.org,
	paul@xen.org, edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org, Paolo Bonzini <pbonzini@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Subject: Re: [PULL v2 2/5] hw/xen: Expose handle_bufioreq in
 xen_register_ioreq
Message-ID: <ZwVaje_9lg9lwavh@zapote>
References: <20241003185655.1480819-1-edgar.iglesias@gmail.com>
 <20241003185655.1480819-3-edgar.iglesias@gmail.com>
 <CAFEAcA9SgThjVW=VY_ZeKZh0bAe+rbTReK00DAQEXgMwD8cNqQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAFEAcA9SgThjVW=VY_ZeKZh0bAe+rbTReK00DAQEXgMwD8cNqQ@mail.gmail.com>
User-Agent: Mutt/2.2.12 (2023-09-09)

On Mon, Oct 07, 2024 at 04:42:49PM +0100, Peter Maydell wrote:
> On Thu, 3 Oct 2024 at 19:57, Edgar E. Iglesias <edgar.iglesias@gmail.com> wrote:
> >
> > From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
> >
> > Expose handle_bufioreq in xen_register_ioreq().
> > This is to allow machines to enable or disable buffered ioreqs.
> >
> > No functional change since all callers still set it to
> > HVM_IOREQSRV_BUFIOREQ_ATOMIC.
> >
> > Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> > Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
> 
> Hi; Coverity has noticed a problem (CID 1563383) with this change:
> 
> > diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
> > index 3a9d6f981b..7d2b72853b 100644
> > --- a/hw/xen/xen-hvm-common.c
> > +++ b/hw/xen/xen-hvm-common.c
> > @@ -667,6 +667,8 @@ static int xen_map_ioreq_server(XenIOState *state)
> >      xen_pfn_t ioreq_pfn;
> >      xen_pfn_t bufioreq_pfn;
> >      evtchn_port_t bufioreq_evtchn;
> 
> In this function bufioreq_evtchn is declared uninitialized...
> 
> > +    unsigned long num_frames = 1;
> > +    unsigned long frame = 1;
> >      int rc;
> >
> >      /*
> > @@ -675,59 +677,78 @@ static int xen_map_ioreq_server(XenIOState *state)
> >       */
> >      QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_bufioreq != 0);
> >      QEMU_BUILD_BUG_ON(XENMEM_resource_ioreq_server_frame_ioreq(0) != 1);
> > +
> > +    if (state->has_bufioreq) {
> > +        frame = 0;
> > +        num_frames = 2;
> > +    }
> >      state->fres = xenforeignmemory_map_resource(xen_fmem, xen_domid,
> >                                           XENMEM_resource_ioreq_server,
> > -                                         state->ioservid, 0, 2,
> > +                                         state->ioservid,
> > +                                         frame, num_frames,
> >                                           &addr,
> >                                           PROT_READ | PROT_WRITE, 0);
> >      if (state->fres != NULL) {
> >          trace_xen_map_resource_ioreq(state->ioservid, addr);
> > -        state->buffered_io_page = addr;
> > -        state->shared_page = addr + XC_PAGE_SIZE;
> > +        state->shared_page = addr;
> > +        if (state->has_bufioreq) {
> > +            state->buffered_io_page = addr;
> > +            state->shared_page = addr + XC_PAGE_SIZE;
> > +        }
> >      } else if (errno != EOPNOTSUPP) {
> >          error_report("failed to map ioreq server resources: error %d handle=%p",
> >                       errno, xen_xc);
> >          return -1;
> >      }
> >
> > -    rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
> > -                                   (state->shared_page == NULL) ?
> > -                                   &ioreq_pfn : NULL,
> > -                                   (state->buffered_io_page == NULL) ?
> > -                                   &bufioreq_pfn : NULL,
> > -                                   &bufioreq_evtchn);
> 
> ...which was OK prior to this change, because (ignoring the
> early-exit case) we would always pass through this function
> call, which initializes bufioreq_evtchn...
> 
> > -    if (rc < 0) {
> > -        error_report("failed to get ioreq server info: error %d handle=%p",
> > -                     errno, xen_xc);
> > -        return rc;
> > -    }
> > +    /*
> > +     * If we fail to map the shared page with xenforeignmemory_map_resource()
> > +     * or if we're using buffered ioreqs, we need xen_get_ioreq_server_info()
> > +     * to provide the the addresses to map the shared page and/or to get the
> > +     * event-channel port for buffered ioreqs.
> > +     */
> > +    if (state->shared_page == NULL || state->has_bufioreq) {
> > +        rc = xen_get_ioreq_server_info(xen_domid, state->ioservid,
> > +                                       (state->shared_page == NULL) ?
> > +                                       &ioreq_pfn : NULL,
> > +                                       (state->has_bufioreq &&
> > +                                        state->buffered_io_page == NULL) ?
> > +                                       &bufioreq_pfn : NULL,
> > +                                       &bufioreq_evtchn);
> 
> ...but now the initialization has moved inside an if() so it only
> happens under certain conditions...
> 
> > +        if (rc < 0) {
> > +            error_report("failed to get ioreq server info: error %d handle=%p",
> > +                         errno, xen_xc);
> > +            return rc;
> > +        }
> >
> > -    if (state->shared_page == NULL) {
> > -        trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
> > +        if (state->shared_page == NULL) {
> > +            trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
> >
> > -        state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
> > -                                                  PROT_READ | PROT_WRITE,
> > -                                                  1, &ioreq_pfn, NULL);
> > +            state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
> > +                                                      PROT_READ | PROT_WRITE,
> > +                                                      1, &ioreq_pfn, NULL);
> > +        }
> >          if (state->shared_page == NULL) {
> >              error_report("map shared IO page returned error %d handle=%p",
> >                           errno, xen_xc);
> >          }
> > -    }
> >
> > -    if (state->buffered_io_page == NULL) {
> > -        trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
> > +        if (state->has_bufioreq && state->buffered_io_page == NULL) {
> > +            trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
> >
> > -        state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
> > -                                                       PROT_READ | PROT_WRITE,
> > -                                                       1, &bufioreq_pfn,
> > -                                                       NULL);
> > -        if (state->buffered_io_page == NULL) {
> > -            error_report("map buffered IO page returned error %d", errno);
> > -            return -1;
> > +            state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
> > +                                                        PROT_READ | PROT_WRITE,
> > +                                                        1, &bufioreq_pfn,
> > +                                                        NULL);
> > +            if (state->buffered_io_page == NULL) {
> > +                error_report("map buffered IO page returned error %d", errno);
> > +                return -1;
> > +            }
> >          }
> >      }
> >
> > -    if (state->shared_page == NULL || state->buffered_io_page == NULL) {
> > +    if (state->shared_page == NULL ||
> > +        (state->has_bufioreq && state->buffered_io_page == NULL)) {
> >          return -1;
> >      }
> 
> ...and the tail end of the function has not been modified, so
> (not visible in this diff context) when we do:
> 
>     trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
> 
>     state->bufioreq_remote_port = bufioreq_evtchn;
> 
>     return 0;
> 
> we may be using it uninitialized (in the trace statement
> and when assigning it to state->bufioreq_remote_port).
> 
> Could you have a look at this and send a fix, please?
>

Thanks Peter,

I sent a fix for this yesterday.

Best regards,
Edgar


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:26:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:26:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813332.1226217 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syD2k-0001r1-7Z; Tue, 08 Oct 2024 16:26:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813332.1226217; Tue, 08 Oct 2024 16: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 1syD2k-0001qu-4i; Tue, 08 Oct 2024 16:26:38 +0000
Received: by outflank-mailman (input) for mailman id 813332;
 Tue, 08 Oct 2024 16: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syD2j-0001pd-JM
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:26:37 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20609.outbound.protection.outlook.com
 [2a01:111:f403:2405::609])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 15a4024b-8592-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 18:26:35 +0200 (CEST)
Received: from MW4PR03CA0185.namprd03.prod.outlook.com (2603:10b6:303:b8::10)
 by CH3PR12MB9429.namprd12.prod.outlook.com (2603:10b6:610:1c9::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 16:26:27 +0000
Received: from MWH0EPF000989EC.namprd02.prod.outlook.com
 (2603:10b6:303:b8:cafe::55) by MW4PR03CA0185.outlook.office365.com
 (2603:10b6:303:b8::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 16:26:26 +0000
Received: from SATLEXMB03.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.8048.13 via Frontend Transport; Tue, 8 Oct 2024 16:26:26 +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.39; Tue, 8 Oct
 2024 11:26:25 -0500
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.39; Tue, 8 Oct
 2024 11:26:24 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 11:26:24 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15a4024b-8592-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=XmrF62WXxJ+o6lmQkqYL4/2STaAOu93jlsURdcAwGgkI4SR6dyhW1wgIDJRB8ynN7H7zryAlSx4KktVNWSZfIwLqD5aM3/7laG2BJ1IIIU/GxogE1WacnhMeoRMSJM83g+02tXeFJ49iBmbQG28PuOBpm0N7pEHKmbJtm3SqKMYD4mdTmz51YYATatCQ1YuwbgpT0i3Dxz87FlpDMrWbiVhySQcc6mmijOYNKQ4HigPUM5mW7ukj3J5ZMX9w8p6i8JkoPoZlJcGteXILgjsdlhq+y55c5iJS4orHJBJlS9Wu8yk7Al+M+lfkMwNXrxOKVkxbfXSyAp85o3fk5k8IGg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=6ZMAHhIryKrkyrdYwQrfH3rn7AeVWhlCMqxtKqFEfAA=;
 b=wWrs51TmFWFXq4ZmrYXLqdFWKJrp32s1k+EwFRd9eTUG+/mpxL6pXhKcXOmWD5kH6o5Q4Wy4CjMtacDmvpKM3eBMcOmSZ0M9MGE0FoUvMqokis5oTUnz4TZBXjE0/gkhXReUM+0lgesP0Y54anPhdZc8g+BBugYz6cT5M6Qa+5ol7bOo9+/aQnWo2UrtWmVGO2PUfuttOKYRvkSEhjtiOjgaqSvFDPB6AJhauQ1h8j+Y1iirsmpH6ikbdhVBKlXy91XZcv34Czq2TPgPPRXtYkt7XEOaxS9g7sQK8/iHdIpoM9t8+JsetzAjW0EohJn5fUaD8TtPbqTZlgPamRtbpg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=6ZMAHhIryKrkyrdYwQrfH3rn7AeVWhlCMqxtKqFEfAA=;
 b=h4EaSajDOATI43AiYsbN/Hpp3FFxdOORcZprEGeFEGzC2mWQ01Xm7YcFweJaEhzWG39OV5Px/tOyfM10Czhg4FfP7YshLIWxSxK4M2DE2CyTyOMUhSXavdblmQr9vAf583DWUzazke1NNDfPRRSXSOCdC1zFtAvnH7Cp6p5PMak=
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: <bea80e29-221a-44c9-addf-b04c82c505d5@amd.com>
Date: Tue, 8 Oct 2024 12:26:21 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 21/44] x86/boot: convert ramdisk locating to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-22-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-22-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000989EC:EE_|CH3PR12MB9429:EE_
X-MS-Office365-Filtering-Correlation-Id: bb6ed6bb-ee11-4533-89bd-08dce7b5f509
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?QUxjYW9rNFZFaStia1ZBanFpSmZ5clQ2anU1UDRmOWNsV1F4RGNwWHRjSE5p?=
 =?utf-8?B?NEZWOFpPU3hPSktVdjRsT2hpelQ2a28wNXg3NmdFOWVTYURFY3QrM0w1TFRZ?=
 =?utf-8?B?MU9GU1R1SWJQRm55T3NkRDV6MGljVzBRUHgzYkxsR2t5RU5Hek5IMWZEd3Y1?=
 =?utf-8?B?L1IxUjBDdnp1OTYxMW1VYW5GL2VIK09vay9FN3BHL3dOMHM5dnB2Z0dVU3RP?=
 =?utf-8?B?MWlubEtoaXNnTzN0VXQyTm5LT3E1dG1ubmVPaFREVVF5QkRJMnhBWTBJVHZU?=
 =?utf-8?B?d3R3Ylpxcm1SQllLTkpHcTNaRjZYZUoyWEpvOERRNEJNaWp6cWYzUDRua1pC?=
 =?utf-8?B?VnYxNk5FQ0puWnNJWXVUbEhITGxZQmVFeTU1RzA3Sjh5UDVkUWd4YS81SjlY?=
 =?utf-8?B?YzlQR2F6dTBWQVd4eDd1VUQ2OHF3ajBUNmpIbkpBdFZ4SWVIamwxaEMrYW9B?=
 =?utf-8?B?WEdJMTBQUHhDSHphNW42bVNjYkdZNHNmWk9zMjYzb0s0OGxqZkgzT2VjdHlI?=
 =?utf-8?B?MVpGV0MyNjhpV3ROcm1jd3dFMFdEMWY1bmU0LzdWQXo1cEN4cWdjbkNVSjAx?=
 =?utf-8?B?ZXJtWktEU0VoWjJrbDdSS2themM3am9TZW0zYWxsR0RrelJHeTJBRjc3UHpB?=
 =?utf-8?B?L0NFR1huMi9TL2hkdG9pMkJoVFA4N2hlU3R2SXFEVmpTdjZnTTNYSmprdk5Z?=
 =?utf-8?B?RlBSVlZ0ZWJxNk9SWTgyUjVzSmIzY2hMbWpGMVZBL2lMemkvOFpzREZ2aU1s?=
 =?utf-8?B?Y2ZtQTM4U3QwN1dyUHRSZmlqaGdhZFZ4K3Z5U0hNQXY3aGRraTBkTHl1WnZ6?=
 =?utf-8?B?TlhnYlU3RGYzMmFJdmxldmxad0ZHZWRVNVNsODQxYW9GSDlhOC96SmhuRHZ6?=
 =?utf-8?B?VkxyNlhzUjJvVDlrVWxhTkU2OEx0akErQ292K3c4OUlQUmxJTEliUUUrbHZY?=
 =?utf-8?B?aFdjZkdsNlBUNnJsVGUyU0xJbWpYZkhJYkFMMWNtbEpzNWFnZm1YRlFVaSs3?=
 =?utf-8?B?aXFCNWhIRCtjM2lhcGwzUmxEOWdCUll4ek9VRE16Wjd6TGlMYmNUSG05V29o?=
 =?utf-8?B?bGNwaTNZZmxoQ2xwdWZ3TVJsaTMySkFtU1N6aEYyb251Nlh3YTU0aEh1MFYv?=
 =?utf-8?B?KzhvdHJvelIySllrQzVvdkpqbklYbCsxeDVsQVpaTFFoMmZLRGNMVE9NYWtI?=
 =?utf-8?B?UDAybGdYUWxRQUFsTmlHRnB4VkR0OG13V3pWU21lYW1CVmlJWXBkZmJGeEVj?=
 =?utf-8?B?QTgzTmlBOXFSR1Jhbmo2T0pLRnUzNEtBMitHMFdFalZLZHZnVmRXbWNmOGhV?=
 =?utf-8?B?bDRQbWprZkY4RVhqalMvdFpXVWdzdjMzNThyazh5VGpNNFBHRGlxaXF1QldJ?=
 =?utf-8?B?dXdYUmw5N0FDWHhxQ050Wm1QcHJXSWhIOEdaMlpLOXR4RXZCL0hBcXVJU2NF?=
 =?utf-8?B?ZjhUTzJJZzNMM0hHcmRuTWpuMW40Rk80c1A4RG52ZFVLNnlwZ1VONDc2bVd0?=
 =?utf-8?B?RFZBU2g4U1lFaVgxZGREV0k4L01DaUFLdGo2MThIcmViNXVxWHJycWFyNlI0?=
 =?utf-8?B?VXQrWGlHL1czNDZWaEx6UlRGdmhadk9Va0pydDB2MnR1cUVPakdOQ1JhWnc0?=
 =?utf-8?B?eTlRZzBybFUyRGZFTmQ4MmNCbkFwcWJSeHpNV1VsMjIwMTdDOGRRS0NrelZK?=
 =?utf-8?B?MzdCQm1uY3pwWGNyekhFc2F2cEU2MFJkYmhPVGIveDJYR0U0OWFoQmNRK1lF?=
 =?utf-8?B?YzAvVkJHU3VwMnZSSWZCRExTeCtLWEwweWFVdmJKY2MxQmZ3dVplZjdkTzlh?=
 =?utf-8?B?dkJndTRiSWZXVXVUSzNHVE9Hbnl4MDArT3ZLU0d0dVoxVmRBZTN4SUhuTlA5?=
 =?utf-8?Q?al2EUfs9ZBiUJ?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 16:26:26.4345
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bb6ed6bb-ee11-4533-89bd-08dce7b5f509
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:
	MWH0EPF000989EC.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9429

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Locate the first unclaimed struct boot_module and mark it as ramdisk. If there
> are any remaining unclaimed struct boot_module instances, report to the
> console. In the change, the new boot module iterator is used to find the
> initrd index, which returns a signed int. Switch initrdidx from unsigned to
> signed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:27:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:27:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813336.1226226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syD3j-0003xJ-Gg; Tue, 08 Oct 2024 16:27:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813336.1226226; Tue, 08 Oct 2024 16: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 1syD3j-0003xC-E6; Tue, 08 Oct 2024 16:27:39 +0000
Received: by outflank-mailman (input) for mailman id 813336;
 Tue, 08 Oct 2024 16: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=Vi96=RE=bounce.vates.tech=bounce-md_30504962.67055d76.v1-9680306c77f04a38bfcb1bfe39c7adf0@srs-se1.protection.inumbo.net>)
 id 1syD3i-0003ri-AN
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:27:38 +0000
Received: from mail137-12.atl71.mandrillapp.com
 (mail137-12.atl71.mandrillapp.com [198.2.137.12])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 39c6f58d-8592-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 18:27:36 +0200 (CEST)
Received: from pmta07.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail137-12.atl71.mandrillapp.com (Mailchimp) with ESMTP id
 4XNLyt33hLz5QkQhT
 for <xen-devel@lists.xenproject.org>; Tue,  8 Oct 2024 16:27:34 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 9680306c77f04a38bfcb1bfe39c7adf0; Tue, 08 Oct 2024 16: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>
X-Inumbo-ID: 39c6f58d-8592-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728404854; x=1728665354;
	bh=Agy44/npwfnWPWGmMglssLELbqq010UDLOCVNcJ9Zc0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=scyzeFe7gMHpvx1X3WNNeX14RmyOYdiFABiSxcdPuxK5EyPWe+kjdvpKNyT4ArvY7
	 Dlev1KYs242XBjJcVIlkGdqJsss7EgTRTG7+2K8YDpzUHOTnxbrhcZM01VwMEbjA9j
	 MaRGplXdDDM8iP+zAsbzzZzWJn3pUznqNFugWDC1P33PI3uhWGe2Qk24fNRm5km+gl
	 UqXzJnx8Cyz0LGXhtynxRysoX1hRzhtQRkq1z2EX6IGYPzXeOjs0o/KynT1DjZBWrr
	 lKgs3O84S96lohEuQ/bYiLJQo0ivkncjIngKuTmdQtlcqrbj5pLg+qqH8VVgtNicJk
	 AIIvT3TPdhkUQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728404854; x=1728665354; i=anthony.perard@vates.tech;
	bh=Agy44/npwfnWPWGmMglssLELbqq010UDLOCVNcJ9Zc0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=FrXMssUVb/seDNsWJ0Ad6xLce18+dlvTi2z/RqbpXoB5SaJR+BQ45FmK+AG/pkE7p
	 b3ZF0Eq/MExkf+dMSt1fJfWLwPg9/S+jB3RBs25nv9oIoCEMlSOxHQYbnwCuscpFUT
	 aNd9Ve5Pd2CMtrErGtDhXGPV5leDT1R8qz+uvVJRS93g6KlbtQZj6zw9CDpgHVHELn
	 qEBrFcGwHBTynfRmf/QcS2k+WY6n/zdkEQhNTolTjBGa1pL+VfsOmlH9JcNAVCDSxy
	 dYlS5+ITM1Sd4XJ9/OL4BiN2n2CwolrYFOhjMZGc/01T+HjCF7d9Fsp3Q8dKH66H+c
	 52KFFS4nqvzcw==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20CI:=20Stop=20building=20QEMU=20in=20general?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728404852765
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Stefano Stabellini <sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>, =?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-Id: <ZwVddI62BTAtMUls@l14>
References: <20241008155023.2571517-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241008155023.2571517-1-andrew.cooper3@citrix.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.9680306c77f04a38bfcb1bfe39c7adf0?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241008:md
Date: Tue, 08 Oct 2024 16:27:34 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Tue, Oct 08, 2024 at 04:50:23PM +0100, Andrew Cooper wrote:
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> index c668736bdc2f..c83e0bdbe119 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -339,6 +339,7 @@ alpine-3.18-gcc-debug:
>    extends: .gcc-x86-64-build-debug
>    variables:
>      CONTAINER: alpine:3.18
> +    QEMU: y

Could you use a different name for the variable? This is exposed as an
environment variable, it could easily be used in a build system already,
like used to store a path to a QEMU to use.

We don't really have a name space for CI variable, but maybe
BUILD_QEMU or BUILD_QEMU_XEN would be less likely to clash with other
usages.

Otherwise patch looks fine.

Cheers,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:29:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:29:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813341.1226237 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syD5q-00067X-RV; Tue, 08 Oct 2024 16:29:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813341.1226237; Tue, 08 Oct 2024 16: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 1syD5q-00067Q-Om; Tue, 08 Oct 2024 16:29:50 +0000
Received: by outflank-mailman (input) for mailman id 813341;
 Tue, 08 Oct 2024 16:29: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=LJPt=RE=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syD5p-00067K-6W
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:29:49 +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 88e8e9f6-8592-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 18:29:48 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c91756c9easo764619a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 09:29:48 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994d5745e2sm351330866b.23.2024.10.08.09.29.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 09:29:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 88e8e9f6-8592-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728404987; x=1729009787; 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=pTxcc4xj04P69n4EHuKzOnZzdFd2qrgs1WXgu87kEDI=;
        b=XjH8kKOt05ER7ut3aqJlKfWsQbeO+z2xRZo1bgor5yAbmH6HGa8rh8/erNw0C8PaAB
         A5qedwkzxrvp/q+zd2UvGQROlo4YNQ/PuG0euV4VMMS/6ShaO2jDBt/LUR73crnpoy0x
         2v8D1Am8UOZ06sMahVvXdeIUWq8TAuAED5RE8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728404987; x=1729009787;
        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=pTxcc4xj04P69n4EHuKzOnZzdFd2qrgs1WXgu87kEDI=;
        b=CtLaWgtqySZjDtumVO8idJJ6BJClarhtiR1G6OSCpig/OJeKzDDgKe5pkpQL4wJoaY
         v06Efl3LR8r+qK5IBAv/ZoNSw+DQR9G3VWiBeiMBdvJmpuA36WCI8B+xNijC8P+C95Fi
         8C/L19Xuo1DAImN/yHmNApTxIWTcTpZmhkThUhEdlD9RR8X1j6w+zX7OcRQeBlFm/2l9
         dMSWjpq04HdRDgy2+/i+dq8PM88ebyW2bdmPbi7eJhnNzEf/MNUn8ggpuNS5Mxp2nEMD
         gddGVCFHBI5Wn5r2MYo+ZmYZlYXY/JMr71jOXs7WLJaP21NamsWfof4u9vYYkeltkGU5
         kA0Q==
X-Gm-Message-State: AOJu0YwdNpkWTyFkYCUw5QazHJpwajgZ/IVXPxdN0c0+LoV9QFeE2Vh/
	wBcZQ6XoBeL54Ywka1fL774p4d/LgDkxVM98Z0sjO43c9MftIKbGHzuMuMKHSsg=
X-Google-Smtp-Source: AGHT+IEyzAa3GDGP91rK8+qcJoZdhoPbfTS8HuTgU5v98VXh+K1or+pFD7PSXrQwmcCZOjsxIe+cfw==
X-Received: by 2002:a17:907:3f89:b0:a8d:42ec:e65d with SMTP id a640c23a62f3a-a99678524e3mr432423566b.7.1728404987544;
        Tue, 08 Oct 2024 09:29:47 -0700 (PDT)
Message-ID: <056fbcc4-71f1-4ce1-aae6-bb3a7192aefb@citrix.com>
Date: Tue, 8 Oct 2024 17:29:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CI: Stop building QEMU in general
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241008155023.2571517-1-andrew.cooper3@citrix.com>
 <ZwVddI62BTAtMUls@l14>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZwVddI62BTAtMUls@l14>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08/10/2024 5:27 pm, Anthony PERARD wrote:
> On Tue, Oct 08, 2024 at 04:50:23PM +0100, Andrew Cooper wrote:
>> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
>> index c668736bdc2f..c83e0bdbe119 100644
>> --- a/automation/gitlab-ci/build.yaml
>> +++ b/automation/gitlab-ci/build.yaml
>> @@ -339,6 +339,7 @@ alpine-3.18-gcc-debug:
>>    extends: .gcc-x86-64-build-debug
>>    variables:
>>      CONTAINER: alpine:3.18
>> +    QEMU: y
> Could you use a different name for the variable? This is exposed as an
> environment variable, it could easily be used in a build system already,
> like used to store a path to a QEMU to use.
>
> We don't really have a name space for CI variable, but maybe
> BUILD_QEMU or BUILD_QEMU_XEN would be less likely to clash with other
> usages.
>
> Otherwise patch looks fine.

A can switch to BUILD_QEMU, but I don't plan to repost just for that.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:30:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:30:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813346.1226247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syD6O-0007XT-6U; Tue, 08 Oct 2024 16:30:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813346.1226247; Tue, 08 Oct 2024 16:30: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 1syD6O-0007XM-3n; Tue, 08 Oct 2024 16:30:24 +0000
Received: by outflank-mailman (input) for mailman id 813346;
 Tue, 08 Oct 2024 16:30: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syD6M-0007Sr-CG
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:30:22 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20609.outbound.protection.outlook.com
 [2a01:111:f403:2405::609])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9bad5147-8592-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 18:30:20 +0200 (CEST)
Received: from BY1P220CA0008.NAMP220.PROD.OUTLOOK.COM (2603:10b6:a03:59d::16)
 by CH2PR12MB4230.namprd12.prod.outlook.com (2603:10b6:610:aa::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 16:30:14 +0000
Received: from MWH0EPF000971E2.namprd02.prod.outlook.com
 (2603:10b6:a03:59d:cafe::6a) by BY1P220CA0008.outlook.office365.com
 (2603:10b6:a03:59d::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 16:30:14 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MWH0EPF000971E2.mail.protection.outlook.com (10.167.243.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 16:30:13 +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.39; Tue, 8 Oct
 2024 11:30:12 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 11:30:11 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9bad5147-8592-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=cY0xgKxYkkKPtDglhENBgDQeUeH3RF90m9AJP71EehYgsTvL26YqS+zG22paDSDsfI0i8VuJdoWrfjKNvRh1bfAyEzGVC0llwjapqlbEh/JwrEltEEgfTiGjmhJ7XxbZ9TE+xDfgeHLRTGSOXzRyu9qGZdSgeXxFpxD+tkKy6YLC5ym6tMXrw4QwfD0h2djADOeaAFE93KRARprV0a80ceFSlnq4hAD3+Ec1fqazOgMdH6ETCRwk4Z2Xnx2jhQJYyl5OmEsoK21+ZQFfzCXnhwsiL92bFTcK4AsMq9z9BQZIWuokNd08txMdZTljKkZ+Uyyo4QAFPSHfhuRXY8HkHA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=YMUvyLVe2kMup0AIem0Loc5lmXdKnOLYU10xBVXeBcg=;
 b=sB+Q0sA2aobpQn+fNg5E319Iyn7CNL6C1lGscDvC1PkLMKJyotLMJervNz0POzFmUG6iG8HfFepW+d6qZKXjFAKv0XbMkinlumRFTzcBE/bzSa6XG4zDABo9PrC0AdPxRyJEoTwD+DcJ2dHhazj8/Y7FQ+0pFEiTrUKSKihLyVnlZ1sWwHUDDoQPtEfjzz1ROTgSQWBEpBalwHxgzpaEmeNjyfv/0DtVF4p3+rzI46z6HnrREta/6IbW3PoxlmacDZ3OKgqasxhVC06CgOhyabTw0RnrVrZpQDYsbxSyP9kiMT6q+xxNZAvXQLV4S/LqL7nb8w08kIJbLUV8zZwdog==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=YMUvyLVe2kMup0AIem0Loc5lmXdKnOLYU10xBVXeBcg=;
 b=F7g0SVaOODNmTSqB4DeNtGCr/zUiWvAJ68TP2JjM84uBICFntNwds7gngsBBaBdCngstTYCmR/cXOfSb29zO2cxfxTf3aoSEZ/vr8VqOOZ0acwCH0kSFtL91v7kWG2TQbFyuiMNcbgZdhxog3CMkSBi17rbpV+XOfkyTXAspPlE=
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: <66738e0d-2a66-4547-8674-043b54b50ae6@amd.com>
Date: Tue, 8 Oct 2024 12:30:09 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 22/44] x86/boot: remove module_map usage from microcode
 loading
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-23-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-23-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000971E2:EE_|CH2PR12MB4230:EE_
X-MS-Office365-Filtering-Correlation-Id: 5a1d92cb-2db3-412a-6355-08dce7b67c76
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?S2piS3VidWhXKzVLRmkrUHV5amJDMHJzWWpKRmtCZ1ZTQ1NydGhXbWFtbWpj?=
 =?utf-8?B?VXVibXBuK1kvdmdsWk5QTnBjTlUyUENHVGpWZzZydEJEaER2RjdUTDZDeExq?=
 =?utf-8?B?ZkFPL3RqdWU4Q1ZpZlVISjlqL1VQMUNGNlYxckNnck9PVUREdWxVY3JTQ2Fv?=
 =?utf-8?B?dldaQ1NMc1UvTmYzamFzZGU0RlZjbDAvQ2Y1RXRIWVpWWmRCZUlQcVZMdTVB?=
 =?utf-8?B?MENUcHprVEFIRThmNDEycFVSYndQSnRJU0NlaVR1UWhJdWJBaVpYWFNyV3Y3?=
 =?utf-8?B?OG5YRVhJK3AzYlhQbGl6WDQvWDh2d3dNUWo4ME9EUzlTSjhuRGxnNWRVN1JG?=
 =?utf-8?B?T0RJNU43Tyt2c3B2akZJampVdjJaZDkyUERZR015S0w5Q2p1M2JNY2tGRFBG?=
 =?utf-8?B?WXJLVUl6YUVLYytDb3FHUkwvUUhETkdzOXFnb1ZXeVI3UTB6Z0ZDQk44Y3Ft?=
 =?utf-8?B?WkRWZGM2MXhNN3ZLbW5MVW1zZDdOMHFsOGd2eW9xRlFJbnBzcGxwYlFzTkEw?=
 =?utf-8?B?QkNtOVk3eHQxSVF4YXdEWVFvRlBlTW82cUJuM2FUaUVSekFETUhNamY2ZlVm?=
 =?utf-8?B?VSt0RmVTZUVKWExXM2ZFckZId1lvb2Z4eWMxZHE3YmdYcDlBS3YxOVNQZTNu?=
 =?utf-8?B?UWlINGRYYlduTVRTakJjckdOeU5admZwLyt1RVhGckxVSU9tUUNZUldvZzk1?=
 =?utf-8?B?bXR2RUt6THU4bjFaL0MzeXg2dGhTZk5ad3JrSlVjTThVNW1MRE1hRTlFWkxZ?=
 =?utf-8?B?TnhjSUlCbWhobzdhVytCeGZMRElJVnpxVGpkQUZxUlFDRzJHbDdvdlZhVjJ3?=
 =?utf-8?B?amg4NS9rYjRtVWtxaEU5RUl1dGdZVXUxQ0E1enRnZ2tDMFlud0tZWWJQVHcy?=
 =?utf-8?B?ZXNSUlBxUkhxQVdGeEM5c2J5Ly8rdzA2dmhTeDJjUklxVEVBRTA4UXd0NTlL?=
 =?utf-8?B?ekZKN1I3VGtHS29tMnZUbTBxb04vK2pVM2FJMDVtSk4zY2lOQzVvc2U4L08w?=
 =?utf-8?B?akFGNCtuZkJpRWs2RWFocTM0ZTdnVHk4YS9GQWFwbzBHNHo1ZlRTWUR0ejda?=
 =?utf-8?B?S00vQWhXWHRwVXR5ZVRHSllkVXQ1dGxLV2NiNUUvMHMxdEJ5emhoVm1nN1FD?=
 =?utf-8?B?bEM3K09KTXhlYlZaZW9tZkVKN0NISXp0NCtvZkQ2RWQ2Q1lOUFhTdWVVS2Zw?=
 =?utf-8?B?TjRwTmZhUy9kQlc1VWdDWVU1N0RxZmJmcXMvek14RzNBRjFpN0JoZUMrdk5l?=
 =?utf-8?B?NFU4YUR5UDhOQXliUWRBQjVFaFNOdkplREFTZU9Pb0JoZGduTFBtdk5TY0dJ?=
 =?utf-8?B?RGthamZ1SGxpbmxqa2ZWM1FiYkI0SkVoWWx3NmR4emVtcjhXUDFlcjBraHRM?=
 =?utf-8?B?OW9tZllkamdzNWFxZ1FjYkxjMjhLdG1rN0hObERTUEJMTGhpaUFlQ0FjajN6?=
 =?utf-8?B?ZEVCTXBhekN1eVdzMVQxaUxPWm1LMXI4NEtibkZpYkNUOUdaaURMR1Fwb0Nz?=
 =?utf-8?B?L1d5WStCQkpQeXR0TnZlZ29QZ09zQVorL0piSTQxNUliUlU3Nnp4NEhtUCtu?=
 =?utf-8?B?ejdLbU1iUE9wSmhvbXM3TUdqMjh3ZlNwSmhKcEUzVkd3c0dmZWhVN1BVSFcr?=
 =?utf-8?B?ZVRiaEZEZ3VlYlRZV0NRSXF6Nk0wR2VqK2kzcnhJM3d2VTVFM0VBNU4wUG92?=
 =?utf-8?B?c2hiOXVVUUtYZGoyR1pNRzBMaUUwWGlZZDhxd0orOWNzSDZWNEJlT21PZzIw?=
 =?utf-8?B?ekE4WUg3RXpaZ3B2cUVDMXE1bVRRZ3BrZlVsRFAvR083ZHpNVFVKL2tzYTRQ?=
 =?utf-8?B?UG1QWWozcHBiNHVpOVRWellLVWRHSlpNYllVYkUwaGJaK2tEOUFmaFNLNllu?=
 =?utf-8?Q?EuF3hSmYm5Bcu?=
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:(13230040)(376014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 16:30:13.6871
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5a1d92cb-2db3-412a-6355-08dce7b67c76
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:
	MWH0EPF000971E2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4230

On 2024-10-06 17:49, Daniel P. Smith wrote:
> With all consumers of module_map converted, remove usage of it
> by the microcode loading logic.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

> @@ -202,19 +201,18 @@ static void __init microcode_scan_module(
>       }
>   }
>   
> -static void __init microcode_grab_module(
> -    unsigned long *module_map, struct boot_info *bi)
> +static void __init microcode_grab_module(struct boot_info *bi)
>   {
>       if ( ucode_mod_idx < 0 )
>           ucode_mod_idx += bi->nr_modules;
>       if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
> -         !__test_and_clear_bit(ucode_mod_idx, module_map) )
> +         (bi->mods[ucode_mod_idx].type != BOOTMOD_UNKNOWN) )

Just
          bi->mods[ucode_mod_idx].type != BOOTMOD_UNKNOWN )

With that:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:36:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:36:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813356.1226257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syDCB-0008CQ-RY; Tue, 08 Oct 2024 16:36:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813356.1226257; Tue, 08 Oct 2024 16:36: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 1syDCB-0008CJ-Nr; Tue, 08 Oct 2024 16:36:23 +0000
Received: by outflank-mailman (input) for mailman id 813356;
 Tue, 08 Oct 2024 16:36: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syDC9-0008CD-SW
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:36:21 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20629.outbound.protection.outlook.com
 [2a01:111:f403:2415::629])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 71cd1d73-8593-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 18:36:20 +0200 (CEST)
Received: from PH8PR07CA0023.namprd07.prod.outlook.com (2603:10b6:510:2cd::11)
 by LV2PR12MB5727.namprd12.prod.outlook.com (2603:10b6:408:17d::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 16:36:16 +0000
Received: from CY4PEPF0000EE35.namprd05.prod.outlook.com
 (2603:10b6:510:2cd:cafe::f5) by PH8PR07CA0023.outlook.office365.com
 (2603:10b6:510:2cd::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 16:36:16 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000EE35.mail.protection.outlook.com (10.167.242.41) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 16:36:16 +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.39; Tue, 8 Oct
 2024 11:36:14 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 11:36:13 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 71cd1d73-8593-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=uyZTRG4dfYsrUdfsfuQ7ZrzwcYeTbpPwfBct7CEztZCpwoOspfE9TF1joGTw0o5A+tFfhlDxms3CPxQSXbo4UPyNZ1m+F4Ri8xB5jBqWaWdbxakf+0JjKYoc56W+kGhVVUyHBMqoJqA5vjpjK7Z7yb4j03Bf1KQMhjtia7MDaFL+zgbeCktiMWyi05FTwz0bI5i3saOrp615ymzhsJAdlx87StO6yj1vuKGfjlu/B5L8ZxuP/i3x3w6F3jADsE94OKNa2Ejz5srqcXc3rbpWgQTgTkJ9RoicsK91Re2CKpzeWSKFTO9aGHiixMvHHKkSVpQB+rkKnHwxyKHD/KQ2Hw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=bXk+5KIqlCX29ckY5PaWaypBYZsl6Lpz0dLtxesMdLc=;
 b=Le0o7d/OjI0Yr7IO4xU9z7tTILAd7Ln1105zAvDGJUJL6P200ztoxdRE/gyP8DYMwP/IK71WpbhLlX5oPhDf79StOyOCYCDkJ5u+hgOZoifJYJM1frW6rHxwvuDg4aNbYhKLfudGfRs62hwCbMt+E4Tq5+dWce0VtB5g6CFUXLvkMZ9eW6lDQPl8H1mPISGielY8GtM7AgdBBnfkUpvKHeGHA0eKr+hwMfmjkSdWsU6T6m3hJLYYBqJqCfJ2jROJj822ugFGA3HKATjJHkleVZKFIQL68DvV6t9hMKXFTChIfFLoZEAAw276yZz7/BUCVW8ASp45r7mqTuXLYndFjw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=bXk+5KIqlCX29ckY5PaWaypBYZsl6Lpz0dLtxesMdLc=;
 b=ga7RW62ixsSYQ4hSJqBtY0HW/2e0DJ1zEf3ODSSOkKj1nWaK9hkfsOwI3v6a3brOVmZx4sAw3OflDkdPvw2r2XiNKmWDRB1Q6GRNeSCm3eOldSoF3xsBljIrzVQ1EAff5AtVStxR8Eq0OXPuOI6LQJTj4lsEAgbLcRadXUUPleg=
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: <fc316f55-4f4e-4292-9b3f-90f4b0750b2b@amd.com>
Date: Tue, 8 Oct 2024 12:36:15 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 23/44] x86/boot: remove module_map usage from xsm
 policy loading
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-24-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-24-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE35:EE_|LV2PR12MB5727:EE_
X-MS-Office365-Filtering-Correlation-Id: 967f2901-24ec-4e87-acd5-08dce7b7548b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cVU4RzBWdUdDWHgzbnoyWWxlNmpUb2FJRkRQK0hITDFMSVcvRGMyWld3T3dz?=
 =?utf-8?B?TTJsYU5Iemc1Sm81K3JSMlo2akx5bE1jaGd5WVNSa1F1MXNZUHljL1ZPWGdn?=
 =?utf-8?B?ZTVrekFvTUhzMkt2cmlHeDMrWFgzSnRlOHY2NjQ0TGxvVEJKRklUREVWdG1i?=
 =?utf-8?B?RmJBRk9zN3hiN3lvUVlVMG9qa1dKYzU4UU95L0JvY3hZdGo0QUlYQUFGVGhJ?=
 =?utf-8?B?UzdmVTVOYjlIQk55bW1aaFVEeTN0dm1SbGF4VldoRFhIdjdxU0tPYXhFZjkw?=
 =?utf-8?B?UksvRmJjdHdtcUhHMmUwTnlVQWY5cTlkeW9sa3hvYzAvMm9zQjRwRjNKRG8y?=
 =?utf-8?B?RHkyT1NNeWtCY2NXc3kvWHNBREo4U0RvZCthZWNpMFBIbzNpZmZVYTZqRUp3?=
 =?utf-8?B?OHgraGpXYmJ1KzBCRnRpd2tqVjNUanlrVnZ0QVlBN0RkYzF6S21mb2VCQmhH?=
 =?utf-8?B?b1dJT0EySWZHZklkOE95RnRUbWJuQXc0cGtQWnYvaTBnUW1tdjhHdk5ncnZm?=
 =?utf-8?B?RG5LKzFwWmYvY1QwVzRzM0xONE5KSGQ0dng0L09DV1N3U0Nsak52MityUW90?=
 =?utf-8?B?K0NTN1MzczFhWHdNeTc0bVFYTWo2NjVRK1VFYVdyVjg2S0E0MGFNdCtrMlBi?=
 =?utf-8?B?SCtVM1dwWWpGNGpQdmJ6UlA3VUxVZ250ZUthVVM2dXBNTVNxVHpNQ2JmYzk4?=
 =?utf-8?B?WEpqNkU5UUJFK1FzQ0JEaXhISVhWbi9iazdTdmkyeW1lT2lXNFhuamJBQU5q?=
 =?utf-8?B?eGJmQlRJRDFmVEtrTlJhc09WZ1NkZ0dyZ2hPWVloN0kzVENvNjFZRXVDUU5C?=
 =?utf-8?B?cGlSUjlDSWhvVytvM3NxMFlMdlc4RUczM3NvL3ZRRjdTc1RIdE1UcGZ3Q21B?=
 =?utf-8?B?Z29FZDloaUdjb1FVdHAyWENKYzlnQ3daa1RWK3JaTDZTRkdTQ2FvVjgyL2hy?=
 =?utf-8?B?VVEzeGZ5MjVDeWttOUg0emhCM3RqVFd6SWJWT2ZLL0w0ajZaSjN3UlREQ3Nv?=
 =?utf-8?B?OUYzaHFJak1kRllOOUt1dExQMm9hUnQzNFpCZmw0bXZLZ2FYdEpGdnNneng0?=
 =?utf-8?B?U3d3VHlZREluYWVSaGJXUFVaa3Vhc2hwMEJ2djFIQXdUenBGNUtkcWZOemZS?=
 =?utf-8?B?TnJGVHRFTjAxWGlkeE5kMStMbGNJZENQRnFTVmVabXpHSVd3eDhjQjEyYTFj?=
 =?utf-8?B?bmdKcmJ2WFYvc1JULzVQM1Y1OUFKak95emozTW5NUEVvK3FrUFJEbzlsZnN0?=
 =?utf-8?B?Mm9aYjRiVnFHL3pNbzlXMHRLckt4NVNUTy8yWFloRWNkeVJGK2xROWV5Unkx?=
 =?utf-8?B?OTBCUjRLdmhoYUhWa25kLzY4Wk0rMUNycm5aZnZPRzdrbTVHQXpubnZsbVRC?=
 =?utf-8?B?YldIanRSbXUwelEvME5lL3J5UCs3QWsvYzVzcGNWdXpqWjRtbVNSU3NoQ2RX?=
 =?utf-8?B?Ym9UdzVIQk01azQ5OWtCMjRQSG12eWtaaWRCMFhFL1ZDVU94NzhTdmxNWDVi?=
 =?utf-8?B?MnYxWnRWY0ZQQ1JRTGNQR0cvTVpXUHFhNHpQT3U4RnRsWjlvVitGUUloZjhE?=
 =?utf-8?B?dHJJRThaOEpDTDZ2ZDZsQnhzeUthaXRnMVlKWUtueU5TRHFTMEhHZ1lnQi9w?=
 =?utf-8?B?dGJtRncrNG52M1d5MUxWSVZ3ZldyQTUwSW54NVAzRlBJOW9MSm9sRWYyT3Nt?=
 =?utf-8?B?M2NBUVFwcnlRL1pWaC9mR0Q5VFd1dlFqc0dFTHBkKytweHBDeWxsWHROdGp5?=
 =?utf-8?B?SWpzeUMxbG81bU53by9LVktZVXlPUGYwcHhzUVhuVkpReDFCTEwrV0tpNzlN?=
 =?utf-8?Q?N1eUp2RqViFhxvPNo3mu7hpeCe9mvSHKWIcS8=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 16:36:16.1051
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 967f2901-24ec-4e87-acd5-08dce7b7548b
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:
	CY4PEPF0000EE35.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5727

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c  | 2 +-
>   xen/include/xsm/xsm.h | 9 +++------
>   xen/xsm/xsm_core.c    | 6 ++----
>   xen/xsm/xsm_policy.c  | 5 +----
>   4 files changed, 7 insertions(+), 15 deletions(-)
> 

> diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
> index 921bb254b9d1..a22367a62e93 100644
> --- a/xen/xsm/xsm_policy.c
> +++ b/xen/xsm/xsm_policy.c

> @@ -42,7 +41,6 @@ int __init xsm_multiboot_policy_init(
>   
>       /*
>        * Try all modules and see whichever could be the binary policy.
> -     * Adjust module_map for the module that is the binary policy.
>        */

You can collapse to a single line comment /* ... */

With that:
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

>       for ( i = bi->nr_modules-1; i >= 1; i-- )
>       {


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:38:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:38:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813361.1226267 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syDDj-0001SD-4s; Tue, 08 Oct 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 813361.1226267; Tue, 08 Oct 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 1syDDj-0001S6-23; Tue, 08 Oct 2024 16:37:59 +0000
Received: by outflank-mailman (input) for mailman id 813361;
 Tue, 08 Oct 2024 16:37: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=LJPt=RE=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syDDh-0001QK-W1
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:37:57 +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 ab63150d-8593-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 18:37:55 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c5b9d2195eso8286802a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 09:37:55 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05f395esm4439899a12.84.2024.10.08.09.37.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 09:37:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ab63150d-8593-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728405475; x=1729010275; 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=XjmL/r4d5Sd/+IpvufxYftBunJIivwHALt8Eo002v0c=;
        b=ce76T9mhMvwOql1M5nxKOIPoX/1VoFQCzvngr9D+WjwVNHIy7Q3JVBqyxSyQ3MpHMr
         /XpSjF2TaQB6UD0ApnTKJjXc72YIEhf6saIONOvQ5t7G0gXSAs2yrwPeW3M14+YmVODj
         zJB2j4SLBWsPqKQGrnrSAxqqdg+DNeGVnhqiI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728405475; x=1729010275;
        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=XjmL/r4d5Sd/+IpvufxYftBunJIivwHALt8Eo002v0c=;
        b=gzwU3dtnO1YP7ohIGE1e4tg+qOQRlIgGWIrjnQfKZwA1d4nYrTKvR35f9AUcehfC11
         zvN79ZTjDD7sYlIbpSiMxRPml68kUo2nZQvpcLCtTh//fvW1oEsiw9wJjC6OFx78hdbl
         XL88NYnUmJyI2DpLncxCARvio48t6VsIpn5KV3njgYav0wd9Kq4EVMniG5qqkZNPDmFp
         UPbk3a3Vl5e7ca7UxquCY12MpI85rHqx8q+Cp4k+k51XwoSuidWRgJMS1uqJu8ddAb4o
         5pZaFbVOLCZDZFJI3esrqnlT5wVy1epsxERUQnf6232ZekFjZHmeRjN4pQhruNGu65dB
         895Q==
X-Forwarded-Encrypted: i=1; AJvYcCXcN0OPG86skXJpdSTbR1zjmGvJ2jee79vD49LL+BENORsJd4bQiMDijTwhLbLz2mhLPJdZVubWdFo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx+64gDjnTWbImgxXWJarCRyx5oxIomH77DwJL6EtJ9b6UiRoBR
	K8SsAz4qOFLRfZHc5K2dxIbkkbrN2nIPUjJKBWljM7N4FES6n+LItl818EUM9RU=
X-Google-Smtp-Source: AGHT+IGemjpXF0rdQnU4Bo1OHWKkzx4Zd9O4q/QK+7E5wUyHI2cjjSKexMcWPT4GjlEsPMjQy/lWMA==
X-Received: by 2002:a05:6402:538a:b0:5c5:b9c2:c5bb with SMTP id 4fb4d7f45d1cf-5c8d2e9f05dmr12582165a12.35.1728405474840;
        Tue, 08 Oct 2024 09:37:54 -0700 (PDT)
Message-ID: <8f85c4d2-805b-43ed-926e-732382b7e6b9@citrix.com>
Date: Tue, 8 Oct 2024 17:37:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: restore semicolon after explicit DS prefix
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <cdf93d64-dcc0-4e01-88fe-71145ffff1ff@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <cdf93d64-dcc0-4e01-88fe-71145ffff1ff@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08/10/2024 5:00 pm, Jan Beulich wrote:
> It's not unnecessary (as the earlier commit claimed): The integrated
> assembler of Clang up to 11 complains about an "invalid operand for
> instruction".
>
> Fixes: b42cf31d1165 ("x86: use alternative_input() in cache_flush()")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> --- a/xen/arch/x86/flushtlb.c
> +++ b/xen/arch/x86/flushtlb.c
> @@ -286,7 +286,7 @@ void cache_flush(const void *addr, unsig
>           * + prefix than a clflush + nop, and hence the prefix is added instead
>           * of letting the alternative framework fill the gap by appending nops.
>           */
> -        alternative_input("ds clflush %[p]",
> +        alternative_input("ds; clflush %[p]",

/* Clang-IAS < 12 needs the semicolon */  which can probably fit on the
end of the line.

Or we stop supporting such old versions of Clang/LLVM.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:46:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:46:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813367.1226276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syDMC-0005Ne-Rm; Tue, 08 Oct 2024 16:46:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813367.1226276; Tue, 08 Oct 2024 16:46: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 1syDMC-0005NX-PD; Tue, 08 Oct 2024 16:46:44 +0000
Received: by outflank-mailman (input) for mailman id 813367;
 Tue, 08 Oct 2024 16:46: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syDMB-0005NR-Gl
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:46:43 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2413::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e4cc9323-8594-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 18:46:42 +0200 (CEST)
Received: from CH2PR07CA0036.namprd07.prod.outlook.com (2603:10b6:610:20::49)
 by DM6PR12MB4449.namprd12.prod.outlook.com (2603:10b6:5:2a5::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.21; Tue, 8 Oct
 2024 16:46:37 +0000
Received: from DS3PEPF000099D5.namprd04.prod.outlook.com
 (2603:10b6:610:20:cafe::f7) by CH2PR07CA0036.outlook.office365.com
 (2603:10b6:610:20::49) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 16:46:37 +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.8048.13 via Frontend Transport; Tue, 8 Oct 2024 16:46: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.39; Tue, 8 Oct
 2024 11:46:36 -0500
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.39; Tue, 8 Oct
 2024 11:46:36 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 11:46:35 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e4cc9323-8594-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=QgMbhfFPqV4htO4diNte3ToxVgU5Jl9BbGhoHRXz7zlfA54GsnTurrq2TZN8tBuNHBF/fzhUdoADzHqhN9OLO8Tynufry3trLoV1ikqALaQOQ/RkpHdP2sa0YaBtGcebYh6uNhxUd7XkxzW7ZnewoT/0UaKgyYieeAIvFISJujnUw8Ik5RGEKHxKCxeuUQBeTkcKS4Mh/wW8I/LvjQHhCJO9L+EEE9U41AZ6BBFOcU0DcEKKKYHLoygTSy8lWx8JGkTHyzhB8+gjOaRXWFDHHQQUFifN3lDNrBKIHgjq72DzmTtJUyHATDe4RjtUx0RZEOHuwIIwqqEKEjvxhyLTPA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Ggs4u9f4wToqGfelIm34kwcDn/0okzUSJlpz+rflH78=;
 b=ygAI11rAK1mzdfJa5vYFDqbTkXN+kwh6D2ZCaKVJr3WnZKl4DNf/Och9NzPLIleybxhDMxaD8PZIwHQNlj5YYy/g5jgOpdyzklJQt931LxiNlxupAU+oDBhBcP/FV9tRIBTpllVg+SAJlOqy0yBm+BruXddw6Oejgv3gnRIkvWakrFQCDVcZq7fHwj5aDIT70pmQuNn+bAUSEtfiNzbaE6paf76VFSKneDL1Pj2vv1rBrwyZB66cwaMa1HRPNCHa+6p2N8Lo2HP7TTVcd78gBjNBNq5S4T4r4zXfYqAGRddPA3upzseYmX+yGZtW6UuBUHF2IEU4zgb6GwJIDYZ+zA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=Ggs4u9f4wToqGfelIm34kwcDn/0okzUSJlpz+rflH78=;
 b=a6ehVNn1byXqkHE0BFX2T9yjV6RdoD+Wj8jQVNPQHi7G9k7dxpZN/p0eBSw0vsBjalAsC8Z/5iiTIfwpDqluphxxhIHGLQwcB5UCEhoK4NJ/XODvtylgANpIay1LGUT7kPw1cCZqDuoBYWHGYPE9CTzVMxjKTx3DCUEGTTUED+I=
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: <06618ae2-a7fd-484e-b1d5-87c5065df21c@amd.com>
Date: Tue, 8 Oct 2024 12:46:37 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 24/44] x86/boot: remove module_map usage by ramdisk
 loading
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-25-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-25-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D5:EE_|DM6PR12MB4449:EE_
X-MS-Office365-Filtering-Correlation-Id: 669c3703-66f3-4592-ec5b-08dce7b8c68b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RExnQlhJbCt5VnhEeGVBVEltUklyYjVMaGZua1FJazBIakN0blJYSmRjbUR0?=
 =?utf-8?B?NnpLZ1R5QkJmZENGcjlkRW9NeUNPTXlGeFF2Z0thTzk0TWlVeTRYRFRxT2sy?=
 =?utf-8?B?SUpUQUJCcjB6V0hVa2tGeC9CeHFhL1ltcjdGWng0QlRYWnhiU2hnTmQyWXJO?=
 =?utf-8?B?RUYwZlFOTnlVUy9SdmhkMjJUK2VHYXV3WE5aT0Z4ZzhHcEZiVWRwTDdHcTlQ?=
 =?utf-8?B?OTM3dFJJcWJYN0ZWc3lBTGxZaTFLNHg3VzNXcEFGbHdSSElXNlVXVXBITEFl?=
 =?utf-8?B?cnRqN1Ezci9PUVZ1aEl0bHFxZUs3R2tZN05rc0JUNjVLbmxIRlNYVm9HUEFw?=
 =?utf-8?B?UGZRVXJCdGtLYWJxODF0elFyMnNlVVczVFdHN0VYVklZN3NIQjVKcXNBWVFF?=
 =?utf-8?B?eUZXb2UrNTdGM0VoZm81NUFWWFRLenFRM1BCNnZHRC9WWFhqQ2dpb05vRU9Z?=
 =?utf-8?B?d0VQRXd4RGVzN1VkVEhEa2phNi9uYkNJWVU4WUZ0bGRMaTdkWG5uWFZDUE5C?=
 =?utf-8?B?THBTNjEreXlkV3paYjEzRm5qcGRyTlpOU05STEhqWUI4dTFuQ3lQSkxTTTBm?=
 =?utf-8?B?bmhJVzFmNlJONFl6Tlo3YVBLcmUvN0djNUE2UG1PQXlDb3FqR0FRYVJKNUhQ?=
 =?utf-8?B?VU5YRUlTUjNyZjJBUmQvUXI4c1cyYmRQY3hTSG9SaDNsdmp6U0Y2cnQxRnB2?=
 =?utf-8?B?WGc3ZzFjREhMK3N6T2dCYmJZeGM3ZFJ6SjloUEZ3WXc0V2Z0dGliZFhuaEZY?=
 =?utf-8?B?OWl2engyazJjSW9odlRXNWc5SUppY0g0ejV4WlBkR0JVYWdoajFEUEJvR3hw?=
 =?utf-8?B?QS9waFpoemlFeDRJOG1kV1pLc2Z2ci9CYjU2R1VRRzlqSm5Nd0xoeUkvMHZV?=
 =?utf-8?B?aVFxcXFyMVNUNXpoWkJEalRpUUlkczRqYVNEZmJ5WVdBdUZ0WitQZkI4dE1w?=
 =?utf-8?B?V2E1Sm00Mk5Ub0Vkem10QjJuWjhRYUE3WjdLMmI2YXRhOE1GMGpWdHZsUEIw?=
 =?utf-8?B?WnpiTU90Z1pUN3pqSzR6dzFUQTF4WHNPWFhiSjlZLzlpcHduS2lUWW14UFk1?=
 =?utf-8?B?cEdhRlkyTVVhTHVHZzBwTWdnMmF6YTFnQU5hWERScVVTUEMvWkUycTBPWERF?=
 =?utf-8?B?VDhFemFpcnFqRWsya0NLc2ltMHg5MzRMUWxxRVVGR1Bab0Q0Sm5tUlllbWZ0?=
 =?utf-8?B?MVV1UTk0cjhHRERXNnRmeHFVTUdNSXZGWElYbXRGOGYwZmZXUlRod3htNDVY?=
 =?utf-8?B?YnM3TzNWM0Y5dVhQMmcvMUFwYUovQUk0dUFBaHdzWWlEdU4wQjcvSlFIYkh0?=
 =?utf-8?B?bjNEdGwzOVVnUnc4MjRrSGZJcXBRV01WYzcvdEh4YXNYQ1ZxamFpU0FSTE9W?=
 =?utf-8?B?d1MxOVRoLy95L1ViTjE5b24yMVRYRHZTRTlSaktTY2sycGFXTWVNR3VlWlo4?=
 =?utf-8?B?SFQvemRPTitmYVg1bjRwL0RBaFhNcERNVTl5UGdERTBkWVY2WjJJeS9OVVNV?=
 =?utf-8?B?NWllS1hNdEtFWUtMWE9XV1dtM004Uk5STmlQODB5OVJMREdTR0JVWkpSZlpH?=
 =?utf-8?B?VFBCbGxkSkFQTjdrRjMraE5CeGtRRVlXRnJKamd4ZFQ4TzcrSENCcWIxS3Bv?=
 =?utf-8?B?Y1doclYydDh2dTVDazBHRGtPVW9FY0ZSaTZIL0dscnlCSWhvQ1RrelFUanRt?=
 =?utf-8?B?cWk3QUt5aFR4L3l3SVF6RHBrV1pUREZFU2lIV2I5RlpOR0RJblEyWWpIMFh1?=
 =?utf-8?B?SHM3ZVQybXVKM2xQYldobmNUL0FTSkkrSEhkY05ablNQSG1EcHRkWFFKTzc2?=
 =?utf-8?B?QUx1RlAwN1kvVUxvcG50RzhvVU1UWFpXRys5MjN3NWpndXE4ZzBGWkc5NFN5?=
 =?utf-8?Q?BBMjleUtGmk2c?=
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:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 16:46:36.9106
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 669c3703-66f3-4592-ec5b-08dce7b8c68b
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: DM6PR12MB4449

On 2024-10-06 17:49, Daniel P. Smith wrote:
> The ramdisk loading is the last user of module_map, remove
> its usage and any remaining remnants of module_map.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 11 +++++------
>   1 file changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index b0946216ea3f..0d2ee19998aa 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1037,7 +1037,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>       struct boot_info *bi;
>       multiboot_info_t *mbi;
>       module_t *mod;
> -    unsigned long nr_pages, raw_max_page, module_map[1];
> +    unsigned long nr_pages, raw_max_page;
>       int i, j, e820_warn = 0, bytes = 0;
>       unsigned long eb_start, eb_end;
>       bool acpi_boot_table_init_done = false, relocated = false;
> @@ -1187,15 +1187,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>           panic("dom0 kernel not specified. Check bootloader configuration\n");
>   
>       /* Check that we don't have a silly number of modules. */
> -    if ( bi->nr_modules > sizeof(module_map) * 8 )
> +    if ( bi->nr_modules > MAX_NR_BOOTMODS + 1 )

Don't you want to check MAX_NR_BOOTMODS, to keep the last module for Xen 
itself?

Regards,
Jason

>       {
> -        bi->nr_modules = sizeof(module_map) * 8;
> -        printk("Excessive boot modules - using the first %u only\n",
> +        bi->nr_modules = MAX_NR_BOOTMODS + 1;
> +        printk("Excessive multiboot modules - using the first %u only\n",
>                  bi->nr_modules);
>       }
>   
> -    bitmap_fill(module_map, bi->nr_modules);
> -    __clear_bit(0, module_map); /* Dom0 kernel is always first */
> +    /* Dom0 kernel is always first */
>       bi->mods[0].type = BOOTMOD_KERNEL;
>       bi->mods[0].flags |= BOOTMOD_FLAG_X86_CONSUMED;
>   


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:52:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:52:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813375.1226286 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syDRp-0001Aq-IF; Tue, 08 Oct 2024 16:52:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813375.1226286; Tue, 08 Oct 2024 16:52: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 1syDRp-0001Aj-FH; Tue, 08 Oct 2024 16:52:33 +0000
Received: by outflank-mailman (input) for mailman id 813375;
 Tue, 08 Oct 2024 16:52: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syDRo-0001Ad-ME
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:52:32 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on2061e.outbound.protection.outlook.com
 [2a01:111:f403:2409::61e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b4355acf-8595-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 18:52:30 +0200 (CEST)
Received: from PH8PR21CA0004.namprd21.prod.outlook.com (2603:10b6:510:2ce::11)
 by PH7PR12MB9222.namprd12.prod.outlook.com (2603:10b6:510:2ef::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 16:52:25 +0000
Received: from SN1PEPF000397B1.namprd05.prod.outlook.com
 (2603:10b6:510:2ce:cafe::80) by PH8PR21CA0004.outlook.office365.com
 (2603:10b6:510:2ce::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.3 via Frontend
 Transport; Tue, 8 Oct 2024 16:52:25 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SN1PEPF000397B1.mail.protection.outlook.com (10.167.248.55) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 16:52:25 +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.39; Tue, 8 Oct
 2024 11:52:24 -0500
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.39; Tue, 8 Oct
 2024 11:52:24 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 11:52:23 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b4355acf-8595-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=zJQD4dEe9ArVHGtVT76Yl/3am9V/vivacUidyh9pVBkMtK/NGffOVpmiyboWYSwzPOmnV8gmL4Shfn7KCD5Ls55YKSOoF0sFsJhe9W9nYCET2Ftt4o7L6aEygo9eegHE4H7J6grABo3GOJz0u9ZS54opOV9kChuLQHIib+inBl2moTjfrrKy3hbhGRhFJqvjTdKnvteR6o+9LZ1qco85LFQWBK9ZomU1K8/dnOVZ91Xkm7OgGZOCluMuJwAkE79VG8/ZMm5zKy6F8HSn5omfcMEWR1xSClYyaKffR7SZNAyTzUIKWE3kbOIU6yPukEB6QHNi9LGQO4W/mvzkkA+9dw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=IBYWX9WX+30T2jZasXYno7vXPVVwV0H7pTZ1vp4nrF4=;
 b=XXXflTmgyXSeZ283T8EloMyX9KJ6m4QdWU/YK5R/deb1GnAiJmkX9N17CNtmDfbKouMDsojJxjAeRE03/Qbru7uXBfZfGJRFSgYPNboGX503oB7MG7s/RL3vy5rz+p52otcEhTkOwqOOt1Wb4cR7t3XQx+i5mvKH17d4jfnnw/Ha9J25bv1kaKbZFlnPDUk5idkSno3MUt0vGkHQcdO1ZDzkn9VxaZgZ6Whh6WQeAAmA7NrRgvX17/K3Kd2O/1c+P1OKvFboT2ZUVnSkCzb1xhGG1NQSRensmh4Hit9JNMUmTIdLsB51vCU2VX3g++VcE5D6NQLNkIBk1bBeOYb0DA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=IBYWX9WX+30T2jZasXYno7vXPVVwV0H7pTZ1vp4nrF4=;
 b=MfaCSZ6VprwnPkZMlE+/VDaPe2Vk7PKGSjLP67gl56aemF0gcT0UfQyZBO94A1v4QFvzpWQhGl6jxn5gWu7k3EAzEHgEh5mwfpvxmclitFeTi1lhpJa2sMqnpeSU7tZViTGse8luhykFXhTvNA4hsWyn/Xm1swG1jOltl61utPw=
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: <1bc18234-2e50-467d-875a-3968165f5570@amd.com>
Date: Tue, 8 Oct 2024 12:52:25 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 25/44] x86/boot: convert create_dom0 to use boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-26-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-26-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397B1:EE_|PH7PR12MB9222:EE_
X-MS-Office365-Filtering-Correlation-Id: dc4e9e94-4cf3-41f5-3a36-08dce7b9962e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ai92VkVxZ1B1M2RTbDF3V1lndGFNejB3UldLaUNyQW1yMnpzaUt2N2MzWUlm?=
 =?utf-8?B?WlQ2dWpaNW5XeWYyODRRSy9GTytGbE4wbEVTbFBIMm5ha200K3JqVlM0TzQ4?=
 =?utf-8?B?MWtwaHA4MUdOVDBSK1VRMWs4QmJyTU9DVHJLWS9CREF4SzFmWXRrUTJoVDJG?=
 =?utf-8?B?MUh4MHhadS8wTFlaUUZOSHBMUUtFU1RoSkhTWE5NMkNndnIwNitNZktvancz?=
 =?utf-8?B?TW1odENzTUQ5bHVkd0hHZlIvZC92OHBHL3UzUnl1OE5zcjJLV3hjMStxWTIz?=
 =?utf-8?B?RWxTai9IR29FMzFaQVFJRnhMZWJGTHJhZnNQekR2czhRYjlqMVpwbElGU2hr?=
 =?utf-8?B?QktkYjZhRHZZUGZLWWljZnFFYjJwcFFyN0pTTmdTclpnQUZ4TS9RcTZhbUFj?=
 =?utf-8?B?RW16UXEwVGFmb2paYy8rMmFkaU1ra3Q4WjR3OWJZWE9sVFltajZXUXlNRmpt?=
 =?utf-8?B?anZyUzZnbS9pdGpIdWtXaTlYeFJITnhMWEtCLzV6QUN0ZEVLWm9Cak5mWjNr?=
 =?utf-8?B?aUFkVUlHdkxkRmNKUzVVQnRoUjR1Y1RJc2ZtQ0hDbWZ5SlV1ZVBJR1ByL0lv?=
 =?utf-8?B?YklhY0xaSGtSL2dPckpZTlc0aGVxRjl1Tjk5Q2tXYXoyYTVWejJaa2cvQzF4?=
 =?utf-8?B?Z3BZMjQzK1pmOFlXWXU0TUNySlVCTDJ2K1c4WTN0L0xOZ0RLSEdJcWhMVDB6?=
 =?utf-8?B?VzM3YXNuVHBZcFZKTlpIVkxIY09Ebjd0T2xlSWhWUlV0U2RReFJFV0JEK3RM?=
 =?utf-8?B?Z1pERUl5VmFTWkxHNEU3cjNSYUsxZzBEZWlCejhzSXhyMzB5ajZPejhscjBB?=
 =?utf-8?B?QlJyNHk5Qjcyd0M0dW1DckpuSTM1OW95L3UrV3M4SDdXR3FiUHlVNGR4bHFI?=
 =?utf-8?B?NFZDMEVrdWxrakFFTlRhaHVQMVB2Q3RWdnZYUzg3cG9rdk9hZDVsZVBPb3Nv?=
 =?utf-8?B?T3hVaEg2RzJHTkZ6VnFnN29Lbk5jTmgyRkVLRVM1ZEdzci9wbkRWaElwYzBM?=
 =?utf-8?B?OWt4aGxLY0FWa0xDbUdMVVpXQXdSb0VyZGlmNHNTWWlsSmdVYU0yOHVsTVNo?=
 =?utf-8?B?K0tXRkpwc2FjTk1hdnBjRFBJTy9RRW1KVHJ6eWpWdnlEU0ptSWlCcVA1SVVq?=
 =?utf-8?B?aXJ4QmxCMXhWRkkxY3FvQWJ4K2RwcTFDd2xKVHpmRWVPTWhlTDJQT1lXVG1s?=
 =?utf-8?B?RGJDK1hHWHp2RlNsV1JXZDgzSVVBQW5rOWRPQU9taTFDbHBkZlh4RVN5dnhn?=
 =?utf-8?B?aFJzOFQwbWxzS1pvRTQ5SjZRUmoyQjlRbC9zVWw2RHFBM1dCRXg3NHlYS0Fi?=
 =?utf-8?B?T1BPcTl6WldUSFBLK3ZOTHQ5SnFZN0RlQWhBMGhJWEZhOTNIMEVDWlphSGFX?=
 =?utf-8?B?UkkrUkF3VmRmMCtSLzZ5a01DMWcrNG02bjYvalRCakF2T2JtQmZsTEVHQVE1?=
 =?utf-8?B?dEFWUVpDT29HQVF6UkFKekFSZGs3ci9FSmtjaXFOOFgvK0MwV1lXL05PcXhj?=
 =?utf-8?B?cVd5SFkwTUk1OWlERElXbDFpT1VSK0Yzc21CWmI2aThaaHo0ajNRTTc0NzNI?=
 =?utf-8?B?OFhvOWdGTzEvK05mZElLUDVlQWlNN1FqZ00zMGUvNkZHdUpQTXdyWmJITW4v?=
 =?utf-8?B?NzVHU2c2WENCV3FsTFQxUGkxWDFNVnBjUmZwMWZUUWI3dHJvM3RTaWE0aUxK?=
 =?utf-8?B?U2lJaG9tamgwU1NOTG45cktnMTNURVNsa2lvQ0xENVdJRk1EajlvenFxMUVh?=
 =?utf-8?B?NmF3S05sUXdwZWdScDlGTWM2QUh4Q3FReUk2OXQ3NE80SWhQVjdVdVlybXo2?=
 =?utf-8?Q?zH79kgkXeFJDyM9NPFa2HRD1TRtoSYgP4MdRQ=3D?=
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:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 16:52:25.3720
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dc4e9e94-4cf3-41f5-3a36-08dce7b9962e
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:
	SN1PEPF000397B1.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9222

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This commit changes create_dom0 to no longer take the individual components and
> take struct boot_info instead. Internally, it is changed to locate the kernel
> and ramdisk details from struct boot_info.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 25 ++++++++++++++++---------
>   1 file changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 0d2ee19998aa..c2bcddc50990 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -946,10 +946,8 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
>       return n;
>   }
>   
> -static struct domain *__init create_dom0(const module_t *image,
> -                                         unsigned long headroom,
> -                                         module_t *initrd, const char *kextra,
> -                                         const char *loader)
> +static struct domain *__init create_dom0(const struct boot_info *bi,
> +                                         const char *kextra)
>   {
>       static char __initdata cmdline[MAX_GUEST_CMDLINE];
>   
> @@ -964,9 +962,21 @@ static struct domain *__init create_dom0(const module_t *image,
>               .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
>           },
>       };
> +    int headroom, mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);

I think headroom should stay unsigned long, which matches struct 
boot_module.

With that

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 16:57:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 16:57:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813380.1226297 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syDWQ-0003NB-3o; Tue, 08 Oct 2024 16:57:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813380.1226297; Tue, 08 Oct 2024 16:57: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 1syDWQ-0003N4-17; Tue, 08 Oct 2024 16:57:18 +0000
Received: by outflank-mailman (input) for mailman id 813380;
 Tue, 08 Oct 2024 16:57: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syDWO-0003Ex-Ae
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 16:57:16 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20610.outbound.protection.outlook.com
 [2a01:111:f403:2414::610])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5e567248-8596-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 18:57:14 +0200 (CEST)
Received: from BN0PR04CA0148.namprd04.prod.outlook.com (2603:10b6:408:ed::33)
 by CYXPR12MB9388.namprd12.prod.outlook.com (2603:10b6:930:e8::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 16:57:07 +0000
Received: from BL02EPF0001A0FF.namprd03.prod.outlook.com
 (2603:10b6:408:ed:cafe::d) by BN0PR04CA0148.outlook.office365.com
 (2603:10b6:408:ed::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 16:57:06 +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.8048.13 via Frontend Transport; Tue, 8 Oct 2024 16:57:06 +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.39; Tue, 8 Oct
 2024 11:57:06 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 11:57:05 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e567248-8596-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=wJvkllbSRB1F6gEd9zg1wunjgErZ/Vj7hfEOdtymSNGqVvHHoU+uUhAc4vLX7gT0tLcmLijDM7Qefi6NEK3eW9EYbw8iPr/TWxodP3GO0Tx3FGL/q+G7MBkOP6oVMhxZoDptCrNX3VhqBN4CLAejS+9saDSnmsMACGOg+LFm8jTlix4bBFxO18Y0WDePxGlfUNb9fGPkCAuhKFMDtMMH7spC4ArcURZRh0hbpmpA3qNuHPT1P0QZDQ3kte3hYI55B/AVXFMdWWh3pfE4UALvHB8ccLXejquWiHouSKiUki8kKNQPIyHGMryZuQ1E1rszJ57kQ2Vn5r9gNUmCnhq1xw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=CLs1ZxxgChdgIqfhpynxvq6O8IYDEBTQLTIYpEGmkys=;
 b=c+LUpYV9eSG13FC5C1p+jCMdQ54hDvs6MgP+RzFUVPLYujn3QybcAZ4gPyjHV45YXLjKfbLFgvLlnps1I8ZhIgL/s/q2F5sviiQp6gH64B6UY7F75oNKxjenE9pYp2M48NllEopYcpRqyYgR64LHdy9eIMWIhfi+y+LJ8ikV3+UI5ziQdYHUQ8p3uG410yF2rp7cBMdfdiQwD4pv7KpOf+tjr6glCrATRShkEJ6VRqea430bRDCa9RhwOXsy2wMeN+IuyqFC0wpynysTJQwrbbPUD9jh6vVCXGnppkkXPlSorhk/VtmCzZogMgOIAGaX65NzwOm8jPPkkUIp7XemKQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=CLs1ZxxgChdgIqfhpynxvq6O8IYDEBTQLTIYpEGmkys=;
 b=gojdK3b6G6KBx8nDlywfiBefDtvRvES9KDtdtM49HIjt5pEj/jB0QfIpU9buRAaXNT3kmSD1rzO/pWgS7GBRGI3dhYDOfJyss/UTMQLGW8PUpJVu+31bpg67vRKupYe1ByLvASYU++m2tgq2yA7958vJhMVp281dmOzPTxA4XIo=
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: <79636d14-7aa4-431d-8da3-83afbeafdf85@amd.com>
Date: Tue, 8 Oct 2024 12:57:04 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 26/44] x86/boot: convert construct_dom0 to use struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-27-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-27-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FF:EE_|CYXPR12MB9388:EE_
X-MS-Office365-Filtering-Correlation-Id: f140c103-4de5-430d-f4e7-08dce7ba3dc8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?dFBWMDBxNlY0UU5PNnUyNTFuTExEcWwvbWNudWU5cDR3cjJMSnVLQ1dqWFp0?=
 =?utf-8?B?OFJQSHRyQWNiaitCbTBNdUhRUUhvNVZ3YTdEKys2b29yeTFLbUo3V2V6eXVN?=
 =?utf-8?B?SHJrN29RRlMxUlowemJidlBPZnZWekZHeVN4YlZiT0VGL1B6aWg2K3E1bVZ4?=
 =?utf-8?B?SHUzU3BhUTU0amYyb2NuSjMyKzJoY1BzRUFhZFkxMTRieTJjL081cjYzYzJS?=
 =?utf-8?B?THRyR3dESFdCcDNENHV6MnovTGZGMlNjeDlUeGtoSkNxOHBGSmN0eEYrTUpn?=
 =?utf-8?B?YVU2eUczZ0ZsZG5jODRldW1ETXpzTTBOKzdtQ3RKL0dmR25obHZuWUFqRzlk?=
 =?utf-8?B?RlpITmNBVFBsRjVzdVZ3OWJKMkZUcGZuRWt3RkpHcktpRThnemZBamdDM2dx?=
 =?utf-8?B?aTFRSWR2NVFJeHRLV1d6NTRzVDdyc0FLT3JqckNFZ1VsN3dHb2U5TDNyYzRh?=
 =?utf-8?B?K0FFRFBBY3NaNmZSQUxnNDBQN2VwWEV0dVo3WGhHTHhzcVg0ZEF5OW10Tk5l?=
 =?utf-8?B?SmxFMnZ4UEhhR1pMenA3UllWUzJnbER5VkdHYll1dmdaVXhRVDBjZmhKcUls?=
 =?utf-8?B?WXVKZ24wbGdydFhoS0xzODFFZm5odG01cFMwRXBXKzMvUHhBWmNLWVliYjhT?=
 =?utf-8?B?WVlEa05OMTA5OFdqOVNTdUlFcElEMnB1ZFhZWDFSakFhdmp3am5RVlZIVFY2?=
 =?utf-8?B?OGYreHJ0THJKbmdtcUdtVzc3NGpWZHVUbzlCL1pPdjFEaHZoQ25UdU00SzNu?=
 =?utf-8?B?UnpOWjBObFZFSng1QjRaMCt3ejJSdHIydFZEOWxqNUloWDI5ZmtseGpma0Zl?=
 =?utf-8?B?N21YcXlKbmxzd3pRQlF0VC9UMFBjQTNPTGQyM0N5MHdLM1gzMFk1RFE2OXBt?=
 =?utf-8?B?c1Ric0U5eDhwUmZOcXF2YVd5bHYxWEo2eWtnakpQMEMwSGVqTlA0UW01Mlc0?=
 =?utf-8?B?bHpJK1NmdTl4UXdBL1M3cjJ5RE5zT2ZVUHJTV3h6TW43TTVFM09IeGczaWxv?=
 =?utf-8?B?QlNBM2g4VWwxTUFhL1NIaWQvbXY1RllTelBVRktpWHFFalZWcjBodFZBWWh3?=
 =?utf-8?B?NHd4L0xPdzRCQUxYUVJqOXE2bEtiWGJSNlZkaWM5NVMvYXdnYWl6bVk1Mm9T?=
 =?utf-8?B?NllkdXRBWE9UaUJPRG9ZUmdZcC9oZVJqVy9BYm5RQWhlTHRSVkdrMys5dC8r?=
 =?utf-8?B?NWYrQ2VMd0w4QXVvcFhYVG1MZ3ZLbXBTZHRPV00yTHBpdFVxNnphQWRNNzNv?=
 =?utf-8?B?cEpNeXRLK2pWSUcyVk1VRGs5Wkd6bGY1VitCRDRNeTQwdUNaNytPTEw0anNt?=
 =?utf-8?B?NUpiWlVTL0ZLcC9TVjV5ZlJDanJHd0dKaU1MbFdlUmNBM09pSC9iRWd0MGRm?=
 =?utf-8?B?eWptb0F0VWR2VUJUSmZ0RlZDR3pxdG1BdHVDVnlpVjhTN3NXdklCdk5Rd2pq?=
 =?utf-8?B?a1lzeU05V1ZBeGtVbjRDSS9yNlUycnl5SnFJMTBjVGZQRklXVmQ3YTd6b2tw?=
 =?utf-8?B?K25uZ280MmdaNmVzYTFWM2o1U1FlaC9WbzJTeWNlU1VJODRBRklIbmo0aHNK?=
 =?utf-8?B?dCtManVMRjdlS2VrcHlJb1VYNzhtMFIvUUJJSWcvS21iKzVtdE1HQm5XLzFy?=
 =?utf-8?B?NE5OT0JkcjVuUTd6aXVkRmxRZ3dhZnRmYldONHB5ZHdiN2VSS1lVYXMxNDN2?=
 =?utf-8?B?REVJeGQzeElJaHBWZVlXL1Z3Qlc3RFU2MG0zQXhjQkVOT1k3MnFJRVYrWUFX?=
 =?utf-8?B?V05LWGZZUi9FUTdpN2dubEp3MVBzaEdNQ0tGV2JVUXhzUlV3ek9SdFgzVU5r?=
 =?utf-8?Q?QNYjqPlMV/k/3auyQ6lr5I/1KjUEB5xADN9ls=3D?=
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:(13230040)(36860700013)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 16:57:06.5656
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f140c103-4de5-430d-f4e7-08dce7ba3dc8
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: CYXPR12MB9388

On 2024-10-06 17:49, Daniel P. Smith wrote:
> The construct_dom0 function is converted to consume struct boot_module
> instances for the kernel and ramdisk. With this change, it is no longer
> necessary for the internal use of struct mod by create_dom0, so they are
> changed to struct boot_module.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 17:01:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 17:01:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813386.1226307 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syDaC-0007Ex-Ko; Tue, 08 Oct 2024 17:01:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813386.1226307; Tue, 08 Oct 2024 17: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 1syDaC-0007Eq-H1; Tue, 08 Oct 2024 17:01:12 +0000
Received: by outflank-mailman (input) for mailman id 813386;
 Tue, 08 Oct 2024 17: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syDaB-0007Ek-08
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 17:01:11 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20619.outbound.protection.outlook.com
 [2a01:111:f403:2416::619])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e8b55c9f-8596-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 19:01:08 +0200 (CEST)
Received: from BLAPR03CA0090.namprd03.prod.outlook.com (2603:10b6:208:329::35)
 by LV8PR12MB9262.namprd12.prod.outlook.com (2603:10b6:408:1e7::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 17:01:03 +0000
Received: from BN3PEPF0000B069.namprd21.prod.outlook.com
 (2603:10b6:208:329:cafe::9f) by BLAPR03CA0090.outlook.office365.com
 (2603:10b6:208:329::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Tue, 8 Oct 2024 17:01:03 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN3PEPF0000B069.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.8069.0 via Frontend Transport; Tue, 8 Oct 2024 17:01:03 +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.39; Tue, 8 Oct
 2024 12:01:03 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 12:01:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8b55c9f-8596-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qjbOSzkRm4Jvj+o5yxtjh5w9OO3p39TKeN0a7+vI9evdFK4JaikS6eK0tbtpZ0e8fYj5B/OpQAs2ijvhyv4vHDEeWEkxuSZiqahjZFjIKpwukgnmtmSVJEWrRS2nKCVtQj6pBIBwQlQmEYRN281XpLUG/8L2xgnziIoxqBjw8TTrXCCTCChUeWtdr9s+lHB380JFMlNfimm8ah5gSVRdyTIIib6uSvZI6QBAP38dLd0EXBgUmEz7mUwf5z19+/c4ujVDYKWAZo9Xt13FelfVlctpDucc3ivzze8mdE8kOkWAv2BH102tHHMcuiYkfln9A+HeXxZADe66BByJAYMt6Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=H9uXffkH/Ov5GjjLKT0LoE3trWhXlAAKcT4A7f6eSWo=;
 b=BeLav2w9q9tGhhyxgXE02qz4M5ft6sxI7Vmb6/ou7oiDY19LN0VzVe/Ic990xdixRUcbpkah8qsz3uD47m2zEev8EAD4R5aEbPFZMZrTR8+mSMhljT1JOk5eoizHyrvm5rOuPl327IOezYIrZHL1WNGqaXG02iiXHy9rliNSPkUFrSVQbHrF+QqgRFSoB0COWnD5OUwzyX+guo54P1jC78c6yqnl4S7Y/8Pa/XcF9qksYIDG4fzrnO8G+U5XiwY55piHvF6K/fhTbAH9bxj0u1uPLAjUpGKqyd+sx5SpvXYswJctY9H5mCdhI/vq47sTQo8s63pZdfcg0G0UpSsXMw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=H9uXffkH/Ov5GjjLKT0LoE3trWhXlAAKcT4A7f6eSWo=;
 b=RpdgdQ5Z6WswWbVr0+0P5vajx3CO8MDqIjoZnaXLBwZNqkcmX0ojGNbZxP6xERfaRfJQd5P6+3cwcBunPbjeEkUSHRIqrZYC9H07gULoOre/ItFtrMjD2Z2QETJc9QA5ckjsif2/qNVAZeJRGNvOzQdVS7c7NPvbC8Nh3Ru0ZRw=
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: <5e656c31-192e-4dff-8dff-2822fd98fe63@amd.com>
Date: Tue, 8 Oct 2024 13:01:04 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 27/44] x86/boot: relocate kextra into boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-28-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-28-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF0000B069:EE_|LV8PR12MB9262:EE_
X-MS-Office365-Filtering-Correlation-Id: be651f0c-8259-439d-00df-08dce7bacb1b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?NVJ3U1JFWlpGTWovNitNSGxZNGo4V3RsQUIwa25jaVpHd0JDRjR6QjZkUVA2?=
 =?utf-8?B?VHI2ZVNIUDhHMGhjeGYyQkpKVUdyUCtYQ29lTVdwRFJCaHp2cE5YZFovRjVL?=
 =?utf-8?B?Y3Y4Y3FVeDNlUUFDOFRPNEoxdVEyRWNlTzBUd1hDL0Fia0hoQlNQYm9nSnJJ?=
 =?utf-8?B?QnhnaVNHN3ZwZUozeGF6Y1JMaE5ST0V3eEp6UnVxOFZLMXRFbGUvU3crU1Ax?=
 =?utf-8?B?RUNsMG9SNHhZU2lIa0Y1UGxpQVB5dzl4N0w5R2dkMEZxbjNEUThaZlhYeG9t?=
 =?utf-8?B?c0xseXRYTTNlNmlVSlY5Y1VucDhMdHllK0lWRTYrTG9OT1JRRGNYWEdBWXd4?=
 =?utf-8?B?MnBuVWZOZk4zOXJHVFVQTGtua3dGc1lCZ2NOVDNjQ0Q3a1M1L01xWU1HNno3?=
 =?utf-8?B?enhhVzNocDYwZC9ZdGdudEVETzI5WTJyZ0JXR2QxV3ZtUnN0aHJTK3VLa3Zj?=
 =?utf-8?B?aFRCVlpLakRzdzE1SnFER3VKUk8wL1Zrclc3Tzk2T2J3YkI3b3FsZGJyTnEx?=
 =?utf-8?B?ZmJ6TGliN1h2NW1QZ0RtL0kweVFmQ1FnT20wQWFSQ0RscUQ4Nmh6Y1o2dnli?=
 =?utf-8?B?TzkrdnhVcXJQVjd2MnhxaFFJSXFhbGpSMHI2QTJXU0V3SHNUaEV5MWc3cmJz?=
 =?utf-8?B?V2VndHErWjJrU1lWQjMyMzFGcWs3NzhCcTRvWEpZeDZuODN1WElaSmx4SVJX?=
 =?utf-8?B?Z2ZRcFZERGJraTRwSGNvN0gvZXh6Q0wvalJEZEtNTkFmQkpwMTJxd01UU1Ns?=
 =?utf-8?B?dWhuNXVMQWFqZ241RGl3SENIT3FDZldvQU5yVm1mRTh4ZUo4THAxdlFaRElB?=
 =?utf-8?B?YWd0SXBHVytRdTZINTh5Y3BMVDkvRGZ5ZFQ2YTRNbm9OSU1RZTlxUVM0Sjli?=
 =?utf-8?B?OTd2ZHovcWpaYVpTRWFDUk4xWWFodlZ2MEJRdlczSHFDbG42OTdJSmF4MzZZ?=
 =?utf-8?B?ZWNiOVJUWTF3L3pkMGdYcGNUeENRSDEyMEZTRDFrOGtMSGlyeVhZTGNTdHk2?=
 =?utf-8?B?VWlCWXdGWHFmNEk4YmgwenVwVm1RS0Nqd1JzR1V1RlNtWENEbVRTdFp6ajBr?=
 =?utf-8?B?dXJBZGhDMVpVZ2ZmQ01JSWYzYkVIbGJDY2tKMDhzaXVyM0s3YkNZOUtFWjlV?=
 =?utf-8?B?U0gwbStxZTl4MVVjWWpLSmJ5NEdyUUp0NzZMdVN3L0JGb3lpazQzM0tFUGtF?=
 =?utf-8?B?c1VVSkYydzRNaFNURFl1RnZuUjJJTUdXdVI3bXliQkUzQ3owVnhtRkxwWVF1?=
 =?utf-8?B?UlBQUk1ydXVsWWNVZmdta0k3SHo5R1gzNW9uNlhJZXRtV1R3NXNacmpDLzZC?=
 =?utf-8?B?T0xzNXFmZGRpU1VMTkNkUjA5VjRqaVQ1eEhoWUR2SnNOSk94QXF4SUJOVWtV?=
 =?utf-8?B?SHc3RFVkTndvZjgzV2tRdytPK1pDQ0ozZFpTZjBncENqZGJrMHhvbDFWZmdC?=
 =?utf-8?B?UTBjU0V0T2dxNzlFdXE5bnczVktIcEtZbXQ2Rk9LdXc2N1dqR3ozeUZ6L2Vr?=
 =?utf-8?B?ZUs1dGlGUmliNGh6WGFVeURVbFUwbFNadENoYkowK2hndXBqRERDUm1vdVpQ?=
 =?utf-8?B?SlYreHh2dzA1cEw4OG1iSHZYUVRrMDFFK2srWnJHRmRkc1NOeEl6NllWZm82?=
 =?utf-8?B?RGc0VHhqeWMrSlhQTFlyWnR4Z3ZYZUlRSzRFL1VZbG5nV2RGZEs0QUhlTjlH?=
 =?utf-8?B?RHFTdkR2dGZQbWdhRjdPUGZRcTFTZzVvV29hcHdYZHN4QjZGU2tmTHk0VWE0?=
 =?utf-8?B?MG05ZHNGUDgwd1dlRUpiRGoxKzdndzk4VTZtYXJrbUszOG9Ccmh3RVNXU3or?=
 =?utf-8?B?NWZvM3M4aFVDTitCU3EwelM4Y01LR1hVQkIvQTlnd2o5RkNFQWwvNEUzeE82?=
 =?utf-8?Q?lvv53VSmnsEdt?=
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:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 17:01:03.6464
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: be651f0c-8259-439d-00df-08dce7bacb1b
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:
	BN3PEPF0000B069.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9262

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Move kextra into struct boot_info, thus no longer needed to be passed as a
> parameter to create_dom0.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 17:08:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 17:08:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813392.1226317 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syDhE-0008La-B2; Tue, 08 Oct 2024 17:08:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813392.1226317; Tue, 08 Oct 2024 17:08: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 1syDhE-0008LT-8N; Tue, 08 Oct 2024 17:08:28 +0000
Received: by outflank-mailman (input) for mailman id 813392;
 Tue, 08 Oct 2024 17:08: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syDhD-0008LN-4N
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 17:08:27 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20618.outbound.protection.outlook.com
 [2a01:111:f403:2009::618])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ed609801-8597-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 19:08:25 +0200 (CEST)
Received: from PH8PR05CA0022.namprd05.prod.outlook.com (2603:10b6:510:2cc::10)
 by PH8PR12MB7157.namprd12.prod.outlook.com (2603:10b6:510:22b::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 17:08:20 +0000
Received: from CY4PEPF0000EE3C.namprd03.prod.outlook.com
 (2603:10b6:510:2cc:cafe::f3) by PH8PR05CA0022.outlook.office365.com
 (2603:10b6:510:2cc::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 17:08:20 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000EE3C.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.8048.13 via Frontend Transport; Tue, 8 Oct 2024 17:08:19 +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.39; Tue, 8 Oct
 2024 12:08:18 -0500
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.39; Tue, 8 Oct
 2024 12:08:18 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 12:08:18 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ed609801-8597-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=SH69uf5U1caztKu8tqtk5FddWN88pO2caXDkPvlU+vWHyAtDLnsHhx+o8TzO+N7uhtopamW1lQfS52vCofcvGOXQLgFJMXYa47dpZyBUhDQGrSpBSASb/Bae5w2yFDx4dYhEnienpCf08by2QG4VavmQnR7sGgJuWWoofEqvQarE+4hF6G+voIW3IkKC87ZG0cQn1rMox1id6Y88WRySSksK1u/7a8t9JZoSP+GT9vCVPoIZY28lof3imzRTrSHwz36o+mIabnDlX5kRxSjVwX0RKON/EZUuU2OwwrEb3pOR7T9rytteOC3L5k8q5mraI3bfklnIrhKLWZiJsCMOLg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=P4PqYY8vaPyU4fep7AqwrEpfeeWyJp6J+pS3JulfCAI=;
 b=zUNVzOcuZewFiP3RbXBc0sTKdwCVFnwVKacMvxeO9iuzvb5TwPV1Vp9JAhfaCxsc2e1OWSbtk/Um4qYo+LuJ+inmlCjlb7D5t98AXTYASB0D4oyxaeB00BvcJSgi3QJB4Er1GNHjAXZFfRmThAfK3Vy08wQEh+6/vgvQbda8cB4FVu0wYuMLA78Uw6JG6CsR2JIKi82f+LSInjD52OufJbRjtPlZR6aY/x+W+EWvl+k5ZHeMnGxJbwbGCnKu17Zo8T4obhfZBbuVxPrx2fkOiGVmPzRfs49YbVJyhmrezzWUNxnqH0ChC3zICodcVC/SRxWJVlv4Ijgcix4WchMORQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=P4PqYY8vaPyU4fep7AqwrEpfeeWyJp6J+pS3JulfCAI=;
 b=12BTDnF8EqSpu1jBArRgmZCzyJDY4GQUhq5jQPu98wnyAlfiI34imEGsVT5DQ4W2k1Y7sZrjXM1G1owJBfhc3OEWnd4CtDBtYR9E7ZITVaOU37bL2Zga9k5IKohhqVuOKc3Fk4SEevRTNLMvEAsvSq7+1alEMtuDVXVcZDKEQzw=
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: <cc11ab03-d518-444b-bc0c-24d656ea1e8d@amd.com>
Date: Tue, 8 Oct 2024 13:08:20 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 28/44] x86/boot: add cmdline to struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-29-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-29-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE3C:EE_|PH8PR12MB7157:EE_
X-MS-Office365-Filtering-Correlation-Id: 85bc4a79-f7a7-41eb-08e7-08dce7bbcf1b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?YzZpSDdySjR3REswWkxUamZWYUdhbXpFeUhVbWVjR2h3MVErai92dUphUURl?=
 =?utf-8?B?WlkrcnZDSG5QK0NOaXRCcDJLS2tOZVBuSnBsZnY2bCs5dnZnblhiUkpqUTNK?=
 =?utf-8?B?aGFQK2U3ZWdqeTkzWXcxZDhZOSs5L1FFSFoyVTY5eGc5bGo1c1Zxb2hmeTB3?=
 =?utf-8?B?dzJPL1pPdk1BWTA0cWFBeG1vZGp6dVd4VWl2eFRvVFo5MjJnMCtLVHJGQkZU?=
 =?utf-8?B?UFRrM1hQN25Nd2JySHpiTTlpdEc3b2pDeHl4MVM2OUJIRm9LN0dCOVZXTWtP?=
 =?utf-8?B?MTF2MDZuTmMydDhSVlVIcGRoeUtkRzRlZmpWRkpGNFg2eFdEZWFKeTlKLzhX?=
 =?utf-8?B?RFNQd0RZaEtPZ3ZYd096dnpvMnJzWjZFSUtVdzZXMVVKS3BnNGhHSkNsbnFk?=
 =?utf-8?B?R3A5M1VLd3djVUwyMXJNUWthdzd3bHJnSENEa29LNTVNN1pzQ1RROVRCcHd6?=
 =?utf-8?B?VUcyVUlnVFV0T3NEV2p2MDhQSE90Z2ZFUlRaQ2htNlBocDVaaVo0c0NSYTBR?=
 =?utf-8?B?QklJWkMyTUNuNE80bWRDdzl3MHlyVFNGN1hQQ2dNcXVsSmdkZ01CZUQrbDhJ?=
 =?utf-8?B?dVZ2VS9SMnhteXJiVHlnV0pnell5STlwS0hGdUIvWWRzNkdlS1NicTNTdjBT?=
 =?utf-8?B?cFRNN2pQZDNtUGFjRmhHejFoZEVVUyt2K0VJbHdyYUV3cVRyMDNpQ0xnazVn?=
 =?utf-8?B?aUs0dzJlbHlmQU1sd0pibngvNlpobFlQNkNlTTdGenlOaWF1cXVET0tZV3hq?=
 =?utf-8?B?cDYxdk9ZUXM1Zmd5c3VyTE1ncWlyVmVrZThjUkZEWG9LNDdVUGxGeU5FbDda?=
 =?utf-8?B?OUJVYm5PS0VwNGxuSEhWL3BmRFFXcTlPc0RHWGdKMklxcTkxS1o2L3N2RytS?=
 =?utf-8?B?NDVmMXhQRjYrR00xNHBBY3ZvK1FrOWhBSFMrYi9SSUlVQy9oVXM5K0U0TzI0?=
 =?utf-8?B?Zms3THdVTm1Dem1aOWFHWDZGTkNJbTFJamtaY2tRTGlHcXJITFAveVBiRGlT?=
 =?utf-8?B?SXBoTTlLVkRHbThXMUVZR1VjMmwyMzZzN2ZPanQzMEllRkJSb2xVY3k2blYr?=
 =?utf-8?B?Uk9ZNVpSeFhQS2srbnJUdjFzdElQUlVvMGFRanBWbkJONXdJd3p2OTI3OXNS?=
 =?utf-8?B?QTN0blUzR2pqNlBUbGhoN2tZaVVidTFRV1VMbm9ZbVZPaE5aOUhpeWU2SXB6?=
 =?utf-8?B?b05ZS2V4cHpNT1c5UmJ6aDR4MHc4SUdmYmNkT2RGQ3Z1TTZKakhzZnRSNnl3?=
 =?utf-8?B?MnFnRUw0VTBKV2xiYWlOdW5CYm01TzFEWElMMGRmdDJxQ1BKQ0ttbzZiTjgx?=
 =?utf-8?B?a3FCaXl3VTg0SEw5c21aQzYzWWZKVE94ZVpFZEhpUVJkd29haWdoZUNpRHM1?=
 =?utf-8?B?QWhWMnYwVUZYQjdhVFJvaVpxT1NxZ1NGem9iYVZYNTdmSnJjK2tMSXJ5L0Iy?=
 =?utf-8?B?WHRndkI0NUk4WG0zd2NWbGVqYUNaR2VmZlpnUXF6d2Nud3haY2QwOUZmR0ht?=
 =?utf-8?B?clZlSEJnVzE5eEx0R1p5U0puVDhFNzJHa2gySGdnZEJhTE8reCtwRm1WTTZr?=
 =?utf-8?B?Nkh6eTIwVUlZWm8wMy9Va2tudGdJejJxbU04OGNoNlZqRWhiYnZnZGlqWGpF?=
 =?utf-8?B?aDd2cEVRNk5JTENycVgxK0pUVVp3czRBRDE2cFFTZEpZTWNsMC9BdnM1ZFBt?=
 =?utf-8?B?TlZORHZEUi9uTXhCZzZQeGZsOU56ZCs2MmJoKzBVeiszOGI0VlhuREorVnlq?=
 =?utf-8?B?eVF4LzVzRWYxVDZGdHZuWnZRUVJnR05rUENJM3l6Z1pFYzhIOXdHRmo5SG5z?=
 =?utf-8?B?MVdTaFRrT2ZGZHh3eXQzbllmYkd5eVprRUh0cjBMbUV4QS9XcmV6YTFrdDRn?=
 =?utf-8?Q?XpEHFDTke36jD?=
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:(13230040)(376014)(36860700013)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 17:08:19.7448
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 85bc4a79-f7a7-41eb-08e7-08dce7bbcf1b
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:
	CY4PEPF0000EE3C.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7157

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Add a char pointer field, cmdline, to struct boot_module to hold the address
> pointed to by the string field of struct mod. This removes the need to use the
> early_mod field to get to the dom0 kernel command line.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootinfo.h | 2 ++
>   xen/arch/x86/setup.c                | 9 ++++++---
>   2 files changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index 9ed260629012..3b6bfbe88770 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -38,6 +38,8 @@ struct boot_module {
>   #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
>   #define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
>   
> +    const char *cmdline;
> +
>       paddr_t start;
>       size_t size;
>   };
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index aed0837902c4..d5916e85f68e 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -312,6 +312,8 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>       {
>           bi->mods[i].mod = &mods[i];
>   
> +        bi->mods[i].cmdline = (char *)(paddr_t)mods[i].string;
> +
>           bi->mods[i].start = (paddr_t)mods[i].mod_start;
>           bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
>       }
> @@ -1000,10 +1002,11 @@ static struct domain *__init create_dom0(struct boot_info *bi)
>           panic("Error creating d%uv0\n", domid);
>   
>       /* Grab the DOM0 command line. */
> -    if ( image->mod->string || bi->kextra )
> +    if ( image->cmdline || bi->kextra )
>       {
> -        if ( image->mod->string )
> -            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
> +        if ( image->cmdline )
> +            safe_strcpy(cmdline,
> +                        cmdline_cook(__va((unsigned long)image->cmdline),

char * seems inappropriate if cmdline isn't usable as a string.  Maybe 
have cmdline as a paddr_t, or can __va() be used at assignment time?

Regards,
Jason

>                           bi->loader));
>   
>           if ( bi->kextra )


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 17:37:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 17:37:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813402.1226327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syE90-0006yf-Ij; Tue, 08 Oct 2024 17:37:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813402.1226327; Tue, 08 Oct 2024 17:37: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 1syE90-0006yY-FZ; Tue, 08 Oct 2024 17:37:10 +0000
Received: by outflank-mailman (input) for mailman id 813402;
 Tue, 08 Oct 2024 17:37: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=GrDf=RE=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1syE8y-0006uQ-WA
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 17:37:09 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id efcafd3a-859b-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 19:37:06 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id E15F6A41D8F;
 Tue,  8 Oct 2024 17:36:56 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 48E12C4CEC7;
 Tue,  8 Oct 2024 17:37: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: efcafd3a-859b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728409025;
	bh=1vCQ8JYnJpIoFENosyH4UFUYPbmXrBn+CDGEJ8u6qiI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=pE7GRP7Kw6W5djOIYssEgkqbe5TcaPlb3mQzDf4zERRB7iPdFqZhhtWPKYJcpoTJ4
	 wnDPCuIC97mWpogAl/bnImnbT0bq2kBUy9bxS+358/csOGj1KfnYlhGvW+/0ZNVUYb
	 uLVPuE29uPGOLquk1JcUQzO6nlDaSGg2jB2PWTSywrty/Af543tD5VwKp+BeW5bj2t
	 oM0wy4YzGjJWPP7BbISHY5mCecoAQqbPytXJGxBpA5czM3Xx/WMvEuJVLAfC1BJm/1
	 ObAPr8cR/f1gl/0tXn/O7S9VS0Z9VdpBZhs186Kv72wMWruLXlBEd1vMlSS5wuLDVz
	 bDDdiAWP9L1pg==
Date: Tue, 8 Oct 2024 10:37:00 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Bertrand Marquis <bertrand.marquis@arm.com>
cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, 
    Stefano Stabellini <sstabellini@kernel.org>, volodymyr_babchuk@epam.com
Subject: Re: [PATCH] MAINTAINERS: add myself as maintainer for arm tee
In-Reply-To: <e853549e25d26264e1a470336a98c48d22b799eb.1728395637.git.bertrand.marquis@arm.com>
Message-ID: <alpine.DEB.2.22.394.2410081036320.12382@ubuntu-linux-20-04-desktop>
References: <e853549e25d26264e1a470336a98c48d22b799eb.1728395637.git.bertrand.marquis@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

+ Volodymyr


On Tue, 8 Oct 2024, Bertrand Marquis wrote:
> With Tee mediators now containing Optee and FF-A implementations, add
> myself as maintainers to have someone handling the FF-A side.
> 
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>  MAINTAINERS | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index fb0ebf093965..2450b0f9ff9e 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -516,6 +516,7 @@ F:	stubdom/
>  
>  TEE MEDIATORS
>  M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> +M:	Bertrand Marquis <bertrand.marquis@arm.com>
>  S:	Supported
>  F:	xen/arch/arm/include/asm/tee
>  F:	xen/arch/arm/tee/
> -- 
> 2.47.0
> 


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 17:48:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 17:48:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813407.1226337 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syEJU-0001fZ-Hq; Tue, 08 Oct 2024 17:48:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813407.1226337; Tue, 08 Oct 2024 17:48: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 1syEJU-0001fS-Dn; Tue, 08 Oct 2024 17:48:00 +0000
Received: by outflank-mailman (input) for mailman id 813407;
 Tue, 08 Oct 2024 17:47: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=stPN=RE=epam.com=Volodymyr_Babchuk@srs-se1.protection.inumbo.net>)
 id 1syEJT-0001f3-5M
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 17:47:59 +0000
Received: from DB3PR0202CU003.outbound.protection.outlook.com
 (mail-northeuropeazlp170110001.outbound.protection.outlook.com
 [2a01:111:f403:c200::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 73c1ad7f-859d-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 19:47:57 +0200 (CEST)
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 (2603:10a6:150:16a::21) by GVXPR03MB10873.eurprd03.prod.outlook.com
 (2603:10a6:150:218::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 17:47:53 +0000
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::a41e:5aa8:e298:757e]) by GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::a41e:5aa8:e298:757e%4]) with mapi id 15.20.8026.020; Tue, 8 Oct 2024
 17:47: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: 73c1ad7f-859d-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=zIB8Ct+fEIR0i+I8uOc3He8s8k7TC3kAzwayYGaTZNQwVztoDgKFPPWZgyYy9yv01yUahIUz3i4kWW2JJhEuHOwb/9BMwIJ+tn9CMWaWlF32itznzqy+FofGQGOd07cpsjhVwnImk4fGxRl5PMRmFdK4L0ZBD5+07UjrXpp36KHQByWqSIIQhLZxnxTAI1CjPW0kKtJH+FAmdePWxVzPriCm+cy4xUZAVpoaudumN+3mW1l/TLHU7XqJZPyAXCPh9AOM8mYkLp2Zq9VQcxtkGZovR7y6nb+ENST7R+bhdQsKfHCMSrv7kKwIz6MtNfw5757CWcj4x0SE4KHbMQx5pg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=/02YQd8rw9UthqjIbuNSQzRqk7HXgndWucdoR1V+IaY=;
 b=ggsGd7BIq+oKIca4w74n7bYsodt2z02kUz3oiw4fHRgvuacI6NZ9CHQtTLgWYDAB/1J23kfYkmAZS33RXfSrK0AgSgloysyUKfunNeO+pXwSfB6dBWmpI8xUazd6V9eUxYMIsr0FpHP7FGxe5b0ykSMhXAjh+VWk93JP2POVwze143iKAcL/8HC7Mu66gVf4Y0sStx1D0GqD/vGjMBthQQOfcE6ZbNc+XOAqFCo7FofJP45F2vJxpzUM9Df0g9+B9U8ykAMRTUeIZB8ABFfq8Dh7sxwR5s3MLIC4BNfRpPlPv5PV8xgwXysi0LrMNAqXL/m+pUuN9JhhsQcJgP+m6g==
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=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=/02YQd8rw9UthqjIbuNSQzRqk7HXgndWucdoR1V+IaY=;
 b=RDVJKAQtlZa/nlOJDHakjgp+t70dKu/df0gCPRVzk7Sriezj8EBkCAVW3cLrNU+3Z0PWTqp3Dp9IZcaTFYb1QWl+Tw6pno1wDxRnW9ZVWmZ9t4WV+pfJK9fLj2W/VPqDuggYCCcwCOgq3qjGHhXOm16r1gMpDCvmN4UnG7lBJbpMWxWrPqP6jw3WA8OiTivz1/rzpS3RYO105QWnxkRAn6lCiNHU9gxj5q+zKvXbUpdF0RrpTJrGD47fB3eGODeUhbHjJ38bbRGHracLsy1v6wygvMW88Yo2HuzpMfd3KpOi09T29RonV5W8hxCehyYQsskKcF+FyGal6ljEXe9+8g==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Bertrand Marquis <bertrand.marquis@arm.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Julien
 Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] MAINTAINERS: add myself as maintainer for arm tee
Thread-Topic: [PATCH] MAINTAINERS: add myself as maintainer for arm tee
Thread-Index: AQHbGYnKbmuSpa/+lk+wbigq1bh8+Q==
Date: Tue, 8 Oct 2024 17:47:52 +0000
Message-ID: <87wmii5vw8.fsf@epam.com>
References:
 <e853549e25d26264e1a470336a98c48d22b799eb.1728395637.git.bertrand.marquis@arm.com>
In-Reply-To:
 <e853549e25d26264e1a470336a98c48d22b799eb.1728395637.git.bertrand.marquis@arm.com>
	(Bertrand Marquis's message of "Tue, 8 Oct 2024 15:54:58 +0200")
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=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GV1PR03MB10456:EE_|GVXPR03MB10873:EE_
x-ms-office365-filtering-correlation-id: 3f78fab0-079d-4214-59ca-08dce7c1555d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|1800799024|376014|38070700018;
x-microsoft-antispam-message-info:
 =?iso-8859-1?Q?oz3M1IbQcLCEMUjGIhFRhfvjzbnsZRvjJYZGKl48g8BKc1fQVTnEBlq10B?=
 =?iso-8859-1?Q?B+V6oo2nislyXrZlYaR/Ga14msCp5g8AlBeqTbs5rSDS1Bw4I2sniehpZA?=
 =?iso-8859-1?Q?BfVEf0TzCgaKN3/ZZpc5I3GmBpj0i6fiGBaMEdy/3WgHqc3OFAifXNdeqD?=
 =?iso-8859-1?Q?ajgiGjyeutf+yOYTe17y1Q+OC8WmBqeZhH+NTpZUG+7OVJGYQubfAJLsoD?=
 =?iso-8859-1?Q?WtfTK5joUm3bvjX7oUT6oS8b824CiIdAXZ7llk9cnM2buyr7HnMWPuRiyV?=
 =?iso-8859-1?Q?H4kpC5kZVXoaezP90LlleKh6raIKPd/QVbrC1vY0obs6BUdhAuHbGyLN9E?=
 =?iso-8859-1?Q?5UitH+cEHCUN6fNHbrZCxHyjspeC02VwUkUzAmSTOeRD88w16+Hfri1jta?=
 =?iso-8859-1?Q?w5WEwFJXCYv0/cVlZBkcbVbo+EBy26AzPqXfkUTzU54R4bTV5RY/HiuVmt?=
 =?iso-8859-1?Q?06ZGjkTyYF7/VkoTG9Ga95cCCaRiF+XmB7SnEGYCuJ0xAiv1ZuQ1E+WACF?=
 =?iso-8859-1?Q?VUebbnUqgThLEk3aTbWlY5c9/F6k05KDbHFw1osgUHXMVywP5+dxXG9Rgj?=
 =?iso-8859-1?Q?RtMd2mGE6QGzb28HQPlB9sDQn2787+qLdgCZY8bNq2epZkpN+1N6JEqhzH?=
 =?iso-8859-1?Q?HPQIvBAW9ZSLXzZ4uT1KMd1u9PiQCqZokIV31DQ+Dq5nZIgXSQQVmoSLVf?=
 =?iso-8859-1?Q?iEDtjyaFKfn4B19O7OPhs1HJdE6Y5q1jp7U8mutns1fvdcM+LS4N/3TU9C?=
 =?iso-8859-1?Q?IaJ5bo9YpbCPComs+RgXKNAo5aqCBS37ua8kNJ1dPE8VqNowGEv1lZnkET?=
 =?iso-8859-1?Q?e/S78GTtkNDDigHEYzyn1HvVxmJlMb5OP54MG+gB2q8nJ33wevOfd3Efd1?=
 =?iso-8859-1?Q?gzmKahUtWL2VsTOKzhEb/8yHuN8XuAWfBk4Y9K5uQQCPuu3RahULXmZhR7?=
 =?iso-8859-1?Q?zEjGsXBPjxdeH/w4lSw1mWbLE0P8MVRYtUH0tZBJ6cUOZUOz1FdOUD7Z0r?=
 =?iso-8859-1?Q?I1fHJeZuPaha/97m4XNHO/+JA0gzvM30HwSUwB7LpzsxSl/2fP3Lpt5KMx?=
 =?iso-8859-1?Q?fBzgfTwJgPmFNOsk7TYdYLXCehogA/E42U8vnM6F6+QUgSmi0kno+Go6ei?=
 =?iso-8859-1?Q?1S4oO0+JVS+aAHx/mcZSJHTms/ejaUd1gJF9NUF08ymKECZmzF/tfQU7Cj?=
 =?iso-8859-1?Q?1WS9mSen47kWG5gfnh2jKwu44mAEwQVBlALwGlb3NKZ6Sm7NAHihWduQLR?=
 =?iso-8859-1?Q?YnPik+d6sc5dhYEOXJMtsez0KKGFaCGPSZFAbNkiD6syhkgtrroMuL28Sr?=
 =?iso-8859-1?Q?fLYIp3R/Ld3Nk9U9hjz4iGDDH2nQokOiliwS7/cMGcWmPFBSSYtogwfLWs?=
 =?iso-8859-1?Q?m7oV5DGcsAPaWKXpczfUODcjCbhXcO4Q=3D=3D?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR03MB10456.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?IogUwcSgQIVkCs5vuOxQMuF+tJNKNbUK+Brz19VQ1LFIeqPBiKSS8A6+aS?=
 =?iso-8859-1?Q?6X8cdWYmeLXy53PrOTHOoy6SMwhpifF/0f63uo0UreBaeGB9ZhFL6rTve0?=
 =?iso-8859-1?Q?sViUVFzbhJEXITv8vv+tvw0vfpJhS2nTf0nDbqd8Ec2iShBjK/FTgIi5YX?=
 =?iso-8859-1?Q?sKWQ7ARX1OHI2XJl6mPVy+x18C48Usuy89Of55mrpPEwru27ZaQCW21+y2?=
 =?iso-8859-1?Q?oHq6PTbr0FYD3u0Ihz9ix8ENOLqYHAXEEkwMe2DV7/brDpAAWc3rN/xlp/?=
 =?iso-8859-1?Q?0epS5/Z/Jj4b5hTolrTkbyZLbhVTrUfnE4qGp100AkAqeOwhbBZ0iS1Xb9?=
 =?iso-8859-1?Q?KPWLtYHOtx1HPcIP6SM49pNKvM9j46s5gRttiUzyoybtMh0qpKcdlvXLmh?=
 =?iso-8859-1?Q?xzndTj2RDDvfHfg6Jl6O/Y/yLcvRvNEKWfDl6bFw3Jmm3xNGDsGnzzTyo8?=
 =?iso-8859-1?Q?8OFmWvx09+BUpJwSHFw2SC1lgIYza5g/z/RipIhPyQaFSU++0slnFVCud6?=
 =?iso-8859-1?Q?ft5zBiTfjaclHOBlR/xV1O4WvhkDUauDTXB910SsGt3TFs34/RKLAp6G2o?=
 =?iso-8859-1?Q?ucqHaNJKvTXnjJmNj8Uz0e1ambGJmOMh0gCkKBlBAs4xU5Cr5vwrmBL+R0?=
 =?iso-8859-1?Q?OVImepTGDUVqSs2ngsC9TUdVe5m2nL+cLGYDUv8kkN9ND704hmKkSQ9zsr?=
 =?iso-8859-1?Q?y+JtqY3+y4ENXTWXnpRCTvG9NmVrPW2UjfpaaIGKCL/vyp8qTanAxmMwkO?=
 =?iso-8859-1?Q?ctVb4mLiZGuvjkgvkEuFuRS/nVpWe+Er9sfywt2lDjGZb3JqldyDUx9EX+?=
 =?iso-8859-1?Q?NRebKBw8LdWvKpc0l2Fl6TThXxJrLMLQLy6hTge1gi58xq3AuLtCAqJjBB?=
 =?iso-8859-1?Q?pnNDhWv1lfg3+SioWDWT7HtSxDt+Rlq4qwhk99Kx+g40nYCYs+ymMvOI6l?=
 =?iso-8859-1?Q?UGt6Qj5R98YXpGalXw4gAM+UEzXFEabjPj+aHiAfvb0hAQ22xKeMAuN/6P?=
 =?iso-8859-1?Q?rTYta0Jz8TJYchEBPTMzAxcG705i+1weJ4VjyJBRP/npkyG8p3AFO9UVD6?=
 =?iso-8859-1?Q?KW2j9O+zEMpTPmkA5t+LqypcIkF2LnvK8pY6JUHJvrH3cJ7QmcJqarqoTi?=
 =?iso-8859-1?Q?klzJQcf7cIan1+S4Wl+LwNip62cVcT8vb5wocHB1KxDp0WqIINS0KPTatq?=
 =?iso-8859-1?Q?ZPVSbW9otaFCEOHSJWHdbi9axAqH9u+rJGvE3Poor0qSKwJ3QOTpBhFqSr?=
 =?iso-8859-1?Q?21NJtSSKhRxeCUQjx9gWo/y6pS0jn90okNiJgLsabUovgDzBN3hz/amORq?=
 =?iso-8859-1?Q?pQH1HA3G6d97f3kOQG/wjiMnd+3TSOJjoZia+XupvrfeVXgqnNmbHrB+Rq?=
 =?iso-8859-1?Q?v0tY6o6PjaValr38Y/bdfkLw8wf8hAHTVBJC2MzDX+/gkr5oXM94bDJIba?=
 =?iso-8859-1?Q?vGXqzE2tz4AROF40Yn65dicGcGgtQwLNK9k0jT5EuJnIIhWRE8j44dKShf?=
 =?iso-8859-1?Q?8jD9ipUXmUQAjOuY2TcEaCwaxYPJXUa4DyIUSF+pKZqpUoI+p1KvCha/zj?=
 =?iso-8859-1?Q?Z4qHJyC+ccoxnGNCKRnpZu7M78cO9MmWv0OxntocMWENVnlHZ/72JM9YZB?=
 =?iso-8859-1?Q?XSwgRcZ7UmveKaSkwTsaKJPlTYdcgAg0RgQm6JLsk30No58MsqRJW4nw?=
 =?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: GV1PR03MB10456.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3f78fab0-079d-4214-59ca-08dce7c1555d
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Oct 2024 17:47:52.6611
 (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: uYJLgU7gNybEUm5Pa5eSYw2fBx91OWzve3ol+cYNDBA+DqBYC5j6uTXFJaH/BWjz5KLpshftyoLAtU2K1PagArcT37dumEprVQFLt7R6VTY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR03MB10873

Bertrand Marquis <bertrand.marquis@arm.com> writes:

> With Tee mediators now containing Optee and FF-A implementations, add
> myself as maintainers to have someone handling the FF-A side.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>

Acked-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

--=20
WBR, Volodymyr=


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 18:25:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 18:25:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813416.1226347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syEtw-0008R1-AI; Tue, 08 Oct 2024 18:25:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813416.1226347; Tue, 08 Oct 2024 18:25: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 1syEtw-0008Qu-6b; Tue, 08 Oct 2024 18:25:40 +0000
Received: by outflank-mailman (input) for mailman id 813416;
 Tue, 08 Oct 2024 18:25: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 1syEtv-0008Qj-72; Tue, 08 Oct 2024 18:25: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 1syEtv-0007wr-58; Tue, 08 Oct 2024 18:25: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 1syEtu-0008Bp-Mq; Tue, 08 Oct 2024 18:25:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syEtu-0003NT-MM; Tue, 08 Oct 2024 18:25: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=M4CTojDBsbbU6AKsCG/qyUAda2JGMEnEYwF4YyakC6Q=; b=iljFJE7Gp01VWy+4Y0BetKbIew
	BPqqogBRDYIZ+rV/N8Tt/cgnVNutbViyfwH8ijTmJPfyo3R+sWjymR/JMMPeUptziHgEK+0oYx/Sd
	vsdUwE/kd7K9GwgU3W89TABXGKJQjL6+480UHD3kMmpX+tAFHB4/fnHoGIG+NCjhG048=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188008-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188008: regressions - FAIL
X-Osstest-Failures:
    libvirt:test-arm64-arm64-libvirt-qcow2:leak-check/check:fail:regression
    libvirt:test-armhf-armhf-libvirt: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-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-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-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=9c962b3902cf4b480fcdd1da7e300911c0288287
X-Osstest-Versions-That:
    libvirt=215cada34395b6b2caad507393e043594d6c86fc
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 18:25:38 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-libvirt-qcow2 20 leak-check/check       fail REGR. vs. 187961

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187961
 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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-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-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              9c962b3902cf4b480fcdd1da7e300911c0288287
baseline version:
 libvirt              215cada34395b6b2caad507393e043594d6c86fc

Last test of basis   187961  2024-10-04 04:22:33 Z    4 days
Testing same since   188008  2024-10-08 04:20:35 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Göran Uddeborg <goeran@uddeborg.se>

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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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


Not pushing.

------------------------------------------------------------
commit 9c962b3902cf4b480fcdd1da7e300911c0288287
Author: Göran Uddeborg <goeran@uddeborg.se>
Date:   Sun Oct 6 08:13:05 2024 +0000

    Translated using Weblate (Swedish)
    
    Currently translated at 90.0% (9474 of 10516 strings)
    
    Translation: libvirt/libvirt
    Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/sv/
    
    Signed-off-by: Göran Uddeborg <goeran@uddeborg.se>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 18:53:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 18:53:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813426.1226359 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syFKj-0003XP-EM; Tue, 08 Oct 2024 18:53:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813426.1226359; Tue, 08 Oct 2024 18:53: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 1syFKj-0003XI-BZ; Tue, 08 Oct 2024 18:53:21 +0000
Received: by outflank-mailman (input) for mailman id 813426;
 Tue, 08 Oct 2024 18:53: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=6+PG=RE=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1syFKi-0003XC-Jl
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 18:53:20 +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 9576ff0f-85a6-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 20:53:19 +0200 (CEST)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2fadc95ccfcso66903841fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 11:53:19 -0700 (PDT)
Received: from [192.168.0.110] ([91.123.151.46])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faf9b329dbsm12010251fa.105.2024.10.08.11.53.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 11:53:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9576ff0f-85a6-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728413598; x=1729018398; 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=0KsJbr7oikEpQ3HqIwtVgm0KQaSc1mPzv5/7sy2nKTQ=;
        b=Ltt3QIYRPH6Tqpo7vCW/vU8e+JEd5J/3kEDhEHL3dRY3RLpYBkNAQs9eKDVRp06LGZ
         HweOLUDp+dX7JNBzIW4nDPO9So+eReDVPn+bZHBTNoMmsB1vgFxDBUF7C9l1rYY49A2X
         bypWwTiEGiF0Uc6wOCEJe5KAuVOHp7Zz93oKKrdwT231F5bXqO/mMi/un8XvMaI0CqOF
         MmSN757qO/HeGgrVY9e4qZFsAmIeW2gECC6sr9qmB9AnSmb/f6/lsMKEdNT4PuRyNOef
         TodYzIaGeLNyvciQPmDCFBUEWMydal8elVVO9h9Ln9npw633J5Fu+AVwchRwkNiJV1P6
         6GoQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728413598; x=1729018398;
        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=0KsJbr7oikEpQ3HqIwtVgm0KQaSc1mPzv5/7sy2nKTQ=;
        b=P2hofe/KhXADEn6pj2hYWsr1jURpAPojspmR9ctY09TVzxFIsWtp+JBK62r3c6bDXO
         gNTF/U1yNCEHpLeZWUUq51vyYExR3R9nprDYs7cFa7kdWGwohr45oxNxhGAwRdxhF+Wh
         bttefjscliCawsOonMQmv4EFkcbSSiZSDEMC9a6Y8exrI7mWK3iGWwv0pQ4FTA1pzQWW
         V/tP6zh+c2yLbbFu2GbxXthmKaK2XyBoZKOrGj+gvEutng8/v51lDSOAWURLdNJ5xgIh
         6KSUVm0pOPa/JCLx+HKFlViZJfn956NrmWB9ivGjSUciXKcCpNS30v6K290ggdrKSBG2
         mXYw==
X-Gm-Message-State: AOJu0YywT+EjPoO7HEPoNCApUpdeG9onvxqLAHBiUIGJwQl9bnwQbnMB
	d0Vo3ZwBvj9GbRVq4jf+G4c9qNrxS9XzLj25IsN4KJtNY3J87Ta1S4SKPg==
X-Google-Smtp-Source: AGHT+IEbLnmCBsn9ZIZk6RaEq4JY96EzthamEtgr//6cNqIE3YyPfWus8FxdOicc4fsEBBDgeOEA6g==
X-Received: by 2002:a2e:e0a:0:b0:2fa:f59b:9148 with SMTP id 38308e7fff4ca-2fb1875f81dmr381641fa.21.1728413598049;
        Tue, 08 Oct 2024 11:53:18 -0700 (PDT)
Message-ID: <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
Date: Tue, 8 Oct 2024 21:53:14 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 08.10.24 09:17, Bertrand Marquis wrote:
> Hi,

Hello Bertrand


> 
>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
>>
>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>
>> Add common requirements for a physical device assignment to Arm64
>> and AMD64 PVH domains.
>>
>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>> ---
>> Based on:
>> [PATCH] docs: fusa: Replace VM with domain
>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
>> ---
>> ---
>> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>> docs/fusa/reqs/index.rst                      |   1 +
>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>> 4 files changed, 428 insertions(+)
>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>
>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>> new file mode 100644
>> index 0000000000..a1d6676f65
>> --- /dev/null
>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>> @@ -0,0 +1,365 @@
>> +.. SPDX-License-Identifier: CC-BY-4.0
>> +
>> +Device Passthrough
>> +==================
>> +
>> +The following are the requirements related to a physical device assignment
>> +[1], [2] to Arm64 and AMD64 PVH domains.
>> +
>> +Requirements for both Arm64 and AMD64 PVH
>> +=========================================
>> +
>> +Hide IOMMU from a domain
>> +------------------------
>> +
>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>> +
>> +Description:
>> +Xen shall not expose the IOMMU device to the domain even if I/O virtualization
>> +is disabled. The IOMMU shall be under hypervisor control only.
>> +
>> +Rationale:
> 
> I think there should be a rationale here to explain why we do not want the IOMMU
> in particular to be assigned to a domain.


ok, will add. I propose the following text:

Xen having the whole picture of the host resources and device assignment 
unlike the individual domain makes use of the IOMMU to:
- perform DMA Remapping on Arm64 and AMD64 platforms, which is also 
known as stage-2 (or 2nd stage) address translations for DMA devices 
passed through to domains and Interrupt Remapping on AMD64 platforms.
- provide access protection functionalities to prevent malicious or 
buggy DMA devices from accessing arbitrary memory ranges (e.g. memory 
allocated to other domains) or from generating interrupts that could 
affect other domains.


> 
> Added to that, I am not completely sure that there is a clear way to test this one
> as for example one could assign registers not known by Xen.

I am afraid you are right, valid point. For example, on Arm64, if there 
is no corresponding driver in use, we will end up exposing IOMMU dt node 
to Dom0.


> 
> Shouldn't this requirement in fact be an assumption of use ?

Assumption of use on Xen? From my PoV sounds reasonable, will do.

> 
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Discover PCI devices from hardware domain
>> +-----------------------------------------
>> +
>> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
>> +
>> +Description:
>> +The hardware domain shall enumerate and discover PCI devices and inform Xen
>> +about their appearance and disappearance.
> 
> Again this is a design requirement telling what should be done by a domain.
> This is an interface or an assumption of use but not a Xen design req.

I agree, will convert to Assumption of use on domain.


> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Discover PCI devices from Xen
>> +-----------------------------
>> +
>> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
>> +
>> +Description:
>> +Xen shall discover PCI devices (enumerated by the firmware beforehand) during
>> +boot if the hardware domain is not present.
> 
> I am a bit wondering here why we would not want Xen to always do it if we have
> the code to do it in Xen anyway.

Makes sense, will drop "if the hardware domain is not present".


> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign PCI device to domain (with IOMMU)
>> +----------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall assign a specified PCI device (always implied as DMA-capable) to
>> +a domain during its creation using passthrough (partial) device tree on Arm64
>> +and Hyperlaunch device tree on AMD-x86. The physical device to be assigned is
>> +protected by the IOMMU.
> 
> This is a very long and complex requirement.
> I would suggest to split it in 3:
> - generic: Xen shall support assign PCI devices to domains.
> - arm64 one: Xen shall assign PCI devices based on device tree (explain how this is configured in dts)
> - amd: xxxx based on hyperlaunch

I agree, will split, but ...

> - Xen shall use the IOMMU to enforce DMA operations done by a PCI device assigned to a domain to be restricted to the memory of the given domain.


  ... does this need to be a separate 4th requirement here (and for the 
similar requirement for the platform device down the document) or this 
sentence is meant to be added to all resulting generic/arm64/amd 
requirements?

I would like to clarify, there are two groups of requirements to cover 
DMA-capable devices in this document:
- for devices that are behind the IOMMU and IOMMU can be used for them, 
those requirements description explicitly mention "device xxx is 
protected by the IOMMU" in addition to "(with IOMMU)" in the subject.
- for devices that are not behind the IOMMU or IOMMU cannot be used for 
them, those requirements description explicitly mention "device xxx is 
not protected by the IOMMU" in addition to "(without IOMMU)" in the subject.

> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign PCI device from domain (with IOMMU)
>> +--------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall deassign a specified PCI device from a domain during its destruction.
>> +The physical device to be deassigned is protected by the IOMMU.
> 
> Remove second sentence or turn it into a req to say that the PCI device shall not be allowed to do DMA anymore somehow.


I would like to clarify, the second sentence here is just to indicate 
what type of device (in the context of IOMMU involvement) the 
requirement is talking about, not about special care for denying any DMA 
from it after deassigning.

If you still think that we need a new requirement to explicitly 
highlight that, I will be ok to create, in that case, I assume, the 
platform device will want to gain the similar requirement. Please let me 
know your preference.


> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Forbid the same PCI device assignment to multiple domains
>> +---------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
>> +
>> +Description:
>> +Xen shall not assign the same PCI device to multiple domains by failing to
>> +create a new domain if the device to be passed through is already assigned
>> +to the existing domain. Also different PCI devices which share some resources
>> +(interrupts, IOMMU connections) can be assigned only to the same domain.
> 
> Please split and simplify
> - Xen shall assign a single device to a single domain
> - Xen shall assign PCI devices sharing resources to the same domain.

Good point, will split.


> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Requirements for Arm64 only
>> +===========================
>> +
>> +Assign interrupt-less platform device to domain
>> +-----------------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
>> +
>> +Description:
>> +Xen shall assign a specified platform device that has only a MMIO region
>> +(does not have any interrupts) to a domain during its creation using passthrough
>> +device tree.
>> +The example of interrupt-less device is PWM or clock controller.
> 
> I am a bit puzzled by this req. Why making a specific case for interrupt less ?


Those devices exist and can be assigned to a domain, they are configured 
slightly differently in comparison with devices with interrupts 
("xen,path" is not needed for the former), other code paths are executed 
in Xen.

More technical details:
The allowance of the platform device assignment which is not behind an 
IOMMU (for both non-DMA-capable and DMA-capable devices) is specified 
using device tree property ("xen,force-assign-without-iommu") in the 
device node described in the passthrough device tree. The said property 
also allows the interrupt-less platform device assignment (a device that 
has only a MMIO region) without specifying the corresponding node in the 
host device via device tree property ("xen,path").


> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign interrupt-less platform device from domain
>> +---------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_interrupt_less_platform_device~1`
>> +
>> +Description:
>> +Xen shall deassign a specified platform device that has only a MMIO region
>> +(does not have any interrupts) from a domain during its destruction.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign non-DMA-capable platform device to domain
>> +------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_non_dma_platform_device~1`
>> +
>> +Description:
>> +Xen shall assign a specified non-DMA-capable platform device to a domain during
>> +its creation using passthrough device tree.
>> +The example of non-DMA-capable device is Timer.
> 
> Again why making a specific case here ?

Almost the same answer as for interrupt-less device. Here "xen,path" is 
needed.


> 
> Wouldn't it me more logic to describe device passthrough and then what Xen should do for interrupts and for DMA ?

I can add more details on how this is configured/what properties are 
used, etc in rationale for each requirement mentioning device tree. Or 
do you mean something else?


> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign non-DMA-capable platform device from domain
>> +----------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_non_dma_platform_device~1`
>> +
>> +Description:
>> +Xen shall deassign a specified non-DMA-capable platform device from a domain
>> +during its destruction.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign DMA-capable platform device to domain (with IOMMU)
>> +---------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_dma_platform_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall assign a specified DMA-capable platform device to a domain during
>> +its creation using passthrough device tree. The physical device to be assigned
>> +is protected by the IOMMU.
> 
> This requirement is not a design but an higher level as it does not tell anything about implementation.

Ok, will add details regarding passthrough/host device trees.


> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign DMA-capable platform device from domain (with IOMMU)
>> +-------------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_dma_platform_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall deassign a specified DMA-capable platform device from a domain during
>> +its destruction. The physical device to be deassigned is protected by the IOMMU.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign DMA-capable platform device to domain (without IOMMU)
>> +------------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
>> +
>> +Description:
>> +Xen shall assign a specified DMA-capable platform device to a domain during
>> +its creation using passthrough device tree. The physical device to be assigned
>> +is not protected by the IOMMU.
>> +The DMA-capable device assignment which is not behind an IOMMU is allowed for
>> +the direct mapped domains only. The direct mapped domain must be either safe or
>> +additional security mechanisms for protecting against possible malicious or
>> +buggy DMA devices must be in place, e.g. Xilinx memory protection unit (XMPU)
>> +and Xilinx peripheral protection unit (XPPU).
> 
> 
> Please split in several reqs.


I agree, will do. I feel it should be split into the following requirements:
- Assign DMA-capable platform device to domain (without IOMMU)
- Create direct mapped domain
- Enable additional security mechanisms in direct mapped domain

To be honest, I'm not quite sure whether it is worth creating the last 
requirement ...


> 
> 
> Stopping here my review for now

Thanks for the review.


> 
> Cheers
> Bertrand
> 

[snip]


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 18:54:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 18:54:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813434.1226370 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syFM9-00048U-T8; Tue, 08 Oct 2024 18:54:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813434.1226370; Tue, 08 Oct 2024 18:54: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 1syFM9-00048N-Q2; Tue, 08 Oct 2024 18:54:49 +0000
Received: by outflank-mailman (input) for mailman id 813434;
 Tue, 08 Oct 2024 18:54: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=GrDf=RE=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1syFM8-00048H-FX
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 18:54:48 +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 c9804429-85a6-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 20:54:47 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 69B6D5C3F3B;
 Tue,  8 Oct 2024 18:54:41 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4D157C4CEC7;
 Tue,  8 Oct 2024 18:54: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: c9804429-85a6-11ef-a0bc-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728413685;
	bh=uBjc82l4IMi5lAJ6YgwgY4es9xV/efMXZpwntdWirwI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=YHJb0/m8fOoq2oFGASAGMprvDaGC4mfe+Uxa8Sb7CcrzOkM/0uh6hJuhNaANqQQqU
	 rJtIYsWdnu/5RaNHLY/o78sTsjTD54UEImoiQ5ezLTSoKE4tfyO9mIQ1zc1XOM7Woy
	 +1SjGKT4V6+5bwbUkOUIIgFcDcy7WRL86ZXJOj4cuBn2VD2FRZw8Bclf2PYyyvhd3I
	 7yU87AcbVhV6l1C4lqrzYYaTqd7KESUZawRUv05kjI277WedjPhZXJOXnQ0r2b+Mbl
	 lN3eyec6YtZEfDd0JzBbWn9C9q2CepPjnf5C6cQ55Ic/rbJL+2QHEk0CjZX9bdxnPM
	 cwOLVC4qYfUyg==
Date: Tue, 8 Oct 2024 11:54:43 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Anthony PERARD <anthony.perard@vates.tech>, 
    Xen-devel <xen-devel@lists.xenproject.org>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH] CI: Stop building QEMU in general
In-Reply-To: <056fbcc4-71f1-4ce1-aae6-bb3a7192aefb@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410081151240.12382@ubuntu-linux-20-04-desktop>
References: <20241008155023.2571517-1-andrew.cooper3@citrix.com> <ZwVddI62BTAtMUls@l14> <056fbcc4-71f1-4ce1-aae6-bb3a7192aefb@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Tue, 8 Oct 2024, Andrew Cooper wrote:
> On 08/10/2024 5:27 pm, Anthony PERARD wrote:
> > On Tue, Oct 08, 2024 at 04:50:23PM +0100, Andrew Cooper wrote:
> >> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> >> index c668736bdc2f..c83e0bdbe119 100644
> >> --- a/automation/gitlab-ci/build.yaml
> >> +++ b/automation/gitlab-ci/build.yaml
> >> @@ -339,6 +339,7 @@ alpine-3.18-gcc-debug:
> >>    extends: .gcc-x86-64-build-debug
> >>    variables:
> >>      CONTAINER: alpine:3.18
> >> +    QEMU: y
> > Could you use a different name for the variable? This is exposed as an
> > environment variable, it could easily be used in a build system already,
> > like used to store a path to a QEMU to use.
> >
> > We don't really have a name space for CI variable, but maybe
> > BUILD_QEMU or BUILD_QEMU_XEN would be less likely to clash with other
> > usages.
> >
> > Otherwise patch looks fine.
> 
> A can switch to BUILD_QEMU, but I don't plan to repost just for that.

The patch is fine.

BUILD_QEMU is a bit better. BUILD_QEMU_XEN or BUILD_QEMU_DM would be
even better to clarify we are building a QEMU version to serve as device
model. It is a pity that typically we call qemu-dm the ancient QEMU
fork because "qemu device model" is more meaningful than "qemu xen".

Anyway, pick your preference and feel free to change the variable name
on commit.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 19:01:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 19:01:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813444.1226380 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syFSm-000075-KE; Tue, 08 Oct 2024 19:01:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813444.1226380; Tue, 08 Oct 2024 19:01: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 1syFSm-00006y-GG; Tue, 08 Oct 2024 19:01:40 +0000
Received: by outflank-mailman (input) for mailman id 813444;
 Tue, 08 Oct 2024 19:01: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=U+lH=RE=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1syFSl-00006s-4G
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 19:01:39 +0000
Received: from AS8PR04CU009.outbound.protection.outlook.com
 (mail-westeuropeazlp170110003.outbound.protection.outlook.com
 [2a01:111:f403:c201::3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id be327530-85a7-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 21:01:37 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by AM9PR04MB8195.eurprd04.prod.outlook.com (2603:10a6:20b:3b7::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 19:01:34 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8026.020; Tue, 8 Oct 2024
 19:01: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: be327530-85a7-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Ja6yOzS7SdqpNOeo6DVMeoZAiirDb4AW3cFEgR+7uKj6G5ACC07sXrSWc5qI5b90gKk23ZEw0gLrftCEtU6LUsh2MQn/gbF7wekIurpNVnS6m5ZOxLKEMOx/J5GQZ0P/XB0Z8LTrqmuF10k8Ds+JfQDk+ncES2cXsqroWdTA9fIYNhPghDRdyeyJUH1Njk3SdmV2xWqYUUlDkchnES+fmRizb1759FYzpqHrpcqAg5XXOGb4Bs9hV2uUUyGQs9qr7dhati8kosArmVcMezqOfNZhzV2SJXSKYFPWRpCXZxu7WqRTqJ8MXlNdZt51zOrcH2aYGQE3Wj5M+mJl8BiQzw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=IB0b58nhZd8Oe98Fpia3j+KtkVGRk++7n4rLdu9xkrg=;
 b=Bqo+wAhNIdBXTfR+j4DpNY4v+p3YavWr5fQEdE1hEpy2TBHOCodSVrJ785dZ922aLPMfHP0mcYYqetntavWLxLuN5zjK0vo7YsK5wWOF22Dvk7Cl2P5yflxD3EWb24PIfLUo+Y8tzGXSuNEcLdofMWCVQF9BDy/kIDmzrb2VdZmmHsP5Al385LlkDJCKgTeHUHSaLfAdWwR3jYrhYGDY3PH5N9jTOw0LxhKj42HmWYN8fAhYyKSTj1Nb8jPnYk4JvYBNTxcZVibU2AE60HGsKw9PZF0Vt/oUKtB8rlYiUD1rFkhfw7xMM814EOW16vN5BkM0P1uNTFYBiO4i+5o6lA==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=IB0b58nhZd8Oe98Fpia3j+KtkVGRk++7n4rLdu9xkrg=;
 b=jEdKhF9T5PwWSA3Uxb7C13uN337bgUyyUMbPVWWFIoOxcA+9i56EdjiqiU25zhoaBEJPG5cZ5YLBOIB8JDG2xD22yyp229SGx+uXRyzQWGrEKG1A96tge4rSEwkqwYEiQeQ3X0aLQf5iBRejQl6OmTvUPUFel6owH6g/+uhF0foMatg4flPCkXrDMxMzlUYN6WUkhN5tAMECgcQxH2Dy1/mRiIAhofo26o5dVeHEp6EKo3Q1P/tPyknSzumifNdmb7pBuZKRcJHCuAHTDhv4qMPgfvC//9Y5O2L1QwvBb9O097CgHJGhaG6j7YaJvanoYxJOJqchM9yJrxyWe78X2g==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <1de8ea10-f801-45b9-ab6a-25465ecd6b76@oss.nxp.com>
Date: Tue, 8 Oct 2024 22:01:31 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/8] xen/arm: platforms: Add NXP S32CC platform code
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-6-andrei.cherechesu@oss.nxp.com>
 <94dc1668-5215-424c-9dcb-1e343451d464@xen.org>
 <b8419295-cc63-41b3-9f2d-277d81e5f85a@oss.nxp.com>
 <a24807bd-5224-4110-bc0e-946287f5c90e@xen.org>
Content-Language: en-US
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
In-Reply-To: <a24807bd-5224-4110-bc0e-946287f5c90e@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AS4P189CA0069.EURP189.PROD.OUTLOOK.COM
 (2603:10a6:20b:659::7) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|AM9PR04MB8195:EE_
X-MS-Office365-Filtering-Correlation-Id: 83596c63-79db-4230-0c94-08dce7cba09d
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?UHJsa2ZXNDBZZXQybno4RjIwaGhuMFlTMmVCZU1yU0FkRHVidXdtZnU4dmQw?=
 =?utf-8?B?VldMcTBHbzhMYzZBNDNCUnp6K2duRkJ6Mm9IUlBQWlk1MnBaNi9Vc0ZUcmUy?=
 =?utf-8?B?Y0xOeC9peW44dmhSRlo2UlNrUktDQ1o5N1ZObFY5SVZ4QkNaMGF3enAzaHNu?=
 =?utf-8?B?Y0Z1dXNiNktISVc3VDUxTzAwdVo0QUQ3d01aWkR4eXRTWld3dU1qL0NpT283?=
 =?utf-8?B?MVBLcEZUVXlxVnYrbENUTHFqdzQzNytLQzFOZWRpeC9YUDdDZXZkdE9aQ1ow?=
 =?utf-8?B?YnY0TGQ2L0RhSmdIWVBEYk1BUUJnYWRuY0QxcmlpSndYckQxR2VKeDBESitv?=
 =?utf-8?B?amcxVjFLeUF5YmNjSWZvQmUxV3ViZXBpTWFaN2ZtMHVHZkxQNGYxaUMraW1a?=
 =?utf-8?B?d1BERkZPN2gyOE5ZUVlYREdBbC9xQVFGejVHRmc4RlJkcGhPNzFDYXYyUWkr?=
 =?utf-8?B?QkV2amZMczZoakR1bDVLS3ZDaHY3c2NNR2ZFK3ZUL0dOZ0xwWUxyaUhnR1RE?=
 =?utf-8?B?NFd6SGp3MFUrMlBkZHZta2p0d3dJT0g5c0E1NXlaTTlWM2htN1ZvUUNUblU1?=
 =?utf-8?B?N1dXeEJ6a2h4Vld4M0I1b3UxWDByQ09DK05qOW9hMFhTcVNGcnJmLzYxMVps?=
 =?utf-8?B?MGdwMkV6QXFrNEt0TUo3TlNEaUZLMExPR2szMyttTzZ4bWNFRkxSS2hiT0hw?=
 =?utf-8?B?cDAxaW90a0RCNzI1RWdwUTIzV2tuRXFIR2pHcDYxZndxc2t5Y0U2TUIybU1V?=
 =?utf-8?B?dy9Lb3JMa3F3aklHYlFmdHBYNGd2a2ZOWXhlNjd1T3BYL3U0ZTlRcUVzOWhO?=
 =?utf-8?B?S0VaYnQ4QWRML01zMS9LTjBoUmZGNXhKeFR5M0Zna0JSYzY1bWdaYWs3cjNr?=
 =?utf-8?B?b2RrZXZQNXovK3BnN1FJenEwWEpPNFRZakJPZFg1czlnSHZyVGhJVnRSSGlx?=
 =?utf-8?B?aU13bjdXQU9yeDgvK0NMZElVNFdxa3haeWRUekFXK1pXTnJlZHZXTldJYWJM?=
 =?utf-8?B?cVRjZFlDQ0N4Z01mOUFvT1Y2MitUOW9SRHRNN2swdWt3d0dCeHc2dG9IV0Fj?=
 =?utf-8?B?cGlFOEI4QktTbDJxeDA1SnVTSXNzTE1kNFJNaWlZN05obTNCZ3FsbW1JR21Y?=
 =?utf-8?B?Vjh1NzFYZWxSZy96U091bVUyOHVrQzEyTUVPUVd5SzEydXlseWk3d0lGS2RY?=
 =?utf-8?B?c0pvdVhZRmxjWktDQTlrUGt4YUhOWnAvR3VlaVVDWks5SURVQTNUQXpqL1pq?=
 =?utf-8?B?d251VTJWTmoyZ3VXdU5lcndOOGh4UmZjWUtCNENVTGdoVkFJeDRkZWhpNENK?=
 =?utf-8?B?THlDTXBmdnJiWElNLzBTQTFCRnhNcERZcktTRHM3TERSTG5IN1VmZDUrRllm?=
 =?utf-8?B?M2xEMkQ4bzFZSldnOG5hL1hvdi96S2NGbmZtNVQxK2FUKy9sdVpRK0h5SWs2?=
 =?utf-8?B?N0d1am93SG9wamJhcnh0V0o3RWF2K2dUQmwrS3h4d1g3TjFvaFVCaEJ2eXF4?=
 =?utf-8?B?SjNDd2daTDVvWDBteGt1Z3lydmsyM205WGFISnJ5ZHRVWnR5VTlzYXQwbWl0?=
 =?utf-8?B?Y2NSYlJ2OEFoMkFMTXRIMHRQV1NMR3gxMzRGLzRiWk01NmdJRHVCN1VFYkNa?=
 =?utf-8?B?VFdhNHBQUlhnZWpmOUJHUVpyVXpFcFlzT0M2Y0V5djVzbDZtZnFleUVORzdQ?=
 =?utf-8?B?dWwvZXI5cElxNXQyL1ovSGpJcjZYM2NRcnZJNU9pV1RpV0tNc2xEV2NBPT0=?=
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:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dFM2bnJaV3BXMlZ3dlU2OWZ5d2pKelNNR0hjNjNURlVmYW4yRkZzc01lNW1C?=
 =?utf-8?B?bGlsc2x4VlNadGdOcHpReEJ3RlJQdjBCUk1GdktVYnlnUzliTnBUcVQyeHY5?=
 =?utf-8?B?TUJ0ZWZlNTFVbVZPVEwvL3JvWDFWT0g1a1VmQml4OXkvSk1RcHNvRHYwSlZI?=
 =?utf-8?B?alFlR0hnUjlTdjdFOWpYTUN2KzNVZnB0NjAvblUvTjNWaEVSOGEzdmIrZXlE?=
 =?utf-8?B?U1l4bHNNRW5tMHlDSWZCRmw1aHRPK0g2ZTNEQy92bVdNN21uQmxvQ0hHbGlW?=
 =?utf-8?B?WThhNFBWZ2FzaFhvck9USDBoU3dOU1BUamsvVjZoMnQyTzJvQTRnQ3hqTURh?=
 =?utf-8?B?cFBmNUtMYlpRQnRXQW9Za3dXUkUyZDVKRjZHUnNuRWFVRXoxREtFQVUyNDhq?=
 =?utf-8?B?SjQyMmMzNEIzY3JGdFFyVnFKVEZCNDRnUi9naTU5VWxvQU5lSStYLzk2MWll?=
 =?utf-8?B?VTh1ZThWSjRRZ1dkMVJXWFlFd29XTDQ2OWNGdVlDdlhtV0w1MGNROEVlZ0Rw?=
 =?utf-8?B?a2VYay9leVRFVlJQMnB6RXVkQzBQNGNDZTRkZStOb3B2aTZmejJrcG0xMW1E?=
 =?utf-8?B?ejhNSjY3cmJOZ0dNNkQwOWVxTHNmOVNnYnhUMTRyZzJpNUFRSHpvMVoxWnVH?=
 =?utf-8?B?U0pERW1xSzhvMHJHU0h3bEl5bU9ZWWxuQkhiaTk2eVQzMDU0YXRVTXlVdDBP?=
 =?utf-8?B?aFdhNWlHQnZpeVA3NTJLNXdGSThFZmticS82TEVPbDZjeGFidVpJa3dwMHZT?=
 =?utf-8?B?VVI3ek9OVDQ3NkRKemNRaWxWMlpiai95aFhKQW1Veko4QjRqekdkdHROdTYz?=
 =?utf-8?B?VVN2ajRaaE90d2N5UmhoTnFNUU1oNDlMUlkyRUNyVFpOQUsxZ2x4eFFqRDBF?=
 =?utf-8?B?Wmp4cXYzNFREcXJSYkcxZVVIcGV3M2ZvWjFWeW5UZHl6UjNhNGNFdDZFRXM5?=
 =?utf-8?B?VHFVbjJyNHd3dkdYdUhtSTRIL2IvWUR4V2o0TVhLcnkxMWsxbE41OVI0SWNa?=
 =?utf-8?B?TXd5eWVNaGFOOXZFazJXallXZGJCWEx4OVljSkRjMGlzc0d6djNuU2RNRDZt?=
 =?utf-8?B?MDFVKzZtVG9IZ1ZOeGVIT2poMVdNdVJ2UUxXT201dUIyV1lmMER6MGF4eU4x?=
 =?utf-8?B?NzRKSm9QbUlPY3ZXY0QxMDByWE9lM3pEelk1Q0hEbVF2amRaRzlGeFFKS1Vv?=
 =?utf-8?B?U3NJQ01vd3Y2TDhCT29QQTRheXA5WkVtdUZFNFc5UEd4bFUwTTdaSnpESHJs?=
 =?utf-8?B?U1pnRkc0RmIwa2Y0RkJ0VE1tWnJXSDVvR1hHZ0FKalFHNU5vWm90SDc1R3Yr?=
 =?utf-8?B?TjE3YUdySDJKb1BMdytvZ3U1Y0x3cXpLUkNwZ0tYV1FTS1VNdUhRaTd4czZY?=
 =?utf-8?B?cFJqSXJGcXVkU3hDL0JOS1NpaE50NGNza0VwTTBRMGxyYVNxM1Btd0FUZDQ4?=
 =?utf-8?B?bWdIRk1MWmJTOGFyWEJUWWU4T005Z1hHYURJdUZmaENwTDR5NTg4QlBsUlQ5?=
 =?utf-8?B?R1N4a0ZMcHV2UldFMndlOUh6NDFnNzR2UnFUZkhPeVJaTEl5ak42dG4vYUF6?=
 =?utf-8?B?T0g3NUQrWTBYNjdYZy9xRGU1WHRKa0RWaWhkTHRLaTBPalBFVXNWZUY5Wjhj?=
 =?utf-8?B?T2pkSlRjUXY2NDZPcHJ1Z2FleHlnemhIUjB6cGx6VGliMW05U3dqRmlaMVpL?=
 =?utf-8?B?dW1ob0dIckh3bGppNEJNY0dMYmdQMzMyVXpjZVd6WEZERS80bEQvM2xQZUsz?=
 =?utf-8?B?bVpsZkdCSjRhWnlvUFNYcE5KM1g3QjRCTXVtS01haDlaUGNCbjJFTUxxSy9G?=
 =?utf-8?B?SWxtV3AwKytVVHFuWlI5NlJqZGhnNXRVeHR4NTdhcFdFdTVDNU5Eb2VyT2gr?=
 =?utf-8?B?SkZqTFJ2dmFRdDlDRGhVblB0UzdIRHd0ZnhUb3lybUJqK2tUNzdTKzFoY2Nm?=
 =?utf-8?B?Nzdkd3hPcENuUDYzaTZFdHYzdUN4VDZWSkVBalNqaHRnaklSNTZ6eU1NMEll?=
 =?utf-8?B?ZWs5Umg4VUVYdEZaWXN1RCt2QW1GRXpjeEpRSHhEL3FmSGFMZlJCbmdHdHVK?=
 =?utf-8?B?U2g0K2sxMWFndWNyY29oMmlsU0pHRVJxT3hHUmI4SndSRXVPaUhSdDNpOUN6?=
 =?utf-8?B?VjBHcy9PdHJzUlJBWElWaXl3VVFpRXh3Uk81WWNzWCsyWEJwYzBuTGt4Q0Jh?=
 =?utf-8?B?Q3c9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 83596c63-79db-4230-0c94-08dce7cba09d
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:01:34.2835
 (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: Y+dC2W1+hIx59TVmRebzd+d1GgAcAn+tLh3ebek4/wk9N4wW2WmPwNcjqxUQQQ6Wc3RQufM6UpWF2DJf/bSMIdK9SQqNQkB/XqHmwqv6lrE=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR04MB8195

Hi Julien,

On 04/10/2024 19:24, Julien Grall wrote:
>
>
> On 04/10/2024 16:37, Andrei Cherechesu wrote:
>> Hi Julien, Stefano,
>
> Hi Andrei,
>
>>
>> On 01/10/2024 13:01, Julien Grall wrote:
>>> Hi Andrei,
>>>
>>> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>>>> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>>>
>>>> Add code for NXP S32CC platforms (S32G2, S32G3, S32R45).
>>>>
>>>> S32CC platforms use the NXP LINFlexD UART driver for
>>>> console by default, and rely on Dom0 having access to
>>>> SCMI services for system-level resources from firmware
>>>> at EL3.
>>>>
>>>> Platform-related quirks will be addressed in following
>>>> commits.
>>>
>>> I don't see any specific quirks in the series. Are you intended to send follow-up?
>>>
>>> [...]
>>
>> Well, we could use an opinion on some SoC erratum implementation
>> and if it would be acceptable for you or not, from any of
>> the ARM maintainers.
>>
>> The erratum is about some TLB Invalidate (tlbi) instruction
>> variants (by Virtual Address) which are handled incorrectly
>> in some cases (for some VAs), and that need to be replaced
>> with broader versions.
>
> Can you provide more details:
>   1. Is this a processor issue?
>   2. Which VAs are affected?
>   3. What is the impact if the erratum is hit?
>   3. Do we need to do anything on the behalf of the guests?

Sure:
1. This is an SoC issue, present in a subset of the S32CC processors family.
2. VAs whose bits [48:41] are not all zero.
3. Well, TLB corruption.
4. There are instructions affected at both levels 1 and 2 of translation.
The guest will have to work its own way around it.

In Xen, just `tlbi vae2is` (only used in flush_xen_tlb_range_va()) seems to
be affected, and if we go with the 2nd approach from the ones proposed,
it should not be very ugly to implement. I am of course open to any of your
suggestions.

>
>
>> It doesn't apply for all S32CC platforms, but we can use the
>> Host DT compatible to identify this. My idea is that we define
>> a platform quirk for this and check for it using
>> platform_has_quirk().
> > Then, we either:>      - modify the definition for the affected 'tlbi' variant
>>      in arm64/flushtlb.h to actually execute the broader one
>>      if needed
>> or:
>>      - define a new wrapper for the tlbi variant we want to
>>      replace the affected one with
>>      - check for this quirk before its usage and call the
>>      more potent version if needed (there's only one
>>      occurrence of usage for the affected version).
>>
>> Number 2 seems better to me, it's more customizable and
>> it's similar to the existing handling for
>> PLATFORM_QUIRK_GIC_64K_STRIDE for some other Arm platform.
>
> I need a bit more details first (see my questions above). But if there are not many VAs affected, then we may be able to re-order the Xen memory layout to avoid the VAs. So we wouldn't need any specific change in the TLB flush operations.

I'm not sure what to say here, we would need to have the layout
limited under the mentioned VA range in our case, right? What
about the GVA layout?

>
>>>> diff --git a/xen/arch/arm/platforms/Makefile b/xen/arch/arm/platforms/Makefile
>>>> index bec6e55d1f..2c304b964d 100644
>>>> --- a/xen/arch/arm/platforms/Makefile
>>>> +++ b/xen/arch/arm/platforms/Makefile
>>>> @@ -10,5 +10,6 @@ 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_S32CC_PLATFORM)  += s32cc.o
>>>>    obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp.o
>>>>    obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp-eemi.o
>>>> diff --git a/xen/arch/arm/platforms/s32cc.c b/xen/arch/arm/platforms/s32cc.c
>>>> new file mode 100644
>>>> index 0000000000..f99a2d56f6
>>>> --- /dev/null
>>>> +++ b/xen/arch/arm/platforms/s32cc.c
>>>
>>> We only add a new platform if there are platform specific hook to implement. AFAICT, you don't implement any, so it should not be necessary.
>>
>> Like I mentioned above, there's some erratum workaround which
>> could make use of the platform_quirk() callback, that we want
>> to send in the near future.
>
> I think it would be best to introduce platforms/s32cc.c at that point.
>
> Cheers,

Thank you for the review and suggestions.

Regards,
Andrei Cherechesu




From xen-devel-bounces@lists.xenproject.org Tue Oct 08 19:03:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 19:03:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813449.1226391 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syFUu-0000f4-0L; Tue, 08 Oct 2024 19:03:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813449.1226391; Tue, 08 Oct 2024 19:03: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 1syFUt-0000ew-Rj; Tue, 08 Oct 2024 19:03:51 +0000
Received: by outflank-mailman (input) for mailman id 813449;
 Tue, 08 Oct 2024 19:03: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syFUs-0000eo-FE
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 19:03:50 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20608.outbound.protection.outlook.com
 [2a01:111:f403:2009::608])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0c612add-85a8-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 21:03:49 +0200 (CEST)
Received: from BY3PR05CA0042.namprd05.prod.outlook.com (2603:10b6:a03:39b::17)
 by PH7PR12MB8055.namprd12.prod.outlook.com (2603:10b6:510:268::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 19:03:43 +0000
Received: from SJ1PEPF000023CD.namprd02.prod.outlook.com
 (2603:10b6:a03:39b:cafe::28) by BY3PR05CA0042.outlook.office365.com
 (2603:10b6:a03:39b::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16 via Frontend
 Transport; Tue, 8 Oct 2024 19:03:43 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF000023CD.mail.protection.outlook.com (10.167.244.8) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 19:03:43 +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.39; Tue, 8 Oct
 2024 14:03:42 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 14:03:41 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0c612add-85a8-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hbZcr8PwzpeTIDi+Rdv0yqLYrB6qdElinDmFqaj9U708LMrI4w7ieoK7hQOdz0NnAQpeyZRblDh16KMtacUukR2PQK1XdUW1wEN1mb/yV9RzWLYrgiE4OvF9MdhB1lSNcnifV5huQNSMAn1yP6KmZ8KuDE43m4iKEQJwzNmRwc5jIpQn65jSy7mYoi4lJonTzOzMLQ+rzInK0yfsMTBI/G7WCp70SDLAc69tlZCAcEbMjwQwR+ZCqAc8qaR02bqwNVSyRH94DSqhI5xidJldSCdJ+JNo86mv4DnhWZkhhyfH8X5Nrsj6pEp1dCTRPfvebhWLIjniZS0LS16SkuOQ4g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=UfMfNJhx6rw5b2gLt6ypI/98O0iJiT3NTu8kQSKMFFc=;
 b=jLc2ohnUN/N7euT33txa1XyEhjGNrJqW/BNmEnbb3ZclfNVq5lIdFfXR2Jb/ogds5JAmFdDPMHYO3BzvZHNiYyS79Nx42T7ZHtZzDGpvRdGs9rppzYRp6Ljb529Gdn2AOYL5qK2sX69TPxX2NO4uP17rHq/qGb0tQfxYpbg3IGAZh4PYdErCrz2r6uYrB8v2LDNExTj1f3QUEz9oUFSZ9wjjkcZQWh78vYkOjeelo2K/AlcnoKqhaOLbHxAoKE+sAQOCv94WYq1iANFOVtzC7TZg0gxrOlHNSAogEG1paV41Bt1mn1JT1bWMc65UpH3FCzYm00KF1+BMjHIk/4JnwA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=UfMfNJhx6rw5b2gLt6ypI/98O0iJiT3NTu8kQSKMFFc=;
 b=sftyZOdxmrHUs8fw1LIIh/gJjCHJfkUfFAnftK6IKpnKrBzUMiW4gspIw6hJQNlIU5gBNcyqHagCifLyAAOV0GIekJiwbcyBQUx+J4BUoVCo5w5WPC+zabZVTn3nxR0AtNlxFWf7BqcNsnKzF4FghNyPHh9fqFSYnKv5x57zWFQ=
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: <f7f57f66-0d44-47b2-b222-2c154318ef6e@amd.com>
Date: Tue, 8 Oct 2024 14:03:02 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 29/44] x86/boot: convert dom0_construct_pv image param
 to struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-30-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-30-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023CD:EE_|PH7PR12MB8055:EE_
X-MS-Office365-Filtering-Correlation-Id: 1a2a3f8e-fd0b-417f-dd23-08dce7cbede1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cDJlcTFRekFXQzltTXJaeFNLdk8yRm11a0tWQXhnWU5DN2NlNzlWSi8yQjVB?=
 =?utf-8?B?cFptNEZvMFhveGlSOEQxaElaVmtEQWxUVVNnNkVWeVlrMnFJRFFWT25rbGJv?=
 =?utf-8?B?UG9GVjZpSFpwNVl5MjNtdVN6T0Nnc2NKZ1JFb1Q4S2l4RlVaYkdGNmQ5RVRJ?=
 =?utf-8?B?bVhpMkNvV2E3Z3FFRGEzMXF0Z0pjYUkyTFF2YytZS3AxeklMUEZodURpUUlr?=
 =?utf-8?B?T3ZtSDg1TG9PbDF3NWxZSXRVQWwxQXRmZzVxbDNySmh0MmplMmh5MDBqVTI1?=
 =?utf-8?B?OHgzUkw3YnprUzlmemtsQzYzVlEyN1Q0WWsvZE9DNEFjeFZWSGpQeFdTUWZv?=
 =?utf-8?B?WVRvR0RhbEhRTm5OQ1hUaUM5T2VzV0k2MlFKNUpXMzRIWWRCVFF6NSs3WGcy?=
 =?utf-8?B?T2FlVVcvOEpqM01BbExieisvbTRiOFM1czMzYWhESW9TMVBBMHFpL2oyOHJQ?=
 =?utf-8?B?TWNmM2lBUFpaK1FsRjZoR0FKRzE0ZDNzM0pvQkRTcGZPTVdzTXpGbTZqTXEr?=
 =?utf-8?B?OVFVMVpRRTVrTSt6S3RqS2FucHYyWDR1OWVsMkxJUDVRWG9kOVhRYXYvcWZG?=
 =?utf-8?B?WjVpc29XNEJOb044U1Y3a1NZeTVEKzU2WHZOK0ZGM3VLdThkSDhXMW5kVWpz?=
 =?utf-8?B?ZkIvbVFqRXlJc0hOaklncmdHclF4NjU5Ty9UNFpCVFh6MGhGNEEwUFgrOFE4?=
 =?utf-8?B?Ti9aTlV2UU9OS2oydkZhamdoZEM0bXNXNnY4WXRUUnVqVDlRb2xPMDlTUFA2?=
 =?utf-8?B?S291R1R3bk9YUE5qa244QUNDU05zRi8weEVsM2UySFh1YU1FZVNxbW16Zk54?=
 =?utf-8?B?MUlpRms5UjJsSHMyUkQvRjVKQ0g2R055OU5xWnpsb3AvdVk1WkNVSVVNdWpx?=
 =?utf-8?B?cE5kQ2dwbkhuTnBCWFRoOStjT3llQ1Q3aERmMTZSQVptM2x5SENvSDgyU1pV?=
 =?utf-8?B?V0d1eDcwWDN2VWxwVXVtTzhYcHA3YzRGbGpqNFZlbStVMlRkMVFJUWdRSDZ3?=
 =?utf-8?B?WDd4RDF2MkpIMEdrRU43VHg2d2ZwNXhQVEppVHArblZZZittQlo0SkdZVUww?=
 =?utf-8?B?dVhQb0ZrOWpDZTB0eGc0dnY1KytjOVQxQ3NTNE94SWtCNkZJUVlyNDNmd3Mr?=
 =?utf-8?B?Q2wzT0REblFOMFlabkRraEE5dEw4MC9UTmxscWRpNUtQTUNWeDhQeFBJS0RY?=
 =?utf-8?B?UTJ2aEFYRTRQU3hVb3FTOGdIaWdIbFRsUkJZZERtVGl2V3dHOEcrN3NqUm9X?=
 =?utf-8?B?VTF6RWlTOGl3clVNQTJ5bXYrTktHVHlCclVtcFB4TUpYRTQwMEo1dVBhNGlX?=
 =?utf-8?B?dURCYXNMd0h6dUZsLzNHMHFnZDc0Rm5SdXEwZnk3THZEUFhOTG12bHArS01w?=
 =?utf-8?B?NG53MnBLbWRTMGRKajNzcTczK09lYUYwcmJHVFVhblR0dDJNbC9OYTBaeWtL?=
 =?utf-8?B?N3hMYXdNV3lnNXlNVlZCaFpoQTU2amdUSmJhUzV2aVpLL2t5KzBQMEM0RnZq?=
 =?utf-8?B?aTRzblJ4QkJYS3FSbXlEMWR6RFdqMkd6WFIvaEI0L0lWK0Z1SjNOYTVUZHVo?=
 =?utf-8?B?QzFGOTQzNG5zOG84aEVnZ2VOcnRDNDdKaGwyTE4yVzladGpRckNSbzVHdEdo?=
 =?utf-8?B?djFDT1NOMHRLM1YwenNQRmliK0JSTnprYlhJTEFDWDRVb2FSVkVWbTE0U1Rq?=
 =?utf-8?B?MmVkSU56MkdoOUp0ZjQ0QVdQVGUvamk1TVZjdExYcTJHdnJ1MGNKWXIxTWw0?=
 =?utf-8?B?ckZLYkNoR3ZmSUU5UXcxR25CbG1ycS9jQW14R24yeGx4R1pXNnRYZnU2bUNv?=
 =?utf-8?B?T1B3amRMOUZsTVVBamxkZllGR1prR1BNSGhFV0x4VHpEQjBVZXA0YkVyZncr?=
 =?utf-8?Q?AlRHGKAmuQ3xG?=
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:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:03:43.3741
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1a2a3f8e-fd0b-417f-dd23-08dce7cbede1
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:
	SJ1PEPF000023CD.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8055

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This changes the type for the image parameter of dom0_construct_pv to be struct
> boot_module. Removing the usage of early_mod field for kernel module.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 19:32:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 19:32:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813455.1226399 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syFvp-0004aj-Uo; Tue, 08 Oct 2024 19:31:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813455.1226399; Tue, 08 Oct 2024 19: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 1syFvp-0004ac-SI; Tue, 08 Oct 2024 19:31:41 +0000
Received: by outflank-mailman (input) for mailman id 813455;
 Tue, 08 Oct 2024 19:31: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syFvp-0004aW-2X
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 19:31:41 +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 efbec36a-85ab-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 21:31:39 +0200 (CEST)
Received: from CH0PR03CA0322.namprd03.prod.outlook.com (2603:10b6:610:118::27)
 by MW6PR12MB9019.namprd12.prod.outlook.com (2603:10b6:303:23f::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 19:31:33 +0000
Received: from DS3PEPF000099DC.namprd04.prod.outlook.com
 (2603:10b6:610:118:cafe::45) by CH0PR03CA0322.outlook.office365.com
 (2603:10b6:610:118::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 19:31:33 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS3PEPF000099DC.mail.protection.outlook.com (10.167.17.198) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 19:31:32 +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.39; Tue, 8 Oct
 2024 14:31:32 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 14:31:31 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: efbec36a-85ab-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=MI87hFllK+d23o2f+RB8Eb6fUXcXXe9m5kCuWIh/h4gUTLJmjae79Lffy+3S6hZ3MF56zwoCmi4xUS26vXcNndqlpD8ywNsXCGrcX/FsOOUNr1FXjJH7RslZF+fmQS9DLyWqc1MKTWAGRP2bgzGelols5uSo9LY9Ea+wHogB5dW5zPviVTPcZ31d1zUtTUdFFs4Hj0B3lK5XIVVaO52LyaCzkYOBtFhVK6p6LX9e47yhVUcB2iykWDL3oUpYGPeQgqJvqWG1gCjKdtOgrkuXuj+Mj2L++IobY1MuraRy2gbG/5sxl3yAmQUAeGPD8YVWzLgHbS769UPbqq8mcW0Biw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=apPzJ4F/+9MDmm63nNvLM8UTcZm7W8vUUcFUquf+DTg=;
 b=kSCnlKX40UWAVey5VY/iK+eEYaQBUxtZI2jAiACPyLyXdDhg1rRcng0KA/3/FV6ohbxFyEu7gaNzjn4dboda3TGwdWheu6ElANBd78yzpANxrbQxVkiRf6twbsm7YidQxhi5EgIBnkH6qeBgdVfKpedwYsmmCBpSGO7E3AvZBj4EgOQ5i9cXNhs5PU/wzN9cA0RQ02Y59622UOAcfNvGGvyiwLMFrOAiIFu5td8I6eWvfLQzLNVyQPkXUX7UjCoaJAjJ6PH/pYLLCx0fK4n5S15QxfBAWL5OXVqMSoW0DyPE2GVMtDWzNgm9qJf/7UxoW08T6smmd6SEjcQWmydYZQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=apPzJ4F/+9MDmm63nNvLM8UTcZm7W8vUUcFUquf+DTg=;
 b=0CGiGQd6Cce6LEXGKrduGE1uf6gEPBTQJnYo5NfpvqmZsvfk+mBpuomJVPLq2KlaRFnlkkVhGDFlRmWXmNb3tpMLWA9PPBiG8x3vhVGofmGM/BgGAEWiKPCNaF2JoIsfLCkfPqTyTj8aHfXD+PXmeBBkHBzLpdRu8DbMyLpsACA=
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: <b86bdb83-d4fa-4ebd-ba13-adff8dba7bdd@amd.com>
Date: Tue, 8 Oct 2024 14:30:52 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 30/44] x86/boot: convert dom0_construct_pv initrd param
 to struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-31-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-31-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099DC:EE_|MW6PR12MB9019:EE_
X-MS-Office365-Filtering-Correlation-Id: 52abb66d-77e9-4e56-37dd-08dce7cfd0ef
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?NTVMTjhyd1laZXU5alVLb2pKZmdmODM5d01kSU5iais0b0hpcU9qRnQ4YUNQ?=
 =?utf-8?B?NkJub29TQk5ZWkgzTkg1N1g2RFEwSjN0cjl2UDZaaE1vb0p3b2VWWWl1czZo?=
 =?utf-8?B?Q1ZKUVpaWks5ODlqbU9rUmJZS1M2cUptVGlDdWJyZGgwOXNyOVpFTCtzb2Ns?=
 =?utf-8?B?YjZodmxHbVE4cTRlWWZRMDY2ZTFhNklmelBCZWJqQWdGenN1bUVvZWU5eUNW?=
 =?utf-8?B?SjY3am9NbEgra0hCblhqUUdKNzBJS0QvVWdnZk1kejBjL1ZOcFpJVEp5VUhF?=
 =?utf-8?B?VG5ZZy9PeC9zc2NwaVBUWDkzQ2JDeEpQZENUcm9NaEZzdTBhWHRqRDRFblgy?=
 =?utf-8?B?cVBENTRaRStDTWpqYmdzYjZHRmtKanVVTjZyN040TklHZTBsRWtIdUpzVGk0?=
 =?utf-8?B?cDZ0L2RwOVFqUkFWZVJvRnMwZ29jSHBiYkwvWFE0TmlBekRkNERidUI0TDNl?=
 =?utf-8?B?Q0lveEJoc09YZ240VFpjWVlySEEraXRnckdXSWRNeDhET1BHQlZ1QkRhdDRz?=
 =?utf-8?B?MHlTRUUyYUlqeVZDQWx2VURTbU01VEFFSDVOK2VvcUF5VmI0cUpJSy9XQlhS?=
 =?utf-8?B?SXNWb1VzK1VVVTEyR1c2ckNQRjBRVTNiOWJvMFZVNXNyRitFZVBPQlhWQzNa?=
 =?utf-8?B?K3lZVTNDR2lPbEZxelh5aFdZL25reUxDRG84VUZCdzh2dFpkNVhmMDRKbEow?=
 =?utf-8?B?NWM3bm1oM0dkWjFmZ2pKaXVVc0ZNZjc1ZkE3c2tHVzhuT01lVTh3azZWK2xt?=
 =?utf-8?B?OEU5aFo0dUxhU3gveFQrN2VONnJ4RFllUyt3SkQ2WGlnZHFqN0c2K2JPMnBt?=
 =?utf-8?B?VytuN0lhakJ4RHFhVHB0YVhjMEY4VC9tanh0cWxMQllaOU52eXlmWm8wcWlm?=
 =?utf-8?B?NHRydWRVRE1CU1ZDcklSY0lYRzBBRHVoZTZMRkgwREx2V1NNaXZSeEZFM3l1?=
 =?utf-8?B?djBjM2llRTNzQzA3aytCK2hXUTY0cUlLeFpzUVB0N21zTHpYK0J2Y1h6NXNQ?=
 =?utf-8?B?NjZPanYrdTg1SDRuNzFsV0N0MU9EdWxNRk00UnlZRk4vVG1idndLc0tzRVhK?=
 =?utf-8?B?eHgzVUg0UmlVWHhwTzNyc2xwNHlEL05Xd3hDSFNMU1lMNHEyZkd4L0w5TFFC?=
 =?utf-8?B?Rk9UM28vdHJwS091Q0lwWTVnNHFQZ0h4Q2QrY3NRcm9hK1p3NVJ2dmhJYUM1?=
 =?utf-8?B?MWlldHovOW0vbXVDbmZQc2JRSkhpZGVQeDNvZUdtWng0RmpkZEVmRWkwSUQw?=
 =?utf-8?B?NUQyQmkwT2JnV2JZdVlqdXpQci9WYmsxMmhVNlFMVVRiNzRoR2dXVzZmTzZa?=
 =?utf-8?B?bWFuTWRoYkNNRnJ2VGpvdlRzRHViSzg4NXhYQmVoR1Boa3VUZGRwQ1FuUmt3?=
 =?utf-8?B?R1JkWFEvS2hxTlZuMHBncjRFUmd0TEVPaTVmOGpGLzQwaUxUa1krSUdIYmV0?=
 =?utf-8?B?MXdESnRXT0hiWEZNZU5YT1B6SWdtaW93ZUdTSFJFcXRocHVwUHZiMmNNZEtu?=
 =?utf-8?B?a21teWJ4dVdKQVppdjErd0NZSm1TREpSOFhNalZza2F1aWN5WUhXWTdHTEMy?=
 =?utf-8?B?VmcyM3ZsZDd3eDVJZ2NFSFJwRjVvVDNycVVaMW50ZEY3cG5UVjA0MjNKVUF0?=
 =?utf-8?B?YmdUaUh1NTlLSDZERDVjSU00cnRZdWdtNDYyb2U3dkUzcjFCY1Ntc2t1V3Yv?=
 =?utf-8?B?NFpxVk4rYU90Rk5jSHJBSTFhSmpBU2pPMGxlTzFHaWVFVDRxZE55SXJ1T1R2?=
 =?utf-8?B?QjFDV09jYTArUkNlZ1A2Q1Y3c0tJR0JoTFdmYzkrTjNKbC8rcDY1TmZ2Rkhy?=
 =?utf-8?B?bm91c0xFeHJFUC9TUEd0eE1DVXltczVaUUVqbTdnV2xjMlB1V00xKzRMVklJ?=
 =?utf-8?Q?aZRO96nEddgFh?=
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:(13230040)(376014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:31:32.7633
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 52abb66d-77e9-4e56-37dd-08dce7cfd0ef
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:
	DS3PEPF000099DC.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB9019

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This changes the type for the initrd parameter of dom0_construct_pv to be struct
> boot_module. This conversion requires several adjustments throughout dom0_construct_pv
> to account for the type change. Removes the usage of early_mod field for ramdisk module.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

> diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
> index 7b6afe64d799..16b8c1e40998 100644
> --- a/xen/arch/x86/pv/dom0_build.c
> +++ b/xen/arch/x86/pv/dom0_build.c

> @@ -367,7 +367,8 @@ static int __init dom0_construct(struct domain *d,
>       unsigned long nr_pt_pages;
>       unsigned long alloc_spfn;
>       unsigned long alloc_epfn;
> -    unsigned long initrd_pfn = -1, initrd_mfn = 0;
> +    unsigned long initrd_pfn = -1;
> +    mfn_t  initrd_mfn = { 0 };

= _mfn(0);

With that:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

>       unsigned long count;
>       struct page_info *page = NULL;
>       unsigned int flush_flags = 0;


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 19:33:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 19:33:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813463.1226411 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syFy1-0005Am-F0; Tue, 08 Oct 2024 19:33:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813463.1226411; Tue, 08 Oct 2024 19: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 1syFy1-0005Af-AT; Tue, 08 Oct 2024 19:33:57 +0000
Received: by outflank-mailman (input) for mailman id 813463;
 Tue, 08 Oct 2024 19:33: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syFxz-0005AX-SG
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 19:33:55 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2413::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3df94f5b-85ac-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 21:33:53 +0200 (CEST)
Received: from BL1PR13CA0220.namprd13.prod.outlook.com (2603:10b6:208:2bf::15)
 by LV8PR12MB9450.namprd12.prod.outlook.com (2603:10b6:408:202::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 19:33:45 +0000
Received: from BN2PEPF000044A2.namprd02.prod.outlook.com
 (2603:10b6:208:2bf:cafe::8b) by BL1PR13CA0220.outlook.office365.com
 (2603:10b6:208:2bf::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16 via Frontend
 Transport; Tue, 8 Oct 2024 19:33:45 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN2PEPF000044A2.mail.protection.outlook.com (10.167.243.153) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 19:33:45 +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.39; Tue, 8 Oct
 2024 14:33:44 -0500
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.39; Tue, 8 Oct
 2024 14:33:44 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 14:33:44 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3df94f5b-85ac-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ol5M3zpS3fSp6xmgLA2vQUhOb44AUYE+JSg0Re5GSqwwt+Mls0E8Uht+xFETrRqPqERAjCMn0tl+oPdPId1L6uALliABg7mETdbRaJrB/cn8WgNVc1o/9Hy35C9WRefBY/y41kE8XqaBMnPK/2AzczZ6u8YKHlhbLYk/Q3X6wOFW8mh22tVewxjKNZzhpnKPPcJIrdts2tILAGeb4zCfyv+uml+kKcOE5Bgv4bd6Wr8iVWhWyfsVBDUPuxBxhYgYSO6stySar+5HQfxm1zhCM4cXOVDAgQYuO2ZHmDoGs2wmD4LpBvf8EDs6gt/hNJXoMRjDOTxolD/DpkWSudewRQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=okIt+cD0hk+Ewt2+WSScyTrFmX5YmiHnh3+ZNoFavOg=;
 b=f8sW3UyrBGDDOCTZz7NVHsjUgUDGQxlDZL5AUPQ/XhQXha9flJeNZa7ul8y/1mt6g28F05QXXhYJkYh2x14GCETnutdbJyu+vacZDujTyXtBtYKEPRGyOH+y5OPfMOvlGbbCNDyFLCfCQQLPixVrt7eoyEtmUjZIe6c1p9pACNvEyrkzoEuqogdgJjdGkJ9srcQltMusaBbmGTGQjtztXIMueY71OYvFuml9IiTG2CMTd7nEIJ9YEDdKT+GbuljN73ItxTrUseQBgwEV3ndOUn6VCj2XaTF4aY4f+sG3MKH2E08l+QN9IhA3lN80X8MFx0sdk0Df0J9DPlZ5wBUAkA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=okIt+cD0hk+Ewt2+WSScyTrFmX5YmiHnh3+ZNoFavOg=;
 b=KoKForNaqrzqFkx/qKiVJgQF5oYGA5/7DpZl6SRfccmVfyiNGsCxMxdx1CQ8CAzccvBOZSnwg+TJc6Duio5aAlfmVksc+VMgwiGhwDuy0VItB4tE3G2uHWz1VH0L9OqAkhRzYN1APr/Hmev+Ueht8WAdS8j+J3y1TsjApNVA7BI=
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: <9d98acd4-004c-474e-9b3b-0e201f5e9862@amd.com>
Date: Tue, 8 Oct 2024 14:33:04 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 31/44] x86/boot: convert dom0_construct_pvh to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-32-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-32-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044A2:EE_|LV8PR12MB9450:EE_
X-MS-Office365-Filtering-Correlation-Id: ebd4388e-00a8-4c63-14f8-08dce7d01ff7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?Sjc3Ni9zZUlreCtDd3Q4YUxyekZHMlhyYkdnbHEvcXprcmN4L0krUVJsbXBR?=
 =?utf-8?B?eVVsZjJCdjg2bXR3UjM3SmZQZ1U2V0NIRHQybklKejlEOWJ5TDkzL3k2ZWtu?=
 =?utf-8?B?SjZpc25NSk9aVjhMWlNwVUpNd0xHT0h0WG9sZUUvVGVrLzFnWVlSVHU1bFJF?=
 =?utf-8?B?N01VR2NlS24vTStDaHZINWJxRlFMNDM1OUp4dDRMZ2cvMzkzUjRtYlYwOWZa?=
 =?utf-8?B?b2VSWXlmVW9OcE9Ra2NCWURjaFEzVTBZdnlqeVpEbENLT25LQzJ2RDNDT0Y0?=
 =?utf-8?B?Ry9LbVNOSTFsNXJmSzJoMCswVzJGbG9NQXhDOFA5QlJocEZSZllmT09xbGk5?=
 =?utf-8?B?Wk5FS0hnYWNmcjYrNDUwTmV5dE1BYzJqSGRpZmNHZmhWMnRORm95ZnZibXN0?=
 =?utf-8?B?OVBCV0hadkxFd0FqWVVGS0VxT1JFWXIxN3h5NmI3dGJza0xiQ3ZGNWNmSjhj?=
 =?utf-8?B?bmRkNmprcXJlalFxMzN5ZGlvam1raUpURkV6bW00TUpxQThVUzhnaXBHdTBn?=
 =?utf-8?B?Nkpudk9DTWU2R3VzaVNzZVgxU2R6NzdFMWRzNGpnY0h0MWE1NlhRU2lkMEpo?=
 =?utf-8?B?eHU1dkhkeDN3MWhaYlJDTTVwRmRHT1VuOXppVGgvYjkzS3hoZ0VJSFVTVlla?=
 =?utf-8?B?VmQ1Y2g5aWZnbDNuTWFvakZTTlAzcm1QU0IvZkVjV3h5N05aV1U0alQ2S2lS?=
 =?utf-8?B?dSs4cHBWVmFZcEJ6TVZHOTVPUmx1dVNEVmV0eW9GeXMrZ1VpUld6TVJveUk4?=
 =?utf-8?B?ci90RTlzQ1MxQzY4UEJlNnA4N01YOFlValJTb09tbWllWjhiWmk4ZHQrR0I4?=
 =?utf-8?B?MHpIc0d5OUtYVWh4N1l3TVdpOUJ2Z2dzYlRCeE9yMkxWM2NoakhhU2pZYjJi?=
 =?utf-8?B?dHAvcVRkMTVpM0xZSEpOUkJPQ2pPYkpsVGg1emlxQ0tpYWZ0QzNZVWtDTXE2?=
 =?utf-8?B?Y1ZiT3V5a0MxdThIeSthS1pGYm9QaXVoM0dveWx1OWl6dlNtRXpva0Z3VXR4?=
 =?utf-8?B?bWY1RHF1NFRUTitDMW1Pd0UyNVJkMWxUZitsempCbElISGN5bmhkSVRwNllF?=
 =?utf-8?B?VDYyUDF2QmtZaXE0MmFYUVNzUnJraVVSWVU2WUNyd2tJREpFN2NYYnpYOU1T?=
 =?utf-8?B?NzRVRVExenM3aDF4ZEJlZDNnMndVU1VBMVgyQWVGTEkvWUdSZldMWkYveEFX?=
 =?utf-8?B?QzNLZjNydlI4VDJGZnptcTVXTUJCQzZCQ3FrWDlBZzlYWGhicTczc2wyR1JI?=
 =?utf-8?B?anUxdk5nUGZxOERZTVgzeDVERWZlUGYrNkFQU0czcXhkN1Y4OHZYUmwyYzkx?=
 =?utf-8?B?V01aWVQwNWNmbXpUU3BWeEt4djNJN2xlWjRvRWU0VjdTVzlSNFMvclRxcUZu?=
 =?utf-8?B?a3E1S1AxVEZMM2R0a1hoaHlRRDh0d1hkV1k4OFhoUmNQamFTY213bVVzUkUv?=
 =?utf-8?B?NkhpcnE2TUd2SGhoajlvdnFiS1NTdzlEbjR3dE9HRDY1K215NFpKYU9CMnp0?=
 =?utf-8?B?V2swZ3dqcklnRFE2bFc2OTF3b0ZnQ25CVjdXaUE2aDlmV2ZGRlllelhoelE0?=
 =?utf-8?B?YTh5MXVvVG1QNEJDbzVnelplYndZRGw0QVlBS1FNalp6UmlQWW4yNEttOWhF?=
 =?utf-8?B?cDZ0VHlnaWxXR1g0K01PTklJUE9DRmxiTUZrbzdVYjRQaFVFdnl4SnRlc1ox?=
 =?utf-8?B?WVdHUzlOR1EveFJTUkZlRmFIYjlZUUNQVnEra1QxdVdTb3RCZzFaVkswWktL?=
 =?utf-8?B?ampjd0dBWG9laVUwUk16ZWZDaU9tcFEzV213eVRtQUkzTVNqN3JZbjVxcThz?=
 =?utf-8?B?WHhYeXo3M1o2cGI5LzBMZU9sVUs1dDFMVlA4azAvdWV0b01MYi85VG43elZX?=
 =?utf-8?Q?eRM+bg6ouQC6T?=
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:(13230040)(376014)(36860700013)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:33:45.4643
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ebd4388e-00a8-4c63-14f8-08dce7d01ff7
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:
	BN2PEPF000044A2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9450

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This changes both the kernel and ramdisk parameters over to struct
> boot_module.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 19:43:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 19:43:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813471.1226419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syG76-0001E5-89; Tue, 08 Oct 2024 19:43:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813471.1226419; Tue, 08 Oct 2024 19:43: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 1syG76-0001Dy-5f; Tue, 08 Oct 2024 19:43:20 +0000
Received: by outflank-mailman (input) for mailman id 813471;
 Tue, 08 Oct 2024 19:43: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syG75-0001Ds-78
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 19:43:19 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2009::61b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 90661be5-85ad-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 21:43:18 +0200 (CEST)
Received: from MN0P222CA0021.NAMP222.PROD.OUTLOOK.COM (2603:10b6:208:531::28)
 by SA1PR12MB7366.namprd12.prod.outlook.com (2603:10b6:806:2b3::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 19:43:14 +0000
Received: from BL6PEPF00020E63.namprd04.prod.outlook.com
 (2603:10b6:208:531:cafe::e5) by MN0P222CA0021.outlook.office365.com
 (2603:10b6:208:531::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.24 via Frontend
 Transport; Tue, 8 Oct 2024 19:43:14 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF00020E63.mail.protection.outlook.com (10.167.249.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 19:43:13 +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.39; Tue, 8 Oct
 2024 14:43:13 -0500
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.39; Tue, 8 Oct
 2024 14:43:13 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 14:43:12 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90661be5-85ad-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jO4/MQ3RPjVzakP4WIRbEXvJSTkPTv20yMxbuD8YZ+EpJXvLyoIfhY96x9+G6i/pBHadAG4Fs3Sa+Pl4KS+PNWzit797XiWy4oIGOpkIoNp2POVhEIDTmC3pdvS8ty8qHPxHrswRHurhySdTMI9af+8yzeq27Gkr+xNVAipS1/xUeUI04vBiL+BBC8NB7hcsfswg1i7QrKilbLuofCvmLw84E1R12vGTpHcyXhLCyoxm9rPUo4RhBl1w0dHoOcbzk/L+yd9UUzNVWalxhsVCYq+0qkjysrZiMdSANa/xNdd/YRiGn3bVzuJHvzrpF3xzv/ydkwJ3XnN0M4HWp+TtCw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=VSmFVhzLLBKIjVX/jOp7rkFwXounODZnJUDZfLr6Zuc=;
 b=HSafqj2XMAlIqzxQfo+Bz1vHHbErSawVYsaZ8Gqi2+n4HEFZUvgyRYw3RQcBfFPYQEiBYk+zB45/dHKOmJ7TmBrCdIUV3fb+1yFSgEJMUQ8B4OPz6FWFHV990poz6I3vrOcsy17xNPTzVxZIfd4tc4XJfFUNhNAUKBWvenIB5arBlhq4fH40Hh6i3LsrYENPJvbSuuxjeR+/Mwzblyb3fblUtWiuwCXDein36jvrp/jIrqNm239EC6LAweuk13BN2oeLko7RyekgVtD0bMPTBBhIfAg8IRiyFwBeSrIjD+G88iAP/ZoGBh6nAGoems+X6f+Wug4/+cbcbVcwQ2FyRA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=VSmFVhzLLBKIjVX/jOp7rkFwXounODZnJUDZfLr6Zuc=;
 b=ESjmbpLOYUKtZ0JEqL83MMoAazwvwsQ5SUYopz6cF1akxA97cuv+vqkJGuZ0+xfe+Ei3dwEvMRvKDFQo7+VfhOmcDGAT20+kVxlYEBscQ+w3Qvtl5mpkcw0OFKpEfKnhH1aa7qqX6UszOgRf/OsxC2dg22OTrADKCp871QETlvU=
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: <c39062b5-f344-44c9-b61e-b8281d8ab6c9@amd.com>
Date: Tue, 8 Oct 2024 14:42:33 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 32/44] x86/boot: convert pvh_load_kernel to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-33-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-33-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00020E63:EE_|SA1PR12MB7366:EE_
X-MS-Office365-Filtering-Correlation-Id: 85f02840-844f-45ce-7d4a-08dce7d172d4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MHNPa3NiYzlkK1VIb01scHU1RXZrWU5na0RWNnNSRnhDb1pvcC9lTVpnQjAw?=
 =?utf-8?B?a0pHWUZWYyt0a3A0MWZLSzc1MmZ2SXEyY21wcGQ2NHJ6YzZrZTlZNmRQanJ6?=
 =?utf-8?B?cVN5VEl2Q0w2b3A1bVVqM290MFBqc3R2ZktvQUhGS0daenYyNTNNeUM1VmVJ?=
 =?utf-8?B?TWN1SzZkVG5YYzQvTU5uaU8vWlkyaTN5Q1hZVDhlTHRSNjdVL0ppOHZlMmxQ?=
 =?utf-8?B?eG8yL1lwb1JzZmRnUTVPTklxb0IzRDRXRXRpaFhwTEh4Q3ArR1JiS2ZEWGNI?=
 =?utf-8?B?bi80K3QzN1VEN1BEWW9NeVVaQVF4dHZXd2Ixa3RNZGM2QnNRbmN0RGYrblNX?=
 =?utf-8?B?Qk14cnRaR0FOUzVEMmllWlR1dTRyV25pOXZkc25MelNJS3hWN3FJaHMveExD?=
 =?utf-8?B?Y0Q1TXdzdytwckMzd3ZPazliMnRFK3ZLZjRadkpOKzVCVEpiZy9aM2s0YUEx?=
 =?utf-8?B?aDQzamhZdmFzVC9wQ0VVem51Uk0zczRBKzBJdTlyS1ZTNkdEVEN2bFd5T2RG?=
 =?utf-8?B?OG03bXB6ZDhNNW5YbnFSME1za2VFK3VqVzZEUEQzRS9ObUlJWUVOWTk0TE1n?=
 =?utf-8?B?a0NETlJSTDZZYmY0YWdyWU5OTW1MQnY1M0cyb1JzT091bGhGNlQ2N3FNM0d4?=
 =?utf-8?B?ZEdibXl1OGZ1WCsyWmcrQS9PQ1RHSXE5TFpWREdqYmpSdThHVVlCd3B2T2lp?=
 =?utf-8?B?Um5iQXJFeERPUThvOEVjSXJISDdrVjBNUlYzNThuNDJQNGpOakV3U3JCT1dZ?=
 =?utf-8?B?c0Z2LzNvTHdSVHV6WnpRb1hEVFVUa2hvRlV2RUFVZEN3blJiUVgyUVpPRjFR?=
 =?utf-8?B?bWdrR0hrTUxmblM1VUN3cklTOXhsc2dTRFVXbk5yTjl3QnBrR0hIRkNMd2U2?=
 =?utf-8?B?eXUvZ2dMZ2svWWtiYmd1cmVvZit2M0hwTnN0VGFXc3hjUEtUODB0ZzBkVlJW?=
 =?utf-8?B?TytLdnNaYXN2RFBOYytSR2xvY2diZ2VVVDk0a0ZLQkpubEhQR1BEaGRaNmlY?=
 =?utf-8?B?akUzOFArS0l5NU9UQW91enF6VTU2VEdja2FiK09RS2d3d1BDckhLRjM0UmpB?=
 =?utf-8?B?WnFEN3RCaC9PcUM5dDZPK0UvUlBIbkZKMEUxNVUveGtTWWFrempCVXVDOWZ4?=
 =?utf-8?B?QlRlREVTLzFJM3FrRXdvdGFuVFB1cGlGWUhQdHVSdE5qUC9NYWpZY3FuRk1I?=
 =?utf-8?B?VVRSVGxOVkQwaHVGaVN6QjBacXNKSDNic2Z2bHM1NlpqZ1l5YTQ0U29vMm54?=
 =?utf-8?B?VkZvNDdFVU1FcVF6aitFOUhkS1RKMitFNVphdzhvUVBMTE92THBQN3h4cURM?=
 =?utf-8?B?S1ZOQ05lNWlQa2IzVWpranBZaHpIWGR5V2pUQXRPVkZvd1NOYm5nRXlMZ0Yw?=
 =?utf-8?B?TG5JN3lYT1htZ2ZzSzBBRjczUnoremIzZkdsbURMS0tOelpTck03dmxjUlhQ?=
 =?utf-8?B?M0VrdUNvUk5LTzJyeHlseWE2SUkwUnRQRklmSnlLODJwU0dHNVNiTWtTQ2V5?=
 =?utf-8?B?d2c3dnJVMkl3QnJRdUFxWjUxR0t4K2VjWEVEdVNPSXFtQUNRM1VkTkw1L3lB?=
 =?utf-8?B?K2dLb2NEVHNKZGE5NjFNbkRCc3ZlSGEwRVU0bXJiZFlMcjhnZHJhdktpeW1F?=
 =?utf-8?B?eThIN20vSnd6Z2RFNHVqSUlmM1JPM1B1WVNTYjh6MkNXUkFaTWg1bXY0RWRv?=
 =?utf-8?B?V0hqOVBMeXE0UzhWYXl5U2d2enFWNkxobjlnNHByR2FuM1JvVys1cGRvQXVX?=
 =?utf-8?B?RkdYVkhDV2hYRXN2K1MxYjhJcHR5YXJVQ3lMK0l1VUVNTnZhYVZXem9QMlpS?=
 =?utf-8?B?ZHdLV0tOSHIxcGt5NWI4U1hVUGlxVjN1cHNmWlRIQTJMbkEzWHdpRkQzYzNm?=
 =?utf-8?Q?s2Ghhnx1XsNUG?=
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:(13230040)(376014)(36860700013)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:43:13.9852
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 85f02840-844f-45ce-7d4a-08dce7d172d4
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:
	BL6PEPF00020E63.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7366

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This changes both the kernel and ramdisk parameters over to struct boot_module.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 19:53:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 19:53:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813477.1226430 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGGz-0005m4-5h; Tue, 08 Oct 2024 19:53:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813477.1226430; Tue, 08 Oct 2024 19:53: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 1syGGz-0005lx-2n; Tue, 08 Oct 2024 19:53:33 +0000
Received: by outflank-mailman (input) for mailman id 813477;
 Tue, 08 Oct 2024 19:53: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGGx-0005lr-5w
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 19:53:31 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on2061e.outbound.protection.outlook.com
 [2a01:111:f403:200a::61e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fc1fea98-85ae-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 21:53:28 +0200 (CEST)
Received: from CH0PR07CA0012.namprd07.prod.outlook.com (2603:10b6:610:32::17)
 by BN5PR12MB9462.namprd12.prod.outlook.com (2603:10b6:408:2ac::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 19:53:23 +0000
Received: from CH1PEPF0000AD78.namprd04.prod.outlook.com
 (2603:10b6:610:32:cafe::58) by CH0PR07CA0012.outlook.office365.com
 (2603:10b6:610:32::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 19:53:23 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH1PEPF0000AD78.mail.protection.outlook.com (10.167.244.56) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 19:53: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.39; Tue, 8 Oct
 2024 14:53:22 -0500
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.39; Tue, 8 Oct
 2024 14:53:22 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 14:53:21 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc1fea98-85ae-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=QukfxgqRlSt3kxnTqa2WWp/E9akBP+X3Z58br+8KUncJc7yPGtPgbNZyKJE5+ziolGFlr3kt5lPrLtwthb42YafpcZuvmaULcFpugKML5fw7eawdfn8Bn32U6N4trL0kilyGe1+B7SDT/pxKlxxbcXaNchzawA/E9QTDyCKYng6cAEi0VAYV/1TCWriUwjRK5yufMMdYidtrThwuVgBkgyOas90DFx1WFDlPUPr8xqx9I1zq/egVxPubZAgIhWWp7Hd/qx4TXSFocLWDU+tMsymGmJdhixfPkaf15IcXXbRZ8QEJa0paxgkh1+6CHAWOlntzqTyUxBK9cJqo/XUUiw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=US0Sv60N6TXMrrj6TOMAAQ3NEaVsmCgdayuC+a1mQ1U=;
 b=IrhQD/7wqEiFkpdmUoNOCAJpQlk8Dg0t/a4Pm+rCSmfJLAJg8O7GBD8u5ZcxIw3Gz9HBRchfEi9HyrSRVi1NICetoyTwb7jkoDUblum1cmHJp65nfQKrCMjjPQ6ABPvgjP2eGFG8twEZOflVxgNaViDZxj9qg6RX9hZ61m0ZJiYQmd/6xH/TnlqzzKtC//rw3tyXyUDRWylc6m/M5bSg519DOvkwFju5gg3V09dF2KEnpXHBR3yaVswpHJnDo/yRBXzP7k8fEMngA41mgFwi+Bh1jsjQX6L6kocgHPCWmIhIKdmWEjL5xNusx7odDNZQXxgm2577ObxA8c1eDCOVTA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=US0Sv60N6TXMrrj6TOMAAQ3NEaVsmCgdayuC+a1mQ1U=;
 b=MroJDzqaChf4MOY8Q8JZD1HGPCkgZTMd65VIM3NNDicGw/iDUVnidEQgd1vLB0bvo+gWGojZ8ZbsTS3dZ6/exD9qnsl5Ud61JHgyS8K6sha/cgIH1KzBtMXpfa8kcADGK/45NyGg/8WPOXu07J4T67uw4TXhPULSiJUNlsid6Oc=
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: <45f6d47b-0b17-4451-8956-c42260d9aaa5@amd.com>
Date: Tue, 8 Oct 2024 14:52:40 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 33/44] x86/boot: convert initial_images to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-34-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-34-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD78:EE_|BN5PR12MB9462:EE_
X-MS-Office365-Filtering-Correlation-Id: 42aa4c94-184d-4002-ecba-08dce7d2ddf7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?aHlUOHNDOGh1SnoxSEwrUUVSMVhUVGtMSzdhMDlMcENsZkxFSEsxbm53d1Vj?=
 =?utf-8?B?b1ZWaWQyWlpKYklZZHRuUHYzTVFFN1lMNUpsR280bU9SOUV3M2I0NXVwN0ZN?=
 =?utf-8?B?VUFTK0lET3pHVzBtcmpOVUNOWHg1b3EyNEJubSs3SStEdEd1WGVoUlNZZmV6?=
 =?utf-8?B?TWxhb25XeTBBbzdvbEMwelVYRUVka0F3NWh4QzAvY0J1SnJiL2dPbXFHU0RB?=
 =?utf-8?B?aERSR2pBSXcrVDZsYlIvby83UzZMZVl5ekpYTmJiSGl0a21lK1l4a2tmSU5T?=
 =?utf-8?B?RTVITEt2d1BoTGV1b1J3djFHQVVqQ3VIanRlaHdkU2RXNWhJUXFLb0tad08v?=
 =?utf-8?B?T3BvOFdZdGQ1ODRxQ1lodU40V3ZoVzlqcFlSTWZ6azB1L3BiWXNaSG9IaU12?=
 =?utf-8?B?V2xPYzk0ZkVRbm5pclhlY0lQbHJEWm82Z2ZCUjVDYU52RjNSSVdkVmJXM2pE?=
 =?utf-8?B?enVSUDNxaUlGaDRGSWFTNU4vZnlHOFFHV2hOWDhzRGJUZ1UxV0I3bXZ2dE1S?=
 =?utf-8?B?VUI0N0Q4TTRHblJJcDlRdTZSdU1MQWRpbkhSd1Q1UFEzclI1VUNBMHIxcnlN?=
 =?utf-8?B?S1RRNGhXRkVId2JSc21jWE9CQi8wRWtMY1hrQWpZK1RLTEFxdnk2L3hyaUxw?=
 =?utf-8?B?WTBtMTVRZ2pWUDgrUW5nZVZhNWFFWk5DbUo2elBIRTVmQmtZT1hMam1wQWdY?=
 =?utf-8?B?QllGRmdnSTFQODRVSy9WV2U0cWhOeGlwMWpKR0IwM3VFVktOZjhHcjRWTWxG?=
 =?utf-8?B?bGh6Q0JuWDJjbjExVlVZbzA4djNLWG5hWCtIWVV6aG1sd0JaTVo5RjZPa3B0?=
 =?utf-8?B?VDE3TjlJVmJiQyt4UDdZMmJaZHRSaHBYSjd2OUVnOWgwRm9nblVQV1M1UVlu?=
 =?utf-8?B?QWIxUm9CTnZ1M3Q2M1ozV1VGamdSb3Y3L3BGTGdjcllQdVBFVVgyNTI0MnZO?=
 =?utf-8?B?V1UyenU4Sm16M1RXVkI0bjRGeXU0ZXZhek5kanhTSENubC9JZ2V6cUdOeCs4?=
 =?utf-8?B?UzdiUmtBeE1nZmtjWmNKV3VwR3UzekRLUEx1Qkg0Y2J6RFl1SUdqS0VpSjdl?=
 =?utf-8?B?ejkvc2lkV0NaL1hwcjJMUmloSE9JV1R6d1Jra0xRWmxQcExwQ0hFNlFxU3Ey?=
 =?utf-8?B?OWlvNlp3bVJjcFlKWWFjM3Z1eXo2UENuYXVESHR4b3hlQ2U2MU93Ni9zbkk5?=
 =?utf-8?B?WFpWVW1OSDNET1lQMFV5SUJIN1lwUWU1Y2VtSTU5bVphSThVb1owWG1KMS8r?=
 =?utf-8?B?dUxybHpYaG1jTEdMMVJXWkVWWW5ZWGkxN0dUM1lRbm8yQ0tKS2xRbCtLYmMv?=
 =?utf-8?B?Slp6MmVmU0RhWXBEK1BEZ2M4OVRQNkQ2WFdnbG0raTArb3kxY1lPNDBCbWVv?=
 =?utf-8?B?SnlodTUyRVFFenUzUzBYVnNYZVdXb1phKzZhNlRybU0zVFc0K0F6MVA3bkVj?=
 =?utf-8?B?S2MrTCtHT3lWNkpSMXdmNG5YRW1YNnNDMFdqem45eHU0ZWtFVEU0OHJwVldC?=
 =?utf-8?B?My85bitlbWxNZ3pJcUF3WDV3bGRaOTdVM0pRV0RvY2VhSHZJVUF0KzRIeno1?=
 =?utf-8?B?WTBIN01YZnBSVW1UU2RNUDJhbm1VczVRQnJFTXJ2TTY1WXJ6Z0tGNXJsTndx?=
 =?utf-8?B?ZjNKVVlNK05nYVp6aGluKzNaOUlrZVhtRlNTOXRXb2o3MUV6MUQ4Y0UzcWxT?=
 =?utf-8?B?TXRtRlAvYytRWmZSbkRmZ2h1dTl3ZklMRDhoTmRGMFM1aUdEQS91UFZ6OGFX?=
 =?utf-8?B?aTV3bnlVbURaZXJETmtiamR5c2VPbEZJZWhvZlVGVnl3T0R4Ujd6VTdmQ1k0?=
 =?utf-8?B?MG5wYUo3b1ZQZ1NLV3J4RnE1LzNWaFRPMFluTXg1em9nYzlVb0s5U2lJaVFo?=
 =?utf-8?Q?oqV4bFABXuHjx?=
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:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 19:53:23.2147
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 42aa4c94-184d-4002-ecba-08dce7d2ddf7
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:
	CH1PEPF0000AD78.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN5PR12MB9462

On 2024-10-06 17:49, Daniel P. Smith wrote:
> The variable initial_images is used for tracking the boot modules passed in by
> the boot loader. Convert to a struct boot_module and adjust the code that uses
> it accordingly.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 15 +++++++++------
>   1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index d5916e85f68e..30a139074833 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c

> @@ -336,8 +336,9 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
>   
>       for ( nr = i = 0; i < bi->nr_modules; ++i )
>       {
> -        unsigned long start = initial_images[i].mod_start;
> -        unsigned long end = start + PFN_UP(initial_images[i].mod_end);
> +        unsigned long start = initial_images[i].mod->mod_start;
> +        unsigned long end = start +
> +                            PFN_UP(initial_images[i].mod->mod_end);

This can fit on a single line.

>   
>           if ( end > node_start && node_end > start )
>               nr += min(node_end, end) - max(node_start, start);
> @@ -353,10 +354,12 @@ void __init discard_initial_images(void)
>   
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
> +        uint64_t start =
> +            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
>   
>           init_domheap_pages(start,
> -                           start + PAGE_ALIGN(initial_images[i].mod_end));
> +                           start +
> +                           PAGE_ALIGN(initial_images[i].mod->mod_end));

This can fit on a single line.

>       }
>   
>       bi->nr_modules = 0;

With those fixed:
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:05:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:05:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813486.1226440 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGS4-00028P-5z; Tue, 08 Oct 2024 20:05:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813486.1226440; Tue, 08 Oct 2024 20:05: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 1syGS4-00028I-2h; Tue, 08 Oct 2024 20:05:00 +0000
Received: by outflank-mailman (input) for mailman id 813486;
 Tue, 08 Oct 2024 20:04: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGS2-00028A-NO
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:04:58 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20617.outbound.protection.outlook.com
 [2a01:111:f403:2415::617])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 953a5014-85b0-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 22:04:54 +0200 (CEST)
Received: from CH0PR03CA0074.namprd03.prod.outlook.com (2603:10b6:610:cc::19)
 by CY8PR12MB7241.namprd12.prod.outlook.com (2603:10b6:930:5a::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 20:04:50 +0000
Received: from DS3PEPF000099D3.namprd04.prod.outlook.com
 (2603:10b6:610:cc:cafe::6c) by CH0PR03CA0074.outlook.office365.com
 (2603:10b6:610:cc::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 20:04:50 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS3PEPF000099D3.mail.protection.outlook.com (10.167.17.4) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:04: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.39; Tue, 8 Oct
 2024 15:04:49 -0500
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.39; Tue, 8 Oct
 2024 15:04:49 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:04:48 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 953a5014-85b0-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=pkzy1NxOaHKPrKbsp+c1k6QXyYG7gH3djtbvZck2wfm2y+7gs4a7xEIjUK+Tnx7SReVF59EWAsIRvF1evA5d3dQL9wKs4fgPp82UYueezE38u6hjc1LCxovMFBRhOL+K4hGjQ92mhZItXag8XipNKrky+iACzVqesbhbNXm/OYD7ek8u094fqQiYNSYl+/5iyfbKNzyE8kf09g843cRxdrrkuTSZTsK8IwMKPBMuaNcdBJhzKgPfY1FFrybrhITCK3BhzuYP8iJe1+1NVOtRt8se2+dKl8jMh5pwWxKkA7itRMXDu34HJPQg6flfzeSB4ExefgHfsF5Iwn7bCYylUA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=T/zwxJmTDvd+Sb0ZsZpXiiC6o797eVDbhEu5vYueHsU=;
 b=ccl67xwwlV3/tK+dYY3fzbhzSLTOnWqoCqqTywZneKpVaRHKmRqT8bOlTetYJCX21zFEyhKp0omoluxyebDTzGtSudxCvArfmxrRjkJ4LsziGmZ8ii3Rti773zHbdjrP3/WhCNB20HymWVKgJzonKUMXvtBXqisola6vGGMcm+f/fx7hOXqBIa3dhaXqXDhQxd3l71i12cp/sSdSQ0wqn0Zgcw9mu5/L/qE7Y7ir32L3wInAFcE8WEONMPIv+fAWqEmUdlcFLJ63yTmWODUUP8oKh4xAHREXsxld0OMmYszok60I8ZnZxelMK0ofxL4JhY9cJRHH3HsujmWL7m5oAQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=T/zwxJmTDvd+Sb0ZsZpXiiC6o797eVDbhEu5vYueHsU=;
 b=jkAfD2NQ0Ti5jWs+E3HB3LyZ0NFQVapJItdCDx9HKWvlRVQc9pbpbmqJi2e1MIb2f7Qi1BSZSZA4iX552eeH5pqtGj7vOcWd2ZCGdOn3BnrCfS2i9YveDYN3xHuZhHQKbvndkwvcRQFW6k/+DxoxcAy/IbHzDDu/iDpIhlUGIlE=
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: <bdec9cdf-08f8-4fbd-a626-703f58fa0938@amd.com>
Date: Tue, 8 Oct 2024 15:04:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 34/44] x86/boot: drop the use of initial_images unit
 global
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-35-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-35-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D3:EE_|CY8PR12MB7241:EE_
X-MS-Office365-Filtering-Correlation-Id: f5730df8-8c5d-4e1d-626a-08dce7d47774
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?YWFHdlBUQ0FNakFsZ3JEaHhneXI0Ym5Hd2IzQkIxdWJOaWUvc0NQWllVdEdD?=
 =?utf-8?B?U0VHK0ZvUkd5RkkrSVE4d2Y5c24xMjZlbjhzN1l5TEZuN0NEeWhQR2E0dW5V?=
 =?utf-8?B?Q2ZrZzRwQ1pjUnJvYXdLTE5xZDlDbUFldHpzajBzRGw2clkwalB0NngzUHNG?=
 =?utf-8?B?R0k3KzFBcXNva2ZiSmlJZUVNOE1oOXREK0JsUFRweUE4eDBwemlPdVQ4T1JG?=
 =?utf-8?B?SzhTcjR6VlN0amltd2FvWWR4MFlvUXB2Y2hydHVGYjJaR3VaVU9qZW44MlFB?=
 =?utf-8?B?OUhkQzYwdVFvbnRaNmlwQTJFNWRPVnFhZkZEVEJCaGhmYmpDZkJkSFhOVW1G?=
 =?utf-8?B?czNSbGdTYW5BTHhwT3FtNFVFQnUxeXRSYmp4Y3hNUXJoZ2pXYmhJTzM1ejVS?=
 =?utf-8?B?NGJTSjU3bXlEbVcrSU54cWs5K20rUWJsZkJMQnphd1lnOVZ6UDVaZHl3QUlh?=
 =?utf-8?B?MHYzcWZwa1hmc1JCc3l2V0JYZUtQSnE5RGpCM0NGK0Y5dHVRc1YyNUprdXZB?=
 =?utf-8?B?Z3VuUGt4cEZSNTNBcUtVdjViWHJaL1EvemNHbHFuNDdBZWtCemlpNG5VRHkr?=
 =?utf-8?B?UXkwWkJkdFduUFUvNTBOR3hhZUd0ZGVTTEhtUmhSM1o1UUh3aUJrWFRXMzRs?=
 =?utf-8?B?YmYwb0dackF0STZxM1U2UlVpVXRjcTBLL0VuZ0hPdkphTDdWYXJJVFFQMk5s?=
 =?utf-8?B?bGEvU1RYMXoxTlpGbXhscExhVW5TOEdUTWlSR1V3dEdmd2VhRm1UL2VLMjRC?=
 =?utf-8?B?SXFKU28zTkI3ek93Z3dudEc3dzdKQ1ZTTUROZG1OVXNja0NSbWJSUDgvWUxB?=
 =?utf-8?B?RWlGZjE2SHZhRDAwb0NPdG0yY3U0Qmd0TEl6NjdZajhZbFZiS3FCQkVLTlM3?=
 =?utf-8?B?OVZFcHpqWFo3NmozZ2VEU0RVUk5aVWpwRE01ZzdQMy9xUnhPOXlWU2Z1QkFl?=
 =?utf-8?B?V09ueFZSTDJSVm0wZHJVdnZoekh0d2pUUzZTUDhHak9FdEhtcXpaR2hyRHFq?=
 =?utf-8?B?dzEwV1FUVlMvbjdxM0sxb0oycEZKOEJURmZIQ1pmVFNpNmlKWjZZclZRVVl3?=
 =?utf-8?B?clVZREo3NGVIT3hDWktqS2s2eUo4WXZZZ1k3eGpMZzIzajhDc1J1NHdnajFi?=
 =?utf-8?B?azBSaytrVmZTWVFGRHRKaDRuNUFzaWMvUjZhWHhIejlmWUtSTmMwYk85Q0Nx?=
 =?utf-8?B?OEVyZ1hOTWM3SWxHeW1xUkRvZ0RkTU9JTjlOSE9QeEo2RXNPVXhzUFFuaFhW?=
 =?utf-8?B?QVlYbk1hYkF5cjNrK1FVSy8rdEVieXJuNTNBNFZieE9yTm1MbFBhajhEeWdh?=
 =?utf-8?B?WGhmMEZtU0N5S0RROGpRUXlSYVEra2FWK1VvYitUQWdmVFIvNjNOQS94Tm9F?=
 =?utf-8?B?dnhGbmtoczZtaWpEeW5wWENDamdhZ1MvYVp4Wlc5MlFpRWVOa3R2TzRTU2J3?=
 =?utf-8?B?Vml0Tm51MEhoM1BaZlU5YVEzdDI3Nm9oN3dHK282d0ppMWliTU8yUm9Ucmdv?=
 =?utf-8?B?ZzEwUmZnU0xvTWx3RDFybjlndmU5VXNwUGxvbGY0MUE0TFo0MXFkWlJVbmJQ?=
 =?utf-8?B?NmVDaUptMWNYYWxaeGJJem9zbzMrYm9RQTJZejVpRENlNjFFSzN6ME9YTUNa?=
 =?utf-8?B?OGJranVWb0dRa0hqWjYydko2YWxDSUh6dEVMa3dGeDhTVzEyVVNONkNsMmRF?=
 =?utf-8?B?bDJxVEpmMXFLVVRPdWFsN3M1RmJXMk93OFd1TGF4cThRNXhyZ3Q0NUp0U2s3?=
 =?utf-8?B?ZWhSWUQvb3dVSEliM3BWai9CQnVndXdxMWlsK05wQ1V2dldoajUwVGlPN1dC?=
 =?utf-8?B?OEdOVDZZeEJTWXJFQjNWMlRFSkh1Smc0Zmpyazgxc3EvVk1ScURLNk5FTnQ0?=
 =?utf-8?Q?MmxwTTRWgdFkh?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:04:50.1716
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f5730df8-8c5d-4e1d-626a-08dce7d47774
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:
	DS3PEPF000099D3.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7241

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 13 ++++---------
>   1 file changed, 4 insertions(+), 9 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 30a139074833..b3b6e6f38622 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -276,8 +276,6 @@ custom_param("acpi", parse_acpi_param);
>   
>   static const char *cmdline_cook(const char *p, const char *loader_name);
>   
> -static const struct boot_module *__initdata initial_images;
> -
>   struct boot_info __initdata xen_boot_info;
>   
>   static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
> @@ -336,9 +334,9 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
>   
>       for ( nr = i = 0; i < bi->nr_modules; ++i )
>       {
> -        unsigned long start = initial_images[i].mod->mod_start;
> +        unsigned long start = bi->mods[i].mod->mod_start;
>           unsigned long end = start +
> -                            PFN_UP(initial_images[i].mod->mod_end);
> +                            PFN_UP(bi->mods[i].mod->mod_end);

Fits on a single line.

>   
>           if ( end > node_start && node_end > start )
>               nr += min(node_end, end) - max(node_start, start);
> @@ -355,15 +353,14 @@ void __init discard_initial_images(void)
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
>           uint64_t start =
> -            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
> +            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;

Fits on one line.  Can also be pfn_to_paddr(), which applies to earlier 
patches.  Having said that, maybe it's okay to skip pfn_to_paddr as at 
the end of the series mods[i].start is used without a shift.  i.e. fewer 
transformations in these "mechanical" changes make review easier. 
Unless someone else wants pfn_to_addr(), I am okay without that conversion.

>   
>           init_domheap_pages(start,
>                              start +
> -                           PAGE_ALIGN(initial_images[i].mod->mod_end));
> +                           PAGE_ALIGN(bi->mods[i].mod->mod_end));

One line.

>       }
>   
>       bi->nr_modules = 0;
> -    initial_images = NULL;
>   }
>   
>   static void __init init_idle_domain(void)

With the line fixups:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:05:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:05:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813491.1226451 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGSq-0002cF-Fg; Tue, 08 Oct 2024 20:05:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813491.1226451; Tue, 08 Oct 2024 20:05: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 1syGSq-0002c8-As; Tue, 08 Oct 2024 20:05:48 +0000
Received: by outflank-mailman (input) for mailman id 813491;
 Tue, 08 Oct 2024 20:05: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGSp-0002Zo-6P
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:05:47 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20615.outbound.protection.outlook.com
 [2a01:111:f403:2408::615])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b39f5750-85b0-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 22:05:45 +0200 (CEST)
Received: from BN9P221CA0021.NAMP221.PROD.OUTLOOK.COM (2603:10b6:408:10a::15)
 by SN7PR12MB7250.namprd12.prod.outlook.com (2603:10b6:806:2aa::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 20:05:41 +0000
Received: from MN1PEPF0000F0E2.namprd04.prod.outlook.com
 (2603:10b6:408:10a:cafe::3a) by BN9P221CA0021.outlook.office365.com
 (2603:10b6:408:10a::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Tue, 8 Oct 2024 20:05:41 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MN1PEPF0000F0E2.mail.protection.outlook.com (10.167.242.40) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:05:41 +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.39; Tue, 8 Oct
 2024 15:05:40 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:05:39 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b39f5750-85b0-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=xj4z4XRGeUyrOguRsuPyhvZBb20JKmoTlkaBOSzCgX4VjpQSZdy/s31mQFgo1eVHSRioljbej1K/JEB8cW6fm0cSu3aJiB/n5E6p3P+4e4wF6MUN5e9WBDQSS+4XcN1a2pdrupFXQKcqQqwVrijaKku9Mo32UBTgi47d4d+Zr4t7zYt3thuAUSJwvnZa2KSimZnrN3nQ0vuMCKnUZmOyq8JD7uEAHFMcOuCHBb3mb2DpyLOrlNf0QBxOi0zgwUyqiNhLyNlGsaPcvjdFcTEwPe/FDZKreVmyA8wai1q3Ps+a0VzYNMQ1C9EH2raPWTYJgwRuhF5N0/XWWsA0csawXA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=+ZGSngcZj7YkOh31YCAVgJ7/N0RwzkpVnGxdHwU4jSQ=;
 b=Cd0Q/omx0Piz5v4LMRNz/BZBNX/t4Ov5o/lL4sSRA303U0Gapb19G5ilGBgJXzG4R8oj7X+2E39rOQPWGsdaZsNMVZOUljwfR+MfCvOkzpmT5RTD3dXxZnvcsxJ4FjluxbQxaahg7k8pNSXHdY76fRAx2kbiQvZhNLlDoZ7cVVDlSUnOe4fK55WPsdI+XvOXohA3Rucb4p28YWSZRmNdD/t6b9mSn3fbDwgwwBOmIjoY6e+HLMNu9ug2uj9AWLPIoks0WHwxX8epppJPRGO8LxAmjtYzv9YWxR/qR185hF5CF6q8hzvyaXgNXowskCxFGu1RzZHFD66o6HtaVKcHJA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=+ZGSngcZj7YkOh31YCAVgJ7/N0RwzkpVnGxdHwU4jSQ=;
 b=MH6uVf9IFDX/DQF2EkyyBx7HzUbgD7dKAM/a7pkXhqKzq+CIlF1NFWBc0LC3Wa3jrgXMGxb57JuCP9HAtWwskoRnHVoyUrxNVrb3YM/56KMz54pZrPGCaZZkS/inx/8cnF7XZ0Z9NHj0FGoFwa+Fo2KwelLzhGRY/ZYomJUbvJQ=
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: <d7a9bab6-69ba-43df-8b30-5e10372dfb42@amd.com>
Date: Tue, 8 Oct 2024 15:05:00 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 35/44] x86/boot: remove usage of mod_end by
 discard_initial_images
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-36-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-36-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E2:EE_|SN7PR12MB7250:EE_
X-MS-Office365-Filtering-Correlation-Id: 29ad7724-4d9b-47ec-0732-08dce7d49603
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?M2NJdkFHYldkR3JlNTZLazFBaUhKejlVS3U3czE3ZWQvRTdXMC8ydDBBdy9p?=
 =?utf-8?B?M0V4RkV0SjZkdlpPNnNnOGRKVldYMzJMdTQ0YUNyeGM3VWNRUnlHblVCb0s1?=
 =?utf-8?B?cmYrUDlOL2FpbkxBb1krYmlYUENFZVEraDhQNHlkWW8xeWNFekk1akdsVk9B?=
 =?utf-8?B?dDkxU0plRUwzZ2pRdy9BMEUyd3hBTGIwaVN2ZVhyN0cwT2MwbEVFUjZjQWNx?=
 =?utf-8?B?TXdkekZQdENCeTZRK3I0LytjazFncmxGQUMrWVdRNnQvZUswWExDSTdsbmxJ?=
 =?utf-8?B?WHMxWEIwU2NHc2NadE5DUlZLVXRwVkxXanlab3Jxa1Y0M0VSb2FjMWJkSUoy?=
 =?utf-8?B?WGsvWkROYWkxdjRzL0J1VjZDb1MzRzlMRGdKQ1BJK2xPOXFsbXVGSXMvKzc5?=
 =?utf-8?B?YW5yTmwzaFF0enpZMHdkUU5YMGF6MGFDNm5jaFFWNjh6TTdJaVd0Y0pHS0d5?=
 =?utf-8?B?dkQzenJHZE90RFdGanYwc2V1WWZ1MjlXS3kyZTk3QnVRdTA3K2VROS8weFFJ?=
 =?utf-8?B?T3hrYTlvVStySHM3S1ppOURHbDRCT21tSmo0WWpYTk9uZnMzaEZzRTVPb1Bt?=
 =?utf-8?B?OUwzdUs2ZjRKM1RGTmFZcTBTUlpIN25sQnAxWWp0dTc5NHppQ0pURjVTKzFJ?=
 =?utf-8?B?Yk9qZEFiZXBCaW0weG1ZYUNXN1Y3V0ZtQ1hYZC81OERlb2pqdFdMSDlFRVdO?=
 =?utf-8?B?ZmZ6SnVsaFpNMmg5MEZmSnpwcldCWFJTb2R3MFNVbW1XYyt6NHFlck4rbVpZ?=
 =?utf-8?B?d1oxZERsZlRIY1RpMHFDYjlWV2s5UHBTNlBvb0JTN1pQWGt3a1A3MURJK0My?=
 =?utf-8?B?dDMvVmsvdWQyK3hNbElEYmFQazhZdUxMeFpDN0g4eUY0YWNyYTVrYXdtdVhw?=
 =?utf-8?B?allvbW9yVXZXTnJYaFdNODVpRUgxR25WK3ZPczZ5M3ZoQTN6WHJYdnZiQ3M4?=
 =?utf-8?B?NDhHYURTc2lPbjc1N3ZZVDlPakVWeCtiL3Fic3JLeElEc3FNREd6QWhJYTA2?=
 =?utf-8?B?c25WL2NnOE0zZUJoMkJ4MDVHUE5iSnJzSE5vZktKV245cGlvOUl2YUVMV2dG?=
 =?utf-8?B?bDFEWUFLQmFONk9Gc3FXeDlEQnl4MXF6aS9BYjNGRTUyZWFyYUpuL3ZKa1li?=
 =?utf-8?B?cnpBM2lESTNjQ2lkSkRsNmM0aEZlbDNrODZMMGRrTVV1Rm1zY3YvcmdET3JO?=
 =?utf-8?B?TnB0TjRHdzBNWGV5Q0RUR0xJQ3ZQeUg1TEgydGNuNDlPWWVMY09FTy9aTHdw?=
 =?utf-8?B?NEFlUUl4NUtTNDRGNEllV3Z3SDVZZTJUd0pHREM5enFBakIyZHFpUFRDcFZY?=
 =?utf-8?B?MXpWZXE2bk5jRlJsUUlxT1ZzZHZJVUtwa2ZaK2E1KzBzbkcrWjhZY3hEdlUx?=
 =?utf-8?B?c2dOemNZNUdZNm1RWXFncUU5WjAzKzArR1RlcDVvWXYwTGFYYnZYQUVFL3Ju?=
 =?utf-8?B?dXVLdE9VQ1BUbGQxWTgzVFVzbUtlYXdSK2dhUmI3ZFF4RXM4LzZCcktwMXkv?=
 =?utf-8?B?WEg2L2g3bnYxT01nN3BWSHcxUXdwYWRtSFRpeXhtU1RHR2k4Mnk2SE5SNitW?=
 =?utf-8?B?cU5IemJSVzFNTTRzRUJ5bXdSMU5RK1hUcTM1SWxyT29oWllvWno4M2xSNzhG?=
 =?utf-8?B?ZkQwSEJwODVxMzljWGpuS2lsVmlNTmYrZTdBTDNQRjZvTkpWMlViZWUrekxI?=
 =?utf-8?B?YVJXQWNURTA0amdwUTBRQm04OTkwRWdjS0ZrbzRPM0FiZmVDY1B4RFdFN1N0?=
 =?utf-8?B?Z0lLL0IyeGZ3VGRWbnZZaHlJVWZiVDNMS1plZnFxNjd6eFpVMDNlcklJTkYr?=
 =?utf-8?Q?X6apUXSp4/t626h9wyANaURzM66yYuLsvcoKo=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:05:41.4850
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 29ad7724-4d9b-47ec-0732-08dce7d49603
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:
	MN1PEPF0000F0E2.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7250

On 2024-10-06 17:49, Daniel P. Smith wrote:
> This eliminates usage of early_mod by discard_initial_images
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:16:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:16:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813497.1226460 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGd4-0007L7-Bp; Tue, 08 Oct 2024 20:16:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813497.1226460; Tue, 08 Oct 2024 20:16: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 1syGd4-0007L0-8M; Tue, 08 Oct 2024 20:16:22 +0000
Received: by outflank-mailman (input) for mailman id 813497;
 Tue, 08 Oct 2024 20:16: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGd3-0007Ku-Bg
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:16:21 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20603.outbound.protection.outlook.com
 [2a01:111:f403:2414::603])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2dafc48d-85b2-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 22:16:19 +0200 (CEST)
Received: from CH2PR14CA0033.namprd14.prod.outlook.com (2603:10b6:610:56::13)
 by PH7PR12MB7869.namprd12.prod.outlook.com (2603:10b6:510:27e::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 20:16:10 +0000
Received: from CH3PEPF00000015.namprd21.prod.outlook.com
 (2603:10b6:610:56:cafe::a5) by CH2PR14CA0033.outlook.office365.com
 (2603:10b6:610:56::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Tue, 8 Oct 2024 20:16:10 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH3PEPF00000015.mail.protection.outlook.com (10.167.244.120) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.0 via Frontend Transport; Tue, 8 Oct 2024 20:16:10 +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.39; Tue, 8 Oct
 2024 15:16:10 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:16:09 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2dafc48d-85b2-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=xV+uzjw5cURYkXVCABvcBhX5E5LqxFQA0AnOINtpMFW6xjI0yh8K+JxlY2XEqjI36RVDHrWR5MjhsCBnY4+KwSsE28TJcMf0V44qTNgPLK82vcmJETPxNxIQDJajs1W1xEGVcQ9vFQjtTU7OWbngWp3BUK4H4PHRElyy3DEboSvKkivQFADYyuibFazmduMd6C0IEhWMI3TXVehNhJ62VloKv2GRjpwjuvMCaNfmyJ80aoZz1XDxdb51JHTL40QR3V8ZnZmqF3t2XBeGUtbEeLmvBwO2Es/9w5/ZOK/LS7drN8LYNChwBT/qPZvoJn971Mo9VICIVGQ7QFNWdU9kBQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=DRurKgHlYk5Rq9zpnnBpVE9SWJZiDkTt027V1AaYp6w=;
 b=t8KKeoHP4sRG5YugWCWX8d0TAnKwx3TwQD/wxK0NI+12romj7VgqETyukiEMPXE04FuqpS547FtqgFyFWzOJs4aJW7xdTVA7fg5QhiMVPqFQRbbI9Ftf8xJxHRoOsy1JRmdlT/yzy6VUdjqYIxsNEnTJMVMHVEXJkFnGU/ejl1VGoR3VGlSVvHqlCcUFEW+W4tTUeYBhPC1NOO/lShQTShjx4A68Ohy4do/62egvGAbwBmDVbhtZDl6AHbecIEV6bVzIo0jX1OF/Z+N5YGQfq3BqvqRbSf9BxkIupnl9XbwJ4j3/J5LzoyH4kL380iMjsIquysd7d2DygZTeaIWw3Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=DRurKgHlYk5Rq9zpnnBpVE9SWJZiDkTt027V1AaYp6w=;
 b=W4WGVA5sptDfoRusNi6E7pndtijqqSEyvjH+IeMBWGU2t1bhb1S1RlOw9YC0yL6oet1pTP199bGlohMHi1khfkJ9v3sg17EULdTpwtpr8Mhu7UH28kwExnr8kuavbA0cHpn6dfrmBUED8pK8tRLXFytyClQ4Kw7mawoDyyn9G9w=
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: <52ccddc1-762a-440d-bd27-8d9e9c507c7b@amd.com>
Date: Tue, 8 Oct 2024 15:15:30 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 36/44] x86/boot: remove remaining early_mod references
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-37-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-37-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF00000015:EE_|PH7PR12MB7869:EE_
X-MS-Office365-Filtering-Correlation-Id: a2cddecf-86c5-4f57-cf48-08dce7d60d08
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?M0VoMFc2WTdNOEdKTUFLTFlpSllmZGRBb1NmRVpUTGk4RHBzN2ZQOGZVdmRE?=
 =?utf-8?B?ajQ5aEV0UU4ydDd2NUxZU2lGN0d1S2RndnRZQUpwSlJWbWZxYkh5ZERPM1R4?=
 =?utf-8?B?NDNGNXZKT1duQU0ySXlqckpQNDlhSTcrTmRVVnUyQkM3RFRQcFVCZEpPOVkx?=
 =?utf-8?B?aUI0OXBtbG1rajBHOUV1YmxSZW9YWFh6WHpObFAyWER0SG4yMU1HZzBRODdO?=
 =?utf-8?B?ZnZVK1gyVUYvc2hnSHVQWXM0QUlRa3RBSlY2RFg1UHVuRE13NW4wa2lGQVJB?=
 =?utf-8?B?clFjMWZRWkU0RGJFa2k3Yml3NjkvVWdWWE9ZUENxQ1U4eVp0MnQ2YnZpaTFh?=
 =?utf-8?B?RExCcVhBV2EvY0NGYjErOTNQeTA0SGhaZ2xPWFhta1Jzc28yaDdsM014dVpW?=
 =?utf-8?B?MkNhUldmcHJUeEhRVGJJbmVVdFh0N2NObTYycWg3aGFFRk9ScnU2dzNOZGQr?=
 =?utf-8?B?cyt5d1g1NjAwc0VWYkhmc3dmWG9FeDN4QmNFMm84MWxvc0ZrelNyc2VFMUEw?=
 =?utf-8?B?OFlsVFYxS3kxaVQxcS9OdXRtOEFUYmlGUHNtNGEvOHVQandYWGJKM0hXaXd1?=
 =?utf-8?B?ak0xMkh2OVBxcXgvSk9TVS81YWpqVHJGMzVEeXVPZ2U0SVUyWWdXSmxoZEpJ?=
 =?utf-8?B?THVYVXRmUTVNaVhTN0UyK0ptVklpRXN6Rm4wcEo4WDlia0ppVnF1cE9jbmN5?=
 =?utf-8?B?VllCWmJDNExyMmt5SnB6ODl1WjRIOE1sZzIyU3gzSlI3c3hHVzBDaHFuMVh4?=
 =?utf-8?B?YXgrS0FlQWc0d2ZJbTdlem8wSEx1Q1ZZSmprTS9VZTdaYitPYlFoZmpFeFJt?=
 =?utf-8?B?N0dzVGtwNWM2MzYxSFhuaUQ5ck94V3hGR2JidXBZUm9ZUUt4cnZrbjZXcE9Q?=
 =?utf-8?B?L0RjL3FnMUhIOFVrV2thZENBaWFIdFZ4OVFZQ295OEZhZWpSSHU3eE9mMlZo?=
 =?utf-8?B?R056bTcwNWY4UytCR1RlUmdjeGpTRDNySkltdGcyQmk2bWJSZ2xsSDZxdFVJ?=
 =?utf-8?B?UlcrM0NXeHJhMm9XZk9iS2kxak9LSXV0YUlreDRvRU9GQkVqZTFlbW52VEhT?=
 =?utf-8?B?aDZ2Y3ZDd2xhZW9jZnN1cTJCbU9Mb2wzWkpTMkF1M3V5N1FTQlVLdlFHYi9Y?=
 =?utf-8?B?dG5UT2ZrTXFnWWd2TkpMbkFrZk1JeUUwc2kvZ2lpT1pmbEdscUN4UE9LUC9z?=
 =?utf-8?B?UnMwQUIrczY4cmNRbC9LZVNVNmRWcmFQNTBSZnMvNW1kT3U3U1dlM3ExWmtW?=
 =?utf-8?B?b0w0RW9NR0pRZHZIWDFRbEJvY1V5NmNaemg2cWlqNDl6dDczeHViUHJIaEJ5?=
 =?utf-8?B?TThwcEFDWU5qUlJoK2dGQkZ0ZE1nVit5Y2JwMUVaWUFVUTZweHVZTnR4UzFF?=
 =?utf-8?B?WE9sQksvRVhvbkRsVkxRdWlmUitQa2hjbFY3cWFFZGdKa0lIMTY1QktQd0tp?=
 =?utf-8?B?aVVBTkFlcCs5MDdxb1kwbEozbnViL2M2M0wxaFBnbHhWclNYWEJXcFY5cnkw?=
 =?utf-8?B?TW50TG5kWUVjenpNR0lGRjVFdVZNcW5rSXBCU0ZnNnY3N0RxNlgrMUd0MEpv?=
 =?utf-8?B?aG9GdVo0Q0w0TlU2YlUwUENYbVFKUndISStxSHRhdU1MMmtGa1h6RjdHVXl3?=
 =?utf-8?B?UURxazUzb3JUU1czakNzZm5mK0ZDTWNKZU8xd3pTaXlWMDlQckErQmozMEcz?=
 =?utf-8?B?bkZKT0Y2YmZBUjVwWmx4amgzMUF3SytOdk1vS1dxaWtqVWFSWkU0dDVzc2pH?=
 =?utf-8?B?em9OcXVRdEQ3eE50Wmx5QUI3WVpMK1ZSQjF0dis2VzhYR291V0lRNDVzdnpx?=
 =?utf-8?Q?7wfAfVlp5SndJ1+BehCEuH3uJBZpnkiNp0pkw=3D?=
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:(13230040)(376014)(36860700013)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:16:10.6685
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a2cddecf-86c5-4f57-cf48-08dce7d60d08
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:
	CH3PEPF00000015.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7869

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Any direct usages of struct mod have been transitioned, remove the remaining
> references to early_mod fields.

This is unclear, please try to re-word.  "struct mod" and "early_mod" 
don't exist.

> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/setup.c | 31 +++++++++++--------------------
>   1 file changed, 11 insertions(+), 20 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index e9e3da3204f1..0ffe8d3ff8dd 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c

> @@ -1404,16 +1401,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>            */
>           bi->mods[xen].start = virt_to_mfn(_stext);
>           bi->mods[xen].size = __2M_rwdata_end - _stext;
> -
> -        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
> -        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
>       }
>   
> -    bi->mods[0].headroom =
> -        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
> -                         bi->mods[0].mod->mod_end);
> -
> -    bootstrap_map(NULL);
> +    bi->mods[0].headroom = bzimage_headroom(
> +                        bootstrap_map_bm(&bi->mods[0]),
> +                        bi->mods[0].size);

Thunderbird might corrupt this, bit the above can fit on two lines:
     bi->mods[0].headroom = bzimage_headroom(bootstrap_map_bm(&bi->mods[0]),
                                             bi->mods[0].size);

> +    bootstrap_map_bm(NULL);
>   
>   #ifndef highmem_start
>       /* Don't allow split below 4Gb. */

> @@ -1708,8 +1699,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        set_pdx_range(paddr_to_pfn(bi->mods[i].mod->mod_start),
> -                      paddr_to_pfn(bi->mods[i].mod->mod_start) +
> +        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
> +                      paddr_to_pfn(bi->mods[i].start) +

This belongs in patch 14 as mentioned there.

>                         PFN_UP(bi->mods[i].size));
>           map_pages_to_xen(
>               (unsigned long)maddr_to_virt(bi->mods[i].start),


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:17:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:17:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813502.1226470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGdy-0000Vf-OV; Tue, 08 Oct 2024 20:17:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813502.1226470; Tue, 08 Oct 2024 20:17: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 1syGdy-0000VY-Lv; Tue, 08 Oct 2024 20:17:18 +0000
Received: by outflank-mailman (input) for mailman id 813502;
 Tue, 08 Oct 2024 20:17: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGdw-0000RL-Qd
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:17:16 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2060c.outbound.protection.outlook.com
 [2a01:111:f403:2417::60c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4edda0e1-85b2-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 22:17:15 +0200 (CEST)
Received: from BL0PR0102CA0066.prod.exchangelabs.com (2603:10b6:208:25::43) by
 IA1PR12MB8517.namprd12.prod.outlook.com (2603:10b6:208:449::8) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8026.22; Tue, 8 Oct 2024 20:17:07 +0000
Received: from BL6PEPF00022574.namprd02.prod.outlook.com
 (2603:10b6:208:25:cafe::5a) by BL0PR0102CA0066.outlook.office365.com
 (2603:10b6:208:25::43) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7982.34 via Frontend
 Transport; Tue, 8 Oct 2024 20:17:07 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF00022574.mail.protection.outlook.com (10.167.249.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:17:07 +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.39; Tue, 8 Oct
 2024 15:17:07 -0500
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.39; Tue, 8 Oct
 2024 15:17:06 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:17:05 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4edda0e1-85b2-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ULoDJb4fRxIMoTTzDU8Dtb2Nu3pCjvodbMQ6gN2R2sRRVzwHPfPUv09AdUnCAMRTboYK7SQL2Fbw8wJ2DaBYAqUkI7rkGoQAQaSZS9sSOxTOft9DaIdKETWj5ochhkkR9WczwtRtgS1WMBzyuRc10tD+1+s1oflUsMe2PCSenLbp9CgrIVMlcVX7Nkh172SgZZ/rjsKIap03FOYk/q7Ed/aP0xmDljTP6OhiT3E1q2L5gc9OPlvl5MPuEwsW+IWhVbR3uQ+gkAHhW6XdOAdvrxjDZc1h5H6TGL3zKdo3gL+Weg53kaBxJrrrSLA5NBIfKzVrggqsnfKRq3XDilgq8A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=eijqgetKrjeM4UAEX+oVveTnAJq9eRG7Hna6I5oxDiU=;
 b=xYBat1MrgByc6KmWdkeyp9yu1T+GDiVQp//9RgH2TLJC95lBTcE7k+M6xNolE9SicELzmfHW1gcXp0Zeogwvb+CrL7wnQKxR9cxO+w8WhcPLrCbgs3Ci7zKsUguwwjh+Fov3AetvPBV13Kvh0gXvUamR7MqcjqGqga+u/KO7+E+DpSHrlKt6g9tYW6OOAhO1FKh8gx6wXD/+vTjSYg0Ptd5weXwiHD9X8d8K8HCD6/zCtJ2hHNw4Jhan9wgdfw17bsuOzg5ERp2VeMOmQ3YsyQ+mfT5lbrt9ZoX0BacMCYZ1tnE38Hs5p9ZEIIvcHGrNnd/UiCe47IigcLLVPWnymA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=eijqgetKrjeM4UAEX+oVveTnAJq9eRG7Hna6I5oxDiU=;
 b=VkH5iMU0VwBIfFafjUTeiLqfvBjh0gVC6cccaY9XgUSzqyii9PoBZdx9VJYVq1sMSRk/eWpFmNIlcGO5UVFKKd5IOSYsFGSIW7C++4jbZndmE6M+XcSEmU/OM8JVn2cmf2EahhLkZZUn3ZXxTY/IYngeNzT/WPY5S7CnIitntqE=
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: <be523c17-6641-4c86-af29-37f9cb0ee716@amd.com>
Date: Tue, 8 Oct 2024 15:16:23 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 37/44] x86/boot: remove mod from struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-38-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-38-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022574:EE_|IA1PR12MB8517:EE_
X-MS-Office365-Filtering-Correlation-Id: c46261a1-5e6b-40bc-0733-08dce7d62ec2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?UDhPcnJXc3RLTU9CZm56bHVYVnJXUVc0amNwVDl4bmZjUlkxQXN6cndFWnJ1?=
 =?utf-8?B?V1c3bEtzY1N1c0x1Zk5TaVo5eFpxZ01mYWlxZHNuVkt0ekhUZEF5TGlZb2Nk?=
 =?utf-8?B?c1YwK2NyVloraldRR3hKSVhuOWFWM215aWx6LzlVSG9CaDdERDBDVHZqNWxr?=
 =?utf-8?B?NTdET0F1NG1tR1MvbFh0QWpQb0lJNmlUUWptY1pMQ09vOC9leTM5c1ZFV1Yx?=
 =?utf-8?B?ZlhvMS8rNXljMEowSXQyL08vM3pMZDZKY0psSmNYa0JPeElJc1hmYmUweWZB?=
 =?utf-8?B?NzJGbHB6TVBlRlZFUi9XVHRtUzl2Y2VER0RWVVZ3NFRodndScnM5RDlNL0JX?=
 =?utf-8?B?amJPYXp4ZXpaRmJrMk0ydzhFNTN3UHpZWmJpemptY1huQ1JjVjFnb2hDdHNS?=
 =?utf-8?B?S0ZIa01uanlUaHpzWS9VVzlWS1hJSXBHMVdmL1J0RkpvQjJYNWF6UGhPdGFt?=
 =?utf-8?B?ZHJIUW0vTEdxZkpXS3VRMWgrQXo0WlZYOVFSL05aYyt1VWRaaTA3NTF0UDV4?=
 =?utf-8?B?bHVSeEJBcXdVUzFkWll5eE5KMEgxZnFCS3dOOU9ienB0R3IzUTdQSGZpb1dG?=
 =?utf-8?B?WHJyS3RrdmRrMzZyZ3RrWmxnRFNTR2poMEgxKzVPOUR5WWxqQWNJVHh6bXNt?=
 =?utf-8?B?OHlTbXBVZUJ0MUdQbnVzT0szRk80MFJoZEVQUzJwcXdiZzZwazV5QkVTbzZz?=
 =?utf-8?B?akhRdy9XL1NyNU9kelFnVVZWMWpiUUxOVDgyUzIyeVVCWG5UbVFmYjlRZU84?=
 =?utf-8?B?Z2hUMkd5Z2tTaUUyRFl6YkNOT3hHWkhqMnMrOTBuSEthM2M5dTJDYWE3NEFh?=
 =?utf-8?B?Ynh3WW11ZWlRdFNWR0toSzZDN3RHbzZBeWxybEYzdVRqcHk5ZjBYR3dsNXZs?=
 =?utf-8?B?cWpWWmhzeUxEbjBzbDNMd2p1NjM5ZlBUQm9SZ2VUOG5GQTdWcEo0b1BvUmc0?=
 =?utf-8?B?MnNFMnRJRmlxY0p5cTN1VFI4WnB0aytlU1BNSXdIdUFoSGdmV1RFRUVheDlP?=
 =?utf-8?B?L0NYWjFrNlpiWG81QjFaTXVtcG5ReHVvZ09qUThhZjhDSjc5NDFkMS8vRFp0?=
 =?utf-8?B?bENOZ0RBYm96dHZ1OW1WZFQwYmFJUXRzaWFMM1FRTHNMNUd6M2pkdUZqbGla?=
 =?utf-8?B?MFZRNWg5NmZGVXNsZEwzNGJjUjFNa29NRHZRZ1A3V2JYSGsyakVLb1BVdDRC?=
 =?utf-8?B?ekZGcmVUVEpFcXpZVHhOQ2xrV3ZNM0lQeE5xZDZlWWdVTGQ3b2lWZTBqTXNS?=
 =?utf-8?B?b2RlYmRCdDVLMWduUUlkVmJiK0dEcjA4UHRZTzd5T2FURzZiU3ZxbExBVnUr?=
 =?utf-8?B?bFIvSlpVdGZMQ3BLRndZVmpaRlg1UUlQSkJLNElRTnRIdlBiV05rK29vcVBh?=
 =?utf-8?B?bEVuTkNOM0VoZlJVUlJoeUZTMG5kS0txVjZ2eURIUmxBbjlIMlgwNG1tRVVY?=
 =?utf-8?B?TURvT0JhUEkzd1VjWEJCZ21JUzZabDF2OTFLWHF3bXNMUkpmbllLMGUwYm5B?=
 =?utf-8?B?MUJTcjF2NjFhTGVEUTVPUlF3akI5WjNnelFGaDM0WnBwTHptaWNvUG5Vc21a?=
 =?utf-8?B?Q0lTTmUyejY5VnVwZkY2ZjBTaEZlOTFVelFPYjBNWS84WExnTUxCd2JVOUd5?=
 =?utf-8?B?eWNJMTRJZXZMWkxmNDNSaEh6V0p5SzZUVStuZnZjOXkwVjlkcUtRK0pkWDJo?=
 =?utf-8?B?bkpNOUNBNHlyTzJQNlpuWHdHN29WRHpUN3hPbjk5L1poZys1WTAvcXBKeWYz?=
 =?utf-8?B?S2l2NVk4TElYSUpabkY4MHREbE93alF1bjNONUViblNiUXNrYVNCZE1Dd2ps?=
 =?utf-8?Q?AnZ5MRCHCR8WpDWyZY7NJTeD/AjU/4f0P50yM=3D?=
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:(13230040)(82310400026)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:17:07.2471
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c46261a1-5e6b-40bc-0733-08dce7d62ec2
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:
	BL6PEPF00022574.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8517

On 2024-10-06 17:49, Daniel P. Smith wrote:
> With all references to mod field removed, remove the mod field from struct
> boot_module.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:21:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:21:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813509.1226480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGiF-00040l-A0; Tue, 08 Oct 2024 20:21:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813509.1226480; Tue, 08 Oct 2024 20:21: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 1syGiF-00040e-7D; Tue, 08 Oct 2024 20:21:43 +0000
Received: by outflank-mailman (input) for mailman id 813509;
 Tue, 08 Oct 2024 20:21: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 1syGiE-00040U-8y; Tue, 08 Oct 2024 20:21: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 1syGiE-0001Vz-6v; Tue, 08 Oct 2024 20:21: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 1syGiD-000447-OZ; Tue, 08 Oct 2024 20:21:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syGiD-0004rg-OA; Tue, 08 Oct 2024 20:21: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=0Y/6fhPGgFZBoUbinzrU0S+WZbCE9mSAqmM3tv2UGmw=; b=WqNeae683z62mLy2vwkRNvt2qh
	4BvLjDG04u8bdPNgRYSdVknobeo7Tnb5QORRzWNwbus+XaRLYNDnZRMswgknYnegXKaaxBdpqe062
	bSSkSo9XehL/iaU61pDkiq+BcdPMb/NUasE1TSID4cALU/pyWeohhyXXVtr2v5NgtfSE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188015-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188015: 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=c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
X-Osstest-Versions-That:
    xen=16a81486c4cdafa8d881dec529a99e2441109872
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 20:21:41 +0000

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

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                  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
baseline version:
 xen                  16a81486c4cdafa8d881dec529a99e2441109872

Last test of basis   188011  2024-10-08 12:02:09 Z    0 days
Testing same since   188015  2024-10-08 16:00:24 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Ayan Kumar Halder <ayan.kumar.halder@amd.com>
  Federico Serafini <federico.serafini@bugseng.com>
  Frediano Ziglio <frediano.ziglio@cloud.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
   16a81486c4..c95cd5f9c5  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:21:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:21:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813512.1226490 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGiQ-0004J2-IW; Tue, 08 Oct 2024 20:21:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813512.1226490; Tue, 08 Oct 2024 20: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 1syGiQ-0004Iv-FK; Tue, 08 Oct 2024 20:21:54 +0000
Received: by outflank-mailman (input) for mailman id 813512;
 Tue, 08 Oct 2024 20:21: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=LJPt=RE=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syGiP-0004IX-QH
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:21:53 +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 f3f964e6-85b2-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 22:21:51 +0200 (CEST)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-37ccd81de57so118707f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 13:21:51 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430699b6953sm2421075e9.33.2024.10.08.13.21.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 13:21:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3f964e6-85b2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728418911; x=1729023711; 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=vv1P0se2TnaWRZaX5tyrz94ZvHqWZ3HIsOyXouv73Qk=;
        b=ceJoCW+FCSzYtF2dTrahKmdR9AtUc8vkT7uolGq8cpFzZxQc/1houhH1Sk2xuHTuSG
         pAraeH73aWbIG5U5Bl94Tm8AJsXxmQDqwjCD4HI3axNGrMzWDqZidBeOgoyq7Kq7/609
         iJHs2IATU7nGChJt8UHpM69tiOlEUl/9IJtOE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728418911; x=1729023711;
        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=vv1P0se2TnaWRZaX5tyrz94ZvHqWZ3HIsOyXouv73Qk=;
        b=N43t2JFgU1Gdph8/NK/5tJ4e2GKfqh5raq/o7X/3BGz8KTWQRSq9kpph2nVf2GykA7
         MBwH9SLCpb0Vc1rp6MA7osAmr2sg0Dt4gJ1ixxv9xK5IPxV14E4BZGTLjtOZNnqzXxZT
         WnZ8/Zz89MhF8gp0VLtclP+osreLdFSEJrnGcI+vVFIKSsqYpBI7iIeKFQw4D/oPHxaq
         RSCvLkTtDPBTtMFv8eIDIoWsruNhCYla44pl7skmIjnyBoHOmtnvtC8XvrsRSwV08rFJ
         5Hxk5krohaNNhGZg9cuKplyyLmZRzyolzL97tcbSaT9FrsN2iMuLqzlqXzYx8oEkBqg3
         v10w==
X-Forwarded-Encrypted: i=1; AJvYcCUPjjCjjS4NBHwYVIrdZ7M2PaWSI5jXg744W5mTjk+YrBGybM/jzFl3g5Osm435gAxgacwUad4wgVM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyg/vcDJLGuxDfWIFTi6VadSbXgiBz7nz6glvo5cVuViewt7u0R
	Ll0CuMmG4P4Yb12Z2V1jUc0psN235jQwYjgoSW3MS01O/KCQRigkmQ3kZEOr9PE=
X-Google-Smtp-Source: AGHT+IExkvZ6cYALHv56+Fza6VOj63aUy9TvJMlMrwQ6H2g6A/IkIWUbGy/ISveAAYzvHOeyZSKrNg==
X-Received: by 2002:a5d:6d4f:0:b0:374:bf6b:1021 with SMTP id ffacd0b85a97d-37d29350e99mr2667399f8f.27.1728418911039;
        Tue, 08 Oct 2024 13:21:51 -0700 (PDT)
Message-ID: <140e7be0-2d00-4673-917e-8f9da206c792@citrix.com>
Date: Tue, 8 Oct 2024 21:21:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CI: Stop building QEMU in general
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241008155023.2571517-1-andrew.cooper3@citrix.com>
 <ZwVddI62BTAtMUls@l14> <056fbcc4-71f1-4ce1-aae6-bb3a7192aefb@citrix.com>
 <alpine.DEB.2.22.394.2410081151240.12382@ubuntu-linux-20-04-desktop>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <alpine.DEB.2.22.394.2410081151240.12382@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08/10/2024 7:54 pm, Stefano Stabellini wrote:
> On Tue, 8 Oct 2024, Andrew Cooper wrote:
>> On 08/10/2024 5:27 pm, Anthony PERARD wrote:
>>> On Tue, Oct 08, 2024 at 04:50:23PM +0100, Andrew Cooper wrote:
>>>> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
>>>> index c668736bdc2f..c83e0bdbe119 100644
>>>> --- a/automation/gitlab-ci/build.yaml
>>>> +++ b/automation/gitlab-ci/build.yaml
>>>> @@ -339,6 +339,7 @@ alpine-3.18-gcc-debug:
>>>>    extends: .gcc-x86-64-build-debug
>>>>    variables:
>>>>      CONTAINER: alpine:3.18
>>>> +    QEMU: y
>>> Could you use a different name for the variable? This is exposed as an
>>> environment variable, it could easily be used in a build system already,
>>> like used to store a path to a QEMU to use.
>>>
>>> We don't really have a name space for CI variable, but maybe
>>> BUILD_QEMU or BUILD_QEMU_XEN would be less likely to clash with other
>>> usages.
>>>
>>> Otherwise patch looks fine.
>> A can switch to BUILD_QEMU, but I don't plan to repost just for that.
> The patch is fine.
>
> BUILD_QEMU is a bit better. BUILD_QEMU_XEN or BUILD_QEMU_DM would be
> even better to clarify we are building a QEMU version to serve as device
> model. It is a pity that typically we call qemu-dm the ancient QEMU
> fork because "qemu device model" is more meaningful than "qemu xen".
>
> Anyway, pick your preference and feel free to change the variable name
> on commit.
>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

Thanks.  I think I'll go with BUILD_QEMU_XEN because that what the rest
of Xen's build system calls the thing being discussed here.

~Andrew



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:31:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:31:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813525.1226500 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGrB-0000pk-C3; Tue, 08 Oct 2024 20:30:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813525.1226500; Tue, 08 Oct 2024 20:30: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 1syGrB-0000pd-9D; Tue, 08 Oct 2024 20:30:57 +0000
Received: by outflank-mailman (input) for mailman id 813525;
 Tue, 08 Oct 2024 20:30: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGr9-0000pX-L4
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:30:55 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20614.outbound.protection.outlook.com
 [2a01:111:f403:2412::614])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 35e8cf53-85b4-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 22:30:53 +0200 (CEST)
Received: from DM6PR05CA0055.namprd05.prod.outlook.com (2603:10b6:5:335::24)
 by CH3PR12MB9124.namprd12.prod.outlook.com (2603:10b6:610:1a7::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 20:30:48 +0000
Received: from DS3PEPF000099DB.namprd04.prod.outlook.com
 (2603:10b6:5:335:cafe::61) by DM6PR05CA0055.outlook.office365.com
 (2603:10b6:5:335::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 20:30:47 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS3PEPF000099DB.mail.protection.outlook.com (10.167.17.197) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:30:47 +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.39; Tue, 8 Oct
 2024 15:30:46 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:30:46 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35e8cf53-85b4-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hxufrTSf1LsBpQdbl5qM4QLXS/TJ8oREV1hlmPOoNn1b7PCSBSHva6NqEzRGHlA7ZwJAoHlokreq2Ql2jI+gPA1k3ZTCMzper5F6ZltlHKhklIKcLZDiL/B4Roh1BUrejAGj/kTiR5bKxC67XgNI2qKVhCpKjQa0aU87mSc8nujwKfLQOeXTFYTIPFszxJXIL7QSJKsbuzi3wSbX5R8HVijKiQf+DiXuKvnfSe+WA1z/dVTuCR6zxxHGhqqBJJIm/6fvf9MrxISCuAWqiPMfA8Yicub/wV5DK2VhGRuVq2VVqMP+gmJCzmTTNlXg5xbMxtSSbvHDmLqKhsTbL57f0Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Y2Z5yRJm24XLUVVZ5YpJ0Bc6MGIe3htTRfRZ94mxDC4=;
 b=s+DL5nDXOUax5KGg/Re25o+8NIpl6S3FzqyQWxfpPdYTYcEQ3mR838mj7wuZO/2+Len2QkH1Mgf7jcr7qqKwaCvrisTibeu9uz0H5KHJSSyFDPqpzyjgOsIfET5AxRqSGnTUMQMHV4BpTRAIAbEqk+XlpODNJZJn0ww7DVDU42tt+FOgrBH7G72aDZg83u99/3qx+SEVDUX9SKwXKJrB+t/ED+3HLUC4YWiK1yMhs8GXMqTOhaXAELDPxVHDvCMprJVpSVAjjc4+HZzFLHAAErnfHWsaS4fxIhYNcZQGFC/cgXtZzeAjlpgQg6qZCLPvZlnEFWb5VbABlWgwGNUzbQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=Y2Z5yRJm24XLUVVZ5YpJ0Bc6MGIe3htTRfRZ94mxDC4=;
 b=PB18FdgMzHujutxFygr7WqEsxgXIbph5u5FpBNacagjWf4Y2IMAJaBdr+0JL3H7tBkyJo5h4w4U/E1XTtgZYoJMWXtKJddaUQYh1/JFpsrEhjNGEKO0KAPjWzrlwWto0eH8+LEiKaumCS7LpkdJdBQic4HIuEP7wGp3QzbkekI8=
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: <f77904b1-dce2-41cd-ab74-fca75a0a147c@amd.com>
Date: Tue, 8 Oct 2024 15:30:06 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 38/44] x86/boot: introduce boot domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-39-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-39-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099DB:EE_|CH3PR12MB9124:EE_
X-MS-Office365-Filtering-Correlation-Id: 7318ee63-d1dd-48cd-c241-08dce7d817d8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?NjlnRm9qUGcyODNHcjJjcEg2WTdubjNxcldhZnJCRGZBMk1yektUR2NuQ1N2?=
 =?utf-8?B?Q1VJUUZpOE1EUitsaURlRWx3b3dVUUNwTTRiZ3BhOGFOZTVQQ3EwS2VGL1dD?=
 =?utf-8?B?b0l1R1BxK2hyWnVuV3hLNWlKbjJJbnZ0STBoRkxkTDRqUDFpSkdTKzAzZFFm?=
 =?utf-8?B?OS9LeW5GUkNFNWovTmluMGVFSHFUdURQNE0yZm4vanN3WUs1NFVoaW1haXVO?=
 =?utf-8?B?VUhJR3lvRW9lMEN6aTYwbEUvL2ZSVW9zOXBqS2w5dkw1YXprYkpQYlFPdGtB?=
 =?utf-8?B?Z0pPOGNCZVpWQkdFSExxZkkxTGVmcHQ3Vm9PYnh2blg5QjJhU3EyUXRQa3Ji?=
 =?utf-8?B?eFhLUmVJZld2Wk5XM1B2S3MvdVVPS3hVeWlLTGlPb3VNc3JXd2IyMkdKQ2Mw?=
 =?utf-8?B?dlpacllVZnB5ZFVBT29zV1lrSnp5QWhraU1HNEpyWmgxbjdFQmExQkI1Z0tp?=
 =?utf-8?B?MG41RXd0MXZiSUJSc0RwOGFWMFgzWlloOTk3OW16eFQzUzVVdzhhWlFmOGV0?=
 =?utf-8?B?eUFHbFZ3SWkvc3NGK0FTQnR6Wm5rdjQ0VWJSUmhGNVF1ZStabzNUSkJHQURN?=
 =?utf-8?B?MEsvVDFHRFl3WkVJMEVtMFFYZDZxTVUyRzhwZEExR05hZTN3S3RNSkZQQldF?=
 =?utf-8?B?RVNuQXlPQVNZMWt0aGxsR2VvOWV5T0VCR0ovWkg4RlhkTXBiNVk1SU5obEVt?=
 =?utf-8?B?enU3MThBdkJTVGJxRGN6WnFjZHVXM09jU2tkenlEdVhETWJ2NGlWRlFneCtV?=
 =?utf-8?B?bWtsVUNoUWFySGdYc09jL0hxb1Y4Mm5vK0w2YUhyZkxLU2x0eVJnQVU2Kzla?=
 =?utf-8?B?QVhpUTFqcUM5TzVUeEFxU0xJdkpQRzZqMU9aWHFCVU9IVUlxdFBBODVNbTB3?=
 =?utf-8?B?Z25LS2dFSXpIZVBmUVlqaHdFVzFBUmk3RnR5K09xNUdnZWlBNjR6ZFVmNTBp?=
 =?utf-8?B?cmR5d3RYRmNvTHUwUUlsYW9ONmFyUGVsZ0gzRURhbnErM21zOFNsd2lTSnhh?=
 =?utf-8?B?ZXN0a1U5M1htMnZpNXl1RXpwaEh3Uy9KaXIwd05HRUxHM0tvaGhiaGcyY1Nw?=
 =?utf-8?B?WjV2bVVnRnJVcXptdUNzRXh0RndYUFBQN1ZrenY5QnBRZ3Jwcno1WnM1RUNy?=
 =?utf-8?B?Z0h2aXpoWlREbXozT0ZucDM1VEFTYzIvZVJlN1pJU1NFMUMwQVMwSTd6YU1L?=
 =?utf-8?B?VVFvanEzUFNiSndZNXZEeWYwT2tOa3RweklxMkxGR0hNWExTN0NKd1k1ODkz?=
 =?utf-8?B?cTJPNmdnMWdyaDdDOWYrU0podmprbzhTRjdmZVZ3bThXZStEa2IzbTJVSFUw?=
 =?utf-8?B?TDNiR1VhR01VQzlvNFkxZUhGdFVKSjN6dTdXd2JPNGx1VE1FTnFZUXpKQ29Y?=
 =?utf-8?B?WlZzNEZzdUJrajlra2I5L0ZQYURwZDM1MEhsekFOVXVWVE83NDh5RFExSU1I?=
 =?utf-8?B?SkdTZmxab3dqOXcxVXdWbXRxSi9POWU1cEhwR2htUmpsMGxSY2RqWkxjYVUr?=
 =?utf-8?B?cTFkOFZRS0ZWMmJnM1ovUmRFbDVmMUZEV0dLU2djYzBWTTYwRlRKckJjSnFp?=
 =?utf-8?B?a2l6a3NRSU5aRE5vMHRaaWlrOXRHZnRmWWpzbTVzWEViTWdGaEkyQlFiSDBj?=
 =?utf-8?B?SmlxRk4raU1zWG1qdmRPMGNCdGlWQU5odUprdmZ1TFc0aTB2Z01ld3ZvVTBL?=
 =?utf-8?B?ZnlqNk5EZ0d0czdwT3hXNDBXS1pNcnpXWFdhK04zMXhaODNab1FTeHY2Zjcy?=
 =?utf-8?B?YmxnNGVMOVNHUmYzM0dqdEZFS0NBaWhKNUR5eElwU1lpN2lmZFFkaWhaamR0?=
 =?utf-8?Q?i0ONXCPCYLiupYiqjqSXwm4sc6PAzi90GLXbI=3D?=
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:(13230040)(36860700013)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:30:47.6457
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7318ee63-d1dd-48cd-c241-08dce7d817d8
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:
	DS3PEPF000099DB.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9124

On 2024-10-06 17:49, Daniel P. Smith wrote:
> To begin moving toward allowing the hypervisor to construct more than one
> domain at boot, a container is needed for a domain's build information.
> 
> Introduce a new header, <xen/asm/bootdomain.h>, that contains the initial
> struct boot_domain that encapsulate the build information for a domain.
> 
> No functional change intended.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootdomain.h | 28 +++++++++++++++++++++++++++
>   xen/arch/x86/include/asm/bootinfo.h   |  5 +++++
>   xen/arch/x86/setup.c                  | 24 ++++++++---------------
>   3 files changed, 41 insertions(+), 16 deletions(-)
>   create mode 100644 xen/arch/x86/include/asm/bootdomain.h
> 
> diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
> new file mode 100644
> index 000000000000..4285223ac5ab
> --- /dev/null
> +++ b/xen/arch/x86/include/asm/bootdomain.h
> @@ -0,0 +1,28 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Copyright (c) 2024 Apertus Solutions, LLC
> + * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
> + * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
> + */
> +
> +#ifndef __XEN_X86_BOOTDOMAIN_H__
> +#define __XEN_X86_BOOTDOMAIN_H__

ASM__X86__BOOTDOMAIN_H

With that:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:32:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:32:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813533.1226510 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGs3-0001OE-Oc; Tue, 08 Oct 2024 20:31:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813533.1226510; Tue, 08 Oct 2024 20: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 1syGs3-0001O7-Lv; Tue, 08 Oct 2024 20:31:51 +0000
Received: by outflank-mailman (input) for mailman id 813533;
 Tue, 08 Oct 2024 20:31:50 +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 1syGs1-0001Nv-RK
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:31:49 +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 1syGs0-0001hZ-V0; Tue, 08 Oct 2024 20:31:48 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.244])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1syGs0-0000DA-O6; Tue, 08 Oct 2024 20:31: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=uXjA5NYn5SalPiKV3aG7Ti5nzksIfO3TYPWZtziyO8o=; b=f0PsnuJq61sJdSvhYLDLJ3H7rH
	UCOsTVypj7AszpkblEh6sgN+FIwFBDN3FLbSMgS6zkzo8MQ+EysnYBlVXgku18oCWYSIbImrnmQPA
	d6NfGXdhsXGWY7/19vSTytVgYqfKQyn0Jcx4rGzbEREB+4u4DxkDRLSq3HFvBOkZHnD0=;
Message-ID: <e2acb3bc-85ef-4d46-b392-5f1dad013226@xen.org>
Date: Tue, 8 Oct 2024 21:31:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/8] xen/arm: platforms: Add NXP S32CC platform code
Content-Language: en-GB
To: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-6-andrei.cherechesu@oss.nxp.com>
 <94dc1668-5215-424c-9dcb-1e343451d464@xen.org>
 <b8419295-cc63-41b3-9f2d-277d81e5f85a@oss.nxp.com>
 <a24807bd-5224-4110-bc0e-946287f5c90e@xen.org>
 <1de8ea10-f801-45b9-ab6a-25465ecd6b76@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <1de8ea10-f801-45b9-ab6a-25465ecd6b76@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

On 08/10/2024 20:01, Andrei Cherechesu wrote:
> Hi Julien,
> 
> On 04/10/2024 19:24, Julien Grall wrote:
>>
>>
>> On 04/10/2024 16:37, Andrei Cherechesu wrote:
>>> Hi Julien, Stefano,
>>
>> Hi Andrei,
>>
>>>
>>> On 01/10/2024 13:01, Julien Grall wrote:
>>>> Hi Andrei,
>>>>
>>>> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>>>>> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>>>>
>>>>> Add code for NXP S32CC platforms (S32G2, S32G3, S32R45).
>>>>>
>>>>> S32CC platforms use the NXP LINFlexD UART driver for
>>>>> console by default, and rely on Dom0 having access to
>>>>> SCMI services for system-level resources from firmware
>>>>> at EL3.
>>>>>
>>>>> Platform-related quirks will be addressed in following
>>>>> commits.
>>>>
>>>> I don't see any specific quirks in the series. Are you intended to send follow-up?
>>>>
>>>> [...]
>>>
>>> Well, we could use an opinion on some SoC erratum implementation
>>> and if it would be acceptable for you or not, from any of
>>> the ARM maintainers.
>>>
>>> The erratum is about some TLB Invalidate (tlbi) instruction
>>> variants (by Virtual Address) which are handled incorrectly
>>> in some cases (for some VAs), and that need to be replaced
>>> with broader versions.
>>
>> Can you provide more details:
>>    1. Is this a processor issue?
>>    2. Which VAs are affected?
>>    3. What is the impact if the erratum is hit?
>>    3. Do we need to do anything on the behalf of the guests?
> 
> Sure:
> 1. This is an SoC issue, present in a subset of the S32CC processors family.
> 2. VAs whose bits [48:41] are not all zero.
> 3. Well, TLB corruption.

Can you provide a bit more details? Is it a corruption within the same 
stage/ASID/VMID? IOW if a guest corrupt the TLB, does this mean only the 
stage-1?

Also, if a guest manage to corrupt its TLB, does this mean it could end 
up to access host physical address it should not?

BTW, do you have any more documentation about the erratum?

> 4. There are instructions affected at both levels 1 and 2 of translation.
> The guest will have to work its own way around it.
> 
> In Xen, just `tlbi vae2is` (only used in flush_xen_tlb_range_va()) seems to
> be affected, and if we go with the 2nd approach from the ones proposed,
> it should not be very ugly to implement. I am of course open to any of your
> suggestions.
> 
>>
>>
>>> It doesn't apply for all S32CC platforms, but we can use the
>>> Host DT compatible to identify this. My idea is that we define
>>> a platform quirk for this and check for it using
>>> platform_has_quirk().
>>> Then, we either:>      - modify the definition for the affected 'tlbi' variant
>>>       in arm64/flushtlb.h to actually execute the broader one
>>>       if needed
>>> or:
>>>       - define a new wrapper for the tlbi variant we want to
>>>       replace the affected one with
>>>       - check for this quirk before its usage and call the
>>>       more potent version if needed (there's only one
>>>       occurrence of usage for the affected version).
>>>
>>> Number 2 seems better to me, it's more customizable and
>>> it's similar to the existing handling for
>>> PLATFORM_QUIRK_GIC_64K_STRIDE for some other Arm platform.
>>
>> I need a bit more details first (see my questions above). But if there are not many VAs affected, then we may be able to re-order the Xen memory layout to avoid the VAs. So we wouldn't need any specific change in the TLB flush operations.
> 
> I'm not sure what to say here, we would need to have the layout
> limited under the mentioned VA range in our case, right?

Correct. Is your SoC going to ever have more than a couple of TBs of memory?

> What
> about the GVA layout?

That's control by the guest. We could potentially tell the guest less VA 
is supported, but it is free to ignore.

Can you clarify why we would need to care about the GVA layout?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:32:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:32:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813534.1226520 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGsU-0001pb-0R; Tue, 08 Oct 2024 20:32:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813534.1226520; Tue, 08 Oct 2024 20: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 1syGsT-0001pT-Tf; Tue, 08 Oct 2024 20:32:17 +0000
Received: by outflank-mailman (input) for mailman id 813534;
 Tue, 08 Oct 2024 20:32: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGsS-0001p4-B4
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:32:16 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2413::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 66e8e49f-85b4-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 22:32:15 +0200 (CEST)
Received: from PH3PEPF000040A1.namprd05.prod.outlook.com (2603:10b6:518:1::52)
 by PH7PR12MB6563.namprd12.prod.outlook.com (2603:10b6:510:211::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Tue, 8 Oct
 2024 20:32:11 +0000
Received: from SN1PEPF0002529E.namprd05.prod.outlook.com
 (2a01:111:f403:f90e::4) by PH3PEPF000040A1.outlook.office365.com
 (2603:1036:903:49::3) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16 via Frontend
 Transport; Tue, 8 Oct 2024 20:32:11 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SN1PEPF0002529E.mail.protection.outlook.com (10.167.242.5) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:32:10 +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.39; Tue, 8 Oct
 2024 15:32:10 -0500
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.39; Tue, 8 Oct
 2024 15:32:10 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:32:09 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 66e8e49f-85b4-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=H6/qsll3ylRsCEPCLvdzqO/rbX/DA67kfHU5W+dU5BK5Wrcq3+bD4+PC7JvKugl2UEA/GG2k+vqbxzr4aID+MMJBEUb1GDVHWPlzX0igIJ2zE3cHJ3mIs87oDAmI88qbxub4HnNWXxPwdEtAovqNkbl797PXy1FBwDxgQn5v1FUD+RdvRvQzAykjnkHpriXOzUHrCBW3NMv6bFzdSegOoW4qC7D2I3e05KFmEWipv+pZGtuCAY591lXIc0h0wix+ZhlorTqOP9dNmqRCCfzTux2xDaGosb+Oz83jE7yxVCImV9uWC4y5zAk9qXu3JhCeQ5Hmqik9xQmqGPpmZbp+nQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=RDlCF00A96LP+NDay++TYORdKMopPqRMWMKotkuSvDI=;
 b=y2cBboYpCvPS1Q+BQhddpKJ/hnVh9IMr+q52+AqGdQ5b+GfoNOfLetxf13zHI6rfwGc+E9QKKoPN6RIGqwgwyeVXkbgNWiXF/bnw9EdqISOx6jtRGrQePGrfaFL7oefaJOKMXqQAWmcG88MiNfqf9PH+n0wbliEUxA86oIYCfVuPSweQRMfg5eDgzgdsMVkKMxRSpAgEXlRrgas6p7NDnD29JC1HSSsvNgsP7nNSladqRYjlRpghMgD41mn2n8q5iCB3mRf9cGw2ZYAazbzMpA/1n+mf1Hm2y/GLBDPz8V7iu7zHLIj5c9izujPn+gzu1UkhRi52c7d5Hbyf2Jf0/Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=RDlCF00A96LP+NDay++TYORdKMopPqRMWMKotkuSvDI=;
 b=gDcQxH9FdUY/aQrXlp76apepz36WwE/gf5KpAHlBYuV0Osu2hBbZLybQrLEYMiVdgtzaTNOe2/kN5yHg5Pa3Z3y0O1sUqPXJD+jVgKhr68cRhZ7TaByTkmzT5j4u58V01XaZI7vRdNpRrCevsfOOeiXxC34J0/k2xpUNElxhwGM=
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: <a26fdd68-9cc8-470f-ab81-0aa3d1ae187e@amd.com>
Date: Tue, 8 Oct 2024 15:31:30 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 39/44] x86/boot: introduce domid field to struct
 boot_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-40-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-40-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF0002529E:EE_|PH7PR12MB6563:EE_
X-MS-Office365-Filtering-Correlation-Id: 42d62f75-f733-420b-01d5-08dce7d84956
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?WURia1ovVTh6dWJyeTA4VHNkNWtWMFFudW16QTlkOERaSXMxaWFNMkZoNEJX?=
 =?utf-8?B?elA5dHdVNHpkL0lPUDdZK21jeitKcElNeVUxNFoxUWM4b3dTY2NmWjlSRTll?=
 =?utf-8?B?OWZpMnY2N0t3WHZRY0sxblExMjZRazdkSml0MEJyZ0hvM3I0bmNiMmFRTVBj?=
 =?utf-8?B?citaVitxcEEwS0dQdmQ3WE9yS0JKUGxobDZLd1pSY2FQSlBYNnZWVytNdmpr?=
 =?utf-8?B?cUZmNStzTXhScDZ5OEUxblp3L0haVFRDWTBNWmZwQ1J0SEF4cEsyeWR4QUE4?=
 =?utf-8?B?ZlJ1Rm5ZbWlkajdaV3RYd0l4MEtJTGtsMGZyWEdDb1R1U2t1S2g1RGgwVzRw?=
 =?utf-8?B?UGZ4U05kTkVHdEJOVmdsRDhWa0xRRExONVpjaDFoUTBpb2tNeTl0WjZla1BP?=
 =?utf-8?B?cWtHMGpWUWp4eEJNV1NPdjY0NDlSNklsTVFRdHJGbVhNeUdnNyt1NHJpNWRl?=
 =?utf-8?B?dk1HWXk1RWdxNjVTZERxUlFOZjIyK01pOU9QeDdKMlhtWEF1aW5acFNlQlJh?=
 =?utf-8?B?cWtWelNPeUVqUWs4SHNZWU5seEgyNVd0U0JlZ3BZa0FSY2hsL1Q2SFNpa1lB?=
 =?utf-8?B?OTVCcVFFNlRoNE9zVFFTSzBDTkF0ejgzZ2NQdFNBdDlmcWpOQzJSV3pzWi9H?=
 =?utf-8?B?LzlvQTNwQUNzZHN4VTdPTkpYTHNUWThBSE4vbEZDM1FOcVVGTUwrNFEva21m?=
 =?utf-8?B?M3ZVRGFwUnU1VWkyaDhCN3Vidkc4SWtlbVNwTmRyNStxVVlmYms1a0Y1STRS?=
 =?utf-8?B?Lzk1RFp0QXQrd1YrM3FTM1pMNEVyNnE4dWgzdDNmYW04V05rbDZ5U21RVTRW?=
 =?utf-8?B?UnhSVmFXTS9YMlYzYS9NSkE5WWw2NW1iejlseXVUQlA3TWxIYll4Z1FvSXV0?=
 =?utf-8?B?dm1wdyt6K2hFMkNxc3lpdEs2aEJHbmtWVWxZVHpvYStCQmZJc1hrUTVvTlRQ?=
 =?utf-8?B?TnZub3pXL2JwV05JTWNvdStSRnZVLzlJSlVMZ3VCd3I0MmJBVnBrQWNNeFZP?=
 =?utf-8?B?MlEvY0VEV1Yxb3VTKzREMXNadmdZY3NqZFlFb0ROcWk1c2JSb1pWZmFKQkdk?=
 =?utf-8?B?czRrci9TdjZlV0lXcnZZWU41ZzcwQlFpYkIyYTBHNmViUDljMXlqRWt3U2k2?=
 =?utf-8?B?N0RMaStPRWFSaWxuOVFTUFF3OW9QSzluT1lTeWwyaDR1Njdza21kLzdVVGtV?=
 =?utf-8?B?VzBTR1BJcVRsTVhIa1drWHBhT25TN0tjWDhvZVRvZStNWXMvaW9KNzNUREtH?=
 =?utf-8?B?ZmQxOXF4VHhtSWNOQ0Q0L0xZTDJqVldUZnNYRG9aTjNFaktheTY4cFFYTkpj?=
 =?utf-8?B?N2R4MFhzcE04RXk3UDFTYVh1SkNac3dJK3lMVjQ1K25nK1U5WTVra1phMWd4?=
 =?utf-8?B?TnMvYUVGLzJSSFlyT1BUVXBVR2NUR0xYc0NsNHNmTmVtMzJpRHlTU1p0VUZ2?=
 =?utf-8?B?cFdxY05keTV2SWNoOWJrSFhPTWJiTDVEQWtDeG5lS0tITnlGaXRSczBxN3No?=
 =?utf-8?B?THNTTkdjVzVVb3FnbmpKSXd5dmtJcTZCc0trRUEwRGxUVW85SGQ5Z0p5aHh1?=
 =?utf-8?B?bS93c2lZWEhNVnJaZTgyN1l1QkNwOW5TZmFKN3IvTXRNaTJrZW5lZXIwV25h?=
 =?utf-8?B?b3R3bEJBZDlhbVorem5RdTRUc2xvSlNVWlFyVjI0a2ZKY3I0UUFsaDdscmFp?=
 =?utf-8?B?RjBHZ0pvTUFmOUowblM4WmNGQ2dHbG4rMlljd2pZazVrQm1LcWFvK1VrQUht?=
 =?utf-8?B?dkMzcHY0MUY4THVpM0ZiekRVMndGa3loLzJ1QkhyWnlrZ3ZPZTQzZFA2UHBD?=
 =?utf-8?Q?fe5vob2d81wzGbfeRmm/4ajy9hUUm0UaBg390=3D?=
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:(13230040)(376014)(36860700013)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:32:10.8312
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 42d62f75-f733-420b-01d5-08dce7d84956
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:
	SN1PEPF0002529E.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6563

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Add a domid field to struct boot_domain to hold the assigned domain id for the
> domain. During initialization, ensure all instances of struct boot_domain have
> the invalid domid to ensure that the domid must be set either by convention or
> configuration.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:37:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:37:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813544.1226530 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syGwz-0003A9-GN; Tue, 08 Oct 2024 20:36:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813544.1226530; Tue, 08 Oct 2024 20: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 1syGwz-0003A2-Cz; Tue, 08 Oct 2024 20:36:57 +0000
Received: by outflank-mailman (input) for mailman id 813544;
 Tue, 08 Oct 2024 20: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syGwy-00033N-HQ
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:36:56 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20623.outbound.protection.outlook.com
 [2a01:111:f403:2408::623])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0e421c1d-85b5-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 22:36:55 +0200 (CEST)
Received: from MW4PR03CA0069.namprd03.prod.outlook.com (2603:10b6:303:b6::14)
 by MW6PR12MB8707.namprd12.prod.outlook.com (2603:10b6:303:241::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 20:36:51 +0000
Received: from MWH0EPF000989E9.namprd02.prod.outlook.com
 (2603:10b6:303:b6:cafe::dd) by MW4PR03CA0069.outlook.office365.com
 (2603:10b6:303:b6::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.20 via Frontend
 Transport; Tue, 8 Oct 2024 20:36:51 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MWH0EPF000989E9.mail.protection.outlook.com (10.167.241.136) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:36:51 +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.39; Tue, 8 Oct
 2024 15:36:51 -0500
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.39; Tue, 8 Oct
 2024 15:36:50 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:36:50 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e421c1d-85b5-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=D9eTmfkeJt+O6nfuf2b7hv2hO6LclnhlE+OkRymuwDy2S1dUT4kpnVLyRCoItjQjzdujWW5VEa4zvXC34LKgVKll2molxs25WR+hisyNCWwpAuoWYxwe1/WWAE9jzHixSjg0jKCmXSccGiWt+BlOOc2kBhqwEm96NnYYkSe7KaI63J946v/cUOJCbPQG3K147tbypjTKOIhHwsoZxT9YtnBDHjrpR3NIK1EzpTs++8KXs+9z8vSO+1hqG26v7kJjBPF/N8aM/ShP+DCd6mDVj9go6AaHUekm8PNjgUpfbBdpCX24Vo/fSY+b/SOfHRO0ITiarjniuVlugnEiEIJkxg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=ErtetIz3haHJAxSSfmR+mWVjEXTEeTCPGz12pCQEB1E=;
 b=wmN0ef22AiKRRXaDKf2LdmZDyPuxbb03YxSdHAG5R3H93x0y3nfYvGYToby2/c/iqNjA0muh8bDhw+6g3HB+W4AGDwDIDPwp9vew7X+ZwziNR3UC83FuUeP/I8P2jd6beQFZUoYH+Dt07r34FnCrZcOP5ezYaTiy6TlJxYX4H/hS+jywRt54CkOBD9pVx3dIUjRhSKr46qgPv571rDNAsnPLRzt7Aa/GSTsTG95aNWF58rRmNizgymY0bsvVMmQiwo1AceQNyQYJbFEjES6siya9AEwetPHoWEH1egwv+o0GqwyuCJd/T80CIQodDdPMGUwzPFkMLHq94JZGtd6pBw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=ErtetIz3haHJAxSSfmR+mWVjEXTEeTCPGz12pCQEB1E=;
 b=xN75WPS5Vhq7WfNL5i0xVQiGmCUs7air1ZvQ1Syr0CyPeuXZeuoyRaEsJ3ynj2+V4NDzxq3KfClcy+XcwWk2T6vW+IFLSlo0fhYpeGi2Gcs67so36H9CJ/HwSqJd3SMoEtCNhKncw5FoYKMNZZFkgqE85WSYda5Wr+Su+NWoW1A=
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: <a51d0a6e-7050-44af-9a66-edbfba67bab1@amd.com>
Date: Tue, 8 Oct 2024 15:36:07 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 39/44] x86/boot: introduce domid field to struct
 boot_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-40-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-40-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000989E9:EE_|MW6PR12MB8707:EE_
X-MS-Office365-Filtering-Correlation-Id: d43d2a05-caa8-4555-51f1-08dce7d8f0c8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?TlgzcEUzTm51TDlJSkFKdWxGWmQ4ZjQ5SkZ2eGdxSlV3YU9VSENTMVVpNTNO?=
 =?utf-8?B?dzRrc0FYVzRzS3Z5USs2enM4WVFwZXhwNnB5bHZtMi9TdEg0MjQwUWdsTzJX?=
 =?utf-8?B?QnJGR0hlUzVSQzhsWm1pakpJRENISm9sREJjVDNqYW5JMmJLc1oreTdsMWZQ?=
 =?utf-8?B?MU53bHJkb1FOZmdTWlFtVCtjZ1RYYitvSXF5dExFdHpwZ2VtVktMUWdsOUNG?=
 =?utf-8?B?L25sQUc4a1JQZWFuVVlLU1dBM2NnRTdzdmRaQURNWnlkSWR0eUZneUt4RW5S?=
 =?utf-8?B?azR2MnloTnY5VWgxZDdPeUVlK2xpTDdNakoxTHE5ckJOc1pvM1EzcnMzU0F3?=
 =?utf-8?B?cGNTM0tzcE9UbnAvZEZoSVN5NXRSSi9IQTN5b1BodUQ2YkZuRTg0VnpLNnBK?=
 =?utf-8?B?bVZmVmxvSWhNR0tiSDJDUE5MM0hXRmNucEFzQXkxRis1OG15R0t4cEtMVnRU?=
 =?utf-8?B?VTdFeFp6K1BVT3dPaHUzU290UDY0UHR4a1JReVIyNllra2FoL1RNcXpXMDdL?=
 =?utf-8?B?YWlVWWliL0llYXhrS0lzMTBHdEFWa3BUUXJTTHZKNWp5dVJOR2k2NHRxcU1l?=
 =?utf-8?B?eWZJODNidCtLckk1U3Q4aVlTZGN6TkM2ZjcrRkQwRVRNeWJBVHptM3dCaUZn?=
 =?utf-8?B?MWEvV2tTWmhBN2hUSlA4SlJka2tOZU9uRVFPRG0zUlNoSks2WEZDQy95K2VI?=
 =?utf-8?B?Mjc2QnJ3RlNYemRlYjFPR2RrQjY5dE1ENjVveUN3eUpNSVdNdTErR3A2YVRJ?=
 =?utf-8?B?UEI4VjlYdVpmMnovVHpSeEJaZUhxYTdmb3BZK29OWVo5K0tsUFhwQXRXYkpl?=
 =?utf-8?B?QU9yZmx6VUlybmJQNnRXM2pSazNpS3BPdHEyekQzeWs5dncrTEtidXNHSEpC?=
 =?utf-8?B?WUQzcUxTRE1lU0k3M1VRbi9uRENaa0dzWmlzL3p2T2tHVVVKSzMwTzZ5S3dN?=
 =?utf-8?B?VjBoVVhCV1ZYdWxyUVRBd3JYaHRLTnhjaU9RcFlhWUxjTm4vQ3FYcC8xdTBi?=
 =?utf-8?B?c1VjeHFGSjI2eGk3NUJaSjZXTEFhOXNzRTRZTDYxdW1POFhlWEdFT2xNTVpP?=
 =?utf-8?B?TGZhcXdSUWJ5dVJHMUFkSVo0ZjlmS1BFeTFnTmNnc2ErcWsxVXNrLzJ2VzVZ?=
 =?utf-8?B?SndIdXJJOXdkYkh2Z0FZV3QyVnlFMStzRzVYSm1JMUdiMGtzSmN5R0gwa0py?=
 =?utf-8?B?QmZmaHVwQklqNmFSZ2d6QUl3Z1BhNVhyM1AvN3h2QzJwaFYxd2pCbTR5amw0?=
 =?utf-8?B?NXJtZEJuMzhkTnlGbUhyeFZVZUNrNkxBc3BhSmp0Mm9qaXRUK2UzY2JYdFpy?=
 =?utf-8?B?UTJwRUZPQm5DS1RHNFRaQmgwdXhsbE5YSHpyaGZNS0VicW1XQkorTW9SaXJ1?=
 =?utf-8?B?OVdHTDhhaU5FOUdwY2tlblBWWFA5cGhPVklZUHNhQW16b3NSemRRdW1ISDFy?=
 =?utf-8?B?eTdFZXlqTUpISXJwVnRBMjJXSTZQWi8yOUZORWIrWSs3bUJBOVNFQ0lia21u?=
 =?utf-8?B?VEFhUWpKOW1NVXZDOU5rc3lrU2dwWXhwYzU4VmpDdjhRSkR5MUVPQklIclZj?=
 =?utf-8?B?MXRGcWJia0hTcDJPOWNLSGlsZ3RXZXZxY2ZoQm5sWjUxYVdiUGRUbFR0NC81?=
 =?utf-8?B?am5uMUJQSktVQzYyQzFHd2gyazlaYXp5K3NOeUNDM2dwSkZJR2pCd0xqbnFl?=
 =?utf-8?B?ZGlGcEYxSEc0WUpWNWFUSFdkR0V1NVhxMzh5bitleXJLakUxK2FOY3N2Zkky?=
 =?utf-8?B?VE5LMkdBd1ViK0R2dm56QmY1L2t4SnZTd3JOcFBOKzgyVk1tYzZKSWpPSGFu?=
 =?utf-8?B?RytsRHE3WW9uNmJFSUpBeW4ydmEzcUhQZnA5bEtVMkFycVBBcElMc1BJYkdI?=
 =?utf-8?Q?iTSk68G8XYE4O?=
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:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:36:51.6661
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d43d2a05-caa8-4555-51f1-08dce7d8f0c8
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:
	MWH0EPF000989E9.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8707

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Add a domid field to struct boot_domain to hold the assigned domain id for the
> domain. During initialization, ensure all instances of struct boot_domain have
> the invalid domid to ensure that the domid must be set either by convention or
> configuration.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootdomain.h |  2 ++
>   xen/arch/x86/setup.c                  | 12 +++++++-----
>   2 files changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
> index 4285223ac5ab..d6264d554dba 100644
> --- a/xen/arch/x86/include/asm/bootdomain.h
> +++ b/xen/arch/x86/include/asm/bootdomain.h
> @@ -11,6 +11,8 @@
>   struct boot_module;
>   
>   struct boot_domain {
> +    domid_t domid;
> +
>       struct boot_module *kernel;
>       struct boot_module *ramdisk;
>   };

Oh, you should probably move domid after the pointers to avoid a hole.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:48:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:48:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813555.1226540 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syH86-0001jA-FJ; Tue, 08 Oct 2024 20:48:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813555.1226540; Tue, 08 Oct 2024 20: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 1syH86-0001j3-BN; Tue, 08 Oct 2024 20:48:26 +0000
Received: by outflank-mailman (input) for mailman id 813555;
 Tue, 08 Oct 2024 20: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syH85-0001ix-61
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:48:25 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20612.outbound.protection.outlook.com
 [2a01:111:f403:2408::612])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a818f80f-85b6-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 22:48:23 +0200 (CEST)
Received: from BL0PR1501CA0027.namprd15.prod.outlook.com
 (2603:10b6:207:17::40) by BY5PR12MB4164.namprd12.prod.outlook.com
 (2603:10b6:a03:207::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 20:48:18 +0000
Received: from BN3PEPF0000B074.namprd04.prod.outlook.com
 (2603:10b6:207:17:cafe::7b) by BL0PR1501CA0027.outlook.office365.com
 (2603:10b6:207:17::40) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 20:48:17 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN3PEPF0000B074.mail.protection.outlook.com (10.167.243.119) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:48:17 +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.39; Tue, 8 Oct
 2024 15:48:17 -0500
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.39; Tue, 8 Oct
 2024 15:48:16 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:48:16 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a818f80f-85b6-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=BwgMq6836jC5sY35zEPLXf+cKaVvKfaOv+lRh4MvajZ27osWW8YR8NYgPeSNOikpA1zxtQ6P7Q/VPELqF4lV6YH+/6XP5LBgckQrHf3HuOcsjzGEtcRxYqxtbkJY5yOT/0pwBVQx1vsvg8nXT5EE0jpbY0C9R/mB/7RWHhgodca/L/2YVkYrucLwb6Qgtstk00PDyK6fBbo40Ef7XQ+W++pOfcjFy4XArysESdedOK9Fj50qjvlAMlsDos2nnGjH+1wVK/GyYmSCdOVj33D1xmAqKOGOhbrUPe2A5WNWZci7q/yI74hBPSoyMr0s2QKO94bk1MTRofSIZWSCPlJQ/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=gKNXg5cDvMCtoT7GI50eLriDbSWKWgWhYorrdT8xM0I=;
 b=XSZIg/05xMcly9YSpjJCTYr7N3G7j2div2V2kbht6KE1ayP94n6jI39fmPlD8POU3ZyAXA0U8dhKpBcENOGFS0o+DizHHPn8k+NllgctL3ntsCdOAzSGdIXCEGcLVah8FMmu6JJY1KhEZmytENwWM9pfHc/2UXRbscOWAjcxcCSy/yFY25aW8xQJQ6OsacCCQBJm1zWhmM6j+0i0plZuI/QnHLhtlXHqB7BPOM9rlxDWB66vCwiiPT9BDzQULki0oWv364x0YV6BlYL4K6LWGU36lbiFMn1Z79cx46pSgzvQwZyV1qdgu6K8tirwnayKJGjSMe8HabNAY38gM2zC/g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=gKNXg5cDvMCtoT7GI50eLriDbSWKWgWhYorrdT8xM0I=;
 b=pfgG7KszErdGMGTzU62gnrUb381cJSESLvM5EPRLL6YWv867YCIvzxIbhEyX6aiC8znWNyMeP8wz4EyMLmgGr2D/EQiveXGjIwXaa2/Zkhn0L17A2b9jhaM/nIkQCUKk0ZhNtKcE1izEJ/ml6R+fC6C+3+keNyrlvW8onE62F2E=
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: <b6429ff7-207d-4247-9bc7-4875a68a2b68@amd.com>
Date: Tue, 8 Oct 2024 15:47:36 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 42/44] x86/boot: convert construct_dom0 to struct
 boot_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-43-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-43-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF0000B074:EE_|BY5PR12MB4164:EE_
X-MS-Office365-Filtering-Correlation-Id: dae44254-583c-45b7-e0b5-08dce7da898c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RjJ6UW03RFp2aW5OZytuRlg3ZUtxd3huSEI3UzJPMFBod0RQellVZDJYNXhV?=
 =?utf-8?B?WnRUWVZOdlFqRlBrazU2em9aRytwaUNuRkVtVFNyZXFPRnFsSkxpKzRYUjl0?=
 =?utf-8?B?d0d6Z25pRGVsNUtUN0V0REVqaDBZK094Z3lza1JjN0ZSbE9FVVBSSGFBMzFX?=
 =?utf-8?B?c0czcGVMa3lFSktJT3E0NnhpWUZlRnR6aGE2WkJBOVU1L2ppLzJ2VWJuSmhT?=
 =?utf-8?B?TzFwNmpieTRFL1h2anFxL09LMTRYTDRMUUdKN3V1SUd2NVg3TGRGK1pVY29F?=
 =?utf-8?B?aHVVUEFJbU9jdDVJTlB1R0phU3FUVi9vYWtFL0lHNHJuOUtFaG51ZUlxenU3?=
 =?utf-8?B?WENaQk5pVXV3eC9KS2xUQ1hhTzlJVWtIbzUvVUVZdDVnTkZwbzk1VDBlb3VJ?=
 =?utf-8?B?NUZVVHhxY2VCeWYrZXJINmhUVEszSVVIQld2YS9zZ01RZEVkZ0dVL0tMY0xl?=
 =?utf-8?B?YjZpb3hmcE5nUFluVThYUHdOVkEvRkxmYUpWNDBtZTRmUW1IUTVkSmNGT0x5?=
 =?utf-8?B?akg5bGV1RDZDQ0FZYmRoRHIvL1A3Z05TREtESzg5NXNqTkJoRWxSM0VMQWx4?=
 =?utf-8?B?SUc3Y1Q0ak9qSGlwMVBBczZGUEt5aDVKeXY2UGpuU0NFRGJ4UXdpWjlFRjQz?=
 =?utf-8?B?NTFlU2E5eHVaTFRXV1d4LytLQ2lCZTJJMDRrblg3N3k0SVNueFRSak5Ic0pn?=
 =?utf-8?B?MlptNDAwWTFrU3QrSGxSeFludWMxK1I3MG5zNTJnZ0c3a0pmbVBiQnlTVE1x?=
 =?utf-8?B?dFNncU5KY2xOVEdMNjh2L0VxTUhhUjI2R0xLV255UnRBN1VaK3pOMVN5aHcx?=
 =?utf-8?B?U09kNHJUUXlmeFljZFNEVDBIRUZxZHBCSktweDN4bndwaE9Td0gvUXc2bGFo?=
 =?utf-8?B?MTZjSW14QXlWcjZKTjdBSUhLa0h4bHhVTnkzK2o3NUFNNG1IRko5aTV6NDRL?=
 =?utf-8?B?VTd2aGZqVFZJTkZadmovRHdFNnZJeitWaXZHTDJQRWMzN082OEl0N2FFbUZY?=
 =?utf-8?B?b09LcUVPUndSTlNnSCtzcWNJSnhJRzZXUmdLeS9zUkVpYVUyeG9MTCtZRmdm?=
 =?utf-8?B?aDEwbHpORFhQV2VoaGdORTRjcTcxeWJ2MThjaUpHeW9ZcWE1cmIrcTFPL2Z5?=
 =?utf-8?B?b29nblltb2laa3h4WGw3cXZjRkI5RTNiZ0F1NGZJYXJzUVhsRDk0RUlTMkhU?=
 =?utf-8?B?dkdKMkdzbUtIb2ZsTXM0NVVhSnpLN2JvdERRcHVIeTQ1WnY3MThQNzhPbjVT?=
 =?utf-8?B?ZUpmM2xZSGZ6S25QWlVMcmNFQUJPYlQ0eklieW56Rk5YYkRMaUFuSlhCL0Rv?=
 =?utf-8?B?b1ZhMk1ndnVuZzVDMGlDS2lSbkQzY1cvVm1RdGtkNzg4ZzFWY1hDQ1pqRTBC?=
 =?utf-8?B?QUdjcDU1Uk5VZFgrSmx6NCtlcG43a1NVUERsRk9RNXI4b1RKTlBpU1FJMENk?=
 =?utf-8?B?a004YkFyajRldzVZOC90bXlwL0Qrdi9VTi9hcWZjcVFVZXlyTUZVUkNBT29k?=
 =?utf-8?B?Qkp0ajh0MWVjOTZBU3MrS3JZTlFYVXRNYkxDZWw4NlBZb21mR3hjYmpPU3lV?=
 =?utf-8?B?Mmk1RlpqbmV3Y0hMeE1MZ2hpUHdCaS9MUldCZThENi9PTnZBTEFIWmlkREJp?=
 =?utf-8?B?UFNOZEdHNThUZUFoSGJuLy8zbHlrQjRTNVhDcGJnN2NCMU9hSUptaGZpTmpp?=
 =?utf-8?B?VjZuLy9JZ0dTY3p6YWR3Wm96aldLc0k4TzJJdUhYUWYxWC9sdVJnVnc1eU1Y?=
 =?utf-8?B?NWtacWtjZUhHMStnN254OENLVHRxbmhzcTdDSzhaR09mQ0hSLzJDZGZBemho?=
 =?utf-8?B?YUg5OG5nelIvdjJiNE1DVzR5c0JwLzJaTElmTWdRS1l1QU5Fck41clZyL1pq?=
 =?utf-8?Q?r9BdqnHVDj79D?=
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:(13230040)(1800799024)(376014)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:48:17.5740
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dae44254-583c-45b7-e0b5-08dce7da898c
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:
	BN3PEPF0000B074.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4164

On 2024-10-06 17:49, Daniel P. Smith wrote:
> A struct boot_domain now encapsulates the domain reference, kernel, ramdisk,
> and command line for the domain being constructed. As a result of this
> encapsulation, construct_dom0 can now take a single struct boot_domain instead
> of these four parameters.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/dom0_build.c        | 19 +++++++++----------
>   xen/arch/x86/include/asm/setup.h |  4 +---
>   xen/arch/x86/setup.c             |  2 +-
>   3 files changed, 11 insertions(+), 14 deletions(-)
> 
> diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
> index 71b2e3afc1a1..e552f2e9abef 100644
> --- a/xen/arch/x86/dom0_build.c
> +++ b/xen/arch/x86/dom0_build.c
> @@ -597,22 +597,21 @@ int __init dom0_setup_permissions(struct domain *d)
>       return rc;
>   }
>   
> -int __init construct_dom0(struct domain *d, const struct boot_module *image,
> -                          struct boot_module *initrd, const char *cmdline)
> +int __init construct_dom0(struct boot_domain *bd)
>   {
>       int rc;

I think a local variable would be better:

     struct domain *d = bd->d;

The patch is smaller, and using just d is common in the hypervisor.

Regards,
Jason

>   
>       /* Sanity! */
> -    BUG_ON(!pv_shim && d->domain_id != 0);
> -    BUG_ON(d->vcpu[0] == NULL);
> -    BUG_ON(d->vcpu[0]->is_initialised);
> +    BUG_ON(!pv_shim && bd->d->domain_id != 0);
> +    BUG_ON(bd->d->vcpu[0] == NULL);
> +    BUG_ON(bd->d->vcpu[0]->is_initialised);
>   
>       process_pending_softirqs();
>   
> -    if ( is_hvm_domain(d) )
> -        rc = dom0_construct_pvh(d, image, initrd, cmdline);
> -    else if ( is_pv_domain(d) )
> -        rc = dom0_construct_pv(d, image, initrd, cmdline);
> +    if ( is_hvm_domain(bd->d) )
> +        rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
> +    else if ( is_pv_domain(bd->d) )
> +        rc = dom0_construct_pv(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
>       else
>           panic("Cannot construct Dom0. No guest interface available\n");
>   


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:49:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:49:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813562.1226550 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syH8n-0002d0-RS; Tue, 08 Oct 2024 20:49:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813562.1226550; Tue, 08 Oct 2024 20:49: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 1syH8n-0002ct-NY; Tue, 08 Oct 2024 20:49:09 +0000
Received: by outflank-mailman (input) for mailman id 813562;
 Tue, 08 Oct 2024 20:49: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syH8m-0001ix-4R
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:49:08 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2062d.outbound.protection.outlook.com
 [2a01:111:f403:2417::62d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c26b68f3-85b6-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 22:49:07 +0200 (CEST)
Received: from PH7P220CA0033.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32b::33)
 by IA0PR12MB8088.namprd12.prod.outlook.com (2603:10b6:208:409::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 20:49:03 +0000
Received: from SA2PEPF000015C8.namprd03.prod.outlook.com
 (2603:10b6:510:32b:cafe::59) by PH7P220CA0033.outlook.office365.com
 (2603:10b6:510:32b::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.24 via Frontend
 Transport; Tue, 8 Oct 2024 20:49:02 +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.8048.13 via Frontend Transport; Tue, 8 Oct 2024 20:49:01 +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.39; Tue, 8 Oct
 2024 15:49:01 -0500
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.39; Tue, 8 Oct
 2024 15:49:00 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:49:00 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c26b68f3-85b6-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=krEIg6NcTCoE+Fqk2JixqHkL+DWrtqNmpi/CqJWebnyku90g18Q3CWlpJRwPuRnFK9gCA5IJPfC9/QRwGmdcN7SHtte5LG72w0yJDBkKx/ygIrNmDboShRliU84p3VT0SWx+v7oi66lYzVeJtwmlbYD5GStRlU+0wRL4I/io/Q1eKqRV4x3xPF8GkiDCDjGVnS5pBRZiPGq3gPWc0OxVLXYHyVNsYWhSGY9I7pf9LQPNDIANnr7hxIAERBcrYnWYWYDUIe73mr0aDdB0Unf6h2zM0l6YHzSL1bma84aCow78gDU8TDsp319kQc8r+CjUHyzi9NsxmHdC2jVbxYp//g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=/g3dcwdHby4ZdYU/WA4WKgagK1TAEoysiyWn+YMwo+I=;
 b=MztKPXbhptnpO3hgN3KdUpAwKLJhLYA6dzEmpZpKCGcTyOIxukk7mfWMnbiYaofrIXWdRaaqFeHzR33+8vBy+J4tECWPY4BTjrW5g+O+EVJN/Q+8VChQQ8BOpBwybH5Yn6HRSdCYJ9hRnN0YvmYrIvP0JzOzhmhws59UqOdh32mS05R/bnQE9+0P0J18y9udTKL7FE/Ore99wGXRTFePl7lpx0f4zELh16oQZiLW+MvhZZW6px3DUp6R1TIIInr4oaGLWdxC2tJcGxf3p5k9Q7sjNHtmKoSBj2smr8EYfWLonPYNiN3l+0n7jZg32snK11Y5gcYx1fV3RKVGv4MoGg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=/g3dcwdHby4ZdYU/WA4WKgagK1TAEoysiyWn+YMwo+I=;
 b=ARLfIMioSXK0rr/6jDI8rBeOJCkjSfogu5SNRpcv0UwxxUwDOa5G1EEvHa26AK6KxghLnNmwOdMwaw5eUcKkJghnEicpEyTiaEr93QQ34eUnTiHqetbZG+AXhHLkl2O/LRlPQ01suW8kY3RNkUcUbGSixtKit41Q/744VeOSWq8=
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: <949190c5-07a2-44dc-a4de-bc59ae88beec@amd.com>
Date: Tue, 8 Oct 2024 15:48:20 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 41/44] x86/boot: add struct domain to struct
 boot_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-42-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-42-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015C8:EE_|IA0PR12MB8088:EE_
X-MS-Office365-Filtering-Correlation-Id: df2247e2-02ce-45b1-f3c8-08dce7daa3d1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?OHFualFOK3UrY08zTWMvdjVOek1nYXhQajJDVlRLNG94RGtLbEZjUFc3aXFz?=
 =?utf-8?B?L2FMbEhjNWhzODNSdHJYTlRrRDJjL3VMZDhyM2dscnd4STYxSmRwSXc3UHVl?=
 =?utf-8?B?ZXhSSjJiYVVKcS9PNDFCT3k3M3RDVit2RlliN0lCSTIyTFJnL0djSmh0cHJv?=
 =?utf-8?B?QzZOT1FaY2JCSWN3SXYvVjgyOEc1ajJldFJrQU5VN3JXMGR4TGdneVg5dkxa?=
 =?utf-8?B?bU9VMTllNytWTHN4aDBQZ3dEOEZnY0hTaGlkNk1kZ2hXUnZYRDQzS1Z5V3ZE?=
 =?utf-8?B?RWNHSU9KZm9OM2UraThYakVMcDVNUmI0bDhMQ1htdVJoVjF3UkJNend6Mklj?=
 =?utf-8?B?S2Q4MzdCUXVPQjdOSG9tVG9CWm5RSXhHVFY5VFhWWTRuREtBNTlqSXdCM3lG?=
 =?utf-8?B?RmhUYkgyc0xXRU1ZUEV6Qyt5T1ZxaHZWVW0rM3g0SmNRcnJ2b1hyN3ZDMmpv?=
 =?utf-8?B?QVl3MVEyRERoL0hUTWZwQmhPbEVtMXArS2Zka0tRb00rRlRMMnVjYnRkL3BI?=
 =?utf-8?B?MCtwWCthV2o3MjRYMjErNkhnd0lXUVA3dGliZU9tK1M4MnZUS01nSzhPQlpu?=
 =?utf-8?B?cmxVTzdjeHZIMGg4bUZ1QVg3cThBcVhnRmo1UGN6MTAzMEt4alhUQUxUSElX?=
 =?utf-8?B?NkhQVXE5SWxSUE5XOHlkT3ByL2RHWUNtWW4rbURpWkRsZHNjakJEa05RSFo3?=
 =?utf-8?B?UDF1NUQyU3I5VDlMbTdjSytsYTFrRnpKT1dheW1kZDIwUlNUeGNjSlc0Q2du?=
 =?utf-8?B?dmZZYkVwT0hadStwOFV2SElYMHA1VlJtWG5vR1crQ21ndlRwTWlSYjlJUVFv?=
 =?utf-8?B?RklWSkJLTnVvVXNvRXg0dkdiOXk2UUppbjNERW9SSDd0YjV0TERmV1hMQzI3?=
 =?utf-8?B?ZEVWalIxM05Ka2NnMkFjVGRrb0l4NmlsY0lBRndzUXlEa0VBR0R6NmpyelJ1?=
 =?utf-8?B?ZzFVcGkzZEJnUEo5T3BzbFhzMEt3SEY3ZlZVenFkR3FiRVpndi9uVW10ckg3?=
 =?utf-8?B?cWUxQ0RRUG1RYlBsSmptVG9lbjh1bmxEY0ZxeXhGNVJHMTV2VlhBemhndW1m?=
 =?utf-8?B?UWxUZkQ3Z01ib2hsci93Mlk4V2VIc0l2SGNiTEJZQjg2ckJncVloQUFJbmti?=
 =?utf-8?B?TDRvd2ZqOUp5RTVNNnE1YkNnaUVmTzI3a3ZwdW5DdEhhYkh5c3VpRE11Z1k5?=
 =?utf-8?B?QjlySnI3SGRDdFpYZWhYTU5YcDhFVlNzYis3VmFiQUZYUVZ0TWZkTmhZUnI1?=
 =?utf-8?B?eXRJTnpHMFlzdmVBTXhPS29wWXQ5SjE2emJCM2tEamo0Ulgvd2s4b1Uzc0lE?=
 =?utf-8?B?YjJNQ3B6Sy80L3JjL1U4NFBaN2Q2MTVjOHR4cXFpM0VTaEVXSXhKMG8rOHJI?=
 =?utf-8?B?TDR3Snh6d0NRaHJidXBuSDg3aGRUQThBZEN1WTRCQlRUcTBvNFdjblpDRjg1?=
 =?utf-8?B?eExTMThSZkdlY0F2UW0zNjYraHJRa2E5K0RVYW1yV09vVzZHRDlxUDZYQzFk?=
 =?utf-8?B?STB2UmViL2JTTjVpd0VmRW41b1cyekZFRlNHZjBDQlR3UElqaVQ0Q2ZDQ3hD?=
 =?utf-8?B?SG41Tlo0VldMS211eEQ4V2tNVVlGRUFjbmJVTlR1dVl2OFh1d2RlSmpoMnBW?=
 =?utf-8?B?eTJ2S2ZWN0h4T081ZVFvVEQ4cVBDS09PSmZ4OHd3TnBQbXBCQ2k5bnQzeDhB?=
 =?utf-8?B?c1R4WDlNaGNQdHNTM3ZadnFPc0hwOVh4Tk9xd2lSUkxEVVFGVXdWemk2QkYy?=
 =?utf-8?B?ODB3NHNNRlExU3pHUnFKNDRWMklOdGZ1eENnbXpiSk1XeHpyTFBoRTcyVXFC?=
 =?utf-8?B?UXJ5MGplRG1yM2ZZRnV2VGp6OWkzeDlXZWdHVlJOWm5xWmNqOVFYMHBYdUZz?=
 =?utf-8?Q?7vmx4Fcp4Ak2B?=
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:(13230040)(376014)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:49:01.6162
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: df2247e2-02ce-45b1-f3c8-08dce7daa3d1
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: IA0PR12MB8088

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Store a reference to the created domain in struct boot_domain.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---

> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index f250638edf09..e6a231bd2d42 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -959,7 +959,6 @@ static struct domain *__init create_dom0(struct boot_info *bi)
>           },
>       };
>       struct boot_domain *bd = &bi->domains[0];
> -    struct domain *d;
>   
>       if ( opt_dom0_pvh )
>       {
> @@ -976,13 +975,13 @@ static struct domain *__init create_dom0(struct boot_info *bi)
>   
>       /* Create initial domain.  Not d0 for pvshim. */
>       bd->domid = get_initial_domain_id();
> -    d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);

It's a smaller patch if you keep `d` and the line above and then do:
        bd->d = d;

Regards,
Jason

> -    if ( IS_ERR(d) )
> -        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d));
> +    bd->d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
> +    if ( IS_ERR(bd->d) )
> +        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(bd->d));
>   
> -    init_dom0_cpuid_policy(d);
> +    init_dom0_cpuid_policy(bd->d);
>   
> -    if ( alloc_dom0_vcpu0(d) == NULL )
> +    if ( alloc_dom0_vcpu0(bd->d) == NULL )
>           panic("Error creating d%uv0\n", bd->domid);
>   
>       /* Grab the DOM0 command line. */


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:55:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:55:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813568.1226561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHEq-0004BM-Fv; Tue, 08 Oct 2024 20:55:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813568.1226561; Tue, 08 Oct 2024 20:55: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 1syHEq-0004BF-BY; Tue, 08 Oct 2024 20:55:24 +0000
Received: by outflank-mailman (input) for mailman id 813568;
 Tue, 08 Oct 2024 20:55: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syHEo-0004B9-Le
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:55:22 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20602.outbound.protection.outlook.com
 [2a01:111:f403:2009::602])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a0d02394-85b7-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 22:55:20 +0200 (CEST)
Received: from SJ0PR03CA0068.namprd03.prod.outlook.com (2603:10b6:a03:331::13)
 by CH3PR12MB7739.namprd12.prod.outlook.com (2603:10b6:610:151::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 20:55:16 +0000
Received: from CO1PEPF000044F8.namprd21.prod.outlook.com
 (2603:10b6:a03:331:cafe::54) by SJ0PR03CA0068.outlook.office365.com
 (2603:10b6:a03:331::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 20:55:15 +0000
Received: from SATLEXMB04.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.8069.0 via Frontend Transport; Tue, 8 Oct 2024 20:55:15 +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.39; Tue, 8 Oct
 2024 15:55:14 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:55:13 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a0d02394-85b7-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=pnU+kGaqtn/Hm5+7ybnqrtsArC1/z1ANmFT35ZKdI1Iawg77QdxABOb+wm5P3aZ6G7wwpUIe8P8Ku7rjkBXEnRHFTpqJ/UoDNeK+XNYWsfIASA9APSXpJmig71kRoU50cNzM3RtTDRGlS8fn1SNYDwiJlWnWAJHjaMmImM7n9z848yj21+0T/KRB8I1aVyusniaspefMRVL81hRsH8bwbss8QOP6ii6DxF/vMUGQiuZzJE4UMKz9b2c4cTUMzHEtSKOO/kvmLnL06f+HRMJf84SUZBt+KOCcyrt2ykiz5PtqXLLvCdk4laI470EihEC/nATFvsJgBDkKl9EEVW24aA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=38kzgQZuvtjPTcjHsGMRDZRICHRETo1px+QNNAvmIYs=;
 b=XMSHTYiddQ9tWBNkLmbHae1l7I/xXwqAh8vSEwg6uiZqLzNpfOmoyGbth7Xt/HLN1BNwI6QPuiZDN1OhFD2IWRG0KcG3QfhnKa2wkRUJu1S3kJe0lcZzC2Tyn4PbaDo7Ws+JitUv4/CMqmFnW94OWri9kGX0RXaCh6vhYWiOZJmeLGgW57mtUtHv55hw1HFVS9rAOiver8ZEPpoFqdDfEr3rOacza0Dte1g1SFZ1BzYp4fYVlmM+DrAE7pN8O0hq0GZs/emRLKotN8pn0pYCXv0tLJVEDAtkj8+gKSOFOC7+CmVxwDZ71oNYz2umRHPXY2QDxo8kK53DXIR1BYogLA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=38kzgQZuvtjPTcjHsGMRDZRICHRETo1px+QNNAvmIYs=;
 b=2kiaUJihz5rnuM2DtY4oBJqRTYvGfaVZu6aVCo0IWl7/wuNiRj8TfbqaAcrJoxwBw2zHJ7GauJVVlf3zsAHYZv4wegJNbZyfjmFJze+Uf3b5jylN2axKjdOrAoscuRFn8a6qfT63tlSDSbGBBw7H0IvLuh/3k17ZtixHQxG/xmU=
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: <5fe173b3-9c75-4f10-92df-d8e022231bf3@amd.com>
Date: Tue, 8 Oct 2024 15:54:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 43/44] x86/boot: convert dom0_construct_pv to struct
 boot_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-44-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-44-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044F8:EE_|CH3PR12MB7739:EE_
X-MS-Office365-Filtering-Correlation-Id: da2c3759-5999-46e5-acfc-08dce7db8282
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SFpodUtXdDFNREhVczhFSlJQWkpPVGQvRENzemEwUjgxRzFZOVh4SDlOVHAz?=
 =?utf-8?B?ME1ZNWJGU2FIQzVwdTgvZXBkK1pMTHBGYlNCOFdqZUlCSitvcWNkVVFiQnhG?=
 =?utf-8?B?VG96R0lIWk00bmVCUDF3WW1wL0xZR3FjZGhFNHNxWmZsK0F0ckdjVktPd3ds?=
 =?utf-8?B?Q1ZrUjIwQW9KRmpTVG50UDIwb054ZThBc0xMejErVmovSTJLb3YxMk9FZkNy?=
 =?utf-8?B?bkcwWTdiSkRoNVBXZkYzcWhFMFVxOUpUK0FKRndyS2p4TWYxdmNRS0tqZTY1?=
 =?utf-8?B?dXpZV1cwVCtSZEl1elJPSVZ5LzdvMlo2UVpNYWt0NFZjd1RoTDZxMGdOeHhl?=
 =?utf-8?B?SDJYeWpxdDJ4aStaY2djZG9pTlcydTZ1TitZc25ieStTZU1OemZJVElyZVBk?=
 =?utf-8?B?dzlqOFB4QnV1UVIzQ1FBVEkzZ0tGeVZQWWpnMjk5QzY4Z085bzBGTllsaDFt?=
 =?utf-8?B?RlVXU2xlU3ZTK2xCR1Y3UURQL243OXBoTk5lMllLUWoyek0wd3lldWJYZThj?=
 =?utf-8?B?RUlzMURaNU9HdUhpQzNjNlYweXQ0M3FKRUtxYmVRSWswbW8zeHNVRVRnbnlH?=
 =?utf-8?B?anMyelJTUWFneWg4TTYxYTNDSlRnWmM0OVBtWU9laXJuWS9nWDd3dGVqQlZI?=
 =?utf-8?B?cUxZamlWTVMyc3lWWXpmbVpYQzFYQnRSOFdidzhZaXp5czY2RDRXTGFMU2dJ?=
 =?utf-8?B?RDZBdlltWVVuSUYxRnFGQ05DSDVyREVINHoyR2lHSXNzeWFjcDRQYkJOc0Nq?=
 =?utf-8?B?SjJwZU9XbG1aNDJkTEkvZmJLQXJySnNHZlRZVkNWYW82QmNVR2QvSlFuZ3Nr?=
 =?utf-8?B?SEtxaThFNlRVcUF2V0djdDR0eEVzek1yRlh6TE1jdjE5NlVpcDhPRXh1WHh4?=
 =?utf-8?B?WXl2OTJLVjI1Qk1rYlhYK3p2S1FUN2dveDNnOVBIMUpZLzhEUFpuR29uQlJW?=
 =?utf-8?B?NmtENHVHOXR2cnc1ODRZUGhOdjJSYzludGxYOU96SmhlOFYzT3VucG1rNUlH?=
 =?utf-8?B?WTBzaUUyaVBwWkp3eEhzRmFNRm0yc09BNXhJQjgrU2hQWW5YeUtqTE1OWnFW?=
 =?utf-8?B?UG9qNFlTaDNIbzVIRTZCNSttNlJsVkxBbHVCdkpTNFVqeFJpSEZoTzJhanBX?=
 =?utf-8?B?OVl5SDluTWw4NUdYSi8vb3Y2bkhmd0poVzJwekt5cVAvSVhCZU14aVpETGdW?=
 =?utf-8?B?SktVZERlb1Q3U2VkbmdVQ0t5MVhPenV1Tll4ZkpmbmhYaVh6Y28yazBlNFJM?=
 =?utf-8?B?VmQ1dlNRQnV4NkhsQnNjbWJrd2VIc3U2TWJoMjVpU0c3amE4WVlzSkxGVklE?=
 =?utf-8?B?b3MrRjdnWFNYdnQxQWZ4WDdXODRxSWlySHpuVllEQUpLMldrQURxOVNlaklY?=
 =?utf-8?B?dFAySHVGa3BsWnBFeXhMUFlLWWgxRTZlZzd2c0VtTERYTm92WmtMN2VkWVVn?=
 =?utf-8?B?N0p6THhtcWZGWEJsa092dzJzUklwMDI1OEpYRXhWRXhXM0JNNit3ZDFTK0N0?=
 =?utf-8?B?MGI2TnhDOUp0eVl2SVJYNUZKL2ZKQk5xKzduMEN3ZlFZNGdjekE1NThGeks1?=
 =?utf-8?B?REl2RUtCRWVFdmRzTjBaaS8rVGdGMTN4UHRzSGZodGhRd0ZXVytvbVV2RDZS?=
 =?utf-8?B?cnFuT08vTWJqMTc5RFdiZjN3M0YxRzNoU1ZMeFdRcGpwMkExQytuR2s1Z0o5?=
 =?utf-8?B?YTJra1JTR1JkYk9HaXVqZnpleEdhOXdpYlRPYmxNTVp2RFZXVjdib0ZlT2Yy?=
 =?utf-8?B?QzBqcFIvMmJRclptYTFZWTk1Y2V1amJZZVB3WEo2RTBvaC9nTmhRVmdXaXlj?=
 =?utf-8?Q?jwaGsiF6cyD64LWJF1WEQR3unnPk2SVhmHMDQ=3D?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:55:15.1505
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: da2c3759-5999-46e5-acfc-08dce7db8282
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:
	CO1PEPF000044F8.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB7739

On 2024-10-06 17:49, Daniel P. Smith wrote:
> With construct_dom0 consuming struct boot_domain, continue passing the
> structure down to dom0_construct_pv.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

> diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
> index 16b8c1e40998..34974aa7cd56 100644
> --- a/xen/arch/x86/pv/dom0_build.c
> +++ b/xen/arch/x86/pv/dom0_build.c
> @@ -354,10 +354,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
>       return page;
>   }
>   
> -static int __init dom0_construct(struct domain *d,
> -                                 const struct boot_module *image,
> -                                 struct boot_module *initrd,
> -                                 const char *cmdline)
> +static int __init dom0_construct(struct boot_domain *bd)
>   {
>       int i, rc, order, machine;
>       bool compatible, compat;
> @@ -373,11 +370,12 @@ static int __init dom0_construct(struct domain *d,
>       struct page_info *page = NULL;
>       unsigned int flush_flags = 0;
>       start_info_t *si;
> -    struct vcpu *v = d->vcpu[0];
> -    void *image_base = bootstrap_map_bm(image);
> -    unsigned long image_len = image->size;
> -    void *image_start = image_base + image->headroom;
> -    unsigned long initrd_len = initrd ? initrd->size : 0;
> +    struct domain *d = bd->d;
> +    struct vcpu *v = bd->d->vcpu[0];

This can stay:
     struct vcpu *v = d->vcpu[0];

With that:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 20:57:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 20:57:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813574.1226569 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHGu-0006Ls-PI; Tue, 08 Oct 2024 20:57:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813574.1226569; Tue, 08 Oct 2024 20:57: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 1syHGu-0006Ll-Mh; Tue, 08 Oct 2024 20:57:32 +0000
Received: by outflank-mailman (input) for mailman id 813574;
 Tue, 08 Oct 2024 20:57: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syHGs-0006FY-V8
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 20:57:30 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20602.outbound.protection.outlook.com
 [2a01:111:f403:2412::602])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id edde391e-85b7-11ef-a0bc-8be0dac302b0;
 Tue, 08 Oct 2024 22:57:30 +0200 (CEST)
Received: from MW4PR04CA0126.namprd04.prod.outlook.com (2603:10b6:303:84::11)
 by DM4PR12MB5769.namprd12.prod.outlook.com (2603:10b6:8:60::6) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8026.22; Tue, 8 Oct 2024 20:57:22 +0000
Received: from CO1PEPF000044FC.namprd21.prod.outlook.com
 (2603:10b6:303:84:cafe::6a) by MW4PR04CA0126.outlook.office365.com
 (2603:10b6:303:84::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.24 via Frontend
 Transport; Tue, 8 Oct 2024 20:57:21 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000044FC.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.8069.0 via Frontend Transport; Tue, 8 Oct 2024 20:57:21 +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.39; Tue, 8 Oct
 2024 15:57:20 -0500
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.39; Tue, 8 Oct
 2024 15:57:20 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 15:57:19 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: edde391e-85b7-11ef-a0bc-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=QTbbbvji3c6B8RK2b6upbhJ79xkYaYv8Vzyx0J/dOt5YGaPEcUaniAODc6WelDuIliQvv7+jBbD2qOYCAAcJO3hr7gNlebDjaWhT5NI38cKxc+Wi/zo6dA8aRhiV8dtedGRjI+HRNoLw8s5Mf1olbGVY6K4m4h3pTc/3GwJOqXCoHMhVycNRJobSbEz1C1R2JlL7UYrRMYvSbmKzghePLG+ZrwcZQcSzboESE5nufBzfFbuFg7aWf/M/oNqo5Ko9M3Z75iXHMTyup6G/20LcfvF2HrL90Zo/kSM6Bd5vqeQ/Dud5Utiwq5/P0iId7zUEn/7UV8vyaUongLN7K61J5A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=5h5S6DOHDJCzzNCyyo0bCfCbK8FjeqxMoSEmOLCDoiE=;
 b=kCTocmqgjVDNMD5owgZC2c/x8bWp5YSnn7fLafNyBs6A/EZSQwC6LrNUIMxSKteLN/EnW4CCwTlCQRdbB2bTl+mFBWYZUIA5OFYTwiWiUbwpIpJ756F1AB/zcY4BCNKjrN2M/js9dSCn0w4xntX+bjt+lghPZX8rRyu1ExlNC23XGenxtXiE27Tw+oK++QvlWOnlcvez+6aujQddvSNeNDZDAvvsY+lrDqny3yvkj+NUV5TsdjCtHBJ4v1I3kIltvrm4c9BdAxPJ2jZZFyyiGvUmodGfAkEyrFLgW6Ftzwz2ujOSGS6LqqtgoBISMpvBZPh+uV2P7UZuLNQwcCcWgA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=5h5S6DOHDJCzzNCyyo0bCfCbK8FjeqxMoSEmOLCDoiE=;
 b=bVssLvdJZcKFBpN/mwSb4lo4z7Hd5a3ODqFQkz4d/5eYHxnNGC0q0ATldJHkLrIqOYQhOqYb581eX7LEf6kmRUweRb0+wmbLi61DS+HwY+x1O3X9GH/8zEtTmYX7AtNKmWo7TmpDZoFlTrjmitMs1pRFf4ECFM33K3lhQEO4g50=
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: <22c2165b-c2cc-4091-b808-b903fc954757@amd.com>
Date: Tue, 8 Oct 2024 15:56:36 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 44/44] x86/boot: convert dom0_construct_pvh to struct
 boot_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-45-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-45-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044FC:EE_|DM4PR12MB5769:EE_
X-MS-Office365-Filtering-Correlation-Id: f861ee02-9da6-49d7-c136-08dce7dbcdf6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SlVkQVU3eDN2Wk1qNklIaVlzTlUzRHBTd0E5SUdzMkdJZE8zdFo2ako4SUNY?=
 =?utf-8?B?ODVNc2FETW43WTJhWVExcmJoMko4SXVRTnZGcWxsS0VHTWcrT3ZGb1l4NVFj?=
 =?utf-8?B?MEpRVVdLRHQyQk5EcVUrRGlaZ2d2OWgwKy82M2F6SGNNNkFCV0laSlh1WGgw?=
 =?utf-8?B?dVRsVVJWM3ZDbWd1T3dMaTkrZ3pRRVlwNDJ6SFdjWklOaS9LNjhCdFB4WWhH?=
 =?utf-8?B?YUtZUzIySnErenREekVBcncxQldPVWtvZkYzMGZQQS9IR20vTURBTFpEMlFq?=
 =?utf-8?B?eHRMRkh3S2tSV254aEtOb3BiNnAvY1dCQ1FDYithRmpOd2llVG5tbDllMGRY?=
 =?utf-8?B?Q01WbDlSK2lJSllhS3pQWFVmVk1KNjV0TlY4cXkzYmNnOVBxNThqVm5WeG9U?=
 =?utf-8?B?MUZ0Y2hBbFFUUm1CU1NRZGEyNWs1WENnUDJwdFgvbEVKNEY5bTBET1Qwc3FJ?=
 =?utf-8?B?WEcwY3dlNXk0anA4QnIxTU9IL3EzajVNS3RXeGUxaWpvc3JldVlNL2VXcW80?=
 =?utf-8?B?S0dISW1jU2hTMDd0UTR3TXQ5NTlTR0ZmNVNRbzAzQ2lxeWN1b3dXQVFLNHBS?=
 =?utf-8?B?bStGeHNQREQ1NXpPT2paVG5yd2o3bWhaMy9LejYwMDhwOW8xQnZ6Vzg1MkZS?=
 =?utf-8?B?K3dtZzJITXVlb2V3VlhwWWZDNFJqVit0N3V1bDRqQ0ljY242a29VdHdBSHpn?=
 =?utf-8?B?RmcrK0Y4WWM4ZU1jeWNXSWltZ2xaMTZndktnVlhMdFhSemVBL2d1VnU3ekNR?=
 =?utf-8?B?S1A4eTkycFNzS2xtcXAyN0RWSGxFYmZubnhOb2lJNmFxQjNUak5KL2xBTUU0?=
 =?utf-8?B?dHN6bTUxVUI1RlRSRlhjL3RRNEo5OHU4ZGZaTVkwY2dQU3RnWEdwTXRKVWpQ?=
 =?utf-8?B?eUdCY1lIbTFkcXFERGVLNnppa2pHM1dnRW5VRjlTTEpLVGpXSXNjWnBDRDFv?=
 =?utf-8?B?Rnc5V0NGVkpHWFFtcjBPclJyQXp4Z1h2YVhMMDFBUTNMaWgwNUZVcTViOWY1?=
 =?utf-8?B?ODh4a0w0VGRxUXJQVms5ZjdtT2RHY3JyV1o0eUNQc1NDSmxnd2Y2cU1sc1o1?=
 =?utf-8?B?Z1A2MERCWUdVOFhOaTJUNVBnMWMzSmEwZW5SNjkyWjdQRmdnY1pDUkZjL2s4?=
 =?utf-8?B?TE15VHlqclphMTFpdTUzUmFJaFJtWlNwT29GVXR5ejhVTWpHVGN1YTdjcXdj?=
 =?utf-8?B?Ykh0U3g0TzNDMTNra08xNjV4S2s1bVh2ZzdSSnk0M00zRE9YdGxCU2lPZk5B?=
 =?utf-8?B?SDlkTWJ5bUlBRmJRcE5mTUMzcHJBYTdLVUJEUzEwbXBhNEppSXlJUEM0VzhY?=
 =?utf-8?B?OGsvVmFYeWxXc2ZjKzVGL3RFV3k3WXFKZHoxMk9kclNqUml5TkhBOFlpck5S?=
 =?utf-8?B?RW9oMU9rcmdOd0loK3UreGNFZEJHUXhHNnFMWHVXM2hrREplYVJUNXpDN2JX?=
 =?utf-8?B?UUNLK3ZIU0FBQnR4VitNZEF5azdCT09GbGpDejU4VmpCL0ZNLytTS2czVXFX?=
 =?utf-8?B?Q2kyZzdtM2xsWGxOeHdQMFVuaGx0aTJiSkkrWmpDWFF5Q3hqK2RxKzhBTkgv?=
 =?utf-8?B?YTkwaTdOVnZVR0dxNkgrSUowR1dSK1ZFT2cwUEN3VFUvOGxjeE9jN0t1djVs?=
 =?utf-8?B?Ri9GTzBsWmUzajVtQmJGdGpHdVJkZDBkRVQ4amFEZkRwcXlidFhYZU80VUly?=
 =?utf-8?B?RmZYR3l4WHpSY0llWXZySmtJOXhLbm5QdXhSenZDaUtaRS9Oajk4eFA2Vzli?=
 =?utf-8?B?STJNemY2UmVhS1FPdEFtTWxBQmU5alVsYjBqSVk0UFdDek9qQ3Q1STIvS3dR?=
 =?utf-8?B?Ync5SWlQUWR3RXRWWUlTUT09?=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 20:57:21.7247
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f861ee02-9da6-49d7-c136-08dce7dbcdf6
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:
	CO1PEPF000044FC.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5769

On 2024-10-06 17:49, Daniel P. Smith wrote:
> With construct_dom0 consuming struct boot_domain, continue passing the
> structure down to dom0_construct_pvh.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

> diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
> index a3fd5e762dc4..755e257cdf30 100644
> --- a/xen/arch/x86/hvm/dom0_build.c
> +++ b/xen/arch/x86/hvm/dom0_build.c
> @@ -1299,25 +1299,23 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain *d)
>       }
>   }
>   
> -int __init dom0_construct_pvh(
> -    struct domain *d, const struct boot_module *image,
> -    struct boot_module *initrd, const char *cmdline)
> +int __init dom0_construct_pvh(const struct boot_domain *bd)
>   {
>       paddr_t entry, start_info;
>       int rc;

Again, I recommend using a local struct domain *d to cut down on the churn.

Regards,
Jason

>   
> -    printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", d->domain_id);
> +    printk(XENLOG_INFO "*** Building a PVH Dom%d ***\n", bd->domid);
>   
> -    if ( is_hardware_domain(d) )
> +    if ( is_hardware_domain(bd->d) )


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 21:06:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 21:06:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813585.1226579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHPX-0001EN-OU; Tue, 08 Oct 2024 21:06:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813585.1226579; Tue, 08 Oct 2024 21:06: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 1syHPX-0001EG-LK; Tue, 08 Oct 2024 21:06:27 +0000
Received: by outflank-mailman (input) for mailman id 813585;
 Tue, 08 Oct 2024 21:06: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syHPW-0001EA-Nw
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 21:06:26 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on2060e.outbound.protection.outlook.com
 [2a01:111:f400:7ea9::60e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2ce53ac1-85b9-11ef-a0bd-8be0dac302b0;
 Tue, 08 Oct 2024 23:06:25 +0200 (CEST)
Received: from SN4PR0501CA0050.namprd05.prod.outlook.com
 (2603:10b6:803:41::27) by DS7PR12MB8289.namprd12.prod.outlook.com
 (2603:10b6:8:d8::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Tue, 8 Oct
 2024 21:06:17 +0000
Received: from SN1PEPF000397AF.namprd05.prod.outlook.com
 (2603:10b6:803:41:cafe::98) by SN4PR0501CA0050.outlook.office365.com
 (2603:10b6:803:41::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16 via Frontend
 Transport; Tue, 8 Oct 2024 21:06:16 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SN1PEPF000397AF.mail.protection.outlook.com (10.167.248.53) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 21:06:16 +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.39; Tue, 8 Oct
 2024 16:06:16 -0500
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.39; Tue, 8 Oct
 2024 16:06:16 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 16:06:15 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2ce53ac1-85b9-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=r6aR+iqX8GmrhWnIsqEtaszg8NxctAY4puSJYsioIxY4C8Pwh7d2N02vazmal5yWFXoSSg5eI6gizu4rPCbbmf763edhohLYXqqx1hICU0xs2B5pQ8jmtSdqsFXmx0Uetj3uMgxvHYWrqBBn3PgdZjqgnG4pNE49RtdJDoVaFEdHhCxz09duiYYWxMXzCMKwfwTbv8kx9dHVv28a75otiFkHc4KuFujifwwkpbVoYpcz0ZwuT4TAzu5JjvxP6tfXbbCtwa6Wih1YOO8DVfvseDZWke0eMwUlnQOeeuR8W8j1ekaTHKuIdigiap0RNhwftUKXI22rZ0ewGiUzdpHDkw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=zDoDz8P6bipSX9y4XA4VIlW60nkGGhvmirxn2RWYrc4=;
 b=M7LJivlvIdmcfZ+wtT2QHszMNU0uZ4S/51EKAEkX7jpTcpGr/UvJrGhTIARIzrHXbnMJGTx+uU0Q0YNWTdM3BliCoWi8dlPGSFaZed0MgcTPX2qeaUdCdDuwQ53OBxKb4YcLwB6cTL8y4SUeLbCIHkOszQIikUdqCO3AuwA8iquR9SqKHrMJ9qLqfQUywZdPDWhLCuCkM6aan6gcbnJjf8hyrI7v4X3cr/XxIyib1r8wMltFFPrsnjz9IFKpoxpTwvSeICQ1YXjW+fExRlKZTdVSNOrLSrJwSk4DFPKQSqaQuqIj3mENaFbDfcpi89vkEsUZR2qImwx8asUI8PtK4g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=zDoDz8P6bipSX9y4XA4VIlW60nkGGhvmirxn2RWYrc4=;
 b=iTM/TC/oB0uaCbyey+9GooA4nr6vUjiAa2PiIF89MIwiHhOjRogw6kd3O9UtecajPSrW/blwP8/UpCcwcQDx/eG9vOryWzwD06h72kEbkcmPYl7+4L0nW6eZ6sWvFyTaZrp0zLEUU2YnrhT5q4obA5ME4f0sJyj4l/bGN+tbULY=
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: <1ec34665-36da-44a2-af5b-7b770017ea53@amd.com>
Date: Tue, 8 Oct 2024 16:05:35 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 40/44] x86/boot: add cmdline to struct boot_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-41-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241006214956.24339-41-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000397AF:EE_|DS7PR12MB8289:EE_
X-MS-Office365-Filtering-Correlation-Id: dcadecfa-aedf-4959-4831-08dce7dd0ccf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?aVNzanl2blZzb3hCbEp1NmN0OWNsb3hsUnZBMWRBYVBhbE9WVmtMOEx4a0Nu?=
 =?utf-8?B?dll5bEcwUVBRd2xXY04yLyt1VE1paEJZR1dpYkZhbjlqRHBzRUI4T2ZodmVk?=
 =?utf-8?B?cjZERnZtTFJOenArcHBYVk5FMXNUWThMRFNSc2lINlB0V2tGQ1AzNjVDME5D?=
 =?utf-8?B?ZmxXdDVMcjd0ZU43YTFUNDNIbktvditpMnFYc1VCRjlzMDgzNldxaTI3U0JI?=
 =?utf-8?B?TWR5ZWUyLytXRjZoZG5mVGRCM2lTeE9YR0tHU0NiQUJNVWhrVjgzV3YxZ2FN?=
 =?utf-8?B?S1ZGd2Q3eWZybEpJY2Y4MUJqVnlHWVhHL3lQa1pjalBRR3hCUGJCZlJKUzhm?=
 =?utf-8?B?Qm5nQnlCOW0yTEQ1bnhIT3IvbkwzSm9iWGhCeEM0UDZscE9OZThtcXdlMGVU?=
 =?utf-8?B?U3VTa3BIMCtCbE1CbDg1aS85VjBKUDBqd3hDYmtXTS9CeUpmRStiYnB4MWVT?=
 =?utf-8?B?VXdWOEs5dVd6OGl5Um1BYjRXcUhrRG9QVkFEQ1hVaEUvdHJIUlhseXU2Vnd5?=
 =?utf-8?B?N3ZlUGt2UTh3RkxGQmlCYXhDaVVFaGx4QU1XcitQSEdBUzJzYlJrQWUzdmxN?=
 =?utf-8?B?dGk1cmE3eXpPNVpDRnJrUU0yb0F6MnlJYWpXRnFFVlJGQXlXM0lXZ0RFYmtX?=
 =?utf-8?B?SExRZVczR1Q3aVU3Vjh6MGwzclZsQ20zTmhMeVNISFhtTmJvSFg4clJiN0ZL?=
 =?utf-8?B?Qmp6KzhMaWhUdXZxaFUvdUFXSzFWL09sSUdCVmJRN0xLQ2FNS3RXVE9SemFF?=
 =?utf-8?B?NHQxSW1wNWhIUXR1UEhrVW5FVkt2bCtBZ2V2d2hrZUlaT0I5NUVMUjZqalJG?=
 =?utf-8?B?RjB2M2tXbWhTRmhrcHNvM0hZVHdTVk4xZ3JicjhkMC9FeU0wYUR6aStxdjlT?=
 =?utf-8?B?c0t4R3drYWhsTDFZb0wxMzhQdXNPM3g0NS8reHVHWmx2VGhaeHE4SnhXN3hB?=
 =?utf-8?B?R3AwMFlzRHFwU1F4SWtyVlUycE91UmZNK2VvcnBtUjBJQ0ZFZFFTeEtUc0lu?=
 =?utf-8?B?aDVOTFc0RlNwQzQydWoySEt3dVB4RmlDZmhzT0Zyd3YvYlc2R3VSSk9VeUFD?=
 =?utf-8?B?dlB5c3NOMmtHTFpmeHhydnhQclFVYk1qeG5rck8wSlVCNDBGTlZ3RVhJM1pF?=
 =?utf-8?B?YW1oVkVUdUhFVEozay9Cclc4ZVlWOE5hNE5XZmV3N0hsZEZ2bEdGa0FHcDk4?=
 =?utf-8?B?UGJxc3oram9RbVNLZVlhL2hzL2FPYkxJelAxMjdpTzRVcG1DUDVJR3Q4Y0pJ?=
 =?utf-8?B?dDhuN251S0VhUjVSQ0xZdlcxOU8vbkhVdUdIb0dhN1FFWmJwN3padXZEeHpV?=
 =?utf-8?B?RDB2cTFjdk5zbWZ6NnJyNVBpUW5Dd3pHV3lHWGN6NHU2SUZELzhkVnhBSS93?=
 =?utf-8?B?eDBXaEM0Q08vNmtzV2tPblZxVEdpSlpHZ1dGTU5BVllmQ1JyMFA0Unp0SVdI?=
 =?utf-8?B?MGF3T0VYeFlZaGFBSjdUdHZQbEl6emRlNGloamF2YW5IS0Nadm44bUlKOG01?=
 =?utf-8?B?QmtEaTlnRllBMzZFSzJEdmJvdGdlM1VTbEx2aWcxOVR3eEs5WU5oZnhRWVhn?=
 =?utf-8?B?TkNia012T3VKTWFyOGEzb0JNNVM0RHEvbDRPdTJBZm5hNU9jbDI3LzAwaDJ3?=
 =?utf-8?B?b1FCZlRPOWVoQm5wMFhZZXBCVlNRVkJYYzNQUC82b2UrNy82dTRrSmZvM2Rp?=
 =?utf-8?B?akJPTnpPNWc0SUErYzdpL3Z2NmNocDJWUHk4UE13OWZDNWtlTHc1M2ZYcXZM?=
 =?utf-8?B?ejY1VUVpTWljb0ZqWUVXTkw4MXFtRkFxVE8xVk5hemtXNmdvK01xRjJXUitO?=
 =?utf-8?Q?diJEM5u33EerhTNdWiuB6Y1dBmwWIFuOaI0eY=3D?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 21:06:16.7686
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dcadecfa-aedf-4959-4831-08dce7dd0ccf
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:
	SN1PEPF000397AF.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8289

On 2024-10-06 17:49, Daniel P. Smith wrote:
> Add a container for the "cooked" command line for a domain.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>   xen/arch/x86/include/asm/bootdomain.h |  4 ++++
>   xen/arch/x86/setup.c                  | 18 ++++++++----------
>   2 files changed, 12 insertions(+), 10 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
> index d6264d554dba..00f7d9267965 100644
> --- a/xen/arch/x86/include/asm/bootdomain.h
> +++ b/xen/arch/x86/include/asm/bootdomain.h
> @@ -8,9 +8,13 @@
>   #ifndef __XEN_X86_BOOTDOMAIN_H__
>   #define __XEN_X86_BOOTDOMAIN_H__
>   
> +#include <public/xen.h>
> +
>   struct boot_module;
>   
>   struct boot_domain {
> +    char cmdline[MAX_GUEST_CMDLINE];
> +

1024 bytes for just dom0 isn't too much.  But when hyperlaunch has 64 
boot_domains, that's a good bit more.  But I suppose it isn't too much 
RAM for a modern system.  This is __initdata, so it increases the binary 
size.  I just want to highlight this in case others want to chime in.

The code changes seem fine.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 21:08:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 21:08:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813591.1226590 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHRC-0004Cf-4O; Tue, 08 Oct 2024 21:08:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813591.1226590; Tue, 08 Oct 2024 21:08: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 1syHRC-0004C2-0P; Tue, 08 Oct 2024 21:08:10 +0000
Received: by outflank-mailman (input) for mailman id 813591;
 Tue, 08 Oct 2024 21:08: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=A1UB=RE=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syHRB-0003sw-3D
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 21:08:09 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20618.outbound.protection.outlook.com
 [2a01:111:f403:2417::618])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6a0f1a64-85b9-11ef-a0bd-8be0dac302b0;
 Tue, 08 Oct 2024 23:08:07 +0200 (CEST)
Received: from BL1PR13CA0096.namprd13.prod.outlook.com (2603:10b6:208:2b9::11)
 by CY8PR12MB7754.namprd12.prod.outlook.com (2603:10b6:930:86::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Tue, 8 Oct
 2024 21:08:02 +0000
Received: from BN3PEPF0000B072.namprd04.prod.outlook.com
 (2603:10b6:208:2b9::4) by BL1PR13CA0096.outlook.office365.com
 (2603:10b6:208:2b9::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Tue, 8 Oct 2024 21:08:02 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN3PEPF0000B072.mail.protection.outlook.com (10.167.243.117) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Tue, 8 Oct 2024 21:08:02 +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.39; Tue, 8 Oct
 2024 16:08:01 -0500
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.39; Tue, 8 Oct
 2024 16:08:01 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Tue, 8 Oct 2024 16:08:01 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a0f1a64-85b9-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=sZkRU3xAnDiky3Cm/109Dw74ME1astqkDuBvsG8chZ4484kQoQ0HLlaOdUudOXiCcHI65kkSRTw9z0PQIxgcicZcRV2AJJCUELf/uVGra1Dq2DPJS4VDtz4ChybBRRRtVS4FEPOf50JGpdLahaQhkF4iH4s8A9ZZRw5CBbjbSCQnLp51fGrTzrBCWV2WFSGPeOMfqlnRVBssLi2jzYD/NxOEye3n2n7ptnjNvwX/V6Z7QG0yk2njzxnLE+nqvMZy0GlpTQyjPGbqXOfOGQszI1var69kacKrDqTFH5qMZYyPg4zt+qQSZw1ai2RjMWLJPqClyTLlKu23L/0bZGQfqA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=yJnNbXUqgnvDHOeVPbx6Ki6reQT/IHVy4rJaQTjB93I=;
 b=kVEf/y5FBfYLl34vg5pQk/53BwF71kog5rmD4PzxJ4q0Vr8TG8nneVREZynsxl+3IATKzhJXx04vvV689HuMcEdzTcSuZGN0kDrX6xeZxuL/A9Yfgp/SZ9wjWnvZK/D6R1c6W92eDP2J05cWIuW7M61TZ3fxgi6rjYrSwS9S9CgKNGaIL1Iysn9QlYp67bfR8uT2KssJ9ITKmP+1g3YbQmGDvriawTheBOoelwKQKYEo66f3wzMN+E3lzVQqwQWNb8iMgSgR+E7yd2h2SRULOszpCnW3Ae022TFC9Eu65ADC43oYFJK8HOC/XW8mljECygoIw+D1HflCI+Gx0A909w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=yJnNbXUqgnvDHOeVPbx6Ki6reQT/IHVy4rJaQTjB93I=;
 b=2YIZmjzcd7D/Sm3J4Kg6LsLyG+dGLsxuv/BVqPwjYlnPXa4J42dCcbTrzz8hc7k3CnwBQ3uBKokmSNZ2nd2Skytz53zcbzwmPo5xnjng6IjKdZdY0cHWv1vcWym5Aqi7OQxJrXrxtH7FjluCOHjE/HL220roBIYeDTkAJMPgKaQ=
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: <11c20a80-65a6-4b77-b890-775ac2d72af1@amd.com>
Date: Tue, 8 Oct 2024 16:07:18 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jason Andryuk <jason.andryuk@amd.com>
Subject: Re: [PATCH v5 00/44] Boot modules for Hyperlaunch
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
Content-Language: en-US
In-Reply-To: <20241006214956.24339-1-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF0000B072:EE_|CY8PR12MB7754:EE_
X-MS-Office365-Filtering-Correlation-Id: 78daf58d-5137-4546-a9e1-08dce7dd4bbd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZlcvZVowY3dta2Zqb3JUbkRobmw5RC9MQUc4QlQwK0w4SE1wU1A1YkFPdzRn?=
 =?utf-8?B?YnQwUzRkUmtMakgxVkoxbHJvREhPdFY2NjMzVWFFMG5wamdMSlpML3B0QUpo?=
 =?utf-8?B?UFRqTmEzREdiZ1lDNW0rRTRSTjJVVHNlWVM0K295eUlvdTVYdlF1NEY3Y2pZ?=
 =?utf-8?B?eWJONnN0Uk9JcUtPejd3N2FZWlN4aFlCWGRUWjFwd3piaEgzcFQ0RHBzaTJD?=
 =?utf-8?B?amlyUzVyQzY4SkJqeVcrR2NpSDN2VkxtUG1Rc1FLK3VVK1ZucFcxdUo3c2Rw?=
 =?utf-8?B?ZTBZeFVrdTl0V1NrNklseG53NDdGM25NRjlxOWJyWElNUmllZVdiODN6YU5Q?=
 =?utf-8?B?eWkrVUJIZFJRMWxSblNRS0prQU53N3ZMbytqd2ZNOHhyVzRXV3VxZVVvY1VO?=
 =?utf-8?B?YngrV2Q1bWNUUGh3eHZSVFJ5bU9RTXFGV2ZtR1RPUTNZTE1aaWlFRk4wcUk2?=
 =?utf-8?B?aWZoL2JwanF6VU9UbjN0WHNqdTMrY0V1WkY3ZStzQ0RSRnJPMCt5YWRNV3kv?=
 =?utf-8?B?cmFxZUNqOW01YXlrcndTRGd6M2Z5Wmt6Y3NMeUZNb1JITU50YTNMUFViMU5a?=
 =?utf-8?B?b0lIZUFxd2FQYnNvNlI2dUdlVmdMRmEyZXgweHdqTHZVR3VkNFpNVDc0K0tE?=
 =?utf-8?B?Q0wvWlZoMXNOMW9QYmc1QUFMWWkrR1dVVllXL2p4c2lhSzdMU0JVWFl0N3ly?=
 =?utf-8?B?TTI3REJjYXZnNEJxa0hyZ1poTlF3bWI4dE95cHp1TmRwem1JbVFuYTlLbVhy?=
 =?utf-8?B?emtBcEZlcnUxZ2NJYjhCWm5nWGQ1a005OHI4NUZTaGJRcDA5ZlpWTHNlYzFB?=
 =?utf-8?B?S2NxaG1KNXIwMHdMclFDVmpMdldHanlGcWlQWWJ0N2VRdzNBc3FxUGRWVFlP?=
 =?utf-8?B?OThWZ0VkREFhV1dhcVhjRldzUnJXaVdiajJUekxYSUkycmhlSVhlL3NBaWw4?=
 =?utf-8?B?cWt2cTlVazlMTllvTENET2w5bURLVTdwS2p5R3o2QW5qZzhRdXJuMWVDUGJw?=
 =?utf-8?B?UXhTMkU5OXg2QjA5dEZBSk1Ec0V6aS91RW5QL2MyeDNZWjViT0xqdDFlbGUr?=
 =?utf-8?B?ZmZPWDhUeCt5Y1hZUWlPaUJ1THFHZHIxaS9JV25yWkxNRnRtYjF0NGhpQTZu?=
 =?utf-8?B?dTlZOWEwWWpWZi9XN1lUN3R6enFrREFKSHpjcnFiRXVRQ2ZGYktSY3U1QjU3?=
 =?utf-8?B?NGlubFFKY3M2M2RqelcrTXA3ZDZCT2REY0l1L1FiekJzTUgyaHNJWXVRaHE5?=
 =?utf-8?B?NGlZS3IwZ1pOdjR6bVBHVzdhbUE1NllhQ3cxTWxnZGRhbmR0Q1RLNWUrL25w?=
 =?utf-8?B?TGNBL3J6RFhKUmt1YkdadlVwVWZoVjZ5UHd3ZWtqcjcwM0c0ck9nWmVvRUlE?=
 =?utf-8?B?MlZSL2dONEdYMHZIb2IvYmRVNlI5NEQ3WnNNSklLdlhDUEF6ZGVaNTRjb242?=
 =?utf-8?B?NHlaMUorQ3p1OVoyN0FpUXFDMkRIaXRaVXZ4NG9sZWg2UUtDL3VzTFB5d0Er?=
 =?utf-8?B?eXMwWkNJN3RBUm52S0ZyanZRc251eDkzdCtRLzIzYVNOU2F0NUl4UlZqUUs4?=
 =?utf-8?B?cWZOWW0xZ1VrazZLS21BVU4zWFRZL3o2SVpmeGtvSlN2NTQxZHZVSmh6ZjRn?=
 =?utf-8?B?M3NVWjQ2aFo5aDAwd3VhUDJwK2ZzUGZIMWVwZ2RRRW5mWFVaM3hHbzRqQWxP?=
 =?utf-8?B?ZitsdzZES3ZlQUxZcFZWVGRLU2JuU3hGTUx0L01VVHViaXkybmFaWTBHU1FX?=
 =?utf-8?Q?Ywn13qMojDUoqQ8lSeqjdd9V7k5yOCar4uZMZNj?=
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:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2024 21:08:02.3652
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 78daf58d-5137-4546-a9e1-08dce7dd4bbd
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:
	BN3PEPF0000B072.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7754

On 2024-10-06 17:49, Daniel P. Smith wrote:
> The Boot Modules for Hyperlaunch series is an effort to split out preliminary
> changes necessary for the introduction of the Hyperlaunch domain builder
> logic. These preliminary changes revolve around introducing the struct
> boot_module and struct boot_domain structures. This includes converting the
> dom0 construction path to use these structures. These abstractions lay the
> groundwork to transform and extend the dom0 construction logic into a limited,
> but general domain builder.
> 
> The splitting of Hyperlaunch into a set of series are twofold, to reduce the
> effort in reviewing a much larger series, and to reduce the effort in handling
> the knock-on effects to the construction logic from requested review changes.
> 
> Much thanks to AMD for supporting this work.
> 
> Documentation on Hyperlaunch:
> https://wiki.xenproject.org/wiki/Hyperlaunch
> 
> Original Hyperlaunch v1 patch series:
> https://lists.xenproject.org/archives/html/xen-devel/2022-07/msg00345.html

There is a lot of re-formatting of function arguments like:

-static int __init pvh_load_kernel(struct domain *d, const module_t *image,
-                                  unsigned long image_headroom,
-                                  module_t *initrd, void *image_base,
-                                  const char *cmdline, paddr_t *entry,
-                                  paddr_t *start_info_addr)
+static int __init pvh_load_kernel(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, void *image_base,
+    const char *cmdline, paddr_t *entry, paddr_t *start_info_addr)

I feel like the old style is more common and I prefer it.  But I also 
don't see it specified in CODING_STYLE.  As I am not a maintainer, I'd 
like them to weigh in.

Also, it is nicer to include a per-patch change log instead of just a 
cover-letter one.  That will be useful in subsequent review rounds to 
clearly identified changed patches.

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 21:10:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 21:10:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813599.1226600 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHTk-0006Se-Fe; Tue, 08 Oct 2024 21:10:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813599.1226600; Tue, 08 Oct 2024 21: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 1syHTk-0006SX-Cr; Tue, 08 Oct 2024 21:10:48 +0000
Received: by outflank-mailman (input) for mailman id 813599;
 Tue, 08 Oct 2024 21:10: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=95Tx=RE=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1syHTi-0006SJ-JZ
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 21:10:46 +0000
Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c742a628-85b9-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 23:10:43 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id BE970A054E;
 Tue,  8 Oct 2024 23:10:42 +0200 (CEST)
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 0pJnesq8Rcps; Tue,  8 Oct 2024 23:10:42 +0200 (CEST)
Received: from begin.home (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (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 8904AA039E;
 Tue,  8 Oct 2024 23:10:42 +0200 (CEST)
Received: from samy by begin.home with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1syHTe-00000001he1-0Les; Tue, 08 Oct 2024 23:10:42 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c742a628-85b9-11ef-99a2-01e77a169b0f
Date: Tue, 8 Oct 2024 23:10:42 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [MINI-OS PATCH 2/2] drop CONFIG_XC support
Message-ID: <ZwWf0lALEwSokZXQ@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	=?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
	minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
References: <20241007103456.14946-1-jgross@suse.com>
 <20241007103456.14946-3-jgross@suse.com>
 <ZwRdCU20l8PUPQ-V@begin>
 <a5a3abe5-245c-47ec-b197-261f4a61ccac@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <a5a3abe5-245c-47ec-b197-261f4a61ccac@suse.com>
Organization: I am not organized

Hello,

Jürgen Groß, le mar. 08 oct. 2024 11:22:11 +0200, a ecrit:
> On 08.10.24 00:13, Samuel Thibault wrote:
> > Juergen Gross, le lun. 07 oct. 2024 12:34:56 +0200, a ecrit:
> > > CONFIG_XC is no longer needed with individual CONFIG_LIBXEN support.
> > 
> > I don't really see why in the previous patch you introduced
> > compatibility and here you remove it?
> 
> Originally I meant to split the series by sending the first patch as a
> standalone one and then the second after the Xen side patches went in.
> 
> When changing my mind in this regard I thought dropping CONFIG_XC might
> be controversial, so I decided to keep the introduction of the
> CONFIG_LIBXEN items and the dropping of CONFIG_XC separate.

Ok, I was wondering something about this line :)

> I can merge the patches if you like that better.

It'll be simpler in the git history indeed.

Samuel


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 21:12:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 21:12:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813611.1226614 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHVj-00074S-Rr; Tue, 08 Oct 2024 21:12:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813611.1226614; Tue, 08 Oct 2024 21: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 1syHVj-00074L-P0; Tue, 08 Oct 2024 21:12:51 +0000
Received: by outflank-mailman (input) for mailman id 813611;
 Tue, 08 Oct 2024 21:12: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 1syHVi-00074B-6e; Tue, 08 Oct 2024 21:12: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 1syHVi-0002PR-3I; Tue, 08 Oct 2024 21:12: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 1syHVh-0006zg-M5; Tue, 08 Oct 2024 21:12:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syHVh-0003lE-LB; Tue, 08 Oct 2024 21:12: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=eVk1i8i7QjQeINtlHlRui9L1fBMAM6Wx9sqL6ZpalPE=; b=ntdfHRi+KLCa9VCteQe1jQ1DRo
	/i6c5816SkHTdS8CYsFkpKC+Sy99cErWS8IQ9P7KnJdBgvfNE0S9NUV9lbl0rh46xq4ccBYS0xqA3
	ru6ya5qbqTAFbDuYTSL16IAb4SYOry6brhoSpG5YUsWDa+usQrddgVkVwb87lQTezhes=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188009-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188009: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-pygrub:guest-localmigrate/x10:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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: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-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-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:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=29555668b5725b9d5393b72bfe7ff9a3fa606714
X-Osstest-Versions-That:
    xen=29555668b5725b9d5393b72bfe7ff9a3fa606714
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 08 Oct 2024 21:12:49 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-pygrub 19 guest-localmigrate/x10 fail in 188000 pass in 188009
 test-armhf-armhf-xl-qcow2    20 leak-check/check           fail pass in 188000

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188000
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188000
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188000
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188000
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188000
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188000
 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-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-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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl          16 saverestore-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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  29555668b5725b9d5393b72bfe7ff9a3fa606714
baseline version:
 xen                  29555668b5725b9d5393b72bfe7ff9a3fa606714

Last test of basis   188009  2024-10-08 04:56:11 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 08 21:21:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 21:21:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813627.1226623 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHeM-0003XL-Rb; Tue, 08 Oct 2024 21:21:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813627.1226623; Tue, 08 Oct 2024 21:21: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 1syHeM-0003XE-P0; Tue, 08 Oct 2024 21:21:46 +0000
Received: by outflank-mailman (input) for mailman id 813627;
 Tue, 08 Oct 2024 21:21: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=LJPt=RE=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syHeM-0003X8-Aw
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 21:21:46 +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 50d8a4b3-85bb-11ef-99a2-01e77a169b0f;
 Tue, 08 Oct 2024 23:21:43 +0200 (CEST)
Received: by mail-ed1-x541.google.com with SMTP id
 4fb4d7f45d1cf-5c5cf26b95aso7909843a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 14:21:43 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e049ee6asm4753694a12.0.2024.10.08.14.21.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 14:21:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50d8a4b3-85bb-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728422503; x=1729027303; 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=yd9WEwnsnJKheWOILYBzZ54uW/JbW+1jjW4WUdGAmIo=;
        b=nibKVaHif34mODO3YmGQZ8unpZul12HW/ut0M49yZryHrlMKdbsb7gxuvyGWfkqGME
         YNQKpbZDQyha2kNjWzaUUa9BDpIlumr86msYl0O5YTEfmf2Y2jMfLBpZIBm4qHSBL9Zk
         IO/Q9h7XnxqKVhxbHzgpbxQpr8+fPjOpLJk/Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728422503; x=1729027303;
        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=yd9WEwnsnJKheWOILYBzZ54uW/JbW+1jjW4WUdGAmIo=;
        b=k7TJhKE7k8SmHcSIWudhhcu/6OGMKkLcpJV3KaCuWtq+BmBh4fEP7Qbk8RoSQKgXK2
         E5+ui7Pre6u6MeopRLVtzRd9jHDRhQY3CBMecQmdqmaUZkgIbQXdHchXoMrLo7ASs23z
         MFJf2RfzpMvXuVKmFLsGb9t4ivlLuJreyv9wNSp/VldEfP6+s6NeYs9GKyizbv4AvteS
         mmvVLT10cs8z1DOgZebC0vlsivIwaT+a7g4waF5R0i2h1xYWxEZJKjXBXfHqIir215OD
         LX+lTMpO/4Mp12X18lOW3tlM5jqshpUTr16dH+4aW4esS1ud/QbfjvCIjYU1iWAxkeO1
         ss1A==
X-Forwarded-Encrypted: i=1; AJvYcCVh+dyhxscn8c4OEyI7ri7jqFFkj81WeUHGSdmBLKmIIVb3fWr8R7Z7HZcHxHsddqD1VS9/MehAwd8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyFC5L9LgGmbqLYv9BjG8gSRSHa+LDe7yZBe66WawJsJlUUvZBl
	ZHf4sbsZqu1vDd0ueJfN9qAMGI38Kbg5MkgNB9A5eaWTdlu9dWszT2eR3SUellE=
X-Google-Smtp-Source: AGHT+IGNpB1fRI1wsOM2nHNm39qQSFZ3UB0dvS9vwTVjLNoj2f1rOZZV6AckbpBrTvMgnGUZ9SYf2g==
X-Received: by 2002:a05:6402:3512:b0:5c7:229a:b49d with SMTP id 4fb4d7f45d1cf-5c91d6988f4mr186771a12.30.1728422502781;
        Tue, 08 Oct 2024 14:21:42 -0700 (PDT)
Message-ID: <539a4947-9f2b-497b-a553-ff6ccb3adfae@citrix.com>
Date: Tue, 8 Oct 2024 22:21:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 00/44] Boot modules for Hyperlaunch
To: Jason Andryuk <jason.andryuk@amd.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <11c20a80-65a6-4b77-b890-775ac2d72af1@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <11c20a80-65a6-4b77-b890-775ac2d72af1@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08/10/2024 9:07 pm, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> The Boot Modules for Hyperlaunch series is an effort to split out
>> preliminary
>> changes necessary for the introduction of the Hyperlaunch domain builder
>> logic. These preliminary changes revolve around introducing the struct
>> boot_module and struct boot_domain structures. This includes
>> converting the
>> dom0 construction path to use these structures. These abstractions
>> lay the
>> groundwork to transform and extend the dom0 construction logic into a
>> limited,
>> but general domain builder.
>>
>> The splitting of Hyperlaunch into a set of series are twofold, to
>> reduce the
>> effort in reviewing a much larger series, and to reduce the effort in
>> handling
>> the knock-on effects to the construction logic from requested review
>> changes.
>>
>> Much thanks to AMD for supporting this work.
>>
>> Documentation on Hyperlaunch:
>> https://wiki.xenproject.org/wiki/Hyperlaunch
>>
>> Original Hyperlaunch v1 patch series:
>> https://lists.xenproject.org/archives/html/xen-devel/2022-07/msg00345.html
>>
>
> There is a lot of re-formatting of function arguments like:
>
> -static int __init pvh_load_kernel(struct domain *d, const module_t
> *image,
> -                                  unsigned long image_headroom,
> -                                  module_t *initrd, void *image_base,
> -                                  const char *cmdline, paddr_t *entry,
> -                                  paddr_t *start_info_addr)
> +static int __init pvh_load_kernel(
> +    struct domain *d, const struct boot_module *image,
> +    struct boot_module *initrd, void *image_base,
> +    const char *cmdline, paddr_t *entry, paddr_t *start_info_addr)
>
> I feel like the old style is more common and I prefer it.  But I also
> don't see it specified in CODING_STYLE.  As I am not a maintainer, I'd
> like them to weigh in.

I already did.  :)

This isn't a terribly bad example, but there are others which are much
worse.  Given a choice between an intractable mess of parameters
squeezed onto the RHS, and the same mess spread out across the whole
width, prefer the latter.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 08 21:32:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 21:32:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813637.1226633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syHot-0008LN-QO; Tue, 08 Oct 2024 21:32:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813637.1226633; Tue, 08 Oct 2024 21:32: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 1syHot-0008LG-NL; Tue, 08 Oct 2024 21:32:39 +0000
Received: by outflank-mailman (input) for mailman id 813637;
 Tue, 08 Oct 2024 21:32: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=7aYj=RE=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1syHos-0008LA-CT
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 21:32:38 +0000
Received: from fout-a8-smtp.messagingengine.com
 (fout-a8-smtp.messagingengine.com [103.168.172.151])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d569bb92-85bc-11ef-a0bd-8be0dac302b0;
 Tue, 08 Oct 2024 23:32:36 +0200 (CEST)
Received: from phl-compute-12.internal (phl-compute-12.phl.internal
 [10.202.2.52])
 by mailfout.phl.internal (Postfix) with ESMTP id B3FF813802A5;
 Tue,  8 Oct 2024 17:32:34 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-12.internal (MEProxy); Tue, 08 Oct 2024 17:32:34 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 8 Oct 2024 17:32:33 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d569bb92-85bc-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	:content-type:content-type:date:date:from:from:in-reply-to
	:message-id:mime-version:reply-to:subject:subject:to:to; s=fm2;
	 t=1728423154; x=1728509554; bh=cExzukkzxkZ0MlC75VQr8KanQPwdweR+
	oZAZw8RFEas=; b=UlR4tLt8z/VkxnD3i4vM5BIhs5S8n9bHRTt8aEogc07yTxa5
	zp0nOXajBVbd4IHbqprXgoeX1F91QoQ2ATqftfxTJtDmI0bxW5nvrKTfEviaoLY5
	QgqYtBnBS98z23/2yhtbx1xkytFqQL6pqhVnzBri/Gg/+XbRjkKjP6PljvxDwIDU
	J5zbw6HbLKFr9Ur5s4TkjUTKF/30g+x3Xoa4+sZHI5P6gjholW+FE6fxrJJUJ85h
	lLfCnnaLs7G4K4OfU41w2wIr0qhT6tRnXKPHgOgMyP6ry7u9z7LQDt35bqa6jlGN
	gNZ4GifScRIEbeRZTmvezuJCpjlV1ph0jgUu9A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=fm2; t=1728423154; x=1728509554; bh=cExzukkzxkZ0M
	lC75VQr8KanQPwdweR+oZAZw8RFEas=; b=G1LV/Xd/BYKtXpOA9i5p78ODU0Uvp
	xQMQR0H9+5bkr4Tb8vr6PGBaDKmPjgd+F/vUSI82ILoHPlz2vzzvxqrzZCWosaMD
	2Ke3y50YB8V+Ejuts3P6iGgqw94r+gr1/fY+CU0PI/XtIJfUdYpCBQ6LhOg3FOT4
	1DNQjTgy8D3ysBibE2JlPWiLkmgxTDFN+nVtgDBjGOaYuMO+FtNZiYbMd0yyzoIV
	HpwvuVCJApFAj3gSCQoXovxGzTpS5P6fgEk2XW2C1PmtMzyyEBluxq5Vng1pGwL6
	BIAROWy2v3KvocNUxllltqjFGipqVouW+uJHDl3Dmafe8y/0kDpCTK9VA==
X-ME-Sender: <xms:8qQFZ9GH6YJiKyRpqbNT09IVxPcYXRUeiwQ1ZBBoGu7InRpm9GalaQ>
    <xme:8qQFZyW2Fkj7FBM8oPDHecZ9JYbP6PEdtm1j8OiMqUncAFFVWKQGn-NlDlKLckjqE
    9kSojPQTOopFQ>
X-ME-Received: <xmr:8qQFZ_IjzRAozJ7LyjWu0yO9aSw0_5_7_rjd3BZgkJbwxtHGBvkKwpeS5feXYk_WYpZ1YR2rd1oLN_pkGsQcyKyshN13cakssWT7rasGPa9-ewXQVq8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdefuddgudeifecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp
    uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivg
    hnthhsucdlqddutddtmdenucfjughrpefhvfevufffkffogggtgfesthekredtredtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepleekhfduleetleelleetteevfeefteffkeetteejheelgfegkeelge
    ehhfdthedvnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepgigvnhdq
    uggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepmh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdprhgtphht
    thhopegrnhhthhhonhihrdhpvghrrghrugesvhgrthgvshdrthgvtghhpdhrtghpthhtoh
    epjhhgrhhoshhssehsuhhsvgdrtghomh
X-ME-Proxy: <xmx:8qQFZzEmn7kNxn4UotMR6vodQR9dbp80XfGDDzXNvAkgh5ICeCnQZg>
    <xmx:8qQFZzUNg_Ri1CrF1uFsvy-vDD4vBEEVLSNTscnjwBBlwCK97XU-ew>
    <xmx:8qQFZ-PZbH22GEweLIIqqRMQXlWx7zHxXlHWyoUdpeOnlBCi4COWTA>
    <xmx:8qQFZy1J_FxbtT1pnN4N07ICIpoL7gMUv5gwSvGNzPm7ttjLpkqTXQ>
    <xmx:8qQFZ-R40ybDwKupunxk1z7v55h1D1tAQC5FQY_URodzhY9zobUbY0Fe>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the kernel
Date: Tue,  8 Oct 2024 23:32:23 +0200
Message-ID: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Linux 6.12-rc2 fails to decompress with the current 128MiB, contrary to
the code comment. It results in a failure like this:

    domainbuilder: detail: xc_dom_kernel_file: filename="/var/lib/qubes/vm-kernels/6.12-rc2-1.1.fc37/vmlinuz"
    domainbuilder: detail: xc_dom_malloc_filemap    : 12104 kB
    domainbuilder: detail: xc_dom_module_file: filename="/var/lib/qubes/vm-kernels/6.12-rc2-1.1.fc37/initramfs"
    domainbuilder: detail: xc_dom_malloc_filemap    : 7711 kB
    domainbuilder: detail: xc_dom_boot_xen_init: ver 4.19, caps xen-3.0-x86_64 hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
    domainbuilder: detail: xc_dom_parse_image: called
    domainbuilder: detail: xc_dom_find_loader: trying multiboot-binary loader ...
    domainbuilder: detail: loader probe failed
    domainbuilder: detail: xc_dom_find_loader: trying HVM-generic loader ...
    domainbuilder: detail: loader probe failed
    domainbuilder: detail: xc_dom_find_loader: trying Linux bzImage loader ...
    domainbuilder: detail: _xc_try_lzma_decode: XZ decompression error: Memory usage limit reached
    xc: error: panic: xg_dom_bzimageloader.c:761: xc_dom_probe_bzimage_kernel unable to XZ decompress kernel: Invalid kernel
    domainbuilder: detail: loader probe failed
    domainbuilder: detail: xc_dom_find_loader: trying ELF-generic loader ...
    domainbuilder: detail: loader probe failed
    xc: error: panic: xg_dom_core.c:689: xc_dom_find_loader: no loader found: Invalid kernel
    libxl: error: libxl_dom.c:566:libxl__build_dom: xc_dom_parse_image failed

The important part: XZ decompression error: Memory usage limit reached

This looks to be related to the following change in Linux:
8653c909922743bceb4800e5cc26087208c9e0e6 ("xz: use 128 MiB dictionary and force single-threaded mode")

Fix this by increasing the block size to 256MiB. And remove the
misleading comment (from lack of better ideas).

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 tools/libs/guest/xg_dom_bzimageloader.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/libs/guest/xg_dom_bzimageloader.c b/tools/libs/guest/xg_dom_bzimageloader.c
index c6ee6d83e7c6..1fb4e5a1f728 100644
--- a/tools/libs/guest/xg_dom_bzimageloader.c
+++ b/tools/libs/guest/xg_dom_bzimageloader.c
@@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
     return retval;
 }
 
-/* 128 Mb is the minimum size (half-way) documented to work for all inputs. */
-#define LZMA_BLOCK_SIZE (128*1024*1024)
+#define LZMA_BLOCK_SIZE (256*1024*1024)
 
 static int xc_try_xz_decode(
     struct xc_dom_image *dom, void **blob, size_t *size)
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 08 22:47:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 08 Oct 2024 22:47:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813643.1226643 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syIya-0000fJ-2E; Tue, 08 Oct 2024 22:46:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813643.1226643; Tue, 08 Oct 2024 22:46: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 1syIyZ-0000fC-Vs; Tue, 08 Oct 2024 22:46:43 +0000
Received: by outflank-mailman (input) for mailman id 813643;
 Tue, 08 Oct 2024 22:46: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=GrDf=RE=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1syIyX-0000ce-Vk
 for xen-devel@lists.xenproject.org; Tue, 08 Oct 2024 22:46:42 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2e04a5ec-85c7-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 00:46:39 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id A7C48A407D9;
 Tue,  8 Oct 2024 22:46:29 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C5567C4CEC7;
 Tue,  8 Oct 2024 22:46: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: 2e04a5ec-85c7-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728427598;
	bh=ZQAC/brWF2U3WKnQrfKU2MOZjWd5FtOlPTxFgS0dSrk=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=fOqGep3AA2TmdnXnuuRk2FIQOKPYvz6N33wLFLyD4XkWw+GdG16AHUuj//OpVxNhu
	 alsZkHyg+2P7MhT+2XwOhxe/QPUj9E03W0kIiwuZ3wvokZ6ZmKvEJpatNaEXf8yw5L
	 S1L33Vj21hEI4058MJbUDR2iSUQ9AX+nTY42UJBoBoHakbYpl95WvIOSdgw6qvn4le
	 6hUe69W8JDbUmgFEHzu+fGA5JtixkrqjScLIsyVWAzCXTBSPvOjCvNTJQaCN/xB961
	 7ni1zkhpCqJH/EB/e3EU90T/wE9zWAeMo51/MEdIFUoNoRcpesQdT0sEWxuT9eapJP
	 BwkjhisUjbhVA==
Date: Tue, 8 Oct 2024 15:46:35 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Oleksandr Tyshchenko <olekstysh@gmail.com>
cc: Bertrand Marquis <Bertrand.Marquis@arm.com>, 
    Xen-devel <xen-devel@lists.xenproject.org>, 
    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Ayan Kumar Halder <ayan.kumar.halder@amd.com>, 
    Artem Mygaiev <artem_mygaiev@epam.com>, 
    Hisao Munakata <hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
In-Reply-To: <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
Message-ID: <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
References: <20241007185508.3044115-1-olekstysh@gmail.com> <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com> <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Tue, 8 Oct 2024, Oleksandr Tyshchenko wrote:
> > > On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
> > > 
> > > From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> > > 
> > > Add common requirements for a physical device assignment to Arm64
> > > and AMD64 PVH domains.
> > > 
> > > Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> > > ---
> > > Based on:
> > > [PATCH] docs: fusa: Replace VM with domain
> > > https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
> > > ---
> > > ---
> > > .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
> > > docs/fusa/reqs/index.rst                      |   1 +
> > > docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
> > > docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
> > > 4 files changed, 428 insertions(+)
> > > create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
> > > create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
> > > 
> > > diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst
> > > b/docs/fusa/reqs/design-reqs/common/passthrough.rst
> > > new file mode 100644
> > > index 0000000000..a1d6676f65
> > > --- /dev/null
> > > +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
> > > @@ -0,0 +1,365 @@
> > > +.. SPDX-License-Identifier: CC-BY-4.0
> > > +
> > > +Device Passthrough
> > > +==================
> > > +
> > > +The following are the requirements related to a physical device
> > > assignment
> > > +[1], [2] to Arm64 and AMD64 PVH domains.
> > > +
> > > +Requirements for both Arm64 and AMD64 PVH
> > > +=========================================
> > > +
> > > +Hide IOMMU from a domain
> > > +------------------------
> > > +
> > > +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
> > > +
> > > +Description:
> > > +Xen shall not expose the IOMMU device to the domain even if I/O
> > > virtualization
> > > +is disabled. The IOMMU shall be under hypervisor control only.
> > > +
> > > +Rationale:
> > 
> > I think there should be a rationale here to explain why we do not want the
> > IOMMU
> > in particular to be assigned to a domain.
> 
> 
> ok, will add. I propose the following text:
> 
> Xen having the whole picture of the host resources and device assignment
> unlike the individual domain makes use of the IOMMU to:
> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also known as
> stage-2 (or 2nd stage) address translations for DMA devices passed through to
> domains and Interrupt Remapping on AMD64 platforms.
> - provide access protection functionalities to prevent malicious or buggy DMA
> devices from accessing arbitrary memory ranges (e.g. memory allocated to other
> domains) or from generating interrupts that could affect other domains.
> 
> 
> > 
> > Added to that, I am not completely sure that there is a clear way to test
> > this one
> > as for example one could assign registers not known by Xen.
> 
> I am afraid you are right, valid point. For example, on Arm64, if there is no
> corresponding driver in use, we will end up exposing IOMMU dt node to Dom0.
> 
> 
> > 
> > Shouldn't this requirement in fact be an assumption of use ?
> 
> Assumption of use on Xen? From my PoV sounds reasonable, will do.

In my view, this does not qualify as an Assumption of Use, as it does
not align with the definition we have used so far. If we were to
categorize this as an Assumption of Use, we would need to change the
definition.

We have defined an Assumption of Use as something Xen expects from the
rest of the system for it to function correctly, such as being loaded at
EL2. On the other hand, 'Requirements' refer to behaviors we expect Xen
to exhibit.

Our goal is for Xen to configure the IOMMU at boot using the stage 2
translation, and to ensure that Xen prevents domains from altering the
IOMMU configuration. These are specific expectations of Xen's behavior,
so I believe they fall under Requirements and should be validated in
some way.

However, we could adjust the wording. For example, we might replace the
negative phrasing with a positive requirement, such as: 'Xen shall
configure the IOMMU at boot according to the stage 2 translation
tables.' There is no need to explicitly state that the IOMMU is not
exposed to guests, as nothing is exposed unless explicitly allowed or
mentioned. We could, however, include a brief note about it for clarity.


> > > +
> > > +Comments:
> > > +
> > > +Covers:
> > > + - `XenProd~device_passthrough~1`
> > > +
> > > +Discover PCI devices from hardware domain
> > > +-----------------------------------------
> > > +
> > > +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
> > > +
> > > +Description:
> > > +The hardware domain shall enumerate and discover PCI devices and inform
> > > Xen
> > > +about their appearance and disappearance.
> > 
> > Again this is a design requirement telling what should be done by a domain.
> > This is an interface or an assumption of use but not a Xen design req.
> 
> I agree, will convert to Assumption of use on domain.

This example better aligns with our definition of Assumption of Use so
far: we expect the hardware domain to enumerate and discover PCI
devices, then notify Xen about their appearance or removal. This is an
expectation placed on the hardware domain, not on Xen itself. I agree
with Bertrand that, as written, it is more of an Assumption of Use than
a Requirement.

However, rather than converting it into an Assumption of Use, I think we
should rewrite it as a requirement focused on Xen's interfaces for
enumeration. For instance:

"Xen shall provide hypercalls to allow the hardware domain to inform Xen
about the presence of PCI devices."


> > > +
> > > +Rationale:
> > > +
> > > +Comments:
> > > +
> > > +Covers:
> > > + - `XenProd~device_passthrough~1`
> > > +
> > > +Discover PCI devices from Xen
> > > +-----------------------------
> > > +
> > > +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
> > > +
> > > +Description:
> > > +Xen shall discover PCI devices (enumerated by the firmware beforehand)
> > > during
> > > +boot if the hardware domain is not present.
> > 
> > I am a bit wondering here why we would not want Xen to always do it if we
> > have
> > the code to do it in Xen anyway.
> 
> Makes sense, will drop "if the hardware domain is not present".

+1

 
> > 
> > > +
> > > +Rationale:
> > > +
> > > +Comments:
> > > +
> > > +Covers:
> > > + - `XenProd~device_passthrough~1`
> > > +
> > > +Assign PCI device to domain (with IOMMU)
> > > +----------------------------------------
> > > +
> > > +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
> > > +
> > > +Description:
> > > +Xen shall assign a specified PCI device (always implied as DMA-capable)
> > > to
> > > +a domain during its creation using passthrough (partial) device tree on
> > > Arm64
> > > +and Hyperlaunch device tree on AMD-x86. The physical device to be
> > > assigned is
> > > +protected by the IOMMU.
> > 
> > This is a very long and complex requirement.
> > I would suggest to split it in 3:
> > - generic: Xen shall support assign PCI devices to domains.
> > - arm64 one: Xen shall assign PCI devices based on device tree (explain how
> > this is configured in dts)
> > - amd: xxxx based on hyperlaunch
> 
> I agree, will split, but ...
> 
> > - Xen shall use the IOMMU to enforce DMA operations done by a PCI device
> > assigned to a domain to be restricted to the memory of the given domain.
> 
> 
>  ... does this need to be a separate 4th requirement here (and for the similar
> requirement for the platform device down the document) or this sentence is
> meant to be added to all resulting generic/arm64/amd requirements?

This is not specific to PCI, though? The generic requirement is "Xen
shall use the IOMMU to enforce DMA operations done by a DMA-capable
device assigned to a domain to be restricted to the memory of the given
domain".

I think it is also OK to both have a PCI-specific and a
non-PCI-specific requirement for that, I just wanted to mention that it
doesn't look like something to PCI-specific.


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 00:37:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 00:37:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813650.1226654 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syKhR-0006tu-U0; Wed, 09 Oct 2024 00:37:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813650.1226654; Wed, 09 Oct 2024 00: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 1syKhR-0006tn-RN; Wed, 09 Oct 2024 00:37:09 +0000
Received: by outflank-mailman (input) for mailman id 813650;
 Wed, 09 Oct 2024 00:37: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=3FS1=RF=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1syKhP-0006tf-K7
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 00:37:07 +0000
Received: from fhigh-a7-smtp.messagingengine.com
 (fhigh-a7-smtp.messagingengine.com [103.168.172.158])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9b14c16c-85d6-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 02:37:05 +0200 (CEST)
Received: from phl-compute-02.internal (phl-compute-02.phl.internal
 [10.202.2.42])
 by mailfhigh.phl.internal (Postfix) with ESMTP id C0DD11140239;
 Tue,  8 Oct 2024 20:37:03 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Tue, 08 Oct 2024 20:37:03 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 8 Oct 2024 20:37:02 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b14c16c-85d6-11ef-a0bd-8be0dac302b0
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:message-id:mime-version:reply-to
	:subject:subject:to:to; s=fm2; t=1728434223; x=1728520623; bh=C8
	2pnmUZdeut8Z+QXHVtjsSEAsSsqhpYBlAKTxRITCY=; b=KU0cxg2g+IoO7RuwB/
	PuEAXQrv3tYvgHgtrlQrnGnf58cPqFK+pUWNvJB7jRCmTeZjYpMFozhsS6/wD1yw
	a3jAF3AVDC+R4YRdI/0UZ5PrBKp1q6CyvUMSEgEgj6Ed6Q7+T1p30By+zTBxH/TA
	9Dj3+eSm5cgsFG/BfCq1SZB9qqqMjWjfCJJ/EbpWI3z27glmQ9WwTzAM7VNT21C/
	0yeWiNL1DtVLmIUHDKF+/beab3OT/dr8EkG5kmwvmgKf32PqTR0TwrzHq4U2QbyD
	IbGuPNpRK54ODt+ahbvyQy1QjOMlPAm2+cpR35nkPugR8S2RC0O2Yn6eG/9NPsXF
	Ydow==
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: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=fm2; t=
	1728434223; x=1728520623; bh=C82pnmUZdeut8Z+QXHVtjsSEAsSsqhpYBlA
	KTxRITCY=; b=Uti29CFKOWnpE/ZZr5VfOpgmiJGW6B8B2uAlL4KoH4CevzU+hR1
	XKtOXc9Ssfh1OJnCfXRSUUYkFLOY8Yrkit4n7Go8yrc4KW46yrIZ29Qx8eCiO1G/
	PJ9AjYbNG9HnEFkdjnnTX/jksJaN7aQ8JQ/m5GyrQ1zfAIWwi3eJJmOG2vTj3g8e
	j/zb1Grw81GYHW+arhTjDCBcIfPinNWFQqD31DaVY68diwP7nvt5UI9gdUrudBhz
	RR5uA8PyZeyGs9qw32dDSU+nDFa9Fu8pAWumLtX9TAOhq7Z3pPTEEcZRwQ4ba50E
	x0nqGW3vfobAUFFSXPPvznAvvGoL0uZo09Q==
X-ME-Sender: <xms:L9AFZ5mi6y05c6OrFUl_W9FUtBUQxHEVLHDI1CGApVztpFsHvPD1JQ>
    <xme:L9AFZ03NaxwyUV6GUxOTuYQD8OAeWXaP6d1hCv3ibnO-o_yBR_auSpOFds2rY0iSN
    LyFc9SPgXEHvA>
X-ME-Received: <xmr:L9AFZ_rvtfTvW70EJZj08UFBv7FnC7mB53UOmiBAIzVcpsJZqzx6vL-Nw4agKrr4hSVoQjqiwPsR6eE6nv6Vj0aV5DvyT3Gtzw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdefvddgfeejucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkgggtugesghdtreertddtjeenucfh
    rhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrh
    hmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgr
    thhtvghrnhepudfggfeileeuueektdfhffelvdfhjeeffeehueeikefhleduleejjeelge
    ejudffnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep
    mhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgspg
    hrtghpthhtohephedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepgigvnhdquggv
    vhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepjhhgrh
    hoshhssehsuhhsvgdrtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhisehkvghr
    nhgvlhdrohhrghdprhgtphhtthhopeholhgvkhhsrghnughrpghthihshhgthhgvnhhkoh
    esvghprghmrdgtohhmpdhrtghpthhtohepjhhiqhhirghnrdgthhgvnhesrghmugdrtgho
    mh
X-ME-Proxy: <xmx:L9AFZ5k1bfJGbPupMyHp2tMzMVpaXIDi9ozlZdbrFAF3jN9Kj0evNA>
    <xmx:L9AFZ30M96nzkvPR76ooIsrX2OLLGuGvG7nBgivcvvIPzhwMf5XjQA>
    <xmx:L9AFZ4s7i736ihujEuu8Iw390lGMhygo3vtJCzHuGe1TyVTm7cVT0A>
    <xmx:L9AFZ7XNiKz3FYapFFfv317ahxVOBwhC2HPUT-V4dXNDpLT520GxbQ>
    <xmx:L9AFZyR-gLDfhISA7_qzki306lW91eLq18fRu6OV3dRdifknkzE7znEa>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 9 Oct 2024 02:36:59 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>
Subject: Linux 6.12-rc2: xen-privcmd cannot be loaded in domU anymore
Message-ID: <ZwXQKzubX9Dj_vhc@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="bj5tTNG7g/13THM0"
Content-Disposition: inline


--bj5tTNG7g/13THM0
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 9 Oct 2024 02:36:59 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>
Subject: Linux 6.12-rc2: xen-privcmd cannot be loaded in domU anymore

Hi,

It looks like xen-privcmd now depends on xen-pciback, and the latter
(expectedly) fails to load in domU with -ENODEV. But that prevents
loading xen-privcmd too. And that's bad.

The dependency looks to be introduced by this commit:

commit 2fae6bb7be320270801b3c3b040189bd7daa8056
Author: Jiqian Chen <Jiqian.Chen@amd.com>
Date:   Tue Sep 24 14:14:37 2024 +0800

    xen/privcmd: Add new syscall to get gsi from dev
   =20
    On PVH dom0, when passthrough a device to domU, QEMU and xl tools
    want to use gsi number to do pirq mapping, see QEMU code
    xen_pt_realize->xc_physdev_map_pirq, and xl code
    pci_add_dm_done->xc_physdev_map_pirq, but in current codes, the gsi
    number is got from file /sys/bus/pci/devices/<sbdf>/irq, that is
    wrong, because irq is not equal with gsi, they are in different
    spaces, so pirq mapping fails.
    And in current linux codes, there is no method to get gsi
    for userspace.
   =20
    For above purpose, record gsi of pcistub devices when init
    pcistub and add a new syscall into privcmd to let userspace
    can get gsi when they have a need.
   =20
    Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Message-ID: <20240924061437.2636766-4-Jiqian.Chen@amd.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>


--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--bj5tTNG7g/13THM0
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcF0CsACgkQ24/THMrX
1yy6IAf/W9XsmStGd9i+FK4Kxyp/j2WPfPThr1lAugLF/k9sIq+q+GYHazMCiwwH
Y07QbLlx01IyTfP67EX7TXf75TgyNvofNATqIt4tV0qafrefF4PwoEtTOesjbIPr
Ipfu1e6iHKQc5whhsiapA3C9329B3HsB87T3A6iBwqgm3WoukRtu/U+tLZLhzv/Z
vhZ7daqtMd7BiSQgVnCpbq6haWzStTPfyuQmWKWFnWX88kKcqD2Qh+cVxEhguziZ
Fvrb34nFzXj3DLwfw3aMuEneczVgwW3RtQ3xdAfeNk/i+bnez6vZISGmbnSh3X7d
ePC1u1Ld5wZPFjRV85AsKGE3+WxrOw==
=v4p0
-----END PGP SIGNATURE-----

--bj5tTNG7g/13THM0--


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 01:49:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 01:49:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813663.1226664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syLoz-0002UL-VB; Wed, 09 Oct 2024 01:49:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813663.1226664; Wed, 09 Oct 2024 01:49: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 1syLoz-0002UE-S0; Wed, 09 Oct 2024 01:49:01 +0000
Received: by outflank-mailman (input) for mailman id 813663;
 Wed, 09 Oct 2024 01:49: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 1syLoy-0002U4-D8; Wed, 09 Oct 2024 01:49: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 1syLoy-0006XA-AY; Wed, 09 Oct 2024 01:49: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 1syLox-0003LK-OW; Wed, 09 Oct 2024 01:48:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syLox-00008r-NZ; Wed, 09 Oct 2024 01:48: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=4wZefBxDC2U3qRvFvDfebbNDYrvftkYKa7aLjlWFzgM=; b=cLZVGmFNijIw2SW7hlh8Een6Uz
	QiyjbncJwejl4N7VOx3+ZtZ6QqjnU4kX406CigaqQb00iL4mnf7PsXF5MobB7TY/xB9HCN1gF0U7E
	ZrGxZJo70WEDyuccbbvTVFaMG4+ysdbrCdnYbTsODNBJ7UZYoNViMTTr29z4yDkxHm6s=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188013-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188013: regressions - trouble: broken/fail/pass
X-Osstest-Failures:
    qemu-mainline:test-armhf-armhf-libvirt-vhd:<job status>:broken:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt-vhd:host-install(5):broken:heisenbug
    qemu-mainline:test-armhf-armhf-xl-qcow2:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-xl-rtds:xen-boot:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=2af37e791906cfda42cb9604a16d218e56994bb1
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 01:48:59 +0000

flight 188013 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188013/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-libvirt-vhd    <job status>                 broken
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-vhd  5 host-install(5)          broken pass in 188005
 test-armhf-armhf-xl-qcow2    20 leak-check/check fail in 188005 pass in 188013
 test-armhf-armhf-xl-rtds      8 xen-boot                   fail pass in 188005

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check fail in 188005 never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check fail in 188005 never pass
 test-armhf-armhf-xl-rtds    15 migrate-support-check fail in 188005 never pass
 test-armhf-armhf-xl-rtds 16 saverestore-support-check fail in 188005 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-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-raw 14 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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-arndale  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

version targeted for testing:
 qemuu                2af37e791906cfda42cb9604a16d218e56994bb1
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   22 days
Failing since        187731  2024-09-17 13:11:20 Z   21 days   37 attempts
Testing same since   188005  2024-10-08 02:05:22 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 broken  
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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-libvirt-vhd broken
broken-step test-armhf-armhf-libvirt-vhd host-install(5)

Not pushing.

(No revision log; it would be 8214 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 03:42:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 03:42:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813683.1226680 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syNaM-00071W-3w; Wed, 09 Oct 2024 03:42:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813683.1226680; Wed, 09 Oct 2024 03:42: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 1syNaM-00071P-0K; Wed, 09 Oct 2024 03:42:02 +0000
Received: by outflank-mailman (input) for mailman id 813683;
 Wed, 09 Oct 2024 03:42: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=S3in=RF=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1syNaK-00071I-U7
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 03:42:01 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on2061f.outbound.protection.outlook.com
 [2a01:111:f403:2409::61f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6f6e6b82-85f0-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 05:41:59 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by LV2PR12MB5989.namprd12.prod.outlook.com (2603:10b6:408:171::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Wed, 9 Oct
 2024 03:41:55 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8026.020; Wed, 9 Oct 2024
 03:41: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: 6f6e6b82-85f0-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=s20HgENfdfOEmZZxIR5QXgSVRz3UT6oTC8yX/jcqg/IAbkSW4F4ZXX0+l5es+iNF6ZISrNkAKcUI2LK93YgW1hFVq/KhZRQ8KIZtiAKWCWetXbjWuyMhtRi8fmDv+C3m3QSMKWqNZaR47+SQ2yWsDNXIISyPoHZapPoh6HlQ48EDyojIPuBLQcn7p1szOTVwgboVe9K6Hzx7uhMchajdr9bgIrBQ6LimIYaNGU/Hcz7HtTeJp+jNl+wb1zBZQrXUe3g7+2dlEtokn0GlykpqNnkzrxZhwm2BViYf27NDPJ9lD9kEHxWOIgiTEeBUC1B5cBlZ36vG0awwUAwcfJCGlA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=f50rXRPHpiEQHUOITFL7rhPgpJrUGW/bC8TjM9O8YMk=;
 b=EjXmTVv1eN80f2cnwk830vRzThyvI7C/AE3b7AwtbV6DT8JSTqSsxrGSzWifmLuJzWQJf6XAPE9ZhCsQaK9L50xJKHZrtoyxJLB//V0uLpmYks1Sou7BFWCdhRrs+29tXgGCLsglmXOgnog8Q4B7t5CXO/HngUQUDg1YTu70jLyDUVlHSTy4kcldjC0GuRf1T0BUr7Wq8ruZJ1eXTPt1ztyhUqLhSusV25SMk4BheQk6MKZoeH2iKa/EgRfyblEafaiWl4c6cCOHDyCAx/k5LntdO7IWiLgkZeqm6D01GNYvIfPFcEuDCHqAa4fCVq7bQn+izwdO3eImUHIneLVhWg==
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=f50rXRPHpiEQHUOITFL7rhPgpJrUGW/bC8TjM9O8YMk=;
 b=KINEZ/1zkqYmlGDM+hpsRLmTpmAK67+PM+Wv9N9GZCCpaa555AKhuwBlp/FbD0mHKrfp01HXDkhkjej400HNMWxXXlbDAKAh7XnjtTNEfHv0MJJ2sls0hOcRgJFfpSLUxqK/mo+qCOvTT3wbKNT7CgLvjBfdsV8uC6tcowTFUEM=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: =?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>, Juergen Gross <jgross@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>
CC: xen-devel <xen-devel@lists.xenproject.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: Linux 6.12-rc2: xen-privcmd cannot be loaded in domU anymore
Thread-Topic: Linux 6.12-rc2: xen-privcmd cannot be loaded in domU anymore
Thread-Index: AQHbGeNgnDbabu8lHkipFVKSzhoZJrJ+SluA
Date: Wed, 9 Oct 2024 03:41:55 +0000
Message-ID:
 <BL1PR12MB58498966A7308B5CB6CBE86DE77F2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <ZwXQKzubX9Dj_vhc@mail-itl>
In-Reply-To: <ZwXQKzubX9Dj_vhc@mail-itl>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8026.020)
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_|LV2PR12MB5989:EE_
x-ms-office365-filtering-correlation-id: bf75d1f0-0e3a-4fb4-ac1d-08dce814524e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|366016|376014|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?UGJmM2k5T2JKbTRlY0JxNFdQQkl2NmlZb3JDRzZTU0F4WW9ZdWhCc3ZqeVFp?=
 =?utf-8?B?Z1diMzFiUGdpd1VIamt3eEl0cDNwZkkwTDQxSTNOelZ5THFaSW5qeHd1T3I2?=
 =?utf-8?B?NWcwN1p5bTluM3E5b2NCNXBFK1QwaExZSlpaUkd1NXk1enNSK1FRYWpuekJM?=
 =?utf-8?B?ZnBxTUJVWnl4cHJpUVBJbXQrUllqczhQT1VoWHV4d0N4OWEreXhDWnhCVFM4?=
 =?utf-8?B?MDhOcTJSZW40Vi8rY24rbC9MN0o0MW1YTGdURlNXTUVoZ3dYdjVPcHBzTDNL?=
 =?utf-8?B?TzB1L2NwWHF3YTA5c1Q0QkRPaitSZGRwRlhieVZGN1pycXpneHFMUWl5V1c0?=
 =?utf-8?B?ZHhUZG05aXVwMnFXNWJaU0hjQUJsL2xLWGZ2M1lnMWYxN1ZPc0MxdnFVRnla?=
 =?utf-8?B?S2tCNTZjeU9RUXU5b0JMV2U3cTU3YmJTYS8ybGQrUThrNEpQSkhROU9pNFph?=
 =?utf-8?B?dHNJRzdzUDhCcEhEbzBQSjdPcEthazNGSkR3YXd4eGFnamxlM2xjWXB5anAz?=
 =?utf-8?B?TTdFWTJjdW9RamlxTm1DbmhhQjZiVFRKVXVxcmtMdUtTcnlXVTh4N1NURmJT?=
 =?utf-8?B?ZmxlQjgxSURUMnkwZVJBbjNuWW8rR1VZbzU0WjhFTmxLUDQ2WkhkU1U1cit5?=
 =?utf-8?B?aEYrNTluRnIzWVE4K0dyTEhxRTk5bjZKYzJacXlUd2JkSU5uM1RINUR4MzdQ?=
 =?utf-8?B?ZGRjaVFiNmgvZzIzeVdtRVE3a080TXdiL2xmM3IxaXVZUVJPWWVpSnBmRTR2?=
 =?utf-8?B?TzRxakUxcllyQUFWY1FiWE5uZFFDR0lmbEFGVXpLcjh0OVorUkhWWlpSMnNJ?=
 =?utf-8?B?dE95Nis1Uk1UOXdkbWUyVlA0SkJVd0RCZ2o1RWt2Ni9MejF2TjdJa2lwM0V6?=
 =?utf-8?B?WGU0RVdnMGZjVVkxaCtibncrcEx6OE80OEYrcFQ1VU5hQlJZZUFsV0d4a1Vo?=
 =?utf-8?B?azJVeXZHclE3aWtRZjBvdWFzSjE3ZVpOaC9SeWRKUS9rT0FYdmNzb0lTYVpB?=
 =?utf-8?B?Y2lNZnBETmxySnVVZVJNeGpQemQvTCtqVStTMVloL2x6L3dEV3R5MXZPSnZ2?=
 =?utf-8?B?R0pMYlR3RG9hTXVORHNHN2V0QitHYy9RU2JPVFAvVGlXdUxEVk92eWRsS2lE?=
 =?utf-8?B?NUdsaFlWWUNGY2dzM0llTGVxREhVMlMrc2hKelV6WlZiWENPY0lJeUc0dFpU?=
 =?utf-8?B?QzNGcFVuaWZJd05CR3JybzV0VjV4M0FzRisyT2I5SFUxTFR1OTh5SFZiNTNO?=
 =?utf-8?B?Sk92SHQ2SmxDTzcwUzAxYktSbW9CRGU5MDB0UHJ3eThweXpFRnhOaExVMXFv?=
 =?utf-8?B?dWgyUjg2Z0FVNHQvOWFVVThMSklXK2FqdXU2dHBUOW81RHBxOG1BU3Z4SExF?=
 =?utf-8?B?ZXBwdXliY2tsWjdMbWc3czZrMmpVVnRGZEF6bzZJYysvU2JSZURzekpMVy8v?=
 =?utf-8?B?b3BveVNKTkNjQWNtdFdYQzQrdEtwVElTVDdMSklJaSs5bnh0OHlxd2ZvOFY1?=
 =?utf-8?B?UURZdTJDVXdzL3BQamlJZWNUSnFPWGptczQrQ3VLd2hwTWwrbndSY3laOS9l?=
 =?utf-8?B?aDkrQmdZTWkrM01MekZCaTBXNk1kRTkwN3pwK2N6TU4xRW42RVlWcm1uRzRV?=
 =?utf-8?B?citwOXlXTW4xYlZtU1IvaXBDVFg4WGVYNUlPNlozYTEvZ0VlUVpaQlAyT2ov?=
 =?utf-8?B?eWlFQWpRcmYrOElCMjJxVUozZVlPWlN5SUU0dmhxNklKeEVNYlNzSmZiODhI?=
 =?utf-8?B?aWhwVHBKNnEyRy9vYjNUOUNwdzMyLzBVT1ZhanJaWlF3UEdST2JwckNmZWtw?=
 =?utf-8?B?Zi9YRnE2ZUdDY0pYWkNEQT09?=
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:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?dDVLQm5KZEpML24vbzFjZ084d0c1a09QUFczQjRCS29GYzVXcWQ1V0wvK0Vi?=
 =?utf-8?B?ZXNZVFZUaFF1M1owaFVsalBJYjV5N2g4VGFHOWJJSDdJdERTd1M2R3RMTFZw?=
 =?utf-8?B?dk1tVE0xTkROdGlkTGRPVmlpaDA3N0dRdjYyTUtvM1Y1RE9KQUIxYktUWEU1?=
 =?utf-8?B?MTNqZGk4VVNhZ2xMK0tZNC9hcVJPVmYrRkJJQkJ6UlhHTUY2eG5HSklzcU5F?=
 =?utf-8?B?R3hEZHJJUmhja3RoQUx1REhHOURMeVQ2cDNRN1ZwaWQzSTZpMjF4U215UFpt?=
 =?utf-8?B?b2pzQmYyVTJPaTVNam8wUW1TTFFzN1MwbHgyMTNKY1ZaaThSTVlmTmhyUS9N?=
 =?utf-8?B?dlhibVdMQURNMW9jaUtUMnBmOEF2UkVqVzJ4T3Rvang0clF2UE9KVFZHa2xW?=
 =?utf-8?B?WjltaUsrNkFSUVlUcTJUVndOdkdxdXZqblMwUDF3RmdUK1drSWxWSTN2a1cr?=
 =?utf-8?B?L0VNemFXUGJvZXJTaFBHYVdGaFZTbnljOTQxZDZjY0x2L3NZZHhsQUZQVEYz?=
 =?utf-8?B?RjdRbGwxUWZ2T21mN0RubmJ4eGRZYzYxN1NHWkcxR3R0bFVVMGxaZE5UdjVS?=
 =?utf-8?B?U0s5NUJXdURsUi9PLy94cVZJSXFVblhONkhuZXF0VjdmNmdmT3A3aVB5UGhD?=
 =?utf-8?B?YWhlNHUrL2k3ZVFkaEx1VTkyREtPbUNLZlUwcHRRNW9TZHRGenk2QkZtY0o4?=
 =?utf-8?B?bFlyQlNCTUZMZWNFNDQrMXc4R25Nc0ZZeHEyWmdoZ1hQSGdSdnVyc2VkanpP?=
 =?utf-8?B?OUVzaXFZUDR2VjJvR2pQTXlYR0tkcW1waWRBSWkxejV0bnVmQUlyRGRPYmdM?=
 =?utf-8?B?WktLVmdjeVZBdXN3VHFSRUdhUVdkSlNrQXUrQVBpZXBCMTJ5Ukg5clkzak50?=
 =?utf-8?B?TjY0VWlnRmlFNWZLWEVNbHpNOVhEM2hiR2NXTmxSd2xiYnV3aVdLWHZSS2RH?=
 =?utf-8?B?dFNaeGc0b01LT0N5THAveFlURmR6QVI5MjBwMTc0UjhQaC8zVG1jTVp0ZzNQ?=
 =?utf-8?B?VnNPMzZjY3diSXpwTURRa3gxaFRUSUh0ak1MYUdCTW5xOFRHUEtUeEZOSEZ5?=
 =?utf-8?B?Zzk5SDFCbkRqK0RFMFB1bE9vSUVUUGc2NE5vZVZZeTJqMDFnT1owTkFTL011?=
 =?utf-8?B?eTdJUjhHK2dQcTZ0RGx6QVVFdHo3S2trbExkTVN1QnR6d1JYN0lBbWRDNHMy?=
 =?utf-8?B?Nk9rN3Ryd3ZpTkZ2aWJYVnp4dUgyQ0lxVThKdnVRQjRGU2RqT24xWlpuUlZU?=
 =?utf-8?B?MFlubzlvOG1odjdGOHdnb0Z1Yk9tVld4Q2t5ZGtGYVNIc3VpVEpmUkE0REtx?=
 =?utf-8?B?VTN4UDhQR0I2ejJOV1NHT2E4ay9Xc1p1N0hIWS9wcDBuMlloalJrVEova0dZ?=
 =?utf-8?B?SWROZ2gwcndWaXF0a0poVWx0eWVIRHRrbENJVTljZmpacmVtL1JtMThub1Y2?=
 =?utf-8?B?OXBXUUVtaHNLdlZsb2M1cVdja3BNSHU2cjJzdUkyeDVwMzJveWdBa1IyZjBN?=
 =?utf-8?B?RkJUeXh1Z1ZpMDh3ZW5WaUVZd0N2RlFvSDBCVGg1azk2b0lDMzVYaUFERXpo?=
 =?utf-8?B?NXBtaVZ5UG5tL2xzWmJ3em9TMU9HZkRUeDBKYzQwcTlxSW5WNnlORTJITFJ6?=
 =?utf-8?B?REQyQlVMMGJlcmlkckVTUzdSQnd5SDRVZXM3RDRxb0NBTys4cEVHR3lOZWF1?=
 =?utf-8?B?dXJRUE95Q1JHeEt5VVU4U3p4c29LTTVlTEFzQkdrZ0Y1Q1dHK2V1eUpjV2Vj?=
 =?utf-8?B?bjVPZ1FkRlRiTmxRUU1ERXNNdDVOV1A4eC9TSEE0NzdQbjJkUEhsYi95VElJ?=
 =?utf-8?B?a1czSEJmUGtEY1UrSWYzeG9aSUtXTzgrMHZrcUh3bUdTeGl1QmFaS2REdlpC?=
 =?utf-8?B?ZkRpbmhWN0U1TnE1Lyt0TWkxVlBEOXNiRmx3M1ZEdXdjVnowaDVnYWFZVmtR?=
 =?utf-8?B?ODRMNHJJYlJyaTFnbGVKa05DNHVjREh1Ylk0TGlDQWNDRVJKSEQwUTE0SUNm?=
 =?utf-8?B?S0taTWx0M0ZqdGF5S2FnYkhLanNkWUgzUmt6bGpWQU1paW9OYWt2aFJTeDRv?=
 =?utf-8?B?M2M5KzlDS1hBVWY2ZnJOZGd4SXVvWHQwaTE3UUFpbGFYWSsrVDZMOXk3aWZm?=
 =?utf-8?Q?HFWI=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <14C673AD95F73243B29275384E723915@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: bf75d1f0-0e3a-4fb4-ac1d-08dce814524e
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Oct 2024 03:41:55.7387
 (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: ok9pRiUYLrXDgIj9whW5hsccA0xCzEstmW5qhoG1PgXIHgMli7fZDwS6vIJgPjRgBcD/eIFRy83ocYo5nZOErA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5989

T24gMjAyNC8xMC85IDA4OjM2LCBNYXJlayBNYXJjenlrb3dza2ktR8OzcmVja2kgd3JvdGU6DQo+
IEhpLA0KPiANCj4gSXQgbG9va3MgbGlrZSB4ZW4tcHJpdmNtZCBub3cgZGVwZW5kcyBvbiB4ZW4t
cGNpYmFjaywgYW5kIHRoZSBsYXR0ZXINCj4gKGV4cGVjdGVkbHkpIGZhaWxzIHRvIGxvYWQgaW4g
ZG9tVSB3aXRoIC1FTk9ERVYuIEJ1dCB0aGF0IHByZXZlbnRzDQo+IGxvYWRpbmcgeGVuLXByaXZj
bWQgdG9vLiBBbmQgdGhhdCdzIGJhZC4NClNvcnJ5IGZvciBpbnRyb2R1Y2luZyB0aGF0IGFuZCB0
aGFuayB5b3UgZm9yIHJlcG9ydGluZyBpdC4NCg0KTWF5YmUgdGhhdCBkZXBlbmRlbmN5IGNhbiBi
ZSByZW1vdmVkLg0KSSB1c2VkIGl0IHRvIHBhc3MgdGhlIGNvbWJpbmF0aW9uIG9mIGNvbXBpbGF0
aW9uKENPTkZJR19YRU5fUFJJVkNNRD15ICYmIENPTkZJR19YRU5fUENJREVWX0JBQ0tFTkQ9bSku
DQpCdXQgZnJvbSBteSBwYXRjaCwgIklTX1JFQUNIQUJMRShDT05GSUdfWEVOX1BDSURFVl9CQUNL
RU5EKSIgaXMgZW5vdWdoLiBBbmQgSSBoYXZlIHRlc3RlZCBsb2NhbGx5IGp1c3Qgbm93Lg0KSnVl
cmdlbiBhbmQgU3RlZmFubywgd2hhdCdzIHlvdXIgb3Bpbmlvbj8NCg0KPiANCj4gVGhlIGRlcGVu
ZGVuY3kgbG9va3MgdG8gYmUgaW50cm9kdWNlZCBieSB0aGlzIGNvbW1pdDoNCj4gDQo+IGNvbW1p
dCAyZmFlNmJiN2JlMzIwMjcwODAxYjNjM2IwNDAxODliZDdkYWE4MDU2DQo+IEF1dGhvcjogSmlx
aWFuIENoZW4gPEppcWlhbi5DaGVuQGFtZC5jb20+DQo+IERhdGU6ICAgVHVlIFNlcCAyNCAxNDox
NDozNyAyMDI0ICswODAwDQo+IA0KPiAgICAgeGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbCB0
byBnZXQgZ3NpIGZyb20gZGV2DQo+ICAgICANCj4gICAgIE9uIFBWSCBkb20wLCB3aGVuIHBhc3N0
aHJvdWdoIGEgZGV2aWNlIHRvIGRvbVUsIFFFTVUgYW5kIHhsIHRvb2xzDQo+ICAgICB3YW50IHRv
IHVzZSBnc2kgbnVtYmVyIHRvIGRvIHBpcnEgbWFwcGluZywgc2VlIFFFTVUgY29kZQ0KPiAgICAg
eGVuX3B0X3JlYWxpemUtPnhjX3BoeXNkZXZfbWFwX3BpcnEsIGFuZCB4bCBjb2RlDQo+ICAgICBw
Y2lfYWRkX2RtX2RvbmUtPnhjX3BoeXNkZXZfbWFwX3BpcnEsIGJ1dCBpbiBjdXJyZW50IGNvZGVz
LCB0aGUgZ3NpDQo+ICAgICBudW1iZXIgaXMgZ290IGZyb20gZmlsZSAvc3lzL2J1cy9wY2kvZGV2
aWNlcy88c2JkZj4vaXJxLCB0aGF0IGlzDQo+ICAgICB3cm9uZywgYmVjYXVzZSBpcnEgaXMgbm90
IGVxdWFsIHdpdGggZ3NpLCB0aGV5IGFyZSBpbiBkaWZmZXJlbnQNCj4gICAgIHNwYWNlcywgc28g
cGlycSBtYXBwaW5nIGZhaWxzLg0KPiAgICAgQW5kIGluIGN1cnJlbnQgbGludXggY29kZXMsIHRo
ZXJlIGlzIG5vIG1ldGhvZCB0byBnZXQgZ3NpDQo+ICAgICBmb3IgdXNlcnNwYWNlLg0KPiAgICAg
DQo+ICAgICBGb3IgYWJvdmUgcHVycG9zZSwgcmVjb3JkIGdzaSBvZiBwY2lzdHViIGRldmljZXMg
d2hlbiBpbml0DQo+ICAgICBwY2lzdHViIGFuZCBhZGQgYSBuZXcgc3lzY2FsbCBpbnRvIHByaXZj
bWQgdG8gbGV0IHVzZXJzcGFjZQ0KPiAgICAgY2FuIGdldCBnc2kgd2hlbiB0aGV5IGhhdmUgYSBu
ZWVkLg0KPiAgICAgDQo+ICAgICBTaWduZWQtb2ZmLWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNo
ZW5AYW1kLmNvbT4NCj4gICAgIFNpZ25lZC1vZmYtYnk6IEh1YW5nIFJ1aSA8cmF5Lmh1YW5nQGFt
ZC5jb20+DQo+ICAgICBTaWduZWQtb2ZmLWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1k
LmNvbT4NCj4gICAgIFJldmlld2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5p
QGtlcm5lbC5vcmc+DQo+ICAgICBNZXNzYWdlLUlEOiA8MjAyNDA5MjQwNjE0MzcuMjYzNjc2Ni00
LUppcWlhbi5DaGVuQGFtZC5jb20+DQo+ICAgICBTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3Nz
IDxqZ3Jvc3NAc3VzZS5jb20+DQo+IA0KPiANCg0KLS0gDQpCZXN0IHJlZ2FyZHMsDQpKaXFpYW4g
Q2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 05:08:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 05:08:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813698.1226689 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syOvS-00068q-6I; Wed, 09 Oct 2024 05:07:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813698.1226689; Wed, 09 Oct 2024 05:07: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 1syOvS-00068j-3o; Wed, 09 Oct 2024 05:07:54 +0000
Received: by outflank-mailman (input) for mailman id 813698;
 Wed, 09 Oct 2024 05:07: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 1syOvR-00068Z-MH; Wed, 09 Oct 2024 05:07: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 1syOvR-0008TX-Jq; Wed, 09 Oct 2024 05:07: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 1syOvR-0003h9-9H; Wed, 09 Oct 2024 05:07:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syOvR-0007MS-8l; Wed, 09 Oct 2024 05:07: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=BXOEGpyKH8UMYmgsvt0Cl9Q+bRe1B2Xu2Ad5LG+92Mg=; b=6SdGmW7QyGv9E/9cukNoN3eAI5
	DFWHj9MhjjWL6ggUqg+2LQ/glEMuoSc7vxpYKDUZQGGXLs+1GJOYsNZybVjw8ARmWFbSb7MeswoYx
	FbRhQvpdquD60DT8dR4UteaIOWchlymN/MNk01l0Zcf1OZ4SNvkJWuMX1+j2V/nk35ZU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188020-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188020: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=06da7daab1eb129a1bf3eb93ed74c102d1587071
X-Osstest-Versions-That:
    ovmf=550c38a29961ab1c9cc4f9a17cdd3346566c4bef
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 05:07:53 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 06da7daab1eb129a1bf3eb93ed74c102d1587071
baseline version:
 ovmf                 550c38a29961ab1c9cc4f9a17cdd3346566c4bef

Last test of basis   188006  2024-10-08 03:05:52 Z    1 days
Testing same since   188020  2024-10-09 02:41:45 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    


------------------------------------------------------------
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
   550c38a299..06da7daab1  06da7daab1eb129a1bf3eb93ed74c102d1587071 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 05:52:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 05:52:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813706.1226699 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syPct-000613-Dg; Wed, 09 Oct 2024 05:52:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813706.1226699; Wed, 09 Oct 2024 05: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 1syPct-00060w-Ax; Wed, 09 Oct 2024 05:52:47 +0000
Received: by outflank-mailman (input) for mailman id 813706;
 Wed, 09 Oct 2024 05:52: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=DqEV=RF=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syPcs-00060q-Hq
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 05:52:46 +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 b431cf30-8602-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 07:52:44 +0200 (CEST)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-42cc43454d5so51511265e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 22:52:44 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430d70b4331sm8819965e9.36.2024.10.08.22.52.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 22:52:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b431cf30-8602-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728453164; x=1729057964; darn=lists.xenproject.org;
        h=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=TsQOfODHHlQU5eyeZ3cemrRZcoCIqaAuTYlchJlEMKY=;
        b=O+MKgnIxvTroQNczSTM7obb5UXrfFQVZG7K96D9GZqC3b92HNiXd/q7bYppBMwUUU1
         eyKgL9mImc9xftxLQWyV45O0j9iPkc0BKqXegDpTTf4x2z+v3YW0KVXL4PnjETakkgAj
         2AqE4PrHIhtV6HffPEheobsQqkYpbIVwpUQiXxpymfTaVb53YcXsiS9FGaW2dBPAYTFZ
         J3S72FMdqVJl8G3pXC8qH6irdlNqqjBHcUvMld+VNPgIQf31YFfdCnd88j+qpbANJ7+n
         6wps1ROZ8LGqxuppVa74O9sJQ5AHvvFHsIII1oaPX+uyfbF9//mD32uRlxwxa3rh3O7R
         lUuQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728453164; x=1729057964;
        h=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=TsQOfODHHlQU5eyeZ3cemrRZcoCIqaAuTYlchJlEMKY=;
        b=sXvKQpzRoa7Cioe6oGmS1lys/pUaJWKOOTYH67S1yVCsHoHm9EeGKQfXwOmIM7K2FV
         d1m5mdiKpv12zo63pXhHkoJ3vkVDC+8KyCukHKWe2rPSBJ7Ipt1XO8HAcMHihifAuo22
         4j1rwiBnw50p5MqZSPCL1n4TFAIfmWT4L4nD4687PfZjJpXlA59CjRCOKegDbBW3gp/I
         /CylUOhVgeAC9nNER8X7Lx3zvQDSZl+VFD2BxNxw+D4A0zfBqFG91KxvfH7h4IJShLTV
         Yo7LsKKBjsz6/1RKj5FUwsh8JYbKT5uGmN4yULldwIIKZi4Xx5+z+W6kD/uuQOBz+bff
         4gXw==
X-Gm-Message-State: AOJu0YwgqPC+p6Clh+QDVB8KWwNeDwfb6/J1VP+fohH4h31TxXZ0LV3Z
	JKIH6tJx2LnAuFF5WJejyznM2taGH/2EgmRDhyoawB5ONcIKAuH16xJk9j6Rehw=
X-Google-Smtp-Source: AGHT+IGu1jIlV7daEINHtbgCulKouILOFVjvB8LAGt09kj93iY42vqENlerO2mMOhrvp+EHx0ZchMA==
X-Received: by 2002:a05:600c:1f0d:b0:425:80d5:b8b2 with SMTP id 5b1f17b1804b1-430ccf4f894mr8919465e9.16.1728453163707;
        Tue, 08 Oct 2024 22:52:43 -0700 (PDT)
Message-ID: <be58ccad-157c-45ed-a513-dd64d74ded77@suse.com>
Date: Wed, 9 Oct 2024 07:52:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Linux 6.12-rc2: xen-privcmd cannot be loaded in domU anymore
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
References: <ZwXQKzubX9Dj_vhc@mail-itl>
 <BL1PR12MB58498966A7308B5CB6CBE86DE77F2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <BL1PR12MB58498966A7308B5CB6CBE86DE77F2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------iJu862XPNsD6yZD5Mxi0k7O5"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------iJu862XPNsD6yZD5Mxi0k7O5
Content-Type: multipart/mixed; boundary="------------cVF1wHqUxlnKCCKxHtp0vwSZ";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Message-ID: <be58ccad-157c-45ed-a513-dd64d74ded77@suse.com>
Subject: Re: Linux 6.12-rc2: xen-privcmd cannot be loaded in domU anymore
References: <ZwXQKzubX9Dj_vhc@mail-itl>
 <BL1PR12MB58498966A7308B5CB6CBE86DE77F2@BL1PR12MB5849.namprd12.prod.outlook.com>
In-Reply-To: <BL1PR12MB58498966A7308B5CB6CBE86DE77F2@BL1PR12MB5849.namprd12.prod.outlook.com>

--------------cVF1wHqUxlnKCCKxHtp0vwSZ
Content-Type: multipart/mixed; boundary="------------lTbdyacaX0oSkIBFaTQc1QXx"

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

T24gMDkuMTAuMjQgMDU6NDEsIENoZW4sIEppcWlhbiB3cm90ZToNCj4gT24gMjAyNC8xMC85
IDA4OjM2LCBNYXJlayBNYXJjenlrb3dza2ktR8OzcmVja2kgd3JvdGU6DQo+PiBIaSwNCj4+
DQo+PiBJdCBsb29rcyBsaWtlIHhlbi1wcml2Y21kIG5vdyBkZXBlbmRzIG9uIHhlbi1wY2li
YWNrLCBhbmQgdGhlIGxhdHRlcg0KPj4gKGV4cGVjdGVkbHkpIGZhaWxzIHRvIGxvYWQgaW4g
ZG9tVSB3aXRoIC1FTk9ERVYuIEJ1dCB0aGF0IHByZXZlbnRzDQo+PiBsb2FkaW5nIHhlbi1w
cml2Y21kIHRvby4gQW5kIHRoYXQncyBiYWQuDQo+IFNvcnJ5IGZvciBpbnRyb2R1Y2luZyB0
aGF0IGFuZCB0aGFuayB5b3UgZm9yIHJlcG9ydGluZyBpdC4NCj4gDQo+IE1heWJlIHRoYXQg
ZGVwZW5kZW5jeSBjYW4gYmUgcmVtb3ZlZC4NCj4gSSB1c2VkIGl0IHRvIHBhc3MgdGhlIGNv
bWJpbmF0aW9uIG9mIGNvbXBpbGF0aW9uKENPTkZJR19YRU5fUFJJVkNNRD15ICYmIENPTkZJ
R19YRU5fUENJREVWX0JBQ0tFTkQ9bSkuDQo+IEJ1dCBmcm9tIG15IHBhdGNoLCAiSVNfUkVB
Q0hBQkxFKENPTkZJR19YRU5fUENJREVWX0JBQ0tFTkQpIiBpcyBlbm91Z2guIEFuZCBJIGhh
dmUgdGVzdGVkIGxvY2FsbHkganVzdCBub3cuDQo+IEp1ZXJnZW4gYW5kIFN0ZWZhbm8sIHdo
YXQncyB5b3VyIG9waW5pb24/DQoNClBsZWFzZSBzZW5kIGEgcGF0Y2guIDotKQ0KDQoNCkp1
ZXJnZW4NCg0K
--------------lTbdyacaX0oSkIBFaTQc1QXx
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------lTbdyacaX0oSkIBFaTQc1QXx--

--------------cVF1wHqUxlnKCCKxHtp0vwSZ--

--------------iJu862XPNsD6yZD5Mxi0k7O5
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/Ey8FAmcGGioFAwAAAAAACgkQsN6d1ii/Ey/F
Egf/TOthEStmJuqBb7RSuBrm28miKlFNFEtV2DeQaQ6XM+x3Lh2sB2hebZi9UeFjZfgQnKwJyUOz
6TJ/Bt/Vm7ZesqDaHuA9ZhAjtnbJ87PLaj318exAwFfLgtj1UrIFFTXGSGyKraRM97OC5zMBwBNP
V/jZKVy96Lr8nfEehlhGlpl3GVStxSufABtRZr4upQuskqMJow1WU2ry8J0CDz98IcJKskSQ1shv
KX45K8moiM2H85fCicauN7gMcBeUA9ksALVmq6d6sB6R0R/VLtZ7hH+9tZNnciBPx/CKZ6fXrZfx
4BcHRApfnL7SVz8s3+GhkMNg1EQG/4aHfowax9HbTQ==
=Kr7u
-----END PGP SIGNATURE-----

--------------iJu862XPNsD6yZD5Mxi0k7O5--


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 06:05:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 06:05:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813713.1226713 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syPof-0008OF-Ek; Wed, 09 Oct 2024 06:04:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813713.1226713; Wed, 09 Oct 2024 06: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 1syPof-0008O8-Bx; Wed, 09 Oct 2024 06:04:57 +0000
Received: by outflank-mailman (input) for mailman id 813713;
 Wed, 09 Oct 2024 06:04: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syPoe-0008O0-CK
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 06:04:56 +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 67ab57c2-8604-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 08:04:54 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-53991d05416so7927455e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 23:04:54 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9932bf8a90sm586454666b.50.2024.10.08.23.04.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 23:04:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 67ab57c2-8604-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728453894; x=1729058694; 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=PrO/QgbrZZYKdSjC4/lueqd1/9gc7/MRu11WEWB1DTw=;
        b=VZwEXSg8h6PDqIL0PBV7ealfYPr51/ArJ59r80e2RU/N2egIstwL4cRUzHT+Qgm00P
         FNfZcEwKcW4SbuP2JDgFIhSanjz3cVJ6SakJLASTFaMXAA56pSqXpZozabysqxLyheHY
         PfnlN9sVx4pn7ZZRxf2AsGNntXqmvB9hQ85N3GzikqUbU2DvRtvWXRpAVVJP9m5mqHrB
         irA8TsoTnd2RfNNC8ULC40iBq4N9qGg3BnVkg8hVYs9a7JbzXtwl1Wi4bp7jK7Fud4nu
         1SioexvygLcSvO9CMgrZAv0qrE82UHHUUC006jtkU2ZTBfbGasFIZVy6tw64py/mqotT
         VDAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728453894; x=1729058694;
        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=PrO/QgbrZZYKdSjC4/lueqd1/9gc7/MRu11WEWB1DTw=;
        b=lrrt4oHJioEKgx0YsPBLJa1EoyfA+2iUWc3HhJh8G4pM9EKgVJazXrt60xMUYXa1j9
         5q/b02IKSkNKbKgKJq/jYi3NfmFL2twow9zkeLfmuBldAozaKxjoDkJ2Vq2OquC/hDoO
         +FKLg74EdY36ZTi9rSIT5jH29DFSgICXDjUCj6O5bEjrwQqJNhw+XgNMju74XEvBJ6MD
         iycNrkA3jgw8xC8GORfHOpilIL4wf+mW5VyjQ/FMR6oURjtAERf/SuhX3XFwA46/pSoW
         yRU6t8sCrfJBQR8YORvMSASjWvf3aIoFDxJaKt1mubPfWzBHS58Aieiw7qAZPBb3l6H2
         wb5A==
X-Forwarded-Encrypted: i=1; AJvYcCUzE1f/9/f51IHs2hjGv0ZZifNWik1SGBXWFh07Y8Z8ijtm6ryI2tjcbqJsDMfsGNRo4nEXWQAi6es=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywb+F8thrflMubE2zu0L4ytacBHElX9sqQKDpNauFWSFH1Q/mDe
	taeqoCXD4YimX1rr/W34CdmXmQmyWKMKu3Wlgx9SO6fPpdnZs9y6OU91Xo1X9Q==
X-Google-Smtp-Source: AGHT+IGo2RHvI3LJo2FFXF+fBcMSGmiFZhqnROqYAfNPulvDcLeXnKLcCLf0qbrcUBWzFpTDLZ3d3Q==
X-Received: by 2002:a05:6512:1155:b0:530:b773:b4ce with SMTP id 2adb3069b0e04-539c48e455emr888966e87.33.1728453894375;
        Tue, 08 Oct 2024 23:04:54 -0700 (PDT)
Message-ID: <7f3229e9-43c1-48f7-9921-ce826c7c19c0@suse.com>
Date: Wed, 9 Oct 2024 08:04:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: restore semicolon after explicit DS prefix
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cdf93d64-dcc0-4e01-88fe-71145ffff1ff@suse.com>
 <8f85c4d2-805b-43ed-926e-732382b7e6b9@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: <8f85c4d2-805b-43ed-926e-732382b7e6b9@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.10.2024 18:37, Andrew Cooper wrote:
> On 08/10/2024 5:00 pm, Jan Beulich wrote:
>> It's not unnecessary (as the earlier commit claimed): The integrated
>> assembler of Clang up to 11 complains about an "invalid operand for
>> instruction".
>>
>> Fixes: b42cf31d1165 ("x86: use alternative_input() in cache_flush()")
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/arch/x86/flushtlb.c
>> +++ b/xen/arch/x86/flushtlb.c
>> @@ -286,7 +286,7 @@ void cache_flush(const void *addr, unsig
>>           * + prefix than a clflush + nop, and hence the prefix is added instead
>>           * of letting the alternative framework fill the gap by appending nops.
>>           */
>> -        alternative_input("ds clflush %[p]",
>> +        alternative_input("ds; clflush %[p]",
> 
> /* Clang-IAS < 12 needs the semicolon */  which can probably fit on the
> end of the line.

I've made it "Semicolon for Clang-IAS < 12" to actually fit on the line.

I wonder whether I can take the reply as "ack with that change"?

> Or we stop supporting such old versions of Clang/LLVM.

As indicated in reply to Roger's proposal, that would leave me without
any way to test with at least some Clang versions (unless I got into the
business of also building my own Clang binaries). IOW - I could live
with such a move, but I'd prefer us not to be overly aggressive there.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 06:20:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 06:20:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813720.1226723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syQ3s-0003xK-HO; Wed, 09 Oct 2024 06:20:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813720.1226723; Wed, 09 Oct 2024 06:20: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 1syQ3s-0003xD-Ei; Wed, 09 Oct 2024 06:20:40 +0000
Received: by outflank-mailman (input) for mailman id 813720;
 Wed, 09 Oct 2024 06:20: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=S3in=RF=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1syQ3q-0003x7-Sw
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 06:20:38 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20613.outbound.protection.outlook.com
 [2a01:111:f403:2407::613])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 986a5f06-8606-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 08:20:36 +0200 (CEST)
Received: from BN0PR04CA0167.namprd04.prod.outlook.com (2603:10b6:408:eb::22)
 by PH8PR12MB6771.namprd12.prod.outlook.com (2603:10b6:510:1c6::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Wed, 9 Oct
 2024 06:20:31 +0000
Received: from BN3PEPF0000B076.namprd04.prod.outlook.com
 (2603:10b6:408:eb:cafe::b7) by BN0PR04CA0167.outlook.office365.com
 (2603:10b6:408:eb::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Wed, 9 Oct 2024 06:20:30 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN3PEPF0000B076.mail.protection.outlook.com (10.167.243.121) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Wed, 9 Oct 2024 06:20:30 +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.39; Wed, 9 Oct
 2024 01:20:28 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 986a5f06-8606-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=fKTvV/1dO0m1iPGJx+mNVODBohrDe48UNfC6jk6GyxWQTdn38WJIT/nY1Gol1v0EccsHkk/V3vNZn5oIHDSr8ktpK6Zq71Nv9GNYmk5tsmG9k1r3+d7fci3h9rT1bVUNrajI7ARgL6q60sMAqP2K53ZbGi6mKb3U6+oHDFNkm9bFTiObBLpjv+zAeYcblClivbazCog09nlcxl8CsDewKo9ewD3BYxLwb7qnwUJr3TRn038NOQRJp/1hoGAb2N6abqmreNuspcVXByfNUGsZ8/6PbZ4pSSd2xIOL87YRATc1Lv1hBxAsjIpWyBblJxmkoFwXEU+3DQKKjMZhqzmLXQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=wbUUwHXSmTEdrAWnt67HmJWp9YZgE7Rew0BueWiYcJI=;
 b=ckmrLU7ZmuuRygUKVtlu1gr0A07I66GPt5vBkmrkuoW3uPYcJrjKilx98fu2Y2nKt/TrcnxWoKq0Zh/odNkz98hdIsI1cP+k7CTtiixYSP+ZfSzJZMId7RcIcjAOMMj2FI9xxKtoEeJ7G2moBFcV1ywgaR4Q5XWQponuoG/ufIWv2ogxI89VGDWSbTP1eiVY/N1c0hjjp133qmnqPMtLaRoVLdJy9I7AwniEqPV+6L89v90H8MLjtDLokYiGDh7Nu8Q7MeA3UPsYaL6mDKRsir68ELJk3Uyp5ndO8DPBrhBRdq4aEawM29G8IEtrNv+AQOWm0gzeGCY6R9u5hP26wQ==
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=wbUUwHXSmTEdrAWnt67HmJWp9YZgE7Rew0BueWiYcJI=;
 b=Zpyi+sQBX7W8oCK+tYVxWEmYCuOgk2ryY1U+IDixSJ75Sa6C2xe5M0zfVIokNo7+paoCc87W9AD6+TV+B3466AeKlW0BF9Ff6JTA63nvhsqlCKnxFAi/9rI7CLSJdVNjEjrDGBADUdfbQf8GlEln12lEbYjiL5AvAFwDb48THAw=
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>
CC: <xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>, "Jiqian
 Chen" <Jiqian.Chen@amd.com>
Subject: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
Date: Wed, 9 Oct 2024 14:20:14 +0800
Message-ID: <20241009062014.407310-1-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
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: BN3PEPF0000B076:EE_|PH8PR12MB6771:EE_
X-MS-Office365-Filtering-Correlation-Id: cb681f3e-52c7-4b4e-c8e9-08dce82a79a3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?G4r6HOPec4sxWbfDeksrwjsAY9XvU1onbeqn7Hs3PoqUfG3n3GncUNRisk1C?=
 =?us-ascii?Q?WekCEMAZZXifxkgO9t+jO1V1Qu4IQcfKQWg1JwKJDo3mQwN0v+9k/Pzhu+q/?=
 =?us-ascii?Q?7WgwXotG/HNYkGK/NQVVMG3BZAGE8HADwN2+KpwOovbaZyStbIaJyjguY9Ot?=
 =?us-ascii?Q?y68rFJpL1jXh9hERp41HZlNNofmU6mCLjUJbGHpXv+J/ZEe32zV3L4oZHu5B?=
 =?us-ascii?Q?K33ERIrc+uE6ZwLdQt/DMebppPL+/ybh4IJDhqmK1caK+MhHBWPJP6zOu3lD?=
 =?us-ascii?Q?7m+RDA7xSmy28E5gI2EL+qlPQSjMYLqrZyqA1XEQspC/vrIe3iw3HKxzeRdH?=
 =?us-ascii?Q?hHzU7/2m1GYNaUO+Pib0kPx0Uw1tElQ4Hb+FfW8+5y4XaRorpmojRVGqGqE/?=
 =?us-ascii?Q?mFsUU/Kw5ge5F2be567vKfPRhuR+k3giRkDZ7kO6jyQc0aUP6tDPg9n3F8Xg?=
 =?us-ascii?Q?sPQjsAH/SVCoenEshzB9bzyPV0l79+7/27KK6TcPBxKJwL+DyRAmkjtoD5Xa?=
 =?us-ascii?Q?e1RtNvTvqSbvtkTkaC77dY8bXKbcmFSufAZmPZC9xDCQBltn3m+BMeGUpEak?=
 =?us-ascii?Q?bCGrFslSD0fziBntlkjo+Q8eV3mOaBc9eVmyP43717Kc27HWaEAqnT1AdHd0?=
 =?us-ascii?Q?AR17o0tUxGlbsZ/oHukd047/sRh0AmKYO+UyaCirwuS2BLVQNFAdreXU+ufa?=
 =?us-ascii?Q?DnEwGZCJ9ivS9N8KTIspjARYFdDt8ZuXE2j5O7P2tfixchCFMr3M7eK1pSEW?=
 =?us-ascii?Q?OCXG7717/3Sg2WNmxtmYRfdBEnJGGHG74vJn0GhuZHyuCvbM7Ky7Kv/Wa/Mp?=
 =?us-ascii?Q?VjYNwzuaZakaftsCr6jIqAxM6++he8DpWE10oTBdLDSr/gnb0fp9eW3+bmaW?=
 =?us-ascii?Q?cq4qBX7CuqbLbglSBH98wqq6r/LEgrfff9kf0OYw7THjG3J6x0c55+8Tu/ym?=
 =?us-ascii?Q?uc6xyVIxFzD3yYhIwPXN08nTUjmSr3ZI4ibxtPx+L9Sp4EQqYFLJP2JOnelM?=
 =?us-ascii?Q?oFB6uxTGYr4z+9CWaMksZSZZL7hYNRuPkKVp3B/2ZiaVQDGBtWXGQJJBi3lb?=
 =?us-ascii?Q?d3667PkK3W2n0DbWCBcxduybVs0B3Wv2KOyVrt2bseBySlijZorXcF9EOG/L?=
 =?us-ascii?Q?AcmlON2l6pvrdxEKpgvfhdW12m7LHVizvD0lpKMP9s6gUTBbQFTkbzvmzTi4?=
 =?us-ascii?Q?xz8rbEEiPVkyR8uU0n8rruv5J1AyDznE1aPDK9SVq2ib3xhQa6j6FJ7D5EuA?=
 =?us-ascii?Q?hM4/5UYLKCvDP9RcDTsv9IKJyuY7t08+WkrC4D2gY0pyiT3WAY5n5u0fmug2?=
 =?us-ascii?Q?JzBV/FABe1bu6BsH1vsXl5Gj/14nDsl4KkeqwbMESQO89zmVAcyDuZ0Csn6T?=
 =?us-ascii?Q?+4EK7emuxYCQnthtKDeq4xz73KTw?=
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:(13230040)(36860700013)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 06:20:30.6190
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cb681f3e-52c7-4b4e-c8e9-08dce82a79a3
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:
	BN3PEPF0000B076.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB6771

Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
adds a weak reverse dependency to the config XEN_PRIVCMD definition, its
purpose is to pass the combination of compilation that CONFIG_XEN_PRIVCMD=y
and CONFIG_XEN_PCIDEV_BACKEND=m, because in that combination, xen-pciback
is compiled as a module but xen-privcmd is built-in, so xen-privcmd can't
find the implementation of pcistub_get_gsi_from_sbdf.

But that dependency causes xen-privcmd can't be loaded on domU, because
dependent xen-pciback is always not be loaded successfully on domU.

To solve above problem and cover original commit's requirement, just remove
that dependency, because the code "IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND)"
of original commit is enough to meet the requirement.

Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 drivers/xen/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
index 72ddee4c1544..f7d6f47971fd 100644
--- a/drivers/xen/Kconfig
+++ b/drivers/xen/Kconfig
@@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
 config XEN_PRIVCMD
 	tristate "Xen hypercall passthrough driver"
 	depends on XEN
-	imply XEN_PCIDEV_BACKEND
 	default m
 	help
 	  The hypercall passthrough driver allows privileged user programs to
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 06:30:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 06:30:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813730.1226733 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syQDm-0006My-Gy; Wed, 09 Oct 2024 06:30:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813730.1226733; Wed, 09 Oct 2024 06: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 1syQDm-0006Mr-Dh; Wed, 09 Oct 2024 06:30:54 +0000
Received: by outflank-mailman (input) for mailman id 813730;
 Wed, 09 Oct 2024 06:30: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=iX4b=RF=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1syQDl-0006Mk-8K
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 06:30:53 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on20608.outbound.protection.outlook.com
 [2a01:111:f403:2612::608])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 06daf71d-8608-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 08:30:50 +0200 (CEST)
Received: from DU7P191CA0028.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:54e::19)
 by PAVPR08MB8966.eurprd08.prod.outlook.com (2603:10a6:102:320::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Wed, 9 Oct
 2024 06:30:45 +0000
Received: from DU2PEPF0001E9C3.eurprd03.prod.outlook.com
 (2603:10a6:10:54e:cafe::dd) by DU7P191CA0028.outlook.office365.com
 (2603:10a6:10:54e::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Wed, 9 Oct 2024 06:30:45 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU2PEPF0001E9C3.mail.protection.outlook.com (10.167.8.72) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8048.13 via
 Frontend Transport; Wed, 9 Oct 2024 06:30:44 +0000
Received: ("Tessian outbound 5b65fbeb7e07:v473");
 Wed, 09 Oct 2024 06:30:44 +0000
Received: from L7f3acd0c8531.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 A43E45A7-599B-4752-AA24-6ED8D3969550.1; 
 Wed, 09 Oct 2024 06:30:37 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L7f3acd0c8531.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 09 Oct 2024 06:30:37 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by PAVPR08MB9650.eurprd08.prod.outlook.com (2603:10a6:102:31a::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Wed, 9 Oct
 2024 06:30:35 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8026.020; Wed, 9 Oct 2024
 06:30: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: 06daf71d-8608-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=DUJ21tVeEKY66hehC6BAMt91K/ivQybZmNno1Y+KiYAJyEy0UcMKTEhJmw18Y19GyIzTYHD5YwRnVjcBFIi4DYM5oCE9C+dp9V7DXdqpZc/es4Czh75ef88GzVZZIAMSbqmJsq7X3oL+z2Djh3gethmltY70R6/m9E2oD0//qg7u3SlmCTgzZp1FkwWqFtvYw1dgrnI3K7oJj7o154qmskPoCtCwdi+3dfn3pBYTNVKSznFajWfHCtJRf6YOZ/5br/LLu6kGscZDMnKbB7jB6qD3ZXf9MWr2IRvjIxHbCS8jYZjoYfr+iyPUXJFkJk3Q0Bga/+YzBmbtZYwLotNmiA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=2jjOBoe08g172RTOq8qQzl8U3fRLENgwbGpi1qIk4A8=;
 b=N/UUcdJIHKl9GayXng3l2neaKNFoBthei0plS15ZRAMpFrJB/OTcx6vf5c3yzcp98qMgfiqxoMx4NzFYLbdqDmqfW7ORsdoaWHr1PLJFjc3nlmBt2GF6gTYhkt9b6LiOK9/3UEAlyfyOx0q7K4GPZ2XKnm/PG32vlw0nzb6RWQeeCrvHwoien5ctAzRcFu1kt+qKBUmbtkXHj0s4+DZobDJ9BqQzXw7vy9Fvw+VEPM23KWYRQjbgTm+FvnaJAHWHHo7oQ1gGEM+VtyPkXg/pyQZEpKLT6y4C4iYjY8RGR/XToAC9R2tvdZRleOJHJWQu9UPI7bNLdIFIn99rske/Eg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2jjOBoe08g172RTOq8qQzl8U3fRLENgwbGpi1qIk4A8=;
 b=M8YqcQgcwznz5lUGL+WSp+oXmHUAZtOfkDOKe44J9YxtlxM0fW0ZdERQUjoveVUMksaWeg4L3x6Wo++h0QYRPftvP/AdPoCZQrMKNc8JmRm5MbqpBzSDsyods+KEjmcHxQzpir/ajfBW1ww6PY17nLi3TgMhy3PaalAjc5FECVw=
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=arm.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: 88f0bf80d3a1099e
X-TessianGatewayMetadata: p4oC3JcSi9KxnzWhc65Z9EE2fFzx9e2m82b6RX2qPc9I2M/zbg9KaplT0i4l7aeNrL6Urdhb7EyzuVbjXZ8S2hMB6obvglCwVAN37OqGO8eUHvmW4J/vpkRrBUBlf1eLId0qurXdz5PboJ//T8K1Uv0rNlC1+fEEv4yWI8/UE/M=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=quk/ppwHa5JcgqkB79Wf8v9JnQUSbyN4tbqEBnoDddK1vIroz8I9vww9hf5nxFeLKejwxTLY1GVBh/OiKHSO0WUflg2gCmwGh9L5b74brKTmwbhOlsKWVFK5Q2riX8cLeTe3zmDO33tbpKMPFEpRYLao0G7N0xJO1K7N09CpWQ1w3mW6E5zfMZhalYIqSmVjZglHRiqmY62cnDteWs6u50bk3U8A0OF/UDYpb4w0aekTAW3SIH591yCWJ6IJDk/Zgw4CwVPtIilM1U1/2+zFBfVrHBgzP6Eh+vsgjv1/bWViUBKF4SzOoP3RX5zDU6CMpMbGgoPRUY4OFpIotFlyZA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=2jjOBoe08g172RTOq8qQzl8U3fRLENgwbGpi1qIk4A8=;
 b=UlSdVtBr2NqjykKypdonYf6ohXpnV3gx1pvNuLHm4Vjfs0oLVhFWdXHUjhBbyvqo5MfFG6B/lvgW5rgkRMbqtp2eRJMuilDbW7xpizAAEcZGNXrxAI/y8sX0pmjIF+pD9yKpdlr37/OvpC6yFEq4qWPBucTW2gHApHckOF9muDZtu/90R35u3Nld1fdd9jwYlYP4W0R6XIb0R7i0hXdniPYDAGFuIOIqFotSzB4V+kIEjI8ksktHcQnV+h7ANJFj7bfdhQ6+ofcvu7aMqeFMpwlHeprhydLKAFYAu3jN8aoDpuE/oRwRQz8Try/2v9hUOYzlEfKxFfcV9m7SiWSjpw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2jjOBoe08g172RTOq8qQzl8U3fRLENgwbGpi1qIk4A8=;
 b=M8YqcQgcwznz5lUGL+WSp+oXmHUAZtOfkDOKe44J9YxtlxM0fW0ZdERQUjoveVUMksaWeg4L3x6Wo++h0QYRPftvP/AdPoCZQrMKNc8JmRm5MbqpBzSDsyods+KEjmcHxQzpir/ajfBW1ww6PY17nLi3TgMhy3PaalAjc5FECVw=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Stefano Stabellini <sstabellini@kernel.org>
CC: Oleksandr Tyshchenko <olekstysh@gmail.com>, Xen-devel
	<xen-devel@lists.xenproject.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Michal Orzel <michal.orzel@amd.com>, Ayan
 Kumar Halder <ayan.kumar.halder@amd.com>, Artem Mygaiev
	<artem_mygaiev@epam.com>, Hisao Munakata <hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Topic: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Index: AQHbGOqFqldnvX8xNEmI4LnFnImSpbJ8YaSAgADTLwCAAEEygIAAgZcA
Date: Wed, 9 Oct 2024 06:30:34 +0000
Message-ID: <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
In-Reply-To:
 <alpine.DEB.2.22.394.2410081523292.12382@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|PAVPR08MB9650:EE_|DU2PEPF0001E9C3:EE_|PAVPR08MB8966:EE_
X-MS-Office365-Filtering-Correlation-Id: f68991fa-276b-4fb2-37fb-08dce82be793
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?o8TnxBKRbH2UUUMOgHQ6pj1yh8RK834ZXWy20Cjvy6TWCwkjkpdACw0IPg12?=
 =?us-ascii?Q?E8Az1z1t1HP8Tp3V+L0TQujwBmZQta5jz2IKxP1Q+DzSZNu5JgSGB8wtv+41?=
 =?us-ascii?Q?BADdeKUSD/gEUQ86zI1b98HcZlZEKcLOwxc4JxNrAfHwFk23b0XMdJmuYxHX?=
 =?us-ascii?Q?YBPke6wNJkU1FOVIpdtBO8mF1CNAUvEopGtJOg7rVgZLR1tzwge/AzvD7gWN?=
 =?us-ascii?Q?1lWzGb4alOXNncLYxAtGfS3kxRUdheDItw007uUqaAEog7jUCq6eocLKdsjK?=
 =?us-ascii?Q?MY0wGd+7970Hf/XPrwkh4m5MPwhZDEX0ax2FxHmyrugXCc7pYEgP8/LK/ZIG?=
 =?us-ascii?Q?Vrwani5X6zReBbuPfY5BLHh3pBL+OUCf/qhKZV2KXXrECKebHFg/D65uGLt4?=
 =?us-ascii?Q?vCrkhFqXCngthJQTe1z0F6R7YxIeLgHpfdcxMWE80pYwhqOoKdv4c9w1wbzd?=
 =?us-ascii?Q?f9k1i/2Nh7uD6AjUhjtrH4T8uvKnxet/FKQixbyHTMDW3pu8Yu+r6hDE91Rg?=
 =?us-ascii?Q?1fKhaQ0dZi5F8H7kh8v2vLDvkyejzttgs930ncCE9eTcShSK6fSiOUhLKIKh?=
 =?us-ascii?Q?KDxjh4OXZetb47RIZGnXpYa3err4xwXqAUzbhDoG32btcacefmZ5ouzQQVY/?=
 =?us-ascii?Q?cy0jFBYLTPXOTsyf+N+P9zvImPaTs+HkRidnDh4RbBI43JwxDXo2BXJGhTHa?=
 =?us-ascii?Q?eTOfhDICxMopnejMr79P5mw0Xa4K1LkD/3vxE3vMAyz9RxBEvvmCQnKK7qhj?=
 =?us-ascii?Q?FR0SsovIH+t2g0/j2CqqJAfKFx1qIFGSjw+q4t2H9bNgUcuaGt8XuRIn8hGq?=
 =?us-ascii?Q?37abOZYpibpy6fZo2mAF3e0RqZY85HYiMMy6Gqw6DNz8bI/2RkQFcaT2xUNR?=
 =?us-ascii?Q?lvytj58oak+jRZjaCSCIzZ+R61lEEsO4gxA41vN9y+KkcFk0aS2KuGMa/wyI?=
 =?us-ascii?Q?NdLLATd6ZO4CQKk238RFy7wFLHhTLHdDXrNVXOytxvDBVeFhps3vssuA8e3H?=
 =?us-ascii?Q?BuZfx4MHq/Pc5JcVOiN9niNgfPSCSWOGTbNg/4XsQDUolX+Jhi7VxHTGz6/r?=
 =?us-ascii?Q?v2+LbVYe5vFQPayg9kky/JBji//PKqcqlF6oRPjT0cebUsincIRiHtO9+Gvo?=
 =?us-ascii?Q?suJdi5n62oz3PBHZ+N3yxL08K7SmXyQiJFOeI/eSanpjr5aZNq22eqsS3bDe?=
 =?us-ascii?Q?le7zYtiJQlNNMqireg5B4PF0iTEGsQqwUtPQR88JxgiRXTAB7S5Lf1fXmcdh?=
 =?us-ascii?Q?zeU/mJqp7zG831msUNXlZWR3soMoCfavs4x2wcmaGA=3D=3D?=
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:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <0DF0C4549BD677469C1AC23680E02BE3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9650
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF0001E9C3.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	c7b43425-ae9a-4fda-626d-08dce82be1bc
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|35042699022|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?4ldqqS6q8k2A9ebrwVPoPsusIc/B/UA5cJNC5Nqf4oa4BBdg5ht+eQBbGGV/?=
 =?us-ascii?Q?k4om1NWF9WoGAF3Dpo9HSjsnASHLv1FoXtw3cSTq4khvv0YQsThauhNgA/5u?=
 =?us-ascii?Q?7Eu/+sTkNkUFpqFB24Kro3EADwqQfyD5V4sD74A94ik2fdPROgF/iSZaQkK4?=
 =?us-ascii?Q?ycJE0yiL2mZRZcgsQwXgtyOBun69m6WV7bXKzI8fDFEbKC8SG3iQ4lVl2KkJ?=
 =?us-ascii?Q?GLrux5ko/nKD3twEoWomnl2L7k0L5SYcRBs9tfi94QCUcDvbExjHi232de8r?=
 =?us-ascii?Q?ttPwLjG7DRMbbNw2wa9Ymgr8agyEsULa74M51uQfOR1GNyUHPdgfVADdgAp/?=
 =?us-ascii?Q?GtUQ9xWWzo/5JCC1jc8kUmH8zG42473CwVnL+Ox5eC4rYdPx09nm5xZAhkEL?=
 =?us-ascii?Q?QK0sdrJXsOk2prvh4UEv1sQ8HJvs1DAaeZAa5lniiRvW/BU1oPl0IEvEmDZ3?=
 =?us-ascii?Q?MKaJRSsw2NUnMwkMfBZ5JnDIdXsXOxXQ0pyU/2v2GQWBR+lP0XaYrLAy0Edy?=
 =?us-ascii?Q?wZ3R0t+mDVVvZgRuPfwLcfuWRl6zW3rKQAgwc1Ngb1x3GljdBrWzLt9TszOm?=
 =?us-ascii?Q?mnFqUcwLaFajMnEb5KhR6cM+aDNw95sYsqr6ns+lIwGwmnbx2sbsHpwwzh2F?=
 =?us-ascii?Q?TgeTncx0oTAcwdgi7gEAiohaOTWhDn+BU5KZvIJALOPl+4Pm3j/s78jnTbxd?=
 =?us-ascii?Q?x19wTCwZyBs6PVcLHtAEuIrZ/vKJxmz5W6jxaNauifzro1c8WhxMRuhhPzuJ?=
 =?us-ascii?Q?3SRAmL2HNGCO9jhqBvf3VpzOQowstSO0GdgswUCKIC1Rgws0YPKsl5JAZWrQ?=
 =?us-ascii?Q?vnRrkAlATwaQ2/VJydElhLMFHsRD3zzNlxttzf3AEK8aO/iE5F/C3GAPJVeY?=
 =?us-ascii?Q?PJ2OMpyHq7GmBcm8+GTOUsdbsIsU45hiYlG2sXTYTz9Af01KSV0mWuMv2gBc?=
 =?us-ascii?Q?EaIvWRJ5wGXPchaYcNZibWipSLuW4wKGEfFXtW6NJCvF4lPPIeYIS+8IEr/Q?=
 =?us-ascii?Q?J1GdztHEGxnPNqE5S0X7hfdSkxQDq3Pcvs2SD2K0Ge8CITgoVJk5rpvaI1HB?=
 =?us-ascii?Q?VYwf0nDpupUs2b1/DlhaXNQUDx3iZjAtUB1FbuIxbzq5zGrfucH2XtBalwnN?=
 =?us-ascii?Q?sXjj80oXbCIAQXPuDsGYQpmViNuEUoraPEhgr1sDB/6CjnCBO4B7T0RxgeSL?=
 =?us-ascii?Q?6EyJmHYmBRAOGbN67zrk3q2gEEb5EPMoZBwC5NwWFMjPDyr3b3UQnq15lzFT?=
 =?us-ascii?Q?kdtK6PsuUnuw+D4nM0fasC3bIqWZpvOWrVi54I0oN/EzAxm5s/ux0ouEoY3a?=
 =?us-ascii?Q?NVnXRaMAoBVbkLj+M4b0Y7wU?=
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:(13230040)(376014)(1800799024)(36860700013)(35042699022)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 06:30:44.6034
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f68991fa-276b-4fb2-37fb-08dce82be793
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:
	DU2PEPF0001E9C3.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB8966

Hi Stefano,

> On 9 Oct 2024, at 00:46, Stefano Stabellini <sstabellini@kernel.org> wrot=
e:
>=20
> On Tue, 8 Oct 2024, Oleksandr Tyshchenko wrote:
>>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wr=
ote:
>>>>=20
>>>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>=20
>>>> Add common requirements for a physical device assignment to Arm64
>>>> and AMD64 PVH domains.
>>>>=20
>>>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>> ---
>>>> Based on:
>>>> [PATCH] docs: fusa: Replace VM with domain
>>>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.=
com/
>>>> ---
>>>> ---
>>>> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>>>> docs/fusa/reqs/index.rst                      |   1 +
>>>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>>> 4 files changed, 428 insertions(+)
>>>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>>>=20
>>>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> new file mode 100644
>>>> index 0000000000..a1d6676f65
>>>> --- /dev/null
>>>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> @@ -0,0 +1,365 @@
>>>> +.. SPDX-License-Identifier: CC-BY-4.0
>>>> +
>>>> +Device Passthrough
>>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>> +
>>>> +The following are the requirements related to a physical device
>>>> assignment
>>>> +[1], [2] to Arm64 and AMD64 PVH domains.
>>>> +
>>>> +Requirements for both Arm64 and AMD64 PVH
>>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>> +
>>>> +Hide IOMMU from a domain
>>>> +------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>>>> +
>>>> +Description:
>>>> +Xen shall not expose the IOMMU device to the domain even if I/O
>>>> virtualization
>>>> +is disabled. The IOMMU shall be under hypervisor control only.
>>>> +
>>>> +Rationale:
>>>=20
>>> I think there should be a rationale here to explain why we do not want =
the
>>> IOMMU
>>> in particular to be assigned to a domain.
>>=20
>>=20
>> ok, will add. I propose the following text:
>>=20
>> Xen having the whole picture of the host resources and device assignment
>> unlike the individual domain makes use of the IOMMU to:
>> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also know=
n as
>> stage-2 (or 2nd stage) address translations for DMA devices passed throu=
gh to
>> domains and Interrupt Remapping on AMD64 platforms.
>> - provide access protection functionalities to prevent malicious or bugg=
y DMA
>> devices from accessing arbitrary memory ranges (e.g. memory allocated to=
 other
>> domains) or from generating interrupts that could affect other domains.
>>=20
>>=20
>>>=20
>>> Added to that, I am not completely sure that there is a clear way to te=
st
>>> this one
>>> as for example one could assign registers not known by Xen.
>>=20
>> I am afraid you are right, valid point. For example, on Arm64, if there =
is no
>> corresponding driver in use, we will end up exposing IOMMU dt node to Do=
m0.
>>=20
>>=20
>>>=20
>>> Shouldn't this requirement in fact be an assumption of use ?
>>=20
>> Assumption of use on Xen? From my PoV sounds reasonable, will do.
>=20
> In my view, this does not qualify as an Assumption of Use, as it does
> not align with the definition we have used so far. If we were to
> categorize this as an Assumption of Use, we would need to change the
> definition.
>=20
> We have defined an Assumption of Use as something Xen expects from the
> rest of the system for it to function correctly, such as being loaded at
> EL2. On the other hand, 'Requirements' refer to behaviors we expect Xen
> to exhibit.
>=20
> Our goal is for Xen to configure the IOMMU at boot using the stage 2
> translation, and to ensure that Xen prevents domains from altering the
> IOMMU configuration. These are specific expectations of Xen's behavior,
> so I believe they fall under Requirements and should be validated in
> some way.
>=20
> However, we could adjust the wording. For example, we might replace the
> negative phrasing with a positive requirement, such as: 'Xen shall
> configure the IOMMU at boot according to the stage 2 translation
> tables.' There is no need to explicitly state that the IOMMU is not
> exposed to guests, as nothing is exposed unless explicitly allowed or
> mentioned. We could, however, include a brief note about it for clarity.

I agree that this is the right way to turn the requirement into something
that Xen shall do.

Now i think we will need to have a discussion to clear up what to do with:
- assumption of use
- "integrator" (word always problematic in Fusa as usually use to bail out
and give responsibility to someone else) shall and shall not do (for exampl=
e
giving access to IOMMU registers to a domain)
- interface and what we expect a domain will do with it

>=20
>=20
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Discover PCI devices from hardware domain
>>>> +-----------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
>>>> +
>>>> +Description:
>>>> +The hardware domain shall enumerate and discover PCI devices and info=
rm
>>>> Xen
>>>> +about their appearance and disappearance.
>>>=20
>>> Again this is a design requirement telling what should be done by a dom=
ain.
>>> This is an interface or an assumption of use but not a Xen design req.
>>=20
>> I agree, will convert to Assumption of use on domain.
>=20
> This example better aligns with our definition of Assumption of Use so
> far: we expect the hardware domain to enumerate and discover PCI
> devices, then notify Xen about their appearance or removal. This is an
> expectation placed on the hardware domain, not on Xen itself. I agree
> with Bertrand that, as written, it is more of an Assumption of Use than
> a Requirement.
>=20
> However, rather than converting it into an Assumption of Use, I think we
> should rewrite it as a requirement focused on Xen's interfaces for
> enumeration. For instance:
>=20
> "Xen shall provide hypercalls to allow the hardware domain to inform Xen
> about the presence of PCI devices."
>=20
>=20
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Discover PCI devices from Xen
>>>> +-----------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
>>>> +
>>>> +Description:
>>>> +Xen shall discover PCI devices (enumerated by the firmware beforehand=
)
>>>> during
>>>> +boot if the hardware domain is not present.
>>>=20
>>> I am a bit wondering here why we would not want Xen to always do it if =
we
>>> have
>>> the code to do it in Xen anyway.
>>=20
>> Makes sense, will drop "if the hardware domain is not present".
>=20
> +1
>=20
>=20
>>>=20
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Assign PCI device to domain (with IOMMU)
>>>> +----------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>>>> +
>>>> +Description:
>>>> +Xen shall assign a specified PCI device (always implied as DMA-capabl=
e)
>>>> to
>>>> +a domain during its creation using passthrough (partial) device tree =
on
>>>> Arm64
>>>> +and Hyperlaunch device tree on AMD-x86. The physical device to be
>>>> assigned is
>>>> +protected by the IOMMU.
>>>=20
>>> This is a very long and complex requirement.
>>> I would suggest to split it in 3:
>>> - generic: Xen shall support assign PCI devices to domains.
>>> - arm64 one: Xen shall assign PCI devices based on device tree (explain=
 how
>>> this is configured in dts)
>>> - amd: xxxx based on hyperlaunch
>>=20
>> I agree, will split, but ...
>>=20
>>> - Xen shall use the IOMMU to enforce DMA operations done by a PCI devic=
e
>>> assigned to a domain to be restricted to the memory of the given domain=
.
>>=20
>>=20
>> ... does this need to be a separate 4th requirement here (and for the si=
milar
>> requirement for the platform device down the document) or this sentence =
is
>> meant to be added to all resulting generic/arm64/amd requirements?
>=20
> This is not specific to PCI, though? The generic requirement is "Xen
> shall use the IOMMU to enforce DMA operations done by a DMA-capable
> device assigned to a domain to be restricted to the memory of the given
> domain".
>=20
> I think it is also OK to both have a PCI-specific and a
> non-PCI-specific requirement for that, I just wanted to mention that it
> doesn't look like something to PCI-specific.

I think we should completely abstract out the DMA engine problem as it
is not specific to a PCI or not device but to any DMA capable stuff.

Maybe the same also goes for interrupts and how those are assigned or
forwarded or not to a domain (attached or not to a device).

Cheers
Bertrand




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 06:37:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 06:37:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813736.1226743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syQJg-0007A8-4c; Wed, 09 Oct 2024 06:37:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813736.1226743; Wed, 09 Oct 2024 06:37: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 1syQJg-0007A1-1B; Wed, 09 Oct 2024 06:37:00 +0000
Received: by outflank-mailman (input) for mailman id 813736;
 Wed, 09 Oct 2024 06:36: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=iX4b=RF=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1syQJe-00079u-8Z
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 06:36:58 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on2062a.outbound.protection.outlook.com
 [2a01:111:f403:2613::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e096f7e8-8608-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 08:36:56 +0200 (CEST)
Received: from AS9PR06CA0050.eurprd06.prod.outlook.com (2603:10a6:20b:463::13)
 by AS4PR08MB7531.eurprd08.prod.outlook.com (2603:10a6:20b:4fa::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.20; Wed, 9 Oct
 2024 06:36:48 +0000
Received: from AMS0EPF000001A5.eurprd05.prod.outlook.com
 (2603:10a6:20b:463:cafe::ae) by AS9PR06CA0050.outlook.office365.com
 (2603:10a6:20b:463::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.24 via Frontend
 Transport; Wed, 9 Oct 2024 06:36:48 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF000001A5.mail.protection.outlook.com (10.167.16.232) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13
 via Frontend Transport; Wed, 9 Oct 2024 06:36:47 +0000
Received: ("Tessian outbound 5b65fbeb7e07:v473");
 Wed, 09 Oct 2024 06:36:46 +0000
Received: from Le7b52f86f994.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 CBF20473-F0C1-409F-8D3F-F982DE258895.1; 
 Wed, 09 Oct 2024 06:36:40 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Le7b52f86f994.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 09 Oct 2024 06:36:40 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by DU0PR08MB8400.eurprd08.prod.outlook.com (2603:10a6:10:404::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Wed, 9 Oct
 2024 06:36:37 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8026.020; Wed, 9 Oct 2024
 06:36: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: e096f7e8-8608-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Hp11hgb1V0BmIMKxmdDPe6JCdFbVwxYYgdKzEqJHis2A+khAHAhA7auZwwUDaCsfXGg5ViUf3R4cZw48BgWJej0GcQMcYCdr8k5IHKoV+2WpgWd80KxV++oBGuxx1Y71olCOJlpB/C4BxkpYNykG+jUN5fqUORWHTdOSDTW/WEr8sLK7aEbCXKQYoFeKRVpm8HxN/emvgzef2fyaWd0y1PW4Vm1Q0GGmfLZEPPjOOvEydHaKl8JQBaMTka4P4QC3sXeavDGMKbM3+O5+KbALWO9krqjoSz4YwGKwGNYB4W/t8NuR8q0eFx98b83LY/ZVdEldj0xv5bQb9K5Frq3N4A==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=qpqGCi7bTLYWWiY8OgykfpefYZTfRH7I0a5ljfAdvEI=;
 b=QntaW/1oCKUsZtCxYt+M+yVhCugV23AL7TnSS2Hpb5H2cbMRb9XlIiwUxzxQvlJjd7lMuGCL4qtMhmt7ZNpdWnt8lyLIItM0Kj9rZVjBy1PmlpZyfLVymvbz4hCX8Ny5C10zSdx69NhE4vftCkrZDD+P/ULKZMfim77fjUtbk8bBRnGI75CoPJICVLequqiGTProCERBw2wmx28mx2LRPxuIAYpWgQQO5fbo//wY/ZcRizfdtihcYRimFLBFeJ/UR6/nYM8kqTpw/UfRvU69M8usnkZZp9A8cpkzXOsY/JwmtLbzzK9CMEsXMf+IbvcuLie6wERhOIyx3m0p9Cb3bA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qpqGCi7bTLYWWiY8OgykfpefYZTfRH7I0a5ljfAdvEI=;
 b=UnZBsNzn+NbfrZxghK+C/1Lp42uXgOrVM5GgtRQ18GzvqixzQT65RtP//yON2lz96pV0PsJdYS5IiymPn0Ec8l0jtwhqC3xzMDaRbkQ/804W5AGC2HJRj1/HbKDMdiWilLQUTHAJuf+TKGwZAKu1CkRGmJ+wDGB+TAU25UtizfM=
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=arm.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: ea6e90edc277444c
X-TessianGatewayMetadata: Zg2P02ZjL7zf6hcKy6s9LFcQ/WXlcARC4LUH29sVV83cZqfMntL+/0oZgV7JJUbMpMHFlttLB1dAvkA2pxmXCjrn1plWWWiTEKgRLR6NnstryV/8/iSBChsipoq5ULqFGjBgPkV6q9vap2KgHvodOU3u0w4twq6rliFsuRT940I=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=A12crVEAUem/tEp0PK9n2q86B+Nxf5UG9PM9X20radSx+72HiFttguG4x1g4DO2U++ObldlZYhhihuF63L4/dYnwIUY02+7u732BvEH//I95td2hSs1e2jNvQqzi+C0Jz8n8BCbs6r9kHlAFf0CXPlm0xTkkfF9l2Z3P1Te0WoFdE8zrAc4kMjj7fq/ueG8QHZoJW+/wtDZdg35DOJy73M9DM59hGf/ab5QbFnt2hy7l80Ky8s+S2D9sAnWrDA8TfgVKfOI/PW485UWguuIgPb7e35AmwayB/QUw+3nbLozzLi5NSqEgPcLIz1jNhbAHUeL9rYUODYxsuYB4ROCGHw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=qpqGCi7bTLYWWiY8OgykfpefYZTfRH7I0a5ljfAdvEI=;
 b=BYganAAiHlbP8F9VCUqNjOkS41rgXMhoBGZmF/UDFSNQRHcmZzoiOvLPnk6AylRquS1afgdl9yc1sytmqCjouIPWMKVMsZUUon5/0IXPYuz3NAj+PdzrP6XPWFfHBYNPc9nl7n+qQJIKkZFfbum7Z3NuUOv5t+aqTB1E652M6QHgU0h6WwXRRr7Kcl9B9nPLpKLkxBlXWlS2M1MG6dn1pgagbAAanXs2+ysPLdFzI3CTeftewxhaob2F6lIs0V5SDpnzT22B1sphtaG2GrIyIQcNm+mcVkRVepACnxl4g8TwMsidTuwkgkbBKdmA02X7BNQO7jXJieqoJgGJf9X6dA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qpqGCi7bTLYWWiY8OgykfpefYZTfRH7I0a5ljfAdvEI=;
 b=UnZBsNzn+NbfrZxghK+C/1Lp42uXgOrVM5GgtRQ18GzvqixzQT65RtP//yON2lz96pV0PsJdYS5IiymPn0Ec8l0jtwhqC3xzMDaRbkQ/804W5AGC2HJRj1/HbKDMdiWilLQUTHAJuf+TKGwZAKu1CkRGmJ+wDGB+TAU25UtizfM=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Oleksandr Tyshchenko <olekstysh@gmail.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, Artem Mygaiev <artem_mygaiev@epam.com>, Hisao
 Munakata <hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Topic: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Index: AQHbGOqFqldnvX8xNEmI4LnFnImSpbJ8YaSAgADTLwCAAMR5AA==
Date: Wed, 9 Oct 2024 06:36:36 +0000
Message-ID: <9C3AD765-C165-4B46-AEEB-8C5F87861947@arm.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
In-Reply-To: <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|DU0PR08MB8400:EE_|AMS0EPF000001A5:EE_|AS4PR08MB7531:EE_
X-MS-Office365-Filtering-Correlation-Id: 05f4fbb5-f686-4a24-7294-08dce82cc00a
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?3Pok7tdth3b6KVEcDNI9kwiwMu9HSevVQxre5m0I6tgX2TkUWvHxi/i36ITi?=
 =?us-ascii?Q?fzJzWnqbsOfDMVdIZBxrtY01pzTY5MvFlLSgdHf/qvQjgukMbq0EosdjoUjX?=
 =?us-ascii?Q?rrcVjGyMAIlmhq1nlhRwYQyp28DrShiN+6LOgCujjr2gnpvuBofhbibSoPlu?=
 =?us-ascii?Q?kXFIZebEE0Bx5bdGWH7owJ88N8NKHOQ6w1Yf2HVVsMf7dP06epKSW0eVnq7v?=
 =?us-ascii?Q?Mfn+bpdcJ7gRQ4sMCU3H5ZmeLuQDC2uFKdCVNZxgnQWtf9pQQ/yXiGOZUE4J?=
 =?us-ascii?Q?7WPg1YDu18VNRCfaKPNGHi5y0xblS7CYwmrBPxqwdgUIk/0rSoKWdAjILVhp?=
 =?us-ascii?Q?Et22dHIMKrYG5RoJJCI2OCs305dq+gr43r/CH5A5C0DQSo94C42W+qbBdlhj?=
 =?us-ascii?Q?1BcRqj6pX87FCGXk6cBxhZ/g+5MKOfp52nB1w/JcB7G6TT/6zasWiRNPXwhb?=
 =?us-ascii?Q?cFJF3antbbK46sK1rpKARRRgi7e+Pyl365zIBRY/m9b0maLQ7ezT6H/v9yrM?=
 =?us-ascii?Q?eTWjvmUqoTtilKcZEG/kOiWGBSbQA0kYPK662SoAmqoGuJnAl4rPQG/lcPgW?=
 =?us-ascii?Q?XUfjm2+7cgKmQt+bDSFelt3wfebMHLZ0REB+e9bJOV20XLLSofCWx7QQUV96?=
 =?us-ascii?Q?u6k8q7Sy9XVuizCpwhV0KBvcmWk12wxyHZ1tofebElbpCPsF0quflMZuPDvF?=
 =?us-ascii?Q?iZ0maZOitJIxJVBRqcfM7JJEnDU3KivF7F0Wu2x6eizFqOPYzMjpzwiW6Za/?=
 =?us-ascii?Q?YRMKCT4f4Nqaqj5alKl/NY+aNfkuIpOTY/dBGtYiZp4TfelptQ9iW8A3BZgp?=
 =?us-ascii?Q?UCT8eeKmsTFowvJw9l5cw1Uspxa27+gchV2w2j7gQKEGkbLHXs2IVi2nBZR5?=
 =?us-ascii?Q?ALnwY442BvFB4GOt+GvS4+yR6OBCG4i7NmfaXtN99IfQC0xATHRc9Y0ebfxo?=
 =?us-ascii?Q?eZLDGtsjxZAdLtKpU3hkyR4XhKG9WJxeBw1h5bet/7bTZPvzEm2UmBlWEJOL?=
 =?us-ascii?Q?el2ms9wAgS1N+bwh2duon6adHYzOb6617rXuvfiNRgpiu39D+qE1vk/kUqsd?=
 =?us-ascii?Q?WshcI9rnMfBMMZm8efZ1tvQRsHazkOdHjsr+YNlOBG0s6O5wBHICU4bJMwso?=
 =?us-ascii?Q?Od/FW5injge1Q1c32JSTUTdIU+dJs6FCw759iZExTiUXisP+2kJpNf0f3wj7?=
 =?us-ascii?Q?TGX1CfESLytBRXsG75wJpwzGbnP+LAQkY/TaRZTeERv/XnALm22Ewg9xQFY7?=
 =?us-ascii?Q?UwhxXEKyOMM3cxEaSEVG+X/YZa5qKQlfsYAhzsGpfw=3D=3D?=
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:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <D3752A723D2E61478AA7B4E48EDC74BD@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8400
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A5.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	99a1bfac-81cc-42e4-1897-08dce82cb993
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?MIBF7zWBFLdpKSP4GELPiFEXwxEhPB3UexV8v3SDAwcGkhP5juvlCsijvbLI?=
 =?us-ascii?Q?m1AokqOs1+L9kexvun9BoadK18VnA8+Iyz6HdrYhPbUUR+624hOibynTFFqw?=
 =?us-ascii?Q?1bEb3FwPxG/56rsEZc9JA3eWpJ/W5cyySvU/YtGvkAdmpadNGWMGJJMUmrWh?=
 =?us-ascii?Q?47w5Q3CO6AVghfUqAHTuQYt0SHUfz1RsZtXLDKeOSyajRZX4s2sBkjH6r10w?=
 =?us-ascii?Q?dPkjCpeyuXky87Zemv8MwwpQa6gXsaYaZo/C2sH/Z6NXCDScKhqFWLzdGPTk?=
 =?us-ascii?Q?vNSxr9OmXJKAld5XGa+/M4cJ700JfPKNt8rr7/ccAviZB5sWMancK7a0UoSV?=
 =?us-ascii?Q?TIWL09eTExngMRu5nfV3vSi7gUSgAM8Z2cvAYA5A4powfbhkUR/+gAfggz/1?=
 =?us-ascii?Q?nn0f5lqrSHdSAGcw36T/MvExy4qpQsRVvy2Rh2uxTF4swG2V9IVKUZ8J4HQZ?=
 =?us-ascii?Q?RDaROT/EAYO0necrwTJrzAA5MEd3hvoxJWp7vTKeAhWoXDjGyq+ruknmMbH6?=
 =?us-ascii?Q?4uHR44i4vYrBIs+qRF+qNfiFQPes0GRxchalbvQ9QTXZ9HTb8pEFfio8sDch?=
 =?us-ascii?Q?TPi2r3yiHgIKRBl5QN5Gaj7ZDkYRlFLDjoHR8Hcw6rExGQOS+CKjKftFGzlE?=
 =?us-ascii?Q?oFnsB6iujN2vR16audhEao669fL4ICdR7rQIdenIdIr11gNF4luOiOwCl02+?=
 =?us-ascii?Q?26pGCgLXARZ1DNlXM5drCrbowYP6m1NpCymgEx1z00tJnTlyaioaMcl8j8DK?=
 =?us-ascii?Q?x3wDE8ntYv5eKJXIs9lRV4nJnuEhBq9qtuN37sPDFD0rVbj7n/8fkeeQli3w?=
 =?us-ascii?Q?dqbWzeUAcGwD+dZPFxlj+0dcX8so7zx1i/AkKSAcO0oCXUcVoc9WGaCc+bF0?=
 =?us-ascii?Q?lnWgLBPDCENXkparvj+ORr9bVQ3mtJRCnC9x2QpOMGpu+cOeMrP9L+gJSr5P?=
 =?us-ascii?Q?FVMzUE7bbep4h9GKvuTo59arXmujy2kEvUHiHkeyF42wrhL3dXomoCfWjiKG?=
 =?us-ascii?Q?z29+20vaIZZzGnDW6ibjOoAWy3nswOYl1SlrtK04/BCMse08WSmNZcFAWIHf?=
 =?us-ascii?Q?ZAAhEshdLV5SHLVW+uHXw4m5QzhRXlIPVTyFIQ+zurT+iAEojIO6Xwc9WuRR?=
 =?us-ascii?Q?BEFSaXLflI2O3xRBeMBx8hUH3/nqAjNtf7LrAkNAf3rXCXjrslHyNRmHNQyE?=
 =?us-ascii?Q?DFbNjipCp8CmICyzFjsyc4Pu3KsSZITYO4EnSYjEVgVguOkCpT/aN+CJC0t6?=
 =?us-ascii?Q?mn1iQK2MQlinE+2xhBHAf7nnr6CRvvEA1KpEhTo9lF1IFzTRyp9b9OXhDjDu?=
 =?us-ascii?Q?VE02WTufjmGIvCh4YmYgDs+f?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 06:36:47.7258
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 05f4fbb5-f686-4a24-7294-08dce82cc00a
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:
	AMS0EPF000001A5.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7531

Hi Oleksandr,

> On 8 Oct 2024, at 20:53, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote=
:
>=20
>=20
>=20
> On 08.10.24 09:17, Bertrand Marquis wrote:
>> Hi,
>=20
> Hello Bertrand
>=20
>=20
>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wro=
te:
>>>=20
>>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>=20
>>> Add common requirements for a physical device assignment to Arm64
>>> and AMD64 PVH domains.
>>>=20
>>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>> ---
>>> Based on:
>>> [PATCH] docs: fusa: Replace VM with domain
>>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.c=
om/
>>> ---
>>> ---
>>> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>>> docs/fusa/reqs/index.rst                      |   1 +
>>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>> 4 files changed, 428 insertions(+)
>>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>>=20
>>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst b/docs/f=
usa/reqs/design-reqs/common/passthrough.rst
>>> new file mode 100644
>>> index 0000000000..a1d6676f65
>>> --- /dev/null
>>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>> @@ -0,0 +1,365 @@
>>> +.. SPDX-License-Identifier: CC-BY-4.0
>>> +
>>> +Device Passthrough
>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>> +
>>> +The following are the requirements related to a physical device assign=
ment
>>> +[1], [2] to Arm64 and AMD64 PVH domains.
>>> +
>>> +Requirements for both Arm64 and AMD64 PVH
>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>> +
>>> +Hide IOMMU from a domain
>>> +------------------------
>>> +
>>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>>> +
>>> +Description:
>>> +Xen shall not expose the IOMMU device to the domain even if I/O virtua=
lization
>>> +is disabled. The IOMMU shall be under hypervisor control only.
>>> +
>>> +Rationale:
>> I think there should be a rationale here to explain why we do not want t=
he IOMMU
>> in particular to be assigned to a domain.
>=20
>=20
> ok, will add. I propose the following text:
>=20
> Xen having the whole picture of the host resources and device assignment =
unlike the individual domain makes use of the IOMMU to:
> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also known=
 as stage-2 (or 2nd stage) address translations for DMA devices passed thro=
ugh to domains and Interrupt Remapping on AMD64 platforms.
remove arm64 or amd64, this is always true

> - provide access protection functionalities to prevent malicious or buggy=
 DMA devices from accessing arbitrary memory ranges (e.g. memory allocated =
to other domains) or from generating interrupts that could affect other dom=
ains.

I would turn this in positive: restrict DMA devices to only have access to =
the memory of the Domain there are assigned to or no memory at all if not a=
ssigned (maybe 2 reqs here).

>=20
>=20
>> Added to that, I am not completely sure that there is a clear way to tes=
t this one
>> as for example one could assign registers not known by Xen.
>=20
> I am afraid you are right, valid point. For example, on Arm64, if there i=
s no corresponding driver in use, we will end up exposing IOMMU dt node to =
Dom0.
>=20
>=20
>> Shouldn't this requirement in fact be an assumption of use ?
>=20
> Assumption of use on Xen? From my PoV sounds reasonable, will do.

As was suggested by stefano, i agree with him on turning it differently. Pl=
ease see his answer.

>=20
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Discover PCI devices from hardware domain
>>> +-----------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
>>> +
>>> +Description:
>>> +The hardware domain shall enumerate and discover PCI devices and infor=
m Xen
>>> +about their appearance and disappearance.
>> Again this is a design requirement telling what should be done by a doma=
in.
>> This is an interface or an assumption of use but not a Xen design req.
>=20
> I agree, will convert to Assumption of use on domain.
>=20
>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Discover PCI devices from Xen
>>> +-----------------------------
>>> +
>>> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
>>> +
>>> +Description:
>>> +Xen shall discover PCI devices (enumerated by the firmware beforehand)=
 during
>>> +boot if the hardware domain is not present.
>> I am a bit wondering here why we would not want Xen to always do it if w=
e have
>> the code to do it in Xen anyway.
>=20
> Makes sense, will drop "if the hardware domain is not present".
>=20
>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Assign PCI device to domain (with IOMMU)
>>> +----------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>>> +
>>> +Description:
>>> +Xen shall assign a specified PCI device (always implied as DMA-capable=
) to
>>> +a domain during its creation using passthrough (partial) device tree o=
n Arm64
>>> +and Hyperlaunch device tree on AMD-x86. The physical device to be assi=
gned is
>>> +protected by the IOMMU.
>> This is a very long and complex requirement.
>> I would suggest to split it in 3:
>> - generic: Xen shall support assign PCI devices to domains.
>> - arm64 one: Xen shall assign PCI devices based on device tree (explain =
how this is configured in dts)
>> - amd: xxxx based on hyperlaunch
>=20
> I agree, will split, but ...
>=20
>> - Xen shall use the IOMMU to enforce DMA operations done by a PCI device=
 assigned to a domain to be restricted to the memory of the given domain.
>=20
>=20
> ... does this need to be a separate 4th requirement here (and for the sim=
ilar requirement for the platform device down the document) or this sentenc=
e is meant to be added to all resulting generic/arm64/amd requirements?
>=20
> I would like to clarify, there are two groups of requirements to cover DM=
A-capable devices in this document:
> - for devices that are behind the IOMMU and IOMMU can be used for them, t=
hose requirements description explicitly mention "device xxx is protected b=
y the IOMMU" in addition to "(with IOMMU)" in the subject.
> - for devices that are not behind the IOMMU or IOMMU cannot be used for t=
hem, those requirements description explicitly mention "device xxx is not p=
rotected by the IOMMU" in addition to "(without IOMMU)" in the subject.

I think you need to be more generic and any DMA engine that is not protecte=
d by an IOMMU shall not be assigned to a non trusted domain.
This is in fact a requirement on the integrator, Xen cannot do much about t=
his.

>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Deassign PCI device from domain (with IOMMU)
>>> +--------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
>>> +
>>> +Description:
>>> +Xen shall deassign a specified PCI device from a domain during its des=
truction.
>>> +The physical device to be deassigned is protected by the IOMMU.
>> Remove second sentence or turn it into a req to say that the PCI device =
shall not be allowed to do DMA anymore somehow.
>=20
>=20
> I would like to clarify, the second sentence here is just to indicate wha=
t type of device (in the context of IOMMU involvement) the requirement is t=
alking about, not about special care for denying any DMA from it after deas=
signing.
>=20
> If you still think that we need a new requirement to explicitly highlight=
 that, I will be ok to create, in that case, I assume, the platform device =
will want to gain the similar requirement. Please let me know your preferen=
ce.

As said in the mail to stefano, i think we should try to generalise more.
So i would say we should handle:
- register assignments
- DMA engine handling
- interrupt handling

A device is a just a logical construct which may or may not contain or use =
several of those elements.

>=20
>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Forbid the same PCI device assignment to multiple domains
>>> +---------------------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
>>> +
>>> +Description:
>>> +Xen shall not assign the same PCI device to multiple domains by failin=
g to
>>> +create a new domain if the device to be passed through is already assi=
gned
>>> +to the existing domain. Also different PCI devices which share some re=
sources
>>> +(interrupts, IOMMU connections) can be assigned only to the same domai=
n.
>> Please split and simplify
>> - Xen shall assign a single device to a single domain
>> - Xen shall assign PCI devices sharing resources to the same domain.
>=20
> Good point, will split.
>=20
>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Requirements for Arm64 only
>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
>>> +
>>> +Assign interrupt-less platform device to domain
>>> +-----------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
>>> +
>>> +Description:
>>> +Xen shall assign a specified platform device that has only a MMIO regi=
on
>>> +(does not have any interrupts) to a domain during its creation using p=
assthrough
>>> +device tree.
>>> +The example of interrupt-less device is PWM or clock controller.
>> I am a bit puzzled by this req. Why making a specific case for interrupt=
 less ?
>=20
>=20
> Those devices exist and can be assigned to a domain, they are configured =
slightly differently in comparison with devices with interrupts ("xen,path"=
 is not needed for the former), other code paths are executed in Xen.
>=20
> More technical details:
> The allowance of the platform device assignment which is not behind an IO=
MMU (for both non-DMA-capable and DMA-capable devices) is specified using d=
evice tree property ("xen,force-assign-without-iommu") in the device node d=
escribed in the passthrough device tree. The said property also allows the =
interrupt-less platform device assignment (a device that has only a MMIO re=
gion) without specifying the corresponding node in the host device via devi=
ce tree property ("xen,path").

Please see upper.

>=20
>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Deassign interrupt-less platform device from domain
>>> +---------------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_deassign_interrupt_less_platform_device~1`
>>> +
>>> +Description:
>>> +Xen shall deassign a specified platform device that has only a MMIO re=
gion
>>> +(does not have any interrupts) from a domain during its destruction.
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Assign non-DMA-capable platform device to domain
>>> +------------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_assign_non_dma_platform_device~1`
>>> +
>>> +Description:
>>> +Xen shall assign a specified non-DMA-capable platform device to a doma=
in during
>>> +its creation using passthrough device tree.
>>> +The example of non-DMA-capable device is Timer.
>> Again why making a specific case here ?
>=20
> Almost the same answer as for interrupt-less device. Here "xen,path" is n=
eeded.
>=20
>=20
>> Wouldn't it me more logic to describe device passthrough and then what X=
en should do for interrupts and for DMA ?
>=20
> I can add more details on how this is configured/what properties are used=
, etc in rationale for each requirement mentioning device tree. Or do you m=
ean something else?
>=20
>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Deassign non-DMA-capable platform device from domain
>>> +----------------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_deassign_non_dma_platform_device~1`
>>> +
>>> +Description:
>>> +Xen shall deassign a specified non-DMA-capable platform device from a =
domain
>>> +during its destruction.
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Assign DMA-capable platform device to domain (with IOMMU)
>>> +---------------------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_assign_dma_platform_device_with_iommu~1`
>>> +
>>> +Description:
>>> +Xen shall assign a specified DMA-capable platform device to a domain d=
uring
>>> +its creation using passthrough device tree. The physical device to be =
assigned
>>> +is protected by the IOMMU.
>> This requirement is not a design but an higher level as it does not tell=
 anything about implementation.
>=20
> Ok, will add details regarding passthrough/host device trees.
>=20
>=20
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Deassign DMA-capable platform device from domain (with IOMMU)
>>> +-------------------------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_deassign_dma_platform_device_with_iommu~1`
>>> +
>>> +Description:
>>> +Xen shall deassign a specified DMA-capable platform device from a doma=
in during
>>> +its destruction. The physical device to be deassigned is protected by =
the IOMMU.
>>> +
>>> +Rationale:
>>> +
>>> +Comments:
>>> +
>>> +Covers:
>>> + - `XenProd~device_passthrough~1`
>>> +
>>> +Assign DMA-capable platform device to domain (without IOMMU)
>>> +------------------------------------------------------------
>>> +
>>> +`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
>>> +
>>> +Description:
>>> +Xen shall assign a specified DMA-capable platform device to a domain d=
uring
>>> +its creation using passthrough device tree. The physical device to be =
assigned
>>> +is not protected by the IOMMU.
>>> +The DMA-capable device assignment which is not behind an IOMMU is allo=
wed for
>>> +the direct mapped domains only. The direct mapped domain must be eithe=
r safe or
>>> +additional security mechanisms for protecting against possible malicio=
us or
>>> +buggy DMA devices must be in place, e.g. Xilinx memory protection unit=
 (XMPU)
>>> +and Xilinx peripheral protection unit (XPPU).
>> Please split in several reqs.
>=20
>=20
> I agree, will do. I feel it should be split into the following requiremen=
ts:
> - Assign DMA-capable platform device to domain (without IOMMU)
> - Create direct mapped domain
> - Enable additional security mechanisms in direct mapped domain
>=20
> To be honest, I'm not quite sure whether it is worth creating the last re=
quirement ...

I do not think the last one is needed here.
It could be an integrator guidance at best.

Cheers
Bertrand

>=20
>=20
>> Stopping here my review for now
>=20
> Thanks for the review.
>=20
>=20
>> Cheers
>> Bertrand
>=20
> [snip]




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 06:54:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 06:54:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813745.1226753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syQa9-0002ms-ID; Wed, 09 Oct 2024 06:54:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813745.1226753; Wed, 09 Oct 2024 06:54: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 1syQa9-0002ml-Fi; Wed, 09 Oct 2024 06:54:01 +0000
Received: by outflank-mailman (input) for mailman id 813745;
 Wed, 09 Oct 2024 06:54: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syQa9-0002mf-6A
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 06:54:01 +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 423f94b2-860b-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 08:53:58 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a99388e3009so519460166b.3
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 23:53:58 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994b0fd6bfsm454751766b.200.2024.10.08.23.53.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 23:53:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 423f94b2-860b-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728456838; x=1729061638; 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=kcjUZC2p/QK4F5ncRXsFtQJLBaKo6/H+CcOoAK1t5eI=;
        b=SSbyiVetGv4RUSCq7UmryUm1CgYELPsO3P+8nkqAwlc1HKb/8Zze2Qy+ZI6bwOLUJ6
         vUTDSyYn7x/yz3A+wxA5lh3dmfCQPNEm5Q2eZNj0QT/LcmB8NyRVeNLn0TrT92pNnw69
         3GElypxlphrHaAtlBhpfPtczpVHbhGyI7Vr9G44adjqtiHsGAgpfplv6j7p4jV9TUBUj
         MfpCh/7xjLQ0TxIgyAN6CK+YIvhiXU94g2ysgG5/RvOM37WJpLWsoPS4j0RhQpE/P5Es
         wFCKcLNIp+Vr/20N7qISiiSuPbeXVIFazVh5er+Tm3xnNbNxr3qJSrbStKk+Dk5uM5Wq
         NMTw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728456838; x=1729061638;
        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=kcjUZC2p/QK4F5ncRXsFtQJLBaKo6/H+CcOoAK1t5eI=;
        b=C5QPR+0RaL5vFSD721EUJWFfUnV4sBTHymfVEtEHibVFDNWdbsQqquGZ9YcfnzHk0K
         BDgPok1G+JCW8imHzMbaL++heHETYc+2eVq3g50KCFQiC7KUFaR8WCrYklWJbLPyEsDo
         vJeTu2rdPQJI0rAPRY/kNZHmQvfNaOeO016H3/1LYh82dRkL8XtNngu46eA5JskFpLJE
         JpJ2yLJuwp4ryixF1PurL8+TcLPWnXD1jzojcbk6rniskTWAvpF8Dnxf0q8j35ilFzJN
         o43wXmDGeoLVe2t4YsfVxGlCblEMc1Hehn8TrfsVwyJ5USGpkufM6LvmLPRL4r7FnFZR
         g6dg==
X-Forwarded-Encrypted: i=1; AJvYcCUvYxKfeuYzUs21fKGLCVhhboduKpKmndka2SeDry2esJb6mQA+/EM0SfXvSmdT/Ap5aDgWAipO72Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyW6JelQboSDRgICqzQ+Xd394gBiPITZr1xrSqPNBcerqON195N
	wI//03GeX/i8H0Km+6nY1tMUeptullja0u79A/BZ0IllrQt7QPL8LBtyyiQYsA==
X-Google-Smtp-Source: AGHT+IESNChKn16iLPTAAupPUWH5JvtAw25OWnwFEcZrDl1WbAIWLmKTh6u1eKN9fIZDBM1Fjis9jQ==
X-Received: by 2002:a17:907:f1ca:b0:a99:5a3d:3a4 with SMTP id a640c23a62f3a-a998d20863bmr107881966b.33.1728456838178;
        Tue, 08 Oct 2024 23:53:58 -0700 (PDT)
Message-ID: <c2914ba3-0f6a-49fc-aae3-d7e5f465860c@suse.com>
Date: Wed, 9 Oct 2024 08:53:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 36/44] x86/boot: remove remaining early_mod references
To: Jason Andryuk <jason.andryuk@amd.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-37-dpsmith@apertussolutions.com>
 <52ccddc1-762a-440d-bd27-8d9e9c507c7b@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: <52ccddc1-762a-440d-bd27-8d9e9c507c7b@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.10.2024 21:15, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Any direct usages of struct mod have been transitioned, remove the remaining
>> references to early_mod fields.
> 
> This is unclear, please try to re-word.  "struct mod" and "early_mod" 
> don't exist.
> 
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 31 +++++++++++--------------------
>>   1 file changed, 11 insertions(+), 20 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index e9e3da3204f1..0ffe8d3ff8dd 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
> 
>> @@ -1404,16 +1401,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>            */
>>           bi->mods[xen].start = virt_to_mfn(_stext);
>>           bi->mods[xen].size = __2M_rwdata_end - _stext;
>> -
>> -        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
>> -        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
>>       }
>>   
>> -    bi->mods[0].headroom =
>> -        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
>> -                         bi->mods[0].mod->mod_end);
>> -
>> -    bootstrap_map(NULL);
>> +    bi->mods[0].headroom = bzimage_headroom(
>> +                        bootstrap_map_bm(&bi->mods[0]),
>> +                        bi->mods[0].size);
> 
> Thunderbird might corrupt this, bit the above can fit on two lines:
>      bi->mods[0].headroom = bzimage_headroom(bootstrap_map_bm(&bi->mods[0]),
>                                              bi->mods[0].size);

Or else at least indentation wants to change, to one of the two possible
forms:

    bi->mods[0].headroom = bzimage_headroom(
        bootstrap_map_bm(&bi->mods[0]),
        bi->mods[0].size);

(indentation increased by a level from the start of the statement) or

    bi->mods[0].headroom = bzimage_headroom(
                               bootstrap_map_bm(&bi->mods[0]),
                               bi->mods[0].size);

(indentation by one level biased from the start of the function call).
Personally, if already wrapping like this, I'd prefer the former.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 06:54:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 06:54:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813750.1226763 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syQb1-0003Ie-RY; Wed, 09 Oct 2024 06:54:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813750.1226763; Wed, 09 Oct 2024 06:54: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 1syQb1-0003IX-Og; Wed, 09 Oct 2024 06:54:55 +0000
Received: by outflank-mailman (input) for mailman id 813750;
 Wed, 09 Oct 2024 06:54: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syQb0-0003A6-Cy
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 06:54:54 +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 6303dbbb-860b-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 08:54:53 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c91e5bf6efso682722a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 08 Oct 2024 23:54:53 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994d5745e2sm437333366b.23.2024.10.08.23.54.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 08 Oct 2024 23:54:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6303dbbb-860b-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728456893; x=1729061693; 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=Ft6UkXLQS7If4k2EgtzOTIc8mRyscossG+LRnlaN2L0=;
        b=ZouAsIZWqbYGKNSrvzvk6mcAObk7UARC086a9esmGa5YrFbaMO3HYoev3j/wHMLCnV
         cgF1bVxPduJb6iQ3WQLTTRNlCzSdt0dbiJ7rN2bZf8HmZHXjlAIKpOQ0JB82iL+7WfGg
         CIytrFc85dBrGqx1XS46E6AuU6fW54xv68BPP/Qibtk7Tee5w+rgb3XT7Iquo/CPx0wW
         xKstLb9/z61tm5yvpMOZYS9oDM+ESvotSoMZ1zIwNUsx50OkHqP7TUUSBq46vGNbNxty
         zkedAM36f/MhLHQSgg7nJyoo/QDAuyMHRNaYSkSNVqRBSx/MoOotSxQ23vL6BXmwDmqC
         NX0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728456893; x=1729061693;
        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=Ft6UkXLQS7If4k2EgtzOTIc8mRyscossG+LRnlaN2L0=;
        b=UXfutUNvpnQn3YsGfVtays+ExJVQkqdH73rdg7SFptzp1GJbTpnybK40ziF2ll42fL
         Wl4Z7F95sGBWgiP8WDGk5OX0JfyjC6BiCrzh0k7K5S+wARi+/CQMljQXYeWcMROA5HCf
         Yil6Zb8b58sIjslYpF4XQGBCsmeDvXWXMIX8xFMKdSTqPPFCkeVFLXgT2uAOqPNeVkWB
         0Y8OrSE3DR8j0ZeBzzC8xEnM69he24MUf/xJH+z+zsrw9jvJ82KGSN5ojeMZK8lsbfw1
         GwLtge1BVxjEZaJyVIEap9vMne1w93dtMMR0PGmM+f5+DVV0Cpbl+bXsLu2kFhSg/pGf
         IVmg==
X-Forwarded-Encrypted: i=1; AJvYcCXLcgFoiG+l4LVFnNhYqW7yg/hxMPeYAVs9f5+QYi3luhJxjoHhBcJGPhgW6SsV65cFcic7tMoeW0E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyMI+JimeqsCITYcUmz3abjMrJpilUtqtXoBXtZzvQdBfEAh3hO
	XSaK2H/PiN4fgtRH+8j8ZR+JwUADT4arxw08y8ndkxbVH3GYHfz8086Lf7Sg2w==
X-Google-Smtp-Source: AGHT+IE2sww8yUX+aoH3CcBXPvb+8ZUE0MKi09dUpHh1BLuWHCG3U6E9sPj/gTiY0cIjFov/MdWtEA==
X-Received: by 2002:a17:907:c890:b0:a99:4e74:52aa with SMTP id a640c23a62f3a-a998b45edcamr150773066b.33.1728456893043;
        Tue, 08 Oct 2024 23:54:53 -0700 (PDT)
Message-ID: <ea688319-e53e-4d29-b6b7-54ec097d629d@suse.com>
Date: Wed, 9 Oct 2024 08:54:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 39/44] x86/boot: introduce domid field to struct
 boot_domain
To: Jason Andryuk <jason.andryuk@amd.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-40-dpsmith@apertussolutions.com>
 <a51d0a6e-7050-44af-9a66-edbfba67bab1@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: <a51d0a6e-7050-44af-9a66-edbfba67bab1@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.10.2024 21:36, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Add a domid field to struct boot_domain to hold the assigned domain id for the
>> domain. During initialization, ensure all instances of struct boot_domain have
>> the invalid domid to ensure that the domid must be set either by convention or
>> configuration.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootdomain.h |  2 ++
>>   xen/arch/x86/setup.c                  | 12 +++++++-----
>>   2 files changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
>> index 4285223ac5ab..d6264d554dba 100644
>> --- a/xen/arch/x86/include/asm/bootdomain.h
>> +++ b/xen/arch/x86/include/asm/bootdomain.h
>> @@ -11,6 +11,8 @@
>>   struct boot_module;
>>   
>>   struct boot_domain {
>> +    domid_t domid;
>> +
>>       struct boot_module *kernel;
>>       struct boot_module *ramdisk;
>>   };
> 
> Oh, you should probably move domid after the pointers to avoid a hole.

That would only move the hole to the end of the struct.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 07:05:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 07:05:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813757.1226773 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syQlY-00066E-PM; Wed, 09 Oct 2024 07:05:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813757.1226773; Wed, 09 Oct 2024 07:05: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 1syQlY-000667-MI; Wed, 09 Oct 2024 07:05:48 +0000
Received: by outflank-mailman (input) for mailman id 813757;
 Wed, 09 Oct 2024 07:05: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syQlX-00065r-QG
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 07:05:47 +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 e5a7337a-860c-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 09:05:42 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c928611371so183116a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 00:05:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05f4e93sm5047949a12.96.2024.10.09.00.05.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 00:05:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e5a7337a-860c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728457542; x=1729062342; 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=+YP64Bzsgpvnxz/FJuxw20ht91RmIctuXvRjG0GIwvc=;
        b=FNi1shCJ6I4S3hTV4+d3BAhW0wTFbvG3Aa9IefpghyBL3hwx9hoolAsmDWBryPkV3n
         u3Q6nuf/65gl0HeooZWyOyQntdWuMqL08IGz4w46hZ8ckg8mSqQlqqqF0GCT3sgU7F0f
         a46QowpqyR+XBrDZS0CjQdbs2c7DeTyTOv1L0meL4ovYOtJJcCzqAjTgtfLilqh6po3v
         Hd3BItRo8UILQqzw43Jac13YBM91KEzGl83iKQEUoZzmuQVJ87a4349IJD/bntO8Dmx6
         1iwujX3QIFngDoGTv59myiC+F4VvKfXHpe3XzeiKUvcI7r8qlW0Fixn9CfVMehTZ16P/
         q+VQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728457542; x=1729062342;
        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=+YP64Bzsgpvnxz/FJuxw20ht91RmIctuXvRjG0GIwvc=;
        b=eDmw00R4E6OGZU3xZ9ua9+y9jF0GHcHi2JgT1XHu468b8rz7evhee+2VeNex/C57RR
         zJqOyK1+4FejfnAoBGKBxP2p/q7GBQP4wjsq6yjuc3jdYVumadWXkmz7JYfBIKDBFWU5
         YGFsb61ScZjGtHWaMliY8l7MhfycnoJfZEcu6W4XGmHkmStMYu3QokAiD6zLUB5LwSzX
         Kevg55Wo7dsCHgB1Ol81gQWgRi4kxNX/30U0sapoZ9hKbIMh0BCOwpXBH+oZSsPPRE3W
         7vYBXmD6vr1MwNWJ0aRyY5dbIYnzzZ3hIeB/iftpTVgOPcWRCaS9Xfsk8ykb6A9m8xX5
         on9w==
X-Gm-Message-State: AOJu0YwNJMWMCwaWJ7LDaD7S7cfCZmFBRFEIIMLwb5zYoP58vFNZSc7V
	qPbWW2FiyRdIz2oSnA3zRXufpOvfOVBSRmgYRTYbW93xXNKoKM/gxtjAYye9jw==
X-Google-Smtp-Source: AGHT+IHZxJwFnZHWTviJgoSX5gDunTuaGTf8PSJ1stqDgqHdqgBz/1EPV8MrJ91I5WN25SkvtWU9Wg==
X-Received: by 2002:a05:6402:34cc:b0:5c8:958d:c902 with SMTP id 4fb4d7f45d1cf-5c91d689219mr1066677a12.30.1728457541730;
        Wed, 09 Oct 2024 00:05:41 -0700 (PDT)
Message-ID: <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
Date: Wed, 9 Oct 2024 09:05:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
To: Jiqian Chen <Jiqian.Chen@amd.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <20241009062014.407310-1-Jiqian.Chen@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: <20241009062014.407310-1-Jiqian.Chen@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 08:20, Jiqian Chen wrote:
> Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
> adds a weak reverse dependency to the config XEN_PRIVCMD definition, its
> purpose is to pass the combination of compilation that CONFIG_XEN_PRIVCMD=y
> and CONFIG_XEN_PCIDEV_BACKEND=m, because in that combination, xen-pciback
> is compiled as a module but xen-privcmd is built-in, so xen-privcmd can't
> find the implementation of pcistub_get_gsi_from_sbdf.
> 
> But that dependency causes xen-privcmd can't be loaded on domU, because
> dependent xen-pciback is always not be loaded successfully on domU.
> 
> To solve above problem and cover original commit's requirement, just remove
> that dependency, because the code "IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND)"
> of original commit is enough to meet the requirement.
> 
> Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>

This lacks a Reported-by:.

> --- a/drivers/xen/Kconfig
> +++ b/drivers/xen/Kconfig
> @@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
>  config XEN_PRIVCMD
>  	tristate "Xen hypercall passthrough driver"
>  	depends on XEN
> -	imply XEN_PCIDEV_BACKEND
>  	default m
>  	help
>  	  The hypercall passthrough driver allows privileged user programs to

The report wasn't about a build problem, but a runtime one. Removing the
dependency here doesn't change anything in the dependency of xen-privcmd
on xen-pciback, as the use of pcistub_get_gsi_from_sbdf() continues to
exist. Consider the case of XEN_PCIDEV_BACKEND=m and XEN_PRIVCMD=m, which
I guess is what Marek is using in his config. Both drivers are available
in such a configuration, yet loading of xen-privcmd then requires to
load xen-pciback first. And that latter load attempt will fail in a DomU.
The two drivers simply may not have any dependency in either direction.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 07:20:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 07:20:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813765.1226783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syQzI-0000zb-VU; Wed, 09 Oct 2024 07:20:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813765.1226783; Wed, 09 Oct 2024 07:20: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 1syQzI-0000zU-SJ; Wed, 09 Oct 2024 07:20:00 +0000
Received: by outflank-mailman (input) for mailman id 813765;
 Wed, 09 Oct 2024 07:19: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syQzH-0000zO-Sl
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 07:19:59 +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 e41d3569-860e-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 09:19:58 +0200 (CEST)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-5399041167cso10327577e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 00:19:58 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9950077d1asm412298366b.57.2024.10.09.00.19.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 00:19:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e41d3569-860e-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728458398; x=1729063198; 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=f4TfDf1LtSYHxL8VZt8bsAe8a5+4+k4PvfSOpHUBGE0=;
        b=G7Qdot2rlKaYqND9B7WRlGjUQlFrA0HSUZOuEAJJu4Vt83P7K5z5EVUg5HVkqZO4sl
         47J32J0kzgNywjzQPeY2ln0IfhrLvSFh76ByCNdPPe6xisg+G5P6uMf6kQMadbrQKTb3
         5WhnK9kEgs+hcs/b4UF5FHwqxCV93CqPpYdzdBE5U2XiqsZQsDsAqLLb42CyIJ+ClSO0
         59KkRT/G15MkTziKw0pIWHHc9vjQmDb6qlRf4AhSQgbYpz18Lo8svTeV3lpxYienXjS8
         vuxSvWQ4K/pDK39RNZ7qmVfNokz0AEajS3S4ZTHBZLYYrJqJoE0726BjBvSXs/xODoEX
         G8Cg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728458398; x=1729063198;
        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=f4TfDf1LtSYHxL8VZt8bsAe8a5+4+k4PvfSOpHUBGE0=;
        b=vqRgkeWaMceyYR6itMBu6XRQc3ekeu94/FFN6OJ275hrvhL0N9VDLJw6gDcUqrkCZJ
         uIwCq8iXNBNf7EdBVKGcEadkZ53KLA8NcgpFA6ouFKiLdBs+K1390AIfm8hlOgaYf6QG
         Qpsm/P6ggcaLXaFVmdzVhX75w3KaVgfVLAEePQ8nphzD4jA+b5LEBC0fTCaldiuXKCBg
         U+yP+an9S8YEviKfZbMsNDE9D3k2DtBuyFJUK7ERrVZRISiqomDYEZHHySRN8SYGBG2D
         WiBhonePp7+ThkalvMewmOmemvfRK1DX4zJYoCs8eviicYNoAD7+FeyXOC1KJ+Hy/hVU
         gW4w==
X-Forwarded-Encrypted: i=1; AJvYcCXG18uCroVWMvlAJgkZPbTaAjl8xpEX4CdO8w3izH17wxGl5NPB4Asxw2jKMjuiucG/M6axJii188I=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwWf6mWDTmx0TmVlP03FBdI+KTFLtOaVfMnXbDO7uGS6SMO1aJN
	ynzbkmGKF30s0F6vyvE1ROmn8XMQdawRdHN0exu8TaNiefqGEF66VeSO3RZDBQ==
X-Google-Smtp-Source: AGHT+IHsE5NEgtIrgDWpWhOuVZ4p70uShd7xBHflpe2TozF1wC5G1fPFwQj3w3MLzwzmpBH6JC9bbA==
X-Received: by 2002:ac2:4e06:0:b0:539:8f3c:4586 with SMTP id 2adb3069b0e04-539c4968324mr1086958e87.55.1728458398029;
        Wed, 09 Oct 2024 00:19:58 -0700 (PDT)
Message-ID: <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com>
Date: Wed, 9 Oct 2024 09:19:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
References: <20241008213225.728922-1-marmarek@invisiblethingslab.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: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.10.2024 23:32, Marek Marczykowski-Górecki wrote:
> --- a/tools/libs/guest/xg_dom_bzimageloader.c
> +++ b/tools/libs/guest/xg_dom_bzimageloader.c
> @@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
>      return retval;
>  }
>  
> -/* 128 Mb is the minimum size (half-way) documented to work for all inputs. */
> -#define LZMA_BLOCK_SIZE (128*1024*1024)
> +#define LZMA_BLOCK_SIZE (256*1024*1024)

That's as arbitrary as before, now just not even with a comment at least
hinting at it being arbitrary. Quoting from one of the LZMA API headers:

	 * Decoder already supports dictionaries up to 4 GiB - 1 B (i.e.
	 * UINT32_MAX), so increasing the maximum dictionary size of the
	 * encoder won't cause problems for old decoders.

IOW - what if the Linux folks decided to increase the dictionary size
further? I therefore wonder whether we don't need to make this more
dynamic, perhaps by peeking into the header to obtain the dictionary
size used. The one thing I'm not sure about is whether there can't be
multiple such headers throughout the file, and hence (in principle)
differing dictionary sizes.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 07:27:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 07:27:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813776.1226794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syR5p-0002oZ-P6; Wed, 09 Oct 2024 07:26:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813776.1226794; Wed, 09 Oct 2024 07: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 1syR5p-0002oS-Kx; Wed, 09 Oct 2024 07:26:45 +0000
Received: by outflank-mailman (input) for mailman id 813776;
 Wed, 09 Oct 2024 07:26: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 1syR5n-0002mI-KX
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 07:26: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 1syR5n-0002dR-2n; Wed, 09 Oct 2024 07:26:43 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.244])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1syR5m-00078T-On; Wed, 09 Oct 2024 07:26: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=BGpWss8onohbaIF+hLt+PrmwzMxGyxyGFruVnIGsuUI=; b=CUznHwY4+SP0DUKANKm8Ou536F
	HusvnZVILXID4XUekLHG4I+MytaTKuDcrIZZOwJKGucmR5VVNtWP4JkvE4CTs9mqkgjALjifUcmYN
	D2zKpE/9EUrSAQ7TzQRo9DL4N4B4k3T/ZuScvV5jYlMR6f8MsGQhrIrE77NLltU5Vo5k=;
Message-ID: <1c27b9c0-eb2e-49c2-a94b-d1b8ac6550b1@xen.org>
Date: Wed, 9 Oct 2024 08:26:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Content-Language: en-GB
To: Oleksandr Tyshchenko <olekstysh@gmail.com>, xen-devel@lists.xenproject.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241007185508.3044115-1-olekstysh@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 07/10/2024 19:55, Oleksandr Tyshchenko wrote:
> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> 
> Add common requirements for a physical device assignment to Arm64
> and AMD64 PVH domains.
> 
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> ---
> Based on:
> [PATCH] docs: fusa: Replace VM with domain
> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
> ---
> ---
>   .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>   docs/fusa/reqs/index.rst                      |   1 +
>   docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>   docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>   4 files changed, 428 insertions(+)
>   create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>   create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
> 
> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst b/docs/fusa/reqs/design-reqs/common/passthrough.rst
> new file mode 100644
> index 0000000000..a1d6676f65
> --- /dev/null
> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
> @@ -0,0 +1,365 @@
> +.. SPDX-License-Identifier: CC-BY-4.0
> +
> +Device Passthrough
> +==================
> +
> +The following are the requirements related to a physical device assignment
> +[1], [2] to Arm64 and AMD64 PVH domains.
> +
> +Requirements for both Arm64 and AMD64 PVH
> +=========================================
> +
> +Hide IOMMU from a domain
> +------------------------ > +
> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
> +
> +Description:
> +Xen shall not expose the IOMMU device to the domain even if I/O virtualization
> +is disabled. The IOMMU shall be under hypervisor control only
This requirement would prevent us to expose a virtual SMMU to the guest. 
I think the requirement should only be Xen configures the stage-2 IOMMU.

> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Discover PCI devices from hardware domain
> +-----------------------------------------
> +
> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
> +
> +Description:
> +The hardware domain shall enumerate and discover PCI devices and inform Xen
> +about their appearance and disappearance.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Discover PCI devices from Xen
> +-----------------------------
> +
> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
> +
> +Description:
> +Xen shall discover PCI devices (enumerated by the firmware beforehand) during
> +boot if the hardware domain is not present.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign PCI device to domain (with IOMMU)
> +----------------------------------------
> +
> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
> +
> +Description:
> +Xen shall assign a specified PCI device (always implied as DMA-capable) to
> +a domain during its creation using passthrough (partial) device tree on Arm64
> +and Hyperlaunch device tree on AMD-x86. The physical device to be assigned is
> +protected by the IOMMU.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign PCI device from domain (with IOMMU)
> +--------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
> +
> +Description:
> +Xen shall deassign a specified PCI device from a domain during its destruction.
> +The physical device to be deassigned is protected by the IOMMU.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Forbid the same PCI device assignment to multiple domains
> +---------------------------------------------------------
> +
> +`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
> +
> +Description:
> +Xen shall not assign the same PCI device to multiple domains by failing to
> +create a new domain if the device to be passed through is already assigned
> +to the existing domain. Also different PCI devices which share some resources
> +(interrupts, IOMMU connections) can be assigned only to the same domain.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Requirements for Arm64 only
> +===========================
> +
> +Assign interrupt-less platform device to domain
> +-----------------------------------------------

Why does it need to be "interrupt-less"?

> +
> +`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
> +
> +Description:
> +Xen shall assign a specified platform device that has only a MMIO region
> +(does not have any interrupts) to a domain during its creation using passthrough
> +device tree.

Is this requirement meant to be written from a dom0less point of view? 
Asking because platform device are assigned using an xl configuration 
for non-dom0less.


> +The example of interrupt-less device is PWM or clock controller.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign interrupt-less platform device from domain
> +---------------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_interrupt_less_platform_device~1`
> +
> +Description:
> +Xen shall deassign a specified platform device that has only a MMIO region
> +(does not have any interrupts) from a domain during its destruction.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign non-DMA-capable platform device to domain
> +------------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_non_dma_platform_device~1`
> +
> +Description:
> +Xen shall assign a specified non-DMA-capable platform device to a domain during
> +its creation using passthrough device tree.
> +The example of non-DMA-capable device is Timer.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign non-DMA-capable platform device from domain
> +----------------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_non_dma_platform_device~1`
> +
> +Description:
> +Xen shall deassign a specified non-DMA-capable platform device from a domain
> +during its destruction.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign DMA-capable platform device to domain (with IOMMU)
> +---------------------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_dma_platform_device_with_iommu~1`
> +
> +Description:
> +Xen shall assign a specified DMA-capable platform device to a domain during
> +its creation using passthrough device tree. The physical device to be assigned
> +is protected by the IOMMU.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign DMA-capable platform device from domain (with IOMMU)
> +-------------------------------------------------------------
> +
> +`XenSwdgn~passthrough_deassign_dma_platform_device_with_iommu~1`
> +
> +Description:
> +Xen shall deassign a specified DMA-capable platform device from a domain during
> +its destruction. The physical device to be deassigned is protected by the IOMMU.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Assign DMA-capable platform device to domain (without IOMMU)
> +------------------------------------------------------------
> +
> +`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
> +
> +Description:
> +Xen shall assign a specified DMA-capable platform device to a domain during
> +its creation using passthrough device tree. The physical device to be assigned
> +is not protected by the IOMMU.
> +The DMA-capable device assignment which is not behind an IOMMU is allowed for
> +the direct mapped domains only. The direct mapped domain must be either safe or

What do you mean by "safe" in the context? Did you intend to say "trusted"?

> +additional security mechanisms for protecting against possible malicious or
> +buggy DMA devices must be in place, e.g. Xilinx memory protection unit (XMPU)
> +and Xilinx peripheral protection unit (XPPU).
> +
> +Rationale:
> +The IOMMU is absent from the system or it is disabled (status = "disabled"
> +in the host device tree).
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Deassign DMA-capable platform device from domain (without IOMMU)
> +----------------------------------------------------------------

Do we actually need a separate section for deassign assign without the 
IOMMU? IOW, can this be combined with the deassign with IOMMU?

> +
> +`XenSwdgn~passthrough_deassign_dma_platform_device_without_iommu~1`
> +
> +Description:
> +Xen shall deassign a specified DMA-capable platform device from a domain during
> +its destruction. The physical device to be deassigned is not protected
> +by the IOMMU.
> +
> +Rationale:
> +The IOMMU is absent from the system or it is disabled (status = "disabled"
> +in the host device tree).
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Map platform device MMIO region identity
> +----------------------------------------

Can you explain why we need to make the distinction between identity 
mapping and ...

> +
> +`XenSwdgn~passthrough_map_platform_device_mmio_region_ident~1`
> +
> +Description:
> +Xen shall map platform device memory region identity (guest address ==
> +physical address) when assigning a specified platform device to a domain.
> +The device can be either non-DMA-capable or DMA-capable.
> +
> +Rationale:
> +
> +Comments:
> +
> +Covers:
> + - `XenProd~device_passthrough~1`
> +
> +Map platform device MMIO region non-identity
> +--------------------------------------------

... non-identity one?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 07:31:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 07:31:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813781.1226803 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syR9w-0004rq-7E; Wed, 09 Oct 2024 07:31:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813781.1226803; Wed, 09 Oct 2024 07:31: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 1syR9w-0004rj-4Z; Wed, 09 Oct 2024 07:31:00 +0000
Received: by outflank-mailman (input) for mailman id 813781;
 Wed, 09 Oct 2024 07:30: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 1syR9u-0004rd-Ue
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 07:30: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 1syR9s-0002iD-EL; Wed, 09 Oct 2024 07:30:56 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.244])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1syR9s-0007Ql-8a; Wed, 09 Oct 2024 07:30: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=KCds8fb9VBnrfQfPYtElZuRg0mBMNkzJF4od8SkPqx8=; b=d3H8jKbFiXKb50ZceKus4YRz6L
	YTuAKVadsINoDFjMRVKMbgS4jkj9Z0UlUpVMfOJKNPb4jvGnzAT1mKYCnkbTFJlXok7x7Omg0Z9AR
	lQBO0UgUULTcRmrJdBEFs87XRDNr/DVOq5dtshmCkwXSRPPxtI9+7qXH19yTzQyMxqJA=;
Message-ID: <10b3e5ae-1845-4bca-ad13-da0da2ec66bc@xen.org>
Date: Wed, 9 Oct 2024 08:30:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Content-Language: en-GB
To: Bertrand Marquis <Bertrand.Marquis@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
 <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Bertrand,

On 09/10/2024 07:30, Bertrand Marquis wrote:
> Hi Stefano,
> 
>> On 9 Oct 2024, at 00:46, Stefano Stabellini <sstabellini@kernel.org> wrote:
>>
>> On Tue, 8 Oct 2024, Oleksandr Tyshchenko wrote:
>>>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
>>>>> +
>>>>> +Rationale:
>>>>> +
>>>>> +Comments:
>>>>> +
>>>>> +Covers:
>>>>> + - `XenProd~device_passthrough~1`
>>>>> +
>>>>> +Assign PCI device to domain (with IOMMU)
>>>>> +----------------------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall assign a specified PCI device (always implied as DMA-capable)
>>>>> to
>>>>> +a domain during its creation using passthrough (partial) device tree on
>>>>> Arm64
>>>>> +and Hyperlaunch device tree on AMD-x86. The physical device to be
>>>>> assigned is
>>>>> +protected by the IOMMU.
>>>>
>>>> This is a very long and complex requirement.
>>>> I would suggest to split it in 3:
>>>> - generic: Xen shall support assign PCI devices to domains.
>>>> - arm64 one: Xen shall assign PCI devices based on device tree (explain how
>>>> this is configured in dts)
>>>> - amd: xxxx based on hyperlaunch
>>>
>>> I agree, will split, but ...
>>>
>>>> - Xen shall use the IOMMU to enforce DMA operations done by a PCI device
>>>> assigned to a domain to be restricted to the memory of the given domain.
>>>
>>>
>>> ... does this need to be a separate 4th requirement here (and for the similar
>>> requirement for the platform device down the document) or this sentence is
>>> meant to be added to all resulting generic/arm64/amd requirements?
>>
>> This is not specific to PCI, though? The generic requirement is "Xen
>> shall use the IOMMU to enforce DMA operations done by a DMA-capable
>> device assigned to a domain to be restricted to the memory of the given
>> domain".
>>
>> I think it is also OK to both have a PCI-specific and a
>> non-PCI-specific requirement for that, I just wanted to mention that it
>> doesn't look like something to PCI-specific.
> 
> I think we should completely abstract out the DMA engine problem as it
> is not specific to a PCI or not device but to any DMA capable stuff.

+1

> 
> Maybe the same also goes for interrupts and how those are assigned or
> forwarded or not to a domain (attached or not to a device).

I am not sure we can abstract this one because:
  * For platform devices, we should be able to support SPIs and MSI(-x) 
(only the former is so far).
  * For PCI devices, at least on Arm, AFAIR, we only intend to support 
MSI(-x).

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:03:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:03:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813807.1226845 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syRfL-0003c8-8C; Wed, 09 Oct 2024 08:03:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813807.1226845; Wed, 09 Oct 2024 08:03: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 1syRfL-0003c1-5F; Wed, 09 Oct 2024 08:03:27 +0000
Received: by outflank-mailman (input) for mailman id 813807;
 Wed, 09 Oct 2024 08: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=eQJB=RF=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1syRfJ-0003ax-CN
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:03:25 +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 f538e2f3-8614-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:03:24 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c91a7141b8so1042129a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:03:24 -0700 (PDT)
Received: from localhost ([213.195.123.53]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c9188e7c23sm987499a12.38.2024.10.09.01.03.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:03:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f538e2f3-8614-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728461004; x=1729065804; 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=K8mSc880nixF50C1oiDuYJ8Xd1iNj3rpaAObWGjBv9Y=;
        b=gWfCe65USHDgMXaItW4TD4BgiLbx3R0T8WZEZdRhn+LfvWFGeXtfBeEBCht021f/43
         1fMWtuntSot3xgOf968nIJmVR6maKmWvwHTmq0XOFAQz0eLEzpgocrsZPC7edUbiOUTU
         5aZNbQrV4jhnjpZ040X5m20OEfGd/TbLC+qrc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728461004; x=1729065804;
        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=K8mSc880nixF50C1oiDuYJ8Xd1iNj3rpaAObWGjBv9Y=;
        b=MtJ0lYQ8qphufE/Nejo+IDtFNyHlMV4+FaNRUbIuGN19bvWQNGFwyx3PHqPGxcGlLu
         qYFqyRkkKkttu8wUy++HKyIfeRZg7p/e8k7KtiQ1f+KdeK7OOSJYCDoS++pfO97dx5EO
         60u4vdwMoWfYxdIE+aTqbnvgLmcr6sQVQGuanwi5ErJWLJOhNtsVE6mib9eKjF7QxXF+
         JdLTdFbRKPdC7GrheN9NFB2zsBOYjAOH+VoP/B377Onj3H2tqMbd5EWW0A4x6C0zY2C7
         eI5tG/rJXjP2hZhbtRlbA01Hde6v+IF41MMrB48D0IlXPio8wlNVMtnmg0JiTSLAZp4m
         hFjA==
X-Forwarded-Encrypted: i=1; AJvYcCWWkzwCQX1oyiR8gl66Qhki2EscTLK0slyBBU5GGOdf/v02qRfehQyWMqdUq0LZAMMTyi2J6d9aR9M=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy4SC1feOunSAJHkfZwnp4RXfUqlmceGpJM7yBkxO+IaR+b7Gop
	XCXyMYpPVf0FCDqyuZZLdA3Z1LNs+ZIbeUBk6Mf5+ZWUdP/8BVanb0/PnUJvxok=
X-Google-Smtp-Source: AGHT+IGa0fsFCZ1CdCeobzFcTN2lrPn1jrz+2AaEl6F9DyXytrG5VPPluu6fLsfRlCC9fhO7GecYTA==
X-Received: by 2002:a50:cc0c:0:b0:5c8:9861:a2aa with SMTP id 4fb4d7f45d1cf-5c91d5bdc5amr755970a12.21.1728461003707;
        Wed, 09 Oct 2024 01:03:23 -0700 (PDT)
Date: Wed, 9 Oct 2024 10:03:22 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
Message-ID: <ZwY4ym2Gnlx4tytP@macbook.local>
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>

On Tue, Oct 08, 2024 at 04:01:28PM +0200, Jan Beulich wrote:
> On 08.10.2024 12:47, Roger Pau Monne wrote:
> > IVMD table contains restrictions about memory which must be mandatory assigned
> > to devices (and which permissions it should use), or memory that should be
> > never accessible to devices.
> > 
> > Some hardware however contains ranges in IVMD that reference devices outside of
> > the IVHD tables (in other words, devices not behind any IOMMU).  Such mismatch
> > will cause Xen to fail in register_range_for_device(), ultimately leading to
> > the IOMMU being disabled, and Xen crashing as x2APIC support might be already
> > enabled and relying on the IOMMU functionality.
> 
> I find it hard to believe that on x86 systems with IOMMUs some devices would
> be left uncovered by any IOMMU. Is it possible that IVHD is flawed there? In
> which case we might rightfully refuse to boot? (Can you share e.g. that
> "iommu=debug" output that results from parsing the tables on that system?)

I'm afraid I don't have any of such systems to test myself, however I
have the contents of IVRS:

  ACPI Table Header
------------------------------------------------------------------
Signature          : IVRS
Length             : 0x000001F8
Revision           : 0x02
Checksum           : 0x06
OEM ID             : AMD  
OEM Table ID       : AmdTable
OEM Revision       : 0x00000001
Creator ID         : AMD 
Creator Revision   : 0x00000001
IVinfo             : 0x00203043
	  IVHD
	----------------------------------------------------------------
	Type                  : 0x10
	Flags                 : 0xB0
	Length                : 0x0044
	IOMMU Device ID       : 0x0002
	Capability Offset     : 0x0040
	IOMMU Base Address    : 0x00000000FD200000
	Segment Group         : 0x0000
	IOMMU Info            : 0x0000
	IOMMU Feature Info    : 0x80048F6E
		  Range
		--------------------------------------------------
		Type                  : 0x03
		Start of Range        : 0x0003
		End of Range          : 0xFFFE
		DTE Setting           : 0x00
		  Alias Range
		--------------------------------------------------
		Type                  : 0x43
		Start of Range        : 0xFF00
		End of Range          : 0xFFFF
		DTE Setting           : 0x00
		Source Device ID      : 0x00A5
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0x00
		Source Device ID      : 0x00A0
		Handle                : 0x00
		Variety               : HPET
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0xD7
		Source Device ID      : 0x00A0
		Handle                : 0x21
		Variety               : IOAPIC
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0x00
		Source Device ID      : 0x0001
		Handle                : 0x22
		Variety               : IOAPIC
	  IVHD
	----------------------------------------------------------------
	Type                  : 0x11
	Flags                 : 0x30
	Length                : 0x0054
	IOMMU Device ID       : 0x0002
	Capability Offset     : 0x0040
	IOMMU Base Address    : 0x00000000FD200000
	Segment Group         : 0x0000
	IOMMU Info            : 0x0000
	IOMMU Feature Info    : 0x00048000
		  Range
		--------------------------------------------------
		Type                  : 0x03
		Start of Range        : 0x0003
		End of Range          : 0xFFFE
		DTE Setting           : 0x00
		  Alias Range
		--------------------------------------------------
		Type                  : 0x43
		Start of Range        : 0xFF00
		End of Range          : 0xFFFF
		DTE Setting           : 0x00
		Source Device ID      : 0x00A5
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0x00
		Source Device ID      : 0x00A0
		Handle                : 0x00
		Variety               : HPET
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0xD7
		Source Device ID      : 0x00A0
		Handle                : 0x21
		Variety               : IOAPIC
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0x00
		Source Device ID      : 0x0001
		Handle                : 0x22
		Variety               : IOAPIC
	  IVMD
	----------------------------------------------------------------
	Type                                 : 0x22
	Flags                                : 0x08
	Length                               : 0x0020
	DeviceID                             : 0x0000
	AuxiliaryData                        : 0x0FFF
	Reserved                             : 0x0000000000000000
	IVMD Start Address                   : 0x0000000096191000
	IVMD Memory Block Length             : 0x0000000000000022
	  IVMD
	----------------------------------------------------------------
	Type                                 : 0x22
	Flags                                : 0x08
	Length                               : 0x0020
	DeviceID                             : 0x0000
	AuxiliaryData                        : 0x0FFF
	Reserved                             : 0x0000000000000000
	IVMD Start Address                   : 0x0000000097D9E000
	IVMD Memory Block Length             : 0x0000000000000022
	  IVMD
	----------------------------------------------------------------
	Type                                 : 0x22
	Flags                                : 0x08
	Length                               : 0x0020
	DeviceID                             : 0x0000
	AuxiliaryData                        : 0x0FFF
	Reserved                             : 0x0000000000000000
	IVMD Start Address                   : 0x0000000097D9D000
	IVMD Memory Block Length             : 0x0000000000000022
	  IVHD
	----------------------------------------------------------------
	Type                  : 0x40
	Flags                 : 0x30
	Length                : 0x00D0
	IOMMU Device ID       : 0x0002
	Capability Offset     : 0x0040
	IOMMU Base Address    : 0x00000000FD200000
	Segment Group         : 0x0000
	IOMMU Info            : 0x0000
	IOMMU Feature Info    : 0x00048000
		  Range
		--------------------------------------------------
		Type                  : 0x03
		Start of Range        : 0x0003
		End of Range          : 0xFFFE
		DTE Setting           : 0x00
		  Alias Range
		--------------------------------------------------
		Type                  : 0x43
		Start of Range        : 0xFF00
		End of Range          : 0xFFFF
		DTE Setting           : 0x00
		Source Device ID      : 0x00A5
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0x00
		Source Device ID      : 0x00A0
		Handle                : 0x00
		Variety               : HPET
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0xD7
		Source Device ID      : 0x00A0
		Handle                : 0x21
		Variety               : IOAPIC
		  Special Device
		--------------------------------------------------
		Type                  : 0x48
		Device ID             : 0x0000
		DTE Setting           : 0x00
		Source Device ID      : 0x0001
		Handle                : 0x22
		Variety               : IOAPIC
		  Variable Length ACPI HID Device
		--------------------------------------------------
		Type                  : 0xF0
		Device ID             : 0x00A5
		DTE Setting           : 0x40
		Hardware ID           : AMDI0020
		Extended DTE Setting  : 
		Unique ID Format      : 2
		Unique ID Length      : 9
		Unique ID             : \_SB.FUR0
		  Variable Length ACPI HID Device
		--------------------------------------------------
		Type                  : 0xF0
		Device ID             : 0x00A5
		DTE Setting           : 0x40
		Hardware ID           : AMDI0020
		Extended DTE Setting  : 
		Unique ID Format      : 2
		Unique ID Length      : 9
		Unique ID             : \_SB.FUR1
		  Variable Length ACPI HID Device
		--------------------------------------------------
		Type                  : 0xF0
		Device ID             : 0x00A5
		DTE Setting           : 0x40
		Hardware ID           : AMDI0020
		Extended DTE Setting  : 
		Unique ID Format      : 2
		Unique ID Length      : 9
		Unique ID             : \_SB.FUR2
		  Variable Length ACPI HID Device
		--------------------------------------------------
		Type                  : 0xF0
		Device ID             : 0x00A5
		DTE Setting           : 0x40
		Hardware ID           : AMDI0020
		Extended DTE Setting  : 
		Unique ID Format      : 2
		Unique ID Length      : 9
		Unique ID             : \_SB.FUR3

FWIW, I've checked on one of the AMD server systems we have on the
lab, and the IVHD entries are fairly similar to the ones here, as
neither the PCI Host Bridge, nor the IOMMU are covered by any IVHD
block.  That system however doesn't have any IVMD blocks.

> > Relax IVMD parsing: allow IVMD blocks to reference devices not assigned to any
> > IOMMU.  It's impossible for Xen to fulfill the requirement in the IVMD block if
> > the device is not behind any IOMMU, but it's no worse than booting without
> > IOMMU support, and thus not parsing ACPI IVRS in the first place.
> > 
> > Reported-by: Willi Junga <xenproject@ymy.be>
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >  xen/drivers/passthrough/amd/iommu_acpi.c | 5 +++--
> >  1 file changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/xen/drivers/passthrough/amd/iommu_acpi.c b/xen/drivers/passthrough/amd/iommu_acpi.c
> > index 3f5508eba049..c416120326c9 100644
> > --- a/xen/drivers/passthrough/amd/iommu_acpi.c
> > +++ b/xen/drivers/passthrough/amd/iommu_acpi.c
> > @@ -248,8 +248,9 @@ static int __init register_range_for_device(
> >      iommu = find_iommu_for_device(seg, bdf);
> >      if ( !iommu )
> >      {
> > -        AMD_IOMMU_ERROR("IVMD: no IOMMU for Dev_Id %#x\n", bdf);
> > -        return -ENODEV;
> > +        AMD_IOMMU_WARN("IVMD: no IOMMU for device %pp - ignoring constrain\n",
> 
> I'm not a native speaker, but "constrain" to me can only be a verb (with
> "constraint" being the noun). IOW as worded I'm afraid I can't make sense
> of the message.

Indeed, sorry for the typo.

> > +                       &PCI_SBDF(seg, bdf));
> > +        return 0;
> >      }
> >      req = ivrs_mappings[bdf].dte_requestor_id;
> >  
> 
> Down from here in parse_ivmd_device_iommu() is somewhat similar code.
> Wouldn't that need adjusting similarly then? Or else shouldn't the
> adjustment above be accompanied by a comment clarifying that the
> behavior is just because of observations on certain hardware?

Hm, I think that one is bogus and should be removed, according to my
copy of the AMD-Vi spec (48882—Rev 3.08-PUB—Oct 2023), the IVMD type
can only be:

20h=all peripherals
21h=specified peripheral
22h=peripheral range

So type 23h (ACPI_IVRS_TYPE_MEMORY_IOMMU) is not a valid type for the
IVMD blocks.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:04:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:04:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813816.1226854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syRgm-0004CT-Ko; Wed, 09 Oct 2024 08:04:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813816.1226854; Wed, 09 Oct 2024 08:04: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 1syRgm-0004CM-IK; Wed, 09 Oct 2024 08:04:56 +0000
Received: by outflank-mailman (input) for mailman id 813816;
 Wed, 09 Oct 2024 08:04: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=BLvJ=RF=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syRgl-0004CB-8o
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:04:55 +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 2a473e56-8615-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:04:53 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9957588566so381304366b.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:04:53 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7856bfsm624370366b.138.2024.10.09.01.04.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:04:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a473e56-8615-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728461093; x=1729065893; 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=0rJIohxYS8sXhXvG0bNZdOREui8BEAzrVfJEVGX/hu0=;
        b=hSPhNwqgUxlChHCdVlMvVFYkFLRAYP4FM3nCEUDFG11AsstjSjJHMgvCsoPPaEVv8h
         i7neuEzResQu9ZlfKBQRX+nFRpiqclTE1MgajKWhEWoAWqxrQ9Hy0wzWh9dEaxyp79RP
         bzP8ZP5GB/V3TdlT90J1LYEDF+o1QtcZM+JJI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728461093; x=1729065893;
        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=0rJIohxYS8sXhXvG0bNZdOREui8BEAzrVfJEVGX/hu0=;
        b=t8F/U+tY53UEhuErDq2dbJODPgOfd9K3QdWOMJh8i8Kpbs/bURg08ky7e9XAqb2Mc7
         G0XuSbLxyqeolfhGhTt52NMuOoRakA+p8jpemqBGFjN0UcZvH6bJZWZcG/7S1GlA+oMW
         OMrGGpHIwfXmM3l0C/eVLI3VkR+ZdUayvAqXPwXIO/5LayzjS61Dvan12k/boqMcFV14
         TkVPgqa30t5o9A7b2xkhz+aswOR/J7aa/s5UXfqm8jqtyAD7TDZiDqHWe9N4TLDat9uB
         ukxV19CFgeEz86FM38s8oWLqdEXKp/J7zbWobxLzAs4ljiwrHHZo6h0mI1ZWho30zNO/
         0+4w==
X-Gm-Message-State: AOJu0YwU9z256YkOhJ40nAZQQg17YDIqASnuTu3bIDsfQ574Rj9xaPaO
	WlNywRydcX6BRHRiwz0/YPXSL6rQRONJ4rZNy3Pr561iRUxSFdy6h+bzlIZY+CEriGhsj1y/yHq
	n
X-Google-Smtp-Source: AGHT+IEM2OhbG4lwAUaKyLhPx30Dxltnu0DXJm4fQi+KtfmezXjhjaLQBhS841JUrzi7GUR3zrLDPw==
X-Received: by 2002:a17:907:6e8f:b0:a99:7539:2458 with SMTP id a640c23a62f3a-a998d3a24e4mr158540366b.65.1728461092593;
        Wed, 09 Oct 2024 01:04:52 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v8 0/2] x86/boot: Improve MBI2 structure check (was: Reduce assembly code)
Date: Wed,  9 Oct 2024 09:04:37 +0100
Message-Id: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series came from part of the work of removing duplications between
boot code and rewriting part of code from assembly to C.

Changes since v1, more details in specific commits:
- style updates;
- comments and descriptions improvements;
- other improvements.

Changes since v2:
- rebased on master, resolved conflicts;
- add comment on trampoline section.

Changes since v3:
- changed new function name;
- declare efi_multiboot2 in a separate header;
- distinguish entry point from using magic number;
- other minor changes (see commens in commits).

Changes since v4:
- rebase on staging;
- set %fs and %gs as other segment registers;
- style and other changes.

Changes since v5:
- fixed a typo.

Changes since v6:
- remove merged patch;
- comment and style;
- change some pointer checks to avoid overflows;
- rename parse-mbi2.c to mbi2.c.

Changes since v7:
- removed merged parts;
- add required stack alignment.

Frediano Ziglio (2):
  x86/boot: Align mbi2.c stack to 16 bytes
  x86/boot: Improve MBI2 structure check

 xen/arch/x86/efi/Makefile | 2 ++
 xen/arch/x86/efi/mbi2.c   | 7 +++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:04:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:04:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813817.1226859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syRgm-0004Fg-SK; Wed, 09 Oct 2024 08:04:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813817.1226859; Wed, 09 Oct 2024 08:04: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 1syRgm-0004Ey-On; Wed, 09 Oct 2024 08:04:56 +0000
Received: by outflank-mailman (input) for mailman id 813817;
 Wed, 09 Oct 2024 08:04: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=BLvJ=RF=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syRgl-0004Bs-Uk
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:04:55 +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 2b70b213-8615-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:04:55 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9963e47b69so336250566b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:04:55 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7856bfsm624370366b.138.2024.10.09.01.04.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:04:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b70b213-8615-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728461094; x=1729065894; 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=IMIjAU+YIO03QyWyw7i/qsCmTQl0yrUu7IwcuHEs86A=;
        b=gF+YdP+ByTWde6h2+Cpl897B2pdYeiX3sw6hCrW+IqlQcqbVtzds/PYUUQLw0FdAvi
         Ztk0LSqsBNC0Xip0uYxOTdJo5TVVf0uQq8nIADVtkCqjVNDJqSTTJy9sSDChA9tl0S12
         xtKjfZ21q4uUlWN3nn9zjEzk4sKFmdPfE/ZlY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728461094; x=1729065894;
        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=IMIjAU+YIO03QyWyw7i/qsCmTQl0yrUu7IwcuHEs86A=;
        b=vKmX0j7K6abxaT542qJ7Ihs0KelyIbNczY1Ih+njdmEh+xefdtjrOsuHX6cC175sfC
         jMFV1Q/uP5Jfog7tB+sZQanpWfhLk7GfTfpQP5M9jLdwPG+w7Rf5p65fJZjcFhSBcyBE
         NuG3ZzlhUAmT2AupSTyZqywt+O0sw/7dhtOuaIEcL8QxVN49eMXqVt+MNm+O78fLSb5j
         lfwFH3m2cs3LszSFF0B6ludvjRQGuTsMi8WppEgEdgHv7jmYKTNl8sT2hb9q7zOSehWK
         b3RtRq595g/Vnc2An1R7+ln+Pge36SZDe76eTiSGCBKaQOlLUX6vj5vDML4lgW4lgkJe
         rY3A==
X-Gm-Message-State: AOJu0YwswGghoMhjmZLuAPMribOjvQ5pYBNQi8twryqjWYKBiFCLWtf5
	RDWr9CNR1Lxw/mVgp5AQTZNs9vN1Kl/gmDmtMchWeXXUJNRvl5X2xW2MIdBAJ+sSvMDJ8D5bg7O
	0
X-Google-Smtp-Source: AGHT+IHY/4HSnocNINSbzXwMxEsBwQ/IAetbhgaq1csph/ear1T8oQGeEa94SzP6aQPH9rduYiy2Vg==
X-Received: by 2002:a17:907:2d8b:b0:a99:577b:b9f0 with SMTP id a640c23a62f3a-a998d1e2d05mr127260366b.30.1728461094467;
        Wed, 09 Oct 2024 01:04:54 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v8 1/2] x86/boot: Align mbi2.c stack to 16 bytes
Date: Wed,  9 Oct 2024 09:04:38 +0100
Message-Id: <20241009080439.2411730-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Doing previous testing with an Adler Lake Intel machine the following
patch (improving MBI structure checking) started to fail.
Excluding it makes the tests succeed however there was not apparent
reason (looking at the code) for the failure.
So I instrumented code to output the structure and tested code with
this extracted data with and without the following patch and results
were the same.
Compiled assembly code from lab was also fine beside not keeping
the 16-byte alignment for the stack.
Turning on stack alignment solve the problem on Adler Lake machine.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/efi/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 7e2b5c07de..c2cad86856 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -11,6 +11,8 @@ $(obj)/boot.init.o: $(obj)/buildid.o
 $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=4)
 $(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary := $(cflags-stack-boundary)
 
+$(obj)/mbi2.o: CFLAGS_stack_boundary := $(cflags-stack-boundary)
+
 obj-y := common-stub.o stub.o
 obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))
 obj-bin-$(XEN_BUILD_EFI) := $(filter %.init.o,$(EFIOBJ-y))
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:04:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:04:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813818.1226875 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syRgp-0004gi-5C; Wed, 09 Oct 2024 08:04:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813818.1226875; Wed, 09 Oct 2024 08:04: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 1syRgp-0004gZ-0F; Wed, 09 Oct 2024 08:04:59 +0000
Received: by outflank-mailman (input) for mailman id 813818;
 Wed, 09 Oct 2024 08:04: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=BLvJ=RF=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syRgn-0004Bs-Lm
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:04:57 +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 2c7bea15-8615-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:04:57 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9950d27234so456976066b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:04:57 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7856bfsm624370366b.138.2024.10.09.01.04.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:04:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c7bea15-8615-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728461096; x=1729065896; 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=5zZ3wGBySbXmRtfmFQfFr7wFwdfciZzlXfjXPqq0IY4=;
        b=AmqjSA14peDLULBAsUEv10rvDQbnzAqnFD89+kjJNVCgZi8eEDM6+PnbqzotP8WVPC
         NuOZKJCi8bqgDCn2yw+2QSem95gsxoEnqJ0cMnva0hh8vZYBohvMxt7qCReylu3hJoeg
         hxMRabGyt8+S6cGrV9jXUookddw8CmRliBV3Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728461096; x=1729065896;
        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=5zZ3wGBySbXmRtfmFQfFr7wFwdfciZzlXfjXPqq0IY4=;
        b=M1PdhPwUVV0XM4tUBt21lzG3ygnuNTT/aroJs2Hz9e+Y84zclkPW4FJpugsFOh+6ix
         KxK7NmbByePCvGemtMHFSWpjYJhMAr8XnDgCiiHwRQV3/M2IlFKoiufyt1OfBnViJSGA
         GaxYyI1hw5U2Q3iP0lfd95E9yEq0tCPeo9cUBf0F1FZPbK3nWYEfMUXkOhSo68NvDRuA
         mh/L01mFaVAE4gT4bCQJLqucw3Ce8so7h6FEJaP6tVKZd41Kjp2xUdgdKI6SAvO15oZ5
         ccTSJ+rhXfk7k7zVYqreVAh8mj7kwYCB9wDRzKQau8Cb7d5TKK/3cLdOwnd2hHitluBm
         8aGA==
X-Gm-Message-State: AOJu0Yw0cUhsJhGV2CQlwJ1KWhDgLhJgE8zFSr0Z5Ds7ZR6NfcaLhZHV
	K3t2DzUibUZfqoATuRcYdedccYw0uix/nhZUpw8Vqw0t+tt/YtyAu2J+vRwyCWX7ygFew9AEYUI
	I
X-Google-Smtp-Source: AGHT+IF60C0IUYkjP4YU4uNeiKMgmzNm8zNbYv9vfb52kCfxP9XStTkqXGkjyWjGt1GeaE9tNy/Caw==
X-Received: by 2002:a17:907:1c96:b0:a99:6a5a:bab with SMTP id a640c23a62f3a-a998d252ef3mr114619966b.39.1728461096317;
        Wed, 09 Oct 2024 01:04:56 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v8 2/2] x86/boot: Improve MBI2 structure check
Date: Wed,  9 Oct 2024 09:04:39 +0100
Message-Id: <20241009080439.2411730-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Tag structure should contain at least the tag header.
Entire tag structure must be contained inside MBI2 data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v6:
- compare against total_size every time to avoid overflows.

Changes since v7:
- check for tag type being MULTIBOOT2_TAG_TYPE_END before checking
  tag size. This allows caller to not fill full tag (type field is
  before size field).
---
 xen/arch/x86/efi/mbi2.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/efi/mbi2.c b/xen/arch/x86/efi/mbi2.c
index 55a1777483..d2f0f0ee61 100644
--- a/xen/arch/x86/efi/mbi2.c
+++ b/xen/arch/x86/efi/mbi2.c
@@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     EFI_HANDLE ImageHandle = NULL;
     EFI_SYSTEM_TABLE *SystemTable = NULL;
     const char *cmdline = NULL;
+    const void *const mbi_raw = (const void *)mbi;
     bool have_bs = false;
 
     if ( magic != MULTIBOOT2_BOOTLOADER_MAGIC )
@@ -21,8 +22,10 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     /* Skip Multiboot2 information fixed part. */
     tag = _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN));
 
-    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
-            tag->type != MULTIBOOT2_TAG_TYPE_END;
+    for ( ; (const void *)(tag + 1) - mbi_raw <= mbi->total_size &&
+            tag->type != MULTIBOOT2_TAG_TYPE_END &&
+            tag->size >= sizeof(*tag) &&
+            (const void *)tag + tag->size - mbi_raw <= mbi->total_size;
           tag = _p(ROUNDUP((unsigned long)tag + tag->size,
                    MULTIBOOT2_TAG_ALIGN)) )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:15:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:15:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813843.1226885 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syRr8-0007l0-0z; Wed, 09 Oct 2024 08:15:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813843.1226885; Wed, 09 Oct 2024 08:15: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 1syRr7-0007kt-U1; Wed, 09 Oct 2024 08:15:37 +0000
Received: by outflank-mailman (input) for mailman id 813843;
 Wed, 09 Oct 2024 08:15: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 1syRr7-0007kj-7r; Wed, 09 Oct 2024 08:15: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 1syRr7-00044y-6m; Wed, 09 Oct 2024 08:15: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 1syRr6-0000Mo-LC; Wed, 09 Oct 2024 08:15:36 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syRr6-0008Qw-Kj; Wed, 09 Oct 2024 08:15: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=soFbHUusaKNvv+yLFwyhHdf3DA2BCjVCHhGMbFg3Ey8=; b=teyQklaGSa5OGy01R7qHGzEO/w
	RLYRI143GKaBLM7qrSGTDHC+K4kxqu3V6VhaPpMO2rm0/9m07niXw2MxP7elPFL0x3eHnqOJGL9a1
	BQ93zxmGeAfPClWPdirVAVeszvNjyDJG3+3NR7wNxjN/6ab/mzyEAs32JcgIKfr9E1AE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188023-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188023: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=fd619ec4608564fe6cf5ba8f9ae986206355861e
X-Osstest-Versions-That:
    ovmf=06da7daab1eb129a1bf3eb93ed74c102d1587071
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 08:15:36 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 fd619ec4608564fe6cf5ba8f9ae986206355861e
baseline version:
 ovmf                 06da7daab1eb129a1bf3eb93ed74c102d1587071

Last test of basis   188020  2024-10-09 02:41:45 Z    0 days
Testing same since   188023  2024-10-09 06:15:04 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    


------------------------------------------------------------
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
   06da7daab1..fd619ec460  fd619ec4608564fe6cf5ba8f9ae986206355861e -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:20:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:20:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813852.1226895 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syRw3-0001kK-LO; Wed, 09 Oct 2024 08:20:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813852.1226895; Wed, 09 Oct 2024 08: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 1syRw3-0001kD-HE; Wed, 09 Oct 2024 08:20:43 +0000
Received: by outflank-mailman (input) for mailman id 813852;
 Wed, 09 Oct 2024 08:20: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syRw2-0001k6-Fn
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:20:42 +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 5e595494-8617-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:20:39 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9968114422so229914466b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:20:39 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7d4d9csm625482466b.182.2024.10.09.01.20.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 01:20:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e595494-8617-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728462039; x=1729066839; 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=RBnzNVNHQXaj4pKy6JLWMukrxhLEKIwVCfDR2u13T4s=;
        b=BwI+WscaUiUgOVHF5wd4jLoUbApVSTYHRlyNLTeWgDjeZP89qzxXBpghu/S52ALQum
         W9SoJeZvM48KkTW5IXLsC3KRoQKgShtoNnTUkD+HxDHHiTaGjTRkl4VrpZHcQYc7O6FC
         YrFoeOa2F2XpiA3ujMuW71lb8aTRfKSq0ETXEZjYZEcohxGZ6OJzqyc2Rog9zQDwWJXX
         tByRb2O7VmujGHwJcAPLH0M2WUr4a5t2yIahcqisbQqzQR8x51DQnHU6+sYcROv656pp
         toVc6Mj3BbKLussHra1RPKAXJggJlhpxW4yLUXbXItAZM/oTxC2H21yE7vKBfltVcxX1
         +Cgw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728462039; x=1729066839;
        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=RBnzNVNHQXaj4pKy6JLWMukrxhLEKIwVCfDR2u13T4s=;
        b=FEWNDaNRf9bMToyhdvcixCBfi/YaSpJHybJkFw0SY6ezS7+QCP0m+LijAolGVI1n3H
         77m9UZvD4QSma9uKOQntLR+fEqAgYE5m4OOSHd4cYmg7nKmbuyugmHHIsVX7+d+5LmOE
         1pNcNOtlRRs/d5aB/JhsRjFvH0TdX9PoFM7Fw9IiyRs+q9EGIvUf+2pa9WwUGuWpNlKj
         Rj+rWUtjwNUYvgVWRyQ3yBYyq8EGFjGcJruLNH2LT6uyKBJM1Hs04pfIwqpwEVc+4jBg
         B2i161iaW78xrLR8CZ1kDLdp2tgV8F9jxq+qe+Ihx+KyAvsgMXuE9I3nGEp6UV3lI6fR
         rIvg==
X-Forwarded-Encrypted: i=1; AJvYcCWeKvfGlimzxA6rVR2oAwivMnfdWgp0pkSWfv400WJLEMOmL+Oo6tqb3tMTsnUQHQM8N0bzon7t+oY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwZf3jXC0yio3i7R1qu1lYA1umIaK5ATNJP4+IbSzDv0O7c/9eo
	lEBLoSZ9ZGkKEUA7RggotHceSVT/4r6NJe3Chw0df5Uy0kkr8nI/Zxora3B1Wf/7h/TRca7DdUU
	=
X-Google-Smtp-Source: AGHT+IFYDjjRNBPWxu0v7BUdcGDH6gHOhv+eNXetqShaAv2ET8oIxeNW93kMg3IcmfbxdTMhXpUPdQ==
X-Received: by 2002:a17:907:1c9c:b0:a99:61f2:49eb with SMTP id a640c23a62f3a-a998d2f7cbcmr137299166b.42.1728462039126;
        Wed, 09 Oct 2024 01:20:39 -0700 (PDT)
Message-ID: <f54d8f4b-e088-4ebe-a72f-ec4a540f9b33@suse.com>
Date: Wed, 9 Oct 2024 10:20:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v8 1/2] x86/boot: Align mbi2.c stack to 16 bytes
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
 <20241009080439.2411730-2-frediano.ziglio@cloud.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: <20241009080439.2411730-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 10:04, Frediano Ziglio wrote:
> Doing previous testing with an Adler Lake Intel machine the following
> patch (improving MBI structure checking) started to fail.

In patch descriptions please don't refer to "this patch" or "the following
patch"; describe a commit in a self-contained way, with references to
what's already committed mentioning commit hash and title, whereas
references to what hasn't been committed using merely the title (and maybe
a link to its most recent posting). I'm not sure though that the other
patch really matters here beyond having exposed an issue that was there
(latently) anyway.

> Excluding it makes the tests succeed however there was not apparent
> reason (looking at the code) for the failure.
> So I instrumented code to output the structure and tested code with
> this extracted data with and without the following patch and results
> were the same.
> Compiled assembly code from lab was also fine beside not keeping
> the 16-byte alignment for the stack.
> Turning on stack alignment solve the problem on Adler Lake machine.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

This really wants a Fixes: tag then.

> --- a/xen/arch/x86/efi/Makefile
> +++ b/xen/arch/x86/efi/Makefile
> @@ -11,6 +11,8 @@ $(obj)/boot.init.o: $(obj)/buildid.o
>  $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=4)
>  $(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary := $(cflags-stack-boundary)
>  
> +$(obj)/mbi2.o: CFLAGS_stack_boundary := $(cflags-stack-boundary)
> +
>  obj-y := common-stub.o stub.o
>  obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))
>  obj-bin-$(XEN_BUILD_EFI) := $(filter %.init.o,$(EFIOBJ-y))

You're duplicating code, which is better to avoid when possible. Is there
a reason the earlier commit didn't simply add mbi2.o to $(EFIOBJ-y)? That
way the existing logic would have covered that file as well. And really I
think it should have been mbi2.init.o (or else adding it into $(obj-bin-y)
is wrong), which probably wants correcting at the same time (ISTR actually
having requested that during an earlier review round).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:22:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:22:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813860.1226904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syRy6-0002Hp-VZ; Wed, 09 Oct 2024 08:22:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813860.1226904; Wed, 09 Oct 2024 08: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 1syRy6-0002Hi-Sw; Wed, 09 Oct 2024 08:22:50 +0000
Received: by outflank-mailman (input) for mailman id 813860;
 Wed, 09 Oct 2024 08:22: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syRy5-0002HY-2F
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:22:49 +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 aa4cfc52-8617-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:22:47 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a994ecf79e7so47948966b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:22:47 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993f13620dsm553556966b.215.2024.10.09.01.22.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 01:22:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa4cfc52-8617-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728462167; x=1729066967; 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=cAFgz183wJIgXepemo3v3w1gU8IgIGcSvLo6kOlYkM4=;
        b=hCxCCeBC6aZt90ub2nnwRUf0gWH2vc0kuC06/LGgaqK4kpTBBNCqPAswWrrHUwg3xS
         ODIx/MnwzsPLo7lhKHyRCl+2D7yHprGYfXcCRBrukjh7MT21mJscIWHpmt/ej5wg2naE
         ahYt0xDLvaKNe+4WR73zh4+3kvJyokBXBcLtBFC1LBlZqVDS0ugRMT6ZQf8jegYcn0eS
         jdvmTcPcGA+PL5PYPeao7LRVkUyfGjeT4n/KW6oH9AZ8w2KUUukhaji9KwLMsUmcuFih
         ErvBHxct3Mw4LBcu9WUefgwIWc4g+WhRGmNSpaSZ/rrOurNqkg7WpHLlNw6biJfjogN0
         sH2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728462167; x=1729066967;
        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=cAFgz183wJIgXepemo3v3w1gU8IgIGcSvLo6kOlYkM4=;
        b=KzAaeQADJO+uJHlJ0LdX7VA+IV/A+B5x9rNE3q2AyybjiZmsMZaGpFCOcNQHH7esU1
         4OVAp5+5DzRUTE3JwY0AFXghwsOZTdzNXz0NW8rx7Ng2maOUqQUQXQa9Z6f48lqfcqvS
         BbTSssPeZ9TKpeR7PGUcfwllQus9z75gVBoaI06xEp8lVHuX4Ms94Yhg9xZeK0o4XEbr
         r70Ovxt99IfVI2MBaSVxj7xtocUdn0G2CLhQXhFhTZh0KT0brYxPiuD0tzBiu+55R2mx
         uXrmxwWEusw6QiPL8YCrh0mZCzRXxTsdf+azj0t99vgezhj4A6K+Zj+Bd2fWeU0GqAB7
         9AAw==
X-Forwarded-Encrypted: i=1; AJvYcCWqxhIZI6hOLPthGqB6s/NaKPifGnnYSzIjcwebrp+0BFuaUUxcy2n4E84Isr5I2+2qgWEFWOvg5pQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxuEhPC/FBOK65ZKyyXB9pE+/5c7Wq/lXXoPLw3AfmGcEMKQhHZ
	k4BzYvSpAa58hk8kTfhx0RFNcq1amzaDgF8yoJbeWnVa3VvQ6sILET5XYNldmw==
X-Google-Smtp-Source: AGHT+IF6SygvG7q1ZETdZz+YQ8XDtYXrDS5/8Be/fIvFADg8rpkyTY2fWSBhLLpQBYt8zVEhvooNig==
X-Received: by 2002:a17:906:7314:b0:a99:6163:d4f8 with SMTP id a640c23a62f3a-a998d333d96mr143125166b.58.1728462166605;
        Wed, 09 Oct 2024 01:22:46 -0700 (PDT)
Message-ID: <8773c396-a67f-4e9a-8d98-ed133d2bb474@suse.com>
Date: Wed, 9 Oct 2024 10:22:45 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v8 2/2] x86/boot: Improve MBI2 structure check
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
 <20241009080439.2411730-3-frediano.ziglio@cloud.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: <20241009080439.2411730-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 10:04, Frediano Ziglio wrote:
> Tag structure should contain at least the tag header.
> Entire tag structure must be contained inside MBI2 data.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813880.1226966 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCT-0007D0-8P; Wed, 09 Oct 2024 08:37:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813880.1226966; Wed, 09 Oct 2024 08:37: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 1sySCT-0007Cq-3S; Wed, 09 Oct 2024 08:37:41 +0000
Received: by outflank-mailman (input) for mailman id 813880;
 Wed, 09 Oct 2024 08:37: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySCG-0005FO-OO
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:37:28 +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 b6e9e044-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:37:28 +0200 (CEST)
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-632-8rtXbGUlOcKjgMJD3isUrw-1; Wed, 09 Oct 2024 04:37:25 -0400
Received: by mail-qk1-f200.google.com with SMTP id
 af79cd13be357-7a9a71b17a3so1133166985a.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:37:25 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.37.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:37:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b6e9e044-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463047;
	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=Gnue2+gdLv6DtZCMne1e2l6o8jQm3Jw9vQelKyozb04=;
	b=CAUa+uHMNlCN98nEBAwD4AlEckzj8yqa7PvBGyyXBpI35ngc65WStOe+4iJ6b0DqAq9Dql
	XUGe1s3WGvL4V4cGiXDnb2sz3/84l8AVzzcPb/AcFUYSGdJmHyMF7WyIVey14aJd4p0xPk
	yADrBN45Zsob/5mURb7evh3cZdCp/qM=
X-MC-Unique: 8rtXbGUlOcKjgMJD3isUrw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463045; x=1729067845;
        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=Gnue2+gdLv6DtZCMne1e2l6o8jQm3Jw9vQelKyozb04=;
        b=gxHciMKnLbZyfkpdpgTghEgiQHvI1BFRVgCBAKV7CemzCCwWBwPcaUVnBEDDtA4nqi
         jgh1ftYO/P+G7lE3KE4H7+0kK+JeD50YA+o13IYGTYBOiXCLfRao/QIbggjlPS0hAtPq
         Nx+rhBtbahQNhs8t1coTk9KdgrGux3BS/zknj8wHZXNt62sptWmdYn30OQoRJjV6ijy6
         bwt8J3eEPadtMJyRLM3asG4FdmuiQ5WivOj5FS2RP4AEk/dFulol4X1S0QM2qGHqyL+J
         krYI28FMxGOGHIsO5fkdmBZJf8SuhG/tMxswlVrviMud6nbH/NaU/FUYF5MyQUM+5yKs
         Cv6Q==
X-Forwarded-Encrypted: i=1; AJvYcCXoxwIpYh3TvpkSWgwh/5jdbwx4QN4j6Angt1+FX/Akasf1FGPJIE8ufZw71v/+JTB+GiKOEPIgNj4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzwdSpVbnB3ugw6jQh/yN6RAIrvhnXCuVMkxK1t+2yrZhSjLa/s
	ROVJq43dnJuO1517m2MQkSSaygmifu3+ctzT63fqzP6cJGfN7bViq7en3QaIpOxt8pnE5p8BprV
	tQIjPFoWCPWZ5FcpeDIcda5P9fWRifpHLti54n5WMKTxfKOvNNOLsfSkMmdIuV+h+
X-Received: by 2002:a05:620a:1a8e:b0:7a9:8679:993 with SMTP id af79cd13be357-7b07952776bmr283212085a.13.1728463044973;
        Wed, 09 Oct 2024 01:37:24 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IF8iMtbRuVOzUsf8z3rLAbJgY7Sw8kyfd9EYZaEc1PG6rkZnmlQM8I/F6cPMCjVwViEvjtORQ==
X-Received: by 2002:a05:620a:1a8e:b0:7a9:8679:993 with SMTP id af79cd13be357-7b07952776bmr283201785a.13.1728463044398;
        Wed, 09 Oct 2024 01:37:24 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 05/13] net/ntb: Use never-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:11 +0200
Message-ID: <20241009083519.10088-6-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

hw/amd and how/intel enable their PCI-Device with pci_enable_device().
Thus, they need the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/ntb/hw/amd/ntb_hw_amd.c    | 4 ++--
 drivers/ntb/hw/intel/ntb_hw_gen1.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
index d687e8c2cc78..b146f170e839 100644
--- a/drivers/ntb/hw/amd/ntb_hw_amd.c
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
@@ -791,7 +791,7 @@ static int ndev_init_isr(struct amd_ntb_dev *ndev,
 err_msi_enable:
 
 	/* Try to set up intx irq */
-	pci_intx(pdev, 1);
+	pci_intx_unmanaged(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
@@ -831,7 +831,7 @@ static void ndev_deinit_isr(struct amd_ntb_dev *ndev)
 		if (pci_dev_msi_enabled(pdev))
 			pci_disable_msi(pdev);
 		else
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 	}
 }
 
diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c
index 079b8cd79785..9ad9d7fe227e 100644
--- a/drivers/ntb/hw/intel/ntb_hw_gen1.c
+++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c
@@ -445,7 +445,7 @@ int ndev_init_isr(struct intel_ntb_dev *ndev,
 
 	/* Try to set up intx irq */
 
-	pci_intx(pdev, 1);
+	pci_intx_unmanaged(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813878.1226943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCN-0006KC-TB; Wed, 09 Oct 2024 08:37:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813878.1226943; Wed, 09 Oct 2024 08:37: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 1sySCN-0006IK-Ji; Wed, 09 Oct 2024 08:37:35 +0000
Received: by outflank-mailman (input) for mailman id 813878;
 Wed, 09 Oct 2024 08: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySC7-0005FO-M4
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:37:19 +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 b16cfbd0-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:37:19 +0200 (CEST)
Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com
 [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-43-fvUCPhF3O4eJdppvdTGHWw-1; Wed, 09 Oct 2024 04:37:16 -0400
Received: by mail-qk1-f197.google.com with SMTP id
 af79cd13be357-7a9a6634b08so124380385a.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:37:16 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.37.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:37:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b16cfbd0-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463037;
	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=x2+4tkUVcLGJF5zHhr3G6hU1vXfnQU3y0JjqPGIiXBc=;
	b=UjcAybwaw2kqxM+UBdxnR9CoTvvYKZ4N7l4mTHfI2u34MhXIGTnbf3c+z2Mg/YO6MO5KAs
	L0uCX+oUeUkbBZwhsAaQ0/jTNZxU6xbG+4R1BBHjXZ/9moGyVxivOkpD5yK2pyZxtf/0fU
	0w+4ZhN+10nKwhJyz26svJnV4SRw8vA=
X-MC-Unique: fvUCPhF3O4eJdppvdTGHWw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463036; x=1729067836;
        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=x2+4tkUVcLGJF5zHhr3G6hU1vXfnQU3y0JjqPGIiXBc=;
        b=jbzpxuHusxmT6j9JFDl6wwQe4PRwMGCR3I6dH4CxYbowAm++1eV8us95/ZaaV59Wvf
         jMOFJQs5kj0WWiaLbr2j8g5BU0OsRYFs8jMNaiLG3SK5QZxcjDK9dwYD3Qw9B4UdrpEi
         BsvEVm3PP3o2WJchBbW65otbEcrqbL+WlKmxRWzzeCMgNM8TY9Zh/IMvS7KA777X7ZlZ
         UWhxEE+a6ICX97APdfq+G7oVwwR6LvwXROIyi7UYzXGmay85whMk3+Uy4ZURrXzLGr1v
         FyOZXc4Ols7m7FBpNPHJB/PPS+THHyFhLmA9VlXxRP2GZmLWNI3bElOtfAsWhP/mZSBF
         J+9A==
X-Forwarded-Encrypted: i=1; AJvYcCXmnXXwPzMTH9ldnpCdHnjVL46e8D+EPiGgw+x4S4H4lB0w8HjZUadP7ofvvoJ+Hfm91dr0AdnlUKA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwXht2t7rcZZdUd4oWl2VGhy2fBjaUkCQQtW8SsNGitz0tqpC1P
	pAb2VvR6SMIPQW8IiB1YQY+zD1r2f5+TRGYWXC2KRmhStQwR5xmpJ87x47iI2f/FAvAZDYjdVsG
	nv90BP24MVU91YqwmIig7NEBU8x3ARpruKN9fDMiR/SKz21aGtyZ2686DMd/XMat0
X-Received: by 2002:a05:620a:2585:b0:7a1:e341:d543 with SMTP id af79cd13be357-7ae85f85358mr1004133085a.28.1728463035646;
        Wed, 09 Oct 2024 01:37:15 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEO+/SwmcH6h0Vxkc+UACkKjxSzn/5VgASgM8SukkUVixA4gIuWgHYKW5iFaezTFbfMq+Vx5w==
X-Received: by 2002:a05:620a:2585:b0:7a1:e341:d543 with SMTP id af79cd13be357-7ae85f85358mr1004126485a.28.1728463035252;
        Wed, 09 Oct 2024 01:37:15 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 04/13] net/ethernet: Use never-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:10 +0200
Message-ID: <20241009083519.10088-5-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

broadcom/bnx2x and brocade/bna enable their PCI-Device with
pci_enable_device(). Thus, they need the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 2 +-
 drivers/net/ethernet/brocade/bna/bnad.c          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 678829646cec..2ae63d6e6792 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -1669,7 +1669,7 @@ static void bnx2x_igu_int_enable(struct bnx2x *bp)
 	REG_WR(bp, IGU_REG_PF_CONFIGURATION, val);
 
 	if (val & IGU_PF_CONF_INT_LINE_EN)
-		pci_intx(bp->pdev, true);
+		pci_intx_unmanaged(bp->pdev, true);
 
 	barrier();
 
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index ece6f3b48327..2b37462d406e 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -2669,7 +2669,7 @@ bnad_enable_msix(struct bnad *bnad)
 		}
 	}
 
-	pci_intx(bnad->pcidev, 0);
+	pci_intx_unmanaged(bnad->pcidev, 0);
 
 	return;
 
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813870.1226915 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCM-0005pc-Gy; Wed, 09 Oct 2024 08:37:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813870.1226915; Wed, 09 Oct 2024 08:37: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 1sySCM-0005oj-EL; Wed, 09 Oct 2024 08:37:34 +0000
Received: by outflank-mailman (input) for mailman id 813870;
 Wed, 09 Oct 2024 08:36: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySBZ-0005FO-2h
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:36:45 +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 9b8b3771-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:36:42 +0200 (CEST)
Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com
 [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-620-1xOK9-f3OGWC3-rITsu20w-1; Wed, 09 Oct 2024 04:36:40 -0400
Received: by mail-qk1-f197.google.com with SMTP id
 af79cd13be357-7afcd3945fbso184292185a.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:36:40 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.36.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:36:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b8b3771-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463001;
	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=mOyNV1blUkGi8SBN/l2nmGqTH8tAJ4tec1wRLOcI2Z8=;
	b=c2YPoBJLb3+dibEsK193hHusnbThaSYTbjnwgisk4TP6N364RwPgMlF4RKqlJyj5zeBSnB
	WhZGuS49/b272eItXbIyLuXz43grN01icKcPQ9oNfu6zignJOyhCQ/pJNfeoiFRc5nE/it
	HX30RBDGEjUbcTUbGtw1MfZE95rQv9k=
X-MC-Unique: 1xOK9-f3OGWC3-rITsu20w-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728462999; x=1729067799;
        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=mOyNV1blUkGi8SBN/l2nmGqTH8tAJ4tec1wRLOcI2Z8=;
        b=RiPPutncGjjwssUl6fB6Q0vuI9tlq4yi1D/XPhQJ65K/VHFIAPR2Cgg/zKd5abmNw7
         MSZSVszTL214X4xs/MmhNCkvrjaR0NQMkc0rx7Ld8YF4ABZwZBHzxRhXQMFQqd8fJ1qJ
         ifgPzCTJsMK92fLMJSR9UkTKsuq8aEIsHpay3kdZG6vJk00kS03ZhAoKhBulDfXlef6p
         EheMU8uxi362LAW9sylAKpCHq7OO9tzWScpurw0yIhZuRu3VKLn2twhokfA+6yGQ35mK
         qEOfswmzgd/FOpDpYnq5B0abThgc5XdFue6u3QG13XZ+Io7pcFCcIGCeBxmL0UrCOUj8
         QK2A==
X-Forwarded-Encrypted: i=1; AJvYcCWumdr56Cg4kXeYEZd+ViYQJZCr9Soq3fVi9vmovaSBY7z23dTk5L5V48x7qmx9E0DrEhp4Jacq1A0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwNF101GbjyRsNlmxvzJFYiGZN3vaw7no08QYNeAlWYbMFdGywJ
	GccWKk1gooniLJzKSRjPhdxD3sf0p+maLYN/QDlTQQp8eBmxjVLK/U/c/+QUl19wN26w3uiEPvV
	YSiggmCpdH9hwLM4pzbninYxCnHKRtayqCpBEi7h75LRcMlTHHrWUEWAen6qDcvoC
X-Received: by 2002:a05:620a:29c7:b0:7a2:1db:e286 with SMTP id af79cd13be357-7b0874cd670mr234485685a.52.1728462999296;
        Wed, 09 Oct 2024 01:36:39 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFU56nfNbRn4xRa9L06f5Bja7V/qokH03xrDBZWS39o5ckdxWurQft3H7j0iSjtDvnBZDt4+Q==
X-Received: by 2002:a05:620a:29c7:b0:7a2:1db:e286 with SMTP id af79cd13be357-7b0874cd670mr234479185a.52.1728462998841;
        Wed, 09 Oct 2024 01:36:38 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 00/13] Remove implicit devres from pci_intx()
Date: Wed,  9 Oct 2024 10:35:06 +0200
Message-ID: <20241009083519.10088-1-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

Hi all,

this series removes a problematic feature from pci_intx(). That function
sometimes implicitly uses devres for automatic cleanup. We should get
rid of this implicit behavior.

To do so, a pci_intx() version that is always-managed, and one that is
never-managed are provided. Then, all pci_intx() users are ported to the
version they need. Afterwards, pci_intx() can be cleaned up and the
users of the never-managed version be ported back to pci_intx().

This way we'd get this PCI API consistent again.

The last patch obviously reverts the previous patches that made drivers
use pci_intx_unmanaged(). But this way it's easier to review and
approve. It also makes sure that each checked out commit should provide
correct behavior, not just the entire series as a whole.

Merge plan for this would be to enter through the PCI tree.

Please say so if you've got concerns with the general idea behind the
RFC.

Regards,
P.

Philipp Stanner (13):
  PCI: Prepare removing devres from pci_intx()
  ALSA: hda: hda_intel: Use always-managed version of pcim_intx()
  drivers/xen: Use never-managed version of pci_intx()
  net/ethernet: Use never-managed version of pci_intx()
  net/ntb: Use never-managed version of pci_intx()
  misc: Use never-managed version of pci_intx()
  vfio/pci: Use never-managed version of pci_intx()
  PCI: MSI: Use never-managed version of pci_intx()
  ata: Use always-managed version of pci_intx()
  staging: rts5280: Use always-managed version of pci_intx()
  wifi: qtnfmac: use always-managed version of pcim_intx()
  HID: amd_sfh: Use always-managed version of pcim_intx()
  Remove devres from pci_intx()

 drivers/ata/ahci.c                            |  2 +-
 drivers/ata/ata_piix.c                        |  2 +-
 drivers/ata/pata_rdc.c                        |  2 +-
 drivers/ata/sata_sil24.c                      |  2 +-
 drivers/ata/sata_sis.c                        |  2 +-
 drivers/ata/sata_uli.c                        |  2 +-
 drivers/ata/sata_vsc.c                        |  2 +-
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 ++--
 drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c |  2 +-
 .../wireless/quantenna/qtnfmac/pcie/pcie.c    |  2 +-
 drivers/pci/devres.c                          | 24 +++----------------
 drivers/pci/pci.c                             | 14 +----------
 drivers/staging/rts5208/rtsx.c                |  2 +-
 include/linux/pci.h                           |  1 +
 sound/pci/hda/hda_intel.c                     |  2 +-
 15 files changed, 18 insertions(+), 47 deletions(-)

-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813874.1226926 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCN-00060u-3b; Wed, 09 Oct 2024 08:37:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813874.1226926; Wed, 09 Oct 2024 08:37: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 1sySCM-0005zq-UO; Wed, 09 Oct 2024 08:37:34 +0000
Received: by outflank-mailman (input) for mailman id 813874;
 Wed, 09 Oct 2024 08:37: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySBp-0005FO-Be
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:37:01 +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 a67d4ad1-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:37:00 +0200 (CEST)
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-66-SP56zgMvMUybXpx4qb8Eow-1; Wed, 09 Oct 2024 04:36:58 -0400
Received: by mail-qk1-f200.google.com with SMTP id
 af79cd13be357-7afdf50bfcaso139001485a.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:36:58 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.36.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:36:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a67d4ad1-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463019;
	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=1PPm9S1zRcO86dlq3mHzZGXnJgcIWsisXbqhvFp0Kes=;
	b=cfQGjjcnjw+Foio7/PqFa84qZtptYKB3xcumLVdkQSxRZE7iw7TP6MxrDRS/VwNmj9CZ+7
	Gw6ZT5u5bga40p2OD4ZoVlePPDLAMaOoVgSNSuM2Uc7L0xpWF4w5Fd6Odu/ih3PFldqo0D
	Q+EK9B8fY6541HY42KHjLKTBaDpd5KY=
X-MC-Unique: SP56zgMvMUybXpx4qb8Eow-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463018; x=1729067818;
        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=1PPm9S1zRcO86dlq3mHzZGXnJgcIWsisXbqhvFp0Kes=;
        b=U2aco2lhaciho1JgBqiadwLqbXrzYTxP1OhTXNhdllY7tPcNM2NROgar1fmk9GQHyK
         CDfoY71o2QngMZWjv+TCAbgrzFgMUyMPsh1fenkSq4QxEEwwJmOFxLNZBWaAm2kf1VNW
         r+16MxUTgFA7RtQLRdeqc2RRnNExtpw0Az5/pASzn9WlMwUo+qlCNsef2eRrDrDtUGeb
         ebBduQjD6C3l9KPhF7KypWms5mq+MKxcC7hwoQspUpfNjW6o/flnUXOCm4pWk9i5knfr
         x+Q7t7x8pkTLYaUWaeREcpD9pAik/8oy1bWcc/tQQPi41O9bwIC6+mdIwQucjTZ5Z1h5
         yo0Q==
X-Forwarded-Encrypted: i=1; AJvYcCUD9P4m0Z7Sen19+1krcwdamAUWBqkgaZDFyFuuHOyh7T6b0BedPD8UMP+aVTC398GNoEI4609d8/c=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw6eyCfh7SDaOoDl13LmyiJ256uXCIqoJ/iFWLBI1erRKaB+uQJ
	ksc3mBZtxJYoz7gEGwCW/EI+9EKp0uXJbuKuL/cBY3OOIE2Bjb1ZMV/lYekXSWarhxT2wpQqaW0
	KTvpntMSQFdiPXl0rJG866tc3rKffM4hH9ampMiD76fon9uePkzbq7Hl6ucbTtAfB
X-Received: by 2002:a05:620a:40d2:b0:7af:cea1:2dd6 with SMTP id af79cd13be357-7afcea13062mr575428985a.9.1728463017661;
        Wed, 09 Oct 2024 01:36:57 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGvN3DzIDBf5agA7u3XzrMCdDXSCcUz6hrKViBRxZsE1bbVXxxuhuZe+LfXJzoxle8rULiRWQ==
X-Received: by 2002:a05:620a:40d2:b0:7af:cea1:2dd6 with SMTP id af79cd13be357-7afcea13062mr575422585a.9.1728463017195;
        Wed, 09 Oct 2024 01:36:57 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 02/13] ALSA: hda: hda_intel: Use always-managed version of pcim_intx()
Date: Wed,  9 Oct 2024 10:35:08 +0200
Message-ID: <20241009083519.10088-3-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

hda_intel enables its PCI-Device with pcim_enable_device(). Thus, it needs
the always-managed version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 sound/pci/hda/hda_intel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index b4540c5cd2a6..b44ca7b6e54f 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)
 	}
 	bus->irq = chip->pci->irq;
 	chip->card->sync_irq = bus->irq;
-	pci_intx(chip->pci, !chip->msi);
+	pcim_intx(chip->pci, !chip->msi);
 	return 0;
 }
 
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813872.1226919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCM-0005tF-Pu; Wed, 09 Oct 2024 08:37:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813872.1226919; Wed, 09 Oct 2024 08:37: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 1sySCM-0005sI-Ko; Wed, 09 Oct 2024 08:37:34 +0000
Received: by outflank-mailman (input) for mailman id 813872;
 Wed, 09 Oct 2024 08:36: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySBi-0005Ov-4c
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:36:54 +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 a11cce7c-8619-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:36:51 +0200 (CEST)
Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com
 [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-294-uj_DOE2zMUSOwv437-IeAg-1; Wed, 09 Oct 2024 04:36:49 -0400
Received: by mail-qk1-f197.google.com with SMTP id
 af79cd13be357-7aca86ee1bcso781682385a.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:36:49 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.36.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:36:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a11cce7c-8619-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463010;
	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=Ox8no6eIP3qzhAwiA3gIBBhkiPEYiG93aiCo/u1l5VM=;
	b=aWM7m3rRI9fpji973i+Yr4tAvtPY6hY4RdR/8Q5kFV0I2PygUVgzKl2X7eVPYS7hCetbQj
	hBNzWhL1mq1NexNzNTmp1jmn+gSh4CAigEnMRcyNJcdHEFyhk4N2A8uejJoAYbwRbRfThI
	t82ze9n7t8saf1e1xHZ4iO1QMPm4vKU=
X-MC-Unique: uj_DOE2zMUSOwv437-IeAg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463009; x=1729067809;
        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=Ox8no6eIP3qzhAwiA3gIBBhkiPEYiG93aiCo/u1l5VM=;
        b=E7Ce+JC0q6C38itYI0x2xLOppBY/v8vkVj02K7x3zR53Iba2xttJpsdONL8iSoJFPz
         zcoUYzspp/qwNTSA5SXHHAV5EffRRmytL8Hmfza2aR/vfrXvZUMO7B/r7qcQUQbeG+rr
         h93uXZ/ebuRA71jGa6Bva4BDBlc9zBE8sFzBXtBBC/+W58FNq8DBonYgHAjeUCBrUG0B
         4VshqIvXLNnxk9wKPl8bIezvWD7JKCUWWjmJaHuwSgxCKzJTfY0b46bpLask38lvqr8h
         l86saiJ7hc5vZxC33fH943GvsotA+NByoD3EB+dwuK9fGPTkRDlGJdZyNHAHsfhffEt9
         TgXQ==
X-Forwarded-Encrypted: i=1; AJvYcCVs7tAisdzz34graOTozbS5JR6q91FlC+hZ7ig5geGaphyDQaZgdMsNgpBbLV5j8Gp/LlP4nC6KKww=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzhWFvaSCNiGHj9eCNYfQaE2NZbqeyCO5M/rylDXcSJN82hapLM
	S4Qnu8KBWnS4lNsLcWWiltxwu+5V84xdYY75fewYw5qNLfhuYWYDmDpqIDL8XlDYk9FzQ2/3x5B
	3ruuu50KIottaoA3E2eOjr0S3bJlvAdOMvWmJQa0uj/Rtg0ns9m2g5FdA7NuVCriq
X-Received: by 2002:a05:620a:29c2:b0:7a2:317:a84f with SMTP id af79cd13be357-7b07953a484mr248763685a.19.1728463008595;
        Wed, 09 Oct 2024 01:36:48 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IE7Y7S5mSTmx0J+lJXD2UsPjzh3igHrlXxbutjwyVFC4x79QdC59uvJN89Cwru4hl35BbHrGA==
X-Received: by 2002:a05:620a:29c2:b0:7a2:317:a84f with SMTP id af79cd13be357-7b07953a484mr248757985a.19.1728463007996;
        Wed, 09 Oct 2024 01:36:47 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
Date: Wed,  9 Oct 2024 10:35:07 +0200
Message-ID: <20241009083519.10088-2-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which sometimes performs devres
operations, depending on whether pcim_enable_device() has been used to
enable the pci_dev. This sometimes-managed nature of the function is
problematic. Notably, it causes the function to allocate under some
circumstances which makes it unusable from interrupt context.

To, ultimately, remove the hybrid nature from pci_intx(), it is first
necessary to provide an always-managed and a never-managed version
of that function. Then, all callers of pci_intx() can be ported to the
version they need, depending whether they use pci_enable_device() or
pcim_enable_device().

An always-managed function exists, namely pcim_intx(), for which
__pcim_intx(), a never-managed version of pci_intx() had been
implemented.

Make __pcim_intx() a public function under the name
pci_intx_unmanaged(). Make pcim_intx() a public function.

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/pci/devres.c | 24 +++---------------------
 drivers/pci/pci.c    | 26 ++++++++++++++++++++++++++
 include/linux/pci.h  |  2 ++
 3 files changed, 31 insertions(+), 21 deletions(-)

diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
index b133967faef8..475a3ae5c33f 100644
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -411,31 +411,12 @@ static inline bool mask_contains_bar(int mask, int bar)
 	return mask & BIT(bar);
 }
 
-/*
- * This is a copy of pci_intx() used to bypass the problem of recursive
- * function calls due to the hybrid nature of pci_intx().
- */
-static void __pcim_intx(struct pci_dev *pdev, int enable)
-{
-	u16 pci_command, new;
-
-	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
-
-	if (enable)
-		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
-	else
-		new = pci_command | PCI_COMMAND_INTX_DISABLE;
-
-	if (new != pci_command)
-		pci_write_config_word(pdev, PCI_COMMAND, new);
-}
-
 static void pcim_intx_restore(struct device *dev, void *data)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct pcim_intx_devres *res = data;
 
-	__pcim_intx(pdev, res->orig_intx);
+	pci_intx_unmanaged(pdev, res->orig_intx);
 }
 
 static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
@@ -472,10 +453,11 @@ int pcim_intx(struct pci_dev *pdev, int enable)
 		return -ENOMEM;
 
 	res->orig_intx = !enable;
-	__pcim_intx(pdev, enable);
+	pci_intx_unmanaged(pdev, enable);
 
 	return 0;
 }
+EXPORT_SYMBOL(pcim_intx);
 
 static void pcim_disable_device(void *pdev_raw)
 {
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 7d85c04fbba2..318cfb5b5e15 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -4476,6 +4476,32 @@ void pci_disable_parity(struct pci_dev *dev)
 	}
 }
 
+/**
+ * pci_intx - enables/disables PCI INTx for device dev, unmanaged version
+ * @pdev: the PCI device to operate on
+ * @enable: boolean: whether to enable or disable PCI INTx
+ *
+ * Enables/disables PCI INTx for device @pdev
+ *
+ * This function behavios identically to pci_intx(), but is never managed with
+ * devres.
+ */
+void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
+{
+	u16 pci_command, new;
+
+	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
+
+	if (enable)
+		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
+	else
+		new = pci_command | PCI_COMMAND_INTX_DISABLE;
+
+	if (new != pci_command)
+		pci_write_config_word(pdev, PCI_COMMAND, new);
+}
+EXPORT_SYMBOL_GPL(pci_intx_unmanaged);
+
 /**
  * pci_intx - enables/disables PCI INTx for device dev
  * @pdev: the PCI device to operate on
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 573b4c4c2be6..6b8cde76d564 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1353,6 +1353,7 @@ int __must_check pcim_set_mwi(struct pci_dev *dev);
 int pci_try_set_mwi(struct pci_dev *dev);
 void pci_clear_mwi(struct pci_dev *dev);
 void pci_disable_parity(struct pci_dev *dev);
+void pci_intx_unmanaged(struct pci_dev *pdev, int enable);
 void pci_intx(struct pci_dev *dev, int enable);
 bool pci_check_and_mask_intx(struct pci_dev *dev);
 bool pci_check_and_unmask_intx(struct pci_dev *dev);
@@ -2293,6 +2294,7 @@ static inline void pci_fixup_device(enum pci_fixup_pass pass,
 				    struct pci_dev *dev) { }
 #endif
 
+int pcim_intx(struct pci_dev *pdev, int enabled);
 void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
 void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
 				const char *name);
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813876.1226931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCN-00069E-Bj; Wed, 09 Oct 2024 08:37:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813876.1226931; Wed, 09 Oct 2024 08:37: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 1sySCN-00063J-6M; Wed, 09 Oct 2024 08:37:35 +0000
Received: by outflank-mailman (input) for mailman id 813876;
 Wed, 09 Oct 2024 08:37: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySBy-0005FO-8Z
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:37:10 +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 abcfa615-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:37:09 +0200 (CEST)
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-552-ezTiMZxBNFWzDhGghn2v3w-1; Wed, 09 Oct 2024 04:37:07 -0400
Received: by mail-qk1-f200.google.com with SMTP id
 af79cd13be357-7a9af65cf73so621438485a.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:37:07 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.36.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:37:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: abcfa615-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463028;
	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=WNVTMVvkzsZ7hvF5EavB0JCPwkl/fF5os/K0NJtlfsw=;
	b=CtYtZVBzjPRz2qlo5j/9U6WtImTvTaLKuzHFoHorvmMmBGMp30L8IQaPRX8x1kqRaZbVqp
	CtbH91cfHwA30xykZq+8qsDt/Kvx78rZa0cqG5u6SQWWOsIpgp+VITPNScsVprlxbtjrgj
	J0YJuXGt36WluLx994AED6ECztSBx0c=
X-MC-Unique: ezTiMZxBNFWzDhGghn2v3w-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463027; x=1729067827;
        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=WNVTMVvkzsZ7hvF5EavB0JCPwkl/fF5os/K0NJtlfsw=;
        b=QlHWw6lSOIjXjPLqSHbhfp/PYZjYt5jKbmPYRaQINodjiG0C4QO6Zn2g/PCBw6bnP5
         MnqIn2FFKN5UG0fuYi1OFid4tCzFVuyhVOOyRaP38nTztpXGsy83IIXeZ0vS9bzl2xS3
         WsH0CxluAtOH1mCbTg0kb3No2bOJo53ySAV7U7f3aA3Fgi30ZqUCIEf/0MBebB8ynlaD
         CWWhCVe9aFPVPp3hCVOIlVwOreo3SZjalbe3gqqlDAAmsGquhNGUHtXLqvXnZ/6obhp0
         aCA2CMoEnHkq4oYy8Jp6l8ZuiWe4I7GwlmWHxfd54IsxTLC78OVD5OMBHcjmGU03/Hpc
         pFvw==
X-Forwarded-Encrypted: i=1; AJvYcCUcl2oqSe/mkIiNQA0TbMuuXjOHqde+Yjf8taOnK6dndaymRoaKMqx3bS6lgd9aixp0JF1Sk8XDnvk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy8uHSQOV5VtAmdNAocWet3RH34NXyqlleZIKZRzdWGZsRx33Cd
	c5EjatxSXXl2M+FttUGgOf6CvfSq+BP1zR6bYRDmC8PO91Lzx/p5+lVggz89buMmXd5ekLcMny4
	/Kv9J99rM4A70s5w8aP2dNCje+cBtq0D0yDrE/fDOvIn5nPkp+CdcWYnY9z9Wp1wy
X-Received: by 2002:a05:620a:1786:b0:7a9:b9c6:ab4d with SMTP id af79cd13be357-7b0874b2e98mr203714085a.51.1728463026703;
        Wed, 09 Oct 2024 01:37:06 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IH3E0hV0KwQQvESOvv48X2ciqeB9+Uq53IkSsAgik+9QXi7ONASinXEowAITLecuVI2IQ519Q==
X-Received: by 2002:a05:620a:1786:b0:7a9:b9c6:ab4d with SMTP id af79cd13be357-7b0874b2e98mr203707485a.51.1728463026267;
        Wed, 09 Oct 2024 01:37:06 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 03/13] drivers/xen: Use never-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:09 +0200
Message-ID: <20241009083519.10088-4-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

xen enables its PCI-Device with pci_enable_device(). Thus, it
needs the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/xen/xen-pciback/conf_space_header.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/xen/xen-pciback/conf_space_header.c b/drivers/xen/xen-pciback/conf_space_header.c
index fc0332645966..8d26d64232e8 100644
--- a/drivers/xen/xen-pciback/conf_space_header.c
+++ b/drivers/xen/xen-pciback/conf_space_header.c
@@ -106,7 +106,7 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
 
 	if (dev_data && dev_data->allow_interrupt_control &&
 	    ((cmd->val ^ value) & PCI_COMMAND_INTX_DISABLE))
-		pci_intx(dev, !(value & PCI_COMMAND_INTX_DISABLE));
+		pci_intx_unmanaged(dev, !(value & PCI_COMMAND_INTX_DISABLE));
 
 	cmd->val = value;
 
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813884.1226975 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCb-0007me-GD; Wed, 09 Oct 2024 08:37:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813884.1226975; Wed, 09 Oct 2024 08: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 1sySCb-0007mT-DG; Wed, 09 Oct 2024 08:37:49 +0000
Received: by outflank-mailman (input) for mailman id 813884;
 Wed, 09 Oct 2024 08:37: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySCa-00075z-BR
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:37:48 +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 c1e4d3a3-8619-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:37:46 +0200 (CEST)
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-449-dMBsRrwbPBut4nBUtaQ81g-1; Wed, 09 Oct 2024 04:37:44 -0400
Received: by mail-qk1-f199.google.com with SMTP id
 af79cd13be357-7acca6cbe87so1143038185a.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:37:44 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.37.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:37:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1e4d3a3-8619-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463065;
	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=JsGvGJm9MmViCmQHy+rwDTsxwdGI+an22CjgwnYtt0I=;
	b=DlD8AC5FeAy12otSKJW3K7BOBbkihwJUfV25ldfUwtq+khE2Xao17JNFw31+swaMiPOeaj
	7Jpif5VM0PlipxjDSNty8+MfYpvEki8iGKUYLPfQfb7BNK8m2/G8eaCTB+/cTVn3y30XRN
	/C6COYsqe5HfH6By6kOGCpklm6h9WUk=
X-MC-Unique: dMBsRrwbPBut4nBUtaQ81g-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463063; x=1729067863;
        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=JsGvGJm9MmViCmQHy+rwDTsxwdGI+an22CjgwnYtt0I=;
        b=OPzNbDwYq4r/HHIokPbqYiTGpiI665s1OVGP8mvPnrEAisD5IfeVG0X0taJdXic9RQ
         a6pkjCty2TlhiGjDKTk1upD5IbbTmearZ06eqFeYuguSXo3awZH0pYMGEq6S7AiJ0rp0
         AkPyTQHsBiAZd5rJsEwEdE7MpkexWkH+kfmLiQU4qvIr7wBEaBVphya6TqqkXRadEzhE
         aLsOQSK/Nthvh+mME8FWUVP7bbP3NE+VQw0u7DaRFY/HQPYUzZNX6i+lo0dmArDrfj9F
         5pMAZ5mjR6sxENW/eaPza+4Zf0qlJs2ZWblNu2WDLdsTPsDSghcGo9QmGa2yC/HDJ7dA
         oC/g==
X-Forwarded-Encrypted: i=1; AJvYcCXll949hG15ugxeZ2T0V0aNTWKkWDHlzIY/D9gSGDwJQDWTGchIZujKnbydrnx4brX88e0lWa6HcTU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxMeEnCgPAS2e2Ku09vIVgwBvpYnpgk/I0aD8Re6AKEXhUEVVnb
	4huDcJCdDSePhj8y/2ydKRn58Rs70h4CR53j8Cp+CvyBZzrj89/7/XCcdFg1Oh0X2LLgTvAb1qC
	0fLVKRKIgB4YgKUCPo6HXGtvW8VfErhVP2AWXf3uWpSwkBJ9RgBO65P/RUnbbQH1n
X-Received: by 2002:a05:620a:2a0e:b0:7ac:a6f9:2986 with SMTP id af79cd13be357-7b0874d79cdmr228240785a.56.1728463063335;
        Wed, 09 Oct 2024 01:37:43 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFImvB9Qv7o17NV9RNqrUwhslSwlEiuBLwjyyln/SL0KXDFR9AO0zKFsp8+HNe0WvD5hbb1TQ==
X-Received: by 2002:a05:620a:2a0e:b0:7ac:a6f9:2986 with SMTP id af79cd13be357-7b0874d79cdmr228232385a.56.1728463062845;
        Wed, 09 Oct 2024 01:37:42 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 07/13] vfio/pci: Use never-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:13 +0200
Message-ID: <20241009083519.10088-8-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

vfio enables its PCI-Device with pci_enable_device(). Thus, it
needs the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/vfio/pci/vfio_pci_core.c  |  2 +-
 drivers/vfio/pci/vfio_pci_intrs.c | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index 1ab58da9f38a..90240c8d51aa 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -498,7 +498,7 @@ int vfio_pci_core_enable(struct vfio_pci_core_device *vdev)
 		if (vfio_pci_nointx(pdev)) {
 			pci_info(pdev, "Masking broken INTx support\n");
 			vdev->nointx = true;
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 		} else
 			vdev->pci_2_3 = pci_intx_mask_supported(pdev);
 	}
diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
index 8382c5834335..40abb0b937a2 100644
--- a/drivers/vfio/pci/vfio_pci_intrs.c
+++ b/drivers/vfio/pci/vfio_pci_intrs.c
@@ -118,7 +118,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 		goto out_unlock;
 	}
 
@@ -132,7 +132,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 		 * mask, not just when something is pending.
 		 */
 		if (vdev->pci_2_3)
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 		else
 			disable_irq_nosync(pdev->irq);
 
@@ -178,7 +178,7 @@ static int vfio_pci_intx_unmask_handler(void *opaque, void *data)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx(pdev, 1);
+			pci_intx_unmanaged(pdev, 1);
 		goto out_unlock;
 	}
 
@@ -296,7 +296,7 @@ static int vfio_intx_enable(struct vfio_pci_core_device *vdev,
 	 */
 	ctx->masked = vdev->virq_disabled;
 	if (vdev->pci_2_3) {
-		pci_intx(pdev, !ctx->masked);
+		pci_intx_unmanaged(pdev, !ctx->masked);
 		irqflags = IRQF_SHARED;
 	} else {
 		irqflags = ctx->masked ? IRQF_NO_AUTOEN : 0;
@@ -569,7 +569,7 @@ static void vfio_msi_disable(struct vfio_pci_core_device *vdev, bool msix)
 	 * via their shutdown paths.  Restore for NoINTx devices.
 	 */
 	if (vdev->nointx)
-		pci_intx(pdev, 0);
+		pci_intx_unmanaged(pdev, 0);
 
 	vdev->irq_type = VFIO_PCI_NUM_IRQS;
 }
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:37:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:37:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813882.1226985 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCd-00089f-Qv; Wed, 09 Oct 2024 08:37:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813882.1226985; Wed, 09 Oct 2024 08:37: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 1sySCd-00089U-MR; Wed, 09 Oct 2024 08:37:51 +0000
Received: by outflank-mailman (input) for mailman id 813882;
 Wed, 09 Oct 2024 08:37: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySCQ-00075z-N7
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:37:38 +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 bc150f68-8619-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:37:36 +0200 (CEST)
Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com
 [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-184-959AEx9uMcyXxmoShidgbA-1; Wed, 09 Oct 2024 04:37:34 -0400
Received: by mail-qk1-f197.google.com with SMTP id
 af79cd13be357-7ac8f684cdaso1238161085a.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:37:34 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.37.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:37:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bc150f68-8619-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463055;
	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=lTHYC2Ta++0YaXHTW6I7MhYRpUqFySCxRFqkuz5HbMw=;
	b=WJ3MGLF4PrHF1SxfAvEDaSVcJicXk0TfIj+kXaLLc12mKIxB34EMZAywGg3f7HWFvm9Nh1
	ioOXyPR4vD952rhpL3c4Fm2j5k1V73c4ZjNqy7Up4KMZAtZaQ5qHf/9UF5+Pm+vy1GyIUy
	m+3urE2J3m0tJUPa4b4C1Wx5ECvLQ/Q=
X-MC-Unique: 959AEx9uMcyXxmoShidgbA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463054; x=1729067854;
        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=lTHYC2Ta++0YaXHTW6I7MhYRpUqFySCxRFqkuz5HbMw=;
        b=W9a2SlzldoiFvPNoP+VQKk25tX9U4G02se0pPTONehr0Jiih+FiHXtKIWVYuDx3EPm
         o7oQaxci2hSIHtCYVgl5QGMZTtD4F6uiORENBK9cU51510e8aeCIk2VCVkkEu6cREtIV
         tCAfEKeRCJc13/Jm/CIhbHKF4/7wYr/rwlRQKrlRlaU0TvJFggTlYhw9p6a7Qls981j5
         pCsuC7KQGew5rPOfm+GAKUjDd8dWrNjMTk25847F3dVF7+Z1rQiHUikFsBdZHGywyevT
         Ke2XnkStRMXsLvWF8i+MT/7UZXFpoNWLEAxgvkZu63Disewcs9cWmc5ivArFsJ1l3Mgk
         0AGg==
X-Forwarded-Encrypted: i=1; AJvYcCVCW4dwOD4azTxzVUxnWTBxqHtY8YjOjW6RogeDAOQgwMmufv6foMBJRC8S+O8MezI7x3THlpHqElI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzQOo6BjirzvFQsTG5P+ZyHFX/WVMgPazHvCZh7YBZiRD8duRDD
	PosUJPQQNy0HIb4diQWWYDXzPXNTtHL0JEX25ScnoSJ5Ua098GGxJnO+VGo63XeqzsI726+1/d7
	0YHjKvsd7e9DMQQB+wEinAxE9tB93FhD0J0YEpAqamvnI9eBT/I8+f/968ff32Owk
X-Received: by 2002:a05:620a:1a0d:b0:79f:a82:51b6 with SMTP id af79cd13be357-7b07954f31amr225715685a.37.1728463053922;
        Wed, 09 Oct 2024 01:37:33 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFyOmhURDToKlj0Tx/+LSrRiFI4N0xp4bxoYWlBt9rq37ZdtOecLCJNvSEgZi/GrzB82+mMyA==
X-Received: by 2002:a05:620a:1a0d:b0:79f:a82:51b6 with SMTP id af79cd13be357-7b07954f31amr225709385a.37.1728463053424;
        Wed, 09 Oct 2024 01:37:33 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 06/13] misc: Use never-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:12 +0200
Message-ID: <20241009083519.10088-7-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

cardreader/rtsx_pcr.c and tifm_7xx1.c enable their PCI-Device with
pci_enable_device(). Thus, they need the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/misc/cardreader/rtsx_pcr.c | 2 +-
 drivers/misc/tifm_7xx1.c           | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/misc/cardreader/rtsx_pcr.c b/drivers/misc/cardreader/rtsx_pcr.c
index be3d4e0e50cc..e25e6d560dd7 100644
--- a/drivers/misc/cardreader/rtsx_pcr.c
+++ b/drivers/misc/cardreader/rtsx_pcr.c
@@ -1057,7 +1057,7 @@ static int rtsx_pci_acquire_irq(struct rtsx_pcr *pcr)
 	}
 
 	pcr->irq = pcr->pci->irq;
-	pci_intx(pcr->pci, !pcr->msi_en);
+	pci_intx_unmanaged(pcr->pci, !pcr->msi_en);
 
 	return 0;
 }
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c
index 1d54680d6ed2..5f9c7ccae8d2 100644
--- a/drivers/misc/tifm_7xx1.c
+++ b/drivers/misc/tifm_7xx1.c
@@ -327,7 +327,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 		goto err_out;
 	}
 
-	pci_intx(dev, 1);
+	pci_intx_unmanaged(dev, 1);
 
 	fm = tifm_alloc_adapter(dev->device == PCI_DEVICE_ID_TI_XX21_XX11_FM
 				? 4 : 2, &dev->dev);
@@ -368,7 +368,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 err_out_free:
 	tifm_free_adapter(fm);
 err_out_int:
-	pci_intx(dev, 0);
+	pci_intx_unmanaged(dev, 0);
 	pci_release_regions(dev);
 err_out:
 	if (!pci_dev_busy)
@@ -392,7 +392,7 @@ static void tifm_7xx1_remove(struct pci_dev *dev)
 		tifm_7xx1_sock_power_off(tifm_7xx1_sock_addr(fm->addr, cnt));
 
 	iounmap(fm->addr);
-	pci_intx(dev, 0);
+	pci_intx_unmanaged(dev, 0);
 	pci_release_regions(dev);
 
 	pci_disable_device(dev);
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:38:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:38:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813900.1226995 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySCn-0000kC-74; Wed, 09 Oct 2024 08:38:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813900.1226995; Wed, 09 Oct 2024 08: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 1sySCn-0000k0-3i; Wed, 09 Oct 2024 08:38:01 +0000
Received: by outflank-mailman (input) for mailman id 813900;
 Wed, 09 Oct 2024 08:37: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySCl-00075z-Q7
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:37:59 +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 c85fd329-8619-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:37:57 +0200 (CEST)
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-217-RBlU6NC9PruUI_0XQWTBsw-1; Wed, 09 Oct 2024 04:37:53 -0400
Received: by mail-qk1-f199.google.com with SMTP id
 af79cd13be357-7acca6cbe87so1143053385a.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:37:53 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.37.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:37:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c85fd329-8619-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463076;
	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=QnZVeWBmT+J+LidRf6mImSoyv0oTiirkxqtpTQtBia8=;
	b=dh3CGZqwFbGbkOQFkK+aC/GmDWsDARcODrEKETSygpK0ET6B3gYLhEMIaVF3SbP2iNTTY9
	x9SfXmRxTEi93mFZCftzKfOWjRWlmZgp3XPqOLEsz/Y12kAYvh8+6jE35/gX0lp/U3OxL6
	DUMs6srzaf4vwN2l+Z80/iJBn3UOv8Y=
X-MC-Unique: RBlU6NC9PruUI_0XQWTBsw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463073; x=1729067873;
        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=QnZVeWBmT+J+LidRf6mImSoyv0oTiirkxqtpTQtBia8=;
        b=SYOEbmK0IXkta6+abV5H2WjPUEDJzMGUmtQPpq78qk3djZ/bBJ4zr6Hn/VlnBnDvlb
         IDFvzEQf00ZuYNVB97tLx0P9kbCV82k6xPH+4q7Ge+l71b8R35p0VJpNSGo/3mWPapBx
         NL2LJGZK617dxsGbb0UB1m45r6iVPs5tBR/myD78w8ly3iOCr5f0DveJxyTzEV46eeup
         5Hh7of2ufnt6aJHTJT9R4TeYUNUEptTI6HRZxHBhNtC2GQjcnkQ7Knq+ERAK1/K+tgVF
         HhAsmIZ6oCvf0MVdNUeU9ITJ9iUULBYZ9Yu1XN3woYkIao4fNfJHC8R42jnmzKqDWffS
         aFDQ==
X-Forwarded-Encrypted: i=1; AJvYcCXNrumu1n8tUhXCpbe7RI3IsHvhvpJ2cYnlG/l4ARDStq2Zrna74YOdRf9mG3J2DepNQJD+RBYgnrk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyhMSYey7TiiaPoTnMYIvpDGNQkxJf1gTn03xZRbxSCW5unplJU
	aVJ1TEfowCIE0z+3O3rxJNkNx4i7UNhafGU9ve9jumJMQ3EOxap6i6ffpfEhbe4NtQrKTQuW76K
	QDvuCIc+AGlpAY45cUCxDcXO/d1nrUt52EOhMqTLuZrrFlVdXvw5AHrMRUe7HYz1M
X-Received: by 2002:a05:620a:40a:b0:7a7:fdef:27a with SMTP id af79cd13be357-7b0874d7cdemr203378385a.58.1728463072667;
        Wed, 09 Oct 2024 01:37:52 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHVcvq1l/JiYDRYGcvT0xuobZAhQYwMoKmOoPhvJp1jfhxUy6a6lyXKK7lz5Kz5T1IwGDIQGw==
X-Received: by 2002:a05:620a:40a:b0:7a7:fdef:27a with SMTP id af79cd13be357-7b0874d7cdemr203375485a.58.1728463072097;
        Wed, 09 Oct 2024 01:37:52 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 08/13] PCI: MSI: Use never-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:14 +0200
Message-ID: <20241009083519.10088-9-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

MSI sets up its own separate devres callback implicitly in
pcim_setup_msi_release(). This callback ultimately uses pci_intx(),
which is problematic since the callback of course runs on driver-detach.

That problem has last been described here:
https://lore.kernel.org/all/ee44ea7ac760e73edad3f20b30b4d2fff66c1a85.camel@redhat.com/

Replace the call to pci_intx() with one to the never-managed version
pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
This MSI part here is probably the part of the series that needs most
attention.
---
 drivers/pci/msi/api.c | 2 +-
 drivers/pci/msi/msi.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/msi/api.c b/drivers/pci/msi/api.c
index b956ce591f96..c95e2e7dc9ab 100644
--- a/drivers/pci/msi/api.c
+++ b/drivers/pci/msi/api.c
@@ -289,7 +289,7 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
 			 */
 			if (affd)
 				irq_create_affinity_masks(1, affd);
-			pci_intx(dev, 1);
+			pci_intx_unmanaged(dev, 1);
 			return 1;
 		}
 	}
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 3a45879d85db..53f13b09db50 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -268,7 +268,7 @@ EXPORT_SYMBOL_GPL(pci_write_msi_msg);
 static void pci_intx_for_msi(struct pci_dev *dev, int enable)
 {
 	if (!(dev->dev_flags & PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG))
-		pci_intx(dev, enable);
+		pci_intx_unmanaged(dev, enable);
 }
 
 static void pci_msi_set_enable(struct pci_dev *dev, int enable)
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:47:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:47:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813926.1227005 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySLy-0003ac-2P; Wed, 09 Oct 2024 08:47:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813926.1227005; Wed, 09 Oct 2024 08:47: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 1sySLx-0003aV-Ub; Wed, 09 Oct 2024 08:47:29 +0000
Received: by outflank-mailman (input) for mailman id 813926;
 Wed, 09 Oct 2024 08:47: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySD0-0005FO-U3
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:38:14 +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 d2077015-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:38:13 +0200 (CEST)
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-616-TvXbMQwgPnWCiL0A48mcDw-1; Wed, 09 Oct 2024 04:38:11 -0400
Received: by mail-qk1-f198.google.com with SMTP id
 af79cd13be357-7ae48475234so1704795985a.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:38:11 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.38.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:38:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2077015-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463092;
	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=whIiuNRJJmYlfQ3wiaGZ/HmATem6GNPoxo7pUmmbAqQ=;
	b=Bz6g2jtMcXJ35p1DBRCmU+vHVfDIx21l8GhMaNcfvqZnKjJOkcqnTegv+C0dclJFjMYyt0
	218CqExSDlE98E2qUhFYk/qY28u4iXVhj2dWchIu8lJFW4Kw0CB//DYVrEMwmcedRcsojA
	yA+GaUSgX9KvP/DiWg9m87GIzUWhTbc=
X-MC-Unique: TvXbMQwgPnWCiL0A48mcDw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463091; x=1729067891;
        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=whIiuNRJJmYlfQ3wiaGZ/HmATem6GNPoxo7pUmmbAqQ=;
        b=Amj7/fgy4ZTtykF1EiAB9IGK1mvj9/ovEwC1GCWeG3UDwNNpdYS2YH8AbSgdv6ErKu
         y6yj6gFLfjjNAdYP+bftwD6W23GX0vagEWrbROn1bcI05dcRKVJo4vOdwbo2DbIpmX7+
         bXPuuckqwocMvRq/QobP+gB+X5+Y9U9lig/JBWmiQ6lVv7OThx1ufGG0P/m11TP+6reV
         AsjlIEO0syV7zUwrj+J99yZbCza1CigDanYy6TEJ1gRUq5g/JEjG9jnM/aAFq3qxI629
         tVvoxdZMJK6AlJY9xzm9+THWIEeEEXIa38DjABHzaMlolaml1tmB94dL5+3GK93JhVzx
         NZgQ==
X-Forwarded-Encrypted: i=1; AJvYcCWVfKK1YIrO9mRRDuu8fqBh1s9eJr/Gh7AJy8Gj397M1Nf3qKOg5/J7jGDetKKTSHodkIj27hObUX8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxoXb5S3awtBFhuowHKC4VWIdWfsUmgG/v9W9pkg1DD2Eb+BK4O
	TU0FGPv1KkAJebgwTzBFudTPr54Jojnejq3QhmwAgbMmLnARf193Js9zK0JjrQeEc/Vlfm3uSIq
	HwfQpnYLq5OJQ/vRhvBZ6pwpVj7IwZJaU7/kZ9JtMli0UxOAXLOdQ498Ok5q+WuR8
X-Received: by 2002:a05:620a:6006:b0:7a9:ab72:7374 with SMTP id af79cd13be357-7b10ed4fff8mr102281485a.35.1728463090674;
        Wed, 09 Oct 2024 01:38:10 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IE/MgCEUv0CJEAIc6rr0qvcu86NTMXEfUgLL+h2hiKBHzQb8C5W8ydxW51ghGpiTPgzdZQtmw==
X-Received: by 2002:a05:620a:6006:b0:7a9:ab72:7374 with SMTP id af79cd13be357-7b10ed4fff8mr102275485a.35.1728463090297;
        Wed, 09 Oct 2024 01:38:10 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 10/13] staging: rts5280: Use always-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:16 +0200
Message-ID: <20241009083519.10088-11-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

rts5208 enables its PCI-Device with pcim_enable_device(). Thus, it needs the
always-managed version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/staging/rts5208/rtsx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/rts5208/rtsx.c b/drivers/staging/rts5208/rtsx.c
index c4f54c311d05..4831eb035bf7 100644
--- a/drivers/staging/rts5208/rtsx.c
+++ b/drivers/staging/rts5208/rtsx.c
@@ -246,7 +246,7 @@ static int rtsx_acquire_irq(struct rtsx_dev *dev)
 	}
 
 	dev->irq = dev->pci->irq;
-	pci_intx(dev->pci, !chip->msi_en);
+	pcim_intx(dev->pci, !chip->msi_en);
 
 	return 0;
 }
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:49:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:49:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813941.1227015 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySNr-0004rb-DP; Wed, 09 Oct 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 813941.1227015; Wed, 09 Oct 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 1sySNr-0004qd-A9; Wed, 09 Oct 2024 08:49:27 +0000
Received: by outflank-mailman (input) for mailman id 813941;
 Wed, 09 Oct 2024 08:49: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySDJ-0005FO-4L
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:38:33 +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 dd53aac3-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:38:32 +0200 (CEST)
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-332-ywa25oB_PFuUujWxGtL0vA-1; Wed, 09 Oct 2024 04:38:30 -0400
Received: by mail-qk1-f199.google.com with SMTP id
 af79cd13be357-7aed2d01616so257554285a.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:38:30 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.38.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:38:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dd53aac3-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463111;
	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=u7xGfk4qndjTqagar0QlDaIVC8D2pMzlwDaMVJxc9mw=;
	b=fX1Y18yAwx7II3ykm/z3uy0psGQZMJSusKxf6Cv1PKibOl7bQR3iZNExXDZcPGgX90aJyK
	mWKtG8Wuir6xIPO22V/j9rC6WXPdKu7Ljx0PGxyHQVLVhzf+/0/IdAezujfHpZv38zs0QM
	Fg2bBvwm42jOGe7DFyZDXvJG3djdXls=
X-MC-Unique: ywa25oB_PFuUujWxGtL0vA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463110; x=1729067910;
        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=u7xGfk4qndjTqagar0QlDaIVC8D2pMzlwDaMVJxc9mw=;
        b=qCWYQHcd41vcx5j6Iq8k+JnzjV2j0vF1JXuYrhMP7h8jIxTPury6WkJymLk2WuJX0w
         GHVAHmzZoXTRgVbouEIbi1J7VsfdWSP8w0kbx1zOfkhX4WFfZ4S6SIM4ZpkAHOy3vIZa
         ssQkE8ctrnFD0JiBtJAqEsZ9Io7M3yAff9YgSwfPddMAbTYmjLGPVV/hrA+hrsnh61mK
         pcnb6dR2GIhjzI5ylAHQ3lCQbYpyDSTk1EK1z9gc35l+Ftg1QO7eYHTbgWXu7DlC0c6K
         m3C0klbtlbqaAvK2HZ68FDfY9t1vcFBMlxBq0/J9BeVDuV9Qu4JiIHk7/eSZHCVtZe8r
         qLEA==
X-Forwarded-Encrypted: i=1; AJvYcCXTiDIFyGpSEa9ajcqHFuaZxEIJO8ZcfNeiIh2NU/9ULW8F5/BdRyQ5QQ8RWtF2D8lVwf2bhA8Ld7w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwZuicNn5DVeJ5sZ7aRrW8hSB9gFb5mp4FpUuSUdhs9r9J2+yui
	+8oyhDtASrBuIbOBolMR/Ahb8MeZ56ghcpD+4LLfhV8nvGohhRzwcVMGAnZWRfEJXjcVKLMzKEs
	auiT87q2W9aBdjM3vd3t+c4s++Ql8AuvyafszknA5G7A4ZnJHWY8paVwI5jmCuFvV
X-Received: by 2002:a05:620a:460d:b0:7a9:befa:eeea with SMTP id af79cd13be357-7b079523fa5mr211578485a.10.1728463109640;
        Wed, 09 Oct 2024 01:38:29 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGDFSvxtLv6Q0pe/4IBD0n4HBYmqOqMV7Zg8tkr7BJx3NcG6raccYdUXiO6MGZhunZjFhe2CA==
X-Received: by 2002:a05:620a:460d:b0:7a9:befa:eeea with SMTP id af79cd13be357-7b079523fa5mr211570485a.10.1728463109176;
        Wed, 09 Oct 2024 01:38:29 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 12/13] HID: amd_sfh: Use always-managed version of pcim_intx()
Date: Wed,  9 Oct 2024 10:35:18 +0200
Message-ID: <20241009083519.10088-13-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

All users of amd_mp2_pci_remove(), where pci_intx() is used, call
pcim_enable_device(), which is why the driver needs the always-managed
version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        | 4 ++--
 drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
index 0c28ca349bcd..48cfd0c58241 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
@@ -122,7 +122,7 @@ int amd_sfh_irq_init_v2(struct amd_mp2_dev *privdata)
 {
 	int rc;
 
-	pci_intx(privdata->pdev, true);
+	pcim_intx(privdata->pdev, true);
 
 	rc = devm_request_irq(&privdata->pdev->dev, privdata->pdev->irq,
 			      amd_sfh_irq_handler, 0, DRIVER_NAME, privdata);
@@ -248,7 +248,7 @@ static void amd_mp2_pci_remove(void *privdata)
 	struct amd_mp2_dev *mp2 = privdata;
 	amd_sfh_hid_client_deinit(privdata);
 	mp2->mp2_ops->stop_all(mp2);
-	pci_intx(mp2->pdev, false);
+	pcim_intx(mp2->pdev, false);
 	amd_sfh_clear_intr(mp2);
 }
 
diff --git a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
index db36d87d5634..ec9feb8e023b 100644
--- a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
+++ b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
@@ -289,7 +289,7 @@ static void amd_mp2_pci_remove(void *privdata)
 	sfh_deinit_emp2();
 	amd_sfh_hid_client_deinit(privdata);
 	mp2->mp2_ops->stop_all(mp2);
-	pci_intx(mp2->pdev, false);
+	pcim_intx(mp2->pdev, false);
 	amd_sfh_clear_intr(mp2);
 }
 
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:49:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:49:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813945.1227024 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySOJ-0005NM-Ky; Wed, 09 Oct 2024 08:49:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813945.1227024; Wed, 09 Oct 2024 08:49: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 1sySOJ-0005NF-Hu; Wed, 09 Oct 2024 08:49:55 +0000
Received: by outflank-mailman (input) for mailman id 813945;
 Wed, 09 Oct 2024 08:49: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySCs-0005FO-7i
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:38:06 +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 cd235cf8-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:38:05 +0200 (CEST)
Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com
 [209.85.222.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-501-nkfDux_SM6yRtTOIJ8cPmA-1; Wed, 09 Oct 2024 04:38:02 -0400
Received: by mail-qk1-f197.google.com with SMTP id
 af79cd13be357-7ac8f684d9bso1464996685a.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:38:02 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.37.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:38:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd235cf8-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463084;
	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=grA9zY2gCzM0tZ6k8yJzfkYIIGdvtWhZgyLIcbwmBmA=;
	b=QLlhedEAzgyUoI1OlPuS25Hd5CFdeYOz10JvhXh92NA6jSYIgEPqBKj6u50aUgwQJViIwp
	DUkJdUPzZdojcO7m3gDjDyKPXRYsc8PqIlUkjAOq6CphJEm3Xc/067BsPitorW9c691ORJ
	MCYJ0PNTjqoF1mnYtuNu/4yV2LfkdT0=
X-MC-Unique: nkfDux_SM6yRtTOIJ8cPmA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463082; x=1729067882;
        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=grA9zY2gCzM0tZ6k8yJzfkYIIGdvtWhZgyLIcbwmBmA=;
        b=eDrXTTlZctTlq/CvodqPHlCeuAFCh1LXUO+8pnYGIbh/Iex9HUBNSciFtPAX8H7G8A
         z/XhLOKMv2jzMWCpT5rEJU0wPtM6w89iL/PMcSNWZhScWSg9kk0DJBQBKpu3DUUEZ3VO
         SjY88LoWMocx6+EvzZmpV44dBhDMiHSOFIWn8Cr1fZDS3/G8lW/c78YKuEzwOWULz2aW
         bHIO6/17bHkR2ALBjH7+VOV/8t7wgP+DdJJMpgVCJNzEDl1xZZp6exu0XAgBRQd51k3L
         r5ASkhXpSe3yUQbELLC5CgcYgX5KETWS3XnerYZpneGjPjXh3hZ62/l4j2CSoEAr5k5j
         Vzjg==
X-Forwarded-Encrypted: i=1; AJvYcCWP4NXOcm50lJzyVnAXXn72mPw7QBL4bLdkB/xP6uvC6XV0JYiXb94bn1B8vD+SJLpN8Qy2uPzzAbY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy6iUvc1BFtep8TowG1Xe+oPka87Ymy5ha+x/KkLbhHCY7yDSNL
	gEQDClFB7VaqjcfacSZm8g29aEQ1xyZKnEqY9jw66PeDoAnCKQLobLFzbrbEM0jRuQVcZUrL916
	wYAuFBUx9a3GeW/946llkcgJkLuldWEH7aAGeoR16BVUiSelGPc+6Srh54rUPkZPR
X-Received: by 2002:a05:620a:1aa2:b0:7a9:c146:a9eb with SMTP id af79cd13be357-7b06f969756mr273605685a.20.1728463081694;
        Wed, 09 Oct 2024 01:38:01 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEGqTvzl7lkQc723z5ljjdHvDZdrbGrChbwp6g7VVNNzfdZU3qGvLnPUFP5t46Wzl+T4Wyqlg==
X-Received: by 2002:a05:620a:1aa2:b0:7a9:c146:a9eb with SMTP id af79cd13be357-7b06f969756mr273601385a.20.1728463081273;
        Wed, 09 Oct 2024 01:38:01 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 09/13] ata: Use always-managed version of pci_intx()
Date: Wed,  9 Oct 2024 10:35:15 +0200
Message-ID: <20241009083519.10088-10-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

All users in ata enable their PCI-Device with pcim_enable_device(). Thus,
they need the always-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/ata/ahci.c       | 2 +-
 drivers/ata/ata_piix.c   | 2 +-
 drivers/ata/pata_rdc.c   | 2 +-
 drivers/ata/sata_sil24.c | 2 +-
 drivers/ata/sata_sis.c   | 2 +-
 drivers/ata/sata_uli.c   | 2 +-
 drivers/ata/sata_vsc.c   | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 45f63b09828a..9273ff3d4732 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1985,7 +1985,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	if (ahci_init_msi(pdev, n_ports, hpriv) < 0) {
 		/* legacy intx interrupts */
-		pci_intx(pdev, 1);
+		pcim_intx(pdev, 1);
 	}
 	hpriv->irq = pci_irq_vector(pdev, 0);
 
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 093b940bc953..d441246fa357 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -1725,7 +1725,7 @@ static int piix_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 * message-signalled interrupts currently).
 	 */
 	if (port_flags & PIIX_FLAG_CHECKINTR)
-		pci_intx(pdev, 1);
+		pcim_intx(pdev, 1);
 
 	if (piix_check_450nx_errata(pdev)) {
 		/* This writes into the master table but it does not
diff --git a/drivers/ata/pata_rdc.c b/drivers/ata/pata_rdc.c
index 0a9689862f71..09792aac7f9d 100644
--- a/drivers/ata/pata_rdc.c
+++ b/drivers/ata/pata_rdc.c
@@ -340,7 +340,7 @@ static int rdc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 		return rc;
 	host->private_data = hpriv;
 
-	pci_intx(pdev, 1);
+	pcim_intx(pdev, 1);
 
 	host->flags |= ATA_HOST_PARALLEL_SCAN;
 
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index 72c03cbdaff4..b771ebd41252 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -1317,7 +1317,7 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	if (sata_sil24_msi && !pci_enable_msi(pdev)) {
 		dev_info(&pdev->dev, "Using MSI\n");
-		pci_intx(pdev, 0);
+		pcim_intx(pdev, 0);
 	}
 
 	pci_set_master(pdev);
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c
index ef8724986de3..b8b6d9eff3b8 100644
--- a/drivers/ata/sata_sis.c
+++ b/drivers/ata/sata_sis.c
@@ -290,7 +290,7 @@ static int sis_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 	pci_set_master(pdev);
-	pci_intx(pdev, 1);
+	pcim_intx(pdev, 1);
 	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
 				 IRQF_SHARED, &sis_sht);
 }
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
index 60ea45926cd1..52894ff49dcb 100644
--- a/drivers/ata/sata_uli.c
+++ b/drivers/ata/sata_uli.c
@@ -221,7 +221,7 @@ static int uli_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 	pci_set_master(pdev);
-	pci_intx(pdev, 1);
+	pcim_intx(pdev, 1);
 	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
 				 IRQF_SHARED, &uli_sht);
 }
diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c
index d39b87537168..a53a2dfc1e17 100644
--- a/drivers/ata/sata_vsc.c
+++ b/drivers/ata/sata_vsc.c
@@ -384,7 +384,7 @@ static int vsc_sata_init_one(struct pci_dev *pdev,
 		pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 0x80);
 
 	if (pci_enable_msi(pdev) == 0)
-		pci_intx(pdev, 0);
+		pcim_intx(pdev, 0);
 
 	/*
 	 * Config offset 0x98 is "Extended Control and Status Register 0"
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:50:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:50:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813948.1227035 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySOS-0006DJ-15; Wed, 09 Oct 2024 08:50:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813948.1227035; Wed, 09 Oct 2024 08: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 1sySOR-0006Ct-Tn; Wed, 09 Oct 2024 08:50:03 +0000
Received: by outflank-mailman (input) for mailman id 813948;
 Wed, 09 Oct 2024 08:50: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySDA-00075z-Bp
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:38:24 +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 d77e6865-8619-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 10:38:22 +0200 (CEST)
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-631-a05JQfFwOAmxRoW0v3wIIQ-1; Wed, 09 Oct 2024 04:38:20 -0400
Received: by mail-qk1-f198.google.com with SMTP id
 af79cd13be357-7a9a71b17a3so1133298285a.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:38:20 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.38.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:38:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d77e6865-8619-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463101;
	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=TJ4XyKRMzVRAPh09Ypw2QkYDvdqyB5dqjRwvTDPzI5M=;
	b=DozHLYbJ3JpEc8AHBMq252GE0GfrwECVkSxQPO077ghyDBoDndKzi4gpNWeBChl0bttNed
	3I74KRar+NT2r/9zKfc4W0SU/ENWE10leT554V/yEHABu7M1bCHZwXjpCKJTmP66tGQj4G
	Yj0Wus8IvC2gr53J9KaGqSVlbiiUS9U=
X-MC-Unique: a05JQfFwOAmxRoW0v3wIIQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463100; x=1729067900;
        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=TJ4XyKRMzVRAPh09Ypw2QkYDvdqyB5dqjRwvTDPzI5M=;
        b=WfXFMj5owm4MBB3Jsy9nwzEkGrQ+KWZlkorvLSj+3wfdpvU6YqIY81T9T/P1Rcnw5F
         pBVUHJ6x8hsLNRrODZBgGnGPNLl4Yfkt7Q/cWL04rciGH+KPZStVMkQWPNXbMHq+UFEx
         lfBQO0Mih/++es9Bvdr4oEHRFyuehI8VcpgFKTWwEUlh9zARaS47tsvQOKIOVJU6OWRV
         KnYC3JJPTeb+rq4FQ6PVluMkDfrMPhoo88xFt6zUm07voo7e1ZFXml+zANVawykU24lD
         46E34pNUXv5mGLRf+lTAOvBQnC4GG6CN6kZsj26CN4cgtpzJFpVqnMYF7H0awpH5DcWO
         9qHg==
X-Forwarded-Encrypted: i=1; AJvYcCXIMV/yJvcgA1aOqSDuymAmBr5GmkIUix9/bmgFEpLUeHVx1MkPskUGZy2hrpX74noM+CmIiRExwM4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw4XKaz241qE/w9roEFNhmu76Fx4SP8Nf8fX4TzN+wKbxDNckd9
	OKD33owPLlMNK3We0nm1HlFUDfyyLp55Y+pgQgee+eD4DwEK4E5eeY6JyN1wIrTLTwOkX8gwGqs
	kT3v/mMeUpb2F/iM6i/7d5Fp4dR0mUy89PcDo3msvZTEGl3ayU/6n3x616g2JY54O
X-Received: by 2002:a05:620a:191e:b0:7ae:5c5b:a3ee with SMTP id af79cd13be357-7b07954eaf1mr214935085a.30.1728463099809;
        Wed, 09 Oct 2024 01:38:19 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEohpGdz3FQCfvuYPGv1Kgp6VmjNVq/mWsuKLRVQIwcRgXug1EQeuW78e0HsYLtO7HnORD33g==
X-Received: by 2002:a05:620a:191e:b0:7ae:5c5b:a3ee with SMTP id af79cd13be357-7b07954eaf1mr214929685a.30.1728463099420;
        Wed, 09 Oct 2024 01:38:19 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 11/13] wifi: qtnfmac: use always-managed version of pcim_intx()
Date: Wed,  9 Oct 2024 10:35:17 +0200
Message-ID: <20241009083519.10088-12-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

qtnfmac enables its PCI-Device with pcim_enable_device(). Thus, it needs the
always-managed version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
index f66eb43094d4..3adcfac2886f 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
@@ -204,7 +204,7 @@ static void qtnf_pcie_init_irq(struct qtnf_pcie_bus_priv *priv, bool use_msi)
 
 	if (!priv->msi_enabled) {
 		pr_warn("legacy PCIE interrupts enabled\n");
-		pci_intx(pdev, 1);
+		pcim_intx(pdev, 1);
 	}
 }
 
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:51:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:51:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813972.1227045 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySPy-000823-E2; Wed, 09 Oct 2024 08:51:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813972.1227045; Wed, 09 Oct 2024 08:51: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 1sySPy-00081w-AN; Wed, 09 Oct 2024 08:51:38 +0000
Received: by outflank-mailman (input) for mailman id 813972;
 Wed, 09 Oct 2024 08:51: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=DqEV=RF=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1sySPx-00080z-M0
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:51:37 +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 b132091b-861b-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:51:36 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 A289421B04;
 Wed,  9 Oct 2024 08:51:35 +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 90F01136BA;
 Wed,  9 Oct 2024 08:51: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 IvzTIRVEBmc/VQAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 09 Oct 2024 08:51: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: b132091b-861b-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728463895; 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=mf4gX1GT+Y8hcnrAnpXyll0uf0uR2IhtodH4atLrtew=;
	b=OX7jIvAQo045uq/M81aHWmrnoumaDnIaWq4Qnn6yta4jpxHL0ZY9eG5WT+6UWhaEHhXTDs
	pRBjoDk0bcXINaNPdRRWyUe+l7WoDl/1s57QQqglMrcvsqAww5COZjF+oxZHbXVUFC7b/l
	EOaAkZa8BMGgbgZYg/RML1ESdsMFtVs=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728463895; 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=mf4gX1GT+Y8hcnrAnpXyll0uf0uR2IhtodH4atLrtew=;
	b=OX7jIvAQo045uq/M81aHWmrnoumaDnIaWq4Qnn6yta4jpxHL0ZY9eG5WT+6UWhaEHhXTDs
	pRBjoDk0bcXINaNPdRRWyUe+l7WoDl/1s57QQqglMrcvsqAww5COZjF+oxZHbXVUFC7b/l
	EOaAkZa8BMGgbgZYg/RML1ESdsMFtVs=
Message-ID: <3874c932-71c4-4253-9dcf-a9c302e6bc7e@suse.com>
Date: Wed, 9 Oct 2024 10:51:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 03/13] drivers/xen: Use never-managed version of
 pci_intx()
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-4-pstanner@redhat.com>
Content-Language: en-US
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: <20241009083519.10088-4-pstanner@redhat.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------2Uv5L81mhYS0v9My8Fapfk1p"
X-Spam-Score: -3.66
X-Spamd-Result: default: False [-3.66 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	SUSPICIOUS_RECIPS(1.50)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	NEURAL_HAM_LONG(-0.96)[-0.964];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-0.989];
	MIME_BASE64_TEXT(0.10)[];
	MIME_UNKNOWN(0.10)[application/pgp-keys];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	RCVD_TLS_ALL(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FREEMAIL_TO(0.00)[redhat.com,kernel.org,omp.ru,amd.com,arndb.de,linuxfoundation.org,yahoo.com,marvell.com,davemloft.net,google.com,quantenna.com,gmail.com,kudzu.us,intel.com,epam.com,perex.cz,suse.com,iscas.ac.cn,realtek.com,zeniv.linux.org.uk,debian.org,linutronix.de,linux.intel.com,suse.de,oracle.com,ziepe.ca,treblig.org,nvidia.com,huawei.com,invisiblethingslab.com,linux.dev];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	HAS_ATTACHMENT(0.00)[];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	TO_DN_SOME(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	R_RATELIMIT(0.00)[to_ip_from(RLi35m1hwrtxhfdgpwbbwbk6hk)];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	RCPT_COUNT_GT_50(0.00)[71];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	TAGGED_RCPT(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:email,imap1.dmz-prg2.suse.org:helo]
X-Spam-Flag: NO
X-Spam-Level: 

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------2Uv5L81mhYS0v9My8Fapfk1p
Content-Type: multipart/mixed; boundary="------------1u4lNja5wpouja0IbBZuvmvQ";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
Message-ID: <3874c932-71c4-4253-9dcf-a9c302e6bc7e@suse.com>
Subject: Re: [RFC PATCH 03/13] drivers/xen: Use never-managed version of
 pci_intx()
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-4-pstanner@redhat.com>
In-Reply-To: <20241009083519.10088-4-pstanner@redhat.com>

--------------1u4lNja5wpouja0IbBZuvmvQ
Content-Type: multipart/mixed; boundary="------------IjQbEArGRIl3eNH49ejFh0bG"

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

T24gMDkuMTAuMjQgMTA6MzUsIFBoaWxpcHAgU3Rhbm5lciB3cm90ZToNCj4gcGNpX2ludHgo
KSBpcyBhIGh5YnJpZCBmdW5jdGlvbiB3aGljaCBjYW4gc29tZXRpbWVzIGJlIG1hbmFnZWQg
dGhyb3VnaA0KPiBkZXZyZXMuIFRvIHJlbW92ZSB0aGlzIGh5YnJpZCBuYXR1cmUgZnJvbSBw
Y2lfaW50eCgpLCBpdCBpcyBuZWNlc3NhcnkgdG8NCj4gcG9ydCB1c2VycyB0byBlaXRoZXIg
YW4gYWx3YXlzLW1hbmFnZWQgb3IgYSBuZXZlci1tYW5hZ2VkIHZlcnNpb24uDQo+IA0KPiB4
ZW4gZW5hYmxlcyBpdHMgUENJLURldmljZSB3aXRoIHBjaV9lbmFibGVfZGV2aWNlKCkuIFRo
dXMsIGl0DQo+IG5lZWRzIHRoZSBuZXZlci1tYW5hZ2VkIHZlcnNpb24uDQo+IA0KPiBSZXBs
YWNlIHBjaV9pbnR4KCkgd2l0aCBwY2lfaW50eF91bm1hbmFnZWQoKS4NCj4gDQo+IFNpZ25l
ZC1vZmYtYnk6IFBoaWxpcHAgU3Rhbm5lciA8cHN0YW5uZXJAcmVkaGF0LmNvbT4NCg0KQWNr
ZWQtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCg0KQlRXLCB0aGUgZGlm
ZnN0YXQgaW4gdGhlIFtQQVRDSCAwMC8xM10gbWFpbCBpcyBtaXNzaW5nIHNvbWUgZmlsZXMs
DQplLmcuIHRoZSBjaGFuZ2VzIG9mIHRoaXMgcGF0Y2guDQoNCg0KSnVlcmdlbg0KDQo=
--------------IjQbEArGRIl3eNH49ejFh0bG
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------IjQbEArGRIl3eNH49ejFh0bG--

--------------1u4lNja5wpouja0IbBZuvmvQ--

--------------2Uv5L81mhYS0v9My8Fapfk1p
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/Ey8FAmcGRBQFAwAAAAAACgkQsN6d1ii/Ey9Y
aQf+MF1rdVHB1V9nNkwYFjHmrxI6p131cS5MV30RUb7W3rekbOWV5FVy/mefs07+fgLdc0h6d5Rj
NvmejMnUhmgo8yEM6asvlL6hVqoGlMd/1sg90oDoJLPe+ResHC1yhQcFl53+tLIRVhQUUM3olMej
62huInIiQjn5zA7ffFDxFq83rsksQw3dj4MOUbPLZK6aW0Yyic3GaxhmR7lakOW1fIRdMxdlFW7x
e0EQ3swO5y0yqPHKQHEOyDw6U6+kIlK6nbe7rP8r5KcRTd4L5PhinBVdCQAHswWacVflLMECgsAP
xD6aXriNroZb2DvAtpam+gAnTrbJikK+Qwcdy4m7cQ==
=M9GR
-----END PGP SIGNATURE-----

--------------2Uv5L81mhYS0v9My8Fapfk1p--


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:51:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:51:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813973.1227054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySQA-0008Ke-KR; Wed, 09 Oct 2024 08:51:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813973.1227054; Wed, 09 Oct 2024 08: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 1sySQA-0008KU-Hp; Wed, 09 Oct 2024 08:51:50 +0000
Received: by outflank-mailman (input) for mailman id 813973;
 Wed, 09 Oct 2024 08:51: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=ia6U=RF=kernel.org=dlemoal@srs-se1.protection.inumbo.net>)
 id 1sySQ8-00080z-Vx
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:51:48 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b7a85460-861b-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:51:48 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 561ECA43BE0;
 Wed,  9 Oct 2024 08:51:36 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2E7B7C4CEC5;
 Wed,  9 Oct 2024 08:51: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: b7a85460-861b-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728463904;
	bh=b+116RTJglq8hKTMJPN3ihohHycl1ODOr7MG5VEIobs=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=o9G7ZWkUiZ2jhvq5Xffn69FYVlVdQLJ2vD2vq0OH8pOa8Pn2o184IsyAtOJxwSAhG
	 we51csfH2s/J3u4NwHuVw/Dua+LFoCmX2iprgUu13LHO8hXrFUkOJWqn6Yoe8JUNM5
	 UQzL1jZsg1xzOyZDIDpbPns/vU1fLfp7uT/2QwJ1ankVmgSZ7JxhyzIhIqq/GTlzo1
	 shGeQGD5ddN997v99g192UiOAWF2uno4uyLJUyM7z+ace2KK0y8tWbgtVRtOWwWwbH
	 wlL09TdEbFYJlE2bUuqk+VPUMQG/2vEwvQc44WN1H1e5n4GlbrhWh0e/Uq480U1VKK
	 RWMwG6nRnJW/g==
Message-ID: <95b23ff9-eb17-4e1c-b7a3-2d3691ffc48f@kernel.org>
Date: Wed, 9 Oct 2024 17:51:34 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 09/13] ata: Use always-managed version of pci_intx()
To: Philipp Stanner <pstanner@redhat.com>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>, Juergen Gross
 <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-10-pstanner@redhat.com>
From: Damien Le Moal <dlemoal@kernel.org>
Content-Language: en-US
Organization: Western Digital Research
In-Reply-To: <20241009083519.10088-10-pstanner@redhat.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10/9/24 17:35, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> All users in ata enable their PCI-Device with pcim_enable_device(). Thus,
> they need the always-managed version.
> 
> Replace pci_intx() with pci_intx_unmanaged().

This contradicts the sentence above and the patche replaces pci_intx() with
pcim_intx()... So s/pci_intx_unmanaged/pcim_intx in the above sentence ?

> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> ---
>  drivers/ata/ahci.c       | 2 +-
>  drivers/ata/ata_piix.c   | 2 +-
>  drivers/ata/pata_rdc.c   | 2 +-
>  drivers/ata/sata_sil24.c | 2 +-
>  drivers/ata/sata_sis.c   | 2 +-
>  drivers/ata/sata_uli.c   | 2 +-
>  drivers/ata/sata_vsc.c   | 2 +-
>  7 files changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
> index 45f63b09828a..9273ff3d4732 100644
> --- a/drivers/ata/ahci.c
> +++ b/drivers/ata/ahci.c
> @@ -1985,7 +1985,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  
>  	if (ahci_init_msi(pdev, n_ports, hpriv) < 0) {
>  		/* legacy intx interrupts */
> -		pci_intx(pdev, 1);
> +		pcim_intx(pdev, 1);
>  	}
>  	hpriv->irq = pci_irq_vector(pdev, 0);
>  
> diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> index 093b940bc953..d441246fa357 100644
> --- a/drivers/ata/ata_piix.c
> +++ b/drivers/ata/ata_piix.c
> @@ -1725,7 +1725,7 @@ static int piix_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	 * message-signalled interrupts currently).
>  	 */
>  	if (port_flags & PIIX_FLAG_CHECKINTR)
> -		pci_intx(pdev, 1);
> +		pcim_intx(pdev, 1);
>  
>  	if (piix_check_450nx_errata(pdev)) {
>  		/* This writes into the master table but it does not
> diff --git a/drivers/ata/pata_rdc.c b/drivers/ata/pata_rdc.c
> index 0a9689862f71..09792aac7f9d 100644
> --- a/drivers/ata/pata_rdc.c
> +++ b/drivers/ata/pata_rdc.c
> @@ -340,7 +340,7 @@ static int rdc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  		return rc;
>  	host->private_data = hpriv;
>  
> -	pci_intx(pdev, 1);
> +	pcim_intx(pdev, 1);
>  
>  	host->flags |= ATA_HOST_PARALLEL_SCAN;
>  
> diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
> index 72c03cbdaff4..b771ebd41252 100644
> --- a/drivers/ata/sata_sil24.c
> +++ b/drivers/ata/sata_sil24.c
> @@ -1317,7 +1317,7 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  
>  	if (sata_sil24_msi && !pci_enable_msi(pdev)) {
>  		dev_info(&pdev->dev, "Using MSI\n");
> -		pci_intx(pdev, 0);
> +		pcim_intx(pdev, 0);
>  	}
>  
>  	pci_set_master(pdev);
> diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c
> index ef8724986de3..b8b6d9eff3b8 100644
> --- a/drivers/ata/sata_sis.c
> +++ b/drivers/ata/sata_sis.c
> @@ -290,7 +290,7 @@ static int sis_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	}
>  
>  	pci_set_master(pdev);
> -	pci_intx(pdev, 1);
> +	pcim_intx(pdev, 1);
>  	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
>  				 IRQF_SHARED, &sis_sht);
>  }
> diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
> index 60ea45926cd1..52894ff49dcb 100644
> --- a/drivers/ata/sata_uli.c
> +++ b/drivers/ata/sata_uli.c
> @@ -221,7 +221,7 @@ static int uli_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
>  	}
>  
>  	pci_set_master(pdev);
> -	pci_intx(pdev, 1);
> +	pcim_intx(pdev, 1);
>  	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
>  				 IRQF_SHARED, &uli_sht);
>  }
> diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c
> index d39b87537168..a53a2dfc1e17 100644
> --- a/drivers/ata/sata_vsc.c
> +++ b/drivers/ata/sata_vsc.c
> @@ -384,7 +384,7 @@ static int vsc_sata_init_one(struct pci_dev *pdev,
>  		pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 0x80);
>  
>  	if (pci_enable_msi(pdev) == 0)
> -		pci_intx(pdev, 0);
> +		pcim_intx(pdev, 0);
>  
>  	/*
>  	 * Config offset 0x98 is "Extended Control and Status Register 0"


-- 
Damien Le Moal
Western Digital Research


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 08:56:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 08:56:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.813991.1227065 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySU6-0000ti-8J; Wed, 09 Oct 2024 08:55:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 813991.1227065; Wed, 09 Oct 2024 08: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 1sySU6-0000tb-4U; Wed, 09 Oct 2024 08:55:54 +0000
Received: by outflank-mailman (input) for mailman id 813991;
 Wed, 09 Oct 2024 08: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sySDT-0005FO-2e
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 08:38:43 +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 e2f551f6-8619-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 10:38:42 +0200 (CEST)
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-604-n2t_OKkBPgK-W0XONrYSEQ-1; Wed, 09 Oct 2024 04:38:40 -0400
Received: by mail-qk1-f200.google.com with SMTP id
 af79cd13be357-7a9a6251df5so1436542885a.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 01:38:39 -0700 (PDT)
Received: from eisenberg.redhat.com (nat-pool-muc-t.redhat.com. [149.14.88.26])
 by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7ae75615aa2sm439643585a.14.2024.10.09.01.38.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 01:38:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e2f551f6-8619-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728463121;
	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=dn9hXfItCQvHywD+6VMIVaroqMco+7Lfduw/2q1HCGc=;
	b=hj2klou+2xGRVpPsPQLrxcCMOh+jN8zZ4DG+SxvURVvVbtenCEr86gxlO7IoGo4ft0qkBx
	4u3ISxwsNFornZAssJVNXt2rXiaqYr1uSaGzEYgg3Q6mObNKOlFTEga/sf4E1S2G5d+/og
	PhQ549r02nrQ/pPBFyJZBG2rX35U30k=
X-MC-Unique: n2t_OKkBPgK-W0XONrYSEQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728463119; x=1729067919;
        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=dn9hXfItCQvHywD+6VMIVaroqMco+7Lfduw/2q1HCGc=;
        b=k+R98bQA3e0y+s4UvNLiM+9M0NPLXr0pyUAy4iAhNxF9QypemndwekB7Qd6u6NVDgJ
         2b/KE2exn5d0HiDcWPamR5d8zIE0712AHqYtDm7TH2XPK6d8+Ljda5K5t0f/5Ni86pCM
         Zfoih00z9sYHoymx5EhvMzf95faDt54xBjlS6JJVVFqbHfU80/0c9Vbj1vC8Prc+l3w3
         GFCZMgtIi87SjG74wzEwhEDEvR8MVO4AE8CTdJGscN+QqaXb5GVW6WjcXKGJ+67XNsxn
         qF44M6LRnKgC4rCKzHf+IODB6AJZq0R1Ey2SElVrLkK2DexO9BXBXBa8OhudQT6pvVkU
         fSKw==
X-Forwarded-Encrypted: i=1; AJvYcCW0N4t7YJ1CHs3pVIIesOC6l8zYJu0QBDQC6C1MQZ8u09FNL+mMjlVpQmk8gZhYwwMxoU0ngTMqlnA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxo49uX2rO9bkGajmebcEwvpncPpXSRAn7fLsA70lEt7TbryC9h
	e7GmiXJHwRg8GJGBO/oUbQCFDCQZ4cAjkIuTT+etFKRDmIJ/KU103odLfXLAZKBeVziuZufAwj0
	2UkKzkDB0j03lscVOmYqDGZjRnQq5JWepHnIS59a9HbYAwGhfev7jFtUHN0iwegJL
X-Received: by 2002:a05:620a:2908:b0:7a9:aef5:e5aa with SMTP id af79cd13be357-7b0795471b6mr234983385a.41.1728463118970;
        Wed, 09 Oct 2024 01:38:38 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEtE6g17RV6mV9JUd+8nc+TtsdGWPoIOG4pYd+4ChNJCVpMXD+WAy7gOisjLQysbdOs4MSn6w==
X-Received: by 2002:a05:620a:2908:b0:7a9:aef5:e5aa with SMTP id af79cd13be357-7b0795471b6mr234976385a.41.1728463118516;
        Wed, 09 Oct 2024 01:38:38 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [RFC PATCH 13/13] Remove devres from pci_intx()
Date: Wed,  9 Oct 2024 10:35:19 +0200
Message-ID: <20241009083519.10088-14-pstanner@redhat.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. This hybrid nature is undesirable.

Since all users of pci_intx() have by now been ported either to
always-managed pcim_intx() or never-managed pci_intx_unmanaged(), the
devres functionality can be removed from pci_intx().

Consequently, pci_intx_unmanaged() is now redundant, because pci_intx()
itself is now unmanaged.

Remove the devres functionality from pci_intx(). Remove pci_intx_unmanaged().
Have all users of pci_intx_unmanaged() call pci_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/misc/cardreader/rtsx_pcr.c            |  2 +-
 drivers/misc/tifm_7xx1.c                      |  6 +--
 .../net/ethernet/broadcom/bnx2x/bnx2x_main.c  |  2 +-
 drivers/net/ethernet/brocade/bna/bnad.c       |  2 +-
 drivers/ntb/hw/amd/ntb_hw_amd.c               |  4 +-
 drivers/ntb/hw/intel/ntb_hw_gen1.c            |  2 +-
 drivers/pci/devres.c                          |  4 +-
 drivers/pci/msi/api.c                         |  2 +-
 drivers/pci/msi/msi.c                         |  2 +-
 drivers/pci/pci.c                             | 40 +------------------
 drivers/vfio/pci/vfio_pci_core.c              |  2 +-
 drivers/vfio/pci/vfio_pci_intrs.c             | 10 ++---
 drivers/xen/xen-pciback/conf_space_header.c   |  2 +-
 include/linux/pci.h                           |  1 -
 14 files changed, 21 insertions(+), 60 deletions(-)

diff --git a/drivers/misc/cardreader/rtsx_pcr.c b/drivers/misc/cardreader/rtsx_pcr.c
index e25e6d560dd7..be3d4e0e50cc 100644
--- a/drivers/misc/cardreader/rtsx_pcr.c
+++ b/drivers/misc/cardreader/rtsx_pcr.c
@@ -1057,7 +1057,7 @@ static int rtsx_pci_acquire_irq(struct rtsx_pcr *pcr)
 	}
 
 	pcr->irq = pcr->pci->irq;
-	pci_intx_unmanaged(pcr->pci, !pcr->msi_en);
+	pci_intx(pcr->pci, !pcr->msi_en);
 
 	return 0;
 }
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c
index 5f9c7ccae8d2..1d54680d6ed2 100644
--- a/drivers/misc/tifm_7xx1.c
+++ b/drivers/misc/tifm_7xx1.c
@@ -327,7 +327,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 		goto err_out;
 	}
 
-	pci_intx_unmanaged(dev, 1);
+	pci_intx(dev, 1);
 
 	fm = tifm_alloc_adapter(dev->device == PCI_DEVICE_ID_TI_XX21_XX11_FM
 				? 4 : 2, &dev->dev);
@@ -368,7 +368,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 err_out_free:
 	tifm_free_adapter(fm);
 err_out_int:
-	pci_intx_unmanaged(dev, 0);
+	pci_intx(dev, 0);
 	pci_release_regions(dev);
 err_out:
 	if (!pci_dev_busy)
@@ -392,7 +392,7 @@ static void tifm_7xx1_remove(struct pci_dev *dev)
 		tifm_7xx1_sock_power_off(tifm_7xx1_sock_addr(fm->addr, cnt));
 
 	iounmap(fm->addr);
-	pci_intx_unmanaged(dev, 0);
+	pci_intx(dev, 0);
 	pci_release_regions(dev);
 
 	pci_disable_device(dev);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 2ae63d6e6792..678829646cec 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -1669,7 +1669,7 @@ static void bnx2x_igu_int_enable(struct bnx2x *bp)
 	REG_WR(bp, IGU_REG_PF_CONFIGURATION, val);
 
 	if (val & IGU_PF_CONF_INT_LINE_EN)
-		pci_intx_unmanaged(bp->pdev, true);
+		pci_intx(bp->pdev, true);
 
 	barrier();
 
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index 2b37462d406e..ece6f3b48327 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -2669,7 +2669,7 @@ bnad_enable_msix(struct bnad *bnad)
 		}
 	}
 
-	pci_intx_unmanaged(bnad->pcidev, 0);
+	pci_intx(bnad->pcidev, 0);
 
 	return;
 
diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
index b146f170e839..d687e8c2cc78 100644
--- a/drivers/ntb/hw/amd/ntb_hw_amd.c
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
@@ -791,7 +791,7 @@ static int ndev_init_isr(struct amd_ntb_dev *ndev,
 err_msi_enable:
 
 	/* Try to set up intx irq */
-	pci_intx_unmanaged(pdev, 1);
+	pci_intx(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
@@ -831,7 +831,7 @@ static void ndev_deinit_isr(struct amd_ntb_dev *ndev)
 		if (pci_dev_msi_enabled(pdev))
 			pci_disable_msi(pdev);
 		else
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 	}
 }
 
diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c
index 9ad9d7fe227e..079b8cd79785 100644
--- a/drivers/ntb/hw/intel/ntb_hw_gen1.c
+++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c
@@ -445,7 +445,7 @@ int ndev_init_isr(struct intel_ntb_dev *ndev,
 
 	/* Try to set up intx irq */
 
-	pci_intx_unmanaged(pdev, 1);
+	pci_intx(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
index 475a3ae5c33f..402558fd2436 100644
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -416,7 +416,7 @@ static void pcim_intx_restore(struct device *dev, void *data)
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct pcim_intx_devres *res = data;
 
-	pci_intx_unmanaged(pdev, res->orig_intx);
+	pci_intx(pdev, res->orig_intx);
 }
 
 static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
@@ -453,7 +453,7 @@ int pcim_intx(struct pci_dev *pdev, int enable)
 		return -ENOMEM;
 
 	res->orig_intx = !enable;
-	pci_intx_unmanaged(pdev, enable);
+	pci_intx(pdev, enable);
 
 	return 0;
 }
diff --git a/drivers/pci/msi/api.c b/drivers/pci/msi/api.c
index c95e2e7dc9ab..b956ce591f96 100644
--- a/drivers/pci/msi/api.c
+++ b/drivers/pci/msi/api.c
@@ -289,7 +289,7 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
 			 */
 			if (affd)
 				irq_create_affinity_masks(1, affd);
-			pci_intx_unmanaged(dev, 1);
+			pci_intx(dev, 1);
 			return 1;
 		}
 	}
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 53f13b09db50..3a45879d85db 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -268,7 +268,7 @@ EXPORT_SYMBOL_GPL(pci_write_msi_msg);
 static void pci_intx_for_msi(struct pci_dev *dev, int enable)
 {
 	if (!(dev->dev_flags & PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG))
-		pci_intx_unmanaged(dev, enable);
+		pci_intx(dev, enable);
 }
 
 static void pci_msi_set_enable(struct pci_dev *dev, int enable)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 318cfb5b5e15..2d5992fbd413 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -4476,43 +4476,12 @@ void pci_disable_parity(struct pci_dev *dev)
 	}
 }
 
-/**
- * pci_intx - enables/disables PCI INTx for device dev, unmanaged version
- * @pdev: the PCI device to operate on
- * @enable: boolean: whether to enable or disable PCI INTx
- *
- * Enables/disables PCI INTx for device @pdev
- *
- * This function behavios identically to pci_intx(), but is never managed with
- * devres.
- */
-void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
-{
-	u16 pci_command, new;
-
-	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
-
-	if (enable)
-		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
-	else
-		new = pci_command | PCI_COMMAND_INTX_DISABLE;
-
-	if (new != pci_command)
-		pci_write_config_word(pdev, PCI_COMMAND, new);
-}
-EXPORT_SYMBOL_GPL(pci_intx_unmanaged);
-
 /**
  * pci_intx - enables/disables PCI INTx for device dev
  * @pdev: the PCI device to operate on
  * @enable: boolean: whether to enable or disable PCI INTx
  *
  * Enables/disables PCI INTx for device @pdev
- *
- * NOTE:
- * This is a "hybrid" function: It's normally unmanaged, but becomes managed
- * when pcim_enable_device() has been called in advance. This hybrid feature is
- * DEPRECATED! If you want managed cleanup, use pcim_intx() instead.
  */
 void pci_intx(struct pci_dev *pdev, int enable)
 {
@@ -4525,15 +4494,8 @@ void pci_intx(struct pci_dev *pdev, int enable)
 	else
 		new = pci_command | PCI_COMMAND_INTX_DISABLE;
 
-	if (new != pci_command) {
-		/* Preserve the "hybrid" behavior for backwards compatibility */
-		if (pci_is_managed(pdev)) {
-			WARN_ON_ONCE(pcim_intx(pdev, enable) != 0);
-			return;
-		}
-
+	if (new != pci_command)
 		pci_write_config_word(pdev, PCI_COMMAND, new);
-	}
 }
 EXPORT_SYMBOL_GPL(pci_intx);
 
diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index 90240c8d51aa..1ab58da9f38a 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -498,7 +498,7 @@ int vfio_pci_core_enable(struct vfio_pci_core_device *vdev)
 		if (vfio_pci_nointx(pdev)) {
 			pci_info(pdev, "Masking broken INTx support\n");
 			vdev->nointx = true;
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 		} else
 			vdev->pci_2_3 = pci_intx_mask_supported(pdev);
 	}
diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
index 40abb0b937a2..8382c5834335 100644
--- a/drivers/vfio/pci/vfio_pci_intrs.c
+++ b/drivers/vfio/pci/vfio_pci_intrs.c
@@ -118,7 +118,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 		goto out_unlock;
 	}
 
@@ -132,7 +132,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 		 * mask, not just when something is pending.
 		 */
 		if (vdev->pci_2_3)
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 		else
 			disable_irq_nosync(pdev->irq);
 
@@ -178,7 +178,7 @@ static int vfio_pci_intx_unmask_handler(void *opaque, void *data)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx_unmanaged(pdev, 1);
+			pci_intx(pdev, 1);
 		goto out_unlock;
 	}
 
@@ -296,7 +296,7 @@ static int vfio_intx_enable(struct vfio_pci_core_device *vdev,
 	 */
 	ctx->masked = vdev->virq_disabled;
 	if (vdev->pci_2_3) {
-		pci_intx_unmanaged(pdev, !ctx->masked);
+		pci_intx(pdev, !ctx->masked);
 		irqflags = IRQF_SHARED;
 	} else {
 		irqflags = ctx->masked ? IRQF_NO_AUTOEN : 0;
@@ -569,7 +569,7 @@ static void vfio_msi_disable(struct vfio_pci_core_device *vdev, bool msix)
 	 * via their shutdown paths.  Restore for NoINTx devices.
 	 */
 	if (vdev->nointx)
-		pci_intx_unmanaged(pdev, 0);
+		pci_intx(pdev, 0);
 
 	vdev->irq_type = VFIO_PCI_NUM_IRQS;
 }
diff --git a/drivers/xen/xen-pciback/conf_space_header.c b/drivers/xen/xen-pciback/conf_space_header.c
index 8d26d64232e8..fc0332645966 100644
--- a/drivers/xen/xen-pciback/conf_space_header.c
+++ b/drivers/xen/xen-pciback/conf_space_header.c
@@ -106,7 +106,7 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
 
 	if (dev_data && dev_data->allow_interrupt_control &&
 	    ((cmd->val ^ value) & PCI_COMMAND_INTX_DISABLE))
-		pci_intx_unmanaged(dev, !(value & PCI_COMMAND_INTX_DISABLE));
+		pci_intx(dev, !(value & PCI_COMMAND_INTX_DISABLE));
 
 	cmd->val = value;
 
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 6b8cde76d564..1b2a6dd1dfed 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1353,7 +1353,6 @@ int __must_check pcim_set_mwi(struct pci_dev *dev);
 int pci_try_set_mwi(struct pci_dev *dev);
 void pci_clear_mwi(struct pci_dev *dev);
 void pci_disable_parity(struct pci_dev *dev);
-void pci_intx_unmanaged(struct pci_dev *pdev, int enable);
 void pci_intx(struct pci_dev *dev, int enable);
 bool pci_check_and_mask_intx(struct pci_dev *dev);
 bool pci_check_and_unmask_intx(struct pci_dev *dev);
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:11:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:11:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814006.1227074 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySid-0008GC-FI; Wed, 09 Oct 2024 09:10:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814006.1227074; Wed, 09 Oct 2024 09: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 1sySid-0008G5-CT; Wed, 09 Oct 2024 09:10:55 +0000
Received: by outflank-mailman (input) for mailman id 814006;
 Wed, 09 Oct 2024 09:10: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=ia6U=RF=kernel.org=dlemoal@srs-se1.protection.inumbo.net>)
 id 1sySib-0008Ef-E6
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:10:53 +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 60cc8f80-861e-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 11:10:51 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id CCDCF5C5DD8;
 Wed,  9 Oct 2024 09:10:44 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C87BC4CEC5;
 Wed,  9 Oct 2024 09:10: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: 60cc8f80-861e-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728465048;
	bh=SeiKUnM1DO48iG3Gr3JzhpZfh6fszoAqw+yG9jEe454=;
	h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
	b=apgg8LYblMD4qcg07qq3Mkgt0ywwQuc+3xw0JHmyyo9R1mWrfGxw8wTc4OdVdv86c
	 9NvoStQW9y9swxeftz9Y/d+2+eWrhl8IJ+ehaoOKL5kcWGNnsVpJgR/dEBQtmS3u1T
	 rdBzExB9GsjgYbIOJpmcB5A2VggPdQMDCHWytgB566ZNT/uK6NwYLIDILg88BAHeQz
	 vk/SHdbAb6yjKubsySQAdtJ9+53NgxwB7giJMbQu+dDrvvT9iCnDXeZaC9YE6mq48L
	 2OdUXj462FwW5nDBk2woP+WbDOgZfiJhnt/gsiFXjp+bfi2iB8hwnrHQlGtidEcPDH
	 jr9p8eMo3AZKg==
Message-ID: <5f785dda-b2d7-466f-96c3-23faf0b80975@kernel.org>
Date: Wed, 9 Oct 2024 18:10:39 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
To: Philipp Stanner <pstanner@redhat.com>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>, Juergen Gross
 <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-2-pstanner@redhat.com>
From: Damien Le Moal <dlemoal@kernel.org>
Content-Language: en-US
Organization: Western Digital Research
In-Reply-To: <20241009083519.10088-2-pstanner@redhat.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10/9/24 17:35, Philipp Stanner wrote:
> pci_intx() is a hybrid function which sometimes performs devres
> operations, depending on whether pcim_enable_device() has been used to
> enable the pci_dev. This sometimes-managed nature of the function is
> problematic. Notably, it causes the function to allocate under some
> circumstances which makes it unusable from interrupt context.
> 
> To, ultimately, remove the hybrid nature from pci_intx(), it is first
> necessary to provide an always-managed and a never-managed version
> of that function. Then, all callers of pci_intx() can be ported to the
> version they need, depending whether they use pci_enable_device() or
> pcim_enable_device().
> 
> An always-managed function exists, namely pcim_intx(), for which
> __pcim_intx(), a never-managed version of pci_intx() had been

s/had/has ? Not sure about this, English is not my first language :)

> implemented.
> 
> Make __pcim_intx() a public function under the name
> pci_intx_unmanaged(). Make pcim_intx() a public function.
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>

Regardless of the above nit, looks OK to me.

Reviewed-by: Damien Le Moal <dlemoal@kernel.org>

-- 
Damien Le Moal
Western Digital Research


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:20:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:20:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814013.1227084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySs6-0003jF-AR; Wed, 09 Oct 2024 09:20:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814013.1227084; Wed, 09 Oct 2024 09: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 1sySs6-0003j8-7q; Wed, 09 Oct 2024 09:20:42 +0000
Received: by outflank-mailman (input) for mailman id 814013;
 Wed, 09 Oct 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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sySs5-0003j2-8D
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:20:41 +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 bf2f14a1-861f-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 11:20:38 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a9963e47b69so345859666b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:20:38 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99757f11f8sm204749766b.202.2024.10.09.02.20.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:20:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bf2f14a1-861f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465638; x=1729070438; 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=a29x9jHn15Yx0UDYHEFyw1DEhGv4okd9z41PWGi5mwI=;
        b=Pu4HNWFAuz6XjfhtBrnj5YRghW2GgrMovJsNgUrV8Iz1chjCCGd66TC1I9nUQuYem7
         ie1n3EC2fBGAhEzco8U1X3pzXvipROjhOgcVxbwlGZUDxk8q2TMRpTf4GAKWTkEQSHvB
         jnsoc5VjUGbqd0FHBi3FGSeAFkiZWh8RKNFQ2ekDxSuSefirTF6FEXZKAaIRBvAvESnA
         it+RXaBJGzCfdARlT/vP9jDGOSnJ79R1JQKXc8FUNGJklrPXOPxxPfR0qj9EdaJwzqCD
         Xorj5bXuDRiM535Skw5dbeaccS6OjrB07iVmj+XPLDag+Q0HXvF7tvkPUf1GBGCdiIRs
         ZdKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465638; x=1729070438;
        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=a29x9jHn15Yx0UDYHEFyw1DEhGv4okd9z41PWGi5mwI=;
        b=k9gCZQE6pK4YQBp0xS6gJzb1Qu63+yqQa8u4J9fgpjZ2U4k33X05EMfl7ygH4AAlrH
         WFFVm7a+wbLUOx1IQinq5MEk3rVuBUWAWncGdzyvNyf+v/aHoih5hRoDaNnF08uKhC7r
         PiR0BnXkbIaQrPn23Jdbs+a1zHcXKWrDB+Fp1Kx0AK9OtuxCgnnBzm2Q9UzdlN0eCOv/
         MSwoch1tGPe1D7140podws8OY2+3t4Wl1GnZMZwDJhFH4auBI7Mb3/9jcNh1Xb7l8Y1q
         CWbkiczwCaQ8Yb5cL+GCSy3wLrriqGn18d59gEXLV+7MYUz8EqutA29TK1vEAHkEK6+1
         NlhQ==
X-Gm-Message-State: AOJu0Yztf7DxPRZ4TKCvtJ5Qs2OHj4fBoM/Ghb+FTmNGID0zqp0m+etp
	4tjM8KSdnoCW3cm+g4H/8hhwuD/D1cbRgbR9dS35SoedUrBT/hzIf/WF3KdeQF3esVSdHnY0BXE
	=
X-Google-Smtp-Source: AGHT+IG6eHPAmxnwcBQM9csYwYbF/yRhnBW2MuQ3GQTzl3WPLXyoKRj7RPT5Dm+Wh07qiyfUSplMyw==
X-Received: by 2002:a17:907:944a:b0:a99:4136:895f with SMTP id a640c23a62f3a-a998d302248mr141908366b.41.1728465637675;
        Wed, 09 Oct 2024 02:20:37 -0700 (PDT)
Message-ID: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Date: Wed, 9 Oct 2024 11:20:36 +0200
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>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 0/7] types: replace remaining uses of __u{16,32,64}
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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: byteorder: replace __u16
2: byteorder: replace __u32
3: Flask: replace uses of __u32
4: x86: modernize swab64()
5: types: replace remaining uses of __u32
6: byteorder: replace __u64
7: types: replace remaining use of __u64

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:21:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:21:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814022.1227095 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syStG-0004Ip-Nt; Wed, 09 Oct 2024 09:21:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814022.1227095; Wed, 09 Oct 2024 09: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 1syStG-0004Ii-KG; Wed, 09 Oct 2024 09:21:54 +0000
Received: by outflank-mailman (input) for mailman id 814022;
 Wed, 09 Oct 2024 09: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syStF-0004IZ-1d
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:21:53 +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 eae4b11b-861f-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 11:21:51 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c90333aaf1so1573264a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:21:51 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05c13d2sm5254411a12.58.2024.10.09.02.21.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:21:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eae4b11b-861f-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465711; x=1729070511; 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=SwJiQ5LRjRsB466O+oDjAIYFHy+oGvNSb3+tByj4BgU=;
        b=RaS2y0R1sU4c64svLQxjqDujQgdzxj8zge1BMfJet/l+tD6ipFfVjkll3mmxejzH9H
         JVqo2ywQQUaiGrmgJW8qr8mdwgau9S/XqsKSZ2dGAIoZ7ThcmxEsYkK6oejlixr/rMU/
         Agan4HOzvJmEKrqq0lm9a6/yToOcTZ10xPVgYw1LUsAfITiPe9sYSau3/lNcwdcJuhk5
         NiYOpV4aMAscadkxnHSRg50X2maM8G9klr3sAe7ev9X6x+CINVeT+QZ9TkiA3WGkBxMe
         Q3WWTbacdWfCPN6P4UgVFjIXMCEGLGakkcYdMYFDgcFtdWIgMUEfs/uQLQDoKrVIbYY9
         5vJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465711; x=1729070511;
        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=SwJiQ5LRjRsB466O+oDjAIYFHy+oGvNSb3+tByj4BgU=;
        b=wf9+nWR3sfQt7kk8FtyA4joi7maI6nwya4nwO/t4iI8LZwVqGd5n8TzHrW3s6tgihi
         1OSLy4JTrQZqk/8wpqoAmX48qkY0xus60t9kJkrO77tP9keI2xVK5R3Xh2GJcUKAOgJJ
         X/+ty4YaZPiIv4RT3XDFfiucOoNDv5EqKi6y0eN2ISsEp6btri7PboStn2KZ6ayb/zOr
         nfyoDgyI6cf/euNdaN6/XrLoN2P9xfuMIrrHYO2COYiZE6y4zD9XBIqHpgeKURYP4pp8
         C4FnIcFiQi4pvgtEeVsnTW8Zo544ECYrz6OqtaZb7QhTSAkkOuNf9shNtPUY68u/xUul
         8CQA==
X-Gm-Message-State: AOJu0Yy79kOM5KRi0ss1XbRIX23celS61O0Qm4F/5TXigqtl7pd1znpB
	nCBYWm6CDSeAxxVHRRRxCphD1WRXrxoMWnDsvR/8ejeKQt98+5GrHzaCecf085R/gT5Slk3V+Z8
	=
X-Google-Smtp-Source: AGHT+IEFHgyD+96nHThn9bhtlHZFpzeg925t7VqO8Uu/o1tgfwGnnC4RJhMOZYDVngN7O+qp8oAdAA==
X-Received: by 2002:a05:6402:5248:b0:5c8:9553:a1fb with SMTP id 4fb4d7f45d1cf-5c91d551f57mr1769075a12.9.1728465710920;
        Wed, 09 Oct 2024 02:21:50 -0700 (PDT)
Message-ID: <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
Date: Wed, 9 Oct 2024 11:21:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 1/7] byteorder: replace __u16
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@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: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In {big,little}_endian.h the changes are entirely mechanical, except for
dealing with casting away of const from pointers-to-const on lines
touched anyway.

In swab.h the casting of constants is done away with as well - I simply
don't see what the respective comment is concerned about in our
environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
architecture, sizeof(long long) >= 8). The comment is certainly relevant
in more general cases. Excess parentheses are dropped as well,
___swab16()'s local variable is renamed, and __arch__swab16()'s is
dropped as being redundant with ___swab16()'s.

With that no uses of the type remain, so it moves to linux-compat.h.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
I'm unconvinced of the need of the separate ___constant_swab16(). I'm
also unconvinced of the need for said constants (that even had casts on
them).

--- a/xen/include/xen/byteorder/big_endian.h
+++ b/xen/include/xen/byteorder/big_endian.h
@@ -16,25 +16,25 @@
 #define __constant_cpu_to_le32(x) ((__force __le32)___constant_swab32((x)))
 #define __constant_le32_to_cpu(x) ___constant_swab32((__force __u32)(__le32)(x))
 #define __constant_cpu_to_le16(x) ((__force __le16)___constant_swab16((x)))
-#define __constant_le16_to_cpu(x) ___constant_swab16((__force __u16)(__le16)(x))
+#define __constant_le16_to_cpu(x) ___constant_swab16((__force uint16_t)(__le16)(x))
 #define __constant_cpu_to_be64(x) ((__force __be64)(__u64)(x))
 #define __constant_be64_to_cpu(x) ((__force __u64)(__be64)(x))
 #define __constant_cpu_to_be32(x) ((__force __be32)(__u32)(x))
 #define __constant_be32_to_cpu(x) ((__force __u32)(__be32)(x))
-#define __constant_cpu_to_be16(x) ((__force __be16)(__u16)(x))
-#define __constant_be16_to_cpu(x) ((__force __u16)(__be16)(x))
+#define __constant_cpu_to_be16(x) ((__force __be16)(uint16_t)(x))
+#define __constant_be16_to_cpu(x) ((__force uint16_t)(__be16)(x))
 #define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
 #define __le64_to_cpu(x) __swab64((__force __u64)(__le64)(x))
 #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
 #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
 #define __cpu_to_le16(x) ((__force __le16)__swab16((x)))
-#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
+#define __le16_to_cpu(x) __swab16((__force uint16_t)(__le16)(x))
 #define __cpu_to_be64(x) ((__force __be64)(__u64)(x))
 #define __be64_to_cpu(x) ((__force __u64)(__be64)(x))
 #define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
 #define __be32_to_cpu(x) ((__force __u32)(__be32)(x))
-#define __cpu_to_be16(x) ((__force __be16)(__u16)(x))
-#define __be16_to_cpu(x) ((__force __u16)(__be16)(x))
+#define __cpu_to_be16(x) ((__force __be16)(uint16_t)(x))
+#define __be16_to_cpu(x) ((__force uint16_t)(__be16)(x))
 
 static inline __le64 __cpu_to_le64p(const __u64 *p)
 {
@@ -52,13 +52,13 @@ static inline __u32 __le32_to_cpup(const
 {
     return __swab32p((__u32 *)p);
 }
-static inline __le16 __cpu_to_le16p(const __u16 *p)
+static inline __le16 __cpu_to_le16p(const uint16_t *p)
 {
     return (__force __le16)__swab16p(p);
 }
-static inline __u16 __le16_to_cpup(const __le16 *p)
+static inline uint16_t __le16_to_cpup(const __le16 *p)
 {
-    return __swab16p((__u16 *)p);
+    return __swab16p((const uint16_t *)p);
 }
 static inline __be64 __cpu_to_be64p(const __u64 *p)
 {
@@ -76,13 +76,13 @@ static inline __u32 __be32_to_cpup(const
 {
     return (__force __u32)*p;
 }
-static inline __be16 __cpu_to_be16p(const __u16 *p)
+static inline __be16 __cpu_to_be16p(const uint16_t *p)
 {
     return (__force __be16)*p;
 }
-static inline __u16 __be16_to_cpup(const __be16 *p)
+static inline uint16_t __be16_to_cpup(const __be16 *p)
 {
-    return (__force __u16)*p;
+    return (__force uint16_t)*p;
 }
 #define __cpu_to_le64s(x) __swab64s((x))
 #define __le64_to_cpus(x) __swab64s((x))
--- a/xen/include/xen/byteorder/little_endian.h
+++ b/xen/include/xen/byteorder/little_endian.h
@@ -15,26 +15,26 @@
 #define __constant_le64_to_cpu(x) ((__force __u64)(__le64)(x))
 #define __constant_cpu_to_le32(x) ((__force __le32)(__u32)(x))
 #define __constant_le32_to_cpu(x) ((__force __u32)(__le32)(x))
-#define __constant_cpu_to_le16(x) ((__force __le16)(__u16)(x))
-#define __constant_le16_to_cpu(x) ((__force __u16)(__le16)(x))
+#define __constant_cpu_to_le16(x) ((__force __le16)(uint16_t)(x))
+#define __constant_le16_to_cpu(x) ((__force uint16_t)(__le16)(x))
 #define __constant_cpu_to_be64(x) ((__force __be64)___constant_swab64((x)))
 #define __constant_be64_to_cpu(x) ___constant_swab64((__force __u64)(__be64)(x))
 #define __constant_cpu_to_be32(x) ((__force __be32)___constant_swab32((x)))
 #define __constant_be32_to_cpu(x) ___constant_swab32((__force __u32)(__be32)(x))
 #define __constant_cpu_to_be16(x) ((__force __be16)___constant_swab16((x)))
-#define __constant_be16_to_cpu(x) ___constant_swab16((__force __u16)(__be16)(x))
+#define __constant_be16_to_cpu(x) ___constant_swab16((__force uint16_t)(__be16)(x))
 #define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
 #define __le64_to_cpu(x) ((__force __u64)(__le64)(x))
 #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
 #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
-#define __cpu_to_le16(x) ((__force __le16)(__u16)(x))
-#define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
+#define __cpu_to_le16(x) ((__force __le16)(uint16_t)(x))
+#define __le16_to_cpu(x) ((__force uint16_t)(__le16)(x))
 #define __cpu_to_be64(x) ((__force __be64)__swab64((x)))
 #define __be64_to_cpu(x) __swab64((__force __u64)(__be64)(x))
 #define __cpu_to_be32(x) ((__force __be32)__swab32((x)))
 #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
 #define __cpu_to_be16(x) ((__force __be16)__swab16((x)))
-#define __be16_to_cpu(x) __swab16((__force __u16)(__be16)(x))
+#define __be16_to_cpu(x) __swab16((__force uint16_t)(__be16)(x))
 
 static inline __le64 __cpu_to_le64p(const __u64 *p)
 {
@@ -52,13 +52,13 @@ static inline __u32 __le32_to_cpup(const
 {
     return (__force __u32)*p;
 }
-static inline __le16 __cpu_to_le16p(const __u16 *p)
+static inline __le16 __cpu_to_le16p(const uint16_t *p)
 {
     return (__force __le16)*p;
 }
-static inline __u16 __le16_to_cpup(const __le16 *p)
+static inline uint16_t __le16_to_cpup(const __le16 *p)
 {
-    return (__force __u16)*p;
+    return (__force uint16_t)*p;
 }
 static inline __be64 __cpu_to_be64p(const __u64 *p)
 {
@@ -76,13 +76,13 @@ static inline __u32 __be32_to_cpup(const
 {
     return __swab32p((__u32 *)p);
 }
-static inline __be16 __cpu_to_be16p(const __u16 *p)
+static inline __be16 __cpu_to_be16p(const uint16_t *p)
 {
     return (__force __be16)__swab16p(p);
 }
-static inline __u16 __be16_to_cpup(const __be16 *p)
+static inline uint16_t __be16_to_cpup(const __be16 *p)
 {
-    return __swab16p((__u16 *)p);
+    return __swab16p((const uint16_t *)p);
 }
 #define __cpu_to_le64s(x) do {} while (0)
 #define __le64_to_cpus(x) do {} while (0)
--- a/xen/include/xen/byteorder/swab.h
+++ b/xen/include/xen/byteorder/swab.h
@@ -10,15 +10,16 @@
  *    to clean up support for bizarre-endian architectures.
  */
 
-/* casts are necessary for constants, because we never know how for sure
- * how U/UL/ULL map to __u16, __u32, __u64. At least not in a portable way.
+/*
+ * Casts are necessary for constants, because we never know for sure how
+ * U/UL/ULL map to __u32, __u64. At least not in a portable way.
  */
 #define ___swab16(x)                                    \
 ({                                                      \
-    __u16 __x = (x);                                    \
-    ((__u16)(                                           \
-        (((__u16)(__x) & (__u16)0x00ffU) << 8) |        \
-        (((__u16)(__x) & (__u16)0xff00U) >> 8) ));      \
+    uint16_t x_ = (x);                                  \
+    (uint16_t)(                                         \
+        (((uint16_t)(x_) & 0x00ffU) << 8) |             \
+        (((uint16_t)(x_) & 0xff00U) >> 8));             \
 })
 
 #define ___swab32(x)                                            \
@@ -46,9 +47,9 @@
 })
 
 #define ___constant_swab16(x)                   \
-    ((__u16)(                                   \
-        (((__u16)(x) & (__u16)0x00ffU) << 8) |  \
-        (((__u16)(x) & (__u16)0xff00U) >> 8) ))
+    ((uint16_t)(                                \
+        (((uint16_t)(x) & 0x00ffU) << 8) |      \
+        (((uint16_t)(x) & 0xff00U) >> 8)))
 #define ___constant_swab32(x)                           \
     ((__u32)(                                           \
         (((__u32)(x) & (__u32)0x000000ffUL) << 24) |    \
@@ -70,7 +71,7 @@
  * provide defaults when no architecture-specific optimization is detected
  */
 #ifndef __arch__swab16
-#  define __arch__swab16(x) ({ __u16 __tmp = (x) ; ___swab16(__tmp); })
+#  define __arch__swab16(x) ___swab16(x)
 #endif
 #ifndef __arch__swab32
 #  define __arch__swab32(x) ({ __u32 __tmp = (x) ; ___swab32(__tmp); })
@@ -105,7 +106,7 @@
  */
 #if defined(__GNUC__) && defined(__OPTIMIZE__)
 #  define __swab16(x) \
-(__builtin_constant_p((__u16)(x)) ? \
+(__builtin_constant_p((uint16_t)(x)) ? \
  ___swab16((x)) : \
  __fswab16((x)))
 #  define __swab32(x) \
@@ -123,15 +124,15 @@
 #endif /* OPTIMIZE */
 
 
-static inline attr_const __u16 __fswab16(__u16 x)
+static inline attr_const uint16_t __fswab16(uint16_t x)
 {
     return __arch__swab16(x);
 }
-static inline __u16 __swab16p(const __u16 *x)
+static inline uint16_t __swab16p(const uint16_t *x)
 {
     return __arch__swab16p(x);
 }
-static inline void __swab16s(__u16 *addr)
+static inline void __swab16s(uint16_t *addr)
 {
     __arch__swab16s(addr);
 }
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -14,6 +14,7 @@
 typedef int8_t  s8, __s8;
 typedef uint8_t __u8;
 typedef int16_t s16, __s16;
+typedef uint16_t __u16;
 typedef int32_t s32, __s32;
 typedef int64_t s64, __s64;
 
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -6,7 +6,7 @@
 
 /* Linux inherited types which are being phased out */
 typedef uint8_t u8;
-typedef uint16_t u16, __u16;
+typedef uint16_t u16;
 typedef uint32_t u32, __u32;
 typedef uint64_t u64, __u64;
 
@@ -51,8 +51,8 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
 #define LONG_MIN        (-LONG_MAX - 1)
 #define ULONG_MAX       (~0UL)
 
-typedef __u16 __le16;
-typedef __u16 __be16;
+typedef uint16_t __le16;
+typedef uint16_t __be16;
 typedef __u32 __le32;
 typedef __u32 __be32;
 typedef __u64 __le64;



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:22:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:22:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814025.1227105 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syStZ-0004ja-Vj; Wed, 09 Oct 2024 09:22:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814025.1227105; Wed, 09 Oct 2024 09:22: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 1syStZ-0004jS-Sa; Wed, 09 Oct 2024 09:22:13 +0000
Received: by outflank-mailman (input) for mailman id 814025;
 Wed, 09 Oct 2024 09:22: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syStZ-0004i5-0m
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:22:13 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f6768ff0-861f-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 11:22:11 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so764049466b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:22:11 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9944d35ae0sm516341966b.179.2024.10.09.02.22.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:22:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f6768ff0-861f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465730; x=1729070530; 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=V8c2SNQ211TOqrrm1XFnwxCRfjvpxqWFiyYI1q9RatQ=;
        b=FLCL+zCS9rgtbiEcrw6aT7R+1c8za3nVuMGVvyRHBm+NPtDUJjdN8FF+qRro5QqJvm
         OpeKVeKRsKmHivEJF2xF6pE3FtmlOTC0J2NMkNq3sZ3KLpOTEAMSN8xE0ccc3h62U0ww
         z7H6DWr5MhmFzgSD5GN9hB8LDmD/7A+WT93nWbixviGL4C5N4PWJmkPUQAZKNgMg15GP
         Of64NUs4lsIDn6jafacBTytJMJyQiYbJInvCNYeJShsiskVC2NBiSbXiAehrrLLiQUw8
         96KvsDlvGrbwymkUUNKcPetU59jmCoqN9nW5CbbQqNAJrXRPK+pqYzB5cG5I+u4n/H7Y
         kPOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465730; x=1729070530;
        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=V8c2SNQ211TOqrrm1XFnwxCRfjvpxqWFiyYI1q9RatQ=;
        b=WytvuwgTUAu4bu/y5m3WXSJYAIKRvMTjjOPnO8V2iHNXbk5NYjnT2DAKv16pO8ku82
         s37IIU1kLYmdPTgVWuHGdkI+LtW4/08uye/jVB3xoPrSFzjXM5FCMOr/ud/raRAwZaK2
         yGyqypCauuW7faIpD4iTJRUdViwZf2S0cTpjWPgXIEJcTVheYkbIBX2trDVkF2nZVpoI
         2GSEnscraIgf1MEuS5qJtYkL0DArbPwhYtO9s6kKD5+uxR+VViYpScy2xBpDR0Nypb5a
         kQteNZPvcN8F8cio+XUOm1XNS3CgQ9zsLjpt8pM2hOvRMniZXMFLYT/7xF3/IXS0tBJv
         d7mQ==
X-Gm-Message-State: AOJu0YwHErNLbAldJyOOASA3cIzs6KOFJumnaFbyN5G5V0XqZAoP6vFq
	fnqJ7evfzrFXoDxQEAEpvJIfPGCdXxnYE6pCwDOf4e2FslclgjNh0UGPqaMDFjQ40EqvA3b/QTE
	=
X-Google-Smtp-Source: AGHT+IFxx9aAXs9K3UWLUkNoPTxnyQgFbFDiv6QuguA0fBJfC6nx4QcDbNYAPGOBVLbci3y7zpLYtg==
X-Received: by 2002:a17:906:c105:b0:a99:403e:2578 with SMTP id a640c23a62f3a-a998d0ffcc4mr141469566b.5.1728465730378;
        Wed, 09 Oct 2024 02:22:10 -0700 (PDT)
Message-ID: <ec9a5268-f4fc-44f0-b8b6-803c9f935026@suse.com>
Date: Wed, 9 Oct 2024 11:22:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 2/7] byteorder: replace __u32
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@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: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In {big,little}_endian.h the changes are entirely mechanical, except for
dealing with casting away of const from pointers-to-const on lines
touched anyway.

In swab.h the casting of constants is done away with as well - I simply
don't see what the respective comment is concerned about in our
environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
architecture, sizeof(long long) >= 8). The comment is certainly relevant
in more general cases. Excess parentheses are dropped as well,
___swab32()'s local variable is renamed, and __arch__swab32()'s is
dropped as being redundant with ___swab32()'s.

The masking operation is also dropped from __fswab64().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
I'm unconvinced of the need of the separate ___constant_swab32(). I'm
also unconvinced of the need for some of said constants (that even had
casts on them).

--- a/xen/include/xen/byteorder/big_endian.h
+++ b/xen/include/xen/byteorder/big_endian.h
@@ -14,25 +14,25 @@
 #define __constant_cpu_to_le64(x) ((__force __le64)___constant_swab64((x)))
 #define __constant_le64_to_cpu(x) ___constant_swab64((__force __u64)(__le64)(x))
 #define __constant_cpu_to_le32(x) ((__force __le32)___constant_swab32((x)))
-#define __constant_le32_to_cpu(x) ___constant_swab32((__force __u32)(__le32)(x))
+#define __constant_le32_to_cpu(x) ___constant_swab32((__force uint32_t)(__le32)(x))
 #define __constant_cpu_to_le16(x) ((__force __le16)___constant_swab16((x)))
 #define __constant_le16_to_cpu(x) ___constant_swab16((__force uint16_t)(__le16)(x))
 #define __constant_cpu_to_be64(x) ((__force __be64)(__u64)(x))
 #define __constant_be64_to_cpu(x) ((__force __u64)(__be64)(x))
-#define __constant_cpu_to_be32(x) ((__force __be32)(__u32)(x))
-#define __constant_be32_to_cpu(x) ((__force __u32)(__be32)(x))
+#define __constant_cpu_to_be32(x) ((__force __be32)(uint32_t)(x))
+#define __constant_be32_to_cpu(x) ((__force uint32_t)(__be32)(x))
 #define __constant_cpu_to_be16(x) ((__force __be16)(uint16_t)(x))
 #define __constant_be16_to_cpu(x) ((__force uint16_t)(__be16)(x))
 #define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
 #define __le64_to_cpu(x) __swab64((__force __u64)(__le64)(x))
 #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
-#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
+#define __le32_to_cpu(x) __swab32((__force uint32_t)(__le32)(x))
 #define __cpu_to_le16(x) ((__force __le16)__swab16((x)))
 #define __le16_to_cpu(x) __swab16((__force uint16_t)(__le16)(x))
 #define __cpu_to_be64(x) ((__force __be64)(__u64)(x))
 #define __be64_to_cpu(x) ((__force __u64)(__be64)(x))
-#define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
-#define __be32_to_cpu(x) ((__force __u32)(__be32)(x))
+#define __cpu_to_be32(x) ((__force __be32)(uint32_t)(x))
+#define __be32_to_cpu(x) ((__force uint32_t)(__be32)(x))
 #define __cpu_to_be16(x) ((__force __be16)(uint16_t)(x))
 #define __be16_to_cpu(x) ((__force uint16_t)(__be16)(x))
 
@@ -44,13 +44,13 @@ static inline __u64 __le64_to_cpup(const
 {
     return __swab64p((__u64 *)p);
 }
-static inline __le32 __cpu_to_le32p(const __u32 *p)
+static inline __le32 __cpu_to_le32p(const uint32_t *p)
 {
     return (__force __le32)__swab32p(p);
 }
-static inline __u32 __le32_to_cpup(const __le32 *p)
+static inline uint32_t __le32_to_cpup(const __le32 *p)
 {
-    return __swab32p((__u32 *)p);
+    return __swab32p((const uint32_t *)p);
 }
 static inline __le16 __cpu_to_le16p(const uint16_t *p)
 {
@@ -68,13 +68,13 @@ static inline __u64 __be64_to_cpup(const
 {
     return (__force __u64)*p;
 }
-static inline __be32 __cpu_to_be32p(const __u32 *p)
+static inline __be32 __cpu_to_be32p(const uint32_t *p)
 {
     return (__force __be32)*p;
 }
-static inline __u32 __be32_to_cpup(const __be32 *p)
+static inline uint32_t __be32_to_cpup(const __be32 *p)
 {
-    return (__force __u32)*p;
+    return (__force uint32_t)*p;
 }
 static inline __be16 __cpu_to_be16p(const uint16_t *p)
 {
--- a/xen/include/xen/byteorder/little_endian.h
+++ b/xen/include/xen/byteorder/little_endian.h
@@ -13,26 +13,26 @@
 
 #define __constant_cpu_to_le64(x) ((__force __le64)(__u64)(x))
 #define __constant_le64_to_cpu(x) ((__force __u64)(__le64)(x))
-#define __constant_cpu_to_le32(x) ((__force __le32)(__u32)(x))
-#define __constant_le32_to_cpu(x) ((__force __u32)(__le32)(x))
+#define __constant_cpu_to_le32(x) ((__force __le32)(uint32_t)(x))
+#define __constant_le32_to_cpu(x) ((__force uint32_t)(__le32)(x))
 #define __constant_cpu_to_le16(x) ((__force __le16)(uint16_t)(x))
 #define __constant_le16_to_cpu(x) ((__force uint16_t)(__le16)(x))
 #define __constant_cpu_to_be64(x) ((__force __be64)___constant_swab64((x)))
 #define __constant_be64_to_cpu(x) ___constant_swab64((__force __u64)(__be64)(x))
 #define __constant_cpu_to_be32(x) ((__force __be32)___constant_swab32((x)))
-#define __constant_be32_to_cpu(x) ___constant_swab32((__force __u32)(__be32)(x))
+#define __constant_be32_to_cpu(x) ___constant_swab32((__force uint32_t)(__be32)(x))
 #define __constant_cpu_to_be16(x) ((__force __be16)___constant_swab16((x)))
 #define __constant_be16_to_cpu(x) ___constant_swab16((__force uint16_t)(__be16)(x))
 #define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
 #define __le64_to_cpu(x) ((__force __u64)(__le64)(x))
-#define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
-#define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
+#define __cpu_to_le32(x) ((__force __le32)(uint32_t)(x))
+#define __le32_to_cpu(x) ((__force uint32_t)(__le32)(x))
 #define __cpu_to_le16(x) ((__force __le16)(uint16_t)(x))
 #define __le16_to_cpu(x) ((__force uint16_t)(__le16)(x))
 #define __cpu_to_be64(x) ((__force __be64)__swab64((x)))
 #define __be64_to_cpu(x) __swab64((__force __u64)(__be64)(x))
 #define __cpu_to_be32(x) ((__force __be32)__swab32((x)))
-#define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
+#define __be32_to_cpu(x) __swab32((__force uint32_t)(__be32)(x))
 #define __cpu_to_be16(x) ((__force __be16)__swab16((x)))
 #define __be16_to_cpu(x) __swab16((__force uint16_t)(__be16)(x))
 
@@ -44,13 +44,13 @@ static inline __u64 __le64_to_cpup(const
 {
     return (__force __u64)*p;
 }
-static inline __le32 __cpu_to_le32p(const __u32 *p)
+static inline __le32 __cpu_to_le32p(const uint32_t *p)
 {
     return (__force __le32)*p;
 }
-static inline __u32 __le32_to_cpup(const __le32 *p)
+static inline uint32_t __le32_to_cpup(const __le32 *p)
 {
-    return (__force __u32)*p;
+    return (__force uint32_t)*p;
 }
 static inline __le16 __cpu_to_le16p(const uint16_t *p)
 {
@@ -68,13 +68,13 @@ static inline __u64 __be64_to_cpup(const
 {
     return __swab64p((__u64 *)p);
 }
-static inline __be32 __cpu_to_be32p(const __u32 *p)
+static inline __be32 __cpu_to_be32p(const uint32_t *p)
 {
     return (__force __be32)__swab32p(p);
 }
-static inline __u32 __be32_to_cpup(const __be32 *p)
+static inline uint32_t __be32_to_cpup(const __be32 *p)
 {
-    return __swab32p((__u32 *)p);
+    return __swab32p((const uint32_t *)p);
 }
 static inline __be16 __cpu_to_be16p(const uint16_t *p)
 {
--- a/xen/include/xen/byteorder/swab.h
+++ b/xen/include/xen/byteorder/swab.h
@@ -12,7 +12,7 @@
 
 /*
  * Casts are necessary for constants, because we never know for sure how
- * U/UL/ULL map to __u32, __u64. At least not in a portable way.
+ * UL/ULL map to __u64. At least not in a portable way.
  */
 #define ___swab16(x)                                    \
 ({                                                      \
@@ -24,12 +24,12 @@
 
 #define ___swab32(x)                                            \
 ({                                                              \
-    __u32 __x = (x);                                            \
-    ((__u32)(                                                   \
-        (((__u32)(__x) & (__u32)0x000000ffUL) << 24) |          \
-        (((__u32)(__x) & (__u32)0x0000ff00UL) <<  8) |          \
-        (((__u32)(__x) & (__u32)0x00ff0000UL) >>  8) |          \
-        (((__u32)(__x) & (__u32)0xff000000UL) >> 24) ));        \
+    uint32_t x_ = (x);                                          \
+    (uint32_t)(                                                 \
+        (((uint32_t)(x_) & 0x000000ffU) << 24) |                \
+        (((uint32_t)(x_) & 0x0000ff00U) <<  8) |                \
+        (((uint32_t)(x_) & 0x00ff0000U) >>  8) |                \
+        (((uint32_t)(x_) & 0xff000000U) >> 24));                \
 })
 
 #define ___swab64(x)                                                       \
@@ -51,11 +51,11 @@
         (((uint16_t)(x) & 0x00ffU) << 8) |      \
         (((uint16_t)(x) & 0xff00U) >> 8)))
 #define ___constant_swab32(x)                           \
-    ((__u32)(                                           \
-        (((__u32)(x) & (__u32)0x000000ffUL) << 24) |    \
-        (((__u32)(x) & (__u32)0x0000ff00UL) <<  8) |    \
-        (((__u32)(x) & (__u32)0x00ff0000UL) >>  8) |    \
-        (((__u32)(x) & (__u32)0xff000000UL) >> 24) ))
+    ((uint32_t)(                                        \
+        (((uint32_t)(x) & 0x000000ffU) << 24) |         \
+        (((uint32_t)(x) & 0x0000ff00U) <<  8) |         \
+        (((uint32_t)(x) & 0x00ff0000U) >>  8) |         \
+        (((uint32_t)(x) & 0xff000000U) >> 24)))
 #define ___constant_swab64(x)                                            \
     ((__u64)(                                                            \
         (__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) |     \
@@ -74,7 +74,7 @@
 #  define __arch__swab16(x) ___swab16(x)
 #endif
 #ifndef __arch__swab32
-#  define __arch__swab32(x) ({ __u32 __tmp = (x) ; ___swab32(__tmp); })
+#  define __arch__swab32(x) ___swab32(x)
 #endif
 #ifndef __arch__swab64
 #  define __arch__swab64(x) ({ __u64 __tmp = (x) ; ___swab64(__tmp); })
@@ -110,7 +110,7 @@
  ___swab16((x)) : \
  __fswab16((x)))
 #  define __swab32(x) \
-(__builtin_constant_p((__u32)(x)) ? \
+(__builtin_constant_p((uint32_t)(x)) ? \
  ___swab32((x)) : \
  __fswab32((x)))
 #  define __swab64(x) \
@@ -137,15 +137,15 @@ static inline void __swab16s(uint16_t *a
     __arch__swab16s(addr);
 }
 
-static inline attr_const __u32 __fswab32(__u32 x)
+static inline attr_const uint32_t __fswab32(uint32_t x)
 {
     return __arch__swab32(x);
 }
-static inline __u32 __swab32p(const __u32 *x)
+static inline uint32_t __swab32p(const uint32_t *x)
 {
     return __arch__swab32p(x);
 }
-static inline void __swab32s(__u32 *addr)
+static inline void __swab32s(uint32_t *addr)
 {
     __arch__swab32s(addr);
 }
@@ -154,8 +154,7 @@ static inline void __swab32s(__u32 *addr
 static inline attr_const __u64 __fswab64(__u64 x)
 {
 #  ifdef __SWAB_64_THRU_32__
-    __u32 h = x >> 32;
-        __u32 l = x & ((1ULL<<32)-1);
+    uint32_t h = x >> 32, l = x;
         return (((__u64)__swab32(l)) << 32) | ((__u64)(__swab32(h)));
 #  else
     return __arch__swab64(x);



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:23:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:23:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814035.1227114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySuP-0005OI-Ck; Wed, 09 Oct 2024 09:23:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814035.1227114; Wed, 09 Oct 2024 09:23: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 1sySuP-0005OB-9u; Wed, 09 Oct 2024 09:23:05 +0000
Received: by outflank-mailman (input) for mailman id 814035;
 Wed, 09 Oct 2024 09:23: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sySuO-0004IZ-2Z
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:23:04 +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 15ac6623-8620-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 11:23:03 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a99543ab209so410363666b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:23:03 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5bb23bsm631027366b.34.2024.10.09.02.23.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:23:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15ac6623-8620-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465783; x=1729070583; 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=ztKKNRdazt+hQvk49PZFem2qqn49Q1QaFTJERIwQniE=;
        b=JhlBX9b0+3aEHqobABZrthI3Ucq2eizf/btUWxmpR9FmwUbljjeZGY7fW0YY7OiTYR
         dv/maqxu0nxDA0gm1CSMYjRogSa4w3gRw73jHRabtNJbwdRqaUHDyqh7viifcS2beA5Q
         2pnF0JWpks7l4hsIHr822715ZIn2+E5PhVBY1aTn7wU7tkvRto9nd1SDs4ncrOZHw5ol
         lZ9yL8nNyfKp6SsMmBKseqYFpURcLmB2P7/MY1LDs7J5Z6JxCfeAVSFTqOAC4SK2d+Dk
         dGxl5J3Ho1KSseVSkyMdPp3o1nonX0UGTJ05cyeLj3QMdqRRgD0G8dpJ2+lEcwuSVDgL
         D2qw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465783; x=1729070583;
        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=ztKKNRdazt+hQvk49PZFem2qqn49Q1QaFTJERIwQniE=;
        b=gGPx9MVphwGN+hHhuMqtGjcD3JAZ1RSZF7WTL58AQOeXum6LOoqAdZ4IC8QIBdUkS6
         1EiykwfbNFAhC2gr8HEhwx5Y6RdedwJMyOmjGZ3gijxKRubg9EQ/pG/KdVp5JUfG/Gvr
         X/rxRqxcasQnnyiWBFsxfydJHPSbKZu0ESyN/7I0FKjOKzC66N2TUXGgpEkMCHlCBaPK
         zNNsaO8P99ren44N+IxAyG+rd04rDHuCBZL1XxSLXgYYjgfRSarjLH2nM9nG/cMI1dy0
         VZ5DjuQe70g1T2XqL8lqMzmAJSpUSBbM3sxnu0or2rX1z3QOfkD3+jS4yJU1L3XdahKL
         rd/Q==
X-Gm-Message-State: AOJu0YzzQvMfUZIitRuzECXrJlleHp/yj71LVf0wkjuhctzqv33+kP63
	NdQzzPpS4R5/nBy20VQpFOqO7S0T8b379XTA7e8mHnXXx/HJz5Velruy3IncjeH9Df+jStazgg8
	=
X-Google-Smtp-Source: AGHT+IGgfaHKwCHARGavcTVjouTGH6n2acn/einTMyTMQZCrnKjp1N13YFdE8PwP+JF5pNSqJoS4Jg==
X-Received: by 2002:a17:907:9487:b0:a99:5c0e:e3ca with SMTP id a640c23a62f3a-a998d201507mr104814866b.34.1728465782814;
        Wed, 09 Oct 2024 02:23:02 -0700 (PDT)
Message-ID: <868d803c-0a88-4080-99b1-68e6f8b92c25@suse.com>
Date: Wed, 9 Oct 2024 11:23:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 3/7] Flask: replace uses of __u32
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Daniel Smith <dpsmith@apertussolutions.com>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@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: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

... by uint32_t.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Uses of bool_val look suspicious; I looked at them because by its name
I would have hoped I can switch it to bool instead.

--- a/xen/xsm/flask/ss/conditional.h
+++ b/xen/xsm/flask/ss/conditional.h
@@ -29,8 +29,8 @@ struct cond_expr {
 #define COND_EQ        6 /* bool == bool */
 #define COND_NEQ    7 /* bool != bool */
 #define COND_LAST    COND_NEQ
-    __u32 expr_type;
-    __u32 bool_val;
+    uint32_t expr_type;
+    uint32_t bool_val;
     struct cond_expr *next;
 };
 
--- a/xen/xsm/flask/ss/policydb.h
+++ b/xen/xsm/flask/ss/policydb.h
@@ -131,7 +131,7 @@ struct range_trans {
 
 /* Boolean data type */
 struct cond_bool_datum {
-    __u32 value;        /* internal type value */
+    uint32_t value;        /* internal type value */
     int state;
 };
 



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:23:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:23:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814042.1227125 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySv8-0005u1-LP; Wed, 09 Oct 2024 09:23:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814042.1227125; Wed, 09 Oct 2024 09:23: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 1sySv8-0005tu-IQ; Wed, 09 Oct 2024 09:23:50 +0000
Received: by outflank-mailman (input) for mailman id 814042;
 Wed, 09 Oct 2024 09:23: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sySv7-0005to-TY
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:23:49 +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 30cf13b0-8620-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 11:23:49 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a995f56ea2dso419663666b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:23:49 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9943ea4936sm528286466b.174.2024.10.09.02.23.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:23:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 30cf13b0-8620-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465828; x=1729070628; 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=4/p9q6zzF3dEdrk0EDrk/Q8JWw7Bgak8AAujM54KwSo=;
        b=KocezMmJwmuWu9jemXbqvK6UqY1X2oMLBqa/2JedK3zZVgmHc0wT7QkfqkzuUzJzEx
         DoGs14IfQn/F0oxCrd1zXqLpS6M5VhyM/E3kQ9eZ55gQ4YmjfXPZgE1f1MbEbb2IYxbB
         r7V3CL7j5rCh97wbTADBmK6FgYRiHgswNx7om2WfMBcFsY1yMpVWHSS1F8J/IznDkeBm
         4quQ8hA1X+kvsFUf/gEg+Bp11Xq4+n8K9FwQ4+Tdf7nDiOgv1U08u9ynb237DtcXtKvP
         XkB7w4PQ5kuWoCu+ehGhwXLPa4JEDMbuVAnLtSDwIKzDtm+/B9IHrlm0JnT18QzwcUyw
         nqcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465828; x=1729070628;
        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=4/p9q6zzF3dEdrk0EDrk/Q8JWw7Bgak8AAujM54KwSo=;
        b=D4clKHsosa8y4iASuZKqUWoMnkPhfo0jVfvAqw2QgdY8sZFg//E6QRvF/4G3Yf2oIS
         YJaKj6mHF73p96aSoeO0srpp8jS2IzDZRIEvl1guWLEkcaJ6uXTwiMgf37isDFqK244h
         nbxOGIpL7NISOebw3swh0NTUrKI8UUBCjnOdd5Q0Kn4UD7763/7VtogYZhdhKv/DERLJ
         gDQ2XvkxTn4ki57R573B8aSlB1HCuifCWfoqEhEzwsgz2+PcjKnK/mCoy4imtO1SaOFS
         pbgSOAhNkQC3K1X7g3KviCXzbC2igFPGaa6Gpg1cucH3yO/czyKAaZjEfRDatK1EdOyV
         UKIg==
X-Gm-Message-State: AOJu0YwsT7F4ckU0XJmr8Wh7LlyYWgopRTUXPMya5kZeolBQJ96nekjb
	bEQtlJXTeZYSGlabVXSsYjnHnjItVsh1Qkfslb8h2o3/y2/1EFAclQ3x0vwg+DTswKrlkVEGetI
	=
X-Google-Smtp-Source: AGHT+IHYUMA03wMgqdCv4B2ttcqDQw/CpkrylMiuFbcdYfLc2ADuFOei/2xd8o7eBKuwzt3vUdxTUA==
X-Received: by 2002:a17:907:1c1a:b0:a99:2ab0:d973 with SMTP id a640c23a62f3a-a998d341895mr132202966b.55.1728465828372;
        Wed, 09 Oct 2024 02:23:48 -0700 (PDT)
Message-ID: <d419d19a-ccb9-4c39-82b2-44b2bf29e5f0@suse.com>
Date: Wed, 9 Oct 2024 11:23:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 4/7] x86: modernize swab64()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@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: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

For quite a while we didn't need to be concerned of 32-bit code
generation anymore: Simply use the 64-bit form of BSWAP here.

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

--- a/xen/arch/x86/include/asm/byteorder.h
+++ b/xen/arch/x86/include/asm/byteorder.h
@@ -10,17 +10,10 @@ static inline attr_const __u32 ___arch__
     return x;
 }
 
-static inline attr_const __u64 ___arch__swab64(__u64 val)
+static inline attr_const uint64_t ___arch__swab64(uint64_t x)
 { 
-    union { 
-        struct { __u32 a,b; } s;
-        __u64 u;
-    } v;
-    v.u = val;
-    asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1" 
-        : "=r" (v.s.a), "=r" (v.s.b) 
-        : "0" (v.s.a), "1" (v.s.b)); 
-    return v.u;
+    asm ( "bswap %0" : "+r" (x) );
+    return x;
 } 
 
 /* Do not define swab16.  Gcc is smart enough to recognize "C" version and



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:24:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:24:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814048.1227134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySwC-0006Tr-TU; Wed, 09 Oct 2024 09:24:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814048.1227134; Wed, 09 Oct 2024 09:24: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 1sySwC-0006Tk-R1; Wed, 09 Oct 2024 09:24:56 +0000
Received: by outflank-mailman (input) for mailman id 814048;
 Wed, 09 Oct 2024 09:24: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sySwC-0006TZ-DF
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:24:56 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 588c9b09-8620-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 11:24:55 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a9943897c07so560675466b.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:24:55 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e623957sm627601766b.76.2024.10.09.02.24.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:24:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 588c9b09-8620-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465895; x=1729070695; 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=dJN/oUOljW0y9dXzhI8yPyqKExVJQBlP+Fu4RB9uvL8=;
        b=aOlBlPvkIX3XtsJPGZiKi1LTqBx10V9xmMiLZ1HXWj4vQkrltjNgBRipgeV6y4Beu9
         opAMWtnvO+/agjY4FiM6Yea8I4V/QKy1mPVNkl2ed+7DJr9ymjPL/Rhy1YS7T0+e5o1+
         acvZkz8As6l0mul7dFZRVISp9oCHKjhGzf4OuE0w9QBxSJ+2M4klwKjhPPqPIpPxfTU0
         1fKMyrvXni4/N7gJpKBJ2+8idHDcvEhXCL3VaDNjOqNV7r2EumyiN0D9F7tJtlnOrjfL
         CwJ90Y1NJ7bXLfACWQ9fxvIc5c/ua6JYT1awthPpaT7tcn8l8h+xXr3ITUHkIj/y1PAp
         d7ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465895; x=1729070695;
        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=dJN/oUOljW0y9dXzhI8yPyqKExVJQBlP+Fu4RB9uvL8=;
        b=TibmGkb1gYMLnZAsTpfVa9nxYNr9wy4GjGKLfTrzj/+6ubejrVMttahCe2v7Z4yt/u
         +bHIuZRyZHZ4X9VR4kXhWA2UkxSFUnbwCiffZMtm8q3Hujou1UlA99kDY5rj4y7OEsp4
         ZYl+pBBXzPiY0vUJFUigSiplbAW9f75UbUXQnvTtKSP8E3BSjXCRZ3lyXvxJqmqtuaYY
         cE4sh8WpF93z/h7LegMVEFOKTfRJv4ETKYtySh5Izf8EtP7bsXlxOasi13TvsBFzPJ1g
         y9xNKtSZ0VBK2ezycDWm5Kvum1p814qPCzJM2hnxuTlBJlH4DV01x1mnVfyHTHHzPWci
         l/Ag==
X-Gm-Message-State: AOJu0YwRuFbk6r7VwC+y9uY/Dxduc1Z84RgqoG6XsegBVcRFBjNNE5iL
	YyXbjUhLF92SuzlAiJFF3RxPc1k+ewtZ+2+Ww3JElKTNBLmyJX9hFEXzJg2xglJZmQmUkUBKvNQ
	=
X-Google-Smtp-Source: AGHT+IEXt3/J4C+eyW5Yl0LniacQ1BLVl7nf5/vEeM1tXDNjGOnTPV2MdTrh6y1Z8liZKaLx5G2SEg==
X-Received: by 2002:a17:906:7313:b0:a99:5957:b8f0 with SMTP id a640c23a62f3a-a998d31c11emr141654566b.49.1728465894981;
        Wed, 09 Oct 2024 02:24:54 -0700 (PDT)
Message-ID: <832f8384-71b5-4872-92eb-8a81d7e1d50a@suse.com>
Date: Wed, 9 Oct 2024 11:24:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 5/7] types: replace remaining uses of __u32
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@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: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

... and move the type itself to linux-compat.h.

While doing so drop casts (instead of modiyfing them) from x86'es
wrmsrl().

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

--- a/xen/arch/x86/include/asm/byteorder.h
+++ b/xen/arch/x86/include/asm/byteorder.h
@@ -4,7 +4,7 @@
 #include <xen/types.h>
 #include <xen/compiler.h>
 
-static inline attr_const __u32 ___arch__swab32(__u32 x)
+static inline attr_const uint32_t ___arch__swab32(uint32_t x)
 {
     asm("bswap %0" : "=r" (x) : "0" (x));
     return x;
--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -33,9 +33,8 @@
 
 static inline void wrmsrl(unsigned int msr, __u64 val)
 {
-        __u32 lo, hi;
-        lo = (__u32)val;
-        hi = (__u32)(val >> 32);
+        uint32_t lo = val, hi = val >> 32;
+
         wrmsr(msr, lo, hi);
 }
 
--- a/xen/include/xen/bitops.h
+++ b/xen/include/xen/bitops.h
@@ -413,7 +413,7 @@ static inline int get_count_order(unsign
  * @word: value to rotate
  * @shift: bits to roll
  */
-static inline __u32 rol32(__u32 word, unsigned int shift)
+static inline uint32_t rol32(uint32_t word, unsigned int shift)
 {
     return (word << shift) | (word >> (32 - shift));
 }
@@ -424,7 +424,7 @@ static inline __u32 rol32(__u32 word, un
  * @word: value to rotate
  * @shift: bits to roll
  */
-static inline __u32 ror32(__u32 word, unsigned int shift)
+static inline uint32_t ror32(uint32_t word, unsigned int shift)
 {
     return (word >> shift) | (word << (32 - shift));
 }
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -16,6 +16,7 @@ typedef uint8_t __u8;
 typedef int16_t s16, __s16;
 typedef uint16_t __u16;
 typedef int32_t s32, __s32;
+typedef uint32_t __u32;
 typedef int64_t s64, __s64;
 
 typedef paddr_t phys_addr_t;
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -7,7 +7,7 @@
 /* Linux inherited types which are being phased out */
 typedef uint8_t u8;
 typedef uint16_t u16;
-typedef uint32_t u32, __u32;
+typedef uint32_t u32;
 typedef uint64_t u64, __u64;
 
 #include <asm/types.h>
@@ -53,8 +53,8 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
 
 typedef uint16_t __le16;
 typedef uint16_t __be16;
-typedef __u32 __le32;
-typedef __u32 __be32;
+typedef uint32_t __le32;
+typedef uint32_t __be32;
 typedef __u64 __le64;
 typedef __u64 __be64;
 



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:25:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:25:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814052.1227145 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySwe-0006x0-6e; Wed, 09 Oct 2024 09:25:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814052.1227145; Wed, 09 Oct 2024 09:25: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 1sySwe-0006wt-3V; Wed, 09 Oct 2024 09:25:24 +0000
Received: by outflank-mailman (input) for mailman id 814052;
 Wed, 09 Oct 2024 09:25: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sySwc-0006TZ-HR
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:25:22 +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 67f4a20d-8620-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 11:25:21 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c8967dd2c7so8154207a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:25:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05bc56asm5212583a12.45.2024.10.09.02.25.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:25:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 67f4a20d-8620-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465921; x=1729070721; 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=gP7lbN35wCGIUuM79IuL2uQrQmd6PPoQxchjzUNEOWM=;
        b=K0QUIxYxT9H87KdHsBOLjK6vf2zxRPx4D4ERibCwuWG2ICm3h9/0NMKJJ9QEaGlAsY
         8qjYwRri5hezNeon1agu1V+BY6h/vXzu0MrGChnI6n7KuvaSnhPwbQrth647LZy1FXCl
         NosSbNT0rFIt2mFkSoymE7XtGrZOyvOf11wCKkNbaf/SQikKzTsdEGFdZ1S42v9yHqRn
         jf31t+7+/fhlgtaVvZENBe2RfBzYUBsRVoiLyAPVHryH1a+feK9v3UsoOR7dkv6gM4O9
         tBrtXYB9E4nRufDAi5b/zCjP0LvTpjl6EVEM7xXhM9uLaEb1FlVJgo85+hMjQgtpHCcx
         39xA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465921; x=1729070721;
        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=gP7lbN35wCGIUuM79IuL2uQrQmd6PPoQxchjzUNEOWM=;
        b=JtQkjBHXhrdOlw/Rs0F3M8ohTcnaiXzRM67StoVASCvhWdje/12qgRGSjv72fCbNsl
         3ZBI30MxKsz5h9aPFB8PifdsbxJ/apeTc6vv0BeHi4p41vUaLK4MkkHGDVmYHLeZGGIx
         kWABaGCrgo61zKGlWSHvvcF9cqUkzs+NaQz7lNMKYrxcjRX53/fiF4yxtaZHZiPk2eCq
         QE9yF5VVUGBbpe6ghuKEm81jh5nHd1Z3rQ1leseQTzL04e5EzBTUldqufGeybQ8TlTY0
         Xpo6sgRvbGe+k6oy63PkzicobQFN9QxcTN5aWMabCozkZHq07NdwSp9nfNBQmIXrnIXQ
         tG6Q==
X-Gm-Message-State: AOJu0YwfIgt3HDySmEmBMwNI9319ARuBl+0kdpzHIwtojL36w3X8vkPO
	UInGCg/hdVDQFCfXzOKvqI8PXlYYuoNoOd5/sh44DXt9FirgGY/p7wdlkf2cDT4QoZ52i0P4HQk
	=
X-Google-Smtp-Source: AGHT+IGF+XuBUT0D8UHGLgMmKt+ASiWxSsAIdlF5aAfY98eLC1T/mVfHqaKXmMf+VDdE8uPgTY4B1A==
X-Received: by 2002:a05:6402:3513:b0:5c8:bdbe:33a6 with SMTP id 4fb4d7f45d1cf-5c91d689226mr1347734a12.31.1728465920754;
        Wed, 09 Oct 2024 02:25:20 -0700 (PDT)
Message-ID: <674bed79-1db6-4838-85a4-2dcba9655ebd@suse.com>
Date: Wed, 9 Oct 2024 11:25:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 6/7] byteorder: replace __u64
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@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: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In {big,little}_endian.h the changes are entirely mechanical, except for
dealing with casting away of const from pointers-to-const on lines
touched anyway.

In swab.h the casting of constants is done away with as well - I simply
don't see what the respective comment is concerned about in our
environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
architecture, sizeof(long long) >= 8). The comment is certainly relevant
in more general cases. Excess parentheses are dropped as well,
___swab64()'s local variable is renamed, and __arch__swab64()'s is
dropped as being redundant with ___swab64()'s.

Excessive casts compared to ___{,constant_}swab{16,32}() are also
dropped. Much like excessive ones in __fswab64().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
I'm unconvinced of the need of the separate ___constant_swab64(). I'm
also unconvinced of the need for some of said constants (that even had
casts on them).

--- a/xen/include/xen/byteorder/big_endian.h
+++ b/xen/include/xen/byteorder/big_endian.h
@@ -12,37 +12,37 @@
 #include <xen/byteorder/swab.h>
 
 #define __constant_cpu_to_le64(x) ((__force __le64)___constant_swab64((x)))
-#define __constant_le64_to_cpu(x) ___constant_swab64((__force __u64)(__le64)(x))
+#define __constant_le64_to_cpu(x) ___constant_swab64((__force uint64_t)(__le64)(x))
 #define __constant_cpu_to_le32(x) ((__force __le32)___constant_swab32((x)))
 #define __constant_le32_to_cpu(x) ___constant_swab32((__force uint32_t)(__le32)(x))
 #define __constant_cpu_to_le16(x) ((__force __le16)___constant_swab16((x)))
 #define __constant_le16_to_cpu(x) ___constant_swab16((__force uint16_t)(__le16)(x))
-#define __constant_cpu_to_be64(x) ((__force __be64)(__u64)(x))
-#define __constant_be64_to_cpu(x) ((__force __u64)(__be64)(x))
+#define __constant_cpu_to_be64(x) ((__force __be64)(uint64_t)(x))
+#define __constant_be64_to_cpu(x) ((__force uint64_t)(__be64)(x))
 #define __constant_cpu_to_be32(x) ((__force __be32)(uint32_t)(x))
 #define __constant_be32_to_cpu(x) ((__force uint32_t)(__be32)(x))
 #define __constant_cpu_to_be16(x) ((__force __be16)(uint16_t)(x))
 #define __constant_be16_to_cpu(x) ((__force uint16_t)(__be16)(x))
 #define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
-#define __le64_to_cpu(x) __swab64((__force __u64)(__le64)(x))
+#define __le64_to_cpu(x) __swab64((__force uint64_t)(__le64)(x))
 #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
 #define __le32_to_cpu(x) __swab32((__force uint32_t)(__le32)(x))
 #define __cpu_to_le16(x) ((__force __le16)__swab16((x)))
 #define __le16_to_cpu(x) __swab16((__force uint16_t)(__le16)(x))
-#define __cpu_to_be64(x) ((__force __be64)(__u64)(x))
-#define __be64_to_cpu(x) ((__force __u64)(__be64)(x))
+#define __cpu_to_be64(x) ((__force __be64)(uint64_t)(x))
+#define __be64_to_cpu(x) ((__force uint64_t)(__be64)(x))
 #define __cpu_to_be32(x) ((__force __be32)(uint32_t)(x))
 #define __be32_to_cpu(x) ((__force uint32_t)(__be32)(x))
 #define __cpu_to_be16(x) ((__force __be16)(uint16_t)(x))
 #define __be16_to_cpu(x) ((__force uint16_t)(__be16)(x))
 
-static inline __le64 __cpu_to_le64p(const __u64 *p)
+static inline __le64 __cpu_to_le64p(const uint64_t *p)
 {
     return (__force __le64)__swab64p(p);
 }
-static inline __u64 __le64_to_cpup(const __le64 *p)
+static inline uint64_t __le64_to_cpup(const __le64 *p)
 {
-    return __swab64p((__u64 *)p);
+    return __swab64p((const uint64_t *)p);
 }
 static inline __le32 __cpu_to_le32p(const uint32_t *p)
 {
@@ -60,13 +60,13 @@ static inline uint16_t __le16_to_cpup(co
 {
     return __swab16p((const uint16_t *)p);
 }
-static inline __be64 __cpu_to_be64p(const __u64 *p)
+static inline __be64 __cpu_to_be64p(const uint64_t *p)
 {
     return (__force __be64)*p;
 }
-static inline __u64 __be64_to_cpup(const __be64 *p)
+static inline uint64_t __be64_to_cpup(const __be64 *p)
 {
-    return (__force __u64)*p;
+    return (__force uint64_t)*p;
 }
 static inline __be32 __cpu_to_be32p(const uint32_t *p)
 {
--- a/xen/include/xen/byteorder/little_endian.h
+++ b/xen/include/xen/byteorder/little_endian.h
@@ -11,38 +11,38 @@
 #include <xen/types.h>
 #include <xen/byteorder/swab.h>
 
-#define __constant_cpu_to_le64(x) ((__force __le64)(__u64)(x))
-#define __constant_le64_to_cpu(x) ((__force __u64)(__le64)(x))
+#define __constant_cpu_to_le64(x) ((__force __le64)(uint64_t)(x))
+#define __constant_le64_to_cpu(x) ((__force uint64_t)(__le64)(x))
 #define __constant_cpu_to_le32(x) ((__force __le32)(uint32_t)(x))
 #define __constant_le32_to_cpu(x) ((__force uint32_t)(__le32)(x))
 #define __constant_cpu_to_le16(x) ((__force __le16)(uint16_t)(x))
 #define __constant_le16_to_cpu(x) ((__force uint16_t)(__le16)(x))
 #define __constant_cpu_to_be64(x) ((__force __be64)___constant_swab64((x)))
-#define __constant_be64_to_cpu(x) ___constant_swab64((__force __u64)(__be64)(x))
+#define __constant_be64_to_cpu(x) ___constant_swab64((__force uint64_t)(__be64)(x))
 #define __constant_cpu_to_be32(x) ((__force __be32)___constant_swab32((x)))
 #define __constant_be32_to_cpu(x) ___constant_swab32((__force uint32_t)(__be32)(x))
 #define __constant_cpu_to_be16(x) ((__force __be16)___constant_swab16((x)))
 #define __constant_be16_to_cpu(x) ___constant_swab16((__force uint16_t)(__be16)(x))
-#define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
-#define __le64_to_cpu(x) ((__force __u64)(__le64)(x))
+#define __cpu_to_le64(x) ((__force __le64)(uint64_t)(x))
+#define __le64_to_cpu(x) ((__force uint64_t)(__le64)(x))
 #define __cpu_to_le32(x) ((__force __le32)(uint32_t)(x))
 #define __le32_to_cpu(x) ((__force uint32_t)(__le32)(x))
 #define __cpu_to_le16(x) ((__force __le16)(uint16_t)(x))
 #define __le16_to_cpu(x) ((__force uint16_t)(__le16)(x))
 #define __cpu_to_be64(x) ((__force __be64)__swab64((x)))
-#define __be64_to_cpu(x) __swab64((__force __u64)(__be64)(x))
+#define __be64_to_cpu(x) __swab64((__force uint64_t)(__be64)(x))
 #define __cpu_to_be32(x) ((__force __be32)__swab32((x)))
 #define __be32_to_cpu(x) __swab32((__force uint32_t)(__be32)(x))
 #define __cpu_to_be16(x) ((__force __be16)__swab16((x)))
 #define __be16_to_cpu(x) __swab16((__force uint16_t)(__be16)(x))
 
-static inline __le64 __cpu_to_le64p(const __u64 *p)
+static inline __le64 __cpu_to_le64p(const uint64_t *p)
 {
     return (__force __le64)*p;
 }
-static inline __u64 __le64_to_cpup(const __le64 *p)
+static inline uint64_t __le64_to_cpup(const __le64 *p)
 {
-    return (__force __u64)*p;
+    return (__force uint64_t)*p;
 }
 static inline __le32 __cpu_to_le32p(const uint32_t *p)
 {
@@ -60,13 +60,13 @@ static inline uint16_t __le16_to_cpup(co
 {
     return (__force uint16_t)*p;
 }
-static inline __be64 __cpu_to_be64p(const __u64 *p)
+static inline __be64 __cpu_to_be64p(const uint64_t *p)
 {
     return (__force __be64)__swab64p(p);
 }
-static inline __u64 __be64_to_cpup(const __be64 *p)
+static inline uint64_t __be64_to_cpup(const __be64 *p)
 {
-    return __swab64p((__u64 *)p);
+    return __swab64p((const uint64_t *)p);
 }
 static inline __be32 __cpu_to_be32p(const uint32_t *p)
 {
--- a/xen/include/xen/byteorder/swab.h
+++ b/xen/include/xen/byteorder/swab.h
@@ -10,10 +10,6 @@
  *    to clean up support for bizarre-endian architectures.
  */
 
-/*
- * Casts are necessary for constants, because we never know for sure how
- * UL/ULL map to __u64. At least not in a portable way.
- */
 #define ___swab16(x)                                    \
 ({                                                      \
     uint16_t x_ = (x);                                  \
@@ -34,16 +30,16 @@
 
 #define ___swab64(x)                                                       \
 ({                                                                         \
-    __u64 __x = (x);                                                       \
-    ((__u64)(                                                              \
-        (__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) |     \
-        (__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) |     \
-        (__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) |     \
-        (__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) <<  8) |     \
-            (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >>  8) | \
-        (__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) |     \
-        (__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) |     \
-        (__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) ));   \
+    uint64_t x_ = (x);                                                     \
+    (uint64_t)(                                                            \
+        (((uint64_t)(x_) & 0x00000000000000ffULL) << 56) |                 \
+        (((uint64_t)(x_) & 0x000000000000ff00ULL) << 40) |                 \
+        (((uint64_t)(x_) & 0x0000000000ff0000ULL) << 24) |                 \
+        (((uint64_t)(x_) & 0x00000000ff000000ULL) <<  8) |                 \
+        (((uint64_t)(x_) & 0x000000ff00000000ULL) >>  8) |                 \
+        (((uint64_t)(x_) & 0x0000ff0000000000ULL) >> 24) |                 \
+        (((uint64_t)(x_) & 0x00ff000000000000ULL) >> 40) |                 \
+        (((uint64_t)(x_) & 0xff00000000000000ULL) >> 56));                 \
 })
 
 #define ___constant_swab16(x)                   \
@@ -57,15 +53,15 @@
         (((uint32_t)(x) & 0x00ff0000U) >>  8) |         \
         (((uint32_t)(x) & 0xff000000U) >> 24)))
 #define ___constant_swab64(x)                                            \
-    ((__u64)(                                                            \
-        (__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) |     \
-        (__u64)(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) |     \
-        (__u64)(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) |     \
-        (__u64)(((__u64)(x) & (__u64)0x00000000ff000000ULL) <<  8) |     \
-            (__u64)(((__u64)(x) & (__u64)0x000000ff00000000ULL) >>  8) | \
-        (__u64)(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) |     \
-        (__u64)(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) |     \
-        (__u64)(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56) ))
+    ((uint64_t)(                                                         \
+        (((uint64_t)(x) & 0x00000000000000ffULL) << 56) |                \
+        (((uint64_t)(x) & 0x000000000000ff00ULL) << 40) |                \
+        (((uint64_t)(x) & 0x0000000000ff0000ULL) << 24) |                \
+        (((uint64_t)(x) & 0x00000000ff000000ULL) <<  8) |                \
+        (((uint64_t)(x) & 0x000000ff00000000ULL) >>  8) |                \
+        (((uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) |                \
+        (((uint64_t)(x) & 0x00ff000000000000ULL) >> 40) |                \
+        (((uint64_t)(x) & 0xff00000000000000ULL) >> 56)))
 
 /*
  * provide defaults when no architecture-specific optimization is detected
@@ -77,7 +73,7 @@
 #  define __arch__swab32(x) ___swab32(x)
 #endif
 #ifndef __arch__swab64
-#  define __arch__swab64(x) ({ __u64 __tmp = (x) ; ___swab64(__tmp); })
+#  define __arch__swab64(x) ___swab64(x)
 #endif
 
 #ifndef __arch__swab16p
@@ -114,7 +110,7 @@
  ___swab32((x)) : \
  __fswab32((x)))
 #  define __swab64(x) \
-(__builtin_constant_p((__u64)(x)) ? \
+(__builtin_constant_p((uint64_t)(x)) ? \
  ___swab64((x)) : \
  __fswab64((x)))
 #else
@@ -151,20 +147,20 @@ static inline void __swab32s(uint32_t *a
 }
 
 #ifdef __BYTEORDER_HAS_U64__
-static inline attr_const __u64 __fswab64(__u64 x)
+static inline attr_const uint64_t __fswab64(uint64_t x)
 {
 #  ifdef __SWAB_64_THRU_32__
     uint32_t h = x >> 32, l = x;
-        return (((__u64)__swab32(l)) << 32) | ((__u64)(__swab32(h)));
+    return ((uint64_t)__swab32(l) << 32) | __swab32(h);
 #  else
     return __arch__swab64(x);
 #  endif
 }
-static inline __u64 __swab64p(const __u64 *x)
+static inline uint64_t __swab64p(const uint64_t *x)
 {
     return __arch__swab64p(x);
 }
-static inline void __swab64s(__u64 *addr)
+static inline void __swab64s(uint64_t *addr)
 {
     __arch__swab64s(addr);
 }



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:25:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:25:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814060.1227155 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sySx4-0007VU-IK; Wed, 09 Oct 2024 09:25:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814060.1227155; Wed, 09 Oct 2024 09:25: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 1sySx4-0007VN-FC; Wed, 09 Oct 2024 09:25:50 +0000
Received: by outflank-mailman (input) for mailman id 814060;
 Wed, 09 Oct 2024 09:25: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1sySx3-0006qE-A4
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:25:49 +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 77a3e6c0-8620-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 11:25:47 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c8784e3bc8so9009733a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:25:47 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c920366ffbsm479657a12.73.2024.10.09.02.25.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:25:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 77a3e6c0-8620-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728465947; x=1729070747; 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=lSt1UFZef/+6tCfhe9oUpk8XmMT2KJhBEjzS3rL8n6k=;
        b=MWHWkfcPM2BMRiB1lPl02FA36i12yKDwwKP84aHPb5XGW1rLfN3Wzax7h7ENy/6Wwv
         JPQSAEY9uDmI+r0JadMHT1tkQvbgQu6QyI2sepnzWQ3t8ob/fjyOEssMokVbATDmynPb
         U5jhicG2JhtYedvIPRuv4vrjN0/+VWuSy6H9ABDmbwPNehnIl+eAJeQNGWudPk/GXdRf
         1acxB3fcEYLopEYC1vfn1DWq+vmyvL8F8slWOaig07TGNHCYmT71uwe27FPmJYXPeJAz
         CPoEvIPOXcaI0MC5M2m9T3mTdRcV0+AUC/B7A/Kptca9AiDdw1rkuxE6XIGyBCYTcpN7
         S/Ug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728465947; x=1729070747;
        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=lSt1UFZef/+6tCfhe9oUpk8XmMT2KJhBEjzS3rL8n6k=;
        b=EMB5IRMrteywyxtyGkO7SOuPX+iSU85cYDn0ZDOZ7x1LXLnsm4FFTjEEabTOpP3Rsg
         +NtUcThLr2EMDVSF3eurjkMlYAxIwSxvAAyzhI/lJ6Txa8VckEtabyKbra9nHa4Xyqy8
         6xoT2DXmNUKg5QarTHZ2UMtU9KBeco5eADpGDjbKCTqhWF6He64qgMPCgFOp1fwOCVMc
         JoOqMQqKsGOeKvPoeJYLGEywL7Z0NWuD05Gz8csLgckmp0wORQiE5hgwjJQLUNnpXA7v
         8gbdJvOVmPdOtPvKcdSd6xtItOvS88p5+9eWmAQhHeD/gV6keLXfkFQXfXoPBHRiNvCE
         lWtg==
X-Gm-Message-State: AOJu0Yw5s+q2T8RODjgnAD2kbHMel6oqbdn7gTf+/STNjpYDILHVwaOF
	25YlMvtA/DVLmlMgLPa8SfzNVYLLY0iPVM+T+beB9Jw39ss3DDYSBguzxrVjmtvJNrugMy76pns
	=
X-Google-Smtp-Source: AGHT+IE9Ma2LvpqfTXUPLh4dG1TSxzztnL8Nx/XBTB6RGQ/Xdj3Z+eujl5DhjMFHvY1u/YRGrVrcDQ==
X-Received: by 2002:a05:6402:278d:b0:5c8:9406:535b with SMTP id 4fb4d7f45d1cf-5c91d5c97b8mr1405593a12.18.1728465947227;
        Wed, 09 Oct 2024 02:25:47 -0700 (PDT)
Message-ID: <d9e2f267-26de-4b43-8a10-8992f6049be7@suse.com>
Date: Wed, 9 Oct 2024 11:25:46 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 7/7] types: replace remaining use of __u64
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@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: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

... and move the type itself to linux-compat.h.

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

--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -31,7 +31,7 @@
 			  : /* no outputs */ \
 			  : "c" (msr), "a" (val1), "d" (val2))
 
-static inline void wrmsrl(unsigned int msr, __u64 val)
+static inline void wrmsrl(unsigned int msr, uint64_t val)
 {
         uint32_t lo = val, hi = val >> 32;
 
--- a/xen/include/xen/linux-compat.h
+++ b/xen/include/xen/linux-compat.h
@@ -18,6 +18,7 @@ typedef uint16_t __u16;
 typedef int32_t s32, __s32;
 typedef uint32_t __u32;
 typedef int64_t s64, __s64;
+typedef uint64_t __u64;
 
 typedef paddr_t phys_addr_t;
 
--- a/xen/include/xen/types.h
+++ b/xen/include/xen/types.h
@@ -8,7 +8,7 @@
 typedef uint8_t u8;
 typedef uint16_t u16;
 typedef uint32_t u32;
-typedef uint64_t u64, __u64;
+typedef uint64_t u64;
 
 #include <asm/types.h>
 
@@ -55,8 +55,8 @@ typedef uint16_t __le16;
 typedef uint16_t __be16;
 typedef uint32_t __le32;
 typedef uint32_t __be32;
-typedef __u64 __le64;
-typedef __u64 __be64;
+typedef uint64_t __le64;
+typedef uint64_t __be64;
 
 typedef unsigned int __attribute__((__mode__(__pointer__))) uintptr_t;
 



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:39:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:39:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814079.1227165 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syT9i-0004n6-Kw; Wed, 09 Oct 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 814079.1227165; Wed, 09 Oct 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 1syT9i-0004mz-IK; Wed, 09 Oct 2024 09:38:54 +0000
Received: by outflank-mailman (input) for mailman id 814079;
 Wed, 09 Oct 2024 09: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=xjLg=RF=linuxfoundation.org=gregkh@srs-se1.protection.inumbo.net>)
 id 1syT9g-0004lz-Uc
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:38:53 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 49eb39bf-8622-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 11:38:50 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 6CEFEA43CA0;
 Wed,  9 Oct 2024 09:38:40 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B808BC4CEC5;
 Wed,  9 Oct 2024 09:38:47 +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: 49eb39bf-8622-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1728466728;
	bh=Jw9m9MFXObg+vZ7wq05G3wqyWtyj3AK1eBeQfJJK90U=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=AcLymq+hoDLhN3h3N8nHp58BgFOa4jDynBqk5dzipxHtlbGOU9EoJHZr1xWIGUvqd
	 1/8BzU9GNB5AWykOOa82//nU/OkQpZ2Tl07ETsLRXZZMd4MYEMeaOwuFdvt3dbdEkn
	 E0Fd5uSJFrxi3J4FjD1qWeIfBp1sHnDUf7i3tpjk=
Date: Wed, 9 Oct 2024 11:38:45 +0200
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>, Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 10/13] staging: rts5280: Use always-managed version
 of pci_intx()
Message-ID: <2024100936-brunette-flannels-0d82@gregkh>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-11-pstanner@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241009083519.10088-11-pstanner@redhat.com>

On Wed, Oct 09, 2024 at 10:35:16AM +0200, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> rts5208 enables its PCI-Device with pcim_enable_device(). Thus, it needs the
> always-managed version.
> 
> Replace pci_intx() with pcim_intx().
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> ---
>  drivers/staging/rts5208/rtsx.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:40:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:40:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814084.1227174 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTBM-0007Dp-VF; Wed, 09 Oct 2024 09:40:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814084.1227174; Wed, 09 Oct 2024 09:40: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 1syTBM-0007Di-S6; Wed, 09 Oct 2024 09:40:36 +0000
Received: by outflank-mailman (input) for mailman id 814084;
 Wed, 09 Oct 2024 09:40: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syTBM-0007Dc-Ea
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:40:36 +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 883b2f9a-8622-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 11:40:34 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a993f6916daso554096466b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:40:34 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993ac07465sm578142166b.20.2024.10.09.02.40.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 02:40:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 883b2f9a-8622-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728466834; x=1729071634; 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=9akUImjw16tW3P4YhJvyW1Odrtupc/9I8xqG0RfqpzY=;
        b=flcfjcTMquksjycbMr2Sxk1yZ79eneFuVJ9kv9Ug2h2VIeNQR0R602/s7v0rNQxokv
         /GCx/2v5RmTqC0nrfyHHj10rrR3riB8vbmQZxuxdZZgeL/NPMeVaG/cTSERxyrDyfirg
         Wqx8J8/YbuyVmc6es3SOxWwuGz4f9K5x473PmXVvdhU8B9KMPgc5ZcrGTtFRWkRQlnb+
         oH9xL4UZ+mFj8yVPoimLVV4tsMCVgP9uns8CoSSECZ0rIV/ac8HvX14YZeCpwGkw9Aue
         t3htmvge/ycqLswAIkJRdG1VwE9hoV06K8gcUOn6WZ3aMaT54PPGEpCn6fHwa+08Agqb
         TrKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728466834; x=1729071634;
        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=9akUImjw16tW3P4YhJvyW1Odrtupc/9I8xqG0RfqpzY=;
        b=tNKYJ1IkwgimDkmUMFvpyQzUyIH/sVDD9AyV0PUsB5Me5mUwgyDlbyOlpagEhRJShd
         9SGI5NGc208+EajKvVO1gAdJ2X/LDFECGbMc3E6iLpqXRDzZyChZfNdO0mrZaMkKsRAC
         xMWIdjjbAYQ53VpQiR8fkS12Ui1hVcj0zG8Oh742jOWp+9nEJn0fN+kZa+AUqwCqQlO7
         8f9RgBt583gmfKr/rCzx6NseQJi3QouSJqQJ/N56c6AZIty4dB3tzYyGkPPas/sQ01Ua
         YbRqDygPFg44J9iy+SP52TO69tbWGJBSD47yx7HPph3ZyVafwz/xGoi9g8TnOM2yWRWG
         OqSQ==
X-Forwarded-Encrypted: i=1; AJvYcCUzrZeyF1wxcua7EoBmEZKkDuILO41rFGG+qWck8tfQ0tRSSnvOkxWv6OTwcj+gnrFxzbSsTVCPUcE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxYvMi///wecuNk7Vjvr5lXc6926Nh4jHL1Afw5m5hI52cuHOm2
	BSDc5jvld8sKkXIvYJQuDiPxZGwBEa1dklg7Ahb/kcNwGlefiDhxhbqBvOVWMw==
X-Google-Smtp-Source: AGHT+IEbxTZPsZ2hCvB8WH3DejLIktB+l1NcyfFi4YKFLznu8XDwY+X6+YznM/gxOh+GRpAvfJVcGA==
X-Received: by 2002:a17:907:d2e5:b0:a99:53f5:3f33 with SMTP id a640c23a62f3a-a998d21a5a6mr156197966b.33.1728466833922;
        Wed, 09 Oct 2024 02:40:33 -0700 (PDT)
Message-ID: <1a57c4c9-baa9-44b4-8a3f-0f821d8c2484@suse.com>
Date: Wed, 9 Oct 2024 11:40:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 01/11] lib/x86: Relax checks about policy compatibility
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-2-alejandro.vallejo@cloud.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: <20241001123807.605-2-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:37, Alejandro Vallejo wrote:
> --- a/xen/lib/x86/policy.c
> +++ b/xen/lib/x86/policy.c
> @@ -15,7 +15,16 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
>  #define FAIL_MSR(m) \
>      do { e.msr = (m); goto out; } while ( 0 )
>  
> -    if ( guest->basic.max_leaf > host->basic.max_leaf )
> +    /*
> +     * Old AMD hardware doesn't expose topology information in leaf 0xb. We
> +     * want to emulate that leaf with credible information because it must be
> +     * present on systems in which we emulate the x2APIC.
> +     *
> +     * For that reason, allow the max basic guest leaf to be larger than the
> +     * hosts' up until 0xb.
> +     */
> +    if ( guest->basic.max_leaf > 0xb &&
> +         guest->basic.max_leaf > host->basic.max_leaf )
>          FAIL_CPUID(0, NA);
>  
>      if ( guest->feat.max_subleaf > host->feat.max_subleaf )

I'm concerned by this in multiple ways:

1) It's pretty ad hoc, and hence doesn't make clear how to deal with similar
situations in the future.

2) Why would we permit going up to leaf 0xb when x2APIC is off in the respective
leaf?

3) We similarly force a higher extended leaf in order to accommodate the LFENCE-
is-dispatch-serializing bit. Yet there's no similar extra logic there in the
function here.

4) While there the guest vs host check won't matter, the situation with AMX and
AVX10 leaves imo still wants considering here right away. IOW (taken together
with at least 3) above) I think we need to first settle on a model for
collectively all max (sub)leaf handling. That in particular needs to properly
spell out who's responsible for what (tool stack vs Xen).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:40:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:40:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814085.1227185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTBf-0007jN-5F; Wed, 09 Oct 2024 09:40:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814085.1227185; Wed, 09 Oct 2024 09: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 1syTBf-0007jG-2J; Wed, 09 Oct 2024 09:40:55 +0000
Received: by outflank-mailman (input) for mailman id 814085;
 Wed, 09 Oct 2024 09:40: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=BLvJ=RF=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syTBe-0007f9-0n
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:40:54 +0000
Received: from mail-oo1-xc33.google.com (mail-oo1-xc33.google.com
 [2607:f8b0:4864:20::c33])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 92ea7017-8622-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 11:40:53 +0200 (CEST)
Received: by mail-oo1-xc33.google.com with SMTP id
 006d021491bc7-5e8010de1caso792107eaf.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:40:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 92ea7017-8622-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728466852; x=1729071652; 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=HLLD7dJeuJ8pd00MMoDiXKTkd3DtIoaMfIr7BhT29AQ=;
        b=U/wkIk8QM3HDHNn33pmqyMU/pOpQkFCmioxdc5eY1xDP/V555v8xL/N78J5oRFXWng
         BJVuP9POBkURLidkV/emcMGBWJCgOp5slGDXpWM9D/shtZeUJOgPVBwN9wxuRPTeE9+b
         c0OqiU2pTYR7Q4ijwTHyLfUO0bmjeTRWyBmbs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728466852; x=1729071652;
        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=HLLD7dJeuJ8pd00MMoDiXKTkd3DtIoaMfIr7BhT29AQ=;
        b=daL90uZ1vWjF0+wcvvFQEt1I6grFPcnSfRyPibrfxT6iuGpX+FSLrmimp6AZlyp2HB
         6LQPdut2YaRnodsAM/95JpcxhfQH5zX+0sDVsbiaWUwycvkRPYWaCXhr/07x3hBaYMYp
         /vw2AknDq80jDtdgDDrhXqA8s18efrKpCeClGcH1bV7gBZXCo9G6Fevk8SqN5hKasWpw
         d1Y2R9yV5+cR3KjduIXOiKi91hYW4RC2ZcVojVzNc7K4lXGis5Q0cOEbnciECzZiU/m/
         3aUW/OZWc4+sZwwJ8NTeSpJ+looxxmQK7QEkGfH+ulnBshrsYc7ZeyJ9qOT77kstRIab
         2Y/g==
X-Gm-Message-State: AOJu0Yxo/UW5js1BL8BafsTCh3cUmDYf6Jlb6tQZ6Svut5VGsovRygbf
	aRdSV+GO1AjgVi726u4v1lhGK2a55qcHx1wU72BLrdZBrTgM7cVM1xDxr0xl7nRfnN1wFit+Aho
	RiFkSHnRoueVrOydAMwR2XAvHAtLM9eGrN+m6HQ==
X-Google-Smtp-Source: AGHT+IFWPkaUi9h6zUBavnSbjNvXfTeeQf/dGUI3WYFPNq79Qb4Bmk45eIzacdbSIMdALRFR/yqlXNTyIfjwXLZMGMk=
X-Received: by 2002:a05:6870:55c9:b0:277:e6bc:330c with SMTP id
 586e51a60fabf-288344d4302mr1066545fac.29.1728466851808; Wed, 09 Oct 2024
 02:40:51 -0700 (PDT)
MIME-Version: 1.0
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
In-Reply-To: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 9 Oct 2024 10:40:40 +0100
Message-ID: <CACHz=ZiQS5R3KCbJj7WBnv7WW8YM3AewkUVP4z8+D2rpgPfiiA@mail.gmail.com>
Subject: Re: [PATCH 0/7] types: replace remaining uses of __u{16,32,64}
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, 
	Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 9, 2024 at 10:20=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> 1: byteorder: replace __u16
> 2: byteorder: replace __u32
> 3: Flask: replace uses of __u32
> 4: x86: modernize swab64()
> 5: types: replace remaining uses of __u32
> 6: byteorder: replace __u64
> 7: types: replace remaining use of __u64
>
> Jan
>

For the series

Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:44:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:44:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814098.1227195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTEv-0008Uk-JQ; Wed, 09 Oct 2024 09:44:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814098.1227195; Wed, 09 Oct 2024 09:44: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 1syTEv-0008Ud-Gj; Wed, 09 Oct 2024 09:44:17 +0000
Received: by outflank-mailman (input) for mailman id 814098;
 Wed, 09 Oct 2024 09: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=3wKy=RF=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syTEt-0008UX-Qy
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:44:15 +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 0b088226-8623-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 11:44:14 +0200 (CEST)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-5398cc2fcb7so7550500e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 02:44:13 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539aff1d341sm1458616e87.167.2024.10.09.02.44.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 02:44:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b088226-8623-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728467053; x=1729071853; 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=azvjZLZmY1Yusr59naqFI2Y/i885nbOVpal2iF9eUmw=;
        b=iuYlEjTinnp3IkJOTJCb8po8z9KTLwM1+mtIPGVnoIy7WS1Ny6kO+CjYfVcHIJqtFD
         ADyez+cluGa1psYNWgLjO0eZOnHjAMRb7I/7BUgpAfZxxKMPXqC5QUsbC4DJuPupkffc
         tzSof/emTy5iH37LgDZnfafXVKUHbDUHkw8aAVYyLRTfNM2uClTO3WSorzwZwy9qnvxI
         rUL4sb7vIGWFuTPDj+RfOLtiWPB5yGzHe8NU7VKGHm8QmPFRBDPTpQphX68mLzz4//B5
         6Kcd1ifQWIt3eVzU8C8olmYW+ao7JnsPZNJI2s7k+gvAL2ZbUUg1/0VnzPrf62MnYsEp
         PoYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728467053; x=1729071853;
        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=azvjZLZmY1Yusr59naqFI2Y/i885nbOVpal2iF9eUmw=;
        b=RQ/SR/Q2xipRUKjV4rsGXGXUbpfcC3uB1VJ2Gmt0uGMBk5t+c7PXwvsOKwU3qIAXLv
         YI5mjehv9DwRC/Rdnamcv1BiysjLCwfA7KwbiwDz/Co7sPxRCv6RngA3oeRED65jm+Yo
         7r3mYUDBvgU4lwjs9iNptb/T7EXhLDMHi0nCdOGrfXy+L4Wi7WJx6ARgqUpluttHa61r
         NvAltsDNIMv3ttjY5MamNCgC4HJox6lzSayxjMKUOeHvMoW4Nhd/7Iy4Ll8h1Tsxj00F
         FgugTpJlfJgmmNbYFfcMRp50NmDpYTX24xW41YKuyHK40DIG7p2/1sIfvpQEot7dLip0
         pIjQ==
X-Forwarded-Encrypted: i=1; AJvYcCWHIxvKSZ6I6OqQjbSqWOHdNxCBd1m+F/8OXkzZrm3eGdUZv0+ys4OrA76c3TJBIkrTuUFI2ACENQM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy659bUeIDA8TlloQKTyqELGAtxZXvxCezgrgxyjYXx/AVJUbV6
	OZT72JrZccaKiWuh/j+CeFRuOCisepixMHgFhOEp31/CewN9jvyJ
X-Google-Smtp-Source: AGHT+IHaVdKHY6jstBHtgfVYpkz45Ka06kz2xLHSXasvRX6ZbgNNHZREMw61jpYkkyLHQk0qb45ICA==
X-Received: by 2002:a05:6512:3087:b0:539:94e2:a0d6 with SMTP id 2adb3069b0e04-539c48eabbbmr1064176e87.31.1728467053095;
        Wed, 09 Oct 2024 02:44:13 -0700 (PDT)
Message-ID: <bb3d291186e1549de52f020d9cdca2b1938e508f.camel@gmail.com>
Subject: Re: [PATCH v2 1/3] xen/riscv: implement virt_to_maddr()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 09 Oct 2024 11:44:12 +0200
In-Reply-To: <98fdc897-2ad7-47c6-a633-70dfa381e562@suse.com>
References: <cover.1728057657.git.oleksii.kurochko@gmail.com>
	 <25a0fa030db90c929379a799aa5e03bed0197665.1728057657.git.oleksii.kurochko@gmail.com>
	 <5771a606964dfaf7d507a5ecbc315dbbf8eac479.camel@gmail.com>
	 <98fdc897-2ad7-47c6-a633-70dfa381e562@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-08 at 12:34 +0200, Jan Beulich wrote:
> On 08.10.2024 12:26, oleksii.kurochko@gmail.com=C2=A0wrote:
> > On Fri, 2024-10-04 at 18:04 +0200, Oleksii Kurochko wrote:
> > > @@ -28,7 +29,21 @@ static inline void *maddr_to_virt(paddr_t ma)
> > > =C2=A0=C2=A0=C2=A0=C2=A0 return NULL;
> > > =C2=A0}
> > > =C2=A0
> > > -#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
> > > +static inline unsigned long virt_to_maddr(unsigned long va)
> > > +{
> > > +=C2=A0=C2=A0=C2=A0 ASSERT(va >=3D (DIRECTMAP_VIRT_START + DIRECTMAP_=
SIZE));
> > It should be ASSERT(va < (...)).
> >=20
> > Then I can't use virt_to_maddr() instead of LINK_TO_LOAD() as=20
> > address from Xen's VA space ( XEN_VIRT_START ) are higher then
> > (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE).
> >=20
> > Or as an option we could consider to drop this ASSERT() as if
> > VA is from directmap range the if below will catch that; otherwise
> > we have another one ASSERT() which checks that VA is from Xen VA
> > range
> > where it is sage to use (phys_offset + va).
> >=20
> > Could we consider just dropping "ASSERT(va < (DIRECTMAP_VIRT_START
> > +
> > DIRECTMAP_SIZE))" or I am missing something?
>=20
> Counter question: Why did you put the ASSERT() there when - once
> corrected - it's actually pointless? What you want to make sure is
> that virt_to_maddr() can't be invoked with bad argument (without
> noticing). If that's achieved with just the other assertion (as it
> looks to be), then leaving out this assertion ought to be fine.
Originally, I didn=E2=80=99t include the part after 'if (...)'. The purpose=
 of
ASSERT(va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)) was to ensure that
the virtual address fell within the expected (directmap) range. Later,
I added the part after 'if (...)', which extended the acceptable
virtual address range to also cover addresses from Xen=E2=80=99s linkage
address space. At that point, I should have removed the original
ASSERT() but overlooked it.

I will drop the first ASSERT() and update the commit message / comment
above virt_to_maddr() why it is enough to have only 1 ASSERT() after if
(...).

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 09:53:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 09:53:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814108.1227205 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTNI-0003z2-Ew; Wed, 09 Oct 2024 09:52:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814108.1227205; Wed, 09 Oct 2024 09:52: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 1syTNI-0003yv-CF; Wed, 09 Oct 2024 09:52:56 +0000
Received: by outflank-mailman (input) for mailman id 814108;
 Wed, 09 Oct 2024 09:52: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=3FS1=RF=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1syTNH-0003xZ-2x
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 09:52:55 +0000
Received: from fhigh-a5-smtp.messagingengine.com
 (fhigh-a5-smtp.messagingengine.com [103.168.172.156])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 40334e0c-8624-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 11:52:53 +0200 (CEST)
Received: from phl-compute-10.internal (phl-compute-10.phl.internal
 [10.202.2.50])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 18B9C1140193;
 Wed,  9 Oct 2024 05:52:52 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-10.internal (MEProxy); Wed, 09 Oct 2024 05:52:52 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 9 Oct 2024 05:52:50 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 40334e0c-8624-11ef-a0bd-8be0dac302b0
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=1728467572;
	 x=1728553972; bh=OBh7dvA1WDHaX0NNMpBXn4Qg0apWW54k1iTKqpaG4to=; b=
	DSXQbPdcA7tHhbRsmLF0cBuZfcMwwg9rMfl1LwNthFBjQDOGuRZjSKHBUL8ufO7g
	oFSblSaBHuVUCD9wsfUFSddSs/IFT/kYuXcb4exJsUZ457wHeTHThWwY2nvdTLKS
	oWR95/TzCzeuZa3ff9KLNuBCTl1SSeMXm5KQ5xL2c6YKBX2cB4gr1INekOIKZJqS
	aQu2aRbGlCQjCBgjc1/00+krds3AvzpMwT/tU6QP0estPPSJodE7edUs1wyozfk0
	/mOp76NdAzw2mtf9IggsrL0fj3qq3QbSg/Af+IQuXuHMoloaaO0GDF5jlumNzVlN
	mZyIo+p/ncde2rVyL6YrhA==
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=1728467572; x=1728553972; bh=OBh7dvA1WDHaX0NNMpBXn4Qg0apW
	W54k1iTKqpaG4to=; b=KMO52tzmS1XSuiKrsEY+7Kq2xUnCDUOb6HOp/VEsAx5n
	USoD/LkPSU8ps4W6tNYKEV7h8MQiTc5TgZfFptn1aZzlY6GQvgpZiNCbT02xuqNl
	hpKLjXBN/hgGi13WZYlZ9oka5W2xD6LKvS7a6q63+Pd6MfwBZHWrTFxQZxT+T0Kk
	ox6O30mWLQ2RSF70ti23SGbUjccTqIEDOc25qrg8sZ5awo4GIUE3RzCN6le9wZO/
	kUSQKHdh77eHsUA3oE9IVYA6T1vwAmYeh3CEqbRiq+jxtTOXWPupF1AmhkG4tG6i
	ilDB8cbQigH6XO0cwL6B4RcRrIlFrweTptJL1iy+Qg==
X-ME-Sender: <xms:c1IGZ1O4SX9a4dAawGwWs86fjzpCxwFQ05Q3m3NkWy7Zv8KTY64Ryg>
    <xme:c1IGZ38peJxnyRGQCRwO4jfzqMo7cZtci4nujRMjsEZRQPvhdn2674Xcgp_UbMzbn
    NOIvxMT_bq33Q>
X-ME-Received: <xmr:c1IGZ0Qd5u4LqQYyYeMGISxt80qtCAtOMRY58wCmmObD39KZ2_RiKhQHJ6USuv6bsqFll4Y3vDmVWLdHTlmMwwZ18f12NB4Ozw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdeffedgvddvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepjhgsvghu
    lhhitghhsehsuhhsvgdrtghomhdprhgtphhtthhopegrnhhthhhonhihrdhpvghrrghrug
    esvhgrthgvshdrthgvtghhpdhrtghpthhtohepjhhgrhhoshhssehsuhhsvgdrtghomhdp
    rhgtphhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdroh
    hrgh
X-ME-Proxy: <xmx:c1IGZxv62K1c5x1ScJvTPGlbdUGTKAOlUDrrUh1ls8oWZ5Zp7toFrg>
    <xmx:c1IGZ9eDPi0_l-N1HgNdh2a_1fuHgbJGPbOZAiphXzn7xEAYpyHEgQ>
    <xmx:c1IGZ93oK-vpgVUv0E6bFx5C40PPnCb2RX4Uo4X2YwFLq8aXS94A3g>
    <xmx:c1IGZ59FQlmFpFrptaxYTwGzo1DyKOTjGSzRIlxW9W4h9X8aOS6hhw>
    <xmx:dFIGZx6t42ahbsRPfvfbApeyS1SjcDHcWS87-Qow7VIlBg840MH0Ppz9>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 9 Oct 2024 11:52:48 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
Message-ID: <ZwZScGr75xEolDnS@mail-itl>
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="GfK0RJaHWu31FjkM"
Content-Disposition: inline
In-Reply-To: <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com>


--GfK0RJaHWu31FjkM
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 9 Oct 2024 11:52:48 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel

On Wed, Oct 09, 2024 at 09:19:57AM +0200, Jan Beulich wrote:
> On 08.10.2024 23:32, Marek Marczykowski-G=C3=B3recki wrote:
> > --- a/tools/libs/guest/xg_dom_bzimageloader.c
> > +++ b/tools/libs/guest/xg_dom_bzimageloader.c
> > @@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
> >      return retval;
> >  }
> > =20
> > -/* 128 Mb is the minimum size (half-way) documented to work for all in=
puts. */
> > -#define LZMA_BLOCK_SIZE (128*1024*1024)
> > +#define LZMA_BLOCK_SIZE (256*1024*1024)
>=20
> That's as arbitrary as before, now just not even with a comment at least
> hinting at it being arbitrary. Quoting from one of the LZMA API headers:
>=20
> 	 * Decoder already supports dictionaries up to 4 GiB - 1 B (i.e.
> 	 * UINT32_MAX), so increasing the maximum dictionary size of the
> 	 * encoder won't cause problems for old decoders.
>=20
> IOW - what if the Linux folks decided to increase the dictionary size
> further? I therefore wonder whether we don't need to make this more
> dynamic, perhaps by peeking into the header to obtain the dictionary
> size used. The one thing I'm not sure about is whether there can't be
> multiple such headers throughout the file, and hence (in principle)
> differing dictionary sizes.

What is the purpose of this block size limit? From the error message, it
seems to be avoiding excessive memory usage during decompression (which
could be DoS via OOM). If that's the case, then taking the limit from
the kernel binary itself will miss this point (especially in case of
pygrub or similar, but there may be other cases of not-fully-trusted
kernel binaries).

I realize replacing one arbitrary number with another is not really
future-proof, but also the last one lasted for over 10 years, so maybe
it isn't really a big issue.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcGUnAACgkQ24/THMrX
1yzDogf/UzSSpAawMIqxqVks02iu0ekNdZO85w3sVoYynfwH9I++KHV6Ri6UmO4f
YDBDpIldHZ3sWYErh0pxlI5Ixu4vhHIWCuiHVOmbI5eAbttuSpzU78MsVDSJJFlY
3YRQywsqfxzwTtuJ/xDnEXdbSdmUgsXP/UXjkLrVl9FvP17ZSh8L67fZIQ12iM28
yoqq/e5at1/14ieDro4l433yCeqBJIdW6T7xIZTk6GowSdyjK2qIRyF68C3asp+M
T0p4Z5zXucrZiq/S4ZoFe7o0kEzja+g+tLfPpOLVVUQtyKFCk3o7uQTjgJPCCYsA
Rc5DKeI21j/x6RnK8OPKUpAvQp1DWg==
=BbQq
-----END PGP SIGNATURE-----

--GfK0RJaHWu31FjkM--


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:09:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:09:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814201.1227559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTdO-0004pZ-Gr; Wed, 09 Oct 2024 10:09:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814201.1227559; Wed, 09 Oct 2024 10: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 1syTdO-0004pS-Dk; Wed, 09 Oct 2024 10:09:34 +0000
Received: by outflank-mailman (input) for mailman id 814201;
 Wed, 09 Oct 2024 10:09: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 1syTdM-0004p9-T6; Wed, 09 Oct 2024 10:09: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 1syTdM-0006Qi-RP; Wed, 09 Oct 2024 10:09: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 1syTdM-0003Eb-8L; Wed, 09 Oct 2024 10:09:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syTdM-0003we-7f; Wed, 09 Oct 2024 10: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=PPZIYpD5zDGdffPTEiMMIIXl/l43Zjmx8UxJErx8WY8=; b=LG3iak2jQg2HF2gl9pZe5oUOA1
	cH+BZzsREOm3PrMQDqS0ml59LdUeGc6hITULYwcB/XVFmOoHxDNB/0KkadbrAbSUVVU6CKApS+W9d
	ARPrWCf4exDVvxYPJzeIKfibBFQMsJnGyGXW4CZjrRHCyVUkBhXNYhM8WHt0zR3MZj14=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188017-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188017: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-xl-raw:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-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-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-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-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-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-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2: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-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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-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-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-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=5b7c893ed5ed0fc1cbe28c0e3296a6fb45698486
X-Osstest-Versions-That:
    linux=87d6aab2389e5ce0197d8257d5f8ee965a67c4cd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 10:09:32 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-raw       8 xen-boot            fail pass in 188025-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-raw     14 migrate-support-check fail in 188025 never pass
 test-armhf-armhf-xl-raw 15 saverestore-support-check fail in 188025 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188002
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188002
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188002
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188002
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188002
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188002
 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-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-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-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          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-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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                5b7c893ed5ed0fc1cbe28c0e3296a6fb45698486
baseline version:
 linux                87d6aab2389e5ce0197d8257d5f8ee965a67c4cd

Last test of basis   188002  2024-10-07 20:14:37 Z    1 days
Testing same since   188017  2024-10-08 18:41:44 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Monakov <amonakov@ispras.ru>
  Andrew Ballance <andrewjballance@gmail.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Diogo Jahchan Koike <djahchankoike@gmail.com>
  Dr. David Alan Gilbert <linux@treblig.org>
  Ian Rogers <irogers@google.com>
  Ilkka Koskinen <ilkka@os.amperecomputing.com>
  James Clark <james.clark@linaro.org>
  Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
  Kuan-Wei Chiu <visitorckw@gmail.com>
  lei lu <llfamsec@gmail.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Namhyung Kim <namhyung@kernel.org>
  Thorsten Blum <thorsten.blum@toblux.com>
  Yang Jihong <yangjihong@bytedance.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   87d6aab2389e..5b7c893ed5ed  5b7c893ed5ed0fc1cbe28c0e3296a6fb45698486 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:15:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:15:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814244.1227704 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTix-0000SW-GB; Wed, 09 Oct 2024 10:15:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814244.1227704; Wed, 09 Oct 2024 10: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 1syTix-0000SP-Dd; Wed, 09 Oct 2024 10:15:19 +0000
Received: by outflank-mailman (input) for mailman id 814244;
 Wed, 09 Oct 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=BLvJ=RF=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syTiv-0000Rx-Ir
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 10:15:17 +0000
Received: from mail-oa1-x33.google.com (mail-oa1-x33.google.com
 [2001:4860:4864:20::33])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 60327fb8-8627-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 12:15:15 +0200 (CEST)
Received: by mail-oa1-x33.google.com with SMTP id
 586e51a60fabf-28832b71ebdso195402fac.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 03:15:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 60327fb8-8627-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728468914; x=1729073714; 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=oRmRijDtZLtX/e6fDXBz4qs5y4AuLrRoT6IwTIzhAwY=;
        b=IA/L+sQCpQZzuhPpcHL71Cwa7XUdTsJryKKRJ1lA5SI/h8T8jVOxegjzzLLRfJtzmh
         qR9ALr/+9h5OuM8YzqtSgeAgiLzDXSM4hz89EGyklunfP3VHxTw52M+KZKk34crMmidd
         URrJvc2ICzO+yIv6vRxI5fWfPjLnITmFITuxM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728468914; x=1729073714;
        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=oRmRijDtZLtX/e6fDXBz4qs5y4AuLrRoT6IwTIzhAwY=;
        b=gnsPqjtfbQXtAkBGUwTzgTcSBYBNCkg2SiTFcWBQPucltfhyWm2qP2SrUEXR3xGsj2
         5bggUBjyb62Rqn/KTrRM8JvKXr5DIF5aAZpspQX9oR7tf9FEJyKhaMLLNhbU+z5YCZtl
         S4t8YNysor43E1biamvbt8eCds0qbNNJ70k38oOkHTgEnLH6RnIJQxc2TEsO8xazsjdi
         KfbIbGQ+a9gCn62BlvsUEdkEBLjzVoTP3rdAS205wo6xFb1zzUs4s8cSw3rWK75xcSGp
         9l5DRGR4zqgA/1X7FIe1tJRMLEV3JSIdoY+ORIzPzK6A0RFLuSteJgS5mrWo9tvOHAXd
         v+ZQ==
X-Forwarded-Encrypted: i=1; AJvYcCUW6pCTy0O+dZnHkOOHp+6OK3JLE10CibxUwLLaJbYSNSP8A5V8FQspMWD1MbM9wO5avwoVhVpzooQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzFs0pJ1JbhtAGQO4TXcsVMsqJyQZ+hBvICDTWR3tUnYh7m2h6E
	fuhyVl2DL1YLyXGjLjzBx4FvBgffggSkWl1Z+qZNA6bsCNFmMt5oXxXqxEIgRRQsmiQtX9lYZv9
	TJ55O0Ro9qV67PEPGgM603nPUlqt4zl6gBTxyww==
X-Google-Smtp-Source: AGHT+IHFM+9XDbwI5q5WkiRdrzrUVTc+YbFwld6auK1Lp3q8SuHeTL93AIRmfLOM3nSB3HfFUv9w/jtWnlI/6xJ8Mgg=
X-Received: by 2002:a05:6870:c1c3:b0:277:c027:1960 with SMTP id
 586e51a60fabf-2883434b155mr1084509fac.25.1728468914119; Wed, 09 Oct 2024
 03:15:14 -0700 (PDT)
MIME-Version: 1.0
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
 <20241009080439.2411730-2-frediano.ziglio@cloud.com> <f54d8f4b-e088-4ebe-a72f-ec4a540f9b33@suse.com>
In-Reply-To: <f54d8f4b-e088-4ebe-a72f-ec4a540f9b33@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 9 Oct 2024 11:15:03 +0100
Message-ID: <CACHz=ZjLDv11OiMdtDmTLDOEmgDiqMoP9cppdKg3qcsXK+wpgA@mail.gmail.com>
Subject: Re: [PATCH v8 1/2] x86/boot: Align mbi2.c stack to 16 bytes
To: Jan Beulich <jbeulich@suse.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 9, 2024 at 9:20=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 09.10.2024 10:04, Frediano Ziglio wrote:
> > Doing previous testing with an Adler Lake Intel machine the following
> > patch (improving MBI structure checking) started to fail.
>
> In patch descriptions please don't refer to "this patch" or "the followin=
g
> patch"; describe a commit in a self-contained way, with references to
> what's already committed mentioning commit hash and title, whereas
> references to what hasn't been committed using merely the title (and mayb=
e
> a link to its most recent posting). I'm not sure though that the other
> patch really matters here beyond having exposed an issue that was there
> (latently) anyway.
>

In this case it's referring to a not merged commit, so I cannot put
the hash, but I changed to state the subject.

> > Excluding it makes the tests succeed however there was not apparent
> > reason (looking at the code) for the failure.
> > So I instrumented code to output the structure and tested code with
> > this extracted data with and without the following patch and results
> > were the same.
> > Compiled assembly code from lab was also fine beside not keeping
> > the 16-byte alignment for the stack.
> > Turning on stack alignment solve the problem on Adler Lake machine.
> >
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>
> This really wants a Fixes: tag then.
>

Done.

> > --- a/xen/arch/x86/efi/Makefile
> > +++ b/xen/arch/x86/efi/Makefile
> > @@ -11,6 +11,8 @@ $(obj)/boot.init.o: $(obj)/buildid.o
> >  $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-bounda=
ry=3D4)
> >  $(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary :=3D $(cflags-=
stack-boundary)
> >
> > +$(obj)/mbi2.o: CFLAGS_stack_boundary :=3D $(cflags-stack-boundary)
> > +
> >  obj-y :=3D common-stub.o stub.o
> >  obj-$(XEN_BUILD_EFI) :=3D $(filter-out %.init.o,$(EFIOBJ-y))
> >  obj-bin-$(XEN_BUILD_EFI) :=3D $(filter %.init.o,$(EFIOBJ-y))
>
> You're duplicating code, which is better to avoid when possible. Is there
> a reason the earlier commit didn't simply add mbi2.o to $(EFIOBJ-y)? That
> way the existing logic would have covered that file as well. And really I
> think it should have been mbi2.init.o (or else adding it into $(obj-bin-y=
)
> is wrong), which probably wants correcting at the same time (ISTR actuall=
y
> having requested that during an earlier review round).
 >
> Jan

This was my first attempt, but it fails poorly, as EFIOBJ-y comes with
the addition of creating some file links that causes mbi2.c to be
overridden.
If I remember, you suggested changing to obj-bin-y. Still, maybe is
not the best place. It was added to obj-bin-y because it should be
included either if XEN_BUILD_EFI is "y" or not.

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:16:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:16:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814261.1227747 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTk8-0001Mh-AL; Wed, 09 Oct 2024 10:16:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814261.1227747; Wed, 09 Oct 2024 10:16: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 1syTk8-0001Ma-7X; Wed, 09 Oct 2024 10:16:32 +0000
Received: by outflank-mailman (input) for mailman id 814261;
 Wed, 09 Oct 2024 10:16: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 1syTk7-0001MF-6b; Wed, 09 Oct 2024 10:16: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 1syTk7-0006bP-4z; Wed, 09 Oct 2024 10:16: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 1syTk6-0003QF-Mt; Wed, 09 Oct 2024 10:16:30 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syTk6-0001vC-MK; Wed, 09 Oct 2024 10:16: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=tfygQ89Q5/DQxTFwCf8xPtONOTtRphFIacBBYU/ONhU=; b=V06UhFSKy/jE0EqoUQfluaKcVL
	jUy8/g5yGBbUuwdHZFObuKeoMT9kLzH3Kst48ilmoGX+4CbFKkb4oAdqetKskGk+Q/liODmRfmXx3
	YksmG/r7Cfu8MzlEVifDsc4j9d5gjBKw564Rfef9OTjSvf/BI5KJmym5fcGUPBFW2OVo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188024-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188024: regressions - FAIL
X-Osstest-Failures:
    xen-unstable-smoke:build-armhf:xen-build:fail:regression
    xen-unstable-smoke:test-armhf-armhf-xl:build-check(1):blocked:nonblocking
    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
X-Osstest-Versions-This:
    xen=3b79d825b5719f6654e4c95cdc17d65bb204213a
X-Osstest-Versions-That:
    xen=c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 10:16:30 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-armhf                   6 xen-build                fail REGR. vs. 188015

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl           1 build-check(1)               blocked  n/a
 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

version targeted for testing:
 xen                  3b79d825b5719f6654e4c95cdc17d65bb204213a
baseline version:
 xen                  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd

Last test of basis   188015  2024-10-08 16:00:24 Z    0 days
Testing same since   188024  2024-10-09 08:02:21 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Bertrand Marquis <bertrand.marquis@arm.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Julien Grall <jgrall@amazon.com>
  Matthew Barnes <matthew.barnes@cloud.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>
  Ross Lagerwall <ross.lagerwall@citrix.com>
  Stefano Stabellini <sstabellini@kernel.org>
  Volodymyr Babchuk <volodymyr_babchuk@epam.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  fail    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          blocked 
 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


Not pushing.

------------------------------------------------------------
commit 3b79d825b5719f6654e4c95cdc17d65bb204213a
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Oct 9 09:57:37 2024 +0200

    MAINTAINERS: Add myself as a reviewer for RISC-V
    
    As an active contributor to Xen's RISC-V port, so add myself
    to the list of reviewers.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>

commit 6b80ec957c64fc3ca7a32adc504fefd226d7dad0
Author: Jan Beulich <jbeulich@suse.com>
Date:   Wed Oct 9 09:56:43 2024 +0200

    types: replace remaining uses of s64
    
    ... and move the type itself to linux-compat.h. An exception being
    arch/arm/arm64/cpufeature.c and arch/arm/include/asm/arm64/cpufeature.h,
    which are to use linux-compat.h instead (the former by including the
    latter).
    
    While doing so
    - correct the type of union uu's uq field in lib/divmod.c,
    - switch a few adjacent types as well, for (a little bit of)
      consistency.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit 9d278c8c6cd5f8375c913ed8f4d1ce2b50f0ea06
Author: Bertrand Marquis <bertrand.marquis@arm.com>
Date:   Wed Oct 9 09:56:16 2024 +0200

    MAINTAINERS: add myself as maintainer for arm tee
    
    With Tee mediators now containing Optee and FF-A implementations, add
    myself as maintainers to have someone handling the FF-A side.
    
    Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>
    Acked-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

commit 2f413e22fa5eb1c6b8ec04ef1529807a2fbf6c79
Author: Roger Pau Monné <roger.pau@citrix.com>
Date:   Wed Oct 9 09:55:38 2024 +0200

    x86/msr: add log messages to MSR state load error paths
    
    Some error paths in the MSR state loading logic don't contain error messages,
    which makes debugging them quite hard without adding extra patches to print the
    information.
    
    Add two new log messages to the MSR state load path that print information
    about the entry that failed to load, for both PV and HVM.
    
    While there also adjust XEN_DOMCTL_set_vcpu_msrs to return -ENXIO in case the
    MSR is unhandled or can't be loaded, so it matches the error code used by HVM
    MSR loading (and it's less ambiguous than -EINVAL).
    
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>

commit dcbf8210f3f3a49626341355308010eb92194b85
Author: Matthew Barnes <matthew.barnes@cloud.com>
Date:   Wed Oct 9 09:54:48 2024 +0200

    x86/APIC: Switch flat driver to use phys dst for ext ints
    
    External interrupts via logical delivery mode in xAPIC do not benefit
    from targeting multiple CPUs and instead simply bloat up the vector
    space.
    
    However the xAPIC flat driver currently uses logical delivery for
    external interrupts.
    
    This patch switches the xAPIC flat driver to use physical destination
    mode for external interrupts, instead of logical destination mode.
    
    This patch also applies the following non-functional changes:
    - Remove now unused logical flat functions
    - Expand GENAPIC_FLAT and GENAPIC_PHYS macros, and delete them.
    
    Resolves: https://gitlab.com/xen-project/xen/-/issues/194
    Signed-off-by: Matthew Barnes <matthew.barnes@cloud.com>
    Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

commit b3152931302c9415eecd4f5bc4236bbfee9194a6
Author: Frediano Ziglio <frediano.ziglio@cloud.com>
Date:   Wed Oct 9 09:53:49 2024 +0200

    xen: Update header guards - RISC-V
    
    Update headers related to RISC-V.
    
    Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>

commit 6bbcb97ba45ecdcac9d7359fdecf298bc4c1be1c
Author: Frediano Ziglio <frediano.ziglio@cloud.com>
Date:   Wed Oct 9 09:53:25 2024 +0200

    xen: Update header guards - I/O MMU
    
    Update headers related to I/O MMU.
    
    Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>

commit 964c9568eaa58f621384f58e0d275f3b060d781d
Author: Frediano Ziglio <frediano.ziglio@cloud.com>
Date:   Wed Oct 9 09:53:05 2024 +0200

    xen: Update header guards - Intel TXT
    
    Update the header related to Intel trusted execution technology.
    
    Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:19:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:19:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814285.1227820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTn3-0003bk-Ax; Wed, 09 Oct 2024 10:19:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814285.1227820; Wed, 09 Oct 2024 10: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 1syTn3-0003bd-8Q; Wed, 09 Oct 2024 10:19:33 +0000
Received: by outflank-mailman (input) for mailman id 814285;
 Wed, 09 Oct 2024 10: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syTn2-0003bX-9P
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 10:19:32 +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 f8e8283e-8627-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 12:19:31 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9951fba3b4so479450366b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 03:19:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994483e1e3sm520924766b.111.2024.10.09.03.19.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 03:19:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8e8283e-8627-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728469170; x=1729073970; 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=YWNOkMJt/qZiHUSsIWHQpYMnVYXyjbu1ne9rUwtjF38=;
        b=SbIH1/3cbc0z2qdRVsvSo5ozlDZOjM66Sa0pIqwULH4z7jhv3GzQhOwtbO7k5Q16Ag
         bl1BpCM8wm6wjx06IULW+O/+cvgeWr7c86kn33rwPfSL1FNGwl0qdwflA1krLiVBI+6Z
         DFTuyNr48SpGfwkp3l1xMOmDYdlb85aijnUGsj9zb1DpZLuGrkBO2ak3h5VwxyvllPGW
         lEH3VnCWpF4Z5qc19+SmNDRFh0brXyUQ2Wx52qUKHt5Uo3fRldrqHGUQBs0m8K7g7+HY
         A0i8bT+br7V87qCfLgyC92poYLfh7L8jlXVdc2qp2fh9VoFpXaSDlkpFjJaiFzwn8pK2
         XXsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728469170; x=1729073970;
        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=YWNOkMJt/qZiHUSsIWHQpYMnVYXyjbu1ne9rUwtjF38=;
        b=qAri6ivLOTdZ3wkbiY4UIlqWRaEKu51fjCIghGL8MF32EBVKypxTppWGiLpUHv6dh2
         IEZlLkCvN+e7i212koUW5IrenY/S0aia5RU4xVYppLKTKDNi7TIWCHVioTcXgmG4Op0T
         FG8gYmN1cEz2wchVy3/BBoWBYLM5HIfFdKFXgXz+rEJsX8qmJRMva6C12X+ioIBHKwys
         PX9EjFWodDAsQNrOOuA2yYg15T364q5XbPbOwN5us6bZ/btgwi1SX1Kk36MNybTbdnGi
         Nz6vuUbi7B0Ei/qN8Z7FESVfvsQVrsttt7PY+Ac95eCv+WwjS+dwfIV1r0ukBODmpTxt
         WD4w==
X-Forwarded-Encrypted: i=1; AJvYcCXU4edDMWvl2l0c/FRfo+d/LhJd9FvVmIVExsNeQw8Fqndqq9kozPoQ3OjXdOviQPUZ02Fi8BCxpBw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwJ3/mXzn0gnVM9x4WIrHAow31vqcaKv3tKkp1qy++zG54EBG5x
	+NbWltGOb7vmOo34whpwzh8SM/rXYqgDibQdp1R3qIo6FdoWLiRI1n8V3Hkr1w==
X-Google-Smtp-Source: AGHT+IHgnMfKMSWpUDB9fN6tQbby353vUU0Y9RU7f24ZjPlvVMjwIm+vwuVzVrCNbLqr9J6lq1TVgQ==
X-Received: by 2002:a17:907:d3cc:b0:a99:7e67:cd13 with SMTP id a640c23a62f3a-a998d208896mr171984766b.36.1728469170533;
        Wed, 09 Oct 2024 03:19:30 -0700 (PDT)
Message-ID: <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
Date: Wed, 9 Oct 2024 12:19:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com> <ZwZScGr75xEolDnS@mail-itl>
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: <ZwZScGr75xEolDnS@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 11:52, Marek Marczykowski-Górecki wrote:
> On Wed, Oct 09, 2024 at 09:19:57AM +0200, Jan Beulich wrote:
>> On 08.10.2024 23:32, Marek Marczykowski-Górecki wrote:
>>> --- a/tools/libs/guest/xg_dom_bzimageloader.c
>>> +++ b/tools/libs/guest/xg_dom_bzimageloader.c
>>> @@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
>>>      return retval;
>>>  }
>>>  
>>> -/* 128 Mb is the minimum size (half-way) documented to work for all inputs. */
>>> -#define LZMA_BLOCK_SIZE (128*1024*1024)
>>> +#define LZMA_BLOCK_SIZE (256*1024*1024)
>>
>> That's as arbitrary as before, now just not even with a comment at least
>> hinting at it being arbitrary. Quoting from one of the LZMA API headers:
>>
>> 	 * Decoder already supports dictionaries up to 4 GiB - 1 B (i.e.
>> 	 * UINT32_MAX), so increasing the maximum dictionary size of the
>> 	 * encoder won't cause problems for old decoders.
>>
>> IOW - what if the Linux folks decided to increase the dictionary size
>> further? I therefore wonder whether we don't need to make this more
>> dynamic, perhaps by peeking into the header to obtain the dictionary
>> size used. The one thing I'm not sure about is whether there can't be
>> multiple such headers throughout the file, and hence (in principle)
>> differing dictionary sizes.
> 
> What is the purpose of this block size limit? From the error message, it
> seems to be avoiding excessive memory usage during decompression (which
> could be DoS via OOM). If that's the case, then taking the limit from
> the kernel binary itself will miss this point (especially in case of
> pygrub or similar, but there may be other cases of not-fully-trusted
> kernel binaries).

Indeed. The question then simply is: Where do we want to draw the line
between what we permit and what we reject?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:26:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:26:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814294.1227831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syTte-0005iN-1s; Wed, 09 Oct 2024 10:26:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814294.1227831; Wed, 09 Oct 2024 10:26: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 1syTtd-0005iG-VC; Wed, 09 Oct 2024 10:26:21 +0000
Received: by outflank-mailman (input) for mailman id 814294;
 Wed, 09 Oct 2024 10:26: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=DqEV=RF=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syTtc-0005iA-UN
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 10:26:21 +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 ec7e36dc-8628-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 12:26:19 +0200 (CEST)
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 8B2441FE89;
 Wed,  9 Oct 2024 10:26:18 +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 5BBD0136BA;
 Wed,  9 Oct 2024 10:26:18 +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 YyrTFEpaBmfMcwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 09 Oct 2024 10: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
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec7e36dc-8628-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728469578; 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=GOgMWnaQdd82Nc1NdWysBSrLwNY8kbD38Ew20UDnaGU=;
	b=BYNXGhrQjI361BjC4/3mMBJPmRGOnpGIXZh+HveZP1BZ5HHLtblFhCWeYmjSkwps1MuPRG
	Udf1xna5J9mpt/yKhpgzyzvgESFzp6OqPYa4EFZ6T0l2Hj3lOTqUpOZMSinl/CI/0F68aL
	entfFtuYpQOETWSFIYugJTNVUwhALWQ=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=BYNXGhrQ
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728469578; 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=GOgMWnaQdd82Nc1NdWysBSrLwNY8kbD38Ew20UDnaGU=;
	b=BYNXGhrQjI361BjC4/3mMBJPmRGOnpGIXZh+HveZP1BZ5HHLtblFhCWeYmjSkwps1MuPRG
	Udf1xna5J9mpt/yKhpgzyzvgESFzp6OqPYa4EFZ6T0l2Hj3lOTqUpOZMSinl/CI/0F68aL
	entfFtuYpQOETWSFIYugJTNVUwhALWQ=
Message-ID: <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
Date: Wed, 9 Oct 2024 12:26:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
To: Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com> <ZwZScGr75xEolDnS@mail-itl>
 <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
Content-Language: en-US
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: <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------bOpjB0eq0wcZkpBBcdatyXam"
X-Rspamd-Queue-Id: 8B2441FE89
X-Spam-Score: -6.41
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-6.41 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_UNKNOWN(0.10)[application/pgp-keys];
	MIME_BASE64_TEXT(0.10)[];
	MX_GOOD(-0.01)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	MID_RHS_MATCH_FROM(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DKIM_TRACE(0.00)[suse.com:+];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,suse.com:dkim,imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------bOpjB0eq0wcZkpBBcdatyXam
Content-Type: multipart/mixed; boundary="------------G2fyVBr9avp4Wsd2Ma3eA0Ag";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
Message-ID: <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com> <ZwZScGr75xEolDnS@mail-itl>
 <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
In-Reply-To: <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------G2fyVBr9avp4Wsd2Ma3eA0Ag
Content-Type: multipart/mixed; boundary="------------f1eXHPeuj0Bwu1I6ERZsl3l0"

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

T24gMDkuMTAuMjQgMTI6MTksIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwOS4xMC4yMDI0
IDExOjUyLCBNYXJlayBNYXJjenlrb3dza2ktR8OzcmVja2kgd3JvdGU6DQo+PiBPbiBXZWQs
IE9jdCAwOSwgMjAyNCBhdCAwOToxOTo1N0FNICswMjAwLCBKYW4gQmV1bGljaCB3cm90ZToN
Cj4+PiBPbiAwOC4xMC4yMDI0IDIzOjMyLCBNYXJlayBNYXJjenlrb3dza2ktR8OzcmVja2kg
d3JvdGU6DQo+Pj4+IC0tLSBhL3Rvb2xzL2xpYnMvZ3Vlc3QveGdfZG9tX2J6aW1hZ2Vsb2Fk
ZXIuYw0KPj4+PiArKysgYi90b29scy9saWJzL2d1ZXN0L3hnX2RvbV9iemltYWdlbG9hZGVy
LmMNCj4+Pj4gQEAgLTI3Miw4ICsyNzIsNyBAQCBzdGF0aWMgaW50IF94Y190cnlfbHptYV9k
ZWNvZGUoDQo+Pj4+ICAgICAgIHJldHVybiByZXR2YWw7DQo+Pj4+ICAgfQ0KPj4+PiAgIA0K
Pj4+PiAtLyogMTI4IE1iIGlzIHRoZSBtaW5pbXVtIHNpemUgKGhhbGYtd2F5KSBkb2N1bWVu
dGVkIHRvIHdvcmsgZm9yIGFsbCBpbnB1dHMuICovDQo+Pj4+IC0jZGVmaW5lIExaTUFfQkxP
Q0tfU0laRSAoMTI4KjEwMjQqMTAyNCkNCj4+Pj4gKyNkZWZpbmUgTFpNQV9CTE9DS19TSVpF
ICgyNTYqMTAyNCoxMDI0KQ0KPj4+DQo+Pj4gVGhhdCdzIGFzIGFyYml0cmFyeSBhcyBiZWZv
cmUsIG5vdyBqdXN0IG5vdCBldmVuIHdpdGggYSBjb21tZW50IGF0IGxlYXN0DQo+Pj4gaGlu
dGluZyBhdCBpdCBiZWluZyBhcmJpdHJhcnkuIFF1b3RpbmcgZnJvbSBvbmUgb2YgdGhlIExa
TUEgQVBJIGhlYWRlcnM6DQo+Pj4NCj4+PiAJICogRGVjb2RlciBhbHJlYWR5IHN1cHBvcnRz
IGRpY3Rpb25hcmllcyB1cCB0byA0IEdpQiAtIDEgQiAoaS5lLg0KPj4+IAkgKiBVSU5UMzJf
TUFYKSwgc28gaW5jcmVhc2luZyB0aGUgbWF4aW11bSBkaWN0aW9uYXJ5IHNpemUgb2YgdGhl
DQo+Pj4gCSAqIGVuY29kZXIgd29uJ3QgY2F1c2UgcHJvYmxlbXMgZm9yIG9sZCBkZWNvZGVy
cy4NCj4+Pg0KPj4+IElPVyAtIHdoYXQgaWYgdGhlIExpbnV4IGZvbGtzIGRlY2lkZWQgdG8g
aW5jcmVhc2UgdGhlIGRpY3Rpb25hcnkgc2l6ZQ0KPj4+IGZ1cnRoZXI/IEkgdGhlcmVmb3Jl
IHdvbmRlciB3aGV0aGVyIHdlIGRvbid0IG5lZWQgdG8gbWFrZSB0aGlzIG1vcmUNCj4+PiBk
eW5hbWljLCBwZXJoYXBzIGJ5IHBlZWtpbmcgaW50byB0aGUgaGVhZGVyIHRvIG9idGFpbiB0
aGUgZGljdGlvbmFyeQ0KPj4+IHNpemUgdXNlZC4gVGhlIG9uZSB0aGluZyBJJ20gbm90IHN1
cmUgYWJvdXQgaXMgd2hldGhlciB0aGVyZSBjYW4ndCBiZQ0KPj4+IG11bHRpcGxlIHN1Y2gg
aGVhZGVycyB0aHJvdWdob3V0IHRoZSBmaWxlLCBhbmQgaGVuY2UgKGluIHByaW5jaXBsZSkN
Cj4+PiBkaWZmZXJpbmcgZGljdGlvbmFyeSBzaXplcy4NCj4+DQo+PiBXaGF0IGlzIHRoZSBw
dXJwb3NlIG9mIHRoaXMgYmxvY2sgc2l6ZSBsaW1pdD8gRnJvbSB0aGUgZXJyb3IgbWVzc2Fn
ZSwgaXQNCj4+IHNlZW1zIHRvIGJlIGF2b2lkaW5nIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2Ug
ZHVyaW5nIGRlY29tcHJlc3Npb24gKHdoaWNoDQo+PiBjb3VsZCBiZSBEb1MgdmlhIE9PTSku
IElmIHRoYXQncyB0aGUgY2FzZSwgdGhlbiB0YWtpbmcgdGhlIGxpbWl0IGZyb20NCj4+IHRo
ZSBrZXJuZWwgYmluYXJ5IGl0c2VsZiB3aWxsIG1pc3MgdGhpcyBwb2ludCAoZXNwZWNpYWxs
eSBpbiBjYXNlIG9mDQo+PiBweWdydWIgb3Igc2ltaWxhciwgYnV0IHRoZXJlIG1heSBiZSBv
dGhlciBjYXNlcyBvZiBub3QtZnVsbHktdHJ1c3RlZA0KPj4ga2VybmVsIGJpbmFyaWVzKS4N
Cj4gDQo+IEluZGVlZC4gVGhlIHF1ZXN0aW9uIHRoZW4gc2ltcGx5IGlzOiBXaGVyZSBkbyB3
ZSB3YW50IHRvIGRyYXcgdGhlIGxpbmUNCj4gYmV0d2VlbiB3aGF0IHdlIHBlcm1pdCBhbmQg
d2hhdCB3ZSByZWplY3Q/DQoNCklNSE8gdGhlIG1vc3QgbmF0dXJhbCBzb2x1dGlvbiB3b3Vs
ZCBiZSB0byB1c2UgZ3Vlc3QgbWVtb3J5IGZvciB0aGlzIHB1cnBvc2UuDQpPVE9IIHRoaXMg
cHJvYmFibHkgd291bGQgcmVxdWlyZSBhIHNpZ25pZmljYW50IHJld29yayBvZiBsaWJ4ZW5n
dWVzdC4NCg0KDQpKdWVyZ2VuDQoNCg==
--------------f1eXHPeuj0Bwu1I6ERZsl3l0
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-----

--------------f1eXHPeuj0Bwu1I6ERZsl3l0--

--------------G2fyVBr9avp4Wsd2Ma3eA0Ag--

--------------bOpjB0eq0wcZkpBBcdatyXam
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/Ey8FAmcGWkkFAwAAAAAACgkQsN6d1ii/Ey+B
UQgAnqSLw+JbH1ECodVK3iDovFI+8Rk2s/5SlUedUB+C5Yiz0LC1DT8ThfFYbykLAcYeoYG4SaxH
TW8inQ774ths0YH1Rzvs/VF+4OMAaDOayz1HZ6Lh3lmK4SoIAXUPTXnl3SXIx1FoOAOfa79Ykn6a
jTWKd0kJvCEl4DrmXmnqWYss2RUEdp//8C2eUd95dTclONqTNo+br670bFX514ZZgaDAByyJLEP0
aHlYuXS6wyLWQ+skF8IgfkE81lS01QKTS5Gk7OICksmeWBk34qTOXFtv3Niu8WGSeeQyz31jbb+H
F1omPchFDVdp51PTTl2VrtXM2+AuPAmmfcFzLcvuxw==
=L0A9
-----END PGP SIGNATURE-----

--------------bOpjB0eq0wcZkpBBcdatyXam--


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:50:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:50:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814308.1227843 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUGw-0005mo-0B; Wed, 09 Oct 2024 10:50:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814308.1227843; Wed, 09 Oct 2024 10:50: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 1syUGv-0005mh-TY; Wed, 09 Oct 2024 10:50:25 +0000
Received: by outflank-mailman (input) for mailman id 814308;
 Wed, 09 Oct 2024 10: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1syUGu-0005ma-Np
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 10:50:24 +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 47eb46eb-862c-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 12:50:22 +0200 (CEST)
Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com
 [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-451-RCL8bVKYM4GzsVrCRg86Cw-1; Wed, 09 Oct 2024 06:50:19 -0400
Received: by mail-wm1-f72.google.com with SMTP id
 5b1f17b1804b1-42ac185e26cso57175475e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 03:50:19 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d1695e62bsm10108645f8f.81.2024.10.09.03.50.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 03:50:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47eb46eb-862c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728471021;
	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=DSgm22aJFfiNtDR5PH9COXLN1T3/sjP+t9mUNwfGUwc=;
	b=aD17HEW292abkeVr6K/27cxhGRHtEYgOoCbfpawI/fxMAFpxr22H8uXOLEEKV6m9aTOdML
	fVolMHzdYN+9aqGWalGEuVDdlTxkmQd1Dwxpe9c1h9tJzbGNdXSLvSvDquvh9Lz4buMKp2
	Hevq/JUeyiUHItaqJ2kHx1qvxFAHPhU=
X-MC-Unique: RCL8bVKYM4GzsVrCRg86Cw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728471018; x=1729075818;
        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=DSgm22aJFfiNtDR5PH9COXLN1T3/sjP+t9mUNwfGUwc=;
        b=dPj2QAruAdRn1pdostCsNhpmq7hQ9bOFDdg5z7rY8pOi1aG7haQ67l1xUJRcW5Ihok
         vrXUp6hTcHvdfRBCuKnAdhRWPf4iQB25Wo6z3KvUPwcNdUJ71qXBM0X185Mc+hKgK9/l
         ue+CcGGvM6HTI+YPiOfj1dwoNRv6LYNX0fTXG9IiMEm1jyKeJMXSyRufJx1N4vL/3bwi
         Ir8nXxBt4NOEyFeZnFIeCX2hLPyda7Ev+VS9OaXFv+ypcE+frk6f6vJ9ndhGpy984ixu
         2NNLG6c+jNE5g1aRnBkgaC9My+h7gBuLTJV9LsuYM2zk01sbOt3usKchhuev/J5PXOZ1
         fTgg==
X-Forwarded-Encrypted: i=1; AJvYcCXobTbLPe37Ox+BCRvK3ks0O3SzfBlFWtzH8MXWD5S/qFHOFRLrU3lKAfS5g85P9jze4w/gDT8LO2s=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7Ca2Nc5Q5y/TUC66FFY6XggzjDKyQ9JJ7aNhfqulWamXoM7Fl
	DF3GY9ommIySUqPwkhfVQGZfDzm8jZoVKJvlVu7QKaMeCWZqiM/PdjqQ1VsRxbyK5+586HwMgbv
	TrEW9oY2zOeA/yMb21wkD7hXY9nH7lIL14l3b0h9ECKPq3bV+Oqro5oW7rHLO93zQ
X-Received: by 2002:a05:600c:154e:b0:42c:bf94:f9ad with SMTP id 5b1f17b1804b1-430d748c5demr14384225e9.34.1728471018520;
        Wed, 09 Oct 2024 03:50:18 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHApNTrtsbft1V7n10B4IIxH4JucbHmoQkQ4Jkaz+as7iAf1Sn6WqJVUcb29pY2MStHfTeBSg==
X-Received: by 2002:a05:600c:154e:b0:42c:bf94:f9ad with SMTP id 5b1f17b1804b1-430d748c5demr14383375e9.34.1728471017985;
        Wed, 09 Oct 2024 03:50:17 -0700 (PDT)
Message-ID: <6f54425072b008481a0511fc140bab2590cd1c06.camel@redhat.com>
Subject: Re: [RFC PATCH 03/13] drivers/xen: Use never-managed version of
 pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Juergen Gross <jgross@suse.com>, Damien Le Moal <dlemoal@kernel.org>, 
 Niklas Cassel <cassel@kernel.org>, Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>, Arnd Bergmann
 <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex
 Dubov <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>, Manish
 Chopra <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  linux-staging@lists.linux.dev,
 kvm@vger.kernel.org,  xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
Date: Wed, 09 Oct 2024 12:50:14 +0200
In-Reply-To: <3874c932-71c4-4253-9dcf-a9c302e6bc7e@suse.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-4-pstanner@redhat.com>
	 <3874c932-71c4-4253-9dcf-a9c302e6bc7e@suse.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Wed, 2024-10-09 at 10:51 +0200, Juergen Gross wrote:
> On 09.10.24 10:35, Philipp Stanner wrote:
> > pci_intx() is a hybrid function which can sometimes be managed
> > through
> > devres. To remove this hybrid nature from pci_intx(), it is
> > necessary to
> > port users to either an always-managed or a never-managed version.
> >=20
> > xen enables its PCI-Device with pci_enable_device(). Thus, it
> > needs the never-managed version.
> >=20
> > Replace pci_intx() with pci_intx_unmanaged().
> >=20
> > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
>=20
> Acked-by: Juergen Gross <jgross@suse.com>
>=20
> BTW, the diffstat in the [PATCH 00/13] mail is missing some files,
> e.g. the changes of this patch.

Ooops, probably something exploded when I copied the backed-up cover-
letter after regenerating the patches. Will fix.

But good to see that someone actually reads cover letters :p

P.

>=20
>=20
> Juergen
>=20



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:52:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:52:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814315.1227854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUJ0-0006ND-AY; Wed, 09 Oct 2024 10:52:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814315.1227854; Wed, 09 Oct 2024 10: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 1syUJ0-0006N6-6n; Wed, 09 Oct 2024 10:52:34 +0000
Received: by outflank-mailman (input) for mailman id 814315;
 Wed, 09 Oct 2024 10:52: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syUIy-0006N0-DB
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 10:52:32 +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 950192cb-862c-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 12:52:31 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9951fba3b4so483493366b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 03:52:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9950338d1fsm432244166b.47.2024.10.09.03.52.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 03:52:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 950192cb-862c-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728471150; x=1729075950; 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=02NjfAA6NyQni91j3WwMBU2oNcA4Yd84oZXocF6l4U4=;
        b=ZC7xBsLODegv5L38G+WFK+nxBaBABQQc1MFWpq9qtM29n6uJG8F0JdUqgchBCEydJQ
         /5MrDP6ygZvj/3ge/TxfvfF4PzY3kvKpuCAzoX1QqLx+KBSh1QN57W22P4JlE+DpdluL
         iIgh05Lcxue9rDFwH/JUXksIyEiUfpbMvUlq47F+W7EdDJFy7MMNMBaiIGyA/Mre+WyX
         AhX3yn7qOmLxS+TzR8GIAB/2ZPSpl5PEZE3UTZmviFfnpnQBfYctKRAgJgff50jLNU2g
         PU7MH3WoNB1jhC1HkEUwFy/riszTn7cDQNJGgjvwWk+O0VNXAuyodZuawLUJqn8z9ipV
         3/og==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728471150; x=1729075950;
        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=02NjfAA6NyQni91j3WwMBU2oNcA4Yd84oZXocF6l4U4=;
        b=KNquRfHVfUmehlpueHhStxREEvsxPGq80qjoGDR6LyZTMY3+JHfFuCTBN3tr2mTCjh
         4nFM6QZLpCEruLDjMlPU0frSFI5aDzsxdMhRkYRyUfzR8+jrkmRMWfZ4bhd5bTIByG5w
         +nJiERU9Njw+ySpgqvcLgSmPUWKQ2wV+cVDRLxtisXWtL3GAfZp2FRxy0ToqihKTGRUL
         ugq3jA1AQZdz3JCUnT1dVjbUiL6dv0sUJFVXCg+2DmTJj+pAKysQmzvu9FkQAdPKze5t
         MONS2GshZEqziSw701mCSwVsjZeo3J6lqykkNJ2yILfDWVeGBotfdVJWrlRSph0Hlf5P
         vL5A==
X-Forwarded-Encrypted: i=1; AJvYcCXHj3Er4IxapqTQRsibRBSKoaNRPzWgAaxJvJfYbNkc/fIeEXArBRF6g90zygSwtxxH8xSy9xVAR64=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywk40xKk98Wx+JFLKijcLRNuTUHlEOQ7vy1KqrXQKq0J90Tuvpa
	uDV+gAq1wzOiFGwvYq2er87b7WwIKDhatW8aU2008g7Cs9rr7pJgE0dqTm+sCw==
X-Google-Smtp-Source: AGHT+IHuvgZbtVw5pkhzoOZgcQgOO045ouq3lW93YFE+2VxDJsOzYhPuCs0rQ40wIbs9Kf8Qixn7Rg==
X-Received: by 2002:a17:906:c107:b0:a99:58ab:ae0 with SMTP id a640c23a62f3a-a998d1fa067mr162609666b.30.1728471150328;
        Wed, 09 Oct 2024 03:52:30 -0700 (PDT)
Message-ID: <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
Date: Wed, 9 Oct 2024 12:52:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, xen-devel@lists.xenproject.org
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
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: <ZwY4ym2Gnlx4tytP@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 10:03, Roger Pau Monné wrote:
> On Tue, Oct 08, 2024 at 04:01:28PM +0200, Jan Beulich wrote:
>> On 08.10.2024 12:47, Roger Pau Monne wrote:
>>> IVMD table contains restrictions about memory which must be mandatory assigned
>>> to devices (and which permissions it should use), or memory that should be
>>> never accessible to devices.
>>>
>>> Some hardware however contains ranges in IVMD that reference devices outside of
>>> the IVHD tables (in other words, devices not behind any IOMMU).  Such mismatch
>>> will cause Xen to fail in register_range_for_device(), ultimately leading to
>>> the IOMMU being disabled, and Xen crashing as x2APIC support might be already
>>> enabled and relying on the IOMMU functionality.
>>
>> I find it hard to believe that on x86 systems with IOMMUs some devices would
>> be left uncovered by any IOMMU. Is it possible that IVHD is flawed there? In
>> which case we might rightfully refuse to boot? (Can you share e.g. that
>> "iommu=debug" output that results from parsing the tables on that system?)
> 
> I'm afraid I don't have any of such systems to test myself, however I
> have the contents of IVRS:
> 
>   ACPI Table Header
> ------------------------------------------------------------------
> Signature          : IVRS
> Length             : 0x000001F8
> Revision           : 0x02
> Checksum           : 0x06
> OEM ID             : AMD  
> OEM Table ID       : AmdTable
> OEM Revision       : 0x00000001
> Creator ID         : AMD 
> Creator Revision   : 0x00000001
> IVinfo             : 0x00203043
> 	  IVHD
> 	----------------------------------------------------------------
> 	Type                  : 0x10
> 	Flags                 : 0xB0
> 	Length                : 0x0044
> 	IOMMU Device ID       : 0x0002
> 	Capability Offset     : 0x0040
> 	IOMMU Base Address    : 0x00000000FD200000
> 	Segment Group         : 0x0000
> 	IOMMU Info            : 0x0000
> 	IOMMU Feature Info    : 0x80048F6E
> 		  Range
> 		--------------------------------------------------
> 		Type                  : 0x03
> 		Start of Range        : 0x0003
> 		End of Range          : 0xFFFE
> 		DTE Setting           : 0x00
> 		  Alias Range
> 		--------------------------------------------------
> 		Type                  : 0x43
> 		Start of Range        : 0xFF00
> 		End of Range          : 0xFFFF
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x00A5
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x00A0
> 		Handle                : 0x00
> 		Variety               : HPET
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0xD7
> 		Source Device ID      : 0x00A0
> 		Handle                : 0x21
> 		Variety               : IOAPIC
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x0001
> 		Handle                : 0x22
> 		Variety               : IOAPIC
> 	  IVHD
> 	----------------------------------------------------------------
> 	Type                  : 0x11
> 	Flags                 : 0x30
> 	Length                : 0x0054
> 	IOMMU Device ID       : 0x0002
> 	Capability Offset     : 0x0040
> 	IOMMU Base Address    : 0x00000000FD200000
> 	Segment Group         : 0x0000
> 	IOMMU Info            : 0x0000
> 	IOMMU Feature Info    : 0x00048000
> 		  Range
> 		--------------------------------------------------
> 		Type                  : 0x03
> 		Start of Range        : 0x0003
> 		End of Range          : 0xFFFE
> 		DTE Setting           : 0x00
> 		  Alias Range
> 		--------------------------------------------------
> 		Type                  : 0x43
> 		Start of Range        : 0xFF00
> 		End of Range          : 0xFFFF
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x00A5
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x00A0
> 		Handle                : 0x00
> 		Variety               : HPET
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0xD7
> 		Source Device ID      : 0x00A0
> 		Handle                : 0x21
> 		Variety               : IOAPIC
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x0001
> 		Handle                : 0x22
> 		Variety               : IOAPIC
> 	  IVMD
> 	----------------------------------------------------------------
> 	Type                                 : 0x22
> 	Flags                                : 0x08
> 	Length                               : 0x0020
> 	DeviceID                             : 0x0000
> 	AuxiliaryData                        : 0x0FFF
> 	Reserved                             : 0x0000000000000000
> 	IVMD Start Address                   : 0x0000000096191000
> 	IVMD Memory Block Length             : 0x0000000000000022
> 	  IVMD
> 	----------------------------------------------------------------
> 	Type                                 : 0x22
> 	Flags                                : 0x08
> 	Length                               : 0x0020
> 	DeviceID                             : 0x0000
> 	AuxiliaryData                        : 0x0FFF
> 	Reserved                             : 0x0000000000000000
> 	IVMD Start Address                   : 0x0000000097D9E000
> 	IVMD Memory Block Length             : 0x0000000000000022
> 	  IVMD
> 	----------------------------------------------------------------
> 	Type                                 : 0x22
> 	Flags                                : 0x08
> 	Length                               : 0x0020
> 	DeviceID                             : 0x0000
> 	AuxiliaryData                        : 0x0FFF
> 	Reserved                             : 0x0000000000000000
> 	IVMD Start Address                   : 0x0000000097D9D000
> 	IVMD Memory Block Length             : 0x0000000000000022
> 	  IVHD
> 	----------------------------------------------------------------
> 	Type                  : 0x40
> 	Flags                 : 0x30
> 	Length                : 0x00D0
> 	IOMMU Device ID       : 0x0002
> 	Capability Offset     : 0x0040
> 	IOMMU Base Address    : 0x00000000FD200000
> 	Segment Group         : 0x0000
> 	IOMMU Info            : 0x0000
> 	IOMMU Feature Info    : 0x00048000
> 		  Range
> 		--------------------------------------------------
> 		Type                  : 0x03
> 		Start of Range        : 0x0003
> 		End of Range          : 0xFFFE
> 		DTE Setting           : 0x00
> 		  Alias Range
> 		--------------------------------------------------
> 		Type                  : 0x43
> 		Start of Range        : 0xFF00
> 		End of Range          : 0xFFFF
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x00A5
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x00A0
> 		Handle                : 0x00
> 		Variety               : HPET
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0xD7
> 		Source Device ID      : 0x00A0
> 		Handle                : 0x21
> 		Variety               : IOAPIC
> 		  Special Device
> 		--------------------------------------------------
> 		Type                  : 0x48
> 		Device ID             : 0x0000
> 		DTE Setting           : 0x00
> 		Source Device ID      : 0x0001
> 		Handle                : 0x22
> 		Variety               : IOAPIC
> 		  Variable Length ACPI HID Device
> 		--------------------------------------------------
> 		Type                  : 0xF0
> 		Device ID             : 0x00A5
> 		DTE Setting           : 0x40
> 		Hardware ID           : AMDI0020
> 		Extended DTE Setting  : 
> 		Unique ID Format      : 2
> 		Unique ID Length      : 9
> 		Unique ID             : \_SB.FUR0
> 		  Variable Length ACPI HID Device
> 		--------------------------------------------------
> 		Type                  : 0xF0
> 		Device ID             : 0x00A5
> 		DTE Setting           : 0x40
> 		Hardware ID           : AMDI0020
> 		Extended DTE Setting  : 
> 		Unique ID Format      : 2
> 		Unique ID Length      : 9
> 		Unique ID             : \_SB.FUR1
> 		  Variable Length ACPI HID Device
> 		--------------------------------------------------
> 		Type                  : 0xF0
> 		Device ID             : 0x00A5
> 		DTE Setting           : 0x40
> 		Hardware ID           : AMDI0020
> 		Extended DTE Setting  : 
> 		Unique ID Format      : 2
> 		Unique ID Length      : 9
> 		Unique ID             : \_SB.FUR2
> 		  Variable Length ACPI HID Device
> 		--------------------------------------------------
> 		Type                  : 0xF0
> 		Device ID             : 0x00A5
> 		DTE Setting           : 0x40
> 		Hardware ID           : AMDI0020
> 		Extended DTE Setting  : 
> 		Unique ID Format      : 2
> 		Unique ID Length      : 9
> 		Unique ID             : \_SB.FUR3
> 
> FWIW, I've checked on one of the AMD server systems we have on the
> lab, and the IVHD entries are fairly similar to the ones here, as
> neither the PCI Host Bridge, nor the IOMMU are covered by any IVHD
> block.  That system however doesn't have any IVMD blocks.

Mine are a little different. The Dinar (Fam15) has an IVHD entry just
for the range 0-2 (host bridge, <nothing>, IOMMU). The Rome (Fam17)
has an IVHD entry just for 0 (host bridge), but not for the IOMMU. I
think it is entirely reasonable for host bridge(s) and IOMMU(s) to not
be covered by any IVHD. They aren't devices that would require
servicing by an IOMMU.

Looking at the code I think we want to do things a little differently
though: Pull find_iommu_for_device() out of register_range_for_device()
and have parse_ivmd_device_range() do the skipping when there's no
IOMMU for a device. Plus error when no device in the range is covered
by an IOMMU, or if any two devices are covered by different IOMMUs.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 10:55:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 10:55:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814321.1227864 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUME-0007Jg-Nj; Wed, 09 Oct 2024 10:55:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814321.1227864; Wed, 09 Oct 2024 10: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 1syUME-0007JZ-Kq; Wed, 09 Oct 2024 10:55:54 +0000
Received: by outflank-mailman (input) for mailman id 814321;
 Wed, 09 Oct 2024 10: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=qj4E=RF=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1syUMD-0007JT-8D
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 10:55:53 +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 0bec66c8-862d-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 12:55:51 +0200 (CEST)
Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com
 [209.85.216.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-556-KwvGB6x3M_mopTKOlZf9gA-1; Wed, 09 Oct 2024 06:55:49 -0400
Received: by mail-pj1-f69.google.com with SMTP id
 98e67ed59e1d1-2e2a9577037so552382a91.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 03:55:48 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 98e67ed59e1d1-2e2a365cb84sm1341556a91.0.2024.10.09.03.55.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 03:55:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0bec66c8-862d-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728471350;
	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=P6wOEJFH1gN3pSkiGKb7z2pqnwnI+EOwPE66fTmRo9I=;
	b=UXGmAd/ueXQSn/ubVKycETMgPvnqcbMzwle74kYnWoMEhebollHM8MDV2txuKWVZCozMPX
	kNrEnoRrZH5x1zEXDvYl+dhxxPTmnL9HVZF1xaB+J3j7k03oa3WnDVxBIUtE0mqWvhmVTG
	blFopCum6ELHK9KO96pzznYvLq8XAg8=
X-MC-Unique: KwvGB6x3M_mopTKOlZf9gA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728471348; x=1729076148;
        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=AcZlzWYyN8UAcZA3DQr50bLqr6cMtcb31GCRb120JWk=;
        b=qEQ1/ihy5zsHNIObGohZAxVuV2vCHjRdg0bGFVrlccp2vk14VoNiHv2udRBCe5wCr5
         bf9TDKxZLgUlH/Hi959SfXfJSXQV3WRFH5PGC+LvHH27Tt5fI7Sag7gLFgv80PgEsGOQ
         1doSyxkMsfwlLKXSrRzSGxxvtodS49zvnQhQibivYz43wlctu5jTmp0Gh2/8gLa/Ab5m
         hD7Z6rRb9pUCVEhJY1NVzmnt8/gRd5mTXZjBs/FZnz/dyZQ2EYSuUVU4LsT+6FT9EXDl
         vKDuF7pYE+S5Dtu7rJIMhIw1DAnEwEP/YaqBTmRppEOS3oLaSA0UtFSsecAXV+2zLm/B
         U/qQ==
X-Forwarded-Encrypted: i=1; AJvYcCX0lXYv4LzemT2OFCc/x45FPpFpIAtCqTL+FlSlzPd4IW7nvVRsGESCYKLSNzUTsgnmWW55k3vhP2g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwTQOUoVj72OQm6SOMEsxXSdrm9JqBAaKxrD2zxiOuk0uagJZkN
	3WtetSz400qRNha1qiblESJayKJN2oxNgg8Q75TcdHVvdCUla9+wnLmXaQUVRm8BdidJSZXzyzg
	I2OKWsxdBCG+Lf9wPmJfBRnTAQuOHCZj0pKLzAROshhfVJRg7iXUdC2TNRDIKa8gI
X-Received: by 2002:a17:90b:28c7:b0:2e2:b21b:2247 with SMTP id 98e67ed59e1d1-2e2b21b2322mr933567a91.27.1728471348023;
        Wed, 09 Oct 2024 03:55:48 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEVV2txsjAP9qEDQxARdGlpHpBZTxsJXvis+5//ouL/mBT0m0DdnB1NIlYvykMWn/28LY/iUQ==
X-Received: by 2002:a17:90b:28c7:b0:2e2:b21b:2247 with SMTP id 98e67ed59e1d1-2e2b21b2322mr933536a91.27.1728471347607;
        Wed, 09 Oct 2024 03:55:47 -0700 (PDT)
Message-ID: <d6a78b6a3dec3e2371cced1382cd83d7dcf37426.camel@redhat.com>
Subject: Re: [RFC PATCH 09/13] ata: Use always-managed version of pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  linux-staging@lists.linux.dev,
 kvm@vger.kernel.org,  xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
Date: Wed, 09 Oct 2024 12:55:07 +0200
In-Reply-To: <95b23ff9-eb17-4e1c-b7a3-2d3691ffc48f@kernel.org>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-10-pstanner@redhat.com>
	 <95b23ff9-eb17-4e1c-b7a3-2d3691ffc48f@kernel.org>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Wed, 2024-10-09 at 17:51 +0900, Damien Le Moal wrote:
> On 10/9/24 17:35, Philipp Stanner wrote:
> > pci_intx() is a hybrid function which can sometimes be managed
> > through
> > devres. To remove this hybrid nature from pci_intx(), it is
> > necessary to
> > port users to either an always-managed or a never-managed version.
> >=20
> > All users in ata enable their PCI-Device with pcim_enable_device().
> > Thus,
> > they need the always-managed version.
> >=20
> > Replace pci_intx() with pci_intx_unmanaged().
>=20
> This contradicts the sentence above and the patche replaces
> pci_intx() with
> pcim_intx()... So s/pci_intx_unmanaged/pcim_intx in the above
> sentence ?

Yes, absolutely correct, the commit message is broken. The code itself
is fine, I grepped through it for pci_enable / pcim_enable

P.

>=20
> >=20
> > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > ---
> > =C2=A0drivers/ata/ahci.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> > =C2=A0drivers/ata/ata_piix.c=C2=A0=C2=A0 | 2 +-
> > =C2=A0drivers/ata/pata_rdc.c=C2=A0=C2=A0 | 2 +-
> > =C2=A0drivers/ata/sata_sil24.c | 2 +-
> > =C2=A0drivers/ata/sata_sis.c=C2=A0=C2=A0 | 2 +-
> > =C2=A0drivers/ata/sata_uli.c=C2=A0=C2=A0 | 2 +-
> > =C2=A0drivers/ata/sata_vsc.c=C2=A0=C2=A0 | 2 +-
> > =C2=A07 files changed, 7 insertions(+), 7 deletions(-)
> >=20
> > diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
> > index 45f63b09828a..9273ff3d4732 100644
> > --- a/drivers/ata/ahci.c
> > +++ b/drivers/ata/ahci.c
> > @@ -1985,7 +1985,7 @@ static int ahci_init_one(struct pci_dev
> > *pdev, const struct pci_device_id *ent)
> > =C2=A0
> > =C2=A0=09if (ahci_init_msi(pdev, n_ports, hpriv) < 0) {
> > =C2=A0=09=09/* legacy intx interrupts */
> > -=09=09pci_intx(pdev, 1);
> > +=09=09pcim_intx(pdev, 1);
> > =C2=A0=09}
> > =C2=A0=09hpriv->irq =3D pci_irq_vector(pdev, 0);
> > =C2=A0
> > diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
> > index 093b940bc953..d441246fa357 100644
> > --- a/drivers/ata/ata_piix.c
> > +++ b/drivers/ata/ata_piix.c
> > @@ -1725,7 +1725,7 @@ static int piix_init_one(struct pci_dev
> > *pdev, const struct pci_device_id *ent)
> > =C2=A0=09 * message-signalled interrupts currently).
> > =C2=A0=09 */
> > =C2=A0=09if (port_flags & PIIX_FLAG_CHECKINTR)
> > -=09=09pci_intx(pdev, 1);
> > +=09=09pcim_intx(pdev, 1);
> > =C2=A0
> > =C2=A0=09if (piix_check_450nx_errata(pdev)) {
> > =C2=A0=09=09/* This writes into the master table but it does
> > not
> > diff --git a/drivers/ata/pata_rdc.c b/drivers/ata/pata_rdc.c
> > index 0a9689862f71..09792aac7f9d 100644
> > --- a/drivers/ata/pata_rdc.c
> > +++ b/drivers/ata/pata_rdc.c
> > @@ -340,7 +340,7 @@ static int rdc_init_one(struct pci_dev *pdev,
> > const struct pci_device_id *ent)
> > =C2=A0=09=09return rc;
> > =C2=A0=09host->private_data =3D hpriv;
> > =C2=A0
> > -=09pci_intx(pdev, 1);
> > +=09pcim_intx(pdev, 1);
> > =C2=A0
> > =C2=A0=09host->flags |=3D ATA_HOST_PARALLEL_SCAN;
> > =C2=A0
> > diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
> > index 72c03cbdaff4..b771ebd41252 100644
> > --- a/drivers/ata/sata_sil24.c
> > +++ b/drivers/ata/sata_sil24.c
> > @@ -1317,7 +1317,7 @@ static int sil24_init_one(struct pci_dev
> > *pdev, const struct pci_device_id *ent)
> > =C2=A0
> > =C2=A0=09if (sata_sil24_msi && !pci_enable_msi(pdev)) {
> > =C2=A0=09=09dev_info(&pdev->dev, "Using MSI\n");
> > -=09=09pci_intx(pdev, 0);
> > +=09=09pcim_intx(pdev, 0);
> > =C2=A0=09}
> > =C2=A0
> > =C2=A0=09pci_set_master(pdev);
> > diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c
> > index ef8724986de3..b8b6d9eff3b8 100644
> > --- a/drivers/ata/sata_sis.c
> > +++ b/drivers/ata/sata_sis.c
> > @@ -290,7 +290,7 @@ static int sis_init_one(struct pci_dev *pdev,
> > const struct pci_device_id *ent)
> > =C2=A0=09}
> > =C2=A0
> > =C2=A0=09pci_set_master(pdev);
> > -=09pci_intx(pdev, 1);
> > +=09pcim_intx(pdev, 1);
> > =C2=A0=09return ata_host_activate(host, pdev->irq,
> > ata_bmdma_interrupt,
> > =C2=A0=09=09=09=09 IRQF_SHARED, &sis_sht);
> > =C2=A0}
> > diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
> > index 60ea45926cd1..52894ff49dcb 100644
> > --- a/drivers/ata/sata_uli.c
> > +++ b/drivers/ata/sata_uli.c
> > @@ -221,7 +221,7 @@ static int uli_init_one(struct pci_dev *pdev,
> > const struct pci_device_id *ent)
> > =C2=A0=09}
> > =C2=A0
> > =C2=A0=09pci_set_master(pdev);
> > -=09pci_intx(pdev, 1);
> > +=09pcim_intx(pdev, 1);
> > =C2=A0=09return ata_host_activate(host, pdev->irq,
> > ata_bmdma_interrupt,
> > =C2=A0=09=09=09=09 IRQF_SHARED, &uli_sht);
> > =C2=A0}
> > diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c
> > index d39b87537168..a53a2dfc1e17 100644
> > --- a/drivers/ata/sata_vsc.c
> > +++ b/drivers/ata/sata_vsc.c
> > @@ -384,7 +384,7 @@ static int vsc_sata_init_one(struct pci_dev
> > *pdev,
> > =C2=A0=09=09pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE,
> > 0x80);
> > =C2=A0
> > =C2=A0=09if (pci_enable_msi(pdev) =3D=3D 0)
> > -=09=09pci_intx(pdev, 0);
> > +=09=09pcim_intx(pdev, 0);
> > =C2=A0
> > =C2=A0=09/*
> > =C2=A0=09 * Config offset 0x98 is "Extended Control and Status
> > Register 0"
>=20
>=20



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:08:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:08:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814333.1227874 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUY7-00043J-TH; Wed, 09 Oct 2024 11:08:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814333.1227874; Wed, 09 Oct 2024 11:08: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 1syUY7-00043C-QR; Wed, 09 Oct 2024 11:08:11 +0000
Received: by outflank-mailman (input) for mailman id 814333;
 Wed, 09 Oct 2024 11:08: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=XgrK=RF=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syUY6-00042n-JK
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:08:10 +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 c42a8343-862e-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 13:08:09 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9944c4d5d4so471376466b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 04:08:09 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994348e9ccsm539036466b.77.2024.10.09.04.08.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 04:08:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c42a8343-862e-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728472088; x=1729076888; 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=iSCvHREAjJZUrEj8MugF5gpbmiw+GIoYQWatQRF1Kjw=;
        b=Kq5n5RXQuzPnBuORs9jjBO0Do7y6SQjirnWpu+7REg3h4j2UXgJ8+afJpJWFDPYOmJ
         jC9GqdGpyrF0zHI5DKRLUsu3fIz8ZPLpnDakWLLnrUAyKjQBI5QFqym3Mh1WJ0FmzUcX
         4UA824qW3bRPY6wJkLxJVI8vYBj+vkDYkPlrw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728472088; x=1729076888;
        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=iSCvHREAjJZUrEj8MugF5gpbmiw+GIoYQWatQRF1Kjw=;
        b=NtH1Klwpr/oNZvEgfiIkJjET9amZZaHzTZPxe0hD/QNVWMUGbK9uGxf5LE357O63QE
         ee3YOnmkVmY/leh6kHwL86A7z8O1J7Soq82uFlsO+Sg3kjMAHQh3XpsypRNThlmhcgn5
         pETFEAIOC7AAqXNJP474sA2SXA6ON0gzxhDagnuwJI9c+dUFlfKWItQfgBP0Hvb0tNu+
         /h/XZTQABy8S8xOlCERJnoYwb8cDe3qSPRbJVmTE7TTwTa7Mdb5CwlR9NTNEBxsV61a2
         Tf3NdzZkZf03hwRqEMmBzIAM6tTQN5MUwfS/ZNkYDiWJGGUI+AKe2IhxEUiTEWkE5gqZ
         0RYg==
X-Forwarded-Encrypted: i=1; AJvYcCVpIXSNog4r8M/+0SfZyxA6ewUEzwAJsJMQLW5xkmYxe5b1DyB7Bh1yOpWnCXiOstUPt6xvsTAvUCE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwP2nONmO7WKZI+QSmDmzqzE800ude37rxNAaCFP/7oNHzgaID6
	xe5ZmrBiUXkrBgbqibmQgnUuS9kInlzlSRuHhxThslNcpFaLWAIikZsiRF2iLq0=
X-Google-Smtp-Source: AGHT+IHYfO2smKhUbRvFq1fhb3qjLMUTCNFN1XKi5P6P8IGgFa6dOnsEnQ9pu3uuU2ubPCDTakCdDw==
X-Received: by 2002:a17:906:c10c:b0:a99:5d03:4687 with SMTP id a640c23a62f3a-a998d19959bmr172233666b.21.1728472088438;
        Wed, 09 Oct 2024 04:08:08 -0700 (PDT)
Message-ID: <dde4b510-5674-44d0-9493-a0717387b8d6@citrix.com>
Date: Wed, 9 Oct 2024 12:08:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
To: Juergen Gross <jgross@suse.com>, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com> <ZwZScGr75xEolDnS@mail-itl>
 <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
 <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09/10/2024 11:26 am, Juergen Gross wrote:
> On 09.10.24 12:19, Jan Beulich wrote:
>> On 09.10.2024 11:52, Marek Marczykowski-Górecki wrote:
>>> On Wed, Oct 09, 2024 at 09:19:57AM +0200, Jan Beulich wrote:
>>>> On 08.10.2024 23:32, Marek Marczykowski-Górecki wrote:
>>>>> --- a/tools/libs/guest/xg_dom_bzimageloader.c
>>>>> +++ b/tools/libs/guest/xg_dom_bzimageloader.c
>>>>> @@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
>>>>>       return retval;
>>>>>   }
>>>>>   -/* 128 Mb is the minimum size (half-way) documented to work for
>>>>> all inputs. */
>>>>> -#define LZMA_BLOCK_SIZE (128*1024*1024)
>>>>> +#define LZMA_BLOCK_SIZE (256*1024*1024)
>>>>
>>>> That's as arbitrary as before, now just not even with a comment at
>>>> least
>>>> hinting at it being arbitrary. Quoting from one of the LZMA API
>>>> headers:
>>>>
>>>>      * Decoder already supports dictionaries up to 4 GiB - 1 B (i.e.
>>>>      * UINT32_MAX), so increasing the maximum dictionary size of the
>>>>      * encoder won't cause problems for old decoders.
>>>>
>>>> IOW - what if the Linux folks decided to increase the dictionary size
>>>> further? I therefore wonder whether we don't need to make this more
>>>> dynamic, perhaps by peeking into the header to obtain the dictionary
>>>> size used. The one thing I'm not sure about is whether there can't be
>>>> multiple such headers throughout the file, and hence (in principle)
>>>> differing dictionary sizes.
>>>
>>> What is the purpose of this block size limit? From the error
>>> message, it
>>> seems to be avoiding excessive memory usage during decompression (which
>>> could be DoS via OOM). If that's the case, then taking the limit from
>>> the kernel binary itself will miss this point (especially in case of
>>> pygrub or similar, but there may be other cases of not-fully-trusted
>>> kernel binaries).
>>
>> Indeed. The question then simply is: Where do we want to draw the line
>> between what we permit and what we reject?
>
> IMHO the most natural solution would be to use guest memory for this
> purpose.
> OTOH this probably would require a significant rework of libxenguest.


That was XSA-25.  There are toolstack-provided limits on kernel&initrd
sizes.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:13:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:13:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814340.1227883 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUdE-00065C-Ej; Wed, 09 Oct 2024 11:13:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814340.1227883; Wed, 09 Oct 2024 11:13: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 1syUdE-000655-CC; Wed, 09 Oct 2024 11:13:28 +0000
Received: by outflank-mailman (input) for mailman id 814340;
 Wed, 09 Oct 2024 11:13: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syUdD-00064v-9M
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:13:27 +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 814eee82-862f-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 13:13:26 +0200 (CEST)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2fad5024b8dso76831041fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 04:13:26 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05ecafbsm5392186a12.70.2024.10.09.04.13.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 04:13:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 814eee82-862f-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728472406; x=1729077206; 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=qaOVW6pxd/LBtFDzmIxeje2r0nwomK6w5VBfXxfg8S8=;
        b=HASl2DqUztFh+7EKRycK796puGCEFhQNnk203bP80JzXVgjXnzO6TYVUIEqdngmMTl
         B0zdpatT+LJinv5oCZQv7K4YJiwnuE9akB0XUhQyLbf6q4pEXhZ2DoahT9+rTyi89wRo
         x995zAc8yHI8ZfKoJ8FWehbgVgF0brS2nS4ONvZmRX4OA7C3ly/DkEzjskyiceWLsOpF
         8lCe+YuMhJaL88QsOn4m1Y2a1tIyXjoVTSY5orT1xyifnWzA0pfvAHDwujFDu2McrZVu
         NowGYZMBI/I1p12e0Q8UDVFIbowZAjx7JiP2LlbRdSjKmllQI4oMaKXKCb0dmKfQ69vl
         v07Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728472406; x=1729077206;
        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=qaOVW6pxd/LBtFDzmIxeje2r0nwomK6w5VBfXxfg8S8=;
        b=PPsdhNHIhm3V5eXK5hroB1dc4mxBYr/Jca066yWTPmq6PTQ6QfkqJTMUJCK1hqCKol
         Ba7M5INq7HoY0bNJjtj8j2mg33QBoDY0mlAvd23QmUOv9Vv2LJ8PRHwd8KgzMds6RSHL
         Q7jeL51moojltY17pDSLlHOfZjH/9IrnRDME0wS+LzAUY7iZLQZjrwzFIPoDt9nM02Vh
         FR+PdOH3scRaL7z6zF+T54bX2fOa7cNyGPeT1qV+F7k0U/vJG8WmyZZ4eejsJQP6ApK/
         tfBrxDnZispjts4Brsx50LSqrX1A9cSIzcGXwv8fnWe13wT7/HtWUavOa0lO8AKGRiMi
         Dp8g==
X-Forwarded-Encrypted: i=1; AJvYcCWw3OP0crFkRYPR5QZ4V/QVaUSoZBhAR/n302aXIGG9Gpj0FB9ibYxb1PNC2mfiEzQMGMdKDXPRef4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzlt8izKQbHezTcweSGkf9ENo9iZUhHzsCci7+ZmfgsApa5yPYS
	pePtXAUwn3ztHHskvWUam96bFl6nRZIXZD3LsH+vaCfzJH0ghlgK8reOuwx9bQ==
X-Google-Smtp-Source: AGHT+IFo0Caqxw3Wlyee7bxOTrVOEShDPgoFL0QgTUVocVbVWo6MSCuKZIypO6qeWRjUbF5EfrKR1Q==
X-Received: by 2002:a2e:5152:0:b0:2fa:c0df:3d7b with SMTP id 38308e7fff4ca-2fb1873da33mr10040531fa.22.1728472405607;
        Wed, 09 Oct 2024 04:13:25 -0700 (PDT)
Message-ID: <49d1ff38-dff7-4db0-aec8-15ca82339e54@suse.com>
Date: Wed, 9 Oct 2024 13:13:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v8 1/2] x86/boot: Align mbi2.c stack to 16 bytes
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
 <20241009080439.2411730-2-frediano.ziglio@cloud.com>
 <f54d8f4b-e088-4ebe-a72f-ec4a540f9b33@suse.com>
 <CACHz=ZjLDv11OiMdtDmTLDOEmgDiqMoP9cppdKg3qcsXK+wpgA@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: <CACHz=ZjLDv11OiMdtDmTLDOEmgDiqMoP9cppdKg3qcsXK+wpgA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 12:15, Frediano Ziglio wrote:
> On Wed, Oct 9, 2024 at 9:20 AM Jan Beulich <jbeulich@suse.com> wrote:
>> On 09.10.2024 10:04, Frediano Ziglio wrote:
>>> --- a/xen/arch/x86/efi/Makefile
>>> +++ b/xen/arch/x86/efi/Makefile
>>> @@ -11,6 +11,8 @@ $(obj)/boot.init.o: $(obj)/buildid.o
>>>  $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=4)
>>>  $(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary := $(cflags-stack-boundary)
>>>
>>> +$(obj)/mbi2.o: CFLAGS_stack_boundary := $(cflags-stack-boundary)
>>> +
>>>  obj-y := common-stub.o stub.o
>>>  obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))
>>>  obj-bin-$(XEN_BUILD_EFI) := $(filter %.init.o,$(EFIOBJ-y))
>>
>> You're duplicating code, which is better to avoid when possible. Is there
>> a reason the earlier commit didn't simply add mbi2.o to $(EFIOBJ-y)? That
>> way the existing logic would have covered that file as well. And really I
>> think it should have been mbi2.init.o (or else adding it into $(obj-bin-y)
>> is wrong), which probably wants correcting at the same time (ISTR actually
>> having requested that during an earlier review round).
> 
> This was my first attempt, but it fails poorly, as EFIOBJ-y comes with
> the addition of creating some file links that causes mbi2.c to be
> overridden.

I can't see $(EFIOBJ-y) affecting symlink creation. What I can see is that
the variable is used in the setting of clean-files, which indeed is a problem.
Still imo the solution then is to introduce another variable to substitute the
uses of $(EFIOBJ-y) in arch/x86/efi/Makefile. E.g.

EFIOBJ-all := $(EFIOBJ-y) mbi2.init.o

> If I remember, you suggested changing to obj-bin-y. Still, maybe is
> not the best place. It was added to obj-bin-y because it should be
> included either if XEN_BUILD_EFI is "y" or not.

No, that doesn't explain the addition to obj-bin-y; this would equally be
achieved by adding to obj-y. The difference between the two variables is
whether objects are to be subject to LTO. And the typical case then is that
init-only objects aren't worth that extra build overhead. Hence the common
pattern is (besides files with assembly sources) for *.init.o to be added to
obj-bin-*.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:13:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:13:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814341.1227894 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUdI-0006MP-NX; Wed, 09 Oct 2024 11:13:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814341.1227894; Wed, 09 Oct 2024 11:13: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 1syUdI-0006MI-Kd; Wed, 09 Oct 2024 11:13:32 +0000
Received: by outflank-mailman (input) for mailman id 814341;
 Wed, 09 Oct 2024 11:13: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=eQJB=RF=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1syUdG-0006LR-T0
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:13:31 +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 829baada-862f-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 13:13:28 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a994ecf79e7so70651466b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 04:13:28 -0700 (PDT)
Received: from localhost ([213.195.123.53]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5d0a32sm655319866b.19.2024.10.09.04.13.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 04:13:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 829baada-862f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728472408; x=1729077208; 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=dzgx/Q6EirPir1M40hD0xQVTU7KZoyYYfMzoWVL6qVI=;
        b=Px8j8nOT5RLQyfQ7ZDho4RDQ1U/zOn1s8PWn3Rxej+SR/TRaED4NWla2WZlqKfP7hf
         SCPQ0NrYF6+m3obWDMNdTfHHqfLrLYQ0NZhPgHr442G+YF0+QvMy6A1pM4oSFt/u4v/f
         mVtIxtzBfsUxvxaCiQmlaGZBVbU7YM9ELx4Kc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728472408; x=1729077208;
        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=dzgx/Q6EirPir1M40hD0xQVTU7KZoyYYfMzoWVL6qVI=;
        b=TqkuhTbT6xOjIwGqzkPzWcujxFmzqK3aKUHp30fl5U9bez7GCWZT1Om8bB0QJ9+GKn
         QVM9MZXYk+t6PMfmWrm1LF8MFL1C+VhEC0H4H1JSuCJCSijX/e9/IUhXwdh402HZwdGv
         pOr4V2JyJFrWdQCyfvHOAPVUS80+MHvo94/gGuW3877ApjQFdCU4VNEYSG+KhelPgVL0
         z4y4SwWNTKM7LwIzlAPWsacnIPDzPdt9kyDEPsTVdraP++/b+R6YgEMwYFGaQDedjFEV
         5TYbwJlpCLtLSaSf+T6a07jBFDDxOX6G9q4pogHgZ3Sk2pWZmzaz1rXBF62Frsjc+i7Z
         My6A==
X-Forwarded-Encrypted: i=1; AJvYcCXxxe9m/+b/LsPaNQyItUcHilRU/pukInKe9Y+caDD/K74Prq6P7qoUnjAVY+UMT9YeeMV+gXofbHE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YypdG1DkX4QbXg6JvZVS8gRwN2UiUMLewaC+w6YSqCb6gluKxjg
	QxrbT+PC1M5GfU/eN7/XBjnW9dNxJarZRMks4lQm3HAzouiS3Bm/fWXeKhD9D3A=
X-Google-Smtp-Source: AGHT+IGfNxRhoAWuLQ/mEEomRM4e0obWWOER6M9oAFTb1jSCm1+dyDldTn1dd1ink2AIGPM9CstfmQ==
X-Received: by 2002:a17:907:f1d3:b0:a99:4058:67d5 with SMTP id a640c23a62f3a-a998d20862cmr184009666b.34.1728472407965;
        Wed, 09 Oct 2024 04:13:27 -0700 (PDT)
Date: Wed, 9 Oct 2024 13:13:26 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
Message-ID: <ZwZlVlU2nHkBedyo@macbook.local>
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>

On Wed, Oct 09, 2024 at 12:52:29PM +0200, Jan Beulich wrote:
> On 09.10.2024 10:03, Roger Pau Monné wrote:
> > On Tue, Oct 08, 2024 at 04:01:28PM +0200, Jan Beulich wrote:
> >> On 08.10.2024 12:47, Roger Pau Monne wrote:
> >>> IVMD table contains restrictions about memory which must be mandatory assigned
> >>> to devices (and which permissions it should use), or memory that should be
> >>> never accessible to devices.
> >>>
> >>> Some hardware however contains ranges in IVMD that reference devices outside of
> >>> the IVHD tables (in other words, devices not behind any IOMMU).  Such mismatch
> >>> will cause Xen to fail in register_range_for_device(), ultimately leading to
> >>> the IOMMU being disabled, and Xen crashing as x2APIC support might be already
> >>> enabled and relying on the IOMMU functionality.
> >>
> >> I find it hard to believe that on x86 systems with IOMMUs some devices would
> >> be left uncovered by any IOMMU. Is it possible that IVHD is flawed there? In
> >> which case we might rightfully refuse to boot? (Can you share e.g. that
> >> "iommu=debug" output that results from parsing the tables on that system?)
> > 
> > I'm afraid I don't have any of such systems to test myself, however I
> > have the contents of IVRS:
> > 
> >   ACPI Table Header
> > ------------------------------------------------------------------
> > Signature          : IVRS
> > Length             : 0x000001F8
> > Revision           : 0x02
> > Checksum           : 0x06
> > OEM ID             : AMD  
> > OEM Table ID       : AmdTable
> > OEM Revision       : 0x00000001
> > Creator ID         : AMD 
> > Creator Revision   : 0x00000001
> > IVinfo             : 0x00203043
> > 	  IVHD
> > 	----------------------------------------------------------------
> > 	Type                  : 0x10
> > 	Flags                 : 0xB0
> > 	Length                : 0x0044
> > 	IOMMU Device ID       : 0x0002
> > 	Capability Offset     : 0x0040
> > 	IOMMU Base Address    : 0x00000000FD200000
> > 	Segment Group         : 0x0000
> > 	IOMMU Info            : 0x0000
> > 	IOMMU Feature Info    : 0x80048F6E
> > 		  Range
> > 		--------------------------------------------------
> > 		Type                  : 0x03
> > 		Start of Range        : 0x0003
> > 		End of Range          : 0xFFFE
> > 		DTE Setting           : 0x00
> > 		  Alias Range
> > 		--------------------------------------------------
> > 		Type                  : 0x43
> > 		Start of Range        : 0xFF00
> > 		End of Range          : 0xFFFF
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x00A5
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x00A0
> > 		Handle                : 0x00
> > 		Variety               : HPET
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0xD7
> > 		Source Device ID      : 0x00A0
> > 		Handle                : 0x21
> > 		Variety               : IOAPIC
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x0001
> > 		Handle                : 0x22
> > 		Variety               : IOAPIC
> > 	  IVHD
> > 	----------------------------------------------------------------
> > 	Type                  : 0x11
> > 	Flags                 : 0x30
> > 	Length                : 0x0054
> > 	IOMMU Device ID       : 0x0002
> > 	Capability Offset     : 0x0040
> > 	IOMMU Base Address    : 0x00000000FD200000
> > 	Segment Group         : 0x0000
> > 	IOMMU Info            : 0x0000
> > 	IOMMU Feature Info    : 0x00048000
> > 		  Range
> > 		--------------------------------------------------
> > 		Type                  : 0x03
> > 		Start of Range        : 0x0003
> > 		End of Range          : 0xFFFE
> > 		DTE Setting           : 0x00
> > 		  Alias Range
> > 		--------------------------------------------------
> > 		Type                  : 0x43
> > 		Start of Range        : 0xFF00
> > 		End of Range          : 0xFFFF
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x00A5
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x00A0
> > 		Handle                : 0x00
> > 		Variety               : HPET
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0xD7
> > 		Source Device ID      : 0x00A0
> > 		Handle                : 0x21
> > 		Variety               : IOAPIC
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x0001
> > 		Handle                : 0x22
> > 		Variety               : IOAPIC
> > 	  IVMD
> > 	----------------------------------------------------------------
> > 	Type                                 : 0x22
> > 	Flags                                : 0x08
> > 	Length                               : 0x0020
> > 	DeviceID                             : 0x0000
> > 	AuxiliaryData                        : 0x0FFF
> > 	Reserved                             : 0x0000000000000000
> > 	IVMD Start Address                   : 0x0000000096191000
> > 	IVMD Memory Block Length             : 0x0000000000000022
> > 	  IVMD
> > 	----------------------------------------------------------------
> > 	Type                                 : 0x22
> > 	Flags                                : 0x08
> > 	Length                               : 0x0020
> > 	DeviceID                             : 0x0000
> > 	AuxiliaryData                        : 0x0FFF
> > 	Reserved                             : 0x0000000000000000
> > 	IVMD Start Address                   : 0x0000000097D9E000
> > 	IVMD Memory Block Length             : 0x0000000000000022
> > 	  IVMD
> > 	----------------------------------------------------------------
> > 	Type                                 : 0x22
> > 	Flags                                : 0x08
> > 	Length                               : 0x0020
> > 	DeviceID                             : 0x0000
> > 	AuxiliaryData                        : 0x0FFF
> > 	Reserved                             : 0x0000000000000000
> > 	IVMD Start Address                   : 0x0000000097D9D000
> > 	IVMD Memory Block Length             : 0x0000000000000022
> > 	  IVHD
> > 	----------------------------------------------------------------
> > 	Type                  : 0x40
> > 	Flags                 : 0x30
> > 	Length                : 0x00D0
> > 	IOMMU Device ID       : 0x0002
> > 	Capability Offset     : 0x0040
> > 	IOMMU Base Address    : 0x00000000FD200000
> > 	Segment Group         : 0x0000
> > 	IOMMU Info            : 0x0000
> > 	IOMMU Feature Info    : 0x00048000
> > 		  Range
> > 		--------------------------------------------------
> > 		Type                  : 0x03
> > 		Start of Range        : 0x0003
> > 		End of Range          : 0xFFFE
> > 		DTE Setting           : 0x00
> > 		  Alias Range
> > 		--------------------------------------------------
> > 		Type                  : 0x43
> > 		Start of Range        : 0xFF00
> > 		End of Range          : 0xFFFF
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x00A5
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x00A0
> > 		Handle                : 0x00
> > 		Variety               : HPET
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0xD7
> > 		Source Device ID      : 0x00A0
> > 		Handle                : 0x21
> > 		Variety               : IOAPIC
> > 		  Special Device
> > 		--------------------------------------------------
> > 		Type                  : 0x48
> > 		Device ID             : 0x0000
> > 		DTE Setting           : 0x00
> > 		Source Device ID      : 0x0001
> > 		Handle                : 0x22
> > 		Variety               : IOAPIC
> > 		  Variable Length ACPI HID Device
> > 		--------------------------------------------------
> > 		Type                  : 0xF0
> > 		Device ID             : 0x00A5
> > 		DTE Setting           : 0x40
> > 		Hardware ID           : AMDI0020
> > 		Extended DTE Setting  : 
> > 		Unique ID Format      : 2
> > 		Unique ID Length      : 9
> > 		Unique ID             : \_SB.FUR0
> > 		  Variable Length ACPI HID Device
> > 		--------------------------------------------------
> > 		Type                  : 0xF0
> > 		Device ID             : 0x00A5
> > 		DTE Setting           : 0x40
> > 		Hardware ID           : AMDI0020
> > 		Extended DTE Setting  : 
> > 		Unique ID Format      : 2
> > 		Unique ID Length      : 9
> > 		Unique ID             : \_SB.FUR1
> > 		  Variable Length ACPI HID Device
> > 		--------------------------------------------------
> > 		Type                  : 0xF0
> > 		Device ID             : 0x00A5
> > 		DTE Setting           : 0x40
> > 		Hardware ID           : AMDI0020
> > 		Extended DTE Setting  : 
> > 		Unique ID Format      : 2
> > 		Unique ID Length      : 9
> > 		Unique ID             : \_SB.FUR2
> > 		  Variable Length ACPI HID Device
> > 		--------------------------------------------------
> > 		Type                  : 0xF0
> > 		Device ID             : 0x00A5
> > 		DTE Setting           : 0x40
> > 		Hardware ID           : AMDI0020
> > 		Extended DTE Setting  : 
> > 		Unique ID Format      : 2
> > 		Unique ID Length      : 9
> > 		Unique ID             : \_SB.FUR3
> > 
> > FWIW, I've checked on one of the AMD server systems we have on the
> > lab, and the IVHD entries are fairly similar to the ones here, as
> > neither the PCI Host Bridge, nor the IOMMU are covered by any IVHD
> > block.  That system however doesn't have any IVMD blocks.
> 
> Mine are a little different. The Dinar (Fam15) has an IVHD entry just
> for the range 0-2 (host bridge, <nothing>, IOMMU). The Rome (Fam17)
> has an IVHD entry just for 0 (host bridge), but not for the IOMMU. I
> think it is entirely reasonable for host bridge(s) and IOMMU(s) to not
> be covered by any IVHD. They aren't devices that would require
> servicing by an IOMMU.
> 
> Looking at the code I think we want to do things a little differently
> though: Pull find_iommu_for_device() out of register_range_for_device()
> and have parse_ivmd_device_range() do the skipping when there's no
> IOMMU for a device.

What about parse_ivmd_device_select()?  The IOMMU check would also need
to be duplicated there, which is not ideal IMO.

> Plus error when no device in the range is covered
> by an IOMMU, or if any two devices are covered by different IOMMUs.

I'm not sure I understand you last comment: do you mean to return an
error if a IVMD block range covers devices assigned to different
IOMMUs?  If that's the case, I'm afraid I don't agree, I don't see
anywhere in the spec that notes a IVMD block range can apply to
devices assigned to different IOMMUs.

I also think returning an error when no device in the IVMD range is
covered by an IOMMU is dubious.  Xen will already print warning
messages about such firmware inconsistencies, but refusing to boot is
too strict.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:15:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:15:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814355.1227904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUfD-00080K-9E; Wed, 09 Oct 2024 11:15:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814355.1227904; Wed, 09 Oct 2024 11:15: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 1syUfD-00080D-5j; Wed, 09 Oct 2024 11:15:31 +0000
Received: by outflank-mailman (input) for mailman id 814355;
 Wed, 09 Oct 2024 11:15: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syUfB-000805-MO
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:15:29 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c9993bed-862f-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 13:15:27 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a993302fa02so528655366b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 04:15:27 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994b0fd6bfsm484553766b.200.2024.10.09.04.15.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 04:15:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c9993bed-862f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728472527; x=1729077327; 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=0csW+tPpL/m/PvAcC5nebkXIoS7CD1K1HdfmJ2rZahI=;
        b=HXil8OB8/wnPAIWnZh7QS3kXSSj3QFd2qYSNKIQ55sXljTifr6FMqwO2n2xiX8OvnH
         T6/A1g8uHl0xVm8VJHBDok33vnY9gIowo5IO/McwszajyUPytOla7sbF408HZkrH7Vm3
         bjJrh8qGU3SawPCt2iJJ9VtBkH2HaaY1e9tz9kBodDw6qbmUnK9WiX1XFBdIFdG600bL
         RXyx+ZLlL6ix0vDQzRLemMtsTrKtNM9ZWp4tDsVzg1BJ/Em1Ha4DNAufgN0ZabpamiGC
         +1jSmkYkJPtNWLbQH2uPVxNsX+lv9hKn8h5TLMdSW8+jeXfNTjhrWaqHSyadcaCeFliD
         6Mug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728472527; x=1729077327;
        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=0csW+tPpL/m/PvAcC5nebkXIoS7CD1K1HdfmJ2rZahI=;
        b=rOOP36xZFrCu2OnLv7s65W+78qgpTMtWyarrFL5m4VKaBtldQIEEopRUg/c6Csh/ue
         9uiSxO/FKE/YZoIwYP8aeIaXAXZ2W3386D6BHbUUMMDhdPr0HgDc3j8dXnJd5P1gfiWS
         yP4kdC0VpUv4JIs0e2vtpq/8yYSlSqIF9WdfI6d7Rq3/fmbsf9Zmw9P+ZrjcqrrMD0HS
         y5EwA0XC9hyLJPpd/r+eVCvBWXIJAi4dLwUnEwvh0LxotR0BySMHF3S9STkXbJ28XuNF
         u9Hz0wh+BmBHjhwN8ksoUxXQIr66UgDv64pCBVlMXdJJMNi3l+vMVlDhrWyUuDTEZl2u
         zboA==
X-Forwarded-Encrypted: i=1; AJvYcCV5HLCntVzuoW1/PkFTHuve7zv3RNMyHO5Sa5+hW+9xLkVCOX42Rmn7gJegGPySugWnRXpJH/yPAno=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxM3+glMn9iWI0xbXC0lchtneIQjbHcH66CzQtdqBOze8IHuJOa
	GLGe/YCieTtDPGGhz7lT2/tZmcrlmRbCahvmY5Ijdz9No9pg12cJtvwu88uDzA==
X-Google-Smtp-Source: AGHT+IFNWjLwF2wPcV9zbim5uX+/ZfFSlBvYzOx4XvSeHkfJ497hUafASw8LV0HPotuXCcINXY4hHw==
X-Received: by 2002:a17:906:6a2a:b0:a99:4fb4:ea30 with SMTP id a640c23a62f3a-a998d1ac05fmr170907266b.19.1728472527097;
        Wed, 09 Oct 2024 04:15:27 -0700 (PDT)
Message-ID: <99089b03-e9f0-4fe8-94b2-11e75f9e5243@suse.com>
Date: Wed, 9 Oct 2024 13:15:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com> <ZwZScGr75xEolDnS@mail-itl>
 <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
 <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
 <dde4b510-5674-44d0-9493-a0717387b8d6@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: <dde4b510-5674-44d0-9493-a0717387b8d6@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 13:08, Andrew Cooper wrote:
> On 09/10/2024 11:26 am, Juergen Gross wrote:
>> On 09.10.24 12:19, Jan Beulich wrote:
>>> On 09.10.2024 11:52, Marek Marczykowski-Górecki wrote:
>>>> On Wed, Oct 09, 2024 at 09:19:57AM +0200, Jan Beulich wrote:
>>>>> On 08.10.2024 23:32, Marek Marczykowski-Górecki wrote:
>>>>>> --- a/tools/libs/guest/xg_dom_bzimageloader.c
>>>>>> +++ b/tools/libs/guest/xg_dom_bzimageloader.c
>>>>>> @@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
>>>>>>       return retval;
>>>>>>   }
>>>>>>   -/* 128 Mb is the minimum size (half-way) documented to work for
>>>>>> all inputs. */
>>>>>> -#define LZMA_BLOCK_SIZE (128*1024*1024)
>>>>>> +#define LZMA_BLOCK_SIZE (256*1024*1024)
>>>>>
>>>>> That's as arbitrary as before, now just not even with a comment at
>>>>> least
>>>>> hinting at it being arbitrary. Quoting from one of the LZMA API
>>>>> headers:
>>>>>
>>>>>      * Decoder already supports dictionaries up to 4 GiB - 1 B (i.e.
>>>>>      * UINT32_MAX), so increasing the maximum dictionary size of the
>>>>>      * encoder won't cause problems for old decoders.
>>>>>
>>>>> IOW - what if the Linux folks decided to increase the dictionary size
>>>>> further? I therefore wonder whether we don't need to make this more
>>>>> dynamic, perhaps by peeking into the header to obtain the dictionary
>>>>> size used. The one thing I'm not sure about is whether there can't be
>>>>> multiple such headers throughout the file, and hence (in principle)
>>>>> differing dictionary sizes.
>>>>
>>>> What is the purpose of this block size limit? From the error
>>>> message, it
>>>> seems to be avoiding excessive memory usage during decompression (which
>>>> could be DoS via OOM). If that's the case, then taking the limit from
>>>> the kernel binary itself will miss this point (especially in case of
>>>> pygrub or similar, but there may be other cases of not-fully-trusted
>>>> kernel binaries).
>>>
>>> Indeed. The question then simply is: Where do we want to draw the line
>>> between what we permit and what we reject?
>>
>> IMHO the most natural solution would be to use guest memory for this
>> purpose.
>> OTOH this probably would require a significant rework of libxenguest.
> 
> That was XSA-25.  There are toolstack-provided limits on kernel&initrd
> sizes.

Which probably can't be directly applied to dictionary size used during
(de)compression.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:15:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:15:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814356.1227914 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUfF-0008GX-Gp; Wed, 09 Oct 2024 11:15:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814356.1227914; Wed, 09 Oct 2024 11: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 1syUfF-0008GQ-EE; Wed, 09 Oct 2024 11:15:33 +0000
Received: by outflank-mailman (input) for mailman id 814356;
 Wed, 09 Oct 2024 11:15: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syUfE-000805-R5
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:15:32 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ca87313c-862f-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 13:15:30 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172847252110664.66275634369288;
 Wed, 9 Oct 2024 04:15:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca87313c-862f-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728472524; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=XyjCXCrDOO+WNcR1EvXbXYfJ2JXuP+Hy43N03AAchP7FJQ0UfVorhyzcmyI2HXVGyPbTLsZrN2ZyXxPkO9zUP6WX8UjzYKjF9Iinkv8QTZHJQlvjgzBW4DsNC5OawaS9c4r2ejrmXbnUCfuX41ROLWfl6klGm6C27o0Dgv5JwA0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728472524; 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=zXqOY56Juga8JCiHINW0eoQtjUwj7V6YyLxEKeLtq68=; 
	b=S1G4DWA+pEaryKRucNJfA++v35FFQTuQFAhbbvp9TkB1Zugb/PwaVGnmYgnEjXE65MerN8p74E0wL20poxq3widVMh+lndVTjX7c8jghhGsCyc/EfpdmMUkr6V1CDrryeRKBpnOjM1/tX3KAYzxLQ9JGrIAYVa9d5vzRWEbCkek=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728472524;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=zXqOY56Juga8JCiHINW0eoQtjUwj7V6YyLxEKeLtq68=;
	b=mk5ueNPWLmAGlA1pEx5EgVFidFMSWqXFLvYsss2dR8ug3kDnQU1Suk6XI6RYuk4a
	b+J3V8LgAUgSkNssjL0AqY4wexBFdYgtacq+UmX65TzmRZT4RPAviACL/DzxcJYkYCx
	IR8gYW0jaZThyXDc52VeD4ViQOw0aj//Ar6kPWwU=
Message-ID: <9ddabcda-855d-4629-8a04-3fa309f10152@apertussolutions.com>
Date: Wed, 9 Oct 2024 07:15:13 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/44] x86/boot: move x86 boot module counting into a
 new boot_info struct
To: Jan Beulich <jbeulich@suse.com>, Jason Andryuk <jason.andryuk@amd.com>
Cc: Christopher Clark <christopher.w.clark@gmail.com>,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-2-dpsmith@apertussolutions.com>
 <1e3d6e99-37df-4824-8702-3e8ae7a4923f@amd.com>
 <87f57db3-3784-47b2-a923-ca09cfee91b2@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <87f57db3-3784-47b2-a923-ca09cfee91b2@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/8/24 02:41, Jan Beulich wrote:
> On 07.10.2024 19:57, Jason Andryuk wrote:
>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>> --- /dev/null
>>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>>> @@ -0,0 +1,29 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> +/*
>>> + * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
>>> + * Copyright (c) 2024 Apertus Solutions, LLC
>>> + * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
>>> + */
>>> +
>>> +#ifndef __XEN_X86_BOOTINFO_H__
>>> +#define __XEN_X86_BOOTINFO_H__
>>
>> I haven't been following closely, but I think if we follow Frediano's
>> naming scheme, it would be:
>> ASM__X86__BOOTINFO_H
> 
> The new scheme became "official" only after Daniel posted the series, by me
> actually committing what previously was only a proposal (coming from Bugseng
> originally, as a result of long winded discussions). But yes, now that it's
> official new headers ought to adhere to it.

Ack.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:25:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:25:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814374.1227924 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUoV-0004au-D5; Wed, 09 Oct 2024 11:25:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814374.1227924; Wed, 09 Oct 2024 11: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 1syUoV-0004an-A2; Wed, 09 Oct 2024 11:25:07 +0000
Received: by outflank-mailman (input) for mailman id 814374;
 Wed, 09 Oct 2024 11: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=wCqp=RF=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1syUoU-0004ah-3w
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:25:06 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on2062b.outbound.protection.outlook.com
 [2a01:111:f403:2414::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 204b78fd-8631-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 13:25:03 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by SJ2PR12MB7823.namprd12.prod.outlook.com (2603:10b6:a03:4c9::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Wed, 9 Oct
 2024 11:24:58 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%5]) with mapi id 15.20.8026.020; Wed, 9 Oct 2024
 11:24: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: 204b78fd-8631-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=kB45s9DAWYBGKitDIwWPHErFqAH8tz4Pea2JCZlLs0jcuOi/k8eCzM+dpLIvQAPk/hoVjgGpB8iFRrV9qz0b0zUFrQR59sckyCXQmyA8NITycJZnaBdGVR6nekmuhxa9NS/i+e5twWcfLJ66XE+wtYqLxn+rZR9SQTcDOD+RDpJztdtDZwg3G9+0pzz7j0gnd6/BHsK05psNTx7cDiHX3qDqsiC+3t1E0pLNhXTBECeLZg3aQ/czm6JnQOfa3OaZWWIMk6kann/tCXEnhvw7O0gTIvP0q6BRB0b4ekmuKt2PM97NgjBWOl6aNcD6H7mZyqn5owfq6wYL2Il+EDFQCg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=riu8HWjqa4InVj9zFGeHqoBn4+hudaVwmcJhwBovG7w=;
 b=OsBcISy1A8GTB+yb5/KZWmaMQrq17+ZRkwIbfn9BEmLb7EpQwOLR3q8NCY/JW7bW9IusRRn0/Z1NkpuO2DL/UFgjbQ37Ua4AK0JiHfcsJFcY74FRgwSRAUU3cy4InNRNEnFCG1h/ETWrvEwNCxOqMleoZ/oFxmlkpZkFrgp2FvGi7OGG5kT5gqU5/8rf/p/WRvlZrzWbFDsmhNj7h+pTDj0dMxKDPo45tbAfbTtOFLsm+lIo6up0HQmDldS7pcLtbNW1T6F274tcnx93wKnmhTBm7RQletoVxIU9Mz+4eZABy3LlAK22vpDkkWH8YPTHAQT7QYw5kbkwOtNx9e12MA==
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=riu8HWjqa4InVj9zFGeHqoBn4+hudaVwmcJhwBovG7w=;
 b=iTq2WY38257X8zxFCaALGZXJuM29VYTMkUhpDKh0kYPzoXc0f6vbQrZ35LnBULA4F5j2+zGdRgievVpDcqrVTkjSbgzXoLEKlApyQq93IkHhqk58Yr+kdLjAcAlprs+eqlFjpHvzK+MUAnES1cNuDeotXzSeGseBHJBn0lJ4aCk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <451c092a-af4b-40f4-a902-28f6f502d39a@amd.com>
Date: Wed, 9 Oct 2024 12:24:52 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Content-Language: en-GB
To: Bertrand Marquis <Bertrand.Marquis@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
 <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LNXP265CA0001.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:5e::13) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|SJ2PR12MB7823:EE_
X-MS-Office365-Filtering-Correlation-Id: a48caf80-c27c-4153-85b2-08dce85501a9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VkdWcU1XN3RzVGlmSjJLNEFUdTQ5N1FRQjZvQkFOUkNEc1lZblpiNmdyT1B2?=
 =?utf-8?B?cU51dTlDUWhjQUZtZS9Va2RsK0hDaVVsZ3dKOEhheCtuUTRyem80dXJBbW44?=
 =?utf-8?B?NnBpNUxOeXY5eXVLQUd1TWs3YlNteXk0NG8xODJMeGlHS3RTS2JZd1l4YWZE?=
 =?utf-8?B?LzBoenhmT1hJVmQzQ21CaGVBMDhZbmJIc3Q2SGoxaEJPdnVERU1ENE9PK1c3?=
 =?utf-8?B?c3J0aG84Qk5MMzYyeVJBemtrZUNHQXp4QmtUbXFySEcvdFVxRHBaOGpiZUJ5?=
 =?utf-8?B?MEsrRkdzRTFmenhZdVcvaXRkcjlwN2tPdWxMRExuR1dxZ3NrdGdHeSswQVlt?=
 =?utf-8?B?Q0RwUG9SL2xJRDE0MGN6a3pzR3Zzcmt4YlMydXF4TzVIbmxxSHBMMUR4VTBz?=
 =?utf-8?B?emJLdi8zN0ZRQ2l5bnArdENpOVFremE5VUxXZStyaXJZc1BBMWNqT3psQjdq?=
 =?utf-8?B?aVRhY1lrKytnK2JvcEpzczZLSE03LzExSjFwZ0dmMUNlbXpQd2ZYVTVVdW9U?=
 =?utf-8?B?R1kyU0lyODFaaGp3WW1Rb3ZEcGhoZlh6T0xoRUJpcXNZNWtjb0FPa1hnR0Np?=
 =?utf-8?B?bExDYnVlS1IrcDlmOTdreUc2d2hibzNMcmFkRGhaSGoyQXFGTnFZb2xZRXow?=
 =?utf-8?B?YkkzV1QzMzZoWXE1bHI3TFZoSmkrakFaMHlEZFlWWGFULy94UlFYdDNIcTJn?=
 =?utf-8?B?ekQvdDB3SDhmbEdBSXZ0Vk1zK0tXWmNPRkdUb1IrUmVDbWtncnI4dWtTdGxs?=
 =?utf-8?B?VjNjMHU3ZmRHcjluNHM4d3NJMXhDSENPMHpSdzAzUEdtNHdOYmFXcmRaQkxy?=
 =?utf-8?B?Ylc5MXQvMDdqZmRDeEFmRUhTdkhxdWtXMlNuaEtrSmZKTkxocmF2ODlXV0I4?=
 =?utf-8?B?OG43QW1IWjRueVRlSk9pb0l2SUhHTHB1d3FtWkJPWE9Ed3ZEMUxKUEI3aGdW?=
 =?utf-8?B?Qlplbm5ScTFTN1U3THp2TkN0bk96ZFBDQzFWTmNSaklPU2d1N3JCeE9aWXdn?=
 =?utf-8?B?L1B6aVpzaHpDZzNvMXFZWko3OG1Jd01nZ3ZEVzhHVDdUMS9ZbzBmY1ZlMUlP?=
 =?utf-8?B?MXVKd2twMXVNRURmYXFhMitPL0ZWVkMvS3VVM25sdjhrcnNhTndzVEg2M3h0?=
 =?utf-8?B?WGRwYmV1ZnRSblhKSllBNFkzdG4yWlpVQkdDdlpVODFPdE04dDVIc0cyMlVQ?=
 =?utf-8?B?WWlRa3MzSElLMzdLVFlhU2pDN2tlemk3bkxvYTFyVVFXY0drSkI3bFpNdmRv?=
 =?utf-8?B?UkVMVHN2NFlVWTM2cU1wVmFPdjdRTGd5MytRRFBTSjZnR1UrQk5wRWJsWjAw?=
 =?utf-8?B?REZxY2ExQWJZWGYyaUdpRDV3RFVTREZjUTJSdmxaOUYwTGw5MGlIOC9Wcitt?=
 =?utf-8?B?QlJOVW9Zem00b1gyNE9KMStGaUVNK1NqYzB0VXBiY0ltQnY3SlIrMStqcjF6?=
 =?utf-8?B?QXFWUHZPZFZRVzlUa3hpbFNNV1FWQ3EwZG9ocUdxeTBjbEtWbFpvRXI4SEhO?=
 =?utf-8?B?ODc4ZFA5THhJTlM3ZlZqME1yOFNTQ1dKZ1lMWjBNNEZEV0lZc0haYmRDMDJk?=
 =?utf-8?B?MXk0SzZNNEd4OHNaSGF0TlErc0Y0bVloNEQwOFBKb2RIcW4wWEV1TDN0eTlY?=
 =?utf-8?Q?W+bNGCaByQEwTyTi8kUn77AG6OKUFuLEg+O/wHmVo19k=3D?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RkxQYmhJVmhCM0o2Zzc5VnJ4SnRsck5qcTFnZ2Q5Qnp0NVJHdWJQRkFRSFF5?=
 =?utf-8?B?N2dNRDVnelVneXZhN256K3NzMVRTdWZLUGlkaFI2d3VoK3FJUGpmWnNSb0VI?=
 =?utf-8?B?RmtKdXhMYU9wVlJ3N1NNZkxyaGtSNE80WEMycDJsZ2xIc3RZSXJBU0l6STh4?=
 =?utf-8?B?bEFvZTJrdUVqV2Z0RnBEOVU2eU5RbTFYNUVwaTNnSWtqV2dHRUljb3pWOTNj?=
 =?utf-8?B?VmV3QXN0UUllTGk3emJvT0dYR2hhdmZJK1dHei9GNnY2MzBiR3dUc1ZxZXR4?=
 =?utf-8?B?NmcrazErYjMyZTVIektuYkp6Y09QVTRYUVJBTmNVNzFCTnJIdjB3MzJRUXlF?=
 =?utf-8?B?aTViekN3SnBQQ1FTeGRkTWdTUVozTElUdzQxV2hiMjl2NVNmc3k3cmFCcnlV?=
 =?utf-8?B?b1JQK2g3V1ZIcUFBeWlpT3V6UzRiSjNmQkFwR2lZOUxDTTZQVUNiUVRka3BW?=
 =?utf-8?B?bTgraEpBU0VzNWVFYlVJU21hbFB3ak9keVcwOGozY2FON0dSVjBuTUdQaHQv?=
 =?utf-8?B?RUs3VUp6QzMvNFBIRFVsWlA5b2IwSC82R2lBZzFSeGd5VzlKRXlwTWFaNkFN?=
 =?utf-8?B?cTNEZjBpemRHNVplQ2Z0QTc3SWNEbU5GV1QyLzdscXNhQStQLzhCaWkwZzgv?=
 =?utf-8?B?K1RDUG9HL1BadVNxZjBWeTlpS0xSZjBRQmMxYVZVUXloRXN4aS9tazlVYkE3?=
 =?utf-8?B?WHRUT0UwcHp6aXVUQktYNi9mV2F5ZlBEWGpVQ0huejZFelhuQ3lMSFZpSDh4?=
 =?utf-8?B?c1BjdkpBeGVFNUphV1RxU0dEcHlDZXV0T01XeXBuaWtGdE9OVzc3b200YlB1?=
 =?utf-8?B?SlJJMlNmRW8wTmVTRThqZ0MvZFJLMmtFeVdFUk1XZVNlM2RueDNxa2UwWi9K?=
 =?utf-8?B?ZEdNakVhZ2pBUVpDbGNZaDhpUTR1ajk5M2pYbFJqcDQ5SzU0b2tXOFRuRTk2?=
 =?utf-8?B?VSs2bmRHU3I1THVPZVd6UHNhRGIzK3hRS0xJejF1NEd4cmMwUDdQbnNKaU05?=
 =?utf-8?B?a05ISkZoRWttTnBvTVVVUllLWFNqM2JXRGY4NjNhTkFMQzVJL2xMR3dyTXZN?=
 =?utf-8?B?TGxOanZxaHdkeUd0UmQrQUFJNnd5d0dabEFUSkQwUTZHaGs4ZlNGUFIranBU?=
 =?utf-8?B?dzIrZG1PUDkwdUdNM05mdkd6cTlwQTQ2cHM1Q2hJWTJaYVJCNzVQSUZJeGZ5?=
 =?utf-8?B?YktuZkZ2TW4xTzRvTDM0UmdQaDFxR01XemVaOXM1dDIzRE02SUxNY1JzZTh4?=
 =?utf-8?B?S3ZWbEc4b2ZWYWEwK3k0L1R3V0tlME5qTFlmdFdZQ2xLaHZlNklEei9PTVBP?=
 =?utf-8?B?VTBzOTM4Q0E4Q2xuMmsxVGFlNWp3dEdiS2ZmTVZIRy9SOUdGNkdwQU5CUzBi?=
 =?utf-8?B?cVdoTzl0SUl1N0t4TjBRVXRpOWRZMUVwWStHMkRnOTBQdjBrOUh2K0JtRElQ?=
 =?utf-8?B?QURtcXU5a3pib2xxcFVrdlIwYmh3TWp0aTQzYWhiWERKcHJxd3lmUmtDbUps?=
 =?utf-8?B?aTJwVEJVV3QxK2I5ZWsrR1E0U1pwa2RlQmt1b2tzcVFmY2NuWmVoT1BKbEhw?=
 =?utf-8?B?Nkd4NVZHM0lEdk0vSTlmdWRrYy95MHlBMytMT3lMWDVsSEdvd3ZHcU1ZNThq?=
 =?utf-8?B?TEh0Z3lsckpudHMrNU0wVlFIeDkwQkdrZjZvUldaN3pVTVh5YU42KzlEQlRV?=
 =?utf-8?B?T1M1Rm5sQ0ZwN0RiM2t3b2pRajh5TFdZY3lwTEZkbG5DdTRjL0NKSlJ6MGZ6?=
 =?utf-8?B?WUtGQTJHMm85QWFpcG1nRGpPcTN3YzJEMlo4YmgwZlBXR21zYlhiM1R4NHNa?=
 =?utf-8?B?VlRweUYxcm1pek5jOUVtdGk4TThSVEtyRkhtcFBRVUR0dXpoQktJaXdCaUFU?=
 =?utf-8?B?NUc4MFc5ZVNwK0dMN3RhMkd0WWZBVkl5ejdCaHNMMUY3VVhlRHJ6aWNUTFBP?=
 =?utf-8?B?NHNkN0ZrVi9FaDJQOUZEb1BzMGhOQTZIWlkzL2pYRjZvUTkxNlp0amRzUjFr?=
 =?utf-8?B?aFA2SWY5SCttb0NuNHlZZkRkYXpuVVdhU2tENkFkSW1admxHc1Njc08zcnd3?=
 =?utf-8?B?VE9BNWVPOWZTR21ITjl4bGEyZElpb2dDNEJXYkVtOTVuVkVvT29UdGF3NTBK?=
 =?utf-8?Q?8DQaO9OXbq0JsEAxSetTh0UHp?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a48caf80-c27c-4153-85b2-08dce85501a9
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 11:24:57.9939
 (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: L3RQUc6Ov/Ao68WQ8gnz43nAGYU7W2qHjbwh+Pua3UA+YesaWBw3gv64HCe+UMnw2naRFFMd6WPExI2ZtgDibQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7823

Hi Bertrand/Stefano/all,

Let me know if the explanation makes sense.

On 09/10/2024 07:30, Bertrand Marquis wrote:
> Hi Stefano,
>
>> On 9 Oct 2024, at 00:46, Stefano Stabellini <sstabellini@kernel.org> wrote:
>>
>> On Tue, 8 Oct 2024, Oleksandr Tyshchenko wrote:
>>>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
>>>>>
>>>>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>>
>>>>> Add common requirements for a physical device assignment to Arm64
>>>>> and AMD64 PVH domains.
>>>>>
>>>>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>> ---
>>>>> Based on:
>>>>> [PATCH] docs: fusa: Replace VM with domain
>>>>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
>>>>> ---
>>>>> ---
>>>>> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>>>>> docs/fusa/reqs/index.rst                      |   1 +
>>>>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>>>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>>>> 4 files changed, 428 insertions(+)
>>>>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>>>>
>>>>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>> b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>> new file mode 100644
>>>>> index 0000000000..a1d6676f65
>>>>> --- /dev/null
>>>>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>> @@ -0,0 +1,365 @@
>>>>> +.. SPDX-License-Identifier: CC-BY-4.0
>>>>> +
>>>>> +Device Passthrough
>>>>> +==================
>>>>> +
>>>>> +The following are the requirements related to a physical device
>>>>> assignment
>>>>> +[1], [2] to Arm64 and AMD64 PVH domains.
>>>>> +
>>>>> +Requirements for both Arm64 and AMD64 PVH
>>>>> +=========================================
>>>>> +
>>>>> +Hide IOMMU from a domain
>>>>> +------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall not expose the IOMMU device to the domain even if I/O
>>>>> virtualization
>>>>> +is disabled. The IOMMU shall be under hypervisor control only.
>>>>> +
>>>>> +Rationale:
>>>> I think there should be a rationale here to explain why we do not want the
>>>> IOMMU
>>>> in particular to be assigned to a domain.
>>>
>>> ok, will add. I propose the following text:
>>>
>>> Xen having the whole picture of the host resources and device assignment
>>> unlike the individual domain makes use of the IOMMU to:
>>> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also known as
>>> stage-2 (or 2nd stage) address translations for DMA devices passed through to
>>> domains and Interrupt Remapping on AMD64 platforms.
>>> - provide access protection functionalities to prevent malicious or buggy DMA
>>> devices from accessing arbitrary memory ranges (e.g. memory allocated to other
>>> domains) or from generating interrupts that could affect other domains.
>>>
>>>
>>>> Added to that, I am not completely sure that there is a clear way to test
>>>> this one
>>>> as for example one could assign registers not known by Xen.
>>> I am afraid you are right, valid point. For example, on Arm64, if there is no
>>> corresponding driver in use, we will end up exposing IOMMU dt node to Dom0.
>>>
>>>
>>>> Shouldn't this requirement in fact be an assumption of use ?
>>> Assumption of use on Xen? From my PoV sounds reasonable, will do.
>> In my view, this does not qualify as an Assumption of Use, as it does
>> not align with the definition we have used so far. If we were to
>> categorize this as an Assumption of Use, we would need to change the
>> definition.
>>
>> We have defined an Assumption of Use as something Xen expects from the
>> rest of the system for it to function correctly, such as being loaded at
>> EL2. On the other hand, 'Requirements' refer to behaviors we expect Xen
>> to exhibit.
>>
>> Our goal is for Xen to configure the IOMMU at boot using the stage 2
>> translation, and to ensure that Xen prevents domains from altering the
>> IOMMU configuration. These are specific expectations of Xen's behavior,
>> so I believe they fall under Requirements and should be validated in
>> some way.
>>
>> However, we could adjust the wording. For example, we might replace the
>> negative phrasing with a positive requirement, such as: 'Xen shall
>> configure the IOMMU at boot according to the stage 2 translation
>> tables.' There is no need to explicitly state that the IOMMU is not
>> exposed to guests, as nothing is exposed unless explicitly allowed or
>> mentioned. We could, however, include a brief note about it for clarity.
> I agree that this is the right way to turn the requirement into something
> that Xen shall do.
>
> Now i think we will need to have a discussion to clear up what to do with:
> - assumption of use

Assumption of use is something that other software/hardware components 
need to do to ensure the correct behavior of Xen.

For eg 1) AoU on hardware :- The hardware needs to support NS-EL2. The 
hardware needs to have GICv3, SMMUv3 as these are in the scope of safety 
certification. The hardware needs to have Cortex-A53  r0p4 as these have 
some errata fixes which affect Xen.

2) AoU on bootloader/firmware - 1) Bootloader/Firmware needs to load Xen 
in NS-EL2 mode. 2) Bootloader/Firmware needs to initialize DDR

3) AoU on compiler - 1) The GCC version used should be 5.1 or later.

4) AoU on domain - 1) Domains should not use HVC DCC registers as Xen 
does not emulate them.

The AoUs can either be tested or need to be stated explicitly in the 
safety manual.

> - "integrator" (word always problematic in Fusa as usually use to bail out
> and give responsibility to someone else) shall and shall not do (for example
> giving access to IOMMU registers to a domain)

The responsibility with the integrator lies for things which cannot be 
tested. For eg Xen has to be built with a particular configuration (eg 
SMMUv3) or a specific CPU errata. Integrator should provide at the most 
X amount of memory for each domain. SMMU (or any specific device) should 
not be assigned to a domain (which should be under Xen's control).

For some of the AoUs which cannot be tested (eg Bootloader/Firmare needs 
to initialize the DDR, CNTFRQ_EL0 needs to contain the correct system 
counter frequency), the responsibility will lie with the integrator.

> - interface and what we expect a domain will do with it

This should be covered as part of AoU on domain. We can have more 
examples of this in near future.

Kind regards,

Ayan



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:28:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:28:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814383.1227934 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUrb-0006R2-UW; Wed, 09 Oct 2024 11:28:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814383.1227934; Wed, 09 Oct 2024 11:28: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 1syUrb-0006Qv-RT; Wed, 09 Oct 2024 11:28:19 +0000
Received: by outflank-mailman (input) for mailman id 814383;
 Wed, 09 Oct 2024 11:28: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syUrb-0006Qp-0Y
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:28:19 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 933f5e22-8631-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 13:28:17 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728473290266242.10071680718363;
 Wed, 9 Oct 2024 04:28:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 933f5e22-8631-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728473291; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=b9rbYzIWB0FK/3ke1XqQ7G4XyNSCtOf8DuyRx2xaSZSBht42ueEmi3Wx5JJhWnuiNgr9cpmRjcLiazVU3G6C+Oum7BSZDTlUXW22KmYCyurMLwk7eq9uNO1VLXFr/E3ojrGVjt2yByuzkZ0pHm+jcKptMmPpBFz4UQcCDKWamBw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728473291; 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=cQnkfH27S40SgWUUv2Zh0VqoE9tFT41RK/y4GBXUTiU=; 
	b=Kq9zuz8jIC/qOmAkE87/3JCREn9e7LbnWGC5VrkX4tEafafSzKOUH1J8cfUHwXa9fY2kXbmIw6SNs8ipbN4sRnC3BzAY58FtGjlmGz6KY4Lpl6Lbv59aArGBzxTCZUArpeaplAQL7m68H2Vcp26wPkm+jvf+K3guWCjigPwZZfE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728473291;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=cQnkfH27S40SgWUUv2Zh0VqoE9tFT41RK/y4GBXUTiU=;
	b=BGTvirDveS6YUoUFrUjksuheJGV8GM76d9DpM/pLjK7J4H8mtYpe6Hun21bRF+0R
	0Le9gHNr11EHR0nP+xhKCrGCuYmMYs5ByXLIcesQdr/k869shXl6l/CNkE21W5Pqwx+
	1jNAKnrvSrZvqm1OZu1qBDkrdWIxGFPquYk1R9Qo=
Message-ID: <b73bde1c-80a0-4d06-9c17-bbc408e368f1@apertussolutions.com>
Date: Wed, 9 Oct 2024 07:28:08 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 03/44] x86/boot: move cmdline to boot info
To: Jan Beulich <jbeulich@suse.com>, Jason Andryuk <jason.andryuk@amd.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-4-dpsmith@apertussolutions.com>
 <304c8c42-cfb7-4b0b-aaa7-8c673f9f2fa6@amd.com>
 <543a0931-e0a8-40be-98f9-fcb4e228a80b@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <543a0931-e0a8-40be-98f9-fcb4e228a80b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/8/24 02:42, Jan Beulich wrote:
> On 07.10.2024 20:09, Jason Andryuk wrote:
>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>> Transition Xen's command line to being held in struct boot_info.
>>>
>>> No functional change intended.
>>>
>>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>
>>>    #endif /* __XEN_X86_BOOTINFO_H__ */
>>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>>> index aafc098ca268..0921f296075f 100644
>>> --- a/xen/arch/x86/setup.c
>>> +++ b/xen/arch/x86/setup.c
>>> @@ -274,6 +274,8 @@ static int __init cf_check parse_acpi_param(const char *s)
>>>    }
>>>    custom_param("acpi", parse_acpi_param);
>>>    
>>> +static const char *cmdline_cook(const char *p, const char *loader_name);
>>
>> Is there a reason not to move cmdline_cook() (and loader_is_grub2())
>> earlier to avoid this forward declaration?
> 
> At a guess: To limit churn?

Correct.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:28:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:28:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814384.1227944 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUrf-0006hQ-4D; Wed, 09 Oct 2024 11:28:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814384.1227944; Wed, 09 Oct 2024 11:28: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 1syUrf-0006hH-1D; Wed, 09 Oct 2024 11:28:23 +0000
Received: by outflank-mailman (input) for mailman id 814384;
 Wed, 09 Oct 2024 11:28: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syUrd-0006Qp-Fy
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:28:21 +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 963ba5a4-8631-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 13:28:20 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso686181066b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 04:28:20 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5d0a32sm657082766b.19.2024.10.09.04.28.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 04:28:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 963ba5a4-8631-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728473300; x=1729078100; 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=LaLx4ecvJZpkxuoQw9EDgwyRvR8g60pkuNUHE4FE/po=;
        b=Ivk8nTx/7hx5IOjttSSBEu+puQOFmmJDg6EgIYp8b8GFS6sLDUkYnODhrMUpQSfcJc
         geISd5mzO8okSnxs4CdrKmPwWUJafDTRzKsLXWGxEPKUHf6k+8uvEYl+Mi7qHmC3fVJm
         J77NAF/CxcZuofODGoGq3dviP63/jWl2GZMghh9kpcTOHd8kjON8j83E/zczu5YTFvsw
         zX4DGgDkai4ckCG8YjtQQK+Ev8AtZva4NtJJ14Oef7A+rdeRvYT2Nin2eS6M8U5cPmWY
         HtEAAOkPFTO1+n/pHF2ywF1aVm9GguVNbu1ERajbrf5u3GBTvgV20Ftk53YzRLCsW03T
         4qWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728473300; x=1729078100;
        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=LaLx4ecvJZpkxuoQw9EDgwyRvR8g60pkuNUHE4FE/po=;
        b=w/swqGsVSNsgK5EL9m4cNGHfi0otcCpWPgnZuul+xtypRk9IbbPWO01/IvAOyOBLef
         AN5uRFInn/kKJo75Xx/7kAQVl6SqCWCxw/7Hmm3vD/3+/OaodgPtcZ3VuLb9C2/34WBG
         zt7YpzQx7P78cW7j1EGkZmH9XUdu6nlOJVuHyhdbZRHygSByXIFNPKX2buW10szWb/UH
         Yv66EA/YWfBLPCsEfFzYuPegQ8mPY5kecf2Jgw+WCVqj3Sxi7e9LK8D9Kf3O3NH6V/sj
         XqNqf79TkFZDHaMq2eTDlwnTCub0nd94TssdPiByBcCwnypgSPMOa4ZQShKkrpjBOvq3
         mIqg==
X-Forwarded-Encrypted: i=1; AJvYcCUi2GFBIpdRpW2eSdgzdd77qoqTgIJekmzjvBd4lp8l/T4YxjA+UNNkplxx+0+rjHVDhKPs6L4KfoA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz9loVZoErhtzT9jzdG0xu0CbugBAwdcAN063iqRe82cg0b6tjY
	7kkiea9rQozeC5b6sjyaM11Mgs4VvrQMClBo86aRrVyEzcp57XA+lTcaNB89JA==
X-Google-Smtp-Source: AGHT+IHNnaSd6UshTzx2g/c446AgjvfxbOawJzs70GoZ53f4U0xfzC3OrdsT1Zj6RBnBEplWNfu6dA==
X-Received: by 2002:a17:907:e264:b0:a99:75b1:57b5 with SMTP id a640c23a62f3a-a998d314229mr180322366b.43.1728473299847;
        Wed, 09 Oct 2024 04:28:19 -0700 (PDT)
Message-ID: <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>
Date: Wed, 9 Oct 2024 13:28:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, xen-devel@lists.xenproject.org
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
 <ZwZlVlU2nHkBedyo@macbook.local>
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: <ZwZlVlU2nHkBedyo@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 13:13, Roger Pau Monné wrote:
> On Wed, Oct 09, 2024 at 12:52:29PM +0200, Jan Beulich wrote:
>> On 09.10.2024 10:03, Roger Pau Monné wrote:
>>> On Tue, Oct 08, 2024 at 04:01:28PM +0200, Jan Beulich wrote:
>>>> On 08.10.2024 12:47, Roger Pau Monne wrote:
>>>>> IVMD table contains restrictions about memory which must be mandatory assigned
>>>>> to devices (and which permissions it should use), or memory that should be
>>>>> never accessible to devices.
>>>>>
>>>>> Some hardware however contains ranges in IVMD that reference devices outside of
>>>>> the IVHD tables (in other words, devices not behind any IOMMU).  Such mismatch
>>>>> will cause Xen to fail in register_range_for_device(), ultimately leading to
>>>>> the IOMMU being disabled, and Xen crashing as x2APIC support might be already
>>>>> enabled and relying on the IOMMU functionality.
>>>>
>>>> I find it hard to believe that on x86 systems with IOMMUs some devices would
>>>> be left uncovered by any IOMMU. Is it possible that IVHD is flawed there? In
>>>> which case we might rightfully refuse to boot? (Can you share e.g. that
>>>> "iommu=debug" output that results from parsing the tables on that system?)
>>>
>>> I'm afraid I don't have any of such systems to test myself, however I
>>> have the contents of IVRS:
>>>
>>>   ACPI Table Header
>>> ------------------------------------------------------------------
>>> Signature          : IVRS
>>> Length             : 0x000001F8
>>> Revision           : 0x02
>>> Checksum           : 0x06
>>> OEM ID             : AMD  
>>> OEM Table ID       : AmdTable
>>> OEM Revision       : 0x00000001
>>> Creator ID         : AMD 
>>> Creator Revision   : 0x00000001
>>> IVinfo             : 0x00203043
>>> 	  IVHD
>>> 	----------------------------------------------------------------
>>> 	Type                  : 0x10
>>> 	Flags                 : 0xB0
>>> 	Length                : 0x0044
>>> 	IOMMU Device ID       : 0x0002
>>> 	Capability Offset     : 0x0040
>>> 	IOMMU Base Address    : 0x00000000FD200000
>>> 	Segment Group         : 0x0000
>>> 	IOMMU Info            : 0x0000
>>> 	IOMMU Feature Info    : 0x80048F6E
>>> 		  Range
>>> 		--------------------------------------------------
>>> 		Type                  : 0x03
>>> 		Start of Range        : 0x0003
>>> 		End of Range          : 0xFFFE
>>> 		DTE Setting           : 0x00
>>> 		  Alias Range
>>> 		--------------------------------------------------
>>> 		Type                  : 0x43
>>> 		Start of Range        : 0xFF00
>>> 		End of Range          : 0xFFFF
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x00A5
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x00A0
>>> 		Handle                : 0x00
>>> 		Variety               : HPET
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0xD7
>>> 		Source Device ID      : 0x00A0
>>> 		Handle                : 0x21
>>> 		Variety               : IOAPIC
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x0001
>>> 		Handle                : 0x22
>>> 		Variety               : IOAPIC
>>> 	  IVHD
>>> 	----------------------------------------------------------------
>>> 	Type                  : 0x11
>>> 	Flags                 : 0x30
>>> 	Length                : 0x0054
>>> 	IOMMU Device ID       : 0x0002
>>> 	Capability Offset     : 0x0040
>>> 	IOMMU Base Address    : 0x00000000FD200000
>>> 	Segment Group         : 0x0000
>>> 	IOMMU Info            : 0x0000
>>> 	IOMMU Feature Info    : 0x00048000
>>> 		  Range
>>> 		--------------------------------------------------
>>> 		Type                  : 0x03
>>> 		Start of Range        : 0x0003
>>> 		End of Range          : 0xFFFE
>>> 		DTE Setting           : 0x00
>>> 		  Alias Range
>>> 		--------------------------------------------------
>>> 		Type                  : 0x43
>>> 		Start of Range        : 0xFF00
>>> 		End of Range          : 0xFFFF
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x00A5
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x00A0
>>> 		Handle                : 0x00
>>> 		Variety               : HPET
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0xD7
>>> 		Source Device ID      : 0x00A0
>>> 		Handle                : 0x21
>>> 		Variety               : IOAPIC
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x0001
>>> 		Handle                : 0x22
>>> 		Variety               : IOAPIC
>>> 	  IVMD
>>> 	----------------------------------------------------------------
>>> 	Type                                 : 0x22
>>> 	Flags                                : 0x08
>>> 	Length                               : 0x0020
>>> 	DeviceID                             : 0x0000
>>> 	AuxiliaryData                        : 0x0FFF
>>> 	Reserved                             : 0x0000000000000000
>>> 	IVMD Start Address                   : 0x0000000096191000
>>> 	IVMD Memory Block Length             : 0x0000000000000022
>>> 	  IVMD
>>> 	----------------------------------------------------------------
>>> 	Type                                 : 0x22
>>> 	Flags                                : 0x08
>>> 	Length                               : 0x0020
>>> 	DeviceID                             : 0x0000
>>> 	AuxiliaryData                        : 0x0FFF
>>> 	Reserved                             : 0x0000000000000000
>>> 	IVMD Start Address                   : 0x0000000097D9E000
>>> 	IVMD Memory Block Length             : 0x0000000000000022
>>> 	  IVMD
>>> 	----------------------------------------------------------------
>>> 	Type                                 : 0x22
>>> 	Flags                                : 0x08
>>> 	Length                               : 0x0020
>>> 	DeviceID                             : 0x0000
>>> 	AuxiliaryData                        : 0x0FFF
>>> 	Reserved                             : 0x0000000000000000
>>> 	IVMD Start Address                   : 0x0000000097D9D000
>>> 	IVMD Memory Block Length             : 0x0000000000000022
>>> 	  IVHD
>>> 	----------------------------------------------------------------
>>> 	Type                  : 0x40
>>> 	Flags                 : 0x30
>>> 	Length                : 0x00D0
>>> 	IOMMU Device ID       : 0x0002
>>> 	Capability Offset     : 0x0040
>>> 	IOMMU Base Address    : 0x00000000FD200000
>>> 	Segment Group         : 0x0000
>>> 	IOMMU Info            : 0x0000
>>> 	IOMMU Feature Info    : 0x00048000
>>> 		  Range
>>> 		--------------------------------------------------
>>> 		Type                  : 0x03
>>> 		Start of Range        : 0x0003
>>> 		End of Range          : 0xFFFE
>>> 		DTE Setting           : 0x00
>>> 		  Alias Range
>>> 		--------------------------------------------------
>>> 		Type                  : 0x43
>>> 		Start of Range        : 0xFF00
>>> 		End of Range          : 0xFFFF
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x00A5
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x00A0
>>> 		Handle                : 0x00
>>> 		Variety               : HPET
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0xD7
>>> 		Source Device ID      : 0x00A0
>>> 		Handle                : 0x21
>>> 		Variety               : IOAPIC
>>> 		  Special Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0x48
>>> 		Device ID             : 0x0000
>>> 		DTE Setting           : 0x00
>>> 		Source Device ID      : 0x0001
>>> 		Handle                : 0x22
>>> 		Variety               : IOAPIC
>>> 		  Variable Length ACPI HID Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0xF0
>>> 		Device ID             : 0x00A5
>>> 		DTE Setting           : 0x40
>>> 		Hardware ID           : AMDI0020
>>> 		Extended DTE Setting  : 
>>> 		Unique ID Format      : 2
>>> 		Unique ID Length      : 9
>>> 		Unique ID             : \_SB.FUR0
>>> 		  Variable Length ACPI HID Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0xF0
>>> 		Device ID             : 0x00A5
>>> 		DTE Setting           : 0x40
>>> 		Hardware ID           : AMDI0020
>>> 		Extended DTE Setting  : 
>>> 		Unique ID Format      : 2
>>> 		Unique ID Length      : 9
>>> 		Unique ID             : \_SB.FUR1
>>> 		  Variable Length ACPI HID Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0xF0
>>> 		Device ID             : 0x00A5
>>> 		DTE Setting           : 0x40
>>> 		Hardware ID           : AMDI0020
>>> 		Extended DTE Setting  : 
>>> 		Unique ID Format      : 2
>>> 		Unique ID Length      : 9
>>> 		Unique ID             : \_SB.FUR2
>>> 		  Variable Length ACPI HID Device
>>> 		--------------------------------------------------
>>> 		Type                  : 0xF0
>>> 		Device ID             : 0x00A5
>>> 		DTE Setting           : 0x40
>>> 		Hardware ID           : AMDI0020
>>> 		Extended DTE Setting  : 
>>> 		Unique ID Format      : 2
>>> 		Unique ID Length      : 9
>>> 		Unique ID             : \_SB.FUR3
>>>
>>> FWIW, I've checked on one of the AMD server systems we have on the
>>> lab, and the IVHD entries are fairly similar to the ones here, as
>>> neither the PCI Host Bridge, nor the IOMMU are covered by any IVHD
>>> block.  That system however doesn't have any IVMD blocks.
>>
>> Mine are a little different. The Dinar (Fam15) has an IVHD entry just
>> for the range 0-2 (host bridge, <nothing>, IOMMU). The Rome (Fam17)
>> has an IVHD entry just for 0 (host bridge), but not for the IOMMU. I
>> think it is entirely reasonable for host bridge(s) and IOMMU(s) to not
>> be covered by any IVHD. They aren't devices that would require
>> servicing by an IOMMU.
>>
>> Looking at the code I think we want to do things a little differently
>> though: Pull find_iommu_for_device() out of register_range_for_device()
>> and have parse_ivmd_device_range() do the skipping when there's no
>> IOMMU for a device.
> 
> What about parse_ivmd_device_select()?  The IOMMU check would also need
> to be duplicated there, which is not ideal IMO.

That's not ideal, but a reasonably small price to pay.

>> Plus error when no device in the range is covered
>> by an IOMMU, or if any two devices are covered by different IOMMUs.
> 
> I'm not sure I understand you last comment: do you mean to return an
> error if a IVMD block range covers devices assigned to different
> IOMMUs?  If that's the case, I'm afraid I don't agree, I don't see
> anywhere in the spec that notes a IVMD block range can apply to
> devices assigned to different IOMMUs.

Hmm, right, I take back that part.

> I also think returning an error when no device in the IVMD range is
> covered by an IOMMU is dubious.  Xen will already print warning
> messages about such firmware inconsistencies, but refusing to boot is
> too strict.

I disagree. We shouldn't enable DMA remapping in such an event. Whereas
the "refusing to boot" is interrupt remapping related iirc, if x2APIC
is already enabled. We need to properly separate the two (and the
discussion there was started quite a long time ago, but it got stuck at
some point); until such time it is simply an undesirable side effect of
the inappropriate implementation that in certain case we fail boot when
we shouldn't.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:32:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:32:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814399.1227954 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syUv7-000108-JI; Wed, 09 Oct 2024 11:31:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814399.1227954; Wed, 09 Oct 2024 11:31: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 1syUv7-000101-FG; Wed, 09 Oct 2024 11:31:57 +0000
Received: by outflank-mailman (input) for mailman id 814399;
 Wed, 09 Oct 2024 11:31: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syUv5-0000zv-Qg
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:31:55 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 140f58ac-8632-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 13:31:53 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728473506234477.29125034308197;
 Wed, 9 Oct 2024 04:31:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 140f58ac-8632-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728473508; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=TQS8ibsyO/Rjj2fIj4kU6qEVhoOUP6XLimOn1La2YtDvkZFlA1sEvN15nvy4uTVtoQCdMd2Vft3B2Hp8udQFLtuVKODMBhZLUnHWVeaakwsQpgtlUmD+4Qteblu2u8dLG6CQWaN3UeYrRV4HxnsudLE9PDJYE2DqIABj4Kalizk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728473508; 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=WvuGkFc4gT/jZq/iUaGx0ApnJE8epyBd9jjJwFEdty0=; 
	b=X070dwy2FMWcOF6nr8mjygb8CUJoF7WnI9R5TItrzZnu147+OJgfSGue4U1+N+W2YBd6OZAqzuT1TsrqNvaBTxVR60LGn2dGkdGIq7Dtko/kJfjgKMYFsh17bTUBj8TidBzMHPGwBRKJwQA1gueaIDjHs8hTJNLGDWfudgqg6g8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728473508;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=WvuGkFc4gT/jZq/iUaGx0ApnJE8epyBd9jjJwFEdty0=;
	b=ly01eEuC4/sf2pSLqvahDAUXhAaYxka5Tkur9MjLOO+9Eucl7rxb6mWeJWI+4hHX
	Yvy9d5q6JrM7NNEuq9dRnOpSAN1q9BVT1pVZ9zTKCOMOAl/HeFn6cO8z+7wOkSyyDHU
	14j7iM2AXL5oQl5Wf1O0hBOGksIqpzBPUex9KTsI=
Message-ID: <da7baad5-148b-4c23-b34f-dad4b7369bf1@apertussolutions.com>
Date: Wed, 9 Oct 2024 07:31:44 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 05/44] x86/boot: introduce struct boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-6-dpsmith@apertussolutions.com>
 <2fa284ee-907d-4899-aa78-82481cfbfc6a@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <2fa284ee-907d-4899-aa78-82481cfbfc6a@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 14:29, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> This will introduce a new struct boot_module to provide a rich state
>> representation around modules provided by the boot loader. Support is 
>> for 64
>> boot modules, one held in reserve for Xen, and up to 63 can be 
>> provided by the
>> boot loader. The array of struct boot_modules will be accessible via a
>> reference held in struct boot_info.
>>
>> A temporary `mod` parameter is included in struct boot_module to ease the
>> transition from using Multiboot v1 structures over to struct 
>> boot_module. Once
>> the transition is complete, the parameter will be dropped from the 
>> structure.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootinfo.h | 14 ++++++++++++--
>>   xen/arch/x86/setup.c                |  9 +++++++++
>>   2 files changed, 21 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h 
>> b/xen/arch/x86/include/asm/bootinfo.h
>> index 87d311ac1399..d19473d8941e 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -8,20 +8,30 @@
>>   #ifndef __XEN_X86_BOOTINFO_H__
>>   #define __XEN_X86_BOOTINFO_H__
>> +#include <xen/multiboot.h>
>>   #include <xen/types.h>
>> +/* Max number of boot modules a bootloader can provide in addition to 
>> Xen */
>> +#define MAX_NR_BOOTMODS 63
>> +
>> +struct boot_module {
>> +    /* Transitionary only */
>> +    module_t *mod;
>> +};
>> +
>>   /*
>>    * Xen internal representation of information provided by the
>>    * bootloader/environment, or derived from the information.
>>    */
>>   struct boot_info {
>> -    unsigned int nr_modules;
>> -
> 
> (You should probably re-work the other patches to insert ahead of this 
> and avoid the movement.)

Ack.

>>       const char *loader;
>>       const char *cmdline;
>>       paddr_t memmap_addr;
>>       size_t memmap_length;
>> +
>> +    unsigned int nr_modules;
>> +    struct boot_module mods[MAX_NR_BOOTMODS + 1];
>>   };
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thank you.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:38:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:38:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814404.1227964 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syV1Z-0002jL-7Y; Wed, 09 Oct 2024 11:38:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814404.1227964; Wed, 09 Oct 2024 11:38: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 1syV1Z-0002jE-4b; Wed, 09 Oct 2024 11:38:37 +0000
Received: by outflank-mailman (input) for mailman id 814404;
 Wed, 09 Oct 2024 11:38: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=DqEV=RF=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syV1Y-0002gM-NF
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:38:36 +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 04499f3b-8633-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 13:38:34 +0200 (CEST)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-42e5e758093so59593995e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 04:38:34 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d3b5f88b2sm1256135f8f.59.2024.10.09.04.38.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 04:38:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 04499f3b-8633-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728473914; x=1729078714; darn=lists.xenproject.org;
        h=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=G4VPx/JKa4vgWGeJYSYnFXy2EubNDMVjaRjmRDulg3g=;
        b=A15zGFTE1TpGimojV/JQXixRTMXz2F9qyBNdJfOTJImnN+mVdo1osSkhnIREAOBbVl
         tI4i/n2AJBtptT5rxfgNw9z2iRAZgg72YLNnHPPnVmju246RTqxB5TL8xSOldiFVvWBx
         EAwYeb7dosg5os26FgbO3orb66CZ7Wz9uqYaVIjxxqUz5NsrMmiJEyM7lmPxb9b/xiz7
         SET5lnLQZFvVgzbrqTF9BYqt+8UFqitnS3KPgoDmo7yMwCBO0PA4Ky/i+++T/2nfUuNL
         9bCHHXub3GsHmPwehN8RcK+1hmwu4cSwsaO+MtyEv89xd/iGd7XaD9Y1ZvMsewMc1r3m
         NKMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728473914; x=1729078714;
        h=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=G4VPx/JKa4vgWGeJYSYnFXy2EubNDMVjaRjmRDulg3g=;
        b=F26imEMzYhdnS5ohHZaHFJNNr2EB3VMC+hC3Bs2nTlju3tv6DGENQLp+Fo1FImVogN
         bj42ZEoS1jpyXwVxsrrm3WgmiuvLOlDFEwHN2Kw1s6QoOGGPn2Gyy9HekiStvdn1QGWF
         mLKaSa71hvtDXwkjUEMIZAoJpAjmLABdY9cUpOfIHjV8qSjp1TgN14La8J70buYbwjZA
         W2faGg/bdnlzcipOnr1JBMWddsOM/1BRaGjfFNtFHi8cdrR98q82k+eZ6YSd11qHNEai
         RIh8IoEJZ8fuK83YLfptJ5CWfstmVRD9s8o6f+gkH4Floaox68q2EK+wKNHe+IVEDbtX
         U7FQ==
X-Forwarded-Encrypted: i=1; AJvYcCUifdJVKxVMTlccRU+iHYW+eiuw9BehNTN8G5d4quDXMmHw2wYNq0+Z3Tv1QfWqSc9B1pUC58qw2KQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxaHL2SyNPDajs/dZ/ZCWlRdaIftDJgNbEWyrWPk/9OQaMoToFw
	J4geBJPIIq74QdaQWinFzMum4MLOdh55WaUZd7j3RriyqmgMUg099yXJn+qIyEk=
X-Google-Smtp-Source: AGHT+IFzoogDJD3F85pcVJ9V4wjwncLAqRUjHucbPscl6RgLxWX/qzMcRoZbx8GniGA7kfyOCeg5yQ==
X-Received: by 2002:a05:600c:3b87:b0:42f:823d:dddd with SMTP id 5b1f17b1804b1-430d59b7ac8mr13011325e9.27.1728473913911;
        Wed, 09 Oct 2024 04:38:33 -0700 (PDT)
Message-ID: <e7ebec95-e6f0-491f-8fb4-afe7ee505b07@suse.com>
Date: Wed, 9 Oct 2024 13:38:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 xen-devel@lists.xenproject.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com> <ZwZScGr75xEolDnS@mail-itl>
 <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
 <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
 <dde4b510-5674-44d0-9493-a0717387b8d6@citrix.com>
 <99089b03-e9f0-4fe8-94b2-11e75f9e5243@suse.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <99089b03-e9f0-4fe8-94b2-11e75f9e5243@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------ZhTuUy9p1XnXhNMAm0owZwO0"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------ZhTuUy9p1XnXhNMAm0owZwO0
Content-Type: multipart/mixed; boundary="------------eZpqWWdo61ab5299oV7VxF8B";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 xen-devel@lists.xenproject.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <e7ebec95-e6f0-491f-8fb4-afe7ee505b07@suse.com>
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com> <ZwZScGr75xEolDnS@mail-itl>
 <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
 <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
 <dde4b510-5674-44d0-9493-a0717387b8d6@citrix.com>
 <99089b03-e9f0-4fe8-94b2-11e75f9e5243@suse.com>
In-Reply-To: <99089b03-e9f0-4fe8-94b2-11e75f9e5243@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------eZpqWWdo61ab5299oV7VxF8B
Content-Type: multipart/mixed; boundary="------------31fYpY1S4q6gqWNoJiToo5Fo"

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

T24gMDkuMTAuMjQgMTM6MTUsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwOS4xMC4yMDI0
IDEzOjA4LCBBbmRyZXcgQ29vcGVyIHdyb3RlOg0KPj4gT24gMDkvMTAvMjAyNCAxMToyNiBh
bSwgSnVlcmdlbiBHcm9zcyB3cm90ZToNCj4+PiBPbiAwOS4xMC4yNCAxMjoxOSwgSmFuIEJl
dWxpY2ggd3JvdGU6DQo+Pj4+IE9uIDA5LjEwLjIwMjQgMTE6NTIsIE1hcmVrIE1hcmN6eWtv
d3NraS1Hw7NyZWNraSB3cm90ZToNCj4+Pj4+IE9uIFdlZCwgT2N0IDA5LCAyMDI0IGF0IDA5
OjE5OjU3QU0gKzAyMDAsIEphbiBCZXVsaWNoIHdyb3RlOg0KPj4+Pj4+IE9uIDA4LjEwLjIw
MjQgMjM6MzIsIE1hcmVrIE1hcmN6eWtvd3NraS1Hw7NyZWNraSB3cm90ZToNCj4+Pj4+Pj4g
LS0tIGEvdG9vbHMvbGlicy9ndWVzdC94Z19kb21fYnppbWFnZWxvYWRlci5jDQo+Pj4+Pj4+
ICsrKyBiL3Rvb2xzL2xpYnMvZ3Vlc3QveGdfZG9tX2J6aW1hZ2Vsb2FkZXIuYw0KPj4+Pj4+
PiBAQCAtMjcyLDggKzI3Miw3IEBAIHN0YXRpYyBpbnQgX3hjX3RyeV9sem1hX2RlY29kZSgN
Cj4+Pj4+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuIHJldHZhbDsNCj4+Pj4+Pj4gIMKgIH0NCj4+
Pj4+Pj4gIMKgIC0vKiAxMjggTWIgaXMgdGhlIG1pbmltdW0gc2l6ZSAoaGFsZi13YXkpIGRv
Y3VtZW50ZWQgdG8gd29yayBmb3INCj4+Pj4+Pj4gYWxsIGlucHV0cy4gKi8NCj4+Pj4+Pj4g
LSNkZWZpbmUgTFpNQV9CTE9DS19TSVpFICgxMjgqMTAyNCoxMDI0KQ0KPj4+Pj4+PiArI2Rl
ZmluZSBMWk1BX0JMT0NLX1NJWkUgKDI1NioxMDI0KjEwMjQpDQo+Pj4+Pj4NCj4+Pj4+PiBU
aGF0J3MgYXMgYXJiaXRyYXJ5IGFzIGJlZm9yZSwgbm93IGp1c3Qgbm90IGV2ZW4gd2l0aCBh
IGNvbW1lbnQgYXQNCj4+Pj4+PiBsZWFzdA0KPj4+Pj4+IGhpbnRpbmcgYXQgaXQgYmVpbmcg
YXJiaXRyYXJ5LiBRdW90aW5nIGZyb20gb25lIG9mIHRoZSBMWk1BIEFQSQ0KPj4+Pj4+IGhl
YWRlcnM6DQo+Pj4+Pj4NCj4+Pj4+PiAgwqDCoMKgwqAgKiBEZWNvZGVyIGFscmVhZHkgc3Vw
cG9ydHMgZGljdGlvbmFyaWVzIHVwIHRvIDQgR2lCIC0gMSBCIChpLmUuDQo+Pj4+Pj4gIMKg
wqDCoMKgICogVUlOVDMyX01BWCksIHNvIGluY3JlYXNpbmcgdGhlIG1heGltdW0gZGljdGlv
bmFyeSBzaXplIG9mIHRoZQ0KPj4+Pj4+ICDCoMKgwqDCoCAqIGVuY29kZXIgd29uJ3QgY2F1
c2UgcHJvYmxlbXMgZm9yIG9sZCBkZWNvZGVycy4NCj4+Pj4+Pg0KPj4+Pj4+IElPVyAtIHdo
YXQgaWYgdGhlIExpbnV4IGZvbGtzIGRlY2lkZWQgdG8gaW5jcmVhc2UgdGhlIGRpY3Rpb25h
cnkgc2l6ZQ0KPj4+Pj4+IGZ1cnRoZXI/IEkgdGhlcmVmb3JlIHdvbmRlciB3aGV0aGVyIHdl
IGRvbid0IG5lZWQgdG8gbWFrZSB0aGlzIG1vcmUNCj4+Pj4+PiBkeW5hbWljLCBwZXJoYXBz
IGJ5IHBlZWtpbmcgaW50byB0aGUgaGVhZGVyIHRvIG9idGFpbiB0aGUgZGljdGlvbmFyeQ0K
Pj4+Pj4+IHNpemUgdXNlZC4gVGhlIG9uZSB0aGluZyBJJ20gbm90IHN1cmUgYWJvdXQgaXMg
d2hldGhlciB0aGVyZSBjYW4ndCBiZQ0KPj4+Pj4+IG11bHRpcGxlIHN1Y2ggaGVhZGVycyB0
aHJvdWdob3V0IHRoZSBmaWxlLCBhbmQgaGVuY2UgKGluIHByaW5jaXBsZSkNCj4+Pj4+PiBk
aWZmZXJpbmcgZGljdGlvbmFyeSBzaXplcy4NCj4+Pj4+DQo+Pj4+PiBXaGF0IGlzIHRoZSBw
dXJwb3NlIG9mIHRoaXMgYmxvY2sgc2l6ZSBsaW1pdD8gRnJvbSB0aGUgZXJyb3INCj4+Pj4+
IG1lc3NhZ2UsIGl0DQo+Pj4+PiBzZWVtcyB0byBiZSBhdm9pZGluZyBleGNlc3NpdmUgbWVt
b3J5IHVzYWdlIGR1cmluZyBkZWNvbXByZXNzaW9uICh3aGljaA0KPj4+Pj4gY291bGQgYmUg
RG9TIHZpYSBPT00pLiBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gdGFraW5nIHRoZSBsaW1p
dCBmcm9tDQo+Pj4+PiB0aGUga2VybmVsIGJpbmFyeSBpdHNlbGYgd2lsbCBtaXNzIHRoaXMg
cG9pbnQgKGVzcGVjaWFsbHkgaW4gY2FzZSBvZg0KPj4+Pj4gcHlncnViIG9yIHNpbWlsYXIs
IGJ1dCB0aGVyZSBtYXkgYmUgb3RoZXIgY2FzZXMgb2Ygbm90LWZ1bGx5LXRydXN0ZWQNCj4+
Pj4+IGtlcm5lbCBiaW5hcmllcykuDQo+Pj4+DQo+Pj4+IEluZGVlZC4gVGhlIHF1ZXN0aW9u
IHRoZW4gc2ltcGx5IGlzOiBXaGVyZSBkbyB3ZSB3YW50IHRvIGRyYXcgdGhlIGxpbmUNCj4+
Pj4gYmV0d2VlbiB3aGF0IHdlIHBlcm1pdCBhbmQgd2hhdCB3ZSByZWplY3Q/DQo+Pj4NCj4+
PiBJTUhPIHRoZSBtb3N0IG5hdHVyYWwgc29sdXRpb24gd291bGQgYmUgdG8gdXNlIGd1ZXN0
IG1lbW9yeSBmb3IgdGhpcw0KPj4+IHB1cnBvc2UuDQo+Pj4gT1RPSCB0aGlzIHByb2JhYmx5
IHdvdWxkIHJlcXVpcmUgYSBzaWduaWZpY2FudCByZXdvcmsgb2YgbGlieGVuZ3Vlc3QuDQo+
Pg0KPj4gVGhhdCB3YXMgWFNBLTI1LsKgIFRoZXJlIGFyZSB0b29sc3RhY2stcHJvdmlkZWQg
bGltaXRzIG9uIGtlcm5lbCZpbml0cmQNCj4+IHNpemVzLg0KPiANCj4gV2hpY2ggcHJvYmFi
bHkgY2FuJ3QgYmUgZGlyZWN0bHkgYXBwbGllZCB0byBkaWN0aW9uYXJ5IHNpemUgdXNlZCBk
dXJpbmcNCj4gKGRlKWNvbXByZXNzaW9uLg0KDQpNeSBwb2ludCBzdGlsbCBzdGFuZHM6IHVz
aW5nIEdVRVNUIG1lbW9yeSBmb3IgYWxsIHRoZSBkZWNvbXByZXNzaW9uIHdvcmsNCndvdWxk
IGF2b2lkIGFsbCB0aGVzZSBwcm9ibGVtcy4gSWYgdGhlIGd1ZXN0IG1lbW9yeSBpc24ndCBz
dWZmaWNpZW50LCBhDQpkZWNvbXByZXNzaW9uIGJ5IGUuZy4gZ3J1YiB3b3VsZG4ndCB3b3Jr
IGVpdGhlci4NCg0KDQpKdWVyZ2VuDQoNCg==
--------------31fYpY1S4q6gqWNoJiToo5Fo
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------31fYpY1S4q6gqWNoJiToo5Fo--

--------------eZpqWWdo61ab5299oV7VxF8B--

--------------ZhTuUy9p1XnXhNMAm0owZwO0
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/Ey8FAmcGazgFAwAAAAAACgkQsN6d1ii/Ey/s
rwf/WUOlbJ7djUGLp58WKksGr57vHT5dYmfGYa5RPBuQ8wFFOhexDUdwXaulix/PPUQdF3dWMEnF
zjLLqqwHRlh/ZD/W9QIT8s8ZnXLc33yWSyza9GwdfJp4AEQLsnHlkKfVmQGXwEQJsRWj7svFz1g9
qdpMHEfBU7VmD9p05L/3LfNvPq6/xkeOn18Wc38cz36Wrveofy32njy3oyspuqZl0myr6DXO8ibI
AdXT+fIGrSwN8jYpFiRFfK5QIH/YUyhHmtnwJ0m163mA6JZJ8y4UPuLwbNnSIBDR58LGl7wrn2Pc
r0i6wQHt+/8Ailim3RszIo6gF8y0lG9WOY/dhlyWxw==
=7K08
-----END PGP SIGNATURE-----

--------------ZhTuUy9p1XnXhNMAm0owZwO0--


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:46:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:46:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814415.1227974 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syV9R-0005sB-4L; Wed, 09 Oct 2024 11:46:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814415.1227974; Wed, 09 Oct 2024 11:46: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 1syV9R-0005s4-18; Wed, 09 Oct 2024 11:46:45 +0000
Received: by outflank-mailman (input) for mailman id 814415;
 Wed, 09 Oct 2024 11:46: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syV9P-0005ry-Hd
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:46:43 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2579497a-8634-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 13:46:41 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728474393609905.6968962697754;
 Wed, 9 Oct 2024 04:46:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2579497a-8634-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728474395; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ey5wCdw5oIgZSdbEFRmpgF7QvgNLhn4WeHc1Hm4x8AxpGOauYr/YM1MA37maYWaocoPnDe2eZ+jZ/RU7PUBLsQ/L8vWiHFWhZfXNS2sNzwcXjbGaZ9bAXNAbF5OgZQPpbonh+CUalGyZPkQ240X72qMyqIq2hjuSpcUIFvhQ8WY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728474395; 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=bV6tpWlJ2Ojq+ybJWQdqpQ0QeU2F/LXY+2Nc3G8IRBQ=; 
	b=esByCf2pgRVsk0waYucCe/aT3dkXieacb8Pae01BEeAfOLy/SmhuzeYEcrGnY/IzlUaTO+7q3/vJLtvH2mPu3EbATkbK6S6vU7ZsKDRsq0woiYBwoD76a/NdgCK4e9+hBv3TPwM4xtUY2IWgTdhK08xkxbUROwhHdk65OqXtzOw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728474395;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=bV6tpWlJ2Ojq+ybJWQdqpQ0QeU2F/LXY+2Nc3G8IRBQ=;
	b=spacrm+a/w8JKW61V46yowWFzPtmESriBb3lbCrRLhJ6GY6dQrd8U9u5DYqs9/Z/
	nm16DBOK9ypmsmonFwyi4R13jWciiS5AGVpCp19trTIMW/D9dKv+UgERJyOAQXTs32w
	LmxwevaDEAJzZriyPzu9q3DF0dscD2gzaYNR+nIA=
Message-ID: <612dda05-f316-49a4-a23c-d30dd4e761cf@apertussolutions.com>
Date: Wed, 9 Oct 2024 07:46:31 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 07/44] x86/boot: move headroom to boot modules
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-8-dpsmith@apertussolutions.com>
 <af3c6fae-ac24-4629-b295-2dedb5824819@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <af3c6fae-ac24-4629-b295-2dedb5824819@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 14:55, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> The purpose of struct boot_module is to encapsulate the state of boot 
>> module as
>> it is processed by Xen. Locating boot module state struct boot_module 
>> reduces
>> the number of global variables as well as the number of state 
>> variables that
>> must be passed around. It also lays the groundwork for hyperlaunch 
>> mult-domain
>> construction, where multiple instances of state variables like 
>> headroom will be
>> needed.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootinfo.h |  5 +++++
>>   xen/arch/x86/setup.c                | 23 ++++++++++++++---------
>>   2 files changed, 19 insertions(+), 9 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h 
>> b/xen/arch/x86/include/asm/bootinfo.h
>> index d19473d8941e..c7e6b4ebf0da 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -17,6 +17,11 @@
>>   struct boot_module {
>>       /* Transitionary only */
>>       module_t *mod;
>> +    /*
>> +     * A boot module may contain a compressed kernel that Xen will 
>> need space
>> +     * reserved, into which it will be decompressed.
> 
> Maybe "Extra space, before the module data, for compressed kernel 
> modules to be decompressed into."

I will rework it with your suggestions.

> And some ascii art could help:
> 
> [ headroom ][ compressed data ]
>   <decompression>
> [ decompressed data ]
> 
> (Not sure how to create a down arrow...)

Yes, in fact I would just show the three states like this:

At boot:
   [ compressed kernel ]
After boot module relocation:
   [ estimated headroom + PAGE_SIZE rounding ][ compressed kernel ]
After kernel decompression:
   [ decompressed kernel ][ unused rounding ]

>> +     */
>> +    unsigned long headroom;
>>   };
>>   /*
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index ba9f110d98c6..dd82ca3d43e2 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1012,7 +1012,7 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       struct boot_info *bi;
>>       multiboot_info_t *mbi;
>>       module_t *mod;
>> -    unsigned long nr_pages, raw_max_page, modules_headroom, 
>> module_map[1];
>> +    unsigned long nr_pages, raw_max_page, module_map[1];
>>       int i, j, e820_warn = 0, bytes = 0;
>>       unsigned long eb_start, eb_end;
>>       bool acpi_boot_table_init_done = false, relocated = false;
>> @@ -1371,7 +1371,10 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>           mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
>>       }
>> -    modules_headroom = bzimage_headroom(bootstrap_map(mod), 
>> mod->mod_end);
>> +    bi->mods[0].headroom =
>> +        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
>> +                         bi->mods[0].mod->mod_end);
>> +
>>       bootstrap_map(NULL);
>>   #ifndef highmem_start
>> @@ -1456,8 +1459,10 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>                * decompressor overheads of mod[0] (the dom0 kernel).  
>> When we
>>                * move mod[0], we incorporate this as extra space at 
>> the start.
>>                */
>> -            unsigned long headroom = j ? 0 : modules_headroom;
>> -            unsigned long size = PAGE_ALIGN(headroom + mod[j].mod_end);
>> +            struct boot_module *bm = &bi->mods[j];
>> +            unsigned long size;
>> +
>> +            size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
> 
> Just do
>              unsigned long size = PAGE_ALIGN(bm->headroom + 
> mod[j].mod_end);
> ?

yep, not sure why I even split it.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 11:47:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 11:47:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814421.1227983 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syVA3-00074C-BA; Wed, 09 Oct 2024 11:47:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814421.1227983; Wed, 09 Oct 2024 11: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 1syVA3-000745-8Y; Wed, 09 Oct 2024 11:47:23 +0000
Received: by outflank-mailman (input) for mailman id 814421;
 Wed, 09 Oct 2024 11:47: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=eQJB=RF=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1syVA2-0006hU-65
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 11:47:22 +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 3e0b60e5-8634-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 13:47:21 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a994cd82a3bso510374266b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 04:47:21 -0700 (PDT)
Received: from localhost ([213.195.123.53]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993fa1b94csm572572466b.53.2024.10.09.04.47.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 04:47:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3e0b60e5-8634-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728474440; x=1729079240; 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=vNj+EoD5ZU0beT7yuQbSff10GWe3bm/uH5DRpKdWX3k=;
        b=W07jDnVWQ+B7SKaMjL6GPx2mLr4Q1TNZ4Mmt6P7A4QyJYeEHb12sgzuFXXN1h3AEmg
         WjfABd/FakuVsquhBb65lU02JUME7R30WKsggQh3zIYYZBjqFFB/I0qSYMs4UKzJbCy3
         pl6eyhYBKIbAzF5FgSfSfFGXN4c/lw6V9J/B4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728474440; x=1729079240;
        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=vNj+EoD5ZU0beT7yuQbSff10GWe3bm/uH5DRpKdWX3k=;
        b=F7uqbrGwXQ9nhmfqWZP5nCN91cDcZujuR2RmccN7SVIrqPEC/sJhikNZ9ZPUcd27UI
         UfAXaIzePOC9oriBkFnkfdL9Bl4bX+c1VEk5IizbbDSJwyBcoyxCA9qV261Jauy2fHnd
         o2/8gYg2MgduNr50qHslGkmQUpiVVP6AJG/IQenVfErXjov2njS99jFgpR1qchG37uLM
         fxp64BsQIsXlH98NNDLl9NxVqnaIcrMRTjCK41Jtk1pSyfhWSqbuqHKJEyEla1ePkys+
         PExGNrBalOYAe51Ds2FxnqYndV8rj7qoqJP+49PCZus4mMgQ3I6EGZbbuekcsufZ/cgO
         4WOQ==
X-Forwarded-Encrypted: i=1; AJvYcCWrFyoYRhv5crn1aywzFg2Ls9W0Ungk62SmKiyK9RzZ4/wYv6ZI8KECwtTOy7CtA5Ou5EzfvTJKmxU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxr7ip25p82NZmH1UUhuXqwYWc3ezNvWR0alpFy6uFDy70M88Fp
	sZjiWAkBZ+qGeNeoPTB9HWmfn3csXWodwpMOEsKl5tqJaqbRDXBuG6EHvvrNi3E=
X-Google-Smtp-Source: AGHT+IGII9b0SdhhcdcjZnMfcYuuwMnSVEaseFM96Aw/kPCmUIUzLI3A3lQi9ftjzwZ7XzsLDI4/yA==
X-Received: by 2002:a17:907:7291:b0:a99:40fc:adb0 with SMTP id a640c23a62f3a-a998d37619dmr175549266b.65.1728474440241;
        Wed, 09 Oct 2024 04:47:20 -0700 (PDT)
Date: Wed, 9 Oct 2024 13:47:19 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
Message-ID: <ZwZtR6ZTl2gUWN2T@macbook.local>
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
 <ZwZlVlU2nHkBedyo@macbook.local>
 <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>

On Wed, Oct 09, 2024 at 01:28:19PM +0200, Jan Beulich wrote:
> On 09.10.2024 13:13, Roger Pau Monné wrote:
> > On Wed, Oct 09, 2024 at 12:52:29PM +0200, Jan Beulich wrote:
> >> On 09.10.2024 10:03, Roger Pau Monné wrote:
> >>> On Tue, Oct 08, 2024 at 04:01:28PM +0200, Jan Beulich wrote:
> >>>> On 08.10.2024 12:47, Roger Pau Monne wrote:
> >>>>> IVMD table contains restrictions about memory which must be mandatory assigned
> >>>>> to devices (and which permissions it should use), or memory that should be
> >>>>> never accessible to devices.
> >>>>>
> >>>>> Some hardware however contains ranges in IVMD that reference devices outside of
> >>>>> the IVHD tables (in other words, devices not behind any IOMMU).  Such mismatch
> >>>>> will cause Xen to fail in register_range_for_device(), ultimately leading to
> >>>>> the IOMMU being disabled, and Xen crashing as x2APIC support might be already
> >>>>> enabled and relying on the IOMMU functionality.
> >>>>
> >>>> I find it hard to believe that on x86 systems with IOMMUs some devices would
> >>>> be left uncovered by any IOMMU. Is it possible that IVHD is flawed there? In
> >>>> which case we might rightfully refuse to boot? (Can you share e.g. that
> >>>> "iommu=debug" output that results from parsing the tables on that system?)
> >>>
> >>> I'm afraid I don't have any of such systems to test myself, however I
> >>> have the contents of IVRS:
> >>>
> >>>   ACPI Table Header
> >>> ------------------------------------------------------------------
> >>> Signature          : IVRS
> >>> Length             : 0x000001F8
> >>> Revision           : 0x02
> >>> Checksum           : 0x06
> >>> OEM ID             : AMD  
> >>> OEM Table ID       : AmdTable
> >>> OEM Revision       : 0x00000001
> >>> Creator ID         : AMD 
> >>> Creator Revision   : 0x00000001
> >>> IVinfo             : 0x00203043
> >>> 	  IVHD
> >>> 	----------------------------------------------------------------
> >>> 	Type                  : 0x10
> >>> 	Flags                 : 0xB0
> >>> 	Length                : 0x0044
> >>> 	IOMMU Device ID       : 0x0002
> >>> 	Capability Offset     : 0x0040
> >>> 	IOMMU Base Address    : 0x00000000FD200000
> >>> 	Segment Group         : 0x0000
> >>> 	IOMMU Info            : 0x0000
> >>> 	IOMMU Feature Info    : 0x80048F6E
> >>> 		  Range
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x03
> >>> 		Start of Range        : 0x0003
> >>> 		End of Range          : 0xFFFE
> >>> 		DTE Setting           : 0x00
> >>> 		  Alias Range
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x43
> >>> 		Start of Range        : 0xFF00
> >>> 		End of Range          : 0xFFFF
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x00A5
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x00A0
> >>> 		Handle                : 0x00
> >>> 		Variety               : HPET
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0xD7
> >>> 		Source Device ID      : 0x00A0
> >>> 		Handle                : 0x21
> >>> 		Variety               : IOAPIC
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x0001
> >>> 		Handle                : 0x22
> >>> 		Variety               : IOAPIC
> >>> 	  IVHD
> >>> 	----------------------------------------------------------------
> >>> 	Type                  : 0x11
> >>> 	Flags                 : 0x30
> >>> 	Length                : 0x0054
> >>> 	IOMMU Device ID       : 0x0002
> >>> 	Capability Offset     : 0x0040
> >>> 	IOMMU Base Address    : 0x00000000FD200000
> >>> 	Segment Group         : 0x0000
> >>> 	IOMMU Info            : 0x0000
> >>> 	IOMMU Feature Info    : 0x00048000
> >>> 		  Range
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x03
> >>> 		Start of Range        : 0x0003
> >>> 		End of Range          : 0xFFFE
> >>> 		DTE Setting           : 0x00
> >>> 		  Alias Range
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x43
> >>> 		Start of Range        : 0xFF00
> >>> 		End of Range          : 0xFFFF
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x00A5
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x00A0
> >>> 		Handle                : 0x00
> >>> 		Variety               : HPET
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0xD7
> >>> 		Source Device ID      : 0x00A0
> >>> 		Handle                : 0x21
> >>> 		Variety               : IOAPIC
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x0001
> >>> 		Handle                : 0x22
> >>> 		Variety               : IOAPIC
> >>> 	  IVMD
> >>> 	----------------------------------------------------------------
> >>> 	Type                                 : 0x22
> >>> 	Flags                                : 0x08
> >>> 	Length                               : 0x0020
> >>> 	DeviceID                             : 0x0000
> >>> 	AuxiliaryData                        : 0x0FFF
> >>> 	Reserved                             : 0x0000000000000000
> >>> 	IVMD Start Address                   : 0x0000000096191000
> >>> 	IVMD Memory Block Length             : 0x0000000000000022
> >>> 	  IVMD
> >>> 	----------------------------------------------------------------
> >>> 	Type                                 : 0x22
> >>> 	Flags                                : 0x08
> >>> 	Length                               : 0x0020
> >>> 	DeviceID                             : 0x0000
> >>> 	AuxiliaryData                        : 0x0FFF
> >>> 	Reserved                             : 0x0000000000000000
> >>> 	IVMD Start Address                   : 0x0000000097D9E000
> >>> 	IVMD Memory Block Length             : 0x0000000000000022
> >>> 	  IVMD
> >>> 	----------------------------------------------------------------
> >>> 	Type                                 : 0x22
> >>> 	Flags                                : 0x08
> >>> 	Length                               : 0x0020
> >>> 	DeviceID                             : 0x0000
> >>> 	AuxiliaryData                        : 0x0FFF
> >>> 	Reserved                             : 0x0000000000000000
> >>> 	IVMD Start Address                   : 0x0000000097D9D000
> >>> 	IVMD Memory Block Length             : 0x0000000000000022
> >>> 	  IVHD
> >>> 	----------------------------------------------------------------
> >>> 	Type                  : 0x40
> >>> 	Flags                 : 0x30
> >>> 	Length                : 0x00D0
> >>> 	IOMMU Device ID       : 0x0002
> >>> 	Capability Offset     : 0x0040
> >>> 	IOMMU Base Address    : 0x00000000FD200000
> >>> 	Segment Group         : 0x0000
> >>> 	IOMMU Info            : 0x0000
> >>> 	IOMMU Feature Info    : 0x00048000
> >>> 		  Range
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x03
> >>> 		Start of Range        : 0x0003
> >>> 		End of Range          : 0xFFFE
> >>> 		DTE Setting           : 0x00
> >>> 		  Alias Range
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x43
> >>> 		Start of Range        : 0xFF00
> >>> 		End of Range          : 0xFFFF
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x00A5
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x00A0
> >>> 		Handle                : 0x00
> >>> 		Variety               : HPET
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0xD7
> >>> 		Source Device ID      : 0x00A0
> >>> 		Handle                : 0x21
> >>> 		Variety               : IOAPIC
> >>> 		  Special Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0x48
> >>> 		Device ID             : 0x0000
> >>> 		DTE Setting           : 0x00
> >>> 		Source Device ID      : 0x0001
> >>> 		Handle                : 0x22
> >>> 		Variety               : IOAPIC
> >>> 		  Variable Length ACPI HID Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0xF0
> >>> 		Device ID             : 0x00A5
> >>> 		DTE Setting           : 0x40
> >>> 		Hardware ID           : AMDI0020
> >>> 		Extended DTE Setting  : 
> >>> 		Unique ID Format      : 2
> >>> 		Unique ID Length      : 9
> >>> 		Unique ID             : \_SB.FUR0
> >>> 		  Variable Length ACPI HID Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0xF0
> >>> 		Device ID             : 0x00A5
> >>> 		DTE Setting           : 0x40
> >>> 		Hardware ID           : AMDI0020
> >>> 		Extended DTE Setting  : 
> >>> 		Unique ID Format      : 2
> >>> 		Unique ID Length      : 9
> >>> 		Unique ID             : \_SB.FUR1
> >>> 		  Variable Length ACPI HID Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0xF0
> >>> 		Device ID             : 0x00A5
> >>> 		DTE Setting           : 0x40
> >>> 		Hardware ID           : AMDI0020
> >>> 		Extended DTE Setting  : 
> >>> 		Unique ID Format      : 2
> >>> 		Unique ID Length      : 9
> >>> 		Unique ID             : \_SB.FUR2
> >>> 		  Variable Length ACPI HID Device
> >>> 		--------------------------------------------------
> >>> 		Type                  : 0xF0
> >>> 		Device ID             : 0x00A5
> >>> 		DTE Setting           : 0x40
> >>> 		Hardware ID           : AMDI0020
> >>> 		Extended DTE Setting  : 
> >>> 		Unique ID Format      : 2
> >>> 		Unique ID Length      : 9
> >>> 		Unique ID             : \_SB.FUR3
> >>>
> >>> FWIW, I've checked on one of the AMD server systems we have on the
> >>> lab, and the IVHD entries are fairly similar to the ones here, as
> >>> neither the PCI Host Bridge, nor the IOMMU are covered by any IVHD
> >>> block.  That system however doesn't have any IVMD blocks.
> >>
> >> Mine are a little different. The Dinar (Fam15) has an IVHD entry just
> >> for the range 0-2 (host bridge, <nothing>, IOMMU). The Rome (Fam17)
> >> has an IVHD entry just for 0 (host bridge), but not for the IOMMU. I
> >> think it is entirely reasonable for host bridge(s) and IOMMU(s) to not
> >> be covered by any IVHD. They aren't devices that would require
> >> servicing by an IOMMU.
> >>
> >> Looking at the code I think we want to do things a little differently
> >> though: Pull find_iommu_for_device() out of register_range_for_device()
> >> and have parse_ivmd_device_range() do the skipping when there's no
> >> IOMMU for a device.
> > 
> > What about parse_ivmd_device_select()?  The IOMMU check would also need
> > to be duplicated there, which is not ideal IMO.
> 
> That's not ideal, but a reasonably small price to pay.

Pulling the check out is only helpful if we plan to return an error if
a IVMD block has all references to devices not assigned to an IOMMU,
which I'm not convinced we should do.

> >> Plus error when no device in the range is covered
> >> by an IOMMU, or if any two devices are covered by different IOMMUs.
> > 
> > I'm not sure I understand you last comment: do you mean to return an
> > error if a IVMD block range covers devices assigned to different
> > IOMMUs?  If that's the case, I'm afraid I don't agree, I don't see
> > anywhere in the spec that notes a IVMD block range can apply to
> > devices assigned to different IOMMUs.
> 
> Hmm, right, I take back that part.
> 
> > I also think returning an error when no device in the IVMD range is
> > covered by an IOMMU is dubious.  Xen will already print warning
> > messages about such firmware inconsistencies, but refusing to boot is
> > too strict.
> 
> I disagree. We shouldn't enable DMA remapping in such an event. Whereas

I'm not sure I understand why you would go as far as refusing to
enable DMA remapping.  How is a IVMD block having references to some
devices not assigned to any IOMMU different to all devices referenced
not assigned to any IOMMU?  We should deal with both in the same
way.

If all devices in the IVMD block are not covered by an IOMMU, the
IVMD block is useless.  But there's nothing for Xen to action, due to
the devices not having an IOMMU assigned.  IOW: it would be the same
as booting natively without parsing the IVRS in the first place.

> the "refusing to boot" is interrupt remapping related iirc, if x2APIC
> is already enabled. We need to properly separate the two (and the
> discussion there was started quite a long time ago, but it got stuck at
> some point); until such time it is simply an undesirable side effect of
> the inappropriate implementation that in certain case we fail boot when
> we shouldn't.

Yes, but that's a different topic, and not something I plan to fix as
the scope of this patch :).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 12:09:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 12:09:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814437.1227993 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syVVa-0007CB-8V; Wed, 09 Oct 2024 12:09:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814437.1227993; Wed, 09 Oct 2024 12: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 1syVVa-0007C4-5p; Wed, 09 Oct 2024 12:09:38 +0000
Received: by outflank-mailman (input) for mailman id 814437;
 Wed, 09 Oct 2024 12: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syVVY-0007By-QN
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 12:09:36 +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 59883449-8637-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 14:09:35 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9953bdc341so454363666b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 05:09:35 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e7e226bsm648053366b.210.2024.10.09.05.09.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 05:09:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59883449-8637-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728475775; x=1729080575; 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=LcSk0hKhTZvm1b8dZbnCjCU2ZKbnfk0LnD76zfyF5I8=;
        b=gGwyR85r3kp+sAlQfajS/31ScktlR0rUOgeavlwYEdGkabfEG6e6mnWgUL6UozfrDs
         WCF4NCBxrdF7I7P1DbvQZtzACZRDFPuSGgdGPw8iwOGviVn4nv47AsQ+Qpb0e17H0htn
         gKOHmjq54kpWrQXgWBjPAKfewy0bkoTXctZoOowXtK2UD8ROM4YkiOqwvdQEmWthPKfF
         v+m6xuNz2RyA87UXpK13flTnFSXCl3kNkLT4PtIhI1hfY4QPYT1eP3W0NIF15VKfqGNZ
         KmpSHqI8jyw3Q6+SnJz6367ycUyAKitpT3ZfJ4mrziulR6W0b9TASVXiqARargtG3kjT
         Nl6g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728475775; x=1729080575;
        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=LcSk0hKhTZvm1b8dZbnCjCU2ZKbnfk0LnD76zfyF5I8=;
        b=iiNQzgXDNMiH/ho9thsiP4xJuHWwu352r5WKDMF/WBmjy60uL//JR+GP4hBmoE57jv
         Yejf9ke7PUV9k+QOJYN0jJNvWX94Qpxbx2GP7xUeFNd6Tge/64Vgm+V1LAhSVNrpMord
         N/ov4g1pE69LZOPSuyTOIxOcjKAq7N0sJpxRIGay7P1c6DaYx4NbeWTl3VLTRNsaqayj
         Yevutehbc9nJpXJzcPG4m8VVUIPcIKFCDu1G7oAI94RFswTU9Wu3n0jWmc1boNBxEEBP
         UHgGrZYxvagOh/vquJxnM8vzjaiqauvOeiXVj9pd/eTKeaEUGnUHfZm+sBICFvroIjd8
         pNyA==
X-Forwarded-Encrypted: i=1; AJvYcCVQSqd4E/h81zILPf+Ek/OnmMVUgH1AthvtOZlBKuWSm4UgrLonKy4I/FGKADGUUtEoSh9u37YCm0c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyyBlxOvWsBvz9uSDpKvRoGAMYoRdjH9NN6OAjaS5W37MEvwadH
	P9VL01xQ7QkHIUR4jiM4LuYp4dxGopCVHFVkSSd6++Gdxcu/JEkDiFpGDGuh3Q==
X-Google-Smtp-Source: AGHT+IFde4xi1BocKAe01aSiw3Kd16/2Vf/qL1o2fHlH94NUNTWGZT+em5sefsz9xl6RdJ3Qb69xrg==
X-Received: by 2002:a17:907:e2e7:b0:a99:371e:7a91 with SMTP id a640c23a62f3a-a998d32585cmr177373666b.52.1728475774955;
        Wed, 09 Oct 2024 05:09:34 -0700 (PDT)
Message-ID: <34f73ec6-0e10-41f4-8894-c367264afefc@suse.com>
Date: Wed, 9 Oct 2024 14:09:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, xen-devel@lists.xenproject.org
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
 <ZwZlVlU2nHkBedyo@macbook.local>
 <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>
 <ZwZtR6ZTl2gUWN2T@macbook.local>
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: <ZwZtR6ZTl2gUWN2T@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 13:47, Roger Pau Monné wrote:
> On Wed, Oct 09, 2024 at 01:28:19PM +0200, Jan Beulich wrote:
>> On 09.10.2024 13:13, Roger Pau Monné wrote:
>>> I also think returning an error when no device in the IVMD range is
>>> covered by an IOMMU is dubious.  Xen will already print warning
>>> messages about such firmware inconsistencies, but refusing to boot is
>>> too strict.
>>
>> I disagree. We shouldn't enable DMA remapping in such an event. Whereas
> 
> I'm not sure I understand why you would go as far as refusing to
> enable DMA remapping.  How is a IVMD block having references to some
> devices not assigned to any IOMMU different to all devices referenced
> not assigned to any IOMMU?  We should deal with both in the same
> way.

Precisely because of ...

> If all devices in the IVMD block are not covered by an IOMMU, the
> IVMD block is useless.

... this. We simply can't judge whether such a useless block really was
meant to cover something. If it was, we're hosed. Or maybe we screwed up
and wrongly conclude it's useless.

>  But there's nothing for Xen to action, due to
> the devices not having an IOMMU assigned.  IOW: it would be the same
> as booting natively without parsing the IVRS in the first place.

Not really, no. Not parsing IVRS means not turning on any IOMMU. We
then know we can't pass through any devices. We can't assess the
security of passing through devices (as far as it's under our control)
if we enable the IOMMU in perhaps a flawed way.

A formally valid IVMD we can't make sense of is imo no different from
a formally invalid IVMD, for which we would return ENODEV as well (and
hence fail to enable the IOMMU). Whereas what you're suggesting is, if
I take it further, to basically ignore (almost) all errors in table
parsing, and enable the IOMMU(s) in a best effort manner, no matter
whether that leads to a functional (let alone secure [to the degree
possible]) system.

What I don't really understand is why you want to relax our checking
beyond what's necessary for the one issue at hand.

>> the "refusing to boot" is interrupt remapping related iirc, if x2APIC
>> is already enabled. We need to properly separate the two (and the
>> discussion there was started quite a long time ago, but it got stuck at
>> some point); until such time it is simply an undesirable side effect of
>> the inappropriate implementation that in certain case we fail boot when
>> we shouldn't.
> 
> Yes, but that's a different topic, and not something I plan to fix as
> the scope of this patch :).

Sure, I'm merely asking to accept that, until that's resolved, issues
with boot failure can result here, and need to be lived with.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 12:28:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 12:28:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814444.1228004 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syVo1-0004LO-Qk; Wed, 09 Oct 2024 12:28:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814444.1228004; Wed, 09 Oct 2024 12: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 1syVo1-0004Jl-MH; Wed, 09 Oct 2024 12:28:41 +0000
Received: by outflank-mailman (input) for mailman id 814444;
 Wed, 09 Oct 2024 12:28: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=DjKG=RF=bounce.vates.tech=bounce-md_30504962.670676f4.v1-ae3cd4ec4963448a8aeedbe6be5b8416@srs-se1.protection.inumbo.net>)
 id 1syVo0-0004JX-HZ
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 12:28:40 +0000
Received: from mail136-19.atl41.mandrillapp.com
 (mail136-19.atl41.mandrillapp.com [198.2.136.19])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0221d004-863a-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 14:28:38 +0200 (CEST)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-19.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4XNsch3kkWzRKLrmh
 for <xen-devel@lists.xenproject.org>; Wed,  9 Oct 2024 12:28:36 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 ae3cd4ec4963448a8aeedbe6be5b8416; Wed, 09 Oct 2024 12:28: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: 0221d004-863a-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728476916; x=1728737416;
	bh=+Fp0i7llVEruvS/tILDWdGCxj1Am3SdqBXzCWapIZ6U=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=xt21RAESFP3ovQo+U6IbtytRV6ZYg+FpTR7Lh71PFIM5OHJJ3PbfLDM0ovmSIqMZV
	 2ryTUoV4ifVmwjowDfKSUZ8fn4nWj6BZeuBKz5u8SQ/aSiSbk6x0Rx2Z67BNbWHVr4
	 vQ0hCWdwbcP0/ZBAxZhdnR1/LFUSFkXMjiHkDHkOehNxOXYTkM5jLgL53AITgfT/hU
	 maViRHuuIiLrEFqD3ZdZUcazIO/MW8X+kHgi+SCnslcN16TtuKm8JQnYjd/xA0QgmK
	 lgS+7MqHsXo90oK6yGxvpwMYY5OoOwveqyXXW4npPvXSMgqWdeIrXg5zuW1iTK237x
	 8QBVkp38oH4KA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728476916; x=1728737416; i=teddy.astie@vates.tech;
	bh=+Fp0i7llVEruvS/tILDWdGCxj1Am3SdqBXzCWapIZ6U=;
	h=From:Subject:Message-Id:To:Cc:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=HrYhw/rm1FaaP+p7vo9IJzQHsq1usapow04nl20wSqN7j/llm5HQhi0x3GGbBlnyR
	 Emtu/PTpfOpnAdZx2O8G74p0eg/N4ktkaACsXX+oXEiucT/GZxwUPO7EYk35xt6Hm2
	 o0P3MJ55y9wLPYILcN9Oh0msZ7I/xZfhudUtET+IYOdSfw1riSrl/qlylZ4nLW2c5C
	 1felks50sTBgGq6rLivCVbiVFZbPuwvFO7ywY3UQBt73bZABOUJQ7ZhhhZSbQqQstH
	 jAn4RgJTQYuGuH9TMe9iwCZz4KH6iIviu8JONkpziNBQtcSqn1aXXFhEgVhhbcNt+w
	 ftBgq24Rlbm6Q==
From: Teddy Astie <teddy.astie@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20iommu/amd-vi:=20do=20not=20error=20if=20device=20referenced=20in=20IVMD=20is=20not=20behind=20any=20IOMMU?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728476914452
Message-Id: <33525b82-04bf-4d66-b917-8c2c71ff4ef2@vates.tech>
To: Jan Beulich <jbeulich@suse.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga <xenproject@ymy.be>, xen-devel@lists.xenproject.org
References: <20241008104706.74001-1-roger.pau@citrix.com> <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com> <ZwY4ym2Gnlx4tytP@macbook.local> <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com> <ZwZlVlU2nHkBedyo@macbook.local> <703fa416-c7d5-4862-a871-5831125c2e25@suse.com> <ZwZtR6ZTl2gUWN2T@macbook.local> <34f73ec6-0e10-41f4-8894-c367264afefc@suse.com>
In-Reply-To: <34f73ec6-0e10-41f4-8894-c367264afefc@suse.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.ae3cd4ec4963448a8aeedbe6be5b8416?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241009:md
Date: Wed, 09 Oct 2024 12:28:36 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hello,

Le 09/10/2024 =C3=A0 14:09, Jan Beulich a =C3=A9crit=C2=A0:
> On 09.10.2024 13:47, Roger Pau Monn=C3=A9 wrote:
>> On Wed, Oct 09, 2024 at 01:28:19PM +0200, Jan Beulich wrote:
>>> On 09.10.2024 13:13, Roger Pau Monn=C3=A9 wrote:
>>>> I also think returning an error when no device in the IVMD range is
>>>> covered by an IOMMU is dubious.  Xen will already print warning
>>>> messages about such firmware inconsistencies, but refusing to boot is
>>>> too strict.
>>>
>>> I disagree. We shouldn't enable DMA remapping in such an event. Whereas
>>
>> I'm not sure I understand why you would go as far as refusing to
>> enable DMA remapping.  How is a IVMD block having references to some
>> devices not assigned to any IOMMU different to all devices referenced
>> not assigned to any IOMMU?  We should deal with both in the same
>> way.
> 
> Precisely because of ...
> 
>> If all devices in the IVMD block are not covered by an IOMMU, the
>> IVMD block is useless.
> 
> ... this. We simply can't judge whether such a useless block really was
> meant to cover something. If it was, we're hosed. Or maybe we screwed up
> and wrongly conclude it's useless.
> 
>>   But there's nothing for Xen to action, due to
>> the devices not having an IOMMU assigned.  IOW: it would be the same
>> as booting natively without parsing the IVRS in the first place.
> 
> Not really, no. Not parsing IVRS means not turning on any IOMMU. We
> then know we can't pass through any devices. We can't assess the
> security of passing through devices (as far as it's under our control)
> if we enable the IOMMU in perhaps a flawed way.
> 
> A formally valid IVMD we can't make sense of is imo no different from
> a formally invalid IVMD, for which we would return ENODEV as well (and
> hence fail to enable the IOMMU). Whereas what you're suggesting is, if
> I take it further, to basically ignore (almost) all errors in table
> parsing, and enable the IOMMU(s) in a best effort manner, no matter
> whether that leads to a functional (let alone secure [to the degree
> possible]) system.
> 
> What I don't really understand is why you want to relax our checking
> beyond what's necessary for the one issue at hand.
> 
>>> the "refusing to boot" is interrupt remapping related iirc, if x2APIC
>>> is already enabled. We need to properly separate the two (and the
>>> discussion there was started quite a long time ago, but it got stuck at
>>> some point); until such time it is simply an undesirable side effect of
>>> the inappropriate implementation that in certain case we fail boot when
>>> we shouldn't.
>>
>> Yes, but that's a different topic, and not something I plan to fix as
>> the scope of this patch :).
> 
> Sure, I'm merely asking to accept that, until that's resolved, issues
> with boot failure can result here, and need to be lived with.
> 
> Jan
> 

Would it be possible to find a middle-ground by adding a "non-security 
supported" xen command-line option to allow a workaround on this issue ?

Something like iommu=3Damd-skip-unknown-ivmd ?

And preventing boot otherwise.

Teddy


Teddy Astie | Vates XCP-ng Intern

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 12:36:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 12:36:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814453.1228013 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syVvQ-0006r1-Et; Wed, 09 Oct 2024 12:36:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814453.1228013; Wed, 09 Oct 2024 12: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 1syVvQ-0006qu-CB; Wed, 09 Oct 2024 12:36:20 +0000
Received: by outflank-mailman (input) for mailman id 814453;
 Wed, 09 Oct 2024 12: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=iX4b=RF=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1syVvP-0006qo-AO
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 12:36:19 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on2060d.outbound.protection.outlook.com
 [2a01:111:f403:2612::60d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1451333c-863b-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 14:36:17 +0200 (CEST)
Received: from DUZPR01CA0290.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b7::28) by GV1PR08MB10732.eurprd08.prod.outlook.com
 (2603:10a6:150:160::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Wed, 9 Oct
 2024 12:36:11 +0000
Received: from DU2PEPF0001E9C6.eurprd03.prod.outlook.com
 (2603:10a6:10:4b7:cafe::33) by DUZPR01CA0290.outlook.office365.com
 (2603:10a6:10:4b7::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Wed, 9 Oct 2024 12:36:11 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU2PEPF0001E9C6.mail.protection.outlook.com (10.167.8.75) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8048.13 via
 Frontend Transport; Wed, 9 Oct 2024 12:36:09 +0000
Received: ("Tessian outbound 0362136859cb:v473");
 Wed, 09 Oct 2024 12:36:09 +0000
Received: from L43b53e9024cf.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 7673F1DB-824B-49DF-9375-C3CA58A21B25.1; 
 Wed, 09 Oct 2024 12:36:03 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L43b53e9024cf.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 09 Oct 2024 12:36:03 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by PAVPR08MB9745.eurprd08.prod.outlook.com (2603:10a6:102:31c::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Wed, 9 Oct
 2024 12:36:00 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8026.020; Wed, 9 Oct 2024
 12:36: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: 1451333c-863b-11ef-a0bd-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=CQIEG6bInvu4BwSm7atbT/fLf4iKmnb88dhpAwh6kY/Z6CZ4RzFxRby8ibxs/bZf/vfDU3fQtC3pGy3BjcJ7bStK8FJQiPV88OCcZK5E8KGbq2UbQHQXHk0sxZ4MFXR/DtnNcEVMBTM0rl5t/GhZLy/dH4240tUpH+HH6RqBDpxsYcdrRBxzXgXq6SE1i7UOvlIbpqJ2mvEKrPCJXAwu6+Whib8tes29iLZQtCb+ph2UuYAfjQhiyDUiB1bA6zVf66zzWVCTMPbEHIH4JMoAaRWu0B5dwoCeok1p/5vuUjKaK2J8zC5qeRz6gLnpGfW37NVs548AfwBoZ1o68xJHwA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=R9jif4pNIdi+QBQLj42vQG051s4OnrS0s2xQRpjqpN4=;
 b=AudGRB1ambyYlt9oWmBUhYfjAbjxXrEAM+zjIEVKE82+m7RKfjWTaA1mLXlmdDa0LW9KNLO78yBdngAV9strZB8TaBz7hi3OJTTJtZxf4AzTml0DiYQEzMtOf36iCiSvAGtehNi7HmzVZpr9OXgUl1zMhJ2SuJXFQvKn5ws7mZl1wrxsxcV4r3M4i7t8HID6SnK5uYxcy+4t0yBcFxq78d1YBde0tqNywmOMUVi3LQyAUJ5ISL2PO49jx7iGR/ZHM/pQ197cR7XkMgCFj2EbfxxZyfRsWhkzs+lB3KQT0bSazJEQDkEpwANRGqVu0mx0ctHyYjDCOCaX+o0AvsAb+w==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=R9jif4pNIdi+QBQLj42vQG051s4OnrS0s2xQRpjqpN4=;
 b=Oqx2u3HuXibH0rbEFQ0fZcYS7kUOZpKL6Ie594Uz2V9gOWNJ1cfDkI1K+rUHup0ysECslcDRyuKD1L/f3bXN/XItbxMFE9ICo6mOYuWxqMRmzYEmP8mhuQZQV0Z0VNcJTSglMJ1IDvE+UcziOdIccQpocj2Hei3G1A1quKhuudQ=
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=arm.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: b3a43242215793db
X-TessianGatewayMetadata: JoR2TcAXrgXtXEcHTU9OUmuW3fxuDCMOpQbBgi2kPmMyakrZGCn12yBbT98YIPZ5jbXHGhBdrd37no7NBDegp63Lk7yJ3Hkz5tsUVupxOvaWboXjmQvbCANJP/4Jzhs33uiWfT3/lDO8ASkYWR44BnsK4+4AwDerLbLiPF91p9E=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=T2Dp8pTY2LHpsWrv47Y3uBoQzaP/P1+QkLkxycLSh/XM5E1v9sCC/EblrgX49sqAQv0Qqtc4WOMb/dbbOHW9rf3vcplFeO4hcnpxu/qyXbsk+t+FgJPsUrNzJi+utLJ6gORMlwlJDpL6cBjfjNCf4R5KHsdH1IyDLwphjt5GKKBYLTFjyMWgfcfmxzMMQh7kikPOXlPNHLZL7ryg8sO0oOBfgshIHxGbP++WheLxJ3jI82nogrTfyYRRPwV0zLO2t25Ys/WyUg3g4x5hCNjWKpGLEFPrAjAzmDxebGzMhjJOp/G00F0IUsXVAqcveK/ZsR1g0AVDxopgYL22TNBo+Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=R9jif4pNIdi+QBQLj42vQG051s4OnrS0s2xQRpjqpN4=;
 b=gyGaPr+4R2vrVXveHF9/Ivmu8dVBn8vvkMCKfWa0ICh09eHI/LGKzNQK2use4Pxls3Ju4s31YsXUt/g1Wgx7OawZxSBLTx46RZblVqfvMNF21mecBkn5nukwkpAodIfy3lhc/aRNfOlH5qahzi4xIR3XYsOB9ER2njca1W2vvNqkySpv1QEtvQN4zqjSsjwqo89CCTxOy07X471eqahINfkHLTGXWES7HConWpv9nBzZ/i7oz4+4ScE7dxaZht8PQQp1TiMms8+HMFBnbruTB/51jaWtGwePa+rA6w7F2lNBTQvtgl7jJBkTBxBnc9rbh5urnGzhM6YRsDtEuBY/Bg==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=R9jif4pNIdi+QBQLj42vQG051s4OnrS0s2xQRpjqpN4=;
 b=Oqx2u3HuXibH0rbEFQ0fZcYS7kUOZpKL6Ie594Uz2V9gOWNJ1cfDkI1K+rUHup0ysECslcDRyuKD1L/f3bXN/XItbxMFE9ICo6mOYuWxqMRmzYEmP8mhuQZQV0Z0VNcJTSglMJ1IDvE+UcziOdIccQpocj2Hei3G1A1quKhuudQ=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Ayan Kumar Halder <ayankuma@amd.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<olekstysh@gmail.com>, Xen-devel <xen-devel@lists.xenproject.org>, Oleksandr
 Tyshchenko <oleksandr_tyshchenko@epam.com>, Michal Orzel
	<michal.orzel@amd.com>, Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Artem
 Mygaiev <artem_mygaiev@epam.com>, Hisao Munakata
	<hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Topic: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Index:
 AQHbGOqFqldnvX8xNEmI4LnFnImSpbJ8YaSAgADTLwCAAEEygIAAgZcAgABSRgCAABPTgA==
Date: Wed, 9 Oct 2024 12:36:00 +0000
Message-ID: <7601808F-C5A6-4F20-A61A-A389252C7C5F@arm.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
 <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
 <451c092a-af4b-40f4-a902-28f6f502d39a@amd.com>
In-Reply-To: <451c092a-af4b-40f4-a902-28f6f502d39a@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|PAVPR08MB9745:EE_|DU2PEPF0001E9C6:EE_|GV1PR08MB10732:EE_
X-MS-Office365-Filtering-Correlation-Id: 853dc5b6-62e1-48fb-9a1e-08dce85ef3ed
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?+9asx5XroVxgaD6RASi3FGb2WPnn230SYtb+zLL1Vb4cajqHhhk6cPz78uUd?=
 =?us-ascii?Q?Zc6xZ0nUGF7QU/IqyiMYCIg+bZI/se3YorVV8jwh0MSrP2Zqh0dfJVZuWlhQ?=
 =?us-ascii?Q?s9W0PTueCetbOM7U86jQRdl1/5JUPzRUw9hT54ghu/lT+LfZgUsgrleuygz6?=
 =?us-ascii?Q?6PTjKinHjwI98y+0hrSyALvTqxt1RogMlUQTgAO70Hk08bWa5uu4niG6VsEu?=
 =?us-ascii?Q?UKme6ymOH9reKYrbESAwbSQODyNiajBxWL9KERLDbQ+kiiuBYE1XpjNquRXJ?=
 =?us-ascii?Q?vWnJ6BtZoGlDTjCHRqf9KiDx8NjhvIXVzq6lZNWM5qPAhqViMr0RbniY0fdW?=
 =?us-ascii?Q?IEFsiM/apw7MQbzTX0urL9PbjXSU8dvtxSxu3Ksu3VolYE3rLh9ikbm5kGfz?=
 =?us-ascii?Q?sCTeW/Txs7IijmrwM3pBKRVLmoOGJ3gckxjcyfh74/LieXdz5A9JD1MVYh9i?=
 =?us-ascii?Q?vYr+S5SZ+UBcDad7wFNOPOj2o7XJ24vt7zNE89FNcqFwHrD39oMwKOSca+BR?=
 =?us-ascii?Q?3fkOvH9tVqHOm8Ip4rbcgU5Synt1IcYWkfNoEnnGvyBi3bhX/wef2QvbzwE4?=
 =?us-ascii?Q?ArfFHAbGHnVKa3KXZzAhysha201picok9aV+uYUs9YGqdPJTlnB5UTI5ARFy?=
 =?us-ascii?Q?SzPYqf7K/HrrpEiO1wCgYddkzDZrR891zS2BGtHR3kkdyRkVjJXbhSWUxCPM?=
 =?us-ascii?Q?Ck85euLbK6gaKcMbIJwYh9EoS4LBcdA521fpz4sR34CmgOxpKXJAHplpoTEm?=
 =?us-ascii?Q?U/pf20LUnrZMdSRiiqJ6FmWp6xMoSkggq+Ctb2eq662eG8UwyChVlb6Tqz8x?=
 =?us-ascii?Q?YqBsZSfGlFNO560GTLFM0Sok1HsJWTFaUh5rPNajdm/621rZTz198MjEr3Zr?=
 =?us-ascii?Q?4AQ8JqL/Xdiy50C1b8Rs1J5MyYiZlW++YQMPIY4j8NKwJUtpOnTagMk1LUbO?=
 =?us-ascii?Q?356UmkeLyNfD99cxFEoRdbGiBM8JgwkYgUwn/Drknd8WnoUZWkGGzmrkqf+a?=
 =?us-ascii?Q?xqNSddoM6pXhtiJ+OusZfPtu/MaQDnBIUk5HZhgXZbiD4Tc51E00govVIiJr?=
 =?us-ascii?Q?mIgBAo/b3LdB1k0UYe3IQu65btNnoQcR68P0h8sfe0mZ8kGhPVs1S+CPXCiT?=
 =?us-ascii?Q?KJrFfrmzoGz6uQ9MJ/1yo+FGb2jAqDI37qAS0DS8IRuKgKUHWQzwr4vFXxtr?=
 =?us-ascii?Q?BarkU5NTf+vYWB468ntvCpt02Q8og0PUhpDnSSBQokE4mPm1OuBynz5CEq4C?=
 =?us-ascii?Q?+vFl2lVu7MB+NhEs9GEzTiq/N7z5PLjxxMUiZcSwvA=3D=3D?=
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:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <CB57493FC1236747B7AAA1A4391F5780@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9745
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF0001E9C6.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8af19e93-12b6-4866-37ec-08dce85eee96
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|35042699022|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?eQ/Yw1meqV2tQBuxBKTAqnXnfaP40VSD/8ZlXCsXk+94hP0FZZkRfkJiGpJH?=
 =?us-ascii?Q?TnECAwAQVcP846eJEYIZic5S4Yw2fW7vFy6cEBifvd4wCcwPJZyDE2C/01Y7?=
 =?us-ascii?Q?0MTcPG28apdp3UKvU887R1rNYmHwtZBzpNLcDHgnWNuGKk2jYvcaHrzI6J1z?=
 =?us-ascii?Q?qvG8G9iYtZ1Py5vNs7VP+aeHpvRV8vBnI3FIFKlLYc4FX7B5WS7ZA9+GEevJ?=
 =?us-ascii?Q?eP5DxPf7v+muyrQirIJGjibq51XfVYvo0zqkpoGWNjsgruPuCippuahZ9w/Q?=
 =?us-ascii?Q?1xo7AEn/yACmSMTUz4f/t6HYhJ2MZzXF25a+SrRZ7sw+1cEU/kUvBP2z1uTz?=
 =?us-ascii?Q?LWlcd1TDCT3vnBllXt22QrIYzH2cPNGg+TyOrbat7ciB9dFiw8n0M7QKy1oo?=
 =?us-ascii?Q?f0RuvHDIKbR4ItOh9Hx0ozIMYmFXoogKgL+pKYnVU4HCrJW6GmFPEYXiYjX+?=
 =?us-ascii?Q?j/pKaGWj0EERMFV1xxRZQg3gjfShlj6c3rCXGKZSdZQW8I2/Jzwuk9AgC7np?=
 =?us-ascii?Q?QDCoDYawCv88UYSujqBJ9WIPl7fnWft/W7BxpZHY/x9JvIHjMF0DS9Olm1hw?=
 =?us-ascii?Q?cuurKOADZCTOwvkhoFRFbv7ZLFhXDjUcinQkSDg1yGvQ5zdBO3K3IzsBfoX4?=
 =?us-ascii?Q?Be0OjfFAXvLByyMxoAX3MixHSC9MU7yYLIoxQc/65dTNddKMS8Z8kxeUjbP2?=
 =?us-ascii?Q?o7N0uN3vJmU2xuIpo+k2DsiLx18x7IWrHZSsBeH/7WvkPeCy8dhAFwIyOiGh?=
 =?us-ascii?Q?YfRpS5tCqIoBx7WTj7ABoT2ZMMpPhKDc435JV1iJ0JcLhiHUyH0YrsLj7vAF?=
 =?us-ascii?Q?eROOCCIp8ryc8Mr9n7iYDTMYQVFXTzWo7TsyGtbkGyONrTGTWVYWgdMgjk4d?=
 =?us-ascii?Q?18a33vvZKI2YdIlLesO020csaPpPAseOSRqlT8YfvVTMODpsuIXKLzoGPPhh?=
 =?us-ascii?Q?lO7KSY9+aholSdwz5umZRFYVCMConVxD6GCRY1dwKhgnpE0I8okNtgOLyn/y?=
 =?us-ascii?Q?Iyd+WsiLR3bmjKoGeHkdggC9t/j7yKRFVKbNsjI2H0AdqctAePsiz+gmYlRN?=
 =?us-ascii?Q?mH0a97UI5vy0Mp6bJRXoUHQV19IqfiW5UCUAq8NR4cjpFovFstMMOesc/cs0?=
 =?us-ascii?Q?m8iktkim1NUI3iCMLgVEv7Hl4dbSaGg4hfNw6g8wzhBHpf/2CoFOdIOCPiaG?=
 =?us-ascii?Q?/I4RcTuRvqrl/d0SyOhQ/z+PGBB7ZjbhtgLOZhv/Z6Lxu1YQJZBazxSiqLRL?=
 =?us-ascii?Q?dBiOU+ufNp/h1CpCtLY+eelMZEzyMhwMyPQ2R0ckIqnLahL8vAb3VfL59xwf?=
 =?us-ascii?Q?pmndpm2+3BllYgYs05IReWY1?=
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:(13230040)(376014)(36860700013)(82310400026)(35042699022)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 12:36:09.6460
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 853dc5b6-62e1-48fb-9a1e-08dce85ef3ed
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:
	DU2PEPF0001E9C6.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB10732

Hi Ayan,

> On 9 Oct 2024, at 13:24, Ayan Kumar Halder <ayankuma@amd.com> wrote:
>=20
> Hi Bertrand/Stefano/all,
>=20
> Let me know if the explanation makes sense.
>=20
> On 09/10/2024 07:30, Bertrand Marquis wrote:
>> Hi Stefano,
>>=20
>>> On 9 Oct 2024, at 00:46, Stefano Stabellini <sstabellini@kernel.org> wr=
ote:
>>>=20
>>> On Tue, 8 Oct 2024, Oleksandr Tyshchenko wrote:
>>>>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> =
wrote:
>>>>>>=20
>>>>>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>>>=20
>>>>>> Add common requirements for a physical device assignment to Arm64
>>>>>> and AMD64 PVH domains.
>>>>>>=20
>>>>>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>>> ---
>>>>>> Based on:
>>>>>> [PATCH] docs: fusa: Replace VM with domain
>>>>>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@am=
d.com/
>>>>>> ---
>>>>>> ---
>>>>>> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++=
++
>>>>>> docs/fusa/reqs/index.rst                      |   1 +
>>>>>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>>>>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>>>>> 4 files changed, 428 insertions(+)
>>>>>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>>>>>=20
>>>>>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>>> b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>>> new file mode 100644
>>>>>> index 0000000000..a1d6676f65
>>>>>> --- /dev/null
>>>>>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>>> @@ -0,0 +1,365 @@
>>>>>> +.. SPDX-License-Identifier: CC-BY-4.0
>>>>>> +
>>>>>> +Device Passthrough
>>>>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>>>> +
>>>>>> +The following are the requirements related to a physical device
>>>>>> assignment
>>>>>> +[1], [2] to Arm64 and AMD64 PVH domains.
>>>>>> +
>>>>>> +Requirements for both Arm64 and AMD64 PVH
>>>>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>>>> +
>>>>>> +Hide IOMMU from a domain
>>>>>> +------------------------
>>>>>> +
>>>>>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>>>>>> +
>>>>>> +Description:
>>>>>> +Xen shall not expose the IOMMU device to the domain even if I/O
>>>>>> virtualization
>>>>>> +is disabled. The IOMMU shall be under hypervisor control only.
>>>>>> +
>>>>>> +Rationale:
>>>>> I think there should be a rationale here to explain why we do not wan=
t the
>>>>> IOMMU
>>>>> in particular to be assigned to a domain.
>>>>=20
>>>> ok, will add. I propose the following text:
>>>>=20
>>>> Xen having the whole picture of the host resources and device assignme=
nt
>>>> unlike the individual domain makes use of the IOMMU to:
>>>> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also kn=
own as
>>>> stage-2 (or 2nd stage) address translations for DMA devices passed thr=
ough to
>>>> domains and Interrupt Remapping on AMD64 platforms.
>>>> - provide access protection functionalities to prevent malicious or bu=
ggy DMA
>>>> devices from accessing arbitrary memory ranges (e.g. memory allocated =
to other
>>>> domains) or from generating interrupts that could affect other domains=
.
>>>>=20
>>>>=20
>>>>> Added to that, I am not completely sure that there is a clear way to =
test
>>>>> this one
>>>>> as for example one could assign registers not known by Xen.
>>>> I am afraid you are right, valid point. For example, on Arm64, if ther=
e is no
>>>> corresponding driver in use, we will end up exposing IOMMU dt node to =
Dom0.
>>>>=20
>>>>=20
>>>>> Shouldn't this requirement in fact be an assumption of use ?
>>>> Assumption of use on Xen? From my PoV sounds reasonable, will do.
>>> In my view, this does not qualify as an Assumption of Use, as it does
>>> not align with the definition we have used so far. If we were to
>>> categorize this as an Assumption of Use, we would need to change the
>>> definition.
>>>=20
>>> We have defined an Assumption of Use as something Xen expects from the
>>> rest of the system for it to function correctly, such as being loaded a=
t
>>> EL2. On the other hand, 'Requirements' refer to behaviors we expect Xen
>>> to exhibit.
>>>=20
>>> Our goal is for Xen to configure the IOMMU at boot using the stage 2
>>> translation, and to ensure that Xen prevents domains from altering the
>>> IOMMU configuration. These are specific expectations of Xen's behavior,
>>> so I believe they fall under Requirements and should be validated in
>>> some way.
>>>=20
>>> However, we could adjust the wording. For example, we might replace the
>>> negative phrasing with a positive requirement, such as: 'Xen shall
>>> configure the IOMMU at boot according to the stage 2 translation
>>> tables.' There is no need to explicitly state that the IOMMU is not
>>> exposed to guests, as nothing is exposed unless explicitly allowed or
>>> mentioned. We could, however, include a brief note about it for clarity=
.
>> I agree that this is the right way to turn the requirement into somethin=
g
>> that Xen shall do.
>>=20
>> Now i think we will need to have a discussion to clear up what to do wit=
h:
>> - assumption of use
>=20
> Assumption of use is something that other software/hardware components ne=
ed to do to ensure the correct behavior of Xen.
>=20
> For eg 1) AoU on hardware :- The hardware needs to support NS-EL2. The ha=
rdware needs to have GICv3, SMMUv3 as these are in the scope of safety cert=
ification. The hardware needs to have Cortex-A53  r0p4 as these have some e=
rrata fixes which affect Xen.

Ack

>=20
> 2) AoU on bootloader/firmware - 1) Bootloader/Firmware needs to load Xen =
in NS-EL2 mode. 2) Bootloader/Firmware needs to initialize DDR

Ack

>=20
> 3) AoU on compiler - 1) The GCC version used should be 5.1 or later.

Ack

>=20
> 4) AoU on domain - 1) Domains should not use HVC DCC registers as Xen doe=
s not emulate them.

Xen does not depend on that, the domain does so this is only a Xen expected=
 behaviour and we should document that Domains shall not use it.

Xen behaviour if used should be specified.

>=20
> The AoUs can either be tested or need to be stated explicitly in the safe=
ty manual.
>=20
>> - "integrator" (word always problematic in Fusa as usually use to bail o=
ut
>> and give responsibility to someone else) shall and shall not do (for exa=
mple
>> giving access to IOMMU registers to a domain)
>=20
> The responsibility with the integrator lies for things which cannot be te=
sted. For eg Xen has to be built with a particular configuration (eg SMMUv3=
) or a specific CPU errata. Integrator should provide at the most X amount =
of memory for each domain. SMMU (or any specific device) should not be assi=
gned to a domain (which should be under Xen's control).

Ack

>=20
> For some of the AoUs which cannot be tested (eg Bootloader/Firmare needs =
to initialize the DDR, CNTFRQ_EL0 needs to contain the correct system count=
er frequency), the responsibility will lie with the integrator.

This is an AoU on the firmware or the platform not on the integrator.

>=20
>> - interface and what we expect a domain will do with it
>=20
> This should be covered as part of AoU on domain. We can have more example=
s of this in near future.

In my mind interface are for example hypercall numbers and behaviours.
I would not expect to find this kind of stuff as AoU.

Cheers
Bertrand

>=20
> Kind regards,
>=20
> Ayan




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 12:47:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 12:47:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814468.1228026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syW5l-0001x6-Ga; Wed, 09 Oct 2024 12:47:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814468.1228026; Wed, 09 Oct 2024 12:47: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 1syW5l-0001wz-Dx; Wed, 09 Oct 2024 12:47:01 +0000
Received: by outflank-mailman (input) for mailman id 814468;
 Wed, 09 Oct 2024 12:46: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syW5j-0001wt-QG
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 12:46:59 +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 91e7cccf-863c-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 14:46:57 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c8af23a4fcso8286055a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 05:46:57 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05956ddsm5362302a12.4.2024.10.09.05.46.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 05:46:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91e7cccf-863c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728478017; x=1729082817; 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=+PAEXEyNXxZpXBH0DmJyIgi2OnYjQwe+ymSpgIbVRJ8=;
        b=Dtisr9grY9u9W/TMlaut7fdBskaL1wOg6+qGZwaw4fLUepgg3FyCJyuAnmjsn6V/WA
         3X6FrmXt4ns7EKX8XKDd/2UV8qwiAISGt6agM0a3+wzLcv13tLwWW4Y0hETYpFyVBGel
         xI7PBLZjRRwuhJsz41NME9jBb0GzX+3IIRnw+gYuVBbB8e/dvL43TuWmH7aP4jX7NHWG
         ZzgV2ybNAvgwGmrpLb+iyRYEw1/oWe53m2zRx9j0DTk1iSYCBVo49zBztqbBOumJdjrP
         nt/pNxkkHCoFcc8iGaSLM0W7+Ep+lBeprwrLfOAPCNs9i7NUoMH4+fbhwiK3NurGOmKW
         rfBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728478017; x=1729082817;
        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=+PAEXEyNXxZpXBH0DmJyIgi2OnYjQwe+ymSpgIbVRJ8=;
        b=dON95XQCTAgUOfCqX+TDNrnMlSosKBXHi9Qesnj/yG4gjSMu6wAzZcWpKrahd+Sxg/
         XahjTB/5bdnSKsO0Tej8/ZhxA3eW3j33vUJCD++oZsUYB/YGYSMOZH0Df8JYMO1LkiH1
         jMV8L6dMNajMJlt2lyBlzZ5Pnt75CLUSYB04tDu50diwWtXcDik/y2ctqPScBGv2pqo7
         X2MtwdYL0dPhvPUFeNC3TK73mUxqrfL8XW011+oXL6IVxHxzR9tNoBxdUqL7BNbfTsUr
         hFlUU0aIfYi06gYJyMqFqwn2eVldv7VhJWLiaFXZGVcnTGNOd3ha+OHlEmx6UJey6meD
         GWoQ==
X-Forwarded-Encrypted: i=1; AJvYcCWkOqFgN3DCO+JPYDIyZo1xz307tYIl32tZYQbT2qWZpA8YV1Fa6slEyW0J6X46yU3mPZ1y/UPlnHY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzLkkkZPIQZyslabe4TISR7Xv9vnk8in7PXRYXsPjtGtL91LGAF
	nQoQgvnpcyI8cz6AwjC6CZMYlTnySyf35vsq186DP6Jzfaa/XVM94HBPONf+cw==
X-Google-Smtp-Source: AGHT+IHtD9v4gOB2XNV+UJgO5oW+5kivkwW4gemD8dECeabeHoKRMrQWvF4SzsD+9Hg0zihZSL6rzQ==
X-Received: by 2002:a05:6402:510e:b0:5c9:60a:5bc2 with SMTP id 4fb4d7f45d1cf-5c91d5ace0emr1818485a12.17.1728478017091;
        Wed, 09 Oct 2024 05:46:57 -0700 (PDT)
Message-ID: <5dde56e2-e8c6-44f6-b1ec-395b15294778@suse.com>
Date: Wed, 9 Oct 2024 14:46:56 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, xen-devel@lists.xenproject.org,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
 <ZwZlVlU2nHkBedyo@macbook.local>
 <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>
 <ZwZtR6ZTl2gUWN2T@macbook.local>
 <34f73ec6-0e10-41f4-8894-c367264afefc@suse.com>
 <33525b82-04bf-4d66-b917-8c2c71ff4ef2@vates.tech>
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: <33525b82-04bf-4d66-b917-8c2c71ff4ef2@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 14:28, Teddy Astie wrote:
> Hello,
> 
> Le 09/10/2024 à 14:09, Jan Beulich a écrit :
>> On 09.10.2024 13:47, Roger Pau Monné wrote:
>>> On Wed, Oct 09, 2024 at 01:28:19PM +0200, Jan Beulich wrote:
>>>> On 09.10.2024 13:13, Roger Pau Monné wrote:
>>>>> I also think returning an error when no device in the IVMD range is
>>>>> covered by an IOMMU is dubious.  Xen will already print warning
>>>>> messages about such firmware inconsistencies, but refusing to boot is
>>>>> too strict.
>>>>
>>>> I disagree. We shouldn't enable DMA remapping in such an event. Whereas
>>>
>>> I'm not sure I understand why you would go as far as refusing to
>>> enable DMA remapping.  How is a IVMD block having references to some
>>> devices not assigned to any IOMMU different to all devices referenced
>>> not assigned to any IOMMU?  We should deal with both in the same
>>> way.
>>
>> Precisely because of ...
>>
>>> If all devices in the IVMD block are not covered by an IOMMU, the
>>> IVMD block is useless.
>>
>> ... this. We simply can't judge whether such a useless block really was
>> meant to cover something. If it was, we're hosed. Or maybe we screwed up
>> and wrongly conclude it's useless.
>>
>>>   But there's nothing for Xen to action, due to
>>> the devices not having an IOMMU assigned.  IOW: it would be the same
>>> as booting natively without parsing the IVRS in the first place.
>>
>> Not really, no. Not parsing IVRS means not turning on any IOMMU. We
>> then know we can't pass through any devices. We can't assess the
>> security of passing through devices (as far as it's under our control)
>> if we enable the IOMMU in perhaps a flawed way.
>>
>> A formally valid IVMD we can't make sense of is imo no different from
>> a formally invalid IVMD, for which we would return ENODEV as well (and
>> hence fail to enable the IOMMU). Whereas what you're suggesting is, if
>> I take it further, to basically ignore (almost) all errors in table
>> parsing, and enable the IOMMU(s) in a best effort manner, no matter
>> whether that leads to a functional (let alone secure [to the degree
>> possible]) system.
>>
>> What I don't really understand is why you want to relax our checking
>> beyond what's necessary for the one issue at hand.
>>
>>>> the "refusing to boot" is interrupt remapping related iirc, if x2APIC
>>>> is already enabled. We need to properly separate the two (and the
>>>> discussion there was started quite a long time ago, but it got stuck at
>>>> some point); until such time it is simply an undesirable side effect of
>>>> the inappropriate implementation that in certain case we fail boot when
>>>> we shouldn't.
>>>
>>> Yes, but that's a different topic, and not something I plan to fix as
>>> the scope of this patch :).
>>
>> Sure, I'm merely asking to accept that, until that's resolved, issues
>> with boot failure can result here, and need to be lived with.
> 
> Would it be possible to find a middle-ground by adding a "non-security 
> supported" xen command-line option to allow a workaround on this issue ?
> 
> Something like iommu=amd-skip-unknown-ivmd ?

Do we need to go as far? Isn't "iommu=off" enough of a (boot) workaround?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:03:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:03:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814477.1228036 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syWLq-0007q1-O0; Wed, 09 Oct 2024 13:03:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814477.1228036; Wed, 09 Oct 2024 13: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 1syWLq-0007pu-LQ; Wed, 09 Oct 2024 13:03:38 +0000
Received: by outflank-mailman (input) for mailman id 814477;
 Wed, 09 Oct 2024 13: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=3FS1=RF=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1syWLp-0007pn-IH
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:03:37 +0000
Received: from fhigh-a7-smtp.messagingengine.com
 (fhigh-a7-smtp.messagingengine.com [103.168.172.158])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e3f2a4dd-863e-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 15:03:35 +0200 (CEST)
Received: from phl-compute-07.internal (phl-compute-07.phl.internal
 [10.202.2.47])
 by mailfhigh.phl.internal (Postfix) with ESMTP id BE7011140134;
 Wed,  9 Oct 2024 09:03:33 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-07.internal (MEProxy); Wed, 09 Oct 2024 09:03:33 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 9 Oct 2024 09:03:32 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e3f2a4dd-863e-11ef-99a2-01e77a169b0f
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=1728479013;
	 x=1728565413; bh=squVh82A+17agJhu9kUlsgyrf2aSoEqr3LWa8V+7ZyI=; b=
	jbR9Jqht7lmfx03NyRwHGB5cG5E+C9TEW4O5WNJiNh4Ob3h4zNTf/n2dQN81WIge
	TlKrmG+aoMM8L8nLD3GEGqI36hMLXG6OqGhn70EHuY6XGpgU3o4xJhN2B18baSTT
	JRHvH0jPEqhhSIncmq1mbWhMWUiY3fcvvypwgAlg4WZQ3w6auG0h5Iy/zJezbQPG
	LE8OJ6FpCjJWa3cTx+0QI+EkIFphxju+7aL44ldWvk80k7zOHWDGLR78YvB/haci
	E9p+ICo3Sh8qjK6dGYwu8xafC6ld5JWYI+xY2ez2lCG6HSsCN3lpkpYzCRsRFYMU
	Ozkb5zUrpT8SquplauHKZw==
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=1728479013; x=1728565413; bh=squVh82A+17agJhu9kUlsgyrf2aS
	oEqr3LWa8V+7ZyI=; b=Nupojcs2/Vm/Ys6ZA2VQggpwB5dRgTJsmJ8fvUYa5fbe
	5yh4jhQ55Y5uACHN7PlreUJeEdYBeulzD35+/vw1uQJCvgX32LYSoNEU/F4XpR0q
	a1+Am3E3wj0Bm/+vlIThLV8zJuQOVxL3saqXwVxhbx0U+tGgEUH2/2+IZrtO0qae
	Kn127d0x6hly45Qv39VYizl5waGz9Q1MiyxQ15uEsLWrxFxFJzxDA/UuFisDX6z3
	28TlAsIRSDDt1IrvUqYJ4vyzUXlDmImEHH12YQimTwsY1xMxlmFlZv5qmXt5cdxi
	WnYaBpIcvLsbOXBnUklAiT+s7QUlogK8NZ1XDSVPFg==
X-ME-Sender: <xms:JX8GZ4uk--R95ILBZBRA15ICY9aeIQ7GY-8GIvf1IgNr-xofC3E23Q>
    <xme:JX8GZ1cNFBeFyRITmxgaipOZ0JwbAypUMXOfcl8MNMMmZ4Y_w2riZ0xfvJhjslemY
    m0DcHoWds7S0Q>
X-ME-Received: <xmr:JX8GZzwwGo1T--5gMXkHAFztENb3C83wuS5rD6iOaNAGYu-SvcosFtog4TON-isbaTZi1c2z8-ixkY8M6ldfwx4HDEXwakA0OA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdeffedgiedvucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohephedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepjhhgrhho
    shhssehsuhhsvgdrtghomhdprhgtphhtthhopehjsggvuhhlihgthhesshhushgvrdgtoh
    hmpdhrtghpthhtoheprghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdp
    rhgtphhtthhopegrnhhthhhonhihrdhpvghrrghrugesvhgrthgvshdrthgvtghhpdhrtg
    hpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhhojhgvtghtrdhorhhg
X-ME-Proxy: <xmx:JX8GZ7Pdr1-HdsFDA234QhhY3NbfnEEbXFlSbXXNOsZTVQ7-1vHayA>
    <xmx:JX8GZ4_7V5buv_wQ-3Qf7nEK1zW_hNJUA_LZrihqucMIsfQcO8WM9A>
    <xmx:JX8GZzUyM3pkavxbj-d4K4wxLuh8B1mpAt-18itRiEx8zTe9wt14fQ>
    <xmx:JX8GZxeQYbgDWKJY9TU0LMkUxbJPWjNNJvJISdC6iMM5svJRmIrTTw>
    <xmx:JX8GZ8ZqVs7LGxwOKeArdMzQs-895e9IeCF6HzrgBjQ6q7QfXCoYVS4O>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 9 Oct 2024 15:03:28 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel
Message-ID: <ZwZ_IoNFwDjTaFi1@mail-itl>
References: <20241008213225.728922-1-marmarek@invisiblethingslab.com>
 <226bc9b3-6741-4cb6-917b-1164e340a19d@suse.com>
 <ZwZScGr75xEolDnS@mail-itl>
 <00ac0665-e4ff-4a56-8537-e81573710c3c@suse.com>
 <e3917457-08d4-4f0c-9e0c-1519952ceed9@suse.com>
 <dde4b510-5674-44d0-9493-a0717387b8d6@citrix.com>
 <99089b03-e9f0-4fe8-94b2-11e75f9e5243@suse.com>
 <e7ebec95-e6f0-491f-8fb4-afe7ee505b07@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="RQ3gHDxdVH0J8CGD"
Content-Disposition: inline
In-Reply-To: <e7ebec95-e6f0-491f-8fb4-afe7ee505b07@suse.com>


--RQ3gHDxdVH0J8CGD
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 9 Oct 2024 15:03:28 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/xg: increase LZMA_BLOCK_SIZE for uncompressing the
 kernel

On Wed, Oct 09, 2024 at 01:38:32PM +0200, J=C3=BCrgen Gro=C3=9F wrote:
> On 09.10.24 13:15, Jan Beulich wrote:
> > On 09.10.2024 13:08, Andrew Cooper wrote:
> > > On 09/10/2024 11:26 am, Juergen Gross wrote:
> > > > On 09.10.24 12:19, Jan Beulich wrote:
> > > > > On 09.10.2024 11:52, Marek Marczykowski-G=C3=B3recki wrote:
> > > > > > On Wed, Oct 09, 2024 at 09:19:57AM +0200, Jan Beulich wrote:
> > > > > > > On 08.10.2024 23:32, Marek Marczykowski-G=C3=B3recki wrote:
> > > > > > > > --- a/tools/libs/guest/xg_dom_bzimageloader.c
> > > > > > > > +++ b/tools/libs/guest/xg_dom_bzimageloader.c
> > > > > > > > @@ -272,8 +272,7 @@ static int _xc_try_lzma_decode(
> > > > > > > >  =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return retval;
> > > > > > > >  =C2=A0 }
> > > > > > > >  =C2=A0 -/* 128 Mb is the minimum size (half-way) documente=
d to work for
> > > > > > > > all inputs. */
> > > > > > > > -#define LZMA_BLOCK_SIZE (128*1024*1024)
> > > > > > > > +#define LZMA_BLOCK_SIZE (256*1024*1024)
> > > > > > >=20
> > > > > > > That's as arbitrary as before, now just not even with a comme=
nt at
> > > > > > > least
> > > > > > > hinting at it being arbitrary. Quoting from one of the LZMA A=
PI
> > > > > > > headers:
> > > > > > >=20
> > > > > > >  =C2=A0=C2=A0=C2=A0=C2=A0 * Decoder already supports dictiona=
ries up to 4 GiB - 1 B (i.e.
> > > > > > >  =C2=A0=C2=A0=C2=A0=C2=A0 * UINT32_MAX), so increasing the ma=
ximum dictionary size of the
> > > > > > >  =C2=A0=C2=A0=C2=A0=C2=A0 * encoder won't cause problems for =
old decoders.
> > > > > > >=20
> > > > > > > IOW - what if the Linux folks decided to increase the diction=
ary size
> > > > > > > further? I therefore wonder whether we don't need to make thi=
s more
> > > > > > > dynamic, perhaps by peeking into the header to obtain the dic=
tionary
> > > > > > > size used. The one thing I'm not sure about is whether there =
can't be
> > > > > > > multiple such headers throughout the file, and hence (in prin=
ciple)
> > > > > > > differing dictionary sizes.
> > > > > >=20
> > > > > > What is the purpose of this block size limit? From the error
> > > > > > message, it
> > > > > > seems to be avoiding excessive memory usage during decompressio=
n (which
> > > > > > could be DoS via OOM). If that's the case, then taking the limi=
t from
> > > > > > the kernel binary itself will miss this point (especially in ca=
se of
> > > > > > pygrub or similar, but there may be other cases of not-fully-tr=
usted
> > > > > > kernel binaries).
> > > > >=20
> > > > > Indeed. The question then simply is: Where do we want to draw the=
 line
> > > > > between what we permit and what we reject?
> > > >=20
> > > > IMHO the most natural solution would be to use guest memory for this
> > > > purpose.
> > > > OTOH this probably would require a significant rework of libxengues=
t.
> > >=20
> > > That was XSA-25.=C2=A0 There are toolstack-provided limits on kernel&=
initrd
> > > sizes.
> >=20
> > Which probably can't be directly applied to dictionary size used during
> > (de)compression.
>=20
> My point still stands: using GUEST memory for all the decompression work
> would avoid all these problems. If the guest memory isn't sufficient, a
> decompression by e.g. grub wouldn't work either.

Doing that would probably require mapping guest memory to dom0 for this
purpose. And probably quite severe changes to the decompressing code
(liblzma?) to actually use that memory instead of standard heap. I don't
think it's a feasible short term fix.
Theoretically this could be made configurable (if nothing else, then via
an env variable or even build-time setting...), but honestly it feels
like an overkill.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcGfyIACgkQ24/THMrX
1yyDvggAh2Pi0Dskb2/8UOse7aRnfwMAdrw0rOhHEpE8tmMpwwwcrPAj5RXr67Jl
7WY+iyJNs5/skr+lw7s+v2r80P9lWaUVntZdSZeAXKjpfIw563mIhwbirbLU4KXl
T/ox4dMwJjGh3qUqtHwIAsjFz50dQpBDmvRnmcBrt4aBpv8FwSr3YVvHhK5sjQC8
cDjVbvXlr4TFDq6TyF6PLP4Ua2sbSo322k1COwrRS/2KFqU8p/s7xwn60xWzTYMn
8HxhrR8ztWspMZtn+u0siWcuQzNuFVZIW4dwgXvzcCT5gWaMUR/Ak391u2k9oerb
z3B3zf0F3iSPQTlNBbBZetbHilpb6A==
=AtHa
-----END PGP SIGNATURE-----

--RQ3gHDxdVH0J8CGD--


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:12:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:12:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814485.1228047 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syWUM-0002aZ-IV; Wed, 09 Oct 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 814485.1228047; Wed, 09 Oct 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 1syWUM-0002aS-F4; Wed, 09 Oct 2024 13:12:26 +0000
Received: by outflank-mailman (input) for mailman id 814485;
 Wed, 09 Oct 2024 13:12: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syWUK-0002aM-Hi
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:12:24 +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 1f51d31f-8640-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 15:12:23 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3f28b6so9387220a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:12:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05f3be4sm5424680a12.92.2024.10.09.06.12.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 06:12:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f51d31f-8640-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728479543; x=1729084343; 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=b5ljwUT2SaGVNfq37cbAoJg0rB9hFbQJjg6v2nncNeY=;
        b=YYZ52XtTKi32Z0S34XwSKlaGpHBIluG++U6vW9VMYGtee8hRbZKbUnpQ5Koit3/1GB
         q3TsO4BMuiXuA/ibP2UjvP8k6TMoc9D9dV3wXgsseUXgPa0b/k6odRensze7Z80RgYy0
         pGfnrwWd1/DgtnUkq0CVWkBfXnNmb2FtI5+eVhXoiG0v9dSNER+Ykma7cvPRQbn8n/R2
         SetSulq2JqdevUIaleAw3Ni++lPsfm2XiZBXmX+lQPyxqyqf0wDLSB8DXCJoyyH/midH
         pjd70JRFCWLXKgLowEsqrzrev6C1+EvcnOVO3LiEhj5ZDtxSOo7V+bewcBZi9FS9N16l
         aPjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728479543; x=1729084343;
        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=b5ljwUT2SaGVNfq37cbAoJg0rB9hFbQJjg6v2nncNeY=;
        b=PmhvF7vXXEdRC10GlKSliQX8yYJ9tIz2ZGrNsEDbRY45SNtLjknZSQYzpVyrnB3OfN
         qXDH0XvYg6Mrq7kY76uGmFPNw90E3W2WXpmYXIbZambq+zDwr+78jWx4E9EeyXO60alw
         Ep6ctIUJ5GIhKiJXs6ni8UUyWgUarMAnURVGOBL09naATiN34BluScUNovIb5csoIeMm
         EaWTdTxtU9cfPr6IdUq2eOVSBG1G85ELb4H2Tj+JiTgN+K8hyRxWRTh08GeVvj8+bmf4
         avVKRsoRXSVGLnMRvjWk1dT+avdwlwErpx7bSbOrYakn5ZRZ2m1v4X2wERizcB93ECf/
         TDHw==
X-Forwarded-Encrypted: i=1; AJvYcCXiWotzPomMWvbAnPFttm7wkELna9ubmbIQImUmt0ayPK/RYV/Jgb/oJjkDl66fOvCbgZzouU2arwE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzlS1qQeZRGs0f8YLsRQpTRnFyCqiN5p7Kvk1ldvxHl2qkn3fAm
	An3HQH/Pc50UjCWoIeNJMyxtAXtHR28c+0K90ID/6pybyJKyAWuYdApyPi5RXw==
X-Google-Smtp-Source: AGHT+IFJ75ry0ahExTUzgABHX5bKkPUQz+rIv+3wNzE3FpvoXPh8AZe5r0YmOvtklspkXKqwLIKoCQ==
X-Received: by 2002:a05:6402:4309:b0:5c8:8626:e41 with SMTP id 4fb4d7f45d1cf-5c91d5bd3c8mr2087466a12.4.1728479542730;
        Wed, 09 Oct 2024 06:12:22 -0700 (PDT)
Message-ID: <c8b35378-d677-4c28-9304-530269178225@suse.com>
Date: Wed, 9 Oct 2024 15:12:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 03/11] xen/x86: Add initial x2APIC ID to the per-vLAPIC
 save area
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-4-alejandro.vallejo@cloud.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: <20241001123807.605-4-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:37, Alejandro Vallejo wrote:
> @@ -311,18 +310,15 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
>  
>      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.
> +         * Don't expose topology information to PV guests. Exposed on HVM
> +         * along with x2APIC because they are tightly coupled.
>           */
> -        if ( p->basic.x2apic )
> +        if ( is_hvm_domain(d) && p->basic.x2apic )

This change isn't mentioned at all in the description, despite it having the
potential of introducing a (perceived) regression. See the comments near the
top of calculate_pv_max_policy() and near the top of
domain_cpu_policy_changed(). What's wrong with ...

>          {
>              *(uint8_t *)&res->c = subleaf;
>  
>              /* Fix the x2APIC identifier. */
> -            res->d = v->vcpu_id * 2;
> +            res->d = vlapic_x2apic_id(vcpu_vlapic(v));

...

            res->d = is_hvm_domain(d) ? vlapic_x2apic_id(vcpu_vlapic(v))
                                      : v->vcpu_id * 2;

?

> --- a/xen/arch/x86/hvm/vlapic.c
> +++ b/xen/arch/x86/hvm/vlapic.c
> @@ -1090,7 +1090,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;

Any reason you're open-coding vlapic_x2apic_id() here and ...

> @@ -1470,7 +1470,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));

... here?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:20:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:20:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814491.1228057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syWcM-0005rG-CK; Wed, 09 Oct 2024 13:20:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814491.1228057; Wed, 09 Oct 2024 13: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 1syWcM-0005r9-8J; Wed, 09 Oct 2024 13:20:42 +0000
Received: by outflank-mailman (input) for mailman id 814491;
 Wed, 09 Oct 2024 13: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=XgrK=RF=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syWcL-0005r3-0b
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:20:41 +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 46c9b883-8641-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 15:20:39 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b3e1so9418032a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:20:39 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9949c54efdsm507455166b.60.2024.10.09.06.20.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 06:20:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 46c9b883-8641-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728480038; x=1729084838; 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=wOsNSigtz0hhZv3+Htt0LvedX7W4FVMiSdYS+/0R6oM=;
        b=YHN5QWiM0FHbxwqCpmzLWdBoI+N5dlfhvAU4cYS8J6mYlo1E08UFsG0XZfsgolJH/S
         3vP++cW8eIRWz4ReqqhfXkO0t7zcoxWLbWx6loAzrGcGt3PSs0WECWjuAbJbjiUUqWg/
         9cZ0mkhimVrfznrAo+qXWkVATQ0BuBDPERvSU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728480038; x=1729084838;
        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=wOsNSigtz0hhZv3+Htt0LvedX7W4FVMiSdYS+/0R6oM=;
        b=Eheyp2xp7/k7h44/nsgSMW62IgDV4h0l0nupE2fUMFiJVTdQql83+o0ZiNAQyfuVg9
         UoK5LYGISz2sVQ4FFtjGSBq2dlayXqh7/G4BMHgYEsFJRasZUdmrfoovCEwrb6KXh8xq
         ockjJj/EnirhuBubD6ANtcx7YjqpuVlIMwaYZQdPrBgvNqjuRv/XDRzpcrADgoNnm6mv
         5LiCKd6KGGlzJoJsKRfoRyXoB/AgurOHdxuz+bsD8CvKoUgasZ+ZAr5P7BOmk14+soXb
         wzmme0UIcKPSyTDbNeqCCORkpiCucC0L3NvkOeh1So57+WyXeANbmmfrLAXtm9p0Do9q
         dEEA==
X-Forwarded-Encrypted: i=1; AJvYcCVoYmnsgQ+pXfCoh82kFL7oT0RT5Ch5VlyvIdkoa0zn6SkTjzEf0rx4PVM8S5nVPq4lhK/s/F4wqtY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzECAq81VSOkmSOGI6H+lqqPiRxWcQGX6t/9oyNS+92LadTNP34
	vo8/vu6qHXKAhlcWn7VJn53L5angq2KOx71V5QzPiU2BX66CXez1ppaaap81595VRWPxHYSPu/r
	9wLs=
X-Google-Smtp-Source: AGHT+IFLwy6WSDUK5rWV8LdzCcMXGAti9QDrsAPN7anoVnlyzcNTcR56P4cPvJe3+TyO78nGwyPTog==
X-Received: by 2002:a17:906:d265:b0:a86:c1ff:c973 with SMTP id a640c23a62f3a-a998d314beamr237038766b.47.1728480038547;
        Wed, 09 Oct 2024 06:20:38 -0700 (PDT)
Message-ID: <a7b6fc68-a568-4b61-895d-c295ba3d3095@citrix.com>
Date: Wed, 9 Oct 2024 14:20:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/7] byteorder: replace __u16
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09/10/2024 10:21 am, Jan Beulich wrote:
> In {big,little}_endian.h the changes are entirely mechanical, except for
> dealing with casting away of const from pointers-to-const on lines
> touched anyway.
>
> In swab.h the casting of constants is done away with as well - I simply
> don't see what the respective comment is concerned about in our
> environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
> architecture, sizeof(long long) >= 8). The comment is certainly relevant
> in more general cases. Excess parentheses are dropped as well,
> ___swab16()'s local variable is renamed, and __arch__swab16()'s is
> dropped as being redundant with ___swab16()'s.
>
> With that no uses of the type remain, so it moves to linux-compat.h.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> I'm unconvinced of the need of the separate ___constant_swab16(). I'm
> also unconvinced of the need for said constants (that even had casts on
> them).

There is a still-good series deleting the whole of byteorder/ and
replacing it with a few-hundred line single header.

It is the second thing stalled on a governance change (prohibited
reasons to object to a change) which clearly no-one gives a damn about
fixing.  In fact double spite because it denied a good engineer his
first changes in Xen.


I don't particularly feel like trying to polish byteorder.  I'm inclined
to rebase+repost Lin's patches, at which point the majority of this
series simply disappears.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:29:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:29:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814504.1228067 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syWkS-0007lO-6w; Wed, 09 Oct 2024 13:29:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814504.1228067; Wed, 09 Oct 2024 13:29: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 1syWkS-0007lH-4D; Wed, 09 Oct 2024 13:29:04 +0000
Received: by outflank-mailman (input) for mailman id 814504;
 Wed, 09 Oct 2024 13:29: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syWkQ-0007jn-IX
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:29:02 +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 71de4b0b-8642-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 15:29:00 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c928611371so664044a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:29:00 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05f3c8csm5699368a12.83.2024.10.09.06.28.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 06:29:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 71de4b0b-8642-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728480540; x=1729085340; 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=VJlNpygJI8V0z2uzn3ha0JActOcXYeVEpIMmyywt14c=;
        b=MtbmFO0wjQt/HhN2SgBjkawPPUMDZI1Q70PxlAJThlphEs0dH3kbFXh6KiS87dpYVy
         Btc9sFqrHwI4azgjI2vW4qJ1WCaDWzn5U71EHmuMpmE6d9BaclS9LMd3RO8BuuUBdATQ
         eNGtD+FH7QIGZ7Ud/PzY483EYXWcjll9uLXOE9KeKf4pAFiv+Rz1uL9zOkIs4L1ibwEX
         Ja3jjJejosEzQCy+F8FWDR/tii1OASl+jd3YUulq3nkyL3ZkMJQGbUp0594V59pVK92m
         vBtXkkOEpW8OCpXHsCJ8fzdW+BDH0hgMQKlaDlUNH6nzIH7heWMTFQmtAiG5Nfm86hg3
         vb0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728480540; x=1729085340;
        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=VJlNpygJI8V0z2uzn3ha0JActOcXYeVEpIMmyywt14c=;
        b=ncuseSXej6L/TyXBfbhZb0ENr/m3ehD476lo4xZSOSmZxKYWh95qeB81pQFCr7z574
         1agD6BEl0G01LmTXOziGocp4tzRRoF8XNbSIzTLavqDtNihjPOJJOnt3T7E49js3t372
         N6myTdCIRWitOW8STQKYYeBd4IKZ+24XpLiHOjBbtBQuOoMPTjIktlJHM/uEqH4Xi043
         f/N+IYN2YAMbe20X07ZnV82G73DA8FKhI71fe/9dmZ7NlQjxtbG708WqpRk/FKmuiN12
         ijUW5RdFPsAziRr4uy4hRsIK94Qf491Dp3m4GYgWplteFPNZwGqq2JKTdPLppCIJa3wZ
         bJ6A==
X-Forwarded-Encrypted: i=1; AJvYcCX7dv8RFnGJg8VYALpRmyuHf5mJ49V+qLbRjPwsAFx7KMg4MeHqZxBzBtDbaUXDBBvcHTeFpN8HE48=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwmRWdTmv3l1wR0gSDyAe/gyUUr4fXhrzCv/grNKZz9mFKDJ8KH
	gXjfA5dSynxx8sKoDWeN1CncesWXO+Lp7nLKlxvok/Ggh9dYULdFcWPwOun3pQ==
X-Google-Smtp-Source: AGHT+IE+U6UURqm1SLsdhcGh0XqtqRWzPW0o3y63D9ya4Gts8cyF5UgE44APYgS4wbtU+NL50G77Fw==
X-Received: by 2002:a05:6402:43cb:b0:5c8:bb09:a9b3 with SMTP id 4fb4d7f45d1cf-5c91d58bf20mr2247930a12.10.1728480540267;
        Wed, 09 Oct 2024 06:29:00 -0700 (PDT)
Message-ID: <acb85f02-351d-4ca2-9fd2-276276ed1c8e@suse.com>
Date: Wed, 9 Oct 2024 15:28:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 04/11] xen/x86: Add supporting code for uploading LAPIC
 contexts during domain create
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: 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: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-5-alejandro.vallejo@cloud.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: <20241001123807.605-5-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:38, Alejandro Vallejo wrote:
> If toolstack were to upload LAPIC contexts as part of domain creation it

If it were to - yes. But it doesn't, an peeking ahead in the series I also
couldn't spot this changing. Hence I don#t think I see why this change
would be needed, and why ...

> would encounter a problem were the architectural state does not reflect
> the APIC ID in the hidden state. This patch ensures updates to the
> hidden state trigger an update in the architectural registers so the
> APIC ID in both is consistent.
> 
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> ---
>  xen/arch/x86/hvm/vlapic.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
> index 02570f9dd63a..a8183c3023da 100644
> --- a/xen/arch/x86/hvm/vlapic.c
> +++ b/xen/arch/x86/hvm/vlapic.c
> @@ -1640,7 +1640,27 @@ static int cf_check lapic_load_hidden(struct domain *d, hvm_domain_context_t *h)
>  
>      s->loaded.hw = 1;
>      if ( s->loaded.regs )
> +    {
> +        /*
> +         * We already processed architectural regs in lapic_load_regs(), so
> +         * this must be a migration. Fix up inconsistencies from any older Xen.
> +         */
>          lapic_load_fixup(s);
> +    }
> +    else
> +    {
> +        /*
> +         * We haven't seen architectural regs so this could be a migration or a
> +         * plain domain create. In the domain create case it's fine to modify
> +         * the architectural state to align it to the APIC ID that was just
> +         * uploaded and in the migrate case it doesn't matter because the
> +         * architectural state will be replaced by the LAPIC_REGS ctx later on.
> +         */

... a comment would need to mention a case that never really happens, thus
only risking to cause confusion.

Jan

> +        if ( vlapic_x2apic_mode(s) )
> +            set_x2apic_id(s);
> +        else
> +            vlapic_set_reg(s, APIC_ID, SET_xAPIC_ID(s->hw.x2apic_id));
> +    }
>  
>      hvm_update_vlapic_mode(v);
>  



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:34:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:34:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814513.1228077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syWpN-0001Iw-Nu; Wed, 09 Oct 2024 13:34:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814513.1228077; Wed, 09 Oct 2024 13:34: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 1syWpN-0001Ip-LE; Wed, 09 Oct 2024 13:34:09 +0000
Received: by outflank-mailman (input) for mailman id 814513;
 Wed, 09 Oct 2024 13: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syWpM-0001Ii-Ce
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:34:08 +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 2883718a-8643-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 15:34:07 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a994ecf79e7so92251566b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:34:07 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994ce357b2sm493884066b.144.2024.10.09.06.34.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 06:34:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2883718a-8643-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728480847; x=1729085647; 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=pO70ZWUWUT/WLY9hq9dglcxyf5Inf+MgDcSO9dJxveE=;
        b=WhXb16EJSz971wiuWv2Ln4iFggjvv7+JI4L1pdIdM28K2T2dLvT6EciZmrCUw09/dA
         xGN45i6G6pcPMIpnNOtzok9MzFCBQNGj2BiykSqa7BQvjHt+C8jb6fBIbCOeUwdLicGH
         o6ApmDro9/0IEaBheCaO1lYQEtH9Zg8N0NocqPdFQduvuxky0EgWiohT3Esoot3NYvJ0
         bGm2pQ6I95bZXfK5RjCd0wkPa2irw0po2b/z0HPgCKq9eYiutHwunZ9qFtjuwyeX44fO
         JWe4Cr92Kcy85DvldZo04WmffujuP0iCNhGMBzbX2X4bf0AxHWOcqwOh+Rs24ZErxZzD
         OsRw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728480847; x=1729085647;
        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=pO70ZWUWUT/WLY9hq9dglcxyf5Inf+MgDcSO9dJxveE=;
        b=MapzdbKnvESgz8pIaMHCDoAZrFAMEiUdDCu6ApxwrGvvGWNseigbuPOebZChmnuBOE
         SY/V6sdvIQ73FZx2slzNw439XDAXK5AgnRivstB1t43gCmoDH1QpskVjjMsU3uNKPaYQ
         qhHYvCUfgsiXidOMPT7595NCCoco+/F37uHzBMmS053gAstdXG2I9Vub0y4trqB944LK
         blmcRhqfX+06aAwfm4/+DHxMqG/Aw28CR5MFiQudzHwRbsPggMVyAAzrtlkd7vGrzg5N
         a6yE6m+CO1LP58gXl3ezfHGdulokuPebCB3pjnCyp/E9IYAg16lR+21dNUMFDUq1mNCG
         gZ9g==
X-Forwarded-Encrypted: i=1; AJvYcCX+rYpAT/PD3RaVz6iCPEDkzWLnBpV2yG6+c2NAfLxyu9H4FPLBzyZoyuP3UxVkBY33VdI8DfGHFjo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwyPsMPJGb8g8yTXGVt0G4j8k2g/A/5g1KTfrmfYSLSYpVnrGWD
	zJSja8v1rxRr6A24r0y+Kqt6NgwxVrtoCDhrEvm/1s0i+ny2AcWngcKPcnbRcw==
X-Google-Smtp-Source: AGHT+IHTQRflfurRT0jF+OXwzrgxvWwxSGPwVfFxNHUbzdDdiX50TWNkQHC2kJcKtjGmA0Vp0/JMiw==
X-Received: by 2002:a17:907:8688:b0:a99:43b2:417e with SMTP id a640c23a62f3a-a998d34dceemr213191866b.62.1728480846625;
        Wed, 09 Oct 2024 06:34:06 -0700 (PDT)
Message-ID: <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@suse.com>
Date: Wed, 9 Oct 2024 15:34:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/7] byteorder: replace __u16
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
 <a7b6fc68-a568-4b61-895d-c295ba3d3095@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: <a7b6fc68-a568-4b61-895d-c295ba3d3095@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 15:20, Andrew Cooper wrote:
> On 09/10/2024 10:21 am, Jan Beulich wrote:
>> In {big,little}_endian.h the changes are entirely mechanical, except for
>> dealing with casting away of const from pointers-to-const on lines
>> touched anyway.
>>
>> In swab.h the casting of constants is done away with as well - I simply
>> don't see what the respective comment is concerned about in our
>> environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
>> architecture, sizeof(long long) >= 8). The comment is certainly relevant
>> in more general cases. Excess parentheses are dropped as well,
>> ___swab16()'s local variable is renamed, and __arch__swab16()'s is
>> dropped as being redundant with ___swab16()'s.
>>
>> With that no uses of the type remain, so it moves to linux-compat.h.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> I'm unconvinced of the need of the separate ___constant_swab16(). I'm
>> also unconvinced of the need for said constants (that even had casts on
>> them).
> 
> There is a still-good series deleting the whole of byteorder/ and
> replacing it with a few-hundred line single header.
> 
> It is the second thing stalled on a governance change (prohibited
> reasons to object to a change) which clearly no-one gives a damn about
> fixing.  In fact double spite because it denied a good engineer his
> first changes in Xen.
> 
> 
> I don't particularly feel like trying to polish byteorder.  I'm inclined
> to rebase+repost Lin's patches, at which point the majority of this
> series simply disappears.

I wouldn't mind you doing so, as long as that other series then progresses.
What I don't want to get into is the other series being stuck rendering this
one stuck, too. Then it would imo be better to take this one first, rebase
the other on top, and work towards it becoming unstuck (whatever that takes;
I have no recollection of what the issue was back at the time, all I recall
is that, yes, there was such work at some point).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:37:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:37:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814519.1228087 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syWsJ-00021v-4j; Wed, 09 Oct 2024 13:37:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814519.1228087; Wed, 09 Oct 2024 13:37: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 1syWsJ-00021o-25; Wed, 09 Oct 2024 13:37:11 +0000
Received: by outflank-mailman (input) for mailman id 814519;
 Wed, 09 Oct 2024 13:37: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=eQJB=RF=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1syWsH-00021i-QC
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:37:09 +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 9416d8f0-8643-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 15:37:07 +0200 (CEST)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-42ca4e0299eso61109115e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:37:07 -0700 (PDT)
Received: from localhost ([213.195.123.53]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430ccf4f7aesm20884515e9.12.2024.10.09.06.37.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 06:37:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9416d8f0-8643-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728481027; x=1729085827; 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=6MWwygkPU9u2IMizAUKCfra5CuczdLDgpwXW1vF7BBg=;
        b=FovKoU3nb5G1IIQAswpnWUY1+f+oCo6kUEPdPgyrG71I4t/U63CjkduULVd5sqHj+t
         WSw5zxxZuuOfJdJW3/yyNUK2MedOAPgO9EyquwI9qN9eo7D4zF2wizF7fSTKzHJ1ht0U
         zZu3oLTIpqxVV83JooU7luJl2vWpA+OdVdI9g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728481027; x=1729085827;
        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=6MWwygkPU9u2IMizAUKCfra5CuczdLDgpwXW1vF7BBg=;
        b=hUKT6hXoa4eAlQh7O2kDBXLaAWHLihUn6R3wt4GTKmDj/ZleSZXI5SugAMHN8pdphp
         /Eq8wnbvXJfXfdbl9wsvI4ttqL6J0k42LI8GdxjlM8VfJU/tICwJhcXArsBY3XQNlEhH
         iEaTLKocRdzscFsqxUMnW3EKgUZKJqRmdoZYo/YYTobb4m5EzvlX0Qcuwm5nRBdExvmM
         Vcbj1knrRj57GumOyTv3fvNC0h9giYa9PgRyDIj0w8mhs/KyRkfSVMccs9zHuaYLJy5w
         fwx8JEN+jZ35YPLo5SKfyTY+FfYd6Jlk1Rtomn5+HK+pb4FbNaBNIu6JPCKEXlKOTl2A
         fqoQ==
X-Forwarded-Encrypted: i=1; AJvYcCVCh5EQaDR1h6xN0z6+A6aLY0EWZJRC03fbvTPjfHmeg7kZ7EVo/NoE86vtgyFdCC0TZwGFHC7z7sk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwqFUH+RBs2Ra6HzvWpMwO2FOT3HYaHo4gRzHFCV7VIOZeKBRk6
	ITEZEJr3746pIfEVgx36y/6o/9BIoh041QzZcPwt0zhBnLaLS0cnDRqhYrqK2aY=
X-Google-Smtp-Source: AGHT+IGRQlwcMWgNwF6xPKQF+fHzdKtpItc9ahHLYUgefhaAampe03L49yONZzxuWhu46a4h9FWk6w==
X-Received: by 2002:a05:600c:46ce:b0:430:56c1:644c with SMTP id 5b1f17b1804b1-430d7487ad7mr16520105e9.31.1728481027155;
        Wed, 09 Oct 2024 06:37:07 -0700 (PDT)
Date: Wed, 9 Oct 2024 15:37:06 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
Message-ID: <ZwaHAqVGeeJNu4Dp@macbook.local>
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
 <ZwZlVlU2nHkBedyo@macbook.local>
 <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>
 <ZwZtR6ZTl2gUWN2T@macbook.local>
 <34f73ec6-0e10-41f4-8894-c367264afefc@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <34f73ec6-0e10-41f4-8894-c367264afefc@suse.com>

On Wed, Oct 09, 2024 at 02:09:33PM +0200, Jan Beulich wrote:
> On 09.10.2024 13:47, Roger Pau Monné wrote:
> > On Wed, Oct 09, 2024 at 01:28:19PM +0200, Jan Beulich wrote:
> >> On 09.10.2024 13:13, Roger Pau Monné wrote:
> >>> I also think returning an error when no device in the IVMD range is
> >>> covered by an IOMMU is dubious.  Xen will already print warning
> >>> messages about such firmware inconsistencies, but refusing to boot is
> >>> too strict.
> >>
> >> I disagree. We shouldn't enable DMA remapping in such an event. Whereas
> > 
> > I'm not sure I understand why you would go as far as refusing to
> > enable DMA remapping.  How is a IVMD block having references to some
> > devices not assigned to any IOMMU different to all devices referenced
> > not assigned to any IOMMU?  We should deal with both in the same
> > way.
> 
> Precisely because of ...
> 
> > If all devices in the IVMD block are not covered by an IOMMU, the
> > IVMD block is useless.
> 
> ... this. We simply can't judge whether such a useless block really was
> meant to cover something. If it was, we're hosed. Or maybe we screwed up
> and wrongly conclude it's useless.

The same could be stated about devices in a IVMD block that are not
assigned to an IOMMU: it could also be Xen that screwed up and wrongly
concluded they are not assigned to an IOMMU.

> >  But there's nothing for Xen to action, due to
> > the devices not having an IOMMU assigned.  IOW: it would be the same
> > as booting natively without parsing the IVRS in the first place.
> 
> Not really, no. Not parsing IVRS means not turning on any IOMMU. We
> then know we can't pass through any devices. We can't assess the
> security of passing through devices (as far as it's under our control)
> if we enable the IOMMU in perhaps a flawed way.
> 
> A formally valid IVMD we can't make sense of is imo no different from
> a formally invalid IVMD, for which we would return ENODEV as well (and
> hence fail to enable the IOMMU). Whereas what you're suggesting is, if
> I take it further, to basically ignore (almost) all errors in table
> parsing, and enable the IOMMU(s) in a best effort manner, no matter
> whether that leads to a functional (let alone secure [to the degree
> possible]) system.

No, don't take it further: not ignore all errors, I think we should
ignore errors when the device in the IVMD is not behind an IOMMU.  And
I think that should apply globally, regardless of whether all devices
in the IVMD block fall in that category.

That will bring AMD-Vi inline with VT-d RMRR, as from what I can see
acpi_parse_one_rmrr() doesn't care whether the device scope in the
entry is behind an IOMMU or not, or whether the whole RMRR doesn't
effectively apply to any device because none of them is covered by an
IOMMU.

> What I don't really understand is why you want to relax our checking
> beyond what's necessary for the one issue at hand.

This issue has been reported to us and we have been able to debug.
However, I worry what other malformed IVMD blocks might be out there,
for example an IVMD block that applies to a single device (type 21h),
but such single device doesn't exist (or it's not behind an IOMMU).
Maybe next time we simply won't get a report, the user will try Xen,
see it's not working and move to something else.

I've taken a quick look at Linux, and when parsing the IVMD blocks
there's no checking that referred devices are behind an IOMMU, the
regions are just added to a list.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:45:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:45:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814532.1228127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syX0j-0005ql-N8; Wed, 09 Oct 2024 13:45:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814532.1228127; Wed, 09 Oct 2024 13:45: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 1syX0j-0005qb-Jo; Wed, 09 Oct 2024 13:45:53 +0000
Received: by outflank-mailman (input) for mailman id 814532;
 Wed, 09 Oct 2024 13:45: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=3wKy=RF=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syX0i-0005Gw-I0
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:45:52 +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 cbfea96b-8644-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 15:45:51 +0200 (CEST)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-53994aadb66so6262247e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:45:51 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e0598947sm5435334a12.11.2024.10.09.06.45.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 06:45:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cbfea96b-8644-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728481550; x=1729086350; 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=PSPaRmxzt0eAVlcbacBly/DaDiKEi9jlpaGGhdonnXU=;
        b=nFDSlchmC6qt4Yfd40Sz2ZKbuss5LIlunBOwS/NPmUw6kFf2ACF8fDnyl1vQ/Z6Agz
         QqqECZtdpOu09GNbp+BicS/LneTW+gkJpREzkWKqL5al61YJG/wRf8yKIt5dNABaTP+X
         8/jkQ1fvhI7jncgH0r5EshIycaEOm6BJtvD0HJT06k0Kf66EZVElQFlGvqyWfCh5Hrg2
         7ibqT3WJQMzC1H2SvQ3eHbKkR+fyUUSD+pe95GPTXcTqEyADpgVwzCRb0ZFEQdctRqaO
         J7BObTDqUgIGaMtu+LbJsAIc5q3h9a6jFnydfGOFMkHQHdd5ripbrYXppnmZtK91fzj0
         qeYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728481550; x=1729086350;
        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=PSPaRmxzt0eAVlcbacBly/DaDiKEi9jlpaGGhdonnXU=;
        b=ta4wzEh51Mph+0rEO7/JOa6GFN+0tglbVMk6FjWovqmUm4PpfmzcEyETAws40S0p95
         5oWZZqRdNU8wC2QLVtU5iH9a1/5XutKq6he5gJ3uIySJhRinu6vNx4EmPSq9yBdT8e+I
         z49Dp+zZTJCbhdXaya1dobwH8YemmqA/CQYTIYZlN38Heb1qiLe+1HQNgM80vGgkZbbM
         UBl6tN7MqR9Upyn9+BVQQiobqA/9VIwm4TKGuCJOMj0GhXiQ4xMPhr7xiIDySHL8fi+X
         iVUvnY1oUL2vdA+FQ2pe+dS/nEVChNVwy4feSEvNJLnBgynhGoi5svQrepMrO3QIwzSY
         /U0g==
X-Gm-Message-State: AOJu0Yyj7S1SDRjBXcRH7yt85n7xeVLjk4/KLiPjwFg0lemkr6APX6JC
	akD+9oBm21FLbwqIwu23mn9RdIuHomAyqVVynl3rKm1svCvvZwBFwYz2Cg==
X-Google-Smtp-Source: AGHT+IETkjSORs4fMVZO6b+/grQCRsc7UVKkbbOABRhAOi7uwdEmraxZ2/th2k7e3kvUZwRQbn65RA==
X-Received: by 2002:a05:6512:3050:b0:533:46cc:a736 with SMTP id 2adb3069b0e04-539c92b1a6bmr141554e87.37.1728481550026;
        Wed, 09 Oct 2024 06:45:50 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 3/3] xen/riscv: register Xen's load address as a boot module
Date: Wed,  9 Oct 2024 15:45:41 +0200
Message-ID: <cbc4249cfe7af3a8e0be0a5223933f2fbc20a957.1728472163.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728472163.git.oleksii.kurochko@gmail.com>
References: <cover.1728472163.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Avoid using BOOTMOD_XEN region for other purposes or boot modules
which could result in memory corruption or undefined behaviour.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in V3:
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>.
---
Changes in V2:
 - Drop local variable xen_bootmodule as it won't be used after initialization.
 - Drop unnecessary cast for the 3rd argument of add_boot_module() call in
   start_xen().
 - Change BUG_ON(!xen_bootmodule) to panic().
---
 xen/arch/riscv/setup.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 6d156c3a40..f531ca38ee 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <xen/bug.h>
+#include <xen/bootfdt.h>
 #include <xen/compile.h>
 #include <xen/device_tree.h>
 #include <xen/init.h>
@@ -44,6 +45,11 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
               "Please check your bootloader.\n",
               dtb_addr, BOOT_FDT_VIRT_SIZE);
 
+    /* Register Xen's load address as a boot module. */
+    if ( !add_boot_module(BOOTMOD_XEN, virt_to_maddr(_start),
+                          _end - _start, false) )
+        panic("Failed to add BOOTMOD_XEN\n");
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:45:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:45:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814529.1228097 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syX0g-00059P-Uo; Wed, 09 Oct 2024 13:45:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814529.1228097; Wed, 09 Oct 2024 13:45: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 1syX0g-00059H-RL; Wed, 09 Oct 2024 13:45:50 +0000
Received: by outflank-mailman (input) for mailman id 814529;
 Wed, 09 Oct 2024 13: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=3wKy=RF=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syX0f-00059A-9V
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:45:49 +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 ca65dac7-8644-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 15:45:48 +0200 (CEST)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5c924667851so492715a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:45:48 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e0598947sm5435334a12.11.2024.10.09.06.45.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 06:45:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca65dac7-8644-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728481547; x=1729086347; 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=deOu+9egEsSlbA8NvC5euDA9HuMpXm2iHCRytSCVdS4=;
        b=BuNAw7M/Mi30waGtrfeMkmG7nXnBfs37jqexofBOq7D8e/FbI+py5amKlR1zvmLCgL
         WPxrNerwSRvYv0sKB7TXFCFAcDLWRr9cpFWENRTwO+GT+yn7K3CNOYOo1H29UFsPQKbA
         AWsIHVOIXRu+C/yktDF4QMqnfoDLqGb5lbuYTrx9vO1oov1upudGn/NjIMs/NMTFRxEl
         li0bBTluSzSAyTLpVUUSWUe95HZNeQkG3bQ5bn0us8JA8w11FekZUCcnBKaJVr4pGW/8
         RHMgp6dai/u4V/x+DlHtxEMnZtN6K5pU/8zzWT01cz76RhHt+wwAOy9C/VRs+9m1BuGV
         LzpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728481547; x=1729086347;
        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=deOu+9egEsSlbA8NvC5euDA9HuMpXm2iHCRytSCVdS4=;
        b=hqRB6U/UhzLQE8Vlf3qeFqoe7piFeTYjqcz1UWdRsIwVHdekcNY1ozfAbsqQd4JaoZ
         YhUcWmn9fSLb/L96J5mUbfCPco4rbuxGzQ9F7fe0Yd1Igdy8Al0jwSClUvzKGnHwVHHg
         nYq7/Yn5MUsLvHkULy4DCVAXCwV1j7gEHpJtIjNuKJdu3+WUfJ781pUtWP1JR2wKXtDB
         2+ylSvTKUrkF+n+ejDD7JoryBsc86ydpIRs65+D+Is40OxaUSW6Fy82KRt+/s8uIDA7L
         cfoD6qHnNzefIy8czdoYI4y18LceNOMxuDAt5vKnnMKQY+vWC+H0G1INjHvLhntlQlUq
         1K6w==
X-Gm-Message-State: AOJu0Yyk9PCKMOlzU8oknD77XhlBTxIc76yOnbmJNlVz1+BZ35w15zxn
	Gg5dAsH+Pr4aJ+jW+2Exv6jVr9n4DaY38Eqp7WcSD58GvyUavpIPd3wRQQ==
X-Google-Smtp-Source: AGHT+IGeS1D1xksQt4QvfoToMRP7VvFlmsfdy0LWDjUrVTz4LXuoheR7Ww29RvprXCulU0igmOqQew==
X-Received: by 2002:a05:6402:4314:b0:5c8:aee5:9b05 with SMTP id 4fb4d7f45d1cf-5c91d6707fbmr1684463a12.26.1728481547224;
        Wed, 09 Oct 2024 06:45:47 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 0/3] Register Xen's load address as a boot module
Date: Wed,  9 Oct 2024 15:45:38 +0200
Message-ID: <cover.1728472163.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This patch series registers Xen's load address as a boot module and
introduce virt_to_maddr(), and drops LINK_TO_LOAD() to use virt_to_maddr()
instead.

---
Changes in V3:
 - Add Acked-by: Jan Beulich <jbeulich@suse.com> for patches:
   - xen/riscv: switch LINK_TO_LOAD() to virt_to_maddr()
   - xen/riscv: register Xen's load address as a boot module
 - Minor changes for patch 1 (xen/riscv: implement virt_to_maddr())":
   add an explanation comments, update the commit message and drop pointless
   ASSERT().
---
Changes in V2:
 - Update the commit message ( drop depency from "device tree mapping" patch
   series as it was merged to staging )
 - Other changes please look at the specific patch.
---

Oleksii Kurochko (3):
  xen/riscv: implement virt_to_maddr()
  xen/riscv: switch LINK_TO_LOAD() to virt_to_maddr()
  xen/riscv: register Xen's load address as a boot module

 xen/arch/riscv/include/asm/config.h |  4 ++++
 xen/arch/riscv/include/asm/mm.h     | 22 +++++++++++++++++++++-
 xen/arch/riscv/mm.c                 |  9 ++++-----
 xen/arch/riscv/setup.c              |  6 ++++++
 4 files changed, 35 insertions(+), 6 deletions(-)

-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:45:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:45:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814531.1228112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syX0i-0005PN-Cf; Wed, 09 Oct 2024 13:45:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814531.1228112; Wed, 09 Oct 2024 13: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 1syX0i-0005P4-8s; Wed, 09 Oct 2024 13:45:52 +0000
Received: by outflank-mailman (input) for mailman id 814531;
 Wed, 09 Oct 2024 13:45: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=3wKy=RF=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syX0h-0005Gw-Lj
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:45:51 +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 cb0bbab1-8644-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 15:45:49 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c89f3e8a74so9244150a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:45:49 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e0598947sm5435334a12.11.2024.10.09.06.45.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 06:45:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cb0bbab1-8644-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728481549; x=1729086349; 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=eKN+iZaDpNy8yOn7LaIk1Lnug9+dT93sjGvELvafAMY=;
        b=XSiyFcyRw7MPZ0zG4eDOTCV3nEzyALTa+OQO5xfybV/Wd9k8LFqPsDHNohbHsrRGJl
         KS8PAQZv+NfK71TGti6yXF2bv3hGZalTLhiFFz74DkQCKwQOrgksrMZCzVo6DiAE1ZSh
         8CmajU1XFJ1DkDQU6Mqc6LuJcRHbtX5n3xX2RgaL5XjW75xlxhjKrdXMihoTMWox/p0I
         RVWdiP1rC65vSdOURoKnT4d1KOt6s2l6gWkzDsqEmzP/9+9wofMD1dgU/2uWH0OqtAQ2
         OMkG7XAnEQr4ke97jb/1HdOtjKtURrziaZJcvoqOPo+kdHcFVavMBycAXhzH8QuUo/NT
         nGhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728481549; x=1729086349;
        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=eKN+iZaDpNy8yOn7LaIk1Lnug9+dT93sjGvELvafAMY=;
        b=mmHOcDHNsQhtxjxfW6M0gL50KxXevEIZ8oREE8gPIB+oDYvZVdQw/4M4kuriq/UuA9
         CcQOedRf8+EdpiwpZT8iQT3GpaP3DB3d/Trs6nWkkQXhOOL4AzPKk9Nh0hqKThKojtnq
         Id8rOToy38fFiFmz0NFvcCannd2ZQIDv+rnHLn6btp8VxzJc63ZeCOFosZw/IeuzW97O
         3U+CY2QH2LTV7RliLA2YWJvNdjFprolaFVSK6HL9GnxuOVRQdnCGtatPi0JLEo4v1SC2
         L0BGRC3o4vT/C3DvkQ0DO3gv+Vjw1TjFEIBi1BDqUvnwLIvhxtLS3dn0uDqVp4AQvl5y
         inPQ==
X-Gm-Message-State: AOJu0YyUPNkYsbERGZ2eAnGYadWdePJPyc+TVV1TM9WsahOACWvOHsWc
	sC+CoBvzquWBDO+4wsgrEkigH5WjkW3UWNuvoP4ODFyEjLJn0XAKONIjPQ==
X-Google-Smtp-Source: AGHT+IFFr1X0wG6rMgUWf8llcjPefsJc4bQAC4Pnrsp7GHMqAJvAqYBIqUr91an8k5hG50KpyBmKwA==
X-Received: by 2002:a05:6402:3582:b0:5c8:bb09:b417 with SMTP id 4fb4d7f45d1cf-5c91d4062bbmr1982190a12.0.1728481548326;
        Wed, 09 Oct 2024 06:45:48 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 1/3] xen/riscv: implement virt_to_maddr()
Date: Wed,  9 Oct 2024 15:45:39 +0200
Message-ID: <9f7d9ebde6fc7224490d1fd565676e051c57a80d.1728472163.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728472163.git.oleksii.kurochko@gmail.com>
References: <cover.1728472163.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Implement the virt_to_maddr() function to convert virtual addresses
to machine addresses. The function includes checks for valid address
ranges, specifically the direct mapping region (DIRECTMAP_VIRT_START)
and the Xen's Linkage (XEN_VIRT_START) region. If the virtual address
falls outside of these regions, an assertion will trigger.
To implement this, the phys_offset variable is made accessible
outside of riscv/mm.c.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v3:
 - Drop ASSERT(va >= (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)) as it is enough
   to have 'if (...)' for directmap region and ASSERT() for checking that
   virtual address is from Xen's linkage virtual space.
 - Add the comment above virt_to_maddr().
 - Update the commit message.
 - Add the comment for declaration and defoition of
   phys_offset: /* = load_start - XEN_VIRT_START */.
---
Changes in V2:
  - Drop casts in virt_to_maddr() for ASSERT which checks that VA is
    in the range of where Xen is located.
  - Add UL suffix for or XEN_VIRT_START by using _AC(..., UL) and add inclusion
    of <xen/const.h>
  - Add the comment above return which explains why there is no need
    to do " - XEN_VIRT_START.
---
 xen/arch/riscv/include/asm/config.h |  4 ++++
 xen/arch/riscv/include/asm/mm.h     | 22 +++++++++++++++++++++-
 xen/arch/riscv/mm.c                 |  2 +-
 3 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index ef68281653..ad75871283 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -155,6 +155,10 @@
 
 #define IDENT_AREA_SIZE 64
 
+#ifndef __ASSEMBLY__
+extern unsigned long phys_offset; /* = load_start - XEN_VIRT_START */
+#endif
+
 #endif /* ASM__RISCV__CONFIG_H */
 /*
  * Local variables:
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index 5c79f3def3..ebb142502e 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -5,6 +5,7 @@
 
 #include <public/xen.h>
 #include <xen/bug.h>
+#include <xen/const.h>
 #include <xen/mm-frame.h>
 #include <xen/pdx.h>
 #include <xen/types.h>
@@ -28,7 +29,26 @@ static inline void *maddr_to_virt(paddr_t ma)
     return NULL;
 }
 
-#define virt_to_maddr(va) ({ BUG_ON("unimplemented"); 0; })
+/*
+ * virt_to_maddr() is expected to work with virtual addresses from either
+ * the directmap region or Xen's linkage (XEN_VIRT_START) region.
+ * Therefore, it is sufficient to check only these regions and assert if `va`
+ * is not within the directmap or Xen's linkage region.
+ */
+static inline unsigned long virt_to_maddr(unsigned long va)
+{
+    if ((va >= DIRECTMAP_VIRT_START) &&
+        (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
+        return directmapoff_to_maddr(va - DIRECTMAP_VIRT_START);
+
+    BUILD_BUG_ON(XEN_VIRT_SIZE != MB(2));
+    ASSERT((va >> (PAGETABLE_ORDER + PAGE_SHIFT)) ==
+           (_AC(XEN_VIRT_START, UL) >> (PAGETABLE_ORDER + PAGE_SHIFT)));
+
+    /* phys_offset = load_start - XEN_VIRT_START */
+    return phys_offset + va;
+}
+#define virt_to_maddr(va) virt_to_maddr((unsigned long)(va))
 
 /* Convert between Xen-heap virtual addresses and machine frame numbers. */
 #define __virt_to_mfn(va)  mfn_x(maddr_to_mfn(virt_to_maddr(va)))
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 4a628aef83..daa02b2c60 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -26,7 +26,7 @@ struct mmu_desc {
     pte_t *pgtbl_base;
 };
 
-static unsigned long __ro_after_init phys_offset;
+unsigned long __ro_after_init phys_offset; /* = load_start - XEN_VIRT_START */
 
 #define LOAD_TO_LINK(addr) ((unsigned long)(addr) - phys_offset)
 #define LINK_TO_LOAD(addr) ((unsigned long)(addr) + phys_offset)
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:45:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:45:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814530.1228107 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syX0i-0005Nd-4s; Wed, 09 Oct 2024 13:45:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814530.1228107; Wed, 09 Oct 2024 13: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 1syX0i-0005NW-2B; Wed, 09 Oct 2024 13:45:52 +0000
Received: by outflank-mailman (input) for mailman id 814530;
 Wed, 09 Oct 2024 13:45: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=3wKy=RF=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syX0g-00059A-ST
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:45:50 +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 cb8a0ee9-8644-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 15:45:50 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c8a2579d94so8001566a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 06:45:50 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e0598947sm5435334a12.11.2024.10.09.06.45.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 06:45:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cb8a0ee9-8644-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728481549; x=1729086349; 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=LUbIlgBj8AycXaBiq5VvH9Kf8b686NBX0+bgyidJsiQ=;
        b=WHmA/dLgXuAe173oIJcYW1IJo9mN/znHW0fpDm05w3VAgnByBlbOf0fS3B8Uwd00A/
         F+m+cc2R1zjOJGbWWr5/TdWi/H+tjaP90htdg8WVk1FblUuL7YNlxlN+v4Av2SI68i3o
         YHCkENNl2ys5qRqdQ9oImN248O9j+y9TXIyxfyXsQTeIz6y4u5flFD2nhj0b4k7SIUcp
         37lPG7CLobCxD+A8U/2ImvhgZ06fwBWGfSrr3ZeEaWPryePlmnDDvQV/M+EC/CPQsRlU
         DDLAG+LuIYcqsreEZ4PMWRQ4W21Zi9rjTROXF5KNbIe+uhGKrsPK87O0M+K2H04as8zH
         htuQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728481549; x=1729086349;
        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=LUbIlgBj8AycXaBiq5VvH9Kf8b686NBX0+bgyidJsiQ=;
        b=CePayOe3D3hhLRZ2XRvQYW5CS674WU3RJvY7nL525ZRwHt+TxLoreodEJBL2E8hYxK
         SYD9VPmpcV3mmmxi694JWkSj4kdVpYsckm1J03b5R2KYILuTU9wvYwvHWDzHQOik3aLM
         ejIBCOvTErSiOuN+Lvge5gzyikIZNgpYIzVSYH2sDOwbrSU2CG1GgHre/ndQf6s57TxS
         SFg81hB/heWIxbRHZhsc7j04TdGDfJQdZJRJB/VRAuYpxPBDv5SU8JdlYfr5fiFQL1MG
         Ps8aw2qxQWYEdScyMykGE1xOu6o1hCX3A0c8aciiiSMxA3MCymCys8IdgjLZKzfnpngY
         B/Lg==
X-Gm-Message-State: AOJu0YwpvEk9hiwz7V8qod3mJNTshiQPBvcZEA2dhvXaeYVS6voW4wRd
	a24/AIhP4CFezUFRjwd/qWh2lf4bXh8GsDJnSZienm01LGTzyMnqfuJsyA==
X-Google-Smtp-Source: AGHT+IGpv4Y1dh2fzkZF3rlKiORYVcUQIKhHp0dDzWuxXE3eqKRkHNw+iA6zorlLDNgRrAXJIhNQrQ==
X-Received: by 2002:a05:6402:3714:b0:5c8:8d60:600f with SMTP id 4fb4d7f45d1cf-5c91d5a5526mr2133434a12.14.1728481549206;
        Wed, 09 Oct 2024 06:45:49 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 2/3] xen/riscv: switch LINK_TO_LOAD() to virt_to_maddr()
Date: Wed,  9 Oct 2024 15:45:40 +0200
Message-ID: <ece6b504d6d2a9b7ccedb7f683e3fb4f4d4d5fed.1728472163.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728472163.git.oleksii.kurochko@gmail.com>
References: <cover.1728472163.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Use virt_to_maddr() instead of LINK_TO_LOAD as virt_to_maddr()
covers all the cases where LINK_TO_LOAD() is used.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in V3:
 - Add Acked-by: Jan Beulich <jbeulich@suse.com>.
---
Changes in V2:
 - Drop the cast of virt_to_maddr() argument in remove_identity_mapping() as
   this cast is done inside virtu_to_maddr() wrapper macros.
 - Update the commit message ( rewording to be more clear )
---
 xen/arch/riscv/mm.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index daa02b2c60..27026d803b 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -29,7 +29,6 @@ struct mmu_desc {
 unsigned long __ro_after_init phys_offset; /* = load_start - XEN_VIRT_START */
 
 #define LOAD_TO_LINK(addr) ((unsigned long)(addr) - phys_offset)
-#define LINK_TO_LOAD(addr) ((unsigned long)(addr) + phys_offset)
 
 /*
  * It is expected that Xen won't be more then 2 MB.
@@ -122,7 +121,7 @@ static void __init setup_initial_mapping(struct mmu_desc *mmu_desc,
                 unsigned long paddr = (page_addr - map_start) + pa_start;
                 unsigned int permissions = PTE_LEAF_DEFAULT;
                 unsigned long addr = is_identity_mapping
-                                     ? page_addr : LINK_TO_LOAD(page_addr);
+                                     ? page_addr : virt_to_maddr(page_addr);
                 pte_t pte_to_be_written;
 
                 index = pt_index(0, page_addr);
@@ -225,7 +224,7 @@ void __init setup_fixmap_mappings(void)
 
     BUG_ON(pte_is_valid(*pte));
 
-    tmp = paddr_to_pte(LINK_TO_LOAD((unsigned long)&xen_fixmap), PTE_TABLE);
+    tmp = paddr_to_pte(virt_to_maddr(&xen_fixmap), PTE_TABLE);
     write_pte(pte, tmp);
 
     RISCV_FENCE(rw, rw);
@@ -312,7 +311,7 @@ void __init remove_identity_mapping(void)
     pte_t *pgtbl;
     unsigned int index, xen_index;
     unsigned long ident_start =
-        LINK_TO_LOAD(turn_on_mmu) & XEN_PT_LEVEL_MAP_MASK(0);
+        virt_to_maddr(turn_on_mmu) & XEN_PT_LEVEL_MAP_MASK(0);
 
     for ( pgtbl = stage1_pgtbl_root, i = CONFIG_PAGING_LEVELS; i; i-- )
     {
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 13:56:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 13:56:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814562.1228137 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXB0-0001rA-Mu; Wed, 09 Oct 2024 13:56:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814562.1228137; Wed, 09 Oct 2024 13:56: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 1syXB0-0001r3-Iz; Wed, 09 Oct 2024 13:56:30 +0000
Received: by outflank-mailman (input) for mailman id 814562;
 Wed, 09 Oct 2024 13: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syXAz-0001qx-Gr
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 13:56:29 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 45f58583-8646-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 15:56:27 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728482179976147.69608127703475;
 Wed, 9 Oct 2024 06:56:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 45f58583-8646-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728482182; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=j9Xp3zD580+pKwZEUm8J/M/hCDZNxWP1d9Yj7IGZGsVEkGGG7GcL6NlTzzFVJbOSBLrnSqVhdZ9oe9xvDZDkZMz42FUSGc2LC2uys0PSP//Wa7sQI6HIpdfSQVLhwmoxGJbGMCACqSfoUmVAY2mz5vx+z+iesxkwQwhKRkF4874=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728482182; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To:Cc; 
	bh=UUAbQ1oQRKVtCusz55NtGKctsR7mDu8o0ozNoJVqYGI=; 
	b=dQ7MlkBYCAwDOBujHaDd67PXlHP0m9CH8KpoFJhlUjpB1svWZJAn1XwZ1sPMGCf4SRyrtpA+MrGiXQeEua+P3fsWkGcRvWjnhzx3+t8pGKa5jRrFmtEs5EdFSfHnXQPDgbnEn/LztGBsaToGtR8N1jPY9S/9RkTEcOFABhEA/X0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728482182;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To:Cc;
	bh=UUAbQ1oQRKVtCusz55NtGKctsR7mDu8o0ozNoJVqYGI=;
	b=D/Qru4+E3RS4NwsTQJeOORxK6yF00e5pOW7nS96H0u0XbeFQgT4m2A10URwr3PBe
	RoyiWag40/zlplFX6F1uePcqU1T5sJUFbl1mw6JyIDWabMXpHyAXramAezNqCofzzna
	Ebz6r/hwuKpI16GcZtro2sMSow/VzOBl24LZ5vh4=
Message-ID: <7f51d67e-2670-4c41-8022-2604662839ba@apertussolutions.com>
Date: Wed, 9 Oct 2024 09:56:17 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/7] Flask: replace uses of __u32
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <868d803c-0a88-4080-99b1-68e6f8b92c25@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <868d803c-0a88-4080-99b1-68e6f8b92c25@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 05:23, Jan Beulich wrote:
> ... by uint32_t.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Uses of bool_val look suspicious; I looked at them because by its name
> I would have hoped I can switch it to bool instead.
> 
> --- a/xen/xsm/flask/ss/conditional.h
> +++ b/xen/xsm/flask/ss/conditional.h
> @@ -29,8 +29,8 @@ struct cond_expr {
>   #define COND_EQ        6 /* bool == bool */
>   #define COND_NEQ    7 /* bool != bool */
>   #define COND_LAST    COND_NEQ
> -    __u32 expr_type;
> -    __u32 bool_val;
> +    uint32_t expr_type;
> +    uint32_t bool_val;
>       struct cond_expr *next;
>   };
>   
> --- a/xen/xsm/flask/ss/policydb.h
> +++ b/xen/xsm/flask/ss/policydb.h
> @@ -131,7 +131,7 @@ struct range_trans {
>   
>   /* Boolean data type */
>   struct cond_bool_datum {
> -    __u32 value;        /* internal type value */
> +    uint32_t value;        /* internal type value */
>       int state;
>   };
>   

Acked-by: Daniel P. Smith <dpsmith@apertussolutions.com>



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:03:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:03:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814568.1228146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXHk-0004Uz-Ba; Wed, 09 Oct 2024 14:03:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814568.1228146; Wed, 09 Oct 2024 14:03: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 1syXHk-0004Us-8d; Wed, 09 Oct 2024 14:03:28 +0000
Received: by outflank-mailman (input) for mailman id 814568;
 Wed, 09 Oct 2024 14:03: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syXHi-0004Ul-SY
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:03: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 3fe674ba-8647-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:03:24 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c924667851so511312a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:03:24 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c92c985eaasm193308a12.45.2024.10.09.07.03.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:03:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3fe674ba-8647-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728482604; x=1729087404; 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=6PIlW1t2b/KgprALibq1bw2jyq0vz9W2l2iV16kPdvA=;
        b=Bgf9UVWZFjADd5ApsklcXKS+qenu0etRGNp3gldyM7qkk9pQgPp5CP5xQKxUb4EqoV
         w6o4bD+IctPZ2/CySMmtU53nzjwlYERLmoXReK2Dg0H07CtSbaCSbscTMADqAENrqBA7
         mMCJ50jkVQMjNCYBE1WSVAj7zk5MIumLYAIDShPvWRkpBxQH69Re/fnFdU2XF9mT4wL9
         4cF6XO+kgu2CH3tV1WwfSZGoP6k5x4Pp4fpyB9JQvQBcugZulMebCv7g0j3ImGLAWpuY
         naKZIG1LFCGGfuhsJmRZ13NVkcjlnHOUFZxHRLNfCx+8Dr3b2t4++LwGgy6hk+w+xKZL
         C9Ug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728482604; x=1729087404;
        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=6PIlW1t2b/KgprALibq1bw2jyq0vz9W2l2iV16kPdvA=;
        b=SZRm7GLrBotpO+gDCe7Co5F6pv42+HLhZq/eUuo2NaDj2Z+8OOVWoGYiaEgY/5jJJl
         kwC0UtL+Fs/QD6vzAeXSQmM7kQ9v15lX4a1GiZHdzSbXa5bOS+36c+4+C06tgeXdIKL9
         bY4R3rr7mRl6sae8WG58RmpN+RpniwZ8ZNxr+PlQNhMI3F+WHaffqmiRuAiXeWc8OO50
         Z5aH/k39SJkE6LexoBpJuJHAQqGadmz80AiKPiugKmA8HV3OqZWChiRygdH9whn77Zfy
         o0Covw6fq92As9X7qnDuM/p/S53go2N92AZ6mWjchhdgd7zhGQ8gdVYySMRthLHE6v+c
         +w3A==
X-Forwarded-Encrypted: i=1; AJvYcCWgUI4dYnfdQmXs4RlPKpS+UGt0TPv/lJ37xAZKfT6O5e374tF/8XfEA7IT1Pv2fpqssU0wp9aOCUc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwdwFns7X3y7GFDMDDCaX9FFRIpU/rF70vu8TquGnc38m5W5PH8
	OBBnuPjEe2Uv4cLBp7GWK7j5yji4tnyGIRjZ5ttm+Mi+0gyzzk5ecrSUyQE5hQ==
X-Google-Smtp-Source: AGHT+IGK/1Dg1jxmC4SetnMRZ29xDh0j5rBxq7ZzWlkJYSvQSKJDMeiZbRN5OgXeefQyVnYO95u1cw==
X-Received: by 2002:a05:6402:35d1:b0:5c8:bb09:ae49 with SMTP id 4fb4d7f45d1cf-5c91d583dbemr1953595a12.8.1728482603463;
        Wed, 09 Oct 2024 07:03:23 -0700 (PDT)
Message-ID: <f75dde2d-9c39-4be0-8465-6496a56cc658@suse.com>
Date: Wed, 9 Oct 2024 16:03:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 05/11] tools/hvmloader: Retrieve (x2)APIC IDs from the
 APs themselves
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-6-alejandro.vallejo@cloud.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: <20241001123807.605-6-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:38, Alejandro Vallejo wrote:
> Make it so the APs expose their own APIC IDs in a LUT. We can use that
> LUT to populate the MADT, decoupling the algorithm that relates CPU IDs
> and APIC IDs from hvmloader.
> 
> While at this also remove ap_callin, as writing the APIC ID may serve
> the same purpose.

... on the assumption that no AP will have an APIC ID of zero.

> @@ -341,11 +341,11 @@ int main(void)
>  
>      printf("CPU speed is %u MHz\n", get_cpu_mhz());
>  
> +    smp_initialise();
> +
>      apic_setup();
>      pci_setup();
>  
> -    smp_initialise();

I can see that you may want cpu_setup(0) to run ahead of apic_setup(). Yet
is it really appropriate to run boot_cpu() ahead of apic_setup() as well?
At the very least it feels logically wrong, even if at the moment there
may not be any direct dependency (which might change, however, down the
road).

> --- a/tools/firmware/hvmloader/mp_tables.c
> +++ b/tools/firmware/hvmloader/mp_tables.c
> @@ -198,8 +198,10 @@ static void fill_mp_config_table(struct mp_config_table *mpct, int length)
>  /* fills in an MP processor entry for VCPU 'vcpu_id' */
>  static void fill_mp_proc_entry(struct mp_proc_entry *mppe, int vcpu_id)
>  {
> +    ASSERT(CPU_TO_X2APICID[vcpu_id] < 0xFF );

Nit: Excess blank before closing paren.

And of course this will need doing differently anyway once we get to
support for more than 128 vCPU-s.

> --- a/tools/firmware/hvmloader/smp.c
> +++ b/tools/firmware/hvmloader/smp.c
> @@ -29,7 +29,34 @@
>  
>  #include <xen/vcpu.h>
>  
> -static int ap_callin;
> +/**
> + * Lookup table of x2APIC IDs.
> + *
> + * Each entry is populated its respective CPU as they come online. This is required
> + * for generating the MADT with minimal assumptions about ID relationships.
> + */
> +uint32_t CPU_TO_X2APICID[HVM_MAX_VCPUS];

I can kind of accept keeping it simple in the name (albeit - why all caps?),
but at least the comment should mention that it may also be an xAPIC ID
that's stored here.

> @@ -104,6 +132,12 @@ static void boot_cpu(unsigned int cpu)
>  void smp_initialise(void)
>  {
>      unsigned int i, nr_cpus = hvm_info->nr_vcpus;
> +    uint32_t ecx;
> +
> +    cpuid(1, NULL, NULL, &ecx, NULL);
> +    has_x2apic = (ecx >> 21) & 1;

Would be really nice to avoid the literal 21 here by including
xen/arch-x86/cpufeatureset.h. Can this be arranged for?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:06:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:06:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814578.1228167 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXKF-0005lG-Qb; Wed, 09 Oct 2024 14:06:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814578.1228167; Wed, 09 Oct 2024 14:06: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 1syXKF-0005l9-NR; Wed, 09 Oct 2024 14:06:03 +0000
Received: by outflank-mailman (input) for mailman id 814578;
 Wed, 09 Oct 2024 14: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=DqEV=RF=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syXKE-0005jJ-G5
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:06: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 9b8b9a69-8647-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:06:00 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 C842E1F37E;
 Wed,  9 Oct 2024 14:05:57 +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 98DE013A58;
 Wed,  9 Oct 2024 14:05:57 +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 TliiI8WNBmftPAAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 09 Oct 2024 14:05: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>
X-Inumbo-ID: 9b8b9a69-8647-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728482757; 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=yqRBCP7FgP4VCqck1HlxmjV776MIZqqvSBZq0/0yHPI=;
	b=oJ5KmLAwWU5cwqnPcAht5hSe8Y6foCGJa73B1QB93e0Vr4n7EtakVB+nfABnUFH75sklUC
	g9Bh9CgxP1fuaWowvQVFgLEcQ9E7Ksoy3ufJ4NhpfKCddYGHuZ9v+dFnOgulfLYvfl8Vz4
	uF1r3fRCfC7wu3L228G03Hi2WBKsB+w=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728482757; 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=yqRBCP7FgP4VCqck1HlxmjV776MIZqqvSBZq0/0yHPI=;
	b=oJ5KmLAwWU5cwqnPcAht5hSe8Y6foCGJa73B1QB93e0Vr4n7EtakVB+nfABnUFH75sklUC
	g9Bh9CgxP1fuaWowvQVFgLEcQ9E7Ksoy3ufJ4NhpfKCddYGHuZ9v+dFnOgulfLYvfl8Vz4
	uF1r3fRCfC7wu3L228G03Hi2WBKsB+w=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH v2] add config support for each Xen library
Date: Wed,  9 Oct 2024 16:05:54 +0200
Message-ID: <20241009140554.1084-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -2.80
X-Spam-Flag: NO

Instead of adding all or no Xen library (controlled by CONFIG_XC),
support a dedicated config option for each library instead,
defaulting to disabled.

As it is no longer needed now, drop the CONFIG_XC support.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- merge patches of the V1 series (Samuel Thibault)

Note: do not apply to the tree until the related Xen series
"stubdom: prepare more fine grained Xen library usage" has been
applied.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 Config.mk | 11 +++++++++--
 Makefile  | 18 +++++++++++++++++-
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/Config.mk b/Config.mk
index f2d1f0ae..f59a0cf4 100644
--- a/Config.mk
+++ b/Config.mk
@@ -193,6 +193,15 @@ CONFIG-n += CONFIG_9PFRONT
 CONFIG-n += CONFIG_TPM_TIS
 CONFIG-n += CONFIG_TPMBACK
 CONFIG-n += CONFIG_BALLOON
+CONFIG-n += CONFIG_LIBXENCALL
+CONFIG-n += CONFIG_LIBXENCTRL
+CONFIG-n += CONFIG_LIBXENDEVICEMODEL
+CONFIG-n += CONFIG_LIBXENEVTCHN
+CONFIG-n += CONFIG_LIBXENFOREIGNMEMORY
+CONFIG-n += CONFIG_LIBXENGNTTAB
+CONFIG-n += CONFIG_LIBXENGUEST
+CONFIG-n += CONFIG_LIBXENTOOLCORE
+CONFIG-n += CONFIG_LIBXENTOOLLOG
 # Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
 # console apart of standard dom0 handled console.
 CONFIG-n += CONFIG_USE_XEN_CONSOLE
@@ -201,8 +210,6 @@ CONFIG-y += CONFIG_PARAVIRT
 else
 CONFIG-n += CONFIG_PARAVIRT
 endif
-# Support legacy CONFIG_XC value
-CONFIG_XC ?= $(libc)
 
 CONFIG-$(lwip) += CONFIG_LWIP
 
diff --git a/Makefile b/Makefile
index 6c8df8b5..ffa8d1a8 100644
--- a/Makefile
+++ b/Makefile
@@ -123,23 +123,39 @@ endif
 OBJS := $(filter-out $(OBJ_DIR)/lwip%.o $(LWO), $(OBJS))
 
 ifeq ($(libc),y)
-ifeq ($(CONFIG_XC),y)
+ifeq ($(CONFIG_LIBXENTOOLCORE),y)
 APP_LDLIBS += -L$(TOOLCORE_PATH) -whole-archive -lxentoolcore -no-whole-archive
 LIBS += $(TOOLCORE_PATH)/libxentoolcore.a
+endif
+ifeq ($(CONFIG_LIBXENTOOLLOG),y)
 APP_LDLIBS += -L$(TOOLLOG_PATH) -whole-archive -lxentoollog -no-whole-archive
 LIBS += $(TOOLLOG_PATH)/libxentoollog.a
+endif
+ifeq ($(CONFIG_LIBXENEVTCHN),y)
 APP_LDLIBS += -L$(EVTCHN_PATH) -whole-archive -lxenevtchn -no-whole-archive
 LIBS += $(EVTCHN_PATH)/libxenevtchn.a
+endif
+ifeq ($(CONFIG_LIBXENGNTTAB),y)
 APP_LDLIBS += -L$(GNTTAB_PATH) -whole-archive -lxengnttab -no-whole-archive
 LIBS += $(GNTTAB_PATH)/libxengnttab.a
+endif
+ifeq ($(CONFIG_LIBXENCALL),y)
 APP_LDLIBS += -L$(CALL_PATH) -whole-archive -lxencall -no-whole-archive
 LIBS += $(CALL_PATH)/libxencall.a
+endif
+ifeq ($(CONFIG_LIBXENFOREIGNMEMORY),y)
 APP_LDLIBS += -L$(FOREIGNMEMORY_PATH) -whole-archive -lxenforeignmemory -no-whole-archive
 LIBS += $(FOREIGNMEMORY_PATH)/libxenforeignmemory.a
+endif
+ifeq ($(CONFIG_LIBXENDEVICEMODEL),y)
 APP_LDLIBS += -L$(DEVICEMODEL_PATH) -whole-archive -lxendevicemodel -no-whole-archive
 LIBS += $(DEVICEMODEL_PATH)/libxendevicemodel.a
+endif
+ifeq ($(CONFIG_LIBXENGUEST),y)
 APP_LDLIBS += -L$(GUEST_PATH) -whole-archive -lxenguest -no-whole-archive
 LIBS += $(GUEST_PATH)/libxenguest.a
+endif
+ifeq ($(CONFIG_LIBXENCTRL),y)
 APP_LDLIBS += -L$(CTRL_PATH) -whole-archive -lxenctrl -no-whole-archive
 LIBS += $(CTRL_PATH)/libxenctrl.a
 endif
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:12:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:12:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814593.1228176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXQU-00010i-IL; Wed, 09 Oct 2024 14:12:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814593.1228176; Wed, 09 Oct 2024 14:12: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 1syXQU-00010b-Fq; Wed, 09 Oct 2024 14:12:30 +0000
Received: by outflank-mailman (input) for mailman id 814593;
 Wed, 09 Oct 2024 14:12: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=XgrK=RF=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syXQT-00010V-IF
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:12:29 +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 8412915f-8648-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:12:28 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a9977360f9fso241909666b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:12:28 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9957d955f8sm399053866b.74.2024.10.09.07.12.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:12:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8412915f-8648-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728483148; x=1729087948; 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=ivqGq4ZbsDUPBOpiZRVNGy20gXTLQG1ggg18TyuLccg=;
        b=nRu7p6VBxPkenTfLiL+zr/hUGL5mSYT6MXxb0Wj6mYhClkxvl+YrJ5lvqRlSnf4UZ2
         M5HOEWQ7aS8zGyp6yye3T9sN5Z0kI8EbnJ+C7bN5iw1wIpCNte9qC0MjPOetSttT0XpI
         UfFpQan3Ouh4KXMf5d8A7C2G5RPKNm7DCLwYw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728483148; x=1729087948;
        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=ivqGq4ZbsDUPBOpiZRVNGy20gXTLQG1ggg18TyuLccg=;
        b=OpI8QcT+Q3/nVTht6ca0DT9sNrSdzvCIxLqmdnpoMIc9X4kJOxx9KcB2CIfhOPeUHT
         9fFtd+HvcQ33cVdgqQ7AnAD3qnHzzpd9KE9F6O0YAh4R6LnXoCPbkDdg1sAFFJjKE3XQ
         wFMnS35ZfTH5BYtwTnlciaSxU6QOPT7B0yrGldNOiKmSiQwa62bIHqydGZ/EG4vjTN/d
         OWWSC5DxD7zQ4oRs/oQIFAj3lN6mcFvslLPmK6HSVRm/NU1bEMQQuCFoapyUDYVlhJT0
         N+4LbPBnc9NtMsvOQNe3IABi3eM5bVcSYJiDYvoCJoRKJAy9kIhqXyK1JSiWEp9scE4B
         uWuw==
X-Forwarded-Encrypted: i=1; AJvYcCX3rLi0DMtpamxdJII7DZAXWtbgfe+pe3InYewn2wzWcsOcZf+/nWM0rPIUnIQlkX3IIQf6Kafzsd4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzr20WWJYIZ1Uz5CZoW3Cd2jItOwo+U/9D4bNui5E/HtURII/eV
	d2C0ME+qFahlUS0df3+E38mAUaZIhS0q8iZgFBn5C5bChVCpGkzxCFAXqcESrWGpOAOnU+HvRxQ
	9Lvo=
X-Google-Smtp-Source: AGHT+IGe93FJOqQNUFCsHjVoG5ZisCvqFp4EVGWIPTqIIIJsXTv0KglGYG0kkf3tcxbiYv8SFAo9GA==
X-Received: by 2002:a17:907:efe4:b0:a99:5cd5:5b9c with SMTP id a640c23a62f3a-a998d208d97mr239537666b.36.1728483147733;
        Wed, 09 Oct 2024 07:12:27 -0700 (PDT)
Message-ID: <2019d667-bd5f-45f5-9a1d-ed170f25fee5@citrix.com>
Date: Wed, 9 Oct 2024 15:12:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: restore semicolon after explicit DS prefix
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cdf93d64-dcc0-4e01-88fe-71145ffff1ff@suse.com>
 <8f85c4d2-805b-43ed-926e-732382b7e6b9@citrix.com>
 <7f3229e9-43c1-48f7-9921-ce826c7c19c0@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <7f3229e9-43c1-48f7-9921-ce826c7c19c0@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09/10/2024 7:04 am, Jan Beulich wrote:
> On 08.10.2024 18:37, Andrew Cooper wrote:
>> On 08/10/2024 5:00 pm, Jan Beulich wrote:
>>> It's not unnecessary (as the earlier commit claimed): The integrated
>>> assembler of Clang up to 11 complains about an "invalid operand for
>>> instruction".
>>>
>>> Fixes: b42cf31d1165 ("x86: use alternative_input() in cache_flush()")
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>
>>> --- a/xen/arch/x86/flushtlb.c
>>> +++ b/xen/arch/x86/flushtlb.c
>>> @@ -286,7 +286,7 @@ void cache_flush(const void *addr, unsig
>>>           * + prefix than a clflush + nop, and hence the prefix is added instead
>>>           * of letting the alternative framework fill the gap by appending nops.
>>>           */
>>> -        alternative_input("ds clflush %[p]",
>>> +        alternative_input("ds; clflush %[p]",
>> /* Clang-IAS < 12 needs the semicolon */  which can probably fit on the
>> end of the line.
> I've made it "Semicolon for Clang-IAS < 12" to actually fit on the line.
>
> I wonder whether I can take the reply as "ack with that change"?

Yeah, that's good enough.

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

>
>> Or we stop supporting such old versions of Clang/LLVM.
> As indicated in reply to Roger's proposal, that would leave me without
> any way to test with at least some Clang versions (unless I got into the
> business of also building my own Clang binaries).

Or using the upstream provided builds.  (Seriously - this is something
the LLVM community completely outshine the GCC/Binutils community.)

Or using Gitlab CI.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:24:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:24:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814603.1228191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXbm-0004SI-JH; Wed, 09 Oct 2024 14:24:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814603.1228191; Wed, 09 Oct 2024 14:24: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 1syXbm-0004SB-Fe; Wed, 09 Oct 2024 14:24:10 +0000
Received: by outflank-mailman (input) for mailman id 814603;
 Wed, 09 Oct 2024 14:24: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syXbl-0004S5-Fb
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:24:09 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 24452b72-864a-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:24:08 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728483841096941.1036631949369;
 Wed, 9 Oct 2024 07:24:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 24452b72-864a-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728483842; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=H7fNf/VgRza/UWiqcicfNJQtHQ4EVVEmNgHP7VFZk0VR/lpy35R8/VocXYI+qm56kEUHnVPQ/iqp88s3t5xfymWLQl0B0LYeaLiSpawSCnGLp+Y4ZU593czOZPw//oUXsiLZrRuHZMOCbmXNhInemUSypXqCrGmU51R3cDBnZ/0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728483842; 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=eV8lDH55z7Y7RlEHO7pHY7SnY8hRfCYAaxvkVmR4z1o=; 
	b=QyLjHfGuMy5DcEtWpVq81oCCW4V6sIwwzwlsg4sHpDQqD8PyU4GZSwUbTXDkdqQ1bfr4LwVMbUIDyCrI0/oDFrLANIh95n/CalJ7GZ+PvUiTkViZaZ1SztGEByCwehi3dkVx+RXWt30EmDOyGMpdO1hhKVEeELRiPZUDSBvJyiY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728483842;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=eV8lDH55z7Y7RlEHO7pHY7SnY8hRfCYAaxvkVmR4z1o=;
	b=SQOyarD++AL9szC24MjMxQ6GpkwFGskIotKz4tKCRaFkzs0N9xzWrKJtsDuRXvQE
	Z08f07VXEoCYgE2pOmI9h9BnNRweTvARkxDWmMKKv1ZB5267/in6WFPKVc9Vy15Mf4v
	zbF+lWA5PqK5btXiWfV0w1YqymGsY9tO7JwIC504=
Message-ID: <f715e69c-928a-49c4-ae72-49c8444b0a9c@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:23:58 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/44] x86/boot: convert setup.c mod refs to early_mod
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-9-dpsmith@apertussolutions.com>
 <a2346abb-e332-40a3-88bb-0159f6a359e8@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <a2346abb-e332-40a3-88bb-0159f6a359e8@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 15:34, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> To allow a slow conversion of x86 over to struct boot_module, start with
>> replacing all references to struct mod to the early_mod element of struct
>> boot_module. These serves twofold, first to allow the incremental 
>> transition
>> from struct mod fields to struct boot_module fields. The second is to 
>> allow
>> the conversion of function definitions from taking struct mod 
>> parameters to
>> accepting struct boot_module as needed when a transitioned field will be
>> accessed.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 61 ++++++++++++++++++++++++--------------------
>>   1 file changed, 34 insertions(+), 27 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index dd82ca3d43e2..ba4bee6b93af 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1341,15 +1341,15 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
>>       kexec_reserve_area();
>> -    initial_images = mod;
>> +    initial_images = bi->mods[0].mod;
> 
> Isn't this wrong?
> mod is the array of module_t * of *all* modules, but bi->mods[0].mod is 
> a single module_t *?

No it is not wrong:
   bi->mods[0].mod == __va(mbi->mods_addr)[0]

While the modules themselves get relocated, the location of the array of 
module_t never change.

The question does give me pause to double check the patch ordering, just 
to be sure that mod_start and mod_end are correct up until we transition
to using the boot_module fields.

>>       for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
>>       {
>> -        if ( mod[i].mod_start & (PAGE_SIZE - 1) )
>> +        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
>>               panic("Bootloader didn't honor module alignment 
>> request\n");
>> -        mod[i].mod_end -= mod[i].mod_start;
>> -        mod[i].mod_start >>= PAGE_SHIFT;
>> -        mod[i].reserved = 0;
>> +        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
>> +        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
>> +        bi->mods[i].mod->reserved = 0;
>>       }
>>       /*
> 
>> @@ -1509,13 +1510,15 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>   #endif
>>       }
>> -    if ( bi->mods[0].headroom && !mod->reserved )
>> +    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
>>           panic("Not enough memory to relocate the dom0 kernel image\n");
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
>> +        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
>> +                        << PAGE_SHIFT;
> 
> pfn_to_paddr() ?

Yep, missed one ( ._.)

>> -        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(mod[i].mod_end));
>> +        reserve_e820_ram(&boot_e820, s,
>> +                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
>>       }
>>       if ( !xen_phys_start )
>> @@ -1593,8 +1596,9 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>                   map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
>>                   for ( j = 0; j < bi->nr_modules; ++j )
>>                   {
>> -                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
>> -                                   mod[j].mod_end;
>> +                    uint64_t end = pfn_to_paddr(
>> +                                   bi->mods[j].mod->mod_start) +
>> +                                   bi->mods[j].mod->mod_end;
> 
> I think you want a different indent.  I think
>      uint64_t end = pfn_to_paddr(bi->mods[j].mod->mod_start)
> 
> will all fit on one line (indented all the way).  (Thunderbird makes it 
> difficult me to send indented.)

Yes, it will fit on one line without the '+', but I believe one of the 
many unwritten coding style rules is that the '+' stays with the LHS, so 
I wrapped the LHS with the '+'.

>>                       if ( map_e < end )
>>                           map_e = end;
>> @@ -1668,11 +1672,13 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        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),
>> -                         _mfn(mod[i].mod_start),
>> -                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
>> +        set_pdx_range(bi->mods[i].mod->mod_start,
>> +                      bi->mods[i].mod->mod_start +
>> +                      PFN_UP(bi->mods[i].mod->mod_end));
>> +        map_pages_to_xen(
>> +            (unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
> 
> map_pages_to_xen((unsigned long)maddr_to_virt(bi->mods[i].start),
> 
> All fits on one line.

If it does, I will bring it back up.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:25:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814609.1228201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXd2-0004zm-Rj; Wed, 09 Oct 2024 14:25:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814609.1228201; Wed, 09 Oct 2024 14:25: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 1syXd2-0004zf-Ol; Wed, 09 Oct 2024 14:25:28 +0000
Received: by outflank-mailman (input) for mailman id 814609;
 Wed, 09 Oct 2024 14:25: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syXd1-0004zZ-2O
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:25:27 +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 539b2725-864a-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:25:26 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a99543ab209so453664566b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:25:26 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99527d3ae4sm444456066b.195.2024.10.09.07.25.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:25:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 539b2725-864a-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728483925; x=1729088725; 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=Gq16bJoo/pFRiiuUym9iMU+LKtD8lMR8H/ig1NkW5Io=;
        b=SvaGGgATDuSdzkIzsXF/CgH9QhAbLOFuVgWwatzUEtpBTqvlB6DBIV6eCIPgUwXxol
         9VM5hODWbVGFz9CKvvAKYsrB/CpLM98RcKfCgQl5ep6p7yLKDAdf5G2WJJdGCIOWAlWS
         0tieCvmm+eg9Xe+rrVmh4QMuoQky8YN1uSpd5r/Oj7F4pnQfX2ZOvE1q86kG6m5MR8C1
         2brBZadEPju5sFv7W4w8aFyqpR8sH1phioatDzfO5UzlqNHJOB9XlBiaELyzqEU1ImCX
         JhrsB3Vf9afrfUS6dYpmt+4yVbtAshyWfYQ8xPjyGo90fByXiSyDHHN5vXarue77vYkR
         6m7A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728483925; x=1729088725;
        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=Gq16bJoo/pFRiiuUym9iMU+LKtD8lMR8H/ig1NkW5Io=;
        b=reLDfV6qgANyn8/WpjzYQm6AU7I0VNk1J2FEiGYvrP5WZfo+qv89O8HZLbyo/FendH
         /1zQkFrKYSpc9HSS0qKg69mJi8fF0m3tgxo6Pl5jG7bNeg1TcdhvVSAlXPvviaBQ+gA1
         q6wtMI369dNJEsP7neM1/T45OR63yA2TQoy9w/qThOm2geIWpPHmr9hNNMnaVSF/+ZTA
         17sag3yi1oNda1/7ZwHqCRRRtFcAq/olL87w04UhRfJEAq8SbYKhXnV+YRi1TwNvovIx
         MtZnvutBsDqKIKj1qQnQpSO6d3ieCcwMC5sPYIjsY5aGKhREGvY8TnroxzWmYUuA+Pdo
         nePQ==
X-Forwarded-Encrypted: i=1; AJvYcCUMKAy9G7PAy3mtHe2lnJ2J1RhL4UE71Gt1S0Hp+XTJgETT3ezuHL7O4kfjcS9y856gCrOR/Qt5CdU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzlqBGFG0O4wxJfL3lUkmMwjsukZeTrHDe8htYPBWkKE4eyUzqr
	JG5g+XsIbhFHER2Omd5Kf89cpFdy5u1+jr1cP0RQLPfqSg9eWDjVJzya7+Gf5A==
X-Google-Smtp-Source: AGHT+IHnpoBgJmbtrUC8S1sh5hJ3ODjlfwE6dznugr/PspiU1zB8gcKBPdrn/5tgNwGh8/Yh9uLNjw==
X-Received: by 2002:a17:907:ea6:b0:a90:1300:e613 with SMTP id a640c23a62f3a-a998d327ecbmr255239066b.55.1728483925547;
        Wed, 09 Oct 2024 07:25:25 -0700 (PDT)
Message-ID: <28e07993-9463-49a5-ba75-e012056e5ab2@suse.com>
Date: Wed, 9 Oct 2024 16:25:24 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 06/11] tools/libacpi: Use LUT of APIC IDs rather than
 function pointer
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-7-alejandro.vallejo@cloud.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: <20241001123807.605-7-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:38, Alejandro Vallejo wrote:
> @@ -148,7 +148,7 @@ static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
>          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 = config->cpu_to_apicid[i];

Perhaps assert (like you do in an earlier patch) that the ID is small
enough?

> --- a/tools/libacpi/libacpi.h
> +++ b/tools/libacpi/libacpi.h
> @@ -84,7 +84,7 @@ struct acpi_config {
>      unsigned long rsdp;
>  
>      /* x86-specific parameters */
> -    uint32_t (*lapic_id)(unsigned cpu);
> +    uint32_t *cpu_to_apicid; /* LUT mapping cpu id to (x2)APIC ID */

const uint32_t *?

> --- a/tools/libs/light/libxl_dom.c
> +++ b/tools/libs/light/libxl_dom.c
> @@ -1082,6 +1082,11 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
>  
>      dom->container_type = XC_DOM_HVM_CONTAINER;
>  
> +#if defined(__i386__) || defined(__x86_64__)
> +    for ( uint32_t i = 0; i < info->max_vcpus; i++ )

Plain unsigned int?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:26:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:26:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814614.1228211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXdf-0005U8-2a; Wed, 09 Oct 2024 14:26:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814614.1228211; Wed, 09 Oct 2024 14:26: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 1syXde-0005U1-WF; Wed, 09 Oct 2024 14:26:07 +0000
Received: by outflank-mailman (input) for mailman id 814614;
 Wed, 09 Oct 2024 14:26: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syXdd-0005Tn-9i
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:26:05 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 696d1252-864a-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:26:04 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728483956995801.6726115135878;
 Wed, 9 Oct 2024 07:25:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 696d1252-864a-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728483958; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=X8+Nfrh3EM7pm9fDrijmD824QcRzXL0Xl564qPODYM/AmQ2Z+NrVM5rw1KoFJrsxUo0Blp/FcSa9DgaqSQ+ggHGftH8YiQ4QCd38S2IlBaG3sUapywwYyD5+Ar97Gh1bI8LgeD3q7RzJTF6lkBpYmijLS+9xXHCgvaDY3iHIWzw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728483958; 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=7FC7TXmamB84eXzG7JNc/+2zDsbCnDg/Whb+n+mdk7U=; 
	b=XyrgHVtWGX5nuX8xoIo+n84Gk34az12u4HpvXtchMDJrs1YadPRhBENCiQOHWE34JobhX3A29ZPNJnLEfPPgKjplXDAUUvwlh9Z1CEFQvRH4hqLmdC6HQm6resgMHBw7gpYeRAk+aacapIJiApY/P+fCYwRqI2yj1ZSYvrHkWR8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728483958;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=7FC7TXmamB84eXzG7JNc/+2zDsbCnDg/Whb+n+mdk7U=;
	b=DrQVVK6MG6Z6NcTf8l2Q9+GKXAuviiR4JLgwxXrYaC4Wl9IhF2oJjlO6HdvFRXif
	CSJinB8EwnZqyThGUVHNBZggyHoM6UjOfYV4g/STIeycfMa/saMGXfDUVIk+GVbYnKW
	y8WBRR/ih3k8HwwDDwg6SLYB9UP7BXD6344/v1Yk=
Message-ID: <2ac01c09-4a30-4544-a2b8-39c3378f557e@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:25:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/44] x86/boot: introduce boot module types
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-10-dpsmith@apertussolutions.com>
 <e45d1cb7-333e-47a3-8834-5cb927e42e3b@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <e45d1cb7-333e-47a3-8834-5cb927e42e3b@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 15:50, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> This commit introduces module types of xen, kernel, and ramdisk to 
>> allow boot
>> module detect code to tag the purpose of a boot module. This reduces 
>> the need
>> for hard coded order assumptions and global variables to be used by 
>> consumers
>> of boot modules, such as domain construction.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
> 
>> @@ -2058,6 +2063,7 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>              cpu_has_nx ? "" : "not ");
>>       initrdidx = find_first_bit(module_map, bi->nr_modules);
>> +    bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
> 
> This is incorrect if an initrd isn't present.

Correct, will put behind guard.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:28:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:28:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814624.1228221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXfS-0007uU-GO; Wed, 09 Oct 2024 14:27:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814624.1228221; Wed, 09 Oct 2024 14:27: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 1syXfS-0007uN-DF; Wed, 09 Oct 2024 14:27:58 +0000
Received: by outflank-mailman (input) for mailman id 814624;
 Wed, 09 Oct 2024 14:27: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syXfR-0007uE-SK
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:27:57 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id abd43475-864a-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:27:55 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728484066240917.0602204986117;
 Wed, 9 Oct 2024 07:27:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: abd43475-864a-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728484071; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=i+S2D8Hcg0UOBkoDZlMgr9MXWaRKT69o3Bn6iau/KlgrbteChpw4n+uZI4LQQrWKuUY77nADpYls9swqlL5OoL2r0BnCUuuRLDm9Ho/hYphhVxk0Z9R45FrDBkaFRWn31jMbGBUl/QZAXyAYFJq8hn9rqZxe09MHBKADzAT+3ZQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728484071; 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=9dnrk7Ux+QSKxifrK0fc4/U5m1lGqmw0srJnlZiqcg4=; 
	b=Ud40njCK4jqwGygOsUaLKnISmVKVI2bH5wm9JqTKHqlz3tkUn5wM6D3yr57LT8bwTzBF2P4R9gKZreIu5nPz5uuhNJiDXWUmBVPBJnF6eZqPh6+HIFicTxRgXtVaaYZNDiOEfS5KgavEJvOnxIGnv9kSE/Bt1bqCvOq1ZpH1Mao=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728484071;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=9dnrk7Ux+QSKxifrK0fc4/U5m1lGqmw0srJnlZiqcg4=;
	b=r/Cp4r6GVNSCEI0YmzdDENpab0yzXkdLyCb8z5kgZec+3gBYPCQLgHvkgZfYI6ix
	wioc/hI9Gw9G/is4oLZOgAtN+NRfSiuZ9tWCLNo9/sWmcb2mtDKVgTYHK83nCPn7ZqT
	+0+VeZoZHkPoWiRNPCTbaGrX0bwUpSrq3mnXB2wg=
Message-ID: <580cc5e2-ef46-476a-90cc-97d78708e03a@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:27:43 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 10/44] x86/boot: introduce boot module flags
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-11-dpsmith@apertussolutions.com>
 <9372d72c-c98d-495b-bc3c-8b81208f7cd5@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <9372d72c-c98d-495b-bc3c-8b81208f7cd5@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 16:02, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> The existing startup code employs various ad-hoc state tracking about 
>> certain
>> boot module types by each area of the code. A boot module flags is 
>> added to
>> enable tracking these different states.  The first state to be 
>> transition by
>> this commit is module relocation.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootinfo.h | 4 ++++
>>   xen/arch/x86/setup.c                | 8 ++++----
>>   2 files changed, 8 insertions(+), 4 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h 
>> b/xen/arch/x86/include/asm/bootinfo.h
>> index 6941a8975ea6..021ff0d93643 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -31,6 +31,10 @@ struct boot_module {
>>        */
>>       unsigned long headroom;
>>       enum bootmod_type type;
>> +
>> +    uint32_t flags;
>> +#define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
>> +
> 
> Stray newline.  Otherwise:
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Ack and thank you.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:29:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:29:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814630.1228231 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXgZ-0000Mo-Ol; Wed, 09 Oct 2024 14:29:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814630.1228231; Wed, 09 Oct 2024 14:29: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 1syXgZ-0000Mh-MF; Wed, 09 Oct 2024 14:29:07 +0000
Received: by outflank-mailman (input) for mailman id 814630;
 Wed, 09 Oct 2024 14:29: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syXgY-0000Mb-BW
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:29: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 d6339eb7-864a-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:29:05 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so1918752a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:29:05 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c9280ad099sm629809a12.84.2024.10.09.07.29.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:29:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d6339eb7-864a-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728484145; x=1729088945; 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=dKPOmaEhYZkN1Iu6/2SbFWlqIYR9fqCaCVWEXN7uZUw=;
        b=E08K0OBZ433m5PAKhT3TM+Qa/4ij0w56D07MxMr9t8xZoC4E8/renYMx8ZGnB0bqms
         p9I19joM73RSk2bRdj8ZR463AagyPTXteVDsD0Cw7npJXKPH2CkqncknH4frehBfdmPz
         Uey7rUkdq31uHzX9Rzy/B8QFjEVPKbgwgnaweFEfeVd9BHl1laYho6NPMbQCSmmDjfjS
         VrD/54KCCHWLoYeslYoDeR67wsnxBEqW64ijKUdv4jkBFplCcMabe2L8omeM+/wfT3Bv
         cCFJL7c76Ysl6742i0qwvEMOqKEWCV1qdvPqs77JK/3g5jSq2DmjIPE8ZcGj0oHSHkzp
         w8rA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728484145; x=1729088945;
        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=dKPOmaEhYZkN1Iu6/2SbFWlqIYR9fqCaCVWEXN7uZUw=;
        b=h71V/iriemkQjnAqMkJK/ibb3gQB6kMxVa4BEdPhONRvGkE71AWUoIsN9aaGFgjXJo
         r4DLHiUs/Yiz+MmTGRsj9TF2Yr4d4IDE9yMDg6CkC7AReJT4S65YZUpQRV2FyIpst3e1
         yMFtdoa1iJ3S8ptfV6NTm4EgS85TxCKQuZDoNe/YJayuSuKbK9GMljeCGzDhdilGDDoT
         ddYSrTnPLXqjZHrQyhj4Qv3iRRsKT9fLfXlao8Ush0/ksDb4GrrT3NixfWzeFOCqs/CS
         krCxiVOuzYwQpNs17ZeVBkZlQmdTaipxc49PhXf7Go+wy1NzO+mkrwggCpEZ+g5vtWdR
         v3gw==
X-Forwarded-Encrypted: i=1; AJvYcCUi5PDRY0rritQqOJAkp0aMQLs5/57yHBa5TwWbjDtKVD+jgiZ3TeGriRZLK3f6CX8ZBy9kDYAdtek=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxdkhH9+c1EdxovcpyFWPJcJC/uFOdSDQnAQiMvZh2cKRa+ba5l
	0du5ZUltmc/Ns0UlENGmZf/WWdi4P076bVxEHhdPkiqUuquFhNQ+8fLmMdEQdg==
X-Google-Smtp-Source: AGHT+IGsTgUFeg+A2M/uCGAqgAlmoUrdnsoPsLchlKwtVZWMmuitqz4v0e5/Q/Nb3fUQA4x6ezGyPA==
X-Received: by 2002:a05:6402:c44:b0:5c8:a01c:e9b2 with SMTP id 4fb4d7f45d1cf-5c91d0e937amr2775819a12.17.1728484144629;
        Wed, 09 Oct 2024 07:29:04 -0700 (PDT)
Message-ID: <783a1354-4b34-4b21-9949-b2dd27c9a86a@suse.com>
Date: Wed, 9 Oct 2024 16:29:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/44] x86/boot: convert setup.c mod refs to early_mod
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-9-dpsmith@apertussolutions.com>
 <a2346abb-e332-40a3-88bb-0159f6a359e8@amd.com>
 <f715e69c-928a-49c4-ae72-49c8444b0a9c@apertussolutions.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: <f715e69c-928a-49c4-ae72-49c8444b0a9c@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 16:23, Daniel P. Smith wrote:
> On 10/7/24 15:34, Jason Andryuk wrote:
>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>> --- a/xen/arch/x86/setup.c
>>> +++ b/xen/arch/x86/setup.c
>>> @@ -1341,15 +1341,15 @@ void asmlinkage __init noreturn 
>>> __start_xen(unsigned long mbi_p)
>>>       set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
>>>       kexec_reserve_area();
>>> -    initial_images = mod;
>>> +    initial_images = bi->mods[0].mod;
>>
>> Isn't this wrong?
>> mod is the array of module_t * of *all* modules, but bi->mods[0].mod is 
>> a single module_t *?
> 
> No it is not wrong:
>    bi->mods[0].mod == __va(mbi->mods_addr)[0]

Yet as it's seemingly wrong, a comment appears to be necessary.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:32:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:32:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814641.1228241 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXjQ-0001qg-6U; Wed, 09 Oct 2024 14:32:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814641.1228241; Wed, 09 Oct 2024 14: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 1syXjQ-0001qZ-2o; Wed, 09 Oct 2024 14:32:04 +0000
Received: by outflank-mailman (input) for mailman id 814641;
 Wed, 09 Oct 2024 14:32: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syXjP-0001pH-4B
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:32:03 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3ec31e2d-864b-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:32:02 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728484315479914.5971400770709;
 Wed, 9 Oct 2024 07:31:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3ec31e2d-864b-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728484316; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=dwVCbYVRiENdwfEuwysfD+//SH243dtlYSrEE/IvZ88oBMH+GHVUF6vOzpT92qlk8eo6+7BkkABAgxVMKTGJ9wBlv7nopm7HgoJ4emi9636YfoJQNdQSEANTM83mDEpvwTl/Ghoei4lx351GzMk5d83+AzCpX/NMOeOiDAx3bHU=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728484316; 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=awfXqVkJzAmarYBRcC1fQ5JfBpTVEuKpG9SUMjCgYK0=; 
	b=Fc7z+v9/XdL6rAukBJbuo7zS25gLw8rczIfMuRjuYhJOxQRFGKGjymSZoLYyZb85uWhSLYugbgIlTmQ17J6NA6HbzGkxIJ1L30LGZjXyVDqq7rtGmuUQAg9Rx1zK7/u5nbQ+M3YL2j/5vlDFOPLA9mjESZyKK2z5cttX76Ke2Jo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728484316;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=awfXqVkJzAmarYBRcC1fQ5JfBpTVEuKpG9SUMjCgYK0=;
	b=T0poYdR3XTwdoLNzcVXkkX/XLfOoPD4QAM/RfLcJghsSwq1v5xA45q4Z/aE0T0Ei
	dcLLoS07LK886fhoMSAq7zjzc8UE7Nn3QLLCbozVqKRPwgNKlRCA7soYbL2KRfHC3D7
	Jn71NdW0AUCePG/Dc9zBukx+bZ6WitHSLlfi0ULQ=
Message-ID: <8aedeaff-f428-4d50-8841-f2fc29c4e288@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:31:53 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/44] x86/boot: convert setup.c mod refs to early_mod
To: Jan Beulich <jbeulich@suse.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-9-dpsmith@apertussolutions.com>
 <a2346abb-e332-40a3-88bb-0159f6a359e8@amd.com>
 <f715e69c-928a-49c4-ae72-49c8444b0a9c@apertussolutions.com>
 <783a1354-4b34-4b21-9949-b2dd27c9a86a@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <783a1354-4b34-4b21-9949-b2dd27c9a86a@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/9/24 10:29, Jan Beulich wrote:
> On 09.10.2024 16:23, Daniel P. Smith wrote:
>> On 10/7/24 15:34, Jason Andryuk wrote:
>>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>>> --- a/xen/arch/x86/setup.c
>>>> +++ b/xen/arch/x86/setup.c
>>>> @@ -1341,15 +1341,15 @@ void asmlinkage __init noreturn
>>>> __start_xen(unsigned long mbi_p)
>>>>        set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
>>>>        kexec_reserve_area();
>>>> -    initial_images = mod;
>>>> +    initial_images = bi->mods[0].mod;
>>>
>>> Isn't this wrong?
>>> mod is the array of module_t * of *all* modules, but bi->mods[0].mod is
>>> a single module_t *?
>>
>> No it is not wrong:
>>     bi->mods[0].mod == __va(mbi->mods_addr)[0]
> 
> Yet as it's seemingly wrong, a comment appears to be necessary.

That is fair, will add comment.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:36:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:36:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814646.1228250 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXnk-0002TV-Lk; Wed, 09 Oct 2024 14:36:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814646.1228250; Wed, 09 Oct 2024 14: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 1syXnk-0002TO-Id; Wed, 09 Oct 2024 14:36:32 +0000
Received: by outflank-mailman (input) for mailman id 814646;
 Wed, 09 Oct 2024 14: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syXnj-0002TI-77
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:36:31 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ddac0804-864b-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:36:28 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728484580897303.3837773804188;
 Wed, 9 Oct 2024 07:36:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ddac0804-864b-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728484584; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=eDDi6d56+f4O1H86Z+8XvTNS0x8JoCQveOY0zmpXiyZf5ykaHnJg+gPWblHalBZ0a3+nGMA/esjrCrjcHY+fHc3JLtoeLguL4m5BV2BqQEd1XuY8FzoKSjSztCUjYYQrPURJkUSALaEKFFTogvJBzmc/vqsbcKh/GufK95PytTo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728484584; 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=SLIPpUZ70l5GUI38EgchFjbId7y/WR0TYtmCWwB+glY=; 
	b=EbTntArkS/6vge964VyIkq5ou1xqCRyJ8vDXT1BVP/nfDo1o3GYoWUR2cP9YMVzFkdXNYcX0skl1h61bHat0Z1HCc1rdSXWW7RTS4mhiBey9RlOPIxea9cSEbmiVrz6ZKz/QkrGzJrvy0qrfWPL5TMZfWgX+5mDodasN83bFP+I=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728484584;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=SLIPpUZ70l5GUI38EgchFjbId7y/WR0TYtmCWwB+glY=;
	b=djK0wUGbYKvUZGFKso1fFpyizg6mHOwEMQTSyf//2nkjmTPB4hqq/E9iSja4pTD2
	C6m7YA/e0S7FKT3Fa61fTlQZJ45i3BL+fpIpC+bki/LrO3/nuKChcob4rJcaaFyuSIG
	DCg+vcI8kUkhqUgjI48wYdyYfzxWf/wZszDj+o60=
Message-ID: <f301b94a-c054-410d-8927-bea8abe506fd@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:36:18 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/44] x86/boot: update struct boot_module on module
 relocation
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-14-dpsmith@apertussolutions.com>
 <87771eef-050a-4d2f-845f-cbb053be4f72@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <87771eef-050a-4d2f-845f-cbb053be4f72@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 16:31, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> When a boot module is relocated, ensure struct boot_module start and size
>> fields are updated along with early_mod.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 7 +++++--
>>   1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 093a4f5380d1..f968758048ed 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1392,8 +1392,11 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>            * respective reserve_e820_ram() invocation below. No need to
>>            * query efi_boot_mem_unused() here, though.
>>            */
>> -        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
>> -        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
>> +        bi->mods[xen].start = virt_to_mfn(_stext);
>> +        bi->mods[xen].size = __2M_rwdata_end - _stext;
> 
> The last patch did:
> bi->mods[i].start = (paddr_t)mods[i].mod_start;
> 
> and start is a paddr_t.
> 
> Is virt_to_mfn() wrong?

Yah, that is seriously wrong. Will fix.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:39:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:39:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814654.1228260 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXqx-00053i-2O; Wed, 09 Oct 2024 14:39:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814654.1228260; Wed, 09 Oct 2024 14:39: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 1syXqw-00053b-W8; Wed, 09 Oct 2024 14:39:50 +0000
Received: by outflank-mailman (input) for mailman id 814654;
 Wed, 09 Oct 2024 14:39: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=BLvJ=RF=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syXqv-00051H-KN
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:39:49 +0000
Received: from mail-oa1-x2b.google.com (mail-oa1-x2b.google.com
 [2001:4860:4864:20::2b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 55378417-864c-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:39:48 +0200 (CEST)
Received: by mail-oa1-x2b.google.com with SMTP id
 586e51a60fabf-2872134c806so2239799fac.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:39:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 55378417-864c-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728484787; x=1729089587; 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=A5VYZzA33/X7lo1locmMNQ9zjdbZ5WoZT3Ls76hGZ8c=;
        b=lZPw1q8U6fLJMPtu2c6eBEx5qpVWIvMggqxqKhKIuSi6TCdR5N+rBClTtgabWAUD8U
         YUen/yK9Rx62uQG2g12tt1EeZD2Trlswbu9wL2JCqFo281EPwNRn5S6MRz9tIX6u7Y/8
         fMjmE/9n5hIxvoAGB4KrpUJf6OTSAVgikhEK8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728484787; x=1729089587;
        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=A5VYZzA33/X7lo1locmMNQ9zjdbZ5WoZT3Ls76hGZ8c=;
        b=G1XN7Q6Wg4JOddRQ/xdq+tMdoYncp9Qr5U0gS7sKzts6v7DzyHY6cnIkFN949WMIyP
         Zgn1dBGdQEiQjQSa2T6zGUI+VajsjKf6I1rsSdBgRQfyoOSsJ4JF2DPq5XFc1OeQJi30
         w5XrKeu9n9iuC+M2weVJ2H2+2I4GR7pVFo4fPl//ql7JqEvIQF6sF9GI9hR58KS+kndb
         hL90fDMplgCz1IXKDUxElXJ7IUw1D1xpbpleukgHXhzMmk5O7nvwZ1exS5rmDZbcXGpe
         12fT/3FThjQalxfOd7Q+eo7TyJjGO0pRMHqlZvBNdzN37nOhObxy5mmiZi2jE7//3NvO
         9g/g==
X-Forwarded-Encrypted: i=1; AJvYcCVqI0gFlOwy0evEWBh8WFU63+Ab5TbtRcWnrlK7VaOQvT8oaxOyIetzJJpZc7aO+5OG3MgzhHn9RN0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yya9N11asTkuqH/S7K+UAq8qTQ4Bp1QDTF0Okg20AY9Lx7ikxgj
	yZ1S1ycP31+JGLSTYva30vdGoPfYaVtpPydmwhR23Cpjw+2MFC32YSib25luGf4t8jnFg7yIYcc
	n3l0qet/IhOaqjEaobiAyUhvkllg4sah407efQw==
X-Google-Smtp-Source: AGHT+IH6qejYFYzLFfLVD6k3oEhDOGZlO74HgLGZyOngpOwrm5/fMzkWfKnBiQDZb2i4WDXQH7yEcWFfcykF3xLlKzo=
X-Received: by 2002:a05:6870:2113:b0:277:e457:6057 with SMTP id
 586e51a60fabf-2883450e7bbmr1812527fac.44.1728484787192; Wed, 09 Oct 2024
 07:39:47 -0700 (PDT)
MIME-Version: 1.0
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com> <a7b6fc68-a568-4b61-895d-c295ba3d3095@citrix.com>
 <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@suse.com>
In-Reply-To: <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 9 Oct 2024 15:39:36 +0100
Message-ID: <CACHz=ZjXdcBdPFwP4vNEgNMqaXfyJN1Ur_KVLfp4Y3zMs-J-VA@mail.gmail.com>
Subject: Re: [PATCH 1/7] byteorder: replace __u16
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 9, 2024 at 2:34=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 09.10.2024 15:20, Andrew Cooper wrote:
> > On 09/10/2024 10:21 am, Jan Beulich wrote:
> >> In {big,little}_endian.h the changes are entirely mechanical, except f=
or
> >> dealing with casting away of const from pointers-to-const on lines
> >> touched anyway.
> >>
> >> In swab.h the casting of constants is done away with as well - I simpl=
y
> >> don't see what the respective comment is concerned about in our
> >> environment (sizeof(int) >=3D 4, sizeof(long) >=3D {4,8} depending on
> >> architecture, sizeof(long long) >=3D 8). The comment is certainly rele=
vant
> >> in more general cases. Excess parentheses are dropped as well,
> >> ___swab16()'s local variable is renamed, and __arch__swab16()'s is
> >> dropped as being redundant with ___swab16()'s.
> >>
> >> With that no uses of the type remain, so it moves to linux-compat.h.
> >>
> >> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >> ---
> >> I'm unconvinced of the need of the separate ___constant_swab16(). I'm
> >> also unconvinced of the need for said constants (that even had casts o=
n
> >> them).
> >
> > There is a still-good series deleting the whole of byteorder/ and
> > replacing it with a few-hundred line single header.
> >
> > It is the second thing stalled on a governance change (prohibited
> > reasons to object to a change) which clearly no-one gives a damn about
> > fixing.  In fact double spite because it denied a good engineer his
> > first changes in Xen.
> >
> >
> > I don't particularly feel like trying to polish byteorder.  I'm incline=
d
> > to rebase+repost Lin's patches, at which point the majority of this
> > series simply disappears.
>
> I wouldn't mind you doing so, as long as that other series then progresse=
s.
> What I don't want to get into is the other series being stuck rendering t=
his
> one stuck, too. Then it would imo be better to take this one first, rebas=
e
> the other on top, and work towards it becoming unstuck (whatever that tak=
es;
> I have no recollection of what the issue was back at the time, all I reca=
ll
> is that, yes, there was such work at some point).
>
> Jan
>

I usually don't like stopping a series waiting for another series too.

In these mostly automated large changes instead of a manual rebase I
extract patches with "git format-patch", do the same automated replace
with sed/perl (like "s/\<u32\>/uint32_t/" and so on) and apply with
"git am".

My 2 cents.

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:42:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:42:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814663.1228270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXtZ-0006ns-ED; Wed, 09 Oct 2024 14:42:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814663.1228270; Wed, 09 Oct 2024 14:42: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 1syXtZ-0006nl-Bm; Wed, 09 Oct 2024 14:42:33 +0000
Received: by outflank-mailman (input) for mailman id 814663;
 Wed, 09 Oct 2024 14:42: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 1syXtY-0006nb-Rr; Wed, 09 Oct 2024 14:42: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 1syXtY-000359-Q8; Wed, 09 Oct 2024 14:42: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 1syXtY-0000DR-3x; Wed, 09 Oct 2024 14:42:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syXtY-0004aa-3S; Wed, 09 Oct 2024 14:42: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=JEPC0anYygbYIuv6TDtGXlwQfH7hzPZeGBljT3suDNA=; b=RFOJqm2K+ID3NecSS7JvVxDheI
	TDu9e5i+7X49Msh2rmD2Sl1fKyd3pwz3pkuY3pyl0WuwjSjMh9TNI+yiDcH5bi2uz+m/TmPyoPTDP
	yrjbV+GpcIptenr++JdqUFCn+RV37NotEeq3TRrykBAcl/enw5FF7AOYL5KtbE2ICSkc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188031-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188031: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=7bac0a940e905941487c3a2f2f5fb6ee43ff040a
X-Osstest-Versions-That:
    ovmf=fd619ec4608564fe6cf5ba8f9ae986206355861e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 14:42:32 +0000

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

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

Last test of basis   188023  2024-10-09 06:15:04 Z    0 days
Testing same since   188031  2024-10-09 11:13:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Nhi Pham <nhi@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    


------------------------------------------------------------
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
   fd619ec460..7bac0a940e  7bac0a940e905941487c3a2f2f5fb6ee43ff040a -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:42:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:42:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814666.1228281 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXtf-00075A-R7; Wed, 09 Oct 2024 14:42:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814666.1228281; Wed, 09 Oct 2024 14:42: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 1syXtf-000753-O1; Wed, 09 Oct 2024 14:42:39 +0000
Received: by outflank-mailman (input) for mailman id 814666;
 Wed, 09 Oct 2024 14:42: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=6gYK=RF=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1syXte-00074J-Jl
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:42:38 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b9d9bfd9-864c-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:42:36 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539908f238fso8007967e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:42:36 -0700 (PDT)
Received: from [10.17.77.207] (ll-22.209.223.85.sovam.net.ua. [85.223.209.22])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539afec849dsm1515317e87.101.2024.10.09.07.42.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:42:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9d9bfd9-864c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728484956; x=1729089756; 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=18hRGmFxt3xBaAqVK/WnmVYHLpaZI0ST+KXeJf4d5oY=;
        b=leYcVsTzRLIhSYzpHs1wqII3l46h1KLprsQy18QfeHDY2JnmZ3Q857ht/Lqkbb97rI
         Pq/AG3e/8ClPhBVHQJOsQ3zKChULrSZKk3rnbAIcVNjSpaGxatiK9+fAR9KXxduCU77f
         8W7ViB+L7Tm4FRn/1nbDgf2zUKKFmoaE60UbWQ/LSfaiHx7csIVhlXA51mKkpYoO+h4+
         WPEEr5TzxJmyhpFYqh8Wrw+cMPw4dAL1xZfulU2yArGfF0YT3TqRNFw13WIGKVAPRSWu
         JbYDv/QmyCdJYlVBS4Mdlb8WsVhgkTO76VDFAeN+aRIsTcdhznCrGf6xu15K5xGhGW5z
         PqLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728484956; x=1729089756;
        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=18hRGmFxt3xBaAqVK/WnmVYHLpaZI0ST+KXeJf4d5oY=;
        b=mzVk3xqHGBgL9eRH9N83f6q2e9DMO+eNEShsyWh+R3gmX5MHVQIEG13j5Xp4oTCXow
         Gu9sSbr/cGo/RFvxSXvwhVMywyF/r/tFDvwCP6DUd7nNSw9g61NhakdgxibgOwZO30Mu
         5UNidbKWgEeRjueXStbtXbd/+UboxnWOX/OmufU/+LT8Wn8jlVCbVcEdXikn3T+RUbds
         LS9wWDa4Vmb3OC76pmD+IBZGnB+WgaBe1DplodPGaVf0O8xU+JXqRkPoS/nbykgFYgD1
         JLD4xsEjhxWJFkdiCFz85737F0so8v6FftUKtOe0tQscCyWNud+0rLZHEl1xqBj1ouF9
         MTdQ==
X-Forwarded-Encrypted: i=1; AJvYcCWZA+jYnyGFMf2UZrMmt4ZFigpUe2hiL8GBY6/5b9aI36jqgNY5KczEsshE4cmPgU8m/qN9/VZVme0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwPLsmq7u5n9elMFaknJ9fSTJQNC7UR00XzZybsSoss7fWwGnAk
	56XVKgrKUyQMG6SuoNBh62YfnrFW4M3VMQnFfrwizWpkTw1wbd1l
X-Google-Smtp-Source: AGHT+IF40vr1CHz8xdQ6oCkhhNlwHbD9gTkoDh1iFQiiUNp1H/8hwpUHzcLfiZtdWo1SNTIKQjZN8g==
X-Received: by 2002:a05:6512:3b09:b0:535:d4e9:28bf with SMTP id 2adb3069b0e04-539c494ed81mr1799643e87.46.1728484955338;
        Wed, 09 Oct 2024 07:42:35 -0700 (PDT)
Message-ID: <24b503c4-c9bc-407a-bd78-031f947afa65@gmail.com>
Date: Wed, 9 Oct 2024 17:42:31 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Bertrand Marquis <Bertrand.Marquis@arm.com>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 09.10.24 01:46, Stefano Stabellini wrote:


Hello Stefano

> On Tue, 8 Oct 2024, Oleksandr Tyshchenko wrote:
>>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
>>>>
>>>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>
>>>> Add common requirements for a physical device assignment to Arm64
>>>> and AMD64 PVH domains.
>>>>
>>>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>> ---
>>>> Based on:
>>>> [PATCH] docs: fusa: Replace VM with domain
>>>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
>>>> ---
>>>> ---
>>>> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>>>> docs/fusa/reqs/index.rst                      |   1 +
>>>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>>> 4 files changed, 428 insertions(+)
>>>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>>>
>>>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> new file mode 100644
>>>> index 0000000000..a1d6676f65
>>>> --- /dev/null
>>>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> @@ -0,0 +1,365 @@
>>>> +.. SPDX-License-Identifier: CC-BY-4.0
>>>> +
>>>> +Device Passthrough
>>>> +==================
>>>> +
>>>> +The following are the requirements related to a physical device
>>>> assignment
>>>> +[1], [2] to Arm64 and AMD64 PVH domains.
>>>> +
>>>> +Requirements for both Arm64 and AMD64 PVH
>>>> +=========================================
>>>> +
>>>> +Hide IOMMU from a domain
>>>> +------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>>>> +
>>>> +Description:
>>>> +Xen shall not expose the IOMMU device to the domain even if I/O
>>>> virtualization
>>>> +is disabled. The IOMMU shall be under hypervisor control only.
>>>> +
>>>> +Rationale:
>>>
>>> I think there should be a rationale here to explain why we do not want the
>>> IOMMU
>>> in particular to be assigned to a domain.
>>
>>
>> ok, will add. I propose the following text:
>>
>> Xen having the whole picture of the host resources and device assignment
>> unlike the individual domain makes use of the IOMMU to:
>> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also known as
>> stage-2 (or 2nd stage) address translations for DMA devices passed through to
>> domains and Interrupt Remapping on AMD64 platforms.
>> - provide access protection functionalities to prevent malicious or buggy DMA
>> devices from accessing arbitrary memory ranges (e.g. memory allocated to other
>> domains) or from generating interrupts that could affect other domains.
>>
>>
>>>
>>> Added to that, I am not completely sure that there is a clear way to test
>>> this one
>>> as for example one could assign registers not known by Xen.
>>
>> I am afraid you are right, valid point. For example, on Arm64, if there is no
>> corresponding driver in use, we will end up exposing IOMMU dt node to Dom0.
>>
>>
>>>
>>> Shouldn't this requirement in fact be an assumption of use ?
>>
>> Assumption of use on Xen? From my PoV sounds reasonable, will do.
> 
> In my view, this does not qualify as an Assumption of Use, as it does
> not align with the definition we have used so far. If we were to
> categorize this as an Assumption of Use, we would need to change the
> definition.

Right, what I meant was new Assumption of use *on Xen* that would 
require updating docs/fusa/reqs/intro.rst.


> 
> We have defined an Assumption of Use as something Xen expects from the
> rest of the system for it to function correctly, such as being loaded at
> EL2. On the other hand, 'Requirements' refer to behaviors we expect Xen
> to exhibit.
> 
> Our goal is for Xen to configure the IOMMU at boot using the stage 2
> translation, and to ensure that Xen prevents domains from altering the
> IOMMU configuration. These are specific expectations of Xen's behavior,
> so I believe they fall under Requirements and should be validated in
> some way.
> 
> However, we could adjust the wording. For example, we might replace the
> negative phrasing with a positive requirement, such as: 'Xen shall
> configure the IOMMU at boot according to the stage 2 translation
> tables.' There is no need to explicitly state that the IOMMU is not
> exposed to guests, as nothing is exposed unless explicitly allowed or
> mentioned. We could, however, include a brief note about it for clarity.

I agree, good explanation! Just maybe "Xen shall
configure the IOMMU *at domain creation time* according to the stage 2 
translation tables" since the IOMMU context is created at that time. 
Although, if we are going to deal with boot time domains only, *at boot* 
also sounds ok, I think.


> 
> 
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Discover PCI devices from hardware domain
>>>> +-----------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
>>>> +
>>>> +Description:
>>>> +The hardware domain shall enumerate and discover PCI devices and inform
>>>> Xen
>>>> +about their appearance and disappearance.
>>>
>>> Again this is a design requirement telling what should be done by a domain.
>>> This is an interface or an assumption of use but not a Xen design req.
>>
>> I agree, will convert to Assumption of use on domain.
> 
> This example better aligns with our definition of Assumption of Use so
> far: we expect the hardware domain to enumerate and discover PCI
> devices, then notify Xen about their appearance or removal. This is an
> expectation placed on the hardware domain, not on Xen itself. I agree
> with Bertrand that, as written, it is more of an Assumption of Use than
> a Requirement.
> 
> However, rather than converting it into an Assumption of Use, I think we
> should rewrite it as a requirement focused on Xen's interfaces for
> enumeration. For instance:
> 
> "Xen shall provide hypercalls to allow the hardware domain to inform Xen
> about the presence of PCI devices."

I agree, will rewrite.


> 
> 
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Discover PCI devices from Xen
>>>> +-----------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
>>>> +
>>>> +Description:
>>>> +Xen shall discover PCI devices (enumerated by the firmware beforehand)
>>>> during
>>>> +boot if the hardware domain is not present.
>>>
>>> I am a bit wondering here why we would not want Xen to always do it if we
>>> have
>>> the code to do it in Xen anyway.
>>
>> Makes sense, will drop "if the hardware domain is not present".
> 
> +1
> 
>   
>>>
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Assign PCI device to domain (with IOMMU)
>>>> +----------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>>>> +
>>>> +Description:
>>>> +Xen shall assign a specified PCI device (always implied as DMA-capable)
>>>> to
>>>> +a domain during its creation using passthrough (partial) device tree on
>>>> Arm64
>>>> +and Hyperlaunch device tree on AMD-x86. The physical device to be
>>>> assigned is
>>>> +protected by the IOMMU.
>>>
>>> This is a very long and complex requirement.
>>> I would suggest to split it in 3:
>>> - generic: Xen shall support assign PCI devices to domains.
>>> - arm64 one: Xen shall assign PCI devices based on device tree (explain how
>>> this is configured in dts)
>>> - amd: xxxx based on hyperlaunch
>>
>> I agree, will split, but ...
>>
>>> - Xen shall use the IOMMU to enforce DMA operations done by a PCI device
>>> assigned to a domain to be restricted to the memory of the given domain.
>>
>>
>>   ... does this need to be a separate 4th requirement here (and for the similar
>> requirement for the platform device down the document) or this sentence is
>> meant to be added to all resulting generic/arm64/amd requirements?
> 
> This is not specific to PCI, though? The generic requirement is "Xen
> shall use the IOMMU to enforce DMA operations done by a DMA-capable
> device assigned to a domain to be restricted to the memory of the given
> domain".

Makes sense.


> 
> I think it is also OK to both have a PCI-specific and a
> non-PCI-specific requirement for that, I just wanted to mention that it
> doesn't look like something to PCI-specific.


ok, let's have a single requirement with generic subject, in description 
I can add the following:

The DMA-capable device can be either PCI or platform device.




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:44:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:44:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814680.1228290 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXvH-0007uQ-3x; Wed, 09 Oct 2024 14:44:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814680.1228290; Wed, 09 Oct 2024 14:44: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 1syXvH-0007uJ-19; Wed, 09 Oct 2024 14:44:19 +0000
Received: by outflank-mailman (input) for mailman id 814680;
 Wed, 09 Oct 2024 14:44: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syXvF-0007rv-Cs
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:44:17 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f3d90e8b-864c-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:44:15 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728485049394266.2361590103077;
 Wed, 9 Oct 2024 07:44:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3d90e8b-864c-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728485050; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=NNowu4Seb+tiVurjnbL5f5P9KbRRPzJAHnT50Ps35P+dUyR/A5chY/DrSxTvvE7lnlpuqk5MDjxUjJtn/RBD+lkA+IerJExjzELnyNd3VK1O1Ctxr69nMa/HICcx94f5v1OU5i4HBPGOLOF+SwRS7hAmd62plDopVeelI0bFgxc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728485050; 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=cOW0L77wR5gRSNQX9YI4k4D4bGyAi2F9uxdtSswKClA=; 
	b=JuctG/hdYKIunJHv298PHagNdjsYPjsvlO1/o9kZ30o3oo7yxL1v3j6OSDRXFJG7zSSWQxERTcyI5a7gecu+fN2odHrcpH8i9PAjeEV8te4c49/m3HTXLaXcwECYu+ypYvAnx5EKyK6XtudN7opr1B05bBf2l1+osKBArEndaY0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728485050;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=cOW0L77wR5gRSNQX9YI4k4D4bGyAi2F9uxdtSswKClA=;
	b=ZQbFJ82Hh4lzJZ1P57xNPQEI0gSDMJyJQDRACoyE/Wu13n4PGxBa4Qp7I4rp2CKa
	fpxZCCB7YYui2wq1S04VktukbjqSujw2qvvJTxhcbkJaMuiWVdUtOMpx47R0TsGA0lv
	neIIVXj8/sXysR9HEmw8ryifK9mnuaufliEw+xxM=
Message-ID: <3302bb72-8be5-42a0-9182-43cccbff5969@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:44:07 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 14/44] x86/boot: transition relocation calculations to
 struct boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-15-dpsmith@apertussolutions.com>
 <bd0e24a2-dbd5-41d7-a85f-6aa6f90c0e54@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <bd0e24a2-dbd5-41d7-a85f-6aa6f90c0e54@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 16:44, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Use struct boot_module fields, start and size, when calculating the 
>> relocation
>> address and size. It also ensures that early_mod references are kept 
>> in sync.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 36 +++++++++++++++++-------------------
>>   1 file changed, 17 insertions(+), 19 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index f968758048ed..4f540c461b26 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1490,7 +1490,7 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>               struct boot_module *bm = &bi->mods[j];
>>               unsigned long size;
>> -            size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
>> +            size = PAGE_ALIGN(bm->headroom + bm->size);
> 
> Is there a mismatch from mod_end in PFNs to bm->size in bytes?  Or is 
> mod_start in pfns and mod_end in bytes?

The conversion is the latter, mod_start is in PFN and mod_end is in bytes.

>>               if ( bi->mods[j].flags & BOOTMOD_FLAG_X86_RELOCATED )
>>                   continue;
>> @@ -1504,13 +1504,13 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>               if ( s < end &&
>>                    (bm->headroom ||
>> -                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
>> +                  paddr_to_pfn(end - size) > paddr_to_pfn(bm->start)) )
> 
> Drop the paddr_to_pfn if both sides are now in bytes?

True, both are in addresses, will drop.

>>               {
>> -                move_memory(end - size + bm->headroom,
>> -                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
>> -                            bm->mod->mod_end);
>> -                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
>> -                bm->mod->mod_end += bm->headroom;
>> +                move_memory(end - size + bm->headroom, bm->start, 
>> bm->size);
>> +                bm->start = (end - size);
>> +                bm->mod->mod_start = paddr_to_pfn(bm->start);
>> +                bm->size += bm->headroom;
>> +                bm->mod->mod_end = bm->size;
>>                   bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
>>               }
>>           }
> 
>> @@ -1700,13 +1698,13 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        set_pdx_range(bi->mods[i].mod->mod_start,
>> -                      bi->mods[i].mod->mod_start +
>> -                      PFN_UP(bi->mods[i].mod->mod_end));
>> +        set_pdx_range(paddr_to_pfn(bi->mods[i].mod->mod_start),
>> +                      paddr_to_pfn(bi->mods[i].mod->mod_start) +
> 
> Shouldn't these be
>      paddr_to_pfn(bi->mods[i].start)
> ?

Correct, will fix.

>> +                      PFN_UP(bi->mods[i].size));
>>           map_pages_to_xen(
>> -            (unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
>> -            _mfn(bi->mods[i].mod->mod_start),
>> -            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
>> +            (unsigned long)maddr_to_virt(bi->mods[i].start),
>> +            maddr_to_mfn(bi->mods[i].start),
>> +            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);
> 
> First argument should fit on same line as map_pages_to_xen().

If it fits, yes I will move it up.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:45:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:45:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814687.1228301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syXwU-0008Sw-EP; Wed, 09 Oct 2024 14:45:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814687.1228301; Wed, 09 Oct 2024 14:45: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 1syXwU-0008Sp-B0; Wed, 09 Oct 2024 14:45:34 +0000
Received: by outflank-mailman (input) for mailman id 814687;
 Wed, 09 Oct 2024 14:45: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syXwT-0008JM-5p
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:45:33 +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 228d141b-864d-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 16:45:32 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a99543ab209so456849366b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:45:32 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994e6e571asm480800066b.85.2024.10.09.07.45.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:45:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 228d141b-864d-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728485132; x=1729089932; 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=xqpMyuyP184XSgPcyfxcbT2ZyTA5mjQDSZGaLnuJDpI=;
        b=H8HN3wFbMxylUVvZR9SOzRKp0p61TyeA7h200i34xrkNhogieZz9IW4nz2/mq64lu8
         b03/OzvJrQgx3w7RS2igHM7Hrf0SVAixjdHnQh8a+SKRBXR/LqGcDjrDMVLjEgLagXw4
         ujKgpMAl9RaPb/2LuDwDzA3pbN/7kd8GpMW3MtmeSyGBds5IJpnA+UvjX2JE2J2Qz4AL
         yg/y9YzWvleWfHs44mtvjTdzpytWBDV/PDXjqpjt2/tQ+dVHWZYK+DRGqcBuhv/yvuxy
         xrL0H7CmGa5AM5C+jfbaMNMuzULgbfD5d9uK995Tqotns07e1jCPVv08GHAuKzI67wYA
         G9jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728485132; x=1729089932;
        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=xqpMyuyP184XSgPcyfxcbT2ZyTA5mjQDSZGaLnuJDpI=;
        b=saU4YYOGDgwCrezEowdHtFMgveqe5jjBlP8Ff7y5YBT6jAp6HZ5tIT1AeuVMeHY1xh
         AzmyALuQ+jxHt0KV2EIvpA2H+nh6HPy2viqpURwhZWS2V4uy/NzMexsEU4biG0m5WCFm
         sV5ipPt1A60RiLtDDrGwZ+oeBwNFIMLm9ZxoF7GAdt7kiS/JzPa9GxZMZg80oTC7qGBA
         ekAPUXK25yzZtqQUdfbSZqA1MnfwFVxAdwAkDnHiQLmUHaQP2s0Rm5KU+EHulsYR04e+
         sytFXIyOrlBzsRRgJruyNRPj6OeMHe6difxqTkaXCabjsTgKF8ogZ4WlO5fgbMDD04ce
         fFWw==
X-Forwarded-Encrypted: i=1; AJvYcCXtGj0ID4NzXEzNhBOFmKGyxrBdo5Gq2ogUIDc5AfW6s/U9olwWIRZYTG0J7aGm9Q1iH5aSaEVGuyw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzsK2Is/lotJR/d/m7ptwAmP4RqqJ5qk/1SDf2tK5l1QL1LCLYb
	JUfnj9Xc8dNy9ibZ1RsazDwyPxUsMevaxLnigsj03CnhS6kga6bu34/vt5cJpg==
X-Google-Smtp-Source: AGHT+IEdsFphsLknG+PyQRCf12sGMTey/aYqsBnnlyQTHpP4YiIOe7xDcT7fAjULxnTNp2SEIBKE8g==
X-Received: by 2002:a17:907:2ce1:b0:a99:3eb1:a37f with SMTP id a640c23a62f3a-a998d3287aamr215362566b.58.1728485131597;
        Wed, 09 Oct 2024 07:45:31 -0700 (PDT)
Message-ID: <7595b3ab-0891-42f7-81b0-5666651046b9@suse.com>
Date: Wed, 9 Oct 2024 16:45:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 08/11] xen/lib: Add topology generator for x86
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-9-alejandro.vallejo@cloud.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: <20241001123807.605-9-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:38, Alejandro Vallejo wrote:
> --- a/xen/include/xen/lib/x86/cpu-policy.h
> +++ b/xen/include/xen/lib/x86/cpu-policy.h
> @@ -542,6 +542,22 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
>                                      const struct cpu_policy *guest,
>                                      struct cpu_policy_errors *err);
>  
> +/**
> + * 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.

Isn't it more like s/uses/fills/ (and the rest of the sentence then
possibly adjust some to match)? The policy looks to be purely an output
here (except for the vendor field).

> --- a/xen/lib/x86/policy.c
> +++ b/xen/lib/x86/policy.c
> @@ -2,6 +2,94 @@
>  
>  #include <xen/lib/x86/cpu-policy.h>
>  
> +static unsigned int order(unsigned int n)
> +{
> +    ASSERT(n); /* clz(0) is UB */
> +
> +    return 8 * sizeof(n) - __builtin_clz(n);
> +}
> +
> +int x86_topo_from_parts(struct cpu_policy *p,
> +                        unsigned int threads_per_core,
> +                        unsigned int cores_per_pkg)
> +{
> +    unsigned int threads_per_pkg = threads_per_core * cores_per_pkg;

What about the (admittedly absurd) case of this overflowing?

> +    unsigned int apic_id_size;
> +
> +    if ( !p || !threads_per_core || !cores_per_pkg )
> +        return -EINVAL;
> +
> +    p->basic.max_leaf = MAX(0xb, p->basic.max_leaf);

Better use the type-safe max() (and min() further down)?

> +    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 = MIN(0xff, 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;

I wasn't able to find documentation for this, well, anomaly. Can you please
point me at where this is spelled out?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:49:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:49:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814697.1228311 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syY04-0001xu-WC; Wed, 09 Oct 2024 14:49:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814697.1228311; Wed, 09 Oct 2024 14:49: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 1syY04-0001xn-TO; Wed, 09 Oct 2024 14:49:16 +0000
Received: by outflank-mailman (input) for mailman id 814697;
 Wed, 09 Oct 2024 14:49: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syY03-0001ub-NS
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:49:15 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a5726482-864d-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:49:13 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728485347418799.4436189132952;
 Wed, 9 Oct 2024 07:49:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5726482-864d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728485349; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=cNJvCE8EeIt0p3Cwtkge+x0d8vB2hdkK8pO3fw77/G3+sdz0GOFgKtfgdoyoFRMCvo0AKUdlOTF76kHpOK2f2dtiKaww1ZW44cIgUAIiZM5CaR+aoVFpB8w4PMx5ETIn4pJY3/XxdSj5eYo0q5GpkXkyVAnPmeesGTNtL72VZp0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728485349; 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=eK/CVI05StTRgMCnN1bJK3AYiAS12UdTTb3fy9eAhB4=; 
	b=lua54dyNHVMWa7mCAcNmWFmqsxY2o14JPo9HJwjL0kjyB+db4VPpUjvG9oWSBaFxXlYRVW2wIV5aL/nqYnQg9C7hARIGmRPHtpqQR3eOJhuiyaVojRd9S5O6WO8+nXzS9qaU92nD7T6vn99+59KO+FuAHkigyRlS1boe2YGDRHk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728485349;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=eK/CVI05StTRgMCnN1bJK3AYiAS12UdTTb3fy9eAhB4=;
	b=knU6PuBYS0dyY1EzhSYrRIm+NLfPfirILFm6r4wdScghwt1ATnwmDw9QaBhjpjUy
	W3qC3oyHa3p41J83JECW06+8cCS4n5n9YGRqFvO3/STVOR0odo5SmzJEuSgVs8ddoXx
	f9AvDcDEjWz/Y9ITrgahI8b5sigOxTRpmMmQVB6U=
Message-ID: <33cd3e86-cb4f-4bd5-a39a-12f374c242b2@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:49:05 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 16/44] x86/boot: introduce consumed flag for struct
 boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-17-dpsmith@apertussolutions.com>
 <2b939d07-23ed-4945-83a4-d615c32bf69c@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <2b939d07-23ed-4945-83a4-d615c32bf69c@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 17:06, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Allow the tracking of when a boot module has been consumed by a 
>> handler in the
>> hypervisor independent of when it is claimed. The instances where the
>> hypervisor does nothing beyond claiming, the dom0 kernel, dom0 
>> ramdisk, and a
>> placeholder for itself, are updated as being consumed at the time of 
>> being
>> claimed.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootinfo.h | 1 +
>>   xen/arch/x86/setup.c                | 3 +++
>>   2 files changed, 4 insertions(+)
>>
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h 
>> b/xen/arch/x86/include/asm/bootinfo.h
>> index c79678840d31..7833b065eff1 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -34,6 +34,7 @@ struct boot_module {
>>       uint32_t flags;
>>   #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
>> +#define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
>>       paddr_t start;
>>       size_t size;
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 4f540c461b26..235b4e41f653 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -318,6 +318,7 @@ static struct boot_info __init 
>> *multiboot_fill_boot_info(unsigned long mbi_p)
>>       /* map the last mb module for xen entry */
>>       bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
>> +    bi->mods[bi->nr_modules].flags |= BOOTMOD_FLAG_X86_CONSUMED;
>>       bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];
>>       return bi;
>> @@ -1196,6 +1197,7 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       bitmap_fill(module_map, bi->nr_modules);
>>       __clear_bit(0, module_map); /* Dom0 kernel is always first */
>>       bi->mods[0].type = BOOTMOD_KERNEL;
>> +    bi->mods[0].flags |= BOOTMOD_FLAG_X86_CONSUMED;
> 
> I think these first two can be straight assignments since they occur 
> before relocation.

True, will change to straight assignment.

>>       if ( pvh_boot )
>>       {
>> @@ -2085,6 +2087,7 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       initrdidx = find_first_bit(module_map, bi->nr_modules);
>>       bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
>> +    bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
>>       if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
>>           printk(XENLOG_WARNING
>>                  "Multiple initrd candidates, picking module #%u\n",
> 
> This one is after relocation, so |= is necessary.

I am going to assume that is just a reminder since it is already '|='.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:50:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:50:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814703.1228321 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syY17-0003jk-9U; Wed, 09 Oct 2024 14:50:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814703.1228321; Wed, 09 Oct 2024 14:50: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 1syY17-0003jd-6Y; Wed, 09 Oct 2024 14:50:21 +0000
Received: by outflank-mailman (input) for mailman id 814703;
 Wed, 09 Oct 2024 14:50: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 1syY16-0003jT-8d; Wed, 09 Oct 2024 14:50: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 1syY16-0003EE-5N; Wed, 09 Oct 2024 14:50: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 1syY15-0000ng-Nf; Wed, 09 Oct 2024 14:50:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syY15-0007Wo-N8; Wed, 09 Oct 2024 14: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
Precedence: 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=fqRvu66VGPTVypClrjE5UaN/+hxj9SjdVpJ4UDiiMCM=; b=4ipnPbpfuk6K4Vb35z3dgO9v9E
	SnP3yUKk41Ouojkm3qMYv27AtPfK1nrdWoSz+wB18tR+PJDvkUUKIwl8Rvm4palie/Mqe1O7nI1RF
	MxmIywwZGmM9HxlbilA052JMzT7dCtQvHOBUHMnlG9LO1cjqxziBWAvbRg3+y5FBDkyA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188018-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188018: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-arm64-arm64-xl-credit1:debian-fixup:fail:heisenbug
    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-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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: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:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
X-Osstest-Versions-That:
    xen=29555668b5725b9d5393b72bfe7ff9a3fa606714
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 14:50:19 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-xl-credit1  13 debian-fixup        fail pass in 188032-retest

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-xl-credit1 15 migrate-support-check fail in 188032 never pass
 test-arm64-arm64-xl-credit1 16 saverestore-support-check fail in 188032 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188009
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188009
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188009
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188009
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188009
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188009
 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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl          16 saverestore-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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
baseline version:
 xen                  29555668b5725b9d5393b72bfe7ff9a3fa606714

Last test of basis   188009  2024-10-08 04:56:11 Z    1 days
Testing same since   188018  2024-10-08 21:39:41 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ayan Kumar Halder <ayan.kumar.halder@amd.com>
  Federico Serafini <federico.serafini@bugseng.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Olaf Hering <olaf@aepfle.de>
  Roger Pau Monné <roger.pau@citrix.com>
  Stefano Stabellini <sstabellini@kernel.org>

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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                  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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   29555668b5..c95cd5f9c5  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd -> master


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:53:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:53:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814717.1228331 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syY4A-0005BW-N7; Wed, 09 Oct 2024 14:53:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814717.1228331; Wed, 09 Oct 2024 14: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 1syY4A-0005BP-KK; Wed, 09 Oct 2024 14:53:30 +0000
Received: by outflank-mailman (input) for mailman id 814717;
 Wed, 09 Oct 2024 14:53: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syY49-00058O-RM
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:53:29 +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 3dcd7571-864e-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:53:27 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c91a7141b8so1507189a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:53:27 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994205dc60sm575767566b.87.2024.10.09.07.53.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:53:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3dcd7571-864e-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728485607; x=1729090407; 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=9P1cDNBQclLOGOZUk43Glw+KrzAlUg5+fRnWA9w6CVw=;
        b=WJD9TW1juab3zgSaMEtmpvJBT3iBxP0zL1dLSbka6bsM7SaJmjQzV2LvM4JlcYBSNj
         uEeqtVF0TNfiztAH9nB7G0n9x/qqXEhB3stF2BUSAtH4MzHEqJa3tcecu2ZbfHwoFOK/
         rKHMnRp4a1FeokmgyXxPoFNZVUctZwvls+YGB4LobWcQ9+bp1tCUEHxiv9UL5TlUEeS0
         a9nvMvl2dgym3jaVRwwRTkFUYyfFF21XljkfgDF2WYdM337GO3YFwkZEwjMOyPBvS0FF
         s3EIIkBZUgQenrdtSt22ilh7lqZZmyhkqrudO98BEYUwIyONCgt1CW6pcnmfkyClGig6
         PE5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728485607; x=1729090407;
        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=9P1cDNBQclLOGOZUk43Glw+KrzAlUg5+fRnWA9w6CVw=;
        b=iChXNCP++MvJ5KOHIJ/+6mFZlc6VyQnZi4ZNDA/n1NET0C4xf8K+2+LB7nRqSo469O
         uJapeRgTpZBJFxGne0IS78aazqypFiZgiO3wwcaSsMyPW2tbmVbGB6Mf2QO4BxfM6+/6
         DNLEMNLlPMsz5Z1EvyGYeFeBY+Ll/rzkppbHuWZBwaJsd/kdPMakb4YSlRQGJpwecsp0
         zzuyuM+azFXRAgzo7zyuXVjyF5oHWZqIMbSGHVXRbrbQDVABzejAeG1xuvgFUCs4n+vy
         2uznFQr2NyO1ueVhhQ53VFC4Y6HZL0K89TrEZmbkmdRxi22wTFI1tHLR23wQK+TOD2xM
         n42A==
X-Forwarded-Encrypted: i=1; AJvYcCVIESsV+vKM8CB5OEhHVo4bqRQ4uHWJE2OZwMEbA3glOEtKSnSXP7U7+1x7gjQ7mpsbWA5hxZt9swU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwVC+4LntqdHIEZ7+VAv2EWLgDcnYfryeNhT2YqMFew3goaK1GE
	5jPKiVznMF3Sp2WvvROX0dJkJ+3ydmwQ+bYF7K01XXInlGFt84SHnVBgUiN04g==
X-Google-Smtp-Source: AGHT+IEtiNwi8Z+QHFvE3tGWU2rQCuElh2e19o9OwH2pAJmsl3fu4sTN8xxRFykwxW6z0bZL+vWPiw==
X-Received: by 2002:a17:907:c899:b0:a99:56e1:bd30 with SMTP id a640c23a62f3a-a998d313b3amr249260466b.42.1728485606892;
        Wed, 09 Oct 2024 07:53:26 -0700 (PDT)
Message-ID: <56fc2b5e-54c6-46df-a044-de6efcc427d4@suse.com>
Date: Wed, 9 Oct 2024 16:53:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 09/11] xen/x86: Derive topologically correct x2APIC IDs
 from the policy
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-10-alejandro.vallejo@cloud.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: <20241001123807.605-10-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 01.10.2024 14:38, Alejandro Vallejo wrote:
> 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 extended 0x26 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.

Is the first sentence of this latter paragraph missing an "If" or "When"
at the beginning? As written I'm afraid I can't really make sense of it.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:57:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:57:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814738.1228393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syY8Q-0007KG-RH; Wed, 09 Oct 2024 14:57:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814738.1228393; Wed, 09 Oct 2024 14:57: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 1syY8Q-0007K9-Ob; Wed, 09 Oct 2024 14:57:54 +0000
Received: by outflank-mailman (input) for mailman id 814738;
 Wed, 09 Oct 2024 14:57: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syY8P-0007K3-4u
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:57:53 +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 db0af296-864e-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:57:51 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b3e1so9598393a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 07:57:51 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994046f466sm584852866b.61.2024.10.09.07.57.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 07:57:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db0af296-864e-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728485871; x=1729090671; 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=NYKbJhG4biobtXvX0h2pUc2QvsxroHNriVtoW4Id+qs=;
        b=TB8RaUG2uqRZ+vdkWScrjs06qhV+jJnCYHJBI++SgbCOEcDNsnxTFESoCHukYN9BYA
         zUUzlV4GP9cp/6G+b+CeemNq7hlUFpeQvl1PfngYJE62Q3J5zl/4JScsRDSDIzLrjLPK
         GhnicHCLk0LzXkhlvIi5RLRq4m5IcwN9wUi1cyHsdQqr+kWBF/DI5HC95Gj7VOplm+PH
         h0EHZBnCHzw0fI2RhRlYDYrmZgFQjeBGu/Cf3axBwHSTOXxh1NKC41BCeIx1RKCS9BV0
         G2YVSplKqamoO7/9NR6luuxIeUSmaP1+wqQkbnF4SLCNo3ReBPgAoKM1Rf0+9lFZkSDt
         P05g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728485871; x=1729090671;
        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=NYKbJhG4biobtXvX0h2pUc2QvsxroHNriVtoW4Id+qs=;
        b=E0jlBIY+9vVw+xjsCubZjdagj7ZCUO3Qy+45mLN6eMh2knbiU51o2lLA7DPnBpLucO
         ZMk9hwBIbPy5Edtbzzep/WndbaUfLZhwVT0COMn4OAEyf560B8WxGRzclVJACtxqCezw
         hTmQCfpfXiITq5Ut708I++T2tcp/5jja6OLScRea6OR3/BEXrMRFz5OQxG2bENhRR/hx
         1WnzzdTBsov86IJpI94mcEDVt07JA2o8wOiccVgG0gj3GXMsFpesLyCmtBtdeZP/ItbO
         xokAVbfA5QReySVaqE/VYsL8XhiXiWMf4aJ6ZUvGWjRC/YLtMOLUgk06jy8evZzQWUUw
         X7+w==
X-Forwarded-Encrypted: i=1; AJvYcCWkAmRzlXEDp349rhG4SkXWVBKZ5DKFLGn05pgDLtQeUme+W0QC5NAUprEBJpOOMVw7GV1U0C6dWLk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxLA41QYRTOsDqO40hhPBJk4kEwSI3pDh5FlinG16jmL/+S/lyU
	5SKM1/Krs2YHuSWUAuQfcMLgMLRxlh1+mH4lAlwfCCj8fC6jTKGfMmCRsleiag==
X-Google-Smtp-Source: AGHT+IFL4wKSRnfmerRMhjMukTrdVerJLX+i6FpYOX+46Cfs3bYxEz84m70X1CCvJ6HEwg4Jyg9Tfg==
X-Received: by 2002:a17:907:d5aa:b0:a77:b01b:f949 with SMTP id a640c23a62f3a-a998d20883amr270485366b.35.1728485870774;
        Wed, 09 Oct 2024 07:57:50 -0700 (PDT)
Message-ID: <9f5e9819-af2b-4de7-91f0-d0b7d35f57ba@suse.com>
Date: Wed, 9 Oct 2024 16:57:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/3] xen/riscv: implement virt_to_maddr()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1728472163.git.oleksii.kurochko@gmail.com>
 <9f7d9ebde6fc7224490d1fd565676e051c57a80d.1728472163.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: <9f7d9ebde6fc7224490d1fd565676e051c57a80d.1728472163.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 15:45, Oleksii Kurochko wrote:
> Implement the virt_to_maddr() function to convert virtual addresses
> to machine addresses. The function includes checks for valid address
> ranges, specifically the direct mapping region (DIRECTMAP_VIRT_START)
> and the Xen's Linkage (XEN_VIRT_START) region. If the virtual address
> falls outside of these regions, an assertion will trigger.
> To implement this, the phys_offset variable is made accessible
> outside of riscv/mm.c.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:58:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:58:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814739.1228403 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syY8W-0007bc-3K; Wed, 09 Oct 2024 14:58:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814739.1228403; Wed, 09 Oct 2024 14:58: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 1syY8V-0007bT-Vq; Wed, 09 Oct 2024 14:57:59 +0000
Received: by outflank-mailman (input) for mailman id 814739;
 Wed, 09 Oct 2024 14:57: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syY8V-0007K3-B4
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:57:59 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dd8405d2-864e-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:57:57 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728485870474641.1074185064982;
 Wed, 9 Oct 2024 07:57:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dd8405d2-864e-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728485871; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=eF86tbeE50LvyDGjsfAo2cxZWHb2OCh6vQfmWnncqsfnvHppkGb/GkKC+BHxOx9yboehNtfdZGptOcgS8kgJv1zNViNm2uGr5SecgMyt9y28KHFMD6zLd+Yc4x5duK1rVpqlNTmUYqxdIYaYTydbGD1Nz0VhoOC15r9/6G0wXfw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728485871; 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=yd5LR/WM4MKlk292ehbFESZEYtQGV2oyGSCyoeT4no8=; 
	b=nJ+RgB0NfgmEEeTrMTi521mubYBGaBotaStYFk0BfmccoVW2wrel2l+k7L7tmLQQjb2R+wq9kufG3GgTnNUU+QDD7eHQ/6IaIqnEBmtxgL0m7JHKDhu4gSFRZ7RX968+nr2cifQ1YOtxBVjurpgTggyob1khvCRkpDWH4+aOQtg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728485871;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=yd5LR/WM4MKlk292ehbFESZEYtQGV2oyGSCyoeT4no8=;
	b=vYl6zk3p1i5OdmAqNhqHfzOqeFOUhCDGLgM5nkfRLU4cWJnJmQzAQ7EtrohRrxkY
	2zEHv/d4YQakBpGrKyefLlIkX7wfpi0I65hriDDOl5LSwTmZ26ZyZPgRCYzs7QSei5c
	EyMglUYHJKOGMJFDNY/QYIEjNpVsgIqbt7+qV3/8=
Message-ID: <91c5898b-7a8d-4f3d-b230-cbc2c9e0306c@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:57:48 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 17/44] x86/boot: convert microcode loading to consume
 struct boot_info
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-18-dpsmith@apertussolutions.com>
 <d0d8e53d-d2a2-4441-86cd-6f50aaa36075@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <d0d8e53d-d2a2-4441-86cd-6f50aaa36075@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/7/24 17:22, Jason Andryuk wrote:
>> @@ -822,8 +819,8 @@ static int __init early_update_cache(const void 
>> *data, size_t len)
>>       return rc;
>>   }
>> -int __init microcode_init_cache(unsigned long *module_map,
>> -                                const struct multiboot_info *mbi)
>> +int __init microcode_init_cache(
>> +    unsigned long *module_map, const struct boot_info *bi)
> 
> Why the indent style change?  I prefer the original indent and it 
> doesn't seem like the line length matters.  And it looks like you 
> restore the indent later.

This is one I missed unrolling earlier version. Originally was applying 
the style requested but then realized it was unnecessary churn as by the
end of the series the only param would be *bi and was waiting until the 
last change to move to requested format.



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 14:58:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 14:58:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814748.1228412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syY98-0008U3-B3; Wed, 09 Oct 2024 14:58:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814748.1228412; Wed, 09 Oct 2024 14:58: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 1syY98-0008Tw-83; Wed, 09 Oct 2024 14:58:38 +0000
Received: by outflank-mailman (input) for mailman id 814748;
 Wed, 09 Oct 2024 14:58: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syY97-0007K3-1n
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 14:58:37 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f43c9d7f-864e-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 16:58:35 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728485908167145.5415097795318;
 Wed, 9 Oct 2024 07:58:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f43c9d7f-864e-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728485909; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=HiF6yrRJJh33CGIKM4KAZwRyNpbwTb7WtsuqsXQ/G7fAshWQlsimHV/c7h6foQxvxikkrmBjxHrQs3qjSGRFLT8Is3DM120LR+xF41lnYNhtNJuUoJ5hcKm3qgfTgJB5bvmRpoGrZsMJdpuuowJWqsZs7gAiCHdPJUaOcX8Zy6w=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728485909; 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=2FCMbJwEqBB7OrCa98yYjw9xQ65QkCdMbgQil75MjuY=; 
	b=gVy1Ol/zinUPaFOZrszXkZi2lIX2BsDtg8m5jFqzndd51avwgF3stbYJdkrRtscxUOZYjr8/a3+VWI3mmFQv5BfQtgOqKbjf9KnGpdDbf26f9qd8uQmJ0TLgZoV2jb4PtpR++eAv1hLl5L1Ovqj/QM2XNNPx6PXvnnna9R13fG8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728485909;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=2FCMbJwEqBB7OrCa98yYjw9xQ65QkCdMbgQil75MjuY=;
	b=vGuOJLeXaQTYh4Su5cIqoYh7zykuOyHN232osecjNQFA/XuH56vRZ5+QyF4966hw
	Tz8psRw0D6OQg0tdu+dwDHsBbf3nIDK2X1mTzSs79XVgT0kURJo/Z4jecYy9QEoboSb
	+S0PrlNvUn90sS2Fz48TmwhBRptNxIzIYWnPDwxg=
Message-ID: <5b5d8d50-ff41-44a3-8772-fe48cd7e5c80@apertussolutions.com>
Date: Wed, 9 Oct 2024 10:58:26 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 17/44] x86/boot: convert microcode loading to consume
 struct boot_info
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-18-dpsmith@apertussolutions.com>
 <d0d8e53d-d2a2-4441-86cd-6f50aaa36075@amd.com>
 <62d1b295-6c79-48d3-a340-1544ca8ed534@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <62d1b295-6c79-48d3-a340-1544ca8ed534@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 08:50, Jason Andryuk wrote:
> On 2024-10-07 17:22, Jason Andryuk wrote:
>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>> @@ -205,20 +204,18 @@ static void __init microcode_scan_module(
>>>   }
>>>   static void __init microcode_grab_module(
>>> -    unsigned long *module_map,
>>> -    const multiboot_info_t *mbi)
>>> +    unsigned long *module_map, struct boot_info *bi)
>>>   {
>>> -    module_t *mod = (module_t *)__va(mbi->mods_addr);
>>> -
>>>       if ( ucode_mod_idx < 0 )
>>> -        ucode_mod_idx += mbi->mods_count;
>>> -    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
>>> +        ucode_mod_idx += bi->nr_modules;
>>> +    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
>>>            !__test_and_clear_bit(ucode_mod_idx, module_map) )
>>>           goto scan;
>>> -    ucode_mod = mod[ucode_mod_idx];
>>> +    bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
>>> +    ucode_mod = *bi->mods[ucode_mod_idx].mod;
>>
>> Why the dereference: *bi->mods[ucode_mod_idx].mod; ?  I don't think it 
>> should be there.
> 
> Oh, the next patch shows ucode_mod is not a pointer, so dereferencing is 
> correct.   Sorry for the noise.

No worries.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:02:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:02:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814758.1228423 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYD9-0002DF-QW; Wed, 09 Oct 2024 15:02:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814758.1228423; Wed, 09 Oct 2024 15:02: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 1syYD9-0002D8-Ni; Wed, 09 Oct 2024 15:02:47 +0000
Received: by outflank-mailman (input) for mailman id 814758;
 Wed, 09 Oct 2024 15:02: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYD8-0002D2-IH
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:02:46 +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 89eecbbb-864f-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:02:44 +0200 (CEST)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-53993564cb1so7801081e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:02:44 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99413ff5f0sm583710066b.205.2024.10.09.08.02.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:02:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89eecbbb-864f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728486164; x=1729090964; 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=xsP5QGpMw8tD9+eHmW8SuKb+r1Ej44ts391CRqX+VQc=;
        b=QYjOD3yiIoPxC7n04XD/gfh10qLunmDxbC8ZbOY287YmrfDaf1U1VywYIzJqrviC0N
         ++kC87NgTOgWOPCZslF9WzJzzGJ2qQKmSNfrMXRNbqphrw550bw4utAJ9G5rSJKXBHcj
         fKKq3RGolTjpFXj1+U4ED8rYwEZuQbBJIFgyLdHQ2PGQ1oBOSn6bfxm7H3GitSp4VVHF
         TwlDr4VL0oa9o38bA+xUZHKhTOMFBVin/3e2gvSEfmB9yDB5wVesToCdAj+///aCSfx7
         fbySUrkVZIPcNSRnkj9iTYzeXFo7fbPKz85b+bED+3AlvgYqgjnID3vTPAHfXd1MNnvQ
         GX1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728486164; x=1729090964;
        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=xsP5QGpMw8tD9+eHmW8SuKb+r1Ej44ts391CRqX+VQc=;
        b=lDp3GSUo+nd4zRQIUrMwJpriQ7Eb+3CKIgPpkqjRo1RKbmedWcbzrTouw0Z4quX2jG
         swpmwMRjYcwSK7cwXcVyWEzjlDnWe66ikeLOXXdhdQuzWqeUFI4z/gg2T6YKm/Z5jxto
         n0crLW/tOB+f+8cMskq5bOItf2P+JoSoPHwosyUnCOj9YmBEAslL+PtAcVpv1i4xnWAv
         RlL2yPY8AxEEX+dudNlSvYuReeUrY9n/PJBJGDaOa9wpaKPZ/WSVxLbXMDnv9s/Y/mb5
         S9ZqFtGknVAbXekSwrt/9OQDbwnI2NZX3UNTniCT38DLFKYpH26W5XzQEDAIC/ihh/21
         kGFg==
X-Forwarded-Encrypted: i=1; AJvYcCUOKMNffInqKXUyc3/qXLgSQwnUKdz3s31lV/IvOoyawtM3iRxIowtLt1GvZA/+nl/RFiS+draL8V0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxtCkNnB0fQhjB+toc+t7oNmNYv7Xwp/MTGIRq6zOeWs4enc5ln
	+rxdH1sVY2unI9FjFAyfKOmmHskqsbU5CP3TPQe4qBOWR8Km3cd9Kglg00u25A==
X-Google-Smtp-Source: AGHT+IGoroh0t/IXyG2YtKhxeV1IqY9moarDXoM07THKj5vdS5lII13w97lb25paboFkvzs4Z9YmxA==
X-Received: by 2002:a05:6512:10ce:b0:536:561c:a0cb with SMTP id 2adb3069b0e04-539c48c39c7mr1968506e87.18.1728486164075;
        Wed, 09 Oct 2024 08:02:44 -0700 (PDT)
Message-ID: <aa2b9332-54ed-4447-b8f6-037fce401375@suse.com>
Date: Wed, 9 Oct 2024 17:02:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/44] x86/boot: move x86 boot module counting into a
 new boot_info struct
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: Christopher Clark <christopher.w.clark@gmail.com>,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org, Jason Andryuk <jason.andryuk@amd.com>
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-2-dpsmith@apertussolutions.com>
 <1e3d6e99-37df-4824-8702-3e8ae7a4923f@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: <1e3d6e99-37df-4824-8702-3e8ae7a4923f@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 19:57, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> --- /dev/null
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -0,0 +1,29 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +/*
>> + * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
>> + * Copyright (c) 2024 Apertus Solutions, LLC
>> + * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
>> + */
>> +
>> +#ifndef __XEN_X86_BOOTINFO_H__
>> +#define __XEN_X86_BOOTINFO_H__
> 
> I haven't been following closely, but I think if we follow Frediano's 
> naming scheme, it would be:
> ASM__X86__BOOTINFO_H
> 
> With that (or whatever it should be),
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

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

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:08:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:08:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814764.1228432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYID-0003bK-Cb; Wed, 09 Oct 2024 15:08:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814764.1228432; Wed, 09 Oct 2024 15:08: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 1syYID-0003bD-9h; Wed, 09 Oct 2024 15:08:01 +0000
Received: by outflank-mailman (input) for mailman id 814764;
 Wed, 09 Oct 2024 15: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYIB-0003b7-TN
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:07:59 +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 4533d465-8650-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 17:07:59 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2fadc95ccfcso78123641fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:07:58 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c92a32bb5dsm498217a12.28.2024.10.09.08.07.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:07:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4533d465-8650-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728486478; x=1729091278; 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=uQkoQK4F3b3nmkXoMoo3H36UcEr1eB+7dfYstLib3zI=;
        b=QY+EbD9Hs5n/3dQFGLqpkRinFQEXr4ZEgPR7FxjJKAMYRcoAB+ElKy14UHv7mEDqOS
         Nb4FcxASRGnCkPcdKzdc2LJ8FNohGYD98OhOJPJ81XhB1nPdrQkFrnka/8kHH5p0PUJM
         7uk6nXgzmwnS8wA4cNDIXmfPBxt5/bgNjuzOqM6VRwPZHUSWeuZUglm2FLsSdOk/MXIZ
         J2GqG6uvBLgl9XuqTK93lKR/9PKC6s11Zxm/hAu7r1jmVokWqr54gOYgNOSJgF4+ffxc
         HQtTXzoQAogTtleclI0T0Scv8rAfvgSghZtUD6GiiIp+0WmfvLoeUuzaFMMxzSiYl2C8
         5dBg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728486478; x=1729091278;
        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=uQkoQK4F3b3nmkXoMoo3H36UcEr1eB+7dfYstLib3zI=;
        b=qm7Fb1ZlYCNJgLNqk6oujfTER3bS4CeAo+jgn5OoWUPYT6DfAwRFpNLQX4MaRWsPQd
         msw+ZGwraa9p2IMUvdtCSAulcjEIpkkmKXA51POx/ZWxX+1hvNpqcUF4nJtHR6f8Z9hk
         fQR2Ik1r99cc4RMg0/KQupgBtWI44J4/xVmm178Dk5WQD8+5unatdPxNK5FynT6Y7hJe
         UFadWblsaYnk6PvFmrI/8EMKM/YYTI+Fv3q7v+oHxJ0ZlnTWccbwLQfeplHc2obbXP7j
         Z33jdt/flSvH2eP3eLD9NJh3x2pu1rWh/DCaH1NFxDKNB8oN7hiCCufcsytSYhjrbJRl
         wfCQ==
X-Forwarded-Encrypted: i=1; AJvYcCWbGUvUQqrmt1W2iTcQMZiwqBtkiHxk9aFJBPYWFt4nCojpsdat2nAWyhCIZMhmRjG/OlS7GjTaVKk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz6KRgeYAeY9OKDZxT9SuZ4HZ6NNxN7edVVhG4L8CdT3JB3DZ9b
	TzymogX7LpSH0c84Vk2IV3JQLtcJvL8kFouwImELiYaR0b8xY1ED93+TXLO2sg==
X-Google-Smtp-Source: AGHT+IGcbTGC3n7DyAFIETr3ZeA+1JgR4bdYEGCCADWy3WuCgWuLC6chmb2xcdrisBf3dPp0x0aYUA==
X-Received: by 2002:a05:651c:b0f:b0:2fa:d58d:dcf3 with SMTP id 38308e7fff4ca-2fb187cd62fmr20865261fa.33.1728486478222;
        Wed, 09 Oct 2024 08:07:58 -0700 (PDT)
Message-ID: <edaf2302-ae68-4c05-b8cf-1613ae9d4e7b@suse.com>
Date: Wed, 9 Oct 2024 17:07:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/44] x86/boot: move boot loader name to boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-3-dpsmith@apertussolutions.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: <20241006214956.24339-3-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -285,6 +285,9 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>  
>      bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
>  
> +    bi->loader = (mbi->flags & MBI_LOADERNAME) ?
> +                            __va(mbi->boot_loader_name) : "unknown";

Either (noting that generally we exempt ?: from the operator-on-earlier-line
rule)

    bi->loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
                                               : "unknown";

or 

    bi->loader = (mbi->flags & MBI_LOADERNAME)
                 ? __va(mbi->boot_loader_name) : "unknown";

or

    bi->loader = (mbi->flags & MBI_LOADERNAME)
        ? __va(mbi->boot_loader_name) : "unknown";

(in the order of my personal preference).

Jan



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:13:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:13:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814776.1228443 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYNN-0007C1-6J; Wed, 09 Oct 2024 15:13:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814776.1228443; Wed, 09 Oct 2024 15:13: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 1syYNN-0007Bu-3J; Wed, 09 Oct 2024 15:13:21 +0000
Received: by outflank-mailman (input) for mailman id 814776;
 Wed, 09 Oct 2024 15:13: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYNM-0007AR-As
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:13:20 +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 043bd66b-8651-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 17:13:19 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c928611371so851272a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:13:19 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c91cbcef7asm1046944a12.21.2024.10.09.08.13.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:13:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 043bd66b-8651-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728486799; x=1729091599; 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=WDxBdv25sYK7I5dsHcdBDYf5Brn0i7juSVfocGrSMhc=;
        b=MW1RgY5pun8JoPyxnvbVUFxquNZX43LhsjLNWGWX+1QzfdiUuEmAK/LFVoQmxWwsYZ
         CSQZXLjNYbHWPxJzNovHnl85eHMXQby8p8EIDP6FuplR+a+UkNysVgajKT+Zxw5ZObp1
         XSBBrzhBOqK/SeBNwmnSVXW4fxao09Srm31eBuCTi+sJkaIeHH+gatesgtI9zC2yt58R
         nX5ey25vy3j7D/DE91wleivK6t8grlEh447br507urAxDCfKoTqCHlO1d75w2zsEeAI5
         w5pH2vfwewVRPo0QsaII3L1wtIr2fLJY6t85Ra6/pc5keAiralyKqNa4NCkDvfqc9/56
         yjBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728486799; x=1729091599;
        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=WDxBdv25sYK7I5dsHcdBDYf5Brn0i7juSVfocGrSMhc=;
        b=d4O5xyziVSWdG5c0awvd0t/p4A4Ugmqhyumy8j9mUT37EXorOLL+GW/RAisCYn2w3g
         LcwKtL1ztz3Um/UbisWxfQycPiyL1Xg8rWVmM2oprMK0kBTHxaMa0SQ5fUGHptzo3Zx1
         S4DL7KiOJAuuX22jZOBmYctGMMnC0OAlvXTol1W0UBQlVhxYnv8TZiZiMiiS1bvzfDIF
         XbEZBi/IBBJZYEWjscxIk1F/uuaT1GgMxAfhgoufcI35ruQ1FyitaVLEJNikrKA2c13L
         zYMuOIyTqQ23QQgWsGb4Kj/77ddkbjaO8Gg/pxiopVlEt8HfOJCFb9hU2wGY7G0V7k+B
         nDnA==
X-Forwarded-Encrypted: i=1; AJvYcCX3bvPuvJtDIQU5Q4RqeRgSZVKijclkjyW0RrMJwY3DbQMnsxAt2mh1fnutj2zZ9J00BEvLZkyWoU8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzdKv3NL+i/CNkzb18RA6/KiMW2xv/6LU0ISx33FhF3MNl05Ltm
	USW4ajudhcKd8Q0xrL/9ibGHB8reK/Np78IYrxcafG6lxg98EXI/a731lNPBEg==
X-Google-Smtp-Source: AGHT+IExbbqyNWt2fPKyYIMNhJX6R1E0TijCcg/rASHtEuDYoIeTqUU83Whk9ZWQeNdt8OPbN8gL4g==
X-Received: by 2002:a05:6402:51ca:b0:5c8:9f3c:ea01 with SMTP id 4fb4d7f45d1cf-5c91d54d157mr1895353a12.2.1728486798856;
        Wed, 09 Oct 2024 08:13:18 -0700 (PDT)
Message-ID: <07b7f29a-db11-4ac6-bd1f-c2d9eb657b88@suse.com>
Date: Wed, 9 Oct 2024 17:13:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/44] x86/boot: move mmap info to boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-5-dpsmith@apertussolutions.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: <20241006214956.24339-5-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -296,6 +296,12 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>      else
>          bi->cmdline = "";
>  
> +    if ( mbi->flags & MBI_MEMMAP )
> +    {
> +        bi->memmap_addr = mbi->mmap_addr;
> +        bi->memmap_length = mbi->mmap_length;
> +    }
> +
>      return bi;
>  }
>  
> @@ -1185,13 +1191,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>      {
>          memmap_type = "Xen-e820";
>      }
> -    else if ( mbi->flags & MBI_MEMMAP )
> +    else if ( bi->memmap_addr )

I'd like to note that this isn't an exact transformation, as with the flag
set the memory map could theoretically also like at address 0. As long as
the legacy BIOS layout of low memory is as it is, that won't happen. I'm
less certain going forward, for legacy-free hardware/firmware. Imo at the
very least this needs mentioning as intentional in the description, for
archeologists to later be able to tell whether this was an oversight.

Or maybe it would be better to check ->memmap_length? That being zero
clearly means there's effectively no map.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:15:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:15:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814782.1228454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYPU-00005m-J5; Wed, 09 Oct 2024 15:15:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814782.1228454; Wed, 09 Oct 2024 15:15: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 1syYPU-00005e-EZ; Wed, 09 Oct 2024 15:15:32 +0000
Received: by outflank-mailman (input) for mailman id 814782;
 Wed, 09 Oct 2024 15:15: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=B0zC=RF=cloud.com=andrii.sultanov@srs-se1.protection.inumbo.net>)
 id 1syYPT-00005W-93
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:15:31 +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 51b4b2c0-8651-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:15:29 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c8a2579d94so8137980a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:15:29 -0700 (PDT)
Received: from EMEAENGAAD87503.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c91fd5d187sm857407a12.82.2024.10.09.08.15.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 08:15:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 51b4b2c0-8651-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728486928; x=1729091728; 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=r+/86E6IyE1vne2BAybxM85VAVTaht9kCIik4VBf/yI=;
        b=ZoTpIm+o3KWPwHQfcmjF+W2FubF5k7AvBpbLNvq1LtWubV8BzaisrI1QqGF5hlr0Co
         pk9LUTuofG6g5ourt0sjU8stxCj727K3X0Mpqf8ZoDrCuIdYOp2sfNJzJKZwlhaZ7jBj
         3bv6msYuHCNIOzqCBzIBGOsopuA7w+9LUPbTg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728486928; x=1729091728;
        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=r+/86E6IyE1vne2BAybxM85VAVTaht9kCIik4VBf/yI=;
        b=Yl5LGDkhZ0hR6tMCobZFDxmkjHQ1SEGB2JepcLfo2MBl7k0bz7KYSzwWTVc74QRCE+
         shtLVumoc5YJCgkuv6T89Vwfmus8okNsSeeJfo0VL1hXsvjLUKla2elczkddN8M4+emb
         OVJnlDtL/MYSVeVMoHBiA/v4XHYZwT1UgFWZcmOyiaZD8WkcHjMPw/xj0DijdRh/wIU9
         Qrpkh6qsg7hXrv2VUSKC9gvWoiBssHhJFDlEM9I+Mol+BLra0OyjcdTuKRswZscZwGWV
         Js6s0072V4eKEJt6+sgS+iTgz/yls7tThToM08xOO9d73ZjabkLRx72pTc1yMHRdXjaD
         wvjQ==
X-Gm-Message-State: AOJu0YxsnbfHC7bGV9AOuMKZl/Jf6b58o0Tmb8WR3Xvv9j8MKez7GWss
	rey8zjJfoBesss6bHww2sZjj+tlOswYwz4RAcrn22iEHovrbTVxumCfD/2DjutAZISuNnroynVO
	d
X-Google-Smtp-Source: AGHT+IEfsWJMqI1FWUQ07t0r+IqgNMs9Y8RYOPmremC1lEdDeVIGYNdZN6Q4RjUypk+J/xO6TKQggQ==
X-Received: by 2002:a05:6402:13c3:b0:5c3:d908:98f0 with SMTP id 4fb4d7f45d1cf-5c91d543cccmr2442864a12.3.1728486928551;
        Wed, 09 Oct 2024 08:15:28 -0700 (PDT)
From: Andrii Sultanov <andrii.sultanov@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Andrii Sultanov <andrii.sultanov@cloud.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	Edwin Torok <edwin.torok@cloud.com>,
	David Scott <dave@recoil.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v1 0/1] Oxenstored packaging fixes
Date: Wed,  9 Oct 2024 16:15:19 +0100
Message-Id: <cover.1728471268.git.andrii.sultanov@cloud.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Following the work on stabilizing some interfaces used by oxenstored
to allow bringing it out of the xen tree, there are some additional
fixes needed around packaging the plugin interface.

With these changes, I was able to get the spec repo to build and the
forked oxenstored to launch properly on the host.

Andrii Sultanov (1):
  ocaml/libs: Remove xsd_glue_dev package, also install
    plugin_interface_v1.a

 tools/ocaml/libs/xsd_glue/Makefile | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:15:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:15:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814783.1228464 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYPW-0000Mk-S2; Wed, 09 Oct 2024 15:15:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814783.1228464; Wed, 09 Oct 2024 15:15: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 1syYPW-0000MX-Lm; Wed, 09 Oct 2024 15:15:34 +0000
Received: by outflank-mailman (input) for mailman id 814783;
 Wed, 09 Oct 2024 15:15: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=B0zC=RF=cloud.com=andrii.sultanov@srs-se1.protection.inumbo.net>)
 id 1syYPV-00005W-SX
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:15:33 +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 537ab2b9-8651-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:15:32 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c876ed9c93so8500869a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:15:32 -0700 (PDT)
Received: from EMEAENGAAD87503.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c91fd5d187sm857407a12.82.2024.10.09.08.15.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Oct 2024 08:15:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 537ab2b9-8651-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728486931; x=1729091731; 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=ju2kM2mYSSWRFs2/nqiW60BKRRcAKuBu3INuqHaX0ug=;
        b=EDQJNe+Q+BykQPP00k7/TUQNsXZ4hUBsFNGZ0WwdktkSFWHwAgM5sGuV9azvm0KcSc
         u0Ft6Rht9VYsxEaW4RPUm+g9++O03As1dCpQZdprF6bQqWJUjj08JJcVs8KxjkESXogv
         QcNKrQOiW0BEMSbIHfsiey7ccDjBEWQdeJlYM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728486931; x=1729091731;
        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=ju2kM2mYSSWRFs2/nqiW60BKRRcAKuBu3INuqHaX0ug=;
        b=OirOuu0RetNczuJ9knsHA/H0i7SsIZqsdFc8x1Mh5Mo0iV3QAyi8g3KXYtpcxD9gWK
         bBzUSHvStUFeQN0ZqWrnRdZNQrd5Vbo2nijpwxYkqF96qbiXdbgb2iIW43ZRrF0dxqSj
         dRWZ0rutHxKhQ8n05YFS4bj0LomPq5d/5K0ROAP9mbpcpOyfNUqSMBy4o6zRc6mwC5ym
         T+LhT+cSfHpiDMIboi/svt5rAX4PPtigD0vju1SgWmgNNTwuQR7+A5xdY2aQ7MXbm6om
         QxFt10FJAneSGKj1Ro5u6i42hfL6cdTMr35NEwvSF6aYmoBG5E2yW7iv+P9fth2q//gg
         Orsg==
X-Gm-Message-State: AOJu0Yz36rLR3hKxJIqCC0p9PuO9YuTgR4EI09e5ROSdpSjWoIkjQTMg
	R+xkWcmoQ22cMEokqbw5rEZz80hKuQHgxdAVPeu4qe1+qLCYpTG3AUSvlOB7YzlNHNTH2qvZx2L
	m
X-Google-Smtp-Source: AGHT+IGSXl+oLbFe9cCF3IuLKbiz9K5jDuAUlUZitTFFp76aXHMPXnePB8nzTyws9CF3wDxOpN2Xaw==
X-Received: by 2002:a05:6402:13d4:b0:5c9:29f3:fba3 with SMTP id 4fb4d7f45d1cf-5c929f3ffe1mr1365525a12.20.1728486931437;
        Wed, 09 Oct 2024 08:15:31 -0700 (PDT)
From: Andrii Sultanov <andrii.sultanov@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Andrii Sultanov <andrii.sultanov@cloud.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	Edwin Torok <edwin.torok@cloud.com>,
	David Scott <dave@recoil.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v1 1/1] ocaml/libs: Remove xsd_glue_dev package, also install plugin_interface_v1.a
Date: Wed,  9 Oct 2024 16:15:20 +0100
Message-Id: <c9b47337615168e38fb6af2a80409f0a38ead901.1728471268.git.andrii.sultanov@cloud.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <cover.1728471268.git.andrii.sultanov@cloud.com>
References: <cover.1728471268.git.andrii.sultanov@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

xsd_glue_dev packaging is inconsistent with the rest of OCaml packages
and isn't actually necessary. .a is needed alongside compiled bytecode
files during linking and was missed in the initial oxenstore plugin
work.

Specify OCAMLCFLAGS along with OCAMLOPTFLAGS.

Signed-off-by: Andrii Sultanov <andrii.sultanov@cloud.com>
---
 tools/ocaml/libs/xsd_glue/Makefile | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/tools/ocaml/libs/xsd_glue/Makefile b/tools/ocaml/libs/xsd_glue/Makefile
index f84291f7fe..be68642968 100644
--- a/tools/ocaml/libs/xsd_glue/Makefile
+++ b/tools/ocaml/libs/xsd_glue/Makefile
@@ -5,6 +5,7 @@ include $(OCAML_TOPLEVEL)/common.make
 SUBDIRS= domain_getinfo_plugin_v1
 
 CFLAGS += $(CFLAGS_xeninclude)
+OCAMLCFLAGS += -opaque
 OCAMLOPTFLAGS += -opaque
 
 OBJS = plugin_interface_v1
@@ -28,14 +29,11 @@ OCAML_NOC_LIBRARY = plugin_interface_v1
 install: $(LIBS) META subdirs-install
 	mkdir -p $(OCAMLDESTDIR)
 	$(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue
-	$(OCAMLFIND) install -destdir $(OCAMLDESTDIR) -ldconf ignore xsd_glue META $(INTF) $(LIBS)
-	$(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue_dev
-	$(OCAMLFIND) install -destdir $(OCAMLDESTDIR) -ldconf ignore xsd_glue_dev META $(INTF) $(LIBS) *.ml *.mli
+	$(OCAMLFIND) install -destdir $(OCAMLDESTDIR) -ldconf ignore xsd_glue META $(INTF) $(LIBS) *.a
 
 .PHONY: uninstall
 uninstall: subdirs-uninstall
 	$(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue
-	$(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue_dev
 
 .PHONY: clean
 clean: subdirs-clean
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:17:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:17:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814795.1228473 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYRP-0002KI-53; Wed, 09 Oct 2024 15:17:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814795.1228473; Wed, 09 Oct 2024 15: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 1syYRP-0002KB-19; Wed, 09 Oct 2024 15:17:31 +0000
Received: by outflank-mailman (input) for mailman id 814795;
 Wed, 09 Oct 2024 15:17: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYRN-0002Jw-An
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:17:29 +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 97d101e7-8651-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:17:27 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a99415adecaso183446966b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:17:27 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99325c5c48sm665475466b.170.2024.10.09.08.17.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:17:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 97d101e7-8651-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728487046; x=1729091846; 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=lxvQfl2rvl2g0BGGeiVI77GzKYdgwx9alNQm/Pa0XLk=;
        b=Tz+On1Pkk/TXh0AMFJRPrnMIwE04WogtSodya2ct4J2yxKuxOPYJkkr07jsyDwfe4d
         Vyk2ox+v3VkQl92MDgfcuQosrW6+MA5eKkddsmKMKk/FS9W51lR21ZCwcAQgWp2SZo/L
         f/O00usdSph593oJjEFDTUAutRCTBPtBOH5vj5k56PZjjzM2Yd5v3XfPEGEhRDSuKffd
         U5Ow6JAilEUrNBsELy9KwjaoSm9PFRcN5qY3Zcuby7P9d7X0oys3cdnfHhOqfISdDEzO
         Bokk5UmZ3u6rumB5f8kfzpzINUJ0JnjUK4JhVR3K8aAiylEuNdDOnimaAyQycYyLMgtf
         2t4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728487046; x=1729091846;
        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=lxvQfl2rvl2g0BGGeiVI77GzKYdgwx9alNQm/Pa0XLk=;
        b=dd1qsXu8bvyj8moFOQ78pr9dSp2XfNp+RoRKCUD+OG8XZqggE7UUd0sUwn4yOo/1D+
         EPAq+Qn9mErnfzo3+t/1bU9oBph4r3EiTk0DPvqpLiGwOBFWtxdhKGSyEhabNHjCpeXA
         O6rGzIcegfAmYuFWcBux3A0KcpCX3cLu4YsIq9Wzhf19CXGXPjxBHqina5wivCFkuywz
         T5JhMl3sBGNb7WUzqCWDFEIy87uf2Rv8Xrr3MLf/LqEkHz+MNIz3mG55dFhnjzn1DWqx
         O2HIEssK4qM65X+ak1Zp+chJBDVaiUAa15htNt3wh21LtgTrJtM0/WmrgtiFdzXo1+6H
         V9TQ==
X-Forwarded-Encrypted: i=1; AJvYcCXAjmzcuTv5qm6sZym7+wXs8j9C9she2t6a+sQ2NDSz6jJhKGeNIS3ev4bA3UcJj0lehKGWtrUe2Ng=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxvQ2KM/IOxY9s9Ij1+7bL/6ZXccgzFiF9IKC0RRB0+b/Ruub/t
	Ps15s8lDcg3iQkkWouCaqG0QywJLe+Fr63B1EC5ga11oRqCSiYVv4ofHfwRz1w==
X-Google-Smtp-Source: AGHT+IGMLvRj1GY7hkcEDNDGYwVmBMn4K6JXXBpe/WAWP6brcP19oQIV6k+mYRkMIIQcmgbeaIxuag==
X-Received: by 2002:a17:907:6e90:b0:a8d:41d8:14ad with SMTP id a640c23a62f3a-a9967ab47d7mr828829166b.29.1728487046409;
        Wed, 09 Oct 2024 08:17:26 -0700 (PDT)
Message-ID: <76faeab0-3c8d-426d-8019-871ebfebbf78@suse.com>
Date: Wed, 9 Oct 2024 17:17:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 05/44] x86/boot: introduce struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-6-dpsmith@apertussolutions.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: <20241006214956.24339-6-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> @@ -302,6 +304,13 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>          bi->memmap_length = mbi->mmap_length;
>      }
>  
> +    /*
> +     * This will iterate over all modules to include an extra mb module, which
> +     * should have been reserved to hold an entry for Xen.
> +     */
> +    for ( i = 0; i <= bi->nr_modules; i++ )
> +        bi->mods[i].mod = &mods[i];

I find the comment difficult to follow / match with code here and elsewhere.
How about "Iterate over all modules, including the extra one which should
have been reserved for Xen itself"?

Jan



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:22:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:22:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814811.1228488 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYW0-0006eF-Pb; Wed, 09 Oct 2024 15:22:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814811.1228488; Wed, 09 Oct 2024 15: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 1syYW0-0006e8-LX; Wed, 09 Oct 2024 15:22:16 +0000
Received: by outflank-mailman (input) for mailman id 814811;
 Wed, 09 Oct 2024 15:22: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYVy-0006cn-LA
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:22:14 +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 421d99ec-8652-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:22:12 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a99422c796eso644318766b.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:22:12 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9939e593f6sm627991266b.91.2024.10.09.08.22.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:22:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 421d99ec-8652-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728487332; x=1729092132; 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=B0+GrzAztnrHSkXGnEdT/8/V/HpeD8meNPWQhJ1zyN4=;
        b=eFOjFLzR420QUdU1BKhBWS+q23LD3rR0maGL+gjPgvOlGK8U+VBlSwUeycSYInpZ/M
         iLuRSValgcKiWvsLvnxizOk4o9dXWaY8nuPUeOIr6rWgIytT+8x7wN9v4TVvoTYF3DZk
         i9c01gnVekovIBYbkVvwRGXLNSspZjNczYpQ3ayRNDC7997KG96joUmMsJphu5fcg9Ne
         I77cwsjmw/5UZ6JXRfMRaBhRa4KRTItOtHuTnKYz7h5oyIHslXD2YQOzi+95/rmrYRgf
         fWB5VGjD8wvWDUfupJCT2UtPZ9ySSZopl6rSkFCKUE5STLWW0h8WeMdBWFJnerHPIWeK
         a/Zg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728487332; x=1729092132;
        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=B0+GrzAztnrHSkXGnEdT/8/V/HpeD8meNPWQhJ1zyN4=;
        b=pWIn/ajtXYPlRgxsf1S99eRVhrvVDXYLDTnBCn7xGB5g067egaSdO5oaDvfDClcg0k
         v0+l5rx5LQzsZBQ0/W305v6ONZBZTmieOyG+lahK6m+2vUzQffmW253Eh+9tcYBn+7YV
         0PbyC1FJOiJQoTr9rGOGtR/1PmnOwSBASI2g4mPWxDI0u/qHFQovs9yktolaSrymd5jG
         dOHK8RknTcCQAzIpovUaNqnacoWdvge92VY0LFFsE1sr+UYP7a0QRyF9X3kPPb0KJy6r
         vAPseqAOBPjrK4A7cFfsCEPTHgRojTnXwPpEVpz20juyxjHWKapKgFjwhfelbwOFaOMY
         K1Tw==
X-Forwarded-Encrypted: i=1; AJvYcCUDPxXd0YL0A7+mg3ATZ/lJmXAk2nmjA7iMIC1tXK/s8PcoCf5Jdfp2ATFoGl+UdKGkXg/+pVXPf6Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyM++rso5VuXw1DfpZx2ay641+OmxObnsaGIIzI/FXshMps4Vq/
	mAdtanBD1SIqDNOSzSs4lA+9uMlNwHK77FsleEQU8pr2h3t7FGEriBXK0KAs2w==
X-Google-Smtp-Source: AGHT+IFvw/Kw2cTbIqUW3y4Ob1Fwm4Fk+U/nkrn2yQFBCrOv6PYqjAiPRnP7vdaK7mB4ET0VsTNlig==
X-Received: by 2002:a17:907:7204:b0:a99:4f5f:c9aa with SMTP id a640c23a62f3a-a999e8cb947mr45602366b.50.1728487332210;
        Wed, 09 Oct 2024 08:22:12 -0700 (PDT)
Message-ID: <aa040161-b7f6-4520-b3b7-55d7e8ee867f@suse.com>
Date: Wed, 9 Oct 2024 17:22:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 06/44] x86/boot: convert consider_modules to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-7-dpsmith@apertussolutions.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: <20241006214956.24339-7-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> @@ -639,20 +639,20 @@ static uint64_t __init consider_modules(
>  
>      for ( i = 0; i < nr_mods ; ++i )
>      {
> -        uint64_t start = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
> -        uint64_t end = start + PAGE_ALIGN(mod[i].mod_end);
> +        uint64_t start = (uint64_t)pfn_to_paddr(mods[i].mod->mod_start);

With the switch to pfn_to_paddr() the cast isn't needed anymore.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:29:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:29:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814821.1228497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYcg-0008HR-Iw; Wed, 09 Oct 2024 15:29:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814821.1228497; Wed, 09 Oct 2024 15:29: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 1syYcg-0008HK-GR; Wed, 09 Oct 2024 15:29:10 +0000
Received: by outflank-mailman (input) for mailman id 814821;
 Wed, 09 Oct 2024 15:29: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYcg-0008HD-0D
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:29:10 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 398cc6d1-8653-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:29:07 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a99422c796eso645470766b.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:29:07 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993fd777e6sm594972366b.79.2024.10.09.08.29.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:29:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 398cc6d1-8653-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728487747; x=1729092547; 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=NmzrO7/HAycTbd8bjMoywdwrbvb0vnQJtFqwLo1St7E=;
        b=Ijo/ckodb8/eOZ6QEzXV+WHhXgn6pvyXXk5CMf8LOV7CHIfjHJRu1+Q3JGxel/4xwl
         pKct0SD8x8CxyiP9BE2bx0uDoqkkIbP9JM0V/gvv+9SAGJ3qY/XizTrvD7Il4O5aIES5
         e+apRtT8DoYIT5vEyDiG0rOKjvlfH5iF/cQb1GynbtW9FpGJPPY8eOCWjmQIul1es33l
         2Vn7nFRXxsm2yN/EF58ixdnHRNgrHKa1e7vwQGMFOVSasbVjn6H6YiXHkgtANh8tPeHA
         XGpv+ZHDLJ5expTstapCB5JITFbkHdgQLlq5f72S70aoIR/p5cxvOl/PUTORCeYCwGcH
         t21g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728487747; x=1729092547;
        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=NmzrO7/HAycTbd8bjMoywdwrbvb0vnQJtFqwLo1St7E=;
        b=cI8CcqkBsn99MTi49eXpjAIUKEG6klEt2nrn+2PDid1GETHkhYdQYNlLmW9xaF2rcN
         HarowVsCdXyouoG6fQpVgH+OkSAe3seiAdDJNKKWw1e/q9H0lTFhUol7N+pv11gffDm6
         P5yhSSufSzLnLYDr2dQJ6ibNfQxT45erNTi6RZAHowVrYgRFSqioMQxToG9C+9LAMKpH
         6sd8yl89m/4JkbUxojlRXPW0ZLSYiewaz6N7dLlKw2jIP/mAaij50/b1UKa0K91x/TIW
         R30oydvzeOOKkBW+ylsWHn92zZqEi2eJGsw8VL8HeskMwUp1uANkJhTBxN1v7KDneuz0
         yOFQ==
X-Forwarded-Encrypted: i=1; AJvYcCXf1bzv3XNluhtsGbdl9TF0Xpp1YbrIz05DARSf9kqHCjM73z2zdv4SDe8tCIhN0WZYT5yPLBsVy3o=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzZNv/6BNacqvCx16gJqSFGQG8zywgWmCeFLG8F/bpOWwBMN41Y
	sFQ8FrKxqODP9vxAmzDgkNPch/X6lidcwxrAmCzG2B6DxQZbmhgborfYztcd/A==
X-Google-Smtp-Source: AGHT+IExmvykAiH6Eonqdo8JCDuhVAp+GS0+Sz5wdP6VGp0GXNrXi78tJ3Y+dRrBusUmTa1YuaojHQ==
X-Received: by 2002:a17:906:6a05:b0:a8d:439d:5c44 with SMTP id a640c23a62f3a-a999e628a9fmr58401166b.1.1728487747380;
        Wed, 09 Oct 2024 08:29:07 -0700 (PDT)
Message-ID: <c0b97711-6bf2-476c-a2f7-7f4dc075d2aa@suse.com>
Date: Wed, 9 Oct 2024 17:29:06 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/44] x86/boot: convert setup.c mod refs to early_mod
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-9-dpsmith@apertussolutions.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: <20241006214956.24339-9-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> @@ -2061,8 +2067,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>       * We're going to setup domain0 using the module(s) that we stashed safely
>       * above our heap. The second module, if present, is an initrd ramdisk.
>       */
> -    dom0 = create_dom0(mod, bi->mods[0].headroom,
> -                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
> +    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
> +                       initrdidx < bi->nr_modules ?
> +                            bi->mods[initrdidx].mod : NULL,

See an earlier comment regarding wrapped ?:. We certainly never have
indentation levels of 5 blanks.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:31:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:31:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814827.1228509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYeU-0001lV-0C; Wed, 09 Oct 2024 15:31:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814827.1228509; Wed, 09 Oct 2024 15: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 1syYeT-0001lO-S9; Wed, 09 Oct 2024 15:31:01 +0000
Received: by outflank-mailman (input) for mailman id 814827;
 Wed, 09 Oct 2024 15:31: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYeS-0001lI-AL
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:31:00 +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 7c075cb7-8653-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 17:30:59 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9982f90e92so199188566b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:30:59 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5bbca1sm666738966b.5.2024.10.09.08.30.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:30:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c075cb7-8653-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728487859; x=1729092659; 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=a4uFpjjF+UObxoPpfoJyH3WLVar+9/sBTiFTAS35G8A=;
        b=Pj4mmS/FqrFnwIraKn8VdYL31xIpcblYfVUN+ki96Ow4zLHlZfWG5rI/U+WD5S6zos
         IAP0lOVeZl256evJHcaWqMJftPzvQBSU9xjV3nQ2Ut2QrYKzwkK3o6PUpKbjGpmJjvVP
         ndoncvDjHFCiv8gvVXxq89rq1gackPy6dH6LScBtN7MwcW7WyC0gCGKeOtc+dFDvh3mg
         z0aqMt0qgV83g1CNgxZ5OGAMJMtu0tm7lnNihon4FFJC1gzbLnRXWHXHisnAOjVPV0xJ
         mfPn0p9xYDigcjFArdrp8uNjxmx6nUuJ+KkNrWs+1M3uiMOItDMRZVT1zff0ZKq2LYb8
         jrfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728487859; x=1729092659;
        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=a4uFpjjF+UObxoPpfoJyH3WLVar+9/sBTiFTAS35G8A=;
        b=rIqgfShHckWAGIxSuzlU0R6F7yiKp83Cec1IiVgG2hRubUIEYEaPU+wENrtv+h/e/a
         5yZ3Gj4/MHGHWAUhWpW498JIQZRKVf3tV3bylEPmWzG7PxakK7yKPLAntoZgUyYUz2xE
         IpZJiiobGP+etocIk4dtJpH5RKlN2/A2p/4vIFVb1QH2Tp6wTIuDF88jMPzh0yNohSv5
         WsGVKA3Y/TUPdQAtjE3Lm1whla9h9eMTKeNfYkk8yrzA/qagj3hU4DlTG34bGHZg4lxN
         lAEbtPsM5lQxaegAyIjiPLi1pjMHynBpnjsLhejAzRHC/N515OHKJ3jFyYU0T6jKgyNT
         qbLQ==
X-Forwarded-Encrypted: i=1; AJvYcCXIkQ/CY15Xw/TEzjpwCrS3wntTB474Ct/HW6TgcY5TOnaUwoPgQr6NJCBsr5IVaQ5CbhSr8VK4Rf4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxUh4TyBpZyFowHzLRSd1IBhzgOPfp7N9Wef/r2vdKxT7vkbroz
	f6ZVGN4ORQSr79yv5UxGmoGv9UwnsmsfL37c1bpx7b1knTPKfxZptCP52J12Cg==
X-Google-Smtp-Source: AGHT+IHYZGVfGxEnSD09RRyo9nXfHkYP4DRGZzSaBW5t4PGD5xKiqfwEa8ixWO84kex8mQ2Ou/FJ9A==
X-Received: by 2002:a17:907:86a9:b0:a8d:2281:94d9 with SMTP id a640c23a62f3a-a9967a7a339mr844631166b.23.1728487858761;
        Wed, 09 Oct 2024 08:30:58 -0700 (PDT)
Message-ID: <77257ccc-2da9-4b9c-bc91-21357486c206@suse.com>
Date: Wed, 9 Oct 2024 17:30:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/44] x86/boot: introduce boot module types
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-10-dpsmith@apertussolutions.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: <20241006214956.24339-10-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -311,6 +311,10 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>      for ( i = 0; i <= bi->nr_modules; i++ )
>          bi->mods[i].mod = &mods[i];

This loop, on its last iteration, has done ...

> +    /* map the last mb module for xen entry */
> +    bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
> +    bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];

... this assignment already, hasn't it?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:32:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:32:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814834.1228517 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYfx-0002st-9y; Wed, 09 Oct 2024 15:32:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814834.1228517; Wed, 09 Oct 2024 15:32: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 1syYfx-0002sm-6Z; Wed, 09 Oct 2024 15:32:33 +0000
Received: by outflank-mailman (input) for mailman id 814834;
 Wed, 09 Oct 2024 15:32: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYfv-0002se-G9
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:32:31 +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 b255b596-8653-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 17:32:30 +0200 (CEST)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c8af23a4fcso8522997a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:32:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c92ff3a267sm173343a12.72.2024.10.09.08.32.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:32:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b255b596-8653-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728487950; x=1729092750; 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=IBl5PMQsVJkRgqUZiKmNB0QuqpHX2Sf9BgRLdoD7dng=;
        b=EX/14q2XqCALw5cf+hCGQgVO0yQNUe9jgQvkm9VHAaBVbK5T8ZE2GQjL/aPiwJSqig
         N3zQ+szAgRdf73Gc2DJRU1MzK38hB1+Y076Z0BEUWT2Zt4k8Ysh1IVZGZsLkKzuM4FUn
         cKbPM88gck+2fhbEjxzXwHiSkrUOsfKjM1uy94fPYo+uN02X4d6UuINnF42p2PtXX2P/
         qQ/F9cqpWNGVvobkMN7pN0MktIxxzrqQDnWQNxZP61Tv5kVBndFq86noFo9/IkZbBz54
         o7KI+Im7tNI/iX+qsKwk8ZAFewXRE2/ed7bK+X5BybR2Xqqa0ivAfgu6t1tm5MI5KDcY
         Y4Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728487950; x=1729092750;
        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=IBl5PMQsVJkRgqUZiKmNB0QuqpHX2Sf9BgRLdoD7dng=;
        b=a5FatU0ypuf3m5kqvd4DeFY8d0mKHcQYH5R0YT3uQG/1ysYXbP3DllpzYQENgQxmFl
         XVVjIUXyjvJrGX7P+Rb2gXZ/YHc08SmjuMeCmcNhBEjqT53bO18D+roqQimjucwFwqvu
         lJpLGGhWa1uBtvJJjONbRkQywd8HrjRs3x8z9pWTOkG2ZYYj7WSw8nf78xafiDnfeJQU
         tHsn0Ibk0Q14Oes1TrXdRZaG1Uyst5hE1g0XYF6YE63bx9dXv06WgevVwTxa/WCzjO6P
         TMk0kw9NcYUCexOxKpAbmsAKqF3bXD+P5EFV1s3sf6jmKAq7xkO0HV+e1BQs8OkwrGgR
         EzgQ==
X-Forwarded-Encrypted: i=1; AJvYcCXKn9DjszWGTBuVCszlB3FuKQnoVYjuEWfhx8pJZmfj8fyuI+S/yBg/bjqby2geyyT9Uk2vXBwPvqM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywt4n6fSekq45TVNoby8bDOoPDyFwqF7I+0/ovRFkYJ0EC7nf6w
	BQsYqZFIfHGl3OC63kiIWM3hLgWHaRvqpByTpFmKvaUdu6yoAawdHtvmv89S6sF8YNNGPT+zwTE
	=
X-Google-Smtp-Source: AGHT+IF3/3MW28h8VTBpp+QXbP5PvaAOEwlpbai8vXhfNn9+q/KvccAVO58+GEbox0aU62VkIsKRuQ==
X-Received: by 2002:a05:6402:5209:b0:5c5:c4b9:e68f with SMTP id 4fb4d7f45d1cf-5c93241df0fmr198701a12.5.1728487949875;
        Wed, 09 Oct 2024 08:32:29 -0700 (PDT)
Message-ID: <c8e3ac4f-642b-4dc2-b73e-7018e27f6c76@suse.com>
Date: Wed, 9 Oct 2024 17:32:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 10/44] x86/boot: introduce boot module flags
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-11-dpsmith@apertussolutions.com>
 <9372d72c-c98d-495b-bc3c-8b81208f7cd5@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: <9372d72c-c98d-495b-bc3c-8b81208f7cd5@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 07.10.2024 22:02, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> The existing startup code employs various ad-hoc state tracking about certain
>> boot module types by each area of the code. A boot module flags is added to
>> enable tracking these different states.  The first state to be transition by
>> this commit is module relocation.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootinfo.h | 4 ++++
>>   xen/arch/x86/setup.c                | 8 ++++----
>>   2 files changed, 8 insertions(+), 4 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
>> index 6941a8975ea6..021ff0d93643 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -31,6 +31,10 @@ struct boot_module {
>>        */
>>       unsigned long headroom;
>>       enum bootmod_type type;
>> +
>> +    uint32_t flags;
>> +#define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
>> +
> 
> Stray newline.  Otherwise:
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

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




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:38:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814841.1228528 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYls-0004Zy-Tj; Wed, 09 Oct 2024 15:38:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814841.1228528; Wed, 09 Oct 2024 15:38: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 1syYls-0004Zr-Q8; Wed, 09 Oct 2024 15:38:40 +0000
Received: by outflank-mailman (input) for mailman id 814841;
 Wed, 09 Oct 2024 15:38: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYlr-0004X6-DA
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:38:39 +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 8d18198e-8654-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:38:37 +0200 (CEST)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-5399041167cso11295916e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:38:37 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a994c5a219bsm507197266b.152.2024.10.09.08.38.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:38:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d18198e-8654-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728488317; x=1729093117; 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=wODw9eGqZU/Y4//9+2qG8H4Di9uKIKnry7vwIwp/p44=;
        b=UfZTXO6f9VNx/xybRuuQCm6X1cOjGfgu275PHa+OZENLWquhlzp+x1FMSDaWh7Tuns
         pRcixPtGUVADIIL77zJcN29UvmB2HthjTgozn/NPWgxevkIkrqqWWVsm3HTN1bTDz30Z
         7ntruHVqmeznTDW7LLWj6bE/ff21P87EfgUW8RVnVvNB+naWyeNC+g1kLdw4iN33YvRv
         VM1iTGBEN1mAx5N4teo6/L0JE+nROIODa0CtO/BL4XNjUNfvx/H1Z+j1kbHDDZyW1BJ5
         GEh1EPkF5uN3YYQkUPfiv8G7KAAEbWyKul4N9QKKi8CbNtw55rBMSpOmuGNINz3ugEiZ
         dbhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728488317; x=1729093117;
        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=wODw9eGqZU/Y4//9+2qG8H4Di9uKIKnry7vwIwp/p44=;
        b=H1V/EcEBZjl9bsD8tzPbg2l1TW0hXDcu9dmbB6bsA08lICDb6IA2OyrqM1UnvlB5uM
         VhJu/JrSGYzrbOn37cJaRTmHfa33c3J7fv5KUnj0t57aP84vUIe2ochELjPflc/1qS9G
         HzprpTnhVA4S2kwEeXk67V47UtmLLxz2irmc5fX+GeLeyPOTCRCa977WHc98yNZl1PGm
         rJb8enZI6xAK0RGDzc1VqeryalFVvPXzVa6TQwsyePT3omLAKPcTxk+0XBPn4akBy2j1
         a7fzj1D6v9FNXMQVjtZy8t8HTbpU/ft9uq8EtZJIMdL8Ib36U81qRCXSYx3o9Pyjb7MB
         9n+Q==
X-Forwarded-Encrypted: i=1; AJvYcCWaT93fcX7dCno3xvTNHm23jVH7HxVTgUY4+GzI0q+YkbUOH/muA5R8F6wzusi+gkrnJLGFfwb8w1o=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyELbPgAjh+XMb7PkBXVc4cLjLZe78esotEFPjKnIN3/6EIbt8i
	lXyuS9QSyAgXAZdtewndJwuBvcOFbdbqwcspVgN8Fz5h3eSax2V4HLCiWE6IHw==
X-Google-Smtp-Source: AGHT+IFzAeyqPKAUZlg1mRX7mW5teRBCw5QC/Qx5VyeLL52DygV6etZyqdupku0bqpcKq/000brTVQ==
X-Received: by 2002:a05:6512:acb:b0:539:94f5:bf with SMTP id 2adb3069b0e04-539c496ce0fmr2937037e87.59.1728488316798;
        Wed, 09 Oct 2024 08:38:36 -0700 (PDT)
Message-ID: <dbd4898a-38da-47d5-8655-32f96c33575d@suse.com>
Date: Wed, 9 Oct 2024 17:38:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 11/44] x86/boot: split bootstrap_map_addr() out of
 bootstrap_map()
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-12-dpsmith@apertussolutions.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: <20241006214956.24339-12-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> From: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Using an interface based on addresses directly, not modules.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
>  xen/arch/x86/include/asm/setup.h |  1 +
>  xen/arch/x86/setup.c             | 19 +++++++++++++------
>  2 files changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
> index 3d189521189d..213584b05fb2 100644
> --- a/xen/arch/x86/include/asm/setup.h
> +++ b/xen/arch/x86/include/asm/setup.h
> @@ -36,6 +36,7 @@ extern struct boot_info xen_boot_info;
>  
>  unsigned long initial_images_nrpages(nodeid_t node);
>  void discard_initial_images(void);
> +void *bootstrap_map_addr(paddr_t start, paddr_t end);

Nothing is being said about why this function needs a declaration here
and ...

> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -437,24 +437,22 @@ static void __init normalise_cpu_order(void)
>   * Ensure a given physical memory range is present in the bootstrap mappings.
>   * Use superpage mappings to ensure that pagetable memory needn't be allocated.
>   */
> -void *__init bootstrap_map(const module_t *mod)
> +void *__init bootstrap_map_addr(paddr_t start, paddr_t end)

... isn't instead static here. Bugseng folks have put in quite a bit of
effort to remove such anomalies (which Misra doesn't like) from the code
base; I don't think we should introduce new ones. I didn't peek ahead
further than just the next patch, where the function gains a new use,
but could still be static, so it's possible I'm simply missing a
subsequent use from another CU. Yet then the function ought to become
non-static only there.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:39:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:39:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814846.1228537 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYma-0005T7-5m; Wed, 09 Oct 2024 15:39:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814846.1228537; Wed, 09 Oct 2024 15: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 1syYma-0005T0-3I; Wed, 09 Oct 2024 15:39:24 +0000
Received: by outflank-mailman (input) for mailman id 814846;
 Wed, 09 Oct 2024 15:39: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=f2hB=RF=cloud.com=christian.lindig@srs-se1.protection.inumbo.net>)
 id 1syYmZ-0005Kw-Dr
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:39:23 +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 a7f5cb47-8654-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 17:39:22 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c9150f9ed4so1922290a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:39:22 -0700 (PDT)
Received: from smtpclient.apple ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c8e05eb5ebsm5792091a12.65.2024.10.09.08.39.19
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:39:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7f5cb47-8654-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728488362; x=1729093162; 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=oct+1aXwVsVtFTgjw/Ezj7nEyzSVEMoLCGSRarY59k0=;
        b=LWLeuO+AbPWGm5iMPiNJ2+94LW20j2Sclr6SXeAqofepWMAIXFdpULhZzqORJ1EkYG
         yMUjbvt3EmEriQ9MVqlbMx94SOYvlO1DkZo2Nsq5nM/nwKzIVI4JjZhVnZvKFQNXqSgR
         TaZnJ3xRVggGUql33HBvdWhQPznfC+cK6yMwg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728488362; x=1729093162;
        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=oct+1aXwVsVtFTgjw/Ezj7nEyzSVEMoLCGSRarY59k0=;
        b=ubMhGJd/+e6na7uiiAWH1O/l9qZ3DnDxyGirQVWCO2zg3uoMsiMLPslehzXbwhj/UN
         D4Q4TAHfRd4VVJ4b4GykAD0QuIGc4aBP+extS9+Ocd1iYOfgeT9wK68+XaECY7REy6Yx
         lcZLuS9FF36m2CiBLS56nhlkEvz6z4OWNwY3MKsiT2bJGbRaQF1AGDbg66v8OelO87xH
         5BuUD1y05EnqgSReG1zGKpX1B3oG6c9KrPukirq07B8O3+IQ+MQNrXNgfd98Er/zHahU
         l+00LvcV9AXT6IH1wMDG0+i71jmt/cUDEkBX5sOJe6e0LXxo4RxdHYGh11rH5mpV9Fdx
         LJpA==
X-Gm-Message-State: AOJu0YxgOhrA7VIWisfPquVFHYYdv5nGKLuJGjZXNX4TSRkVrbQK9uHE
	QGKbkg4yGpqvXc9lkKaEId06p9JsRIRdiIaoIH91QPbgrVUSqzjJ6WRXqiStrAI=
X-Google-Smtp-Source: AGHT+IGzR+TcLBOy0qoj7Bu6LdI45IcPzMLIEspINV6bsMa6YxvWtXfIjAcIJKr96bXo+bZEvz0glw==
X-Received: by 2002:a05:6402:26d4:b0:5c8:79fa:2e4f with SMTP id 4fb4d7f45d1cf-5c91d69a2demr2495324a12.32.1728488362105;
        Wed, 09 Oct 2024 08:39:22 -0700 (PDT)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\))
Subject: Re: [PATCH v1 1/1] ocaml/libs: Remove xsd_glue_dev package, also
 install plugin_interface_v1.a
From: Christian Lindig <christian.lindig@cloud.com>
In-Reply-To: <c9b47337615168e38fb6af2a80409f0a38ead901.1728471268.git.andrii.sultanov@cloud.com>
Date: Wed, 9 Oct 2024 16:39:08 +0100
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Christian Lindig <christian.lindig@citrix.com>,
 Edwin Torok <edwin.torok@cloud.com>,
 David Scott <dave@recoil.org>,
 Anthony PERARD <anthony.perard@vates.tech>
Content-Transfer-Encoding: 7bit
Message-Id: <E49C0323-4AD0-4074-ABE5-83D917D56995@cloud.com>
References: <cover.1728471268.git.andrii.sultanov@cloud.com>
 <c9b47337615168e38fb6af2a80409f0a38ead901.1728471268.git.andrii.sultanov@cloud.com>
To: Andrii Sultanov <andrii.sultanov@cloud.com>
X-Mailer: Apple Mail (2.3774.600.62)



> On 9 Oct 2024, at 16:15, Andrii Sultanov <andrii.sultanov@cloud.com> wrote:
> 
> xsd_glue_dev packaging is inconsistent with the rest of OCaml packages
> and isn't actually necessary. .a is needed alongside compiled bytecode
> files during linking and was missed in the initial oxenstore plugin
> work.
> 
> Specify OCAMLCFLAGS along with OCAMLOPTFLAGS.
> 
> Signed-off-by: Andrii Sultanov <andrii.sultanov@cloud.com>
> ---
> tools/ocaml/libs/xsd_glue/Makefile | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
> 

Acked-by: Christian Lindig <christian.lindig@cloud.com>




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:39:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:39:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814853.1228548 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syYn4-0006L5-IU; Wed, 09 Oct 2024 15:39:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814853.1228548; Wed, 09 Oct 2024 15:39: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 1syYn4-0006Ky-EH; Wed, 09 Oct 2024 15:39:54 +0000
Received: by outflank-mailman (input) for mailman id 814853;
 Wed, 09 Oct 2024 15:39: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syYn3-0005Kw-GP
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:39:53 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b9d96daa-8654-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 17:39:52 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c876ed9c93so8529128a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:39:52 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c92e25805esm248674a12.33.2024.10.09.08.39.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:39:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9d96daa-8654-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728488392; x=1729093192; 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=cy9MIla/4qsrS6uLLsbKtuMzSeXM31HqRnfz68TSW1Y=;
        b=PMwZso+hCMfn+nrRASfcNeN+mXo+AlYdKHip/StFRF9eKpCDcZi9EdVXUmyAa9q43S
         WC1zmmpFV09T+YFWtTpJgwcb6xpd0uEtRDb+r1PDFjA56jdhnu0laoXBtXOdAlnMB80t
         b7pedqyI+jQunGKfKZH+OH26yUJ+FdzF6YCXIf8JqXxNlCvlRd9b1fKRJqsJ3pgfh5lz
         doy1mgfMYTrxFQMg00uiAEnCcDTxCXEs9r6W2MLVVpcMNYxjCKqhTD3GMm4cATMIdmE2
         FFokMkGxfW/g9czPclp2QmJLAt3UspObFUL3qETsjo17JDOTG3aHh7VOstmXBHN15qtc
         /fTQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728488392; x=1729093192;
        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=cy9MIla/4qsrS6uLLsbKtuMzSeXM31HqRnfz68TSW1Y=;
        b=INaAWbwWCli0uspsnElJ+RXlpj5xAgYlzR2cSs/2p4WmmjNvSy2Xz8GthGvU3rDQjH
         C9iGZWUmYDUOBVgS7p2etZsZgVZc0EJ0sn3em8fvgDtP2osyrHod81dmtl9jH7kFUf6S
         yeGYdm4BchcSUT+BZRk+8XuPcwXKg0kyWwJ0gx8+V82YfkB8wSeu8xdEQuECahGBCU+J
         dLLDq6Vhd3Tht+8Y2ZSO2kwFnp9k/gz2oDgImseeFZV0nTrtOuvyIA02mDTRQsvNgizP
         aZolQ0K2bU/5WYUVaxSnee5VMXqJ7Cvh9alpbVhYyTS8nR8eImynCJPkWdY6+J5AMSJO
         Qw/g==
X-Forwarded-Encrypted: i=1; AJvYcCV8fy/BvlrWJQxVmlvnOgSjU10OWsLBNyC19AG0wpxRdoZx+XadI/v8TEkLvvSl5lv8QgEO5s17Nzs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzNVnQA9EUkiNWVjEGV30LNJG+6V3LvvrpOd6sW/OOC8GzgxOmN
	p3d1harILZiQzJxgCZk3310VbiPRHIOIjRVW3dVMDKsSjILf7ZEOV5VBoPqWXQ==
X-Google-Smtp-Source: AGHT+IGsciBQ4Zgdkf3yr0jAiPZyTkg4YRiAwjyvC3RXEx+va9UY/Ax4GrSxcuBRtzrzCc3gT0hsGA==
X-Received: by 2002:a05:6402:34cc:b0:5c4:2343:1227 with SMTP id 4fb4d7f45d1cf-5c91d5377a2mr2765107a12.5.1728488392076;
        Wed, 09 Oct 2024 08:39:52 -0700 (PDT)
Message-ID: <cd3279a1-6339-43d1-bc5a-977f0e9ba2b9@suse.com>
Date: Wed, 9 Oct 2024 17:39:51 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 12/44] x86/boot: add start and size fields to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-13-dpsmith@apertussolutions.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: <20241006214956.24339-13-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> This commit introduces the start and size fields to struct boot_module and adds
> a corresponding bootstrap mapping function, bootstrap_map_bm.

Which then is left with no caller. Misra doesn't like unreachable code.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:53:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:53:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814866.1228558 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZ0A-0005mJ-Lj; Wed, 09 Oct 2024 15:53:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814866.1228558; Wed, 09 Oct 2024 15:53: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 1syZ0A-0005mC-IB; Wed, 09 Oct 2024 15:53:26 +0000
Received: by outflank-mailman (input) for mailman id 814866;
 Wed, 09 Oct 2024 15:53: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=Z5PZ=RF=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syZ09-0005m6-Ex
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:53:25 +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 9d5fe32c-8656-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 17:53:24 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9944c4d5d4so515643966b.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:53:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a995740de2bsm416243666b.94.2024.10.09.08.53.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:53:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d5fe32c-8656-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728489203; x=1729094003; 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=hqqOFZxTZqoD5J5/uMYVvC78ksYGP1/LVSa4qljJVEA=;
        b=DMWNdP2/x0NX9MTo+zMKuJfFLMHTxqwbfraO4KYNMcRryJNeQcGS+q2kaHBA+W5Dv3
         ZwUIhlIcLSbo8eq+kmdRbK2iZLa3TqabI4bp0fOFq/eQmJs3Ld5d/Xo/DFnK4xpaPpnw
         4MIDQXiFxJUuy6vEhIv9DAXK4rnOkACVeRksj0oHT+vMmFDv29bx4LVjPtT+GFji1Tp6
         VhcwV49fhRyezNlreMcQnKO5uaUWcRy658hoZGYJ6L26gby6ngH2qMO15SzwGwmvMF0S
         tJ6Uzix6iR+am8M2SVTmszp6I9JL2cCd5auUWXFejqWsSCCmXhtubSkV9AQJqewFgJJv
         MjMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728489203; x=1729094003;
        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=hqqOFZxTZqoD5J5/uMYVvC78ksYGP1/LVSa4qljJVEA=;
        b=N4rdew99wu3ElYnpWCCY7fWgJXD55nBrxkV4jgC6B/PmfwOtleUiWB3+ji+6SvBTt4
         arLFocDa9t3jrQbj6gPJP7tNenVbZS08fxK5tAQE1yrqYmuqkwbI4tbc1I7JqKotvyyE
         A7sn6dUSpb2YsYLzkkVVS3RHqrt45SqGID0fW9aZYjQVvSC/fImgivCS/CR3ya3zkwIW
         49Fno27nz3ZOERwtJIyzcJX/ZnxTiqLUxXfC+x4DjeIp/juzq5MAQI4vWH2jHK7OH5LO
         BIiTcc+AcomkqABIhYgVBmycov2rAbWzV4rifgcA8b3KRMIh0FCj7GFcHy2tnkBknRhk
         SGBw==
X-Forwarded-Encrypted: i=1; AJvYcCUiM1BQP6Nr7wbAqOoPW5cvjxW4EcJlh5Tt2P2WZtymFn2EU8RJ6gy9Yxb1ANBeHu2zpeXP4fXhVk4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx9XNkFmaZ0lU7sVnI6lre+Y0WoNmHJIrfoxQMn0zTomWtJe2fW
	n/RsaMipP4DWPb/a5IkT7+SARQrFCehepNcglCVbQLLmd0FF50Rhnyv2gSIH5g==
X-Google-Smtp-Source: AGHT+IFFA/12s7HlXa79omgKSQQyGKKAsgVeKMFOCbqQyn0shH2GP8C+tegBTUEOKwcdICxawYPWXQ==
X-Received: by 2002:a17:907:962a:b0:a99:4bba:fe8a with SMTP id a640c23a62f3a-a998d18d21dmr223353466b.14.1728489203291;
        Wed, 09 Oct 2024 08:53:23 -0700 (PDT)
Message-ID: <f4657c52-ac03-47cc-8182-91f210daad24@suse.com>
Date: Wed, 9 Oct 2024 17:53:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 15/44] x86/boot: introduce boot module interator
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-16-dpsmith@apertussolutions.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: <20241006214956.24339-16-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.10.2024 23:49, Daniel P. Smith wrote:
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -54,8 +54,24 @@ struct boot_info {
>      struct boot_module mods[MAX_NR_BOOTMODS + 1];
>  };
>  
> -#endif /* __XEN_X86_BOOTINFO_H__ */
> +static inline int __init next_boot_module_index(
> +    const struct boot_info *bi, enum bootmod_type t, int offset)

Instead of "offset" maybe better "start" or "from"? Further, plain int
(as also used ...

> +{
> +    int i;

... here) isn't really liked for ...

> +    for ( i = offset; i < bi->nr_modules; i++ )
> +    {
> +        if ( bi->mods[i].type == t )

... array indexing. Perhaps the function itself would better have
unsigned int return type as well, ...

> +            return i;
> +    }
> +
> +    return -1;

... using UINT_MAX or some other suitable constant here instead?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 15:57:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 15:57:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814874.1228568 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZ3t-0007W9-5F; Wed, 09 Oct 2024 15:57:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814874.1228568; Wed, 09 Oct 2024 15:57: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 1syZ3t-0007W2-1X; Wed, 09 Oct 2024 15:57:17 +0000
Received: by outflank-mailman (input) for mailman id 814874;
 Wed, 09 Oct 2024 15:57: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syZ3r-0007Sl-4I
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 15:57:15 +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 263b9b13-8657-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 17:57:13 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a9960371b62so334850566b.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 08:57:13 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9944839974sm555298266b.218.2024.10.09.08.57.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 08:57:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 263b9b13-8657-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728489433; x=1729094233; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=sYXNhzNRG73AjlXGRl78NU1q3MK86m6SRgnKz+EvApg=;
        b=eESdirQmeYWN0wXUX4bbPrauirFcBmO6RtM6TVcNeSFs841SR+5lP2E6txinx8EAe8
         l/Cq3qaQIFD5NcI3MW8jg9/w9sCnJIOppquwCr93oK04upyySOOapUoAyQDd029ft29b
         rphUr8Ki6aTjAwkkWrwuGroO/A3nhop+0KTjo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728489433; x=1729094233;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=sYXNhzNRG73AjlXGRl78NU1q3MK86m6SRgnKz+EvApg=;
        b=qeQwT4at10m5ityyjkfP6Adc1pzmd2uySPfSEarVQaEjAcOBjW8dzPDB/iiHXjbbW1
         pQND1e+QcPZaubnVBedI0OgCD6CAYQWKo5bW73+o4FKsfmsm5fa5tOBxIMlteeCVcHs7
         i7/LBSVZIZK0jD/yL6xl2eO+bDPzlxxSD/qKYwy/LivbT1RBexcI7BobwZDGVZUjtDXF
         9DtJMTl9n0wbybzstFNqv31gQ9mUZ9aAOE/y1pDmQSV0HAwOcVWmPXEYFlRzveL+Lz8Z
         OGlRvOmaTAmW4R8nLaQTZphrGxbXZeZNtYURz4d4h5I5x93rgWRSj9PGgrbeqC/ySsp0
         GhhQ==
X-Forwarded-Encrypted: i=1; AJvYcCW3WIutxTIB5JoTB1KMTjHqtj0jXdrvNA0dZadtO1QPn3cd8L4Iz3pKikbiWWcZmCaiub95BL0qGOs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxpY15u1ds28Tks1c2m97EoPQ4hBCghaCeK39Xd1KN3waaV+fU2
	kQcSBEIG0LLlr21K2SLtOV6MQ0iDghOBFmOTWIBVXLmKmIojBzTRuc/LH0Xe/Ck=
X-Google-Smtp-Source: AGHT+IHFZJHe8ZLs0SxvXR97gzHVbytjnh2uk0hJP81YWcbk4O8KTQCfc7GHkvR+GO0SjhOXhl6rJw==
X-Received: by 2002:a17:907:e29c:b0:a99:5629:b3ac with SMTP id a640c23a62f3a-a998d1e4d95mr296123166b.26.1728489432881;
        Wed, 09 Oct 2024 08:57:12 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 16:57:11 +0100
Message-Id: <D4RED6YCM7AH.1QVPIV4K9SB5O@cloud.com>
Cc: =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Anthony
 PERARD" <anthony.perard@vates.tech>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 01/11] lib/x86: Relax checks about policy
 compatibility
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-2-alejandro.vallejo@cloud.com>
 <1a57c4c9-baa9-44b4-8a3f-0f821d8c2484@suse.com>
In-Reply-To: <1a57c4c9-baa9-44b4-8a3f-0f821d8c2484@suse.com>

Hi,

On Wed Oct 9, 2024 at 10:40 AM BST, Jan Beulich wrote:
> On 01.10.2024 14:37, Alejandro Vallejo wrote:
> > --- a/xen/lib/x86/policy.c
> > +++ b/xen/lib/x86/policy.c
> > @@ -15,7 +15,16 @@ int x86_cpu_policies_are_compatible(const struct cpu=
_policy *host,
> >  #define FAIL_MSR(m) \
> >      do { e.msr =3D (m); goto out; } while ( 0 )
> > =20
> > -    if ( guest->basic.max_leaf > host->basic.max_leaf )
> > +    /*
> > +     * Old AMD hardware doesn't expose topology information in leaf 0x=
b. We
> > +     * want to emulate that leaf with credible information because it =
must be
> > +     * present on systems in which we emulate the x2APIC.
> > +     *
> > +     * For that reason, allow the max basic guest leaf to be larger th=
an the
> > +     * hosts' up until 0xb.
> > +     */
> > +    if ( guest->basic.max_leaf > 0xb &&
> > +         guest->basic.max_leaf > host->basic.max_leaf )
> >          FAIL_CPUID(0, NA);
> > =20
> >      if ( guest->feat.max_subleaf > host->feat.max_subleaf )
>
> I'm concerned by this in multiple ways:
>
> 1) It's pretty ad hoc, and hence doesn't make clear how to deal with simi=
lar
> situations in the future.

I agree. I don't have a principled suggestion for how to deal with other ca=
ses
where we might have to bump the max leaf. It may be safe (as is here becasu=
e
everything below it is either used or unimplemnted), but AFAIU some leaves
might be problematic to expose, even as zeroes. I suspect that's the proble=
m
you hint at later on about AMX and AVX10?

>
> 2) Why would we permit going up to leaf 0xb when x2APIC is off in the res=
pective
> leaf?

I assume you mean when the x2APIC is not emulated? One reason is to avoid a
migration barrier, as otherwise we can't migrate VMs created in "leaf
0xb"-capable hardware to non-"leaf 0xb"-capable even though the migration i=
s
perfectly safe.

Also, it's benign and simplifies everything. Otherwise we have to find out
during early creation not only whether the host has leaf 0xb, but also whet=
her
we're emulating an x2APIC or not.

Furthermore, not doing this would actively prevent emulating an x2APIC on A=
MD
Lisbon-like silicon even though it's fine to do so. Note that we have a bro=
ken
invariant in existing code where the x2APIC is emulated and leaf 0xb is not
exposed at all; not even to show the x2APIC IDs.

>
> 3) We similarly force a higher extended leaf in order to accommodate the =
LFENCE-
> is-dispatch-serializing bit. Yet there's no similar extra logic there in =
the
> function here.

That's done on the host policy though, so there's no clash.

In calculate_host_policy()...

```
      /*
       * For AMD/Hygon hardware before Zen3, we unilaterally modify LFENCE =
to be
       * dispatch serialising for Spectre mitigations.  Extend max_extd_lea=
f
       * beyond what hardware supports, to include the feature leaf contain=
ing
       * this information.
       */
      if ( cpu_has_lfence_dispatch )
          max_extd_leaf =3D max(max_extd_leaf, 0x80000021U);
```

One could imagine doing the same for leaf 0xb and dropping this patch, but =
then
we'd have to synthesise something on that leaf for hardware that doesn't ha=
ve
it, which is a lot more annoying.

>
> 4) While there the guest vs host check won't matter, the situation with A=
MX and
> AVX10 leaves imo still wants considering here right away. IOW (taken toge=
ther
> with at least 3) above) I think we need to first settle on a model for
> collectively all max (sub)leaf handling. That in particular needs to prop=
erly
> spell out who's responsible for what (tool stack vs Xen).

I'm not sure I follow. What's the situation with AMX and AVX10 that you ref=
er
to? I'd assume that making ad-hoc decisions on this is pretty much unavoida=
ble,
but maybe the solution to the problem you mention would highlight a more
general approach.

>
> Jan

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:09:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:09:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814887.1228583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZFN-0004TJ-HW; Wed, 09 Oct 2024 16:09:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814887.1228583; Wed, 09 Oct 2024 16:09: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 1syZFN-0004S3-E4; Wed, 09 Oct 2024 16:09:09 +0000
Received: by outflank-mailman (input) for mailman id 814887;
 Wed, 09 Oct 2024 16:09: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=cLPn=RF=flex--ardb.bounces.google.com=3oqoGZwgKCVEtAwu+z1Cz77z4x.v75Gx6-wxEx441BCB.Gx68A72xvC.7Az@srs-se1.protection.inumbo.net>)
 id 1syZFM-0004OJ-I9
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:09:08 +0000
Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com
 [2607:f8b0:4864:20::b4a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cf804ea4-8658-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:09:07 +0200 (CEST)
Received: by mail-yb1-xb4a.google.com with SMTP id
 3f1490d57ef6-e290947f6f8so502951276.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:09:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf804ea4-8658-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20230601; t=1728490146; x=1729094946; darn=lists.xenproject.org;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:from:to:cc:subject:date:message-id:reply-to;
        bh=N4os8DmpWomyhdXT3uIE5sI0/fikMzrPBJolJZzSSPQ=;
        b=NH2bw0GyiHo8F2u7zAqZPmm6MalNs89+wzFZwheEoiSheZiTmq1JZs1hIRpqoCgNXo
         hh2JTmKTsnS3sONIAm7qk/ge8oXwQtb5lbWu7jHdcdp+k13fqeqWf/j9of1lNp2Q1t2g
         HgqD/12w0R8cggrLgP5SBxXpk64ldH1J0Wcq2QTTUEBRa2n/tOF6NgfuBpcVXB3JssmO
         zB1o3f6P5MaVmztPf+Nl+V51ZNxWy4ullm7B6Z0JrtnO3vPfwYStp3TaXHmxnqSU0Gap
         F5G2FaYtKURu5jGQZ1DQ29BJi5x+gcJE/x4A3fZl19cc4gvSUnUot6NkGBxHZwUm3+uV
         CVXQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728490146; x=1729094946;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=N4os8DmpWomyhdXT3uIE5sI0/fikMzrPBJolJZzSSPQ=;
        b=AG+9PNpH8LQwOp+kLulFdf2kxFm3ezlEUXZIc9D+59eVQO504etM1RzC5FpZITXdaq
         0/FUAgwZwNzEXZ8VdHQ2qAYK3avlb61VKchczpx3cDldiuf3pmAWwBmkRJjiwz/G8GtH
         77yph9QKN1nbXy0qZ7LwC94X2lB2GWwztIgfJ2ODdpvQZO9mql6mKG6Cpv8Ufea3awsv
         GoE6b/zN5RnRCIspAabIMvQ1X5E2KMED1C0wwtTBCaNhNvC0EzhsPlpmL09ollZH9bGb
         fgs9DpOglzSm+szixo9HbYfwUxfQsMOIjtN4UY5MDI7h2Ig7KKz6oUkdt+S7dgV3MIH9
         FnvQ==
X-Forwarded-Encrypted: i=1; AJvYcCXXQMjxv4HY3BsJv8AunHnx3hzjIVI2Eo8rMz7QexawKXchNoE3C3KjJB7dYUtWznonONuDCUb0xmk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw8/87DEw7vOJFwizcFZMWl3xkKWVlYkwA3EWDtgBlWSQPzm3Fd
	Xv2QaQNAD5/UxK/37FZLgOlIm5/sXoklihS2Eh06L6a6wCHU2qHO1c0fosPo5SYHzUmLNA==
X-Google-Smtp-Source: AGHT+IFT6IBvqDFvd1nh9Nvp19An6mvh9GEkIy5aq6tG0DxKt0GfrpuME+IFqFwS7fy8QSz4NyDyDfDy
X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:7b:198d:ac11:8138])
 (user=ardb job=sendgmr) by 2002:a25:850d:0:b0:e25:5cb1:77d8 with SMTP id
 3f1490d57ef6-e28fe4edeb1mr2566276.6.1728490146127; Wed, 09 Oct 2024 09:09:06
 -0700 (PDT)
Date: Wed,  9 Oct 2024 18:04:40 +0200
In-Reply-To: <20241009160438.3884381-7-ardb+git@google.com>
Mime-Version: 1.0
References: <20241009160438.3884381-7-ardb+git@google.com>
X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909
X-Developer-Signature: v=1; a=openpgp-sha256; l=1584; i=ardb@kernel.org;
 h=from:subject; bh=iWMVWWds+djQXEXyMG9PXtB+asvAc5L9HBTrJQ9xUI0=;
 b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZ1t5Qzb+5vWNIRfeP0j+K0038QHKYoJW6Ocbk1xPSMu9
 /ZLNUtyRykLgxgHg6yYIovA7L/vdp6eKFXrPEsWZg4rE8gQBi5OAZjIlByGPzxHlDuFHVdUrt/r
 MSct7e16de7eyB6v8DvPj7HsC2gs3MrwT9XpV2I1e25o/5H0axwpbNmz58ruzF5mZerQszMwWMW EFwA=
X-Mailer: git-send-email 2.47.0.rc0.187.ge670bccf7e-goog
Message-ID: <20241009160438.3884381-8-ardb+git@google.com>
Subject: [PATCH v3 1/5] x86/pvh: Call C code via the kernel virtual mapping
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-kernel@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Jason Andryuk <jason.andryuk@amd.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

From: Ard Biesheuvel <ardb@kernel.org>

Calling C code via a different mapping than it was linked at is
problematic, because the compiler assumes that RIP-relative and absolute
symbol references are interchangeable. GCC in particular may use
RIP-relative per-CPU variable references even when not using -fpic.

So call xen_prepare_pvh() via its kernel virtual mapping on x86_64, so
that those RIP-relative references produce the correct values. This
matches the pre-existing behavior for i386, which also invokes
xen_prepare_pvh() via the kernel virtual mapping before invoking
startup_32 with paging disabled again.

Fixes: 7243b93345f7 ("xen/pvh: Bootstrap PVH guest")
Tested-by: Jason Andryuk <jason.andryuk@amd.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/x86/platform/pvh/head.S | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
index 64fca49cd88f..ce4fd8d33da4 100644
--- a/arch/x86/platform/pvh/head.S
+++ b/arch/x86/platform/pvh/head.S
@@ -172,7 +172,14 @@ SYM_CODE_START_LOCAL(pvh_start_xen)
 	movq %rbp, %rbx
 	subq $_pa(pvh_start_xen), %rbx
 	movq %rbx, phys_base(%rip)
-	call xen_prepare_pvh
+
+	/* Call xen_prepare_pvh() via the kernel virtual mapping */
+	leaq xen_prepare_pvh(%rip), %rax
+	subq phys_base(%rip), %rax
+	addq $__START_KERNEL_map, %rax
+	ANNOTATE_RETPOLINE_SAFE
+	call *%rax
+
 	/*
 	 * Clear phys_base.  __startup_64 will *add* to its value,
 	 * so reset to 0.
-- 
2.47.0.rc0.187.ge670bccf7e-goog



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:09:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:09:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814889.1228608 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZFR-000599-W4; Wed, 09 Oct 2024 16:09:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814889.1228608; Wed, 09 Oct 2024 16:09: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 1syZFR-00058w-Ru; Wed, 09 Oct 2024 16:09:13 +0000
Received: by outflank-mailman (input) for mailman id 814889;
 Wed, 09 Oct 2024 16:09: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=VGrO=RF=flex--ardb.bounces.google.com=3pqoGZwgKCVUxE0y+35G3BB381.zB9K1A-01I1885FGF.K1ACEB61zG.BE3@srs-se1.protection.inumbo.net>)
 id 1syZFQ-0004OJ-Cm
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:09:12 +0000
Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com
 [2607:f8b0:4864:20::114a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d2196a80-8658-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:09:11 +0200 (CEST)
Received: by mail-yw1-x114a.google.com with SMTP id
 00721157ae682-6e2acec0109so232117b3.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:09:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2196a80-8658-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20230601; t=1728490150; x=1729094950; darn=lists.xenproject.org;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:from:to:cc:subject:date:message-id:reply-to;
        bh=J4+JRDfPTu3i9TGQoGrO88TmpFKth6/64PHl7TNFJEg=;
        b=krK6VjALPBBPhvit/RNtUFSPAIbU+i2L4Q5mT6N5+18rs95hsRWvOsBFSuZYOFuVgy
         SgpV7Q/QxPbBWNKA3+j1WmUjRGZcrinxb5cteIXrSTUL30EeOBB9zr6O4hGfEBmUI6Qt
         urXxmrV3QMRxE1QxOPWY2y8ft/e1jMkLCs1F7tzbSeKZ7qnND7hrIcpNbnk1e183RIP3
         wbyvV1KWCWQoURzxWVOuUdzLpxkOYcyp0Ix70rX+/gOYVStEB2lTBReh1luVi9akUspD
         5fiB/dZ+/ayx76/AvIirO/N3R7/+ivf3aJxrs5l0cwviQrveohffgf3cyUUFYN/1uQ6/
         629Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728490150; x=1729094950;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=J4+JRDfPTu3i9TGQoGrO88TmpFKth6/64PHl7TNFJEg=;
        b=KxczNzekl/niyvUXnAYfHcWPfONi3h6rFM0XAbDQA/athSFgJBAY32CiLliR7ZBoL2
         cRHpV5a3cnIR5kxVrqnlwuZBCGXDxbTtTrMcKCxs8fmOjkJmeKTlzo/pUCy5LHbd6YNU
         u12WT1V1KBUHBOrf40ZQVif6zPftfX0OVxL1XfunLfo3T5v3j9Q/Bp17hyotRUgIkqrx
         LpdK0RmH2i3i9ltVAI1F5/jZa8IPvDDzXMUg1f/EU8QrlJ0ZOBneRXentpXcqZ6FSYpH
         feYY7ckVnJBE/1H1miR6yQ/BdszZhJioxVbovxF5a1dqM0eauNWVnMIgzIw5rL3kGv4Y
         O6Jg==
X-Forwarded-Encrypted: i=1; AJvYcCW16LYUShDNHOzqtlGFuxli45POor3gcYrgajVjehWcHmc7UiitPj796fC9pxBVDyubwzQdosSnCTY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx7lu0hNDKVawW69jNVCy8bnBPhGGAJuXgOGdb3tCusK8/jtXG6
	MkRnuBPxB3X78FGD0mqRTUiMBXrFihMx6afIldjZyBN5GNFxODK42BIsenBbDzE7jW/ZEA==
X-Google-Smtp-Source: AGHT+IHh/v1gqKUGM1BBNWYUx+HRB+/b48NbVa7MzzwrUC5bvv7YGG3nH+h3kZviumtVaikoqrrnQUYJ
X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:7b:198d:ac11:8138])
 (user=ardb job=sendgmr) by 2002:a05:690c:6206:b0:6dd:fda3:6568 with SMTP id
 00721157ae682-6e322466d9cmr656517b3.3.1728490150649; Wed, 09 Oct 2024
 09:09:10 -0700 (PDT)
Date: Wed,  9 Oct 2024 18:04:42 +0200
In-Reply-To: <20241009160438.3884381-7-ardb+git@google.com>
Mime-Version: 1.0
References: <20241009160438.3884381-7-ardb+git@google.com>
X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909
X-Developer-Signature: v=1; a=openpgp-sha256; l=1010; i=ardb@kernel.org;
 h=from:subject; bh=+Q7W1GiOJkPeWPDKOBo9uqagjD9LHIgeoC2Mxh5XnwY=;
 b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZ1t5Wzjs1ffPY46eO1bpusehTCZdacXZnoeNXOLyWxmX
 DlH7szhjlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjCRbdaMDEdb5ytZOn3ZKLTX
 pfp7dSXXttVy8e9+vy+Nfj5V1CyCNYrhv6uByoSdnzjS98bXX9fpSBD+LWc9+VSxb4XCOdMJ2zc 7cQAA
X-Mailer: git-send-email 2.47.0.rc0.187.ge670bccf7e-goog
Message-ID: <20241009160438.3884381-10-ardb+git@google.com>
Subject: [PATCH v3 3/5] x86/pvh: Omit needless clearing of phys_base
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-kernel@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Jason Andryuk <jason.andryuk@amd.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

From: Ard Biesheuvel <ardb@kernel.org>

Since commit

  d9ec1158056b ("x86/boot/64: Use RIP_REL_REF() to assign 'phys_base'")

phys_base is assigned directly rather than added to, so it is no longer
necessary to clear it after use.

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Tested-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/x86/platform/pvh/head.S | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
index 5a196fb3ebd8..7ca51a4da217 100644
--- a/arch/x86/platform/pvh/head.S
+++ b/arch/x86/platform/pvh/head.S
@@ -180,13 +180,6 @@ SYM_CODE_START_LOCAL(pvh_start_xen)
 	ANNOTATE_RETPOLINE_SAFE
 	call *%rax
 
-	/*
-	 * Clear phys_base.  __startup_64 will *add* to its value,
-	 * so reset to 0.
-	 */
-	xor  %rbx, %rbx
-	movq %rbx, phys_base(%rip)
-
 	/* startup_64 expects boot_params in %rsi. */
 	lea pvh_bootparams(%rip), %rsi
 	jmp startup_64
-- 
2.47.0.rc0.187.ge670bccf7e-goog



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:09:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:09:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814886.1228577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZFN-0004OW-4k; Wed, 09 Oct 2024 16:09:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814886.1228577; Wed, 09 Oct 2024 16:09: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 1syZFN-0004OP-2E; Wed, 09 Oct 2024 16:09:09 +0000
Received: by outflank-mailman (input) for mailman id 814886;
 Wed, 09 Oct 2024 16: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=4orL=RF=flex--ardb.bounces.google.com=3n6oGZwgKCU4q7tr+wy9w44w1u.s42Du3-tuBu11y898.Du3574zus9.47w@srs-se1.protection.inumbo.net>)
 id 1syZFL-0004OD-4w
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:09:07 +0000
Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com
 [2607:f8b0:4864:20::b4a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ce26bb22-8658-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 18:09:05 +0200 (CEST)
Received: by mail-yb1-xb4a.google.com with SMTP id
 3f1490d57ef6-e290a9a294fso240842276.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:09:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ce26bb22-8658-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20230601; t=1728490144; x=1729094944; darn=lists.xenproject.org;
        h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject
         :date:message-id:reply-to;
        bh=ihUuPfSAQAcR0+bkMhCvtEzjM7mpMFX5i7pmWzbSWjc=;
        b=R1yml1W4LXWWKpIYXbi9WRPtkxtqfISXdLfk9pNL/NSGLz7LUtm5QjQr2Dp8K0uiFu
         WfxfIHr8Ho85GKkVc9jwVwDN7amEbIEUXHzlkDGbAQuGu3NJp+3ddnznEkBkeufFqaYV
         LlJrCsjAMTVTQCE0Mww7GB7tXr4GTB06t5wOzv+6x+HLmV5u2uY8NAhaVqG9+iIav1+F
         AxjHkiMmftvKF6rxV0ZpwJxhIFq3Pbk6TaIE//b6tFWanuh4gZXZ1CUD73uVDcwfVkoD
         sNTXgLTtBoi3hdPVdavUJknYSHkcMCZm5CDx9E7V4DHnbaN0BtEYRF6agpga6nnAg590
         mAFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728490144; x=1729094944;
        h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ihUuPfSAQAcR0+bkMhCvtEzjM7mpMFX5i7pmWzbSWjc=;
        b=N+A3NkKGaHdpxQ5EOtkr7XfQckfo4/07p56FTVwaYMUOI1B3pXR5maIDiPkwpX/l3G
         QRjL++5XvylBrOdxeTQfoopgf/i8A4daRA04rlfk8O1kzEtPO2vkjsdM9TC6rJkbsg6V
         +hNkj0295yPzoBC9R6uMdX7EEA0De4kofOrEv4B0GgVPv+6MtPtwxS1VjnwgzjmjlbTr
         XA1eNZLIhKjAcw85nC/cJE9mmIoWwwpvRQtq92hb+Hwh0sSs9X1F+w+t7SUluXzR1uke
         AQOlSO5zyFPVOs7C0nas/zX+xxSZoTrle5n6IH3u7U9RkvGBl0od59NAL4iynQL07xcq
         2ZzQ==
X-Forwarded-Encrypted: i=1; AJvYcCUy5Xz5z6YT0QGQrVFTtOimU7ASsRhP9QkksviA/E3ZHsUiitWwbZUnFjdYn08H7p+kgfEyv6AUp04=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw+zdbwcOEC4YdGro9aiVBBmcX8lE0dRGkqsDhodVQ3UgP8CuGU
	ryZ0w/ysWEqZ55yiWVQHfiqVnx7hlVgYzLVYEwFfVyqH9LztjJstS26CZq3Cwi3ZE1WGTQ==
X-Google-Smtp-Source: AGHT+IEIxpbQfQQkvY9ZXHbacw3miId8a+O5WNpa3HE+ve/Un0kg4t6qYCHSzqoicfWVZn+irr7o5Cut
X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:7b:198d:ac11:8138])
 (user=ardb job=sendgmr) by 2002:a25:9105:0:b0:e20:25f5:a889 with SMTP id
 3f1490d57ef6-e28fe4a5550mr2103276.5.1728490143922; Wed, 09 Oct 2024 09:09:03
 -0700 (PDT)
Date: Wed,  9 Oct 2024 18:04:39 +0200
Mime-Version: 1.0
X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909
X-Developer-Signature: v=1; a=openpgp-sha256; l=4871; i=ardb@kernel.org;
 h=from:subject; bh=tMu7HK8XnBJOEjLli1NIwyalC9VG3W6HEH9wUQOYTH0=;
 b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZ1t5XS+J7quVVZTrJ7cil4T81dtaszZE44H8pKZf3C/Z
 bxXv3RXRykLgxgHg6yYIovA7L/vdp6eKFXrPEsWZg4rE8gQBi5OAZjI3U6GPzwNvgynJjYJJMWH
 J1Qs27DUwe/Peq7CJalLHxTEXs3uZmFk+CeY0/xMVeYARzhPfu7DSw/9vxl//PmwcamGgcn3C4p aDAA=
X-Mailer: git-send-email 2.47.0.rc0.187.ge670bccf7e-goog
Message-ID: <20241009160438.3884381-7-ardb+git@google.com>
Subject: [PATCH v3 0/5] x86/xen: Drop absolute references from startup code
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-kernel@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Jason Andryuk <jason.andryuk@amd.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

From: Ard Biesheuvel <ardb@kernel.org>

This series was broken out of the series I sent recently [0], after
Jason pointed out that my Xen startup code changes conflict with his
changes to make the PVH startup code position independent.

Jason's work reduces the delta of my changes, and given that my other
series will likely advance at a much slower pace, the Xen changes are
presented here so they can be merged independently.

The end result after applying this series (see below) is that there are
no longer any Xen-related absolute relocations that need to be applied
to .head.text, a section which carries code that may be invoked from the
1:1 mapping of memory before the kernel virtual mapping is up.  The use
of absolute references in this code section has resulted in a few boot
issues that were very hard to track down (Clang built kernels running
under SEV-SNP in particular, which does not provide the best debug
experience).

Even though the occurrences in the Xen startup code were fine, there is
now a lot of C code emitted into .head.text as well, and so it would be
helpful to teach objtool to reject absolute references entirely in this
section (or rely on the linker for that). Therefore, not relying on them
in the first place is a step towards that goal.

Changes since v2 [2]:
- add Jason's Tested-by to patch #4
- use a better name for the linker defined symbols used in the ELF notes
  (patch #4)
- add a comment in the linker script explaining why the symbol values
  are constructed in the way they are
- rebase onto v6.12-rc2

Changes since v1 [1]:
- add Jason's Rb to patches #2, #3 and #5
- drop the use of a 32-bit field for the ELF note- QEMU reads a u64 and
  so the top word needs to remain 0x0
- tweak #ifdefs in patch #4 so the hypercall_page linker symbol does not
  depend on CONFIG_XEN_PV
- rebase onto v6.12-rc1

Changes wrt [0]:
- add Jason's Rb to patch #1
- rebase onto xen/tip's linux-next branch
- split out fix for GDT descriptor size field
- add patch to remove the zeroing of phys_base, which is no longer
  needed
- use a 32-bit field for XEN_ELFNOTE_PHYS32_ENTRY, and use its contents
  to obtain the build time physical address of pvh_startup_xen()

[0] https://lore.kernel.org/all/20240925150059.3955569-30-ardb+git@google.com
[1] https://lore.kernel.org/all/20240926104113.80146-7-ardb+git@google.com/
[2] https://lore.kernel.org/all/20240930071513.909462-7-ardb+git@google.com/

Relocation section '.rela.head.text' at offset 0xb428 contains 15 entries:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
000000000018  000800000002 R_X86_64_PC32     0000000000000000 .init.data + 18
00000000002f  000e00000002 R_X86_64_PC32     0000000000000000 pvh_start_info + 2f
000000000037  000f00000002 R_X86_64_PC32     0000000000000000 pvh_start_info_sz + 37
000000000042  000800000002 R_X86_64_PC32     0000000000000000 .init.data + 4092
000000000060  001000000002 R_X86_64_PC32     000000000000002c xen_elfnote_phys3[...] + 60
000000000068  001100000002 R_X86_64_PC32     0000000000000000 phys_base + 68
00000000006e  001200000002 R_X86_64_PC32     0000000000005000 pvh_init_top_pgt + 6e
000000000089  001300000002 R_X86_64_PC32     0000000000006000 pvh_level3_ident_pgt + 89
000000000091  001400000002 R_X86_64_PC32     0000000000008000 pvh_level3_kernel_pgt + 91
0000000000a3  001500000002 R_X86_64_PC32     0000000000009000 pvh_level2_kernel_pgt + a3
0000000000be  001200000002 R_X86_64_PC32     0000000000005000 pvh_init_top_pgt + be
0000000000de  000800000002 R_X86_64_PC32     0000000000000000 .init.data + 1c
0000000000e9  001600000002 R_X86_64_PC32     0000000000000000 xen_prepare_pvh - 4
0000000000f8  001700000002 R_X86_64_PC32     0000000000000000 pvh_bootparams - 4
0000000000fd  001800000004 R_X86_64_PLT32    0000000000000000 startup_64 - 4

Relocation section '.rela.note.Xen' at offset 0xb668 contains 1 entry:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
00000000002c  001a00000002 R_X86_64_PC32     0000000000000000 xen_elfnote_phys3[...] + 0

Cc: Jason Andryuk <jason.andryuk@amd.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: x86@kernel.org
Cc: xen-devel@lists.xenproject.org

Ard Biesheuvel (5):
  x86/pvh: Call C code via the kernel virtual mapping
  x86/pvh: Use correct size value in GDT descriptor
  x86/pvh: Omit needless clearing of phys_base
  x86/xen: Avoid relocatable quantities in Xen ELF notes
  x86/pvh: Avoid absolute symbol references in .head.text

 arch/x86/kernel/vmlinux.lds.S | 19 ++++++++
 arch/x86/platform/pvh/head.S  | 50 +++++++++++---------
 arch/x86/tools/relocs.c       |  1 +
 arch/x86/xen/xen-head.S       |  6 ++-
 4 files changed, 52 insertions(+), 24 deletions(-)

-- 
2.47.0.rc0.187.ge670bccf7e-goog



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:09:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:09:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814888.1228598 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZFP-0004sc-Nk; Wed, 09 Oct 2024 16:09:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814888.1228598; Wed, 09 Oct 2024 16: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 1syZFP-0004sT-KV; Wed, 09 Oct 2024 16:09:11 +0000
Received: by outflank-mailman (input) for mailman id 814888;
 Wed, 09 Oct 2024 16:09: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=DQvJ=RF=flex--ardb.bounces.google.com=3pKoGZwgKCVMvCyw+13E19916z.x97Iz8-yzGz663DED.Iz8AC94zxE.9C1@srs-se1.protection.inumbo.net>)
 id 1syZFO-0004OJ-36
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:09:10 +0000
Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com
 [2607:f8b0:4864:20::b4a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d0c1a763-8658-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:09:09 +0200 (CEST)
Received: by mail-yb1-xb4a.google.com with SMTP id
 3f1490d57ef6-e28690bc290so10523078276.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:09:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d0c1a763-8658-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20230601; t=1728490148; x=1729094948; darn=lists.xenproject.org;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:from:to:cc:subject:date:message-id:reply-to;
        bh=NGJVSpQBdEJnufx8hCONnOeuil0ovqsMOkm2dztukRI=;
        b=cduC3QBSHUgaM6kX8XYcDNm5UlpCfR4JqoBRYlPOvXboAaGd/0hgHAPualA5BiL1bi
         wTAdO5v/Fgga0GiVwDwoTO1Z/rmPLgDyZK+IPhgydv6vnCYjyxDRLgsZfU0K+ePSJ88s
         mY3HyuKuKXE1ZbzrymApebtny3nBOVvDJoXFlKZ9pzHAUdM1QlvAa8yYbvBlthXIVQ05
         h/+l/Az853NXdoPpimnghTtDf6Gi+RiaVLIfmZcYXC+t8H5SmvzVQXBFXUzqLFnQRNyb
         +7pDJfbVATnnixkBRV5gGR5qpknzc7bb0dBlXMsj427CJniD8LRmrPT+hxckQ9+ExD/C
         NDAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728490148; x=1729094948;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NGJVSpQBdEJnufx8hCONnOeuil0ovqsMOkm2dztukRI=;
        b=QCPbC3pkCYqvuvAP8DUXpbJC6mbWElg5QMsqtGOi7M87fGlnA6yBYg5Slge916O7ah
         s4PrX+8J/6DLwsJvsfWwiysenEhOd7+omTvyZUGq76B4JuUiSwtIeJC8zG6EeYkqqC/5
         B0M8zOv6wl5uCI4q5oUvMIDte179Rh+2hhd98Xv7i6nL2z5QECXkr7kJevFUglBUcFuZ
         QgAIur73aNVS7l6ApoQ9uihrKPOZgntpnUVTEZX8dKOu4CF3d3t2akmkJkM7S7oNvtvi
         T44vy109Xr2O4auYiWZfBy/Yngij6wOjFy0BApAn2nTqsxTNgNHeY0EseJhU0iM6QBNc
         hJjw==
X-Forwarded-Encrypted: i=1; AJvYcCVwaNPafjP269cR1xjdQgTzrN8SYf6wJNsQMr+CBkFDUpqMiRa/jnoF9vtt0/DSCbjbq5vPptZtyK8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyvpjBQaVrfZtnOrC7Y6weaRlCIVfOk235kk9gZLWzfUq79+WzK
	Klf1k9QE3vspNQa0HwiSYu7XvpZOx8OBi2rjlPUA3fHSLzjNGa3wuTGFf0aFG05owz5nRQ==
X-Google-Smtp-Source: AGHT+IGcrpMuY+JUdG2304e6zDFXCrIjHXd1oEUvOKqh9gm+2UjFx6EJkS5NZtUvSSlBsb3U+IRyhrgW
X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:7b:198d:ac11:8138])
 (user=ardb job=sendgmr) by 2002:a5b:b86:0:b0:e0e:8b26:484e with SMTP id
 3f1490d57ef6-e28fe516b5amr2248276.8.1728490148421; Wed, 09 Oct 2024 09:09:08
 -0700 (PDT)
Date: Wed,  9 Oct 2024 18:04:41 +0200
In-Reply-To: <20241009160438.3884381-7-ardb+git@google.com>
Mime-Version: 1.0
References: <20241009160438.3884381-7-ardb+git@google.com>
X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909
X-Developer-Signature: v=1; a=openpgp-sha256; l=870; i=ardb@kernel.org;
 h=from:subject; bh=2aGbXNWak6ut+XUg0ikYbMbWC3UWCn0/S+aA/QUouf0=;
 b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZ1t5azmxVvPswZHXo+eZV99ILxaoHCZkO2ShWG1fzZfj
 dj+ce7DjlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjARy+2MDA/ZrgbNPbtsYlDP
 rOq9G7Q6V597L3Jqq9sCbs3/wpEGh5MYGb78MV6wNolJSO21T0+OoIGEyFzrXQ6zdnhMFmFb/nZ dCgcA
X-Mailer: git-send-email 2.47.0.rc0.187.ge670bccf7e-goog
Message-ID: <20241009160438.3884381-9-ardb+git@google.com>
Subject: [PATCH v3 2/5] x86/pvh: Use correct size value in GDT descriptor
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-kernel@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Jason Andryuk <jason.andryuk@amd.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

From: Ard Biesheuvel <ardb@kernel.org>

The limit field in a GDT descriptor is an inclusive bound, and therefore
one less than the size of the covered range.

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Tested-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/x86/platform/pvh/head.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
index ce4fd8d33da4..5a196fb3ebd8 100644
--- a/arch/x86/platform/pvh/head.S
+++ b/arch/x86/platform/pvh/head.S
@@ -224,7 +224,7 @@ SYM_CODE_END(pvh_start_xen)
 	.section ".init.data","aw"
 	.balign 8
 SYM_DATA_START_LOCAL(gdt)
-	.word gdt_end - gdt_start
+	.word gdt_end - gdt_start - 1
 	.long _pa(gdt_start) /* x86-64 will overwrite if relocated. */
 	.word 0
 SYM_DATA_END(gdt)
-- 
2.47.0.rc0.187.ge670bccf7e-goog



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:09:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:09:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814890.1228618 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZFV-0005Tg-7r; Wed, 09 Oct 2024 16:09:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814890.1228618; Wed, 09 Oct 2024 16:09: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 1syZFV-0005TW-4U; Wed, 09 Oct 2024 16:09:17 +0000
Received: by outflank-mailman (input) for mailman id 814890;
 Wed, 09 Oct 2024 16: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=hEIt=RF=flex--ardb.bounces.google.com=3qaoGZwgKCVg0H31+68J6EE6B4.2ECN4D-34L4BB8IJI.N4DFHE942J.EH6@srs-se1.protection.inumbo.net>)
 id 1syZFT-0004OJ-1A
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:09:15 +0000
Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com
 [2607:f8b0:4864:20::114a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d39c20ff-8658-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:09:14 +0200 (CEST)
Received: by mail-yw1-x114a.google.com with SMTP id
 00721157ae682-6e3231725c9so491607b3.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:09:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d39c20ff-8658-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20230601; t=1728490153; x=1729094953; darn=lists.xenproject.org;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:from:to:cc:subject:date:message-id:reply-to;
        bh=qfTuALibAeUjzZyHnaTNb0n9bb4hHeONDW14sDZ6lQE=;
        b=4drxnG1osMxRlkJ3Jat3MK1sAaqG4B6nRRBqKn2j6TDDTalBgCe8gqt3ckRz+p3x5j
         Qri+2B+oRYDsPCU15htNC4vX+z3DXzY7dhQIRIy8MHQ2nCpwbX2djXNQKcr2DUmDi2F9
         b524GaW8kl6osHjeCLe5rdXwjKm1sTpg0AEV/Ne9rXazjgSLIZVNSgAwhzn2yMF6YeRx
         KtuZg57dV/4ur8Qf2PLBZb7VogMuqjbo9hFKhKR85QtZ/D5l6aabeKjX3qudVVKhDrWf
         vxsDG+AYyKLTlFAxN4Iz4YtL+aZ4ZSfCNhjgJp44e3ixm2SF5I0nk1YP+jlfjfJCCOAD
         p9CA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728490153; x=1729094953;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=qfTuALibAeUjzZyHnaTNb0n9bb4hHeONDW14sDZ6lQE=;
        b=Q9b78d5Nw1CuemH1Wb/LH2gnytKvp33gZQ2bXS7PfFqPlVzsA5eUlhy9ZMwbobXW3j
         iXVHykApnIzPrMONS7HjjmNibjlIewI+/ZFah/TuVX/FYOh/uKj4lB4Unc/yuFgm4jdF
         tWg9+C3/hbzPokTsMIqh7dMlVsC7EgrtI7eMMqo9t5wI9beKqYIq73MlT/MMWt4mWjJm
         6h+qgz+ovgf4BujQz3L64Mjlqhvs+JefarNvXspXYTXUpbBpiyLgYox/8MsViGvMFWRw
         2Y7T3aWva2qRWKzmo6ZkzgMHTSSk+Gicbn/XAB7sDY4C+pyyZvXCeTDduD/QgtV4ur76
         0qZQ==
X-Forwarded-Encrypted: i=1; AJvYcCWitfGKzJwtrYVsHOgo3lcbw50E+bM3viWgHlUEKfz3s1htx2E5RJC/YloSJxhH9+Bf7a8JzgLxDK8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz04OdEk8cO1EnvDE7MhLI2K/kF+RcuK+GNfcLHsAKiaNJSIPRA
	xHLZOAO2UmhynsYX+JqeInCoVAJdMnzq6Fjya3oZWqKxsWyA5O6OVqO/0cii2MPIxnBZqg==
X-Google-Smtp-Source: AGHT+IGSwzDDwa9vfi8McEdFMoR0PLLZMRY7iqvUgt19TSvNHlS6capqTKRHK6X82aIm2RwCa+IhAMD6
X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:7b:198d:ac11:8138])
 (user=ardb job=sendgmr) by 2002:a25:df09:0:b0:e28:fc1c:eb4d with SMTP id
 3f1490d57ef6-e28fe32b721mr58962276.1.1728490153207; Wed, 09 Oct 2024 09:09:13
 -0700 (PDT)
Date: Wed,  9 Oct 2024 18:04:43 +0200
In-Reply-To: <20241009160438.3884381-7-ardb+git@google.com>
Mime-Version: 1.0
References: <20241009160438.3884381-7-ardb+git@google.com>
X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909
X-Developer-Signature: v=1; a=openpgp-sha256; l=4449; i=ardb@kernel.org;
 h=from:subject; bh=AQt8zs3Emx4CUUaeR6x58jNDJibSKr6ifPlMsbVG+cQ=;
 b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZ1t5ZwCb7dpkU8nOf9OFdq2+mPT7Qerpm6yWpi6sTF9c
 YQ2O+P9jlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjCRHfMZ/vA9beh7s984n3lF
 nbt8C5vrhH0L+bUzNWZc2rptzvfbi9Yz/C/2LdZQ9yvoyEoxXnp71/ubzTvKvmpbXurczZbm/Dj kCAcA
X-Mailer: git-send-email 2.47.0.rc0.187.ge670bccf7e-goog
Message-ID: <20241009160438.3884381-11-ardb+git@google.com>
Subject: [PATCH v3 4/5] x86/xen: Avoid relocatable quantities in Xen ELF notes
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-kernel@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Jason Andryuk <jason.andryuk@amd.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

From: Ard Biesheuvel <ardb@kernel.org>

Xen puts virtual and physical addresses into ELF notes that are treated
by the linker as relocatable by default. Doing so is not only pointless,
given that the ELF notes are only intended for consumption by Xen before
the kernel boots. It is also a KASLR leak, given that the kernel's ELF
notes are exposed via the world readable /sys/kernel/notes.

So emit these constants in a way that prevents the linker from marking
them as relocatable. This involves place-relative relocations (which
subtract their own virtual address from the symbol value) and linker
provided absolute symbols that add the address of the place to the
desired value.

Tested-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/x86/kernel/vmlinux.lds.S | 19 +++++++++++++++++++
 arch/x86/platform/pvh/head.S  |  6 +++---
 arch/x86/tools/relocs.c       |  1 +
 arch/x86/xen/xen-head.S       |  6 ++++--
 4 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
index 6726be89b7a6..495f88c9d9f8 100644
--- a/arch/x86/kernel/vmlinux.lds.S
+++ b/arch/x86/kernel/vmlinux.lds.S
@@ -527,3 +527,22 @@ INIT_PER_CPU(irq_stack_backing_store);
 #endif
 
 #endif /* CONFIG_X86_64 */
+
+/*
+ * The symbols below are referenced using relative relocations in the
+ * respective ELF notes. This produces build time constants that the
+ * linker will never mark as relocatable. (Using just ABSOLUTE() is not
+ * sufficient for that).
+ */
+#ifdef CONFIG_XEN
+#ifdef CONFIG_XEN_PV
+xen_elfnote_entry_value =
+	ABSOLUTE(xen_elfnote_entry) + ABSOLUTE(startup_xen);
+#endif
+xen_elfnote_hypercall_page_value =
+	ABSOLUTE(xen_elfnote_hypercall_page) + ABSOLUTE(hypercall_page);
+#endif
+#ifdef CONFIG_PVH
+xen_elfnote_phys32_entry_value =
+	ABSOLUTE(xen_elfnote_phys32_entry) + ABSOLUTE(pvh_start_xen - LOAD_OFFSET);
+#endif
diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
index 7ca51a4da217..e6f39d77f0b4 100644
--- a/arch/x86/platform/pvh/head.S
+++ b/arch/x86/platform/pvh/head.S
@@ -52,7 +52,7 @@
 #define PVH_CS_SEL		(PVH_GDT_ENTRY_CS * 8)
 #define PVH_DS_SEL		(PVH_GDT_ENTRY_DS * 8)
 
-SYM_CODE_START_LOCAL(pvh_start_xen)
+SYM_CODE_START(pvh_start_xen)
 	UNWIND_HINT_END_OF_STACK
 	cld
 
@@ -300,5 +300,5 @@ SYM_DATA_END(pvh_level2_kernel_pgt)
 		     .long KERNEL_IMAGE_SIZE - 1)
 #endif
 
-	ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY,
-	             _ASM_PTR (pvh_start_xen - __START_KERNEL_map))
+	ELFNOTE(Xen, XEN_ELFNOTE_PHYS32_ENTRY, .global xen_elfnote_phys32_entry;
+		xen_elfnote_phys32_entry: _ASM_PTR xen_elfnote_phys32_entry_value - .)
diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c
index c101bed61940..3ede19ca8432 100644
--- a/arch/x86/tools/relocs.c
+++ b/arch/x86/tools/relocs.c
@@ -56,6 +56,7 @@ static const char * const	sym_regex_kernel[S_NSYMTYPES] = {
 	[S_ABS] =
 	"^(xen_irq_disable_direct_reloc$|"
 	"xen_save_fl_direct_reloc$|"
+	"xen_elfnote_.+_offset$|"
 	"VDSO|"
 	"__kcfi_typeid_|"
 	"__crc_)",
diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
index 758bcd47b72d..7f6c69dbb816 100644
--- a/arch/x86/xen/xen-head.S
+++ b/arch/x86/xen/xen-head.S
@@ -94,7 +94,8 @@ SYM_CODE_END(xen_cpu_bringup_again)
 	ELFNOTE(Xen, XEN_ELFNOTE_VIRT_BASE,      _ASM_PTR __START_KERNEL_map)
 	/* Map the p2m table to a 512GB-aligned user address. */
 	ELFNOTE(Xen, XEN_ELFNOTE_INIT_P2M,       .quad (PUD_SIZE * PTRS_PER_PUD))
-	ELFNOTE(Xen, XEN_ELFNOTE_ENTRY,          _ASM_PTR startup_xen)
+	ELFNOTE(Xen, XEN_ELFNOTE_ENTRY,          .globl xen_elfnote_entry;
+		xen_elfnote_entry: _ASM_PTR xen_elfnote_entry_value - .)
 	ELFNOTE(Xen, XEN_ELFNOTE_FEATURES,       .ascii "!writable_page_tables")
 	ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE,       .asciz "yes")
 	ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID,
@@ -115,7 +116,8 @@ SYM_CODE_END(xen_cpu_bringup_again)
 #else
 # define FEATURES_DOM0 0
 #endif
-	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, _ASM_PTR hypercall_page)
+	ELFNOTE(Xen, XEN_ELFNOTE_HYPERCALL_PAGE, .globl xen_elfnote_hypercall_page;
+		xen_elfnote_hypercall_page: _ASM_PTR xen_elfnote_hypercall_page_value - .)
 	ELFNOTE(Xen, XEN_ELFNOTE_SUPPORTED_FEATURES,
 		.long FEATURES_PV | FEATURES_PVH | FEATURES_DOM0)
 	ELFNOTE(Xen, XEN_ELFNOTE_LOADER,         .asciz "generic")
-- 
2.47.0.rc0.187.ge670bccf7e-goog



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:09:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:09:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814891.1228624 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZFV-0005Xn-Kx; Wed, 09 Oct 2024 16:09:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814891.1228624; Wed, 09 Oct 2024 16:09: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 1syZFV-0005WI-EM; Wed, 09 Oct 2024 16:09:17 +0000
Received: by outflank-mailman (input) for mailman id 814891;
 Wed, 09 Oct 2024 16:09: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=EuLI=RF=flex--ardb.bounces.google.com=3q6oGZwgKCVo2J53+8AL8GG8D6.4GEP6F-56N6DDAKLK.P6FHJGB64L.GJ8@srs-se1.protection.inumbo.net>)
 id 1syZFV-0004OJ-11
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:09:17 +0000
Received: from mail-wm1-x34a.google.com (mail-wm1-x34a.google.com
 [2a00:1450:4864:20::34a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d50a3166-8658-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:09:16 +0200 (CEST)
Received: by mail-wm1-x34a.google.com with SMTP id
 5b1f17b1804b1-4311412e042so3823525e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:09:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d50a3166-8658-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=google.com; s=20230601; t=1728490156; x=1729094956; darn=lists.xenproject.org;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:from:to:cc:subject:date:message-id:reply-to;
        bh=HupRAXXBqO2c8knr9kCujOHZqjOYFZu7/+ot2dyBYgU=;
        b=04A3D0bNyaFC+Qrueo/Mhjc7Vo2/Pv9J6mrrYjX3/5SUd9wh2typobO32bibuoTogG
         t3T+396EWYiqUcopWL/4mwdUfSwt9bgWZtsR6baOJaHOVgPFO4xogIl8wJAn/lGtPhC1
         Os52S9kubnvX3fYb41HdyOBP8EvBpP/lrQq6K0SIyE7IqcYhGMd7dSGPtJ+N4DhFu51B
         93Ro/6l3jj3sH7zDZRTEpa9swMNzx0HbKBsfy/ZYJCbtmOtWk4l3vAyvuCa2nvRil8S5
         MPN7EO3jfm56HD+IKzKlG2IQzv49ALYAQUqZv9Zil7RzYiSEO9VniPGsRUhUmFPHGR6c
         lAxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728490156; x=1729094956;
        h=cc:to:from:subject:message-id:references:mime-version:in-reply-to
         :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HupRAXXBqO2c8knr9kCujOHZqjOYFZu7/+ot2dyBYgU=;
        b=VjQQ9S8eLccSBAt8pFNOEs1kZHCkHV7FU86ncwBLDvym0XHOo5rriqTTI8Ef6o5BKb
         4MAW0SwgWlvJTup99WWKeX3XqF+//p2kS2EJMrSsDsLS+JrjCRzGeDjUcIXhBG30uRNT
         C2t+tuo7BQIJa///it1aTp+nTYTLB7g4dNEtTCbvYa2Xzqty/CJCbBYAxyBndEdWHmJS
         7RVinfWnk+n3c5Th9UIYXNSbzr1dAhmLHPxZexzZdnNzwVo4hJfKxv0rpxXosrH6ExoG
         sD+qeSKefZbM86LVzzdUBiXFGHGXhVTzb3D4W9sc4ChiG5OM/WouIUtFVH+V38VxmeSj
         q16A==
X-Forwarded-Encrypted: i=1; AJvYcCVaYZz7dOF6WNw2OkTdwJxXsX12MMLU5RfbJdhi7BiMLaIDm/p/AdYL3icB8arTXFumOeGy4G74uno=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxHxoUBztzcjSuWf6k9uXHHGNtxHVJaXRwlRTFvD1Km4y/PPiII
	JPsmktcsl0Od51XpbGCd2Z3gavXZ9evQfc5LBwG5buBixcBdn1zwdXFescLyiZHeJoyybw==
X-Google-Smtp-Source: AGHT+IF0eoXWAHq3au8yX0LdvnbgYQERBk447P9771B7f8cbOEk+/t/HPey2CQbVWfl9cygw+xLeM33/
X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:7b:198d:ac11:8138])
 (user=ardb job=sendgmr) by 2002:a05:600c:331b:b0:426:67e0:3b2 with SMTP id
 5b1f17b1804b1-430ccefabddmr20795e9.1.1728490155371; Wed, 09 Oct 2024 09:09:15
 -0700 (PDT)
Date: Wed,  9 Oct 2024 18:04:44 +0200
In-Reply-To: <20241009160438.3884381-7-ardb+git@google.com>
Mime-Version: 1.0
References: <20241009160438.3884381-7-ardb+git@google.com>
X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909
X-Developer-Signature: v=1; a=openpgp-sha256; l=3518; i=ardb@kernel.org;
 h=from:subject; bh=6GoieogoUAEj17Av6HLsT2CSmywAr8csNjqtL7xNpKA=;
 b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZ1t5TzXWXXdV5/qr9v97+vxsDkHP999MSFXzvk3C9cBl
 rO2X9o8O0pZGMQ4GGTFFFkEZv99t/P0RKla51myMHNYmUCGMHBxCsBEZl1iZHghPLHULP3cMp+6
 cz9NT5ow3TPcfrzua0qmU4Dg27SDJ48z/E84sEs74ejfB2lTLTI6z0zttAue3telfDGjOslWYfl nez4A
X-Mailer: git-send-email 2.47.0.rc0.187.ge670bccf7e-goog
Message-ID: <20241009160438.3884381-12-ardb+git@google.com>
Subject: [PATCH v3 5/5] x86/pvh: Avoid absolute symbol references in .head.text
From: Ard Biesheuvel <ardb+git@google.com>
To: linux-kernel@vger.kernel.org
Cc: Ard Biesheuvel <ardb@kernel.org>, Jason Andryuk <jason.andryuk@amd.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

From: Ard Biesheuvel <ardb@kernel.org>

The .head.text section contains code that may execute from a different
address than it was linked at. This is fragile, given that the x86 ABI
can refer to global symbols via absolute or relative references, and the
toolchain assumes that these are interchangeable, which they are not in
this particular case.

For this reason, all absolute symbol references are being removed from
code that is emitted into .head.text. Subsequently, build time
validation may be added that ensures that no absolute ELF relocations
exist at all in that ELF section.

In the case of the PVH code, the absolute references are in 32-bit code,
which gets emitted with R_X86_64_32 relocations, and these are even more
problematic going forward, as it prevents running the linker in PIE
mode.

So update the 64-bit code to avoid _pa(), and to only rely on relative
symbol references: these are always 32-bits wide, even in 64-bit code,
and are resolved by the linker at build time.

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Tested-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
---
 arch/x86/platform/pvh/head.S | 30 ++++++++++++--------
 1 file changed, 18 insertions(+), 12 deletions(-)

diff --git a/arch/x86/platform/pvh/head.S b/arch/x86/platform/pvh/head.S
index e6f39d77f0b4..4733a5f467b8 100644
--- a/arch/x86/platform/pvh/head.S
+++ b/arch/x86/platform/pvh/head.S
@@ -6,7 +6,9 @@
 
 	.code32
 	.text
+#ifdef CONFIG_X86_32
 #define _pa(x)          ((x) - __START_KERNEL_map)
+#endif
 #define rva(x)          ((x) - pvh_start_xen)
 
 #include <linux/elfnote.h>
@@ -72,8 +74,7 @@ SYM_CODE_START(pvh_start_xen)
 	movl $0, %esp
 
 	leal rva(gdt)(%ebp), %eax
-	leal rva(gdt_start)(%ebp), %ecx
-	movl %ecx, 2(%eax)
+	addl %eax, 2(%eax)
 	lgdt (%eax)
 
 	mov $PVH_DS_SEL,%eax
@@ -103,10 +104,23 @@ SYM_CODE_START(pvh_start_xen)
 	btsl $_EFER_LME, %eax
 	wrmsr
 
+	/*
+	 * Reuse the non-relocatable symbol emitted for the ELF note to
+	 * subtract the build time physical address of pvh_start_xen() from
+	 * its actual runtime address, without relying on absolute 32-bit ELF
+	 * relocations, as these are not supported by the linker when running
+	 * in -pie mode, and should be avoided in .head.text in general.
+	 */
 	mov %ebp, %ebx
-	subl $_pa(pvh_start_xen), %ebx /* offset */
+	subl rva(xen_elfnote_phys32_entry)(%ebp), %ebx
 	jz .Lpagetable_done
 
+	/*
+	 * Store the resulting load offset in phys_base.  __pa() needs
+	 * phys_base set to calculate the hypercall page in xen_pvh_init().
+	 */
+	movl %ebx, rva(phys_base)(%ebp)
+
 	/* Fixup page-tables for relocation. */
 	leal rva(pvh_init_top_pgt)(%ebp), %edi
 	movl $PTRS_PER_PGD, %ecx
@@ -165,14 +179,6 @@ SYM_CODE_START(pvh_start_xen)
 	xor %edx, %edx
 	wrmsr
 
-	/*
-	 * Calculate load offset and store in phys_base.  __pa() needs
-	 * phys_base set to calculate the hypercall page in xen_pvh_init().
-	 */
-	movq %rbp, %rbx
-	subq $_pa(pvh_start_xen), %rbx
-	movq %rbx, phys_base(%rip)
-
 	/* Call xen_prepare_pvh() via the kernel virtual mapping */
 	leaq xen_prepare_pvh(%rip), %rax
 	subq phys_base(%rip), %rax
@@ -218,7 +224,7 @@ SYM_CODE_END(pvh_start_xen)
 	.balign 8
 SYM_DATA_START_LOCAL(gdt)
 	.word gdt_end - gdt_start - 1
-	.long _pa(gdt_start) /* x86-64 will overwrite if relocated. */
+	.long gdt_start - gdt
 	.word 0
 SYM_DATA_END(gdt)
 SYM_DATA_START_LOCAL(gdt_start)
-- 
2.47.0.rc0.187.ge670bccf7e-goog



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:11:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:11:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814914.1228638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZHf-0000qO-5S; Wed, 09 Oct 2024 16:11:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814914.1228638; Wed, 09 Oct 2024 16: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 1syZHf-0000qH-28; Wed, 09 Oct 2024 16:11:31 +0000
Received: by outflank-mailman (input) for mailman id 814914;
 Wed, 09 Oct 2024 16:11: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syZHd-0000q3-RN
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:11:29 +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 2426ec23-8659-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:11:28 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2fad784e304so84405401fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:11:28 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c92a6e0379sm519061a12.22.2024.10.09.09.11.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 09:11:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2426ec23-8659-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728490288; x=1729095088; darn=lists.xenproject.org;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ubmokswzw3dA3itKMs9BPh/4j+oQdP2zGQboE16V99E=;
        b=NiHl64t82XpQaUppe+vDoRTzfPcwW+KaIKLwRSPwKdAg+VeOrQ10XhtLGzzB6FHuZk
         k8AsLcOU0AgYMOjnRKPszW1YPbnYLEw8QI5Np+RcGzDeYuYe0qbDzQ1JChkSJsq08E70
         VLvt9Rhgmx0M4/82F4jIEfZcm7vJlRxruZsBg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728490288; x=1729095088;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=ubmokswzw3dA3itKMs9BPh/4j+oQdP2zGQboE16V99E=;
        b=it4G478zmGUrQjtItVpVOPLDjcQWwR0+F9/BUeQnkEYj4e29C25Qt7DQy4LL37I3l0
         Br0MJ4DrtfcGD6Pf1RFYcmQorGqSImtPQuwzjCkuDKBb5EPvaCepRQGEzaNyIHTWLQ2w
         8bW4sPVZqx79JpoX26FY1hHXczRA3LNEVGvTSiTIjUyQD4wDrvY3VC4htgqT0s1dG2/W
         T4bDeWPeafBR//HLyXEmLp9s1V+bmOmfe0V2BqHyqeT6CvLIXCNegS0+xfzp7wgav10Y
         7mP+PRsy/ldySg+URx0GqwjQQvTJmz2QAcZPKVsDTe2iwR54TQVcuwXbLh6zbgFYPh36
         GiQA==
X-Forwarded-Encrypted: i=1; AJvYcCVgFOJ+4UGCy2c7eHc2UVtuMCGjSKtPpJS3gsMJt9JzdXlTXIjb16T8R24qatIobtVemYkU/+g3g24=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzuDfOAjJDnO5K0/HTUC5Z8e0LiVyXaXBAyANEWdbca/uanR07t
	kCGfQ0ZYBQYu/ICvVtNs65gUcYJ4PDAAVrmdsM5aSB7UbofQfKlmqiylPfOnApw=
X-Google-Smtp-Source: AGHT+IHTP1dkIwtpBDTdhlgLi7UD3PUlBmOkOYMKtxY3DJ01Zrqcky3ER74VL70AtDyl+EispObAhw==
X-Received: by 2002:a05:651c:507:b0:2fa:d772:1009 with SMTP id 38308e7fff4ca-2fb187ac497mr18522011fa.34.1728490288295;
        Wed, 09 Oct 2024 09:11:28 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 17:11:26 +0100
Message-Id: <D4REO3LZALWB.1665UG1GOFHEA@cloud.com>
Subject: Re: [PATCH v6 02/11] x86/vlapic: Move lapic migration checks to the
 check hooks
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-3-alejandro.vallejo@cloud.com>
 <40034a00-6f1d-4a39-9f00-2daa671a13d1@suse.com>
In-Reply-To: <40034a00-6f1d-4a39-9f00-2daa671a13d1@suse.com>

On Tue Oct 8, 2024 at 4:41 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:37, Alejandro Vallejo wrote:
> > While doing this, factor out checks common to architectural and hidden
> > state.
> >=20
> > Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> > Reviewed-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> > --
> > Last reviewed in the topology series v3. Fell under the cracks.
> >=20
> >   https://lore.kernel.org/xen-devel/ZlhP11Vvk6c1Ix36@macbook/
>
> It's not the 1st patch in the series, and I can't spot anywhere that it i=
s
> made clear that this one can go in ahead of patch 1. I may have overlooke=
d
> something in the long-ish cover letter.
>
> Jan

Patch 1 is independent of almost everything. It merely needs to go in befor=
e
the final patch to avoid turning it into a bugfix. I put it on front under =
the
expectation that it wouldn't be very contentious. In retrospect, this one o=
ught
to have taken its place, indeed.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:29:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:29:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814941.1228648 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZYq-0000WS-IS; Wed, 09 Oct 2024 16:29:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814941.1228648; Wed, 09 Oct 2024 16:29: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 1syZYq-0000WL-Ff; Wed, 09 Oct 2024 16:29:16 +0000
Received: by outflank-mailman (input) for mailman id 814941;
 Wed, 09 Oct 2024 16: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syZYo-0000WF-Nt
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:29:14 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9d54490e-865b-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:29:12 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728491345789410.4241872235532;
 Wed, 9 Oct 2024 09:29:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d54490e-865b-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728491348; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=gE7n3yYYkp6jbMJorJ7rq/JMAaCIrQ1pPEu9O9z0W+h5t9MdkFd16c+yufisVHsaBQ7k30AX4Dz87iVd8ZdeSHjdAkhY+6Zz5jtQmmF6x5vZRW19CO9o+A2pAZ7U+Mwry3Y7ykUMTEwpHopG1xfooMs+Wv0gIObUib/GADqRDiQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728491348; 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=+2gPMiHS+vA4QE7GFs3r3BlXAMXgDCVwZrO265d0nZc=; 
	b=gyDZLQT3cVc9MW9dv0Qbn2b9e+ebFTYCuCCEEgo7HfUGYylbZ2X1fZ9F5RFMTNL4u69hzR5pZ2DVP7PgBySW+sxywfo3cVh1W/FpfCxPDci6HxEyB+d4r2qsz8GwIxkCF0Njo8eUFSEbul+rW2pm6morgMb0wsLRnFbRO+41fV8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728491347;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=+2gPMiHS+vA4QE7GFs3r3BlXAMXgDCVwZrO265d0nZc=;
	b=NLgs+MxZKvc7XLUHsHmAMSGJrJbu7Md2zHWwBNNHeehp/AxCUj5i4sHp1vLS//bU
	eb4fnbzUvzsSReA0IeyLOaxXnUr7LNBjmt12b8IZ78p5CAJQp6UbhCCPeTKklMWZ4qU
	yyHPIEnSNkBdvUhC6Pk0TDLExelFvmjgRIP7bhqQ=
Message-ID: <c5cf3f96-c2fb-44da-be7c-cdd9f7e3bf44@apertussolutions.com>
Date: Wed, 9 Oct 2024 12:29:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 19/44] x86/boot: use consumed boot module flag for
 microcode
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-20-dpsmith@apertussolutions.com>
 <f2711741-5e05-4ad4-af33-6df18b09fb1e@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <f2711741-5e05-4ad4-af33-6df18b09fb1e@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 11:56, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> To track if the microcode boot module was loaded, a copy of the boot 
>> module is
>> kept. The size element of this copy is set to zero as the indicator 
>> that the
>> microcode was loaded. A side effect is that the modules have to be 
>> rescanned to
>> find the boot module post-relocation, so the cache copy can be created.
>>
>> Use the consumed boot module flag to track the loading of the 
>> microcode boot
>> module. This removes the need to manipulate the boot module size 
>> element, no
>> longer requiring the copy, thus allowing it to be replaced by a 
>> reference. As a
>> result it is no longer necessary to rescan the boot modules after 
>> relocation
>> has occurred.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/cpu/microcode/core.c | 28 ++++++++++++++--------------
>>   1 file changed, 14 insertions(+), 14 deletions(-)
>>
>> diff --git a/xen/arch/x86/cpu/microcode/core.c 
>> b/xen/arch/x86/cpu/microcode/core.c
>> index 7bcc17e0ab2f..5b42aad2fdd0 100644
>> --- a/xen/arch/x86/cpu/microcode/core.c
>> +++ b/xen/arch/x86/cpu/microcode/core.c
> 
>> @@ -826,14 +826,14 @@ int __init microcode_init_cache(
>>       if ( !ucode_ops.apply_microcode )
>>           return -ENODEV;
>> -    if ( ucode_scan )
>> -        /* Need to rescan the modules because they might have been 
>> relocated */
>> +    /* Scan if microcode was not detected earlier */
>> +    if ( !ucode_mod )
> 
> ucode_scan is a user-controlled variable (ucode=scan=$bool), so I think 
> it still needs to be respected.

The ucode_scan was introduced due to the complex situation attempting to 
be addressed. The microcode needs to be loaded earlier before it is 
possible to safely store a cached copy. Multiboot's module_t had no 
method of state tracking, identification and consumption. To address 
this short coming, the early loading made a copy of the module so it 
could use the mod_end field as a flag without breaking the relocation
logic later. And now because it made a copy instead of holding a 
reference, when the relocation occurs, the mod_start is no longer valid. 
I am not sure why the scan was a user exposed flag, but with boot_module
having identification and state, it is no longer necessary to hold a 
copy and a reference can now be used. Since it is now a reference, when 
the relocation occurs, there is no longer a need to rescan because of a 
relocation. I did leave a rescan if there wasn't microcode detected 
during the early load. Though, honestly that probably should go since it 
should be the exact same modules that were scanned during early load.

>>           microcode_scan_module(module_map, bi);
>> -    if ( ucode_mod.size )
>> -        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
>> -                                ucode_mod.size);
>> -    else if ( ucode_blob.size )
>> +    if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
>> +        rc = early_update_cache(bootstrap_map_bm(ucode_mod),
>> +                                ucode_mod->size);
>> +    else if ( ucode_mod && ucode_blob.size )
> 
> ucode_blob seems independent of ucode_mod, so I don't see why this 
> didn't stay `else if ( ucode_blob.size )`
 From my inspection, looks like that should have been an '||" and not a 
'&&'. The reason being is that the function will fall back to ucode_mod 
if ucode_blob is not set.

v/r,
dps



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:30:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:30:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814948.1228662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZZv-0002KJ-SP; Wed, 09 Oct 2024 16:30:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814948.1228662; Wed, 09 Oct 2024 16:30: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 1syZZv-0002KC-PW; Wed, 09 Oct 2024 16:30:23 +0000
Received: by outflank-mailman (input) for mailman id 814948;
 Wed, 09 Oct 2024 16:30: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=y4i3=RF=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1syZZu-0001AZ-AU
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:30:22 +0000
Received: from sonata.ens-lyon.org (sonata.ens-lyon.org [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c4f46fa5-865b-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 18:30:18 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 70FD7A0595;
 Wed,  9 Oct 2024 18:30:17 +0200 (CEST)
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 uUqGEs3WcOxP; Wed,  9 Oct 2024 18:30:17 +0200 (CEST)
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 54DA3A0541;
 Wed,  9 Oct 2024 18:30:17 +0200 (CEST)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1syZZo-00000005i7e-3ylk; Wed, 09 Oct 2024 18:30:16 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c4f46fa5-865b-11ef-99a2-01e77a169b0f
Date: Wed, 9 Oct 2024 18:30:16 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [MINI-OS PATCH v2] add config support for each Xen library
Message-ID: <ZwavmE6v_49SLGaq@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
References: <20241009140554.1084-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241009140554.1084-1-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le mer. 09 oct. 2024 16:05:54 +0200, a ecrit:
> Instead of adding all or no Xen library (controlled by CONFIG_XC),
> support a dedicated config option for each library instead,
> defaulting to disabled.
> 
> As it is no longer needed now, drop the CONFIG_XC support.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
> V2:
> - merge patches of the V1 series (Samuel Thibault)
> 
> Note: do not apply to the tree until the related Xen series
> "stubdom: prepare more fine grained Xen library usage" has been
> applied.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
>  Config.mk | 11 +++++++++--
>  Makefile  | 18 +++++++++++++++++-
>  2 files changed, 26 insertions(+), 3 deletions(-)
> 
> diff --git a/Config.mk b/Config.mk
> index f2d1f0ae..f59a0cf4 100644
> --- a/Config.mk
> +++ b/Config.mk
> @@ -193,6 +193,15 @@ CONFIG-n += CONFIG_9PFRONT
>  CONFIG-n += CONFIG_TPM_TIS
>  CONFIG-n += CONFIG_TPMBACK
>  CONFIG-n += CONFIG_BALLOON
> +CONFIG-n += CONFIG_LIBXENCALL
> +CONFIG-n += CONFIG_LIBXENCTRL
> +CONFIG-n += CONFIG_LIBXENDEVICEMODEL
> +CONFIG-n += CONFIG_LIBXENEVTCHN
> +CONFIG-n += CONFIG_LIBXENFOREIGNMEMORY
> +CONFIG-n += CONFIG_LIBXENGNTTAB
> +CONFIG-n += CONFIG_LIBXENGUEST
> +CONFIG-n += CONFIG_LIBXENTOOLCORE
> +CONFIG-n += CONFIG_LIBXENTOOLLOG
>  # Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
>  # console apart of standard dom0 handled console.
>  CONFIG-n += CONFIG_USE_XEN_CONSOLE
> @@ -201,8 +210,6 @@ CONFIG-y += CONFIG_PARAVIRT
>  else
>  CONFIG-n += CONFIG_PARAVIRT
>  endif
> -# Support legacy CONFIG_XC value
> -CONFIG_XC ?= $(libc)
>  
>  CONFIG-$(lwip) += CONFIG_LWIP
>  
> diff --git a/Makefile b/Makefile
> index 6c8df8b5..ffa8d1a8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -123,23 +123,39 @@ endif
>  OBJS := $(filter-out $(OBJ_DIR)/lwip%.o $(LWO), $(OBJS))
>  
>  ifeq ($(libc),y)
> -ifeq ($(CONFIG_XC),y)
> +ifeq ($(CONFIG_LIBXENTOOLCORE),y)
>  APP_LDLIBS += -L$(TOOLCORE_PATH) -whole-archive -lxentoolcore -no-whole-archive
>  LIBS += $(TOOLCORE_PATH)/libxentoolcore.a
> +endif
> +ifeq ($(CONFIG_LIBXENTOOLLOG),y)
>  APP_LDLIBS += -L$(TOOLLOG_PATH) -whole-archive -lxentoollog -no-whole-archive
>  LIBS += $(TOOLLOG_PATH)/libxentoollog.a
> +endif
> +ifeq ($(CONFIG_LIBXENEVTCHN),y)
>  APP_LDLIBS += -L$(EVTCHN_PATH) -whole-archive -lxenevtchn -no-whole-archive
>  LIBS += $(EVTCHN_PATH)/libxenevtchn.a
> +endif
> +ifeq ($(CONFIG_LIBXENGNTTAB),y)
>  APP_LDLIBS += -L$(GNTTAB_PATH) -whole-archive -lxengnttab -no-whole-archive
>  LIBS += $(GNTTAB_PATH)/libxengnttab.a
> +endif
> +ifeq ($(CONFIG_LIBXENCALL),y)
>  APP_LDLIBS += -L$(CALL_PATH) -whole-archive -lxencall -no-whole-archive
>  LIBS += $(CALL_PATH)/libxencall.a
> +endif
> +ifeq ($(CONFIG_LIBXENFOREIGNMEMORY),y)
>  APP_LDLIBS += -L$(FOREIGNMEMORY_PATH) -whole-archive -lxenforeignmemory -no-whole-archive
>  LIBS += $(FOREIGNMEMORY_PATH)/libxenforeignmemory.a
> +endif
> +ifeq ($(CONFIG_LIBXENDEVICEMODEL),y)
>  APP_LDLIBS += -L$(DEVICEMODEL_PATH) -whole-archive -lxendevicemodel -no-whole-archive
>  LIBS += $(DEVICEMODEL_PATH)/libxendevicemodel.a
> +endif
> +ifeq ($(CONFIG_LIBXENGUEST),y)
>  APP_LDLIBS += -L$(GUEST_PATH) -whole-archive -lxenguest -no-whole-archive
>  LIBS += $(GUEST_PATH)/libxenguest.a
> +endif
> +ifeq ($(CONFIG_LIBXENCTRL),y)
>  APP_LDLIBS += -L$(CTRL_PATH) -whole-archive -lxenctrl -no-whole-archive
>  LIBS += $(CTRL_PATH)/libxenctrl.a
>  endif
> -- 
> 2.43.0
> 

-- 
Samuel
<N> un driver qui fait quoi, alors ?
<y> ben pour les bips
<s> pour passer les oops en morse
 -+- #ens-mim - vive les rapports de bug -+-
<s> je la connaissais pas celle la : "make: Entering an unknown directory"
 -+- #ens-mim -+-


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:39:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:39:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814961.1228672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZiB-0005Mo-Nh; Wed, 09 Oct 2024 16:38:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814961.1228672; Wed, 09 Oct 2024 16:38: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 1syZiB-0005Mh-Jo; Wed, 09 Oct 2024 16:38:55 +0000
Received: by outflank-mailman (input) for mailman id 814961;
 Wed, 09 Oct 2024 16:38: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=XgrK=RF=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syZiA-0005DY-E1
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:38:54 +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 f8487002-865c-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 18:38:53 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c8a2579d94so8242695a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:38:53 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9955cd5207sm435697266b.13.2024.10.09.09.38.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 09:38:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8487002-865c-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728491933; x=1729096733; 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=Acxdl3xCbjhEGEvcAxYoGbVdscNjIvn/Kr5vjuQbfTI=;
        b=uFgFWfn4Htx6T5xuhwpXX22PmSrk0bkAnKuMRCjD6vq2QDFwkE0FDlL3LQ0ygRbBjQ
         tXJkr2489kA+SqHBDBGH1Phwy2mA8l/bJ9lOZBR/kwngI3OZ5D22NH2la5nhca7gpx/u
         JOMFf++ivRBKlKRWmCdilB3EvXlty6rQh+lrY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728491933; x=1729096733;
        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=Acxdl3xCbjhEGEvcAxYoGbVdscNjIvn/Kr5vjuQbfTI=;
        b=uxNY6zneztaOg5Upt53+2aJlhiHXQ4FGmKxDd5XdshHDG9tlW7KzjRGYYyXAuNgqFV
         1D9bg8R0V5PjmlfqhTWkKDZPwuZ6jLdI8byxqqHc36ZKuTIBZIR47mv9AlQkGp/HV0zi
         8I87gDLXs9J0TcTIN3j9ak7lV1t9wb+50eQmvydCfpkBf4qZgnx86sks5cJK8Gnh0Z1x
         +eaB15uwJMFqZIJ7UWu87woPDA+n5HA2ddE9xeEJ0R8KfbtnV+tZe992OrkoMFAd1co6
         6HkHxB4ZdnplHqJ4Sn+t4/zLU3qU1/wBnt0RlexXA8jHryw/UMWS+zvMFAd8JS4VuqFJ
         /q1Q==
X-Forwarded-Encrypted: i=1; AJvYcCV6uVCf7tqKKORRwCL9cMkH+GgRmJ/CY38QLC4j4fzOPVOV8UdC0V8bbMrLD90r4/nqgZMXH99aHsQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyawN1RyTWf9M80mFnS9N/3ljKoYyNhOeKFGZ2/3a6xEkyoTfAV
	+brcZxWzNRT7/QmWzXJ22yf68KJOSMYgTkOcye2nO8NtVgsipnV/TDwKheKUOWg=
X-Google-Smtp-Source: AGHT+IE740Z8BTUpxKAUtSnS3C9NWDTh6/8XbVAO3XuRER4np7EQL65XHo5Xq7bgXEQ11QdVGGp7WA==
X-Received: by 2002:a17:907:f796:b0:a99:3a81:190e with SMTP id a640c23a62f3a-a998d21ec02mr283830866b.36.1728491932795;
        Wed, 09 Oct 2024 09:38:52 -0700 (PDT)
Message-ID: <22492f22-92a5-4ab5-b026-373db065024c@citrix.com>
Date: Wed, 9 Oct 2024 17:38:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH v2] add config support for each Xen library
To: Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org
References: <20241009140554.1084-1-jgross@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241009140554.1084-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09/10/2024 3:05 pm, Juergen Gross wrote:
> Instead of adding all or no Xen library (controlled by CONFIG_XC),

"libraries".

But better grammar would be "Instead of Xen libraries being all or none
(..."

Can fix on commit.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:39:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:39:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814963.1228685 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZiO-0005lg-0R; Wed, 09 Oct 2024 16:39:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814963.1228685; Wed, 09 Oct 2024 16:39: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 1syZiN-0005lZ-TS; Wed, 09 Oct 2024 16:39:07 +0000
Received: by outflank-mailman (input) for mailman id 814963;
 Wed, 09 Oct 2024 16:39: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syZiM-0005LG-9M
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:39:06 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fe9c95f7-865c-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 18:39:04 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a9950d27234so534928166b.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:39:04 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a997f2f8414sm209433766b.129.2024.10.09.09.39.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 09:39:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fe9c95f7-865c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728491943; x=1729096743; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=HzpNoZNqPSyHc9i1i+Cka9r8/zmSyIAoPO8gugqQhPw=;
        b=HS8gBL/bbtYA5flWiySyOeZI4uo7J97roJc0Z70yxsHB+TdSaFD2g/3gMys8bxJUal
         vUOWC7cPHgp39GSxF6P6BsdsBKJKB+5jFbMQ8+e7nCZnyRu91AjB+PWVls9xmJ8WU65z
         ate6NSXIwA3GySDpEl+1kU7r3eW9xFAozriiA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728491943; x=1729096743;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=HzpNoZNqPSyHc9i1i+Cka9r8/zmSyIAoPO8gugqQhPw=;
        b=ZQDVswu9kLMTdLtuJRWQ7kod1oCdQMFR78A+cpvbdRlTOmlXA/NOMDNZ52pykA2tI5
         ErOYqu5Z7u0ji+WdKCeUI/GgGxLUGISbpJ4hDmZNZwFsouN43LKP6ly66ELzpi4uec/t
         CQW/3NZ1kgn6yYRdnZAFmds9Q/WrU5VfG809W3jok+et5ukknB5cukj/YFA7uN2XaSHq
         pD88zbEQaUwz8ATXAFRdLXZoKxRMWLXADy5JLliYTVWX/r++7YfPJk+ttn9U1FsKr60+
         CeJcNRJXNGaKd0pNV9CXYv25WlkcJWnBSPVHtRmaRY/iOI3bDOmPROb3CK5D8qZMu4j8
         toMg==
X-Forwarded-Encrypted: i=1; AJvYcCWLSvN2HUeZ0tFn6EbICF1egtHSPAtwPpTJ3Ig30KvCttLT6alnt+S/OXFuaUUcW3JEPRdIa569uII=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzucgEWhn10/bnita6Oig7ifqvdKaI1Si3xJVGMufMdJSBfJJrX
	RHgfba4gbIo6MQKa2w6XoBGef93I8T5nK2bmsE0yFVDUSCLApmmtX0de/PTeL7I=
X-Google-Smtp-Source: AGHT+IG0CmBFiU1G+MEmMa/LdzLVa9jsaqOfQ4dLD4Z5AySWrmNgrCifD75+axzGGgUOOuZbDoGjWA==
X-Received: by 2002:a17:906:730b:b0:a99:5ea9:ad4e with SMTP id a640c23a62f3a-a998d10d135mr259844166b.13.1728491943338;
        Wed, 09 Oct 2024 09:39:03 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 17:39:02 +0100
Message-Id: <D4RF986LYWQE.2IFU9N2CJYLFD@cloud.com>
Cc: =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v6 03/11] xen/x86: Add initial x2APIC ID to the
 per-vLAPIC save area
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-4-alejandro.vallejo@cloud.com>
 <c8b35378-d677-4c28-9304-530269178225@suse.com>
In-Reply-To: <c8b35378-d677-4c28-9304-530269178225@suse.com>

Hi,

On Wed Oct 9, 2024 at 2:12 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:37, Alejandro Vallejo wrote:
> > @@ -311,18 +310,15 @@ void guest_cpuid(const struct vcpu *v, uint32_t l=
eaf,
> > =20
> >      case 0xb:
> >          /*
> > -         * In principle, this leaf is Intel-only.  In practice, it is =
tightly
> > -         * coupled with x2apic, and we offer an x2apic-capable APIC em=
ulation
> > -         * to guests on AMD hardware as well.
> > -         *
> > -         * TODO: Rework topology logic.
> > +         * Don't expose topology information to PV guests. Exposed on =
HVM
> > +         * along with x2APIC because they are tightly coupled.
> >           */
> > -        if ( p->basic.x2apic )
> > +        if ( is_hvm_domain(d) && p->basic.x2apic )
>
> This change isn't mentioned at all in the description, despite it having =
the
> potential of introducing a (perceived) regression. See the comments near =
the
> top of calculate_pv_max_policy() and near the top of
> domain_cpu_policy_changed(). What's wrong with ...
>
> >          {
> >              *(uint8_t *)&res->c =3D subleaf;
> > =20
> >              /* Fix the x2APIC identifier. */
> > -            res->d =3D v->vcpu_id * 2;
> > +            res->d =3D vlapic_x2apic_id(vcpu_vlapic(v));
>
> ...
>
>             res->d =3D is_hvm_domain(d) ? vlapic_x2apic_id(vcpu_vlapic(v)=
)
>                                       : v->vcpu_id * 2;
>
> ?

Hmmm. I haven't seem problems with PV guests, but that's a good point. Whil=
e I
suspect no PV guest would use this value for anything relevant (seeing how
there's no actual APIC), handing out zeroes might still have bad consequenc=
es.

Sure, I'll amend it.

>
> > --- a/xen/arch/x86/hvm/vlapic.c
> > +++ b/xen/arch/x86/hvm/vlapic.c
> > @@ -1090,7 +1090,7 @@ static uint32_t x2apic_ldr_from_id(uint32_t id)
> >  static void set_x2apic_id(struct vlapic *vlapic)
> >  {
> >      const struct vcpu *v =3D vlapic_vcpu(vlapic);
> > -    uint32_t apic_id =3D v->vcpu_id * 2;
> > +    uint32_t apic_id =3D vlapic->hw.x2apic_id;
>
> Any reason you're open-coding vlapic_x2apic_id() here and ...
>
> > @@ -1470,7 +1470,7 @@ void vlapic_reset(struct vlapic *vlapic)
> >      if ( v->vcpu_id =3D=3D 0 )
> >          vlapic->hw.apic_base_msr |=3D APIC_BASE_BSP;
> > =20
> > -    vlapic_set_reg(vlapic, APIC_ID, (v->vcpu_id * 2) << 24);
> > +    vlapic_set_reg(vlapic, APIC_ID, SET_xAPIC_ID(vlapic->hw.x2apic_id)=
);
>
> ... here?

Not a good one. vlapic_x2apic_id() exists mostly to allow self-contained
accesses from outside this translation unit. It makes no harm using the
accessor even inside, sure.

>
> Jan

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:44:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:44:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814983.1228695 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZnO-0000qt-N6; Wed, 09 Oct 2024 16:44:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814983.1228695; Wed, 09 Oct 2024 16:44: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 1syZnO-0000qm-KV; Wed, 09 Oct 2024 16:44:18 +0000
Received: by outflank-mailman (input) for mailman id 814983;
 Wed, 09 Oct 2024 16:44: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syZnN-0000qg-8z
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 16:44:17 +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 b8237158-865d-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 18:44:15 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a99543ab209so474447566b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 09:44:15 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a992e5bb208sm678618966b.22.2024.10.09.09.44.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 09:44:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b8237158-865d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728492254; x=1729097054; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=kF1mC6dUpqyV3/AMkbwuD/AWt/Qi6RwHYUDrGCUj7OQ=;
        b=fHKyKuxrbSGFltpnjJDq/Pe9kfrgLWXRuYmcWY0nuBqXE27pWeQi5AWewTGBP7TeIk
         kwIEGsxyIAVQFcxaCmxNuWiwUcLsOqFZVXJWQaDpJte7UwqJ4wXqLd+kI8LKMsctq/kN
         pixz+HGzCvZa4m9Sq4jUbba5HoR9y11XkAtVI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728492254; x=1729097054;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=kF1mC6dUpqyV3/AMkbwuD/AWt/Qi6RwHYUDrGCUj7OQ=;
        b=JdfUpy7VRaUcYyQq4wENwMPzu1sLRAHrAZ4vbh6EfdUm4Klu2mZ5v8pobp5b/gSzjb
         4Yb7ESKfkcJDa/bCNfozCGk9W42mbUXIcnV4ecDYjhXvr6K2q+dlo55L35oEFy1aQMXp
         /TKycfAkH+kTfQMPoqCAUhVc31nAfDXrWqBSMZPo+jTAe8SrByE64YDLqBUdBmMX/UMj
         v7NV1ePrHT4evJadrEVySkG9mBBSXuOkpCOpbF0RkzUH8Vhpi+BdOaTJitFulDaBnfEx
         p9lDb5ODGiqb/2efrgpGO4qbbXEJ3CTJUE9RoYMXwrNDhY3Wnab+MBYSsMiDEYvpj9Zn
         tzrg==
X-Forwarded-Encrypted: i=1; AJvYcCURQeK3Np9ES0Qa0gxWdq4eDyPBdjexTAQPadJ5oAzZNH5q5RVZ0r8g9FKn8AP+3nbrmIEp43KMoBk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyT/ebiehXj0vs37aeBC8bZCTRsazkeJQnDfXBpg6yvLw8ij+27
	ITSYkrX4cGuVC74zoLnQzlQEsIXCnRMaO8X6AlD4UtbSnPculxFRAynYqsza6r8=
X-Google-Smtp-Source: AGHT+IEiR3IOXx4r+RoG0Jva4MIY2Bbnp7/3w5pPel+6QUFdppbbHRCEmvtx9vPj1drvHFNsfHCW5g==
X-Received: by 2002:a17:907:940a:b0:a99:7492:c735 with SMTP id a640c23a62f3a-a998d18c14fmr232471566b.17.1728492254482;
        Wed, 09 Oct 2024 09:44:14 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 17:44:13 +0100
Message-Id: <D4RFD776JP2U.373W6D66DFGC6@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 04/11] xen/x86: Add supporting code for uploading
 LAPIC contexts during domain create
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-5-alejandro.vallejo@cloud.com>
 <acb85f02-351d-4ca2-9fd2-276276ed1c8e@suse.com>
In-Reply-To: <acb85f02-351d-4ca2-9fd2-276276ed1c8e@suse.com>

On Wed Oct 9, 2024 at 2:28 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:38, Alejandro Vallejo wrote:
> > If toolstack were to upload LAPIC contexts as part of domain creation i=
t
>
> If it were to - yes. But it doesn't, an peeking ahead in the series I als=
o
> couldn't spot this changing. Hence I don#t think I see why this change
> would be needed, and why ...

Patch 10 does. It's the means by which (in a rather roundabout way)
toolstack overrides vlapic->hw.x2apic_id.

>
> > would encounter a problem were the architectural state does not reflect
> > the APIC ID in the hidden state. This patch ensures updates to the
> > hidden state trigger an update in the architectural registers so the
> > APIC ID in both is consistent.
> >=20
> > Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> > ---
> >  xen/arch/x86/hvm/vlapic.c | 20 ++++++++++++++++++++
> >  1 file changed, 20 insertions(+)
> >=20
> > diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
> > index 02570f9dd63a..a8183c3023da 100644
> > --- a/xen/arch/x86/hvm/vlapic.c
> > +++ b/xen/arch/x86/hvm/vlapic.c
> > @@ -1640,7 +1640,27 @@ static int cf_check lapic_load_hidden(struct dom=
ain *d, hvm_domain_context_t *h)
> > =20
> >      s->loaded.hw =3D 1;
> >      if ( s->loaded.regs )
> > +    {
> > +        /*
> > +         * We already processed architectural regs in lapic_load_regs(=
), so
> > +         * this must be a migration. Fix up inconsistencies from any o=
lder Xen.
> > +         */
> >          lapic_load_fixup(s);
> > +    }
> > +    else
> > +    {
> > +        /*
> > +         * We haven't seen architectural regs so this could be a migra=
tion or a
> > +         * plain domain create. In the domain create case it's fine to=
 modify
> > +         * the architectural state to align it to the APIC ID that was=
 just
> > +         * uploaded and in the migrate case it doesn't matter because =
the
> > +         * architectural state will be replaced by the LAPIC_REGS ctx =
later on.
> > +         */
>
> ... a comment would need to mention a case that never really happens, thu=
s
> only risking to cause confusion.
>
> Jan

I assume the "never really happens" is about the same as the previous
paragraph? If so, the same answer applies.

About the lack of ordering in the migrate stream the code already makes no
assumptions as to which HVM context blob might appear first in the vLAPIC a=
rea.

I'm not sure why, but I assumed it may be different on older Xen.

>
> > +        if ( vlapic_x2apic_mode(s) )
> > +            set_x2apic_id(s);
> > +        else
> > +            vlapic_set_reg(s, APIC_ID, SET_xAPIC_ID(s->hw.x2apic_id));
> > +    }
> > =20
> >      hvm_update_vlapic_mode(v);
> > =20

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 16:49:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 16:49:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.814993.1228707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syZs7-0003XT-9a; Wed, 09 Oct 2024 16:49:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 814993.1228707; Wed, 09 Oct 2024 16:49: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 1syZs7-0003XA-4Y; Wed, 09 Oct 2024 16:49:11 +0000
Received: by outflank-mailman (input) for mailman id 814993;
 Wed, 09 Oct 2024 16:49: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 1syZs5-0003Ww-Ro; Wed, 09 Oct 2024 16:49: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 1syZs5-0005ty-PN; Wed, 09 Oct 2024 16:49: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 1syZs5-0006tY-F5; Wed, 09 Oct 2024 16:49:09 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syZs5-0003bd-ET; Wed, 09 Oct 2024 16:49: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=YsbYNyYpWH6c1JwVNXWcKrQrKtlflJw08aHTBwBdwkk=; b=AORXW3arZCFgSFe+b/SpVUWh2K
	5q27SziQe9/FgDzqUX+eFx18Epu3tldLXaNpx9d0p1sj6kUKjyqVgLwcl/87vLfp3W19OlrxRLKbj
	Q6ZuxblvcXsjuhUo7YakXGI59oMaRnWrP3mPTLb5iUnNc3oN99rUOGptFisgX5JVQgnk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188030-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188030: 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=3b79d825b5719f6654e4c95cdc17d65bb204213a
X-Osstest-Versions-That:
    xen=c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 16:49:09 +0000

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

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                  3b79d825b5719f6654e4c95cdc17d65bb204213a
baseline version:
 xen                  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd

Last test of basis   188015  2024-10-08 16:00:24 Z    1 days
Testing same since   188024  2024-10-09 08:02:21 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Bertrand Marquis <bertrand.marquis@arm.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Julien Grall <jgrall@amazon.com>
  Matthew Barnes <matthew.barnes@cloud.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>
  Ross Lagerwall <ross.lagerwall@citrix.com>
  Stefano Stabellini <sstabellini@kernel.org>
  Volodymyr Babchuk <volodymyr_babchuk@epam.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
   c95cd5f9c5..3b79d825b5  3b79d825b5719f6654e4c95cdc17d65bb204213a -> smoke


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:16:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:16:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815004.1228716 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaIr-0006z0-7b; Wed, 09 Oct 2024 17:16:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815004.1228716; Wed, 09 Oct 2024 17:16: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 1syaIr-0006yt-41; Wed, 09 Oct 2024 17:16:49 +0000
Received: by outflank-mailman (input) for mailman id 815004;
 Wed, 09 Oct 2024 17:16: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=Hb5L=RF=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1syaIp-0006xM-4C
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:16:47 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2062e.outbound.protection.outlook.com
 [2a01:111:f403:2417::62e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 422a21c6-8662-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 19:16:45 +0200 (CEST)
Received: from CH0PR13CA0017.namprd13.prod.outlook.com (2603:10b6:610:b1::22)
 by MW4PR12MB7483.namprd12.prod.outlook.com (2603:10b6:303:212::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Wed, 9 Oct
 2024 17:16:41 +0000
Received: from CH1PEPF0000A348.namprd04.prod.outlook.com
 (2603:10b6:610:b1:cafe::79) by CH0PR13CA0017.outlook.office365.com
 (2603:10b6:610:b1::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Wed, 9 Oct 2024 17:16:40 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH1PEPF0000A348.mail.protection.outlook.com (10.167.244.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Wed, 9 Oct 2024 17:16:40 +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.39; Wed, 9 Oct
 2024 12:16:40 -0500
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.39; Wed, 9 Oct
 2024 12:16:40 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Wed, 9 Oct 2024 12:16:39 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 422a21c6-8662-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DFPnFFF89Mhh24q7QbOIafIQhBbK/oh/N4+fsJjiTGOPlmOsmYe3eSW/0nVQbD040nsJ7XGI4fVXkUGHzPZOCeVgOxbBYm5CBKkjPhDR9Aw2YHaQzeAQfBPNCYuO19CzCOq8+l2mdSbdw+rM4osQstihC3Sfns2ouACC90gEoVt/yMTdCAUCtxxwTTMeyYHM7G29Hn0zTAICrPqOl1ADJTfYO1C8wdl91h5CiZG/xXOlX5EKY9ZBue0qRbLgytF3rxbkbfQ7KZ/qU7EIX/WaRXOyWlnnsZPbmBX5xB5T3QCikeSKAW6UMkK4IwgQDuR9gL2nykpdyIhMwRals64vjQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=IYZTUMfT1THjUHLWlC/KI1rYIse6Y3fIVSg54AXOhjA=;
 b=ZVPpDAQewITXU2z9LyHLJR8L8RG8B5MmY7DdtpYJw7mUSDfdRzPnWJGv96GkfAUCg5irq1KtR3GyVged76xjfzcQ7fAQUamwX5nGXjvgm8dVdizDi9Qgudkc9TOSNgKhYCfklFzPqwn5qsiOTa5RYt3BV+aO7HWegOTCHIqQo2OGYdr0jQSnodEaZMRh8AGZeDpk8ACEX4cDPSlPuwj0uLTObn2s+3OOm+LO6oDVnc/td87Wv1jsP03SY/Wghy378mUa/idN5mIyNoTBEJDy14/6q5Zk0WZTJa/jGkYMn/24c7n/yPIj7zo0w05APWgkmsLtsrukTtoe0ezXPBleUA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=google.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=IYZTUMfT1THjUHLWlC/KI1rYIse6Y3fIVSg54AXOhjA=;
 b=V/NxOHRjQ9vGFgUF3i3Qc1b1BUrxIKnYybBr9Vev85QS/c5N5nGWO39aTCn9cCe6MhONY5+R44gxY0n5l+iNXcaF5fTVaLGNii8rS/hZAevTk6xaCdh2pe9S8G7IcMYFFe6mVMh7Q8HnR29vn5jk8KHmpYLq6xBZgaiT/dw44o8=
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: <03b3647b-49f9-4a9a-be65-3170bde65730@amd.com>
Date: Wed, 9 Oct 2024 13:16:36 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/5] x86/xen: Avoid relocatable quantities in Xen ELF
 notes
To: Ard Biesheuvel <ardb+git@google.com>, <linux-kernel@vger.kernel.org>
CC: Ard Biesheuvel <ardb@kernel.org>, Juergen Gross <jgross@suse.com>, "Boris
 Ostrovsky" <boris.ostrovsky@oracle.com>, <x86@kernel.org>,
	<xen-devel@lists.xenproject.org>
References: <20241009160438.3884381-7-ardb+git@google.com>
 <20241009160438.3884381-11-ardb+git@google.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241009160438.3884381-11-ardb+git@google.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000A348:EE_|MW4PR12MB7483:EE_
X-MS-Office365-Filtering-Correlation-Id: f3b549d2-1dd0-44fe-1539-08dce8862424
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?anIrU3hEMWJGMjNDRnQzNDJDMEI3Qk1VekFkRjl0N1AwOUQvb2dHR3NPNnJT?=
 =?utf-8?B?MEpqMUxIRmI5Ulo0YmhNVGxuTjdkaVFqKzkxSFVZN1ZEQUs0bFZGelRpalVj?=
 =?utf-8?B?N1p5VGNaWHJNSTlTU0kvZjJ0c3U2UGxlWHNQVkdsN2p0dE5TQW4vRTVVY1Ni?=
 =?utf-8?B?TkFzRGtOdzVDOVZ4SDRlUFlwZmI2Mm9uRnpJR1AwOVU5YVNkMWUvOThEcmx5?=
 =?utf-8?B?NWlqdXVjQnRDRzE3MmFTNlBxbzRCV25uZzd1Vjdad05FTVlWUkxWN3JGOTFD?=
 =?utf-8?B?SCtGN2FlVzhIRnRITHRDdFFVNlFBcXVQUzBoeEc2cHFwK01hM0dKZUwrOWFa?=
 =?utf-8?B?M2pUZ0MyaldnejBudmtIOGVwM3lpZFFzMXpyWEF1MCtlWmtCSkRtbS9Nb3do?=
 =?utf-8?B?b0Y2K29PY1lGRm1jbUxpTWcwVTBOVTlNWnc1ZC9RVU1uc05jbzhpQTlEVlJa?=
 =?utf-8?B?ZVM3dEFham1qUy9iZnAwUW5pTnFLOXNtc1B3UFcvWDNBeEExRDUyc0NZZlN2?=
 =?utf-8?B?a0VEbjVzQUpUS00weHNBckhjdVV3QkFWblYrUHFFOUZpZ3dHMGhnd3JPNG5C?=
 =?utf-8?B?dklBWEgrczBCdWcxTVZVb3dUeW5uN1hoenA5a2VKeEZCR2MzOVB6NmZwaVU4?=
 =?utf-8?B?a284ektHb3ZlUVBuMDhLSU9oVjZQL1VjMjdxYWZRVVlKWXRGWDNsVHcxU1k3?=
 =?utf-8?B?QXZBb3ZWZXNDKzJzSVVIQitraVJBNmpVTFZ3MWpRNE45d2FFeWR3dzB4bk12?=
 =?utf-8?B?M0tpc3lpdklkbVlteUtSU2lWK0dpZ215bXlROStUMk1SWi9uWnpRMlhRdy9W?=
 =?utf-8?B?MmRLWVk5emc3VVhJaXBiWGlNcU92aGYwaGp5T2htb0ZFTm1xbEdhL1VOeHRx?=
 =?utf-8?B?TzB2b2k1YjBpL2NFWXUyVFI3MnoyMXRabytQZUZxYmFBZmpBaktkYTRiSTRz?=
 =?utf-8?B?clBFbFAzRllTM3ZoZnFhbXMyNWg4cG01OXIrYStnV2t6elpiM0Q4SmpTZDV0?=
 =?utf-8?B?L1ZjUGNhWHlWaFhXanpvU2tFRmdBNUJNaHFDc2N5QkptdVMzS2VnN01uc28z?=
 =?utf-8?B?bXdXbUErK1FXd3JPRVBYMjVFWkwzd0FBYWkxRGUvaDFiY3FlQzMyU2ZkOGlB?=
 =?utf-8?B?S3hweGVCWDFZb1RZNGsyYUxLTW5BS3BqSzNuSEpEWXZONDRxY25QNU9MUEow?=
 =?utf-8?B?KzlqdEJSbGdxK3VlT0ppSzIyS1dRakxGRDJxOWpQVjZkZm90U240bGtzRlBN?=
 =?utf-8?B?bzc5OFZ3QWVBU0hpSlg0OVBnaDYwakc5YTFxZEk5cE1sSk4zOEpjTnJWcnlG?=
 =?utf-8?B?UGh1Sm5MRmIyeEhNb2tzRld4Sk9IR3ZySFNUU2dvK0lMRkozWjU0RWtKYVVW?=
 =?utf-8?B?d1lZNGlRZjV5WWVZTWFWM2ZxODBjeE1iekFDUmlMbFA1a0s0dC9pQXU5TEhD?=
 =?utf-8?B?d2xhVjI2dzF2czViWWh0Nis4WFViYVo1dnE5MVlYQkRjTTIyZUlPZkdQR0k1?=
 =?utf-8?B?L1dZWVJ4czJZU05HY2xqN0p0Q290cXY2UVJLeUF3bkVlNUwxZlQ4SkZDUVcy?=
 =?utf-8?B?WkM2aDg5S20yZUMxNmd2TW1qL2FlcDY5bXVWcis2ZUtTS2FBNW5tanNMWWdq?=
 =?utf-8?B?RjB3Z0x4a1VqdG1UR09tT3lYVTI3dDRXcy9aRTVValpINE96bDRVdzZTcENK?=
 =?utf-8?B?V2c3emk1ck5JeHBsVlBkYTVRSzg1STVsNVF3cWkxWk5BRlovLytmVXZMbU52?=
 =?utf-8?B?SGs5YTZtZk9OMEdFYUdHK2tsN3FQMDZJdGdLR2pDaXBQTjErUjgzVmlRdyt4?=
 =?utf-8?B?V3daUlgvTWNkdWlCaXFrdlowRmM4U1d1Ri84N3pWWityam4rd3JQdFN1Uml0?=
 =?utf-8?Q?JGLMUZc38U0Ei?=
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:(13230040)(376014)(82310400026)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 17:16:40.8592
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f3b549d2-1dd0-44fe-1539-08dce8862424
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:
	CH1PEPF0000A348.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7483

On 2024-10-09 12:04, Ard Biesheuvel wrote:
> From: Ard Biesheuvel <ardb@kernel.org>
> 
> Xen puts virtual and physical addresses into ELF notes that are treated
> by the linker as relocatable by default. Doing so is not only pointless,
> given that the ELF notes are only intended for consumption by Xen before
> the kernel boots. It is also a KASLR leak, given that the kernel's ELF
> notes are exposed via the world readable /sys/kernel/notes.
> 
> So emit these constants in a way that prevents the linker from marking
> them as relocatable. This involves place-relative relocations (which
> subtract their own virtual address from the symbol value) and linker
> provided absolute symbols that add the address of the place to the
> desired value.
> 
> Tested-by: Jason Andryuk <jason.andryuk@amd.com>
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:19:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:19:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815010.1228725 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaL2-0001id-IN; Wed, 09 Oct 2024 17:19:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815010.1228725; Wed, 09 Oct 2024 17:19: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 1syaL2-0001iW-FQ; Wed, 09 Oct 2024 17:19:04 +0000
Received: by outflank-mailman (input) for mailman id 815010;
 Wed, 09 Oct 2024 17:19: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syaL1-0001iN-MX
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:19:03 +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 93d20202-8662-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 19:19:01 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9968114422so5420966b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 10:19:01 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a993f939550sm609941366b.42.2024.10.09.10.19.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 10:19:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93d20202-8662-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728494341; x=1729099141; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=JzNei6yEFrda8QNnS+53tHT98SilBIGbHwNTXJvHOsA=;
        b=ErrEt70B/quxYzkF3QwB0939Eg+n8DG9MnBAGOtJXOcSyd33kbop/cqIn26eU7d6vf
         p9fimpU9RlT3hraRjvUgKDkHs6552X4PGCN+wVMjOOBWF4vZrh5GFjow4n69+HrDuLi8
         2YXlZAH5k+7nxcVpsKof3XqYR1jCK4R6RbKkI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728494341; x=1729099141;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=JzNei6yEFrda8QNnS+53tHT98SilBIGbHwNTXJvHOsA=;
        b=HMy1czhoOZUE+LDkfWGNfh1jJwsj6AHtwctd5XJbzNM5XcHy6JAVJZzOBkXs5iuwGS
         7bO5gA+bQ0IiCIFaSEwNy7mSQXorE3uGMZNGH5efHhvd44diIA1EZIy4oIBeD4/iJWi3
         P7FGGCDu6T8jTDrnK6UcutB/A1KQUclXkHB95sa2KvS8cH82gJsty21ek/rZosyFHKRt
         edzFj57euBPPoBYbu83WcjSADGguJQv0DQ2ofWlExWFgVc3cKyIBpC3OFZmM+XlLJYwI
         TnSmZpyVAidMLTQg2AQ0HKk5HUWfJLROJ/nYttMIgCLAszPR5xepiM4J+3HsdzA7wmX+
         APHQ==
X-Forwarded-Encrypted: i=1; AJvYcCUXsiFAMmOFnHsd3WmcDY61mYFqsDsL3XtTRuIRAx3Xfd5anXSA+Av4gEYXyNcfqk0RkRet7TUP7Eo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwARtd9Ndtn7VA7eicDCe3xqsmJijItyiyWus7TrMdVTUNQdYpY
	E8+u/e6ZTy7jcjNgTQLv6MpRIQHCeSj4fg+B3Vs2vqchUQGfBAV+efG5rKv4t+NS/4m9RDiEHDt
	17nM=
X-Google-Smtp-Source: AGHT+IHI3DExGsls5r7wS/IfePaFyn546mvHDtEA3FH8OdZ24aPPawP6iGKW05Qzi6Yd8RDV6iFKvw==
X-Received: by 2002:a17:907:3e08:b0:a86:9c41:cfc1 with SMTP id a640c23a62f3a-a999e628743mr105748166b.8.1728494341146;
        Wed, 09 Oct 2024 10:19:01 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 18:19:00 +0100
Message-Id: <D4RG3TTHTS1E.23ZAJIW3H4VC4@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Anthony PERARD"
 <anthony.perard@vates.tech>, "Xen-devel" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 05/11] tools/hvmloader: Retrieve (x2)APIC IDs from
 the APs themselves
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-6-alejandro.vallejo@cloud.com>
 <f75dde2d-9c39-4be0-8465-6496a56cc658@suse.com>
In-Reply-To: <f75dde2d-9c39-4be0-8465-6496a56cc658@suse.com>

Hi,

On Wed Oct 9, 2024 at 3:03 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:38, Alejandro Vallejo wrote:
> > Make it so the APs expose their own APIC IDs in a LUT. We can use that
> > LUT to populate the MADT, decoupling the algorithm that relates CPU IDs
> > and APIC IDs from hvmloader.
> >=20
> > While at this also remove ap_callin, as writing the APIC ID may serve
> > the same purpose.
>
> ... on the assumption that no AP will have an APIC ID of zero.
>
> > @@ -341,11 +341,11 @@ int main(void)
> > =20
> >      printf("CPU speed is %u MHz\n", get_cpu_mhz());
> > =20
> > +    smp_initialise();
> > +
> >      apic_setup();
> >      pci_setup();
> > =20
> > -    smp_initialise();
>
> I can see that you may want cpu_setup(0) to run ahead of apic_setup().

Not only that. This hunk ensures CPU_TO_X2APICID is populated ASAP for ever=
y
CPU. Reading zeroes where a non-zero APIC ID should be is fatal and tricky =
to
debug later. I tripped on enough "used the LUT before being set up" bugs to
really prefer initialising it before anyone has a chance to misuse it.

> Yet is it really appropriate to run boot_cpu() ahead of apic_setup() as w=
ell?

I would've agreed before the patches that went in to replace INIT-SIPI-SIPI
with hypercalls, but now that hvmloader is enlightened it has no real need =
for
the APIC to be configured. If feels weird because you wouldn't use this ord=
er
on bare metal. But it's fine under virt.

> At the very least it feels logically wrong, even if at the moment there
> may not be any direct dependency (which might change, however, down the
> road).

I suspect it feels wrong because you can't boot CPUs ahead of configuring y=
our
APIC in real hardware. But hvmloader is always virtualized so that point is
moot. If anything, I'd be scared of adding code ahead of smp_initialise() t=
hat
relies on CPU_TO_X2APICID being set when it hasn't yet.

If you have a strong view on the matter I can remove this hunk and call
read_apic_id() from apic_setup(). But it wouldn't be my preference to do so=
.

>
> > --- a/tools/firmware/hvmloader/mp_tables.c
> > +++ b/tools/firmware/hvmloader/mp_tables.c
> > @@ -198,8 +198,10 @@ static void fill_mp_config_table(struct mp_config_=
table *mpct, int length)
> >  /* fills in an MP processor entry for VCPU 'vcpu_id' */
> >  static void fill_mp_proc_entry(struct mp_proc_entry *mppe, int vcpu_id=
)
> >  {
> > +    ASSERT(CPU_TO_X2APICID[vcpu_id] < 0xFF );
>
> Nit: Excess blank before closing paren.

Oops, right.

>
> And of course this will need doing differently anyway once we get to
> support for more than 128 vCPU-s.

This is just a paranoia-driven assert to give quick feedback on the overflo=
w of
the APIC ID later on. The entry in the MP-Table is a single octet long, so =
in
those cases we'd want to skip the table to begin with.

>
> > --- a/tools/firmware/hvmloader/smp.c
> > +++ b/tools/firmware/hvmloader/smp.c
> > @@ -29,7 +29,34 @@
> > =20
> >  #include <xen/vcpu.h>
> > =20
> > -static int ap_callin;
> > +/**
> > + * Lookup table of x2APIC IDs.
> > + *
> > + * Each entry is populated its respective CPU as they come online. Thi=
s is required
> > + * for generating the MADT with minimal assumptions about ID relations=
hips.
> > + */
> > +uint32_t CPU_TO_X2APICID[HVM_MAX_VCPUS];
>
> I can kind of accept keeping it simple in the name (albeit - why all caps=
?),
> but at least the comment should mention that it may also be an xAPIC ID
> that's stored here.

I'll add that in the comment. I do want it to be x2apic in name though, so =
as
to make it obvious that it's LUT of 32bit items.

As for the caps, bad reasons. It used to be a macro and over time I kept
interpreting it as an indexed constant. Should be lowercase.

>
> > @@ -104,6 +132,12 @@ static void boot_cpu(unsigned int cpu)
> >  void smp_initialise(void)
> >  {
> >      unsigned int i, nr_cpus =3D hvm_info->nr_vcpus;
> > +    uint32_t ecx;
> > +
> > +    cpuid(1, NULL, NULL, &ecx, NULL);
> > +    has_x2apic =3D (ecx >> 21) & 1;
>
> Would be really nice to avoid the literal 21 here by including
> xen/arch-x86/cpufeatureset.h. Can this be arranged for?

I'll give that a go. hvmloader has given no shortage of headaches with its
quirky environment, so we'll see...

>
> Jan

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:20:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:20:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815019.1228736 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaMF-0003II-12; Wed, 09 Oct 2024 17:20:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815019.1228736; Wed, 09 Oct 2024 17:20: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 1syaME-0003IB-UI; Wed, 09 Oct 2024 17:20:18 +0000
Received: by outflank-mailman (input) for mailman id 815019;
 Wed, 09 Oct 2024 17: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syaMD-0003I3-Ll
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:20:17 +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 c0740e68-8662-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 19:20:16 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a994cd82a3bso7240466b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 10:20:16 -0700 (PDT)
Received: from localhost ([52.166.251.127]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9958923911sm421016066b.190.2024.10.09.10.20.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 10:20:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0740e68-8662-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728494416; x=1729099216; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=WV3d3eHWAOEqLnUFABytV5IjcFNeksNf+CnCf/H33kQ=;
        b=SpbvhwCXYIFbN5dE46bH20ytkTqjoTiYoK9seHg6TxFFs+Kqr8Gxnm65oncmFpdvbO
         ZKEDTxTh7Rioet6eMT10sKGU/ZGcaW1tLc3HDy4o696mHniypGHVt4VVTca65I/kmcDl
         37mqB/hGeCd5q3RfHZVurjqtiggW5kWm61lXI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728494416; x=1729099216;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=WV3d3eHWAOEqLnUFABytV5IjcFNeksNf+CnCf/H33kQ=;
        b=rpLyRLh4VerAe10KGNWteAEStB/eS2SBoXBrJyUkPdmsJyZD1yOY4e0LbcNh4KfgMe
         GZbnSUAMqHZ4vA2YsUJxU1FO3S+qJ2DMmRH2Abp3W1GnriSnuH4bD3Ku2KZu8T++2Ex1
         KfPOyvg8CqGkZSWuGqSkxb8acnzQurHmk9Og+gSNP/Cy3zHG8RW39+bhemrSedPM+7AN
         rKLs1YgavZ4fJO8hg5vrTIPyoj+dWJbwBMZA7tiw/pAIMgs7XrPzGUO3BeOAVy3/j4SW
         kcx44W839ZL8AkwvU0J+k0R7POo/Rul1corUXUuJR9hyYrfIm+jHzMaI+GXPzAZLUL6o
         MUkQ==
X-Forwarded-Encrypted: i=1; AJvYcCWJF9Ky4DVbdVtXt1Lhnl6ymt6LC7R6eUW1XIdmEFw6WU31ETtEhAa8B/d5MyH1zFRGo6gb4Hk8PgI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzEFZIjthETYOaYIjEBBJ9b4jDv5oqYjHBtwLB1Bh/ByzVBhy86
	zI8eQu+NO+sgYd3M6+qhPIegCGVVqxtX+2eF4En/lfAjdc0OPB3SWEZ1lVP2Jy8=
X-Google-Smtp-Source: AGHT+IEuI8ZLTLqXd6K2bcXjjGlNpEAV2bL37JAVJop3t71F9qXtnnURR30lI3U2Ebsb+M4B8a5X4A==
X-Received: by 2002:a17:907:72ca:b0:a99:5ad9:b68f with SMTP id a640c23a62f3a-a998d1193damr264517666b.7.1728494416072;
        Wed, 09 Oct 2024 10:20:16 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 18:20:15 +0100
Message-Id: <D4RG4S8T8U1N.1WI63T1ZSVQXA@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Anthony PERARD"
 <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 06/11] tools/libacpi: Use LUT of APIC IDs rather than
 function pointer
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-7-alejandro.vallejo@cloud.com>
 <28e07993-9463-49a5-ba75-e012056e5ab2@suse.com>
In-Reply-To: <28e07993-9463-49a5-ba75-e012056e5ab2@suse.com>

On Wed Oct 9, 2024 at 3:25 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:38, Alejandro Vallejo wrote:
> > @@ -148,7 +148,7 @@ static struct acpi_20_madt *construct_madt(struct a=
cpi_ctxt *ctxt,
> >          lapic->length  =3D sizeof(*lapic);
> >          /* Processor ID must match processor-object IDs in the DSDT. *=
/
> >          lapic->acpi_processor_id =3D i;
> > -        lapic->apic_id =3D config->lapic_id(i);
> > +        lapic->apic_id =3D config->cpu_to_apicid[i];
>
> Perhaps assert (like you do in an earlier patch) that the ID is small
> enough?
>
> > --- a/tools/libacpi/libacpi.h
> > +++ b/tools/libacpi/libacpi.h
> > @@ -84,7 +84,7 @@ struct acpi_config {
> >      unsigned long rsdp;
> > =20
> >      /* x86-specific parameters */
> > -    uint32_t (*lapic_id)(unsigned cpu);
> > +    uint32_t *cpu_to_apicid; /* LUT mapping cpu id to (x2)APIC ID */
>
> const uint32_t *?
>
> > --- a/tools/libs/light/libxl_dom.c
> > +++ b/tools/libs/light/libxl_dom.c
> > @@ -1082,6 +1082,11 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t dom=
id,
> > =20
> >      dom->container_type =3D XC_DOM_HVM_CONTAINER;
> > =20
> > +#if defined(__i386__) || defined(__x86_64__)
> > +    for ( uint32_t i =3D 0; i < info->max_vcpus; i++ )
>
> Plain unsigned int?
>
> Jan

Sure to all three.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:20:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:20:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815024.1228746 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaMq-0003mx-8j; Wed, 09 Oct 2024 17:20:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815024.1228746; Wed, 09 Oct 2024 17: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 1syaMq-0003mq-5u; Wed, 09 Oct 2024 17:20:56 +0000
Received: by outflank-mailman (input) for mailman id 815024;
 Wed, 09 Oct 2024 17:20: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=6gYK=RF=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1syaMo-0003I3-EL
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:20:54 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d673fe16-8662-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 19:20:53 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-5398c1bd0b8so1124957e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 10:20:53 -0700 (PDT)
Received: from [10.17.77.207] (ll-22.209.223.85.sovam.net.ua. [85.223.209.22])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-539aff23d89sm1547430e87.236.2024.10.09.10.20.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 10:20:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d673fe16-8662-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728494453; x=1729099253; 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=vzG2aC8Lq8vYVnroi4ESGfdhODW0tDLiVlpGC/FMC48=;
        b=SbSbLgvtP788MJ3+J24iBsqDE93HXzAkNPwapyq7pLkeozEbBLs2loSkJirjUzuBfA
         iIK+8GSa077/JU0N6QD8w6Scl1dkO+78d9mRMIfBYacU0i3/btNhYo5IM+usC8SRbKRP
         4lX0957xwZKeLuRqHYLOoSXVyFQaQ/xF5hbuT+oHxr0MbiTwFU5dglTYIfmRjVGmRR9o
         T7BW0XNeJo4FKCl40xmU3zE+flgoIkchbO+NqQfFzO/X2YYlsweYREiMkv9IGmuJLIJ+
         jaufo5gpjeRyChIJo7ft5lW5/SWLBsbtW9v01lHev0pIJBoaam5CYTsM0/B5jBKe45PQ
         QO2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728494453; x=1729099253;
        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=vzG2aC8Lq8vYVnroi4ESGfdhODW0tDLiVlpGC/FMC48=;
        b=ptRvrvvx7TEd3FpGV4v09Q97cmutKUXcPMXEGrerPAUlwGKV3E8tosjGyvLmRi5xey
         cMVN1R0OekjzaBaxk1JIkVzlvvkWsNn5UXp8ZD6IS0bLtzk74a60gkcPAVz0RRBerM07
         ruuhrpRCh+gFcn2Hlxie0JMiO3Q4bq+0pmoOM0O5y7lK45hudsfpBCbefErSdC5zE7Xi
         BoyvZcAiI/QYciYRsHf3sWC37/TtEFjiLZqLnNVWX0DNa8DrqdIZ/j0MbpfUybl1o1/B
         3LhhORolvs92QBuLbA8MqM682H3vVCfRkGOygN1i9x/kNXCncpFMRyvmT+m9HhtxPxkr
         KdAQ==
X-Gm-Message-State: AOJu0YyX0114J8bgpH+zYh8J1TU3Zeq8ZFDPbF1IU4qTDxcGiINUK++x
	h62GcHQIem8j72/ZXvdjD4tP3Z1qNK/igKCZ7lDUXEYBlo1XGeTFcXNSjw==
X-Google-Smtp-Source: AGHT+IEx4p7yM0WWi80Q1Ny3uDhOhVk12t0jtCIcQUdmCUCH+02gYM4SuNQqFE++hWTXxCXWyOW7tA==
X-Received: by 2002:a05:6512:3c98:b0:52f:27e:a82e with SMTP id 2adb3069b0e04-539c988d2fbmr125749e87.21.1728494452528;
        Wed, 09 Oct 2024 10:20:52 -0700 (PDT)
Message-ID: <e180d843-fe44-42fb-b3ae-c75f0f675aab@gmail.com>
Date: Wed, 9 Oct 2024 20:20:50 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <9C3AD765-C165-4B46-AEEB-8C5F87861947@arm.com>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <9C3AD765-C165-4B46-AEEB-8C5F87861947@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 09.10.24 09:36, Bertrand Marquis wrote:
> Hi Oleksandr,

Hello Bertrand


> 
>> On 8 Oct 2024, at 20:53, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
>>
>>
>>
>> On 08.10.24 09:17, Bertrand Marquis wrote:
>>> Hi,
>>
>> Hello Bertrand
>>
>>
>>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote:
>>>>
>>>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>
>>>> Add common requirements for a physical device assignment to Arm64
>>>> and AMD64 PVH domains.
>>>>
>>>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>> ---
>>>> Based on:
>>>> [PATCH] docs: fusa: Replace VM with domain
>>>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
>>>> ---
>>>> ---
>>>> .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>>>> docs/fusa/reqs/index.rst                      |   1 +
>>>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>>> 4 files changed, 428 insertions(+)
>>>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>>>
>>>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> new file mode 100644
>>>> index 0000000000..a1d6676f65
>>>> --- /dev/null
>>>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>> @@ -0,0 +1,365 @@
>>>> +.. SPDX-License-Identifier: CC-BY-4.0
>>>> +
>>>> +Device Passthrough
>>>> +==================
>>>> +
>>>> +The following are the requirements related to a physical device assignment
>>>> +[1], [2] to Arm64 and AMD64 PVH domains.
>>>> +
>>>> +Requirements for both Arm64 and AMD64 PVH
>>>> +=========================================
>>>> +
>>>> +Hide IOMMU from a domain
>>>> +------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>>>> +
>>>> +Description:
>>>> +Xen shall not expose the IOMMU device to the domain even if I/O virtualization
>>>> +is disabled. The IOMMU shall be under hypervisor control only.
>>>> +
>>>> +Rationale:
>>> I think there should be a rationale here to explain why we do not want the IOMMU
>>> in particular to be assigned to a domain.
>>
>>
>> ok, will add. I propose the following text:
>>
>> Xen having the whole picture of the host resources and device assignment unlike the individual domain makes use of the IOMMU to:
>> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also known as stage-2 (or 2nd stage) address translations for DMA devices passed through to domains and Interrupt Remapping on AMD64 platforms.
> remove arm64 or amd64, this is always true >
>> - provide access protection functionalities to prevent malicious or buggy DMA devices from accessing arbitrary memory ranges (e.g. memory allocated to other domains) or from generating interrupts that could affect other domains.
> 
> I would turn this in positive: restrict DMA devices to only have access to the memory of the Domain there are assigned to or no memory at all if not assigned (maybe 2 reqs here).


ok to both. However, I am a bit lost ...



> 
>>
>>
>>> Added to that, I am not completely sure that there is a clear way to test this one
>>> as for example one could assign registers not known by Xen.
>>
>> I am afraid you are right, valid point. For example, on Arm64, if there is no corresponding driver in use, we will end up exposing IOMMU dt node to Dom0.
>>
>>
>>> Shouldn't this requirement in fact be an assumption of use ?
>>
>> Assumption of use on Xen? From my PoV sounds reasonable, will do.
> 
> As was suggested by stefano, i agree with him on turning it differently. Please see his answer.


  ... yes, I saw his answer and completely agree with him as well, my 
question is what I should do with the rationale?

The rationale I proposed above explains why we do not want the IOMMU
in particular to be assigned to a domain. But, it belongs to the initial 
"Hide IOMMU from a domain" requirement. Now, with turning it into "Xen 
shall configure the IOMMU at boot according to the stage 2 translation
tables" requirement should the rationale still be present?


> 
>>
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Discover PCI devices from hardware domain
>>>> +-----------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
>>>> +
>>>> +Description:
>>>> +The hardware domain shall enumerate and discover PCI devices and inform Xen
>>>> +about their appearance and disappearance.
>>> Again this is a design requirement telling what should be done by a domain.
>>> This is an interface or an assumption of use but not a Xen design req.
>>
>> I agree, will convert to Assumption of use on domain.
>>
>>
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Discover PCI devices from Xen
>>>> +-----------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
>>>> +
>>>> +Description:
>>>> +Xen shall discover PCI devices (enumerated by the firmware beforehand) during
>>>> +boot if the hardware domain is not present.
>>> I am a bit wondering here why we would not want Xen to always do it if we have
>>> the code to do it in Xen anyway.
>>
>> Makes sense, will drop "if the hardware domain is not present".
>>
>>
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Assign PCI device to domain (with IOMMU)
>>>> +----------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>>>> +
>>>> +Description:
>>>> +Xen shall assign a specified PCI device (always implied as DMA-capable) to
>>>> +a domain during its creation using passthrough (partial) device tree on Arm64
>>>> +and Hyperlaunch device tree on AMD-x86. The physical device to be assigned is
>>>> +protected by the IOMMU.
>>> This is a very long and complex requirement.
>>> I would suggest to split it in 3:
>>> - generic: Xen shall support assign PCI devices to domains.
>>> - arm64 one: Xen shall assign PCI devices based on device tree (explain how this is configured in dts)
>>> - amd: xxxx based on hyperlaunch
>>
>> I agree, will split, but ...
>>
>>> - Xen shall use the IOMMU to enforce DMA operations done by a PCI device assigned to a domain to be restricted to the memory of the given domain.
>>
>>
>> ... does this need to be a separate 4th requirement here (and for the similar requirement for the platform device down the document) or this sentence is meant to be added to all resulting generic/arm64/amd requirements?
>>
>> I would like to clarify, there are two groups of requirements to cover DMA-capable devices in this document:
>> - for devices that are behind the IOMMU and IOMMU can be used for them, those requirements description explicitly mention "device xxx is protected by the IOMMU" in addition to "(with IOMMU)" in the subject.
>> - for devices that are not behind the IOMMU or IOMMU cannot be used for them, those requirements description explicitly mention "device xxx is not protected by the IOMMU" in addition to "(without IOMMU)" in the subject.
> 
> I think you need to be more generic and any DMA engine that is not protected by an IOMMU shall not be assigned to a non trusted domain.
> This is in fact a requirement on the integrator, Xen cannot do much about this.

yes, I agree


> 
>>
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Deassign PCI device from domain (with IOMMU)
>>>> +--------------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
>>>> +
>>>> +Description:
>>>> +Xen shall deassign a specified PCI device from a domain during its destruction.
>>>> +The physical device to be deassigned is protected by the IOMMU.
>>> Remove second sentence or turn it into a req to say that the PCI device shall not be allowed to do DMA anymore somehow.
>>
>>
>> I would like to clarify, the second sentence here is just to indicate what type of device (in the context of IOMMU involvement) the requirement is talking about, not about special care for denying any DMA from it after deassigning.
>>
>> If you still think that we need a new requirement to explicitly highlight that, I will be ok to create, in that case, I assume, the platform device will want to gain the similar requirement. Please let me know your preference.
> 
> As said in the mail to stefano, i think we should try to generalise more.
> So i would say we should handle:
> - register assignments
> - DMA engine handling
> - interrupt handling
> 
> A device is a just a logical construct which may or may not contain or use several of those elements.


I agree regarding DMA engine handling. As for register assignments and 
interrupt handling I am not quite sure. I am afraid we will need to 
differentiate between platform and PCI devices.


> 
>>
>>
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Forbid the same PCI device assignment to multiple domains
>>>> +---------------------------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
>>>> +
>>>> +Description:
>>>> +Xen shall not assign the same PCI device to multiple domains by failing to
>>>> +create a new domain if the device to be passed through is already assigned
>>>> +to the existing domain. Also different PCI devices which share some resources
>>>> +(interrupts, IOMMU connections) can be assigned only to the same domain.
>>> Please split and simplify
>>> - Xen shall assign a single device to a single domain
>>> - Xen shall assign PCI devices sharing resources to the same domain.
>>
>> Good point, will split.
>>
>>
>>>> +
>>>> +Rationale:
>>>> +
>>>> +Comments:
>>>> +
>>>> +Covers:
>>>> + - `XenProd~device_passthrough~1`
>>>> +
>>>> +Requirements for Arm64 only
>>>> +===========================
>>>> +
>>>> +Assign interrupt-less platform device to domain
>>>> +-----------------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
>>>> +
>>>> +Description:
>>>> +Xen shall assign a specified platform device that has only a MMIO region
>>>> +(does not have any interrupts) to a domain during its creation using passthrough
>>>> +device tree.
>>>> +The example of interrupt-less device is PWM or clock controller.
>>> I am a bit puzzled by this req. Why making a specific case for interrupt less ?
>>
>>
>> Those devices exist and can be assigned to a domain, they are configured slightly differently in comparison with devices with interrupts ("xen,path" is not needed for the former), other code paths are executed in Xen.
>>
>> More technical details:
>> The allowance of the platform device assignment which is not behind an IOMMU (for both non-DMA-capable and DMA-capable devices) is specified using device tree property ("xen,force-assign-without-iommu") in the device node described in the passthrough device tree. The said property also allows the interrupt-less platform device assignment (a device that has only a MMIO region) without specifying the corresponding node in the host device via device tree property ("xen,path").
> 
> Please see upper.

Yes, what I got from the text above is that we won't need a separate set 
of requirements for interrupt-less device, I will drop them. The same 
goes for "Assign/Deassign *non-DMA-capable* platform device to domain". 
Please let me know if I got this wrong.


[snip]


>>>> +
>>>> +Assign DMA-capable platform device to domain (without IOMMU)
>>>> +------------------------------------------------------------
>>>> +
>>>> +`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
>>>> +
>>>> +Description:
>>>> +Xen shall assign a specified DMA-capable platform device to a domain during
>>>> +its creation using passthrough device tree. The physical device to be assigned
>>>> +is not protected by the IOMMU.
>>>> +The DMA-capable device assignment which is not behind an IOMMU is allowed for
>>>> +the direct mapped domains only. The direct mapped domain must be either safe or
>>>> +additional security mechanisms for protecting against possible malicious or
>>>> +buggy DMA devices must be in place, e.g. Xilinx memory protection unit (XMPU)
>>>> +and Xilinx peripheral protection unit (XPPU).
>>> Please split in several reqs.
>>
>>
>> I agree, will do. I feel it should be split into the following requirements:
>> - Assign DMA-capable platform device to domain (without IOMMU)
>> - Create direct mapped domain
>> - Enable additional security mechanisms in direct mapped domain
>>
>> To be honest, I'm not quite sure whether it is worth creating the last requirement ...
> 
> I do not think the last one is needed here.
> It could be an integrator guidance at best.

ok, thanks for the clarification.


> 
> Cheers
> Bertrand
> 
>>
>>
>>> Stopping here my review for now
>>
>> Thanks for the review.
>>
>>
>>> Cheers
>>> Bertrand
>>
>> [snip]
> 
> 


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:22:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:22:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815031.1228756 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaNz-0004Lh-I4; Wed, 09 Oct 2024 17:22:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815031.1228756; Wed, 09 Oct 2024 17: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 1syaNz-0004La-FG; Wed, 09 Oct 2024 17:22:07 +0000
Received: by outflank-mailman (input) for mailman id 815031;
 Wed, 09 Oct 2024 17:22: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syaNx-0003I3-N5
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:22:05 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ffbd9387-8662-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 19:22:04 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728494516625393.7082872028792;
 Wed, 9 Oct 2024 10:21:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ffbd9387-8662-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728494518; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=O97JbJ5UTgsyOIh8rN5JRHwRmRxJu97OAKict95HKnirmL9gwojhfOL33M6WxaKKlDamjylwRVmlk2CFyCXGTrHPZ+hJSVUqnA7QM+jXvseUgRSw6oKOnH5hxe2LK+X2mbUmYKyrtzmJUg/iQdiodIliknFHPBTYG9/1cJH9frA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728494518; 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=6fJttl4TSb5yyrc0zoAyEdtAOjb4Zz96lIEuIWf8X6c=; 
	b=ZdZKD6cWsbW6yxIRHEUvbaiYYdvTbCoNejxz40tQKOGi+lXL3+zZGBC8BF1Cm08abi/mR3ph84DuMjU9zuf1JjUOBRK6GKwpptSE7LgmE/PD8T6SDXiclFEPNAQELGg+AJRiCHmqLcWOvJbaqOQbpbAh/EkYg7gxSJ42K5qHbM8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728494518;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=6fJttl4TSb5yyrc0zoAyEdtAOjb4Zz96lIEuIWf8X6c=;
	b=aKvATyc9nYJJ+y/9tlTBa1UfKHDFdVddhUbytXUJ2D7y4aXEa4M0SoYPTzOXeBeW
	lELoV7ZQWeANyBsrQX7wumaIQpd8zQHnMWDw3D115qa2n+9DlWeU5koMyANRQ2vtIrw
	nz5f+2yj9Dg+H9OSbcaKtTaoKCjIttM8o28sc2ok=
Message-ID: <fa2789d7-d9d6-49e5-8108-cf26ecfca618@apertussolutions.com>
Date: Wed, 9 Oct 2024 13:21:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 20/44] x86/boot: convert xsm policy loading to struct
 boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-21-dpsmith@apertussolutions.com>
 <eaa648a6-c34a-47c5-a4fb-a3e56982abba@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <eaa648a6-c34a-47c5-a4fb-a3e56982abba@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 12:13, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Iterate through the unclaimed struct boot_module to see if any are an 
>> XSM FLASK
>> policy. If one is located, mark it as an xsm policy.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
>> @@ -161,6 +162,14 @@ int __init xsm_multiboot_init(
>>       }
>>       ret = xsm_core_init(policy_buffer, policy_size);
>> +    if ( ret == 0 )
>> +    {
>> +        int idx = first_boot_module_index(bi, BOOTMOD_XSM_POLICY);
>> +
>> +        /* If the policy was loaded from a boot module, mark it 
>> consumed */
>> +        if ( idx >= 0 )
>> +            bi->mods[idx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
> 
> Maybe xsm_multiboot_policy_init() should return the idx used instead of 
> having a second search?  (Also, xsm_multiboot_policy_init() can't fail?)

I was debating on whether to make similar changes because the existing 
logic just seems sub-optimal. Currently I am looking to just write an 
independent XSM patch that looks at both this function and the device 
tree version of the function. Specifically, looking to use the 
IS_ENABLED() macro instead of #ifdef to reduce code, provide better code 
coverage, and to refine the logic.

>> +    }
>>       bootstrap_map(NULL);
>>       return 0;
> 
> The other changes look okay.

R-b then?

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:24:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:24:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815038.1228767 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaQU-0004uX-V8; Wed, 09 Oct 2024 17:24:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815038.1228767; Wed, 09 Oct 2024 17:24: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 1syaQU-0004uQ-Qv; Wed, 09 Oct 2024 17:24:42 +0000
Received: by outflank-mailman (input) for mailman id 815038;
 Wed, 09 Oct 2024 17:24: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syaQU-0004uK-Ho
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:24:42 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5cbda222-8663-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 19:24:40 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172849467331584.52362207549527;
 Wed, 9 Oct 2024 10:24:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5cbda222-8663-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728494675; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ZGibqZ+b4NZeBcHCflhVaDA4A50lPBEo8WqTLaoAKc6fpN3K/kgui2OVfnVSS6ZXdNA11adsNQ/p8YOFcCi2yrpjScxhgQEKfHDeDaqnAxm77vY/7QD30N3dneI2tvLlLnXZitKdC60+RbG21MoauoajS3S2rQHez4vjEFMjrig=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728494675; 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=NdsXFaL6OcWkddMVHpSZdgPigR1Y/THPyD/dSBYlqUc=; 
	b=eV24x/1cffdolGbasniSq40+NwD/E308q7XsniCwMeqa0o+WoEzg9dW5fWrQwuf59yjpKpItdFKclHRoKfAIKNUd6cEKkvh57jT3O1AsIp6L6LyXHzQgg5O7G3k+0yj851aSMZuUR+lKqIjqHxs/FSZdCCYFZ85/3Z5ZcJECi20=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728494675;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=NdsXFaL6OcWkddMVHpSZdgPigR1Y/THPyD/dSBYlqUc=;
	b=W19hRGClu7BiJC8g2qtWGfe6G0T0Ye71Y/bBJpbbtZ7mkf/ooC7JEkJD933ecw6O
	Mk14vIK/DRS4kjF7V+ohE67ktJIKuCuFJfLLG/z6bJcSHgfhEjQFPDGfxhI4txt6skt
	HxOBD0K7lCO6/BHQRzDaNZJpkWkDiGCJ32O3N0b4=
Message-ID: <9fd59275-9622-4d4e-b4ac-e82237c38f4f@apertussolutions.com>
Date: Wed, 9 Oct 2024 13:24:31 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 22/44] x86/boot: remove module_map usage from microcode
 loading
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-23-dpsmith@apertussolutions.com>
 <66738e0d-2a66-4547-8674-043b54b50ae6@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <66738e0d-2a66-4547-8674-043b54b50ae6@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 12:30, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> With all consumers of module_map converted, remove usage of it
>> by the microcode loading logic.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
>> @@ -202,19 +201,18 @@ static void __init microcode_scan_module(
>>       }
>>   }
>> -static void __init microcode_grab_module(
>> -    unsigned long *module_map, struct boot_info *bi)
>> +static void __init microcode_grab_module(struct boot_info *bi)
>>   {
>>       if ( ucode_mod_idx < 0 )
>>           ucode_mod_idx += bi->nr_modules;
>>       if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
>> -         !__test_and_clear_bit(ucode_mod_idx, module_map) )
>> +         (bi->mods[ucode_mod_idx].type != BOOTMOD_UNKNOWN) )
> 
> Just
>           bi->mods[ucode_mod_idx].type != BOOTMOD_UNKNOWN )

Ack

> With that:
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thank you.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:26:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:26:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815047.1228775 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaRm-0005VW-BF; Wed, 09 Oct 2024 17:26:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815047.1228775; Wed, 09 Oct 2024 17: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 1syaRm-0005VP-8K; Wed, 09 Oct 2024 17:26:02 +0000
Received: by outflank-mailman (input) for mailman id 815047;
 Wed, 09 Oct 2024 17: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syaRk-0005V5-PV
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:26:00 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8bb18a18-8663-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 19:25:59 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172849475297787.8002255667119;
 Wed, 9 Oct 2024 10:25:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8bb18a18-8663-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728494753; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Ak3PigJZhRURLXwiJRboIg5D8obTxghR0aSF1bnovAGmnvPFdfSS1c1mMsePtEJVM7UTC1xIHBoH3wYH/uWaKdQINGQAC1LDfuaDN3DUOUjlHepzRwauJUEnbMFroXQUQdGSAT+H2Kk4Si47+uwHeblMt7g61Cf/qDIwCHUAFg0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728494753; 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=EK16H3fZfvQe0l1mL1qw8lvkCUbzkANqSSbabxoAHfQ=; 
	b=Z7kWdGCFGctsORokotuCFNX5S9wjpNMBNfXxyA6KxEGqJsrhiMX8f+bKSfUxMl/bRUygRf8UEPQ1B38BEcMi/5AZcbeWQNrbllVBq6e2QtatwpcslBBvQjEOE7z+yDTz8g+vbSamh4gv0uAqg4dopqPg4QERgEipJECsvHVI+CM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728494753;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=EK16H3fZfvQe0l1mL1qw8lvkCUbzkANqSSbabxoAHfQ=;
	b=sXBpv0KSuWfITE0IiMaWz6o5b75eClz/pEBztbq3J/3dM9oTYjzZCiDJCyMTnbz0
	3WIYF2K9jHz6s6SWPqPNBmCB6N53Xa886pdnZ+lbSwMuRBPkN8UGXj/q+6QCCJHlnJn
	cHGdZR5aQJUrffmuGUOxzWODVu8FRZawRUFCE11g=
Message-ID: <065a3496-5db5-413e-9999-56987625ff86@apertussolutions.com>
Date: Wed, 9 Oct 2024 13:25:51 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 23/44] x86/boot: remove module_map usage from xsm
 policy loading
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-24-dpsmith@apertussolutions.com>
 <fc316f55-4f4e-4292-9b3f-90f4b0750b2b@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <fc316f55-4f4e-4292-9b3f-90f4b0750b2b@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 12:36, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c  | 2 +-
>>   xen/include/xsm/xsm.h | 9 +++------
>>   xen/xsm/xsm_core.c    | 6 ++----
>>   xen/xsm/xsm_policy.c  | 5 +----
>>   4 files changed, 7 insertions(+), 15 deletions(-)
>>
> 
>> diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
>> index 921bb254b9d1..a22367a62e93 100644
>> --- a/xen/xsm/xsm_policy.c
>> +++ b/xen/xsm/xsm_policy.c
> 
>> @@ -42,7 +41,6 @@ int __init xsm_multiboot_policy_init(
>>       /*
>>        * Try all modules and see whichever could be the binary policy.
>> -     * Adjust module_map for the module that is the binary policy.
>>        */
> 
> You can collapse to a single line comment /* ... */

Ack.

> With that:
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thank you.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:30:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:30:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815060.1228787 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syaVe-0008JM-Ux; Wed, 09 Oct 2024 17:30:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815060.1228787; Wed, 09 Oct 2024 17:30: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 1syaVe-0008JF-Og; Wed, 09 Oct 2024 17:30:02 +0000
Received: by outflank-mailman (input) for mailman id 815060;
 Wed, 09 Oct 2024 17:30: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syaVd-00080r-CE
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:30:01 +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 1bcb8ae9-8664-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 19:29:59 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a994277b38bso2659966b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 10:29:59 -0700 (PDT)
Received: from localhost ([52.174.59.202]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c914d785b8sm1670114a12.30.2024.10.09.10.29.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 10:29:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1bcb8ae9-8664-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728494999; x=1729099799; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=TDVxceK/6e2NS88Sl12jmXsa7ieisTvRCN42J7N2qV0=;
        b=bxw2qz2ltdsm5Qs/0YJK2F8Qz4UOxH2lBjPvLc3znnBb+sTI/f5d8I3oYikgkHl1rq
         j+XyLBNu2qlCGjijUPXXGMFs6/k0+RbOm6+55PJbzHEmNSTxQ3EVXwEjeWEXvPfvlr8n
         nXdQh8F29DZG/r5uORY2EaBgJ7DXLVLaUIDro=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728494999; x=1729099799;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=TDVxceK/6e2NS88Sl12jmXsa7ieisTvRCN42J7N2qV0=;
        b=pS3mPzrkmtSqbAV1GFTB/ZPK9xQcM0CMUzMPbbYkbg8Oie6ysuXBqOUDbKPSnnG/gn
         rSOIrGq1slUuijYNmtyzK+ZwB7Q62vXfdY6B3sQPlThnIdmqcwaD31SQhSd9cbUzIVzm
         cBscXmG12H4UkzSccu6qlwwDpKw4XB+V1HkMqd9aS+OW9fmXw4Dz5Daj9dB4wpZaHe9S
         oyA0zqHWHjajKDiJ3JUufyFRVq2h5Pz6A+HdjuEmcf4165eCaURyeQT+qUtz076SzOiD
         UtTIgy8yRDCY7oxZLTYnAU5U+2afpJxWCDjDh4xdib/jPYacfzp4R/lfbrv0HGHVc8HG
         CZWQ==
X-Forwarded-Encrypted: i=1; AJvYcCXBJef8d6oiSJPStQTZDmJorURJ2E8xXFJKmGp3ZgisSLNtePx5Lt354ez83n0h8deFVAEc2b57veU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyx5EYVHs8LhzSrFsvlHIkGSNzFCzd8QpJODWKrrzGW2Akx6EUp
	LVB7PDJufSKFP+/OIOUht0YeRT7Qh/t+8sxT1ZILhzOFTeHO3Rum+kzn4hTfXVA=
X-Google-Smtp-Source: AGHT+IHl2O7dEho1WjXNV6q0flapU4qsOcp6lvMINBl45Mu9BUDiLHF7c/4mzgzlAv1A6ae6iIaSQg==
X-Received: by 2002:a05:6402:358e:b0:5c8:8652:dfd1 with SMTP id 4fb4d7f45d1cf-5c91d526420mr3397695a12.1.1728494998788;
        Wed, 09 Oct 2024 10:29:58 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 18:29:57 +0100
Message-Id: <D4RGC7XGA2NU.A2M108CWPB1O@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Anthony PERARD"
 <anthony.perard@vates.tech>, "Xen-devel" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 09/11] xen/x86: Derive topologically correct x2APIC
 IDs from the policy
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-10-alejandro.vallejo@cloud.com>
 <56fc2b5e-54c6-46df-a044-de6efcc427d4@suse.com>
In-Reply-To: <56fc2b5e-54c6-46df-a044-de6efcc427d4@suse.com>

On Wed Oct 9, 2024 at 3:53 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:38, Alejandro Vallejo wrote:
> > 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 extended 0x26 in the future.
> >=20
> > 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.
>
> Is the first sentence of this latter paragraph missing an "If" or "When"
> at the beginning? As written I'm afraid I can't really make sense of it.
>
> Jan

It's a statement of current affairs. Could be rewritten as...

   The helper returns the legacy mapping when leaf 0xb is not implemented (=
as
   is the case at the moment).

Does that look better?

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 17:58:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 17:58:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815070.1228799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syawg-00044D-W5; Wed, 09 Oct 2024 17:57:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815070.1228799; Wed, 09 Oct 2024 17:57: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 1syawg-000446-ST; Wed, 09 Oct 2024 17:57:58 +0000
Received: by outflank-mailman (input) for mailman id 815070;
 Wed, 09 Oct 2024 17:57: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=hyzk=RF=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1syawf-00041L-1z
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 17:57:57 +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 027bae9a-8668-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 19:57:54 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a994cd82a3bso12215666b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 10:57:54 -0700 (PDT)
Received: from localhost ([52.174.59.202]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99399c6735sm641169366b.9.2024.10.09.10.57.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 10:57:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 027bae9a-8668-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728496674; x=1729101474; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=KxmrWvwuDGeOZGRzbQ+5ALcxHDIgzyvEYBIv0aaYrAs=;
        b=XpSMsy7fRyRGca3SBQhWUNKOeMfItzOTfPZHL/7LMQoMwZxLsOZn16LUhm7orINKlp
         /QC9hyYodVgIFysxsvG8TKGGpY2aTfz7lKoxAqzNoEuXm+VK0JdBoadBEV2Aub1d1Q5J
         oELOXJ0xFuKmH3+nsBqhgzJw4VRQOVPNlgEZA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728496674; x=1729101474;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=KxmrWvwuDGeOZGRzbQ+5ALcxHDIgzyvEYBIv0aaYrAs=;
        b=mL7jpNW687id202A4saOxOiRIwlLfS3nGAA8IbfENY2hCChhdvX97y+ObwpEauK4Tq
         tQxCFwHNcBwoVVQTZ3g51BSduHM4U7bRImmFimmu20+wjrKUdSYRJ07Zpb2QNOfF6TPI
         AvQJcUWKp/ZNw9wsueJ8Ax1mIbk9OStJhleP4eNlnBcw4C1s1WuO1nJzOKI4h5JyT4Ao
         w/TOiF9djPetftX50hpP0yzQoKYMP1p4/KaOaQ3cRhTEGE4MVyaZHzC5Tgxvxq6TSfnb
         QPX9o7oRNHCNUWiVaicd0qNcHeFvFU41tluEM85cFiaqXMD7SQLjCs25lYBRPnVqUP6q
         2Ttg==
X-Forwarded-Encrypted: i=1; AJvYcCULQpq7VYx7/Hjyu5UugQiOcUhlusTRXe+h9+9zfrN2dJJ97lST40ZgZRLUVf/Ag77epg90jQ09FY8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy6bSjv/+qZYIOsW3FQ+3xWVkbC+sBGOAqp7iunRjNB/ou6kjt8
	Zc+L2n7+TisQvqpllO4IzKskJueNfomHRxMKJpZsNJ0KQ80S+AQdKeA1EMCMR9c=
X-Google-Smtp-Source: AGHT+IEgveE69ThRQ45ONzllu+WEsUMPsir1Lg/zmgCUTYDncwiSJ6NqpuxasQ79X2Bf1aKyN3zDEg==
X-Received: by 2002:a17:907:3faa:b0:a99:39ef:59fc with SMTP id a640c23a62f3a-a998d19fbb6mr326107666b.15.1728496674243;
        Wed, 09 Oct 2024 10:57:54 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 09 Oct 2024 18:57:53 +0100
Message-Id: <D4RGXLJZQ6MA.1B1ND4RWZESBE@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>, "Anthony PERARD"
 <anthony.perard@vates.tech>, "Xen-devel" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 08/11] xen/lib: Add topology generator for x86
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-9-alejandro.vallejo@cloud.com>
 <7595b3ab-0891-42f7-81b0-5666651046b9@suse.com>
In-Reply-To: <7595b3ab-0891-42f7-81b0-5666651046b9@suse.com>

On Wed Oct 9, 2024 at 3:45 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:38, Alejandro Vallejo wrote:
> > --- a/xen/include/xen/lib/x86/cpu-policy.h
> > +++ b/xen/include/xen/lib/x86/cpu-policy.h
> > @@ -542,6 +542,22 @@ int x86_cpu_policies_are_compatible(const struct c=
pu_policy *host,
> >                                      const struct cpu_policy *guest,
> >                                      struct cpu_policy_errors *err);
> > =20
> > +/**
> > + * 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.
>
> Isn't it more like s/uses/fills/ (and the rest of the sentence then
> possibly adjust some to match)? The policy looks to be purely an output
> here (except for the vendor field).

Sure.

>
> > --- a/xen/lib/x86/policy.c
> > +++ b/xen/lib/x86/policy.c
> > @@ -2,6 +2,94 @@
> > =20
> >  #include <xen/lib/x86/cpu-policy.h>
> > =20
> > +static unsigned int order(unsigned int n)
> > +{
> > +    ASSERT(n); /* clz(0) is UB */
> > +
> > +    return 8 * sizeof(n) - __builtin_clz(n);
> > +}
> > +
> > +int x86_topo_from_parts(struct cpu_policy *p,
> > +                        unsigned int threads_per_core,
> > +                        unsigned int cores_per_pkg)
> > +{
> > +    unsigned int threads_per_pkg =3D threads_per_core * cores_per_pkg;
>
> What about the (admittedly absurd) case of this overflowing?

Each of them individually could overflow the fields in which they are used.

Does returning EINVAL if either threads_per_core or cores_per_pkg overflow =
the
INTEL structure j

>
> > +    unsigned int apic_id_size;
> > +
> > +    if ( !p || !threads_per_core || !cores_per_pkg )
> > +        return -EINVAL;
> > +
> > +    p->basic.max_leaf =3D MAX(0xb, p->basic.max_leaf);
>
> Better use the type-safe max() (and min() further down)?

Sure

>
> > +    memset(p->topo.raw, 0, sizeof(p->topo.raw));
> > +
> > +    /* thread level */
> > +    p->topo.subleaf[0].nr_logical =3D threads_per_core;
> > +    p->topo.subleaf[0].id_shift =3D 0;
> > +    p->topo.subleaf[0].level =3D 0;
> > +    p->topo.subleaf[0].type =3D 1;
> > +    if ( threads_per_core > 1 )
> > +        p->topo.subleaf[0].id_shift =3D order(threads_per_core - 1);
> > +
> > +    /* core level */
> > +    p->topo.subleaf[1].nr_logical =3D cores_per_pkg;
> > +    if ( p->x86_vendor =3D=3D X86_VENDOR_INTEL )
> > +        p->topo.subleaf[1].nr_logical =3D threads_per_pkg;
> > +    p->topo.subleaf[1].id_shift =3D p->topo.subleaf[0].id_shift;
> > +    p->topo.subleaf[1].level =3D 1;
> > +    p->topo.subleaf[1].type =3D 2;
> > +    if ( cores_per_pkg > 1 )
> > +        p->topo.subleaf[1].id_shift +=3D order(cores_per_pkg - 1);
> > +
> > +    apic_id_size =3D p->topo.subleaf[1].id_shift;
> > +
> > +    /*
> > +     * Contrary to what the name might seem to imply. HTT is an enable=
r for
> > +     * SMP and there's no harm in setting it even with a single vCPU.
> > +     */
> > +    p->basic.htt =3D true;
> > +    p->basic.lppp =3D MIN(0xff, threads_per_pkg);
> > +
> > +    switch ( p->x86_vendor )
> > +    {
> > +    case X86_VENDOR_INTEL: {
> > +        struct cpuid_cache_leaf *sl =3D p->cache.subleaf;
> > +
> > +        for ( size_t i =3D 0; sl->type &&
> > +                            i < ARRAY_SIZE(p->cache.raw); i++, sl++ )
> > +        {
> > +            sl->cores_per_package =3D cores_per_pkg - 1;
> > +            sl->threads_per_cache =3D threads_per_core - 1;
> > +            if ( sl->type =3D=3D 3 /* unified cache */ )
> > +                sl->threads_per_cache =3D threads_per_pkg - 1;
>
> I wasn't able to find documentation for this, well, anomaly. Can you plea=
se
> point me at where this is spelled out?

That's showing all unified caches as caches covering the whole package. We
could do it the other way around (but I don't want to reverse engineer what=
 the
host policy says because that's irrelevant). There's nothing in the SDM (AF=
AIK)
forcing L2 or L3 to behave one way or another, so we get to choose. I thoug=
ht
it more helpful to make all unified caches unified across the package. to g=
ive
more information in the leaf.

My own system exposes 2 unified caches (data trimmed for space):

``` cpuid

   deterministic cache parameters (4):
      --- cache 0 ---
      cache type                         =3D data cache (1)
      cache level                        =3D 0x1 (1)
      maximum IDs for CPUs sharing cache =3D 0x1 (1)
      maximum IDs for cores in pkg       =3D 0xf (15)
      --- cache 1 ---
      cache type                         =3D instruction cache (2)
      cache level                        =3D 0x1 (1)
      maximum IDs for CPUs sharing cache =3D 0x1 (1)
      maximum IDs for cores in pkg       =3D 0xf (15)
      --- cache 2 ---
      cache type                         =3D unified cache (3)
      cache level                        =3D 0x2 (2)
      maximum IDs for CPUs sharing cache =3D 0x1 (1)
      maximum IDs for cores in pkg       =3D 0xf (15)
      --- cache 3 ---
      cache type                         =3D unified cache (3)
      cache level                        =3D 0x3 (3)
      maximum IDs for CPUs sharing cache =3D 0x1f (31)
      maximum IDs for cores in pkg       =3D 0xf (15)
      --- cache 4 ---
      cache type                         =3D no more caches (0)
```

>
> Jan

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 18:33:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 18:33:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815082.1228809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sybUu-0003Yf-Kn; Wed, 09 Oct 2024 18:33:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815082.1228809; Wed, 09 Oct 2024 18: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 1sybUu-0003YY-Hn; Wed, 09 Oct 2024 18:33:20 +0000
Received: by outflank-mailman (input) for mailman id 815082;
 Wed, 09 Oct 2024 18:32: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=Mw+t=RF=gmail.com=hkallweit1@srs-se1.protection.inumbo.net>)
 id 1sybUE-0003XU-2V
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 18:32:38 +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 db02bb2e-866c-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 20:32:36 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c89e66012aso13179a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 11:32:36 -0700 (PDT)
Received: from ?IPV6:2a02:3100:b338:6300:ac71:eea5:34f6:504b?
 (dynamic-2a02-3100-b338-6300-ac71-eea5-34f6-504b.310.pool.telefonica.de.
 [2a02:3100:b338:6300:ac71:eea5:34f6:504b])
 by smtp.googlemail.com with ESMTPSA id
 a640c23a62f3a-a996167411csm356771566b.14.2024.10.09.11.32.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 11:32:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db02bb2e-866c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728498756; x=1729103556; 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=tHWLAGUkGjurq/EbYyrSVR7K+eem2ACfoMVdEJSkJug=;
        b=kMUL49/2XvYbH6xc2vYZeOWjuY9deGtYVqEBQdHksaPg8EX0CpU4fdiTiWfn2+hPYA
         5/evFfxl3mNgLWhteAL2yJn0QnYv9rxvMjdYw8z9TXptSMawT5mDqyrPeEAgdbHjmD8f
         3agRWmTMAC9EqqooIXP9QRMI42lJV2xX6SpBebiJbJq1euw4oCqOTNqpWfgPVlz/5BvG
         czDHWWTbelSsdDG8ZcuLnbQRk2dsZ2PM7UrkYzkvfOWR80BMMQihBhewnwJ/v/0T/Cno
         2YuAVeO/kbn6iKdDKdqoLB+Gv2yWZsUmWnVvXwaCWGQkMTBigSXIXHL0fu/SxyiarIR8
         vNSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728498756; x=1729103556;
        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=tHWLAGUkGjurq/EbYyrSVR7K+eem2ACfoMVdEJSkJug=;
        b=h+OHPAm+HUcwWHhsoXRbYeJBEZJTKX8A2fbCFg8Rfh8JTRH+OD10lc+vu9LvGJFRil
         uVO3DoXiWcgVSMlWa5HNlBKRFmmHCUYWKTsrPzrBO1bHi/NqvVWPdrghm7d6cT7hQVIf
         3TSOGf1WGyXqxqyivN4wQezEx4j/UZM/NK2mnIv0PUvHAP/I+seVEPCgOzEn2JMPDiA4
         RVpHI7P3VfXcMzOmAm6m3QPZjFZm3vkrnLRTM8Do7SAnb7e2Y42qaNN+ShiulQ4XNq7H
         VAgrCtDOnGbLQ1gdZ5WiGKCUH9uI5Nk66xKdLD1lote/tSWelmqGyX+CM25cEY+YIsHg
         itVg==
X-Forwarded-Encrypted: i=1; AJvYcCWSdptuKWYaZHCXbPrv7EH5JX4f/n3kCitF/+ylRGeo4w5sJFRCTvN2RZT9iFyqbWPbcRZ8uqLb5uw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzcb8RbKqLdnugo6apAP2HjZvWzMCAcCT5Ih1X9KTmo7qfzHxzN
	nDOm6rORBGBTHgrqPIpMNKqcXZdJQvrQtmwVPviYcyLScy4LxYn+
X-Google-Smtp-Source: AGHT+IEBv3GCm8Aviv10dRX1hBYK+NueR4e/GzPds1/fWd5JaekK6CwLsS7GL+rfjHYS5z/u2KXZwg==
X-Received: by 2002:a17:907:970e:b0:a99:89ea:593e with SMTP id a640c23a62f3a-a998d117e60mr306519666b.13.1728498755241;
        Wed, 09 Oct 2024 11:32:35 -0700 (PDT)
Message-ID: <8643a212-884c-48de-a2d0-0f068fc49ca2@gmail.com>
Date: Wed, 9 Oct 2024 20:32:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 00/13] Remove implicit devres from pci_intx()
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>, Juergen Gross
 <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
Content-Language: en-US
From: Heiner Kallweit <hkallweit1@gmail.com>
Autocrypt: addr=hkallweit1@gmail.com; keydata=
 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
In-Reply-To: <20241009083519.10088-1-pstanner@redhat.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 10:35, Philipp Stanner wrote:
> Hi all,
> 
> this series removes a problematic feature from pci_intx(). That function
> sometimes implicitly uses devres for automatic cleanup. We should get
> rid of this implicit behavior.
> 
> To do so, a pci_intx() version that is always-managed, and one that is
> never-managed are provided. Then, all pci_intx() users are ported to the
> version they need. Afterwards, pci_intx() can be cleaned up and the
> users of the never-managed version be ported back to pci_intx().
> 
> This way we'd get this PCI API consistent again.
> 
AFAICS pci_intx() is used only by drivers which haven't been converted
to the pci_alloc_irq_vectors() API yet. Wouldn't it be better to do this
instead of trying to improve pci_intx()?
Eventually pci_intx() would have to be used in PCI core only.

> The last patch obviously reverts the previous patches that made drivers
> use pci_intx_unmanaged(). But this way it's easier to review and
> approve. It also makes sure that each checked out commit should provide
> correct behavior, not just the entire series as a whole.
> 
> Merge plan for this would be to enter through the PCI tree.
> 
> Please say so if you've got concerns with the general idea behind the
> RFC.
> 
> Regards,
> P.
> 
> Philipp Stanner (13):
>   PCI: Prepare removing devres from pci_intx()
>   ALSA: hda: hda_intel: Use always-managed version of pcim_intx()
>   drivers/xen: Use never-managed version of pci_intx()
>   net/ethernet: Use never-managed version of pci_intx()
>   net/ntb: Use never-managed version of pci_intx()
>   misc: Use never-managed version of pci_intx()
>   vfio/pci: Use never-managed version of pci_intx()
>   PCI: MSI: Use never-managed version of pci_intx()
>   ata: Use always-managed version of pci_intx()
>   staging: rts5280: Use always-managed version of pci_intx()
>   wifi: qtnfmac: use always-managed version of pcim_intx()
>   HID: amd_sfh: Use always-managed version of pcim_intx()
>   Remove devres from pci_intx()
> 
>  drivers/ata/ahci.c                            |  2 +-
>  drivers/ata/ata_piix.c                        |  2 +-
>  drivers/ata/pata_rdc.c                        |  2 +-
>  drivers/ata/sata_sil24.c                      |  2 +-
>  drivers/ata/sata_sis.c                        |  2 +-
>  drivers/ata/sata_uli.c                        |  2 +-
>  drivers/ata/sata_vsc.c                        |  2 +-
>  drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 ++--
>  drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c |  2 +-
>  .../wireless/quantenna/qtnfmac/pcie/pcie.c    |  2 +-
>  drivers/pci/devres.c                          | 24 +++----------------
>  drivers/pci/pci.c                             | 14 +----------
>  drivers/staging/rts5208/rtsx.c                |  2 +-
>  include/linux/pci.h                           |  1 +
>  sound/pci/hda/hda_intel.c                     |  2 +-
>  15 files changed, 18 insertions(+), 47 deletions(-)
> 



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 18:36:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 18:36:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815092.1228818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sybYE-0004Lh-3t; Wed, 09 Oct 2024 18:36:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815092.1228818; Wed, 09 Oct 2024 18:36: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 1sybYE-0004La-1A; Wed, 09 Oct 2024 18:36:46 +0000
Received: by outflank-mailman (input) for mailman id 815092;
 Wed, 09 Oct 2024 18:36: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sybYD-0004LU-3G
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 18:36:45 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6d11d941-866d-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 20:36:42 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728498991381920.1946666915975;
 Wed, 9 Oct 2024 11:36:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6d11d941-866d-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728498998; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=MTmfxWxvazSwrTr6ubw18i/0VLL2PwU92ew0L0kXQOEHH2CjZPd0F+yHV6vqYDTkL0gmRO11T287BgdD3UnIUmGUvMjkp/TzGFrKUKWLYHiOc8HldB1x1n643BSUJu03jYW5oYu84f+SIjWLnKjqubpYQg1F5LdGstYoS21Gq0c=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728498998; 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=S7xRb9t0TVRaKiVlpoDe5p38KKpnUIzlqsuq6Sm54bo=; 
	b=RWmi38A8lTLYDTLrLEVey3C9BD35Hsljj8xpIX282y1kAFlDZMGZaCgt+FGvnXHQTYrRS+miUndqlW/ColhAfm4JoPq0p4CzETAjZoqJVdAl8vMmzoAgmaM5kRZiSxZNe5D5dQ0qIx3KXA3EB19DzHOzwU5dBycGvBeoyl8QAyQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728498998;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=S7xRb9t0TVRaKiVlpoDe5p38KKpnUIzlqsuq6Sm54bo=;
	b=mOaN6Lwxk7retLRiZfE85+uzXvTj08dVJalwJp37JWrJK/mSuTONTzVHfdLfh5iF
	WpDUZ4Xvl5KFCH/te0n012XhWGdqbLWUjnXqjdjAI/DeBj2XVXHA+cm9RD8hUDqh/OT
	8kGWmywHWkEkl+vro9QQk9I2aKNP2hrDQGEhfk6g=
Message-ID: <0fa28d76-d0e9-4bcf-8782-02020127a2f6@apertussolutions.com>
Date: Wed, 9 Oct 2024 14:36:29 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 24/44] x86/boot: remove module_map usage by ramdisk
 loading
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-25-dpsmith@apertussolutions.com>
 <06618ae2-a7fd-484e-b1d5-87c5065df21c@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <06618ae2-a7fd-484e-b1d5-87c5065df21c@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 12:46, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> The ramdisk loading is the last user of module_map, remove
>> its usage and any remaining remnants of module_map.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 11 +++++------
>>   1 file changed, 5 insertions(+), 6 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index b0946216ea3f..0d2ee19998aa 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1037,7 +1037,7 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       struct boot_info *bi;
>>       multiboot_info_t *mbi;
>>       module_t *mod;
>> -    unsigned long nr_pages, raw_max_page, module_map[1];
>> +    unsigned long nr_pages, raw_max_page;
>>       int i, j, e820_warn = 0, bytes = 0;
>>       unsigned long eb_start, eb_end;
>>       bool acpi_boot_table_init_done = false, relocated = false;
>> @@ -1187,15 +1187,14 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>           panic("dom0 kernel not specified. Check bootloader 
>> configuration\n");
>>       /* Check that we don't have a silly number of modules. */
>> -    if ( bi->nr_modules > sizeof(module_map) * 8 )
>> +    if ( bi->nr_modules > MAX_NR_BOOTMODS + 1 )
> 
> Don't you want to check MAX_NR_BOOTMODS, to keep the last module for Xen 
> itself?

Good question. I went back to confirm and it does not look like any of 
the module_map bits was used for tracking xen in the module list. so 
yes, drop it back down to just MAX_NR_BOOTMODS.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 19:11:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 19:11:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815105.1228829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syc5u-0004ix-Fv; Wed, 09 Oct 2024 19:11:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815105.1228829; Wed, 09 Oct 2024 19:11: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 1syc5u-0004iq-DD; Wed, 09 Oct 2024 19:11:34 +0000
Received: by outflank-mailman (input) for mailman id 815105;
 Wed, 09 Oct 2024 19:11:33 +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 1syc5t-0004ig-6T; Wed, 09 Oct 2024 19:11:33 +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 1syc5t-0008Rw-4Z; Wed, 09 Oct 2024 19:11: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 1syc5s-0006A3-OC; Wed, 09 Oct 2024 19:11:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syc5s-0007sk-Nu; Wed, 09 Oct 2024 19:11: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=MbK41LvWs7cX8Zx8eAE+txggxbzsDJ9Rz7dNLP0GkDc=; b=EAH1W/v7gfoG+sN0y6srv0VsVh
	kz7KLPCiB2nDbDrNAL0DTFHFZer0rev5+gEHJEQeu+EgZKrz9AHbZj2ZuMd4qIl9sLxcLW9V2l9Hm
	g+FQQ9Oyk89CskNCvJRaFQ0EvUcWyt8lSAEJhmh35IEZV+PcY0loeKSk8EPGriAFkelQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188019-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188019: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-armhf-armhf-libvirt-vhd:<job status>:broken:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt-vhd:host-install(5):broken:heisenbug
    qemu-mainline:test-armhf-armhf-xl-rtds:xen-boot:fail:heisenbug
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=2af37e791906cfda42cb9604a16d218e56994bb1
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 19:11:32 +0000

flight 188019 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188019/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-libvirt-vhd    <job status>                 broken  in 188013
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-vhd 5 host-install(5) broken in 188013 pass in 188019
 test-armhf-armhf-xl-rtds      8 xen-boot         fail in 188013 pass in 188019
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188013

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-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-raw 14 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                2af37e791906cfda42cb9604a16d218e56994bb1
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   23 days
Failing since        187731  2024-09-17 13:11:20 Z   22 days   38 attempts
Testing same since   188005  2024-10-08 02:05:22 Z    1 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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-libvirt-vhd broken

Not pushing.

(No revision log; it would be 8214 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 19:23:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 19:23:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815119.1228844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sycGv-0001C3-Hu; Wed, 09 Oct 2024 19:22:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815119.1228844; Wed, 09 Oct 2024 19: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 1sycGv-0001Bw-Eg; Wed, 09 Oct 2024 19:22:57 +0000
Received: by outflank-mailman (input) for mailman id 815119;
 Wed, 09 Oct 2024 19:22: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=6gYK=RF=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1sycGu-0001Bq-Ce
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 19:22:56 +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 e1d9ace7-8673-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 21:22:54 +0200 (CEST)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2fad8337aa4so1574671fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 12:22:54 -0700 (PDT)
Received: from [10.17.77.207] (ll-22.209.223.85.sovam.net.ua. [85.223.209.22])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2faf9b3b44csm15405821fa.131.2024.10.09.12.22.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 12:22:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1d9ace7-8673-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728501773; x=1729106573; 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=GSQLceG9p3QM+OuWGP/6HoAoz3Sdm2qiOw4aD+eOnMc=;
        b=BU1/LqQ9eyTaAdN6nTy5A6HkDCvwTmqeyEKM8Z8u3lGRaMfeGmBAWj1oc0o7uhzzwo
         R5JN9jmVAj8BHyXTlAbzGu4GbvR1tJf+wxFNxlB08RHHZzhSCwOX/AVySVWp9ob+I9Yd
         jqXQjcFj5sfqmdmQl7RDgNVZPz6rhYTfPkiUTKeTDGna+550YpTdyqrUr6JlrrrZKy2E
         4RkRCCY/hODnxDCDoROJDyEcYwpaYq5lbg3Gx6PzfRecckralh5NmaMr5zXRem4TMAum
         rN6jA9KahJ5xj3qVfhbNopCILbnX4bYYnMLWqAtc5cZhJRXXR8ic1JOgktQRq7YeguvG
         AJnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728501773; x=1729106573;
        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=GSQLceG9p3QM+OuWGP/6HoAoz3Sdm2qiOw4aD+eOnMc=;
        b=bPhuX6H5iTSH1Sca1s820rzwRrHov39YMvQoXaQ0OC4nEaDXEa2VZPWjiA8k1P/ZNC
         vWVrAbT1nw4MqD0v1SgaSAeN1Eo0w95eRKqXSoGrB5AG81PYwa/rnb9QLJop2LHfth5/
         M3quu5eUmkFDJkcQsNSxVINdlgXh2NfPT3CWIM0oQVt01vL5ZtDdGV+Q0tQ/IkLFmwc+
         FdkOwog+6P/JtJ7b0Xd4upEGath9KNuz9la0+jnaQNFHKlpCQ2y4WcVdIivyfwxbrkFh
         K4gqKbZH8e+5+3cdOW9+Hl2h69N2NduDMXTSk2iG5POGA1+Vl/nH2//y/VI8Kae/nGGk
         xcWw==
X-Forwarded-Encrypted: i=1; AJvYcCXHG81kHGL68Q4473Un0wKzoWdcRwfO9XZyXTA1LIPPoZs4mR7716Z0S4jlXAaP2WJsxO6ThHJOCxY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyKsA/Pdxb2TNK6MGVG6eLDZY0zHxd2AsybcaFG2AZUu5Jrja6M
	c6EVP/UtzEXmTDSMesmPIM8gp0DKV3cWnIIMxda/XWCS0pMMIgT4
X-Google-Smtp-Source: AGHT+IEay2mED8mMcC7pTrRgQKAWjvKeGxchQ+d9aqdgFUey7WFBtqdmJuYNSmfSBM8Q10KwxkQaww==
X-Received: by 2002:a2e:d01:0:b0:2f3:ee5a:ab8b with SMTP id 38308e7fff4ca-2fb187ce9a2mr21382371fa.43.1728501773007;
        Wed, 09 Oct 2024 12:22:53 -0700 (PDT)
Message-ID: <97b40251-bc72-40c7-9023-67684bd636ca@gmail.com>
Date: Wed, 9 Oct 2024 22:22:48 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
To: Julien Grall <julien@xen.org>
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>,
 xen-devel@lists.xenproject.org
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <1c27b9c0-eb2e-49c2-a94b-d1b8ac6550b1@xen.org>
Content-Language: en-US
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
In-Reply-To: <1c27b9c0-eb2e-49c2-a94b-d1b8ac6550b1@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 09.10.24 10:26, Julien Grall wrote:
> Hi,

Hello Julien


> 
> On 07/10/2024 19:55, Oleksandr Tyshchenko wrote:
>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>
>> Add common requirements for a physical device assignment to Arm64
>> and AMD64 PVH domains.
>>
>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>> ---
>> Based on:
>> [PATCH] docs: fusa: Replace VM with domain
>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd.com/
>> ---
>> ---
>>   .../reqs/design-reqs/common/passthrough.rst   | 365 ++++++++++++++++++
>>   docs/fusa/reqs/index.rst                      |   1 +
>>   docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>   docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>   4 files changed, 428 insertions(+)
>>   create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>   create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>
>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst 
>> b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>> new file mode 100644
>> index 0000000000..a1d6676f65
>> --- /dev/null
>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>> @@ -0,0 +1,365 @@
>> +.. SPDX-License-Identifier: CC-BY-4.0
>> +
>> +Device Passthrough
>> +==================
>> +
>> +The following are the requirements related to a physical device 
>> assignment
>> +[1], [2] to Arm64 and AMD64 PVH domains.
>> +
>> +Requirements for both Arm64 and AMD64 PVH
>> +=========================================
>> +
>> +Hide IOMMU from a domain
>> +------------------------ > +
>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>> +
>> +Description:
>> +Xen shall not expose the IOMMU device to the domain even if I/O 
>> virtualization
>> +is disabled. The IOMMU shall be under hypervisor control only
> This requirement would prevent us to expose a virtual SMMU to the guest.


Are you talking about assigning stage-1 SMMU to the guest? Yes, that is 
a valid point...


> I think the requirement should only be Xen configures the stage-2 IOMMU.


    ... you are right, as was discussed in separate emails, the 
requirement would be turned into "Xen shall configure the IOMMU at boot 
according to the stage 2 translation tables."

> 
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Discover PCI devices from hardware domain
>> +-----------------------------------------
>> +
>> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
>> +
>> +Description:
>> +The hardware domain shall enumerate and discover PCI devices and 
>> inform Xen
>> +about their appearance and disappearance.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Discover PCI devices from Xen
>> +-----------------------------
>> +
>> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
>> +
>> +Description:
>> +Xen shall discover PCI devices (enumerated by the firmware 
>> beforehand) during
>> +boot if the hardware domain is not present.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign PCI device to domain (with IOMMU)
>> +----------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall assign a specified PCI device (always implied as 
>> DMA-capable) to
>> +a domain during its creation using passthrough (partial) device tree 
>> on Arm64
>> +and Hyperlaunch device tree on AMD-x86. The physical device to be 
>> assigned is
>> +protected by the IOMMU.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign PCI device from domain (with IOMMU)
>> +--------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall deassign a specified PCI device from a domain during its 
>> destruction.
>> +The physical device to be deassigned is protected by the IOMMU.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Forbid the same PCI device assignment to multiple domains
>> +---------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
>> +
>> +Description:
>> +Xen shall not assign the same PCI device to multiple domains by 
>> failing to
>> +create a new domain if the device to be passed through is already 
>> assigned
>> +to the existing domain. Also different PCI devices which share some 
>> resources
>> +(interrupts, IOMMU connections) can be assigned only to the same domain.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Requirements for Arm64 only
>> +===========================
>> +
>> +Assign interrupt-less platform device to domain
>> +-----------------------------------------------
> 
> Why does it need to be "interrupt-less"?


This requirement describes one of the possible cases of platform device.

My answer from another email:

Those devices exist and can be assigned to a domain, they are configured
slightly differently in comparison with devices with interrupts
("xen,path" is not needed for the former), other code paths are executed
in Xen.

**********

There was an intention to keep in separate requirements all relevant 
possible cases that can be done using what the passthrough feature 
provides (let's say all possible combinations of dom0less passthrough 
properties).

This is why the document has, for example, the following special cases:
- Assign interrupt-less platform device to domain
- Assign non-DMA-capable platform device to domain
- Assign DMA-capable platform device to domain (with IOMMU)
- Assign DMA-capable platform device to domain (without IOMMU)
...

Now, as I got from other emails, this scheme is not suited well and 
needs to be reworked.


> 
>> +
>> +`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
>> +
>> +Description:
>> +Xen shall assign a specified platform device that has only a MMIO region
>> +(does not have any interrupts) to a domain during its creation using 
>> passthrough
>> +device tree.
> 
> Is this requirement meant to be written from a dom0less point of view? 
> Asking because platform device are assigned using an xl configuration 
> for non-dom0less.

Yes. The more, all requirements in this document imply boot time 
domains. Likely, it should be explicitly stated at the beginning of this 
document.

> 
> 
>> +The example of interrupt-less device is PWM or clock controller.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign interrupt-less platform device from domain
>> +---------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_interrupt_less_platform_device~1`
>> +
>> +Description:
>> +Xen shall deassign a specified platform device that has only a MMIO 
>> region
>> +(does not have any interrupts) from a domain during its destruction.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign non-DMA-capable platform device to domain
>> +------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_non_dma_platform_device~1`
>> +
>> +Description:
>> +Xen shall assign a specified non-DMA-capable platform device to a 
>> domain during
>> +its creation using passthrough device tree.
>> +The example of non-DMA-capable device is Timer.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign non-DMA-capable platform device from domain
>> +----------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_non_dma_platform_device~1`
>> +
>> +Description:
>> +Xen shall deassign a specified non-DMA-capable platform device from a 
>> domain
>> +during its destruction.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign DMA-capable platform device to domain (with IOMMU)
>> +---------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_dma_platform_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall assign a specified DMA-capable platform device to a domain 
>> during
>> +its creation using passthrough device tree. The physical device to be 
>> assigned
>> +is protected by the IOMMU.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign DMA-capable platform device from domain (with IOMMU)
>> +-------------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_deassign_dma_platform_device_with_iommu~1`
>> +
>> +Description:
>> +Xen shall deassign a specified DMA-capable platform device from a 
>> domain during
>> +its destruction. The physical device to be deassigned is protected by 
>> the IOMMU.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Assign DMA-capable platform device to domain (without IOMMU)
>> +------------------------------------------------------------
>> +
>> +`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
>> +
>> +Description:
>> +Xen shall assign a specified DMA-capable platform device to a domain 
>> during
>> +its creation using passthrough device tree. The physical device to be 
>> assigned
>> +is not protected by the IOMMU.
>> +The DMA-capable device assignment which is not behind an IOMMU is 
>> allowed for
>> +the direct mapped domains only. The direct mapped domain must be 
>> either safe or
> 
> What do you mean by "safe" in the context? Did you intend to say "trusted"?

Yes, trusted, thanks.


> 
>> +additional security mechanisms for protecting against possible 
>> malicious or
>> +buggy DMA devices must be in place, e.g. Xilinx memory protection 
>> unit (XMPU)
>> +and Xilinx peripheral protection unit (XPPU).
>> +
>> +Rationale:
>> +The IOMMU is absent from the system or it is disabled (status = 
>> "disabled"
>> +in the host device tree).
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Deassign DMA-capable platform device from domain (without IOMMU)
>> +----------------------------------------------------------------
> 
> Do we actually need a separate section for deassign assign without the 
> IOMMU? IOW, can this be combined with the deassign with IOMMU?


The point was that on deassigment, Xen additionally detaches the device 
from the IOMMU (if the device is protected by the IOMMU) in comparison 
with the device not protected by the IOMMU, and this needs to be covered 
and tested somehow. Therefore, two separate requirement exist here.

Or do you, perhaps, mean to combine with "Deassign non-DMA-capable 
platform device from domain"? Which could be combined, I think.

> 
>> +
>> +`XenSwdgn~passthrough_deassign_dma_platform_device_without_iommu~1`
>> +
>> +Description:
>> +Xen shall deassign a specified DMA-capable platform device from a 
>> domain during
>> +its destruction. The physical device to be deassigned is not protected
>> +by the IOMMU.
>> +
>> +Rationale:
>> +The IOMMU is absent from the system or it is disabled (status = 
>> "disabled"
>> +in the host device tree).
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Map platform device MMIO region identity
>> +----------------------------------------
> 
> Can you explain why we need to make the distinction between identity 
> mapping and ... >
>> +
>> +`XenSwdgn~passthrough_map_platform_device_mmio_region_ident~1`
>> +
>> +Description:
>> +Xen shall map platform device memory region identity (guest address ==
>> +physical address) when assigning a specified platform device to a 
>> domain.
>> +The device can be either non-DMA-capable or DMA-capable.
>> +
>> +Rationale:
>> +
>> +Comments:
>> +
>> +Covers:
>> + - `XenProd~device_passthrough~1`
>> +
>> +Map platform device MMIO region non-identity
>> +--------------------------------------------
> 
> ... non-identity one?

MMIO remapping is also what user can do using passthrough feature, the 
point again was how could we check that it worked if there was no 
requirement covering it.


> 
> Cheers,
> 


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 19:45:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 19:45:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815134.1228854 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sycc8-0001is-Cd; Wed, 09 Oct 2024 19:44:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815134.1228854; Wed, 09 Oct 2024 19: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 1sycc8-0001il-9a; Wed, 09 Oct 2024 19:44:52 +0000
Received: by outflank-mailman (input) for mailman id 815134;
 Wed, 09 Oct 2024 19: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=Ew84=RF=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1sycc6-0001if-HW
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 19:44:50 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on2060d.outbound.protection.outlook.com
 [2a01:111:f403:200a::60d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f0543a6d-8676-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 21:44:48 +0200 (CEST)
Received: from BYAPR05CA0086.namprd05.prod.outlook.com (2603:10b6:a03:e0::27)
 by DS0PR12MB7608.namprd12.prod.outlook.com (2603:10b6:8:13b::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Wed, 9 Oct
 2024 19:44:35 +0000
Received: from SJ5PEPF000001CF.namprd05.prod.outlook.com
 (2603:10b6:a03:e0:cafe::15) by BYAPR05CA0086.outlook.office365.com
 (2603:10b6:a03:e0::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Wed, 9 Oct 2024 19:44:35 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ5PEPF000001CF.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.8048.13 via Frontend Transport; Wed, 9 Oct 2024 19:44: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.39; Wed, 9 Oct
 2024 14:44:33 -0500
Received: from [192.168.122.223] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Wed, 9 Oct 2024 14:44:32 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f0543a6d-8676-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=NKEbjnWjlDWpDZHf1NOUS2aTg+Ji8eRiijhXW8N/mRW58aPa+5HMW6hlkhPj/iuVUObSPcnJZBMuT9sPwqI0iNeiVEN81gkSSe+kM5mWjKsQCFRgIcSZx9GJAV2KoWsCUG4pHS+BdcZeTMDXzxUQ+BTrbs+LhdskaiXm2CxaLv1wPTSgc3Aa9cYLfojYZpQZetOnR1VyhTQlljA/82WMXM1nBKzG9BllLyPllclNAkHb3/0M9Pz049LoYYn9GkPueEBe9dJ2biozR1dO5VBsDMGcf7lw+rkka5HtXTqvH1t6nmK7AJlvWGB+4uTXdiMJ32OtZay0Vg0wBrPEoBDwQw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=1QKKp7QM21USfNn3ts1sfPgSOY8GaCm452qS0059oIs=;
 b=Lyq7j0msoPJ2CLluHsvhvvt1QWN78JuOEK3dAJ7s8oeMaDvaQkozL19MlF8X933+54STwynYHNRnJ7TIGqnMg2s4rgHVTR8hSIbqM9TyIJvkRSKQCCiszuTxlmRm/6oSoC0ZoaS+zUCOWjQQ4BwczExoHk4DhbFavH2CRg10A/KZCFRCjdFpQRb4uhhwGRvNSQPgS1ikcbZn5f4c7/nLxbPVhS5a0dZ+pyI1tAb7QGgar4bSztEXFUqzQkkZj2kZr/FUrXutEbchakoTM1g5+5WnSsOGaI3wJ6wsJeO6NbQxRgmD41WzCMxEJRu+q5YacFPeOg08CUxhiT+MIkt1Fw==
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=1QKKp7QM21USfNn3ts1sfPgSOY8GaCm452qS0059oIs=;
 b=OmVce4u/yIbLT1chN3WVMgKKoaXEIahPciJYrr7YCmQe/Wmzoq8kUnfCIw4HGWpai//d4v0En21ifKFaXKV34zGGWYBUS36EW6N3nnCh/rQoowc1tsWv1I00BPDX/Vyk6i66Rw79JHLOypz3cwQVU3bQ3v0gJbOJNIZtSiZHnUk=
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: <695c81b1-1cc0-40f2-ba41-8c96a461c668@amd.com>
Date: Wed, 9 Oct 2024 15:44:32 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] x86/msi: fix locking for SR-IOV devices
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>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Teddy Astie
	<teddy.astie@vates.tech>, <xen-devel@lists.xenproject.org>
References: <20240827035929.118003-1-stewart.hildebrand@amd.com>
 <0742fd21-d606-440a-a7fa-dd3bfccfa1c4@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <0742fd21-d606-440a-a7fa-dd3bfccfa1c4@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CF:EE_|DS0PR12MB7608:EE_
X-MS-Office365-Filtering-Correlation-Id: 9642e2f6-fb2e-436a-f530-08dce89acd7e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?QjJXNm9QTGRoZ1BUUkFoR1lnSEFuSjBCb1F6bERCckRwOFRzeTIzUUhJVzYv?=
 =?utf-8?B?UklpUTlQV08yQnhEMlFSS3RYUVVPRFRBMmhyUDFWL3lXVDA3cGdJNzVFZ0Vw?=
 =?utf-8?B?UVJ6WHdQUmdyWWViZG5scTBvNzE3LzhKSCtCQ2duWjJtcXVENGZ1NWdRTEUv?=
 =?utf-8?B?S1FYTWJaY2trVWNWN1FJb3pBaTNpbThOUGRrVDFWdWphMHVkMmMwcEQ4OW5y?=
 =?utf-8?B?T0lMUVYwZkFZdXFiME5pUGJBVzlsRDBvaUpVVXZPSmhMRWFEeUNmaS84QW0y?=
 =?utf-8?B?V3JnT28vWUJvM1VLQml6bEN4WUVWSXRFVFBQbHJLSXBnZERaVGMvdWZFTnRT?=
 =?utf-8?B?NGRtUXlDZWF2aVFaZHhlaHhmL25STERmUnp3enhIc2ZRS0JCa2FTZHlrZEw2?=
 =?utf-8?B?d2JSYnZwZVRtNDF2YXIrbmlUK1E1QkErRWZJWDJPL2c4UlZMOTlpOGxwR3Jo?=
 =?utf-8?B?L3FqcWJpM0F2UHUvamR6dis3Q1YvK0ZvVDdUWGFVMlZDb0F1dDVlc1JlR3Zl?=
 =?utf-8?B?TWtpcTdmbEZzak5hU1JrWlNNeUlpWUdGbytnVVBaaVR3Ui9nc0xTa0wwN0dB?=
 =?utf-8?B?cjBiaUUvZng1d1N2ZkZ3UEpabjV0ZldhT293YXUxVkdVRisxWEF2dHd3aXpk?=
 =?utf-8?B?a1U3b1U2aVFYMGcvTTJ1SnExQWZGZTM2QVZLcFB4azE5WFcwL25nTDFBb3BL?=
 =?utf-8?B?bE9taEJRdEtVWm9uOFhJbWdhVUl1TE5ORXdiS09SZnhXRStNV21SckEvWjNB?=
 =?utf-8?B?ZUpqMHQ2OS9OYUlTNUg0dm1aNkFRblZhMWlnSnlGMkxVOU0vb2huZ2pHdVJH?=
 =?utf-8?B?a3NNek1ZWUt5dWFwY3QwWm96U2V5Mm9ueDJjblpQV1VOeEx3VStPTWlyS0Fi?=
 =?utf-8?B?UWw3SVZTdkhhdmdQa0xCWnh4YUpRcXU4RjRxSndFeVAxczY5NFVBNGZaMmYw?=
 =?utf-8?B?L0hHbDJRNkJ3a0RIcFp1Z09vSlpuRmJQQXVYbnVkQnVWdUg0UUVzcGpnRmND?=
 =?utf-8?B?aHJTYnN1UjJCMmxPeG9pUGZFTkJyR1dpWUhpN2QweHAySzZQK3JnTk9SZXp3?=
 =?utf-8?B?SGUzRCtaZEdBckVtY2QzR0Z1N2x0cnhFclREc3Z4RllYVkIrbENYL3hYUlBz?=
 =?utf-8?B?UkoyYURkNTNpSVIrTUVjTGVxVVV5RE1LWWtxaThIYVA3RVJERzRPUno1a2cr?=
 =?utf-8?B?SU1YRVZLMUVtdTV3U1FpdWtVaHdqNWM2WUllNEJRZ090SW1ER1lhN0JJSDdw?=
 =?utf-8?B?WjNpZHN2NkFZcVN0SXNibXZlcmxTWG9RYnVNTlZEcThyajEwZkZsalVOZ1JZ?=
 =?utf-8?B?L2JUVlpvaGM2N0MwMHI2SUExRzFFY0JnZW55NkNjejNTbC9kZ0FBR2Z3QTQr?=
 =?utf-8?B?Yk9EZ0tLcU1BYWltWUNUcFQ2L3cvRHgzZWNtSnladllRblJvbUdjb0RjTDk4?=
 =?utf-8?B?S1ZOdGt2cDBQQVNBRms4RXQ0bFZ1djg5eGMwZyt0OG1ObytQRHl0ZTYybkQ0?=
 =?utf-8?B?VDc2bzVBbDJRYkZqOWFRa01yVjNqK3B0WG9jUzUxYXphNThNa0UrdXEwRTZU?=
 =?utf-8?B?SlRLVzVJT0RWbk02b0laZ3hFeU5FTnhnN1M0clBudGRaaTBDQXNhbmpDM2Rv?=
 =?utf-8?B?aUNERmI5eExlOXEzMlFPV0Fza2JyY3NHcDJKMFhJci8rOFlWaUpYMGt6ZGk4?=
 =?utf-8?B?QWJVMlg0SUZDVnc5S3ZtYWlRS3BKN0FYdGRDeDdFVStVNVVNTVBUUUlHV2gz?=
 =?utf-8?B?cldZRUxvbHk4Q1daTFJOYWxvaldJMXVGbzJwTE5JS1A0MUR0YlFPTy95SXll?=
 =?utf-8?B?L3creWx4VWZ5T2UxNVNFb3dNd1R2QW9veDA2TFJyTGtLc0ZDM3lSL1pOZmtI?=
 =?utf-8?Q?0VHz3aGADR+LZ?=
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:(13230040)(36860700013)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 19:44:34.8618
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9642e2f6-fb2e-436a-f530-08dce89acd7e
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:
	SJ5PEPF000001CF.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7608

On 8/28/24 06:36, Jan Beulich wrote:
> On 27.08.2024 05:59, Stewart Hildebrand wrote:
>> In commit 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci
>> structure") a lock moved from allocate_and_map_msi_pirq() to the caller
>> and changed from pcidevs_lock() to read_lock(&d->pci_lock). However, one
>> call path wasn't updated to reflect the change, leading to a failed
>> assertion observed under the following conditions:
>>
>> * PV dom0
>> * Debug build (debug=y) of Xen
>> * There is an SR-IOV device in the system with one or more VFs enabled
>> * Dom0 has loaded the driver for the VF and enabled MSI-X
>>
>> (XEN) Assertion 'd || pcidevs_locked()' failed at drivers/passthrough/pci.c:535
>> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Not tainted ]----
>> ...
>> (XEN) Xen call trace:
>> (XEN)    [<ffff82d040284da8>] R pci_get_pdev+0x4c/0xab
>> (XEN)    [<ffff82d040344f5c>] F arch/x86/msi.c#read_pci_mem_bar+0x58/0x272
>> (XEN)    [<ffff82d04034530e>] F arch/x86/msi.c#msix_capability_init+0x198/0x755
>> (XEN)    [<ffff82d040345dad>] F arch/x86/msi.c#__pci_enable_msix+0x82/0xe8
>> (XEN)    [<ffff82d0403463e5>] F pci_enable_msi+0x3f/0x78
>> (XEN)    [<ffff82d04034be2b>] F map_domain_pirq+0x2a4/0x6dc
>> (XEN)    [<ffff82d04034d4d5>] F allocate_and_map_msi_pirq+0x103/0x262
>> (XEN)    [<ffff82d04035da5d>] F physdev_map_pirq+0x210/0x259
>> (XEN)    [<ffff82d04035e798>] F do_physdev_op+0x9c3/0x1454
>> (XEN)    [<ffff82d040329475>] F pv_hypercall+0x5ac/0x6af
>> (XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150
>>
>> In read_pci_mem_bar(), the VF obtains the struct pci_dev pointer for its
>> associated PF to access the vf_rlen array. This array is initialized in
>> pci_add_device() and is only populated in the associated PF's struct
>> pci_dev.
>>
>> Add links between the VF's struct pci_dev and associated PF struct
>> pci_dev, ensuring the PF's struct doesn't get deallocated until all its
>> VFs have been removed. Access the vf_rlen array via the new link to the
>> PF, and remove the troublesome call to pci_get_pdev().
>>
>> Add a call to pci_get_pdev() inside the pcidevs_lock()-locked section of
>> pci_add_device() to set up the link from VF to PF. In case the new
>> pci_get_pdev() invocation fails to find the associated PF (returning
>> NULL), return an error.
>>
>> In pci_remove_device(), handle an issue with a corner case when a PF is
>> removed with VFs enabled, then re-added with VFs disabled. During PF
>> removal, a buggy PF driver may fail to disable SR-IOV, leaving stale
>> dangling VFs. At least Linux warns in this case:
>>
>> [  106.500334]  0000:01:00.0: driver left SR-IOV enabled after remove
>>
>> If the PF is subsequently re-added with VFs disabled, the previously
>> associated VFs in Xen would not be backed by a device. Any attempt to
>> access the config space of the stale VF would be invalid. Avoid issues
>> in this case by removing the VFs right away when removing the PF. This
>> also happens to simplify the maintenance of the PF<->VF links since the
>> associated PF will always exist during the lifetime of a VF. Note,
>> however, if a PF is removed before the VFs, Xen will return an error
>> for the VF removals since they were already removed.
> 
> Not very nice, but probably tolerable.
> 
>> ---
>> When I tested removing a PF with VFs enabled, then re-adding with VFs
>> disabled, I observed the following Xen crash when dom0 attempted to
>> access the config space of a stale VF:
>>
>> (XEN) Assertion 'pos' failed at arch/x86/msi.c:1275
>> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
>> ...
>> (XEN) Xen call trace:
>> (XEN)    [<ffff82d040346834>] R pci_msi_conf_write_intercept+0xa2/0x1de
>> (XEN)    [<ffff82d04035d6b4>] F pci_conf_write_intercept+0x68/0x78
>> (XEN)    [<ffff82d0403264e5>] F arch/x86/pv/emul-priv-op.c#pci_cfg_ok+0xa0/0x114
>> (XEN)    [<ffff82d04032660e>] F arch/x86/pv/emul-priv-op.c#guest_io_write+0xb5/0x1c8
>> (XEN)    [<ffff82d0403267bb>] F arch/x86/pv/emul-priv-op.c#write_io+0x9a/0xe0
>> (XEN)    [<ffff82d04037c77a>] F x86_emulate+0x100e5/0x25f1e
>> (XEN)    [<ffff82d0403941a8>] F x86_emulate_wrapper+0x29/0x64
>> (XEN)    [<ffff82d04032802b>] F pv_emulate_privileged_op+0x12e/0x217
>> (XEN)    [<ffff82d040369f12>] F do_general_protection+0xc2/0x1b8
>> (XEN)    [<ffff82d040201aa7>] F x86_64/entry.S#handle_exception_saved+0x2b/0x8c
>>
>> This crash is avoided by removing the VFs right away with the PF.
> 
> If I'm not mistaken the same would happen independent of your change if
> Dom0 disabled VFs without reporting their removal (first). That's
> technically no different from removing with VFs enabled, then adding
> with VFs disabled. We may want to be able to cope with that.

You're right, the ASSERT in pci_msi_conf_write_intercept() can be
triggered with a modified dom0 kernel by disabling SR-IOV and performing
a device reset on the stale VF, either manually or as part of
"xl pci-assignable-add".

  echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
  echo 0 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
  echo 0000\:01\:10.0 > /sys/bus/pci/devices/0000\:01\:10.0/driver/unbind
  echo 1 > /sys/bus/pci/devices/0000\:01\:10.0/reset

If using xl pci-assignable-add, then the ASSERT in pci_reset_msix_state()
can also be triggered.

  echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
  echo 0 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
  xl pci-assignable-add 01:10.0

(XEN) Assertion 'pos' failed at arch/x86/msi.c:1246
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040346b0a>] R pci_reset_msix_state+0x47/0x50
(XEN)    [<ffff82d040287eec>] F pdev_msix_assign+0x19/0x35
(XEN)    [<ffff82d040286184>] F drivers/passthrough/pci.c#assign_device+0x181/0x471
(XEN)    [<ffff82d040287c36>] F iommu_do_pci_domctl+0x248/0x2ec
(XEN)    [<ffff82d040284e1f>] F iommu_do_domctl+0x26/0x44
(XEN)    [<ffff82d0402483b8>] F do_domctl+0x8c1/0x1660
(XEN)    [<ffff82d04032977e>] F pv_hypercall+0x5ce/0x6af
(XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150

These test cases require a Xen with CONFIG_DEBUG=y and hacking the Linux
SR-IOV subsystem to skip the VF removal (not just by hacking a PF
driver). For completeness, this is the modification I made to my dom0
kernel for the test cases.

diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index b8302b07a885..562d2024636f 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -385,7 +385,9 @@ void pci_iov_remove_virtfn(struct pci_dev *dev, int id)
        if (virtfn->dev.kobj.sd)
                sysfs_remove_link(&virtfn->dev.kobj, "physfn");
 
+#if 0
        pci_stop_and_remove_bus_device(virtfn);
+#endif
        virtfn_remove_bus(dev->bus, virtfn->bus);
 
        /* balance pci_get_domain_bus_and_slot() */


Anyway, the approach of removing VFs right away with the PFs isn't
sufficient. I suggest (planning for v5) getting rid of the ASSERTs and
returning an error code from pci_msi_conf_write_intercept() and
pci_reset_msix_state(). We may also want to set pdev->broken = true.

>> --- a/xen/drivers/passthrough/pci.c
>> +++ b/xen/drivers/passthrough/pci.c
>> @@ -341,6 +341,8 @@ static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn)
>>  
>>      list_add(&pdev->alldevs_list, &pseg->alldevs_list);
>>  
>> +    INIT_LIST_HEAD(&pdev->physfn.vf_list);
> 
> There is a certain risk with doing such uniformly when the field is part
> of a union. Yes, little initialization has happened up to here, but I'm
> still concerned. (One of the reasons I don't like the struct list_head
> instances to be split, despite your legitimate point regarding naming.)
> At the very least this wants moving yet earlier in the function, before
> the new struct is passed anywhere else.

Understood. I personally have a slight preference for keeping the entry
and head names distinct, so I'll plan to move the initialization
earlier. However, I could easily be convinced to un-split the struct
list_head instances if that's your preference. Let me know.

>> @@ -700,10 +706,31 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>           * extended function.
>>           */
>>          if ( pdev->info.is_virtfn )
>> +        {
>> +            struct pci_dev *pf_pdev;
>> +
>>              pdev->info.is_extfn = pf_is_extfn;
>> +            pf_pdev = pci_get_pdev(NULL,
>> +                                   PCI_SBDF(seg, info->physfn.bus,
>> +                                            info->physfn.devfn));
>> +            if ( pf_pdev )
>> +            {
>> +                pdev->virtfn.pf_pdev = pf_pdev;
>> +                list_add(&pdev->virtfn.entry, &pf_pdev->physfn.vf_list);
>> +            }
>> +            else
>> +            {
>> +                printk(XENLOG_WARNING "Failed to add SR-IOV device PF %pp for VF %pp\n",
>> +                       &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
>> +                       &pdev->sbdf);
>> +                free_pdev(pseg, pdev);
>> +                ret = -ENODEV;
> 
> Why -ENODEV? Ideally the error code from the earlier pci_add_device() could
> be retained (even if some fallback would be needed in case that one succeeded
> or the path wasn't even taken).

I'll retain the error code from the pci_add_device() invocation.

> Yet on the whole I wonder if we wouldn't be
> better off delaying that recursive call some, such that the lock wouldn't
> be dropped anymore between the call and getting here.

Agreed, will do.

> This would then also
> eliminate the need for the new pci_get_pdev() invocation.
> 
>> @@ -818,6 +847,24 @@ 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 )
>>          {
>> +            ret = 0;
>> +
>> +            if ( !pdev->info.is_virtfn )
>> +            {
>> +                struct pci_dev *vf_pdev, *tmp;
>> +
>> +                /*
>> +                 * If a PF with VFs enabled is removed, then re-added without
>> +                 * VFs enabled, the previously associated VFs would no longer be
>> +                 * backed by a device. Remove the associated VFs right away.
>> +                 */
> 
> While in the description the "enabled" and "disabled" are kind of
> tolerable, at least in the code comment I think we want to be more
> precise. The question isn't whether VFs are enabled, but whether we
> know of the VFs.
> 
> It's further unclear here what "a device" is.

The in-code comment shouldn't be relevant any more for v5, so I'll
remove it.

>> +                list_for_each_entry_safe(vf_pdev, tmp, &pdev->physfn.vf_list,
>> +                                         virtfn.entry)
>> +                    ret = pci_remove_device(vf_pdev->sbdf.seg,
>> +                                            vf_pdev->sbdf.bus,
>> +                                            vf_pdev->sbdf.devfn) ?: ret;
> 
> And if this fails, the VF will still remain orphaned. I think in the
> model I had suggested no such risk would exist.
> 
> Misra also isn't going to like the recursion here.

With the ASSERTs being addressed directly, there's no need to remove
the VFs right away with the PF.

BTW, I don't think refusing a removal "request" would be a good idea.
Dom0 isn't really requesting the device to be removed. Dom0 has already
removed the device (e.g. in response to hot-unplug or SR-IOV disable),
and is merely informing Xen of the removal.

So during PF removal, I'll plan (for v5) to unlink the the VFs from the
PF, and continue to rely on dom0 to inform Xen of PF and VF removal
individually. By unlink, I mean set vf_pdev->virtfn.pf_pdev = NULL and
remove the VFs from the list. Probably also set vf_pdev->broken = true.

>> @@ -826,7 +873,7 @@ int pci_remove_device(u16 seg, u8 bus, u8 devfn)
>>                  write_unlock(&pdev->domain->pci_lock);
>>              }
>>              pci_cleanup_msi(pdev);
>> -            ret = iommu_remove_device(pdev);
>> +            ret = iommu_remove_device(pdev) ?: ret;
>>              printk(XENLOG_DEBUG "PCI remove device %pp\n", &pdev->sbdf);
>>              free_pdev(pseg, pdev);
>>              break;
> 
> Is it even legitimate to continue cleaning up if there was an earlier
> failure?
> 
> In any event - please consider e.g. the case where the XSM check allows
> the PF removal, but denies the removal of some of the VFs.

This shouldn't be relevant any more for v5.

>> --- a/xen/include/xen/pci.h
>> +++ b/xen/include/xen/pci.h
>> @@ -150,7 +150,18 @@ struct pci_dev {
>>          unsigned int count;
>>  #define PT_FAULT_THRESHOLD 10
>>      } fault;
>> -    u64 vf_rlen[6];
>> +    union {
>> +        struct pf_info {
>> +            /* Only populated for PFs (info.is_virtfn == false) */
>> +            struct list_head vf_list;             /* List head */
>> +            uint64_t vf_rlen[PCI_SRIOV_NUM_BARS];
>> +        } physfn;
>> +        struct {
>> +            /* Only populated for VFs (info.is_virtfn == true) */
>> +            struct list_head entry;               /* Entry in vf_list */
>> +            struct pci_dev *pf_pdev;              /* Link from VF to PF */
> 
> const?

Yep

> 
> Jan



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 20:42:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 20:42:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815152.1228864 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sydWA-0001vF-DT; Wed, 09 Oct 2024 20:42:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815152.1228864; Wed, 09 Oct 2024 20:42: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 1sydWA-0001v8-A5; Wed, 09 Oct 2024 20:42:46 +0000
Received: by outflank-mailman (input) for mailman id 815152;
 Wed, 09 Oct 2024 20:42: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 1sydW9-0001uy-NO; Wed, 09 Oct 2024 20:42: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 1sydW9-0001l1-KA; Wed, 09 Oct 2024 20:42: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 1sydW9-0008V9-9m; Wed, 09 Oct 2024 20:42:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sydW9-0002Ox-9L; Wed, 09 Oct 2024 20:42: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=fVIAqCI8rQHBff7QsZbfO9bhp9SPljcjeDsdkPGmcp0=; b=M36Dv2nJ+hSkz0mahl3Ofd/cvt
	L7745bjS23zaSdqZOa8cQBDrjeH31ckdx2mjXgVwa7ttTCBuNDNF37ffdr1VGfmtTYy/RwhT43WvC
	WWxhFq3dImJgjS7URf12B2bbBuXyr65Q1eo9YQxYyNwzD2UH7lJaTN1fo+P/SfZ4r3/w=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188035-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188035: 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=e305256e69b1c943db3ca20173da6ded3db2d252
X-Osstest-Versions-That:
    xen=3b79d825b5719f6654e4c95cdc17d65bb204213a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 20:42:45 +0000

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

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                  e305256e69b1c943db3ca20173da6ded3db2d252
baseline version:
 xen                  3b79d825b5719f6654e4c95cdc17d65bb204213a

Last test of basis   188030  2024-10-09 11:00:25 Z    0 days
Testing same since   188035  2024-10-09 17:04:11 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
   3b79d825b5..e305256e69  e305256e69b1c943db3ca20173da6ded3db2d252 -> smoke


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 21:19:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 21:19:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815166.1228874 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sye5n-0001Du-4p; Wed, 09 Oct 2024 21:19:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815166.1228874; Wed, 09 Oct 2024 21: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 1sye5n-0001Dn-0F; Wed, 09 Oct 2024 21:19:35 +0000
Received: by outflank-mailman (input) for mailman id 815166;
 Wed, 09 Oct 2024 21:19: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=Ew84=RF=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1sye5m-0001Dg-4e
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 21:19:34 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20616.outbound.protection.outlook.com
 [2a01:111:f403:2412::616])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2bf63c25-8684-11ef-a0bd-8be0dac302b0;
 Wed, 09 Oct 2024 23:19:31 +0200 (CEST)
Received: from BL1P221CA0024.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:2c5::31)
 by PH8PR12MB7277.namprd12.prod.outlook.com (2603:10b6:510:223::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.20; Wed, 9 Oct
 2024 21:19:26 +0000
Received: from BL6PEPF0001AB72.namprd02.prod.outlook.com
 (2603:10b6:208:2c5:cafe::c6) by BL1P221CA0024.outlook.office365.com
 (2603:10b6:208:2c5::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Wed, 9 Oct 2024 21:19:25 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB72.mail.protection.outlook.com (10.167.242.165) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Wed, 9 Oct 2024 21:19:25 +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.39; Wed, 9 Oct
 2024 16:19:25 -0500
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.39; Wed, 9 Oct
 2024 16:19:25 -0500
Received: from [192.168.122.223] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Wed, 9 Oct 2024 16:19:24 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2bf63c25-8684-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=N3JxR+2EW4H+2ZWM8D4HSzHs3xg0KVzoLwnB+1fdbSCjSqPEKlkwagqB1k/AI4f5leB8aTIsDnCYu00mimGW8dLKwEM2rutkvBgsLHgOkZu34n+ETAstv4dZc786aaSuD/0e0Ss7lwBhM0DzAIv/IsGf6XnZaVnOChws50qGl0DdAm8DYVCEh0gIoLcNK1kaSzSTSn6ny96+wZ7YIhOUMgocFk1M5aFRCD+aXnAPOsobrFTWH7hnJYVVuw6mulYptMzwbFqBHxyIw3NKR/aknQ5dtMaHlbFW+JaLYTHl4Mary7Tl3UMvMKBIwIi+fNgLKSvkqufQva9VQ21iPzyDrA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=mm9H2sJ2B8HQgzYgvUETMnqOxiRHIZ2hfc/bUT81ZVs=;
 b=helFA0fILJB7M5OMawflH4n2lmpdmgfNYi0cyhl9HQpriqVDWkIoir5fRQGiAQ1fg5/+28JA0tkCgLWFcg/Xohj1k+s6miT62ith03xj1b1WvUxtLp7k3gbH1WnhPWo1HwutkofVNhK72ZhnvtCNpd6rSG9RNLIz9soeWJulqEDwt++GI+OBM+nUkGc/NoodmTPbuDtRCIcjXVmSYmVLlq7FzXhNwZdDd+ReOLLcOIH8NYNfhgl6ogQsqpTsXb3GXu3MO6Rw1Q/UptUYGL2g0IY7F9Ebof1I1/808t2luFqSoi0gfoFk1DetzvFI4whg9miSirrpjp7kf3KFy3qGnQ==
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=mm9H2sJ2B8HQgzYgvUETMnqOxiRHIZ2hfc/bUT81ZVs=;
 b=irCIzd3hV3mZFP4TsmStHjnbW0/xmxZxi6kRVkKSKApKanXPaj7G2A/AAOZenqMSKYyqDo6HDNZ6sK5HlhoqUu0+1rnixXyWAa7c0CPRCTND4Xkq1Y6hZQUVN/w7ZTpJRjKFpRsCu31Z6AKm6LyEj9xzP5/EFirwh8eZLma4PMs=
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: <af7d1665-650b-4aff-9e49-d1d7ecef63c7@amd.com>
Date: Wed, 9 Oct 2024 17:19:23 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] x86/msi: fix locking for SR-IOV devices
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Teddy Astie <teddy.astie@vates.tech>
References: <20240827035929.118003-1-stewart.hildebrand@amd.com>
 <Zs3StA1aZJi5ffZj@macbook.local>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <Zs3StA1aZJi5ffZj@macbook.local>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB72:EE_|PH8PR12MB7277:EE_
X-MS-Office365-Filtering-Correlation-Id: d0c82226-5591-4005-30fd-08dce8a80d87
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VVpnM1NQdDJqZVZpMmo2T0dkdzZ5YVVPdThKSit3VWxidFgvVWltUFhnaEt5?=
 =?utf-8?B?UlJnZEFTOWNROWN6WWJobjVjeHN4ZStMR2t3ejRleTdKdE1RcnVyWnhLRGp2?=
 =?utf-8?B?WG55SU80bzlYQnFYdnQwNC9Cek9ZaE9xeFIrcUY5V3BjMi9JV3FjQXE0Qmda?=
 =?utf-8?B?Mm83ZmRJVHRSWWpMaVM0TWVVTUVlWW95U1FoL3lQMXF1Z1piNDQvTlkzSUJi?=
 =?utf-8?B?SUtka0JzRjF1YWVoVDNtSFhHLzljRXFRZjZUcmRKTXlIaDNOVWxjR3E0Ymd6?=
 =?utf-8?B?bms3bVY1NHBuWGRtUDNXMVdscVZWVDNSQkk4VlZ4L3B4MU9rMyt2U29vYk1x?=
 =?utf-8?B?Zkt4MjA5TEJyNWJmVjNud2VObENVZGw3OWh0TXRvUzJwRnI1YlZZb1ZxUVFQ?=
 =?utf-8?B?MXdNS2hXdmtRWk9RV3dWZkxKVjY3aTREZ043UU1Id2Urc3k3SG5ZU0J3aHgx?=
 =?utf-8?B?OUFPN0FvZVRrYXdjQitWbDI4SlBBZlR1bjV6N0lTQXJGOTVnQnlHck1tc1d1?=
 =?utf-8?B?YnJ0YW5YSXVJMFg5QnROSXBDTmd6RDR6UkpGYlkvWGs2YlFKeGsrdS9hMmk1?=
 =?utf-8?B?MEV5eXdYbWRtQjhOOUNEQWlBSXNFeFZYcnVDSy9Jbkw1elFpbktBYkNFZVBW?=
 =?utf-8?B?WjZrMFFsRXVLbENJcFRsRE1Cbm1QWUQ1MDBGcFJFM21UQzhQQXdzSExUcGdU?=
 =?utf-8?B?UFZzUzVwNWRYKzYwUFJkWkkrRWtpMWp2aEVpdTM0bWlGVnk0VUtoWkNiTldB?=
 =?utf-8?B?Z3JTQW4zRzR4akM0TnRwRG82OWlqZVNWeUx2SlBMWm5ZUnJoUXBRVTlFdC91?=
 =?utf-8?B?Mkl6QTg3M0hBSm53eVMyd2FQNmxkZlVZRzhpT1FUeS85QXA0WVVSZ2NpYjNU?=
 =?utf-8?B?THRlSDd6UlhRRFdGZlJHb3RONVMyNWFuSEpDbjlFZnU5clJodklFejJnYmk0?=
 =?utf-8?B?UTgzSzdmZTFtblRLck53cWcxZUJWS0NCUWdlbEZpY29OMlVDdTlyd2Z5cVBz?=
 =?utf-8?B?TlNNbjYwYUYwL1d4bEdLUUFTeWF2SWV3c3lsSHgxVjMwZXNTaXZEWE5oeVQx?=
 =?utf-8?B?dkgrMEhaWTc1dDBQajdjeFZPck5VTzRMaVYydjFuMm1DSnFqWXRhU2hMTDA4?=
 =?utf-8?B?R3J5TTlTT1l3b1JGVjVEbnFEZVFKVWhGZ2dHczlsUWZRYzc0L2tTdXJSKzcw?=
 =?utf-8?B?ek5JcTJNTWVBVHFtZEk2bGRUYnRlWlAydm9XS1Z2SDhuZEMzNWZJU3YvUG9O?=
 =?utf-8?B?c2JnNXIvTUxaZWxuNzRnbi9ORm1wUUhIUkVnUWNaZ2tBV0NlR2lYL0lDYmpp?=
 =?utf-8?B?V1RtRFkrU2N6NFAxcXVrNmE4QWFjRHF4MmFPMStPc0F5VVM5UUp2V0xqK3Rv?=
 =?utf-8?B?QkF4dklLS2xWaXBhaUNFZ2hDN1h6TnFNRVQ3Yk16S3FDYkNDa0ZIeUZJZ1hK?=
 =?utf-8?B?MHRmVkFJNUJzOWRrZ0FOUUZGZ3ZRZUM3K1dVdy9YdzhKbUEzem10ZjdVS2k0?=
 =?utf-8?B?Yng4NGFWMjZMUHQxbXVPTVBoMzFmWlBNeFJORzRMeDF0eUlKVUg1ZkJYSzdD?=
 =?utf-8?B?dk5EV2dacWE3dzZlUnQzTEs1dnF0WEFRUzlKSmdBdnAvK01iOVkwRjJpV1NF?=
 =?utf-8?B?T2RvdmszRzlPSG5TakRENjA4TzBuMmJjSjBtV1ZkOTlPOHN1cU1KaFc0bURJ?=
 =?utf-8?B?ZUJtQktiSjRDY2JJV1FOaXZGV2ZianpLYklRWWIwb3NNNEd4UHhFbGRycVdX?=
 =?utf-8?B?K1NhcmFLMmEySWpmdnV0Um1nQ0c3QU9jcGJMTFI1T2dBeUtnN3NwVVBGdDJM?=
 =?utf-8?B?N2FVWDl0b3JMaW9oTUdOOVNGRUpyRU93RURQclRKalBxZ0M5Y2NtVnMrY2xx?=
 =?utf-8?Q?9wS9mFrRNzh7V?=
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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2024 21:19:25.8100
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d0c82226-5591-4005-30fd-08dce8a80d87
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:
	BL6PEPF0001AB72.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7277

On 8/27/24 09:20, Roger Pau Monné wrote:
> On Mon, Aug 26, 2024 at 11:59:28PM -0400, Stewart Hildebrand wrote:
>> In commit 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci
>> structure") a lock moved from allocate_and_map_msi_pirq() to the caller
>                     ^ was?

Yep

>> and changed from pcidevs_lock() to read_lock(&d->pci_lock). However, one
>> call path wasn't updated to reflect the change, leading to a failed
>> assertion observed under the following conditions:
>>
>> * PV dom0
>> * Debug build (debug=y) of Xen
>> * There is an SR-IOV device in the system with one or more VFs enabled
>> * Dom0 has loaded the driver for the VF and enabled MSI-X
>>
>> (XEN) Assertion 'd || pcidevs_locked()' failed at drivers/passthrough/pci.c:535
>> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Not tainted ]----
>> ...
>> (XEN) Xen call trace:
>> (XEN)    [<ffff82d040284da8>] R pci_get_pdev+0x4c/0xab
>> (XEN)    [<ffff82d040344f5c>] F arch/x86/msi.c#read_pci_mem_bar+0x58/0x272
>> (XEN)    [<ffff82d04034530e>] F arch/x86/msi.c#msix_capability_init+0x198/0x755
>> (XEN)    [<ffff82d040345dad>] F arch/x86/msi.c#__pci_enable_msix+0x82/0xe8
>> (XEN)    [<ffff82d0403463e5>] F pci_enable_msi+0x3f/0x78
>> (XEN)    [<ffff82d04034be2b>] F map_domain_pirq+0x2a4/0x6dc
>> (XEN)    [<ffff82d04034d4d5>] F allocate_and_map_msi_pirq+0x103/0x262
>> (XEN)    [<ffff82d04035da5d>] F physdev_map_pirq+0x210/0x259
>> (XEN)    [<ffff82d04035e798>] F do_physdev_op+0x9c3/0x1454
>> (XEN)    [<ffff82d040329475>] F pv_hypercall+0x5ac/0x6af
>> (XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150
>>
>> In read_pci_mem_bar(), the VF obtains the struct pci_dev pointer for its
>> associated PF to access the vf_rlen array. This array is initialized in
>> pci_add_device() and is only populated in the associated PF's struct
>> pci_dev.
>>
>> Add links between the VF's struct pci_dev and associated PF struct
>> pci_dev, ensuring the PF's struct doesn't get deallocated until all its
>> VFs have been removed. Access the vf_rlen array via the new link to the
>> PF, and remove the troublesome call to pci_get_pdev().
>>
>> Add a call to pci_get_pdev() inside the pcidevs_lock()-locked section of
>> pci_add_device() to set up the link from VF to PF. In case the new
>> pci_get_pdev() invocation fails to find the associated PF (returning
>> NULL), return an error.
>>
>> In pci_remove_device(), handle an issue with a corner case when a PF is
>> removed with VFs enabled, then re-added with VFs disabled. During PF
>> removal, a buggy PF driver may fail to disable SR-IOV, leaving stale
>> dangling VFs. At least Linux warns in this case:
>>
>> [  106.500334]  0000:01:00.0: driver left SR-IOV enabled after remove
>>
>> If the PF is subsequently re-added with VFs disabled, the previously
>> associated VFs in Xen would not be backed by a device. Any attempt to
>> access the config space of the stale VF would be invalid. Avoid issues
>> in this case by removing the VFs right away when removing the PF. This
>> also happens to simplify the maintenance of the PF<->VF links since the
>> associated PF will always exist during the lifetime of a VF. Note,
>> however, if a PF is removed before the VFs, Xen will return an error
>> for the VF removals since they were already removed.
> 
> I think there are two different fixes in this patch, that should be
> split into two separate fixes:
> 
>  - Fix for the locking issue, which requires adding a pointer to the
>    parent PF in the pci_dev of VFs.
>  - Introduce better tracking of the PF<->VF pci_dev relation.
> 
> My suggestion would be to introduce the tacking between PF and VFs as
> a pre-patch (IOW: the linked list related changes), and then do the
> addition of the pf_pdev (the proper fix) as a followup.

Agreed

>>
>> Fixes: 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci structure")
>> Reported-by: Teddy Astie <teddy.astie@vates.tech>
>> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
>> ---
>> Candidate for backport to 4.19
>>
>> v3->v4:
>> * handle case when PF is removed with VFs enabled, then re-added with
>>   VFs disabled
>>
>> v2->v3:
>> * link from VF to PF's struct pci_dev *
>>
>> v1->v2:
>> * remove call to pci_get_pdev()
>> ---
>> When I tested removing a PF with VFs enabled, then re-adding with VFs
>> disabled, I observed the following Xen crash when dom0 attempted to
>> access the config space of a stale VF:
>>
>> (XEN) Assertion 'pos' failed at arch/x86/msi.c:1275
>> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
>> ...
>> (XEN) Xen call trace:
>> (XEN)    [<ffff82d040346834>] R pci_msi_conf_write_intercept+0xa2/0x1de
>> (XEN)    [<ffff82d04035d6b4>] F pci_conf_write_intercept+0x68/0x78
>> (XEN)    [<ffff82d0403264e5>] F arch/x86/pv/emul-priv-op.c#pci_cfg_ok+0xa0/0x114
>> (XEN)    [<ffff82d04032660e>] F arch/x86/pv/emul-priv-op.c#guest_io_write+0xb5/0x1c8
>> (XEN)    [<ffff82d0403267bb>] F arch/x86/pv/emul-priv-op.c#write_io+0x9a/0xe0
>> (XEN)    [<ffff82d04037c77a>] F x86_emulate+0x100e5/0x25f1e
>> (XEN)    [<ffff82d0403941a8>] F x86_emulate_wrapper+0x29/0x64
>> (XEN)    [<ffff82d04032802b>] F pv_emulate_privileged_op+0x12e/0x217
>> (XEN)    [<ffff82d040369f12>] F do_general_protection+0xc2/0x1b8
>> (XEN)    [<ffff82d040201aa7>] F x86_64/entry.S#handle_exception_saved+0x2b/0x8c
>>
>> This crash is avoided by removing the VFs right away with the PF.
> 
> It's not clear to me, does this crash happen even without this change
> applied?

Yep, indeed it does

> If that's the case it seems like you need an extra Fixes
> tag (see above for my recommendation to split the change into two).

Yep

I'm taking a slightly different approach to fixing the
pci_msi_conf_write_intercept() crash, so I'll plan on having 3 patches
in v5:

1. Remove ASSERTs in pci_msi_conf_write_intercept() and pci_reset_msix_state()
    Fixes: 484d7c852e4f ("x86/MSI-X: track host and guest mask-all requests separately")
    Fixes: 575e18d54d19 ("pci: clear {host/guest}_maskall field on assign")
2. Introduce PF<->VF links
    No Fixes tag, but pre-requisite for the next patch
3. Fix the locking issue
    Fixes: 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci structure")

>> ---
>>  xen/arch/x86/msi.c            | 33 +++++++++++----------
>>  xen/drivers/passthrough/pci.c | 55 ++++++++++++++++++++++++++++++++---
>>  xen/include/xen/pci.h         | 13 ++++++++-
>>  3 files changed, 80 insertions(+), 21 deletions(-)
>>
>> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
>> index 0c97fbb3fc03..8d54f268dbbf 100644
>> --- a/xen/arch/x86/msi.c
>> +++ b/xen/arch/x86/msi.c
>> @@ -662,34 +662,31 @@ static int msi_capability_init(struct pci_dev *dev,
>>      return 0;
>>  }
>>  
>> -static u64 read_pci_mem_bar(u16 seg, u8 bus, u8 slot, u8 func, u8 bir, int vf)
>> +static u64 read_pci_mem_bar(u16 seg, u8 bus, u8 slot, u8 func, u8 bir, int vf,
> 
> Since you already have to touch this, I don't think it would very
> complicated to pass a pci_sbdf_t here instead of the seg, bus, slot
> and func parameters.  You can expand back to seg, bus, slot and func
> as local function parameters in order to avoid more code changes than
> strictly needed.

Sure thing. May as well change the return type and bir to stdint.h types
too.

>> +                            const struct pf_info *pf_info)
>>  {
>> +    pci_sbdf_t sbdf = PCI_SBDF(seg, bus, slot, func);
>>      u8 limit;
>>      u32 addr, base = PCI_BASE_ADDRESS_0;
>>      u64 disp = 0;
>>  
>>      if ( vf >= 0 )
>>      {
>> -        struct pci_dev *pdev = pci_get_pdev(NULL,
>> -                                            PCI_SBDF(seg, bus, slot, func));
>>          unsigned int pos;
>>          uint16_t ctrl, num_vf, offset, stride;
>>  
>> -        if ( !pdev )
>> -            return 0;
> 
> Is it worth adding a:
> 
> if ( !pf_info )
> {
>     ASSERT_UNREACHABLE();
>     return 0;
> }
> 
> As I think pf_info must be != NULL if vf >= 0?

We will need a "if ( !pf_info )" check in v5. In v4, it would be
ASSERT_UNREACHABLE(), but it won't be anymore in the next rev.

>> -
>> -        pos = pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_SRIOV);
>> -        ctrl = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_CTRL);
>> -        num_vf = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_NUM_VF);
>> -        offset = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_OFFSET);
>> -        stride = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_STRIDE);
>> +        pos = pci_find_ext_capability(sbdf, PCI_EXT_CAP_ID_SRIOV);
>> +        ctrl = pci_conf_read16(sbdf, pos + PCI_SRIOV_CTRL);
>> +        num_vf = pci_conf_read16(sbdf, pos + PCI_SRIOV_NUM_VF);
>> +        offset = pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_OFFSET);
>> +        stride = pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_STRIDE);
>>  
>>          if ( !pos ||
>>               !(ctrl & PCI_SRIOV_CTRL_VFE) ||
>>               !(ctrl & PCI_SRIOV_CTRL_MSE) ||
>>               !num_vf || !offset || (num_vf > 1 && !stride) ||
>>               bir >= PCI_SRIOV_NUM_BARS ||
>> -             !pdev->vf_rlen[bir] )
>> +             !pf_info->vf_rlen[bir] )
>>              return 0;
>>          base = pos + PCI_SRIOV_BAR;
>>          vf -= PCI_BDF(bus, slot, func) + offset;
>> @@ -703,8 +700,8 @@ static u64 read_pci_mem_bar(u16 seg, u8 bus, u8 slot, u8 func, u8 bir, int vf)
>>          }
>>          if ( vf >= num_vf )
>>              return 0;
>> -        BUILD_BUG_ON(ARRAY_SIZE(pdev->vf_rlen) != PCI_SRIOV_NUM_BARS);
>> -        disp = vf * pdev->vf_rlen[bir];
>> +        BUILD_BUG_ON(ARRAY_SIZE(pf_info->vf_rlen) != PCI_SRIOV_NUM_BARS);
>> +        disp = vf * pf_info->vf_rlen[bir];
>>          limit = PCI_SRIOV_NUM_BARS;
>>      }
>>      else switch ( pci_conf_read8(PCI_SBDF(seg, bus, slot, func),
>> @@ -813,6 +810,7 @@ static int msix_capability_init(struct pci_dev *dev,
>>          int vf;
>>          paddr_t pba_paddr;
>>          unsigned int pba_offset;
>> +        const struct pf_info *pf_info;
>>  
>>          if ( !dev->info.is_virtfn )
>>          {
>> @@ -820,6 +818,7 @@ static int msix_capability_init(struct pci_dev *dev,
>>              pslot = slot;
>>              pfunc = func;
>>              vf = -1;
>> +            pf_info = NULL;
>>          }
>>          else
>>          {
>> @@ -827,9 +826,11 @@ static int msix_capability_init(struct pci_dev *dev,
>>              pslot = PCI_SLOT(dev->info.physfn.devfn);
>>              pfunc = PCI_FUNC(dev->info.physfn.devfn);
>>              vf = dev->sbdf.bdf;
>> +            pf_info = &dev->virtfn.pf_pdev->physfn;
>>          }
>>  
>> -        table_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf);
>> +        table_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf,
>> +                                       pf_info);
>>          WARN_ON(msi && msi->table_base != table_paddr);
>>          if ( !table_paddr )
>>          {
>> @@ -852,7 +853,7 @@ static int msix_capability_init(struct pci_dev *dev,
>>  
>>          pba_offset = pci_conf_read32(dev->sbdf, msix_pba_offset_reg(pos));
>>          bir = (u8)(pba_offset & PCI_MSIX_BIRMASK);
>> -        pba_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf);
>> +        pba_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf, pf_info);
>>          WARN_ON(!pba_paddr);
>>          pba_paddr += pba_offset & ~PCI_MSIX_BIRMASK;
>>  
>> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
>> index 5a446d3dcee0..97b3417252f7 100644
>> --- a/xen/drivers/passthrough/pci.c
>> +++ b/xen/drivers/passthrough/pci.c
>> @@ -341,6 +341,8 @@ static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn)
>>  
>>      list_add(&pdev->alldevs_list, &pseg->alldevs_list);
>>  
>> +    INIT_LIST_HEAD(&pdev->physfn.vf_list);
>> +
>>      /* update bus2bridge */
>>      switch ( pdev->type = pdev_type(pseg->nr, bus, devfn) )
>>      {
>> @@ -446,6 +448,10 @@ static void free_pdev(struct pci_seg *pseg, struct pci_dev *pdev)
>>  
>>      list_del(&pdev->alldevs_list);
>>      pdev_msi_deinit(pdev);
>> +
>> +    if ( pdev->info.is_virtfn )
>> +        list_del(&pdev->virtfn.entry);
>> +
>>      xfree(pdev);
>>  }
>>  
>> @@ -700,10 +706,31 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>           * extended function.
>>           */
>>          if ( pdev->info.is_virtfn )
>> +        {
>> +            struct pci_dev *pf_pdev;
>> +
>>              pdev->info.is_extfn = pf_is_extfn;
>> +            pf_pdev = pci_get_pdev(NULL,
>> +                                   PCI_SBDF(seg, info->physfn.bus,
>> +                                            info->physfn.devfn));
>> +            if ( pf_pdev )
>> +            {
>> +                pdev->virtfn.pf_pdev = pf_pdev;
>> +                list_add(&pdev->virtfn.entry, &pf_pdev->physfn.vf_list);
>> +            }
>> +            else
>> +            {
>> +                printk(XENLOG_WARNING "Failed to add SR-IOV device PF %pp for VF %pp\n",
>> +                       &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
>> +                       &pdev->sbdf);
>> +                free_pdev(pseg, pdev);
>> +                ret = -ENODEV;
>> +                goto out;
>> +            }
>> +        }
>>      }
>>  
>> -    if ( !pdev->info.is_virtfn && !pdev->vf_rlen[0] )
>> +    if ( !pdev->info.is_virtfn && !pdev->physfn.vf_rlen[0] )
>>      {
>>          unsigned int pos = pci_find_ext_capability(pdev->sbdf,
>>                                                     PCI_EXT_CAP_ID_SRIOV);
>> @@ -715,7 +742,9 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>          {
>>              unsigned int i;
>>  
>> -            BUILD_BUG_ON(ARRAY_SIZE(pdev->vf_rlen) != PCI_SRIOV_NUM_BARS);
>> +            BUILD_BUG_ON(ARRAY_SIZE(pdev->physfn.vf_rlen) !=
>> +                                    PCI_SRIOV_NUM_BARS);
>> +
>>              for ( i = 0; i < PCI_SRIOV_NUM_BARS; )
>>              {
>>                  unsigned int idx = pos + PCI_SRIOV_BAR + i * 4;
>> @@ -730,7 +759,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>                      continue;
>>                  }
>>                  ret = pci_size_mem_bar(pdev->sbdf, idx, NULL,
>> -                                       &pdev->vf_rlen[i],
>> +                                       &pdev->physfn.vf_rlen[i],
>>                                         PCI_BAR_VF |
>>                                         ((i == PCI_SRIOV_NUM_BARS - 1) ?
>>                                          PCI_BAR_LAST : 0));
>> @@ -818,6 +847,24 @@ 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 )
>>          {
>> +            ret = 0;
>> +
>> +            if ( !pdev->info.is_virtfn )
>> +            {
>> +                struct pci_dev *vf_pdev, *tmp;
>> +
>> +                /*
>> +                 * If a PF with VFs enabled is removed, then re-added without
>> +                 * VFs enabled, the previously associated VFs would no longer be
>> +                 * backed by a device. Remove the associated VFs right away.
>> +                 */
>> +                list_for_each_entry_safe(vf_pdev, tmp, &pdev->physfn.vf_list,
>> +                                         virtfn.entry)
>> +                    ret = pci_remove_device(vf_pdev->sbdf.seg,
>> +                                            vf_pdev->sbdf.bus,
>> +                                            vf_pdev->sbdf.devfn) ?: ret;
>> +            }
>> +
>>              if ( pdev->domain )
>>              {
>>                  write_lock(&pdev->domain->pci_lock);
>> @@ -826,7 +873,7 @@ int pci_remove_device(u16 seg, u8 bus, u8 devfn)
>>                  write_unlock(&pdev->domain->pci_lock);
>>              }
>>              pci_cleanup_msi(pdev);
>> -            ret = iommu_remove_device(pdev);
>> +            ret = iommu_remove_device(pdev) ?: ret;
>>              printk(XENLOG_DEBUG "PCI remove device %pp\n", &pdev->sbdf);
>>              free_pdev(pseg, pdev);
>>              break;
>> diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
>> index 63e49f0117e9..a24026d25148 100644
>> --- a/xen/include/xen/pci.h
>> +++ b/xen/include/xen/pci.h
>> @@ -150,7 +150,18 @@ struct pci_dev {
>>          unsigned int count;
>>  #define PT_FAULT_THRESHOLD 10
>>      } fault;
>> -    u64 vf_rlen[6];
>> +    union {
>> +        struct pf_info {
>> +            /* Only populated for PFs (info.is_virtfn == false) */
>> +            struct list_head vf_list;             /* List head */
>> +            uint64_t vf_rlen[PCI_SRIOV_NUM_BARS];
>> +        } physfn;
>> +        struct {
>> +            /* Only populated for VFs (info.is_virtfn == true) */
>> +            struct list_head entry;               /* Entry in vf_list */
>> +            struct pci_dev *pf_pdev;              /* Link from VF to PF */
> 
> With this pointer being introduced for VFs, is the information in
> pci_dev_info still required?  It would seem to me the physfn.bus and
> physfn.devfn fields can now be fetched directly from the pf_pdev
> pointer?

Hm, well, in v5, the pf_pdev pointer may be NULL. So every time we'd
need to access that info, we'd need an additional NULL check.

> 
> Thanks, Roger.



From xen-devel-bounces@lists.xenproject.org Wed Oct 09 21:58:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 21:58:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815193.1228884 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syehj-0000J1-0U; Wed, 09 Oct 2024 21:58:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815193.1228884; Wed, 09 Oct 2024 21: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 1syehi-0000Iu-Tb; Wed, 09 Oct 2024 21:58:46 +0000
Received: by outflank-mailman (input) for mailman id 815193;
 Wed, 09 Oct 2024 21:58: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=XgrK=RF=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syehh-0008AP-O1
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 21:58:45 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a686a2ac-8689-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 23:58:43 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a99543ab209so36292166b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 14:58:43 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99533f51f1sm492430666b.93.2024.10.09.14.58.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 14:58:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a686a2ac-8689-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728511123; x=1729115923; 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=0r81zqmpFt5fU1xOrESgWby3mypK04ICMpE60zE1iGE=;
        b=WcP6loWzwU48//eHNr8k2NpIg1nUsYA8Y+TQe8swd9YFJko4yWBI/yFjBLHb9QTryY
         HTxTx5Kt0tGTo5IojZxpk2i3/8em4+YM/1GgX6wAix7gaYs5CqXX25GPL9FiZO5KxGAT
         ehVv+0ThZXRI9kpGr3RHxvOKX9od93tWHpzGo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728511123; x=1729115923;
        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=0r81zqmpFt5fU1xOrESgWby3mypK04ICMpE60zE1iGE=;
        b=n7ZUEIEgbEZDFE9zHdgA+PLXK5rkhiicvRRsUGq1AiJg3rayeJWcwTOqjqW9hESR6p
         kJT2Cr2GFtGZZUoQi2Ll2K3jWxssH/09x3h7yxzi2a16aCZ/x8HTlk3rje27CJc2I5oB
         LBreMdNKJnpCuG7i4r99igDAQnh14wpgW5ws39OpAuxeddzHgN2ppW8FA19RzKSE0FXO
         HvcsYTWSriDl490Os4YES7D0/AwRK/U4nXilWkuGfkFdw97eOYLsYhz+8UYWCQh+wZe5
         LO0u2mpCFEhj5OxMLe0s/1cvwLvR7xKjcIibIIzZbaZ1nNvxtytv5FQn+/CFkl+jYtPo
         u4iQ==
X-Forwarded-Encrypted: i=1; AJvYcCW2/nsWFuBWFjTlxzE9UCwZsF6n5PSqWdnDvsZu7S6KZksVjgu0T08fIwK2j8iVNGQMbZ6bm0OqxLc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwbSDmOYdPM6Howrflg8qICabJeh9+jqjQ59t5x7gjDxEPMpOOI
	Fb0yg94uS86UC1lQhdRXpqNeIIxn6cAX2dxfnEFvHCzZ33NE2yGYBFvX51a/l5Q=
X-Google-Smtp-Source: AGHT+IH9goltpp8+JOLSAO8qY/HNcuZ3Z4ax7zTLIiBn29+rVSNnGE1UEo2DD3tLeABCIDOUFWGXRA==
X-Received: by 2002:a17:907:6d1b:b0:a99:4b5a:a59 with SMTP id a640c23a62f3a-a998d1982ffmr303372466b.18.1728511122961;
        Wed, 09 Oct 2024 14:58:42 -0700 (PDT)
Message-ID: <9cb1ed7d-4755-4ce4-bdd3-3697b3a9d2c4@citrix.com>
Date: Wed, 9 Oct 2024 22:58:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 01/11] lib/x86: Relax checks about policy compatibility
To: Alejandro Vallejo <alejandro.vallejo@cloud.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>, Anthony PERARD <anthony.perard@vates.tech>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-2-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241001123807.605-2-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 01/10/2024 1:37 pm, Alejandro Vallejo wrote:
> diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
> index f033d22785be..63bc96451d2c 100644
> --- a/xen/lib/x86/policy.c
> +++ b/xen/lib/x86/policy.c
> @@ -15,7 +15,16 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
>  #define FAIL_MSR(m) \
>      do { e.msr = (m); goto out; } while ( 0 )
>  
> -    if ( guest->basic.max_leaf > host->basic.max_leaf )
> +    /*
> +     * Old AMD hardware doesn't expose topology information in leaf 0xb. We
> +     * want to emulate that leaf with credible information because it must be
> +     * present on systems in which we emulate the x2APIC.
> +     *
> +     * For that reason, allow the max basic guest leaf to be larger than the
> +     * hosts' up until 0xb.
> +     */
> +    if ( guest->basic.max_leaf > 0xb &&
> +         guest->basic.max_leaf > host->basic.max_leaf )
>          FAIL_CPUID(0, NA);
>  
>      if ( guest->feat.max_subleaf > host->feat.max_subleaf )

This isn't appropriate.  You're violating the property that a guest
policy should be bounded by the max (called host here).

Instead, the max policies basic.max_leaf should be at least 0xb.

This is another case where the max wants to be higher with default
inheriting from host.

But it occurs to me that with max being an not-sane-in-isolation policy
anyway, we probably want to end up setting max->$foo.max_leaf to the
appropriate ARRAY_SIZE()'s.

For any leaves within the bounds that Xen knows, it's fine for the
toolstack to set values there even beyond host max leaf, as long as it
doesn't violate other consistency checks.

So, please fix this by adjusting
calculate_{pv,hvm}_{max,default}_policy() in Xen.

Sadly I think it will end up a tad ugly, but don't worry too much. 
We've got a number of host==default but max special fields, and I'm
wanting to get a few more examples before choosing how best to
rationalise it to reduce opencoding.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 22:08:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 22:08:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815203.1228894 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syer3-0005WI-Rm; Wed, 09 Oct 2024 22:08:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815203.1228894; Wed, 09 Oct 2024 22: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 1syer3-0005WB-O8; Wed, 09 Oct 2024 22:08:25 +0000
Received: by outflank-mailman (input) for mailman id 815203;
 Wed, 09 Oct 2024 22:08: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 1syer2-0005W1-5A; Wed, 09 Oct 2024 22:08: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 1syer2-0003Pi-3c; Wed, 09 Oct 2024 22:08: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 1syer1-0005JO-NC; Wed, 09 Oct 2024 22:08:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syer1-0001Jb-Mi; Wed, 09 Oct 2024 22:08: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=15u7FiKNghnkEv8Ywn7+xDCmgtocoMbZFizn8narAiM=; b=NpNmaIAf1iUfdWv+UqwguEbJ8m
	Y57Z35urgYvdA9sgBHfruNOjmPIeAJ65TevvKyGjP7/PWW9xgCezCbolpX46/rrWop9p79eRKgS0d
	Tj4gNRkRCvt4mPi6OnMZHjcxb4tULyQygtdIc6q4YbvGLtl+E1RFjM/VovaFh0DuW99o=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188037-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188037: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=da1c6dd62a19361186739a00a4f86d7cf630708c
X-Osstest-Versions-That:
    ovmf=7bac0a940e905941487c3a2f2f5fb6ee43ff040a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 22:08:23 +0000

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

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

Last test of basis   188031  2024-10-09 11:13:23 Z    0 days
Testing same since   188037  2024-10-09 19:42:08 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Sean Rhodes <sean@starlabs.systems>

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    


------------------------------------------------------------
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
   7bac0a940e..da1c6dd62a  da1c6dd62a19361186739a00a4f86d7cf630708c -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 22:19:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 22:19:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815212.1228904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syf1P-00019c-Pk; Wed, 09 Oct 2024 22:19:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815212.1228904; Wed, 09 Oct 2024 22:19: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 1syf1P-00019V-Ls; Wed, 09 Oct 2024 22:19:07 +0000
Received: by outflank-mailman (input) for mailman id 815212;
 Wed, 09 Oct 2024 22:19: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 1syf1O-00019L-NS; Wed, 09 Oct 2024 22:19: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 1syf1O-0003bn-Kt; Wed, 09 Oct 2024 22:19: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 1syf1O-0005d2-3M; Wed, 09 Oct 2024 22:19:06 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syf1O-0008QM-2u; Wed, 09 Oct 2024 22:19: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=5GS4LepTpZF2bioIxf2rboBSIzvGbDXw3l8bGm4PEtA=; b=cj9Eq1ehloUpMtAf9XrhlaFRBN
	Y8Ho7o7K2D9ttM9ntfmRtIM44YcwF0na3lgFJEBgSyD2OmNwdJB8WbARV2B5SwR9dycxRngbJ9/wc
	+mYBM5gWtV8D+ri2qJHLI2i5G6YHsYkCqfYBOsOWtoCqwJ+DXBFZ6MJ4JKihH9lumyI0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188022-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188022: regressions - FAIL
X-Osstest-Failures:
    libvirt:test-arm64-arm64-libvirt-qcow2:leak-check/check:fail:regression
    libvirt:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    libvirt:test-armhf-armhf-libvirt: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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=9c962b3902cf4b480fcdd1da7e300911c0288287
X-Osstest-Versions-That:
    libvirt=215cada34395b6b2caad507393e043594d6c86fc
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 09 Oct 2024 22:19:06 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-libvirt-qcow2 20 leak-check/check       fail REGR. vs. 187961

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188008

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187961
 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-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-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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              9c962b3902cf4b480fcdd1da7e300911c0288287
baseline version:
 libvirt              215cada34395b6b2caad507393e043594d6c86fc

Last test of basis   187961  2024-10-04 04:22:33 Z    5 days
Testing same since   188008  2024-10-08 04:20:35 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Göran Uddeborg <goeran@uddeborg.se>

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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 fail    
 test-armhf-armhf-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


Not pushing.

------------------------------------------------------------
commit 9c962b3902cf4b480fcdd1da7e300911c0288287
Author: Göran Uddeborg <goeran@uddeborg.se>
Date:   Sun Oct 6 08:13:05 2024 +0000

    Translated using Weblate (Swedish)
    
    Currently translated at 90.0% (9474 of 10516 strings)
    
    Translation: libvirt/libvirt
    Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/sv/
    
    Signed-off-by: Göran Uddeborg <goeran@uddeborg.se>


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 22:47:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 22:47:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815223.1228914 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syfSb-0002Gq-Uj; Wed, 09 Oct 2024 22:47:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815223.1228914; Wed, 09 Oct 2024 22:47: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 1syfSb-0002Gj-Rh; Wed, 09 Oct 2024 22:47:13 +0000
Received: by outflank-mailman (input) for mailman id 815223;
 Wed, 09 Oct 2024 22:47: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=qR2m=RF=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1syfSa-0002Gd-P5
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 22:47: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 6b2be12e-8690-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 00:47:11 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 74AA25C5E48;
 Wed,  9 Oct 2024 22:47:05 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 12752C4CEC3;
 Wed,  9 Oct 2024 22:47: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: 6b2be12e-8690-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728514029;
	bh=zezz4miSiEcAUWwCNxLP4M8HbD5Q3oG1LiX06x3IoAM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=sZvkI5muk6awGGVdIHrLvoDRdzZ21X2AHklId6MA8LcOAk40rNThbq+RWFi+ZZAan
	 fyQmQD/z8xufkSYMulX16TXR81GuzFMTjAfIkcnHsPF1mH3b0z8CpSkyp/Ww4KG5bM
	 vdScIWAbluxij52vhCH9E+O+N338aMMd3s3A8Yk9SBNajU6GgHzMdQvm2/9YBomupa
	 yZoKu9bqw4pzvIs5pYDrzRMkRHrUiwA0a2cA6ht2isdML/EA+iJFFxjBy37zSvlT43
	 f5xAt5S6ETrJC+IFpVSBVEbWPcHAnZ1IOtAV4iDBpPCowxdmojpJo0YJQIqfmMLpCo
	 V+Ec4rCGtOfsg==
Date: Wed, 9 Oct 2024 15:46:59 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org, 
    linux-kernel@vger.kernel.org, Juergen Gross <jgross@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
    Marek Marczykowski <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD
 definition
In-Reply-To: <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
Message-ID: <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
References: <20241009062014.407310-1-Jiqian.Chen@amd.com> <73174eb0-380d-4f95-a2c3-097b86fac8db@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, 9 Oct 2024, Jan Beulich wrote:
> On 09.10.2024 08:20, Jiqian Chen wrote:
> > Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
> > adds a weak reverse dependency to the config XEN_PRIVCMD definition, its
> > purpose is to pass the combination of compilation that CONFIG_XEN_PRIVCMD=y
> > and CONFIG_XEN_PCIDEV_BACKEND=m, because in that combination, xen-pciback
> > is compiled as a module but xen-privcmd is built-in, so xen-privcmd can't
> > find the implementation of pcistub_get_gsi_from_sbdf.
> > 
> > But that dependency causes xen-privcmd can't be loaded on domU, because
> > dependent xen-pciback is always not be loaded successfully on domU.
> > 
> > To solve above problem and cover original commit's requirement, just remove
> > that dependency, because the code "IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND)"
> > of original commit is enough to meet the requirement.
> > 
> > Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
> > Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> 
> This lacks a Reported-by:.
> 
> > --- a/drivers/xen/Kconfig
> > +++ b/drivers/xen/Kconfig
> > @@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
> >  config XEN_PRIVCMD
> >  	tristate "Xen hypercall passthrough driver"
> >  	depends on XEN
> > -	imply XEN_PCIDEV_BACKEND
> >  	default m
> >  	help
> >  	  The hypercall passthrough driver allows privileged user programs to
> 
> The report wasn't about a build problem, but a runtime one. Removing the
> dependency here doesn't change anything in the dependency of xen-privcmd
> on xen-pciback, as the use of pcistub_get_gsi_from_sbdf() continues to
> exist.
>
> Consider the case of XEN_PCIDEV_BACKEND=m and XEN_PRIVCMD=m, which
> I guess is what Marek is using in his config. Both drivers are available
> in such a configuration, yet loading of xen-privcmd then requires to
> load xen-pciback first. And that latter load attempt will fail in a DomU.
> The two drivers simply may not have any dependency in either direction.

The idea is that there should be no hard dependency on
pcistub_get_gsi_from_sbdf(). If it is available, the service will be
used, otherwise an error will be reported.

The problem is that IS_REACHABLE is a compile-time check. What we need
is a runtime check instead. Maybe symbol_get or try_module_get ?




From xen-devel-bounces@lists.xenproject.org Wed Oct 09 23:02:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 23:02:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815230.1228924 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syfhW-0008LL-7U; Wed, 09 Oct 2024 23:02:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815230.1228924; Wed, 09 Oct 2024 23:02: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 1syfhW-0008LE-3H; Wed, 09 Oct 2024 23:02:38 +0000
Received: by outflank-mailman (input) for mailman id 815230;
 Wed, 09 Oct 2024 23:02: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syfhU-0008L8-K2
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 23:02:36 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 91070c84-8692-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 01:02:34 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728514947553573.4279269426861;
 Wed, 9 Oct 2024 16:02:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91070c84-8692-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728514949; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=c3pjqgtkatVl1PNwa8FUY7slTUJKjTfKcBthAaC0qNPoBRgLvG7mR2cLDyDk+oHQlBjlWOChoC19ccxBUcdDej0BGP7RJ6sVrDiXu0PyxJYBeVDQzHWOgL/LPlNDvO7fz/8ofPdLuLX+tlqPaYjvgWpMUxr0Qty5B0qNU+KecI4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728514949; 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=SAnC+XuwE2vPUA4p76OfETaHdgWQbbG1uggtB0/wKFY=; 
	b=VJFWRKj+REOsLg02QAt5pQ3RQsTdto46hiBgh+keYnlbE2aZ/9C+iIIq6/j7Q6UZjvVYpzIAVxPdfubkSNWChU+Pz4Q9kOOWXlYyLWUseVNt37OorAgZT18XXMp3/DQHwnlez0eTEqIVqhI6CWUHnt92KHIp148Kde1qnBrVa28=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728514949;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=SAnC+XuwE2vPUA4p76OfETaHdgWQbbG1uggtB0/wKFY=;
	b=gvCMIlw0oNorpJ8VQPudslQwenlth4yjWdrqCZIL3hg0SqQ/P+90AYwcm5jxIyfP
	M5ujK9nCSQGCKeGL3fk4BjbQrLSkyCHJ7+ty1EKGnvSsA+narJQ0NWKQ/Q2cakk/e2z
	DVBVST8b+20y26eVUdP+qR2m8mZXQPPP3+MDy24I=
Message-ID: <70d98462-8006-4ae2-9774-f21152be2362@apertussolutions.com>
Date: Wed, 9 Oct 2024 19:02:24 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 25/44] x86/boot: convert create_dom0 to use boot info
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-26-dpsmith@apertussolutions.com>
 <1bc18234-2e50-467d-875a-3968165f5570@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <1bc18234-2e50-467d-875a-3968165f5570@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 12:52, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> This commit changes create_dom0 to no longer take the individual 
>> components and
>> take struct boot_info instead. Internally, it is changed to locate the 
>> kernel
>> and ramdisk details from struct boot_info.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 25 ++++++++++++++++---------
>>   1 file changed, 16 insertions(+), 9 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 0d2ee19998aa..c2bcddc50990 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -946,10 +946,8 @@ static unsigned int __init copy_bios_e820(struct 
>> e820entry *map, unsigned int li
>>       return n;
>>   }
>> -static struct domain *__init create_dom0(const module_t *image,
>> -                                         unsigned long headroom,
>> -                                         module_t *initrd, const char 
>> *kextra,
>> -                                         const char *loader)
>> +static struct domain *__init create_dom0(const struct boot_info *bi,
>> +                                         const char *kextra)
>>   {
>>       static char __initdata cmdline[MAX_GUEST_CMDLINE];
>> @@ -964,9 +962,21 @@ static struct domain *__init create_dom0(const 
>> module_t *image,
>>               .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED 
>> : 0,
>>           },
>>       };
>> +    int headroom, mod_idx = first_boot_module_index(bi, 
>> BOOTMOD_RAMDISK);
> 
> I think headroom should stay unsigned long, which matches struct 
> boot_module.

Yes, that was not intentional. Will preserve the size.

> With that
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks!

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 23:09:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 23:09:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815239.1228934 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syfoW-0002SN-17; Wed, 09 Oct 2024 23:09:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815239.1228934; Wed, 09 Oct 2024 23: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 1syfoV-0002SG-US; Wed, 09 Oct 2024 23:09:51 +0000
Received: by outflank-mailman (input) for mailman id 815239;
 Wed, 09 Oct 2024 23:09: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syfoU-0002SA-3v
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 23:09:50 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 93ee0122-8693-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 01:09:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728515382604174.57877637899185;
 Wed, 9 Oct 2024 16:09:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93ee0122-8693-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728515384; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=adTPCsHosLUM/hNkU1lgMVhHjuWE8yyG121TG8TjJl+P07M1N5MEcPIBFwLTfApgVE5HVfdU6NDNiyFZ0VdYVYMQN32rnQXNKrrOYbufzBng1yRGZwpTP3mDxuC7akE3cmib4jH5HOlOEIsm9RW3ul8V5pBoC9FbeoxXpXhfyBY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728515384; 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=40e/4V0FbjfFzC7HxpH/GJ6pMhmoWsInYs9/8mL35J0=; 
	b=NLpdpVPdU2Vefu37uKbs9MMEJhDKtgWLU35hItpTgeHmpURZThh27dqQ4MOBeFBvNnVXCWUktbNRC91K5S+2e1P/uFthcHkiZS2m/eBb3g7j3VkM7yHzkJin3wHZlQrVkrUKOfrKxBWfXlTr+MeGoezbQP4n3PI+cAaCl/ZJIvg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728515384;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=40e/4V0FbjfFzC7HxpH/GJ6pMhmoWsInYs9/8mL35J0=;
	b=bRyVNhYilDkIe7pD/1/rqJRjCIZVdd31XG9GMoom6ZhayP71uTBkJJxMJCpvCRnL
	ACNrHfSW1X5S2fn2zZewureJPda4JOh8Oo3OUDU5k1d8tBE4UiC9s/RN0nXzMoh58S9
	+PZO4/jMZkH3A6NC2RYL7F9BsVxI2MhMgvcQMfts=
Message-ID: <7294149b-4b02-4f1b-a62a-d750d6f3b65c@apertussolutions.com>
Date: Wed, 9 Oct 2024 19:09:39 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 28/44] x86/boot: add cmdline to struct boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-29-dpsmith@apertussolutions.com>
 <cc11ab03-d518-444b-bc0c-24d656ea1e8d@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <cc11ab03-d518-444b-bc0c-24d656ea1e8d@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 13:08, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Add a char pointer field, cmdline, to struct boot_module to hold the 
>> address
>> pointed to by the string field of struct mod. This removes the need to 
>> use the
>> early_mod field to get to the dom0 kernel command line.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootinfo.h | 2 ++
>>   xen/arch/x86/setup.c                | 9 ++++++---
>>   2 files changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h 
>> b/xen/arch/x86/include/asm/bootinfo.h
>> index 9ed260629012..3b6bfbe88770 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -38,6 +38,8 @@ struct boot_module {
>>   #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
>>   #define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
>> +    const char *cmdline;
>> +
>>       paddr_t start;
>>       size_t size;
>>   };
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index aed0837902c4..d5916e85f68e 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -312,6 +312,8 @@ static struct boot_info __init 
>> *multiboot_fill_boot_info(unsigned long mbi_p)
>>       {
>>           bi->mods[i].mod = &mods[i];
>> +        bi->mods[i].cmdline = (char *)(paddr_t)mods[i].string;
>> +
>>           bi->mods[i].start = (paddr_t)mods[i].mod_start;
>>           bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
>>       }
>> @@ -1000,10 +1002,11 @@ static struct domain *__init 
>> create_dom0(struct boot_info *bi)
>>           panic("Error creating d%uv0\n", domid);
>>       /* Grab the DOM0 command line. */
>> -    if ( image->mod->string || bi->kextra )
>> +    if ( image->cmdline || bi->kextra )
>>       {
>> -        if ( image->mod->string )
>> -            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
>> +        if ( image->cmdline )
>> +            safe_strcpy(cmdline,
>> +                        cmdline_cook(__va((unsigned 
>> long)image->cmdline),
> 
> char * seems inappropriate if cmdline isn't usable as a string.  Maybe 
> have cmdline as a paddr_t, or can __va() be used at assignment time?
> 

Yah, char * was not the correct choice, paddr_t is more appropriate.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 23:12:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 23:12:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815247.1228943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syfr6-0003ut-Cq; Wed, 09 Oct 2024 23:12:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815247.1228943; Wed, 09 Oct 2024 23:12: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 1syfr6-0003um-9p; Wed, 09 Oct 2024 23:12:32 +0000
Received: by outflank-mailman (input) for mailman id 815247;
 Wed, 09 Oct 2024 23:12: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syfr4-0003ug-NW
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 23:12:30 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f3aef8b8-8693-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 01:12:29 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728515544112387.6852691226467;
 Wed, 9 Oct 2024 16:12:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3aef8b8-8693-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728515545; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=iHCysmOxMuXFYTpekrpDgjvqyctxxiZ+aBlc3qxP2Yk+Hb6Xk7HdXZ6P1hoyIHwmdYOdDZ2HLiY7CJ1AiD/hhu2hoUSf3nZfF3ApxXx0ww5PujISzL01HoI+h0x8SXAkO+GwS0amHe5MkOOEk0ZPfo9VdiEw84bqMkEzIVmU3FM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728515545; 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=CRjgCxYHOQlWMv2xwQkbSVWeOeTMUyHT68y+ZkZVLXI=; 
	b=GFTes7zVLF3+gANJ8liJybGWmMI0VEftMKw2q3erQI1T3F/GwpeD54H+m/TIPURHfOQGteAhwIA47URAyqQaonxi3ypmbqVTIiqhZA/FK3d0/ugBQ3hy1eF0BreEsxF/o1Q43glBPb9I7yUoqPp1U1KpZzu/ja6ZY9XAnupLe1c=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728515545;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=CRjgCxYHOQlWMv2xwQkbSVWeOeTMUyHT68y+ZkZVLXI=;
	b=hkbG1NErj0+7vfWv0/j8Y1+ciSjw+7aAeYWKmAF97nrcpykM0NVd7W46SthPGwRx
	gq6Le5rmKK6iWQ+kyezWIV3BxzZfRd8IqLG4T6CAL9ugTbnmi3RYKiyA2McysDaYzVs
	cSP+k5aNFreS6LLuwV97i1KZydhLts8/uWsbs2q8=
Message-ID: <71aec85a-c8ad-4ce0-95e7-e5a5ed96e422@apertussolutions.com>
Date: Wed, 9 Oct 2024 19:12:21 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 30/44] x86/boot: convert dom0_construct_pv initrd param
 to struct boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-31-dpsmith@apertussolutions.com>
 <b86bdb83-d4fa-4ebd-ba13-adff8dba7bdd@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <b86bdb83-d4fa-4ebd-ba13-adff8dba7bdd@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 14:30, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> This changes the type for the initrd parameter of dom0_construct_pv to 
>> be struct
>> boot_module. This conversion requires several adjustments throughout 
>> dom0_construct_pv
>> to account for the type change. Removes the usage of early_mod field 
>> for ramdisk module.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
>> diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
>> index 7b6afe64d799..16b8c1e40998 100644
>> --- a/xen/arch/x86/pv/dom0_build.c
>> +++ b/xen/arch/x86/pv/dom0_build.c
> 
>> @@ -367,7 +367,8 @@ static int __init dom0_construct(struct domain *d,
>>       unsigned long nr_pt_pages;
>>       unsigned long alloc_spfn;
>>       unsigned long alloc_epfn;
>> -    unsigned long initrd_pfn = -1, initrd_mfn = 0;
>> +    unsigned long initrd_pfn = -1;
>> +    mfn_t  initrd_mfn = { 0 };
> 
> = _mfn(0);

Ack.

> With that:
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks!

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 23:16:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 23:16:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815253.1228955 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syfua-0004Ud-Sz; Wed, 09 Oct 2024 23:16:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815253.1228955; Wed, 09 Oct 2024 23:16: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 1syfua-0004UW-Ny; Wed, 09 Oct 2024 23:16:08 +0000
Received: by outflank-mailman (input) for mailman id 815253;
 Wed, 09 Oct 2024 23:16: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syfuZ-0004UQ-F7
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 23:16:07 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 74880f7f-8694-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 01:16:05 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 17285157592093.2429515659642902;
 Wed, 9 Oct 2024 16:15:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74880f7f-8694-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728515760; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=WGj+cu4FeL//7RPg/Lkv1zYSfn6pNwJ1cAM79YBT9FmSCPCFDUOHPcJe7Xhaf88YJHy3pXjixxvkJGeVkupfRzqTIJEEpapOZ5mCKBOmyQemYqcGZRyb4nTSHeSni3YlS7vBNX6Q6xEikrAuF/G2eRsXP08Q2oPgFQ9Whjpei8g=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728515760; 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=sFkSlqkzBqDOdveIXNPtblXiwMTRabpMWQoVqK0wUPo=; 
	b=lvk1u6uRvaPFIPM0yIa8QMCZkKNHY9FYaFlDkMEuuoD8FJ2r7JPPpavoffWGUFKj7QOXwQ+08AGKoNCd9gIUPHZGnExA9Vfa8m5N0ghLz7BbuzP6WJJwHRd2fv48/7rEZ32uDGyly8r8hFQIvCAGL8YVaEiIzE/MUVyesDambYo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728515760;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=sFkSlqkzBqDOdveIXNPtblXiwMTRabpMWQoVqK0wUPo=;
	b=WMjcerMmLfvJPBp/+1mXBZPwhpmNIj57KkHb3Oj4dWQqYOIAm8Q4rMmCafFL7BO3
	k7t6ixcs2WDUfzCBiEQGl5drAEtrh78gK8jb9hlDsHqJ2xpzcKJqILEiosIdzdVAkUI
	J4Ue8l227JyTPrXhzq6dgNg7EoNx5mbUcwGtoX80=
Message-ID: <70974a91-8c8c-49e2-91c0-cca7274e3579@apertussolutions.com>
Date: Wed, 9 Oct 2024 19:15:56 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 33/44] x86/boot: convert initial_images to struct
 boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-34-dpsmith@apertussolutions.com>
 <45f6d47b-0b17-4451-8956-c42260d9aaa5@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <45f6d47b-0b17-4451-8956-c42260d9aaa5@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 14:52, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> The variable initial_images is used for tracking the boot modules 
>> passed in by
>> the boot loader. Convert to a struct boot_module and adjust the code 
>> that uses
>> it accordingly.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 15 +++++++++------
>>   1 file changed, 9 insertions(+), 6 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index d5916e85f68e..30a139074833 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
> 
>> @@ -336,8 +336,9 @@ unsigned long __init 
>> initial_images_nrpages(nodeid_t node)
>>       for ( nr = i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        unsigned long start = initial_images[i].mod_start;
>> -        unsigned long end = start + PFN_UP(initial_images[i].mod_end);
>> +        unsigned long start = initial_images[i].mod->mod_start;
>> +        unsigned long end = start +
>> +                            PFN_UP(initial_images[i].mod->mod_end);
> 
> This can fit on a single line.

Ack.

>>           if ( end > node_start && node_end > start )
>>               nr += min(node_end, end) - max(node_start, start);
>> @@ -353,10 +354,12 @@ void __init discard_initial_images(void)
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        uint64_t start = (uint64_t)initial_images[i].mod_start << 
>> PAGE_SHIFT;
>> +        uint64_t start =
>> +            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
>>           init_domheap_pages(start,
>> -                           start + 
>> PAGE_ALIGN(initial_images[i].mod_end));
>> +                           start +
>> +                           PAGE_ALIGN(initial_images[i].mod->mod_end));
> 
> This can fit on a single line.

Ack.

>>       }
>>       bi->nr_modules = 0;
> 
> With those fixed:
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks!

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 23:22:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 23:22:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815260.1228964 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syg0e-0007t0-G5; Wed, 09 Oct 2024 23:22:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815260.1228964; Wed, 09 Oct 2024 23:22: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 1syg0e-0007st-CC; Wed, 09 Oct 2024 23:22:24 +0000
Received: by outflank-mailman (input) for mailman id 815260;
 Wed, 09 Oct 2024 23:22: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syg0d-0007sn-37
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 23:22:23 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 54d2daf0-8695-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 01:22:21 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728516135732613.2294753033423;
 Wed, 9 Oct 2024 16:22:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 54d2daf0-8695-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728516137; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=B0VGJsUVT40OKRL+6yoToUqFbQ/LQZIICVAvI2TKD3J8BtrwQzsab/w0//yKksztni73UyqG0J4Qjof1csLm0DTaSxUOFxTomFMNAE7jspPVPp1xWYF4+4s9MCllM7m9dovRFB95v1UEU3pd0IeioyuFA+mgUvFZ7wbMlIv2Mwk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728516137; 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=75QBYXpr54qYnjDXsUy82zF9HVXkAAuduwH9MO58fEQ=; 
	b=L93VBVFGfaS2+cao1cFkG6YJnyQsrbO33L6GVmKuJD6mnAm5Z0kceMgPL6fZOSE2Eyq/hy2y1maaLYfHjueCx4HH+isVqWJt4HsF3vLiKuFeiuCnHR7Avo+wZOcnwpf+h8q/AYQbfbA2mEo6kPKVretYvGWn7Kq5Y7keP4+vw5U=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728516137;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=75QBYXpr54qYnjDXsUy82zF9HVXkAAuduwH9MO58fEQ=;
	b=PAskeEJDO1lHUCzUW26Jzxtc43qej3rHpI6+z/W9NQijj4bEhSQ9pWpc+oqfh3Ty
	qzHTftX2QGZqNquUwivEInok58NdqrAyjfpz2y0rSCdw5FIbrzGW/BEKAMAvDvvSkJr
	CqI5w+hLN4naEaFA5fBC7S3jMzktfOHcWeni/u2g=
Message-ID: <1f1ce581-c59b-4df8-854f-05cfc2cd5b62@apertussolutions.com>
Date: Wed, 9 Oct 2024 19:22:12 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 34/44] x86/boot: drop the use of initial_images unit
 global
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-35-dpsmith@apertussolutions.com>
 <bdec9cdf-08f8-4fbd-a626-703f58fa0938@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <bdec9cdf-08f8-4fbd-a626-703f58fa0938@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 15:04, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 13 ++++---------
>>   1 file changed, 4 insertions(+), 9 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 30a139074833..b3b6e6f38622 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -276,8 +276,6 @@ custom_param("acpi", parse_acpi_param);
>>   static const char *cmdline_cook(const char *p, const char 
>> *loader_name);
>> -static const struct boot_module *__initdata initial_images;
>> -
>>   struct boot_info __initdata xen_boot_info;
>>   static struct boot_info __init *multiboot_fill_boot_info(unsigned 
>> long mbi_p)
>> @@ -336,9 +334,9 @@ unsigned long __init 
>> initial_images_nrpages(nodeid_t node)
>>       for ( nr = i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        unsigned long start = initial_images[i].mod->mod_start;
>> +        unsigned long start = bi->mods[i].mod->mod_start;
>>           unsigned long end = start +
>> -                            PFN_UP(initial_images[i].mod->mod_end);
>> +                            PFN_UP(bi->mods[i].mod->mod_end);
> 
> Fits on a single line.

Ack.

>>           if ( end > node_start && node_end > start )
>>               nr += min(node_end, end) - max(node_start, start);
>> @@ -355,15 +353,14 @@ void __init discard_initial_images(void)
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>>           uint64_t start =
>> -            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
>> +            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
> 
> Fits on one line.  Can also be pfn_to_paddr(), which applies to earlier 
> patches.  Having said that, maybe it's okay to skip pfn_to_paddr as at 
> the end of the series mods[i].start is used without a shift.  i.e. fewer 
> transformations in these "mechanical" changes make review easier. Unless 
> someone else wants pfn_to_addr(), I am okay without that conversion.

After I did a few based on a comment from Jan on v4, I realized I am 
making changes that just go away or shift to a different conversion 
macro. I would prefer to just leave them to the end and make sure that 
when arriving at the final form, none of them are using any open coded 
forms.

I will move it up to a single line.

>>           init_domheap_pages(start,
>>                              start +
>> -                           PAGE_ALIGN(initial_images[i].mod->mod_end));
>> +                           PAGE_ALIGN(bi->mods[i].mod->mod_end));
> 
> One line.

Ack.

>>       }
>>       bi->nr_modules = 0;
>> -    initial_images = NULL;
>>   }
>>   static void __init init_idle_domain(void)
> 
> With the line fixups:
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks!

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 23:40:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 23:40:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815269.1228974 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sygIK-0005nc-Sj; Wed, 09 Oct 2024 23:40:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815269.1228974; Wed, 09 Oct 2024 23:40: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 1sygIK-0005nV-Oi; Wed, 09 Oct 2024 23:40:40 +0000
Received: by outflank-mailman (input) for mailman id 815269;
 Wed, 09 Oct 2024 23:40: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sygIJ-0005nP-B1
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 23:40:39 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e17da568-8697-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 01:40:37 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728517229335309.92409351738786;
 Wed, 9 Oct 2024 16:40:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e17da568-8697-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728517230; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=lpd33y8lGMW0q4oA0MrEWTQiZX+za0w2Sh122zscYt+PjiTTe9Xim2DolmRjHeCXXESdzsjoixyX7vYs2cOoZ4qkMHKwkT1QnB67p2rGWoAWGR8CoihpuzAM7mRhrmCsumNihnHgGDSSnkMoa1VdVHmlxTvdmgDXIRYJwfJguE0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728517230; 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=wEjUrgd2jp1hqRRrfbbzz70LLBIpzN+6eTdh8NGZVW0=; 
	b=cB3Ko2/vj0SqpucYlD964xEwJoimut26A9Kf4iEG6jHXRkb4bRBoHk35VOS29MQK88vekbdlPKQdef2/s2uhkNXv2opOCXGyoHS8wgqhIcNp6GxvMk3JfvIBvEGP8MDYW4WV6mE0qBc4V3/JVWSlJgUpx8ao7iZ7LKF99QHKrWg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728517230;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=wEjUrgd2jp1hqRRrfbbzz70LLBIpzN+6eTdh8NGZVW0=;
	b=cEJqccTRA0jQu5euetp1dU5z9s3+CuCZKJGiwadYV9p0dMGohSBRc7jc93r6nNHo
	WDUuE7v01edtvbQTcggmW/19Ltl+jCyo73uF+v9y2E07drRtUHbLliNbgXxFfMXRiDm
	+fw3xGKE+M8nSZP04YwIyPqOSdx0vqh6roD8j5xo=
Message-ID: <a9f1ba12-4019-4961-a9b1-9d4a21ca5243@apertussolutions.com>
Date: Wed, 9 Oct 2024 19:40:26 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 36/44] x86/boot: remove remaining early_mod references
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-37-dpsmith@apertussolutions.com>
 <52ccddc1-762a-440d-bd27-8d9e9c507c7b@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <52ccddc1-762a-440d-bd27-8d9e9c507c7b@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 15:15, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Any direct usages of struct mod have been transitioned, remove the 
>> remaining
>> references to early_mod fields.
> 
> This is unclear, please try to re-word.  "struct mod" and "early_mod" 
> don't exist.

Ack.

>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/setup.c | 31 +++++++++++--------------------
>>   1 file changed, 11 insertions(+), 20 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index e9e3da3204f1..0ffe8d3ff8dd 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
> 
>> @@ -1404,16 +1401,12 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>            */
>>           bi->mods[xen].start = virt_to_mfn(_stext);
>>           bi->mods[xen].size = __2M_rwdata_end - _stext;
>> -
>> -        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
>> -        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
>>       }
>> -    bi->mods[0].headroom =
>> -        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
>> -                         bi->mods[0].mod->mod_end);
>> -
>> -    bootstrap_map(NULL);
>> +    bi->mods[0].headroom = bzimage_headroom(
>> +                        bootstrap_map_bm(&bi->mods[0]),
>> +                        bi->mods[0].size);
> 
> Thunderbird might corrupt this, bit the above can fit on two lines:
>      bi->mods[0].headroom = 
> bzimage_headroom(bootstrap_map_bm(&bi->mods[0]),
>                                              bi->mods[0].size);

I actually prefer the same formatting as Jan has suggested, will apply 
that one.

>> +    bootstrap_map_bm(NULL);
>>   #ifndef highmem_start
>>       /* Don't allow split below 4Gb. */
> 
>> @@ -1708,8 +1699,8 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        set_pdx_range(paddr_to_pfn(bi->mods[i].mod->mod_start),
>> -                      paddr_to_pfn(bi->mods[i].mod->mod_start) +
>> +        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
>> +                      paddr_to_pfn(bi->mods[i].start) +
> 
> This belongs in patch 14 as mentioned there.

Ack.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 09 23:43:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 09 Oct 2024 23:43:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815279.1228983 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sygKg-0006PU-BL; Wed, 09 Oct 2024 23:43:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815279.1228983; Wed, 09 Oct 2024 23:43: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 1sygKg-0006PN-8i; Wed, 09 Oct 2024 23:43:06 +0000
Received: by outflank-mailman (input) for mailman id 815279;
 Wed, 09 Oct 2024 23:43: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=hnIC=RF=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1sygKe-0006PF-NS
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 23:43:04 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 38c6f7c2-8698-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 01:43:03 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728517376969820.0426571379464;
 Wed, 9 Oct 2024 16:42:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38c6f7c2-8698-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728517378; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=BTpm3aCLzfSJL/phcwNY+GLhBEwxOAO4MBH68OXg7nrG4FWC9ahH6RzIxLRpf5gCICKpF/6RyMu61Lj3XjzB/OM3ySCoz3iVvplSriUGFuRzEAPYOQtvQpqZcxGMX5qng18434BH8rbsWjCByAayPyDBc5AQ6B3JIH+E1wgoOxY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728517378; 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=qyC08CdODhZj8RVx6TF3gtfgjUytTLbNVkzSL5HWZzE=; 
	b=A+1Ij08ekBJns9hoZP4kR61hUYgAxaUjQ/Ge3cQAXNO1Fuwwadga1mMH8HANLKalbuJ/HdXXuNE9rFAHAYht034Bw13mjPoIslJnca4vu9q+lvErNQ3edMy3JdZqzqo0nex4yTULR2vvNq8H1yYLDf+5yEbTFU0q/a8N32HpW9Q=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728517378;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=qyC08CdODhZj8RVx6TF3gtfgjUytTLbNVkzSL5HWZzE=;
	b=qZpOtcpHya3Kc8PKqRU9ZrzzfBEAHC+IbrUQUt7sJnj+stuFqUrFpVXIkrBSZRrV
	7FW80nzkd04x3cqigUx7D9tJ0qq3OwXXKiMIg9vAuNt6viaSf404H971M7u44+tLj/A
	Al/3+wgnEPBYb4Ny/ytWu87LlSrRo0kxYWimz6K0=
Message-ID: <8089b4b4-ac1c-4eec-9ee6-8fe5806d32ba@apertussolutions.com>
Date: Wed, 9 Oct 2024 19:42:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 36/44] x86/boot: remove remaining early_mod references
To: Jan Beulich <jbeulich@suse.com>, Jason Andryuk <jason.andryuk@amd.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-37-dpsmith@apertussolutions.com>
 <52ccddc1-762a-440d-bd27-8d9e9c507c7b@amd.com>
 <c2914ba3-0f6a-49fc-aae3-d7e5f465860c@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <c2914ba3-0f6a-49fc-aae3-d7e5f465860c@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 02:53, Jan Beulich wrote:
> On 08.10.2024 21:15, Jason Andryuk wrote:
>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>> Any direct usages of struct mod have been transitioned, remove the remaining
>>> references to early_mod fields.
>>
>> This is unclear, please try to re-word.  "struct mod" and "early_mod"
>> don't exist.
>>
>>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>>> ---
>>>    xen/arch/x86/setup.c | 31 +++++++++++--------------------
>>>    1 file changed, 11 insertions(+), 20 deletions(-)
>>>
>>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>>> index e9e3da3204f1..0ffe8d3ff8dd 100644
>>> --- a/xen/arch/x86/setup.c
>>> +++ b/xen/arch/x86/setup.c
>>
>>> @@ -1404,16 +1401,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>>             */
>>>            bi->mods[xen].start = virt_to_mfn(_stext);
>>>            bi->mods[xen].size = __2M_rwdata_end - _stext;
>>> -
>>> -        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
>>> -        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
>>>        }
>>>    
>>> -    bi->mods[0].headroom =
>>> -        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
>>> -                         bi->mods[0].mod->mod_end);
>>> -
>>> -    bootstrap_map(NULL);
>>> +    bi->mods[0].headroom = bzimage_headroom(
>>> +                        bootstrap_map_bm(&bi->mods[0]),
>>> +                        bi->mods[0].size);
>>
>> Thunderbird might corrupt this, bit the above can fit on two lines:
>>       bi->mods[0].headroom = bzimage_headroom(bootstrap_map_bm(&bi->mods[0]),
>>                                               bi->mods[0].size);
> 
> Or else at least indentation wants to change, to one of the two possible
> forms:
> 
>      bi->mods[0].headroom = bzimage_headroom(
>          bootstrap_map_bm(&bi->mods[0]),
>          bi->mods[0].size);
> 
> (indentation increased by a level from the start of the statement) or
> 
>      bi->mods[0].headroom = bzimage_headroom(
>                                 bootstrap_map_bm(&bi->mods[0]),
>                                 bi->mods[0].size);
> 
> (indentation by one level biased from the start of the function call).
> Personally, if already wrapping like this, I'd prefer the former.

I agree with you, the former is more pleasing, though wouldn't line 3 
fit on line 2?

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:18:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:18:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815288.1228994 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sygsm-0000qq-Jw; Thu, 10 Oct 2024 00:18:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815288.1228994; Thu, 10 Oct 2024 00:18: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 1sygsm-0000qj-G2; Thu, 10 Oct 2024 00:18:20 +0000
Received: by outflank-mailman (input) for mailman id 815288;
 Thu, 10 Oct 2024 00:18: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=7jWX=RG=gmail.com=christopher.w.clark@srs-se1.protection.inumbo.net>)
 id 1sygsk-0000qK-QM
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:18:18 +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 255c83cb-869d-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 02:18:16 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-53959a88668so352552e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 17:18:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 255c83cb-869d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728519496; x=1729124296; 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=L1811Kbn77xL0wMEOCKfnuB9mBO/276WQPGSrtUSYL0=;
        b=TEoOKvifiNPdibdyYn+nT6prSbGSy3Y3uNpDcGxYeIzD47XyNmKD2lIPEh5v/uk6Qd
         xkQbMJ3bQYrrfo3JAlPndieJyP/310RB7PEv5V8IN1Rdj7eCgbtHMIXExBVEg9dsz3Pp
         /CcOPoiz95sRQrzlEBTZNpy5TjY0mSeHvz8z2pqBqXroFN388nNlfe6YKUUGfiHWQejt
         PZBzeeAMa9s2/xDz3/3LCUQyx/ZnwB4RRyzAjEjESaSVQzFnWrUsjJAWGwOolB+fHevf
         x5jbmPZmd7wpk//BDuVcbyhaq2ZlFFA03Nn9+30IHrDcdag9AmycaVKoT/bcwdB4qJie
         z2TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728519496; x=1729124296;
        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=L1811Kbn77xL0wMEOCKfnuB9mBO/276WQPGSrtUSYL0=;
        b=U/KVUEn6TCaLct2LrjWpCafcgj7ffV5PGluWghhfHDtBZH1fiMN6tgrCFAGiSfTOe2
         OZoOAc+IpSRq61BFlFna4vHgNA2twF1F+ufObw7LWC/iWwC5Pb7SSLtCcCII3ibJ22M5
         4h1eTNPG2FbrCAUaFAzsJ47hg+nzfK4AGs1JTadkiCIX+A+PlCLdr06E/l0IwYNYE1gs
         cUQ9nOAlzm6/JMjfCw5socGNmWVtx2vhborG3pixKFccf2RoIp6oDRN7z1sbMBPa9Cea
         4i9AAg426oTwryHqbmEJuicFq3sPHMSRuoqPcDe3cM7pUBXcRq+LEcd3YF783Nf1zexk
         nzDg==
X-Gm-Message-State: AOJu0YxslAQaJT2nvEyb98e48uYPky2RI320Lt805n9Q577GeDHzfIks
	Fgt1cI12+39Gdc6KDqSQMv8jApsMiQK+kLTrhRuFXAyryEcIP4dxmbs0J3RO6WZtfeG7PqTzKTJ
	gvlLSEZOucFQzIwAqkzDugc4cBsqwAA==
X-Google-Smtp-Source: AGHT+IEfFgtTzHwLAUorL4yKPIcXGHitXSBxS7K1Jinzdg8yPdwUtHDVjUZYfQc7q+JOLFfT0NXh9PA2lkTh5ZfyNRk=
X-Received: by 2002:a05:6512:2211:b0:52f:2ea:499f with SMTP id
 2adb3069b0e04-539c489a455mr2891299e87.24.1728519495925; Wed, 09 Oct 2024
 17:18:15 -0700 (PDT)
MIME-Version: 1.0
References: <20241004081713.749031-1-frediano.ziglio@cloud.com> <20241004081713.749031-5-frediano.ziglio@cloud.com>
In-Reply-To: <20241004081713.749031-5-frediano.ziglio@cloud.com>
From: Christopher Clark <christopher.w.clark@gmail.com>
Date: Thu, 10 Oct 2024 01:18:04 +0100
Message-ID: <CACMJ4GY3USqMM3Ha9M45GCRLxk8usSX4kcpuD_s4-h6SroJX-A@mail.gmail.com>
Subject: Re: [PATCH v3 04/19] xen: Update header guards - ARGO
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 4, 2024 at 9:17=E2=80=AFAM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> Updated headers related to ARGO.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Acked-by: Christopher Clark <christopher.w.clark@gmail.com>

> ---
>  xen/include/xen/argo.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> ---
> Changes since v2:
> - exclude missing public headers.
>
> diff --git a/xen/include/xen/argo.h b/xen/include/xen/argo.h
> index fd4cfdd55c..3ef62dab19 100644
> --- a/xen/include/xen/argo.h
> +++ b/xen/include/xen/argo.h
> @@ -12,8 +12,8 @@
>   * along with this program; If not, see <http://www.gnu.org/licenses/>.
>   */
>
> -#ifndef __XEN_ARGO_H__
> -#define __XEN_ARGO_H__
> +#ifndef XEN__ARGO_H
> +#define XEN__ARGO_H
>
>  #include <xen/sched.h>
>
> --
> 2.34.1
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:34:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:34:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815295.1229004 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syh8g-00064e-Qq; Thu, 10 Oct 2024 00:34:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815295.1229004; Thu, 10 Oct 2024 00: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 1syh8g-00064X-O0; Thu, 10 Oct 2024 00:34:46 +0000
Received: by outflank-mailman (input) for mailman id 815295;
 Thu, 10 Oct 2024 00: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syh8f-00064R-J6
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:34:45 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 704bf700-869f-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 02:34:42 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172852047687529.167888911115483;
 Wed, 9 Oct 2024 17:34:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 704bf700-869f-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728520478; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=LW9PE7SW2HpylCqSfGAH6M2kAAfXSU1pHkXgx08Qk8v17Ie8DzZHkUoS4GwqRTdX3hG5LP/uhjDYUUxIO/O95Knx+FpRNsKwV8vRbm56VePcij5N5oIuaXVPcOC85vy8w4YLvKATcMHaEWyuCONNGMtbMT1Q9qaPd4/HoVNrAFI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728520478; 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=3hotaApiG9nEtD5X/rHFSRzsivuL7l4e6M0/lJhnYqc=; 
	b=LOHmYf0lr1Xlp4APK5VZXMQiwH+KBXUlcX7TtP5ArsPJkmeSeRDLZybT+dm3GK5OSyvZ9Wp6ENfR3rAa8BrEJkojxxRN08BQWFUCsshM/vyFZcbyGfRDyrRKMJCey2cePBoha+2RuotNKh3G0f0xdkush+eF4NsFT/k6FHrAk6w=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728520478;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=3hotaApiG9nEtD5X/rHFSRzsivuL7l4e6M0/lJhnYqc=;
	b=Ju0vntgg3U6oE0HhyzcUsC3/LxwQ33KNQRPBvrcjbk7hxg4yADZQGQvhKRUofdBS
	YKDDkvPK6a3celSB2V1PjbDMrOb/frjluS2diTfjPeT+YymLft50wsP/RrBIb+I7sZt
	x9x4lg1RAqO2BCVB3b3HCdHHUy+XOlkvGhZ7SezU=
Message-ID: <781d6ee5-9fa2-4794-ad75-5e7927eb4649@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:34:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 39/44] x86/boot: introduce domid field to struct
 boot_domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-40-dpsmith@apertussolutions.com>
 <a51d0a6e-7050-44af-9a66-edbfba67bab1@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <a51d0a6e-7050-44af-9a66-edbfba67bab1@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 15:36, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Add a domid field to struct boot_domain to hold the assigned domain id 
>> for the
>> domain. During initialization, ensure all instances of struct 
>> boot_domain have
>> the invalid domid to ensure that the domid must be set either by 
>> convention or
>> configuration.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootdomain.h |  2 ++
>>   xen/arch/x86/setup.c                  | 12 +++++++-----
>>   2 files changed, 9 insertions(+), 5 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootdomain.h 
>> b/xen/arch/x86/include/asm/bootdomain.h
>> index 4285223ac5ab..d6264d554dba 100644
>> --- a/xen/arch/x86/include/asm/bootdomain.h
>> +++ b/xen/arch/x86/include/asm/bootdomain.h
>> @@ -11,6 +11,8 @@
>>   struct boot_module;
>>   struct boot_domain {
>> +    domid_t domid;
>> +
>>       struct boot_module *kernel;
>>       struct boot_module *ramdisk;
>>   };
> 
> Oh, you should probably move domid after the pointers to avoid a hole.

It's not a packed structure and at this point, we are not looking to 
make it an ABI. If the maintainers think there is a real concern here, 
then I can add a reserved field to fill the hole.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:45:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:45:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815303.1229013 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhJ6-0001JP-Nt; Thu, 10 Oct 2024 00:45:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815303.1229013; Thu, 10 Oct 2024 00:45: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 1syhJ6-0001JI-LO; Thu, 10 Oct 2024 00:45:32 +0000
Received: by outflank-mailman (input) for mailman id 815303;
 Thu, 10 Oct 2024 00:45: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhJ5-0001JC-Ig
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:45:31 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f1522004-86a0-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 02:45:29 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728521121837881.6838444291625;
 Wed, 9 Oct 2024 17:45:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f1522004-86a0-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728521124; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=f7yjk3EdyN3NE2za1qZxvdaQiZjbG7AkxeTOcKwRGcen6DkGTg/Evm7Xk2SRkq9mZtihz3OY0Lz9I7CTTbPHxToSayjcW3miVMLkS7w1+uTGJh6hk4PLMXhD3Cg+FJ5OZ0S4af67cg5RcgOeBBZ1vjXx0Po2mPnGiGtfOTB14zE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728521124; 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=PeU09RrBphn0uYPHwAaljcCdpkNjVuQhRTQBfmhzAFo=; 
	b=nf1AStuYmAweO4/JznYyPjkkh6B5vbcUeo34nVMpNzk/WsWy51Eooijyn2Cqiwq9dCzCfCkyf0YcWeFLhuhnLTafCPn3cjcd1rZB7g+vGSsGLXF3Bc1v6NzOR5bj2qdf0WtUtcdAUlk2FEaznFY9j235U2baPrrGpSTKMZFLPQU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728521124;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=PeU09RrBphn0uYPHwAaljcCdpkNjVuQhRTQBfmhzAFo=;
	b=FVAFKKvcp8QJfuoYXjOylEMCEk+Dv3mvusehdXBnAI56XNBJfCeaPJChjmCgLUK1
	RzKzFfQBiORhvtjtD368T+wqZlQPbajuVcoPVqK0i19BRYKlYTQsDI+K8HQs4zNzJFl
	TKzlnP9M1cX4Jl1zjFHhwcSgdFxeT0YjghAMWziM=
Message-ID: <12804fa2-68e0-4fd5-aef1-fc3a59730a75@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:45:19 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 40/44] x86/boot: add cmdline to struct boot_domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-41-dpsmith@apertussolutions.com>
 <1ec34665-36da-44a2-af5b-7b770017ea53@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <1ec34665-36da-44a2-af5b-7b770017ea53@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 16:05, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Add a container for the "cooked" command line for a domain.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/bootdomain.h |  4 ++++
>>   xen/arch/x86/setup.c                  | 18 ++++++++----------
>>   2 files changed, 12 insertions(+), 10 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootdomain.h 
>> b/xen/arch/x86/include/asm/bootdomain.h
>> index d6264d554dba..00f7d9267965 100644
>> --- a/xen/arch/x86/include/asm/bootdomain.h
>> +++ b/xen/arch/x86/include/asm/bootdomain.h
>> @@ -8,9 +8,13 @@
>>   #ifndef __XEN_X86_BOOTDOMAIN_H__
>>   #define __XEN_X86_BOOTDOMAIN_H__
>> +#include <public/xen.h>
>> +
>>   struct boot_module;
>>   struct boot_domain {
>> +    char cmdline[MAX_GUEST_CMDLINE];
>> +
> 
> 1024 bytes for just dom0 isn't too much.  But when hyperlaunch has 64 
> boot_domains, that's a good bit more.  But I suppose it isn't too much 
> RAM for a modern system.  This is __initdata, so it increases the binary 
> size.  I just want to highlight this in case others want to chime in.

I would prefer to leave it in the __initdata for now to avoid dealing 
with dynamic memory at this time. Later, if a need to optimize for 
binary size, then options could be explored.

> The code changes seem fine.

R-b then?

v/r
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:47:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:47:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815310.1229025 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhL0-0002SM-4b; Thu, 10 Oct 2024 00:47:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815310.1229025; Thu, 10 Oct 2024 00:47: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 1syhL0-0002SF-04; Thu, 10 Oct 2024 00:47:30 +0000
Received: by outflank-mailman (input) for mailman id 815310;
 Thu, 10 Oct 2024 00:47: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhKy-0002S5-LG
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:47:28 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 37b3aca9-86a1-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 02:47:27 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728521241337635.1970057559772;
 Wed, 9 Oct 2024 17:47:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 37b3aca9-86a1-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728521242; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=lY4iIpFbpJxkxh3GPB27gyUMyp4iNN7DsjBkjG/P1K2Spm2GRNKruwjjirJsj0qQzIaGoLUan27HZtCmGeHQONqXM98vXisHEQ/CoqrK999tFQ7QkRtyF3R18FDUn5h3KfH0t6Ku3+ONxOOrJjJylIpsUMycyjvAVp/6WC5DaRc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728521242; 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=gZTkhOSk/kaV0obRoFr8A61Yu9lGE1AAoGmhvHhtnbY=; 
	b=bnqe7aVHjEvT9C+L6kAtKkVu41ic0h04gWeydsM2ROdypBpxPdrHaj0BXY76aXEk95V74i4IZC+ye+V/fRDixYrDnql7HKPgC5b8vs0KUi9WTiPkZyeiZqo/PqT1PPrpjVvHGFC1gXH0/7zP0Tyw+LthajpYGv0Zh2ftynBfv3Y=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728521242;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=gZTkhOSk/kaV0obRoFr8A61Yu9lGE1AAoGmhvHhtnbY=;
	b=g1tH3eAVoigkESX0SpMUc1QMuJ5U24PpHZJwy6e8EkHvKG1sMsThJD7Rcie0SwbX
	Jlg4JcyVN5X/TLt8i3yFRpbWcyiWD6EbpLUl/40Dqmyf/dAjfc7HJcAELFWpkAgrOx/
	/vI1rIyLPQtdouzPZUU4wfRtW2nu5zudWLkMbvQU=
Message-ID: <d0b5da96-1928-48c8-b677-144df881cae3@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:47:19 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 41/44] x86/boot: add struct domain to struct
 boot_domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-42-dpsmith@apertussolutions.com>
 <949190c5-07a2-44dc-a4de-bc59ae88beec@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <949190c5-07a2-44dc-a4de-bc59ae88beec@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 15:48, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> Store a reference to the created domain in struct boot_domain.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
> 
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index f250638edf09..e6a231bd2d42 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -959,7 +959,6 @@ static struct domain *__init create_dom0(struct 
>> boot_info *bi)
>>           },
>>       };
>>       struct boot_domain *bd = &bi->domains[0];
>> -    struct domain *d;
>>       if ( opt_dom0_pvh )
>>       {
>> @@ -976,13 +975,13 @@ static struct domain *__init create_dom0(struct 
>> boot_info *bi)
>>       /* Create initial domain.  Not d0 for pvshim. */
>>       bd->domid = get_initial_domain_id();
>> -    d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : 
>> CDF_privileged);
> 
> It's a smaller patch if you keep `d` and the line above and then do:
>         bd->d = d;

Yah, this can be done.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:49:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:49:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815316.1229034 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhMQ-00041w-DO; Thu, 10 Oct 2024 00:48:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815316.1229034; Thu, 10 Oct 2024 00:48: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 1syhMQ-00041p-9i; Thu, 10 Oct 2024 00:48:58 +0000
Received: by outflank-mailman (input) for mailman id 815316;
 Thu, 10 Oct 2024 00:48: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhMO-0003zA-Fk
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:48:56 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6c483ac2-86a1-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 02:48:55 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728521327947535.3189888307714;
 Wed, 9 Oct 2024 17:48:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6c483ac2-86a1-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728521330; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=RP1K6fjitmnKWpbyLLfm2Mmspb+2/k/+C5shkF3JFXW6iKszLKLXHT/MoUmEGdSW5zzYdfapAJJPQSKtk2xTlyNWGdmOqbLOMJQO3vrKSXAX0nU+4aA2tE4gEEuJCJHocSJw1hJlr6MvFAOfHaWvY0aZJU9hkEYFByrR85n3iWE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728521330; 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=a3VU1X5SA5I7VYI789eu+HfeUv6MaDgsObZz5TaOGpQ=; 
	b=DcQxUhXU4ICvrNKDME13tsAqPY37m58mStP6LOykYLBO0pXrC/oqYU/SPcyVNRKmjx9lqKD8D05fyW9AcMs/MPjAU1WoQt2kIOpIrRHvKOjvWKaSh5ML6BekzSp0rNcf9QItqNFDxVSboh5OyVfXs3qU9gOOgtEgFDUv8Lsy0Dc=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728521330;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=a3VU1X5SA5I7VYI789eu+HfeUv6MaDgsObZz5TaOGpQ=;
	b=qv0pwbjXw5T6vW/HZlWbQIn18wyU2w5QKSr28IA95xJ91gCwI7HsXi8rTEw9ItrH
	lifmG+txO6cgH4dvGzzIG+ji62tWpwbg21C8VYUKlyoTaejOyk5dgjYdUlAqWVVgeEC
	uMCfeNrTmV014bRKNyYgboMRaKRxBzVNGEqRKaeQ=
Message-ID: <8a881a8c-0ef5-4ca1-bd31-2651b064a26a@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:48:46 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 42/44] x86/boot: convert construct_dom0 to struct
 boot_domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-43-dpsmith@apertussolutions.com>
 <b6429ff7-207d-4247-9bc7-4875a68a2b68@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <b6429ff7-207d-4247-9bc7-4875a68a2b68@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 15:47, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> A struct boot_domain now encapsulates the domain reference, kernel, 
>> ramdisk,
>> and command line for the domain being constructed. As a result of this
>> encapsulation, construct_dom0 can now take a single struct boot_domain 
>> instead
>> of these four parameters.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/dom0_build.c        | 19 +++++++++----------
>>   xen/arch/x86/include/asm/setup.h |  4 +---
>>   xen/arch/x86/setup.c             |  2 +-
>>   3 files changed, 11 insertions(+), 14 deletions(-)
>>
>> diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
>> index 71b2e3afc1a1..e552f2e9abef 100644
>> --- a/xen/arch/x86/dom0_build.c
>> +++ b/xen/arch/x86/dom0_build.c
>> @@ -597,22 +597,21 @@ int __init dom0_setup_permissions(struct domain *d)
>>       return rc;
>>   }
>> -int __init construct_dom0(struct domain *d, const struct boot_module 
>> *image,
>> -                          struct boot_module *initrd, const char 
>> *cmdline)
>> +int __init construct_dom0(struct boot_domain *bd)
>>   {
>>       int rc;
> 
> I think a local variable would be better:
> 
>      struct domain *d = bd->d;
> 
> The patch is smaller, and using just d is common in the hypervisor.

Ack.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:50:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:50:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815325.1229044 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhNW-00063y-Pp; Thu, 10 Oct 2024 00:50:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815325.1229044; Thu, 10 Oct 2024 00:50: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 1syhNW-00062y-LX; Thu, 10 Oct 2024 00:50:06 +0000
Received: by outflank-mailman (input) for mailman id 815325;
 Thu, 10 Oct 2024 00:50: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhNU-0005nP-SB
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:50:04 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 94f86966-86a1-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 02:50:03 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728521396399897.9801760655782;
 Wed, 9 Oct 2024 17:49:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 94f86966-86a1-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728521398; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=BGKNCTKR7Iu8qOl7PZWKH6TTzqTpRMmqDofsp9PNTBxerM3bLXWKlpgYfJSgyQ/Lj/BPfp9+nwL51wV4XM6g2d1o3f11TT2SVPLLUyounAJl8/8bvkC4mxEyVkbXN6gpEZ2ee+rI95KhgRLNDX1IQbanoDuvN2x6XRY+dNhX1SI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728521398; 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=NNKOfYBwW6ac4MKfufnn4w2/OIYAggKc4UDv6sB8Ytg=; 
	b=BokSoqe+L8PRpvL1EIBw4zgcCZvBpjMqRoD4hN6HfIVvHwVpRzQWTeW3QT7B6b7l8tLOwYnJ8ibRSmkPT2PYyyzjAtvL77AOAIpATDyqfJVTPJZnMjSS6Q27RAHkcFrJRci+7K9SGku3zVJiaxA1SNtxI/5Xl26+U7sc7jHBCS8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728521398;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=NNKOfYBwW6ac4MKfufnn4w2/OIYAggKc4UDv6sB8Ytg=;
	b=BbGxReiICqqeR9M+wwyWTs0iG3h7bFvGFODQHHgj+eHroWUzKxCdc1bYq8VVfxab
	SPUMhuulCF1WRSO6d5/UdH9aIcJVOqvFyt28mX3GoFRsgTmFkUk25Qst2xut/FpWLQE
	CEJ4XXj8+YBUUjsLyUiTZ0hWzHbADSEv+UExrKcQ=
Message-ID: <5726a5d1-7a76-41c8-85b1-c0c08cae4c5d@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:49:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 43/44] x86/boot: convert dom0_construct_pv to struct
 boot_domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-44-dpsmith@apertussolutions.com>
 <5fe173b3-9c75-4f10-92df-d8e022231bf3@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <5fe173b3-9c75-4f10-92df-d8e022231bf3@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 15:54, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> With construct_dom0 consuming struct boot_domain, continue passing the
>> structure down to dom0_construct_pv.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
>> diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
>> index 16b8c1e40998..34974aa7cd56 100644
>> --- a/xen/arch/x86/pv/dom0_build.c
>> +++ b/xen/arch/x86/pv/dom0_build.c
>> @@ -354,10 +354,7 @@ static struct page_info * __init 
>> alloc_chunk(struct domain *d,
>>       return page;
>>   }
>> -static int __init dom0_construct(struct domain *d,
>> -                                 const struct boot_module *image,
>> -                                 struct boot_module *initrd,
>> -                                 const char *cmdline)
>> +static int __init dom0_construct(struct boot_domain *bd)
>>   {
>>       int i, rc, order, machine;
>>       bool compatible, compat;
>> @@ -373,11 +370,12 @@ static int __init dom0_construct(struct domain *d,
>>       struct page_info *page = NULL;
>>       unsigned int flush_flags = 0;
>>       start_info_t *si;
>> -    struct vcpu *v = d->vcpu[0];
>> -    void *image_base = bootstrap_map_bm(image);
>> -    unsigned long image_len = image->size;
>> -    void *image_start = image_base + image->headroom;
>> -    unsigned long initrd_len = initrd ? initrd->size : 0;
>> +    struct domain *d = bd->d;
>> +    struct vcpu *v = bd->d->vcpu[0];
> 
> This can stay:
>      struct vcpu *v = d->vcpu[0];

Ack.

> With that:
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks!

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:51:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:51:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815331.1229053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhOm-0006df-35; Thu, 10 Oct 2024 00:51:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815331.1229053; Thu, 10 Oct 2024 00:51: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 1syhOl-0006dY-WE; Thu, 10 Oct 2024 00:51:24 +0000
Received: by outflank-mailman (input) for mailman id 815331;
 Thu, 10 Oct 2024 00:51: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhOl-0006bN-4G
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:51:23 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c35c9737-86a1-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 02:51:21 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728521476050465.139323131785;
 Wed, 9 Oct 2024 17:51:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c35c9737-86a1-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728521476; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=X4vFJXHU0Hm6YZUdycpH5FFI6OCMp4auW/2kK9I+8nAAkEo2p497AC17aam5UxGEDV01TBsWEEfe9CNq+QgiWvx6PrU8Anqt7ZZa7LV8oLew6DzsfAq7lxA+RrOXp9qwTYUFB6Lixmb/QaPfufuucZzxXVU4TsqYqORq5Eo3rWY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728521476; 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=/96HRECIQr3cDVNrj658UI3UOWRbkP5oqGJEAQMhND4=; 
	b=AcL+gei8VeZ//rOiBKUCtrPDZ9iUF2xSqdJCCrvVNb7DYCOjM2R2K6jBpy9TMi9zWaKzHjqe+myNEEp1LZtIy1kW5TbDVSK8JvePSZy/UQGPTF3y3MOUJIB87P2EhDhWhJvjJSZ/DDpReC/6liweWbpSqRXHo9oskcFYcCKW0P8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728521476;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=/96HRECIQr3cDVNrj658UI3UOWRbkP5oqGJEAQMhND4=;
	b=W4MgustgpiywZyp5sAYVVkdc1WZO+Do/M45jaDAosJRhTcAhBdib7+D33q6LGB9z
	E561Yk19w35I0edH4Ianq8HuuxBegHUs2K6/RNf8jdq5jzTVhBXFkQMrEDD79016X+/
	UXMWbIzCBs5VONmsROiTNpDHkX23ykUlMkoGYwzc=
Message-ID: <b4266ea0-9ddc-486b-9dcb-1e344aa700d5@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:51:14 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 44/44] x86/boot: convert dom0_construct_pvh to struct
 boot_domain
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-45-dpsmith@apertussolutions.com>
 <22c2165b-c2cc-4091-b808-b903fc954757@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <22c2165b-c2cc-4091-b808-b903fc954757@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/8/24 15:56, Jason Andryuk wrote:
> On 2024-10-06 17:49, Daniel P. Smith wrote:
>> With construct_dom0 consuming struct boot_domain, continue passing the
>> structure down to dom0_construct_pvh.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
>> diff --git a/xen/arch/x86/hvm/dom0_build.c 
>> b/xen/arch/x86/hvm/dom0_build.c
>> index a3fd5e762dc4..755e257cdf30 100644
>> --- a/xen/arch/x86/hvm/dom0_build.c
>> +++ b/xen/arch/x86/hvm/dom0_build.c
>> @@ -1299,25 +1299,23 @@ static void __hwdom_init 
>> pvh_setup_mmcfg(struct domain *d)
>>       }
>>   }
>> -int __init dom0_construct_pvh(
>> -    struct domain *d, const struct boot_module *image,
>> -    struct boot_module *initrd, const char *cmdline)
>> +int __init dom0_construct_pvh(const struct boot_domain *bd)
>>   {
>>       paddr_t entry, start_info;
>>       int rc;
> 
> Again, I recommend using a local struct domain *d to cut down on the churn.

Ack.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:55:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:55:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815337.1229064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhSs-0007Eg-Ji; Thu, 10 Oct 2024 00:55:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815337.1229064; Thu, 10 Oct 2024 00:55: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 1syhSs-0007EZ-Gb; Thu, 10 Oct 2024 00:55:38 +0000
Received: by outflank-mailman (input) for mailman id 815337;
 Thu, 10 Oct 2024 00:55: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhSr-0007ER-Ce
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:55:37 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5b298c91-86a2-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 02:55:36 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728521730303868.8311875903787;
 Wed, 9 Oct 2024 17:55:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b298c91-86a2-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728521731; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=a7eU9MctOI2b/68+pPAg2+JzrAgk/CSyjRGy7Q2fSI7MbzZT2mp4GuXr2Ka8Vhwv+W8hPXqeGBYZ6f7oX8scTg/Ejbvc+jmgcDE1UBdZBdi/IOg3Q7K/y/VAHQCYkBdt+RkuDUki1H7PMFlualiKvuQuSfDQ4tsAsD/4C0yvzRw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728521731; 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=Cb8CBPgxOHEwT2ogu6FkgCi7AuroFre40ZlnSxb2vT4=; 
	b=CrIbBO64fxXrpIEaQ/A6OD52IbU7STEfhmjCpVqQ02Mmw4eVXMgQ+bajMKCH2NFSOAw9/9ZfO9quww9C9X9RBkpS2QcQ9vPn7ZDEbbDzmfaBap6VmF7rg1cxWDAzyha+XuAgIUYMYs7ZQclXRDhtoukNjSyISpEMRSapFwjzpe8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728521731;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=Cb8CBPgxOHEwT2ogu6FkgCi7AuroFre40ZlnSxb2vT4=;
	b=kmRriep8Ci6uywaKyqVMlz+fkEbHmuruNRXms8EYCLMzK40gl7fa+Ac+oUqOOsWN
	Fj308fQaET/U8ML2e4Er2lvSgTWz4uBZJXrCu9e7pz4QOsy9d+YknH/IbJc4NZay05C
	PsjK7/XeJ6ztbRR1az242/Hll84EqOeq8HjfTaR8=
Message-ID: <b2975fd1-543d-444a-ba39-20b36c34b769@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:55:28 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/44] x86/boot: move boot loader name to boot info
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-3-dpsmith@apertussolutions.com>
 <edaf2302-ae68-4c05-b8cf-1613ae9d4e7b@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <edaf2302-ae68-4c05-b8cf-1613ae9d4e7b@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:07, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -285,6 +285,9 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>>   
>>       bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
>>   
>> +    bi->loader = (mbi->flags & MBI_LOADERNAME) ?
>> +                            __va(mbi->boot_loader_name) : "unknown";
> 
> Either (noting that generally we exempt ?: from the operator-on-earlier-line
> rule)
> 
>      bi->loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
>                                                 : "unknown";
> 
> or
> 
>      bi->loader = (mbi->flags & MBI_LOADERNAME)
>                   ? __va(mbi->boot_loader_name) : "unknown";
> 
> or
> 
>      bi->loader = (mbi->flags & MBI_LOADERNAME)
>          ? __va(mbi->boot_loader_name) : "unknown";
> 
> (in the order of my personal preference).

I would prefer the first as well. Will adjust.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 00:59:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 00:59:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815347.1229074 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhWi-00024Y-23; Thu, 10 Oct 2024 00:59:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815347.1229074; Thu, 10 Oct 2024 00:59: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 1syhWh-00024R-VG; Thu, 10 Oct 2024 00:59:35 +0000
Received: by outflank-mailman (input) for mailman id 815347;
 Thu, 10 Oct 2024 00:59: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhWg-00022t-UC
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 00:59:34 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e7ec7bf8-86a2-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 02:59:32 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728521963986940.3583225529694;
 Wed, 9 Oct 2024 17:59:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7ec7bf8-86a2-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728521966; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=hBoV0jP2yJXFvJEJPeBq59dmYTZ0dcniSGj5VTj9/PZ6O6LUHPXe9BLuKFx5mJa5J+PJtqIuEzCBmeKqjGHFtH4eEGD20SwZwCE2gm5fCcPSH0vbkFzvbpiyp0mo74dpgjAD9pg+qGHqxFwYjLodgqqhnCyQLrHTVnVJDo4Zu8A=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728521966; 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=WerD3T26xORxZ1WANjFbaYCNzR7Qa1qL5Jp0Y7YENtg=; 
	b=SsHotlmd3HPRhw7qcrPLDAxSJ2IgYloC6TEBTZmoZwmblzTy8/hALKxmWej8R1vTitLdvbfbtesKv4p8QhPlLxoswtOnLI5Bgn/hSwzcYDcqqCAbwgvfJ78LzMX/Zngm8CRDaW/z1+tb5Y04/3wKESs9pzGx16wdYXejSWiCavs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728521966;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=WerD3T26xORxZ1WANjFbaYCNzR7Qa1qL5Jp0Y7YENtg=;
	b=gW4RIW6thJX0vslqtAdiL4auvsvXolj8wOvyXefiuQPQpKOAQ9+mmkKX3PGGk/mA
	ZDCOXTAXPEl5ttMf3MS9fb+keZuc4ktoUp0SdWi07vQYFn2al1kc4PQmY+62YEiL5Pq
	jSj2DaGC99kz6rTwf5NKN6g3qyjJNtg4YJN7KoXw=
Message-ID: <3cec09e7-965f-48cf-8c7d-baff5ecd811a@apertussolutions.com>
Date: Wed, 9 Oct 2024 20:59:22 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/44] x86/boot: move mmap info to boot info
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-5-dpsmith@apertussolutions.com>
 <07b7f29a-db11-4ac6-bd1f-c2d9eb657b88@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <07b7f29a-db11-4ac6-bd1f-c2d9eb657b88@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:13, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -296,6 +296,12 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>>       else
>>           bi->cmdline = "";
>>   
>> +    if ( mbi->flags & MBI_MEMMAP )
>> +    {
>> +        bi->memmap_addr = mbi->mmap_addr;
>> +        bi->memmap_length = mbi->mmap_length;
>> +    }
>> +
>>       return bi;
>>   }
>>   
>> @@ -1185,13 +1191,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>       {
>>           memmap_type = "Xen-e820";
>>       }
>> -    else if ( mbi->flags & MBI_MEMMAP )
>> +    else if ( bi->memmap_addr )
> 
> I'd like to note that this isn't an exact transformation, as with the flag
> set the memory map could theoretically also like at address 0. As long as
> the legacy BIOS layout of low memory is as it is, that won't happen. I'm
> less certain going forward, for legacy-free hardware/firmware. Imo at the
> very least this needs mentioning as intentional in the description, for
> archeologists to later be able to tell whether this was an oversight.
> 
> Or maybe it would be better to check ->memmap_length? That being zero
> clearly means there's effectively no map.

I think checking memmap_length is a better approach because as you say, 
the only time it will be zero is if no map was provided.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 01:02:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 01:02:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815353.1229083 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhZ2-0002yN-DX; Thu, 10 Oct 2024 01:02:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815353.1229083; Thu, 10 Oct 2024 01:02: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 1syhZ2-0002yG-Aq; Thu, 10 Oct 2024 01:02:00 +0000
Received: by outflank-mailman (input) for mailman id 815353;
 Thu, 10 Oct 2024 01:01: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhZ0-0002yA-RX
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 01:01:58 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3e3d0a29-86a3-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 03:01:56 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728522111520377.1807260724768;
 Wed, 9 Oct 2024 18:01:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3e3d0a29-86a3-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728522112; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Dv56mP/+DKLa8/YjDIWyWo1TleCfbT9P22sIsK7AIFWV76MlhbI2Qx95bhHUY15m99Fx16hoIKqRRFGNp7jaSkBs8uW6DCpm/6Ry3B9HPp7TQQAUnmmK7cYQ2xrSemMqXTCRbLwDNGVglHANJcbdZkNneqZ9oDhA761IADwr0K8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728522112; 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=8It+sKe1bOr1v4FAbbm/h6qlDH9jGu7Ukb0srMyWRhI=; 
	b=GiL5usWGHMR5hY4gQ6Bk3JzlUB41Wurw7vo3//IAbY7CJzIFTulJ/aa14Y0MehJv6UEf7OZ50v0JUn24VRd9sWIyVUyewoThqd/MYg33KV2LFFZGkVhezOnv+j+fZkTAEm8VaIrS6UYv2sWWyB3eZj3deZyF9VFGMxK1a63p6P8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728522112;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=8It+sKe1bOr1v4FAbbm/h6qlDH9jGu7Ukb0srMyWRhI=;
	b=ehHUz+u4fx0rbN29basz25QUlURuaXxhpO786UAexA1czx5LmQ8gUTuCREhhQQHe
	CwVavshw4xKVMgovyppjZqwM81K8aCOsDU4jIIbol3U81UAFBN1ZjYX55+2nbWGw7tc
	vHqGOrM5o5P7fksBb5c4SNorKz5mUgxPvmlAnvw8=
Message-ID: <178dfeb1-0e44-4905-824d-3a1c56a2706d@apertussolutions.com>
Date: Wed, 9 Oct 2024 21:01:49 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 05/44] x86/boot: introduce struct boot_module
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-6-dpsmith@apertussolutions.com>
 <76faeab0-3c8d-426d-8019-871ebfebbf78@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <76faeab0-3c8d-426d-8019-871ebfebbf78@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:17, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> @@ -302,6 +304,13 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>>           bi->memmap_length = mbi->mmap_length;
>>       }
>>   
>> +    /*
>> +     * This will iterate over all modules to include an extra mb module, which
>> +     * should have been reserved to hold an entry for Xen.
>> +     */
>> +    for ( i = 0; i <= bi->nr_modules; i++ )
>> +        bi->mods[i].mod = &mods[i];
> 
> I find the comment difficult to follow / match with code here and elsewhere.
> How about "Iterate over all modules, including the extra one which should
> have been reserved for Xen itself"?

Okay.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 01:03:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 01:03:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815358.1229093 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syha9-0003Tz-M1; Thu, 10 Oct 2024 01:03:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815358.1229093; Thu, 10 Oct 2024 01: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 1syha9-0003Ts-JT; Thu, 10 Oct 2024 01:03:09 +0000
Received: by outflank-mailman (input) for mailman id 815358;
 Thu, 10 Oct 2024 01: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syha7-0003Ti-Qe
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 01:03:07 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 67b4fe65-86a3-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 03:03:06 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728522179843234.98468546043046;
 Wed, 9 Oct 2024 18:02:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 67b4fe65-86a3-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728522180; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=OoRI3Q5y1SpBmRcPUNkJrkoC3wmFAkSCwUkCwY9QhF6sIEh6QZU2oXDFNk16lRAM0IdL2zmHAHGywp7/Z7y6SNRXApTAoxfrbzfCnNh04fZVTLtpZ5XjhEIJs5aixOUjnNdVepSCnF97eQD5TxhqqV9mxWpnUXf89n/1tz174U0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728522180; 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=yVhC6M2mU4XEU3wMpIHe172mth4+/epzj7mRr1heY9w=; 
	b=hxdinGa4TgRYpbgrhWjD9BRHRqx5JiQwetPC27leLOpDFIJKM/2FqjnClp4xzTGgi8UEdPMnUGV4qieSkuKnB/AUfOD3ZsFmU6gGaahu68OZuug4WwJ97QlrwFV6vjlZRtZEwBm6Dod3YR/Rk/xbnr0cAtWTCPrf+jNOd0CKzJ0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728522180;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=yVhC6M2mU4XEU3wMpIHe172mth4+/epzj7mRr1heY9w=;
	b=dmigOh0Cv5vNzSR+6hAB/wOwDFfkmUKpN6QxZoERo/OXAvPb2ggsufIxR5ZW8iFa
	Jys1EttVrp6lzH4jqHR7YKOgOEcFZfIPWpTvsL2AcEiRYpj9/AtxKzNDMpmgPdd2BHW
	zzVgCtAqEOc8+Qd0/GFOoY5tzOGPn9+qxmZg1IT8=
Message-ID: <97cf65af-b39f-4c4e-bbb9-60aa01004b75@apertussolutions.com>
Date: Wed, 9 Oct 2024 21:02:57 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 06/44] x86/boot: convert consider_modules to struct
 boot_module
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-7-dpsmith@apertussolutions.com>
 <aa040161-b7f6-4520-b3b7-55d7e8ee867f@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <aa040161-b7f6-4520-b3b7-55d7e8ee867f@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:22, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> @@ -639,20 +639,20 @@ static uint64_t __init consider_modules(
>>   
>>       for ( i = 0; i < nr_mods ; ++i )
>>       {
>> -        uint64_t start = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
>> -        uint64_t end = start + PAGE_ALIGN(mod[i].mod_end);
>> +        uint64_t start = (uint64_t)pfn_to_paddr(mods[i].mod->mod_start);
> 
> With the switch to pfn_to_paddr() the cast isn't needed anymore.

Ack.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 01:08:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 01:08:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815367.1229103 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syher-0004mJ-6N; Thu, 10 Oct 2024 01:08:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815367.1229103; Thu, 10 Oct 2024 01:08: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 1syher-0004mC-3m; Thu, 10 Oct 2024 01:08:01 +0000
Received: by outflank-mailman (input) for mailman id 815367;
 Thu, 10 Oct 2024 01: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syheo-0004m6-Um
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 01:07:58 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1546eabc-86a4-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 03:07:57 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728522469974591.300572494625;
 Wed, 9 Oct 2024 18:07:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1546eabc-86a4-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728522471; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Wzapc2H5edJqJx441lOiUVHJ7KGe3LKr1701yD44KrZ8Ve0iGYjUJiw2KWpLxtDE4szpyq/Q9WMX+ve5vA/XUO15QWSwDUGCGrooRvWuP2a3bqe9c1/NRafQS6a1ev+GC6L1xqV2iOt3lJMSBX0BkFQW+T7vSCmcrqO3ob8QsgM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728522471; 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=uHS3cMQp8xkM8h7cg1quP597bOWP2sRF49KObS84wX0=; 
	b=OU1fddYIt83aTXZXRAX2uPADAMsGg3QF1sVAXnFyeG6q60baXJrxloXYeWiWClKL9DdDbMG7NyVztYUEfLsUlNKH5lqmAN0zC5aC1e0rmOxx8x0BLnJikWknHAnDUeaRsf8rAFP2aVjgUWKBKBxoNtg8tstlcRfM/b6YxmwfdYI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728522471;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=uHS3cMQp8xkM8h7cg1quP597bOWP2sRF49KObS84wX0=;
	b=XhD/gd1NvkCXWO7zxjx07+6Fpf/yXzf1hCBAPoHtbGVgWPa1Ry0phP7yMOpYMfEO
	ENyNHa/rDOVL+qUi6TnXmP4xPxCL/LI4bcl5wqNUhY01XMFrVZ3IBjzBwo4+yucvPkc
	cegKHmn/XMYZg0klD+ggJmdhqrIb35EPFBhtrpkI=
Message-ID: <27fec566-05ab-4405-ba65-a47e1460f293@apertussolutions.com>
Date: Wed, 9 Oct 2024 21:07:48 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/44] x86/boot: convert setup.c mod refs to early_mod
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-9-dpsmith@apertussolutions.com>
 <c0b97711-6bf2-476c-a2f7-7f4dc075d2aa@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <c0b97711-6bf2-476c-a2f7-7f4dc075d2aa@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:29, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> @@ -2061,8 +2067,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>        * We're going to setup domain0 using the module(s) that we stashed safely
>>        * above our heap. The second module, if present, is an initrd ramdisk.
>>        */
>> -    dom0 = create_dom0(mod, bi->mods[0].headroom,
>> -                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
>> +    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
>> +                       initrdidx < bi->nr_modules ?
>> +                            bi->mods[initrdidx].mod : NULL,
> 
> See an earlier comment regarding wrapped ?:. We certainly never have
> indentation levels of 5 blanks.

Can format similar as earlier, and just fyi, that is a stray space from 
wrapping and not a five space indent.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 01:11:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 01:11:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815375.1229114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhiV-0008RH-Ny; Thu, 10 Oct 2024 01:11:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815375.1229114; Thu, 10 Oct 2024 01: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 1syhiV-0008RA-LO; Thu, 10 Oct 2024 01:11:47 +0000
Received: by outflank-mailman (input) for mailman id 815375;
 Thu, 10 Oct 2024 01: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhiU-0008R4-F6
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 01:11:46 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9c3a2431-86a4-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 03:11:44 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728522696188496.68263030616276;
 Wed, 9 Oct 2024 18:11:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c3a2431-86a4-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728522698; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=dBeBfaDto9GNKdMVScVF9/0DwBi9njvZhyIc+sIMN0OvI7RoErL6uruogln1NNTNl5PhfLkgh7De4PJn6q8hJ3mu8tljMRmTcDDKrIdHzkEqyjYNT5XqXs6YHDq/D193eEMEoqXCalZTu7lNYCjo22loH1kpQyDvYuF4gAzKjUs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728522698; 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=Lg62GVQsE6x2aCxahcVNVYLttwIXT4Edl9jV2NaIpAY=; 
	b=j2rcRz8lpZKhUynOUQM50rPQAe3TyZEd6PQrAfnKS1b6UDNhNMP1osyBQnZe06ZZ+m4sZtdFFcxxtNaVwmN034eXlyEW/tkRbD8hdjXZ9am35kXA1oM8WdUvHg9JSq+8EQSkLZ9NV5Q91w0rpMpVG4v108iwO7/QC83Fw/Rp/Fg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728522698;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=Lg62GVQsE6x2aCxahcVNVYLttwIXT4Edl9jV2NaIpAY=;
	b=X4k6l6cN7fm1uOo8K/3VfYOw9a7PDbD6xVGdpIaH6xY7pI3Lt6U02jgfDCfukuAS
	vM9TP09DARUeQYHGD6NusVO/zA61URzFpL62aFGghPFaqsw38uVcGqEbvhjYXqA5EHa
	lVanajxrRF8+KtSUoqdf0r0YgbfCnnj3fjCstHKo=
Message-ID: <f11c6844-c3f9-413a-b280-0073577de464@apertussolutions.com>
Date: Wed, 9 Oct 2024 21:11:34 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/44] x86/boot: introduce boot module types
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-10-dpsmith@apertussolutions.com>
 <77257ccc-2da9-4b9c-bc91-21357486c206@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <77257ccc-2da9-4b9c-bc91-21357486c206@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:30, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -311,6 +311,10 @@ static struct boot_info __init *multiboot_fill_boot_info(unsigned long mbi_p)
>>       for ( i = 0; i <= bi->nr_modules; i++ )
>>           bi->mods[i].mod = &mods[i];
> 
> This loop, on its last iteration, has done ...
> 
>> +    /* map the last mb module for xen entry */
>> +    bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
>> +    bi->mods[bi->nr_modules].mod = &mods[bi->nr_modules];
> 
> ... this assignment already, hasn't it?

Yep, looks like I missed that the rebase of this commit put the 
assignment back in. Will make sure it's not re-inserted.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 01:16:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 01:16:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815382.1229123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhnP-0001YQ-9D; Thu, 10 Oct 2024 01:16:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815382.1229123; Thu, 10 Oct 2024 01:16: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 1syhnP-0001YJ-6c; Thu, 10 Oct 2024 01:16:51 +0000
Received: by outflank-mailman (input) for mailman id 815382;
 Thu, 10 Oct 2024 01: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhnN-0001VM-TV
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 01:16:49 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 517c7211-86a5-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 03:16:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728523002434758.5908032837583;
 Wed, 9 Oct 2024 18:16:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 517c7211-86a5-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728523004; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=GY84kFPTDga4aBd693P4926mZdf6FpPUxEW+mjYbyCGrttxskc/mM4b35huVhkLYwcFalDzpuyz5HLO/DyRwrZSR+w71mVyq8oOaox9knzHNM7kbm4PuB9Ig40rUxoyL9GaRwROQ8ztuad6arqmXEcTJJ1PrbvmTgmHrUjF3Hgc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728523004; 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=Ju0UhVNKZoMwSk5KZ/O1SjYW87TL5jGlRXVopgZClyI=; 
	b=CFlHzFhyBZhvKeMQ/hwJpcyKu5OEqiu4J0NXS6Ady0RmaFgBcFvoTjhUqKZGVs+ItGq7Nws6WfBg2mWnvQ5HgPQWiI17gcRTh/uExnsTl4qWpukGei4EDddK2BKAs0xvgkOYBktQap+Rg8Y7g0rpxHvOX9AclX+AVuuB6g1WB/w=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728523004;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=Ju0UhVNKZoMwSk5KZ/O1SjYW87TL5jGlRXVopgZClyI=;
	b=u5AU8j81mUN7/y7KSDs/T3maszvtFVcFF/Qzf+6VM9Jq8H6XnLDYNugkIXXp/PV8
	LT8c2jMoI1BvM9s5kplzB9lkHyl6gDDdSgLrpQXakFy/0DgWSHfiqwrIlq6famUdNgi
	Ycit+fb5nhrYONLAdoVnDXGvNy8jeFXlOdeWHcig=
Message-ID: <ad30f610-c22e-4529-aee3-a7fc1b4a082f@apertussolutions.com>
Date: Wed, 9 Oct 2024 21:16:40 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 11/44] x86/boot: split bootstrap_map_addr() out of
 bootstrap_map()
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-12-dpsmith@apertussolutions.com>
 <dbd4898a-38da-47d5-8655-32f96c33575d@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <dbd4898a-38da-47d5-8655-32f96c33575d@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:38, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> From: Andrew Cooper <andrew.cooper3@citrix.com>
>>
>> Using an interface based on addresses directly, not modules.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>>   xen/arch/x86/include/asm/setup.h |  1 +
>>   xen/arch/x86/setup.c             | 19 +++++++++++++------
>>   2 files changed, 14 insertions(+), 6 deletions(-)
>>
>> diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
>> index 3d189521189d..213584b05fb2 100644
>> --- a/xen/arch/x86/include/asm/setup.h
>> +++ b/xen/arch/x86/include/asm/setup.h
>> @@ -36,6 +36,7 @@ extern struct boot_info xen_boot_info;
>>   
>>   unsigned long initial_images_nrpages(nodeid_t node);
>>   void discard_initial_images(void);
>> +void *bootstrap_map_addr(paddr_t start, paddr_t end);
> 
> Nothing is being said about why this function needs a declaration here
> and ...

You are correct, as far as this series is concerned, nothing external 
uses this. Will drop this declaration....

>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -437,24 +437,22 @@ static void __init normalise_cpu_order(void)
>>    * Ensure a given physical memory range is present in the bootstrap mappings.
>>    * Use superpage mappings to ensure that pagetable memory needn't be allocated.
>>    */
>> -void *__init bootstrap_map(const module_t *mod)
>> +void *__init bootstrap_map_addr(paddr_t start, paddr_t end)
> 
> ... isn't instead static here. Bugseng folks have put in quite a bit of
> effort to remove such anomalies (which Misra doesn't like) from the code
> base; I don't think we should introduce new ones. I didn't peek ahead
> further than just the next patch, where the function gains a new use,
> but could still be static, so it's possible I'm simply missing a
> subsequent use from another CU. Yet then the function ought to become
> non-static only there.

...and will make this static.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 01:24:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 01:24:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815388.1229134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syhuQ-00062m-VQ; Thu, 10 Oct 2024 01:24:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815388.1229134; Thu, 10 Oct 2024 01:24: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 1syhuQ-00062f-SV; Thu, 10 Oct 2024 01:24:06 +0000
Received: by outflank-mailman (input) for mailman id 815388;
 Thu, 10 Oct 2024 01:24: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syhuP-000628-7k
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 01:24:05 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 550636e7-86a6-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 03:24:03 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172852343616523.218753719256938;
 Wed, 9 Oct 2024 18:23:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 550636e7-86a6-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728523437; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=S1rLDm5/B/Cp7kb9mVt0r9KR9tV6ulJjX+jX+MT48ik1C56h/1+L5N8EiKZkGKLZ7cV9Dede2U329lwmFAEhlhJe11dLSxvcWo5Wpe/G4ak917D8S2VofN4diIa3ekLaVM/+Visi4p85c4ZdchxDaMHDdvwtxmNhijVuscXBwdI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728523437; 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=QD5ESB/A2wvgvwCwx6DM2684bku+W2dYkqybJ0YQ6So=; 
	b=AdDqIg5wEbEkZmdGNZnxGexISdAxB9asawy/UerQ7h1nYW2IRk83S2GCnilZTlS2sJIk8vftLHDQcD2D0DJO9wJLieFDJULPdDUMiC8j49BoolmR5nB1TSKPX/DTGHcqRAEbhnpzQJx9XiE7RGh5cYszRypzkxQlj7VZJhAx+UA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728523437;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=QD5ESB/A2wvgvwCwx6DM2684bku+W2dYkqybJ0YQ6So=;
	b=UZRrVNV2Ty7qGrb150IrPXFLwyAvvFDZtCyKsIRdJqQFYMAC8CNIhJz3uc5zecCb
	6xKKS+F/Mv3+WyheoAutGietJ7es8KaMziKf1YAOz9SZ/d4OZmefrQixTnT0wLU5OHk
	6FYd7OlYGlWqpFZ5j0M0ASSHTLCxuksflaPWrfNQ=
Message-ID: <7949b6d8-4c5b-4af0-8c92-b56c8210f2e4@apertussolutions.com>
Date: Wed, 9 Oct 2024 21:23:54 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 12/44] x86/boot: add start and size fields to struct
 boot_module
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-13-dpsmith@apertussolutions.com>
 <cd3279a1-6339-43d1-bc5a-977f0e9ba2b9@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <cd3279a1-6339-43d1-bc5a-977f0e9ba2b9@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:39, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> This commit introduces the start and size fields to struct boot_module and adds
>> a corresponding bootstrap mapping function, bootstrap_map_bm.
> 
> Which then is left with no caller. Misra doesn't like unreachable code.

Only until the upcoming commit makes use, but yes these should be 
standalone and thus complaint. I will rework to ensure there is a use of 
the function when it is introduced.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 01:45:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 01:45:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815396.1229144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syiFC-0007iq-Io; Thu, 10 Oct 2024 01:45:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815396.1229144; Thu, 10 Oct 2024 01:45: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 1syiFC-0007ij-Fu; Thu, 10 Oct 2024 01:45:34 +0000
Received: by outflank-mailman (input) for mailman id 815396;
 Thu, 10 Oct 2024 01:45: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syiFB-0007id-5i
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 01:45:33 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 540998c3-86a9-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 03:45:30 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728524721560447.262372994103;
 Wed, 9 Oct 2024 18:45:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 540998c3-86a9-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1728524723; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=gO4//fjoGCFoNFCayZSF/Lv149ErSuHK9E/hrLzPSlSr0X6TOoXn1KfHyWdhainIVwDfdQxun0wQpptOLJOdyfSvHBBXTDlUtO2JAdFRtLhEnX7mczfhhJoGKc30JfCIae/BE+3zpvRa1J/7utiePTSF4bopjsoMKkHzJmqhELQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728524723; 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=kEY0/JxYBl9rMBwu2TjcMrKBBW8DfWr1jIIDxjRnGJM=; 
	b=HYC4zRMQsq1EdnnxzRgvROqx+P2MFIcnwENbeYdpVUakREilAavmT70dxkpZAIpWaXvW7+jKuN6B5MlS1Tdh2+K/FbCBm7yyTDackY+xHe2q55KQe1lPntaQMxj48gG0HeI1FeP1nMZyHD/l8Vs7s6S7nlE2/YVENy/7Pt7ramI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728524723;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=kEY0/JxYBl9rMBwu2TjcMrKBBW8DfWr1jIIDxjRnGJM=;
	b=pPH+rQpmZrgpV7Jpt68l+qR38SLp4hcYni66mrrwR+hPVCTpsl+JZbJ8NX0OPCY+
	bp/SjZco5qVa8DvWQxIZNxWuPfZIOrofriy2IjDI1O3QFk7mPNi0HnaxfNHNa2726Cf
	4SH6iv1XMicHX9np2njKLkFB8bkkRAPKtBegUnfw=
Message-ID: <268606a9-4d78-4389-9f52-8aebc2f72573@apertussolutions.com>
Date: Wed, 9 Oct 2024 21:45:19 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 15/44] x86/boot: introduce boot module interator
To: Jan Beulich <jbeulich@suse.com>
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-16-dpsmith@apertussolutions.com>
 <f4657c52-ac03-47cc-8182-91f210daad24@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <f4657c52-ac03-47cc-8182-91f210daad24@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/9/24 11:53, Jan Beulich wrote:
> On 06.10.2024 23:49, Daniel P. Smith wrote:
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -54,8 +54,24 @@ struct boot_info {
>>       struct boot_module mods[MAX_NR_BOOTMODS + 1];
>>   };
>>   
>> -#endif /* __XEN_X86_BOOTINFO_H__ */
>> +static inline int __init next_boot_module_index(
>> +    const struct boot_info *bi, enum bootmod_type t, int offset)
> 
> Instead of "offset" maybe better "start" or "from"? Further, plain int
> (as also used ...

Will change to start.

>> +{
>> +    int i;
> 
> ... here) isn't really liked for ...
> 
>> +    for ( i = offset; i < bi->nr_modules; i++ )
>> +    {
>> +        if ( bi->mods[i].type == t )
> 
> ... array indexing. Perhaps the function itself would better have
> unsigned int return type as well, ...
> 
>> +            return i;
>> +    }
>> +
>> +    return -1;
> 
> ... using UINT_MAX or some other suitable constant here instead?

I was initially going to disagree as returning a value less than zero is 
much more natural/reasonable than UINIT_MAX. But then thinking about it,
another natural value to reflect an error/not found is a value larger 
than MAX_NR_BOOTMODS.

Will switch to unsigned and add code comment that larger than 
MAX_NR_BOOTMODS is error/not found condition.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 03:19:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 03:19:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815404.1229154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syjiF-0003Fm-4I; Thu, 10 Oct 2024 03:19:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815404.1229154; Thu, 10 Oct 2024 03:19: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 1syjiF-0003Ff-0w; Thu, 10 Oct 2024 03:19:39 +0000
Received: by outflank-mailman (input) for mailman id 815404;
 Thu, 10 Oct 2024 03:19: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syjiC-0003DE-UT
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 03:19:36 +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 7886bd79-86b6-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 05:19:34 +0200 (CEST)
Received: by mail-oi1-x234.google.com with SMTP id
 5614622812f47-3e3e6d83138so308504b6e.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 20:19:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7886bd79-86b6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728530373; x=1729135173; 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=6owvSIVu0EHqNm1yYzc7T8GlTeeFySz1jPIyk4PefAk=;
        b=dViPvp4dMBb9bARP1tKYE2FxqvhAeYpdnyYIinPGFZtKVcjkq1A8A/owA6CK9lrYI7
         vIAiVF4lFFrSz8QWl2pVDzlL0l4cPxUHj0f0bv2UAhzLdBwRdFC1CzP/J196EATT4oI2
         r/n2g0pIrCRBGBHmAWRVFd0onXT7hI6Dw26Zg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728530373; x=1729135173;
        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=6owvSIVu0EHqNm1yYzc7T8GlTeeFySz1jPIyk4PefAk=;
        b=BIsipX+8OD5rmJPDALH5Qklvmyc3GBFQhlOjoxoG95JE14wDnoxxNIhewdvL3KuBMu
         VCF+a7HNcqqDnSs6FscXbVWx/KasuEWvwBkHdvS3VMdqeF/tVNy3AfxuuZ5EQh2fIYVn
         RG+H4MjI7+nMRrpve1av+Q2qERLMFvv29FlxJa0O4UPn8M80ubK2zbhhHINFxQLCOE0E
         1udyQEirca/cF5ghB4MoHmy5cPtSr2J+tqpwpuLc6ya8Q+h9tosargldlKu5su6dxb/w
         mgYlJKQCMqRRqEHtQJyAXoWrwdS5zupC4sm0o8CMkFlRfS5MEWLP5SpiLs6GsmrI3wO6
         6Eow==
X-Gm-Message-State: AOJu0Yxxce7Qa3kgklYgwlJCkBbFoAak+PmPbQ5pvXJxFT6m9QqPB1wW
	jDmkIH2kTd2CBOc500j/gF/N8L9G0wwc0g/FjGFMHYBQjOEMttNfCD/LrZvnXqto2bqOkUDHBOv
	9cjebYqMTlow6vLGQZVUVmuwecsKB/wMuQ8rd/A==
X-Google-Smtp-Source: AGHT+IGK2g99VinlpXuFk+7xG5Aeig7+Zj/nrgnePEnjP+3phgIn4+HdC2oVl0w/iw41hiQTL0JBYAJRilVW1zZioWQ=
X-Received: by 2002:a05:6870:e3d2:b0:260:f883:95f9 with SMTP id
 586e51a60fabf-2883450c741mr3347240fac.42.1728530372966; Wed, 09 Oct 2024
 20:19:32 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1728471268.git.andrii.sultanov@cloud.com> <c9b47337615168e38fb6af2a80409f0a38ead901.1728471268.git.andrii.sultanov@cloud.com>
In-Reply-To: <c9b47337615168e38fb6af2a80409f0a38ead901.1728471268.git.andrii.sultanov@cloud.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 10 Oct 2024 04:19:21 +0100
Message-ID: <CACHz=Zi82QfM0CBt+OVK3zDO_qYSUTKzGpy8NZWxXJX_EL+bLQ@mail.gmail.com>
Subject: Re: [PATCH v1 1/1] ocaml/libs: Remove xsd_glue_dev package, also
 install plugin_interface_v1.a
To: Andrii Sultanov <andrii.sultanov@cloud.com>
Cc: xen-devel@lists.xenproject.org, 
	Christian Lindig <christian.lindig@citrix.com>, Edwin Torok <edwin.torok@cloud.com>, 
	David Scott <dave@recoil.org>, Anthony PERARD <anthony.perard@vates.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 9, 2024 at 4:15=E2=80=AFPM Andrii Sultanov
<andrii.sultanov@cloud.com> wrote:
>
> xsd_glue_dev packaging is inconsistent with the rest of OCaml packages
> and isn't actually necessary. .a is needed alongside compiled bytecode

Being singular, should not be "The <NAME>.a is needed "... ?
Or are there multiple archive files?

> files during linking and was missed in the initial oxenstore plugin
> work.
>
> Specify OCAMLCFLAGS along with OCAMLOPTFLAGS.
>
> Signed-off-by: Andrii Sultanov <andrii.sultanov@cloud.com>
> ---
>  tools/ocaml/libs/xsd_glue/Makefile | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/tools/ocaml/libs/xsd_glue/Makefile b/tools/ocaml/libs/xsd_gl=
ue/Makefile
> index f84291f7fe..be68642968 100644
> --- a/tools/ocaml/libs/xsd_glue/Makefile
> +++ b/tools/ocaml/libs/xsd_glue/Makefile
> @@ -5,6 +5,7 @@ include $(OCAML_TOPLEVEL)/common.make
>  SUBDIRS=3D domain_getinfo_plugin_v1
>
>  CFLAGS +=3D $(CFLAGS_xeninclude)
> +OCAMLCFLAGS +=3D -opaque
>  OCAMLOPTFLAGS +=3D -opaque
>
>  OBJS =3D plugin_interface_v1
> @@ -28,14 +29,11 @@ OCAML_NOC_LIBRARY =3D plugin_interface_v1
>  install: $(LIBS) META subdirs-install
>         mkdir -p $(OCAMLDESTDIR)
>         $(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue
> -       $(OCAMLFIND) install -destdir $(OCAMLDESTDIR) -ldconf ignore xsd_=
glue META $(INTF) $(LIBS)
> -       $(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue_dev
> -       $(OCAMLFIND) install -destdir $(OCAMLDESTDIR) -ldconf ignore xsd_=
glue_dev META $(INTF) $(LIBS) *.ml *.mli
> +       $(OCAMLFIND) install -destdir $(OCAMLDESTDIR) -ldconf ignore xsd_=
glue META $(INTF) $(LIBS) *.a
>
>  .PHONY: uninstall
>  uninstall: subdirs-uninstall
>         $(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue
> -       $(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xsd_glue_dev
>
>  .PHONY: clean
>  clean: subdirs-clean

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 05:30:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 05:30:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815131.1229164 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sylku-0004n8-By; Thu, 10 Oct 2024 05:30:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815131.1229164; Thu, 10 Oct 2024 05:30: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 1sylku-0004n1-9O; Thu, 10 Oct 2024 05:30:32 +0000
Received: by outflank-mailman (input) for mailman id 815131;
 Wed, 09 Oct 2024 19:41: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=TFTV=RF=gmail.com=philipp.g.hortmann@srs-se1.protection.inumbo.net>)
 id 1sycYv-0001gg-W9
 for xen-devel@lists.xenproject.org; Wed, 09 Oct 2024 19:41:34 +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 7c2e0b90-8676-11ef-99a2-01e77a169b0f;
 Wed, 09 Oct 2024 21:41:32 +0200 (CEST)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-5398e53ca28so118184e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 12:41:32 -0700 (PDT)
Received: from [192.168.2.105] (p54a0712c.dip0.t-ipconnect.de. [84.160.113.44])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430ccf5f3adsm28720915e9.22.2024.10.09.12.41.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 12:41:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c2e0b90-8676-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728502891; x=1729107691; 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=Io1G2uneGwHsYKAwtaIvvynFX0xlOmokHD97rmisdy0=;
        b=l1NfiOcIRcLmrbPsOsJSfNYfK/FgcsRj9atb7fS6UgvSdCQXVfCkRHMlh3tIR6EIFs
         UVYqeJHLVQdJoTG1bxLy0QA2eZtdWSwAJtVyOGFaQSImkREu4Fk+0xfMdirnFUEKCZJM
         6iz/yz+0vrCgocgbYfMKWzvHN5sywWCcFH72a6m/75ht3+uhcf8aJjoxDX0Ytsj/1qfC
         a88NuSgwwWttJqStjs7J/t5M5ta9l7wUjzDxnIlIFEoB1h5IWtikTlWuaf/F2SjGwxhY
         RsnwfwteP1DegD5Noi9pFow9oZQwvGthKlpOGjcjKWroXthaphktZDr800FQdyz/MNhB
         SN8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728502891; x=1729107691;
        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=Io1G2uneGwHsYKAwtaIvvynFX0xlOmokHD97rmisdy0=;
        b=Umpmy/BEGOuQ+r5YEnQWUdWwzjtJfFFH8ta4mUhjAGifuqt+l0NnPc4Zwt64hPjYg1
         +gUQLsXAePdi1fADLipw57Ab8bp2oV2DNyKQoX6uC8geuoSVLBGP8iVGGo7SB6HecUYj
         RdtXJczcpo+cSruMTu4jv4QS+FrWi22PkkHWhmHJDYaw1gs8ZfmnQqWF2bNqc8YAkJG6
         NBvVcTy/NHcEji9oMDMOFktwfHDfC6tHOdoyJ4S71rF3rBmws/62t0RSAnlFmf6AtHCx
         kUR6Up3AX1GC4oSpiPYIUNn8i6mQ30CnbNY/a7mviEuHj5osaOgLce7EcpSX8ERNnzPc
         NJzA==
X-Forwarded-Encrypted: i=1; AJvYcCWuQjtk7WKuO+LfC3ISqEb0kPdKSgHh6QVQkqI84PV9Taf3aEdGNL2FJ+lIpZFS7i7oQFoEvEz9OCQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwUrFV2rA2NIEV2/64jRqNkU+8OYzdxH8Z7B9kFJ8aSNEQbGnuu
	hwvZV9HI7xdCiV/jObVNLfWpj0UL/+Mr5jE7EL1nuN5bEFyGR6S4
X-Google-Smtp-Source: AGHT+IEJ7Hh7KYSEFQ7TnvOgBW+KHHTbn0YpY2aq9eVXupaQTxUm7Wi9eOrRO7yFgrSR7VO5SquDug==
X-Received: by 2002:a05:6512:224b:b0:539:921a:44af with SMTP id 2adb3069b0e04-539c4967bbemr2532382e87.48.1728502891046;
        Wed, 09 Oct 2024 12:41:31 -0700 (PDT)
Message-ID: <411f3c94-58b5-471e-bc58-e23d89d2078f@gmail.com>
Date: Wed, 9 Oct 2024 21:41:25 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 10/13] staging: rts5280: Use always-managed version of
 pci_intx()
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>,
 Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>,
 Paolo Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>, Juergen Gross
 <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-11-pstanner@redhat.com>
 <2024100936-brunette-flannels-0d82@gregkh>
Content-Language: en-US
From: Philipp Hortmann <philipp.g.hortmann@gmail.com>
In-Reply-To: <2024100936-brunette-flannels-0d82@gregkh>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 10/9/24 11:38, Greg Kroah-Hartman wrote:
> On Wed, Oct 09, 2024 at 10:35:16AM +0200, Philipp Stanner wrote:
>> pci_intx() is a hybrid function which can sometimes be managed through
>> devres. To remove this hybrid nature from pci_intx(), it is necessary to
>> port users to either an always-managed or a never-managed version.
>>
>> rts5208 enables its PCI-Device with pcim_enable_device(). Thus, it needs the
>> always-managed version.
>>
>> Replace pci_intx() with pcim_intx().
>>
>> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
>> ---
>>   drivers/staging/rts5208/rtsx.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> 

Hi Philipp,

this driver (rts5208) will be removed soon - patch is send in.

Discussion about removal:
https://lore.kernel.org/linux-staging/2024100943-shank-washed-a765@gregkh/T/#t

Thanks for your support.

Bye Philipp



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 05:30:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 05:30:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815413.1229171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sylku-0004p7-Nh; Thu, 10 Oct 2024 05:30:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815413.1229171; Thu, 10 Oct 2024 05:30: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 1sylku-0004oc-FS; Thu, 10 Oct 2024 05:30:32 +0000
Received: by outflank-mailman (input) for mailman id 815413;
 Thu, 10 Oct 2024 04:37: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=fLQ4=RG=amd.com=Shyam-sundar.S-k@srs-se1.protection.inumbo.net>)
 id 1sykvu-0001O5-7j
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 04:37:50 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20610.outbound.protection.outlook.com
 [2a01:111:f403:2416::610])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 65d37916-86c1-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 06:37:48 +0200 (CEST)
Received: from BL1PR12MB5176.namprd12.prod.outlook.com (2603:10b6:208:311::19)
 by CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 04:37:43 +0000
Received: from BL1PR12MB5176.namprd12.prod.outlook.com
 ([fe80::ed5b:dd2f:995a:bcf4]) by BL1PR12MB5176.namprd12.prod.outlook.com
 ([fe80::ed5b:dd2f:995a:bcf4%4]) with mapi id 15.20.8048.017; Thu, 10 Oct 2024
 04:37: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: 65d37916-86c1-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=wt+sTFgdvI5tvSL6o83xiWXZhdM/CyiYwDHlczpxwJJUsSM9FISfc2vQQBdDrc1NTv+aS5mYmwiFmaw+d6KqUmMGWdsd1TRHtJ2hne+czfIulzKUHN7c1LydjT0jvx9dpYymNpvS2Zl3/nXDNquQZ4R3m4so8qSgPjLAoJrEVEZ0M2NK/NzSKR1JEkWWhHurHnRIfo9NTxuTDxu5e5R+Mk4xwaFypSaECXLiLvwRVVUJia0AbZziTtj4LKh14U9iL9BndDewpkHeKOLaeGb3SeIAGnNrmyB2ZLKi75qW8n/lbS0TPdWurdD0MXqkR8x2FptN5NEfsL57SlLU7sJZUw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Klvl+0k+IcZY28S/d1xTQ0dsUop0L+0uOzjkH7sZpdg=;
 b=JPGiWNAIVU52g+9AVEZKlSxjHV5OA0eMgJrvTM2s3WlhGeKt6TMyAMz/p4lEAhs+YO4J8bG6dbEwF9DnwnhxwuHUtcuEKZHzv3yW+NuDO8Vuz9TOnR8ko54RwiM3HmORjbfxbL6j05magh/TC5P4KoYyYsMLyuPxlhQk3JzIBEX5grE9Fm+VtgQzopQJ8E2MokWUliRiH77u3s4lkI6Jh0qGyoOWgrrYmObKwDAijhQK3K/Hu+Q95Qm/8aWrgdxMwIiNaBc+0MbF4WDarFzce6JGMSJTulvnhZH4Mq3ismnwd33/9cd+tvC+RrNiMG2mzGiWSDty/Tc6hSSfsTG3zg==
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=Klvl+0k+IcZY28S/d1xTQ0dsUop0L+0uOzjkH7sZpdg=;
 b=therNLnnQJoWAWU3GwEq8PHji3denVcw3rzffbsga/UXhBfUvNFvZ1Oa0mHWPjBZ560aecw057udqs6U8SezIGobiu+4l8SU4USBoN/J5Veg8gBVzgrJtaCdmXcp43is72mymh0oUgBlfdvh+rx0dUoqBEMKeGhH1t8eNZ3ASt4=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <79ba9c9b-984d-41c7-be01-c6a8e7f7ebd2@amd.com>
Date: Thu, 10 Oct 2024 10:07:18 +0530
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 05/13] net/ntb: Use never-managed version of
 pci_intx()
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>, Juergen Gross
 <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-6-pstanner@redhat.com>
Content-Language: en-US
From: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
In-Reply-To: <20241009083519.10088-6-pstanner@redhat.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PN3PR01CA0006.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:c01:95::10) To BL1PR12MB5176.namprd12.prod.outlook.com
 (2603:10b6:208:311::19)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL1PR12MB5176:EE_|CY8PR12MB8300:EE_
X-MS-Office365-Filtering-Correlation-Id: 0c1b8c51-260f-4a03-6870-08dce8e54718
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|7416014|376014|921020;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?S2xHMWc1WlVvbTVwWGt0QzVLY056QjVBSUpVZWV4WERRRHBoTlJLN3BIQ2xI?=
 =?utf-8?B?bXFlbnJsd2F5ekxBVnk4bUg5cWZ4T25KY1owQzgwcEZRN1J4dit1bDIwRnN1?=
 =?utf-8?B?SWtRL2VCTCtoRGw1RUwzbEpKRW93SDlzdnhsMktoMkZQQ2xIUjE1UGpuNjkw?=
 =?utf-8?B?cXlmeVJUNVpyai9UaHRpOU1IOWc4b0tNeXc5NVJRRWxxRjlXNlpjOEw3RjBP?=
 =?utf-8?B?azNZMi9xREs1UmFLc3NRRERFbVVGMWFEckNyd1JxampSLzNoM1hTem8wWTlW?=
 =?utf-8?B?UTJvMmdTTWI2eGVlOFhWRm5qSHd3dWdhN0MreXRrQnlLTHpwaDVKYWRMSlJk?=
 =?utf-8?B?L3NNQmQzUkovVDk0RURsYWNaNGpiaUZvV0JuWTdhTTFmMWRRZWxma0JRbzVX?=
 =?utf-8?B?amlVSi9malo2SVI0UlBDOXIrNnA4RE1Ta3lrbUhoLzVVK3VzNXVWM05sdGhp?=
 =?utf-8?B?Z0F5eG5uZ0xtcWNQZDI3eGUxUjlTQmZMT0dYaDRObERSWHpNajU1SWVRTHp2?=
 =?utf-8?B?MWU0OVFiaGsyRFowUGNzcWdHZS9ia09NSUhPcnhLeHV0ZlhFeWNyd3VkZ295?=
 =?utf-8?B?Wm50RGt6aVhtcGxTa1RVbEJmWUZlVXdvU0p5d3pMYnhvL0dSZER5U1gvWGpa?=
 =?utf-8?B?eEE5MTBQVHV6MTZzZGJlOXllQVg0QlBITlBLcG9IRXNZMXVxZlZkR1BkSkc2?=
 =?utf-8?B?UzBIclA1d0dNVklZaXg5WmxMVWYvaGMwMGlUOTJTZXBGZnRRbFNoaTdJeG9n?=
 =?utf-8?B?WVg4RFp2RW1WeWtTdVh5ekJNVGJ2MmlOVXM4UEl6R1hEc2ttS1M3dUliNUFR?=
 =?utf-8?B?TyttNDJSemFxL3dOMlp2Q3Q1ZXUwRUdXWHdnak8yQ1dKaVlURzBGNW5iR1FG?=
 =?utf-8?B?MGlTaEtSdFl0VTROUFhuNmxOS1dHcGFpVWFtNkRHQUZBZU0vUUxEc3g3eVFU?=
 =?utf-8?B?YTUvZkFGSTBPc0JkaHlFUmpCVjlIRGs1Nk1TbTVITzRwTjlRd3lvdlBLRDR3?=
 =?utf-8?B?bEFqOXFaMDg2enIxUGlwVTF3bVBkOW1lN0pQWElBSDBaZjZpdTlKYjc2OEVp?=
 =?utf-8?B?RkQra3hzZy9ucmh5WFZMRkRtY21mYzRra0RYaThHT2dsUkc0aEhJbmJkc1hB?=
 =?utf-8?B?Z0hMQ3lFZnF1WUpVaG00WjZWUk9vNC9iQ1FldlZKWDluK0xuZ0hYY3psRVZK?=
 =?utf-8?B?TkJOeFBhdmg0cllMWDBGUVpaKzF4bXpUVWVseU1BeFVlWWtQaDRzUlFtZU04?=
 =?utf-8?B?RVdXUVEzUGpRWGR6WlpSQmUxWVRlRm1HQU1FQTEySUFJa21FQm9aWTJXN1Bz?=
 =?utf-8?B?WGg2cmd2UmFYTzdlbG5oekhibkttR1NEbStnT2pEMDhWSlEyMkVjY3hXUUdN?=
 =?utf-8?B?ZUVRaXdtYjhsL1lGRi9xdDZXaVBMRy91b1lBVkRIWHBGSzNnN1J6WHRUYjY4?=
 =?utf-8?B?WXpVSXBGT0g4R1lVMFkvdS93K0NoQzJOVGp5Y1Vxdkx5SndscEwzM0hNY2FF?=
 =?utf-8?B?VWtrR2JKcHlXWHpXSS8rd1IvK1IzVEtCM1dHcHBPVGpjWUI5ZGtOTStBTGhv?=
 =?utf-8?B?Q2lJS2hTblFnNWwyUHZ2aGNTTU9Ram5wTHhDazhZeFovaFJQNzY1WDFWNllj?=
 =?utf-8?B?VklpaERqa1B4VTR0QkM3N3lPUUlkWEozUVVHRkxPUk5vd1BnMGpEVWUxNEdq?=
 =?utf-8?B?WWRZYnJmSjBaY2x4THNDcDFDNkY1VE5rTTBZSmNVU1lJVFBVbTkxc1FMbmIy?=
 =?utf-8?Q?fQxbUSn8voWg9m72DR7CD+eGOfL+bKZKv4gl32N?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5176.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?dG9hUkhsZHBuK2JnNEFHa3V2VFdaVWw1Unh1cXVwWExaRkEvVWhUL01Wbk5y?=
 =?utf-8?B?UjJ3bDliaXpuckw2aTNla2ZuV0U2eFNyM2h5Wk1Pa0E4eEFpVnhwekpaaU5K?=
 =?utf-8?B?MCtZWEMxaFdKSXdWbEEwWWZyUzJrTVRiUFRTUVNZL095TWZDRTVHVzhCNG1J?=
 =?utf-8?B?YkpNc2xMTUYwcTJnRENZaVJvMHdoTGVSbDNUek1YeGJKaHdtNWpqL0tFb0hz?=
 =?utf-8?B?ZG9hdW5KRUxZek11UkxxMWV5MXpnZXY2UGQyVkdRU1l1WG9mNDlHVmlmL2c3?=
 =?utf-8?B?dTErS05kckpkQkxBM2oyakJtQmpaemFlaGxtM3BZMExraGFVcW4xdVBoNE9I?=
 =?utf-8?B?NFZRcjh2NllaUHZTS2J2NWpEUDd5aE9Xb0hwbnpsUGR2N3haOGRKc2t6allK?=
 =?utf-8?B?NDcxN2R2TWt5RUcwWng4SVF6U1JHZ01MVHhTQjVIZ0F6YVNhQzNTSHJEN3U1?=
 =?utf-8?B?Zm05ZTI3ZHVUYnRDNmxteVN3S1ZhTk9JZE5PZXJZblBVMXhhUGNSWm1SUkxW?=
 =?utf-8?B?dnhZdkZEQ3BGTE5tdnZkck9pdTgwcmdYQ0FaWHVGVTN0YVYyamEwd0JiUzhZ?=
 =?utf-8?B?V0xqVXNublJ0QmVHZ0FSM3JNbTlpYjJnTVc5QTFrY3BvWjE5dXZveWlzaUZv?=
 =?utf-8?B?SU5uY0JVd0JjQzdCeU9IdUIwRFNtV0pUaGxreEVEQVZrVnBiczIyV3ExQ0tE?=
 =?utf-8?B?OUhwaXpNOERSenBTTEEvK0FJVnQ2bWsyTmJtKzFOeWp6a3pBenMvTmVJdXpm?=
 =?utf-8?B?MWZseTY5YUhkMmdaTGNKQU1CbGdLejRVYjhQWm45Sm1IbGpVaGtGUXVvTXZD?=
 =?utf-8?B?eDF4TjBPQzFMRXo4U2dpcjQrTnlYc1h2RTA4VHFPc1pLSExoTExTczg0RTM5?=
 =?utf-8?B?a2pBSG45V3VmS0hIWGM4TEpHSjdyemVFcnVPUjVqcm5TSGRQSDdXNzFZZ09w?=
 =?utf-8?B?Q0xZemtUaTRwSzZheUY0N0tQZ2I0R1NWWEl6TUQ4bXhNVWdtbGUwck84czdB?=
 =?utf-8?B?QU1zcm5QZVcycDh2azJBdU1BK3RoVFF2Z1RIUnRaY1VKT08ram9SWEY2TitN?=
 =?utf-8?B?MDJaKy90YURzd1RHd1Q5ZkQzaTBKVTVnZ2JLYXpKOXBXeDRqV1pqNG1LN09p?=
 =?utf-8?B?OVllMnpBYzJTU01qZU0zd28yY21sckJXWXJPdVBwRDdCclV1dkhwQkpMWmtj?=
 =?utf-8?B?aFdrNWlkS1FDL1RyTVMzdnFpc0hoaTJTbWNmdllXaGJxVU4xYXVCTXFWYWZC?=
 =?utf-8?B?Und0R1g3MFpDb01OMEhTNVpsRldlQk9CS2Y0aW1BT3lzeG85c2ZyamcwVTQy?=
 =?utf-8?B?SWtPdTExSlBLVGdueitCYWVSZzlxWWlSdXFONDNZRm8rNTVmYS9EUDFXaXpX?=
 =?utf-8?B?bFU4NHRRNFpnZWc5R1o5ZkE3T28zR3ZOVFI5ZWZXREdpUkZCbW4yblNKWmEr?=
 =?utf-8?B?Z29zUWZJYTZmYytHbmF2U2dpV3ltNkYramlKeGNWbGtsNEVzUlJ4R3p6cDQ3?=
 =?utf-8?B?UG9PNWpqeFhTTk1KNVQ3NHg1MS9KYzFQTVNJem5qbWhCMlk2QXNtb3RFUkJH?=
 =?utf-8?B?TzRoUnhiVVloRElVTENEK3RYVjRXYVRDYnZBaG04SGlmWDZuMXlmTmU0S2pP?=
 =?utf-8?B?d2NnUDVuY2QxS2VqMUg3WWVSb292UVFueVlwTGMrVlAvdEdUZlJ1YmI2aTZE?=
 =?utf-8?B?Y05nZVhzaDZmZWRFMmdtc0FKVHFIS3dUSTB5eTRtdTBTdkFlenIvT0lGN3Qw?=
 =?utf-8?B?OTQvVHhlTjlXMnRnamFzZmdvV0hDbFNsQkJFTFZlRmpwMmdRVUxPQy9ESVZm?=
 =?utf-8?B?czF6ZXFDN3JmY0lIemlmY3A3NXRrZHpIUW9qNnB3QnFramNhM3JpLy9SVy9G?=
 =?utf-8?B?QmUrVXFtUzR2MDNTOVVFTDFYNitqcjRkcnZ5bUlDT3FZei9xdjBvRHVCSENT?=
 =?utf-8?B?OGMxaDFWRm9xY3NBYkk5aGFLNGpJbS9mSWtpbTF6RlFOci84ajV1cEJ5ZmpD?=
 =?utf-8?B?NWVyZ3JtcUlwQytvYjcrTnlJYmJJWElGS0JacTI0RVl2dGcwVDZkOFA4VnQy?=
 =?utf-8?B?NVlDY3dpOE9zc1Bmdkxnd3pMZ1VLWkhxRFRwdDlwOUh2by9NamVERWswbWxn?=
 =?utf-8?Q?aNz1Ck4pRRLj+rsSsnFZlgFFQ?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 0c1b8c51-260f-4a03-6870-08dce8e54718
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5176.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 04:37:42.2623
 (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: m0qLPNHieptuXDE6QrWF4k80opazgWD0GToi3pf7VL4bTVZyBi0AGjqiZRu4iTS4nLBvzm+aG7oGgdARyHAgXA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8300



On 10/9/2024 14:05, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> hw/amd and how/intel enable their PCI-Device with pci_enable_device().
> Thus, they need the never-managed version.
> 
> Replace pci_intx() with pci_intx_unmanaged().
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>

Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> #for ntb_hw_amd.c

> ---
>  drivers/ntb/hw/amd/ntb_hw_amd.c    | 4 ++--
>  drivers/ntb/hw/intel/ntb_hw_gen1.c | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
> index d687e8c2cc78..b146f170e839 100644
> --- a/drivers/ntb/hw/amd/ntb_hw_amd.c
> +++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
> @@ -791,7 +791,7 @@ static int ndev_init_isr(struct amd_ntb_dev *ndev,
>  err_msi_enable:
>  
>  	/* Try to set up intx irq */
> -	pci_intx(pdev, 1);
> +	pci_intx_unmanaged(pdev, 1);
>  
>  	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
>  			 "ndev_irq_isr", ndev);
> @@ -831,7 +831,7 @@ static void ndev_deinit_isr(struct amd_ntb_dev *ndev)
>  		if (pci_dev_msi_enabled(pdev))
>  			pci_disable_msi(pdev);
>  		else
> -			pci_intx(pdev, 0);
> +			pci_intx_unmanaged(pdev, 0);
>  	}
>  }
>  
> diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c
> index 079b8cd79785..9ad9d7fe227e 100644
> --- a/drivers/ntb/hw/intel/ntb_hw_gen1.c
> +++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c
> @@ -445,7 +445,7 @@ int ndev_init_isr(struct intel_ntb_dev *ndev,
>  
>  	/* Try to set up intx irq */
>  
> -	pci_intx(pdev, 1);
> +	pci_intx_unmanaged(pdev, 1);
>  
>  	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
>  			 "ndev_irq_isr", ndev);


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 05:30:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 05:30:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815415.1229176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sylku-0004xR-Um; Thu, 10 Oct 2024 05:30:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815415.1229176; Thu, 10 Oct 2024 05:30: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 1sylku-0004wO-QV; Thu, 10 Oct 2024 05:30:32 +0000
Received: by outflank-mailman (input) for mailman id 815415;
 Thu, 10 Oct 2024 04:43: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=fLQ4=RG=amd.com=Shyam-sundar.S-k@srs-se1.protection.inumbo.net>)
 id 1syl1F-00056k-K1
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 04:43:21 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2415::61b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1f847dff-86c2-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 06:42:59 +0200 (CEST)
Received: from BL1PR12MB5176.namprd12.prod.outlook.com (2603:10b6:208:311::19)
 by CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 04:42:55 +0000
Received: from BL1PR12MB5176.namprd12.prod.outlook.com
 ([fe80::ed5b:dd2f:995a:bcf4]) by BL1PR12MB5176.namprd12.prod.outlook.com
 ([fe80::ed5b:dd2f:995a:bcf4%4]) with mapi id 15.20.8048.017; Thu, 10 Oct 2024
 04:42: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: 1f847dff-86c2-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=LM2RQTywtsDvhV+D7HUhGtmhYRzc8D1v7tTf7FzjzwBQViyBFkhwAGit4zugaHZ6WqDS5+DI9/XQQDpdtIsZYTz1BUQXd2sXt7jjsySpsaurNCHwmgXqvLtQWGy6hoKE2lxIAB2UUa2jgN8iP/SaD+69FTHIiPvraaiTBVQ7H7/3xeDClXKIz8qeHwvioiwjya0VAbs5AOPJibBDAf8FZpa8R9yM1lnEr/xQrOlZ92fUOGdQorn5shSGFW3gnw8FJDKlzMIGcEwz19Zc/Guy/lR/F66SISYRoGdTjuuCPbP5n0YbDZksrN0bQPWDsRzFUr4tzmSyg1c1qryaNHkuWw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Klvl+0k+IcZY28S/d1xTQ0dsUop0L+0uOzjkH7sZpdg=;
 b=vX7awtTupLUr/F/VVJsANxdlBNuuS/E5oKdp7xBtjbDfF5WLqPhOwEvc34Lm5AAf7BGLarEMOKJrXTuxludph8OX+YAkRyPDNHfGwN2bQzS5IdfVF4ElfJQW0n+0x/Vse7JJ72V4gi86lHbgcemJ6HQkdoc6TLw4sGZ2Khi5dcxj92FR2DeVlJfGbsHvEpx/w690H3+HTrrS8pmVG0w65vAYCsiX8g9kY27eSVpP83CHigrZtH8JZePucXZJwuKPtBNxXPW0hYr8Urq8oKW8RIOeRju/C9pP66qmvxNH/LrOjBy8JWa6F0110zOJEPmrw/yWlJu1rWrvrPiOIEdIVw==
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=Klvl+0k+IcZY28S/d1xTQ0dsUop0L+0uOzjkH7sZpdg=;
 b=Gg1fFpsdZxlj5mQe+zmxmJOlNSGcblhtvU1V4/kBdsFu74muSNBX/QP70z60M8Ay0WEooAo0kKBcarTCHIAqEoKVWhVfJhSl9jswaTpU7i4k4GrfH0b78BiubDWJ0z3y0mSfkNw3OJVAhYp57o8AOekfn3QlVycdE0Zq4AwO4QQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <c6473440-7369-4333-8263-1f5ddc6d736d@amd.com>
Date: Thu, 10 Oct 2024 10:12:34 +0530
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 05/13] net/ntb: Use never-managed version of
 pci_intx()
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>, Jiri Kosina <jikos@kernel.org>,
 Benjamin Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
 Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>, Juergen Gross
 <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
 Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
 Kevin Tian <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-6-pstanner@redhat.com>
Content-Language: en-US
From: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
In-Reply-To: <20241009083519.10088-6-pstanner@redhat.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PN2PR01CA0182.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:c01:e8::6) To BL1PR12MB5176.namprd12.prod.outlook.com
 (2603:10b6:208:311::19)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL1PR12MB5176:EE_|CY8PR12MB8300:EE_
X-MS-Office365-Filtering-Correlation-Id: 56b14fd6-a590-4721-4187-08dce8e601b2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|366016|7416014|376014|921020;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZXVNcStjdUNzWlBrNTF5T0dJUlVZZWJuMzZCUC9TWCszU1FmWTFNaUMwS3NU?=
 =?utf-8?B?VS9RZGdZK0lhVlNkSEhXenZNbXB5Z1BVMzRmTGE0dWhuaVZuajhIS0FPU0hR?=
 =?utf-8?B?TlFzNXVuNStzamxGUG1ETlBIYWNIM2ZCREFUWCtVL0pBc3FYVnF3SjNJNElD?=
 =?utf-8?B?Wld4U2IzQWw0Zi9HUk5oalRrKzhuVTFqT2ZZcTBXanJuZFJYK2NPeVBjUS8v?=
 =?utf-8?B?MTNucTgvK0k4azY1Y2tMMklSOW1FNWR5SnFIR2g4a2swQjBzeFNQTkg3Ym9s?=
 =?utf-8?B?K3lIMVFUbENwc0pOcFlqdXNkRTZUcnErbS9WVzFtN29USGJWRDRxaFQ0eWVG?=
 =?utf-8?B?WTZJdEVrQXFOZmU1UHIxWDVsWGVZancvZ1NaZWJZY2JpOC9wcVcxZG42VlRa?=
 =?utf-8?B?aEMweVc0WktpSk1rUzZPaU5oS3hIODZFaWl5N09DTDFSajdnYmxGZC9FMjNQ?=
 =?utf-8?B?dnRMRFFSWWt1UFk3cExUWVRXR0JuRWVKSmN0QlV3THR2ek9JRFVyZngvMEZZ?=
 =?utf-8?B?U2t5UWRpdkJyd0ZMUEdLZGcvMkpVTWZBRytTb1FwNXMxUCtibzE3d2pVS2x6?=
 =?utf-8?B?WFVHVlo4bHE2RXVzcWN1NnFzUnVEVkVsS28zcWdXM0hNYjVWNDZaYTlCNUt5?=
 =?utf-8?B?OHZrQnlhMlMwQy9Xc1diMUZwSHhQMzZsVHpnaldObUhWRHlDTWtzalkya0Vn?=
 =?utf-8?B?cVZPSUZ1aG1BR09VQnFvSHRhTGVyWGNXbDVaNlRVNDFMUkhTM3NQTGZQdDYw?=
 =?utf-8?B?VEloQU4zcWVBci9tYlpEVjQ3S0RkaUs4MjdQODYrSzNDWTFoUEY0SVBkUlJy?=
 =?utf-8?B?UzdIM2M5ZVIzNks3ODVuZmdCRmJsaFdha0xURmcxUloxZFMvSTFOYWo0akNY?=
 =?utf-8?B?L0RNd2Y1ZDRTWm9EY2c4cDJUYXFYTU93V3RBZUZFdTUvQVNlWVhvUEZiWDg4?=
 =?utf-8?B?Y1lrelNYaWxlbjJlMWZvZjBrc283RzA2VnNEei9oV0hRTTF6ZGliT1M0MDYy?=
 =?utf-8?B?LzVBaXJlVDd6Z3M0dmRaNHVYbHFIMU8wWks5L0hVNDAxM0t3Vlo4aW1mbU1F?=
 =?utf-8?B?ejVEWTRmTVRUOUxjdEphbkNPdllJYjIxd0JxenQrWFY3eWFiSUY1b3ZPcTVu?=
 =?utf-8?B?RXFuaWJYZDRQMUo3cUZjeHI5cHArRitQSmlhc0RLMndmcUo3OU5vME42TUdm?=
 =?utf-8?B?dzNDbzlRYmJoTHdOeDlzR01jVUk5cU8vTjZ1WDF4bWVucTBjRjh2ZU1vYVRB?=
 =?utf-8?B?SUU3d0tVZ3NUMUwvckIrVnpaZmtJV3NoQ0N3QjZCYUxwK0drbFRPZXpUYUI5?=
 =?utf-8?B?dUF4UGJMcWQ1akFodVphTjFndEhncjJ6b0wyejgzd1BFandOTU81ekpWUWxR?=
 =?utf-8?B?dWl5a1o2ZVlYd0x0STBCalV2MWlta2Z6Q2xSRDdxa2IrajBrMit6QVBNSExF?=
 =?utf-8?B?bGh0d1Rlb0ZuWmQwY3VXN0ttNWlWMmJOTFhHeGZlUk1FWC9DV003anhubXQr?=
 =?utf-8?B?WFVVMllzR3MyR1ovZFRoV3drR2U5YUgvbDNLKzlnaCszVVRwbm56ZnRZT2FV?=
 =?utf-8?B?Nm5wMjF3c1NpRkZkSmd2NjU4QlJjNnFHd201UElVYnpwMmlhbTNvU2VDT0RR?=
 =?utf-8?B?VGFmV0lKcmtlM3BOOThrQ1I0NGJMUUd2U2JGN0FuMWRreWtVems5Y1RYbERV?=
 =?utf-8?B?ZDZaaWlMeWRPdDg5elRJU2ZZRnluamJyOXgzdzhCSzR5V2hpQmJSbHpPY3Zz?=
 =?utf-8?Q?rxQMJgOU3ZZO7kgKlCRoXb9YWqqRE2mkfUJgNJF?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5176.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?TStvV1JCTG9YRzBlWmZEdWFiaC9YVzRVVnU5ZU9tRUZTTkFyYk9vaG1NM3Rs?=
 =?utf-8?B?WWcxSW0zaXdTS3pQL2dOeFBqZk9ySzFOSnBHbGxOWWFKa2U2M2x1Q0tCRndJ?=
 =?utf-8?B?YzZCdjFTangvd3BOd0VVTkRERDVDVVhGU0Jhc3FITnlhRlpiSUJKQ0Vyc1VV?=
 =?utf-8?B?aFRjbWRNSE1VZUJrcjNvT3JhVWhhU1JDVWpwUVF2R3RENHNQN0JMUWpTMy8r?=
 =?utf-8?B?Y1MwbkVlc2NmUzB6MTFwd0o1S210NW5DTnliYklNT1c4YWtKdGdLckdIdkhu?=
 =?utf-8?B?Kzk4KzVwQm1nUDdmZytiai93amxrSW9LVWJ3VnBDbjhqUUZoOGxObm90a0RZ?=
 =?utf-8?B?MXNzeUYySlRTc094a1VyZHlxckQ5SlJ5RUxYamZBc0t1V0h5ZWI3T2Fad3N6?=
 =?utf-8?B?Q2NqcGdLQmJMTUpqWVpZR2w0cTJta0Q2LzVTSTBqTDR3bDl4M1NjUG55bTd0?=
 =?utf-8?B?dExubC90by9mY3lJT3RMMWw1aHVRdlYzRDZaSy81dVVpMjlVK3Nlb2pSUTZ1?=
 =?utf-8?B?dnI4bDZNU1pTS01EclhqL1JrTEoyVS9nRjFvaDRCR3Z0bjV5QWpKRkhPNVhF?=
 =?utf-8?B?RnhZN0ZMYVFWMDBBMlJIM0xvSDhVS29KV3d6L203SXdRTEFzVURkOXB6TC8z?=
 =?utf-8?B?bEV4b2lRc2ZyOXhHclNvVjErU2JJbE9lU0RmOVZBM0p0Uzh5K1VBdyttTlhS?=
 =?utf-8?B?WnBWWk5LZzJnOEdsOGtZSm1ON09UcmxpYktjNjlBQU5JVVlMREVkRTZJaTlF?=
 =?utf-8?B?c29KK3hDdTA1bHlIeDV1SEErOVhEdThvdWVtSkYzYkxFeGRPMnYvZFRPcWNo?=
 =?utf-8?B?K3dybXNIMnpCL1RiQkZlZHNvM3ZpYTVtOHMvNVJ5TTBsMThrVWovNXNYR2pp?=
 =?utf-8?B?ZXd4ZFlJVnJmSDNTbDJsVVN5ZXRZdEdjSEJxcitOaXh1VXpyaFlNMTFXdVp2?=
 =?utf-8?B?VXk3YlpraUJiWGd6enNxM2FqSHVyb0dUQ2xKcVJ3ZSt3ZjhZTVAwSDV6QkUz?=
 =?utf-8?B?eU54OEtJV2VoaWt1aXZoUSt4KzlqL1ZMbm5VSFUvcE93NmJHbEVuekFnSGJN?=
 =?utf-8?B?aStXYlF0TXp2aVRiM0tjYzZTVzZmd0M2LytFY2JCWXlpdW5keXZLVzUwb1Q0?=
 =?utf-8?B?ZTdlSEJVZXc4YS9GaHB4NFkwU2IvOHNIeEp1T0p5NzZoRWdKQzZPZUpLWDFw?=
 =?utf-8?B?QWFRSnJtZEMwTURmM2Z0VmJHUG9XR3dNWGtPSWJIYXdYcDJ5Uk1Od25ZaE1T?=
 =?utf-8?B?eGFrZEU1aFhNU0tLejIyclFSU2xqZWthYW5yWnBXQkZ5YmJNY2x1MGFDV0gy?=
 =?utf-8?B?bFF2TjNabW96T2NPQ3c4NlFYSTZ2b1RDNVhtd25oZFNOVE0vWFJlT2JCd1Jz?=
 =?utf-8?B?bHZIZmgyUW5lNlpHenE5WHU2WEFwc1Z0UFQrWlpNMC9RVm5sU3grSFZmODh5?=
 =?utf-8?B?djEvME1XT2FTUEtXZzhnZGxoK1FjTjdidFJZZGp5SE9uTTYvOXkzdFMvSTJE?=
 =?utf-8?B?YUdPUmRLdk5LOTNGQTFpSUcrS2RGcW5lU3RsVndsRWJFN280NThoRkxLUXdj?=
 =?utf-8?B?clNBWUV4SkV4T3FDOE5Jc3lONGE1YjI4d3AwaDR5VW9FY090c3hKcjRNcSth?=
 =?utf-8?B?THhoN0FPcU4zenVjcXIxMytVcURqQkFlTXl4R3UvdWxndVNzYWJqa1ZsTTV2?=
 =?utf-8?B?SnFHT00xY1MzenJQWDZ2Y2l0VUlMWWtzTFY2UGp1UFVYMU9hdnBpdmFLY2I0?=
 =?utf-8?B?bjFzUWptQi9MdGUvZjJjWnExMm1tOUNJSVAydEx5N1dhQnhBTXh3bkd3R2Zm?=
 =?utf-8?B?Vjk1UFVka2dhSWJHQ0VvekJ3cWJFNzdlS1NrTS82TlNidVIyREF3SkFucS9p?=
 =?utf-8?B?c2I5V2dqUWlvSTVCWHZTR1pDbTBJaGlJYmpTQ0dXSDB4RFBsRnhudmRvc2NV?=
 =?utf-8?B?UEpKeEV6QTkwVUt6disrcmdlMHcvb0dSdHlhd2tBaUlieWxnTFBURE8rK0JS?=
 =?utf-8?B?M0UyaGFZOFduQzlra243Ti91N3l2dkVCQkwrbG11UWs4UnNlTVpRQzZtOWhE?=
 =?utf-8?B?T2hpOVdqV0RmTkNpOTZrV1RqaE9vcXdKUTFWMVZzcnp6a05BaVNKWkdOaXRa?=
 =?utf-8?Q?0v0jQ3ynUGKIn3FYaA46mdkKF?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 56b14fd6-a590-4721-4187-08dce8e601b2
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5176.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 04:42:55.2645
 (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: ymbM2IHiKJartZzGgfvQ7aDLnSEZjkozqe4rn30S7U/62MtRuZafVIxxF4u3Z5FMF6H2+8W89m0LyBEP/AEE9A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8300



On 10/9/2024 14:05, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> hw/amd and how/intel enable their PCI-Device with pci_enable_device().
> Thus, they need the never-managed version.
> 
> Replace pci_intx() with pci_intx_unmanaged().
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>

Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> #for ntb_hw_amd.c

> ---
>  drivers/ntb/hw/amd/ntb_hw_amd.c    | 4 ++--
>  drivers/ntb/hw/intel/ntb_hw_gen1.c | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
> index d687e8c2cc78..b146f170e839 100644
> --- a/drivers/ntb/hw/amd/ntb_hw_amd.c
> +++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
> @@ -791,7 +791,7 @@ static int ndev_init_isr(struct amd_ntb_dev *ndev,
>  err_msi_enable:
>  
>  	/* Try to set up intx irq */
> -	pci_intx(pdev, 1);
> +	pci_intx_unmanaged(pdev, 1);
>  
>  	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
>  			 "ndev_irq_isr", ndev);
> @@ -831,7 +831,7 @@ static void ndev_deinit_isr(struct amd_ntb_dev *ndev)
>  		if (pci_dev_msi_enabled(pdev))
>  			pci_disable_msi(pdev);
>  		else
> -			pci_intx(pdev, 0);
> +			pci_intx_unmanaged(pdev, 0);
>  	}
>  }
>  
> diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c
> index 079b8cd79785..9ad9d7fe227e 100644
> --- a/drivers/ntb/hw/intel/ntb_hw_gen1.c
> +++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c
> @@ -445,7 +445,7 @@ int ndev_init_isr(struct intel_ntb_dev *ndev,
>  
>  	/* Try to set up intx irq */
>  
> -	pci_intx(pdev, 1);
> +	pci_intx_unmanaged(pdev, 1);
>  
>  	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
>  			 "ndev_irq_isr", ndev);


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 05:39:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 05:39:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815441.1229194 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syltd-0002BZ-TH; Thu, 10 Oct 2024 05:39:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815441.1229194; Thu, 10 Oct 2024 05: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 1syltd-0002BS-QL; Thu, 10 Oct 2024 05:39:33 +0000
Received: by outflank-mailman (input) for mailman id 815441;
 Thu, 10 Oct 2024 05: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syltc-0002BM-Km
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 05:39:32 +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 05725658-86ca-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 07:39:31 +0200 (CEST)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-37d447de11dso293724f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 22:39:31 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430ccf45e3bsm37520755e9.15.2024.10.09.22.39.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 22:39:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05725658-86ca-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728538770; x=1729143570; darn=lists.xenproject.org;
        h=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=v7LdSdTfuBQVcEfnUv9Wb9m0zO/UjBPCYRw0/7NNE2c=;
        b=IFJHA031upUDZSgObN2Y5kEc5jTvyMNsnfiFlisIOiRgBaS5U4LDucCwQIMyYZk/po
         Z22n1NNXcDJddUkIJHOTnZqyYAMC7M+sQmViE3Z6lCatq7Rx+qqZGxtDzb6R87/KmBdE
         NV7hv+jQduxknsp7r3QEq8kJ+O+juDgsZB1RMJ5/VjtIk08IpJ/2MwSZO/4Oy3pSG8V8
         F1sVNd3Py42v9E1rREJgmzHT92FrkXP429dKcmS9LVNcEtQlHjLy0zbTM9F/sFjlUFLk
         9z53wfkPy7s/x/Z7Iym+Ud6YLfv4N1CyoxFEerVCIN/kVGc77CT5h3iNZGQpT7X5a04j
         lXHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728538770; x=1729143570;
        h=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=v7LdSdTfuBQVcEfnUv9Wb9m0zO/UjBPCYRw0/7NNE2c=;
        b=Rs7nEow7X4SV7pa/h3TcFv0WHR83xsRsUTIP+d8quw7byaZIWkYAABEpV6G+ToV/my
         K9vNyYuV+sqswDztmZCwVkoxeyEFG6mY1XncCsCQJgeQ9u78ze+Ol3xe5M+o2mHFA+XF
         D+13EJbwN/e/S5FO0CbH7GJtL+u5AkOsOA39FfIxxUPQLJg34/kE7LkaFl/ZJh955b8I
         x9T7/KDmCVUat1gUtAIcQC4XBfaD9CsT5uueaFGHlOwreYFSkmBZ12aExFYmD+HZ3/MR
         N0ocBwLFRnnITyAyrHIaX0+yGfdRNy3H3ne5062ioXqfrisDBUr2uxlckPFY8LuFxToY
         hqjQ==
X-Forwarded-Encrypted: i=1; AJvYcCUEJHaTYZbyQIf0pqNjOqjHkTAD08RDqdCGAKKYOgyQ20pLla32aq69S44xAlSiIsm7Gz+MASIsp1Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywu5QnO0xTt2KRP1Y6XfNiwHS45Y6kMZh07rREKkQI7LPVSViYW
	pURQDV5HXBAgdODMjeDsHs7h377nOPX4hbiucsDhvP1K4VIurZXEnvqOzIPpBTE=
X-Google-Smtp-Source: AGHT+IFZQQa5Iu7PrlyVFYMYQEPyrY4vINFpziRY58A0az7R9K6pffepPefKiCUmi53tZHqw3yVNxg==
X-Received: by 2002:a05:6000:e81:b0:37c:c4d3:b9ba with SMTP id ffacd0b85a97d-37d3a9b8d60mr3327855f8f.12.1728538769943;
        Wed, 09 Oct 2024 22:39:29 -0700 (PDT)
Message-ID: <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
Date: Thu, 10 Oct 2024 07:39:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
To: Stefano Stabellini <sstabellini@kernel.org>,
 Jan Beulich <jbeulich@suse.com>
Cc: Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------kCnudpVj5QLHGd2zxbJWtYri"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------kCnudpVj5QLHGd2zxbJWtYri
Content-Type: multipart/mixed; boundary="------------u0hfL5lBoxeauLJAZd7Xgs4x";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Stefano Stabellini <sstabellini@kernel.org>,
 Jan Beulich <jbeulich@suse.com>
Cc: Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
Message-ID: <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
In-Reply-To: <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------u0hfL5lBoxeauLJAZd7Xgs4x
Content-Type: multipart/mixed; boundary="------------W1wbDms6j7JY06GoHtrL0XU1"

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

T24gMTAuMTAuMjQgMDA6NDYsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToNCj4gT24gV2Vk
LCA5IE9jdCAyMDI0LCBKYW4gQmV1bGljaCB3cm90ZToNCj4+IE9uIDA5LjEwLjIwMjQgMDg6
MjAsIEppcWlhbiBDaGVuIHdyb3RlOg0KPj4+IENvbW1pdCAyZmFlNmJiN2JlMzIgKCJ4ZW4v
cHJpdmNtZDogQWRkIG5ldyBzeXNjYWxsIHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+IGFk
ZHMgYSB3ZWFrIHJldmVyc2UgZGVwZW5kZW5jeSB0byB0aGUgY29uZmlnIFhFTl9QUklWQ01E
IGRlZmluaXRpb24sIGl0cw0KPj4+IHB1cnBvc2UgaXMgdG8gcGFzcyB0aGUgY29tYmluYXRp
b24gb2YgY29tcGlsYXRpb24gdGhhdCBDT05GSUdfWEVOX1BSSVZDTUQ9eQ0KPj4+IGFuZCBD
T05GSUdfWEVOX1BDSURFVl9CQUNLRU5EPW0sIGJlY2F1c2UgaW4gdGhhdCBjb21iaW5hdGlv
biwgeGVuLXBjaWJhY2sNCj4+PiBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSBidXQgeGVuLXBy
aXZjbWQgaXMgYnVpbHQtaW4sIHNvIHhlbi1wcml2Y21kIGNhbid0DQo+Pj4gZmluZCB0aGUg
aW1wbGVtZW50YXRpb24gb2YgcGNpc3R1Yl9nZXRfZ3NpX2Zyb21fc2JkZi4NCj4+Pg0KPj4+
IEJ1dCB0aGF0IGRlcGVuZGVuY3kgY2F1c2VzIHhlbi1wcml2Y21kIGNhbid0IGJlIGxvYWRl
ZCBvbiBkb21VLCBiZWNhdXNlDQo+Pj4gZGVwZW5kZW50IHhlbi1wY2liYWNrIGlzIGFsd2F5
cyBub3QgYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseSBvbiBkb21VLg0KPj4+DQo+Pj4gVG8gc29s
dmUgYWJvdmUgcHJvYmxlbSBhbmQgY292ZXIgb3JpZ2luYWwgY29tbWl0J3MgcmVxdWlyZW1l
bnQsIGp1c3QgcmVtb3ZlDQo+Pj4gdGhhdCBkZXBlbmRlbmN5LCBiZWNhdXNlIHRoZSBjb2Rl
ICJJU19SRUFDSEFCTEUoQ09ORklHX1hFTl9QQ0lERVZfQkFDS0VORCkiDQo+Pj4gb2Ygb3Jp
Z2luYWwgY29tbWl0IGlzIGVub3VnaCB0byBtZWV0IHRoZSByZXF1aXJlbWVudC4NCj4+Pg0K
Pj4+IEZpeGVzOiAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5ldyBzeXNjYWxs
IHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+IFNpZ25lZC1vZmYtYnk6IEppcWlhbiBDaGVu
IDxKaXFpYW4uQ2hlbkBhbWQuY29tPg0KPj4NCj4+IFRoaXMgbGFja3MgYSBSZXBvcnRlZC1i
eTouDQo+Pg0KPj4+IC0tLSBhL2RyaXZlcnMveGVuL0tjb25maWcNCj4+PiArKysgYi9kcml2
ZXJzL3hlbi9LY29uZmlnDQo+Pj4gQEAgLTI2MSw3ICsyNjEsNiBAQCBjb25maWcgWEVOX1ND
U0lfQkFDS0VORA0KPj4+ICAgY29uZmlnIFhFTl9QUklWQ01EDQo+Pj4gICAJdHJpc3RhdGUg
IlhlbiBoeXBlcmNhbGwgcGFzc3Rocm91Z2ggZHJpdmVyIg0KPj4+ICAgCWRlcGVuZHMgb24g
WEVODQo+Pj4gLQlpbXBseSBYRU5fUENJREVWX0JBQ0tFTkQNCj4+PiAgIAlkZWZhdWx0IG0N
Cj4+PiAgIAloZWxwDQo+Pj4gICAJICBUaGUgaHlwZXJjYWxsIHBhc3N0aHJvdWdoIGRyaXZl
ciBhbGxvd3MgcHJpdmlsZWdlZCB1c2VyIHByb2dyYW1zIHRvDQo+Pg0KPj4gVGhlIHJlcG9y
dCB3YXNuJ3QgYWJvdXQgYSBidWlsZCBwcm9ibGVtLCBidXQgYSBydW50aW1lIG9uZS4gUmVt
b3ZpbmcgdGhlDQo+PiBkZXBlbmRlbmN5IGhlcmUgZG9lc24ndCBjaGFuZ2UgYW55dGhpbmcg
aW4gdGhlIGRlcGVuZGVuY3kgb2YgeGVuLXByaXZjbWQNCj4+IG9uIHhlbi1wY2liYWNrLCBh
cyB0aGUgdXNlIG9mIHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYoKSBjb250aW51ZXMgdG8N
Cj4+IGV4aXN0Lg0KPj4NCj4+IENvbnNpZGVyIHRoZSBjYXNlIG9mIFhFTl9QQ0lERVZfQkFD
S0VORD1tIGFuZCBYRU5fUFJJVkNNRD1tLCB3aGljaA0KPj4gSSBndWVzcyBpcyB3aGF0IE1h
cmVrIGlzIHVzaW5nIGluIGhpcyBjb25maWcuIEJvdGggZHJpdmVycyBhcmUgYXZhaWxhYmxl
DQo+PiBpbiBzdWNoIGEgY29uZmlndXJhdGlvbiwgeWV0IGxvYWRpbmcgb2YgeGVuLXByaXZj
bWQgdGhlbiByZXF1aXJlcyB0bw0KPj4gbG9hZCB4ZW4tcGNpYmFjayBmaXJzdC4gQW5kIHRo
YXQgbGF0dGVyIGxvYWQgYXR0ZW1wdCB3aWxsIGZhaWwgaW4gYSBEb21VLg0KPj4gVGhlIHR3
byBkcml2ZXJzIHNpbXBseSBtYXkgbm90IGhhdmUgYW55IGRlcGVuZGVuY3kgaW4gZWl0aGVy
IGRpcmVjdGlvbi4NCj4gDQo+IFRoZSBpZGVhIGlzIHRoYXQgdGhlcmUgc2hvdWxkIGJlIG5v
IGhhcmQgZGVwZW5kZW5jeSBvbg0KPiBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKCkuIElm
IGl0IGlzIGF2YWlsYWJsZSwgdGhlIHNlcnZpY2Ugd2lsbCBiZQ0KPiB1c2VkLCBvdGhlcndp
c2UgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4NCj4gDQo+IFRoZSBwcm9ibGVtIGlzIHRo
YXQgSVNfUkVBQ0hBQkxFIGlzIGEgY29tcGlsZS10aW1lIGNoZWNrLiBXaGF0IHdlIG5lZWQN
Cj4gaXMgYSBydW50aW1lIGNoZWNrIGluc3RlYWQuIE1heWJlIHN5bWJvbF9nZXQgb3IgdHJ5
X21vZHVsZV9nZXQgPw0KDQpUaGlzIGlzIGEgcmF0aGVyIGNsdW1zeSBzb2x1dGlvbiBJTU8u
DQoNCkknbSBzZWVpbmcgdGhlIGZvbGxvd2luZyBzb2x1dGlvbnM6DQoNCjEuIERvbid0IGZh
aWwgdG8gdG8gbG9hZCB0aGUgcGNpYmFjayBkcml2ZXIgaW4gYSBEb21VLCBidXQgb25seSBk
aXNhYmxlDQogICAgYW55IGZ1bmN0aW9uYWxpdHkuDQoNCjIuIE1vdmUgdGhlIGRyaXZlcnMv
eGVuL3hlbi1wY2liYWNrL3BjaV9zdHViLmMgZnVuY3Rpb25hbGl0eSBpbiBhIG1vZHVsZQ0K
ICAgIG9mIGl0cyBvd24sIGFsbG93aW5nIHRoZSBwcml2Y21kIGRyaXZlciB0byBiZSBsb2Fk
ZWQgd2l0aG91dCBuZWVkaW5nDQogICAgdGhlIHJlc3Qgb2YgcGNpYmFjay4NCg0KMy4gQWRk
IGEgaG9vayB0byBlLmcuIGRyaXZlcnMveGVuL3BjaS5jIGluc3RlYWQgZm9yIGNhbGxpbmcg
b2YNCiAgICBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKCkgZGlyZWN0bHkuIHBjaWJhY2sg
Y291bGQgcmVnaXN0ZXIgdGhlIHJlYWwNCiAgICBjYWxsIGFkZHJlc3MuIElmIHBjaWJhY2sg
aXNuJ3QgbG9hZGVkLCB0aGUgaG9vayBjYW4gcmV0dXJuIGFuIGVycm9yLg0KICAgIFRoaXMg
d291bGQgcmVtb3ZlIHRoZSBleHBsaWNpdCBkZXBlbmRlbmN5IG9mIHByaXZjbWQgb24gcGNp
YmFjay4NCg0KSSdkIHByZWZlciB0aGUgM3JkIHZhcmlhbnQuDQoNCg0KSnVlcmdlbg0KDQo=

--------------W1wbDms6j7JY06GoHtrL0XU1
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------W1wbDms6j7JY06GoHtrL0XU1--

--------------u0hfL5lBoxeauLJAZd7Xgs4x--

--------------kCnudpVj5QLHGd2zxbJWtYri
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/Ey8FAmcHaJAFAwAAAAAACgkQsN6d1ii/Ey8o
NQf+Jk8xKYaRguEDNlCuIjv39oEKU0REmjs0qRKASL3RuVQ1ig43umiLw8oYi7po1ukho2LkCF9y
mVnqBnc0DrmM/eJe5fKASD0L5Y5vtawztqzS016pb1HJioQm4XyBL//d5q8VBp2iNR2ARv2c7n4m
Jb7QItc4ggbEIBoGMC59QVtZpYRs577PeEloUhLaKxB8rPUAsFYVjiKgqKY8Su3PoM+7RwbiWOdY
ds9zTVe+2ztVC3mClkvg2iCbmXSXdu6fJwbv7iG/a7pxEjqNqKjKgYtcZ51nDFUEXINMoahNHCnz
MCcsZKVzncANAy0XuqjXmlNxBQv1+sUx1mOqpYy1zw==
=SZ9F
-----END PGP SIGNATURE-----

--------------kCnudpVj5QLHGd2zxbJWtYri--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 06:22:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 06:22:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815452.1229203 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1symZJ-0007Gi-3C; Thu, 10 Oct 2024 06:22:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815452.1229203; Thu, 10 Oct 2024 06:22: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 1symZJ-0007Gb-0V; Thu, 10 Oct 2024 06:22:37 +0000
Received: by outflank-mailman (input) for mailman id 815452;
 Thu, 10 Oct 2024 06:22: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=C3pA=RG=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1symZH-0007GV-30
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 06:22:35 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on2062d.outbound.protection.outlook.com
 [2a01:111:f403:2612::62d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 08863b36-86d0-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 08:22:32 +0200 (CEST)
Received: from DB9PR02CA0004.eurprd02.prod.outlook.com (2603:10a6:10:1d9::9)
 by DB4PR08MB9405.eurprd08.prod.outlook.com (2603:10a6:10:3f3::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Thu, 10 Oct
 2024 06:22:26 +0000
Received: from DU6PEPF0000A7DD.eurprd02.prod.outlook.com
 (2603:10a6:10:1d9:cafe::78) by DB9PR02CA0004.outlook.office365.com
 (2603:10a6:10:1d9::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.17 via Frontend
 Transport; Thu, 10 Oct 2024 06:22:26 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU6PEPF0000A7DD.mail.protection.outlook.com (10.167.8.37) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8048.13 via
 Frontend Transport; Thu, 10 Oct 2024 06:22:25 +0000
Received: ("Tessian outbound 0362136859cb:v473");
 Thu, 10 Oct 2024 06:22:25 +0000
Received: from Ld1e73cc05c03.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 E0435DC8-2019-40D0-A523-842624AA2C39.1; 
 Thu, 10 Oct 2024 06:22:18 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Ld1e73cc05c03.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 10 Oct 2024 06:22:18 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by PA4PR08MB6205.eurprd08.prod.outlook.com (2603:10a6:102:e6::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 06:22:16 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024
 06:22: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: 08863b36-86d0-11ef-a0bd-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=JZo0QmdJUQIB/RaX1wM1sAHSxUb9/IRmmOAIF0C9WBZmDHkWZvGRkXKRtPs7rxgwYZLd+O5OQYxifaRybFKKZV6LSWTW8wZD9G7q6f+09r0HDdIPlnnparEiQM14ddjZ9gc1BoOiIAvpVcqR8OITeyZ5Jz+bQR7l2OINxvFrvKwHREaSW6izPWAqvwm+9jrYZUS60Bv0uvzaXSe+/gVIEAxATAyevq/Mm5wBw9pAe/FQwVF4sjjl/HV2xkRMJxQCUnhuXb7aXwNJSEo5IzS3lDaQvIriYp/uNBeKL1iZv4y1XQrkXZUxNG3kqIDiy3f3176J8Oaw/IrJjsbD9Kd2lg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=VYJq2pxbeWCupnCO47J++QxriOMjYYAD5LQbD99YZbs=;
 b=g/oT7Z9CsKu7buhS/2azjBY3eg7ViLq3DcWXya3gw57O525pRYwZwpOl4viEGf254zl3vHCbFyaPbifwFNvdIPWH4Xq88sMAvjTAupfjrtBD/eUuwAhvJnwl2hlh6/Lk91+wTtUmUYYO/noLXrEJrQaduIeABBQ5D5O51//ZPNLkuc/loGhKdUMhDJXGpk0WRMYGJtDBj6AXOUO+tJdKX1piw95tM1It2u91+U1WkY4q+CVtnrDNN1QzR6R/S0Gz5R0OQ8KwJaJt223CsvpLPg8RLow3/lbN8nH2coZF3qt54UvPXXlKxegqK/qptaTf0CTU3Hkx+M0wGXq2R1y4HA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VYJq2pxbeWCupnCO47J++QxriOMjYYAD5LQbD99YZbs=;
 b=RR5T8WmnOWu8vou9QT/yl5D35VAi7Os5jdWyi4a+A9TkUKCbGNy3K2y+rQ5+ptW0rysiwShBFENbKmRxyNW3Itqr421azHMiqJYJk8ficewtInx3KZsH75cKaqg5h8kTqtYrc4UPnz+AKMY18Rl8hxqxGWbM7iKujAw/POSpVJ8=
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=arm.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: 3940d2705cd8153b
X-TessianGatewayMetadata: yWsSW3aaLYvJmckNhNaxFrrpgCHiczm5IAh4yAICANSbEhggV1AD5Ekrdt+xb02uepXCBAIdWJT6D4nkqxZR3P56IuA/nXGXYUb34HDjzUp2lQmFuLuSwBezQ9+IlJuKlVy90fMn6kFtudknWdkZxjfQwn8igRE9aUkJB3cRFRE=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hyxQwLImxWirb962U++ABwFIC0keetUSFqme+oWJGM0u1fM8c43MifiQFgfknljcW/qIlZbwcvITt8lGUFBR8BlRKp9Pw57S2fMUWUcORrZitA10JlbgN1ZyK4FvL+FTX0ghw2k1AuXPIKlHguS0tR4PvZ1tMU3bZu4D8JYTe31BuCVZhrUwqVMPvC3fpD+vTjaSQ7RjbeutshySPj3ZdSWMO7ivBiIZsEA8QxfC465mPsBfIUxVUns++hqF+rxjMWUn74RaFb+7CLeJ21ekN6+JHqhsujNFUeDqVIaunKoS45fIixWWqG9vsU3jJnuaK7fHgz0e17vHhjvXPjzfRA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=VYJq2pxbeWCupnCO47J++QxriOMjYYAD5LQbD99YZbs=;
 b=qzHTcxAO+1HhlcXxlFCiSW7zbheepfO1KkIzndQPmrK10egDSKUFte5VzPOOMDe8/FC5+q08Sd0uBCT4CRNLsitS5nS8O7drB9ZMJQRlE4Kgx4AOXL+98/WNTZlhkKndomRksViU11m6hLBVDm1rWj+/UKb75prjeUfKiJOTQe8+Fai/aPi4MfTYug8z1Kmgc6X8l7HRSJUIg8d8QzypGeKN/Y9awFWOkk4j/zvCmDNdaTTHIIHGcK8nUQtIo4tLiGZh/asEvii76g440hBjferACexC+774I+STPoLX4tHo4dPx7hxAfs5IZc4Nds61zY8I+VCbBz5hFUswmcB/sA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=VYJq2pxbeWCupnCO47J++QxriOMjYYAD5LQbD99YZbs=;
 b=RR5T8WmnOWu8vou9QT/yl5D35VAi7Os5jdWyi4a+A9TkUKCbGNy3K2y+rQ5+ptW0rysiwShBFENbKmRxyNW3Itqr421azHMiqJYJk8ficewtInx3KZsH75cKaqg5h8kTqtYrc4UPnz+AKMY18Rl8hxqxGWbM7iKujAw/POSpVJ8=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Oleksandr Tyshchenko <olekstysh@gmail.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, Artem Mygaiev <artem_mygaiev@epam.com>, Hisao
 Munakata <hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Topic: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Index: AQHbGOqFqldnvX8xNEmI4LnFnImSpbJ8YaSAgADTLwCAAMR5AIAAtAsAgADaR4A=
Date: Thu, 10 Oct 2024 06:22:16 +0000
Message-ID: <B4C08480-8240-4B35-99FB-E176CA497ED5@arm.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <9C3AD765-C165-4B46-AEEB-8C5F87861947@arm.com>
 <e180d843-fe44-42fb-b3ae-c75f0f675aab@gmail.com>
In-Reply-To: <e180d843-fe44-42fb-b3ae-c75f0f675aab@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|PA4PR08MB6205:EE_|DU6PEPF0000A7DD:EE_|DB4PR08MB9405:EE_
X-MS-Office365-Filtering-Correlation-Id: ecccbebd-5cc9-4b4a-02a6-08dce8f3e854
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|10070799003|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?FmKCKgQN5tjBaaNQZe9oo/G+3l8Ptrsopqdop1NgoWVvCwyX9Fhh8ACr6llW?=
 =?us-ascii?Q?KsyWuD7ZLXABzvseiINBFrg5QFfD9+GmNRoRKlXoloiSpI/tL+k0/6dseU9l?=
 =?us-ascii?Q?8BV3HaP/QNt6LLmn6GOlwEfZ1nJGJtX+N+UNwAk1RLE3sUGXN6RqQz4lo5Nl?=
 =?us-ascii?Q?OXXrWk+aQhabjsvObgQv0eVxhdJAkmeuPCozG7IlEff3tC54jNA4PQznhjET?=
 =?us-ascii?Q?wDV0Y14P3jF+ORHDazirwwTZ9Knt7lpjDNAaKy3W1iIYe/k2NpHGjndAbiSt?=
 =?us-ascii?Q?omsBjlahZKmt3Q/UNmuSX3qp7vrIqf9qQTn3iccx8buKx7ElT8sbZoAbzluX?=
 =?us-ascii?Q?BZ6QLvHHVTWnIi6fCxmak3l7OqUQTpGYBiab8d+rWHHnkzmmrgHdjYz8MuRq?=
 =?us-ascii?Q?vIXl4gERKFbeGupqKV3qonouYodxBnyqv50OkO0/yJQbt/5b3oRKQxVuK0qI?=
 =?us-ascii?Q?622p5kP0B115cD0uYS8UCy9qEUdHcAlDM9YMrucluWgcKo4uiNhsDiqVGsyq?=
 =?us-ascii?Q?q2RtuagZspqy8seaYYHlYeVStPgqPnVv3Hym2VISEOuKZjhT6vdn/7AfyQ/f?=
 =?us-ascii?Q?c4+y/eMNlVHDHsdfeUnwdh8iNEg0o3aOE5bXR0b24j7/bPyXTSQdIEmqv5OS?=
 =?us-ascii?Q?jGGhrvLtVrw75o4On4qd9l5KMBeisia4fZbDl/YQ+iEqrzQrEUa9E/c7wRnO?=
 =?us-ascii?Q?fpaLtWgj2D5qrWFQzCyd6ANtCHO1y/wzNiQnrcPhrfvdBz4O+GBYRvdZw+Vf?=
 =?us-ascii?Q?p5iujnMpSAWWfOG9bZxqQWEHWvZX5FGdleXM3l3NmF7d3cV90TSr8pI1/XOY?=
 =?us-ascii?Q?hQ+vSgArEpFmwG5p5lEzn9drpf+BNAOEXd15qcgpNkFMcmHMNreYgMcylPK+?=
 =?us-ascii?Q?y+uG9kkr1yMN00jXB2nuc/tEfMhYI1jEmP7dIqotbl26BMuc6dU5W6RAA6f5?=
 =?us-ascii?Q?rRvSTJHVCUG88AFOTSkYaZwcN1B+AuFLsY8kgsn/eB3OXa3guk9Pd2VB0tdZ?=
 =?us-ascii?Q?a3pYgyNCrNUcPmlA2LqbarnTA7WNJQdjS9UKXcF+cZMy26q9xOq0dR36DW1Z?=
 =?us-ascii?Q?Ght7DvKP9YK88YR83B/ClqHI9eD3iGlqfQqgUPwvEt7i732XFsOQ5X+TWkFo?=
 =?us-ascii?Q?5r+YzaxKLhzxFmjZ9A7v8+E3hyFIVbBn2EBcQV8HY6Uj9CbG54Svff8LYkPY?=
 =?us-ascii?Q?DY4rqd9zDgH4LLzRjWAi3FZ04z1uNuwRkawq8b7L2Y2fuuSZNpx1/JFFiA4N?=
 =?us-ascii?Q?HYJobyCpUfdnZ0a3B9ZGpLm95qJv8jICe8C+kSraEQ=3D=3D?=
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:(13230040)(366016)(1800799024)(376014)(10070799003)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <25258D2ADC8CED4CACFF40FF6B2CFABE@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6205
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7DD.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8a866127-27ca-4f72-fdfb-08dce8f3e2ff
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|35042699022|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?saf3fnIInhxNEYcOdBFAHnz81TrTLcOpj7kvu0cbs9L26tG6ACxK6QfMVWHS?=
 =?us-ascii?Q?MN50KmzLvMtq/Y6V4ps/7LdrMiYNtlqgyLRXhWs9xDc1BrvTvt+31eigrXE2?=
 =?us-ascii?Q?BOioajkQneASMc2nYnd43t1/uXvCEOIEAXd1FufJ6NwB5uCJGOxnsioJdceT?=
 =?us-ascii?Q?T/HfIANmGogkQteINj1l0YbJqyVKuw2WBcMd+whSOhNAko8zUsul8G5B841m?=
 =?us-ascii?Q?8fZwaycNeYUMCHceXZW5foY+zJlmsRrWw0x3oZCpX5y6x44dRDHlndza2GEC?=
 =?us-ascii?Q?mRzQ0B3aEPyTkDBAyEfSvPm0lOHI5580LVCodiP0PwirgjXLKB2349Bks8Ar?=
 =?us-ascii?Q?a9oJv3oeaP3avvE8hbBTN780TbGbYZVBW1CaOn+wDm2V3+dnfXALxqFFXzsm?=
 =?us-ascii?Q?Ies6c4a6OuZb9ie3ae2rb7BSqx+9H+ImsT4HuVPW/ipehzVssqRbPVvPUECg?=
 =?us-ascii?Q?78VZ5B2ozLFFfYYC6IT7RNQclnDGM2VO3TDNYg7a83X2VHD6hzuVlV5F2IYe?=
 =?us-ascii?Q?uEDiCjw0rJL92+vtU8iRlRG6jdIUGEAHjqODj1NU8wZazyDjWV8G4dLbS/UX?=
 =?us-ascii?Q?9pSeSdJbgXPLOxzN+BQlnePe9oDWiZCa5a9maYMyX+8CppJR8pG/T1gZQpTi?=
 =?us-ascii?Q?VXsiXNit+QphEcsRyaReSlXglP5CYVThc0FbinHuw1JwkqdiFI2QIhzYxhwk?=
 =?us-ascii?Q?+9HUKd8fAX1rJoauLHOXsWzxkWbImKIyyoHds8MkeVPvksEVBI9uTox0evs2?=
 =?us-ascii?Q?viLrzFDKlKuJ2EXfaA9juemueksf2X9eBW4uAFyvVmmuSEp2DAm5Jd0OGGxd?=
 =?us-ascii?Q?Sj/F7eL0HKNosBY8JeAnBp2zZpVqKkXO1WgB9zpUVRXXlsTE+yt77rGxgfgY?=
 =?us-ascii?Q?4jbnLALFkdxF+Bvhlo6ecrqyW7xNaLoIEQf5kGlzp7R+71WujMT2p6VepZaq?=
 =?us-ascii?Q?VmSCEFM2jBdC6vpI2KE+AJjLsQ7QPJ0ey6t09PvjnpfieoNPg1eRptuW5mmY?=
 =?us-ascii?Q?hoTDru5Nxxz+pA1+QcgNsWXHcQFqfvrTmUJiUKZ9e6FDIXDMsVw0kZpzl+gh?=
 =?us-ascii?Q?P8ZBiVADxrKHGmI/NqK5rQjF9Pd24ndTf259rzlovQJTjE7e0vj/Zi1QnKNc?=
 =?us-ascii?Q?5nxAXn1JWA6wcpI/N2ERkoRqiQqQvy5pNgI6OXaP8IKNhfgWVPrKRjCCYeV1?=
 =?us-ascii?Q?Di9fVkBmhlnN8minrHCkpWJdfH5uzrZ25GklMj+6xElZO8dJKgRNGfdfT97c?=
 =?us-ascii?Q?QTRqJ2eD4LBKSZpTXxomu3AsarieEt+v+QvFNOyayPwL9cnzqeGk8jABGy4n?=
 =?us-ascii?Q?lAzO06UuX3j8SziilhnqrC/1?=
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:(13230040)(82310400026)(36860700013)(35042699022)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 06:22:25.2284
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ecccbebd-5cc9-4b4a-02a6-08dce8f3e854
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:
	DU6PEPF0000A7DD.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9405

Hi Oleksandr,

> On 9 Oct 2024, at 19:20, Oleksandr Tyshchenko <olekstysh@gmail.com> wrote=
:
>=20
>=20
>=20
> On 09.10.24 09:36, Bertrand Marquis wrote:
>> Hi Oleksandr,
>=20
> Hello Bertrand
>=20
>=20
>>> On 8 Oct 2024, at 20:53, Oleksandr Tyshchenko <olekstysh@gmail.com> wro=
te:
>>>=20
>>>=20
>>>=20
>>> On 08.10.24 09:17, Bertrand Marquis wrote:
>>>> Hi,
>>>=20
>>> Hello Bertrand
>>>=20
>>>=20
>>>>> On 7 Oct 2024, at 20:55, Oleksandr Tyshchenko <olekstysh@gmail.com> w=
rote:
>>>>>=20
>>>>> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>>=20
>>>>> Add common requirements for a physical device assignment to Arm64
>>>>> and AMD64 PVH domains.
>>>>>=20
>>>>> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>>>>> ---
>>>>> Based on:
>>>>> [PATCH] docs: fusa: Replace VM with domain
>>>>> https://patchew.org/Xen/20241007182603.826807-1-ayan.kumar.halder@amd=
.com/
>>>>> ---
>>>>> ---
>>>>> .../reqs/design-reqs/common/passthrough.rst   | 365 +++++++++++++++++=
+
>>>>> docs/fusa/reqs/index.rst                      |   1 +
>>>>> docs/fusa/reqs/market-reqs/reqs.rst           |  33 ++
>>>>> docs/fusa/reqs/product-reqs/common/reqs.rst   |  29 ++
>>>>> 4 files changed, 428 insertions(+)
>>>>> create mode 100644 docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>> create mode 100644 docs/fusa/reqs/product-reqs/common/reqs.rst
>>>>>=20
>>>>> diff --git a/docs/fusa/reqs/design-reqs/common/passthrough.rst b/docs=
/fusa/reqs/design-reqs/common/passthrough.rst
>>>>> new file mode 100644
>>>>> index 0000000000..a1d6676f65
>>>>> --- /dev/null
>>>>> +++ b/docs/fusa/reqs/design-reqs/common/passthrough.rst
>>>>> @@ -0,0 +1,365 @@
>>>>> +.. SPDX-License-Identifier: CC-BY-4.0
>>>>> +
>>>>> +Device Passthrough
>>>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>>> +
>>>>> +The following are the requirements related to a physical device assi=
gnment
>>>>> +[1], [2] to Arm64 and AMD64 PVH domains.
>>>>> +
>>>>> +Requirements for both Arm64 and AMD64 PVH
>>>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>>>>> +
>>>>> +Hide IOMMU from a domain
>>>>> +------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_hide_iommu_from_domain~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall not expose the IOMMU device to the domain even if I/O virt=
ualization
>>>>> +is disabled. The IOMMU shall be under hypervisor control only.
>>>>> +
>>>>> +Rationale:
>>>> I think there should be a rationale here to explain why we do not want=
 the IOMMU
>>>> in particular to be assigned to a domain.
>>>=20
>>>=20
>>> ok, will add. I propose the following text:
>>>=20
>>> Xen having the whole picture of the host resources and device assignmen=
t unlike the individual domain makes use of the IOMMU to:
>>> - perform DMA Remapping on Arm64 and AMD64 platforms, which is also kno=
wn as stage-2 (or 2nd stage) address translations for DMA devices passed th=
rough to domains and Interrupt Remapping on AMD64 platforms.
>> remove arm64 or amd64, this is always true >
>>> - provide access protection functionalities to prevent malicious or bug=
gy DMA devices from accessing arbitrary memory ranges (e.g. memory allocate=
d to other domains) or from generating interrupts that could affect other d=
omains.
>> I would turn this in positive: restrict DMA devices to only have access =
to the memory of the Domain there are assigned to or no memory at all if no=
t assigned (maybe 2 reqs here).
>=20
>=20
> ok to both. However, I am a bit lost ...
>=20
>=20
>=20
>>>=20
>>>=20
>>>> Added to that, I am not completely sure that there is a clear way to t=
est this one
>>>> as for example one could assign registers not known by Xen.
>>>=20
>>> I am afraid you are right, valid point. For example, on Arm64, if there=
 is no corresponding driver in use, we will end up exposing IOMMU dt node t=
o Dom0.
>>>=20
>>>=20
>>>> Shouldn't this requirement in fact be an assumption of use ?
>>>=20
>>> Assumption of use on Xen? From my PoV sounds reasonable, will do.
>> As was suggested by stefano, i agree with him on turning it differently.=
 Please see his answer.
>=20
>=20
> ... yes, I saw his answer and completely agree with him as well, my quest=
ion is what I should do with the rationale?
>=20
> The rationale I proposed above explains why we do not want the IOMMU
> in particular to be assigned to a domain. But, it belongs to the initial =
"Hide IOMMU from a domain" requirement. Now, with turning it into "Xen shal=
l configure the IOMMU at boot according to the stage 2 translation
> tables" requirement should the rationale still be present?

No this would now be part of integrator role or something like that but sho=
uld not be a rationale here anymore.

>=20
>=20
>>>=20
>>>>> +
>>>>> +Comments:
>>>>> +
>>>>> +Covers:
>>>>> + - `XenProd~device_passthrough~1`
>>>>> +
>>>>> +Discover PCI devices from hardware domain
>>>>> +-----------------------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_hwdom~1`
>>>>> +
>>>>> +Description:
>>>>> +The hardware domain shall enumerate and discover PCI devices and inf=
orm Xen
>>>>> +about their appearance and disappearance.
>>>> Again this is a design requirement telling what should be done by a do=
main.
>>>> This is an interface or an assumption of use but not a Xen design req.
>>>=20
>>> I agree, will convert to Assumption of use on domain.
>>>=20
>>>=20
>>>>> +
>>>>> +Rationale:
>>>>> +
>>>>> +Comments:
>>>>> +
>>>>> +Covers:
>>>>> + - `XenProd~device_passthrough~1`
>>>>> +
>>>>> +Discover PCI devices from Xen
>>>>> +-----------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_discover_pci_devices_from_xen~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall discover PCI devices (enumerated by the firmware beforehan=
d) during
>>>>> +boot if the hardware domain is not present.
>>>> I am a bit wondering here why we would not want Xen to always do it if=
 we have
>>>> the code to do it in Xen anyway.
>>>=20
>>> Makes sense, will drop "if the hardware domain is not present".
>>>=20
>>>=20
>>>>> +
>>>>> +Rationale:
>>>>> +
>>>>> +Comments:
>>>>> +
>>>>> +Covers:
>>>>> + - `XenProd~device_passthrough~1`
>>>>> +
>>>>> +Assign PCI device to domain (with IOMMU)
>>>>> +----------------------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_assign_pci_device_with_iommu~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall assign a specified PCI device (always implied as DMA-capab=
le) to
>>>>> +a domain during its creation using passthrough (partial) device tree=
 on Arm64
>>>>> +and Hyperlaunch device tree on AMD-x86. The physical device to be as=
signed is
>>>>> +protected by the IOMMU.
>>>> This is a very long and complex requirement.
>>>> I would suggest to split it in 3:
>>>> - generic: Xen shall support assign PCI devices to domains.
>>>> - arm64 one: Xen shall assign PCI devices based on device tree (explai=
n how this is configured in dts)
>>>> - amd: xxxx based on hyperlaunch
>>>=20
>>> I agree, will split, but ...
>>>=20
>>>> - Xen shall use the IOMMU to enforce DMA operations done by a PCI devi=
ce assigned to a domain to be restricted to the memory of the given domain.
>>>=20
>>>=20
>>> ... does this need to be a separate 4th requirement here (and for the s=
imilar requirement for the platform device down the document) or this sente=
nce is meant to be added to all resulting generic/arm64/amd requirements?
>>>=20
>>> I would like to clarify, there are two groups of requirements to cover =
DMA-capable devices in this document:
>>> - for devices that are behind the IOMMU and IOMMU can be used for them,=
 those requirements description explicitly mention "device xxx is protected=
 by the IOMMU" in addition to "(with IOMMU)" in the subject.
>>> - for devices that are not behind the IOMMU or IOMMU cannot be used for=
 them, those requirements description explicitly mention "device xxx is not=
 protected by the IOMMU" in addition to "(without IOMMU)" in the subject.
>> I think you need to be more generic and any DMA engine that is not prote=
cted by an IOMMU shall not be assigned to a non trusted domain.
>> This is in fact a requirement on the integrator, Xen cannot do much abou=
t this.
>=20
> yes, I agree
>=20
>=20
>>>=20
>>>>> +
>>>>> +Rationale:
>>>>> +
>>>>> +Comments:
>>>>> +
>>>>> +Covers:
>>>>> + - `XenProd~device_passthrough~1`
>>>>> +
>>>>> +Deassign PCI device from domain (with IOMMU)
>>>>> +--------------------------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_deassign_pci_device_with_iommu~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall deassign a specified PCI device from a domain during its d=
estruction.
>>>>> +The physical device to be deassigned is protected by the IOMMU.
>>>> Remove second sentence or turn it into a req to say that the PCI devic=
e shall not be allowed to do DMA anymore somehow.
>>>=20
>>>=20
>>> I would like to clarify, the second sentence here is just to indicate w=
hat type of device (in the context of IOMMU involvement) the requirement is=
 talking about, not about special care for denying any DMA from it after de=
assigning.
>>>=20
>>> If you still think that we need a new requirement to explicitly highlig=
ht that, I will be ok to create, in that case, I assume, the platform devic=
e will want to gain the similar requirement. Please let me know your prefer=
ence.
>> As said in the mail to stefano, i think we should try to generalise more=
.
>> So i would say we should handle:
>> - register assignments
>> - DMA engine handling
>> - interrupt handling
>> A device is a just a logical construct which may or may not contain or u=
se several of those elements.
>=20
>=20
> I agree regarding DMA engine handling. As for register assignments and in=
terrupt handling I am not quite sure. I am afraid we will need to different=
iate between platform and PCI devices.

Once a PCI device has been detected it becomes some registers and interrupt=
s.
There might be some PCI ways to configure some stuff but appart from that i=
 do not see any difference with a platform device.
Do i miss something ?

>=20
>=20
>>>=20
>>>=20
>>>>> +
>>>>> +Rationale:
>>>>> +
>>>>> +Comments:
>>>>> +
>>>>> +Covers:
>>>>> + - `XenProd~device_passthrough~1`
>>>>> +
>>>>> +Forbid the same PCI device assignment to multiple domains
>>>>> +---------------------------------------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_forbid_same_pci_device_assignment~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall not assign the same PCI device to multiple domains by fail=
ing to
>>>>> +create a new domain if the device to be passed through is already as=
signed
>>>>> +to the existing domain. Also different PCI devices which share some =
resources
>>>>> +(interrupts, IOMMU connections) can be assigned only to the same dom=
ain.
>>>> Please split and simplify
>>>> - Xen shall assign a single device to a single domain
>>>> - Xen shall assign PCI devices sharing resources to the same domain.
>>>=20
>>> Good point, will split.
>>>=20
>>>=20
>>>>> +
>>>>> +Rationale:
>>>>> +
>>>>> +Comments:
>>>>> +
>>>>> +Covers:
>>>>> + - `XenProd~device_passthrough~1`
>>>>> +
>>>>> +Requirements for Arm64 only
>>>>> +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
>>>>> +
>>>>> +Assign interrupt-less platform device to domain
>>>>> +-----------------------------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_assign_interrupt_less_platform_device~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall assign a specified platform device that has only a MMIO re=
gion
>>>>> +(does not have any interrupts) to a domain during its creation using=
 passthrough
>>>>> +device tree.
>>>>> +The example of interrupt-less device is PWM or clock controller.
>>>> I am a bit puzzled by this req. Why making a specific case for interru=
pt less ?
>>>=20
>>>=20
>>> Those devices exist and can be assigned to a domain, they are configure=
d slightly differently in comparison with devices with interrupts ("xen,pat=
h" is not needed for the former), other code paths are executed in Xen.
>>>=20
>>> More technical details:
>>> The allowance of the platform device assignment which is not behind an =
IOMMU (for both non-DMA-capable and DMA-capable devices) is specified using=
 device tree property ("xen,force-assign-without-iommu") in the device node=
 described in the passthrough device tree. The said property also allows th=
e interrupt-less platform device assignment (a device that has only a MMIO =
region) without specifying the corresponding node in the host device via de=
vice tree property ("xen,path").
>> Please see upper.
>=20
> Yes, what I got from the text above is that we won't need a separate set =
of requirements for interrupt-less device, I will drop them. The same goes =
for "Assign/Deassign *non-DMA-capable* platform device to domain". Please l=
et me know if I got this wrong.


No sounds good.

>=20
>=20
> [snip]
>=20
>=20
>>>>> +
>>>>> +Assign DMA-capable platform device to domain (without IOMMU)
>>>>> +------------------------------------------------------------
>>>>> +
>>>>> +`XenSwdgn~passthrough_assign_dma_platform_device_without_iommu~1`
>>>>> +
>>>>> +Description:
>>>>> +Xen shall assign a specified DMA-capable platform device to a domain=
 during
>>>>> +its creation using passthrough device tree. The physical device to b=
e assigned
>>>>> +is not protected by the IOMMU.
>>>>> +The DMA-capable device assignment which is not behind an IOMMU is al=
lowed for
>>>>> +the direct mapped domains only. The direct mapped domain must be eit=
her safe or
>>>>> +additional security mechanisms for protecting against possible malic=
ious or
>>>>> +buggy DMA devices must be in place, e.g. Xilinx memory protection un=
it (XMPU)
>>>>> +and Xilinx peripheral protection unit (XPPU).
>>>> Please split in several reqs.
>>>=20
>>>=20
>>> I agree, will do. I feel it should be split into the following requirem=
ents:
>>> - Assign DMA-capable platform device to domain (without IOMMU)
>>> - Create direct mapped domain
>>> - Enable additional security mechanisms in direct mapped domain
>>>=20
>>> To be honest, I'm not quite sure whether it is worth creating the last =
requirement ...
>> I do not think the last one is needed here.
>> It could be an integrator guidance at best.
>=20
> ok, thanks for the clarification.

Cheers
Bertrand

>=20
>=20
>> Cheers
>> Bertrand
>>>=20
>>>=20
>>>> Stopping here my review for now
>>>=20
>>> Thanks for the review.
>>>=20
>>>=20
>>>> Cheers
>>>> Bertrand
>>>=20
>>> [snip]




From xen-devel-bounces@lists.xenproject.org Thu Oct 10 06:41:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 06:41:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815460.1229213 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1symrg-0000ha-Jc; Thu, 10 Oct 2024 06:41:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815460.1229213; Thu, 10 Oct 2024 06: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 1symrg-0000hT-Gb; Thu, 10 Oct 2024 06:41:36 +0000
Received: by outflank-mailman (input) for mailman id 815460;
 Thu, 10 Oct 2024 06:41: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 1symrf-0000hJ-4s; Thu, 10 Oct 2024 06:41: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 1symre-0004eQ-UN; Thu, 10 Oct 2024 06:41: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 1symre-0001wo-9m; Thu, 10 Oct 2024 06:41:34 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1symre-00078b-9H; Thu, 10 Oct 2024 06:41: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=/aFEowOpWuHRLfJO3VKg/9YeRo5k7DMu7vedQs0iLS8=; b=eRhpaZ27bwt9X53InZvofEIHG8
	n/nv7ot65dt2tXi0UY2ViUis5Qyq/X0vNAF41jwE9ejVcTXztLMS7pqTTV6CaE3dkkzomOmE2ejPS
	WT39iXroqh8qPEeZIe9SiVDvjAAUUY1HsI66wy8Wb0PDGDAlerWEAKafHZzOnUuha02Y=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188026-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-upstream-4.18-testing test] 188026: tolerable FAIL - PUSHED
X-Osstest-Failures:
    qemu-upstream-4.18-testing:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-upstream-4.18-testing:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=bdf719c4c535cf14ec4fe8e9cb7a798a5a73fb23
X-Osstest-Versions-That:
    qemuu=0df9387c8983e1b1e72d8c574356f572342c03e6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 06:41:34 +0000

flight 188026 qemu-upstream-4.18-testing real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188026/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 183557
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 183557
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 183557
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 183557
 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     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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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-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          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-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-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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:
 qemuu                bdf719c4c535cf14ec4fe8e9cb7a798a5a73fb23
baseline version:
 qemuu                0df9387c8983e1b1e72d8c574356f572342c03e6

Last test of basis   183557  2023-10-27 13:11:22 Z  348 days
Testing same since   188026  2024-10-09 10:11:40 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alexander Bulekov <alxndr@bu.edu>
  Alistair Francis <alistair.francis@wdc.com>
  Andrew Jones <andrew.jones@linux.dev>
  Ankit Kumar <ankit.kumar@samsung.com>
  Anthony PERARD <anthony.perard@citrix.com>
  BALATON Zoltan <balaton@eik.bme.hu>
  Bernhard Beschow <shentey@gmail.com>
  Claudio Fontana <cfontana@suse.de>
  Colton Lewis <coltonlewis@google.com>
  Conor Dooley <conor.dooley@microchip.com>
  Cédric Le Goater <clg@kaod.org>
  Daniel Henrique Barboza <danielhb413@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  David Hildenbrand <david@redhat.com>
  Dongli Zhang <dongli.zhang@oracle.com>
  Fabiano Rosas <farosas@suse.de>
  Guenter Roeck <linux@roeck-us.net>
  Hang Yu <francis_yuu@stu.pku.edu.cn>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Janosch Frank <frankja@linux.ibm.com>
  Jason Chien <jason.chien@sifive.com>
  John Snow <jsnow@redhat.com>
  Kevin Wolf <kwolf@redhat.com>
  Klaus Jensen <k.jensen@samsung.com>
  Leon Schuermann <leons@opentitan.org>
  LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
  Luca Bonissi <qemu@bonslack.org>
  Maksim Kostin <maksim.kostin@ispras.ru>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Markus Armbruster <armbru@redhat.com>
  Michael S. Tsirkin <mst@redhat.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Nathan Egge <negge@xiph.org>
  Nicholas Piggin <npiggin@gmail.com>
  Niklas Cassel <niklas.cassel@wdc.com>
  Peter Maydell <peter.maydell@linaro.org>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Song Gao <gaosong@loongson.cn>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Thomas Huth <thuth@redhat.com>
  Zhao Liu <zhao1.liu@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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/qemu-xen.git
   0df9387c89..bdf719c4c5  bdf719c4c535cf14ec4fe8e9cb7a798a5a73fb23 -> stable-4.18


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 06:58:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 06:58:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815544.1229511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syn7b-0002pr-2V; Thu, 10 Oct 2024 06:58:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815544.1229511; Thu, 10 Oct 2024 06:58: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 1syn7b-0002pk-00; Thu, 10 Oct 2024 06:58:03 +0000
Received: by outflank-mailman (input) for mailman id 815544;
 Thu, 10 Oct 2024 06:58: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syn7a-0002pe-8R
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 06:58:02 +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 fd14885b-86d4-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 08:58:01 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso92421966b.2
 for <xen-devel@lists.xenproject.org>; Wed, 09 Oct 2024 23:58:01 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc290sm42184466b.155.2024.10.09.23.57.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 09 Oct 2024 23:58:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd14885b-86d4-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728543480; x=1729148280; 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=3f1cs4vRMiAIR0Tyerecg8LrYpdr8hdkQ11FEYfW0sw=;
        b=SKfGC0q16vOfwl5dTYqPwacT4pgn2AuMp9U4G8eoAJOsnSjtnGm/odpjGZLSe4zp9y
         FROKdDZvKwfe8vEDoof/CETYNeW60TpUm3eclT0qX8vHoEfIjQyZZKPVLvQlOhuYDbF1
         18dPiMOMx89WzDIeNvrl+pf+dqzr/R7MDVhXM73hnietDKAmCbbRSAvvtEKdzCNB8Z8R
         GfNQ5Fy1zpED6HJI511ERuvDMv9BR7W9G1w+q4FjsDdj2JZtZ9Ljvxbq05tbX4BBLRnE
         NLjPIWHxCy+GxLxNyoehCjFGa3PXj8z4wm4bSKXE0rxylwVvQXfNgLknMvMJK7hRhfFi
         NCKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728543480; x=1729148280;
        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=3f1cs4vRMiAIR0Tyerecg8LrYpdr8hdkQ11FEYfW0sw=;
        b=wOP3Nb50lZraGYCWZB7wmAPdaad3UPbTizJ8xNYaSDVvTj2cwUtPBH4jn5VsX+VRLo
         40oIxvGYI4tipONW8uscB5pt/4BxTZ1AjFFIcBiKKog58x5Ceb/binMxl8M6T0uwjQ74
         7hkceqYoN+dFPbNzHDsdAPn58RtAJAgVBLL6JmNvqul327vRFeztYfWcRpwMB6XfLUbs
         uUcbrD0R5vxqd+/nsy/jBq7JcORhgG6BxfSCLfcyTseHCi/yQuQIdKw3cCB6L/uWeaJt
         bhIXwTTp7h06h3HG9Gz4S60d24/5FESJx33I898ffQYUVdnEv9vUyh2qwbXBGJR9rzcU
         x1Kg==
X-Forwarded-Encrypted: i=1; AJvYcCWoO+/2nne0z5XSTBI3wYeejKawN9AXxRn6yPqZXOwsvs/mKZEuJevCHpIm5GxOoVlXNlh1laSyeoM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxpaoRMe9L3u7KtRJ04rlD/o/GYygPKxuXhtkEpH4HsuzAUO8cB
	v14vs71VTdzc6DlWsNli7kpMS+wQrRU84O4U9AmQxLVsIdVaV2Ua/4PO8RHSqg==
X-Google-Smtp-Source: AGHT+IEFKwY2BDjwUt0kJvdbl6wMoBik8+q0V/TAGDkvOIHWQeOiCG+R1J/xS+HI1bKFiciSsCPTKw==
X-Received: by 2002:a17:907:8688:b0:a99:76a4:7052 with SMTP id a640c23a62f3a-a998d34db43mr463200366b.65.1728543480335;
        Wed, 09 Oct 2024 23:58:00 -0700 (PDT)
Message-ID: <28061203-6e40-473e-a231-291e6c62fba6@suse.com>
Date: Thu, 10 Oct 2024 08:57:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] x86/msi: fix locking for SR-IOV devices
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20240827035929.118003-1-stewart.hildebrand@amd.com>
 <0742fd21-d606-440a-a7fa-dd3bfccfa1c4@suse.com>
 <695c81b1-1cc0-40f2-ba41-8c96a461c668@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: <695c81b1-1cc0-40f2-ba41-8c96a461c668@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 21:44, Stewart Hildebrand wrote:
> On 8/28/24 06:36, Jan Beulich wrote:
>> On 27.08.2024 05:59, Stewart Hildebrand wrote:
>>> --- a/xen/drivers/passthrough/pci.c
>>> +++ b/xen/drivers/passthrough/pci.c
>>> @@ -341,6 +341,8 @@ static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn)
>>>  
>>>      list_add(&pdev->alldevs_list, &pseg->alldevs_list);
>>>  
>>> +    INIT_LIST_HEAD(&pdev->physfn.vf_list);
>>
>> There is a certain risk with doing such uniformly when the field is part
>> of a union. Yes, little initialization has happened up to here, but I'm
>> still concerned. (One of the reasons I don't like the struct list_head
>> instances to be split, despite your legitimate point regarding naming.)
>> At the very least this wants moving yet earlier in the function, before
>> the new struct is passed anywhere else.
> 
> Understood. I personally have a slight preference for keeping the entry
> and head names distinct, so I'll plan to move the initialization
> earlier. However, I could easily be convinced to un-split the struct
> list_head instances if that's your preference. Let me know.

I indicated before that this would be my preference, without meaning to
insist on this folding.

>>> +                list_for_each_entry_safe(vf_pdev, tmp, &pdev->physfn.vf_list,
>>> +                                         virtfn.entry)
>>> +                    ret = pci_remove_device(vf_pdev->sbdf.seg,
>>> +                                            vf_pdev->sbdf.bus,
>>> +                                            vf_pdev->sbdf.devfn) ?: ret;
>>
>> And if this fails, the VF will still remain orphaned. I think in the
>> model I had suggested no such risk would exist.
>>
>> Misra also isn't going to like the recursion here.
> 
> With the ASSERTs being addressed directly, there's no need to remove
> the VFs right away with the PF.
> 
> BTW, I don't think refusing a removal "request" would be a good idea.
> Dom0 isn't really requesting the device to be removed. Dom0 has already
> removed the device (e.g. in response to hot-unplug or SR-IOV disable),
> and is merely informing Xen of the removal.

Just to clarify: I don't mean returning an error here to indicate
"refusal". As you say, this is merely a notification. Yet I think it's
still legitimate to pass back an error. Whether the Dom0 kernel can
do anything useful with that error is a separate question.

> So during PF removal, I'll plan (for v5) to unlink the the VFs from the
> PF, and continue to rely on dom0 to inform Xen of PF and VF removal
> individually. By unlink, I mean set vf_pdev->virtfn.pf_pdev = NULL and
> remove the VFs from the list. Probably also set vf_pdev->broken = true.

As to the latter - yes. For the rest I guess I need to see the new code.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:02:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:02:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815551.1229523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synBP-0006qU-Jw; Thu, 10 Oct 2024 07:01:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815551.1229523; Thu, 10 Oct 2024 07: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 1synBP-0006qN-FD; Thu, 10 Oct 2024 07:01:59 +0000
Received: by outflank-mailman (input) for mailman id 815551;
 Thu, 10 Oct 2024 07:01: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1synBO-0006qH-38
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:01:58 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8935949a-86d5-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 09:01:56 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9944c4d5d4so85988866b.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:01:56 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7ec549csm44046766b.27.2024.10.10.00.01.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:01:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8935949a-86d5-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728543715; x=1729148515; 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=sZt+XJYSdwYln561BuqB+yeUg38/33FYKTH8R/LAnPQ=;
        b=EpPxdM7qeP9DzMY/4LRxWAqvjTMWri6umLapYNZUpfApkQou+fwDgUGzPjASVk0QOA
         J/UMoRpFwrw88nczSO1WEEkDCFk1gf+QZcJiicl5Qm/l6lUyPMXCu7GiHbL4ksqTOakA
         jvcn1kN1HkaNmpmJWAkJ5SIBoMinwapTrIbB+cP2m7uySmlS2dIevmIZEKgFlo66ltrT
         AKQsLQDs+ZJzvL89FcrOIuKb20GEpKdAFZA5JZm7iStFr1ZWrbCfWFy1be2ahRjLhWGO
         LWwfAaR1g9sZgZMpuJGWwyYfQSSZ0IRvcvKnk1NEVs9T9tEtLhIYWt3BHCbZ3Uh17ETt
         xzSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728543715; x=1729148515;
        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=sZt+XJYSdwYln561BuqB+yeUg38/33FYKTH8R/LAnPQ=;
        b=qjshJ2q4qgZgXkKgJh/LIbDFyj88n9Ekt2D+N9dskjlstJsKlvVzAI8RRZTU+MOhYN
         eEZ5bBCrOX8Pa0rke/xuypcE9EE62+4f6JHgYO0ztUzgmIPMQpuRgb7geA0+wrSglb0t
         N7Lnlz4THkOAQ774lV+JYtmZ6rNd0xEUPWqMaR7+e9LnXJUEVQqDbGpinrd46gbF7FuW
         SOJx42R8U58CkeFFSPPhglkiZIKqDCojBdMZwW1nOqoYQs9FfOKQVw2bEX5Wv4hH1qa8
         swqLGUBqguw9chkoEnjeQb+LRNDMEo4M4vKvuILhbMUP4F/sSjGP1fOFyBcXuu4LrFte
         KIyQ==
X-Forwarded-Encrypted: i=1; AJvYcCVyqxaTlXc5ubO8waCvl0cNkgYrVttUDa6QevmzYmy8rBIF8G2RmEs+L/K7mVIgfKUs4GFiw7hvTjQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxFmv4yBjf/AOs3DnZuolW9NcWTSWmjSHnzIPDTXH2dYYg60IMa
	MEL4o7Yevz4qQjeCZ8lhw1DFFv1/eTIF+Vg/ocWIygfiocHeQBrxWyZz7AnjZA==
X-Google-Smtp-Source: AGHT+IFaW38MP0jnIfnVt55M9aG5wz4Bk+QoZFc2vIZ6r2o4BcPZnjYn6x2Qoefq32VwnIcR6ZTwBA==
X-Received: by 2002:a17:907:60d6:b0:a99:4982:da46 with SMTP id a640c23a62f3a-a998d3299a8mr377605666b.63.1728543715487;
        Thu, 10 Oct 2024 00:01:55 -0700 (PDT)
Message-ID: <756dc3d5-48fd-429f-a5eb-6cb8e99dfe6f@suse.com>
Date: Thu, 10 Oct 2024 09:01:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
 <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.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: <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10.10.2024 07:39, Jürgen Groß wrote:
> On 10.10.24 00:46, Stefano Stabellini wrote:
>> On Wed, 9 Oct 2024, Jan Beulich wrote:
>>> On 09.10.2024 08:20, Jiqian Chen wrote:
>>>> Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
>>>> adds a weak reverse dependency to the config XEN_PRIVCMD definition, its
>>>> purpose is to pass the combination of compilation that CONFIG_XEN_PRIVCMD=y
>>>> and CONFIG_XEN_PCIDEV_BACKEND=m, because in that combination, xen-pciback
>>>> is compiled as a module but xen-privcmd is built-in, so xen-privcmd can't
>>>> find the implementation of pcistub_get_gsi_from_sbdf.
>>>>
>>>> But that dependency causes xen-privcmd can't be loaded on domU, because
>>>> dependent xen-pciback is always not be loaded successfully on domU.
>>>>
>>>> To solve above problem and cover original commit's requirement, just remove
>>>> that dependency, because the code "IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND)"
>>>> of original commit is enough to meet the requirement.
>>>>
>>>> Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
>>>> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
>>>
>>> This lacks a Reported-by:.
>>>
>>>> --- a/drivers/xen/Kconfig
>>>> +++ b/drivers/xen/Kconfig
>>>> @@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
>>>>   config XEN_PRIVCMD
>>>>   	tristate "Xen hypercall passthrough driver"
>>>>   	depends on XEN
>>>> -	imply XEN_PCIDEV_BACKEND
>>>>   	default m
>>>>   	help
>>>>   	  The hypercall passthrough driver allows privileged user programs to
>>>
>>> The report wasn't about a build problem, but a runtime one. Removing the
>>> dependency here doesn't change anything in the dependency of xen-privcmd
>>> on xen-pciback, as the use of pcistub_get_gsi_from_sbdf() continues to
>>> exist.
>>>
>>> Consider the case of XEN_PCIDEV_BACKEND=m and XEN_PRIVCMD=m, which
>>> I guess is what Marek is using in his config. Both drivers are available
>>> in such a configuration, yet loading of xen-privcmd then requires to
>>> load xen-pciback first. And that latter load attempt will fail in a DomU.
>>> The two drivers simply may not have any dependency in either direction.
>>
>> The idea is that there should be no hard dependency on
>> pcistub_get_gsi_from_sbdf(). If it is available, the service will be
>> used, otherwise an error will be reported.
>>
>> The problem is that IS_REACHABLE is a compile-time check. What we need
>> is a runtime check instead. Maybe symbol_get or try_module_get ?
> 
> This is a rather clumsy solution IMO.
> 
> I'm seeing the following solutions:
> 
> 1. Don't fail to to load the pciback driver in a DomU, but only disable
>     any functionality.
> 
> 2. Move the drivers/xen/xen-pciback/pci_stub.c functionality in a module
>     of its own, allowing the privcmd driver to be loaded without needing
>     the rest of pciback.
> 
> 3. Add a hook to e.g. drivers/xen/pci.c instead for calling of
>     pcistub_get_gsi_from_sbdf() directly. pciback could register the real
>     call address. If pciback isn't loaded, the hook can return an error.
>     This would remove the explicit dependency of privcmd on pciback.
> 
> I'd prefer the 3rd variant.

Same here - order of preference backwards in the set presented above.
In the meantime the original change may simply need reverting?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:07:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:07:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815557.1229532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synGU-0000oO-4v; Thu, 10 Oct 2024 07:07:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815557.1229532; Thu, 10 Oct 2024 07:07: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 1synGU-0000oH-1u; Thu, 10 Oct 2024 07:07:14 +0000
Received: by outflank-mailman (input) for mailman id 815557;
 Thu, 10 Oct 2024 07:07: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=1fZv=RG=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1synGS-0000ld-BG
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:07:12 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2415::61b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 443e63c1-86d6-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 09:07:11 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by PH7PR12MB7427.namprd12.prod.outlook.com (2603:10b6:510:202::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 07:07:06 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024
 07:07: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: 443e63c1-86d6-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=D0m1s0mz47W8FANaA1SXK/9ePxiWcWRRBRSJG5nOM6YIeH2f3e+dg94unp48APYA/U0FRnqOMEZmxJgOnhW8s8WKmf1pPlR6X1k1kifQoVP5DNcGXmvqzVsYIw0TiA30Y6SXRznoi1GbTbNvfi8KhPuDwRNbyWA9j1RdFqIMzAqAqgXGTceK5LXdc7nfuIZ0YRrIrHo9X5GbU4gIPrha6+GD4Pk6+CcUQpv1SewYqosXywQF0RG8Vbo0ScKvuFpWxDjq9qNzqPYf69smTeHlySnb03vdwIMnl0cOn2z7tihnIMgouVhFJzc0vPts6j4YfCRH37AezSAlWz4aY522Dw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=OUhvMB09tbqA8NK5v8XB9Ge8pIp5aMRmHKaj4oI9vw4=;
 b=o/xkS9g3vS9JW7SrszhZehjluRRxk8iL5G1c73mXKAzdhMIOGlN3Alnjdf7jgGFLR9wR4IN2cI0tAUaR8GRAgRmCL8vnaBeClpK0eHKWxhiugOuK181u3mdvYssCI5+Vrgu1WUis6AnFC8BnO7am3LWIgMoLLbbIGXI590TJdao6EU/rrhFBxymoHZE768n/zLfir8GlMAvqCQnj6DEfF8IDZdEzrRz08z6gnfCQwDdgccOvNrh/WDCN2WIPy5H7G3KnSYFoVDyEK2sB/pG3XNl1eYDQ9QB/SpkmC+5RrB92cAAGlHuarYK9uxIvB+ZH+B1A0c9UtsWKCQT9+5w8jw==
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=OUhvMB09tbqA8NK5v8XB9Ge8pIp5aMRmHKaj4oI9vw4=;
 b=Rzo4iDUtEm6xtN6HY77lx0pJT7YUZH6jrtpFnTHMI9jhhtLGi7tPw74rtgc1DnCgjK2n+Q+kYl9vIMJlUYmevIZXzrWNUVGiINGknrYmR8pU5IOW4g/wE7gxef0K4K399u0qxq7ZehQ0LRWlEdgcHoIsPBb4cycYn56Aow1uXdU=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Jan Beulich
	<jbeulich@suse.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Oleksandr
 Tyshchenko <oleksandr_tyshchenko@epam.com>, Marek Marczykowski
	<marmarek@invisiblethingslab.com>
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
Thread-Topic: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
Thread-Index: AQHbGhNYcN0w2cT3Gkyq1+R+KBCtNrJ9/yUAgAEHAICAAHM/AIAAnieA
Date: Thu, 10 Oct 2024 07:07:06 +0000
Message-ID:
 <BL1PR12MB5849650F8CB4606143C403F1E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
 <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
In-Reply-To: <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8026.020)
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_|PH7PR12MB7427:EE_
x-ms-office365-filtering-correlation-id: 1a8552ee-9ec2-41ad-ce18-08dce8fa2653
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?OERpNGFiUWYvWTN2aEVRL1R1dVRKQmdReXV6MGRuRTN0b0JMSzA5N2Z2ckM5?=
 =?utf-8?B?NG1EZXNtWGROWmh6SGRoR0Vqd2N5VitIMTg3RVNxTkdHOEphak1HTDdiRW9S?=
 =?utf-8?B?UHRwOHAxQ29DRUx0Y043a1NZT01NNTcxb2V0YlEwV0F6UkZ0OVVHcVdwRFJa?=
 =?utf-8?B?MmRNYVRqalZFbzd6L2ZPOGVuUnJrTDJkT3M4NXpDb09URG95U2VncTE0VC9v?=
 =?utf-8?B?M09nM2NaTWN5Vk8wL2hYc1ZFWFQxVEtXRzFWVXBldWwvMVFPL2pPTTQ1N1Bs?=
 =?utf-8?B?SVo2N0tXbHJiVXdiQlN2K0VMbnUrK3hPeWlpZFI1UG1Jb2xaYlB2VzN3TWdX?=
 =?utf-8?B?eEtpL3Q2Zm01MDVkNTdjWmtMRVFyL05DMWxFSDNBampoOE92M1dLa0duQTdk?=
 =?utf-8?B?SkxLQjNiN2FLYkV5bXV5cjR1QlN3aGZ6dm1CKzE0eTE5dlFQSkVxRkE3YWNT?=
 =?utf-8?B?UUc1dE1IdXJQd1VObGF2Ukk2T3UzOUdkdk5Ec1FxNnZoZEw4NTBRRG4yZWtx?=
 =?utf-8?B?SlkxcXlTZVdHeSt0ZjBBUEdYRlFaS2tQeWc1UmNRZzVTTTMyNGJ0SHVTSnVK?=
 =?utf-8?B?ckk2MkNTS29ENW5PL3I1NlJIVFBxVFZnOW1paUQ4OVkrR0pFZnVjWGtxNk55?=
 =?utf-8?B?VnhhUHVXZlVsKzk5b0xNRSsrK0YxM1IzcE5QUTlibnNkb3lSRm1hbWM2dFpS?=
 =?utf-8?B?Q3gzaCtTQlArQTZMRHU5UVZjRW90eDVnengwSGZZR2hSdGhhWXhsbHVBdzBM?=
 =?utf-8?B?YWpSUXJvV1FpUExjU1pxL01DUEV0NitDNVNxb2gvQ0pjMEtMS1FIMFQzcklZ?=
 =?utf-8?B?WlVEanp0RGJ3SmtldjJ2OXZ6QnFKNlBHYUZpZTdxd2pQZ05OcElFT1lhU3JK?=
 =?utf-8?B?eHhDT1NyTWNWL2FCOWpBWElYTHk0Z2p4U1E4U3lROVpmSjhnM1RneFA2emEz?=
 =?utf-8?B?ellzT2JTVDB4ajNzVlNleFl6Z3R2RzJKRTBjbjljdGxzanFWZCtsMk1iUVlF?=
 =?utf-8?B?U1VjTWMyaHI5emZWaytWdkVQNE90a1gzVnRLeVZNNGs2N2xUK0I3NU14VnZX?=
 =?utf-8?B?aWZHMmJhWlZTTnpiemtrZWZKbWR6VnlUdHZlN0FPdS81ZndiTlR3RjBWMDBu?=
 =?utf-8?B?ekFvNkNZRGJUaFNZQ1NBMUgvK0RYdklXWUNpM1pEN090RkVEWnpQYmJjREZx?=
 =?utf-8?B?d1p3SVFwRnVndW4vOEwyMmRnaWdkQTl3dm1rQ2NFZXZ4cHFqY0cycHRBbHk3?=
 =?utf-8?B?SG9iSCt6MXAvajhqSGhQQWhhbk1pSTB2TzdEMThFNTltWk1UeWZHSmdmMnRh?=
 =?utf-8?B?WEdqQXlNR01tNU9YY2lOTC9acElGTVh0Qng3TG1yS2N6YkhaYzBZVnVkZzdV?=
 =?utf-8?B?bU9ZLzczMGhSSkpPVHo0TTh1Nk1kbUVEdnRrUElkU05kMnAvV2N6UHlxdDgz?=
 =?utf-8?B?aXdlWUhKL1k0V3hSanI4bEMzeHo4ekhJakJidjdoanpnczU2UlNzY1Jid3c3?=
 =?utf-8?B?akJjZVYvSERMYTV5a2grbFlmaStqWlRmVW1XTlZUMGxKbThsMjVjZC96SEsx?=
 =?utf-8?B?WjFDVjYwSmtseEtWczh4bDRKOU5PdTBxeHg3dG92S2svZytMbUNGejJ4cGRu?=
 =?utf-8?B?dUE2MEl0UHpGWVFxTXAxTkQvc0VLU1JMLzBqbFNpa1lnNWRMRGsvc05ZRGY5?=
 =?utf-8?B?M1djODVzWTgycVRkSGNtVGJ5YVBzclhicEVBU0dJMDlZTWFta3k0U2t6c2E4?=
 =?utf-8?B?R3NicmpHcDVLTEJpMXcvU0lXQm9ZdGEwNHdSSUtvczEyY0NYWkJxUW9FK09F?=
 =?utf-8?B?UDVNOVl4T3FJMGpkV1JaUT09?=
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:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?QmFsRFNuWGwrb3JnVlM0SzVGeFdYWDhhcTlNenREc1FIWWJrd2M4Ump6anlr?=
 =?utf-8?B?WWxsRGtFLzJZZFUrcGY3YmNhK1ZvRTIwbzRwS2FDWkhTd3R4N1VlZ1R1ME0x?=
 =?utf-8?B?cW81SmJIRGhROUMzSFlhdVZmaEFKMkx3blZFemNSV21TWXVxeUFCMC9YNE1R?=
 =?utf-8?B?MjI5dkZabUU4VU0rUCtnZ2lnY3F1OGZYTmdvUHB0bEs0SVFBUTVLVnN2YmFJ?=
 =?utf-8?B?aU9ySzNuaDJjYyt6QVo0TGhpdGZ0UXlmUXdvam1pK00zREJmd3k1RnlOSlJ1?=
 =?utf-8?B?b0paVEo0NVNuRnB0MjIyT082S0d4Uy9qSWVyYzVNQjBBdFo3aVFIbmZ3VXBF?=
 =?utf-8?B?ZjYvaGxCcXB0cEdmMkp0cktUYjQwWFJYeWFuUXpXdHdmU2xFdUFaYW5DK2Fh?=
 =?utf-8?B?RnBjREwxN1dIWFcwenl5dGxicGV2N2NEZEJGQlJ1MDIrRG1jcmFSU2YyUmhy?=
 =?utf-8?B?K3h2aDJRRm5qRzUrMGdVZ24vRnZrd3NXUEJ6VXl2MXBOM3pCL3V5akY4U0dY?=
 =?utf-8?B?Z0R0UHZNQVhRbG16YWwwN3I5WHN0OWxvYytuYjdzZnFiYnhaZGhrT3laaDFJ?=
 =?utf-8?B?eVFIaVlFOUV4Zk9vaTFzZjk4dVQ0OUpQVk1Ob2RXL2t5OW1wS1c4MFJTS28w?=
 =?utf-8?B?Z0MveFlkd29wQUdIZHh6TWpKekZUNUFKZVVYVWRpRUp4UlNuU2lDWXF3QTBM?=
 =?utf-8?B?L2RGV0k1Mk9pb0NNNFhFcmdOekZzMDkvNXFMT3NkMmpRTHFiSnp4UEhqNVdE?=
 =?utf-8?B?RGIxL1Y2c1l6Mk5sZjFKYkpvWmdSZWZPY1RwYmQvWXVMN3J2a25oYW9FeFRi?=
 =?utf-8?B?NDFNUTVqdXQ0ajZ2aCtuNzE0UXUwa1BETEVnOXJWamNOdkcrUlZOWlc4a002?=
 =?utf-8?B?UkNiaFNRemFuRmhUSVpPb3d4dFRVRlQzMitxMU8rcTJteDIzd2dSZU1QMVBW?=
 =?utf-8?B?YUlBL2tpRHhETjRxa0xRMmkyaUJEOHdsYkhhcE94cEdFR2haMU5KbTNLbmtG?=
 =?utf-8?B?QkU4YThna2s0QTFvbWNSa1NxcXFIQlN4Mnp5QW5jU29QNGJlTE5waGlrNTBr?=
 =?utf-8?B?QlMrV2tRK2w1cWg0ZTFLZ0hsVUNyamJBUnRPTm5McnY0L3VpMGl4Y3BnSTBF?=
 =?utf-8?B?SENMVTNmR0xJbVAvZmRScmU5WFdLY29mZDZZcnRxOUxLVk9PUHlsNkFzQUVC?=
 =?utf-8?B?REtmcUpqQkZjQjdzSlVlSWNrNGtVV3Z2ZEhEdm9KUlhsOFRBQThBQXFsV3g1?=
 =?utf-8?B?ZlJLOVQwWmp2R2ExcHhMU0pTSUZ1Z1A4TTJzYkZqbUI3YUNnQ1Fzb3JNaFI2?=
 =?utf-8?B?OThWVEdzWDhVWnFIeFc4Ly9Ba2l0RWpOQ0xaYjh5eWpoWmxMSFB0dVAwMGRs?=
 =?utf-8?B?K1dSYkxoRUh3TURPMjdLR0xUSkxFSVRmSk03N21qNStIREpvU2kxdlVYc2NO?=
 =?utf-8?B?MXN1TnBsQWlmWjEvWkRwMlNpMEoxb3lNOEdyS1ZjMWdTMTdwQkQzRWhzOXBV?=
 =?utf-8?B?OXBDUzM1TG9iaGRIZzBURE9xV1dzMFV6MlFrWXlYbU5hNmZKVU5FZUZBQklp?=
 =?utf-8?B?c25yYlNyUE5URTJmQ1hnWlI2TDR1R0JUYzZnRkRDbnlYMHFoSytsN0ZCYmdt?=
 =?utf-8?B?R2dRYkFPUWlGRmJnN3Z0U1ZaRFBUa2xaY3NFRHRTTks0T1luTnZ3MExFOXlP?=
 =?utf-8?B?RWxTekYwb2ltMVZqRkNjbzJBeDF3em5SZmhabEV3cW16czh4WVhhSnRrQlNQ?=
 =?utf-8?B?L1lHdEdSM0Q1L0RPVyt4R2c3RzFwb2VKZGpCWmQzVVhLZlhrQ0p2Mjl6c21Q?=
 =?utf-8?B?SkFvd3lQVVRjUzBJZWFwZ21HZ2txaHhiazBMdUgrRUR1QzY4ZmJhQlVaWG9N?=
 =?utf-8?B?T0RRclBmWGIrZ2UxeGIycXBNZy9RTDZyYU9mSzdVWHFDdlljMmV5bVVtOFRC?=
 =?utf-8?B?YWlhQmx5WkdwRkM0NkZBRUNnU2swSXd4cndvUUFIY3RqZDUyMW1HVXp5eG5w?=
 =?utf-8?B?MHJkRURHSUZlVDlnSkdNdG5xTkxtYnRKWnFrMEZ5K1FvdEJjZ1BmMllqZ25L?=
 =?utf-8?B?QWUyb2xnbE5sdTdYOU9oMnNlUW0ydjVIMGZpMTRqQmhUeGUzRUxxc0cvbXBH?=
 =?utf-8?Q?AJ+M=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <676BF40FD86418499E6284463AED58D7@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: 1a8552ee-9ec2-41ad-ce18-08dce8fa2653
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2024 07:07:06.2068
 (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: mLKaMDX2Akr7wkBudlSfchTlhczg+N3xZdaHLggZkcg9GwhKlQoHYF69rHUMNLFdT0IS0MAg6SMzBlBZ5G6Pcw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7427

T24gMjAyNC8xMC8xMCAxMzozOSwgSsO8cmdlbiBHcm/DnyB3cm90ZToNCj4gT24gMTAuMTAuMjQg
MDA6NDYsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToNCj4+IE9uIFdlZCwgOSBPY3QgMjAyNCwg
SmFuIEJldWxpY2ggd3JvdGU6DQo+Pj4gT24gMDkuMTAuMjAyNCAwODoyMCwgSmlxaWFuIENoZW4g
d3JvdGU6DQo+Pj4+IENvbW1pdCAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5ldyBz
eXNjYWxsIHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+PiBhZGRzIGEgd2VhayByZXZlcnNlIGRl
cGVuZGVuY3kgdG8gdGhlIGNvbmZpZyBYRU5fUFJJVkNNRCBkZWZpbml0aW9uLCBpdHMNCj4+Pj4g
cHVycG9zZSBpcyB0byBwYXNzIHRoZSBjb21iaW5hdGlvbiBvZiBjb21waWxhdGlvbiB0aGF0IENP
TkZJR19YRU5fUFJJVkNNRD15DQo+Pj4+IGFuZCBDT05GSUdfWEVOX1BDSURFVl9CQUNLRU5EPW0s
IGJlY2F1c2UgaW4gdGhhdCBjb21iaW5hdGlvbiwgeGVuLXBjaWJhY2sNCj4+Pj4gaXMgY29tcGls
ZWQgYXMgYSBtb2R1bGUgYnV0IHhlbi1wcml2Y21kIGlzIGJ1aWx0LWluLCBzbyB4ZW4tcHJpdmNt
ZCBjYW4ndA0KPj4+PiBmaW5kIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBwY2lzdHViX2dldF9nc2lf
ZnJvbV9zYmRmLg0KPj4+Pg0KPj4+PiBCdXQgdGhhdCBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4tcHJp
dmNtZCBjYW4ndCBiZSBsb2FkZWQgb24gZG9tVSwgYmVjYXVzZQ0KPj4+PiBkZXBlbmRlbnQgeGVu
LXBjaWJhY2sgaXMgYWx3YXlzIG5vdCBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9uIGRvbVUuDQo+
Pj4+DQo+Pj4+IFRvIHNvbHZlIGFib3ZlIHByb2JsZW0gYW5kIGNvdmVyIG9yaWdpbmFsIGNvbW1p
dCdzIHJlcXVpcmVtZW50LCBqdXN0IHJlbW92ZQ0KPj4+PiB0aGF0IGRlcGVuZGVuY3ksIGJlY2F1
c2UgdGhlIGNvZGUgIklTX1JFQUNIQUJMRShDT05GSUdfWEVOX1BDSURFVl9CQUNLRU5EKSINCj4+
Pj4gb2Ygb3JpZ2luYWwgY29tbWl0IGlzIGVub3VnaCB0byBtZWV0IHRoZSByZXF1aXJlbWVudC4N
Cj4+Pj4NCj4+Pj4gRml4ZXM6IDJmYWU2YmI3YmUzMiAoInhlbi9wcml2Y21kOiBBZGQgbmV3IHN5
c2NhbGwgdG8gZ2V0IGdzaSBmcm9tIGRldiIpDQo+Pj4+IFNpZ25lZC1vZmYtYnk6IEppcWlhbiBD
aGVuIDxKaXFpYW4uQ2hlbkBhbWQuY29tPg0KPj4+DQo+Pj4gVGhpcyBsYWNrcyBhIFJlcG9ydGVk
LWJ5Oi4NCj4+Pg0KPj4+PiAtLS0gYS9kcml2ZXJzL3hlbi9LY29uZmlnDQo+Pj4+ICsrKyBiL2Ry
aXZlcnMveGVuL0tjb25maWcNCj4+Pj4gQEAgLTI2MSw3ICsyNjEsNiBAQCBjb25maWcgWEVOX1ND
U0lfQkFDS0VORA0KPj4+PiDCoCBjb25maWcgWEVOX1BSSVZDTUQNCj4+Pj4gwqDCoMKgwqDCoCB0
cmlzdGF0ZSAiWGVuIGh5cGVyY2FsbCBwYXNzdGhyb3VnaCBkcml2ZXIiDQo+Pj4+IMKgwqDCoMKg
wqAgZGVwZW5kcyBvbiBYRU4NCj4+Pj4gLcKgwqDCoCBpbXBseSBYRU5fUENJREVWX0JBQ0tFTkQN
Cj4+Pj4gwqDCoMKgwqDCoCBkZWZhdWx0IG0NCj4+Pj4gwqDCoMKgwqDCoCBoZWxwDQo+Pj4+IMKg
wqDCoMKgwqDCoMKgIFRoZSBoeXBlcmNhbGwgcGFzc3Rocm91Z2ggZHJpdmVyIGFsbG93cyBwcml2
aWxlZ2VkIHVzZXIgcHJvZ3JhbXMgdG8NCj4+Pg0KPj4+IFRoZSByZXBvcnQgd2Fzbid0IGFib3V0
IGEgYnVpbGQgcHJvYmxlbSwgYnV0IGEgcnVudGltZSBvbmUuIFJlbW92aW5nIHRoZQ0KPj4+IGRl
cGVuZGVuY3kgaGVyZSBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZyBpbiB0aGUgZGVwZW5kZW5jeSBv
ZiB4ZW4tcHJpdmNtZA0KPj4+IG9uIHhlbi1wY2liYWNrLCBhcyB0aGUgdXNlIG9mIHBjaXN0dWJf
Z2V0X2dzaV9mcm9tX3NiZGYoKSBjb250aW51ZXMgdG8NCj4+PiBleGlzdC4NCj4+Pg0KPj4+IENv
bnNpZGVyIHRoZSBjYXNlIG9mIFhFTl9QQ0lERVZfQkFDS0VORD1tIGFuZCBYRU5fUFJJVkNNRD1t
LCB3aGljaA0KPj4+IEkgZ3Vlc3MgaXMgd2hhdCBNYXJlayBpcyB1c2luZyBpbiBoaXMgY29uZmln
LiBCb3RoIGRyaXZlcnMgYXJlIGF2YWlsYWJsZQ0KPj4+IGluIHN1Y2ggYSBjb25maWd1cmF0aW9u
LCB5ZXQgbG9hZGluZyBvZiB4ZW4tcHJpdmNtZCB0aGVuIHJlcXVpcmVzIHRvDQo+Pj4gbG9hZCB4
ZW4tcGNpYmFjayBmaXJzdC4gQW5kIHRoYXQgbGF0dGVyIGxvYWQgYXR0ZW1wdCB3aWxsIGZhaWwg
aW4gYSBEb21VLg0KPj4+IFRoZSB0d28gZHJpdmVycyBzaW1wbHkgbWF5IG5vdCBoYXZlIGFueSBk
ZXBlbmRlbmN5IGluIGVpdGhlciBkaXJlY3Rpb24uDQo+Pg0KPj4gVGhlIGlkZWEgaXMgdGhhdCB0
aGVyZSBzaG91bGQgYmUgbm8gaGFyZCBkZXBlbmRlbmN5IG9uDQo+PiBwY2lzdHViX2dldF9nc2lf
ZnJvbV9zYmRmKCkuIElmIGl0IGlzIGF2YWlsYWJsZSwgdGhlIHNlcnZpY2Ugd2lsbCBiZQ0KPj4g
dXNlZCwgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuDQo+Pg0KPj4gVGhlIHBy
b2JsZW0gaXMgdGhhdCBJU19SRUFDSEFCTEUgaXMgYSBjb21waWxlLXRpbWUgY2hlY2suIFdoYXQg
d2UgbmVlZA0KPj4gaXMgYSBydW50aW1lIGNoZWNrIGluc3RlYWQuIE1heWJlIHN5bWJvbF9nZXQg
b3IgdHJ5X21vZHVsZV9nZXQgPw0KPiANCj4gVGhpcyBpcyBhIHJhdGhlciBjbHVtc3kgc29sdXRp
b24gSU1PLg0KPiANCj4gSSdtIHNlZWluZyB0aGUgZm9sbG93aW5nIHNvbHV0aW9uczoNCj4gDQo+
IDEuIERvbid0IGZhaWwgdG8gdG8gbG9hZCB0aGUgcGNpYmFjayBkcml2ZXIgaW4gYSBEb21VLCBi
dXQgb25seSBkaXNhYmxlDQo+IMKgwqAgYW55IGZ1bmN0aW9uYWxpdHkuDQo+IA0KPiAyLiBNb3Zl
IHRoZSBkcml2ZXJzL3hlbi94ZW4tcGNpYmFjay9wY2lfc3R1Yi5jIGZ1bmN0aW9uYWxpdHkgaW4g
YSBtb2R1bGUNCj4gwqDCoCBvZiBpdHMgb3duLCBhbGxvd2luZyB0aGUgcHJpdmNtZCBkcml2ZXIg
dG8gYmUgbG9hZGVkIHdpdGhvdXQgbmVlZGluZw0KPiDCoMKgIHRoZSByZXN0IG9mIHBjaWJhY2su
DQo+IA0KPiAzLiBBZGQgYSBob29rIHRvIGUuZy4gZHJpdmVycy94ZW4vcGNpLmMgaW5zdGVhZCBm
b3IgY2FsbGluZyBvZg0KPiDCoMKgIHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYoKSBkaXJlY3Rs
eS4gcGNpYmFjayBjb3VsZCByZWdpc3RlciB0aGUgcmVhbA0KPiDCoMKgIGNhbGwgYWRkcmVzcy4g
SWYgcGNpYmFjayBpc24ndCBsb2FkZWQsIHRoZSBob29rIGNhbiByZXR1cm4gYW4gZXJyb3IuDQo+
IMKgwqAgVGhpcyB3b3VsZCByZW1vdmUgdGhlIGV4cGxpY2l0IGRlcGVuZGVuY3kgb2YgcHJpdmNt
ZCBvbiBwY2liYWNrLg0KPiANCj4gSSdkIHByZWZlciB0aGUgM3JkIHZhcmlhbnQuDQpUaGFua3Ms
IEkgd2lsbCBzZW5kIGNoYW5nZXMgaW4gdjIgc29vbi4NCkFuZCBJIHByZWZlciB0byBhZGQgdGhl
IGhvb2sgaW4gZHJpdmVycy94ZW4vYWNwaS5jDQoNCj4gDQo+IA0KPiBKdWVyZ2VuDQo+IA0KDQot
LSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVuLg0K


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:18:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:18:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815569.1229541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synR8-0006V9-5s; Thu, 10 Oct 2024 07:18:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815569.1229541; Thu, 10 Oct 2024 07: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 1synR8-0006V2-3I; Thu, 10 Oct 2024 07:18:14 +0000
Received: by outflank-mailman (input) for mailman id 815569;
 Thu, 10 Oct 2024 07:18: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1synR6-0006PO-4k
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:18:12 +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 cda22cd1-86d7-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 09:18:09 +0200 (CEST)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-37d375ecc5eso360691f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:18:09 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b79f9c1sm689586f8f.68.2024.10.10.00.18.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:18:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cda22cd1-86d7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728544689; x=1729149489; darn=lists.xenproject.org;
        h=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=cE1FtMmpoWPgu9bWFUiFF9jZ+S1aOqWKKWP0qaAdbg4=;
        b=PjtU4uRtgdoOVFmCRCxmGDGGMflJbEVjQ0eqXpFI19dBeEj/I6Cb7mgOWvf6riyPBS
         CuISeNfNl74DYfnJ3n2Eylz8RuHZ1OF2xfy94eFgjmjxoEVNeJk/FrdPX7W3ftquZvG2
         oSEicFDa40KQ3vUDuX20gxzmBb4GW/0UAylQ5lPl4euBQpB4j9DqVnAb/tdrzBR4rQQG
         OpwSrv6nCaMavsNRH9acPYhkiw7ub/qtOnE3bqLGaDe8U/C3alXb5rFi4lD01ZuaFxVI
         z7sFEHEBTViNScN2WkhgPtxn9V+mzkWU5+0MlVpyVg7d4APkHnhmugeC6+SaRKj1WbQ6
         nW6w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728544689; x=1729149489;
        h=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=cE1FtMmpoWPgu9bWFUiFF9jZ+S1aOqWKKWP0qaAdbg4=;
        b=veFwxwWrI41975/aXdCRt3jaJnI6ZHGmhklicMu2vAjkR7fBSanLmFcAw8Epip/PVI
         fHJB764OPnOEpaiWi6CC95c/BFGSRu9IduY4QSTN7nNzln8O9H5CBgQFCUGf8VO68wrw
         2VUwVFIzm7sz0FAW1WOuTAQEyVaZBuaSOxIXatakQM/+neA0LwtIEJ1gAzy/7k9jzVDE
         QcPkWXWET0kkFYSpyUiKkFs0mHwfz8hFunSWkwnVHxlmGkQeziB+abopNTUQXqNTIcU9
         m43mGmjDPlmOJn0Em8AGVXminYABoS2KOL3qz0Vzt5+CN4FPrsenDhmUFIDv2psZrOxx
         sKVA==
X-Forwarded-Encrypted: i=1; AJvYcCULdF0SlkVZ9syBrM0foq82qDYb9i0bzCYudE6hEX5pc7GUCwMYpB7h0LKDgN8Eq5dlEzjCftb+Zfs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyywzkTQCGDXfgkbEemQ4slJUdJcPpcU9FwXUhh4aVlB6LbkeNu
	jBb7ftr3dVJW+v5kgRMdtmiZlXYXFIy8cHwFUmV5OMWaEI/1BgKUU4X9c5gT3T0=
X-Google-Smtp-Source: AGHT+IGa2z//qImP0OaYFgEKlinENIk9TDYQVRIsLBtgSj/7t0rxGWIoqtYmwHSJ8nFfL0Jx3yODvQ==
X-Received: by 2002:adf:ead0:0:b0:37c:d4e6:b242 with SMTP id ffacd0b85a97d-37d3aacd959mr3188404f8f.53.1728544689101;
        Thu, 10 Oct 2024 00:18:09 -0700 (PDT)
Message-ID: <ff3c00b1-b626-4de2-b797-8dd03c4d70f1@suse.com>
Date: Thu, 10 Oct 2024 09:18:07 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
 <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
 <BL1PR12MB5849650F8CB4606143C403F1E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <BL1PR12MB5849650F8CB4606143C403F1E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------IA7tG5Sn58pMnWH7AQ7hW00A"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------IA7tG5Sn58pMnWH7AQ7hW00A
Content-Type: multipart/mixed; boundary="------------k7Cb2sSqbZE51fXBPjf3TZxY";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
Message-ID: <ff3c00b1-b626-4de2-b797-8dd03c4d70f1@suse.com>
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
 <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
 <BL1PR12MB5849650F8CB4606143C403F1E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
In-Reply-To: <BL1PR12MB5849650F8CB4606143C403F1E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------k7Cb2sSqbZE51fXBPjf3TZxY
Content-Type: multipart/mixed; boundary="------------kCE0UpRxMdfh0PgEGVppVqBq"

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

T24gMTAuMTAuMjQgMDk6MDcsIENoZW4sIEppcWlhbiB3cm90ZToNCj4gT24gMjAyNC8xMC8x
MCAxMzozOSwgSsO8cmdlbiBHcm/DnyB3cm90ZToNCj4+IE9uIDEwLjEwLjI0IDAwOjQ2LCBT
dGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6DQo+Pj4gT24gV2VkLCA5IE9jdCAyMDI0LCBKYW4g
QmV1bGljaCB3cm90ZToNCj4+Pj4gT24gMDkuMTAuMjAyNCAwODoyMCwgSmlxaWFuIENoZW4g
d3JvdGU6DQo+Pj4+PiBDb21taXQgMmZhZTZiYjdiZTMyICgieGVuL3ByaXZjbWQ6IEFkZCBu
ZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20gZGV2IikNCj4+Pj4+IGFkZHMgYSB3ZWFrIHJl
dmVyc2UgZGVwZW5kZW5jeSB0byB0aGUgY29uZmlnIFhFTl9QUklWQ01EIGRlZmluaXRpb24s
IGl0cw0KPj4+Pj4gcHVycG9zZSBpcyB0byBwYXNzIHRoZSBjb21iaW5hdGlvbiBvZiBjb21w
aWxhdGlvbiB0aGF0IENPTkZJR19YRU5fUFJJVkNNRD15DQo+Pj4+PiBhbmQgQ09ORklHX1hF
Tl9QQ0lERVZfQkFDS0VORD1tLCBiZWNhdXNlIGluIHRoYXQgY29tYmluYXRpb24sIHhlbi1w
Y2liYWNrDQo+Pj4+PiBpcyBjb21waWxlZCBhcyBhIG1vZHVsZSBidXQgeGVuLXByaXZjbWQg
aXMgYnVpbHQtaW4sIHNvIHhlbi1wcml2Y21kIGNhbid0DQo+Pj4+PiBmaW5kIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmLg0KPj4+Pj4NCj4+Pj4+
IEJ1dCB0aGF0IGRlcGVuZGVuY3kgY2F1c2VzIHhlbi1wcml2Y21kIGNhbid0IGJlIGxvYWRl
ZCBvbiBkb21VLCBiZWNhdXNlDQo+Pj4+PiBkZXBlbmRlbnQgeGVuLXBjaWJhY2sgaXMgYWx3
YXlzIG5vdCBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9uIGRvbVUuDQo+Pj4+Pg0KPj4+Pj4g
VG8gc29sdmUgYWJvdmUgcHJvYmxlbSBhbmQgY292ZXIgb3JpZ2luYWwgY29tbWl0J3MgcmVx
dWlyZW1lbnQsIGp1c3QgcmVtb3ZlDQo+Pj4+PiB0aGF0IGRlcGVuZGVuY3ksIGJlY2F1c2Ug
dGhlIGNvZGUgIklTX1JFQUNIQUJMRShDT05GSUdfWEVOX1BDSURFVl9CQUNLRU5EKSINCj4+
Pj4+IG9mIG9yaWdpbmFsIGNvbW1pdCBpcyBlbm91Z2ggdG8gbWVldCB0aGUgcmVxdWlyZW1l
bnQuDQo+Pj4+Pg0KPj4+Pj4gRml4ZXM6IDJmYWU2YmI3YmUzMiAoInhlbi9wcml2Y21kOiBB
ZGQgbmV3IHN5c2NhbGwgdG8gZ2V0IGdzaSBmcm9tIGRldiIpDQo+Pj4+PiBTaWduZWQtb2Zm
LWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1kLmNvbT4NCj4+Pj4NCj4+Pj4gVGhp
cyBsYWNrcyBhIFJlcG9ydGVkLWJ5Oi4NCj4+Pj4NCj4+Pj4+IC0tLSBhL2RyaXZlcnMveGVu
L0tjb25maWcNCj4+Pj4+ICsrKyBiL2RyaXZlcnMveGVuL0tjb25maWcNCj4+Pj4+IEBAIC0y
NjEsNyArMjYxLDYgQEAgY29uZmlnIFhFTl9TQ1NJX0JBQ0tFTkQNCj4+Pj4+ICDCoCBjb25m
aWcgWEVOX1BSSVZDTUQNCj4+Pj4+ICDCoMKgwqDCoMKgIHRyaXN0YXRlICJYZW4gaHlwZXJj
YWxsIHBhc3N0aHJvdWdoIGRyaXZlciINCj4+Pj4+ICDCoMKgwqDCoMKgIGRlcGVuZHMgb24g
WEVODQo+Pj4+PiAtwqDCoMKgIGltcGx5IFhFTl9QQ0lERVZfQkFDS0VORA0KPj4+Pj4gIMKg
wqDCoMKgwqAgZGVmYXVsdCBtDQo+Pj4+PiAgwqDCoMKgwqDCoCBoZWxwDQo+Pj4+PiAgwqDC
oMKgwqDCoMKgwqAgVGhlIGh5cGVyY2FsbCBwYXNzdGhyb3VnaCBkcml2ZXIgYWxsb3dzIHBy
aXZpbGVnZWQgdXNlciBwcm9ncmFtcyB0bw0KPj4+Pg0KPj4+PiBUaGUgcmVwb3J0IHdhc24n
dCBhYm91dCBhIGJ1aWxkIHByb2JsZW0sIGJ1dCBhIHJ1bnRpbWUgb25lLiBSZW1vdmluZyB0
aGUNCj4+Pj4gZGVwZW5kZW5jeSBoZXJlIGRvZXNuJ3QgY2hhbmdlIGFueXRoaW5nIGluIHRo
ZSBkZXBlbmRlbmN5IG9mIHhlbi1wcml2Y21kDQo+Pj4+IG9uIHhlbi1wY2liYWNrLCBhcyB0
aGUgdXNlIG9mIHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYoKSBjb250aW51ZXMgdG8NCj4+
Pj4gZXhpc3QuDQo+Pj4+DQo+Pj4+IENvbnNpZGVyIHRoZSBjYXNlIG9mIFhFTl9QQ0lERVZf
QkFDS0VORD1tIGFuZCBYRU5fUFJJVkNNRD1tLCB3aGljaA0KPj4+PiBJIGd1ZXNzIGlzIHdo
YXQgTWFyZWsgaXMgdXNpbmcgaW4gaGlzIGNvbmZpZy4gQm90aCBkcml2ZXJzIGFyZSBhdmFp
bGFibGUNCj4+Pj4gaW4gc3VjaCBhIGNvbmZpZ3VyYXRpb24sIHlldCBsb2FkaW5nIG9mIHhl
bi1wcml2Y21kIHRoZW4gcmVxdWlyZXMgdG8NCj4+Pj4gbG9hZCB4ZW4tcGNpYmFjayBmaXJz
dC4gQW5kIHRoYXQgbGF0dGVyIGxvYWQgYXR0ZW1wdCB3aWxsIGZhaWwgaW4gYSBEb21VLg0K
Pj4+PiBUaGUgdHdvIGRyaXZlcnMgc2ltcGx5IG1heSBub3QgaGF2ZSBhbnkgZGVwZW5kZW5j
eSBpbiBlaXRoZXIgZGlyZWN0aW9uLg0KPj4+DQo+Pj4gVGhlIGlkZWEgaXMgdGhhdCB0aGVy
ZSBzaG91bGQgYmUgbm8gaGFyZCBkZXBlbmRlbmN5IG9uDQo+Pj4gcGNpc3R1Yl9nZXRfZ3Np
X2Zyb21fc2JkZigpLiBJZiBpdCBpcyBhdmFpbGFibGUsIHRoZSBzZXJ2aWNlIHdpbGwgYmUN
Cj4+PiB1c2VkLCBvdGhlcndpc2UgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4NCj4+Pg0K
Pj4+IFRoZSBwcm9ibGVtIGlzIHRoYXQgSVNfUkVBQ0hBQkxFIGlzIGEgY29tcGlsZS10aW1l
IGNoZWNrLiBXaGF0IHdlIG5lZWQNCj4+PiBpcyBhIHJ1bnRpbWUgY2hlY2sgaW5zdGVhZC4g
TWF5YmUgc3ltYm9sX2dldCBvciB0cnlfbW9kdWxlX2dldCA/DQo+Pg0KPj4gVGhpcyBpcyBh
IHJhdGhlciBjbHVtc3kgc29sdXRpb24gSU1PLg0KPj4NCj4+IEknbSBzZWVpbmcgdGhlIGZv
bGxvd2luZyBzb2x1dGlvbnM6DQo+Pg0KPj4gMS4gRG9uJ3QgZmFpbCB0byB0byBsb2FkIHRo
ZSBwY2liYWNrIGRyaXZlciBpbiBhIERvbVUsIGJ1dCBvbmx5IGRpc2FibGUNCj4+ICDCoMKg
IGFueSBmdW5jdGlvbmFsaXR5Lg0KPj4NCj4+IDIuIE1vdmUgdGhlIGRyaXZlcnMveGVuL3hl
bi1wY2liYWNrL3BjaV9zdHViLmMgZnVuY3Rpb25hbGl0eSBpbiBhIG1vZHVsZQ0KPj4gIMKg
wqAgb2YgaXRzIG93biwgYWxsb3dpbmcgdGhlIHByaXZjbWQgZHJpdmVyIHRvIGJlIGxvYWRl
ZCB3aXRob3V0IG5lZWRpbmcNCj4+ICDCoMKgIHRoZSByZXN0IG9mIHBjaWJhY2suDQo+Pg0K
Pj4gMy4gQWRkIGEgaG9vayB0byBlLmcuIGRyaXZlcnMveGVuL3BjaS5jIGluc3RlYWQgZm9y
IGNhbGxpbmcgb2YNCj4+ICDCoMKgIHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYoKSBkaXJl
Y3RseS4gcGNpYmFjayBjb3VsZCByZWdpc3RlciB0aGUgcmVhbA0KPj4gIMKgwqAgY2FsbCBh
ZGRyZXNzLiBJZiBwY2liYWNrIGlzbid0IGxvYWRlZCwgdGhlIGhvb2sgY2FuIHJldHVybiBh
biBlcnJvci4NCj4+ICDCoMKgIFRoaXMgd291bGQgcmVtb3ZlIHRoZSBleHBsaWNpdCBkZXBl
bmRlbmN5IG9mIHByaXZjbWQgb24gcGNpYmFjay4NCj4+DQo+PiBJJ2QgcHJlZmVyIHRoZSAz
cmQgdmFyaWFudC4NCj4gVGhhbmtzLCBJIHdpbGwgc2VuZCBjaGFuZ2VzIGluIHYyIHNvb24u
DQo+IEFuZCBJIHByZWZlciB0byBhZGQgdGhlIGhvb2sgaW4gZHJpdmVycy94ZW4vYWNwaS5j
DQoNCkFncmVlZC4NCg0KDQpKdWVyZ2VuDQoNCg==
--------------kCE0UpRxMdfh0PgEGVppVqBq
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------kCE0UpRxMdfh0PgEGVppVqBq--

--------------k7Cb2sSqbZE51fXBPjf3TZxY--

--------------IA7tG5Sn58pMnWH7AQ7hW00A
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/Ey8FAmcHf7AFAwAAAAAACgkQsN6d1ii/Ey9d
rgf+PGIvFmJcTWvFDg7DtPr5q8nPOJQbmlGO41E1H37PJMwvHoma4EJ5zPXVIM745qc5BTUFr6wz
VYP711tX2aJaTWcPm6n+KfIH/sWHjQN/PoPAC+eIXw4T3CQIIylzeL3igdtg2aLiTiPHXymbiTuj
sE6qOkdZRriEteZ5OsBIo+i0uL0vN+x80dmbQjryoGN6rmqfzTbkT7zj5SvOTb6yVwvzWzJlVyl9
s4OCoD1asmRLIkqScJBszn2cSVQ0BU76VcVb7EHKu1pikuXSYpStKasv+sEXgV3g024GVAhlj5xX
sJHd1lfHOFvqP2WaOVBfR8bOhsKK56EeR0Fw4pHU6g==
=BCPR
-----END PGP SIGNATURE-----

--------------IA7tG5Sn58pMnWH7AQ7hW00A--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:21:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:21:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815576.1229551 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synU8-0001r9-KK; Thu, 10 Oct 2024 07:21:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815576.1229551; Thu, 10 Oct 2024 07:21: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 1synU8-0001r2-HN; Thu, 10 Oct 2024 07:21:20 +0000
Received: by outflank-mailman (input) for mailman id 815576;
 Thu, 10 Oct 2024 07:21: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1synU6-0001ql-Mz
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:21:18 +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 3d29f4e7-86d8-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 09:21:17 +0200 (CEST)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-37d4612da0fso632039f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:21:17 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431182ffd8asm7142005e9.16.2024.10.10.00.21.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:21:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d29f4e7-86d8-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728544876; x=1729149676; darn=lists.xenproject.org;
        h=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=AyCaBo0i4SYiCwcTDSqqgbpx2rzD5YQm6GeqNW55qBc=;
        b=TOmMpByJVywiNZRdLCIQWSZUFm/NLXU5gut1QZVgm3KJWX/TZ5EAACpWwbMbD7RAXE
         SojqDIgRJJkXRYbQlM5k7PcUg1q0lavMB94hFtdXKtVOslxpzAsE9z7KrvxJTs19woeW
         CH6A1aNQp2QLnH+Hj2tL9NSuekReI4gXwJh3e94OW5sTgyaEEhIRIAY3XIgmg8WwK9Nl
         qZCnLVaif05RZabwkjSX7Rpr23x6BRjlPY4Q3fIvFZ8FOe8AogGE4nvACvvC6xz8PIwx
         TgB6gfEA/8ZnOJFomAaa0qfNKTibbza7m7CIw7cayTVHqfp8MGfi7G/WF8b40gEjy7m1
         XhMQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728544876; x=1729149676;
        h=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=AyCaBo0i4SYiCwcTDSqqgbpx2rzD5YQm6GeqNW55qBc=;
        b=n/OB9TOeLtoBtyf510isEOd/vp6xiTv5NHlJyBC5Xw94fPphXrbVWtmwLes+v8xSNA
         P2ptyN4poA20nvw8LgyRxlHSfE7rvM05B4nwEDmtpuAzWJW9hp9uHmYNhSiYV4fA1o6I
         xWrKBflf85HYtBMBpXGtbWkuFsFDkA51g+ZJ+T1KissQ//mtyy9RG9MF4Jm3HmsFldIo
         j4qpKOrswbwAv7MhQr9c/pF1aEQaLFKbHgUmMIiRKQN/vq7r4FewDIxZcWDjKOZHvt7A
         GRzv3VEAuv4+rcNPq8T2Cxtdf020zIJOge+UiurmUQPVmmTz1aumECNMJw5rhpcr6lin
         JIUw==
X-Forwarded-Encrypted: i=1; AJvYcCXBxvjJKBUZV6GHM5tBpX4yksj04iYUm1Fq1c5KXM8S3MeGZBXLoH0UpWG5Q+gB1euvNnDnrI54fp8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwEMEkpzNnqGJ5n4x6TGE8JOyIZPyM2LwQkqy7wBCoHE/vw8+Nx
	w8t8LZOjxnHRlhFerGwPcqiwsl3Zdi9DAhsHISYP3Y96piPghm+m1c2BkEiO6SU=
X-Google-Smtp-Source: AGHT+IGJeEuId0pkeYDcpcQ8p5zK0MIMdhuzCEkqAKRSkr3wHWM5w4dbP/wcjOKp97W+FuvkXlVnYg==
X-Received: by 2002:a5d:6502:0:b0:37d:321e:ef0c with SMTP id ffacd0b85a97d-37d481749f6mr1930588f8f.11.1728544876293;
        Thu, 10 Oct 2024 00:21:16 -0700 (PDT)
Message-ID: <720cda23-d34d-4e66-804e-cc7b48d9dc55@suse.com>
Date: Thu, 10 Oct 2024 09:21:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
To: Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
 <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
 <756dc3d5-48fd-429f-a5eb-6cb8e99dfe6f@suse.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <756dc3d5-48fd-429f-a5eb-6cb8e99dfe6f@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------NIXChMZCYHNuRrQNqXIfsuAv"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------NIXChMZCYHNuRrQNqXIfsuAv
Content-Type: multipart/mixed; boundary="------------HWnIr4BTx00tYzMNDMlOZdty";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org,
 linux-kernel@vger.kernel.org,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
Message-ID: <720cda23-d34d-4e66-804e-cc7b48d9dc55@suse.com>
Subject: Re: [PATCH] xen: Remove config dependency in XEN_PRIVCMD definition
References: <20241009062014.407310-1-Jiqian.Chen@amd.com>
 <73174eb0-380d-4f95-a2c3-097b86fac8db@suse.com>
 <alpine.DEB.2.22.394.2410091539260.471028@ubuntu-linux-20-04-desktop>
 <8bfaa6cc-2cf1-48e4-828b-e4d356f0b3fc@suse.com>
 <756dc3d5-48fd-429f-a5eb-6cb8e99dfe6f@suse.com>
In-Reply-To: <756dc3d5-48fd-429f-a5eb-6cb8e99dfe6f@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------HWnIr4BTx00tYzMNDMlOZdty
Content-Type: multipart/mixed; boundary="------------TbMDtIXHoCIrUQZoWvb5i00P"

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

T24gMTAuMTAuMjQgMDk6MDEsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAxMC4xMC4yMDI0
IDA3OjM5LCBKw7xyZ2VuIEdyb8OfIHdyb3RlOg0KPj4gT24gMTAuMTAuMjQgMDA6NDYsIFN0
ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToNCj4+PiBPbiBXZWQsIDkgT2N0IDIwMjQsIEphbiBC
ZXVsaWNoIHdyb3RlOg0KPj4+PiBPbiAwOS4xMC4yMDI0IDA4OjIwLCBKaXFpYW4gQ2hlbiB3
cm90ZToNCj4+Pj4+IENvbW1pdCAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5l
dyBzeXNjYWxsIHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+Pj4gYWRkcyBhIHdlYWsgcmV2
ZXJzZSBkZXBlbmRlbmN5IHRvIHRoZSBjb25maWcgWEVOX1BSSVZDTUQgZGVmaW5pdGlvbiwg
aXRzDQo+Pj4+PiBwdXJwb3NlIGlzIHRvIHBhc3MgdGhlIGNvbWJpbmF0aW9uIG9mIGNvbXBp
bGF0aW9uIHRoYXQgQ09ORklHX1hFTl9QUklWQ01EPXkNCj4+Pj4+IGFuZCBDT05GSUdfWEVO
X1BDSURFVl9CQUNLRU5EPW0sIGJlY2F1c2UgaW4gdGhhdCBjb21iaW5hdGlvbiwgeGVuLXBj
aWJhY2sNCj4+Pj4+IGlzIGNvbXBpbGVkIGFzIGEgbW9kdWxlIGJ1dCB4ZW4tcHJpdmNtZCBp
cyBidWlsdC1pbiwgc28geGVuLXByaXZjbWQgY2FuJ3QNCj4+Pj4+IGZpbmQgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYuDQo+Pj4+Pg0KPj4+Pj4g
QnV0IHRoYXQgZGVwZW5kZW5jeSBjYXVzZXMgeGVuLXByaXZjbWQgY2FuJ3QgYmUgbG9hZGVk
IG9uIGRvbVUsIGJlY2F1c2UNCj4+Pj4+IGRlcGVuZGVudCB4ZW4tcGNpYmFjayBpcyBhbHdh
eXMgbm90IGJlIGxvYWRlZCBzdWNjZXNzZnVsbHkgb24gZG9tVS4NCj4+Pj4+DQo+Pj4+PiBU
byBzb2x2ZSBhYm92ZSBwcm9ibGVtIGFuZCBjb3ZlciBvcmlnaW5hbCBjb21taXQncyByZXF1
aXJlbWVudCwganVzdCByZW1vdmUNCj4+Pj4+IHRoYXQgZGVwZW5kZW5jeSwgYmVjYXVzZSB0
aGUgY29kZSAiSVNfUkVBQ0hBQkxFKENPTkZJR19YRU5fUENJREVWX0JBQ0tFTkQpIg0KPj4+
Pj4gb2Ygb3JpZ2luYWwgY29tbWl0IGlzIGVub3VnaCB0byBtZWV0IHRoZSByZXF1aXJlbWVu
dC4NCj4+Pj4+DQo+Pj4+PiBGaXhlczogMmZhZTZiYjdiZTMyICgieGVuL3ByaXZjbWQ6IEFk
ZCBuZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20gZGV2IikNCj4+Pj4+IFNpZ25lZC1vZmYt
Ynk6IEppcWlhbiBDaGVuIDxKaXFpYW4uQ2hlbkBhbWQuY29tPg0KPj4+Pg0KPj4+PiBUaGlz
IGxhY2tzIGEgUmVwb3J0ZWQtYnk6Lg0KPj4+Pg0KPj4+Pj4gLS0tIGEvZHJpdmVycy94ZW4v
S2NvbmZpZw0KPj4+Pj4gKysrIGIvZHJpdmVycy94ZW4vS2NvbmZpZw0KPj4+Pj4gQEAgLTI2
MSw3ICsyNjEsNiBAQCBjb25maWcgWEVOX1NDU0lfQkFDS0VORA0KPj4+Pj4gICAgY29uZmln
IFhFTl9QUklWQ01EDQo+Pj4+PiAgICAJdHJpc3RhdGUgIlhlbiBoeXBlcmNhbGwgcGFzc3Ro
cm91Z2ggZHJpdmVyIg0KPj4+Pj4gICAgCWRlcGVuZHMgb24gWEVODQo+Pj4+PiAtCWltcGx5
IFhFTl9QQ0lERVZfQkFDS0VORA0KPj4+Pj4gICAgCWRlZmF1bHQgbQ0KPj4+Pj4gICAgCWhl
bHANCj4+Pj4+ICAgIAkgIFRoZSBoeXBlcmNhbGwgcGFzc3Rocm91Z2ggZHJpdmVyIGFsbG93
cyBwcml2aWxlZ2VkIHVzZXIgcHJvZ3JhbXMgdG8NCj4+Pj4NCj4+Pj4gVGhlIHJlcG9ydCB3
YXNuJ3QgYWJvdXQgYSBidWlsZCBwcm9ibGVtLCBidXQgYSBydW50aW1lIG9uZS4gUmVtb3Zp
bmcgdGhlDQo+Pj4+IGRlcGVuZGVuY3kgaGVyZSBkb2Vzbid0IGNoYW5nZSBhbnl0aGluZyBp
biB0aGUgZGVwZW5kZW5jeSBvZiB4ZW4tcHJpdmNtZA0KPj4+PiBvbiB4ZW4tcGNpYmFjaywg
YXMgdGhlIHVzZSBvZiBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKCkgY29udGludWVzIHRv
DQo+Pj4+IGV4aXN0Lg0KPj4+Pg0KPj4+PiBDb25zaWRlciB0aGUgY2FzZSBvZiBYRU5fUENJ
REVWX0JBQ0tFTkQ9bSBhbmQgWEVOX1BSSVZDTUQ9bSwgd2hpY2gNCj4+Pj4gSSBndWVzcyBp
cyB3aGF0IE1hcmVrIGlzIHVzaW5nIGluIGhpcyBjb25maWcuIEJvdGggZHJpdmVycyBhcmUg
YXZhaWxhYmxlDQo+Pj4+IGluIHN1Y2ggYSBjb25maWd1cmF0aW9uLCB5ZXQgbG9hZGluZyBv
ZiB4ZW4tcHJpdmNtZCB0aGVuIHJlcXVpcmVzIHRvDQo+Pj4+IGxvYWQgeGVuLXBjaWJhY2sg
Zmlyc3QuIEFuZCB0aGF0IGxhdHRlciBsb2FkIGF0dGVtcHQgd2lsbCBmYWlsIGluIGEgRG9t
VS4NCj4+Pj4gVGhlIHR3byBkcml2ZXJzIHNpbXBseSBtYXkgbm90IGhhdmUgYW55IGRlcGVu
ZGVuY3kgaW4gZWl0aGVyIGRpcmVjdGlvbi4NCj4+Pg0KPj4+IFRoZSBpZGVhIGlzIHRoYXQg
dGhlcmUgc2hvdWxkIGJlIG5vIGhhcmQgZGVwZW5kZW5jeSBvbg0KPj4+IHBjaXN0dWJfZ2V0
X2dzaV9mcm9tX3NiZGYoKS4gSWYgaXQgaXMgYXZhaWxhYmxlLCB0aGUgc2VydmljZSB3aWxs
IGJlDQo+Pj4gdXNlZCwgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQuDQo+
Pj4NCj4+PiBUaGUgcHJvYmxlbSBpcyB0aGF0IElTX1JFQUNIQUJMRSBpcyBhIGNvbXBpbGUt
dGltZSBjaGVjay4gV2hhdCB3ZSBuZWVkDQo+Pj4gaXMgYSBydW50aW1lIGNoZWNrIGluc3Rl
YWQuIE1heWJlIHN5bWJvbF9nZXQgb3IgdHJ5X21vZHVsZV9nZXQgPw0KPj4NCj4+IFRoaXMg
aXMgYSByYXRoZXIgY2x1bXN5IHNvbHV0aW9uIElNTy4NCj4+DQo+PiBJJ20gc2VlaW5nIHRo
ZSBmb2xsb3dpbmcgc29sdXRpb25zOg0KPj4NCj4+IDEuIERvbid0IGZhaWwgdG8gdG8gbG9h
ZCB0aGUgcGNpYmFjayBkcml2ZXIgaW4gYSBEb21VLCBidXQgb25seSBkaXNhYmxlDQo+PiAg
ICAgIGFueSBmdW5jdGlvbmFsaXR5Lg0KPj4NCj4+IDIuIE1vdmUgdGhlIGRyaXZlcnMveGVu
L3hlbi1wY2liYWNrL3BjaV9zdHViLmMgZnVuY3Rpb25hbGl0eSBpbiBhIG1vZHVsZQ0KPj4g
ICAgICBvZiBpdHMgb3duLCBhbGxvd2luZyB0aGUgcHJpdmNtZCBkcml2ZXIgdG8gYmUgbG9h
ZGVkIHdpdGhvdXQgbmVlZGluZw0KPj4gICAgICB0aGUgcmVzdCBvZiBwY2liYWNrLg0KPj4N
Cj4+IDMuIEFkZCBhIGhvb2sgdG8gZS5nLiBkcml2ZXJzL3hlbi9wY2kuYyBpbnN0ZWFkIGZv
ciBjYWxsaW5nIG9mDQo+PiAgICAgIHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYoKSBkaXJl
Y3RseS4gcGNpYmFjayBjb3VsZCByZWdpc3RlciB0aGUgcmVhbA0KPj4gICAgICBjYWxsIGFk
ZHJlc3MuIElmIHBjaWJhY2sgaXNuJ3QgbG9hZGVkLCB0aGUgaG9vayBjYW4gcmV0dXJuIGFu
IGVycm9yLg0KPj4gICAgICBUaGlzIHdvdWxkIHJlbW92ZSB0aGUgZXhwbGljaXQgZGVwZW5k
ZW5jeSBvZiBwcml2Y21kIG9uIHBjaWJhY2suDQo+Pg0KPj4gSSdkIHByZWZlciB0aGUgM3Jk
IHZhcmlhbnQuDQo+IA0KPiBTYW1lIGhlcmUgLSBvcmRlciBvZiBwcmVmZXJlbmNlIGJhY2t3
YXJkcyBpbiB0aGUgc2V0IHByZXNlbnRlZCBhYm92ZS4NCj4gSW4gdGhlIG1lYW50aW1lIHRo
ZSBvcmlnaW5hbCBjaGFuZ2UgbWF5IHNpbXBseSBuZWVkIHJldmVydGluZz8NCg0KTm8sIEkg
ZG9uJ3QgdGhpbmsgc28uIFRoZSBicmVha2FnZSB3YXMgaW50cm9kdWNlZCBpbiA2LjEyIGFu
ZCB3ZQ0KYXJlIHN0aWxsIGluIHRoZSA2LjEyIHJjIHBoYXNlLg0KDQpTdGFuZGFyZCBYZW4g
c2V0dXBzIGFyZSBydW5uaW5nIGp1c3QgZmluZSwgaXRzIGp1c3QgdGhlIFF1YmVzIHVzZQ0K
Y2FzZSB3aGljaCBpcyBicm9rZW4uIEhhdmluZyBhIGZpeCBpbiA2LjEyIHNob3VsZCBiZSBl
bm91Z2guDQoNCg0KSnVlcmdlbg0K
--------------TbMDtIXHoCIrUQZoWvb5i00P
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------TbMDtIXHoCIrUQZoWvb5i00P--

--------------HWnIr4BTx00tYzMNDMlOZdty--

--------------NIXChMZCYHNuRrQNqXIfsuAv
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/Ey8FAmcHgGsFAwAAAAAACgkQsN6d1ii/Ey86
jwf8CQTaWJOyyssHTmn+R+O15SjRwBI38rrNU+9pcXTWTSyBwPJyAi/d2IDL9DgPTXjZ/Ek9PyjY
AEUwmFtIU4aa8m9pFCdqhBe43nEojY5HQNZuyq4QQmql2nTSEo9xtmiVZQrXCdERkVO8AEpau7xX
DjVsMDWRbUkewOVk+y1ZD2+5ryvWkRAgLS2iqTzRgfrVuMnQqCcLQdFLm3sWjVUWUCOcea4yNBC4
nZpIS5BlK5d+mGjIvnm6ErpboCvSIo6/9gQ8pr7SSwZ1d6S4Gs8oSSggDYCpuaqsptoWp/A5IhWt
I++BDk3bwdd7wVtU3/MTLNYRgdVwfvL2wZE7CCzCYg==
=zMnq
-----END PGP SIGNATURE-----

--------------NIXChMZCYHNuRrQNqXIfsuAv--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:21:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:21:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815575.1229561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synUU-0002My-0t; Thu, 10 Oct 2024 07:21:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815575.1229561; Thu, 10 Oct 2024 07: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 1synUT-0002Mr-Ub; Thu, 10 Oct 2024 07:21:41 +0000
Received: by outflank-mailman (input) for mailman id 815575;
 Thu, 10 Oct 2024 07:21: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=x0Zz=RG=amd.com=Basavaraj.Natikar@srs-se1.protection.inumbo.net>)
 id 1synU6-0001ql-14
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:21:18 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20605.outbound.protection.outlook.com
 [2a01:111:f403:2417::605])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3c68b440-86d8-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 09:21:16 +0200 (CEST)
Received: from DM4PR12MB5040.namprd12.prod.outlook.com (2603:10b6:5:38b::19)
 by DS7PR12MB6240.namprd12.prod.outlook.com (2603:10b6:8:94::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.22; Thu, 10 Oct
 2024 07:21:13 +0000
Received: from DM4PR12MB5040.namprd12.prod.outlook.com
 ([fe80::a3dc:7ea1:9cc7:ce0f]) by DM4PR12MB5040.namprd12.prod.outlook.com
 ([fe80::a3dc:7ea1:9cc7:ce0f%6]) with mapi id 15.20.8048.013; Thu, 10 Oct 2024
 07:21: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: 3c68b440-86d8-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=yAyqsh9YTDBR6ZcP+oMdSAG9ku8Rl/GBejocvQjCW6Zi6xXypie891ohxqmhzBvqt+r4t0TmvCKlfA13qMckLcBnKTZoB0/cMWH0GjdE1mz6nVtu0uMqA4RkL738FFTkmzzYJ+FflKbrRFmuulhUjUN23WiHz2d2LC1C0IPNKsvpysWLrW75lTvZDjB8mJlteHD/hCWqRFNVqc1wZZ4MlBOUmKbPdFD5E8gTQ+QWi8NKbPgwwP+WinSCUP/6K1PhNn/+KGC/tpkGezcUBiGOTFMbYVClI+Zm/Z8+QIsb0AH9yXYCEj9XTFHb2eZqaGwNT6awVpNgjF8faULAP+ScmQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=q5gql8I0ZYim7nFHQSGwxiJ3GfafgB16EOhhTpoC0OI=;
 b=Mh5mVSc07CmOL1qAmVN9EtMSzOH+rZY4cRhn69TWOmjvx9v5+7CpJTlSOQAb5QSUzRGQyj+Qt4F8+CrjJ8WMw+OR3U9OBDXiyHAbzuDdlzos/uF+8SvRhSEN7DZwgpDzA4mcEy7TJ+BxTrhGbU/FK08sU2T+f4XcKdZB3vnGPHbRBvzlEqt1nHz8m4y7qTIHjnNhDkVxBTWcI4IfkbaX4Mi27HS59H10QxEBWQGuFvtM+cLEklOqkSuyGWpUMV2cc/qVglh2nngFNM+2OkvEnTkLfFcgfxPW6wS5KmfuweSYzkBLA0KSG/Ryx+ToOY4AoDdvuRSRia7L2EVe45dX9A==
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=q5gql8I0ZYim7nFHQSGwxiJ3GfafgB16EOhhTpoC0OI=;
 b=gcNfwOG51d/lXjtp85kHgtnAoNZCEzJ2gR7yyrAKOHpP17As6WPgRudiZmDcrJ/4mgDv+6jVCWHfrqDp6AeVMnAQhgwV9CkXXY6gpwdiVo9WwH7j61XfY5X49ZKlHe4vfa1H6BkwbRW3ny3XI9SzEc6VrJfOJwfKfg4Zbj59gWc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <8f0de41f-8add-de50-fc59-fceff30b9e38@amd.com>
Date: Thu, 10 Oct 2024 12:50:48 +0530
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.15.1
Subject: Re: [RFC PATCH 12/13] HID: amd_sfh: Use always-managed version of
 pcim_intx()
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>,
 Alex Williamson <alex.williamson@redhat.com>, Juergen Gross
 <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>, Chen Ni <nichen@iscas.ac.cn>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=c3=a4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=c3=b3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, linux-staging@lists.linux.dev,
 kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-13-pstanner@redhat.com>
Content-Language: en-US
From: Basavaraj Natikar <bnatikar@amd.com>
In-Reply-To: <20241009083519.10088-13-pstanner@redhat.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PN2PR01CA0185.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:c01:e8::12) To DM4PR12MB5040.namprd12.prod.outlook.com
 (2603:10b6:5:38b::19)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DM4PR12MB5040:EE_|DS7PR12MB6240:EE_
X-MS-Office365-Filtering-Correlation-Id: 15c72fc0-62d3-409a-6ebe-08dce8fc1eb9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|7416014|366016|921020;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?T0FIdElJSzVXZlM1SDdVcW9xUHNGVEV0KzRSc3d3Q09RRm5LejNyVzFuMWpm?=
 =?utf-8?B?TyttQ0U3dzVnbzZNVFU4UUZQMzk2K05jZ0NoUW8zdG96NWNlbnBFU0hZQ2lV?=
 =?utf-8?B?Y1dsZHo5RUFvalUyT3EwUHRnYXpNMEdXS1daRU01YW9FSzdVU1dyMW1ORkpS?=
 =?utf-8?B?RnBBd2hNZVZsY3JtZjlqQU5XNjcyUHN5cVFyQVR2cEU4TXJJRGY0OWRaL1ly?=
 =?utf-8?B?K1NPa2hsU1l6azc5V2lyZ1ZKQU1USVVYaVFveTlSWHVPTXltMHBjYkVoai9T?=
 =?utf-8?B?UzlEeWx4aVNtV0Z0R3l0enRLQVFiUHpnT1haMkwvU3JxN041OGZJUHp0OVVK?=
 =?utf-8?B?MFhmM3NZRDJMZHpveHFVTTJ4SWQzaHAyTnBPTk1Ydzdjc3V1UjlqZk9VRE9U?=
 =?utf-8?B?SjdsNFNtQko1MmRBR0hRVDBuWWQ2RXVtOEVoQzlpT3UyQkNwekl5NWVIWE9K?=
 =?utf-8?B?V1prTTNmT1dpNDJBTXlmSXJGUWtOMjBsUEl0cTBJSFR0WW1mTGF4d2hac2VX?=
 =?utf-8?B?NFMzMUF4OFNkL2xTRnlNaTdYTm5YeTZxQ0psUkoxN1JsYitpVldyNFVVRnZH?=
 =?utf-8?B?ZEJZYUVvWDBxY0pCWVF5T0d2Q2ZYMlM0OThaMDkzOS9FMmdFN3dIUTVvMSsz?=
 =?utf-8?B?WVE4NHd1NThGQW4xSC9QbE5uOHNuUm54cWxwTmp6K3Npb2NuUkFQV3h0R3hW?=
 =?utf-8?B?NFRQNXhWalJoMVpyYkgwdm1ubmtVSGNoZmJxRm0zelR3VXZod01HaE5rUjJS?=
 =?utf-8?B?bGUrNUZvNGxPR2loWEhTTXVQQmdIbHpRQksvK2hIT2UwTmlOanliRnF6MDg1?=
 =?utf-8?B?aVNIdm1IcTk3OEVRV05yQkNlczJiVlRnZG1YM3ZBOFNlSkNGek5LSjVhWll5?=
 =?utf-8?B?bTRJRmw2OFNjZTMxZlF1ZnplVmZIUnVGU29CUjN1QTFBRTYwcG1LK1l5OUZB?=
 =?utf-8?B?aVpJTGVzUXAwZU14eEZiK0ZwcndHejh5a3M4T2FuemNCVGhNSkZoVFhwMkt5?=
 =?utf-8?B?bXpQdlpEMldIaWZVeXlMSVBkRkFHVWZGZExsaXVPR2tPYmNhbWs1T0g0V3JW?=
 =?utf-8?B?YzNua2V5NXpnWUdtaDVqS0cveUc2SW1pZVNkZWNGUXhrZjB2N050OWMxT0lP?=
 =?utf-8?B?ckpVN1Y2dkQ5Z1cxQmhjQkxwTVZzdzlHazZrcHB0WnFJVGVNdC92b08wWFpQ?=
 =?utf-8?B?VDBEeXZxdHplM0NCalhWNlJLVkdLbHpJaXA4S2JzS2xtcUdoMjVjalp6UExh?=
 =?utf-8?B?R28yUytsempHQjIrdHJmbGc2ZGFLM0ZCenZkdVR0OTN0OHVSY2xVVG1NR3Vi?=
 =?utf-8?B?TnZiMHRxWWNPTzUzdmhXVnErYlRBQWxOa3Jta0cvbHowU0UxTTZVSk5ScmpY?=
 =?utf-8?B?UGlOUWd2UEdzb0ZPNHdza1lEcG9KTkZPVjdmbnVSYnFWcENIZmJmMy9KYkhU?=
 =?utf-8?B?YTdTVlhUTVRPd25JdnovY0lVc1o0RU52ejRjTU9VZ3IyV1ovckZ6NGZjVUw5?=
 =?utf-8?B?a2hKRk9OUFc0bU03MWxYUTUwc1pHUytxcnEyaVgyNVo3MWNyRnFoR0JidjRG?=
 =?utf-8?B?K0VERjgxMnRvQ2VsWWpaUG5SMVFTaENXWm80cy9jNW84aUdEb0EzaXhhWGV2?=
 =?utf-8?B?U2hCSm1ZTlNCYVZDQzBzRFE5TVRDVC91VndsVVVtSzZQTW5EMHhNRWRMbVVl?=
 =?utf-8?B?WlhKT1F5MUMxTk9qWmJnenN2NU1QSWM4d1E3SmovVmdvS0RUam9Uc2ZRbVoz?=
 =?utf-8?Q?w96hM57Pd9ZE7qYoOPmR2yJ/T6t1IUhoELZFvY/?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB5040.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MTBIZkQ4dTArdkhVQjRXazRzSXpZWFR0eTFoZG1XZnRUNWkwRWFUTzRIeVJK?=
 =?utf-8?B?Q1h1a0JwVmRmaFM4UmZZN01KN2djV05PVWJsM0RnTUVWYjJiVWk2dEFVODM2?=
 =?utf-8?B?R2FkSGZaRTBBZWZYcWIyeTRJdDhNQ0FlNmErdUtNckU3K2Y3bmJQNmdKeCtF?=
 =?utf-8?B?cHA3eWNqazJkdmJKZGJaOVFtREVvajVWa0NlYUdvSzhvcWdJWC9hdExvY1o4?=
 =?utf-8?B?QUk1c0lTUy9PYUxHWmx3cmo4QUUzUVZNNUdRYUl2NGlYYVhhQWpWTVp0MEdm?=
 =?utf-8?B?dEVUc1paM2ZYcXlmdmFrVVVSY0dBalVabXl5MFNCTldXZElTd0R0QUdRUjlt?=
 =?utf-8?B?cVNINEVyaWV3b2xnYVlkRitEdW0ydUV3SHVybXZKaGl5Q2Q4UGZSZVJRcTds?=
 =?utf-8?B?MHVpY2dRTy9YU2RFbWMrYTNVbU5nYTRpUklyaFJJR01OWGxKSnovd250eEVs?=
 =?utf-8?B?TGJmaTg0MDE4QlQ2SWhELzhQTk9FemcwamErTkdUWjhtZlFDcDQ0cGNTT3Ri?=
 =?utf-8?B?WkFsdlVURW1DMm81amM2VEdZdVJCTEdxM01mTWs3Vml4SDlFVEhxUmF1Wmtq?=
 =?utf-8?B?NFVFSVp3WFZiS0ZydXMwOEZ1V0JFS1dDcmRwVjU0VloxVW8xMGZaVUoxOW51?=
 =?utf-8?B?RmllcjA4NGNHYjlJR2ZONmZRbWN0ODhwcUFUaWIwV2FnWEIwa085aUZ5aDN2?=
 =?utf-8?B?QzBreEh4VFFOaEFVL2FydmV1Qmg2NDA3ZHVab05qUlVJdWJrWFZQcDlXVnEx?=
 =?utf-8?B?VklVYlpTZTNLaU81LzNwUHBYQTU0TnpvWVp1QmRqSEU4QStsZEovVkxJczRG?=
 =?utf-8?B?cVFyb2JKWXdDZ0JPWVdyUjFZZHVOWjM1MEl4MUcyMk9BUVAvdUxid2ZlNDE4?=
 =?utf-8?B?M1Q3VlJITHp2V0grQ0Y5anl4WFZ2UU9uYkRJc2d2R0JRSERwbkFTODdBdE5u?=
 =?utf-8?B?RXZtdTJSaitIS20yeHBSOXlQTEczamQxd2xKM0k2Y3lwMmZoTHVyaGhCMk5t?=
 =?utf-8?B?VVhnNFVZNWcrVDdRbWFNNTVrUlNIL01vUm9iQmFDbXAwUkhYcDA2NDQyMzBQ?=
 =?utf-8?B?clMrZjFXWTR2OWJhOTVCd1BkMmtpREdZVDJJU0FuS1prUlRWdDBMNXQxenRt?=
 =?utf-8?B?aWxCY1BiWWV3QnUrZ2lGbVFpZmRWK1VuRXpSN2NiMjZHWUNmRVZ4U21uUGIv?=
 =?utf-8?B?T25IbWlRRVJXcENFYTVEc1ZDTzdaZ3NPTFpTVTBPMlIwM3FwMlJ5bGVKY25V?=
 =?utf-8?B?MVB3b1lZQUkrVEZJeTh6TEUyRzA5WW5STzFMNEQ3TkxKejZobWFDVHE3RzdE?=
 =?utf-8?B?aUQ5d2hHa0R5bUFkSGdhMDVsV0JYTmtmTGFDd0d4RTRyN0REZXJPR0luS1c1?=
 =?utf-8?B?VVJCNkVoNDJvbGRmaDRJZlN3Tk9XQi9BYjBCb2NKOHhmL0VpZVFKekQxUURR?=
 =?utf-8?B?N0tIdWp5Z0VIcXBDMXlGdU5GSzNyQnY3TUo1TEhRTWRpOUFRSHJIVVR6Rjlp?=
 =?utf-8?B?blNSQ3RKRmd4TUJSeGhVTGk1ZWlDT2xoVWdtNEhtRDd3QkhHaVhKZWxTUlRV?=
 =?utf-8?B?TW1TSUpVYmwrOWpqMklqZDUydHQ1YVhJZnFTc1dxM2IwamtkQ2FvSDgycE1i?=
 =?utf-8?B?Nitqd3I1eEoySHB4NFYzUVlBSWFDdVdhaXhvR29DNTJnS1hiQzUyQlNZSFQr?=
 =?utf-8?B?Rk9vMWphSUQvaE85OW4xZHNYay81KzZ5MmRJREYvRzlxVlk3dlRiT1JUSEkv?=
 =?utf-8?B?WlVGMVgvVk5TQ3JQczIvbmcwYlpIc05PWXBURUpBM2luSG52Mk5xeTFFZ05v?=
 =?utf-8?B?bmZ1ZXVzbDU5b1Q4ckNoZ0RhQ1Y0WkVpdklraFJVUzZ5QnUyUkowSlYxamZH?=
 =?utf-8?B?K01LekNxSEVPdUprN29rc1AxbGUzbVhwNUVudXRpQVdyMHptT2ppejJTS2N0?=
 =?utf-8?B?M1JsQW5JVnNLUHdqK0pFemVuV1pHRm5YUjd3QVlpNitjbithUnpZdUg0SEpp?=
 =?utf-8?B?NXFnYlJ4MW1NU3lJWVd1c2J3bXFrR285TW5UZ1NXaGp1UUxQNHAwbXdSUGVF?=
 =?utf-8?B?Y21PSnJVaEJTbkltdUtZY2dKVFZIMGsySFRYMy9wSzJiemtMSTltNFpJMjZF?=
 =?utf-8?Q?KAjM/sLwRVzi5qSJwfywjdo5u?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 15c72fc0-62d3-409a-6ebe-08dce8fc1eb9
X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5040.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 07:21:12.9064
 (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: ClxSJbMypjwSgVNXE+ayKv16uEk8DwlwCohpEbKZJ5sfusyFiE3sCLj3f37cgUNKq4JuxS3ST++tOH1qsE/kgg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6240


On 10/9/2024 2:05 PM, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
>
> All users of amd_mp2_pci_remove(), where pci_intx() is used, call
> pcim_enable_device(), which is why the driver needs the always-managed
> version.
>
> Replace pci_intx() with pcim_intx().
>
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> ---
>   drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        | 4 ++--
>   drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 2 +-
>   2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
> index 0c28ca349bcd..48cfd0c58241 100644
> --- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
> +++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
> @@ -122,7 +122,7 @@ int amd_sfh_irq_init_v2(struct amd_mp2_dev *privdata)
>   {
>   	int rc;
>   
> -	pci_intx(privdata->pdev, true);
> +	pcim_intx(privdata->pdev, true);
>   
>   	rc = devm_request_irq(&privdata->pdev->dev, privdata->pdev->irq,
>   			      amd_sfh_irq_handler, 0, DRIVER_NAME, privdata);
> @@ -248,7 +248,7 @@ static void amd_mp2_pci_remove(void *privdata)
>   	struct amd_mp2_dev *mp2 = privdata;
>   	amd_sfh_hid_client_deinit(privdata);
>   	mp2->mp2_ops->stop_all(mp2);
> -	pci_intx(mp2->pdev, false);
> +	pcim_intx(mp2->pdev, false);
>   	amd_sfh_clear_intr(mp2);
>   }
>   
> diff --git a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
> index db36d87d5634..ec9feb8e023b 100644
> --- a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
> +++ b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
> @@ -289,7 +289,7 @@ static void amd_mp2_pci_remove(void *privdata)
>   	sfh_deinit_emp2();
>   	amd_sfh_hid_client_deinit(privdata);
>   	mp2->mp2_ops->stop_all(mp2);
> -	pci_intx(mp2->pdev, false);
> +	pcim_intx(mp2->pdev, false);
>   	amd_sfh_clear_intr(mp2);
>   }
>   

Acked-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>

Thanks,
--
Basavaraj




From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:37:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:37:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815597.1229571 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synjc-0000z4-B4; Thu, 10 Oct 2024 07:37:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815597.1229571; Thu, 10 Oct 2024 07: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 1synjc-0000yx-8H; Thu, 10 Oct 2024 07:37:20 +0000
Received: by outflank-mailman (input) for mailman id 815597;
 Thu, 10 Oct 2024 07:37: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1synjb-0000yr-Ff
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:37:19 +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 79a4d982-86da-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 09:37:17 +0200 (CEST)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2fac3f20f1dso5508291fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:37:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c937119cb7sm397087a12.36.2024.10.10.00.37.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:37:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79a4d982-86da-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728545837; x=1729150637; 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=tQnXuhNqMxB9TrZXnrkJ3OQqznQ3f1gP5LlC3kIKJRQ=;
        b=SBsphgEy5OvhSTUEk7vG2sX5uv+lNI0fQQyGk3viiWvTxeGJclVSvMKsi++g9l9hfi
         dZuj7m2wx9KL60goAKuKIN7jX131pWfQWA7g9J44s8cAsdi8Wob2AEk9w+594z/zIS7Q
         KC7fAyfrmSxNtCsz144PA8K3HGvQB0HRecy+i8/eBPGGWj55ViW4bKnMRIvvqKp7zzVe
         yEX0FPvm5T4LX2nMmTK9FTWFkrvVl5vmlGU05x46n1t+6DsGKcQ2LJTumiUWmX2oLlVZ
         FxU7bdc5G3PJTzSilK8Gu5iZNxNVTDfTf4kU+otMFODmsYzANiScWwiLd+LpNSg8ZRqd
         dDjg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728545837; x=1729150637;
        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=tQnXuhNqMxB9TrZXnrkJ3OQqznQ3f1gP5LlC3kIKJRQ=;
        b=NowYzZyGKZsdiUwYQu7tW4LowLWLvTMoou/oO1FMIt9wiTb6qmyZGuKu2A7Rlr8pAG
         BVfuDmzRC+YKPnL83SuAXlNxysxcwe7spaiW295qzZvx7eD0eZPJ69FhZNbG7hKuLpgu
         g/ElHT/ZcPiyQNb3YxnBMrO1HZtGlsMpp16PvYcd01bF3CBfQSR0dQt+Ki814wQCM7pr
         7Uo9K/Ovn6oTZxh1p9xGFmRL5gX59+nLaCvbMrfDWskdikMGvmVCtI1gT/+QoHJE5FTu
         GByO/T7pRXOhB8VNabDIkQAD4GZVRawwKTyec567y327RpjYoZdOOdoWXxsLFCD1k/8i
         MxYQ==
X-Forwarded-Encrypted: i=1; AJvYcCVprt2GRM+aX229qt/TAUcr3ZXAgJ2SXTbF5WRgK+UdA2TX7Z25XT+AL/npiKcg5DZT7V4AmEZUnLk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywf4c9wKkqkEPWnRuYN7j7nZmzZIw+U6LFgguc73e2YAzg1DIyz
	xFbYOatI3XkAJ6SBb00V1wEJ+I+dz788cwcv2Guhxkgia9kA1+YRj/uIZoEEcg==
X-Google-Smtp-Source: AGHT+IHlmBrMf6y829tp/3wYt8FcIF+gpF58pDTBDybLvFVd1B8B20+aCzUsX7z5rdfzGhpI5DZZ+g==
X-Received: by 2002:a05:651c:b0e:b0:2fa:ccae:d1c5 with SMTP id 38308e7fff4ca-2fb1872cdb0mr36957391fa.10.1728545836753;
        Thu, 10 Oct 2024 00:37:16 -0700 (PDT)
Message-ID: <18629419-6051-4d00-8b1a-218427b93ef6@suse.com>
Date: Thu, 10 Oct 2024 09:37:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 01/11] lib/x86: Relax checks about policy compatibility
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-2-alejandro.vallejo@cloud.com>
 <1a57c4c9-baa9-44b4-8a3f-0f821d8c2484@suse.com>
 <D4RED6YCM7AH.1QVPIV4K9SB5O@cloud.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: <D4RED6YCM7AH.1QVPIV4K9SB5O@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 17:57, Alejandro Vallejo wrote:
> On Wed Oct 9, 2024 at 10:40 AM BST, Jan Beulich wrote:
>> On 01.10.2024 14:37, Alejandro Vallejo wrote:
>>> --- a/xen/lib/x86/policy.c
>>> +++ b/xen/lib/x86/policy.c
>>> @@ -15,7 +15,16 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
>>>  #define FAIL_MSR(m) \
>>>      do { e.msr = (m); goto out; } while ( 0 )
>>>  
>>> -    if ( guest->basic.max_leaf > host->basic.max_leaf )
>>> +    /*
>>> +     * Old AMD hardware doesn't expose topology information in leaf 0xb. We
>>> +     * want to emulate that leaf with credible information because it must be
>>> +     * present on systems in which we emulate the x2APIC.
>>> +     *
>>> +     * For that reason, allow the max basic guest leaf to be larger than the
>>> +     * hosts' up until 0xb.
>>> +     */
>>> +    if ( guest->basic.max_leaf > 0xb &&
>>> +         guest->basic.max_leaf > host->basic.max_leaf )
>>>          FAIL_CPUID(0, NA);
>>>  
>>>      if ( guest->feat.max_subleaf > host->feat.max_subleaf )
>>
>> I'm concerned by this in multiple ways:
>>
>> 1) It's pretty ad hoc, and hence doesn't make clear how to deal with similar
>> situations in the future.
> 
> I agree. I don't have a principled suggestion for how to deal with other cases
> where we might have to bump the max leaf. It may be safe (as is here becasue
> everything below it is either used or unimplemnted), but AFAIU some leaves
> might be problematic to expose, even as zeroes. I suspect that's the problem
> you hint at later on about AMX and AVX10?

Not exactly, but perhaps somewhat related (see below).

>> 2) Why would we permit going up to leaf 0xb when x2APIC is off in the respective
>> leaf?
> 
> I assume you mean when the x2APIC is not emulated? One reason is to avoid a
> migration barrier, as otherwise we can't migrate VMs created in "leaf
> 0xb"-capable hardware to non-"leaf 0xb"-capable even though the migration is
> perfectly safe.

Leaf 0xb ought to be synthesized anyway (to match the guest's topology);
hardware capabilities hence don't matter here.

> Also, it's benign and simplifies everything. Otherwise we have to find out
> during early creation not only whether the host has leaf 0xb, but also whether
> we're emulating an x2APIC or not.

The policy passed by the tool stack will tell you what the choice there was.

> Furthermore, not doing this would actively prevent emulating an x2APIC on AMD
> Lisbon-like silicon even though it's fine to do so.

I'm afraid I don't understand this. If the tool stack cleared the x2APIC bit,
x2APIC ought to not be emulated. If it sets it (as permitted by the max
policy), x2APIC would be emulated.

> Note that we have a broken
> invariant in existing code where the x2APIC is emulated and leaf 0xb is not
> exposed at all; not even to show the x2APIC IDs.

Well, fixing this is what this series is about, isn't it?

>> 3) We similarly force a higher extended leaf in order to accommodate the LFENCE-
>> is-dispatch-serializing bit. Yet there's no similar extra logic there in the
>> function here.
> 
> That's done on the host policy though, so there's no clash.

There's no clash, sure, but ...

> In calculate_host_policy()...
> 
> ```
>       /*
>        * 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);
> ```
> 
> One could imagine doing the same for leaf 0xb and dropping this patch, but then
> we'd have to synthesise something on that leaf for hardware that doesn't have
> it, which is a lot more annoying.

... we're doing things one way there and another way here. Which is generally
undesirable imo.

>> 4) While there the guest vs host check won't matter, the situation with AMX and
>> AVX10 leaves imo still wants considering here right away. IOW (taken together
>> with at least 3) above) I think we need to first settle on a model for
>> collectively all max (sub)leaf handling. That in particular needs to properly
>> spell out who's responsible for what (tool stack vs Xen).
> 
> I'm not sure I follow. What's the situation with AMX and AVX10 that you refer
> to?

See the prereq series to both, most recently posted at
https://lists.xen.org/archives/html/xen-devel/2024-08/msg00591.html

That's hacky; Andrew has indicated that he'd like to take care of this (mostly)
in the tool stack instead. Yet so far nothing has surfaced, hence I'm keeping
to have this dependency for both series.

Jan

> I'd assume that making ad-hoc decisions on this is pretty much unavoidable,
> but maybe the solution to the problem you mention would highlight a more
> general approach.
> 
> Cheers,
> Alejandro



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:46:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:46:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815604.1229581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synsP-0005hc-4e; Thu, 10 Oct 2024 07:46:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815604.1229581; Thu, 10 Oct 2024 07:46: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 1synsP-0005hV-28; Thu, 10 Oct 2024 07:46:25 +0000
Received: by outflank-mailman (input) for mailman id 815604;
 Thu, 10 Oct 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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1synsN-0005eJ-9x
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:46:23 +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 bde42b8c-86db-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 09:46:21 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-53993564cb1so695953e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:46:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f24574sm48666066b.50.2024.10.10.00.46.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:46:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bde42b8c-86db-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728546381; x=1729151181; 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=yBFbtpsNxcKFnfYflurJWYgY7VsZT6VjBajSlF0bRFc=;
        b=ZyCCx5V771kpD/susT4300VfWllN2X9c6X07AGvyG9hD2Jj9XkGSxCYcY1eiWGHBOh
         TXU/56ff0ZrB7OgaL/63N7lfbbXZKugwOuwFwD4BtJIqYhapYj5pggbrPTW2h9KRJY1V
         mGXsoVm7m0m5gZPVZnbPFy5m7MvSkYHLDjGZFnBzpiFniCXsbbkjv3Sr41jUPd1GUhEx
         oqEZzcbyEs0YG7OqBFJXp2KwEioiyQzeHa1As0JREauU5UkV5lMufwpu+QJcERkKKtcn
         SXsoscQwZMxNHrQsmc7vmd2uEDPojC6AbWPkcKlX6Cvi1MOu3Jz3bBaBHKR0YvXi01YB
         I5RQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728546381; x=1729151181;
        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=yBFbtpsNxcKFnfYflurJWYgY7VsZT6VjBajSlF0bRFc=;
        b=eH6RKu7YPY7wsIdhybtYY/aRA7Zuu2ngkHXc37yDYTJbBv9EB1tiISZqWnvv1YgOyJ
         zi5KxTo88Yui6kU2YlzvWc6TYuGPNFJNQ1uYTbUk2QbA7jTtsGLz3LQjt02WR7eTleOE
         LpXpHgwOeP/K2yL2+1uILOyJhdhtCSjsSpgz55y0LhrcBiB8YbG2T76Y4CYwT/+dSRnO
         /I6TlKKnrPR6ON+CIdf2N7qeo2cfmTFyhz9/RBsk5si3UqYsOgovtE7uE0WvlDOVE4v/
         tKCDN+v52ZlL392MNK+JJ1tp+7Rxtflb0nFJIY4/rx7nWbjdDakks+n5KJlMs+3izNCN
         Hm7Q==
X-Forwarded-Encrypted: i=1; AJvYcCVlPY8HSVVbVCsTtXMbuyQ4Fm9f/d/DK921ekgQU5qbYJl/NoT7zS7IYScdQ/FecEM20ae2PPqFa1U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxVcPx81oTiXK2TuCLO1ZqaAcdpNCzuEgOkB0kTCX5dyHbuDTeH
	A16AZHil4Sk3/Tcmlvo+4HhBwiBYUQAQhTfTCm5175ufOeuVXIoow04YCq6Bzg==
X-Google-Smtp-Source: AGHT+IHUkhRpNg9Czdodp7FJCafGHla0ZGWQtV3z+Rp14N+WflY8NEDuODURYp0jA9jyR/tl/y7x4w==
X-Received: by 2002:a05:6512:10d3:b0:530:aea3:4659 with SMTP id 2adb3069b0e04-539c4892bd7mr3121372e87.9.1728546380629;
        Thu, 10 Oct 2024 00:46:20 -0700 (PDT)
Message-ID: <effce766-687b-4cbc-b5e3-46dd7a194370@suse.com>
Date: Thu, 10 Oct 2024 09:46:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 04/11] xen/x86: Add supporting code for uploading LAPIC
 contexts during domain create
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: 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: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-5-alejandro.vallejo@cloud.com>
 <acb85f02-351d-4ca2-9fd2-276276ed1c8e@suse.com>
 <D4RFD776JP2U.373W6D66DFGC6@cloud.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: <D4RFD776JP2U.373W6D66DFGC6@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 18:44, Alejandro Vallejo wrote:
> On Wed Oct 9, 2024 at 2:28 PM BST, Jan Beulich wrote:
>> On 01.10.2024 14:38, Alejandro Vallejo wrote:
>>> If toolstack were to upload LAPIC contexts as part of domain creation it
>>
>> If it were to - yes. But it doesn't, an peeking ahead in the series I also
>> couldn't spot this changing. Hence I don#t think I see why this change
>> would be needed, and why ...
> 
> Patch 10 does. It's the means by which (in a rather roundabout way)
> toolstack overrides vlapic->hw.x2apic_id.

Oh, indeed - I managed to not spot this. I think you want to either re-word
the description here to make clear there's actually a plan to do what is
being said as purely hypothetical, or simply fold the patches.

>>> would encounter a problem were the architectural state does not reflect
>>> the APIC ID in the hidden state. This patch ensures updates to the
>>> hidden state trigger an update in the architectural registers so the
>>> APIC ID in both is consistent.
>>>
>>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>>> ---
>>>  xen/arch/x86/hvm/vlapic.c | 20 ++++++++++++++++++++
>>>  1 file changed, 20 insertions(+)
>>>
>>> diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
>>> index 02570f9dd63a..a8183c3023da 100644
>>> --- a/xen/arch/x86/hvm/vlapic.c
>>> +++ b/xen/arch/x86/hvm/vlapic.c
>>> @@ -1640,7 +1640,27 @@ static int cf_check lapic_load_hidden(struct domain *d, hvm_domain_context_t *h)
>>>  
>>>      s->loaded.hw = 1;
>>>      if ( s->loaded.regs )
>>> +    {
>>> +        /*
>>> +         * We already processed architectural regs in lapic_load_regs(), so
>>> +         * this must be a migration. Fix up inconsistencies from any older Xen.
>>> +         */
>>>          lapic_load_fixup(s);
>>> +    }
>>> +    else
>>> +    {
>>> +        /*
>>> +         * We haven't seen architectural regs so this could be a migration or a
>>> +         * plain domain create. In the domain create case it's fine to modify
>>> +         * the architectural state to align it to the APIC ID that was just
>>> +         * uploaded and in the migrate case it doesn't matter because the
>>> +         * architectural state will be replaced by the LAPIC_REGS ctx later on.
>>> +         */
>>
>> ... a comment would need to mention a case that never really happens, thus
>> only risking to cause confusion.
> 
> I assume the "never really happens" is about the same as the previous
> paragraph? If so, the same answer applies.

Yes.

> About the lack of ordering in the migrate stream the code already makes no
> assumptions as to which HVM context blob might appear first in the vLAPIC area.
> 
> I'm not sure why, but I assumed it may be different on older Xen.

I agree with being flexible here; I'm not aware of anything in the migration spec
(and certainly not in the unwritten v1 one) mandating particular ordering.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:49:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:49:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815613.1229591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1synv2-000219-MI; Thu, 10 Oct 2024 07:49:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815613.1229591; Thu, 10 Oct 2024 07:49: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 1synv2-000212-Jq; Thu, 10 Oct 2024 07:49:08 +0000
Received: by outflank-mailman (input) for mailman id 815613;
 Thu, 10 Oct 2024 07:49: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1synv1-00020w-Nd
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:49:07 +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 206d7926-86dc-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 09:49:06 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c87c7d6ad4so752333a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:49:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c9370d2196sm420104a12.7.2024.10.10.00.49.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:49:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 206d7926-86dc-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728546546; x=1729151346; 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=7c2D3Mmu2goqbnbdSjnLzR1Xf59OTg9zIcYlxzvqdtw=;
        b=HM73N3Q9xFpMkRVSlaRVnjt/LKcBqqAWHRgCH2IaMmRFJjACz9usLVJgW8xZi7bu9k
         Usi/ZIJ6FkSivEsETclPHIZkp18FcT5C1wqmbG6LH9AjQez8OU2ReznArvaCEXRLruVF
         UyAlMcuN1qToqTUNcoAC9ZF53nmVF2j7vtM3/+6wv3L+8s0CHzGOOQY4LPQiexYrdGNr
         b/q1kyx/8L0qvNXVdiJ/h2FIsUEiks4e1JSsuLenG9zINI4LgmQKBXAu58blgS8ScZyM
         tjvgjWw+U4H1pyIkuoiCsGPHFsa0XPXJwWgb1L9t+t6i9lom4gV4EGOBHxMtJFp08/2m
         HDfQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728546546; x=1729151346;
        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=7c2D3Mmu2goqbnbdSjnLzR1Xf59OTg9zIcYlxzvqdtw=;
        b=XnszpfipOSg2+5KSr7YRhWlVn7oxACtlYqWjP8KdOMOmwEEfNIagQUEjnretYxpui0
         f1K0IfMDscDuZXT+DmMS6tmXOe/SEK3JC7Kb3F2x6k9vieCltqN01NQNy9T/GDIg4LFg
         n5W7ewZxQkVxd//mwALS7bpbjFa6K48V4b52OmTv6bt7UORUbV0H4aw6PwKOsWXaAKqW
         SV6esNkN9pODicDBnETV4jN9jN1paCo5sf5OqRZh0AnyT9voH/XHw16LvZu4/Dp+WvzG
         VRaSejMqdHI4/9ksZ8qFLMXggF97QS46ZzuZyUJM+7Z6XRhbIL5P9uvR1uBQv8c9oAFb
         bS+w==
X-Forwarded-Encrypted: i=1; AJvYcCUS2x7mXfkZfxMBE6673/G37Qse/Yk0/YT+fOss4rH/p1za8HF6nfXO8Qw3Jy1V6GRthtO4jbXobHQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwpCfUwcaKqxiCrWpoEtUEVYZRPT58A5TZ9yeJsoGcktMsFeSol
	HmHg1gQWrM1UhcKmpjVnHP+4nZjgyC1yuhILalhrieMT2nLsPYvmR/i4fGT3ig==
X-Google-Smtp-Source: AGHT+IGODX2I7293nNJRLHv6VRXnEQEiHHGnSvHrCsiY4l9FlIBoKMaXIG1OZh0NKoVsU3+1t7YV/g==
X-Received: by 2002:a05:6402:848:b0:5c8:b154:6506 with SMTP id 4fb4d7f45d1cf-5c91d5a368fmr3786282a12.17.1728546546193;
        Thu, 10 Oct 2024 00:49:06 -0700 (PDT)
Message-ID: <d079c013-1ae3-4cd4-a642-bed768f5a43b@suse.com>
Date: Thu, 10 Oct 2024 09:49:05 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 05/11] tools/hvmloader: Retrieve (x2)APIC IDs from the
 APs themselves
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-6-alejandro.vallejo@cloud.com>
 <f75dde2d-9c39-4be0-8465-6496a56cc658@suse.com>
 <D4RG3TTHTS1E.23ZAJIW3H4VC4@cloud.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: <D4RG3TTHTS1E.23ZAJIW3H4VC4@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 19:19, Alejandro Vallejo wrote:
> On Wed Oct 9, 2024 at 3:03 PM BST, Jan Beulich wrote:
>> On 01.10.2024 14:38, Alejandro Vallejo wrote:
>>> Make it so the APs expose their own APIC IDs in a LUT. We can use that
>>> LUT to populate the MADT, decoupling the algorithm that relates CPU IDs
>>> and APIC IDs from hvmloader.
>>>
>>> While at this also remove ap_callin, as writing the APIC ID may serve
>>> the same purpose.
>>
>> ... on the assumption that no AP will have an APIC ID of zero.
>>
>>> @@ -341,11 +341,11 @@ int main(void)
>>>  
>>>      printf("CPU speed is %u MHz\n", get_cpu_mhz());
>>>  
>>> +    smp_initialise();
>>> +
>>>      apic_setup();
>>>      pci_setup();
>>>  
>>> -    smp_initialise();
>>
>> I can see that you may want cpu_setup(0) to run ahead of apic_setup().
> 
> Not only that. This hunk ensures CPU_TO_X2APICID is populated ASAP for every
> CPU. Reading zeroes where a non-zero APIC ID should be is fatal and tricky to
> debug later. I tripped on enough "used the LUT before being set up" bugs to
> really prefer initialising it before anyone has a chance to misuse it.
> 
>> Yet is it really appropriate to run boot_cpu() ahead of apic_setup() as well?
> 
> I would've agreed before the patches that went in to replace INIT-SIPI-SIPI
> with hypercalls, but now that hvmloader is enlightened it has no real need for
> the APIC to be configured. If feels weird because you wouldn't use this order
> on bare metal. But it's fine under virt.
> 
>> At the very least it feels logically wrong, even if at the moment there
>> may not be any direct dependency (which might change, however, down the
>> road).
> 
> I suspect it feels wrong because you can't boot CPUs ahead of configuring your
> APIC in real hardware. But hvmloader is always virtualized so that point is
> moot. If anything, I'd be scared of adding code ahead of smp_initialise() that
> relies on CPU_TO_X2APICID being set when it hasn't yet.
> 
> If you have a strong view on the matter I can remove this hunk and call
> read_apic_id() from apic_setup(). But it wouldn't be my preference to do so.

No, with the explanations above it's fine to stay as is. Just that some of
what you say above needs to move into the patch description.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:54:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:54:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815621.1229602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syo0L-0003V4-BF; Thu, 10 Oct 2024 07:54:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815621.1229602; Thu, 10 Oct 2024 07: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 1syo0L-0003Ux-6C; Thu, 10 Oct 2024 07:54:37 +0000
Received: by outflank-mailman (input) for mailman id 815621;
 Thu, 10 Oct 2024 07: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syo0K-0003Ur-Dr
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:54:36 +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 e43b1edb-86dc-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 09:54:35 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9950d27234so89744066b.1
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:54:35 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f27eb3sm49314366b.84.2024.10.10.00.54.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:54:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e43b1edb-86dc-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728546875; x=1729151675; 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=SV0GgX63AI+D0pHn26hQPJ/dmOPgI9UOkDjcjw6SNkE=;
        b=aDmZqc+5n350mmCa3hgoD0LO28PdageRlIG5ddM6RRO/8LLR5RpjgTc5rQsH63nMKo
         6Uet3srhQe5CQWJdTgUlK6ug7ttoQzuFseTaA2G8G23cnMiaYLI4+s8K0tn3GQqymcdV
         ce5UD9dBB+LJF4F/+FMdmkWSudgb2Jletynes1HDoMaFYTcGu974NbmsLmJEdXGpVaxJ
         ze4LAdHIEQgr5hj6s6Dtqqz4M5Eaxz8rhaxJL2AMV9MZbT2oRWD183uffy6BKqNXXiQ7
         pt//qYiM0O7jreYCSr89lqNB2xwgTX37QOVA8Kh338eAU1oSkzrgqr0hpFJl3LPWlVGo
         JTnA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728546875; x=1729151675;
        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=SV0GgX63AI+D0pHn26hQPJ/dmOPgI9UOkDjcjw6SNkE=;
        b=RcIym0i9keHmwL7OgTih857xHXtAXq491rVBamOpRWIJkVq6+vEwKcF/PHpumwzeu3
         bvbOonTxZCE4qa30Y1q5crTvH45gst3D8SlGr+AFu+DK4a/9Y8sGUKr/s7H0FqPh1J77
         rbMC2xI74qm+EWqT7YSBNZXjgVrSK1e0hjeZrnbomm9BMNXpSbv5IahwS8mQYZRnTqHx
         gV/TxBpmpzX0918hWEiUuApNWpsOddf0tvi3wOjIzu0s0aS9TeYYMbtnGfUxYN5qIxSN
         z+5L1V2Iq/PnCR1COOpAMZ9KuI0hvAgi0RwnAh/dsj8NE4bMPy5ei5ObIW1qBfLYSXeO
         0+2Q==
X-Forwarded-Encrypted: i=1; AJvYcCWdphKdxvf3aR/JJgThpBdmzLlxRi2o5wUCkC+r4HUHxcYea0yIhvxs7O23N4aLF4IKiASyAYzu9IQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwKCT48sASvlz19T7AyW7Q8Fp5c2QtyfN4SvGLBGTixlXuEJr+v
	wCz+k4hu5w559QejzqDAj/3IAwzOYEuCTTCUI+tb2R6IXM01xWSvmsSDlXZuBI6SelwFOTGT5iA
	=
X-Google-Smtp-Source: AGHT+IHfyULzVHcvPSDjYq20L6r5bxqUPjL62D08J6JswgAiOXBg+VVzbT0YKWYYudfTJBZZeMdr0g==
X-Received: by 2002:a17:906:c104:b0:a99:36fa:9575 with SMTP id a640c23a62f3a-a998d1fa05bmr502885266b.32.1728546874737;
        Thu, 10 Oct 2024 00:54:34 -0700 (PDT)
Message-ID: <b6eb6268-9155-48cd-9b00-bc34f8d4a01b@suse.com>
Date: Thu, 10 Oct 2024 09:54:33 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 08/11] xen/lib: Add topology generator for x86
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-9-alejandro.vallejo@cloud.com>
 <7595b3ab-0891-42f7-81b0-5666651046b9@suse.com>
 <D4RGXLJZQ6MA.1B1ND4RWZESBE@cloud.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: <D4RGXLJZQ6MA.1B1ND4RWZESBE@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 19:57, Alejandro Vallejo wrote:
> On Wed Oct 9, 2024 at 3:45 PM BST, Jan Beulich wrote:
>> On 01.10.2024 14:38, Alejandro Vallejo wrote:
>>> --- a/xen/lib/x86/policy.c
>>> +++ b/xen/lib/x86/policy.c
>>> @@ -2,6 +2,94 @@
>>>  
>>>  #include <xen/lib/x86/cpu-policy.h>
>>>  
>>> +static unsigned int order(unsigned int n)
>>> +{
>>> +    ASSERT(n); /* clz(0) is UB */
>>> +
>>> +    return 8 * sizeof(n) - __builtin_clz(n);
>>> +}
>>> +
>>> +int x86_topo_from_parts(struct cpu_policy *p,
>>> +                        unsigned int threads_per_core,
>>> +                        unsigned int cores_per_pkg)
>>> +{
>>> +    unsigned int threads_per_pkg = threads_per_core * cores_per_pkg;
>>
>> What about the (admittedly absurd) case of this overflowing?
> 
> Each of them individually could overflow the fields in which they are used.
> 
> Does returning EINVAL if either threads_per_core or cores_per_pkg overflow the
> INTEL structure j

The sentence looks unfinished, so I can only vaguely say that my answer to
the question would likely be "yes".

>>> +    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;
>>
>> I wasn't able to find documentation for this, well, anomaly. Can you please
>> point me at where this is spelled out?
> 
> That's showing all unified caches as caches covering the whole package. We
> could do it the other way around (but I don't want to reverse engineer what the
> host policy says because that's irrelevant). There's nothing in the SDM (AFAIK)
> forcing L2 or L3 to behave one way or another, so we get to choose. I thought
> it more helpful to make all unified caches unified across the package. to give
> more information in the leaf.
> 
> My own system exposes 2 unified caches (data trimmed for space):
> 
> ``` cpuid
> 
>    deterministic cache parameters (4):
>       --- cache 0 ---
>       cache type                         = data cache (1)
>       cache level                        = 0x1 (1)
>       maximum IDs for CPUs sharing cache = 0x1 (1)
>       maximum IDs for cores in pkg       = 0xf (15)
>       --- cache 1 ---
>       cache type                         = instruction cache (2)
>       cache level                        = 0x1 (1)
>       maximum IDs for CPUs sharing cache = 0x1 (1)
>       maximum IDs for cores in pkg       = 0xf (15)
>       --- cache 2 ---
>       cache type                         = unified cache (3)
>       cache level                        = 0x2 (2)
>       maximum IDs for CPUs sharing cache = 0x1 (1)

Note how this is different ...

>       maximum IDs for cores in pkg       = 0xf (15)
>       --- cache 3 ---
>       cache type                         = unified cache (3)
>       cache level                        = 0x3 (3)
>       maximum IDs for CPUs sharing cache = 0x1f (31)

... from this, whereas your code would make it the same.

Especially if this is something you do beyond / outside the spec, it imo
needs reasoning about in fair detail in the description.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:55:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:55:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815627.1229612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syo0y-0003ye-HA; Thu, 10 Oct 2024 07:55:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815627.1229612; Thu, 10 Oct 2024 07: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 1syo0y-0003yX-EW; Thu, 10 Oct 2024 07:55:16 +0000
Received: by outflank-mailman (input) for mailman id 815627;
 Thu, 10 Oct 2024 07:55: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syo0x-0003Ur-B7
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:55:15 +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 fbc5bf5f-86dc-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 09:55:14 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c91d0eadbfso785898a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 00:55:14 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80de0cesm49868666b.182.2024.10.10.00.55.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 00:55:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fbc5bf5f-86dc-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728546914; x=1729151714; 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=l2YC2BxolA0sbglPQx8KzhGWtwxdyMdSWKHmLTWIhaY=;
        b=DWsECW2KPqgP7ETkS/jZlx/f/0YgMT1e9w8tQlfBfsKVOMxKHlbwyKfr0AF6/xXM7H
         voG2CGnNyJTPQFPYR/pOKS0YbQVuAlRFUuws7niG7uIb/Wg0jXR8mMi5d7IQN7h9DlXa
         v/pfKON4VvIjGhEMiVbOG0zOLWinKQOLID47vk+Mkg1e6Ue9BW6XQWNhGid/QJIcIO4X
         +vZdEJhVDEW2wXBInRbPZwPHcpuRPx1rjSbkG2ov9MBNEyQpBKQwuqkFs7LlI5Sh43PT
         PC2aoJuvGR/osoIuVrbCtX4h5pnpJrlTs8T3j3tNODVmfbFzTFdb+04nS01jf4pleGQg
         +J8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728546914; x=1729151714;
        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=l2YC2BxolA0sbglPQx8KzhGWtwxdyMdSWKHmLTWIhaY=;
        b=ae6IZ6kl9OahDNOnS34rF3oPrfsknMnp47zZPI0gNd3JrsPrsTsK4cO9sWwOmTI6NC
         9f+L/Lck0Oc1sZxjZ5ErRMt2dG/D2tYr1DZrh587ydQ70pyxLWOWeuuRWb+SHaW9djIZ
         DKUTWdviMp93KwLCDAaAdLIs1X79n3KlX4U7yENT0m9UA5gtGFeGq1FCvfN18yvtm6p5
         HSYduWzU/SryZONHw40+m8jfg//3x175yTPl3Ky7OjBjSnSSP042p/g6Fyw94zHIJrDx
         rMPfmaxVGiKnMYDzajp9df0QKYIOKcU5/qunedL50RsxsMaC6b++N8j8VUKl5oGfLdZl
         QRaQ==
X-Forwarded-Encrypted: i=1; AJvYcCWA2N1kNNO1/WXU9gKDHhs7syCQChKtdtafeE6k2zbhLO09CDKtwx74osoXxGrv8aoHhuOGQTcGAnE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwAzKyy+/Z+fV4hv3mkdgFz+2AZ/mcEVEOX4bhJ3FgHQR7fsT1E
	CZmy9buEGTld0DRhjOGum24OqJmrZBvhC6INTWiXYKm0ay/jyvKBk62VDrhVuQ==
X-Google-Smtp-Source: AGHT+IEjnB9eFXnrvmRqdOMk01CvgZgpZqC3Tyt6MDF1UHe0WWLvw80Xy9kPTC9egSZZ70uitOUO9A==
X-Received: by 2002:a17:907:7d94:b0:a99:541d:8c0f with SMTP id a640c23a62f3a-a998d32b373mr484832466b.40.1728546914099;
        Thu, 10 Oct 2024 00:55:14 -0700 (PDT)
Message-ID: <dbae585c-fc5d-40bc-9c05-46de10e5ac5d@suse.com>
Date: Thu, 10 Oct 2024 09:55:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 09/11] xen/x86: Derive topologically correct x2APIC IDs
 from the policy
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-10-alejandro.vallejo@cloud.com>
 <56fc2b5e-54c6-46df-a044-de6efcc427d4@suse.com>
 <D4RGC7XGA2NU.A2M108CWPB1O@cloud.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: <D4RGC7XGA2NU.A2M108CWPB1O@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 19:29, Alejandro Vallejo wrote:
> On Wed Oct 9, 2024 at 3:53 PM BST, Jan Beulich wrote:
>> On 01.10.2024 14:38, Alejandro Vallejo wrote:
>>> 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 extended 0x26 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.
>>
>> Is the first sentence of this latter paragraph missing an "If" or "When"
>> at the beginning? As written I'm afraid I can't really make sense of it.
> 
> It's a statement of current affairs. Could be rewritten as...
> 
>    The helper returns the legacy mapping when leaf 0xb is not implemented (as
>    is the case at the moment).
> 
> Does that look better?

Yes.

Jan



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 07:59:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 07:59:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815632.1229622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syo5Q-0000b6-2T; Thu, 10 Oct 2024 07:59:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815632.1229622; Thu, 10 Oct 2024 07: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 1syo5P-0000az-W3; Thu, 10 Oct 2024 07:59:51 +0000
Received: by outflank-mailman (input) for mailman id 815632;
 Thu, 10 Oct 2024 07:59: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=1fZv=RG=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1syo5O-0000as-Ed
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 07:59:50 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20631.outbound.protection.outlook.com
 [2a01:111:f403:2418::631])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9eb0d512-86dd-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 09:59:49 +0200 (CEST)
Received: from CH2PR18CA0050.namprd18.prod.outlook.com (2603:10b6:610:55::30)
 by MW4PR12MB6998.namprd12.prod.outlook.com (2603:10b6:303:20a::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 07:59:43 +0000
Received: from CH1PEPF0000A349.namprd04.prod.outlook.com
 (2603:10b6:610:55:cafe::41) by CH2PR18CA0050.outlook.office365.com
 (2603:10b6:610:55::30) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23 via Frontend
 Transport; Thu, 10 Oct 2024 07:59:43 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH1PEPF0000A349.mail.protection.outlook.com (10.167.244.9) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 07:59:43 +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.39; Thu, 10 Oct
 2024 02:59:40 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9eb0d512-86dd-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=X02xCPqO76J3dnJa00uPbt2H078yKMZ498JBIi7w21W0BGr506YHMfT2rEImp111fjjuUdfa6QOMmugCOwc62s0/i6Vf27uEqhSrOa3k7i6itJLPy7YVRrgrss8se1Raq6nFPO7+7uelrQs8mBMz1CU3HOx9wfJO3HxcQMjZCXG8hmjwoeEwXV1bhLH8rB7Mv6iltKOKGhr+KO9bDOPXP3e//yZIJX1aDMz6IDTlIIQA+QN5fbjkESRtaERy1LobffhzmlQ2xM5VeWyb00ky1CGl7B8MNjECFl80/kofkRK2OuuMPRdCkR30hDs0B0qJFqAodCbNMEAmjFnSO8u2jw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=9gdCt5Jv6hMT61z14pdBUVE0kmhGMgvijH9MaPD7Tdk=;
 b=W668X+LXXORDxzzT7rDhcFJQfZ+1cKu5/p4oje9GmWoEoySuloLnVhtvB/jBz1pGd55/PrDap9gnA/2r0jIPtw8b4TBM/Jf2smlSNdDj5+sZg0HL71p+wZvrOt/yPrRy5Z+0c36gL2cgyM62Fgf5GnqcsiZ0DysmkzttlEQm+AxbW8wz2VyR9spqlo7GZElViI0EIE25VHNVVcgI5Th6r3+G2d1nuwAKwp6uop26bADcM70DMa0s4cA/jjEGTgB4ZO7pZTtoYVYbJDQ6f2x/LQKLFGRd8itI7R+Uc5mMLpwP4omUomQB2f7f69vnKn9rgveE8YPq0nmXHMmKIh3mfQ==
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=9gdCt5Jv6hMT61z14pdBUVE0kmhGMgvijH9MaPD7Tdk=;
 b=Nnbu2QIlnxrjktxYX1KNn4JkyWBy+FtSzA0X+A7Iw4E11zoYTzCM9Kldlzx0iNI9qRVwR5d3iCkMjhgedlLzalo5HU4GA/TNFNDQBN++r/x3uOxNpixKNN1TpoDyULrJ2WFqwUsyYa0HvQGscKpvjg/Joq0DLujqr4c2cDS1/SI=
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>
CC: <xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Jiqian Chen <Jiqian.Chen@amd.com>
Subject: [PATCH v2] xen: Remove dependency between pciback and privcmd
Date: Thu, 10 Oct 2024 15:58:48 +0800
Message-ID: <20241010075848.1002891-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: CH1PEPF0000A349:EE_|MW4PR12MB6998:EE_
X-MS-Office365-Filtering-Correlation-Id: d211a721-9c7e-464c-b061-08dce9018024
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?bHp5dzMyOVNqOWtFWEdLZXNNU056bTI0QzJoY09YWmEyb05Sbk85QVFST2xG?=
 =?utf-8?B?eGdpL01QYmhMZ3owUWFCUDdnOHNkSFM1OEwrOW5Vb1VwamxjVTBCT0FGVXdN?=
 =?utf-8?B?elorM2twa2tvblVQY09vbzNsNWsrTEtUMG1Ga2ltQkI0YWRuR0Uya2dFbUE4?=
 =?utf-8?B?ZmRqbDl6RVJ1cDBERDRSRUF2cUx3MVMxNXFlM0loNUtMYk8vNDBpY1FDY1hK?=
 =?utf-8?B?Y1RDUi9SVmpxcEpCcnRvVUU2OVRkVTdxam95djYxVGdaZUQ3TWh6K01VbzQv?=
 =?utf-8?B?TkVGNTgrcWtsWGhGbVROUy9saG1XS3BUNzZ0SysvN3dLS2dkTlRFYnNUVy8r?=
 =?utf-8?B?S2VUaGxWR3RHVlBhbXVEaS9VbVJFRFNoMEQ5SncyVWljdlVvNFBDTWhxWUgz?=
 =?utf-8?B?WFRVMTYwVkFQWTJ5b0UvUmZVd2p1V0RocTI1YmlEY1VQbU9pa0Z3ckhQNi9P?=
 =?utf-8?B?QnpsMHBEaFpzWXlmS1VGa3RiWHVBVW55djlXMTdjUTJvRi81VjdzVWU5b1Bi?=
 =?utf-8?B?ZmRVa0Y2TXByYWp4M1pPQ0dCbVpqZE9uQ3JWZ25rWVFhdkxaeGcwY3BzWU5s?=
 =?utf-8?B?UGxxSE9HMFVVbUY2N1hUR2p2N2tleGxwakdUMStBL1k1YmlVL3VSaXJtWWZW?=
 =?utf-8?B?UUdCWk5uQXJwejhuL0hpQWJYWkNBc2piZXlvV3RCdTBMdFMwZHNWZHRvb2k1?=
 =?utf-8?B?TndUZVpWY0RUeks0bU04ZlU3WTJWZFNUQVhnWlp2alJVYytnWTVXcEIyNFZH?=
 =?utf-8?B?aE5lRDFHU3FGTHNhMmY2ZlQyZ25tRGdMakM3MExuYm9vM1p3Y3BqYklKT2VS?=
 =?utf-8?B?Y3JNaktFcXZzUGl1ZHV6NjFneStNTDhlcldPc3I0MXVZSTlUa3hsQzdIVUNL?=
 =?utf-8?B?VmU3K0xlTktlMUlwL2ZBTEMzRVJpUSsxWXZSSHFPR3Q1RndjVGtwM0NRalUv?=
 =?utf-8?B?emxVaVZOdDUvbHVjN29Tblk4MFIyUTQvZGs0V0N5OTlGQVZ0OGNEazNRY2tY?=
 =?utf-8?B?R2F3eExaWWFMWU4rQUhXU1NMR2R2Skg0cXBZaVorZnlaOGxjcGttTzgzeFUv?=
 =?utf-8?B?Qkhua1JKNUVhT29aT1NWYmZWY1Bma1UvdkFZTmFJRWZ6QjdWREhuNHpwZG1j?=
 =?utf-8?B?aHVDK0NUaGdpSi9VK1lVZjZaQnpCVGl4OGRjRUpXSXladURJTVFQVlNmVlBj?=
 =?utf-8?B?K0NDMlp6K2pKV2RHL0g2Qmw0YXhEdFBWUlM0MXBwVXR0TXVhVmdHbVR4a1N2?=
 =?utf-8?B?Y3FGK2I5R2RlRSttYjc1WnlwVENHQnVpcHM0SWF6Uzdld3hkaXZSRmVSS21U?=
 =?utf-8?B?UkJDeFlwam5ONnJzYXFIbm5SckpySEJpLzNSUTJoQXR1aTlzWWJHR25UalBj?=
 =?utf-8?B?NktOaVFObzRJNVZXSTBNNnVycXdJcjF0dHd1akI2Z3dOYkhydDRncVd2TGRV?=
 =?utf-8?B?c1VmNTl5OEZPcHJQRmR6Z0ZzYUxKWVRhQTJwOU01elBqem4rdTQ2ZCs0Ni9F?=
 =?utf-8?B?b0ptckd2NDZWQ1BBZ1EzK3ZVak8rMjdMSzAzTzVnZ1pPU0NYVVlzc29sZFVC?=
 =?utf-8?B?NkZGY0FTVmhNTSs4aDdsM0FDQ0tBUU05djJnTG14azBMVTNwNVdIVkdGeXJl?=
 =?utf-8?B?LzJBWGxDbXkzdVNFM1daM1NRUDdYTkQ4NmRJOTF3UlAvdlF2LzEwMmdCRTFX?=
 =?utf-8?B?bGdvREszZUdBVnd2T3AyZ29ZOCs1Y2dMd1JuM04xSzY5TG9wWmV3TVRIZ0p3?=
 =?utf-8?B?R0M5SUJIejR5elgvLzFBMW40R1JHK0wrN2ZPUVF6dXovTWRFQVVSSFI5RDRs?=
 =?utf-8?B?TnFpOXhhbHZCeWRRVDNXOCttbkFtTjdzMytwRkhVa0dqYUQrQ3V0VnNwL1Zo?=
 =?utf-8?Q?bcn519/9FjniD?=
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:(13230040)(82310400026)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 07:59:43.2801
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d211a721-9c7e-464c-b061-08dce9018024
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:
	CH1PEPF0000A349.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6998

Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
adds a weak reverse dependency to the config XEN_PRIVCMD definition, that
dependency causes xen-privcmd can't be loaded on domU, because
dependent xen-pciback is always not be loaded successfully on domU.

To solve above problem, remove that dependency, and do not call
pcistub_get_gsi_from_sbdf() directly, instead add a hook in
drivers/xen/apci.c, xen-pciback register the real call function, then in
privcmd_ioctl_pcidev_get_gsi call that hook.

Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
v1->v2 changes:
Added hook xen_acpi_get_gsi_from_sbdf.
Changed pcistub_get_gsi_from_sbdf to static and pciback register it as the real hook function.
---
 drivers/xen/Kconfig                |  1 -
 drivers/xen/acpi.c                 | 17 +++++++++++++++++
 drivers/xen/privcmd.c              |  6 ++----
 drivers/xen/xen-pciback/pci_stub.c |  4 ++--
 include/xen/acpi.h                 | 12 ++++--------
 5 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
index 72ddee4c1544..f7d6f47971fd 100644
--- a/drivers/xen/Kconfig
+++ b/drivers/xen/Kconfig
@@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
 config XEN_PRIVCMD
 	tristate "Xen hypercall passthrough driver"
 	depends on XEN
-	imply XEN_PCIDEV_BACKEND
 	default m
 	help
 	  The hypercall passthrough driver allows privileged user programs to
diff --git a/drivers/xen/acpi.c b/drivers/xen/acpi.c
index 9e2096524fbc..0bff2f3a87d2 100644
--- a/drivers/xen/acpi.c
+++ b/drivers/xen/acpi.c
@@ -125,3 +125,20 @@ int xen_acpi_get_gsi_info(struct pci_dev *dev,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_info);
+
+get_gsi_from_sbdf_t get_gsi_from_sbdf = NULL;
+
+void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func)
+{
+	get_gsi_from_sbdf = func;
+}
+EXPORT_SYMBOL_GPL(xen_acpi_register_get_gsi_func);
+
+int xen_acpi_get_gsi_from_sbdf(u32 sbdf)
+{
+	if (get_gsi_from_sbdf)
+		return get_gsi_from_sbdf(sbdf);
+
+	return -EINVAL;
+}
+EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_from_sbdf);
\ No newline at end of file
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 3273cb8c2a66..4f75bc876454 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -850,15 +850,13 @@ static long privcmd_ioctl_mmap_resource(struct file *file,
 static long privcmd_ioctl_pcidev_get_gsi(struct file *file, void __user *udata)
 {
 #if defined(CONFIG_XEN_ACPI)
-	int rc = -EINVAL;
+	int rc;
 	struct privcmd_pcidev_get_gsi kdata;
 
 	if (copy_from_user(&kdata, udata, sizeof(kdata)))
 		return -EFAULT;
 
-	if (IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND))
-		rc = pcistub_get_gsi_from_sbdf(kdata.sbdf);
-
+	rc = xen_acpi_get_gsi_from_sbdf(kdata.sbdf);
 	if (rc < 0)
 		return rc;
 
diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
index 2f3da5ac62cd..900e6199eec7 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -227,7 +227,7 @@ static struct pci_dev *pcistub_device_get_pci_dev(struct xen_pcibk_device *pdev,
 }
 
 #ifdef CONFIG_XEN_ACPI
-int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
+static int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
 {
 	struct pcistub_device *psdev;
 	int domain = (sbdf >> 16) & 0xffff;
@@ -242,7 +242,6 @@ int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
 
 	return psdev->gsi;
 }
-EXPORT_SYMBOL_GPL(pcistub_get_gsi_from_sbdf);
 #endif
 
 struct pci_dev *pcistub_get_pci_dev_by_slot(struct xen_pcibk_device *pdev,
@@ -484,6 +483,7 @@ static int pcistub_init_device(struct pcistub_device *psdev)
 		if (err)
 			goto config_release;
 		psdev->gsi = gsi;
+		xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
 	}
 #endif
 
diff --git a/include/xen/acpi.h b/include/xen/acpi.h
index daa96a22d257..ef4f70e4a557 100644
--- a/include/xen/acpi.h
+++ b/include/xen/acpi.h
@@ -91,13 +91,9 @@ static inline int xen_acpi_get_gsi_info(struct pci_dev *dev,
 }
 #endif
 
-#ifdef CONFIG_XEN_PCI_STUB
-int pcistub_get_gsi_from_sbdf(unsigned int sbdf);
-#else
-static inline int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
-{
-	return -1;
-}
-#endif
+typedef int (*get_gsi_from_sbdf_t)(u32 sbdf);
+
+void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func);
+int xen_acpi_get_gsi_from_sbdf(unsigned int sbdf);
 
 #endif	/* _XEN_ACPI_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:03:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:03:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815651.1229632 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syo8y-0002he-RT; Thu, 10 Oct 2024 08:03:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815651.1229632; Thu, 10 Oct 2024 08: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 1syo8y-0002hX-Ot; Thu, 10 Oct 2024 08:03:32 +0000
Received: by outflank-mailman (input) for mailman id 815651;
 Thu, 10 Oct 2024 08:03: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syo8y-0002hR-De
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:03:32 +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 232d392d-86de-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 10:03:30 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c896b9b4e0so758481a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:03:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f35e18sm50914666b.90.2024.10.10.01.03.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 01:03:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 232d392d-86de-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728547410; x=1729152210; 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=ubZGI2YfwRe7yH9tlhRCZrl93uTdEJwxHa1fjUjt1YE=;
        b=aBsURBb7DIzUc9Gfke77UUYZ/BrA8s9JReSxoNyzEYg6BZmI0sDBG4PtW/kMe5zsmF
         McuYP6zIkTVUw2m/kix1kC3f3wFHnYakEr0C+3/GGKF5j4gcvCm4DuHLyjqi7aiIKwjM
         Q+Pj1jVLmh1PuDfyp0mcLSHRdjgsJHNII9VJVJhvVef4+YVQpt5WU5398hYcG9u5RRfg
         XoT48oUODL/arY/bxmS42fY3bGrnbvkQV5RPoyhKlga1gveJVsZ1XQ9TbwOGlcP8e3Ci
         TetLdpIXiMG9cNaBzxGKGRPWsqrdKn0v2PsMvotjbvqHngC/xiGJVw+OR25q/gLORdxQ
         yOMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728547410; x=1729152210;
        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=ubZGI2YfwRe7yH9tlhRCZrl93uTdEJwxHa1fjUjt1YE=;
        b=gB1XW7PkOk5kaIQerSIpzyP3OizOd8sw3+8ZUPadeeAPQK2mdM1IbaLmpGObe7AWq7
         0HOMipj2Sbo/zwafgNHrVIqyyiK36Y30EmyXBEvw+j6ETRzmEUNLeA70DDjR5PxEkFf5
         nOX0lNkwK+X+aOOWJhPqcJsse4G0Yry0+vRn/DXbaWJs3SPDY3dsiBlDCxbFhXzgLqWt
         N6P7XyBCXO7fJtV2YkGtQx0cAJFRSxwqReEH5mewKGUu8wohDLrSwfbbCCquf95d93jy
         oKy4++RKPhkw9vcMtpZ8dn+VMZozL5/lGezh2aouN04zdWKxP6VdcspRLL1WzoDfLrPr
         fzIg==
X-Forwarded-Encrypted: i=1; AJvYcCUqCsIM/knv38UhuCfnrSPMYJAx5ovgg1v3zKsRCVH9WQhrjZIurQO2QlnaYIQgakaGGqxCTTAKprI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyCGfAKZGIWLVxx/9BmIPFiynTYqXiYM3MYosRPD4gYmmlUWmQ8
	vxHyB+u6AOFVQtzA8fj/RA2B0CgASmsuaz0FKVxbITX0tAisNfJ96m+TrFgVkA==
X-Google-Smtp-Source: AGHT+IESffypITbUP+NGKJEW+MqBawuutNzrkPL0ZrhuNsqFi/dTS9wf4AUB3o2vKdcW4RFSczLszA==
X-Received: by 2002:a17:907:8686:b0:a99:5881:c6a0 with SMTP id a640c23a62f3a-a998d21a132mr482222866b.36.1728547409799;
        Thu, 10 Oct 2024 01:03:29 -0700 (PDT)
Message-ID: <e68ea3c0-f454-4773-89b1-affbc0d347a3@suse.com>
Date: Thu, 10 Oct 2024 10:03:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 25/44] x86/boot: convert create_dom0 to use boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-26-dpsmith@apertussolutions.com>
 <1bc18234-2e50-467d-875a-3968165f5570@amd.com>
 <70d98462-8006-4ae2-9774-f21152be2362@apertussolutions.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: <70d98462-8006-4ae2-9774-f21152be2362@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10.10.2024 01:02, Daniel P. Smith wrote:
> On 10/8/24 12:52, Jason Andryuk wrote:
>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>> This commit changes create_dom0 to no longer take the individual 
>>> components and
>>> take struct boot_info instead. Internally, it is changed to locate the 
>>> kernel
>>> and ramdisk details from struct boot_info.
>>>
>>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>>> ---
>>>   xen/arch/x86/setup.c | 25 ++++++++++++++++---------
>>>   1 file changed, 16 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>>> index 0d2ee19998aa..c2bcddc50990 100644
>>> --- a/xen/arch/x86/setup.c
>>> +++ b/xen/arch/x86/setup.c
>>> @@ -946,10 +946,8 @@ static unsigned int __init copy_bios_e820(struct 
>>> e820entry *map, unsigned int li
>>>       return n;
>>>   }
>>> -static struct domain *__init create_dom0(const module_t *image,
>>> -                                         unsigned long headroom,
>>> -                                         module_t *initrd, const char 
>>> *kextra,
>>> -                                         const char *loader)
>>> +static struct domain *__init create_dom0(const struct boot_info *bi,
>>> +                                         const char *kextra)
>>>   {
>>>       static char __initdata cmdline[MAX_GUEST_CMDLINE];
>>> @@ -964,9 +962,21 @@ static struct domain *__init create_dom0(const 
>>> module_t *image,
>>>               .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED 
>>> : 0,
>>>           },
>>>       };
>>> +    int headroom, mod_idx = first_boot_module_index(bi, 
>>> BOOTMOD_RAMDISK);
>>
>> I think headroom should stay unsigned long, which matches struct 
>> boot_module.
> 
> Yes, that was not intentional. Will preserve the size.

And just to mention, with what was said on another patch mod_idx also
shouldn't be plain int.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:03:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:03:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815652.1229642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syo99-0002zM-40; Thu, 10 Oct 2024 08:03:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815652.1229642; Thu, 10 Oct 2024 08: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 1syo99-0002zF-1I; Thu, 10 Oct 2024 08:03:43 +0000
Received: by outflank-mailman (input) for mailman id 815652;
 Thu, 10 Oct 2024 08:03: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=qC6z=RG=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1syo98-0002hR-9T
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:03:42 +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 28706312-86de-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 10:03:40 +0200 (CEST)
Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com
 [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-547-YIxMJ3kNOQyo82OvGeYG7Q-1; Thu, 10 Oct 2024 04:03:37 -0400
Received: by mail-wr1-f69.google.com with SMTP id
 ffacd0b85a97d-37d45f1e935so239812f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:03:37 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b7edecasm776544f8f.97.2024.10.10.01.03.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 01:03:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 28706312-86de-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728547418;
	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=o6Yj13wTDdGSHGjmO/sKiO7EHFlnxmZYRbSplb6dOKU=;
	b=Ky3II9Pe3t+C8sy+q5JqGqtM4N6q9hBTKb3fJQlgpGWMAjh/9cw+QGUXkpPqBg1rpTBzT8
	V4UmNt3nnLLogexCYPieKb+IRFQhRRogi+ShxZMy9j5iU2XQht2xYDAkOysu8eD3CrUejR
	B7Q/maoBGW7UXO+VSgfbhrm788fJ/ZA=
X-MC-Unique: YIxMJ3kNOQyo82OvGeYG7Q-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728547415; x=1729152215;
        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=o6Yj13wTDdGSHGjmO/sKiO7EHFlnxmZYRbSplb6dOKU=;
        b=K0+LBCj2I6P98SKBHXaF6SBuFfsBw9OeQs5aWHt3Z3pr1sJ/bfTZYZHDxBFkrTGN3p
         rKVvG5NfW7qwwyLwl1Tooo7QFJKkETcCak7xha/4iaQNO9OYe5giIifJmTwLKAPA5W8N
         zNYHtpZ1l8EHSpgNQv0D8jsVJKpHMCPIrksn4fg1urKzgOdPnE6dBxNu1H82qstYDpGx
         65IgyJUVOkLaNVFNzKdPV2PvCvPgM19jLkzC6ZzXOpvjQZJJ0856Jb70ifyzA7u86zHR
         T07ID+jwAixILDSfZihxNu+d4eJxuMuXrT1DC8rGTanSCktnv3MISPICuSD7Wqa+4nbE
         Ks6A==
X-Forwarded-Encrypted: i=1; AJvYcCU08vwutwQD3RqhCr2ucbLKLSkfjygv3G7NuZtv4QZJThpGwptr/1FBVFFoUATbGRIdfNt70PYL9+o=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx26VVFKyb4wWi6qvayn6MvqpInxbMjjR4tMLUST6IetIRDBwW0
	ydVaeM6eTJNNmKUcXFzIZrUfYGnYu4+XVfZM+zT7tPj41b9OsSQgbbqKepSVvWEphEDefAatwjQ
	7Czd0qnSaNcnv6qxYRdsbDClHanzjiJLmukPHRPQGbBO1REGhzTDM2vuKjwLj377S
X-Received: by 2002:adf:f3c7:0:b0:37c:d299:b5f0 with SMTP id ffacd0b85a97d-37d3ab44f04mr2752605f8f.59.1728547414858;
        Thu, 10 Oct 2024 01:03:34 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFCPZ/N+8I6yvkHpm2WH4x1aWbcKYPe3oMumoEtWLk5b9nz8TmEseUc5OhVu0HO7+xCgvRnQw==
X-Received: by 2002:adf:f3c7:0:b0:37c:d299:b5f0 with SMTP id ffacd0b85a97d-37d3ab44f04mr2752523f8f.59.1728547414296;
        Thu, 10 Oct 2024 01:03:34 -0700 (PDT)
Message-ID: <b57dbf0c83125d58e4e2b488b5b5f71410fd8d6a.camel@redhat.com>
Subject: Re: [RFC PATCH 10/13] staging: rts5280: Use always-managed version
 of pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Philipp Hortmann <philipp.g.hortmann@gmail.com>, Greg Kroah-Hartman
	 <gregkh@linuxfoundation.org>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Alex Dubov
 <oakad@yahoo.com>,  Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>,  Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>,  Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>, 
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Thu, 10 Oct 2024 10:03:30 +0200
In-Reply-To: <411f3c94-58b5-471e-bc58-e23d89d2078f@gmail.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-11-pstanner@redhat.com>
	 <2024100936-brunette-flannels-0d82@gregkh>
	 <411f3c94-58b5-471e-bc58-e23d89d2078f@gmail.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Wed, 2024-10-09 at 21:41 +0200, Philipp Hortmann wrote:
> On 10/9/24 11:38, Greg Kroah-Hartman wrote:
> > On Wed, Oct 09, 2024 at 10:35:16AM +0200, Philipp Stanner wrote:
> > > pci_intx() is a hybrid function which can sometimes be managed
> > > through
> > > devres. To remove this hybrid nature from pci_intx(), it is
> > > necessary to
> > > port users to either an always-managed or a never-managed
> > > version.
> > >=20
> > > rts5208 enables its PCI-Device with pcim_enable_device(). Thus,
> > > it needs the
> > > always-managed version.
> > >=20
> > > Replace pci_intx() with pcim_intx().
> > >=20
> > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > ---
> > > =C2=A0 drivers/staging/rts5208/rtsx.c | 2 +-
> > > =C2=A0 1 file changed, 1 insertion(+), 1 deletion(-)
> >=20
> > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >=20
>=20
> Hi Philipp,
>=20
> this driver (rts5208) will be removed soon - patch is send in.
>=20
> Discussion about removal:
> https://lore.kernel.org/linux-staging/2024100943-shank-washed-a765@gregkh=
/T/#t


Alright, thx for the heads up.

I'm not entirely how best to deal with that, though. I could drop this
patch, but then the driver would end up with an unmanaged pci_intx().

Might this be a problem for users if my series lands sooner than the
removal, say in v6.13 and your removal in v6.14?

P.

>=20
> Thanks for your support.
>=20
> Bye Philipp
>=20



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:06:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:06:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815664.1229651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syoBP-0003n1-Ft; Thu, 10 Oct 2024 08:06:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815664.1229651; Thu, 10 Oct 2024 08:06: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 1syoBP-0003mu-DD; Thu, 10 Oct 2024 08:06:03 +0000
Received: by outflank-mailman (input) for mailman id 815664;
 Thu, 10 Oct 2024 08:06: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syoBO-0003mo-MJ
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:06:02 +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 7cd83a5e-86de-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 10:06:00 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9963e47b69so101554966b.1
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:06:00 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7eddedfsm51411666b.2.2024.10.10.01.05.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 01:05:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7cd83a5e-86de-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728547560; x=1729152360; 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=XlRV9DIwT71RsTUySrY0k9TNUZJHonRHrY/rCtzdFeQ=;
        b=Jlwc4CAaTIvt06MIYPMufCJWWWhpeqa4PRqJv1d5fHPCN6e7BJCrHhO4QuBIFUOKib
         ENvsB/eeAJalsfPY4+s9zCYjPpRlsds0zK6S8yTcr/fa8yfDW89rGIgcLRawpKOiZAWB
         4cy7vJ7tW0x51UbsnCcwApAJhJvBTpgxa1kXYWtB7RSuk9R20/eIvpqwt00vbP2rtxZB
         ipMacHS+hV8PJvpUDiLgvF8Ppq5nB4HYRoQhvrykaipqo/fPkGMQUW06DGxEAzB7OZ2S
         aR9OKbT8c01k1nbjX/BeWPoQh9QYMg/pioM5rEgtGxTuTD2jd3iy/pI84i3mc3xpsqan
         YPBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728547560; x=1729152360;
        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=XlRV9DIwT71RsTUySrY0k9TNUZJHonRHrY/rCtzdFeQ=;
        b=qg15Aex3Rsn2zCO0piNLiLstGIlHe2hJEJV1deX7yeudbOAtQou/MxAwv1treuCDND
         +CYvv2VZWETaD32Ln3ZezBdrUXxsIttdREr1vtfaVWiSqsZ/JlnIuXZEhjLzG+1kXFkO
         5oPvYaoDyQg6JfhzS67BgtVKPMlmUyVx6+fKLAoUWp2vTEDgVuOwUKfoceC5kKnDbBMf
         T4+Of/ZNbq1fJl5c0DYanjFt/7MP896S+V2OyMcZt0Trvnkftg3RD2Ja+goClJriPCQ2
         jiYCrdl6/xrQwDUgyYRPjHKaFCBnNemJ5B9gfvs5dQ4O6HKS20FUWIJVEjQmJ6Kn12GB
         MbhA==
X-Forwarded-Encrypted: i=1; AJvYcCVmU9wC6QHKYbYv61rSMQvn3R8o5J0MOH8Y+oQTkeFi+H6d4+UASpE1cgc7bsnjrFDxEVZT18nDvwQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzNQGFhZ3AVJxLlcQkXqxeI/RFhKsoXVypzMyx8A0s1ylOtJ1GJ
	Az1vdSFl1OJ/POvYfXy6sgfUAiXyYW7qNEVl1jdc1+3UrcCLT2Tu1604OOvh8g==
X-Google-Smtp-Source: AGHT+IGavdVypgFw6oemit4Y4EJXY7UgAAxa69uGm9D+1Q1Qf5ksrHxpQdsvRg9KYSq8d4vOzV0Uiw==
X-Received: by 2002:a17:907:940a:b0:a99:61f2:49eb with SMTP id a640c23a62f3a-a999e8cb30fmr244635066b.42.1728547560231;
        Thu, 10 Oct 2024 01:06:00 -0700 (PDT)
Message-ID: <9508d33a-c886-459a-a81f-96a81302e75a@suse.com>
Date: Thu, 10 Oct 2024 10:05:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 36/44] x86/boot: remove remaining early_mod references
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Jason Andryuk <jason.andryuk@amd.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-37-dpsmith@apertussolutions.com>
 <52ccddc1-762a-440d-bd27-8d9e9c507c7b@amd.com>
 <c2914ba3-0f6a-49fc-aae3-d7e5f465860c@suse.com>
 <8089b4b4-ac1c-4eec-9ee6-8fe5806d32ba@apertussolutions.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: <8089b4b4-ac1c-4eec-9ee6-8fe5806d32ba@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.10.2024 01:42, Daniel P. Smith wrote:
> On 10/9/24 02:53, Jan Beulich wrote:
>> On 08.10.2024 21:15, Jason Andryuk wrote:
>>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>>> Any direct usages of struct mod have been transitioned, remove the remaining
>>>> references to early_mod fields.
>>>
>>> This is unclear, please try to re-word.  "struct mod" and "early_mod"
>>> don't exist.
>>>
>>>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>>>> ---
>>>>    xen/arch/x86/setup.c | 31 +++++++++++--------------------
>>>>    1 file changed, 11 insertions(+), 20 deletions(-)
>>>>
>>>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>>>> index e9e3da3204f1..0ffe8d3ff8dd 100644
>>>> --- a/xen/arch/x86/setup.c
>>>> +++ b/xen/arch/x86/setup.c
>>>
>>>> @@ -1404,16 +1401,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>>>             */
>>>>            bi->mods[xen].start = virt_to_mfn(_stext);
>>>>            bi->mods[xen].size = __2M_rwdata_end - _stext;
>>>> -
>>>> -        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
>>>> -        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
>>>>        }
>>>>    
>>>> -    bi->mods[0].headroom =
>>>> -        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
>>>> -                         bi->mods[0].mod->mod_end);
>>>> -
>>>> -    bootstrap_map(NULL);
>>>> +    bi->mods[0].headroom = bzimage_headroom(
>>>> +                        bootstrap_map_bm(&bi->mods[0]),
>>>> +                        bi->mods[0].size);
>>>
>>> Thunderbird might corrupt this, bit the above can fit on two lines:
>>>       bi->mods[0].headroom = bzimage_headroom(bootstrap_map_bm(&bi->mods[0]),
>>>                                               bi->mods[0].size);
>>
>> Or else at least indentation wants to change, to one of the two possible
>> forms:
>>
>>      bi->mods[0].headroom = bzimage_headroom(
>>          bootstrap_map_bm(&bi->mods[0]),
>>          bi->mods[0].size);
>>
>> (indentation increased by a level from the start of the statement) or
>>
>>      bi->mods[0].headroom = bzimage_headroom(
>>                                 bootstrap_map_bm(&bi->mods[0]),
>>                                 bi->mods[0].size);
>>
>> (indentation by one level biased from the start of the function call).
>> Personally, if already wrapping like this, I'd prefer the former.
> 
> I agree with you, the former is more pleasing, though wouldn't line 3 
> fit on line 2?

Yes, looks like it would.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:09:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:09:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815673.1229662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syoEe-0000Jh-Vg; Thu, 10 Oct 2024 08:09:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815673.1229662; Thu, 10 Oct 2024 08: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 1syoEe-0000Ja-RI; Thu, 10 Oct 2024 08:09:24 +0000
Received: by outflank-mailman (input) for mailman id 815673;
 Thu, 10 Oct 2024 08: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=qC6z=RG=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1syoEd-0000JE-FG
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:09:23 +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 f3d58101-86de-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 10:09:21 +0200 (CEST)
Received: from mail-lf1-f69.google.com (mail-lf1-f69.google.com
 [209.85.167.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-353-uV0WtALtM9elyApkX1_IGQ-1; Thu, 10 Oct 2024 04:09:18 -0400
Received: by mail-lf1-f69.google.com with SMTP id
 2adb3069b0e04-5398f3d3757so526108e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:09:18 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43096601152sm42136595e9.0.2024.10.10.01.09.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 01:09:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3d58101-86de-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728547760;
	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=pw8KOQX2sQzFlQlPbqII5/R8X0bzkOW8a5wxz7PnGKI=;
	b=MKorcZtYqPVyu9qFNW0PPlu++U9wCyP/7B8XwBPfdWG7stS1a9grtp3lWE7V6SOhtsRDdv
	oJCjGsvpXTbNR3bEYBG2w5Wm1IqALxK3QlC9oDO2YaagBmwzDDUeEk61ZawQJBnCuP9g88
	Nq4GQwiQv/LTWxeEk6MPVhwtLDd/ABo=
X-MC-Unique: uV0WtALtM9elyApkX1_IGQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728547757; x=1729152557;
        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=pw8KOQX2sQzFlQlPbqII5/R8X0bzkOW8a5wxz7PnGKI=;
        b=RdEJQ7RDewevIdXCvbOj5KE/BbveUSLnoDY0xJtNOctwPbNnNFp/iK5bWHBe0yckO3
         J09gTXAec0Z71D9UirVQx1NBUGzbDNd0YVm7UdFKoqNAInFKTxB53l40sDqq05PG1A0x
         QSKq09GKLxin4LP+scVCA2meYEumyUuEzHyjFbMrEDF15geDJoAvftCqfhJ1mRR8f14h
         pVoysJZUmnBHwF/19nxkntg48kNugXefegkAet/Ar/liu8AcLMBDohmKVkVLvjSA3+ez
         +G5KwQ5HLrUuO0yXip8EtRkLNNs/PpRz9mt41gfLN2yM8Sa7npUQfr5PHlvwfMyKlYYR
         PyTQ==
X-Forwarded-Encrypted: i=1; AJvYcCU9GoOg5xPQcQSacCOeHUBjnz0nDb63AEwIHR1wCOb6IIofPXuE2WbHANdUrj7lcrps+BJ3F3vsaFA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyGHUVt3jV5qXkVKkqPr70VQUUL63WGjL3D9a9Zpx16drqp/2gk
	OxJUFLe1va22ATKvEUeLYrvNn3fHxodwHCiXtOc6uSv9+oHspZSbwFvW/eaPvw4zSkO++gJ+rWa
	GIIYLy1Lq8KrjS/8wzVqcj4VKj0wx38A79mpxzJNs6CV+WHtY/Q55/RkJigDDkc9a
X-Received: by 2002:a05:6512:39c5:b0:539:8e9a:7a5d with SMTP id 2adb3069b0e04-539c496d11bmr3575126e87.59.1728547757144;
        Thu, 10 Oct 2024 01:09:17 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFYx/LKt+QTCY84iQbturhiv4PGMfz8gf1TEkJnFJaO0GasD2CA7x+ACPT7d09hd8mpWAI6Rw==
X-Received: by 2002:a05:6512:39c5:b0:539:8e9a:7a5d with SMTP id 2adb3069b0e04-539c496d11bmr3575082e87.59.1728547756510;
        Thu, 10 Oct 2024 01:09:16 -0700 (PDT)
Message-ID: <6468cf3e4a06c008644c98a7a79f81a1c04752b8.camel@redhat.com>
Subject: Re: [RFC PATCH 00/13] Remove implicit devres from pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Heiner Kallweit <hkallweit1@gmail.com>, Damien Le Moal
 <dlemoal@kernel.org>,  Niklas Cassel <cassel@kernel.org>, Sergey Shtylyov
 <s.shtylyov@omp.ru>, Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri
 Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>, Arnd
 Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 Alex Dubov <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski
 <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Rasesh Mody
 <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko
 <imitsyanko@quantenna.com>, Sergey Matyukevich <geomatsi@gmail.com>, Kalle
 Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar
 S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  linux-staging@lists.linux.dev,
 kvm@vger.kernel.org,  xen-devel@lists.xenproject.org,
 linux-sound@vger.kernel.org
Date: Thu, 10 Oct 2024 10:09:12 +0200
In-Reply-To: <8643a212-884c-48de-a2d0-0f068fc49ca2@gmail.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <8643a212-884c-48de-a2d0-0f068fc49ca2@gmail.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Wed, 2024-10-09 at 20:32 +0200, Heiner Kallweit wrote:
> On 09.10.2024 10:35, Philipp Stanner wrote:
> > Hi all,
> >=20
> > this series removes a problematic feature from pci_intx(). That
> > function
> > sometimes implicitly uses devres for automatic cleanup. We should
> > get
> > rid of this implicit behavior.
> >=20
> > To do so, a pci_intx() version that is always-managed, and one that
> > is
> > never-managed are provided. Then, all pci_intx() users are ported
> > to the
> > version they need. Afterwards, pci_intx() can be cleaned up and the
> > users of the never-managed version be ported back to pci_intx().
> >=20
> > This way we'd get this PCI API consistent again.
> >=20
> AFAICS pci_intx() is used only by drivers which haven't been
> converted
> to the pci_alloc_irq_vectors() API yet. Wouldn't it be better to do
> this
> instead of trying to improve pci_intx()?

This would be the cr=C3=A9me-de-la-cr=C3=A9me-solution, yes.

But such a portation would require more detailed knowledge of the old
drivers.

In this discussion, Alex points out that at least in some drivers, you
can't replace pci_intx() without further ado:
https://lore.kernel.org/all/20240904151020.486f599e.alex.williamson@redhat.=
com/


What we could do is mark pci_intx() and pcim_intx() as deprecated and
point everyone to pci_alloc_irq_vectors(). Then someone can look into
porting the old drivers at some point in the future.


P.


> Eventually pci_intx() would have to be used in PCI core only.
>=20
> > The last patch obviously reverts the previous patches that made
> > drivers
> > use pci_intx_unmanaged(). But this way it's easier to review and
> > approve. It also makes sure that each checked out commit should
> > provide
> > correct behavior, not just the entire series as a whole.
> >=20
> > Merge plan for this would be to enter through the PCI tree.
> >=20
> > Please say so if you've got concerns with the general idea behind
> > the
> > RFC.
> >=20
> > Regards,
> > P.
> >=20
> > Philipp Stanner (13):
> > =C2=A0 PCI: Prepare removing devres from pci_intx()
> > =C2=A0 ALSA: hda: hda_intel: Use always-managed version of pcim_intx()
> > =C2=A0 drivers/xen: Use never-managed version of pci_intx()
> > =C2=A0 net/ethernet: Use never-managed version of pci_intx()
> > =C2=A0 net/ntb: Use never-managed version of pci_intx()
> > =C2=A0 misc: Use never-managed version of pci_intx()
> > =C2=A0 vfio/pci: Use never-managed version of pci_intx()
> > =C2=A0 PCI: MSI: Use never-managed version of pci_intx()
> > =C2=A0 ata: Use always-managed version of pci_intx()
> > =C2=A0 staging: rts5280: Use always-managed version of pci_intx()
> > =C2=A0 wifi: qtnfmac: use always-managed version of pcim_intx()
> > =C2=A0 HID: amd_sfh: Use always-managed version of pcim_intx()
> > =C2=A0 Remove devres from pci_intx()
> >=20
> > =C2=A0drivers/ata/ahci.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=C2=A0=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=A0drivers/ata/ata_piix.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > =C2=A0drivers/ata/pata_rdc.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > =C2=A0drivers/ata/sata_sil24.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 |=C2=A0 2 +-
> > =C2=A0drivers/ata/sata_sis.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > =C2=A0drivers/ata/sata_uli.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > =C2=A0drivers/ata/sata_vsc.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > =C2=A0drivers/hid/amd-sfh-hid/amd_sfh_pcie.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 |=C2=A0 4 ++--
> > =C2=A0drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c |=C2=A0 2 +-
> > =C2=A0.../wireless/quantenna/qtnfmac/pcie/pcie.c=C2=A0=C2=A0=C2=A0 |=C2=
=A0 2 +-
> > =C2=A0drivers/pci/devres.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 24 +++------------
> > ----
> > =C2=A0drivers/pci/pci.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 14 +----------
> > =C2=A0drivers/staging/rts5208/rtsx.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 |=C2=A0 2 +-
> > =C2=A0include/linux/pci.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=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 +
> > =C2=A0sound/pci/hda/hda_intel.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 |=C2=A0 2 +-
> > =C2=A015 files changed, 18 insertions(+), 47 deletions(-)
> >=20
>=20



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:09:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:09:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815675.1229671 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syoEu-0000tL-97; Thu, 10 Oct 2024 08:09:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815675.1229671; Thu, 10 Oct 2024 08:09: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 1syoEu-0000tC-6U; Thu, 10 Oct 2024 08:09:40 +0000
Received: by outflank-mailman (input) for mailman id 815675;
 Thu, 10 Oct 2024 08:09: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 1syoEs-0000qJ-Tc; Thu, 10 Oct 2024 08:09: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 1syoEs-0006q8-Re; Thu, 10 Oct 2024 08:09: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 1syoEs-0004Al-Fb; Thu, 10 Oct 2024 08:09:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syoEs-0000rI-Ez; Thu, 10 Oct 2024 08: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=rznR7ZYGXGnaakDsADrblxElBcdH8oagZEripCPVphs=; b=Ckn/TiNNcAnECa5ce88rwi9P/S
	/yfJsTesw6Of5gYRTP2y8Bx47QrSOaIqg/Y0ENaYOe23Ct2seLqcB3yjU4jTwS8hmq1JPq92MnyRy
	OwNcw3KC1thxqjDV7aVmNu4dCDgZghnGqGxerouFQ/fJ3snqK5Yx+fgwmQ9MgOp4sC4g=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188027-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-upstream-4.19-testing test] 188027: tolerable FAIL - PUSHED
X-Osstest-Failures:
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-arndale:xen-boot:fail:heisenbug
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-upstream-4.19-testing:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=bdf719c4c535cf14ec4fe8e9cb7a798a5a73fb23
X-Osstest-Versions-That:
    qemuu=0df9387c8983e1b1e72d8c574356f572342c03e6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 08:09:38 +0000

flight 188027 qemu-upstream-4.19-testing real [real]
flight 188040 qemu-upstream-4.19-testing real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188027/
http://logs.test-lab.xenproject.org/osstest/logs/188040/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale   8 xen-boot            fail pass in 188040-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 188040 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 188040 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 186879
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 186879
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 186879
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 186879
 test-amd64-amd64-libvirt-qcow2 14 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-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-amd64-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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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-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-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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                bdf719c4c535cf14ec4fe8e9cb7a798a5a73fb23
baseline version:
 qemuu                0df9387c8983e1b1e72d8c574356f572342c03e6

Last test of basis   186879  2024-07-18 14:11:49 Z   83 days
Testing same since   188027  2024-10-09 10:11:40 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alexander Bulekov <alxndr@bu.edu>
  Alistair Francis <alistair.francis@wdc.com>
  Andrew Jones <andrew.jones@linux.dev>
  Ankit Kumar <ankit.kumar@samsung.com>
  Anthony PERARD <anthony.perard@citrix.com>
  BALATON Zoltan <balaton@eik.bme.hu>
  Bernhard Beschow <shentey@gmail.com>
  Claudio Fontana <cfontana@suse.de>
  Colton Lewis <coltonlewis@google.com>
  Conor Dooley <conor.dooley@microchip.com>
  Cédric Le Goater <clg@kaod.org>
  Daniel Henrique Barboza <danielhb413@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  David Hildenbrand <david@redhat.com>
  Dongli Zhang <dongli.zhang@oracle.com>
  Fabiano Rosas <farosas@suse.de>
  Guenter Roeck <linux@roeck-us.net>
  Hang Yu <francis_yuu@stu.pku.edu.cn>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Janosch Frank <frankja@linux.ibm.com>
  Jason Chien <jason.chien@sifive.com>
  John Snow <jsnow@redhat.com>
  Kevin Wolf <kwolf@redhat.com>
  Klaus Jensen <k.jensen@samsung.com>
  Leon Schuermann <leons@opentitan.org>
  LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
  Luca Bonissi <qemu@bonslack.org>
  Maksim Kostin <maksim.kostin@ispras.ru>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Markus Armbruster <armbru@redhat.com>
  Michael S. Tsirkin <mst@redhat.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Nathan Egge <negge@xiph.org>
  Nicholas Piggin <npiggin@gmail.com>
  Niklas Cassel <niklas.cassel@wdc.com>
  Peter Maydell <peter.maydell@linaro.org>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Song Gao <gaosong@loongson.cn>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Thomas Huth <thuth@redhat.com>
  Zhao Liu <zhao1.liu@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  fail    
 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-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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/qemu-xen.git
   0df9387c89..bdf719c4c5  bdf719c4c535cf14ec4fe8e9cb7a798a5a73fb23 -> stable-4.19


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:17:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:17:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815736.1229842 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syoMj-0006es-Mg; Thu, 10 Oct 2024 08:17:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815736.1229842; Thu, 10 Oct 2024 08: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 1syoMj-0006el-JG; Thu, 10 Oct 2024 08:17:45 +0000
Received: by outflank-mailman (input) for mailman id 815736;
 Thu, 10 Oct 2024 08:17: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syoMj-0006ef-2T
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:17:45 +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 201433a4-86e0-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 10:17:44 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so1200625a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:17:44 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c9370d2246sm444803a12.5.2024.10.10.01.17.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 01:17:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 201433a4-86e0-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728548264; x=1729153064; 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=KfFjRIz1Yuvbl5Bt9vW8i6ZynIZV+mEcMmGM4N6/pLw=;
        b=SgEFvB1fXvqcD2iOJ6do/zP2xgBltlyVayKdgZdO3aXhEtlKE8wHrr1B6IciBPXbsW
         aoKpIOPuRdXZvvZr1SoeTHEDEwrwNrmjny2h69Rh2DFHYGT33zyZ5lccS/IBoJPqAHmh
         CH3bw9z1pjJehGQ7KSG9m47mC+cq3EXgmxChkzmI/1PW2A8XBtDe3ZKo696y1C/ji07i
         o4t+qlC1RlSmAV6kwbciziT9KEuoLzc0zlIddvZ8hHZG6ZblxotAWbKgc9M9lnfqQTyz
         C5oq4Juh4N/Iuch1k7eejoJQCYVQzy2nUUofKUSE1Va44w6bsw8MppLwVXY0F02SJdHL
         Yitg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728548264; x=1729153064;
        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=KfFjRIz1Yuvbl5Bt9vW8i6ZynIZV+mEcMmGM4N6/pLw=;
        b=hl3A4WmvL+bI997svSm3FTgP4eQOcvefWRK1g7xQoRT6kZjx+vflBqS90Lhjd8FS/e
         6czViYVDRdA5isCnvts6DIeqQyQTlC7ndF50XnT/sVj3n3DbDrS5m5iDOO4Q9+ozDqif
         fFH6eCjZHWuzqe2kfVp3k3Ow9p10uwfFWvyHYrS3mYRphEAZqoVU8NwAWqKby5fmcpBD
         GhNLS4HJkUqWYHlJmko4cl0bGqtPskuSvRH0Jm3yQtgg4JEozuUbFLmMkmqoB6jSVOuX
         AKDmWASWG8A5xSESGFcajx2LLb0QQ9ijh2wKZGlFh7DHIVCMfzE5vyai8vt+gtWQ+/Is
         W0LQ==
X-Gm-Message-State: AOJu0Yw9tXncaKYjrW66zvm0V14o2ZvkQNRCcyzHM0cV6TbVMQnU8MAY
	D5/miOBaoxszZ0TmV92NQPv/vlluhI4GQ15QgOLXj3Vf7QkolKqhit2ySUEd7g==
X-Google-Smtp-Source: AGHT+IHprO0InyX/z4iovA+Lj3INMCpc+yLlH2kBdOBRCfmgQoAsPTgYOxOtRdSXf2H/ilh4hM8nqw==
X-Received: by 2002:a05:6402:1ecb:b0:5c8:78dd:8027 with SMTP id 4fb4d7f45d1cf-5c933554318mr2072193a12.12.1728548263527;
        Thu, 10 Oct 2024 01:17:43 -0700 (PDT)
Message-ID: <e6d4912a-d6d0-41f8-a3e6-fe3eec6c6807@suse.com>
Date: Thu, 10 Oct 2024 10:17:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
To: Jiqian Chen <Jiqian.Chen@amd.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
References: <20241010075848.1002891-1-Jiqian.Chen@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: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.10.2024 09:58, Jiqian Chen wrote:
> --- a/drivers/xen/acpi.c
> +++ b/drivers/xen/acpi.c
> @@ -125,3 +125,20 @@ int xen_acpi_get_gsi_info(struct pci_dev *dev,
>  	return 0;
>  }
>  EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_info);
> +
> +get_gsi_from_sbdf_t get_gsi_from_sbdf = NULL;
> +
> +void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func)
> +{
> +	get_gsi_from_sbdf = func;
> +}
> +EXPORT_SYMBOL_GPL(xen_acpi_register_get_gsi_func);
> +
> +int xen_acpi_get_gsi_from_sbdf(u32 sbdf)
> +{
> +	if (get_gsi_from_sbdf)
> +		return get_gsi_from_sbdf(sbdf);
> +
> +	return -EINVAL;

Perhaps better -EOPNOTSUPP?

> +}
> +EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_from_sbdf);
> \ No newline at end of file

Can you please take care of this as well while touching the file? Or
maybe you are doing so, but the diff doesn't show it properly?

> @@ -484,6 +483,7 @@ static int pcistub_init_device(struct pcistub_device *psdev)
>  		if (err)
>  			goto config_release;
>  		psdev->gsi = gsi;
> +		xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
>  	}
>  #endif

Why here rather than directly in xen_pcibk_init()? And why no change to
xen_pcibk_cleanup() to remove the hook again on unload? Which will then
raise the question of possible race conditions.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:26:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:26:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815776.1229980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syoV7-0003On-Qu; Thu, 10 Oct 2024 08:26:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815776.1229980; Thu, 10 Oct 2024 08: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 1syoV7-0003Og-N4; Thu, 10 Oct 2024 08:26:25 +0000
Received: by outflank-mailman (input) for mailman id 815776;
 Thu, 10 Oct 2024 08:26: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 1syoV6-0003OV-Qc; Thu, 10 Oct 2024 08:26: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 1syoV6-0007F0-O4; Thu, 10 Oct 2024 08:26: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 1syoV6-0004cZ-Fe; Thu, 10 Oct 2024 08:26:24 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syoV6-00010k-F9; Thu, 10 Oct 2024 08: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
Precedence: 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=F2l+nNKfAcyzFeZZwtAJKpxuRIXRSW2wd2p3yFfH9Fc=; b=y98lw0chPv72d/2cdWmqGO1SCZ
	BxbfT0MwQjQkCjAVZgS1uzo+YbjCkhl50xYEwgYiw6ZiUbw4aBieWHUDPgnq3JoePJ8NBMzhV10KT
	8zAeF2DvK+UipgbdNUwOaOW57vXZK62bObPIKdgfKLOkx00M9BeNf7Wws9IqxZ5NJNKg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188039-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188039: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=0bae161fed39d8996693e586b77f31094b61b9d7
X-Osstest-Versions-That:
    ovmf=da1c6dd62a19361186739a00a4f86d7cf630708c
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 08:26:24 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 0bae161fed39d8996693e586b77f31094b61b9d7
baseline version:
 ovmf                 da1c6dd62a19361186739a00a4f86d7cf630708c

Last test of basis   188037  2024-10-09 19:42:08 Z    0 days
Testing same since   188039  2024-10-10 06:13:22 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    


------------------------------------------------------------
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
   da1c6dd62a..0bae161fed  0bae161fed39d8996693e586b77f31094b61b9d7 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:34:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:34:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815785.1229989 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syod5-00015L-J4; Thu, 10 Oct 2024 08:34:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815785.1229989; Thu, 10 Oct 2024 08: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 1syod5-00015E-GU; Thu, 10 Oct 2024 08:34:39 +0000
Received: by outflank-mailman (input) for mailman id 815785;
 Thu, 10 Oct 2024 08: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syod4-000158-9i
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:34:38 +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 7afe346a-86e2-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 10:34:36 +0200 (CEST)
Received: by mail-oa1-x2c.google.com with SMTP id
 586e51a60fabf-287ca01c15fso404287fac.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:34:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7afe346a-86e2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728549275; x=1729154075; 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=F6uS8U3J1yzwx+w34jnqJxBHjQ0EIjkDS8buUDj2hoQ=;
        b=BLbeg0V5fX5BoeCz1czMZTgvdSnaaX+TkqeBOBef8e2Q/8ibBbct4rACIlluN3MZhz
         iNLBaTHaNuzkHLJS/VHiht1REbCBqdPapYkG2yMXnNaVrnBI2gGQStaqwjHAczAtWCbP
         iCqStZd8P8SqGV3rvJR65KXHp176jU9eYIZHw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728549275; x=1729154075;
        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=F6uS8U3J1yzwx+w34jnqJxBHjQ0EIjkDS8buUDj2hoQ=;
        b=o7sOCFIX2O6cOgCztWIgg4QSukrmUCSpdNdbaJapuFTRhLNbG+MpUSyLHAMgMItMQs
         AY0ZH0juOdhsaGvubswJJxmIg/rTev8TDpmqCT9ikhorLwInHJ1V0Gu93VfkSfHvpqXu
         J0hhRNMRLliYx7OcnhL+dfB0XxPJ4JqBsm7ZjfYFwZqc7XXUMlMlBkePp09/4+FAJijF
         B/09UPSJmIGHCSw0HWkAsSf69YMlPgv0Q7uxcix7d2MQOJR3MIYczPJrH/tV5DHmpZ+b
         5P4cd4nfrWUUh+0U5ni+LBmF/GRvVX/dwMsz7PtP+Sm+CI6cwAShZyLMZxaDmPk6KD32
         3few==
X-Forwarded-Encrypted: i=1; AJvYcCUilM6Q8mF7/Bo47k98wLTn3vWSey6SSDI/yMEbxuUm83+6HdzF8TXSkqnvBruTjyQinoBVu7zPtco=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxiSn3gYPJr9Vpz9E07d3rYjYIE2UlNC/lZOgWUs2R5zfDByjbc
	7M7WNxfr6gOoqrmeyeDxc26fwewCzlv6kEHrsMzcqSbaXt43sA9C8wXV+KvkPubBi25LfsvaOr0
	tR0GSumnBX9CTAgxKR+b+2UYmnIECPzNUdlMmoQ==
X-Google-Smtp-Source: AGHT+IGBhRuQ+YEHa4yPWdbb6k4w2MbwapJVUotIDL1W+m8H7gvS39XymlLzhZvKFmxUdtnNJNF/Ja4pxrrFDHPxCgk=
X-Received: by 2002:a05:6870:d18a:b0:260:f6c4:df1 with SMTP id
 586e51a60fabf-288342d1cb0mr3884773fac.17.1728549275017; Thu, 10 Oct 2024
 01:34:35 -0700 (PDT)
MIME-Version: 1.0
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
 <20241009080439.2411730-2-frediano.ziglio@cloud.com> <f54d8f4b-e088-4ebe-a72f-ec4a540f9b33@suse.com>
 <CACHz=ZjLDv11OiMdtDmTLDOEmgDiqMoP9cppdKg3qcsXK+wpgA@mail.gmail.com> <49d1ff38-dff7-4db0-aec8-15ca82339e54@suse.com>
In-Reply-To: <49d1ff38-dff7-4db0-aec8-15ca82339e54@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 10 Oct 2024 09:34:24 +0100
Message-ID: <CACHz=Zgxv=_T7=krmrajJ8kF0K995733jsZh8WS0kWw_pW9+zA@mail.gmail.com>
Subject: Re: [PATCH v8 1/2] x86/boot: Align mbi2.c stack to 16 bytes
To: Jan Beulich <jbeulich@suse.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 9, 2024 at 12:13=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 09.10.2024 12:15, Frediano Ziglio wrote:
> > On Wed, Oct 9, 2024 at 9:20=E2=80=AFAM Jan Beulich <jbeulich@suse.com> =
wrote:
> >> On 09.10.2024 10:04, Frediano Ziglio wrote:
> >>> --- a/xen/arch/x86/efi/Makefile
> >>> +++ b/xen/arch/x86/efi/Makefile
> >>> @@ -11,6 +11,8 @@ $(obj)/boot.init.o: $(obj)/buildid.o
> >>>  $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boun=
dary=3D4)
> >>>  $(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary :=3D $(cflag=
s-stack-boundary)
> >>>
> >>> +$(obj)/mbi2.o: CFLAGS_stack_boundary :=3D $(cflags-stack-boundary)
> >>> +
> >>>  obj-y :=3D common-stub.o stub.o
> >>>  obj-$(XEN_BUILD_EFI) :=3D $(filter-out %.init.o,$(EFIOBJ-y))
> >>>  obj-bin-$(XEN_BUILD_EFI) :=3D $(filter %.init.o,$(EFIOBJ-y))
> >>
> >> You're duplicating code, which is better to avoid when possible. Is th=
ere
> >> a reason the earlier commit didn't simply add mbi2.o to $(EFIOBJ-y)? T=
hat
> >> way the existing logic would have covered that file as well. And reall=
y I
> >> think it should have been mbi2.init.o (or else adding it into $(obj-bi=
n-y)
> >> is wrong), which probably wants correcting at the same time (ISTR actu=
ally
> >> having requested that during an earlier review round).
> >
> > This was my first attempt, but it fails poorly, as EFIOBJ-y comes with
> > the addition of creating some file links that causes mbi2.c to be
> > overridden.
>
> I can't see $(EFIOBJ-y) affecting symlink creation. What I can see is tha=
t
> the variable is used in the setting of clean-files, which indeed is a pro=
blem.
> Still imo the solution then is to introduce another variable to substitut=
e the
> uses of $(EFIOBJ-y) in arch/x86/efi/Makefile. E.g.
>
> EFIOBJ-all :=3D $(EFIOBJ-y) mbi2.init.o
>

what about simply

diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 7e2b5c07de..f2ce739f57 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -9,7 +9,7 @@ $(obj)/%.o: $(src)/%.ihex FORCE
$(obj)/boot.init.o: $(obj)/buildid.o

$(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=3D=
4)
-$(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary :=3D
$(cflags-stack-boundary)
+$(addprefix $(obj)/,$(EFIOBJ-y) mbi2.o): CFLAGS_stack_boundary :=3D
$(cflags-stack-boundary)

obj-y :=3D common-stub.o stub.o
obj-$(XEN_BUILD_EFI) :=3D $(filter-out %.init.o,$(EFIOBJ-y))


> > If I remember, you suggested changing to obj-bin-y. Still, maybe is
> > not the best place. It was added to obj-bin-y because it should be
> > included either if XEN_BUILD_EFI is "y" or not.
>
> No, that doesn't explain the addition to obj-bin-y; this would equally be
> achieved by adding to obj-y. The difference between the two variables is
> whether objects are to be subject to LTO. And the typical case then is th=
at
> init-only objects aren't worth that extra build overhead. Hence the commo=
n
> pattern is (besides files with assembly sources) for *.init.o to be added=
 to
> obj-bin-*.
>

Then I would stick to obj-bin-y.

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:39:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:39:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815796.1230000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syohf-000468-83; Thu, 10 Oct 2024 08:39:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815796.1230000; Thu, 10 Oct 2024 08:39: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 1syohf-000461-4D; Thu, 10 Oct 2024 08:39:23 +0000
Received: by outflank-mailman (input) for mailman id 815796;
 Thu, 10 Oct 2024 08:39: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syohd-0003qs-Lo
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:39: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 24ddbef2-86e3-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 10:39:20 +0200 (CEST)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-43055b43604so5834235e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:39:20 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4311835c4fbsm8847405e9.39.2024.10.10.01.39.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 01:39:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 24ddbef2-86e3-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728549560; x=1729154360; darn=lists.xenproject.org;
        h=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=dCZuBk9Z9qNS8HU0hjwMIMOrDWce7O1Fl/3I1ZHY9To=;
        b=E2Ldu2AErEL3FcZ/sfsarzf63qWHP2s7E6Ln5UHBymHbsj719Ac+YadL8nxBub1Bzz
         BNm/EmAZeePOX37dBI8XStkt19BGpUyah42jN1xEhg3mAbOxyAc8EZqrig3/G3XHc0UR
         vxhYpAU1stELfn0JB1/TjLwktTc7BzuITAov63029iVlqGE+E8bNIH03aBsubm9cAdb7
         gkIWeURxnPzlDvjqNSJ+RaNLw4kqcKP0M39i5baax7GUdSgVIqZhxLEgShQfwjiR+D1E
         EyGmCAYeHSDBNyvdd6FOFcc3yI7u86Jld/hixYvbBkezMFn+DmWxlBs6HZJFmisIO4kN
         hYAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728549560; x=1729154360;
        h=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=dCZuBk9Z9qNS8HU0hjwMIMOrDWce7O1Fl/3I1ZHY9To=;
        b=oC/MPt6MtvcdJY+RwJkNZwi5cVHOIiX7BDeiwdd1G7aL4T/tZOypAMdjGzVru1ZzwT
         U2m3HyvTm0tpoOC4aMy0q+dAXiP/bqOVuDCJdoGSNAmiueBe2kQiJNSwPwkvoLF1h+mq
         2HjUf9mp7249OjK6nQjbke4vwIQEisI5Sk1t2bQvIAwh0kFfyVRjlEy3Pp/b163oNzOI
         CMVpDl1Jwxkxc3wcW+mfrXuN8VhGT/1Uvy8x8byFCrEbUbq4b+KGP7XKlHDTvRiQESjb
         cwrYyvI0pIlLWK1UgvFzMfegE3cKdvaWLj0dQktEkZLZqZs60qfDQK/gbGDjdkSB/W4F
         KcIg==
X-Gm-Message-State: AOJu0YzzcKTowa2esYzJyBAunUnnL/C5zftN7Iw8bKuSRqwM9ZHyIXgr
	aQwqZ8cok6gFqMsTOIDO1I7stkubJ03iqWpvIua9AZEmb7+1ZhxHYzRs++Hu4Wc=
X-Google-Smtp-Source: AGHT+IEGiVX4Qqrts3FDxq9q5ihtW24ru2VKa3ERbgHsOb0DhYJmQfXCuIngoIoHbbbce+zNT71UTg==
X-Received: by 2002:a05:600c:3543:b0:430:699b:7d22 with SMTP id 5b1f17b1804b1-430d6facb53mr46326005e9.26.1728549560033;
        Thu, 10 Oct 2024 01:39:20 -0700 (PDT)
Message-ID: <e7b98fbf-ee28-4083-a4c5-7dc122252e07@suse.com>
Date: Thu, 10 Oct 2024 10:39:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------5JLKjz3mUhBs0KD9nsYdqmCO"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------5JLKjz3mUhBs0KD9nsYdqmCO
Content-Type: multipart/mixed; boundary="------------nKIDyJ1Fqtsi3Zi7CZrTsZD0";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <e7b98fbf-ee28-4083-a4c5-7dc122252e07@suse.com>
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
References: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
In-Reply-To: <20241010075848.1002891-1-Jiqian.Chen@amd.com>

--------------nKIDyJ1Fqtsi3Zi7CZrTsZD0
Content-Type: multipart/mixed; boundary="------------R64fdqNZBeRN9br6IgVuJq1i"

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

T24gMTAuMTAuMjQgMDk6NTgsIEppcWlhbiBDaGVuIHdyb3RlOg0KPiBDb21taXQgMmZhZTZi
YjdiZTMyICgieGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20g
ZGV2IikNCj4gYWRkcyBhIHdlYWsgcmV2ZXJzZSBkZXBlbmRlbmN5IHRvIHRoZSBjb25maWcg
WEVOX1BSSVZDTUQgZGVmaW5pdGlvbiwgdGhhdA0KPiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4t
cHJpdmNtZCBjYW4ndCBiZSBsb2FkZWQgb24gZG9tVSwgYmVjYXVzZQ0KPiBkZXBlbmRlbnQg
eGVuLXBjaWJhY2sgaXMgYWx3YXlzIG5vdCBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9uIGRv
bVUuDQo+IA0KPiBUbyBzb2x2ZSBhYm92ZSBwcm9ibGVtLCByZW1vdmUgdGhhdCBkZXBlbmRl
bmN5LCBhbmQgZG8gbm90IGNhbGwNCj4gcGNpc3R1Yl9nZXRfZ3NpX2Zyb21fc2JkZigpIGRp
cmVjdGx5LCBpbnN0ZWFkIGFkZCBhIGhvb2sgaW4NCj4gZHJpdmVycy94ZW4vYXBjaS5jLCB4
ZW4tcGNpYmFjayByZWdpc3RlciB0aGUgcmVhbCBjYWxsIGZ1bmN0aW9uLCB0aGVuIGluDQo+
IHByaXZjbWRfaW9jdGxfcGNpZGV2X2dldF9nc2kgY2FsbCB0aGF0IGhvb2suDQo+IA0KPiBG
aXhlczogMmZhZTZiYjdiZTMyICgieGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbCB0byBn
ZXQgZ3NpIGZyb20gZGV2IikNCj4gUmVwb3J0ZWQtYnk6IE1hcmVrIE1hcmN6eWtvd3NraS1H
w7NyZWNraSA8bWFybWFyZWtAaW52aXNpYmxldGhpbmdzbGFiLmNvbT4NCj4gU2lnbmVkLW9m
Zi1ieTogSmlxaWFuIENoZW4gPEppcWlhbi5DaGVuQGFtZC5jb20+DQo+IC0tLQ0KPiB2MS0+
djIgY2hhbmdlczoNCj4gQWRkZWQgaG9vayB4ZW5fYWNwaV9nZXRfZ3NpX2Zyb21fc2JkZi4N
Cj4gQ2hhbmdlZCBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmIHRvIHN0YXRpYyBhbmQgcGNp
YmFjayByZWdpc3RlciBpdCBhcyB0aGUgcmVhbCBob29rIGZ1bmN0aW9uLg0KPiAtLS0NCj4g
ICBkcml2ZXJzL3hlbi9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDEgLQ0KPiAgIGRyaXZl
cnMveGVuL2FjcGkuYyAgICAgICAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKw0K
PiAgIGRyaXZlcnMveGVuL3ByaXZjbWQuYyAgICAgICAgICAgICAgfCAgNiArKy0tLS0NCj4g
ICBkcml2ZXJzL3hlbi94ZW4tcGNpYmFjay9wY2lfc3R1Yi5jIHwgIDQgKystLQ0KPiAgIGlu
Y2x1ZGUveGVuL2FjcGkuaCAgICAgICAgICAgICAgICAgfCAxMiArKysrLS0tLS0tLS0NCj4g
ICA1IGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQ0K
PiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL0tjb25maWcgYi9kcml2ZXJzL3hlbi9L
Y29uZmlnDQo+IGluZGV4IDcyZGRlZTRjMTU0NC4uZjdkNmY0Nzk3MWZkIDEwMDY0NA0KPiAt
LS0gYS9kcml2ZXJzL3hlbi9LY29uZmlnDQo+ICsrKyBiL2RyaXZlcnMveGVuL0tjb25maWcN
Cj4gQEAgLTI2MSw3ICsyNjEsNiBAQCBjb25maWcgWEVOX1NDU0lfQkFDS0VORA0KPiAgIGNv
bmZpZyBYRU5fUFJJVkNNRA0KPiAgIAl0cmlzdGF0ZSAiWGVuIGh5cGVyY2FsbCBwYXNzdGhy
b3VnaCBkcml2ZXIiDQo+ICAgCWRlcGVuZHMgb24gWEVODQo+IC0JaW1wbHkgWEVOX1BDSURF
Vl9CQUNLRU5EDQo+ICAgCWRlZmF1bHQgbQ0KPiAgIAloZWxwDQo+ICAgCSAgVGhlIGh5cGVy
Y2FsbCBwYXNzdGhyb3VnaCBkcml2ZXIgYWxsb3dzIHByaXZpbGVnZWQgdXNlciBwcm9ncmFt
cyB0bw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vYWNwaS5jIGIvZHJpdmVycy94ZW4v
YWNwaS5jDQo+IGluZGV4IDllMjA5NjUyNGZiYy4uMGJmZjJmM2E4N2QyIDEwMDY0NA0KPiAt
LS0gYS9kcml2ZXJzL3hlbi9hY3BpLmMNCj4gKysrIGIvZHJpdmVycy94ZW4vYWNwaS5jDQo+
IEBAIC0xMjUsMyArMTI1LDIwIEBAIGludCB4ZW5fYWNwaV9nZXRfZ3NpX2luZm8oc3RydWN0
IHBjaV9kZXYgKmRldiwNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIEVYUE9SVF9TWU1C
T0xfR1BMKHhlbl9hY3BpX2dldF9nc2lfaW5mbyk7DQo+ICsNCj4gK2dldF9nc2lfZnJvbV9z
YmRmX3QgZ2V0X2dzaV9mcm9tX3NiZGYgPSBOVUxMOw0KPiArDQo+ICt2b2lkIHhlbl9hY3Bp
X3JlZ2lzdGVyX2dldF9nc2lfZnVuYyhnZXRfZ3NpX2Zyb21fc2JkZl90IGZ1bmMpDQo+ICt7
DQo+ICsJZ2V0X2dzaV9mcm9tX3NiZGYgPSBmdW5jOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJP
TF9HUEwoeGVuX2FjcGlfcmVnaXN0ZXJfZ2V0X2dzaV9mdW5jKTsNCj4gKw0KPiAraW50IHhl
bl9hY3BpX2dldF9nc2lfZnJvbV9zYmRmKHUzMiBzYmRmKQ0KPiArew0KPiArCWlmIChnZXRf
Z3NpX2Zyb21fc2JkZikNCj4gKwkJcmV0dXJuIGdldF9nc2lfZnJvbV9zYmRmKHNiZGYpOw0K
PiArDQo+ICsJcmV0dXJuIC1FSU5WQUw7DQo+ICt9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh4
ZW5fYWNwaV9nZXRfZ3NpX2Zyb21fc2JkZik7DQo+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHJpdmNtZC5jIGIvZHJpdmVycy94
ZW4vcHJpdmNtZC5jDQo+IGluZGV4IDMyNzNjYjhjMmE2Ni4uNGY3NWJjODc2NDU0IDEwMDY0
NA0KPiAtLS0gYS9kcml2ZXJzL3hlbi9wcml2Y21kLmMNCj4gKysrIGIvZHJpdmVycy94ZW4v
cHJpdmNtZC5jDQo+IEBAIC04NTAsMTUgKzg1MCwxMyBAQCBzdGF0aWMgbG9uZyBwcml2Y21k
X2lvY3RsX21tYXBfcmVzb3VyY2Uoc3RydWN0IGZpbGUgKmZpbGUsDQo+ICAgc3RhdGljIGxv
bmcgcHJpdmNtZF9pb2N0bF9wY2lkZXZfZ2V0X2dzaShzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9p
ZCBfX3VzZXIgKnVkYXRhKQ0KPiAgIHsNCj4gICAjaWYgZGVmaW5lZChDT05GSUdfWEVOX0FD
UEkpDQo+IC0JaW50IHJjID0gLUVJTlZBTDsNCj4gKwlpbnQgcmM7DQo+ICAgCXN0cnVjdCBw
cml2Y21kX3BjaWRldl9nZXRfZ3NpIGtkYXRhOw0KPiAgIA0KPiAgIAlpZiAoY29weV9mcm9t
X3VzZXIoJmtkYXRhLCB1ZGF0YSwgc2l6ZW9mKGtkYXRhKSkpDQo+ICAgCQlyZXR1cm4gLUVG
QVVMVDsNCj4gICANCj4gLQlpZiAoSVNfUkVBQ0hBQkxFKENPTkZJR19YRU5fUENJREVWX0JB
Q0tFTkQpKQ0KPiAtCQlyYyA9IHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYoa2RhdGEuc2Jk
Zik7DQo+IC0NCj4gKwlyYyA9IHhlbl9hY3BpX2dldF9nc2lfZnJvbV9zYmRmKGtkYXRhLnNi
ZGYpOw0KPiAgIAlpZiAocmMgPCAwKQ0KPiAgIAkJcmV0dXJuIHJjOw0KPiAgIA0KPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0dWIuYyBiL2RyaXZlcnMv
eGVuL3hlbi1wY2liYWNrL3BjaV9zdHViLmMNCj4gaW5kZXggMmYzZGE1YWM2MmNkLi45MDBl
NjE5OWVlYzcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMveGVuL3hlbi1wY2liYWNrL3BjaV9z
dHViLmMNCj4gKysrIGIvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0dWIuYw0KPiBA
QCAtMjI3LDcgKzIyNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldiAqcGNpc3R1Yl9kZXZp
Y2VfZ2V0X3BjaV9kZXYoc3RydWN0IHhlbl9wY2lia19kZXZpY2UgKnBkZXYsDQo+ICAgfQ0K
PiAgIA0KPiAgICNpZmRlZiBDT05GSUdfWEVOX0FDUEkNCj4gLWludCBwY2lzdHViX2dldF9n
c2lfZnJvbV9zYmRmKHVuc2lnbmVkIGludCBzYmRmKQ0KPiArc3RhdGljIGludCBwY2lzdHVi
X2dldF9nc2lfZnJvbV9zYmRmKHVuc2lnbmVkIGludCBzYmRmKQ0KPiAgIHsNCj4gICAJc3Ry
dWN0IHBjaXN0dWJfZGV2aWNlICpwc2RldjsNCj4gICAJaW50IGRvbWFpbiA9IChzYmRmID4+
IDE2KSAmIDB4ZmZmZjsNCj4gQEAgLTI0Miw3ICsyNDIsNiBAQCBpbnQgcGNpc3R1Yl9nZXRf
Z3NpX2Zyb21fc2JkZih1bnNpZ25lZCBpbnQgc2JkZikNCj4gICANCj4gICAJcmV0dXJuIHBz
ZGV2LT5nc2k7DQo+ICAgfQ0KPiAtRVhQT1JUX1NZTUJPTF9HUEwocGNpc3R1Yl9nZXRfZ3Np
X2Zyb21fc2JkZik7DQo+ICAgI2VuZGlmDQo+ICAgDQo+ICAgc3RydWN0IHBjaV9kZXYgKnBj
aXN0dWJfZ2V0X3BjaV9kZXZfYnlfc2xvdChzdHJ1Y3QgeGVuX3BjaWJrX2RldmljZSAqcGRl
diwNCj4gQEAgLTQ4NCw2ICs0ODMsNyBAQCBzdGF0aWMgaW50IHBjaXN0dWJfaW5pdF9kZXZp
Y2Uoc3RydWN0IHBjaXN0dWJfZGV2aWNlICpwc2RldikNCj4gICAJCWlmIChlcnIpDQo+ICAg
CQkJZ290byBjb25maWdfcmVsZWFzZTsNCj4gICAJCXBzZGV2LT5nc2kgPSBnc2k7DQo+ICsJ
CXhlbl9hY3BpX3JlZ2lzdGVyX2dldF9nc2lfZnVuYyhwY2lzdHViX2dldF9nc2lfZnJvbV9z
YmRmKTsNCg0KSSBkb24ndCB0aGluayB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSBmb3IgcmVn
aXN0ZXJpbmcgdGhlIGZ1bmN0aW9uLg0KDQpJdCBzaG91bGQgYmUgZG9uZSBhdCB0aGUgZW5k
IG9mIHhlbl9wY2lia19pbml0KCkgKGd1YXJkZWQgd2l0aCBDT05GSUdfWEVOX0FDUEkpLg0K
DQpBZGRpdGlvbmFsbHkgeW91IHNob3VsZCByZXNldCB0aGUgZnVuY3Rpb24gcG9pbnRlciBO
VUxMIGluIHhlbl9wY2lia19jbGVhbnVwKCkuDQoNCg0KSnVlcmdlbg0K
--------------R64fdqNZBeRN9br6IgVuJq1i
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------R64fdqNZBeRN9br6IgVuJq1i--

--------------nKIDyJ1Fqtsi3Zi7CZrTsZD0--

--------------5JLKjz3mUhBs0KD9nsYdqmCO
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/Ey8FAmcHkrcFAwAAAAAACgkQsN6d1ii/Ey+B
2ggAkacemurpyKS7QfXQWS6HcxfbEYySl/oVABB6Ol7WbSR5sFe+jUr1uCwOJXeakJ5JFBm1juPw
UT7wOqITr0eoozgKKwUzOZKy+M3PFXlD/xCHC+bPuGGRfl5VCkJsWIkMy+d0yA/rDVoOb6PPuc1S
m33OyHtAJTJl3m0JjNSp99iZ5oSXzfD6G/w/cQokjXP7tokktc9J4Yq/Ft+n9WF7Gr5HAxwy9TqA
yFz7uIV3Sk8afUYJTrYBK1l+i4obVvSjq4wJYDGQ3vvR2/aWRfKjv5t/WWFWwbezKYjdh4/XQfHT
6pOzUAVcuJCpLvQPtfa53cvVPYc5XDcLpETPjU2aCg==
=3R75
-----END PGP SIGNATURE-----

--------------5JLKjz3mUhBs0KD9nsYdqmCO--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:41:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:41:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815804.1230010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syojR-0006iZ-J4; Thu, 10 Oct 2024 08:41:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815804.1230010; Thu, 10 Oct 2024 08: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 1syojR-0006iS-Fa; Thu, 10 Oct 2024 08:41:13 +0000
Received: by outflank-mailman (input) for mailman id 815804;
 Thu, 10 Oct 2024 08: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syojQ-0006iM-B5
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:41:12 +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 66410083-86e3-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 10:41:10 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9952ea05c5so106080066b.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:41:10 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7edea69sm56590566b.7.2024.10.10.01.41.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 01:41:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 66410083-86e3-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728549670; x=1729154470; 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=tAZ2otITJIfqunsrMLhUzakqD4tgw7FqDWbH+BmEO78=;
        b=FTgl51eFTU3wDqDtYyCckCjSugNxaq0yXYumncjMEveBfif1lHy13ZfZUD88xSgZQe
         dytXR0mHGTx2lHn2TyqMWAjlURGAbY/VSIbQF4L0Z5DmWLDAmKE+pSgDA0U+YQZpzTFO
         5CiBKHRC+fLiNc6mhahH0CZMS4vaGg/3AGjYN6HFuvdYHRIwqSlBw6G2I2Vu+Ywocw9R
         cSiOux8IOhoF9B5hwpq/O7svwshcZ6uGFNfhqqTVGtAh1FeIz/n2iQwvSvIPXMME87Fi
         8XnIrNqca1sYbrjeMPCubW8Kxu45OdQPBOoQsrnkhvZ3lk3qgqEBsYNJ1E7ENS/c/tzo
         uAqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728549670; x=1729154470;
        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=tAZ2otITJIfqunsrMLhUzakqD4tgw7FqDWbH+BmEO78=;
        b=LAw7q47Zd1x+nLu/71O5kePvIs+wx+C4RqIYW81MW0LC+eHzZGUtTDY6ELqaiDgub3
         vR+PP3K4CnUsbwRis0ooWxmwn5YsrPf/xqmDOwlAd6VcFrWHrdqL8mdmuqcfg7Akvc4S
         kEkmAc6NIRh3JYtrZNoEjki0NvIQhXq+On5OXjPWhgXZydQlxx5buBR0lLkkrAxGrv3C
         P71kzl4niEYtNuFql4aHc1Ef1e1WQwuTJ6y36uT0uEqrs/1pKmLIi9E1pp7/iVIGCAlU
         FP0xmpioCkcdBkJlBMrbeRGmO7avPexbWbwtUFfCdlihbWOVdHauu8M/44ejjdp477ML
         /WFA==
X-Forwarded-Encrypted: i=1; AJvYcCUEmaQy288MM5WW73s/t/x8bxtWCkabFwfAkybOAidr94PDE9HuVxDZG1681LxJH/RLly40UFc0Bl0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxVdgVZKlVvvXXN9UuL7mbKTHLEAG6+fsxz127koXR7n0T0rLR/
	K6iYE5R/bYg9w0+eDhoJu27EHS+U5y8TGnEQlRyNBo8g/M4Lz3tLwzOl9VD3xXEpEGaueJhGZRY
	=
X-Google-Smtp-Source: AGHT+IHDLRnKeP2nK5u9BUXe6ye6orafpJzytpfu6gBIYVg2/7bkrUnYW4QouYCtAQsJlMLxovY6hA==
X-Received: by 2002:a17:907:f712:b0:a99:5240:381e with SMTP id a640c23a62f3a-a998d19ef2amr470157866b.18.1728549669711;
        Thu, 10 Oct 2024 01:41:09 -0700 (PDT)
Message-ID: <2563a637-2612-4635-9d6a-e70fd732db23@suse.com>
Date: Thu, 10 Oct 2024 10:41:08 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v8 1/2] x86/boot: Align mbi2.c stack to 16 bytes
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241009080439.2411730-1-frediano.ziglio@cloud.com>
 <20241009080439.2411730-2-frediano.ziglio@cloud.com>
 <f54d8f4b-e088-4ebe-a72f-ec4a540f9b33@suse.com>
 <CACHz=ZjLDv11OiMdtDmTLDOEmgDiqMoP9cppdKg3qcsXK+wpgA@mail.gmail.com>
 <49d1ff38-dff7-4db0-aec8-15ca82339e54@suse.com>
 <CACHz=Zgxv=_T7=krmrajJ8kF0K995733jsZh8WS0kWw_pW9+zA@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: <CACHz=Zgxv=_T7=krmrajJ8kF0K995733jsZh8WS0kWw_pW9+zA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10.10.2024 10:34, Frediano Ziglio wrote:
> On Wed, Oct 9, 2024 at 12:13 PM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 09.10.2024 12:15, Frediano Ziglio wrote:
>>> On Wed, Oct 9, 2024 at 9:20 AM Jan Beulich <jbeulich@suse.com> wrote:
>>>> On 09.10.2024 10:04, Frediano Ziglio wrote:
>>>>> --- a/xen/arch/x86/efi/Makefile
>>>>> +++ b/xen/arch/x86/efi/Makefile
>>>>> @@ -11,6 +11,8 @@ $(obj)/boot.init.o: $(obj)/buildid.o
>>>>>  $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=4)
>>>>>  $(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary := $(cflags-stack-boundary)
>>>>>
>>>>> +$(obj)/mbi2.o: CFLAGS_stack_boundary := $(cflags-stack-boundary)
>>>>> +
>>>>>  obj-y := common-stub.o stub.o
>>>>>  obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))
>>>>>  obj-bin-$(XEN_BUILD_EFI) := $(filter %.init.o,$(EFIOBJ-y))
>>>>
>>>> You're duplicating code, which is better to avoid when possible. Is there
>>>> a reason the earlier commit didn't simply add mbi2.o to $(EFIOBJ-y)? That
>>>> way the existing logic would have covered that file as well. And really I
>>>> think it should have been mbi2.init.o (or else adding it into $(obj-bin-y)
>>>> is wrong), which probably wants correcting at the same time (ISTR actually
>>>> having requested that during an earlier review round).
>>>
>>> This was my first attempt, but it fails poorly, as EFIOBJ-y comes with
>>> the addition of creating some file links that causes mbi2.c to be
>>> overridden.
>>
>> I can't see $(EFIOBJ-y) affecting symlink creation. What I can see is that
>> the variable is used in the setting of clean-files, which indeed is a problem.
>> Still imo the solution then is to introduce another variable to substitute the
>> uses of $(EFIOBJ-y) in arch/x86/efi/Makefile. E.g.
>>
>> EFIOBJ-all := $(EFIOBJ-y) mbi2.init.o
>>
> 
> what about simply
> 
> diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
> index 7e2b5c07de..f2ce739f57 100644
> --- a/xen/arch/x86/efi/Makefile
> +++ b/xen/arch/x86/efi/Makefile
> @@ -9,7 +9,7 @@ $(obj)/%.o: $(src)/%.ihex FORCE
> $(obj)/boot.init.o: $(obj)/buildid.o
> 
> $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=4)
> -$(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary :=
> $(cflags-stack-boundary)
> +$(addprefix $(obj)/,$(EFIOBJ-y) mbi2.o): CFLAGS_stack_boundary :=
> $(cflags-stack-boundary)
> 
> obj-y := common-stub.o stub.o
> obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))

Yes, but see below for the other adjustment to make.

>>> If I remember, you suggested changing to obj-bin-y. Still, maybe is
>>> not the best place. It was added to obj-bin-y because it should be
>>> included either if XEN_BUILD_EFI is "y" or not.
>>
>> No, that doesn't explain the addition to obj-bin-y; this would equally be
>> achieved by adding to obj-y. The difference between the two variables is
>> whether objects are to be subject to LTO. And the typical case then is that
>> init-only objects aren't worth that extra build overhead. Hence the common
>> pattern is (besides files with assembly sources) for *.init.o to be added to
>> obj-bin-*.
> 
> Then I would stick to obj-bin-y.

Correct, yet it wants to be mbi2.init.o there.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:41:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:41:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815805.1230020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syojT-0006yo-Pb; Thu, 10 Oct 2024 08:41:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815805.1230020; Thu, 10 Oct 2024 08: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 1syojT-0006yh-Me; Thu, 10 Oct 2024 08:41:15 +0000
Received: by outflank-mailman (input) for mailman id 815805;
 Thu, 10 Oct 2024 08:41: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=1fZv=RG=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1syojT-0006yJ-2r
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:41:15 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20630.outbound.protection.outlook.com
 [2a01:111:f403:2414::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 67895ebc-86e3-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 10:41:13 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CH3PR12MB9196.namprd12.prod.outlook.com (2603:10b6:610:197::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 08:41:09 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024
 08:41: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: 67895ebc-86e3-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DYmIST2+zVl7POHU/TB8rEBaT/p48d5aJ+Z2NORcTc0y7fYuuG3/pknNGB7BlCDdLcu4K7VvJ3CXrthuo9fwWjzqLb49CZrx0eifBGRXhXdlFEdERfpfAFUfZKHOpRxDh2viLO+qVkwlvMtv1kpxr9cSplMuEvaLsjUPyrQptMZ4xo194UC9Q+Z087GnBSQuOLd34WzwA8yfDgNn3GFfKwBsIt6OeyWQ4WVRpVpxXb0ErmUULbQ32X4UOAIUHG4VeKYYQhC1lcaoMLM+eN2Chn3Gb3BOGgyFznqgZXtdUae80fu24OoySsYBTCvAn3U+08jlYlpoyFhxzy3kQyFInA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=pg6wvMKY4j5BZkgnHX7n7GYoZI23XClvF+KHkBr8r1E=;
 b=uuQG3HwA0kxVWJZJkzpNl+z6Txh3chKkAfQrlxaEMSu7XiGrcR7KFbElTVFpOA1W/47fd+FMF6TOMFFzdXJi1AbLmadD1RgOcvBu3kCTyxkJGz7uFkRJQmv6PqajNNtIkpWv340HcL4MvrXgqCemq6ktsyz/m88xPScchHgWsU4zmY7rRwoNTKaa4M+0LY6i+ZZIQLxUMu5/1SwFs1IPwSQPWTQM1jB4t80QoXMhUibGOqmiRGhqLaRuFkHrzcSdoTU9dh39PSgXLvwkSmJ2dDOHzBzbpUnQNVETMsQnfuBOUmxvnGxj8Ii1DKtgARa3XZM5eZTpvUQZQ7l6wp598A==
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=pg6wvMKY4j5BZkgnHX7n7GYoZI23XClvF+KHkBr8r1E=;
 b=x3TM0OSe4a0a4reNMGw8jz9nWEUCNLXr9uQOn5YS/R4FoBb1ud0wSWC/E5TnUZwsCLpQGSjCD99x9dLN327FtX0k6VtVwSS0ybQZYRCuTp2fPMXiFZjrtU/FLsZfUHuN1uMNSoJu/6AMcs/+OAir8E1vSerkH/4sCH0SbtSwitE=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	=?iso-8859-1?Q?Marek_Marczykowski-G=F3recki?=
	<marmarek@invisiblethingslab.com>, Juergen Gross <jgross@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
Thread-Topic: [PATCH v2] xen: Remove dependency between pciback and privcmd
Thread-Index: AQHbGupfp7VkZjmg5kywfP9O2WdcyLJ/o+wAgACL5oA=
Date: Thu, 10 Oct 2024 08:41:09 +0000
Message-ID:
 <BL1PR12MB5849298F820763B42CA7A34CE7782@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
 <e6d4912a-d6d0-41f8-a3e6-fe3eec6c6807@suse.com>
In-Reply-To: <e6d4912a-d6d0-41f8-a3e6-fe3eec6c6807@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8026.020)
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_|CH3PR12MB9196:EE_
x-ms-office365-filtering-correlation-id: 8a29f465-d556-4a54-e2b5-08dce90749ea
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
x-microsoft-antispam-message-info:
 =?iso-8859-1?Q?pSPXk9SvvmJGwVGhuE2cy+d3xke4Klx0iXaq7CVQyjiKLKX2SZcwFOe1EG?=
 =?iso-8859-1?Q?V1CyLYN2qis4fr+wfiLVU3rIJSL17/nh+R+WQdJx8LlknaBi3O5N7eM7rI?=
 =?iso-8859-1?Q?g9sru1+lbR3RTr/1K0ZO5InXLn1I/ub6WUyIUPftecyJqkCIt+pIAVQJuo?=
 =?iso-8859-1?Q?f+WGhubQHxqv/TcETrYE/2npRcmKwBtkG4sRFrdkc9eQjgaWwBD3+t6iTW?=
 =?iso-8859-1?Q?cjFjh1kGNERkmDarq2gHccdLtvkB9+S3OFLV64mo4RZ8gxm4JXDtJyBF8y?=
 =?iso-8859-1?Q?KOsEKDhp7AEtLusCRQGNBifiyVMFHYzqQ4tJ98IFvz5Dea3q+mANjVTNrh?=
 =?iso-8859-1?Q?a6yGtk9OLLxHmnrdlhxS49nJMk/PZVKQfXRiTp8JOZF54Zlp8apBZW0wb6?=
 =?iso-8859-1?Q?FBXbFC1wlQGnzVXSeOJ9qd0IJGSOIsq0I9mIZW6WiBGHVtmc/WfSCpFCMs?=
 =?iso-8859-1?Q?+Quo7vCmXmgCuId2c5pW/H62Z6fs5KoaC9yQKVfij1qqTEbQxy1/IEBHT9?=
 =?iso-8859-1?Q?TkBrQ/Bzd6xasSWCw+2IuW4YA5TRtRAf3Do1839/UT9fSI56GVT80Axked?=
 =?iso-8859-1?Q?g+aQ8KWybb0w7R+Uq/S4rU9+bwmKWCGfZ/wntYNZGqRZ9PpkU3urTtBNpl?=
 =?iso-8859-1?Q?FfVuv3QvQsNlzHKWcRxxwdlJ3q9ah30BAhupKeyYJMVNYkVfm21L+vjZsS?=
 =?iso-8859-1?Q?LD2LgAw8qgcd9jOkstKUbTFJvnNohLsK8RQJSk92qPEktJ8I0Pk3dI+LzL?=
 =?iso-8859-1?Q?dq+jy3zpRjLfQ13+gvBIdpzqxg80GWHUBE+sasi2d2pfJ3tUyTvysLD87p?=
 =?iso-8859-1?Q?5sTQXbWM1/HbzcJVw7mTuEIVyMIQsZH2JJ75yWxS/I0olgCPju/8iLiedK?=
 =?iso-8859-1?Q?5P+T+ssLS2Mf74uzgQMAh7/G6kvh4urIN5amgZdDVvlaMbI954v31euk3f?=
 =?iso-8859-1?Q?LXYPcpwJeQ56Jrc7XJXIGbUxwCj12vpQ38HVJtTRaEo9+bJqfN8cMSo+n9?=
 =?iso-8859-1?Q?EVN5LElCnhZrGe8271Mw5QjAsUMkowG6zDHJPxjn5LIMQiZt8j+vT56hCM?=
 =?iso-8859-1?Q?uPloJXy0422w0ItaAzDe9TsWkBPbZBMSB9iQYPDggJV6eSqVaYGltMT7Sn?=
 =?iso-8859-1?Q?P2UYw4JBP1ELerOggsMOuCrpCRPTTZOhpgXelGqCzunXJed7bnm+hnOMUE?=
 =?iso-8859-1?Q?JHoHl91JzClUUySfKSERTOdj7ZwHRd0NVdech7SLC4OIDRwrPD8oujXB90?=
 =?iso-8859-1?Q?K3KTSXZSfA245b2hjGCXLpDndB5o6+YAtrxrNk4idFuGwJAfIvV0rjpN6o?=
 =?iso-8859-1?Q?TL0IWIUcB40+1+So/zf/zlKVCZLdItEzGmpp5xmcEKw5yptAzBwY0oT3Yo?=
 =?iso-8859-1?Q?bB4MjSD2BUSSe5f8+FAptKqdWyLGhryQ=3D=3D?=
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:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?33VpxohqwM7VyH8H/JJ4TXY77RBZXuijAkvaLcIzgqiUMUABPGPb4lzPG5?=
 =?iso-8859-1?Q?US8KtSpZQWR4Xb4MrQSdK6/8gnRsYWlGulaeQQ3cRLEI23hC3JHUBCG6bB?=
 =?iso-8859-1?Q?7WG/i/Utlf/sMUx9YG8Libho5SCT/9OWbyT8YSSW7BtFmB79ASlYI8j/XI?=
 =?iso-8859-1?Q?y9NgW5T2B7JKc1neks0/EAWwMHzZK6XIO9AGnewx2N7pInaEmctCYBlvDl?=
 =?iso-8859-1?Q?w7GCQ7vVvH9RwW1avVH0LUkaiZdaUwVOksxH1BF13o/oFAgVHxIkuJCTvN?=
 =?iso-8859-1?Q?w/V2eWTJB/lGG3S67cjbmtXYO2AeSD8yDwTKZsUcvM0+zDnkWV9b+ynpEv?=
 =?iso-8859-1?Q?ruIwkIKg7u+hcy/CV4BgHxnXXvWJ/y39mFk9QZXCJpYIWGKeANDZIHM4CZ?=
 =?iso-8859-1?Q?ZJrIGlzfpUfa8Uzk6VvxYgp9+IJWDHI5XS3Opr6uCBS+7Za7QSfrtpXsNT?=
 =?iso-8859-1?Q?978r7rc60jLqI6ZER98zTRb254pbI0OPlquktxF55Zke41JkDCU7qx7P+G?=
 =?iso-8859-1?Q?IxOHik9aiNm4843qxwrnCd+ea66ISwU1I7VHQ0WsuD73u8h9DDzZwYe1Ds?=
 =?iso-8859-1?Q?ua4tSwz7eCv+IOXG2GdEHLNVojFLvEjduQahr2JZ09Zp3BiiEPfh5/5YKs?=
 =?iso-8859-1?Q?DAC4f84cCDyjiYkxmti6lT8vAafYgY+VK+0urIFwQ5lVAlkWqgFfvfQoWR?=
 =?iso-8859-1?Q?GnjbJvNgLbAxnGS01DERIrV+Wy7mX36jneMHJpr8mE+L4hocSdviMufRT7?=
 =?iso-8859-1?Q?ZJ57wE43F/v0tQbEHAljfFheb/EThcR3NGjnz75Mgd1ARlSoeFN7eq7luh?=
 =?iso-8859-1?Q?XQEKJuUBM1VxPTdnf9Hs4A97MnBByllb3e73LM3yH2cbQ+lIumzWIXBIa9?=
 =?iso-8859-1?Q?pB32Do2+z7Fk8+RtNbac4TpHID0Y7pVQy3MmK0+rdQM55aE10U7C49CfA5?=
 =?iso-8859-1?Q?fP6R2GwexmJquMpIGIc+s2AeLee882fCQaZUzcVbpUAXOUtHVdp5yEWHfE?=
 =?iso-8859-1?Q?ga55f2g/7+4O/p4YIOxdPFHwT4bBE6lHp53DFKQtLXpLmwMHagj2IKYqpF?=
 =?iso-8859-1?Q?87nGSNrpA+/Bw2MebNi+G8d7VsRByNqHaIZhtHDBsjwozDsnLnqDKcSEdo?=
 =?iso-8859-1?Q?PeTE9CQYQYxZK2TZvDiwQLK9v2g6R4UTzxmssmOwFdOewQ5YkJljwmZRoV?=
 =?iso-8859-1?Q?phZHT77wcA3saUA/z6Gqywd0GV1Fly56drECO3wq0+O2YVQk+t8x5H3PM3?=
 =?iso-8859-1?Q?tIhjtCJMrcTp7MSQ9FoBxHaJLuXMNq/P/qxc+UjbTn7vrlVv32pWks3Spt?=
 =?iso-8859-1?Q?O472EaS0Fm/xy0SbUnGXxPZz7vd8QXnx+Rz98zPR+E+gJg5vO3mYPkXYql?=
 =?iso-8859-1?Q?+CrBD4Kfvxs9AVsYCYpBhVpgEOWKtCUHl19TV8lqcWMlqnqXlpb2Lo1Nb/?=
 =?iso-8859-1?Q?3Ox7CsGmA0DkmGLznxXN4JpZPHEThM/Uvj3+ni8HXa22GbBVJlQzM7qCNW?=
 =?iso-8859-1?Q?IKjSlOzfKAfS2jzLpOrPomOyPa8VCxpvDxQUy+IpWiVZgxJMbOLC4TX2jC?=
 =?iso-8859-1?Q?EdqyLYNKscJi9+MuBvWXra+3iqDbArmNn1Eu0M2G7aZahCPuus7agSbdep?=
 =?iso-8859-1?Q?hBq+0kg0v9vZ0=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <09914401FA8EE045BC0AD9EDD702C95F@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: quoted-printable
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: 8a29f465-d556-4a54-e2b5-08dce90749ea
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2024 08:41:09.3923
 (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: frsHIZnQf7ulRzta/e2lAnTewcEvPThJ+PnLoWS6SDG4BQZ1S79bY33wseBcdZuKppvIYiRGKtT7g7H6xWM+iw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9196

On 2024/10/10 16:17, Jan Beulich wrote:
> On 10.10.2024 09:58, Jiqian Chen wrote:
>> --- a/drivers/xen/acpi.c
>> +++ b/drivers/xen/acpi.c
>> @@ -125,3 +125,20 @@ int xen_acpi_get_gsi_info(struct pci_dev *dev,
>>  	return 0;
>>  }
>>  EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_info);
>> +
>> +get_gsi_from_sbdf_t get_gsi_from_sbdf =3D NULL;
>> +
>> +void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func)
>> +{
>> +	get_gsi_from_sbdf =3D func;
>> +}
>> +EXPORT_SYMBOL_GPL(xen_acpi_register_get_gsi_func);
>> +
>> +int xen_acpi_get_gsi_from_sbdf(u32 sbdf)
>> +{
>> +	if (get_gsi_from_sbdf)
>> +		return get_gsi_from_sbdf(sbdf);
>> +
>> +	return -EINVAL;
>=20
> Perhaps better -EOPNOTSUPP?
OK, will change.
>=20
>> +}
>> +EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_from_sbdf);
>> \ No newline at end of file
>=20
> Can you please take care of this as well while touching the file? Or
> maybe you are doing so, but the diff doesn't show it properly?
Yes, will change.
>=20
>> @@ -484,6 +483,7 @@ static int pcistub_init_device(struct pcistub_device=
 *psdev)
>>  		if (err)
>>  			goto config_release;
>>  		psdev->gsi =3D gsi;
>> +		xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
>>  	}
>>  #endif
>=20
> Why here rather than directly in xen_pcibk_init()? And why no change to
> xen_pcibk_cleanup() to remove the hook again on unload? Which will then
> raise the question of possible race conditions.
You are right, will change in next version.

>=20
> Jan

--=20
Best regards,
Jiqian Chen.


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:43:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:43:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815822.1230030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syom2-0000St-9J; Thu, 10 Oct 2024 08:43:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815822.1230030; Thu, 10 Oct 2024 08:43: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 1syom2-0000Sm-63; Thu, 10 Oct 2024 08:43:54 +0000
Received: by outflank-mailman (input) for mailman id 815822;
 Thu, 10 Oct 2024 08:43: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=1fZv=RG=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1syom0-0000Se-Kz
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:43:52 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2061d.outbound.protection.outlook.com
 [2a01:111:f403:2415::61d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c4fa820b-86e3-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 10:43:50 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CH3PR12MB9196.namprd12.prod.outlook.com (2603:10b6:610:197::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 08:43:47 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024
 08:43: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>
X-Inumbo-ID: c4fa820b-86e3-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jCXyiAiJOTJkSw00irUA7xr1Q2E1hYTaPUKhRCUrUT26kGhnhrdog6Gtki/mfLujsGn6RTMrDk9+wK5XwQA8DNQ9y3B5l49WXFvGdgLqJzlB5TvoG+9Ri1Ot3vLGs2lEu9+/F9bDCJ3Xp6bWjusBUbJI9KZj5nPpGAxMioCMQW9fUfNcRKAd5FCFemW+ffwhPMV9U/tqTd6jwRtF60TKcK0fCehaQu2kZu9ptBRYfwFBXuhT9gVznOs+qslYoiqXZX0eIAxvCWQKzEuL3Gn3EfhNwaoFFgGziKyIo9sbMZ/4EUZV1t0LA0eIiXzdR4R/lFyAGR6QPE0JzqPVekWR4g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=w3TyFzA4vek/Sq2Sr8mqC4fgkdm4N7jg0JpPZ0YM1/0=;
 b=Dseh6fQAJBs6+bFfvQYeKePd1vKVYl1kkymCIVDh15alm9hJpA4yrT2FmD8S37pKSJLxCe9GbWrU1mQ6TRabUc3d7vgSWeHRtk6p/ukGGkPx3TrBshVFRX2zigNAWN5cFAFy8l4RwcCb1swOSpc+bfBMTRcrxZ6BKQXuTlh+tpIX3z9sW3Y/t+YEgJ/qVKhLg0ooQNEfEG6N/rChA7HyZc/G5n1SRo/0/V3l3n6xkk2X7ckjAu3P6aXwQnacujk9Nc+22VbUC10po+3P1rB6kX/MdNtDgBFZb9y82G8voDtrQSfIG7pKqNjvP9gmM7ddn+4aFroWIWooglSVAhNIBw==
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=w3TyFzA4vek/Sq2Sr8mqC4fgkdm4N7jg0JpPZ0YM1/0=;
 b=LAGdLAfCueMfl9Linqx2tez1oyfXP4e4QKLLj4rxApGAfl5JdVPM5EY8NruRXekU+geVudUeVXg3Od9ePWZ+8tN+fI8+UETCNAs3uC0xsGWwz7YT+53FxvQN9JQMOFitLOsMo4VsS4eW0csvtMjMNm5kiIKzLpheuGoXgbskwNY=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: =?utf-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	=?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
Thread-Topic: [PATCH v2] xen: Remove dependency between pciback and privcmd
Thread-Index: AQHbGupfp7VkZjmg5kywfP9O2WdcyLJ/qfUAgACG1AA=
Date: Thu, 10 Oct 2024 08:43:46 +0000
Message-ID:
 <BL1PR12MB58490A1ED940EFFF12A4FB38E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
 <e7b98fbf-ee28-4083-a4c5-7dc122252e07@suse.com>
In-Reply-To: <e7b98fbf-ee28-4083-a4c5-7dc122252e07@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8026.020)
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_|CH3PR12MB9196:EE_
x-ms-office365-filtering-correlation-id: ab26be76-af25-4ac9-dee4-08dce907a7d2
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?QkdQNkdoaHVNdkFXWGFwRG5aUVlRbGZGTFlpeXJiNnFGc3RiSDFxTW0zbFYz?=
 =?utf-8?B?UVI2T0tPamQxd2dJaUNpNjk1WTduckd4WnFsN3RJcVJ1ams4VkQ5WnUzSWxZ?=
 =?utf-8?B?WkFzTDdEOEN3ZDkza2E1a1VzNjd2eTRyUC9IemdvU0VlVThCWkdaRXBFL1Y5?=
 =?utf-8?B?MEdKZkZJWFVRZFA2SFNHdjJRT1duR0IrdHNyNy9tTDNnVFhpSHNCV1dLWUMr?=
 =?utf-8?B?NGFhL2orQndZRUkvS1Arb1RBNWVaZnlYbUJ4V0NOdE9lM0N1YlZMN25DYlc4?=
 =?utf-8?B?WVhRRW5GWjM4TnlHZ0xoZ0IyMXErZUExT3k0MFJQNFFZOHV4U3FWeDZNWERj?=
 =?utf-8?B?K245aVJEbG9vWDJXZ0tqZGlVa1RpMjlqZGhVQ2xYV0tvMUtBVEhGamh4QjVC?=
 =?utf-8?B?TjhxWVFucWpWUjRrTzFEaWVDUGk1ZkV1Q1N3VWNKM2xaVXREWHJlZHhJMWc4?=
 =?utf-8?B?ZlMwL0xHWXJGTXRJUzdMRkNzNW5xNU9xNG80SWpnRHZGdXU2VFBOT21kTVRq?=
 =?utf-8?B?Wk4rM0RxQ2Qydklzb2FiQWV5THUxQmQ3UFk4R0hnZElQOGk1M1Y5M25BMEFy?=
 =?utf-8?B?dXdNS2dHalZKbmZGQjg5YnZEd2YzSzZXOWJYU0VxTGFPSThoWDNrbE8xK1c4?=
 =?utf-8?B?UkFpV2xRVmZtRjVSSTdVWDF4czhtYUg5MmVvS2x3MXdyN3llRFd0Y3AzME9P?=
 =?utf-8?B?ZjJHZVo0Rm9JZUZOZU8zSWViclZEb1hFd3hOL3c1cjBZWE56UnpqTGlhaFp1?=
 =?utf-8?B?d3I0RGhwR1VmVHJCWHVRS0g3Z0NuZ3VsTEJ2U3NvR0pzY3ZmbUc4Y2lJRldU?=
 =?utf-8?B?MmM2L0htdmFqQ1hjQ2tIc0FMZUVpQVBNSW9rK3NTQnhDMzZJdDJkY1lqRExJ?=
 =?utf-8?B?NS9pUUxUdndJbDBDTFQyVGYvQW9aYjNvdm11eXB4Zm1YREl5cUVmcWkxRkxC?=
 =?utf-8?B?alkzY25YQXU4azBUNnU4SGRTY2tOUUJJRDZrU0xzRzJmQjFJVjJ5YVlUVEJn?=
 =?utf-8?B?TUJrc3VOYWU5d3VwNXJnakpDb2lRN3NnYTV4dTFOVWEwclFSVEQ5cTVlNXRk?=
 =?utf-8?B?MGJZQzFjU1VFUHd4Z1pOOWpOZVdtTEY5cy8vNFZORnpnQ2kwdE0yM3JLYkhZ?=
 =?utf-8?B?MEJqZi9TTCtDUklaSGRwZWhLRFdkSG1lMVV2Q3BmdTQ4N3JtN05lNnRuSGhW?=
 =?utf-8?B?MUY1S0IvL0cwUEdtR3drRWszM2doTENFd3BGRE1LbDk2TXF0YmNDbnp1UzJz?=
 =?utf-8?B?TjBCVmRURk84VkJwSE1raWdOclNCdDJRTXBiZDk4TkFlUTkyRlEwMjdkdFdh?=
 =?utf-8?B?U1VTNGhZdk02emZYVFFvdHAvKzM0Kzl3VFdveUFBMWhJZ2pSTHRTbWhnWW95?=
 =?utf-8?B?aUFYTlVMaFVGZ0szM2g5Mmo5azJQdFNXL3hEMTg0NmxhdCswNVoyaUtTeWVR?=
 =?utf-8?B?SmZaZ1dOQkNIVmtiOGZkVE1lcEtCaUxURjVYemswak9LU09BK2dDZFR5K1di?=
 =?utf-8?B?dWpjcW02ZEVzczc3N2pYSUV2R3E3WklOeXFlWUFJUndhY2w1L3VRZnN6cWFs?=
 =?utf-8?B?QmwvZ0xhN0lPOGEvanJuVnFyaUM5RndsNTVBcUUvUUdRd2lKTTVwUGMvaHBp?=
 =?utf-8?B?eFBhUzcwK3E0eHkrc3Iwc0UxKzFyeWRMYUV2ZDlmQXBndDcwKzFMUjM2WG1q?=
 =?utf-8?B?YnVCejZoVjZ3RjVVUmdDVTByVGR0TkZsWXhqSDJ6Q2xBSjdvU1FQTkY5YytF?=
 =?utf-8?B?ZzRIdXRjOTFvRU9CWVI1UnNVdGR2V0x1VEN0eEFYUWxEZnA1Y1doREtnYVNC?=
 =?utf-8?B?OEo5aUxWZ3RvNnZ6N1E0UT09?=
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:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?Q1VrbnBMZmxwZ0VuL2VPMzdjaWRKY2pkUGhacWpDdWwwUXk5ZUhiVWtYN2ZZ?=
 =?utf-8?B?U3hBcVgwYzNZWlBIRytkT21JNFlzRFZ0eTBqVSsvZC9Qb3pHdjM4K3duTGVU?=
 =?utf-8?B?QUliUm9nRGFsaTFlckFGdEZqNmlSVnlqdzYwZ0NBOEVxdzNPcXhKZk5HKzZh?=
 =?utf-8?B?QWZsOElqck1ib2dCSjIyTFh1Vm1yYlE0WDBJK0JINVRjUWR1b0h6T1BYenZC?=
 =?utf-8?B?SzFEb2FUL2xlem1iaDR0L0xqeDVQOVJBZmNGaS94dkVBaU9lRnZXa1FnUjBz?=
 =?utf-8?B?TWZMYy9DTEY1NTk0a1JhQjBYQmQ1SUJ2dTlrS2dPRDdwVGJJcnZuSm9PVzNh?=
 =?utf-8?B?ZWdkNS9ad3A2NGovS0toWlcyOXY0M3ZpM2tuRkhLbE1lMzRmWmJDWEZEa2Q3?=
 =?utf-8?B?cFJOaDltNU1mR0twQlE1a2VYZ2Jua1dLeUdTV1ArN3ZvUWZDVnpjSWlYU0tp?=
 =?utf-8?B?U0VDRXd4WmdiVHdoRlZwNmdlaUo4VFRCUTdvUlBtKzVtNDVsNUt2amYzZ3Iy?=
 =?utf-8?B?YVFZSUNtQjVjNlVMUHVWbU16c3lrb3grSmdmYXBWUGV2NDFTR0RkMzdwT1JE?=
 =?utf-8?B?ZDRKcmJ0MDRnWERNbjZST0hkODg5Y1ZPUCs5ZUJDTWEwZjZpK21RL09PVTk5?=
 =?utf-8?B?RE5BNWswTmVnSXk5ZHhFaDlNbHNSRGxIc1puU1MrR2p2TDg3bFlRYlMrK2hw?=
 =?utf-8?B?NDhMK2JBTXRBWjZYN3BKcit6Y1I5MjN1V3dMV3JQTlNWeEpDSi9RRnBVVlJk?=
 =?utf-8?B?bXNOOTlTa1hVTzZPd2RDN1h0ZzFQOFJJTU9WSkhYMWFkdmZjMlNMei9KTjdZ?=
 =?utf-8?B?ZjYyd3BHTXk3YzdiZDlnUFdld3ZHM3lhUmpSZEpKaHoyeHliYytqM29JSXZl?=
 =?utf-8?B?bGNSdERmN2c3aHQxMXU5ZUJpNlAvSDFTUVdMWUI0dlZMRGZUOTZYemJ5TDYx?=
 =?utf-8?B?b1Q0WWZIMkZmSTFJMGVxek9EVi91YzR5TS9BTnhsSmV3Q0JTSExLNzgyS0xR?=
 =?utf-8?B?dklwYndmTGxwRkJmZEtteFlybUVJaXdra0hTRmRmRGNBSHpLallYVGhVWEd2?=
 =?utf-8?B?a3dMdk9QMHpoeTIyODRVOVI2dytCNnQxMWlON1JZNVFqaFhqUk9xcm1XS2xN?=
 =?utf-8?B?TDdTdHBERElyanZpN3RraG9Rc0h6TzQ5S3pxdk5nOHIzckt5QVB4bmNraXhx?=
 =?utf-8?B?ZnUwQTRSMzBDZXhTdFoxLzc4ZlNFR3Fpd2ZEejRqbDZjdFAwVE9WcmFhMFNQ?=
 =?utf-8?B?aGhGRCtUcUtQNTVTcE9YeWtWd2s3c25pWXdNb3dNUFdqeTBOZ0Z4ZFFIazBw?=
 =?utf-8?B?eEJEZnA4QmErUHlsdDFUSUk0NGtnYjk1UDJwcU9zVUZvUHFBQnBDT0dVUVpr?=
 =?utf-8?B?dnkzcUx1MG1FZWMyYWQ2UmhIV1RYb0Y3SExQbXRSakluVUZMQVRpNXo5bnly?=
 =?utf-8?B?aGZFK1dMZ3FySVdHbW9LMmoveStwUWxYUGlPSjFOSlc4TGhFbG5hcEQ3L0Ns?=
 =?utf-8?B?RVR2QnpTWUw3YVRYaitDajBlOFdQcGpnc1dnU29GZ3JIQnIxMHFkY1VqTlJy?=
 =?utf-8?B?VFVTcHRVb2FBMkx5SE1XRlZNZUdvMWdqaXBIZzczdCtSa2dyVEJFdHR3Z1ZL?=
 =?utf-8?B?RDBXYjJ4cnFtclhXVzBxNGdzVnN2ZnBWMGRxcjh3a3BtbUluMmdwM3VzSWlW?=
 =?utf-8?B?dVlXL0s2YjBxQmRaQ1lReXVFLzJ1TnIwZlZyQjhXMEhsa2NnTUZQRFdqRG9n?=
 =?utf-8?B?MTJ1TWwybzRYZXR0VTBDRVErR3Qwakxncysra0sxTTFKR1lsYUlEZ3Zaanhl?=
 =?utf-8?B?M3BOeCtQWHBpbkU1eFFtMWt4WEpCRmZkRVVwLzkrWHc2UURKZkpKd0ZjOFFF?=
 =?utf-8?B?QktaZDZQSFJudlNjNmxaU0o5eDBmeG04MVQwV01kV3lOOGl6dTZvOWk3R2tS?=
 =?utf-8?B?elZpeVNXWXNIa1BSQlFYZXF2Z3FDcEYwUG5LNDFpbFN1VTNkRWRpZ1htRi9O?=
 =?utf-8?B?cnRlTU5zNW8zUXhjVTZ0YUxYNWJOYkhVZFEvYXpTMFV0S2s2RVdNSnpnZlpo?=
 =?utf-8?B?RzlINk5kVm5iaUhXaVdYb0x5Mml5TXgvMXlXdjl1Umw5K1RXVmE2WHJqbVcv?=
 =?utf-8?Q?QtDQ=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <A1830976FB9DA0479E10E6B8199BF10C@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: ab26be76-af25-4ac9-dee4-08dce907a7d2
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2024 08:43:46.9059
 (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: x8Xnp+gpVN2rw7/tb+ZK+VsRK+jKplBUn6R1LM6PDxQxw3D07Z/ordu0TqO+bUnyZoJbUXyBvMXE4QOWAbH+Fg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9196

T24gMjAyNC8xMC8xMCAxNjozOSwgSsO8cmdlbiBHcm/DnyB3cm90ZToNCj4gT24gMTAuMTAuMjQg
MDk6NTgsIEppcWlhbiBDaGVuIHdyb3RlOg0KPj4gQ29tbWl0IDJmYWU2YmI3YmUzMiAoInhlbi9w
cml2Y21kOiBBZGQgbmV3IHN5c2NhbGwgdG8gZ2V0IGdzaSBmcm9tIGRldiIpDQo+PiBhZGRzIGEg
d2VhayByZXZlcnNlIGRlcGVuZGVuY3kgdG8gdGhlIGNvbmZpZyBYRU5fUFJJVkNNRCBkZWZpbml0
aW9uLCB0aGF0DQo+PiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4tcHJpdmNtZCBjYW4ndCBiZSBsb2Fk
ZWQgb24gZG9tVSwgYmVjYXVzZQ0KPj4gZGVwZW5kZW50IHhlbi1wY2liYWNrIGlzIGFsd2F5cyBu
b3QgYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseSBvbiBkb21VLg0KPj4NCj4+IFRvIHNvbHZlIGFib3Zl
IHByb2JsZW0sIHJlbW92ZSB0aGF0IGRlcGVuZGVuY3ksIGFuZCBkbyBub3QgY2FsbA0KPj4gcGNp
c3R1Yl9nZXRfZ3NpX2Zyb21fc2JkZigpIGRpcmVjdGx5LCBpbnN0ZWFkIGFkZCBhIGhvb2sgaW4N
Cj4+IGRyaXZlcnMveGVuL2FwY2kuYywgeGVuLXBjaWJhY2sgcmVnaXN0ZXIgdGhlIHJlYWwgY2Fs
bCBmdW5jdGlvbiwgdGhlbiBpbg0KPj4gcHJpdmNtZF9pb2N0bF9wY2lkZXZfZ2V0X2dzaSBjYWxs
IHRoYXQgaG9vay4NCj4+DQo+PiBGaXhlczogMmZhZTZiYjdiZTMyICgieGVuL3ByaXZjbWQ6IEFk
ZCBuZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20gZGV2IikNCj4+IFJlcG9ydGVkLWJ5OiBNYXJl
ayBNYXJjenlrb3dza2ktR8OzcmVja2kgPG1hcm1hcmVrQGludmlzaWJsZXRoaW5nc2xhYi5jb20+
DQo+PiBTaWduZWQtb2ZmLWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1kLmNvbT4NCj4+
IC0tLQ0KPj4gdjEtPnYyIGNoYW5nZXM6DQo+PiBBZGRlZCBob29rIHhlbl9hY3BpX2dldF9nc2lf
ZnJvbV9zYmRmLg0KPj4gQ2hhbmdlZCBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmIHRvIHN0YXRp
YyBhbmQgcGNpYmFjayByZWdpc3RlciBpdCBhcyB0aGUgcmVhbCBob29rIGZ1bmN0aW9uLg0KPj4g
LS0tDQo+PiDCoCBkcml2ZXJzL3hlbi9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHzCoCAxIC0NCj4+IMKgIGRyaXZlcnMveGVuL2FjcGkuY8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHwgMTcgKysrKysrKysrKysrKysrKysNCj4+IMKgIGRyaXZlcnMveGVuL3By
aXZjbWQuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2ICsrLS0tLQ0KPj4gwqAgZHJp
dmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0dWIuYyB8wqAgNCArKy0tDQo+PiDCoCBpbmNsdWRl
L3hlbi9hY3BpLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDEyICsrKystLS0t
LS0tLQ0KPj4gwqAgNSBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlv
bnMoLSkNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vS2NvbmZpZyBiL2RyaXZlcnMv
eGVuL0tjb25maWcNCj4+IGluZGV4IDcyZGRlZTRjMTU0NC4uZjdkNmY0Nzk3MWZkIDEwMDY0NA0K
Pj4gLS0tIGEvZHJpdmVycy94ZW4vS2NvbmZpZw0KPj4gKysrIGIvZHJpdmVycy94ZW4vS2NvbmZp
Zw0KPj4gQEAgLTI2MSw3ICsyNjEsNiBAQCBjb25maWcgWEVOX1NDU0lfQkFDS0VORA0KPj4gwqAg
Y29uZmlnIFhFTl9QUklWQ01EDQo+PiDCoMKgwqDCoMKgIHRyaXN0YXRlICJYZW4gaHlwZXJjYWxs
IHBhc3N0aHJvdWdoIGRyaXZlciINCj4+IMKgwqDCoMKgwqAgZGVwZW5kcyBvbiBYRU4NCj4+IC3C
oMKgwqAgaW1wbHkgWEVOX1BDSURFVl9CQUNLRU5EDQo+PiDCoMKgwqDCoMKgIGRlZmF1bHQgbQ0K
Pj4gwqDCoMKgwqDCoCBoZWxwDQo+PiDCoMKgwqDCoMKgwqDCoCBUaGUgaHlwZXJjYWxsIHBhc3N0
aHJvdWdoIGRyaXZlciBhbGxvd3MgcHJpdmlsZWdlZCB1c2VyIHByb2dyYW1zIHRvDQo+PiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy94ZW4vYWNwaS5jIGIvZHJpdmVycy94ZW4vYWNwaS5jDQo+PiBpbmRl
eCA5ZTIwOTY1MjRmYmMuLjBiZmYyZjNhODdkMiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMveGVu
L2FjcGkuYw0KPj4gKysrIGIvZHJpdmVycy94ZW4vYWNwaS5jDQo+PiBAQCAtMTI1LDMgKzEyNSwy
MCBAQCBpbnQgeGVuX2FjcGlfZ2V0X2dzaV9pbmZvKHN0cnVjdCBwY2lfZGV2ICpkZXYsDQo+PiDC
oMKgwqDCoMKgIHJldHVybiAwOw0KPj4gwqAgfQ0KPj4gwqAgRVhQT1JUX1NZTUJPTF9HUEwoeGVu
X2FjcGlfZ2V0X2dzaV9pbmZvKTsNCj4+ICsNCj4+ICtnZXRfZ3NpX2Zyb21fc2JkZl90IGdldF9n
c2lfZnJvbV9zYmRmID0gTlVMTDsNCj4+ICsNCj4+ICt2b2lkIHhlbl9hY3BpX3JlZ2lzdGVyX2dl
dF9nc2lfZnVuYyhnZXRfZ3NpX2Zyb21fc2JkZl90IGZ1bmMpDQo+PiArew0KPj4gK8KgwqDCoCBn
ZXRfZ3NpX2Zyb21fc2JkZiA9IGZ1bmM7DQo+PiArfQ0KPj4gK0VYUE9SVF9TWU1CT0xfR1BMKHhl
bl9hY3BpX3JlZ2lzdGVyX2dldF9nc2lfZnVuYyk7DQo+PiArDQo+PiAraW50IHhlbl9hY3BpX2dl
dF9nc2lfZnJvbV9zYmRmKHUzMiBzYmRmKQ0KPj4gK3sNCj4+ICvCoMKgwqAgaWYgKGdldF9nc2lf
ZnJvbV9zYmRmKQ0KPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBnZXRfZ3NpX2Zyb21fc2JkZihz
YmRmKTsNCj4+ICsNCj4+ICvCoMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+PiArfQ0KPj4gK0VYUE9S
VF9TWU1CT0xfR1BMKHhlbl9hY3BpX2dldF9nc2lfZnJvbV9zYmRmKTsNCj4+IFwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQ0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3ByaXZjbWQuYyBi
L2RyaXZlcnMveGVuL3ByaXZjbWQuYw0KPj4gaW5kZXggMzI3M2NiOGMyYTY2Li40Zjc1YmM4NzY0
NTQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL3hlbi9wcml2Y21kLmMNCj4+ICsrKyBiL2RyaXZl
cnMveGVuL3ByaXZjbWQuYw0KPj4gQEAgLTg1MCwxNSArODUwLDEzIEBAIHN0YXRpYyBsb25nIHBy
aXZjbWRfaW9jdGxfbW1hcF9yZXNvdXJjZShzdHJ1Y3QgZmlsZSAqZmlsZSwNCj4+IMKgIHN0YXRp
YyBsb25nIHByaXZjbWRfaW9jdGxfcGNpZGV2X2dldF9nc2koc3RydWN0IGZpbGUgKmZpbGUsIHZv
aWQgX191c2VyICp1ZGF0YSkNCj4+IMKgIHsNCj4+IMKgICNpZiBkZWZpbmVkKENPTkZJR19YRU5f
QUNQSSkNCj4+IC3CoMKgwqAgaW50IHJjID0gLUVJTlZBTDsNCj4+ICvCoMKgwqAgaW50IHJjOw0K
Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgcHJpdmNtZF9wY2lkZXZfZ2V0X2dzaSBrZGF0YTsNCj4+IMKg
IMKgwqDCoMKgwqAgaWYgKGNvcHlfZnJvbV91c2VyKCZrZGF0YSwgdWRhdGEsIHNpemVvZihrZGF0
YSkpKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAtRUZBVUxUOw0KPj4gwqAgLcKgwqDC
oCBpZiAoSVNfUkVBQ0hBQkxFKENPTkZJR19YRU5fUENJREVWX0JBQ0tFTkQpKQ0KPj4gLcKgwqDC
oMKgwqDCoMKgIHJjID0gcGNpc3R1Yl9nZXRfZ3NpX2Zyb21fc2JkZihrZGF0YS5zYmRmKTsNCj4+
IC0NCj4+ICvCoMKgwqAgcmMgPSB4ZW5fYWNwaV9nZXRfZ3NpX2Zyb21fc2JkZihrZGF0YS5zYmRm
KTsNCj4+IMKgwqDCoMKgwqAgaWYgKHJjIDwgMCkNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1
cm4gcmM7DQo+PiDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0
dWIuYyBiL2RyaXZlcnMveGVuL3hlbi1wY2liYWNrL3BjaV9zdHViLmMNCj4+IGluZGV4IDJmM2Rh
NWFjNjJjZC4uOTAwZTYxOTllZWM3IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy94ZW4veGVuLXBj
aWJhY2svcGNpX3N0dWIuYw0KPj4gKysrIGIvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0
dWIuYw0KPj4gQEAgLTIyNyw3ICsyMjcsNyBAQCBzdGF0aWMgc3RydWN0IHBjaV9kZXYgKnBjaXN0
dWJfZGV2aWNlX2dldF9wY2lfZGV2KHN0cnVjdCB4ZW5fcGNpYmtfZGV2aWNlICpwZGV2LA0KPj4g
wqAgfQ0KPj4gwqAgwqAgI2lmZGVmIENPTkZJR19YRU5fQUNQSQ0KPj4gLWludCBwY2lzdHViX2dl
dF9nc2lfZnJvbV9zYmRmKHVuc2lnbmVkIGludCBzYmRmKQ0KPj4gK3N0YXRpYyBpbnQgcGNpc3R1
Yl9nZXRfZ3NpX2Zyb21fc2JkZih1bnNpZ25lZCBpbnQgc2JkZikNCj4+IMKgIHsNCj4+IMKgwqDC
oMKgwqAgc3RydWN0IHBjaXN0dWJfZGV2aWNlICpwc2RldjsNCj4+IMKgwqDCoMKgwqAgaW50IGRv
bWFpbiA9IChzYmRmID4+IDE2KSAmIDB4ZmZmZjsNCj4+IEBAIC0yNDIsNyArMjQyLDYgQEAgaW50
IHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYodW5zaWduZWQgaW50IHNiZGYpDQo+PiDCoCDCoMKg
wqDCoMKgIHJldHVybiBwc2Rldi0+Z3NpOw0KPj4gwqAgfQ0KPj4gLUVYUE9SVF9TWU1CT0xfR1BM
KHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYpOw0KPj4gwqAgI2VuZGlmDQo+PiDCoCDCoCBzdHJ1
Y3QgcGNpX2RldiAqcGNpc3R1Yl9nZXRfcGNpX2Rldl9ieV9zbG90KHN0cnVjdCB4ZW5fcGNpYmtf
ZGV2aWNlICpwZGV2LA0KPj4gQEAgLTQ4NCw2ICs0ODMsNyBAQCBzdGF0aWMgaW50IHBjaXN0dWJf
aW5pdF9kZXZpY2Uoc3RydWN0IHBjaXN0dWJfZGV2aWNlICpwc2RldikNCj4+IMKgwqDCoMKgwqDC
oMKgwqDCoCBpZiAoZXJyKQ0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBjb25m
aWdfcmVsZWFzZTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBwc2Rldi0+Z3NpID0gZ3NpOw0KPj4g
K8KgwqDCoMKgwqDCoMKgIHhlbl9hY3BpX3JlZ2lzdGVyX2dldF9nc2lfZnVuYyhwY2lzdHViX2dl
dF9nc2lfZnJvbV9zYmRmKTsNCj4gDQo+IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0aGUgcmlnaHQg
cGxhY2UgZm9yIHJlZ2lzdGVyaW5nIHRoZSBmdW5jdGlvbi4NCj4gDQo+IEl0IHNob3VsZCBiZSBk
b25lIGF0IHRoZSBlbmQgb2YgeGVuX3BjaWJrX2luaXQoKSAoZ3VhcmRlZCB3aXRoIENPTkZJR19Y
RU5fQUNQSSkuDQo+IA0KPiBBZGRpdGlvbmFsbHkgeW91IHNob3VsZCByZXNldCB0aGUgZnVuY3Rp
b24gcG9pbnRlciBOVUxMIGluIHhlbl9wY2lia19jbGVhbnVwKCkuDQpTaG91bGQgSSBuZWVkIHRv
IGFkZCBhIG5ldyB1bnJlZ2lzdGVyIGZ1bmN0aW9uIHRvIHJlc2V0LCBvciBqdXN0IHBhc3MgTlVM
TCB0byB4ZW5fYWNwaV9yZWdpc3Rlcl9nZXRfZ3NpX2Z1bmMgPw0KDQo+IA0KPiANCj4gSnVlcmdl
bg0KDQotLSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVuLg0K


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 08:50:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 08:50:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815829.1230039 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syosB-0006bw-Ti; Thu, 10 Oct 2024 08:50:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815829.1230039; Thu, 10 Oct 2024 08: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 1syosB-0006bp-Qr; Thu, 10 Oct 2024 08:50:15 +0000
Received: by outflank-mailman (input) for mailman id 815829;
 Thu, 10 Oct 2024 08:50: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=Xe3N=RG=linaro.org=dan.carpenter@srs-se1.protection.inumbo.net>)
 id 1syos9-0006bj-Rb
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 08:50:13 +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 a8a6e797-86e4-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 10:50:11 +0200 (CEST)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-4311420b675so5427865e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 01:50:11 -0700 (PDT)
Received: from localhost ([196.207.164.177]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43117ff5930sm9483515e9.0.2024.10.10.01.50.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 01:50:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8a6e797-86e4-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1728550211; x=1729155011; 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=C28wmYcjpWumVpaF4ufJJPgnJaeWt/0xGrgSlXatWFI=;
        b=vMmo50l8ZX1tPJbgXIxDobbo+PKNVfFyiOm7Db8kVihfX0h3hk4rjhjsgqTwH9jxmo
         yZVmS423Ix6bqmZZHKF4lP2FJXdpKZYqe3M8p1AUAeH9lt8kiQr9QchuWrBGA2F+iBVm
         Saxl/0T9/HmQXjuuQlKFWrvBSbfBxP2V7R/LYNqTS3LVG93oAQJChBxEkTGD3ulEC1KC
         OAxPTVVBLBJhi2UY3nWwqZ4Xz/LVT2uRrj2opUIPHGEAMYd2l7umE7VItOyQqMJqvmhn
         N/LqPSYaouYJGkJV5OivdEk0LQd1pPPEAcbI5SKKOsI9cUnfCcxoFURowyo7P/GL0aGQ
         Zezg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728550211; x=1729155011;
        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=C28wmYcjpWumVpaF4ufJJPgnJaeWt/0xGrgSlXatWFI=;
        b=roHSoWf0+9HWSaunXJ6SrXrrt832AdNlQnJh1zNpw/r+PSQg1BekthF/pkqVt+0g+o
         MmzLd4MQQZCqzZ+bmwqjIG5+kouuVu5lKTgkeoxsvD2ps0u2Se4Go/yKIHtnmXu9Fz9Q
         1Im2vcltFGuKK0Xye05l+Dq0DunHqWm5wmZr3HQg+bL58ELAttFEZtHXY897BvXHO7ax
         5XIM75Fg9KcV+MPBNkrrLtZfDfsLoTSjnYg8mIYEVy9NRLbFv48mhaX44OxHQNQnQPXJ
         jjy6j3WaQfUA9J843+xBeY/6nGxr5DvRufgga8R+vRoX1Owsk413A3rRd2YLYz7SSiEX
         xg6A==
X-Forwarded-Encrypted: i=1; AJvYcCVHR6Qmu2QOKxl5PHrx0bu/zqr+GI1QUXUhF4UJ6o308BXMrP2rSe/VmFX3nQpdzEG0+gX1T333+2w=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx5bGaFtc9dO1ykoX7cYnOeVPkjh3/I/VekvhubbpjLRdeiVdHe
	BRul/PGAhzYKDIF8JISzXbYXSFECutUPo2CKfxqDqTKzn5M99lKsCeI6AemhOEA=
X-Google-Smtp-Source: AGHT+IFucfSES3j62KAzEm41LuUqQRM3VySAkjPe4+iZpB8R8Lb977wIeQTSTeOu3TgGseFk0hICSw==
X-Received: by 2002:a05:600c:4b95:b0:431:1a98:cb40 with SMTP id 5b1f17b1804b1-4311a98cc3dmr1671235e9.18.1728550211283;
        Thu, 10 Oct 2024 01:50:11 -0700 (PDT)
Date: Thu, 10 Oct 2024 11:50:06 +0300
From: Dan Carpenter <dan.carpenter@linaro.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 13/13] Remove devres from pci_intx()
Message-ID: <7f624c83-115b-4045-b068-0813a18c8200@stanley.mountain>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-14-pstanner@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241009083519.10088-14-pstanner@redhat.com>

On Wed, Oct 09, 2024 at 10:35:19AM +0200, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. This hybrid nature is undesirable.
> 
> Since all users of pci_intx() have by now been ported either to
> always-managed pcim_intx() or never-managed pci_intx_unmanaged(), the
> devres functionality can be removed from pci_intx().
> 
> Consequently, pci_intx_unmanaged() is now redundant, because pci_intx()
> itself is now unmanaged.
> 
> Remove the devres functionality from pci_intx(). Remove pci_intx_unmanaged().
> Have all users of pci_intx_unmanaged() call pci_intx().
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>

I don't like when we change a function like this but it still compiles fine.
If someone is working on a driver and hasn't pushed it yet, then it's probably
supposed to be using the new pcim_intx() but they won't discover that until they
detect the leaks at runtime.

Why not leave the pci_intx_unmanaged() name.  It's ugly and that will discorage
people from introducing new uses.

regards,
dan carpenter



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 09:03:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 09:03:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815846.1230073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syp5C-0004fK-8t; Thu, 10 Oct 2024 09:03:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815846.1230073; Thu, 10 Oct 2024 09:03: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 1syp5C-0004fD-6E; Thu, 10 Oct 2024 09:03:42 +0000
Received: by outflank-mailman (input) for mailman id 815846;
 Thu, 10 Oct 2024 09:03: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=Yp/E=RG=linuxfoundation.org=gregkh@srs-se1.protection.inumbo.net>)
 id 1syp5A-0004f7-VR
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 09:03: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 89d47b11-86e6-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 11:03:39 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 308DA5C5FC5;
 Thu, 10 Oct 2024 09:03:33 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B6CC3C4CEC5;
 Thu, 10 Oct 2024 09:03: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: 89d47b11-86e6-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1728551016;
	bh=qIga4ENKvNDSpomy+u9cYcJeIt2znVA3OvUMUn8Vt00=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=ma16Iqar46lFxN+U2JAe5vdwsOfrFSCv51iNGmJlzaeAsMcNWERh9kaZfcgmAlIsn
	 7oz09EjJd/j2moVcv8Qezht0w8lMm2GuIu9huksqREaTjb8+PZCZvolwVMZIoA3XXU
	 MiZzJ+yW2KdX7Yc9d7XcuMS6Gb4qyxLjxlOU9iVM=
Date: Thu, 10 Oct 2024 11:03:33 +0200
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Philipp Hortmann <philipp.g.hortmann@gmail.com>,
	Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>, Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 10/13] staging: rts5280: Use always-managed version
 of pci_intx()
Message-ID: <2024101006-chump-image-e65c@gregkh>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-11-pstanner@redhat.com>
 <2024100936-brunette-flannels-0d82@gregkh>
 <411f3c94-58b5-471e-bc58-e23d89d2078f@gmail.com>
 <b57dbf0c83125d58e4e2b488b5b5f71410fd8d6a.camel@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <b57dbf0c83125d58e4e2b488b5b5f71410fd8d6a.camel@redhat.com>

On Thu, Oct 10, 2024 at 10:03:30AM +0200, Philipp Stanner wrote:
> On Wed, 2024-10-09 at 21:41 +0200, Philipp Hortmann wrote:
> > On 10/9/24 11:38, Greg Kroah-Hartman wrote:
> > > On Wed, Oct 09, 2024 at 10:35:16AM +0200, Philipp Stanner wrote:
> > > > pci_intx() is a hybrid function which can sometimes be managed
> > > > through
> > > > devres. To remove this hybrid nature from pci_intx(), it is
> > > > necessary to
> > > > port users to either an always-managed or a never-managed
> > > > version.
> > > > 
> > > > rts5208 enables its PCI-Device with pcim_enable_device(). Thus,
> > > > it needs the
> > > > always-managed version.
> > > > 
> > > > Replace pci_intx() with pcim_intx().
> > > > 
> > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > ---
> > > >  drivers/staging/rts5208/rtsx.c | 2 +-
> > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > 
> > 
> > Hi Philipp,
> > 
> > this driver (rts5208) will be removed soon - patch is send in.
> > 
> > Discussion about removal:
> > https://lore.kernel.org/linux-staging/2024100943-shank-washed-a765@gregkh/T/#t
> 
> 
> Alright, thx for the heads up.
> 
> I'm not entirely how best to deal with that, though. I could drop this
> patch, but then the driver would end up with an unmanaged pci_intx().
> 
> Might this be a problem for users if my series lands sooner than the
> removal, say in v6.13 and your removal in v6.14?

The removal will happen in 6.13, I'm going to be queueing it up right
now.

thanks,

greg k-h


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 09:11:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 09:11:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815858.1230088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sypD2-0002QR-4w; Thu, 10 Oct 2024 09:11:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815858.1230088; Thu, 10 Oct 2024 09: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 1sypD2-0002QK-1U; Thu, 10 Oct 2024 09:11:48 +0000
Received: by outflank-mailman (input) for mailman id 815858;
 Thu, 10 Oct 2024 09:11: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=qC6z=RG=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sypD1-0002QE-9P
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 09:11:47 +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 abb6af13-86e7-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 11:11:45 +0200 (CEST)
Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com
 [209.85.167.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-479-LzH53bzWPoOSYHlHFYpBcg-1; Thu, 10 Oct 2024 05:11:40 -0400
Received: by mail-lf1-f72.google.com with SMTP id
 2adb3069b0e04-53991bb134bso444049e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 02:11:40 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b79fdc2sm949476f8f.88.2024.10.10.02.11.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 02:11:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: abb6af13-86e7-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728551504;
	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=+ex92FX/6NsvBWmXun+uf0gF3wK3BeTi9EqHuTvNsZQ=;
	b=aI3DpDX06ByTUbEOGcSHGw0XgaA8VQ0q+/pk5Hl5RiyESo3Wq3irRC0zA7kSF5fG5vse3t
	QOUQ0qZ9Dsxu8HH3jBd9zvBP3gLtEM9FJPvE41mAf9qq3kye3XzGVwjUvbpXDZIOJJMiH4
	l5Q29pQDuFVRXh+qs5/FB7F3RJAKXRc=
X-MC-Unique: LzH53bzWPoOSYHlHFYpBcg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728551499; x=1729156299;
        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=+ex92FX/6NsvBWmXun+uf0gF3wK3BeTi9EqHuTvNsZQ=;
        b=HgvHO2PHmGfrYjGZEF5RgMJ2kLcnkOtZ4Zzx3fT4XNRToqcVDwWg34nH5UU4rX9z5q
         po3Ru0VVgomDVZTV3avPcN5nBEY2gAaE/8cBvvfgnN4Emb4i9DMT+JOm8aV3dkWOj1qp
         T7+phuNJTxqMKDUR64jezDNtDhNZv7HQ51/QUPUR9R1PeBe2gYmVh6n0NqGE2KHTELLV
         0SorYyWKoCG/VEHGbfzV3dYGf/rLhDjzLEYf+BpLZ2nHxXxWFWdQwmSA5whM0DmKPXFi
         9+NTPenMqvJmR8SS1OeA0VzMXzELkBl6E293QaTYXzbQR3sEUMqfqKLwD5ek/u8P69ql
         XVSg==
X-Forwarded-Encrypted: i=1; AJvYcCV8BMHjO5Nm/Umikvgjh3UK0HesmTX61EZ7y3Iu1HTY3s09Cw7OsMXaNOmUKiTdXMr3JoWmaSsVkNg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxOjADm25CgXS+jL527dr1Se5jB/SlpZ5gzi3fOUsXdLSbJBlHj
	128BamMNaWO/lio00m6sR8naZQf6Yzztw5OyHS/nA2iRGYCi8Hz7hpYzAvwVpGSYwmv3rmxatV3
	/cniBH1UD3IzXaDP2aj6fbsUnqyiYIAkbciM6dIl6MTa7LjK8urtgOIUkGd1kW2Oj
X-Received: by 2002:a05:6512:10d1:b0:536:55ae:7444 with SMTP id 2adb3069b0e04-539c4896eb7mr3177293e87.22.1728551499304;
        Thu, 10 Oct 2024 02:11:39 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IExq3OJhlyNTGpjtR1+LjaW3R0iv5Mu7sB9drW/xRJaoCLaoe8gSPgF49M2/ruF8wr/J6TLJA==
X-Received: by 2002:a05:6512:10d1:b0:536:55ae:7444 with SMTP id 2adb3069b0e04-539c4896eb7mr3177227e87.22.1728551498734;
        Thu, 10 Oct 2024 02:11:38 -0700 (PDT)
Message-ID: <f42bb5de4c9aca307a3431dd15ace4c9cade1cb9.camel@redhat.com>
Subject: Re: [RFC PATCH 13/13] Remove devres from pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Thu, 10 Oct 2024 11:11:36 +0200
In-Reply-To: <7f624c83-115b-4045-b068-0813a18c8200@stanley.mountain>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-14-pstanner@redhat.com>
	 <7f624c83-115b-4045-b068-0813a18c8200@stanley.mountain>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-10 at 11:50 +0300, Dan Carpenter wrote:
> On Wed, Oct 09, 2024 at 10:35:19AM +0200, Philipp Stanner wrote:
> > pci_intx() is a hybrid function which can sometimes be managed
> > through
> > devres. This hybrid nature is undesirable.
> >=20
> > Since all users of pci_intx() have by now been ported either to
> > always-managed pcim_intx() or never-managed pci_intx_unmanaged(),
> > the
> > devres functionality can be removed from pci_intx().
> >=20
> > Consequently, pci_intx_unmanaged() is now redundant, because
> > pci_intx()
> > itself is now unmanaged.
> >=20
> > Remove the devres functionality from pci_intx(). Remove
> > pci_intx_unmanaged().
> > Have all users of pci_intx_unmanaged() call pci_intx().
> >=20
> > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
>=20
> I don't like when we change a function like this but it still
> compiles fine.
> If someone is working on a driver and hasn't pushed it yet, then it's
> probably
> supposed to be using the new pcim_intx() but they won't discover that
> until they
> detect the leaks at runtime.

There wouldn't be any *leaks*, it's just that the INTx state would not
automatically be restored. BTW the official documentation in its
current state does not hint at pci_intx() doing anything automatically,
but rather actively marks it as deprecated.

But you are right that a hypothetical new driver and OOT drivers could
experience bugs through this change.

>=20
> Why not leave the pci_intx_unmanaged() name.=C2=A0 It's ugly and that wil=
l
> discorage
> people from introducing new uses.

I'd be OK with that. Then we'd have to remove pci_intx() as it has new
users anymore.

Either way should be fine and keep the behavior for existing drivers
identical.

I think Bjorn should express a preference

P.

>=20
> regards,
> dan carpenter
>=20



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 09:13:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 09:13:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815865.1230098 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sypEZ-0002wS-FK; Thu, 10 Oct 2024 09:13:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815865.1230098; Thu, 10 Oct 2024 09:13: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 1sypEZ-0002wL-CE; Thu, 10 Oct 2024 09:13:23 +0000
Received: by outflank-mailman (input) for mailman id 815865;
 Thu, 10 Oct 2024 09:13: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=qC6z=RG=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1sypEY-0002wD-By
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 09:13:22 +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 e369c461-86e7-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 11:13:19 +0200 (CEST)
Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com
 [209.85.210.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-155-TVHrna2eOv6xlJRj7COCYg-1; Thu, 10 Oct 2024 05:13:17 -0400
Received: by mail-pf1-f197.google.com with SMTP id
 d2e1a72fcca58-71e019ab268so978729b3a.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 02:13:17 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-71e2ab0a617sm642626b3a.192.2024.10.10.02.12.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 02:13:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e369c461-86e7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728551598;
	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=v4XN18e+CyZcuqWrnUyls/e8CpJTrCIwM8PKMvwb8/g=;
	b=c+sBxVBclE/ad3VRFgfdnV6lw9VVrxCPgaSVROvHtI5oDNs1IsiGnWxxxpg4IAAWz4oxiN
	ga94eI0u5olM9rsRPsSYWkGlkHBbFU4gkg6kC4ZoGa8kZ5jhT/nMnpknEtKUz+EkcUIn5J
	qUMOUv4vYjmUUmUk8abV0pxi1PFfkIM=
X-MC-Unique: TVHrna2eOv6xlJRj7COCYg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728551595; x=1729156395;
        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=v4XN18e+CyZcuqWrnUyls/e8CpJTrCIwM8PKMvwb8/g=;
        b=gF3IWMMLsq/7uhDlvSHgphZswKABeke2bKJ/5RrTv5T2tZlC+ExNOqXkaigMcuqayp
         DbJAmFRcL3lJjasos0xOEnf6LfuUP3XuTyhUFSK2QGjWuv4dcibs/y2EqLzC9Jp6G1zi
         sKpuRkssJ94c8Hn6rGHZbPsfT2oPP584SQlwIgx73wEHOLroOZLTP6z5ospjAFrRtXTm
         xarnuOOZN7nuXTFcb6cvfdcp84mNa9+NOy3OMlIL4/r1ARLkuubkxaCfNrm6IORhFJSN
         vir2u5L52SKuQeIU979yYBcgV2XXwgIskQ1aEjLu0hiOuKWtIuNkOaIvmbxmvS4BhLQk
         6raA==
X-Forwarded-Encrypted: i=1; AJvYcCVqh5PCwuXup1Ymau/exHuHPTmGFacW9F/Wpv9ZlkeEqF4gZCeF8AmMld/wejOnqw8T28k9KP1Apmk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz6+kKsJGqW4gz41K302VE3ZiENyXspQQ1RAYSy0lDTFDXDbzZf
	6MSdjcbultuCgFm1As7XYxv0JG8Gpn3WDThrl8G8iN/cyxyQe0AF5X6lAte7lGxjfAKsQQO7C93
	QaLKJ8j7fPWvIR+B95J/7lU8v3+ZgO9geVFJF0cevoaPi+9IQ3V2mt6U6tSBFfhlu
X-Received: by 2002:a05:6a00:3e12:b0:71e:cc7:c511 with SMTP id d2e1a72fcca58-71e1dbc7610mr9332062b3a.23.1728551594982;
        Thu, 10 Oct 2024 02:13:14 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGep+sT+xfvdEWHCwKXB/cVXFvEo8d4o8Uec70ymXyXBB7IFwxFmp57q9aFEQPPEpGRMx5+Ug==
X-Received: by 2002:a05:6a00:3e12:b0:71e:cc7:c511 with SMTP id d2e1a72fcca58-71e1dbc7610mr9331963b3a.23.1728551594451;
        Thu, 10 Oct 2024 02:13:14 -0700 (PDT)
Message-ID: <306f4f0c8c966647170cf7fdab11285dba976ea1.camel@redhat.com>
Subject: Re: [RFC PATCH 10/13] staging: rts5280: Use always-managed version
 of pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Philipp Hortmann <philipp.g.hortmann@gmail.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, Sergey Shtylyov
 <s.shtylyov@omp.ru>, Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri
 Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>, Arnd
 Bergmann <arnd@arndb.de>, Alex Dubov <oakad@yahoo.com>, Sudarsana Kalluru
 <skalluru@marvell.com>, Manish Chopra <manishc@marvell.com>, "David S.
 Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub
 Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Rasesh Mody
 <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko
 <imitsyanko@quantenna.com>, Sergey Matyukevich <geomatsi@gmail.com>, Kalle
 Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar
 S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Thu, 10 Oct 2024 11:12:33 +0200
In-Reply-To: <2024101006-chump-image-e65c@gregkh>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-11-pstanner@redhat.com>
	 <2024100936-brunette-flannels-0d82@gregkh>
	 <411f3c94-58b5-471e-bc58-e23d89d2078f@gmail.com>
	 <b57dbf0c83125d58e4e2b488b5b5f71410fd8d6a.camel@redhat.com>
	 <2024101006-chump-image-e65c@gregkh>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-10 at 11:03 +0200, Greg Kroah-Hartman wrote:
> On Thu, Oct 10, 2024 at 10:03:30AM +0200, Philipp Stanner wrote:
> > On Wed, 2024-10-09 at 21:41 +0200, Philipp Hortmann wrote:
> > > On 10/9/24 11:38, Greg Kroah-Hartman wrote:
> > > > On Wed, Oct 09, 2024 at 10:35:16AM +0200, Philipp Stanner
> > > > wrote:
> > > > > pci_intx() is a hybrid function which can sometimes be
> > > > > managed
> > > > > through
> > > > > devres. To remove this hybrid nature from pci_intx(), it is
> > > > > necessary to
> > > > > port users to either an always-managed or a never-managed
> > > > > version.
> > > > >=20
> > > > > rts5208 enables its PCI-Device with pcim_enable_device().
> > > > > Thus,
> > > > > it needs the
> > > > > always-managed version.
> > > > >=20
> > > > > Replace pci_intx() with pcim_intx().
> > > > >=20
> > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > > ---
> > > > > =C2=A0 drivers/staging/rts5208/rtsx.c | 2 +-
> > > > > =C2=A0 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >=20
> > > > Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > > >=20
> > >=20
> > > Hi Philipp,
> > >=20
> > > this driver (rts5208) will be removed soon - patch is send in.
> > >=20
> > > Discussion about removal:
> > > https://lore.kernel.org/linux-staging/2024100943-shank-washed-a765@gr=
egkh/T/#t
> >=20
> >=20
> > Alright, thx for the heads up.
> >=20
> > I'm not entirely how best to deal with that, though. I could drop
> > this
> > patch, but then the driver would end up with an unmanaged
> > pci_intx().
> >=20
> > Might this be a problem for users if my series lands sooner than
> > the
> > removal, say in v6.13 and your removal in v6.14?
>=20
> The removal will happen in 6.13, I'm going to be queueing it up right
> now.

Alright, thx. Then I drop patch #10.

P.

>=20
> thanks,
>=20
> greg k-h
>=20



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 09:18:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 09:18:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815871.1230107 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sypJZ-0006Oh-1M; Thu, 10 Oct 2024 09:18:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815871.1230107; Thu, 10 Oct 2024 09:18: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 1sypJY-0006Oa-UL; Thu, 10 Oct 2024 09:18:32 +0000
Received: by outflank-mailman (input) for mailman id 815871;
 Thu, 10 Oct 2024 09:18: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sypJX-0006OU-Ey
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 09:18:31 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on20601.outbound.protection.outlook.com
 [2a01:111:f403:240a::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9c29b5b5-86e8-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 11:18:28 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by CH3PR12MB8075.namprd12.prod.outlook.com (2603:10b6:610:122::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 09:18:22 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%5]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024
 09:18: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: 9c29b5b5-86e8-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ecxx5V3TJk1ZzKKDENYTO5MsLb2Qj5TajdkX4vFmrPuVNb4a9QpwjN33mgZEeHWIikQamdMzdDwc7toI11FRzEnHDFQt9uJmj7HS8nySMtaWcp1SL4/686A0ibrZoWCCK5LNisS+LufQ4EyH8qlTqLwf+OWXjZqAcxNqQPWFv4NOvn9J5EcrOBAiif7jtNzZLOu+OtqCDKmdNLKIia/Kxo+UcVy38qYhtRs3KMLmM2ahe/cXLHgF40IYosQqLpzQ/FW49mmYw9vMhuEMiCfz6TLySPOBSEDIsRhnp0kpIWRctrhB/u7aJZFW8oPfzud/VBSN2P76qR8Qme/UbTuBkQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=GuH8VFJFn8r2mU2sN2j7WmjWUiRGxfWYFvAXdEh28L0=;
 b=eiJj2MXrffe5uI04RhOIM3X17Mv1bp68c/bAsNgnX1HS6DOic4kfBiUQFt01/B0MTZk/mHwserNejdngn2UtiP1huJR1EtXzD6L9OyJOuI2Ef2/9VwbVKcsOvchqBLwf7Q8zKYsqt8IwK1wFrGKv+7mQPU9y9HHoHmUOdkypPZd+TjhNcSYWrsNbD9rhpkW0nrQ8y5xqt/EXJs3HhI+kGvlTCElrA9nxdzS6sVwxY7mnhAFu9g52Wk9x8C3mkW1UK547/xiRDlYS9evVpXwowgkYpLI/ZAGeCv4xxzLiolkgj3xnlg06HFFaiFCTV9TL6fNbloG6TY76V6+npG1jdw==
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=GuH8VFJFn8r2mU2sN2j7WmjWUiRGxfWYFvAXdEh28L0=;
 b=X13idUoY9wQ0EHG00ZX066Z+z4N8hxwAFuG+fMjoPLGVqkDBp9knmJz1EOZM3qUpyukhcdnPPtYYhREOsYlO4fNxI54rbjfn6bwWY/2JTbV1bfKyoPT7lcYybVHIMWkDTjbw/qIzUliSVdSwK5nsHBCeFXh7OqKP2xlLtrrGG4o=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <08fba71e-44ec-4905-b533-46697a43a59b@amd.com>
Date: Thu, 10 Oct 2024 10:18:16 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <olekstysh@gmail.com>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Artem Mygaiev <artem_mygaiev@epam.com>,
 Hisao Munakata <hisao.munakata.vt@renesas.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
 <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
 <451c092a-af4b-40f4-a902-28f6f502d39a@amd.com>
 <7601808F-C5A6-4F20-A61A-A389252C7C5F@arm.com>
Content-Language: en-GB
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <7601808F-C5A6-4F20-A61A-A389252C7C5F@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0655.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:316::9) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|CH3PR12MB8075:EE_
X-MS-Office365-Filtering-Correlation-Id: 73c498ee-e6e3-4a07-b73e-08dce90c7c7d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RXp4aTlmNnd2WnpqcHJETTFEaGtmcTBNY2lNa3JDU1BrT3pQc1dkS0JzbXg0?=
 =?utf-8?B?ZlBwemxLMW8vTlV1eW83RUMwN0RCOG4yOW45OTVRdnN5Z2FROEtra0NibFp0?=
 =?utf-8?B?Z1RTK1pCWWR4Umd4Qk5RbDdLTFhIV1V0Rms3akl2OHpMN2ZqbHRJdU1KcFFU?=
 =?utf-8?B?aDhXa2YrVUYvSTNoWEdIY1NpSkhJL1plTHRMUUF3c0tXeVBmR2xNZUNMWTBP?=
 =?utf-8?B?bHpVME5JTzB3Wm5Oeiszc1ZmS3A3bitoY0FNdHZWdnkwSkZGZU1NQ0RLQVRQ?=
 =?utf-8?B?aFVxbmJXanNFTmJ4ZkFXcUxPWUt2RER6YzIveGh4cTlvS3JXZmZnK3ZoQ2dw?=
 =?utf-8?B?N1h2UHNaSFlJeGhuNXNmaFo1SlRKYTFTVURxWHJ2dG13ekpHWVFDYVUvQ3Uw?=
 =?utf-8?B?SlBXUFREN1BGSUtXQlc0dUUxVW9TZ2t1VG90NDF4L2JxS1ZhQ0dIay9mWWpG?=
 =?utf-8?B?Q2xoOFp2OUhwL2FaZjg3Ni9DMk9UT2NUcmcxd2JZMWxkN1Mrakl2V1FMb1hY?=
 =?utf-8?B?QW5oMGlBZCtJc1diN2g1c3Q5T1NCeWFiZGFtMWhzV2dGblpuVlN0SVUxOWJI?=
 =?utf-8?B?ZnRxb05hT0MxdjUyb0tvNCsyVkdDQ3pOby9JSUROWU8vZnVROWVJRTIrQlV3?=
 =?utf-8?B?S0F5OE1iRnJkcHNCbVFUUllhVlh6ZkpkYitxWDBYMTA2cU1hNzZnQ3BNZEEy?=
 =?utf-8?B?a1FMMnlJM1JqbHBYVEFUbmZaRHFKam1naGhuSWtOVU5GNW5hdUZMaE9kcUhN?=
 =?utf-8?B?VEFoQWE0SDZLNkpTcGxpQmVwck1tVmhWSGI3WEdkL2FWR3lPREZLdFh1OWgy?=
 =?utf-8?B?LzFMd1R2M1dZSXYxQkx4N3RMZjh6M3FjY01iSTFMTDRqUHJobVFMcU9PTjM0?=
 =?utf-8?B?ckxNWmo5Y2xhYm50Qlk3NnlIWkFyTmxDL0xiQlFMZmhFTXlJSVhaMmx5OCtO?=
 =?utf-8?B?SkxzaGtMRnRHYlY3a2JybG55S1d2c1ZOb2I5RzNTL1NucGhSNFNKVFpkZmJK?=
 =?utf-8?B?WU1LNWFQUWxFSU90a0JrVGpPOE9YdklFa281QUdNeTNwa3RPcDExTkp6S2l0?=
 =?utf-8?B?Wk1QZEt5Sk5EZGdyd3BQQWlSMHZSSlJkQmFycEZZQzJuN0pKZDk1SWxqRFBs?=
 =?utf-8?B?OXBvNmZORUQ5Y2tBdEFDZFU4ZHNxbnZKdWFhTXI3WSs5M3FJRjM5ZmJqWjJC?=
 =?utf-8?B?YVdRMXVxeVVTME84bDZuYjJJNTZGeVp0ZEtVZGl3R0tnMjdQd3BjOHVod1BP?=
 =?utf-8?B?L3FuN2FtWmI5SWd4MXlCcmlxcXB3cW1RQXlWbk1DazRsL20vY3B3aHIyNGVR?=
 =?utf-8?B?MDgrQUhxd2d4SFkwcGNPenFyMGlzcDF6cmN3cnU2aDdsSEM2Nmo0L3Avbmhk?=
 =?utf-8?B?S2RQU0JkbEFpYTRXWmtpdjd5TDJWcnNldEdsUE4wajZoS1M3VjhieHBldHlM?=
 =?utf-8?B?blowS1hoeDBVWXVYOVJXT1VROG1WazU2VW1IV2c2UHFNbTU4L25mdC9vU2c2?=
 =?utf-8?B?c0h1M1AzT0NrRFZtek5ScktiS0FPb3VGTzJsY2FtUHIxZ295Tzl4d2ErTk1B?=
 =?utf-8?B?MTNpYmJWWmYrZm0rREpzZHVoalR2Y1FjQ3VzaGtoTmM5UmQ0QzY1Tk1jQ1Ns?=
 =?utf-8?B?aTJ2WXEwb050YkYwYmUzK0kxdGRQaUxPSnU5NkZvRmtpUmJtbEtlVG05S1pj?=
 =?utf-8?B?OG5VMEdlSEVBZmxqV3VvYWYvZFZiSzF3YU50UGRsZUpwRFhiK2syWE9RPT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?K2JBWEtRSW00KytqeWFGVlVVeHVmOXp5QTVNK2xKZ1VIRE9nR0Q5T1lXT251?=
 =?utf-8?B?L1JWU3c2ajNaMDBJSjBYZEYrUmQ1dzVBOG82UUhnZEl5RlFHc0dWUDVYT3FM?=
 =?utf-8?B?V3RVb3hLMDRqNFU3UUlPcERsbWlNM3h3NGYyRDU3LzBDMXR5dXdOYzFkOTUv?=
 =?utf-8?B?a1NaU0xtRmRzWkJrajNqT0JiWmhxVVhicC95WDdoaUJDbGVnN2xyOGR6RGNY?=
 =?utf-8?B?WkV6RXdLODEzdFlwNlBobUQrbUZvNHR2MzdPWmRRbjJxSnRkWDdJanczRVR0?=
 =?utf-8?B?OUtvVXFyZEViV1MyWktiQ0ZTT3dHbVU4YkpUTlF0cHN6QkNoM3F5ZjFwV1VS?=
 =?utf-8?B?T1BENkN1VXJaSGUyaTBiTXk4QlB3VWgyL3BwblZOWXpFeFM4bmFURTllNVBT?=
 =?utf-8?B?cEFFS2FVa1FmZWNHL01aRmJrUklJVEs0Y3pNRjVZa3BpNmM1UU1qa2dQUjJl?=
 =?utf-8?B?Mlp2TzRtb3lmRXdwK3BvK2xYeE5EZS90bHpRZUhvQU1mcVJCRWRCZEgrRm5l?=
 =?utf-8?B?ZTN1NEJRdE4rdkRGWVdXV1JNSnBWS3JNY0VWQ0J4Q0hNcXJzNkN0OHovWGh0?=
 =?utf-8?B?Tnpma2xjV05YUHNranVVT3RFYmE4NEc5ZWE4M1ZMeDQ5UDNQK0NKWG9Rbms0?=
 =?utf-8?B?ZDVHNWljM2JHaDk5Y3dPUUpmUXZPb3dPR3NMS0lIV1JlZ2hKTmtoelJKZGVH?=
 =?utf-8?B?TnVPOUFDZFRpb2JUVkphVHYyQi9JbnRaU0hZZjcyS1A0V1Bxb0Z4djdJN2ta?=
 =?utf-8?B?VXJaQlpvb05mM0RLaDBNVmFsdmpBOW5TSExnSkx3d1YwL2t3WXJNby92ZG1Y?=
 =?utf-8?B?YmNhdmh1RXFxVHFNMzJYT1JhZlRJa2dPMm91OVlYTVU0ZWl3NXEyaHgrcElQ?=
 =?utf-8?B?ZGRvSFZWUmhidTZUQVNocnEwTkRvaUMza0VxcWJ4YW9TQitIcFoydUs3UXFO?=
 =?utf-8?B?VTZwV2IrSmhCR0tLQ0l5WFhRVXZmdHpQZWt1eTV6aU9wWi9RK3F0dTNGeDdr?=
 =?utf-8?B?ZHQwaDNzcTduY0pKeklBbHVDVjBlb2tBMzAxck5SOXVZVTJqeEZaOHZwTUpS?=
 =?utf-8?B?T2hEN2FCaUdhbE1WVzRIM3JyMExuc1NIdEcxVUhqbUxYNHh5aGxjMDFLNTB4?=
 =?utf-8?B?eW8zVFMxYXFjNmJERktLSWRqQzBoeDE3V0FJK1hiTFdnSmpXOFBDM2tRZUNQ?=
 =?utf-8?B?SUUzajBrdWdWOWF1cGpjdlQvcWxDUUF3MmJSY2kzNGozRkFoZzk3blNsWUV2?=
 =?utf-8?B?Z3VYU0srVDNpZTY3d1o3SzNBaEUvd0lWSHEyL243TVI3YVBESmpUbW9YRjA4?=
 =?utf-8?B?ekFhQXhYRXJacy9RUGo2RENvZURXb1FiOHVDb2JNUmpuak5jUWxvZzBMNHA0?=
 =?utf-8?B?dWY3NnJRMDNXbjRkbDBRbmJoSmQ1NDNLUnN1SURHNzlwc1M0d0VEdloyV0xr?=
 =?utf-8?B?emF2c05iZ0o2R0NiMXAyZkUwbXNjQ2RSTjV6Yi9rY2pWaG5XbVBBOE1iSEph?=
 =?utf-8?B?OG9ya0lUTDJHSVVtZzdBdXlIZWhCT0tKQlYxQ1d3c0NNY0NvbXREbWpEemRH?=
 =?utf-8?B?NHZ3YkRYaENCaDVkeWg5bHNXTDFVcXZ1Uy9mMVhtUEZNNVhHcGk2NU5CMmtv?=
 =?utf-8?B?V0dvUVNlZWRXdkhGaHF0MlVoR29wL0dKQXRBanFOSzA1VEt2cmFVNUd2RWty?=
 =?utf-8?B?a1hkZEhUYkxwN0F5WnEzdmg5WEhTVHRPditjS3hya3hDbllib1F4QnVxYmw3?=
 =?utf-8?B?VmFWY0JjWjEvK05rL3hXYmtHWDFFV1Y4dWhIcjdJcnQyTGFsNzFiS3d3TTd4?=
 =?utf-8?B?bEpXQnhsWFVIdGRBZ3VxeGtpWDIrNHl1cmpaemNjRWNVWitrZE5FK3FDMkZv?=
 =?utf-8?B?QWtOVFYvemtvc2JZS2wyYVVQR3V1ZlF4WmVwTmVtUlNhM0ZxVkR3bGZKV1hz?=
 =?utf-8?B?MmQwRUVhbE9jTlZsVGJFckgxbVNMSStnRUhGWmQ4azk5MHF3MjZYdzM4Ukkz?=
 =?utf-8?B?a2o1b0ZLLzFTYUZVWWJpcHFTcGtReFpHaThldzFoRUVBS1dXYW5TdTBMRFkx?=
 =?utf-8?B?QnpMVGRRQjlJR3phM1ZicE1udGxtWXV4OWVhWHNCN1FWMWJFS2ZIbjFKTFJL?=
 =?utf-8?Q?rr4FGdoELKUAMrzftm8ruNNTt?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 73c498ee-e6e3-4a07-b73e-08dce90c7c7d
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 09:18:21.8352
 (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: lG8MwvKBEh0U99+E2xdEMPHf6EC6SHp+wwJCKBYuMHcMcgJ4r1Sno62CSDeVJk7Q9xYiUDTSD1QgLYf3got5Jg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8075

Hi Bertrand,

< snip>

>> 4) AoU on domain - 1) Domains should not use HVC DCC registers as Xen does not emulate them.
> Xen does not depend on that, the domain does so this is only a Xen expected behaviour and we should document that Domains shall not use it.

Agreed, we need to document somewhere that Domains shall not use 
registers like HVC_DCC, etc which are not properly emulated by Xen.

Yes, it should not be a part of AoU as Xen's behaviour is not dependent 
on it.

>
> Xen behaviour if used should be specified.
Agreed, there should be a document stating the behavior of Xen if non 
emulated registers are accessed by domains (as an example).
>
>> The AoUs can either be tested or need to be stated explicitly in the safety manual.
>>
>>> - "integrator" (word always problematic in Fusa as usually use to bail out
>>> and give responsibility to someone else) shall and shall not do (for example
>>> giving access to IOMMU registers to a domain)
>> The responsibility with the integrator lies for things which cannot be tested. For eg Xen has to be built with a particular configuration (eg SMMUv3) or a specific CPU errata. Integrator should provide at the most X amount of memory for each domain. SMMU (or any specific device) should not be assigned to a domain (which should be under Xen's control).
> Ack

>
>> For some of the AoUs which cannot be tested (eg Bootloader/Firmare needs to initialize the DDR, CNTFRQ_EL0 needs to contain the correct system counter frequency), the responsibility will lie with the integrator.
> This is an AoU on the firmware or the platform not on the integrator.

I agree that this is an AoU on firmware or platform. But we can agree 
that this AoU cannot be tested by us (within the scope of Xen's safety 
certification) as we do not know on which hardware platform Xen is 
deployed. The system integrator (or hardware manufacturer) should know 
the correct value of system counter frequency. Thus, they should be able 
to test this.

Our intention is to keep the scope of Xen's safety certification 
decoupled from a specific hardware platform. Is this making sense ?

>
>>> - interface and what we expect a domain will do with it
>> This should be covered as part of AoU on domain. We can have more examples of this in near future.
> In my mind interface are for example hypercall numbers and behaviours.
> I would not expect to find this kind of stuff as AoU.

Yes, we will be having requirements for the hypercalls. Do you mean this ?

- Ayan



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 09:45:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 09:45:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815894.1230124 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sypjo-0003vW-FR; Thu, 10 Oct 2024 09:45:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815894.1230124; Thu, 10 Oct 2024 09:45: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 1sypjo-0003vC-9c; Thu, 10 Oct 2024 09:45:40 +0000
Received: by outflank-mailman (input) for mailman id 815894;
 Thu, 10 Oct 2024 09:45: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sypjm-0003ri-3K
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 09:45: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 66f1eef3-86ec-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 11:45:37 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9968114422so104121466b.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 02:45:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dcf0dsm64513266b.175.2024.10.10.02.45.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 02:45:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 66f1eef3-86ec-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728553536; x=1729158336; 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=Mfnt+tah//kuTb3yKzY3k7uoRLjpA5A8TSsiJRJV2Sc=;
        b=RT4XerQIJAVMkjs7HAG4/WyimijOpH2ctxLEbvt3WZ+vZTidXgZS57HNVkhaKZodQs
         Y2oYgpxQCAyDK+qFvNhzEeoA46P6EMSvHbAdi2kbquCg4GpDWjdwDlTNjaGZhmAKPoEv
         29kQjjt6VX9opR4IZNReoMF6lvCmzoeXtr5RU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728553536; x=1729158336;
        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=Mfnt+tah//kuTb3yKzY3k7uoRLjpA5A8TSsiJRJV2Sc=;
        b=LwL3QscuAUOeVy8L7XK17VU9HE9a6ClAwbjXPQsYxRiB+MSK/r4vocfcUPZckGxirq
         w8SawpaNk65pFgnaZQ8HONoI/WSED9gobirZqUFlEfwJn9cYjai7SaExJKndlKTZfPtB
         8QzRSUP09p+G+pwiKOiXs9v+snO3LD5dYblsV6zLifT5M4Ft4tkNUSks9UAmGCqUjn4U
         xe0zbnPlQw5sMhE7YrH8ZMAj/LwHhVlHV8rR+PjuidfWHKd2Epgw1AsmoE5KLlhcd3rF
         +21UTTLstIGIugfE9DUNO+Yj1h2y01+jzJtphCl/ei32Sf4LHkINuoWODgCxsCEUYN66
         NGqQ==
X-Gm-Message-State: AOJu0YxHiszVyGNerTQ33sVxYtp6s2fson9H/y0ng8RdrqdHBzRMoRjf
	j2NIXucLdM7xnWBpAwg460z8tNPT3U5tsBya0bzVUygV/mDIJtSQWQWy6ZZ9NNw3ZAW1J/7TRDE
	E
X-Google-Smtp-Source: AGHT+IGy49NxfDxb82h0D1MCQV9JIdMmL+xQMfI3Kv1RHdhLC05xp1XHIhzXvR1QzDHxEFW5dLSjUw==
X-Received: by 2002:a17:907:3d8f:b0:a99:87ea:e773 with SMTP id a640c23a62f3a-a999e69cacamr270938266b.22.1728553536132;
        Thu, 10 Oct 2024 02:45:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v9 1/2] x86/boot: Align mbi2.c stack to 16 bytes
Date: Thu, 10 Oct 2024 10:45:23 +0100
Message-Id: <20241010094524.1836495-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241010094524.1836495-1-frediano.ziglio@cloud.com>
References: <20241010094524.1836495-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Doing previous testing with an Alder Lake Intel machine the with
"x86/boot: Improve MBI2 structure check" commit test started to fail.
Removing the commit makes the tests succeed however there was not apparent
reason (looking at the code) for the failure.
So I instrumented code to output the structure and tested code with
this extracted data with and without the mentioned commit and results
were the same.
Compiled assembly code from lab was also fine beside not keeping
the 16-byte alignment for the stack.
Turning on stack alignment solve the problem on Alder Lake machine.

Fixes: eb21ce14d709 ('x86/boot: Rewrite EFI/MBI2 code partly in C')
Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v8:
- added "Fixes:" line;
- typo in commit message: Adler -> Alder;
- add ".init" to mbi2.o;
- reduce difference.
---
 xen/arch/x86/efi/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 7e2b5c07de..c6678652fc 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -9,11 +9,11 @@ $(obj)/%.o: $(src)/%.ihex FORCE
 $(obj)/boot.init.o: $(obj)/buildid.o
 
 $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=4)
-$(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary := $(cflags-stack-boundary)
+$(addprefix $(obj)/,$(EFIOBJ-y) mbi2.init.o): CFLAGS_stack_boundary := $(cflags-stack-boundary)
 
 obj-y := common-stub.o stub.o
 obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))
 obj-bin-$(XEN_BUILD_EFI) := $(filter %.init.o,$(EFIOBJ-y))
-obj-bin-y += mbi2.o
+obj-bin-y += mbi2.init.o
 extra-$(XEN_BUILD_EFI) += buildid.o relocs-dummy.o
 nocov-$(XEN_BUILD_EFI) += stub.o
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 09:45:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 09:45:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815895.1230127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sypjo-0003yT-Jv; Thu, 10 Oct 2024 09:45:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815895.1230127; Thu, 10 Oct 2024 09:45: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 1sypjo-0003xO-Ft; Thu, 10 Oct 2024 09:45:40 +0000
Received: by outflank-mailman (input) for mailman id 815895;
 Thu, 10 Oct 2024 09:45: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sypjn-0003rE-Dn
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 09:45:39 +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 6778b3db-86ec-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 11:45:37 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9944c4d5d4so106023666b.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 02:45:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dcf0dsm64513266b.175.2024.10.10.02.45.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 02:45:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6778b3db-86ec-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728553537; x=1729158337; 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=uxiY7HJDcWw9szQujq2OSXUnYmKhKkJqdPaufkFtzms=;
        b=ijQg7ejLS4JccZ1C2jD8tfppdA4GxIJhS6mjPanmV/ymU36J/9x/I1Y1tttHd67+93
         VSFxdIkM2Jl1gg9kyQkWNwotIoS/GF1K5JQKIy1wmRWb/NVcalSiKzrbh1UXmj/dUamY
         rAzv2swDlqseT5SNsVrZ3s7blf3ha3fAmrilg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728553537; x=1729158337;
        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=uxiY7HJDcWw9szQujq2OSXUnYmKhKkJqdPaufkFtzms=;
        b=O9jujpnWO4p3L+iJ+oBhdHwxkqLqF/3u0AzrCbgy6Zviqso4+aSpjrfR00PYTOM6SZ
         xAPwZHsemwZyaW5bNy6pSXSlzcbQhAkLbqCpibYECcwczco3IUpSsP0X8DF7qG2BlqEP
         N9Q7UcSQo6Wrh8xO7fYEZ9x0ajB0kTcHnUEq6A6MH461q1z8n53YkDVmkVvFEpU35EyG
         zPQTdeeDV7DzdFn/AJhV3OPbD9BgoZz1vpD9MKf4rWfsqeK4/a9v/MkjkTJsqka61uaB
         YnY+xUk+CjgQqIcXTtY7eKrvp8CpERdTgJeejVkXyFqko3b4oQIF8wGvzkWjB6e7vQAV
         BOpQ==
X-Gm-Message-State: AOJu0YxLr0EcYY8QQ8BuUZ5asXJd27cC8CO2kWscdGOjXYehNKdnewmJ
	kYBZBNBYVKhfP3WPXiln6LADxfUs9laqWpOjoEV64iF7IYV4xGuUeyYNot8q2LD7WHLyw6FDo4/
	r
X-Google-Smtp-Source: AGHT+IErFf/rLgsssczD7bQqSqOxaRQcIiytGlo5I/JIoadnlGjMAZ/eUpI49JDiuoN7o5m25YKDPg==
X-Received: by 2002:a17:907:7e97:b0:a99:408c:6a16 with SMTP id a640c23a62f3a-a998d10ba72mr474573866b.12.1728553537075;
        Thu, 10 Oct 2024 02:45:37 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v9 2/2] x86/boot: Improve MBI2 structure check
Date: Thu, 10 Oct 2024 10:45:24 +0100
Message-Id: <20241010094524.1836495-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241010094524.1836495-1-frediano.ziglio@cloud.com>
References: <20241010094524.1836495-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Tag structure should contain at least the tag header.
Entire tag structure must be contained inside MBI2 data.

Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v6:
- compare against total_size every time to avoid overflows.

Changes since v7:
- check for tag type being MULTIBOOT2_TAG_TYPE_END before checking
  tag size. This allows caller to not fill full tag (type field is
  before size field).
---
 xen/arch/x86/efi/mbi2.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/efi/mbi2.c b/xen/arch/x86/efi/mbi2.c
index 55a1777483..d2f0f0ee61 100644
--- a/xen/arch/x86/efi/mbi2.c
+++ b/xen/arch/x86/efi/mbi2.c
@@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     EFI_HANDLE ImageHandle = NULL;
     EFI_SYSTEM_TABLE *SystemTable = NULL;
     const char *cmdline = NULL;
+    const void *const mbi_raw = (const void *)mbi;
     bool have_bs = false;
 
     if ( magic != MULTIBOOT2_BOOTLOADER_MAGIC )
@@ -21,8 +22,10 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     /* Skip Multiboot2 information fixed part. */
     tag = _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN));
 
-    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
-            tag->type != MULTIBOOT2_TAG_TYPE_END;
+    for ( ; (const void *)(tag + 1) - mbi_raw <= mbi->total_size &&
+            tag->type != MULTIBOOT2_TAG_TYPE_END &&
+            tag->size >= sizeof(*tag) &&
+            (const void *)tag + tag->size - mbi_raw <= mbi->total_size;
           tag = _p(ROUNDUP((unsigned long)tag + tag->size,
                    MULTIBOOT2_TAG_ALIGN)) )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 09:45:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 09:45:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815893.1230118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sypjo-0003sJ-57; Thu, 10 Oct 2024 09:45:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815893.1230118; Thu, 10 Oct 2024 09:45: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 1sypjo-0003sC-2R; Thu, 10 Oct 2024 09:45:40 +0000
Received: by outflank-mailman (input) for mailman id 815893;
 Thu, 10 Oct 2024 09:45: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sypjl-0003rE-V9
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 09:45:37 +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 66621f4c-86ec-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 11:45:36 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a9943897c07so101598866b.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 02:45:36 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dcf0dsm64513266b.175.2024.10.10.02.45.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 02:45:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 66621f4c-86ec-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728553535; x=1729158335; 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=k3RPrePZquwV8SZBuNQYRhTuWb72JZMdmXye/XAjEYY=;
        b=DgX4bL8x5q8W6fB71mPAweoWiYCZfffyMy01QKZgD+3Cas6vMGrSisJm3zSZjwT+U1
         dTN287/xr95PmMgvMXZKGWbAgkaCCddtNGgj6AgV3oTCNDUoAfCmE35wHFPr9PM7ycSj
         R15ZXCdZ5g06eFpRkalEYXm40Fjc2SPloPFDQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728553535; x=1729158335;
        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=k3RPrePZquwV8SZBuNQYRhTuWb72JZMdmXye/XAjEYY=;
        b=aRBNx/EgqXJKIWgA5OoDZnCm0Opsz5+ViR1MJMrXV8MmCPW/9tWetoBNPKLSX0qfuw
         GfssS5hzb/rYYwjgwMMFZtDT9P58IL94F4sscmnfQGr3RlDEZ4IIGrGBWn2ka27MlATA
         hIrg3zLV7oK538u7DtocHAMTOB4PGBVBg4MAFUVhOwXxidcXriwiVNKXlkHzEKmeyDKx
         VET2fIYwt2Y9ocuEpblDuoga8XxRWVqXYVaCdpoKcSPMo4BhjjAA4uXb6twj3eeyrreu
         EB9uRvb3pOeFVVPa/sSCEBt5x3/ZHh4BrlpWP5MpKPydtIhq9fNWelblEIGbf9PBajcC
         qbKw==
X-Gm-Message-State: AOJu0YwC1osFP2hVwiB0Nld6d5XRRpfrd89NSksEfYSFDpdGTrrfWHhH
	bz8nWZyS4Lh0scF81zDaPaUvmrjlb5x94CH42dai9mtmBuJQFLbK3DHu8cWnvoqIgToxgSaEGGI
	w
X-Google-Smtp-Source: AGHT+IFRTvJ+WTdOiAwVL77n0UFJqyVWtyjJ23rbs1cRoimQg06klyV1CZQKmEWjaqofyLB1cjhZLQ==
X-Received: by 2002:a17:906:7313:b0:a99:5957:b8f0 with SMTP id a640c23a62f3a-a998d31c11emr493145066b.49.1728553535111;
        Thu, 10 Oct 2024 02:45:35 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v9 0/2] x86/boot: Improve MBI2 structure check (was: Reduce assembly code)
Date: Thu, 10 Oct 2024 10:45:22 +0100
Message-Id: <20241010094524.1836495-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series came from part of the work of removing duplications between
boot code and rewriting part of code from assembly to C.

Changes since v1, more details in specific commits:
- style updates;
- comments and descriptions improvements;
- other improvements.

Changes since v2:
- rebased on master, resolved conflicts;
- add comment on trampoline section.

Changes since v3:
- changed new function name;
- declare efi_multiboot2 in a separate header;
- distinguish entry point from using magic number;
- other minor changes (see commens in commits).

Changes since v4:
- rebase on staging;
- set %fs and %gs as other segment registers;
- style and other changes.

Changes since v5:
- fixed a typo.

Changes since v6:
- remove merged patch;
- comment and style;
- change some pointer checks to avoid overflows;
- rename parse-mbi2.c to mbi2.c.

Changes since v7:
- removed merged parts;
- add required stack alignment.

Changes since v8:
- added "Fixes:" line;
- typo in commit message: Adler -> Alder;
- add ".init" to mbi2.o;
- reduce difference in Makefile.

Frediano Ziglio (2):
  x86/boot: Align mbi2.c stack to 16 bytes
  x86/boot: Improve MBI2 structure check

 xen/arch/x86/efi/Makefile | 4 ++--
 xen/arch/x86/efi/mbi2.c   | 7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 10:24:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 10:24:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815967.1230149 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syqLV-0002Bu-F4; Thu, 10 Oct 2024 10:24:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815967.1230149; Thu, 10 Oct 2024 10: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 1syqLV-0002Bn-Ak; Thu, 10 Oct 2024 10:24:37 +0000
Received: by outflank-mailman (input) for mailman id 815967;
 Thu, 10 Oct 2024 10:24: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=C3pA=RG=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1syqLT-0002Bh-VV
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 10:24:36 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on20611.outbound.protection.outlook.com
 [2a01:111:f403:2612::611])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d7931a19-86f1-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 12:24:33 +0200 (CEST)
Received: from DU2PR04CA0198.eurprd04.prod.outlook.com (2603:10a6:10:28d::23)
 by DU0PR08MB9845.eurprd08.prod.outlook.com (2603:10a6:10:446::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 10:24:27 +0000
Received: from DU2PEPF00028D0F.eurprd03.prod.outlook.com
 (2603:10a6:10:28d:cafe::3d) by DU2PR04CA0198.outlook.office365.com
 (2603:10a6:10:28d::23) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18 via Frontend
 Transport; Thu, 10 Oct 2024 10:24:27 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU2PEPF00028D0F.mail.protection.outlook.com (10.167.242.23) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8048.13
 via Frontend Transport; Thu, 10 Oct 2024 10:24:26 +0000
Received: ("Tessian outbound bcce15e2414a:v473");
 Thu, 10 Oct 2024 10:24:25 +0000
Received: from Lc8003771c39d.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 DB4C7A22-4408-45B1-B4CE-EDDC11362C14.1; 
 Thu, 10 Oct 2024 10:24:19 +0000
Received: from EUR03-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lc8003771c39d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 10 Oct 2024 10:24:19 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by PAWPR08MB9006.eurprd08.prod.outlook.com (2603:10a6:102:33f::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Thu, 10 Oct
 2024 10:24:14 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024
 10: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
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d7931a19-86f1-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=v27Drsb0LzbcGlfA3HnFxYCC8lCvUSZvgQr9k944pSf4mNi+WvfFSpRPWT5OLAyueJDceMStMn5uSTM2QoXr4FsNQLRHecydTzPW8sAO6kl850BZlYJW8m5m09+AtYgBpmzaGQOeFH3gZz5DWPefI/gwijwOBVYMRlrLaX/0P8JhGdM5VFTq3stJnTN9gh9AYFpMeboK+sryDw4K/pcDcPnHnhBDhaSP0s6M8mHeFyWTmVJwcKCiz5opRcsMgNIo/ZU3izC+hQcc4zfenXETjtny72IZJYtCJLmtiCiap1oasK9oukLktKGsCdTkGYf5NybTh53KkYiWJtYQx63qrQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=DVw/eNOv0sgkPjFHlbL1s0U1mudFbnnfKjwnacZvXT8=;
 b=Xg+2ifWRMVQKTwf3Q3hbfpXOuVEDRL9VFAO/LQa1NvGfqzRVZFDRYsTMoAztKEbJmd3NeA4pMP8boQYlYT6rQOXfdbD/RB2g1lVhUzNA5vG4Unx01yiPgjEqpzkDjc7RA/TVxSTCwcBnhFtHhZ7b4/e9M9vhHmYMKELTqvOYhnoXWaSSbFXNbHqm8FoI9EEnhiIrZvK7IZyULTGOPxUTtyLtFoBfkPwflNZYXYx+l1CUCml5zaHMEd1uG2DM3FmoBBDdjYhbppa4Zgg3DTYGrUi8RRe4N46ExjNJGWTD23nRLeeonZAUGwJfnECevUdI/75arR83l3SAG5z5VzKW3A==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=DVw/eNOv0sgkPjFHlbL1s0U1mudFbnnfKjwnacZvXT8=;
 b=apDKPUVDmD9iL5Rjdan3I/o3WO+nRymHJtubTHpK7DBTqQRGZiImVtf69JTAJjjmAuFmwSBDM7w9xu8XSnv0q8Yl8Gl439OPAQCOxxdytblS9he4oP91Y8HfgLm3g1qNapkeeaydmGEMwP4UuSeUI0eaO1MIEYsKeADFlEOvaMg=
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=arm.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: 38dfcc2f5e4c6587
X-TessianGatewayMetadata: tdl78zA7mTElc+TK40QtNyFXcI9BX2c+TP026ODwCA1WtW3kc/QHwwF+NWUpcCO2DuQIjaFIQoMCgtNMkpA4J4p5l+Lp1znI9ujV0+GyK+Yi52Kf+rD86Tfr8/cKCoWp+tqTIZPgEpASudb9byvqezwpQJrIh5Ch5UgIvpSBStg=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jtmyjBZ1pXG91LUu0RxVJiYLNlJdwXgrleMfV484mJwGtQIFrPtSqOUYkd6JTyKpQx0pc1QFZHr9NH5kQi2YP8JJkgN6AB66Uw82mJg/hpnB7leSWniuJj4TM5iK/AJIcMtFzBI2W2ZPAlt4+uGYR094SHHIVQ5EQ0AU1tIIahREn7hfhJDye7NS+82/SPtWi/P2mq/ygVkjdjHR42MwvD46SktjimtaIzu+NLmfoFeszJtrF0LaCA1Sf4QpjCUFJtZgV8nxezjRyX3oL/bEXpNoM/8zktYumawT2QQVAye3mIE9bvzr2jdElcxGY08uBSavdljyAFEG1+UK57nUlA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=DVw/eNOv0sgkPjFHlbL1s0U1mudFbnnfKjwnacZvXT8=;
 b=X2/4rTxZRVaHIMxB5GyBRl+/mFk6ZcawXyQOJVhr8t1JiDWHWvvyONb3buKKlgm6G/Hm3bctoI1r1jVsWOsk4IaaTmOtCTi765yRff79tkTi8tzxBdycHk55++pQD8ZaGGM94IDfRd6SMQb/GvjSLe5rrQzsmoewPoBI0aMw2vU3zvxRzPd/hrciI3quTZO4ZpxxPTi8whePBq5qNzv7/MUqOXNuFKL2CaF/KFkRn18mBOmBTQj6vmaekBe0Yr5j/PfT1FRn3qiMgkIwkJeNbI0e15Vptr2tfh3Pawnaxs/KJ6FvRbHxIKuJK4AqhHgeRFTydUXf7T0HNEpYGHg6ow==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=DVw/eNOv0sgkPjFHlbL1s0U1mudFbnnfKjwnacZvXT8=;
 b=apDKPUVDmD9iL5Rjdan3I/o3WO+nRymHJtubTHpK7DBTqQRGZiImVtf69JTAJjjmAuFmwSBDM7w9xu8XSnv0q8Yl8Gl439OPAQCOxxdytblS9he4oP91Y8HfgLm3g1qNapkeeaydmGEMwP4UuSeUI0eaO1MIEYsKeADFlEOvaMg=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Ayan Kumar Halder <ayankuma@amd.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<olekstysh@gmail.com>, Xen-devel <xen-devel@lists.xenproject.org>, Oleksandr
 Tyshchenko <oleksandr_tyshchenko@epam.com>, Michal Orzel
	<michal.orzel@amd.com>, Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Artem
 Mygaiev <artem_mygaiev@epam.com>, Hisao Munakata
	<hisao.munakata.vt@renesas.com>
Subject: Re: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Topic: [PATCH] docs: fusa: Add requirements for Device Passthrough
Thread-Index:
 AQHbGOqFqldnvX8xNEmI4LnFnImSpbJ8YaSAgADTLwCAAEEygIAAgZcAgABSRgCAABPTgIABWyMAgAASXoA=
Date: Thu, 10 Oct 2024 10:24:11 +0000
Message-ID: <0400267E-5BF4-48A8-9B38-193F91C8F88D@arm.com>
References: <20241007185508.3044115-1-olekstysh@gmail.com>
 <6E89CC97-C7E3-40DF-8BFA-5F3065429F54@arm.com>
 <f8ea9ab4-190e-427a-ae77-b7c0769dffbe@gmail.com>
 <alpine.DEB.2.22.394.2410081523292.12382@ubuntu-linux-20-04-desktop>
 <85FF2EB0-474D-4807-8DB3-FC502A5B2DE8@arm.com>
 <451c092a-af4b-40f4-a902-28f6f502d39a@amd.com>
 <7601808F-C5A6-4F20-A61A-A389252C7C5F@arm.com>
 <08fba71e-44ec-4905-b533-46697a43a59b@amd.com>
In-Reply-To: <08fba71e-44ec-4905-b533-46697a43a59b@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|PAWPR08MB9006:EE_|DU2PEPF00028D0F:EE_|DU0PR08MB9845:EE_
X-MS-Office365-Filtering-Correlation-Id: 7f350a7f-0985-432b-7c6d-08dce915b776
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?idG8AUgneuHha/JbRt2yk0tDPTR3rvaOV5bFId3VLNYNfdZTrWc9NaS7/fOz?=
 =?us-ascii?Q?IQrExAyF3fTfZogjHOfOvbfTeeUdgtjHg+zE0llGdLYp4Mo+ztN1SGn2ZVhS?=
 =?us-ascii?Q?0Z39E9q5+fQS7R4fB7qdlqMb8KTMbjmdt/cpAwnr2ZJYbfa8T470jKOcM3Dc?=
 =?us-ascii?Q?1hwGiuuzIKv25XGg5lFm7reLgkQ7+Aku85G4dD2NLx8nlomLkNLQYdQwuuwM?=
 =?us-ascii?Q?SEL+YtANyzrUtoHTPdP1SgoGlSbpd5yndHEozKhNYQr6JGW+Tb8RCaQQPmaU?=
 =?us-ascii?Q?70kz2ShpZ2dvDQPnykvGyPLaV+PL9F+1jFv5Yw6nZJ9CThKEraXFa4KtRGcp?=
 =?us-ascii?Q?+rQy5By37W04ow3NrTLGXk8L4ve41m3KdkA9O3ZI2DTQFrqlnQCRLAsorEl9?=
 =?us-ascii?Q?Xv8rnyG8yeVwd6FOQlpMh7oE+lVfBYm+LNXP+r/zWdYf97f2vW6bvaRZ516n?=
 =?us-ascii?Q?x+LkY4fSPEyjjEMnXWqkoQ1dxC7gy+NNhQ/D+sf6Z3CrZZ6uTrqdHK61G3KP?=
 =?us-ascii?Q?NPQPiBX6n098TaQ1l/GGJIHywjqohTqdMK2gH24iuXA8x5xJG7f6rliKJOsP?=
 =?us-ascii?Q?lKAD6+PhUF5mKhGJ+d8x5+0FAZSyaILzly5154yRW5bjUuQ1jY+gcfv7P/kB?=
 =?us-ascii?Q?pYgqO3GvrdElUpfebhRJc1AGdr/6viilaZhqBpAnqf0MUhWaSlTK8rOQaRKK?=
 =?us-ascii?Q?o5Eck/f9GV1MHUfKeA8NTmDjmTnWg7FMUeOG2pLeKzcLAkb7xanRxwYQrrwW?=
 =?us-ascii?Q?0Psawr1zpKUVzgFEkr5k4rZ6KO88n0eJsJE3MPN3rp9chJVpg9u8NLwihqnw?=
 =?us-ascii?Q?Yk4XGdRTZpKIHMr7469Zwx7K3DS9v5ASK/REL5/7w8c1A2jsIxgPm6OSFvUd?=
 =?us-ascii?Q?X432H8gsPmtjDpsc9iTiX43IDtQ4C7c9ePuv35YKcEJxmtgX6CAk+7hfwyWD?=
 =?us-ascii?Q?YE70I17GpPx++eLYXodmqTtdN9tEn4arOgxGEQOngUzZCxP9cp3yCXYMPQpo?=
 =?us-ascii?Q?Q8EmDT81qNQ7IfFBER28WK0DpBck4o908K7rIsj6x2DA5+68iVpmzQpGc38x?=
 =?us-ascii?Q?iZjJtSM1MOjSq31qY+TQS9/ZTh14s52kx/YGRR4gt5aZNT3UBg57OUEWtyi5?=
 =?us-ascii?Q?GFXuVK80dCwVr7KS4o4jeFN00X9GbYGn0w+pRSrCxS228Smot2YruN6hB8j1?=
 =?us-ascii?Q?ztRNpSGAkai99lDY8P5VVSlWcH55amamErvhBYRas7UsjBGwKgoN6XGSQnQa?=
 =?us-ascii?Q?Zg7WLP7IPusgag3YstiMZISBFffwHCWlrqiSOPDCG/tlV50FlyJPfjJwK7aX?=
 =?us-ascii?Q?6fNOJlYHrN2NFO/ZKrLt9d59I0h3Fr+sqo6QBH1cVrVigw=3D=3D?=
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:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <A16E86F5883CCB4088FD78BCBD336E20@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9006
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D0F.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e53aeb6a-5cf2-40f8-0f7c-08dce915aef3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|35042699022|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?2A4kc1TTGPp3ATW573vr3B9MqHj2GU4h2MRz9gcL9TDCF3LOEww6Q50qGbrT?=
 =?us-ascii?Q?jVF849soYaPUrlYzxZczdqM/7Zqyk43eMI6Ij9FDvWybx6SXRkqUIBZyXhKP?=
 =?us-ascii?Q?Xh1eo/lHCGPN9jstJf1PKOBbOPS3t+AfUqUr/BjIY0HKvJySq7F1nxORS6a7?=
 =?us-ascii?Q?fX7OD51Mvul/fYg2lu+X5bkYgx5tSxnJYtx5gP1SoRTlB6f+iwmbDuRTR7k0?=
 =?us-ascii?Q?pHZ2N/MtqphAjOuqIGqhbhf2lVhuy4E+KPDhOyfkL4DG/ewzRYhy2E/UpRqp?=
 =?us-ascii?Q?onsyxE4ufYqcMN6UwZZimL0mTEtBU1/ZBQBLY5k97dkKCzSTBe/toE787l99?=
 =?us-ascii?Q?AQrpGfdMmjHAdMTyViLsANic5diQF+ZTPO/RA2D3C4eWvmk1+EXLhGqkCI4q?=
 =?us-ascii?Q?1L7atzDoOjAUZFXJn/NP67wB5xPN3OA0yEEI8+lKIb379brma02lI1HFvpjy?=
 =?us-ascii?Q?9gn+Ic4gCeS3rjK5V9BMwbSpzkhcou2m3R10Svj+ZNaEfR+z3ElZGcdb300Y?=
 =?us-ascii?Q?HfwLINsg/Km0epfvEg63EUUq1N6p/qn5Zsk9r+dkqCJVvj0LHBI1JTsoxgCB?=
 =?us-ascii?Q?dSfcZlUpjTmLxYpik9UG7yXC61mfsWHDLNfYK4Myt8GK3ZBNXuOzqsXoaqVP?=
 =?us-ascii?Q?AXwfliH0c+rGnUB8Cbg6OE/+CwteCjYmzQG0yaGSJs3jdkUnCH1/zubI/Pdo?=
 =?us-ascii?Q?cAvm7CaoF3h+wfVS6j1ZZEzlrUBN3aqjLrnFdhgNfvjWFlKu7N88//HWVE6O?=
 =?us-ascii?Q?7+JTxwklcDbXwhCnVXzsdSgHQEE7rF+TAMpsBouiBOIqplf4Jlgo12v3Yoly?=
 =?us-ascii?Q?W3vRh1oKCmBSPentbdb/pQymGixKvoTP2GOheWlBnWPz9Oy2wm6giRnHeiDA?=
 =?us-ascii?Q?rCgB2XFxOwjAWafQ24VGFthy91m2+4WqYZAd86AtiIvCrFjQ4BXDnrYijXny?=
 =?us-ascii?Q?3BL2fP2Jmf5XrHHKvE4YEbkZemXBTb1XV5TIdE3S6kOf+XbkPUhvWl2vDFhl?=
 =?us-ascii?Q?64hCkNnKDmui+Q5LEyw8wZxzHRpFg3Hcb0qB1/1QpsRv4gJSeLuCkm55N6P4?=
 =?us-ascii?Q?WW4WVO1cts2W+GVzBT9eQ0CJhDVA4r0lhuNlQCCsTR0fSAkrbkp5LfTUXSFM?=
 =?us-ascii?Q?qiH2FwOnZTazpArao/3cbJIJIEkqX5T84brWAR7bq4+mF1iB0welCyZdgun8?=
 =?us-ascii?Q?tS9BrBFFJukSiAdZTqZbtInF1FhpE5UjVcBzotBHMo6WMlfccusFd69FZp31?=
 =?us-ascii?Q?rRLg8uWFq4Y9bRKo1TDlr2R/hPVgECQtZGXLpxWrAetFTu4K4bsdzS8hY32+?=
 =?us-ascii?Q?y8YJ4Z63kF6ouweetnumLCCgfuheitNZ+l0o6jgrBBeExn62hlEHd1Jzquo1?=
 =?us-ascii?Q?NUbxtvLnWdCLfMO0w94Lm941djcc?=
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:(13230040)(376014)(36860700013)(82310400026)(35042699022)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 10:24:26.1348
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7f350a7f-0985-432b-7c6d-08dce915b776
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:
	DU2PEPF00028D0F.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9845

HI Ayan,

> On 10 Oct 2024, at 11:18, Ayan Kumar Halder <ayankuma@amd.com> wrote:
>=20
> Hi Bertrand,
>=20
> < snip>
>=20
>>> 4) AoU on domain - 1) Domains should not use HVC DCC registers as Xen d=
oes not emulate them.
>> Xen does not depend on that, the domain does so this is only a Xen expec=
ted behaviour and we should document that Domains shall not use it.
>=20
> Agreed, we need to document somewhere that Domains shall not use register=
s like HVC_DCC, etc which are not properly emulated by Xen.
>=20
> Yes, it should not be a part of AoU as Xen's behaviour is not dependent o=
n it.
>=20
>>=20
>> Xen behaviour if used should be specified.
> Agreed, there should be a document stating the behavior of Xen if non emu=
lated registers are accessed by domains (as an example).
>>=20
>>> The AoUs can either be tested or need to be stated explicitly in the sa=
fety manual.
>>>=20
>>>> - "integrator" (word always problematic in Fusa as usually use to bail=
 out
>>>> and give responsibility to someone else) shall and shall not do (for e=
xample
>>>> giving access to IOMMU registers to a domain)
>>> The responsibility with the integrator lies for things which cannot be =
tested. For eg Xen has to be built with a particular configuration (eg SMMU=
v3) or a specific CPU errata. Integrator should provide at the most X amoun=
t of memory for each domain. SMMU (or any specific device) should not be as=
signed to a domain (which should be under Xen's control).
>> Ack
>=20
>>=20
>>> For some of the AoUs which cannot be tested (eg Bootloader/Firmare need=
s to initialize the DDR, CNTFRQ_EL0 needs to contain the correct system cou=
nter frequency), the responsibility will lie with the integrator.
>> This is an AoU on the firmware or the platform not on the integrator.
>=20
> I agree that this is an AoU on firmware or platform. But we can agree tha=
t this AoU cannot be tested by us (within the scope of Xen's safety certifi=
cation) as we do not know on which hardware platform Xen is deployed. The s=
ystem integrator (or hardware manufacturer) should know the correct value o=
f system counter frequency. Thus, they should be able to test this.
>=20
> Our intention is to keep the scope of Xen's safety certification decouple=
d from a specific hardware platform. Is this making sense ?

It does as long as the expectations on the hardware are well documented.

>=20
>>=20
>>>> - interface and what we expect a domain will do with it
>>> This should be covered as part of AoU on domain. We can have more examp=
les of this in near future.
>> In my mind interface are for example hypercall numbers and behaviours.
>> I would not expect to find this kind of stuff as AoU.
>=20
> Yes, we will be having requirements for the hypercalls. Do you mean this =
?

Yes

Cheers
Bertrand

>=20
> - Ayan
>=20



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 10:37:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 10:37:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815984.1230158 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syqYM-0001To-JW; Thu, 10 Oct 2024 10:37:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815984.1230158; Thu, 10 Oct 2024 10: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 1syqYM-0001Th-Gi; Thu, 10 Oct 2024 10:37:54 +0000
Received: by outflank-mailman (input) for mailman id 815984;
 Thu, 10 Oct 2024 10:37: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syqYK-0001OG-QQ
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 10:37:52 +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 b33d38c3-86f3-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 12:37:51 +0200 (CEST)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-431137d12a5so6860235e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 03:37:51 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430ccf51753sm44330695e9.23.2024.10.10.03.37.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 03:37:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b33d38c3-86f3-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728556671; x=1729161471; darn=lists.xenproject.org;
        h=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=nbevQACE1nYmW4FL5nEQASZ4CZJcHmlbpUUmeKvAk0Y=;
        b=EuBEnGz1ld6npqMCpWnc4GO6bdUEiNUXG4TGyK6sNSaToGuXNyreEl/UvrgFKoYEWL
         85mardV4608g9ll19U8fgK/yPs1FoGzEOj3j1wA81PsWQATBPzR91XDc9MCE14zja5nG
         SYBAg5KQhbqC6Wh1gqdPD5X62ZpefeVqzMFLC3Yuc8pOSqSXhLaMLDiy5QxxLlKXteG+
         MCwzwh5+EucvBZ32TUauQMEa9xqWcbYtImUA451Pr4IifVjXc83W6RPFUWIyl9RK3EU6
         FVPEEV5XKCr9Wxcx7giJCmNuUVAMvLddf71UOQwL9xjl5Hu2YAKUG90dKjRxNz4Mv6BZ
         5Xyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728556671; x=1729161471;
        h=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=nbevQACE1nYmW4FL5nEQASZ4CZJcHmlbpUUmeKvAk0Y=;
        b=lYka7nbB29Gcm6bU5/tjsN2kwbw282U99fth+BMvrC6+KGTzjKSsQ8h9TTdyI6DxhS
         BQQtC3dTYmlPHAPeGR4JEByddK+q8i4C3ZkjzNjkv6WJ6AmvxCR9YCNOkfncQpR23EbP
         nBqiOqJ+X3PxC6whBBykTt2Qre8QAoKOAogiZ5iiilq215qB1u5RhuVmikpbQee54cNA
         n2OeXplU4gOoZIaLZaIHQogHCXsd0RS1k1cY3pUV2hfJv0XWuDa4LSvdtzKl14bxUkGU
         wwJGm2uuoI+WEK5DmONW677jdssLtWkBA4xOcbPd85coF2QeZqPRYEgg7c3x6q2OGU6a
         bpJw==
X-Gm-Message-State: AOJu0Yx5H9P4VzvKKMQd8Q5g8fP40UJa5+UT9mgw+56ngIZudKdCOUny
	Czg8zAG5D0+ODIUvAkp3vNk0A42VVZBe0rc/BDrqj9k9TGu+8LQ+CoX/7dxPCrI=
X-Google-Smtp-Source: AGHT+IE/+XWIRPg9shWWcQFz/+p9lEf/NuZONpfPeIayVQIyCiF4bbmquG84ontWw8hyoiKOiRCT9g==
X-Received: by 2002:a05:600c:1c1f:b0:42c:b74c:d8c3 with SMTP id 5b1f17b1804b1-430d7488700mr51702465e9.32.1728556670906;
        Thu, 10 Oct 2024 03:37:50 -0700 (PDT)
Message-ID: <ce672391-5c32-45ee-8f83-2a92aa454bd4@suse.com>
Date: Thu, 10 Oct 2024 12:37:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
References: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
 <e7b98fbf-ee28-4083-a4c5-7dc122252e07@suse.com>
 <BL1PR12MB58490A1ED940EFFF12A4FB38E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <BL1PR12MB58490A1ED940EFFF12A4FB38E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------0QEKRA8Qs3ovK0YyLju36Fhd"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------0QEKRA8Qs3ovK0YyLju36Fhd
Content-Type: multipart/mixed; boundary="------------LTsx08Gsgf08HuO32WuE1Z4m";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Message-ID: <ce672391-5c32-45ee-8f83-2a92aa454bd4@suse.com>
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
References: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
 <e7b98fbf-ee28-4083-a4c5-7dc122252e07@suse.com>
 <BL1PR12MB58490A1ED940EFFF12A4FB38E7782@BL1PR12MB5849.namprd12.prod.outlook.com>
In-Reply-To: <BL1PR12MB58490A1ED940EFFF12A4FB38E7782@BL1PR12MB5849.namprd12.prod.outlook.com>

--------------LTsx08Gsgf08HuO32WuE1Z4m
Content-Type: multipart/mixed; boundary="------------50skecAAKDfGZlCJ3x20CLbJ"

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

T24gMTAuMTAuMjQgMTA6NDMsIENoZW4sIEppcWlhbiB3cm90ZToNCj4gT24gMjAyNC8xMC8x
MCAxNjozOSwgSsO8cmdlbiBHcm/DnyB3cm90ZToNCj4+IE9uIDEwLjEwLjI0IDA5OjU4LCBK
aXFpYW4gQ2hlbiB3cm90ZToNCj4+PiBDb21taXQgMmZhZTZiYjdiZTMyICgieGVuL3ByaXZj
bWQ6IEFkZCBuZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20gZGV2IikNCj4+PiBhZGRzIGEg
d2VhayByZXZlcnNlIGRlcGVuZGVuY3kgdG8gdGhlIGNvbmZpZyBYRU5fUFJJVkNNRCBkZWZp
bml0aW9uLCB0aGF0DQo+Pj4gZGVwZW5kZW5jeSBjYXVzZXMgeGVuLXByaXZjbWQgY2FuJ3Qg
YmUgbG9hZGVkIG9uIGRvbVUsIGJlY2F1c2UNCj4+PiBkZXBlbmRlbnQgeGVuLXBjaWJhY2sg
aXMgYWx3YXlzIG5vdCBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9uIGRvbVUuDQo+Pj4NCj4+
PiBUbyBzb2x2ZSBhYm92ZSBwcm9ibGVtLCByZW1vdmUgdGhhdCBkZXBlbmRlbmN5LCBhbmQg
ZG8gbm90IGNhbGwNCj4+PiBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKCkgZGlyZWN0bHks
IGluc3RlYWQgYWRkIGEgaG9vayBpbg0KPj4+IGRyaXZlcnMveGVuL2FwY2kuYywgeGVuLXBj
aWJhY2sgcmVnaXN0ZXIgdGhlIHJlYWwgY2FsbCBmdW5jdGlvbiwgdGhlbiBpbg0KPj4+IHBy
aXZjbWRfaW9jdGxfcGNpZGV2X2dldF9nc2kgY2FsbCB0aGF0IGhvb2suDQo+Pj4NCj4+PiBG
aXhlczogMmZhZTZiYjdiZTMyICgieGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbCB0byBn
ZXQgZ3NpIGZyb20gZGV2IikNCj4+PiBSZXBvcnRlZC1ieTogTWFyZWsgTWFyY3p5a293c2tp
LUfDs3JlY2tpIDxtYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tPg0KPj4+IFNpZ25l
ZC1vZmYtYnk6IEppcWlhbiBDaGVuIDxKaXFpYW4uQ2hlbkBhbWQuY29tPg0KPj4+IC0tLQ0K
Pj4+IHYxLT52MiBjaGFuZ2VzOg0KPj4+IEFkZGVkIGhvb2sgeGVuX2FjcGlfZ2V0X2dzaV9m
cm9tX3NiZGYuDQo+Pj4gQ2hhbmdlZCBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmIHRvIHN0
YXRpYyBhbmQgcGNpYmFjayByZWdpc3RlciBpdCBhcyB0aGUgcmVhbCBob29rIGZ1bmN0aW9u
Lg0KPj4+IC0tLQ0KPj4+ICDCoCBkcml2ZXJzL3hlbi9LY29uZmlnwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIHzCoCAxIC0NCj4+PiAgwqAgZHJpdmVycy94ZW4vYWNwaS5jwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAxNyArKysrKysrKysrKysrKysrKw0K
Pj4+ICDCoCBkcml2ZXJzL3hlbi9wcml2Y21kLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCB8wqAgNiArKy0tLS0NCj4+PiAgwqAgZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0
dWIuYyB8wqAgNCArKy0tDQo+Pj4gIMKgIGluY2x1ZGUveGVuL2FjcGkuaMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMTIgKysrKy0tLS0tLS0tDQo+Pj4gIMKgIDUgZmls
ZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pDQo+Pj4NCj4+
PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vS2NvbmZpZyBiL2RyaXZlcnMveGVuL0tjb25m
aWcNCj4+PiBpbmRleCA3MmRkZWU0YzE1NDQuLmY3ZDZmNDc5NzFmZCAxMDA2NDQNCj4+PiAt
LS0gYS9kcml2ZXJzL3hlbi9LY29uZmlnDQo+Pj4gKysrIGIvZHJpdmVycy94ZW4vS2NvbmZp
Zw0KPj4+IEBAIC0yNjEsNyArMjYxLDYgQEAgY29uZmlnIFhFTl9TQ1NJX0JBQ0tFTkQNCj4+
PiAgwqAgY29uZmlnIFhFTl9QUklWQ01EDQo+Pj4gIMKgwqDCoMKgwqAgdHJpc3RhdGUgIlhl
biBoeXBlcmNhbGwgcGFzc3Rocm91Z2ggZHJpdmVyIg0KPj4+ICDCoMKgwqDCoMKgIGRlcGVu
ZHMgb24gWEVODQo+Pj4gLcKgwqDCoCBpbXBseSBYRU5fUENJREVWX0JBQ0tFTkQNCj4+PiAg
wqDCoMKgwqDCoCBkZWZhdWx0IG0NCj4+PiAgwqDCoMKgwqDCoCBoZWxwDQo+Pj4gIMKgwqDC
oMKgwqDCoMKgIFRoZSBoeXBlcmNhbGwgcGFzc3Rocm91Z2ggZHJpdmVyIGFsbG93cyBwcml2
aWxlZ2VkIHVzZXIgcHJvZ3JhbXMgdG8NCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4v
YWNwaS5jIGIvZHJpdmVycy94ZW4vYWNwaS5jDQo+Pj4gaW5kZXggOWUyMDk2NTI0ZmJjLi4w
YmZmMmYzYTg3ZDIgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy94ZW4vYWNwaS5jDQo+Pj4g
KysrIGIvZHJpdmVycy94ZW4vYWNwaS5jDQo+Pj4gQEAgLTEyNSwzICsxMjUsMjAgQEAgaW50
IHhlbl9hY3BpX2dldF9nc2lfaW5mbyhzdHJ1Y3QgcGNpX2RldiAqZGV2LA0KPj4+ICDCoMKg
wqDCoMKgIHJldHVybiAwOw0KPj4+ICDCoCB9DQo+Pj4gIMKgIEVYUE9SVF9TWU1CT0xfR1BM
KHhlbl9hY3BpX2dldF9nc2lfaW5mbyk7DQo+Pj4gKw0KPj4+ICtnZXRfZ3NpX2Zyb21fc2Jk
Zl90IGdldF9nc2lfZnJvbV9zYmRmID0gTlVMTDsNCj4+PiArDQo+Pj4gK3ZvaWQgeGVuX2Fj
cGlfcmVnaXN0ZXJfZ2V0X2dzaV9mdW5jKGdldF9nc2lfZnJvbV9zYmRmX3QgZnVuYykNCj4+
PiArew0KPj4+ICvCoMKgwqAgZ2V0X2dzaV9mcm9tX3NiZGYgPSBmdW5jOw0KPj4+ICt9DQo+
Pj4gK0VYUE9SVF9TWU1CT0xfR1BMKHhlbl9hY3BpX3JlZ2lzdGVyX2dldF9nc2lfZnVuYyk7
DQo+Pj4gKw0KPj4+ICtpbnQgeGVuX2FjcGlfZ2V0X2dzaV9mcm9tX3NiZGYodTMyIHNiZGYp
DQo+Pj4gK3sNCj4+PiArwqDCoMKgIGlmIChnZXRfZ3NpX2Zyb21fc2JkZikNCj4+PiArwqDC
oMKgwqDCoMKgwqAgcmV0dXJuIGdldF9nc2lfZnJvbV9zYmRmKHNiZGYpOw0KPj4+ICsNCj4+
PiArwqDCoMKgIHJldHVybiAtRUlOVkFMOw0KPj4+ICt9DQo+Pj4gK0VYUE9SVF9TWU1CT0xf
R1BMKHhlbl9hY3BpX2dldF9nc2lfZnJvbV9zYmRmKTsNCj4+PiBcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vcHJpdmNtZC5jIGIv
ZHJpdmVycy94ZW4vcHJpdmNtZC5jDQo+Pj4gaW5kZXggMzI3M2NiOGMyYTY2Li40Zjc1YmM4
NzY0NTQgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy94ZW4vcHJpdmNtZC5jDQo+Pj4gKysr
IGIvZHJpdmVycy94ZW4vcHJpdmNtZC5jDQo+Pj4gQEAgLTg1MCwxNSArODUwLDEzIEBAIHN0
YXRpYyBsb25nIHByaXZjbWRfaW9jdGxfbW1hcF9yZXNvdXJjZShzdHJ1Y3QgZmlsZSAqZmls
ZSwNCj4+PiAgwqAgc3RhdGljIGxvbmcgcHJpdmNtZF9pb2N0bF9wY2lkZXZfZ2V0X2dzaShz
dHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIgKnVkYXRhKQ0KPj4+ICDCoCB7DQo+Pj4g
IMKgICNpZiBkZWZpbmVkKENPTkZJR19YRU5fQUNQSSkNCj4+PiAtwqDCoMKgIGludCByYyA9
IC1FSU5WQUw7DQo+Pj4gK8KgwqDCoCBpbnQgcmM7DQo+Pj4gIMKgwqDCoMKgwqAgc3RydWN0
IHByaXZjbWRfcGNpZGV2X2dldF9nc2kga2RhdGE7DQo+Pj4gIMKgIMKgwqDCoMKgwqAgaWYg
KGNvcHlfZnJvbV91c2VyKCZrZGF0YSwgdWRhdGEsIHNpemVvZihrZGF0YSkpKQ0KPj4+ICDC
oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FRkFVTFQ7DQo+Pj4gIMKgIC3CoMKgwqAgaWYg
KElTX1JFQUNIQUJMRShDT05GSUdfWEVOX1BDSURFVl9CQUNLRU5EKSkNCj4+PiAtwqDCoMKg
wqDCoMKgwqAgcmMgPSBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKGtkYXRhLnNiZGYpOw0K
Pj4+IC0NCj4+PiArwqDCoMKgIHJjID0geGVuX2FjcGlfZ2V0X2dzaV9mcm9tX3NiZGYoa2Rh
dGEuc2JkZik7DQo+Pj4gIMKgwqDCoMKgwqAgaWYgKHJjIDwgMCkNCj4+PiAgwqDCoMKgwqDC
oMKgwqDCoMKgIHJldHVybiByYzsNCj4+PiAgwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVu
L3hlbi1wY2liYWNrL3BjaV9zdHViLmMgYi9kcml2ZXJzL3hlbi94ZW4tcGNpYmFjay9wY2lf
c3R1Yi5jDQo+Pj4gaW5kZXggMmYzZGE1YWM2MmNkLi45MDBlNjE5OWVlYzcgMTAwNjQ0DQo+
Pj4gLS0tIGEvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0dWIuYw0KPj4+ICsrKyBi
L2RyaXZlcnMveGVuL3hlbi1wY2liYWNrL3BjaV9zdHViLmMNCj4+PiBAQCAtMjI3LDcgKzIy
Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RldiAqcGNpc3R1Yl9kZXZpY2VfZ2V0X3BjaV9k
ZXYoc3RydWN0IHhlbl9wY2lia19kZXZpY2UgKnBkZXYsDQo+Pj4gIMKgIH0NCj4+PiAgwqAg
wqAgI2lmZGVmIENPTkZJR19YRU5fQUNQSQ0KPj4+IC1pbnQgcGNpc3R1Yl9nZXRfZ3NpX2Zy
b21fc2JkZih1bnNpZ25lZCBpbnQgc2JkZikNCj4+PiArc3RhdGljIGludCBwY2lzdHViX2dl
dF9nc2lfZnJvbV9zYmRmKHVuc2lnbmVkIGludCBzYmRmKQ0KPj4+ICDCoCB7DQo+Pj4gIMKg
wqDCoMKgwqAgc3RydWN0IHBjaXN0dWJfZGV2aWNlICpwc2RldjsNCj4+PiAgwqDCoMKgwqDC
oCBpbnQgZG9tYWluID0gKHNiZGYgPj4gMTYpICYgMHhmZmZmOw0KPj4+IEBAIC0yNDIsNyAr
MjQyLDYgQEAgaW50IHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYodW5zaWduZWQgaW50IHNi
ZGYpDQo+Pj4gIMKgIMKgwqDCoMKgwqAgcmV0dXJuIHBzZGV2LT5nc2k7DQo+Pj4gIMKgIH0N
Cj4+PiAtRVhQT1JUX1NZTUJPTF9HUEwocGNpc3R1Yl9nZXRfZ3NpX2Zyb21fc2JkZik7DQo+
Pj4gIMKgICNlbmRpZg0KPj4+ICDCoCDCoCBzdHJ1Y3QgcGNpX2RldiAqcGNpc3R1Yl9nZXRf
cGNpX2Rldl9ieV9zbG90KHN0cnVjdCB4ZW5fcGNpYmtfZGV2aWNlICpwZGV2LA0KPj4+IEBA
IC00ODQsNiArNDgzLDcgQEAgc3RhdGljIGludCBwY2lzdHViX2luaXRfZGV2aWNlKHN0cnVj
dCBwY2lzdHViX2RldmljZSAqcHNkZXYpDQo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo
ZXJyKQ0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGNvbmZpZ19yZWxl
YXNlOw0KPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgcHNkZXYtPmdzaSA9IGdzaTsNCj4+PiAr
wqDCoMKgwqDCoMKgwqAgeGVuX2FjcGlfcmVnaXN0ZXJfZ2V0X2dzaV9mdW5jKHBjaXN0dWJf
Z2V0X2dzaV9mcm9tX3NiZGYpOw0KPj4NCj4+IEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyB0aGUg
cmlnaHQgcGxhY2UgZm9yIHJlZ2lzdGVyaW5nIHRoZSBmdW5jdGlvbi4NCj4+DQo+PiBJdCBz
aG91bGQgYmUgZG9uZSBhdCB0aGUgZW5kIG9mIHhlbl9wY2lia19pbml0KCkgKGd1YXJkZWQg
d2l0aCBDT05GSUdfWEVOX0FDUEkpLg0KPj4NCj4+IEFkZGl0aW9uYWxseSB5b3Ugc2hvdWxk
IHJlc2V0IHRoZSBmdW5jdGlvbiBwb2ludGVyIE5VTEwgaW4geGVuX3BjaWJrX2NsZWFudXAo
KS4NCj4gU2hvdWxkIEkgbmVlZCB0byBhZGQgYSBuZXcgdW5yZWdpc3RlciBmdW5jdGlvbiB0
byByZXNldCwgb3IganVzdCBwYXNzIE5VTEwgdG8geGVuX2FjcGlfcmVnaXN0ZXJfZ2V0X2dz
aV9mdW5jID8NCg0KSSB0aGluayBwYXNzaW5nIE5VTEwgaXMgZmluZS4NCg0KQnV0IHlvdSds
bCBuZWVkIHNvbWUga2luZCBvZiBsb2NraW5nIHRvIGF2b2lkIGEgcmFjZSBiZXR3ZWVuIGEg
Y2FsbCBvZg0KdGhlIGhvb2sgYW5kIHBhcmFsbGVsIHVubG9hZGluZyB0aGUgcGNpYmFjayBt
b2R1bGUuDQoNCg0KSnVlcmdlbg0K
--------------50skecAAKDfGZlCJ3x20CLbJ
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------50skecAAKDfGZlCJ3x20CLbJ--

--------------LTsx08Gsgf08HuO32WuE1Z4m--

--------------0QEKRA8Qs3ovK0YyLju36Fhd
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/Ey8FAmcHrn0FAwAAAAAACgkQsN6d1ii/Ey9Q
1Af9EdHze66ELsEiz+RYmMmklSG3vL2oT/WjNSsq2ui9GcwmJheftFZfnKo5fw3ytrZUuQmN4f4l
PVF2qgf94LN5FO9NQmGRCvW9x/mSvqsrW9d8Y7HcB80P4W6T0jYvLMFzVAzJNIh/RabYDgXeGgoJ
pp7FzYC/kLU8fI2majGZ0npSTGsJEbFmC1gZlcuAWGYj15AigWHb0syhmmLg2wCN3o87VGhnHLqW
EoOFwFMKE4Z9ed7AJnL4QMmYiwkpxpi7xutRICB+KPbi8FLNsTnNq98F6F2dlEyOlg2T3UYw8obe
zYgS2rRygOGfpf1S3BJQIL1mOmEt8TXlwU2ybj+WUw==
=E/gk
-----END PGP SIGNATURE-----

--------------0QEKRA8Qs3ovK0YyLju36Fhd--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 10:41:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 10:41:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.815992.1230167 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syqbs-00038N-25; Thu, 10 Oct 2024 10:41:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 815992.1230167; Thu, 10 Oct 2024 10:41: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 1syqbr-00038G-Vb; Thu, 10 Oct 2024 10:41:31 +0000
Received: by outflank-mailman (input) for mailman id 815992;
 Thu, 10 Oct 2024 10:41: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=RAAn=RG=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1syqbq-000385-4d
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 10:41:30 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 331f2d59-86f4-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 12:41:27 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1728556878166713.366960414581;
 Thu, 10 Oct 2024 03:41:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 331f2d59-86f4-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1728556880; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=fHL6xernUjRsjSX4fzyGa/XqYy+89zhT7v0uZFu/iKpbVSeHQg0jChMkzMTejT6/x1AhTVDejjj1JxoKQvo+zFf9avm2V0lV3nA+ygoxLZ03hIi5lpSXrPmCqifAFN9qPI64GMN2jIaY95U6KXIgVhvyKzbZLaHkUgx1gwcXHu4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1728556880; 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=Vk4Y92tpto3xRUB9BVwerBFdaFraJtDzLS6DK9vaRQ0=; 
	b=J8g/JWmo6g1z5raRWJUNE78xNzubvJTERA8EYoEnIz/l8YsJMtn7gBV8ZlieLp1qCvbJcC3L7YfkkFa5kHlbKrIiHknx6bSs3Pc1TvxMtLuJ/UTCMp15NxXzBUw6hRs81ro/arbOC7higXs39q9xfa756YpAhjs4M9TIlTm3ZZE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1728556880;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=Vk4Y92tpto3xRUB9BVwerBFdaFraJtDzLS6DK9vaRQ0=;
	b=bmvhejVbyO6HarPEL3+YlaY8J2eFXBusjDYY453Z3Uf8gmJWiirO4kF6Xn7qDdg8
	HblkmHuJ0Mnpm8w3YGqOXf/TFb+MEz7T9eUVbgHJ4d+9LYNhXFw66t+3rsBM0YBF44N
	cBbJp3si/bzdwiZAmKRugiiGurd4HWtsrvq74DxE=
Message-ID: <eb9319d3-aa71-4b98-b32f-2fcbec474579@apertussolutions.com>
Date: Thu, 10 Oct 2024 06:41:04 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 25/44] x86/boot: convert create_dom0 to use boot info
To: Jan Beulich <jbeulich@suse.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
References: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-26-dpsmith@apertussolutions.com>
 <1bc18234-2e50-467d-875a-3968165f5570@amd.com>
 <70d98462-8006-4ae2-9774-f21152be2362@apertussolutions.com>
 <e68ea3c0-f454-4773-89b1-affbc0d347a3@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <e68ea3c0-f454-4773-89b1-affbc0d347a3@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/10/24 04:03, Jan Beulich wrote:
> On 10.10.2024 01:02, Daniel P. Smith wrote:
>> On 10/8/24 12:52, Jason Andryuk wrote:
>>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>>> This commit changes create_dom0 to no longer take the individual
>>>> components and
>>>> take struct boot_info instead. Internally, it is changed to locate the
>>>> kernel
>>>> and ramdisk details from struct boot_info.
>>>>
>>>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>>>> ---
>>>>    xen/arch/x86/setup.c | 25 ++++++++++++++++---------
>>>>    1 file changed, 16 insertions(+), 9 deletions(-)
>>>>
>>>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>>>> index 0d2ee19998aa..c2bcddc50990 100644
>>>> --- a/xen/arch/x86/setup.c
>>>> +++ b/xen/arch/x86/setup.c
>>>> @@ -946,10 +946,8 @@ static unsigned int __init copy_bios_e820(struct
>>>> e820entry *map, unsigned int li
>>>>        return n;
>>>>    }
>>>> -static struct domain *__init create_dom0(const module_t *image,
>>>> -                                         unsigned long headroom,
>>>> -                                         module_t *initrd, const char
>>>> *kextra,
>>>> -                                         const char *loader)
>>>> +static struct domain *__init create_dom0(const struct boot_info *bi,
>>>> +                                         const char *kextra)
>>>>    {
>>>>        static char __initdata cmdline[MAX_GUEST_CMDLINE];
>>>> @@ -964,9 +962,21 @@ static struct domain *__init create_dom0(const
>>>> module_t *image,
>>>>                .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED
>>>> : 0,
>>>>            },
>>>>        };
>>>> +    int headroom, mod_idx = first_boot_module_index(bi,
>>>> BOOTMOD_RAMDISK);
>>>
>>> I think headroom should stay unsigned long, which matches struct
>>> boot_module.
>>
>> Yes, that was not intentional. Will preserve the size.
> 
> And just to mention, with what was said on another patch mod_idx also
> shouldn't be plain int.

Correct, and I would like to think that the compiler would flag a type 
mismatch if I missed it.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 10:58:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 10:58:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816002.1230178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syqrr-0005gf-CQ; Thu, 10 Oct 2024 10:58:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816002.1230178; Thu, 10 Oct 2024 10:58: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 1syqrr-0005gY-9R; Thu, 10 Oct 2024 10:58:03 +0000
Received: by outflank-mailman (input) for mailman id 816002;
 Thu, 10 Oct 2024 10:58: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=Iugc=RG=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1syqrq-0005gQ-FZ
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 10:58:02 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20612.outbound.protection.outlook.com
 [2a01:111:f403:2412::612])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 82f6a604-86f6-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 12:58:00 +0200 (CEST)
Received: from BN0PR03CA0050.namprd03.prod.outlook.com (2603:10b6:408:e7::25)
 by BL3PR12MB6473.namprd12.prod.outlook.com (2603:10b6:208:3b9::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 10:57:53 +0000
Received: from BL6PEPF00022573.namprd02.prod.outlook.com
 (2603:10b6:408:e7:cafe::c2) by BN0PR03CA0050.outlook.office365.com
 (2603:10b6:408:e7::25) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18 via Frontend
 Transport; Thu, 10 Oct 2024 10:57:53 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF00022573.mail.protection.outlook.com (10.167.249.41) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 10:57: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.39; Thu, 10 Oct
 2024 05:57:52 -0500
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.39
 via Frontend Transport; Thu, 10 Oct 2024 05:57:50 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 82f6a604-86f6-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=wjtiPnQLp7/3gMGlfhrbEAiax5QfdPAhe8Gpa0bwtgMMviJIAfkaIwSIw3zaf2tLqWEHSuud5YQVTLxDP4UBRlrSFOkiiFNsmYloF04r0XCzryoRLkE/UD1lWp5iY/HElyrhqxtZOTk6K5oIR4Q4REOzOaoEYLJPE5H9RchOYgxzjrguBCh0ZOcJtqiDLcRAX0mBxR9Pfb3gYrEoA4rE5DF2xQiyGB8O2hWa/D6VO9+TGL5c9pBOaPSii/2+/i07FPMnb85OevruqkQH6bPGZRHo7a7USGOzxwRz5syJJ+erkl90WYugtciX78dgUDPEQufj11t4k/myTvOaoCol9A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=OrlbRhj83Wr7IchgVfjRcw3TzeB81zfOCVGOsiy7A1k=;
 b=sb8dV0RlvtntiyJssdktFNIVW8o0XJatHuxArfYxHEcTlDJknC5hOVVwKCizufVfJRwTLuCkk3+xdcxlbk/KGvJkDMMOkPvhv62iVaLKCHP2VMhLI1+YIiIB2WfhkWE8vAgn8kShscD2AxNDtwge659Av+QhAMDdm/rs/CAwJEA42v7sWGvJVF9AfU4uAUn7MJn/iy5QUVygM/ADnp/lo2nVFK7YBcF673pV3o14njzyx/lWcy1H8baDQfS3BrNRjIYs6s5y7xtHeNsG6LPMbvsfPUVc2EKsp0Rekl19gTN0lTJtn9t5Ivi9XhjWDI0gfDxX3YsQxTojlOIi+qMtfw==
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=OrlbRhj83Wr7IchgVfjRcw3TzeB81zfOCVGOsiy7A1k=;
 b=R9xYdFuq3lwws9fOt7eDLe2raeoJvt/oYsyuhsApsfM8UrjouPPThCgB+qu796iQPSNd9KxOw5JD4igVDyrRcUMn2QMQilhVXzpLovDlO0fAVdO/kbQ8jddXlkAlEYzNVhPFoukBNRjaDN/gbW1856D1ytc3xf47pZpnSM2KmIc=
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>, Jan Beulich <jbeulich@suse.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>
Subject: [PATCH] device-tree: Move dt-overlay.c to common/device-tree/
Date: Thu, 10 Oct 2024 12:57:46 +0200
Message-ID: <20241010105746.140921-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
Received-SPF: None (SATLEXMB04.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022573:EE_|BL3PR12MB6473:EE_
X-MS-Office365-Filtering-Correlation-Id: 266a9484-e698-4951-8d47-08dce91a63b0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?rpzS59wogGkTFhBLrLJh7iObfWEIOiS6oSq4AUNQKCyPog6KR1Sc/ZCM05T0?=
 =?us-ascii?Q?pbkBm3MftYJCledPIHndG+GoTz8PRv4ruhMTBMtKDFZntEw3b/RjUY//HzyP?=
 =?us-ascii?Q?IWuLXMgW3+Y9a0Exnx/hrcG/lt1rFi2DqWzQwK3QY3jS3GVgEbLE3x1JBfID?=
 =?us-ascii?Q?QwjerTqO+KrKR2/iZS7pOOibT20Wn2H9djCk8dAkc+5OKJczQAJsTDOsJbvR?=
 =?us-ascii?Q?yTd3M7YumfJgEfvtWeKq2ykbnM/DOhv2dk1q6S5eM07II7w7qkC0iOz+bvAr?=
 =?us-ascii?Q?Oov7a8M3mSroo0wHWZowc2iv09EMkPBcdHJy9/xQCs/xR5ooQlwp2LvstKyi?=
 =?us-ascii?Q?fXdLTrrex1gUuxYgDEf2B2DY8tt4R03wbFsvM6FtOzXK3T86lpnSmudU6iZo?=
 =?us-ascii?Q?ZvOgxp0KIonzzdlyzs8Xb7T+b+y8A1udjZCre8rZXpt3K/HkfWentjm93yxK?=
 =?us-ascii?Q?OmPqjav6YL0cGANdC7MifbXyd5fRkwRTAPFGqqVcGuBcvqMNYiwEFK5dd3RV?=
 =?us-ascii?Q?uIT1zQuMxylAuc804JvGLA6iYy5ig4NENB4othvoq0kQsAI6OxH46WoJYfXv?=
 =?us-ascii?Q?FirB9txdfCZ2gRKm9EXZj1Got0c8zTynD/F2LzqDMFxCw44fWWNwOa3a+OdD?=
 =?us-ascii?Q?a5kHDk9W61NxrmxflG7St6lOul8IF9oAY74maBSUUQfg3S90znT7V7T6tQfI?=
 =?us-ascii?Q?ZpkOi+1ZUk/Oq7mXB2E+eIZx2YcUM8v6QhNVLLhpVAjO6nFWLyYSvrvnPrFh?=
 =?us-ascii?Q?fwKiu5WmeDErfp7ZIClSN/2xBIJOh84e/kFLqhgdExEkk3RDSoJGFduTUe8s?=
 =?us-ascii?Q?iBw0L/mv7kWlsvV+iL1NSbF3uQoDzAAtMq95rgcqR64zRwkiqTfWmEdE7G6s?=
 =?us-ascii?Q?3AFjSShiCPrpoRLRzFiWlpKbyC3+xce9BwwT0DYh+X922FI9qU4KDSIaVE3L?=
 =?us-ascii?Q?HgWFzV7H5/tNVoeDZkCaC85i2CFtDL85mr1CYAE+azP7LGW/GC4QcJ1dsMLc?=
 =?us-ascii?Q?DaNZ/oijXKPyLFRJchF8atKwc9R4ISzUjsu9dcwGdhvHg3z0ueg9p8HR/F1x?=
 =?us-ascii?Q?ItKSHu41R0YpVrhEIu2rpEO3XvPf8QJ1iQgAe+swtIKi+PGHQOFXYyoIytwG?=
 =?us-ascii?Q?to6vGvcorFS5m045hBjb9aP0Qxzigxf96qafVpgXh6bpW/nfn012Ntu9w96y?=
 =?us-ascii?Q?MKgNGzpoaS0dIzQA+9YzmgGq4MHE79hm9+jq27mrWEjAR4FqzauLoP+6Popb?=
 =?us-ascii?Q?sEVCvTPgZXiN+vIRGLP7wgRZvumI5girQ2r4XMfFUuKR61Wme5LfZbGNkxhL?=
 =?us-ascii?Q?wnB0iV29R1Rr1YGcHJHMuAFCRcRDVMXsv39hcetO9Jvl0/pQLWwAbz/p73Kk?=
 =?us-ascii?Q?khxAp6jCgiCye7UDwTcQvKqGfYnK?=
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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 10:57:52.9141
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 266a9484-e698-4951-8d47-08dce91a63b0
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:
	BL6PEPF00022573.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6473

The code is DT specific and as such should be placed under common
directory for DT related files. Update MAINTAINERS file accordingly
and drop the line with a path from a top-level comment in dt-overlay.c.
It serves no purpose and requires being updated on every code movement.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
This patch is based on the already acked series (waiting to be committed):
https://lore.kernel.org/xen-devel/20241004122220.234817-1-michal.orzel@amd.com/T/
---
 MAINTAINERS                               | 1 -
 xen/common/Makefile                       | 1 -
 xen/common/device-tree/Makefile           | 1 +
 xen/common/{ => device-tree}/dt-overlay.c | 2 --
 4 files changed, 1 insertion(+), 4 deletions(-)
 rename xen/common/{ => device-tree}/dt-overlay.c (99%)

diff --git a/MAINTAINERS b/MAINTAINERS
index f68ddd7f84a5..3bba2c8c31ad 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -292,7 +292,6 @@ M:	Michal Orzel <michal.orzel@amd.com>
 S:	Supported
 F:	xen/common/libfdt/
 F:	xen/common/device-tree/
-F:	xen/common/dt-overlay.c
 F:	xen/include/xen/libfdt/
 F:	xen/include/xen/bootfdt.h
 F:	xen/include/xen/device_tree.h
diff --git a/xen/common/Makefile b/xen/common/Makefile
index f90bb00d23e5..8dec11544e35 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -9,7 +9,6 @@ obj-$(CONFIG_DEBUG_TRACE) += debugtrace.o
 obj-$(CONFIG_HAS_DEVICE_TREE) += device-tree/
 obj-$(CONFIG_IOREQ_SERVER) += dm.o
 obj-y += domain.o
-obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
 obj-y += event_2l.o
 obj-y += event_channel.o
 obj-y += event_fifo.o
diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makefile
index 990abd571acf..58052d074e62 100644
--- a/xen/common/device-tree/Makefile
+++ b/xen/common/device-tree/Makefile
@@ -1,3 +1,4 @@
 obj-y += bootfdt.init.o
 obj-y += bootinfo.init.o
 obj-y += device-tree.o
+obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
diff --git a/xen/common/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
similarity index 99%
rename from xen/common/dt-overlay.c
rename to xen/common/device-tree/dt-overlay.c
index 5ce00514ef14..97fb99eaaaf7 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/device-tree/dt-overlay.c
@@ -1,7 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /*
- * xen/common/dt-overlay.c
- *
  * Device tree overlay support in Xen.
  *
  * Copyright (C) 2023, Advanced Micro Devices, Inc. All Rights Reserved.
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 11:20:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 11:20:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816016.1230188 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syrCz-0007vC-6l; Thu, 10 Oct 2024 11:19:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816016.1230188; Thu, 10 Oct 2024 11:19: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 1syrCz-0007v5-2V; Thu, 10 Oct 2024 11:19:53 +0000
Received: by outflank-mailman (input) for mailman id 816016;
 Thu, 10 Oct 2024 11:19: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syrCx-0007ux-FW
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 11:19:51 +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 8ff27684-86f9-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 13:19:49 +0200 (CEST)
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 9A60121D7E;
 Thu, 10 Oct 2024 11:19:48 +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 6FFAD13A6E;
 Thu, 10 Oct 2024 11:19:48 +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 DdvcGVS4B2eIKgAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 10 Oct 2024 11:19: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: 8ff27684-86f9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728559188; 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=nEIq7GwYUVCTUGK0lDr/JTYVABBl7q7jjnz8jp44RBA=;
	b=dulR21QjCezK2FALVTbUtmxUdiwTWHiuaif1kFtSTcxD1HMBBmW6qnBkPxSNCcaR3Q05jR
	WXzcamY3ZHZvhWtrngwQQHwSzo2/I5IYVmMjn0jHEugr2ZgQHpIOgi9NTa7g9sHKQSHeUW
	o4liODM5e7RFxGRB3GX1UMG5vxfzWfo=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=dulR21Qj
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728559188; 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=nEIq7GwYUVCTUGK0lDr/JTYVABBl7q7jjnz8jp44RBA=;
	b=dulR21QjCezK2FALVTbUtmxUdiwTWHiuaif1kFtSTcxD1HMBBmW6qnBkPxSNCcaR3Q05jR
	WXzcamY3ZHZvhWtrngwQQHwSzo2/I5IYVmMjn0jHEugr2ZgQHpIOgi9NTa7g9sHKQSHeUW
	o4liODM5e7RFxGRB3GX1UMG5vxfzWfo=
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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v2] stubdom: add fine grained library config items to Mini-OS configs
Date: Thu, 10 Oct 2024 13:19:46 +0200
Message-ID: <20241010111946.22173-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 9A60121D7E
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:dkim,suse.com:mid,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

Today Mini-OS can only be configured to use all or none Xen library.
In order to prepare a more fine grained configuration scheme, add per
library config items to the Mini-OS config files.

As some libraries pull in others, the config files need to be
extended at build time to reflect those indirect library uses.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- rename BUILD_config to GEN_CONFIG (Anthony PERARD)
- rename generated config files to *.gen.cfg (Anthony PERARD)
- don't write config data to file in make macro (Anthony PERARD)
- remove no longer needed $(CURDIR)/ from prerequisites (Anthony PERARD)
---
 stubdom/.gitignore |  1 +
 stubdom/Makefile   | 49 ++++++++++++++++++++++++++++++++++------------
 2 files changed, 38 insertions(+), 12 deletions(-)

diff --git a/stubdom/.gitignore b/stubdom/.gitignore
index 10e2547a22..23350446b9 100644
--- a/stubdom/.gitignore
+++ b/stubdom/.gitignore
@@ -1,3 +1,4 @@
+*.gen.cfg
 /*.tar.gz
 /*-minios-config.mk
 /autom4te.cache/
diff --git a/stubdom/Makefile b/stubdom/Makefile
index f8c31fd35d..6ed4253b25 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -342,6 +342,14 @@ endef
 
 $(foreach lib,$(STUB_LIBS),$(eval $(call BUILD_lib,$(lib))))
 
+define GEN_config
+ (cat $< && \
+ for i in $(sort $(APP_LIBS) $(call xenlibs-dependencies,$(APP_LIBS))); do \
+   u=`echo $$i | tr a-z A-Z`; \
+   echo "CONFIG_LIBXEN$$u=y"; \
+ done)
+endef
+
 xenstore/stamp: $(XEN_ROOT)/tools/xenstored/Makefile.common
 	$(do_links)
 
@@ -375,8 +383,12 @@ $(TARGETS_MINIOS): mini-os-%:
 # ioemu
 #######
 
-ioemu-minios-config.mk: $(CURDIR)/ioemu-minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+ioemu-minios.gen.cfg: APP_LIBS = evtchn gnttab ctrl guest
+ioemu-minios.gen.cfg: ioemu-minios.cfg Makefile
+	$(GEN_config) >$@
+
+ioemu-minios-config.mk: ioemu-minios.gen.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: ioemu
 ioemu: cross-zlib cross-libpci libxenguest ioemu-minios-config.mk
@@ -437,8 +449,12 @@ grub-upstream: grub-$(GRUB_VERSION).tar.gz
 		patch -d $@ -p1 < $$i || exit 1; \
 	done
 
-grub-$(XEN_TARGET_ARCH)-minios-config.mk: $(CURDIR)/grub/minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+grub/minios.gen.cfg: APP_LIBS = guest ctrl toollog
+grub/minios.gen.cfg: grub/minios.cfg Makefile
+	$(GEN_config) >$@
+
+grub-$(XEN_TARGET_ARCH)-minios-config.mk: grub/minios.gen.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: grub
 grub: cross-polarssl grub-upstream $(CROSS_ROOT) grub-$(XEN_TARGET_ARCH)-minios-config.mk
@@ -449,8 +465,12 @@ grub: cross-polarssl grub-upstream $(CROSS_ROOT) grub-$(XEN_TARGET_ARCH)-minios-
 # xenstore
 ##########
 
-xenstore-minios-config.mk: $(CURDIR)/xenstore-minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+xenstore-minios.gen.cfg: APP_LIBS = gnttab evtchn toollog ctrl
+xenstore-minios.gen.cfg: xenstore-minios.cfg Makefile
+	$(GEN_config) >$@
+
+xenstore-minios-config.mk: xenstore-minios.gen.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: xenstore
 xenstore: $(CROSS_ROOT) xenstore-minios-config.mk
@@ -460,8 +480,12 @@ xenstore: $(CROSS_ROOT) xenstore-minios-config.mk
 # xenstorepvh
 #############
 
-xenstorepvh-minios-config.mk: $(CURDIR)/xenstorepvh-minios.cfg
-	MINIOS_CONFIG="$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
+xenstorepvh-minios.gen.cfg: APP_LIBS = gnttab evtchn toollog ctrl
+xenstorepvh-minios.gen.cfg: xenstorepvh-minios.cfg Makefile
+	$(GEN_config) >$@
+
+xenstorepvh-minios-config.mk: xenstorepvh-minios.gen.cfg
+	MINIOS_CONFIG="$(CURDIR)/$<" CONFIG_FILE="$(CURDIR)/$@" $(MAKE) DESTDIR= -C $(MINI_OS) config
 
 .PHONY: xenstorepvh
 xenstorepvh: $(CROSS_ROOT) xenstorepvh-minios-config.mk
@@ -474,7 +498,7 @@ xenstorepvh: $(CROSS_ROOT) xenstorepvh-minios-config.mk
 .PHONY: ioemu-stubdom
 ioemu-stubdom: APP_OBJS=$(CURDIR)/ioemu/i386-stubdom/qemu.a $(CURDIR)/ioemu/i386-stubdom/libqemu.a $(CURDIR)/ioemu/libqemu_common.a
 ioemu-stubdom: mini-os-$(XEN_TARGET_ARCH)-ioemu lwip-$(XEN_TARGET_ARCH) libxenguest ioemu
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/ioemu-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(APP_OBJS)"
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/ioemu-minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(APP_OBJS)"
 
 .PHONY: c-stubdom
 c-stubdom: mini-os-$(XEN_TARGET_ARCH)-c lwip-$(XEN_TARGET_ARCH) libxenguest c
@@ -490,7 +514,7 @@ vtpmmgr-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpmmgr vtpmmgr
 
 .PHONY: pv-grub
 pv-grub: mini-os-$(XEN_TARGET_ARCH)-grub libxenguest grub
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/grub/minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/grub-$(XEN_TARGET_ARCH)/main.a
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/grub/minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/grub-$(XEN_TARGET_ARCH)/main.a
 
 .PHONY: pv-grub-if-enabled
 ifneq ($(filter grub,$(STUBDOM_TARGETS)),)
@@ -501,11 +525,11 @@ endif
 
 .PHONY: xenstore-stubdom
 xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxenguest xenstore
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a
 
 .PHONY: xenstorepvh-stubdom
 xenstorepvh-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstorepvh libxenguest xenstorepvh
-	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstorepvh-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstorepvh/xenstored.a
+	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstorepvh-minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstorepvh/xenstored.a
 
 #########
 # install
@@ -607,6 +631,7 @@ clean:
 	rm -fr grub-$(XEN_TARGET_ARCH)
 	rm -f $(STUBDOMPATH)
 	rm -f *-minios-config.mk
+	rm -f *.gen.cfg
 	rm -fr pkg-config
 	-[ ! -d ioemu ] || $(MAKE) DESTDIR= -C ioemu clean
 	-[ ! -d xenstore ] || $(MAKE) -f $(CURDIR)/xenlibs.mk -C xenstore clean
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 11:26:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 11:26:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816024.1230197 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syrJM-00048T-Rj; Thu, 10 Oct 2024 11:26:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816024.1230197; Thu, 10 Oct 2024 11: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 1syrJM-00048M-P0; Thu, 10 Oct 2024 11:26:28 +0000
Received: by outflank-mailman (input) for mailman id 816024;
 Thu, 10 Oct 2024 11:26: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=T2t6=RG=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syrJL-00046y-E5
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 11:26:27 +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 7c192fb9-86fa-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 13:26:25 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9944c4d5d4so118924566b.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 04:26:25 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7ede82esm76279066b.24.2024.10.10.04.26.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 04:26:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c192fb9-86fa-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728559585; x=1729164385; 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=89hd8DR26dYP4RAjHLw8+eMU9fU3Q1tvYB2HRX7gEKs=;
        b=IhlyANFltsBOIFqhRd2jzmr2LQ814yGrRdYo0MoO9Q6NaHsPO8/AGjNeHkvf0bt0iM
         sUsXoJ6onZWdCazYZNOzbZph7MiGq+ZNKWmIZMm7AWZ7EPD4XMjvr+C3sb0HPr28H4AX
         JpCAV+/YNdvIbPTcZ1PwiowYvrsP1js7JpGLU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728559585; x=1729164385;
        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=89hd8DR26dYP4RAjHLw8+eMU9fU3Q1tvYB2HRX7gEKs=;
        b=Ei+9H0+JyebTCqOpT9YWjMUUkrejoGVY+MdHHRdDnRtVNU+jGk7hMnW+ILrr00YoQR
         30YUYFOOrGduW+uXuWqrm0LAeglugfqGeOkFFmJCcRSdsUpSR/aWAdnjVwk/DcTNxPUS
         +fV6Hnf9glOWl+Je25RzZs9+dWhb6v2xKEo2EeSu/Sc4Wlub/77Tk2B/PTLyDVIUPmHH
         qfOj2HAf3i8eDabQ0cfsQdzCapiVHvqvP72lHHsb2ZXPOg21uMHUs7Yoq1S3E3XjamtJ
         k5NOpDXtFEWEqNGVQt6olvl08H4mQTrAYVcMQeR22NR3nVngcglXBkxI064UYdIxmKGz
         YJGw==
X-Forwarded-Encrypted: i=1; AJvYcCWTppBkKG3INDMZjM5KVlVdoA+NcvvXxLXX0y/ag5u8gcFpTd8usVeeajUoHF2kuiY5iiKAiGcHuZQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yya3jIznC2pUVqJaRC/5MCKKenGI8Omr5A14m9N9pGF5iMXSf/L
	CUqmv/cdvoJqUVkETIHZFwtM9dme7reW3J3U1h6xLprOHbhXOiG5RXyGHaHJgZo=
X-Google-Smtp-Source: AGHT+IFS7doy6BPHjLtYtryGK/Jj6uIjQCFwLefcS5KZvmn9px5h1TNqjtharEDXZX7XLlbLAcSb7g==
X-Received: by 2002:a17:906:f593:b0:a86:b85d:9470 with SMTP id a640c23a62f3a-a998d328f12mr459626566b.59.1728559584905;
        Thu, 10 Oct 2024 04:26:24 -0700 (PDT)
Message-ID: <cf65ab1b-c7d6-430f-a747-3fa0185881e6@citrix.com>
Date: Thu, 10 Oct 2024 12:26:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 00/19] Update header guards bases on new coding style
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.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>,
 Paul Durrant <paul@xen.org>, Tim Deegan <tim@xen.org>,
 Christopher Clark <christopher.w.clark@gmail.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Tamas K Lengyel <tamas@tklengyel.com>,
 Alexandru Isaila <aisaila@bitdefender.com>,
 Petre Pircalabu <ppircalabu@bitdefender.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Lukasz Hawrylko <lukasz@hawrylko.pl>,
 =?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>,
 Doug Goldstein <cardoe@cardoe.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Dario Faggioli <dfaggioli@suse.com>,
 George Dunlap <gwd@xenproject.org>
References: <20241004081713.749031-1-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241004081713.749031-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04/10/2024 9:16 am, Frediano Ziglio wrote:
> Frediano Ziglio (19):
>   xen: Update header guards - Generic
>   xen: Update header guards - X86
>   xen: Update header guards - ACPI
>   xen: Update header guards - ARGO
>   xen: Update header guards - ARM
>   xen: Update header guards - Device tree
>   xen: Update header guards - EFI
>   xen: Update header guards - HYPFS
>   xen: Update header guards - Intel TXT
>   xen: Update header guards - I/O MMU
>   xen: Update header guards - Kconfig
>   xen: Update header guards - KEXEC
>   xen: Update header guards - Live patch
>   xen: Update header guards - PPC 64
>   xen: Update header guards - RISC-V
>   xen: Update header guards - Scheduling
>   xen: Update header guards - VM event, mem access, monitor
>   xen: Update header guards - VPCI
>   xen: Update header guards - XSM/Flask

This scheme is under dispute within the core maintainership.  One thing
it has highlighted is that the MISRA identifier-length limit isn't being
correctly enforced in Eclair right now.

Please do not continue with this any further at this juncture.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 11:45:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 11:45:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816035.1230208 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syrbQ-0006Z4-9t; Thu, 10 Oct 2024 11:45:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816035.1230208; Thu, 10 Oct 2024 11:45: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 1syrbQ-0006Yx-6p; Thu, 10 Oct 2024 11:45:08 +0000
Received: by outflank-mailman (input) for mailman id 816035;
 Thu, 10 Oct 2024 11:45: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syrbO-0006Yq-Pq
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 11:45:06 +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 1798c212-86fd-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 13:45:05 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c915308486so1073959a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 04:45:05 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c937267272sm657074a12.75.2024.10.10.04.45.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 04:45:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1798c212-86fd-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728560705; x=1729165505; 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=ppAeNhpjBNYJv1Ks4wa6MbXhaiqiZk06I7mEQhH62zk=;
        b=LxWSane1XX8bbcHTDonxGukjrSYzIqyOIm4ZAmRQU+zKHM4jbgkTRZ687zfBD3/R0f
         Q4T8fWQxyNEXw5GQd+V1RJYR/f97X+b8JW9/OlWZSDJHMwwjSAhbsTmMJiUJgeGpC2A0
         h1vWewC1LoY/Ck1CopkDq6uXlEmcj11S8L2PrARKoegEAJRHH1frbMQYRm1bLByD4gRQ
         n8+UNPyJT3Rq0MMj7lGYL+YwfXPUjNn27gczz4j1gqyBgOi8r/oU6ZftzoLBuVUkSt2d
         tghCsdZxhwI7Nx/g8m5C1Ar41QxYTHNFjw6GbSSWE5174UkgKAitXBP1C8ikB/6ro4TQ
         sUOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728560705; x=1729165505;
        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=ppAeNhpjBNYJv1Ks4wa6MbXhaiqiZk06I7mEQhH62zk=;
        b=U/oSImdWi/A2dT34gVDHnPQOKHcFi/4cyygoHPsoSvF89NSfjmAJh2y7o6xW9W494g
         F1UBHe4sMjytd3rwsmHTOodFhzU8Q+k3+uWtM3SkgPl31Vs622FWnKkyfztUcLFMYHi9
         1hRG73doVINpdzf6wLv1u6vr+3W5+LjY0NWBoSYgti+8iGDoeQgsWRf21D6IFST3EaYL
         oqW5HOUdhgqrREN6MAA4B/3eIdjQi+D34M9dKGgz+Qp9WMstjSIofnpif2OoYfxNnL42
         YdhQ+0HhF1bee/cVFsAPydgi13KrKb1gy5kwfuojD+Y7DuKzp/asQuxUWTnhlmfXuWW1
         Apyg==
X-Forwarded-Encrypted: i=1; AJvYcCUP9tWtcA8UsWnSKs48wAqY0Tmv7ty3nGJezAYSsQ5Et3yaeAR+BMETOcGElz8Q0mpmibZ7o4mUwtg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw0befEhZxXqx006zljTYc70W1oJHN6Tb4nUFPcL8GmKn3AQn7h
	4faGMR8Y/tbZYgKuUeBz4cOcavWcJWodCUcM3WIDkZETqKpuUFyuT23B+qf11LQUEYSx0OKQtp4
	=
X-Google-Smtp-Source: AGHT+IE1uZQnKWWI3g1qy8TQV6BG0uN0sb1ymQCImHXCrVtafIzSnWiOb+y9d/QQ0Bo+cMcQ6m7/lg==
X-Received: by 2002:a05:6402:2707:b0:5c2:6343:8ddf with SMTP id 4fb4d7f45d1cf-5c91d699391mr4284098a12.33.1728560704682;
        Thu, 10 Oct 2024 04:45:04 -0700 (PDT)
Message-ID: <255254f9-93e9-4132-9218-dc18d78439b8@suse.com>
Date: Thu, 10 Oct 2024 13:45:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH v2] add config support for each Xen library
To: Juergen Gross <jgross@suse.com>
Cc: samuel.thibault@ens-lyon.org, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20241009140554.1084-1-jgross@suse.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: <20241009140554.1084-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.10.2024 16:05, Juergen Gross wrote:
> Instead of adding all or no Xen library (controlled by CONFIG_XC),
> support a dedicated config option for each library instead,
> defaulting to disabled.
> 
> As it is no longer needed now, drop the CONFIG_XC support.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V2:
> - merge patches of the V1 series (Samuel Thibault)
> 
> Note: do not apply to the tree until the related Xen series
> "stubdom: prepare more fine grained Xen library usage" has been
> applied.

And at this point it's solely "stubdom: add fine grained library config
items to Mini-OS configs" which is left as a dependency, isn't it?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 11:47:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 11:47:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816045.1230226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syrdK-0000e5-P1; Thu, 10 Oct 2024 11:47:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816045.1230226; Thu, 10 Oct 2024 11: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 1syrdK-0000dv-Lt; Thu, 10 Oct 2024 11:47:06 +0000
Received: by outflank-mailman (input) for mailman id 816045;
 Thu, 10 Oct 2024 11:47: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syrdI-0000aZ-P0
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 11:47:04 +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 5d3785f8-86fd-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 13:47:02 +0200 (CEST)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-42cc8782869so7377575e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 04:47:02 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430d748d421sm46648555e9.42.2024.10.10.04.47.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 04:47:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d3785f8-86fd-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728560821; x=1729165621; darn=lists.xenproject.org;
        h=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=6zvOWHg/mcF8WlnhDI7vogfORoC+jBxFczAWbROfEZo=;
        b=GET0WbYqhcE7pC9ga/ziHjHU9mQpn/MTLSKaOzqmF01zas1TOy93TqzfDmOHiz8qzW
         UidKDrwoYxcu7xqGgK8N5ANFEH9FeZWjA8BBYE6TIUP6UyEzLOFKZD0YXgXc4XGZYS2B
         YaBQImAhjJGJffN3Z5551ZFmwy9BecuidWdA4Rd8JPIv3TTtN7tq2uH+ufFNesYIEUKG
         G74UN9x/vAmY2Rsqd/6fwu9OojYayDhKvbe7Buct4qT2Zmi7kIlbp2t8ySBv6xxwl0zA
         x+ZC/u2+4jLuWbNPRrLsqfD9Xyw+HdYhjGjrCIE7v6sKluTVKMYQAL+6RELzMd+d2XEX
         9Tgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728560821; x=1729165621;
        h=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=6zvOWHg/mcF8WlnhDI7vogfORoC+jBxFczAWbROfEZo=;
        b=JGv4KsrV/uIJot9jPeNiLvHpbkGB3F8wvQR/B7+w/F3RuXTTingF4hB6zdXyLZa+ig
         19jLhHSvtKJYWClZo47r1bxHU9ZhcuhRDCHsfEHLroF+JJ0Jqy6LfLyaUcu430mZQN13
         00zEATZdlkcCNQfu0dks2MD6EJVbFXTe4BkjeeNHOrUlxvLpe7LFfzM1h9lmAmIgc+5x
         5UumaMGDqsKGyGyG2KJiAs17Gebjb1FGwHZkgFdEotqm0SRNUlxrPzmj3cFRUkxmDYGQ
         qKbTzhCl4pkqvc9QVnaKjUTeec16iwi5KZrk5PD+/WMlRe/NTjXYDDQGMQxTHqJ9P+nZ
         W8oA==
X-Forwarded-Encrypted: i=1; AJvYcCUHKW46e3Q3aPtMgLe0sw4nfHLfH2Lie0pbOUkyhgQucMCU/PrCBCaCP/eRyJ8ZsfQeolHH3wTibrQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxURdIzv0V32VVJWsy8ap670tWu0IC627co8J8bN+nu+LpmB07k
	8iUZaKl3qw0DhF6JEPNcxoAekoeukKxHOgEo0YmOmJpjh5hbbNQjH6IQos98vpb8hO1F2OCB1Ec
	q
X-Google-Smtp-Source: AGHT+IFTyYR5ujGYlZqNU2V92WwzNgpL2B3ea54wVn4m6b16KvhYLDhfGKbGo8EvxqpR7CIBIpU4bw==
X-Received: by 2002:a05:600c:3b88:b0:42c:de34:34c1 with SMTP id 5b1f17b1804b1-430ccf0cdedmr48187255e9.2.1728560821535;
        Thu, 10 Oct 2024 04:47:01 -0700 (PDT)
Message-ID: <a5dcedb8-47b0-439f-aad4-fb7c3a8edb39@suse.com>
Date: Thu, 10 Oct 2024 13:47:00 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [MINI-OS PATCH v2] add config support for each Xen library
To: Jan Beulich <jbeulich@suse.com>
Cc: samuel.thibault@ens-lyon.org, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <20241009140554.1084-1-jgross@suse.com>
 <255254f9-93e9-4132-9218-dc18d78439b8@suse.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <255254f9-93e9-4132-9218-dc18d78439b8@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------uI0qSdfqstzNiP06npWEB7pF"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------uI0qSdfqstzNiP06npWEB7pF
Content-Type: multipart/mixed; boundary="------------wjh42bIrZN4MzQFiIcaq7WvK";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: samuel.thibault@ens-lyon.org, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org
Message-ID: <a5dcedb8-47b0-439f-aad4-fb7c3a8edb39@suse.com>
Subject: Re: [MINI-OS PATCH v2] add config support for each Xen library
References: <20241009140554.1084-1-jgross@suse.com>
 <255254f9-93e9-4132-9218-dc18d78439b8@suse.com>
In-Reply-To: <255254f9-93e9-4132-9218-dc18d78439b8@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------wjh42bIrZN4MzQFiIcaq7WvK
Content-Type: multipart/mixed; boundary="------------cF20r9RFuDBQe0mMTN2YV3TD"

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

T24gMTAuMTAuMjQgMTM6NDUsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwOS4xMC4yMDI0
IDE2OjA1LCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4gSW5zdGVhZCBvZiBhZGRpbmcgYWxs
IG9yIG5vIFhlbiBsaWJyYXJ5IChjb250cm9sbGVkIGJ5IENPTkZJR19YQyksDQo+PiBzdXBw
b3J0IGEgZGVkaWNhdGVkIGNvbmZpZyBvcHRpb24gZm9yIGVhY2ggbGlicmFyeSBpbnN0ZWFk
LA0KPj4gZGVmYXVsdGluZyB0byBkaXNhYmxlZC4NCj4+DQo+PiBBcyBpdCBpcyBubyBsb25n
ZXIgbmVlZGVkIG5vdywgZHJvcCB0aGUgQ09ORklHX1hDIHN1cHBvcnQuDQo+Pg0KPj4gU2ln
bmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPg0KPj4gLS0tDQo+
PiBWMjoNCj4+IC0gbWVyZ2UgcGF0Y2hlcyBvZiB0aGUgVjEgc2VyaWVzIChTYW11ZWwgVGhp
YmF1bHQpDQo+Pg0KPj4gTm90ZTogZG8gbm90IGFwcGx5IHRvIHRoZSB0cmVlIHVudGlsIHRo
ZSByZWxhdGVkIFhlbiBzZXJpZXMNCj4+ICJzdHViZG9tOiBwcmVwYXJlIG1vcmUgZmluZSBn
cmFpbmVkIFhlbiBsaWJyYXJ5IHVzYWdlIiBoYXMgYmVlbg0KPj4gYXBwbGllZC4NCj4gDQo+
IEFuZCBhdCB0aGlzIHBvaW50IGl0J3Mgc29sZWx5ICJzdHViZG9tOiBhZGQgZmluZSBncmFp
bmVkIGxpYnJhcnkgY29uZmlnDQo+IGl0ZW1zIHRvIE1pbmktT1MgY29uZmlncyIgd2hpY2gg
aXMgbGVmdCBhcyBhIGRlcGVuZGVuY3ksIGlzbid0IGl0Pw0KDQpZZXMuDQoNCkluIHRoZW9y
eSB0aGUgTWluaS1PUyBwYXRjaCBjb3VsZCBiZSBhcHBsaWVkIGFscmVhZHksIGFzIGxvbmcg
YXMgQ29uZmlnLm1rDQpvbiB0aGUgWGVuIHNpZGUgaXNuJ3QgdXBkYXRlZCB3aXRoIHRoZSBu
ZXcgTWluaS1PUyBjb21taXQgaWQsIGJ1dCBJIHRoaW5rDQp3ZSBzaG91bGQgd2FpdCBuZXZl
cnRoZWxlc3MuDQoNCg0KSnVlcmdlbg0KDQo=
--------------cF20r9RFuDBQe0mMTN2YV3TD
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------cF20r9RFuDBQe0mMTN2YV3TD--

--------------wjh42bIrZN4MzQFiIcaq7WvK--

--------------uI0qSdfqstzNiP06npWEB7pF
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/Ey8FAmcHvrQFAwAAAAAACgkQsN6d1ii/Ey+v
qgf/b7aSCoG9qZbEpofkRqSOgJ2H1pKXmrH8JYm0QI2nuMub0h4ar2a6nufhuhvAGZNocUHp9Ezt
fsuLsU8w+aMhm0T3igP5D8aY2uv++IV8btGmSIuuGvUuGOG+nkinto5kHum7IZkzgFRH4tQl/qwi
+wJq4teVfeHn/UNTuBCrHgRP8W0DXzTpiRShM77pu/gvTxFte8DQ9YS4fI57mTgaz4uh5d4exz0s
tRQqRO30WdWucM1GOw6+lXc4x5GY/uwcZcGzNFMMVs7KgxGLiPLG2lff3bezgBU4A3Bu8UcDlAo8
TOTZjP9qIbDRyo+tn1S7w1bEySHy5xmslOnJUQY3UA==
=zVwZ
-----END PGP SIGNATURE-----

--------------uI0qSdfqstzNiP06npWEB7pF--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 12:02:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 12:02:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816068.1230236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syrsV-0008IF-7p; Thu, 10 Oct 2024 12:02:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816068.1230236; Thu, 10 Oct 2024 12:02: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 1syrsV-0008I8-5K; Thu, 10 Oct 2024 12:02:47 +0000
Received: by outflank-mailman (input) for mailman id 816068;
 Thu, 10 Oct 2024 12:02: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 1syrsU-0008Hy-Gl; Thu, 10 Oct 2024 12:02: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 1syrsU-0002Vv-FA; Thu, 10 Oct 2024 12:02: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 1syrsT-0001GO-Vd; Thu, 10 Oct 2024 12:02:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syrsT-00014F-VP; Thu, 10 Oct 2024 12:02: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=8l8qcXvCdUYL78IFsITh/hxBqiGoOSfdh8JKTAyshtM=; b=gDvsKuhQWrfb4txXPkEFHjRQpV
	HxbRw7bhQNzwKT6czLVx2h+7V3EHc22INmQcdoUGhiPtJyCXiv3bxdRTnGM0d2LBuKk3QmJTmcrbP
	HC0c6mjS/hrCvPgld0fH8BaCsS+eDy/sbpPizkt72dzalF0vyV+bmCQkbpG9ML9MZ6Pw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188041-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188041: 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=2b49ef4503e2c549c166f439cf0dd331d9a8874c
X-Osstest-Versions-That:
    xen=e305256e69b1c943db3ca20173da6ded3db2d252
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 12:02:45 +0000

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

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                  2b49ef4503e2c549c166f439cf0dd331d9a8874c
baseline version:
 xen                  e305256e69b1c943db3ca20173da6ded3db2d252

Last test of basis   188035  2024-10-09 17:04:11 Z    0 days
Testing same since   188041  2024-10-10 09:02:17 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alejandro Vallejo <alejandro.vallejo@cloud.com>
  Andrew Cooper <andrew.cooper3@citrix.com>
  Christopher Clark <christopher.w.clark@gmail.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  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
   e305256e69..2b49ef4503  2b49ef4503e2c549c166f439cf0dd331d9a8874c -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 12:29:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 12:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816083.1230256 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysHs-0007ph-HZ; Thu, 10 Oct 2024 12:29:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816083.1230256; Thu, 10 Oct 2024 12: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 1sysHs-0007pY-E2; Thu, 10 Oct 2024 12:29:00 +0000
Received: by outflank-mailman (input) for mailman id 816083;
 Thu, 10 Oct 2024 12:28: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sysHq-0007oG-VO
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 12:28:59 +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 3863ac35-8703-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 14:28:58 +0200 (CEST)
Received: by mail-oi1-x231.google.com with SMTP id
 5614622812f47-3e41eabddffso502086b6e.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 05:28:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3863ac35-8703-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728563336; x=1729168136; 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=wVr2tzjp7mndwbJzY9Kp8a1hGwAvtSwRwSWeTlIqfNA=;
        b=X4S9hbhZXOnZ0Bo07aJBLYr2NQVojq3Joy3Fn5ohsoaWKy/KnCKnYYLCqZNfXYQWtU
         HF3abXrVAmWCbKXmUjqymXKLIptRTC1APxq1rbCyIhd2b8e7cepVH6HfxOQXyPXt1mQJ
         fY6n162NWmkcAzaxuVrP22bKDNYb3cEuHlKRk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728563336; x=1729168136;
        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=wVr2tzjp7mndwbJzY9Kp8a1hGwAvtSwRwSWeTlIqfNA=;
        b=paely/Tjqr9kSPZ743xxAxAIOtxM6BCDyFA+MbihKfywQlknfzqSVAFDfZYW8GH8LH
         WTtGLZ64LkAX0MiForaP4hVOXSzdv9fpgP0fadnhG0YsVOpbtrbffzl2npn16TR5P2Ml
         uLpdIVV7waZjo3FYJKegK3MiMMO37cny5UxNamYpEJmCv3H2nciC7pF3dY6Kp5npPrAV
         C8u2Pssgn9ffzFTqaJw1LgDY3EPzKDwR0YbMkm53+0RmzphyalqM0wjgOLaqy0ADecwb
         cnNe7yHfJzNssRcCLTg1Z86rH+iOihkVgxMeYPdfIm2VEPRMkbSgqq4yM514zYkFMxRQ
         VKKw==
X-Gm-Message-State: AOJu0Yx9FwNO/cpP9DA/c4uxRLiW/eOit+DcxK3NtvLJP8zsiShMqNeo
	05O/BbanQys0s4rfCDfc9mWmVt5ZEQNmaRXh/zaO+tmgTMqTFsy7LhaR6NpzRZa9HqQQpVvGkkz
	+CNS7pKD4BrD+vE0U8LTQGz1MSKd/GFSTvnrToA==
X-Google-Smtp-Source: AGHT+IHq7AAWWoKX1+RBP5j6WQHwgCCNE4MfqYWI/STTo0yBAyFuTrrWPI8vrSuiavwgasWj9XfNiIVs/8AoRnFnltk=
X-Received: by 2002:a05:6870:b623:b0:287:81cd:1452 with SMTP id
 586e51a60fabf-288345ac979mr4851272fac.46.1728563336594; Thu, 10 Oct 2024
 05:28:56 -0700 (PDT)
MIME-Version: 1.0
References: <20241004081713.749031-1-frediano.ziglio@cloud.com> <cf65ab1b-c7d6-430f-a747-3fa0185881e6@citrix.com>
In-Reply-To: <cf65ab1b-c7d6-430f-a747-3fa0185881e6@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 10 Oct 2024 13:28:45 +0100
Message-ID: <CACHz=ZguquL7igxUYw=V1tzDjJbHg0UV++WWBjRjcB_DYmx8TQ@mail.gmail.com>
Subject: Re: [PATCH v3 00/19] Update header guards bases on new coding style
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Anthony PERARD <anthony.perard@vates.tech>, 
	Juergen Gross <jgross@suse.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>, 
	Paul Durrant <paul@xen.org>, Tim Deegan <tim@xen.org>, 
	Christopher Clark <christopher.w.clark@gmail.com>, Ross Lagerwall <ross.lagerwall@citrix.com>, 
	Tamas K Lengyel <tamas@tklengyel.com>, Alexandru Isaila <aisaila@bitdefender.com>, 
	Petre Pircalabu <ppircalabu@bitdefender.com>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
	Lukasz Hawrylko <lukasz@hawrylko.pl>, =?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>, 
	Doug Goldstein <cardoe@cardoe.com>, Shawn Anastasio <sanastasio@raptorengineering.com>, 
	Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, 
	Connor Davis <connojdavis@gmail.com>, Dario Faggioli <dfaggioli@suse.com>, 
	George Dunlap <gwd@xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 10, 2024 at 12:26=E2=80=AFPM Andrew Cooper
<andrew.cooper3@citrix.com> wrote:
>
> On 04/10/2024 9:16 am, Frediano Ziglio wrote:
> > Frediano Ziglio (19):
> >   xen: Update header guards - Generic
> >   xen: Update header guards - X86
> >   xen: Update header guards - ACPI
> >   xen: Update header guards - ARGO
> >   xen: Update header guards - ARM
> >   xen: Update header guards - Device tree
> >   xen: Update header guards - EFI
> >   xen: Update header guards - HYPFS
> >   xen: Update header guards - Intel TXT
> >   xen: Update header guards - I/O MMU
> >   xen: Update header guards - Kconfig
> >   xen: Update header guards - KEXEC
> >   xen: Update header guards - Live patch
> >   xen: Update header guards - PPC 64
> >   xen: Update header guards - RISC-V
> >   xen: Update header guards - Scheduling
> >   xen: Update header guards - VM event, mem access, monitor
> >   xen: Update header guards - VPCI
> >   xen: Update header guards - XSM/Flask
>
> This scheme is under dispute within the core maintainership.  One thing
> it has highlighted is that the MISRA identifier-length limit isn't being
> correctly enforced in Eclair right now.
>
> Please do not continue with this any further at this juncture.
>
> ~Andrew

No problems, I'll keep the branch and scripts waiting for correction
to our CODING_STYLE that are technically correct and agreed.
In the meantime, I would suggest to rollback the CODING_STYLE commit
about it, specifically commit a7201c021174efc908d939079db5bb2f89962a0d
"CODING_STYLE: header file guard naming rules".


Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 12:29:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 12:29:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816080.1230245 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysHb-0007MR-8J; Thu, 10 Oct 2024 12:28:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816080.1230245; Thu, 10 Oct 2024 12:28: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 1sysHb-0007MJ-5n; Thu, 10 Oct 2024 12:28:43 +0000
Received: by outflank-mailman (input) for mailman id 816080;
 Thu, 10 Oct 2024 12:28: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 1sysHa-0007M9-A9; Thu, 10 Oct 2024 12:28: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 1sysHa-0002v8-5T; Thu, 10 Oct 2024 12:28: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 1sysHZ-0001r9-Mt; Thu, 10 Oct 2024 12:28:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sysHZ-0001oh-M7; Thu, 10 Oct 2024 12:28: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=CGOzZRbn0SsqgOfoOJMw12B3n4JHV3iJkTaPzisbiFA=; b=uw5LY3ynuMBW99IKNkhHE5TEnY
	Mmn69z4YzQ+pZ/9BYz3GVdkuOmxUicUQ6mzBybhQ5Nye4mnuZ6Y8kTljWjmP4R9onyJigZ7p7lxws
	PYn6T/DI0XJ28QCRfgN2GbUGN8Ay3bpF3veCA6I2MACG0IjhpZYX071pwaqrP1xwmvlQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188028-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188028: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-shadow:guest-localmigrate/x10: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: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-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-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-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-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2: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-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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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-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-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=75b607fab38d149f232f01eae5e6392b394dd659
X-Osstest-Versions-That:
    linux=5b7c893ed5ed0fc1cbe28c0e3296a6fb45698486
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 12:28:41 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-shadow 20 guest-localmigrate/x10 fail pass in 188042-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188017
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188017
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188017
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188017
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188017
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188017
 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-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-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-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          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-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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                75b607fab38d149f232f01eae5e6392b394dd659
baseline version:
 linux                5b7c893ed5ed0fc1cbe28c0e3296a6fb45698486

Last test of basis   188017  2024-10-08 18:41:44 Z    1 days
Testing same since   188028  2024-10-09 10:12:51 Z    1 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  David Vernet <void@manifault.com>
  Devaansh-Kumar <devaanshk840@gmail.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Tejun Heo <tj@kernel.org>
  Vishal Chourasia <vishalc@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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   5b7c893ed5ed..75b607fab38d  75b607fab38d149f232f01eae5e6392b394dd659 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 12:45:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 12:45:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816098.1230266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysY8-0008CL-Rn; Thu, 10 Oct 2024 12:45:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816098.1230266; Thu, 10 Oct 2024 12: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 1sysY8-0008CE-Ok; Thu, 10 Oct 2024 12:45:48 +0000
Received: by outflank-mailman (input) for mailman id 816098;
 Thu, 10 Oct 2024 12:45: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=r4X1=RG=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1sysY7-0008C5-DC
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 12:45:47 +0000
Received: from fout-a8-smtp.messagingengine.com
 (fout-a8-smtp.messagingengine.com [103.168.172.151])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8f466f7c-8705-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 14:45:42 +0200 (CEST)
Received: from phl-compute-04.internal (phl-compute-04.phl.internal
 [10.202.2.44])
 by mailfout.phl.internal (Postfix) with ESMTP id 7EC6B13804EA;
 Thu, 10 Oct 2024 08:45:41 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-04.internal (MEProxy); Thu, 10 Oct 2024 08:45:41 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 10 Oct 2024 08:45:39 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f466f7c-8705-11ef-99a2-01e77a169b0f
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=1728564341;
	 x=1728650741; bh=L/H89HNNJ4FeSrRJKvOK8MzlFC+DI4qB3f3nzqw95fg=; b=
	f0xm3r6cQlhPBX/ecIrqVOB+exGR3i1rmh62w4McZ3T52GeiPToTmKKogNvDUxWh
	udFSrVoHXtYYTA8CbpvXm46g/M3jeDp938QFGcnrVJiEb2HrP/iHm32UZEXCWhPF
	hKSaGJKEMDXPQLvqsSfvmfCKIWiR852TUqxsa/R0EV/V5W0JV/pzGIC6XPGb8BnG
	hUCrU5jd9EYr8hAoV/om37/iqZGuVRP3AZd9cxXXzumzX3EovXWeibKnm5fP6J7H
	RsG/LgOiYNwyUo9j0YtqSC7xNRWbRzgXsShdq/z2AUKodIarXqxfNhYkDBL+nTwv
	VX/J5/PITM/4VyMVC7DoYw==
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=1728564341; x=1728650741; bh=L/H89HNNJ4FeSrRJKvOK8MzlFC+D
	I4qB3f3nzqw95fg=; b=aUkUBLRvcALnBvY9Cer0qkAE1gOtkxxR8ZL36VUc4S1Z
	hRvYjNVzpr0mdsbD5jJet49xE49/zNMzGw62z/3Mny2ZpIlj8I3jPUmb7UXZOR45
	nLZK5b6y+R9/Wb7X85TXZjc3c6i5+3S/8CAdGoN6yz0AcJv+/ApdkmC341VHIhod
	fE9hhkwe8LdJNrb4ZdP89pQq5NDIU0ZzlNXouL7zZPTb3JPbInrVY1OYmvybmRnW
	UQD/MzME0h+N+LNJOX6NKxOUryxMQ8jD0SaVp3BePxs4etBAMswmdKSyzSvfS1QM
	+jFVI7+/PhZa2r5PxIgqvn9QvNAk/5AsTZ+Gium1VA==
X-ME-Sender: <xms:dMwHZ1fL0Iq1i58umSOgWnZOGNFWX9vitycpkAuZgEFAf8tfssR-XQ>
    <xme:dMwHZzPawN-Ss71XmOkHZKopIPvPI4_edaynJKBSQPP3c6NlPKNJoKXdhYA_vMa4T
    wtc9XZIKgz-OA>
X-ME-Received: <xmr:dMwHZ-gRi-EFX63x3qPsxOC6EZomkGH_KCKGFIoY1X-Kw9Qc-AVM8BOMtGebIX4QLySejsANakm08gf3OvDIogPIPyS9RxkRPQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdefhedgheekucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohephedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprhhoghgv
    rhdrphgruhestghithhrihigrdgtohhmpdhrtghpthhtohepjhgsvghulhhitghhsehsuh
    hsvgdrtghomhdprhgtphhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghithhrihig
    rdgtohhmpdhrtghpthhtohepgigvnhhprhhojhgvtghtseihmhihrdgsvgdprhgtphhtth
    hopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrgh
X-ME-Proxy: <xmx:dMwHZ-97EPFpLnCc-OJqtlttphSRzygBEM8ntaL4DirwArTICf6Y7Q>
    <xmx:dMwHZxtD9THEeRoHyvZ3oJbPttDpB1OsgYc27kpGtsWOisxxNN6S-A>
    <xmx:dMwHZ9FwgmcEsn3xuGLfnh5TYo3_cwjVINraZtycjMuSKmz9ylC_JQ>
    <xmx:dMwHZ4NgL_VM2zfr2JFzoUdt95RrXJZDFz2grwaV5bOfnbZCyPj49A>
    <xmx:dcwHZ7Jc7awB1rWpO_3IX-yim6irwbeiNQrCUtYyok_cPPdtHsm4_D5n>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 10 Oct 2024 14:45:37 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
Message-ID: <ZwfMcfT6oN2PAjcR@mail-itl>
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
 <ZwZlVlU2nHkBedyo@macbook.local>
 <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>
 <ZwZtR6ZTl2gUWN2T@macbook.local>
 <34f73ec6-0e10-41f4-8894-c367264afefc@suse.com>
 <ZwaHAqVGeeJNu4Dp@macbook.local>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="AoL969Bsqkrm68QS"
Content-Disposition: inline
In-Reply-To: <ZwaHAqVGeeJNu4Dp@macbook.local>


--AoL969Bsqkrm68QS
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 10 Oct 2024 14:45:37 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU

On Wed, Oct 09, 2024 at 03:37:06PM +0200, Roger Pau Monn=C3=A9 wrote:
> On Wed, Oct 09, 2024 at 02:09:33PM +0200, Jan Beulich wrote:
> > On 09.10.2024 13:47, Roger Pau Monn=C3=A9 wrote:
> > > On Wed, Oct 09, 2024 at 01:28:19PM +0200, Jan Beulich wrote:
> > >> On 09.10.2024 13:13, Roger Pau Monn=C3=A9 wrote:
> > >>> I also think returning an error when no device in the IVMD range is
> > >>> covered by an IOMMU is dubious.  Xen will already print warning
> > >>> messages about such firmware inconsistencies, but refusing to boot =
is
> > >>> too strict.
> > >>
> > >> I disagree. We shouldn't enable DMA remapping in such an event. Wher=
eas
> > >=20
> > > I'm not sure I understand why you would go as far as refusing to
> > > enable DMA remapping.  How is a IVMD block having references to some
> > > devices not assigned to any IOMMU different to all devices referenced
> > > not assigned to any IOMMU?  We should deal with both in the same
> > > way.
> >=20
> > Precisely because of ...
> >=20
> > > If all devices in the IVMD block are not covered by an IOMMU, the
> > > IVMD block is useless.
> >=20
> > ... this. We simply can't judge whether such a useless block really was
> > meant to cover something. If it was, we're hosed. Or maybe we screwed up
> > and wrongly conclude it's useless.
>=20
> The same could be stated about devices in a IVMD block that are not
> assigned to an IOMMU: it could also be Xen that screwed up and wrongly
> concluded they are not assigned to an IOMMU.
>=20
> > >  But there's nothing for Xen to action, due to
> > > the devices not having an IOMMU assigned.  IOW: it would be the same
> > > as booting natively without parsing the IVRS in the first place.
> >=20
> > Not really, no. Not parsing IVRS means not turning on any IOMMU. We
> > then know we can't pass through any devices. We can't assess the
> > security of passing through devices (as far as it's under our control)
> > if we enable the IOMMU in perhaps a flawed way.
> >=20
> > A formally valid IVMD we can't make sense of is imo no different from
> > a formally invalid IVMD, for which we would return ENODEV as well (and
> > hence fail to enable the IOMMU). Whereas what you're suggesting is, if
> > I take it further, to basically ignore (almost) all errors in table
> > parsing, and enable the IOMMU(s) in a best effort manner, no matter
> > whether that leads to a functional (let alone secure [to the degree
> > possible]) system.
>=20
> No, don't take it further: not ignore all errors, I think we should
> ignore errors when the device in the IVMD is not behind an IOMMU.  And
> I think that should apply globally, regardless of whether all devices
> in the IVMD block fall in that category.
>=20
> That will bring AMD-Vi inline with VT-d RMRR, as from what I can see
> acpi_parse_one_rmrr() doesn't care whether the device scope in the
> entry is behind an IOMMU or not, or whether the whole RMRR doesn't
> effectively apply to any device because none of them is covered by an
> IOMMU.
>=20
> > What I don't really understand is why you want to relax our checking
> > beyond what's necessary for the one issue at hand.
>=20
> This issue has been reported to us and we have been able to debug.
> However, I worry what other malformed IVMD blocks might be out there,
> for example an IVMD block that applies to a single device (type 21h),
> but such single device doesn't exist (or it's not behind an IOMMU).
> Maybe next time we simply won't get a report, the user will try Xen,
> see it's not working and move to something else.
>=20
> I've taken a quick look at Linux, and when parsing the IVMD blocks
> there's no checking that referred devices are behind an IOMMU, the
> regions are just added to a list.

It seems Jan's concern is about passthrough of a device that Xen
incorrectly ignored IVMD entry for. But that doesn't really happen - if
the device doesn't exist (at least according to Xen) or isn't behind an
IOMMU (at least according to Xen), it surely won't be used with
passthorugh, no? So, it should be safe to not fail on either of those
cases, as long as given IVMD is applied to other devices (that are
eligible for passthrough) in its range.

Just my 2c.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcHzHEACgkQ24/THMrX
1yzZCQgAhEvz5KuLYLiZc3E8uuATRrPjuKzpsvrDCwM2Dr2w1+ERECvnr/rWDSNf
vbhaS3Ba1DGp+IRJZlUnf4jU41kPM2JPhVsxs4llPKl0PCyE2Y3dnhyQYsI0iQBN
iL8EMfE+XBgUZUuJ9KIQS+cCOJ56H+I5NN9/77acTL5I0Z301o02GVzzpCq0Bu0o
im1Ti7owQvmUNjpfO81uLBvTCBx+AaU//JDl8pnLOrBgXE+64hKwTzpImOkeEuK4
0k0y6x1O+doRYOXCAgyc91Qje0R4vBW3UfoHabwpdhCYm3QthrJMKBcnd1m7MqNF
vrn7UqLNi/xGY+GfhWZIYef+f+Efuw==
=slVL
-----END PGP SIGNATURE-----

--AoL969Bsqkrm68QS--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 12:49:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 12:49:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816108.1230276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysbd-0004Nt-DE; Thu, 10 Oct 2024 12:49:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816108.1230276; Thu, 10 Oct 2024 12:49: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 1sysbd-0004Nm-Ac; Thu, 10 Oct 2024 12:49:25 +0000
Received: by outflank-mailman (input) for mailman id 816108;
 Thu, 10 Oct 2024 12:49: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=O2aS=RG=bounce.vates.tech=bounce-md_30504962.6707cd51.v1-af092a954b1b46f2bf0a9f88ba07fd3e@srs-se1.protection.inumbo.net>)
 id 1sysbc-0004Ku-Lu
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 12:49:24 +0000
Received: from mail186-1.suw21.mandrillapp.com
 (mail186-1.suw21.mandrillapp.com [198.2.186.1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 12532b50-8706-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 14:49:22 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-1.suw21.mandrillapp.com (Mailchimp) with ESMTP id 4XPV2923PqzBsV1Th
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 12:49:21 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 af092a954b1b46f2bf0a9f88ba07fd3e; Thu, 10 Oct 2024 12: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
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 12532b50-8706-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728564561; x=1728825061;
	bh=qIhGHL9rPMAbYbiNvwoD7H0UW2iUiwMPXQwmq7Zmo6o=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=1cPlnPzBrIp1CBUzeAF6wHP6GxhOVFHoW8wUln/BCWrTvpfoMJPdH85FNbh4BsOW3
	 YEnN5NLDyAFexg/jDXxJ7SEIazO+nKguhhB0jTfIqHC51JeZcnJvBpLOOHIU4lAX6D
	 3xMAEKCunVYVnYkLvqGsG+C9Ll4amxbzzOwLZlqAuWsu/1+6V4Cqsj5C3GZoOyFOXH
	 Vby53mFhNOPM5Iy1BKqevQBYFiGF3p+bJAH5CKLCDGgYn+q1e5Pge3MeRUo798GlUj
	 9RXJEPTafr6PM59RnNgI/ZLLZFNweqDhYgiu4vDvFQM1xIVSBvpass4UB3M0i0EnKM
	 qnTJlZuIL4pIQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728564561; x=1728825061; i=anthony.perard@vates.tech;
	bh=qIhGHL9rPMAbYbiNvwoD7H0UW2iUiwMPXQwmq7Zmo6o=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=tFBqIx8FEYqkQXVHxP60VT1MMHUxhjApjrS3tYqvu1h8DY/VsFDlghpLUqxaFkHYN
	 omqT2/+8i2dk2eN/1mReQ0bH0Hkg41vJ19yuXLTL4sEEzZ5wuFOGbjQRQSDRoOo/sc
	 FYjj/88gxH+7Fdli6Mwucxm5UNBBcMen8ODlQy3RqZEB9uxI2a9tzGtgj5VfouX6f/
	 4B/G97PbUCtrGbMA+Nxdq8ob6eqZbto21JH+3/kotdMYPeC5oLsUFbnpx3OQYIW6hQ
	 fCVhjl4Bgve8uVnPPDzl6XAMMkze8gowt17hZaut10gjj0oYSIlCCaCvpiFhhh7TRT
	 eNP0+p+RUJ9Dg==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v2]=20stubdom:=20add=20fine=20grained=20library=20config=20items=20to=20Mini-OS=20configs?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728564560541
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Samuel Thibault <samuel.thibault@ens-lyon.org>
Message-Id: <ZwfNUKIXp44loWTD@l14>
References: <20241010111946.22173-1-jgross@suse.com>
In-Reply-To: <20241010111946.22173-1-jgross@suse.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.af092a954b1b46f2bf0a9f88ba07fd3e?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241010:md
Date: Thu, 10 Oct 2024 12:49:21 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Thu, Oct 10, 2024 at 01:19:46PM +0200, Juergen Gross wrote:
> Today Mini-OS can only be configured to use all or none Xen library.
> In order to prepare a more fine grained configuration scheme, add per
> library config items to the Mini-OS config files.
> 
> As some libraries pull in others, the config files need to be
> extended at build time to reflect those indirect library uses.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V2:
> - rename BUILD_config to GEN_CONFIG (Anthony PERARD)
> - rename generated config files to *.gen.cfg (Anthony PERARD)
> - don't write config data to file in make macro (Anthony PERARD)
> - remove no longer needed $(CURDIR)/ from prerequisites (Anthony PERARD)

Looks good to me.

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 12:57:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 12:57:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816116.1230290 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysjG-0008Ca-5f; Thu, 10 Oct 2024 12:57:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816116.1230290; Thu, 10 Oct 2024 12:57: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 1sysjG-0008CT-2l; Thu, 10 Oct 2024 12:57:18 +0000
Received: by outflank-mailman (input) for mailman id 816116;
 Thu, 10 Oct 2024 12:57: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=T2t6=RG=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sysjE-00084R-RI
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 12:57:16 +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 2c74e85d-8707-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 14:57:15 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9950d27234so131959366b.1
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 05:57:15 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80deb5bsm85650366b.184.2024.10.10.05.57.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 05:57:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c74e85d-8707-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728565035; x=1729169835; 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=RweS2iE+qgiFTmVH6l2MVyIGdgJqqWloo7IiMvnmYjU=;
        b=UZHa5F3x57pFbdXSfyL1yXmDneu63g4dXG99rk4bnnWPVc6gSpCVqP6ZF++EHk7ylL
         5aytGWqXpNx6j1RoQ8BwtcRDDgYOvHQ7AZUu6vBXNfo5k+zdLep/9AWA568X64UQlghU
         8VTxseJb9Ytdo+m3IBcq8d43D2oWnbOM90jiA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728565035; x=1729169835;
        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=RweS2iE+qgiFTmVH6l2MVyIGdgJqqWloo7IiMvnmYjU=;
        b=gd0CnCDyfyLQbU5yOPAuy7I2oGWQ/ANDjxoFOxWq3rheMVWDEa7MStty3TP2G1l1eM
         B0+rlLjuwHKyW4YuQ7Q2oTDEVPeEe7HFpY/XhneubK1yAxBitS2gIFIMpVY9QBMHwtbx
         vAteLKJneR7iO90QXSBfhR+oHl8bC79VvLXA8ze/itzIjmQy2cqHVsDmilkQhbVTnzis
         TLdrC5mA2bf1ddZS1Fe9ifkkjgdDY0m8z325RugzaKHt/oKtnCNXzdSb0UvTFRRDA7Nn
         oq+VTBsY3x2txHp9aC1S9TejCC3NYleom+aYj9uDb2GV4ElyTZq9Soq58vhCytqyPs4f
         miGg==
X-Forwarded-Encrypted: i=1; AJvYcCW+hUu1wZPzXaE67s/0i9ZRCBpXHqq18xGSV9M+OFPvRrFuHvQWINGrxl0oYehpFyoRpelm/Iyxet8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxHCrRTQaRv+uBzdcQxjm2SZawnaiygDAirtp4VLBKcRPW1W6h5
	cNUtNZJSrPb3vRbAco64FUHEyFYJGRzTS5XdgpIUNYqwGCEq2bvW7Y6etKiqkM4=
X-Google-Smtp-Source: AGHT+IFtjBSo3rZbs/LCBQPmGi0tuIjKBBKAtkYFW+7j6M3750s4gGsvUBoMsGpEfgxVQcAI4PyRWQ==
X-Received: by 2002:a17:907:6094:b0:a99:8a0f:3c14 with SMTP id a640c23a62f3a-a998d313419mr509569266b.42.1728565034672;
        Thu, 10 Oct 2024 05:57:14 -0700 (PDT)
Message-ID: <c7b0092f-9e47-47ae-9a7f-fe28c49c82a3@citrix.com>
Date: Thu, 10 Oct 2024 13:57:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/6] x86/boot: Use trampoline_phys variable directly
 from C code
To: Frediano Ziglio <frediano.ziglio@cloud.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: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
 <20241007141539.1899350-6-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241007141539.1899350-6-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 3:15 pm, Frediano Ziglio wrote:
> No more need to pass from assembly code.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
> Changes since v1:
> - split the 2 variable changes into 2 commits.
> ---
>  xen/arch/x86/boot/head.S  | 13 ++++---------
>  xen/arch/x86/boot/reloc.c |  9 ++++++---
>  2 files changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> index ade2c5c43d..32b658fa2b 100644
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -510,22 +510,17 @@ trampoline_setup:
>          mov     %esi, sym_esi(xen_phys_start)
>          mov     %esi, sym_esi(trampoline_xen_phys_start)
>  
> -        /* Get bottom-most low-memory stack address. */
> -        mov     sym_esi(trampoline_phys), %ecx
> -        add     $TRAMPOLINE_SPACE,%ecx
> -
> +        /* Boot video info to be filled from MB2. */
>  #ifdef CONFIG_VIDEO
> -        lea     sym_esi(boot_vid_info), %edx
> +        lea     sym_esi(boot_vid_info), %ecx
>  #else
> -        xor     %edx, %edx
> +        xor     %ecx, %ecx
>  #endif
>  
>          /* Save Multiboot / PVH info struct (after relocation) for later use. */
> -        push    %edx                /* Boot video info to be filled from MB2. */
>          mov     %ebx, %edx          /* Multiboot / PVH information address. */
> -        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
> +        /*      reloc(magic/eax, info/edx, video/stk) using fastcall. */
>          call    reloc
> -        add     $4, %esp

Sorry - I was expecting you split the patches the other way around.

If you drop video first, then trampoline second, there's no churn
changing video from being on the stack to being in ecx.

As it stands the "video/stk" needs to become "video/ecx".

>  
>  #ifdef CONFIG_PVH_GUEST
>          cmpb    $0, sym_esi(pvh_boot)
> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> index 94b078d7b1..4cca61adec 100644
> --- a/xen/arch/x86/boot/reloc.c
> +++ b/xen/arch/x86/boot/reloc.c
> @@ -19,6 +19,9 @@
>  #include <xen/kconfig.h>
>  #include <xen/multiboot.h>
>  #include <xen/multiboot2.h>
> +#include <xen/page-size.h>
> +
> +#include <asm/trampoline.h>
>  
>  #include <public/arch-x86/hvm/start_info.h>
>  
> @@ -346,10 +349,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
>  }
>  
>  /* SAF-1-safe */
> -void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
> -            uint32_t video_info)
> +void *reloc(uint32_t magic, uint32_t in, uint32_t video_info)
>  {
> -    memctx ctx = { trampoline };
> +    /* Get bottom-most low-memory stack address. */
> +    memctx ctx = { (uint32_t)((long)trampoline_phys + TRAMPOLINE_SPACE) };

You don't need any casts here.  The result can't exceed 1<<20.


Again, I agree this is a correct transform of the code, but the comment
you've moved is incorrect AFAICT, and conflicts with

typedef struct memctx {
    /*
     * Simple bump allocator.
     *
     * It starts from the base of the trampoline and allocates downwards.
     */
    uint32_t ptr;
} memctx;

which is probably my fault, but needs resolving.

What does the trampoline layout actually look like?  Can we see about
correcting the comments?

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 12:59:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 12:59:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816122.1230300 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syslC-0002n6-Gd; Thu, 10 Oct 2024 12:59:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816122.1230300; Thu, 10 Oct 2024 12:59: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 1syslC-0002mz-DR; Thu, 10 Oct 2024 12:59:18 +0000
Received: by outflank-mailman (input) for mailman id 816122;
 Thu, 10 Oct 2024 12:59: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=T2t6=RG=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1syslB-0002mr-4Y
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 12:59:17 +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 748f2970-8707-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 14:59:16 +0200 (CEST)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2fad0f66d49so12911931fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 05:59:16 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c9370d218asm750857a12.8.2024.10.10.05.59.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 05:59:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 748f2970-8707-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728565156; x=1729169956; 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=egW82hkZYuiIa/T2pK5buacq+fdKF4ZmbJYtyRbFh+c=;
        b=gDZuxr/nIT+rbEhNWDdacVJt0NdNiSUomt/L6MDfddFm75R8MxrB3AkQ8MRD4i3bdj
         W9BEzzYFML7qJyUnZ8NJOqm6rHuBzXQ7fZFz8iZbn0GYztrsA2z/nQQcBIbkBuhVzyZP
         K53ftB58ihhJlGyE+pz3kEu87rESFIAa6TXnQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728565156; x=1729169956;
        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=egW82hkZYuiIa/T2pK5buacq+fdKF4ZmbJYtyRbFh+c=;
        b=oM3DDg6KGB01asEW5PdZhWHFJG6I41rj33nkLyjCCZV9PWZvwc8ggMH4bkSGJRDDyr
         Q6zrPSYgatrjMHSiq6RTwF0LR/L/rCL1VKhpTGL8P+gewwNv5D9uuUyfGZN907GJVNPj
         4GLjBe1ZM73GjlzKQsuCywEalPq/ZgRrUtC4dyXBCap0v/veYHBCrQ7LVQ8jYR/PbTp7
         wXz72mX4Na58pzmHAYsPr9RyfaJhZ/zss8XudeGycSBKfSERGtyYFSTUnuCnyVDc/q5P
         5YKiOMeRdiNOSofLTeFP7GSq0h2x7KmqH7Pq8c5zM7KuD7n9XwO1b+eZus7dvEbEqiuE
         nz6g==
X-Gm-Message-State: AOJu0YzcxnksFjwCEFG9Gryow5OfyipZDlarAbDrB8xIi/gqHRcpbrS6
	2RCWnzaxqlZaEyh16hMIjipzwbgjOBATxpac+SuJR/rk6DKD6+fg0jM/RMPwgIbznGgxowM8Q7e
	VuM0=
X-Google-Smtp-Source: AGHT+IEc5r6jYpR9GHybT8OzR9g2rUNssRIgxil1g4e3/7exC8Mqvng92addLMQLcXDjEhulIJzleQ==
X-Received: by 2002:a2e:e01:0:b0:2f7:4e8c:9bfa with SMTP id 38308e7fff4ca-2fb187ce906mr30396651fa.33.1728565155485;
        Thu, 10 Oct 2024 05:59:15 -0700 (PDT)
Message-ID: <f1d002ff-a67e-4c63-a336-69e250e66bee@citrix.com>
Date: Thu, 10 Oct 2024 13:59:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] stubdom: add fine grained library config items to
 Mini-OS configs
To: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
References: <20241010111946.22173-1-jgross@suse.com> <ZwfNUKIXp44loWTD@l14>
Content-Language: en-GB
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: <ZwfNUKIXp44loWTD@l14>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10/10/2024 1:49 pm, Anthony PERARD wrote:
> On Thu, Oct 10, 2024 at 01:19:46PM +0200, Juergen Gross wrote:
>> Today Mini-OS can only be configured to use all or none Xen library.
>> In order to prepare a more fine grained configuration scheme, add per
>> library config items to the Mini-OS config files.
>>
>> As some libraries pull in others, the config files need to be
>> extended at build time to reflect those indirect library uses.
>>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
>> ---
>> V2:
>> - rename BUILD_config to GEN_CONFIG (Anthony PERARD)
>> - rename generated config files to *.gen.cfg (Anthony PERARD)
>> - don't write config data to file in make macro (Anthony PERARD)
>> - remove no longer needed $(CURDIR)/ from prerequisites (Anthony PERARD)
> Looks good to me.
>
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Same grammar comment as v1.  I'll tweak on commit.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 13:02:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 13:02:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816127.1230310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysoJ-0004IG-TV; Thu, 10 Oct 2024 13:02:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816127.1230310; Thu, 10 Oct 2024 13: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 1sysoJ-0004I9-Pj; Thu, 10 Oct 2024 13:02:31 +0000
Received: by outflank-mailman (input) for mailman id 816127;
 Thu, 10 Oct 2024 13:02: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=T2t6=RG=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sysoI-0004I2-2b
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 13:02: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 e6f3e65f-8707-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 15:02:28 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a93c1cc74fdso152093366b.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 06:02:28 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80cb013sm85628666b.131.2024.10.10.06.02.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 06:02:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e6f3e65f-8707-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728565348; x=1729170148; 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=jUUDwfDCTyi1r3OX/mIwueEf2G73mU1uF49QlwhrEwA=;
        b=NBTvS8qnUtAVPAWJkatCZa9uyeaIUyLvGvfPv5Hs7+3gJhgnty2r+88bG2VyFiq8PV
         1LEyhYh8EgPx1dWYpS1eVBHAYmYgQXU55KJn1q5cLRYgqgkOT9PDmSyXdl89Vdwo80tg
         rhB7w2Uyu59rvEz/thD+3bhmBoIM2BruO6zWE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728565348; x=1729170148;
        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=jUUDwfDCTyi1r3OX/mIwueEf2G73mU1uF49QlwhrEwA=;
        b=TvyKSbpmRSRvAdJz1KkOgP/iZrwhc5wKjjsvGNZLv5qiGgeOmYr1imlJgUfbuSRViA
         xQTqUAwgizjQnmAYkZmG9uc0oXI850atfBU9CvCe3ivnbAyE2BF20QBOmascG4KRmJbi
         z5C52OoHS9vVkx5WKv50kOZRy6eciwB6BTgyBHSNIXy4WIlUctEPNPIdJBkywvwNYAfe
         LKzTdYcSgNP1CPcVKOgzHuQW/s85A8aK3gfA1r0vgiQegfmY8/VRVX5he4BiskEScI63
         8qjIsgyaMpVoSCqbZKHTo8eJQ6/OyQOUfKSzOtQglWGIBYJPrZv5vDRj1SQ3GZ+2rQf+
         JMtQ==
X-Forwarded-Encrypted: i=1; AJvYcCVcX3dKvTvx4oxrPv4BYwy0gsg6BrNkpVbGIB94SKUF+qp03DKMy9r1+YfKagbNcIePWUW/JJH85ms=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7FMFMQQ1+UGBx/6A5Ix7aDEgkvEZg5lJLHNHK0MavwZ91YQKE
	g/DYU59AyIxgar/tOsHu86WqalruY1uEkEHc6oEk/2gzaWsuUNopC+teoTNRsLxuIQ00TeZsGSA
	U/WE=
X-Google-Smtp-Source: AGHT+IGmzTHQ+eUq9wu+59MWmJo57YxmIY8z1P8AzFksk+0wbKlfBRJUJTUuY21ZFX3ySUo52NUJ7A==
X-Received: by 2002:a17:907:9724:b0:a8d:3338:a48c with SMTP id a640c23a62f3a-a998d11a538mr526054266b.7.1728565347289;
        Thu, 10 Oct 2024 06:02:27 -0700 (PDT)
Message-ID: <2c52694d-0c9a-44d5-b01b-f23d6094f93a@citrix.com>
Date: Thu, 10 Oct 2024 14:02:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 6/6] x86/boot: Use boot_vid_info variable directly from
 C code
To: Frediano Ziglio <frediano.ziglio@cloud.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: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
 <20241007141539.1899350-7-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241007141539.1899350-7-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 3:15 pm, Frediano Ziglio wrote:
> No more need to pass from assembly code.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

This patch is fine now.

As noted in patch 5, there will be less net churn if the order was
swapped.  (As it stands, there's at least one correction in this patch
as a knock-on effect.)

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 13:05:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 13:05:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816135.1230320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysr0-0004u0-Cb; Thu, 10 Oct 2024 13:05:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816135.1230320; Thu, 10 Oct 2024 13:05: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 1sysr0-0004tt-9s; Thu, 10 Oct 2024 13:05:18 +0000
Received: by outflank-mailman (input) for mailman id 816135;
 Thu, 10 Oct 2024 13:05: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sysqy-0004tl-HX
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 13:05:16 +0000
Received: from mail-oi1-x230.google.com (mail-oi1-x230.google.com
 [2607:f8b0:4864:20::230])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 49bf2c54-8708-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 15:05:14 +0200 (CEST)
Received: by mail-oi1-x230.google.com with SMTP id
 5614622812f47-3e4d624ac28so584353b6e.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 06:05:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49bf2c54-8708-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728565513; x=1729170313; 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=QYsL2RBidWuogQe1LgUGGqv998IRLRLo33BmImMgceE=;
        b=UsEsY9igly9g8IZiOi5SQF91LMs2NOpsy4I6sCw0UuZpF97qVOpcd2FlFsQ/r9pFTE
         UQThc2YaUt8wWxX+zb2ibm4jKZPW1sh+s7oQkeuFWGgOnQ3l/EbViXyM8omhO/FvAo8o
         W8Gc94SLUYxjvg3jkYPN70alosaxQYp+bKZuA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728565513; x=1729170313;
        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=QYsL2RBidWuogQe1LgUGGqv998IRLRLo33BmImMgceE=;
        b=TT3oFumREwOBblxrvC9RJU40MSJd/OtICMTbrPkKIG/gphAaWFAijiYNaDZO/5Jcy2
         oOWlskdcN1e8cvTjyk8xFnzXXyMyTPLB5p2iRZVPEU3ycLInYn8SVHr2dEOhIjSJsXHP
         wVbjoTVR683FmpxAezvd8/19uqc71QnlEBFidnYv6DddA/gJeX5aCVdOWYBpEauh1LR9
         vsyN6MTlVE0l5RU4PvXGuCDhQraPC9hwHE1uh4b8JiH1vdoTohf+DOuSUrEBmQaX9qOI
         3oEZTl3YbDifljEtXyMUG2FggOf3Uj1c4fpmLYnRpbmdCvQZnIkKXgcf5XPvc9MkN3cC
         +gAQ==
X-Gm-Message-State: AOJu0YwBEG+yTIpjCFSeEpvz8f91I8+rguzIOrVjwSRyu+1O9KUHVEDt
	5uB7VwUkqitDEYOUWyNQLeoFNY2mChoMtGgo5jrQFz4GKqapnDuQs1Qu7U3KdMcNDlVAGdVC9XP
	ItOR7p6Z2a9yDZMe4y8WlnUEsz8ItKTb7B3fs0A==
X-Google-Smtp-Source: AGHT+IEzxWBDiFbeg2aN+UhUgvd+hvFam2bnYQORq3j9ILq6H30h8rWmKh3UMDmemQjmnkbSAqpF5vJIy3cKc8SWadI=
X-Received: by 2002:a05:6870:8926:b0:278:234e:6e42 with SMTP id
 586e51a60fabf-288344d5a54mr4175488fac.36.1728565513189; Thu, 10 Oct 2024
 06:05:13 -0700 (PDT)
MIME-Version: 1.0
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
 <20241007141539.1899350-6-frediano.ziglio@cloud.com> <c7b0092f-9e47-47ae-9a7f-fe28c49c82a3@citrix.com>
In-Reply-To: <c7b0092f-9e47-47ae-9a7f-fe28c49c82a3@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 10 Oct 2024 14:05:01 +0100
Message-ID: <CACHz=Zh35SLuTcU-GLM56MHCFFPjyfJ0MWB=72h0_xh6q1vUEQ@mail.gmail.com>
Subject: Re: [PATCH v2 5/6] x86/boot: Use trampoline_phys variable directly
 from C code
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 10, 2024 at 1:57=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> On 07/10/2024 3:15 pm, Frediano Ziglio wrote:
> > No more need to pass from assembly code.
> >
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > ---
> > Changes since v1:
> > - split the 2 variable changes into 2 commits.
> > ---
> >  xen/arch/x86/boot/head.S  | 13 ++++---------
> >  xen/arch/x86/boot/reloc.c |  9 ++++++---
> >  2 files changed, 10 insertions(+), 12 deletions(-)
> >
> > diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> > index ade2c5c43d..32b658fa2b 100644
> > --- a/xen/arch/x86/boot/head.S
> > +++ b/xen/arch/x86/boot/head.S
> > @@ -510,22 +510,17 @@ trampoline_setup:
> >          mov     %esi, sym_esi(xen_phys_start)
> >          mov     %esi, sym_esi(trampoline_xen_phys_start)
> >
> > -        /* Get bottom-most low-memory stack address. */
> > -        mov     sym_esi(trampoline_phys), %ecx
> > -        add     $TRAMPOLINE_SPACE,%ecx
> > -
> > +        /* Boot video info to be filled from MB2. */
> >  #ifdef CONFIG_VIDEO
> > -        lea     sym_esi(boot_vid_info), %edx
> > +        lea     sym_esi(boot_vid_info), %ecx
> >  #else
> > -        xor     %edx, %edx
> > +        xor     %ecx, %ecx
> >  #endif
> >
> >          /* Save Multiboot / PVH info struct (after relocation) for lat=
er use. */
> > -        push    %edx                /* Boot video info to be filled fr=
om MB2. */
> >          mov     %ebx, %edx          /* Multiboot / PVH information add=
ress. */
> > -        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) =
using fastcall. */
> > +        /*      reloc(magic/eax, info/edx, video/stk) using fastcall. =
*/
> >          call    reloc
> > -        add     $4, %esp
>
> Sorry - I was expecting you split the patches the other way around.
>

I'll do it again.

> If you drop video first, then trampoline second, there's no churn
> changing video from being on the stack to being in ecx.
>
> As it stands the "video/stk" needs to become "video/ecx".
>

I'll take care.

> >
> >  #ifdef CONFIG_PVH_GUEST
> >          cmpb    $0, sym_esi(pvh_boot)
> > diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> > index 94b078d7b1..4cca61adec 100644
> > --- a/xen/arch/x86/boot/reloc.c
> > +++ b/xen/arch/x86/boot/reloc.c
> > @@ -19,6 +19,9 @@
> >  #include <xen/kconfig.h>
> >  #include <xen/multiboot.h>
> >  #include <xen/multiboot2.h>
> > +#include <xen/page-size.h>
> > +
> > +#include <asm/trampoline.h>
> >
> >  #include <public/arch-x86/hvm/start_info.h>
> >
> > @@ -346,10 +349,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_=
in, uint32_t video_out, memctx
> >  }
> >
> >  /* SAF-1-safe */
> > -void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
> > -            uint32_t video_info)
> > +void *reloc(uint32_t magic, uint32_t in, uint32_t video_info)
> >  {
> > -    memctx ctx =3D { trampoline };
> > +    /* Get bottom-most low-memory stack address. */
> > +    memctx ctx =3D { (uint32_t)((long)trampoline_phys + TRAMPOLINE_SPA=
CE) };
>
> You don't need any casts here.  The result can't exceed 1<<20.
>

I'll do

>
> Again, I agree this is a correct transform of the code, but the comment
> you've moved is incorrect AFAICT, and conflicts with
>
> typedef struct memctx {
>     /*
>      * Simple bump allocator.
>      *
>      * It starts from the base of the trampoline and allocates downwards.
>      */
>     uint32_t ptr;
> } memctx;
>
> which is probably my fault, but needs resolving.
>
> What does the trampoline layout actually look like?  Can we see about
> correcting the comments?
>

Can you suggest what I should write?

> ~Andrew

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 13:09:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 13:09:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816146.1230330 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sysuW-0006RO-Ru; Thu, 10 Oct 2024 13:08:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816146.1230330; Thu, 10 Oct 2024 13:08: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 1sysuW-0006RH-Ol; Thu, 10 Oct 2024 13:08:56 +0000
Received: by outflank-mailman (input) for mailman id 816146;
 Thu, 10 Oct 2024 13:08: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=T2t6=RG=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1sysuW-0006RA-0B
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 13:08:56 +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 cd8593ed-8708-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 15:08:55 +0200 (CEST)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-5399041167cso1420026e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 06:08:55 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f06ae5sm86722566b.36.2024.10.10.06.08.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 06:08:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd8593ed-8708-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728565734; x=1729170534; 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=ollZxISCw5jYfWLyYpyG1byZH0qav2ET1C4ncqChL0I=;
        b=qJ9gnVgxiD7kk3yn5ed+hP05+a+OxfG/ymVlXL7McoMokLgQnyukRX0LwDR7elCa/r
         y1nVIJl/YwpewTrVgrnFu7QL0+sp9cQMapY2sMcYPcZ1oygKkTvkzxapaIhodgMcfXKW
         VXkTgnKlplznxVQ1Uc+xs1So/LgRnuWfF32wI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728565734; x=1729170534;
        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=ollZxISCw5jYfWLyYpyG1byZH0qav2ET1C4ncqChL0I=;
        b=eMcDrFQbTa/TikHTsk6FmDygv/3hP4177E0DmAta1vQmWSKeVd0dq8T3qFTuYtqV0T
         HaF1B7U+gjsr/y/b123SVAvAX9POLQj1uSdJowsr0RaambdyLmPNzfTRY7s38nWQDtvQ
         pPRRrsBe+yg/K/LhjG7YQai6RNo79QXF9NWOJDJ31HaH1EeOoVf2F0dd435poCoh4XsE
         ENDSXBjzrLja54IMyIVWsi6or5hvJdBFCkG5JliUobbMp09SQ5nNOxmXKdTqLbUCR+1w
         VIrb6ZOUFt7k2RZEgivGCdKvkDrOilw9HRNz7ObbF5gP2kGlo+8bqyOsERAPdQs7g+rB
         XnkQ==
X-Forwarded-Encrypted: i=1; AJvYcCW8PzG+X0e6baRlqeVfP32CvF03OQeWRvdt+rVOPkil8vd6loXvDpCKOx7zg/PBYYhv6tgivK7/UOk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzUbPmkBTE1tFMlxtK4pUIC/xYUOlfsMsLvcHr8WZ0Rp94/g01J
	lyU4ViVDqoIIFuqpNsLd0jy2JxyOk1AwdwM8Vp9/R57p3rsas9hpiHbqDaDHr+4=
X-Google-Smtp-Source: AGHT+IHHiPXf3BFCu0n0zt78gTxq7nViq8o8IHE6Cvg/lwEDn/XFDymHM/zyk3cfWCtnb4cDdL5tJQ==
X-Received: by 2002:a05:6512:12d3:b0:530:e0fd:4a97 with SMTP id 2adb3069b0e04-539c4799486mr5748217e87.0.1728565734417;
        Thu, 10 Oct 2024 06:08:54 -0700 (PDT)
Message-ID: <b8445cb5-8c0f-4aa9-b49a-0ed155b1d19c@citrix.com>
Date: Thu, 10 Oct 2024 14:08:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/6] x86/boot: Reuse code to relocate trampoline
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241007141539.1899350-1-frediano.ziglio@cloud.com>
 <20241007141539.1899350-5-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241007141539.1899350-5-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/10/2024 3:15 pm, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

This patch looks fine now (give or take some knock-on effects from patch 3).

However it probably does need a little more in the way of commit
message.  You're moving the EFI implementation, building it for both 32
and 64bit, and replacing the assembly version.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:04:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:04:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816160.1230345 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sytlv-0005bI-Te; Thu, 10 Oct 2024 14:04:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816160.1230345; Thu, 10 Oct 2024 14: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 1sytlv-0005bB-Ok; Thu, 10 Oct 2024 14:04:07 +0000
Received: by outflank-mailman (input) for mailman id 816160;
 Thu, 10 Oct 2024 14:04: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sytlu-0005b5-MH
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:04:06 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20614.outbound.protection.outlook.com
 [2a01:111:f403:2418::614])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8152c895-8710-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 16:04:04 +0200 (CEST)
Received: from BL1PR13CA0266.namprd13.prod.outlook.com (2603:10b6:208:2ba::31)
 by CYYPR12MB8870.namprd12.prod.outlook.com (2603:10b6:930:bb::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 14:04:00 +0000
Received: from BN1PEPF00006000.namprd05.prod.outlook.com
 (2603:10b6:208:2ba:cafe::85) by BL1PR13CA0266.outlook.office365.com
 (2603:10b6:208:2ba::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.7 via Frontend
 Transport; Thu, 10 Oct 2024 14:04:00 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN1PEPF00006000.mail.protection.outlook.com (10.167.243.232) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 14:03:59 +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.39; Thu, 10 Oct
 2024 09:03:57 -0500
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.39; Thu, 10 Oct
 2024 09:03:57 -0500
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.39 via
 Frontend Transport; Thu, 10 Oct 2024 09:03:56 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8152c895-8710-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=V3uhzs7T8sYRxj99HDwuO9cnz9R0jDvHwqXnkGkXLxsNhTK3cd5h+ZgDw8L27X7FZlVCS39jLDOjsjnbMjdvEVmGQP1h8hT6oTAa3FVnJl9jqkU5u1NYaak9HQLGQSLuqAS6dtwL2MXgJJEjxUFVexxzhZ6M5dVM7VFOD+1Uciq3JPTvCmOZzq/Ciec0tdeDwPxezeFLKXlWFsFvO7ZQ2UtJbyLGG75rXs5Y4OsP7p/TxxWPV08HB7WmdDf9njfuLxbS+oM6BI2Fuunb/HF+1yP1fLdz+UB7hZBAEvBlD1VH8W9/YMyoJJho+L9Ngx+CmuSRf+mAR3f0du3ymmhlbw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=VCvFWrFfzVYxS4zF7rcBjY1zan7BZ6VEWYnFIlCknl8=;
 b=SL996NMuR8a6z3DhcAnA42i5SHpx6sftyx6I0+m2U3Tidob63dQ3/aPbYMcQeISRCChVSeBPrzKPrnbGP8PLc3YjfbVS7ytMTgWpvxhQ2Gm3OsSFJ7BL7pug0xkg/ZMjAe6vPwDAnpZJ5wfOSi9OeMX/O7XjpPijSOg9y98lFe5lJkeC4aEK6WJSiO4dq5DSCpgZ1fpEb4j+HokK4RKR92+sBQvj7S3hQ2nI0fEojrAPY5kydvEzymDBFYIftiPLxOf0/oLlGGhA4MgYsCd5MYWJbCK30U2AyLy3cFYLeLDPPYUOvN8M8YTrBKWCYTYA7y9VBWySn+ScZpJlmDcYKg==
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=VCvFWrFfzVYxS4zF7rcBjY1zan7BZ6VEWYnFIlCknl8=;
 b=qSj1oKxuinlNDnGPgkMauFswlzq8sQC62SugbH1teYYWPBMjpPMYiCM0J0XcZFxBCstwmTrnR2KcfGhgHQSok+ZEbMbmSzIIFJDTso9yp2mz3gwqyQbHdEqET51OrxRdYKyTkcJNqLFrdp7WV6EdYQn9lZtcOqIW2CthiRRrlXk=
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: Ayan Kumar Halder <ayan.kumar.halder@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>, Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v3 0/6] Enable early bootup of AArch64 MPU systems
Date: Thu, 10 Oct 2024 15:03:45 +0100
Message-ID: <20241010140351.309922-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
Received-SPF: None (SATLEXMB05.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN1PEPF00006000:EE_|CYYPR12MB8870:EE_
X-MS-Office365-Filtering-Correlation-Id: 90393c44-21e0-4cdf-9378-08dce9346372
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?X9ifsgiR249ea92rfQ3F+omtzMLCIa9YccmjbUmnd84vKgKfeG5naFw8Krly?=
 =?us-ascii?Q?dFGZ1ZpN0BFY5Hohz0z2Y8TyU8+7ZBwZ5NFIX0G0z5tPDR2k9WNn8yMk4N+I?=
 =?us-ascii?Q?+1NdxmUfj30g/U+BZ8Qoe9WOs+rtKSHC7yJlnok7EMyWuT0Zx/H77lTjNNZ7?=
 =?us-ascii?Q?+bHPvD9ycRUwErdNdX73juAoqnvoCGqKc2Emf57E5gGy4HpMg0HTzwCuFiZP?=
 =?us-ascii?Q?2LJNexCCGEGdM96SLY7lUaC9TwwAUABm5roRglctJ+p0nQRVsSG/P3XQR+Bl?=
 =?us-ascii?Q?YepoLVb7frKPjzuMi3Kf8E+c3gaY278SqaLtDjgoEgWTSpiQXXS0It/kAJv5?=
 =?us-ascii?Q?dKAgU2xj/Qn462uPSt8usSX/PFoU5PX4uFYw7VkXpsckGt8vNke/H1a+hAHS?=
 =?us-ascii?Q?0RgJl4dZSgNHEjet2qgZrz3Z4xIFCvC9cAAOPY4DYB+wdtbFL7g3ZuVBVjEo?=
 =?us-ascii?Q?tG6zd6HTqdAKUvbmRdwBXXCKiyytBSTp2VO4NEVhcOwygewKyb3aByacss5X?=
 =?us-ascii?Q?Aoz8ZCKHPpUlTIzthb93h95qo3xF+a5rJ8yruyS6HMnorR6FLz+J0oTvWxvt?=
 =?us-ascii?Q?8dvzmn9kRQz0CBCziAk1dBB0fRPf/S+7LB2/4QEENH4QDXSIzqEQ7TuFrtl/?=
 =?us-ascii?Q?gKGsT8jgr9vgMrWxIjd6DSQH82N4+A04tnEcFmZir2o7f1rB5ppCrGbf2zhY?=
 =?us-ascii?Q?uD2j7fOrx11GLZg8ivSjKD+tzLbpVpczwD3E2vYhkulpk04R/T/BcxFIa9xm?=
 =?us-ascii?Q?OVRxZFPPkN0/U2LZyDuNsLc1NMo6j05s3Da86ujW2XQw4f/m/kCrqOatEc8L?=
 =?us-ascii?Q?ABR+kEoN77c1FLjv4VLDN3ky9ABsAttac2guhReUkXxVN34yBMz7c/J05edl?=
 =?us-ascii?Q?qXC7eIoqTE3pQe82DetyG4t1aehptZ/PBs9Ats7TXB765J7Q+fHCsj1ahtcM?=
 =?us-ascii?Q?1mskWeVqMNrTHFraTXAKNPT61DMszlqXxeRnAi3EbvgZJko5baeqkLlUFuDQ?=
 =?us-ascii?Q?XGneuH/dZiO14lVWUQuga3WVXpJYlMiOH+9HtIB5AcfdrWvJsp2Vo65BQnjL?=
 =?us-ascii?Q?PVD65THzj3PzFBptqV1Mkx/b4EdblxpOFMOUFtiADxo1/j3a0BxQW/h3SwI4?=
 =?us-ascii?Q?X5/brQUGpitm6DQFmEJnkvCS3UaM68f7sNA2lIYmSYqILrxnAn/+pKo49+tg?=
 =?us-ascii?Q?oDPsfoNgZmOGZdhG4Gep32Tq2jN2bGMgv/apEITgPrx4cRGAwCz5Q+k/0TWO?=
 =?us-ascii?Q?y1CxBVJfndlAlZ+5kEdQ8MPZ9FjyLhFsHaIDsTb5NvzKsg9nJeFSWASwM8fT?=
 =?us-ascii?Q?Hxrm1yzQUXjMeo/Bd1l4ePy1fVgbQsfgqUI9sWz91G/L79X8egk+WzZiZ+Nx?=
 =?us-ascii?Q?87+AT1hUHhB/fSRMbUzo/yLc8ju+?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 14:03:59.4542
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 90393c44-21e0-4cdf-9378-08dce9346372
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:
	BN1PEPF00006000.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8870

We have enabled early booting of R82.

Changes from v2 :-
1. Added a new patch "xen/arm: Skip initializing the BSS section when it is empty".
2. Split "xen/arm: mpu: Create boot-time MPU protection regions" into 2 patches.

Ayan Kumar Halder (6):
  xen/arm: Skip initializing the BSS section when it is empty
  xen/arm: mpu: Introduce choice between MMU and MPU
  xen/arm: mpu: Define Xen start address for MPU systems
  xen/arm: mpu: Create boot-time MPU protection regions
  xen/arm: mpu: Enable MPU
  xen/arm: mpu: Implement a dummy enable_secondary_cpu_mm

 SUPPORT.md                                   |   1 +
 xen/arch/Kconfig                             |   2 +
 xen/arch/arm/Kconfig                         |  27 ++-
 xen/arch/arm/Makefile                        |   1 +
 xen/arch/arm/arm64/head.S                    |   2 +
 xen/arch/arm/arm64/mpu/Makefile              |   1 +
 xen/arch/arm/arm64/mpu/head.S                | 165 +++++++++++++++++++
 xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  30 ++++
 xen/arch/arm/include/asm/config.h            |   4 +-
 xen/arch/arm/include/asm/mm.h                |   2 +
 xen/arch/arm/include/asm/mpu/arm64/mm.h      |  22 +++
 xen/arch/arm/include/asm/mpu/layout.h        |  33 ++++
 xen/arch/arm/include/asm/mpu/mm.h            |  20 +++
 xen/arch/arm/platforms/Kconfig               |   2 +-
 xen/arch/arm/setup.c                         |  13 ++
 xen/arch/arm/xen.lds.S                       |   7 +
 16 files changed, 329 insertions(+), 3 deletions(-)
 create mode 100644 xen/arch/arm/arm64/mpu/Makefile
 create mode 100644 xen/arch/arm/arm64/mpu/head.S
 create mode 100644 xen/arch/arm/include/asm/arm64/mpu/sysregs.h
 create mode 100644 xen/arch/arm/include/asm/mpu/arm64/mm.h
 create mode 100644 xen/arch/arm/include/asm/mpu/layout.h
 create mode 100644 xen/arch/arm/include/asm/mpu/mm.h

-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:05:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:05:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816165.1230353 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sytmx-00064a-45; Thu, 10 Oct 2024 14:05:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816165.1230353; Thu, 10 Oct 2024 14:05: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 1sytmx-00064R-1Y; Thu, 10 Oct 2024 14:05:11 +0000
Received: by outflank-mailman (input) for mailman id 816165;
 Thu, 10 Oct 2024 14: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sytmv-00063w-L8
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:05:09 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20627.outbound.protection.outlook.com
 [2a01:111:f403:2414::627])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a78d3aec-8710-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 16:05:08 +0200 (CEST)
Received: from BYAPR07CA0055.namprd07.prod.outlook.com (2603:10b6:a03:60::32)
 by CY8PR12MB7660.namprd12.prod.outlook.com (2603:10b6:930:84::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 14:05:04 +0000
Received: from SJ1PEPF00002319.namprd03.prod.outlook.com
 (2603:10b6:a03:60:cafe::b4) by BYAPR07CA0055.outlook.office365.com
 (2603:10b6:a03:60::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20 via Frontend
 Transport; Thu, 10 Oct 2024 14:05:04 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00002319.mail.protection.outlook.com (10.167.242.229) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 14:05:03 +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.39; Thu, 10 Oct
 2024 09:05:02 -0500
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.39 via
 Frontend Transport; Thu, 10 Oct 2024 09:05:01 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a78d3aec-8710-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hpBqMK4l3xZ2j/hJmq+48GMWetyBvvrm49ZyvuHKm6CrPO7eMbNvQLR35eoQC3NsH7naqFRZdCwFWkqI9QOxg+7ZOVLYZEwITv399NIJKisgG/DxQ5SasNAFeGmGBiUbhQlotqMp1ckIFTAcJkfuuQPhp/EtPVzIuKCkbRw5OMZxuHoKv+ZJJeMnY2r0Z/EzQ+MOt+/jCPEQrX7qFZ5a3J5Duo3q3SNWqEd6ATrjZO6zjPA5cI1WUnJ+B/8ea6TBMnzXbWlSuXcsMsLjTpG8NAXb7X42ltvu0vpsvZ53z/Aagg5lplBz19g5bgxwYk09e0AHFQZr5TbSwb1KCWIKjg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=VTS5053fXyYgQouB1JyqqibqFE9wN/f7atCB/eIP6wc=;
 b=byRIcKvlolCES8F5akyOxLzjz0dsJq0TXHGdbWWnx5bbCJNioLEmUzQ+7UN07EHpetNwE2vs2mqhowPhSKm/NuaOGe1qqcfQeLf+dDvEdeuPKirNJeLQgRdhAdMEuJ6zAozRinkhVFOP7uIPQUVELSCLy2LeeimZ/rcodfqkA/CnSkkjEQHBbteaWn3UW0QdER9frPrbCaBy6+r5v0+Czdka0KmJ23woWWOmLTSoB+KzIjwTqOCUJEGRjtq7hHR9HnkGomSHv4Y41MvROAO9f2HqeFPOsi5AumQz7LOBDDn7yrFyDEepP8t1r1Ml4xs8off1EOXu+lD84NKyGhKJQw==
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=VTS5053fXyYgQouB1JyqqibqFE9wN/f7atCB/eIP6wc=;
 b=vPbEWnXxZE5ccCxTIcKlMqQj7V8CrgGMshWFQciXMnHpz17hPvp/tkILw7Ihs25MiydpLWwoy6WJ20Dm4nRg7nI8wp+JUvtoxUEnFvLBRyFd2Rg9J88l6tYCUYyP1tCYhjFSlKh3XMSY+JxFbNbn/1VdmtNQBNSWvWqUXut97kU=
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: Ayan Kumar Halder <ayan.kumar.halder@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>
Subject: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it is empty
Date: Thu, 10 Oct 2024 15:03:46 +0100
Message-ID: <20241010140351.309922-2-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002319:EE_|CY8PR12MB7660:EE_
X-MS-Office365-Filtering-Correlation-Id: 66456338-bf59-4d11-e413-08dce934895e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?Q0yFZtAMVMj3pS+ctfs7eUMLxNUCw3aIGuWQiO8oZ04dumzbHECvLQ03zKln?=
 =?us-ascii?Q?eK8zqIuTf3NSU6Xn2EkmhPQoDO08KR11ULSDSepd+Q5prh7Uul4f6m/tQvPy?=
 =?us-ascii?Q?T0h+pftYMnJsROIAEnbIghs63pkTUFMWmVghasBRpz071SCSIeuNoEmdoQY3?=
 =?us-ascii?Q?3FTVqYKkUgmEkpXUnwjZhVdC5VbxbQli0g2rdazmLyP7ka8lL6En1AkdSDhH?=
 =?us-ascii?Q?+D/8CnSsD5W2sfDhfDt2P2r5JDCX9i5wV6Sa87EbmA94+FnSZxtBLCf30ohF?=
 =?us-ascii?Q?5obtE750AqyuJPmxVE026rgjH+LKWUXWGgEV+b3XDxOwJrZFbvL64/HfWBXM?=
 =?us-ascii?Q?zvw60G4qzjszETOfYnoSftWXhEPT6mMQBr8OttLmv/d7aNNL/eRh6zVKqRYz?=
 =?us-ascii?Q?Aa/InT3lpTVjkICfQL4LTbXpX5THi484BHC+jwO2eW2w4m7TRf2NXroUAZTh?=
 =?us-ascii?Q?+irFOwWcTasCEOIj5yR2x5wAquqOjuE6hvybQECDkpiz7DhOT9Dy3IUg2QKq?=
 =?us-ascii?Q?oyLC0Ui4QLM80MNkbgyNsEYsRNWiLzb6AjHeNTQ3gdJC6wUERGzoXKSUfRhB?=
 =?us-ascii?Q?/8r1W5T94H7MTbPY+1C2pMHvUh7ieQE8tDguS8ANqF1wAITliKnF+MhW6/do?=
 =?us-ascii?Q?F6HjJfOEJt6ophikUBfIZa5it9J47bztsPylkaFxkLKxXcKvgrfCRE0DFcSA?=
 =?us-ascii?Q?V+5pi1S/aG2+BzXgpBYtnaf60LiU6kX3X+7nKMJxlFpcaaYxrYLhRNPrRThc?=
 =?us-ascii?Q?wkxk7SAsL3S7sfDb8MrivWavruQd7ZNIWYHc1TbeAhuxtLU5ARM7SsOXqW3G?=
 =?us-ascii?Q?nNiqwdS+wTlr/S7GQ5HpMamvieSiH/dMMAGDvc+z+2zwaKhk8ZhA6Qqa+wjU?=
 =?us-ascii?Q?eFNo9nZjTPursi2jf8USAN9BUzBtZAKZyQCCESjUc+A+7IDZPLJHHrLYzbLx?=
 =?us-ascii?Q?Cge0oeBRYPijc6h5KjIqcnujoraDyjqQCXJHGh8uv1AiS6O2T4mWDPQwlU3G?=
 =?us-ascii?Q?Jwq9DP8PRCQYwz3WsR0Ew1OuE0Z6QT2BxkVcla+K2cxPZlrxy4t4ssvTnriG?=
 =?us-ascii?Q?vfOnK/Rl480lEEWX7v8AqEsMrRo4ETXGMMqHYp60waPhu1Dq7cXhYbDoI9Z5?=
 =?us-ascii?Q?gzOU97eIEo4v1XE0bSRSuj8mpgWgBOqs2YZJ4WmGM038y9W1//MUymuXKTVA?=
 =?us-ascii?Q?vk+0r5tNTjb1UIPNJ7qP1ADA/GqfRewwVGJD1YUthvXvJY2annby6OG9Txm+?=
 =?us-ascii?Q?ye5h24fU7WcV1CvQBwdrlZ3AtpuBRabzQ2WkgP2wiTh2LhYEXFZei8PgpJTe?=
 =?us-ascii?Q?eJwA/jdeWneCj0OGKu/d+beIqNTcWeYhP1MN8FHwmZI561bcMInKO96EkW94?=
 =?us-ascii?Q?MgGVinc=3D?=
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:(13230040)(36860700013)(82310400026)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 14:05:03.0630
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 66456338-bf59-4d11-e413-08dce934895e
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:
	SJ1PEPF00002319.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7660

If the BSS section is empty, then the function can just return.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1..v2 - New patch introduced in v3. 

 xen/arch/arm/arm64/head.S | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 14c3720d80..72c7b24498 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
         PRINT("- Zero BSS -\r\n")
         ldr   x0, =__bss_start       /* x0 := vaddr(__bss_start) */
         ldr   x1, =__bss_end         /* x1 := vaddr(__bss_end)   */
+        cmp   x1, x0
+        beq   skip_bss
 
 1:      str   xzr, [x0], #8
         cmp   x0, x1
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:05:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:05:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816166.1230363 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sytn1-0006Kj-EW; Thu, 10 Oct 2024 14:05:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816166.1230363; Thu, 10 Oct 2024 14: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 1sytn1-0006Kc-Br; Thu, 10 Oct 2024 14:05:15 +0000
Received: by outflank-mailman (input) for mailman id 816166;
 Thu, 10 Oct 2024 14: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sytn0-00063w-9O
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:05:14 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20628.outbound.protection.outlook.com
 [2a01:111:f403:2009::628])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aa12c5e6-8710-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 16:05:12 +0200 (CEST)
Received: from CH2PR07CA0043.namprd07.prod.outlook.com (2603:10b6:610:5b::17)
 by SN7PR12MB7371.namprd12.prod.outlook.com (2603:10b6:806:29a::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 14:05:06 +0000
Received: from CH1PEPF0000AD7D.namprd04.prod.outlook.com
 (2603:10b6:610:5b:cafe::7b) by CH2PR07CA0043.outlook.office365.com
 (2603:10b6:610:5b::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18 via Frontend
 Transport; Thu, 10 Oct 2024 14:05:06 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000AD7D.mail.protection.outlook.com (10.167.244.86) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 14:05:06 +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.39; Thu, 10 Oct
 2024 09:05:05 -0500
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.39 via
 Frontend Transport; Thu, 10 Oct 2024 09:05:04 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa12c5e6-8710-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Xekvhpd7lwq5yH23yGZktZOdxGbnQ7MrqJfB4kdXhXZyJ+yhUYWaz17gbjBoLELJv9ab9EyGDuyC/Dq2ddSX+rHOpYUrP6BLwlrQL+eOQ7wYRYh/1m1dCKaMrNMlu7fl2s+ZIPriBdDHLXJZRbhNUzZlqPw+Tw6JZko64NvnpJHqbz6b6rqxpmLGF5d+2Xi+/8fd6lN0vMhZWOTvNJlhLZFPhc3GhSRlN+V53qf9FN0Bq5sso4rcXf7lweyJ1xBo/63mZLcozuc7q71OQqBN6c6I2QCrH1oa1myuAGqOmlvfSEpvhXeVH4phY59HenLwq/kq8ds4Ey5gOGgSnZgtEQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=h8Bq//NZ4qXsynzh+qjTiZ5t/d9zK4Vri+C1Mc3rvDw=;
 b=oc9DPCMMkDM3gaLMiM/PpYnIkYPSMCkcBklTj7PgSsLmN1pTZZYOn3coQdH6KnT7ScNxM7sZKv290/6RfJUOI1CtSsu6GofcD6C579b2nfkfxmUuQGDZMtTFCu9qDjetX/iHmuqyIZOHC4h3+N4ecmvBEq6YL9BSmF2CyFc4acTU9hsYcAm9SCfh0BtSWPZ85pIe5+nkRa8X9PemLf3OeiOVFsR16eioYkuh1AVTNiK7TTnzMDYeB/YnB0+vwConehjdCRPn08t6q0EqeKQyJQTwCE0SJdT3oEE+sKJbXbl9picp58IrSokbOHyU4ys9tXaME3SfiThsKEy2zmlSwQ==
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=h8Bq//NZ4qXsynzh+qjTiZ5t/d9zK4Vri+C1Mc3rvDw=;
 b=tBecdr2AIAyliFsoKsu4+h4/9m1XSIl8VDOy6HhL2FD4nOrQat6JVWaIluuKo97exSeNtbu4GLM0iEEhUZnhx/PsOLGziyIeT7sHcyF3lHAOmE+6SmCS3je5Thr7wLOA8mYLDsEo8KvfzNPhaareo7nZAShxYK7k+CyIiazsmr8=
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: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Andrew Cooper
	<andrew.cooper3@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>
Subject: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Date: Thu, 10 Oct 2024 15:03:47 +0100
Message-ID: <20241010140351.309922-3-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7D:EE_|SN7PR12MB7371:EE_
X-MS-Office365-Filtering-Correlation-Id: 0ba66ff0-fd03-4bbc-85f3-08dce9348b6f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?CEXySuepL7ELKM+T4XL1zP6UtnbBYFoaJwTAESN2hovTleLIm4bRZzNhAf9R?=
 =?us-ascii?Q?6/9lL4cjjv+V+wu0uUQdk0kF2q7anSkaqEvK/JmIf40ELH2KKV8VqHqRu5df?=
 =?us-ascii?Q?LVtNdGq3wj2SqBLb3OzMOmDFKY0ql66Xgm5a0jyrOFGJcsl5dV1Rh8IhwXia?=
 =?us-ascii?Q?+3S1RLVktnZs4MgqBEBpMf17g9GzMWeku1RN7ugIuqzicz9CGSWl0FdkNnlc?=
 =?us-ascii?Q?FsMEblUD94sEgnOfNzjNOyN8XC3GYasYW04Uv39QqKEy2140Iho8hsYBUm/V?=
 =?us-ascii?Q?6lU9dEI12Xgyi0VHkkAbMEMKTtIS2Qa/BNXWR1+4IMWvwDUTke/Y1dVHOxHv?=
 =?us-ascii?Q?KUiNUooodJ/+MoV3J4opsOav4Rzhpn4WmhWiHYvfzU/05AwZBpdVxM4UZ7n0?=
 =?us-ascii?Q?qDnaFRJSboqG+crfyqZDw1+L8jUMqk2MQfTASHIGqFtMnPAGCwYGvvj7BaEL?=
 =?us-ascii?Q?lGJTqMF2LSPHVSrqkh7FSB6YPGUuuQGBMtOB6fkl9G4rJmsKRfZAGn8z+c7m?=
 =?us-ascii?Q?DFpsVkMIkQvZxXJBsf2WlkEOcnUW5qX00iOLRLMKHfLv/C5CiD54ujabBPG8?=
 =?us-ascii?Q?4TMX7O3N1+GZUUry1SoI21ei3kfpmJMBRdoRAP3atNwCaIwPG5jFF1+IW8Fb?=
 =?us-ascii?Q?nAwWJqyxeZ28wpWkt94BkxRNSuP/1KQNajsuOx6xGC4AyEMss0zcJl6D3pm3?=
 =?us-ascii?Q?vopAmeoiNd090MCpaP5fEMHWwusVwYybL+TDyiM8Dv6s2GWEokvvlGHF1QrP?=
 =?us-ascii?Q?ZEJ0EA3pulEZO1ueGkhiCKSChZy7bc/o0S9FzAHsd4PWpPV1W1pRyjF9UQcr?=
 =?us-ascii?Q?4EYuJPpPzqQKK/O4KkNsMRvU0e5tWo2Rdrt1IBaJ2CffdYrE2w4nd+d/blqe?=
 =?us-ascii?Q?yQ4zZDrHdhia6mO63K2h6kpcxRVODp9YQpDYEnXSAcSBPAW260PUc2DVIQoA?=
 =?us-ascii?Q?Dr75AvDEcKvl8D4/F6Nrli5qekdEKeWGu6D/DnQwzk0BDmdMAbw3aqapF9Np?=
 =?us-ascii?Q?kusRHnd1k+l/wOIB6Gt7fw1lvVOI/4fgtDjpsgWP/nKIUVC4aRcryjnoCmkP?=
 =?us-ascii?Q?s/HTRS0Qw0DN12MLSbv83YQXtiuaWkftkhtsufzEFTDy/kdp/7oyMwl3ZH0j?=
 =?us-ascii?Q?Ow4SiakSFGnk+asyYO16ZTjie9NrqgfbRlI0bqKPDOW+JEUZ3RFMzxZqRYaa?=
 =?us-ascii?Q?su3UJYfpBzKPfZfDvgSh6q8BcJHmbjd/0fJTwovNTA6Hh7rfvxtm/977ZMmw?=
 =?us-ascii?Q?H7VKh1MokOIqsc+Fwtblx00DYY+uAIpSOHrIcUTnJ0SSgW6DcpPSYu04B2ep?=
 =?us-ascii?Q?2G44vGPM3uvM9TuernBXF07ykg4X4TBYgUTtnJEqKlsJZ2/5wxF0gEu7Pjf0?=
 =?us-ascii?Q?ovbaNnSiGzUcCXroQqA1wI9x7Zu5?=
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:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 14:05:06.5743
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0ba66ff0-fd03-4bbc-85f3-08dce9348b6f
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:
	CH1PEPF0000AD7D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7371

There are features in the forthcoming patches which are dependent on
MPU. For eg fixed start address.
Also, some of the Xen features (eg STATIC_MEMORY) will be selected
by the MPU configuration.

Thus, this patch introduces a choice between MMU and MPU for the type
of memory management system. By default, MMU is selected.
MPU is now gated by UNSUPPORTED.

Update SUPPORT.md to state that the support for MPU is experimental.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1 - 1. Reworded the help messages.
2. Updated Support.md.

v2 - 1. Reworded the help message.

 SUPPORT.md                     |  1 +
 xen/arch/arm/Kconfig           | 17 ++++++++++++++++-
 xen/arch/arm/platforms/Kconfig |  2 +-
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/SUPPORT.md b/SUPPORT.md
index 23dd7e6424..3f6d788a43 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -40,6 +40,7 @@ supported in this document.
 
     Status, Xen in AArch64 mode: Supported
     Status, Xen in AArch32 mode: Tech Preview
+    Status, Xen with MPU: Experimental
     Status, Cortex A57 r0p0-r1p1: Supported, not security supported
     Status, Cortex A77 r0p0-r1p0: Supported, not security supported
 
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 323c967361..ed92eb67cb 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -58,10 +58,25 @@ config PADDR_BITS
 	default 40 if ARM_PA_BITS_40
 	default 48 if ARM_64
 
+choice
+	prompt "Memory management system"
+	default MMU
+	help
+	  User can choose between the different forms of memory management system.
+
 config MMU
-	def_bool y
+	bool "MMU"
 	select HAS_PMAP
 	select HAS_VMAP
+	help
+	  Select it if you plan to run Xen on A-profile Armv7+
+
+config MPU
+	bool "MPU" if UNSUPPORTED
+	help
+	  Memory Protection Unit (MPU). Select if you plan to run Xen on ARMv8-R
+	  systems supporting EL2. (UNSUPPORTED)
+endchoice
 
 source "arch/Kconfig"
 
diff --git a/xen/arch/arm/platforms/Kconfig b/xen/arch/arm/platforms/Kconfig
index 76f7e76b1b..02322c259c 100644
--- a/xen/arch/arm/platforms/Kconfig
+++ b/xen/arch/arm/platforms/Kconfig
@@ -1,5 +1,5 @@
 choice
-	prompt "Platform Support"
+	prompt "Platform Support" if MMU
 	default ALL_PLAT
 	help
 	Choose which hardware platform to enable in Xen.
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:05:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:05:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816167.1230374 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sytn6-0006bn-N9; Thu, 10 Oct 2024 14:05:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816167.1230374; Thu, 10 Oct 2024 14: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 1sytn6-0006bc-K4; Thu, 10 Oct 2024 14:05:20 +0000
Received: by outflank-mailman (input) for mailman id 816167;
 Thu, 10 Oct 2024 14: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sytn4-0006aO-M2
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:05:18 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2060a.outbound.protection.outlook.com
 [2a01:111:f403:2413::60a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id acd79f05-8710-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:05:17 +0200 (CEST)
Received: from CH2PR07CA0056.namprd07.prod.outlook.com (2603:10b6:610:5b::30)
 by DS0PR12MB9322.namprd12.prod.outlook.com (2603:10b6:8:1bd::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 14:05:09 +0000
Received: from CH1PEPF0000AD7D.namprd04.prod.outlook.com
 (2603:10b6:610:5b:cafe::e6) by CH2PR07CA0056.outlook.office365.com
 (2603:10b6:610:5b::30) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18 via Frontend
 Transport; Thu, 10 Oct 2024 14:05:09 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000AD7D.mail.protection.outlook.com (10.167.244.86) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 14:05:09 +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.39; Thu, 10 Oct
 2024 09:05:09 -0500
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.39; Thu, 10 Oct
 2024 09:05:08 -0500
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.39 via
 Frontend Transport; Thu, 10 Oct 2024 09:05:07 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acd79f05-8710-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=KP0ZAyPjK30CsYcfKQ8MWQM0BWEXVqCTonJ/wmiqrQzgZYOsTks4OYqOTkjNmce6I5Lxi9qIZnJFwV6B90kdB5xKl+zwg7lqnk8NysTz7zAcHX5ZrAp1NM7lnYJpiHo65OdSfFNqFv1YT/yH9j9y9UNTo3qfu+MSUYvSm6Q15QLIwTdDwofKSdgkqWiJv0LtNEBfxUEoHjZEkanNLBb2/XUbWkJAQd7w+2dk8GWZBY84Z8lJJJGfs1tAJMETuaDTyWbAQZkU836zPZfLZiACJfqLc2ssl76slRrVp/8D4GB64UWPHJSAgTVzfdspWxO7/Pvjvpa5wjr6uRw0BltWEw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=BiyPkJoRNCr7QGFAWNRQgLMHKqeHTUsw6izjDfpPULs=;
 b=X9I8sbun8udAzH9Ax4Pfgr7UVi1umUjAwYFL4tE7TO64Be0iHrMR0Q/4f8IY5rdzSZXY7SRAPn18Gp1YKdJzQ6Rr35x+yABTiZkhOHUGfsoUPdS5JbygN2OGPmofxWxfgIEC7E5DGZ6h2UX9F6s24MjBZFL8o2xYxjTYBti/I44OgF6Xb4Sfp/xxp35o1cOROINexx9rWd5ilnh6hDmgZRt+Qf7NkLSDS7n24Ryv7fDygAgUi6LaYy5r1UJJ3cGAzsD+lx7YLylcsJ7EcraedOnjIwkS2L0HlCL4PTfTERneczfD+Nm/9Jyu7ZIEpjFMO7uQ2idZVraxUXpnAuPvWw==
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=BiyPkJoRNCr7QGFAWNRQgLMHKqeHTUsw6izjDfpPULs=;
 b=etPpxudhPU/U8Xs+5jJ2dFT/g03htjOtB4zWSBf9gqF32VGnyWWvzem7KTEN1jMNx0ZrqDBMgfOAMSdyIYiwX41HuVqHclCDZv4IWTVSqjy892pfd9/wuNQ1/9AJAi6zxymp4Geyf5BKdhGhFmj2uQeJC7o+vvJqza1MIw4Vfwc=
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: Wei Chen <wei.chen@arm.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>, "Jiamei . Xie" <jiamei.xie@arm.com>, "Ayan
 Kumar Halder" <ayan.kumar.halder@amd.com>
Subject: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU systems
Date: Thu, 10 Oct 2024 15:03:48 +0100
Message-ID: <20241010140351.309922-4-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
References: <20241010140351.309922-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: CH1PEPF0000AD7D:EE_|DS0PR12MB9322:EE_
X-MS-Office365-Filtering-Correlation-Id: 3da93431-0be4-45c9-48b8-08dce9348d58
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?+cHP+ZeU31cyEeSKd+IpiDx5e5P8r1ReZ5DfDWANa/Gu1Tp/wCtgkkytu+31?=
 =?us-ascii?Q?56281hvJT3/s2LFRVl5RGbl8+wxVEy2LpkezGVNYSroiC9Nad+MPyukbvTcl?=
 =?us-ascii?Q?kHhn1Ry3B4XnesdUrzFntGiC3aIX3HM0QnOjcx+wIgBsc3FvMqsWhy0mwpYQ?=
 =?us-ascii?Q?ljOv/fMlNYvxKusg17+Z8HPnD7rDSR3zDY3KdMLED7AR4AEPsd080K5vkeUM?=
 =?us-ascii?Q?AOOCjQX3RGVD0nDXmEH12QuzG3DA7YpaSewxDVzxrSTSpgs/l5G1AJAVpClU?=
 =?us-ascii?Q?RbuVNLnNg2MIAopJ46eNthb+HIgPyju7sDanD8uKiUDyYH7pWzdGpLSl6LwU?=
 =?us-ascii?Q?s410qqdViWJvGAXP9O0TjvdOcaxTBknDeHyMtHBsqkHEJCgXy06PgzBtNcJp?=
 =?us-ascii?Q?WETbsj+F7p2bIQW44J2bISbyjOhdSAKMP0/JiBRE2FicGd45uTt415kWTRxm?=
 =?us-ascii?Q?LoOrRZ/ot4LRaQKctp9fO0gYSOQK2thf79y30AJwYre7DDTPmMlzq4yXnYbx?=
 =?us-ascii?Q?l0ztONYyPj+nHOFeb7KrGRmQzhLq7k5aF3QTyjgHMGJ5jHNuvOiwRU+WKTSX?=
 =?us-ascii?Q?osVTtJP7qw3rvEQOCwfKgftWN8y1jOpLMgUPUuepPRXA2JLuj6Q/0hZpE2xo?=
 =?us-ascii?Q?pcBOirwEaVnoJMPwmPrHsNnCcusJgYhW5Ehzp3GsJ5PGoG5r0uE7KrOB5680?=
 =?us-ascii?Q?toUF0BE+LGiArMFiMUd+coefOnQ5z83RQR5+HRxN68Jv/jWwx1QR46ckUQ6T?=
 =?us-ascii?Q?0RQ0KybkpUrPJ7R3moxx+3fhdb4W9gHGJDTGpA/iX7bDXeWYTFPpaxx2m73B?=
 =?us-ascii?Q?2ZdqmISjbiMwAFT3dNzWUsB5jT9KDKmgSRHwM8zpZ2/Ks6SMGDOXT3I1GAMi?=
 =?us-ascii?Q?XCFxR9Deym23Q7mNAwKjrcOiWOtNTtAOZQ2RAVB8S5KE/e3AaRa03VZRqHjm?=
 =?us-ascii?Q?Y1Whmm6QDt2uYy0XGTwfDW6lAapk9MXyjr2gesP8jHpuTkttpMGOCs/Zppmh?=
 =?us-ascii?Q?SK09O80CpW4hpfD1OBsKfN44QIQSIJL7CqVjObgkyXwnnqJHmLn5mx1WcwrZ?=
 =?us-ascii?Q?JkiiaDlTC1IFCtijkCH0qVLyilRHVTjCWGfjAbuF7yI7fNh9S4EFKqMYd63K?=
 =?us-ascii?Q?pKhuwifIvLzawkVcgm2yPmUhpSNXYLD9Neh7DQYXKzZfypZVH9Khc0wJ281O?=
 =?us-ascii?Q?MBonc64hLK/F6uU840UVIxh7zOmz5Cw0tj5PRsfrEs37cjBSVFcIw/msbs58?=
 =?us-ascii?Q?iwPPbBNZVrGYWfRYgWSiDtpnkrr6M+LBxxDEdcEd3XJNvGGXVW2co7G/bEwh?=
 =?us-ascii?Q?o8gfpL37PVJQlF0zEX9JgjQ9+7eQ/p+8bdjGZX3DwTNiyfQVnQd9PlOMG4oX?=
 =?us-ascii?Q?Y6jMEjsoHliBnVOQE+HCDgHBrTjt?=
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:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 14:05:09.7774
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3da93431-0be4-45c9-48b8-08dce9348d58
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:
	CH1PEPF0000AD7D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB9322

From: Wei Chen <wei.chen@arm.com>

On Armv8-A, Xen has a fixed virtual start address (link address too) for all
Armv8-A platforms. In an MMU based system, Xen can map its loaded address to
this virtual start address. So, on Armv8-A platforms, the Xen start address does
not need to be configurable. But on Armv8-R platforms, there is no MMU to map
loaded address to a fixed virtual address and different platforms will have very
different address space layout. So Xen cannot use a fixed physical address on
MPU based system and need to have it configurable.

So, we introduce a Kconfig option for users to set the start address. The start
address needs to be aligned to 4KB. We have a check for this alignment.

MPU allows us to define regions which are 64 bits aligned. This restriction
comes from the bitfields of PRBAR, PRLAR (the lower 6 bits are 0 extended to
provide the base and limit address of a region). This means that the start
address of Xen needs to be at least 64 bits aligned (as it will correspond to
the start address of memory protection region).

As for now Xen on MPU tries to use the same memory alignment restrictions as it
has been for MMU. Unlike MMU where the starting virtual address is 2MB, Xen on
MPU needs the start address to be 4KB (ie page size) aligned.

In case if the user forgets to set the start address, then 0xffffffff is used
as default. This is to trigger the error (on alignment check) and thereby prompt
user to set the start address.

Also updated config.h so that it includes mpu/layout.h when CONFIG_MPU is
defined.

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Jiamei.Xie <jiamei.xie@arm.com>
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1 - 1. Fixed some of the coding style issues.
2. Reworded the help message.
3. Updated the commit message.

v2 - Added clarification for the use of page and page size.

 xen/arch/arm/Kconfig                  | 10 ++++++++
 xen/arch/arm/include/asm/config.h     |  4 +++-
 xen/arch/arm/include/asm/mpu/layout.h | 33 +++++++++++++++++++++++++++
 xen/arch/arm/setup.c                  |  8 +++++++
 xen/arch/arm/xen.lds.S                |  6 +++++
 5 files changed, 60 insertions(+), 1 deletion(-)
 create mode 100644 xen/arch/arm/include/asm/mpu/layout.h

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index ed92eb67cb..15b2e4a227 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -23,6 +23,16 @@ config ARCH_DEFCONFIG
 	default "arch/arm/configs/arm32_defconfig" if ARM_32
 	default "arch/arm/configs/arm64_defconfig" if ARM_64
 
+config XEN_START_ADDRESS
+	hex "Xen start address: keep default to use platform defined address"
+	default 0xFFFFFFFF
+	depends on MPU
+	help
+	  Used to set customized address at which which Xen will be linked on MPU
+	  systems. Must be aligned to 4KB.
+	  0xFFFFFFFF is used as default value to indicate that user has not
+	  customized this address.
+
 menu "Architecture Features"
 
 choice
diff --git a/xen/arch/arm/include/asm/config.h b/xen/arch/arm/include/asm/config.h
index a2e22b659d..0a51142efd 100644
--- a/xen/arch/arm/include/asm/config.h
+++ b/xen/arch/arm/include/asm/config.h
@@ -69,8 +69,10 @@
 #include <xen/const.h>
 #include <xen/page-size.h>
 
-#ifdef CONFIG_MMU
+#if defined(CONFIG_MMU)
 #include <asm/mmu/layout.h>
+#elif defined(CONFIG_MPU)
+#include <asm/mpu/layout.h>
 #else
 # error "Unknown memory management layout"
 #endif
diff --git a/xen/arch/arm/include/asm/mpu/layout.h b/xen/arch/arm/include/asm/mpu/layout.h
new file mode 100644
index 0000000000..d6d397f4c2
--- /dev/null
+++ b/xen/arch/arm/include/asm/mpu/layout.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ARM_MPU_LAYOUT_H__
+#define __ARM_MPU_LAYOUT_H__
+
+#define XEN_START_ADDRESS CONFIG_XEN_START_ADDRESS
+
+/*
+ * All MPU platforms need to provide a XEN_START_ADDRESS for linker. This
+ * address indicates where Xen image will be loaded and run from. This
+ * address must be aligned to a PAGE_SIZE.
+ */
+#if (XEN_START_ADDRESS % PAGE_SIZE) != 0
+#error "XEN_START_ADDRESS must be aligned to 4KB"
+#endif
+
+/*
+ * For MPU, XEN's virtual start address is same as the physical address.
+ * The reason being MPU treats VA == PA. IOW, it cannot map the physical
+ * address to a different fixed virtual address. So, the virtual start
+ * address is determined by the physical address at which Xen is loaded.
+ */
+#define XEN_VIRT_START         _AT(paddr_t, XEN_START_ADDRESS)
+
+#endif /* __ARM_MPU_LAYOUT_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 71ebaa77ca..0203771164 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -295,6 +295,14 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
     struct domain *d;
     int rc, i;
 
+#ifdef CONFIG_MPU
+    /*
+     * Unlike MMU, MPU does not use pages for translation. However, we continue
+     * to use PAGE_SIZE to denote 4KB. This is so that the existing memory
+     * management based on pages, continue to work for now.
+     */
+    BUILD_BUG_ON(PAGE_SIZE != SZ_4K);
+#endif
     dcache_line_bytes = read_dcache_line_bytes();
 
     percpu_init_areas();
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index bd884664ad..fe4b468cca 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -231,6 +231,12 @@ SECTIONS
  */
 ASSERT(_start == XEN_VIRT_START, "_start != XEN_VIRT_START")
 
+/*
+ * On MPU based platforms, the starting address is to be provided by user.
+ * One need to check that it is 4KB aligned.
+ */
+ASSERT(IS_ALIGNED(_start,       4096), "starting address is misaligned")
+
 /*
  * We require that Xen is loaded at a page boundary, so this ensures that any
  * code running on the identity map cannot cross a section boundary.
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:05:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:05:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816169.1230394 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sytnB-00079I-BB; Thu, 10 Oct 2024 14:05:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816169.1230394; Thu, 10 Oct 2024 14:05: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 1sytnB-00079B-8E; Thu, 10 Oct 2024 14:05:25 +0000
Received: by outflank-mailman (input) for mailman id 816169;
 Thu, 10 Oct 2024 14:05: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sytnA-0006aO-3f
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:05:24 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on2061b.outbound.protection.outlook.com
 [2a01:111:f403:240a::61b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b0721540-8710-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:05:23 +0200 (CEST)
Received: from SJ0PR13CA0162.namprd13.prod.outlook.com (2603:10b6:a03:2c7::17)
 by SN7PR12MB8604.namprd12.prod.outlook.com (2603:10b6:806:273::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 14:05:18 +0000
Received: from SJ1PEPF0000231B.namprd03.prod.outlook.com
 (2603:10b6:a03:2c7:cafe::b1) by SJ0PR13CA0162.outlook.office365.com
 (2603:10b6:a03:2c7::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16 via Frontend
 Transport; Thu, 10 Oct 2024 14:05:18 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF0000231B.mail.protection.outlook.com (10.167.242.232) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 14:05:17 +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.39; Thu, 10 Oct
 2024 09:05:16 -0500
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.39 via
 Frontend Transport; Thu, 10 Oct 2024 09:05:15 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b0721540-8710-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=b7ZF6A8n0zH7nv4XvOacBErxB9pZau3XFfW+loWWfoZxWmPIJiVh5oUpmlwi6RQC0xUzzST1lWb0wWjbDjfbppnFXbLMLRgPcmmKOtZ7Y4pFFqz+w1Qdyd4/dvnkXGK1gzHnf2+QHde7y4DqMTpnql9+Sph7zNeiRjqdE4YZDxORjKEVb2ci121Bem6XxOadqUBoWm5yTfP+hobvY2dlQYUv6ynf/vKM8Legoi3OwjdrC6jbI+kKS+5IbXYcU4TaHO79rSdsY15gZvuiZxJNmwKkFBe3cgpN24aaKaOXV6cbmH/6pQ8Kv3Pi1yzXqQfeh3dUsAqpcdJF+HspHshR3A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Yym0EEggncFfOSUc233UEcJGav1crXKLZ4st43Tahts=;
 b=r7DmcetMhpT63fMgaPTXhdRv23jSZRK/phWc8WBGdSXmkQ4czOKOegBqOkLHH97lBeJvOd4CqN2WWIg7yKbTeAs5BNH6ENqsCx9amuLWc2Wquc9W16rEli+Eh2dZKMmoYxxgZyQql1Qwg/ssHTQcj7CeR0nAuyXAxfezDXGvBaYIbiqDsh+vajDJtlYJ+qW76oauRW8syxOxcuwxSNbEyPL53KGdD1ICMyUMankJbDQs8asA5H8eesmw4yW1QnfZBmpsWpEubI7ySPKL4W7qEsNBURIYkp3E5zIRcgtoC+PXaEMUfkrL71mhy4c2b9y3x8gX89YFe/bjffX3y5517Q==
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=Yym0EEggncFfOSUc233UEcJGav1crXKLZ4st43Tahts=;
 b=EUddmWfA5rQfJOEd7nxDEK8J542vrIW+cDaetVPISL1dILyAolZRbHNmdRsm7cSBbhSBhejOcVT3Hmrynp8a+R1uIbHzkRAeuWXbw6lrPYSFJasRz2HFuWSIU4O9lVVjIXZ6cC2IcAhbxSs6PX9OuAvYtFJIlCM9JTsAygBlHDs=
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: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Andrew Cooper
	<andrew.cooper3@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>
Subject: [PATCH v3 6/6] xen/arm: mpu: Implement a dummy enable_secondary_cpu_mm
Date: Thu, 10 Oct 2024 15:03:51 +0100
Message-ID: <20241010140351.309922-7-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF0000231B:EE_|SN7PR12MB8604:EE_
X-MS-Office365-Filtering-Correlation-Id: 1de2197c-76f0-45c4-af62-08dce934922c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?zKmaI+0PbdyecuZ5f3AIC0+rnU0Y/yVPFmN7KjOaEdJ5wX/qRhCPPHauVhCt?=
 =?us-ascii?Q?oUe4T6goc+9nnqxmRbT8lcx8k9NztJ2gnofaima+oOj8y9YKVOdnNtRMKTFg?=
 =?us-ascii?Q?jZcjE7usBGqqz9WS+8NbuKa1A6/9is1ZDTqUcyAQ6UjLZuF8k7v+IuwHssDA?=
 =?us-ascii?Q?7AlfsH+fbRXqbaE6kmy0htVzMtnn/FM9QnZjGhNstZVKJqDzfDBFkducvN9p?=
 =?us-ascii?Q?YxmQ2wjkJfoBmO73O8FRPLJs3/7pdhWHl+DdSOpPpvAsphZAt1qY+pCQUD48?=
 =?us-ascii?Q?JO4EmjVBQXJ3cB87snROkKN6MSAQJasB5NNtEIvMU50sZw+d/XgsK0FIy81x?=
 =?us-ascii?Q?HzlhWqOZVluXZw+FcoWQqWOC9AaEP9omR56E/0/M0Z6wq1+jdL5uJMteVy48?=
 =?us-ascii?Q?GyguEFHCOGFTq8VIpxhIAD8KUBmxgUCq0HHRpPSkPn+mcNrEFYMhsVFvMJ6u?=
 =?us-ascii?Q?8c3ovakqHL04zfEQMeoAEczpX8dU33DA8KOI/DTBuOeFlFV08M5kEt4ln5cX?=
 =?us-ascii?Q?kwPAankJOcF2kCGVc44RPg/FQLkS0KfnZJdlzNFULal44y7KswgH0mq1rUTp?=
 =?us-ascii?Q?d5abGmU0btcHDBIkL9nj7ClTMb7elG5dEIVKRTgq/gT/EP5Z9d6dQt/akztC?=
 =?us-ascii?Q?MFTEVLsyz4DakjHgY85eg7/w3Yqh907r9MX+kmMoSi5us38JwRz54N72/9/u?=
 =?us-ascii?Q?+nAu9g9qa2ptIFgjZsc/yth2nUkDW9ns5po8BN94kybZiTcAhNQNGtWgI+sn?=
 =?us-ascii?Q?CJA0LjxhLJ9fabfwuRdicpyuZVOa0cY+d8VtAgpShmPSCvi99dpYSwANu/x1?=
 =?us-ascii?Q?Q1HBEvZyeYgzRC0SoCmB0SsH15SAPiVQ+p1vCasGtmqBhRPN8tqG2HqNtgmh?=
 =?us-ascii?Q?G/h7rZ1EGnEWYlyeW/+RDsTZevvIzwZ/pq8Sgr2iuTkuHwUoInviWxOwQJcc?=
 =?us-ascii?Q?EkqRVTEpI+w2K1BVMnogw2eBtIhTGAyQ4a5gGCsQM7bI5z4L/h8MJfYVv45a?=
 =?us-ascii?Q?thMoYkgKZ8X5p3i65VlZSxppglUo8k8mDXW9YWfqiQlVqUMn+t4eZ7JM7Bwr?=
 =?us-ascii?Q?+UTRXRFlOSFo/LDTnch+tBqoRMujCqsoFSeBeq5vW9uXvrPvAyj3WhgaWsSW?=
 =?us-ascii?Q?+EHJnY1llOcCoVZsmV3GyzvhmRLL2O1jSLfMnuiCcwX7dDiRsy8Lyf8CQZck?=
 =?us-ascii?Q?9XlOXt9L8cxwQiSRso0uENBpHnhNZFfSh/V6DtmwlGVvejfTmD+IpLKw07cF?=
 =?us-ascii?Q?2/4l03P2phdM2N+k7a//Kcq9J3YexWK/PY+CrQ8nOn6tN9ZzSXq/cdrZaNI9?=
 =?us-ascii?Q?2Xj4MMFPgeWuQgauJr5+rW2pvxzfqnTxSNXWBnKvR+wkaOiR5Fl5I2jLZry5?=
 =?us-ascii?Q?QdmlDo0RwYNQ49MbY47h5rmA++ds?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 14:05:17.8334
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1de2197c-76f0-45c4-af62-08dce934922c
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:
	SJ1PEPF0000231B.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8604

Secondary cpus initialization is not yet supported. Thus, we print an
appropriate message and put the secondary cpus in WFE state.
And we introduce to BUILD_BUG_ON to prevent users using from building Xen
on multiprocessor based MPU systems.

In Arm, there is no clean way to disable SMP. As of now, we wish to support
MPU on UNP only. So, we have defined the default range of NR_CPUs to be 1 for
MPU.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1 - 1. NR_CPUS is defined as 1 for MPU

2. Added a message in enable_secondary_cpu_mm()

v2 - 1. Added the range

2. Clarified in the commit message why/how we have disabled SMP.

 xen/arch/Kconfig              |  2 ++
 xen/arch/arm/arm64/mpu/head.S | 10 ++++++++++
 xen/arch/arm/setup.c          |  5 +++++
 3 files changed, 17 insertions(+)

diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
index 308ce129a8..6053e048fa 100644
--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
 
 config NR_CPUS
 	int "Maximum number of CPUs"
+	range 1 1 if MPU
 	range 1 16383
 	default "256" if X86
 	default "8" if ARM && RCAR3
 	default "4" if ARM && QEMU
 	default "4" if ARM && MPSOC
+	default "1" if ARM && MPU
 	default "128" if ARM
 	help
 	  Controls the build-time size of various arrays and bitmaps
diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
index e354f4552b..4d36a8c9bc 100644
--- a/xen/arch/arm/arm64/mpu/head.S
+++ b/xen/arch/arm/arm64/mpu/head.S
@@ -147,6 +147,16 @@ fail:
     b   1b
 END(enable_boot_cpu_mm)
 
+/*
+ * We don't yet support secondary CPUs bring-up. Implement a dummy helper to
+ * please the common code.
+ */
+ENTRY(enable_secondary_cpu_mm)
+    PRINT("- SMP not enabled yet -\r\n")
+1:  wfe
+    b 1b
+ENDPROC(enable_secondary_cpu_mm)
+
 /*
  * Local variables:
  * mode: ASM
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 0203771164..5a0d343f5b 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -296,6 +296,11 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
     int rc, i;
 
 #ifdef CONFIG_MPU
+    /*
+     * Currently, SMP is not enabled on MPU based systems.
+     */
+    BUILD_BUG_ON(NR_CPUS > 1);
+
     /*
      * Unlike MMU, MPU does not use pages for translation. However, we continue
      * to use PAGE_SIZE to denote 4KB. This is so that the existing memory
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:05:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:05:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816168.1230384 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sytn8-0006sS-VK; Thu, 10 Oct 2024 14:05:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816168.1230384; Thu, 10 Oct 2024 14:05: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 1sytn8-0006sH-Qj; Thu, 10 Oct 2024 14:05:22 +0000
Received: by outflank-mailman (input) for mailman id 816168;
 Thu, 10 Oct 2024 14:05: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sytn7-0006aO-QN
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:05:21 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20608.outbound.protection.outlook.com
 [2a01:111:f403:2409::608])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id af1ec6f8-8710-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:05:21 +0200 (CEST)
Received: from DM5PR07CA0069.namprd07.prod.outlook.com (2603:10b6:4:ad::34) by
 CY8PR12MB8215.namprd12.prod.outlook.com (2603:10b6:930:77::10) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8048.18; Thu, 10 Oct 2024 14:05:14 +0000
Received: from DS1PEPF00017092.namprd03.prod.outlook.com
 (2603:10b6:4:ad:cafe::b8) by DM5PR07CA0069.outlook.office365.com
 (2603:10b6:4:ad::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18 via Frontend
 Transport; Thu, 10 Oct 2024 14:05:14 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS1PEPF00017092.mail.protection.outlook.com (10.167.17.135) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 14:05:13 +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.39; Thu, 10 Oct
 2024 09:05:12 -0500
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.39; Thu, 10 Oct
 2024 09:05:11 -0500
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.39 via
 Frontend Transport; Thu, 10 Oct 2024 09:05:10 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af1ec6f8-8710-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=X1gOpdPggCnAhQ7kGYUJWyQwkfDUzR/XGiAyVL9Hbmb96ZV9UepTcLxSqRxqzG9sxk4RXq9NGwHyLFtyX5IfFjwZzR1RG2STNPPa6FT2S0QONsmo6WPyqw/O7kD6TZApIP0qpIoGhP7fS1oA6QbBgXhSI0Iw9VPx/tf1bqhqlXuf3MnVzfqL2QjoOcW4wrUrGTjqupaF6Q0R4tklDymXE09xlfT7/BmUZwQXUrcQMyBBLXuEwjteuIsEdJSHBv1V6JqPC9yqZmADoYddGECc1D2vvdX4Qflk2ED/NAGcd+IydPf24a/OYQlxx4Nx1z+ylImBvjlVuZRitNCS2amtbA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=aruzkSKUsNciUbMXagWPYMmiCZ+8Cmt3DkB4+KAZeS0=;
 b=u25b9o92xXFEkyyytAsdUg5FEtCEo5lMwkleoiVxhVkrePSH2BKI11TbVq6wGU7WoERhzVI90mWIv1z21Kdy9UXw/KsRHx9agfmXIdK/CwWzuNyfmzQccmPNhmGGO4461iCyynlxnHkMcg32nJmnqe/5OmmUSxLwgpT5ARR3IWS3H3jsDlrvw7UKTUz4E54d+r7vmF+olcR6vAUn/etWIRixRY6ZjcOEB+21T2eM1Ftb/3gti1fnorq7nm1s6LfiQniLg/gM4s8seNheI6g+b+O6Z2zVIXXMzykfRs6YgSkBV8JKQjrZAyd19FxhGbvlALqA9IF/X0YUXsKLJ3udyw==
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=aruzkSKUsNciUbMXagWPYMmiCZ+8Cmt3DkB4+KAZeS0=;
 b=Lj+zfCrOfO3XwnzPhkeRMu51o5DE6ioYw9t2Y1fdlLifheUHxC1L2rKXtHWLqa8JxrFPaGhKtzn4kX5nmjuwDf7Vv2CCRy9H+UxY0wPZqbmsb/SF6R3cmcu365XY6ZvJUfkmw4W39zCYuwAks+ZI810ERa/5sq8UqoeubepJGko=
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: Ayan Kumar Halder <ayan.kumar.halder@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>
Subject: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection regions
Date: Thu, 10 Oct 2024 15:03:49 +0100
Message-ID: <20241010140351.309922-5-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
References: <20241010140351.309922-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: DS1PEPF00017092:EE_|CY8PR12MB8215:EE_
X-MS-Office365-Filtering-Correlation-Id: 0c4871be-9274-48ad-2b47-08dce9348f93
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?6Rffq8JctN6kev/ygMamkIvFks+eb7wZsO9yqaafKFdYwpHvi8y6KidVXU0S?=
 =?us-ascii?Q?XMTbRNjeA2zS9a/VhaFe3nQinZEzq4XfciWH2wGt42qHROgh8iYqUJ4wEoYD?=
 =?us-ascii?Q?t+qMFqj49KeXIu/zzzQ2D0wOtcNbbbsKetzCNsr8RgvbQjfTz0n1Td+RMq/+?=
 =?us-ascii?Q?Y4x2X1iADdRrGw/Qe+/n5JguS14y2cica4ApbZeCAf8Tx5HF8bNya+EbnOWN?=
 =?us-ascii?Q?j+MJwvAtV3Ib4l0WdAD+poCu6ffONU/NKKZXDAgg0YDAAPpxdYhRsp/faV7q?=
 =?us-ascii?Q?tZZKYmvKOKPkAyXG8fI9Q4TmzhHQGIktRuWWvrwJj9zxNEiSXuahbVc6PBBw?=
 =?us-ascii?Q?UWAHIGaZqVGYBTHu4aXEPSudetGmu2ZS2jSPHmqRgEBHB1DRD7wXu9tA8tpx?=
 =?us-ascii?Q?6vRPePEfGOsbKDJf09XlmhsawQtFqKIe+IovHNtJY/BNkp4tpKspanhQqI6i?=
 =?us-ascii?Q?VsDkbfmYh3qoTNFbKNpNjhwwm2cFXaMH2zAb8kzXABrb/zOdxvjFjs86so09?=
 =?us-ascii?Q?kd+6klhShkKYfVH7P2zJiFDuzyxB3HSLXetSghsuz2vMyOcFqs1Q1GcvPBp1?=
 =?us-ascii?Q?3/ZpGIDVz9389Po60wdQ3g3+NwOZNa/s7i2MtAwVm1Yxq2GGNyVO3JWEVN1A?=
 =?us-ascii?Q?cmpTbRGO7TZw40xmmHa+kzEzmGJa5qucH8SRj3Y7dAplqcHOwmQNUyCWJVlp?=
 =?us-ascii?Q?K57wyrmMIc2Jfz8oL8tsSXMh6gP5Mww9hHn5WLChSyjbwKEpN1u1NjpZ5lK/?=
 =?us-ascii?Q?pjJtE+FIuXovvODhCLGJ8fS54IczMnU13XFeJPMh6c5B/a41OR4Xm+i2kGLM?=
 =?us-ascii?Q?9eFHSgiK0oKpswBsWOMHA3ZiG+QLH20djbnRtaPAxIXFYMxqsCzaBX+5/jx2?=
 =?us-ascii?Q?hEcFqy8PbwbA8Mb+OGoDxivmtFeWZTTKyV5Whmpg5pifSqVK6mwSLA6Pgohu?=
 =?us-ascii?Q?vxmc2zU8qLI642Qh03Cj2i51Mwj+cPoz3H1dAPX2LBldFIS0O9lDGV2Qy1+F?=
 =?us-ascii?Q?83ndFkVIY5tfwbxj0enXxK3EmxXZC2pnZJq/6KKBvrMD609eP04a6FCQJ07S?=
 =?us-ascii?Q?OBXKY5S8RSk5f5atyMiKS0rIM9zxn8Pq4vJEdw7Xlt90u+Tt7V7PFAWStKaG?=
 =?us-ascii?Q?E5Pbv1ZhyjztBCh0kPxzyeszMARgsuOMQc7uscDtlJspeCfGyd83rS9Z5al0?=
 =?us-ascii?Q?ulj3np6cr4xHP9NAg+zORcvpTWBqxm5Oh2a/qvPEtgTDO8jxxwEGsI415G3f?=
 =?us-ascii?Q?oDVOuHKrkACgzdCXniX+brgSsnTvJ0uKfq2DXBc3n5kABzgbrOs4hfyoXTDf?=
 =?us-ascii?Q?cUsSLcJJkDlcNUKIX/zR9YzrzYNCji5lfRSNDzhQpknP9OCGGn9koZ0El9lj?=
 =?us-ascii?Q?wwcYbtZZXcH6kKG4AmdO1k87Ap1n?=
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:(13230040)(1800799024)(36860700013)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 14:05:13.5032
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0c4871be-9274-48ad-2b47-08dce9348f93
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:
	DS1PEPF00017092.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8215

Define enable_boot_cpu_mm() for the AArch64-V8R system.

Like boot-time page table in MMU system, we need a boot-time MPU protection
region configuration in MPU system so Xen can fetch code and data from normal
memory.

To do this, Xen maps the following sections of the binary as separate regions
(with permissions) :-
1. Text (Read only at EL2, execution is permitted)
2. RO data (Read only at EL2)
3. RO after init data and RW data (Read/Write at EL2)
4. Init Text (Read only at EL2, execution is permitted)
5. Init data and BSS (Read/Write at EL2)

Before creating a region, we check if the count exceeds the number defined in
MPUIR_EL2. If so, then the boot fails.

Also we check if the region is empty or not. IOW, if the start and end address
of a section is the same, we skip mapping the region.

To map a region, Xen uses the PRBAR_EL2, PRLAR_EL2 and PRSELR_EL2 registers.
One can refer to ARM DDI 0600B.a ID062922 G1.3  "General System Control
Registers", to get the definitions of these registers. Also, refer to G1.2
"Accessing MPU memory region registers", the following

```
The MPU provides two register interfaces to program the MPU regions:
- Access to any of the MPU regions via PRSELR_ELx, PRBAR<n>_ELx, and
PRLAR<n>_ELx.
```

We use the above mechanism for mapping sections to MPU memory regions.

MPU specific registers are defined in
xen/arch/arm/include/asm/arm64/mpu/sysregs.h.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1 - 1. Instead of mapping a (XEN_START_ADDRESS + 2MB) as a single MPU region,
we have separate MPU regions for different parts of the Xen binary. The reason
being different regions will nned different permissions (as mentioned in the
linker script).

2. Introduced a label (__init_data_begin) to mark the beginning of the init data
section.

3. Moved MPU specific register definitions to mpu/sysregs.h.

4. Fixed coding style issues.

5. Included page.h in mpu/head.S as page.h includes sysregs.h.
I haven't seen sysregs.h included directly from head.S or mmu/head.S.
(Outstanding comment not addressed).

v2 - 1. Extracted "enable_mpu()" in a separate patch.

2. Removed alignment for limit address.

3. Merged some of the sections for preparing the early boot regions.

4. Checked for the max limit of MPU regions before creating a new region.

5. Checked for empty regions.

 xen/arch/arm/Makefile                        |   1 +
 xen/arch/arm/arm64/mpu/Makefile              |   1 +
 xen/arch/arm/arm64/mpu/head.S                | 130 +++++++++++++++++++
 xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  27 ++++
 xen/arch/arm/include/asm/mm.h                |   2 +
 xen/arch/arm/include/asm/mpu/arm64/mm.h      |  22 ++++
 xen/arch/arm/include/asm/mpu/mm.h            |  20 +++
 xen/arch/arm/xen.lds.S                       |   1 +
 8 files changed, 204 insertions(+)
 create mode 100644 xen/arch/arm/arm64/mpu/Makefile
 create mode 100644 xen/arch/arm/arm64/mpu/head.S
 create mode 100644 xen/arch/arm/include/asm/arm64/mpu/sysregs.h
 create mode 100644 xen/arch/arm/include/asm/mpu/arm64/mm.h
 create mode 100644 xen/arch/arm/include/asm/mpu/mm.h

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 7792bff597..aebccec63a 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -1,6 +1,7 @@
 obj-$(CONFIG_ARM_32) += arm32/
 obj-$(CONFIG_ARM_64) += arm64/
 obj-$(CONFIG_MMU) += mmu/
+obj-$(CONFIG_MPU) += mpu/
 obj-$(CONFIG_ACPI) += acpi/
 obj-$(CONFIG_HAS_PCI) += pci/
 ifneq ($(CONFIG_NO_PLAT),y)
diff --git a/xen/arch/arm/arm64/mpu/Makefile b/xen/arch/arm/arm64/mpu/Makefile
new file mode 100644
index 0000000000..3340058c08
--- /dev/null
+++ b/xen/arch/arm/arm64/mpu/Makefile
@@ -0,0 +1 @@
+obj-y += head.o
diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
new file mode 100644
index 0000000000..4a21bc815c
--- /dev/null
+++ b/xen/arch/arm/arm64/mpu/head.S
@@ -0,0 +1,130 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Start-of-day code for an Armv8-R MPU system.
+ */
+
+#include <asm/mm.h>
+#include <asm/arm64/mpu/sysregs.h>
+
+#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
+#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
+#define REGION_DATA_PRBAR       0x32    /* SH=11 AP=00 XN=10 */
+
+#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
+
+/*
+ * Macro to prepare and set a EL2 MPU memory region.
+ * We will also create an according MPU memory region entry, which
+ * is a structure of pr_t,  in table \prmap.
+ *
+ * Inputs:
+ * sel:         region selector
+ * base:        reg storing base address (should be page-aligned)
+ * limit:       reg storing limit address
+ * prbar:       store computed PRBAR_EL2 value
+ * prlar:       store computed PRLAR_EL2 value
+ * maxcount:    maximum number of EL2 regions supported
+ * attr_prbar:  PRBAR_EL2-related memory attributes. If not specified it will be
+ *              REGION_DATA_PRBAR
+ * attr_prlar:  PRLAR_EL2-related memory attributes. If not specified it will be
+ *              REGION_NORMAL_PRLAR
+ */
+.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
+
+    /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
+    add   \sel, \sel, #1
+    cmp   \sel, \maxcount
+    bgt   fail
+
+    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
+    and   \base, \base, #MPU_REGION_MASK
+    mov   \prbar, #\attr_prbar
+    orr   \prbar, \prbar, \base
+
+    /* Limit address should be inclusive */
+    sub   \limit, \limit, #1
+    and   \limit, \limit, #MPU_REGION_MASK
+    mov   \prlar, #\attr_prlar
+    orr   \prlar, \prlar, \limit
+
+    msr   PRSELR_EL2, \sel
+    isb
+    msr   PRBAR_EL2, \prbar
+    msr   PRLAR_EL2, \prlar
+    dsb   sy
+    isb
+.endm
+
+/* Load the physical address of a symbol into xb */
+.macro load_paddr xb, sym
+    ldr \xb, =\sym
+    add \xb, \xb, x20       /* x20 - Phys offset */
+.endm
+
+/*
+ * Maps the various sections of Xen (described in xen.lds.S) as different MPU
+ * regions.
+ *
+ * Inputs:
+ *   lr : Address to return to.
+ *
+ * Clobbers x0 - x5
+ *
+ */
+FUNC(enable_boot_cpu_mm)
+
+    /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
+    mrs   x5, MPUIR_EL2
+
+    /* x0: region sel */
+    mov   x0, xzr
+    /* Xen text section. */
+    load_paddr x1, _stext
+    load_paddr x2, _etext
+    cmp x1, x2
+    beq 1f
+    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
+
+1:  /* Xen read-only data section. */
+    load_paddr x1, _srodata
+    load_paddr x2, _erodata
+    cmp x1, x2
+    beq 2f
+    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_RO_PRBAR
+
+2:  /* Xen read-only after init and data section. (RW data) */
+    load_paddr x1, __ro_after_init_start
+    load_paddr x2, __init_begin
+    cmp x1, x2
+    beq 3f
+    prepare_xen_region x0, x1, x2, x3, x4, x5
+
+3:  /* Xen code section. */
+    load_paddr x1, __init_begin
+    load_paddr x2, __init_data_begin
+    cmp x1, x2
+    beq 4f
+    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
+
+4:  /* Xen data and BSS section. */
+    load_paddr x1, __init_data_begin
+    load_paddr x2, __bss_end
+    cmp x1, x2
+    beq 5f
+    prepare_xen_region x0, x1, x2, x3, x4, x5
+
+5:
+    ret
+
+fail:
+    PRINT("- Number of MPU regions set in MPUIR_EL2 is too less -\r\n")
+    wfe
+    b   1b
+END(enable_boot_cpu_mm)
+
+/*
+ * Local variables:
+ * mode: ASM
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
new file mode 100644
index 0000000000..b0c31a58ec
--- /dev/null
+++ b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ASM_ARM_ARM64_MPU_SYSREGS_H
+#define __ASM_ARM_ARM64_MPU_SYSREGS_H
+
+/* Number of EL2 MPU regions */
+#define MPUIR_EL2   S3_4_C0_C0_4
+
+/* EL2 MPU Protection Region Base Address Register encode */
+#define PRBAR_EL2   S3_4_C6_C8_0
+
+/* EL2 MPU Protection Region Limit Address Register encode */
+#define PRLAR_EL2   S3_4_C6_C8_1
+
+/* MPU Protection Region Selection Register encode */
+#define PRSELR_EL2  S3_4_C6_C2_1
+
+#endif /* __ASM_ARM_ARM64_MPU_SYSREGS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 5abd4b0d1c..7e61f37612 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -16,6 +16,8 @@
 
 #if defined(CONFIG_MMU)
 # include <asm/mmu/mm.h>
+#elif defined(CONFIG_MPU)
+# include <asm/mpu/mm.h>
 #else
 # error "Unknown memory management layout"
 #endif
diff --git a/xen/arch/arm/include/asm/mpu/arm64/mm.h b/xen/arch/arm/include/asm/mpu/arm64/mm.h
new file mode 100644
index 0000000000..c2640b50df
--- /dev/null
+++ b/xen/arch/arm/include/asm/mpu/arm64/mm.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * mm.h: Arm Memory Protection Unit definitions.
+ */
+
+#ifndef __ARM64_MPU_MM_H__
+#define __ARM64_MPU_MM_H__
+
+#define MPU_REGION_SHIFT  6
+#define MPU_REGION_ALIGN  (_AC(1, UL) << MPU_REGION_SHIFT)
+#define MPU_REGION_MASK   (~(MPU_REGION_ALIGN - 1))
+
+#endif /* __ARM64_MPU_MM_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/mpu/mm.h b/xen/arch/arm/include/asm/mpu/mm.h
new file mode 100644
index 0000000000..92599a1d75
--- /dev/null
+++ b/xen/arch/arm/include/asm/mpu/mm.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ARM_MPU_MM__
+#define __ARM_MPU_MM__
+
+#if defined(CONFIG_ARM_64)
+# include <asm/mpu/arm64/mm.h>
+#else
+# error "unknown ARM variant"
+#endif
+
+#endif /* __ARM_MPU_MM__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index fe4b468cca..2c9b5ee238 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -157,6 +157,7 @@ SECTIONS
        *(.altinstr_replacement)
   } :text
   . = ALIGN(PAGE_SIZE);
+  __init_data_begin = .;
   .init.data : {
        *(.init.rodata)
        *(.init.rodata.*)
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:05:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:05:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816170.1230404 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sytnE-0007S1-L5; Thu, 10 Oct 2024 14:05:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816170.1230404; Thu, 10 Oct 2024 14:05: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 1sytnE-0007Rs-Gj; Thu, 10 Oct 2024 14:05:28 +0000
Received: by outflank-mailman (input) for mailman id 816170;
 Thu, 10 Oct 2024 14:05: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sytnC-0006aO-Nm
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:05:26 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20605.outbound.protection.outlook.com
 [2a01:111:f403:2405::605])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b22cfc86-8710-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:05:26 +0200 (CEST)
Received: from CH2PR07CA0052.namprd07.prod.outlook.com (2603:10b6:610:5b::26)
 by CH3PR12MB9028.namprd12.prod.outlook.com (2603:10b6:610:123::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 14:05:21 +0000
Received: from CH1PEPF0000AD7D.namprd04.prod.outlook.com
 (2603:10b6:610:5b:cafe::88) by CH2PR07CA0052.outlook.office365.com
 (2603:10b6:610:5b::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18 via Frontend
 Transport; Thu, 10 Oct 2024 14:05:21 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000AD7D.mail.protection.outlook.com (10.167.244.86) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Thu, 10 Oct 2024 14:05:21 +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.39; Thu, 10 Oct
 2024 09:05:14 -0500
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.39; Thu, 10 Oct
 2024 09:05:14 -0500
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.39 via
 Frontend Transport; Thu, 10 Oct 2024 09:05:13 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b22cfc86-8710-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=laulD8mgEE8bgVKkDpa0ChGi3H3Xo/WWeBqUNcixR3f7sd1jCWAMGFftyi4Qvfe1RoJa6SRo2XVgdSZMJDcouahm0LZ6FjWmNp3FzNR01dLkWebLxS0NByZFJ4yeqA0qkteaFmhIs+Df+1rxBSS8V/DR2z/ejoH+fhk0LAF0OdgS6dgK5v/+6q8U/QY+goXk5mr72YQZEvL54+olTqphJpN1Sp8fwN+3Pfj1NOR39pYg4Qjv3MRsVWSp+Ro75AqFc7PTWMWEBqwL360N1RU+R395rGQ3nR82FGtB0dfXCBxf7myj9ZzF70Qj0W4LtiMvQ/wib3VbJ82ldxK6Sqbl9Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=mc+2UIogysTLypyoewHZ0RzOpVjSYSg0ff0a3ZkO2SY=;
 b=LM5xEu/oAXdCkM9AC4GlfE+OlaEwZuX4RVy42rY8ihDdN2eenw1ps4yTD7XoQL4Wneof5193kINso1Gwn+U69vlDgUvS+ZStHSuqDNvZGEOIidSZ77iDVTzFm9l3B77YTmdwKPRvU1rL9ec9IF8iSApOTgmAa/KSSBg4x87Jtrwp+7dVyQelBJCH6Y79w8V34vvIF4GekSbBzJ4Wbsz7KWQFQKDR1/7u0W2H8mgPzvMR3ueri+4q8hW+QUcasbWPsvu8hpxYHg7kjuVmiVjwRecNxA+5H4cVmNcnUcW62+f/ZQXJ1bAkeJj5UxkPuSb8R3Qkals6drTPCjbUYJi7mA==
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=mc+2UIogysTLypyoewHZ0RzOpVjSYSg0ff0a3ZkO2SY=;
 b=Ymv1y0jMWsYOUBheyRj8exsQi9J9FnSnmYNZcox8seXKHC/GXjxTF1bmRKNFRz4OWgH12hLC8YgK8x2LOLB+nK/USbdlepmT3TFHQWVhpuouVzmsliLNUZNuGTZLs/5BSl9p2Y6ZOvSwg5IXlxYQrmA6hFUPagloy1RsO6MlfOI=
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: Ayan Kumar Halder <ayan.kumar.halder@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>
Subject: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Date: Thu, 10 Oct 2024 15:03:50 +0100
Message-ID: <20241010140351.309922-6-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7D:EE_|CH3PR12MB9028:EE_
X-MS-Office365-Filtering-Correlation-Id: cac452d3-b6cf-4be0-234f-08dce9349408
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?cYUyyQqg9on/VleGmm0+q6Q9WTg5yozdWASHwjQU86Yd/iRHLp8oYDV+posV?=
 =?us-ascii?Q?8Af7Q6EjeVlQDK5Asv64QmM9GGlRj5FhoDZmRNT37ECTGw5+Iw9b/j5meZAZ?=
 =?us-ascii?Q?H2JMTIhD8Kfq6xZ+qJ2kn/ov3KzIKWI1KXnbeXU0kEWGYRbvNCWGVzs+bBNv?=
 =?us-ascii?Q?NktYD0xWiO/g9zmNjMNjEJXobr+1f3WCO2IRwE190YlnAnEPXGRMGatektKA?=
 =?us-ascii?Q?7ojnfuLBjKaCcBXJba+rVUGFNcrhBoQTRF3+qOfGoRTNZgQb1Bn/EiengQOS?=
 =?us-ascii?Q?1vvHs6uGk1yBlPXuK047a218RaKA0eESZ4dReucFzfBFPA/QKCQwhAEQHYWn?=
 =?us-ascii?Q?edkqjQeUd5LWG1o5GjMBjzrTtOZWZXEoTayuJOGlMybd4aFraNBFO7RvAai2?=
 =?us-ascii?Q?oWGV2oqVUJT9lgkfcy87JJgWYsbLjADC879r/mq+xHvDmLQM7FzmmXdDhejH?=
 =?us-ascii?Q?RihM99fYrLE+bgfefsE5Riu2ghVJVuy8kD0qby90GRsBlsMc8nx2uCv+hyUh?=
 =?us-ascii?Q?7AdwEsBhqIr4BN6/sXxl1k3KwgKQKrYM51OLC9CGCl8UgKLeTN1uxKhkOItS?=
 =?us-ascii?Q?W747IY5u+ANsR39C6ZT8OoaU288fU1WqOzKJ/ucb+2Veen1bgdLueAxE3q9e?=
 =?us-ascii?Q?NTnIoCc8HIDlnZMpXpl+ThCeXYs0NB9ALYNutjbm4suFLC6ukg8ho8po2Qz6?=
 =?us-ascii?Q?qrcOoj192/VsUfCaNgS9k8ZOBxEWTspcEYgOWaI5PbLKKXvH0nMCxc8ZeCox?=
 =?us-ascii?Q?3Zls2jLg3RTWh1y6Fp8myb+rbl+o4+tS6Ex9DBwk5yjAAmHePf7AqMWY7qNy?=
 =?us-ascii?Q?fFg5k3WFMRZyOM7uajFCx4qv9qi+ZjReWDxPXc5eaLz2z3p1Cmw1uIQ+4goU?=
 =?us-ascii?Q?UelsJDbIisAJYNe9smMMG5qq6DpgSDa3ZC5yGeSlcX/7UfS7cCCSXuVAJT7y?=
 =?us-ascii?Q?uUPs3B9Wx3USLz9QJar2bPjSnH0aBjokQ8+nQOSyjtd8JQy/7tzUz3oK/PVD?=
 =?us-ascii?Q?JAmE+XXBlhFzNBT+BsJSI8lANw37o+VaUMOV7NxuzNc6aPOfqHpOsw+W6yh6?=
 =?us-ascii?Q?ZbsDNTmwNIQdKxdVffWBN/BtpFOZfzlYD6dwa5G2BdUAQuUImosjPIW56UIX?=
 =?us-ascii?Q?xC5IY8sdk6ncdyFy/dDOCuXXsn7i7xNQP5cETJyXrfri8MwxxqGPqi8GKRdT?=
 =?us-ascii?Q?1FWuBUw4Mm2S6PmFrDvgu2uvN70CTsx/hlJAmSJaCsmY6aFFm4xP2INb9rgR?=
 =?us-ascii?Q?A/NJfdduM0gifKV1S5XU/pqttYg5vd5QBBgUvkX7ckN8e5YvBGvJ33ZAr5Q6?=
 =?us-ascii?Q?i+G9wEXieTMhGz1rv7UFefNppNquz1/YF3OmEa7Qcmc+azf+5N8L455TyYLI?=
 =?us-ascii?Q?lWuY/hs=3D?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 14:05:21.0119
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cac452d3-b6cf-4be0-234f-08dce9349408
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:
	CH1PEPF0000AD7D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9028

After the regions have been created, now we enable the MPU. For this we disable
the background region so that the new memory map created for the regions take
effect. Also, we treat all RW regions as non executable and the data cache is
enabled.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v2 - 1. Extracted from the previous patch into a new one.

2. Disabled background region.

 xen/arch/arm/arm64/mpu/head.S                | 29 ++++++++++++++++++--
 xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  3 ++
 2 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
index 4a21bc815c..e354f4552b 100644
--- a/xen/arch/arm/arm64/mpu/head.S
+++ b/xen/arch/arm/arm64/mpu/head.S
@@ -61,6 +61,30 @@
     add \xb, \xb, x20       /* x20 - Phys offset */
 .endm
 
+/*
+ * Enable EL2 MPU and data cache
+ * If the Background region is enabled, then the MPU uses the default memory
+ * map as the Background region for generating the memory
+ * attributes when MPU is disabled.
+ * Since the default memory map of the Armv8-R AArch64 architecture is
+ * IMPLEMENTATION DEFINED, we intend to turn off the Background region here.
+ *
+ * Clobbers x0
+ *
+ */
+FUNC_LOCAL(enable_mpu)
+    mrs   x0, SCTLR_EL2
+    bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
+    orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
+    orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
+    orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
+    dsb   sy
+    msr   SCTLR_EL2, x0
+    isb
+
+    ret
+END(enable_mpu)
+
 /*
  * Maps the various sections of Xen (described in xen.lds.S) as different MPU
  * regions.
@@ -68,10 +92,11 @@
  * Inputs:
  *   lr : Address to return to.
  *
- * Clobbers x0 - x5
+ * Clobbers x0 - x6
  *
  */
 FUNC(enable_boot_cpu_mm)
+    mov   x6, lr
 
     /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
     mrs   x5, MPUIR_EL2
@@ -113,7 +138,7 @@ FUNC(enable_boot_cpu_mm)
     beq 5f
     prepare_xen_region x0, x1, x2, x3, x4, x5
 
-5:
+5:  mov   lr, x6
     ret
 
 fail:
diff --git a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
index b0c31a58ec..3769d23c80 100644
--- a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
+++ b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
@@ -15,6 +15,9 @@
 /* MPU Protection Region Selection Register encode */
 #define PRSELR_EL2  S3_4_C6_C2_1
 
+/* Backgroud region enable/disable */
+#define SCTLR_ELx_BR    BIT(17, UL)
+
 #endif /* __ASM_ARM_ARM64_MPU_SYSREGS_H */
 
 /*
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:28:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:28:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816223.1230413 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syu9q-0004PQ-Ag; Thu, 10 Oct 2024 14:28:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816223.1230413; Thu, 10 Oct 2024 14:28: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 1syu9q-0004PJ-8B; Thu, 10 Oct 2024 14:28:50 +0000
Received: by outflank-mailman (input) for mailman id 816223;
 Thu, 10 Oct 2024 14:28: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=GYHQ=RG=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1syu9o-0004PD-Ab
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:28:48 +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 f56113c0-8713-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 16:28:46 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a99422929c5so116425466b.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 07:28:46 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f29b3sm95104766b.221.2024.10.10.07.28.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 10 Oct 2024 07:28:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f56113c0-8713-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728570526; x=1729175326; 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=GEjYTwbF2lGZ2hkzxCWc3Gh+XHxdL7VdwDWO+WyaQ6o=;
        b=Ff9s/GjcJ4APwtm9M3RTY+CarNO4FTk6uiTQM9aTHOwWcaOQAR6Agr24pHG2R+v8RJ
         ltYhsvIouAZR7zQ/VmQhgBcDTFNDg9ILmTJ7fQUsmg/whAG8VeSprki/kEEp7rg+B1CF
         5jRZaEhG3apiU1oXsbqAfFFsw7XjUe34C/ZDjOeM7PGNHrQHxQZQrekMsMVXoACCBvvA
         vN2XSyg7FmReWNvWVrEG80J716d3pk5cUl6YelSmzR3lC/CZJWTy86WYOHqd7D/ktapi
         4coZLpeMJzUN+pwbDHzWAo9KL1raHVLqo70pGSvckGHxWWZtTT13vil1tTfvxUNazmsx
         APWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728570526; x=1729175326;
        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=GEjYTwbF2lGZ2hkzxCWc3Gh+XHxdL7VdwDWO+WyaQ6o=;
        b=bmBNBvIeQgx9vXPppLN6gfIoZj5xbEYcjrGRZgbYVfu2/UlbRsAu/dna7AuCc0ujEs
         aXinAKTVsNB2ulyKMdJ6O/SGV0JDb61i2cCEK6ZRCJDLY/6BpTKs9Z/J4K1JrhTIijSO
         ZVEJ0OcLFmq3vFeLl2EtvLFgypgrHpK/N4AB2mVokkYoScMg/ruO0OsWI8NwgYnyPu1e
         SkzaIt5UbJvrP92m66hX7HCrdjEiVgQDkjODngZDgacoDLc23cST3emPTrfWDLGd19FW
         /R3cT04Uf2fNdTsYuYUjV4gkdI4+V7ZO/NSxRGJxUWKjSZ+5NJ9RNsCZmUlqseM9pDHi
         wrtA==
X-Forwarded-Encrypted: i=1; AJvYcCXJIqiwiFEd+7NkqhOBO3dfV+fKYA+vszVjahfVtDorEaa/ryfdAvej9DelPDuvKVJ9nhYADBmYOeA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxxO8/9fuAMmo8H4T4lgOxwvAKgxiAMBKYLciFDevvyy66y+DO+
	6y0T1tU8/W9kiy3oaIjcB7dLmRXtDEDrevsoKfm6eWLWMQQqRqvtTMJoXjlSog==
X-Google-Smtp-Source: AGHT+IFpKCrVNQ383gtQUfF3AuSIwi39Z1RNrltFaBm/3iYa9jSFWD3LNN4AgjAQeNmhnzSaCQi3zg==
X-Received: by 2002:a17:907:3f87:b0:a99:4f91:790 with SMTP id a640c23a62f3a-a998d208810mr584271466b.31.1728570525804;
        Thu, 10 Oct 2024 07:28:45 -0700 (PDT)
Message-ID: <9032c1bd-cfe5-48b8-83fe-f411791b2f5a@suse.com>
Date: Thu, 10 Oct 2024 16:28:44 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-7-ayan.kumar.halder@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: <20241010140351.309922-7-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.10.2024 16:03, Ayan Kumar Halder wrote:
> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>  
>  config NR_CPUS
>  	int "Maximum number of CPUs"
> +	range 1 1 if MPU

I think this "if" and ...

>  	range 1 16383
>  	default "256" if X86
>  	default "8" if ARM && RCAR3
>  	default "4" if ARM && QEMU
>  	default "4" if ARM && MPSOC
> +	default "1" if ARM && MPU

... this one need to have the same condition.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:40:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:40:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816235.1230427 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syuLL-00070B-D6; Thu, 10 Oct 2024 14:40:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816235.1230427; Thu, 10 Oct 2024 14: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 1syuLL-000704-9S; Thu, 10 Oct 2024 14:40:43 +0000
Received: by outflank-mailman (input) for mailman id 816235;
 Thu, 10 Oct 2024 14:40: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=M84p=RG=linux.intel.com=andriy.shevchenko@srs-se1.protection.inumbo.net>)
 id 1syuLJ-0006zw-V3
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:40:41 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9d2734ea-8715-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 16:40:39 +0200 (CEST)
Received: from fmviesa004.fm.intel.com ([10.60.135.144])
 by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 10 Oct 2024 07:40:36 -0700
Received: from smile.fi.intel.com ([10.237.72.154])
 by fmviesa004.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 10 Oct 2024 07:40:22 -0700
Received: from andy by smile.fi.intel.com with local (Exim 4.98)
 (envelope-from <andriy.shevchenko@linux.intel.com>)
 id 1syuKv-00000001Z6U-0EM4; Thu, 10 Oct 2024 17:40:17 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d2734ea-8715-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1728571239; x=1760107239;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=Uq5PgKpLE7uhqRzqfCFPjNL9bUnSLqy/ztfVl9urxFg=;
  b=k/8xy6jvLKzVyk5/ZE3tq2QzaMLj9o6oMAh4T6zqo+5T5f2eoWUUe+Eo
   TgEnxP7h9hGS6VcRF2HvwcO5ritVhbFhzXIIQzzDkiOsyhOF/N5hdbleU
   VGT49OwcGyAc23lLQ68Sjr9AcHQifd9yqVHXwfcwcunWuwsgEHcQnwdMg
   aWDQnCAkznpVVqZHLTvprlQwteV/t9x6OxxZhp1sTLPhFMO3JqdbAXjU5
   FvYbQ65v0vOxVBvwPNIz7Ip/cvjuA3Ki0MUDHXnS4feWqAXjYSwENe2Ud
   7VikdHKYKAtC71++/iQBW0u7yL/KrhZ5MTfqw8jn9uFJbgebH26QY+oMD
   g==;
X-CSE-ConnectionGUID: ZX88UCyVRn2/OvirugydMg==
X-CSE-MsgGUID: lSeo4bEvScSFcSGv9Ck1FA==
X-IronPort-AV: E=McAfee;i="6700,10204,11220"; a="28065608"
X-IronPort-AV: E=Sophos;i="6.11,193,1725346800"; 
   d="scan'208";a="28065608"
X-CSE-ConnectionGUID: 24TFoChFQf2xX8y5S/3N6A==
X-CSE-MsgGUID: bcd6cbeoShWJdS+S7bWq0g==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,193,1725346800"; 
   d="scan'208";a="81191373"
Date: Thu, 10 Oct 2024 17:40:16 +0300
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
Message-ID: <ZwfnULv2myACxnVb@smile.fi.intel.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-2-pstanner@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241009083519.10088-2-pstanner@redhat.com>
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo

On Wed, Oct 09, 2024 at 10:35:07AM +0200, Philipp Stanner wrote:
> pci_intx() is a hybrid function which sometimes performs devres
> operations, depending on whether pcim_enable_device() has been used to
> enable the pci_dev. This sometimes-managed nature of the function is
> problematic. Notably, it causes the function to allocate under some
> circumstances which makes it unusable from interrupt context.
> 
> To, ultimately, remove the hybrid nature from pci_intx(), it is first
> necessary to provide an always-managed and a never-managed version
> of that function. Then, all callers of pci_intx() can be ported to the
> version they need, depending whether they use pci_enable_device() or
> pcim_enable_device().
> 
> An always-managed function exists, namely pcim_intx(), for which
> __pcim_intx(), a never-managed version of pci_intx() had been
> implemented.

> Make __pcim_intx() a public function under the name
> pci_intx_unmanaged(). Make pcim_intx() a public function.

To avoid an additional churn we can make just completely new APIs, namely:
pcim_int_x()
pci_int_x()

You won't need all dirty dances with double underscored function naming and
renaming.


...

> +	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> +
> +	if (enable)
> +		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
> +	else
> +		new = pci_command | PCI_COMMAND_INTX_DISABLE;
> +
> +	if (new != pci_command)

I would use positive conditionals as easy to read (yes, a couple of lines
longer, but also a win is the indentation and avoiding an additional churn in
the future in case we need to add something in this branch.

> +		pci_write_config_word(pdev, PCI_COMMAND, new);

...

Otherwise I'm for the idea in general.

-- 
With Best Regards,
Andy Shevchenko




From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:43:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:43:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816244.1230438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syuOB-0007dF-Uu; Thu, 10 Oct 2024 14:43:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816244.1230438; Thu, 10 Oct 2024 14: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 1syuOB-0007d8-Ry; Thu, 10 Oct 2024 14:43:39 +0000
Received: by outflank-mailman (input) for mailman id 816244;
 Thu, 10 Oct 2024 14: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1syuOA-0007d2-Ni
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:43:38 +0000
Received: from mail-oo1-xc2a.google.com (mail-oo1-xc2a.google.com
 [2607:f8b0:4864:20::c2a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 08546042-8716-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:43:37 +0200 (CEST)
Received: by mail-oo1-xc2a.google.com with SMTP id
 006d021491bc7-5e5a0519d00so393218eaf.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 07:43:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 08546042-8716-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728571416; x=1729176216; 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=S0G/lY9SnA2OLILoaWPsygJS4HfGd0u87apXswA8bNo=;
        b=fY3lGbpClg2ZEJUazeY4Ecof8wik+Qjpb8LM4LNGnwOStrjj01rTHWiviFmlBVSAAH
         1v2UIBu3autFVqja4tPuLHYZE9cB5G4oEUIpxHRtRnqmYOVOkMcCZ4sLdysqwSZDmMz4
         QP3SALuD+8Rd1YaUUVBS6bp6OS8azGXf1PMZQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728571416; x=1729176216;
        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=S0G/lY9SnA2OLILoaWPsygJS4HfGd0u87apXswA8bNo=;
        b=fex07HHtzcMyJ77Ha7ogEGITQbCrprLXR0boBJYourGBLe+FchatHFS79nZnjQTBq6
         hzFP9llvMOBO9Xqi7Y0Zx9CKMPvXxg6JRLffLpY1i+jG9qtkeavItlEd/FL1+f/YOw3y
         5OG7OYQfelaruEvzcM+Y4DQ3JoMP8F/jOP6nV+RYKx9CPUfO3AUgLuaWJ3wrenZsVWAU
         BPAfya0H87Xah5kM4/eAhmQlWyU3hcUiso+rWotnzJv04Rf7z+6hActS9oRyErAldKci
         Cul5rg7gZ7s3GBRCoGsjGWE5Clrr6Ic+MT9e+k4OFj1aLtvEfvIEA1wJscnQ44DQy94X
         /6UA==
X-Gm-Message-State: AOJu0YzUEtTBp0IWxvhJcQW+ig6l4yBjNj9nAwGE559IcD0nmUUh4GGh
	9tyltX0n7FXrDGoBhl+o+E38SqOBj9OytlDXsxIx4jyRMseLt87JUnqmaVamxmBlfxNWNYgdup8
	r+ouQWhdtKjmUU3cdMdWoku/zPPZvxnF1HQIKCQ==
X-Google-Smtp-Source: AGHT+IElaDQNs8+4ygfiT/fzbWhSpgVMQRsOZ3zlnOkPGGpsptcNjDD4nBpOEsPe1INJHl4FBDPoR4v8eb1jBZbnArI=
X-Received: by 2002:a05:6870:d1c9:b0:26c:5312:a13b with SMTP id
 586e51a60fabf-288344bfaa7mr4440598fac.30.1728571416404; Thu, 10 Oct 2024
 07:43:36 -0700 (PDT)
MIME-Version: 1.0
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com> <20241010140351.309922-2-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-2-ayan.kumar.halder@amd.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 10 Oct 2024 15:43:25 +0100
Message-ID: <CACHz=Zh402HGV-=5Lbm5auZS0qX6KXH7ZPHvT3WUZ=EjJ4JE2A@mail.gmail.com>
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 10, 2024 at 3:05=E2=80=AFPM Ayan Kumar Halder
<ayan.kumar.halder@amd.com> wrote:
>
> If the BSS section is empty, then the function can just return.
>
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from :-
>
> v1..v2 - New patch introduced in v3.
>
>  xen/arch/arm/arm64/head.S | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index 14c3720d80..72c7b24498 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
>          PRINT("- Zero BSS -\r\n")
>          ldr   x0, =3D__bss_start       /* x0 :=3D vaddr(__bss_start) */
>          ldr   x1, =3D__bss_end         /* x1 :=3D vaddr(__bss_end)   */
> +        cmp   x1, x0
> +        beq   skip_bss
>
>  1:      str   xzr, [x0], #8
>          cmp   x0, x1

Why not just transforming the "do while" loop into a "while" one and
just jump to cmp?

Something like (not tested)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 14c3720d80..987f243578 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -346,9 +346,10 @@ FUNC_LOCAL(zero_bss)
        PRINT("- Zero BSS -\r\n")
        ldr   x0, =3D__bss_start       /* x0 :=3D vaddr(__bss_start) */
        ldr   x1, =3D__bss_end         /* x1 :=3D vaddr(__bss_end)   */
+        b     2f

1:      str   xzr, [x0], #8
-        cmp   x0, x1
+2:      cmp   x0, x1
        b.lo  1b

skip_bss:

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:45:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:45:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816251.1230449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syuPr-0008Aw-9s; Thu, 10 Oct 2024 14:45:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816251.1230449; Thu, 10 Oct 2024 14: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 1syuPr-0008Ap-5s; Thu, 10 Oct 2024 14:45:23 +0000
Received: by outflank-mailman (input) for mailman id 816251;
 Thu, 10 Oct 2024 14:45: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=NG+C=RG=casper.srs.infradead.org=BATV+368770c0ca5004ac3ece+7718+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1syuPo-0008Ah-UQ
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:45: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 44ec1e30-8716-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:45:19 +0200 (CEST)
Received: from [2001:8b0:10b:5:b738:9e92:c87a:9258]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux))
 id 1syuPk-00000007sFl-048u; Thu, 10 Oct 2024 14:45: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: 44ec1e30-8716-11ef-a0bd-8be0dac302b0
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=9UpAqBaLdOwjRfattNdMmmFMPmb/qAcE+NJFCvCGM9Y=; b=fGcWAtZc2ogH4c/JlkB1SJ8hUe
	006u6ZW0dVRw+fOiwpFbdZ31j0WkQofl7LBGGkHrxGUifjird9qviluEyId3wJO7Y2IqDY50Q8oQ3
	L6ljA6vd90ee38TEXQzqs4JwQ44jg9cKcQqPdWsaV6PbDJwb9QS9SLA8a+ZzmKCzLYoDjs7G0L416
	IT5CX2M8fdLfTbrd/LcFfib0Qyv5TRhOHH9I9Iy7WEwf1oLoaYvVMnq+2F6hYtchqLCW7/Pxf7Aa0
	hF+Roaf067WmWPW16YeKj8OPWL8ekk8k1erl73YmF4BfRkzW+rdYmCAlkgNhmilB4U57orEXcYfZ0
	AUaNhQLA==;
Message-ID: <422974b53c8da25c917a540d2f6aa5b7e6c247cf.camel@infradead.org>
Subject: Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
From: David Woodhouse <dwmw2@infradead.org>
To: Jan Beulich <jbeulich@suse.com>, =?ISO-8859-1?Q?S=E9bastien?= Chaumat
 <euidzero@gmail.com>, Roger Pau =?ISO-8859-1?Q?Monn=E9?=
 <roger.pau@citrix.com>,  Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Mario Limonciello <mario.limonciello@amd.com>, Juergen Gross
	 <jgross@suse.com>, Marek =?ISO-8859-1?Q?Marczykowski-G=F3recki?=
	 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
Date: Thu, 10 Oct 2024 15:45:14 +0100
In-Reply-To: <962cad57-21a8-4882-a23a-95add04cac9b@suse.com>
References: 
	<CAKm-Umas=5=JzooRzPHxUDigKpFK3Ze7cQcG8eR5kWgn-d_7fQ@mail.gmail.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>
	 <214585d5-689d-4ba6-bd48-359428a7ed8f@amd.com>
	 <CAKm-UmZoKwre8-G793VqRNFCmzAti1o-0Kp3ZyV_Z5cc0YNiKw@mail.gmail.com>
	 <CAKm-Umb=kGFqc5je9E3bbfQ0bcbZeY_Ntv5JDmO-vXj3N0MvPg@mail.gmail.com>
	 <CAKm-UmZ113q-a8wEE5yo0OPPM3JpNqJzKaU1eNiCzT2YkGU0pQ@mail.gmail.com>
	 <CAKm-UmaG3KRtDkrEH7cNgLkRkRs2HG357S=BUjomhN6Ad-AkCQ@mail.gmail.com>
	 <962cad57-21a8-4882-a23a-95add04cac9b@suse.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-oVGzV8JU921wCdqYk8wt"
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


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

On Thu, 2024-03-07 at 09:39 +0100, Jan Beulich wrote:
> On 06.03.2024 18:28, S=C3=A9bastien Chaumat wrote:
> > Reasoning backward=C2=A0 (using a=C2=A0 kernel without the pinctrl_amd =
driver to
> > > ensure xen only is at stake) :
> > > =C2=A0checking the diff in IOAPIC=C2=A0 between bare metal and xen=C2=
=A0 (IRQ7 is on
> > > pin07 on APIC )
> > >=20
> > > using kernel argument : apic=3Ddebug
> > >=20
> > > bare metal :
> > > [=C2=A0=C2=A0=C2=A0 0.715330] fedora kernel: ... APIC VERSION: 810500=
10
> > > ...
> > > [=C2=A0=C2=A0=C2=A0 0.715433] fedora kernel:=C2=A0 pin07, disabled, e=
dge , high, V(00),
> > > IRR(0), S(0), physical, D(0000), M(0)
> > >=20
> > > xen :
> > > [=C2=A0=C2=A0=C2=A0 2.249582] fedora kernel: ... APIC VERSION: 000000=
14
> > > ...
> > > [=C2=A0=C2=A0=C2=A0 2.249730] fedora kernel:=C2=A0 pin07, disabled, l=
evel, low , V(60),
> > > IRR(0), S(0), physical, D(0000), M(0)
> > >=20
> > > So the APIC table is not the same.
> > >=20
> > > As strange as it looks the=C2=A0 (IOAPIC 0) pin07 is correctly descri=
bed by the
> > > APIC in xen but yet differently than in baremetal.
> > > But the APIC message comes long after the
> > > [=C2=A0=C2=A0=C2=A0 1.833145] fedora kernel: xen: registering gsi 7 t=
riggering 0 polarity
> > > 1
> > >=20
> > > so I wonder if the APIC pin07 info had any influence.
> > >=20
> > > Finally found the fix : adding ioapic_ack=3Dnew to xen boot parameter=
s.
> > Not only the trackpad is now working but also the ACPI Embedded Control=
ler
> > which is completely disabled.
>=20
> Hmm, interesting. From someone else's laptop many years ago I had actuall=
y
> an indication in the opposite direction: That didn't work because of our
> defaulting to new (no directed EOI in sight yet back at that time). I
> wonder if overriding the ack method isn't actually just papering over the
> underlying actual issue here, whatever that is. IOW with the edge vs leve=
l
> mismatch addressed I'd hope the override could then be dropped again.

With interrupt remapping enabled, I'm surprised any of it works.
Especially the broadcast EOI.

Remember, the I/O APIC is just a device for turning line interrupts
into MSIs. You couldn't tell from the Xen code, but there's fairly much
no reason for the IOMMU interrupt remapping code, and the I/O APIC
code, to know *anything* about each other.

There is an upstream *target* of the MSIs generated from the I/O APIC.
That's either an Intel IOMMU, and AMD IOMMU, or a standard APIC without
remapping. You ask that upstream target to compose a standard MSI
message (address within 0xFEExxxxx, data).=20

Then you hand that to the I/O APIC and all it needs to do is swizzle
those address and data bits into the right place in the RTE.

For more information see=20
https://lore.kernel.org/all/20201024213535.443185-22-dwmw2@infradead.org/
where I decoupled these in Linux, and a little light bedtime reading at
http://david.woodhou.se/more-than-you-ever-wanted-to-know-about-x86-msis.tx=
t

The only caveat to this simplicity is the whole EOI thing.
Historically, the I/O APIC would be told of an EOI for a given
*vector*, and it would scan the RTEs for all its pins and clear the
remote_irr bit for any level-triggered pin which matched that vector.

But now, those low 8 bits of the RTE, which end up in the low 8 bits of
the MSI data, aren't necessarily the 'vector' at all. For the Intel
IOMMU remapping, those bits aren't used at all (so actually we can just
put the vector in there, and keep the I/O APIC happy).

But with an AMD IOMMU, the low bits of the MSI data are actually used
as the index into the IOMMU's Interrupt Remapping Table. So *that* is
the number which needs to be fed to the I/O APIC's explicit EOI
register.... and good luck getting the CPU's local APIC to generate the
right value for the broadcast!

So... with the directed EOI, when __eoi_IO_APIC_irq() finds the
*actual* vector with 'vector =3D desc->arch.vector', then calls
__io_apic_eoi() with that value...

... and when __io_apic_eoi() then blindly writes that 'vector' to the
I/O APIC EOI register, it's writing the wrong thing. At least with AMD
interrupt remapping enabled.

So I believe this 'fixes' the issue, when using directed EOI:=20

--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -298,8 +298,15 @@ static void __io_apic_eoi(unsigned int apic, unsigned =
int vector, unsigned int p
     /* Prefer the use of the EOI register if available */
     if ( ioapic_has_eoi_reg(apic) )
     {
-        /* If vector is unknown, read it from the IO-APIC */
-        if ( vector =3D=3D IRQ_VECTOR_UNASSIGNED )
+        /* If vector is unknown, read it from the IO-APIC. Also,
+         * with interrupt remapping, the field the IO-APIC thinks
+         * is the "vector" might be something completely different.
+         * With an AMD IOMMU it's the low bits of the IRTE index
+         * into the IOMMU's table, for example. So using the actual
+         * delivery vector which is stored in the IRTE would be wrong;
+         * we need to use the actual bits the IO-APIC sees in the RTE.
+         */
+        if ( iommu_intremap || vector =3D=3D IRQ_VECTOR_UNASSIGNED )
             vector =3D __ioapic_read_entry(apic, pin, true).vector;
=20
         *(IO_APIC_BASE(apic)+16) =3D vector;


That's actually reading back from the RTE each time, which isn't ideal.
I think what we should actually do is ensure there's a 1:1 mapping
between the I/O APIC pin numbers and the IRTE indices (since the AMD
IOMMU has a per-device IRT anyway), and then you can just write the
pin# *instead* of the vector# to the EOI register.

I don't really see how this would ever work with the "new" (that is,
broadcast EOI) method. I'm confused about that part. I wonder if
there's some AMD magic, like broadcast EOI ending *all* level
interrupts?




--=-oVGzV8JU921wCdqYk8wt
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
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQxMDEwMTQ0NTE0WjAvBgkqhkiG9w0BCQQxIgQgLIv0YjZF
OK63Y6SJGalzqvYddgHtytArfu9tdboI7Ucwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCZtZR5HsTsl5GY8sDyCYcFzgs+gnytQSvJ
f+DFZ+R3qiTLkiHJDFo03eT7dX33laiYYkyeIEWvN3A3ZQrBlVvxSLU6+K+eW7XWcCa+hux39+Lw
0R1rJJ+CqxmYjKjSMxz1h4k4bwcBT0oi1XoLd1TWCPp/khHNm0r42eAZHHafMfkjNWA+Z+B8AkIg
Ktc78uA2pIkEvOR5RKFCx6o81Cjja+Zg9+nXhSkNWajHhzr1y9u1kNupuf8tcuh3cyBgyRd3g0Cn
CEwsYzL25+96hP4qxTxw/zA6rM7T2hduGiVR2/bkjOo9nlfTYfEyk565B6NSlFxeUG6exTjWoQXC
m3vp5ESvQnbnGuVFkj50+K+lbmHNt3XTknk5V0BJcAOp3V/5+nAX6MYLuUty69qWFOYAMEunRHui
swjlba79Dsl8aIDRdOXf78pVNS2RU1sgqifA75Bbj3yFFpKWEuWopSdSDdbYHLgr7F5IHxoTIdTC
ApKDrOm39MZb5/yPS+JmSsVKLlVhalF561xVb5Sz/nXvpcMgQEjeq8k5pGyLij1GD6byBqHVN1Ze
gnVUNAevthpr/AAjfo3Q+kYsI3yJIJEZEibxAx/O+o/l9TJJYbCNXKdBTXVJbGlmbKhMt6L89Rtl
DcPptNOOmzOHiWbP80Tx/HxyJo9ZM6MJy7E78/3mKgAAAAAAAA==


--=-oVGzV8JU921wCdqYk8wt--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:47:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:47:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816261.1230457 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syuRt-0000aS-JZ; Thu, 10 Oct 2024 14:47:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816261.1230457; Thu, 10 Oct 2024 14: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 1syuRt-0000aL-Gv; Thu, 10 Oct 2024 14:47:29 +0000
Received: by outflank-mailman (input) for mailman id 816261;
 Thu, 10 Oct 2024 14:47: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=M84p=RG=linux.intel.com=andriy.shevchenko@srs-se1.protection.inumbo.net>)
 id 1syuRr-0000Zx-Mi
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:47:27 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8f84c436-8716-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:47:25 +0200 (CEST)
Received: from fmviesa006.fm.intel.com ([10.60.135.146])
 by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 10 Oct 2024 07:47:19 -0700
Received: from smile.fi.intel.com ([10.237.72.154])
 by fmviesa006.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 10 Oct 2024 07:47:03 -0700
Received: from andy by smile.fi.intel.com with local (Exim 4.98)
 (envelope-from <andriy.shevchenko@linux.intel.com>)
 id 1syuRN-00000001ZEK-3XKp; Thu, 10 Oct 2024 17:46:57 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f84c436-8716-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1728571646; x=1760107646;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=c86bZx+YmfvhEWvQvzDAR3YRQcbqsE152hsx636Xtrw=;
  b=cjXn76xNUrzThL9oezEvYokDxFyB3lSnf9n/ExLNu85cE7mZnJpjPueo
   UMalUqfiPoU8rsTYpnunQNfoXnm0WGu97PXnUD3EOZURTbySxfSrGn+OJ
   7rTGjTp1QU3J0oWCT/KwHCfy7DE6xdG5IyGSZJOqfxlqZMHSnQCiHnmKl
   0e6Hw1Tq2VngcUyn0knxdZhFb6Wa7GR865w3SRNt2JMvc2NrfMbLPa9G8
   dcTB13MtnRjB9FaiDf/VmMQSG8Ea2vd6ut2EYLqRiQqxtiJO0iqocaAlT
   d6sUqjThcex52eQbppSgO4yDHL12mExEt4ZMptW8DZaxdL2S49yhTQPNI
   w==;
X-CSE-ConnectionGUID: of4kagmISnueo4hZFYzQfw==
X-CSE-MsgGUID: f2VWyUqfTlCaD+JIjtmdEA==
X-IronPort-AV: E=McAfee;i="6700,10204,11220"; a="27879205"
X-IronPort-AV: E=Sophos;i="6.11,193,1725346800"; 
   d="scan'208";a="27879205"
X-CSE-ConnectionGUID: CFVtLA2bR8m8vXo4U4Ht/Q==
X-CSE-MsgGUID: 75L4zIgtTbi5nHx/jM5AKw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,193,1725346800"; 
   d="scan'208";a="76227214"
Date: Thu, 10 Oct 2024 17:46:57 +0300
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 02/13] ALSA: hda: hda_intel: Use always-managed
 version of pcim_intx()
Message-ID: <Zwfo4dr4bfqQGGyl@smile.fi.intel.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-3-pstanner@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241009083519.10088-3-pstanner@redhat.com>
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo

On Wed, Oct 09, 2024 at 10:35:08AM +0200, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> hda_intel enables its PCI-Device with pcim_enable_device(). Thus, it needs
> the always-managed version.
> 
> Replace pci_intx() with pcim_intx().

...

>  	bus->irq = chip->pci->irq;
>  	chip->card->sync_irq = bus->irq;
> -	pci_intx(chip->pci, !chip->msi);
> +	pcim_intx(chip->pci, !chip->msi);
>  	return 0;

I believe each driver needs an individual approach. Looking at the above
I would first to understand why this one is being used and why we can't
switch to pci{m}_alloc_irq_vectors(). (Yeah, managed pci_alloc_irq_vectors()
is probably still missing, I don't remember if you introduced it or not.

-- 
With Best Regards,
Andy Shevchenko




From xen-devel-bounces@lists.xenproject.org Thu Oct 10 14:50:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 14:50:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816270.1230468 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syuV9-0004Iv-4g; Thu, 10 Oct 2024 14:50:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816270.1230468; Thu, 10 Oct 2024 14: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 1syuV9-0004Io-1o; Thu, 10 Oct 2024 14:50:51 +0000
Received: by outflank-mailman (input) for mailman id 816270;
 Thu, 10 Oct 2024 14:50: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=M84p=RG=linux.intel.com=andriy.shevchenko@srs-se1.protection.inumbo.net>)
 id 1syuV8-0004Ii-1u
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 14:50:50 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 08be84fc-8717-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 16:50:48 +0200 (CEST)
Received: from orviesa001.jf.intel.com ([10.64.159.141])
 by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 10 Oct 2024 07:50:46 -0700
Received: from smile.fi.intel.com ([10.237.72.154])
 by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 10 Oct 2024 07:50:31 -0700
Received: from andy by smile.fi.intel.com with local (Exim 4.98)
 (envelope-from <andriy.shevchenko@linux.intel.com>)
 id 1syuUj-00000001ZJ4-117L; Thu, 10 Oct 2024 17:50:25 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 08be84fc-8717-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1728571849; x=1760107849;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:content-transfer-encoding:in-reply-to;
  bh=sibCqydeqQiNQIf/lBDGFiiLV6uF5mNsecPlSRVwL9Y=;
  b=K83MERJtQeV8Dat0yDx4V+yHIec0qBTRpV+2FG/Rbjf41BeK8bn+1OsM
   CK1RKwRwOXrO++tB03plmt1T2NyIH7soNFO8kE1rI2UzXui38TJpfkylX
   u9TRHduggsThNwbYzn76ktP3VCfONIM5CLhjSCV8WWoRO5RcoEh5uHXo7
   bIZ8IxTPaPubnGm1VpHo5wi1Vgzh3aRGdpPb3larfCI2ppPiv0bI3uFpE
   TqG/XRneL/jR90o6EucF3VkLf/3+jH6Cd7VbLUOGX77zIUcy9pF4lj9lu
   1amvhlbtV1FBkF3lTxWG6QDEcnIMrIFvSZYXml0Zd8vWlw62GEBlhwkzK
   g==;
X-CSE-ConnectionGUID: 8hatjFnwRNe72v8TFioFhQ==
X-CSE-MsgGUID: ba9fSRszT7ytH++cppjwfg==
X-IronPort-AV: E=McAfee;i="6700,10204,11220"; a="27880004"
X-IronPort-AV: E=Sophos;i="6.11,193,1725346800"; 
   d="scan'208";a="27880004"
X-CSE-ConnectionGUID: 7wY/4jxvQLCPgvYMG4Ai+Q==
X-CSE-MsgGUID: 2AQrvW1rQX2PPbhnm34TWQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,193,1725346800"; 
   d="scan'208";a="114082669"
Date: Thu, 10 Oct 2024 17:50:25 +0300
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Heiner Kallweit <hkallweit1@gmail.com>,
	Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 00/13] Remove implicit devres from pci_intx()
Message-ID: <ZwfpsSxnwm7K4eMF@smile.fi.intel.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <8643a212-884c-48de-a2d0-0f068fc49ca2@gmail.com>
 <6468cf3e4a06c008644c98a7a79f81a1c04752b8.camel@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <6468cf3e4a06c008644c98a7a79f81a1c04752b8.camel@redhat.com>
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo

On Thu, Oct 10, 2024 at 10:09:12AM +0200, Philipp Stanner wrote:
> On Wed, 2024-10-09 at 20:32 +0200, Heiner Kallweit wrote:
> > On 09.10.2024 10:35, Philipp Stanner wrote:

...

> > > To do so, a pci_intx() version that is always-managed, and one that
> > > is
> > > never-managed are provided. Then, all pci_intx() users are ported
> > > to the
> > > version they need. Afterwards, pci_intx() can be cleaned up and the
> > > users of the never-managed version be ported back to pci_intx().
> > > 
> > > This way we'd get this PCI API consistent again.
> > > 
> > AFAICS pci_intx() is used only by drivers which haven't been
> > converted
> > to the pci_alloc_irq_vectors() API yet. Wouldn't it be better to do
> > this
> > instead of trying to improve pci_intx()?

My first impression was the same...

> This would be the crme-de-la-crme-solution, yes.
> 
> But such a portation would require more detailed knowledge of the old
> drivers.
> 
> In this discussion, Alex points out that at least in some drivers, you
> can't replace pci_intx() without further ado:
> https://lore.kernel.org/all/20240904151020.486f599e.alex.williamson@redhat.com/
> 
> What we could do is mark pci_intx() and pcim_intx() as deprecated and
> point everyone to pci_alloc_irq_vectors(). Then someone can look into
> porting the old drivers at some point in the future.

...but here I got the point by Philipp.

-- 
With Best Regards,
Andy Shevchenko




From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:24:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:24:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816287.1230478 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syv1d-0006wv-HY; Thu, 10 Oct 2024 15:24:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816287.1230478; Thu, 10 Oct 2024 15:24: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 1syv1d-0006wo-Es; Thu, 10 Oct 2024 15:24:25 +0000
Received: by outflank-mailman (input) for mailman id 816287;
 Thu, 10 Oct 2024 15:24:24 +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 1syv1c-0006wi-DP
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:24:24 +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 1syv1c-0006KA-62; Thu, 10 Oct 2024 15:24:24 +0000
Received: from [15.248.3.83] (helo=[10.45.19.15])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1syv1b-0006nU-VH; Thu, 10 Oct 2024 15:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=TrNNKBZraghGWDIBYUvpWVPrPooiRUuXR0v/kv21YsA=; b=TIBC7W8KBzlHarWZ+YYz2OW0/K
	X8/2TtiY5VbS/5bspdu1z14W0+rRsLqZQgJMqR1T/seL1hbXkmoLOub5KEKyRrxM8Mdhw/Uu+2EIj
	J6x4UGu2mr6mgGmxc7SN6xaJ0BLp9ukj0IusJ0699hOEBYvSXlfcdhctt7RO4olLIosw=;
Message-ID: <a28ea782-5644-4320-be42-6685985834ae@xen.org>
Date: Thu, 10 Oct 2024 16:24:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 0/6] xen/arm: dt overlay fixes
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>
References: <20241004122220.234817-1-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241004122220.234817-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 04/10/2024 13:22, Michal Orzel wrote:
> This series contains fixes and improvements after doing some tests with DT
> overlay support in Xen. I split the series so that each patch handles a separate
> issue.
> 
> Michal Orzel (6):
>    dt-overlay: Fix NULL pointer dereference
>    device-tree: Remove __init from unflatten_dt_alloc()
>    dt-overlay: Remove ASSERT_UNREACHABLE from add_nodes()
>    dt-overlay: Support target-path being root node
>    dt-overlay: Ignore nodes that do not have __overlay__ as their subnode
>    dt-overlay: Print overlay I/O memory ranges in hex

This is now committed.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:31:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:31:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816298.1230487 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syv83-0004bK-63; Thu, 10 Oct 2024 15:31:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816298.1230487; Thu, 10 Oct 2024 15:31: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 1syv83-0004bD-3R; Thu, 10 Oct 2024 15:31:03 +0000
Received: by outflank-mailman (input) for mailman id 816298;
 Thu, 10 Oct 2024 15:31: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=Irsw=RG=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syv81-0004b2-VY
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:31:02 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a7646527-871c-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 17:31:01 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a993f6916daso183131866b.1
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 08:31:01 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2593sm101640366b.215.2024.10.10.08.30.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 08:30:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7646527-871c-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728574260; x=1729179060; 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=u/Ff4uhO76XfAiNx4bSouxAMZpkphs6/ww58X4Rg0g0=;
        b=SPwdH7heLfyQUAanumh993bZnKiFv2MfE9qk+IhZUhv4AmwfLng9LlSnGn8Q0gBNc2
         6HDKA4sYPs2/JlnAAgakcoxP3+QUikIFj7an1Q63YiSItkGF2APmU0gHDCfAJvYXF5/L
         PTAnTK9UQASBhLZC8bHWP8BOxzqUkFu3srRomQVVGH3D16oTCicJVvzWCuuzG/mBcjbX
         fcrZu3vx/IfPnoOWvW95R/ZY1om7/H0i+1Q1PzYEthuz/urmgEgBVNp3GKaUrpE4T1fQ
         He3VpXmhAia44qtMWz+hnnP0E+uQBm1tLtJ/4L6w0cxnFqG6fdQ/BMDLaL1DbwE1Vh52
         X4JQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728574260; x=1729179060;
        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=u/Ff4uhO76XfAiNx4bSouxAMZpkphs6/ww58X4Rg0g0=;
        b=U0IHrXtk8BxtoBrPTXTcDGxW4soIK9voE0YIkfiIZaPtIDONSFd12p7DMUShx6L9sR
         Ub8XZqZZmjhGdsa3G0D3Uy2RKQmPbmtdK93+LDsQ2NWZKbJ2wf8ptYgCeTa4Le1Pl+y/
         UZxnE5aJrPLTneuDcKMZX7sIJmCco4QpIZYKeJiVMLdbeKe25yw4Fczg+cpt7KHNpk4n
         7cziKKuWMrNtPnWaM/92S2ZzXlXnM5TAoFEvsvKNsxxeTwybgM+c4SAi8z8D48+SK9r5
         jcdAyBfIETVIppI97fTT7M4riFYXV2SmGeLSR1ZZgnclyRRCPi6qyeRu/cJ5Y8/NLLIj
         NgPw==
X-Gm-Message-State: AOJu0Yw2VageJUqIRCiYTJsloeKa5UPQ5qNDPexKQmWkRDoiZ9JqRlmn
	PzY1AiuM4MpX/W1qpdco1f7x3ymCwL3oEKCThWHuBo+Z2EncMzuFDyeZjg==
X-Google-Smtp-Source: AGHT+IGrGo8Ur+4r4LieF7Suxdi6KoSwOXw4SGwTOMI9D4z0SSx64TmvVsAjkDQSBmW0CTVw/W4X6w==
X-Received: by 2002:a17:907:9728:b0:a80:f81c:fd75 with SMTP id a640c23a62f3a-a998cf4d7a3mr542202366b.0.1728574259786;
        Thu, 10 Oct 2024 08:30:59 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 0/2] Parse and handle command line from dtb
Date: Thu, 10 Oct 2024 17:30:52 +0200
Message-ID: <cover.1728481578.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This patch series initializes bootinfo from dtb and then parse and
handle command line from dtb.

---
Changes in v2:
 - Update the cover letter message: drop information about patch series
   dependency.
 - Add Acked-by for the patch 2 ( xen/riscv: parse and handle fdt command line )
 - Minor changes for patch 1 ( xen/riscv: initialize bootinfo from dtb ):
   - Drop local variable fdt_size as it is going to be used only once.
---

Oleksii Kurochko (2):
  xen/riscv: initialize bootinfo from dtb
  xen/riscv: parse and handle fdt command line

 xen/arch/riscv/setup.c | 8 ++++++++
 1 file changed, 8 insertions(+)

-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:31:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:31:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816300.1230508 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syv85-00054H-KZ; Thu, 10 Oct 2024 15:31:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816300.1230508; Thu, 10 Oct 2024 15: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 1syv85-00054A-HO; Thu, 10 Oct 2024 15:31:05 +0000
Received: by outflank-mailman (input) for mailman id 816300;
 Thu, 10 Oct 2024 15: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=Irsw=RG=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syv84-0004pC-EL
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:31:04 +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 a85d5f8e-871c-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 17:31:02 +0200 (CEST)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-5399041167cso1716089e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 08:31:02 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2593sm101640366b.215.2024.10.10.08.31.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 08:31:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a85d5f8e-871c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728574262; x=1729179062; 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=YgHLb6a8rK9LRJcvDKwo/7FaVaC9VQAiF9qEPMZagfY=;
        b=KAc/DkXPT1WG3xAvM4PPthXPshsDz7zfHf4Ha1biBAxTFxsEsQl2RJA19eqWi9mbqQ
         dvI+PvtxaiIl5GGyXnR9q0Gb5FUmsu5yLfP+F/c5wdG+p65zdvTkOdzp0SqCa9tD0Bgi
         qFdJB2YrtPpHVyi09R7f+lOjBAkmRs+TSRzWJ7dxy0YEOeR5oDR811QSslqol6h1tNsn
         LHxShywJAhymgOWf4tKlwzGHeyBCjhTQaoKYMOwiHrbonr8qAXxSjusegzRQl16IjaSL
         ULYvm2sPe0mMwZmPmPW1T6Vg+d1g9kRalAWNW9OLSvPH0t7St0VBGAGawONTbCA62AbK
         XB1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728574262; x=1729179062;
        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=YgHLb6a8rK9LRJcvDKwo/7FaVaC9VQAiF9qEPMZagfY=;
        b=Py5Hmc+Us7M0RuyUS/OCCya998vt7GSK2Dk4sqcVpum4r4RyZyXjwvZux1iUo6QNnt
         U2/KwdsdvKsoOIht++aqWYVlk+K+tDsiXKVp8T595eMH2byJN98r6XgSjlT679FnroYb
         GypIWpZnReob5DMpcFKA/3H5/xeorxtX4TQGcTDeajugAr+kGVi52zAZ1cSiRVw6B5gR
         VU+EP37WII4K1fFrHfln7IqB5rXXUUIkKOMYAz3Du2BD4P6Kp/KjGBQwU+KTxpyXzfD9
         IJiKORZGB6JCP5fz5VqMPQoCDEhmbzlOZw9bGncN4PC+5+y7Kl2S/dRpibTdokm8nRlL
         iOzQ==
X-Gm-Message-State: AOJu0Yysqylko0eoAq8A8E5tb4u/2Mn/kiuv5XoBJax5Iw1KCa0CGRcH
	WIX6NQB63aD+ZwOZPDYjWF3BezlApzv+oo8B9uNN8fqeMKqR0WS5DNhKqw==
X-Google-Smtp-Source: AGHT+IHgD+hRPUqQynZLN31cD5Nst5OYteRZf41C8TZMwTcjOvt5ku+h5W/QnAbMqhofH07G9qf9oQ==
X-Received: by 2002:a05:6512:2216:b0:536:5625:511f with SMTP id 2adb3069b0e04-539c495264fmr6164034e87.45.1728574261574;
        Thu, 10 Oct 2024 08:31:01 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 2/2] xen/riscv: parse and handle fdt command line
Date: Thu, 10 Oct 2024 17:30:54 +0200
Message-ID: <3d5d646b052dd996d9ee83dfc0f6b13eab8231f3.1728481578.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728481578.git.oleksii.kurochko@gmail.com>
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Receive Xen's command line passed by DTB using boot_fdt_cmdline()
and passed it to cmdline_parse() for further procesinng and setup
of Xen-specific parameters.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in V2:
 - add Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/riscv/setup.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index a345dbafeb..cd33fab6a0 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -27,6 +27,8 @@ unsigned char __initdata cpu0_boot_stack[STACK_SIZE]
 void __init noreturn start_xen(unsigned long bootcpu_id,
                                paddr_t dtb_addr)
 {
+    const char *cmdline;
+
     remove_identity_mapping();
 
     set_processor_id(0);
@@ -52,6 +54,10 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
 
     BUG_ON(!boot_fdt_info(device_tree_flattened, dtb_addr));
 
+    cmdline = boot_fdt_cmdline(device_tree_flattened);
+    printk("Command line: %s\n", cmdline);
+    cmdline_parse(cmdline);
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:31:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:31:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816299.1230498 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syv84-0004pS-DO; Thu, 10 Oct 2024 15:31:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816299.1230498; Thu, 10 Oct 2024 15:31: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 1syv84-0004pL-AG; Thu, 10 Oct 2024 15:31:04 +0000
Received: by outflank-mailman (input) for mailman id 816299;
 Thu, 10 Oct 2024 15:31: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=Irsw=RG=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syv82-0004b2-LG
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:31: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 a7f5be9e-871c-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 17:31:01 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fad100dd9fso16554321fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 08:31:01 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2593sm101640366b.215.2024.10.10.08.30.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 08:31:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7f5be9e-871c-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728574261; x=1729179061; 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=MyssrSM0RuGn5wfZsY82Ll7VACleFxqgJDU1vZJJ50A=;
        b=WAa2knGTlWkNQlrcSkDobU/UTsaH6OBFhk7vxM3z0An4UqcSB2QWuvl5oSyXmpg0t0
         r4FTWI7j1O9Ttdqo2rQaEmXevPHS8g4LAF0MrgKCVAQVQSb/FUG6YXRa/kdn9zBGVJqI
         T9zKCtQNngi/AO5qKJluF1Hj039q8r21ICUh2vUunBDf3JetfvtS0eGmfJ9v2X1zsgni
         sTSVkQNCQmjAoa9DMBL1d6VQv0ANxdaWPsy0rNm8qLI2aUkUnwOKh4Gyc+XJvJm9M+7B
         AuIjpCPz9GRXD/lWqPq3WJHhPxa6vlL0sCrbfuPNeeVUa04dVSQrPVA6ZIo2ohpEoQ6h
         1rzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728574261; x=1729179061;
        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=MyssrSM0RuGn5wfZsY82Ll7VACleFxqgJDU1vZJJ50A=;
        b=k2m7+OYE7yKsQn8a+Aq0qrTRX6Bx1fahd/0IM0NHIk7wcAd/XR5Pk6YH51TRjMeHHR
         2FR0EZ7yoMLuuU9ceG9WuRmoZQiEk+Uw8wod8ZNQ99CGE4Ei1abWVyFpXZ//Ce5tomdy
         0Txi/sr57gjAn4NS/cISH0a9o8v10XQQGYrVu/wpmWneSlfHSnovenf+QoToHIMON5Ja
         lzHgxTRH9wfGrOLN19FkHq8ymGE3hRsLzHcjS83yT4lDYhnsPOjyA6q5eEOwfB800Y0S
         oc+paId/nccLpFAizvFrz8mtKagGjJHybhojcDcuDR73kRljHbgige+dowS0cEjP7IMV
         Lymg==
X-Gm-Message-State: AOJu0YxVaUFt6IxKBcN58Fne2mp0TreL4S484lb+OsXJuivCuXKjE4rv
	FJbEpjmE8gYAC7feZCEXoOXHsPaztiMmasDtiM0uA9hfO3mqMHjH7UcV6Q==
X-Google-Smtp-Source: AGHT+IGXoV+pQuqiYvXzbgfXSt+s+w9C0zYab5uLiu8xzrc4HPDS4kp6lkPvBrwkL9lgUkQ1jJztTg==
X-Received: by 2002:a05:651c:222a:b0:2f0:27da:6864 with SMTP id 38308e7fff4ca-2fb1873ceadmr58106841fa.17.1728574260688;
        Thu, 10 Oct 2024 08:31:00 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 1/2] xen/riscv: initialize bootinfo from dtb
Date: Thu, 10 Oct 2024 17:30:53 +0200
Message-ID: <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.46.2
In-Reply-To: <cover.1728481578.git.oleksii.kurochko@gmail.com>
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Parse DTB during startup, allowing memory banks and reserved
memory regions to be set up, along with early device tree node
( chosen, "xen,domain", "reserved-memory", etc  ) handling.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V2:
 - Drop local variable fdt_size as it is going to be used only once.
---
 xen/arch/riscv/setup.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index f531ca38ee..a345dbafeb 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -50,6 +50,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
                           _end - _start, false) )
         panic("Failed to add BOOTMOD_XEN\n");
 
+    BUG_ON(!boot_fdt_info(device_tree_flattened, dtb_addr));
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.46.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:40:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:40:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816321.1230542 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syvGw-0008Ld-NZ; Thu, 10 Oct 2024 15:40:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816321.1230542; Thu, 10 Oct 2024 15:40: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 1syvGw-0008LW-Kc; Thu, 10 Oct 2024 15:40:14 +0000
Received: by outflank-mailman (input) for mailman id 816321;
 Thu, 10 Oct 2024 15:40: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=Irsw=RG=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1syvGw-0008LQ-7L
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:40:14 +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 efe181d7-871d-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 17:40:12 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a99650da839so178844166b.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 08:40:12 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f2437csm103879666b.57.2024.10.10.08.40.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 08:40:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: efe181d7-871d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728574811; x=1729179611; 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=vhbW0zBfmQD0EuNUwsdDuIFeu0hN4xx/kzFjHoc4NxQ=;
        b=lP+lXu4YyESIwzS17wSZvHnIbtnhrN7hzIkavNXF8FE+o48UfhQSrrVkaEG5mDv9wC
         zkZSgPRnTujBBjFQKM+GklgvBzqaNDRlCPYRGk9c6i7kGq2YPMbnEIAuDY8yHTRfFAdp
         XRWKeffJ232xDJwztiwK1gC2nxajr2TqJiPob01Y+g5AlWrYM0sh0piYWiKz+YT1qzgQ
         5a8xPJazHEn31PVa06tY8v8lTTiPIIkM5+tcZ/6MamNJXomY7fByalBzUXVAgInfxKgz
         eQBpvqzoTPQSdS95uitw1MhKnWSfnkgBxUKqM3BoP4RQm4PnhYkeAJF+JiDfSvQ3xIMf
         w1RA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728574811; x=1729179611;
        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=vhbW0zBfmQD0EuNUwsdDuIFeu0hN4xx/kzFjHoc4NxQ=;
        b=KW+9iYGiYye/urpQ85fZ0x7S0gXhMJxWqopAO6ylWH62LEbOngSGRHyIRWkFxM7ZrO
         WI20c+LuCX2/4jGmXDGW0GCtILicqtvjL+n7nvhzkIZ6T4ochxCwNcbs2A0pIj12WK1i
         2vyJCGzrEqXbe60C3PENUELMM2PfmQ9zCVhx9s0BN8CYmdeMETygkRyYWHnpi5K2zD18
         ZqSuZizLUhXjVAt/ec58g/hThUqBZCmSxHCp0RLffbZdFd/jJdKlhFMe7zPxaCb8rIDM
         D2/cAASc20Eu5OCnVc/qaH5fHEKxhnLYr15tgIPFv+s8CHZXe6GmlvrsfdhohrgQSZq8
         IvjA==
X-Forwarded-Encrypted: i=1; AJvYcCVSpAA/0j6+cK+2pU+zDqORddcTMGxiKc1PsZ6UwoiyvYYmUvn5nCn303xrXIv2WT+0IP4UGmYDwk4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxl1+ZSy9h7jzBve2V9U7tO0tcYrPHjpVEzRcrGvJkAM80G4brF
	7mqrILbb87mI4kPs0NrYa9zkLOeUCqMYRXASf//TW5BIuDnAzS6X
X-Google-Smtp-Source: AGHT+IFoKLV4O1yDKoJdXj/39SLcIR8KmhXuX+cVNoNHyMYYyMF6CpsoQWXa6mjqnGa83kqSofQYzw==
X-Received: by 2002:a17:907:e65c:b0:a99:5773:3612 with SMTP id a640c23a62f3a-a998d202140mr614943966b.36.1728574811335;
        Thu, 10 Oct 2024 08:40:11 -0700 (PDT)
Message-ID: <1915f5c78a9282d4b00c330c59749f22e6dd4ef8.camel@gmail.com>
Subject: Re: [PATCH v3 0/6] Enable early bootup of AArch64 MPU systems
From: oleksii.kurochko@gmail.com
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>,
 Jan Beulich <jbeulich@suse.com>
Date: Thu, 10 Oct 2024 17:40:10 +0200
In-Reply-To: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

SGVsbG8gQXlhbiwKCkkgdGhpbmsgdGhhdCB3ZSBoYXZlIHRvIG1lbnRpb24gaW4gQ0hBTkdFTE9H
Lm1kIHRoYXQgZXhwZXJpbWVudGFsCnN1cHBvcnQgb2YgWGVuIHdpdGggTVBVIGZvciBBcm0gaXMg
YWRkZWQuICggaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseQp3aGF0IGlzIHRoaXMgcGF0Y2ggc2Vy
aWVzIGFib3V0ICkuCgpUaGFua3MuCgp+IE9sZWtzaWkKT24gVGh1LCAyMDI0LTEwLTEwIGF0IDE1
OjAzICswMTAwLCBBeWFuIEt1bWFyIEhhbGRlciB3cm90ZToKPiBXZSBoYXZlIGVuYWJsZWQgZWFy
bHkgYm9vdGluZyBvZiBSODIuCj4gCj4gQ2hhbmdlcyBmcm9tIHYyIDotCj4gMS4gQWRkZWQgYSBu
ZXcgcGF0Y2ggInhlbi9hcm06IFNraXAgaW5pdGlhbGl6aW5nIHRoZSBCU1Mgc2VjdGlvbiB3aGVu
Cj4gaXQgaXMgZW1wdHkiLgo+IDIuIFNwbGl0ICJ4ZW4vYXJtOiBtcHU6IENyZWF0ZSBib290LXRp
bWUgTVBVIHByb3RlY3Rpb24gcmVnaW9ucyIgaW50bwo+IDIgcGF0Y2hlcy4KPiAKPiBBeWFuIEt1
bWFyIEhhbGRlciAoNik6Cj4gwqAgeGVuL2FybTogU2tpcCBpbml0aWFsaXppbmcgdGhlIEJTUyBz
ZWN0aW9uIHdoZW4gaXQgaXMgZW1wdHkKPiDCoCB4ZW4vYXJtOiBtcHU6IEludHJvZHVjZSBjaG9p
Y2UgYmV0d2VlbiBNTVUgYW5kIE1QVQo+IMKgIHhlbi9hcm06IG1wdTogRGVmaW5lIFhlbiBzdGFy
dCBhZGRyZXNzIGZvciBNUFUgc3lzdGVtcwo+IMKgIHhlbi9hcm06IG1wdTogQ3JlYXRlIGJvb3Qt
dGltZSBNUFUgcHJvdGVjdGlvbiByZWdpb25zCj4gwqAgeGVuL2FybTogbXB1OiBFbmFibGUgTVBV
Cj4gwqAgeGVuL2FybTogbXB1OiBJbXBsZW1lbnQgYSBkdW1teSBlbmFibGVfc2Vjb25kYXJ5X2Nw
dV9tbQo+IAo+IMKgU1VQUE9SVC5tZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDEgKwo+IMKgeGVuL2FyY2gv
S2NvbmZpZ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIHzCoMKgIDIgKwo+IMKgeGVuL2FyY2gvYXJtL0tjb25maWfCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDI3ICsrLQo+IMKgeGVuL2FyY2gv
YXJtL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCB8wqDCoCAxICsKPiDCoHhlbi9hcmNoL2FybS9hcm02NC9oZWFkLlPCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsKPiDCoHhlbi9hcmNoL2FybS9hcm02NC9t
cHUvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAxICsKPiDCoHhlbi9h
cmNoL2FybS9hcm02NC9tcHUvaGVhZC5TwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg
MTY1Cj4gKysrKysrKysrKysrKysrKysrKwo+IMKgeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2Fy
bTY0L21wdS9zeXNyZWdzLmggfMKgIDMwICsrKysKPiDCoHhlbi9hcmNoL2FybS9pbmNsdWRlL2Fz
bS9jb25maWcuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNCArLQo+IMKgeGVuL2FyY2gv
YXJtL2luY2x1ZGUvYXNtL21tLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAg
MiArCj4gwqB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vbXB1L2FybTY0L21tLmjCoMKgwqDCoMKg
IHzCoCAyMiArKysKPiDCoHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9tcHUvbGF5b3V0LmjCoMKg
wqDCoMKgwqDCoCB8wqAgMzMgKysrKwo+IMKgeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21wdS9t
bS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjAgKysrCj4gwqB4ZW4vYXJjaC9hcm0vcGxh
dGZvcm1zL0tjb25maWfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDIgKy0KPiDC
oHhlbi9hcmNoL2FybS9zZXR1cC5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHzCoCAxMyArKwo+IMKgeGVuL2FyY2gvYXJtL3hlbi5sZHMuU8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDcgKwo+IMKgMTYgZmls
ZXMgY2hhbmdlZCwgMzI5IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4gwqBjcmVhdGUg
bW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2FybTY0L21wdS9NYWtlZmlsZQo+IMKgY3JlYXRlIG1v
ZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9hcm02NC9tcHUvaGVhZC5TCj4gwqBjcmVhdGUgbW9kZSAx
MDA2NDQgeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FybTY0L21wdS9zeXNyZWdzLmgKPiDCoGNy
ZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vbXB1L2FybTY0L21tLmgK
PiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vbXB1L2xheW91
dC5oCj4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21wdS9t
bS5oCj4gCgo=



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:55:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:55:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816340.1230552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syvVK-0001iR-21; Thu, 10 Oct 2024 15:55:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816340.1230552; Thu, 10 Oct 2024 15:55: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 1syvVJ-0001iK-Up; Thu, 10 Oct 2024 15:55:05 +0000
Received: by outflank-mailman (input) for mailman id 816340;
 Thu, 10 Oct 2024 15:55: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syvVI-0001iE-D6
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:55:04 +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 02d98e66-8720-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 17:55:03 +0200 (CEST)
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 18A6621C1D;
 Thu, 10 Oct 2024 15:55: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 BFF6813A6E;
 Thu, 10 Oct 2024 15:55: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 D9dnLdX4B2eaBAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 10 Oct 2024 15:55: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: 02d98e66-8720-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575702; 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=LAoGS220UydI7yrPGS3MgjWgCBZuy7C9W0mEBprJY6c=;
	b=SGTFq7addeLO/3lFvfcWCjbuN8tiiOpUwDt7V7Gv7++bW+szdLKs6xElMFQ+AuSqci94bW
	077ZQ6j23PQzxQ1nmWxGrTQ8WhuLnsGTtc/ubDW1M3c78F9r1CYkADqDadhLZQSbql3Azq
	KMgP92qg2jH6UxO364WPXwC0xJeWJUQ=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=SGTFq7ad
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575702; 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=LAoGS220UydI7yrPGS3MgjWgCBZuy7C9W0mEBprJY6c=;
	b=SGTFq7addeLO/3lFvfcWCjbuN8tiiOpUwDt7V7Gv7++bW+szdLKs6xElMFQ+AuSqci94bW
	077ZQ6j23PQzxQ1nmWxGrTQ8WhuLnsGTtc/ubDW1M3c78F9r1CYkADqDadhLZQSbql3Azq
	KMgP92qg2jH6UxO364WPXwC0xJeWJUQ=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH 0/3] stubdom: reduce xenstore library dependencies
Date: Thu, 10 Oct 2024 17:54:56 +0200
Message-ID: <20241010155459.22389-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 18A6621C1D
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.98%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim,suse.com:mid,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	RCPT_COUNT_SEVEN(0.00)[8];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	TO_DN_SOME(0.00)[];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

Instead of letting the xenstore stubdoms depend on libxenguest and
with that on basically all Xen libraries, only let it depend on the
actually used libraries.

This is in preparation of removing the libxenctrl dependency from
Xenstore and with that the capability to use xenstore-stubdom on
multiple hypervisor versions.

Juergen Gross (3):
  config: update Mini-OS commit
  tools/xenstored: remove unneeded libxenguest reference
  stubdom: use real lib dependencies for xenstore stubdoms

 Config.mk                       | 2 +-
 stubdom/Makefile                | 6 ++++--
 tools/xenstored/Makefile.common | 1 -
 3 files changed, 5 insertions(+), 4 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:55:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:55:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816341.1230562 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syvVO-0001x7-9D; Thu, 10 Oct 2024 15:55:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816341.1230562; Thu, 10 Oct 2024 15:55: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 1syvVO-0001x0-5r; Thu, 10 Oct 2024 15:55:10 +0000
Received: by outflank-mailman (input) for mailman id 816341;
 Thu, 10 Oct 2024 15:55: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syvVM-0001iE-Rp
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:55:08 +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 05ed8f38-8720-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 17:55:08 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 B514C1FB68;
 Thu, 10 Oct 2024 15:55: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 7540A13A6E;
 Thu, 10 Oct 2024 15:55: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 OU0yG9v4B2ejBAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 10 Oct 2024 15:55: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: 05ed8f38-8720-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575707; 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=bxYG4bL4OHTh+ba6o0mOQUkWLhVY7irrnJz4+4mLpjI=;
	b=qJ8usMvP6bscoAsVm42LC5wMWHzVWlpoYl9jmdZuENK/0bSoKX7tF7YSajvJw1rDykv/p3
	bhvVUFaVV0sLK7sBZUMM3gLhxz+Ugy2WL9b96xHMTmL4sMxBIpGYhGT/p7AoW+Yx9lxpQk
	T8DgMv9ZYbeE+u7RPM/22g6NIFA2VeE=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575707; 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=bxYG4bL4OHTh+ba6o0mOQUkWLhVY7irrnJz4+4mLpjI=;
	b=qJ8usMvP6bscoAsVm42LC5wMWHzVWlpoYl9jmdZuENK/0bSoKX7tF7YSajvJw1rDykv/p3
	bhvVUFaVV0sLK7sBZUMM3gLhxz+Ugy2WL9b96xHMTmL4sMxBIpGYhGT/p7AoW+Yx9lxpQk
	T8DgMv9ZYbeE+u7RPM/22g6NIFA2VeE=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/3] config: update Mini-OS commit
Date: Thu, 10 Oct 2024 17:54:57 +0200
Message-ID: <20241010155459.22389-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241010155459.22389-1-jgross@suse.com>
References: <20241010155459.22389-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-0.994];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

Update the Mini-OS upstream revision.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 Config.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Config.mk b/Config.mk
index 1a3938b6c4..6dd2f9439c 100644
--- a/Config.mk
+++ b/Config.mk
@@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
 QEMU_UPSTREAM_REVISION ?= master
 
 MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
-MINIOS_UPSTREAM_REVISION ?= 8b038c7411ae7e823eaf6d15d5efbe037a07197a
+MINIOS_UPSTREAM_REVISION ?= 80ef70f92cb7b95ef48deea1157f2194b10b8c05
 
 SEABIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/seabios.git
 SEABIOS_UPSTREAM_REVISION ?= rel-1.16.3
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816342.1230571 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syvVZ-0002Ip-F8; Thu, 10 Oct 2024 15:55:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816342.1230571; Thu, 10 Oct 2024 15:55: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 1syvVZ-0002Ii-CW; Thu, 10 Oct 2024 15:55:21 +0000
Received: by outflank-mailman (input) for mailman id 816342;
 Thu, 10 Oct 2024 15:55: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syvVY-0002EK-1K
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:55:20 +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 093ee287-8720-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 17:55:13 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 652AB1FB68;
 Thu, 10 Oct 2024 15:55:13 +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 29E5713A6E;
 Thu, 10 Oct 2024 15:55:13 +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 O0GECOH4B2erBAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 10 Oct 2024 15:55: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: 093ee287-8720-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575713; 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=6UMD6Lbjq0ddLxOkXGyThPw2L3Nb6hzF/du4wZSluoo=;
	b=gAsNP5qStKlIhyGSZRwcBD8SbIxRReGo+gW3IpyBOBiJuZkFTyP8vtOaQZ4QyiU5cA+Ow+
	Bx3y7DrQ9BcUsGoihfrqaaOAXk8HBKVDikrReH8Yqo3rDe/GharnADQ2CtBfcdjnRmlDDN
	qt33v7GNsgD6798mh0P0rck+RtMaaa4=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575713; 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=6UMD6Lbjq0ddLxOkXGyThPw2L3Nb6hzF/du4wZSluoo=;
	b=gAsNP5qStKlIhyGSZRwcBD8SbIxRReGo+gW3IpyBOBiJuZkFTyP8vtOaQZ4QyiU5cA+Ow+
	Bx3y7DrQ9BcUsGoihfrqaaOAXk8HBKVDikrReH8Yqo3rDe/GharnADQ2CtBfcdjnRmlDDN
	qt33v7GNsgD6798mh0P0rck+RtMaaa4=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 2/3] tools/xenstored: remove unneeded libxenguest reference
Date: Thu, 10 Oct 2024 17:54:58 +0200
Message-ID: <20241010155459.22389-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241010155459.22389-1-jgross@suse.com>
References: <20241010155459.22389-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-0.992];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

Today the xenstored Makefile contains an unneeded reference to the
not used libxenguest library.

Remove it.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/xenstored/Makefile.common | 1 -
 1 file changed, 1 deletion(-)

diff --git a/tools/xenstored/Makefile.common b/tools/xenstored/Makefile.common
index ef63ef650c..27fdb3b49e 100644
--- a/tools/xenstored/Makefile.common
+++ b/tools/xenstored/Makefile.common
@@ -13,7 +13,6 @@ XENSTORED_OBJS-$(CONFIG_MiniOS) += minios.o lu_minios.o
 CFLAGS += -include $(XEN_ROOT)/tools/config.h
 CFLAGS += $(CFLAGS_libxenevtchn)
 CFLAGS += $(CFLAGS_libxenctrl)
-CFLAGS += $(CFLAGS_libxenguest)
 CFLAGS += $(CFLAGS_libxentoolcore)
 
 $(XENSTORED_OBJS-y): CFLAGS += $(CFLAGS_libxengnttab)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 15:55:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 15:55:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816343.1230582 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syvVa-0002YA-Mx; Thu, 10 Oct 2024 15:55:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816343.1230582; Thu, 10 Oct 2024 15: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 1syvVa-0002Xs-JV; Thu, 10 Oct 2024 15:55:22 +0000
Received: by outflank-mailman (input) for mailman id 816343;
 Thu, 10 Oct 2024 15:55: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=rEWG=RG=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1syvVY-0002EK-Rh
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 15:55:20 +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 0c964bee-8720-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 17:55:19 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 04D931FB68;
 Thu, 10 Oct 2024 15:55:19 +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 CDA7913A6E;
 Thu, 10 Oct 2024 15:55:18 +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 3TjAMOb4B2e6BAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 10 Oct 2024 15: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>
X-Inumbo-ID: 0c964bee-8720-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575719; 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=jawzLmSLqlOX3R4myb7g2jhU88qFTv5EWOeT/Uv/Ceo=;
	b=l80+H8Y598z7yAwKfGUKtBuObPh0Yl7z/+pewJSMK0jfrxRmK3tAAMzXnl9x4ZAPAdx3SP
	2AL/3CBRYqZIFRBbxy6JX5qzLAKXaUlkNDicIsrK0gxPgP6VcQ69yQiObXfwX7DK0BM5VD
	je3Dk2C+sRXjpy2BPSyTODwZ8DMfauo=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728575719; 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=jawzLmSLqlOX3R4myb7g2jhU88qFTv5EWOeT/Uv/Ceo=;
	b=l80+H8Y598z7yAwKfGUKtBuObPh0Yl7z/+pewJSMK0jfrxRmK3tAAMzXnl9x4ZAPAdx3SP
	2AL/3CBRYqZIFRBbxy6JX5qzLAKXaUlkNDicIsrK0gxPgP6VcQ69yQiObXfwX7DK0BM5VD
	je3Dk2C+sRXjpy2BPSyTODwZ8DMfauo=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH 3/3] stubdom: use real lib dependencies for xenstore stubdoms
Date: Thu, 10 Oct 2024 17:54:59 +0200
Message-ID: <20241010155459.22389-4-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241010155459.22389-1-jgross@suse.com>
References: <20241010155459.22389-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-0.992];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:email,suse.com:mid];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

Today the build of Xenstore stubdoms depend on libxenguest just because
libxenguest depends on all needed libraries. In reality there is no
dependency on libxenguest for Xenstore stubdoms.

Use the actual dependencies instead.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 stubdom/Makefile | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/stubdom/Makefile b/stubdom/Makefile
index 6ed4253b25..2a81af28a1 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -523,12 +523,14 @@ else
 pv-grub-if-enabled:
 endif
 
+XENSTORE_DEPS := libxenevtchn libxengnttab libxenctrl
+
 .PHONY: xenstore-stubdom
-xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxenguest xenstore
+xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore $(XENSTORE_DEPS) xenstore
 	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a
 
 .PHONY: xenstorepvh-stubdom
-xenstorepvh-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstorepvh libxenguest xenstorepvh
+xenstorepvh-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstorepvh $(XENSTORE_DEPS) xenstorepvh
 	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstorepvh-minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstorepvh/xenstored.a
 
 #########
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 17:24:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 17:24:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816376.1230591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sywtN-0004JZ-TJ; Thu, 10 Oct 2024 17:24:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816376.1230591; Thu, 10 Oct 2024 17: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 1sywtN-0004JS-Qn; Thu, 10 Oct 2024 17:24:01 +0000
Received: by outflank-mailman (input) for mailman id 816376;
 Thu, 10 Oct 2024 17:24: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=Hg9/=RG=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1sywtM-0004JM-R2
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 17:24:00 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20622.outbound.protection.outlook.com
 [2a01:111:f403:2415::622])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6e753e57-872c-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 19:23:57 +0200 (CEST)
Received: from PH0P220CA0017.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:d3::24)
 by CY8PR12MB8298.namprd12.prod.outlook.com (2603:10b6:930:7c::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Thu, 10 Oct
 2024 17:23:53 +0000
Received: from CY4PEPF0000E9D4.namprd03.prod.outlook.com
 (2603:10b6:510:d3:cafe::e2) by PH0P220CA0017.outlook.office365.com
 (2603:10b6:510:d3::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18 via Frontend
 Transport; Thu, 10 Oct 2024 17:23:53 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000E9D4.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.8048.13 via Frontend Transport; Thu, 10 Oct 2024 17:23: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.39; Thu, 10 Oct
 2024 12:23:52 -0500
Received: from [172.21.103.178] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 10 Oct 2024 12:23:51 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6e753e57-872c-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=CX1/Uu8k/GQXcNbk3kFbsBCmw1R/iiPjhMBP6Krd8C6XYeQsAZCly5rbVBGauaKG2JYUnDNL/0v8Jso9cDjg4rVgY1AwqX+46iqrTPgC3prjoqKJIyaCEBnDX4dVaa3j5jw3ZiSfImAAL7YELSITCrjPoVUN9f272Wh9e+Ki0ixLT2k+rfOMVpqhlJlLCWLJt9A60AoloUrWzWP/iTisYa1NK714FpEfOa+/kvfe4uKru1jR/t3gjBZP+1OCLX2By895u1Zm8P7f6ji3X+Pa7HLN6Q7sRoNoGFoWNeVQkWIyzrJI+X35cqtf8cLafUnlfzUg4SeA/BchqageM4s+Zw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=leP4gX5/SNqQhOp0D9s9bo127bam98/WJ0aUgDJozjY=;
 b=bdhkQxN1MCdrmkPw3NsTDeFPGc1gHfiX6Vx6GBVJkLhzuXm16vNiBih+y16dO7uuiK+Mvp7AbsuyQB9QRWrOa7dgVLXUfrHPdIKhexz+13UDsIPpNziHV4uJ46EwzOpAQiaqryd+2jFFnlIYUyV9Lnc1qsj0Xx5o8i6oA9dXCZ3n25fpggUvtej+VHyZrkW5yaM074qtN5BYNGbbJ8tqcKP/tp9FeQug/KMiBCRluwwvZ2j6eJEh323tehnuCnVhFma29QnMHeWUEV9aKaoad7AbGeLpZ3rP7kulx0froJnX+NFv/TS3PjN6QlIsDtJHAnWrmadfzRsvztl8d8kaNA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=leP4gX5/SNqQhOp0D9s9bo127bam98/WJ0aUgDJozjY=;
 b=eklD0RAGzp2uhk7NoLQHy49Kt3/rkjLUvSx9xkSRP+p2FjLnsR2sh1xZRCUNp5R+C6t8CJUTHqJhU1QToFLgkTKclG6DGSLIFDfhpp4ypYs0i8S4O/xKVkw+wT91rL+7tMyG51fbUX50nSwrCRWzZt0Bd5xoILcX19JSXR/d2As=
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: <62f223fc-acc3-4a65-a093-2d5f6bfe00a3@amd.com>
Date: Thu, 10 Oct 2024 13:23:51 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 20/44] x86/boot: convert xsm policy loading to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241006214956.24339-1-dpsmith@apertussolutions.com>
 <20241006214956.24339-21-dpsmith@apertussolutions.com>
 <eaa648a6-c34a-47c5-a4fb-a3e56982abba@amd.com>
 <fa2789d7-d9d6-49e5-8108-cf26ecfca618@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <fa2789d7-d9d6-49e5-8108-cf26ecfca618@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB04.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D4:EE_|CY8PR12MB8298:EE_
X-MS-Office365-Filtering-Correlation-Id: e5a5ef58-a3d6-40b5-1a37-08dce950502d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RXVKNDdUeGlVN2ZtUG9GZyt5REg5T2NycVdHWis4Sml2ZHBOeFFNM2l0aHVl?=
 =?utf-8?B?bWxrQ2NOY1hiT1lKMlAzeWZRQlhRaWltRWRwVFZFZGxPRWpseFVvdWhRRlZQ?=
 =?utf-8?B?ZWJZRUxBNUxYWGZMUU8rVHMwN1JobWpyT1JqRmZvc1R6dVAwanZ3bW9ia3Z5?=
 =?utf-8?B?KzdOM2VnWWEvdzZhdEc0TnJORGNxMkR4cnowMlZMTk5xVDZVaTd4ZHJUUGtK?=
 =?utf-8?B?MEZWZDVyb2RRY0kwazBMeXZKSEV6dDYyL0gxOTV6T2UraS9pQy9kVVcwVis4?=
 =?utf-8?B?d3hCa29sVU43NmlPLzVsdjdwdmRmN0N2dk5ONHkrNi8yUitpNlQzOTNHd3Fi?=
 =?utf-8?B?cTZYdEViSmRwVWozS1FJNHhaeFVhNjI3aWJzM3BYQlo2YW9OZzcxNGllajNM?=
 =?utf-8?B?aHU1WUFOSWw1djJ0WUIwclk3d0srMGFCZlhTZmhjNDcwVTJzelhyUk1GNWYy?=
 =?utf-8?B?bldEeFdEZ1dpbWRpUFZLZUlhTGpzSlJTamU0MDF3L2RIbkZJZEdXKzVSV2Iv?=
 =?utf-8?B?SnFXQTZzb2xDcUgxMjd0cU0rMnp3RjlUdDRyTEZFZjkza0psV1V1L0JFR1k5?=
 =?utf-8?B?SHJaelFQM3FtM2puKythRFJBWVpWTVBKZzVkeGR0WXlQRnBSSUUzWUkxL0ZN?=
 =?utf-8?B?Wkx2N2tLZ2I3bjNvZlZIeklyMG1MWFA3b0c0U0xYRWZBN0Uwdk9NQm1oOGph?=
 =?utf-8?B?Mml3OExkUkE0dTBUZFJPbU1HK1dpbFdXOGQ5WWFBNnJBZk9ENjZ6dU5mY1Fz?=
 =?utf-8?B?NERLS09Fcmd1dGJQRituRHZRV0V1aVA2d0JQMXFtZ3RoYndVelJkTjdzSy9i?=
 =?utf-8?B?MEpvVkwwRWh3R0dWZHBQVGRpekkrTWdvcjNDYXI4MEdMcDFQQ01jNnIvTmxB?=
 =?utf-8?B?a085NGtDUFNIc1VKYmF4VHBwODRNaVZ4TjdQZ0F4T3ZFOG83a295ZkE1RnRv?=
 =?utf-8?B?bWp0MjFWNXZrQlZlb3E4YlcydmF2aitsNEIvMEhSblFQamVNRUZyTU5GM2Y1?=
 =?utf-8?B?YmFJMnFvbVhyT2E2TjZxR0N0YitKUlNXK3ovTlV5YmtUU3IxMzVBVS82WUU1?=
 =?utf-8?B?bzZqUHBqNVZCK084ZGVYMzJ4cjdBd0dPTGtKZWFNZWZWK0RLb0tqSkJFdE5H?=
 =?utf-8?B?UERlY0Y5eXQ1Qkk3ckYvRkt0am02QktjdGUrcFQ2cEZuYUkzL0FlNS9GcDFq?=
 =?utf-8?B?VDVyR2d5NW1hQy9Tc0lMMS9yS1B0QVVmdTJVeHJSQWZwTjlSaUxZSTN0NGp2?=
 =?utf-8?B?bllxNGtRVmNGVlJsdTNZYjdQWnZoRXBvYUViWW5aVFVmTlg1UmVmeTZJYVVo?=
 =?utf-8?B?WUgxZE5QL3dad2Z0YXE0SnFpbk41aFU3dnhDOTZJdUhYWktCd2t0ait2ZmdU?=
 =?utf-8?B?eEhKaE1tTzl6azVxUHBWU29NUTlCaUlBMXFJTmFKUVJLY09ydm5VNWFwTWM5?=
 =?utf-8?B?T1ZGRytqWmdiMnVpRTd4TjMzcXJkZ2E3NnJHbHJqZnBOSDR5cC9uM3JtOXR3?=
 =?utf-8?B?QXBFRU9PT3BhQ3NlSXRIa2l0R2F1TkRCWW1DVGJmOW90RTZzVFdZakNKZEd0?=
 =?utf-8?B?Z1ZSRVN6WVJPS0h4dy82S24zY1ZNenhXdnE4UFJvQW9rcm1qcTd1YkZ1OXlD?=
 =?utf-8?B?Z1FyZGJNMnNNYkVuYzlVcEVEajJaeTY0cVl0VlYwMkVtS05ia05SdGRMSTlX?=
 =?utf-8?B?ZGJITTY3N2dtRmhpdHFPemJnaDVhcjR2V2IxekxHbEgxdy9MTTdRZmZrN1JY?=
 =?utf-8?B?dmVXMngrQzNxZTJQSnBRN2pISE9vZ1Exd2JnaGRZa0xJZmhSL2haRGg3ajAy?=
 =?utf-8?B?Vkw0dGorR21RNGhvNWtwckw2OVFEQUFvNnJJUktYemRYdEVlaWJxSlpHb0VP?=
 =?utf-8?Q?/b5kfCIOuHZnY?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 17:23:52.9837
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e5a5ef58-a3d6-40b5-1a37-08dce950502d
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:
	CY4PEPF0000E9D4.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8298

On 2024-10-09 13:21, Daniel P. Smith wrote:
> On 10/8/24 12:13, Jason Andryuk wrote:
>> On 2024-10-06 17:49, Daniel P. Smith wrote:
>>> Iterate through the unclaimed struct boot_module to see if any are an 
>>> XSM FLASK
>>> policy. If one is located, mark it as an xsm policy.
>>>
>>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>>
>>> @@ -161,6 +162,14 @@ int __init xsm_multiboot_init(
>>>       }
>>>       ret = xsm_core_init(policy_buffer, policy_size);
>>> +    if ( ret == 0 )
>>> +    {
>>> +        int idx = first_boot_module_index(bi, BOOTMOD_XSM_POLICY);
>>> +
>>> +        /* If the policy was loaded from a boot module, mark it 
>>> consumed */
>>> +        if ( idx >= 0 )
>>> +            bi->mods[idx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
>> Maybe xsm_multiboot_policy_init() should return the idx used instead 
>> of having a second search?  (Also, xsm_multiboot_policy_init() can't 
>> fail?)
> 
> I was debating on whether to make similar changes because the existing 
> logic just seems sub-optimal. Currently I am looking to just write an 
> independent XSM patch that looks at both this function and the device 
> tree version of the function. Specifically, looking to use the 
> IS_ENABLED() macro instead of #ifdef to reduce code, provide better code 
> coverage, and to refine the logic.

Ok.

>>> +    }
>>>       bootstrap_map(NULL);
>>>       return 0;
>>
>> The other changes look okay.
> 
> R-b then?

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 17:29:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 17:29:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816391.1230602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sywye-0006HG-Hj; Thu, 10 Oct 2024 17:29:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816391.1230602; Thu, 10 Oct 2024 17:29: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 1sywye-0006H9-EM; Thu, 10 Oct 2024 17:29:28 +0000
Received: by outflank-mailman (input) for mailman id 816391;
 Thu, 10 Oct 2024 17: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=rwpE=RG=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1sywyc-0006H3-Vi
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 17:29:26 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20613.outbound.protection.outlook.com
 [2a01:111:f403:2405::613])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 314ca20a-872d-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 19:29:25 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by CH2PR12MB4133.namprd12.prod.outlook.com (2603:10b6:610:7a::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Thu, 10 Oct
 2024 17:29:22 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%5]) with mapi id 15.20.8026.020; Thu, 10 Oct 2024
 17:29: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: 314ca20a-872d-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ouEuaaKEDSVvphgpcIVvO2FLLXFQufCQuha/GGBpViVEO1C7etC8PA+j1yOGh4Cx1Mx061t05E8ZGdZwOtUnfDVDfLXJ/k4xwtL2ODOa5tEMhT7f+xHIBYZesXpn2UUab+bkZx9uI2qlh3+Tpj2IKzQhkvih4+4zSb5AiAm5Lf2+BGDS781IfhsyxGZQKO9cRUhdc8BI1zgz4MAAvjlpxxmjj9gE6IOP7JbDVibke7picKnAkCYwqh1YWSexM14aAUiwPL4Czk6WnzBYcOMopglBw7AJCwpeRfTPGYxcxiXnvpDsWlHQM8Z8cAPcxR6WI2WjuLjX9j3PVbTlIZ8m6Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=TTw36t781ixUbjMP6yGLs7cl7133CZnMldR3pg86t7o=;
 b=pMD3w6WViS1h7oW2EFkEjBQeulNekMsTsU6/fmrdpeWjkUs280h/m0DH2BOiHN7CPsrgi9Aoq6ETu/QfGr/ezbBB6QUMIP04suS7QxRu9AsQAe/Tc1+dWZ26QUGN+5+RFkiUnat//PF33MiPgUv4gDrgOzAkKWjhOokCQJ93b1GDTl12Nd6TGV6+qQBmb/1rE76z1jgH2vTuVd9lS1G2KW4r7xB0MfrfB4Tg29OAl9m00PpyPFulMmdTg6zGld2gktUZycE6+sphpL2CfJ8aAvJuDNe3bm4fOny6VA4KU4Q/02GMX2+wpeLZierXEJTw7YuXlLa45vdaxkHl/mD35Q==
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=TTw36t781ixUbjMP6yGLs7cl7133CZnMldR3pg86t7o=;
 b=PC9jhJXgvVd4G7hHj+y4TpNz7KoXowXPgQKExv+AUzwaslLkNem9+9a5cYjBUsCqhm4vG4D9W1X+c8N1C9AFA3okEzPp2xs/FlGeBRJ2NYLufszMl111FJiGTiFqyq6Z6Td/CaQlshCw2jJRCWRhh1g7SS3CPmjSf2GkVn0CVNo=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <829c8ae2-dbe7-4ae7-9f4d-1ab996e27df0@amd.com>
Date: Thu, 10 Oct 2024 18:29:16 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
Content-Language: en-GB
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-2-ayan.kumar.halder@amd.com>
 <CACHz=Zh402HGV-=5Lbm5auZS0qX6KXH7ZPHvT3WUZ=EjJ4JE2A@mail.gmail.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <CACHz=Zh402HGV-=5Lbm5auZS0qX6KXH7ZPHvT3WUZ=EjJ4JE2A@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO6P123CA0001.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:338::7) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|CH2PR12MB4133:EE_
X-MS-Office365-Filtering-Correlation-Id: 74277f8a-a1ab-4cfc-5dce-08dce95113d4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZmlRSmhOZEpSaFR1K2FsYXoyd2NpTGhqY1BkMDNCZzZEWTZPa2wyV2VrL3h0?=
 =?utf-8?B?dFRZWmRHMWJuR1VaZm92NVBOM2xKSDZST0ZaR0FjdU5zem9hMnJvK0RjK05Q?=
 =?utf-8?B?U3hnblRHaDRxZnlxZnRvaTVHZXhIRGY2L013VHp1d3IxOUtQSVVESGxmRXlK?=
 =?utf-8?B?bm5iN2tJc3lOak9SYlQ3eTVuWkNQTVpwYi9BSGtJL3dRbmp2TEd0Q3RCWjBw?=
 =?utf-8?B?TkYvbFpVS3hYOVN0Q05ZVlNON3YrTlJpR1lvcy9ZOXpPUW81QU1vWU42TnRG?=
 =?utf-8?B?M3hUYy9FVnhPOW5TUThYd0tpdHM1VmgvTmFrekxNWjJBOTIyK0VRQ2ZOSVo1?=
 =?utf-8?B?S1JRQUllcG5oTGxCRFVRa2w4ZnBhN1FVNHUzYmdTcHdiRXFVTHg2UXV5TXpI?=
 =?utf-8?B?TWFIY0tUSFIxcHRkS1U2SXYwT0hoei9sOXJPMEEyM0tMeVh1aGtRb1hqcDE5?=
 =?utf-8?B?WlE4NG8rVjM2a2c3Y1NPMklQSDdrbHR6QVkwVHp1WEEybWpMVlhQNnJPc3Nt?=
 =?utf-8?B?Q2JScitTU3JSbGUydytKMC9VVUd3d2Z3UjF6aFRQUTVDdWhoL1F2eHd2OVV3?=
 =?utf-8?B?NVFqQStQZkZwdzIzcnJxQ01WVUxHRU41YWhaMDRmK2cxazIyT2RRekliTUFP?=
 =?utf-8?B?QThlV0hxSEhsVThrN3JXY20vWm5mY013eHlKYk5mcmE4OERxbFJJWmI5Q1Uw?=
 =?utf-8?B?Z0g2VmNoZ1oxdHNwRi9KL3N6czh5TldmSFV5UC8xWG9BMHhTNlR4QVg2QWlh?=
 =?utf-8?B?aXROYmdZdWhOaWVVclIzVXJ4MEVlNC90RXN0ekVQZ3hqUnhCQmpQTVJHK3Iy?=
 =?utf-8?B?cUE2dm8zdnBEazRockJMS1Axc0lnQlZPWTRlVlkwL21TQ3VERW8wK3hVOFUy?=
 =?utf-8?B?bnlaeDJRUnp1c2VlcmNNM3FLa290dW1jSjVpd2RuU1l2YThHUjFKOXZiMTVs?=
 =?utf-8?B?dDF6aDJjeG5hQ3NNMk5uNEo2MHBaZjRqQ25vR3ZyeVY1M1UvUWdNeFQ3dEwy?=
 =?utf-8?B?K3k1SWF3QUVVNDB4dzRBVFdBRlYrbStkL1htWDRmQmd6ZGdwNi8zTFduYlJi?=
 =?utf-8?B?V0UyUHFCTWdpMi9QUmZRZXVQLzNZdDJXZW5oMmRIa2habUIrVGtmMmp4d0JO?=
 =?utf-8?B?cUtvZldPVm1SbU1OcHNOUEpCaUx1bkZ5MUdqM0hETGp2ZmtQN3JRclFJWXJU?=
 =?utf-8?B?QnpEM1ZFdzhwd0Y3UWhKVkdyWElCVnNsUzlqREN6NFBBbXpOVUI5Wld6ekwy?=
 =?utf-8?B?Tm9EWGkzS3RTV1hndk40R203dFJua2p5YUIrRG9UMTVaSXhZNU93Z0JGMml2?=
 =?utf-8?B?Y1VHTy81SjdrMjVvRW50VUw0V2VsaHRDOE4zbWFCZzV5VFRualZ1U3ZDN1l5?=
 =?utf-8?B?WURnVDVTM1E1QUtteENudUJtRmhzaEgzMlBFaWhvcUl1dWloNm9mWGhvMmk3?=
 =?utf-8?B?dDhoYlNsQjlldUJ6emFoT3ZxbWNFRGQzWmZVZWNIVno4M1prcVpsOW9PelBP?=
 =?utf-8?B?emNjdGEvYWRyMVh5cXlLclYrRm9sNk1RUyt0eC80RFZBSVdoM2laQzY3dDhI?=
 =?utf-8?B?ZDFYMW45amRLeFBHYmlHaDUrWVlQQ09BbTR2NDlCNDcvZmdhOGV1bUMrRzdv?=
 =?utf-8?B?ZlY0NkVpZ01IV1NTV1VtR2p6WTg4Y1dZRTN4ME5CQjNQWnQrdzZiMXRWWWtC?=
 =?utf-8?B?azFEWUYydXN3akx4TWJuNHI3Z1NZQkxWRUtIQ05HOEorQXdHQVpaRTZ3PT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?TE04OEhmQzErbzRvMmE3OEs3d3ZkaHVaWC9COHNNSTZkS256K3hGcHlvUUZ2?=
 =?utf-8?B?QmFSUGZBaHgwZ2tPUkcybXovc25semZpWnJxaVpWOTk1dG0vTUZKWmZTeEdW?=
 =?utf-8?B?dmJKZ1ZZdGcxQ01TWHFFc2RMVjlidjI2RFlIcXp6VXI0Q2JBSk5aRHQvY0gv?=
 =?utf-8?B?RmtTMkRPcWJ6RTJtbXVHRzQvYzFVUHVwS2hMVFNQUWhUNWJOaHc0dDZ6MTZq?=
 =?utf-8?B?bnFhdXdIS2piaTM1cnJNL243T2Zzdk5GeVN0U3phR09hRlMySnhnNUgvMW10?=
 =?utf-8?B?RWlvZEU1VlIwMEFxY3dCQVk1d09Ubk1kdlloa0c0dTJIZ0hnWUVkYThIbDlB?=
 =?utf-8?B?REVsM3NWUGlLQVJ1em4rZldndFdPc3BqWUpuMmhCSjNabTBES3JHazgrOWNV?=
 =?utf-8?B?bDZuMXBNTHNiWk8zSzN6NWovbFFOS1crM2pXMWJudTUxa0dPL2J5QUhxU2ox?=
 =?utf-8?B?M2YwWitBRWxKVndlVUdPdjRoR3JBNUpxMFNvWTZ5dUF3OGZkK3NveGUrcXZs?=
 =?utf-8?B?cXQzVlZQa0tlRGZ0cXI0T1hmdktPeHU3NktyVUlKcy9kVWJpUm02czQvY25m?=
 =?utf-8?B?ZGF0QVRNYzljbm5oTndlaDFKQWx5aDFBTklKelNpZ1ZOcjJxNVFIcmQ5T2N4?=
 =?utf-8?B?VlVTTS9wS0RPWFRGcndRbW9JU0EvUEJLSkRwNEt1ZEp6Lzg3SjFUTVhDMWdq?=
 =?utf-8?B?VEF0VmIwTEhwTG5JL3NxbGgyQUZoMmgwSTVzK1dHcXpiRU9iUG11dUcydHgv?=
 =?utf-8?B?WFYyVDQxczlERFJaMy9xdEVpbDIzNTQ4RDBjVm9ZR294NUx4NzQreThwMVhK?=
 =?utf-8?B?UG9KbFBRWFFweVhIZzNGcmhMdi96RXNsRkZTN2tvYzJGbnU0NVRpT3lqWmVE?=
 =?utf-8?B?UCtEUk95YVV5TXduQzl2Z2E5VnYzK1BHQkVuUkVKZ0s4OTBORkpXQkJQd2lz?=
 =?utf-8?B?UmdSU1huazg1cHpTS3RqSGN3UHNZaW1FelJYWTV3VHp5NjFoOXd6aXduM0hW?=
 =?utf-8?B?SlQ2eGtSYXNZSkNQRnYvL1Z1Q2U4Y3V1SzhvTUFYb1RqK1phZkl5eXRmM2FM?=
 =?utf-8?B?VUw1TEdrc3crNHhFRWpoOG4zL3VBamlFLzlLTDg3emxiTC9TRkpGSHEwbkF4?=
 =?utf-8?B?MmdxdFJOWDVHN3gyVzRXaXozSlVYNlVVdzBXRGJjTWQybTRDZkRGZlZFWTIx?=
 =?utf-8?B?d2RxNXk2Q3BGU0dtalVuSG9ZNmNsbHo4dUxwaDVkYmNOWFcwQjVqaVZoa0ZW?=
 =?utf-8?B?dVJCSXBwVklnTStXVkpta0VxbHVRaXJxOE5wVVJtSHN0T01nS25pbmdMNTdh?=
 =?utf-8?B?MkdyMWZ1dXFKK3htckh2NkIvZ29nOHRTT1dyeWZwdkxSYW5FOFJpb3Z6a2di?=
 =?utf-8?B?bVdmUGxJRE9GL09NcTRhQWkzN3FkaHQwNVJxNTdnSDNnSmIyUXN0d0lGeDdC?=
 =?utf-8?B?cDJzeUd5R2gwRXRLeEszcXhWbUNsZkJ3VFVjY3dvQkZ3M1E0ekdmSEhxZVA0?=
 =?utf-8?B?Ums5UGJrbU1RUG9pWlV1M0xiY2czQWh1aWE5MlJybHZLM1hweU5aZkt4N1NW?=
 =?utf-8?B?WUM3dzdzbDR4UXdYcjBJZVB5cUlRWFByNlZReEVJZTVxZ20wa2s0bGYvOVM0?=
 =?utf-8?B?VE5ydTI1REZiNVpURlZmaVZaTmJ2Y1h5WHRnMy80WUUrTDZLM1VaQ2JYdmdI?=
 =?utf-8?B?dDd4Mit4U0p6Nlo3TGprY003NStOWE10eXlKU25oVEhaRVZVZ2Q5VWI4OHht?=
 =?utf-8?B?ZHlJVzRUdEtpMFFsRGJ0UldjL2pOQjV5d213S1RhZ2d2Z0NhWjY4cTVETnJh?=
 =?utf-8?B?aDFUcmRqOE5STllVOEs0eHp2a3RWek04YWpSTUlKbFNaZStMQzZKQjBBeHVa?=
 =?utf-8?B?c294am82V1ZRcW1HdHA3MmMvVmR3RXlsdysyV3pPeTJwV3Ivd3M2eVlZYjg2?=
 =?utf-8?B?WnF6TzNwSitVRkw0QW9ScWd0Unp1OUhXQTFsQUhmNk1mYVBVUzRpUjBlcFZz?=
 =?utf-8?B?eVRJUDZTYjFTcW4vUWRRcXhvYmMwWXdSWnRYaVhhTFczTnJSNzRqWXQ2MWRj?=
 =?utf-8?B?NGloRmFKWmJNTEpKQnBiZ0xqSDNpdG9mNWU0eHJLUlJDMDBGcEM5eE82L3l0?=
 =?utf-8?Q?csAaX3DmAXTvtvbqxxXRoQz7e?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 74277f8a-a1ab-4cfc-5dce-08dce95113d4
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Oct 2024 17:29:21.6504
 (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: UhoOtwdori9u1o3S9/dxj18cTAq0CEKduklJtIUupyCqzeaR/VAnI87bz6MvWwzbRgqdgBF+PTzb89A5OVsC+g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4133

Hi Frediano,

Appreciate your feedback.

On 10/10/2024 15:43, Frediano Ziglio wrote:
> On Thu, Oct 10, 2024 at 3:05 PM Ayan Kumar Halder
> <ayan.kumar.halder@amd.com> wrote:
>> If the BSS section is empty, then the function can just return.
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>> ---
>> Changes from :-
>>
>> v1..v2 - New patch introduced in v3.
>>
>>   xen/arch/arm/arm64/head.S | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
>> index 14c3720d80..72c7b24498 100644
>> --- a/xen/arch/arm/arm64/head.S
>> +++ b/xen/arch/arm/arm64/head.S
>> @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
>>           PRINT("- Zero BSS -\r\n")
>>           ldr   x0, =__bss_start       /* x0 := vaddr(__bss_start) */
>>           ldr   x1, =__bss_end         /* x1 := vaddr(__bss_end)   */
>> +        cmp   x1, x0
>> +        beq   skip_bss
>>
>>   1:      str   xzr, [x0], #8
>>           cmp   x0, x1
> Why not just transforming the "do while" loop into a "while" one and
> just jump to cmp?
>
> Something like (not tested)
>
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index 14c3720d80..987f243578 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -346,9 +346,10 @@ FUNC_LOCAL(zero_bss)
>          PRINT("- Zero BSS -\r\n")
>          ldr   x0, =__bss_start       /* x0 := vaddr(__bss_start) */
>          ldr   x1, =__bss_end         /* x1 := vaddr(__bss_end)   */
> +        b     2f
>
> 1:      str   xzr, [x0], #8
> -        cmp   x0, x1
> +2:      cmp   x0, x1
>          b.lo  1b

I am not really sure if this implementation is better than the previous 
one. The drawback of my implementation is that we have an extra 'cmp' 
instruction. The drawback of this implementation is that we need an 
extra label and there is an un-conditional branch after ldr (readability 
is difficult). May be I am biased. :)

How does this look ?

FUNC_LOCAL(zero_bss)
         /* Zero BSS only when requested */
         cbnz  x26, skip_bss

         PRINT("- Zero BSS -\r\n")
         ldr   x0, =__bss_start       /* x0 := vaddr(__bss_start) */
         ldr   x1, =__bss_end         /* x1 := vaddr(__bss_end) */
1:     cmp   x1, x0
         beq   skip_bss

         str   xzr, [x0], #8
         b     1b

skip_bss:
         ret
END(zero_bss)

- Ayan




From xen-devel-bounces@lists.xenproject.org Thu Oct 10 17:32:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 17:32:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816398.1230611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syx1X-0000V2-Ub; Thu, 10 Oct 2024 17:32:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816398.1230611; Thu, 10 Oct 2024 17:32: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 1syx1X-0000Uv-Rv; Thu, 10 Oct 2024 17:32:27 +0000
Received: by outflank-mailman (input) for mailman id 816398;
 Thu, 10 Oct 2024 17:32: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 1syx1W-0000Tn-Gt; Thu, 10 Oct 2024 17:32: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 1syx1W-0000zY-CK; Thu, 10 Oct 2024 17:32: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 1syx1V-0005XE-W2; Thu, 10 Oct 2024 17:32:26 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syx1V-0003oG-VW; Thu, 10 Oct 2024 17:32: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=nGk1IYPVU+XHkVkkD4IgZNL9CAIy7wO2iY6f3XekLHc=; b=3ll+Z/etwp8qCxrpYkrIgOSjsn
	cIahQ5jxtpB0iqLD5ctlC8Ly1aT1fUqccb4tMtdQ1pesboWi3TkkdL7wyA8Eh1TI05QCmuU2fItjD
	BjOhj8KFakkCeic8a+OZyBhbzK7XUIH8yTayacItCufY3oSH0sQaCjhzj4f4HxPTzCkE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188034-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188034: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-arm64-arm64-xl-credit1:debian-fixup:fail:heisenbug
    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-amd64-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-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-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: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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw: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-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd: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-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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
X-Osstest-Versions-That:
    xen=c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 17:32:25 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-xl-credit1  13 debian-fixup     fail in 188018 pass in 188034
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 188018

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188018
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188018
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188018
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188018
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188018
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188018
 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-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-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-amd64-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-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-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-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
baseline version:
 xen                  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd

Last test of basis   188034  2024-10-09 14:54:43 Z    1 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-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                                 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 10 17:43:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 17:43:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816411.1230621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syxC0-0000Eo-1k; Thu, 10 Oct 2024 17:43:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816411.1230621; Thu, 10 Oct 2024 17: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 1syxBz-0000Eh-V4; Thu, 10 Oct 2024 17:43:15 +0000
Received: by outflank-mailman (input) for mailman id 816411;
 Thu, 10 Oct 2024 17:43: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=LYnc=RG=redhat.com=alex.williamson@srs-se1.protection.inumbo.net>)
 id 1syxBy-0000Eb-Hw
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 17:43:14 +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 1e39a051-872f-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 19:43:12 +0200 (CEST)
Received: from mail-io1-f69.google.com (mail-io1-f69.google.com
 [209.85.166.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-348-ej2_7V4iOzSjX9TZHuTimw-1; Thu, 10 Oct 2024 13:43:09 -0400
Received: by mail-io1-f69.google.com with SMTP id
 ca18e2360f4ac-82d1ecfb77dso17669739f.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 10:43:09 -0700 (PDT)
Received: from redhat.com ([38.15.36.11]) by smtp.gmail.com with ESMTPSA id
 8926c6da1cb9f-4dbad9d47d4sm324603173.64.2024.10.10.10.43.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 10:43:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1e39a051-872f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728582191;
	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=okv2RKybuCagmoTr+5nQR2nTb+IA1DURK3Hada+1xdc=;
	b=Izljrfxv9BcCexeNqtB7NRkx0dx6rl/BTVCBoEX82qFNnYBABCleCadp+zRgO0O2lhYPIR
	zvX/9oVQNtSyjzVclB7vlyuiysiNb2CTrItyxmqXGadHPF69Kmm+Ucv3s6ifDkbs/jjoMu
	+1izB0Zv8Ml/5J3VSFmCCuR9PUwSfIE=
X-MC-Unique: ej2_7V4iOzSjX9TZHuTimw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728582189; x=1729186989;
        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=okv2RKybuCagmoTr+5nQR2nTb+IA1DURK3Hada+1xdc=;
        b=YCFGrTJ8Nx9mUIZPusfclYmtVG7/OM+wqYptwRqnMgYTVsInzYnjIomCacRiDYFhGs
         naSPYSlPN6dyAF8pqYMPZN7puklkVEurOUkbHa1cffXwDMwLmqqsh2L2VbYsVlGFfvBl
         bOim2Vb3Mt8EU/9uoSJDRdSwMhq12+vnsdR+yCtnoDNpK96RfoSrJD+VGtVr90FKmWYG
         2lFmNY8UjqabLsjeUjxlhSGgynOYOxdo0ozTkUHlOZZlrpcBtoHlqJSUOI9tniySKks3
         6a1WRiCAp9RZTnoj/VhFC3SPJ76AMtPoYdCbUZSerYZTHKWV6ItY8vW7ipMiJVKVP0N0
         b/bw==
X-Forwarded-Encrypted: i=1; AJvYcCV6iqYs62zLNVv0vDb/FD/RQYNo2AIwou7eLdQkil3LwPt519s0Fvq4gxoxP/nwRPo2EGnDeht4s0c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxOYwzk2NKrPqjke5FLbRiYdhkI9V4XSPgZdG+ypW+Olx4nCIeS
	Dhepc+/NWvyjLS3GdCQO1QR3BBGYRf5b3Jbl9hoDhat49fzoRf+Pjhd91rt2A0mA9gXyy9tTeaC
	HLOQFHZVdvA2dm+a87/XOQu24sqcBqkc1R/rhMua76+JDzm1W1bG/SEvhXaxnb2Q2
X-Received: by 2002:a05:6e02:1f0b:b0:3a3:a5c5:3914 with SMTP id e9e14a558f8ab-3a3a5c53b23mr8780755ab.7.1728582188973;
        Thu, 10 Oct 2024 10:43:08 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEX4wPODz5d2oXE9aKocFeCuVGB9sHsZCElsoW8M99wIhH/mdFxCjREgEp2wTOzqiP6m0FOTw==
X-Received: by 2002:a05:6e02:1f0b:b0:3a3:a5c5:3914 with SMTP id e9e14a558f8ab-3a3a5c53b23mr8780315ab.7.1728582188363;
        Thu, 10 Oct 2024 10:43:08 -0700 (PDT)
Date: Thu, 10 Oct 2024 11:43:04 -0600
From: Alex Williamson <alex.williamson@redhat.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>, Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?UTF-8?B?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?UTF-8?B?TWFyY3p5a293c2tpLUfDs3JlY2tp?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
 netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org,
 linux-staging@lists.linux.dev, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
Message-ID: <20241010114304.064f5d3d.alex.williamson@redhat.com>
In-Reply-To: <20241009083519.10088-2-pstanner@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	<20241009083519.10088-2-pstanner@redhat.com>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.43; x86_64-redhat-linux-gnu)
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

On Wed,  9 Oct 2024 10:35:07 +0200
Philipp Stanner <pstanner@redhat.com> wrote:

> pci_intx() is a hybrid function which sometimes performs devres
> operations, depending on whether pcim_enable_device() has been used to
> enable the pci_dev. This sometimes-managed nature of the function is
> problematic. Notably, it causes the function to allocate under some
> circumstances which makes it unusable from interrupt context.
> 
> To, ultimately, remove the hybrid nature from pci_intx(), it is first
> necessary to provide an always-managed and a never-managed version
> of that function. Then, all callers of pci_intx() can be ported to the
> version they need, depending whether they use pci_enable_device() or
> pcim_enable_device().
> 
> An always-managed function exists, namely pcim_intx(), for which
> __pcim_intx(), a never-managed version of pci_intx() had been
> implemented.
> 
> Make __pcim_intx() a public function under the name
> pci_intx_unmanaged(). Make pcim_intx() a public function.
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> ---
>  drivers/pci/devres.c | 24 +++---------------------
>  drivers/pci/pci.c    | 26 ++++++++++++++++++++++++++
>  include/linux/pci.h  |  2 ++
>  3 files changed, 31 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
> index b133967faef8..475a3ae5c33f 100644
> --- a/drivers/pci/devres.c
> +++ b/drivers/pci/devres.c
> @@ -411,31 +411,12 @@ static inline bool mask_contains_bar(int mask, int bar)
>  	return mask & BIT(bar);
>  }
>  
> -/*
> - * This is a copy of pci_intx() used to bypass the problem of recursive
> - * function calls due to the hybrid nature of pci_intx().
> - */
> -static void __pcim_intx(struct pci_dev *pdev, int enable)
> -{
> -	u16 pci_command, new;
> -
> -	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> -
> -	if (enable)
> -		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
> -	else
> -		new = pci_command | PCI_COMMAND_INTX_DISABLE;
> -
> -	if (new != pci_command)
> -		pci_write_config_word(pdev, PCI_COMMAND, new);
> -}
> -
>  static void pcim_intx_restore(struct device *dev, void *data)
>  {
>  	struct pci_dev *pdev = to_pci_dev(dev);
>  	struct pcim_intx_devres *res = data;
>  
> -	__pcim_intx(pdev, res->orig_intx);
> +	pci_intx_unmanaged(pdev, res->orig_intx);
>  }
>  
>  static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
> @@ -472,10 +453,11 @@ int pcim_intx(struct pci_dev *pdev, int enable)
>  		return -ENOMEM;
>  
>  	res->orig_intx = !enable;
> -	__pcim_intx(pdev, enable);
> +	pci_intx_unmanaged(pdev, enable);
>  
>  	return 0;
>  }
> +EXPORT_SYMBOL(pcim_intx);

What precludes this from _GPL?  Also note that this is now calling a
GPL symbol, so by default I'd assume it should also be GPL.  Thanks,

Alex

>  
>  static void pcim_disable_device(void *pdev_raw)
>  {
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 7d85c04fbba2..318cfb5b5e15 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -4476,6 +4476,32 @@ void pci_disable_parity(struct pci_dev *dev)
>  	}
>  }
>  
> +/**
> + * pci_intx - enables/disables PCI INTx for device dev, unmanaged version
> + * @pdev: the PCI device to operate on
> + * @enable: boolean: whether to enable or disable PCI INTx
> + *
> + * Enables/disables PCI INTx for device @pdev
> + *
> + * This function behavios identically to pci_intx(), but is never managed with
> + * devres.
> + */
> +void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
> +{
> +	u16 pci_command, new;
> +
> +	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> +
> +	if (enable)
> +		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
> +	else
> +		new = pci_command | PCI_COMMAND_INTX_DISABLE;
> +
> +	if (new != pci_command)
> +		pci_write_config_word(pdev, PCI_COMMAND, new);
> +}
> +EXPORT_SYMBOL_GPL(pci_intx_unmanaged);
> +
>  /**
>   * pci_intx - enables/disables PCI INTx for device dev
>   * @pdev: the PCI device to operate on
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 573b4c4c2be6..6b8cde76d564 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1353,6 +1353,7 @@ int __must_check pcim_set_mwi(struct pci_dev *dev);
>  int pci_try_set_mwi(struct pci_dev *dev);
>  void pci_clear_mwi(struct pci_dev *dev);
>  void pci_disable_parity(struct pci_dev *dev);
> +void pci_intx_unmanaged(struct pci_dev *pdev, int enable);
>  void pci_intx(struct pci_dev *dev, int enable);
>  bool pci_check_and_mask_intx(struct pci_dev *dev);
>  bool pci_check_and_unmask_intx(struct pci_dev *dev);
> @@ -2293,6 +2294,7 @@ static inline void pci_fixup_device(enum pci_fixup_pass pass,
>  				    struct pci_dev *dev) { }
>  #endif
>  
> +int pcim_intx(struct pci_dev *pdev, int enabled);
>  void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
>  void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
>  				const char *name);



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 17:43:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 17:43:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816412.1230632 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syxCA-0000WC-8l; Thu, 10 Oct 2024 17:43:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816412.1230632; Thu, 10 Oct 2024 17:43: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 1syxCA-0000W3-5i; Thu, 10 Oct 2024 17:43:26 +0000
Received: by outflank-mailman (input) for mailman id 816412;
 Thu, 10 Oct 2024 17:43: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=LYnc=RG=redhat.com=alex.williamson@srs-se1.protection.inumbo.net>)
 id 1syxC8-0000VN-W2
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 17:43:24 +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 2393573e-872f-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 19:43:23 +0200 (CEST)
Received: from mail-io1-f71.google.com (mail-io1-f71.google.com
 [209.85.166.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-534-DtqmGv_WPfWLj2zMQ2S6DQ-1; Thu, 10 Oct 2024 13:43:18 -0400
Received: by mail-io1-f71.google.com with SMTP id
 ca18e2360f4ac-8354b28ca4cso15639839f.0
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 10:43:18 -0700 (PDT)
Received: from redhat.com ([38.15.36.11]) by smtp.gmail.com with ESMTPSA id
 8926c6da1cb9f-4dbadaa9f67sm322910173.153.2024.10.10.10.43.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 10:43:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2393573e-872f-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728582200;
	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=irpjS10coO2t0wwvE3gFasz0R9ftgsaNlPSsljy/7YU=;
	b=jL+nC/GS68CpIFHlyJsox6zmL4+9iYVQJbhDX2pbqbJEbsjG8BTpcN7IPEWedIVNYjwnPq
	mD3q/0yeIT8T0KMZl5BITAJ26Om8MAfxS2NH1KwJlAgoNtZ0yR1FRR9mWQr2pXFC/nivgy
	Vg/TGe699E5FAB9W1T/Vv2585uDH5ls=
X-MC-Unique: DtqmGv_WPfWLj2zMQ2S6DQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728582198; x=1729186998;
        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=irpjS10coO2t0wwvE3gFasz0R9ftgsaNlPSsljy/7YU=;
        b=v0VufIqRg7Tmo5d9J5WA3v8gKY8Imk8OTOXOtB7YMDs1E3WPW5gqmgUfbTsWPqYoLF
         AUZqTRzCxg8GoB4UXUuBhqci//NbZuUyOq6ub6YSRdVcYU/gFE1a/KhxtJZeP6yMU1OB
         OfLVhonDOz1474GZ7CUWt+wnhMnRDu4MoiX7aUidRUQmt+KCzrIGpEFSsYYm4G2jwmEv
         oMr7G7x0FxPcRbS1swlX1MiDBFWYHcwCDK7CIBUlLTwMp7PxqnuCzBcx/D0y7EVW7UAz
         cTnOtVTRz+vugTHJBauUpNntbLWKHJ3BGi7Xkm/hVyGq++YapK3DPZaP/z/+7rJGXXzp
         eaSQ==
X-Forwarded-Encrypted: i=1; AJvYcCWPjrJAmL8cWvlOdQ1NHFofC+nRINiKL0evC5SlLFgFFNqYujOO2rzqqtc7jyuxipH7ldllhuMgSPk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxCgd4SFFarAsc5NytY+Jz+5AVNjuONQOGx2qhC6EFWIv4zfkwv
	vsvZK8bnsOPx6DfIrYrgzCM29iVeM9ZKWNtleVE2zetO8IdXLxGOFfrW9yP/N+zn7wTFZfqea5z
	evVFo39fPCHy8tXaAflQ9XjoqBJhJttadX5ksUuchoX9tYUFLMf4HrPzblaR96L9M
X-Received: by 2002:a05:6e02:1c46:b0:3a0:a1ab:7ce6 with SMTP id e9e14a558f8ab-3a397cdda26mr18750875ab.1.1728582197758;
        Thu, 10 Oct 2024 10:43:17 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEaLJzsYWJH/NUMC+IMyT+j/CP16HRwxWkCBGHxtTft8rw7tBisUdCTh60bMs+LHrYbLbadmw==
X-Received: by 2002:a05:6e02:1c46:b0:3a0:a1ab:7ce6 with SMTP id e9e14a558f8ab-3a397cdda26mr18750415ab.1.1728582197304;
        Thu, 10 Oct 2024 10:43:17 -0700 (PDT)
Date: Thu, 10 Oct 2024 11:43:14 -0600
From: Alex Williamson <alex.williamson@redhat.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Dan Carpenter <dan.carpenter@linaro.org>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, Sergey Shtylyov
 <s.shtylyov@omp.ru>, Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri
 Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>, Arnd
 Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 Alex Dubov <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski
 <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Rasesh Mody
 <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko
 <imitsyanko@quantenna.com>, Sergey Matyukevich <geomatsi@gmail.com>, Kalle
 Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar
 S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?UTF-8?B?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>,
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?UTF-8?B?TWFyY3p5a293c2tpLUfDs3JlY2tp?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
 netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org,
 linux-staging@lists.linux.dev, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 13/13] Remove devres from pci_intx()
Message-ID: <20241010114314.296db535.alex.williamson@redhat.com>
In-Reply-To: <f42bb5de4c9aca307a3431dd15ace4c9cade1cb9.camel@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	<20241009083519.10088-14-pstanner@redhat.com>
	<7f624c83-115b-4045-b068-0813a18c8200@stanley.mountain>
	<f42bb5de4c9aca307a3431dd15ace4c9cade1cb9.camel@redhat.com>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.43; 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 Thu, 10 Oct 2024 11:11:36 +0200
Philipp Stanner <pstanner@redhat.com> wrote:

> On Thu, 2024-10-10 at 11:50 +0300, Dan Carpenter wrote:
> > On Wed, Oct 09, 2024 at 10:35:19AM +0200, Philipp Stanner wrote: =20
> > > pci_intx() is a hybrid function which can sometimes be managed
> > > through
> > > devres. This hybrid nature is undesirable.
> > >=20
> > > Since all users of pci_intx() have by now been ported either to
> > > always-managed pcim_intx() or never-managed pci_intx_unmanaged(),
> > > the
> > > devres functionality can be removed from pci_intx().
> > >=20
> > > Consequently, pci_intx_unmanaged() is now redundant, because
> > > pci_intx()
> > > itself is now unmanaged.
> > >=20
> > > Remove the devres functionality from pci_intx(). Remove
> > > pci_intx_unmanaged().
> > > Have all users of pci_intx_unmanaged() call pci_intx().
> > >=20
> > > Signed-off-by: Philipp Stanner <pstanner@redhat.com> =20
> >=20
> > I don't like when we change a function like this but it still
> > compiles fine.
> > If someone is working on a driver and hasn't pushed it yet, then it's
> > probably
> > supposed to be using the new pcim_intx() but they won't discover that
> > until they
> > detect the leaks at runtime. =20
>=20
> There wouldn't be any *leaks*, it's just that the INTx state would not
> automatically be restored. BTW the official documentation in its
> current state does not hint at pci_intx() doing anything automatically,
> but rather actively marks it as deprecated.
>=20
> But you are right that a hypothetical new driver and OOT drivers could
> experience bugs through this change.
>=20
> >=20
> > Why not leave the pci_intx_unmanaged() name.=C2=A0 It's ugly and that w=
ill
> > discorage
> > people from introducing new uses. =20
>=20
> I'd be OK with that. Then we'd have to remove pci_intx() as it has new
> users anymore.
>=20
> Either way should be fine and keep the behavior for existing drivers
> identical.
>=20
> I think Bjorn should express a preference

FWIW, I think pcim_intx() and pci_intx() align better to our naming
convention for devres interfaces.  Would it be sufficient if pci_intx()
triggered a WARN_ON if called for a pci_is_managed() device?  Thanks,

Alex



From xen-devel-bounces@lists.xenproject.org Thu Oct 10 17:54:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 17:54:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816425.1230641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syxMZ-0004uP-7e; Thu, 10 Oct 2024 17:54:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816425.1230641; Thu, 10 Oct 2024 17: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 1syxMZ-0004uI-5A; Thu, 10 Oct 2024 17:54:11 +0000
Received: by outflank-mailman (input) for mailman id 816425;
 Thu, 10 Oct 2024 17:54: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 1syxMX-0004u8-JN; Thu, 10 Oct 2024 17:54: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 1syxMX-0001Nl-HJ; Thu, 10 Oct 2024 17:54: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 1syxMX-00064J-5p; Thu, 10 Oct 2024 17:54:09 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1syxMX-0002xN-5O; Thu, 10 Oct 2024 17:54: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=oQ6JYsrtWU1X9v9toPTDkbt2bpPOf6KmpQsWH1cucd8=; b=lU6IJULcXvkJ4oNoDXicVoLluD
	RrcbmD2fqIHUvAwyXtA0iBWEE+pV8Zdr20qfdsX0xPn5sUxW069EFbpKi5bPSDDXzNqsB8JLYUIJz
	vy2DSrdkYJzO8UeJreBu31/+nDHp6jjtubvirwZaHbShVuQ0/HGaOJ1Ea2NRTRYoG91c=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188044-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188044: 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=a592c98f94a1a58838acd3f4cc8b55132b1061c0
X-Osstest-Versions-That:
    xen=2b49ef4503e2c549c166f439cf0dd331d9a8874c
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 17:54:09 +0000

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

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                  a592c98f94a1a58838acd3f4cc8b55132b1061c0
baseline version:
 xen                  2b49ef4503e2c549c166f439cf0dd331d9a8874c

Last test of basis   188041  2024-10-10 09:02:17 Z    0 days
Testing same since   188044  2024-10-10 13:02:12 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrii Sultanov <andrii.sultanov@cloud.com>
  Christian Lindig <christian.lindig@cloud.com>
  Daniel P. Smith <dpsmith@apertussolutions.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
   2b49ef4503..a592c98f94  a592c98f94a1a58838acd3f4cc8b55132b1061c0 -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 18:35:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 18:35:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816439.1230652 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syy05-0004GE-5I; Thu, 10 Oct 2024 18:35:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816439.1230652; Thu, 10 Oct 2024 18:35: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 1syy05-0004G7-2e; Thu, 10 Oct 2024 18:35:01 +0000
Received: by outflank-mailman (input) for mailman id 816439;
 Thu, 10 Oct 2024 18:34: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=Xe3N=RG=linaro.org=dan.carpenter@srs-se1.protection.inumbo.net>)
 id 1syy03-0004G1-Lv
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 18:34:59 +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 59f5f42e-8736-11ef-a0bd-8be0dac302b0;
 Thu, 10 Oct 2024 20:34:58 +0200 (CEST)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4311c285bc9so2687685e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 11:34:58 -0700 (PDT)
Received: from localhost ([196.207.164.177]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4311835696esm23005225e9.37.2024.10.10.11.34.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 10 Oct 2024 11:34:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59f5f42e-8736-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1728585297; x=1729190097; 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=ytCziD1c5I5FhCXF5EK5g0FeePvbLPZ6YQt0NDF0j9M=;
        b=wG3SkAfdQUUicL4cofdNMQiNgSM4MgmhPpIwrAsMtOTPM/o+RqQ12jDx5+GjyScLXz
         IPpWB5YzMW+ieTe0siau7EafmmfN7+5x8EnLu2lPg2WgiIiLZpsfNITKGXceqCRrfLx7
         z3YoPJ6bqtZR34waesooXJzJ6aTbsal9ByoElzHN6R5NszDJUu4c8HvZ9erEe4gwW61o
         FqE17VnBHX80Dpfy4GFrFZ5RJGaCxv+eHpRxhJltpEOdvGgxTAFAkc85lbmcB+ICC6L/
         rDulce7uA1Krx0N67vbqWr3cga/x/BbAB9mt8W4M51bvUe7YUPMzYxQhY2bPGUDziDuA
         XCQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728585297; x=1729190097;
        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=ytCziD1c5I5FhCXF5EK5g0FeePvbLPZ6YQt0NDF0j9M=;
        b=m3WrsFb85ph3a3ayWmQh7WeaPrpLlwfUSetZlABQhYrz8xdvAz0lndxquqHZsTxQMT
         X/SoYD/SOAEMDL7aQdm35z7+S0h0dWkon+LDZ24XTB6KLHyzx6i2sQsx/uYTF4bNxoZW
         m5RTCLoLZYj1ChuAj6IiWolZ9xIhGefT685mOeDX0MTqGLnOJHgbWrfwKSepbaJYwPTw
         8BWKDjTM9LSlIkdsn12PB43i4hKI4i9b+fQVAoNyKbjyW3pdGNOw8b23AUVsaXZFtkZa
         ZP3b/lliiUKCv0v/CkN6MhY7NdU5yvnK8y9twPszXLiEM6V4+E7FcJs56o+Ccode2/jq
         xfMg==
X-Forwarded-Encrypted: i=1; AJvYcCUj3wyL3ibzTKL67ktuRYE5ZR26UNTa9RYPWILapObBcB1T+5u4OO02T3EzoFzkUYPEr0+mqlxVnvk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yygm/u+kZRRDMVvfTaMfmvgfej/kjPt29BXlRx7WtFxtoVO88rb
	FZCdJ9YDml/lt7nk2/0sdG4MLWKRQjAWJzH7gFgQlWLeqU/dxLDoq1TDHvV2TPo=
X-Google-Smtp-Source: AGHT+IGrQtiU9KkPJvVdlsqZUQMKOCUeX11EZAgMHCeWVATX5aFzmtkTu4Efnh91V5tJdIM1vfefqw==
X-Received: by 2002:a05:600c:46c9:b0:42c:c401:6d86 with SMTP id 5b1f17b1804b1-431157e56e5mr37151355e9.27.1728585297410;
        Thu, 10 Oct 2024 11:34:57 -0700 (PDT)
Date: Thu, 10 Oct 2024 21:34:53 +0300
From: Dan Carpenter <dan.carpenter@linaro.org>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Philipp Stanner <pstanner@redhat.com>,
	Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 13/13] Remove devres from pci_intx()
Message-ID: <0990d9f9-cab9-44c2-b2e3-bd8fa556cc02@stanley.mountain>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-14-pstanner@redhat.com>
 <7f624c83-115b-4045-b068-0813a18c8200@stanley.mountain>
 <f42bb5de4c9aca307a3431dd15ace4c9cade1cb9.camel@redhat.com>
 <20241010114314.296db535.alex.williamson@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241010114314.296db535.alex.williamson@redhat.com>

On Thu, Oct 10, 2024 at 11:43:14AM -0600, Alex Williamson wrote:
> FWIW, I think pcim_intx() and pci_intx() align better to our naming
> convention for devres interfaces.  Would it be sufficient if pci_intx()
> triggered a WARN_ON if called for a pci_is_managed() device?  Thanks,
> 

To be honest, I also don't mind if you also just merge the patchset as-is.  I
was mostly just throwing out ideas.

regards,
dan carpenter


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 19:38:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 19:38:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816455.1230661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syyza-0005tz-Rg; Thu, 10 Oct 2024 19:38:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816455.1230661; Thu, 10 Oct 2024 19: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 1syyza-0005ts-PB; Thu, 10 Oct 2024 19:38:34 +0000
Received: by outflank-mailman (input) for mailman id 816455;
 Thu, 10 Oct 2024 19: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=mNu3=RG=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1syyzZ-0005tT-DJ
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 19:38:33 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3937cbcf-873f-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 21:38:29 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 2B237A4020A;
 Thu, 10 Oct 2024 19:38:19 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 90F03C4CECC;
 Thu, 10 Oct 2024 19:38:26 +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: 3937cbcf-873f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728589107;
	bh=fIaFEL2432nob6KEiMmP2odt7ge8i70XjeaZTXAuU0I=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=uH4ye3CDFTPsPCrl4O32hydS+/adIaz9F1/wxOhQ/dCW3ZSDHfoiR45sBWOehUz20
	 BXTO/COj3dxoqUxNkvN+KDiOhM91VAE0xIRVRGIcDWfRQQ6HYLJHpr1VM86CAvVB5V
	 JEK/QO7iJcYquT4NumU8Hbf1u35EO48qQ6f9JmjI20sXzlWM5oI2DPU9UIsozrx3Ie
	 D6TlKRiHlkYluVc1KsVXk9BNvZFxuUamjy3dGkfQxto+UUAqpCuIfKPaHQVV1+GLlm
	 keDJI85nPt9CAXhjo3vlXfUzTchT+PYBj85JHr+IIG4OQu90bj98r1UYl2LeExivGX
	 /ECPqcwEH9Bsg==
Date: Thu, 10 Oct 2024 12:38:25 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jiqian Chen <Jiqian.Chen@amd.com>
cc: Juergen Gross <jgross@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
    xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH v2] xen: Remove dependency between pciback and privcmd
In-Reply-To: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410101237430.471028@ubuntu-linux-20-04-desktop>
References: <20241010075848.1002891-1-Jiqian.Chen@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-35704740-1728589107=:471028"

  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-35704740-1728589107=:471028
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Thu, 10 Oct 2024, Jiqian Chen wrote:
> Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
> adds a weak reverse dependency to the config XEN_PRIVCMD definition, that
> dependency causes xen-privcmd can't be loaded on domU, because
> dependent xen-pciback is always not be loaded successfully on domU.
> 
> To solve above problem, remove that dependency, and do not call
> pcistub_get_gsi_from_sbdf() directly, instead add a hook in
> drivers/xen/apci.c, xen-pciback register the real call function, then in
> privcmd_ioctl_pcidev_get_gsi call that hook.
> 
> Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
> Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> ---
> v1->v2 changes:
> Added hook xen_acpi_get_gsi_from_sbdf.
> Changed pcistub_get_gsi_from_sbdf to static and pciback register it as the real hook function.
> ---
>  drivers/xen/Kconfig                |  1 -
>  drivers/xen/acpi.c                 | 17 +++++++++++++++++
>  drivers/xen/privcmd.c              |  6 ++----
>  drivers/xen/xen-pciback/pci_stub.c |  4 ++--
>  include/xen/acpi.h                 | 12 ++++--------
>  5 files changed, 25 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
> index 72ddee4c1544..f7d6f47971fd 100644
> --- a/drivers/xen/Kconfig
> +++ b/drivers/xen/Kconfig
> @@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
>  config XEN_PRIVCMD
>  	tristate "Xen hypercall passthrough driver"
>  	depends on XEN
> -	imply XEN_PCIDEV_BACKEND
>  	default m
>  	help
>  	  The hypercall passthrough driver allows privileged user programs to
> diff --git a/drivers/xen/acpi.c b/drivers/xen/acpi.c
> index 9e2096524fbc..0bff2f3a87d2 100644
> --- a/drivers/xen/acpi.c
> +++ b/drivers/xen/acpi.c
> @@ -125,3 +125,20 @@ int xen_acpi_get_gsi_info(struct pci_dev *dev,
>  	return 0;
>  }
>  EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_info);
> +
> +get_gsi_from_sbdf_t get_gsi_from_sbdf = NULL;

This can be static


> +void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func)
> +{
> +	get_gsi_from_sbdf = func;
> +}
> +EXPORT_SYMBOL_GPL(xen_acpi_register_get_gsi_func);
> +
> +int xen_acpi_get_gsi_from_sbdf(u32 sbdf)
> +{
> +	if (get_gsi_from_sbdf)
> +		return get_gsi_from_sbdf(sbdf);
> +
> +	return -EINVAL;
> +}
> +EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_from_sbdf);
> \ No newline at end of file
> diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
> index 3273cb8c2a66..4f75bc876454 100644
> --- a/drivers/xen/privcmd.c
> +++ b/drivers/xen/privcmd.c
> @@ -850,15 +850,13 @@ static long privcmd_ioctl_mmap_resource(struct file *file,
>  static long privcmd_ioctl_pcidev_get_gsi(struct file *file, void __user *udata)
>  {
>  #if defined(CONFIG_XEN_ACPI)
> -	int rc = -EINVAL;
> +	int rc;
>  	struct privcmd_pcidev_get_gsi kdata;
>  
>  	if (copy_from_user(&kdata, udata, sizeof(kdata)))
>  		return -EFAULT;
>  
> -	if (IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND))
> -		rc = pcistub_get_gsi_from_sbdf(kdata.sbdf);
> -
> +	rc = xen_acpi_get_gsi_from_sbdf(kdata.sbdf);
>  	if (rc < 0)
>  		return rc;
>  
> diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
> index 2f3da5ac62cd..900e6199eec7 100644
> --- a/drivers/xen/xen-pciback/pci_stub.c
> +++ b/drivers/xen/xen-pciback/pci_stub.c
> @@ -227,7 +227,7 @@ static struct pci_dev *pcistub_device_get_pci_dev(struct xen_pcibk_device *pdev,
>  }
>  
>  #ifdef CONFIG_XEN_ACPI
> -int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
> +static int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
>  {
>  	struct pcistub_device *psdev;
>  	int domain = (sbdf >> 16) & 0xffff;
> @@ -242,7 +242,6 @@ int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
>  
>  	return psdev->gsi;
>  }
> -EXPORT_SYMBOL_GPL(pcistub_get_gsi_from_sbdf);
>  #endif
>  
>  struct pci_dev *pcistub_get_pci_dev_by_slot(struct xen_pcibk_device *pdev,
> @@ -484,6 +483,7 @@ static int pcistub_init_device(struct pcistub_device *psdev)
>  		if (err)
>  			goto config_release;
>  		psdev->gsi = gsi;
> +		xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
>  	}
>  #endif
>  
> diff --git a/include/xen/acpi.h b/include/xen/acpi.h
> index daa96a22d257..ef4f70e4a557 100644
> --- a/include/xen/acpi.h
> +++ b/include/xen/acpi.h
> @@ -91,13 +91,9 @@ static inline int xen_acpi_get_gsi_info(struct pci_dev *dev,
>  }
>  #endif
>  
> -#ifdef CONFIG_XEN_PCI_STUB
> -int pcistub_get_gsi_from_sbdf(unsigned int sbdf);
> -#else
> -static inline int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
> -{
> -	return -1;
> -}
> -#endif
> +typedef int (*get_gsi_from_sbdf_t)(u32 sbdf);
> +
> +void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func);
> +int xen_acpi_get_gsi_from_sbdf(unsigned int sbdf);
>  
>  #endif	/* _XEN_ACPI_H */
> -- 
> 2.34.1
> 
--8323329-35704740-1728589107=:471028--


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 19:48:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 19:48:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816465.1230672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1syz9B-0002mT-OU; Thu, 10 Oct 2024 19:48:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816465.1230672; Thu, 10 Oct 2024 19:48: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 1syz9B-0002mM-Li; Thu, 10 Oct 2024 19:48:29 +0000
Received: by outflank-mailman (input) for mailman id 816465;
 Thu, 10 Oct 2024 19:48: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=mNu3=RG=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1syz9A-0002i7-ES
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 19:48:28 +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 9ce30cf7-8740-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 21:48:26 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 3689F5C5B1F;
 Thu, 10 Oct 2024 19:48:20 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45B13C4CECC;
 Thu, 10 Oct 2024 19:48: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: 9ce30cf7-8740-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728589704;
	bh=WAK0js+uLRaxxjzfDY/gHuN/MOfPSm4ZD9dsAYjJEuQ=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=eMfaXiOT2IB4aLqNTcv8Zpgakv96QjNxSi0tIUVwY6QgrqAIGk5M8vI86muc51Dek
	 2vtxDU4cANumGj8LtjkfqhHy4QWo4KM3BL+Gwc2i9ZxhD2SwkuRSjPFNa6adic7GHP
	 3sVfnvmVIN53mt3K9w41B613oSdOAQ6sGduHXPNUDnhRJe7bZpkEZkmNuB/Gr/cmVP
	 rh8uM3/UkC7n0ehoCd3vndKsg6jvBpVW6Yj3I7QbbiiSpSrA4oYjhkaAIZ1BJO47+V
	 mP1YFD8v6d6AaaJOIL2pakD+D1xDBhRzoUaihoTmCpKJcjrm5bloiCn0BoNY8Lu5E+
	 1sOE1PAa/z8Sw==
Date: Thu, 10 Oct 2024 12:48:21 -0700 (PDT)
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, Andrew Cooper <andrew.cooper3@citrix.com>, 
    Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>
Subject: Re: [PATCH] device-tree: Move dt-overlay.c to common/device-tree/
In-Reply-To: <20241010105746.140921-1-michal.orzel@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410101248160.471028@ubuntu-linux-20-04-desktop>
References: <20241010105746.140921-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 Thu, 10 Oct 2024, Michal Orzel wrote:
> The code is DT specific and as such should be placed under common
> directory for DT related files. Update MAINTAINERS file accordingly
> and drop the line with a path from a top-level comment in dt-overlay.c.
> It serves no purpose and requires being updated on every code movement.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> This patch is based on the already acked series (waiting to be committed):
> https://lore.kernel.org/xen-devel/20241004122220.234817-1-michal.orzel@amd.com/T/
> ---
>  MAINTAINERS                               | 1 -
>  xen/common/Makefile                       | 1 -
>  xen/common/device-tree/Makefile           | 1 +
>  xen/common/{ => device-tree}/dt-overlay.c | 2 --
>  4 files changed, 1 insertion(+), 4 deletions(-)
>  rename xen/common/{ => device-tree}/dt-overlay.c (99%)
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index f68ddd7f84a5..3bba2c8c31ad 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -292,7 +292,6 @@ M:	Michal Orzel <michal.orzel@amd.com>
>  S:	Supported
>  F:	xen/common/libfdt/
>  F:	xen/common/device-tree/
> -F:	xen/common/dt-overlay.c
>  F:	xen/include/xen/libfdt/
>  F:	xen/include/xen/bootfdt.h
>  F:	xen/include/xen/device_tree.h
> diff --git a/xen/common/Makefile b/xen/common/Makefile
> index f90bb00d23e5..8dec11544e35 100644
> --- a/xen/common/Makefile
> +++ b/xen/common/Makefile
> @@ -9,7 +9,6 @@ obj-$(CONFIG_DEBUG_TRACE) += debugtrace.o
>  obj-$(CONFIG_HAS_DEVICE_TREE) += device-tree/
>  obj-$(CONFIG_IOREQ_SERVER) += dm.o
>  obj-y += domain.o
> -obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
>  obj-y += event_2l.o
>  obj-y += event_channel.o
>  obj-y += event_fifo.o
> diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makefile
> index 990abd571acf..58052d074e62 100644
> --- a/xen/common/device-tree/Makefile
> +++ b/xen/common/device-tree/Makefile
> @@ -1,3 +1,4 @@
>  obj-y += bootfdt.init.o
>  obj-y += bootinfo.init.o
>  obj-y += device-tree.o
> +obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
> diff --git a/xen/common/dt-overlay.c b/xen/common/device-tree/dt-overlay.c
> similarity index 99%
> rename from xen/common/dt-overlay.c
> rename to xen/common/device-tree/dt-overlay.c
> index 5ce00514ef14..97fb99eaaaf7 100644
> --- a/xen/common/dt-overlay.c
> +++ b/xen/common/device-tree/dt-overlay.c
> @@ -1,7 +1,5 @@
>  /* SPDX-License-Identifier: GPL-2.0-only */
>  /*
> - * xen/common/dt-overlay.c
> - *
>   * Device tree overlay support in Xen.
>   *
>   * Copyright (C) 2023, Advanced Micro Devices, Inc. All Rights Reserved.
> -- 
> 2.25.1
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 21:32:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 21:32:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816481.1230681 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz0lB-0005Yf-Si; Thu, 10 Oct 2024 21:31:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816481.1230681; Thu, 10 Oct 2024 21:31: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 1sz0lB-0005YY-QC; Thu, 10 Oct 2024 21:31:49 +0000
Received: by outflank-mailman (input) for mailman id 816481;
 Thu, 10 Oct 2024 21:31: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sz0lA-0005YS-FB
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 21:31:48 +0000
Received: from mail-oo1-xc30.google.com (mail-oo1-xc30.google.com
 [2607:f8b0:4864:20::c30])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0be03bbb-874f-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 23:31:45 +0200 (CEST)
Received: by mail-oo1-xc30.google.com with SMTP id
 006d021491bc7-5eb17036f27so249130eaf.3
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 14:31:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0be03bbb-874f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728595904; x=1729200704; 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=d2YGAemPX8C66CBvu+0UJCQGcrgSjaZ4rfHql3OvE5o=;
        b=CERWJ/aKjHWX39WEF+OudF3CyTA5PGc7NsCGswzZr3tqz2j1mHmY8d/ghS13UEmyc3
         vFNoWdtBoWAbvhyagSdJjeXo1RYYgmFy4Tyr9XqRknhhSseQTdwSvGBhBVM9SONamIn8
         aRtvZAInUGzjXuqVQZ/1z6YCzgEX0axXe0EZM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728595904; x=1729200704;
        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=d2YGAemPX8C66CBvu+0UJCQGcrgSjaZ4rfHql3OvE5o=;
        b=hW3s/VLnnraoe4gYAbztwq5MMws5fCRX+WjBZSr1ZAnPC6DnQn/AYNGmv1mG1X2lim
         pdFf2aTxSNn7lgVPJN/LBoJyrriNvsHludjZKSLQle4CoygLReA0sFdVt4bmgT6qYLnu
         Fxzf4q261PSZotVKthpmgXJ7GLymJpLjhW65PeJ180V1xJXuGJPWdx1gGVX1MQz2b56G
         DHKM2q7cEIry9fDP4ErShe6RhPbm9VZU4l+vdgmbsR5NpT8XhuZRti5yvyfajhpJKvfW
         QH2pCJIJ4OwlzAQIGc+JHiTLGo+qNVAHYuUUXCwbmHSdXwcOwizLZPTdg86zOAri6vNp
         enbQ==
X-Forwarded-Encrypted: i=1; AJvYcCWfQ3q/ebhwfgEUhxh5QeuWhvKzQQ9reOxQOkFW7v5N23XTJhZdAh6A9Bgtx+KBObOGqQhchq3v06c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqkwWCTpAr2/liTwcXxlnT+PFG98/sTfBfNgvAPeFu8bvnmCf1
	0oYoKTKCF1vjpqr863MdySZFkmQnoSFCzxiVC6mi85UFoyAYlsMxxq72JM0VQbl+rFyh4/BB27z
	x/xQu5V9cdeCWP+pOUQdptmpI64eoOWz/+/pZQw==
X-Google-Smtp-Source: AGHT+IE0n1Eehlrh0UmQhPwjkVVWfDV6Xo0kR7eXgZdgaWqcPqCLeW30S2kINMH1w+Uu9jzGXokDl+ieqA/TA+y48Uo=
X-Received: by 2002:a05:6870:d08:b0:288:61c6:8df7 with SMTP id
 586e51a60fabf-2886de50cfemr346648fac.21.1728595903741; Thu, 10 Oct 2024
 14:31:43 -0700 (PDT)
MIME-Version: 1.0
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-2-ayan.kumar.halder@amd.com> <CACHz=Zh402HGV-=5Lbm5auZS0qX6KXH7ZPHvT3WUZ=EjJ4JE2A@mail.gmail.com>
 <829c8ae2-dbe7-4ae7-9f4d-1ab996e27df0@amd.com>
In-Reply-To: <829c8ae2-dbe7-4ae7-9f4d-1ab996e27df0@amd.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 10 Oct 2024 22:31:32 +0100
Message-ID: <CACHz=ZhGsFKkDSZuSa2VSEOR64twERxq0e-UL9mw3OXa97BVgg@mail.gmail.com>
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
To: Ayan Kumar Halder <ayankuma@amd.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, 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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 10, 2024 at 6:29=E2=80=AFPM Ayan Kumar Halder <ayankuma@amd.com=
> wrote:
>
> Hi Frediano,
>
> Appreciate your feedback.
>
> On 10/10/2024 15:43, Frediano Ziglio wrote:
> > On Thu, Oct 10, 2024 at 3:05=E2=80=AFPM Ayan Kumar Halder
> > <ayan.kumar.halder@amd.com> wrote:
> >> If the BSS section is empty, then the function can just return.
> >>
> >> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> >> ---
> >> Changes from :-
> >>
> >> v1..v2 - New patch introduced in v3.
> >>
> >>   xen/arch/arm/arm64/head.S | 2 ++
> >>   1 file changed, 2 insertions(+)
> >>
> >> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> >> index 14c3720d80..72c7b24498 100644
> >> --- a/xen/arch/arm/arm64/head.S
> >> +++ b/xen/arch/arm/arm64/head.S
> >> @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
> >>           PRINT("- Zero BSS -\r\n")
> >>           ldr   x0, =3D__bss_start       /* x0 :=3D vaddr(__bss_start)=
 */
> >>           ldr   x1, =3D__bss_end         /* x1 :=3D vaddr(__bss_end)  =
 */
> >> +        cmp   x1, x0
> >> +        beq   skip_bss
> >>
> >>   1:      str   xzr, [x0], #8
> >>           cmp   x0, x1
> > Why not just transforming the "do while" loop into a "while" one and
> > just jump to cmp?
> >
> > Something like (not tested)
> >
> > diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> > index 14c3720d80..987f243578 100644
> > --- a/xen/arch/arm/arm64/head.S
> > +++ b/xen/arch/arm/arm64/head.S
> > @@ -346,9 +346,10 @@ FUNC_LOCAL(zero_bss)
> >          PRINT("- Zero BSS -\r\n")
> >          ldr   x0, =3D__bss_start       /* x0 :=3D vaddr(__bss_start) *=
/
> >          ldr   x1, =3D__bss_end         /* x1 :=3D vaddr(__bss_end)   *=
/
> > +        b     2f
> >
> > 1:      str   xzr, [x0], #8
> > -        cmp   x0, x1
> > +2:      cmp   x0, x1
> >          b.lo  1b
>
> I am not really sure if this implementation is better than the previous
> one. The drawback of my implementation is that we have an extra 'cmp'
> instruction. The drawback of this implementation is that we need an
> extra label and there is an un-conditional branch after ldr (readability
> is difficult). May be I am biased. :)
>
> How does this look ?
>
> FUNC_LOCAL(zero_bss)
>          /* Zero BSS only when requested */
>          cbnz  x26, skip_bss
>
>          PRINT("- Zero BSS -\r\n")
>          ldr   x0, =3D__bss_start       /* x0 :=3D vaddr(__bss_start) */
>          ldr   x1, =3D__bss_end         /* x1 :=3D vaddr(__bss_end) */
> 1:     cmp   x1, x0
>          beq   skip_bss
>
>          str   xzr, [x0], #8
>          b     1b
>
> skip_bss:
>          ret
> END(zero_bss)
>
> - Ayan
>

Not strong about. Your first version was fine too. I suppose just
personal preferences, being not a hard path if you think first version
was more readable fine with it. Between your 2 versions, I prefer the
first. It has fewer instructions in the loop. Probably I've seen too
much compiler generated code (jumping to the condition at the end is
common there) that for me, it got more readable.

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 21:32:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 21:32:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816487.1230691 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz0lv-00062D-4l; Thu, 10 Oct 2024 21:32:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816487.1230691; Thu, 10 Oct 2024 21:32: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 1sz0lv-000626-27; Thu, 10 Oct 2024 21:32:35 +0000
Received: by outflank-mailman (input) for mailman id 816487;
 Thu, 10 Oct 2024 21:32: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=5QbA=RG=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1sz0lt-0005YS-LG
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 21:32:33 +0000
Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com
 [2607:f8b0:4864:20::22b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 27986c9b-874f-11ef-99a2-01e77a169b0f;
 Thu, 10 Oct 2024 23:32:32 +0200 (CEST)
Received: by mail-oi1-x22b.google.com with SMTP id
 5614622812f47-3e3dfc24a80so911695b6e.2
 for <xen-devel@lists.xenproject.org>; Thu, 10 Oct 2024 14:32:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 27986c9b-874f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728595950; x=1729200750; 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=I6Eo4aTvu7l32z4QqJt51KfMawdqxbFISshn7oTVWQY=;
        b=McD1ehNKGtwaDYqEtvrZfqToey9DKhk7b1PqVbPBRAahbE71b0AWB4BSW+CNwySaPT
         dyBQSGQDzUgp+s5rZhi31VgClvXpNyHBVWhKgYi21a3hBXffPTVfAQbxvOH/I73wFpCU
         P+G7PYN9AITUG8J7iA6c6BTUGSpCMqSA1lmBU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728595950; x=1729200750;
        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=I6Eo4aTvu7l32z4QqJt51KfMawdqxbFISshn7oTVWQY=;
        b=mY7bs7JCBGEuEEbKOfkVwnXx0eeVHD5Gd1YEIyzUbSkV+Q5njdEDxci2v0/IpaUL5W
         bgWgWZb5cF4+NlTWBa39X1vME23T2LQnXCjioP7J32Pqw5HlXzu5X8TI82XdB4xVjYXw
         7hjJPT9vCiAfjal8ehPtgKslx+8OGC7Cx1EossZy1Di0RZUToddPQnNUm0vwcTrZsxLl
         t/ckervjpjRThcRFFWeiYBthaEySPbgLdjbXjHtV2s21xdXM4mSjUKD+YT00HFU8Kov9
         01phAIrRpzi6PkYGqdZAwk4yJBooy1QhBERPR8eQ5ervhyD4J1I6jdRK5bvKOo23M3ZB
         PCzQ==
X-Gm-Message-State: AOJu0YwnfQCq1fsqn81P91IbOrPwqnyzNMPsagOm5Mw12E3DvY3vzqR3
	vvMQh4apcKL5uCygmndLDkpoT7a9OFmDS7jBedZjegrqNoWeiPLwLDAlzY3yI4g4+8cBer/PuaJ
	wNHw9702D/Hl2OkoiPR51+umAiCO0iAal4FYcRg==
X-Google-Smtp-Source: AGHT+IHM9CkrJp7tjJwN7tBFyH0hAPxSigBqWLEeFdkN9oNKZQ1F9O+zwbs6wS9Fi0wARTuMeArkBcEBbTtEBoW3v4Y=
X-Received: by 2002:a05:6871:729a:b0:287:b9:349 with SMTP id
 586e51a60fabf-2886df888ebmr542749fac.36.1728595950233; Thu, 10 Oct 2024
 14:32:30 -0700 (PDT)
MIME-Version: 1.0
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com> <20241010140351.309922-2-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-2-ayan.kumar.halder@amd.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 10 Oct 2024 22:32:19 +0100
Message-ID: <CACHz=ZjbEPYkWegdxieCS9NGvVacN=3aHj75_X=tUj2oGzHFrQ@mail.gmail.com>
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 10, 2024 at 3:05=E2=80=AFPM Ayan Kumar Halder
<ayan.kumar.halder@amd.com> wrote:
>
> If the BSS section is empty, then the function can just return.
>
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from :-
>
> v1..v2 - New patch introduced in v3.
>
>  xen/arch/arm/arm64/head.S | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index 14c3720d80..72c7b24498 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
>          PRINT("- Zero BSS -\r\n")
>          ldr   x0, =3D__bss_start       /* x0 :=3D vaddr(__bss_start) */
>          ldr   x1, =3D__bss_end         /* x1 :=3D vaddr(__bss_end)   */
> +        cmp   x1, x0
> +        beq   skip_bss
>
>  1:      str   xzr, [x0], #8
>          cmp   x0, x1

Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 22:53:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 22:53:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816556.1230702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz21X-0003A7-PG; Thu, 10 Oct 2024 22:52:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816556.1230702; Thu, 10 Oct 2024 22: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 1sz21X-0003A0-MC; Thu, 10 Oct 2024 22:52:47 +0000
Received: by outflank-mailman (input) for mailman id 816556;
 Thu, 10 Oct 2024 22:52: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 1sz21W-00039q-TB; Thu, 10 Oct 2024 22:52: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 1sz21W-0006YU-Qc; Thu, 10 Oct 2024 22:52: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 1sz21W-0001gM-7D; Thu, 10 Oct 2024 22:52:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sz21W-0002IF-6j; Thu, 10 Oct 2024 22:52: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=vH1J5ZgbqxQQJPzEkmFPxgoBkDc70c6JUglzL28RjRI=; b=w17+BpCaHKHHrzDCkm7VgGSVhy
	YhwLzpx8l0jvFb5DWr6ROfXxdjRSPEw+rc343E1qpzm1RGBxxBxM8sisG7ZlOSWb+csedSwyXqBdk
	6emTJzceJFkiogqo2kgpRNhjEcnC/IIQdbC0+n39atJEpSz6BmkdREsF1Fh4ARSg5h80=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188046-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188046: 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=b2c7d7070dd0b311b64598411f52cdfa2a882ea2
X-Osstest-Versions-That:
    xen=a592c98f94a1a58838acd3f4cc8b55132b1061c0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 22:52:46 +0000

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

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                  b2c7d7070dd0b311b64598411f52cdfa2a882ea2
baseline version:
 xen                  a592c98f94a1a58838acd3f4cc8b55132b1061c0

Last test of basis   188044  2024-10-10 13:02:12 Z    0 days
Testing same since   188046  2024-10-10 18:00:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Juergen Gross <jgross@suse.com>
  Julien Grall <jgrall@amazon.com>
  Michal Orzel <michal.orzel@amd.com>
  Stefano Stabellini <sstabellini@kernel.org>

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
   a592c98f94..b2c7d7070d  b2c7d7070dd0b311b64598411f52cdfa2a882ea2 -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 22:55:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 22:55:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816567.1230712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz23h-0003kr-8F; Thu, 10 Oct 2024 22:55:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816567.1230712; Thu, 10 Oct 2024 22:55: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 1sz23h-0003kk-5X; Thu, 10 Oct 2024 22:55:01 +0000
Received: by outflank-mailman (input) for mailman id 816567;
 Thu, 10 Oct 2024 22:54: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=TKkP=RG=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1sz23f-0003ke-Mf
 for xen-devel@lists.xenproject.org; Thu, 10 Oct 2024 22:54:59 +0000
Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ababa910-875a-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 00:54:57 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id AEEFBA04C6;
 Fri, 11 Oct 2024 00:54:56 +0200 (CEST)
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 CMEPgG12ZKuc; Fri, 11 Oct 2024 00:54:56 +0200 (CEST)
Received: from begin.home (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (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 4B5CAA04BB;
 Fri, 11 Oct 2024 00:54:56 +0200 (CEST)
Received: from samy by begin.home with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1sz23b-0000000Ft2s-3faP; Fri, 11 Oct 2024 00:54:55 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ababa910-875a-11ef-99a2-01e77a169b0f
Date: Fri, 11 Oct 2024 00:54:55 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: Re: [PATCH 3/3] stubdom: use real lib dependencies for xenstore
 stubdoms
Message-ID: <ZwhbPyXIiAOm4rVY@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org,
	Anthony PERARD <anthony.perard@vates.tech>
References: <20241010155459.22389-1-jgross@suse.com>
 <20241010155459.22389-4-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241010155459.22389-4-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le jeu. 10 oct. 2024 17:54:59 +0200, a ecrit:
> Today the build of Xenstore stubdoms depend on libxenguest just because
> libxenguest depends on all needed libraries. In reality there is no
> dependency on libxenguest for Xenstore stubdoms.
> 
> Use the actual dependencies instead.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  stubdom/Makefile | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/stubdom/Makefile b/stubdom/Makefile
> index 6ed4253b25..2a81af28a1 100644
> --- a/stubdom/Makefile
> +++ b/stubdom/Makefile
> @@ -523,12 +523,14 @@ else
>  pv-grub-if-enabled:
>  endif
>  
> +XENSTORE_DEPS := libxenevtchn libxengnttab libxenctrl
> +
>  .PHONY: xenstore-stubdom
> -xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxenguest xenstore
> +xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore $(XENSTORE_DEPS) xenstore
>  	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a
>  
>  .PHONY: xenstorepvh-stubdom
> -xenstorepvh-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstorepvh libxenguest xenstorepvh
> +xenstorepvh-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstorepvh $(XENSTORE_DEPS) xenstorepvh
>  	DEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstorepvh-minios.gen.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstorepvh/xenstored.a
>  
>  #########
> -- 
> 2.43.0


From xen-devel-bounces@lists.xenproject.org Thu Oct 10 23:55:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 10 Oct 2024 23:55:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816578.1230722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz30D-00039m-FR; Thu, 10 Oct 2024 23:55:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816578.1230722; Thu, 10 Oct 2024 23:55: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 1sz30D-00039f-BS; Thu, 10 Oct 2024 23:55:29 +0000
Received: by outflank-mailman (input) for mailman id 816578;
 Thu, 10 Oct 2024 23:55: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 1sz30C-00039V-5b; Thu, 10 Oct 2024 23:55: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 1sz30C-0007t5-22; Thu, 10 Oct 2024 23:55: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 1sz30B-00039W-H7; Thu, 10 Oct 2024 23:55:27 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sz30B-0006tE-Gb; Thu, 10 Oct 2024 23:55: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=EFW/cuC3weTNRtn9TteeQopktaKv9zS/BvcxWLDvp4A=; b=okJFr6B8bERNBZ0bW18ppzpsDB
	wXLts/RMWSYA+nW7R+1FPCitzhe0J3LOQSxKZ+fEkwYx1v+4NKcBnWyYIEoVZlqYgJogGdPEpXJdm
	QSWB97vrz8jorZiM1gND5vdBZzy8PtzsIZ95J2ird2F5LxHx9XQR0yzBHl0nxFY0Fyxg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188036-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188036: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=838fc0a8769d7cc6edfe50451ba4e3368395f5c1
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 10 Oct 2024 23:55:27 +0000

flight 188036 qemu-mainline real [real]
flight 188047 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188036/
http://logs.test-lab.xenproject.org/osstest/logs/188047/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                838fc0a8769d7cc6edfe50451ba4e3368395f5c1
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   24 days
Failing since        187731  2024-09-17 13:11:20 Z   23 days   39 attempts
Testing same since   188036  2024-10-09 19:41:16 Z    1 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 8653 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 03:12:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 03:12:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816597.1230731 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz64n-0007aS-V8; Fri, 11 Oct 2024 03:12:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816597.1230731; Fri, 11 Oct 2024 03: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 1sz64n-0007aL-SZ; Fri, 11 Oct 2024 03:12:25 +0000
Received: by outflank-mailman (input) for mailman id 816597;
 Fri, 11 Oct 2024 03:12: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 1sz64m-0007aB-B4; Fri, 11 Oct 2024 03:12: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 1sz64m-0002oI-90; Fri, 11 Oct 2024 03:12: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 1sz64l-0002m2-Tw; Fri, 11 Oct 2024 03:12:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sz64l-0001dP-Ra; Fri, 11 Oct 2024 03: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=XoLdPZd6f7PnYQ0IKB9ek40P+kmB4THtRi2hUCHJ6ew=; b=yLAWOWvdTcOkn0kyT4lv7CLm3e
	nYYvEhfbRRDX0YIeabrsEmdDiz5zSQsOmnDpajgIk6sYXxH+EgsAG09pJgPse9l+Rcm2mZNoJHwjC
	uL9SJuVT2qUbl/WDqAvTO2fdqoYWwSEbY+KdnfKCCJ3grNSLrLRmKH0S668rmnTjnbW0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188049-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188049: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=d2a41d1a7a555e54336e03731c801eb93fba801d
X-Osstest-Versions-That:
    ovmf=0bae161fed39d8996693e586b77f31094b61b9d7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 03:12:23 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 d2a41d1a7a555e54336e03731c801eb93fba801d
baseline version:
 ovmf                 0bae161fed39d8996693e586b77f31094b61b9d7

Last test of basis   188039  2024-10-10 06:13:22 Z    0 days
Testing same since   188049  2024-10-11 01:41:45 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Rebecca Cran <rebecca@bsdio.com>
  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    


------------------------------------------------------------
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
   0bae161fed..d2a41d1a7a  d2a41d1a7a555e54336e03731c801eb93fba801d -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 03:43:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 03:43:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816609.1230741 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz6Yr-00061X-EY; Fri, 11 Oct 2024 03:43:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816609.1230741; Fri, 11 Oct 2024 03: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 1sz6Yr-00061Q-BP; Fri, 11 Oct 2024 03:43:29 +0000
Received: by outflank-mailman (input) for mailman id 816609;
 Fri, 11 Oct 2024 03: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=UIMz=RH=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1sz6Yq-00061K-3W
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 03:43:28 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on20622.outbound.protection.outlook.com
 [2a01:111:f400:7ea9::622])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f7aa5132-8782-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 05:43:25 +0200 (CEST)
Received: from CH0PR03CA0443.namprd03.prod.outlook.com (2603:10b6:610:10e::7)
 by IA1PR12MB7758.namprd12.prod.outlook.com (2603:10b6:208:421::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Fri, 11 Oct
 2024 03:43:18 +0000
Received: from DS2PEPF00003442.namprd04.prod.outlook.com
 (2603:10b6:610:10e:cafe::21) by CH0PR03CA0443.outlook.office365.com
 (2603:10b6:610:10e::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.19 via Frontend
 Transport; Fri, 11 Oct 2024 03:43:18 +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.8048.13 via Frontend Transport; Fri, 11 Oct 2024 03:43:18 +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.39; Thu, 10 Oct
 2024 22:43:04 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f7aa5132-8782-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hSe+T7++mE4K20kGV7/PirfusTiyt1t0dq/MTVkjf42zH640DRbLAEvtlLgxl54p7Rzmm6ufDamXOtb/dQHuRPf1xQhUaIITlBcRKK/HU0qLOG4/WphvkQX1SGALFqa8QYJXvlOHGusHRoO77w5pkfctjBytbYUw79uJN2/OHQXNFFkoyYuDigUTAD5NORtWkiUhP5mtikua6cGwoLVkBt2Z621DwUqmG3wSPYDblPrVtxQXCyd6njtmSGKqL4ssxcn0Td5GabkmlFEmFZ0qvHt+jYyLb+WsVX2CHnszRGA9OvX4C+msd8AM4YgsXo3X42KbBssG8y8n04MkLFDlTQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=gbssvUUNfLLC/N8Xv5TE+/4RqyMpP1CBaOeHLooKg4Y=;
 b=q+GG9aRPtZGrRA9ZJyXlgYP1Gm0TGKzQOSnrjjceNECB8TkxCUOrvItEixZ76/0obg6dWsiIg2JCxND06rV4hnGOUEqy+KsKfj+SU4XV13RI0xe1Ll6yckxydRI0ycCtYz34naZ9CeqboWtzzFjZtnNuxjqVwfKAUedU8tVJbatnrPrXYzaFbUPjlj2q0bHjGN884eIsIk0TChMrC1YvGcbQ5Xc98/B0dcc2iyXf/GqgyxfZVMkYyJV1l173Q3fmYTwMIFY2OQIiJ6JlmzauDA3i3AzXYJw0TIYKxXYt3GQIGxzcUZtGV+6iCRGRzUfCAOU+28AZflKT4C4rVmARRQ==
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=gbssvUUNfLLC/N8Xv5TE+/4RqyMpP1CBaOeHLooKg4Y=;
 b=S1MYGpsKb/bJO3nPvEjhcyeLziARDffRCOJ4C+9n3DBfJB/aqqBbvFLyLp/3LV9m9OD5/zRGH364h+HMhrkyl44YmXLjmIV4QCcgh7ImRLst1ZOcNDFWpGQmBXvktFJBiG66ZFrNqj95a6EZOnIUOzAE46zAJiRyHx67L9pfJZc=
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>
CC: <xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Jiqian Chen <Jiqian.Chen@amd.com>
Subject: [PATCH v3] xen: Remove dependency between pciback and privcmd
Date: Fri, 11 Oct 2024 11:42:27 +0800
Message-ID: <20241011034227.1278144-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: DS2PEPF00003442:EE_|IA1PR12MB7758:EE_
X-MS-Office365-Filtering-Correlation-Id: 644d0b3d-81bf-4d68-c85f-08dce9a6d872
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?WWpTT0J4VFJPSlF4Q01GcUZwU1UwZzZueFN0ekgxenJYeStkdE1EZEZrNkE2?=
 =?utf-8?B?OFZkT1FGZ3JKZjMvWWNiZWoxQWdhY2NOSlR6RUt4ZUtOQTNieG5pdCtNR0pt?=
 =?utf-8?B?YmlEajc3bGlWYllnc1htaDNYR3FUaVVWUGx6Wm82S1hqQzBoVUR1Z2MxS0o2?=
 =?utf-8?B?ellKV0pMV1hqcmR0S0xweFN1Z244NHpoa1k0ZVlQaTdpZHJ6RjlVaDcvYVBq?=
 =?utf-8?B?NmFTQTk2akUxdzZSZnZxRzJmdnhUWHBWTlptbm1aaXE0aXZKbnVNdlQzcE5o?=
 =?utf-8?B?eXdnN0daSDNla0lHRkI5SGpnQy80eVEvNW1yODhuQjRMVXoyYUpmMlJXbDZn?=
 =?utf-8?B?ZEMzZEVrTjdveGR4Rk84K2ZJcDljTXVtVXhod09vM2Jld2ZQSFdsWGFxOUlj?=
 =?utf-8?B?SnZwV1lBR1lmcFRROWw4VVJ6UUtMaVRyZmJzQnBjNFdsT3ZienVXTjgxVEx2?=
 =?utf-8?B?WTdMZVhCZ0lLSE5UZnJEbW5ITVkvbUtlYTJsNzFhWDJIOUpHWHNDKzlML05Z?=
 =?utf-8?B?R3ZscWpWZjd4aDdzQVZpSU8xYWprMUt0Qk1qYkNKQXRPL0FGU0dvYzNQcmw0?=
 =?utf-8?B?RHd4YlJsV0N2T3pnN0d2YWQvV1hnMTFJREZWWTcydTh2UlRtUkZVVGN2Wjlv?=
 =?utf-8?B?eXdUS09FNjg4WVpEM2NhTGZHNTNlNXhabWxPYktMTS90N1pIbDVaVFJCcUVw?=
 =?utf-8?B?bE1QNWFNQnNBMVA3WG82VmRWNXhQaEdqSHJuL2JyRGU0eWJOWThQdTJZaEVO?=
 =?utf-8?B?ZnFpWXRhUUd2alNWM0NDU0JSZkpCTU9LdVVPZWorb3RDUHN5bDVab3VsVEc4?=
 =?utf-8?B?TXBRdjBObDJDNEZSTWdxdVY0djJISEZDdFoveERhQnBMVmFZMmFXVnRLUlk5?=
 =?utf-8?B?Um1wQkhaSmJHUXFrZXJEWE5Bb094SjdRMFZaWkpTV3lVeS9IMDRNcmN6Wlk4?=
 =?utf-8?B?d2t5TFpXVGtocDRZN3dIeE9Qa0ViTVpQcmNTN1gzOFNuWExpMDlmbFJML2ZF?=
 =?utf-8?B?OFVwVG5OcVJiM1pxd2d3bHhJTmVDelBNK1F5Z1NSblp3VDZ2azc0SjY1MXdS?=
 =?utf-8?B?VG5mOFlaZExPaFZsalhPUVRnelJDcytSVFZZVnkxZ3lHUjcybXFOWSs5SHJN?=
 =?utf-8?B?THJRejZXcWF3ZFdpK3VRUlJMazdyVlBGUEVwME5QbmtOblVPS0FjczZMODU4?=
 =?utf-8?B?b0RKejVFeUdNeEhiUXZ2czRZUUZjajNhUEt1MWZIa3duU2tncWxaNU1BSHUz?=
 =?utf-8?B?eXJBQlZXVWs1NC85NkJDZUdXcjZZazRKcUdqZ3VXVXVva3pjU3ZJMUs3T0lE?=
 =?utf-8?B?NmVnUlBVWTlDM3lpTmNIS0M0SG9wQzEyK0grazdBdGZZQTgydklERDNST01y?=
 =?utf-8?B?NW9OV2MwN2RZbGhHNGdJVmptNFJmZjRyUGhucWd1b0VTV1VxWFF2bXp2RGxx?=
 =?utf-8?B?RkVNN2NDQVAzV3I5SnJYM29lQnArNXM5VkFhWUljZk1RcTBKKzZvZjNCM2Qy?=
 =?utf-8?B?cUgwY1Y0SjVJbVVMbEdIbDNPbFlrdkdaQ0lCeDQ1YXd0THBDUXNDbTM3YTdx?=
 =?utf-8?B?OWJZYnhtN3JxcmZpMDNIbVVzTC9FdmR2dk05VXZBNkhmYjZZSjRiblYvdUhk?=
 =?utf-8?B?UGNJaVVJVC9sdkJMSU8ydjJ4MFhYVE9GVHcrOUcvRUlTTzlUdnVLcnVzZDJ2?=
 =?utf-8?B?VVZPRzU5enFYbkRjazlLa0xQOGZVdm4zcERld0IxMGpLNjFHZHR4bnRNSWpv?=
 =?utf-8?B?Wk5lTXBrMmNrQlV6VzJDeGl4ZUlXYWRNWTg1elR6dGtRYnVoL3UxOVFIbTd6?=
 =?utf-8?B?a2poNjNXaXlMelpTN3F1UVlsSS9TRWYremwyUGJRZUFKU3RoL2lpVDF2U3pV?=
 =?utf-8?Q?U4s1cc1Nibmlg?=
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:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2024 03:43:18.3293
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 644d0b3d-81bf-4d68-c85f-08dce9a6d872
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: IA1PR12MB7758

Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
adds a weak reverse dependency to the config XEN_PRIVCMD definition, that
dependency causes xen-privcmd can't be loaded on domU, because dependent
xen-pciback isn't always be loaded successfully on domU.

To solve above problem, remove that dependency, and do not call
pcistub_get_gsi_from_sbdf() directly, instead add a hook in
drivers/xen/apci.c, xen-pciback register the real call function, then in
privcmd_ioctl_pcidev_get_gsi call that hook.

Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
v2->v3 changes:
Added rwlock get_gsi_from_sbdf_lock to avoid races.
Called xen_acpi_register_get_gsi_func to register function in xen_pcibk_init and set NULL to hook in xen_pcibk_cleanup when unloading.

v1->v2 changes:
Added hook xen_acpi_get_gsi_from_sbdf.
Changed pcistub_get_gsi_from_sbdf to static and pciback register it as the real hook function.
---
 drivers/xen/Kconfig                |  1 -
 drivers/xen/acpi.c                 | 24 ++++++++++++++++++++++++
 drivers/xen/privcmd.c              |  6 ++----
 drivers/xen/xen-pciback/pci_stub.c | 11 +++++++++--
 include/xen/acpi.h                 | 12 ++++--------
 5 files changed, 39 insertions(+), 15 deletions(-)

diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
index 72ddee4c1544..f7d6f47971fd 100644
--- a/drivers/xen/Kconfig
+++ b/drivers/xen/Kconfig
@@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
 config XEN_PRIVCMD
 	tristate "Xen hypercall passthrough driver"
 	depends on XEN
-	imply XEN_PCIDEV_BACKEND
 	default m
 	help
 	  The hypercall passthrough driver allows privileged user programs to
diff --git a/drivers/xen/acpi.c b/drivers/xen/acpi.c
index 9e2096524fbc..d2ee605c5ca1 100644
--- a/drivers/xen/acpi.c
+++ b/drivers/xen/acpi.c
@@ -125,3 +125,27 @@ int xen_acpi_get_gsi_info(struct pci_dev *dev,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_info);
+
+static get_gsi_from_sbdf_t get_gsi_from_sbdf;
+static DEFINE_RWLOCK(get_gsi_from_sbdf_lock);
+
+void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func)
+{
+	write_lock(&get_gsi_from_sbdf_lock);
+	get_gsi_from_sbdf = func;
+	write_unlock(&get_gsi_from_sbdf_lock);
+}
+EXPORT_SYMBOL_GPL(xen_acpi_register_get_gsi_func);
+
+int xen_acpi_get_gsi_from_sbdf(u32 sbdf)
+{
+	int ret = -EOPNOTSUPP;
+
+	read_lock(&get_gsi_from_sbdf_lock);
+	if (get_gsi_from_sbdf)
+		ret = get_gsi_from_sbdf(sbdf);
+	read_unlock(&get_gsi_from_sbdf_lock);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_from_sbdf);
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 3273cb8c2a66..4f75bc876454 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -850,15 +850,13 @@ static long privcmd_ioctl_mmap_resource(struct file *file,
 static long privcmd_ioctl_pcidev_get_gsi(struct file *file, void __user *udata)
 {
 #if defined(CONFIG_XEN_ACPI)
-	int rc = -EINVAL;
+	int rc;
 	struct privcmd_pcidev_get_gsi kdata;
 
 	if (copy_from_user(&kdata, udata, sizeof(kdata)))
 		return -EFAULT;
 
-	if (IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND))
-		rc = pcistub_get_gsi_from_sbdf(kdata.sbdf);
-
+	rc = xen_acpi_get_gsi_from_sbdf(kdata.sbdf);
 	if (rc < 0)
 		return rc;
 
diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
index 2f3da5ac62cd..b616b7768c3b 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -227,7 +227,7 @@ static struct pci_dev *pcistub_device_get_pci_dev(struct xen_pcibk_device *pdev,
 }
 
 #ifdef CONFIG_XEN_ACPI
-int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
+static int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
 {
 	struct pcistub_device *psdev;
 	int domain = (sbdf >> 16) & 0xffff;
@@ -242,7 +242,6 @@ int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
 
 	return psdev->gsi;
 }
-EXPORT_SYMBOL_GPL(pcistub_get_gsi_from_sbdf);
 #endif
 
 struct pci_dev *pcistub_get_pci_dev_by_slot(struct xen_pcibk_device *pdev,
@@ -1757,11 +1756,19 @@ static int __init xen_pcibk_init(void)
 		bus_register_notifier(&pci_bus_type, &pci_stub_nb);
 #endif
 
+#ifdef CONFIG_XEN_ACPI
+	xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
+#endif
+
 	return err;
 }
 
 static void __exit xen_pcibk_cleanup(void)
 {
+#ifdef CONFIG_XEN_ACPI
+	xen_acpi_register_get_gsi_func(NULL);
+#endif
+
 #ifdef CONFIG_PCI_IOV
 	bus_unregister_notifier(&pci_bus_type, &pci_stub_nb);
 #endif
diff --git a/include/xen/acpi.h b/include/xen/acpi.h
index daa96a22d257..8cb081c633cc 100644
--- a/include/xen/acpi.h
+++ b/include/xen/acpi.h
@@ -91,13 +91,9 @@ static inline int xen_acpi_get_gsi_info(struct pci_dev *dev,
 }
 #endif
 
-#ifdef CONFIG_XEN_PCI_STUB
-int pcistub_get_gsi_from_sbdf(unsigned int sbdf);
-#else
-static inline int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
-{
-	return -1;
-}
-#endif
+typedef int (*get_gsi_from_sbdf_t)(u32 sbdf);
+
+void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func);
+int xen_acpi_get_gsi_from_sbdf(u32 sbdf);
 
 #endif	/* _XEN_ACPI_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 04:44:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 04:44:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816622.1230752 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz7V9-0002xf-V4; Fri, 11 Oct 2024 04:43:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816622.1230752; Fri, 11 Oct 2024 04: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 1sz7V9-0002xY-Qs; Fri, 11 Oct 2024 04:43:43 +0000
Received: by outflank-mailman (input) for mailman id 816622;
 Fri, 11 Oct 2024 04:43: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 1sz7V9-0002xO-D5; Fri, 11 Oct 2024 04:43: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 1sz7V9-00050m-B1; Fri, 11 Oct 2024 04:43: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 1sz7V8-0005Ag-VX; Fri, 11 Oct 2024 04:43:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sz7V8-0001XO-Ux; Fri, 11 Oct 2024 04:43: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=lDNq49xhGk3bHUac0OCdEAM5ttsTfZkbdetg1TjOAg8=; b=cNu7IgCvjCOXLMd+JJhH0NiYHT
	Nm+bdN71WARGSv3kWSmE53F384bjA1qMJfUBCADhL5gVe9M6Z3gtruWDIY+nHMPzb6nBPrCxtzXOr
	60H8zxiRXs9oMuvEw7VXDmhxT312x9k0hb93CNicp7RS0Z4Nfx9XnxvuD+pPsaMR86pg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188038-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188038: regressions - FAIL
X-Osstest-Failures:
    libvirt:test-arm64-arm64-libvirt-qcow2:leak-check/check:fail:regression
    libvirt:test-armhf-armhf-libvirt: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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=c0ba3ed69d14a4b9a03475d1ba1d734b27a141f8
X-Osstest-Versions-That:
    libvirt=215cada34395b6b2caad507393e043594d6c86fc
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 04:43:42 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-libvirt-qcow2 20 leak-check/check       fail REGR. vs. 187961

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187961
 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-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-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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              c0ba3ed69d14a4b9a03475d1ba1d734b27a141f8
baseline version:
 libvirt              215cada34395b6b2caad507393e043594d6c86fc

Last test of basis   187961  2024-10-04 04:22:33 Z    7 days
Failing since        188008  2024-10-08 04:20:35 Z    3 days    3 attempts
Testing same since   188038  2024-10-10 04:22:15 Z    1 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Göran Uddeborg <goeran@uddeborg.se>
  Jim Fehlig <jfehlig@suse.com>
  Jiri Denemark <jdenemar@redhat.com>
  Laine Stump
  Laine Stump <laine@redhat.com>
  Nikolai Barybin <nikolai.barybin@virtuozzo.com>
  Nikolai Barybin via Devel <devel@lists.libvirt.org>
  Peter Krempa <pkrempa@redhat.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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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


Not pushing.

(No revision log; it would be 541 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 06:34:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 06:34:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816642.1230782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz9Dk-0001ms-N3; Fri, 11 Oct 2024 06:33:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816642.1230782; Fri, 11 Oct 2024 06:33: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 1sz9Dk-0001mj-JB; Fri, 11 Oct 2024 06:33:52 +0000
Received: by outflank-mailman (input) for mailman id 816642;
 Fri, 11 Oct 2024 06:33: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 1sz9Dj-0001mR-Ai; Fri, 11 Oct 2024 06:33: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 1sz9Dj-00085e-99; Fri, 11 Oct 2024 06:33: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 1sz9Di-0007zg-Vo; Fri, 11 Oct 2024 06:33:51 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sz9Di-0006us-VN; Fri, 11 Oct 2024 06:33: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=44RB8a7WtvwJZnGRaG9xw9VW2jfj7g3WmMsjbPD+SeE=; b=y1czPqqlsrNvAANKiXYesGBGEH
	ru4ZS1BZWRkPcPwCtEvRv+tFNsQeIj+preMNWbGZ6Kbn9/kXc4orxfGAwWvhQW+ME9AFwOt50rylp
	qMByI8WkWrtmPDZvU0KEN5QO6As58dX17XzxJi2Y4hnlik2oz8gNyIMQ9RZwmv+iCNqU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188045-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188045: tolerable trouble: fail/pass/starved - 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-amd64-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-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-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-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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1: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-amd64-amd64-libvirt-qcow2: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-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd: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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:hosts-allocate:starved:nonblocking
X-Osstest-Versions-This:
    xen=2b49ef4503e2c549c166f439cf0dd331d9a8874c
X-Osstest-Versions-That:
    xen=c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 06:33:50 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188034
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188034
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188034
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188034
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188034
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188034
 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-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-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-qcow2 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-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw  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-credit2   3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-thunderx  3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-vhd       3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-credit1   3 hosts-allocate               starved  n/a
 test-arm64-arm64-libvirt-xsm  3 hosts-allocate               starved  n/a

version targeted for testing:
 xen                  2b49ef4503e2c549c166f439cf0dd331d9a8874c
baseline version:
 xen                  c95cd5f9c5a8c1c6ab1b0b366d829fa8561958fd

Last test of basis   188034  2024-10-09 14:54:43 Z    1 days
Testing same since   188045  2024-10-10 17:36:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alejandro Vallejo <alejandro.vallejo@cloud.com>
  Andrew Cooper <andrew.cooper3@citrix.com>
  Bertrand Marquis <bertrand.marquis@arm.com>
  Christopher Clark <christopher.w.clark@gmail.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Julien Grall <jgrall@amazon.com>
  Matthew Barnes <matthew.barnes@cloud.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>
  Ross Lagerwall <ross.lagerwall@citrix.com>
  Stefano Stabellini <sstabellini@kernel.org>
  Volodymyr Babchuk <volodymyr_babchuk@epam.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                                          starved 
 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                                 starved 
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      starved 
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                  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-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 starved 
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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                                 starved 
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      starved 


------------------------------------------------------------
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
   c95cd5f9c5..2b49ef4503  2b49ef4503e2c549c166f439cf0dd331d9a8874c -> master


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 06:37:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 06:37:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816660.1230832 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sz9Gq-0003sE-LK; Fri, 11 Oct 2024 06:37:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816660.1230832; Fri, 11 Oct 2024 06:37: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 1sz9Gq-0003s7-HZ; Fri, 11 Oct 2024 06:37:04 +0000
Received: by outflank-mailman (input) for mailman id 816660;
 Fri, 11 Oct 2024 06:37: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 1sz9Gp-0003rv-FV; Fri, 11 Oct 2024 06:37: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 1sz9Gp-0008AN-Dq; Fri, 11 Oct 2024 06:37: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 1sz9Go-000867-V8; Fri, 11 Oct 2024 06:37:03 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sz9Go-0002zr-UX; Fri, 11 Oct 2024 06:37: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=qUzc5z8IhtKv32Drwc5tGGHjB7HKBSX0z94Y5geoZLg=; b=Pbln0G28xz4dU8+hcnfrvkXLB0
	t/+XNlT9ICD7m3GGh1+TSf8isc5SNYmqHjpHTB572R97x6tbkign9KF4tgCiXEbWb4qhiTaPfrDiy
	q+m9T/ds/VhwpGSxLdpIYShJyAF6IWmAD58jGel7Z1f7MNs7JAKr5pNRbTHk6sTV0lY8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188043-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188043: 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: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-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-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-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-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2: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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw: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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=d3d1556696c1a993eec54ac585fe5bf677e07474
X-Osstest-Versions-That:
    linux=75b607fab38d149f232f01eae5e6392b394dd659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 06:37:02 +0000

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

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 188028
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188028
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188028
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188028
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188028
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188028
 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-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-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-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          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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                d3d1556696c1a993eec54ac585fe5bf677e07474
baseline version:
 linux                75b607fab38d149f232f01eae5e6392b394dd659

Last test of basis   188028  2024-10-09 10:12:51 Z    1 days
Testing same since   188043  2024-10-10 12:33:52 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Huang, Ying" <ying.huang@intel.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Andrew Morton <akpm@linux-foundation.org>
  David Hildenbrand <david@redhat.com>
  Dimitri Sivanich <sivanich@hpe.com>
  Donet Tom <donettom@linux.ibm.com>
  Fangrui Song <i@maskray.me>
  Frederic Weisbecker <frederic@kernel.org>
  Gabriel Krisman Bertazi <krisman@suse.de>
  Huang Ying <ying.huang@intel.com>
  JianXiong Zhao <zhaojianxiong.zjx@alibaba-inc.com>
  Kanchana P Sridhar <kanchana.p.sridhar@intel.com>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Kun(llfl) <llfl@linux.alibaba.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Michal Hocko <mhocko@suse.com>
  Nathan Chancellor <nathan@kernel.org>
  Patrick Roy <roypat@amazon.co.uk>
  syzbot+943d34fa3cf2191e3068@syzkaller.appspotmail.com
  Yosry Ahmed <yosryahmed@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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   75b607fab38d..d3d1556696c1  d3d1556696c1a993eec54ac585fe5bf677e07474 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:43:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:43:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816744.1230841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBEn-0006cq-LN; Fri, 11 Oct 2024 08:43:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816744.1230841; Fri, 11 Oct 2024 08:43: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 1szBEn-0006cj-IP; Fri, 11 Oct 2024 08:43:05 +0000
Received: by outflank-mailman (input) for mailman id 816744;
 Fri, 11 Oct 2024 08:43: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szBEm-0006cc-At
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:43:04 +0000
Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com
 [2a00:1450:4864:20::641])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d3c43fd2-87ac-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:43:03 +0200 (CEST)
Received: by mail-ej1-x641.google.com with SMTP id
 a640c23a62f3a-a9968114422so257400966b.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:43:03 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f28090sm188533866b.79.2024.10.11.01.43.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 01:43:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d3c43fd2-87ac-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728636182; x=1729240982; 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=uK7bVDwUqdSSXqCQ+8WvLCvoErNePtyK6vj0Akt+rBs=;
        b=AdV0s3dOs1VbSlWifyIH08giX11F3L4HQB0mDNn4fTReSXnrSqLQ5gR+FETXq6gCis
         ct9kWx/CGLEoRNZKEvCIBq7TQbYHrawdT39I5vkJBM1kz4iqF9lvYP3MTyd0jW30648/
         8KXVNxPWhARwr+whX+l9lfNYB9aDBhiumqkZI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636182; x=1729240982;
        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=uK7bVDwUqdSSXqCQ+8WvLCvoErNePtyK6vj0Akt+rBs=;
        b=I0JCAYS+yaDTKN0RESRZ1ztcJ7D/Eo0WStf69NWigbohYVbPXTdzL0yAIgy1cYtZjI
         MQ3QBXtv5WLcPvqPAM1KmEgJJrQ2+GiH6kRcqu7ZGUMrQHRT0bEBM8LnLHAE5GCenGlm
         rbvumvSi/TGQ4CJIBdzwaX9yXNiIxOjynJ2xnJ5KUOJp4Oy3PszLYmgXKFOmkd2fiTx0
         nzKr+QVD7I10CYHPYnRXB/cSeuzmcSG1EddKb09THsep4Tyb7tyP4GTd/dQLqIloAobs
         8WxKl3Fuc2WvG+KNmmXACNVzEJQEihajzoVV34C9anAMdZ8T3DRHULHOoPh5otHe3W+p
         61lg==
X-Forwarded-Encrypted: i=1; AJvYcCVlYZvFEc5s/VxPG1ohJ7wNV43oxeDZLBQbAU1bmteCFCiV2KIvuqGre/DTgcQynxeAvBT/tOnWhqM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxWQlGtbct/gQSV4Zhgqp0Ds1FJbxeWyDWTKDv5ZM8Dyv5fSgVM
	/D4WlWETCnyt4RiMpwZBAhh9sg2RkXVl/+gCFvShaFaLgz/yaxPXvFxwi1QN01E=
X-Google-Smtp-Source: AGHT+IH7dkama+lKckXw+dg1Oir6FRnBH3QafifhF5LDxm5/b4SYdFAh4O2xvUwc2TkYKenLbmejnQ==
X-Received: by 2002:a17:906:c14c:b0:a99:435c:89f2 with SMTP id a640c23a62f3a-a99b95f5f72mr180002966b.63.1728636182409;
        Fri, 11 Oct 2024 01:43:02 -0700 (PDT)
Message-ID: <3e6e0e97-ac19-4e27-a284-f9e39cbda5bb@citrix.com>
Date: Fri, 11 Oct 2024 09:43:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/3] stubdom: reduce xenstore library dependencies
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
References: <20241010155459.22389-1-jgross@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241010155459.22389-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10/10/2024 4:54 pm, Juergen Gross wrote:
> Instead of letting the xenstore stubdoms depend on libxenguest and
> with that on basically all Xen libraries, only let it depend on the
> actually used libraries.
>
> This is in preparation of removing the libxenctrl dependency from
> Xenstore and with that the capability to use xenstore-stubdom on
> multiple hypervisor versions.
>
> Juergen Gross (3):
>   config: update Mini-OS commit
>   tools/xenstored: remove unneeded libxenguest reference
>   stubdom: use real lib dependencies for xenstore stubdoms
>
>  Config.mk                       | 2 +-
>  stubdom/Makefile                | 6 ++++--
>  tools/xenstored/Makefile.common | 1 -
>  3 files changed, 5 insertions(+), 4 deletions(-)
>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:43:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:43:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816746.1230851 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBEy-0006tI-TL; Fri, 11 Oct 2024 08:43:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816746.1230851; Fri, 11 Oct 2024 08: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 1szBEy-0006tB-Qg; Fri, 11 Oct 2024 08:43:16 +0000
Received: by outflank-mailman (input) for mailman id 816746;
 Fri, 11 Oct 2024 08:43: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=DtJ7=RH=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1szBEy-0006cc-16
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:43:16 +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 db4201da-87ac-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:43:15 +0200 (CEST)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2fad6de2590so26461841fa.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:43:15 -0700 (PDT)
Received: from localhost ([213.195.123.53]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc5easm191098466b.170.2024.10.11.01.43.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:43:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db4201da-87ac-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728636195; x=1729240995; 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=v88G0uVy/4aSqLpyNiUVUQo6s+Ndk4/lA//x8fZgSdc=;
        b=iGdjvDdLvhmp1cUI8RQPI39++yH3xpUeEJIKQQhQtIFZpzrf54t9AdsxXjae+NhZ4e
         0BG4PwZt7bBX/yIQbtxSHItdH6EAuVCbd9XpH0UF4wOWdIe96zXv1WfXpbDrW153CEhe
         rOtWxSn2Sua0FAK/x5A/Snup8kOSjolrR89JU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636195; x=1729240995;
        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=v88G0uVy/4aSqLpyNiUVUQo6s+Ndk4/lA//x8fZgSdc=;
        b=g/Q/fbt+Ck3pDXgJxaWi3CxpN/FsCmHit5XZ699iksBmFBNx6Tj0JlKIM6QTXVo/E4
         9FzsKyvFGHEX0aMx3eRAaSR55MfVW9oi7IbamvUA+8vArZigTw1PiCyEC+t4qJ8A2Kk8
         K2sQOWmNzc0mToyyBXd8NJPffBsu9MBLnXww7v+orltWSR0iPiyjfBqfsGpdfItQ/SoI
         8yJ1SoA2PllsZ+FTahuKZchs1rcTIRk/BwsXCmiD/ZcE2h152OQRGfIkdk5OPs7VU+cv
         K68J97HUDuxD4aExnvIII9PX95NG9cI2Dn5TgOGViuasIJBTIQ3CYAcaR1yISqNjMjRR
         XhOg==
X-Forwarded-Encrypted: i=1; AJvYcCWpdqXeUtqlzRzxQYB9Uy+MA7K5dXw4REQ/GaxbPo5hZMqteuSLyYfcsFDLsN5LuBBJgZswwt0dJDw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxMXnzd/e45I/D3VZAPY4gIsy8NFzysAoPSd4T+3bg5MjnPZP9o
	OJ0slE52neWuTcY9gcywjjqjkfvJLyDVQkq5A1MJM/To/KGL4kkirSed/KGMoKcZUsNkX19u9+T
	f
X-Google-Smtp-Source: AGHT+IEkpcRIFoZNe98ChxVzROE/IGOxRy9PE7aDKFATGfzVnRAWlBozai88sXCwgrI55lWeBD38rQ==
X-Received: by 2002:a05:651c:2210:b0:2f7:6653:8053 with SMTP id 38308e7fff4ca-2fb327405c9mr11787581fa.18.1728636194859;
        Fri, 11 Oct 2024 01:43:14 -0700 (PDT)
Date: Fri, 11 Oct 2024 10:43:13 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
	xen-devel@lists.xenproject.org, consulting@bugseng.com
Subject: Re: [XEN PATCH v2 3/4] xen/vpci: address violations of MISRA C Rule
 16.3
Message-ID: <ZwjlIdimMmUUqi0e@macbook.local>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
 <a91c0223b827593f5c1a7ca7ece786266e5b8f52.1728308312.git.federico.serafini@bugseng.com>
 <alpine.DEB.2.22.394.2410071442570.3512606@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.2410071442570.3512606@ubuntu-linux-20-04-desktop>

On Mon, Oct 07, 2024 at 02:44:22PM -0700, Stefano Stabellini wrote:
> On Mon, 7 Oct 2024, Federico Serafini wrote:
> > 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>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

> > ---
> > Changes from v2:
> > - simply break without returning X86EMUL_UNHANDLEABLE.
> > 
> > As pointed out by Jan, these functions only return X86EMUL_OKAY but:
> > https://lists.xenproject.org/archives/html/xen-devel/2024-09/msg00727.html
> > 
> > Do you have any comments?

I think it's a result of how the series that implemented
adjacent_{read,write}() evolved.  Originally it was supposed to return
X86EMUL_UNHANDLEABLE for the earlier error cases at the top of the
function.

Returning an error code however is not helpful in this context, as the
accesses belong to the IO region of the device, and hence must be
terminated here.  There's no reason to return X86EMUL_UNHANDLEABLE or
similar, because no other handler should be able to complete them
anyway (or else we have a bigger issue).

I would be happy if someone did a patch to convert
adjacent_{read,write}() to instead return void.

> > ---
> >  xen/drivers/vpci/msix.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
> > index fbe710ab92..5bb4444ce2 100644
> > --- a/xen/drivers/vpci/msix.c
> > +++ b/xen/drivers/vpci/msix.c
> > @@ -364,6 +364,7 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
> >  
> >      default:
> >          ASSERT_UNREACHABLE();
> > +        break;
> >      }
> >      spin_unlock(&vpci->lock);
> >  
> > @@ -512,6 +513,7 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
> >  
> >      default:
> >          ASSERT_UNREACHABLE();
> > +        break;
> >      }
> >      spin_unlock(&vpci->lock);
> 
> I think in both cases it should be:
> 
> spin_unlock(&vpci->lock);
> return X86EMUL_UNHANDLEABLE;
> 
> In general, it seems to be that we want to return X86EMUL_UNHANDLEABLE
> in these situations and either we returning it from the default label,
> or we need to do rc = X86EMUL_UNHANDLEABLE; and later on return rc;

As said above, the accesses should be terminated here, hence returning
X86EMUL_UNHANDLEABLE doesn't seem appropriate.  The only way to signal
errors for such kind of IO access is to return ~0 in the read case, or
ignore the access in the write case.

We could consider raising a different kind of error (not
X86EMUL_UNHANDLEABLE) when an otherwise unreachable state is reached,
but I'm struggling as to what kind of action would the caller need to
take in that case, kill the guest?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:45:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:45:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816758.1230861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBHR-0007fp-7w; Fri, 11 Oct 2024 08:45:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816758.1230861; Fri, 11 Oct 2024 08: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 1szBHR-0007fi-5T; Fri, 11 Oct 2024 08:45:49 +0000
Received: by outflank-mailman (input) for mailman id 816758;
 Fri, 11 Oct 2024 08:45: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=DtJ7=RH=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1szBHQ-0007el-Gf
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:45:48 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3617a922-87ad-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:45:48 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so3491096a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:45:48 -0700 (PDT)
Received: from localhost ([213.195.123.53]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c9372608f4sm1685158a12.70.2024.10.11.01.45.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:45:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3617a922-87ad-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728636347; x=1729241147; 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=OBwTT+oZtVytmLXd/nh9K8ecrY0kNQyGbVHtwp3LWU8=;
        b=K7pdArVBjMlZOiEJbdLuBZA+tv4byo/rpY7vvYR9gLQc9uFDQ1sjDEpX03mDycsIK9
         He/MQxp/vknTxYWZl+vkbSqQ7Aa8IEyMO08kKI25uWWWFcayD6OhV56xisVGlhPMCw9q
         rrnADg6jHyyymn5niQIAcHa3DgZLpNIw/vioI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636347; x=1729241147;
        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=OBwTT+oZtVytmLXd/nh9K8ecrY0kNQyGbVHtwp3LWU8=;
        b=nR/AAnytRFSbeEfzKXPO6iQsrI9u+o11on1i6bT1Hviy1Zu/EP4S2Pxh5K9UWeR9f9
         23I8Xy8DjM/PeNEPZrzxRdV4KKL43jg52faU6UbTAYRuPdAgQ8XbqOEA0024RqvnpG4V
         O2ruK2cBVqhHTPrA8ecIW/sC4NHqyzC5jdV7VznIT0ELBA+kZrI2Zx2VvbOnYcB85CVB
         HsFH9aKMoG4KDV/pYYROdXwJesAMTTmJxujbEA8RwoYd0hfuBZlz1qiWrRZKAzbOsB7F
         NfC2836dIHHuhmIHrCYWLQYBBeXNMJQoM1hZ6ZQTJMkjCgarVB3EzNHsDCq48tSaFm/S
         Pfug==
X-Gm-Message-State: AOJu0YxWY/MrI0bnu4k7zCo/07PAvDOhx6DRnlg4bbik3xS/fyaZkTeF
	ibNiGVivrB9aL/LFJfaPNonD7US67Il2QUFMIzEHgpav2+GGhx62uOCilFxPIyY=
X-Google-Smtp-Source: AGHT+IGIVOy9PWupau/rKRDci7CXr2etTPC6dOUca1x0eohiZRwNPGNOGgprVxnX0uyfhiJg3V+W7g==
X-Received: by 2002:a05:6402:2804:b0:5c8:97b9:58a6 with SMTP id 4fb4d7f45d1cf-5c947417777mr1884205a12.1.1728636347431;
        Fri, 11 Oct 2024 01:45:47 -0700 (PDT)
Date: Fri, 11 Oct 2024 10:45:46 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: xen-devel@lists.xenproject.org, consulting@bugseng.com,
	Jan Beulich <jbeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v2 4/4] xen/pci: address a violation of MISRA C Rule
 16.3
Message-ID: <ZwjlurKU7FrFvObG@macbook.local>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
 <c662cae0f545a4e4e3921ae13bf69dc02884d9ee.1728308312.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <c662cae0f545a4e4e3921ae13bf69dc02884d9ee.1728308312.git.federico.serafini@bugseng.com>

On Mon, Oct 07, 2024 at 04:16:19PM +0200, Federico Serafini wrote:
> Refactor the code to avoid an implicit fallthrough and address
> a violation 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>
> ---
> Changes in v2:
> - improved description.
> ---
>  xen/drivers/passthrough/pci.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
> index 5a446d3dce..a5705def3f 100644
> --- a/xen/drivers/passthrough/pci.c
> +++ b/xen/drivers/passthrough/pci.c
> @@ -170,8 +170,10 @@ static int __init cf_check parse_phantom_dev(const char *str)
>      {
>      case 1: case 2: case 4:
>          if ( *s )
> -    default:
>              return -EINVAL;
> +        break;

Would you mind adding a newline here between the break and the default
case?

With that:

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:48:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:48:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816767.1230872 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBJo-0000AT-KL; Fri, 11 Oct 2024 08:48:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816767.1230872; Fri, 11 Oct 2024 08:48: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 1szBJo-0000AI-Hn; Fri, 11 Oct 2024 08:48:16 +0000
Received: by outflank-mailman (input) for mailman id 816767;
 Fri, 11 Oct 2024 08:48: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=rzrJ=RH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1szBJn-0000A5-LZ
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:48:15 +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 8d8ecc89-87ad-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:48:14 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a99543ab209so251819566b.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:48:14 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f25f67sm188572266b.55.2024.10.11.01.48.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 01:48:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d8ecc89-87ad-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728636494; x=1729241294; 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=ydvIiWOfO23nmG+MaFdPj/oB9aVXPJ4AYVH2d6zgCsQ=;
        b=gO5Db8cruCII3FhKlD6uSAiLeE2U8QwSQ1fCSqi1Vo82ibgc4e3m8RaIzJ90MuqCwp
         pdWqCSBRuIqKFHkpzI3nK7icXfZtVl1V/jJcIwCgqCiEUU7bwTDp3Gn2guLA3hz4ul0o
         Rm70G/9QQlbrW95Qc04RDU0fx4WshsaTDL2cDdEBHxYYWaHLEZFQQ+scslEIssM+mwoP
         ndsgaBgzd3YuqWlJwcY5LSG++NNLAwwjXlgzayFq+t2Se5OIAT2IT+diBZIkG+9LEcrm
         3s7iHoC4wTmULzpTAJSzY5YJ1S0FO1CRhe5s+r5MHdBjn15aCB3PbUF380X72o4ooyIi
         JvBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636494; x=1729241294;
        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=ydvIiWOfO23nmG+MaFdPj/oB9aVXPJ4AYVH2d6zgCsQ=;
        b=Wa4r6QkGCgcpKTaa5Owx9dr9Fi0QpwVmnJBBEIRKF6GZGErBni2/+grtjQtmo2tpzR
         ApXI/J52SjwyQrfXkzk4y+TZnJkzE2StQ05wpZjPe1laWYibEUoxdPDYbjxSugZL9OkJ
         IpSeePmRuYDehAEVJyVTsWv7NSWA+BCv9MXvFnbUi2oJfm0/IXjzwy1rDA8Amg1oruBT
         gMmOyxTxRbS9cq2MMavgcTxZAyp9Vl4X8OmX0C/UghZQWL6eGCaxlYKMgF05pNW8VP+a
         qBq5i//YMvB+/kF6tvbWxT4jhuaSV4RzPGkxaVss4/+FJoXZlduv2IX6Cr1uIMJ/tDon
         dP+g==
X-Gm-Message-State: AOJu0Yzdbm/xXmKYP8pNCblQV/WP0v/Jq/mGHq0XND8rU7y+UwWfeVLX
	zQcvLrQOHtM735i8Pf6mnZfhawUnF+w3p2Pk7xr8qBNsFOBMOvFVsere880nuQ==
X-Google-Smtp-Source: AGHT+IFYf3GsRyCWzpQEVfvSWbi+oaPoz2S2e5KCnky+zmYsWo2D2WRt/AE/ELL79Vr8h88JaCbVew==
X-Received: by 2002:a17:906:d554:b0:a99:43e5:ac37 with SMTP id a640c23a62f3a-a99b937a8a5mr129107766b.15.1728636494084;
        Fri, 11 Oct 2024 01:48:14 -0700 (PDT)
Message-ID: <5d3217c4-253c-41c1-bfb7-1e926f9f3753@suse.com>
Date: Fri, 11 Oct 2024 10:48:13 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 4/4] xen/pci: address a violation of MISRA C Rule
 16.3
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Federico Serafini <federico.serafini@bugseng.com>
Cc: xen-devel@lists.xenproject.org, consulting@bugseng.com,
 Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
 <c662cae0f545a4e4e3921ae13bf69dc02884d9ee.1728308312.git.federico.serafini@bugseng.com>
 <ZwjlurKU7FrFvObG@macbook.local>
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: <ZwjlurKU7FrFvObG@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.10.2024 10:45, Roger Pau Monné wrote:
> On Mon, Oct 07, 2024 at 04:16:19PM +0200, Federico Serafini wrote:
>> Refactor the code to avoid an implicit fallthrough and address
>> a violation 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>
>> ---
>> Changes in v2:
>> - improved description.
>> ---
>>  xen/drivers/passthrough/pci.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
>> index 5a446d3dce..a5705def3f 100644
>> --- a/xen/drivers/passthrough/pci.c
>> +++ b/xen/drivers/passthrough/pci.c
>> @@ -170,8 +170,10 @@ static int __init cf_check parse_phantom_dev(const char *str)
>>      {
>>      case 1: case 2: case 4:
>>          if ( *s )
>> -    default:
>>              return -EINVAL;
>> +        break;
> 
> Would you mind adding a newline here between the break and the default
> case?

I actually took the liberty to do so while committing (already a few days
ago).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:53:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:53:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816776.1230888 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBON-0001tL-Dg; Fri, 11 Oct 2024 08:52:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816776.1230888; Fri, 11 Oct 2024 08: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 1szBON-0001sK-8o; Fri, 11 Oct 2024 08:52:59 +0000
Received: by outflank-mailman (input) for mailman id 816776;
 Fri, 11 Oct 2024 08:52: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szBOM-0001pc-7t
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:52:58 +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 35f3fee5-87ae-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:52:57 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-5398b589032so3082989e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:52:57 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc290sm186131566b.155.2024.10.11.01.52.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:52:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35f3fee5-87ae-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728636776; x=1729241576; 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=kevqHPlOngQuOmstH4bxiNiM3x5PtCpRDsAd+HUlWeY=;
        b=IcyCYIL0aFqEbryKqeHXG/li/H8DW0KUKOScao7/GDY0dYovOhYMgeme3QEqJho683
         5gl6X+5/IvCJ6TwTgUlzlT+W4QpZzsb3MgaXX/B9fG38FO01t9+LUUiQyuaAaxeqDlI/
         BywahSqVrlBSR/aU5+y+HTO9BFTrvAsTkyGK0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636776; x=1729241576;
        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=kevqHPlOngQuOmstH4bxiNiM3x5PtCpRDsAd+HUlWeY=;
        b=CAjpEsYr4UcSxvU8Alc/FcRkW9jbHgTfxM2m16e2c6dvLy8v4vsu6tbSGQiZU3RM9E
         kf9Hnb6iA8WaBJBqrsKV7KewmoJYoiQb1WrK0IImZ5SMdbAUghVn/ejewKtQ9qeZT5Z1
         Yadw0K4KJrdkZytCTMJeyENvRLl6mY05twTO0b8yJ55y/4f85WCIwirZeY95/P3ezr6H
         Dklljovuis6/AbOX/eYcJIFkL3I1yU2x48+iBEK+hZER3DzPdfBxsLd3sunBWLeTEuwD
         iRqqy7g4f9FXcB67EkLvR/yqQgeKZs/3SepUsD1sNdEP+mbbFu804UUPRCZnl/8gIJVb
         QfIQ==
X-Gm-Message-State: AOJu0YzBTD0/bH5Oer7yJCuQg2Td5a/H+ejQdRtQFqKBulEpx71gyI4j
	JZdWxJr8GlgN4V+rZO4QBrn+0PWzhT5pgxekA5cnn2sqjr66/cKx68J1qNMVij1i2Lws40ZN70/
	9
X-Google-Smtp-Source: AGHT+IEyrRg/HCEajzOUUpGzIiNFdhvAgIdLhgp7IEdHP832Xej2NWnC5GKZHjbm6xOcH3/7EH3EQA==
X-Received: by 2002:a05:6512:3196:b0:539:a353:279b with SMTP id 2adb3069b0e04-539da3b1ec8mr1321973e87.9.1728636776162;
        Fri, 11 Oct 2024 01:52:56 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3 1/5] x86/boot: create a C bundle for 32 bit boot code and use it
Date: Fri, 11 Oct 2024 09:52:40 +0100
Message-Id: <20241011085244.432368-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241011085244.432368-1-frediano.ziglio@cloud.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The current method to include 32 bit C boot code is:
- compile each function we want to use into a separate object file;
- each function is compiled with -fpic option;
- convert these object files to binary files. This operation removes GOP
  which we don't want in the executable;
- a small assembly part in each file add the entry point;
- code can't have external references, all possible variables are passed
  by value or pointer;
- include these binary files in head.S.

There are currently some limitations:
- code is compiled separately, it's not possible to share a function
  (like memcpy) between different functions to use;
- although code is compiled with -fpic there's no certainty there are
  no relocations, specifically data ones. This can lead into hard to
  find bugs;
- it's hard to add a simple function;
- having to pass external variables makes hard to do multiple things
  otherwise functions would require a lot of parameters so code would
  have to be split into multiple functions which is not easy;
- we generate a single text section containing data and code, not a
  problem at the moment but if we want to add W^X protection it's
  not helpful.

Current change extends the current process:
- all object files are linked together before getting converted making
  possible to share code between the function we want to call;
- a single object file is generated with all functions to use and
  exported symbols to easily call;
- variables to use are declared in linker script and easily used inside
  C code. Declaring them manually could be annoying but makes also
  easier to check them. Using external pointers can be still an issue if
  they are not fixed. If an external symbol is not declared this gives a
  link error;
- linker script put data (bss and data) into a separate section and
  check that that section is empty making sure code is W^X compatible;

Some details of the implementation:
- C code is compiled with -fpic flags (as before);
- object files from C code are linked together;
- the single bundled object file is linked with 2 slightly different
  script files to generate 2 bundled object files;
- the 2 bundled object files are converted to binary removing the need
  for global offset tables;
- a Python script is used to generate assembly source from the 2
  binaries;
- the single assembly file is compiled to generate final bundled object
  file;
- to detect possible unwanted relocation in data/code code is generated
  with different addresses. This is enforced starting .text section at
  different positions and adding a fixed "gap" at the beginning.
  This makes sure code and data is position independent;
- to detect used symbols in data/code symbols are placed in .text
  section at different offsets (based on the line in the linker script).
  This is needed as potentially a reference to a symbol is converted to
  a reference to the containing section so multiple symbols could be
  converted to reference to same symbol (section name) and we need to
  distinguish them;
- to avoid relocations
- --orphan-handling=error option to linker is used to make sure we
  account for all possible sections from C code;

Current limitations:
- the main one is the lack of support for 64 bit code. It would make
  sure that even the code used for 64 bit (at the moment EFI code) is
  code and data position independent. We cannot assume that code that
  came from code compiled for 32 bit and compiled for 64 bit is code and
  data position independent, different compiler options lead to
  different code/data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- separate lines adding files in Makefile;
- remove unneeded "#undef ENTRY" in build32.lds.S;
- print some information from combine_two_binaries only passing --verbose;
- detect --orphan-handling=error option dynamically;
- define and use a LD32;
- more intermediate targets to build more in parallel;
- use obj32 in Makefile to keep list of 32 bit object files;
- 32 bit object files are now named XXX.32.o;
- rename "cbundle" to "built_in_32".
---
 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  58 +++--
 .../x86/boot/{build32.lds => build32.lds.S}   |  43 +++-
 xen/arch/x86/boot/cmdline.c                   |  12 --
 xen/arch/x86/boot/head.S                      |  12 --
 xen/arch/x86/boot/reloc.c                     |  14 --
 xen/tools/combine_two_binaries                | 198 ++++++++++++++++++
 7 files changed, 283 insertions(+), 59 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (63%)
 create mode 100755 xen/tools/combine_two_binaries

diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
index a379db7988..ebad650e5c 100644
--- a/xen/arch/x86/boot/.gitignore
+++ b/xen/arch/x86/boot/.gitignore
@@ -1,3 +1,4 @@
 /mkelf32
-/*.bin
-/*.lnk
+/build32.*.lds
+/built_in_32.*.bin
+/built_in_32.*.map
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index ff0f965876..4cf0d7e140 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,15 +1,18 @@
+obj32 := cmdline.o
+obj32 += reloc.o
+
 obj-bin-y += head.o
+obj-bin-y += built_in_32.o
 
-head-bin-objs := cmdline.o reloc.o
+obj32 := $(patsubst %.o,%.32.o,$(obj32))
 
-nocov-y   += $(head-bin-objs)
-noubsan-y += $(head-bin-objs)
-targets   += $(head-bin-objs)
+nocov-y   += $(obj32)
+noubsan-y += $(obj32)
+targets   += $(obj32)
 
-head-bin-objs := $(addprefix $(obj)/,$(head-bin-objs))
+obj32 := $(addprefix $(obj)/,$(obj32))
 
 $(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(head-bin-objs:.o=.bin)
 
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
@@ -17,17 +20,46 @@ CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
 CFLAGS_x86_32 += -nostdinc -include $(filter %/include/xen/config.h,$(XEN_CFLAGS))
 CFLAGS_x86_32 += $(filter -I% -O%,$(XEN_CFLAGS)) -D__XEN__
 
+LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
+
 # override for 32bit binaries
-$(head-bin-objs): CFLAGS_stack_boundary :=
-$(head-bin-objs): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
+$(obj32): CFLAGS_stack_boundary :=
+$(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
 
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
 
-%.bin: %.lnk
-	$(OBJCOPY) -j .text -O binary $< $@
+$(obj)/%.32.o: $(src)/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
+
+$(obj)/build32.final.lds: AFLAGS-y += -DFINAL
+$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S
+	$(call if_changed_dep,cpp_lds_S)
+
+orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
+
+# link all object files together
+$(obj)/built_in_32.tmp.o: $(obj32)
+	$(LD32) -r -o $@ $(obj32)
+
+$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.tmp.o
+## link bundle with a given layout
+	$(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
+## extract binaries from object
+	$(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
+	rm -f $(obj)/built_in_32.$(*F).o
 
-%.lnk: %.o $(src)/build32.lds
-	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -N -T $(filter %.lds,$^) -o $@ $<
+# generate final object file combining and checking above binaries
+$(obj)/built_in_32.o: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
+	$(PYTHON) $(srctree)/tools/combine_two_binaries \
+		--script $(obj)/build32.final.lds \
+		--bin1 $(obj)/built_in_32.other.bin --bin2 $(obj)/built_in_32.final.bin \
+		--map $(obj)/built_in_32.final.map \
+		--exports cmdline_parse_early,reloc \
+		--section-header '.section .init.text, "ax", @progbits' \
+		--output $(obj)/built_in_32.s
+	$(CC) -c $(obj)/built_in_32.s -o $@.tmp
+	rm -f $(obj)/built_in_32.s $@
+	mv $@.tmp $@
 
-clean-files := *.lnk *.bin
+clean-files := built_in_32.*.bin built_in_32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
similarity index 63%
rename from xen/arch/x86/boot/build32.lds
rename to xen/arch/x86/boot/build32.lds.S
index 56edaa727b..72a4c5c614 100644
--- a/xen/arch/x86/boot/build32.lds
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -15,22 +15,52 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-ENTRY(_start)
+#ifdef FINAL
+# define GAP 0
+# define MULT 0
+# define TEXT_START
+#else
+# define GAP 0x010200
+# define MULT 1
+# define TEXT_START 0x408020
+#endif
+# define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
+
+ENTRY(dummy_start)
 
 SECTIONS
 {
-  /* Merge code and data into one section. */
-  .text : {
+  /* Merge code and read-only data into one section. */
+  .text TEXT_START : {
+        /* Silence linker warning, we are not going to use it */
+        dummy_start = .;
+
+        /* Declare below any symbol name needed.
+         * Each symbol should be on its own line.
+         * It looks like a tedious work but we make sure the things we use.
+         * Potentially they should be all variables. */
+        DECLARE_IMPORT(__base_relocs_start);
+        DECLARE_IMPORT(__base_relocs_end);
+        . = . + GAP;
         *(.text)
         *(.text.*)
-        *(.data)
-        *(.data.*)
         *(.rodata)
         *(.rodata.*)
+  }
+
+  /* Writeable data sections. Check empty.
+   * We collapse all into code section and we don't want it to be writeable. */
+  .data : {
+        *(.data)
+        *(.data.*)
         *(.bss)
         *(.bss.*)
   }
-
+  /DISCARD/ : {
+       *(.comment)
+       *(.comment.*)
+       *(.note.*)
+  }
   /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
   .got : {
         *(.got)
@@ -64,3 +94,4 @@ ASSERT(SIZEOF(.igot.plt) == 0,    ".igot.plt non-empty")
 ASSERT(SIZEOF(.iplt) == 0,        ".iplt non-empty")
 ASSERT(SIZEOF(.plt) == 0,         ".plt non-empty")
 ASSERT(SIZEOF(.rel) == 0,         "leftover relocations")
+ASSERT(SIZEOF(.data) == 0,        "we don't want data")
diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index fc9241ede9..196c580e91 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -18,18 +18,6 @@
  * Linux kernel source (linux/lib/string.c).
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax      = &cmdline,
- *   - %edx      = &early_boot_opts.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  cmdline_parse_early      \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/kconfig.h>
 #include <xen/macros.h>
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index c4de1dfab5..e0776e3896 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -759,18 +759,6 @@ trampoline_setup:
         /* Jump into the relocated trampoline. */
         lret
 
-        /*
-         * cmdline and reloc are written in C, and linked to be 32bit PIC with
-         * entrypoints at 0 and using the fastcall convention.
-         */
-FUNC_LOCAL(cmdline_parse_early)
-        .incbin "cmdline.bin"
-END(cmdline_parse_early)
-
-FUNC_LOCAL(reloc)
-        .incbin "reloc.bin"
-END(reloc)
-
 ENTRY(trampoline_start)
 #include "trampoline.S"
 ENTRY(trampoline_end)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 8c58affcd9..94b078d7b1 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -12,20 +12,6 @@
  *    Daniel Kiper <daniel.kiper@oracle.com>
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax       = MAGIC,
- *   - %edx       = INFORMATION_ADDRESS,
- *   - %ecx       = TOPMOST_LOW_MEMORY_STACK_ADDRESS.
- *   - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  reloc                    \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/macros.h>
 #include <xen/types.h>
diff --git a/xen/tools/combine_two_binaries b/xen/tools/combine_two_binaries
new file mode 100755
index 0000000000..ea2d6ddc4e
--- /dev/null
+++ b/xen/tools/combine_two_binaries
@@ -0,0 +1,198 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+import argparse
+import re
+import struct
+import sys
+
+parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
+parser.add_argument('--script', dest='script',
+                    required=True,
+                    help='Linker script for extracting symbols')
+parser.add_argument('--bin1', dest='bin1',
+                    required=True,
+                    help='First binary')
+parser.add_argument('--bin2', dest='bin2',
+                    required=True,
+                    help='Second binary')
+parser.add_argument('--output', dest='output',
+                    help='Output file')
+parser.add_argument('--map', dest='mapfile',
+                    help='Map file to read for symbols to export')
+parser.add_argument('--exports', dest='exports',
+                    help='Symbols to export')
+parser.add_argument('--section-header', dest='section_header',
+                    default='.text',
+                    help='Section header declaration')
+parser.add_argument('-v', '--verbose',
+                    action='store_true')
+args = parser.parse_args()
+
+gap = 0x010200
+text_diff = 0x408020
+
+# Parse linker script for external symbols to use.
+symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')
+symbols = {}
+lines = {}
+for line in open(args.script):
+    m = symbol_re.match(line)
+    if not m:
+        continue
+    (name, line_num) = (m.group(1), int(m.group(2)))
+    if line_num == 0:
+        raise Exception("Invalid line number found:\n\t" + line)
+    if line_num in symbols:
+        raise Exception("Symbol with this line already present:\n\t" + line)
+    if name in lines:
+        raise Exception("Symbol with this name already present:\n\t" + name)
+    symbols[line_num] = name
+    lines[name] = line_num
+
+exports = []
+if args.exports is not None:
+    exports = dict([(name, None) for name in args.exports.split(',')])
+
+# Parse mapfile, look for ther symbols we want to export.
+if args.mapfile is not None:
+    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
+    for line in open(args.mapfile):
+        m = symbol_re.match(line)
+        if not m or m.group(2) not in exports:
+            continue
+        addr = int(m.group(1), 16)
+        exports[m.group(2)] = addr
+for (name, addr) in exports.items():
+    if addr is None:
+        raise Exception("Required export symbols %s not found" % name)
+
+file1 = open(args.bin1, 'rb')
+file2 = open(args.bin2, 'rb')
+file1.seek(0, 2)
+size1 = file1.tell()
+file2.seek(0, 2)
+size2 = file2.tell()
+if size1 > size2:
+    file1, file2 = file2, file1
+    size1, size2 = size2, size1
+if size2 != size1 + gap:
+    raise Exception('File sizes do not match')
+
+file1.seek(0, 0)
+data1 = file1.read(size1)
+file2.seek(gap, 0)
+data2 = file2.read(size1)
+
+max_line = max(symbols.keys())
+
+def to_int32(n):
+    '''Convert a number to signed 32 bit integer truncating if needed'''
+    mask = (1 << 32) - 1
+    h = 1 << 31
+    return (n & mask) ^ h - h
+
+i = 0
+references = {}
+internals = 0
+while i <= size1 - 4:
+    n1 = struct.unpack('<I', data1[i:i+4])[0]
+    n2 = struct.unpack('<I', data2[i:i+4])[0]
+    i += 1
+    # The two numbers are the same, no problems
+    if n1 == n2:
+        continue
+    # Try to understand why they are different
+    diff = to_int32(n1 - n2)
+    if diff == -gap: # this is an internal relocation
+        pos = i - 1
+        print(("Internal relocation found at position %#x "
+               "n1=%#x n2=%#x diff=%#x") % (pos, n1, n2, diff),
+              file=sys.stderr)
+        i += 3
+        internals += 1
+        if internals >= 10:
+            break
+        continue
+    # This is a relative relocation to a symbol, accepted, code/data is
+    # relocatable.
+    if diff < gap and diff >= gap - max_line:
+        n = gap - diff
+        symbol = symbols.get(n)
+        # check we have a symbol
+        if symbol is None:
+            raise Exception("Cannot find symbol for line %d" % n)
+        pos = i - 1
+        if args.verbose:
+            print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
+        i += 3
+        references[pos] = symbol
+        continue
+    # First byte is the same, move to next byte
+    if diff & 0xff == 0 and i <= size1 - 4:
+       continue
+    # Probably a type of relocation we don't want or support
+    pos = i - 1
+    suggestion = ''
+    symbol = symbols.get(-diff - text_diff)
+    if symbol is not None:
+        suggestion = " Maybe %s is not defined as hidden?" % symbol
+    raise Exception(("Unexpected difference found at %#x "
+                     "n1=%#x n2=%#x diff=%#x gap=%#x.%s") % \
+                     (pos, n1, n2, diff, gap, suggestion))
+if internals != 0:
+    raise Exception("Previous relocations found")
+
+def line_bytes(buf, out):
+    '''Output an assembly line with all bytes in "buf"'''
+    if type(buf) == str:
+        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
+    else:
+        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)
+
+def part(start, end, out):
+    '''Output bytes of "data" from "start" to "end"'''
+    while start < end:
+        e = min(start + 16, end)
+        line_bytes(data1[start:e], out)
+        start = e
+
+def reference(pos, out):
+    name = references[pos]
+    n = struct.unpack('<I', data1[pos:pos+4])[0]
+    sign = '+'
+    if n >= (1 << 31):
+        n -= (1 << 32)
+    n += pos
+    if n < 0:
+        n = -n
+        sign = '-'
+    print("\t.hidden %s\n\t.long %s %s %#x - ." % (name, name, sign, n),
+          file=out)
+
+def output(out):
+    prev = 0
+    exports_by_addr = {}
+    for (sym, addr) in exports.items():
+        exports_by_addr.setdefault(addr, []).append(sym)
+    positions = list(references.keys())
+    positions += list(exports_by_addr.keys())
+    for pos in sorted(positions):
+        part(prev, pos, out)
+        prev = pos
+        if pos in references:
+            reference(pos, out)
+            prev = pos + 4
+        if pos in exports_by_addr:
+            for sym in exports_by_addr[pos]:
+                print("\t.global %s\n\t.hidden %s\n%s:" % (sym, sym, sym),
+                      file=out)
+    part(prev, size1, out)
+
+out = sys.stdout
+if args.output is not None:
+    out = open(args.output, 'w')
+print('\t' + args.section_header, file=out)
+output(out)
+print('\n\t.section\t.note.GNU-stack,"",@progbits', file=out)
+out.flush()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:53:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:53:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816777.1230898 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBON-00025B-VE; Fri, 11 Oct 2024 08:52:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816777.1230898; Fri, 11 Oct 2024 08: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 1szBON-00022y-NQ; Fri, 11 Oct 2024 08:52:59 +0000
Received: by outflank-mailman (input) for mailman id 816777;
 Fri, 11 Oct 2024 08:52: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szBOM-0001pc-Qd
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:52:58 +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 365cef9e-87ae-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:52:57 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a9950d27234so258743266b.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:52:57 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc290sm186131566b.155.2024.10.11.01.52.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:52:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 365cef9e-87ae-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728636777; x=1729241577; 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=zUggCQPTyO9ygn34x4HeSgdbn1nIPGVC8lBKowza6Ww=;
        b=ULZgpcC2Pc+Aeh+HNXd07K/EkIz33sD8izpgx4x3Zn9Izdc1IUm7yndfjpn6AfbJzs
         4ocFyy73DRTfxHQPtpdLO87sMQZoxlx0M4kb0C5n5PFHx6gxqWK7bSF4ikZPNOe2A7hr
         FNVrSnjJwScHfvf6J/6HWV9qhtIvLWVrjJd6c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636777; x=1729241577;
        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=zUggCQPTyO9ygn34x4HeSgdbn1nIPGVC8lBKowza6Ww=;
        b=xRAbEhaGZiOnjJUiuH0/3tujEaE1wpLXznwgdD+s2vAU3374rVywQAT45NZ4bI4Krt
         ekJYY9HwjcLYSI+wFvhD7WQYveQxpa00H7XbZEXXr+t0XpKtmoDWF7lzL+2KSLLWTzjr
         1O7Y2WPnQYNeFqDA7pCezq7s6pyDxMIT6LfYZBnRxQU5tG1wpjMzRBwa3kzKp/OP1/NY
         ln4e/atGrdLMtnGAq2W62POxEfZFSudKhbkneT7EgCRiZfRHilB8iFPDp7ddTf7pBxWS
         P49WLxveELQCzQURrjtLY/pNTVjYJ7Kuxv7jYLEaz3GlhMsovEMu2X8ny3BWFa3A0xi3
         FjvQ==
X-Gm-Message-State: AOJu0Yzv/d4RrN9Ka9gh8bmDOhe/s2hH4U5LJXYDLgaAO+ykuihdM+jz
	mQ1mGJT8SBmPFJ+17r5zKDM31ZymyMqm63yf0FnRL20tkkBxbo0Mh4aHxa1AfgkVQEP6uUwFJdv
	5
X-Google-Smtp-Source: AGHT+IH65Eld8JdkIAY7cU2W6Ra7H+4tZO/nE4hRKbWIgqgRMd1GZ4mpQGirx+/zNR0Btne7p1Lvxg==
X-Received: by 2002:a17:907:7ea4:b0:a99:408c:6a16 with SMTP id a640c23a62f3a-a99b9315e79mr138590366b.12.1728636776928;
        Fri, 11 Oct 2024 01:52:56 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v3 2/5] x86/boot: Reuse code to relocate trampoline
Date: Fri, 11 Oct 2024 09:52:41 +0100
Message-Id: <20241011085244.432368-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241011085244.432368-1-frediano.ziglio@cloud.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Move code from efi-boot.h to a separate, new, reloc-trampoline.c file.
Reuse this new code to replace assembly code in head.S doing the
same thing.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/Makefile           | 12 ++++++----
 xen/arch/x86/boot/build32.lds.S      |  5 ++++
 xen/arch/x86/boot/head.S             | 23 +-----------------
 xen/arch/x86/boot/reloc-trampoline.c | 36 ++++++++++++++++++++++++++++
 xen/arch/x86/efi/efi-boot.h          | 15 ++----------
 5 files changed, 52 insertions(+), 39 deletions(-)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 4cf0d7e140..24b4b0cb17 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,14 +1,18 @@
 obj32 := cmdline.o
 obj32 += reloc.o
+obj32 += reloc-trampoline.o
+
+obj64 := reloc-trampoline.o
 
 obj-bin-y += head.o
 obj-bin-y += built_in_32.o
+obj-bin-y += $(obj64)
 
 obj32 := $(patsubst %.o,%.32.o,$(obj32))
 
-nocov-y   += $(obj32)
-noubsan-y += $(obj32)
-targets   += $(obj32)
+nocov-y   += $(obj32) $(obj64)
+noubsan-y += $(obj32) $(obj64)
+targets   += $(obj32) $(obj64)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
@@ -55,7 +59,7 @@ $(obj)/built_in_32.o: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
 		--script $(obj)/build32.final.lds \
 		--bin1 $(obj)/built_in_32.other.bin --bin2 $(obj)/built_in_32.final.bin \
 		--map $(obj)/built_in_32.final.map \
-		--exports cmdline_parse_early,reloc \
+		--exports cmdline_parse_early,reloc,reloc_trampoline32 \
 		--section-header '.section .init.text, "ax", @progbits' \
 		--output $(obj)/built_in_32.s
 	$(CC) -c $(obj)/built_in_32.s -o $@.tmp
diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 72a4c5c614..9d09e3adbd 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -41,6 +41,11 @@ SECTIONS
          * Potentially they should be all variables. */
         DECLARE_IMPORT(__base_relocs_start);
         DECLARE_IMPORT(__base_relocs_end);
+        DECLARE_IMPORT(__trampoline_rel_start);
+        DECLARE_IMPORT(__trampoline_rel_stop);
+        DECLARE_IMPORT(__trampoline_seg_start);
+        DECLARE_IMPORT(__trampoline_seg_stop);
+        DECLARE_IMPORT(trampoline_phys);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0776e3896..ade2c5c43d 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -706,28 +706,7 @@ trampoline_setup:
         mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
 
         /* Apply relocations to bootstrap trampoline. */
-        mov     sym_esi(trampoline_phys), %edx
-        lea     sym_esi(__trampoline_rel_start), %edi
-        lea     sym_esi(__trampoline_rel_stop), %ecx
-1:
-        mov     (%edi), %eax
-        add     %edx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
-
-        /* Patch in the trampoline segment. */
-        shr     $4,%edx
-        lea     sym_esi(__trampoline_seg_start), %edi
-        lea     sym_esi(__trampoline_seg_stop), %ecx
-1:
-        mov     (%edi), %eax
-        mov     %dx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
+        call    reloc_trampoline32
 
         /* Do not parse command line on EFI platform here. */
         cmpb    $0, sym_esi(efi_platform)
diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
new file mode 100644
index 0000000000..c899e99b08
--- /dev/null
+++ b/xen/arch/x86/boot/reloc-trampoline.c
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/compiler.h>
+#include <xen/stdint.h>
+#include <asm/trampoline.h>
+
+extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+
+#if defined(__i386__)
+void reloc_trampoline32(void)
+#elif defined (__x86_64__)
+void reloc_trampoline64(void)
+#else
+#error Unknow architecture
+#endif
+{
+    unsigned long phys = trampoline_phys;
+    const int32_t *trampoline_ptr;
+
+    /*
+     * Apply relocations to trampoline.
+     *
+     * This modifies the trampoline in place within Xen, so that it will
+     * operate correctly when copied into place.
+     */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f3443364..1acceec471 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned long delta)
     }
 }
 
-extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+void reloc_trampoline64(void);
 
 static void __init relocate_trampoline(unsigned long phys)
 {
-    const int32_t *trampoline_ptr;
-
     trampoline_phys = phys;
 
     if ( !efi_enabled(EFI_LOADER) )
         return;
 
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+    reloc_trampoline64();
 }
 
 static void __init place_string(u32 *addr, const char *s)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:53:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:53:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816775.1230882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBON-0001q2-4q; Fri, 11 Oct 2024 08:52:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816775.1230882; Fri, 11 Oct 2024 08: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 1szBON-0001pv-20; Fri, 11 Oct 2024 08:52:59 +0000
Received: by outflank-mailman (input) for mailman id 816775;
 Fri, 11 Oct 2024 08: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szBOL-0001pc-OX
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:52:57 +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 35500ee4-87ae-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:52:56 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a99650da839so305799566b.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:52:56 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc290sm186131566b.155.2024.10.11.01.52.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:52:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35500ee4-87ae-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728636775; x=1729241575; 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=HJ+Hmzgm6Lu80wn8lj9wtFnGHhFIb7PPFMsadOvdVTk=;
        b=jJtTjvB2ob4eVCaxtmxVDuFPYETGe3Db6HL6MZPohnFmyOkXFLApeFzbMUUe7iiyRT
         MSrjOdDIz5cjqE2aEkCU2zL8OimPRbb4psnHgu2vEcx3qRc1QXjDZd5Y3CcXMgy/A9Np
         CVHD6oU6uVH7JRnpD54UAdjJJzh+bbasGe0xE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636775; x=1729241575;
        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=HJ+Hmzgm6Lu80wn8lj9wtFnGHhFIb7PPFMsadOvdVTk=;
        b=VWK3hrbQ/Yl+24+51f/rZqL+mcqibdyHyUm8oANsW7+oJqUFyU1ekw+Fgr/JkDBPZL
         yXWUTVvChU54n8DuK4pkGmxL2MKh1MYvBuxR76/phjkUkMQTbXZ2kgQ85H0NrgTygkvR
         R7TXjf0VRaF+PlqbQ2ysXCCpOEfK5jofF8Lqcwuv5NESZ617+ai3W9DGoYreWe6qMn0x
         1CXYs+qltxixX2vXbo25zeh3PQ/OvbjB/Rd+Z7vQ670jZFgT5nBpfhUX9bNPxI5E/K98
         AOTE/IqCAeM/zPm7ugo24Uf0abN19bJFAgis5T5WUawPgF2Nnddy4k/wT8w9Ac1SPVGh
         FMTg==
X-Gm-Message-State: AOJu0Yx8fOytBnTVk50DD5r0RRJSM0YgTrRAGKxIEkgUz1yiyRebOVXq
	Yt/+nbQdgQMAhGD5wfzxAoiS1/hIaEZoS1WfRx4td5co8p7jQVnVAQQ9l3wccQAFfrqa733b58O
	5
X-Google-Smtp-Source: AGHT+IGF4Bdjn9hWz8gtAdNBGAAzJvSr8/9SPH0DdES5OYVsaub5Wcy30spNuQ7iQpYu8uWlBfpwRQ==
X-Received: by 2002:a17:907:d2d4:b0:a99:76bc:d753 with SMTP id a640c23a62f3a-a99b958318amr161187366b.45.1728636775369;
        Fri, 11 Oct 2024 01:52:55 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v3 0/5] Reuse 32 bit C code more safely
Date: Fri, 11 Oct 2024 09:52:39 +0100
Message-Id: <20241011085244.432368-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series attempt to:
- use more C code, that is replace some assembly code with C;
- avoid some code duplication between C and assembly;
- prevent some issues having relocations in C code.

The idea is extending the current C to binary code conversion
done for 32 bit C code called from head.S making sure relocations
are safe and allowing external symbols usage from C code.

Note that, as an addition, scripts generating code check for no
data to allow code and data separation.

More details of the implementation are in commit message 1/5,
which is the largest patch.
Patch 2/5 reuses code to relocate the trampoline between 32 and 64 bit.
Patches 3/5 and 4/5 move some code from assembly to C.

Other RFC commits were excluded, I didn't manage to entangle the issues
sharing headers between 32 and 64 bits.
Since RFC code was more tested, also with CI and some incompatibility
were fixed. On that it's weird that we need Python 3.8 for Qemu but we
still use Python 2 for Xen. Shouldn't we bump requirement to Python 3
even for Xen?

Code boots successfully using:
- BIOS boot;
- EFI boot with Grub2 and ELF file;
- direct EFI boot without Grub.

Code is currently based on "master" branch, currently commit
2b49ef4503e2c549c166f439cf0dd331d9a8874c.

Changes since v1:
- 2 preliminary commits for adjust .gitignore;
- last commit split (one variable at a time);
- lot of style and names changes;
- first commit, now 3/6 had some build changes, more details on
  commit message.

Changes since v2:
- removed merged commits;
- reverted order of 2 commits;
- remove some useless casts;
- added change to comment.

Frediano Ziglio (5):
  x86/boot: create a C bundle for 32 bit boot code and use it
  x86/boot: Reuse code to relocate trampoline
  x86/boot: Use boot_vid_info variable directly from C code
  x86/boot: Use trampoline_phys variable directly from C code
  x86/boot: Clarify comment

 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  62 ++++--
 .../x86/boot/{build32.lds => build32.lds.S}   |  49 ++++-
 xen/arch/x86/boot/cmdline.c                   |  12 --
 xen/arch/x86/boot/head.S                      |  49 +----
 xen/arch/x86/boot/reloc-trampoline.c          |  36 ++++
 xen/arch/x86/boot/reloc.c                     |  35 +---
 xen/arch/x86/efi/efi-boot.h                   |  15 +-
 xen/tools/combine_two_binaries                | 198 ++++++++++++++++++
 9 files changed, 344 insertions(+), 117 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (57%)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
 create mode 100755 xen/tools/combine_two_binaries

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:53:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:53:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816778.1230912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBOP-0002YI-AX; Fri, 11 Oct 2024 08:53:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816778.1230912; Fri, 11 Oct 2024 08:53: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 1szBOP-0002Xx-5c; Fri, 11 Oct 2024 08:53:01 +0000
Received: by outflank-mailman (input) for mailman id 816778;
 Fri, 11 Oct 2024 08:52: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szBON-0001pc-Qg
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:52:59 +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 36c4745f-87ae-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 10:52:58 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-5398b589032so3083021e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:52:58 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc290sm186131566b.155.2024.10.11.01.52.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:52:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 36c4745f-87ae-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728636778; x=1729241578; 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=lRozCPE4hLmDkWuRsnYBmVRqJbay8YlPxBu7rNpVYHk=;
        b=j8oRP/zvijd4/gyzqIqGO08n+9NwH/QrAW4apd4wVReRtorYq7OShF+PNI4dX1BY5o
         z9j7jiQoWpphrj/Hl3YhFFHZfTe4Q4e0ZL+J15dvPW6wf9UD9rfOtaEPs0N9PExvi43t
         OlUR8j8ASDVbCA+CzOYyTO8f7TA8bihFBhfDM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636778; x=1729241578;
        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=lRozCPE4hLmDkWuRsnYBmVRqJbay8YlPxBu7rNpVYHk=;
        b=dF5X2MKx95CqGBmrysz/XpHKjMPeIw2XViJoTacyO86RxGrd10/e8iZ4fyQ2AWGUey
         e/TeMdchO4erBCwbrsxnnNCYLNSpTLIQpWZKHyZMlFalUZvPnnIcvz1umcdSYCju5N+p
         iOEh0v7VG9UbT6vbBsdIwF9XuP3g/zih6u75V1u0WTsn4tq0Yy5FOR4KWwfgZXA7B9qD
         fceyPW9NjIhI/KJvXQcP54udBBUrGsDLZQEJJBi5qZZ7goETXMGAvvAQHgER0MrZfwQg
         pTFhFCOhlUS5yJ7KlEsqpKp7y5X6Go9NMbYX3PV0bsWirhuGCib/kopRPAFpTSXU2gCH
         R1aA==
X-Gm-Message-State: AOJu0Ywon4fBEwDHq/8t4ug/FwhSfrzmma+gA4mzUCWcVuLOlI9Qtlh0
	nO6qWgMfuvCDobYws7u61NfENF0zvXb12UalvT1UB1yRvPaDZq90qU1pkfIGLgtV5k4DfivwcBI
	e
X-Google-Smtp-Source: AGHT+IGDJrAsvWMO6oVkUaso7GKsUX42/Ol93PeUTzRMQ/Xv3G8+ltoWMcNCFuW8P4t0E1tmoaMuEw==
X-Received: by 2002:a05:6512:3992:b0:536:a695:9414 with SMTP id 2adb3069b0e04-539da3b205amr1335442e87.6.1728636777686;
        Fri, 11 Oct 2024 01:52:57 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v3 3/5] x86/boot: Use boot_vid_info variable directly from C code
Date: Fri, 11 Oct 2024 09:52:42 +0100
Message-Id: <20241011085244.432368-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241011085244.432368-1-frediano.ziglio@cloud.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order.
---
 xen/arch/x86/boot/build32.lds.S |  1 +
 xen/arch/x86/boot/head.S        | 10 +---------
 xen/arch/x86/boot/reloc.c       | 13 +++++--------
 3 files changed, 7 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 9d09e3adbd..26ef609523 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -46,6 +46,7 @@ SECTIONS
         DECLARE_IMPORT(__trampoline_seg_start);
         DECLARE_IMPORT(__trampoline_seg_stop);
         DECLARE_IMPORT(trampoline_phys);
+        DECLARE_IMPORT(boot_vid_info);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index ade2c5c43d..5da7ac138f 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -514,18 +514,10 @@ trampoline_setup:
         mov     sym_esi(trampoline_phys), %ecx
         add     $TRAMPOLINE_SPACE,%ecx
 
-#ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %edx
-#else
-        xor     %edx, %edx
-#endif
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
-        push    %edx                /* Boot video info to be filled from MB2. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
         call    reloc
-        add     $4, %esp
 
 #ifdef CONFIG_PVH_GUEST
         cmpb    $0, sym_esi(pvh_boot)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 94b078d7b1..707d9c5f15 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -176,7 +176,7 @@ static multiboot_info_t *mbi_reloc(uint32_t mbi_in, memctx *ctx)
     return mbi_out;
 }
 
-static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx *ctx)
+static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 {
     const multiboot2_fixed_t *mbi_fix = _p(mbi_in);
     const multiboot2_memory_map_t *mmap_src;
@@ -185,7 +185,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
     memory_map_t *mmap_dst;
     multiboot_info_t *mbi_out;
 #ifdef CONFIG_VIDEO
-    struct boot_video_info *video = NULL;
+    struct boot_video_info *video = &boot_vid_info;
 #endif
     uint32_t ptr;
     unsigned int i, mod_idx = 0;
@@ -290,12 +290,11 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 
 #ifdef CONFIG_VIDEO
         case MULTIBOOT2_TAG_TYPE_VBE:
-            if ( video_out )
+            if ( video )
             {
                 const struct vesa_ctrl_info *ci;
                 const struct vesa_mode_info *mi;
 
-                video = _p(video_out);
                 ci = (const void *)get_mb2_data(tag, vbe, vbe_control_info);
                 mi = (const void *)get_mb2_data(tag, vbe, vbe_mode_info);
 
@@ -321,7 +320,6 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
             if ( (get_mb2_data(tag, framebuffer, framebuffer_type) !=
                   MULTIBOOT2_FRAMEBUFFER_TYPE_RGB) )
             {
-                video_out = 0;
                 video = NULL;
             }
             break;
@@ -346,8 +344,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
-            uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
 {
     memctx ctx = { trampoline };
 
@@ -357,7 +354,7 @@ void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
         return mbi_reloc(in, &ctx);
 
     case MULTIBOOT2_BOOTLOADER_MAGIC:
-        return mbi2_reloc(in, video_info, &ctx);
+        return mbi2_reloc(in, &ctx);
 
     case XEN_HVM_START_MAGIC_VALUE:
         if ( IS_ENABLED(CONFIG_PVH_GUEST) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:53:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:53:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816779.1230922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBOQ-0002or-IW; Fri, 11 Oct 2024 08:53:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816779.1230922; Fri, 11 Oct 2024 08:53: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 1szBOQ-0002oe-EO; Fri, 11 Oct 2024 08:53:02 +0000
Received: by outflank-mailman (input) for mailman id 816779;
 Fri, 11 Oct 2024 08:53: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szBOP-0001pW-2m
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:53:01 +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 3757dd8b-87ae-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 10:52:59 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so252160966b.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:52:59 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc290sm186131566b.155.2024.10.11.01.52.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:52:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3757dd8b-87ae-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728636779; x=1729241579; 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=PONmpVj452UNcuxdCaXQokIwfePg1HbIGVi4eT66zNs=;
        b=C7ffj/P5FiOg6xnw0n5tFedXMCE1+QR4Rs83uJwo8ORWiWUJ6OxCyHttoAveZve9Jz
         Zn3s25prHxGxLeDckTBl199JdLMipVrvpKtdWxu3p+R5P7r9ZLwc0EBHDTkMMBnQCuoL
         jL9lIzez/4ecsr7cCxgtnwKSllOCwWq2P9mDU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636779; x=1729241579;
        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=PONmpVj452UNcuxdCaXQokIwfePg1HbIGVi4eT66zNs=;
        b=f0xW0/SNnmde5bNEjOvFIINwoH6HKHI0/B756qjDQgnN+vhXoBEtFT9X9dca+yRXYB
         nacIGwIUwwSZ0Lb9oJAGC8CsjMIwcMLQ0CvOvcV1lNGjP3NKLswuHWD6If+SggfIp4RI
         McE/E1RdnmqFFY8OtNe3U50x8a3Y8AWx7MtELpzL2bbDY8NFgC2UM3aM0KRaeb/pxFZH
         RQc14BBYw/sJjgFjgzHSA9MFP2EKgQugZ+bYzIcGjShtVZ7fCkpAYSYxhuQc99rPyid1
         6KH30KA/Q01LNxcxcd9ML+85qu3bEIMh2E36EJWWduwdZCpX/k1TxG2hTx9aKAJL/Ax7
         r3bA==
X-Gm-Message-State: AOJu0YwP2NmosvuwaGFo2P8FMRflCREtBpluvlPGamRzO4jJ+3EiQMi9
	M2GpQVxec1LR5uD7au3mVjTAr9k/NG7pWxgrXckQ0hym8aMBZhaDkGWrucr+MWMQw9m0I4vu6pI
	R
X-Google-Smtp-Source: AGHT+IFcXAmr7qYJ0m5aasxdJqAhT3Ebj57sPRb/TvFys5xJg5FDBMrb/TWO2PyR5rR7fRjiGz+tXA==
X-Received: by 2002:a17:907:1c21:b0:a99:4dc1:b931 with SMTP id a640c23a62f3a-a99b95fb483mr158946266b.64.1728636778732;
        Fri, 11 Oct 2024 01:52:58 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v3 4/5] x86/boot: Use trampoline_phys variable directly from C code
Date: Fri, 11 Oct 2024 09:52:43 +0100
Message-Id: <20241011085244.432368-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241011085244.432368-1-frediano.ziglio@cloud.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order;
- avoid useless casts.
---
 xen/arch/x86/boot/head.S  | 6 +-----
 xen/arch/x86/boot/reloc.c | 8 ++++++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 5da7ac138f..dcda91cfda 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,13 +510,9 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Get bottom-most low-memory stack address. */
-        mov     sym_esi(trampoline_phys), %ecx
-        add     $TRAMPOLINE_SPACE,%ecx
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
+        /*      reloc(magic/eax, info/edx) using fastcall. */
         call    reloc
 
 #ifdef CONFIG_PVH_GUEST
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 707d9c5f15..e50e161b27 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -19,6 +19,9 @@
 #include <xen/kconfig.h>
 #include <xen/multiboot.h>
 #include <xen/multiboot2.h>
+#include <xen/page-size.h>
+
+#include <asm/trampoline.h>
 
 #include <public/arch-x86/hvm/start_info.h>
 
@@ -344,9 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
+void *reloc(uint32_t magic, uint32_t in)
 {
-    memctx ctx = { trampoline };
+    /* Get bottom-most low-memory stack address. */
+    memctx ctx = { trampoline_phys + TRAMPOLINE_SPACE };
 
     switch ( magic )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:53:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:53:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816780.1230932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBOR-00035k-Qj; Fri, 11 Oct 2024 08:53:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816780.1230932; Fri, 11 Oct 2024 08: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 1szBOR-00034x-MP; Fri, 11 Oct 2024 08:53:03 +0000
Received: by outflank-mailman (input) for mailman id 816780;
 Fri, 11 Oct 2024 08: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szBOQ-0001pW-2k
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:53:02 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 37ceffee-87ae-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 10:53:00 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a99b1f43aceso167644966b.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:53:00 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc290sm186131566b.155.2024.10.11.01.52.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 01:52:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 37ceffee-87ae-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728636779; x=1729241579; 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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=OLnUT6Yitv2Gtmooe6pGIdG9k9ScqxrHgy6OnIZ0Jn4fMF+UW9SUqeekj2+7C7zysL
         L0qQlGvFWchbTqabaNWldqDXQMcCZNiPoh7zVMV8ibCNFv1dgh0Z8N8hxmSK1y7nxy+w
         5Sr+LwP7Usykym7mJF96gLm+XJ+VgRv23ogF8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636779; x=1729241579;
        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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=mC9hMl2z6RZdEDCjw4aQS4OI95NStH/MGHzM1QSshnyRWo0g1FGRAKSZp2hqxO+1kM
         +GEMMkySimaXbFg1dN/Hip0UTOjzCSXKcQkfeS2dXnCoaHbzQOL/xeM+dVBvV9/Ie4Bn
         OkFLjmT4xbbBQFGbgffxOJJh+WL18euV0rZzXB0ZIc2W781I7GArHVbNFHf+n+tjJbVV
         O6n0aEylgaJn/5CctbK4a46i78spasG0/zkmSy53CSjeaEh0lyQBuRr3bt1LPNlOxoM2
         sIJmbuZYU2uTDs3BzlZlXjr2WAmwchpSl8DjcDdYe1WoopJmoZS/0cj+5ODu4GkLpXjr
         xwQg==
X-Gm-Message-State: AOJu0YyH+NUfLSBlsG2q8cM+ITVqI/yXrVQE+0mv2mAPdWpqoc1w3TBx
	QecKFJ4QpBvPEMvkZ+7w4CYGQz+c4EE1eXrgPIpC9pa0Q4hSkVIw3ixdTJQLFBaW8UA4qJrdA2S
	Q
X-Google-Smtp-Source: AGHT+IGBOYE4zyCRUvPPmI/UkTNGIfxKjFn2FgdW0kCrdoLIEAb+RPQdUsb4nxpLbmx23vbnvusOqw==
X-Received: by 2002:a17:907:3e9f:b0:a8a:8dd3:f135 with SMTP id a640c23a62f3a-a99a10edd5dmr494381266b.14.1728636779566;
        Fri, 11 Oct 2024 01:52:59 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v3 5/5] x86/boot: Clarify comment
Date: Fri, 11 Oct 2024 09:52:44 +0100
Message-Id: <20241011085244.432368-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241011085244.432368-1-frediano.ziglio@cloud.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/reloc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index e50e161b27..e725cfb6eb 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -65,7 +65,7 @@ typedef struct memctx {
     /*
      * Simple bump allocator.
      *
-     * It starts from the base of the trampoline and allocates downwards.
+     * It starts on top of space reserved for the trampoline and allocates downwards.
      */
     uint32_t ptr;
 } memctx;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 08:54:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 08:54:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816808.1230941 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBQ3-0005Jt-4R; Fri, 11 Oct 2024 08:54:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816808.1230941; Fri, 11 Oct 2024 08:54: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 1szBQ3-0005Jm-1f; Fri, 11 Oct 2024 08:54:43 +0000
Received: by outflank-mailman (input) for mailman id 816808;
 Fri, 11 Oct 2024 08:54: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=rzrJ=RH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1szBQ2-0005Hd-9O
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 08:54:42 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 73a2a020-87ae-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 10:54:40 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a994277b38bso106065466b.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 01:54:40 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c937156781sm1712575a12.56.2024.10.11.01.54.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 01:54:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73a2a020-87ae-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728636880; x=1729241680; 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=EVqqV8bbP0vqZxsA2NHfVq60VXKBmC8xzX4oMOGwDjo=;
        b=Fy4wXjFBiSYFOD2d1lus4odLsOgh5bHYrfJr+lfQNqWmqFdJ9IcHgzfsZ/7wVMpYHV
         uLX1TMKOI+c6v4CnQDdUOLIaedoWTL3AwWdp9o9kzW5CGm/GYl5pL9l4KQINt1DPvV45
         j+K11NXloPD0QuMYE03NCff6yJI1N1Vr5GMKKAyu54RLHAMAjKFE3VFIFuybrf6Sbz1H
         ovFoJMQHagivLwmePjBu0PhlJRTNl4Aij6BLXm90Paj0RSGUw+3fKfJfJ5OhAQ784dVl
         PwU3Qe78hz4tCzX3uT9KgSPw2yO6eihBfkGT29L5EiNj8KPho9DJYj80M//goH0HpzeP
         ZhBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728636880; x=1729241680;
        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=EVqqV8bbP0vqZxsA2NHfVq60VXKBmC8xzX4oMOGwDjo=;
        b=L4c668nWCwOQ8+NMLsCMkHNm3DEoRR6hT2RoOFfs/BJlwLE2mao6tuGRdVtOH9tJ/q
         9P0eCs/sX/NVQX5cA2ywx2nrEYWY6afsascwFFx4yxbjnFl+JMFrpszdSC+L5Hl2ZNvQ
         9K9+/XuygbIQF4nkJZvVTvGzavVOzbV9yCZHtm8z5vv0qpGheWohaY4EaAp9Pn5I4Yxt
         rBjSO5Q4/6svHDI1PwwWTvzGSmhBZLXaMm0iCelc9j+9eWR6x303UzduQPuog62IxaT1
         lnsEe5pBC045hdnLRvay9w1UqCSu1OQW4+yHqOwp7+BmaYH7aiHxZYz1iXyyp7xXCwiw
         pWdA==
X-Gm-Message-State: AOJu0YxmGrOwLlm7db98Whr896Wr+44aeIYbv2TrcSgnU9utDURJe2Rs
	OqOsDxJJb8OnOsMctz5OOCEDYmxhga1ZMWxaQ23RUKla11Q32fz9m5PaxhnkDA==
X-Google-Smtp-Source: AGHT+IFdCYEySFaAL2Q32bJrB2QP+f1I1PhmuHc4V7q3/BGmRtBabQTghb5XU7NgxOUjqBrA7M8lZg==
X-Received: by 2002:a05:6402:354f:b0:5c8:9f44:a0b2 with SMTP id 4fb4d7f45d1cf-5c948c8834dmr1938980a12.5.1728636880095;
        Fri, 11 Oct 2024 01:54:40 -0700 (PDT)
Message-ID: <318bd8a4-a349-4e7b-8653-6995d5f9f125@suse.com>
Date: Fri, 11 Oct 2024 10:54:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
To: Jiqian Chen <Jiqian.Chen@amd.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
References: <20241011034227.1278144-1-Jiqian.Chen@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: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 05:42, Jiqian Chen wrote:
> @@ -1757,11 +1756,19 @@ static int __init xen_pcibk_init(void)
>  		bus_register_notifier(&pci_bus_type, &pci_stub_nb);
>  #endif
>  
> +#ifdef CONFIG_XEN_ACPI
> +	xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
> +#endif
> +
>  	return err;
>  }
>  
>  static void __exit xen_pcibk_cleanup(void)
>  {
> +#ifdef CONFIG_XEN_ACPI
> +	xen_acpi_register_get_gsi_func(NULL);
> +#endif

Just wondering - instead of these two #ifdef-s, ...

> --- a/include/xen/acpi.h
> +++ b/include/xen/acpi.h
> @@ -91,13 +91,9 @@ static inline int xen_acpi_get_gsi_info(struct pci_dev *dev,
>  }
>  #endif
>  
> -#ifdef CONFIG_XEN_PCI_STUB
> -int pcistub_get_gsi_from_sbdf(unsigned int sbdf);
> -#else
> -static inline int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
> -{
> -	return -1;
> -}
> -#endif
> +typedef int (*get_gsi_from_sbdf_t)(u32 sbdf);
> +
> +void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func);
> +int xen_acpi_get_gsi_from_sbdf(u32 sbdf);

... wouldn't a static inline stub (for the !XEN_ACPI case) aid overall readability?

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 09:03:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 09:03:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816845.1230952 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBYq-0000YR-Ul; Fri, 11 Oct 2024 09:03:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816845.1230952; Fri, 11 Oct 2024 09: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 1szBYq-0000YK-Rv; Fri, 11 Oct 2024 09:03:48 +0000
Received: by outflank-mailman (input) for mailman id 816845;
 Fri, 11 Oct 2024 09:03: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=DtJ7=RH=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1szBYq-0000YE-3d
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 09:03:48 +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 b9730cb0-87af-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 11:03:47 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-53995380bb3so2499976e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 02:03:47 -0700 (PDT)
Received: from localhost ([213.195.123.53]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c937153a6asm1720066a12.49.2024.10.11.02.03.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 02:03:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9730cb0-87af-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728637427; x=1729242227; 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=okOlXG4J9xUL0uC9JriYdFv4b1RpwRwnLeB8vH2XZn8=;
        b=EUekZxBSnpBT3OvDZ2/AuMDgie1GDul12RIbW3GxMwKBq/bljxPoAEt0/n/Zbv9e1q
         Ey/0V4PGA9XYD8vcAfJcnvhWUkeuQNejAqbfGBdI03Z3+wPm7dDhI6qBP3vC4IJ9S3rq
         Zi4oN7BFG69IOCX+tPCwQOubtuwIVxT4ezO2k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728637427; x=1729242227;
        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=okOlXG4J9xUL0uC9JriYdFv4b1RpwRwnLeB8vH2XZn8=;
        b=IbB8LJImBldwcYKglXeepycbsPJ9kyEWkUDlGtJiKx5nOe1rbxgoAYnT4rRWKEik6E
         yEalPCSSDhQndpJ3TrqCeZfPoMcnsbJn7mJTvZufJZlKlyAuRc5ST4mqoevMZIN/uqrN
         gXKSI3haPialn/JKiI/k3W5XBTXsUJun7VQnthHeKFqS4x3PoG7/62+TLH4ZXLy9WvDD
         1TOA5+w7mGQyYpQ/r6FJjwaluMo5m4KK9apc2JgTAWXdkLTqr3HLmXDPoFLBXoD3Xctu
         0owiKNWWAlbyaF1EXAy9jFGiNU53EtutXdetueJ4EouXkPJf8/XhT5Au+PabAznvx7LF
         0Uig==
X-Forwarded-Encrypted: i=1; AJvYcCU2jqZo2Fw4ryFIcq515lXw8kodMivabwF+0MSVGWqdc08rcDsaxp/14IfwTnM9HWxmk2gOi6feepI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzfhHWrSJe+2IIbc470MJnWf7QoltdQIach8wlO5lxWwOwlRswt
	pC8JJFZDDapI8PI27FQtuI+kG83HmwpJ2RHGiYjp7IoLAADotWmZckrkXm2fnGA=
X-Google-Smtp-Source: AGHT+IGbY0jsfJtLwqSiLN2lrWW7Pxcc68LMkpzJl9mlG0vLThx5eHnOWovU9DEk0E6A+ARml/Iriw==
X-Received: by 2002:a05:6512:438a:b0:539:de9c:c890 with SMTP id 2adb3069b0e04-539de9cc99emr651755e87.42.1728637426720;
        Fri, 11 Oct 2024 02:03:46 -0700 (PDT)
Date: Fri, 11 Oct 2024 11:03:45 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
	xen-devel@lists.xenproject.org, consulting@bugseng.com,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v2 4/4] xen/pci: address a violation of MISRA C Rule
 16.3
Message-ID: <Zwjp8V09rqz-hsYZ@macbook.local>
References: <cover.1728308312.git.federico.serafini@bugseng.com>
 <c662cae0f545a4e4e3921ae13bf69dc02884d9ee.1728308312.git.federico.serafini@bugseng.com>
 <ZwjlurKU7FrFvObG@macbook.local>
 <5d3217c4-253c-41c1-bfb7-1e926f9f3753@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <5d3217c4-253c-41c1-bfb7-1e926f9f3753@suse.com>

On Fri, Oct 11, 2024 at 10:48:13AM +0200, Jan Beulich wrote:
> On 11.10.2024 10:45, Roger Pau Monné wrote:
> > On Mon, Oct 07, 2024 at 04:16:19PM +0200, Federico Serafini wrote:
> >> Refactor the code to avoid an implicit fallthrough and address
> >> a violation 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>
> >> ---
> >> Changes in v2:
> >> - improved description.
> >> ---
> >>  xen/drivers/passthrough/pci.c | 4 +++-
> >>  1 file changed, 3 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
> >> index 5a446d3dce..a5705def3f 100644
> >> --- a/xen/drivers/passthrough/pci.c
> >> +++ b/xen/drivers/passthrough/pci.c
> >> @@ -170,8 +170,10 @@ static int __init cf_check parse_phantom_dev(const char *str)
> >>      {
> >>      case 1: case 2: case 4:
> >>          if ( *s )
> >> -    default:
> >>              return -EINVAL;
> >> +        break;
> > 
> > Would you mind adding a newline here between the break and the default
> > case?
> 
> I actually took the liberty to do so while committing (already a few days
> ago).

Oh, thanks, should have looked at xen.git before commenting.

Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 09:21:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 09:21:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816863.1230962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szBpM-0006J1-E4; Fri, 11 Oct 2024 09:20:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816863.1230962; Fri, 11 Oct 2024 09:20: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 1szBpM-0006Iu-AD; Fri, 11 Oct 2024 09:20:52 +0000
Received: by outflank-mailman (input) for mailman id 816863;
 Fri, 11 Oct 2024 09:20: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=UIMz=RH=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1szBpK-0006Io-PH
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 09:20:51 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20612.outbound.protection.outlook.com
 [2a01:111:f403:2009::612])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1a164306-87b2-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 11:20:49 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CY5PR12MB6369.namprd12.prod.outlook.com (2603:10b6:930:21::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Fri, 11 Oct
 2024 09:20:45 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8048.017; Fri, 11 Oct 2024
 09:20: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: 1a164306-87b2-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=fBUMMITfz+myXGzv4ocXm+EsdbWq8DbWGZa67tpu0iO8mBBRy74Pbq/rjGSY1VJE383MFbOqWr/U+c3XHm8SwkibWXl8rI7ahxc7CQseD6dbJB8xQOThwuf4JonWLH7zYI9XH88L3vuc9YpGvYgQcEWaXvYTrTrQPZyyk1NERSvMDz1nKQiEvlVZMXBwBT38N1v7sDGBFdQ/Mn4WN+X7Ys01+r5HiOHcZwtmuuMkZmfinpHYmcinXVVoaD47zoMF9XhtPbpcaRH2neo4faILSlPWqLYNupj86p06wSNZny2ilsT2h0ySeb442kPK2wW7dP76yTIE5TuDpt1YMBRawA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=JAcogLLWuen7SLzeIXetCTwzevRDWH7EtzOuPvFYjIk=;
 b=jdQUg5JuZnvmC3feJAmTn3JOmiMR3s948r04z+lYq6CIU+1WXxltM7+3RwQCmdqsvq7WuTzJhehcwe1dipSIhx0EHIuepd1I+5aisWEpozQ8fk1BSl8gCSqFwoWKJeWhW0rd3ScLXlYxkwTLAfuL8DGmHff1BM31oDyTXxfnICwVQnNGy5xn83hc23VDUfJe7OSDa/VQ/pSdiXHad8FoYtQfh9YDzmtVn/QvKK3v26OyGzcwS6oOzqNWwodgSK9brHobxfPKpUcPlQKtJ70xalRJ6jPXWrCfaLZUiCiXDjxpk6hr5In0RwQuqjQmVMkv9A8ZJIUtZrkYq+dvawuRjQ==
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=JAcogLLWuen7SLzeIXetCTwzevRDWH7EtzOuPvFYjIk=;
 b=uA/Ym3sXSzWHDt2XiWe7gNOO+CAH6/od5xOBrKHZcW2oRD7+gGh/y6zeM2ZPAfPVzQFr824BVdxYY9GzTNYg41vjk79W905gd2WMbqMXdHnasVLekZKRup5F4lf5bi3WNqBKaq5uh4xn7zZFNrVyYCL9WM5mReXMwbdpB1MTYAI=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	=?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>, Juergen Gross <jgross@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Topic: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Index: AQHbG4+3Lfp3cJlJ4UuqoaLQId+ES7KBP0mAgACK34A=
Date: Fri, 11 Oct 2024 09:20:44 +0000
Message-ID:
 <BL1PR12MB5849EFA99B7F0C55D201738AE7792@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <318bd8a4-a349-4e7b-8653-6995d5f9f125@suse.com>
In-Reply-To: <318bd8a4-a349-4e7b-8653-6995d5f9f125@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8048.017)
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_|CY5PR12MB6369:EE_
x-ms-office365-filtering-correlation-id: 2fd14600-e7ac-4077-e95d-08dce9d5fc50
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?ZjFDaFZZRWFqOVN3MzdkdDdWcy9ESldyWjBnVWRRU2UrdmxuelM5ZFBXTS9E?=
 =?utf-8?B?eWpvWHBDaWxnZVp6L3o5dHVJVFZING8zb2d1d1BrRGtoSVVzSjhWN1lBSlA4?=
 =?utf-8?B?c0MxYlBrRVlseHBObk5jRXFZSjJMK09WSlJFMkFmN0VDV3ptUGttZk9HaUxt?=
 =?utf-8?B?L29sOTk3SlNBU2VOT1NXV0IzWkY5L0h4M2dRZi9xY2JrbWd4Qm4rN0kyQU83?=
 =?utf-8?B?cTNrc3pWUTVVTkFxaG5VU2hhYlkvSXBSNHZscDV5WkFxRTI0dTIzTVI5a0Zo?=
 =?utf-8?B?MW42QWZYVmRIeitRKzJ3cm90K1VqalB3UExXMjNLbXZFQ25sa1dvZXg0TDRa?=
 =?utf-8?B?UG9FRUhvWXJEM2UyQmdzdEVrNlF5MmhEMUZuTVRsTWJDeXo0bTRJL3drcXpU?=
 =?utf-8?B?UDc0V0lCTmMyQVNndDFGOTY5dUw3eFgyRGl3SHNqWUZrY0k5ek44MTltZUM4?=
 =?utf-8?B?dld5NjBsRHZTNkdwM25XR0VUd2UweEUrY0RZTCsySEhkYnkyZVR1V2VvdnBW?=
 =?utf-8?B?YUwvckFhck9tWUNkQmZzcTUyQjh0VHRtbEh2aVFVZm5Ja2xGS0ZNQjZSbU1V?=
 =?utf-8?B?Z1hmM2g5a1hUWWZqUGZhT2ZCZHEvYmxQQ3ZHN1RENmczNkZpUXVCYmZ6R3d2?=
 =?utf-8?B?MnRkZEVNUGRMbkRkWmJ2UEZ3c3RxeG5oWERKbFJPZGcrUFBmQTdpL0VKcVNv?=
 =?utf-8?B?aW9EeUxpSy8xS3A4VDVxZFBxNytnV3NzK0tJNDVlYUUwT1lKZ2xCNDB1TXF3?=
 =?utf-8?B?My9NakFzeFFCWXFrbVhoamJJYTBWN2tMbWdsQ3U5MDZQWGNDMUJXSUc2Zjdy?=
 =?utf-8?B?SmF2d1lFNEt3ZmFGRjB3VS96bDZoYUtZYzFWOUpBUzgzUUlMMWVaTWtSMGJl?=
 =?utf-8?B?T2N6Y1dSMVJhbklqSzRra3VsNnBsSHVYT3g3ME1la2cyTGgybDUxRHhUN3Ja?=
 =?utf-8?B?RmVKYVR4V2VaQkMvRzVoYkI1d2FrWGlSRGlTUTBpZGZITTFFRndKTXFJR1E4?=
 =?utf-8?B?UXAxK1BWYmFOWG56ZzZmMVBYUVFQdXJTd3BVR3J1UThicFhKSVVFZGJ4SitU?=
 =?utf-8?B?TzVGQWRBQml5UWpvNjNpRUNmbDZjYWVwM1pnZnNTcElQOTdaWEZVR0xlbDBh?=
 =?utf-8?B?dGFnREx4N08vVmlhUG11Nm8ra3ExME83NndvTGhVY1lLaTREaEx1a09sMHhX?=
 =?utf-8?B?UU9MdXFCbEtvekVtY29zbXlHU1B2L1ZIZkR1M0NLaDI0UVJkTExOUUtYZFRl?=
 =?utf-8?B?TGF1RlV5V3hsazRlaVRHUk0ybzhwVXAvaGQwVjF0eEJPZlFCdXpyQnJ1YXZ3?=
 =?utf-8?B?WUw1YXpzeitrZHlnVDY1czFPcTVseEhOb2FlYkRwdUdwYU1vZ0xFdVZCSm9S?=
 =?utf-8?B?RzdkS3I0aHlydlFSeXJEUUxOdjlTSW5lZlI5c2ZVSE9CV1dDUUc5aWVYcWRv?=
 =?utf-8?B?a2NTSEpDb2ZuN2JXdkZjSVp6bEJXdk9YSUFWTS9zaURZMHllb0QyblErYnlj?=
 =?utf-8?B?NEd0cWxjVDNjZ1p2MnY2aUFua0tDajhHRyt6OGRZejh6MDUyUmkySk5YeWRC?=
 =?utf-8?B?d2lyQlBuYjZieGZkQ3FGdWkrcG91MnREVmNIc3dmT0lDSW8zWjRKN245NFZq?=
 =?utf-8?B?aHc4QU5CWElid1dRK01LV1JLR1QvRTV3Uy81VXVjY0tGbWdKMkZ4eE11VjJW?=
 =?utf-8?B?c3E3NDBmbCt2OExIMEVaRE1MR3d0Ynk3RWpKNSt0MmRhSGlpR1ZZcWh6YmVm?=
 =?utf-8?B?NHowVjU5RlR5WW9QUWJCQjZxdTMxVTZBQ2VGTWszU1VoZ0Ird0NCck82Y1pj?=
 =?utf-8?B?cXJrT1RiT01FMlFvS0JQQT09?=
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:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?SFFTeHpjVlZxak5qT2JGQ1EzTEx1WWRTemJCdGRNTVRFcDFaMHQrSktKWDFE?=
 =?utf-8?B?OGljZ3RFWUk3WlYrRHFpSjFRY0QvVXNqOFdpbno0V3A4OTdWZ3RHY3R4TDVE?=
 =?utf-8?B?SUNkK1NmQjhOZ1JpY2JwYitnWEgyWnRHV3hDTE5ScVYxamphRHAxZTdlZlR3?=
 =?utf-8?B?RldjKzZPaVJJL1BaQWlKVjYxK2hudEIrd1BLaTVKSGp1blphRktPUEJrSk9B?=
 =?utf-8?B?Mm1iUFpBZnAzOUozNWRjYXJOZm9zZjVJaXlHN01wRUFmaGtMSDlaSmh1S3pj?=
 =?utf-8?B?QjZxRXAxak56NXNjQVVpL21FNUdDd1hmRzBpRDhYdmVRN3FIQkpDalRNU0I5?=
 =?utf-8?B?b3o1elpWUzdGTXI4ZUIvaXBRM3VrZHVVdXZXKzlCZEMyZ0VxWm05OWtOUG5a?=
 =?utf-8?B?c0FNeTl3REg3Z1ZpcWVUU1hiSnhYL2dxdlF3RHdZV2RsMTRacXhBd2k0OHZF?=
 =?utf-8?B?MEdlRmtxVk1WMVR6REd3Zml6UkRkV2thTHpodGRsUG02cHcwZFRtb3RURVBF?=
 =?utf-8?B?andreGFJRjN5TTlIZlRRVTlwSmZ2cjBmK3lCU1ZBT0tzenNZd3BxaTNISUdE?=
 =?utf-8?B?dWRITVptbVVpSnlOZ0RoWW1aa2l5SzdReFRRR2hxQmNLUk9DR01VcEpwalB2?=
 =?utf-8?B?UTA0ZkpPZ2ZpNnFSaldhU0hOSi8yTTFoNCs0UU53RWFCdEJlUHA1UlBWWE43?=
 =?utf-8?B?Q0V1ZnJDTXNhOXhsSHFSS3FyZ2xTN2tiZlZzekRhckRZNW9ZY2xhb0lINkUw?=
 =?utf-8?B?MTluRkNoZ0pjRmxPc2FscG0xWDM5eWYxbFdnNG9NKzEzQlFSNG9sWmducEdO?=
 =?utf-8?B?Y2ZqdTJGNjBtSUpSMjU5RG05RlBXV29ya2FHTWNqN3FoWWpqWEhxMWlhZSsw?=
 =?utf-8?B?SDVtZlhlRWJtU2tkQm0za2R1WnRycmwwbmpTallLTFIrMlRrdjBBSWVtL05k?=
 =?utf-8?B?U0RZL0V5eWh6UEVPZERFd2Q0aEJIOCtoNXJmWGdjRVkwUkxmZFN2a09iVG9T?=
 =?utf-8?B?R2RKeWdOdEtSUHQwbk5MVzZYNFJabDlITy9rVWV2VGpvUEI0WURNM1l0WmFP?=
 =?utf-8?B?R1pWeTlmaEp6aUFCZ0gxS0huZ1NsRjJiOXh1NDNHc3lJekQwSGh1QTBqVFlW?=
 =?utf-8?B?Rm5DYTViVTc5ZEpUQlQwc1MvYUliTlIrSVoxbGdpVlI5ekQ0OEFKdUVnbXlh?=
 =?utf-8?B?QnpKRTZDMFZZMEZ2R0hKOEZQT3FMNGhMY3ZxbXZUZFN5ZGJHaTJaOEhINlF6?=
 =?utf-8?B?YnlkUDZnWGFPcHRXSUlpOVJzQTVNVzFYSVBYWTdnQjR0MCt4NjJqUFNJTjlX?=
 =?utf-8?B?enk2ektoL1JKVXVTTFRTVzJmV0NTWURZbGFUU3NRUWZwbGZDUXV3U3p0bWl4?=
 =?utf-8?B?SGI2RGZ0V3p3QjFuQ1gzTUw2aHVWbHZ6NjM3RU1NQ3l1ZVR1K3VrczNrL0tZ?=
 =?utf-8?B?R0haUDB4R0VBeXZwdkpIUHFFRGlTcFQ1ZFoyS21IOVRpaWFUNHR0b3ZMaUNZ?=
 =?utf-8?B?MURvNnkrNlkvY1BpRFJucnV2dzcrZUZBMHJlUzRJZ1h5d2hHU3E3YVRBZUtV?=
 =?utf-8?B?T09sK0xhRG5NN0R6RU93RnQzT0xXUG1pRG5sU0pONHhMNTNvSWNZSCsrTnFT?=
 =?utf-8?B?cGFwWi8xajQxVTlsMS9YQzNBQW9kNDNmUzJYT0cxOHNXZURSc3lsN25IR0dk?=
 =?utf-8?B?UU8xejdPV2hZT0E5ZFh2M3J0U1NLT0o2anN6U055NkVSQ1pjQWFmY1BMVEpW?=
 =?utf-8?B?RlR0MUREcXkrMk1GSk0zaGJiWmQ4SDAvK0RiN3hESjFHV1MyQkhMOTFoRnZk?=
 =?utf-8?B?RE82Q1hMa05GVEJRdHRQR3JSc1hOcER3SkFZYWZCam1qbllHUGxIQnNmQUZH?=
 =?utf-8?B?VG91NjE1MmlSZndHWk1HL1NYMkVtQnlEZmx1OFVSZW9nQlZDNUhtcHhhL1NN?=
 =?utf-8?B?Q0lBQlY5UXlVbHdacXVhV2V3RXZzVWl1SDIxOEF3aUYwekJkbDN4U0J3cmRm?=
 =?utf-8?B?NUhpZ3ZtRWhWcjd2aGRPb0hOakNmZjVHOE8yS2ZHQWpjbkp4ZEdoWEpzNFpO?=
 =?utf-8?B?cGJsSGNrcmhYV1BXS0hIb1VwT2xOcFcyaXcxa094b2Q5Vy9uRFdrMDg1OVNl?=
 =?utf-8?Q?iAHs=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <98956CD51BC42D4391E712040B050B98@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: 2fd14600-e7ac-4077-e95d-08dce9d5fc50
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2024 09:20:45.0062
 (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: 3r4K6IRR593yG45EW0jF5qBt4Uf2E9qXup9Ks/+Zs5tlcz2UsaqsPlV4mF9ZRG4YWiL1AxYM4gOrsXSotqyMWQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6369

T24gMjAyNC8xMC8xMSAxNjo1NCwgSmFuIEJldWxpY2ggd3JvdGU6DQo+IE9uIDExLjEwLjIwMjQg
MDU6NDIsIEppcWlhbiBDaGVuIHdyb3RlOg0KPj4gQEAgLTE3NTcsMTEgKzE3NTYsMTkgQEAgc3Rh
dGljIGludCBfX2luaXQgeGVuX3BjaWJrX2luaXQodm9pZCkNCj4+ICAJCWJ1c19yZWdpc3Rlcl9u
b3RpZmllcigmcGNpX2J1c190eXBlLCAmcGNpX3N0dWJfbmIpOw0KPj4gICNlbmRpZg0KPj4gIA0K
Pj4gKyNpZmRlZiBDT05GSUdfWEVOX0FDUEkNCj4+ICsJeGVuX2FjcGlfcmVnaXN0ZXJfZ2V0X2dz
aV9mdW5jKHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYpOw0KPj4gKyNlbmRpZg0KPj4gKw0KPj4g
IAlyZXR1cm4gZXJyOw0KPj4gIH0NCj4+ICANCj4+ICBzdGF0aWMgdm9pZCBfX2V4aXQgeGVuX3Bj
aWJrX2NsZWFudXAodm9pZCkNCj4+ICB7DQo+PiArI2lmZGVmIENPTkZJR19YRU5fQUNQSQ0KPj4g
Kwl4ZW5fYWNwaV9yZWdpc3Rlcl9nZXRfZ3NpX2Z1bmMoTlVMTCk7DQo+PiArI2VuZGlmDQo+IA0K
PiBKdXN0IHdvbmRlcmluZyAtIGluc3RlYWQgb2YgdGhlc2UgdHdvICNpZmRlZi1zLCAuLi4NCj4g
DQo+PiAtLS0gYS9pbmNsdWRlL3hlbi9hY3BpLmgNCj4+ICsrKyBiL2luY2x1ZGUveGVuL2FjcGku
aA0KPj4gQEAgLTkxLDEzICs5MSw5IEBAIHN0YXRpYyBpbmxpbmUgaW50IHhlbl9hY3BpX2dldF9n
c2lfaW5mbyhzdHJ1Y3QgcGNpX2RldiAqZGV2LA0KPj4gIH0NCj4+ICAjZW5kaWYNCj4+ICANCj4+
IC0jaWZkZWYgQ09ORklHX1hFTl9QQ0lfU1RVQg0KPj4gLWludCBwY2lzdHViX2dldF9nc2lfZnJv
bV9zYmRmKHVuc2lnbmVkIGludCBzYmRmKTsNCj4+IC0jZWxzZQ0KPj4gLXN0YXRpYyBpbmxpbmUg
aW50IHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYodW5zaWduZWQgaW50IHNiZGYpDQo+PiAtew0K
Pj4gLQlyZXR1cm4gLTE7DQo+PiAtfQ0KPj4gLSNlbmRpZg0KPj4gK3R5cGVkZWYgaW50ICgqZ2V0
X2dzaV9mcm9tX3NiZGZfdCkodTMyIHNiZGYpOw0KPj4gKw0KPj4gK3ZvaWQgeGVuX2FjcGlfcmVn
aXN0ZXJfZ2V0X2dzaV9mdW5jKGdldF9nc2lfZnJvbV9zYmRmX3QgZnVuYyk7DQo+PiAraW50IHhl
bl9hY3BpX2dldF9nc2lfZnJvbV9zYmRmKHUzMiBzYmRmKTsNCj4gDQo+IC4uLiB3b3VsZG4ndCBh
IHN0YXRpYyBpbmxpbmUgc3R1YiAoZm9yIHRoZSAhWEVOX0FDUEkgY2FzZSkgYWlkIG92ZXJhbGwg
cmVhZGFiaWxpdHk/DQpJJ20gbm90IHN1cmUgaWYgb3RoZXIgZmlsZXMgZG8gdGhpcy4gQnV0IGZv
ciBtZSwgaXQgZmVlbHMgYSBsaXR0bGUgc3RyYW5nZSB0byB1c2UgIiNpZmRlZiBDT05GSUdfWEVO
X0FDUEkgI2Vsc2UiIGluIGFwY2kuaCwgbGlrZSBzZWxmLWNvbnRhaW5tZW50Lg0KQW5kICIjaW5j
bHVkZSBhcGNpLmgiIGluIHBpY19zdHViLmMgaXMgYWxzbyB3cmFwZWQgd2l0aCBDT05GSUdfWEVO
X0FDUEkuDQoNCj4gDQo+IEphbg0KDQotLSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVuLg0K


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 09:34:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 09:34:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816872.1230972 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szC1z-0000z9-EM; Fri, 11 Oct 2024 09:33:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816872.1230972; Fri, 11 Oct 2024 09: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 1szC1z-0000z2-B4; Fri, 11 Oct 2024 09:33:55 +0000
Received: by outflank-mailman (input) for mailman id 816872;
 Fri, 11 Oct 2024 09: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=UIMz=RH=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1szC1y-0000yw-9V
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 09:33:54 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20628.outbound.protection.outlook.com
 [2a01:111:f403:2417::628])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ec748da7-87b3-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 11:33:51 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by DS7PR12MB5959.namprd12.prod.outlook.com (2603:10b6:8:7e::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Fri, 11 Oct
 2024 09:33:47 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8048.017; Fri, 11 Oct 2024
 09:33: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: ec748da7-87b3-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=R4z2rIq2BLVZZsObzSlcLsjZ+YDSS2z+VoDvc9pdg7HR6uVgyIacsOwYgaf4tzKVeaHJsrb8KSI4XiLI7dCcPjBSRO71pfnk0YwBzeLYtpZTUdPRuVZRJk6hPP2b1pJIwUr9fXHJnZ3B+6/Cv3MQniTxXYahny46uV7qKrAJKE632dwpuLmNAZbxkd2I6zgbBEVdFwLv/ZGJMYeC4BjGF5yNcYCedeUJl+gtRRwTnWVlKBg1WOrYhHrPvQ2aGtpyZqo3azPsaePJF52kxxyW74rmUFau6IE0OPYYa0MQglUGLZjJQV86Blhv2GYYJpX530Wn1GngLDiyvwY2ABPLjQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jtOfM3RN79vdFK+e0pyh3Ry3z4DITZSUryAgsd+yQbM=;
 b=YfjkCDTim4+TeCBxdq0FgeA+qsrKg8+4kpPUuetLP18Aw/fqVtFU301OMnr+WchFYjwFDo5rYYz0aHjFUFWr+RoiuOSnisPRr0ZvOE76nfoLCWURVbHCBMUE8/4P6GfdGr6sn+L1GzC9oZ9VwHVcyF5N0oVHoRFMeogDXlGm98BGXBureST+aB7I+qvC/2Wj7q0BFuH05Uz/M222ScczR3CVnH1OLuTWPSjWquLsbiuJnVSBOUeE9tqzTPeJFyxxhcVSyYjfDcEhNlQnm3bf0Z+ALioznXPgsaaa44abL0KeUjj/ggU7DbooEjxF5ue8zKH2hCn7noaHj1x+uFtM4A==
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=jtOfM3RN79vdFK+e0pyh3Ry3z4DITZSUryAgsd+yQbM=;
 b=GsyBomcetffXZz/LzxiZRwvAIA/vDjM/K/nNWCXFXB9S+wlCMvUvMIFo3L8ZvtnEuvPcdHqyYFz7dlzccXCZT9pFSFtEnHciCipjD5QXoOuA/ncd2Dwuo6HD4dFCUrtwuZ/WFspOBwOvHAIvh14SxvTIsGh/qWo3hdsJZ2rB0V0=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	=?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>, Juergen Gross <jgross@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Topic: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Index: AQHbG4+3Lfp3cJlJ4UuqoaLQId+ES7KBP0mAgACK34CAAAW/gA==
Date: Fri, 11 Oct 2024 09:33:47 +0000
Message-ID:
 <BL1PR12MB584931B86739702086CDFF12E7792@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <318bd8a4-a349-4e7b-8653-6995d5f9f125@suse.com>
 <BL1PR12MB5849EFA99B7F0C55D201738AE7792@BL1PR12MB5849.namprd12.prod.outlook.com>
In-Reply-To:
 <BL1PR12MB5849EFA99B7F0C55D201738AE7792@BL1PR12MB5849.namprd12.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8048.017)
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_|DS7PR12MB5959:EE_
x-ms-office365-filtering-correlation-id: b2d78102-f822-4aa2-f733-08dce9d7ceca
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?MDFxLy85a2NDLzR3T2o3S1NXS0hGOUhXL3ZmWUhZRENOWnVUaXlKZUE1Z1ls?=
 =?utf-8?B?TXFOcHcyZHZmWTRsOTBKN0s3MXFlTklwajdiWVpwTU5XQmNqaTJlZ25SODBj?=
 =?utf-8?B?aXR2VE1lbXllTUdwV0RyZVNRT0owN21zakpyK3c0QjNZYWh4a0gwNlFwR0lF?=
 =?utf-8?B?b0lHSDBKcnp1UHhTbE9OY255QzlsY1c5UHoycWlvUnhhdnZGVmIycFhTNXJI?=
 =?utf-8?B?T1lIMTZRdWhLRWxLbEZTS0FXLzFGb0tYczgyWjY1Z3hmT3NnTTdTenljTjFE?=
 =?utf-8?B?UktZU1I0bGFmVy82ekkvU0MwVmlwTVdUTklGTlFXd1k0MnJDK1B6TldMa09x?=
 =?utf-8?B?V1MyTkwwV0l2cUk5NVZyUmxQRDg0OUlhK3M3TmhGcm4rV1BTUkJEUHdQYzhN?=
 =?utf-8?B?VTkyalR1SWNqVUJaQ2ZLbkJwN1BNbkZvVW4vT2c5WmVkcnFaamZLZW02Q0hS?=
 =?utf-8?B?NzJtY1J3S1RhVWxpSlVvYktFZEJmRUxWUFUwRjRmVDVPdlNNWjd5WUZBL2FW?=
 =?utf-8?B?OVUzclNSSzNiZEorSnNjdXFNQ2pHd3VRQ1BySnlQYmEzTWNST0ozY09VeFBY?=
 =?utf-8?B?WllPR1VyQ3owL2FoRnU5VTFKejBTbXlJYmpwNUNab1lEWDIyV1haSWVPbFdx?=
 =?utf-8?B?TGh4Y2orYUF1dm5YNmtFOS93V1ZiNHFydkdoV3oyWDc5elNTY3FuejJQNGM5?=
 =?utf-8?B?ZFczM0tsRk5TQjFGemJqVnFKOFpZbURidDZzNW1weGJyamM4TXRFR2FLcndP?=
 =?utf-8?B?S3dyc3U5SzBFdmF3MjlhVDludFVteENVRkNNOXMyL1dkVEYzb3BhbkVIbHdx?=
 =?utf-8?B?TTM5MkpLdVNoQ010Mm5SYmZmK1pHUEFCZU1JT0RXRlJzVU0xT0hwV2JOS2M0?=
 =?utf-8?B?aUVJT3h5cjZmaGtVbHJ0MEo0a1dPVzBKcFQ0UHBQR0ppUE9ZbWorUzV2RUVr?=
 =?utf-8?B?RWpuSUIwcCtMaTlDclNuY3RoM2p2U3ZETG1jWFR3aE1od2FjYmRIZzFEYjA5?=
 =?utf-8?B?YU85YWN5bkZLU3Q5b1FhVnhwSnBSMTNVc3BaemkvM3RsaVNxSDdKSFFrNVNT?=
 =?utf-8?B?NXI0QzUzSGxCakV6ME5ma0ZodmhBeTJDWUJUcWFBaGpGc25lSUhDN3pZdkRK?=
 =?utf-8?B?WVN1Tkhhd3N3bnVNRWkzdmJvZHlyK0ZJZ0E2dUdXa202bEF0a3c0aTFZWlVy?=
 =?utf-8?B?OU9acVRVYno5QnVvOVR6NERMRUdMYXB0bGluek04TXNjZ2xCQ0EvU3lRQmhZ?=
 =?utf-8?B?V0d6c292SkZheEw3RzhjZ2p5cnZsbXBYRHRxSVNxeGNMczBmR1kxSEV2NkZT?=
 =?utf-8?B?WEpjRUprdU0vRnFZeFZGUnhEYnFoQVkzempxKzFBLzRjeTBuNkdnT1pKZG81?=
 =?utf-8?B?Zng2MFQvVTZrKzZScnNzVmI5UTlqR1NPU1dYWGFhd1M4TmdtUmsxTHRmcHpi?=
 =?utf-8?B?S2RiVUtURjNhcGduMVY3RFZOSG1PZm50SHVGQ1VZL1JDSGJjOGdLVVN4d1BY?=
 =?utf-8?B?K3k5UUxUSHpIR3U5TTBXaXlGajh2dEJkOEZJRGRPdndZNkhab1h1R2ZUVWxD?=
 =?utf-8?B?NWFrancrQkd6dXZ5Qjd2d09mdzNUSGpVVnVvZmNSbjVBMkpPZ3hINTh6K1pa?=
 =?utf-8?B?V2tpMVJCRDNJcDh0TFk0RUxXdGtKZTNRM3FVU0V6ZXdoOTl3R2g0UEpxbUpp?=
 =?utf-8?B?THRKUDZScituZE9YaFgvTzYzT0dCS21IejlQZUw0M2U2aklwSTZPZVJZN05Q?=
 =?utf-8?B?Y0ljWGZ5NDZqdEVjYlRQTTNOYXJIWnVHUEI3dWRybE5jbG10djVzbWM1K3dL?=
 =?utf-8?B?Rm5rVDFlWUU0ZEV1Wll1QT09?=
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:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?YXlkQmE2WkduNlZiZTgxRFZLeGRtRkVBdG5GRWhmWDljK0dJMnJnemR3RFFu?=
 =?utf-8?B?OE5BeDkwNDBqbEhJWERFODltWSsrSHVMOEYrcHVQWkFKNE9yS2VBZWl0Tzdp?=
 =?utf-8?B?amV5V2o4OU5SLzZzczdTYURmODZrbC82cVNONzFLVGZQYitXblV1b2M2T09z?=
 =?utf-8?B?ZG9ZNTZ0NjFqWGErWHZZeFZOaWJsaUVHUFVnN3Y2L1RmNEdIQWRNMHExL1Z0?=
 =?utf-8?B?d1N6YXgrdnZIL2FxUStCMVVBN2txK1BzdHNtRWI3UXRTa3IrUHhldmlPRitE?=
 =?utf-8?B?SFd3bVFhcEJUcHJHR3NjYklQaTlxTVN1azFKYVA5akIwVWZtS2JKZzdTN2pq?=
 =?utf-8?B?QjE4KzlVeG1ibEJQMnFaTzdpWW85TVZlRGRqL0NGbkE0SkIyS212aHIzVDZX?=
 =?utf-8?B?M0oyMHZBbEVxQmdHTlFnaUhJWnFpNkhMSUxzeGxSaDUwUkVYSllhWFpjSmc0?=
 =?utf-8?B?WldaSk1YWU0ycStlMzdta0tiZ3ZVRHowSDNNQ0FZNlkzTGtqRnU2NG9DTTRj?=
 =?utf-8?B?MkRmL3pCT1E0YktiODQwZW9jSDQvSFlkejVOSW1NZmp6QWxRSm9uWlBRSDNC?=
 =?utf-8?B?Um9oYnMrRElIVUc3S1RnNFFlTWxPZTlUYVpIK0h0L0lGcXFNYVVCcGZpUXUv?=
 =?utf-8?B?UVo4TEtpa3pQWHRzRVNkTDlUWHMxOGhXTVlJRWNmaTZiTXBBQnFXVElmditW?=
 =?utf-8?B?MXQ3VCtRSzg5aXF3NzFPdFUrOUZla1YybC9GVkUxOUw3Ni9GYTlFdVJ0OUlO?=
 =?utf-8?B?MXkxdkgybnBxejQrbkRXbEdSSGw1Q29RODJ0eTFncGhiTFdYUFFwamJmYjg0?=
 =?utf-8?B?cW1KWndnU3Zsb3BSeE5jK1NGL09uNkFQanVvdFpiZ2M3aVFiVFRYa0NNK2Zo?=
 =?utf-8?B?Zks3T2hjVnUrNjVsdzFONVhLSmdZYnNoY1lITHFxQy91a1hQakhZdDhMQ2pM?=
 =?utf-8?B?TDBFMUxxaVdMdktaZVFidkNCanZsVFJhVHMzL1VCQTJCY1hYOTA3U0NTRmg4?=
 =?utf-8?B?d0FqMGF1VjZ0VGFKM2pCbW9RdTVoVXRsV0M1SmxhQXJSOUR4UWh4eHBkd1Qx?=
 =?utf-8?B?NnpzVWZVREZxakt1VjdvQjVUZ2VONHAyWkRyODY0aTkyWUNZVmFHWUo4QndL?=
 =?utf-8?B?QjF6MGpZUzFZbExIZFdEZ2xvdW43VVlIMzVYWjV3Zm1uU2xJUUhVanA1VER3?=
 =?utf-8?B?N0FTWFF0YVR3MHFhbldwQXNiQW5VREcwQWY0RXZ2dTd1MUVFcEh0Wk5Rc2dQ?=
 =?utf-8?B?QkRWYWladzhuYTl1NG1FQnRiVEpWVTRoUTBoVUJTL1lJRUpsd1FXL1RENEJx?=
 =?utf-8?B?US9CczRYKytIclh5S1ZzNlRyemQ0MTVXRTRYeUxSSHRWcmY4YXJGeSsrVjN4?=
 =?utf-8?B?M204Sk4ySnZHTVVkblA4Skx5Z2M4RUxEWU90Z1MzaHlMRE5XeEthSm9HV2Yz?=
 =?utf-8?B?NmZrSG5IRFhhLytQSTFRV2YxaEpjdzNOL1pyMjdUcTdKT29rbHlFMEo2ZURz?=
 =?utf-8?B?cUNqZkxFVGRDSDJpS3I1aGsrSEtaVjZRRGhZRTE2cjVFczdiRDZ1THl5MW53?=
 =?utf-8?B?Q0JWbjR4REFEaWx0Uld2M3BPWXdhbithcmdMb2gxOFkzaDJ1RnFCYmQ2eW5B?=
 =?utf-8?B?VUxCQnRJZzYxZ3F3NE41Y1F3Q0REUTFOOU9OTlVFUFY4TWo1TmV4Q0lEWEdo?=
 =?utf-8?B?cjgvZGJRNGlyRzRidXJ0RmZ1VXNHNFF0VnBEM1ZvWmJqN0d1RkQ0K3ZVVHYz?=
 =?utf-8?B?Mk45aUZESnJibkxLU0c0RDJxcnNZeHBaL3UxVVRYMS9zUkd3aWxuT3QzeEJZ?=
 =?utf-8?B?UWtYaFZsRm1ORzQ0ZnY5cTZYcStqeDhoVUQzcmZUQ3hHM01LR3JkRDVZTmlX?=
 =?utf-8?B?L1doc1E4YjlhWlFOcjA5ei9PUGZUdkFXMFhNQlRiTGtwN1o2Sm1HWUhJbkMy?=
 =?utf-8?B?QmFMeUo2S1NmbUo1ZzdqTWdldm15bXErWWs4dUxKakk3WW1ucWhwV1JGcDJQ?=
 =?utf-8?B?NU9NdzlKOVl4VERtQ3JXWHcvcHl3YUh6ZWxSeVlXTGMzNFVicjdHU1BaZ2RE?=
 =?utf-8?B?UU1NL0dWZ0FhM3E5VnBQaUNqMGRDSkg0MGh3YUR2Y1lTcyt3MWoxazZoU3Bq?=
 =?utf-8?Q?Vy7Y=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <7D98481052C5874ABA65C25A1A8765BF@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: b2d78102-f822-4aa2-f733-08dce9d7ceca
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Oct 2024 09:33:47.6069
 (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: LPCh1Sq1lVzVqYgpuqkhg80QYO+IrmSayV8wDib7MEbzzXP6Jl/YidNMp2vW1gQnr60+3ltkMCDwyZj5DDrnxQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5959

T24gMjAyNC8xMC8xMSAxNzoyMCwgQ2hlbiwgSmlxaWFuIHdyb3RlOg0KPiBPbiAyMDI0LzEwLzEx
IDE2OjU0LCBKYW4gQmV1bGljaCB3cm90ZToNCj4+IE9uIDExLjEwLjIwMjQgMDU6NDIsIEppcWlh
biBDaGVuIHdyb3RlOg0KPj4+IEBAIC0xNzU3LDExICsxNzU2LDE5IEBAIHN0YXRpYyBpbnQgX19p
bml0IHhlbl9wY2lia19pbml0KHZvaWQpDQo+Pj4gIAkJYnVzX3JlZ2lzdGVyX25vdGlmaWVyKCZw
Y2lfYnVzX3R5cGUsICZwY2lfc3R1Yl9uYik7DQo+Pj4gICNlbmRpZg0KPj4+ICANCj4+PiArI2lm
ZGVmIENPTkZJR19YRU5fQUNQSQ0KPj4+ICsJeGVuX2FjcGlfcmVnaXN0ZXJfZ2V0X2dzaV9mdW5j
KHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYpOw0KPj4+ICsjZW5kaWYNCj4+PiArDQo+Pj4gIAly
ZXR1cm4gZXJyOw0KPj4+ICB9DQo+Pj4gIA0KPj4+ICBzdGF0aWMgdm9pZCBfX2V4aXQgeGVuX3Bj
aWJrX2NsZWFudXAodm9pZCkNCj4+PiAgew0KPj4+ICsjaWZkZWYgQ09ORklHX1hFTl9BQ1BJDQo+
Pj4gKwl4ZW5fYWNwaV9yZWdpc3Rlcl9nZXRfZ3NpX2Z1bmMoTlVMTCk7DQo+Pj4gKyNlbmRpZg0K
Pj4NCj4+IEp1c3Qgd29uZGVyaW5nIC0gaW5zdGVhZCBvZiB0aGVzZSB0d28gI2lmZGVmLXMsIC4u
Lg0KPj4NCj4+PiAtLS0gYS9pbmNsdWRlL3hlbi9hY3BpLmgNCj4+PiArKysgYi9pbmNsdWRlL3hl
bi9hY3BpLmgNCj4+PiBAQCAtOTEsMTMgKzkxLDkgQEAgc3RhdGljIGlubGluZSBpbnQgeGVuX2Fj
cGlfZ2V0X2dzaV9pbmZvKHN0cnVjdCBwY2lfZGV2ICpkZXYsDQo+Pj4gIH0NCj4+PiAgI2VuZGlm
DQo+Pj4gIA0KPj4+IC0jaWZkZWYgQ09ORklHX1hFTl9QQ0lfU1RVQg0KPj4+IC1pbnQgcGNpc3R1
Yl9nZXRfZ3NpX2Zyb21fc2JkZih1bnNpZ25lZCBpbnQgc2JkZik7DQo+Pj4gLSNlbHNlDQo+Pj4g
LXN0YXRpYyBpbmxpbmUgaW50IHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYodW5zaWduZWQgaW50
IHNiZGYpDQo+Pj4gLXsNCj4+PiAtCXJldHVybiAtMTsNCj4+PiAtfQ0KPj4+IC0jZW5kaWYNCj4+
PiArdHlwZWRlZiBpbnQgKCpnZXRfZ3NpX2Zyb21fc2JkZl90KSh1MzIgc2JkZik7DQo+Pj4gKw0K
Pj4+ICt2b2lkIHhlbl9hY3BpX3JlZ2lzdGVyX2dldF9nc2lfZnVuYyhnZXRfZ3NpX2Zyb21fc2Jk
Zl90IGZ1bmMpOw0KPj4+ICtpbnQgeGVuX2FjcGlfZ2V0X2dzaV9mcm9tX3NiZGYodTMyIHNiZGYp
Ow0KPj4NCj4+IC4uLiB3b3VsZG4ndCBhIHN0YXRpYyBpbmxpbmUgc3R1YiAoZm9yIHRoZSAhWEVO
X0FDUEkgY2FzZSkgYWlkIG92ZXJhbGwgcmVhZGFiaWxpdHk/DQo+IEknbSBub3Qgc3VyZSBpZiBv
dGhlciBmaWxlcyBkbyB0aGlzLiBCdXQgZm9yIG1lLCBpdCBmZWVscyBhIGxpdHRsZSBzdHJhbmdl
IHRvIHVzZSAiI2lmZGVmIENPTkZJR19YRU5fQUNQSSAjZWxzZSIgaW4gYXBjaS5oLCBsaWtlIHNl
bGYtY29udGFpbm1lbnQuDQo+IEFuZCAiI2luY2x1ZGUgYXBjaS5oIiBpbiBwaWNfc3R1Yi5jIGlz
IGFsc28gd3JhcGVkIHdpdGggQ09ORklHX1hFTl9BQ1BJLg0KT0ssIEkgc2F3IG90aGVyIGZpbGVz
IGFsc28gZG8gdGhpcy4NCklmIHlvdSBpbnNpc3QsIEkgd2lsbCBtYWtlIG1vZGlmaWNhdGlvbnMg
aW4gdGhlIG5leHQgdmVyc2lvbi4NClRoYW5rIHlvdSENCg0KPiANCj4+DQo+PiBKYW4NCj4gDQoN
Ci0tIA0KQmVzdCByZWdhcmRzLA0KSmlxaWFuIENoZW4uDQo=


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 10:04:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 10:04:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816888.1230982 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szCVQ-0000DF-NQ; Fri, 11 Oct 2024 10:04:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816888.1230982; Fri, 11 Oct 2024 10:04: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 1szCVQ-0000D8-Js; Fri, 11 Oct 2024 10:04:20 +0000
Received: by outflank-mailman (input) for mailman id 816888;
 Fri, 11 Oct 2024 10:04: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=p70Z=RH=bounce.vates.tech=bounce-md_30504962.6708f81e.v1-8efad8fb96864b5d971e2d7ded9f7285@srs-se1.protection.inumbo.net>)
 id 1szCVO-0000D2-Lq
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 10:04:18 +0000
Received: from mail136-14.atl41.mandrillapp.com
 (mail136-14.atl41.mandrillapp.com [198.2.136.14])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2c06b5cf-87b8-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 12:04:16 +0200 (CEST)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-14.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4XQ2KB4GNXz705lrH
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 10:04:14 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 8efad8fb96864b5d971e2d7ded9f7285; Fri, 11 Oct 2024 10:04: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: 2c06b5cf-87b8-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728641054; x=1728901554;
	bh=tL325rHXc3QBdrp62haOYIHGJ43zT5LOupfREdCNw44=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Cw/ECgc1NdXl9aqftamyZNm/E2CXB38hYg3utntH4I0dpdnklVyZStgEqdfykippj
	 a8SznWfFjCq9vd2slJN2vTA6BmEKCAl/8372zyPFe/Pay96SCuZLajYgrUtyihom0i
	 /R7bEs0RJB2jjrOVUnzm/rD7vByBxg/nctc2ZL1jK1mlItjfSaZmU6WpEY31nqvbRj
	 6MaGlE/BWHjtiY9G3/yVSUGOD+4woBLmjH8WeudltUCTfuHXPOUrjXK+BwLDjksJyB
	 ZGC693CrhEfyV2jbvl81aIVV/dobc2D5KfsgKqH/gBm7diZS8oy2WQGPoprvL/Lx1b
	 MK0syqDw6g45g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728641054; x=1728901554; i=anthony.perard@vates.tech;
	bh=tL325rHXc3QBdrp62haOYIHGJ43zT5LOupfREdCNw44=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=P1k7H323+EqpIJSHqv91W315FBCZYv339uMfnm4qNqHdMvSR1890XrZ7lgWmnjqKA
	 tclkq34AiHFtHZqmXRuElN7WXwoG2me+qyc2l4nMZabl0CC7kmAIsy7B3Qdi2ogzLT
	 iPODxv4EvMd21Z8NMAVtlsWtx1qxDw0qD1jpyy9Oe9mmxCr6n/75cZBouhE9VQooJM
	 A8pIa3I7qt5UzFm0A58+coqYORqsfbhhF6EIdrG0YFiIThOavbF4iJqZZp+y5TfrYE
	 XlkvLn5aB3pRXd6XEW0APQ7auTpLv74i8i03lN1nZoq6zyVjMNZqgh5kV8vwMT5k3V
	 kUwJvdaOsLL9w==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=202/3]=20tools/xenstored:=20remove=20unneeded=20libxenguest=20reference?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728641053928
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>
Message-Id: <Zwj4HdtLD1sVDhNB@l14>
References: <20241010155459.22389-1-jgross@suse.com> <20241010155459.22389-3-jgross@suse.com>
In-Reply-To: <20241010155459.22389-3-jgross@suse.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.8efad8fb96864b5d971e2d7ded9f7285?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241011:md
Date: Fri, 11 Oct 2024 10:04:14 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Thu, Oct 10, 2024 at 05:54:58PM +0200, Juergen Gross wrote:
> Today the xenstored Makefile contains an unneeded reference to the
> not used libxenguest library.
> 
> Remove it.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 10:10:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 10:10:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816900.1230992 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szCbC-00030P-Ff; Fri, 11 Oct 2024 10:10:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816900.1230992; Fri, 11 Oct 2024 10:10: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 1szCbC-00030I-BK; Fri, 11 Oct 2024 10:10:18 +0000
Received: by outflank-mailman (input) for mailman id 816900;
 Fri, 11 Oct 2024 10:10: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=rzrJ=RH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1szCbB-00030C-9f
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 10:10:17 +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 02ee9d57-87b9-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 12:10:16 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9968114422so267162566b.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 03:10:16 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f291dsm193846466b.209.2024.10.11.03.10.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 03:10:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 02ee9d57-87b9-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728641415; x=1729246215; 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=TOqv6ONAiRgTeJMOg0zqPfHha0JdgC7thaHCYs7T/n0=;
        b=UB/H9nDFa2xlomLHLbgx5/By1im/JqqhsWouYs3r1bL4njOBCLwv+lSyHEzgQuQzIK
         nwjzR6NJoRRf1HslAWwe02TrPvQeEBsIEyZNXg/BJyWf3qpuiuPr6CJ3/MpDDPbwfVjT
         /MuthMyu/BwevBNQATJrU3rtK1drsjSFmUCpqtDyLddS+uwZgX7BjoH7iVrDdJbQO2CT
         z5d9UljpjWpkJrqEY7IgNSZHVz29S8EDc3T/Xam7x/Nt+VAnQo7FI/WUflnnxC2c5tzq
         KT/1YGN6HQdMatKwMgjg33+B6SvTZwWyDoKSDLQRzHPqJ3t54VusROuAcjOYCdBqi1BM
         bBNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728641415; x=1729246215;
        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=TOqv6ONAiRgTeJMOg0zqPfHha0JdgC7thaHCYs7T/n0=;
        b=gZvzF1KACDO6LSE10eYCfIM8pG3e39ujCPCPEFpETUakFNShw3tqZgg2dAhGb3jF1i
         RTJiXxsVnszEKSerMRZYJQN3P4tjgNWuXXNzYSUXHwlUYKrwiMm8OWGvpmx11GaGg52L
         p3a/bTx6XW3p+VrCP5QnITVWp2C2yFl2HfhLl04R+Rmh+1QIs0SZQ31aPp9F3lrwqmbn
         /R6BLuh5LkIK3C3Y3Dm3UNjaQnDm2h4N00vvPdXkQ32SrLMe+I5+pF3HDMDQj8Eni4lF
         Kmwlyix+00T/VPwu+nK1wbW0ymP1gyd6/wznnSqmcsga4T4Qa4pCtJdRieomm2BrJpBl
         LeYg==
X-Gm-Message-State: AOJu0YzJhKOf7FP9rjj5wvWC1X7clWC9jkuSVM3FlyogTXZ41GEUbCQh
	XdTHT1N5yNqIzM5A72AGNwHFVC7uLUtW5S//gxt8gzi4iRG4gkcQaCRHQGd1KQ==
X-Google-Smtp-Source: AGHT+IH19uuQmzJr7Iik9TogV5BfZ36plytAFrb9U72iDLIAaBX50KspcRF2pUYPw7flI4CWA6OqGw==
X-Received: by 2002:a17:907:7b87:b0:a99:4acc:3a0c with SMTP id a640c23a62f3a-a99b95ee687mr191264166b.53.1728641415476;
        Fri, 11 Oct 2024 03:10:15 -0700 (PDT)
Message-ID: <d67285fc-5106-429a-9dd1-747c435282f5@suse.com>
Date: Fri, 11 Oct 2024 12:10:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <318bd8a4-a349-4e7b-8653-6995d5f9f125@suse.com>
 <BL1PR12MB5849EFA99B7F0C55D201738AE7792@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB584931B86739702086CDFF12E7792@BL1PR12MB5849.namprd12.prod.outlook.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: <BL1PR12MB584931B86739702086CDFF12E7792@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 11:33, Chen, Jiqian wrote:
> On 2024/10/11 17:20, Chen, Jiqian wrote:
>> On 2024/10/11 16:54, Jan Beulich wrote:
>>> On 11.10.2024 05:42, Jiqian Chen wrote:
>>>> @@ -1757,11 +1756,19 @@ static int __init xen_pcibk_init(void)
>>>>  		bus_register_notifier(&pci_bus_type, &pci_stub_nb);
>>>>  #endif
>>>>  
>>>> +#ifdef CONFIG_XEN_ACPI
>>>> +	xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
>>>> +#endif
>>>> +
>>>>  	return err;
>>>>  }
>>>>  
>>>>  static void __exit xen_pcibk_cleanup(void)
>>>>  {
>>>> +#ifdef CONFIG_XEN_ACPI
>>>> +	xen_acpi_register_get_gsi_func(NULL);
>>>> +#endif
>>>
>>> Just wondering - instead of these two #ifdef-s, ...
>>>
>>>> --- a/include/xen/acpi.h
>>>> +++ b/include/xen/acpi.h
>>>> @@ -91,13 +91,9 @@ static inline int xen_acpi_get_gsi_info(struct pci_dev *dev,
>>>>  }
>>>>  #endif
>>>>  
>>>> -#ifdef CONFIG_XEN_PCI_STUB
>>>> -int pcistub_get_gsi_from_sbdf(unsigned int sbdf);
>>>> -#else
>>>> -static inline int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
>>>> -{
>>>> -	return -1;
>>>> -}
>>>> -#endif
>>>> +typedef int (*get_gsi_from_sbdf_t)(u32 sbdf);
>>>> +
>>>> +void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func);
>>>> +int xen_acpi_get_gsi_from_sbdf(u32 sbdf);
>>>
>>> ... wouldn't a static inline stub (for the !XEN_ACPI case) aid overall readability?
>> I'm not sure if other files do this. But for me, it feels a little strange to use "#ifdef CONFIG_XEN_ACPI #else" in apci.h, like self-containment.
>> And "#include apci.h" in pic_stub.c is also wraped with CONFIG_XEN_ACPI.
> OK, I saw other files also do this.
> If you insist, I will make modifications in the next version.

Well, I'm not a maintainer of this code, so I can't very well insist.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 10:58:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 10:58:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816923.1231015 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szDLF-0005Ma-1A; Fri, 11 Oct 2024 10:57:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816923.1231015; Fri, 11 Oct 2024 10: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 1szDLE-0005MT-T3; Fri, 11 Oct 2024 10:57:52 +0000
Received: by outflank-mailman (input) for mailman id 816923;
 Fri, 11 Oct 2024 10: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szDLD-0005MN-0T
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 10:57:51 +0000
Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com
 [2a00:1450:4864:20::643])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a7373c5d-87bf-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 12:57:48 +0200 (CEST)
Received: by mail-ej1-x643.google.com with SMTP id
 a640c23a62f3a-a995f56ea2dso302937666b.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 03:57:48 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7ec5800sm201797366b.19.2024.10.11.03.57.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 03:57:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7373c5d-87bf-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728644268; x=1729249068; 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=9VOY4HNxnSKMilqY8I1r2wq3xhRy/1SsaUOUpiFil1w=;
        b=lXcjei+nIRh60RmDAId+mMc3tRjF92aGdbJoX9hV6n7L6OLF9Jkv7pD0Bo5qD32qI6
         XF6UIygpIOsBk5gDZkiX3PdYx9ji8X70PVHXKtxVluoI8INjA4VBpFs+FidANG5oLK4i
         e5FgH6u450vPHl14wjRFiuzPbQq1opr4zrB6A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728644268; x=1729249068;
        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=9VOY4HNxnSKMilqY8I1r2wq3xhRy/1SsaUOUpiFil1w=;
        b=MvZFUi+fny61tfTwR8K2gXshxcPD34+6IAvci7PNP3uF5/oW2YXHS0TQRMMeo/Ozs6
         fDte4HTidKtyL3tLePfEcKthg5RwirTuIyPxyKeI0T7KEZWtBgdx/IvxU0gzUYNnGbPL
         Tcj4Q/IJ9hex4dAglotmVN8mfsRTD3mBh7j8yQN413P0s0up5r/MxhZQYwEIs4jehpB8
         sapZjWZ7qOpBPRLbLTcb/fh9I525AFqOkqHJ/zcWcV5mukUT3shR7NV/Gmk+ll9WCgp+
         CNR4dlAFIA/kJ8SMKsb3U/Iz/lsCEBTzGYDBgeg7xYgRV/y2y4m/BHYn/VKd+hYH17jX
         D2bQ==
X-Forwarded-Encrypted: i=1; AJvYcCVL7++/YPtKQx4muNLlwjRna9YZtEnO37rM/02RevQSUEfilJ8OoVSFG6+eTbh6Gsq5BqUcxL3M1RU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyw7+7OTXXcwP5kmYIdwnx+jEhOTZEIBHOZvWcF92Ok9P1ZEv2S
	KUmBH3VnCOk9evNKltJPYHG51r54VpmhQFlV8xU66xaBaXa0Z4+AcOUbJTUJYPo=
X-Google-Smtp-Source: AGHT+IEe1mAkpEN5z+LOMDS41nQOE+pVp/K/F7JvjAC97tWG5ccBzRXsD6WCLt7wjqRRf7VnmLuUDw==
X-Received: by 2002:a17:907:e6a4:b0:a99:61d1:348f with SMTP id a640c23a62f3a-a99b95a6ebemr173449666b.52.1728644268084;
        Fri, 11 Oct 2024 03:57:48 -0700 (PDT)
Message-ID: <293bb092-0ea5-4a9b-805d-f23b9b5b13e5@citrix.com>
Date: Fri, 11 Oct 2024 11:57:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [Makefile only] [PATCH v3 1/5] x86/boot: create a C bundle for 32
 bit boot code and use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-2-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241011085244.432368-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/10/2024 9:52 am, Frediano Ziglio wrote:
> <snip>
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

The makefile changes here are not the easiest to follow, because there
are two related things being done.

I experimented, and came up with the following:

   
https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=shortlog;h=refs/heads/fz-32b-v3.1

which splits the obj32 transformation out of the "totally change how we
link things" which is the purpose of this patch.  The end result is much
clearer to follow IMO.

I've got some other comments, which I've included in the branch, but are
presented here for posterity.

> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index ff0f965876..4cf0d7e140 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,15 +1,18 @@
> +obj32 := cmdline.o
> +obj32 += reloc.o
> +
>  obj-bin-y += head.o
> +obj-bin-y += built_in_32.o
>  
> -head-bin-objs := cmdline.o reloc.o
> +obj32 := $(patsubst %.o,%.32.o,$(obj32))

We're already used to writing out foo.init.o, so just have the .32.o in
list.

This makes patch 3 slightly more obvious, where you're not listing the
same .o in two different obj lists.

>  
> -nocov-y   += $(head-bin-objs)
> -noubsan-y += $(head-bin-objs)
> -targets   += $(head-bin-objs)
> +nocov-y   += $(obj32)
> +noubsan-y += $(obj32)
> +targets   += $(obj32)
>  
> -head-bin-objs := $(addprefix $(obj)/,$(head-bin-objs))
> +obj32 := $(addprefix $(obj)/,$(obj32))
>  
>  $(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
> -$(obj)/head.o: $(head-bin-objs:.o=.bin)

The AFLAGS-y was only for the .incbin's, so can go away here too.

>  
>  CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
>  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
> @@ -17,17 +20,46 @@ CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
>  CFLAGS_x86_32 += -nostdinc -include $(filter %/include/xen/config.h,$(XEN_CFLAGS))
>  CFLAGS_x86_32 += $(filter -I% -O%,$(XEN_CFLAGS)) -D__XEN__
>  
> +LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))

Because this is :=, it needs to be after ...

> +
>  # override for 32bit binaries
> -$(head-bin-objs): CFLAGS_stack_boundary :=
> -$(head-bin-objs): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
> +$(obj32): CFLAGS_stack_boundary :=
> +$(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
>  
>  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
>  LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)

... this.

>  
> -%.bin: %.lnk
> -	$(OBJCOPY) -j .text -O binary $< $@
> +$(obj)/%.32.o: $(src)/%.c FORCE
> +	$(call if_changed_rule,cc_o_c)
> +
> +$(obj)/build32.final.lds: AFLAGS-y += -DFINAL
> +$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S
> +	$(call if_changed_dep,cpp_lds_S)

FORCE needs to be a prerequisite to use $(call if_changed_dep)  (Sorry -
I missed this one in the branch I pushed.)

> +
> +orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
> +
> +# link all object files together

All 32bit objects.  It isn't even all objects today (head.o isn't included).

> +$(obj)/built_in_32.tmp.o: $(obj32)
> +	$(LD32) -r -o $@ $(obj32)

$^

> +
> +$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.tmp.o
> +## link bundle with a given layout
> +	$(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
> +## extract binaries from object
> +	$(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
> +	rm -f $(obj)/built_in_32.$(*F).o
>  
> -%.lnk: %.o $(src)/build32.lds
> -	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -N -T $(filter %.lds,$^) -o $@ $<
> +# generate final object file combining and checking above binaries
> +$(obj)/built_in_32.o: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
> +	$(PYTHON) $(srctree)/tools/combine_two_binaries \
> +		--script $(obj)/build32.final.lds \
> +		--bin1 $(obj)/built_in_32.other.bin --bin2 $(obj)/built_in_32.final.bin \
> +		--map $(obj)/built_in_32.final.map \
> +		--exports cmdline_parse_early,reloc \
> +		--section-header '.section .init.text, "ax", @progbits' \
> +		--output $(obj)/built_in_32.s
> +	$(CC) -c $(obj)/built_in_32.s -o $@.tmp
> +	rm -f $(obj)/built_in_32.s $@
> +	mv $@.tmp $@

$(obj)/built_in_32.S: and --output $@

The build system already knows how to turn a .S into a .o.  This form
removed an opencoded $(CC), and leaves built_in_32.S around as an
intermediate to be inspected.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 11:13:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 11:13:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816932.1231024 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szDZm-0000av-7X; Fri, 11 Oct 2024 11:12:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816932.1231024; Fri, 11 Oct 2024 11:12: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 1szDZm-0000ao-3p; Fri, 11 Oct 2024 11:12:54 +0000
Received: by outflank-mailman (input) for mailman id 816932;
 Fri, 11 Oct 2024 11:12: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=5FLX=RH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1szDZk-0000ai-5l
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 11:12:52 +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 c05b59e6-87c1-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 13:12:50 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 4F0AA21FC0;
 Fri, 11 Oct 2024 11:12: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 0A5EA136E0;
 Fri, 11 Oct 2024 11:12: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 iVvjADEICWeGUQAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 11 Oct 2024 11:12: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: c05b59e6-87c1-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728645169; 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=pwaAPCR0sw9ktHoI4XXCZhNNCuBHNpmZtr1iDobCsDo=;
	b=DBrcU/6XaJ51iokbKbLJ/DnYcRoGLtFV1QDbaq16NHAVn8hnvyNAd/04Nuj3WLNTLPggjm
	rsQ/FhwHrLp2S+sBWaPbwKezk6as+zEGFl6WihD1ocem8Wc156seXWsVpvBcesd2uMGJ0l
	c3IsZz3NwXWoauM7KWPBFoEfnd+78g8=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728645169; 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=pwaAPCR0sw9ktHoI4XXCZhNNCuBHNpmZtr1iDobCsDo=;
	b=DBrcU/6XaJ51iokbKbLJ/DnYcRoGLtFV1QDbaq16NHAVn8hnvyNAd/04Nuj3WLNTLPggjm
	rsQ/FhwHrLp2S+sBWaPbwKezk6as+zEGFl6WihD1ocem8Wc156seXWsVpvBcesd2uMGJ0l
	c3IsZz3NwXWoauM7KWPBFoEfnd+78g8=
Message-ID: <3b83e1ea-f630-4259-bc9e-16497329f5a3@suse.com>
Date: Fri, 11 Oct 2024 13:12:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
To: Jan Beulich <jbeulich@suse.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <318bd8a4-a349-4e7b-8653-6995d5f9f125@suse.com>
 <BL1PR12MB5849EFA99B7F0C55D201738AE7792@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB584931B86739702086CDFF12E7792@BL1PR12MB5849.namprd12.prod.outlook.com>
 <d67285fc-5106-429a-9dd1-747c435282f5@suse.com>
Content-Language: en-US
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: <d67285fc-5106-429a-9dd1-747c435282f5@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------COs2xWgFHhO203CTrdqeSNOK"
X-Spam-Score: -5.15
X-Spamd-Result: default: False [-5.15 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	NEURAL_HAM_LONG(-0.99)[-0.990];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.16)[-0.782];
	MIME_UNKNOWN(0.10)[application/pgp-keys];
	MIME_BASE64_TEXT(0.10)[];
	MID_RHS_MATCH_FROM(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	TO_DN_EQ_ADDR_SOME(0.00)[];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	RCVD_TLS_ALL(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_SEVEN(0.00)[7];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid,imap1.dmz-prg2.suse.org:helo];
	TO_DN_SOME(0.00)[];
	HAS_ATTACHMENT(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------COs2xWgFHhO203CTrdqeSNOK
Content-Type: multipart/mixed; boundary="------------21j9CXdGhgmOlRMlnUwRz7TF";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Message-ID: <3b83e1ea-f630-4259-bc9e-16497329f5a3@suse.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <318bd8a4-a349-4e7b-8653-6995d5f9f125@suse.com>
 <BL1PR12MB5849EFA99B7F0C55D201738AE7792@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB584931B86739702086CDFF12E7792@BL1PR12MB5849.namprd12.prod.outlook.com>
 <d67285fc-5106-429a-9dd1-747c435282f5@suse.com>
In-Reply-To: <d67285fc-5106-429a-9dd1-747c435282f5@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------21j9CXdGhgmOlRMlnUwRz7TF
Content-Type: multipart/mixed; boundary="------------XnQxRrZOka0Bp2XoAEgB44AZ"

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

T24gMTEuMTAuMjQgMTI6MTAsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAxMS4xMC4yMDI0
IDExOjMzLCBDaGVuLCBKaXFpYW4gd3JvdGU6DQo+PiBPbiAyMDI0LzEwLzExIDE3OjIwLCBD
aGVuLCBKaXFpYW4gd3JvdGU6DQo+Pj4gT24gMjAyNC8xMC8xMSAxNjo1NCwgSmFuIEJldWxp
Y2ggd3JvdGU6DQo+Pj4+IE9uIDExLjEwLjIwMjQgMDU6NDIsIEppcWlhbiBDaGVuIHdyb3Rl
Og0KPj4+Pj4gQEAgLTE3NTcsMTEgKzE3NTYsMTkgQEAgc3RhdGljIGludCBfX2luaXQgeGVu
X3BjaWJrX2luaXQodm9pZCkNCj4+Pj4+ICAgCQlidXNfcmVnaXN0ZXJfbm90aWZpZXIoJnBj
aV9idXNfdHlwZSwgJnBjaV9zdHViX25iKTsNCj4+Pj4+ICAgI2VuZGlmDQo+Pj4+PiAgIA0K
Pj4+Pj4gKyNpZmRlZiBDT05GSUdfWEVOX0FDUEkNCj4+Pj4+ICsJeGVuX2FjcGlfcmVnaXN0
ZXJfZ2V0X2dzaV9mdW5jKHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYpOw0KPj4+Pj4gKyNl
bmRpZg0KPj4+Pj4gKw0KPj4+Pj4gICAJcmV0dXJuIGVycjsNCj4+Pj4+ICAgfQ0KPj4+Pj4g
ICANCj4+Pj4+ICAgc3RhdGljIHZvaWQgX19leGl0IHhlbl9wY2lia19jbGVhbnVwKHZvaWQp
DQo+Pj4+PiAgIHsNCj4+Pj4+ICsjaWZkZWYgQ09ORklHX1hFTl9BQ1BJDQo+Pj4+PiArCXhl
bl9hY3BpX3JlZ2lzdGVyX2dldF9nc2lfZnVuYyhOVUxMKTsNCj4+Pj4+ICsjZW5kaWYNCj4+
Pj4NCj4+Pj4gSnVzdCB3b25kZXJpbmcgLSBpbnN0ZWFkIG9mIHRoZXNlIHR3byAjaWZkZWYt
cywgLi4uDQo+Pj4+DQo+Pj4+PiAtLS0gYS9pbmNsdWRlL3hlbi9hY3BpLmgNCj4+Pj4+ICsr
KyBiL2luY2x1ZGUveGVuL2FjcGkuaA0KPj4+Pj4gQEAgLTkxLDEzICs5MSw5IEBAIHN0YXRp
YyBpbmxpbmUgaW50IHhlbl9hY3BpX2dldF9nc2lfaW5mbyhzdHJ1Y3QgcGNpX2RldiAqZGV2
LA0KPj4+Pj4gICB9DQo+Pj4+PiAgICNlbmRpZg0KPj4+Pj4gICANCj4+Pj4+IC0jaWZkZWYg
Q09ORklHX1hFTl9QQ0lfU1RVQg0KPj4+Pj4gLWludCBwY2lzdHViX2dldF9nc2lfZnJvbV9z
YmRmKHVuc2lnbmVkIGludCBzYmRmKTsNCj4+Pj4+IC0jZWxzZQ0KPj4+Pj4gLXN0YXRpYyBp
bmxpbmUgaW50IHBjaXN0dWJfZ2V0X2dzaV9mcm9tX3NiZGYodW5zaWduZWQgaW50IHNiZGYp
DQo+Pj4+PiAtew0KPj4+Pj4gLQlyZXR1cm4gLTE7DQo+Pj4+PiAtfQ0KPj4+Pj4gLSNlbmRp
Zg0KPj4+Pj4gK3R5cGVkZWYgaW50ICgqZ2V0X2dzaV9mcm9tX3NiZGZfdCkodTMyIHNiZGYp
Ow0KPj4+Pj4gKw0KPj4+Pj4gK3ZvaWQgeGVuX2FjcGlfcmVnaXN0ZXJfZ2V0X2dzaV9mdW5j
KGdldF9nc2lfZnJvbV9zYmRmX3QgZnVuYyk7DQo+Pj4+PiAraW50IHhlbl9hY3BpX2dldF9n
c2lfZnJvbV9zYmRmKHUzMiBzYmRmKTsNCj4+Pj4NCj4+Pj4gLi4uIHdvdWxkbid0IGEgc3Rh
dGljIGlubGluZSBzdHViIChmb3IgdGhlICFYRU5fQUNQSSBjYXNlKSBhaWQgb3ZlcmFsbCBy
ZWFkYWJpbGl0eT8NCj4+PiBJJ20gbm90IHN1cmUgaWYgb3RoZXIgZmlsZXMgZG8gdGhpcy4g
QnV0IGZvciBtZSwgaXQgZmVlbHMgYSBsaXR0bGUgc3RyYW5nZSB0byB1c2UgIiNpZmRlZiBD
T05GSUdfWEVOX0FDUEkgI2Vsc2UiIGluIGFwY2kuaCwgbGlrZSBzZWxmLWNvbnRhaW5tZW50
Lg0KPj4+IEFuZCAiI2luY2x1ZGUgYXBjaS5oIiBpbiBwaWNfc3R1Yi5jIGlzIGFsc28gd3Jh
cGVkIHdpdGggQ09ORklHX1hFTl9BQ1BJLg0KPj4gT0ssIEkgc2F3IG90aGVyIGZpbGVzIGFs
c28gZG8gdGhpcy4NCj4+IElmIHlvdSBpbnNpc3QsIEkgd2lsbCBtYWtlIG1vZGlmaWNhdGlv
bnMgaW4gdGhlIG5leHQgdmVyc2lvbi4NCj4gDQo+IFdlbGwsIEknbSBub3QgYSBtYWludGFp
bmVyIG9mIHRoaXMgY29kZSwgc28gSSBjYW4ndCB2ZXJ5IHdlbGwgaW5zaXN0Lg0KDQpJbiB0
aGlzIGNhc2UgSSdtIGluIGZhdm9yIG9mIGhhdmluZyB0aGUgI2lmZGVmcyBhdCB0aGUgY2Fs
bGluZyBzaXRlLg0KDQpUaGUgYW1vdW50IG9mIGNvZGUgaXNuJ3QgbGFyZ2VyIHRoaXMgd2F5
LCB3aGlsZSBpdCBpcyBtb3JlIGNsZWFyIHdoZW4NCnJlYWRpbmcgdGhlIGNvZGUgdGhhdCB0
aGUgY2FsbHMgYXJlIG9ubHkgZG9uZSBpbiB0aGUgQ09ORklHX1hFTl9BQ1BJDQpjYXNlLg0K
DQoNCkp1ZXJnZW4NCg==
--------------XnQxRrZOka0Bp2XoAEgB44AZ
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------XnQxRrZOka0Bp2XoAEgB44AZ--

--------------21j9CXdGhgmOlRMlnUwRz7TF--

--------------COs2xWgFHhO203CTrdqeSNOK
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/Ey8FAmcJCDAFAwAAAAAACgkQsN6d1ii/Ey/J
0QgAi82LrXA0EdOXfR9jhU5w/ZxQGzLYiUt2ELnUPb50jelo7PZEDwK3dhnYLH3O7KlnXGUZYfTi
wIJi1EalNga08XywH8G4n9jL7vjW6AfyDendNBnroFzhEtPofKSqLQtyctrDL70c/ksAqWW0N69G
p5f6FIsoZY+tA46zZYNt/WWBv3Zlk3RM9dj0YkzLhqtXhuXG07TmLbzlf5CPdXA23+FGTRAaIVQr
pmQK3EtLF6MJjtxXUJBALmSMEQB1LMaqkXNXF58R6XqfuuXFYatXRWKiV3L3HYoTPXqLEhKcFvrK
pKnsa0/bolGv/O1GuioYsic37uqA4cbKbckymOwUJw==
=BVbl
-----END PGP SIGNATURE-----

--------------COs2xWgFHhO203CTrdqeSNOK--


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 11:16:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 11:16:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816941.1231034 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szDdC-0001H4-Q6; Fri, 11 Oct 2024 11:16:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816941.1231034; Fri, 11 Oct 2024 11:16: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 1szDdC-0001Gx-NC; Fri, 11 Oct 2024 11:16:26 +0000
Received: by outflank-mailman (input) for mailman id 816941;
 Fri, 11 Oct 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=5FLX=RH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1szDdB-0001Gr-QO
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 11:16:25 +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 402daca8-87c2-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 13:16:24 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 E4C5D1FCDA;
 Fri, 11 Oct 2024 11:16: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 B070C136E0;
 Fri, 11 Oct 2024 11:16: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 FyikKQcJCWffUgAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 11 Oct 2024 11:16: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: 402daca8-87c2-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728645384; 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=B29IEv+uniBEGUF0GBR18nn57VShuEOJiAYWID8PeWE=;
	b=Jj16fqvck9wKdSUSOyzuU5OS6AF+AGvPllv3VA5mSe0W8tnKjFspntUWgJsif3wqkln4Ub
	topYG5z9GlRnJQKxUrdJ4KR+I+05iE5L9fJ4LLEn3skqqbvKLV1fH9TYff4IgVo45cWjfx
	33L9o3tQ0JHJ6Hvi0mG10U6C1n1Nb9k=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728645383; 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=B29IEv+uniBEGUF0GBR18nn57VShuEOJiAYWID8PeWE=;
	b=bJAmAho1VkFoJMWuSr0GlBfDG3ez5PVyVcHSBqrmp1GCjbHx/7YHO3F7D3vi0TT+sJsRJ8
	lJoouy9SPt25i6Oc3iSMOhy3iThxPIek036gsJWtwxrPeCLPepGDU/wphhLWcoyBsurQwK
	PIl/ggHlGxg0Ob7WT7EFm24Yeuoo6Yw=
Message-ID: <1ca6e2a1-2eaa-4817-92b2-d56ea18869a1@suse.com>
Date: Fri, 11 Oct 2024 13:16:23 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
Content-Language: en-US
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: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------tUOSdRmLtRKpkIRH9w1lciPF"
X-Spam-Score: -6.18
X-Spamd-Result: default: False [-6.18 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	NEURAL_HAM_LONG(-1.00)[-0.998];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.18)[-0.908];
	MIME_BASE64_TEXT(0.10)[];
	MIME_UNKNOWN(0.10)[application/pgp-keys];
	RCVD_TLS_ALL(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	MID_RHS_MATCH_FROM(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	FROM_EQ_ENVFROM(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	HAS_ATTACHMENT(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------tUOSdRmLtRKpkIRH9w1lciPF
Content-Type: multipart/mixed; boundary="------------3i0JiiZ03GPusQXwqGuxGuvd";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <1ca6e2a1-2eaa-4817-92b2-d56ea18869a1@suse.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
In-Reply-To: <20241011034227.1278144-1-Jiqian.Chen@amd.com>

--------------3i0JiiZ03GPusQXwqGuxGuvd
Content-Type: multipart/mixed; boundary="------------dodhGmV5Kl73WvMy7xRKcpCP"

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

T24gMTEuMTAuMjQgMDU6NDIsIEppcWlhbiBDaGVuIHdyb3RlOg0KPiBDb21taXQgMmZhZTZi
YjdiZTMyICgieGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20g
ZGV2IikNCj4gYWRkcyBhIHdlYWsgcmV2ZXJzZSBkZXBlbmRlbmN5IHRvIHRoZSBjb25maWcg
WEVOX1BSSVZDTUQgZGVmaW5pdGlvbiwgdGhhdA0KPiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4t
cHJpdmNtZCBjYW4ndCBiZSBsb2FkZWQgb24gZG9tVSwgYmVjYXVzZSBkZXBlbmRlbnQNCj4g
eGVuLXBjaWJhY2sgaXNuJ3QgYWx3YXlzIGJlIGxvYWRlZCBzdWNjZXNzZnVsbHkgb24gZG9t
VS4NCj4gDQo+IFRvIHNvbHZlIGFib3ZlIHByb2JsZW0sIHJlbW92ZSB0aGF0IGRlcGVuZGVu
Y3ksIGFuZCBkbyBub3QgY2FsbA0KPiBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKCkgZGly
ZWN0bHksIGluc3RlYWQgYWRkIGEgaG9vayBpbg0KPiBkcml2ZXJzL3hlbi9hcGNpLmMsIHhl
bi1wY2liYWNrIHJlZ2lzdGVyIHRoZSByZWFsIGNhbGwgZnVuY3Rpb24sIHRoZW4gaW4NCj4g
cHJpdmNtZF9pb2N0bF9wY2lkZXZfZ2V0X2dzaSBjYWxsIHRoYXQgaG9vay4NCj4gDQo+IEZp
eGVzOiAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5ldyBzeXNjYWxsIHRvIGdl
dCBnc2kgZnJvbSBkZXYiKQ0KPiBSZXBvcnRlZC1ieTogTWFyZWsgTWFyY3p5a293c2tpLUfD
s3JlY2tpIDxtYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tPg0KPiBTaWduZWQtb2Zm
LWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1kLmNvbT4NCg0KUmV2aWV3ZWQtYnk6
IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCg0KDQpKdWVyZ2VuDQoNCg==
--------------dodhGmV5Kl73WvMy7xRKcpCP
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------dodhGmV5Kl73WvMy7xRKcpCP--

--------------3i0JiiZ03GPusQXwqGuxGuvd--

--------------tUOSdRmLtRKpkIRH9w1lciPF
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/Ey8FAmcJCQcFAwAAAAAACgkQsN6d1ii/Ey8n
Ygf+MiULQGicn1Yej8waSvGi5BuT/cnSlXlT6DYCs7oj2Wr4bmY8hk1MVUw+dcCmmu4BAt3j9Afy
5Lw+OTNeYrl8IEno1a1ZoY+NaQB6X5+FyMmiOz7gM33mIDo1kP9MijjuiSz1la3Rz0YiKjDnKkX5
+t3Ltxb9i7qQLjUcBUXR40M1oQh16yAAjj5L3kwRVj6haEQdZ5MrloAgIV291qD8mY/wQb34Fkdq
dtOFnJwsjVR4Hy4nj4VEnJl9Ee2Ax7InsQuUUUloNpbHXAGEk67cPa4ULTq8MJiR8zaUiMzVf0WM
Khih7zM+l+FfZ72kw8yiYSEpmS+JaUd1RGGGwdYy/Q==
=/k8t
-----END PGP SIGNATURE-----

--------------tUOSdRmLtRKpkIRH9w1lciPF--


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:03:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:03:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816960.1231044 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEMH-0004G4-7O; Fri, 11 Oct 2024 12:03:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816960.1231044; Fri, 11 Oct 2024 12:03: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 1szEMH-0004Fx-48; Fri, 11 Oct 2024 12:03:01 +0000
Received: by outflank-mailman (input) for mailman id 816960;
 Fri, 11 Oct 2024 12:02: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szEMF-0004Fr-QL
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:02:59 +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 c1014b8c-87c8-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 14:02:57 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c941623a5aso2373571a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:02:57 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2593sm203377466b.215.2024.10.11.05.02.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 05:02:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1014b8c-87c8-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728648177; x=1729252977; 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=3cL6WGIVQZfGHnse/Ktl8PJNicfYqemv5zsfOiqJWLs=;
        b=IrbjZxafafY9Qgdcjej5SQAtS+Fe8dFRiTUefzsaY/52bjESZEf+WTMlev8A3YmySC
         ajcDYQyRnIBKGEF9Q+6H6xpaAS+EmGlx+jnslI8qhUbtQsMiB5i4AVj4PKXN9j6MtnH/
         sM8WRtkcv+mARiwfPUk8q+ShUqrzKxDmQbjWQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728648177; x=1729252977;
        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=3cL6WGIVQZfGHnse/Ktl8PJNicfYqemv5zsfOiqJWLs=;
        b=kY8imcia+mfjAM9XV4c7RAQcHPZK7mw+FwjUcuI7G2k17Y/wrEc0UkY8FYh3Qt5NmP
         TYIy8rIPe1jGT6ixN0Pf84TVi/QoGvKmS3VSlZtvzyeL+gT/WnvQZpzO52mb1A3XuCeb
         bC7pZ13DFd5ekFJbO83nVsxl/K2n6bjHeBrHLfu4JIeNBxO9sCjcErxf+0Qb3gjGQfPy
         20Jt81xDiJiwEQMzC6J8fEyrJD/WhKYBD9iWtdoULbeMFsMpTTks4FOjW16TSIcl9KU+
         oUMZzhGrLhMR22ZioMl3lCaKakTzukZlob2EsqKqbrYOW8WlFW5q2ysMaNheQP5ZFCgI
         RIPw==
X-Forwarded-Encrypted: i=1; AJvYcCXS8tFEtqCv0v8dE0q0SnQPjnvu5q2re9yJngd4AbouXMD0Px6Tc0SRcRIIEesbEqKdHKQdz1l0Y6k=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyv0nedF8HkqlozI2rHe8VghZC3rD6RGv5vAaJPst3pLcJ5HDxe
	fwUrKvuxfPkDJ0rftnQbE0TlJcAZcMknek2VGINFNg5Lozazk7yGjYl6tgX9lWE=
X-Google-Smtp-Source: AGHT+IFNVn6FVJT7kJ21XDgqTtgwUfj0E/3vAbo5I2+ZH1Wy1911pW7zgMbllg9F6TDwunCzPDaUUA==
X-Received: by 2002:a17:907:6d24:b0:a99:637c:c2e0 with SMTP id a640c23a62f3a-a99b89fb7b9mr204406566b.31.1728648176829;
        Fri, 11 Oct 2024 05:02:56 -0700 (PDT)
Message-ID: <9bedfed9-5f76-485c-a70b-4731b6888b81@citrix.com>
Date: Fri, 11 Oct 2024 13:02:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/5] x86/boot: Reuse code to relocate trampoline
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-3-frediano.ziglio@cloud.com>
Content-Language: en-GB
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: <20241011085244.432368-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/10/2024 9:52 am, Frediano Ziglio wrote:
> Move code from efi-boot.h to a separate, new, reloc-trampoline.c file.
> Reuse this new code to replace assembly code in head.S doing the
> same thing.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

I'd be tempted to say "Reuse this new code, compiling it for 32bit as
well, to replace ..."

Either way, Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:03:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:03:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816964.1231054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEN3-0004js-FR; Fri, 11 Oct 2024 12:03:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816964.1231054; Fri, 11 Oct 2024 12:03: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 1szEN3-0004jl-CL; Fri, 11 Oct 2024 12:03:49 +0000
Received: by outflank-mailman (input) for mailman id 816964;
 Fri, 11 Oct 2024 12:03: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=HAGb=RH=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1szEN1-0004cA-ND
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:03:47 +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 dda8a872-87c8-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 14:03:46 +0200 (CEST)
Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com
 [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-26-flqHSxcoPLK58Xzl-EUh0g-1; Fri, 11 Oct 2024 08:03:44 -0400
Received: by mail-wm1-f71.google.com with SMTP id
 5b1f17b1804b1-43056c979c9so11793965e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:03:43 -0700 (PDT)
Received: from eisenberg.fritz.box ([2001:16b8:3d05:4700:3e59:7d70:cabd:144b])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430ccf51770sm73523925e9.22.2024.10.11.05.03.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 05:03:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dda8a872-87c8-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728648225;
	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=Hm1o99Wl0wYT15lGSFJLg7EgiqA98EURXKjTmwFk1nY=;
	b=iir/9/WQZC46zu3L4qYOZtMcGsd1Tx/cUB2QkwKCYODg8PYNgtZXdbmE247Ii2vJexkLTP
	1dFri39P2sxUrIdYxPyo2LCZEBPCHNW1bGkxl4AxMLWdI3QQrL0L8XO/N6+EtlCtvrixNR
	D/rbTJ0pWuMGOkFBFuZAXuyI6q9WhNQ=
X-MC-Unique: flqHSxcoPLK58Xzl-EUh0g-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728648223; x=1729253023;
        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=3I5lHL6mHTQWMds6pJC4dZUawdNZoxrsfeR6hWpkDqM=;
        b=VzmcFCl89ncCHburF+l/917ZmVU4tJI9yoc9O11uJQEmIfh4CxlJJ0VQQr6Bb23TiG
         XcqV4nxSBmTXMoakDEl/KmrablI+iDaFPJox4b9TaNbc4M22qiqOjtT6zl+OWZtz4iLB
         KJJTC1qJOQA2JgeL2VIN11ueZ6ncSNZPfUqcA78cSlZoc/c83t6eRiLp0/FspIAaquId
         Yq2QiVLZaEbGo//nx9Y0AUIX/d+BXA9pJOHug1mgraqQEKhbTRY3/O9pdQsKuYVCoC4E
         ng6hG4WSJcxaQaEtsj5dtf/L1QGXBtdGXaSoPbtGm/r2/K4prDHcdosWghBPS9KrXOnA
         a7fg==
X-Forwarded-Encrypted: i=1; AJvYcCUDUEK/1UPQREJe49nB0o9E8QzpV5a2e0Ra053QuX37AwqOGNJlZwWf8W+Ux3Y/U+CDKg1lFWUT8Lo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxsXW0MK4UyZjxCcrdNX06r/ipuW/VpmCAYZ/AFjv5LbU3Y9QIh
	iklKuNkvtmngtTKKeSbyT2WEplKYveaqbqm9Rq+gKHqzJOVCgjiwg5fG2rU/3MXZYaAnKi42t3d
	8kvqVPnYo4NQeZ0S+EF/643m0zJj38yZiR3BCJLupCCM/GGXP5iYU6kkmAfvswXH0
X-Received: by 2002:a05:600c:1d1c:b0:42c:c003:edd1 with SMTP id 5b1f17b1804b1-4311decaa48mr19192165e9.10.1728648222820;
        Fri, 11 Oct 2024 05:03:42 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IExbuVJr4JGcXjTZsUgf0Q1cJGFJf/2hMvz1Z5drCky7hS/DrFylID4EQn0lZzCFTWpUUq6Zw==
X-Received: by 2002:a05:600c:1d1c:b0:42c:c003:edd1 with SMTP id 5b1f17b1804b1-4311decaa48mr19191405e9.10.1728648222253;
        Fri, 11 Oct 2024 05:03:42 -0700 (PDT)
Message-ID: <914de38f0b6b3d2ddf98c16e427085732bebfd4a.camel@redhat.com>
Subject: Re: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,  Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Fri, 11 Oct 2024 14:03:39 +0200
In-Reply-To: <20241010114304.064f5d3d.alex.williamson@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-2-pstanner@redhat.com>
	 <20241010114304.064f5d3d.alex.williamson@redhat.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-10 at 11:43 -0600, Alex Williamson wrote:
> On Wed,=C2=A0 9 Oct 2024 10:35:07 +0200
> Philipp Stanner <pstanner@redhat.com> wrote:
>=20
> > pci_intx() is a hybrid function which sometimes performs devres
> > operations, depending on whether pcim_enable_device() has been used
> > to
> > enable the pci_dev. This sometimes-managed nature of the function
> > is
> > problematic. Notably, it causes the function to allocate under some
> > circumstances which makes it unusable from interrupt context.
> >=20
> > To, ultimately, remove the hybrid nature from pci_intx(), it is
> > first
> > necessary to provide an always-managed and a never-managed version
> > of that function. Then, all callers of pci_intx() can be ported to
> > the
> > version they need, depending whether they use pci_enable_device()
> > or
> > pcim_enable_device().
> >=20
> > An always-managed function exists, namely pcim_intx(), for which
> > __pcim_intx(), a never-managed version of pci_intx() had been
> > implemented.
> >=20
> > Make __pcim_intx() a public function under the name
> > pci_intx_unmanaged(). Make pcim_intx() a public function.
> >=20
> > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > ---
> > =C2=A0drivers/pci/devres.c | 24 +++---------------------
> > =C2=A0drivers/pci/pci.c=C2=A0=C2=A0=C2=A0 | 26 ++++++++++++++++++++++++=
++
> > =C2=A0include/linux/pci.h=C2=A0 |=C2=A0 2 ++
> > =C2=A03 files changed, 31 insertions(+), 21 deletions(-)
> >=20
> > diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
> > index b133967faef8..475a3ae5c33f 100644
> > --- a/drivers/pci/devres.c
> > +++ b/drivers/pci/devres.c
> > @@ -411,31 +411,12 @@ static inline bool mask_contains_bar(int
> > mask, int bar)
> > =C2=A0=09return mask & BIT(bar);
> > =C2=A0}
> > =C2=A0
> > -/*
> > - * This is a copy of pci_intx() used to bypass the problem of
> > recursive
> > - * function calls due to the hybrid nature of pci_intx().
> > - */
> > -static void __pcim_intx(struct pci_dev *pdev, int enable)
> > -{
> > -=09u16 pci_command, new;
> > -
> > -=09pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> > -
> > -=09if (enable)
> > -=09=09new =3D pci_command & ~PCI_COMMAND_INTX_DISABLE;
> > -=09else
> > -=09=09new =3D pci_command | PCI_COMMAND_INTX_DISABLE;
> > -
> > -=09if (new !=3D pci_command)
> > -=09=09pci_write_config_word(pdev, PCI_COMMAND, new);
> > -}
> > -
> > =C2=A0static void pcim_intx_restore(struct device *dev, void *data)
> > =C2=A0{
> > =C2=A0=09struct pci_dev *pdev =3D to_pci_dev(dev);
> > =C2=A0=09struct pcim_intx_devres *res =3D data;
> > =C2=A0
> > -=09__pcim_intx(pdev, res->orig_intx);
> > +=09pci_intx_unmanaged(pdev, res->orig_intx);
> > =C2=A0}
> > =C2=A0
> > =C2=A0static struct pcim_intx_devres *get_or_create_intx_devres(struct
> > device *dev)
> > @@ -472,10 +453,11 @@ int pcim_intx(struct pci_dev *pdev, int
> > enable)
> > =C2=A0=09=09return -ENOMEM;
> > =C2=A0
> > =C2=A0=09res->orig_intx =3D !enable;
> > -=09__pcim_intx(pdev, enable);
> > +=09pci_intx_unmanaged(pdev, enable);
> > =C2=A0
> > =C2=A0=09return 0;
> > =C2=A0}
> > +EXPORT_SYMBOL(pcim_intx);
>=20
> What precludes this from _GPL?=C2=A0 Also note that this is now calling a
> GPL symbol, so by default I'd assume it should also be GPL.=C2=A0 Thanks,

Ah right, I overlooked that pci_intx() also has the _GPL version.
Will make consistent.

Thx,
P.

>=20
> Alex
>=20
> > =C2=A0
> > =C2=A0static void pcim_disable_device(void *pdev_raw)
> > =C2=A0{
> > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> > index 7d85c04fbba2..318cfb5b5e15 100644
> > --- a/drivers/pci/pci.c
> > +++ b/drivers/pci/pci.c
> > @@ -4476,6 +4476,32 @@ void pci_disable_parity(struct pci_dev *dev)
> > =C2=A0=09}
> > =C2=A0}
> > =C2=A0
> > +/**
> > + * pci_intx - enables/disables PCI INTx for device dev, unmanaged
> > version
> > + * @pdev: the PCI device to operate on
> > + * @enable: boolean: whether to enable or disable PCI INTx
> > + *
> > + * Enables/disables PCI INTx for device @pdev
> > + *
> > + * This function behavios identically to pci_intx(), but is never
> > managed with
> > + * devres.
> > + */
> > +void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
> > +{
> > +=09u16 pci_command, new;
> > +
> > +=09pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> > +
> > +=09if (enable)
> > +=09=09new =3D pci_command & ~PCI_COMMAND_INTX_DISABLE;
> > +=09else
> > +=09=09new =3D pci_command | PCI_COMMAND_INTX_DISABLE;
> > +
> > +=09if (new !=3D pci_command)
> > +=09=09pci_write_config_word(pdev, PCI_COMMAND, new);
> > +}
> > +EXPORT_SYMBOL_GPL(pci_intx_unmanaged);
> > +
> > =C2=A0/**
> > =C2=A0 * pci_intx - enables/disables PCI INTx for device dev
> > =C2=A0 * @pdev: the PCI device to operate on
> > diff --git a/include/linux/pci.h b/include/linux/pci.h
> > index 573b4c4c2be6..6b8cde76d564 100644
> > --- a/include/linux/pci.h
> > +++ b/include/linux/pci.h
> > @@ -1353,6 +1353,7 @@ int __must_check pcim_set_mwi(struct pci_dev
> > *dev);
> > =C2=A0int pci_try_set_mwi(struct pci_dev *dev);
> > =C2=A0void pci_clear_mwi(struct pci_dev *dev);
> > =C2=A0void pci_disable_parity(struct pci_dev *dev);
> > +void pci_intx_unmanaged(struct pci_dev *pdev, int enable);
> > =C2=A0void pci_intx(struct pci_dev *dev, int enable);
> > =C2=A0bool pci_check_and_mask_intx(struct pci_dev *dev);
> > =C2=A0bool pci_check_and_unmask_intx(struct pci_dev *dev);
> > @@ -2293,6 +2294,7 @@ static inline void pci_fixup_device(enum
> > pci_fixup_pass pass,
> > =C2=A0=09=09=09=09=C2=A0=C2=A0=C2=A0 struct pci_dev *dev) { }
> > =C2=A0#endif
> > =C2=A0
> > +int pcim_intx(struct pci_dev *pdev, int enabled);
> > =C2=A0void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned
> > long maxlen);
> > =C2=A0void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
> > =C2=A0=09=09=09=09const char *name);
>=20



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:05:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:05:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816973.1231065 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEP5-0005Iy-RS; Fri, 11 Oct 2024 12:05:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816973.1231065; Fri, 11 Oct 2024 12: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 1szEP5-0005Ir-NR; Fri, 11 Oct 2024 12:05:55 +0000
Received: by outflank-mailman (input) for mailman id 816973;
 Fri, 11 Oct 2024 12: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szEP4-0005Ij-16
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:05:54 +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 29361b10-87c9-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 14:05:52 +0200 (CEST)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-53997328633so3327525e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:05:52 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7ec536dsm206434066b.43.2024.10.11.05.05.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 05:05:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 29361b10-87c9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728648352; x=1729253152; 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=3K4woE64vxSaWftspR/rRVtkcNLlA5UYDOKBdbY1Kkc=;
        b=R+6llSyLnVk0/wrlf4KyncINlQG5qIgAFUzXsXaeC885E7FKcbvEPbox+RRCYb9vmr
         ETTyPXJqQWXRF8un+HPYZQk38akIt0uwnDukmWoGxfAb9z+nq36qzM90N2sBYCoCcRuM
         518t1GqcTJmys1AKMhxabVxm5Y4I6gMT166z4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728648352; x=1729253152;
        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=3K4woE64vxSaWftspR/rRVtkcNLlA5UYDOKBdbY1Kkc=;
        b=r3Zp00FvkXqKJxKZg50hbhhg2Esft/1PMBUhIuHHXPUD87QU+nEZiFHir0MSh+YzH2
         nRR26fbV3b69rgwMqPf8WVEPLQXY8xLr/RjYS2fZT4kTbwmnMo+QTksXC8V8kbwViSKT
         78mf3r71suOrzu7V1lOwh7wtSSO41MlaXUfLdUTfovcg0ORi5NAw0q8KotdBHqOzropf
         qG6aD8Rh4ESCEgnsIXeW2e96R/LBMTeUHbQc4aQevkfxlhlryJ4joxeZInnqEh/ZDxGQ
         luCrdtfwOFt2ufgmY9IspyaeGdWn0LtHoCZnwHvUE/s0Gymizpy+kCsIXpLXyHhKEYIN
         u3wg==
X-Forwarded-Encrypted: i=1; AJvYcCUvPFRe2UnAoj7EaCrDW86gRkZiJkEoeG+U/s8H7Ap6cLhoWvQpsvTWzE7wAEfNqJHGUJzvUGpNDl4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzIPMOCNN5tQ+1QXChDCL40yNjwc7X4zyI1Gt/uyCP0+9ZeH8Wm
	cGLv0UTCSX7dcGzPCQYHmDm6rmGzFzBPjuzjRT40K3CtzVrwcgkFe9SLW8FcwFE=
X-Google-Smtp-Source: AGHT+IFdDKF9x2gtcRFFjoiZTA1eqBtV18JO6oN3IlvboFSxIKN6ILB0J2Ssh/+roYFDo38B1inrFA==
X-Received: by 2002:a05:6512:1083:b0:539:8d9b:b61c with SMTP id 2adb3069b0e04-539da592814mr2110952e87.51.1728648351566;
        Fri, 11 Oct 2024 05:05:51 -0700 (PDT)
Message-ID: <36fd344b-7297-4f06-83ba-877464b248ec@citrix.com>
Date: Fri, 11 Oct 2024 13:05:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/5] x86/boot: Use trampoline_phys variable directly
 from C code
To: Frediano Ziglio <frediano.ziglio@cloud.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: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-5-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241011085244.432368-5-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/10/2024 9:52 am, Frediano Ziglio wrote:
> No more need to pass from assembly code.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:06:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:06:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816976.1231074 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEPS-0005im-2b; Fri, 11 Oct 2024 12:06:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816976.1231074; Fri, 11 Oct 2024 12:06: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 1szEPR-0005if-Vt; Fri, 11 Oct 2024 12:06:17 +0000
Received: by outflank-mailman (input) for mailman id 816976;
 Fri, 11 Oct 2024 12:06: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=5FLX=RH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1szEPR-0005Ij-FX
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:06:17 +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 3731c5a3-87c9-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 14:06:15 +0200 (CEST)
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 23F101FCE0;
 Fri, 11 Oct 2024 12:06: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 DB2731370C;
 Fri, 11 Oct 2024 12:06: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 I0LbM7YUCWelYwAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 11 Oct 2024 12:06: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: 3731c5a3-87c9-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728648375; 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=AP0lE6GELvjDU5tE5u0JtEumVZXQfjmSmXY1XghR4tw=;
	b=ODPL4t6hHkumrDnkrdEuWDx9YayMdRSZzVZzAZLqJ87MoL7VBopu4oqr4rbUZMlM0XWjGT
	sU0HgdbvGDeomhgHKvJ1pAkiYtnE7cevQTdhsJtQyXobjcbARQ3W9C1K+zAzPwRXtip5ze
	Xh23xL5WtsnC5e6YrI+liT8s5zZMHY0=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=ODPL4t6h
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728648375; 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=AP0lE6GELvjDU5tE5u0JtEumVZXQfjmSmXY1XghR4tw=;
	b=ODPL4t6hHkumrDnkrdEuWDx9YayMdRSZzVZzAZLqJ87MoL7VBopu4oqr4rbUZMlM0XWjGT
	sU0HgdbvGDeomhgHKvJ1pAkiYtnE7cevQTdhsJtQyXobjcbARQ3W9C1K+zAzPwRXtip5ze
	Xh23xL5WtsnC5e6YrI+liT8s5zZMHY0=
Message-ID: <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
Date: Fri, 11 Oct 2024 14:06:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
Content-Language: en-US
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: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------ZXUb7OBS6mGfOIbLlsELebFw"
X-Rspamd-Queue-Id: 23F101FCE0
X-Spam-Score: -6.41
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-6.41 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_UNKNOWN(0.10)[application/pgp-keys];
	MIME_BASE64_TEXT(0.10)[];
	MX_GOOD(-0.01)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	MID_RHS_MATCH_FROM(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	DKIM_TRACE(0.00)[suse.com:+];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo,suse.com:mid,suse.com:dkim]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------ZXUb7OBS6mGfOIbLlsELebFw
Content-Type: multipart/mixed; boundary="------------KzonHHoe46ML3HTmZO8toNtL";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
In-Reply-To: <20241011034227.1278144-1-Jiqian.Chen@amd.com>

--------------KzonHHoe46ML3HTmZO8toNtL
Content-Type: multipart/mixed; boundary="------------HIhyeYz3LjAO61Tn6TXjB10r"

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

T24gMTEuMTAuMjQgMDU6NDIsIEppcWlhbiBDaGVuIHdyb3RlOg0KPiBDb21taXQgMmZhZTZi
YjdiZTMyICgieGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20g
ZGV2IikNCj4gYWRkcyBhIHdlYWsgcmV2ZXJzZSBkZXBlbmRlbmN5IHRvIHRoZSBjb25maWcg
WEVOX1BSSVZDTUQgZGVmaW5pdGlvbiwgdGhhdA0KPiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4t
cHJpdmNtZCBjYW4ndCBiZSBsb2FkZWQgb24gZG9tVSwgYmVjYXVzZSBkZXBlbmRlbnQNCj4g
eGVuLXBjaWJhY2sgaXNuJ3QgYWx3YXlzIGJlIGxvYWRlZCBzdWNjZXNzZnVsbHkgb24gZG9t
VS4NCj4gDQo+IFRvIHNvbHZlIGFib3ZlIHByb2JsZW0sIHJlbW92ZSB0aGF0IGRlcGVuZGVu
Y3ksIGFuZCBkbyBub3QgY2FsbA0KPiBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKCkgZGly
ZWN0bHksIGluc3RlYWQgYWRkIGEgaG9vayBpbg0KPiBkcml2ZXJzL3hlbi9hcGNpLmMsIHhl
bi1wY2liYWNrIHJlZ2lzdGVyIHRoZSByZWFsIGNhbGwgZnVuY3Rpb24sIHRoZW4gaW4NCj4g
cHJpdmNtZF9pb2N0bF9wY2lkZXZfZ2V0X2dzaSBjYWxsIHRoYXQgaG9vay4NCj4gDQo+IEZp
eGVzOiAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5ldyBzeXNjYWxsIHRvIGdl
dCBnc2kgZnJvbSBkZXYiKQ0KPiBSZXBvcnRlZC1ieTogTWFyZWsgTWFyY3p5a293c2tpLUfD
s3JlY2tpIDxtYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tPg0KPiBTaWduZWQtb2Zm
LWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1kLmNvbT4NCg0KVW5mb3J0dW5hdGVs
eSBJJ20gc2VlaW5nIGEgYnVpbGQgYnJlYWthZ2UgZm9yIHRoZSAzMi1iaXQgeDg2IGJ1aWxk
Lg0KDQpSZWFzb24gaXMgdGhhdCBkcml2ZXJzL3hlbi9hY3BpLmMgaXMgYmVpbmcgYnVpbHQg
Zm9yIERvbTAgb25seSwgc28gaGF2aW5nDQpDT05GSUdfWEVOX0FDUEkgZGVmaW5lZCBpcyBu
b3QgZW5vdWdoIGZvciBlbnN1cmluZyB0aGUgbmV3IGZ1bmN0aW9ucyBhcmUNCnByZXNlbnQu
DQoNCkkgc3VnZ2VzdCB0byBhZGQgYSBuZXcgQ09ORklHIGl0ZW0gQ09ORklHX1hFTl9ET00w
X0FDUEkgbGlrZQ0KDQpjb25maWcgWEVOX0RPTTBfQUNQSQ0KCWRlZl9ib29sIHkNCglkZXBl
bmRzIG9uIFhFTl9BQ1BJICYmIFhFTl9ET00wDQoNCmFuZCB0aGVuIHJlcGxhY2UgYWxsIENP
TkZJR19YRU5fQUNQSSBpbnN0YW5jZXMgaW4geW91ciBwYXRjaCB3aXRoDQpDT05GSUdfWEVO
X0RPTTBfQUNQSS4gVGhpcyBpbmNsdWRlcyB0aGUgdXNlIGNhc2UgaW4NCnByaXZjbWRfaW9j
dGxfcGNpZGV2X2dldF9nc2koKS4NCg0KDQpKdWVyZ2VuDQo=
--------------HIhyeYz3LjAO61Tn6TXjB10r
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------HIhyeYz3LjAO61Tn6TXjB10r--

--------------KzonHHoe46ML3HTmZO8toNtL--

--------------ZXUb7OBS6mGfOIbLlsELebFw
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/Ey8FAmcJFLYFAwAAAAAACgkQsN6d1ii/Ey/9
1Af/QbUZAWY+c7Ca+FSbwKWfxGwSoWvAbiHN4qas6uzSDPzvMQySzJljQxNTxTkduaFUxE/RgDw0
XpxrCxkp/jYy4SuJ9hLu63KuTgCEIKk7WbFOcATMJG20vZtVxdVBHysWDnHgweK6Ls5KCfuIjmjw
dV4g+y0lpw2gL3JTYj1/p87WRhN+nDAtnAzM1vyWSUsMftJQvf+BEA2VNmKgzfOV+hhV+Bl2xgvF
jZ/Qf+8AMpvxoUu6I/JAquUrNLPmSUaVUnP8qBoI094qqQiBA2WHse7YeRysUv83/WBXjOIT+Z4F
X3YnW2USjj6Oo00hIgIVFtbN1iKlwn2frQ+vQgThzw==
=OVU7
-----END PGP SIGNATURE-----

--------------ZXUb7OBS6mGfOIbLlsELebFw--


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:07:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:07:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816990.1231083 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEQn-0007kG-Fb; Fri, 11 Oct 2024 12:07:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816990.1231083; Fri, 11 Oct 2024 12: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 1szEQn-0007k9-Ck; Fri, 11 Oct 2024 12:07:41 +0000
Received: by outflank-mailman (input) for mailman id 816990;
 Fri, 11 Oct 2024 12: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szEQm-0007jz-6G
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:07:40 +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 68dc6038-87c9-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 14:07:39 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c903f5bd0eso2707710a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:07:39 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c9372940e3sm1872709a12.81.2024.10.11.05.07.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 05:07:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 68dc6038-87c9-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728648458; x=1729253258; 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=L46M0Xy7GJ+dwQb+8TS6TxyPjltSjGk77iQBkHtYeTM=;
        b=XULQBoRe9GXRriwx0Y1YNM/Wxz2EbI2m9waUGr8mvlsfwEGooJUEO4cjHJ+lJMBL+Q
         JUNLpH0IpARi53lDJQeBmzj0Wp7GPJoq3rAzAe/8+lIkc4/cgxyp4/CN47M4uk0EL49H
         zcRYCZPfqK/mppFXJEGekVeaqppskxu4SHxt0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728648458; x=1729253258;
        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=L46M0Xy7GJ+dwQb+8TS6TxyPjltSjGk77iQBkHtYeTM=;
        b=kICirXAQ3+DFT1sY4rgGbfv/x4L8Oms95v/DeUyFLsGFCxsCO4AG/CKkhdFL2BAOzg
         dHP8u1AuJ7ON/mSb6RFWGjEYVN2s5GJrXEQ8A9qlu1x6psQElRC7rF9PT9WguBEG548Z
         iGrl5tRvvKZHHeKnx75jDQANvSEPy1kNPvBXCtUg00q11Ol1cyAr+jaoJfYXKxDGoX6o
         voZnIVE9kCTh7On7efZGDa9rNA5NLHsjlwVkFChdhNLjGYuqVmv9Uoci4rKoLBhwvyJe
         dlhOgUpSjiX+0sYU0A+ndvimegFvFKpHZXRNPMhnA+Nwp4NrRSRuXi1gB8fnncAdpiiU
         lqEw==
X-Forwarded-Encrypted: i=1; AJvYcCX5ich+nMmtAPyOVGXsK/mN9n1Y3m9Kvz1t089ktsZi8v0UW+Gwh69QXHSzODHUp1DdTVyKPIPngCc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwHU6XTEHE/hW/MqJMNYMMdIzhm4MN92Kw7TP4Le12f0HMNZz9F
	6oeuShlLAiGlWTOpuQeBaskVTa5vOA0fLhgNTIf4pPnfo0Qgy6AhSNYfgjF/+OU=
X-Google-Smtp-Source: AGHT+IFIzaHO60BBIGV6ByluczVtitYpK9FIqzQKRmGUx7ARbSQnTdJMrlr4FrnDEkkRolcyLgJlLQ==
X-Received: by 2002:a05:6402:27d0:b0:5c9:2a00:dd15 with SMTP id 4fb4d7f45d1cf-5c948d072c9mr1536499a12.17.1728648458522;
        Fri, 11 Oct 2024 05:07:38 -0700 (PDT)
Message-ID: <b7b85ba1-4198-43bf-8ddd-3d45df30e931@citrix.com>
Date: Fri, 11 Oct 2024 13:07:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/5] x86/boot: Use boot_vid_info variable directly from
 C code
To: Frediano Ziglio <frediano.ziglio@cloud.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: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-4-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241011085244.432368-4-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/10/2024 9:52 am, Frediano Ziglio wrote:
> No more need to pass from assembly code.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Yes, much less churn.

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:08:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:08:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.816992.1231095 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szER5-000874-Pb; Fri, 11 Oct 2024 12:07:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 816992.1231095; Fri, 11 Oct 2024 12: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 1szER5-00086x-Kk; Fri, 11 Oct 2024 12:07:59 +0000
Received: by outflank-mailman (input) for mailman id 816992;
 Fri, 11 Oct 2024 12: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=HAGb=RH=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1szER3-0007jz-Ur
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:07:57 +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 72fbf564-87c9-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 14:07:57 +0200 (CEST)
Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com
 [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-653-yanmd-OxMHW1decCApMelQ-1; Fri, 11 Oct 2024 08:07:53 -0400
Received: by mail-wm1-f69.google.com with SMTP id
 5b1f17b1804b1-43057c9b32bso12260865e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:07:53 -0700 (PDT)
Received: from eisenberg.fritz.box ([2001:16b8:3d05:4700:3e59:7d70:cabd:144b])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431182d7929sm40692135e9.4.2024.10.11.05.07.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 05:07:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 72fbf564-87c9-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728648475;
	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=MwKBr4MW13REKEdZEAqTL7D+rRGFsGjM7n9xGoHUCEw=;
	b=LyAC5Pmw3syzJenHzvdqCObXZtgZ/Fp6azkWcy0NIy5N36U+PNgK8BDipIwSfeBrRBgzlT
	4UTbnZJrWHTtPsvqO9hubsFwWp9uTcwOw2GBes5dhB4oeJRqYRF49UShG2ufKBHU/fzp4t
	DmouwrSVJiL36FnVsxmAD2fLhuCjefQ=
X-MC-Unique: yanmd-OxMHW1decCApMelQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728648472; x=1729253272;
        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=MwKBr4MW13REKEdZEAqTL7D+rRGFsGjM7n9xGoHUCEw=;
        b=jS1AYMTDkquO8ZEFxlpd5CP7GJrUOYTliCdbSKgmMvE6e6xC3jpR4XhDPHaEr4G/1u
         asoXsa21+9zWK0bOj+dFiG0puHUQ3fv0BcxCfbsq485eQ4zGG8VCF+mq6UFsfMIbYOzn
         kvtk7KtlVjcne3eUZhs8X71I/GXOQd5MEmzEJPE7XJEC/dlrxS54Ol6BQuBWMgOsjDi3
         6pnSgecbLjq+VNtiHek1JmVTjFWGJ/G4L11D1OH89x47jG/JXsnPRzWcnxqYDv3f/j4g
         uogrHap0EYZSYpINeiOjb5bnV9RQtGl/5DSLaRs9xc8Fs90UThO8l6dlFFLo4hbYXayj
         MOqw==
X-Forwarded-Encrypted: i=1; AJvYcCUI3M2g7LxEOPz+snFjn1CcUSwsQKIOBPaW1qe0EWmijympVI5ZeZOt/wdcp+gJd2upN4RCGW86jLI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz5HF0zcDG0fQWTIG+ABFzfPsDFXe0F+yEYPDHj94g5j7cYUkeq
	/FMsBE/dxOCYBDr9/gFPZiJtLWLUUFNxNaCeMPoWjXy7Gq2rQfuMghzIK21jBJXsgXLnTF1WOup
	UhPvCvTrGfKBT+Qux3dXRvAZo80WG2bqz+wOVLdcx9HCTmClMPwgMNHc82Bm3q+bO
X-Received: by 2002:a05:600c:1d26:b0:42f:75cd:2566 with SMTP id 5b1f17b1804b1-4311deaea05mr17632295e9.2.1728648472039;
        Fri, 11 Oct 2024 05:07:52 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGfafWJbYY7XgafIoUBODjA0mqAG0Im27BYfV9oETn5/NEqgGUi/qx3b+BLDWe06kqudkM50g==
X-Received: by 2002:a05:600c:1d26:b0:42f:75cd:2566 with SMTP id 5b1f17b1804b1-4311deaea05mr17631395e9.2.1728648471511;
        Fri, 11 Oct 2024 05:07:51 -0700 (PDT)
Message-ID: <a688a4109e292d7510ebd7206bd3296e23ca1e3b.camel@redhat.com>
Subject: Re: [RFC PATCH 13/13] Remove devres from pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Dan Carpenter <dan.carpenter@linaro.org>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, Sergey Shtylyov
 <s.shtylyov@omp.ru>, Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri
 Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>, Arnd
 Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 Alex Dubov <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski
 <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Rasesh Mody
 <rmody@marvell.com>,  GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko
 <imitsyanko@quantenna.com>,  Sergey Matyukevich <geomatsi@gmail.com>, Kalle
 Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar
 S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Hannes Reinecke <hare@suse.de>, John Garry <john.g.garry@oracle.com>,
 Soumya Negi <soumya.negi97@gmail.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi
 Liu <yi.l.liu@intel.com>, "Dr. David Alan Gilbert" <linux@treblig.org>, 
 Christian Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Eric Auger
 <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Fri, 11 Oct 2024 14:07:48 +0200
In-Reply-To: <20241010114314.296db535.alex.williamson@redhat.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-14-pstanner@redhat.com>
	 <7f624c83-115b-4045-b068-0813a18c8200@stanley.mountain>
	 <f42bb5de4c9aca307a3431dd15ace4c9cade1cb9.camel@redhat.com>
	 <20241010114314.296db535.alex.williamson@redhat.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-10 at 11:43 -0600, Alex Williamson wrote:
> On Thu, 10 Oct 2024 11:11:36 +0200
> Philipp Stanner <pstanner@redhat.com> wrote:
>=20
> > On Thu, 2024-10-10 at 11:50 +0300, Dan Carpenter wrote:
> > > On Wed, Oct 09, 2024 at 10:35:19AM +0200, Philipp Stanner wrote:=C2=
=A0
> > > > pci_intx() is a hybrid function which can sometimes be managed
> > > > through
> > > > devres. This hybrid nature is undesirable.
> > > >=20
> > > > Since all users of pci_intx() have by now been ported either to
> > > > always-managed pcim_intx() or never-managed
> > > > pci_intx_unmanaged(),
> > > > the
> > > > devres functionality can be removed from pci_intx().
> > > >=20
> > > > Consequently, pci_intx_unmanaged() is now redundant, because
> > > > pci_intx()
> > > > itself is now unmanaged.
> > > >=20
> > > > Remove the devres functionality from pci_intx(). Remove
> > > > pci_intx_unmanaged().
> > > > Have all users of pci_intx_unmanaged() call pci_intx().
> > > >=20
> > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>=C2=A0=20
> > >=20
> > > I don't like when we change a function like this but it still
> > > compiles fine.
> > > If someone is working on a driver and hasn't pushed it yet, then
> > > it's
> > > probably
> > > supposed to be using the new pcim_intx() but they won't discover
> > > that
> > > until they
> > > detect the leaks at runtime.=C2=A0=20
> >=20
> > There wouldn't be any *leaks*, it's just that the INTx state would
> > not
> > automatically be restored. BTW the official documentation in its
> > current state does not hint at pci_intx() doing anything
> > automatically,
> > but rather actively marks it as deprecated.
> >=20
> > But you are right that a hypothetical new driver and OOT drivers
> > could
> > experience bugs through this change.
> >=20
> > >=20
> > > Why not leave the pci_intx_unmanaged() name.=C2=A0 It's ugly and that
> > > will
> > > discorage
> > > people from introducing new uses.=C2=A0=20
> >=20
> > I'd be OK with that. Then we'd have to remove pci_intx() as it has
> > new
> > users anymore.
> >=20
> > Either way should be fine and keep the behavior for existing
> > drivers
> > identical.
> >=20
> > I think Bjorn should express a preference
>=20
> FWIW, I think pcim_intx() and pci_intx() align better to our naming
> convention for devres interfaces.

Yup, also my personal preference. But we can mark those functions as
deprecated via docstring-comment. That should fullfill Damien's goal.

> =C2=A0 Would it be sufficient if pci_intx()
> triggered a WARN_ON if called for a pci_is_managed() device?

No, I don't think that's a good idea; reason being that
pci_is_managed() just checks that global boolean which we inherited
from the old implementation and which should not be necessary with
proper devres.
The boolean is used for making functions such as pci_intx() and
__pci_request_region() hybrid. So with our non-hybrid version we never
need it.

P.

> =C2=A0 Thanks,
>=20
> Alex
>=20



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:16:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:16:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817002.1231103 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEZ6-0001MM-ET; Fri, 11 Oct 2024 12:16:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817002.1231103; Fri, 11 Oct 2024 12:16: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 1szEZ6-0001MF-BZ; Fri, 11 Oct 2024 12:16:16 +0000
Received: by outflank-mailman (input) for mailman id 817002;
 Fri, 11 Oct 2024 12:16: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=HAGb=RH=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1szEZ5-0001M9-3g
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:16: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 9af4a98d-87ca-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 14:16:13 +0200 (CEST)
Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com
 [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-339-W5qLY6JVMlCTZpeTFVPQvw-1; Fri, 11 Oct 2024 08:16:10 -0400
Received: by mail-wm1-f71.google.com with SMTP id
 5b1f17b1804b1-42cb635b108so12315665e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:16:10 -0700 (PDT)
Received: from eisenberg.fritz.box ([2001:16b8:3d05:4700:3e59:7d70:cabd:144b])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430ccf4841asm73010925e9.19.2024.10.11.05.16.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 05:16:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9af4a98d-87ca-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728648972;
	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=8DzWcgAzoXUhVubU9tIpQ2PRRCDDT62+SnuJMczqGUs=;
	b=T1esOLKVX9KzsX8/q5YrjHDvjkbL+Gum+irNFoD3/wV0Fu67ZyR+GvZLnUkRSYYAwsQpzh
	i8EOU5hxvqOPlEWXSsQFUHgLG70mkg05FOLywRVEbiZOrqmp5/KlnIrwQ0bUbiag5TpWMw
	7bbBfAd3B0zm6E9IBiZazmllVWgm38g=
X-MC-Unique: W5qLY6JVMlCTZpeTFVPQvw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728648969; x=1729253769;
        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=W3YR/eN7EDVZPnEUtVVl/DT7O1jzPEky1m6YBwoyhuE=;
        b=rLSZNmLMX63euihBINUYi82sFfFSnfD04V4F9L/cmzr7Haryt/dMdtiOwkgNGH+3VR
         cUQuuQTgHf8QSmfIv8zFdB70kYaYpYPl9WdNl1/pXxNT7FTJkU7DbLoaQsSdEo4DHJ7Q
         xYKLa8OZdtWb3VWCtuUSCM1WysXu7a98p+TFffgZHLBehOo4+NtEu4rtgmvuD/wqvfCm
         mJOJn2YTf+/sy6iTzKyQv97HyrtNl2GAV1IvUiQAipY8fG68w8TvidtzZ3wvqotT6cUA
         mIo50BH32karZP8MxIeLvcA2aBgwwvcX4H5Q7uvXRvfYIC3RycIN+J7i/4FyuDt7MYrB
         6J+A==
X-Forwarded-Encrypted: i=1; AJvYcCW79xzQAK1p0HhfacXTuAhFWMyrokQuZVtCeeVQQU2jZVFKUHdfbQN5kX6O6O+k+ukglekVNSrJckw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxqmDkm/upCuEJ7agKoXUwuaBX8tbBIvRlDV3dYw8PBLRedvwM0
	BrI/O9Q8+fuG2rPKhXXu/kR6wqlWF8lTFQDO5owGlGlxOs9yhy4KPke00trHksrwmfPG3eXYwN+
	DMyTRhHBfJKfWbgGjPBJG01rGULMkZEShqPWMOb8IzE8GuZOoLDDLXQt8SzJNkh/0
X-Received: by 2002:a05:600c:1d0e:b0:42c:b2fa:1c0a with SMTP id 5b1f17b1804b1-4311df429c8mr19539435e9.23.1728648969419;
        Fri, 11 Oct 2024 05:16:09 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHJ7w0P8euwuh1uWsgO1hBzdaK+5QHv+AFGT0Iwx99lPo3ic55Ocuel+lqlVPvlsAnC7ezD6A==
X-Received: by 2002:a05:600c:1d0e:b0:42c:b2fa:1c0a with SMTP id 5b1f17b1804b1-4311df429c8mr19538645e9.23.1728648968995;
        Fri, 11 Oct 2024 05:16:08 -0700 (PDT)
Message-ID: <f65e9fa01a1947782fc930876e5f84174408db67.camel@redhat.com>
Subject: Re: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Hannes Reinecke <hare@suse.de>, John Garry
 <john.g.garry@oracle.com>, Soumya Negi <soumya.negi97@gmail.com>, Jason
 Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan
 Gilbert" <linux@treblig.org>, Christian Brauner <brauner@kernel.org>, Ankit
 Agrawal <ankita@nvidia.com>, Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Fri, 11 Oct 2024 14:16:06 +0200
In-Reply-To: <ZwfnULv2myACxnVb@smile.fi.intel.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-2-pstanner@redhat.com>
	 <ZwfnULv2myACxnVb@smile.fi.intel.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-10 at 17:40 +0300, Andy Shevchenko wrote:
> On Wed, Oct 09, 2024 at 10:35:07AM +0200, Philipp Stanner wrote:
> > pci_intx() is a hybrid function which sometimes performs devres
> > operations, depending on whether pcim_enable_device() has been used
> > to
> > enable the pci_dev. This sometimes-managed nature of the function
> > is
> > problematic. Notably, it causes the function to allocate under some
> > circumstances which makes it unusable from interrupt context.
> >=20
> > To, ultimately, remove the hybrid nature from pci_intx(), it is
> > first
> > necessary to provide an always-managed and a never-managed version
> > of that function. Then, all callers of pci_intx() can be ported to
> > the
> > version they need, depending whether they use pci_enable_device()
> > or
> > pcim_enable_device().
> >=20
> > An always-managed function exists, namely pcim_intx(), for which
> > __pcim_intx(), a never-managed version of pci_intx() had been
> > implemented.
>=20
> > Make __pcim_intx() a public function under the name
> > pci_intx_unmanaged(). Make pcim_intx() a public function.
>=20
> To avoid an additional churn we can make just completely new APIs,
> namely:
> pcim_int_x()
> pci_int_x()
>=20
> You won't need all dirty dances with double underscored function
> naming and
> renaming.

=C3=84hm.. I can't follow. The new version doesn't use double underscores
anymore. __pcim_intx() is being removed, effectively.
After this series, we'd end up with a clean:

=09pci_intx() <-> pcim_intx()

just as in the other PCI APIs.


>=20
>=20
> ...
>=20
> > +=09pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> > +
> > +=09if (enable)
> > +=09=09new =3D pci_command & ~PCI_COMMAND_INTX_DISABLE;
> > +=09else
> > +=09=09new =3D pci_command | PCI_COMMAND_INTX_DISABLE;
> > +
> > +=09if (new !=3D pci_command)
>=20
> I would use positive conditionals as easy to read (yes, a couple of
> lines
> longer, but also a win is the indentation and avoiding an additional
> churn in
> the future in case we need to add something in this branch.

I can't follow. You mean:

if (new =3D=3D pci_command)
    return;

?

That's exactly the same level of indentation. Plus, I just copied the
code.

>=20
> > +=09=09pci_write_config_word(pdev, PCI_COMMAND, new);
>=20
> ...
>=20
> Otherwise I'm for the idea in general.

\o/

>=20



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:28:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:28:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817012.1231114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEkO-0005H2-FN; Fri, 11 Oct 2024 12:27:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817012.1231114; Fri, 11 Oct 2024 12: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 1szEkO-0005Gv-Bg; Fri, 11 Oct 2024 12:27:56 +0000
Received: by outflank-mailman (input) for mailman id 817012;
 Fri, 11 Oct 2024 12: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=5FLX=RH=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1szEkN-0005Gp-67
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:27:55 +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 3cc3312a-87cc-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 14:27:53 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 1E7B121FC9;
 Fri, 11 Oct 2024 12:27: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 DEBE7136E0;
 Fri, 11 Oct 2024 12:27:52 +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 bFPjNMgZCWfkagAAD6G6ig
 (envelope-from <jgross@suse.com>); Fri, 11 Oct 2024 12:27: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: 3cc3312a-87cc-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728649673; 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=mSeU2If84l66PDOJ59XMLcV7XLr9GTHLce28wgBx0f0=;
	b=lWFcp1WphKFXgNm+inqiBzipp4RIZjt72yYvDN0mlWb3D2FPKylLVXjslI3k/u3lsV5/Qs
	aF3GcU74vCQEpy24blbDE8sdm/soDFp6Ifu3hvN8iiOU9NTtAfw+2rH4MfcI9DF3ERII4o
	3RLAGCNSdWIyjZV1a0r5zVsCuGX9exM=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728649673; 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=mSeU2If84l66PDOJ59XMLcV7XLr9GTHLce28wgBx0f0=;
	b=lWFcp1WphKFXgNm+inqiBzipp4RIZjt72yYvDN0mlWb3D2FPKylLVXjslI3k/u3lsV5/Qs
	aF3GcU74vCQEpy24blbDE8sdm/soDFp6Ifu3hvN8iiOU9NTtAfw+2rH4MfcI9DF3ERII4o
	3RLAGCNSdWIyjZV1a0r5zVsCuGX9exM=
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.12-rc3
Date: Fri, 11 Oct 2024 14:27:52 +0200
Message-ID: <20241011122752.13233-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	TO_DN_NONE(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Linus,

Please git pull the following tag:

 git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc3-tag

xen: branch for v6.12-rc3

It contains a single fix for topology information of Xen PV guests.

Thanks.

Juergen

 arch/x86/xen/enlighten_pv.c | 4 ++++
 1 file changed, 4 insertions(+)

Juergen Gross (1):
      x86/xen: mark boot CPU of PV guest in MSR_IA32_APICBASE


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:28:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:28:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817013.1231123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szEkQ-0005Wy-Og; Fri, 11 Oct 2024 12:27:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817013.1231123; Fri, 11 Oct 2024 12:27: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 1szEkQ-0005Wr-Lu; Fri, 11 Oct 2024 12:27:58 +0000
Received: by outflank-mailman (input) for mailman id 817013;
 Fri, 11 Oct 2024 12:27: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=HAGb=RH=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1szEkP-0005WV-TF
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:27: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 3d9b656a-87cc-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 14:27:55 +0200 (CEST)
Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com
 [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-48-2RP47B15O3-6cNQJCgchMw-1; Fri, 11 Oct 2024 08:27:53 -0400
Received: by mail-wm1-f71.google.com with SMTP id
 5b1f17b1804b1-4311407ae76so9783625e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:27:53 -0700 (PDT)
Received: from eisenberg.fritz.box ([2001:16b8:3d05:4700:3e59:7d70:cabd:144b])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4311835d95bsm40843965e9.47.2024.10.11.05.27.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 05:27:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d9b656a-87cc-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728649674;
	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=jxSLZfxQcQp5nvJu2lLsZnWBlpOwrXCfyPfNteYGXaQ=;
	b=E60s6Eir7Y59R5ECIPpCR387cwcQhZGD2BriEh7LbYMp1F6eaK+/w4mNLuqSmIHWP/wuzp
	KvuS4HY+S5+HsRevpAS42cHw3rURQ9phfYwmLvjHdhPnFeBAbunN2kNRmcA3RdS5jdpeEC
	400tGhpnTpYgrYc1KhqUplcs+seeyNQ=
X-MC-Unique: 2RP47B15O3-6cNQJCgchMw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728649672; x=1729254472;
        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=OvgPP8URR3aRLLAeRhIGd9GfEadFvbPu0wTLuyU+TtY=;
        b=ioRRAUzXoKzmk25AHk9vCd37f5X9Vr8II6Y03AcXpHXrnw9h9sBQ5i+71K7TDCsIbw
         cWQ6w2P1NNUEZR+3uz835SLeVWXfwxhi0Ar62Upt8947BOuBxTAWP/RZBKwAhQOGGbqa
         MQiQnDkqLp0kDXf+SMig+m8cKKr8Y91dA+DILcmbloE47pBuDrScCn5JBj71xFj695xc
         MuwBnX4olujkjJMFqsmZEJaCLy2ELVCM9ZaPcpkikX7ETsg47B1owcacaOFosI8M1GZA
         n+aUgKehjsj3d1myV0om6VhvWEhKmaOdj/QmV54ImBf6XfWFCq/xLFH0EvLPq5Txpw3i
         V3sg==
X-Forwarded-Encrypted: i=1; AJvYcCXHvrn/8Yy6ns13nGTI/Rhpzhjmr0GqlNoISJT4e7F2kmEO3iD+JlQMxxmycCFZMFbvzFj6LaiL29E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyLM1v8zGlEA6eEnhgYR7l5+G/1YUwaL2jNNZwVjvbTHh+LkyON
	wABIGh9jM/ZW3ENAPWDtgMK9F/mo83HEO54fw2s1rluPhsm881crq1s8b67jK2RsvxYjnkNepb6
	w8pLVMpKbuDLmtqodQnVT7Qpl+qef5eCKKA2paw8umZe16cdWJtLMDRlLyMfZDIrs
X-Received: by 2002:a05:600c:1f8c:b0:430:c3a5:652a with SMTP id 5b1f17b1804b1-4311ded53cbmr16268155e9.12.1728649672183;
        Fri, 11 Oct 2024 05:27:52 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEgVv3RNAOR2FC6mKD8YlkQf/6eOtik4XN5FWpHDbbO6uoNEPOtTgURod1/yDncIWXirvGTnQ==
X-Received: by 2002:a05:600c:1f8c:b0:430:c3a5:652a with SMTP id 5b1f17b1804b1-4311ded53cbmr16267425e9.12.1728649671758;
        Fri, 11 Oct 2024 05:27:51 -0700 (PDT)
Message-ID: <b13b75ae16b5238ab8b6e6d6e7a0797ed8415e80.camel@redhat.com>
Subject: Re: [RFC PATCH 02/13] ALSA: hda: hda_intel: Use always-managed
 version of pcim_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Hannes Reinecke <hare@suse.de>, John Garry
 <john.g.garry@oracle.com>, Soumya Negi <soumya.negi97@gmail.com>, Jason
 Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan
 Gilbert" <linux@treblig.org>, Christian Brauner <brauner@kernel.org>, Ankit
 Agrawal <ankita@nvidia.com>, Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Fri, 11 Oct 2024 14:27:48 +0200
In-Reply-To: <Zwfo4dr4bfqQGGyl@smile.fi.intel.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-3-pstanner@redhat.com>
	 <Zwfo4dr4bfqQGGyl@smile.fi.intel.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-10 at 17:46 +0300, Andy Shevchenko wrote:
> On Wed, Oct 09, 2024 at 10:35:08AM +0200, Philipp Stanner wrote:
> > pci_intx() is a hybrid function which can sometimes be managed
> > through
> > devres. To remove this hybrid nature from pci_intx(), it is
> > necessary to
> > port users to either an always-managed or a never-managed version.
> >=20
> > hda_intel enables its PCI-Device with pcim_enable_device(). Thus,
> > it needs
> > the always-managed version.
> >=20
> > Replace pci_intx() with pcim_intx().
>=20
> ...
>=20
> > =C2=A0=09bus->irq =3D chip->pci->irq;
> > =C2=A0=09chip->card->sync_irq =3D bus->irq;
> > -=09pci_intx(chip->pci, !chip->msi);
> > +=09pcim_intx(chip->pci, !chip->msi);
> > =C2=A0=09return 0;
>=20
> I believe each driver needs an individual approach. Looking at the
> above
> I would first to understand why this one is being used and why we
> can't
> switch to pci{m}_alloc_irq_vectors(). (Yeah, managed
> pci_alloc_irq_vectors()
> is probably still missing, I don't remember if you introduced it or
> not.
>=20

Alright alright =E2=80=93 we touched it in the other mail briefly, but let =
me
point out another specific problem:

pci_alloc_irq_vectors() *uses* pci_intx(). And pci_intx() can be
managed sometimes.

See the problem? :(

So it's not just that I couldn't port the driver Alex is concerned
about, it's also that MSI itself is a user of pci_intx().

So a pcim_alloc_irq_vectors() might end up doing double-devres or God
knows what else. Only once pci_intx() is clean one can start thinking
about the code in pci/msi/

It's the biggest reason why I want to clean it up as suggested here,
and also why the only patch I'm really nervous about is number 8.


P.



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:50:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:50:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817032.1231134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szF68-0004Tt-HG; Fri, 11 Oct 2024 12:50:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817032.1231134; Fri, 11 Oct 2024 12:50: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 1szF68-0004Tm-EI; Fri, 11 Oct 2024 12:50:24 +0000
Received: by outflank-mailman (input) for mailman id 817032;
 Fri, 11 Oct 2024 12:50: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=rzrJ=RH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1szF67-0004Tg-8D
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:50:23 +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 608e6ab3-87cf-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 14:50:22 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a995ec65c35so197192666b.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:50:22 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80c00bfsm208864566b.128.2024.10.11.05.50.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 05:50:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 608e6ab3-87cf-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728651021; x=1729255821; 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=CJpbGtclRoQ9R594jZ72P9M9LhVzwa9iNk8sbJoA4To=;
        b=XMfQddRrAf+O1/Lmoyi/kOJ1xW6j6z9Y/2zNsZumTwgNAnCmuYsd5atszel4n8xIlJ
         P6RgXHe0Q64yNLrlKOTC20vyZKeCbmhc7CNlH0aArakOiAcJxO2u+qX/d2oT0o9g2qg8
         cBGDc8avjUOIs80BF97zsxpvtEb5PDRW4WbgMiV6BbO1R0FGjkZendCz9MqQv1mITYaj
         /MN8W3a34r2mQ+S7Vt4y6IFZT4G8mMG5TKPg4mXPw7K9loQKuScgjtg59Q58njMZPDB+
         BViliFZMZHzSLRmBWa5EQPufX9vAtNW8d1DBoYDeKtpE5Lw0/3Y6RdDm3yj8GxKAfDuB
         W1xQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728651021; x=1729255821;
        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=CJpbGtclRoQ9R594jZ72P9M9LhVzwa9iNk8sbJoA4To=;
        b=Dbz0kk3gk/75y3z1wDYUAnP0dPGnl4MMUZ4Ruh59oK8IWdtZs1DdnPXP80XpzsqMfj
         uMqFkfOLaMoAm1/gEXoBxrGyr2VvhxONx+BN8r+GkTGVI555HKUVLkNe7lkg9pjqvws3
         TTwljJ9QeG6bdlxvL2sSiYKwaDdH7lcIUMNdQyvtWF4UtUSf65D+XEV1pY9U2VRUJgxQ
         RgHu8fTPkzN2zD5A2fcIbdMmV4RVsXQemM0iPN7h+Ogt1fSFhxILCx0E3qcZvGxZ1top
         1ucrmTzb2WPR2Jj5ooW//5QAw+kmoKbh4+ARukPDCcHN/0kL8hCRScxUAaa2RN2KJzrC
         7/fw==
X-Forwarded-Encrypted: i=1; AJvYcCU6M1tbTvLG6DVuofY1KbNuAE+3yczSD+it4+4oNN4z4cwlokMkN2MBOfyOV+V+umC35wGWVpkZkT4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwBy1p83q7yEiP+mfeVL7qm3MIkHLJ1eHarCVrnKFNczAE65Bxe
	ys0828SR8BYx0kc4O4gyNK0CDlztkmgEisIMtCelqVWKCqWGIssM2SsWPEpRyw==
X-Google-Smtp-Source: AGHT+IHR4JWOUdrlxR5cX2stPfbBdiac/WjKehZ8ZM5PVOoVUvCGbi1LtZzN45msuo3ATtHB+FlNOw==
X-Received: by 2002:a17:907:1c1b:b0:a86:6a9a:d719 with SMTP id a640c23a62f3a-a99b89f50abmr245784166b.29.1728651021457;
        Fri, 11 Oct 2024 05:50:21 -0700 (PDT)
Message-ID: <14eb87b1-76be-4c02-a32b-2d349c6c0f57@suse.com>
Date: Fri, 11 Oct 2024 14:50:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/5] x86/boot: Reuse code to relocate trampoline
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-3-frediano.ziglio@cloud.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: <20241011085244.432368-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 10:52, Frediano Ziglio wrote:
> --- /dev/null
> +++ b/xen/arch/x86/boot/reloc-trampoline.c
> @@ -0,0 +1,36 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/compiler.h>
> +#include <xen/stdint.h>
> +#include <asm/trampoline.h>
> +
> +extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
> +extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
> +
> +#if defined(__i386__)
> +void reloc_trampoline32(void)
> +#elif defined (__x86_64__)
> +void reloc_trampoline64(void)
> +#else
> +#error Unknow architecture

Nit: Unknown

Can likely be adjusted while committing.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 12:56:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 12:56:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817041.1231144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szFCO-0005Ow-6O; Fri, 11 Oct 2024 12:56:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817041.1231144; Fri, 11 Oct 2024 12: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 1szFCO-0005Op-22; Fri, 11 Oct 2024 12:56:52 +0000
Received: by outflank-mailman (input) for mailman id 817041;
 Fri, 11 Oct 2024 12:56: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=XZOt=RH=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1szFCM-00054s-Hm
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 12:56:50 +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 4727db0e-87d0-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 14:56:49 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c8af23a4fcso2594138a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 05:56:48 -0700 (PDT)
Received: from CSGPROD108744 ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c93711bc1bsm1911735a12.23.2024.10.11.05.56.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 05:56:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4727db0e-87d0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728651408; x=1729256208; 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=uFfl8TBLL4YoWstkWMP+nF9hc3H20+6374dsV4djux0=;
        b=FnT7xRR64+5KExXiHB6664nVOvTICzEZYDenYdq3ZV504ILt1yaRHlHIMyCOCBYhmc
         Red1bBIK2ib1zM9b9itDM7xsiz5arAMzfUM3QMaWvNLQCjHX67XggmRTOa2fW04/1TaM
         GOvw2L7FI1FNw237suasbjpW/XAKbi80MGOSs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728651408; x=1729256208;
        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=uFfl8TBLL4YoWstkWMP+nF9hc3H20+6374dsV4djux0=;
        b=vtdfgWbYsrzWdKpjrK9DRuf+C1baVGRSiSShlJNYM8EWG+3kldwWvbTVIUwkdnr88Q
         FmUqN8dfIypMI42nuGzwZcFViEQrlaho784SOb82A7F1lckrF6i6IipppVR+i35BhofG
         j5tQI0gWNmtWFHmwEZ/KM5c3UgMkHmJp7PTnUpdVLlBrUGLipf0YiHt3XN4x2aqdExsr
         TTCSHhh/fH2xqDzSvVrfZLpfKZPZpzUG+edHsGboe/AfnvaS3EyJBW6ajKcy1h9duFjQ
         JBKBa4tpM6Z7PjLxzo3T8DmGolfO59nx0MiYP3gBbI9HkLbRypn8GYEsFBMgvXRJRc4/
         yk/g==
X-Gm-Message-State: AOJu0YxNXJUSn2admy+wssTAbz423/NNAMdwytEcaL4GgbadxAXHrIc3
	EhCH3HqPARnhSwoeIvr8ET6irV0Y5AhTabw2f50v+YexGjCqPdbBJFxzCXlqRz8=
X-Google-Smtp-Source: AGHT+IEMXiFFhjmwoDAtt7sDJkNr2qAe62wkKXMaryNPni4dESKVsePAUEWGnK3SSNaMCA8zTIUgbA==
X-Received: by 2002:a05:6402:280d:b0:5c8:85a1:a12f with SMTP id 4fb4d7f45d1cf-5c948d79a60mr1473416a12.33.1728651408421;
        Fri, 11 Oct 2024 05:56:48 -0700 (PDT)
Date: Fri, 11 Oct 2024 13:56:46 +0100
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
Message-ID: <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20241011085244.432368-6-frediano.ziglio@cloud.com>

On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
>  xen/arch/x86/boot/reloc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> index e50e161b27..e725cfb6eb 100644
> --- a/xen/arch/x86/boot/reloc.c
> +++ b/xen/arch/x86/boot/reloc.c
> @@ -65,7 +65,7 @@ typedef struct memctx {
>      /*
>       * Simple bump allocator.
>       *
> -     * It starts from the base of the trampoline and allocates downwards.
> +     * It starts on top of space reserved for the trampoline and allocates downwards.

nit: Not sure this is much clearer. The trampoline is not a stack (and even if
it was, I personally find "top" and "bottom" quite ambiguous when it grows
backwards), so calling top to its lowest address seems more confusing than not.

If anything clarification ought to go in the which direction it takes. Leaving
"base" instead of "top" and replacing "downwards" by "backwards" to make it
crystal clear that it's a pointer that starts where the trampoline starts, but
moves in the opposite direction.

My .02 anyway.

>       */
>      uint32_t ptr;
>  } memctx;
> -- 
> 2.34.1
> 
> 

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:08:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:08:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817055.1231154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szFO0-0000sd-60; Fri, 11 Oct 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 817055.1231154; Fri, 11 Oct 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 1szFO0-0000sW-23; Fri, 11 Oct 2024 13:08:52 +0000
Received: by outflank-mailman (input) for mailman id 817055;
 Fri, 11 Oct 2024 13:08: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szFNy-0000sM-I3
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:08:50 +0000
Received: from mail-oi1-x22a.google.com (mail-oi1-x22a.google.com
 [2607:f8b0:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f413fd8d-87d1-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 15:08:49 +0200 (CEST)
Received: by mail-oi1-x22a.google.com with SMTP id
 5614622812f47-3e3dfc24a80so1228436b6e.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:08:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f413fd8d-87d1-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728652128; x=1729256928; 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=X48ueAHwz7VxKcFkVFTW2si4nTfK/LalP9YXmYZDgWg=;
        b=OYS6713C36j0mew7JMYYoG6hPGHQxDy7bgjwiMUXgkIwX2hZ0bYZDXg0F+G5uyvmPF
         C5gz9Vobi/emSJxFioWOjxQQjyTsMZNcujc7wX3zNgR5hoY5GBoCcA1Gg1IlOwkSxp7h
         L5bvERutv2QYvzOlaEuF+vG9rjPRDa9nyCWQY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728652128; x=1729256928;
        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=X48ueAHwz7VxKcFkVFTW2si4nTfK/LalP9YXmYZDgWg=;
        b=KM+3lQe4rcDC7xXRWNCWg5YwgH5f7v1LdaoSkhj8RbLKbIsmNMv59urOkj0XauIRR9
         2v2h63707lWB4IORJiAZwdgW83vaQdoq/Kn/7bvVXR8zLC+E4JLtC71RRKcnz9nHjQX9
         T3ffpOjjsYzrsayiYnCTAvyV0Bnjsg/DcuC5b7RPH4q1pqNYoYZPoiRyw7JPD7EKrGUo
         35diAKxzUGCWVdNHwpeXIXYJiCy7nskiAQi+aFMznqFENWZn52Q5IRQvd3TA1SRfs3t7
         /BXBP1tllu5kulpoH4djh1EeEQgd0VmlBrTlQk/tCpM/bEIhTpccN5ouyEqIWF9OyFNo
         HxuA==
X-Gm-Message-State: AOJu0YwBWrya0xKiDO8hECShca7qjunFrgAMpc0DCeU45dXsysn6gLfk
	f6PpEtLdfOoWp6MfOoZp7qV3aydIyjYWMHhCWCzPL3g4ivoLuH/VKZ5uKrF3J5zmGyT0lPzFKJ+
	3g8PEXzEY8LsFf9xtJ4rAPUk1aAJiiVCaHAsQTg==
X-Google-Smtp-Source: AGHT+IEHpgi/eTrqQ3LIzLDIuWos/9ENsh0mYVt+AQHR1LowIWqeE+ldRSmwPQRYUfglfP3XdmrZHtJkrO8O3FarKYw=
X-Received: by 2002:a05:6870:a54d:b0:278:222c:98c4 with SMTP id
 586e51a60fabf-2886ddd90a2mr2442284fac.21.1728652127871; Fri, 11 Oct 2024
 06:08:47 -0700 (PDT)
MIME-Version: 1.0
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com> <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
In-Reply-To: <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 11 Oct 2024 14:08:37 +0100
Message-ID: <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
To: Alejandro Vallejo <alejandro.vallejo@cloud.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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 11, 2024 at 1:56=E2=80=AFPM Alejandro Vallejo
<alejandro.vallejo@cloud.com> wrote:
>
> On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > ---
> >  xen/arch/x86/boot/reloc.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> > index e50e161b27..e725cfb6eb 100644
> > --- a/xen/arch/x86/boot/reloc.c
> > +++ b/xen/arch/x86/boot/reloc.c
> > @@ -65,7 +65,7 @@ typedef struct memctx {
> >      /*
> >       * Simple bump allocator.
> >       *
> > -     * It starts from the base of the trampoline and allocates downwar=
ds.
> > +     * It starts on top of space reserved for the trampoline and alloc=
ates downwards.
>
> nit: Not sure this is much clearer. The trampoline is not a stack (and ev=
en if
> it was, I personally find "top" and "bottom" quite ambiguous when it grow=
s
> backwards), so calling top to its lowest address seems more confusing tha=
n not.
>
> If anything clarification ought to go in the which direction it takes. Le=
aving
> "base" instead of "top" and replacing "downwards" by "backwards" to make =
it
> crystal clear that it's a pointer that starts where the trampoline starts=
, but
> moves in the opposite direction.
>

Base looks confusing to me, but surely that comment could be confusing.
For the trampoline 64 KB are reserved. Last 4 KB are used as a normal
stack (push/pop/call/whatever), first part gets a copy of the
trampoline code/data (about 6 Kb) the rest (so 64 - 4 - ~6 =3D ~54 kb)
is used for the copy of MBI information. That "rest" is what we are
talking about here.

> My .02 anyway.
>
> >       */
> >      uint32_t ptr;
> >  } memctx;
> > --
> > 2.34.1
> >
> >
>
> Cheers,
> Alejandro

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:17:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:17:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817064.1231164 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szFW1-0003de-Uq; Fri, 11 Oct 2024 13:17:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817064.1231164; Fri, 11 Oct 2024 13: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 1szFW1-0003dX-Rs; Fri, 11 Oct 2024 13:17:09 +0000
Received: by outflank-mailman (input) for mailman id 817064;
 Fri, 11 Oct 2024 13:17: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szFVz-0003dR-W8
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:17:08 +0000
Received: from mail-ej1-x644.google.com (mail-ej1-x644.google.com
 [2a00:1450:4864:20::644])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1c46617c-87d3-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 15:17:05 +0200 (CEST)
Received: by mail-ej1-x644.google.com with SMTP id
 a640c23a62f3a-a9952ea05c5so317028666b.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:17:05 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80c003esm211073566b.100.2024.10.11.06.17.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 06:17:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c46617c-87d3-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728652625; x=1729257425; 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=0lJrh7aS83syXbKr+LOO4V7JvNGIedJ4lakYA5b0Wzo=;
        b=rOB2M2+icFrlTQ+DqWEIgGDv5rLCkkK+7OJRR6hvxjcSm3EBkFapixHPRzw/pxKUvf
         TpGGh7vq0vXnn6nzJbJiiFsAe/B/hxfYjZ8o11xnUmrxLaVxoPAvdQ478iuoGGWA7IYq
         73ba37RBRcrLq6KetTjEkLP8+L0fcVB8oPca8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728652625; x=1729257425;
        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=0lJrh7aS83syXbKr+LOO4V7JvNGIedJ4lakYA5b0Wzo=;
        b=Z7d4QuyoiKFXSCI4w1dN+VFKN5oW7hF9FfRJQqYZllSsPQpI+j6m5arpSQREw1e8Kk
         AHHsnxO2qaOJDPJBt/FsEAKF6HB1ABcHlMczvidL9nSl5fakjlz8VIiMYPFsobXRnkrN
         G9GiqwbdkPPP6UwZNghfka/oVXivw5Yn2i1uw5ovOx0b+BWhX+DYljKtfIKGK474sUvy
         Mf0RLqI9dbwREPRuShDNVBUa8d+fmgMPv0mITYq0gOx8Mtrjp2wskg6paxwOe/f69w3G
         tstxl0hQWX6ly6Ez+03Q0bSAhu/W4u8Td+1CYKWgLOVfwrTBpV2DcsLLveyi2nzC8zcI
         MQyQ==
X-Forwarded-Encrypted: i=1; AJvYcCW9JFfbodd/saetUzY4F+XPDSsBEO7Ctym2YDOWnTFu6d4ECsBleoQOCLgoIzkNlwGVIhrTnVWBb8U=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzkn2Dp1iFPgewlRMD2IHUE2mFCR0j1OcS9danF2aKjv2IvPD21
	EQ8Mv8/S6ybLIHxoCwhyYTGqh7yw1xD6Up5dy5ZYV7MkGfxoumtrbKLBUvHHiOk=
X-Google-Smtp-Source: AGHT+IHiIgzc1/UudwEnwN6AEy3+B4y2LyXe/PxX/xOK6Hrgg4RG7jV8NxKHbWK5Tx419EOLdgugQA==
X-Received: by 2002:a17:907:d59e:b0:a99:4987:8878 with SMTP id a640c23a62f3a-a99b9455488mr226453066b.15.1728652624779;
        Fri, 11 Oct 2024 06:17:04 -0700 (PDT)
Message-ID: <47b117b4-4bee-4289-9dbf-98c89d64e7f6@citrix.com>
Date: Fri, 11 Oct 2024 14:17:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [python] [PATCH v3 1/5] x86/boot: create a C bundle for 32 bit
 boot code and use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-2-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241011085244.432368-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/10/2024 9:52 am, Frediano Ziglio wrote:
> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index ff0f965876..4cf0d7e140 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> ...
> +$(obj)/built_in_32.o: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
> +	$(PYTHON) $(srctree)/tools/combine_two_binaries \
> +		--script $(obj)/build32.final.lds \
> +		--bin1 $(obj)/built_in_32.other.bin --bin2 $(obj)/built_in_32.final.bin \
> +		--map $(obj)/built_in_32.final.map \
> +		--exports cmdline_parse_early,reloc \
> +		--section-header '.section .init.text, "ax", @progbits' \
> +		--output $(obj)/built_in_32.s

I can't see a case where we'd want this anywhere other than .init.text,
so I'd drop the --section-header and just write it out unconditionally. 
However, looking at the output:

xen$ head arch/x86/boot/built_in_32.S
    .section .init.text, "ax", @progbits
    .byte 137,194,128,56,0,116,6,64,128,56,0,117,250,41,208,195
    .byte 133,201,116,42,86,83,141,52,8,64,15,182,72,255,66,15
    .byte 182,90,255,56,217,117,15,132,201,116,25,57,198,117,234,184

This wants to start with a comment saying that it was automatically
generated by combine_two_binaries.

Next, we need some kind of symbol at the start.  Right now, the
disassembly reads:

    arch/x86/boot/built_in_32.o:     file format elf64-x86-64
    Disassembly of section .init.text:
    0000000000000000 <cmdline_parse_early-0x391>:
       0:   89 c2                   mov    %eax,%edx
       2:   80 38 00                cmpb   $0x0,(%eax)


because most metadata is lost by this transformation, and it doesn't
know that this is in fact strlen().  I'd suggest suggest obj32_start: or
equivalent.

> diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
> similarity index 63%
> rename from xen/arch/x86/boot/build32.lds
> rename to xen/arch/x86/boot/build32.lds.S
> index 56edaa727b..72a4c5c614 100644
> --- a/xen/arch/x86/boot/build32.lds
> +++ b/xen/arch/x86/boot/build32.lds.S
> @@ -15,22 +15,52 @@
>   * with this program.  If not, see <http://www.gnu.org/licenses/>.
>   */
>  
> -ENTRY(_start)
> +#ifdef FINAL
> +# define GAP 0
> +# define MULT 0
> +# define TEXT_START
> +#else
> +# define GAP 0x010200
> +# define MULT 1
> +# define TEXT_START 0x408020
> +#endif
> +# define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
> +
> +ENTRY(dummy_start)
>  
>  SECTIONS
>  {
> -  /* Merge code and data into one section. */
> -  .text : {
> +  /* Merge code and read-only data into one section. */
> +  .text TEXT_START : {
> +        /* Silence linker warning, we are not going to use it */
> +        dummy_start = .;
> +
> +        /* Declare below any symbol name needed.
> +         * Each symbol should be on its own line.
> +         * It looks like a tedious work but we make sure the things we use.
> +         * Potentially they should be all variables. */
> +        DECLARE_IMPORT(__base_relocs_start);
> +        DECLARE_IMPORT(__base_relocs_end);
> +        . = . + GAP;
>          *(.text)
>          *(.text.*)
> -        *(.data)
> -        *(.data.*)
>          *(.rodata)
>          *(.rodata.*)
> +  }
> +
> +  /* Writeable data sections. Check empty.
> +   * We collapse all into code section and we don't want it to be writeable. */
> +  .data : {
> +        *(.data)
> +        *(.data.*)
>          *(.bss)
>          *(.bss.*)
>    }
> -
> +  /DISCARD/ : {
> +       *(.comment)
> +       *(.comment.*)
> +       *(.note.*)
> +  }
>    /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
>    .got : {
>          *(.got)
> @@ -64,3 +94,4 @@ ASSERT(SIZEOF(.igot.plt) == 0,    ".igot.plt non-empty")
>  ASSERT(SIZEOF(.iplt) == 0,        ".iplt non-empty")
>  ASSERT(SIZEOF(.plt) == 0,         ".plt non-empty")
>  ASSERT(SIZEOF(.rel) == 0,         "leftover relocations")
> +ASSERT(SIZEOF(.data) == 0,        "we don't want data")

3mdeb are getting around to rebasing/resubmitting the Trenchboot work
(Intel TXT and AMD SKINIT) backing QubeOS Anti-Evil-Maid.

While most of the cleanup is proving very helpful (i.e. reducing their
work), the lack of .data was seen as likely to be a blocker.  Thinking
about this more, I'm now fairly certain we do not need to exclude data.

This object executes during boot in 32bit flat unpaged mode (i.e. there
are no actual restrictions during execution), and because it's all
wrapped in .init.text, its "just code" to the outside world.  This means
it does not impact R^X that we're trying to arrange for the EFI section
headers.

Therefore the data arrangements should stay as they were before, and I
think the result will be fine.  We obviously don't want gratuitous use
of .data, but we don't need to prohibit it either.

I've got various other suggestions for improvements of the result, but
they can all be deferred until later.  This is complicated enough.

> diff --git a/xen/tools/combine_two_binaries b/xen/tools/combine_two_binaries
> new file mode 100755
> index 0000000000..ea2d6ddc4e
> --- /dev/null
> +++ b/xen/tools/combine_two_binaries
> @@ -0,0 +1,198 @@
> +#!/usr/bin/env python3
> +
> +from __future__ import print_function
> +import argparse
> +import re
> +import struct
> +import sys
> +
> +parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
> +parser.add_argument('--script', dest='script',
> +                    required=True,
> +                    help='Linker script for extracting symbols')
> +parser.add_argument('--bin1', dest='bin1',
> +                    required=True,
> +                    help='First binary')
> +parser.add_argument('--bin2', dest='bin2',
> +                    required=True,
> +                    help='Second binary')
> +parser.add_argument('--output', dest='output',
> +                    help='Output file')
> +parser.add_argument('--map', dest='mapfile',
> +                    help='Map file to read for symbols to export')
> +parser.add_argument('--exports', dest='exports',
> +                    help='Symbols to export')
> +parser.add_argument('--section-header', dest='section_header',
> +                    default='.text',
> +                    help='Section header declaration')
> +parser.add_argument('-v', '--verbose',
> +                    action='store_true')
> +args = parser.parse_args()
> +
> +gap = 0x010200
> +text_diff = 0x408020
> +
> +# Parse linker script for external symbols to use.
> +symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')

What is this looking for?  I'd expect the DECLARE_IMPORT() lines, but
this is as clear as regexes...

> +symbols = {}
> +lines = {}
> +for line in open(args.script):
> +    m = symbol_re.match(line)
> +    if not m:
> +        continue
> +    (name, line_num) = (m.group(1), int(m.group(2)))
> +    if line_num == 0:
> +        raise Exception("Invalid line number found:\n\t" + line)
> +    if line_num in symbols:
> +        raise Exception("Symbol with this line already present:\n\t" + line)
> +    if name in lines:
> +        raise Exception("Symbol with this name already present:\n\t" + name)
> +    symbols[line_num] = name
> +    lines[name] = line_num
> +
> +exports = []
> +if args.exports is not None:
> +    exports = dict([(name, None) for name in args.exports.split(',')])
> +
> +# Parse mapfile, look for ther symbols we want to export.
> +if args.mapfile is not None:
> +    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
> +    for line in open(args.mapfile):
> +        m = symbol_re.match(line)
> +        if not m or m.group(2) not in exports:
> +            continue
> +        addr = int(m.group(1), 16)
> +        exports[m.group(2)] = addr
> +for (name, addr) in exports.items():
> +    if addr is None:
> +        raise Exception("Required export symbols %s not found" % name)
> +
> +file1 = open(args.bin1, 'rb')
> +file2 = open(args.bin2, 'rb')
> +file1.seek(0, 2)
> +size1 = file1.tell()
> +file2.seek(0, 2)
> +size2 = file2.tell()
> +if size1 > size2:
> +    file1, file2 = file2, file1
> +    size1, size2 = size2, size1
> +if size2 != size1 + gap:
> +    raise Exception('File sizes do not match')
> +
> +file1.seek(0, 0)
> +data1 = file1.read(size1)
> +file2.seek(gap, 0)
> +data2 = file2.read(size1)
> +
> +max_line = max(symbols.keys())
> +
> +def to_int32(n):
> +    '''Convert a number to signed 32 bit integer truncating if needed'''
> +    mask = (1 << 32) - 1
> +    h = 1 << 31
> +    return (n & mask) ^ h - h
> +
> +i = 0
> +references = {}
> +internals = 0
> +while i <= size1 - 4:
> +    n1 = struct.unpack('<I', data1[i:i+4])[0]
> +    n2 = struct.unpack('<I', data2[i:i+4])[0]
> +    i += 1
> +    # The two numbers are the same, no problems
> +    if n1 == n2:
> +        continue
> +    # Try to understand why they are different
> +    diff = to_int32(n1 - n2)
> +    if diff == -gap: # this is an internal relocation
> +        pos = i - 1
> +        print(("Internal relocation found at position %#x "
> +               "n1=%#x n2=%#x diff=%#x") % (pos, n1, n2, diff),

Here and elsewhere, you don't need brackets around around the string
itself.  Python strings are like C strings and will auto-concatenate.

> +              file=sys.stderr)
> +        i += 3
> +        internals += 1
> +        if internals >= 10:
> +            break
> +        continue
> +    # This is a relative relocation to a symbol, accepted, code/data is
> +    # relocatable.
> +    if diff < gap and diff >= gap - max_line:
> +        n = gap - diff
> +        symbol = symbols.get(n)
> +        # check we have a symbol
> +        if symbol is None:
> +            raise Exception("Cannot find symbol for line %d" % n)
> +        pos = i - 1
> +        if args.verbose:
> +            print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
> +        i += 3
> +        references[pos] = symbol
> +        continue
> +    # First byte is the same, move to next byte
> +    if diff & 0xff == 0 and i <= size1 - 4:
> +       continue
> +    # Probably a type of relocation we don't want or support
> +    pos = i - 1
> +    suggestion = ''
> +    symbol = symbols.get(-diff - text_diff)
> +    if symbol is not None:
> +        suggestion = " Maybe %s is not defined as hidden?" % symbol
> +    raise Exception(("Unexpected difference found at %#x "
> +                     "n1=%#x n2=%#x diff=%#x gap=%#x.%s") % \
> +                     (pos, n1, n2, diff, gap, suggestion))
> +if internals != 0:
> +    raise Exception("Previous relocations found")
> +
> +def line_bytes(buf, out):
> +    '''Output an assembly line with all bytes in "buf"'''
> +    if type(buf) == str:
> +        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
> +    else:
> +        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)

I'm guessing this is Py2/3 compatibility?

> +
> +def part(start, end, out):
> +    '''Output bytes of "data" from "start" to "end"'''
> +    while start < end:
> +        e = min(start + 16, end)
> +        line_bytes(data1[start:e], out)
> +        start = e
> +
> +def reference(pos, out):
> +    name = references[pos]
> +    n = struct.unpack('<I', data1[pos:pos+4])[0]
> +    sign = '+'
> +    if n >= (1 << 31):
> +        n -= (1 << 32)
> +    n += pos
> +    if n < 0:
> +        n = -n
> +        sign = '-'
> +    print("\t.hidden %s\n\t.long %s %s %#x - ." % (name, name, sign, n),

Personally, I think this is easier to read as:

    print("\t.hidden %s\n"
          "\t.long %s %s %#x - ." % (name, name, sign, n),
          file=out)

so it visually matches the output too.  Same for .globl/hidden lower.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:20:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:20:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817073.1231173 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szFZR-00058g-GJ; Fri, 11 Oct 2024 13:20:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817073.1231173; Fri, 11 Oct 2024 13: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 1szFZR-00058Z-Dk; Fri, 11 Oct 2024 13:20:41 +0000
Received: by outflank-mailman (input) for mailman id 817073;
 Fri, 11 Oct 2024 13:20: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=rzrJ=RH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1szFZQ-00058T-Jp
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:20:40 +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 9bdf0be1-87d3-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 15:20:39 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a99422c796eso332920066b.3
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:20:39 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7ec56d8sm214867766b.17.2024.10.11.06.20.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 06:20:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9bdf0be1-87d3-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728652839; x=1729257639; 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=ljgHPZPEXMkzkKbmfctsNa/cE2HGjnK3cHNZtxkS5X8=;
        b=aWuwx6wBtgy04rfStV4T9TOT7jpVmnZ6cxVTgIaE0b4m5OxIqYj4qQ8D5S6cTgVrfd
         T2/hsmplXw8Ke1CnJIYlNsf47awc2+f03AgzlfyX81p9gtNRGDwO1WZtx3zAZR8OzcnR
         SjOtg8dagNqxoAF3K7QYQ5df7xBiYGEZZjdUAd+ejtr1HvmwonmOh83eDHIFxS777v/G
         JCVK+UhhzYFyrv6DWtJZeRIvdj4g9DZHOZPDVhije2ouKgTsLMVxXAmx3twiIaEVKn6R
         w6DAbAAWC1joCo2riW81P/O/qEKBxJdcWQguB9e1pb7NqHn6TIdIF44iLAuNWHwPwpWa
         esgw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728652839; x=1729257639;
        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=ljgHPZPEXMkzkKbmfctsNa/cE2HGjnK3cHNZtxkS5X8=;
        b=CFatUZkal6O4BKgdJLrbizL+/5hzBZj2I6IzdB5vT79J0Cqy16IiB6L82fYcW2o5q0
         Foq5iyYTk5Wzj61GYKH1yweVtn8dh3ONzNorb3x5lr0zaoE/3n27snU7AE5qPwOTYgIW
         3ijlrT73BVJsheUTfkZ1KNKry54Bx9B+ZNR3oAWzjswiamyP4XisRaVMNvh2qXZlsUW+
         I2v16SdcSsuJigR81eSenBLwksuzJnG2ycVm4bcH5jSUZmU29hWBOeDW88FWTy2WeWnI
         viQz9gYoS5O3Adi+AjwX4ajPBzx4ON/kjFzejYl53YqJkeVIOCh2tBxDe3kIQJUCIdhN
         qgTw==
X-Forwarded-Encrypted: i=1; AJvYcCXrFUFVCZdc5s9Tz23fh+63oZRd2ttoCSwXOAk6D+iiM9jBOGOhk+1EmzctmcCaDY5ki5Zlc9KKgZw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyToo768NDtlrvk4lBHpDXHsuYF8LAcMVf9TIhrtKJnEJ42NsDc
	51XI7RP9Svl8E9tk3rEjCXe8aZ9gaKGyxgXjsxXbE7JIJZifKTMj6AfqycHBxQ==
X-Google-Smtp-Source: AGHT+IET7gb+na73nLpuD0xhdY8yvqJhGc262KTC+xl4RRmKYIVdQo0iVlEnB4fuWP4pE8rsD8n67A==
X-Received: by 2002:a17:907:7204:b0:a99:306c:cd75 with SMTP id a640c23a62f3a-a99b95f0d0emr199150066b.54.1728652838978;
        Fri, 11 Oct 2024 06:20:38 -0700 (PDT)
Message-ID: <1f9ea2e9-d2ce-4ae1-9a93-dffc856c1268@suse.com>
Date: Fri, 11 Oct 2024 15:20:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-2-frediano.ziglio@cloud.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: <20241011085244.432368-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 10:52, Frediano Ziglio wrote:
> diff --git a/xen/tools/combine_two_binaries b/xen/tools/combine_two_binaries
> new file mode 100755
> index 0000000000..ea2d6ddc4e
> --- /dev/null
> +++ b/xen/tools/combine_two_binaries
> @@ -0,0 +1,198 @@
> +#!/usr/bin/env python3

Nit: Such files, by convention, are named *.py, I think.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:21:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:21:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817078.1231184 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szFaF-0005da-Oe; Fri, 11 Oct 2024 13:21:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817078.1231184; Fri, 11 Oct 2024 13: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 1szFaF-0005dT-Lp; Fri, 11 Oct 2024 13:21:31 +0000
Received: by outflank-mailman (input) for mailman id 817078;
 Fri, 11 Oct 2024 13: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szFaE-0005X3-NI
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:21:30 +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 b97734c5-87d3-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 15:21:29 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9944c4d5d4so286336766b.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:21:29 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80c1ae4sm212765266b.129.2024.10.11.06.21.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 06:21:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b97734c5-87d3-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728652889; x=1729257689; 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=niXwiJf7Vgf/BIMfSPN9wCc+FW2vGlNFmjsZJnVJI+g=;
        b=E86kHG3iYew/gs/PjmsB8qrJFJQQ7kaGAsmSXO75z4R0ZNZPjHZR5S3OaHWIcv/z5B
         2/Ulx2PJjQ3E/Und/COn1NYuVrGyQa1fYHuDKJ/mBd5VIA7TRhuhxXeNq3OOymEY7uuP
         CEWjMcEMwv/K0MMcveHxy2kD5zX97B9FBvjEM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728652889; x=1729257689;
        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=niXwiJf7Vgf/BIMfSPN9wCc+FW2vGlNFmjsZJnVJI+g=;
        b=VK4+tmzGaZEp441UXZ2j/hpc6/yokxNmQHJqUwTCjm69/zXJ3S7fJ8lOH5V6g++Tl2
         6nHQIcSxicSFY/PWNDoUdEO7/+ufUrFeSOx3eD9yCFQ3eNsWI6psrKmQOHjO/b0BZ8o2
         aZbsujPV3GvuC0jgNsCqbVCXaoce2v6bfaq3oC7YM5egP0xhvYGa4CLfUIcLAwhcfDNH
         JBqPV65b9SsAqaVeU7Qa6omPjKp847/pdgRUoQW8kTvbVuJ+wgA6QHDPjyW4h0CbcyLM
         KlK5O114Sa13gzoe3FHQvfZzhzFxLbfFGpIuP9ED/WMbhfYXhAhfMoQKcHc1xAbAL+rJ
         HyQg==
X-Forwarded-Encrypted: i=1; AJvYcCW1OGwfOZmjcNUQG+dj5oJlncU1Sng+SVA1gfDgtPkWYGBIbEGokSHaAQjU9EB5mwyUpjpzJ2lwTuI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzMrlHI++asUBE+JbqYDUwpZ0rlpW0tR6LaWiZXP/LXQf5Gb6zK
	Jjmd4WrluJA9Am473bwO2P4YADAY4639r8093oDukB2wNjDupj9wqqCXdbEIKNk=
X-Google-Smtp-Source: AGHT+IFExPMobAK67XKczTwJx1NXvOqlI/8aMk0j4UIHGevBe1lmKMBdOq/kVLSAg9wQ9E3ylX852A==
X-Received: by 2002:a17:907:7b8e:b0:a99:537d:5d10 with SMTP id a640c23a62f3a-a99b8e935e4mr243226066b.0.1728652888705;
        Fri, 11 Oct 2024 06:21:28 -0700 (PDT)
Message-ID: <9fd32ff0-9be4-42a5-b1fa-e663d710b9d2@citrix.com>
Date: Fri, 11 Oct 2024 14:21:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Jan Beulich <jbeulich@suse.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-2-frediano.ziglio@cloud.com>
 <1f9ea2e9-d2ce-4ae1-9a93-dffc856c1268@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <1f9ea2e9-d2ce-4ae1-9a93-dffc856c1268@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/10/2024 2:20 pm, Jan Beulich wrote:
> On 11.10.2024 10:52, Frediano Ziglio wrote:
>> diff --git a/xen/tools/combine_two_binaries b/xen/tools/combine_two_binaries
>> new file mode 100755
>> index 0000000000..ea2d6ddc4e
>> --- /dev/null
>> +++ b/xen/tools/combine_two_binaries
>> @@ -0,0 +1,198 @@
>> +#!/usr/bin/env python3
> Nit: Such files, by convention, are named *.py, I think.

Yes please, and I forgot it on my python review.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:29:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:29:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817087.1231195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szFhU-0007eA-Ha; Fri, 11 Oct 2024 13:29:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817087.1231195; Fri, 11 Oct 2024 13: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 1szFhU-0007e3-D2; Fri, 11 Oct 2024 13:29:00 +0000
Received: by outflank-mailman (input) for mailman id 817087;
 Fri, 11 Oct 2024 13:28: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=XZOt=RH=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1szFhS-0007dx-RV
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:28:58 +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 c4e82306-87d4-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 15:28:57 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9943897c07so283087766b.3
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:28:57 -0700 (PDT)
Received: from CSGPROD108744 ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80dc496sm211862166b.154.2024.10.11.06.28.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 11 Oct 2024 06:28:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c4e82306-87d4-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728653337; x=1729258137; 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=+F7c2a/qw7d7O2Jv1xLoPJcgy9VvAbNEkev+VTUBnhE=;
        b=Stk55+SaQzhueO1sC+wBx7qIUcwMPMsI5kQ0T/pOyaVDki0SQrUCNbJ9tvcMwJIvII
         W4htvUJA00ZSkxxhMLq90Xo6NtRAf/JxkR3Zx8QKT0bgSSyitOMxGuynO0+wghCRGiXQ
         2h9rMuqTzulBWHPsX38ltTrc8+HRKw32myca4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728653337; x=1729258137;
        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=+F7c2a/qw7d7O2Jv1xLoPJcgy9VvAbNEkev+VTUBnhE=;
        b=BOajMpL49L7oM8pvpGJ5QimBzGxp/PGMRCA3ndlPlVlVpl9mSvx7Wto0Bgztiwj2p0
         9+Yifr4+O8Lz/X7kvt1SAnHGqKXtSX3I1zE2vlw43ceVukZZxYT2o4h0kfxq6Gp5rhK6
         j9Lg6GZ4qTbxPT361WabGvY4vqdQkl5qvpPo2xG7hiUzg3h9lfCLUwvTcdOgQLvi3j9E
         0G1wVSuTfhvApU2XUztycsNInKzlB8u/c1YFa0Ae/s2+E1OfagHCC7la3TrP8MCkg/Wg
         hrVZF94wNXVtNEx8XqeyFcgtwRI7dqbQkXIrzcA5a6KdyuakA6rDlbOctkf46ahjUVwc
         4UKQ==
X-Gm-Message-State: AOJu0YyaBSsrHnbquUEYSXmeG/NgT6BvYQp+zC0ZnSaj/G3MsDuHBPdZ
	lM0zhOjRnpmWU/BnZf5+oOAOnenJOvx1eP7rF0zrT9IzEuqVfSttvtR8zItQfmOl/VO4MZv5bAy
	T
X-Google-Smtp-Source: AGHT+IGdgakA46rWfRtZkuQ22Yop9RLrmarwhTUa2iS9xpATG0KtC8f9OF2IbyFah3EZW7aTGb2TCg==
X-Received: by 2002:a17:907:980d:b0:a99:d1f3:796f with SMTP id a640c23a62f3a-a99d1f40565mr49147666b.15.1728653337264;
        Fri, 11 Oct 2024 06:28:57 -0700 (PDT)
Date: Fri, 11 Oct 2024 14:28:55 +0100
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
Message-ID: <wbpdfwa3hgjqkixl7usy7ta3r4337txb5ppvj74oat2no5wk52@sisyzgauolhq>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com>
 <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
 <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>

On Fri, Oct 11, 2024 at 02:08:37PM +0100, Frediano Ziglio wrote:
> On Fri, Oct 11, 2024 at 1:56 PM Alejandro Vallejo
> <alejandro.vallejo@cloud.com> wrote:
> >
> > On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
> > > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > > ---
> > >  xen/arch/x86/boot/reloc.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> > > index e50e161b27..e725cfb6eb 100644
> > > --- a/xen/arch/x86/boot/reloc.c
> > > +++ b/xen/arch/x86/boot/reloc.c
> > > @@ -65,7 +65,7 @@ typedef struct memctx {
> > >      /*
> > >       * Simple bump allocator.
> > >       *
> > > -     * It starts from the base of the trampoline and allocates downwards.
> > > +     * It starts on top of space reserved for the trampoline and allocates downwards.
> >
> > nit: Not sure this is much clearer. The trampoline is not a stack (and even if
> > it was, I personally find "top" and "bottom" quite ambiguous when it grows
> > backwards), so calling top to its lowest address seems more confusing than not.
> >
> > If anything clarification ought to go in the which direction it takes. Leaving
> > "base" instead of "top" and replacing "downwards" by "backwards" to make it
> > crystal clear that it's a pointer that starts where the trampoline starts, but
> > moves in the opposite direction.
> >
> 
> Base looks confusing to me, but surely that comment could be confusing.
> For the trampoline 64 KB are reserved. Last 4 KB are used as a normal
> stack (push/pop/call/whatever), first part gets a copy of the
> trampoline code/data (about 6 Kb) the rest (so 64 - 4 - ~6 = ~54 kb)
> is used for the copy of MBI information. That "rest" is what we are
> talking about here.

Last? From what I looked at it seems to be the first 12K.

   #define TRAMPOLINE_STACK_SPACE  PAGE_SIZE
   #define TRAMPOLINE_SPACE        (KB(64) - TRAMPOLINE_STACK_SPACE)

To put it another way, with left=lo-addr and right=hi-addr. The code seems to
do this...

 |<--------------64K-------------->|
 |<-----12K--->|                   |
 +-------------+-----+-------------+
 | stack-space | mbi | trampoline  |
 +-------------+-----+-------------+
               ^  ^
               |  |
               |  +-- copied Multiboot info + modules
               +----- initial memctx.ptr

... with the stack growing backwards to avoid overflowing onto mbi.

Or am I missing something?

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:39:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:39:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817095.1231204 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szFrC-00024Q-Cm; Fri, 11 Oct 2024 13:39:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817095.1231204; Fri, 11 Oct 2024 13:39: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 1szFrC-00024J-9N; Fri, 11 Oct 2024 13:39:02 +0000
Received: by outflank-mailman (input) for mailman id 817095;
 Fri, 11 Oct 2024 13:39: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szFrA-00024D-Et
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:39:00 +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 2ad78d00-87d6-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 15:38:58 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a995f56ea2dso324996766b.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:38:58 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7ec585csm211495166b.3.2024.10.11.06.38.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 06:38:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2ad78d00-87d6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728653938; x=1729258738; 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=ZGLdmqqGVFk3NT5J+xIf3mEKoxl6SCwkzvrLg9ZPxp4=;
        b=JvGjvcn57BKDXED2WKNROm5kCOnbkyUcuWuBBc2twbcsRc8TeTGQPumcPPGDoU0G4/
         P4KD3UhQM1F+tWso9l2NI5g5ssDop4DbKw1PLQmhAJAQRL4mOFo2Fi3S6eBbtqF88kwC
         rN3/HhF0xJiKQZXM2LBbsmHIPKj1uyT+aqOeA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728653938; x=1729258738;
        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=ZGLdmqqGVFk3NT5J+xIf3mEKoxl6SCwkzvrLg9ZPxp4=;
        b=Udo3V8sSV2Pkc0nVsR86f3ImI92Rcf90SuNbtH8L2t4my5clYVVpaQkBANGVSgJEyG
         7RUKO6BGQzR311IjlUrA3iwD5tnbeL5SokzZafJuHS/kF3UHYqNR8Uc/1ApefvE3AmM2
         VLvDxBoDEke3piTyebGIKyBlWJipPqAUx9H43Q8zu9mJWw8Jlyc7CRnt8K7H+J1h/lPU
         q5685DT4z2QO7kTmhPxjV/Ly3PaIuJg1Sf3WZGYZL+4zwmL8RhhyeROUrgi3mmtQeY17
         kLXjSjkx03d+ESMUhT14XEyEVfB5jeJfZsfU1HobNudcZg/jear3CXGxQn2R15QWJOL7
         uMbw==
X-Gm-Message-State: AOJu0YyQ5qYDBBrd2/C0ntX7sj54ak2aeDvUTqZjTVlPINHnmxHnaNHz
	Sy9jNfL/0PRK0cKPF4uvUKE4dB8Mme4TF1NkgFcGttmboAt72UBy6UEcDD845lU=
X-Google-Smtp-Source: AGHT+IFthT/Dngh5KlhF9Glf/cvPQjHSieLEWHJWZIe/ylQGtHZALIr2MwK1e6YaJd254xfDDKCVFA==
X-Received: by 2002:a17:907:7fa1:b0:a99:8ed2:7e0a with SMTP id a640c23a62f3a-a99b9300117mr206465466b.3.1728653937765;
        Fri, 11 Oct 2024 06:38:57 -0700 (PDT)
Message-ID: <48f0d04a-f1e8-4c00-b71a-42fe035a3d0f@citrix.com>
Date: Fri, 11 Oct 2024 14:38:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com>
 <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
 <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>
 <wbpdfwa3hgjqkixl7usy7ta3r4337txb5ppvj74oat2no5wk52@sisyzgauolhq>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <wbpdfwa3hgjqkixl7usy7ta3r4337txb5ppvj74oat2no5wk52@sisyzgauolhq>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/10/2024 2:28 pm, Alejandro Vallejo wrote:
> On Fri, Oct 11, 2024 at 02:08:37PM +0100, Frediano Ziglio wrote:
>> On Fri, Oct 11, 2024 at 1:56 PM Alejandro Vallejo
>> <alejandro.vallejo@cloud.com> wrote:
>>> On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
>>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>>>> ---
>>>>  xen/arch/x86/boot/reloc.c | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
>>>> index e50e161b27..e725cfb6eb 100644
>>>> --- a/xen/arch/x86/boot/reloc.c
>>>> +++ b/xen/arch/x86/boot/reloc.c
>>>> @@ -65,7 +65,7 @@ typedef struct memctx {
>>>>      /*
>>>>       * Simple bump allocator.
>>>>       *
>>>> -     * It starts from the base of the trampoline and allocates downwards.
>>>> +     * It starts on top of space reserved for the trampoline and allocates downwards.
>>> nit: Not sure this is much clearer. The trampoline is not a stack (and even if
>>> it was, I personally find "top" and "bottom" quite ambiguous when it grows
>>> backwards), so calling top to its lowest address seems more confusing than not.
>>>
>>> If anything clarification ought to go in the which direction it takes. Leaving
>>> "base" instead of "top" and replacing "downwards" by "backwards" to make it
>>> crystal clear that it's a pointer that starts where the trampoline starts, but
>>> moves in the opposite direction.
>>>
>> Base looks confusing to me, but surely that comment could be confusing.
>> For the trampoline 64 KB are reserved. Last 4 KB are used as a normal
>> stack (push/pop/call/whatever), first part gets a copy of the
>> trampoline code/data (about 6 Kb) the rest (so 64 - 4 - ~6 = ~54 kb)
>> is used for the copy of MBI information. That "rest" is what we are
>> talking about here.
> Last? From what I looked at it seems to be the first 12K.
>
>    #define TRAMPOLINE_STACK_SPACE  PAGE_SIZE
>    #define TRAMPOLINE_SPACE        (KB(64) - TRAMPOLINE_STACK_SPACE)
>
> To put it another way, with left=lo-addr and right=hi-addr. The code seems to
> do this...
>
>  |<--------------64K-------------->|
>  |<-----12K--->|                   |
>  +-------------+-----+-------------+
>  | stack-space | mbi | trampoline  |
>  +-------------+-----+-------------+
>                ^  ^
>                |  |
>                |  +-- copied Multiboot info + modules
>                +----- initial memctx.ptr
>
> ... with the stack growing backwards to avoid overflowing onto mbi.
>
> Or am I missing something?

So I was hoping for some kind of diagram like this, to live in
arch/x86/include/asm/trampoline.h with the other notes about the trampoline.

But, is that diagram accurate?  Looking at


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:51:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:51:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817107.1231214 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szG35-0005uQ-Dw; Fri, 11 Oct 2024 13:51:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817107.1231214; Fri, 11 Oct 2024 13: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 1szG35-0005uJ-BA; Fri, 11 Oct 2024 13:51:19 +0000
Received: by outflank-mailman (input) for mailman id 817107;
 Fri, 11 Oct 2024 13:51: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=NLyP=RH=linux.intel.com=andriy.shevchenko@srs-se1.protection.inumbo.net>)
 id 1szG33-0005uD-D8
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:51:17 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e0e9f4b9-87d7-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 15:51:15 +0200 (CEST)
Received: from orviesa010.jf.intel.com ([10.64.159.150])
 by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 11 Oct 2024 06:51:12 -0700
Received: from smile.fi.intel.com ([10.237.72.154])
 by orviesa010.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 11 Oct 2024 06:50:58 -0700
Received: from andy by smile.fi.intel.com with local (Exim 4.98)
 (envelope-from <andriy.shevchenko@linux.intel.com>)
 id 1szG2d-00000001uKQ-3BlX; Fri, 11 Oct 2024 16:50:51 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e0e9f4b9-87d7-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1728654675; x=1760190675;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:content-transfer-encoding:in-reply-to;
  bh=JZpTFHIOKgsBhrK+TAyqIMe3uV9e4+zAkXpEvbByrtE=;
  b=HKqutVeZR55nptxrYTLJXL+V0HeOiPrueV6HIcWjxQWqSgkJ2ZZhGyQQ
   GcUO5SYvmWadTUCbBR5TLD6NV0JHZci5PyFKVFVgN9sqTkrivEjVs/gTS
   8ghtjxEh2uFF5ewH2EmtVOeeaXshfQgffO8DtJyxl3jOqddVEBZvuzHXq
   N8lCmrBBuKtbBKwnPSS1gzaGgpW9myetFbZsh6u4mmy9EN5g/8LZ+6yGG
   N//33Imh0t5r8Uxz95HpFaqdSD95MeDT/J445G/l9yPdRwoOkUlIqnBQO
   3ouQ1baiDT3856u8qLuN2kz+ipkzLqRZqlK3RYlsaM11PgC9JvDjP9tnx
   Q==;
X-CSE-ConnectionGUID: mEzR2fJjTyCwMgHJI6KdgA==
X-CSE-MsgGUID: Cls/6NqETleIwYLFmfpC1w==
X-IronPort-AV: E=McAfee;i="6700,10204,11222"; a="27862193"
X-IronPort-AV: E=Sophos;i="6.11,196,1725346800"; 
   d="scan'208";a="27862193"
X-CSE-ConnectionGUID: +v41otkISg+36h8OYkcGUw==
X-CSE-MsgGUID: Wq59MZX2TDuGSzOxtLCdcA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,196,1725346800"; 
   d="scan'208";a="76834109"
Date: Fri, 11 Oct 2024 16:50:51 +0300
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Chen Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Hannes Reinecke <hare@suse.de>,
	John Garry <john.g.garry@oracle.com>,
	Soumya Negi <soumya.negi97@gmail.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>,
	"Dr. David Alan Gilbert" <linux@treblig.org>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>,
	Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org,
	linux-staging@lists.linux.dev, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
Message-ID: <ZwktO8AUmFEakhVP@smile.fi.intel.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
 <20241009083519.10088-2-pstanner@redhat.com>
 <ZwfnULv2myACxnVb@smile.fi.intel.com>
 <f65e9fa01a1947782fc930876e5f84174408db67.camel@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f65e9fa01a1947782fc930876e5f84174408db67.camel@redhat.com>
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo

On Fri, Oct 11, 2024 at 02:16:06PM +0200, Philipp Stanner wrote:
> On Thu, 2024-10-10 at 17:40 +0300, Andy Shevchenko wrote:
> > On Wed, Oct 09, 2024 at 10:35:07AM +0200, Philipp Stanner wrote:
> > > pci_intx() is a hybrid function which sometimes performs devres
> > > operations, depending on whether pcim_enable_device() has been used
> > > to
> > > enable the pci_dev. This sometimes-managed nature of the function
> > > is
> > > problematic. Notably, it causes the function to allocate under some
> > > circumstances which makes it unusable from interrupt context.
> > > 
> > > To, ultimately, remove the hybrid nature from pci_intx(), it is
> > > first
> > > necessary to provide an always-managed and a never-managed version
> > > of that function. Then, all callers of pci_intx() can be ported to
> > > the
> > > version they need, depending whether they use pci_enable_device()
> > > or
> > > pcim_enable_device().

> > > An always-managed function exists, namely pcim_intx(), for which
> > > __pcim_intx(), a never-managed version of pci_intx() had been
> > > implemented.
> > 
> > > Make __pcim_intx() a public function under the name
> > > pci_intx_unmanaged(). Make pcim_intx() a public function.

It seems I got confused by these two paragraphs. Why the double underscored
function is even mentioned here?

> > To avoid an additional churn we can make just completely new APIs,
> > namely:
> > pcim_int_x()
> > pci_int_x()
> > 
> > You won't need all dirty dances with double underscored function
> > naming and
> > renaming.
> 
> hm.. I can't follow. The new version doesn't use double underscores
> anymore. __pcim_intx() is being removed, effectively.
> After this series, we'd end up with a clean:
> 
> 	pci_intx() <-> pcim_intx()
> 
> just as in the other PCI APIs.

...

> > > +	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> > > +
> > > +	if (enable)
> > > +		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
> > > +	else
> > > +		new = pci_command | PCI_COMMAND_INTX_DISABLE;
> > > +
> > > +	if (new != pci_command)
> > 
> > I would use positive conditionals as easy to read (yes, a couple of
> > lines
> > longer, but also a win is the indentation and avoiding an additional
> > churn in
> > the future in case we need to add something in this branch.
> 
> I can't follow. You mean:
> 
> if (new == pci_command)
>     return;
> 
> ?
> 
> That's exactly the same level of indentation.

No, the body gets one level off.

> Plus, I just copied the code.
> 
> > > +		pci_write_config_word(pdev, PCI_COMMAND, new);

	if (new == pci_command)
		return;

	pci_write_config_word(pdev, PCI_COMMAND, new);

See the difference?
Also, imaging adding a new code in your case:

	if (new != pci_command)
		pci_write_config_word(pdev, PCI_COMMAND, new);

==>

	if (new != pci_command) {
		...foo...
		pci_write_config_word(pdev, PCI_COMMAND, new);
		...bar...
	}

And in mine:

	if (new == pci_command)
		return;

	...foo...
	pci_write_config_word(pdev, PCI_COMMAND, new);
	...bar...

I hope it's clear now what I meant.

-- 
With Best Regards,
Andy Shevchenko




From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:54:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:54:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817113.1231223 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szG5s-0006UF-S9; Fri, 11 Oct 2024 13:54:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817113.1231223; Fri, 11 Oct 2024 13: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 1szG5s-0006U8-Pa; Fri, 11 Oct 2024 13:54:12 +0000
Received: by outflank-mailman (input) for mailman id 817113;
 Fri, 11 Oct 2024 13:54: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szG5r-0006Ty-AN
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:54:11 +0000
Received: from mail-oa1-x35.google.com (mail-oa1-x35.google.com
 [2001:4860:4864:20::35])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 498b4e0d-87d8-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 15:54:10 +0200 (CEST)
Received: by mail-oa1-x35.google.com with SMTP id
 586e51a60fabf-2877d7ae3e5so893255fac.3
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:54:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 498b4e0d-87d8-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728654848; x=1729259648; 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=LL82iFWCT1exrhi4Th/nMnYOuRqIUzzlFX0DgcZpNVg=;
        b=Yh9KOFKNWlElyvezi17JxvS7shP0Ep24gk7aSRciTvZrcZdTh2pI/0VLeMLEW2Up9G
         9gtHHvMAXnVUKNnZ9BcRh3N6tz19u4y+RoXKu9xa5Owy3FOZZIhGewhP9luGVxAmkm5r
         CEjkS2OtjGR9PYTGGLskNrTeAxOveN/bKXJaQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728654848; x=1729259648;
        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=LL82iFWCT1exrhi4Th/nMnYOuRqIUzzlFX0DgcZpNVg=;
        b=E2iqZRqM1a3mK6OY3N1JUKvD/OIr7g8yF8WBEIIxaLe2wm0XE/f6hjfytiQNMlw7NZ
         avxYjGzgfpuq8STn0cLd3JKSxrqRDEmGsP1o733oJYWREOSbgybUdt953r06DAFuHQSS
         WsUA4LE3hXhe3hSlSc39DvKePK29LfKxaNaIol8026rghRI9FanlLE3avkdTqiFBqPPx
         E2KPNevUduJOwzJCHsi7B/SL6aGF32OB4owA/5h4OE0L8vjc3yypJl3qmWykhCs4fbB6
         qew+h7M57xc4u6yDcmFwweFJ0lDsuoRkmAkMXoM+gXgNSNha5bkwG4umBMRu25/f+j1u
         1KbA==
X-Gm-Message-State: AOJu0YwTW5DCgVWlJA2kOKUL9yofBBaPej4/ptM/Qr4gzibEldbeYFyj
	C3qpTlJYUEe/7GS+eWu3NSi7riu5RN5jIvEB8ZKJg8OFBrfO2Jw1Dh+o0JGOeQTJpqHg3Qazmmh
	Y0X5IjoJjUveyWBpwN2f41zhMsgCJqOEAbCNPXg==
X-Google-Smtp-Source: AGHT+IGl8FhcALIjQ57XQBYjAbvvf5ZzOiKmpeU5+hCYrxYLgz46C2bwIG024Vf0Xg/FG1bRepH8d7gIly09EMRP/Do=
X-Received: by 2002:a05:6870:7d1a:b0:288:62c8:fd4b with SMTP id
 586e51a60fabf-2886de24cd6mr1646571fac.28.1728654848120; Fri, 11 Oct 2024
 06:54:08 -0700 (PDT)
MIME-Version: 1.0
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-2-frediano.ziglio@cloud.com> <47b117b4-4bee-4289-9dbf-98c89d64e7f6@citrix.com>
In-Reply-To: <47b117b4-4bee-4289-9dbf-98c89d64e7f6@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 11 Oct 2024 14:53:57 +0100
Message-ID: <CACHz=Zgh-OmHF79rPez+usfszo=oW-P5kJzy-Q9GBDcM7gfHiA@mail.gmail.com>
Subject: Re: [python] [PATCH v3 1/5] x86/boot: create a C bundle for 32 bit
 boot code and use it
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 11, 2024 at 2:17=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> On 11/10/2024 9:52 am, Frediano Ziglio wrote:
> > diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> > index ff0f965876..4cf0d7e140 100644
> > --- a/xen/arch/x86/boot/Makefile
> > +++ b/xen/arch/x86/boot/Makefile
> > ...
> > +$(obj)/built_in_32.o: $(obj)/built_in_32.other.bin $(obj)/built_in_32.=
final.bin
> > +     $(PYTHON) $(srctree)/tools/combine_two_binaries \
> > +             --script $(obj)/build32.final.lds \
> > +             --bin1 $(obj)/built_in_32.other.bin --bin2 $(obj)/built_i=
n_32.final.bin \
> > +             --map $(obj)/built_in_32.final.map \
> > +             --exports cmdline_parse_early,reloc \
> > +             --section-header '.section .init.text, "ax", @progbits' \
> > +             --output $(obj)/built_in_32.s
>
> I can't see a case where we'd want this anywhere other than .init.text,
> so I'd drop the --section-header and just write it out unconditionally.

Could we just change the default in Python code and remove the option
calling the script?

> However, looking at the output:
>
> xen$ head arch/x86/boot/built_in_32.S
>     .section .init.text, "ax", @progbits
>     .byte 137,194,128,56,0,116,6,64,128,56,0,117,250,41,208,195
>     .byte 133,201,116,42,86,83,141,52,8,64,15,182,72,255,66,15
>     .byte 182,90,255,56,217,117,15,132,201,116,25,57,198,117,234,184
>
> This wants to start with a comment saying that it was automatically
> generated by combine_two_binaries.
>

Added a

print('''/*
 * File autogenerated by combine_two_binaries.py DO NOT EDIT
 */''', file=3Dout)

statement

And renamed the script file adding the ".py".

> Next, we need some kind of symbol at the start.  Right now, the
> disassembly reads:
>
>     arch/x86/boot/built_in_32.o:     file format elf64-x86-64
>     Disassembly of section .init.text:
>     0000000000000000 <cmdline_parse_early-0x391>:
>        0:   89 c2                   mov    %eax,%edx
>        2:   80 38 00                cmpb   $0x0,(%eax)
>
>
> because most metadata is lost by this transformation, and it doesn't
> know that this is in fact strlen().  I'd suggest suggest obj32_start: or
> equivalent.
>

Would "obj_start" fine too? Maybe in the future it could be used for
64 bit too (to avoid mistakes like the relocation of error strings we
had).

> > diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.=
lds.S
> > similarity index 63%
> > rename from xen/arch/x86/boot/build32.lds
> > rename to xen/arch/x86/boot/build32.lds.S
> > index 56edaa727b..72a4c5c614 100644
> > --- a/xen/arch/x86/boot/build32.lds
> > +++ b/xen/arch/x86/boot/build32.lds.S
> > @@ -15,22 +15,52 @@
> >   * with this program.  If not, see <http://www.gnu.org/licenses/>.
> >   */
> >
> > -ENTRY(_start)
> > +#ifdef FINAL
> > +# define GAP 0
> > +# define MULT 0
> > +# define TEXT_START
> > +#else
> > +# define GAP 0x010200
> > +# define MULT 1
> > +# define TEXT_START 0x408020
> > +#endif
> > +# define DECLARE_IMPORT(name) name =3D . + (__LINE__ * MULT)
> > +
> > +ENTRY(dummy_start)
> >
> >  SECTIONS
> >  {
> > -  /* Merge code and data into one section. */
> > -  .text : {
> > +  /* Merge code and read-only data into one section. */
> > +  .text TEXT_START : {
> > +        /* Silence linker warning, we are not going to use it */
> > +        dummy_start =3D .;
> > +
> > +        /* Declare below any symbol name needed.
> > +         * Each symbol should be on its own line.
> > +         * It looks like a tedious work but we make sure the things we=
 use.
> > +         * Potentially they should be all variables. */
> > +        DECLARE_IMPORT(__base_relocs_start);
> > +        DECLARE_IMPORT(__base_relocs_end);
> > +        . =3D . + GAP;
> >          *(.text)
> >          *(.text.*)
> > -        *(.data)
> > -        *(.data.*)
> >          *(.rodata)
> >          *(.rodata.*)
> > +  }
> > +
> > +  /* Writeable data sections. Check empty.
> > +   * We collapse all into code section and we don't want it to be writ=
eable. */
> > +  .data : {
> > +        *(.data)
> > +        *(.data.*)
> >          *(.bss)
> >          *(.bss.*)
> >    }
> > -
> > +  /DISCARD/ : {
> > +       *(.comment)
> > +       *(.comment.*)
> > +       *(.note.*)
> > +  }
> >    /* Dynamic linkage sections.  Collected simply so we can check they'=
re empty. */
> >    .got : {
> >          *(.got)
> > @@ -64,3 +94,4 @@ ASSERT(SIZEOF(.igot.plt) =3D=3D 0,    ".igot.plt non-=
empty")
> >  ASSERT(SIZEOF(.iplt) =3D=3D 0,        ".iplt non-empty")
> >  ASSERT(SIZEOF(.plt) =3D=3D 0,         ".plt non-empty")
> >  ASSERT(SIZEOF(.rel) =3D=3D 0,         "leftover relocations")
> > +ASSERT(SIZEOF(.data) =3D=3D 0,        "we don't want data")
>
> 3mdeb are getting around to rebasing/resubmitting the Trenchboot work
> (Intel TXT and AMD SKINIT) backing QubeOS Anti-Evil-Maid.
>
> While most of the cleanup is proving very helpful (i.e. reducing their
> work), the lack of .data was seen as likely to be a blocker.  Thinking
> about this more, I'm now fairly certain we do not need to exclude data.
>

We could change if needed in the future.
Can I order:
- .text
- .rodata
- .data
- .bss

instead of old

- .text
- .data
- .rodata
- .bss

So all readonly code/data are more close?

> This object executes during boot in 32bit flat unpaged mode (i.e. there
> are no actual restrictions during execution), and because it's all
> wrapped in .init.text, its "just code" to the outside world.  This means
> it does not impact R^X that we're trying to arrange for the EFI section
> headers.
>
> Therefore the data arrangements should stay as they were before, and I
> think the result will be fine.  We obviously don't want gratuitous use
> of .data, but we don't need to prohibit it either.
>
> I've got various other suggestions for improvements of the result, but
> they can all be deferred until later.  This is complicated enough.
>
> > diff --git a/xen/tools/combine_two_binaries b/xen/tools/combine_two_bin=
aries
> > new file mode 100755
> > index 0000000000..ea2d6ddc4e
> > --- /dev/null
> > +++ b/xen/tools/combine_two_binaries
> > @@ -0,0 +1,198 @@
> > +#!/usr/bin/env python3
> > +
> > +from __future__ import print_function
> > +import argparse
> > +import re
> > +import struct
> > +import sys
> > +
> > +parser =3D argparse.ArgumentParser(description=3D'Generate assembly fi=
le to merge into other code.')
> > +parser.add_argument('--script', dest=3D'script',
> > +                    required=3DTrue,
> > +                    help=3D'Linker script for extracting symbols')
> > +parser.add_argument('--bin1', dest=3D'bin1',
> > +                    required=3DTrue,
> > +                    help=3D'First binary')
> > +parser.add_argument('--bin2', dest=3D'bin2',
> > +                    required=3DTrue,
> > +                    help=3D'Second binary')
> > +parser.add_argument('--output', dest=3D'output',
> > +                    help=3D'Output file')
> > +parser.add_argument('--map', dest=3D'mapfile',
> > +                    help=3D'Map file to read for symbols to export')
> > +parser.add_argument('--exports', dest=3D'exports',
> > +                    help=3D'Symbols to export')
> > +parser.add_argument('--section-header', dest=3D'section_header',
> > +                    default=3D'.text',
> > +                    help=3D'Section header declaration')
> > +parser.add_argument('-v', '--verbose',
> > +                    action=3D'store_true')
> > +args =3D parser.parse_args()
> > +
> > +gap =3D 0x010200
> > +text_diff =3D 0x408020
> > +
> > +# Parse linker script for external symbols to use.
> > +symbol_re =3D re.compile(r'\s+(\S+)\s*=3D\s*\.\s*\+\s*\((\d+)\s*\*\s*0=
\s*\)\s*;')
>
> What is this looking for?  I'd expect the DECLARE_IMPORT() lines, but
> this is as clear as regexes...
>

Added a

# Next regex matches expanded DECLARE_IMPORT lines in linker script.

comment

> > +symbols =3D {}
> > +lines =3D {}
> > +for line in open(args.script):
> > +    m =3D symbol_re.match(line)
> > +    if not m:
> > +        continue
> > +    (name, line_num) =3D (m.group(1), int(m.group(2)))
> > +    if line_num =3D=3D 0:
> > +        raise Exception("Invalid line number found:\n\t" + line)
> > +    if line_num in symbols:
> > +        raise Exception("Symbol with this line already present:\n\t" +=
 line)
> > +    if name in lines:
> > +        raise Exception("Symbol with this name already present:\n\t" +=
 name)
> > +    symbols[line_num] =3D name
> > +    lines[name] =3D line_num
> > +
> > +exports =3D []
> > +if args.exports is not None:
> > +    exports =3D dict([(name, None) for name in args.exports.split(',')=
])
> > +
> > +# Parse mapfile, look for ther symbols we want to export.
> > +if args.mapfile is not None:
> > +    symbol_re =3D re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
> > +    for line in open(args.mapfile):
> > +        m =3D symbol_re.match(line)
> > +        if not m or m.group(2) not in exports:
> > +            continue
> > +        addr =3D int(m.group(1), 16)
> > +        exports[m.group(2)] =3D addr
> > +for (name, addr) in exports.items():
> > +    if addr is None:
> > +        raise Exception("Required export symbols %s not found" % name)
> > +
> > +file1 =3D open(args.bin1, 'rb')
> > +file2 =3D open(args.bin2, 'rb')
> > +file1.seek(0, 2)
> > +size1 =3D file1.tell()
> > +file2.seek(0, 2)
> > +size2 =3D file2.tell()
> > +if size1 > size2:
> > +    file1, file2 =3D file2, file1
> > +    size1, size2 =3D size2, size1
> > +if size2 !=3D size1 + gap:
> > +    raise Exception('File sizes do not match')
> > +
> > +file1.seek(0, 0)
> > +data1 =3D file1.read(size1)
> > +file2.seek(gap, 0)
> > +data2 =3D file2.read(size1)
> > +
> > +max_line =3D max(symbols.keys())
> > +
> > +def to_int32(n):
> > +    '''Convert a number to signed 32 bit integer truncating if needed'=
''
> > +    mask =3D (1 << 32) - 1
> > +    h =3D 1 << 31
> > +    return (n & mask) ^ h - h
> > +
> > +i =3D 0
> > +references =3D {}
> > +internals =3D 0
> > +while i <=3D size1 - 4:
> > +    n1 =3D struct.unpack('<I', data1[i:i+4])[0]
> > +    n2 =3D struct.unpack('<I', data2[i:i+4])[0]
> > +    i +=3D 1
> > +    # The two numbers are the same, no problems
> > +    if n1 =3D=3D n2:
> > +        continue
> > +    # Try to understand why they are different
> > +    diff =3D to_int32(n1 - n2)
> > +    if diff =3D=3D -gap: # this is an internal relocation
> > +        pos =3D i - 1
> > +        print(("Internal relocation found at position %#x "
> > +               "n1=3D%#x n2=3D%#x diff=3D%#x") % (pos, n1, n2, diff),
>
> Here and elsewhere, you don't need brackets around around the string
> itself.  Python strings are like C strings and will auto-concatenate.
>

Done (also another similar occurency below).

> > +              file=3Dsys.stderr)
> > +        i +=3D 3
> > +        internals +=3D 1
> > +        if internals >=3D 10:
> > +            break
> > +        continue
> > +    # This is a relative relocation to a symbol, accepted, code/data i=
s
> > +    # relocatable.
> > +    if diff < gap and diff >=3D gap - max_line:
> > +        n =3D gap - diff
> > +        symbol =3D symbols.get(n)
> > +        # check we have a symbol
> > +        if symbol is None:
> > +            raise Exception("Cannot find symbol for line %d" % n)
> > +        pos =3D i - 1
> > +        if args.verbose:
> > +            print('Position %#x %d %s' % (pos, n, symbol), file=3Dsys.=
stderr)
> > +        i +=3D 3
> > +        references[pos] =3D symbol
> > +        continue
> > +    # First byte is the same, move to next byte
> > +    if diff & 0xff =3D=3D 0 and i <=3D size1 - 4:
> > +       continue
> > +    # Probably a type of relocation we don't want or support
> > +    pos =3D i - 1
> > +    suggestion =3D ''
> > +    symbol =3D symbols.get(-diff - text_diff)
> > +    if symbol is not None:
> > +        suggestion =3D " Maybe %s is not defined as hidden?" % symbol
> > +    raise Exception(("Unexpected difference found at %#x "
> > +                     "n1=3D%#x n2=3D%#x diff=3D%#x gap=3D%#x.%s") % \
> > +                     (pos, n1, n2, diff, gap, suggestion))

Here removed other parenthesis

> > +if internals !=3D 0:
> > +    raise Exception("Previous relocations found")
> > +
> > +def line_bytes(buf, out):
> > +    '''Output an assembly line with all bytes in "buf"'''
> > +    if type(buf) =3D=3D str:
> > +        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=
=3Dout)
> > +    else:
> > +        print("\t.byte " + ','.join([str(n) for n in buf]), file=3Dout=
)
>
> I'm guessing this is Py2/3 compatibility?
>

Yes, as added

# Python 2 compatibility

will state

> > +
> > +def part(start, end, out):
> > +    '''Output bytes of "data" from "start" to "end"'''
> > +    while start < end:
> > +        e =3D min(start + 16, end)
> > +        line_bytes(data1[start:e], out)
> > +        start =3D e
> > +
> > +def reference(pos, out):
> > +    name =3D references[pos]
> > +    n =3D struct.unpack('<I', data1[pos:pos+4])[0]
> > +    sign =3D '+'
> > +    if n >=3D (1 << 31):
> > +        n -=3D (1 << 32)
> > +    n +=3D pos
> > +    if n < 0:
> > +        n =3D -n
> > +        sign =3D '-'
> > +    print("\t.hidden %s\n\t.long %s %s %#x - ." % (name, name, sign, n=
),
>
> Personally, I think this is easier to read as:
>
>     print("\t.hidden %s\n"
>           "\t.long %s %s %#x - ." % (name, name, sign, n),
>           file=3Dout)
>
> so it visually matches the output too.  Same for .globl/hidden lower.
>

Done

> ~Andrew

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 13:58:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 13:58:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817121.1231233 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szGAA-0008Um-D9; Fri, 11 Oct 2024 13:58:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817121.1231233; Fri, 11 Oct 2024 13:58: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 1szGAA-0008Uf-AX; Fri, 11 Oct 2024 13:58:38 +0000
Received: by outflank-mailman (input) for mailman id 817121;
 Fri, 11 Oct 2024 13:58: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=rkux=RH=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1szGA8-0008UZ-V3
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 13:58:36 +0000
Received: from mail-oa1-x31.google.com (mail-oa1-x31.google.com
 [2001:4860:4864:20::31])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e8471608-87d8-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 15:58:35 +0200 (CEST)
Received: by mail-oa1-x31.google.com with SMTP id
 586e51a60fabf-27d0e994ae3so966140fac.3
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 06:58:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8471608-87d8-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728655114; x=1729259914; 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=IBDKl3SX4DxvkNYd9S1ez6LqIY+4BE0G3z3I6ZrQlLU=;
        b=fP5zn5ZUBUJvnv++bKxg8u/2J4ogOGTupNg5+UytYSmNFL5b65TmTmMWljADIrHZqv
         Ywy1ROVixURvVICe5aKEKglcJ56Q6DcWUvgl5RLWYcLG1Gxw78bQVtmboct9OYm2L9wj
         3rQXcyAsqSLbVAsQfs0/9zmAEYYtEn9oRLOro=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728655114; x=1729259914;
        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=IBDKl3SX4DxvkNYd9S1ez6LqIY+4BE0G3z3I6ZrQlLU=;
        b=LerMJbTjcjBwmTgj+MQJ8k1e5MKMQv+PdBjW0lc2nGYqLeSa6biNzUAWep8gjxy0Yf
         Uw4Hdio8nGRiy4m1C3iHdZUzT4AmENCU2t77QHRjKE97uf1kbnMfOECIx9xsDnPT2Hpe
         nnSZDKyyLlCbYz8Lq+MJ/OvheNreYvon50xx03OApEZaDXkWskVhTRzbQKm1HccVZ664
         XNOtgCiQpLItZ5gU+KNDSN9xW6ArhjP46bU/tnC10uHQk2MGd0+/h6o8JBozadegK2Ch
         b/vEIiN6DUkIVETwq4mE4Iduht78nwvqbJQKg/dL6ECSHnXdpYFvbqesCCidVH2AqZKF
         HPVA==
X-Forwarded-Encrypted: i=1; AJvYcCXjHKd7c4LTJKzkKPtcylhSrYpk5JncltGEfviWtSkL1hCJ+Ar4EpljYVhXN3jiiKHhWMYvtS3/1Ww=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw2NGec1YRlbpkDQbAF/r2GSA3odOkDRwmhg0nRn5pipoz8xs57
	ignOe8NjhnTZkg6gPUQPX1IKcaKL771Y5RstbUsh0I6pc9viOz4xbwpSwX7wVq1MmyoKoHoEypl
	6k4YdYVzANF1gcqGSNu9Yc3g6bO0Q9DgmqyTwhextaY4RVsyupf4=
X-Google-Smtp-Source: AGHT+IEO0VToe4QSzdkPvb63uR+O1LENxaBkf+VHZAfmBRgnY/amyJQ9Vk8fErvNyslPiEh4VdA5I4wtt+9QPP8kB8Q=
X-Received: by 2002:a05:6870:158d:b0:270:4219:68fe with SMTP id
 586e51a60fabf-2886dd74f10mr1710493fac.1.1728655114653; Fri, 11 Oct 2024
 06:58:34 -0700 (PDT)
MIME-Version: 1.0
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com> <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
 <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>
 <wbpdfwa3hgjqkixl7usy7ta3r4337txb5ppvj74oat2no5wk52@sisyzgauolhq> <48f0d04a-f1e8-4c00-b71a-42fe035a3d0f@citrix.com>
In-Reply-To: <48f0d04a-f1e8-4c00-b71a-42fe035a3d0f@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 11 Oct 2024 14:58:23 +0100
Message-ID: <CACHz=ZgRPEWYK8hh-mi+308gYEBbzq=aUE6ic8O1ONeV29-5mQ@mail.gmail.com>
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>, xen-devel@lists.xenproject.org, 
	Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 11, 2024 at 2:38=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> On 11/10/2024 2:28 pm, Alejandro Vallejo wrote:
> > On Fri, Oct 11, 2024 at 02:08:37PM +0100, Frediano Ziglio wrote:
> >> On Fri, Oct 11, 2024 at 1:56=E2=80=AFPM Alejandro Vallejo
> >> <alejandro.vallejo@cloud.com> wrote:
> >>> On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
> >>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> >>>> ---
> >>>>  xen/arch/x86/boot/reloc.c | 2 +-
> >>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> >>>> index e50e161b27..e725cfb6eb 100644
> >>>> --- a/xen/arch/x86/boot/reloc.c
> >>>> +++ b/xen/arch/x86/boot/reloc.c
> >>>> @@ -65,7 +65,7 @@ typedef struct memctx {
> >>>>      /*
> >>>>       * Simple bump allocator.
> >>>>       *
> >>>> -     * It starts from the base of the trampoline and allocates down=
wards.
> >>>> +     * It starts on top of space reserved for the trampoline and al=
locates downwards.
> >>> nit: Not sure this is much clearer. The trampoline is not a stack (an=
d even if
> >>> it was, I personally find "top" and "bottom" quite ambiguous when it =
grows
> >>> backwards), so calling top to its lowest address seems more confusing=
 than not.
> >>>
> >>> If anything clarification ought to go in the which direction it takes=
. Leaving
> >>> "base" instead of "top" and replacing "downwards" by "backwards" to m=
ake it
> >>> crystal clear that it's a pointer that starts where the trampoline st=
arts, but
> >>> moves in the opposite direction.
> >>>
> >> Base looks confusing to me, but surely that comment could be confusing=
.
> >> For the trampoline 64 KB are reserved. Last 4 KB are used as a normal
> >> stack (push/pop/call/whatever), first part gets a copy of the
> >> trampoline code/data (about 6 Kb) the rest (so 64 - 4 - ~6 =3D ~54 kb)
> >> is used for the copy of MBI information. That "rest" is what we are
> >> talking about here.
> > Last? From what I looked at it seems to be the first 12K.
> >
> >    #define TRAMPOLINE_STACK_SPACE  PAGE_SIZE
> >    #define TRAMPOLINE_SPACE        (KB(64) - TRAMPOLINE_STACK_SPACE)
> >
> > To put it another way, with left=3Dlo-addr and right=3Dhi-addr. The cod=
e seems to
> > do this...
> >
> >  |<--------------64K-------------->|
> >  |<-----12K--->|                   |
> >  +-------------+-----+-------------+
> >  | stack-space | mbi | trampoline  |
> >  +-------------+-----+-------------+
> >                ^  ^
> >                |  |
> >                |  +-- copied Multiboot info + modules
> >                +----- initial memctx.ptr
> >
> > ... with the stack growing backwards to avoid overflowing onto mbi.
> >
> > Or am I missing something?
>
> So I was hoping for some kind of diagram like this, to live in
> arch/x86/include/asm/trampoline.h with the other notes about the trampoli=
ne.
>
> But, is that diagram accurate?  Looking at

       /* Switch to low-memory stack which lives at the end of
trampoline region. */
       mov     sym_esi(trampoline_phys), %edi
       lea     TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE(%edi),%esp
       lea     trampoline_boot_cpu_entry-trampoline_start(%edi),%eax
       pushl   $BOOT_CS32
       push    %eax

       /* Copy bootstrap trampoline to low memory, below 1MB. */
       lea     sym_esi(trampoline_start), %esi
       mov     $((trampoline_end - trampoline_start) / 4),%ecx
       rep movsl

So, from low to high
- trampoline code/data (%edi at beginning of copy is trampoline_phys,
%esi is trampoline_start)
- space (used for MBI copy)
- stack (%esp is set to trampoline_phys + TRAMPOLINE_SPACE +
TRAMPOLINE_STACK_SPACE)

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 14:06:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 14:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817131.1231243 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szGHd-0001hb-8J; Fri, 11 Oct 2024 14:06:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817131.1231243; Fri, 11 Oct 2024 14:06: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 1szGHd-0001hU-5L; Fri, 11 Oct 2024 14:06:21 +0000
Received: by outflank-mailman (input) for mailman id 817131;
 Fri, 11 Oct 2024 14: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szGHb-0001hH-Qg
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 14:06:19 +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 fcbf24e1-87d9-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 16:06:19 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c8af23a4fcso2691611a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 07:06:19 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c93711a189sm1947413a12.24.2024.10.11.07.06.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 07:06:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fcbf24e1-87d9-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728655578; x=1729260378; 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=9MstecxexnVqwbJE/8WVc9yl7UCL4/zZbp8OiRrrn7s=;
        b=vyHsNXIXWrtD4vt0XL2l4FczenFD3emxW9n9nb1Fu70v8CoujK1cNjX50HTDiDBbw3
         Z4xMexOe12+7bG5t5trpkSV69ecoc6mZhvAt6CQNFxSWyXzQI6bEIPa0b/VrOs4SYpxP
         YBGdcgMSj1hYC8QzOtKhFXTFeqwJLQMxb0YF8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728655578; x=1729260378;
        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=9MstecxexnVqwbJE/8WVc9yl7UCL4/zZbp8OiRrrn7s=;
        b=AIG4/WHD7i6Zs4KW8GsGs6u8akgaoK2in3VMWIOz6DR+6hvDFTbzphLPiZsM/ZTq5B
         agAOrZ5qgRTvR1O8iITi7BAhBZMRp57z0IWvVd5UArkyi8lGiiXWbNyPnrLiq1p6KRuQ
         WWnJceO4Nm9CGwGfKWVTy2cC9ub2HLMyS+zqQLKhQWsNjOWr9JQIcdx68uoAEaCwTOsT
         K/XRQ1Z1RvHTLiby2nkQoL0hSfe5t32/Go5fsYwFfzqd57DCleTJniNeTsqPEOdv7Cgv
         904a40z3fkRC2KzmeU6Hwq0Jc2bw+Bg5RcXuFhsm33+BW8iSqI+Ua4SpRrSjA3+02VsX
         IeoQ==
X-Gm-Message-State: AOJu0Yy1o/740zg61ZAjDFLuzIa/NoIYTHqSJgScM154xy+/vbJYS3Pa
	a1ZHURUy/tkQdmZklWcERiK/YqguMQyChntwsa6Va0v17us8oJy/oUZApeMg21A=
X-Google-Smtp-Source: AGHT+IHyzu3iLDGAKMg5jSJtINi+ySM4qjDgdSJvH8awe2fMuH+Mwy8wKADVoVQYuyuv8cOt07SGFw==
X-Received: by 2002:a05:6402:2749:b0:5c2:439d:90d4 with SMTP id 4fb4d7f45d1cf-5c948d76b4amr1627538a12.30.1728655578537;
        Fri, 11 Oct 2024 07:06:18 -0700 (PDT)
Message-ID: <4daebe89-881a-4b2c-a307-a78a7f52be4b@citrix.com>
Date: Fri, 11 Oct 2024 15:06:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com>
 <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
 <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>
 <wbpdfwa3hgjqkixl7usy7ta3r4337txb5ppvj74oat2no5wk52@sisyzgauolhq>
 <48f0d04a-f1e8-4c00-b71a-42fe035a3d0f@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <48f0d04a-f1e8-4c00-b71a-42fe035a3d0f@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/10/2024 2:38 pm, Andrew Cooper wrote:
> On 11/10/2024 2:28 pm, Alejandro Vallejo wrote:
>> On Fri, Oct 11, 2024 at 02:08:37PM +0100, Frediano Ziglio wrote:
>>> On Fri, Oct 11, 2024 at 1:56 PM Alejandro Vallejo
>>> <alejandro.vallejo@cloud.com> wrote:
>>>> On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
>>>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>>>>> ---
>>>>>  xen/arch/x86/boot/reloc.c | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
>>>>> index e50e161b27..e725cfb6eb 100644
>>>>> --- a/xen/arch/x86/boot/reloc.c
>>>>> +++ b/xen/arch/x86/boot/reloc.c
>>>>> @@ -65,7 +65,7 @@ typedef struct memctx {
>>>>>      /*
>>>>>       * Simple bump allocator.
>>>>>       *
>>>>> -     * It starts from the base of the trampoline and allocates downwards.
>>>>> +     * It starts on top of space reserved for the trampoline and allocates downwards.
>>>> nit: Not sure this is much clearer. The trampoline is not a stack (and even if
>>>> it was, I personally find "top" and "bottom" quite ambiguous when it grows
>>>> backwards), so calling top to its lowest address seems more confusing than not.
>>>>
>>>> If anything clarification ought to go in the which direction it takes. Leaving
>>>> "base" instead of "top" and replacing "downwards" by "backwards" to make it
>>>> crystal clear that it's a pointer that starts where the trampoline starts, but
>>>> moves in the opposite direction.
>>>>
>>> Base looks confusing to me, but surely that comment could be confusing.
>>> For the trampoline 64 KB are reserved. Last 4 KB are used as a normal
>>> stack (push/pop/call/whatever), first part gets a copy of the
>>> trampoline code/data (about 6 Kb) the rest (so 64 - 4 - ~6 = ~54 kb)
>>> is used for the copy of MBI information. That "rest" is what we are
>>> talking about here.
>> Last? From what I looked at it seems to be the first 12K.
>>
>>    #define TRAMPOLINE_STACK_SPACE  PAGE_SIZE
>>    #define TRAMPOLINE_SPACE        (KB(64) - TRAMPOLINE_STACK_SPACE)
>>
>> To put it another way, with left=lo-addr and right=hi-addr. The code seems to
>> do this...
>>
>>  |<--------------64K-------------->|
>>  |<-----12K--->|                   |
>>  +-------------+-----+-------------+
>>  | stack-space | mbi | trampoline  |
>>  +-------------+-----+-------------+
>>                ^  ^
>>                |  |
>>                |  +-- copied Multiboot info + modules
>>                +----- initial memctx.ptr
>>
>> ... with the stack growing backwards to avoid overflowing onto mbi.
>>
>> Or am I missing something?
> So I was hoping for some kind of diagram like this, to live in
> arch/x86/include/asm/trampoline.h with the other notes about the trampoline.
>
> But, is that diagram accurate?  Looking at

Sorry, sent too early.

GDB says that trampoline_end-trampoline_start is 6512, so one and a half
pages.

TRAMPOLINE_STACK_SPACE is 4k, and subtracted from 64k to make
TRAMPOLINE_SPACE

So this is why code uses TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE (==
64k) for it's size calculation.

Within that, we've got MBI_SPACE_MIN (8k) used in the linker assertion,
for SPACE (60k) - (end - start)(~7k).


What we're really saying is that the total size is 64k, with the top 4k
being stack, the bottom 7k being .text(ish), and the middle 53k being
the MBI relocation area.

And memctx is a backwards bump allocator within the middle 53k.

Maybe we should defer this until after the Hyperlaunch BootInfo series
has come in.  Later parts have a major change on how we handle the MBI
block, and I can see some substantial pruning opportunities.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 14:16:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 14:16:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817144.1231253 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szGRS-0004eY-5Y; Fri, 11 Oct 2024 14:16:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817144.1231253; Fri, 11 Oct 2024 14:16: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 1szGRS-0004eR-31; Fri, 11 Oct 2024 14:16:30 +0000
Received: by outflank-mailman (input) for mailman id 817144;
 Fri, 11 Oct 2024 14:16: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 1szGRQ-0004eD-4I; Fri, 11 Oct 2024 14:16: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 1szGRQ-0000sO-1b; Fri, 11 Oct 2024 14:16: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 1szGRP-0003pE-Pz; Fri, 11 Oct 2024 14:16:27 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szGRP-00005j-Pa; Fri, 11 Oct 2024 14:16: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=G0Lpz61pR7HOex9eLIYw7qKtEuP3zMnBhlyV6E8Tdtk=; b=V6C/iA0F0kB8vhrNkkvkNfssr5
	d3Gns+8RBh59aKEAk41M27rOahLYDGfGfrP9/kaKtH15YByJBz9zAnu5RqCir9kKylItF2Q77sfUk
	TGKR8kxe48QnIW0X7rxYivgoxZQ7XYY3RLUcGNcfXyA0J5gKkX1PRtoF+UjR5LDpN0yg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188048-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188048: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=05adb38839ba656c7383a548b460d95c91e2febe
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 14:16:27 +0000

flight 188048 qemu-mainline real [real]
flight 188055 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188048/
http://logs.test-lab.xenproject.org/osstest/logs/188055/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-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-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                05adb38839ba656c7383a548b460d95c91e2febe
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   25 days
Failing since        187731  2024-09-17 13:11:20 Z   24 days   40 attempts
Testing same since   188048  2024-10-10 23:59:54 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 8924 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 14:37:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 14:37:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817176.1231264 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szGle-0002NE-UU; Fri, 11 Oct 2024 14:37:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817176.1231264; Fri, 11 Oct 2024 14:37: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 1szGle-0002N7-Rg; Fri, 11 Oct 2024 14:37:22 +0000
Received: by outflank-mailman (input) for mailman id 817176;
 Fri, 11 Oct 2024 14:37: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 1szGle-0002Mx-6u; Fri, 11 Oct 2024 14:37: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 1szGle-0001C9-3b; Fri, 11 Oct 2024 14:37:22 +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 1szGld-0004KR-OG; Fri, 11 Oct 2024 14:37:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szGld-0002yU-O0; Fri, 11 Oct 2024 14:37: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=TJr3EI8lfZum6ex5cu5IOcikHvlJFmJHKdeX63wbqgw=; b=Oz50eygMqBehJ00DlcTSxk2L21
	AZJ98aCPSKFkPsYlJtZIzdNPNuuu34bhI/R2K5p1iUdd9HsMiluh9bFqSVbAhsi4ojEkdHbAKyLvq
	cz+hdQw59XLfGEzRv4JmcGb7skOeZrUYBKImACsdSDQta9lN8F6vfFTBsdzvB7fGRNKU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188054-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188054: 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=76a54badf890f56ff72644593c0fbc72138e13aa
X-Osstest-Versions-That:
    xen=b2c7d7070dd0b311b64598411f52cdfa2a882ea2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 14:37:21 +0000

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

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                  76a54badf890f56ff72644593c0fbc72138e13aa
baseline version:
 xen                  b2c7d7070dd0b311b64598411f52cdfa2a882ea2

Last test of basis   188046  2024-10-10 18:00:23 Z    0 days
Testing same since   188054  2024-10-11 11:02:15 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Juergen Gross <jgross@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
   b2c7d7070d..76a54badf8  76a54badf890f56ff72644593c0fbc72138e13aa -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 15:04:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 15:04:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817194.1231275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szHC9-0000We-1q; Fri, 11 Oct 2024 15:04:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817194.1231275; Fri, 11 Oct 2024 15:04: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 1szHC8-0000WX-U4; Fri, 11 Oct 2024 15:04:44 +0000
Received: by outflank-mailman (input) for mailman id 817194;
 Fri, 11 Oct 2024 15:04: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 1szHC7-0000W4-FD; Fri, 11 Oct 2024 15:04: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 1szHC7-0001fo-CV; Fri, 11 Oct 2024 15:04: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 1szHC7-0004yN-0B; Fri, 11 Oct 2024 15:04:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szHC6-0001dB-Vw; Fri, 11 Oct 2024 15:04: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=xGU6EFzxOZi+0rad9eAPhPEc40sIF84QX63a5eldZ5g=; b=ffF/0G/GX35NLhfOx987wjzqd7
	jQvm1B430B2HqY2NHG8LMCMKQIraZ4dA2WKmWsUnhITxiUF/iiq2UlsoCo5kR/2JIr65Xdkyr52e+
	xUNWvuxVxdx0r6saKSpixFHnqZqn1k+qMEKDOr4bYhRp1Co035DSZK4xZM0V4Ic0xd1Y=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188051-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188051: regressions - FAIL
X-Osstest-Failures:
    libvirt:build-armhf:xen-build:fail:regression
    libvirt:build-armhf-libvirt:build-check(1):blocked:nonblocking
    libvirt:test-armhf-armhf-libvirt:build-check(1):blocked:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:build-check(1):blocked:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd: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
X-Osstest-Versions-This:
    libvirt=37800af9a400385801da6d73654249fdb51a93d8
X-Osstest-Versions-That:
    libvirt=215cada34395b6b2caad507393e043594d6c86fc
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 15:04:42 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-armhf                   6 xen-build                fail REGR. vs. 187961

Tests which did not succeed, but are not blocking:
 build-armhf-libvirt           1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt-vhd  1 build-check(1)               blocked  n/a
 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-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-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-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-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              37800af9a400385801da6d73654249fdb51a93d8
baseline version:
 libvirt              215cada34395b6b2caad507393e043594d6c86fc

Last test of basis   187961  2024-10-04 04:22:33 Z    7 days
Failing since        188008  2024-10-08 04:20:35 Z    3 days    4 attempts
Testing same since   188051  2024-10-11 04:47:59 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Göran Uddeborg <goeran@uddeborg.se>
  Jim Fehlig <jfehlig@suse.com>
  Jiri Denemark <jdenemar@redhat.com>
  Laine Stump
  Laine Stump <laine@redhat.com>
  Nikolai Barybin <nikolai.barybin@virtuozzo.com>
  Nikolai Barybin via Devel <devel@lists.libvirt.org>
  Peter Krempa <pkrempa@redhat.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                                                  fail    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          blocked 
 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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     blocked 
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 blocked 


------------------------------------------------------------
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 609 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 15:06:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 15:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817207.1231284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szHDq-0001Ao-CJ; Fri, 11 Oct 2024 15:06:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817207.1231284; Fri, 11 Oct 2024 15:06: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 1szHDq-0001Ah-94; Fri, 11 Oct 2024 15:06:30 +0000
Received: by outflank-mailman (input) for mailman id 817207;
 Fri, 11 Oct 2024 15:06: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=XZOt=RH=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1szHDp-00012f-88
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 15:06:29 +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 6397bb29-87e2-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 17:06:27 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a994cd82a3bso300427066b.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 08:06:27 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f23377sm219264666b.47.2024.10.11.08.06.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 08:06:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6397bb29-87e2-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728659187; x=1729263987; darn=lists.xenproject.org;
        h=in-reply-to:references:from:subject:cc:to:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=0FgNzPuOpge8q+y7tFl/QWEN96EmrxUGmzV32bQ0MlM=;
        b=ITAxrdHpixoKOD9diyKOp+JLg33lBzZ4tMwWT+Q5yd6Xm81Tg/BHpZX/uVSQCWc8/V
         U4hhOLBNQx8a8++4m1Ls7tyzvARBUnfyu6bgzNWI9fpga1N/UPfRmGFTaZNWJlg8mGkU
         a/GEZgQihmnvsaxB6MH8Khr8bYTcEuQHSBO10=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728659187; x=1729263987;
        h=in-reply-to:references:from:subject:cc:to:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=0FgNzPuOpge8q+y7tFl/QWEN96EmrxUGmzV32bQ0MlM=;
        b=h28DdHXYDWUsyOUOaYGcOiHT7/SygQrhThTWtUqgjHedlher5lL3bljPCWBb1MW8BB
         qNpAhLyDreWEU6xyOyOotZgm3VXBk0QtCoMUvLPWytrn9hQCTb/STcTf/x5D3buKXC1J
         VWM1iopaYqxhFNpw8euKhPr8ZJnObe4zznNiKPLhezgFtpe5r+KLN1CHV8L052H5UxyH
         nsMPshlQOX+9UL0SmZJ3S9dem5fV5INP7dkNak4f9eUeqpITK32afoTc3iX274VSzO53
         xBmVmbUnnFRPmWjQ68RXT/5WO5c/KlwmAntdJqqiaZHSM8+JbjnlkaoH4rg+QxIfFzyr
         Lqlg==
X-Gm-Message-State: AOJu0Yw/mu4QIfoXbtm3ARaaYbJ5lfnQwMOPuAWM5JcXlHPcqHVuoO6q
	gxtELEuMEYtVscIaSqKlDryziLop/bL+Q4UbE7BvznQ4LqvyoxlHdL+L4LeJB5o=
X-Google-Smtp-Source: AGHT+IHC1fmAdAA18V4kc7GATzfoadqQXE2XshRYC/yZYK3HQcxruOxIuDElkkRkYQgd+3jjQCkmlg==
X-Received: by 2002:a17:907:7fa1:b0:a99:6363:8a21 with SMTP id a640c23a62f3a-a99b93a78eemr257721766b.11.1728659186895;
        Fri, 11 Oct 2024 08:06:26 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Fri, 11 Oct 2024 16:06:25 +0100
Message-Id: <D4T2JEKDK7KE.6N9GUPZMAVPC@cloud.com>
To: "Frediano Ziglio" <frediano.ziglio@cloud.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>
Cc: <xen-devel@lists.xenproject.org>, "Jan Beulich" <jbeulich@suse.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
X-Mailer: aerc 0.18.2
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com>
 <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
 <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>
 <wbpdfwa3hgjqkixl7usy7ta3r4337txb5ppvj74oat2no5wk52@sisyzgauolhq>
 <48f0d04a-f1e8-4c00-b71a-42fe035a3d0f@citrix.com>
 <CACHz=ZgRPEWYK8hh-mi+308gYEBbzq=aUE6ic8O1ONeV29-5mQ@mail.gmail.com>
In-Reply-To: <CACHz=ZgRPEWYK8hh-mi+308gYEBbzq=aUE6ic8O1ONeV29-5mQ@mail.gmail.com>

On Fri Oct 11, 2024 at 2:58 PM BST, Frediano Ziglio wrote:
> On Fri, Oct 11, 2024 at 2:38=E2=80=AFPM Andrew Cooper <andrew.cooper3@cit=
rix.com> wrote:
> >
> > On 11/10/2024 2:28 pm, Alejandro Vallejo wrote:
> > > On Fri, Oct 11, 2024 at 02:08:37PM +0100, Frediano Ziglio wrote:
> > >> On Fri, Oct 11, 2024 at 1:56=E2=80=AFPM Alejandro Vallejo
> > >> <alejandro.vallejo@cloud.com> wrote:
> > >>> On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
> > >>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > >>>> ---
> > >>>>  xen/arch/x86/boot/reloc.c | 2 +-
> > >>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> > >>>>
> > >>>> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> > >>>> index e50e161b27..e725cfb6eb 100644
> > >>>> --- a/xen/arch/x86/boot/reloc.c
> > >>>> +++ b/xen/arch/x86/boot/reloc.c
> > >>>> @@ -65,7 +65,7 @@ typedef struct memctx {
> > >>>>      /*
> > >>>>       * Simple bump allocator.
> > >>>>       *
> > >>>> -     * It starts from the base of the trampoline and allocates do=
wnwards.
> > >>>> +     * It starts on top of space reserved for the trampoline and =
allocates downwards.
> > >>> nit: Not sure this is much clearer. The trampoline is not a stack (=
and even if
> > >>> it was, I personally find "top" and "bottom" quite ambiguous when i=
t grows
> > >>> backwards), so calling top to its lowest address seems more confusi=
ng than not.
> > >>>
> > >>> If anything clarification ought to go in the which direction it tak=
es. Leaving
> > >>> "base" instead of "top" and replacing "downwards" by "backwards" to=
 make it
> > >>> crystal clear that it's a pointer that starts where the trampoline =
starts, but
> > >>> moves in the opposite direction.
> > >>>
> > >> Base looks confusing to me, but surely that comment could be confusi=
ng.
> > >> For the trampoline 64 KB are reserved. Last 4 KB are used as a norma=
l
> > >> stack (push/pop/call/whatever), first part gets a copy of the
> > >> trampoline code/data (about 6 Kb) the rest (so 64 - 4 - ~6 =3D ~54 k=
b)
> > >> is used for the copy of MBI information. That "rest" is what we are
> > >> talking about here.
> > > Last? From what I looked at it seems to be the first 12K.
> > >
> > >    #define TRAMPOLINE_STACK_SPACE  PAGE_SIZE
> > >    #define TRAMPOLINE_SPACE        (KB(64) - TRAMPOLINE_STACK_SPACE)
> > >
> > > To put it another way, with left=3Dlo-addr and right=3Dhi-addr. The c=
ode seems to
> > > do this...
> > >
> > >  |<--------------64K-------------->|
> > >  |<-----12K--->|                   |

s/12K/4K/

My brain merged the 12bits in the wrong place. Too much bit twiddling.

> > >  +-------------+-----+-------------+
> > >  | stack-space | mbi | trampoline  |
> > >  +-------------+-----+-------------+
> > >                ^  ^
> > >                |  |
> > >                |  +-- copied Multiboot info + modules
> > >                +----- initial memctx.ptr
> > >
> > > ... with the stack growing backwards to avoid overflowing onto mbi.
> > >
> > > Or am I missing something?
> >
> > So I was hoping for some kind of diagram like this, to live in
> > arch/x86/include/asm/trampoline.h with the other notes about the trampo=
line.
> >
> > But, is that diagram accurate?  Looking at
>
>        /* Switch to low-memory stack which lives at the end of
> trampoline region. */
>        mov     sym_esi(trampoline_phys), %edi
>        lea     TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE(%edi),%esp
>        lea     trampoline_boot_cpu_entry-trampoline_start(%edi),%eax
>        pushl   $BOOT_CS32
>        push    %eax
>
>        /* Copy bootstrap trampoline to low memory, below 1MB. */
>        lea     sym_esi(trampoline_start), %esi
>        mov     $((trampoline_end - trampoline_start) / 4),%ecx
>        rep movsl
>
> So, from low to high
> - trampoline code/data (%edi at beginning of copy is trampoline_phys,
> %esi is trampoline_start)
> - space (used for MBI copy)
> - stack (%esp is set to trampoline_phys + TRAMPOLINE_SPACE +
> TRAMPOLINE_STACK_SPACE)
>
> Frediano

So it's reversed from what I thought

 |<--------------64K-------------->|
 |                   |<-----4K---->|
 +-------------+-----+-------------+
 |  text-(ish) | mbi | stack-space |
 +-------------+-----+-------------+
                  ^                ^
                  |                |
                  |                +-- initial memctx.ptr
                  +------------------- copied Multiboot info + modules


Your version of the comment is a definite improvement over the nonsense tha=
t
was there before. Sorry for the noise :)

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 15:27:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 15:27:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817223.1231296 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szHYM-0007Bk-Tv; Fri, 11 Oct 2024 15:27:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817223.1231296; Fri, 11 Oct 2024 15:27: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 1szHYM-0007Bd-RH; Fri, 11 Oct 2024 15:27:42 +0000
Received: by outflank-mailman (input) for mailman id 817223;
 Fri, 11 Oct 2024 15:27: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=I9YX=RH=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1szHYL-0007BW-EX
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 15:27:41 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2417::61b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 58e876c8-87e5-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 17:27:39 +0200 (CEST)
Received: from DM6PR06CA0038.namprd06.prod.outlook.com (2603:10b6:5:54::15) by
 IA1PR12MB6530.namprd12.prod.outlook.com (2603:10b6:208:3a5::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Fri, 11 Oct
 2024 15:27:35 +0000
Received: from DS2PEPF00003441.namprd04.prod.outlook.com
 (2603:10b6:5:54:cafe::b4) by DM6PR06CA0038.outlook.office365.com
 (2603:10b6:5:54::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20 via Frontend
 Transport; Fri, 11 Oct 2024 15:27:35 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS2PEPF00003441.mail.protection.outlook.com (10.167.17.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Fri, 11 Oct 2024 15:27:35 +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.39; Fri, 11 Oct
 2024 10:27:34 -0500
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.39; Fri, 11 Oct
 2024 10:27:34 -0500
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.39 via Frontend
 Transport; Fri, 11 Oct 2024 10:27:33 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58e876c8-87e5-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HZWWy/4cnuS4ZHH6UfhFXza/vsjVqtiX7qLbDfUGHxeNxD7vbwC6gdH98v90YzXT76sRoiynLnT+FXmb8XfYnTFFfuarLhVfFu1m7gR47w/5EY3NU7GhdwyIA0EdTu+2YfyXvPbdWUyiu/dISyCjbwDCOYYhT2dvLbqol72ZJlXJR8wC8lauIUMcfymIHh28rwMK5fjGT3ul4JdX+FbghQdIsVx1zXdoTnP6UCrs2fau4sbwVnHKcEOuyym0GmOfs3flYuB+wwQPCE25ut4kBAzlZwydhHPPD3DPTXu+oLfB2tsUva/5wgpg3WsrNTaabKryKablCP+xcKvEGzXRBA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=DX+O69LlgKIahowaCk4Nma+41PhS8gSAjUIER4tMIY0=;
 b=YCEZ6KR6/lWd/P58MkQLmiI/5jhpe4fJklqTnabSae2Qkto6ACrCR6kzgqbmcKRskeqp9HlKtV/FfwKnhEdzqxGE5jUz71ybMFaY0qfUDBRP31dXfwQFLQwFa/XsEaAh+aKk+XBxWUeXZQMIrNVP4zvz7z22rWwzMia3yI+CUVbVT4wDxDJfQMzg9rUL3oc1rm6hvMnmnqsvzzOx5YlaMipVMOQ5i3dwsNFRaqbPVTOl7GssHNNSt3ZHnsa5qhmOf+/Y5wXs6Ol3FL4pfoVIW7kED/I0NbTc8BsnHOSzCge1u5aFFoLY0kSX4wqmP9YKJ8jRhat+rdL6eQDWNyv4Tg==
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=DX+O69LlgKIahowaCk4Nma+41PhS8gSAjUIER4tMIY0=;
 b=A7Inog6bSfW+FmGB3TOicl0QwNuKGDKe1flZ55m2CquCsbkM3i0TOOWAul0bcWSnf/mhWR1QEu4nOUHhAmFZcBlDEbd8tBUMiLqCZmLeTFlys4nkg21tiCnpMjRiswBP6sxkXrzXinvxqvoZvH3G9HlHweZKTlq3f3IOrCFHm50=
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>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [PATCH v5 0/3] xen: SR-IOV fixes
Date: Fri, 11 Oct 2024 11:27:05 -0400
Message-ID: <20241011152727.366770-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF00003441:EE_|IA1PR12MB6530:EE_
X-MS-Office365-Filtering-Correlation-Id: b63cfbfa-91e0-4bea-92b8-08dcea093b59
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?d1XsHs08M5nIKzZ8iIGjxeFDKCgQPQAVg+/hX32JXOp9hgOXlQVMIJdTwCKC?=
 =?us-ascii?Q?dCuhnY452jRzTr77rqeO9WJIETs83EDo6r3K2MkY5XrLSHAeTIbDVVvCNzTs?=
 =?us-ascii?Q?NmVYQSgCdowKsqBhUPsqlUQxTwkg79luqbRvEU1Hi1F9CsZ4Q7ZP8Hj0ErQB?=
 =?us-ascii?Q?cIVr4UMcTXvjE8byVllSfC/FguP1fy2E5eVgR0I54vBJb3jYZ7Kistbqs4pw?=
 =?us-ascii?Q?VcXRqRwOHDxgJyUAtVev6sDKTJxo2h7BG4SSFF3Gd1xD+aFdFtds5b13DFAv?=
 =?us-ascii?Q?xMH9UGns7NbmwvfxOBT7eSMJh79wP05uwPb1iEwwMGP7Fvq2cfK7Fy/xW3cD?=
 =?us-ascii?Q?txBAF/wb4ZYkXH+X50s99LOOGn8HyZifW01Na9oNLYTn2Z3NvbQx7rNrdjlN?=
 =?us-ascii?Q?Q2iB8hmsSOXmk8UdVxkhXeokPzq+ikGerXU1HWWDsy9JycJR99JyHvxSGrKI?=
 =?us-ascii?Q?qfwMxPorCAipqf+xwpi4UbbEiTfVjbwGHWulAZ42sNBAysxg4VdRfa36iOja?=
 =?us-ascii?Q?cIGaP8oM5zY0q1EVRgMKSGXrtjWbxrAWlyrjYBtrfSIS4uFgRZMZHuuHe/Yr?=
 =?us-ascii?Q?s6QN7ENlagkdO7BlCWosD3OxTK6eIZJFH81hbjpKkQfn77KRSYYeuVPP5qIa?=
 =?us-ascii?Q?GMUHjUqs57qkOOQbqMXYNceqm8qMoyLL3SQvHcMiZLZLcvtjnsLLae/cqHrb?=
 =?us-ascii?Q?pc4v/Bh7AOsRa5sRFrOZNYwPs6uTno4SDNo4vY2Mg7k8E95rsV+9EM/nhSsC?=
 =?us-ascii?Q?flPGux3Kb+a3JIZ7NizQkTXPmuQ/CUrou7/RDBgkrFID0u3qtubzJQynfkoo?=
 =?us-ascii?Q?2SVIY1cUZSaTBMjBtIX82p1P3A/GPnr7488Zb6naVmoSAJv1Or6zvH9pmpNU?=
 =?us-ascii?Q?4Z2yVD3NbASy+iZqWI2F+11mqy+ATuV6j3jUIgeUpZDX3lkUrJIT1yKXfvn5?=
 =?us-ascii?Q?mJV4Y+EXTBwZ3eTzTSe7aAY6WOno1x0cndFiHsKCFVvL5Zbeo7HQKvqPn7RG?=
 =?us-ascii?Q?GHfBLR4DI4bBS02sf80oWU80BZLdri+SjtS7slzqhcRjXvg2TR0cv2hBN76k?=
 =?us-ascii?Q?bSmnFpQojqBwF0oRnk7c+bP89XuzPyHLesF6+MlmeFt4rZokY8mrJIhNKxqT?=
 =?us-ascii?Q?WyIksjnrKQCEzq28ucgmIfOhnupCykgi9d+vl4l6hPkVTyrXpnj886jVthkf?=
 =?us-ascii?Q?e/S4+d4a++3Hw0tUsYfvny7jc/jIx/26mkhAmghl09XUqWUW8oN0RGFDGfOE?=
 =?us-ascii?Q?UR0Ppfq2ay/bS5CYA3B5hxe+9pEfQhaQLnhk1Qi+8VLiK/rru2IjIT4YeCWq?=
 =?us-ascii?Q?4Iz/GAr41gceLKlCEI5NpomNP0YQNTUqnPqo1RytuE7i6l4ZSPxXzNihlT7A?=
 =?us-ascii?Q?cTZFBkg=3D?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2024 15:27:35.0005
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b63cfbfa-91e0-4bea-92b8-08dcea093b59
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:
	DS2PEPF00003441.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6530

A fix for handling of stale pdevs, and a fix for a regressiong related
to a locking change.

Stewart Hildebrand (3):
  x86/msi: harden stale pdev handling
  xen/pci: introduce PF<->VF links
  x86/msi: fix locking for SR-IOV devices

 xen/arch/x86/msi.c            | 51 ++++++++++++++++-------
 xen/drivers/passthrough/pci.c | 78 +++++++++++++++++++++++++++--------
 xen/include/xen/pci.h         | 17 +++++++-
 3 files changed, 112 insertions(+), 34 deletions(-)


base-commit: 76a54badf890f56ff72644593c0fbc72138e13aa
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 15:27:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 15:27:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817224.1231307 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szHYY-0007Tj-9s; Fri, 11 Oct 2024 15:27:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817224.1231307; Fri, 11 Oct 2024 15:27: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 1szHYY-0007TS-6R; Fri, 11 Oct 2024 15:27:54 +0000
Received: by outflank-mailman (input) for mailman id 817224;
 Fri, 11 Oct 2024 15:27: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=I9YX=RH=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1szHYW-0007SS-Er
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 15:27:52 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20622.outbound.protection.outlook.com
 [2a01:111:f403:2418::622])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5e9855e1-87e5-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 17:27:51 +0200 (CEST)
Received: from BN7PR02CA0008.namprd02.prod.outlook.com (2603:10b6:408:20::21)
 by IA1PR12MB7639.namprd12.prod.outlook.com (2603:10b6:208:425::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Fri, 11 Oct
 2024 15:27:42 +0000
Received: from BN2PEPF00004FBA.namprd04.prod.outlook.com
 (2603:10b6:408:20:cafe::3c) by BN7PR02CA0008.outlook.office365.com
 (2603:10b6:408:20::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20 via Frontend
 Transport; Fri, 11 Oct 2024 15:27:42 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN2PEPF00004FBA.mail.protection.outlook.com (10.167.243.180) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Fri, 11 Oct 2024 15:27:41 +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.39; Fri, 11 Oct
 2024 10:27:41 -0500
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.39 via Frontend
 Transport; Fri, 11 Oct 2024 10:27:40 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e9855e1-87e5-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=PVuecqEyK9QUPIM/OucNgwHJLHQqk9B2HELaqoNmi/PrRqgkHLFflWRpNamcapp+o7YKCasjXPEn1FPGlO4ymN5ZPuz8zRkA8/5cdzuDWzzNKMBBZxfFE+rXAZ5QEIbsRMmD7bugkOuV3MJuMQ60/MvyzeZ3WWLwZMux4L9KiTg1uE3i9b0Q7KHus5VslEdfDlOa561d8t73iXq1zkkfFvgM23+ERobLWRwBQbVrFhGAw5trMacoZMQq1gn+d2kBpb3be8fJ9vb1UrT1uyCUvT796VDfusUIkIgnQLpSl64Ij8qF59GrYFhxiBqF2gec2DzYUCW7r2qb8Fo05tbaew==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Bae18Nq7AOaW1aZ8YIQKtu/Xs/0xVUuY6JnFn3meqtw=;
 b=PTP82t8gf/ZrirNSf48Hfa8MFV17jamp7YngmCIlwzNbcIQ4L5FavPPRIyhSNYkGIyL5mlnzEvBg/ClAM2toHAmLBR6tI4UwUDpHcQ2m4tckU31hcpOUwjJrVLP+4ESyDS0Gz0jnyC5ANZbzKirMRlWeUXo08t9513mjW/+ZhOBlQ/MkimcPLmeBH05LT59+lb0N5NbUqGJ8U3BAvaHv6q8WM/k7O3iIKzMZvTEX0VE0/PN81YyHDmSxANRjFVTJFPN8kubavth4a9lM21RjRHE/gOEcvre0oaDDa4PmypliyA7HICJvq1cb151dE40XjZcirTl0Ri/602CbIuFNcA==
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=Bae18Nq7AOaW1aZ8YIQKtu/Xs/0xVUuY6JnFn3meqtw=;
 b=XqoI5GEhYbqPzhOtXcYTs401jY++u3veKjDiOnUGKXUB3o6rVB7O4jVcd0u3ZVrYCi3ev9UELyQJHFbqjJjcBKzWRwsyjjJT0yISjF41YfPvAblrt15DG4HwPnSU4kv+tSZxjOA4hLf2nSyA0MX9zcaGCvl4lBZf64xOM6Qid+U=
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>, 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 v5 1/3] x86/msi: harden stale pdev handling
Date: Fri, 11 Oct 2024 11:27:06 -0400
Message-ID: <20241011152727.366770-2-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241011152727.366770-1-stewart.hildebrand@amd.com>
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBA:EE_|IA1PR12MB7639:EE_
X-MS-Office365-Filtering-Correlation-Id: 55b1eea3-583b-4af9-a953-08dcea093f56
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?ScdZELdIUTo+L1yeaV1r4m9phOlErMBPrkEA3RznZclUiCyJY6ukI4UIXovs?=
 =?us-ascii?Q?6QvCMCMayECi6La05VwbD5QdFtSl5NSaDWqTkQrq6IpObSosFLHzgKW6dX7e?=
 =?us-ascii?Q?6AX7wrrNxKeLcVkO7B2HddhOB2PKkXAC9izAeNlZdiUprEQJuGnbyBLjDCo3?=
 =?us-ascii?Q?c/venKIyRs/xbxffLMa8q3PDnSSNDoea8zkmUxYY6CBPzK1/+HTnyccDGZ/e?=
 =?us-ascii?Q?Kq3RPEncr9NCuVrIAoYyYqB9TDcI1rTirMHCNy9lxnUL4oi3MCzdVh7ar2fb?=
 =?us-ascii?Q?vOO8H9R1R0JnZKZj+dJo0y3TLc2Kpqu5LDIDpl8NqPPprJctJQ0eoUs3vmeW?=
 =?us-ascii?Q?tA9z1J1USeHtA4OwWtL5cn3bPpSR+M0bg32rBZ3zyVRGHCUlSzWPZD9vg7Fz?=
 =?us-ascii?Q?jzEaSo7vHWddZuRPS9cXYXjxS9F0jA86bhPKWKQw4AK4Mz0FGEwQi+a4SwWJ?=
 =?us-ascii?Q?ZLsf5g/sxE782WggHjv2B3xV+5gyNFIR7/Huz4KBBX5ARhevRjor5nMebtWr?=
 =?us-ascii?Q?grnJvCPjh92xFtYXnIJRDuZJal0peMIq833Q4TMXR6rMqxa9AWG+9ZWSQ4tA?=
 =?us-ascii?Q?cDh1n/GuqANiDaXa7PU3iDNvI45jTbxDKxc1XZSKsJrIOeNBOSSu2q1arrAo?=
 =?us-ascii?Q?+UQWeQO/RoaCUOrv3ZYvgitVwr104YRcOps9gL4ggLyC/88klss3t7uD1xPv?=
 =?us-ascii?Q?sKBYRQopfCIpMUb46Xrk9QWW4Y7sjcnn80HqKd8ponDXKOn+o7dG1i8BFA4X?=
 =?us-ascii?Q?HZAs0MRLqk7XLaIut6PMYXb5cly+zbU0tazAAvTQsDJbpEamytAhqbtXkJr0?=
 =?us-ascii?Q?P5Be3BFmZaZCUNS3asmrUIZi1QVhPMyJ0X/G38XDeadKgvHBC6mQoukAhoNn?=
 =?us-ascii?Q?8rwmrPIrPZ91od/jjwwE6MEy4jUoSl88UwdPWVL46deEobwrh88rhOjP1wG4?=
 =?us-ascii?Q?KDeIyc0JUFv8dsFMY4XANZBsr6viwUvG6zHuQITM6EihXEoaclxWwtFOvayF?=
 =?us-ascii?Q?b7VZYCw9C26KqZDfaqXE7IEWzhHYuDfx+5IUuYG786UoYWwIuaQbr5dysT+K?=
 =?us-ascii?Q?q/K3uJfdthaG9R+XVtRrkH8gng+cbOPTU7JhjK5Y8gh5MnHOdeuiDGWtQymd?=
 =?us-ascii?Q?6J1iD084uJuqoN70fPrmSbX9hWgeXBGsZs2e11A4Aq/J6e4o6tLIr/mD8dij?=
 =?us-ascii?Q?xlfAy7WQAYzsaOBxGTj9TVjqhUreK41UzW9xlNyfKrFZHbLmXueAvCG99tsF?=
 =?us-ascii?Q?7e/NyD7kz3+CCLDfSbVr7sgbW3hjAef9zhAJynaKP1+XU3AxOcPy4oNkHFr+?=
 =?us-ascii?Q?ayxwz8fA8DvgOQ+nHXGnpvcJ436Rsm/5cMA7OTWHXAAxbDZPapzUZDe1466j?=
 =?us-ascii?Q?Q0wstyJkvQyl5CDCBCSJRxx30bSc?=
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:(13230040)(36860700013)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2024 15:27:41.7392
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 55b1eea3-583b-4af9-a953-08dcea093f56
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:
	BN2PEPF00004FBA.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7639

Dom0 normally informs Xen of PCI device removal via
PHYSDEVOP_pci_device_remove, e.g. in response to SR-IOV disable or
hot-unplug. We might find ourselves with stale pdevs if a buggy dom0
fails to report removal via PHYSDEVOP_pci_device_remove. In this case,
attempts to access the config space of the stale pdevs would be invalid
and return all 1s.

Some possible conditions leading to this are:

1. Dom0 disables SR-IOV without reporting VF removal to Xen.

The Linux SR-IOV subsystem normally reports VF removal when a PF driver
disables SR-IOV. In case of a buggy dom0 SR-IOV subsystem, SR-IOV could
become disabled with stale dangling VF pdevs in both dom0 Linux and Xen.

2. Dom0 reporting PF removal without reporting VF removal.

During SR-IOV PF removal (hot-unplug), a buggy PF driver may fail to
disable SR-IOV, thus failing to remove the VFs, leaving stale dangling
VFs behind in both Xen and Linux. At least Linux warns in this case:

[  100.000000]  0000:01:00.0: driver left SR-IOV enabled after remove

In either case, Xen is left with stale VF pdevs, risking invalid PCI
config space accesses.

When Xen is built with CONFIG_DEBUG=y, the following Xen crashes were
observed when dom0 attempted to access the config space of a stale VF:

(XEN) Assertion 'pos' failed at arch/x86/msi.c:1274
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040346834>] R pci_msi_conf_write_intercept+0xa2/0x1de
(XEN)    [<ffff82d04035d6b4>] F pci_conf_write_intercept+0x68/0x78
(XEN)    [<ffff82d0403264e5>] F arch/x86/pv/emul-priv-op.c#pci_cfg_ok+0xa0/0x114
(XEN)    [<ffff82d04032660e>] F arch/x86/pv/emul-priv-op.c#guest_io_write+0xb5/0x1c8
(XEN)    [<ffff82d0403267bb>] F arch/x86/pv/emul-priv-op.c#write_io+0x9a/0xe0
(XEN)    [<ffff82d04037c77a>] F x86_emulate+0x100e5/0x25f1e
(XEN)    [<ffff82d0403941a8>] F x86_emulate_wrapper+0x29/0x64
(XEN)    [<ffff82d04032802b>] F pv_emulate_privileged_op+0x12e/0x217
(XEN)    [<ffff82d040369f12>] F do_general_protection+0xc2/0x1b8
(XEN)    [<ffff82d040201aa7>] F x86_64/entry.S#handle_exception_saved+0x2b/0x8c

(XEN) Assertion 'pos' failed at arch/x86/msi.c:1246
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040346b0a>] R pci_reset_msix_state+0x47/0x50
(XEN)    [<ffff82d040287eec>] F pdev_msix_assign+0x19/0x35
(XEN)    [<ffff82d040286184>] F drivers/passthrough/pci.c#assign_device+0x181/0x471
(XEN)    [<ffff82d040287c36>] F iommu_do_pci_domctl+0x248/0x2ec
(XEN)    [<ffff82d040284e1f>] F iommu_do_domctl+0x26/0x44
(XEN)    [<ffff82d0402483b8>] F do_domctl+0x8c1/0x1660
(XEN)    [<ffff82d04032977e>] F pv_hypercall+0x5ce/0x6af
(XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150

Replace the ASSERT(s) with an error, and mark the device broken to
disallow passthrough to domUs.

Fixes: 484d7c852e4f ("x86/MSI-X: track host and guest mask-all requests separately")
Fixes: 575e18d54d19 ("pci: clear {host/guest}_maskall field on assign")
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
v4->v5:
* new patch, independent of the rest of the series
* new approach to fixing the issue: don't rely on dom0 to report any
  sort of device removal; rather, fix the condition directly

---
Instructions to reproduce
Requires Xen with CONFIG_DEBUG=y
Tested with Linux 6.11

1. Dom0 disables SR-IOV without reporting VF removal to Xen.

* Hack the Linux SR-IOV subsystem to remove the call to
  pci_stop_and_remove_bus_device() in
  drivers/pci/iov.c:pci_iov_remove_virtfn().

* Enable SR-IOV, then disable SR-IOV
  echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
  echo 0 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs

* Now we have a stale VF. We can trigger the ASSERT either by unbinding
  the VF driver and issuing a reset...

  echo 0000\:01\:10.0 > /sys/bus/pci/devices/0000\:01\:10.0/driver/unbind
  echo 1 > /sys/bus/pci/devices/0000\:01\:10.0/reset

  ... or by doing xl pci-assignable-add

  xl pci-assignable-add 01:10.0

2. Dom0 reporting PF removal without reporting VF removal.

* Hack your PF driver to leave SR-IOV enabled when removing the device

* Enable SR-IOV

  echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs

* Unplug the PCI device

  (qemu) device_del mydev

* Now we have a stale VF. We can trigger the ASSERT either by re-adding
  the PF device with SR-IOV disabled...

  echo 0000\:01\:10.0 > /sys/bus/pci/devices/0000\:01\:10.0/driver/unbind
  (qemu) device_add igb,id=mydev,bus=pcie.1,netdev=net1

  ... or by reset / xl pci-assignable-add as above.
---
 xen/arch/x86/msi.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index ff2e3d86878d..fbb07fe821b5 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -1243,7 +1243,12 @@ int pci_reset_msix_state(struct pci_dev *pdev)
 {
     unsigned int pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
 
-    ASSERT(pos);
+    if ( !pos )
+    {
+        pdev->broken = true;
+        return -EFAULT;
+    }
+
     /*
      * Xen expects the device state to be the after reset one, and hence
      * host_maskall = guest_maskall = false and all entries should have the
@@ -1271,7 +1276,12 @@ int pci_msi_conf_write_intercept(struct pci_dev *pdev, unsigned int reg,
         entry = find_msi_entry(pdev, -1, PCI_CAP_ID_MSIX);
         pos = entry ? entry->msi_attrib.pos
                     : pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
-        ASSERT(pos);
+
+        if ( !pos )
+        {
+            pdev->broken = true;
+            return -EFAULT;
+        }
 
         if ( reg >= pos && reg < msix_pba_offset_reg(pos) + 4 )
         {
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 15:27:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 15:27:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817225.1231316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szHYb-0007kE-Iz; Fri, 11 Oct 2024 15:27:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817225.1231316; Fri, 11 Oct 2024 15:27: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 1szHYb-0007k3-Fa; Fri, 11 Oct 2024 15:27:57 +0000
Received: by outflank-mailman (input) for mailman id 817225;
 Fri, 11 Oct 2024 15:27: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=I9YX=RH=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1szHYa-0007SS-Eg
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 15:27:56 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2061a.outbound.protection.outlook.com
 [2a01:111:f403:2415::61a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 626127fd-87e5-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 17:27:55 +0200 (CEST)
Received: from BN7PR02CA0002.namprd02.prod.outlook.com (2603:10b6:408:20::15)
 by PH0PR12MB8125.namprd12.prod.outlook.com (2603:10b6:510:293::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Fri, 11 Oct
 2024 15:27:50 +0000
Received: from BN2PEPF00004FBA.namprd04.prod.outlook.com
 (2603:10b6:408:20:cafe::e6) by BN7PR02CA0002.outlook.office365.com
 (2603:10b6:408:20::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20 via Frontend
 Transport; Fri, 11 Oct 2024 15:27:50 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN2PEPF00004FBA.mail.protection.outlook.com (10.167.243.180) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Fri, 11 Oct 2024 15:27:50 +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.39; Fri, 11 Oct
 2024 10:27:48 -0500
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.39 via Frontend
 Transport; Fri, 11 Oct 2024 10:27:47 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 626127fd-87e5-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RBGo0ONO5nhwEO3UszMfRS/bOX2NDDgS7dfJWbD3JORg6nY6wQ4V9vZUShfYU2NAT0HXdFI+TKn86q0qicctR2Bi7056i+fVb14REjkxJ9HHlO3RACLGYb0MWGxQQi4AcPaQs+gMJYi2cGPgnbKmjrMMpNHas1hL0JcLMWe9luamStVR50HaWKl4o8EQhAkz/uSU9saiaWC9hl5P/J+gUOaPLecgCu1S05smi4HIPc1nkRHjMvnyyaHNq92EtPgqch1xLckES6dplXzinATOzs/iKTm4L9jGtJpBcFYBgsNIAA+umBsWknr72WtjjL/E9dDMKXlv0IfeBrcBgOZ0ug==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=0hdJcd67VFCUntI2TnhTshHdpS7eovY/+F2haWAsl40=;
 b=hpRh12Ja7KktDPBVh2Izavb3yg5R4N07JJNkry/C+tjs0Q5hGIbg6XMaAPw8XgzfL9aU0ToM7vRCbmMAKBVeiEPAVBV3draEpyrUm447/2rLfc2SAGdpr/owDlqnCUVftFPYUnk4Hv15EaTdA6QitTTnRko9GsN+sHsAymvpBragCSJse2cjv4AAJb3fYgptWKhqylSU1corIpOq/NUlbIfVELRFv68nljIeWSNuzElVHIq7Fx9fHe6oM8E7oHvGgKlHAepl3I88TSSxlWMyI0Wx5JnaSnL1ftUJzZoo/igAsOqbGfFypUwsfM9dwJE7J7aGHNePA9Xbhn6NMqHwrg==
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=0hdJcd67VFCUntI2TnhTshHdpS7eovY/+F2haWAsl40=;
 b=R7pJYlvgCd4wxirE+pp4Ad2pWj/Z5W0fcaT42X9cbXFUGVSvbWe/xcHJwct1bu5QCelRAVOQHUd52+mJwIUVRx1ilCAcIrH0tVpVsvs3Cc/EwWqiXa6qSyHFSFoiulhRgc6YD3J0kV6euJjIGgDmdJCOJBgPfgCZezMtuZaSNwM=
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>, Jan Beulich
	<jbeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "Julien
 Grall" <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v5 2/3] xen/pci: introduce PF<->VF links
Date: Fri, 11 Oct 2024 11:27:07 -0400
Message-ID: <20241011152727.366770-3-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241011152727.366770-1-stewart.hildebrand@amd.com>
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF00004FBA:EE_|PH0PR12MB8125:EE_
X-MS-Office365-Filtering-Correlation-Id: f847a9b3-49d2-4bd9-f711-08dcea094475
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?HjVEaIXfOLZtSrKpIg90qlVpiUInB6M0q0RQ9XN+vaWyi8tHamvSB60/X9fj?=
 =?us-ascii?Q?28674g9ccg2VLI8VZJ1Q+tdi9zeZGWGcO31Q5k25z66FCSRJtOfjwLj1PgND?=
 =?us-ascii?Q?DbqbnLZ4f5SmGNzQRrqaN1jrTIDTaDo8JcoWow5E/h46N30KFp9LLVwUx41o?=
 =?us-ascii?Q?9Txfd2cee2oR0d61Tu18FBPeIrv4pJSUSwUW/FIO5ktiSmR2J1YD6cQGqOKX?=
 =?us-ascii?Q?X++JXspoU/h7Wscw/BLPaYHGsL+LJSgSzHeNh3KLrujOftQhQhB74dEw4MqN?=
 =?us-ascii?Q?WMSH3WynGHzlx3MBsU7k8dEuDfVHah3zF/t1M/NQ7Phk43IXDIuGNuc/zjud?=
 =?us-ascii?Q?njYglJU2PAdY++qpv/IMtI9EopNIkJQU/78AwGcdqdOEueQPvLKY0YnLftAf?=
 =?us-ascii?Q?22vcE2cfoFiCZMHFK7aZlmiGEhfTmIrYdlgg2cnBWG38YDHeO3bjRF20d5Uz?=
 =?us-ascii?Q?aURM58Y3dhqt/N4iVc/vozqwJ+NdEMwylzuR42PKbs2znLxXIjTRCdvuXyDg?=
 =?us-ascii?Q?2En8hWSFvmSORZcl1QBM+StC4DKi3Y8p9tVCkbnvJQeoOz2HzYOKxU6XETUi?=
 =?us-ascii?Q?kObw52ZtFR52KCWEsOYvkyQaI04FPEhbRYz6q8o0dNtUXWSLhrZq4z7k7PT2?=
 =?us-ascii?Q?q6/BG2pt92O/hw5ECzZoHRCOiDSO7UJoxeriKh5L5z37zeNlPOYpZWU6sQ0o?=
 =?us-ascii?Q?ysIlCbPSLhliU8DSOsTkUu1kFt1kyfILsQlvjqr4yAcPVeckU35rOGh5ywho?=
 =?us-ascii?Q?AYnauPhmoyMEPShQLcu9jH2FFq3HPS0cMQp4HG7syjgiCrcXIfr5QM8XciLd?=
 =?us-ascii?Q?NL2dZyClKs4nD6Qu3n+YAFKNVkHc8aAkpNaqJt8FNoFdoGqQdXm2I/f02aqi?=
 =?us-ascii?Q?N730DkfnAFBHfPVLSOayIrEu24nhYi3sbfVe5zS0iUgKulOC24KnbuUMOb0k?=
 =?us-ascii?Q?zxaicWLpP9PF5AgsmZcfOTzjPKaOmyDBoGMu1wRCsY69pE9Asr0fDXLj8Abz?=
 =?us-ascii?Q?ZTqE17EvTc+bPjH28/AHebGsIz0OmR0DwBixItgd4pFXvtqjEi1XxDR+3I4h?=
 =?us-ascii?Q?9tFE1ESUFQFT2G88NvCldIVRZMUYHrLIY223kRixzHoYv6J6cXe7lOSrcpPh?=
 =?us-ascii?Q?UMVcY4e8wUR+iAc/IUb077J7etbJ0DOYfVwTZOh4ih1IPKg8OQweshT/AHxn?=
 =?us-ascii?Q?2qTLYKLEaK/kW0OfKAIVkCwkwV9VIX6aBewwdCrnTfiYeh2b6iKmsr1pfE/L?=
 =?us-ascii?Q?o9c4dnvCnyNEqDen6LTHNRzPhkI/srXPAXUemhkZmSLxNadt03j8PtnGXyjI?=
 =?us-ascii?Q?xAMyy4as9lfpgm0yIpuouxvbZNIzRQxW/A3A0qreEdIeVVMHRd40SVRObfOL?=
 =?us-ascii?Q?4RgEghk=3D?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2024 15:27:50.3329
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f847a9b3-49d2-4bd9-f711-08dcea094475
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:
	BN2PEPF00004FBA.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8125

Add links between a VF's struct pci_dev and its associated PF struct
pci_dev. Move the calls to pci_get_pdev()/pci_add_device() down to avoid
dropping and re-acquiring the pcidevs_lock().

During PF removal, unlink VF from PF and mark the VF broken. As before,
VFs may exist without a corresponding PF, although now only with
pdev->broken = true. If the PF is removed and re-added, dom0 is expected
to also remove and re-add the VFs.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Candidate for backport to 4.19 (the next patch depends on this one)

v4->v5:
* new patch, split from ("x86/msi: fix locking for SR-IOV devices")
* move INIT_LIST_HEAD(&pdev->vf_list); earlier
* collapse struct list_head instances
* retain error code from pci_add_device()
* unlink (and mark broken) VFs instead of removing them
* const-ify VF->PF link
---
 xen/drivers/passthrough/pci.c | 70 ++++++++++++++++++++++++++++-------
 xen/include/xen/pci.h         | 10 +++++
 2 files changed, 66 insertions(+), 14 deletions(-)

diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 74d3895e1ef6..95a8ed850efd 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -333,6 +333,8 @@ static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn)
     *((u8*) &pdev->devfn) = devfn;
     pdev->domain = NULL;
 
+    INIT_LIST_HEAD(&pdev->vf_list);
+
     arch_pci_init_pdev(pdev);
 
     rc = pdev_msi_init(pdev);
@@ -449,6 +451,10 @@ static void free_pdev(struct pci_seg *pseg, struct pci_dev *pdev)
 
     list_del(&pdev->alldevs_list);
     pdev_msi_deinit(pdev);
+
+    if ( pdev->info.is_virtfn && pdev->virtfn.pf_pdev )
+        list_del(&pdev->vf_list);
+
     xfree(pdev);
 }
 
@@ -656,24 +662,11 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
     unsigned int slot = PCI_SLOT(devfn), func = PCI_FUNC(devfn);
     const char *type;
     int ret;
-    bool pf_is_extfn = false;
 
     if ( !info )
         type = "device";
     else if ( info->is_virtfn )
-    {
-        pcidevs_lock();
-        pdev = pci_get_pdev(NULL,
-                            PCI_SBDF(seg, info->physfn.bus,
-                                     info->physfn.devfn));
-        if ( pdev )
-            pf_is_extfn = pdev->info.is_extfn;
-        pcidevs_unlock();
-        if ( !pdev )
-            pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
-                           NULL, node);
         type = "virtual function";
-    }
     else if ( info->is_extfn )
         type = "extended function";
     else
@@ -703,7 +696,44 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
          * extended function.
          */
         if ( pdev->info.is_virtfn )
-            pdev->info.is_extfn = pf_is_extfn;
+        {
+            struct pci_dev *pf_pdev;
+
+            pf_pdev = pci_get_pdev(NULL,
+                                   PCI_SBDF(seg, info->physfn.bus,
+                                            info->physfn.devfn));
+
+            if ( !pf_pdev )
+            {
+                ret = pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
+                                     NULL, node);
+                if ( ret )
+                {
+                    printk(XENLOG_WARNING "Failed to add SR-IOV device PF %pp for VF %pp\n",
+                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
+                           &pdev->sbdf);
+                    free_pdev(pseg, pdev);
+                    goto out;
+                }
+                pf_pdev = pci_get_pdev(NULL,
+                                       PCI_SBDF(seg, info->physfn.bus,
+                                                info->physfn.devfn));
+                if ( !pf_pdev )
+                {
+                    ASSERT_UNREACHABLE();
+                    printk(XENLOG_ERR "Failed to find SR-IOV device PF %pp for VF %pp\n",
+                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
+                           &pdev->sbdf);
+                    free_pdev(pseg, pdev);
+                    ret = -EILSEQ;
+                    goto out;
+                }
+            }
+
+            pdev->info.is_extfn = pf_pdev->info.is_extfn;
+            pdev->virtfn.pf_pdev = pf_pdev;
+            list_add(&pdev->vf_list, &pf_pdev->vf_list);
+        }
     }
 
     if ( !pdev->info.is_virtfn && !pdev->vf_rlen[0] )
@@ -821,6 +851,18 @@ 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 )
         {
+            if ( !pdev->info.is_virtfn )
+            {
+                struct pci_dev *vf_pdev, *tmp;
+
+                list_for_each_entry_safe(vf_pdev, tmp, &pdev->vf_list, vf_list)
+                {
+                    list_del(&vf_pdev->vf_list);
+                    vf_pdev->virtfn.pf_pdev = NULL;
+                    vf_pdev->broken = true;
+                }
+            }
+
             if ( pdev->domain )
             {
                 write_lock(&pdev->domain->pci_lock);
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index 63e49f0117e9..f9435b7f4eb9 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -150,7 +150,17 @@ struct pci_dev {
         unsigned int count;
 #define PT_FAULT_THRESHOLD 10
     } fault;
+
+    /*
+     * List head if info.is_virtfn == false
+     * List entry if info.is_virtfn == true
+     */
+    struct list_head vf_list;
     u64 vf_rlen[6];
+    struct {
+        /* Only populated for VFs (info.is_virtfn == true) */
+        const struct pci_dev *pf_pdev;        /* Link from VF to PF */
+    } virtfn;
 
     /* Data for vPCI. */
     struct vpci *vpci;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 15:28:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 15:28:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817227.1231327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szHYh-00086W-Sh; Fri, 11 Oct 2024 15:28:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817227.1231327; Fri, 11 Oct 2024 15:28: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 1szHYh-00086N-P7; Fri, 11 Oct 2024 15:28:03 +0000
Received: by outflank-mailman (input) for mailman id 817227;
 Fri, 11 Oct 2024 15:28: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=I9YX=RH=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1szHYg-0007SS-BX
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 15:28:02 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20617.outbound.protection.outlook.com
 [2a01:111:f403:2416::617])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 660d22e1-87e5-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 17:28:01 +0200 (CEST)
Received: from BL1PR13CA0263.namprd13.prod.outlook.com (2603:10b6:208:2ba::28)
 by PH7PR12MB6955.namprd12.prod.outlook.com (2603:10b6:510:1b8::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Fri, 11 Oct
 2024 15:27:57 +0000
Received: from BN2PEPF00004FC1.namprd04.prod.outlook.com
 (2603:10b6:208:2ba:cafe::54) by BL1PR13CA0263.outlook.office365.com
 (2603:10b6:208:2ba::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.12 via Frontend
 Transport; Fri, 11 Oct 2024 15:27:56 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN2PEPF00004FC1.mail.protection.outlook.com (10.167.243.187) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Fri, 11 Oct 2024 15:27: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.39; Fri, 11 Oct
 2024 10:27:55 -0500
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.39 via Frontend
 Transport; Fri, 11 Oct 2024 10:27:54 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 660d22e1-87e5-11ef-a0bd-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=PwyIC8+3adm599ynvdRaYap1uzZK6fVFCY/ENpRkwuJJkUSBtdwhadjrxhLJCF/IGEOxuLuA0CdKvQ1+iqM1A4EpxX4SHCG/fVPifyTPv7qAY3lOxBPLrjOSJGrvyjyDMLotefYOCJFJIx6oZeIvW/w/FFkhBpJ4ZOfSaCklTRoiuUjIBorJIINVPrYOx9qr5Hn73xqQll27hB9QIJAMqtvgPrI2LP7C1eQrhr2i8SdXymfucZhHFyqgzWdNCf0epTogenSGmBArEvoLhzdfz8AKzvqHH2/Xd42vYybmFkDzvL4hlwU9fSg5YdGw8ad8jJFJ7oC5r0qS5iTptCp8oQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=PoaEQUmZyPk/7lddPfXAooR8DtejrJ8pV0FXtQo30ts=;
 b=TTeE0mfofZhndQAj3DuR4GcsgcBHjkeL0QXIQ/gWZNj5p7kheOj4tszI4tnfxeJy0tvMCJdm/K77RtvqP0on81WLH7bUxvZb3qNXximTZVkr4rhoNGi/CvH+9UR1cHALxvjCyNRDmj3XaOOxSPEjG+aiNoMsbI5ZnJ13kpDn5yBlXKgDkFXEpw/Nesd9OYhxtE3nXGN5wSHISIJYcAC32+BdJR3J86/soeVhjLvkifOdeLlKHACaJNTfNvCm/q6+14bZuSQxQEyhU8MnfvqXc8ceCgS7yjguNsJaV6t+uac+14/I33zUDBCadnqWIYzIu8RuGEuwdcPUUh1470YI3g==
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=PoaEQUmZyPk/7lddPfXAooR8DtejrJ8pV0FXtQo30ts=;
 b=ASzh3HtiwofGi0mVNp3ZEFarWgicRpayCdmO7IojO4tgzOa42n5HfFGKNWCcd/1RhfnG67goX0tfvlvU5DAFSAC303H6CMHl+UoG2LE6XEX7FBVQ7vSSP0fRlvTMpm6NNZQbfNxV0Pmp+31EhzjeKdo7EOcX9CbslSNdSxemPi8=
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>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [PATCH v5 3/3] x86/msi: fix locking for SR-IOV devices
Date: Fri, 11 Oct 2024 11:27:08 -0400
Message-ID: <20241011152727.366770-4-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241011152727.366770-1-stewart.hildebrand@amd.com>
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF00004FC1:EE_|PH7PR12MB6955:EE_
X-MS-Office365-Filtering-Correlation-Id: 087b2fa2-2eaf-485e-02a3-08dcea0947b3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?bGIMa8YoU+u/7eiEe75cVEqeB/NEZQ83Uh30EzkNI0vyjDBzVbwbRLlyIPj+?=
 =?us-ascii?Q?cn109ayVPkOc4NV0FzGf0qYXw2Ivp8Vo0LEF4ywuyzddcn9g7BhfyFHTyaEX?=
 =?us-ascii?Q?gNPWcpmNuKZeYxiRugOpzSNshiEfAOkZuGzEiS0hRAadPqeayd77JztTIq8E?=
 =?us-ascii?Q?Pz8+QvZqTsAj7adIqbGUhrv4aksKG+LP/i6Zv3wLxQtGVhBq4qhX1MFy2uUl?=
 =?us-ascii?Q?Cz1EOG2RddJBZl6k067O0IR9PJ2NvJVuW+E271rRtfYKR9mkmPn/hCEYn0YM?=
 =?us-ascii?Q?DPwSCvHyhEOAXq40dhCdhnaQHw6ymFGH84hrvQS0HNswmRcD2Hm2IudGsSw3?=
 =?us-ascii?Q?TDBZsTBxBX3Bccw6Pe6w4hPRblprh5zSAlOHTeyTjbhP4XNhNXtDN2+hGS8M?=
 =?us-ascii?Q?dgPKhr3jhWkUHmKe2ntf2c4Bm394pYY8bzuhBc6s2t7Z/r4Yp1S/lkDqrqQj?=
 =?us-ascii?Q?cGoQw0Q4i96MROw7aK9Na3Vi441XVcGX0Ue10p2FYggPOx3VNyLszZd90rkJ?=
 =?us-ascii?Q?SPMW1Mw+LxPxYHK3RVZ8loElFUR/8AjrUTzH420I5hvN4LK3Ib3R5jTZwAWw?=
 =?us-ascii?Q?E9zosvJfQnVSOe6JtNw9QEQ5jFuXstQ5z0Ovm83FmA8aqz4DQc14OullUs5s?=
 =?us-ascii?Q?q8r12JSwzbP28aY7BYC7kFzprHzk5SxMBzCBkp4llVW338ctSQMUdSHM07qm?=
 =?us-ascii?Q?h3xlt2RuRgnIihuU5J4FG4WUPGfbeAZp2/s5eDYz/11anO0eYKXMI0JK+MK/?=
 =?us-ascii?Q?3T0IJlIPl66WnxdtG3yUl67s/IqflsiowNxu5aPhR00VI2wy7czjcP8oXckC?=
 =?us-ascii?Q?LGolulpaTN+s+QJbzk9bWeYf3m9gV3kzO8E/2tklBPB3tZ2fc0WaxnaNgcY3?=
 =?us-ascii?Q?cvC9EgktFWujJuiZNlj//X0lkhl99fyxPqPVu+0e7vZ0GcFJygvcfFKLV6CD?=
 =?us-ascii?Q?ntV8KRkeQ1LUc3zCwVjgSTW/r6Z9LzBW/ULltYXSwWreKQjKV+8fWLZldvfz?=
 =?us-ascii?Q?v/pbgVJ1+Fwj6DI42NsTYhHbPeehLwYdH04laxwbt/+3BH0bCXYe8sy5qmMe?=
 =?us-ascii?Q?GpiIaELoZWVfDfoAtXtg3AtmM3UKrOLofxny5cvgrVLNjyNzinpXjtq1BQjP?=
 =?us-ascii?Q?Te/A9L3umY5EdBHZAIfKmNK/jNFb0Nh9UgPXTWJX3OZFeRzRM+1yN5yNy9A7?=
 =?us-ascii?Q?ey0lZIWHhVkykfhdfydTU2/gQbydEZDi0IVYJIlCSpH22e5yglACOF3lNadj?=
 =?us-ascii?Q?XcE4Bj6AfMyh2BPnW8y+aqP6XOS3H0wkw+EbCwELOVXNnpt41OrSZ2nJm9yl?=
 =?us-ascii?Q?Unw5B+Eq0kdZJj1aSFGj8j/7sDFAZsJqMOyCGpzmF2tSVHI+7qVjqdv4ZHAk?=
 =?us-ascii?Q?OSzEVWceHAGeyNZrfG6DNX0aE9mf?=
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:(13230040)(36860700013)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2024 15:27:55.7662
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 087b2fa2-2eaf-485e-02a3-08dcea0947b3
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:
	BN2PEPF00004FC1.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6955

In commit 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci
structure") a lock was moved from allocate_and_map_msi_pirq() to the
caller and changed from pcidevs_lock() to read_lock(&d->pci_lock).
However, one call path wasn't updated to reflect the change, leading to
a failed assertion observed under the following conditions:

* PV dom0
* Debug build (CONFIG_DEBUG=y) of Xen
* There is an SR-IOV device in the system with one or more VFs enabled
* Dom0 has loaded the driver for the VF and enabled MSI-X

(XEN) Assertion 'd || pcidevs_locked()' failed at drivers/passthrough/pci.c:535
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Not tainted ]----
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040284da8>] R pci_get_pdev+0x4c/0xab
(XEN)    [<ffff82d040344f5c>] F arch/x86/msi.c#read_pci_mem_bar+0x58/0x272
(XEN)    [<ffff82d04034530e>] F arch/x86/msi.c#msix_capability_init+0x198/0x755
(XEN)    [<ffff82d040345dad>] F arch/x86/msi.c#__pci_enable_msix+0x82/0xe8
(XEN)    [<ffff82d0403463e5>] F pci_enable_msi+0x3f/0x78
(XEN)    [<ffff82d04034be2b>] F map_domain_pirq+0x2a4/0x6dc
(XEN)    [<ffff82d04034d4d5>] F allocate_and_map_msi_pirq+0x103/0x262
(XEN)    [<ffff82d04035da5d>] F physdev_map_pirq+0x210/0x259
(XEN)    [<ffff82d04035e798>] F do_physdev_op+0x9c3/0x1454
(XEN)    [<ffff82d040329475>] F pv_hypercall+0x5ac/0x6af
(XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150

In read_pci_mem_bar(), the VF obtains the struct pci_dev pointer for its
associated PF to access the vf_rlen array. This array is initialized in
pci_add_device() and is only populated in the associated PF's struct
pci_dev.

Access the vf_rlen array via the link to the PF, and remove the
troublesome call to pci_get_pdev().

Fixes: 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci structure")
Reported-by: Teddy Astie <teddy.astie@vates.tech>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Candidate for backport to 4.19
Patch #2 ("xen/pci: introduce PF<->VF links") is pre-requisite

v4->v5:
* split the PF<->VF links to a pre-requisite patch
* pass pci_sbdf_t to read_pci_mem_bar()
* use stdint.h types on changed lines
* re-add NULL check for pf_info in read_pci_mem_bar(), as pf_info could
  be NULL

v3->v4:
* handle case when PF is removed with VFs enabled, then re-added with
  VFs disabled

v2->v3:
* link from VF to PF's struct pci_dev *

v1->v2:
* remove call to pci_get_pdev()
---
 xen/arch/x86/msi.c            | 37 ++++++++++++++++++++++-------------
 xen/drivers/passthrough/pci.c |  8 +++++---
 xen/include/xen/pci.h         | 15 +++++++++-----
 3 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index fbb07fe821b5..254a403dfb51 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -662,34 +662,35 @@ static int msi_capability_init(struct pci_dev *dev,
     return 0;
 }
 
-static u64 read_pci_mem_bar(u16 seg, u8 bus, u8 slot, u8 func, u8 bir, int vf)
+static uint64_t read_pci_mem_bar(pci_sbdf_t sbdf, uint8_t bir, int vf,
+                                 const struct pf_info *pf_info)
 {
+    uint16_t seg = sbdf.seg;
+    uint8_t bus = sbdf.bus, slot = sbdf.dev, func = sbdf.fn;
     u8 limit;
     u32 addr, base = PCI_BASE_ADDRESS_0;
     u64 disp = 0;
 
     if ( vf >= 0 )
     {
-        struct pci_dev *pdev = pci_get_pdev(NULL,
-                                            PCI_SBDF(seg, bus, slot, func));
         unsigned int pos;
         uint16_t ctrl, num_vf, offset, stride;
 
-        if ( !pdev )
+        if ( !pf_info )
             return 0;
 
-        pos = pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_SRIOV);
-        ctrl = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_CTRL);
-        num_vf = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_NUM_VF);
-        offset = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_OFFSET);
-        stride = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_STRIDE);
+        pos = pci_find_ext_capability(sbdf, PCI_EXT_CAP_ID_SRIOV);
+        ctrl = pci_conf_read16(sbdf, pos + PCI_SRIOV_CTRL);
+        num_vf = pci_conf_read16(sbdf, pos + PCI_SRIOV_NUM_VF);
+        offset = pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_OFFSET);
+        stride = pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_STRIDE);
 
         if ( !pos ||
              !(ctrl & PCI_SRIOV_CTRL_VFE) ||
              !(ctrl & PCI_SRIOV_CTRL_MSE) ||
              !num_vf || !offset || (num_vf > 1 && !stride) ||
              bir >= PCI_SRIOV_NUM_BARS ||
-             !pdev->vf_rlen[bir] )
+             !pf_info->vf_rlen[bir] )
             return 0;
         base = pos + PCI_SRIOV_BAR;
         vf -= PCI_BDF(bus, slot, func) + offset;
@@ -703,8 +704,8 @@ static u64 read_pci_mem_bar(u16 seg, u8 bus, u8 slot, u8 func, u8 bir, int vf)
         }
         if ( vf >= num_vf )
             return 0;
-        BUILD_BUG_ON(ARRAY_SIZE(pdev->vf_rlen) != PCI_SRIOV_NUM_BARS);
-        disp = vf * pdev->vf_rlen[bir];
+        BUILD_BUG_ON(ARRAY_SIZE(pf_info->vf_rlen) != PCI_SRIOV_NUM_BARS);
+        disp = vf * pf_info->vf_rlen[bir];
         limit = PCI_SRIOV_NUM_BARS;
     }
     else switch ( pci_conf_read8(PCI_SBDF(seg, bus, slot, func),
@@ -813,6 +814,7 @@ static int msix_capability_init(struct pci_dev *dev,
         int vf;
         paddr_t pba_paddr;
         unsigned int pba_offset;
+        const struct pf_info *pf_info;
 
         if ( !dev->info.is_virtfn )
         {
@@ -820,6 +822,7 @@ static int msix_capability_init(struct pci_dev *dev,
             pslot = slot;
             pfunc = func;
             vf = -1;
+            pf_info = NULL;
         }
         else
         {
@@ -827,9 +830,14 @@ static int msix_capability_init(struct pci_dev *dev,
             pslot = PCI_SLOT(dev->info.physfn.devfn);
             pfunc = PCI_FUNC(dev->info.physfn.devfn);
             vf = dev->sbdf.bdf;
+            if ( dev->virtfn.pf_pdev )
+                pf_info = &dev->virtfn.pf_pdev->physfn;
+            else
+                pf_info = NULL;
         }
 
-        table_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf);
+        table_paddr = read_pci_mem_bar(PCI_SBDF(seg, pbus, pslot, pfunc), bir,
+                                       vf, pf_info);
         WARN_ON(msi && msi->table_base != table_paddr);
         if ( !table_paddr )
         {
@@ -852,7 +860,8 @@ static int msix_capability_init(struct pci_dev *dev,
 
         pba_offset = pci_conf_read32(dev->sbdf, msix_pba_offset_reg(pos));
         bir = (u8)(pba_offset & PCI_MSIX_BIRMASK);
-        pba_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf);
+        pba_paddr = read_pci_mem_bar(PCI_SBDF(seg, pbus, pslot, pfunc), bir, vf,
+                                     pf_info);
         WARN_ON(!pba_paddr);
         pba_paddr += pba_offset & ~PCI_MSIX_BIRMASK;
 
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 95a8ed850efd..8209efdebecf 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -736,7 +736,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         }
     }
 
-    if ( !pdev->info.is_virtfn && !pdev->vf_rlen[0] )
+    if ( !pdev->info.is_virtfn && !pdev->physfn.vf_rlen[0] )
     {
         unsigned int pos = pci_find_ext_capability(pdev->sbdf,
                                                    PCI_EXT_CAP_ID_SRIOV);
@@ -748,7 +748,9 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         {
             unsigned int i;
 
-            BUILD_BUG_ON(ARRAY_SIZE(pdev->vf_rlen) != PCI_SRIOV_NUM_BARS);
+            BUILD_BUG_ON(ARRAY_SIZE(pdev->physfn.vf_rlen) !=
+                                    PCI_SRIOV_NUM_BARS);
+
             for ( i = 0; i < PCI_SRIOV_NUM_BARS; )
             {
                 unsigned int idx = pos + PCI_SRIOV_BAR + i * 4;
@@ -763,7 +765,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
                     continue;
                 }
                 ret = pci_size_mem_bar(pdev->sbdf, idx, NULL,
-                                       &pdev->vf_rlen[i],
+                                       &pdev->physfn.vf_rlen[i],
                                        PCI_BAR_VF |
                                        ((i == PCI_SRIOV_NUM_BARS - 1) ?
                                         PCI_BAR_LAST : 0));
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index f9435b7f4eb9..12f1c599e467 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -156,11 +156,16 @@ struct pci_dev {
      * List entry if info.is_virtfn == true
      */
     struct list_head vf_list;
-    u64 vf_rlen[6];
-    struct {
-        /* Only populated for VFs (info.is_virtfn == true) */
-        const struct pci_dev *pf_pdev;        /* Link from VF to PF */
-    } virtfn;
+    union {
+        struct pf_info {
+            /* Only populated for PFs (info.is_virtfn == false) */
+            uint64_t vf_rlen[PCI_SRIOV_NUM_BARS];
+        } physfn;
+        struct {
+            /* Only populated for VFs (info.is_virtfn == true) */
+            const struct pci_dev *pf_pdev;        /* Link from VF to PF */
+        } virtfn;
+    };
 
     /* Data for vPCI. */
     struct vpci *vpci;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 16:07:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 16:07:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817276.1231337 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szIAm-00024h-MT; Fri, 11 Oct 2024 16:07:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817276.1231337; Fri, 11 Oct 2024 16:07: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 1szIAm-00024a-Ji; Fri, 11 Oct 2024 16:07:24 +0000
Received: by outflank-mailman (input) for mailman id 817276;
 Fri, 11 Oct 2024 16:07: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=SPWD=RH=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1szIAl-00024U-DN
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 16:07:23 +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 e53a9bb4-87ea-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 18:07:21 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c42e7adbddso2763492a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 09:07:21 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99c9a893casm43483966b.104.2024.10.11.09.07.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 09:07:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e53a9bb4-87ea-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728662840; x=1729267640; 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=kTLAyTLsn9t+Viba1EJq5yv57ZCZ9nl3h4qXMHRNFgs=;
        b=nGyrnYnU+DfBvhSwGQRgTRRP6l95ULe6M4aqlOPUmXXuGVPm+ZGBQLywVSvvGGIfYt
         YZCkC93KdsKRYZL8Rt9VdCJK493HTx7w68Xy6prxv3J7ldN+33PfQXZQNS21oXGAUGPH
         mUBgOThYoGNN8HLR9Tve0xsk7Ff1ZjE8EUlAw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728662840; x=1729267640;
        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=kTLAyTLsn9t+Viba1EJq5yv57ZCZ9nl3h4qXMHRNFgs=;
        b=Xi/6myHQ7EGJeoWv2jha8HSpxUoPeN20qA/7lzvovnBFjEeiU9j0/MekS/Wjsla4sh
         NwbqL9V7NkTyulTURqS3ews/Wr6Piiri7FZFEnz3kSH145fDh+G/y0FB3L1b9yG0zOfH
         MhT2h8aqT/8afENWq+8e0CvEcRCQPO5zBNuna05IFx3XEGKIGHpHrztuIUH2EYd0mMP4
         QAsSjiTzqmdfEeMswnIwUyhyN5gj1f24pptK7+qw4fw0wc3Udji/RU3ovERtpvXPHNrc
         zJZt/TP4m4wngBxr27zIAt18Y+88I+SztEUsrJuYjNNZYjwrXVz5bxvh3DUNieoI1vKI
         8owg==
X-Gm-Message-State: AOJu0YwV4GhZppPyfeQWmi3chSIpFEI6JlmMUr56LGzdpmcwDNQF2Ogu
	TG9WrgUgjZtIo0T5w2bxObyyHG1U8crhT2S0HWlFr8FxRqLEIKDT4pCtOeHs1VQ=
X-Google-Smtp-Source: AGHT+IEE1is1oUW6Yy2b16qubnSW7XzGyinjwntdbzMoO4dSx5F3SBdi9PIr+ITv/J5rNT7yzODvZQ==
X-Received: by 2002:a17:907:3fa9:b0:a99:d101:fdfc with SMTP id a640c23a62f3a-a99e3e9cabbmr18637866b.65.1728662840473;
        Fri, 11 Oct 2024 09:07:20 -0700 (PDT)
Message-ID: <3b832dca-5f7c-45af-aff1-d5debc7ab7e8@citrix.com>
Date: Fri, 11 Oct 2024 17:07:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/5] x86/boot: Clarify comment
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241011085244.432368-1-frediano.ziglio@cloud.com>
 <20241011085244.432368-6-frediano.ziglio@cloud.com>
 <uvlmtx752sl45xmsy7o2unxa7rxwwen7eu4lutszfsoprre4sj@b5wre6lirrpf>
 <CACHz=ZgUbDEJOo0f5SBzOZCVDNkaGBrbkBAPSND8Sby0bkJ8+Q@mail.gmail.com>
 <wbpdfwa3hgjqkixl7usy7ta3r4337txb5ppvj74oat2no5wk52@sisyzgauolhq>
 <48f0d04a-f1e8-4c00-b71a-42fe035a3d0f@citrix.com>
 <CACHz=ZgRPEWYK8hh-mi+308gYEBbzq=aUE6ic8O1ONeV29-5mQ@mail.gmail.com>
 <D4T2JEKDK7KE.6N9GUPZMAVPC@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <D4T2JEKDK7KE.6N9GUPZMAVPC@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/10/2024 4:06 pm, Alejandro Vallejo wrote:
> On Fri Oct 11, 2024 at 2:58 PM BST, Frediano Ziglio wrote:
>> On Fri, Oct 11, 2024 at 2:38 PM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>>> On 11/10/2024 2:28 pm, Alejandro Vallejo wrote:
>>>> On Fri, Oct 11, 2024 at 02:08:37PM +0100, Frediano Ziglio wrote:
>>>>> On Fri, Oct 11, 2024 at 1:56 PM Alejandro Vallejo
>>>>> <alejandro.vallejo@cloud.com> wrote:
>>>>>> On Fri, Oct 11, 2024 at 09:52:44AM +0100, Frediano Ziglio wrote:
>>>>>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>>>>>>> ---
>>>>>>>  xen/arch/x86/boot/reloc.c | 2 +-
>>>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
>>>>>>> index e50e161b27..e725cfb6eb 100644
>>>>>>> --- a/xen/arch/x86/boot/reloc.c
>>>>>>> +++ b/xen/arch/x86/boot/reloc.c
>>>>>>> @@ -65,7 +65,7 @@ typedef struct memctx {
>>>>>>>      /*
>>>>>>>       * Simple bump allocator.
>>>>>>>       *
>>>>>>> -     * It starts from the base of the trampoline and allocates downwards.
>>>>>>> +     * It starts on top of space reserved for the trampoline and allocates downwards.
>>>>>> nit: Not sure this is much clearer. The trampoline is not a stack (and even if
>>>>>> it was, I personally find "top" and "bottom" quite ambiguous when it grows
>>>>>> backwards), so calling top to its lowest address seems more confusing than not.
>>>>>>
>>>>>> If anything clarification ought to go in the which direction it takes. Leaving
>>>>>> "base" instead of "top" and replacing "downwards" by "backwards" to make it
>>>>>> crystal clear that it's a pointer that starts where the trampoline starts, but
>>>>>> moves in the opposite direction.
>>>>>>
>>>>> Base looks confusing to me, but surely that comment could be confusing.
>>>>> For the trampoline 64 KB are reserved. Last 4 KB are used as a normal
>>>>> stack (push/pop/call/whatever), first part gets a copy of the
>>>>> trampoline code/data (about 6 Kb) the rest (so 64 - 4 - ~6 = ~54 kb)
>>>>> is used for the copy of MBI information. That "rest" is what we are
>>>>> talking about here.
>>>> Last? From what I looked at it seems to be the first 12K.
>>>>
>>>>    #define TRAMPOLINE_STACK_SPACE  PAGE_SIZE
>>>>    #define TRAMPOLINE_SPACE        (KB(64) - TRAMPOLINE_STACK_SPACE)
>>>>
>>>> To put it another way, with left=lo-addr and right=hi-addr. The code seems to
>>>> do this...
>>>>
>>>>  |<--------------64K-------------->|
>>>>  |<-----12K--->|                   |
> s/12K/4K/
>
> My brain merged the 12bits in the wrong place. Too much bit twiddling.
>
>>>>  +-------------+-----+-------------+
>>>>  | stack-space | mbi | trampoline  |
>>>>  +-------------+-----+-------------+
>>>>                ^  ^
>>>>                |  |
>>>>                |  +-- copied Multiboot info + modules
>>>>                +----- initial memctx.ptr
>>>>
>>>> ... with the stack growing backwards to avoid overflowing onto mbi.
>>>>
>>>> Or am I missing something?
>>> So I was hoping for some kind of diagram like this, to live in
>>> arch/x86/include/asm/trampoline.h with the other notes about the trampoline.
>>>
>>> But, is that diagram accurate?  Looking at
>>        /* Switch to low-memory stack which lives at the end of
>> trampoline region. */
>>        mov     sym_esi(trampoline_phys), %edi
>>        lea     TRAMPOLINE_SPACE+TRAMPOLINE_STACK_SPACE(%edi),%esp
>>        lea     trampoline_boot_cpu_entry-trampoline_start(%edi),%eax
>>        pushl   $BOOT_CS32
>>        push    %eax
>>
>>        /* Copy bootstrap trampoline to low memory, below 1MB. */
>>        lea     sym_esi(trampoline_start), %esi
>>        mov     $((trampoline_end - trampoline_start) / 4),%ecx
>>        rep movsl
>>
>> So, from low to high
>> - trampoline code/data (%edi at beginning of copy is trampoline_phys,
>> %esi is trampoline_start)
>> - space (used for MBI copy)
>> - stack (%esp is set to trampoline_phys + TRAMPOLINE_SPACE +
>> TRAMPOLINE_STACK_SPACE)
>>
>> Frediano
> So it's reversed from what I thought
>
>  |<--------------64K-------------->|
>  |                   |<-----4K---->|
>  +-------------+-----+-------------+
>  |  text-(ish) | mbi | stack-space |
>  +-------------+-----+-------------+
>                   ^                ^
>                   |                |
>                   |                +-- initial memctx.ptr
>                   +------------------- copied Multiboot info + modules
>
>
> Your version of the comment is a definite improvement over the nonsense that
> was there before. Sorry for the noise :)

Today, the pointer that becomes memctx.ptr is phys+SPACE, which does not
include the stack.

So initial memctx.ptr starts immediately below the stack, and the bump
allocator goes backwards (leftwards).

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 16:18:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 16:18:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817286.1231347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szIKz-0005Ic-J5; Fri, 11 Oct 2024 16:17:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817286.1231347; Fri, 11 Oct 2024 16:17: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 1szIKz-0005IV-Fu; Fri, 11 Oct 2024 16:17:57 +0000
Received: by outflank-mailman (input) for mailman id 817286;
 Fri, 11 Oct 2024 16:17: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=XZOt=RH=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1szIKx-0005IP-Pf
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 16:17:55 +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 5e4e8969-87ec-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 18:17:53 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a993f6916daso377576966b.1
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 09:17:53 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a7f254bbsm226596166b.61.2024.10.11.09.17.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 09:17:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e4e8969-87ec-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728663473; x=1729268273; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=9FIXEbweqyg4hATjzE0kvO8beWAvGqzO6GaxZpPYmOE=;
        b=GLgrRIH905CR1U9wYcI1kAFKQ4AN5R6/4uNUd3KZtbjGAfi2YAv+YgZ0Pt3SwVHtU5
         /Zqb22CyTVS/2yWZKhIi/S5AYjazQo4zYv8uprCm0LpinQmidpTSu5la56ed7+YBhdDM
         BnWxryqyhnXbAQ6hkDpSFNbxsB5gNtSgEhoJc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728663473; x=1729268273;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=9FIXEbweqyg4hATjzE0kvO8beWAvGqzO6GaxZpPYmOE=;
        b=qeM1JuSY5k7Lc8qDO+ZJK0TKfjrbcbMN5N9WnoeerpAQIJrYoa9lYpNV4oDCRm6W1W
         KfnyO93PunAzmvUka6qLsnbrY0Mgz8tdG4KNIZwh8Comz7SB+aaj8VhT/zURiwErNNXb
         97mLIweqXoBvGIGcc8puj4Fk7EImaLPMQ+iFiPKdoFR3a8ax1bufMGQW91YOnB8asCsO
         +5wgYJNXKS8qJarRNyDkelY/1P7uX0voi9YjLAzSYCRd4E+4JVnv9XdR4PlcDHQmeXLt
         dVdUNlYuhTFEkmhMxfiq77m4GSoOSOLFnoklH7VMp2t4iMmp0bb1Irv3+uriOKLYrjjP
         m4dA==
X-Forwarded-Encrypted: i=1; AJvYcCV+rhcP3iGa6/wJrvdXwsRQLCvl++e3C6qByfpW+g/6+Ul+VNnz9WESKwczFL0FurwmI9oi/jdiBa4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxyn7qDsnFMUTrc3DgSYCwRtFDLX3TCV41WgUu3VbL7h+yiFlwK
	H/bF5LSXFh0U930pQkSelsDAhrxvXenfO3K0rfcwrk3h2ZHQhSdqA5+VC979GWU=
X-Google-Smtp-Source: AGHT+IEGtTAbEVCpjxd7cW6DGCwPxOYbFRzmEXs3pUFPKTQ9LVc74SSwkAu6cY9k+74tODDz8DzPcA==
X-Received: by 2002:a17:907:1b96:b0:a99:d3f4:ff3b with SMTP id a640c23a62f3a-a99d3f5095emr55880066b.27.1728663473092;
        Fri, 11 Oct 2024 09:17:53 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Fri, 11 Oct 2024 17:17:51 +0100
Message-Id: <D4T423OR4IAU.D5ZUN0WIO0UK@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>, "Anthony PERARD"
 <anthony.perard@vates.tech>, "Juergen Gross" <jgross@suse.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 06/11] tools/libacpi: Use LUT of APIC IDs rather than
 function pointer
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-7-alejandro.vallejo@cloud.com>
 <28e07993-9463-49a5-ba75-e012056e5ab2@suse.com>
In-Reply-To: <28e07993-9463-49a5-ba75-e012056e5ab2@suse.com>

On Wed Oct 9, 2024 at 3:25 PM BST, Jan Beulich wrote:
> On 01.10.2024 14:38, Alejandro Vallejo wrote:
> > @@ -148,7 +148,7 @@ static struct acpi_20_madt *construct_madt(struct a=
cpi_ctxt *ctxt,
> >          lapic->length  =3D sizeof(*lapic);
> >          /* Processor ID must match processor-object IDs in the DSDT. *=
/
> >          lapic->acpi_processor_id =3D i;
> > -        lapic->apic_id =3D config->lapic_id(i);
> > +        lapic->apic_id =3D config->cpu_to_apicid[i];
>
> Perhaps assert (like you do in an earlier patch) that the ID is small
> enough?

Actually, I just remembered why I didn't. libacpi is pulled into libxl, whi=
ch
is integrated into libvirt. A failed assert here would kill the application=
,
which is not very nice.

HVM is already protected by the mp tables assert, so I'm not terribly worri=
ed
about it and, while PVH is not, it would crash pretty quickly due to the
corruption.

I'd rather have the domain crashing rather than virt-manager.

>
> > --- a/tools/libacpi/libacpi.h
> > +++ b/tools/libacpi/libacpi.h
> > @@ -84,7 +84,7 @@ struct acpi_config {
> >      unsigned long rsdp;
> > =20
> >      /* x86-specific parameters */
> > -    uint32_t (*lapic_id)(unsigned cpu);
> > +    uint32_t *cpu_to_apicid; /* LUT mapping cpu id to (x2)APIC ID */
>
> const uint32_t *?
>
> > --- a/tools/libs/light/libxl_dom.c
> > +++ b/tools/libs/light/libxl_dom.c
> > @@ -1082,6 +1082,11 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t dom=
id,
> > =20
> >      dom->container_type =3D XC_DOM_HVM_CONTAINER;
> > =20
> > +#if defined(__i386__) || defined(__x86_64__)
> > +    for ( uint32_t i =3D 0; i < info->max_vcpus; i++ )
>
> Plain unsigned int?
>
> Jan

Sigh... and this didn't have the libxl style either.

I really hate this style mix we have :/

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 19:26:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 19:26:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817341.1231399 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szLGx-0003Jg-Ik; Fri, 11 Oct 2024 19:25:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817341.1231399; Fri, 11 Oct 2024 19: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 1szLGx-0003JZ-Fa; Fri, 11 Oct 2024 19:25:59 +0000
Received: by outflank-mailman (input) for mailman id 817341;
 Fri, 11 Oct 2024 19: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 1szLGv-0003JP-TF; Fri, 11 Oct 2024 19: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 1szLGv-0006mb-RX; Fri, 11 Oct 2024 19: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 1szLGv-0006Uf-EG; Fri, 11 Oct 2024 19:25:57 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szLGv-0000ET-Dl; Fri, 11 Oct 2024 19: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=MQ40yzIZEqImlsNw5WSoaR6f5ThWId3Gw7OR1S+fjrQ=; b=cHQ5PNykT0IdfEystSa9h0K8nY
	1ZWJmc83ZA/VI/74Z9XrSIHCtxMXAlwiVIB+kQzY1VAARDrPlueuHpQHa7RpzXUztb4Isc0z3rDlB
	0OS5ng3l89HMyNxU7ltO1CWmlbH55FYMeYX6OAcdjzuBgh2G2ldX0dYAR2NgU5UoEixI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188052-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188052: 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-amd64-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-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-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: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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2: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-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds: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-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1: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-amd64-amd64-libvirt-qcow2: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-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd: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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=b2c7d7070dd0b311b64598411f52cdfa2a882ea2
X-Osstest-Versions-That:
    xen=2b49ef4503e2c549c166f439cf0dd331d9a8874c
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 19:25:57 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188045
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188045
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188045
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188045
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188045
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188045
 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-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-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-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-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-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 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-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  b2c7d7070dd0b311b64598411f52cdfa2a882ea2
baseline version:
 xen                  2b49ef4503e2c549c166f439cf0dd331d9a8874c

Last test of basis   188045  2024-10-10 17:36:46 Z    1 days
Testing same since   188052  2024-10-11 06:39:01 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrii Sultanov <andrii.sultanov@cloud.com>
  Christian Lindig <christian.lindig@cloud.com>
  Daniel P. Smith <dpsmith@apertussolutions.com>
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Julien Grall <jgrall@amazon.com>
  Michal Orzel <michal.orzel@amd.com>
  Stefano Stabellini <sstabellini@kernel.org>

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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   2b49ef4503..b2c7d7070d  b2c7d7070dd0b311b64598411f52cdfa2a882ea2 -> master


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 21:20:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 21:20:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817380.1231408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szN3R-0002bD-F4; Fri, 11 Oct 2024 21:20:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817380.1231408; Fri, 11 Oct 2024 21:20: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 1szN3R-0002b6-CX; Fri, 11 Oct 2024 21:20:09 +0000
Received: by outflank-mailman (input) for mailman id 817380;
 Fri, 11 Oct 2024 21:20: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=I9YX=RH=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1szN3P-0002b0-UN
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 21:20:07 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on2062e.outbound.protection.outlook.com
 [2a01:111:f403:2407::62e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9534c99b-8816-11ef-99a2-01e77a169b0f;
 Fri, 11 Oct 2024 23:20:05 +0200 (CEST)
Received: from CH2PR17CA0002.namprd17.prod.outlook.com (2603:10b6:610:53::12)
 by CY8PR12MB7265.namprd12.prod.outlook.com (2603:10b6:930:57::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.19; Fri, 11 Oct
 2024 21:20:01 +0000
Received: from CH3PEPF0000000D.namprd04.prod.outlook.com
 (2603:10b6:610:53:cafe::41) by CH2PR17CA0002.outlook.office365.com
 (2603:10b6:610:53::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20 via Frontend
 Transport; Fri, 11 Oct 2024 21:20:01 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH3PEPF0000000D.mail.protection.outlook.com (10.167.244.43) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Fri, 11 Oct 2024 21:20:01 +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.39; Fri, 11 Oct
 2024 16:20:00 -0500
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.39; Fri, 11 Oct
 2024 16:20:00 -0500
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.39 via Frontend
 Transport; Fri, 11 Oct 2024 16:19:58 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9534c99b-8816-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=th6PUN7uPDLZw2SOnzfSZl6fph7+g1qYcNvKD9nP2vp6dpKk3OmyUuXK0dNueS0bZJmsfdAOXCg6eyTxuXTxpOb3w1OJvPICqPTc0iINJ+CQvgE3FSAHbS52ZkRSqAIJtK6MoZcpA4J5o0lTyzWpt/IRU1yaRVCb9gSpwmlpRtAA+vYXiI5nwSzODSldO5rFTyeCOue94SF0oxGm2uQpEFCH2DG6YDS686VeWmX8MvvrMnxaBw+w0oW+u4G4o0bMedJr631XHQYVfzy2LIwEWyKAP24y1Z/mhzYB5BK/nKlRmTKWdYgq9WIKXyfThxD9f6kMizuxrf00x11qiSrKBw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=vY3yq9h5CtR2y/1Tci7pEa0GcD7LcLoRuyzXb6JpApI=;
 b=VfyWyC3XALpM1nrzwos89ZWFPmzK1AVAqWtnrqlLZxTFG7rebdMmyLGcBDMc78n9+RR5s2IxrpmyIpa/0xPiFUhxsAabJ2ziSatNhdk0CVHwao/zva92Op1eCiE8Vtiry2BvaU5U2o0XljMQ4iASs1ZDTnIh64D8sy2dDKZi0JAi7NbeK1ez+90u63i1AU/eJiFiHfp83QekHY7c/zkwG+UY+zsHlsJh+9J/CWu1RVlplulLJfVoVuqGO1VdKDqVYFC+ssj9ETxbsQrsVOHhBglNLrJnBuc5kpBVecEVKtlBWOKJZCIfCDBF4zgbDu7Nl5GQgUirNxj6lNP0EiEP4g==
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=vY3yq9h5CtR2y/1Tci7pEa0GcD7LcLoRuyzXb6JpApI=;
 b=cKHkGKfxEjXWrvmsm3gLoEi/HdCObdJdqXBxA16pjtd1TdmB0G1tMYwrPZhTLZjOJrD2TXCng3MtQVJdGYTP+9+0JnQv+1b06V+c9/gM4ksbMUzVLJbSA0isCcfUynMMqTi5zNpug4rZzVcG9Mo2PExSEw/OCM5Dmp1+Gusx3Vw=
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>
Subject: [PATCH] xen/arm: dom0less: cope with missing /gic phandle
Date: Fri, 11 Oct 2024 17:19:56 -0400
Message-ID: <20241011211957.447290-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF0000000D:EE_|CY8PR12MB7265:EE_
X-MS-Office365-Filtering-Correlation-Id: c5cdf08c-1349-45ca-f329-08dcea3a775b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?WZ/tHk7zrabOfx0OvBgw0ndmWyubnhx+f0ixHbmfYEyATPG+cZ+cKqoHHqIL?=
 =?us-ascii?Q?b8CfeTRVIKsxMZsDWVd0Ed/WLI9ARdyBnBFjzzodpkZR+ZniN2tR6yPO7ReX?=
 =?us-ascii?Q?M3LwzyQQFAbFwysleJJEhlw6QWUm01XzQrRQcQC7+GWOZH2maAFfVrnR5mlh?=
 =?us-ascii?Q?NW7OhIWBAlmnojXNXD9QA59BPZfv/0olV7aRCy1Fwj2sUubfrOPOiZKmMuHJ?=
 =?us-ascii?Q?8GJr0/v5zcQFh8zXwFo5awUfqyxFoS2GwGnyme8qMRtoM2tKW8RUMNlhZF4H?=
 =?us-ascii?Q?cHIJiOhAFVAHPhyFvwqpQAGkPD8dP6lvZBBFAYqZG9dxPDr/wbfaP2+H5tLh?=
 =?us-ascii?Q?OLzRkuSAOry0ClvqCLhhkBin5xNxFs5+JZ+HA3SPrBZcYWGVmtByG8+txOsH?=
 =?us-ascii?Q?4D+1SN/NX1NtUBbius5GB6rZtpmXW5pKh4UNPS1c/wBWqCOTnn+XGJCixcV4?=
 =?us-ascii?Q?ySLRhbvdCProoV436o/BUpGywDh/5MNYKfgjsCU8pv/Iu3/VLLRro8uLTroJ?=
 =?us-ascii?Q?n5f74zOAxWQA/njylCImRKslc9MCLfGSebjDX//i189oVv+qIesn2u8EKF5h?=
 =?us-ascii?Q?y8vp1HXyTmcTgWflA+3NwrOkRnkOQEywW7bAypYz6XLZforQJz3HoAdHUjmQ?=
 =?us-ascii?Q?w8kRedipbPxDYxA7tAFC5sBqF7ONZ4O+m5wvC5OXuJMD224GFijbFGx3+/6j?=
 =?us-ascii?Q?3XlDXFMCcu3fQBWaYb3Rs61a4gZ/+MTbHMzK7+T/7z8tScyMslt/iibDrGk8?=
 =?us-ascii?Q?FAoFGICT7vU2iV9TQ5NfDa+3/OWvJPobCWub9/Efv0s1VWH5Q3Qr+WyTvi6J?=
 =?us-ascii?Q?DCUIIKm6/jAf2K932prIxmE7vxs3fNXrZfZc52NhUCKJXeLG+W3+zBDzmj2d?=
 =?us-ascii?Q?Dp2K8Cib7HfOmP035Yeo7r5g3dLzY+4xKxTvswDXgfGHpNgkIaOPLcXw+vUA?=
 =?us-ascii?Q?vt2hiXmcQGLrthFRIDfLif69UahxqfayTIoszlQOiPQopwrXtJOXVE/2trPF?=
 =?us-ascii?Q?U+Qr2o/bBfu6nANgzwfkpwcHIQshFA/SWEinEpUXXeXtwyo3sL5km5xR2Kou?=
 =?us-ascii?Q?9uanlKhFkEWSMGzXuxG5onSxJdOiMXBqNpG7W3nanbFH71of8PhVyDOR/VmV?=
 =?us-ascii?Q?UDn2XYJVzZpPT64pSChOdUB0CoWE7nlpUykD6A0vJpzB9AHV2NXAetwKvYC1?=
 =?us-ascii?Q?ZqeSAB7su8/KgVC575UuyKC9nn35+txHnO3h2zn9taFpHvO8NbS/MSfVKNBn?=
 =?us-ascii?Q?V7anV2TUsV419XZO+ohXIgOSsdmnxeuHgcUweAUIMpi/cl84f6NFsTKFvcwD?=
 =?us-ascii?Q?1Nj24gkDqo38CaLX6t4yP85deiztiUr4+22jO4yC2QRUOZTum3ssob3AETBQ?=
 =?us-ascii?Q?IZjhGjg=3D?=
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:(13230040)(376014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Oct 2024 21:20:01.0504
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c5cdf08c-1349-45ca-f329-08dcea3a775b
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:
	CH3PEPF0000000D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7265

If a partial DT has a /gic node, but no references to it, dtc may omit
the phandle property. With the phandle property missing,
fdt_get_phandle() returns 0, leading Xen to generate a malformed domU
dtb due to invalid interrupt-parent phandle references. 0 is an invalid
phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
 xen/arch/arm/dom0less-build.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 09b65e44aed3..f328a044e9d3 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -554,7 +554,10 @@ static int __init domain_handle_dtb_bootmodule(struct domain *d,
          */
         if ( dt_node_cmp(name, "gic") == 0 )
         {
-            kinfo->phandle_gic = fdt_get_phandle(pfdt, node_next);
+            uint32_t phandle_gic = fdt_get_phandle(pfdt, node_next);
+
+            if ( phandle_gic != 0 )
+                kinfo->phandle_gic = phandle_gic;
             continue;
         }
 

base-commit: 76a54badf890f56ff72644593c0fbc72138e13aa
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 11 21:29:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 21:29:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817392.1231419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szNBx-0004tB-Ap; Fri, 11 Oct 2024 21:28:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817392.1231419; Fri, 11 Oct 2024 21:28: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 1szNBx-0004t4-8A; Fri, 11 Oct 2024 21:28:57 +0000
Received: by outflank-mailman (input) for mailman id 817392;
 Fri, 11 Oct 2024 21:28: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=Cjjf=RH=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1szNBv-0004sx-HW
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 21:28:55 +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 d019b0f8-8817-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 23:28:54 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id E0C2F5C3A78;
 Fri, 11 Oct 2024 21:28:47 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 09A92C4CEC3;
 Fri, 11 Oct 2024 21:28:50 +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: d019b0f8-8817-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728682131;
	bh=NS4UDwdyZemeeefXRUfL3egym5I7xcbX12BXPfVR0ds=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=lwNREFNVge7xS8DvC8BuPW2tfC52ZEOgvipGqT+SzN6/aBZs8LRgJG2P+9J1ntarG
	 3fRaVuJzvDp/2oTTP4XvlLbJ6RFEvxkKusbyhSmONQwhEa0DdPMtS4M3RSlFSROX5P
	 brGRxyWumxEQPLDzU40t/W9WFuYCfSeMJl0lnCJ1DhEuyT+sz2KLSjEmM7xoJVH2xQ
	 fQA9SMu6USwLBVXBl4YeMA5yVmtBSJUm7tiGlgr4YOZpYaXaS8GJ5pPQR96zPs61Nm
	 1mhPZA2QkaHmU08k96dOmpVbxk/KAwu257YZ5gvbO1mtMQ2lErdl5ZWy97kST0ZwzW
	 kjkLyTL7/scWg==
Date: Fri, 11 Oct 2024 14:28:49 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Stewart Hildebrand <stewart.hildebrand@amd.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>
Subject: Re: [PATCH] xen/arm: dom0less: cope with missing /gic phandle
In-Reply-To: <20241011211957.447290-1-stewart.hildebrand@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410111428450.471028@ubuntu-linux-20-04-desktop>
References: <20241011211957.447290-1-stewart.hildebrand@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, 11 Oct 2024, Stewart Hildebrand wrote:
> If a partial DT has a /gic node, but no references to it, dtc may omit
> the phandle property. With the phandle property missing,
> fdt_get_phandle() returns 0, leading Xen to generate a malformed domU
> dtb due to invalid interrupt-parent phandle references. 0 is an invalid
> phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>  xen/arch/arm/dom0less-build.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
> index 09b65e44aed3..f328a044e9d3 100644
> --- a/xen/arch/arm/dom0less-build.c
> +++ b/xen/arch/arm/dom0less-build.c
> @@ -554,7 +554,10 @@ static int __init domain_handle_dtb_bootmodule(struct domain *d,
>           */
>          if ( dt_node_cmp(name, "gic") == 0 )
>          {
> -            kinfo->phandle_gic = fdt_get_phandle(pfdt, node_next);
> +            uint32_t phandle_gic = fdt_get_phandle(pfdt, node_next);
> +
> +            if ( phandle_gic != 0 )
> +                kinfo->phandle_gic = phandle_gic;
>              continue;
>          }
>  
> 
> base-commit: 76a54badf890f56ff72644593c0fbc72138e13aa
> -- 
> 2.47.0
> 


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 21:44:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 21:44:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817402.1231429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szNRG-0008Sf-J7; Fri, 11 Oct 2024 21:44:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817402.1231429; Fri, 11 Oct 2024 21:44: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 1szNRG-0008SY-GP; Fri, 11 Oct 2024 21:44:46 +0000
Received: by outflank-mailman (input) for mailman id 817402;
 Fri, 11 Oct 2024 21:44: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=4YAD=RH=kernel.org=pr-tracker-bot@srs-se1.protection.inumbo.net>)
 id 1szNRE-0008SS-TJ
 for xen-devel@lists.xenproject.org; Fri, 11 Oct 2024 21:44:44 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 06475cd4-881a-11ef-a0bd-8be0dac302b0;
 Fri, 11 Oct 2024 23:44:43 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 87728A40E71;
 Fri, 11 Oct 2024 21:44:33 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E7B2BC4CEC3;
 Fri, 11 Oct 2024 21:44:41 +0000 (UTC)
Received: from [10.30.226.235] (localhost [IPv6:::1])
 by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id
 AE0BE38363CB; Fri, 11 Oct 2024 21:44:47 +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: 06475cd4-881a-11ef-a0bd-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1728683081;
	bh=lyE3IdLoFf6GehAflP7TZsS18klwfqRvgYqcD7Rf8Zc=;
	h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
	b=SAAYxKv72iVULX4VtGFuI3aorGuCI7MpN5fbkFtsFQ+OaMJh8VCnaiRj5IXPLYCxP
	 N36xM1phH6y4xR4cbgi+sAy7zUtwFYztFROoJl+2Nnn4uyMcF/fPYbVGhzrdfW/DDi
	 8j4Ry7ecAbIfbtAQNelfjGX4ipsSy8FC5la/tQUbp5W7AoUeonwa4P0RBXqjQg7Lvz
	 NKwxE+5HP0ciML2icAGjXfKuSOLWem/kCO4gJp+7PuFCPu1s+BozJRoEbbEliHdEE+
	 6aZeV2ulFhxrDzH/SzsFGRTWyN5CR5SdJN59EszQOrEIgdXL8gZ/NlfzbrG9Q9jTD3
	 3ysdDl7TILyYw==
Subject: Re: [GIT PULL] xen: branch for v6.12-rc3
From: pr-tracker-bot@kernel.org
In-Reply-To: <20241011122752.13233-1-jgross@suse.com>
References: <20241011122752.13233-1-jgross@suse.com>
X-PR-Tracked-List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
X-PR-Tracked-Message-Id: <20241011122752.13233-1-jgross@suse.com>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc3-tag
X-PR-Tracked-Commit-Id: bf56c410162dbf2e27906acbdcd904cbbfdba302
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: d947d6848a790616d6d2ca64097b6e818ffe3017
Message-Id: <172868308617.3005321.8107316848439661327.pr-tracker-bot@kernel.org>
Date: Fri, 11 Oct 2024 21:44:46 +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 Fri, 11 Oct 2024 14:27:52 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc3-tag

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/d947d6848a790616d6d2ca64097b6e818ffe3017

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


From xen-devel-bounces@lists.xenproject.org Fri Oct 11 22:57:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 11 Oct 2024 22:57:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817415.1231441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szOZP-0007Xz-EH; Fri, 11 Oct 2024 22:57:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817415.1231441; Fri, 11 Oct 2024 22: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 1szOZP-0007Xs-B1; Fri, 11 Oct 2024 22:57:15 +0000
Received: by outflank-mailman (input) for mailman id 817415;
 Fri, 11 Oct 2024 22:57: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 1szOZO-0007Xi-3t; Fri, 11 Oct 2024 22:57: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 1szOZN-0002AN-SY; Fri, 11 Oct 2024 22: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 1szOZN-0006fe-Gp; Fri, 11 Oct 2024 22:57:13 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szOZN-000671-GX; Fri, 11 Oct 2024 22: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=wIeQH+1jjFtSeaLLhQzt5FFjevFqBdjp2+ulGtSBQrg=; b=18aDKojwFtF1Y+YURocXdgsNDm
	+0+cSjTQdyeQ8Lrf1uPAkzW5wXpc6Vv201lPR9HysRjRfml3s+IW2taM6FQvo5bl0Savl1PVgy/hV
	NuOYurYu9s/h+zSeHBkdOyAfQWqp/PvBj0lYobYYoHcEVsWZ8kIPL/91O8fBNP6LLx7o=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188053-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188053: 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: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-amd64-amd64-libvirt-qemuu-debianhvm-amd64-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-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-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-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: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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=1d227fcc72223cbdd34d0ce13541cbaab5e0d72f
X-Osstest-Versions-That:
    linux=d3d1556696c1a993eec54ac585fe5bf677e07474
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 11 Oct 2024 22:57:13 +0000

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

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 188043
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188043
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188043
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188043
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188043
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188043
 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-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-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                1d227fcc72223cbdd34d0ce13541cbaab5e0d72f
baseline version:
 linux                d3d1556696c1a993eec54ac585fe5bf677e07474

Last test of basis   188043  2024-10-10 12:33:52 Z    1 days
Testing same since   188053  2024-10-11 06:42:01 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abhishek Chauhan <quic_abchauha@quicinc.com>
  Ahmed Zaki <ahmed.zaki@intel.com>
  Aleksandr Loktionov <aleksandr.loktionov@intel.com>
  Alexander Sverdlin <alexander.sverdlin@siemens.com>
  Anastasia Kovaleva <a.kovaleva@yadro.com>
  Anatolij Gustschin <agust@denx.de>
  Andrew Kreimer <algonell@gmail.com>
  Andy Roulin <aroulin@nvidia.com>
  Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
  Breno Leitao <leitao@debian.org>
  Brian Foster <bfoster@redhat.com>
  Carlos Maiolino <cem@kernel.org>
  Chandan Babu R <chandanbabu@kernel.org>
  Christian Marangi <ansuelsmth@gmail.com>
  Christoph Hellwig <hch@lst.de>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Chuck Lever <chuck.lever@oracle.com>
  D. Wythe <alibuda@linux.alibaba.com>
  Daniel Golle <daniel@makrotopia.org>
  Daniel Palmer <daniel@0x0f.com>
  Dave Ertman <david.m.ertman@intel.com>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Eric Dumazet <edumazet@google.com>
  Filipe Manana <fdmanana@suse.com>
  Florian Westphal <fw@strlen.de>
  Greg Thelen <gthelen@google.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <hanguidong02@outlook.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Ignat Korchagin <ignat@cloudflare.com>
  Ingo van Lil <inguin@gmx.de>
  Jacky Chou <jacky_chou@aspeedtech.com>
  Jakub Kicinski <kuba@kernel.org>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jijie Shao <shaojijie@huawei.com>
  Johannes Berg <johannes@sipsolutions.net>
  Jonas Gorski <jonas.gorski@gmail.com>
  Joshua Hay <joshua.a.hay@intel.com>
  Kacper Ludwinski <kac.ludwinski@icloud.com>
  Kiran K <kiran.k@intel.com>
  Kory Maincent <kory.maincent@bootlin.com>
  Krishneil Singh <krishneil.k.singh@intel.com>
  Kuniyuki Iwashima <kuniyu@amazon.com>
  Larysa Zaremba <larysa.zaremba@intel.com>
  Leo Stone <leocstone@gmail.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Lorenzo Bianconi <lorenzo@kernel.org>
  Luca Stefani <luca.stefani.ge1@gmail.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
  Marcin Szycik <marcin.szycik@linux.intel.com>
  Matthieu Baerts (NGI0) <matttbe@kernel.org>
  MD Danish Anwar <danishanwar@ti.com>
  Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
  Mohamed Khalfella <mkhalfella@purestorage.com>
  Mor Bar-Gabay <morx.bar.gabay@intel.com>
  Naohiro Aota <naohiro.aota@wdc.com>
  Naresh Kamboju <naresh.kamboju@linaro.org>
  Neal Cardwell <ncardwell@google.com>
  NeilBrown <neilb@suse.de>
  Nick Child <nnac123@linux.ibm.com>
  Nicolas Pitre <npitre@baylibre.com>
  Nikolay Aleksandrov <razor@blackwall.org>
  Olga Kornievskaia <okorniev@redhat.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Piotr Tyda <piotr.tyda@intel.com>
  Przemek Kitszel <przemyslaw.kitszel@intel.com>
  Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
  Rafal Romanowski <rafal.romanowski@intel.com>
  Rosen Penev <rosenp@gmail.com>
  Rémi Denis-Courmont <courmisch@gmail.com>
  Sebastian Andrzej Siewior <bigeasy@linutronix.de>
  Simon Horman <horms@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Steven Rostedt <rostedt@goodmis.org>
  Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>
  syzbot+d7ce59b06b3eb14fd218@syzkaller.appspotmail.com
  Tony Nguyen <anthony.l.nguyen@intel.com>
  Uros Bizjak <ubizjak@gmail.com>
  Vitaly Lifshits <vitaly.lifshits@intel.com>
  Vladimir Oltean <vladimir.oltean@nxp.com>
  Wei Fang <wei.fang@nxp.com>
  Willem de Bruijn <willemb@google.com>
  Wojciech Drewek <wojciech.drewek@intel.com>
  Xin Long <lucien.xin@gmail.com>
  Yan Zhen <yanzhen@vivo.com>
  Yuchung Cheng <ycheng@google.com>
  Zhang Zekun <zhangzekun11@huawei.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   d3d1556696c1..1d227fcc7222  1d227fcc72223cbdd34d0ce13541cbaab5e0d72f -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 02:22:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 02:22:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817435.1231452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szRm0-0003Q1-PL; Sat, 12 Oct 2024 02:22:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817435.1231452; Sat, 12 Oct 2024 02:22: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 1szRm0-0003Pu-MS; Sat, 12 Oct 2024 02:22:28 +0000
Received: by outflank-mailman (input) for mailman id 817435;
 Sat, 12 Oct 2024 02:22: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=A068=RI=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1szRlz-0003Po-Nx
 for xen-devel@lists.xenproject.org; Sat, 12 Oct 2024 02:22:27 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20627.outbound.protection.outlook.com
 [2a01:111:f403:2408::627])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d1cbcf2a-8840-11ef-a0be-8be0dac302b0;
 Sat, 12 Oct 2024 04:22:26 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by BL3PR12MB6524.namprd12.prod.outlook.com (2603:10b6:208:38c::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8026.23; Sat, 12 Oct
 2024 02:22:22 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8048.017; Sat, 12 Oct 2024
 02: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>
X-Inumbo-ID: d1cbcf2a-8840-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=DzkVIOLACvLubqX/fnI8nytu84XhZrVqF+urq7uTEszGSya+a2SmuoR+Lr50CVoyYNR/mj9iGCdAuXshaMLW25HrX5t9SEMSdhsASt4jbq0fmU4k1iWHmIiUPVmDjFnd1Y6s3NorPBatLSIdkSq0NN5cJOyvwybrWTrXYQi3eqftoiFLSDAC6Yqf0VcjgtT2hfcr4s83yOj+V+syYL0Ty+ivQwynq2ifSaK/04d2jtwvrx4dz0lorOc1R9ZYUkc1SrMLpC9tODohHHLjHNHmZAZ0s0KALYbSURF9ggP3db42/7xJBevAzVVnjmye0GKi6ojeNehjokABAqOM6EoDRg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=S/HccyqieL9apBSbnYKkQ36X/2w9um2E3Mu9QZgBOaw=;
 b=mStUnjqbnYsjosQX+QtfWokYPXEOUFKWXvsxJ4L0F1DzZ9TkKpuLzeJZD4ta2pnHZwFrMPUNgMysRA9DgN7DSwtpGV3hwcoqWx0IsFac+Haowfbc+Vq1PY8Rk2uHL2JOUbOMLXMrt9Cs/APsbMkwTCPVvxsCR5DZB7z1+tU0m+9bcnQb61CMvz300zAeQzGZuQVnOPEy4oJVy0CoC6/qPUw1KiZjEaZ4D1Z+e9ybF7M1j/xf2yAWtvdMTjswG0hVyje3CpyF8LdqbFLLX8O/uAlnbgkS5uaDroShdbaBRc8DarRBrjGO3dCpvXF78FlQW9YI0FH11mYVshtWWt6V2Q==
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=S/HccyqieL9apBSbnYKkQ36X/2w9um2E3Mu9QZgBOaw=;
 b=Ha0Rj01mwU+CkByAYT6TXcHKNY1tlXsA+Dlc8S/ykUeLGpWWDcSZitbMEmknGf0tULBSTPcvY1m1BnffXKdFvp6JB6WQTHVfT+rrTSuMelpK8bBnZdX3wn6dwYYVjp7YokufvXSrOs8A4I2yrOkpBtD/0eOvnWtioUqAu0qdYDI=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Juergen Gross <jgross@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "linux-kernel@vger.kernel.org"
	<linux-kernel@vger.kernel.org>,
	=?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Topic: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Index: AQHbG4+3Lfp3cJlJ4UuqoaLQId+ES7KBdNAAgAF0qIA=
Date: Sat, 12 Oct 2024 02:22:21 +0000
Message-ID:
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
In-Reply-To: <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8048.017)
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_|BL3PR12MB6524:EE_
x-ms-office365-filtering-correlation-id: eace6a69-6be7-4201-b4e3-08dcea64b404
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?eWE4bFdlajdKczlWZU0rcFVtS3JYRWNIOFJnVnUyelR3RVFJcVZMVkJCajU3?=
 =?utf-8?B?c3ZEb2Y5cGVKazJJd2tJeHBnUm9XNncrTEpOWTE0YUM1WnoyQml4UHh6OERq?=
 =?utf-8?B?L09XWTBLRlRneE96bVFYbnR2VXczRm1Od0JQeEs1ZEJRZ0ZaQVZ2K3NPekZ6?=
 =?utf-8?B?Q1FSY1l6dnpDRFM1TVhvZ1RVTlVIeHpRcTd4am9GdVpRV0cwQXRHRE9CVWpo?=
 =?utf-8?B?a0h6N2RCcHVvbUhoeHQ1T2x0ald2UXpobUZSTStKRWlSbk05MVlRNFVBb0Rp?=
 =?utf-8?B?UVdza3hGc0pkKys3NzFlRExXVytpYXZ1eG56akxIRjBKVTJjSXlkdHh6T3RT?=
 =?utf-8?B?czRGbm5DUFdNL1BqdlI5b1RhWDV6RlpxUzlMQk84c1ZUSGd2bUlLd0lBN3FF?=
 =?utf-8?B?M01LdTdSOFJVOTJRSTVobEdPTjFwRnFzZEJEVWVPR1J2MFh1S1FaSU9BSTVp?=
 =?utf-8?B?RTg4TkNZUlZuM0pKRzBlK2ZBM2NIL3UrbERJL2JJc0s5ZVQyMmwzSG5TMWxL?=
 =?utf-8?B?bmRxaGJ0S3orTWFVdll6RFRjWlQ4ZnVPREJ6UU9WZFo4WGpMUDdrSGMxNEdO?=
 =?utf-8?B?VHYrd3BvNUR2WkpPTEYvUGNLT1N0clI1TWN4bGNDVE9HVjgvU3NwZEpSOFV5?=
 =?utf-8?B?eVZuY21RcG8zTjlCSU1uL0FlVENROFU2MDFNR1Q5OGxVUGxGRXhHR25RaVkx?=
 =?utf-8?B?Ynd4VDZZRUJrdnFhMWFSMHUzQkFEM0tlZVAvRHYxS0JZL2JNQzJPeDBpdjBY?=
 =?utf-8?B?K09GNFZCeGl4aWNZdHJUN2JMeVlrWDhmZmJ5c0YxLzlqOVJCOUVOOHZNa1VX?=
 =?utf-8?B?Z1ZveWZCVS9SUU1EcklpZmVnZHRvclZlbmNnYTFaT29Sam1zM0ZZMlJFYjJY?=
 =?utf-8?B?Wm8zOGk4YVFHUG9PQWMrTU5vS3NWK0VnVFRNQ0lCL2NDSWZEMkpiSWZRdHNr?=
 =?utf-8?B?NjhNT0l6YThZbWZLTXZXVWN2dnhYOUhXZXhJeWdUdDJheHFtQy9JNTRTMWF1?=
 =?utf-8?B?VERzZW96VUJock03TWRKMmJIMTRhS29YbEdDL3M0VW9SclhERkRTS2VDMnlU?=
 =?utf-8?B?Y0tjeGNpOUUxQWcrOStSSHh0dTk1eUJVQTN5MFhTcnplVXpZUC9YQWVOcW9v?=
 =?utf-8?B?cmhUNVgrVjF5L24xdHVYcHdiQktIMWhFck90TGdPakxldmFHdTZRS2lvWG1T?=
 =?utf-8?B?aXQyZXEvcS9ZbGpUVVlIYnZFR0EyVmdQdVZaVFB0OW5iZS91M1RJMmFkd3F0?=
 =?utf-8?B?NHRxTnRDRUVHVEFobENiYTlxYXVpbXJvRmhkaEdUb2Y3SU91bittSlpzdFBw?=
 =?utf-8?B?Q3JjbWYrSk1yWEZ4OWRVS2xqZE1seW5WbUVhMW9iaVdOMlhJak5lUy9PVHFB?=
 =?utf-8?B?c296d0VMT1NrckhjQW9lSXRxaU1rbklnWk13YmpMRTAyUGNkZmJRazI0Sit4?=
 =?utf-8?B?amV6bE15WnoxUzdiNHl0S0pjTG5sRTVRSnVoLzdmcHVJYVRtelB2WkFqTXVa?=
 =?utf-8?B?NzVVQUtrSE5DcXZwVFRrcWFXVFlJS2dlbkI5ZTdvZ2Z3RWlvSUpmdDVvY1p2?=
 =?utf-8?B?RllHU1hXSThQblBTbExuM0N2RUN6U2VQNzBCRkJVRHBQUXhOR1ZZK1c2UGVV?=
 =?utf-8?B?NEptMnZUYUhMNXBZWjlBQzhUMXZZZGZGNjlUSTdKZlQzRWRvTHJBa2FoVi9B?=
 =?utf-8?B?MEZ0SW1XZ3hUa1hBaXl3RzdEbS8wMUdzY1Q0VUJ4QTZHTXZZY3FCVGhoL2ts?=
 =?utf-8?B?MU5QRFVJdzZHY3oyZ0RENGNiSlQ5U3VSTE8zRTUwOEZka0NJcUNGQldIaUJh?=
 =?utf-8?B?VWVGVk9hczVoTEloMHhLQT09?=
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:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?SFJvMDgvU3dFSHArY3J5dlZkS3MvNEQremxUZkZiL2V5TUF6UjBlOThTQThE?=
 =?utf-8?B?M3JrY3lxUlcvakZ2OUZyNVR6d2tGbGlMWXhzZHNnTWc2b0dZcDBMWFlWbFpU?=
 =?utf-8?B?UlpRNmRMN09FN3VaK3VCVVhHMkc5QWhNVXI5am1KVWczb04weG5nU0RNMTBl?=
 =?utf-8?B?c0I1WkFhSnZ4UTRXeXFaSy9wOE9SeDJ1TFJOb2UxRlVxR09MajFJRjhRaFFl?=
 =?utf-8?B?UHNsbU8wWlR3QWR2SllpMUZuaVJWZFNnenVTRXRxRlRMRHRxV1NUbG0xQWl4?=
 =?utf-8?B?TFpDcHY5M2NleHF4TE9menJ5alV3dHJzWVVTREZObXpwV2tUYjJDV3JiQkRm?=
 =?utf-8?B?TjhlY25pbGJpdnd1cU1LR3hOZ3lQc1lSTE5LZnY3dlo1R3VKZWNIZjNoYUNh?=
 =?utf-8?B?TWM2QzdFTjJ6MWlPT1JNVFJ5OEg3NzNiQThuOE1jdVpyUWwraWZjOEV3SjBx?=
 =?utf-8?B?T0pLVC9zVmhyOXF6YVQyN3ZXeDlGNW5qSEp0M0s1ZytiaGxxSWZsUUU1MXJj?=
 =?utf-8?B?TjZQM1BJbEM1TkpOYTBSaFRzckx0SGJTQnk2bTNoWUlzZUNXMFBZcWEyWVh1?=
 =?utf-8?B?MXdNcklQdG9RUGZ3MXk2NE0xdzJkZEFnSjd1RlJXQ3RxLzc5NWcvZHBhT0JH?=
 =?utf-8?B?eFVtZUVsNDhaOEpGbExsR2pBQVo0R1ZMbG1GbW83REZIOVArTHlYK0prKzN6?=
 =?utf-8?B?bXcxeVRQb3Fqekt1dWFUQ1hOL3lURzdsWStqSEtNWFQwRzFLSlRKWEU5aDJE?=
 =?utf-8?B?VkxhS2dMK0pkVHdoK2xYUlIvWTV3TDkwTFdoQWYxTEphd0wyOGxpcUNMeHdp?=
 =?utf-8?B?MHY4NExIOHpOVmxaZ3FzTnNsazUwSEt4SVNNWUdBc29RV2xsa1NIeHRLMXlZ?=
 =?utf-8?B?WDJXOHRqTVRXUFVoVEF6aStkbFJZdDI4amFQR3FiVHZjZFdkV3luTXlZNnR1?=
 =?utf-8?B?bHZOcitLZzF3ZmN4amRlMVpEam1rYU5LSjRPWXZLL1d3bW5lZTFma1BjUFpz?=
 =?utf-8?B?WkdZWmFYT0NGM3RreUdPOUV1WWZlMk9TSUxiS1BJekI4bmpZQWpBR1JVODBK?=
 =?utf-8?B?VE95cTF3Sk5QZlgwak1oeTR1VFE1KzlXUTRMWktzYTZRUHY1Zmk4b0Fyb0NT?=
 =?utf-8?B?dTNzUWI5Yk5iVU5xKzdzNS84RVlaYUdMSEtjdVR3WTljRHJRenA0SVBiaVg2?=
 =?utf-8?B?c2UvVUw4YnV5V0FoRnRtbUNUNjNFcGVPamxzbEtRZjVXbWh4S1N6SXA1RVY0?=
 =?utf-8?B?WmtTWndsR3paLysrNmRYYUI1bTdES1VLR2VWbzNhTzkzV2JzVGRpOU9yVHU1?=
 =?utf-8?B?V0ZjcVRjWEIvb05Mb3dVQ2V3aEtxZk11K0xTb2JsdmFNQlZmUVphdWk3dGZM?=
 =?utf-8?B?L2lOYjZQN0FwVVowU3BHay83dFF4bkRlNE55aE9OdzkzdFJKVUMwN1dScDVL?=
 =?utf-8?B?VXNKeXRKV3RjdGlaZ0lGNGh2VnJkci9hUWpORmkrWGx0S1Y3RUpPR004Zita?=
 =?utf-8?B?dit4cE95bFhmZlVWczlHM1VlYVdBU3VjU3U3L1NmYlQ3NEg2aTNRL3hQbjEx?=
 =?utf-8?B?K21aRTFaWVptdXdaOTNOS3NwMXVnajJCSFRHK2NzNFhyeDVRTEprNTN4dUNG?=
 =?utf-8?B?dGR4UElIMzM0bFlpUS9UVE5PVk1rUWVEODZUZCt5cTgzN0Nvd0lkUEpxODZx?=
 =?utf-8?B?cG9LUk4xVzlEQmUwOXBhM0FHZXhDVUcySHQ2S3hMUmdyVk1PVUlCUEZuWlhG?=
 =?utf-8?B?NVVybTM5NElnK0RaZGxjVVUzQWVQZzNDNWp5VFpsVjU3ODZNUUZ3dTBDRzI2?=
 =?utf-8?B?ekQzRlRjaTRyaGdQMGpaY1lNMEY1bnY0ZFAzTUdEaiswbkFxb053S3RaNlJO?=
 =?utf-8?B?T3N4WnIvNUhVaEdhaXF1eVNtWThPTDVlSkc2eVRpL0dra3J5WE5ZSndtNWV6?=
 =?utf-8?B?WkZ5RW1kUnY1cW93Q2NhdXdaSkhKYVYwejdqeW4rSVFhTjIrZytreGNSSUlh?=
 =?utf-8?B?TkY0c28vUHlYRHd4ZjVSTlIraFZQMUVrdDYxdHBjRVlSUkowVDQ3eHBYNGVv?=
 =?utf-8?B?bHlmL3hrVkFyQWRjSTRrSDZSZk16eUk0NS9TNmFJdUVWLzJBUitKQUNuckxz?=
 =?utf-8?Q?hlnI=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <0518C61F00FDE54BBC4A52CEF943099E@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: eace6a69-6be7-4201-b4e3-08dcea64b404
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2024 02:22:21.7397
 (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: YYINlYEo7S7vqpZ4DZeEHj4QFCUDMPCbltQuwnx/4a+Ts874F7u0rak20EsrVbC47VgN6/cdYTn7lIY0msHbYw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6524

T24gMjAyNC8xMC8xMSAyMDowNiwgSnVlcmdlbiBHcm9zcyB3cm90ZToNCj4gT24gMTEuMTAuMjQg
MDU6NDIsIEppcWlhbiBDaGVuIHdyb3RlOg0KPj4gQ29tbWl0IDJmYWU2YmI3YmUzMiAoInhlbi9w
cml2Y21kOiBBZGQgbmV3IHN5c2NhbGwgdG8gZ2V0IGdzaSBmcm9tIGRldiIpDQo+PiBhZGRzIGEg
d2VhayByZXZlcnNlIGRlcGVuZGVuY3kgdG8gdGhlIGNvbmZpZyBYRU5fUFJJVkNNRCBkZWZpbml0
aW9uLCB0aGF0DQo+PiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4tcHJpdmNtZCBjYW4ndCBiZSBsb2Fk
ZWQgb24gZG9tVSwgYmVjYXVzZSBkZXBlbmRlbnQNCj4+IHhlbi1wY2liYWNrIGlzbid0IGFsd2F5
cyBiZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5IG9uIGRvbVUuDQo+Pg0KPj4gVG8gc29sdmUgYWJvdmUg
cHJvYmxlbSwgcmVtb3ZlIHRoYXQgZGVwZW5kZW5jeSwgYW5kIGRvIG5vdCBjYWxsDQo+PiBwY2lz
dHViX2dldF9nc2lfZnJvbV9zYmRmKCkgZGlyZWN0bHksIGluc3RlYWQgYWRkIGEgaG9vayBpbg0K
Pj4gZHJpdmVycy94ZW4vYXBjaS5jLCB4ZW4tcGNpYmFjayByZWdpc3RlciB0aGUgcmVhbCBjYWxs
IGZ1bmN0aW9uLCB0aGVuIGluDQo+PiBwcml2Y21kX2lvY3RsX3BjaWRldl9nZXRfZ3NpIGNhbGwg
dGhhdCBob29rLg0KPj4NCj4+IEZpeGVzOiAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRk
IG5ldyBzeXNjYWxsIHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4gUmVwb3J0ZWQtYnk6IE1hcmVr
IE1hcmN6eWtvd3NraS1Hw7NyZWNraSA8bWFybWFyZWtAaW52aXNpYmxldGhpbmdzbGFiLmNvbT4N
Cj4+IFNpZ25lZC1vZmYtYnk6IEppcWlhbiBDaGVuIDxKaXFpYW4uQ2hlbkBhbWQuY29tPg0KPiAN
Cj4gVW5mb3J0dW5hdGVseSBJJ20gc2VlaW5nIGEgYnVpbGQgYnJlYWthZ2UgZm9yIHRoZSAzMi1i
aXQgeDg2IGJ1aWxkLg0KPiANCj4gUmVhc29uIGlzIHRoYXQgZHJpdmVycy94ZW4vYWNwaS5jIGlz
IGJlaW5nIGJ1aWx0IGZvciBEb20wIG9ubHksIHNvIGhhdmluZw0KPiBDT05GSUdfWEVOX0FDUEkg
ZGVmaW5lZCBpcyBub3QgZW5vdWdoIGZvciBlbnN1cmluZyB0aGUgbmV3IGZ1bmN0aW9ucyBhcmUN
Cj4gcHJlc2VudC4NCj4gDQo+IEkgc3VnZ2VzdCB0byBhZGQgYSBuZXcgQ09ORklHIGl0ZW0gQ09O
RklHX1hFTl9ET00wX0FDUEkgbGlrZQ0KPiANCj4gY29uZmlnIFhFTl9ET00wX0FDUEkNCj4gwqDC
oMKgwqBkZWZfYm9vbCB5DQo+IMKgwqDCoMKgZGVwZW5kcyBvbiBYRU5fQUNQSSAmJiBYRU5fRE9N
MA0KPiANCj4gYW5kIHRoZW4gcmVwbGFjZSBhbGwgQ09ORklHX1hFTl9BQ1BJIGluc3RhbmNlcyBp
biB5b3VyIHBhdGNoIHdpdGgNCj4gQ09ORklHX1hFTl9ET00wX0FDUEkuIFRoaXMgaW5jbHVkZXMg
dGhlIHVzZSBjYXNlIGluDQo+IHByaXZjbWRfaW9jdGxfcGNpZGV2X2dldF9nc2koKS4NCg0KSG93
IGFib3V0IGFkZCBzdHVicyBmb3IgeGVuX2FjcGlfcmVnaXN0ZXJfZ2V0X2dzaV9mdW5jIGFuZCB4
ZW5fYWNwaV9nZXRfZ3NpX2Zyb21fc2JkZiB3aGVuICIhQ09ORklHX1hFTl9ET00wIiBpbiBhY3Bp
LmgsIGxpa2UgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGF0IGZpbGUgZG8uDQoNCj4gDQo+IA0K
PiBKdWVyZ2VuDQoNCi0tIA0KQmVzdCByZWdhcmRzLA0KSmlxaWFuIENoZW4uDQo=


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 02:36:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 02:36:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817442.1231462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szRzZ-0005qS-VA; Sat, 12 Oct 2024 02:36:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817442.1231462; Sat, 12 Oct 2024 02:36: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 1szRzZ-0005qL-R8; Sat, 12 Oct 2024 02:36:29 +0000
Received: by outflank-mailman (input) for mailman id 817442;
 Sat, 12 Oct 2024 02:36: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=A068=RI=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1szRzY-0005kF-EU
 for xen-devel@lists.xenproject.org; Sat, 12 Oct 2024 02:36:28 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2417::61b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c666cb77-8842-11ef-99a2-01e77a169b0f;
 Sat, 12 Oct 2024 04:36:26 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CH3PR12MB8546.namprd12.prod.outlook.com (2603:10b6:610:15f::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Sat, 12 Oct
 2024 02:36:21 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8048.017; Sat, 12 Oct 2024
 02:36: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: c666cb77-8842-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HZDTgVgckltjUSY5jGDHjmgu1B2bHy2i72g8Sh2B1B8gKb+i2BzFSBmEXEyUCmFWxwmS9O+AkcGdxL9L5c3mKKOqT5vnjoXE8gDj6eeVCHmt8muoib4OTyNjWBNWWHVTUQRtBU8dtzm3BAmS8fb+B8MPKLANXg7Kb5h9bheWwsBAEusH9V+cJ1lrui5OUnpEhi4oR12/7ZIKZrTIf7fOhd3XKI/pLSXX74TqOwiOmoRZ+3q8ToS9VoWyDFmdYgkz1acNdLda83nG7Dho53e4Sz96Ftwc5psauDpXXDpHkfDTxVdJOjrziT3rWicfzssOubK/0Bmk8cj7GQo9lRQQlg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=ay5MIbHfFoEOtxEXCqhqFFWWtIN1AFtm6El0SI6AA7o=;
 b=ufVrhudh1RoilO2aJ4ZHCpMjldbArfdSPsrd7eMpc+v1CfpUmt4J9BQ2j2l6jeb5tzv58F/wxcyqQU9dX4fE3yYFxHXij4SrrpZR9MhFKelgBuppolYjOkMVSDirGZKLa7U20A0+zNLunO1eL1i7yg99Fazasi3MJZaadZCmNDD0y0ISPkELv0A7Wyiou1L2zZvICsKnzUqToONrB+UxtnQfeYUJDHVcIz4w2WstqL2quhX27w7nhjkwyCmk0MBiSRInvVgf8YYom7DHT3qcKPom3rKt5vCclk8Znwg/luAoccasbqpA1jMOjgj/VRuDL7ITJuG76/m/8asDji/ikQ==
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=ay5MIbHfFoEOtxEXCqhqFFWWtIN1AFtm6El0SI6AA7o=;
 b=t5lEzAEOgkSDy22+xV9SqM3jk6ALyjLoVQs0xwvWJBPu1wF5r59aF3h5fJwKaYodWCNHP5ei8IegoONs+kdG+N/5zV0C7MRRmfYm1g7Vao1Wed4ud8IgnFqKB+/LIYmTJTfBCLjdMZjCp/VbEcDpHUEzuyChYc/+ftWFwhYrM78=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Juergen Gross <jgross@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "linux-kernel@vger.kernel.org"
	<linux-kernel@vger.kernel.org>,
	=?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Topic: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Index: AQHbG4+3Lfp3cJlJ4UuqoaLQId+ES7KBdNAAgAF0qICAAAQHAA==
Date: Sat, 12 Oct 2024 02:36:21 +0000
Message-ID:
 <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
In-Reply-To:
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8048.017)
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_|CH3PR12MB8546:EE_
x-ms-office365-filtering-correlation-id: f4329e83-131e-496a-a34b-08dcea66a8b6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?R1VCTERzQWZtZ3Ayc2NwT1R4V2lyL1dmaWdxaURxVnFQVEtmdFZMRDFYbXpU?=
 =?utf-8?B?ZkdoYWc5YjZHb0xlTW8rSHllYTYzRE5mRUlaTXVTTk0yeU5LRkNZTW85YWUy?=
 =?utf-8?B?ZnQ5YXBuYU5OTDNzWmhTSFd3Z2ptUjdUNjBQVHh2RCtWZHFyWm8zZXlPUlJV?=
 =?utf-8?B?QTEzL1hjbnpBVVYyN2o5ajlDVnlWa25UME41aWowYzVHaG9ZTEkwUmJwNElF?=
 =?utf-8?B?QVVEclV6UFNkMXlsOE9JdzQ5ZDJKQ3RPRmg3WG5la3BKMG12bStPRlJYdmpl?=
 =?utf-8?B?U3UvUk9RN1ZhaGtVRVlSajU2YW1PVHd6SUt5Z21nRE9laGRXb1pkbGNZVkJU?=
 =?utf-8?B?U3VpaHZsT2ZseXYvaVBMYVFCekpHaWxFano0YlVMODB4bkEzdytPdTFyeFE1?=
 =?utf-8?B?Nk1NejFmcGdzWkdxbUgrVEVubTViMUs0UU1ob3VsK3ozZ1o4czFSK0dsME9i?=
 =?utf-8?B?Y29qK0tCd0tlSTluRGsyMUdCR2lTWjRvTWI0Z1p5bzYvWVZNVm4rYVBmZEFl?=
 =?utf-8?B?YTNRVUdsUnc3L2xRTkkzMTMrQWk1TDBHOW5tUVN4MEd3NldTZld1YVV1QnMw?=
 =?utf-8?B?NlBtYkNXemgrNE1OYkpGUFQyd2FvdXRUSk9Jbld5THNOQjZ6amR3QVJRakFi?=
 =?utf-8?B?K29zam8rOFJudHpKQ2ZiTmdCNFhMbllrelRwaVJpT3hGeGlRcTg3QmxOV0Rh?=
 =?utf-8?B?VGIrNHNRUmphTU5kQ3RNcU5nbW0yd29ta0ZlYXVVNklPWndvL2V5YzJScUZH?=
 =?utf-8?B?VHBTdmxSbFpIT3QrdTU1VXBUWG1TY2FaaFBEUzdiQksvTHlhS3dVQjNXaEM3?=
 =?utf-8?B?MDJEMjJPRFZicXNwQVN0bmJmVzVXU1hqalNTT3l5T1BHazU5aEtXU0UvS3lB?=
 =?utf-8?B?SFJmblVaUno1SGw1dzJoUDR5czlUQXJJNExZczkyNWNEaGZKSGM3a21xdFE0?=
 =?utf-8?B?Q1pvU0FvM24yeFc2VXVrV25KMWRhNWczUVpIQU1SQmFxcnVCTXNGVC9MZFdu?=
 =?utf-8?B?UmltRHNHcW9lVVA5eTNUM1V2OEtsTnBFVUZUV0NqNEhucXNJZkttbUwreVBC?=
 =?utf-8?B?NXlrVmhtQkRRN2o5U2xUanJQaWxSUTQzZWJlMkhlMDlocXFBZ1JyUFZxWjky?=
 =?utf-8?B?dmU4cXhEZHdxZ0tlTldKMlZJUUErSzA5VUVabU43cEgwMjE0a2xVd2hQWEF2?=
 =?utf-8?B?dnlnWnRKUisrempvell4YU9kNk9CaEk1R0RlQ0RrOFBabVJpcGVZUmJNVkVh?=
 =?utf-8?B?OHptMDgwMjhxN05TVlc2T1R2dlM1aGM1eWl5dmNHMnpOYmZ2S1F2NGRwUDl4?=
 =?utf-8?B?SmRidjkxcmtFV0ZxUXBJTXRqQmFMS2QzWUdjSXgrNUl0UHRXSFlsR1cyTENS?=
 =?utf-8?B?QncyUkswOGdmQlFzRFhQUEhydXp3Rmo2ZWdTRlNpbG82MENkdy9qcnVTUVB3?=
 =?utf-8?B?RXlmcDVwbHJidXpqMjBrN002d1crNVJIZS9ZVzBjOTBBNHdsUkdJUFQrRHZE?=
 =?utf-8?B?RTU0T1FHL2hqVVBLK1dvYzkwRU1lNjNRTjJDTjg2bHpHWlhhS2U0cDFjQXNQ?=
 =?utf-8?B?ZlI5U1I2N1lNeldYWDFoQ3hRdkZxQmpmZEJRV2psMzRQbWNpMTVwQ29GL1hS?=
 =?utf-8?B?THphTDFhRmMwSnNDcFZwSWNvbk9qUVR0ajZlSTRYOGNxT1NWZVRJMUg2K1Ro?=
 =?utf-8?B?WTFRc0RTOU8rU1liYzE1OEZCU2YwQ0o0UDBhdVVjNVR6VGtkVUJHNmw2eHhG?=
 =?utf-8?B?R3pMUm5aZkYxUzVJSzJzTzdGd1c5OEVFbzR2a0diY2lETnJTNmRmenBIcEdX?=
 =?utf-8?B?cFVYSE1YcE90RWZXT3BUUT09?=
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:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?RHNIWmFMcnhKVDlMMktseW9FSFlKTFllV3RqVnAwSG8vTEpiSlBISW5od245?=
 =?utf-8?B?Uk9zWHdUVUtNbEhwWXBvRndwQ3FMQjA3SDVKQkxydjJaL21tWUxXNk1hMTdu?=
 =?utf-8?B?MXdwdDRBbEFzUWhPRUc0QkRNTk5pRXFJY210bGlYYUVwZWRxZHhZZk9pSlJo?=
 =?utf-8?B?d1UwTThMMTgwdHgvYVU1Yi96elVMQ21lR1dwYVVJRmFDaitUbkxaRUFLL0Q5?=
 =?utf-8?B?MGEwMTRzN0dUOFo1SjRPbFBVb3ZiU3JIY01TaUNkUDdxaEhXY0ErWWdMRklw?=
 =?utf-8?B?V0pRV2MvVkFuWEJFTE1KWkF1Q0hQRDFVN0lHRDNDOUIxQnVoazV0N1cvUXhU?=
 =?utf-8?B?VGljTHlOV01NSXN5aFB0SEM4RlEwRTYxYWdCMjZHYWJRbHFVajJ6VjhRWXNp?=
 =?utf-8?B?d2xKVFh0S1NBL1lJQVh5aStmVFFzQUo2Z2h0WVNvcSsxUnZoTEgyZnpBUHRw?=
 =?utf-8?B?MDNsZUJydjVzdlZiVFMrOUgrVEtySTFBUDMxcDgrWmpsbDJXYWtvZkZaRGNP?=
 =?utf-8?B?TDY2bVhhcHUwRTZrc3hYdVVRT21jbGJacDA0NFh3dTJFcitGMktsVFAyeFNN?=
 =?utf-8?B?QnNqaEFUd1NzenBaVmdFYUl0TXhkUWwybkZnVzZhWTNHWERuSzJDekR6bzhS?=
 =?utf-8?B?RlR4aDR3elY0NnFud0JWc01kSkpYYmRHY2FkTDdWRTdHTjFhMDE0bjZpeVBE?=
 =?utf-8?B?ZWZjRFlqOFIyckhEbURmd0VvNGtrRm1nTDFick5sSTUyZlhJYTdaODJtNUF6?=
 =?utf-8?B?M3BLM3g3QnM1TEtsb0xUcXNWSU1Na3RGRlp6TEdPa2phc1RYZkRqd2hYOHRQ?=
 =?utf-8?B?NU1NYkkzZy9zYkIwQWxKVWJNcGpjRW5haDB6QkRkUTFJSDU1cnJZcmJpZTVQ?=
 =?utf-8?B?M05DVlA3MHZGOGQ4czkyUlV2NWc4UXVkT2ZEK3paZ1B5RHV4aFYvMXd6YVI1?=
 =?utf-8?B?MDI4LzZCZ2N6ZnFUWnZjdzRMU3ZCRm5ncXU4ZFIyVEVYdlhTeUlLbHoyVlpw?=
 =?utf-8?B?dXZpbDRXcVMrVFhPR1YxdXZEVHpQdXZNWDR2V3lkNlFvK0FPTi90Q1dWV3VP?=
 =?utf-8?B?VlFZRUpzVjhQS2JFVURmRHozcUtDWjBuWWhobi8vbXVaVUJmVXdMdlpYK0JL?=
 =?utf-8?B?dEhJVElHQTgvM3FpRmFwWU5iaDgrSzhidlRMR0p2L3ZQUEZYQVhxY3FidVN5?=
 =?utf-8?B?QjVjSUlJN2ZUYkNBemhvaVV4eVB5ZUtRYUIrU2piY0kzVWROTlduQVVTajB5?=
 =?utf-8?B?QlRMWlRYQ3pRMFIyaFR3T2ZWYTJXZ1dSem1HQkprYXRNK0JROWowSEpwY3k5?=
 =?utf-8?B?Q3NwWnptUXN1dnRuTURWeUllaFZXMXFFSkk4Qm1VTnhhbWUvQjR0dWFJZS9S?=
 =?utf-8?B?V0dVOTljN2JJc2FPWW1meTQwZDMvOVM1bEd2bldtaE5jdjVtNlpsNVNDbnI3?=
 =?utf-8?B?dHgzQUo5YVErejNHNEFVZXpkdjZkYjdrNmY4YlVwdVNyNS9iN2tjY0thZDgy?=
 =?utf-8?B?UXRSLzM1TFJQWkdSYy9RUHlnWmt5d3FZc2hMSlRNblJ6ZHkvYnlYQWlpUE5x?=
 =?utf-8?B?K3dYdkVHaXFZak50a2ZJM0xNeGJ6ZFBJTkhQYURZdkgydFJ0dUVrNVRjU0Qr?=
 =?utf-8?B?aWplQW1kY0crOGUrQ0JQd3Y3ZHdmcjZGU2ZFeSt6RExORlByMnY1MDhYUG1q?=
 =?utf-8?B?eDJ5NW1XaVcrWnJnbGVOUG12UWlKR3NBV29sWTN0cVQ1STBnenl1VkVPZ1Nv?=
 =?utf-8?B?dVFITy9sL2RzZXdpS0hiVTlQZkppWWt3eWxROC9lYUN2MHRSN3pwTlY1NDhr?=
 =?utf-8?B?VmZHUDRUUTd3cEQvUzhXNk1sSWJoSUg1N01TcTNLeEpCMkJDak9IWVJTWGxY?=
 =?utf-8?B?eUprcnZuRWRwdGN2TXFlNzhtdTQxbDlSQW5rTm5iVWM3Qnp5T1BoWWdQTW5W?=
 =?utf-8?B?b0F4LzErRmlvdTY0SzdtRnZKSHhuUFh2QnZ0amxqWVNKTEozZGoxbmV2VTJM?=
 =?utf-8?B?ZGxsSi96V2VkSkVjakM3VHpYT0V3S2ExRmh6YnhWLzRyK2NXTWcxWVVPcnNF?=
 =?utf-8?B?MmlVZGpFS0lLUTROL1dOcVFQSjFPdnM2Um1pQmMzZmpLUkRLZXZKdy9Dc2Mr?=
 =?utf-8?Q?roR4=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <8AA328B342B189428A7C74DCB66CAA2E@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: f4329e83-131e-496a-a34b-08dcea66a8b6
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2024 02:36:21.7445
 (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: awF7tTtDi/Vxl8Ej4bq0XOfASAqY02BkS8gfNazQmN7c6mBbPU8jAyI7xcGszQJxJ1HRXZ6gy9KB26gdlgANgQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8546

T24gMjAyNC8xMC8xMiAxMDoyMiwgQ2hlbiwgSmlxaWFuIHdyb3RlOg0KPiBPbiAyMDI0LzEwLzEx
IDIwOjA2LCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4gT24gMTEuMTAuMjQgMDU6NDIsIEppcWlh
biBDaGVuIHdyb3RlOg0KPj4+IENvbW1pdCAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRk
IG5ldyBzeXNjYWxsIHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+IGFkZHMgYSB3ZWFrIHJldmVy
c2UgZGVwZW5kZW5jeSB0byB0aGUgY29uZmlnIFhFTl9QUklWQ01EIGRlZmluaXRpb24sIHRoYXQN
Cj4+PiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4tcHJpdmNtZCBjYW4ndCBiZSBsb2FkZWQgb24gZG9t
VSwgYmVjYXVzZSBkZXBlbmRlbnQNCj4+PiB4ZW4tcGNpYmFjayBpc24ndCBhbHdheXMgYmUgbG9h
ZGVkIHN1Y2Nlc3NmdWxseSBvbiBkb21VLg0KPj4+DQo+Pj4gVG8gc29sdmUgYWJvdmUgcHJvYmxl
bSwgcmVtb3ZlIHRoYXQgZGVwZW5kZW5jeSwgYW5kIGRvIG5vdCBjYWxsDQo+Pj4gcGNpc3R1Yl9n
ZXRfZ3NpX2Zyb21fc2JkZigpIGRpcmVjdGx5LCBpbnN0ZWFkIGFkZCBhIGhvb2sgaW4NCj4+PiBk
cml2ZXJzL3hlbi9hcGNpLmMsIHhlbi1wY2liYWNrIHJlZ2lzdGVyIHRoZSByZWFsIGNhbGwgZnVu
Y3Rpb24sIHRoZW4gaW4NCj4+PiBwcml2Y21kX2lvY3RsX3BjaWRldl9nZXRfZ3NpIGNhbGwgdGhh
dCBob29rLg0KPj4+DQo+Pj4gRml4ZXM6IDJmYWU2YmI3YmUzMiAoInhlbi9wcml2Y21kOiBBZGQg
bmV3IHN5c2NhbGwgdG8gZ2V0IGdzaSBmcm9tIGRldiIpDQo+Pj4gUmVwb3J0ZWQtYnk6IE1hcmVr
IE1hcmN6eWtvd3NraS1Hw7NyZWNraSA8bWFybWFyZWtAaW52aXNpYmxldGhpbmdzbGFiLmNvbT4N
Cj4+PiBTaWduZWQtb2ZmLWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1kLmNvbT4NCj4+
DQo+PiBVbmZvcnR1bmF0ZWx5IEknbSBzZWVpbmcgYSBidWlsZCBicmVha2FnZSBmb3IgdGhlIDMy
LWJpdCB4ODYgYnVpbGQuDQpDb3VsZCB5b3UgcGxlYXNlIGF0dGFjaCB0aGUgbGluayBvciBzdGVw
cz8NClRoZW4gSSBjYW4gcmVwcm9kdWNlIGl0LCBhbmQgdmFsaWRhdGUgaXQgbG9jYWxseSB3aXRo
IG5ldyBjaGFuZ2VzLg0KDQo+Pg0KPj4gUmVhc29uIGlzIHRoYXQgZHJpdmVycy94ZW4vYWNwaS5j
IGlzIGJlaW5nIGJ1aWx0IGZvciBEb20wIG9ubHksIHNvIGhhdmluZw0KPj4gQ09ORklHX1hFTl9B
Q1BJIGRlZmluZWQgaXMgbm90IGVub3VnaCBmb3IgZW5zdXJpbmcgdGhlIG5ldyBmdW5jdGlvbnMg
YXJlDQo+PiBwcmVzZW50Lg0KPj4NCj4+IEkgc3VnZ2VzdCB0byBhZGQgYSBuZXcgQ09ORklHIGl0
ZW0gQ09ORklHX1hFTl9ET00wX0FDUEkgbGlrZQ0KPj4NCj4+IGNvbmZpZyBYRU5fRE9NMF9BQ1BJ
DQo+PiDCoMKgwqDCoGRlZl9ib29sIHkNCj4+IMKgwqDCoMKgZGVwZW5kcyBvbiBYRU5fQUNQSSAm
JiBYRU5fRE9NMA0KPj4NCj4+IGFuZCB0aGVuIHJlcGxhY2UgYWxsIENPTkZJR19YRU5fQUNQSSBp
bnN0YW5jZXMgaW4geW91ciBwYXRjaCB3aXRoDQo+PiBDT05GSUdfWEVOX0RPTTBfQUNQSS4gVGhp
cyBpbmNsdWRlcyB0aGUgdXNlIGNhc2UgaW4NCj4+IHByaXZjbWRfaW9jdGxfcGNpZGV2X2dldF9n
c2koKS4NCj4gDQo+IEhvdyBhYm91dCBhZGQgc3R1YnMgZm9yIHhlbl9hY3BpX3JlZ2lzdGVyX2dl
dF9nc2lfZnVuYyBhbmQgeGVuX2FjcGlfZ2V0X2dzaV9mcm9tX3NiZGYgd2hlbiAiIUNPTkZJR19Y
RU5fRE9NMCIgaW4gYWNwaS5oLCBsaWtlIHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhhdCBmaWxl
IGRvLg0KPiANCj4+DQo+Pg0KPj4gSnVlcmdlbg0KPiANCg0KLS0gDQpCZXN0IHJlZ2FyZHMsDQpK
aXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 04:56:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 04:56:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817452.1231472 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szUAU-0003QA-8o; Sat, 12 Oct 2024 04:55:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817452.1231472; Sat, 12 Oct 2024 04: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 1szUAU-0003Q3-68; Sat, 12 Oct 2024 04:55:54 +0000
Received: by outflank-mailman (input) for mailman id 817452;
 Sat, 12 Oct 2024 04:55: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 1szUAS-0003Pd-BX; Sat, 12 Oct 2024 04:55: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 1szUAS-0008Uo-9S; Sat, 12 Oct 2024 04:55: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 1szUAR-0004hD-I6; Sat, 12 Oct 2024 04:55:51 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szUAR-0002co-Hk; Sat, 12 Oct 2024 04:55: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=+2q70t4GhR3VxwX/ZH/adUbwfxa01epgewZvHKkVlnM=; b=zHibog8c4L5H8tPLixMcfV0b1a
	GXWAUOk3l/59tpkLyIOA2zx3jwg4r7boUf3GwlC8unbj/VI7UImbwrLdnkVA5A7628+lYUO58WJuY
	AgtZBGm1L/xXtOIsX83pCrIs1tBxWT8V2yK1ZW1u/WHPJ0dWehHUg/xM4FwSPVyrElE8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188058-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188058: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=05adb38839ba656c7383a548b460d95c91e2febe
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 12 Oct 2024 04:55:51 +0000

flight 188058 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188058/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188048

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-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-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                05adb38839ba656c7383a548b460d95c91e2febe
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   25 days
Failing since        187731  2024-09-17 13:11:20 Z   24 days   41 attempts
Testing same since   188048  2024-10-10 23:59:54 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 8924 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 05:48:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 05:48:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817468.1231482 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szUzh-00041S-7D; Sat, 12 Oct 2024 05:48:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817468.1231482; Sat, 12 Oct 2024 05:48: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 1szUzh-00041L-2z; Sat, 12 Oct 2024 05:48:49 +0000
Received: by outflank-mailman (input) for mailman id 817468;
 Sat, 12 Oct 2024 05:48: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=rV4c=RI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1szUze-00041F-Pp
 for xen-devel@lists.xenproject.org; Sat, 12 Oct 2024 05:48:47 +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 a41ae2ff-885d-11ef-99a2-01e77a169b0f;
 Sat, 12 Oct 2024 07:48:44 +0200 (CEST)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-4311c575172so14727935e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 11 Oct 2024 22:48:44 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b79f868sm5422013f8f.82.2024.10.11.22.48.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 11 Oct 2024 22:48:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a41ae2ff-885d-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728712123; x=1729316923; darn=lists.xenproject.org;
        h=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=TxwoQs7N6uQ/M//Jm5Efv0wUidtk0k+fUFQv/iFuJRw=;
        b=FNMUQ8W3ba5LJ4t1tyXi7baGRslacKw0rQLn1fNcrZ+no6Dtl8Iq8iPw760gVi29JT
         CGYcSNgxS37nvleZJ5uOkHkHEpke6G2n8uf5RtHKzrVfJ3bzAnnh6bk40M25TRqwUESf
         6nrZUzbt+vgrFS1WZJB08XD5U1D+8536kUWzEmSFl9oT7UJPWXgEj8dDlQPX0WHxX57p
         LZDi6fbhNVtRwb1MXopkDLrwBoN+FYAdMogZLGwM2cQ26b9CdqEUooFx6bjoBWRlyrAc
         a2PUYJHFCtrrHe3CVDVWGGbmh8nF/yW2xNUpwfLfo9o5T5TE/tfJWmHMXd2F/+DXMKGu
         v4Xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728712123; x=1729316923;
        h=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=TxwoQs7N6uQ/M//Jm5Efv0wUidtk0k+fUFQv/iFuJRw=;
        b=o2d7BhPUsU+I5uqkdRT892T/+MfD3F0OBUyv/vLRZULWdHUBuHXtgVBdszFm5xIf5n
         7lgkm19q0zpYCzepFH01sTHkX5SnCT/iuGaPxNanbeuBVqJpzonqn92ltIDTWvgifdss
         sKUHVlRxRVmC4WJIkC+UxsZ8mhj89shdz6AV0dGYLlzGFtqtHHXTDUBrP9NK6Sn/yLub
         lZPl8E/FwNKn3hYyDIM0VncZuVPvDIqkCI2enU0Ae9zklBDSUhDajYrGkA6QAotKx5WJ
         3tltvOCT3D7QMTcagxs267hgw2azciFLqpm9STMmjZ3pJKZ381EK7ZKN50M4F7F7eLP8
         D7nQ==
X-Forwarded-Encrypted: i=1; AJvYcCVuOUiktr4CM7SZ5IzRd7v/9S7uheshXcoBwyKOZJR40MGwoq6Ro87UTb38HRGoZHDbRrp3ogOlxlE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwlcRng57X2jWICTlSf9OPzX2fYWdwIfqLx0zSqcCyCz6Keakxk
	vEyIwdA41XGWWSJ4B1oPU5H2/BtBEXokb6+lI4nhw1qgWuC5jDpor7r9/Oc8PHA=
X-Google-Smtp-Source: AGHT+IHk6oyqLwgfch7xB/TQOOkP9VLSSQvttDOf84amP8Bgpe2LSod4fi6Hkd84KteA+YI+8qgG1Q==
X-Received: by 2002:adf:b351:0:b0:37d:354e:946a with SMTP id ffacd0b85a97d-37d552d8d62mr3154508f8f.50.1728712123051;
        Fri, 11 Oct 2024 22:48:43 -0700 (PDT)
Message-ID: <075ce655-e871-4a3d-a550-7363bc4a165f@suse.com>
Date: Sat, 12 Oct 2024 07:48:40 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------bm4yyyaTP65vbls6PstCWobu"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------bm4yyyaTP65vbls6PstCWobu
Content-Type: multipart/mixed; boundary="------------y49lKhKZudGVrx7VZwvxal32";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <075ce655-e871-4a3d-a550-7363bc4a165f@suse.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
In-Reply-To: <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>

--------------y49lKhKZudGVrx7VZwvxal32
Content-Type: multipart/mixed; boundary="------------IC294Xw0CGU13KHQ2cT0eyHB"

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

T24gMTIuMTAuMjQgMDQ6MzYsIENoZW4sIEppcWlhbiB3cm90ZToNCj4gT24gMjAyNC8xMC8x
MiAxMDoyMiwgQ2hlbiwgSmlxaWFuIHdyb3RlOg0KPj4gT24gMjAyNC8xMC8xMSAyMDowNiwg
SnVlcmdlbiBHcm9zcyB3cm90ZToNCj4+PiBPbiAxMS4xMC4yNCAwNTo0MiwgSmlxaWFuIENo
ZW4gd3JvdGU6DQo+Pj4+IENvbW1pdCAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRk
IG5ldyBzeXNjYWxsIHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+PiBhZGRzIGEgd2VhayBy
ZXZlcnNlIGRlcGVuZGVuY3kgdG8gdGhlIGNvbmZpZyBYRU5fUFJJVkNNRCBkZWZpbml0aW9u
LCB0aGF0DQo+Pj4+IGRlcGVuZGVuY3kgY2F1c2VzIHhlbi1wcml2Y21kIGNhbid0IGJlIGxv
YWRlZCBvbiBkb21VLCBiZWNhdXNlIGRlcGVuZGVudA0KPj4+PiB4ZW4tcGNpYmFjayBpc24n
dCBhbHdheXMgYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseSBvbiBkb21VLg0KPj4+Pg0KPj4+PiBU
byBzb2x2ZSBhYm92ZSBwcm9ibGVtLCByZW1vdmUgdGhhdCBkZXBlbmRlbmN5LCBhbmQgZG8g
bm90IGNhbGwNCj4+Pj4gcGNpc3R1Yl9nZXRfZ3NpX2Zyb21fc2JkZigpIGRpcmVjdGx5LCBp
bnN0ZWFkIGFkZCBhIGhvb2sgaW4NCj4+Pj4gZHJpdmVycy94ZW4vYXBjaS5jLCB4ZW4tcGNp
YmFjayByZWdpc3RlciB0aGUgcmVhbCBjYWxsIGZ1bmN0aW9uLCB0aGVuIGluDQo+Pj4+IHBy
aXZjbWRfaW9jdGxfcGNpZGV2X2dldF9nc2kgY2FsbCB0aGF0IGhvb2suDQo+Pj4+DQo+Pj4+
IEZpeGVzOiAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5ldyBzeXNjYWxsIHRv
IGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+PiBSZXBvcnRlZC1ieTogTWFyZWsgTWFyY3p5a293
c2tpLUfDs3JlY2tpIDxtYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tPg0KPj4+PiBT
aWduZWQtb2ZmLWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1kLmNvbT4NCj4+Pg0K
Pj4+IFVuZm9ydHVuYXRlbHkgSSdtIHNlZWluZyBhIGJ1aWxkIGJyZWFrYWdlIGZvciB0aGUg
MzItYml0IHg4NiBidWlsZC4NCj4gQ291bGQgeW91IHBsZWFzZSBhdHRhY2ggdGhlIGxpbmsg
b3Igc3RlcHM/DQo+IFRoZW4gSSBjYW4gcmVwcm9kdWNlIGl0LCBhbmQgdmFsaWRhdGUgaXQg
bG9jYWxseSB3aXRoIG5ldyBjaGFuZ2VzLg0KDQpJJ20gdXNpbmcgdGhlIGF0dGFjaGVkIGtl
cm5lbCBjb25maWcuDQoNCg0KSnVlcmdlbg0KDQo=
--------------IC294Xw0CGU13KHQ2cT0eyHB
Content-Type: application/x-config; name=".config"
Content-Disposition: attachment; filename=".config"
Content-Transfer-Encoding: base64

IwojIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElULgojIExpbnV4
L3g4NiA2LjEyLjAtcmMxIEtlcm5lbCBDb25maWd1cmF0aW9uCiMKQ09ORklHX0NDX1ZFUlNJ
T05fVEVYVD0iZ2NjIChTVVNFIExpbnV4KSA3LjUuMCIKQ09ORklHX0NDX0lTX0dDQz15CkNP
TkZJR19HQ0NfVkVSU0lPTj03MDUwMApDT05GSUdfQ0xBTkdfVkVSU0lPTj0wCkNPTkZJR19B
U19JU19HTlU9eQpDT05GSUdfQVNfVkVSU0lPTj0yNDMwMQpDT05GSUdfTERfSVNfQkZEPXkK
Q09ORklHX0xEX1ZFUlNJT049MjQzMDEKQ09ORklHX0xMRF9WRVJTSU9OPTAKQ09ORklHX1JV
U1RDX1ZFUlNJT049MApDT05GSUdfQ0NfQ0FOX0xJTks9eQpDT05GSUdfR0NDX0FTTV9HT1RP
X09VVFBVVF9CUk9LRU49eQpDT05GSUdfQ0NfSEFTX0FTTV9JTkxJTkU9eQpDT05GSUdfQ0Nf
SEFTX05PX1BST0ZJTEVfRk5fQVRUUj15CkNPTkZJR19QQUhPTEVfVkVSU0lPTj0xMjUKQ09O
RklHX0lSUV9XT1JLPXkKQ09ORklHX0JVSUxEVElNRV9UQUJMRV9TT1JUPXkKQ09ORklHX1RI
UkVBRF9JTkZPX0lOX1RBU0s9eQoKIwojIEdlbmVyYWwgc2V0dXAKIwpDT05GSUdfSU5JVF9F
TlZfQVJHX0xJTUlUPTMyCiMgQ09ORklHX0NPTVBJTEVfVEVTVCBpcyBub3Qgc2V0CiMgQ09O
RklHX1dFUlJPUiBpcyBub3Qgc2V0CkNPTkZJR19MT0NBTFZFUlNJT049Ii1wdiIKIyBDT05G
SUdfTE9DQUxWRVJTSU9OX0FVVE8gaXMgbm90IHNldApDT05GSUdfQlVJTERfU0FMVD0iIgpD
T05GSUdfSEFWRV9LRVJORUxfR1pJUD15CkNPTkZJR19IQVZFX0tFUk5FTF9CWklQMj15CkNP
TkZJR19IQVZFX0tFUk5FTF9MWk1BPXkKQ09ORklHX0hBVkVfS0VSTkVMX1haPXkKQ09ORklH
X0hBVkVfS0VSTkVMX0xaTz15CkNPTkZJR19IQVZFX0tFUk5FTF9MWjQ9eQpDT05GSUdfSEFW
RV9LRVJORUxfWlNURD15CiMgQ09ORklHX0tFUk5FTF9HWklQIGlzIG5vdCBzZXQKIyBDT05G
SUdfS0VSTkVMX0JaSVAyIGlzIG5vdCBzZXQKIyBDT05GSUdfS0VSTkVMX0xaTUEgaXMgbm90
IHNldApDT05GSUdfS0VSTkVMX1haPXkKIyBDT05GSUdfS0VSTkVMX0xaTyBpcyBub3Qgc2V0
CiMgQ09ORklHX0tFUk5FTF9MWjQgaXMgbm90IHNldAojIENPTkZJR19LRVJORUxfWlNURCBp
cyBub3Qgc2V0CkNPTkZJR19ERUZBVUxUX0lOSVQ9IiIKQ09ORklHX0RFRkFVTFRfSE9TVE5B
TUU9Iihub25lKSIKQ09ORklHX1NZU1ZJUEM9eQpDT05GSUdfU1lTVklQQ19TWVNDVEw9eQpD
T05GSUdfUE9TSVhfTVFVRVVFPXkKQ09ORklHX1BPU0lYX01RVUVVRV9TWVNDVEw9eQojIENP
TkZJR19XQVRDSF9RVUVVRSBpcyBub3Qgc2V0CkNPTkZJR19DUk9TU19NRU1PUllfQVRUQUNI
PXkKQ09ORklHX1VTRUxJQj15CkNPTkZJR19BVURJVD15CkNPTkZJR19IQVZFX0FSQ0hfQVVE
SVRTWVNDQUxMPXkKQ09ORklHX0FVRElUU1lTQ0FMTD15CgojCiMgSVJRIHN1YnN5c3RlbQoj
CkNPTkZJR19HRU5FUklDX0lSUV9QUk9CRT15CkNPTkZJR19HRU5FUklDX0lSUV9TSE9XPXkK
Q09ORklHX0dFTkVSSUNfSVJRX0VGRkVDVElWRV9BRkZfTUFTSz15CkNPTkZJR19HRU5FUklD
X1BFTkRJTkdfSVJRPXkKQ09ORklHX0dFTkVSSUNfSVJRX01JR1JBVElPTj15CkNPTkZJR19H
RU5FUklDX0lSUV9JTkpFQ1RJT049eQpDT05GSUdfSEFSRElSUVNfU1dfUkVTRU5EPXkKQ09O
RklHX0lSUV9ET01BSU49eQpDT05GSUdfSVJRX0RPTUFJTl9ISUVSQVJDSFk9eQpDT05GSUdf
R0VORVJJQ19NU0lfSVJRPXkKQ09ORklHX0lSUV9NU0lfSU9NTVU9eQpDT05GSUdfR0VORVJJ
Q19JUlFfTUFUUklYX0FMTE9DQVRPUj15CkNPTkZJR19HRU5FUklDX0lSUV9SRVNFUlZBVElP
Tl9NT0RFPXkKQ09ORklHX0lSUV9GT1JDRURfVEhSRUFESU5HPXkKQ09ORklHX1NQQVJTRV9J
UlE9eQojIENPTkZJR19HRU5FUklDX0lSUV9ERUJVR0ZTIGlzIG5vdCBzZXQKIyBlbmQgb2Yg
SVJRIHN1YnN5c3RlbQoKQ09ORklHX0NMT0NLU09VUkNFX1dBVENIRE9HPXkKQ09ORklHX0FS
Q0hfQ0xPQ0tTT1VSQ0VfSU5JVD15CkNPTkZJR19DTE9DS1NPVVJDRV9WQUxJREFURV9MQVNU
X0NZQ0xFPXkKQ09ORklHX0dFTkVSSUNfVElNRV9WU1lTQ0FMTD15CkNPTkZJR19HRU5FUklD
X0NMT0NLRVZFTlRTPXkKQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFNfQlJPQURDQVNUPXkK
Q09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVOVFNfQlJPQURDQVNUX0lETEU9eQpDT05GSUdfR0VO
RVJJQ19DTE9DS0VWRU5UU19NSU5fQURKVVNUPXkKQ09ORklHX0dFTkVSSUNfQ01PU19VUERB
VEU9eQpDT05GSUdfSEFWRV9QT1NJWF9DUFVfVElNRVJTX1RBU0tfV09SSz15CkNPTkZJR19Q
T1NJWF9DUFVfVElNRVJTX1RBU0tfV09SSz15CkNPTkZJR19DT05URVhUX1RSQUNLSU5HPXkK
Q09ORklHX0NPTlRFWFRfVFJBQ0tJTkdfSURMRT15CgojCiMgVGltZXJzIHN1YnN5c3RlbQoj
CkNPTkZJR19USUNLX09ORVNIT1Q9eQpDT05GSUdfTk9fSFpfQ09NTU9OPXkKIyBDT05GSUdf
SFpfUEVSSU9ESUMgaXMgbm90IHNldApDT05GSUdfTk9fSFpfSURMRT15CiMgQ09ORklHX05P
X0haIGlzIG5vdCBzZXQKQ09ORklHX0hJR0hfUkVTX1RJTUVSUz15CkNPTkZJR19DTE9DS1NP
VVJDRV9XQVRDSERPR19NQVhfU0tFV19VUz0xMDAKIyBlbmQgb2YgVGltZXJzIHN1YnN5c3Rl
bQoKQ09ORklHX0JQRj15CkNPTkZJR19IQVZFX0VCUEZfSklUPXkKCiMKIyBCUEYgc3Vic3lz
dGVtCiMKIyBDT05GSUdfQlBGX1NZU0NBTEwgaXMgbm90IHNldAojIENPTkZJR19CUEZfSklU
IGlzIG5vdCBzZXQKIyBlbmQgb2YgQlBGIHN1YnN5c3RlbQoKQ09ORklHX1BSRUVNUFRfQlVJ
TEQ9eQojIENPTkZJR19QUkVFTVBUX05PTkUgaXMgbm90IHNldAojIENPTkZJR19QUkVFTVBU
X1ZPTFVOVEFSWSBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBUPXkKIyBDT05GSUdfUFJFRU1Q
VF9SVCBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBUX0NPVU5UPXkKQ09ORklHX1BSRUVNUFRJ
T049eQpDT05GSUdfUFJFRU1QVF9EWU5BTUlDPXkKIyBDT05GSUdfU0NIRURfQ09SRSBpcyBu
b3Qgc2V0CgojCiMgQ1BVL1Rhc2sgdGltZSBhbmQgc3RhdHMgYWNjb3VudGluZwojCkNPTkZJ
R19USUNLX0NQVV9BQ0NPVU5USU5HPXkKIyBDT05GSUdfSVJRX1RJTUVfQUNDT1VOVElORyBp
cyBub3Qgc2V0CkNPTkZJR19IQVZFX1NDSEVEX0FWR19JUlE9eQpDT05GSUdfQlNEX1BST0NF
U1NfQUNDVD15CkNPTkZJR19CU0RfUFJPQ0VTU19BQ0NUX1YzPXkKQ09ORklHX1RBU0tTVEFU
Uz15CkNPTkZJR19UQVNLX0RFTEFZX0FDQ1Q9eQpDT05GSUdfVEFTS19YQUNDVD15CkNPTkZJ
R19UQVNLX0lPX0FDQ09VTlRJTkc9eQojIENPTkZJR19QU0kgaXMgbm90IHNldAojIGVuZCBv
ZiBDUFUvVGFzayB0aW1lIGFuZCBzdGF0cyBhY2NvdW50aW5nCgpDT05GSUdfQ1BVX0lTT0xB
VElPTj15CgojCiMgUkNVIFN1YnN5c3RlbQojCkNPTkZJR19UUkVFX1JDVT15CkNPTkZJR19Q
UkVFTVBUX1JDVT15CiMgQ09ORklHX1JDVV9FWFBFUlQgaXMgbm90IHNldApDT05GSUdfVFJF
RV9TUkNVPXkKQ09ORklHX1RBU0tTX1JDVV9HRU5FUklDPXkKQ09ORklHX05FRURfVEFTS1Nf
UkNVPXkKQ09ORklHX1RBU0tTX1JDVT15CkNPTkZJR19SQ1VfU1RBTExfQ09NTU9OPXkKQ09O
RklHX1JDVV9ORUVEX1NFR0NCTElTVD15CiMgZW5kIG9mIFJDVSBTdWJzeXN0ZW0KCiMgQ09O
RklHX0lLQ09ORklHIGlzIG5vdCBzZXQKIyBDT05GSUdfSUtIRUFERVJTIGlzIG5vdCBzZXQK
Q09ORklHX0xPR19CVUZfU0hJRlQ9MTcKQ09ORklHX0xPR19DUFVfTUFYX0JVRl9TSElGVD0x
MgojIENPTkZJR19QUklOVEtfSU5ERVggaXMgbm90IHNldApDT05GSUdfSEFWRV9VTlNUQUJM
RV9TQ0hFRF9DTE9DSz15CgojCiMgU2NoZWR1bGVyIGZlYXR1cmVzCiMKIyBDT05GSUdfVUNM
QU1QX1RBU0sgaXMgbm90IHNldAojIGVuZCBvZiBTY2hlZHVsZXIgZmVhdHVyZXMKCkNPTkZJ
R19BUkNIX1dBTlRfQkFUQ0hFRF9VTk1BUF9UTEJfRkxVU0g9eQpDT05GSUdfQ0NfSU1QTElD
SVRfRkFMTFRIUk9VR0g9Ii1XaW1wbGljaXQtZmFsbHRocm91Z2g9NSIKQ09ORklHX0dDQzEw
X05PX0FSUkFZX0JPVU5EUz15CkNPTkZJR19HQ0NfTk9fU1RSSU5HT1BfT1ZFUkZMT1c9eQpD
T05GSUdfQ0NfTk9fU1RSSU5HT1BfT1ZFUkZMT1c9eQpDT05GSUdfU0xBQl9PQkpfRVhUPXkK
Q09ORklHX0NHUk9VUFM9eQpDT05GSUdfUEFHRV9DT1VOVEVSPXkKIyBDT05GSUdfQ0dST1VQ
X0ZBVk9SX0RZTk1PRFMgaXMgbm90IHNldApDT05GSUdfTUVNQ0c9eQojIENPTkZJR19NRU1D
R19WMSBpcyBub3Qgc2V0CkNPTkZJR19CTEtfQ0dST1VQPXkKQ09ORklHX0NHUk9VUF9XUklU
RUJBQ0s9eQpDT05GSUdfQ0dST1VQX1NDSEVEPXkKQ09ORklHX0dST1VQX1NDSEVEX1dFSUdI
VD15CkNPTkZJR19GQUlSX0dST1VQX1NDSEVEPXkKIyBDT05GSUdfQ0ZTX0JBTkRXSURUSCBp
cyBub3Qgc2V0CiMgQ09ORklHX1JUX0dST1VQX1NDSEVEIGlzIG5vdCBzZXQKQ09ORklHX1ND
SEVEX01NX0NJRD15CiMgQ09ORklHX0NHUk9VUF9QSURTIGlzIG5vdCBzZXQKIyBDT05GSUdf
Q0dST1VQX1JETUEgaXMgbm90IHNldApDT05GSUdfQ0dST1VQX0ZSRUVaRVI9eQojIENPTkZJ
R19DR1JPVVBfSFVHRVRMQiBpcyBub3Qgc2V0CkNPTkZJR19DUFVTRVRTPXkKIyBDT05GSUdf
Q1BVU0VUU19WMSBpcyBub3Qgc2V0CkNPTkZJR19QUk9DX1BJRF9DUFVTRVQ9eQpDT05GSUdf
Q0dST1VQX0RFVklDRT15CkNPTkZJR19DR1JPVVBfQ1BVQUNDVD15CkNPTkZJR19DR1JPVVBf
UEVSRj15CiMgQ09ORklHX0NHUk9VUF9NSVNDIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0dST1VQ
X0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1NPQ0tfQ0dST1VQX0RBVEE9eQpDT05GSUdfTkFN
RVNQQUNFUz15CkNPTkZJR19VVFNfTlM9eQpDT05GSUdfVElNRV9OUz15CkNPTkZJR19JUENf
TlM9eQpDT05GSUdfVVNFUl9OUz15CkNPTkZJR19QSURfTlM9eQpDT05GSUdfTkVUX05TPXkK
Q09ORklHX0NIRUNLUE9JTlRfUkVTVE9SRT15CkNPTkZJR19TQ0hFRF9BVVRPR1JPVVA9eQpD
T05GSUdfUkVMQVk9eQpDT05GSUdfQkxLX0RFVl9JTklUUkQ9eQpDT05GSUdfSU5JVFJBTUZT
X1NPVVJDRT0iIgpDT05GSUdfUkRfR1pJUD15CkNPTkZJR19SRF9CWklQMj15CkNPTkZJR19S
RF9MWk1BPXkKQ09ORklHX1JEX1haPXkKQ09ORklHX1JEX0xaTz15CkNPTkZJR19SRF9MWjQ9
eQpDT05GSUdfUkRfWlNURD15CiMgQ09ORklHX0JPT1RfQ09ORklHIGlzIG5vdCBzZXQKQ09O
RklHX0lOSVRSQU1GU19QUkVTRVJWRV9NVElNRT15CkNPTkZJR19DQ19PUFRJTUlaRV9GT1Jf
UEVSRk9STUFOQ0U9eQojIENPTkZJR19DQ19PUFRJTUlaRV9GT1JfU0laRSBpcyBub3Qgc2V0
CkNPTkZJR19MRF9PUlBIQU5fV0FSTj15CkNPTkZJR19MRF9PUlBIQU5fV0FSTl9MRVZFTD0i
d2FybiIKQ09ORklHX1NZU0NUTD15CkNPTkZJR19IQVZFX1VJRDE2PXkKQ09ORklHX1NZU0NU
TF9FWENFUFRJT05fVFJBQ0U9eQpDT05GSUdfSEFWRV9QQ1NQS1JfUExBVEZPUk09eQpDT05G
SUdfRVhQRVJUPXkKQ09ORklHX1VJRDE2PXkKQ09ORklHX01VTFRJVVNFUj15CkNPTkZJR19T
R0VUTUFTS19TWVNDQUxMPXkKQ09ORklHX1NZU0ZTX1NZU0NBTEw9eQpDT05GSUdfRkhBTkRM
RT15CkNPTkZJR19QT1NJWF9USU1FUlM9eQpDT05GSUdfUFJJTlRLPXkKQ09ORklHX0JVRz15
CkNPTkZJR19FTEZfQ09SRT15CkNPTkZJR19QQ1NQS1JfUExBVEZPUk09eQojIENPTkZJR19C
QVNFX1NNQUxMIGlzIG5vdCBzZXQKQ09ORklHX0ZVVEVYPXkKQ09ORklHX0ZVVEVYX1BJPXkK
Q09ORklHX0VQT0xMPXkKQ09ORklHX1NJR05BTEZEPXkKQ09ORklHX1RJTUVSRkQ9eQpDT05G
SUdfRVZFTlRGRD15CkNPTkZJR19TSE1FTT15CkNPTkZJR19BSU89eQojIENPTkZJR19JT19V
UklORyBpcyBub3Qgc2V0CkNPTkZJR19BRFZJU0VfU1lTQ0FMTFM9eQpDT05GSUdfTUVNQkFS
UklFUj15CkNPTkZJR19LQ01QPXkKQ09ORklHX1JTRVE9eQojIENPTkZJR19ERUJVR19SU0VR
IGlzIG5vdCBzZXQKQ09ORklHX0NBQ0hFU1RBVF9TWVNDQUxMPXkKIyBDT05GSUdfUEMxMDQg
aXMgbm90IHNldApDT05GSUdfS0FMTFNZTVM9eQojIENPTkZJR19LQUxMU1lNU19TRUxGVEVT
VCBpcyBub3Qgc2V0CiMgQ09ORklHX0tBTExTWU1TX0FMTCBpcyBub3Qgc2V0CkNPTkZJR19B
UkNIX0hBU19NRU1CQVJSSUVSX1NZTkNfQ09SRT15CkNPTkZJR19IQVZFX1BFUkZfRVZFTlRT
PXkKQ09ORklHX0dVRVNUX1BFUkZfRVZFTlRTPXkKCiMKIyBLZXJuZWwgUGVyZm9ybWFuY2Ug
RXZlbnRzIEFuZCBDb3VudGVycwojCkNPTkZJR19QRVJGX0VWRU5UUz15CiMgQ09ORklHX0RF
QlVHX1BFUkZfVVNFX1ZNQUxMT0MgaXMgbm90IHNldAojIGVuZCBvZiBLZXJuZWwgUGVyZm9y
bWFuY2UgRXZlbnRzIEFuZCBDb3VudGVycwoKQ09ORklHX1BST0ZJTElORz15CkNPTkZJR19U
UkFDRVBPSU5UUz15CgojCiMgS2V4ZWMgYW5kIGNyYXNoIGZlYXR1cmVzCiMKQ09ORklHX0NS
QVNIX1JFU0VSVkU9eQpDT05GSUdfVk1DT1JFX0lORk89eQpDT05GSUdfS0VYRUNfQ09SRT15
CkNPTkZJR19LRVhFQz15CiMgQ09ORklHX0tFWEVDX0pVTVAgaXMgbm90IHNldApDT05GSUdf
Q1JBU0hfRFVNUD15CkNPTkZJR19DUkFTSF9IT1RQTFVHPXkKQ09ORklHX0NSQVNIX01BWF9N
RU1PUllfUkFOR0VTPTgxOTIKIyBlbmQgb2YgS2V4ZWMgYW5kIGNyYXNoIGZlYXR1cmVzCiMg
ZW5kIG9mIEdlbmVyYWwgc2V0dXAKCiMgQ09ORklHXzY0QklUIGlzIG5vdCBzZXQKQ09ORklH
X1g4Nl8zMj15CkNPTkZJR19YODY9eQpDT05GSUdfSU5TVFJVQ1RJT05fREVDT0RFUj15CkNP
TkZJR19PVVRQVVRfRk9STUFUPSJlbGYzMi1pMzg2IgpDT05GSUdfTE9DS0RFUF9TVVBQT1JU
PXkKQ09ORklHX1NUQUNLVFJBQ0VfU1VQUE9SVD15CkNPTkZJR19NTVU9eQpDT05GSUdfQVJD
SF9NTUFQX1JORF9CSVRTX01JTj04CkNPTkZJR19BUkNIX01NQVBfUk5EX0JJVFNfTUFYPTE2
CkNPTkZJR19BUkNIX01NQVBfUk5EX0NPTVBBVF9CSVRTX01JTj04CkNPTkZJR19BUkNIX01N
QVBfUk5EX0NPTVBBVF9CSVRTX01BWD0xNgpDT05GSUdfR0VORVJJQ19JU0FfRE1BPXkKQ09O
RklHX0dFTkVSSUNfQlVHPXkKQ09ORklHX0FSQ0hfTUFZX0hBVkVfUENfRkRDPXkKQ09ORklH
X0dFTkVSSUNfQ0FMSUJSQVRFX0RFTEFZPXkKQ09ORklHX0FSQ0hfSEFTX0NQVV9SRUxBWD15
CkNPTkZJR19BUkNIX0hJQkVSTkFUSU9OX1BPU1NJQkxFPXkKQ09ORklHX0FSQ0hfU1VTUEVO
RF9QT1NTSUJMRT15CkNPTkZJR19IQVZFX0lOVEVMX1RYVD15CkNPTkZJR19BUkNIX1NVUFBP
UlRTX1VQUk9CRVM9eQpDT05GSUdfRklYX0VBUkxZQ09OX01FTT15CkNPTkZJR19QR1RBQkxF
X0xFVkVMUz0zCgojCiMgUHJvY2Vzc29yIHR5cGUgYW5kIGZlYXR1cmVzCiMKQ09ORklHX1NN
UD15CkNPTkZJR19YODZfTVBQQVJTRT15CiMgQ09ORklHX1g4Nl9DUFVfUkVTQ1RSTCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1g4Nl9CSUdTTVAgaXMgbm90IHNldAojIENPTkZJR19YODZfRVhU
RU5ERURfUExBVEZPUk0gaXMgbm90IHNldApDT05GSUdfWDg2X0lOVEVMX0xQU1M9eQojIENP
TkZJR19YODZfQU1EX1BMQVRGT1JNX0RFVklDRSBpcyBub3Qgc2V0CkNPTkZJR19JT1NGX01C
ST15CiMgQ09ORklHX0lPU0ZfTUJJX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfWDg2XzMy
X0lSSVMgaXMgbm90IHNldApDT05GSUdfU0NIRURfT01JVF9GUkFNRV9QT0lOVEVSPXkKQ09O
RklHX0hZUEVSVklTT1JfR1VFU1Q9eQpDT05GSUdfUEFSQVZJUlQ9eQojIENPTkZJR19QQVJB
VklSVF9ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19QQVJBVklSVF9TUElOTE9DS1M9eQpDT05G
SUdfWDg2X0hWX0NBTExCQUNLX1ZFQ1RPUj15CkNPTkZJR19YRU49eQpDT05GSUdfWEVOX1BW
SFZNPXkKQ09ORklHX1hFTl9QVkhWTV9TTVA9eQpDT05GSUdfWEVOX1BWSFZNX0dVRVNUPXkK
Q09ORklHX1hFTl9TQVZFX1JFU1RPUkU9eQpDT05GSUdfWEVOX0RFQlVHX0ZTPXkKIyBDT05G
SUdfWEVOX1BWSCBpcyBub3Qgc2V0CkNPTkZJR19LVk1fR1VFU1Q9eQpDT05GSUdfQVJDSF9D
UFVJRExFX0hBTFRQT0xMPXkKIyBDT05GSUdfUFZIIGlzIG5vdCBzZXQKQ09ORklHX1BBUkFW
SVJUX1RJTUVfQUNDT1VOVElORz15CkNPTkZJR19QQVJBVklSVF9DTE9DSz15CiMgQ09ORklH
X000ODZTWCBpcyBub3Qgc2V0CiMgQ09ORklHX000ODYgaXMgbm90IHNldAojIENPTkZJR19N
NTg2IGlzIG5vdCBzZXQKIyBDT05GSUdfTTU4NlRTQyBpcyBub3Qgc2V0CiMgQ09ORklHX001
ODZNTVggaXMgbm90IHNldAojIENPTkZJR19NNjg2IGlzIG5vdCBzZXQKIyBDT05GSUdfTVBF
TlRJVU1JSSBpcyBub3Qgc2V0CiMgQ09ORklHX01QRU5USVVNSUlJIGlzIG5vdCBzZXQKIyBD
T05GSUdfTVBFTlRJVU1NIGlzIG5vdCBzZXQKIyBDT05GSUdfTVBFTlRJVU00IGlzIG5vdCBz
ZXQKIyBDT05GSUdfTUs2IGlzIG5vdCBzZXQKIyBDT05GSUdfTUs3IGlzIG5vdCBzZXQKIyBD
T05GSUdfTUs4IGlzIG5vdCBzZXQKIyBDT05GSUdfTUNSVVNPRSBpcyBub3Qgc2V0CiMgQ09O
RklHX01FRkZJQ0VPTiBpcyBub3Qgc2V0CiMgQ09ORklHX01XSU5DSElQQzYgaXMgbm90IHNl
dAojIENPTkZJR19NV0lOQ0hJUDNEIGlzIG5vdCBzZXQKIyBDT05GSUdfTUVMQU4gaXMgbm90
IHNldAojIENPTkZJR19NR0VPREVHWDEgaXMgbm90IHNldAojIENPTkZJR19NR0VPREVfTFgg
aXMgbm90IHNldAojIENPTkZJR19NQ1lSSVhJSUkgaXMgbm90IHNldAojIENPTkZJR19NVklB
QzNfMiBpcyBub3Qgc2V0CiMgQ09ORklHX01WSUFDNyBpcyBub3Qgc2V0CkNPTkZJR19NQ09S
RTI9eQojIENPTkZJR19NQVRPTSBpcyBub3Qgc2V0CkNPTkZJR19YODZfR0VORVJJQz15CkNP
TkZJR19YODZfSU5URVJOT0RFX0NBQ0hFX1NISUZUPTYKQ09ORklHX1g4Nl9MMV9DQUNIRV9T
SElGVD02CkNPTkZJR19YODZfSU5URUxfVVNFUkNPUFk9eQpDT05GSUdfWDg2X1VTRV9QUFJP
X0NIRUNLU1VNPXkKQ09ORklHX1g4Nl9UU0M9eQpDT05GSUdfWDg2X0hBVkVfUEFFPXkKQ09O
RklHX1g4Nl9DTVBYQ0hHNjQ9eQpDT05GSUdfWDg2X0NNT1Y9eQpDT05GSUdfWDg2X01JTklN
VU1fQ1BVX0ZBTUlMWT02CkNPTkZJR19YODZfREVCVUdDVExNU1I9eQpDT05GSUdfSUEzMl9G
RUFUX0NUTD15CkNPTkZJR19YODZfVk1YX0ZFQVRVUkVfTkFNRVM9eQojIENPTkZJR19QUk9D
RVNTT1JfU0VMRUNUIGlzIG5vdCBzZXQKQ09ORklHX0NQVV9TVVBfSU5URUw9eQpDT05GSUdf
Q1BVX1NVUF9DWVJJWF8zMj15CkNPTkZJR19DUFVfU1VQX0FNRD15CkNPTkZJR19DUFVfU1VQ
X0hZR09OPXkKQ09ORklHX0NQVV9TVVBfQ0VOVEFVUj15CkNPTkZJR19DUFVfU1VQX1RSQU5T
TUVUQV8zMj15CkNPTkZJR19DUFVfU1VQX1VNQ18zMj15CkNPTkZJR19DUFVfU1VQX1pIQU9Y
SU49eQpDT05GSUdfQ1BVX1NVUF9WT1JURVhfMzI9eQojIENPTkZJR19IUEVUX1RJTUVSIGlz
IG5vdCBzZXQKQ09ORklHX0RNST15CkNPTkZJR19CT09UX1ZFU0FfU1VQUE9SVD15CkNPTkZJ
R19OUl9DUFVTX1JBTkdFX0JFR0lOPTIKQ09ORklHX05SX0NQVVNfUkFOR0VfRU5EPTgKQ09O
RklHX05SX0NQVVNfREVGQVVMVD04CkNPTkZJR19OUl9DUFVTPTgKIyBDT05GSUdfU0NIRURf
Q0xVU1RFUiBpcyBub3Qgc2V0CkNPTkZJR19TQ0hFRF9TTVQ9eQpDT05GSUdfU0NIRURfTUM9
eQpDT05GSUdfU0NIRURfTUNfUFJJTz15CkNPTkZJR19YODZfTE9DQUxfQVBJQz15CkNPTkZJ
R19YODZfSU9fQVBJQz15CkNPTkZJR19YODZfUkVST1VURV9GT1JfQlJPS0VOX0JPT1RfSVJR
Uz15CkNPTkZJR19YODZfTUNFPXkKIyBDT05GSUdfWDg2X01DRUxPR19MRUdBQ1kgaXMgbm90
IHNldApDT05GSUdfWDg2X01DRV9JTlRFTD15CkNPTkZJR19YODZfTUNFX0FNRD15CiMgQ09O
RklHX1g4Nl9BTkNJRU5UX01DRSBpcyBub3Qgc2V0CkNPTkZJR19YODZfTUNFX1RIUkVTSE9M
RD15CiMgQ09ORklHX1g4Nl9NQ0VfSU5KRUNUIGlzIG5vdCBzZXQKCiMKIyBQZXJmb3JtYW5j
ZSBtb25pdG9yaW5nCiMKQ09ORklHX1BFUkZfRVZFTlRTX0lOVEVMX1VOQ09SRT15CkNPTkZJ
R19QRVJGX0VWRU5UU19JTlRFTF9SQVBMPXkKQ09ORklHX1BFUkZfRVZFTlRTX0lOVEVMX0NT
VEFURT15CiMgQ09ORklHX1BFUkZfRVZFTlRTX0FNRF9QT1dFUiBpcyBub3Qgc2V0CiMgQ09O
RklHX1BFUkZfRVZFTlRTX0FNRF9VTkNPUkUgaXMgbm90IHNldAojIENPTkZJR19QRVJGX0VW
RU5UU19BTURfQlJTIGlzIG5vdCBzZXQKIyBlbmQgb2YgUGVyZm9ybWFuY2UgbW9uaXRvcmlu
ZwoKIyBDT05GSUdfWDg2X0xFR0FDWV9WTTg2IGlzIG5vdCBzZXQKQ09ORklHX1g4Nl8xNkJJ
VD15CkNPTkZJR19YODZfRVNQRklYMzI9eQpDT05GSUdfWDg2X0lPUExfSU9QRVJNPXkKIyBD
T05GSUdfVE9TSElCQSBpcyBub3Qgc2V0CiMgQ09ORklHX1g4Nl9SRUJPT1RGSVhVUFMgaXMg
bm90IHNldApDT05GSUdfTUlDUk9DT0RFPXkKQ09ORklHX01JQ1JPQ09ERV9JTklUUkQzMj15
CiMgQ09ORklHX01JQ1JPQ09ERV9MQVRFX0xPQURJTkcgaXMgbm90IHNldApDT05GSUdfWDg2
X01TUj1tCkNPTkZJR19YODZfQ1BVSUQ9bQojIENPTkZJR19OT0hJR0hNRU0gaXMgbm90IHNl
dAojIENPTkZJR19ISUdITUVNNEcgaXMgbm90IHNldApDT05GSUdfSElHSE1FTTY0Rz15CkNP
TkZJR19WTVNQTElUXzNHPXkKIyBDT05GSUdfVk1TUExJVF8yRyBpcyBub3Qgc2V0CiMgQ09O
RklHX1ZNU1BMSVRfMUcgaXMgbm90IHNldApDT05GSUdfUEFHRV9PRkZTRVQ9MHhDMDAwMDAw
MApDT05GSUdfSElHSE1FTT15CkNPTkZJR19YODZfUEFFPXkKIyBDT05GSUdfWDg2X0NQQV9T
VEFUSVNUSUNTIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQpDT05G
SUdfQVJDSF9TUEFSU0VNRU1fRU5BQkxFPXkKQ09ORklHX0FSQ0hfU0VMRUNUX01FTU9SWV9N
T0RFTD15CkNPTkZJR19JTExFR0FMX1BPSU5URVJfVkFMVUU9MAojIENPTkZJR19YODZfUE1F
TV9MRUdBQ1kgaXMgbm90IHNldAojIENPTkZJR19ISUdIUFRFIGlzIG5vdCBzZXQKIyBDT05G
SUdfWDg2X0NIRUNLX0JJT1NfQ09SUlVQVElPTiBpcyBub3Qgc2V0CkNPTkZJR19NVFJSPXkK
Q09ORklHX01UUlJfU0FOSVRJWkVSPXkKQ09ORklHX01UUlJfU0FOSVRJWkVSX0VOQUJMRV9E
RUZBVUxUPTAKQ09ORklHX01UUlJfU0FOSVRJWkVSX1NQQVJFX1JFR19OUl9ERUZBVUxUPTEK
Q09ORklHX1g4Nl9QQVQ9eQpDT05GSUdfWDg2X1VNSVA9eQpDT05GSUdfQVJDSF9QS0VZX0JJ
VFM9NApDT05GSUdfWDg2X0lOVEVMX1RTWF9NT0RFX09GRj15CiMgQ09ORklHX1g4Nl9JTlRF
TF9UU1hfTU9ERV9PTiBpcyBub3Qgc2V0CiMgQ09ORklHX1g4Nl9JTlRFTF9UU1hfTU9ERV9B
VVRPIGlzIG5vdCBzZXQKQ09ORklHX0VGST15CkNPTkZJR19FRklfU1RVQj15CkNPTkZJR19F
RklfSEFORE9WRVJfUFJPVE9DT0w9eQpDT05GSUdfRUZJX1JVTlRJTUVfTUFQPXkKIyBDT05G
SUdfSFpfMTAwIGlzIG5vdCBzZXQKQ09ORklHX0haXzI1MD15CiMgQ09ORklHX0haXzMwMCBp
cyBub3Qgc2V0CiMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldApDT05GSUdfSFo9MjUwCkNP
TkZJR19TQ0hFRF9IUlRJQ0s9eQpDT05GSUdfQVJDSF9TVVBQT1JUU19LRVhFQz15CkNPTkZJ
R19BUkNIX1NVUFBPUlRTX0tFWEVDX1BVUkdBVE9SWT15CkNPTkZJR19BUkNIX1NVUFBPUlRT
X0tFWEVDX1NJRz15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0tFWEVDX1NJR19GT1JDRT15CkNP
TkZJR19BUkNIX1NVUFBPUlRTX0tFWEVDX0JaSU1BR0VfVkVSSUZZX1NJRz15CkNPTkZJR19B
UkNIX1NVUFBPUlRTX0tFWEVDX0pVTVA9eQpDT05GSUdfQVJDSF9TVVBQT1JUU19DUkFTSF9E
VU1QPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfQ1JBU0hfSE9UUExVRz15CkNPTkZJR19BUkNI
X0hBU19HRU5FUklDX0NSQVNIS0VSTkVMX1JFU0VSVkFUSU9OPXkKQ09ORklHX1BIWVNJQ0FM
X1NUQVJUPTB4MTAwMDAwMApDT05GSUdfUkVMT0NBVEFCTEU9eQojIENPTkZJR19SQU5ET01J
WkVfQkFTRSBpcyBub3Qgc2V0CkNPTkZJR19YODZfTkVFRF9SRUxPQ1M9eQpDT05GSUdfUEhZ
U0lDQUxfQUxJR049MHgyMDAwMDAKQ09ORklHX0hPVFBMVUdfQ1BVPXkKIyBDT05GSUdfQ09N
UEFUX1ZEU08gaXMgbm90IHNldAojIENPTkZJR19DTURMSU5FX0JPT0wgaXMgbm90IHNldApD
T05GSUdfTU9ESUZZX0xEVF9TWVNDQUxMPXkKIyBDT05GSUdfU1RSSUNUX1NJR0FMVFNUQUNL
X1NJWkUgaXMgbm90IHNldAojIGVuZCBvZiBQcm9jZXNzb3IgdHlwZSBhbmQgZmVhdHVyZXMK
CkNPTkZJR19DQ19IQVNfTkFNRURfQVM9eQpDT05GSUdfVVNFX1g4Nl9TRUdfU1VQUE9SVD15
CkNPTkZJR19DQ19IQVNfUkVUVVJOX1RIVU5LPXkKQ09ORklHX0NDX0hBU19FTlRSWV9QQURE
SU5HPXkKQ09ORklHX0ZVTkNUSU9OX1BBRERJTkdfQ0ZJPTAKQ09ORklHX0ZVTkNUSU9OX1BB
RERJTkdfQllURVM9NAojIENPTkZJR19DUFVfTUlUSUdBVElPTlMgaXMgbm90IHNldAoKIwoj
IFBvd2VyIG1hbmFnZW1lbnQgYW5kIEFDUEkgb3B0aW9ucwojCkNPTkZJR19BUkNIX0hJQkVS
TkFUSU9OX0hFQURFUj15CkNPTkZJR19TVVNQRU5EPXkKQ09ORklHX1NVU1BFTkRfRlJFRVpF
Uj15CiMgQ09ORklHX1NVU1BFTkRfU0tJUF9TWU5DIGlzIG5vdCBzZXQKQ09ORklHX0hJQkVS
TkFURV9DQUxMQkFDS1M9eQpDT05GSUdfSElCRVJOQVRJT049eQpDT05GSUdfSElCRVJOQVRJ
T05fU05BUFNIT1RfREVWPXkKQ09ORklHX0hJQkVSTkFUSU9OX0NPTVBfTFpPPXkKQ09ORklH
X0hJQkVSTkFUSU9OX0RFRl9DT01QPSJsem8iCkNPTkZJR19QTV9TVERfUEFSVElUSU9OPSIi
CkNPTkZJR19QTV9TTEVFUD15CkNPTkZJR19QTV9TTEVFUF9TTVA9eQojIENPTkZJR19QTV9B
VVRPU0xFRVAgaXMgbm90IHNldAojIENPTkZJR19QTV9VU0VSU1BBQ0VfQVVUT1NMRUVQIGlz
IG5vdCBzZXQKIyBDT05GSUdfUE1fV0FLRUxPQ0tTIGlzIG5vdCBzZXQKQ09ORklHX1BNPXkK
Q09ORklHX1BNX0RFQlVHPXkKQ09ORklHX1BNX0FEVkFOQ0VEX0RFQlVHPXkKIyBDT05GSUdf
UE1fVEVTVF9TVVNQRU5EIGlzIG5vdCBzZXQKQ09ORklHX1BNX1NMRUVQX0RFQlVHPXkKIyBD
T05GSUdfRFBNX1dBVENIRE9HIGlzIG5vdCBzZXQKIyBDT05GSUdfUE1fVFJBQ0VfUlRDIGlz
IG5vdCBzZXQKQ09ORklHX1BNX0NMSz15CiMgQ09ORklHX1dRX1BPV0VSX0VGRklDSUVOVF9E
RUZBVUxUIGlzIG5vdCBzZXQKIyBDT05GSUdfRU5FUkdZX01PREVMIGlzIG5vdCBzZXQKQ09O
RklHX0FSQ0hfU1VQUE9SVFNfQUNQST15CkNPTkZJR19BQ1BJPXkKQ09ORklHX0FDUElfTEVH
QUNZX1RBQkxFU19MT09LVVA9eQpDT05GSUdfQVJDSF9NSUdIVF9IQVZFX0FDUElfUERDPXkK
Q09ORklHX0FDUElfU1lTVEVNX1BPV0VSX1NUQVRFU19TVVBQT1JUPXkKQ09ORklHX0FDUElf
VEhFUk1BTF9MSUI9eQojIENPTkZJR19BQ1BJX0RFQlVHR0VSIGlzIG5vdCBzZXQKQ09ORklH
X0FDUElfU1BDUl9UQUJMRT15CkNPTkZJR19BQ1BJX1NMRUVQPXkKQ09ORklHX0FDUElfUkVW
X09WRVJSSURFX1BPU1NJQkxFPXkKIyBDT05GSUdfQUNQSV9FQ19ERUJVR0ZTIGlzIG5vdCBz
ZXQKQ09ORklHX0FDUElfQUM9bQpDT05GSUdfQUNQSV9CQVRURVJZPW0KQ09ORklHX0FDUElf
QlVUVE9OPW0KIyBDT05GSUdfQUNQSV9USU5ZX1BPV0VSX0JVVFRPTiBpcyBub3Qgc2V0CkNP
TkZJR19BQ1BJX1ZJREVPPW0KQ09ORklHX0FDUElfRkFOPW0KIyBDT05GSUdfQUNQSV9UQUQg
aXMgbm90IHNldApDT05GSUdfQUNQSV9ET0NLPXkKQ09ORklHX0FDUElfQ1BVX0ZSRVFfUFNT
PXkKQ09ORklHX0FDUElfUFJPQ0VTU09SX0NTVEFURT15CkNPTkZJR19BQ1BJX1BST0NFU1NP
Ul9JRExFPXkKQ09ORklHX0FDUElfUFJPQ0VTU09SPXkKQ09ORklHX0FDUElfSVBNST1tCkNP
TkZJR19BQ1BJX0hPVFBMVUdfQ1BVPXkKQ09ORklHX0FDUElfUFJPQ0VTU09SX0FHR1JFR0FU
T1I9bQpDT05GSUdfQUNQSV9USEVSTUFMPW0KQ09ORklHX0FSQ0hfSEFTX0FDUElfVEFCTEVf
VVBHUkFERT15CkNPTkZJR19BQ1BJX1RBQkxFX1VQR1JBREU9eQojIENPTkZJR19BQ1BJX0RF
QlVHIGlzIG5vdCBzZXQKQ09ORklHX0FDUElfUENJX1NMT1Q9eQpDT05GSUdfQUNQSV9DT05U
QUlORVI9eQpDT05GSUdfQUNQSV9IT1RQTFVHX0lPQVBJQz15CkNPTkZJR19BQ1BJX1NCUz1t
CkNPTkZJR19BQ1BJX0hFRD15CkNPTkZJR19BQ1BJX0JHUlQ9eQojIENPTkZJR19BQ1BJX1JF
RFVDRURfSEFSRFdBUkVfT05MWSBpcyBub3Qgc2V0CkNPTkZJR19IQVZFX0FDUElfQVBFST15
CkNPTkZJR19IQVZFX0FDUElfQVBFSV9OTUk9eQpDT05GSUdfQUNQSV9BUEVJPXkKQ09ORklH
X0FDUElfQVBFSV9HSEVTPXkKQ09ORklHX0FDUElfQVBFSV9QQ0lFQUVSPXkKIyBDT05GSUdf
QUNQSV9BUEVJX0VJTkogaXMgbm90IHNldAojIENPTkZJR19BQ1BJX0FQRUlfRVJTVF9ERUJV
RyBpcyBub3Qgc2V0CiMgQ09ORklHX0FDUElfRFBURiBpcyBub3Qgc2V0CiMgQ09ORklHX0FD
UElfQ09ORklHRlMgaXMgbm90IHNldAojIENPTkZJR19BQ1BJX0ZGSCBpcyBub3Qgc2V0CiMg
Q09ORklHX1BNSUNfT1BSRUdJT04gaXMgbm90IHNldApDT05GSUdfWDg2X1BNX1RJTUVSPXkK
IyBDT05GSUdfQVBNIGlzIG5vdCBzZXQKCiMKIyBDUFUgRnJlcXVlbmN5IHNjYWxpbmcKIwpD
T05GSUdfQ1BVX0ZSRVE9eQpDT05GSUdfQ1BVX0ZSRVFfR09WX0FUVFJfU0VUPXkKQ09ORklH
X0NQVV9GUkVRX0dPVl9DT01NT049eQpDT05GSUdfQ1BVX0ZSRVFfU1RBVD15CiMgQ09ORklH
X0NQVV9GUkVRX0RFRkFVTFRfR09WX1BFUkZPUk1BTkNFIGlzIG5vdCBzZXQKIyBDT05GSUdf
Q1BVX0ZSRVFfREVGQVVMVF9HT1ZfUE9XRVJTQVZFIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1BV
X0ZSRVFfREVGQVVMVF9HT1ZfVVNFUlNQQUNFIGlzIG5vdCBzZXQKQ09ORklHX0NQVV9GUkVR
X0RFRkFVTFRfR09WX1NDSEVEVVRJTD15CkNPTkZJR19DUFVfRlJFUV9HT1ZfUEVSRk9STUFO
Q0U9eQpDT05GSUdfQ1BVX0ZSRVFfR09WX1BPV0VSU0FWRT1tCkNPTkZJR19DUFVfRlJFUV9H
T1ZfVVNFUlNQQUNFPW0KQ09ORklHX0NQVV9GUkVRX0dPVl9PTkRFTUFORD15CkNPTkZJR19D
UFVfRlJFUV9HT1ZfQ09OU0VSVkFUSVZFPW0KQ09ORklHX0NQVV9GUkVRX0dPVl9TQ0hFRFVU
SUw9eQoKIwojIENQVSBmcmVxdWVuY3kgc2NhbGluZyBkcml2ZXJzCiMKQ09ORklHX1g4Nl9J
TlRFTF9QU1RBVEU9eQpDT05GSUdfWDg2X1BDQ19DUFVGUkVRPW0KQ09ORklHX1g4Nl9BTURf
UFNUQVRFPXkKQ09ORklHX1g4Nl9BTURfUFNUQVRFX0RFRkFVTFRfTU9ERT0zCiMgQ09ORklH
X1g4Nl9BTURfUFNUQVRFX1VUIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9BQ1BJX0NQVUZSRVE9
bQpDT05GSUdfWDg2X0FDUElfQ1BVRlJFUV9DUEI9eQojIENPTkZJR19YODZfUE9XRVJOT1df
SzYgaXMgbm90IHNldAojIENPTkZJR19YODZfUE9XRVJOT1dfSzcgaXMgbm90IHNldApDT05G
SUdfWDg2X1BPV0VSTk9XX0s4PW0KQ09ORklHX1g4Nl9BTURfRlJFUV9TRU5TSVRJVklUWT1t
CiMgQ09ORklHX1g4Nl9HWF9TVVNQTU9EIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9TUEVFRFNU
RVBfQ0VOVFJJTk89bQpDT05GSUdfWDg2X1NQRUVEU1RFUF9DRU5UUklOT19UQUJMRT15CiMg
Q09ORklHX1g4Nl9TUEVFRFNURVBfSUNIIGlzIG5vdCBzZXQKIyBDT05GSUdfWDg2X1NQRUVE
U1RFUF9TTUkgaXMgbm90IHNldApDT05GSUdfWDg2X1A0X0NMT0NLTU9EPW0KIyBDT05GSUdf
WDg2X0NQVUZSRVFfTkZPUkNFMiBpcyBub3Qgc2V0CiMgQ09ORklHX1g4Nl9MT05HUlVOIGlz
IG5vdCBzZXQKIyBDT05GSUdfWDg2X0xPTkdIQVVMIGlzIG5vdCBzZXQKIyBDT05GSUdfWDg2
X0VfUE9XRVJTQVZFUiBpcyBub3Qgc2V0CgojCiMgc2hhcmVkIG9wdGlvbnMKIwpDT05GSUdf
WDg2X1NQRUVEU1RFUF9MSUI9bQojIGVuZCBvZiBDUFUgRnJlcXVlbmN5IHNjYWxpbmcKCiMK
IyBDUFUgSWRsZQojCkNPTkZJR19DUFVfSURMRT15CkNPTkZJR19DUFVfSURMRV9HT1ZfTEFE
REVSPXkKQ09ORklHX0NQVV9JRExFX0dPVl9NRU5VPXkKIyBDT05GSUdfQ1BVX0lETEVfR09W
X1RFTyBpcyBub3Qgc2V0CiMgQ09ORklHX0NQVV9JRExFX0dPVl9IQUxUUE9MTCBpcyBub3Qg
c2V0CiMgQ09ORklHX0hBTFRQT0xMX0NQVUlETEUgaXMgbm90IHNldAojIGVuZCBvZiBDUFUg
SWRsZQoKQ09ORklHX0lOVEVMX0lETEU9eQojIGVuZCBvZiBQb3dlciBtYW5hZ2VtZW50IGFu
ZCBBQ1BJIG9wdGlvbnMKCiMKIyBCdXMgb3B0aW9ucyAoUENJIGV0Yy4pCiMKIyBDT05GSUdf
UENJX0dPQklPUyBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSV9HT01NQ09ORklHIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUENJX0dPRElSRUNUIGlzIG5vdCBzZXQKQ09ORklHX1BDSV9HT0FOWT15
CkNPTkZJR19QQ0lfQklPUz15CkNPTkZJR19QQ0lfRElSRUNUPXkKQ09ORklHX1BDSV9NTUNP
TkZJRz15CkNPTkZJR19QQ0lfWEVOPXkKIyBDT05GSUdfUENJX0NOQjIwTEVfUVVJUksgaXMg
bm90IHNldAojIENPTkZJR19JU0FfQlVTIGlzIG5vdCBzZXQKQ09ORklHX0lTQV9ETUFfQVBJ
PXkKIyBDT05GSUdfSVNBIGlzIG5vdCBzZXQKIyBDT05GSUdfU0N4MjAwIGlzIG5vdCBzZXQK
IyBDT05GSUdfQUxJWCBpcyBub3Qgc2V0CiMgQ09ORklHX05FVDU1MDEgaXMgbm90IHNldAoj
IENPTkZJR19HRU9TIGlzIG5vdCBzZXQKQ09ORklHX0FNRF9OQj15CiMgZW5kIG9mIEJ1cyBv
cHRpb25zIChQQ0kgZXRjLikKCiMKIyBCaW5hcnkgRW11bGF0aW9ucwojCkNPTkZJR19DT01Q
QVRfMzI9eQojIGVuZCBvZiBCaW5hcnkgRW11bGF0aW9ucwoKQ09ORklHX0hBVkVfQVRPTUlD
X0lPTUFQPXkKQ09ORklHX0tWTV9DT01NT049eQpDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEU9
eQpDT05GSUdfSEFWRV9LVk1fSVJRQ0hJUD15CkNPTkZJR19IQVZFX0tWTV9JUlFfUk9VVElO
Rz15CkNPTkZJR19IQVZFX0tWTV9ESVJUWV9SSU5HPXkKQ09ORklHX0hBVkVfS1ZNX0RJUlRZ
X1JJTkdfVFNPPXkKQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkdfQUNRX1JFTD15CkNPTkZJ
R19LVk1fTU1JTz15CkNPTkZJR19LVk1fQVNZTkNfUEY9eQpDT05GSUdfSEFWRV9LVk1fTVNJ
PXkKQ09ORklHX0hBVkVfS1ZNX1JFQURPTkxZX01FTT15CkNPTkZJR19IQVZFX0tWTV9DUFVf
UkVMQVhfSU5URVJDRVBUPXkKQ09ORklHX0tWTV9WRklPPXkKQ09ORklHX0tWTV9HRU5FUklD
X0RJUlRZTE9HX1JFQURfUFJPVEVDVD15CkNPTkZJR19LVk1fR0VORVJJQ19QUkVfRkFVTFRf
TUVNT1JZPXkKQ09ORklHX0hBVkVfS1ZNX0lSUV9CWVBBU1M9eQpDT05GSUdfSEFWRV9LVk1f
Tk9fUE9MTD15CkNPTkZJR19LVk1fWEZFUl9UT19HVUVTVF9XT1JLPXkKQ09ORklHX0hBVkVf
S1ZNX1BNX05PVElGSUVSPXkKQ09ORklHX0tWTV9HRU5FUklDX0hBUkRXQVJFX0VOQUJMSU5H
PXkKQ09ORklHX0tWTV9HRU5FUklDX01NVV9OT1RJRklFUj15CkNPTkZJR19WSVJUVUFMSVpB
VElPTj15CkNPTkZJR19LVk09bQojIENPTkZJR19LVk1fV0VSUk9SIGlzIG5vdCBzZXQKQ09O
RklHX0tWTV9JTlRFTD1tCiMgQ09ORklHX0tWTV9JTlRFTF9QUk9WRV9WRSBpcyBub3Qgc2V0
CkNPTkZJR19LVk1fQU1EPW0KIyBDT05GSUdfS1ZNX1NNTSBpcyBub3Qgc2V0CkNPTkZJR19L
Vk1fSFlQRVJWPXkKIyBDT05GSUdfS1ZNX1hFTiBpcyBub3Qgc2V0CiMgQ09ORklHX0tWTV9Q
Uk9WRV9NTVUgaXMgbm90IHNldApDT05GSUdfS1ZNX01BWF9OUl9WQ1BVUz0xMDI0CkNPTkZJ
R19BU19BVlg1MTI9eQpDT05GSUdfQVNfU0hBMV9OST15CkNPTkZJR19BU19TSEEyNTZfTkk9
eQpDT05GSUdfQVNfVFBBVVNFPXkKQ09ORklHX0FTX0dGTkk9eQpDT05GSUdfQVNfVkFFUz15
CkNPTkZJR19BU19WUENMTVVMUURRPXkKQ09ORklHX0FTX1dSVVNTPXkKQ09ORklHX0FSQ0hf
Q09ORklHVVJFU19DUFVfTUlUSUdBVElPTlM9eQpDT05GSUdfQVJDSF9IQVNfRE1BX09QUz15
CgojCiMgR2VuZXJhbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IG9wdGlvbnMKIwpDT05GSUdf
SE9UUExVR19TTVQ9eQpDT05GSUdfSE9UUExVR19DT1JFX1NZTkM9eQpDT05GSUdfSE9UUExV
R19DT1JFX1NZTkNfREVBRD15CkNPTkZJR19IT1RQTFVHX0NPUkVfU1lOQ19GVUxMPXkKQ09O
RklHX0hPVFBMVUdfU1BMSVRfU1RBUlRVUD15CkNPTkZJR19HRU5FUklDX0VOVFJZPXkKQ09O
RklHX0tQUk9CRVM9eQpDT05GSUdfSlVNUF9MQUJFTD15CiMgQ09ORklHX1NUQVRJQ19LRVlT
X1NFTEZURVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfU1RBVElDX0NBTExfU0VMRlRFU1QgaXMg
bm90IHNldApDT05GSUdfT1BUUFJPQkVTPXkKQ09ORklHX0hBVkVfRUZGSUNJRU5UX1VOQUxJ
R05FRF9BQ0NFU1M9eQpDT05GSUdfQVJDSF9VU0VfQlVJTFRJTl9CU1dBUD15CkNPTkZJR19L
UkVUUFJPQkVTPXkKQ09ORklHX0tSRVRQUk9CRV9PTl9SRVRIT09LPXkKQ09ORklHX1VTRVJf
UkVUVVJOX05PVElGSUVSPXkKQ09ORklHX0hBVkVfSU9SRU1BUF9QUk9UPXkKQ09ORklHX0hB
VkVfS1BST0JFUz15CkNPTkZJR19IQVZFX0tSRVRQUk9CRVM9eQpDT05GSUdfSEFWRV9PUFRQ
Uk9CRVM9eQpDT05GSUdfSEFWRV9LUFJPQkVTX09OX0ZUUkFDRT15CkNPTkZJR19BUkNIX0NP
UlJFQ1RfU1RBQ0tUUkFDRV9PTl9LUkVUUFJPQkU9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9F
UlJPUl9JTkpFQ1RJT049eQpDT05GSUdfSEFWRV9OTUk9eQpDT05GSUdfVFJBQ0VfSVJRRkxB
R1NfU1VQUE9SVD15CkNPTkZJR19UUkFDRV9JUlFGTEFHU19OTUlfU1VQUE9SVD15CkNPTkZJ
R19IQVZFX0FSQ0hfVFJBQ0VIT09LPXkKQ09ORklHX0hBVkVfRE1BX0NPTlRJR1VPVVM9eQpD
T05GSUdfR0VORVJJQ19TTVBfSURMRV9USFJFQUQ9eQpDT05GSUdfQVJDSF9IQVNfRk9SVElG
WV9TT1VSQ0U9eQpDT05GSUdfQVJDSF9IQVNfU0VUX01FTU9SWT15CkNPTkZJR19BUkNIX0hB
U19TRVRfRElSRUNUX01BUD15CkNPTkZJR19BUkNIX0hBU19DUFVfRklOQUxJWkVfSU5JVD15
CkNPTkZJR19IQVZFX0FSQ0hfVEhSRUFEX1NUUlVDVF9XSElURUxJU1Q9eQpDT05GSUdfQVJD
SF9XQU5UU19EWU5BTUlDX1RBU0tfU1RSVUNUPXkKQ09ORklHX0FSQ0hfV0FOVFNfTk9fSU5T
VFI9eQpDT05GSUdfQVJDSF8zMkJJVF9PRkZfVD15CkNPTkZJR19IQVZFX0FTTV9NT0RWRVJT
SU9OUz15CkNPTkZJR19IQVZFX1JFR1NfQU5EX1NUQUNLX0FDQ0VTU19BUEk9eQpDT05GSUdf
SEFWRV9SU0VRPXkKQ09ORklHX0hBVkVfRlVOQ1RJT05fQVJHX0FDQ0VTU19BUEk9eQpDT05G
SUdfSEFWRV9IV19CUkVBS1BPSU5UPXkKQ09ORklHX0hBVkVfTUlYRURfQlJFQUtQT0lOVFNf
UkVHUz15CkNPTkZJR19IQVZFX1VTRVJfUkVUVVJOX05PVElGSUVSPXkKQ09ORklHX0hBVkVf
UEVSRl9FVkVOVFNfTk1JPXkKQ09ORklHX0hBVkVfSEFSRExPQ0tVUF9ERVRFQ1RPUl9QRVJG
PXkKQ09ORklHX0hBVkVfUEVSRl9SRUdTPXkKQ09ORklHX0hBVkVfUEVSRl9VU0VSX1NUQUNL
X0RVTVA9eQpDT05GSUdfSEFWRV9BUkNIX0pVTVBfTEFCRUw9eQpDT05GSUdfSEFWRV9BUkNI
X0pVTVBfTEFCRUxfUkVMQVRJVkU9eQpDT05GSUdfTU1VX0dBVEhFUl9UQUJMRV9GUkVFPXkK
Q09ORklHX01NVV9HQVRIRVJfUkNVX1RBQkxFX0ZSRUU9eQpDT05GSUdfTU1VX0dBVEhFUl9N
RVJHRV9WTUFTPXkKQ09ORklHX01NVV9MQVpZX1RMQl9SRUZDT1VOVD15CkNPTkZJR19BUkNI
X0hBVkVfTk1JX1NBRkVfQ01QWENIRz15CkNPTkZJR19BUkNIX0hBVkVfRVhUUkFfRUxGX05P
VEVTPXkKQ09ORklHX0FSQ0hfSEFTX05NSV9TQUZFX1RISVNfQ1BVX09QUz15CkNPTkZJR19I
QVZFX0FMSUdORURfU1RSVUNUX1BBR0U9eQpDT05GSUdfSEFWRV9DTVBYQ0hHX0xPQ0FMPXkK
Q09ORklHX0hBVkVfQ01QWENIR19ET1VCTEU9eQpDT05GSUdfQVJDSF9XQU5UX0lQQ19QQVJT
RV9WRVJTSU9OPXkKQ09ORklHX0hBVkVfQVJDSF9TRUNDT01QPXkKQ09ORklHX0hBVkVfQVJD
SF9TRUNDT01QX0ZJTFRFUj15CkNPTkZJR19TRUNDT01QPXkKQ09ORklHX1NFQ0NPTVBfRklM
VEVSPXkKIyBDT05GSUdfU0VDQ09NUF9DQUNIRV9ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19I
QVZFX0FSQ0hfU1RBQ0tMRUFLPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfTFRPX0NMQU5HPXkK
Q09ORklHX0FSQ0hfU1VQUE9SVFNfTFRPX0NMQU5HX1RISU49eQpDT05GSUdfTFRPX05PTkU9
eQpDT05GSUdfSEFWRV9BUkNIX1dJVEhJTl9TVEFDS19GUkFNRVM9eQpDT05GSUdfSEFWRV9J
UlFfVElNRV9BQ0NPVU5USU5HPXkKQ09ORklHX0hBVkVfTU9WRV9QVUQ9eQpDT05GSUdfSEFW
RV9NT1ZFX1BNRD15CkNPTkZJR19IQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0U9eQpD
T05GSUdfSEFWRV9BUkNIX0hVR0VfVk1BUD15CkNPTkZJR19BUkNIX1dBTlRfSFVHRV9QTURf
U0hBUkU9eQpDT05GSUdfQVJDSF9XQU5UX1BNRF9NS1dSSVRFPXkKQ09ORklHX0hBVkVfTU9E
X0FSQ0hfU1BFQ0lGSUM9eQpDT05GSUdfTU9EVUxFU19VU0VfRUxGX1JFTD15CkNPTkZJR19I
QVZFX1NPRlRJUlFfT05fT1dOX1NUQUNLPXkKQ09ORklHX1NPRlRJUlFfT05fT1dOX1NUQUNL
PXkKQ09ORklHX0FSQ0hfSEFTX0VMRl9SQU5ET01JWkU9eQpDT05GSUdfSEFWRV9BUkNIX01N
QVBfUk5EX0JJVFM9eQpDT05GSUdfSEFWRV9FWElUX1RIUkVBRD15CkNPTkZJR19BUkNIX01N
QVBfUk5EX0JJVFM9MTYKQ09ORklHX0hBVkVfUEFHRV9TSVpFXzRLQj15CkNPTkZJR19QQUdF
X1NJWkVfNEtCPXkKQ09ORklHX1BBR0VfU0laRV9MRVNTX1RIQU5fNjRLQj15CkNPTkZJR19Q
QUdFX1NJWkVfTEVTU19USEFOXzI1NktCPXkKQ09ORklHX1BBR0VfU0hJRlQ9MTIKQ09ORklH
X0NMT05FX0JBQ0tXQVJEUz15CkNPTkZJR19PTERfU0lHU1VTUEVORDM9eQpDT05GSUdfT0xE
X1NJR0FDVElPTj15CkNPTkZJR19DT01QQVRfMzJCSVRfVElNRT15CkNPTkZJR19BUkNIX1NV
UFBPUlRTX1JUPXkKQ09ORklHX0hBVkVfQVJDSF9SQU5ET01JWkVfS1NUQUNLX09GRlNFVD15
CiMgQ09ORklHX1JBTkRPTUlaRV9LU1RBQ0tfT0ZGU0VUIGlzIG5vdCBzZXQKQ09ORklHX0FS
Q0hfSEFTX1NUUklDVF9LRVJORUxfUldYPXkKQ09ORklHX1NUUklDVF9LRVJORUxfUldYPXkK
Q09ORklHX0FSQ0hfSEFTX1NUUklDVF9NT0RVTEVfUldYPXkKQ09ORklHX1NUUklDVF9NT0RV
TEVfUldYPXkKQ09ORklHX0hBVkVfQVJDSF9QUkVMMzJfUkVMT0NBVElPTlM9eQpDT05GSUdf
QVJDSF9VU0VfTUVNUkVNQVBfUFJPVD15CiMgQ09ORklHX0xPQ0tfRVZFTlRfQ09VTlRTIGlz
IG5vdCBzZXQKQ09ORklHX0FSQ0hfSEFTX01FTV9FTkNSWVBUPXkKQ09ORklHX0hBVkVfU1RB
VElDX0NBTEw9eQpDT05GSUdfSEFWRV9QUkVFTVBUX0RZTkFNSUM9eQpDT05GSUdfSEFWRV9Q
UkVFTVBUX0RZTkFNSUNfQ0FMTD15CkNPTkZJR19BUkNIX1dBTlRfTERfT1JQSEFOX1dBUk49
eQpDT05GSUdfQVJDSF9TVVBQT1JUU19ERUJVR19QQUdFQUxMT0M9eQpDT05GSUdfQVJDSF9T
UExJVF9BUkc2ND15CkNPTkZJR19BUkNIX0hBU19QQVJBTk9JRF9MMURfRkxVU0g9eQpDT05G
SUdfRFlOQU1JQ19TSUdGUkFNRT15CkNPTkZJR19BUkNIX0hBU19IV19QVEVfWU9VTkc9eQpD
T05GSUdfQVJDSF9IQVNfTk9OTEVBRl9QTURfWU9VTkc9eQpDT05GSUdfQVJDSF9IQVNfS0VS
TkVMX0ZQVV9TVVBQT1JUPXkKCiMKIyBHQ09WLWJhc2VkIGtlcm5lbCBwcm9maWxpbmcKIwoj
IENPTkZJR19HQ09WX0tFUk5FTCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19HQ09WX1BS
T0ZJTEVfQUxMPXkKIyBlbmQgb2YgR0NPVi1iYXNlZCBrZXJuZWwgcHJvZmlsaW5nCgpDT05G
SUdfSEFWRV9HQ0NfUExVR0lOUz15CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlRfNEI9eQpD
T05GSUdfRlVOQ1RJT05fQUxJR05NRU5UPTQKQ09ORklHX0NDX0hBU19NSU5fRlVOQ1RJT05f
QUxJR05NRU5UPXkKQ09ORklHX0NDX0hBU19TQU5FX0ZVTkNUSU9OX0FMSUdOTUVOVD15CiMg
ZW5kIG9mIEdlbmVyYWwgYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCBvcHRpb25zCgpDT05GSUdf
UlRfTVVURVhFUz15CkNPTkZJR19NT0RVTEVTPXkKIyBDT05GSUdfTU9EVUxFX0RFQlVHIGlz
IG5vdCBzZXQKQ09ORklHX01PRFVMRV9GT1JDRV9MT0FEPXkKQ09ORklHX01PRFVMRV9VTkxP
QUQ9eQpDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRD15CiMgQ09ORklHX01PRFVMRV9VTkxP
QURfVEFJTlRfVFJBQ0tJTkcgaXMgbm90IHNldApDT05GSUdfTU9EVkVSU0lPTlM9eQpDT05G
SUdfQVNNX01PRFZFUlNJT05TPXkKIyBDT05GSUdfTU9EVUxFX1NSQ1ZFUlNJT05fQUxMIGlz
IG5vdCBzZXQKIyBDT05GSUdfTU9EVUxFX1NJRyBpcyBub3Qgc2V0CiMgQ09ORklHX01PRFVM
RV9DT01QUkVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX01PRFVMRV9BTExPV19NSVNTSU5HX05B
TUVTUEFDRV9JTVBPUlRTIGlzIG5vdCBzZXQKQ09ORklHX01PRFBST0JFX1BBVEg9Ii9zYmlu
L21vZHByb2JlIgojIENPTkZJR19UUklNX1VOVVNFRF9LU1lNUyBpcyBub3Qgc2V0CkNPTkZJ
R19NT0RVTEVTX1RSRUVfTE9PS1VQPXkKQ09ORklHX0JMT0NLPXkKIyBDT05GSUdfQkxPQ0tf
TEVHQUNZX0FVVE9MT0FEIGlzIG5vdCBzZXQKQ09ORklHX0JMS19DR1JPVVBfUldTVEFUPXkK
Q09ORklHX0JMS19ERVZfQlNHX0NPTU1PTj15CkNPTkZJR19CTEtfREVWX0JTR0xJQj15CkNP
TkZJR19CTEtfREVWX0lOVEVHUklUWT15CkNPTkZJR19CTEtfREVWX1dSSVRFX01PVU5URUQ9
eQojIENPTkZJR19CTEtfREVWX1pPTkVEIGlzIG5vdCBzZXQKQ09ORklHX0JMS19ERVZfVEhS
T1RUTElORz15CiMgQ09ORklHX0JMS19XQlQgaXMgbm90IHNldAojIENPTkZJR19CTEtfQ0dS
T1VQX0lPTEFURU5DWSBpcyBub3Qgc2V0CiMgQ09ORklHX0JMS19DR1JPVVBfSU9DT1NUIGlz
IG5vdCBzZXQKIyBDT05GSUdfQkxLX0NHUk9VUF9JT1BSSU8gaXMgbm90IHNldAojIENPTkZJ
R19CTEtfREVCVUdfRlMgaXMgbm90IHNldAojIENPTkZJR19CTEtfU0VEX09QQUwgaXMgbm90
IHNldAojIENPTkZJR19CTEtfSU5MSU5FX0VOQ1JZUFRJT04gaXMgbm90IHNldAoKIwojIFBh
cnRpdGlvbiBUeXBlcwojCkNPTkZJR19QQVJUSVRJT05fQURWQU5DRUQ9eQpDT05GSUdfQUNP
Uk5fUEFSVElUSU9OPXkKIyBDT05GSUdfQUNPUk5fUEFSVElUSU9OX0NVTUFOQSBpcyBub3Qg
c2V0CiMgQ09ORklHX0FDT1JOX1BBUlRJVElPTl9FRVNPWCBpcyBub3Qgc2V0CkNPTkZJR19B
Q09STl9QQVJUSVRJT05fSUNTPXkKIyBDT05GSUdfQUNPUk5fUEFSVElUSU9OX0FERlMgaXMg
bm90IHNldAojIENPTkZJR19BQ09STl9QQVJUSVRJT05fUE9XRVJURUMgaXMgbm90IHNldApD
T05GSUdfQUNPUk5fUEFSVElUSU9OX1JJU0NJWD15CiMgQ09ORklHX0FJWF9QQVJUSVRJT04g
aXMgbm90IHNldApDT05GSUdfT1NGX1BBUlRJVElPTj15CkNPTkZJR19BTUlHQV9QQVJUSVRJ
T049eQpDT05GSUdfQVRBUklfUEFSVElUSU9OPXkKQ09ORklHX01BQ19QQVJUSVRJT049eQpD
T05GSUdfTVNET1NfUEFSVElUSU9OPXkKQ09ORklHX0JTRF9ESVNLTEFCRUw9eQpDT05GSUdf
TUlOSVhfU1VCUEFSVElUSU9OPXkKQ09ORklHX1NPTEFSSVNfWDg2X1BBUlRJVElPTj15CkNP
TkZJR19VTklYV0FSRV9ESVNLTEFCRUw9eQpDT05GSUdfTERNX1BBUlRJVElPTj15CiMgQ09O
RklHX0xETV9ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19TR0lfUEFSVElUSU9OPXkKQ09ORklH
X1VMVFJJWF9QQVJUSVRJT049eQpDT05GSUdfU1VOX1BBUlRJVElPTj15CkNPTkZJR19LQVJN
QV9QQVJUSVRJT049eQpDT05GSUdfRUZJX1BBUlRJVElPTj15CiMgQ09ORklHX1NZU1Y2OF9Q
QVJUSVRJT04gaXMgbm90IHNldAojIENPTkZJR19DTURMSU5FX1BBUlRJVElPTiBpcyBub3Qg
c2V0CiMgZW5kIG9mIFBhcnRpdGlvbiBUeXBlcwoKQ09ORklHX0JMS19NUV9QQ0k9eQpDT05G
SUdfQkxLX01RX1ZJUlRJTz15CkNPTkZJR19CTEtfUE09eQoKIwojIElPIFNjaGVkdWxlcnMK
IwojIENPTkZJR19NUV9JT1NDSEVEX0RFQURMSU5FIGlzIG5vdCBzZXQKIyBDT05GSUdfTVFf
SU9TQ0hFRF9LWUJFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0lPU0NIRURfQkZRIGlzIG5vdCBz
ZXQKIyBlbmQgb2YgSU8gU2NoZWR1bGVycwoKQ09ORklHX1BSRUVNUFRfTk9USUZJRVJTPXkK
Q09ORklHX1BBREFUQT15CkNPTkZJR19BU04xPW0KQ09ORklHX1VOSU5MSU5FX1NQSU5fVU5M
T0NLPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfQVRPTUlDX1JNVz15CkNPTkZJR19NVVRFWF9T
UElOX09OX09XTkVSPXkKQ09ORklHX1JXU0VNX1NQSU5fT05fT1dORVI9eQpDT05GSUdfTE9D
S19TUElOX09OX09XTkVSPXkKQ09ORklHX0FSQ0hfVVNFX1FVRVVFRF9TUElOTE9DS1M9eQpD
T05GSUdfUVVFVUVEX1NQSU5MT0NLUz15CkNPTkZJR19BUkNIX1VTRV9RVUVVRURfUldMT0NL
Uz15CkNPTkZJR19RVUVVRURfUldMT0NLUz15CkNPTkZJR19BUkNIX0hBU19OT05fT1ZFUkxB
UFBJTkdfQUREUkVTU19TUEFDRT15CkNPTkZJR19BUkNIX0hBU19TWU5DX0NPUkVfQkVGT1JF
X1VTRVJNT0RFPXkKQ09ORklHX0FSQ0hfSEFTX1NZU0NBTExfV1JBUFBFUj15CkNPTkZJR19G
UkVFWkVSPXkKCiMKIyBFeGVjdXRhYmxlIGZpbGUgZm9ybWF0cwojCkNPTkZJR19CSU5GTVRf
RUxGPXkKQ09ORklHX0VMRkNPUkU9eQpDT05GSUdfQ09SRV9EVU1QX0RFRkFVTFRfRUxGX0hF
QURFUlM9eQpDT05GSUdfQklORk1UX1NDUklQVD15CkNPTkZJR19CSU5GTVRfTUlTQz1tCkNP
TkZJR19DT1JFRFVNUD15CiMgZW5kIG9mIEV4ZWN1dGFibGUgZmlsZSBmb3JtYXRzCgojCiMg
TWVtb3J5IE1hbmFnZW1lbnQgb3B0aW9ucwojCkNPTkZJR19TV0FQPXkKIyBDT05GSUdfWlNX
QVAgaXMgbm90IHNldApDT05GSUdfWlNNQUxMT0M9bQojIENPTkZJR19aU01BTExPQ19TVEFU
IGlzIG5vdCBzZXQKQ09ORklHX1pTTUFMTE9DX0NIQUlOX1NJWkU9OAoKIwojIFNsYWIgYWxs
b2NhdG9yIG9wdGlvbnMKIwpDT05GSUdfU0xVQj15CiMgQ09ORklHX1NMVUJfVElOWSBpcyBu
b3Qgc2V0CkNPTkZJR19TTEFCX01FUkdFX0RFRkFVTFQ9eQojIENPTkZJR19TTEFCX0ZSRUVM
SVNUX1JBTkRPTSBpcyBub3Qgc2V0CiMgQ09ORklHX1NMQUJfRlJFRUxJU1RfSEFSREVORUQg
aXMgbm90IHNldAojIENPTkZJR19TTEFCX0JVQ0tFVFMgaXMgbm90IHNldAojIENPTkZJR19T
TFVCX1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX1NMVUJfQ1BVX1BBUlRJQUw9eQojIENPTkZJ
R19SQU5ET01fS01BTExPQ19DQUNIRVMgaXMgbm90IHNldAojIGVuZCBvZiBTbGFiIGFsbG9j
YXRvciBvcHRpb25zCgojIENPTkZJR19TSFVGRkxFX1BBR0VfQUxMT0NBVE9SIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0CkNPTkZJR19TRUxFQ1RfTUVNT1JZ
X01PREVMPXkKIyBDT05GSUdfRkxBVE1FTV9NQU5VQUwgaXMgbm90IHNldApDT05GSUdfU1BB
UlNFTUVNX01BTlVBTD15CkNPTkZJR19TUEFSU0VNRU09eQpDT05GSUdfU1BBUlNFTUVNX1NU
QVRJQz15CkNPTkZJR19IQVZFX0dVUF9GQVNUPXkKQ09ORklHX0VYQ0xVU0lWRV9TWVNURU1f
UkFNPXkKQ09ORklHX0FSQ0hfTUhQX01FTU1BUF9PTl9NRU1PUllfRU5BQkxFPXkKQ09ORklH
X1NQTElUX1BURV9QVExPQ0tTPXkKQ09ORklHX0FSQ0hfRU5BQkxFX1NQTElUX1BNRF9QVExP
Q0s9eQpDT05GSUdfU1BMSVRfUE1EX1BUTE9DS1M9eQpDT05GSUdfTUVNT1JZX0JBTExPT049
eQpDT05GSUdfQkFMTE9PTl9DT01QQUNUSU9OPXkKQ09ORklHX0NPTVBBQ1RJT049eQpDT05G
SUdfQ09NUEFDVF9VTkVWSUNUQUJMRV9ERUZBVUxUPTEKQ09ORklHX1BBR0VfUkVQT1JUSU5H
PXkKQ09ORklHX01JR1JBVElPTj15CkNPTkZJR19QQ1BfQkFUQ0hfU0NBTEVfTUFYPTUKQ09O
RklHX1BIWVNfQUREUl9UXzY0QklUPXkKQ09ORklHX0JPVU5DRT15CkNPTkZJR19NTVVfTk9U
SUZJRVI9eQpDT05GSUdfS1NNPXkKQ09ORklHX0RFRkFVTFRfTU1BUF9NSU5fQUREUj02NTUz
NgpDT05GSUdfQVJDSF9XQU5UX0dFTkVSQUxfSFVHRVRMQj15CkNPTkZJR19UUkFOU1BBUkVO
VF9IVUdFUEFHRT15CiMgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFX0FMV0FZUyBpcyBu
b3Qgc2V0CkNPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRV9NQURWSVNFPXkKIyBDT05GSUdf
VFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVIgaXMgbm90IHNldAojIENPTkZJR19SRUFEX09O
TFlfVEhQX0ZPUl9GUyBpcyBub3Qgc2V0CkNPTkZJR19QR1RBQkxFX0hBU19IVUdFX0xFQVZF
Uz15CkNPTkZJR19ORUVEX1BFUl9DUFVfRU1CRURfRklSU1RfQ0hVTks9eQpDT05GSUdfTkVF
RF9QRVJfQ1BVX1BBR0VfRklSU1RfQ0hVTks9eQpDT05GSUdfSEFWRV9TRVRVUF9QRVJfQ1BV
X0FSRUE9eQojIENPTkZJR19DTUEgaXMgbm90IHNldApDT05GSUdfR0VORVJJQ19FQVJMWV9J
T1JFTUFQPXkKIyBDT05GSUdfSURMRV9QQUdFX1RSQUNLSU5HIGlzIG5vdCBzZXQKQ09ORklH
X0FSQ0hfSEFTX0NBQ0hFX0xJTkVfU0laRT15CkNPTkZJR19BUkNIX0hBU19DVVJSRU5UX1NU
QUNLX1BPSU5URVI9eQpDT05GSUdfQVJDSF9IQVNfWk9ORV9ETUFfU0VUPXkKQ09ORklHX1pP
TkVfRE1BPXkKQ09ORklHX1ZNQVBfUEZOPXkKQ09ORklHX0FSQ0hfVVNFU19QR19BUkNIXzI9
eQpDT05GSUdfVk1fRVZFTlRfQ09VTlRFUlM9eQojIENPTkZJR19QRVJDUFVfU1RBVFMgaXMg
bm90IHNldAojIENPTkZJR19HVVBfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19HVVBfR0VUX1BY
WF9MT1dfSElHSD15CiMgQ09ORklHX0RNQVBPT0xfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19B
UkNIX0hBU19QVEVfU1BFQ0lBTD15CkNPTkZJR19NQVBQSU5HX0RJUlRZX0hFTFBFUlM9eQpD
T05GSUdfS01BUF9MT0NBTD15CkNPTkZJR19NRU1GRF9DUkVBVEU9eQpDT05GSUdfU0VDUkVU
TUVNPXkKIyBDT05GSUdfQU5PTl9WTUFfTkFNRSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTRVJG
QVVMVEZEIGlzIG5vdCBzZXQKQ09ORklHX0xPQ0tfTU1fQU5EX0ZJTkRfVk1BPXkKQ09ORklH
X0VYRUNNRU09eQoKIwojIERhdGEgQWNjZXNzIE1vbml0b3JpbmcKIwojIENPTkZJR19EQU1P
TiBpcyBub3Qgc2V0CiMgZW5kIG9mIERhdGEgQWNjZXNzIE1vbml0b3JpbmcKIyBlbmQgb2Yg
TWVtb3J5IE1hbmFnZW1lbnQgb3B0aW9ucwoKQ09ORklHX05FVD15CkNPTkZJR19ORVRfSU5H
UkVTUz15CkNPTkZJR19ORVRfRUdSRVNTPXkKQ09ORklHX05FVF9YR1JFU1M9eQpDT05GSUdf
U0tCX0VYVEVOU0lPTlM9eQpDT05GSUdfTkVUX0RFVk1FTT15CgojCiMgTmV0d29ya2luZyBv
cHRpb25zCiMKQ09ORklHX1BBQ0tFVD15CkNPTkZJR19QQUNLRVRfRElBRz1tCkNPTkZJR19V
TklYPXkKQ09ORklHX0FGX1VOSVhfT09CPXkKQ09ORklHX1VOSVhfRElBRz1tCiMgQ09ORklH
X1RMUyBpcyBub3Qgc2V0CkNPTkZJR19YRlJNPXkKQ09ORklHX1hGUk1fQUxHTz1tCkNPTkZJ
R19YRlJNX1VTRVI9bQojIENPTkZJR19YRlJNX0lOVEVSRkFDRSBpcyBub3Qgc2V0CkNPTkZJ
R19YRlJNX1NVQl9QT0xJQ1k9eQpDT05GSUdfWEZSTV9NSUdSQVRFPXkKIyBDT05GSUdfWEZS
TV9TVEFUSVNUSUNTIGlzIG5vdCBzZXQKQ09ORklHX1hGUk1fQUg9bQpDT05GSUdfWEZSTV9F
U1A9bQpDT05GSUdfWEZSTV9JUENPTVA9bQpDT05GSUdfTkVUX0tFWT1tCkNPTkZJR19ORVRf
S0VZX01JR1JBVEU9eQpDT05GSUdfSU5FVD15CkNPTkZJR19JUF9NVUxUSUNBU1Q9eQpDT05G
SUdfSVBfQURWQU5DRURfUk9VVEVSPXkKQ09ORklHX0lQX0ZJQl9UUklFX1NUQVRTPXkKQ09O
RklHX0lQX01VTFRJUExFX1RBQkxFUz15CkNPTkZJR19JUF9ST1VURV9NVUxUSVBBVEg9eQpD
T05GSUdfSVBfUk9VVEVfVkVSQk9TRT15CkNPTkZJR19JUF9ST1VURV9DTEFTU0lEPXkKQ09O
RklHX0lQX1BOUD15CkNPTkZJR19JUF9QTlBfREhDUD15CiMgQ09ORklHX0lQX1BOUF9CT09U
UCBpcyBub3Qgc2V0CiMgQ09ORklHX0lQX1BOUF9SQVJQIGlzIG5vdCBzZXQKQ09ORklHX05F
VF9JUElQPW0KQ09ORklHX05FVF9JUEdSRV9ERU1VWD1tCkNPTkZJR19ORVRfSVBfVFVOTkVM
PW0KQ09ORklHX05FVF9JUEdSRT1tCkNPTkZJR19ORVRfSVBHUkVfQlJPQURDQVNUPXkKQ09O
RklHX0lQX01ST1VURV9DT01NT049eQpDT05GSUdfSVBfTVJPVVRFPXkKQ09ORklHX0lQX01S
T1VURV9NVUxUSVBMRV9UQUJMRVM9eQpDT05GSUdfSVBfUElNU01fVjE9eQpDT05GSUdfSVBf
UElNU01fVjI9eQpDT05GSUdfU1lOX0NPT0tJRVM9eQpDT05GSUdfTkVUX0lQVlRJPW0KQ09O
RklHX05FVF9VRFBfVFVOTkVMPW0KIyBDT05GSUdfTkVUX0ZPVSBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9GT1VfSVBfVFVOTkVMUyBpcyBub3Qgc2V0CkNPTkZJR19JTkVUX0FIPW0KQ09O
RklHX0lORVRfRVNQPW0KIyBDT05GSUdfSU5FVF9FU1BfT0ZGTE9BRCBpcyBub3Qgc2V0CiMg
Q09ORklHX0lORVRfRVNQSU5UQ1AgaXMgbm90IHNldApDT05GSUdfSU5FVF9JUENPTVA9bQpD
T05GSUdfSU5FVF9UQUJMRV9QRVJUVVJCX09SREVSPTE2CkNPTkZJR19JTkVUX1hGUk1fVFVO
TkVMPW0KQ09ORklHX0lORVRfVFVOTkVMPW0KQ09ORklHX0lORVRfRElBRz1tCkNPTkZJR19J
TkVUX1RDUF9ESUFHPW0KQ09ORklHX0lORVRfVURQX0RJQUc9bQojIENPTkZJR19JTkVUX1JB
V19ESUFHIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5FVF9ESUFHX0RFU1RST1kgaXMgbm90IHNl
dApDT05GSUdfVENQX0NPTkdfQURWQU5DRUQ9eQpDT05GSUdfVENQX0NPTkdfQklDPW0KQ09O
RklHX1RDUF9DT05HX0NVQklDPXkKQ09ORklHX1RDUF9DT05HX1dFU1RXT09EPW0KQ09ORklH
X1RDUF9DT05HX0hUQ1A9bQpDT05GSUdfVENQX0NPTkdfSFNUQ1A9bQpDT05GSUdfVENQX0NP
TkdfSFlCTEE9bQpDT05GSUdfVENQX0NPTkdfVkVHQVM9bQojIENPTkZJR19UQ1BfQ09OR19O
ViBpcyBub3Qgc2V0CkNPTkZJR19UQ1BfQ09OR19TQ0FMQUJMRT1tCkNPTkZJR19UQ1BfQ09O
R19MUD1tCkNPTkZJR19UQ1BfQ09OR19WRU5PPW0KQ09ORklHX1RDUF9DT05HX1lFQUg9bQpD
T05GSUdfVENQX0NPTkdfSUxMSU5PSVM9bQojIENPTkZJR19UQ1BfQ09OR19EQ1RDUCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1RDUF9DT05HX0NERyBpcyBub3Qgc2V0CiMgQ09ORklHX1RDUF9D
T05HX0JCUiBpcyBub3Qgc2V0CkNPTkZJR19ERUZBVUxUX0NVQklDPXkKIyBDT05GSUdfREVG
QVVMVF9SRU5PIGlzIG5vdCBzZXQKQ09ORklHX0RFRkFVTFRfVENQX0NPTkc9ImN1YmljIgpD
T05GSUdfVENQX1NJR1BPT0w9eQpDT05GSUdfVENQX01ENVNJRz15CkNPTkZJR19JUFY2PXkK
Q09ORklHX0lQVjZfUk9VVEVSX1BSRUY9eQpDT05GSUdfSVBWNl9ST1VURV9JTkZPPXkKQ09O
RklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eQpDT05GSUdfSU5FVDZfQUg9bQpDT05GSUdfSU5F
VDZfRVNQPW0KIyBDT05GSUdfSU5FVDZfRVNQX09GRkxPQUQgaXMgbm90IHNldAojIENPTkZJ
R19JTkVUNl9FU1BJTlRDUCBpcyBub3Qgc2V0CkNPTkZJR19JTkVUNl9JUENPTVA9bQpDT05G
SUdfSVBWNl9NSVA2PXkKIyBDT05GSUdfSVBWNl9JTEEgaXMgbm90IHNldApDT05GSUdfSU5F
VDZfWEZSTV9UVU5ORUw9bQpDT05GSUdfSU5FVDZfVFVOTkVMPW0KQ09ORklHX0lQVjZfVlRJ
PW0KQ09ORklHX0lQVjZfU0lUPW0KQ09ORklHX0lQVjZfU0lUXzZSRD15CkNPTkZJR19JUFY2
X05ESVNDX05PREVUWVBFPXkKQ09ORklHX0lQVjZfVFVOTkVMPW0KQ09ORklHX0lQVjZfR1JF
PW0KQ09ORklHX0lQVjZfTVVMVElQTEVfVEFCTEVTPXkKQ09ORklHX0lQVjZfU1VCVFJFRVM9
eQpDT05GSUdfSVBWNl9NUk9VVEU9eQpDT05GSUdfSVBWNl9NUk9VVEVfTVVMVElQTEVfVEFC
TEVTPXkKQ09ORklHX0lQVjZfUElNU01fVjI9eQojIENPTkZJR19JUFY2X1NFRzZfTFdUVU5O
RUwgaXMgbm90IHNldAojIENPTkZJR19JUFY2X1NFRzZfSE1BQyBpcyBub3Qgc2V0CiMgQ09O
RklHX0lQVjZfUlBMX0xXVFVOTkVMIGlzIG5vdCBzZXQKIyBDT05GSUdfSVBWNl9JT0FNNl9M
V1RVTk5FTCBpcyBub3Qgc2V0CiMgQ09ORklHX01QVENQIGlzIG5vdCBzZXQKQ09ORklHX05F
VFdPUktfU0VDTUFSSz15CkNPTkZJR19ORVRfUFRQX0NMQVNTSUZZPXkKIyBDT05GSUdfTkVU
V09SS19QSFlfVElNRVNUQU1QSU5HIGlzIG5vdCBzZXQKQ09ORklHX05FVEZJTFRFUj15CkNP
TkZJR19ORVRGSUxURVJfQURWQU5DRUQ9eQpDT05GSUdfQlJJREdFX05FVEZJTFRFUj1tCgoj
CiMgQ29yZSBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgojCkNPTkZJR19ORVRGSUxURVJfSU5H
UkVTUz15CkNPTkZJR19ORVRGSUxURVJfRUdSRVNTPXkKQ09ORklHX05FVEZJTFRFUl9TS0lQ
X0VHUkVTUz15CkNPTkZJR19ORVRGSUxURVJfTkVUTElOSz1tCkNPTkZJR19ORVRGSUxURVJf
RkFNSUxZX0JSSURHRT15CkNPTkZJR19ORVRGSUxURVJfRkFNSUxZX0FSUD15CiMgQ09ORklH
X05FVEZJTFRFUl9ORVRMSU5LX0hPT0sgaXMgbm90IHNldApDT05GSUdfTkVURklMVEVSX05F
VExJTktfQUNDVD1tCkNPTkZJR19ORVRGSUxURVJfTkVUTElOS19RVUVVRT1tCkNPTkZJR19O
RVRGSUxURVJfTkVUTElOS19MT0c9bQpDT05GSUdfTkVURklMVEVSX05FVExJTktfT1NGPW0K
Q09ORklHX05GX0NPTk5UUkFDSz1tCiMgQ09ORklHX05GX0xPR19TWVNMT0cgaXMgbm90IHNl
dApDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVD1tCkNPTkZJR19ORl9DT05OVFJBQ0tfTUFS
Sz15CkNPTkZJR19ORl9DT05OVFJBQ0tfU0VDTUFSSz15CkNPTkZJR19ORl9DT05OVFJBQ0tf
Wk9ORVM9eQpDT05GSUdfTkZfQ09OTlRSQUNLX1BST0NGUz15CkNPTkZJR19ORl9DT05OVFJB
Q0tfRVZFTlRTPXkKQ09ORklHX05GX0NPTk5UUkFDS19USU1FT1VUPXkKQ09ORklHX05GX0NP
Tk5UUkFDS19USU1FU1RBTVA9eQpDT05GSUdfTkZfQ09OTlRSQUNLX0xBQkVMUz15CkNPTkZJ
R19ORl9DT05OVFJBQ0tfT1ZTPXkKQ09ORklHX05GX0NUX1BST1RPX0RDQ1A9eQpDT05GSUdf
TkZfQ1RfUFJPVE9fR1JFPXkKQ09ORklHX05GX0NUX1BST1RPX1NDVFA9eQojIENPTkZJR19O
Rl9DVF9QUk9UT19VRFBMSVRFIGlzIG5vdCBzZXQKQ09ORklHX05GX0NPTk5UUkFDS19BTUFO
REE9bQpDT05GSUdfTkZfQ09OTlRSQUNLX0ZUUD1tCkNPTkZJR19ORl9DT05OVFJBQ0tfSDMy
Mz1tCkNPTkZJR19ORl9DT05OVFJBQ0tfSVJDPW0KQ09ORklHX05GX0NPTk5UUkFDS19CUk9B
RENBU1Q9bQpDT05GSUdfTkZfQ09OTlRSQUNLX05FVEJJT1NfTlM9bQpDT05GSUdfTkZfQ09O
TlRSQUNLX1NOTVA9bQpDT05GSUdfTkZfQ09OTlRSQUNLX1BQVFA9bQpDT05GSUdfTkZfQ09O
TlRSQUNLX1NBTkU9bQpDT05GSUdfTkZfQ09OTlRSQUNLX1NJUD1tCkNPTkZJR19ORl9DT05O
VFJBQ0tfVEZUUD1tCkNPTkZJR19ORl9DVF9ORVRMSU5LPW0KQ09ORklHX05GX0NUX05FVExJ
TktfVElNRU9VVD1tCiMgQ09ORklHX05FVEZJTFRFUl9ORVRMSU5LX0dMVUVfQ1QgaXMgbm90
IHNldApDT05GSUdfTkZfTkFUPW0KQ09ORklHX05GX05BVF9BTUFOREE9bQpDT05GSUdfTkZf
TkFUX0ZUUD1tCkNPTkZJR19ORl9OQVRfSVJDPW0KQ09ORklHX05GX05BVF9TSVA9bQpDT05G
SUdfTkZfTkFUX1RGVFA9bQpDT05GSUdfTkZfTkFUX1JFRElSRUNUPXkKQ09ORklHX05GX05B
VF9PVlM9eQpDT05GSUdfTkVURklMVEVSX1NZTlBST1hZPW0KQ09ORklHX05GX1RBQkxFUz1t
CiMgQ09ORklHX05GX1RBQkxFU19JTkVUIGlzIG5vdCBzZXQKIyBDT05GSUdfTkZfVEFCTEVT
X05FVERFViBpcyBub3Qgc2V0CiMgQ09ORklHX05GVF9OVU1HRU4gaXMgbm90IHNldApDT05G
SUdfTkZUX0NUPW0KIyBDT05GSUdfTkZUX0NPTk5MSU1JVCBpcyBub3Qgc2V0CkNPTkZJR19O
RlRfTE9HPW0KQ09ORklHX05GVF9MSU1JVD1tCiMgQ09ORklHX05GVF9NQVNRIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkZUX1JFRElSIGlzIG5vdCBzZXQKIyBDT05GSUdfTkZUX1RVTk5FTCBp
cyBub3Qgc2V0CkNPTkZJR19ORlRfUVVFVUU9bQojIENPTkZJR19ORlRfUVVPVEEgaXMgbm90
IHNldApDT05GSUdfTkZUX1JFSkVDVD1tCkNPTkZJR19ORlRfQ09NUEFUPW0KQ09ORklHX05G
VF9IQVNIPW0KIyBDT05GSUdfTkZUX1hGUk0gaXMgbm90IHNldAojIENPTkZJR19ORlRfU09D
S0VUIGlzIG5vdCBzZXQKIyBDT05GSUdfTkZUX09TRiBpcyBub3Qgc2V0CiMgQ09ORklHX05G
VF9UUFJPWFkgaXMgbm90IHNldAojIENPTkZJR19ORlRfU1lOUFJPWFkgaXMgbm90IHNldAoj
IENPTkZJR19ORl9GTE9XX1RBQkxFIGlzIG5vdCBzZXQKQ09ORklHX05FVEZJTFRFUl9YVEFC
TEVTPW0KCiMKIyBYdGFibGVzIGNvbWJpbmVkIG1vZHVsZXMKIwpDT05GSUdfTkVURklMVEVS
X1hUX01BUks9bQpDT05GSUdfTkVURklMVEVSX1hUX0NPTk5NQVJLPW0KQ09ORklHX05FVEZJ
TFRFUl9YVF9TRVQ9bQoKIwojIFh0YWJsZXMgdGFyZ2V0cwojCkNPTkZJR19ORVRGSUxURVJf
WFRfVEFSR0VUX0FVRElUPW0KQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ0hFQ0tTVU09
bQpDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWT1tCkNPTkZJR19ORVRGSUxU
RVJfWFRfVEFSR0VUX0NPTk5NQVJLPW0KQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfQ09O
TlNFQ01BUks9bQpDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9DVD1tCkNPTkZJR19ORVRG
SUxURVJfWFRfVEFSR0VUX0RTQ1A9bQpDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9ITD1t
CkNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX0hNQVJLPW0KQ09ORklHX05FVEZJTFRFUl9Y
VF9UQVJHRVRfSURMRVRJTUVSPW0KQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTEVEPW0K
IyBDT05GSUdfTkVURklMVEVSX1hUX1RBUkdFVF9MT0cgaXMgbm90IHNldApDT05GSUdfTkVU
RklMVEVSX1hUX1RBUkdFVF9NQVJLPW0KIyBDT05GSUdfTkVURklMVEVSX1hUX05BVCBpcyBu
b3Qgc2V0CkNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX05FVE1BUD1tCkNPTkZJR19ORVRG
SUxURVJfWFRfVEFSR0VUX05GTE9HPW0KQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTkZR
VUVVRT1tCiMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTk9UUkFDSyBpcyBub3Qgc2V0
CkNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1JBVEVFU1Q9bQpDT05GSUdfTkVURklMVEVS
X1hUX1RBUkdFVF9SRURJUkVDVD1tCiMgQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfTUFT
UVVFUkFERSBpcyBub3Qgc2V0CkNPTkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RFRT1tCkNP
TkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RQUk9YWT1tCkNPTkZJR19ORVRGSUxURVJfWFRf
VEFSR0VUX1RSQUNFPW0KQ09ORklHX05FVEZJTFRFUl9YVF9UQVJHRVRfU0VDTUFSSz1tCkNP
TkZJR19ORVRGSUxURVJfWFRfVEFSR0VUX1RDUE1TUz1tCkNPTkZJR19ORVRGSUxURVJfWFRf
VEFSR0VUX1RDUE9QVFNUUklQPW0KCiMKIyBYdGFibGVzIG1hdGNoZXMKIwpDT05GSUdfTkVU
RklMVEVSX1hUX01BVENIX0FERFJUWVBFPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9C
UEY9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NHUk9VUD1tCkNPTkZJR19ORVRGSUxU
RVJfWFRfTUFUQ0hfQ0xVU1RFUj1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09NTUVO
VD1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkJZVEVTPW0KQ09ORklHX05FVEZJ
TFRFUl9YVF9NQVRDSF9DT05OTEFCRUw9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0NP
Tk5MSU1JVD1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUks9bQpDT05GSUdf
TkVURklMVEVSX1hUX01BVENIX0NPTk5UUkFDSz1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFU
Q0hfQ1BVPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9EQ0NQPW0KQ09ORklHX05FVEZJ
TFRFUl9YVF9NQVRDSF9ERVZHUk9VUD1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRFND
UD1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfRUNOPW0KQ09ORklHX05FVEZJTFRFUl9Y
VF9NQVRDSF9FU1A9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0hBU0hMSU1JVD1tCkNP
TkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSEVMUEVSPW0KQ09ORklHX05FVEZJTFRFUl9YVF9N
QVRDSF9ITD1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfSVBDT01QPW0KQ09ORklHX05F
VEZJTFRFUl9YVF9NQVRDSF9JUFJBTkdFPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9J
UFZTPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9MMlRQPW0KQ09ORklHX05FVEZJTFRF
Ul9YVF9NQVRDSF9MRU5HVEg9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX0xJTUlUPW0K
Q09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9NQUM9bQpDT05GSUdfTkVURklMVEVSX1hUX01B
VENIX01BUks9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX01VTFRJUE9SVD1tCkNPTkZJ
R19ORVRGSUxURVJfWFRfTUFUQ0hfTkZBQ0NUPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRD
SF9PU0Y9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX09XTkVSPW0KQ09ORklHX05FVEZJ
TFRFUl9YVF9NQVRDSF9QT0xJQ1k9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BIWVNE
RVY9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1BLVFRZUEU9bQpDT05GSUdfTkVURklM
VEVSX1hUX01BVENIX1FVT1RBPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNU
PW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9SRUFMTT1tCkNPTkZJR19ORVRGSUxURVJf
WFRfTUFUQ0hfUkVDRU5UPW0KQ09ORklHX05FVEZJTFRFUl9YVF9NQVRDSF9TQ1RQPW0KIyBD
T05GSUdfTkVURklMVEVSX1hUX01BVENIX1NPQ0tFVCBpcyBub3Qgc2V0CkNPTkZJR19ORVRG
SUxURVJfWFRfTUFUQ0hfU1RBVEU9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NUQVRJ
U1RJQz1tCkNPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RSSU5HPW0KQ09ORklHX05FVEZJ
TFRFUl9YVF9NQVRDSF9UQ1BNU1M9bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1RJTUU9
bQpDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1UzMj1tCiMgZW5kIG9mIENvcmUgTmV0Zmls
dGVyIENvbmZpZ3VyYXRpb24KCkNPTkZJR19JUF9TRVQ9bQpDT05GSUdfSVBfU0VUX01BWD0y
NTYKQ09ORklHX0lQX1NFVF9CSVRNQVBfSVA9bQpDT05GSUdfSVBfU0VUX0JJVE1BUF9JUE1B
Qz1tCkNPTkZJR19JUF9TRVRfQklUTUFQX1BPUlQ9bQpDT05GSUdfSVBfU0VUX0hBU0hfSVA9
bQojIENPTkZJR19JUF9TRVRfSEFTSF9JUE1BUksgaXMgbm90IHNldApDT05GSUdfSVBfU0VU
X0hBU0hfSVBQT1JUPW0KQ09ORklHX0lQX1NFVF9IQVNIX0lQUE9SVElQPW0KQ09ORklHX0lQ
X1NFVF9IQVNIX0lQUE9SVE5FVD1tCiMgQ09ORklHX0lQX1NFVF9IQVNIX0lQTUFDIGlzIG5v
dCBzZXQKIyBDT05GSUdfSVBfU0VUX0hBU0hfTUFDIGlzIG5vdCBzZXQKQ09ORklHX0lQX1NF
VF9IQVNIX05FVFBPUlRORVQ9bQpDT05GSUdfSVBfU0VUX0hBU0hfTkVUPW0KQ09ORklHX0lQ
X1NFVF9IQVNIX05FVE5FVD1tCkNPTkZJR19JUF9TRVRfSEFTSF9ORVRQT1JUPW0KQ09ORklH
X0lQX1NFVF9IQVNIX05FVElGQUNFPW0KQ09ORklHX0lQX1NFVF9MSVNUX1NFVD1tCkNPTkZJ
R19JUF9WUz1tCkNPTkZJR19JUF9WU19JUFY2PXkKIyBDT05GSUdfSVBfVlNfREVCVUcgaXMg
bm90IHNldApDT05GSUdfSVBfVlNfVEFCX0JJVFM9MTIKCiMKIyBJUFZTIHRyYW5zcG9ydCBw
cm90b2NvbCBsb2FkIGJhbGFuY2luZyBzdXBwb3J0CiMKQ09ORklHX0lQX1ZTX1BST1RPX1RD
UD15CkNPTkZJR19JUF9WU19QUk9UT19VRFA9eQpDT05GSUdfSVBfVlNfUFJPVE9fQUhfRVNQ
PXkKQ09ORklHX0lQX1ZTX1BST1RPX0VTUD15CkNPTkZJR19JUF9WU19QUk9UT19BSD15CkNP
TkZJR19JUF9WU19QUk9UT19TQ1RQPXkKCiMKIyBJUFZTIHNjaGVkdWxlcgojCkNPTkZJR19J
UF9WU19SUj1tCkNPTkZJR19JUF9WU19XUlI9bQpDT05GSUdfSVBfVlNfTEM9bQpDT05GSUdf
SVBfVlNfV0xDPW0KIyBDT05GSUdfSVBfVlNfRk8gaXMgbm90IHNldAojIENPTkZJR19JUF9W
U19PVkYgaXMgbm90IHNldApDT05GSUdfSVBfVlNfTEJMQz1tCkNPTkZJR19JUF9WU19MQkxD
Uj1tCkNPTkZJR19JUF9WU19ESD1tCkNPTkZJR19JUF9WU19TSD1tCiMgQ09ORklHX0lQX1ZT
X01IIGlzIG5vdCBzZXQKQ09ORklHX0lQX1ZTX1NFRD1tCkNPTkZJR19JUF9WU19OUT1tCiMg
Q09ORklHX0lQX1ZTX1RXT1MgaXMgbm90IHNldAoKIwojIElQVlMgU0ggc2NoZWR1bGVyCiMK
Q09ORklHX0lQX1ZTX1NIX1RBQl9CSVRTPTgKCiMKIyBJUFZTIE1IIHNjaGVkdWxlcgojCkNP
TkZJR19JUF9WU19NSF9UQUJfSU5ERVg9MTIKCiMKIyBJUFZTIGFwcGxpY2F0aW9uIGhlbHBl
cgojCkNPTkZJR19JUF9WU19GVFA9bQpDT05GSUdfSVBfVlNfTkZDVD15CkNPTkZJR19JUF9W
U19QRV9TSVA9bQoKIwojIElQOiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlvbgojCkNPTkZJR19O
Rl9ERUZSQUdfSVBWND1tCkNPTkZJR19JUF9ORl9JUFRBQkxFU19MRUdBQ1k9bQojIENPTkZJ
R19ORl9TT0NLRVRfSVBWNCBpcyBub3Qgc2V0CkNPTkZJR19ORl9UUFJPWFlfSVBWND1tCiMg
Q09ORklHX05GX1RBQkxFU19JUFY0IGlzIG5vdCBzZXQKIyBDT05GSUdfTkZfVEFCTEVTX0FS
UCBpcyBub3Qgc2V0CkNPTkZJR19ORl9EVVBfSVBWND1tCiMgQ09ORklHX05GX0xPR19BUlAg
aXMgbm90IHNldAojIENPTkZJR19ORl9MT0dfSVBWNCBpcyBub3Qgc2V0CkNPTkZJR19ORl9S
RUpFQ1RfSVBWND1tCkNPTkZJR19ORl9OQVRfU05NUF9CQVNJQz1tCkNPTkZJR19ORl9OQVRf
UFBUUD1tCkNPTkZJR19ORl9OQVRfSDMyMz1tCkNPTkZJR19JUF9ORl9JUFRBQkxFUz1tCkNP
TkZJR19JUF9ORl9NQVRDSF9BSD1tCiMgQ09ORklHX0lQX05GX01BVENIX0VDTiBpcyBub3Qg
c2V0CkNPTkZJR19JUF9ORl9NQVRDSF9SUEZJTFRFUj1tCiMgQ09ORklHX0lQX05GX01BVENI
X1RUTCBpcyBub3Qgc2V0CkNPTkZJR19JUF9ORl9GSUxURVI9bQpDT05GSUdfSVBfTkZfVEFS
R0VUX1JFSkVDVD1tCkNPTkZJR19JUF9ORl9UQVJHRVRfU1lOUFJPWFk9bQojIENPTkZJR19J
UF9ORl9OQVQgaXMgbm90IHNldApDT05GSUdfSVBfTkZfTUFOR0xFPW0KQ09ORklHX0lQX05G
X1RBUkdFVF9FQ049bQojIENPTkZJR19JUF9ORl9UQVJHRVRfVFRMIGlzIG5vdCBzZXQKQ09O
RklHX0lQX05GX1JBVz1tCkNPTkZJR19JUF9ORl9BUlBUQUJMRVM9bQpDT05GSUdfSVBfTkZf
QVJQRklMVEVSPW0KQ09ORklHX0lQX05GX0FSUF9NQU5HTEU9bQojIGVuZCBvZiBJUDogTmV0
ZmlsdGVyIENvbmZpZ3VyYXRpb24KCiMKIyBJUHY2OiBOZXRmaWx0ZXIgQ29uZmlndXJhdGlv
bgojCkNPTkZJR19JUDZfTkZfSVBUQUJMRVNfTEVHQUNZPW0KIyBDT05GSUdfTkZfU09DS0VU
X0lQVjYgaXMgbm90IHNldApDT05GSUdfTkZfVFBST1hZX0lQVjY9bQojIENPTkZJR19ORl9U
QUJMRVNfSVBWNiBpcyBub3Qgc2V0CkNPTkZJR19ORl9EVVBfSVBWNj1tCkNPTkZJR19ORl9S
RUpFQ1RfSVBWNj1tCiMgQ09ORklHX05GX0xPR19JUFY2IGlzIG5vdCBzZXQKQ09ORklHX0lQ
Nl9ORl9JUFRBQkxFUz1tCkNPTkZJR19JUDZfTkZfTUFUQ0hfQUg9bQpDT05GSUdfSVA2X05G
X01BVENIX0VVSTY0PW0KQ09ORklHX0lQNl9ORl9NQVRDSF9GUkFHPW0KQ09ORklHX0lQNl9O
Rl9NQVRDSF9PUFRTPW0KIyBDT05GSUdfSVA2X05GX01BVENIX0hMIGlzIG5vdCBzZXQKQ09O
RklHX0lQNl9ORl9NQVRDSF9JUFY2SEVBREVSPW0KQ09ORklHX0lQNl9ORl9NQVRDSF9NSD1t
CkNPTkZJR19JUDZfTkZfTUFUQ0hfUlBGSUxURVI9bQpDT05GSUdfSVA2X05GX01BVENIX1JU
PW0KIyBDT05GSUdfSVA2X05GX01BVENIX1NSSCBpcyBub3Qgc2V0CiMgQ09ORklHX0lQNl9O
Rl9UQVJHRVRfSEwgaXMgbm90IHNldApDT05GSUdfSVA2X05GX0ZJTFRFUj1tCkNPTkZJR19J
UDZfTkZfVEFSR0VUX1JFSkVDVD1tCkNPTkZJR19JUDZfTkZfVEFSR0VUX1NZTlBST1hZPW0K
Q09ORklHX0lQNl9ORl9NQU5HTEU9bQpDT05GSUdfSVA2X05GX1JBVz1tCiMgQ09ORklHX0lQ
Nl9ORl9OQVQgaXMgbm90IHNldAojIENPTkZJR19JUDZfTkZfVEFSR0VUX05QVCBpcyBub3Qg
c2V0CiMgZW5kIG9mIElQdjY6IE5ldGZpbHRlciBDb25maWd1cmF0aW9uCgpDT05GSUdfTkZf
REVGUkFHX0lQVjY9bQojIENPTkZJR19ORl9UQUJMRVNfQlJJREdFIGlzIG5vdCBzZXQKIyBD
T05GSUdfTkZfQ09OTlRSQUNLX0JSSURHRSBpcyBub3Qgc2V0CkNPTkZJR19CUklER0VfTkZf
RUJUQUJMRVNfTEVHQUNZPW0KQ09ORklHX0JSSURHRV9ORl9FQlRBQkxFUz1tCkNPTkZJR19C
UklER0VfRUJUX0JST1VURT1tCkNPTkZJR19CUklER0VfRUJUX1RfRklMVEVSPW0KQ09ORklH
X0JSSURHRV9FQlRfVF9OQVQ9bQpDT05GSUdfQlJJREdFX0VCVF84MDJfMz1tCkNPTkZJR19C
UklER0VfRUJUX0FNT05HPW0KQ09ORklHX0JSSURHRV9FQlRfQVJQPW0KQ09ORklHX0JSSURH
RV9FQlRfSVA9bQpDT05GSUdfQlJJREdFX0VCVF9JUDY9bQpDT05GSUdfQlJJREdFX0VCVF9M
SU1JVD1tCkNPTkZJR19CUklER0VfRUJUX01BUks9bQpDT05GSUdfQlJJREdFX0VCVF9QS1RU
WVBFPW0KQ09ORklHX0JSSURHRV9FQlRfU1RQPW0KQ09ORklHX0JSSURHRV9FQlRfVkxBTj1t
CkNPTkZJR19CUklER0VfRUJUX0FSUFJFUExZPW0KQ09ORklHX0JSSURHRV9FQlRfRE5BVD1t
CkNPTkZJR19CUklER0VfRUJUX01BUktfVD1tCkNPTkZJR19CUklER0VfRUJUX1JFRElSRUNU
PW0KQ09ORklHX0JSSURHRV9FQlRfU05BVD1tCkNPTkZJR19CUklER0VfRUJUX0xPRz1tCkNP
TkZJR19CUklER0VfRUJUX05GTE9HPW0KQ09ORklHX0lQX0RDQ1A9bQpDT05GSUdfSU5FVF9E
Q0NQX0RJQUc9bQoKIwojIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbgojCiMgQ09ORklHX0lQ
X0RDQ1BfQ0NJRDJfREVCVUcgaXMgbm90IHNldApDT05GSUdfSVBfRENDUF9DQ0lEMz15CiMg
Q09ORklHX0lQX0RDQ1BfQ0NJRDNfREVCVUcgaXMgbm90IHNldApDT05GSUdfSVBfRENDUF9U
RlJDX0xJQj15CiMgZW5kIG9mIERDQ1AgQ0NJRHMgQ29uZmlndXJhdGlvbgoKIwojIERDQ1Ag
S2VybmVsIEhhY2tpbmcKIwojIENPTkZJR19JUF9EQ0NQX0RFQlVHIGlzIG5vdCBzZXQKIyBl
bmQgb2YgRENDUCBLZXJuZWwgSGFja2luZwoKQ09ORklHX0lQX1NDVFA9bQojIENPTkZJR19T
Q1RQX0RCR19PQkpDTlQgaXMgbm90IHNldApDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9I
TUFDX01ENT15CiMgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEExIGlzIG5v
dCBzZXQKIyBDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUgaXMgbm90IHNl
dApDT05GSUdfU0NUUF9DT09LSUVfSE1BQ19NRDU9eQpDT05GSUdfU0NUUF9DT09LSUVfSE1B
Q19TSEExPXkKQ09ORklHX0lORVRfU0NUUF9ESUFHPW0KQ09ORklHX1JEUz1tCkNPTkZJR19S
RFNfVENQPW0KIyBDT05GSUdfUkRTX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1RJUEM9bQpD
T05GSUdfVElQQ19NRURJQV9VRFA9eQojIENPTkZJR19USVBDX0NSWVBUTyBpcyBub3Qgc2V0
CiMgQ09ORklHX1RJUENfRElBRyBpcyBub3Qgc2V0CkNPTkZJR19BVE09bQpDT05GSUdfQVRN
X0NMSVA9bQojIENPTkZJR19BVE1fQ0xJUF9OT19JQ01QIGlzIG5vdCBzZXQKQ09ORklHX0FU
TV9MQU5FPW0KQ09ORklHX0FUTV9NUE9BPW0KQ09ORklHX0FUTV9CUjI2ODQ9bQojIENPTkZJ
R19BVE1fQlIyNjg0X0lQRklMVEVSIGlzIG5vdCBzZXQKQ09ORklHX0wyVFA9bQpDT05GSUdf
TDJUUF9ERUJVR0ZTPW0KQ09ORklHX0wyVFBfVjM9eQpDT05GSUdfTDJUUF9JUD1tCkNPTkZJ
R19MMlRQX0VUSD1tCkNPTkZJR19TVFA9bQpDT05GSUdfR0FSUD1tCkNPTkZJR19NUlA9bQpD
T05GSUdfQlJJREdFPW0KQ09ORklHX0JSSURHRV9JR01QX1NOT09QSU5HPXkKQ09ORklHX0JS
SURHRV9WTEFOX0ZJTFRFUklORz15CiMgQ09ORklHX0JSSURHRV9NUlAgaXMgbm90IHNldAoj
IENPTkZJR19CUklER0VfQ0ZNIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0RTQSBpcyBub3Qg
c2V0CkNPTkZJR19WTEFOXzgwMjFRPW0KQ09ORklHX1ZMQU5fODAyMVFfR1ZSUD15CkNPTkZJ
R19WTEFOXzgwMjFRX01WUlA9eQpDT05GSUdfTExDPW0KQ09ORklHX0xMQzI9bQpDT05GSUdf
QVRBTEs9bQojIENPTkZJR19YMjUgaXMgbm90IHNldApDT05GSUdfTEFQQj1tCkNPTkZJR19Q
SE9ORVQ9bQojIENPTkZJR182TE9XUEFOIGlzIG5vdCBzZXQKQ09ORklHX0lFRUU4MDIxNTQ9
bQojIENPTkZJR19JRUVFODAyMTU0X05MODAyMTU0X0VYUEVSSU1FTlRBTCBpcyBub3Qgc2V0
CkNPTkZJR19JRUVFODAyMTU0X1NPQ0tFVD1tCiMgQ09ORklHX01BQzgwMjE1NCBpcyBub3Qg
c2V0CkNPTkZJR19ORVRfU0NIRUQ9eQoKIwojIFF1ZXVlaW5nL1NjaGVkdWxpbmcKIwpDT05G
SUdfTkVUX1NDSF9IVEI9bQpDT05GSUdfTkVUX1NDSF9IRlNDPW0KQ09ORklHX05FVF9TQ0hf
UFJJTz1tCkNPTkZJR19ORVRfU0NIX01VTFRJUT1tCkNPTkZJR19ORVRfU0NIX1JFRD1tCkNP
TkZJR19ORVRfU0NIX1NGQj1tCkNPTkZJR19ORVRfU0NIX1NGUT1tCkNPTkZJR19ORVRfU0NI
X1RFUUw9bQpDT05GSUdfTkVUX1NDSF9UQkY9bQojIENPTkZJR19ORVRfU0NIX0NCUyBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9TQ0hfRVRGIGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hf
TVFQUklPX0xJQj1tCiMgQ09ORklHX05FVF9TQ0hfVEFQUklPIGlzIG5vdCBzZXQKQ09ORklH
X05FVF9TQ0hfR1JFRD1tCkNPTkZJR19ORVRfU0NIX05FVEVNPW0KQ09ORklHX05FVF9TQ0hf
RFJSPW0KQ09ORklHX05FVF9TQ0hfTVFQUklPPW0KIyBDT05GSUdfTkVUX1NDSF9TS0JQUklP
IGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hfQ0hPS0U9bQpDT05GSUdfTkVUX1NDSF9RRlE9
bQpDT05GSUdfTkVUX1NDSF9DT0RFTD1tCkNPTkZJR19ORVRfU0NIX0ZRX0NPREVMPW0KIyBD
T05GSUdfTkVUX1NDSF9DQUtFIGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hfRlE9bQpDT05G
SUdfTkVUX1NDSF9ISEY9bQpDT05GSUdfTkVUX1NDSF9QSUU9bQojIENPTkZJR19ORVRfU0NI
X0ZRX1BJRSBpcyBub3Qgc2V0CkNPTkZJR19ORVRfU0NIX0lOR1JFU1M9bQpDT05GSUdfTkVU
X1NDSF9QTFVHPW0KIyBDT05GSUdfTkVUX1NDSF9FVFMgaXMgbm90IHNldAojIENPTkZJR19O
RVRfU0NIX0RFRkFVTFQgaXMgbm90IHNldAoKIwojIENsYXNzaWZpY2F0aW9uCiMKQ09ORklH
X05FVF9DTFM9eQpDT05GSUdfTkVUX0NMU19CQVNJQz1tCkNPTkZJR19ORVRfQ0xTX1JPVVRF
ND1tCkNPTkZJR19ORVRfQ0xTX0ZXPW0KQ09ORklHX05FVF9DTFNfVTMyPW0KQ09ORklHX0NM
U19VMzJfUEVSRj15CkNPTkZJR19DTFNfVTMyX01BUks9eQpDT05GSUdfTkVUX0NMU19GTE9X
PW0KQ09ORklHX05FVF9DTFNfQ0dST1VQPW0KQ09ORklHX05FVF9DTFNfQlBGPW0KIyBDT05G
SUdfTkVUX0NMU19GTE9XRVIgaXMgbm90IHNldAojIENPTkZJR19ORVRfQ0xTX01BVENIQUxM
IGlzIG5vdCBzZXQKQ09ORklHX05FVF9FTUFUQ0g9eQpDT05GSUdfTkVUX0VNQVRDSF9TVEFD
Sz0zMgpDT05GSUdfTkVUX0VNQVRDSF9DTVA9bQpDT05GSUdfTkVUX0VNQVRDSF9OQllURT1t
CkNPTkZJR19ORVRfRU1BVENIX1UzMj1tCkNPTkZJR19ORVRfRU1BVENIX01FVEE9bQpDT05G
SUdfTkVUX0VNQVRDSF9URVhUPW0KQ09ORklHX05FVF9FTUFUQ0hfSVBTRVQ9bQojIENPTkZJ
R19ORVRfRU1BVENIX0lQVCBpcyBub3Qgc2V0CkNPTkZJR19ORVRfQ0xTX0FDVD15CkNPTkZJ
R19ORVRfQUNUX1BPTElDRT1tCkNPTkZJR19ORVRfQUNUX0dBQ1Q9bQpDT05GSUdfR0FDVF9Q
Uk9CPXkKQ09ORklHX05FVF9BQ1RfTUlSUkVEPW0KIyBDT05GSUdfTkVUX0FDVF9TQU1QTEUg
aXMgbm90IHNldApDT05GSUdfTkVUX0FDVF9OQVQ9bQpDT05GSUdfTkVUX0FDVF9QRURJVD1t
CkNPTkZJR19ORVRfQUNUX1NJTVA9bQpDT05GSUdfTkVUX0FDVF9TS0JFRElUPW0KQ09ORklH
X05FVF9BQ1RfQ1NVTT1tCiMgQ09ORklHX05FVF9BQ1RfTVBMUyBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9BQ1RfVkxBTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9BQ1RfQlBGIGlzIG5v
dCBzZXQKIyBDT05GSUdfTkVUX0FDVF9DT05OTUFSSyBpcyBub3Qgc2V0CiMgQ09ORklHX05F
VF9BQ1RfQ1RJTkZPIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0FDVF9TS0JNT0QgaXMgbm90
IHNldAojIENPTkZJR19ORVRfQUNUX0lGRSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9BQ1Rf
VFVOTkVMX0tFWSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9BQ1RfR0FURSBpcyBub3Qgc2V0
CiMgQ09ORklHX05FVF9UQ19TS0JfRVhUIGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hfRklG
Tz15CkNPTkZJR19EQ0I9eQpDT05GSUdfRE5TX1JFU09MVkVSPW0KQ09ORklHX0JBVE1BTl9B
RFY9bQojIENPTkZJR19CQVRNQU5fQURWX0JBVE1BTl9WIGlzIG5vdCBzZXQKQ09ORklHX0JB
VE1BTl9BRFZfQkxBPXkKQ09ORklHX0JBVE1BTl9BRFZfREFUPXkKQ09ORklHX0JBVE1BTl9B
RFZfTkM9eQojIENPTkZJR19CQVRNQU5fQURWX01DQVNUIGlzIG5vdCBzZXQKIyBDT05GSUdf
QkFUTUFOX0FEVl9ERUJVRyBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVE1BTl9BRFZfVFJBQ0lO
RyBpcyBub3Qgc2V0CkNPTkZJR19PUEVOVlNXSVRDSD1tCkNPTkZJR19PUEVOVlNXSVRDSF9H
UkU9bQpDT05GSUdfVlNPQ0tFVFM9bQpDT05GSUdfVlNPQ0tFVFNfRElBRz1tCkNPTkZJR19W
U09DS0VUU19MT09QQkFDSz1tCkNPTkZJR19WTVdBUkVfVk1DSV9WU09DS0VUUz1tCiMgQ09O
RklHX1ZJUlRJT19WU09DS0VUUyBpcyBub3Qgc2V0CkNPTkZJR19WSVJUSU9fVlNPQ0tFVFNf
Q09NTU9OPW0KIyBDT05GSUdfSFlQRVJWX1ZTT0NLRVRTIGlzIG5vdCBzZXQKQ09ORklHX05F
VExJTktfRElBRz1tCkNPTkZJR19NUExTPXkKQ09ORklHX05FVF9NUExTX0dTTz15CiMgQ09O
RklHX01QTFNfUk9VVElORyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfTlNIPW0KIyBDT05GSUdf
SFNSIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1NXSVRDSERFViBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9MM19NQVNURVJfREVWIGlzIG5vdCBzZXQKIyBDT05GSUdfUVJUUiBpcyBub3Qg
c2V0CiMgQ09ORklHX05FVF9OQ1NJIGlzIG5vdCBzZXQKQ09ORklHX1BDUFVfREVWX1JFRkNO
VD15CkNPTkZJR19NQVhfU0tCX0ZSQUdTPTE3CkNPTkZJR19SUFM9eQpDT05GSUdfUkZTX0FD
Q0VMPXkKQ09ORklHX1NPQ0tfUlhfUVVFVUVfTUFQUElORz15CkNPTkZJR19YUFM9eQojIENP
TkZJR19DR1JPVVBfTkVUX1BSSU8gaXMgbm90IHNldApDT05GSUdfQ0dST1VQX05FVF9DTEFT
U0lEPXkKQ09ORklHX05FVF9SWF9CVVNZX1BPTEw9eQpDT05GSUdfQlFMPXkKQ09ORklHX05F
VF9GTE9XX0xJTUlUPXkKCiMKIyBOZXR3b3JrIHRlc3RpbmcKIwpDT05GSUdfTkVUX1BLVEdF
Tj1tCkNPTkZJR19ORVRfRFJPUF9NT05JVE9SPW0KIyBlbmQgb2YgTmV0d29yayB0ZXN0aW5n
CiMgZW5kIG9mIE5ldHdvcmtpbmcgb3B0aW9ucwoKIyBDT05GSUdfSEFNUkFESU8gaXMgbm90
IHNldAojIENPTkZJR19DQU4gaXMgbm90IHNldAojIENPTkZJR19CVCBpcyBub3Qgc2V0CiMg
Q09ORklHX0FGX1JYUlBDIGlzIG5vdCBzZXQKIyBDT05GSUdfQUZfS0NNIGlzIG5vdCBzZXQK
IyBDT05GSUdfTUNUUCBpcyBub3Qgc2V0CkNPTkZJR19GSUJfUlVMRVM9eQojIENPTkZJR19X
SVJFTEVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CkNPTkZJR19O
RVRfOVA9eQpDT05GSUdfTkVUXzlQX0ZEPXkKIyBDT05GSUdfTkVUXzlQX1ZJUlRJTyBpcyBu
b3Qgc2V0CkNPTkZJR19ORVRfOVBfWEVOPXkKIyBDT05GSUdfTkVUXzlQX0RFQlVHIGlzIG5v
dCBzZXQKIyBDT05GSUdfQ0FJRiBpcyBub3Qgc2V0CiMgQ09ORklHX0NFUEhfTElCIGlzIG5v
dCBzZXQKIyBDT05GSUdfTkZDIGlzIG5vdCBzZXQKIyBDT05GSUdfUFNBTVBMRSBpcyBub3Qg
c2V0CiMgQ09ORklHX05FVF9JRkUgaXMgbm90IHNldAojIENPTkZJR19MV1RVTk5FTCBpcyBu
b3Qgc2V0CkNPTkZJR19EU1RfQ0FDSEU9eQpDT05GSUdfR1JPX0NFTExTPXkKQ09ORklHX05F
VF9TRUxGVEVTVFM9bQpDT05GSUdfUEFHRV9QT09MPXkKIyBDT05GSUdfUEFHRV9QT09MX1NU
QVRTIGlzIG5vdCBzZXQKQ09ORklHX0ZBSUxPVkVSPW0KQ09ORklHX0VUSFRPT0xfTkVUTElO
Sz15CgojCiMgRGV2aWNlIERyaXZlcnMKIwpDT05GSUdfSEFWRV9FSVNBPXkKIyBDT05GSUdf
RUlTQSBpcyBub3Qgc2V0CkNPTkZJR19IQVZFX1BDST15CkNPTkZJR19HRU5FUklDX1BDSV9J
T01BUD15CkNPTkZJR19QQ0k9eQpDT05GSUdfUENJX0RPTUFJTlM9eQpDT05GSUdfUENJRVBP
UlRCVVM9eQpDT05GSUdfUENJRUFFUj15CkNPTkZJR19QQ0lFQUVSX0lOSkVDVD1tCiMgQ09O
RklHX1BDSUVfRUNSQyBpcyBub3Qgc2V0CkNPTkZJR19QQ0lFQVNQTT15CkNPTkZJR19QQ0lF
QVNQTV9ERUZBVUxUPXkKIyBDT05GSUdfUENJRUFTUE1fUE9XRVJTQVZFIGlzIG5vdCBzZXQK
IyBDT05GSUdfUENJRUFTUE1fUE9XRVJfU1VQRVJTQVZFIGlzIG5vdCBzZXQKIyBDT05GSUdf
UENJRUFTUE1fUEVSRk9STUFOQ0UgaXMgbm90IHNldApDT05GSUdfUENJRV9QTUU9eQojIENP
TkZJR19QQ0lFX0RQQyBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSUVfUFRNIGlzIG5vdCBzZXQK
Q09ORklHX1BDSV9NU0k9eQpDT05GSUdfUENJX1FVSVJLUz15CiMgQ09ORklHX1BDSV9ERUJV
RyBpcyBub3Qgc2V0CkNPTkZJR19QQ0lfUkVBTExPQ19FTkFCTEVfQVVUTz15CkNPTkZJR19Q
Q0lfU1RVQj1tCiMgQ09ORklHX1BDSV9QRl9TVFVCIGlzIG5vdCBzZXQKQ09ORklHX1BDSV9B
VFM9eQpDT05GSUdfUENJX0xPQ0tMRVNTX0NPTkZJRz15CkNPTkZJR19QQ0lfSU9WPXkKIyBD
T05GSUdfUENJX05QRU0gaXMgbm90IHNldApDT05GSUdfUENJX1BSST15CkNPTkZJR19QQ0lf
UEFTSUQ9eQpDT05GSUdfUENJX0xBQkVMPXkKIyBDT05GSUdfUENJRV9CVVNfVFVORV9PRkYg
aXMgbm90IHNldApDT05GSUdfUENJRV9CVVNfREVGQVVMVD15CiMgQ09ORklHX1BDSUVfQlVT
X1NBRkUgaXMgbm90IHNldAojIENPTkZJR19QQ0lFX0JVU19QRVJGT1JNQU5DRSBpcyBub3Qg
c2V0CiMgQ09ORklHX1BDSUVfQlVTX1BFRVIyUEVFUiBpcyBub3Qgc2V0CkNPTkZJR19WR0Ff
QVJCPXkKQ09ORklHX1ZHQV9BUkJfTUFYX0dQVVM9MTYKIyBDT05GSUdfSE9UUExVR19QQ0kg
aXMgbm90IHNldAoKIwojIFBDSSBjb250cm9sbGVyIGRyaXZlcnMKIwoKIwojIENhZGVuY2Ut
YmFzZWQgUENJZSBjb250cm9sbGVycwojCiMgZW5kIG9mIENhZGVuY2UtYmFzZWQgUENJZSBj
b250cm9sbGVycwoKIwojIERlc2lnbldhcmUtYmFzZWQgUENJZSBjb250cm9sbGVycwojCiMg
Q09ORklHX1BDSV9NRVNPTiBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSUVfRFdfUExBVF9IT1NU
IGlzIG5vdCBzZXQKIyBlbmQgb2YgRGVzaWduV2FyZS1iYXNlZCBQQ0llIGNvbnRyb2xsZXJz
CgojCiMgTW9iaXZlaWwtYmFzZWQgUENJZSBjb250cm9sbGVycwojCiMgZW5kIG9mIE1vYml2
ZWlsLWJhc2VkIFBDSWUgY29udHJvbGxlcnMKCiMKIyBQTERBLWJhc2VkIFBDSWUgY29udHJv
bGxlcnMKIwojIGVuZCBvZiBQTERBLWJhc2VkIFBDSWUgY29udHJvbGxlcnMKIyBlbmQgb2Yg
UENJIGNvbnRyb2xsZXIgZHJpdmVycwoKIwojIFBDSSBFbmRwb2ludAojCiMgQ09ORklHX1BD
SV9FTkRQT0lOVCBpcyBub3Qgc2V0CiMgZW5kIG9mIFBDSSBFbmRwb2ludAoKIwojIFBDSSBz
d2l0Y2ggY29udHJvbGxlciBkcml2ZXJzCiMKIyBDT05GSUdfUENJX1NXX1NXSVRDSFRFQyBp
cyBub3Qgc2V0CiMgZW5kIG9mIFBDSSBzd2l0Y2ggY29udHJvbGxlciBkcml2ZXJzCgojIENP
TkZJR19DWExfQlVTIGlzIG5vdCBzZXQKQ09ORklHX1BDQ0FSRD1tCkNPTkZJR19QQ01DSUE9
bQpDT05GSUdfUENNQ0lBX0xPQURfQ0lTPXkKQ09ORklHX0NBUkRCVVM9eQoKIwojIFBDLWNh
cmQgYnJpZGdlcwojCkNPTkZJR19ZRU5UQT1tCkNPTkZJR19ZRU5UQV9PMj15CkNPTkZJR19Z
RU5UQV9SSUNPSD15CkNPTkZJR19ZRU5UQV9UST15CkNPTkZJR19ZRU5UQV9FTkVfVFVORT15
CkNPTkZJR19ZRU5UQV9UT1NISUJBPXkKQ09ORklHX1BENjcyOT1tCkNPTkZJR19JODIwOTI9
bQpDT05GSUdfUENDQVJEX05PTlNUQVRJQz15CiMgQ09ORklHX1JBUElESU8gaXMgbm90IHNl
dAoKIwojIEdlbmVyaWMgRHJpdmVyIE9wdGlvbnMKIwpDT05GSUdfQVVYSUxJQVJZX0JVUz15
CkNPTkZJR19VRVZFTlRfSEVMUEVSPXkKQ09ORklHX1VFVkVOVF9IRUxQRVJfUEFUSD0iIgpD
T05GSUdfREVWVE1QRlM9eQojIENPTkZJR19ERVZUTVBGU19NT1VOVCBpcyBub3Qgc2V0CiMg
Q09ORklHX0RFVlRNUEZTX1NBRkUgaXMgbm90IHNldApDT05GSUdfU1RBTkRBTE9ORT15CkNP
TkZJR19QUkVWRU5UX0ZJUk1XQVJFX0JVSUxEPXkKCiMKIyBGaXJtd2FyZSBsb2FkZXIKIwpD
T05GSUdfRldfTE9BREVSPXkKQ09ORklHX0ZXX0xPQURFUl9ERUJVRz15CkNPTkZJR19FWFRS
QV9GSVJNV0FSRT0iIgojIENPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVIgaXMgbm90IHNl
dAojIENPTkZJR19GV19MT0FERVJfQ09NUFJFU1MgaXMgbm90IHNldApDT05GSUdfRldfQ0FD
SEU9eQojIENPTkZJR19GV19VUExPQUQgaXMgbm90IHNldAojIGVuZCBvZiBGaXJtd2FyZSBs
b2FkZXIKCkNPTkZJR19BTExPV19ERVZfQ09SRURVTVA9eQojIENPTkZJR19ERUJVR19EUklW
RVIgaXMgbm90IHNldAojIENPTkZJR19ERUJVR19ERVZSRVMgaXMgbm90IHNldAojIENPTkZJ
R19ERUJVR19URVNUX0RSSVZFUl9SRU1PVkUgaXMgbm90IHNldAojIENPTkZJR19URVNUX0FT
WU5DX0RSSVZFUl9QUk9CRSBpcyBub3Qgc2V0CkNPTkZJR19TWVNfSFlQRVJWSVNPUj15CkNP
TkZJR19HRU5FUklDX0NQVV9ERVZJQ0VTPXkKQ09ORklHX0dFTkVSSUNfQ1BVX0FVVE9QUk9C
RT15CkNPTkZJR19HRU5FUklDX0NQVV9WVUxORVJBQklMSVRJRVM9eQpDT05GSUdfUkVHTUFQ
PXkKQ09ORklHX1JFR01BUF9JMkM9bQpDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVI9eQojIENP
TkZJR19ETUFfRkVOQ0VfVFJBQ0UgaXMgbm90IHNldAojIENPTkZJR19GV19ERVZMSU5LX1NZ
TkNfU1RBVEVfVElNRU9VVCBpcyBub3Qgc2V0CiMgZW5kIG9mIEdlbmVyaWMgRHJpdmVyIE9w
dGlvbnMKCiMKIyBCdXMgZGV2aWNlcwojCiMgQ09ORklHX01ISV9CVVMgaXMgbm90IHNldAoj
IENPTkZJR19NSElfQlVTX0VQIGlzIG5vdCBzZXQKIyBlbmQgb2YgQnVzIGRldmljZXMKCiMK
IyBDYWNoZSBEcml2ZXJzCiMKIyBlbmQgb2YgQ2FjaGUgRHJpdmVycwoKQ09ORklHX0NPTk5F
Q1RPUj15CiMgQ09ORklHX1BST0NfRVZFTlRTIGlzIG5vdCBzZXQKCiMKIyBGaXJtd2FyZSBE
cml2ZXJzCiMKCiMKIyBBUk0gU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJm
YWNlIFByb3RvY29sCiMKIyBlbmQgb2YgQVJNIFN5c3RlbSBDb250cm9sIGFuZCBNYW5hZ2Vt
ZW50IEludGVyZmFjZSBQcm90b2NvbAoKQ09ORklHX0VERD1tCiMgQ09ORklHX0VERF9PRkYg
aXMgbm90IHNldApDT05GSUdfRklSTVdBUkVfTUVNTUFQPXkKIyBDT05GSUdfRE1JSUQgaXMg
bm90IHNldAojIENPTkZJR19ETUlfU1lTRlMgaXMgbm90IHNldApDT05GSUdfRE1JX1NDQU5f
TUFDSElORV9OT05fRUZJX0ZBTExCQUNLPXkKIyBDT05GSUdfSVNDU0lfSUJGVCBpcyBub3Qg
c2V0CiMgQ09ORklHX0ZXX0NGR19TWVNGUyBpcyBub3Qgc2V0CkNPTkZJR19TWVNGQj15CiMg
Q09ORklHX1NZU0ZCX1NJTVBMRUZCIGlzIG5vdCBzZXQKIyBDT05GSUdfR09PR0xFX0ZJUk1X
QVJFIGlzIG5vdCBzZXQKCiMKIyBFRkkgKEV4dGVuc2libGUgRmlybXdhcmUgSW50ZXJmYWNl
KSBTdXBwb3J0CiMKQ09ORklHX0VGSV9FU1JUPXkKQ09ORklHX0VGSV9WQVJTX1BTVE9SRT1t
CiMgQ09ORklHX0VGSV9WQVJTX1BTVE9SRV9ERUZBVUxUX0RJU0FCTEUgaXMgbm90IHNldApD
T05GSUdfRUZJX0RYRV9NRU1fQVRUUklCVVRFUz15CkNPTkZJR19FRklfUlVOVElNRV9XUkFQ
UEVSUz15CiMgQ09ORklHX0VGSV9CT09UTE9BREVSX0NPTlRST0wgaXMgbm90IHNldApDT05G
SUdfRUZJX0NBUFNVTEVfTE9BREVSPXkKQ09ORklHX0VGSV9DQVBTVUxFX1FVSVJLX1FVQVJL
X0NTSD15CiMgQ09ORklHX0VGSV9URVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfQVBQTEVfUFJP
UEVSVElFUyBpcyBub3Qgc2V0CiMgQ09ORklHX1JFU0VUX0FUVEFDS19NSVRJR0FUSU9OIGlz
IG5vdCBzZXQKIyBDT05GSUdfRUZJX1JDSTJfVEFCTEUgaXMgbm90IHNldAojIENPTkZJR19F
RklfRElTQUJMRV9QQ0lfRE1BIGlzIG5vdCBzZXQKQ09ORklHX0VGSV9FQVJMWUNPTj15CkNP
TkZJR19FRklfQ1VTVE9NX1NTRFRfT1ZFUkxBWVM9eQojIENPTkZJR19FRklfRElTQUJMRV9S
VU5USU1FIGlzIG5vdCBzZXQKIyBDT05GSUdfRUZJX0NPQ09fU0VDUkVUIGlzIG5vdCBzZXQK
IyBlbmQgb2YgRUZJIChFeHRlbnNpYmxlIEZpcm13YXJlIEludGVyZmFjZSkgU3VwcG9ydAoK
Q09ORklHX1VFRklfQ1BFUj15CkNPTkZJR19VRUZJX0NQRVJfWDg2PXkKCiMKIyBRdWFsY29t
bSBmaXJtd2FyZSBkcml2ZXJzCiMKIyBlbmQgb2YgUXVhbGNvbW0gZmlybXdhcmUgZHJpdmVy
cwoKIwojIFRlZ3JhIGZpcm13YXJlIGRyaXZlcgojCiMgZW5kIG9mIFRlZ3JhIGZpcm13YXJl
IGRyaXZlcgojIGVuZCBvZiBGaXJtd2FyZSBEcml2ZXJzCgojIENPTkZJR19HTlNTIGlzIG5v
dCBzZXQKIyBDT05GSUdfTVREIGlzIG5vdCBzZXQKIyBDT05GSUdfT0YgaXMgbm90IHNldApD
T05GSUdfQVJDSF9NSUdIVF9IQVZFX1BDX1BBUlBPUlQ9eQojIENPTkZJR19QQVJQT1JUIGlz
IG5vdCBzZXQKQ09ORklHX1BOUD15CiMgQ09ORklHX1BOUF9ERUJVR19NRVNTQUdFUyBpcyBu
b3Qgc2V0CgojCiMgUHJvdG9jb2xzCiMKQ09ORklHX1BOUEFDUEk9eQpDT05GSUdfQkxLX0RF
Vj15CiMgQ09ORklHX0JMS19ERVZfTlVMTF9CTEsgaXMgbm90IHNldAojIENPTkZJR19CTEtf
REVWX0ZEIGlzIG5vdCBzZXQKQ09ORklHX0NEUk9NPW0KIyBDT05GSUdfQkxLX0RFVl9QQ0lF
U1NEX01USVAzMlhYIGlzIG5vdCBzZXQKQ09ORklHX1pSQU09bQojIENPTkZJR19aUkFNX0JB
Q0tFTkRfTFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfWlJBTV9CQUNLRU5EX0xaNEhDIGlzIG5v
dCBzZXQKIyBDT05GSUdfWlJBTV9CQUNLRU5EX1pTVEQgaXMgbm90IHNldAojIENPTkZJR19a
UkFNX0JBQ0tFTkRfREVGTEFURSBpcyBub3Qgc2V0CiMgQ09ORklHX1pSQU1fQkFDS0VORF84
NDIgaXMgbm90IHNldApDT05GSUdfWlJBTV9CQUNLRU5EX0ZPUkNFX0xaTz15CkNPTkZJR19a
UkFNX0JBQ0tFTkRfTFpPPXkKQ09ORklHX1pSQU1fREVGX0NPTVBfTFpPUkxFPXkKIyBDT05G
SUdfWlJBTV9ERUZfQ09NUF9MWk8gaXMgbm90IHNldApDT05GSUdfWlJBTV9ERUZfQ09NUD0i
bHpvLXJsZSIKIyBDT05GSUdfWlJBTV9XUklURUJBQ0sgaXMgbm90IHNldAojIENPTkZJR19a
UkFNX1RSQUNLX0VOVFJZX0FDVElNRSBpcyBub3Qgc2V0CiMgQ09ORklHX1pSQU1fTUVNT1JZ
X1RSQUNLSU5HIGlzIG5vdCBzZXQKIyBDT05GSUdfWlJBTV9NVUxUSV9DT01QIGlzIG5vdCBz
ZXQKQ09ORklHX0JMS19ERVZfTE9PUD1tCkNPTkZJR19CTEtfREVWX0xPT1BfTUlOX0NPVU5U
PTgKIyBDT05GSUdfQkxLX0RFVl9EUkJEIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RFVl9O
QkQgaXMgbm90IHNldApDT05GSUdfQkxLX0RFVl9SQU09bQpDT05GSUdfQkxLX0RFVl9SQU1f
Q09VTlQ9MTYKQ09ORklHX0JMS19ERVZfUkFNX1NJWkU9MTYzODQKIyBDT05GSUdfQ0RST01f
UEtUQ0RWRCBpcyBub3Qgc2V0CiMgQ09ORklHX0FUQV9PVkVSX0VUSCBpcyBub3Qgc2V0CkNP
TkZJR19YRU5fQkxLREVWX0ZST05URU5EPXkKQ09ORklHX1hFTl9CTEtERVZfQkFDS0VORD15
CkNPTkZJR19WSVJUSU9fQkxLPW0KIyBDT05GSUdfQkxLX0RFVl9SQkQgaXMgbm90IHNldAoj
IENPTkZJR19CTEtfREVWX1VCTEsgaXMgbm90IHNldAoKIwojIE5WTUUgU3VwcG9ydAojCkNP
TkZJR19OVk1FX0NPUkU9bQpDT05GSUdfQkxLX0RFVl9OVk1FPW0KIyBDT05GSUdfTlZNRV9N
VUxUSVBBVEggaXMgbm90IHNldAojIENPTkZJR19OVk1FX1ZFUkJPU0VfRVJST1JTIGlzIG5v
dCBzZXQKIyBDT05GSUdfTlZNRV9IV01PTiBpcyBub3Qgc2V0CiMgQ09ORklHX05WTUVfRkMg
aXMgbm90IHNldAojIENPTkZJR19OVk1FX1RDUCBpcyBub3Qgc2V0CiMgQ09ORklHX05WTUVf
SE9TVF9BVVRIIGlzIG5vdCBzZXQKIyBDT05GSUdfTlZNRV9UQVJHRVQgaXMgbm90IHNldAoj
IGVuZCBvZiBOVk1FIFN1cHBvcnQKCiMKIyBNaXNjIGRldmljZXMKIwpDT05GSUdfU0VOU09S
U19MSVMzTFYwMkQ9bQpDT05GSUdfQUQ1MjVYX0RQT1Q9bQpDT05GSUdfQUQ1MjVYX0RQT1Rf
STJDPW0KQ09ORklHX0FENTI1WF9EUE9UX1NQST1tCiMgQ09ORklHX0RVTU1ZX0lSUSBpcyBu
b3Qgc2V0CkNPTkZJR19JQk1fQVNNPW0KQ09ORklHX1BIQU5UT009bQpDT05GSUdfVElGTV9D
T1JFPW0KQ09ORklHX1RJRk1fN1hYMT1tCkNPTkZJR19JQ1M5MzJTNDAxPW0KQ09ORklHX0VO
Q0xPU1VSRV9TRVJWSUNFUz1tCkNPTkZJR19IUF9JTE89bQpDT05GSUdfQVBEUzk4MDJBTFM9
bQpDT05GSUdfSVNMMjkwMDM9bQpDT05GSUdfSVNMMjkwMjA9bQpDT05GSUdfU0VOU09SU19U
U0wyNTUwPW0KQ09ORklHX1NFTlNPUlNfQkgxNzcwPW0KQ09ORklHX1NFTlNPUlNfQVBEUzk5
MFg9bQpDT05GSUdfSE1DNjM1Mj1tCkNPTkZJR19EUzE2ODI9bQpDT05GSUdfVk1XQVJFX0JB
TExPT049bQojIENPTkZJR19QQ0hfUEhVQiBpcyBub3Qgc2V0CiMgQ09ORklHX0xBVFRJQ0Vf
RUNQM19DT05GSUcgaXMgbm90IHNldAojIENPTkZJR19TUkFNIGlzIG5vdCBzZXQKIyBDT05G
SUdfRFdfWERBVEFfUENJRSBpcyBub3Qgc2V0CiMgQ09ORklHX1BDSV9FTkRQT0lOVF9URVNU
IGlzIG5vdCBzZXQKIyBDT05GSUdfWElMSU5YX1NERkVDIGlzIG5vdCBzZXQKIyBDT05GSUdf
TlNNIGlzIG5vdCBzZXQKQ09ORklHX0MyUE9SVD1tCkNPTkZJR19DMlBPUlRfRFVSQU1BUl8y
MTUwPW0KCiMKIyBFRVBST00gc3VwcG9ydAojCkNPTkZJR19FRVBST01fQVQyND1tCkNPTkZJ
R19FRVBST01fQVQyNT1tCkNPTkZJR19FRVBST01fTUFYNjg3NT1tCkNPTkZJR19FRVBST01f
OTNDWDY9bQojIENPTkZJR19FRVBST01fOTNYWDQ2IGlzIG5vdCBzZXQKIyBDT05GSUdfRUVQ
Uk9NX0lEVF84OUhQRVNYIGlzIG5vdCBzZXQKIyBDT05GSUdfRUVQUk9NX0VFMTAwNCBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEVFUFJPTSBzdXBwb3J0CgpDT05GSUdfQ0I3MTBfQ09SRT1tCiMg
Q09ORklHX0NCNzEwX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0NCNzEwX0RFQlVHX0FTU1VN
UFRJT05TPXkKCiMKIyBUZXhhcyBJbnN0cnVtZW50cyBzaGFyZWQgdHJhbnNwb3J0IGxpbmUg
ZGlzY2lwbGluZQojCiMgQ09ORklHX1RJX1NUIGlzIG5vdCBzZXQKIyBlbmQgb2YgVGV4YXMg
SW5zdHJ1bWVudHMgc2hhcmVkIHRyYW5zcG9ydCBsaW5lIGRpc2NpcGxpbmUKCkNPTkZJR19T
RU5TT1JTX0xJUzNfSTJDPW0KIyBDT05GSUdfQUxURVJBX1NUQVBMIGlzIG5vdCBzZXQKQ09O
RklHX0lOVEVMX01FST1tCkNPTkZJR19JTlRFTF9NRUlfTUU9bQojIENPTkZJR19JTlRFTF9N
RUlfVFhFIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5URUxfTUVJX0dTQyBpcyBub3Qgc2V0CiMg
Q09ORklHX0lOVEVMX01FSV9WU0NfSFcgaXMgbm90IHNldAojIENPTkZJR19JTlRFTF9NRUlf
SERDUCBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVMX01FSV9QWFAgaXMgbm90IHNldAojIENP
TkZJR19JTlRFTF9NRUlfR1NDX1BST1hZIGlzIG5vdCBzZXQKQ09ORklHX1ZNV0FSRV9WTUNJ
PW0KIyBDT05GSUdfRUNITyBpcyBub3Qgc2V0CiMgQ09ORklHX0JDTV9WSyBpcyBub3Qgc2V0
CiMgQ09ORklHX01JU0NfQUxDT1JfUENJIGlzIG5vdCBzZXQKIyBDT05GSUdfTUlTQ19SVFNY
X1BDSSBpcyBub3Qgc2V0CiMgQ09ORklHX01JU0NfUlRTWF9VU0IgaXMgbm90IHNldAojIENP
TkZJR19VQUNDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1BWUEFOSUMgaXMgbm90IHNldAojIENP
TkZJR19HUF9QQ0kxWFhYWCBpcyBub3Qgc2V0CiMgQ09ORklHX0tFQkFfQ1A1MDAgaXMgbm90
IHNldAojIGVuZCBvZiBNaXNjIGRldmljZXMKCiMKIyBTQ1NJIGRldmljZSBzdXBwb3J0CiMK
Q09ORklHX1NDU0lfTU9EPW0KQ09ORklHX1JBSURfQVRUUlM9bQpDT05GSUdfU0NTSV9DT01N
T049bQpDT05GSUdfU0NTST1tCkNPTkZJR19TQ1NJX0RNQT15CkNPTkZJR19TQ1NJX05FVExJ
Tks9eQojIENPTkZJR19TQ1NJX1BST0NfRlMgaXMgbm90IHNldAoKIwojIFNDU0kgc3VwcG9y
dCB0eXBlIChkaXNrLCB0YXBlLCBDRC1ST00pCiMKQ09ORklHX0JMS19ERVZfU0Q9bQpDT05G
SUdfQ0hSX0RFVl9TVD1tCkNPTkZJR19CTEtfREVWX1NSPW0KQ09ORklHX0NIUl9ERVZfU0c9
bQpDT05GSUdfQkxLX0RFVl9CU0c9eQpDT05GSUdfQ0hSX0RFVl9TQ0g9bQpDT05GSUdfU0NT
SV9FTkNMT1NVUkU9bQpDT05GSUdfU0NTSV9DT05TVEFOVFM9eQpDT05GSUdfU0NTSV9MT0dH
SU5HPXkKQ09ORklHX1NDU0lfU0NBTl9BU1lOQz15CgojCiMgU0NTSSBUcmFuc3BvcnRzCiMK
Q09ORklHX1NDU0lfU1BJX0FUVFJTPW0KQ09ORklHX1NDU0lfRkNfQVRUUlM9bQpDT05GSUdf
U0NTSV9JU0NTSV9BVFRSUz1tCkNPTkZJR19TQ1NJX1NBU19BVFRSUz1tCkNPTkZJR19TQ1NJ
X1NBU19MSUJTQVM9bQpDT05GSUdfU0NTSV9TQVNfQVRBPXkKQ09ORklHX1NDU0lfU0FTX0hP
U1RfU01QPXkKQ09ORklHX1NDU0lfU1JQX0FUVFJTPW0KIyBlbmQgb2YgU0NTSSBUcmFuc3Bv
cnRzCgpDT05GSUdfU0NTSV9MT1dMRVZFTD15CkNPTkZJR19JU0NTSV9UQ1A9bQpDT05GSUdf
SVNDU0lfQk9PVF9TWVNGUz1tCkNPTkZJR19TQ1NJX0NYR0IzX0lTQ1NJPW0KQ09ORklHX1ND
U0lfQ1hHQjRfSVNDU0k9bQpDT05GSUdfU0NTSV9CTlgyX0lTQ1NJPW0KQ09ORklHX1NDU0lf
Qk5YMlhfRkNPRT1tCkNPTkZJR19CRTJJU0NTST1tCkNPTkZJR19CTEtfREVWXzNXX1hYWFhf
UkFJRD1tCkNPTkZJR19TQ1NJX0hQU0E9bQpDT05GSUdfU0NTSV8zV185WFhYPW0KQ09ORklH
X1NDU0lfM1dfU0FTPW0KQ09ORklHX1NDU0lfQUNBUkQ9bQpDT05GSUdfU0NTSV9BQUNSQUlE
PW0KQ09ORklHX1NDU0lfQUlDN1hYWD1tCkNPTkZJR19BSUM3WFhYX0NNRFNfUEVSX0RFVklD
RT04CkNPTkZJR19BSUM3WFhYX1JFU0VUX0RFTEFZX01TPTE1MDAwCkNPTkZJR19BSUM3WFhY
X0RFQlVHX0VOQUJMRT15CkNPTkZJR19BSUM3WFhYX0RFQlVHX01BU0s9MApDT05GSUdfQUlD
N1hYWF9SRUdfUFJFVFRZX1BSSU5UPXkKQ09ORklHX1NDU0lfQUlDNzlYWD1tCkNPTkZJR19B
SUM3OVhYX0NNRFNfUEVSX0RFVklDRT0zMgpDT05GSUdfQUlDNzlYWF9SRVNFVF9ERUxBWV9N
Uz0xNTAwMApDT05GSUdfQUlDNzlYWF9ERUJVR19FTkFCTEU9eQpDT05GSUdfQUlDNzlYWF9E
RUJVR19NQVNLPTAKQ09ORklHX0FJQzc5WFhfUkVHX1BSRVRUWV9QUklOVD15CkNPTkZJR19T
Q1NJX0FJQzk0WFg9bQojIENPTkZJR19BSUM5NFhYX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklH
X1NDU0lfTVZTQVM9bQojIENPTkZJR19TQ1NJX01WU0FTX0RFQlVHIGlzIG5vdCBzZXQKIyBD
T05GSUdfU0NTSV9NVlNBU19UQVNLTEVUIGlzIG5vdCBzZXQKQ09ORklHX1NDU0lfTVZVTUk9
bQpDT05GSUdfU0NTSV9BRFZBTlNZUz1tCkNPTkZJR19TQ1NJX0FSQ01TUj1tCkNPTkZJR19T
Q1NJX0VTQVMyUj1tCkNPTkZJR19NRUdBUkFJRF9ORVdHRU49eQpDT05GSUdfTUVHQVJBSURf
TU09bQpDT05GSUdfTUVHQVJBSURfTUFJTEJPWD1tCkNPTkZJR19NRUdBUkFJRF9MRUdBQ1k9
bQpDT05GSUdfTUVHQVJBSURfU0FTPW0KQ09ORklHX1NDU0lfTVBUM1NBUz1tCkNPTkZJR19T
Q1NJX01QVDJTQVNfTUFYX1NHRT0xMjgKQ09ORklHX1NDU0lfTVBUM1NBU19NQVhfU0dFPTEy
OAojIENPTkZJR19TQ1NJX01QVDJTQVMgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX01QSTNN
UiBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfU01BUlRQUUkgaXMgbm90IHNldApDT05GSUdf
U0NTSV9IUFRJT1A9bQpDT05GSUdfU0NTSV9CVVNMT0dJQz1tCiMgQ09ORklHX1NDU0lfRkxB
U0hQT0lOVCBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfTVlSQiBpcyBub3Qgc2V0CiMgQ09O
RklHX1NDU0lfTVlSUyBpcyBub3Qgc2V0CkNPTkZJR19WTVdBUkVfUFZTQ1NJPW0KQ09ORklH
X1hFTl9TQ1NJX0ZST05URU5EPW0KQ09ORklHX0hZUEVSVl9TVE9SQUdFPW0KQ09ORklHX0xJ
QkZDPW0KQ09ORklHX0xJQkZDT0U9bQpDT05GSUdfRkNPRT1tCkNPTkZJR19GQ09FX0ZOSUM9
bQojIENPTkZJR19TQ1NJX1NOSUMgaXMgbm90IHNldApDT05GSUdfU0NTSV9ETVgzMTkxRD1t
CiMgQ09ORklHX1NDU0lfRkRPTUFJTl9QQ0kgaXMgbm90IHNldApDT05GSUdfU0NTSV9JU0NJ
PW0KQ09ORklHX1NDU0lfSVBTPW0KQ09ORklHX1NDU0lfSU5JVElPPW0KQ09ORklHX1NDU0lf
SU5JQTEwMD1tCkNPTkZJR19TQ1NJX1NURVg9bQpDT05GSUdfU0NTSV9TWU01M0M4WFhfMj1t
CkNPTkZJR19TQ1NJX1NZTTUzQzhYWF9ETUFfQUREUkVTU0lOR19NT0RFPTEKQ09ORklHX1ND
U0lfU1lNNTNDOFhYX0RFRkFVTFRfVEFHUz0xNgpDT05GSUdfU0NTSV9TWU01M0M4WFhfTUFY
X1RBR1M9NjQKQ09ORklHX1NDU0lfU1lNNTNDOFhYX01NSU89eQpDT05GSUdfU0NTSV9JUFI9
bQojIENPTkZJR19TQ1NJX0lQUl9UUkFDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfSVBS
X0RVTVAgaXMgbm90IHNldApDT05GSUdfU0NTSV9RTE9HSUNfMTI4MD1tCkNPTkZJR19TQ1NJ
X1FMQV9GQz1tCkNPTkZJR19UQ01fUUxBMlhYWD1tCiMgQ09ORklHX1RDTV9RTEEyWFhYX0RF
QlVHIGlzIG5vdCBzZXQKQ09ORklHX1NDU0lfUUxBX0lTQ1NJPW0KIyBDT05GSUdfU0NTSV9M
UEZDIGlzIG5vdCBzZXQKIyBDT05GSUdfU0NTSV9FRkNUIGlzIG5vdCBzZXQKQ09ORklHX1ND
U0lfREMzOTV4PW0KIyBDT05GSUdfU0NTSV9BTTUzQzk3NCBpcyBub3Qgc2V0CiMgQ09ORklH
X1NDU0lfTlNQMzIgaXMgbm90IHNldAojIENPTkZJR19TQ1NJX1dENzE5WCBpcyBub3Qgc2V0
CkNPTkZJR19TQ1NJX0RFQlVHPW0KQ09ORklHX1NDU0lfUE1DUkFJRD1tCkNPTkZJR19TQ1NJ
X1BNODAwMT1tCkNPTkZJR19TQ1NJX0JGQV9GQz1tCkNPTkZJR19TQ1NJX1ZJUlRJTz1tCkNP
TkZJR19TQ1NJX0NIRUxTSU9fRkNPRT1tCkNPTkZJR19TQ1NJX0xPV0xFVkVMX1BDTUNJQT15
CkNPTkZJR19QQ01DSUFfQUhBMTUyWD1tCiMgQ09ORklHX1BDTUNJQV9GRE9NQUlOIGlzIG5v
dCBzZXQKIyBDT05GSUdfUENNQ0lBX05JTkpBX1NDU0kgaXMgbm90IHNldApDT05GSUdfUENN
Q0lBX1FMT0dJQz1tCkNPTkZJR19QQ01DSUFfU1lNNTNDNTAwPW0KIyBDT05GSUdfU0NTSV9E
SCBpcyBub3Qgc2V0CiMgZW5kIG9mIFNDU0kgZGV2aWNlIHN1cHBvcnQKCkNPTkZJR19BVEE9
bQpDT05GSUdfU0FUQV9IT1NUPXkKQ09ORklHX1BBVEFfVElNSU5HUz15CiMgQ09ORklHX0FU
QV9WRVJCT1NFX0VSUk9SIGlzIG5vdCBzZXQKIyBDT05GSUdfQVRBX0ZPUkNFIGlzIG5vdCBz
ZXQKQ09ORklHX0FUQV9BQ1BJPXkKIyBDT05GSUdfU0FUQV9aUE9ERCBpcyBub3Qgc2V0CiMg
Q09ORklHX1NBVEFfUE1QIGlzIG5vdCBzZXQKCiMKIyBDb250cm9sbGVycyB3aXRoIG5vbi1T
RkYgbmF0aXZlIGludGVyZmFjZQojCiMgQ09ORklHX1NBVEFfQUhDSSBpcyBub3Qgc2V0CiMg
Q09ORklHX1NBVEFfQUhDSV9QTEFURk9STSBpcyBub3Qgc2V0CiMgQ09ORklHX0FIQ0lfRFdD
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0FUQV9JTklDMTYyWCBpcyBub3Qgc2V0CiMgQ09ORklH
X1NBVEFfQUNBUkRfQUhDSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NBVEFfU0lMMjQgaXMgbm90
IHNldAojIENPTkZJR19BVEFfU0ZGIGlzIG5vdCBzZXQKIyBDT05GSUdfTUQgaXMgbm90IHNl
dApDT05GSUdfVEFSR0VUX0NPUkU9bQpDT05GSUdfVENNX0lCTE9DSz1tCkNPTkZJR19UQ01f
RklMRUlPPW0KQ09ORklHX1RDTV9QU0NTST1tCiMgQ09ORklHX1RDTV9VU0VSMiBpcyBub3Qg
c2V0CkNPTkZJR19MT09QQkFDS19UQVJHRVQ9bQpDT05GSUdfVENNX0ZDPW0KQ09ORklHX0lT
Q1NJX1RBUkdFVD1tCiMgQ09ORklHX0lTQ1NJX1RBUkdFVF9DWEdCNCBpcyBub3Qgc2V0CiMg
Q09ORklHX1JFTU9URV9UQVJHRVQgaXMgbm90IHNldAojIENPTkZJR19GVVNJT04gaXMgbm90
IHNldAoKIwojIElFRUUgMTM5NCAoRmlyZVdpcmUpIHN1cHBvcnQKIwojIENPTkZJR19GSVJF
V0lSRSBpcyBub3Qgc2V0CiMgQ09ORklHX0ZJUkVXSVJFX05PU1kgaXMgbm90IHNldAojIGVu
ZCBvZiBJRUVFIDEzOTQgKEZpcmVXaXJlKSBzdXBwb3J0CgojIENPTkZJR19NQUNJTlRPU0hf
RFJJVkVSUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRERVZJQ0VTPXkKQ09ORklHX01JST1tCkNP
TkZJR19ORVRfQ09SRT15CiMgQ09ORklHX0JPTkRJTkcgaXMgbm90IHNldAojIENPTkZJR19E
VU1NWSBpcyBub3Qgc2V0CiMgQ09ORklHX1dJUkVHVUFSRCBpcyBub3Qgc2V0CiMgQ09ORklH
X0VRVUFMSVpFUiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9GQyBpcyBub3Qgc2V0CiMgQ09O
RklHX0lGQiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9URUFNIGlzIG5vdCBzZXQKIyBDT05G
SUdfTUFDVkxBTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lQVkxBTiBpcyBub3Qgc2V0CiMgQ09O
RklHX1ZYTEFOIGlzIG5vdCBzZXQKIyBDT05GSUdfR0VORVZFIGlzIG5vdCBzZXQKIyBDT05G
SUdfQkFSRVVEUCBpcyBub3Qgc2V0CiMgQ09ORklHX0dUUCBpcyBub3Qgc2V0CiMgQ09ORklH
X1BGQ1AgaXMgbm90IHNldAojIENPTkZJR19BTVQgaXMgbm90IHNldAojIENPTkZJR19NQUNT
RUMgaXMgbm90IHNldAojIENPTkZJR19ORVRDT05TT0xFIGlzIG5vdCBzZXQKIyBDT05GSUdf
VFVOIGlzIG5vdCBzZXQKIyBDT05GSUdfVFVOX1ZORVRfQ1JPU1NfTEUgaXMgbm90IHNldAoj
IENPTkZJR19WRVRIIGlzIG5vdCBzZXQKQ09ORklHX1ZJUlRJT19ORVQ9bQojIENPTkZJR19O
TE1PTiBpcyBub3Qgc2V0CiMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiMgQ09ORklHX0FU
TV9EUklWRVJTIGlzIG5vdCBzZXQKQ09ORklHX0VUSEVSTkVUPXkKQ09ORklHX01ESU89bQpD
T05GSUdfTkVUX1ZFTkRPUl8zQ09NPXkKQ09ORklHX1BDTUNJQV8zQzU3ND1tCkNPTkZJR19Q
Q01DSUFfM0M1ODk9bQpDT05GSUdfVk9SVEVYPW0KQ09ORklHX1RZUEhPT049bQojIENPTkZJ
R19ORVRfVkVORE9SX0FEQVBURUMgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX0FH
RVJFIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9BTEFDUklURUNIIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9BTFRFT04gaXMgbm90IHNldAojIENPTkZJR19BTFRF
UkFfVFNFIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9BTUFaT04gaXMgbm90IHNl
dAojIENPTkZJR19ORVRfVkVORE9SX0FNRCBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5E
T1JfQVFVQU5USUEgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX0FSQyBpcyBub3Qg
c2V0CiMgQ09ORklHX05FVF9WRU5ET1JfQVNJWCBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9W
RU5ET1JfQVRIRVJPUyBpcyBub3Qgc2V0CiMgQ09ORklHX0NYX0VDQVQgaXMgbm90IHNldApD
T05GSUdfTkVUX1ZFTkRPUl9CUk9BRENPTT15CiMgQ09ORklHX0I0NCBpcyBub3Qgc2V0CiMg
Q09ORklHX0JDTUdFTkVUIGlzIG5vdCBzZXQKQ09ORklHX0JOWDI9bQpDT05GSUdfQ05JQz1t
CiMgQ09ORklHX1RJR09OMyBpcyBub3Qgc2V0CiMgQ09ORklHX0JOWDJYIGlzIG5vdCBzZXQK
IyBDT05GSUdfU1lTVEVNUE9SVCBpcyBub3Qgc2V0CiMgQ09ORklHX0JOWFQgaXMgbm90IHNl
dAojIENPTkZJR19ORVRfVkVORE9SX0NBREVOQ0UgaXMgbm90IHNldAojIENPTkZJR19ORVRf
VkVORE9SX0NBVklVTSBpcyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX0NIRUxTSU89eQoj
IENPTkZJR19DSEVMU0lPX1QxIGlzIG5vdCBzZXQKQ09ORklHX0NIRUxTSU9fVDM9bQpDT05G
SUdfQ0hFTFNJT19UND1tCiMgQ09ORklHX0NIRUxTSU9fVDRfRENCIGlzIG5vdCBzZXQKIyBD
T05GSUdfQ0hFTFNJT19UNFZGIGlzIG5vdCBzZXQKQ09ORklHX0NIRUxTSU9fTElCPW0KQ09O
RklHX0NIRUxTSU9fSU5MSU5FX0NSWVBUTz15CiMgQ09ORklHX05FVF9WRU5ET1JfQ0lTQ08g
aXMgbm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9DT1JUSU5BPXkKIyBDT05GSUdfTkVUX1ZF
TkRPUl9EQVZJQ09NIGlzIG5vdCBzZXQKIyBDT05GSUdfRE5FVCBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9WRU5ET1JfREVDIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9ETElO
SyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX0VNVUxFWD15CkNPTkZJR19CRTJORVQ9
bQojIENPTkZJR19CRTJORVRfSFdNT04gaXMgbm90IHNldAojIENPTkZJR19CRTJORVRfQkUy
IGlzIG5vdCBzZXQKIyBDT05GSUdfQkUyTkVUX0JFMyBpcyBub3Qgc2V0CiMgQ09ORklHX0JF
Mk5FVF9MQU5DRVIgaXMgbm90IHNldAojIENPTkZJR19CRTJORVRfU0tZSEFXSyBpcyBub3Qg
c2V0CgojCiMgV0FSTklORzogYmUybmV0IGlzIHVzZWxlc3Mgd2l0aG91dCBhbnkgZW5hYmxl
ZCBjaGlwCiMKIyBDT05GSUdfTkVUX1ZFTkRPUl9FTkdMRURFUiBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9WRU5ET1JfRVpDSElQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9G
VUpJVFNVIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9GVU5HSUJMRSBpcyBub3Qg
c2V0CiMgQ09ORklHX05FVF9WRU5ET1JfR09PR0xFIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1ZFTkRPUl9IVUFXRUkgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX0k4MjVYWCBp
cyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX0lOVEVMPXkKQ09ORklHX0UxMDA9bQpDT05G
SUdfRTEwMDA9bQpDT05GSUdfRTEwMDBFPW0KIyBDT05GSUdfRTEwMDBFX0hXVFMgaXMgbm90
IHNldApDT05GSUdfSUdCPXkKIyBDT05GSUdfSUdCVkYgaXMgbm90IHNldAojIENPTkZJR19J
WEdCRSBpcyBub3Qgc2V0CiMgQ09ORklHX0lYR0JFVkYgaXMgbm90IHNldAojIENPTkZJR19J
NDBFIGlzIG5vdCBzZXQKIyBDT05GSUdfSTQwRVZGIGlzIG5vdCBzZXQKIyBDT05GSUdfSUNF
IGlzIG5vdCBzZXQKIyBDT05GSUdfRk0xMEsgaXMgbm90IHNldAojIENPTkZJR19JR0MgaXMg
bm90IHNldAojIENPTkZJR19JRFBGIGlzIG5vdCBzZXQKIyBDT05GSUdfSk1FIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9BREkgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVO
RE9SX0xJVEVYIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9NQVJWRUxMIGlzIG5v
dCBzZXQKQ09ORklHX05FVF9WRU5ET1JfTUVMTEFOT1g9eQojIENPTkZJR19NTFg0X0VOIGlz
IG5vdCBzZXQKIyBDT05GSUdfTUxYNV9DT1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfTUxYU1df
Q09SRSBpcyBub3Qgc2V0CiMgQ09ORklHX01MWEZXIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1ZFTkRPUl9NRVRBIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9NSUNSRUwgaXMg
bm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX01JQ1JPQ0hJUCBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9WRU5ET1JfTUlDUk9TRU1JIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRP
Ul9NSUNST1NPRlQgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX01ZUkkgaXMgbm90
IHNldAojIENPTkZJR19GRUFMTlggaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX05J
IGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9OQVRTRU1JIGlzIG5vdCBzZXQKIyBD
T05GSUdfTkVUX1ZFTkRPUl9ORVRFUklPTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5E
T1JfTkVUUk9OT01FIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9OVklESUEgaXMg
bm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX09LSSBpcyBub3Qgc2V0CiMgQ09ORklHX0VU
SE9DIGlzIG5vdCBzZXQKIyBDT05GSUdfT0FfVEM2IGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1ZFTkRPUl9QQUNLRVRfRU5HSU5FUyBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1Jf
UEVOU0FORE8gaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1FMT0dJQyBpcyBub3Qg
c2V0CiMgQ09ORklHX05FVF9WRU5ET1JfQlJPQ0FERSBpcyBub3Qgc2V0CiMgQ09ORklHX05F
VF9WRU5ET1JfUVVBTENPTU0gaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1JEQyBp
cyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfUkVBTFRFSyBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9WRU5ET1JfUkVORVNBUyBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1Jf
Uk9DS0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9TQU1TVU5HIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9TRUVRIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZF
TkRPUl9TSUxBTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfU0lTIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9TT0xBUkZMQVJFIGlzIG5vdCBzZXQKIyBDT05GSUdf
TkVUX1ZFTkRPUl9TTVNDIGlzIG5vdCBzZXQKQ09ORklHX05FVF9WRU5ET1JfU09DSU9ORVhU
PXkKIyBDT05GSUdfTkVUX1ZFTkRPUl9TVE1JQ1JPIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1ZFTkRPUl9TVU4gaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1NZTk9QU1lTIGlz
IG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9URUhVVEkgaXMgbm90IHNldAojIENPTkZJ
R19ORVRfVkVORE9SX1RJIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9WRVJURVhD
T00gaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1ZJQSBpcyBub3Qgc2V0CiMgQ09O
RklHX05FVF9WRU5ET1JfV0FOR1hVTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1Jf
V0laTkVUIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9YSUxJTlggaXMgbm90IHNl
dAojIENPTkZJR19ORVRfVkVORE9SX1hJUkNPTSBpcyBub3Qgc2V0CiMgQ09ORklHX0ZEREkg
aXMgbm90IHNldAojIENPTkZJR19ISVBQSSBpcyBub3Qgc2V0CkNPTkZJR19QSFlMSUI9bQpD
T05GSUdfU1dQSFk9eQojIENPTkZJR19MRURfVFJJR0dFUl9QSFkgaXMgbm90IHNldApDT05G
SUdfRklYRURfUEhZPW0KCiMKIyBNSUkgUEhZIGRldmljZSBkcml2ZXJzCiMKIyBDT05GSUdf
QUlSX0VOODgxMUhfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfQU1EX1BIWSBpcyBub3Qgc2V0
CiMgQ09ORklHX0FESU5fUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfQURJTjExMDBfUEhZIGlz
IG5vdCBzZXQKIyBDT05GSUdfQVFVQU5USUFfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfQVg4
ODc5NkJfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfQlJPQURDT01fUEhZIGlzIG5vdCBzZXQK
IyBDT05GSUdfQkNNNTQxNDBfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfQkNNN1hYWF9QSFkg
aXMgbm90IHNldAojIENPTkZJR19CQ004NDg4MV9QSFkgaXMgbm90IHNldAojIENPTkZJR19C
Q004N1hYX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX0NJQ0FEQV9QSFkgaXMgbm90IHNldAoj
IENPTkZJR19DT1JUSU5BX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX0RBVklDT01fUEhZIGlz
IG5vdCBzZXQKIyBDT05GSUdfSUNQTFVTX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX0xYVF9Q
SFkgaXMgbm90IHNldAojIENPTkZJR19JTlRFTF9YV0FZX1BIWSBpcyBub3Qgc2V0CiMgQ09O
RklHX0xTSV9FVDEwMTFDX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX01BUlZFTExfUEhZIGlz
IG5vdCBzZXQKIyBDT05GSUdfTUFSVkVMTF8xMEdfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdf
TUFSVkVMTF84OFEyWFhYX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX01BUlZFTExfODhYMjIy
Ml9QSFkgaXMgbm90IHNldAojIENPTkZJR19NQVhMSU5FQVJfR1BIWSBpcyBub3Qgc2V0CiMg
Q09ORklHX01FRElBVEVLX0dFX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX01JQ1JFTF9QSFkg
aXMgbm90IHNldAojIENPTkZJR19NSUNST0NISVBfVDFTX1BIWSBpcyBub3Qgc2V0CiMgQ09O
RklHX01JQ1JPQ0hJUF9QSFkgaXMgbm90IHNldAojIENPTkZJR19NSUNST0NISVBfVDFfUEhZ
IGlzIG5vdCBzZXQKIyBDT05GSUdfTUlDUk9TRU1JX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklH
X01PVE9SQ09NTV9QSFkgaXMgbm90IHNldAojIENPTkZJR19OQVRJT05BTF9QSFkgaXMgbm90
IHNldAojIENPTkZJR19OWFBfQ0JUWF9QSFkgaXMgbm90IHNldAojIENPTkZJR19OWFBfQzQ1
X1RKQTExWFhfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfTlhQX1RKQTExWFhfUEhZIGlzIG5v
dCBzZXQKIyBDT05GSUdfTkNOMjYwMDBfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfUUNBODNY
WF9QSFkgaXMgbm90IHNldAojIENPTkZJR19RQ0E4MDhYX1BIWSBpcyBub3Qgc2V0CiMgQ09O
RklHX1FTRU1JX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX1JFQUxURUtfUEhZIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUkVORVNBU19QSFkgaXMgbm90IHNldAojIENPTkZJR19ST0NLQ0hJUF9Q
SFkgaXMgbm90IHNldAojIENPTkZJR19TTVNDX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX1NU
RTEwWFAgaXMgbm90IHNldAojIENPTkZJR19URVJBTkVUSUNTX1BIWSBpcyBub3Qgc2V0CiMg
Q09ORklHX0RQODM4MjJfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfRFA4M1RDODExX1BIWSBp
cyBub3Qgc2V0CiMgQ09ORklHX0RQODM4NDhfUEhZIGlzIG5vdCBzZXQKIyBDT05GSUdfRFA4
Mzg2N19QSFkgaXMgbm90IHNldAojIENPTkZJR19EUDgzODY5X1BIWSBpcyBub3Qgc2V0CiMg
Q09ORklHX0RQODNURDUxMF9QSFkgaXMgbm90IHNldAojIENPTkZJR19EUDgzVEc3MjBfUEhZ
IGlzIG5vdCBzZXQKIyBDT05GSUdfVklURVNTRV9QSFkgaXMgbm90IHNldAojIENPTkZJR19Y
SUxJTlhfR01JSTJSR01JSSBpcyBub3Qgc2V0CiMgQ09ORklHX01JQ1JFTF9LUzg5OTVNQSBp
cyBub3Qgc2V0CkNPTkZJR19NRElPX0RFVklDRT1tCkNPTkZJR19NRElPX0JVUz1tCkNPTkZJ
R19GV05PREVfTURJTz1tCkNPTkZJR19BQ1BJX01ESU89bQpDT05GSUdfTURJT19ERVZSRVM9
bQojIENPTkZJR19NRElPX0JJVEJBTkcgaXMgbm90IHNldAojIENPTkZJR19NRElPX0JDTV9V
TklNQUMgaXMgbm90IHNldAojIENPTkZJR19NRElPX01WVVNCIGlzIG5vdCBzZXQKCiMKIyBN
RElPIE11bHRpcGxleGVycwojCgojCiMgUENTIGRldmljZSBkcml2ZXJzCiMKIyBDT05GSUdf
UENTX1hQQ1MgaXMgbm90IHNldAojIGVuZCBvZiBQQ1MgZGV2aWNlIGRyaXZlcnMKCkNPTkZJ
R19QUFA9bQojIENPTkZJR19QUFBfQlNEQ09NUCBpcyBub3Qgc2V0CiMgQ09ORklHX1BQUF9E
RUZMQVRFIGlzIG5vdCBzZXQKIyBDT05GSUdfUFBQX0ZJTFRFUiBpcyBub3Qgc2V0CiMgQ09O
RklHX1BQUF9NUFBFIGlzIG5vdCBzZXQKIyBDT05GSUdfUFBQX01VTFRJTElOSyBpcyBub3Qg
c2V0CiMgQ09ORklHX1BQUE9BVE0gaXMgbm90IHNldAojIENPTkZJR19QUFBPRSBpcyBub3Qg
c2V0CkNPTkZJR19QUFBPRV9IQVNIX0JJVFM9NAojIENPTkZJR19QUFRQIGlzIG5vdCBzZXQK
IyBDT05GSUdfUFBQT0wyVFAgaXMgbm90IHNldAojIENPTkZJR19QUFBfQVNZTkMgaXMgbm90
IHNldAojIENPTkZJR19QUFBfU1lOQ19UVFkgaXMgbm90IHNldAojIENPTkZJR19TTElQIGlz
IG5vdCBzZXQKQ09ORklHX1NMSEM9bQoKIwojIEhvc3Qtc2lkZSBVU0Igc3VwcG9ydCBpcyBu
ZWVkZWQgZm9yIFVTQiBOZXR3b3JrIEFkYXB0ZXIgc3VwcG9ydAojCkNPTkZJR19VU0JfTkVU
X0RSSVZFUlM9bQojIENPTkZJR19VU0JfQ0FUQyBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9L
QVdFVEggaXMgbm90IHNldAojIENPTkZJR19VU0JfUEVHQVNVUyBpcyBub3Qgc2V0CiMgQ09O
RklHX1VTQl9SVEw4MTUwIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1JUTDgxNTIgaXMgbm90
IHNldAojIENPTkZJR19VU0JfTEFONzhYWCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9VU0JO
RVQgaXMgbm90IHNldAojIENPTkZJR19VU0JfSVBIRVRIIGlzIG5vdCBzZXQKIyBDT05GSUdf
V0xBTiBpcyBub3Qgc2V0CiMgQ09ORklHX1dBTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lFRUU4
MDIxNTRfRFJJVkVSUyBpcyBub3Qgc2V0CgojCiMgV2lyZWxlc3MgV0FOCiMKIyBDT05GSUdf
V1dBTiBpcyBub3Qgc2V0CiMgZW5kIG9mIFdpcmVsZXNzIFdBTgoKQ09ORklHX1hFTl9ORVRE
RVZfRlJPTlRFTkQ9bQpDT05GSUdfWEVOX05FVERFVl9CQUNLRU5EPW0KQ09ORklHX1ZNWE5F
VDM9bQojIENPTkZJR19GVUpJVFNVX0VTIGlzIG5vdCBzZXQKQ09ORklHX0hZUEVSVl9ORVQ9
bQojIENPTkZJR19ORVRERVZTSU0gaXMgbm90IHNldApDT05GSUdfTkVUX0ZBSUxPVkVSPW0K
IyBDT05GSUdfSVNETiBpcyBub3Qgc2V0CgojCiMgSW5wdXQgZGV2aWNlIHN1cHBvcnQKIwpD
T05GSUdfSU5QVVQ9eQpDT05GSUdfSU5QVVRfTEVEUz15CkNPTkZJR19JTlBVVF9GRl9NRU1M
RVNTPW0KQ09ORklHX0lOUFVUX1NQQVJTRUtNQVA9eQpDT05GSUdfSU5QVVRfTUFUUklYS01B
UD1tCkNPTkZJR19JTlBVVF9WSVZBTERJRk1BUD15CgojCiMgVXNlcmxhbmQgaW50ZXJmYWNl
cwojCkNPTkZJR19JTlBVVF9NT1VTRURFVj15CkNPTkZJR19JTlBVVF9NT1VTRURFVl9QU0FV
WD15CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0CkNPTkZJR19JTlBVVF9N
T1VTRURFVl9TQ1JFRU5fWT03NjgKQ09ORklHX0lOUFVUX0pPWURFVj1tCkNPTkZJR19JTlBV
VF9FVkRFVj1tCiMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBzZXQKCiMKIyBJbnB1dCBE
ZXZpY2UgRHJpdmVycwojCkNPTkZJR19JTlBVVF9LRVlCT0FSRD15CkNPTkZJR19LRVlCT0FS
RF9BRFA1NTg4PW0KIyBDT05GSUdfS0VZQk9BUkRfQURQNTU4OSBpcyBub3Qgc2V0CiMgQ09O
RklHX0tFWUJPQVJEX0FQUExFU1BJIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX0FUS0JE
PXkKIyBDT05GSUdfS0VZQk9BUkRfUVQxMDUwIGlzIG5vdCBzZXQKIyBDT05GSUdfS0VZQk9B
UkRfUVQxMDcwIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX1FUMjE2MD1tCiMgQ09ORklH
X0tFWUJPQVJEX0RMSU5LX0RJUjY4NSBpcyBub3Qgc2V0CkNPTkZJR19LRVlCT0FSRF9MS0tC
RD1tCiMgQ09ORklHX0tFWUJPQVJEX0dQSU8gaXMgbm90IHNldAojIENPTkZJR19LRVlCT0FS
RF9HUElPX1BPTExFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0tFWUJPQVJEX1RDQTY0MTYgaXMg
bm90IHNldAojIENPTkZJR19LRVlCT0FSRF9UQ0E4NDE4IGlzIG5vdCBzZXQKIyBDT05GSUdf
S0VZQk9BUkRfTUFUUklYIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX0xNODMyMz1tCiMg
Q09ORklHX0tFWUJPQVJEX0xNODMzMyBpcyBub3Qgc2V0CkNPTkZJR19LRVlCT0FSRF9NQVg3
MzU5PW0KIyBDT05GSUdfS0VZQk9BUkRfTVBSMTIxIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJP
QVJEX05FV1RPTj1tCkNPTkZJR19LRVlCT0FSRF9PUEVOQ09SRVM9bQojIENPTkZJR19LRVlC
T0FSRF9TQU1TVU5HIGlzIG5vdCBzZXQKQ09ORklHX0tFWUJPQVJEX1NUT1dBV0FZPW0KQ09O
RklHX0tFWUJPQVJEX1NVTktCRD1tCiMgQ09ORklHX0tFWUJPQVJEX1RNMl9UT1VDSEtFWSBp
cyBub3Qgc2V0CkNPTkZJR19LRVlCT0FSRF9YVEtCRD1tCiMgQ09ORklHX0tFWUJPQVJEX0NZ
UFJFU1NfU0YgaXMgbm90IHNldApDT05GSUdfSU5QVVRfTU9VU0U9eQpDT05GSUdfTU9VU0Vf
UFMyPW0KQ09ORklHX01PVVNFX1BTMl9BTFBTPXkKQ09ORklHX01PVVNFX1BTMl9CWUQ9eQpD
T05GSUdfTU9VU0VfUFMyX0xPR0lQUzJQUD15CiMgQ09ORklHX01PVVNFX1BTMl9QSVhBUlQg
aXMgbm90IHNldApDT05GSUdfTU9VU0VfUFMyX1NZTkFQVElDUz15CiMgQ09ORklHX01PVVNF
X1BTMl9TWU5BUFRJQ1NfU01CVVMgaXMgbm90IHNldApDT05GSUdfTU9VU0VfUFMyX0NZUFJF
U1M9eQpDT05GSUdfTU9VU0VfUFMyX0xJRkVCT09LPXkKQ09ORklHX01PVVNFX1BTMl9UUkFD
S1BPSU5UPXkKQ09ORklHX01PVVNFX1BTMl9FTEFOVEVDSD15CiMgQ09ORklHX01PVVNFX1BT
Ml9FTEFOVEVDSF9TTUJVUyBpcyBub3Qgc2V0CkNPTkZJR19NT1VTRV9QUzJfU0VOVEVMSUM9
eQojIENPTkZJR19NT1VTRV9QUzJfVE9VQ0hLSVQgaXMgbm90IHNldApDT05GSUdfTU9VU0Vf
UFMyX0ZPQ0FMVEVDSD15CiMgQ09ORklHX01PVVNFX1BTMl9WTU1PVVNFIGlzIG5vdCBzZXQK
Q09ORklHX01PVVNFX1NFUklBTD1tCkNPTkZJR19NT1VTRV9BUFBMRVRPVUNIPW0KQ09ORklH
X01PVVNFX0JDTTU5NzQ9bQpDT05GSUdfTU9VU0VfQ1lBUEE9bQojIENPTkZJR19NT1VTRV9F
TEFOX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19NT1VTRV9WU1hYWEFBPW0KIyBDT05GSUdfTU9V
U0VfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19NT1VTRV9TWU5BUFRJQ1NfSTJDPW0KQ09ORklH
X01PVVNFX1NZTkFQVElDU19VU0I9bQpDT05GSUdfSU5QVVRfSk9ZU1RJQ0s9eQpDT05GSUdf
Sk9ZU1RJQ0tfQU5BTE9HPW0KQ09ORklHX0pPWVNUSUNLX0EzRD1tCkNPTkZJR19KT1lTVElD
S19BREk9bQpDT05GSUdfSk9ZU1RJQ0tfQ09CUkE9bQpDT05GSUdfSk9ZU1RJQ0tfR0YySz1t
CkNPTkZJR19KT1lTVElDS19HUklQPW0KQ09ORklHX0pPWVNUSUNLX0dSSVBfTVA9bQpDT05G
SUdfSk9ZU1RJQ0tfR1VJTExFTU9UPW0KQ09ORklHX0pPWVNUSUNLX0lOVEVSQUNUPW0KQ09O
RklHX0pPWVNUSUNLX1NJREVXSU5ERVI9bQpDT05GSUdfSk9ZU1RJQ0tfVE1EQz1tCkNPTkZJ
R19KT1lTVElDS19JRk9SQ0U9bQpDT05GSUdfSk9ZU1RJQ0tfSUZPUkNFX1VTQj1tCkNPTkZJ
R19KT1lTVElDS19JRk9SQ0VfMjMyPW0KQ09ORklHX0pPWVNUSUNLX1dBUlJJT1I9bQpDT05G
SUdfSk9ZU1RJQ0tfTUFHRUxMQU49bQpDT05GSUdfSk9ZU1RJQ0tfU1BBQ0VPUkI9bQpDT05G
SUdfSk9ZU1RJQ0tfU1BBQ0VCQUxMPW0KQ09ORklHX0pPWVNUSUNLX1NUSU5HRVI9bQpDT05G
SUdfSk9ZU1RJQ0tfVFdJREpPWT1tCkNPTkZJR19KT1lTVElDS19aSEVOSFVBPW0KIyBDT05G
SUdfSk9ZU1RJQ0tfQVM1MDExIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNUSUNLX0pPWURVTVA9
bQpDT05GSUdfSk9ZU1RJQ0tfWFBBRD1tCkNPTkZJR19KT1lTVElDS19YUEFEX0ZGPXkKQ09O
RklHX0pPWVNUSUNLX1hQQURfTEVEUz15CiMgQ09ORklHX0pPWVNUSUNLX1BTWFBBRF9TUEkg
aXMgbm90IHNldAojIENPTkZJR19KT1lTVElDS19QWFJDIGlzIG5vdCBzZXQKIyBDT05GSUdf
Sk9ZU1RJQ0tfUVdJSUMgaXMgbm90IHNldAojIENPTkZJR19KT1lTVElDS19GU0lBNkIgaXMg
bm90IHNldAojIENPTkZJR19KT1lTVElDS19TRU5TRUhBVCBpcyBub3Qgc2V0CiMgQ09ORklH
X0pPWVNUSUNLX1NFRVNBVyBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9UQUJMRVQ9eQpDT05G
SUdfVEFCTEVUX1VTQl9BQ0VDQUQ9bQpDT05GSUdfVEFCTEVUX1VTQl9BSVBURUs9bQpDT05G
SUdfVEFCTEVUX1VTQl9IQU5XQU5HPW0KQ09ORklHX1RBQkxFVF9VU0JfS0JUQUI9bQojIENP
TkZJR19UQUJMRVRfVVNCX1BFR0FTVVMgaXMgbm90IHNldAojIENPTkZJR19UQUJMRVRfU0VS
SUFMX1dBQ09NNCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9UT1VDSFNDUkVFTj15CkNPTkZJ
R19UT1VDSFNDUkVFTl9BRFM3ODQ2PW0KQ09ORklHX1RPVUNIU0NSRUVOX0FENzg3Nz1tCkNP
TkZJR19UT1VDSFNDUkVFTl9BRDc4Nzk9bQpDT05GSUdfVE9VQ0hTQ1JFRU5fQUQ3ODc5X0ky
Qz1tCiMgQ09ORklHX1RPVUNIU0NSRUVOX0FENzg3OV9TUEkgaXMgbm90IHNldApDT05GSUdf
VE9VQ0hTQ1JFRU5fQVRNRUxfTVhUPW0KIyBDT05GSUdfVE9VQ0hTQ1JFRU5fQVVPX1BJWENJ
UiBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0JVMjEwMTMgaXMgbm90IHNldAoj
IENPTkZJR19UT1VDSFNDUkVFTl9CVTIxMDI5IGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hT
Q1JFRU5fQ0hJUE9ORV9JQ044NTA1IGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5f
Q1k4Q1RNQTE0MCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0NZOENUTUcxMTAg
aXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9DWVRUU1BfQ09SRSBpcyBub3Qgc2V0
CiMgQ09ORklHX1RPVUNIU0NSRUVOX0NZVFRTUDUgaXMgbm90IHNldApDT05GSUdfVE9VQ0hT
Q1JFRU5fRFlOQVBSTz1tCkNPTkZJR19UT1VDSFNDUkVFTl9IQU1QU0hJUkU9bQpDT05GSUdf
VE9VQ0hTQ1JFRU5fRUVUST1tCiMgQ09ORklHX1RPVUNIU0NSRUVOX0VHQUxBWF9TRVJJQUwg
aXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9FWEMzMDAwIGlzIG5vdCBzZXQKQ09O
RklHX1RPVUNIU0NSRUVOX0ZVSklUU1U9bQojIENPTkZJR19UT1VDSFNDUkVFTl9HT09ESVgg
aXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9HT09ESVhfQkVSTElOX0kyQyBpcyBu
b3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0dPT0RJWF9CRVJMSU5fU1BJIGlzIG5vdCBz
ZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fSElERUVQIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9V
Q0hTQ1JFRU5fSFlDT05fSFk0NlhYIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5f
SFlOSVRST05fQ1NUWFhYIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fSUxJMjEw
WCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0lMSVRFSyBpcyBub3Qgc2V0CiMg
Q09ORklHX1RPVUNIU0NSRUVOX1M2U1k3NjEgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JF
RU5fR1VOWkU9bQojIENPTkZJR19UT1VDSFNDUkVFTl9FS1RGMjEyNyBpcyBub3Qgc2V0CiMg
Q09ORklHX1RPVUNIU0NSRUVOX0VMQU4gaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5f
RUxPPW0KQ09ORklHX1RPVUNIU0NSRUVOX1dBQ09NX1c4MDAxPW0KIyBDT05GSUdfVE9VQ0hT
Q1JFRU5fV0FDT01fSTJDIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fTUFYMTE4
MDEgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9NTVMxMTQgaXMgbm90IHNldAoj
IENPTkZJR19UT1VDSFNDUkVFTl9NRUxGQVNfTUlQNCBpcyBub3Qgc2V0CiMgQ09ORklHX1RP
VUNIU0NSRUVOX01TRzI2MzggaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fTVRPVUNI
PW0KIyBDT05GSUdfVE9VQ0hTQ1JFRU5fTk9WQVRFS19OVlRfVFMgaXMgbm90IHNldAojIENP
TkZJR19UT1VDSFNDUkVFTl9JTUFHSVMgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5f
SU5FWElPPW0KQ09ORklHX1RPVUNIU0NSRUVOX1BFTk1PVU5UPW0KIyBDT05GSUdfVE9VQ0hT
Q1JFRU5fRURUX0ZUNVgwNiBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFJJ
R0hUPW0KQ09ORklHX1RPVUNIU0NSRUVOX1RPVUNIV0lOPW0KIyBDT05GSUdfVE9VQ0hTQ1JF
RU5fUElYQ0lSIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fV0RUODdYWF9JMkMg
aXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fVVNCX0NPTVBPU0lURT1tCkNPTkZJR19U
T1VDSFNDUkVFTl9VU0JfRUdBTEFYPXkKQ09ORklHX1RPVUNIU0NSRUVOX1VTQl9QQU5KSVQ9
eQpDT05GSUdfVE9VQ0hTQ1JFRU5fVVNCXzNNPXkKQ09ORklHX1RPVUNIU0NSRUVOX1VTQl9J
VE09eQpDT05GSUdfVE9VQ0hTQ1JFRU5fVVNCX0VUVVJCTz15CkNPTkZJR19UT1VDSFNDUkVF
Tl9VU0JfR1VOWkU9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fVVNCX0RNQ19UU0MxMD15CkNPTkZJ
R19UT1VDSFNDUkVFTl9VU0JfSVJUT1VDSD15CkNPTkZJR19UT1VDSFNDUkVFTl9VU0JfSURF
QUxURUs9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fVVNCX0dFTkVSQUxfVE9VQ0g9eQpDT05GSUdf
VE9VQ0hTQ1JFRU5fVVNCX0dPVE9QPXkKQ09ORklHX1RPVUNIU0NSRUVOX1VTQl9KQVNURUM9
eQpDT05GSUdfVE9VQ0hTQ1JFRU5fVVNCX0VMTz15CkNPTkZJR19UT1VDSFNDUkVFTl9VU0Jf
RTJJPXkKQ09ORklHX1RPVUNIU0NSRUVOX1VTQl9aWVRST05JQz15CkNPTkZJR19UT1VDSFND
UkVFTl9VU0JfRVRUX1RDNDVVU0I9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fVVNCX05FWElPPXkK
Q09ORklHX1RPVUNIU0NSRUVOX1VTQl9FQVNZVE9VQ0g9eQpDT05GSUdfVE9VQ0hTQ1JFRU5f
VE9VQ0hJVDIxMz1tCkNPTkZJR19UT1VDSFNDUkVFTl9UU0NfU0VSSU89bQojIENPTkZJR19U
T1VDSFNDUkVFTl9UU0MyMDA0IGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fVFND
MjAwNSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9UU0MyMDA3PW0KIyBDT05GSUdf
VE9VQ0hTQ1JFRU5fUk1fVFMgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9TSUxF
QUQgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9TSVNfSTJDIGlzIG5vdCBzZXQK
IyBDT05GSUdfVE9VQ0hTQ1JFRU5fU1QxMjMyIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hT
Q1JFRU5fU1RNRlRTIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU1VSRkFDRTNf
U1BJIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU1g4NjU0IGlzIG5vdCBzZXQK
Q09ORklHX1RPVUNIU0NSRUVOX1RQUzY1MDdYPW0KIyBDT05GSUdfVE9VQ0hTQ1JFRU5fWkVU
NjIyMyBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX1pGT1JDRSBpcyBub3Qgc2V0
CiMgQ09ORklHX1RPVUNIU0NSRUVOX1JPSE1fQlUyMTAyMyBpcyBub3Qgc2V0CiMgQ09ORklH
X1RPVUNIU0NSRUVOX0lRUzVYWCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0lR
UzcyMTEgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9aSU5JVElYIGlzIG5vdCBz
ZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fSElNQVhfSFg4MzExMkIgaXMgbm90IHNldApDT05G
SUdfSU5QVVRfTUlTQz15CiMgQ09ORklHX0lOUFVUX0FENzE0WCBpcyBub3Qgc2V0CiMgQ09O
RklHX0lOUFVUX0JNQTE1MCBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVUX0UzWDBfQlVUVE9O
IGlzIG5vdCBzZXQKQ09ORklHX0lOUFVUX1BDU1BLUj1tCiMgQ09ORklHX0lOUFVUX01NQTg0
NTAgaXMgbm90IHNldApDT05GSUdfSU5QVVRfQVBBTkVMPW0KIyBDT05GSUdfSU5QVVRfR1BJ
T19CRUVQRVIgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9HUElPX0RFQ09ERVIgaXMgbm90
IHNldAojIENPTkZJR19JTlBVVF9HUElPX1ZJQlJBIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5Q
VVRfV0lTVFJPTl9CVE5TIGlzIG5vdCBzZXQKQ09ORklHX0lOUFVUX0FUTEFTX0JUTlM9bQpD
T05GSUdfSU5QVVRfQVRJX1JFTU9URTI9bQpDT05GSUdfSU5QVVRfS0VZU1BBTl9SRU1PVEU9
bQojIENPTkZJR19JTlBVVF9LWFRKOSBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9QT1dFUk1B
VEU9bQpDT05GSUdfSU5QVVRfWUVBTElOSz1tCkNPTkZJR19JTlBVVF9DTTEwOT1tCkNPTkZJ
R19JTlBVVF9VSU5QVVQ9bQojIENPTkZJR19JTlBVVF9QQ0Y4NTc0IGlzIG5vdCBzZXQKIyBD
T05GSUdfSU5QVVRfR1BJT19ST1RBUllfRU5DT0RFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0lO
UFVUX0RBNzI4MF9IQVBUSUNTIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfQURYTDM0WCBp
cyBub3Qgc2V0CiMgQ09ORklHX0lOUFVUX0lNU19QQ1UgaXMgbm90IHNldAojIENPTkZJR19J
TlBVVF9JUVMyNjlBIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfSVFTNjI2QSBpcyBub3Qg
c2V0CiMgQ09ORklHX0lOUFVUX0lRUzcyMjIgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9D
TUEzMDAwIGlzIG5vdCBzZXQKQ09ORklHX0lOUFVUX1hFTl9LQkRERVZfRlJPTlRFTkQ9eQpD
T05GSUdfSU5QVVRfSURFQVBBRF9TTElERUJBUj1tCiMgQ09ORklHX0lOUFVUX0RSVjI2MFhf
SEFQVElDUyBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVUX0RSVjI2NjVfSEFQVElDUyBpcyBu
b3Qgc2V0CiMgQ09ORklHX0lOUFVUX0RSVjI2NjdfSEFQVElDUyBpcyBub3Qgc2V0CiMgQ09O
RklHX1JNSTRfQ09SRSBpcyBub3Qgc2V0CgojCiMgSGFyZHdhcmUgSS9PIHBvcnRzCiMKQ09O
RklHX1NFUklPPXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9QQ19TRVJJTz15CkNPTkZJR19T
RVJJT19JODA0Mj15CkNPTkZJR19TRVJJT19TRVJQT1JUPW0KQ09ORklHX1NFUklPX0NUODJD
NzEwPW0KQ09ORklHX1NFUklPX1BDSVBTMj1tCkNPTkZJR19TRVJJT19MSUJQUzI9eQpDT05G
SUdfU0VSSU9fUkFXPW0KQ09ORklHX1NFUklPX0FMVEVSQV9QUzI9bQojIENPTkZJR19TRVJJ
T19QUzJNVUxUIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSU9fQVJDX1BTMiBpcyBub3Qgc2V0
CkNPTkZJR19IWVBFUlZfS0VZQk9BUkQ9bQojIENPTkZJR19TRVJJT19HUElPX1BTMiBpcyBu
b3Qgc2V0CiMgQ09ORklHX1VTRVJJTyBpcyBub3Qgc2V0CkNPTkZJR19HQU1FUE9SVD1tCkNP
TkZJR19HQU1FUE9SVF9FTVUxMEsxPW0KQ09ORklHX0dBTUVQT1JUX0ZNODAxPW0KIyBlbmQg
b2YgSGFyZHdhcmUgSS9PIHBvcnRzCiMgZW5kIG9mIElucHV0IGRldmljZSBzdXBwb3J0Cgoj
CiMgQ2hhcmFjdGVyIGRldmljZXMKIwpDT05GSUdfVFRZPXkKQ09ORklHX1ZUPXkKQ09ORklH
X0NPTlNPTEVfVFJBTlNMQVRJT05TPXkKQ09ORklHX1ZUX0NPTlNPTEU9eQpDT05GSUdfVlRf
Q09OU09MRV9TTEVFUD15CkNPTkZJR19WVF9IV19DT05TT0xFX0JJTkRJTkc9eQpDT05GSUdf
VU5JWDk4X1BUWVM9eQojIENPTkZJR19MRUdBQ1lfUFRZUyBpcyBub3Qgc2V0CkNPTkZJR19M
RUdBQ1lfVElPQ1NUST15CiMgQ09ORklHX0xESVNDX0FVVE9MT0FEIGlzIG5vdCBzZXQKCiMK
IyBTZXJpYWwgZHJpdmVycwojCkNPTkZJR19TRVJJQUxfRUFSTFlDT049eQpDT05GSUdfU0VS
SUFMXzgyNTA9eQojIENPTkZJR19TRVJJQUxfODI1MF9ERVBSRUNBVEVEX09QVElPTlMgaXMg
bm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfUE5QPXkKIyBDT05GSUdfU0VSSUFMXzgyNTBf
MTY1NTBBX1ZBUklBTlRTIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMXzgyNTBfRklOVEVL
IGlzIG5vdCBzZXQKQ09ORklHX1NFUklBTF84MjUwX0NPTlNPTEU9eQpDT05GSUdfU0VSSUFM
XzgyNTBfRE1BPXkKQ09ORklHX1NFUklBTF84MjUwX1BDSUxJQj15CkNPTkZJR19TRVJJQUxf
ODI1MF9QQ0k9eQojIENPTkZJR19TRVJJQUxfODI1MF9FWEFSIGlzIG5vdCBzZXQKQ09ORklH
X1NFUklBTF84MjUwX0NTPW0KQ09ORklHX1NFUklBTF84MjUwX05SX1VBUlRTPTMyCkNPTkZJ
R19TRVJJQUxfODI1MF9SVU5USU1FX1VBUlRTPTQKQ09ORklHX1NFUklBTF84MjUwX0VYVEVO
REVEPXkKQ09ORklHX1NFUklBTF84MjUwX01BTllfUE9SVFM9eQojIENPTkZJR19TRVJJQUxf
ODI1MF9QQ0kxWFhYWCBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfODI1MF9TSEFSRV9JUlE9
eQojIENPTkZJR19TRVJJQUxfODI1MF9ERVRFQ1RfSVJRIGlzIG5vdCBzZXQKQ09ORklHX1NF
UklBTF84MjUwX1JTQT15CkNPTkZJR19TRVJJQUxfODI1MF9EV0xJQj15CiMgQ09ORklHX1NF
UklBTF84MjUwX0RXIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMXzgyNTBfUlQyODhYIGlz
IG5vdCBzZXQKQ09ORklHX1NFUklBTF84MjUwX0xQU1M9eQojIENPTkZJR19TRVJJQUxfODI1
MF9NSUQgaXMgbm90IHNldAojIENPTkZJR19TRVJJQUxfODI1MF9QRVJJQ09NIGlzIG5vdCBz
ZXQKCiMKIyBOb24tODI1MCBzZXJpYWwgcG9ydCBzdXBwb3J0CiMKIyBDT05GSUdfU0VSSUFM
X01BWDMxMDAgaXMgbm90IHNldAojIENPTkZJR19TRVJJQUxfTUFYMzEwWCBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFUklBTF9VQVJUTElURSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQ09S
RT15CkNPTkZJR19TRVJJQUxfQ09SRV9DT05TT0xFPXkKQ09ORklHX1NFUklBTF9KU009bQoj
IENPTkZJR19TRVJJQUxfTEFOVElRIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX1NDQ05Y
UCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFUklBTF9TQzE2SVM3WFggaXMgbm90IHNldAojIENP
TkZJR19TRVJJQUxfVElNQkVSREFMRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFUklBTF9BTFRF
UkFfSlRBR1VBUlQgaXMgbm90IHNldAojIENPTkZJR19TRVJJQUxfQUxURVJBX1VBUlQgaXMg
bm90IHNldAojIENPTkZJR19TRVJJQUxfUENIX1VBUlQgaXMgbm90IHNldAojIENPTkZJR19T
RVJJQUxfQVJDIGlzIG5vdCBzZXQKQ09ORklHX1NFUklBTF9SUDI9bQpDT05GSUdfU0VSSUFM
X1JQMl9OUl9VQVJUUz0zMgojIENPTkZJR19TRVJJQUxfRlNMX0xQVUFSVCBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFUklBTF9GU0xfTElORkxFWFVBUlQgaXMgbm90IHNldAojIENPTkZJR19T
RVJJQUxfU1BSRCBpcyBub3Qgc2V0CiMgZW5kIG9mIFNlcmlhbCBkcml2ZXJzCgpDT05GSUdf
U0VSSUFMX01DVFJMX0dQSU89eQpDT05GSUdfU0VSSUFMX05PTlNUQU5EQVJEPXkKQ09ORklH
X01PWEFfSU5URUxMSU89bQpDT05GSUdfTU9YQV9TTUFSVElPPW0KQ09ORklHX05fSERMQz1t
CkNPTkZJR19JUFdJUkVMRVNTPW0KQ09ORklHX05fR1NNPW0KQ09ORklHX05PWk9NST1tCiMg
Q09ORklHX05VTExfVFRZIGlzIG5vdCBzZXQKQ09ORklHX0hWQ19EUklWRVI9eQpDT05GSUdf
SFZDX0lSUT15CkNPTkZJR19IVkNfWEVOPXkKQ09ORklHX0hWQ19YRU5fRlJPTlRFTkQ9eQoj
IENPTkZJR19TRVJJQUxfREVWX0JVUyBpcyBub3Qgc2V0CiMgQ09ORklHX1RUWV9QUklOVEsg
aXMgbm90IHNldApDT05GSUdfVklSVElPX0NPTlNPTEU9bQpDT05GSUdfSVBNSV9IQU5ETEVS
PW0KQ09ORklHX0lQTUlfRE1JX0RFQ09ERT15CkNPTkZJR19JUE1JX1BMQVRfREFUQT15CiMg
Q09ORklHX0lQTUlfUEFOSUNfRVZFTlQgaXMgbm90IHNldApDT05GSUdfSVBNSV9ERVZJQ0Vf
SU5URVJGQUNFPW0KQ09ORklHX0lQTUlfU0k9bQojIENPTkZJR19JUE1JX1NTSUYgaXMgbm90
IHNldApDT05GSUdfSVBNSV9XQVRDSERPRz1tCkNPTkZJR19JUE1JX1BPV0VST0ZGPW0KQ09O
RklHX0hXX1JBTkRPTT1tCiMgQ09ORklHX0hXX1JBTkRPTV9USU1FUklPTUVNIGlzIG5vdCBz
ZXQKQ09ORklHX0hXX1JBTkRPTV9JTlRFTD1tCkNPTkZJR19IV19SQU5ET01fQU1EPW0KIyBD
T05GSUdfSFdfUkFORE9NX0JBNDMxIGlzIG5vdCBzZXQKQ09ORklHX0hXX1JBTkRPTV9HRU9E
RT1tCkNPTkZJR19IV19SQU5ET01fVklBPW0KQ09ORklHX0hXX1JBTkRPTV9WSVJUSU89bQoj
IENPTkZJR19IV19SQU5ET01fWElQSEVSQSBpcyBub3Qgc2V0CkNPTkZJR19BUFBMSUNPTT1t
CiMgQ09ORklHX1NPTllQSSBpcyBub3Qgc2V0CkNPTkZJR19NV0FWRT1tCiMgQ09ORklHX1BD
ODczNnhfR1BJTyBpcyBub3Qgc2V0CiMgQ09ORklHX05TQ19HUElPIGlzIG5vdCBzZXQKQ09O
RklHX0RFVk1FTT15CkNPTkZJR19OVlJBTT1tCkNPTkZJR19ERVZQT1JUPXkKQ09ORklHX0hQ
RVQ9eQpDT05GSUdfSFBFVF9NTUFQPXkKQ09ORklHX0hQRVRfTU1BUF9ERUZBVUxUPXkKQ09O
RklHX0hBTkdDSEVDS19USU1FUj1tCkNPTkZJR19UQ0dfVFBNPW0KIyBDT05GSUdfVENHX1RQ
TTJfSE1BQyBpcyBub3Qgc2V0CkNPTkZJR19IV19SQU5ET01fVFBNPXkKQ09ORklHX1RDR19U
SVNfQ09SRT1tCkNPTkZJR19UQ0dfVElTPW0KIyBDT05GSUdfVENHX1RJU19TUEkgaXMgbm90
IHNldAojIENPTkZJR19UQ0dfVElTX0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX1RDR19USVNf
STJDX0NSNTAgaXMgbm90IHNldApDT05GSUdfVENHX1RJU19JMkNfQVRNRUw9bQpDT05GSUdf
VENHX1RJU19JMkNfSU5GSU5FT049bQpDT05GSUdfVENHX1RJU19JMkNfTlVWT1RPTj1tCkNP
TkZJR19UQ0dfTlNDPW0KQ09ORklHX1RDR19BVE1FTD1tCkNPTkZJR19UQ0dfSU5GSU5FT049
bQpDT05GSUdfVENHX1hFTj1tCiMgQ09ORklHX1RDR19DUkIgaXMgbm90IHNldAojIENPTkZJ
R19UQ0dfVlRQTV9QUk9YWSBpcyBub3Qgc2V0CiMgQ09ORklHX1RDR19USVNfU1QzM1pQMjRf
STJDIGlzIG5vdCBzZXQKIyBDT05GSUdfVENHX1RJU19TVDMzWlAyNF9TUEkgaXMgbm90IHNl
dApDT05GSUdfVEVMQ0xPQ0s9bQojIENPTkZJR19YSUxMWUJVUyBpcyBub3Qgc2V0CiMgQ09O
RklHX1hJTExZVVNCIGlzIG5vdCBzZXQKIyBlbmQgb2YgQ2hhcmFjdGVyIGRldmljZXMKCiMK
IyBJMkMgc3VwcG9ydAojCkNPTkZJR19JMkM9eQpDT05GSUdfQUNQSV9JMkNfT1BSRUdJT049
eQpDT05GSUdfSTJDX0JPQVJESU5GTz15CkNPTkZJR19JMkNfQ0hBUkRFVj1tCkNPTkZJR19J
MkNfTVVYPW0KCiMKIyBNdWx0aXBsZXhlciBJMkMgQ2hpcCBzdXBwb3J0CiMKIyBDT05GSUdf
STJDX01VWF9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX01VWF9MVEM0MzA2IGlzIG5v
dCBzZXQKIyBDT05GSUdfSTJDX01VWF9QQ0E5NTQxIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJD
X01VWF9QQ0E5NTR4IGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX01VWF9SRUcgaXMgbm90IHNl
dAojIENPTkZJR19JMkNfTVVYX01MWENQTEQgaXMgbm90IHNldAojIGVuZCBvZiBNdWx0aXBs
ZXhlciBJMkMgQ2hpcCBzdXBwb3J0CgpDT05GSUdfSTJDX0hFTFBFUl9BVVRPPXkKQ09ORklH
X0kyQ19TTUJVUz1tCkNPTkZJR19JMkNfQUxHT0JJVD15CkNPTkZJR19JMkNfQUxHT1BDQT1t
CgojCiMgSTJDIEhhcmR3YXJlIEJ1cyBzdXBwb3J0CiMKCiMKIyBQQyBTTUJ1cyBob3N0IGNv
bnRyb2xsZXIgZHJpdmVycwojCkNPTkZJR19JMkNfQ0NHWF9VQ1NJPW0KQ09ORklHX0kyQ19B
TEkxNTM1PW0KQ09ORklHX0kyQ19BTEkxNTYzPW0KQ09ORklHX0kyQ19BTEkxNVgzPW0KQ09O
RklHX0kyQ19BTUQ3NTY9bQpDT05GSUdfSTJDX0FNRDc1Nl9TNDg4Mj1tCkNPTkZJR19JMkNf
QU1EODExMT1tCiMgQ09ORklHX0kyQ19BTURfTVAyIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19J
ODAxPW0KQ09ORklHX0kyQ19JU0NIPW0KQ09ORklHX0kyQ19JU01UPW0KQ09ORklHX0kyQ19Q
SUlYND1tCkNPTkZJR19JMkNfTkZPUkNFMj1tCkNPTkZJR19JMkNfTkZPUkNFMl9TNDk4NT1t
CiMgQ09ORklHX0kyQ19OVklESUFfR1BVIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19TSVM1NTk1
PW0KQ09ORklHX0kyQ19TSVM2MzA9bQpDT05GSUdfSTJDX1NJUzk2WD1tCkNPTkZJR19JMkNf
VklBPW0KQ09ORklHX0kyQ19WSUFQUk89bQojIENPTkZJR19JMkNfWkhBT1hJTiBpcyBub3Qg
c2V0CgojCiMgQUNQSSBkcml2ZXJzCiMKQ09ORklHX0kyQ19TQ01JPW0KCiMKIyBJMkMgc3lz
dGVtIGJ1cyBkcml2ZXJzIChtb3N0bHkgZW1iZWRkZWQgLyBzeXN0ZW0tb24tY2hpcCkKIwoj
IENPTkZJR19JMkNfQ0JVU19HUElPIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19ERVNJR05XQVJF
X0NPUkU9bQojIENPTkZJR19JMkNfREVTSUdOV0FSRV9TTEFWRSBpcyBub3Qgc2V0CkNPTkZJ
R19JMkNfREVTSUdOV0FSRV9QTEFURk9STT1tCiMgQ09ORklHX0kyQ19ERVNJR05XQVJFX0JB
WVRSQUlMIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19ERVNJR05XQVJFX1BDST1tCiMgQ09ORklH
X0kyQ19FRzIwVCBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19FTUVWMiBpcyBub3Qgc2V0CiMg
Q09ORklHX0kyQ19HUElPIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19PQ09SRVM9bQpDT05GSUdf
STJDX1BDQV9QTEFURk9STT1tCkNPTkZJR19JMkNfU0lNVEVDPW0KIyBDT05GSUdfSTJDX1hJ
TElOWCBpcyBub3Qgc2V0CgojCiMgRXh0ZXJuYWwgSTJDL1NNQnVzIGFkYXB0ZXIgZHJpdmVy
cwojCkNPTkZJR19JMkNfRElPTEFOX1UyQz1tCiMgQ09ORklHX0kyQ19DUDI2MTUgaXMgbm90
IHNldAojIENPTkZJR19JMkNfUENJMVhYWFggaXMgbm90IHNldAojIENPTkZJR19JMkNfUk9C
T1RGVVpaX09TSUYgaXMgbm90IHNldApDT05GSUdfSTJDX1RBT1NfRVZNPW0KQ09ORklHX0ky
Q19USU5ZX1VTQj1tCgojCiMgT3RoZXIgSTJDL1NNQnVzIGJ1cyBkcml2ZXJzCiMKIyBDT05G
SUdfU0N4MjAwX0FDQiBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19WSVJUSU8gaXMgbm90IHNl
dAojIGVuZCBvZiBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKCkNPTkZJR19JMkNfU1RVQj1t
CiMgQ09ORklHX0kyQ19TTEFWRSBpcyBub3Qgc2V0CiMgQ09ORklHX0kyQ19ERUJVR19DT1JF
IGlzIG5vdCBzZXQKIyBDT05GSUdfSTJDX0RFQlVHX0FMR08gaXMgbm90IHNldAojIENPTkZJ
R19JMkNfREVCVUdfQlVTIGlzIG5vdCBzZXQKIyBlbmQgb2YgSTJDIHN1cHBvcnQKCiMgQ09O
RklHX0kzQyBpcyBub3Qgc2V0CkNPTkZJR19TUEk9eQojIENPTkZJR19TUElfREVCVUcgaXMg
bm90IHNldApDT05GSUdfU1BJX01BU1RFUj15CiMgQ09ORklHX1NQSV9NRU0gaXMgbm90IHNl
dAoKIwojIFNQSSBNYXN0ZXIgQ29udHJvbGxlciBEcml2ZXJzCiMKIyBDT05GSUdfU1BJX0FM
VEVSQSBpcyBub3Qgc2V0CiMgQ09ORklHX1NQSV9BWElfU1BJX0VOR0lORSBpcyBub3Qgc2V0
CiMgQ09ORklHX1NQSV9CSVRCQU5HIGlzIG5vdCBzZXQKIyBDT05GSUdfU1BJX0NBREVOQ0Ug
aXMgbm90IHNldAojIENPTkZJR19TUElfQ0gzNDEgaXMgbm90IHNldAojIENPTkZJR19TUElf
REVTSUdOV0FSRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NQSV9HUElPIGlzIG5vdCBzZXQKIyBD
T05GSUdfU1BJX01JQ1JPQ0hJUF9DT1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfU1BJX01JQ1JP
Q0hJUF9DT1JFX1FTUEkgaXMgbm90IHNldAojIENPTkZJR19TUElfTEFOVElRX1NTQyBpcyBu
b3Qgc2V0CiMgQ09ORklHX1NQSV9PQ19USU5ZIGlzIG5vdCBzZXQKIyBDT05GSUdfU1BJX1BD
STFYWFhYIGlzIG5vdCBzZXQKIyBDT05GSUdfU1BJX1BYQTJYWCBpcyBub3Qgc2V0CiMgQ09O
RklHX1NQSV9TQzE4SVM2MDIgaXMgbm90IHNldAojIENPTkZJR19TUElfU0lGSVZFIGlzIG5v
dCBzZXQKIyBDT05GSUdfU1BJX01YSUMgaXMgbm90IHNldAojIENPTkZJR19TUElfVE9QQ0xJ
RkZfUENIIGlzIG5vdCBzZXQKIyBDT05GSUdfU1BJX1hDT01NIGlzIG5vdCBzZXQKIyBDT05G
SUdfU1BJX1hJTElOWCBpcyBub3Qgc2V0CiMgQ09ORklHX1NQSV9BTUQgaXMgbm90IHNldAoK
IwojIFNQSSBNdWx0aXBsZXhlciBzdXBwb3J0CiMKIyBDT05GSUdfU1BJX01VWCBpcyBub3Qg
c2V0CgojCiMgU1BJIFByb3RvY29sIE1hc3RlcnMKIwojIENPTkZJR19TUElfU1BJREVWIGlz
IG5vdCBzZXQKIyBDT05GSUdfU1BJX0xPT1BCQUNLX1RFU1QgaXMgbm90IHNldAojIENPTkZJ
R19TUElfVExFNjJYMCBpcyBub3Qgc2V0CiMgQ09ORklHX1NQSV9TTEFWRSBpcyBub3Qgc2V0
CkNPTkZJR19TUElfRFlOQU1JQz15CiMgQ09ORklHX1NQTUkgaXMgbm90IHNldAojIENPTkZJ
R19IU0kgaXMgbm90IHNldApDT05GSUdfUFBTPXkKIyBDT05GSUdfUFBTX0RFQlVHIGlzIG5v
dCBzZXQKCiMKIyBQUFMgY2xpZW50cyBzdXBwb3J0CiMKIyBDT05GSUdfUFBTX0NMSUVOVF9L
VElNRVIgaXMgbm90IHNldApDT05GSUdfUFBTX0NMSUVOVF9MRElTQz1tCiMgQ09ORklHX1BQ
U19DTElFTlRfR1BJTyBpcyBub3Qgc2V0CgojCiMgUFBTIGdlbmVyYXRvcnMgc3VwcG9ydAoj
CgojCiMgUFRQIGNsb2NrIHN1cHBvcnQKIwpDT05GSUdfUFRQXzE1ODhfQ0xPQ0s9eQpDT05G
SUdfUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUw9eQoKIwojIEVuYWJsZSBQSFlMSUIgYW5kIE5F
VFdPUktfUEhZX1RJTUVTVEFNUElORyB0byBzZWUgdGhlIGFkZGl0aW9uYWwgY2xvY2tzLgoj
CiMgQ09ORklHX1BUUF8xNTg4X0NMT0NLX1BDSCBpcyBub3Qgc2V0CiMgQ09ORklHX1BUUF8x
NTg4X0NMT0NLX0tWTSBpcyBub3Qgc2V0CiMgQ09ORklHX1BUUF8xNTg4X0NMT0NLX0lEVDgy
UDMzIGlzIG5vdCBzZXQKIyBDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfSURUQ00gaXMgbm90IHNl
dAojIENPTkZJR19QVFBfMTU4OF9DTE9DS19GQzNXIGlzIG5vdCBzZXQKIyBDT05GSUdfUFRQ
XzE1ODhfQ0xPQ0tfTU9DSyBpcyBub3Qgc2V0CiMgQ09ORklHX1BUUF8xNTg4X0NMT0NLX1ZN
VyBpcyBub3Qgc2V0CiMgZW5kIG9mIFBUUCBjbG9jayBzdXBwb3J0CgpDT05GSUdfUElOQ1RS
TD15CiMgQ09ORklHX0RFQlVHX1BJTkNUUkwgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJM
X0FNRCBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfQ1k4Qzk1WDAgaXMgbm90IHNldAoj
IENPTkZJR19QSU5DVFJMX01DUDIzUzA4IGlzIG5vdCBzZXQKIyBDT05GSUdfUElOQ1RSTF9T
WDE1MFggaXMgbm90IHNldAoKIwojIEludGVsIHBpbmN0cmwgZHJpdmVycwojCiMgQ09ORklH
X1BJTkNUUkxfQkFZVFJBSUwgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJMX0NIRVJSWVZJ
RVcgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJMX0xZTlhQT0lOVCBpcyBub3Qgc2V0CiMg
Q09ORklHX1BJTkNUUkxfSU5URUxfUExBVEZPUk0gaXMgbm90IHNldAojIENPTkZJR19QSU5D
VFJMX0FMREVSTEFLRSBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfQlJPWFRPTiBpcyBu
b3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfQ0FOTk9OTEFLRSBpcyBub3Qgc2V0CiMgQ09ORklH
X1BJTkNUUkxfQ0VEQVJGT1JLIGlzIG5vdCBzZXQKIyBDT05GSUdfUElOQ1RSTF9ERU5WRVJU
T04gaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJMX0VMS0hBUlRMQUtFIGlzIG5vdCBzZXQK
IyBDT05GSUdfUElOQ1RSTF9FTU1JVFNCVVJHIGlzIG5vdCBzZXQKIyBDT05GSUdfUElOQ1RS
TF9HRU1JTklMQUtFIGlzIG5vdCBzZXQKIyBDT05GSUdfUElOQ1RSTF9JQ0VMQUtFIGlzIG5v
dCBzZXQKIyBDT05GSUdfUElOQ1RSTF9KQVNQRVJMQUtFIGlzIG5vdCBzZXQKIyBDT05GSUdf
UElOQ1RSTF9MQUtFRklFTEQgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJMX0xFV0lTQlVS
RyBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfTUVURU9STEFLRSBpcyBub3Qgc2V0CiMg
Q09ORklHX1BJTkNUUkxfTUVURU9SUE9JTlQgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJM
X1NVTlJJU0VQT0lOVCBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfVElHRVJMQUtFIGlz
IG5vdCBzZXQKIyBlbmQgb2YgSW50ZWwgcGluY3RybCBkcml2ZXJzCgojCiMgUmVuZXNhcyBw
aW5jdHJsIGRyaXZlcnMKIwojIGVuZCBvZiBSZW5lc2FzIHBpbmN0cmwgZHJpdmVycwoKQ09O
RklHX0dQSU9MSUI9eQpDT05GSUdfR1BJT0xJQl9GQVNUUEFUSF9MSU1JVD01MTIKQ09ORklH
X0dQSU9fQUNQST15CkNPTkZJR19HUElPTElCX0lSUUNISVA9eQojIENPTkZJR19ERUJVR19H
UElPIGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19TWVNGUyBpcyBub3Qgc2V0CiMgQ09ORklH
X0dQSU9fQ0RFViBpcyBub3Qgc2V0CgojCiMgTWVtb3J5IG1hcHBlZCBHUElPIGRyaXZlcnMK
IwojIENPTkZJR19HUElPX0FNRFBUIGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19EV0FQQiBp
cyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fR0VORVJJQ19QTEFURk9STSBpcyBub3Qgc2V0CiMg
Q09ORklHX0dQSU9fR1JBTklURVJBUElEUyBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fSUNI
IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19NQjg2UzdYIGlzIG5vdCBzZXQKIyBDT05GSUdf
R1BJT19BTURfRkNIIGlzIG5vdCBzZXQKIyBlbmQgb2YgTWVtb3J5IG1hcHBlZCBHUElPIGRy
aXZlcnMKCiMKIyBQb3J0LW1hcHBlZCBJL08gR1BJTyBkcml2ZXJzCiMKIyBDT05GSUdfR1BJ
T19WWDg1NSBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fRjcxODhYIGlzIG5vdCBzZXQKIyBD
T05GSUdfR1BJT19JVDg3IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19TQ0ggaXMgbm90IHNl
dAojIENPTkZJR19HUElPX1NDSDMxMVggaXMgbm90IHNldAojIENPTkZJR19HUElPX1dJTkJP
TkQgaXMgbm90IHNldAojIENPTkZJR19HUElPX1dTMTZDNDggaXMgbm90IHNldAojIGVuZCBv
ZiBQb3J0LW1hcHBlZCBJL08gR1BJTyBkcml2ZXJzCgojCiMgSTJDIEdQSU8gZXhwYW5kZXJz
CiMKIyBDT05GSUdfR1BJT19GWEw2NDA4IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19EUzQ1
MjAgaXMgbm90IHNldAojIENPTkZJR19HUElPX01BWDczMDAgaXMgbm90IHNldAojIENPTkZJ
R19HUElPX01BWDczMlggaXMgbm90IHNldAojIENPTkZJR19HUElPX1BDQTk1M1ggaXMgbm90
IHNldAojIENPTkZJR19HUElPX1BDQTk1NzAgaXMgbm90IHNldAojIENPTkZJR19HUElPX1BD
Rjg1N1ggaXMgbm90IHNldAojIENPTkZJR19HUElPX1RQSUMyODEwIGlzIG5vdCBzZXQKIyBl
bmQgb2YgSTJDIEdQSU8gZXhwYW5kZXJzCgojCiMgTUZEIEdQSU8gZXhwYW5kZXJzCiMKIyBD
T05GSUdfR1BJT19FTEtIQVJUTEFLRSBpcyBub3Qgc2V0CiMgZW5kIG9mIE1GRCBHUElPIGV4
cGFuZGVycwoKIwojIFBDSSBHUElPIGV4cGFuZGVycwojCiMgQ09ORklHX0dQSU9fQU1EODEx
MSBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fQlQ4WFggaXMgbm90IHNldAojIENPTkZJR19H
UElPX01MX0lPSCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fUENIIGlzIG5vdCBzZXQKIyBD
T05GSUdfR1BJT19QQ0lfSURJT18xNiBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fUENJRV9J
RElPXzI0IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19SREMzMjFYIGlzIG5vdCBzZXQKIyBl
bmQgb2YgUENJIEdQSU8gZXhwYW5kZXJzCgojCiMgU1BJIEdQSU8gZXhwYW5kZXJzCiMKIyBD
T05GSUdfR1BJT19NQVgzMTkxWCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fTUFYNzMwMSBp
cyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fTUMzMzg4MCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQ
SU9fUElTT1NSIGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19YUkExNDAzIGlzIG5vdCBzZXQK
IyBlbmQgb2YgU1BJIEdQSU8gZXhwYW5kZXJzCgojCiMgVVNCIEdQSU8gZXhwYW5kZXJzCiMK
IyBlbmQgb2YgVVNCIEdQSU8gZXhwYW5kZXJzCgojCiMgVmlydHVhbCBHUElPIGRyaXZlcnMK
IwojIENPTkZJR19HUElPX0FHR1JFR0FUT1IgaXMgbm90IHNldAojIENPTkZJR19HUElPX0xB
VENIIGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19NT0NLVVAgaXMgbm90IHNldAojIENPTkZJ
R19HUElPX1ZJUlRJTyBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fU0lNIGlzIG5vdCBzZXQK
IyBlbmQgb2YgVmlydHVhbCBHUElPIGRyaXZlcnMKCiMKIyBHUElPIERlYnVnZ2luZyB1dGls
aXRpZXMKIwojIENPTkZJR19HUElPX1NMT1BQWV9MT0dJQ19BTkFMWVpFUiBpcyBub3Qgc2V0
CiMgQ09ORklHX0dQSU9fVklSVFVTRVIgaXMgbm90IHNldAojIGVuZCBvZiBHUElPIERlYnVn
Z2luZyB1dGlsaXRpZXMKCiMgQ09ORklHX1cxIGlzIG5vdCBzZXQKIyBDT05GSUdfUE9XRVJf
UkVTRVQgaXMgbm90IHNldAojIENPTkZJR19QT1dFUl9TRVFVRU5DSU5HIGlzIG5vdCBzZXQK
Q09ORklHX1BPV0VSX1NVUFBMWT15CiMgQ09ORklHX1BPV0VSX1NVUFBMWV9ERUJVRyBpcyBu
b3Qgc2V0CiMgQ09ORklHX0lQNVhYWF9QT1dFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1RFU1Rf
UE9XRVIgaXMgbm90IHNldAojIENPTkZJR19DSEFSR0VSX0FEUDUwNjEgaXMgbm90IHNldAoj
IENPTkZJR19CQVRURVJZX0NXMjAxNSBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRFUllfRFMy
NzgwIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFUVEVSWV9EUzI3ODEgaXMgbm90IHNldAojIENP
TkZJR19CQVRURVJZX0RTMjc4MiBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRFUllfU0FNU1VO
R19TREkgaXMgbm90IHNldAojIENPTkZJR19CQVRURVJZX1NCUyBpcyBub3Qgc2V0CiMgQ09O
RklHX0NIQVJHRVJfU0JTIGlzIG5vdCBzZXQKIyBDT05GSUdfTUFOQUdFUl9TQlMgaXMgbm90
IHNldAojIENPTkZJR19CQVRURVJZX0JRMjdYWFggaXMgbm90IHNldAojIENPTkZJR19CQVRU
RVJZX01BWDE3MDQyIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFUVEVSWV9NQVgxNzIwWCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0NIQVJHRVJfTUFYODkwMyBpcyBub3Qgc2V0CiMgQ09ORklHX0NI
QVJHRVJfTFA4NzI3IGlzIG5vdCBzZXQKIyBDT05GSUdfQ0hBUkdFUl9HUElPIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQ0hBUkdFUl9MVDM2NTEgaXMgbm90IHNldAojIENPTkZJR19DSEFSR0VS
X0xUQzQxNjJMIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0hBUkdFUl9NQVg3Nzk3NiBpcyBub3Qg
c2V0CiMgQ09ORklHX0NIQVJHRVJfQlEyNDE1WCBpcyBub3Qgc2V0CiMgQ09ORklHX0NIQVJH
RVJfQlEyNDI1NyBpcyBub3Qgc2V0CiMgQ09ORklHX0NIQVJHRVJfQlEyNDczNSBpcyBub3Qg
c2V0CiMgQ09ORklHX0NIQVJHRVJfQlEyNTE1WCBpcyBub3Qgc2V0CiMgQ09ORklHX0NIQVJH
RVJfQlEyNTg5MCBpcyBub3Qgc2V0CiMgQ09ORklHX0NIQVJHRVJfQlEyNTk4MCBpcyBub3Qg
c2V0CiMgQ09ORklHX0NIQVJHRVJfQlEyNTZYWCBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRF
UllfR0FVR0VfTFRDMjk0MSBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRFUllfR09MREZJU0gg
aXMgbm90IHNldAojIENPTkZJR19CQVRURVJZX1JUNTAzMyBpcyBub3Qgc2V0CiMgQ09ORklH
X0NIQVJHRVJfUlQ5NDU1IGlzIG5vdCBzZXQKIyBDT05GSUdfQ0hBUkdFUl9CRDk5OTU0IGlz
IG5vdCBzZXQKIyBDT05GSUdfQkFUVEVSWV9VRzMxMDUgaXMgbm90IHNldAojIENPTkZJR19G
VUVMX0dBVUdFX01NODAxMyBpcyBub3Qgc2V0CkNPTkZJR19IV01PTj1tCiMgQ09ORklHX0hX
TU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAoKIwojIE5hdGl2ZSBkcml2ZXJzCiMKIyBDT05G
SUdfU0VOU09SU19BQklUVUdVUlUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FCSVRV
R1VSVTMgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FENzMxNCBpcyBub3Qgc2V0CiMg
Q09ORklHX1NFTlNPUlNfQUQ3NDE0IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19BRDc0
MTggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FETTEwMjUgaXMgbm90IHNldAojIENP
TkZJR19TRU5TT1JTX0FETTEwMjYgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FETTEw
MjkgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FETTEwMzEgaXMgbm90IHNldAojIENP
TkZJR19TRU5TT1JTX0FETTExNzcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FETTky
NDAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEVDczMTAgaXMgbm90IHNldAojIENP
TkZJR19TRU5TT1JTX0FEVDc0MTAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEVDc0
MTEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEVDc0NjIgaXMgbm90IHNldAojIENP
TkZJR19TRU5TT1JTX0FEVDc0NzAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEVDc0
NzUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FIVDEwIGlzIG5vdCBzZXQKIyBDT05G
SUdfU0VOU09SU19BUzM3MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQVNDNzYyMSBp
cyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQVhJX0ZBTl9DT05UUk9MIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0VOU09SU19LOFRFTVAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0sx
MFRFTVAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0ZBTTE1SF9QT1dFUiBpcyBub3Qg
c2V0CiMgQ09ORklHX1NFTlNPUlNfQVBQTEVTTUMgaXMgbm90IHNldAojIENPTkZJR19TRU5T
T1JTX0FTQjEwMCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQVRYUDEgaXMgbm90IHNl
dAojIENPTkZJR19TRU5TT1JTX0NISVBDQVAyIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S
U19EUklWRVRFTVAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0RTNjIwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19EUzE2MjEgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19E
RUxMX1NNTT1tCiMgQ09ORklHX0k4SyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfSTVL
X0FNQiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRjcxODA1RiBpcyBub3Qgc2V0CiMg
Q09ORklHX1NFTlNPUlNfRjcxODgyRkcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0Y3
NTM3NVMgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0ZTQ0hNRCBpcyBub3Qgc2V0CiMg
Q09ORklHX1NFTlNPUlNfR0w1MThTTSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfR0w1
MjBTTSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRzc2MEEgaXMgbm90IHNldAojIENP
TkZJR19TRU5TT1JTX0c3NjIgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0hJSDYxMzAg
aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0hTMzAwMSBpcyBub3Qgc2V0CiMgQ09ORklH
X1NFTlNPUlNfSUJNQUVNIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19JQk1QRVggaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX0k1NTAwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VO
U09SU19DT1JFVEVNUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfSVQ4NyBpcyBub3Qg
c2V0CiMgQ09ORklHX1NFTlNPUlNfSkM0MiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNf
UE9XRVJaIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19QT1dSMTIyMCBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfTEVOT1ZPX0VDIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S
U19MSU5FQUdFIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MVEMyOTQ1IGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19MVEMyOTQ3X0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX1NF
TlNPUlNfTFRDMjk0N19TUEkgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzI5OTAg
aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzI5OTEgaXMgbm90IHNldAojIENPTkZJ
R19TRU5TT1JTX0xUQzI5OTIgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzQxNTEg
aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzQyMTUgaXMgbm90IHNldAojIENPTkZJ
R19TRU5TT1JTX0xUQzQyMjIgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzQyNDUg
aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzQyNjAgaXMgbm90IHNldAojIENPTkZJ
R19TRU5TT1JTX0xUQzQyNjEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0xUQzQyODIg
aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01BWDExMTEgaXMgbm90IHNldAojIENPTkZJ
R19TRU5TT1JTX01BWDEyNyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTUFYMTYwNjUg
aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01BWDE2MTkgaXMgbm90IHNldAojIENPTkZJ
R19TRU5TT1JTX01BWDE2NjggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01BWDE5NyBp
cyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTUFYMzE3MjIgaXMgbm90IHNldAojIENPTkZJ
R19TRU5TT1JTX01BWDMxNzMwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19NQVgzMTc2
MCBpcyBub3Qgc2V0CiMgQ09ORklHX01BWDMxODI3IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VO
U09SU19NQVg2NjIwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19NQVg2NjIxIGlzIG5v
dCBzZXQKIyBDT05GSUdfU0VOU09SU19NQVg2NjM5IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VO
U09SU19NQVg2NjUwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19NQVg2Njk3IGlzIG5v
dCBzZXQKIyBDT05GSUdfU0VOU09SU19NQVgzMTc5MCBpcyBub3Qgc2V0CiMgQ09ORklHX1NF
TlNPUlNfTUMzNFZSNTAwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19NQ1AzMDIxIGlz
IG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19UQzY1NCBpcyBub3Qgc2V0CiMgQ09ORklHX1NF
TlNPUlNfVFBTMjM4NjEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01SNzUyMDMgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEQ1hYIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VO
U09SU19MTTYzIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTcwIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0VOU09SU19MTTczIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTc1
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTc3IGlzIG5vdCBzZXQKIyBDT05GSUdf
U0VOU09SU19MTTc4IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTgwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19MTTgzIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19M
TTg1IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTg3IGlzIG5vdCBzZXQKIyBDT05G
SUdfU0VOU09SU19MTTkwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTkyIGlzIG5v
dCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTkzIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S
U19MTTk1MjM0IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MTTk1MjQxIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19MTTk1MjQ1IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S
U19QQzg3MzYwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19QQzg3NDI3IGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19OQ1Q2NjgzIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S
U19OQ1Q2Nzc1IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19OQ1Q2Nzc1X0kyQyBpcyBu
b3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTkNUNzgwMiBpcyBub3Qgc2V0CiMgQ09ORklHX1NF
TlNPUlNfTlBDTTdYWCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfT0NDX1A4X0kyQyBp
cyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfT1hQIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VO
U09SU19QQ0Y4NTkxIGlzIG5vdCBzZXQKIyBDT05GSUdfUE1CVVMgaXMgbm90IHNldAojIENP
TkZJR19TRU5TT1JTX1BUNTE2MUwgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1NCVFNJ
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19TQlJNSSBpcyBub3Qgc2V0CiMgQ09ORklH
X1NFTlNPUlNfU0hUMTUgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1NIVDIxIGlzIG5v
dCBzZXQKIyBDT05GSUdfU0VOU09SU19TSFQzeCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNP
UlNfU0hUNHggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1NIVEMxIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0VOU09SU19TSVM1NTk1IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19E
TUUxNzM3IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19FTUMxNDAzIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0VOU09SU19FTUMyMTAzIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19F
TUMyMzA1IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19FTUM2VzIwMSBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfU01TQzQ3TTEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JT
X1NNU0M0N00xOTIgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX1NUVFM3NTEgaXMgbm90IHNldAojIENPTkZJR19T
RU5TT1JTX0FEQzEyOEQ4MTggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEUzc4Mjgg
aXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FEUzc4NzEgaXMgbm90IHNldAojIENPTkZJ
R19TRU5TT1JTX0FNQzY4MjEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0lOQTIwOSBp
cyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfSU5BMlhYIGlzIG5vdCBzZXQKIyBDT05GSUdf
U0VOU09SU19JTkEyMzggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0lOQTMyMjEgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX1NQRDUxMTggaXMgbm90IHNldAojIENPTkZJR19T
RU5TT1JTX1RDNzQgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1RITUM1MCBpcyBub3Qg
c2V0CiMgQ09ORklHX1NFTlNPUlNfVE1QMTAyIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09S
U19UTVAxMDMgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1RNUDEwOCBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfVE1QNDAxIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19U
TVA0MjEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1RNUDQ2NCBpcyBub3Qgc2V0CiMg
Q09ORklHX1NFTlNPUlNfVE1QNTEzIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19WSUFf
Q1BVVEVNUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVklBNjg2QSBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfVlQxMjExIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19W
VDgyMzEgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4Mzc3M0cgaXMgbm90IHNldAoj
IENPTkZJR19TRU5TT1JTX1c4Mzc4MUQgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4
Mzc5MUQgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4Mzc5MkQgaXMgbm90IHNldAoj
IENPTkZJR19TRU5TT1JTX1c4Mzc5MyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfVzgz
Nzk1IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTPW0KIyBDT05GSUdfU0VO
U09SU19XODNMNzg2TkcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX1c4MzYyN0hGIGlz
IG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19XODM2MjdFSEYgaXMgbm90IHNldAoKIwojIEFD
UEkgZHJpdmVycwojCiMgQ09ORklHX1NFTlNPUlNfQUNQSV9QT1dFUiBpcyBub3Qgc2V0CiMg
Q09ORklHX1NFTlNPUlNfQVRLMDExMCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfQVNV
U19XTUkgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FTVVNfRUMgaXMgbm90IHNldAoj
IENPTkZJR19TRU5TT1JTX0hQX1dNSSBpcyBub3Qgc2V0CkNPTkZJR19USEVSTUFMPXkKIyBD
T05GSUdfVEhFUk1BTF9ORVRMSU5LIGlzIG5vdCBzZXQKIyBDT05GSUdfVEhFUk1BTF9TVEFU
SVNUSUNTIGlzIG5vdCBzZXQKIyBDT05GSUdfVEhFUk1BTF9ERUJVR0ZTIGlzIG5vdCBzZXQK
IyBDT05GSUdfVEhFUk1BTF9DT1JFX1RFU1RJTkcgaXMgbm90IHNldApDT05GSUdfVEhFUk1B
TF9FTUVSR0VOQ1lfUE9XRVJPRkZfREVMQVlfTVM9MApDT05GSUdfVEhFUk1BTF9ERUZBVUxU
X0dPVl9TVEVQX1dJU0U9eQojIENPTkZJR19USEVSTUFMX0RFRkFVTFRfR09WX0ZBSVJfU0hB
UkUgaXMgbm90IHNldAojIENPTkZJR19USEVSTUFMX0RFRkFVTFRfR09WX1VTRVJfU1BBQ0Ug
aXMgbm90IHNldAojIENPTkZJR19USEVSTUFMX0RFRkFVTFRfR09WX0JBTkdfQkFORyBpcyBu
b3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfR09WX0ZBSVJfU0hBUkUgaXMgbm90IHNldApDT05G
SUdfVEhFUk1BTF9HT1ZfU1RFUF9XSVNFPXkKQ09ORklHX1RIRVJNQUxfR09WX0JBTkdfQkFO
Rz15CiMgQ09ORklHX1RIRVJNQUxfR09WX1VTRVJfU1BBQ0UgaXMgbm90IHNldAojIENPTkZJ
R19ERVZGUkVRX1RIRVJNQUwgaXMgbm90IHNldAojIENPTkZJR19USEVSTUFMX0VNVUxBVElP
TiBpcyBub3Qgc2V0CgojCiMgSW50ZWwgdGhlcm1hbCBkcml2ZXJzCiMKIyBDT05GSUdfSU5U
RUxfUE9XRVJDTEFNUCBpcyBub3Qgc2V0CkNPTkZJR19YODZfVEhFUk1BTF9WRUNUT1I9eQoj
IENPTkZJR19YODZfUEtHX1RFTVBfVEhFUk1BTCBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVM
X1NPQ19EVFNfVEhFUk1BTCBpcyBub3Qgc2V0CgojCiMgQUNQSSBJTlQzNDBYIHRoZXJtYWwg
ZHJpdmVycwojCiMgZW5kIG9mIEFDUEkgSU5UMzQwWCB0aGVybWFsIGRyaXZlcnMKCiMgQ09O
RklHX0lOVEVMX1BDSF9USEVSTUFMIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5URUxfVENDX0NP
T0xJTkcgaXMgbm90IHNldAojIENPTkZJR19JTlRFTF9IRklfVEhFUk1BTCBpcyBub3Qgc2V0
CiMgZW5kIG9mIEludGVsIHRoZXJtYWwgZHJpdmVycwoKIyBDT05GSUdfV0FUQ0hET0cgaXMg
bm90IHNldApDT05GSUdfU1NCX1BPU1NJQkxFPXkKQ09ORklHX1NTQj1tCkNPTkZJR19TU0Jf
U1BST009eQpDT05GSUdfU1NCX1BDSUhPU1RfUE9TU0lCTEU9eQpDT05GSUdfU1NCX1BDSUhP
U1Q9eQpDT05GSUdfU1NCX1BDTUNJQUhPU1RfUE9TU0lCTEU9eQpDT05GSUdfU1NCX1BDTUNJ
QUhPU1Q9eQpDT05GSUdfU1NCX0RSSVZFUl9QQ0lDT1JFX1BPU1NJQkxFPXkKIyBDT05GSUdf
U1NCX0RSSVZFUl9QQ0lDT1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfU1NCX0RSSVZFUl9HUElP
IGlzIG5vdCBzZXQKQ09ORklHX0JDTUFfUE9TU0lCTEU9eQpDT05GSUdfQkNNQT1tCkNPTkZJ
R19CQ01BX0hPU1RfUENJX1BPU1NJQkxFPXkKQ09ORklHX0JDTUFfSE9TVF9QQ0k9eQojIENP
TkZJR19CQ01BX0hPU1RfU09DIGlzIG5vdCBzZXQKQ09ORklHX0JDTUFfRFJJVkVSX1BDST15
CiMgQ09ORklHX0JDTUFfRFJJVkVSX0dNQUNfQ01OIGlzIG5vdCBzZXQKIyBDT05GSUdfQkNN
QV9EUklWRVJfR1BJTyBpcyBub3Qgc2V0CiMgQ09ORklHX0JDTUFfREVCVUcgaXMgbm90IHNl
dAoKIwojIE11bHRpZnVuY3Rpb24gZGV2aWNlIGRyaXZlcnMKIwpDT05GSUdfTUZEX0NPUkU9
bQojIENPTkZJR19NRkRfQ1M1NTM1IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0FTMzcxMSBp
cyBub3Qgc2V0CiMgQ09ORklHX01GRF9TTVBSTyBpcyBub3Qgc2V0CiMgQ09ORklHX1BNSUNf
QURQNTUyMCBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9BQVQyODcwX0NPUkUgaXMgbm90IHNl
dAojIENPTkZJR19NRkRfQkNNNTkwWFggaXMgbm90IHNldAojIENPTkZJR19NRkRfQkQ5NTcx
TVdWIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0FYUDIwWF9JMkMgaXMgbm90IHNldAojIENP
TkZJR19NRkRfQ1M0Mkw0M19JMkMgaXMgbm90IHNldAojIENPTkZJR19NRkRfTUFERVJBIGlz
IG5vdCBzZXQKIyBDT05GSUdfUE1JQ19EQTkwM1ggaXMgbm90IHNldAojIENPTkZJR19NRkRf
REE5MDUyX1NQSSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9EQTkwNTJfSTJDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTUZEX0RBOTA1NSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9EQTkwNjIg
aXMgbm90IHNldAojIENPTkZJR19NRkRfREE5MDYzIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZE
X0RBOTE1MCBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9ETE4yIGlzIG5vdCBzZXQKIyBDT05G
SUdfTUZEX01DMTNYWFhfU1BJIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX01DMTNYWFhfSTJD
IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX01QMjYyOSBpcyBub3Qgc2V0CiMgQ09ORklHX01G
RF9JTlRFTF9RVUFSS19JMkNfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19MUENfSUNIPW0KQ09O
RklHX0xQQ19TQ0g9bQojIENPTkZJR19NRkRfSU5URUxfTFBTU19BQ1BJIGlzIG5vdCBzZXQK
IyBDT05GSUdfTUZEX0lOVEVMX0xQU1NfUENJIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0lO
VEVMX1BNQ19CWFQgaXMgbm90IHNldAojIENPTkZJR19NRkRfSVFTNjJYIGlzIG5vdCBzZXQK
IyBDT05GSUdfTUZEX0pBTlpfQ01PRElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0tFTVBM
RCBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF84OFBNODAwIGlzIG5vdCBzZXQKIyBDT05GSUdf
TUZEXzg4UE04MDUgaXMgbm90IHNldAojIENPTkZJR19NRkRfODhQTTg2MFggaXMgbm90IHNl
dAojIENPTkZJR19NRkRfTUFYMTQ1NzcgaXMgbm90IHNldAojIENPTkZJR19NRkRfTUFYNzc1
NDEgaXMgbm90IHNldAojIENPTkZJR19NRkRfTUFYNzc2OTMgaXMgbm90IHNldAojIENPTkZJ
R19NRkRfTUFYNzc4NDMgaXMgbm90IHNldAojIENPTkZJR19NRkRfTUFYODkwNyBpcyBub3Qg
c2V0CiMgQ09ORklHX01GRF9NQVg4OTI1IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX01BWDg5
OTcgaXMgbm90IHNldAojIENPTkZJR19NRkRfTUFYODk5OCBpcyBub3Qgc2V0CiMgQ09ORklH
X01GRF9NVDYzNjAgaXMgbm90IHNldAojIENPTkZJR19NRkRfTVQ2MzcwIGlzIG5vdCBzZXQK
IyBDT05GSUdfTUZEX01UNjM5NyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9NRU5GMjFCTUMg
aXMgbm90IHNldAojIENPTkZJR19NRkRfT0NFTE9UIGlzIG5vdCBzZXQKIyBDT05GSUdfRVpY
X1BDQVAgaXMgbm90IHNldAojIENPTkZJR19NRkRfVklQRVJCT0FSRCBpcyBub3Qgc2V0CiMg
Q09ORklHX01GRF9SRVRVIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1BDRjUwNjMzIGlzIG5v
dCBzZXQKIyBDT05GSUdfTUZEX1NZNzYzNkEgaXMgbm90IHNldAojIENPTkZJR19NRkRfUkRD
MzIxWCBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9SVDQ4MzEgaXMgbm90IHNldAojIENPTkZJ
R19NRkRfUlQ1MDMzIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1JUNTEyMCBpcyBub3Qgc2V0
CiMgQ09ORklHX01GRF9SQzVUNTgzIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1NJNDc2WF9D
T1JFIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1NNNTAxIGlzIG5vdCBzZXQKIyBDT05GSUdf
TUZEX1NLWTgxNDUyIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1NZU0NPTiBpcyBub3Qgc2V0
CiMgQ09ORklHX01GRF9MUDM5NDMgaXMgbm90IHNldAojIENPTkZJR19NRkRfTFA4Nzg4IGlz
IG5vdCBzZXQKIyBDT05GSUdfTUZEX1RJX0xNVSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9Q
QUxNQVMgaXMgbm90IHNldAojIENPTkZJR19UUFM2MTA1WCBpcyBub3Qgc2V0CiMgQ09ORklH
X1RQUzY1MDEwIGlzIG5vdCBzZXQKIyBDT05GSUdfVFBTNjUwN1ggaXMgbm90IHNldAojIENP
TkZJR19NRkRfVFBTNjUwODYgaXMgbm90IHNldAojIENPTkZJR19NRkRfVFBTNjUwOTAgaXMg
bm90IHNldAojIENPTkZJR19NRkRfVElfTFA4NzNYIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZE
X1RQUzY1ODZYIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1RQUzY1OTEwIGlzIG5vdCBzZXQK
IyBDT05GSUdfTUZEX1RQUzY1OTEyX0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9UUFM2
NTkxMl9TUEkgaXMgbm90IHNldAojIENPTkZJR19NRkRfVFBTNjU5NF9JMkMgaXMgbm90IHNl
dAojIENPTkZJR19NRkRfVFBTNjU5NF9TUEkgaXMgbm90IHNldAojIENPTkZJR19UV0w0MDMw
X0NPUkUgaXMgbm90IHNldAojIENPTkZJR19UV0w2MDQwX0NPUkUgaXMgbm90IHNldAojIENP
TkZJR19NRkRfV0wxMjczX0NPUkUgaXMgbm90IHNldAojIENPTkZJR19NRkRfTE0zNTMzIGlz
IG5vdCBzZXQKIyBDT05GSUdfTUZEX1RJTUJFUkRBTEUgaXMgbm90IHNldAojIENPTkZJR19N
RkRfVFFNWDg2IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1ZYODU1IGlzIG5vdCBzZXQKIyBD
T05GSUdfTUZEX0FSSVpPTkFfSTJDIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0FSSVpPTkFf
U1BJIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1dNODQwMCBpcyBub3Qgc2V0CiMgQ09ORklH
X01GRF9XTTgzMVhfSTJDIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX1dNODMxWF9TUEkgaXMg
bm90IHNldAojIENPTkZJR19NRkRfV004MzUwX0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX01G
RF9XTTg5OTQgaXMgbm90IHNldAojIENPTkZJR19NRkRfQVRDMjYwWF9JMkMgaXMgbm90IHNl
dAojIENPTkZJR19NRkRfQ1M0MEw1MF9JMkMgaXMgbm90IHNldAojIENPTkZJR19NRkRfQ1M0
MEw1MF9TUEkgaXMgbm90IHNldAojIENPTkZJR19NRkRfSU5URUxfTTEwX0JNQ19TUEkgaXMg
bm90IHNldAojIGVuZCBvZiBNdWx0aWZ1bmN0aW9uIGRldmljZSBkcml2ZXJzCgojIENPTkZJ
R19SRUdVTEFUT1IgaXMgbm90IHNldAojIENPTkZJR19SQ19DT1JFIGlzIG5vdCBzZXQKCiMK
IyBDRUMgc3VwcG9ydAojCiMgQ09ORklHX01FRElBX0NFQ19TVVBQT1JUIGlzIG5vdCBzZXQK
IyBlbmQgb2YgQ0VDIHN1cHBvcnQKCiMgQ09ORklHX01FRElBX1NVUFBPUlQgaXMgbm90IHNl
dAoKIwojIEdyYXBoaWNzIHN1cHBvcnQKIwpDT05GSUdfQVBFUlRVUkVfSEVMUEVSUz15CkNP
TkZJR19TQ1JFRU5fSU5GTz15CkNPTkZJR19WSURFTz15CiMgQ09ORklHX0FVWERJU1BMQVkg
aXMgbm90IHNldApDT05GSUdfQUdQPXkKIyBDT05GSUdfQUdQX0FMSSBpcyBub3Qgc2V0CiMg
Q09ORklHX0FHUF9BVEkgaXMgbm90IHNldAojIENPTkZJR19BR1BfQU1EIGlzIG5vdCBzZXQK
Q09ORklHX0FHUF9BTUQ2ND15CkNPTkZJR19BR1BfSU5URUw9eQojIENPTkZJR19BR1BfTlZJ
RElBIGlzIG5vdCBzZXQKQ09ORklHX0FHUF9TSVM9eQojIENPTkZJR19BR1BfU1dPUktTIGlz
IG5vdCBzZXQKQ09ORklHX0FHUF9WSUE9eQojIENPTkZJR19BR1BfRUZGSUNFT04gaXMgbm90
IHNldApDT05GSUdfSU5URUxfR1RUPXkKQ09ORklHX1ZHQV9TV0lUQ0hFUk9PPXkKQ09ORklH
X0RSTT1tCkNPTkZJR19EUk1fTUlQSV9EU0k9eQojIENPTkZJR19EUk1fREVCVUdfTU0gaXMg
bm90IHNldApDT05GSUdfRFJNX0tNU19IRUxQRVI9bQojIENPTkZJR19EUk1fUEFOSUMgaXMg
bm90IHNldAojIENPTkZJR19EUk1fREVCVUdfRFBfTVNUX1RPUE9MT0dZX1JFRlMgaXMgbm90
IHNldAojIENPTkZJR19EUk1fREVCVUdfTU9ERVNFVF9MT0NLIGlzIG5vdCBzZXQKQ09ORklH
X0RSTV9GQkRFVl9FTVVMQVRJT049eQpDT05GSUdfRFJNX0ZCREVWX09WRVJBTExPQz0xMDAK
IyBDT05GSUdfRFJNX0ZCREVWX0xFQUtfUEhZU19TTUVNIGlzIG5vdCBzZXQKQ09ORklHX0RS
TV9MT0FEX0VESURfRklSTVdBUkU9eQpDT05GSUdfRFJNX0RJU1BMQVlfSEVMUEVSPW0KIyBD
T05GSUdfRFJNX0RJU1BMQVlfRFBfQVVYX0NFQyBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9E
SVNQTEFZX0RQX0FVWF9DSEFSREVWIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9ESVNQTEFZX0RQ
X0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9IRENQX0hFTFBFUj15CkNPTkZJR19EUk1f
RElTUExBWV9IRE1JX0hFTFBFUj15CkNPTkZJR19EUk1fVFRNPW0KQ09ORklHX0RSTV9CVURE
WT1tCkNPTkZJR19EUk1fVFRNX0hFTFBFUj1tCkNPTkZJR19EUk1fR0VNX1NITUVNX0hFTFBF
Uj1tCgojCiMgSTJDIGVuY29kZXIgb3IgaGVscGVyIGNoaXBzCiMKQ09ORklHX0RSTV9JMkNf
Q0g3MDA2PW0KQ09ORklHX0RSTV9JMkNfU0lMMTY0PW0KIyBDT05GSUdfRFJNX0kyQ19OWFBf
VERBOTk4WCBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9JMkNfTlhQX1REQTk5NTAgaXMgbm90
IHNldAojIGVuZCBvZiBJMkMgZW5jb2RlciBvciBoZWxwZXIgY2hpcHMKCiMKIyBBUk0gZGV2
aWNlcwojCiMgZW5kIG9mIEFSTSBkZXZpY2VzCgojIENPTkZJR19EUk1fUkFERU9OIGlzIG5v
dCBzZXQKIyBDT05GSUdfRFJNX0FNREdQVSBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9OT1VW
RUFVIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9JOTE1PW0KQ09ORklHX0RSTV9JOTE1X0ZPUkNF
X1BST0JFPSIiCkNPTkZJR19EUk1fSTkxNV9DQVBUVVJFX0VSUk9SPXkKQ09ORklHX0RSTV9J
OTE1X0NPTVBSRVNTX0VSUk9SPXkKQ09ORklHX0RSTV9JOTE1X1VTRVJQVFI9eQoKIwojIGRy
bS9pOTE1IERlYnVnZ2luZwojCiMgQ09ORklHX0RSTV9JOTE1X1dFUlJPUiBpcyBub3Qgc2V0
CiMgQ09ORklHX0RSTV9JOTE1X1JFUExBWV9HUFVfSEFOR1NfQVBJIGlzIG5vdCBzZXQKIyBD
T05GSUdfRFJNX0k5MTVfREVCVUcgaXMgbm90IHNldAojIENPTkZJR19EUk1fSTkxNV9ERUJV
R19NTUlPIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0k5MTVfU1dfRkVOQ0VfREVCVUdfT0JK
RUNUUyBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9JOTE1X1NXX0ZFTkNFX0NIRUNLX0RBRyBp
cyBub3Qgc2V0CiMgQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dVQyBpcyBub3Qgc2V0CiMgQ09O
RklHX0RSTV9JOTE1X1NFTEZURVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0k5MTVfTE9X
X0xFVkVMX1RSQUNFUE9JTlRTIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0k5MTVfREVCVUdf
VkJMQU5LX0VWQURFIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElN
RV9QTSBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9JOTE1X0RFQlVHX1dBS0VSRUYgaXMgbm90
IHNldAojIGVuZCBvZiBkcm0vaTkxNSBEZWJ1Z2dpbmcKCiMKIyBkcm0vaTkxNSBQcm9maWxl
IEd1aWRlZCBPcHRpbWlzYXRpb24KIwpDT05GSUdfRFJNX0k5MTVfUkVRVUVTVF9USU1FT1VU
PTIwMDAwCkNPTkZJR19EUk1fSTkxNV9GRU5DRV9USU1FT1VUPTEwMDAwCkNPTkZJR19EUk1f
STkxNV9VU0VSRkFVTFRfQVVUT1NVU1BFTkQ9MjUwCkNPTkZJR19EUk1fSTkxNV9IRUFSVEJF
QVRfSU5URVJWQUw9MjUwMApDT05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUPTEwMApD
T05GSUdfRFJNX0k5MTVfUFJFRU1QVF9USU1FT1VUX0NPTVBVVEU9NzUwMApDT05GSUdfRFJN
X0k5MTVfTUFYX1JFUVVFU1RfQlVTWVdBSVQ9ODAwMApDT05GSUdfRFJNX0k5MTVfU1RPUF9U
SU1FT1VUPTEwMApDT05GSUdfRFJNX0k5MTVfVElNRVNMSUNFX0RVUkFUSU9OPTEKIyBlbmQg
b2YgZHJtL2k5MTUgUHJvZmlsZSBHdWlkZWQgT3B0aW1pc2F0aW9uCgojIENPTkZJR19EUk1f
WEUgaXMgbm90IHNldAojIENPTkZJR19EUk1fVkdFTSBpcyBub3Qgc2V0CiMgQ09ORklHX0RS
TV9WS01TIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9WTVdHRlg9bQojIENPTkZJR19EUk1fVk1X
R0ZYX01LU1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9HTUE1MDA9bQpDT05GSUdfRFJN
X1VETD1tCkNPTkZJR19EUk1fQVNUPW0KQ09ORklHX0RSTV9NR0FHMjAwPW0KIyBDT05GSUdf
RFJNX1FYTCBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9WSVJUSU9fR1BVIGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9QQU5FTD15CgojCiMgRGlzcGxheSBQYW5lbHMKIwojIENPTkZJR19EUk1f
UEFORUxfQVVPX0EwMzBKVE4wMSBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9QQU5FTF9JTElU
RUtfSUxJOTM0MSBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9QQU5FTF9PUklTRVRFQ0hfT1RB
NTYwMUEgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hT
Q1JFRU4gaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfV0lERUNISVBTX1dTMjQwMSBp
cyBub3Qgc2V0CiMgZW5kIG9mIERpc3BsYXkgUGFuZWxzCgpDT05GSUdfRFJNX0JSSURHRT15
CkNPTkZJR19EUk1fUEFORUxfQlJJREdFPXkKCiMKIyBEaXNwbGF5IEludGVyZmFjZSBCcmlk
Z2VzCiMKIyBDT05GSUdfRFJNX0FOQUxPR0lYX0FOWDc4WFggaXMgbm90IHNldAojIGVuZCBv
ZiBEaXNwbGF5IEludGVyZmFjZSBCcmlkZ2VzCgojIENPTkZJR19EUk1fRVROQVZJViBpcyBu
b3Qgc2V0CiMgQ09ORklHX0RSTV9CT0NIUyBpcyBub3Qgc2V0CkNPTkZJR19EUk1fQ0lSUlVT
X1FFTVU9bQojIENPTkZJR19EUk1fR00xMlUzMjAgaXMgbm90IHNldAojIENPTkZJR19EUk1f
UEFORUxfTUlQSV9EQkkgaXMgbm90IHNldAojIENPTkZJR19EUk1fU0lNUExFRFJNIGlzIG5v
dCBzZXQKIyBDT05GSUdfVElOWURSTV9IWDgzNTdEIGlzIG5vdCBzZXQKIyBDT05GSUdfVElO
WURSTV9JTEk5MTYzIGlzIG5vdCBzZXQKIyBDT05GSUdfVElOWURSTV9JTEk5MjI1IGlzIG5v
dCBzZXQKIyBDT05GSUdfVElOWURSTV9JTEk5MzQxIGlzIG5vdCBzZXQKIyBDT05GSUdfVElO
WURSTV9JTEk5NDg2IGlzIG5vdCBzZXQKIyBDT05GSUdfVElOWURSTV9NSTAyODNRVCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1RJTllEUk1fUkVQQVBFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1RJ
TllEUk1fU1Q3NTg2IGlzIG5vdCBzZXQKIyBDT05GSUdfVElOWURSTV9TVDc3MzVSIGlzIG5v
dCBzZXQKQ09ORklHX0RSTV9YRU49eQpDT05GSUdfRFJNX1hFTl9GUk9OVEVORD1tCiMgQ09O
RklHX0RSTV9WQk9YVklERU8gaXMgbm90IHNldAojIENPTkZJR19EUk1fR1VEIGlzIG5vdCBz
ZXQKIyBDT05GSUdfRFJNX1NTRDEzMFggaXMgbm90IHNldAojIENPTkZJR19EUk1fSFlQRVJW
IGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX1dFUlJPUiBpcyBub3Qgc2V0CkNPTkZJR19EUk1f
UEFORUxfT1JJRU5UQVRJT05fUVVJUktTPXkKCiMKIyBGcmFtZSBidWZmZXIgRGV2aWNlcwoj
CkNPTkZJR19GQj15CkNPTkZJR19GQl9IRUNVQkE9bQpDT05GSUdfRkJfU1ZHQUxJQj1tCkNP
TkZJR19GQl9DSVJSVVM9bQpDT05GSUdfRkJfUE0yPW0KQ09ORklHX0ZCX1BNMl9GSUZPX0RJ
U0NPTk5FQ1Q9eQpDT05GSUdfRkJfQ1lCRVIyMDAwPW0KQ09ORklHX0ZCX0NZQkVSMjAwMF9E
REM9eQpDT05GSUdfRkJfQVJDPW0KIyBDT05GSUdfRkJfQVNJTElBTlQgaXMgbm90IHNldAoj
IENPTkZJR19GQl9JTVNUVCBpcyBub3Qgc2V0CkNPTkZJR19GQl9WR0ExNj1tCkNPTkZJR19G
Ql9VVkVTQT1tCkNPTkZJR19GQl9WRVNBPXkKQ09ORklHX0ZCX0VGST15CkNPTkZJR19GQl9O
NDExPW0KQ09ORklHX0ZCX0hHQT1tCiMgQ09ORklHX0ZCX09QRU5DT1JFUyBpcyBub3Qgc2V0
CiMgQ09ORklHX0ZCX1MxRDEzWFhYIGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfTlZJRElBIGlz
IG5vdCBzZXQKIyBDT05GSUdfRkJfUklWQSBpcyBub3Qgc2V0CiMgQ09ORklHX0ZCX0k3NDAg
aXMgbm90IHNldAojIENPTkZJR19GQl9JODEwIGlzIG5vdCBzZXQKQ09ORklHX0ZCX01BVFJP
WD1tCkNPTkZJR19GQl9NQVRST1hfTUlMTEVOSVVNPXkKQ09ORklHX0ZCX01BVFJPWF9NWVNU
SVFVRT15CkNPTkZJR19GQl9NQVRST1hfRz15CkNPTkZJR19GQl9NQVRST1hfSTJDPW0KQ09O
RklHX0ZCX01BVFJPWF9NQVZFTj1tCkNPTkZJR19GQl9SQURFT049bQpDT05GSUdfRkJfUkFE
RU9OX0kyQz15CkNPTkZJR19GQl9SQURFT05fQkFDS0xJR0hUPXkKIyBDT05GSUdfRkJfUkFE
RU9OX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0ZCX0FUWTEyOD1tCkNPTkZJR19GQl9BVFkx
MjhfQkFDS0xJR0hUPXkKQ09ORklHX0ZCX0FUWT1tCkNPTkZJR19GQl9BVFlfQ1Q9eQojIENP
TkZJR19GQl9BVFlfR0VORVJJQ19MQ0QgaXMgbm90IHNldApDT05GSUdfRkJfQVRZX0dYPXkK
Q09ORklHX0ZCX0FUWV9CQUNLTElHSFQ9eQpDT05GSUdfRkJfUzM9bQpDT05GSUdfRkJfUzNf
RERDPXkKQ09ORklHX0ZCX1NBVkFHRT1tCiMgQ09ORklHX0ZCX1NBVkFHRV9JMkMgaXMgbm90
IHNldAojIENPTkZJR19GQl9TQVZBR0VfQUNDRUwgaXMgbm90IHNldApDT05GSUdfRkJfU0lT
PW0KQ09ORklHX0ZCX1NJU18zMDA9eQpDT05GSUdfRkJfU0lTXzMxNT15CiMgQ09ORklHX0ZC
X1ZJQSBpcyBub3Qgc2V0CkNPTkZJR19GQl9ORU9NQUdJQz1tCkNPTkZJR19GQl9LWVJPPW0K
Q09ORklHX0ZCXzNERlg9bQojIENPTkZJR19GQl8zREZYX0FDQ0VMIGlzIG5vdCBzZXQKQ09O
RklHX0ZCXzNERlhfSTJDPXkKQ09ORklHX0ZCX1ZUODYyMz1tCkNPTkZJR19GQl9UUklERU5U
PW0KQ09ORklHX0ZCX0FSSz1tCkNPTkZJR19GQl9QTTM9bQojIENPTkZJR19GQl9DQVJNSU5F
IGlzIG5vdCBzZXQKIyBDT05GSUdfRkJfR0VPREUgaXMgbm90IHNldApDT05GSUdfRkJfU01T
Q1VGWD1tCiMgQ09ORklHX0ZCX0lCTV9HWFQ0NTAwIGlzIG5vdCBzZXQKQ09ORklHX0ZCX1ZJ
UlRVQUw9bQpDT05GSUdfWEVOX0ZCREVWX0ZST05URU5EPXkKIyBDT05GSUdfRkJfTUVUUk9O
T01FIGlzIG5vdCBzZXQKQ09ORklHX0ZCX01CODYyWFg9bQpDT05GSUdfRkJfTUI4NjJYWF9Q
Q0lfR0RDPXkKQ09ORklHX0ZCX01CODYyWFhfSTJDPXkKQ09ORklHX0ZCX0hZUEVSVj1tCkNP
TkZJR19GQl9TSU1QTEU9eQojIENPTkZJR19GQl9TU0QxMzA3IGlzIG5vdCBzZXQKIyBDT05G
SUdfRkJfU003MTIgaXMgbm90IHNldApDT05GSUdfRkJfQ09SRT15CkNPTkZJR19GQl9OT1RJ
Rlk9eQpDT05GSUdfRklSTVdBUkVfRURJRD15CiMgQ09ORklHX0ZCX0RFVklDRSBpcyBub3Qg
c2V0CkNPTkZJR19GQl9EREM9bQpDT05GSUdfRkJfQ0ZCX0ZJTExSRUNUPXkKQ09ORklHX0ZC
X0NGQl9DT1BZQVJFQT15CkNPTkZJR19GQl9DRkJfSU1BR0VCTElUPXkKQ09ORklHX0ZCX1NZ
U19GSUxMUkVDVD15CkNPTkZJR19GQl9TWVNfQ09QWUFSRUE9eQpDT05GSUdfRkJfU1lTX0lN
QUdFQkxJVD15CiMgQ09ORklHX0ZCX0ZPUkVJR05fRU5ESUFOIGlzIG5vdCBzZXQKQ09ORklH
X0ZCX1NZU01FTV9GT1BTPXkKQ09ORklHX0ZCX0RFRkVSUkVEX0lPPXkKQ09ORklHX0ZCX0lP
TUVNX0ZPUFM9eQpDT05GSUdfRkJfSU9NRU1fSEVMUEVSUz15CkNPTkZJR19GQl9JT01FTV9I
RUxQRVJTX0RFRkVSUkVEPXkKQ09ORklHX0ZCX1NZU01FTV9IRUxQRVJTPXkKQ09ORklHX0ZC
X1NZU01FTV9IRUxQRVJTX0RFRkVSUkVEPXkKQ09ORklHX0ZCX0JBQ0tMSUdIVD1tCkNPTkZJ
R19GQl9NT0RFX0hFTFBFUlM9eQpDT05GSUdfRkJfVElMRUJMSVRUSU5HPXkKIyBlbmQgb2Yg
RnJhbWUgYnVmZmVyIERldmljZXMKCiMKIyBCYWNrbGlnaHQgJiBMQ0QgZGV2aWNlIHN1cHBv
cnQKIwojIENPTkZJR19MQ0RfQ0xBU1NfREVWSUNFIGlzIG5vdCBzZXQKQ09ORklHX0JBQ0tM
SUdIVF9DTEFTU19ERVZJQ0U9eQojIENPTkZJR19CQUNLTElHSFRfS1REMjUzIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQkFDS0xJR0hUX0tURDI4MDEgaXMgbm90IHNldAojIENPTkZJR19CQUNL
TElHSFRfS1RaODg2NiBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfQVBQTEU9bQojIENP
TkZJR19CQUNLTElHSFRfUUNPTV9XTEVEIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFDS0xJR0hU
X1NBSEFSQSBpcyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tMSUdIVF9BRFA4ODYwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQkFDS0xJR0hUX0FEUDg4NzAgaXMgbm90IHNldAojIENPTkZJR19CQUNL
TElHSFRfTE0zNTA5IGlzIG5vdCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX0xNMzYzOSBpcyBu
b3Qgc2V0CiMgQ09ORklHX0JBQ0tMSUdIVF9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFD
S0xJR0hUX0xWNTIwN0xQIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX0JENjEwNyBp
cyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tMSUdIVF9BUkNYQ05OIGlzIG5vdCBzZXQKIyBlbmQg
b2YgQmFja2xpZ2h0ICYgTENEIGRldmljZSBzdXBwb3J0CgpDT05GSUdfVkdBU1RBVEU9bQpD
T05GSUdfVklERU9NT0RFX0hFTFBFUlM9eQpDT05GSUdfSERNST15CgojCiMgQ29uc29sZSBk
aXNwbGF5IGRyaXZlciBzdXBwb3J0CiMKQ09ORklHX1ZHQV9DT05TT0xFPXkKQ09ORklHX0RV
TU1ZX0NPTlNPTEU9eQpDT05GSUdfRFVNTVlfQ09OU09MRV9DT0xVTU5TPTgwCkNPTkZJR19E
VU1NWV9DT05TT0xFX1JPV1M9MjUKQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEU9eQojIENP
TkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX0xFR0FDWV9BQ0NFTEVSQVRJT04gaXMgbm90IHNl
dApDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ERVRFQ1RfUFJJTUFSWT15CkNPTkZJR19G
UkFNRUJVRkZFUl9DT05TT0xFX1JPVEFUSU9OPXkKIyBDT05GSUdfRlJBTUVCVUZGRVJfQ09O
U09MRV9ERUZFUlJFRF9UQUtFT1ZFUiBpcyBub3Qgc2V0CiMgZW5kIG9mIENvbnNvbGUgZGlz
cGxheSBkcml2ZXIgc3VwcG9ydAoKIyBDT05GSUdfTE9HTyBpcyBub3Qgc2V0CiMgZW5kIG9m
IEdyYXBoaWNzIHN1cHBvcnQKCiMgQ09ORklHX0RSTV9BQ0NFTCBpcyBub3Qgc2V0CiMgQ09O
RklHX1NPVU5EIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1NVUFBPUlQgaXMgbm90IHNldApD
T05GSUdfVVNCX09IQ0lfTElUVExFX0VORElBTj15CkNPTkZJR19VU0JfU1VQUE9SVD15CkNP
TkZJR19VU0JfQ09NTU9OPW0KIyBDT05GSUdfVVNCX0xFRF9UUklHIGlzIG5vdCBzZXQKIyBD
T05GSUdfVVNCX1VMUElfQlVTIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0NPTk5fR1BJTyBp
cyBub3Qgc2V0CkNPTkZJR19VU0JfQVJDSF9IQVNfSENEPXkKQ09ORklHX1VTQj1tCkNPTkZJ
R19VU0JfUENJPXkKIyBDT05GSUdfVVNCX1BDSV9BTUQgaXMgbm90IHNldApDT05GSUdfVVNC
X0FOTk9VTkNFX05FV19ERVZJQ0VTPXkKCiMKIyBNaXNjZWxsYW5lb3VzIFVTQiBvcHRpb25z
CiMKQ09ORklHX1VTQl9ERUZBVUxUX1BFUlNJU1Q9eQojIENPTkZJR19VU0JfRkVXX0lOSVRf
UkVUUklFUyBpcyBub3Qgc2V0CkNPTkZJR19VU0JfRFlOQU1JQ19NSU5PUlM9eQojIENPTkZJ
R19VU0JfT1RHIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX09UR19QUk9EVUNUTElTVCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1VTQl9PVEdfRElTQUJMRV9FWFRFUk5BTF9IVUIgaXMgbm90IHNl
dAojIENPTkZJR19VU0JfTEVEU19UUklHR0VSX1VTQlBPUlQgaXMgbm90IHNldApDT05GSUdf
VVNCX0FVVE9TVVNQRU5EX0RFTEFZPTIKQ09ORklHX1VTQl9ERUZBVUxUX0FVVEhPUklaQVRJ
T05fTU9ERT0xCiMgQ09ORklHX1VTQl9NT04gaXMgbm90IHNldAoKIwojIFVTQiBIb3N0IENv
bnRyb2xsZXIgRHJpdmVycwojCiMgQ09ORklHX1VTQl9DNjdYMDBfSENEIGlzIG5vdCBzZXQK
IyBDT05GSUdfVVNCX1hIQ0lfSENEIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0VIQ0lfSENE
IGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX09YVTIxMEhQX0hDRCBpcyBub3Qgc2V0CiMgQ09O
RklHX1VTQl9JU1AxMTZYX0hDRCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9NQVgzNDIxX0hD
RCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9PSENJX0hDRCBpcyBub3Qgc2V0CiMgQ09ORklH
X1VTQl9VSENJX0hDRCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TTDgxMV9IQ0QgaXMgbm90
IHNldAojIENPTkZJR19VU0JfUjhBNjY1OTdfSENEIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNC
X0hDRF9CQ01BIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0hDRF9TU0IgaXMgbm90IHNldAoj
IENPTkZJR19VU0JfSENEX1RFU1RfTU9ERSBpcyBub3Qgc2V0CkNPTkZJR19VU0JfWEVOX0hD
RD1tCgojCiMgVVNCIERldmljZSBDbGFzcyBkcml2ZXJzCiMKIyBDT05GSUdfVVNCX0FDTSBp
cyBub3Qgc2V0CiMgQ09ORklHX1VTQl9QUklOVEVSIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNC
X1dETSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9UTUMgaXMgbm90IHNldAoKIwojIE5PVEU6
IFVTQl9TVE9SQUdFIGRlcGVuZHMgb24gU0NTSSBidXQgQkxLX0RFVl9TRCBtYXkKIwoKIwoj
IGFsc28gYmUgbmVlZGVkOyBzZWUgVVNCX1NUT1JBR0UgSGVscCBmb3IgbW9yZSBpbmZvCiMK
Q09ORklHX1VTQl9TVE9SQUdFPW0KIyBDT05GSUdfVVNCX1NUT1JBR0VfREVCVUcgaXMgbm90
IHNldAojIENPTkZJR19VU0JfU1RPUkFHRV9SRUFMVEVLIGlzIG5vdCBzZXQKIyBDT05GSUdf
VVNCX1NUT1JBR0VfREFUQUZBQiBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TVE9SQUdFX0ZS
RUVDT00gaXMgbm90IHNldAojIENPTkZJR19VU0JfU1RPUkFHRV9JU0QyMDAgaXMgbm90IHNl
dAojIENPTkZJR19VU0JfU1RPUkFHRV9VU0JBVCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9T
VE9SQUdFX1NERFIwOSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TVE9SQUdFX1NERFI1NSBp
cyBub3Qgc2V0CiMgQ09ORklHX1VTQl9TVE9SQUdFX0pVTVBTSE9UIGlzIG5vdCBzZXQKIyBD
T05GSUdfVVNCX1NUT1JBR0VfQUxBVURBIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1NUT1JB
R0VfT05FVE9VQ0ggaXMgbm90IHNldAojIENPTkZJR19VU0JfU1RPUkFHRV9LQVJNQSBpcyBu
b3Qgc2V0CiMgQ09ORklHX1VTQl9TVE9SQUdFX0NZUFJFU1NfQVRBQ0IgaXMgbm90IHNldAoj
IENPTkZJR19VU0JfU1RPUkFHRV9FTkVfVUI2MjUwIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNC
X1VBUyBpcyBub3Qgc2V0CgojCiMgVVNCIEltYWdpbmcgZGV2aWNlcwojCiMgQ09ORklHX1VT
Ql9NREM4MDAgaXMgbm90IHNldAojIENPTkZJR19VU0JfTUlDUk9URUsgaXMgbm90IHNldAoj
IENPTkZJR19VU0JJUF9DT1JFIGlzIG5vdCBzZXQKCiMKIyBVU0IgZHVhbC1tb2RlIGNvbnRy
b2xsZXIgZHJpdmVycwojCiMgQ09ORklHX1VTQl9DRE5TX1NVUFBPUlQgaXMgbm90IHNldAoj
IENPTkZJR19VU0JfTVVTQl9IRFJDIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0RXQzMgaXMg
bm90IHNldAojIENPTkZJR19VU0JfRFdDMiBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9JU1Ax
NzYwIGlzIG5vdCBzZXQKCiMKIyBVU0IgcG9ydCBkcml2ZXJzCiMKIyBDT05GSUdfVVNCX1NF
UklBTCBpcyBub3Qgc2V0CgojCiMgVVNCIE1pc2NlbGxhbmVvdXMgZHJpdmVycwojCiMgQ09O
RklHX1VTQl9FTUk2MiBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9FTUkyNiBpcyBub3Qgc2V0
CiMgQ09ORklHX1VTQl9BRFVUVVggaXMgbm90IHNldAojIENPTkZJR19VU0JfU0VWU0VHIGlz
IG5vdCBzZXQKIyBDT05GSUdfVVNCX0xFR09UT1dFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1VT
Ql9MQ0QgaXMgbm90IHNldAojIENPTkZJR19VU0JfQ1lQUkVTU19DWTdDNjMgaXMgbm90IHNl
dAojIENPTkZJR19VU0JfQ1lUSEVSTSBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9JRE1PVVNF
IGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0FQUExFRElTUExBWSBpcyBub3Qgc2V0CiMgQ09O
RklHX0FQUExFX01GSV9GQVNUQ0hBUkdFIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0xKQ0Eg
aXMgbm90IHNldAojIENPTkZJR19VU0JfTEQgaXMgbm90IHNldAojIENPTkZJR19VU0JfVFJB
TkNFVklCUkFUT1IgaXMgbm90IHNldAojIENPTkZJR19VU0JfSU9XQVJSSU9SIGlzIG5vdCBz
ZXQKIyBDT05GSUdfVVNCX1RFU1QgaXMgbm90IHNldAojIENPTkZJR19VU0JfRUhTRVRfVEVT
VF9GSVhUVVJFIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0lTSUdIVEZXIGlzIG5vdCBzZXQK
IyBDT05GSUdfVVNCX1lVUkVYIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0VaVVNCX0ZYMiBp
cyBub3Qgc2V0CiMgQ09ORklHX1VTQl9IVUJfVVNCMjUxWEIgaXMgbm90IHNldAojIENPTkZJ
R19VU0JfSFNJQ19VU0IzNTAzIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX0hTSUNfVVNCNDYw
NCBpcyBub3Qgc2V0CiMgQ09ORklHX1VTQl9MSU5LX0xBWUVSX1RFU1QgaXMgbm90IHNldAoj
IENPTkZJR19VU0JfQ0hBT1NLRVkgaXMgbm90IHNldAojIENPTkZJR19VU0JfQVRNIGlzIG5v
dCBzZXQKCiMKIyBVU0IgUGh5c2ljYWwgTGF5ZXIgZHJpdmVycwojCiMgQ09ORklHX05PUF9V
U0JfWENFSVYgaXMgbm90IHNldAojIENPTkZJR19VU0JfR1BJT19WQlVTIGlzIG5vdCBzZXQK
IyBDT05GSUdfVVNCX0lTUDEzMDEgaXMgbm90IHNldAojIGVuZCBvZiBVU0IgUGh5c2ljYWwg
TGF5ZXIgZHJpdmVycwoKIyBDT05GSUdfVVNCX0dBREdFVCBpcyBub3Qgc2V0CiMgQ09ORklH
X1RZUEVDIGlzIG5vdCBzZXQKIyBDT05GSUdfVVNCX1JPTEVfU1dJVENIIGlzIG5vdCBzZXQK
IyBDT05GSUdfTU1DIGlzIG5vdCBzZXQKQ09ORklHX1NDU0lfVUZTSENEPW0KIyBDT05GSUdf
U0NTSV9VRlNfQlNHIGlzIG5vdCBzZXQKIyBDT05GSUdfU0NTSV9VRlNfSFdNT04gaXMgbm90
IHNldApDT05GSUdfU0NTSV9VRlNIQ0RfUENJPW0KIyBDT05GSUdfU0NTSV9VRlNfRFdDX1RD
X1BDSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDU0lfVUZTSENEX1BMQVRGT1JNIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTUVNU1RJQ0sgaXMgbm90IHNldApDT05GSUdfTkVXX0xFRFM9eQpDT05G
SUdfTEVEU19DTEFTUz15CiMgQ09ORklHX0xFRFNfQ0xBU1NfRkxBU0ggaXMgbm90IHNldAoj
IENPTkZJR19MRURTX0NMQVNTX01VTFRJQ09MT1IgaXMgbm90IHNldAojIENPTkZJR19MRURT
X0JSSUdIVE5FU1NfSFdfQ0hBTkdFRCBpcyBub3Qgc2V0CgojCiMgTEVEIGRyaXZlcnMKIwoj
IENPTkZJR19MRURTX0FQVSBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfQVcyMDBYWCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0xFRFNfTE0zNTMwIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19M
TTM1MzIgaXMgbm90IHNldAojIENPTkZJR19MRURTX0xNMzY0MiBpcyBub3Qgc2V0CiMgQ09O
RklHX0xFRFNfUENBOTUzMiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfR1BJTyBpcyBub3Qg
c2V0CiMgQ09ORklHX0xFRFNfTFAzOTQ0IGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19MUDM5
NTIgaXMgbm90IHNldAojIENPTkZJR19MRURTX1BDQTk1NVggaXMgbm90IHNldAojIENPTkZJ
R19MRURTX1BDQTk2M1ggaXMgbm90IHNldAojIENPTkZJR19MRURTX1BDQTk5NVggaXMgbm90
IHNldAojIENPTkZJR19MRURTX0RBQzEyNFMwODUgaXMgbm90IHNldAojIENPTkZJR19MRURT
X0JEMjYwNk1WViBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfQkQyODAyIGlzIG5vdCBzZXQK
IyBDT05GSUdfTEVEU19JTlRFTF9TUzQyMDAgaXMgbm90IHNldAojIENPTkZJR19MRURTX0xU
MzU5MyBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfVENBNjUwNyBpcyBub3Qgc2V0CiMgQ09O
RklHX0xFRFNfVExDNTkxWFggaXMgbm90IHNldAojIENPTkZJR19MRURTX0xNMzU1eCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0xFRFNfT1QyMDAgaXMgbm90IHNldAojIENPTkZJR19MRURTX0lT
MzFGTDMxOVggaXMgbm90IHNldAoKIwojIExFRCBkcml2ZXIgZm9yIGJsaW5rKDEpIFVTQiBS
R0IgTEVEIGlzIHVuZGVyIFNwZWNpYWwgSElEIGRyaXZlcnMgKEhJRF9USElOR00pCiMKIyBD
T05GSUdfTEVEU19CTElOS00gaXMgbm90IHNldAojIENPTkZJR19MRURTX01MWENQTEQgaXMg
bm90IHNldAojIENPTkZJR19MRURTX01MWFJFRyBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNf
VVNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTklDNzhCWCBpcyBub3Qgc2V0CiMgQ09O
RklHX0xFRFNfU1BJX0JZVEUgaXMgbm90IHNldAoKIwojIEZsYXNoIGFuZCBUb3JjaCBMRUQg
ZHJpdmVycwojCgojCiMgUkdCIExFRCBkcml2ZXJzCiMKCiMKIyBMRUQgVHJpZ2dlcnMKIwpD
T05GSUdfTEVEU19UUklHR0VSUz15CkNPTkZJR19MRURTX1RSSUdHRVJfVElNRVI9bQojIENP
TkZJR19MRURTX1RSSUdHRVJfT05FU0hPVCBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfVFJJ
R0dFUl9ESVNLIGlzIG5vdCBzZXQKQ09ORklHX0xFRFNfVFJJR0dFUl9IRUFSVEJFQVQ9bQpD
T05GSUdfTEVEU19UUklHR0VSX0JBQ0tMSUdIVD1tCiMgQ09ORklHX0xFRFNfVFJJR0dFUl9D
UFUgaXMgbm90IHNldAojIENPTkZJR19MRURTX1RSSUdHRVJfQUNUSVZJVFkgaXMgbm90IHNl
dAojIENPTkZJR19MRURTX1RSSUdHRVJfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19MRURTX1RS
SUdHRVJfREVGQVVMVF9PTj1tCgojCiMgaXB0YWJsZXMgdHJpZ2dlciBpcyB1bmRlciBOZXRm
aWx0ZXIgY29uZmlnIChMRUQgdGFyZ2V0KQojCiMgQ09ORklHX0xFRFNfVFJJR0dFUl9UUkFO
U0lFTlQgaXMgbm90IHNldAojIENPTkZJR19MRURTX1RSSUdHRVJfQ0FNRVJBIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTEVEU19UUklHR0VSX1BBTklDIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVE
U19UUklHR0VSX05FVERFViBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfVFJJR0dFUl9QQVRU
RVJOIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19UUklHR0VSX1RUWSBpcyBub3Qgc2V0CiMg
Q09ORklHX0xFRFNfVFJJR0dFUl9JTlBVVF9FVkVOVFMgaXMgbm90IHNldAoKIwojIFNpbXBs
ZSBMRUQgZHJpdmVycwojCiMgQ09ORklHX0FDQ0VTU0lCSUxJVFkgaXMgbm90IHNldAojIENP
TkZJR19JTkZJTklCQU5EIGlzIG5vdCBzZXQKQ09ORklHX0VEQUNfQVRPTUlDX1NDUlVCPXkK
Q09ORklHX0VEQUNfU1VQUE9SVD15CiMgQ09ORklHX0VEQUMgaXMgbm90IHNldApDT05GSUdf
UlRDX0xJQj15CkNPTkZJR19SVENfTUMxNDY4MThfTElCPXkKQ09ORklHX1JUQ19DTEFTUz15
CkNPTkZJR19SVENfSENUT1NZUz15CkNPTkZJR19SVENfSENUT1NZU19ERVZJQ0U9InJ0YzAi
CkNPTkZJR19SVENfU1lTVE9IQz15CkNPTkZJR19SVENfU1lTVE9IQ19ERVZJQ0U9InJ0YzAi
CiMgQ09ORklHX1JUQ19ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19SVENfTlZNRU09eQoKIwoj
IFJUQyBpbnRlcmZhY2VzCiMKQ09ORklHX1JUQ19JTlRGX1NZU0ZTPXkKQ09ORklHX1JUQ19J
TlRGX1BST0M9eQpDT05GSUdfUlRDX0lOVEZfREVWPXkKIyBDT05GSUdfUlRDX0lOVEZfREVW
X1VJRV9FTVVMIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9URVNUIGlzIG5vdCBzZXQK
CiMKIyBJMkMgUlRDIGRyaXZlcnMKIwojIENPTkZJR19SVENfRFJWX0FCQjVaRVMzIGlzIG5v
dCBzZXQKIyBDT05GSUdfUlRDX0RSVl9BQkVPWjkgaXMgbm90IHNldAojIENPTkZJR19SVENf
RFJWX0FCWDgwWCBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxMzA3IGlzIG5vdCBz
ZXQKIyBDT05GSUdfUlRDX0RSVl9EUzEzNzQgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJW
X0RTMTY3MiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTUFYNjkwMCBpcyBub3Qgc2V0
CiMgQ09ORklHX1JUQ19EUlZfTUFYMzEzMzUgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJW
X1JTNUMzNzIgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0lTTDEyMDggaXMgbm90IHNl
dAojIENPTkZJR19SVENfRFJWX0lTTDEyMDIyIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RS
Vl9YMTIwNSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfUENGODUyMyBpcyBub3Qgc2V0
CiMgQ09ORklHX1JUQ19EUlZfUENGODUwNjMgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJW
X1BDRjg1MzYzIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTYzIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUlRDX0RSVl9QQ0Y4NTgzIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RS
Vl9NNDFUODAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0JRMzJLIGlzIG5vdCBzZXQK
IyBDT05GSUdfUlRDX0RSVl9TMzUzOTBBIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9G
TTMxMzAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1JYODAxMCBpcyBub3Qgc2V0CiMg
Q09ORklHX1JUQ19EUlZfUlg4MTExIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9SWDg1
ODEgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1JYODAyNSBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfRU0zMDI3IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9SVjMwMjgg
aXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1JWMzAzMiBpcyBub3Qgc2V0CiMgQ09ORklH
X1JUQ19EUlZfUlY4ODAzIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9TRDI0MDVBTCBp
cyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfU0QzMDc4IGlzIG5vdCBzZXQKCiMKIyBTUEkg
UlRDIGRyaXZlcnMKIwojIENPTkZJR19SVENfRFJWX000MVQ5MyBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfTTQxVDk0IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9EUzEzMDIg
aXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RTMTMwNSBpcyBub3Qgc2V0CiMgQ09ORklH
X1JUQ19EUlZfRFMxMzQzIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9EUzEzNDcgaXMg
bm90IHNldAojIENPTkZJR19SVENfRFJWX0RTMTM5MCBpcyBub3Qgc2V0CiMgQ09ORklHX1JU
Q19EUlZfTUFYNjkxNiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfUjk3MDEgaXMgbm90
IHNldAojIENPTkZJR19SVENfRFJWX1JYNDU4MSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19E
UlZfUlM1QzM0OCBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTUFYNjkwMiBpcyBub3Qg
c2V0CiMgQ09ORklHX1JUQ19EUlZfUENGMjEyMyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19E
UlZfTUNQNzk1IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19JMkNfQU5EX1NQST15CgojCiMgU1BJ
IGFuZCBJMkMgUlRDIGRyaXZlcnMKIwojIENPTkZJR19SVENfRFJWX0RTMzIzMiBpcyBub3Qg
c2V0CiMgQ09ORklHX1JUQ19EUlZfUENGMjEyNyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19E
UlZfUlYzMDI5QzIgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1JYNjExMCBpcyBub3Qg
c2V0CgojCiMgUGxhdGZvcm0gUlRDIGRyaXZlcnMKIwpDT05GSUdfUlRDX0RSVl9DTU9TPXkK
IyBDT05GSUdfUlRDX0RSVl9EUzEyODYgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RT
MTUxMSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNTUzIGlzIG5vdCBzZXQKIyBD
T05GSUdfUlRDX0RSVl9EUzE2ODVfRkFNSUxZIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RS
Vl9EUzE3NDIgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RTMjQwNCBpcyBub3Qgc2V0
CiMgQ09ORklHX1JUQ19EUlZfU1RLMTdUQTggaXMgbm90IHNldAojIENPTkZJR19SVENfRFJW
X000OFQ4NiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTTQ4VDM1IGlzIG5vdCBzZXQK
IyBDT05GSUdfUlRDX0RSVl9NNDhUNTkgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX01T
TTYyNDIgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX1JQNUMwMSBpcyBub3Qgc2V0Cgoj
CiMgb24tQ1BVIFJUQyBkcml2ZXJzCiMKIyBDT05GSUdfUlRDX0RSVl9GVFJUQzAxMCBpcyBu
b3Qgc2V0CgojCiMgSElEIFNlbnNvciBSVEMgZHJpdmVycwojCiMgQ09ORklHX1JUQ19EUlZf
R09MREZJU0ggaXMgbm90IHNldApDT05GSUdfRE1BREVWSUNFUz15CiMgQ09ORklHX0RNQURF
VklDRVNfREVCVUcgaXMgbm90IHNldAoKIwojIERNQSBEZXZpY2VzCiMKQ09ORklHX0RNQV9F
TkdJTkU9eQpDT05GSUdfRE1BX0FDUEk9eQojIENPTkZJR19BTFRFUkFfTVNHRE1BIGlzIG5v
dCBzZXQKIyBDT05GSUdfSU5URUxfSURNQTY0IGlzIG5vdCBzZXQKIyBDT05GSUdfUENIX0RN
QSBpcyBub3Qgc2V0CiMgQ09ORklHX1BMWF9ETUEgaXMgbm90IHNldAojIENPTkZJR19YSUxJ
TlhfRE1BIGlzIG5vdCBzZXQKIyBDT05GSUdfWElMSU5YX1hETUEgaXMgbm90IHNldAojIENP
TkZJR19BTURfUURNQSBpcyBub3Qgc2V0CiMgQ09ORklHX1FDT01fSElETUFfTUdNVCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1FDT01fSElETUEgaXMgbm90IHNldApDT05GSUdfRFdfRE1BQ19D
T1JFPXkKIyBDT05GSUdfRFdfRE1BQyBpcyBub3Qgc2V0CkNPTkZJR19EV19ETUFDX1BDST15
CiMgQ09ORklHX0RXX0VETUEgaXMgbm90IHNldAojIENPTkZJR19TRl9QRE1BIGlzIG5vdCBz
ZXQKIyBDT05GSUdfSU5URUxfTERNQSBpcyBub3Qgc2V0CgojCiMgRE1BIENsaWVudHMKIwpD
T05GSUdfQVNZTkNfVFhfRE1BPXkKIyBDT05GSUdfRE1BVEVTVCBpcyBub3Qgc2V0CgojCiMg
RE1BQlVGIG9wdGlvbnMKIwpDT05GSUdfU1lOQ19GSUxFPXkKIyBDT05GSUdfU1dfU1lOQyBp
cyBub3Qgc2V0CiMgQ09ORklHX1VETUFCVUYgaXMgbm90IHNldAojIENPTkZJR19ETUFCVUZf
TU9WRV9OT1RJRlkgaXMgbm90IHNldAojIENPTkZJR19ETUFCVUZfREVCVUcgaXMgbm90IHNl
dAojIENPTkZJR19ETUFCVUZfU0VMRlRFU1RTIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVG
X0hFQVBTIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVGX1NZU0ZTX1NUQVRTIGlzIG5vdCBz
ZXQKIyBlbmQgb2YgRE1BQlVGIG9wdGlvbnMKCkNPTkZJR19VSU89bQojIENPTkZJR19VSU9f
Q0lGIGlzIG5vdCBzZXQKIyBDT05GSUdfVUlPX1BEUlZfR0VOSVJRIGlzIG5vdCBzZXQKIyBD
T05GSUdfVUlPX0RNRU1fR0VOSVJRIGlzIG5vdCBzZXQKIyBDT05GSUdfVUlPX0FFQyBpcyBu
b3Qgc2V0CiMgQ09ORklHX1VJT19TRVJDT1MzIGlzIG5vdCBzZXQKIyBDT05GSUdfVUlPX1BD
SV9HRU5FUklDIGlzIG5vdCBzZXQKIyBDT05GSUdfVUlPX05FVFggaXMgbm90IHNldAojIENP
TkZJR19VSU9fTUY2MjQgaXMgbm90IHNldAojIENPTkZJR19VSU9fSFZfR0VORVJJQyBpcyBu
b3Qgc2V0CiMgQ09ORklHX1ZGSU8gaXMgbm90IHNldApDT05GSUdfSVJRX0JZUEFTU19NQU5B
R0VSPXkKQ09ORklHX1ZJUlRfRFJJVkVSUz15CiMgQ09ORklHX1ZNR0VOSUQgaXMgbm90IHNl
dAojIENPTkZJR19WQk9YR1VFU1QgaXMgbm90IHNldAojIENPTkZJR19OSVRST19FTkNMQVZF
UyBpcyBub3Qgc2V0CkNPTkZJR19WSVJUSU9fQU5DSE9SPXkKQ09ORklHX1ZJUlRJTz1tCkNP
TkZJR19WSVJUSU9fUENJX0xJQj1tCkNPTkZJR19WSVJUSU9fUENJX0xJQl9MRUdBQ1k9bQpD
T05GSUdfVklSVElPX01FTlU9eQpDT05GSUdfVklSVElPX1BDST1tCkNPTkZJR19WSVJUSU9f
UENJX0FETUlOX0xFR0FDWT15CkNPTkZJR19WSVJUSU9fUENJX0xFR0FDWT15CkNPTkZJR19W
SVJUSU9fQkFMTE9PTj1tCiMgQ09ORklHX1ZJUlRJT19JTlBVVCBpcyBub3Qgc2V0CiMgQ09O
RklHX1ZJUlRJT19NTUlPIGlzIG5vdCBzZXQKIyBDT05GSUdfVklSVElPX0RFQlVHIGlzIG5v
dCBzZXQKIyBDT05GSUdfVkRQQSBpcyBub3Qgc2V0CiMgQ09ORklHX1ZIT1NUX01FTlUgaXMg
bm90IHNldAoKIwojIE1pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnQKIwpDT05GSUdf
SFlQRVJWPW0KQ09ORklHX0hZUEVSVl9USU1FUj15CkNPTkZJR19IWVBFUlZfVVRJTFM9bQpD
T05GSUdfSFlQRVJWX0JBTExPT049bQojIGVuZCBvZiBNaWNyb3NvZnQgSHlwZXItViBndWVz
dCBzdXBwb3J0CgojCiMgWGVuIGRyaXZlciBzdXBwb3J0CiMKQ09ORklHX1hFTl9CQUxMT09O
PXkKQ09ORklHX1hFTl9TQ1JVQl9QQUdFU19ERUZBVUxUPXkKQ09ORklHX1hFTl9ERVZfRVZU
Q0hOPXkKQ09ORklHX1hFTl9CQUNLRU5EPXkKQ09ORklHX1hFTkZTPXkKQ09ORklHX1hFTl9D
T01QQVRfWEVORlM9eQpDT05GSUdfWEVOX1NZU19IWVBFUlZJU09SPXkKQ09ORklHX1hFTl9Y
RU5CVVNfRlJPTlRFTkQ9eQpDT05GSUdfWEVOX0dOVERFVj15CkNPTkZJR19YRU5fR05UREVW
X0RNQUJVRj15CkNPTkZJR19YRU5fR1JBTlRfREVWX0FMTE9DPXkKQ09ORklHX1hFTl9HUkFO
VF9ETUFfQUxMT0M9eQpDT05GSUdfWEVOX1BDSV9TVFVCPXkKQ09ORklHX1hFTl9QQ0lERVZf
QkFDS0VORD15CkNPTkZJR19YRU5fUFZDQUxMU19GUk9OVEVORD15CkNPTkZJR19YRU5fUFZD
QUxMU19CQUNLRU5EPXkKQ09ORklHX1hFTl9TQ1NJX0JBQ0tFTkQ9bQpDT05GSUdfWEVOX1BS
SVZDTUQ9eQpDT05GSUdfWEVOX0FVVE9fWExBVEU9eQpDT05GSUdfWEVOX0FDUEk9eQpDT05G
SUdfWEVOX0ZST05UX1BHRElSX1NIQlVGPW0KIyBDT05GSUdfWEVOX1ZJUlRJTyBpcyBub3Qg
c2V0CiMgZW5kIG9mIFhlbiBkcml2ZXIgc3VwcG9ydAoKIyBDT05GSUdfR1JFWUJVUyBpcyBu
b3Qgc2V0CiMgQ09ORklHX0NPTUVESSBpcyBub3Qgc2V0CiMgQ09ORklHX1NUQUdJTkcgaXMg
bm90IHNldAojIENPTkZJR19HT0xERklTSCBpcyBub3Qgc2V0CiMgQ09ORklHX0NIUk9NRV9Q
TEFURk9STVMgaXMgbm90IHNldAojIENPTkZJR19DWk5JQ19QTEFURk9STVMgaXMgbm90IHNl
dAojIENPTkZJR19NRUxMQU5PWF9QTEFURk9STSBpcyBub3Qgc2V0CiMgQ09ORklHX1NVUkZB
Q0VfUExBVEZPUk1TIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl9QTEFURk9STV9ERVZJQ0VTPXkK
Q09ORklHX0FDUElfV01JPW0KQ09ORklHX1dNSV9CTU9GPW0KIyBDT05GSUdfSFVBV0VJX1dN
SSBpcyBub3Qgc2V0CkNPTkZJR19NWE1fV01JPW0KIyBDT05GSUdfTlZJRElBX1dNSV9FQ19C
QUNLTElHSFQgaXMgbm90IHNldAojIENPTkZJR19YSUFPTUlfV01JIGlzIG5vdCBzZXQKIyBD
T05GSUdfR0lHQUJZVEVfV01JIGlzIG5vdCBzZXQKIyBDT05GSUdfWU9HQUJPT0sgaXMgbm90
IHNldApDT05GSUdfQUNFUkhERj15CiMgQ09ORklHX0FDRVJfV0lSRUxFU1MgaXMgbm90IHNl
dAojIENPTkZJR19BQ0VSX1dNSSBpcyBub3Qgc2V0CiMgQ09ORklHX0FNRF9QTUMgaXMgbm90
IHNldAojIENPTkZJR19BTURfV0JSRiBpcyBub3Qgc2V0CiMgQ09ORklHX0FEVl9TV0JVVFRP
TiBpcyBub3Qgc2V0CiMgQ09ORklHX0FQUExFX0dNVVggaXMgbm90IHNldAojIENPTkZJR19B
U1VTX0xBUFRPUCBpcyBub3Qgc2V0CiMgQ09ORklHX0FTVVNfV0lSRUxFU1MgaXMgbm90IHNl
dAojIENPTkZJR19YODZfUExBVEZPUk1fRFJJVkVSU19ERUxMIGlzIG5vdCBzZXQKIyBDT05G
SUdfRlVKSVRTVV9MQVBUT1AgaXMgbm90IHNldApDT05GSUdfRlVKSVRTVV9UQUJMRVQ9eQoj
IENPTkZJR19HUERfUE9DS0VUX0ZBTiBpcyBub3Qgc2V0CiMgQ09ORklHX1g4Nl9QTEFURk9S
TV9EUklWRVJTX0hQIGlzIG5vdCBzZXQKIyBDT05GSUdfV0lSRUxFU1NfSE9US0VZIGlzIG5v
dCBzZXQKIyBDT05GSUdfSUJNX1JUTCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0hEQVBT
PXkKIyBDT05GSUdfVEhJTktQQURfQUNQSSBpcyBub3Qgc2V0CiMgQ09ORklHX1RISU5LUEFE
X0xNSSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVMX0FUT01JU1AyX1BNIGlzIG5vdCBzZXQK
IyBDT05GSUdfSU5URUxfU0FSX0lOVDEwOTIgaXMgbm90IHNldAojIENPTkZJR19JTlRFTF9X
TUlfU0JMX0ZXX1VQREFURSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVMX1dNSV9USFVOREVS
Qk9MVCBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVMX0hJRF9FVkVOVCBpcyBub3Qgc2V0CiMg
Q09ORklHX0lOVEVMX1ZCVE4gaXMgbm90IHNldAojIENPTkZJR19JTlRFTF9JTlQwMDAyX1ZH
UElPIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5URUxfUFVOSVRfSVBDIGlzIG5vdCBzZXQKIyBD
T05GSUdfSU5URUxfUlNUIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5URUxfU01BUlRDT05ORUNU
IGlzIG5vdCBzZXQKIyBDT05GSUdfSU5URUxfVlNFQyBpcyBub3Qgc2V0CiMgQ09ORklHX0FD
UElfUVVJQ0tTVEFSVCBpcyBub3Qgc2V0CiMgQ09ORklHX01FRUdPUEFEX0FOWDc0MjggaXMg
bm90IHNldAojIENPTkZJR19NU0lfRUMgaXMgbm90IHNldAojIENPTkZJR19NU0lfV01JIGlz
IG5vdCBzZXQKIyBDT05GSUdfTVNJX1dNSV9QTEFURk9STSBpcyBub3Qgc2V0CiMgQ09ORklH
X1BDRU5HSU5FU19BUFUyIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFSQ09fUDUwX0dQSU8gaXMg
bm90IHNldAojIENPTkZJR19TQU1TVU5HX0xBUFRPUCBpcyBub3Qgc2V0CiMgQ09ORklHX1NB
TVNVTkdfUTEwIGlzIG5vdCBzZXQKQ09ORklHX1RPU0hJQkFfQlRfUkZLSUxMPXkKIyBDT05G
SUdfVE9TSElCQV9IQVBTIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9TSElCQV9XTUkgaXMgbm90
IHNldAojIENPTkZJR19BQ1BJX0NNUEMgaXMgbm90IHNldAojIENPTkZJR19MR19MQVBUT1Ag
aXMgbm90IHNldApDT05GSUdfUEFOQVNPTklDX0xBUFRPUD1tCiMgQ09ORklHX1NZU1RFTTc2
X0FDUEkgaXMgbm90IHNldApDT05GSUdfVE9QU1RBUl9MQVBUT1A9eQojIENPTkZJR19TRVJJ
QUxfTVVMVElfSU5TVEFOVElBVEUgaXMgbm90IHNldAojIENPTkZJR19NTFhfUExBVEZPUk0g
aXMgbm90IHNldAojIENPTkZJR19JTlNQVVJfUExBVEZPUk1fUFJPRklMRSBpcyBub3Qgc2V0
CiMgQ09ORklHX0xFTk9WT19XTUlfQ0FNRVJBIGlzIG5vdCBzZXQKQ09ORklHX0lOVEVMX0lQ
Uz15CiMgQ09ORklHX0lOVEVMX1NDVV9QQ0kgaXMgbm90IHNldAojIENPTkZJR19JTlRFTF9T
Q1VfUExBVEZPUk0gaXMgbm90IHNldAojIENPTkZJR19TSUVNRU5TX1NJTUFUSUNfSVBDIGlz
IG5vdCBzZXQKIyBDT05GSUdfV0lOTUFURV9GTTA3X0tFWVMgaXMgbm90IHNldApDT05GSUdf
UDJTQj15CkNPTkZJR19IQVZFX0NMSz15CkNPTkZJR19IQVZFX0NMS19QUkVQQVJFPXkKQ09O
RklHX0NPTU1PTl9DTEs9eQojIENPTkZJR19MTUswNDgzMiBpcyBub3Qgc2V0CiMgQ09ORklH
X0NPTU1PTl9DTEtfTUFYOTQ4NSBpcyBub3Qgc2V0CiMgQ09ORklHX0NPTU1PTl9DTEtfU0k1
MzQxIGlzIG5vdCBzZXQKIyBDT05GSUdfQ09NTU9OX0NMS19TSTUzNTEgaXMgbm90IHNldAoj
IENPTkZJR19DT01NT05fQ0xLX1NJNTQ0IGlzIG5vdCBzZXQKIyBDT05GSUdfQ09NTU9OX0NM
S19DRENFNzA2IGlzIG5vdCBzZXQKIyBDT05GSUdfQ09NTU9OX0NMS19DUzIwMDBfQ1AgaXMg
bm90IHNldAojIENPTkZJR19YSUxJTlhfVkNVIGlzIG5vdCBzZXQKIyBDT05GSUdfSFdTUElO
TE9DSyBpcyBub3Qgc2V0CgojCiMgQ2xvY2sgU291cmNlIGRyaXZlcnMKIwpDT05GSUdfQ0xL
U1JDX0k4MjUzPXkKQ09ORklHX0NMS0VWVF9JODI1Mz15CkNPTkZJR19JODI1M19MT0NLPXkK
Q09ORklHX0NMS0JMRF9JODI1Mz15CiMgZW5kIG9mIENsb2NrIFNvdXJjZSBkcml2ZXJzCgoj
IENPTkZJR19NQUlMQk9YIGlzIG5vdCBzZXQKQ09ORklHX0lPTU1VX0lPVkE9eQpDT05GSUdf
SU9NTVVfQVBJPXkKQ09ORklHX0lPTU1VX1NVUFBPUlQ9eQoKIwojIEdlbmVyaWMgSU9NTVUg
UGFnZXRhYmxlIFN1cHBvcnQKIwojIGVuZCBvZiBHZW5lcmljIElPTU1VIFBhZ2V0YWJsZSBT
dXBwb3J0CgojIENPTkZJR19JT01NVV9ERUJVR0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9N
TVVfREVGQVVMVF9ETUFfU1RSSUNUIGlzIG5vdCBzZXQKQ09ORklHX0lPTU1VX0RFRkFVTFRf
RE1BX0xBWlk9eQojIENPTkZJR19JT01NVV9ERUZBVUxUX1BBU1NUSFJPVUdIIGlzIG5vdCBz
ZXQKQ09ORklHX0lPTU1VX0RNQT15CkNPTkZJR19ETUFSX1RBQkxFPXkKQ09ORklHX0lOVEVM
X0lPTU1VPXkKIyBDT05GSUdfSU5URUxfSU9NTVVfREVGQVVMVF9PTiBpcyBub3Qgc2V0CkNP
TkZJR19JTlRFTF9JT01NVV9GTE9QUFlfV0E9eQojIENPTkZJR19JTlRFTF9JT01NVV9TQ0FM
QUJMRV9NT0RFX0RFRkFVTFRfT04gaXMgbm90IHNldApDT05GSUdfSU5URUxfSU9NTVVfUEVS
Rl9FVkVOVFM9eQojIENPTkZJR19JT01NVUZEIGlzIG5vdCBzZXQKIyBDT05GSUdfSFlQRVJW
X0lPTU1VIGlzIG5vdCBzZXQKIyBDT05GSUdfVklSVElPX0lPTU1VIGlzIG5vdCBzZXQKCiMK
IyBSZW1vdGVwcm9jIGRyaXZlcnMKIwojIENPTkZJR19SRU1PVEVQUk9DIGlzIG5vdCBzZXQK
IyBlbmQgb2YgUmVtb3RlcHJvYyBkcml2ZXJzCgojCiMgUnBtc2cgZHJpdmVycwojCiMgQ09O
RklHX1JQTVNHX1ZJUlRJTyBpcyBub3Qgc2V0CiMgZW5kIG9mIFJwbXNnIGRyaXZlcnMKCiMg
Q09ORklHX1NPVU5EV0lSRSBpcyBub3Qgc2V0CgojCiMgU09DIChTeXN0ZW0gT24gQ2hpcCkg
c3BlY2lmaWMgRHJpdmVycwojCgojCiMgQW1sb2dpYyBTb0MgZHJpdmVycwojCiMgZW5kIG9m
IEFtbG9naWMgU29DIGRyaXZlcnMKCiMKIyBCcm9hZGNvbSBTb0MgZHJpdmVycwojCiMgZW5k
IG9mIEJyb2FkY29tIFNvQyBkcml2ZXJzCgojCiMgTlhQL0ZyZWVzY2FsZSBRb3JJUSBTb0Mg
ZHJpdmVycwojCiMgZW5kIG9mIE5YUC9GcmVlc2NhbGUgUW9ySVEgU29DIGRyaXZlcnMKCiMK
IyBmdWppdHN1IFNvQyBkcml2ZXJzCiMKIyBlbmQgb2YgZnVqaXRzdSBTb0MgZHJpdmVycwoK
IwojIGkuTVggU29DIGRyaXZlcnMKIwojIGVuZCBvZiBpLk1YIFNvQyBkcml2ZXJzCgojCiMg
RW5hYmxlIExpdGVYIFNvQyBCdWlsZGVyIHNwZWNpZmljIGRyaXZlcnMKIwojIGVuZCBvZiBF
bmFibGUgTGl0ZVggU29DIEJ1aWxkZXIgc3BlY2lmaWMgZHJpdmVycwoKIyBDT05GSUdfV1BD
TTQ1MF9TT0MgaXMgbm90IHNldAoKIwojIFF1YWxjb21tIFNvQyBkcml2ZXJzCiMKIyBlbmQg
b2YgUXVhbGNvbW0gU29DIGRyaXZlcnMKCiMgQ09ORklHX1NPQ19USSBpcyBub3Qgc2V0Cgoj
CiMgWGlsaW54IFNvQyBkcml2ZXJzCiMKIyBlbmQgb2YgWGlsaW54IFNvQyBkcml2ZXJzCiMg
ZW5kIG9mIFNPQyAoU3lzdGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMKCiMKIyBQTSBE
b21haW5zCiMKCiMKIyBBbWxvZ2ljIFBNIERvbWFpbnMKIwojIGVuZCBvZiBBbWxvZ2ljIFBN
IERvbWFpbnMKCiMKIyBCcm9hZGNvbSBQTSBEb21haW5zCiMKIyBlbmQgb2YgQnJvYWRjb20g
UE0gRG9tYWlucwoKIwojIGkuTVggUE0gRG9tYWlucwojCiMgZW5kIG9mIGkuTVggUE0gRG9t
YWlucwoKIwojIFF1YWxjb21tIFBNIERvbWFpbnMKIwojIGVuZCBvZiBRdWFsY29tbSBQTSBE
b21haW5zCiMgZW5kIG9mIFBNIERvbWFpbnMKCkNPTkZJR19QTV9ERVZGUkVRPXkKCiMKIyBE
RVZGUkVRIEdvdmVybm9ycwojCkNPTkZJR19ERVZGUkVRX0dPVl9TSU1QTEVfT05ERU1BTkQ9
bQojIENPTkZJR19ERVZGUkVRX0dPVl9QRVJGT1JNQU5DRSBpcyBub3Qgc2V0CiMgQ09ORklH
X0RFVkZSRVFfR09WX1BPV0VSU0FWRSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFVkZSRVFfR09W
X1VTRVJTUEFDRSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFVkZSRVFfR09WX1BBU1NJVkUgaXMg
bm90IHNldAoKIwojIERFVkZSRVEgRHJpdmVycwojCiMgQ09ORklHX1BNX0RFVkZSRVFfRVZF
TlQgaXMgbm90IHNldAojIENPTkZJR19FWFRDT04gaXMgbm90IHNldAojIENPTkZJR19NRU1P
UlkgaXMgbm90IHNldAojIENPTkZJR19JSU8gaXMgbm90IHNldAojIENPTkZJR19OVEIgaXMg
bm90IHNldAojIENPTkZJR19QV00gaXMgbm90IHNldAoKIwojIElSUSBjaGlwIHN1cHBvcnQK
IwojIENPTkZJR19MQU45NjZYX09JQyBpcyBub3Qgc2V0CiMgZW5kIG9mIElSUSBjaGlwIHN1
cHBvcnQKCiMgQ09ORklHX0lQQUNLX0JVUyBpcyBub3Qgc2V0CiMgQ09ORklHX1JFU0VUX0NP
TlRST0xMRVIgaXMgbm90IHNldAoKIwojIFBIWSBTdWJzeXN0ZW0KIwpDT05GSUdfR0VORVJJ
Q19QSFk9eQojIENPTkZJR19VU0JfTEdNX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX1BIWV9D
QU5fVFJBTlNDRUlWRVIgaXMgbm90IHNldAoKIwojIFBIWSBkcml2ZXJzIGZvciBCcm9hZGNv
bSBwbGF0Zm9ybXMKIwojIENPTkZJR19CQ01fS09OQV9VU0IyX1BIWSBpcyBub3Qgc2V0CiMg
ZW5kIG9mIFBIWSBkcml2ZXJzIGZvciBCcm9hZGNvbSBwbGF0Zm9ybXMKCiMgQ09ORklHX1BI
WV9QWEFfMjhOTV9IU0lDIGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZX1BYQV8yOE5NX1VTQjIg
aXMgbm90IHNldAojIENPTkZJR19QSFlfSU5URUxfTEdNX0VNTUMgaXMgbm90IHNldAojIGVu
ZCBvZiBQSFkgU3Vic3lzdGVtCgojIENPTkZJR19QT1dFUkNBUCBpcyBub3Qgc2V0CiMgQ09O
RklHX01DQiBpcyBub3Qgc2V0CgojCiMgUGVyZm9ybWFuY2UgbW9uaXRvciBzdXBwb3J0CiMK
IyBDT05GSUdfRFdDX1BDSUVfUE1VIGlzIG5vdCBzZXQKIyBlbmQgb2YgUGVyZm9ybWFuY2Ug
bW9uaXRvciBzdXBwb3J0CgpDT05GSUdfUkFTPXkKIyBDT05GSUdfVVNCNCBpcyBub3Qgc2V0
CgojCiMgQW5kcm9pZAojCiMgQ09ORklHX0FORFJPSURfQklOREVSX0lQQyBpcyBub3Qgc2V0
CiMgZW5kIG9mIEFuZHJvaWQKCiMgQ09ORklHX0xJQk5WRElNTSBpcyBub3Qgc2V0CiMgQ09O
RklHX0RBWCBpcyBub3Qgc2V0CkNPTkZJR19OVk1FTT15CkNPTkZJR19OVk1FTV9TWVNGUz15
CiMgQ09ORklHX05WTUVNX0xBWU9VVFMgaXMgbm90IHNldAojIENPTkZJR19OVk1FTV9STUVN
IGlzIG5vdCBzZXQKCiMKIyBIVyB0cmFjaW5nIHN1cHBvcnQKIwojIENPTkZJR19TVE0gaXMg
bm90IHNldAojIENPTkZJR19JTlRFTF9USCBpcyBub3Qgc2V0CiMgZW5kIG9mIEhXIHRyYWNp
bmcgc3VwcG9ydAoKIyBDT05GSUdfRlBHQSBpcyBub3Qgc2V0CiMgQ09ORklHX1RFRSBpcyBu
b3Qgc2V0CkNPTkZJR19QTV9PUFA9eQojIENPTkZJR19TSU9YIGlzIG5vdCBzZXQKIyBDT05G
SUdfU0xJTUJVUyBpcyBub3Qgc2V0CiMgQ09ORklHX0lOVEVSQ09OTkVDVCBpcyBub3Qgc2V0
CiMgQ09ORklHX0NPVU5URVIgaXMgbm90IHNldAojIENPTkZJR19NT1NUIGlzIG5vdCBzZXQK
IyBDT05GSUdfUEVDSSBpcyBub3Qgc2V0CiMgQ09ORklHX0hURSBpcyBub3Qgc2V0CiMgZW5k
IG9mIERldmljZSBEcml2ZXJzCgojCiMgRmlsZSBzeXN0ZW1zCiMKQ09ORklHX0RDQUNIRV9X
T1JEX0FDQ0VTUz15CiMgQ09ORklHX1ZBTElEQVRFX0ZTX1BBUlNFUiBpcyBub3Qgc2V0CkNP
TkZJR19GU19JT01BUD15CkNPTkZJR19CVUZGRVJfSEVBRD15CkNPTkZJR19MRUdBQ1lfRElS
RUNUX0lPPXkKIyBDT05GSUdfRVhUMl9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVDNfRlMg
aXMgbm90IHNldApDT05GSUdfRVhUNF9GUz1tCkNPTkZJR19FWFQ0X1VTRV9GT1JfRVhUMj15
CiMgQ09ORklHX0VYVDRfRlNfUE9TSVhfQUNMIGlzIG5vdCBzZXQKIyBDT05GSUdfRVhUNF9G
U19TRUNVUklUWSBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVDRfREVCVUcgaXMgbm90IHNldApD
T05GSUdfSkJEMj1tCiMgQ09ORklHX0pCRDJfREVCVUcgaXMgbm90IHNldApDT05GSUdfRlNf
TUJDQUNIRT1tCiMgQ09ORklHX1JFSVNFUkZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfSkZT
X0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfWEZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfR0ZT
Ml9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX09DRlMyX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdf
QlRSRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19OSUxGUzJfRlMgaXMgbm90IHNldAojIENP
TkZJR19GMkZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfQkNBQ0hFRlNfRlMgaXMgbm90IHNl
dApDT05GSUdfRlNfUE9TSVhfQUNMPXkKQ09ORklHX0VYUE9SVEZTPXkKIyBDT05GSUdfRVhQ
T1JURlNfQkxPQ0tfT1BTIGlzIG5vdCBzZXQKIyBDT05GSUdfRklMRV9MT0NLSU5HIGlzIG5v
dCBzZXQKIyBDT05GSUdfRlNfRU5DUllQVElPTiBpcyBub3Qgc2V0CiMgQ09ORklHX0ZTX1ZF
UklUWSBpcyBub3Qgc2V0CkNPTkZJR19GU05PVElGWT15CiMgQ09ORklHX0ROT1RJRlkgaXMg
bm90IHNldAojIENPTkZJR19JTk9USUZZX1VTRVIgaXMgbm90IHNldAojIENPTkZJR19GQU5P
VElGWSBpcyBub3Qgc2V0CiMgQ09ORklHX1FVT1RBIGlzIG5vdCBzZXQKIyBDT05GSUdfQVVU
T0ZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfRlVTRV9GUyBpcyBub3Qgc2V0CiMgQ09ORklH
X09WRVJMQVlfRlMgaXMgbm90IHNldAoKIwojIENhY2hlcwojCkNPTkZJR19ORVRGU19TVVBQ
T1JUPXkKIyBDT05GSUdfTkVURlNfU1RBVFMgaXMgbm90IHNldAojIENPTkZJR19ORVRGU19E
RUJVRyBpcyBub3Qgc2V0CiMgQ09ORklHX0ZTQ0FDSEUgaXMgbm90IHNldAojIGVuZCBvZiBD
YWNoZXMKCiMKIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCiMKQ09ORklHX0lTTzk2NjBfRlM9
bQpDT05GSUdfSk9MSUVUPXkKQ09ORklHX1pJU09GUz15CkNPTkZJR19VREZfRlM9bQojIGVu
ZCBvZiBDRC1ST00vRFZEIEZpbGVzeXN0ZW1zCgojCiMgRE9TL0ZBVC9FWEZBVC9OVCBGaWxl
c3lzdGVtcwojCkNPTkZJR19GQVRfRlM9bQpDT05GSUdfTVNET1NfRlM9bQpDT05GSUdfVkZB
VF9GUz1tCkNPTkZJR19GQVRfREVGQVVMVF9DT0RFUEFHRT00MzcKQ09ORklHX0ZBVF9ERUZB
VUxUX0lPQ0hBUlNFVD0idXRmOCIKIyBDT05GSUdfRkFUX0RFRkFVTFRfVVRGOCBpcyBub3Qg
c2V0CiMgQ09ORklHX0VYRkFUX0ZTIGlzIG5vdCBzZXQKQ09ORklHX05URlMzX0ZTPW0KIyBD
T05GSUdfTlRGUzNfTFpYX1hQUkVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX05URlMzX0ZTX1BP
U0lYX0FDTCBpcyBub3Qgc2V0CkNPTkZJR19OVEZTX0ZTPW0KIyBlbmQgb2YgRE9TL0ZBVC9F
WEZBVC9OVCBGaWxlc3lzdGVtcwoKIwojIFBzZXVkbyBmaWxlc3lzdGVtcwojCkNPTkZJR19Q
Uk9DX0ZTPXkKQ09ORklHX1BST0NfS0NPUkU9eQpDT05GSUdfUFJPQ19WTUNPUkU9eQojIENP
TkZJR19QUk9DX1ZNQ09SRV9ERVZJQ0VfRFVNUCBpcyBub3Qgc2V0CkNPTkZJR19QUk9DX1NZ
U0NUTD15CkNPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CkNPTkZJR19QUk9DX0NISUxEUkVO
PXkKQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTPXkKQ09ORklHX0tFUk5GUz15CkNPTkZJ
R19TWVNGUz15CkNPTkZJR19UTVBGUz15CkNPTkZJR19UTVBGU19QT1NJWF9BQ0w9eQpDT05G
SUdfVE1QRlNfWEFUVFI9eQojIENPTkZJR19UTVBGU19RVU9UQSBpcyBub3Qgc2V0CkNPTkZJ
R19IVUdFVExCRlM9eQpDT05GSUdfSFVHRVRMQl9QQUdFPXkKQ09ORklHX0hVR0VUTEJfUE1E
X1BBR0VfVEFCTEVfU0hBUklORz15CkNPTkZJR19DT05GSUdGU19GUz1tCkNPTkZJR19FRklW
QVJfRlM9bQojIGVuZCBvZiBQc2V1ZG8gZmlsZXN5c3RlbXMKCkNPTkZJR19NSVNDX0ZJTEVT
WVNURU1TPXkKIyBDT05GSUdfT1JBTkdFRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19BREZT
X0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfQUZGU19GUyBpcyBub3Qgc2V0CiMgQ09ORklHX0VD
UllQVF9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX0hGU19GUyBpcyBub3Qgc2V0CiMgQ09ORklH
X0hGU1BMVVNfRlMgaXMgbm90IHNldAojIENPTkZJR19CRUZTX0ZTIGlzIG5vdCBzZXQKIyBD
T05GSUdfQkZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfRUZTX0ZTIGlzIG5vdCBzZXQKIyBD
T05GSUdfQ1JBTUZTIGlzIG5vdCBzZXQKIyBDT05GSUdfU1FVQVNIRlMgaXMgbm90IHNldAoj
IENPTkZJR19WWEZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfTUlOSVhfRlMgaXMgbm90IHNl
dAojIENPTkZJR19PTUZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfSFBGU19GUyBpcyBub3Qg
c2V0CiMgQ09ORklHX1FOWDRGU19GUyBpcyBub3Qgc2V0CiMgQ09ORklHX1FOWDZGU19GUyBp
cyBub3Qgc2V0CiMgQ09ORklHX1JPTUZTX0ZTIGlzIG5vdCBzZXQKQ09ORklHX1BTVE9SRT15
CkNPTkZJR19QU1RPUkVfREVGQVVMVF9LTVNHX0JZVEVTPTEwMjQwCiMgQ09ORklHX1BTVE9S
RV9DT01QUkVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX1BTVE9SRV9DT05TT0xFIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUFNUT1JFX1BNU0cgaXMgbm90IHNldAojIENPTkZJR19QU1RPUkVfUkFN
IGlzIG5vdCBzZXQKIyBDT05GSUdfUFNUT1JFX0JMSyBpcyBub3Qgc2V0CiMgQ09ORklHX1NZ
U1ZfRlMgaXMgbm90IHNldAojIENPTkZJR19VRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19F
Uk9GU19GUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRXT1JLX0ZJTEVTWVNURU1TPXkKIyBDT05G
SUdfQ0VQSF9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX0NJRlMgaXMgbm90IHNldAojIENPTkZJ
R19DT0RBX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfQUZTX0ZTIGlzIG5vdCBzZXQKIyBDT05G
SUdfOVBfRlMgaXMgbm90IHNldApDT05GSUdfTkxTPXkKQ09ORklHX05MU19ERUZBVUxUPSJ1
dGY4IgojIENPTkZJR19OTFNfQ09ERVBBR0VfNDM3IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxT
X0NPREVQQUdFXzczNyBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV83NzUgaXMg
bm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfODUwIGlzIG5vdCBzZXQKIyBDT05GSUdf
TkxTX0NPREVQQUdFXzg1MiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84NTUg
aXMgbm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfODU3IGlzIG5vdCBzZXQKIyBDT05G
SUdfTkxTX0NPREVQQUdFXzg2MCBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84
NjEgaXMgbm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfODYyIGlzIG5vdCBzZXQKIyBD
T05GSUdfTkxTX0NPREVQQUdFXzg2MyBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFH
RV84NjQgaXMgbm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfODY1IGlzIG5vdCBzZXQK
IyBDT05GSUdfTkxTX0NPREVQQUdFXzg2NiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RF
UEFHRV84NjkgaXMgbm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfOTM2IGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzk1MCBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19D
T0RFUEFHRV85MzIgaXMgbm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfOTQ5IGlzIG5v
dCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzg3NCBpcyBub3Qgc2V0CiMgQ09ORklHX05M
U19JU084ODU5XzggaXMgbm90IHNldAojIENPTkZJR19OTFNfQ09ERVBBR0VfMTI1MCBpcyBu
b3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUxIGlzIG5vdCBzZXQKQ09ORklHX05M
U19BU0NJST1tCkNPTkZJR19OTFNfSVNPODg1OV8xPW0KIyBDT05GSUdfTkxTX0lTTzg4NTlf
MiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19JU084ODU5XzMgaXMgbm90IHNldAojIENPTkZJ
R19OTFNfSVNPODg1OV80IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0lTTzg4NTlfNSBpcyBu
b3Qgc2V0CiMgQ09ORklHX05MU19JU084ODU5XzYgaXMgbm90IHNldAojIENPTkZJR19OTFNf
SVNPODg1OV83IGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0lTTzg4NTlfOSBpcyBub3Qgc2V0
CiMgQ09ORklHX05MU19JU084ODU5XzEzIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0lTTzg4
NTlfMTQgaXMgbm90IHNldAojIENPTkZJR19OTFNfSVNPODg1OV8xNSBpcyBub3Qgc2V0CiMg
Q09ORklHX05MU19LT0k4X1IgaXMgbm90IHNldAojIENPTkZJR19OTFNfS09JOF9VIGlzIG5v
dCBzZXQKIyBDT05GSUdfTkxTX01BQ19ST01BTiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19N
QUNfQ0VMVElDIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX01BQ19DRU5URVVSTyBpcyBub3Qg
c2V0CiMgQ09ORklHX05MU19NQUNfQ1JPQVRJQU4gaXMgbm90IHNldAojIENPTkZJR19OTFNf
TUFDX0NZUklMTElDIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX01BQ19HQUVMSUMgaXMgbm90
IHNldAojIENPTkZJR19OTFNfTUFDX0dSRUVLIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX01B
Q19JQ0VMQU5EIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX01BQ19JTlVJVCBpcyBub3Qgc2V0
CiMgQ09ORklHX05MU19NQUNfUk9NQU5JQU4gaXMgbm90IHNldAojIENPTkZJR19OTFNfTUFD
X1RVUktJU0ggaXMgbm90IHNldApDT05GSUdfTkxTX1VURjg9bQpDT05GSUdfRExNPW0KIyBD
T05GSUdfRExNX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfVU5JQ09ERSBpcyBub3Qgc2V0
CiMgZW5kIG9mIEZpbGUgc3lzdGVtcwoKIwojIFNlY3VyaXR5IG9wdGlvbnMKIwpDT05GSUdf
S0VZUz15CiMgQ09ORklHX0tFWVNfUkVRVUVTVF9DQUNIRSBpcyBub3Qgc2V0CiMgQ09ORklH
X1BFUlNJU1RFTlRfS0VZUklOR1MgaXMgbm90IHNldAojIENPTkZJR19UUlVTVEVEX0tFWVMg
aXMgbm90IHNldAojIENPTkZJR19FTkNSWVBURURfS0VZUyBpcyBub3Qgc2V0CiMgQ09ORklH
X0tFWV9ESF9PUEVSQVRJT05TIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VDVVJJVFlfRE1FU0df
UkVTVFJJQ1QgaXMgbm90IHNldApDT05GSUdfUFJPQ19NRU1fQUxXQVlTX0ZPUkNFPXkKIyBD
T05GSUdfUFJPQ19NRU1fRk9SQ0VfUFRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdfUFJPQ19N
RU1fTk9fRk9SQ0UgaXMgbm90IHNldAojIENPTkZJR19TRUNVUklUWSBpcyBub3Qgc2V0CkNP
TkZJR19TRUNVUklUWUZTPXkKIyBDT05GSUdfSU5URUxfVFhUIGlzIG5vdCBzZXQKIyBDT05G
SUdfSEFSREVORURfVVNFUkNPUFkgaXMgbm90IHNldAojIENPTkZJR19GT1JUSUZZX1NPVVJD
RSBpcyBub3Qgc2V0CiMgQ09ORklHX1NUQVRJQ19VU0VSTU9ERUhFTFBFUiBpcyBub3Qgc2V0
CiMgQ09ORklHX0lNQV9TRUNVUkVfQU5EX09SX1RSVVNURURfQk9PVCBpcyBub3Qgc2V0CkNP
TkZJR19ERUZBVUxUX1NFQ1VSSVRZX0RBQz15CkNPTkZJR19MU009InlhbWEsbG9hZHBpbixz
YWZlc2V0aWQsaW50ZWdyaXR5LHNlbGludXgsc21hY2ssdG9tb3lvLGFwcGFybW9yIgoKIwoj
IEtlcm5lbCBoYXJkZW5pbmcgb3B0aW9ucwojCgojCiMgTWVtb3J5IGluaXRpYWxpemF0aW9u
CiMKQ09ORklHX0lOSVRfU1RBQ0tfTk9ORT15CiMgQ09ORklHX0lOSVRfT05fQUxMT0NfREVG
QVVMVF9PTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lOSVRfT05fRlJFRV9ERUZBVUxUX09OIGlz
IG5vdCBzZXQKIyBlbmQgb2YgTWVtb3J5IGluaXRpYWxpemF0aW9uCgojCiMgSGFyZGVuaW5n
IG9mIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMKIwojIENPTkZJR19MSVNUX0hBUkRFTkVEIGlz
IG5vdCBzZXQKIyBDT05GSUdfQlVHX09OX0RBVEFfQ09SUlVQVElPTiBpcyBub3Qgc2V0CiMg
ZW5kIG9mIEhhcmRlbmluZyBvZiBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCgpDT05GSUdfUkFO
RFNUUlVDVF9OT05FPXkKIyBlbmQgb2YgS2VybmVsIGhhcmRlbmluZyBvcHRpb25zCiMgZW5k
IG9mIFNlY3VyaXR5IG9wdGlvbnMKCkNPTkZJR19DUllQVE89eQoKIwojIENyeXB0byBjb3Jl
IG9yIGhlbHBlcgojCkNPTkZJR19DUllQVE9fQUxHQVBJPXkKQ09ORklHX0NSWVBUT19BTEdB
UEkyPXkKQ09ORklHX0NSWVBUT19BRUFEPW0KQ09ORklHX0NSWVBUT19BRUFEMj15CkNPTkZJ
R19DUllQVE9fU0lHMj15CkNPTkZJR19DUllQVE9fU0tDSVBIRVI9bQpDT05GSUdfQ1JZUFRP
X1NLQ0lQSEVSMj15CkNPTkZJR19DUllQVE9fSEFTSD15CkNPTkZJR19DUllQVE9fSEFTSDI9
eQpDT05GSUdfQ1JZUFRPX1JORz1tCkNPTkZJR19DUllQVE9fUk5HMj15CkNPTkZJR19DUllQ
VE9fUk5HX0RFRkFVTFQ9bQpDT05GSUdfQ1JZUFRPX0FLQ0lQSEVSMj15CkNPTkZJR19DUllQ
VE9fQUtDSVBIRVI9bQpDT05GSUdfQ1JZUFRPX0tQUDI9eQpDT05GSUdfQ1JZUFRPX0FDT01Q
Mj15CkNPTkZJR19DUllQVE9fTUFOQUdFUj15CkNPTkZJR19DUllQVE9fTUFOQUdFUjI9eQoj
IENPTkZJR19DUllQVE9fVVNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19NQU5BR0VS
X0RJU0FCTEVfVEVTVFMgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fTUFOQUdFUl9FWFRS
QV9URVNUUyBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fTlVMTD1tCkNPTkZJR19DUllQVE9f
TlVMTDI9bQpDT05GSUdfQ1JZUFRPX1BDUllQVD1tCkNPTkZJR19DUllQVE9fQ1JZUFREPW0K
Q09ORklHX0NSWVBUT19BVVRIRU5DPW0KQ09ORklHX0NSWVBUT19URVNUPW0KQ09ORklHX0NS
WVBUT19TSU1EPW0KQ09ORklHX0NSWVBUT19FTkdJTkU9bQojIGVuZCBvZiBDcnlwdG8gY29y
ZSBvciBoZWxwZXIKCiMKIyBQdWJsaWMta2V5IGNyeXB0b2dyYXBoeQojCkNPTkZJR19DUllQ
VE9fUlNBPW0KIyBDT05GSUdfQ1JZUFRPX0RIIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRP
X0VDREggaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fRUNEU0EgaXMgbm90IHNldAojIENP
TkZJR19DUllQVE9fRUNSRFNBIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0NVUlZFMjU1
MTkgaXMgbm90IHNldAojIGVuZCBvZiBQdWJsaWMta2V5IGNyeXB0b2dyYXBoeQoKIwojIEJs
b2NrIGNpcGhlcnMKIwpDT05GSUdfQ1JZUFRPX0FFUz15CiMgQ09ORklHX0NSWVBUT19BRVNf
VEkgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fQVJJQSBpcyBub3Qgc2V0CkNPTkZJR19D
UllQVE9fQkxPV0ZJU0g9bQpDT05GSUdfQ1JZUFRPX0JMT1dGSVNIX0NPTU1PTj1tCkNPTkZJ
R19DUllQVE9fQ0FNRUxMSUE9bQpDT05GSUdfQ1JZUFRPX0NBU1RfQ09NTU9OPW0KQ09ORklH
X0NSWVBUT19DQVNUNT1tCkNPTkZJR19DUllQVE9fQ0FTVDY9bQpDT05GSUdfQ1JZUFRPX0RF
Uz1tCkNPTkZJR19DUllQVE9fRkNSWVBUPW0KQ09ORklHX0NSWVBUT19TRVJQRU5UPW0KIyBD
T05GSUdfQ1JZUFRPX1NNNF9HRU5FUklDIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19UV09G
SVNIPW0KQ09ORklHX0NSWVBUT19UV09GSVNIX0NPTU1PTj1tCiMgZW5kIG9mIEJsb2NrIGNp
cGhlcnMKCiMKIyBMZW5ndGgtcHJlc2VydmluZyBjaXBoZXJzIGFuZCBtb2RlcwojCiMgQ09O
RklHX0NSWVBUT19BRElBTlRVTSBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19DSEFDSEEy
MCBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fQ0JDPW0KQ09ORklHX0NSWVBUT19DVFI9bQpD
T05GSUdfQ1JZUFRPX0NUUz1tCkNPTkZJR19DUllQVE9fRUNCPW0KIyBDT05GSUdfQ1JZUFRP
X0hDVFIyIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0tFWVdSQVAgaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX0xSVz1tCkNPTkZJR19DUllQVE9fUENCQz1tCkNPTkZJR19DUllQVE9f
WFRTPW0KIyBlbmQgb2YgTGVuZ3RoLXByZXNlcnZpbmcgY2lwaGVycyBhbmQgbW9kZXMKCiMK
IyBBRUFEIChhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24gd2l0aCBhc3NvY2lhdGVkIGRhdGEp
IGNpcGhlcnMKIwojIENPTkZJR19DUllQVE9fQUVHSVMxMjggaXMgbm90IHNldAojIENPTkZJ
R19DUllQVE9fQ0hBQ0hBMjBQT0xZMTMwNSBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fQ0NN
PW0KQ09ORklHX0NSWVBUT19HQ009bQpDT05GSUdfQ1JZUFRPX0dFTklWPW0KQ09ORklHX0NS
WVBUT19TRVFJVj1tCkNPTkZJR19DUllQVE9fRUNIQUlOSVY9bQojIENPTkZJR19DUllQVE9f
RVNTSVYgaXMgbm90IHNldAojIGVuZCBvZiBBRUFEIChhdXRoZW50aWNhdGVkIGVuY3J5cHRp
b24gd2l0aCBhc3NvY2lhdGVkIGRhdGEpIGNpcGhlcnMKCiMKIyBIYXNoZXMsIGRpZ2VzdHMs
IGFuZCBNQUNzCiMKIyBDT05GSUdfQ1JZUFRPX0JMQUtFMkIgaXMgbm90IHNldApDT05GSUdf
Q1JZUFRPX0NNQUM9bQpDT05GSUdfQ1JZUFRPX0dIQVNIPW0KQ09ORklHX0NSWVBUT19ITUFD
PW0KQ09ORklHX0NSWVBUT19NRDQ9bQpDT05GSUdfQ1JZUFRPX01ENT15CkNPTkZJR19DUllQ
VE9fTUlDSEFFTF9NSUM9bQojIENPTkZJR19DUllQVE9fUE9MWTEzMDUgaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX1JNRDE2MD1tCkNPTkZJR19DUllQVE9fU0hBMT15CkNPTkZJR19DUllQ
VE9fU0hBMjU2PXkKQ09ORklHX0NSWVBUT19TSEE1MTI9bQpDT05GSUdfQ1JZUFRPX1NIQTM9
bQojIENPTkZJR19DUllQVE9fU00zX0dFTkVSSUMgaXMgbm90IHNldAojIENPTkZJR19DUllQ
VE9fU1RSRUVCT0cgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX1ZNQUM9bQpDT05GSUdfQ1JZ
UFRPX1dQNTEyPW0KQ09ORklHX0NSWVBUT19YQ0JDPW0KIyBDT05GSUdfQ1JZUFRPX1hYSEFT
SCBpcyBub3Qgc2V0CiMgZW5kIG9mIEhhc2hlcywgZGlnZXN0cywgYW5kIE1BQ3MKCiMKIyBD
UkNzIChjeWNsaWMgcmVkdW5kYW5jeSBjaGVja3MpCiMKQ09ORklHX0NSWVBUT19DUkMzMkM9
bQpDT05GSUdfQ1JZUFRPX0NSQzMyPW0KQ09ORklHX0NSWVBUT19DUkNUMTBESUY9eQpDT05G
SUdfQ1JZUFRPX0NSQzY0X1JPQ0tTT0ZUPXkKIyBlbmQgb2YgQ1JDcyAoY3ljbGljIHJlZHVu
ZGFuY3kgY2hlY2tzKQoKIwojIENvbXByZXNzaW9uCiMKQ09ORklHX0NSWVBUT19ERUZMQVRF
PW0KQ09ORklHX0NSWVBUT19MWk89eQojIENPTkZJR19DUllQVE9fODQyIGlzIG5vdCBzZXQK
IyBDT05GSUdfQ1JZUFRPX0xaNCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19MWjRIQyBp
cyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19aU1REIGlzIG5vdCBzZXQKIyBlbmQgb2YgQ29t
cHJlc3Npb24KCiMKIyBSYW5kb20gbnVtYmVyIGdlbmVyYXRpb24KIwpDT05GSUdfQ1JZUFRP
X0FOU0lfQ1BSTkc9bQpDT05GSUdfQ1JZUFRPX0RSQkdfTUVOVT1tCkNPTkZJR19DUllQVE9f
RFJCR19ITUFDPXkKIyBDT05GSUdfQ1JZUFRPX0RSQkdfSEFTSCBpcyBub3Qgc2V0CiMgQ09O
RklHX0NSWVBUT19EUkJHX0NUUiBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fRFJCRz1tCkNP
TkZJR19DUllQVE9fSklUVEVSRU5UUk9QWT1tCkNPTkZJR19DUllQVE9fSklUVEVSRU5UUk9Q
WV9NRU1PUllfQkxPQ0tTPTY0CkNPTkZJR19DUllQVE9fSklUVEVSRU5UUk9QWV9NRU1PUllf
QkxPQ0tTSVpFPTMyCkNPTkZJR19DUllQVE9fSklUVEVSRU5UUk9QWV9PU1I9MQojIGVuZCBv
ZiBSYW5kb20gbnVtYmVyIGdlbmVyYXRpb24KCiMKIyBVc2Vyc3BhY2UgaW50ZXJmYWNlCiMK
Q09ORklHX0NSWVBUT19VU0VSX0FQST1tCkNPTkZJR19DUllQVE9fVVNFUl9BUElfSEFTSD1t
CkNPTkZJR19DUllQVE9fVVNFUl9BUElfU0tDSVBIRVI9bQojIENPTkZJR19DUllQVE9fVVNF
Ul9BUElfUk5HIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX1VTRVJfQVBJX0FFQUQgaXMg
bm90IHNldAojIENPTkZJR19DUllQVE9fVVNFUl9BUElfRU5BQkxFX09CU09MRVRFIGlzIG5v
dCBzZXQKIyBlbmQgb2YgVXNlcnNwYWNlIGludGVyZmFjZQoKQ09ORklHX0NSWVBUT19IQVNI
X0lORk89eQoKIwojIEFjY2VsZXJhdGVkIENyeXB0b2dyYXBoaWMgQWxnb3JpdGhtcyBmb3Ig
Q1BVICh4ODYpCiMKQ09ORklHX0NSWVBUT19BRVNfTklfSU5URUw9bQojIENPTkZJR19DUllQ
VE9fU0VSUEVOVF9TU0UyXzU4NiBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19UV09GSVNI
XzU4NiBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fQ1JDMzJDX0lOVEVMPW0KQ09ORklHX0NS
WVBUT19DUkMzMl9QQ0xNVUw9bQojIGVuZCBvZiBBY2NlbGVyYXRlZCBDcnlwdG9ncmFwaGlj
IEFsZ29yaXRobXMgZm9yIENQVSAoeDg2KQoKQ09ORklHX0NSWVBUT19IVz15CkNPTkZJR19D
UllQVE9fREVWX1BBRExPQ0s9bQpDT05GSUdfQ1JZUFRPX0RFVl9QQURMT0NLX0FFUz1tCkNP
TkZJR19DUllQVE9fREVWX1BBRExPQ0tfU0hBPW0KIyBDT05GSUdfQ1JZUFRPX0RFVl9HRU9E
RSBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19ERVZfQVRNRUxfRUNDIGlzIG5vdCBzZXQK
IyBDT05GSUdfQ1JZUFRPX0RFVl9BVE1FTF9TSEEyMDRBIGlzIG5vdCBzZXQKQ09ORklHX0NS
WVBUT19ERVZfQ0NQPXkKQ09ORklHX0NSWVBUT19ERVZfQ0NQX0REPW0KIyBDT05GSUdfQ1JZ
UFRPX0RFVl9TUF9DQ1AgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fREVWX1FBVF9ESDg5
NXhDQyBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19ERVZfUUFUX0MzWFhYIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQ1JZUFRPX0RFVl9RQVRfQzYyWCBpcyBub3Qgc2V0CiMgQ09ORklHX0NS
WVBUT19ERVZfUUFUXzRYWFggaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fREVWX1FBVF80
MjBYWCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19ERVZfUUFUX0RIODk1eENDVkYgaXMg
bm90IHNldAojIENPTkZJR19DUllQVE9fREVWX1FBVF9DM1hYWFZGIGlzIG5vdCBzZXQKIyBD
T05GSUdfQ1JZUFRPX0RFVl9RQVRfQzYyWFZGIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRP
X0RFVl9DSEVMU0lPIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19ERVZfVklSVElPPW0KIyBD
T05GSUdfQ1JZUFRPX0RFVl9TQUZFWENFTCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19E
RVZfQU1MT0dJQ19HWEwgaXMgbm90IHNldAojIENPTkZJR19BU1lNTUVUUklDX0tFWV9UWVBF
IGlzIG5vdCBzZXQKCiMKIyBDZXJ0aWZpY2F0ZXMgZm9yIHNpZ25hdHVyZSBjaGVja2luZwoj
CiMgQ09ORklHX1NZU1RFTV9CTEFDS0xJU1RfS0VZUklORyBpcyBub3Qgc2V0CiMgZW5kIG9m
IENlcnRpZmljYXRlcyBmb3Igc2lnbmF0dXJlIGNoZWNraW5nCgpDT05GSUdfQklOQVJZX1BS
SU5URj15CgojCiMgTGlicmFyeSByb3V0aW5lcwojCiMgQ09ORklHX1BBQ0tJTkcgaXMgbm90
IHNldApDT05GSUdfQklUUkVWRVJTRT15CkNPTkZJR19HRU5FUklDX1NUUk5DUFlfRlJPTV9V
U0VSPXkKQ09ORklHX0dFTkVSSUNfU1RSTkxFTl9VU0VSPXkKQ09ORklHX0dFTkVSSUNfTkVU
X1VUSUxTPXkKQ09ORklHX0NPUkRJQz1tCiMgQ09ORklHX1BSSU1FX05VTUJFUlMgaXMgbm90
IHNldApDT05GSUdfUkFUSU9OQUw9eQpDT05GSUdfR0VORVJJQ19JT01BUD15CkNPTkZJR19B
UkNIX1VTRV9DTVBYQ0hHX0xPQ0tSRUY9eQpDT05GSUdfQVJDSF9IQVNfRkFTVF9NVUxUSVBM
SUVSPXkKQ09ORklHX0FSQ0hfVVNFX1NZTV9BTk5PVEFUSU9OUz15CgojCiMgQ3J5cHRvIGxp
YnJhcnkgcm91dGluZXMKIwpDT05GSUdfQ1JZUFRPX0xJQl9VVElMUz15CkNPTkZJR19DUllQ
VE9fTElCX0FFUz15CkNPTkZJR19DUllQVE9fTElCX0dGMTI4TVVMPW0KQ09ORklHX0NSWVBU
T19MSUJfQkxBS0UyU19HRU5FUklDPXkKIyBDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEEgaXMg
bm90IHNldAojIENPTkZJR19DUllQVE9fTElCX0NVUlZFMjU1MTkgaXMgbm90IHNldApDT05G
SUdfQ1JZUFRPX0xJQl9ERVM9bQpDT05GSUdfQ1JZUFRPX0xJQl9QT0xZMTMwNV9SU0laRT0x
CiMgQ09ORklHX0NSWVBUT19MSUJfUE9MWTEzMDUgaXMgbm90IHNldAojIENPTkZJR19DUllQ
VE9fTElCX0NIQUNIQTIwUE9MWTEzMDUgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0xJQl9T
SEExPXkKQ09ORklHX0NSWVBUT19MSUJfU0hBMjU2PXkKIyBlbmQgb2YgQ3J5cHRvIGxpYnJh
cnkgcm91dGluZXMKCkNPTkZJR19DUkNfQ0NJVFQ9bQpDT05GSUdfQ1JDMTY9bQpDT05GSUdf
Q1JDX1QxMERJRj15CkNPTkZJR19DUkM2NF9ST0NLU09GVD15CkNPTkZJR19DUkNfSVRVX1Q9
bQpDT05GSUdfQ1JDMzI9eQojIENPTkZJR19DUkMzMl9TRUxGVEVTVCBpcyBub3Qgc2V0CkNP
TkZJR19DUkMzMl9TTElDRUJZOD15CiMgQ09ORklHX0NSQzMyX1NMSUNFQlk0IGlzIG5vdCBz
ZXQKIyBDT05GSUdfQ1JDMzJfU0FSV0FURSBpcyBub3Qgc2V0CiMgQ09ORklHX0NSQzMyX0JJ
VCBpcyBub3Qgc2V0CkNPTkZJR19DUkM2ND15CiMgQ09ORklHX0NSQzQgaXMgbm90IHNldApD
T05GSUdfQ1JDNz1tCkNPTkZJR19MSUJDUkMzMkM9bQojIENPTkZJR19DUkM4IGlzIG5vdCBz
ZXQKQ09ORklHX1hYSEFTSD15CkNPTkZJR19BVURJVF9HRU5FUklDPXkKIyBDT05GSUdfUkFO
RE9NMzJfU0VMRlRFU1QgaXMgbm90IHNldApDT05GSUdfWkxJQl9JTkZMQVRFPXkKQ09ORklH
X1pMSUJfREVGTEFURT1tCkNPTkZJR19MWk9fQ09NUFJFU1M9eQpDT05GSUdfTFpPX0RFQ09N
UFJFU1M9eQpDT05GSUdfTFo0X0RFQ09NUFJFU1M9eQpDT05GSUdfWlNURF9DT01NT049eQpD
T05GSUdfWlNURF9ERUNPTVBSRVNTPXkKQ09ORklHX1haX0RFQz15CkNPTkZJR19YWl9ERUNf
WDg2PXkKIyBDT05GSUdfWFpfREVDX1BPV0VSUEMgaXMgbm90IHNldAojIENPTkZJR19YWl9E
RUNfQVJNIGlzIG5vdCBzZXQKIyBDT05GSUdfWFpfREVDX0FSTVRIVU1CIGlzIG5vdCBzZXQK
IyBDT05GSUdfWFpfREVDX0FSTTY0IGlzIG5vdCBzZXQKIyBDT05GSUdfWFpfREVDX1NQQVJD
IGlzIG5vdCBzZXQKIyBDT05GSUdfWFpfREVDX1JJU0NWIGlzIG5vdCBzZXQKIyBDT05GSUdf
WFpfREVDX01JQ1JPTFpNQSBpcyBub3Qgc2V0CkNPTkZJR19YWl9ERUNfQkNKPXkKIyBDT05G
SUdfWFpfREVDX1RFU1QgaXMgbm90IHNldApDT05GSUdfREVDT01QUkVTU19HWklQPXkKQ09O
RklHX0RFQ09NUFJFU1NfQlpJUDI9eQpDT05GSUdfREVDT01QUkVTU19MWk1BPXkKQ09ORklH
X0RFQ09NUFJFU1NfWFo9eQpDT05GSUdfREVDT01QUkVTU19MWk89eQpDT05GSUdfREVDT01Q
UkVTU19MWjQ9eQpDT05GSUdfREVDT01QUkVTU19aU1REPXkKQ09ORklHX0dFTkVSSUNfQUxM
T0NBVE9SPXkKQ09ORklHX1RFWFRTRUFSQ0g9eQpDT05GSUdfVEVYVFNFQVJDSF9LTVA9bQpD
T05GSUdfVEVYVFNFQVJDSF9CTT1tCkNPTkZJR19URVhUU0VBUkNIX0ZTTT1tCkNPTkZJR19C
VFJFRT15CkNPTkZJR19JTlRFUlZBTF9UUkVFPXkKQ09ORklHX1hBUlJBWV9NVUxUST15CkNP
TkZJR19BU1NPQ0lBVElWRV9BUlJBWT15CkNPTkZJR19IQVNfSU9NRU09eQpDT05GSUdfSEFT
X0lPUE9SVD15CkNPTkZJR19IQVNfSU9QT1JUX01BUD15CkNPTkZJR19IQVNfRE1BPXkKQ09O
RklHX0RNQV9PUFNfSEVMUEVSUz15CkNPTkZJR19ORUVEX1NHX0RNQV9GTEFHUz15CkNPTkZJ
R19ORUVEX1NHX0RNQV9MRU5HVEg9eQpDT05GSUdfTkVFRF9ETUFfTUFQX1NUQVRFPXkKQ09O
RklHX0FSQ0hfRE1BX0FERFJfVF82NEJJVD15CkNPTkZJR19TV0lPVExCPXkKIyBDT05GSUdf
U1dJT1RMQl9EWU5BTUlDIGlzIG5vdCBzZXQKQ09ORklHX0RNQV9ORUVEX1NZTkM9eQojIENP
TkZJR19ETUFfQVBJX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BX01BUF9CRU5DSE1B
UksgaXMgbm90IHNldApDT05GSUdfU0dMX0FMTE9DPXkKQ09ORklHX0NIRUNLX1NJR05BVFVS
RT15CkNPTkZJR19DUFVfUk1BUD15CkNPTkZJR19EUUw9eQpDT05GSUdfR0xPQj15CiMgQ09O
RklHX0dMT0JfU0VMRlRFU1QgaXMgbm90IHNldApDT05GSUdfTkxBVFRSPXkKQ09ORklHX0NM
Wl9UQUI9eQpDT05GSUdfSVJRX1BPTEw9eQpDT05GSUdfTVBJTElCPW0KQ09ORklHX0RJTUxJ
Qj15CkNPTkZJR19VQ1MyX1NUUklORz15CkNPTkZJR19IQVZFX0dFTkVSSUNfVkRTTz15CkNP
TkZJR19HRU5FUklDX0dFVFRJTUVPRkRBWT15CkNPTkZJR19HRU5FUklDX1ZEU09fMzI9eQpD
T05GSUdfR0VORVJJQ19WRFNPX1RJTUVfTlM9eQpDT05GSUdfR0VORVJJQ19WRFNPX09WRVJG
TE9XX1BST1RFQ1Q9eQpDT05GSUdfRk9OVF9TVVBQT1JUPXkKIyBDT05GSUdfRk9OVFMgaXMg
bm90IHNldApDT05GSUdfRk9OVF84eDg9eQpDT05GSUdfRk9OVF84eDE2PXkKQ09ORklHX1NH
X1BPT0w9eQpDT05GSUdfQVJDSF9IQVNfQ1BVX0NBQ0hFX0lOVkFMSURBVEVfTUVNUkVHSU9O
PXkKQ09ORklHX0FSQ0hfU1RBQ0tXQUxLPXkKQ09ORklHX1NUQUNLREVQT1Q9eQpDT05GSUdf
U1RBQ0tERVBPVF9NQVhfRlJBTUVTPTY0CkNPTkZJR19TQklUTUFQPXkKIyBDT05GSUdfTFdR
X1RFU1QgaXMgbm90IHNldAojIGVuZCBvZiBMaWJyYXJ5IHJvdXRpbmVzCgpDT05GSUdfRklS
TVdBUkVfVEFCTEU9eQoKIwojIEtlcm5lbCBoYWNraW5nCiMKCiMKIyBwcmludGsgYW5kIGRt
ZXNnIG9wdGlvbnMKIwpDT05GSUdfUFJJTlRLX1RJTUU9eQojIENPTkZJR19QUklOVEtfQ0FM
TEVSIGlzIG5vdCBzZXQKIyBDT05GSUdfU1RBQ0tUUkFDRV9CVUlMRF9JRCBpcyBub3Qgc2V0
CkNPTkZJR19DT05TT0xFX0xPR0xFVkVMX0RFRkFVTFQ9NwpDT05GSUdfQ09OU09MRV9MT0dM
RVZFTF9RVUlFVD00CkNPTkZJR19NRVNTQUdFX0xPR0xFVkVMX0RFRkFVTFQ9NApDT05GSUdf
Qk9PVF9QUklOVEtfREVMQVk9eQpDT05GSUdfRFlOQU1JQ19ERUJVRz15CkNPTkZJR19EWU5B
TUlDX0RFQlVHX0NPUkU9eQpDT05GSUdfU1lNQk9MSUNfRVJSTkFNRT15CkNPTkZJR19ERUJV
R19CVUdWRVJCT1NFPXkKIyBlbmQgb2YgcHJpbnRrIGFuZCBkbWVzZyBvcHRpb25zCgpDT05G
SUdfREVCVUdfS0VSTkVMPXkKQ09ORklHX0RFQlVHX01JU0M9eQoKIwojIENvbXBpbGUtdGlt
ZSBjaGVja3MgYW5kIGNvbXBpbGVyIG9wdGlvbnMKIwpDT05GSUdfREVCVUdfSU5GTz15CkNP
TkZJR19BU19IQVNfTk9OX0NPTlNUX1VMRUIxMjg9eQojIENPTkZJR19ERUJVR19JTkZPX05P
TkUgaXMgbm90IHNldApDT05GSUdfREVCVUdfSU5GT19EV0FSRl9UT09MQ0hBSU5fREVGQVVM
VD15CiMgQ09ORklHX0RFQlVHX0lORk9fRFdBUkY0IGlzIG5vdCBzZXQKIyBDT05GSUdfREVC
VUdfSU5GT19EV0FSRjUgaXMgbm90IHNldAojIENPTkZJR19ERUJVR19JTkZPX1JFRFVDRUQg
aXMgbm90IHNldApDT05GSUdfREVCVUdfSU5GT19DT01QUkVTU0VEX05PTkU9eQojIENPTkZJ
R19ERUJVR19JTkZPX0NPTVBSRVNTRURfWkxJQiBpcyBub3Qgc2V0CiMgQ09ORklHX0RFQlVH
X0lORk9fU1BMSVQgaXMgbm90IHNldApDT05GSUdfUEFIT0xFX0hBU19TUExJVF9CVEY9eQpD
T05GSUdfUEFIT0xFX0hBU19MQU5HX0VYQ0xVREU9eQojIENPTkZJR19HREJfU0NSSVBUUyBp
cyBub3Qgc2V0CkNPTkZJR19GUkFNRV9XQVJOPTIwNDgKQ09ORklHX1NUUklQX0FTTV9TWU1T
PXkKIyBDT05GSUdfUkVBREFCTEVfQVNNIGlzIG5vdCBzZXQKIyBDT05GSUdfSEVBREVSU19J
TlNUQUxMIGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfU0VDVElPTl9NSVNNQVRDSCBpcyBu
b3Qgc2V0CkNPTkZJR19TRUNUSU9OX01JU01BVENIX1dBUk5fT05MWT15CkNPTkZJR19BUkNI
X1dBTlRfRlJBTUVfUE9JTlRFUlM9eQpDT05GSUdfRlJBTUVfUE9JTlRFUj15CiMgQ09ORklH
X1ZNTElOVVhfTUFQIGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfRk9SQ0VfV0VBS19QRVJf
Q1BVIGlzIG5vdCBzZXQKIyBlbmQgb2YgQ29tcGlsZS10aW1lIGNoZWNrcyBhbmQgY29tcGls
ZXIgb3B0aW9ucwoKIwojIEdlbmVyaWMgS2VybmVsIERlYnVnZ2luZyBJbnN0cnVtZW50cwoj
CkNPTkZJR19NQUdJQ19TWVNSUT15CkNPTkZJR19NQUdJQ19TWVNSUV9ERUZBVUxUX0VOQUJM
RT0weDAxYjYKIyBDT05GSUdfTUFHSUNfU1lTUlFfU0VSSUFMIGlzIG5vdCBzZXQKQ09ORklH
X0RFQlVHX0ZTPXkKQ09ORklHX0RFQlVHX0ZTX0FMTE9XX0FMTD15CiMgQ09ORklHX0RFQlVH
X0ZTX0RJU0FMTE9XX01PVU5UIGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfRlNfQUxMT1df
Tk9ORSBpcyBub3Qgc2V0CkNPTkZJR19IQVZFX0FSQ0hfS0dEQj15CiMgQ09ORklHX0tHREIg
aXMgbm90IHNldApDT05GSUdfQVJDSF9IQVNfVUJTQU49eQojIENPTkZJR19VQlNBTiBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEdlbmVyaWMgS2VybmVsIERlYnVnZ2luZyBJbnN0cnVtZW50cwoK
IwojIE5ldHdvcmtpbmcgRGVidWdnaW5nCiMKIyBDT05GSUdfTkVUX0RFVl9SRUZDTlRfVFJB
Q0tFUiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9OU19SRUZDTlRfVFJBQ0tFUiBpcyBub3Qg
c2V0CiMgQ09ORklHX0RFQlVHX05FVCBpcyBub3Qgc2V0CiMgZW5kIG9mIE5ldHdvcmtpbmcg
RGVidWdnaW5nCgojCiMgTWVtb3J5IERlYnVnZ2luZwojCiMgQ09ORklHX1BBR0VfRVhURU5T
SU9OIGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfUEFHRUFMTE9DIGlzIG5vdCBzZXQKQ09O
RklHX1NMVUJfREVCVUc9eQojIENPTkZJR19TTFVCX0RFQlVHX09OIGlzIG5vdCBzZXQKIyBD
T05GSUdfUEFHRV9PV05FUiBpcyBub3Qgc2V0CiMgQ09ORklHX1BBR0VfUE9JU09OSU5HIGlz
IG5vdCBzZXQKIyBDT05GSUdfREVCVUdfUEFHRV9SRUYgaXMgbm90IHNldAojIENPTkZJR19E
RUJVR19ST0RBVEFfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19ERUJVR19XWD15
CkNPTkZJR19ERUJVR19XWD15CkNPTkZJR19HRU5FUklDX1BURFVNUD15CkNPTkZJR19QVERV
TVBfQ09SRT15CiMgQ09ORklHX1BURFVNUF9ERUJVR0ZTIGlzIG5vdCBzZXQKQ09ORklHX0hB
VkVfREVCVUdfS01FTUxFQUs9eQojIENPTkZJR19ERUJVR19LTUVNTEVBSyBpcyBub3Qgc2V0
CiMgQ09ORklHX0RFQlVHX09CSkVDVFMgaXMgbm90IHNldAojIENPTkZJR19TSFJJTktFUl9E
RUJVRyBpcyBub3Qgc2V0CiMgQ09ORklHX0RFQlVHX1NUQUNLX1VTQUdFIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0NIRURfU1RBQ0tfRU5EX0NIRUNLIGlzIG5vdCBzZXQKIyBDT05GSUdfREVC
VUdfVk0gaXMgbm90IHNldApDT05GSUdfQVJDSF9IQVNfREVCVUdfVklSVFVBTD15CiMgQ09O
RklHX0RFQlVHX1ZJUlRVQUwgaXMgbm90IHNldApDT05GSUdfREVCVUdfTUVNT1JZX0lOSVQ9
eQojIENPTkZJR19ERUJVR19QRVJfQ1BVX01BUFMgaXMgbm90IHNldAojIENPTkZJR19ERUJV
R19LTUFQX0xPQ0FMIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS01BUF9MT0NB
TF9GT1JDRV9NQVA9eQojIENPTkZJR19ERUJVR19LTUFQX0xPQ0FMX0ZPUkNFX01BUCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0RFQlVHX0hJR0hNRU0gaXMgbm90IHNldApDT05GSUdfSEFWRV9E
RUJVR19TVEFDS09WRVJGTE9XPXkKIyBDT05GSUdfREVCVUdfU1RBQ0tPVkVSRkxPVyBpcyBu
b3Qgc2V0CiMgQ09ORklHX01FTV9BTExPQ19QUk9GSUxJTkcgaXMgbm90IHNldApDT05GSUdf
Q0NfSEFTX0tBU0FOX0dFTkVSSUM9eQpDT05GSUdfSEFWRV9BUkNIX0tGRU5DRT15CiMgQ09O
RklHX0tGRU5DRSBpcyBub3Qgc2V0CiMgZW5kIG9mIE1lbW9yeSBEZWJ1Z2dpbmcKCiMgQ09O
RklHX0RFQlVHX1NISVJRIGlzIG5vdCBzZXQKCiMKIyBEZWJ1ZyBPb3BzLCBMb2NrdXBzIGFu
ZCBIYW5ncwojCiMgQ09ORklHX1BBTklDX09OX09PUFMgaXMgbm90IHNldApDT05GSUdfUEFO
SUNfT05fT09QU19WQUxVRT0wCkNPTkZJR19QQU5JQ19USU1FT1VUPTAKQ09ORklHX0xPQ0tV
UF9ERVRFQ1RPUj15CkNPTkZJR19TT0ZUTE9DS1VQX0RFVEVDVE9SPXkKIyBDT05GSUdfQk9P
VFBBUkFNX1NPRlRMT0NLVVBfUEFOSUMgaXMgbm90IHNldApDT05GSUdfSEFWRV9IQVJETE9D
S1VQX0RFVEVDVE9SX0JVRERZPXkKQ09ORklHX0hBUkRMT0NLVVBfREVURUNUT1I9eQojIENP
TkZJR19IQVJETE9DS1VQX0RFVEVDVE9SX1BSRUZFUl9CVUREWSBpcyBub3Qgc2V0CkNPTkZJ
R19IQVJETE9DS1VQX0RFVEVDVE9SX1BFUkY9eQojIENPTkZJR19IQVJETE9DS1VQX0RFVEVD
VE9SX0JVRERZIGlzIG5vdCBzZXQKIyBDT05GSUdfSEFSRExPQ0tVUF9ERVRFQ1RPUl9BUkNI
IGlzIG5vdCBzZXQKQ09ORklHX0hBUkRMT0NLVVBfREVURUNUT1JfQ09VTlRTX0hSVElNRVI9
eQojIENPTkZJR19CT09UUEFSQU1fSEFSRExPQ0tVUF9QQU5JQyBpcyBub3Qgc2V0CkNPTkZJ
R19ERVRFQ1RfSFVOR19UQVNLPXkKQ09ORklHX0RFRkFVTFRfSFVOR19UQVNLX1RJTUVPVVQ9
MTIwCiMgQ09ORklHX0JPT1RQQVJBTV9IVU5HX1RBU0tfUEFOSUMgaXMgbm90IHNldAojIENP
TkZJR19XUV9XQVRDSERPRyBpcyBub3Qgc2V0CiMgQ09ORklHX1dRX0NQVV9JTlRFTlNJVkVf
UkVQT1JUIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9MT0NLVVAgaXMgbm90IHNldAojIGVu
ZCBvZiBEZWJ1ZyBPb3BzLCBMb2NrdXBzIGFuZCBIYW5ncwoKIwojIFNjaGVkdWxlciBEZWJ1
Z2dpbmcKIwpDT05GSUdfU0NIRURfREVCVUc9eQpDT05GSUdfU0NIRURfSU5GTz15CiMgQ09O
RklHX1NDSEVEU1RBVFMgaXMgbm90IHNldAojIGVuZCBvZiBTY2hlZHVsZXIgRGVidWdnaW5n
CgojIENPTkZJR19ERUJVR19USU1FS0VFUElORyBpcyBub3Qgc2V0CiMgQ09ORklHX0RFQlVH
X1BSRUVNUFQgaXMgbm90IHNldAoKIwojIExvY2sgRGVidWdnaW5nIChzcGlubG9ja3MsIG11
dGV4ZXMsIGV0Yy4uLikKIwpDT05GSUdfTE9DS19ERUJVR0dJTkdfU1VQUE9SVD15CiMgQ09O
RklHX1BST1ZFX0xPQ0tJTkcgaXMgbm90IHNldAojIENPTkZJR19MT0NLX1NUQVQgaXMgbm90
IHNldAojIENPTkZJR19ERUJVR19SVF9NVVRFWEVTIGlzIG5vdCBzZXQKIyBDT05GSUdfREVC
VUdfU1BJTkxPQ0sgaXMgbm90IHNldAojIENPTkZJR19ERUJVR19NVVRFWEVTIGlzIG5vdCBz
ZXQKIyBDT05GSUdfREVCVUdfV1dfTVVURVhfU0xPV1BBVEggaXMgbm90IHNldAojIENPTkZJ
R19ERUJVR19SV1NFTVMgaXMgbm90IHNldAojIENPTkZJR19ERUJVR19MT0NLX0FMTE9DIGlz
IG5vdCBzZXQKIyBDT05GSUdfREVCVUdfQVRPTUlDX1NMRUVQIGlzIG5vdCBzZXQKIyBDT05G
SUdfREVCVUdfTE9DS0lOR19BUElfU0VMRlRFU1RTIGlzIG5vdCBzZXQKIyBDT05GSUdfTE9D
S19UT1JUVVJFX1RFU1QgaXMgbm90IHNldAojIENPTkZJR19XV19NVVRFWF9TRUxGVEVTVCBp
cyBub3Qgc2V0CiMgQ09ORklHX1NDRl9UT1JUVVJFX1RFU1QgaXMgbm90IHNldAojIGVuZCBv
ZiBMb2NrIERlYnVnZ2luZyAoc3BpbmxvY2tzLCBtdXRleGVzLCBldGMuLi4pCgojIENPTkZJ
R19OTUlfQ0hFQ0tfQ1BVIGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfSVJRRkxBR1MgaXMg
bm90IHNldApDT05GSUdfU1RBQ0tUUkFDRT15CiMgQ09ORklHX1dBUk5fQUxMX1VOU0VFREVE
X1JBTkRPTSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFQlVHX0tPQkpFQ1QgaXMgbm90IHNldAoK
IwojIERlYnVnIGtlcm5lbCBkYXRhIHN0cnVjdHVyZXMKIwojIENPTkZJR19ERUJVR19MSVNU
IGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfUExJU1QgaXMgbm90IHNldAojIENPTkZJR19E
RUJVR19TRyBpcyBub3Qgc2V0CiMgQ09ORklHX0RFQlVHX05PVElGSUVSUyBpcyBub3Qgc2V0
CiMgQ09ORklHX0RFQlVHX01BUExFX1RSRUUgaXMgbm90IHNldAojIGVuZCBvZiBEZWJ1ZyBr
ZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCgojCiMgUkNVIERlYnVnZ2luZwojCiMgQ09ORklHX1JD
VV9TQ0FMRV9URVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfUkNVX1RPUlRVUkVfVEVTVCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1JDVV9SRUZfU0NBTEVfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19S
Q1VfQ1BVX1NUQUxMX1RJTUVPVVQ9MjEKQ09ORklHX1JDVV9FWFBfQ1BVX1NUQUxMX1RJTUVP
VVQ9MAojIENPTkZJR19SQ1VfQ1BVX1NUQUxMX0NQVVRJTUUgaXMgbm90IHNldAojIENPTkZJ
R19SQ1VfVFJBQ0UgaXMgbm90IHNldAojIENPTkZJR19SQ1VfRVFTX0RFQlVHIGlzIG5vdCBz
ZXQKIyBlbmQgb2YgUkNVIERlYnVnZ2luZwoKIyBDT05GSUdfREVCVUdfV1FfRk9SQ0VfUlJf
Q1BVIGlzIG5vdCBzZXQKIyBDT05GSUdfQ1BVX0hPVFBMVUdfU1RBVEVfQ09OVFJPTCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0xBVEVOQ1lUT1AgaXMgbm90IHNldAojIENPTkZJR19ERUJVR19D
R1JPVVBfUkVGIGlzIG5vdCBzZXQKQ09ORklHX1VTRVJfU1RBQ0tUUkFDRV9TVVBQT1JUPXkK
Q09ORklHX05PUF9UUkFDRVI9eQpDT05GSUdfSEFWRV9SRVRIT09LPXkKQ09ORklHX1JFVEhP
T0s9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9UUkFDRVI9eQpDT05GSUdfSEFWRV9GVU5DVElP
Tl9HUkFQSF9UUkFDRVI9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9HUkFQSF9SRVRWQUw9eQpD
T05GSUdfSEFWRV9EWU5BTUlDX0ZUUkFDRT15CkNPTkZJR19IQVZFX0RZTkFNSUNfRlRSQUNF
X1dJVEhfUkVHUz15CkNPTkZJR19IQVZFX0RZTkFNSUNfRlRSQUNFX1dJVEhfRElSRUNUX0NB
TExTPXkKQ09ORklHX0hBVkVfRFlOQU1JQ19GVFJBQ0VfTk9fUEFUQ0hBQkxFPXkKQ09ORklH
X0hBVkVfRlRSQUNFX01DT1VOVF9SRUNPUkQ9eQpDT05GSUdfSEFWRV9TWVNDQUxMX1RSQUNF
UE9JTlRTPXkKQ09ORklHX0hBVkVfQ19SRUNPUkRNQ09VTlQ9eQpDT05GSUdfSEFWRV9CVUlM
RFRJTUVfTUNPVU5UX1NPUlQ9eQpDT05GSUdfVFJBQ0VfQ0xPQ0s9eQpDT05GSUdfUklOR19C
VUZGRVI9eQpDT05GSUdfRVZFTlRfVFJBQ0lORz15CkNPTkZJR19DT05URVhUX1NXSVRDSF9U
UkFDRVI9eQpDT05GSUdfVFJBQ0lORz15CkNPTkZJR19HRU5FUklDX1RSQUNFUj15CkNPTkZJ
R19UUkFDSU5HX1NVUFBPUlQ9eQpDT05GSUdfRlRSQUNFPXkKIyBDT05GSUdfQk9PVFRJTUVf
VFJBQ0lORyBpcyBub3Qgc2V0CiMgQ09ORklHX0ZVTkNUSU9OX1RSQUNFUiBpcyBub3Qgc2V0
CiMgQ09ORklHX1NUQUNLX1RSQUNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX0lSUVNPRkZfVFJB
Q0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfUFJFRU1QVF9UUkFDRVIgaXMgbm90IHNldAojIENP
TkZJR19TQ0hFRF9UUkFDRVIgaXMgbm90IHNldAojIENPTkZJR19IV0xBVF9UUkFDRVIgaXMg
bm90IHNldAojIENPTkZJR19PU05PSVNFX1RSQUNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX1RJ
TUVSTEFUX1RSQUNFUiBpcyBub3Qgc2V0CiMgQ09ORklHX01NSU9UUkFDRSBpcyBub3Qgc2V0
CiMgQ09ORklHX0ZUUkFDRV9TWVNDQUxMUyBpcyBub3Qgc2V0CiMgQ09ORklHX1RSQUNFUl9T
TkFQU0hPVCBpcyBub3Qgc2V0CkNPTkZJR19CUkFOQ0hfUFJPRklMRV9OT05FPXkKIyBDT05G
SUdfUFJPRklMRV9BTk5PVEFURURfQlJBTkNIRVMgaXMgbm90IHNldAojIENPTkZJR19QUk9G
SUxFX0FMTF9CUkFOQ0hFUyBpcyBub3Qgc2V0CkNPTkZJR19CTEtfREVWX0lPX1RSQUNFPXkK
IyBDT05GSUdfS1BST0JFX0VWRU5UUyBpcyBub3Qgc2V0CiMgQ09ORklHX1VQUk9CRV9FVkVO
VFMgaXMgbm90IHNldAojIENPTkZJR19TWU5USF9FVkVOVFMgaXMgbm90IHNldAojIENPTkZJ
R19VU0VSX0VWRU5UUyBpcyBub3Qgc2V0CiMgQ09ORklHX0hJU1RfVFJJR0dFUlMgaXMgbm90
IHNldAojIENPTkZJR19UUkFDRV9FVkVOVF9JTkpFQ1QgaXMgbm90IHNldAojIENPTkZJR19U
UkFDRVBPSU5UX0JFTkNITUFSSyBpcyBub3Qgc2V0CiMgQ09ORklHX1JJTkdfQlVGRkVSX0JF
TkNITUFSSyBpcyBub3Qgc2V0CiMgQ09ORklHX1RSQUNFX0VWQUxfTUFQX0ZJTEUgaXMgbm90
IHNldAojIENPTkZJR19GVFJBQ0VfU1RBUlRVUF9URVNUIGlzIG5vdCBzZXQKIyBDT05GSUdf
UklOR19CVUZGRVJfU1RBUlRVUF9URVNUIGlzIG5vdCBzZXQKIyBDT05GSUdfUklOR19CVUZG
RVJfVkFMSURBVEVfVElNRV9ERUxUQVMgaXMgbm90IHNldAojIENPTkZJR19QUkVFTVBUSVJR
X0RFTEFZX1RFU1QgaXMgbm90IHNldAojIENPTkZJR19SViBpcyBub3Qgc2V0CiMgQ09ORklH
X1BST1ZJREVfT0hDSTEzOTRfRE1BX0lOSVQgaXMgbm90IHNldAojIENPTkZJR19TQU1QTEVT
IGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfSEFTX0RFVk1FTV9JU19BTExPV0VEPXkKQ09ORklH
X1NUUklDVF9ERVZNRU09eQpDT05GSUdfSU9fU1RSSUNUX0RFVk1FTT15CgojCiMgeDg2IERl
YnVnZ2luZwojCkNPTkZJR19YODZfVkVSQk9TRV9CT09UVVA9eQpDT05GSUdfRUFSTFlfUFJJ
TlRLPXkKIyBDT05GSUdfRUFSTFlfUFJJTlRLX0RCR1AgaXMgbm90IHNldAojIENPTkZJR19F
QVJMWV9QUklOVEtfVVNCX1hEQkMgaXMgbm90IHNldAojIENPTkZJR19FRklfUEdUX0RVTVAg
aXMgbm90IHNldAojIENPTkZJR19ERUJVR19UTEJGTFVTSCBpcyBub3Qgc2V0CkNPTkZJR19I
QVZFX01NSU9UUkFDRV9TVVBQT1JUPXkKIyBDT05GSUdfWDg2X0RFQ09ERVJfU0VMRlRFU1Qg
aXMgbm90IHNldApDT05GSUdfSU9fREVMQVlfMFg4MD15CiMgQ09ORklHX0lPX0RFTEFZXzBY
RUQgaXMgbm90IHNldAojIENPTkZJR19JT19ERUxBWV9VREVMQVkgaXMgbm90IHNldAojIENP
TkZJR19JT19ERUxBWV9OT05FIGlzIG5vdCBzZXQKIyBDT05GSUdfREVCVUdfQk9PVF9QQVJB
TVMgaXMgbm90IHNldAojIENPTkZJR19DUEFfREVCVUcgaXMgbm90IHNldAojIENPTkZJR19E
RUJVR19FTlRSWSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFQlVHX05NSV9TRUxGVEVTVCBpcyBu
b3Qgc2V0CkNPTkZJR19YODZfREVCVUdfRlBVPXkKIyBDT05GSUdfUFVOSVRfQVRPTV9ERUJV
RyBpcyBub3Qgc2V0CkNPTkZJR19VTldJTkRFUl9GUkFNRV9QT0lOVEVSPXkKIyBlbmQgb2Yg
eDg2IERlYnVnZ2luZwoKIwojIEtlcm5lbCBUZXN0aW5nIGFuZCBDb3ZlcmFnZQojCiMgQ09O
RklHX0tVTklUIGlzIG5vdCBzZXQKIyBDT05GSUdfTk9USUZJRVJfRVJST1JfSU5KRUNUSU9O
IGlzIG5vdCBzZXQKQ09ORklHX0ZVTkNUSU9OX0VSUk9SX0lOSkVDVElPTj15CiMgQ09ORklH
X0ZBVUxUX0lOSkVDVElPTiBpcyBub3Qgc2V0CkNPTkZJR19DQ19IQVNfU0FOQ09WX1RSQUNF
X1BDPXkKIyBDT05GSUdfUlVOVElNRV9URVNUSU5HX01FTlUgaXMgbm90IHNldApDT05GSUdf
QVJDSF9VU0VfTUVNVEVTVD15CkNPTkZJR19NRU1URVNUPXkKIyBDT05GSUdfSFlQRVJWX1RF
U1RJTkcgaXMgbm90IHNldAojIGVuZCBvZiBLZXJuZWwgVGVzdGluZyBhbmQgQ292ZXJhZ2UK
CiMKIyBSdXN0IGhhY2tpbmcKIwojIGVuZCBvZiBSdXN0IGhhY2tpbmcKIyBlbmQgb2YgS2Vy
bmVsIGhhY2tpbmcK
--------------IC294Xw0CGU13KHQ2cT0eyHB
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------IC294Xw0CGU13KHQ2cT0eyHB--

--------------y49lKhKZudGVrx7VZwvxal32--

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

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

wsB4BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmcKDbgFAwAAAAAACgkQsN6d1ii/Ey/l
dAf45bM7LV7YrueGVuBKaiUkLA8wsEV3zl6EjzojXd2JQ9HPj4wH9gCbWoBZIrxhmBVNhD+5+k6c
szIfRizt0xdgqENw5yjg2xJC3V+iVN8Qgtt6BMsFztMeu9vOo6PD9Pd92cVXcjMXv+R+0LlB2yFR
OzbLyoq+M6NqpSlRwFiVBwRLI5cp+lccwjq3ih9oK6j7p7Zbg4G/kMPIyiAG0ladgZLoDQ+a3DaF
QYtxmyfZxQ2qB+ecv4pjBdbdVWnESH7iRyG1pq6g2s/l8MQA7QfwKBLJ+sBmhAaNZSgZv5nPScj2
oghy5r0aqDsr15Bs1XxYt+59vZQz278tKVL9tcyW
=edez
-----END PGP SIGNATURE-----

--------------bm4yyyaTP65vbls6PstCWobu--


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 06:50:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 06:50:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817501.1231491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szVxF-0005xG-OQ; Sat, 12 Oct 2024 06:50:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817501.1231491; Sat, 12 Oct 2024 06:50: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 1szVxF-0005x9-Lm; Sat, 12 Oct 2024 06:50:21 +0000
Received: by outflank-mailman (input) for mailman id 817501;
 Sat, 12 Oct 2024 06:50: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=A068=RI=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1szVxE-0005x3-N0
 for xen-devel@lists.xenproject.org; Sat, 12 Oct 2024 06:50:20 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20610.outbound.protection.outlook.com
 [2a01:111:f403:2408::610])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3e15d297-8866-11ef-a0be-8be0dac302b0;
 Sat, 12 Oct 2024 08:50:19 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CYXPR12MB9443.namprd12.prod.outlook.com (2603:10b6:930:db::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20; Sat, 12 Oct
 2024 06:50:15 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8048.017; Sat, 12 Oct 2024
 06:50: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: 3e15d297-8866-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=s0Dat6gOX8REbKCzn9DdhYAYLYK6LfqSk1goePuGNJMuBu9r7O37UIxYRSruxRDumF31GjOPDymF+XpNjl//b55JHjqXNSvK931kZwRF8hA06QqaTc32zQFSwxX9ILoo05vZZznFFfbuTtGRmRnuIQ0ufNu4FtGJMHTqwmZ5HnRkQ5qz7Nwam4801Lr2CfwFneMGCT5o42GKnFtyACRMcMbM6lpXn5SwrZ16ObIt497aQoicuHKihXWQdhGPgchpRlrbuNZDx6LDiy6Mv6BktKtMfhAyRlsEtrZkXzZ2G9WH3OCsmuDIdZxNZdfdU5MLCCIWF1ti6JTh8a9QdOusvg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=gTh8SS8fwzptYw7MXhoR0ymyla8OilaDJl9vy/dzxDE=;
 b=jpmcw7wn193hKETF528K53ecC4vO0mwn/m5ZgjvDb+eyiHWIYcJ+42IqO5/CPUbocmL52qmTaqg0ah9oeDIC9oh5QCFXhs94jT7SqlYB+BiBLRrzK/pizu3u49gQlW/n7XrSGslTjEXjqxFj6j9MUW39EXBuF+/GGZGllfjEGlybPeOfZeLlmdk7+9kU6oPTd1/kYPZjoxOpj+1f4fH3ST+zCucMVJyYEsfBUHKkZwckSxZnvvlsPx3z9em6oRsZAldTFc05HJ0/XdDixjS3ZdzJkvDtSK+sfafPykYheOwI3xqbMM1WCDSFxcSmqULgYArnz9bS7ZUB+dOJnZ+P8A==
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=gTh8SS8fwzptYw7MXhoR0ymyla8OilaDJl9vy/dzxDE=;
 b=Qp9o8a7cNEWsk/lk7qhzsuyA5kURDxSauMVxYcmkXI5Bzas2N5z2pgAq/U0vA0U+L6LkdUZ7hZuKOtG1B5nm0sm0+i5N4soPi8q1sLw5mYUP7ooKfG0QQPu1ADS3G40AsEw4mxKb2O2wWSxETBPV1PSGOdTws7zJ41J6g2RMV5Q=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: =?iso-8859-1?Q?J=FCrgen_Gro=DF?= <jgross@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "linux-kernel@vger.kernel.org"
	<linux-kernel@vger.kernel.org>, =?iso-8859-1?Q?Marek_Marczykowski-G=F3recki?=
	<marmarek@invisiblethingslab.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Topic: [PATCH v3] xen: Remove dependency between pciback and privcmd
Thread-Index: AQHbG4+3Lfp3cJlJ4UuqoaLQId+ES7KBdNAAgAF0qICAAAQHAP//sCgAgACWhQA=
Date: Sat, 12 Oct 2024 06:50:14 +0000
Message-ID:
 <BL1PR12MB5849B929E9D01076059C739DE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <075ce655-e871-4a3d-a550-7363bc4a165f@suse.com>
In-Reply-To: <075ce655-e871-4a3d-a550-7363bc4a165f@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8048.017)
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_|CYXPR12MB9443:EE_
x-ms-office365-filtering-correlation-id: 5e51b349-0e8c-419f-4285-08dcea8a203c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
x-microsoft-antispam-message-info:
 =?iso-8859-1?Q?YsWHwxaP82jIHjY779JfDuJiLbIrKVf0G+q6AI7BZk1zDeQlrp/f8+TBej?=
 =?iso-8859-1?Q?y4Sr2NaVCTxvMqsnYHzcEY2k2WlwOeqrAY37LyYflv5pDsrrfo0xvYor1X?=
 =?iso-8859-1?Q?MAkFli4/dOeakSokLoJowSS9+ZeWDYVxpAP4ELfAK6UKfVN5FxN66+9yJy?=
 =?iso-8859-1?Q?qdnrsOkLagL1xPhHNu59guMQ5n0Rd0r0QyWBk1+5OXWABzWrfb/5gqe2TL?=
 =?iso-8859-1?Q?UfHVHN46f+zzJ5GdPMQ8+sA/B3Y2y1HzAwCnE7sHi5L0QILCEmQIG0Nb9t?=
 =?iso-8859-1?Q?dIs8nghnAR9cIorS6sCq7kzE10lNp3i325Uny6OQeRidteCJlJ4OGEM7+x?=
 =?iso-8859-1?Q?PY1uooXfVR/NNbyzaBMzKVdXy+O+JEh8BdF4btnIFjoLi3FUDjvLIFCewR?=
 =?iso-8859-1?Q?53X2GqjszVdJEljlQEWsLhigLHwN8KBmAIaEYSgdDqRVi2T1Jh03+rnGHN?=
 =?iso-8859-1?Q?eYoe6ycGXuAV67XI3linJpYr6Dm/aPhUUBxCCnGUrJf6gKkuilycaeO5FT?=
 =?iso-8859-1?Q?DcJ7Z9kbjw33anmreTrFp3KXEup32CQCTwBvR1Jx36Nil3ha53aGPSc+JN?=
 =?iso-8859-1?Q?3qAMrlI+oiW2kdg9SEh43tAsLldlhgYg9Ly4TsrVYk5Kc5SAkyu4BbnTLF?=
 =?iso-8859-1?Q?JIzWrEfdqA94OcYDNtSfd4DpxgsS9ztxgGUusRmkFZWjVuiAptvOEUCyP4?=
 =?iso-8859-1?Q?Z7mNCAtzKDZODwCkxfoY62qz3/xkzgic2CgOTBFSdNWQzcNKNzweC8XVBY?=
 =?iso-8859-1?Q?WLYrIwWGiqkt07/2hmA8pAl3jkjLB07inU631mgDXUUHTzhFwENabfnV9Y?=
 =?iso-8859-1?Q?ApghTEnfAOu3mW/A/rZuPFjPgSK8Mk/bVblgtc9W5sqCG/7dMOS4IoNMM6?=
 =?iso-8859-1?Q?Mfrgsz0afOGGO/i5zomtvXGozHtCEN6m/8TlP0ymKQ1G3mLRn5raWvAy8V?=
 =?iso-8859-1?Q?UW1WL9TrvFvCFBMO7Hb4uk4aybmNVT70RlQaNsqNVHBaKjBWanK3gfaUDq?=
 =?iso-8859-1?Q?YDp3dJKKRQbmhWpTsBADDj/pB03w/LPTTYZcmrRaMCfsuraGjSQ6cuOKnB?=
 =?iso-8859-1?Q?2yqnF2LQZBabbJ5B3/dhC28YEGQZk+RMKMx+WVTM/w6+iXsSc9REwVcAbo?=
 =?iso-8859-1?Q?3SDlcVhi68Y4QOK/LCQY1Wo2WiJHEKJMUu0/YQktJA9p2IWYueLiesKSaJ?=
 =?iso-8859-1?Q?rMpkXgdi8GV27dz0HpELVE+8fVoNlNxseP3a5iQGLkeWjkbeYjN2ov4HfQ?=
 =?iso-8859-1?Q?8mtzXCB/4O+JLLnqvHJdtaF0RwWd85xqmtZGVqco4bhnwVV9Gnk+JwQgm9?=
 =?iso-8859-1?Q?EEJISx/7z2KdhxTuOEJTUd1mwC91QgALO43uiTqUVJKKSwfDd0l5jw8F3v?=
 =?iso-8859-1?Q?qNmMi/qwXBopPlQyw3H8KcwBPxM0lgPw=3D=3D?=
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:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?VX1vupIfhpRYYMjKp5r4Vh5IstaCqM67YSnCDg2mzMIPesoVkOYrohdvve?=
 =?iso-8859-1?Q?lt+N0uveo3635RJsuFrhFcT34n1lfBUkZ5zC846TPAKk8iJKqxshPP2Q/k?=
 =?iso-8859-1?Q?ea1ozZu1Zk4tywUilIjYf/bijmEJ8LiXL4Jj0oJH9o8Ttr/zhE0TkdkULD?=
 =?iso-8859-1?Q?S/cfuElewaAa+beGtwh2fFtU8HXoIjz8DmxDX4jXCNfqxIV/0gQxMhjfrE?=
 =?iso-8859-1?Q?xbkyOL2nkOCH7yPY1MMr/1KcGWo7XWY973oYx9iUz+Y2lc5NOaX8Lr4epE?=
 =?iso-8859-1?Q?/n4xVdjJZv0Lkz3avdIWMiH1NKqsSTM6QHxlENgajaWoa3qma5Js6mL1fm?=
 =?iso-8859-1?Q?JaUyhbwiFEfQUOTMCJRmC3G1pjn4xeIrwcSNq2JQgkQgcHkVmCcw+XpVLC?=
 =?iso-8859-1?Q?3vmec7qjOhycepcVzB9urwg+N4rtr95HoXiph2wqtUyalgJvJKdLnsi6S7?=
 =?iso-8859-1?Q?6OM2d92MWW+k9APBXVRuaHF+6mW044/mIRoFzIqKT6G62YUdsFHkzPUvmZ?=
 =?iso-8859-1?Q?zYfLz95+jQMBjVG7crqec3G+89+dA744+Chpq5qvVPpZxlLaXiJ2a0zVRU?=
 =?iso-8859-1?Q?UZoVqTAcI68BlUe6Iuc80e4W7JaH4DxmQe9UPGs8L6rZUI0vdS/KYB340C?=
 =?iso-8859-1?Q?bK4RTjHwupJJOY0AvymPg2W4cQFaKSnHPz806gN1QHGtZidCcoaUyOc5IO?=
 =?iso-8859-1?Q?ry14IvfI7QkH/ghk5Yc1nvp6Gk/Pa5eqNTVcU/QCy5CJtXJI6LDgzucgcx?=
 =?iso-8859-1?Q?3dJjEbcnNXYz2zG8FYo26yvWNVaZ7n5/SGZjL8EJ1yiezHQWPU+HyYKbUe?=
 =?iso-8859-1?Q?rxrl5OPEClRp1dxIzQsa53M780EkFEK3b42sahypIh1SPuj0QJEQDEcxBy?=
 =?iso-8859-1?Q?d7xeMV2Q4+9XiwTFS6yA0isecA11apVOqr2u49rzcRbCuvjybPvmslVedb?=
 =?iso-8859-1?Q?x/LN/k/V0k8jBV4sM2CC/sSB8Qus+Tzl5oDNVORHud+dYuRyNjQOU0IQAu?=
 =?iso-8859-1?Q?KiI+8PVba+GbbsvxAmT4VwI/hoKjk+3+7KWaCpyze62ufJDCaBvvpgp2rI?=
 =?iso-8859-1?Q?JVFUDtkmaQsl4CQzX15ryoa7PkHMZHZhi4bT7FglVNOxFjjAOhwHnz46yv?=
 =?iso-8859-1?Q?PPl82X8OfzDI7MqQhw7IKOca2k99cBQmmpoysluuCF02sZbdFSbVLKfbbK?=
 =?iso-8859-1?Q?Yxu26YBGl5u1JdCzApjDZCxZxa1FFppi14MIxj9mfc6TUpVb3A4uwoLQzw?=
 =?iso-8859-1?Q?WP1/N36vmWDiSrsPEpjF8YEQ2k12ZPHl7H/FHgVbrJsrAvOy6WYHicVQkd?=
 =?iso-8859-1?Q?BpN6HGFW32JgkpYvm8tw6qQ3Kc00aHaOGWkBahcEpiuP3zHd8t8sWEGuyc?=
 =?iso-8859-1?Q?FgJijXz4pP9Yi5PY6Xc9dr1ELQd9gJernfhchMU0lQr8pkbfCktD+AWxGp?=
 =?iso-8859-1?Q?fbkHShjpw2dhNe+xuD59nUZ2laokWXpfYyDQT9/hpGCs4b0YLC5smXqzB7?=
 =?iso-8859-1?Q?bG4mF4Sg7XTiFTavp+STcHiDDyL5aWhf55lrAdyEAerQihQ8qNZZg4s8m2?=
 =?iso-8859-1?Q?7yj5LQIeHUKttU/frZ59C04YerkRVfLZSdgvLE0AniZPTfp+Tuvb5j/Yko?=
 =?iso-8859-1?Q?+Q9tZAzrv+Dqs=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <F3F3C7E2CCE3BB44BC405472FE8BE796@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: quoted-printable
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: 5e51b349-0e8c-419f-4285-08dcea8a203c
X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2024 06:50:14.6936
 (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: WQ2x5NC4Om4+S4ACwOwzuliIPmFx56XKU4fvD7CrfDIaVsQER8Shp78QMVRXjiADWwWHBIRVt529cu8yLdK0Kw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR12MB9443

On 2024/10/12 13:48, J=FCrgen Gro=DF wrote:
> On 12.10.24 04:36, Chen, Jiqian wrote:
>> On 2024/10/12 10:22, Chen, Jiqian wrote:
>>> On 2024/10/11 20:06, Juergen Gross wrote:
>>>> On 11.10.24 05:42, Jiqian Chen wrote:
>>>>> Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from de=
v")
>>>>> adds a weak reverse dependency to the config XEN_PRIVCMD definition, =
that
>>>>> dependency causes xen-privcmd can't be loaded on domU, because depend=
ent
>>>>> xen-pciback isn't always be loaded successfully on domU.
>>>>>
>>>>> To solve above problem, remove that dependency, and do not call
>>>>> pcistub_get_gsi_from_sbdf() directly, instead add a hook in
>>>>> drivers/xen/apci.c, xen-pciback register the real call function, then=
 in
>>>>> privcmd_ioctl_pcidev_get_gsi call that hook.
>>>>>
>>>>> Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from de=
v")
>>>>> Reported-by: Marek Marczykowski-G=F3recki <marmarek@invisiblethingsla=
b.com>
>>>>> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
>>>>
>>>> Unfortunately I'm seeing a build breakage for the 32-bit x86 build.
>> Could you please attach the link or steps?
>> Then I can reproduce it, and validate it locally with new changes.
>=20
> I'm using the attached kernel config.
Thanks, I can reproduce the 32-bit build error locally.
And this "Add stubs for xen_acpi_register_get_gsi_func and xen_acpi_get_gsi=
_from_sbdf when "!CONFIG_XEN_DOM0" in acpi.h, like the other functions in t=
hat file do." can fix it.
Is it okay?

>=20
>=20
> Juergen
>=20

--=20
Best regards,
Jiqian Chen.


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 08:28:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 08:28:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817531.1231501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szXU1-0003lD-BA; Sat, 12 Oct 2024 08:28:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817531.1231501; Sat, 12 Oct 2024 08:28: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 1szXU1-0003l6-8E; Sat, 12 Oct 2024 08:28:17 +0000
Received: by outflank-mailman (input) for mailman id 817531;
 Sat, 12 Oct 2024 08:28: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=rV4c=RI=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1szXU0-0003kx-53
 for xen-devel@lists.xenproject.org; Sat, 12 Oct 2024 08:28:16 +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 ec2eeba3-8873-11ef-99a2-01e77a169b0f;
 Sat, 12 Oct 2024 10:28:14 +0200 (CEST)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-37d4ba20075so1633841f8f.0
 for <xen-devel@lists.xenproject.org>; Sat, 12 Oct 2024 01:28:14 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b7f2c1esm5729802f8f.109.2024.10.12.01.28.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 12 Oct 2024 01:28:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec2eeba3-8873-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728721693; x=1729326493; darn=lists.xenproject.org;
        h=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=4J8ofNBT+jlUTF2l15uYi7Npqa/12p42Lw5bSB4TPvg=;
        b=DuT9ao94ZUdEjQAloOSVdk7Bmaz5KZP1aCTb7G43GrmqhkEgUQMdYEEdfxvtKi4U96
         DSCwRp7gTR/mnv+IOt5s2rqJ4W9ccbbLiAL7ajCnh3yruq0Pmv2NX0AL6MA4KLNtCdQZ
         QdC+7DH+LCia4vT4aqKtIc9oIxax/8dzWAu2wJtFQL+GqqRI6MzaamWmTSk81+47jCUb
         wXFl8wxJrkQbw4/QgYiVw47mtLaDZYZ8dn7ao3xocxQgOZ2MSMiUbdb9T/Xp/qAGVd3/
         RDnKM1FOSy6GOhgRPtiSTNMEWKFU03y5MEvh6farpXgK2tTXZ0I5FMEenpVZJ1MZFmsT
         sqsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728721693; x=1729326493;
        h=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=4J8ofNBT+jlUTF2l15uYi7Npqa/12p42Lw5bSB4TPvg=;
        b=ndzIWpxaANfJELsgGGWcjQkn5qe3ED2qC64TyJ7ae5/73uSOaKN2sn5EvOxHpKLt/v
         eQYLSpGO5bt0xwfW6derAFHbALfjwqF1XxA70EEHk6RQVixyc6PW/eXVoypXhqLhGTvQ
         aB5rWtZw+JuM/KzovqYYmZ2wmhkepqvEKi6QQ1aYbNuMGQxjwEPW/XFyqduy6n/h8KtB
         oNZ7u2B5+H3+DTde78I7UKBVvs8ARr//rJ+bv0ICCB8JnIc++1V0WbkM6symiAttD9Js
         EJVTPnZ5AYbOZAuX/jxWQ+5onOmW60jGinSUv8xfbZyb2V44X3AC4S0rbxcowp2lHP0y
         gQRQ==
X-Forwarded-Encrypted: i=1; AJvYcCXtgBN8CELOEQyxEx+usZe3CXRduwpPHXuS+CfvTLPjHZdlGFt4xbA4K3CeIX57lXAfHMRgoauLol8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywf8V9Te3CX/VwFYFaiV1IdRmwASbnk+IhfSZ8p4ENDyR/7wnS5
	WOPZlIIkS3RTRf457KdXrdh/lr6B6xPia30pSKuDTA2mofoCWnPkoY0XF1z2g3OGsGwhkj1AU5D
	y
X-Google-Smtp-Source: AGHT+IH4wmwASKqEo/IHfuhAp3IcVLIY4vvlxJmhAuBe1EmgXjZItVS6Ltly6r0gI3XA0sLSpmAYqQ==
X-Received: by 2002:a5d:5351:0:b0:37d:4870:dedf with SMTP id ffacd0b85a97d-37d551d3fc5mr3784657f8f.19.1728721692943;
        Sat, 12 Oct 2024 01:28:12 -0700 (PDT)
Message-ID: <894abb0c-5ff4-4f86-9ecd-2e44907a39e9@suse.com>
Date: Sat, 12 Oct 2024 10:28:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <075ce655-e871-4a3d-a550-7363bc4a165f@suse.com>
 <BL1PR12MB5849B929E9D01076059C739DE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <BL1PR12MB5849B929E9D01076059C739DE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------CL0FgEzEZsRg8nAKKN4UUTJ0"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------CL0FgEzEZsRg8nAKKN4UUTJ0
Content-Type: multipart/mixed; boundary="------------lL0TMuz20RbslIt9gxK27WO1";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <894abb0c-5ff4-4f86-9ecd-2e44907a39e9@suse.com>
Subject: Re: [PATCH v3] xen: Remove dependency between pciback and privcmd
References: <20241011034227.1278144-1-Jiqian.Chen@amd.com>
 <e6938fd7-2cb8-412f-b3e3-1943eeb271d8@suse.com>
 <BL1PR12MB58499172314E76D9A9278746E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <BL1PR12MB5849C20650902FE3935BEC2AE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <075ce655-e871-4a3d-a550-7363bc4a165f@suse.com>
 <BL1PR12MB5849B929E9D01076059C739DE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
In-Reply-To: <BL1PR12MB5849B929E9D01076059C739DE77A2@BL1PR12MB5849.namprd12.prod.outlook.com>

--------------lL0TMuz20RbslIt9gxK27WO1
Content-Type: multipart/mixed; boundary="------------mxVcTNCWp075btDOFJhwH1J0"

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

T24gMTIuMTAuMjQgMDg6NTAsIENoZW4sIEppcWlhbiB3cm90ZToNCj4gT24gMjAyNC8xMC8x
MiAxMzo0OCwgSsO8cmdlbiBHcm/DnyB3cm90ZToNCj4+IE9uIDEyLjEwLjI0IDA0OjM2LCBD
aGVuLCBKaXFpYW4gd3JvdGU6DQo+Pj4gT24gMjAyNC8xMC8xMiAxMDoyMiwgQ2hlbiwgSmlx
aWFuIHdyb3RlOg0KPj4+PiBPbiAyMDI0LzEwLzExIDIwOjA2LCBKdWVyZ2VuIEdyb3NzIHdy
b3RlOg0KPj4+Pj4gT24gMTEuMTAuMjQgMDU6NDIsIEppcWlhbiBDaGVuIHdyb3RlOg0KPj4+
Pj4+IENvbW1pdCAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5ldyBzeXNjYWxs
IHRvIGdldCBnc2kgZnJvbSBkZXYiKQ0KPj4+Pj4+IGFkZHMgYSB3ZWFrIHJldmVyc2UgZGVw
ZW5kZW5jeSB0byB0aGUgY29uZmlnIFhFTl9QUklWQ01EIGRlZmluaXRpb24sIHRoYXQNCj4+
Pj4+PiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4tcHJpdmNtZCBjYW4ndCBiZSBsb2FkZWQgb24g
ZG9tVSwgYmVjYXVzZSBkZXBlbmRlbnQNCj4+Pj4+PiB4ZW4tcGNpYmFjayBpc24ndCBhbHdh
eXMgYmUgbG9hZGVkIHN1Y2Nlc3NmdWxseSBvbiBkb21VLg0KPj4+Pj4+DQo+Pj4+Pj4gVG8g
c29sdmUgYWJvdmUgcHJvYmxlbSwgcmVtb3ZlIHRoYXQgZGVwZW5kZW5jeSwgYW5kIGRvIG5v
dCBjYWxsDQo+Pj4+Pj4gcGNpc3R1Yl9nZXRfZ3NpX2Zyb21fc2JkZigpIGRpcmVjdGx5LCBp
bnN0ZWFkIGFkZCBhIGhvb2sgaW4NCj4+Pj4+PiBkcml2ZXJzL3hlbi9hcGNpLmMsIHhlbi1w
Y2liYWNrIHJlZ2lzdGVyIHRoZSByZWFsIGNhbGwgZnVuY3Rpb24sIHRoZW4gaW4NCj4+Pj4+
PiBwcml2Y21kX2lvY3RsX3BjaWRldl9nZXRfZ3NpIGNhbGwgdGhhdCBob29rLg0KPj4+Pj4+
DQo+Pj4+Pj4gRml4ZXM6IDJmYWU2YmI3YmUzMiAoInhlbi9wcml2Y21kOiBBZGQgbmV3IHN5
c2NhbGwgdG8gZ2V0IGdzaSBmcm9tIGRldiIpDQo+Pj4+Pj4gUmVwb3J0ZWQtYnk6IE1hcmVr
IE1hcmN6eWtvd3NraS1Hw7NyZWNraSA8bWFybWFyZWtAaW52aXNpYmxldGhpbmdzbGFiLmNv
bT4NCj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1k
LmNvbT4NCj4+Pj4+DQo+Pj4+PiBVbmZvcnR1bmF0ZWx5IEknbSBzZWVpbmcgYSBidWlsZCBi
cmVha2FnZSBmb3IgdGhlIDMyLWJpdCB4ODYgYnVpbGQuDQo+Pj4gQ291bGQgeW91IHBsZWFz
ZSBhdHRhY2ggdGhlIGxpbmsgb3Igc3RlcHM/DQo+Pj4gVGhlbiBJIGNhbiByZXByb2R1Y2Ug
aXQsIGFuZCB2YWxpZGF0ZSBpdCBsb2NhbGx5IHdpdGggbmV3IGNoYW5nZXMuDQo+Pg0KPj4g
SSdtIHVzaW5nIHRoZSBhdHRhY2hlZCBrZXJuZWwgY29uZmlnLg0KPiBUaGFua3MsIEkgY2Fu
IHJlcHJvZHVjZSB0aGUgMzItYml0IGJ1aWxkIGVycm9yIGxvY2FsbHkuDQo+IEFuZCB0aGlz
ICJBZGQgc3R1YnMgZm9yIHhlbl9hY3BpX3JlZ2lzdGVyX2dldF9nc2lfZnVuYyBhbmQgeGVu
X2FjcGlfZ2V0X2dzaV9mcm9tX3NiZGYgd2hlbiAiIUNPTkZJR19YRU5fRE9NMCIgaW4gYWNw
aS5oLCBsaWtlIHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhhdCBmaWxlIGRvLiIgY2FuIGZp
eCBpdC4NCj4gSXMgaXQgb2theT8NCg0KRmluZSB3aXRoIG1lLg0KDQoNCkp1ZXJnZW4NCg0K

--------------mxVcTNCWp075btDOFJhwH1J0
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------mxVcTNCWp075btDOFJhwH1J0--

--------------lL0TMuz20RbslIt9gxK27WO1--

--------------CL0FgEzEZsRg8nAKKN4UUTJ0
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/Ey8FAmcKMxsFAwAAAAAACgkQsN6d1ii/Ey8Y
RQf/bCfxdHN7w9BDH+qs+M7S5nnNGbLp/sfuzJC3Z17ZpylvzkIhylp6olmd5OQyXc+jHAgb3VGp
vZfVSxfnH2UxS5MPSVY2Swpq6U8lEltccSDmS8FjPpCduTdMjq3Yt35vNo4qsgipSrOUg4rA5vHK
cMU4RIaMpg23+x1L6FXJ23+cgD/a+KfzB4YlxQlrf8sD2tO4PvN/lKzPGtOsDQ0spGZZGtW+7YcE
Wk749oGZaxj/DomWAIZhx7Z93MpKNFk0BJftGBANx/3JRdssb+p3oGM13G1/NBvOfY5MmUibx3Ed
F1aSnvZcH2iTeI1So1q9ZXqlDpPWJmGRS+3syKRQSw==
=mm+3
-----END PGP SIGNATURE-----

--------------CL0FgEzEZsRg8nAKKN4UUTJ0--


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 08:46:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 08:46:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817546.1231512 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szXlB-0006fX-L4; Sat, 12 Oct 2024 08:46:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817546.1231512; Sat, 12 Oct 2024 08:46: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 1szXlB-0006fQ-HZ; Sat, 12 Oct 2024 08:46:01 +0000
Received: by outflank-mailman (input) for mailman id 817546;
 Sat, 12 Oct 2024 08:46: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=A068=RI=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1szXl9-0006fK-Vj
 for xen-devel@lists.xenproject.org; Sat, 12 Oct 2024 08:45:59 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2062a.outbound.protection.outlook.com
 [2a01:111:f403:2413::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 65987451-8876-11ef-99a2-01e77a169b0f;
 Sat, 12 Oct 2024 10:45:57 +0200 (CEST)
Received: from BL1P221CA0025.NAMP221.PROD.OUTLOOK.COM (2603:10b6:208:2c5::13)
 by LV8PR12MB9207.namprd12.prod.outlook.com (2603:10b6:408:187::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Sat, 12 Oct
 2024 08:45:52 +0000
Received: from MN1PEPF0000F0E0.namprd04.prod.outlook.com
 (2603:10b6:208:2c5:cafe::87) by BL1P221CA0025.outlook.office365.com
 (2603:10b6:208:2c5::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20 via Frontend
 Transport; Sat, 12 Oct 2024 08:45:52 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MN1PEPF0000F0E0.mail.protection.outlook.com (10.167.242.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8048.13 via Frontend Transport; Sat, 12 Oct 2024 08:45: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.39; Sat, 12 Oct
 2024 03:45:49 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 65987451-8876-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=dLG0CGloQvmW6SPVavu1bsw0UWIMORg6qM7rhSVMZTsBetSp4cMS93KK2Lv2UOh4m7lMYR7Zh8mGirejVDWAzuc49aiIk4thkIy37Dlmh92BDyOKocqP9FvLiTWs2vpKm6DESUhNIusPj2I90wwdHkeTnk2+WZ8iONvORYES2VN44s3CY9gRifnrvv9rO1clBKRrWLAIolKXxgC3mybRQcGApkwFT5/D3/kI92z++K2tdWtyZtAM4HfXGYycrpJ5qFis7slrVIEpB1ZX2+e7/5QiqkMJ+SfkIdM3bCZC+TNDxAeypfch4VvZf6caKz6C7BvLHmRB5hWxlk868/2ulQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=UT/oYS1Wwv3bjSDXYguTDvUQXv68sE1Cv4Nd/unyHw0=;
 b=oMWDbvFvyqZs0VCHakKeIT2BZ7nCn8XTgTFpUiyv+mmzqWZU1lIH2iUpp7Zfrs9GpJpmjYsjhW3DEqdvqowRqReusHQ91CcZYiP2ZPZdI3zu2+7bBHD6ryuZEtJsG8x9UOnnMpv3VKVmFFDSfQl/N8ohSanHXXu8yIca5tFxIW6tvV+IDdfCfHwDhOTwn+Ebkr/IYT+XF7laXd8c1Ud0AJqVyG7iq8HFc4Q6lgU1KSYZ7iXimOvakDTV3jNfpZd6zJswYyyCt6N/CaLjf2NNsGyJEsxIAArFkEItpaluqFKKYjpADaD8YOOlj/bSl+Wp7WCKTcUCZo3tT4k6c4g0lQ==
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=UT/oYS1Wwv3bjSDXYguTDvUQXv68sE1Cv4Nd/unyHw0=;
 b=vudtW7dhWj41ppa7/TDo0A+23jGtRedq2hI3IDMkshBcBkORNFT2Pb3UIx9LprJou18k5KCyuxfdTuvJ78XsM4lcjHYS3rYxjv4QtjUES35mVmSuDOmGtLHeIMZZ6T45dV+S1i1e2njLGDWM/jVyfitoTh81RQIaJiXp+DPYL6M=
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>
CC: <xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Jiqian Chen <Jiqian.Chen@amd.com>
Subject: [PATCH v4] xen: Remove dependency between pciback and privcmd
Date: Sat, 12 Oct 2024 16:45:37 +0800
Message-ID: <20241012084537.1543059-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: MN1PEPF0000F0E0:EE_|LV8PR12MB9207:EE_
X-MS-Office365-Filtering-Correlation-Id: a0ac18ba-d928-411b-cbc6-08dcea9a474d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cS9ORHR2ampUOXJ4UEFVZGo3M3hGRWtTMzdoRWlEUzZXaFdMa0NGQ2ZONHdq?=
 =?utf-8?B?Ylh3d09yMWdRTHBZNDhhM0pwbEFZVk1kWlk2V0JiMXZqNDNQakdxUkNlcEdK?=
 =?utf-8?B?K3BESXZGZXZZQUExZ2hWNzZZai9LcnlsWGd0UW5jYWxYaTdaRExpS2x4WTQ5?=
 =?utf-8?B?V1I0NTM3U2hFUGtOQVNJaUF3UkF3V2tMZE9GdVpBOUZGRDR5K1FvSUt4NXN4?=
 =?utf-8?B?YWpMOUNnS3c1YldNTnZtbGl5V214Qy9uRE9qUVcrVzZJRXFRUEN1bm9kVDRy?=
 =?utf-8?B?ZWlHV2xJSVp4a0w1ZytPTkF3b0lmUU5sYVVnbk9tOURYMGNIUkUzRXZBeWlm?=
 =?utf-8?B?SzhENmRzYzFrTVYvNHpFT0ZJRU1uTGZxN1BJOUthMmpESzhrYmtTOW9lSFdR?=
 =?utf-8?B?TEJicWVMcEZmMW9CLzVETittRDNqazVDUlQ4eXpyUzIzUkNyUjhQUTNCWTgw?=
 =?utf-8?B?U01tUUxKak1XNW54V0dKRHpHeXZjSUx1cEp6REZxY0MybmVOMDJxaDdnbHk2?=
 =?utf-8?B?bDRsR1NzOTE5Tyt3akFuMjI4K3NJSzgrZzd5NGVpbXFsUjJYZ3MwN2NuZnd3?=
 =?utf-8?B?RURPSGNVMG1tUHQ2WUxZRzROeSs3RnpmT0N2UE1wS0h5TFZReTBkZVVyWlRt?=
 =?utf-8?B?UHhRQ1lsTHk3RmNUWGxRZlhUQmdjRVZSYk4yczlicmZsTGFNNUNGRFcvYm80?=
 =?utf-8?B?a1hxQXhnT015RE5UdWxwNDZHVS9ZellQcnJsRnNiRjkvSG9Wcmk0Z0RtT2lq?=
 =?utf-8?B?ek5tQmp6Ujhoek51UmhRRXIwMDdiTFE4TWRqTUhkdWs1Tm0vWTZ1bU9YazM5?=
 =?utf-8?B?UUpSV0lNQlZFMEFKb0MyYWxpaXE0amZhcjFQRkk4VW5lTmRzeEJBWjFHVTZ4?=
 =?utf-8?B?VEl2aGI0UmlINjJrSk5Ra0taZWExeUV1SVZuYXBEZXdlQVVGeU5sK0k5RE01?=
 =?utf-8?B?Rms3NmtENkNrUTJFaEY3VFFsQjNVWXh0L01PcXpsODRuOVYyMnI5QXU4Z1E4?=
 =?utf-8?B?ZHpXRDUxdHhVRmlGNzN2bmU3T2QzMmZNMWxBWEpSdVFqaEJYS3hiRUxGcXAy?=
 =?utf-8?B?THRqcXVFbWJ1QkNqYS9mOGdFVERwQnhuaFl6NmplaGFwYVBnMnJPZG5WRUdn?=
 =?utf-8?B?djE5RlhjczFuSDczWXNFMjRTTjBNNDhLSE9FMHEyYUc0bFlsbDAzQlZoWFho?=
 =?utf-8?B?NUVDeDNMOC9JUVlQSmpqQjRMQ0JyT2NHM2F1NmVNb1QycnBtSEhnQ2c3OGxa?=
 =?utf-8?B?bkZBbGdMeFJOcXY0L1hpcVRyOExyeVlEdVlZMkFEZ01Zd0NKQ0xINFVsRGV1?=
 =?utf-8?B?THRMcGpDK21YNnRqZzFZeHU5eWdlMHV2cU1Ic2FFcytZYWdpZTUyaGc0MzRT?=
 =?utf-8?B?Mm8ra2JhTUF1ZmRzQ1FDV1RzVTRjWWMrRUljNnFaeUNKeUUybUplTVp6SklI?=
 =?utf-8?B?elZvK2llUDFsY0FXMDBNTE9YYjErZWNNMjVDRU9jMThIRk1xZmRiL0NjZ2k4?=
 =?utf-8?B?STlBRkxGeWdPeTBPUmR1VHpKTjByZ2J6ZEhOWnhGeE8vV1dNVThHNWh0Q0FS?=
 =?utf-8?B?Q3F0YkNHSUUvZEZSTjNWRUEybnhRb2prMmNHUUovZ3BBMWpiUEtUL0s3Sk9M?=
 =?utf-8?B?TUovN2FHWm84b3RSYzhZbWlpOXNqZC8xNGkzUXlIVkxXSURCYWZ2ajZvbHpn?=
 =?utf-8?B?czFOb282SEwxY2g3MlZFRWFpaUlzYko5dllDKzVMRjJIeUhld3FSeDlpcXJR?=
 =?utf-8?B?dXJWV2dVRGk0ZmF2cm0wT1ErMytoQkw2T24yeFVOcDNuVXVWWEJxaWh4dmRj?=
 =?utf-8?B?dzdvSFZGOHhEc2F6VGxFZERYbldIMUkzY3dVTWY4RExwejl1aHdEdENzNHZh?=
 =?utf-8?Q?j/2j/Fit1lGEa?=
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:(13230040)(36860700013)(82310400026)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2024 08:45:52.1286
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a0ac18ba-d928-411b-cbc6-08dcea9a474d
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:
	MN1PEPF0000F0E0.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9207

Commit 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
adds a weak reverse dependency to the config XEN_PRIVCMD definition, that
dependency causes xen-privcmd can't be loaded on domU, because dependent
xen-pciback isn't always be loaded successfully on domU.

To solve above problem, remove that dependency, and do not call
pcistub_get_gsi_from_sbdf() directly, instead add a hook in
drivers/xen/apci.c, xen-pciback register the real call function, then in
privcmd_ioctl_pcidev_get_gsi call that hook.

Fixes: 2fae6bb7be32 ("xen/privcmd: Add new syscall to get gsi from dev")
Reported-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
v3->v4 changes:
Added stubs for xen_acpi_register_get_gsi_func and xen_acpi_get_gsi_from_sbdf when "!CONFIG_XEN_DOM0" in acpi.h to fix 32-bit x86 build error.

v2->v3 changes:
Added rwlock get_gsi_from_sbdf_lock to avoid races.
Called xen_acpi_register_get_gsi_func to register function in xen_pcibk_init and set NULL to hook in xen_pcibk_cleanup when unloading.

v1->v2 changes:
Added hook xen_acpi_get_gsi_from_sbdf.
Changed pcistub_get_gsi_from_sbdf to static and pciback register it as the real hook function.
---
 drivers/xen/Kconfig                |  1 -
 drivers/xen/acpi.c                 | 24 ++++++++++++++++++++++++
 drivers/xen/privcmd.c              |  6 ++----
 drivers/xen/xen-pciback/pci_stub.c | 11 +++++++++--
 include/xen/acpi.h                 | 14 +++++++++-----
 5 files changed, 44 insertions(+), 12 deletions(-)

diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
index 72ddee4c1544..f7d6f47971fd 100644
--- a/drivers/xen/Kconfig
+++ b/drivers/xen/Kconfig
@@ -261,7 +261,6 @@ config XEN_SCSI_BACKEND
 config XEN_PRIVCMD
 	tristate "Xen hypercall passthrough driver"
 	depends on XEN
-	imply XEN_PCIDEV_BACKEND
 	default m
 	help
 	  The hypercall passthrough driver allows privileged user programs to
diff --git a/drivers/xen/acpi.c b/drivers/xen/acpi.c
index 9e2096524fbc..d2ee605c5ca1 100644
--- a/drivers/xen/acpi.c
+++ b/drivers/xen/acpi.c
@@ -125,3 +125,27 @@ int xen_acpi_get_gsi_info(struct pci_dev *dev,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_info);
+
+static get_gsi_from_sbdf_t get_gsi_from_sbdf;
+static DEFINE_RWLOCK(get_gsi_from_sbdf_lock);
+
+void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func)
+{
+	write_lock(&get_gsi_from_sbdf_lock);
+	get_gsi_from_sbdf = func;
+	write_unlock(&get_gsi_from_sbdf_lock);
+}
+EXPORT_SYMBOL_GPL(xen_acpi_register_get_gsi_func);
+
+int xen_acpi_get_gsi_from_sbdf(u32 sbdf)
+{
+	int ret = -EOPNOTSUPP;
+
+	read_lock(&get_gsi_from_sbdf_lock);
+	if (get_gsi_from_sbdf)
+		ret = get_gsi_from_sbdf(sbdf);
+	read_unlock(&get_gsi_from_sbdf_lock);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(xen_acpi_get_gsi_from_sbdf);
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 3273cb8c2a66..4f75bc876454 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -850,15 +850,13 @@ static long privcmd_ioctl_mmap_resource(struct file *file,
 static long privcmd_ioctl_pcidev_get_gsi(struct file *file, void __user *udata)
 {
 #if defined(CONFIG_XEN_ACPI)
-	int rc = -EINVAL;
+	int rc;
 	struct privcmd_pcidev_get_gsi kdata;
 
 	if (copy_from_user(&kdata, udata, sizeof(kdata)))
 		return -EFAULT;
 
-	if (IS_REACHABLE(CONFIG_XEN_PCIDEV_BACKEND))
-		rc = pcistub_get_gsi_from_sbdf(kdata.sbdf);
-
+	rc = xen_acpi_get_gsi_from_sbdf(kdata.sbdf);
 	if (rc < 0)
 		return rc;
 
diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
index 2f3da5ac62cd..b616b7768c3b 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -227,7 +227,7 @@ static struct pci_dev *pcistub_device_get_pci_dev(struct xen_pcibk_device *pdev,
 }
 
 #ifdef CONFIG_XEN_ACPI
-int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
+static int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
 {
 	struct pcistub_device *psdev;
 	int domain = (sbdf >> 16) & 0xffff;
@@ -242,7 +242,6 @@ int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
 
 	return psdev->gsi;
 }
-EXPORT_SYMBOL_GPL(pcistub_get_gsi_from_sbdf);
 #endif
 
 struct pci_dev *pcistub_get_pci_dev_by_slot(struct xen_pcibk_device *pdev,
@@ -1757,11 +1756,19 @@ static int __init xen_pcibk_init(void)
 		bus_register_notifier(&pci_bus_type, &pci_stub_nb);
 #endif
 
+#ifdef CONFIG_XEN_ACPI
+	xen_acpi_register_get_gsi_func(pcistub_get_gsi_from_sbdf);
+#endif
+
 	return err;
 }
 
 static void __exit xen_pcibk_cleanup(void)
 {
+#ifdef CONFIG_XEN_ACPI
+	xen_acpi_register_get_gsi_func(NULL);
+#endif
+
 #ifdef CONFIG_PCI_IOV
 	bus_unregister_notifier(&pci_bus_type, &pci_stub_nb);
 #endif
diff --git a/include/xen/acpi.h b/include/xen/acpi.h
index daa96a22d257..c66a8461612e 100644
--- a/include/xen/acpi.h
+++ b/include/xen/acpi.h
@@ -35,6 +35,8 @@
 
 #include <linux/types.h>
 
+typedef int (*get_gsi_from_sbdf_t)(u32 sbdf);
+
 #ifdef CONFIG_XEN_DOM0
 #include <asm/xen/hypervisor.h>
 #include <xen/xen.h>
@@ -72,6 +74,8 @@ int xen_acpi_get_gsi_info(struct pci_dev *dev,
 						  int *gsi_out,
 						  int *trigger_out,
 						  int *polarity_out);
+void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func);
+int xen_acpi_get_gsi_from_sbdf(u32 sbdf);
 #else
 static inline void xen_acpi_sleep_register(void)
 {
@@ -89,12 +93,12 @@ static inline int xen_acpi_get_gsi_info(struct pci_dev *dev,
 {
 	return -1;
 }
-#endif
 
-#ifdef CONFIG_XEN_PCI_STUB
-int pcistub_get_gsi_from_sbdf(unsigned int sbdf);
-#else
-static inline int pcistub_get_gsi_from_sbdf(unsigned int sbdf)
+static inline void xen_acpi_register_get_gsi_func(get_gsi_from_sbdf_t func)
+{
+}
+
+static inline int xen_acpi_get_gsi_from_sbdf(u32 sbdf)
 {
 	return -1;
 }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Sat Oct 12 11:05:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 11:05:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817651.1231521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szZvU-0001mZ-DF; Sat, 12 Oct 2024 11:04:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817651.1231521; Sat, 12 Oct 2024 11: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 1szZvU-0001mS-A9; Sat, 12 Oct 2024 11:04:48 +0000
Received: by outflank-mailman (input) for mailman id 817651;
 Sat, 12 Oct 2024 11:04: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 1szZvS-0001mI-Sj; Sat, 12 Oct 2024 11:04: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 1szZvS-0007bn-Pe; Sat, 12 Oct 2024 11:04: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 1szZvS-00014J-5O; Sat, 12 Oct 2024 11:04:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szZvS-0006ZD-4r; Sat, 12 Oct 2024 11:04: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=Kq09A4dA6IX++VBpxo4RKQpuuAk+aXOhhdHbC1EPaSc=; b=CAOLmmTsYwuhsjSDIO09e+s+ou
	NO0kLP7Rv5b3K//D8u8VHJjvw5Q9YESCBhS564DQK08ezlmtvloRV7nLoBGxdFQRLYmDslRg2EVI4
	AaIntQGIqsT0b22O1i8WyX5V32uRAeIBgRiaB/TXDNUc8QqP5PnzW3SQyKqRNege8ZBc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188065-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188065: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=fcd9570c8d8164b42f907137a3a6e78977cc860a
X-Osstest-Versions-That:
    ovmf=d2a41d1a7a555e54336e03731c801eb93fba801d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 12 Oct 2024 11:04:46 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 fcd9570c8d8164b42f907137a3a6e78977cc860a
baseline version:
 ovmf                 d2a41d1a7a555e54336e03731c801eb93fba801d

Last test of basis   188049  2024-10-11 01:41:45 Z    1 days
Testing same since   188065  2024-10-12 09:13:32 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jiaxin Wu <jiaxin.wu@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    


------------------------------------------------------------
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
   d2a41d1a7a..fcd9570c8d  fcd9570c8d8164b42f907137a3a6e78977cc860a -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 11:18:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 11:18:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817665.1231532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1sza8i-00041Y-Iy; Sat, 12 Oct 2024 11:18:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817665.1231532; Sat, 12 Oct 2024 11: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 1sza8i-00041R-FL; Sat, 12 Oct 2024 11:18:28 +0000
Received: by outflank-mailman (input) for mailman id 817665;
 Sat, 12 Oct 2024 11:18: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 1sza8h-00041H-7E; Sat, 12 Oct 2024 11:18: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 1sza8h-0007pw-4p; Sat, 12 Oct 2024 11:18: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 1sza8g-0001T8-Kc; Sat, 12 Oct 2024 11:18:26 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1sza8g-0002Ao-K0; Sat, 12 Oct 2024 11:18: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=i48Z6OVioBECd6Ecif9FHVLv+aYTTSa1YBTun46rhVU=; b=EfadwDcBvbReda2FRWy5GWgY3Y
	DKm7iroc9T5KCPthtKrG5IvM0gAMmrMTdev59NCIBuj8VyBGLbiFqzR1V1BfbsG1raBsn6VvgZXk1
	hp7Sgve+III0Dk/D1OFvyQjZu7rKIzDrigBPx3n0K0nO+WKtZdULVD4iIaQQucTQ8mzU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188061-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188061: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-arndale:host-ping-check-xen:fail:heisenbug
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    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:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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: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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2: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-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds: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-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-amd64-libvirt-qcow2: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-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
X-Osstest-Versions-That:
    xen=b2c7d7070dd0b311b64598411f52cdfa2a882ea2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 12 Oct 2024 11:18:26 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale  10 host-ping-check-xen fail pass in 188066-retest
 test-amd64-amd64-libvirt-vhd 22 leak-check/check    fail pass in 188066-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 188066 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 188066 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188052
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188052
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188052
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188052
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188052
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188052
 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-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-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-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-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-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 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-amd64-libvirt-qcow2 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-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa
baseline version:
 xen                  b2c7d7070dd0b311b64598411f52cdfa2a882ea2

Last test of basis   188052  2024-10-11 06:39:01 Z    1 days
Testing same since   188061  2024-10-11 19:39:01 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Juergen Gross <jgross@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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   b2c7d7070d..76a54badf8  76a54badf890f56ff72644593c0fbc72138e13aa -> master


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 12:43:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 12:43:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817695.1231554 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szbT7-00084g-C9; Sat, 12 Oct 2024 12:43:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817695.1231554; Sat, 12 Oct 2024 12:43: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 1szbT7-00084Z-8E; Sat, 12 Oct 2024 12:43:37 +0000
Received: by outflank-mailman (input) for mailman id 817695;
 Sat, 12 Oct 2024 12:43: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 1szbT5-00084P-AR; Sat, 12 Oct 2024 12:43: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 1szbT5-0000u6-7i; Sat, 12 Oct 2024 12:43: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 1szbT4-0004Q6-R9; Sat, 12 Oct 2024 12:43:34 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szbT4-0007H2-Ng; Sat, 12 Oct 2024 12:43: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=LajMCD+8kW+ZB1x8d3P7mLOiWgsOiYDlKq7hq3nnIAk=; b=tqLNBUM8TmSArwkBBLqMDlotnc
	OoQ+1XhmO1dILTv+cmw0g0j+XvzUKEfKhFkWTyNQAONy0Ms/mCYPvRzsKbw8y4/NbTd+5NJTqxw9O
	Y+vnSrts9EaMjJdpWyJfPBh+w07QelhfVEOb6UABV+qhwT3kO8UrAU+lhGSFRUuKnWfo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188062-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188062: 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: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-amd64-amd64-libvirt-qemuu-debianhvm-amd64-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-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-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-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: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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=a1029768f3931b31aa52790f1dde0c7d6a6552eb
X-Osstest-Versions-That:
    linux=1d227fcc72223cbdd34d0ce13541cbaab5e0d72f
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 12 Oct 2024 12:43:34 +0000

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

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 188053
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188053
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188053
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188053
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188053
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188053
 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-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-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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                a1029768f3931b31aa52790f1dde0c7d6a6552eb
baseline version:
 linux                1d227fcc72223cbdd34d0ce13541cbaab5e0d72f

Last test of basis   188053  2024-10-11 06:42:01 Z    1 days
Testing same since   188062  2024-10-11 23:14:52 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Adrian Hunter <adrian.hunter@intel.com>
  Alex Deucher <alexander.deucher@amd.com>
  Christian König <christian.koenig@amd.com>
  Colin Ian King <colin.i.king@gmail.com>
  Damien Le Moal <dlemoal@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Wheeler <daniel.wheeler@amd.com>
  Danilo Krummrich <dakr@kernel.org>
  Dave Airlie <airlied@redhat.com>
  Frederic Weisbecker <frederic@kernel.org>
  Gal Shalom <GalShalom@Nvidia.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Guenter Roeck <linux@roeck-us.net>
  Hamza Mahfooz <hamza.mahfooz@amd.com>
  Hans de Goede <hdegoede@redhat.com>
  Jani Nikula <jani.nikula@intel.com>
  Janne Grunau <j@jannau.net>
  Jens Axboe <axboe@kernel.dk>
  Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
  Josip Pavic <Josip.Pavic@amd.com>
  Juergen Gross <jgross@suse.com>
  Lang Yu <lang.yu@amd.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Lucas De Marchi <lucas.demarchi@intel.com>
  Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
  Matt Roper <matthew.d.roper@intel.com>
  Matthew Auld <matthew.auld@intel.com>
  Matthew Brost <matthew.brost@intel.com>
  Maíra Canal <mcanal@igalia.com>
  Michal Wilczynski <m.wilczynski@samsung.com>
  Neeraj Upadhyay <neeraj.upadhyay@kernel.org>
  Niklas Cassel <cassel@kernel.org>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Rodrigo Siqueira <rodrigo.siqueira@amd.com>
  Rodrigo Vivi <rodrigo.vivi@intel.com>
  Sumeet Pawnikar <sumeet.r.pawnikar@intel.com>
  Thomas Hellström <thomas.hellstrom@linux.intel.com>
  Thomas Zimmermann <tzimmermann@suse.de>
  Ulf Hansson <ulf.hansson@linaro.org>
  Vinay Belgaumkar <vinay.belgaumkar@intel.com>
  Viresh Kumar <viresh.kumar@linaro.org>
  Wu Hoi Pok <wuhoipok@gmail.com>
  Yonatan Maman <Ymaman@Nvidia.com>
  Zhang Rui <rui.zhang@intel.com>
  Zhang Zekun <zhangzekun11@huawei.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   1d227fcc7222..a1029768f393  a1029768f3931b31aa52790f1dde0c7d6a6552eb -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 15:54:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 15:54:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817823.1231595 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szeRZ-000483-Fh; Sat, 12 Oct 2024 15:54:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817823.1231595; Sat, 12 Oct 2024 15:54: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 1szeRZ-00047w-CQ; Sat, 12 Oct 2024 15:54:13 +0000
Received: by outflank-mailman (input) for mailman id 817823;
 Sat, 12 Oct 2024 15:54:12 +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 1szeRY-00047g-0u; Sat, 12 Oct 2024 15:54:12 +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 1szeRX-0004In-U8; Sat, 12 Oct 2024 15:54: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 1szeRX-0008Dm-E6; Sat, 12 Oct 2024 15:54:11 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szeRX-0002QO-DT; Sat, 12 Oct 2024 15:54: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>
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=R0te6L2PMUZHZg1EYA584KZ/Z/Qx+VRhbeGGf+a25VU=; b=w/9Tk/RHRhg4JuAUCljGhUSiuO
	20/ESn9PbBboWa3RQsETkxG/X4REoWy+gVPzHKW0V1b3hkIc3n3X99+iZvY5YC/AoStPXL5RB1v3d
	mTZUpIalV1JbdRHMsMp9lrtrHjj2Oj7Byl6MRQbyoy7XxtZ6Flh3u5S2RsX0IHDFi3Cg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188063-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188063: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt: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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=50cc7a0d9d2b9df085ec073a6d60820a9642158a
X-Osstest-Versions-That:
    libvirt=215cada34395b6b2caad507393e043594d6c86fc
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 12 Oct 2024 15:54:11 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187961
 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-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-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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              50cc7a0d9d2b9df085ec073a6d60820a9642158a
baseline version:
 libvirt              215cada34395b6b2caad507393e043594d6c86fc

Last test of basis   187961  2024-10-04 04:22:33 Z    8 days
Failing since        188008  2024-10-08 04:20:35 Z    4 days    5 attempts
Testing same since   188063  2024-10-12 04:20:27 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Göran Uddeborg <goeran@uddeborg.se>
  Jim Fehlig <jfehlig@suse.com>
  Jiri Denemark <jdenemar@redhat.com>
  Laine Stump
  Laine Stump <laine@redhat.com>
  Martin Kletzander <mkletzan@redhat.com>
  Nikolai Barybin <nikolai.barybin@virtuozzo.com>
  Nikolai Barybin via Devel <devel@lists.libvirt.org>
  Peter Krempa <pkrempa@redhat.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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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
   215cada343..50cc7a0d9d  50cc7a0d9d2b9df085ec073a6d60820a9642158a -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Oct 12 21:23:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 12 Oct 2024 21:23:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.817994.1231653 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szjZT-0001Pd-JN; Sat, 12 Oct 2024 21:22:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 817994.1231653; Sat, 12 Oct 2024 21: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 1szjZT-0001PW-Gn; Sat, 12 Oct 2024 21:22:43 +0000
Received: by outflank-mailman (input) for mailman id 817994;
 Sat, 12 Oct 2024 21:22: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 1szjZS-0001PM-A3; Sat, 12 Oct 2024 21:22: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 1szjZS-0001v8-5r; Sat, 12 Oct 2024 21:22: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 1szjZR-0000xj-PW; Sat, 12 Oct 2024 21:22:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szjZR-0008Bp-Ot; Sat, 12 Oct 2024 21:22: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=5C+1lArfCPTxBNF5hghMJinjDkLm57p50JJc4AcaZgQ=; b=2Kq+zL0TY8dgqizVtCYDmdDomi
	581mUbrCKTzkw30rZ4kN7P5pGi5eEwKr7oPXmXcp/qi04VjCsCOu1GNOdE4AHij2g79sH+sQBc5gE
	pLsarggC3wNzqIv5AQYK/l2JAivDFcSH/clGXPwybTE2pQew57Tvdl4Q5GsQa8eX7MnE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188064-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188064: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=7e3b6d8063f245d27eecce5aabe624b5785f2a77
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 12 Oct 2024 21:22:41 +0000

flight 188064 qemu-mainline real [real]
flight 188069 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188064/
http://logs.test-lab.xenproject.org/osstest/logs/188069/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-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-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 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-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                7e3b6d8063f245d27eecce5aabe624b5785f2a77
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   26 days
Failing since        187731  2024-09-17 13:11:20 Z   25 days   42 attempts
Testing same since   188064  2024-10-12 04:58:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 9278 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Oct 13 00:14:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 13 Oct 2024 00:14:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818016.1231664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szmF4-0007Yj-B7; Sun, 13 Oct 2024 00:13:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818016.1231664; Sun, 13 Oct 2024 00: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 1szmF4-0007Yc-82; Sun, 13 Oct 2024 00:13:50 +0000
Received: by outflank-mailman (input) for mailman id 818016;
 Sun, 13 Oct 2024 00:13: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 1szmF2-0007YS-7b; Sun, 13 Oct 2024 00:13: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 1szmF2-0005L4-1q; Sun, 13 Oct 2024 00:13: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 1szmF1-0007xu-HS; Sun, 13 Oct 2024 00:13:47 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szmF1-0005QE-Gu; Sun, 13 Oct 2024 00:13: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=OFMvb3BPeAL9pqbr52aJxjR/SS6gOLm7AkaMDnSskZQ=; b=pcVCcvk4J/W2OaS7Z2xVTpG5Yt
	65clN6qkPVm9NZfR7VWlXfA54XRLEJl+sGL6Umc1Ki7tjTpdRf4xCbnSZcKxEzeOUnjnWUDrQOi3f
	o5AIbnUuLUz6Te3ZchErl5OhA/sJXXH09Zw/poSo10X242+NmpAD1cHJB5WrMqFaofsk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188067-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188067: 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-amd64-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-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-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: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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2: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-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds: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-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-amd64-libvirt-qcow2: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-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd: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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
X-Osstest-Versions-That:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 13 Oct 2024 00:13:47 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188061
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188061
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188061
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188061
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188061
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188061
 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-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-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-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-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-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-amd64-libvirt-qcow2 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-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa
baseline version:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa

Last test of basis   188067  2024-10-12 11:21:00 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 13 06:31:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 13 Oct 2024 06:31:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818042.1231674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szs8G-0005GC-K2; Sun, 13 Oct 2024 06:31:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818042.1231674; Sun, 13 Oct 2024 06:31: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 1szs8G-0005G5-HG; Sun, 13 Oct 2024 06:31:12 +0000
Received: by outflank-mailman (input) for mailman id 818042;
 Sun, 13 Oct 2024 06:31:12 +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 1szs8F-0005Fv-W4; Sun, 13 Oct 2024 06:31:12 +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 1szs8F-0003PK-T7; Sun, 13 Oct 2024 06:31: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 1szs8F-0006BC-AZ; Sun, 13 Oct 2024 06:31:11 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szs8F-0003he-9T; Sun, 13 Oct 2024 06:31: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>
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=PWtAKEiNGeXR0T48hgI6OGvuzj9uEhotBtpsNOb98pc=; b=WKXRYugk9bE+Ucc0XEyXnQGsWi
	NM7ekkrhZaunXkMLDuFnKWMHj+b4bNfivbgJJZQgyL6fpm0m8E07H0khW/vowHyXWrv5TW47f1GzY
	zbZxV+zUkFqq80OYnWg95/coVzAFE0hJhQMKlb1z96CJAVvh3iXP6GpGtzmdAKz2LM98=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188068-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188068: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-qemuu-freebsd12-amd64:guest-start.2:fail:regression
    linux-linus:test-amd64-amd64-qemuu-freebsd12-amd64:guest-start/freebsd.repeat:fail:heisenbug
    linux-linus:test-amd64-amd64-xl-pvshim:guest-start/debian.repeat: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: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-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-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-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: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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=09f6b0c8904bfaa1e0601bc102e1b6aa6de8c98f
X-Osstest-Versions-That:
    linux=a1029768f3931b31aa52790f1dde0c7d6a6552eb
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 13 Oct 2024 06:31:11 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-freebsd12-amd64 22 guest-start.2 fail in 188072 REGR. vs. 188062

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-qemuu-freebsd12-amd64 21 guest-start/freebsd.repeat fail pass in 188072-retest
 test-amd64-amd64-xl-pvshim 22 guest-start/debian.repeat fail pass in 188072-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188062
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188062
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188062
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188062
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188062
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188062
 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-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-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          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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                09f6b0c8904bfaa1e0601bc102e1b6aa6de8c98f
baseline version:
 linux                a1029768f3931b31aa52790f1dde0c7d6a6552eb

Last test of basis   188062  2024-10-11 23:14:52 Z    1 days
Testing same since   188068  2024-10-12 12:48:45 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Anna Schumaker <anna.schumaker@oracle.com>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Billy Tsai <billy_tsai@aspeedtech.com>
  Chuck Lever <chuck.lever@oracle.com>
  Dai Ngo <dai.ngo@oracle.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Fabio Estevam <festevam@gmail.com>
  Frank Li <Frank.Li@nxp.com>
  Guenter Roeck <linux@roeck-us.net>
  Helge Deller <deller@gmx.de>
  Jason A. Donenfeld <Jason@zx2c4.com>
  Jinjie Ruan <ruanjinjie@huawei.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mark Rutland <mark.rutland@arm.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  Mike Snitzer <snitzer@kernel.org>
  NeilBrown <neilb@suse.de>
  Rob Herring (Arm) <robh@kernel.org>
  Shuah Khan <skhan@linuxfoundation.org>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Steven Rostedt <rostedt@goodmis.org>
  Uwe Kleine-König <u.kleine-koenig@baylibre.com>
  Yang Li <yang.lee@linux.alibaba.com>
  Yanjun Zhang <zhangyanjun@cestc.cn>
  Yu Liao <liaoyu15@huawei.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                   fail    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 753 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Oct 13 10:45:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 13 Oct 2024 10:45:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818176.1231684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szw65-0003VC-FB; Sun, 13 Oct 2024 10:45:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818176.1231684; Sun, 13 Oct 2024 10:45: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 1szw65-0003V5-Bl; Sun, 13 Oct 2024 10:45:13 +0000
Received: by outflank-mailman (input) for mailman id 818176;
 Sun, 13 Oct 2024 10:45:12 +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 1szw64-0003Uc-2E; Sun, 13 Oct 2024 10:45:12 +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 1szw63-0008BB-Ql; Sun, 13 Oct 2024 10:45: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 1szw63-0000T2-7h; Sun, 13 Oct 2024 10:45:11 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szw63-0008JS-7L; Sun, 13 Oct 2024 10:45: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>
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=0tZ+d2Agqb7Z8foRmrtjdhENb6ZXtRg0YrYcwr1HNMY=; b=yQGmHXLFk21tv1brLFPqEe3WXO
	wijFOEfcc8L+fbHny9jLsPmipUn61cWJFUksJIiqEPdqt+yuIk6Jz9JULuJxI5arlxuR2lKHmHyg4
	2WcRL9qc+S7Zlq9q7hlSoEBr9Xcmn7UiAZP0jet8eIazBTD/MuLLHJZhfOAB+TAlc3XY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188070-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188070: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=7e3b6d8063f245d27eecce5aabe624b5785f2a77
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 13 Oct 2024 10:45:11 +0000

flight 188070 qemu-mainline real [real]
flight 188074 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188070/
http://logs.test-lab.xenproject.org/osstest/logs/188074/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-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-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 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-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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

version targeted for testing:
 qemuu                7e3b6d8063f245d27eecce5aabe624b5785f2a77
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   27 days
Failing since        187731  2024-09-17 13:11:20 Z   25 days   43 attempts
Testing same since   188064  2024-10-12 04:58:25 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 9278 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Oct 13 13:29:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 13 Oct 2024 13:29:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818235.1231694 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1szyfC-0006aK-2n; Sun, 13 Oct 2024 13:29:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818235.1231694; Sun, 13 Oct 2024 13:29: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 1szyfB-0006aD-UH; Sun, 13 Oct 2024 13:29:37 +0000
Received: by outflank-mailman (input) for mailman id 818235;
 Sun, 13 Oct 2024 13:29: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 1szyfA-0006a1-N0; Sun, 13 Oct 2024 13:29: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 1szyfA-0002VK-9r; Sun, 13 Oct 2024 13:29: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 1szyf9-0007mj-Of; Sun, 13 Oct 2024 13:29:35 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1szyf9-0007OR-OA; Sun, 13 Oct 2024 13:29: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=ueOlYr2F/FJvLzmGMBR1J3Vp8ag9URWi5FWFtzFx8Io=; b=biJQWjAb5u1g6EUF4P97X5a+6C
	sfKv+D/fCFbBlfs51ZqOvSz8/jb/C+FEOJJT2P1yduhVuMQF8aQ8xfAppWKSl3SCgGaOxUWmuHRC4
	BXptseDGR3vT5PDjZ24Qsk1V/Cdr+etJtdy57iw6LBl5K2c4aZrmJ5vXvsfyZoIh64Sg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188071-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188071: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check: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-amd64-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-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-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-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-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:migrate-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-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-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-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-amd64-amd64-libvirt-qcow2: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-amd64-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd: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-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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
X-Osstest-Versions-That:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 13 Oct 2024 13:29:35 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-qcow2    20 leak-check/check           fail pass in 188067

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188067
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188067
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188067
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188067
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188067
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188067
 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-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-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-xl-credit2  16 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-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-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-qcow2 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-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa
baseline version:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa

Last test of basis   188071  2024-10-13 01:55:46 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 13 20:17:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 13 Oct 2024 20:17:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818338.1231704 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t051Q-0004lh-Ia; Sun, 13 Oct 2024 20:17:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818338.1231704; Sun, 13 Oct 2024 20: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 1t051Q-0004la-FK; Sun, 13 Oct 2024 20:17:00 +0000
Received: by outflank-mailman (input) for mailman id 818338;
 Sun, 13 Oct 2024 20:16: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 1t051P-0004lQ-Hg; Sun, 13 Oct 2024 20:16: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 1t051P-0001e6-Cw; Sun, 13 Oct 2024 20:16: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 1t051O-00017T-U9; Sun, 13 Oct 2024 20:16:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t051O-0007iJ-Ti; Sun, 13 Oct 2024 20:16: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=A8yfDPwFduLhgODROAaVfQKi6MjkuiLpAALIPF43IRo=; b=dUOrxKIg7BeZweYprLy7zWB+TM
	25HtYFgse3U6Bjx+nndjZQOur9NjscR7HUG2cP/dWN1oRcIbNq47PcFnQhvm7FDH03TPC4xhEuJbc
	laUd02Wa2PoFjm/DIM+xjOqDjHIa8v2j7QmduiRbFyBERgC39WgANCt9OWKieb7D8CCc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188073-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188073: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-xl-credit1:xen-boot:fail:heisenbug
    linux-linus:test-amd64-amd64-libvirt-vhd:guest-start.2: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-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-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-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-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-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: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-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=36c254515dc6592c44db77b84908358979dd6b50
X-Osstest-Versions-That:
    linux=a1029768f3931b31aa52790f1dde0c7d6a6552eb
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 13 Oct 2024 20:16:58 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-credit1   8 xen-boot            fail pass in 188076-retest
 test-amd64-amd64-libvirt-vhd 20 guest-start.2       fail pass in 188076-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 188076 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 188076 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188062
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188062
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188062
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188062
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188062
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188062
 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-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-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          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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                36c254515dc6592c44db77b84908358979dd6b50
baseline version:
 linux                a1029768f3931b31aa52790f1dde0c7d6a6552eb

Last test of basis   188062  2024-10-11 23:14:52 Z    1 days
Failing since        188068  2024-10-12 12:48:45 Z    1 days    2 attempts
Testing same since   188073  2024-10-13 06:36:24 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Anna Schumaker <anna.schumaker@oracle.com>
  Avri Altman <avri.altman@wdc.com>
  Bart Van Assche <bvanassche@acm.org>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Marzinski <bmarzins@redhat.com>
  Billy Tsai <billy_tsai@aspeedtech.com>
  Christophe Leroy <christophe.leroy@csgroup.eu>
  Chuck Lever <chuck.lever@oracle.com>
  Dai Ngo <dai.ngo@oracle.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Palmer <daniel@0x0f.com>
  Fabio Estevam <festevam@gmail.com>
  Finn Thain <fthain@linux-m68k.org>
  Frank Li <Frank.Li@nxp.com>
  Guenter Roeck <linux@roeck-us.net>
  Helge Deller <deller@gmx.de>
  Jason A. Donenfeld <Jason@zx2c4.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jinjie Ruan <ruanjinjie@huawei.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mark Rutland <mark.rutland@arm.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Martin Wilck <martin.wilck@suse.com>
  Martin Wilck <mwilck@suse.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  Michael Ellerman <mpe@ellerman.id.au>
  Mike Snitzer <snitzer@kernel.org>
  NeilBrown <neilb@suse.de>
  Peter Colberg <peter.colberg@intel.com>
  Rob Herring (Arm) <robh@kernel.org>
  Shuah Khan <skhan@linuxfoundation.org>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Steven Rostedt <rostedt@goodmis.org>
  Uwe Kleine-König <u.kleine-koenig@baylibre.com>
  Yang Li <yang.lee@linux.alibaba.com>
  Yanjun Zhang <zhangyanjun@cestc.cn>
  Yu Liao <liaoyu15@huawei.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   a1029768f393..36c254515dc6  36c254515dc6592c44db77b84908358979dd6b50 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Oct 13 21:59:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 13 Oct 2024 21:59:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818353.1231713 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t06ck-0008It-Kl; Sun, 13 Oct 2024 21:59:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818353.1231713; Sun, 13 Oct 2024 21:59: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 1t06ck-0008Im-Hm; Sun, 13 Oct 2024 21:59:38 +0000
Received: by outflank-mailman (input) for mailman id 818353;
 Sun, 13 Oct 2024 21:59: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 1t06cj-0008Ic-Go; Sun, 13 Oct 2024 21:59: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 1t06cj-0003TG-ER; Sun, 13 Oct 2024 21:59: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 1t06ci-0003bD-Ve; Sun, 13 Oct 2024 21:59:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t06ci-0005yn-VE; Sun, 13 Oct 2024 21:59: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=Ts3HCKQ7wYPrZsBp29f3TFjDyk4/x8wd9E+FFvYFbNc=; b=tvWDKBP6oUvRpMIGBt6vurSgA4
	aEw7FdysHxU4n16c5yx/3T/0blUaFB76qm+5D+aC7/mHT59GZx3G03jGTpjN7vd7i/03c/oOqFCCB
	7CZ5wHjiYrN5JdyyqgBWEn5XKWZQMsUsS5wgHxIaMpwalSDY6Sn6cm75gq9l37r3EVsM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188075-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188075: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-xl-raw:guest-localmigrate/x10:fail:heisenbug
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=7e3b6d8063f245d27eecce5aabe624b5785f2a77
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 13 Oct 2024 21:59:36 +0000

flight 188075 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188075/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-raw      19 guest-localmigrate/x10     fail pass in 188070
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188070

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-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-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-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 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-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-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-arndale  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-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                7e3b6d8063f245d27eecce5aabe624b5785f2a77
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   27 days
Failing since        187731  2024-09-17 13:11:20 Z   26 days   44 attempts
Testing same since   188064  2024-10-12 04:58:25 Z    1 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      fail    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 9278 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 05:14:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 05:14:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818398.1231723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0DPC-0000ZU-GT; Mon, 14 Oct 2024 05:14:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818398.1231723; Mon, 14 Oct 2024 05:14: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 1t0DPC-0000ZN-Dn; Mon, 14 Oct 2024 05:14:06 +0000
Received: by outflank-mailman (input) for mailman id 818398;
 Mon, 14 Oct 2024 05:14: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 1t0DPA-0000ZD-RL; Mon, 14 Oct 2024 05:14: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 1t0DPA-0003AR-NT; Mon, 14 Oct 2024 05:14: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 1t0DPA-000840-9L; Mon, 14 Oct 2024 05:14:04 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0DPA-0004Ir-6k; Mon, 14 Oct 2024 05:14: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=M5P4Kzt8NPaFzr+NW4mPhpkaPF6DNgBKttjyzrHxMos=; b=QxUg2G/6Hb0IWJm3Np39wlalJE
	LGwbvRDs23iqWXH27B3KxOdwkXfPzXCx9436g6TgSZKmsjvpQ47Oo0d55dgwr4+vPLcftuU7fi/hH
	5qRYuC5QzLXMRTC/6abRZFqPXogRSVd9tiQS7qUI//8UcppPncs8t+w0wPtvdipWcLEg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188077-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188077: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:regression
    linux-linus:test-armhf-armhf-xl-qcow2:leak-check/check: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: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-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-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-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: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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=cfea70e835b9180029257d8b772c9e99c3305a9a
X-Osstest-Versions-That:
    linux=36c254515dc6592c44db77b84908358979dd6b50
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 14 Oct 2024 05:14:04 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail REGR. vs. 188073

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-qcow2    20 leak-check/check    fail pass in 188080-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188073
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188073
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188073
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188073
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188073
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188073
 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-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-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          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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                cfea70e835b9180029257d8b772c9e99c3305a9a
baseline version:
 linux                36c254515dc6592c44db77b84908358979dd6b50

Last test of basis   188073  2024-10-13 06:36:24 Z    0 days
Testing same since   188077  2024-10-13 20:42:34 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alan Stern <stern@rowland.harvard.edu>
  Danilo Krummrich <dakr@kernel.org>
  Fiona Behrens <me@kloenk.dev>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Guilherme Giacomo Simoes <trintaeoitogc@gmail.com>
  Icenowy Zheng <uwu@icenowy.me>
  Jinjie Ruan <ruanjinjie@huawei.com>
  John Keeping <jkeeping@inmusicbrands.com>
  Jose Alberto Reguero <jose.alberto.reguero@gmail.com>
  Kexy Biscuit <kexybiscuit@aosc.io>
  Linus Torvalds <torvalds@linux-foundation.org>
  Matthias Kaehlcke <matthias@kaehlcke.net>
  Oliver Neukum <oneukum@suse.com>
  Pali Rohár <pali@kernel.org>
  Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
  Roy Luo <royluo@google.com>
  Selvarasu Ganesan <selvarasu.g@samsung.com>
  Steve French <stfrench@microsoft.com>
  Thinh Nguyen <Thinh.Nguyen@synopsys.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                 fail    
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 374 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 06:26:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 06:26:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818417.1231734 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0EXL-0000lH-KS; Mon, 14 Oct 2024 06:26:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818417.1231734; Mon, 14 Oct 2024 06: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 1t0EXL-0000lA-H0; Mon, 14 Oct 2024 06:26:35 +0000
Received: by outflank-mailman (input) for mailman id 818417;
 Mon, 14 Oct 2024 06: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0EXJ-0000l4-Ue
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 06:26:33 +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 40e20315-89f5-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 08:26:32 +0200 (CEST)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-43058268d91so36752795e9.0
 for <xen-devel@lists.xenproject.org>; Sun, 13 Oct 2024 23:26:32 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b7edebfsm10428658f8f.98.2024.10.13.23.26.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 13 Oct 2024 23:26:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 40e20315-89f5-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728887191; x=1729491991; 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=7sjrvZxe02GtRHTorA7slIsi4zGYRseKcSlrWTPapQA=;
        b=BYJbvRwpzf4WQ84u5ZdYLI7oYfz9Q86hH78AKDpc4h/AHf/5oRr0fhDdu6X7iM14pT
         TuKVX1TeEtCxLZGZ8BQdOoc1Sv5wOX/oVXLLaQdsCDRIc44TaXncE7vdCeGSU3EoBjCh
         tLRgADad4zRnmZ1kjoR2tTj6oYawO9c8AhXlXZBw3elpE4ATJuSNEQyO3TRn7p5Dj55Z
         EGLLuUd0oWzdb8UXR3nbiHbbXubTlp+f1j/CsGWbVrRGIpKlZCzWYz84cO0I3bScksby
         Lqu6IneD7VeBYi1cg+T+PTYIozmnzzoftZGSpLYusTm90ozZHAjuPOLtrdud14Y5URRQ
         /eXQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728887191; x=1729491991;
        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=7sjrvZxe02GtRHTorA7slIsi4zGYRseKcSlrWTPapQA=;
        b=ZP1wwTRMi4eu+lLzlOF19XiyPLifc74LbWBJUnihkVhtJeCw5cKhfCJSRhVYxjBcCo
         wQzXt9LdsICHRQex/TT1rxPEMLJa04M54MwvNMMI7DOjVIdIyD1yiTnjrc9NLeCr08gv
         rjd8ucbxqbI9lzSAhgoJnQqWIDGTGy2Fm1AAF02fJWFiygQOjmXAMsx64eceAUyrtD5U
         D/GEu6fgN8U7rgMmSfB2q9VVrp72o76uqM5PmxI9Lc4zkcJYLOHz1oHV3gY9ROdYAfxv
         PEiKePnBU2UyXh/S0lwZ5XflrDGEbHqi3rwPzETZoKocMp55wFCR1tzEulR0qvY3PoJY
         P5Zw==
X-Forwarded-Encrypted: i=1; AJvYcCUvCdzjnQzCJ/aacqrjSA6XVLyra/v+9cp5YJYzgFm4cHc4kAZLcRxh39qcfQFS2G/+445WFwygJ5s=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwLVs/YTFGLUKiXCxt+oyZqsfr/rfanPHqOrpflYtfiK4LItvNL
	hKiXmz9rBsDq706L01dgxJwWPbnU1DYCzlSuOXUZZ3uGZf1/znUZbiwPz8bTnA==
X-Google-Smtp-Source: AGHT+IFbcFVpk9yWP+iCtD7fKgy9hgYZPeoPNCFB8BH0pxWF84xBYymqV0Y/GYve2yYmGdFrlbxArw==
X-Received: by 2002:a05:600c:1d0e:b0:42c:b95c:65ba with SMTP id 5b1f17b1804b1-4311dea3c4emr92301585e9.6.1728887191651;
        Sun, 13 Oct 2024 23:26:31 -0700 (PDT)
Message-ID: <63633a26-3b9a-4d74-96c7-3528ae0c504f@suse.com>
Date: Mon, 14 Oct 2024 08:26:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 06/11] tools/libacpi: Use LUT of APIC IDs rather than
 function pointer
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-7-alejandro.vallejo@cloud.com>
 <28e07993-9463-49a5-ba75-e012056e5ab2@suse.com>
 <D4T423OR4IAU.D5ZUN0WIO0UK@cloud.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: <D4T423OR4IAU.D5ZUN0WIO0UK@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 18:17, Alejandro Vallejo wrote:
> On Wed Oct 9, 2024 at 3:25 PM BST, Jan Beulich wrote:
>> On 01.10.2024 14:38, Alejandro Vallejo wrote:
>>> @@ -148,7 +148,7 @@ static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
>>>          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 = config->cpu_to_apicid[i];
>>
>> Perhaps assert (like you do in an earlier patch) that the ID is small
>> enough?
> 
> Actually, I just remembered why I didn't. libacpi is pulled into libxl, which
> is integrated into libvirt. A failed assert here would kill the application,
> which is not very nice.
> 
> HVM is already protected by the mp tables assert, so I'm not terribly worried
> about it and, while PVH is not, it would crash pretty quickly due to the
> corruption.
> 
> I'd rather have the domain crashing rather than virt-manager.

Fair enough.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 07:07:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 07:07:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818437.1231743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0FAN-00065g-Ah; Mon, 14 Oct 2024 07:06:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818437.1231743; Mon, 14 Oct 2024 07:06: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 1t0FAN-00065Z-7E; Mon, 14 Oct 2024 07:06:55 +0000
Received: by outflank-mailman (input) for mailman id 818437;
 Mon, 14 Oct 2024 07:06: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=pOqc=RK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t0FAM-00065T-9M
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 07:06:54 +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 e3db6e29-89fa-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 09:06:53 +0200 (CEST)
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 540A71FE73;
 Mon, 14 Oct 2024 07:06:52 +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 1A6B813A42;
 Mon, 14 Oct 2024 07:06:52 +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 lFjtBAzDDGdmVwAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 14 Oct 2024 07:06: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: e3db6e29-89fa-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728889612; 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=RaQfpmdgPACYQm+LEMvIhBhdQnCb7Wc+oyxcnnw06Fo=;
	b=Mx03RpQuUUMTOkVZfGL6LQw0JLhRXr4wHBi0JtFBIEdTVBW7vyEUcj/ocqyNp3FXkMPEV0
	0IMNNq0IBV5EAq4CBsINDcc9NRSBYNmgfl3F8bQKeC/L/ST1vwvPSVPXoTeaL8BH7buIrj
	1WnAkiv6eHiHTkffzEZO67DpB2LN46g=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=Mx03RpQu
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728889612; 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=RaQfpmdgPACYQm+LEMvIhBhdQnCb7Wc+oyxcnnw06Fo=;
	b=Mx03RpQuUUMTOkVZfGL6LQw0JLhRXr4wHBi0JtFBIEdTVBW7vyEUcj/ocqyNp3FXkMPEV0
	0IMNNq0IBV5EAq4CBsINDcc9NRSBYNmgfl3F8bQKeC/L/ST1vwvPSVPXoTeaL8BH7buIrj
	1WnAkiv6eHiHTkffzEZO67DpB2LN46g=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] xen/public: increment domctl interface version
Date: Mon, 14 Oct 2024 09:06:50 +0200
Message-ID: <20241014070650.14296-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 540A71FE73
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.98%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo,suse.com:dkim,suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

The recent addition of the XEN_DOMCTL_dt_overlay function was missing
the related update of XEN_DOMCTL_INTERFACE_VERSION, as it has been the
first interface change of the 4.20 release cycle.

Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 xen/include/public/domctl.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index e1028fc524..54cc9a06db 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 0x00000017
+#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
 
 /*
  * NB. xen_domctl.domain is an IN/OUT parameter for this operation.
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 07:14:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 07:14:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818444.1231754 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0FHw-0007dj-30; Mon, 14 Oct 2024 07:14:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818444.1231754; Mon, 14 Oct 2024 07:14: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 1t0FHv-0007dc-VK; Mon, 14 Oct 2024 07:14:43 +0000
Received: by outflank-mailman (input) for mailman id 818444;
 Mon, 14 Oct 2024 07:14: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0FHu-0007dU-5q
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 07:14:42 +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 fa4c9b0f-89fb-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 09:14:40 +0200 (CEST)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-37d55f0cf85so1737453f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 00:14:40 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b6a8666sm10575959f8f.22.2024.10.14.00.14.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 00:14:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa4c9b0f-89fb-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728890080; x=1729494880; 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=dhT/aM8zoTMbN3bIGjdIsJDDNXP38vfj11zDjzFCMyQ=;
        b=NQ/qMSxHl7TzbeWqdJ7+OhSFCy0d8M714evx/GCrqxjW/thiemp9+TZ//D4qSx24Su
         eQQRCif0Owe3OneWlTAC/bsAgK4iUbTqjIHpv7jVAwCOz94VSfJeoJeqz0VYgyRpeHCv
         7pyBNOgf7mjyx2+mAX02HX3ikfLiBuckmsg5NFCu8msvj2uWdvxodnZhsCql7kOvUm9O
         XejgdcBQLt9NMKnkZzYHaAX1jCzzPrQXoHyHvtRq3oo7aAfxN7I8bj/nPT9eb5Oaviyb
         kmpFPj3dSpVYQnlQfJVFehc03115fg2X7W76d/6dncUbef5jBMAhf75k+2KqzNo//Zqq
         kkzw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728890080; x=1729494880;
        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=dhT/aM8zoTMbN3bIGjdIsJDDNXP38vfj11zDjzFCMyQ=;
        b=DOdtSaUm0Bkuvsf7mjzgwlEKGkriX0VpMA+uR1mMmVcS/w3PN/rVO6nPekr4jqwDF3
         60bnwviH/nGykL3D4MiP1RbhcBAU5/KlWxPbC0Chu5X5nnXaw1UjlPaP0A63NU+Ewmwl
         X5ZIFJCDfqJPoOb3gBqexnW6AZiwwxAafdNzp1hyYa1HtA0BM/75q0o6gnkbejZYSeQp
         3wCwrXO2YiSAiBvk/KR7Tqma6dsUQkI2u+F3YPUaLVnP0HaUNsaj+d0gKD1H2LoWzYPQ
         ouTyqzsD14fm23beu1QtvrCUt7RJr62Nxvtmo3xns6OvY57p9kKQdx0eCNSIkYSHceoj
         tuKw==
X-Forwarded-Encrypted: i=1; AJvYcCXwR4EBnvJ+jk9fjFUOs+F+bKWcRwODyEpJDQTfzTzTiniLi4Jh624FE9l3/f2Bnq1Evkb9ZRh3OUs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzfJlRrIg+IOEspza8+KYCL4rQyPH+lovxwCMYkZYtsEa3exFWT
	17A5ct9zK8obA/7sWiKr7kKpQHehrHx97S49rOdInHjbnnPrN5Pu4doSSuAf/Q==
X-Google-Smtp-Source: AGHT+IH0BcqUfscVR6gElMOMRzuhAJ48peZLkP81461AaQ2b7LNImrRp8LM3DjRiMCISwa5u6o/Kzw==
X-Received: by 2002:a5d:69ca:0:b0:37d:4706:f728 with SMTP id ffacd0b85a97d-37d552cbc7dmr6820650f8f.50.1728890079660;
        Mon, 14 Oct 2024 00:14:39 -0700 (PDT)
Message-ID: <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
Date: Mon, 14 Oct 2024 09:14:42 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: increment domctl interface version
To: Juergen Gross <jgross@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014070650.14296-1-jgross@suse.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: <20241014070650.14296-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14.10.2024 09:06, Juergen Gross wrote:
> The recent addition of the XEN_DOMCTL_dt_overlay function was missing
> the related update of XEN_DOMCTL_INTERFACE_VERSION, as it has been the
> first interface change of the 4.20 release cycle.
> 
> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")

I'm confused: That change (a) pre-dates the branching of 4.20 and (b)
bumped the version ...

> --- 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 0x00000017
> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018

... from 0x16 to 0x17. And for no apparent reason, as plain additions don't
require a bump. Didi you maybe mean to reference a different commit?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 07:16:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 07:16:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818449.1231763 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0FJY-00089r-CF; Mon, 14 Oct 2024 07:16:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818449.1231763; Mon, 14 Oct 2024 07:16: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 1t0FJY-00089k-9W; Mon, 14 Oct 2024 07:16:24 +0000
Received: by outflank-mailman (input) for mailman id 818449;
 Mon, 14 Oct 2024 07:16: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0FJW-00089c-Lp
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 07:16:22 +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 3640d00b-89fc-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 09:16:20 +0200 (CEST)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-37d49a7207cso2469419f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 00:16:20 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b7a05b3sm10682595f8f.76.2024.10.14.00.16.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 00:16:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3640d00b-89fc-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728890180; x=1729494980; 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=ts96frr75r13bLnPWGnC4EQ9/kRxjCdlmFRnyynBhEc=;
        b=O20h5+8lVa5KE/WCFbrwO2laTWaJrV35q1AcMcfrjlMzPqsq5/UmvWod4mHiEt9D3/
         rv6jp1hOCi1JwxSgDajwDW4E0nFRN5kI//sNaHvRtDK4Hdpqu70zjwalCOL4bzj5lXno
         08Rc+lILRfMv7uetxP0qlJ895y0xPEJS/tNbNV+arVu/HWfbERoHnlBslTbwHNyGF1+k
         hXRn3ZIpHFTJtdJ2EXR6WodqGWTu6QyMfhRjpCf6R1n40sugnW9GKWH9lQbMq3VDBmOe
         EfwTsmpCWWfjCwx3EZ+8/145nk7eN+ZRp3RXJ6dOUdkSjHDUCtCz8W2tCEa9m2xSPqge
         eZ4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728890180; x=1729494980;
        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=ts96frr75r13bLnPWGnC4EQ9/kRxjCdlmFRnyynBhEc=;
        b=IfmwdeGNb4bkI86AnAVGsTSvGSffkNnA1aFzTAOCAwlRLeK/pHxABUIZtsbFFcrEw+
         OmHmtR1wK5ptBMeraUbhtFb53zHLyDE9yjpfu42HVOCqNj+x/wBPGjHdT8+KU50X/8EM
         8vaPRmmfkh+gWMbmzf75P+LsXM8vxASGaW9mkS675W93GF+QNfJzPIE7G7EtxAHjGR2/
         sk/16iNS1hryjMwywkWoaBMQBS2kypGnN6eRQo77lC/S7jta96A5x2KvLuzB5my1il5q
         G6hwD37ZCm6bl7T0uEY5x6tR8ZotUdMSZI8jiUqH54SAbI4l6/xvfhF6qdt0i1+nmo0k
         umpQ==
X-Forwarded-Encrypted: i=1; AJvYcCW4+F6iJWsQZCpTpQ7XS0MD0jE3ZPSJrmPXDBuH8IECCne0+hDCbiLOpyWx7pu/lOF7QCHds/myQ6w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzKnqhC6XI2sSBLsAkGT8MhLu8aF1qr6hT+LKemIpY55rqJu25t
	Xy13gWSt3h9V/taeaG4wa46hs8iwqsA31BXzknu6AbEIvJZv7ReavcpBlDOg70/DEZ1XY7G4S6A
	=
X-Google-Smtp-Source: AGHT+IEvboDQruTyj93wiHQF1JckQNQOKMZTSpcekJRIJ1qXkCzGmMvIAnC7QTq+ieMhyIye4R9XbA==
X-Received: by 2002:a5d:452e:0:b0:37d:498a:a23f with SMTP id ffacd0b85a97d-37d600ca0b5mr5782930f8f.53.1728890180223;
        Mon, 14 Oct 2024 00:16:20 -0700 (PDT)
Message-ID: <ee839510-eb6b-4f3a-ab3c-f8f27e1ddad9@suse.com>
Date: Mon, 14 Oct 2024 09:16:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: increment domctl interface version
From: Jan Beulich <jbeulich@suse.com>
To: Juergen Gross <jgross@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@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: <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14.10.2024 09:14, Jan Beulich wrote:
> On 14.10.2024 09:06, Juergen Gross wrote:
>> The recent addition of the XEN_DOMCTL_dt_overlay function was missing
>> the related update of XEN_DOMCTL_INTERFACE_VERSION, as it has been the
>> first interface change of the 4.20 release cycle.
>>
>> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
> 
> I'm confused: That change (a) pre-dates the branching of 4.20 and (b)
> bumped the version ...
> 
>> --- 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 0x00000017
>> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
> 
> ... from 0x16 to 0x17. And for no apparent reason, as plain additions don't
> require a bump. Didi you maybe mean to reference a different commit?

Albeit looking at the history of domctl.h I also can't spot any candidate.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 07:34:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 07:34:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818460.1231774 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Fak-0002qJ-Se; Mon, 14 Oct 2024 07:34:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818460.1231774; Mon, 14 Oct 2024 07: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 1t0Fak-0002qC-PH; Mon, 14 Oct 2024 07:34:10 +0000
Received: by outflank-mailman (input) for mailman id 818460;
 Mon, 14 Oct 2024 07:34: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 1t0Faj-0002q2-Qx; Mon, 14 Oct 2024 07:34: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 1t0Faj-0005VW-Oe; Mon, 14 Oct 2024 07:34: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 1t0Faj-0000eu-AS; Mon, 14 Oct 2024 07:34:09 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0Faj-0000yy-9h; Mon, 14 Oct 2024 07:34: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=nogxWOTahgbkFZhvj43ohiN0IbmIpSRAgNMQREz3w2w=; b=FuaIc86vEb2ZmjxKznSbHXY+T0
	bN6jHk3ScQO7xlPHhBhE3DfGRpwGo9jtv88UOIWPBipjYHlEv3rnGEMkj4Lh4iiQfq5i9P+dhmxUh
	NvE8+IyoeYxYM0DSgprFZZ+b/VwU3c47ASnG7DRvxL87ImP/meUEBsb3EPRmXrAavUz0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188078-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188078: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-xl-raw:guest-localmigrate/x10:fail:heisenbug
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-xl-rtds:xen-boot:fail:heisenbug
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=7e3b6d8063f245d27eecce5aabe624b5785f2a77
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 14 Oct 2024 07:34:09 +0000

flight 188078 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188078/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-raw 19 guest-localmigrate/x10 fail in 188075 pass in 188078
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188070
 test-armhf-armhf-xl-rtds      8 xen-boot                   fail pass in 188075

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-rtds    15 migrate-support-check fail in 188075 never pass
 test-armhf-armhf-xl-rtds 16 saverestore-support-check fail in 188075 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-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-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-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                7e3b6d8063f245d27eecce5aabe624b5785f2a77
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   27 days
Failing since        187731  2024-09-17 13:11:20 Z   26 days   45 attempts
Testing same since   188064  2024-10-12 04:58:25 Z    2 days    4 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 9278 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 07:36:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 07:36:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818472.1231784 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0FdF-0003Zq-Dh; Mon, 14 Oct 2024 07:36:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818472.1231784; Mon, 14 Oct 2024 07:36: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 1t0FdF-0003Zj-9o; Mon, 14 Oct 2024 07:36:45 +0000
Received: by outflank-mailman (input) for mailman id 818472;
 Mon, 14 Oct 2024 07:36: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=pOqc=RK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t0FdD-0003XD-UD
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 07:36:43 +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 0e0cf98d-89ff-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 09:36:41 +0200 (CEST)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-4311c285bc9so26532605e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 00:36:41 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431183065e2sm113281125e9.28.2024.10.14.00.36.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 00:36:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e0cf98d-89ff-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728891401; x=1729496201; darn=lists.xenproject.org;
        h=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=+sBSVuPLJ20tVRvgkv06vWPbnqFZqvw+qpGFZd/NRyQ=;
        b=CV24jwoatD8mIoD91M6U4457jpkW20RCjWq5xHFEWLDPSHz004CsMyAzCgDE7SUpMn
         imQQryDJJLIo1ceU4hIjjXHfGEkYEBSlwkdI+ZFWc5k4Ge76NDcr/v9Y3ZpVKvwRxVMA
         pv0ja8aKDXLKokzIgzuEu8rxK6o1eC/t0UNCmweASzIn4bzjWXYkgBcGXt4IdXwvDQBv
         rX1yNmcFJM/CYMdv+13/A5PKzR7t5AvOYZ4O1mEthAvFbHhksMqNj33gE611/9lvHdDl
         xjXXlSE23aaSX5d2Lhnew+FOTovOOlVraRNVsqdk7EJ8YiBFH+nQ458y2UzjLYnvHmMj
         27/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728891401; x=1729496201;
        h=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=+sBSVuPLJ20tVRvgkv06vWPbnqFZqvw+qpGFZd/NRyQ=;
        b=xJoNpZ7mKYBpaxM/edPKwtbyeT5nVNi4aa9PCWCpYmE9tjYmxJK1SX3TrtztNDXiAg
         5a6vaqEXw0KM9uGrnhUN7ObgGQTZkbpkmCin3PxQ+ooZGq0g8bY1tdyJKudzat3poCqi
         s99z/dmkDPXzVxQecDla9W2peA3hsISla6GAmYlUZhFmyOtSTY6w1dSP87eymF0BxzNz
         d+L9mTInNwyMrOJQtKszuoqo5WZiatLi7I2eIYO8UPCw+K+TC2nKno5/pvDdRaIUaOnA
         LzDKV/zTv0dU0FRjwrIInZwZK3XhOwo8U6Nr7ysgkb/dbB+8T0PJydna1um8dqQD+bEP
         qdDQ==
X-Forwarded-Encrypted: i=1; AJvYcCWV5cHZvmdRhq36+dOGlbs5afuzAoPMlnwzDNuEOCAIkHf84LOl8k4rQY7qKNvUcCtLRlN6+7N+BWk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7LR5M+wkC5BqEqicTTthgV6goQx3+Kw/xazIsKOPMAwBCgR8v
	/9LZgSvRGzRls0wZwXbAj+ngxT3MNPcfafTQIU8AFCoa8gIZIktQfDBa1h0t1nE=
X-Google-Smtp-Source: AGHT+IGAL1n0Q8j3Z87kxQcGPIoqMGobiehpZtuwfki0qzJXnkzVqYdpZz51WCz0AH+oKNesSjHXDQ==
X-Received: by 2002:a05:600c:3b0f:b0:42c:bc04:58a5 with SMTP id 5b1f17b1804b1-4311df56bfemr87223155e9.33.1728891401137;
        Mon, 14 Oct 2024 00:36:41 -0700 (PDT)
Message-ID: <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.com>
Date: Mon, 14 Oct 2024 09:36:39 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: increment domctl interface version
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------YGkhLj2citCEbA0ngcfiijNa"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------YGkhLj2citCEbA0ngcfiijNa
Content-Type: multipart/mixed; boundary="------------YruYDS9u2K0006bQCyGIAFo0";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Message-ID: <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.com>
Subject: Re: [PATCH] xen/public: increment domctl interface version
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
In-Reply-To: <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------YruYDS9u2K0006bQCyGIAFo0
Content-Type: multipart/mixed; boundary="------------amDs0RraUuZmPewZdXRHoWOZ"

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

T24gMTQuMTAuMjQgMDk6MTQsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAxNC4xMC4yMDI0
IDA5OjA2LCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4gVGhlIHJlY2VudCBhZGRpdGlvbiBv
ZiB0aGUgWEVOX0RPTUNUTF9kdF9vdmVybGF5IGZ1bmN0aW9uIHdhcyBtaXNzaW5nDQo+PiB0
aGUgcmVsYXRlZCB1cGRhdGUgb2YgWEVOX0RPTUNUTF9JTlRFUkZBQ0VfVkVSU0lPTiwgYXMg
aXQgaGFzIGJlZW4gdGhlDQo+PiBmaXJzdCBpbnRlcmZhY2UgY2hhbmdlIG9mIHRoZSA0LjIw
IHJlbGVhc2UgY3ljbGUuDQo+Pg0KPj4gRml4ZXM6IDRjNzMzODczYjVjMiAoInhlbi9hcm06
IEFkZCBYRU5fRE9NQ1RMX2R0X292ZXJsYXkgYW5kIGRldmljZSBhdHRhY2htZW50IHRvIGRv
bWFpbnMiKQ0KPiANCj4gSSdtIGNvbmZ1c2VkOiBUaGF0IGNoYW5nZSAoYSkgcHJlLWRhdGVz
IHRoZSBicmFuY2hpbmcgb2YgNC4yMCBhbmQgKGIpDQo+IGJ1bXBlZCB0aGUgdmVyc2lvbiAu
Li4NCj4gDQo+PiAtLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgNCj4+ICsrKyBi
L3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaA0KPj4gQEAgLTIxLDcgKzIxLDcgQEANCj4+
ICAgI2luY2x1ZGUgImh2bS9zYXZlLmgiDQo+PiAgICNpbmNsdWRlICJtZW1vcnkuaCINCj4+
ICAgDQo+PiAtI2RlZmluZSBYRU5fRE9NQ1RMX0lOVEVSRkFDRV9WRVJTSU9OIDB4MDAwMDAw
MTcNCj4+ICsjZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJT04gMHgwMDAwMDAx
OA0KPiANCj4gLi4uIGZyb20gMHgxNiB0byAweDE3LiBBbmQgZm9yIG5vIGFwcGFyZW50IHJl
YXNvbiwgYXMgcGxhaW4gYWRkaXRpb25zIGRvbid0DQo+IHJlcXVpcmUgYSBidW1wLiBEaWRp
IHlvdSBtYXliZSBtZWFuIHRvIHJlZmVyZW5jZSBhIGRpZmZlcmVudCBjb21taXQ/DQoNCk9o
LCBpbmRlZWQuIEkgd2FudGVkIHRvIHJlZmVyZW5jZSBkNmU5YTJhYWIzOWUuDQoNCkFuZCBy
ZWdhcmRpbmcgdG8gInBsYWluIGFkZGl0aW9ucyBkb24ndCByZXF1aXJlIGEgYnVtcCI6IDRj
NzMzODczYjVjMiBkaWQNCmEgcGxhaW4gYWRkaXRpb24gYW5kIGJ1bXBlZCB0aGUgdmVyc2lv
bi4NCg0KDQpKdWVyZ2VuDQo=
--------------amDs0RraUuZmPewZdXRHoWOZ
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------amDs0RraUuZmPewZdXRHoWOZ--

--------------YruYDS9u2K0006bQCyGIAFo0--

--------------YGkhLj2citCEbA0ngcfiijNa
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/Ey8FAmcMyggFAwAAAAAACgkQsN6d1ii/Ey9S
4AgAmtXaZkPnHdDd2vLwAuefMGURzskh3HUQCNfrmRojY4FMqK5rqGaMPSX9BpOCnPMoOo8qFlMy
/fhW6UnXFibXhbsTe5g/QTQW/+1UZPoCHkAh26RrXh7HZWS2AudKBQAuboAOGP9ERQmXnQ5wIzMy
w+X3/RlM7ic4S1LFN4eJuTTSfojx5O9RiI2iFtzE+NyEVzvDuqdRIpcpKcHDKxA35ai5lXD0tVmv
prpDwW2on39yq1zkPnJ3WbWBuMnywShifjDO3C4Rdgowyq3J2/C7YPHYRRpu+Mig028NzrlTdhmb
+5CCh7A6cKuuQBJLlZu9fDjpkG0hX0cNh5D9BGt4DA==
=OC3w
-----END PGP SIGNATURE-----

--------------YGkhLj2citCEbA0ngcfiijNa--


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 07:46:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 07:46:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818481.1231794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Fmr-0005Pk-AK; Mon, 14 Oct 2024 07:46:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818481.1231794; Mon, 14 Oct 2024 07:46: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 1t0Fmr-0005Pd-7I; Mon, 14 Oct 2024 07:46:41 +0000
Received: by outflank-mailman (input) for mailman id 818481;
 Mon, 14 Oct 2024 07:46: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0Fmp-0005PX-Om
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 07:46:39 +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 713cb021-8a00-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 09:46:37 +0200 (CEST)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-37d49ffaba6so2501170f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 00:46:37 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430ccf51834sm145102565e9.26.2024.10.14.00.46.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 00:46:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 713cb021-8a00-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728891997; x=1729496797; 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=2p/WnuPzRNfiYorQAZQmqnQygwNRVAJRi3a2J69I89U=;
        b=Kh8b90dYhjGY4Cv7WC2rSR0CAzxvOEbc30MdF6pvw8GeIabn8FbEJeceJcMUS895vY
         jq2kdiJgZo9QrScfWkbWaCCINenwHyuCzn/cKPH87BSkbwLqbCLQBADieeNfqI4U9zn8
         P9pkTtJFtoH6FY5qKGkNrgpBEgrF8VdvfvWljdHEC48Kgccrt8erhcBJRZM7gjQk62Wg
         yxq96tkbUWmquL0oES22Ts2vspK+6ajkN4Sh7d3EOa8FelDbHICaz8dTrZXl43BRK2Ve
         0RImFKMgqVkRwjepQd1bu9Puw+dfr5C9moN+fD353gWqZpGfe959j1eT1+OCt3nWoRb0
         Y66Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728891997; x=1729496797;
        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=2p/WnuPzRNfiYorQAZQmqnQygwNRVAJRi3a2J69I89U=;
        b=JXM8HXX9YH/uWyeFmXn5XMDFEhUtKvzyz/pYj4p7bGGLcvVapZJrc1o3sVOES+nbHb
         zucvbU41r/YtuAZThsXqBEgu/QFvE6wWkgrfDQD9iZi9yYpVJCDb4xWaOQlAoBpVItCT
         ecA676fhQV1bRZSwOL3fZafq7ysgUl7pwTJA7nqjK+wvWewfuuOw5PPbHwHhYX5/rQ4q
         dNZbQwb7AJ4WcfysF0+D/1NWkb4/93B3ptfn2bjO84Gyu1AfxRbL39uTglBhJVa62cV2
         Bb/JPG6iyAkcge+aD5Yf+MDaqvlcFi/xvMrQd7QuDc7Kqup1I6mVogviMl68ISTZuGhA
         ENLw==
X-Forwarded-Encrypted: i=1; AJvYcCWBtgIok76Fh9iqVknJRSr0szG0BAbAb4nt/bcuL91RcASb+RRk5R8u7f5f8C41VX6yT9b5DkEaxYU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw3dMtep9t6i5qfBfrpUlAe8TxSk2RyfzdIdY8cNlIaSzvSuxvF
	BZqyDqmpa386Ok+afchzwtBkz6e+ITSH1/GbsUlpQUR5oLPSmChfG7a0K9Hfqw==
X-Google-Smtp-Source: AGHT+IFmpQey6nP2muLK+fV6qhTvo+sPNt8yeNDzRXsYuUhoEPCMu4dPwxkFOh3kNr5v/PBUAlBwVQ==
X-Received: by 2002:a5d:63d1:0:b0:37d:45ab:422b with SMTP id ffacd0b85a97d-37d551dce47mr7696062f8f.31.1728891997176;
        Mon, 14 Oct 2024 00:46:37 -0700 (PDT)
Message-ID: <2082c6ea-c778-444f-ad5f-15f25b87ba10@suse.com>
Date: Mon, 14 Oct 2024 09:46:36 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: increment domctl interface version
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
 <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.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: <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14.10.2024 09:36, Jürgen Groß wrote:
> On 14.10.24 09:14, Jan Beulich wrote:
>> On 14.10.2024 09:06, Juergen Gross wrote:
>>> The recent addition of the XEN_DOMCTL_dt_overlay function was missing
>>> the related update of XEN_DOMCTL_INTERFACE_VERSION, as it has been the
>>> first interface change of the 4.20 release cycle.
>>>
>>> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
>>
>> I'm confused: That change (a) pre-dates the branching of 4.20 and (b)
>> bumped the version ...
>>
>>> --- 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 0x00000017
>>> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
>>
>> ... from 0x16 to 0x17. And for no apparent reason, as plain additions don't
>> require a bump. Did you maybe mean to reference a different commit?
> 
> Oh, indeed. I wanted to reference d6e9a2aab39e.
> 
> And regarding to "plain additions don't require a bump": 4c733873b5c2 did
> a plain addition and bumped the version.

Right, hence why I said "for no apparent reason".

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:01:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:01:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818494.1231803 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0G0k-0000ee-FK; Mon, 14 Oct 2024 08:01:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818494.1231803; Mon, 14 Oct 2024 08: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 1t0G0k-0000eX-Ck; Mon, 14 Oct 2024 08:01:02 +0000
Received: by outflank-mailman (input) for mailman id 818494;
 Mon, 14 Oct 2024 08:01: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=pOqc=RK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t0G0j-0000eR-3U
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:01: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 734636b2-8a02-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 10:01:00 +0200 (CEST)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-431291b27f1so14923335e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:01:00 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b6bd3dcsm10695540f8f.42.2024.10.14.01.00.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 01:00:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 734636b2-8a02-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728892859; x=1729497659; darn=lists.xenproject.org;
        h=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=XNQBOXa00l12tm2HgL7kt+gkawGCI340Njq+8N376K0=;
        b=Fhw+WKrkSMAcDAyIbOhKlp7KyqbjjocC5fQEeQ1cSLEoj9+1qQ6zwszfVb22hm271a
         emYHu6XCcCgJdoA8sxFqDL3fkd4Ag+oxqYBtKrJYH++nIdHg7+PWRiaMt9FBdEQDi1dg
         WO19dDUKdaS4JjcXdj/ZvSTI/VaE95F8PMIaVdfeZ5ap+Th46U3eO0ZSpU9m36UpeQid
         8vLO9cnQQCoBYO9+Z770kZwehj7XlM9lTIbS+TdmpwoDZvZOSdcdON4t4EZWuXfLT2kb
         uk93Ux38D9Q5G1o4QBLwz4nWNM9AujpCtXbD7wQtmnwclkHz8I2Tfp6vDxnCxzExf/iQ
         r5rQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728892859; x=1729497659;
        h=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=XNQBOXa00l12tm2HgL7kt+gkawGCI340Njq+8N376K0=;
        b=RolBO40zYvtE3AyMG4MjW/o29bC+DSYPKhlPWDd7aZsVPJxeQ+PYMiCOyy9SgsgpDI
         JwBVMxONiPQhtrTg3degNOzFxVutKLecDLxKSXAJtdMFgFCC7JVSEByDsnBWL+g5kG7d
         /LYYuedpr21yP5i1vLhgd8PbKeJPHN4abmAsVNpoFijZCOe2BRMqZJGjiCbK38gFiVH1
         VFzn4YfdC6nwP3liriDMZ/tzNGERruuAsz8tfrCqzxI5S4F8fVayOdwjHpAvDZ5SNvci
         GITA8UArCw1IzLT5PHll8bmutzTbSHlLv3U1CGbfrFqw7tibOxKcFUwenTyIuSaxEUJa
         0CXQ==
X-Forwarded-Encrypted: i=1; AJvYcCV8K26Vn1r6GJwDN3ONkhFs7IPr32B7OvhW7f1R6Gw4+q0T2+rRzAXFoIps6MocznDGFWVmkRCYNgI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwUhrDwsfi76dveii4qmG9umyZdtkf2F3KTYxnAax0rdWI34IjP
	f9xJ3CIojql+vhAbxRZUROJqKCGMg1Vi+69+aJfGL3X80CW11Is/fJ5bYfDRjnE=
X-Google-Smtp-Source: AGHT+IG4luhqi0qksARaX6YCF/pcjzG1wv29T0lgZZVcznicHK3B94jDWxQ+b29UJ8/EX+2giHxlNg==
X-Received: by 2002:adf:e582:0:b0:37d:446a:9e60 with SMTP id ffacd0b85a97d-37d54df4d49mr8096017f8f.0.1728892859369;
        Mon, 14 Oct 2024 01:00:59 -0700 (PDT)
Message-ID: <ea126b93-add2-415a-8a51-5b55ffcdd21e@suse.com>
Date: Mon, 14 Oct 2024 10:00:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: increment domctl interface version
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
 <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.com>
 <2082c6ea-c778-444f-ad5f-15f25b87ba10@suse.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <2082c6ea-c778-444f-ad5f-15f25b87ba10@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------9mveKoi6B8MKDQx0FRueG6sP"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------9mveKoi6B8MKDQx0FRueG6sP
Content-Type: multipart/mixed; boundary="------------wbXeGerDoKHqbdcbcMRRBz06";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Message-ID: <ea126b93-add2-415a-8a51-5b55ffcdd21e@suse.com>
Subject: Re: [PATCH] xen/public: increment domctl interface version
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
 <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.com>
 <2082c6ea-c778-444f-ad5f-15f25b87ba10@suse.com>
In-Reply-To: <2082c6ea-c778-444f-ad5f-15f25b87ba10@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------wbXeGerDoKHqbdcbcMRRBz06
Content-Type: multipart/mixed; boundary="------------qQNQ1cbDDKYKG149gZbN0hXh"

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

T24gMTQuMTAuMjQgMDk6NDYsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAxNC4xMC4yMDI0
IDA5OjM2LCBKw7xyZ2VuIEdyb8OfIHdyb3RlOg0KPj4gT24gMTQuMTAuMjQgMDk6MTQsIEph
biBCZXVsaWNoIHdyb3RlOg0KPj4+IE9uIDE0LjEwLjIwMjQgMDk6MDYsIEp1ZXJnZW4gR3Jv
c3Mgd3JvdGU6DQo+Pj4+IFRoZSByZWNlbnQgYWRkaXRpb24gb2YgdGhlIFhFTl9ET01DVExf
ZHRfb3ZlcmxheSBmdW5jdGlvbiB3YXMgbWlzc2luZw0KPj4+PiB0aGUgcmVsYXRlZCB1cGRh
dGUgb2YgWEVOX0RPTUNUTF9JTlRFUkZBQ0VfVkVSU0lPTiwgYXMgaXQgaGFzIGJlZW4gdGhl
DQo+Pj4+IGZpcnN0IGludGVyZmFjZSBjaGFuZ2Ugb2YgdGhlIDQuMjAgcmVsZWFzZSBjeWNs
ZS4NCj4+Pj4NCj4+Pj4gRml4ZXM6IDRjNzMzODczYjVjMiAoInhlbi9hcm06IEFkZCBYRU5f
RE9NQ1RMX2R0X292ZXJsYXkgYW5kIGRldmljZSBhdHRhY2htZW50IHRvIGRvbWFpbnMiKQ0K
Pj4+DQo+Pj4gSSdtIGNvbmZ1c2VkOiBUaGF0IGNoYW5nZSAoYSkgcHJlLWRhdGVzIHRoZSBi
cmFuY2hpbmcgb2YgNC4yMCBhbmQgKGIpDQo+Pj4gYnVtcGVkIHRoZSB2ZXJzaW9uIC4uLg0K
Pj4+DQo+Pj4+IC0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaA0KPj4+PiArKysg
Yi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgNCj4+Pj4gQEAgLTIxLDcgKzIxLDcgQEAN
Cj4+Pj4gICAgI2luY2x1ZGUgImh2bS9zYXZlLmgiDQo+Pj4+ICAgICNpbmNsdWRlICJtZW1v
cnkuaCINCj4+Pj4gICAgDQo+Pj4+IC0jZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZF
UlNJT04gMHgwMDAwMDAxNw0KPj4+PiArI2RlZmluZSBYRU5fRE9NQ1RMX0lOVEVSRkFDRV9W
RVJTSU9OIDB4MDAwMDAwMTgNCj4+Pg0KPj4+IC4uLiBmcm9tIDB4MTYgdG8gMHgxNy4gQW5k
IGZvciBubyBhcHBhcmVudCByZWFzb24sIGFzIHBsYWluIGFkZGl0aW9ucyBkb24ndA0KPj4+
IHJlcXVpcmUgYSBidW1wLiBEaWQgeW91IG1heWJlIG1lYW4gdG8gcmVmZXJlbmNlIGEgZGlm
ZmVyZW50IGNvbW1pdD8NCj4+DQo+PiBPaCwgaW5kZWVkLiBJIHdhbnRlZCB0byByZWZlcmVu
Y2UgZDZlOWEyYWFiMzllLg0KPj4NCj4+IEFuZCByZWdhcmRpbmcgdG8gInBsYWluIGFkZGl0
aW9ucyBkb24ndCByZXF1aXJlIGEgYnVtcCI6IDRjNzMzODczYjVjMiBkaWQNCj4+IGEgcGxh
aW4gYWRkaXRpb24gYW5kIGJ1bXBlZCB0aGUgdmVyc2lvbi4NCj4gDQo+IFJpZ2h0LCBoZW5j
ZSB3aHkgSSBzYWlkICJmb3Igbm8gYXBwYXJlbnQgcmVhc29uIi4NCg0KVGhlcmUgc2VlbXMg
dG8gYmUgYSBsYWNrIG9mIGRvY3VtZW50YXRpb24gaW4gdGhpcyByZWdhcmQuDQoNCkp1bGll
biBleHBsaWNpdGx5IGFza2VkIGZvciB0aGUgYnVtcCBmb3IgdGhhdCBhZGRpdGlvbi4NCg0K
SSdtIGZpbmUgd2l0aCBkcm9wcGluZyBteSBwYXRjaCBpZiBvdGhlcnMgYWdyZWUgdGhhdCB0
aGUgYnVtcCBpc24ndCBuZWVkZWQuDQpJbiB0aGF0IGNhc2UgSSdsbCBzZW5kIGFub3RoZXIg
b25lIGFkZGluZyBhIGNvbW1lbnQgZm9yIHRoZSBtZWNoYW5pY3Mgb2YNCmludGVyZmFjZSB2
ZXJzaW9uIGJ1bXAgaW4gZG9tY3RsLmggYW5kIHN5c2N0bC5oLg0KDQoNCkp1ZXJnZW4NCg0K

--------------qQNQ1cbDDKYKG149gZbN0hXh
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------qQNQ1cbDDKYKG149gZbN0hXh--

--------------wbXeGerDoKHqbdcbcMRRBz06--

--------------9mveKoi6B8MKDQx0FRueG6sP
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/Ey8FAmcMz7oFAwAAAAAACgkQsN6d1ii/Ey/x
9wf+P5AdT129eG6fs7WXonFAkgkmQ38NsGp8nWPazWqyTz1BJsW7AZ118QYQWm2HvvkBzeJs8nbn
aSW2+llBbt2kn9s9ISod5imth12gDn1SEkbd+tHHkCAaIkGS9eMX1ZxXT+Ge2hvCHLgoX1TNxytk
VqOKaB/pE7xhJbDJcznVRIp2cpmaT67JEgVPZ+ZuVomGURvGMsUacwoKMkZw57glURijTFWGSX3R
EfymQZj21+h11VBGPBdsb47i4H+uHr6EtklD/7Ylv8T0aue3hluAFUB70FRrcQ4hytfekwq0igKN
G/YQYbGQj4NJ6gPDZhPXIo6cztRJelvUahyXZN/pIA==
=+72I
-----END PGP SIGNATURE-----

--------------9mveKoi6B8MKDQx0FRueG6sP--


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818520.1231835 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Gpo-00007G-Rj; Mon, 14 Oct 2024 08:53:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818520.1231835; Mon, 14 Oct 2024 08: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 1t0Gpo-000076-NC; Mon, 14 Oct 2024 08:53:48 +0000
Received: by outflank-mailman (input) for mailman id 818520;
 Mon, 14 Oct 2024 08:53: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Gpn-00086D-Ev
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:53:47 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d1c56b41-8a09-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 10:53:45 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9a156513a1so63005766b.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:53:45 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2446sm551817766b.206.2024.10.14.01.53.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 01:53:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d1c56b41-8a09-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728896024; x=1729500824; 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=ktEbN5Mta6+B/qu1SQOa+3juoPGypkurj1Nhhhu5ghA=;
        b=Jv2+rt37jOMGVvGxyvVG0X665Z6fNROEoeVuG1xQh7sBi02Lze6CFH16U4XR1spFFw
         HUD7bVVs7CegHmDQsjxpK96by0dHxzFi9J7T6LB2DefIN/noHlRXZ++d0yhphfNW+m/2
         dU3E01KRsciNMZ1ARwTkRCgww2eTPtitmovC8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728896024; x=1729500824;
        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=ktEbN5Mta6+B/qu1SQOa+3juoPGypkurj1Nhhhu5ghA=;
        b=mlcnRrSNpkU31jXXIp2rbkxqD/jQKsi51N7qT4wYSPqTlanrEawQROGCoxzyiyPtw6
         h2RaWILp6lBt68VX5fWK1S6Ng9K7rUmtE5iZ3bb1Vj/QHLigzsSKqkXo/zkDaS3BY1T8
         aCyQ42fUtOzolNT8iV5xWarHTjhT7Batc7L4bHuR1KP+ZJ2J44CnKmmEMDKHsqP4sSbS
         pSYpbXOTaAcy4WDpEG+xojCQiU62hyvmwzGE1A/rrBSWHXHn572KbYVAExAdegro+sJC
         qifNO3Y8OxA9PyBC3hSVQFLGd6W10/HeHvww1j/ZDPdDMizPAvxPX24weCIvuzRnnDBq
         BjaQ==
X-Gm-Message-State: AOJu0YzF2YTHXoGPyArEtwlBPO4lgdspaCNDcrePUOUlf5nZqBZNAj/R
	hvgG/Lr1Ggo42glmpHaInO2zWpg4qHwfwznHQUHZeEZTof8Fr80uYQCdJFeZF7WmU9EAM0OT95n
	X
X-Google-Smtp-Source: AGHT+IFEapbh2BjXX94GQenUWVcxXEC7ASsbiIPQtMGGSW4YUH3/bf6ShK4H3b+R4msB2bQ2SawLyQ==
X-Received: by 2002:a17:907:3fa5:b0:a99:45c5:339 with SMTP id a640c23a62f3a-a99b93c8d07mr856330466b.32.1728896024368;
        Mon, 14 Oct 2024 01:53:44 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v4 1/6] x86/boot: Prep work for 32bit object changes
Date: Mon, 14 Oct 2024 09:53:27 +0100
Message-Id: <20241014085332.3254546-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Broken out of the subsequent patch for clarity.

 * Rename head-bin-objs to obj32
 * Use a .32.o suffix to distinguish these objects
 * Factor out $(LD32)

No functional change.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/arch/x86/boot/Makefile | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index ff0f965876..1199291d2b 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,15 +1,16 @@
 obj-bin-y += head.o
 
-head-bin-objs := cmdline.o reloc.o
+obj32 := cmdline.32.o
+obj32 += reloc.32.o
 
-nocov-y   += $(head-bin-objs)
-noubsan-y += $(head-bin-objs)
-targets   += $(head-bin-objs)
+nocov-y   += $(obj32)
+noubsan-y += $(obj32)
+targets   += $(obj32)
 
-head-bin-objs := $(addprefix $(obj)/,$(head-bin-objs))
+obj32 := $(addprefix $(obj)/,$(obj32))
 
 $(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(head-bin-objs:.o=.bin)
+$(obj)/head.o: $(obj32:.32.o=.bin)
 
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
@@ -18,16 +19,20 @@ CFLAGS_x86_32 += -nostdinc -include $(filter %/include/xen/config.h,$(XEN_CFLAGS
 CFLAGS_x86_32 += $(filter -I% -O%,$(XEN_CFLAGS)) -D__XEN__
 
 # override for 32bit binaries
-$(head-bin-objs): CFLAGS_stack_boundary :=
-$(head-bin-objs): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
+$(obj32): CFLAGS_stack_boundary :=
+$(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
+
+$(obj)/%.32.o: $(src)/%.c FORCE
+	$(call if_changed_rule,cc_o_c)
 
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
+LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
 
 %.bin: %.lnk
 	$(OBJCOPY) -j .text -O binary $< $@
 
-%.lnk: %.o $(src)/build32.lds
-	$(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT)) -N -T $(filter %.lds,$^) -o $@ $<
+%.lnk: %.32.o $(src)/build32.lds
+	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
 
 clean-files := *.lnk *.bin
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818521.1231844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Gpq-0000NI-6O; Mon, 14 Oct 2024 08:53:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818521.1231844; Mon, 14 Oct 2024 08:53: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 1t0Gpq-0000NB-2v; Mon, 14 Oct 2024 08:53:50 +0000
Received: by outflank-mailman (input) for mailman id 818521;
 Mon, 14 Oct 2024 08:53: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Gpo-000862-8Y
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:53:48 +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 d3681249-8a09-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 10:53:47 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a93c1cc74fdso667109566b.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:53:47 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2446sm551817766b.206.2024.10.14.01.53.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 01:53:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d3681249-8a09-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728896027; x=1729500827; 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=TK+nbrmtQrubI4mXkXmmhgJ7U2/YQr+t6QKP18Zmwks=;
        b=J0Hei3kejJWEVBWlJIWPkgFx+Gq8LKyW2/4CP9vdti9OphBnK8QSpuj/QWpvq09Ohg
         ge9MJ30ofEeQfhiaild/45K67LQYJtrlJ2Vx41rRGZGlUiZyBPRGD/yo+HBsAzHnbYa+
         HBLEk45PttaN0WAqruiQmO96xpw/sjugCqIU4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728896027; x=1729500827;
        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=TK+nbrmtQrubI4mXkXmmhgJ7U2/YQr+t6QKP18Zmwks=;
        b=iapJpn9hB8YCq3YyceiMvo6NUg0iSFd2dJEcbtJ6GUdY0CLxMBAMobCUM5PYiB5Zcs
         gOkMa2RmQUsgOWEdvAf1eTLgZVXHoG99+xIpn14z2kpFm5gkNLfXQhLGVqCcadsCkWu0
         XqoQrohHM8+v1F6YmAEspy/x/rJnzThV8vVjVOdOqKljp/K5m4z1n9dX3rJJT15Km2yN
         mKdjK6erhv5IuFqgRK3wxWaQ1suvOwu+ljXxuxzwPvfVeSdGbTm9Bp+zsRR+Z9TUj2jy
         KD1oJGMtTHh3xROGIS2gBKvoJ1y/9e+WvJbiQE/5t+mtnDlsUeYPCAa0bj74CBE3FG3e
         OnLw==
X-Gm-Message-State: AOJu0Yw3tWwL10YGYCiyCLbw/wmjy4QHcjip4eFQdHazIyXTGmS4OZas
	9VdzW+lB1UVCJZqNd3hm40YxE6Gpqrulj1tn8quOD4hcF3eq9AjH5fJZj3PZxFvDMMHJJNagem3
	i
X-Google-Smtp-Source: AGHT+IHYrbYIK/sUdXu0LMUkQtOaIozUCZSYqAN0jSzxJmBLPE2Czj5lW1Gq0OlEDuIF+bN1I7FXvw==
X-Received: by 2002:a17:907:701:b0:a99:3c32:b538 with SMTP id a640c23a62f3a-a99e3e51b56mr687084666b.42.1728896027043;
        Mon, 14 Oct 2024 01:53:47 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v4 4/6] x86/boot: Use boot_vid_info variable directly from C code
Date: Mon, 14 Oct 2024 09:53:30 +0100
Message-Id: <20241014085332.3254546-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order.
---
 xen/arch/x86/boot/build32.lds.S |  1 +
 xen/arch/x86/boot/head.S        | 10 +---------
 xen/arch/x86/boot/reloc.c       | 13 +++++--------
 3 files changed, 7 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 1110880ad4..8c40758834 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -46,6 +46,7 @@ SECTIONS
         DECLARE_IMPORT(__trampoline_seg_start);
         DECLARE_IMPORT(__trampoline_seg_stop);
         DECLARE_IMPORT(trampoline_phys);
+        DECLARE_IMPORT(boot_vid_info);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index ade2c5c43d..5da7ac138f 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -514,18 +514,10 @@ trampoline_setup:
         mov     sym_esi(trampoline_phys), %ecx
         add     $TRAMPOLINE_SPACE,%ecx
 
-#ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %edx
-#else
-        xor     %edx, %edx
-#endif
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
-        push    %edx                /* Boot video info to be filled from MB2. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
         call    reloc
-        add     $4, %esp
 
 #ifdef CONFIG_PVH_GUEST
         cmpb    $0, sym_esi(pvh_boot)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 94b078d7b1..707d9c5f15 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -176,7 +176,7 @@ static multiboot_info_t *mbi_reloc(uint32_t mbi_in, memctx *ctx)
     return mbi_out;
 }
 
-static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx *ctx)
+static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 {
     const multiboot2_fixed_t *mbi_fix = _p(mbi_in);
     const multiboot2_memory_map_t *mmap_src;
@@ -185,7 +185,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
     memory_map_t *mmap_dst;
     multiboot_info_t *mbi_out;
 #ifdef CONFIG_VIDEO
-    struct boot_video_info *video = NULL;
+    struct boot_video_info *video = &boot_vid_info;
 #endif
     uint32_t ptr;
     unsigned int i, mod_idx = 0;
@@ -290,12 +290,11 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 
 #ifdef CONFIG_VIDEO
         case MULTIBOOT2_TAG_TYPE_VBE:
-            if ( video_out )
+            if ( video )
             {
                 const struct vesa_ctrl_info *ci;
                 const struct vesa_mode_info *mi;
 
-                video = _p(video_out);
                 ci = (const void *)get_mb2_data(tag, vbe, vbe_control_info);
                 mi = (const void *)get_mb2_data(tag, vbe, vbe_mode_info);
 
@@ -321,7 +320,6 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
             if ( (get_mb2_data(tag, framebuffer, framebuffer_type) !=
                   MULTIBOOT2_FRAMEBUFFER_TYPE_RGB) )
             {
-                video_out = 0;
                 video = NULL;
             }
             break;
@@ -346,8 +344,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
-            uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
 {
     memctx ctx = { trampoline };
 
@@ -357,7 +354,7 @@ void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
         return mbi_reloc(in, &ctx);
 
     case MULTIBOOT2_BOOTLOADER_MAGIC:
-        return mbi2_reloc(in, video_info, &ctx);
+        return mbi2_reloc(in, &ctx);
 
     case XEN_HVM_START_MAGIC_VALUE:
         if ( IS_ENABLED(CONFIG_PVH_GUEST) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818518.1231813 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Gpn-00086Q-Ba; Mon, 14 Oct 2024 08:53:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818518.1231813; Mon, 14 Oct 2024 08:53: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 1t0Gpn-00086I-8C; Mon, 14 Oct 2024 08:53:47 +0000
Received: by outflank-mailman (input) for mailman id 818518;
 Mon, 14 Oct 2024 08:53: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Gpk-000862-VY
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:53:45 +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 d15aa38a-8a09-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 10:53:44 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9a0c40849cso113822866b.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:53:44 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2446sm551817766b.206.2024.10.14.01.53.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 01:53:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d15aa38a-8a09-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728896023; x=1729500823; 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=Z0SbD6K0VhNzz991Asvv/NQq5tMeRvCT6g5hWmRMink=;
        b=YUfhzHY3qMwqxP0KNIeFgP+ZN1c5Rfb3A3WhpyHP+719Arzq6TRNLOK87ROVARujdM
         sNOnAYrtsMiXg6ygmd8mUu44kI/BZbDl1xT4aqJjgTzBEaSAgS9ym7/LkkKiACdl0cOt
         tLJY2QRG4ye7PQmySp8/UOfxGRS597NW1rK6M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728896023; x=1729500823;
        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=Z0SbD6K0VhNzz991Asvv/NQq5tMeRvCT6g5hWmRMink=;
        b=OQKL3wSBRYmmKD+Qa7IWx2+1Dh4t2gH/7wZBaTNjZikZyup3zDoiA70/lf23R+6J8Q
         SJM4ja5oNcPxhQNykJle7NS+DA6YR+MbdQDGUR8nsa9f52mwnUFvMWPEP61leTTi/Vs/
         ogcpZz+0FQjCl85JJYqiY6dcXtYHhYR75i+vrxlbFfl+CY7JjA9k+VWrDve3wSyzOaoy
         mV8FshIEwdfRrGPu1V21b56mcE5LjGy7cT/uLRWaQPFFqfA86Yx3A99lUihNK26EHZPy
         FxFxS1mEV95Q2MJ90PNWObxFIC1o8AJEwIPvtm1NX0qXF8jf4OiTZpvktKFyKpzhBmsy
         Q21A==
X-Gm-Message-State: AOJu0YweL3IzXR/kQt5ZNAsMw+lrRsjIGv3gIEBmylVBMc+m0QZohrof
	xLghVOR0CJD+Ttf4WpW7y9kVfzVmDmpKC9c7zRq4vDhtEEPJAZAyisoXLuggq2vr3wGAh+IwQGF
	1
X-Google-Smtp-Source: AGHT+IEEWhjkBCB83qt1pQ52pEobZ+NG1m4GtUG98xhUSpJNBJyLyeFmsf3AGmObEW4pLwo0wnc2TA==
X-Received: by 2002:a17:906:4fc8:b0:a8a:6c5d:63b2 with SMTP id a640c23a62f3a-a99b937a6d4mr881380366b.18.1728896023551;
        Mon, 14 Oct 2024 01:53:43 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v4 0/6] Reuse 32 bit C code more safely
Date: Mon, 14 Oct 2024 09:53:26 +0100
Message-Id: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series attempt to:
- use more C code, that is replace some assembly code with C;
- avoid some code duplication between C and assembly;
- prevent some issues having relocations in C code.

The idea is extending the current C to binary code conversion
done for 32 bit C code called from head.S making sure relocations
are safe and allowing external symbols usage from C code.

More details of the implementation are in commit message 2/6,
which is the largest patch.
Patch 3/6 reuses code to relocate the trampoline between 32 and 64 bit.
Patches 4/6 and 5/6 move some code from assembly to C.

Other RFC commits were excluded, I didn't manage to entangle the issues
sharing headers between 32 and 64 bits.
Since RFC code was more tested, also with CI and some incompatibility
were fixed. On that it's weird that we need Python 3.8 for Qemu but we
still use Python 2 for Xen. Shouldn't we bump requirement to Python 3
even for Xen?

Code boots successfully using:
- BIOS boot;
- EFI boot with Grub2 and ELF file;
- direct EFI boot without Grub.

Code is currently based on "master" branch, currently commit
76a54badf890f56ff72644593c0fbc72138e13aa.

Changes since v1:
- 2 preliminary commits for adjust .gitignore;
- last commit split (one variable at a time);
- lot of style and names changes;
- first commit, now 3/6 had some build changes, more details on
  commit message.

Changes since v2:
- removed merged commits;
- reverted order of 2 commits;
- remove some useless casts;
- added change to comment.

Changes since v3:
- added a preparation commit for Makefiles (mainly written by Andrew Cooper);
- added a comment improvement commit;
- allows also data;
- other minor style changes;
- added some Reviewed-by.

Frediano Ziglio (6):
  x86/boot: Prep work for 32bit object changes
  x86/boot: create a C bundle for 32 bit boot code and use it
  x86/boot: Reuse code to relocate trampoline
  x86/boot: Use boot_vid_info variable directly from C code
  x86/boot: Use trampoline_phys variable directly from C code
  x86/boot: Clarify comment

 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  61 ++++--
 .../x86/boot/{build32.lds => build32.lds.S}   |  41 +++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  49 +----
 xen/arch/x86/boot/reloc-trampoline.c          |  36 +++
 xen/arch/x86/boot/reloc.c                     |  35 +--
 xen/arch/x86/efi/efi-boot.h                   |  15 +-
 xen/tools/combine_two_binaries.py             | 207 ++++++++++++++++++
 9 files changed, 341 insertions(+), 120 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (63%)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
 create mode 100755 xen/tools/combine_two_binaries.py

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818522.1231848 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Gpq-0000Pm-Fv; Mon, 14 Oct 2024 08:53:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818522.1231848; Mon, 14 Oct 2024 08:53: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 1t0Gpq-0000P6-BT; Mon, 14 Oct 2024 08:53:50 +0000
Received: by outflank-mailman (input) for mailman id 818522;
 Mon, 14 Oct 2024 08:53: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Gpo-00086D-IE
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:53: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 d2e7e01e-8a09-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 10:53:47 +0200 (CEST)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2fb4af0b6beso8593321fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:53:47 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2446sm551817766b.206.2024.10.14.01.53.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 01:53:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2e7e01e-8a09-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728896026; x=1729500826; 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=oySDyT4GmL2tsmRjXkrGrh0QdsSZG+8keHHypj0A/K8=;
        b=Gs4f4U4Ug7Ie82u9os/ec70JMWhcVnX5QSa+LqCNITRycmjzf2NwsxuxPHUkDw4dfA
         b9k3mCMvrPH+HhjFPNq3iuClSewe/I02zfYbYbd1t4xL0x3cgteyWWcA0RSsF0CMNWHn
         D/6r8GbJB8JLPzxhdKdDXHubt+ST/yYCK6JgI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728896026; x=1729500826;
        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=oySDyT4GmL2tsmRjXkrGrh0QdsSZG+8keHHypj0A/K8=;
        b=VEEkZI0VQ4YFEXyyW+eWCJkBAgvG/QVznNxTHDwZpxkU1DcqhaSCk/jm9fuwIUYZwl
         GkwrFRIblC38X6UmJKSGKqSOKk0tOFDzgbWzzT/dw1sleVV0jGvrau/ucbI+y9GS/3pJ
         Z47Eewi2nc2Snvreh29CztNMmXqTJOPx8l59ETImfR2eU+LFLNYT2p5PGDXOKtsr1Jjr
         3uEd6kYb4oGXqOEcgyzzkDJP8A3zqLKUW4PM69uqh6oNmFVtGV8KojfcqJROTeJanb/O
         wU4UXmNqUmKHJyzazgSevZsDxAiLkF/CHw32a4XoWjEJcFPW6fCMvHZe49VAwZdpMl3s
         roBQ==
X-Gm-Message-State: AOJu0YytfXtAc2k78J8XmCeq1e/62OaQak0YEIwyk2kfNqS2pCvNuvWE
	EzspUgI5ON2vmH2llFBtbsZANb9aZBUXr9Lohrc7LECxYpexBbmkdBwkHpoh7phGXJBxVvftmg7
	Q
X-Google-Smtp-Source: AGHT+IH9NQoAnD2hbWSP0lmRunEYSkPbvCyiHCPSppmlkL1GMwO06hGOyc9V+oWZYD1MXxkljcKICw==
X-Received: by 2002:a05:651c:2220:b0:2fb:3881:35d5 with SMTP id 38308e7fff4ca-2fb3f2c725emr29536201fa.35.1728896026013;
        Mon, 14 Oct 2024 01:53:46 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v4 3/6] x86/boot: Reuse code to relocate trampoline
Date: Mon, 14 Oct 2024 09:53:29 +0100
Message-Id: <20241014085332.3254546-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Move code from efi-boot.h to a separate, new, reloc-trampoline.c file.
Reuse this new code, compiling it for 32bit as well, to replace assembly
code in head.S doing the same thing.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v3:
- fixed a typo in comment;
- added Reviewed-by.
---
 xen/arch/x86/boot/Makefile           | 12 ++++++----
 xen/arch/x86/boot/build32.lds.S      |  5 ++++
 xen/arch/x86/boot/head.S             | 23 +-----------------
 xen/arch/x86/boot/reloc-trampoline.c | 36 ++++++++++++++++++++++++++++
 xen/arch/x86/efi/efi-boot.h          | 15 ++----------
 5 files changed, 52 insertions(+), 39 deletions(-)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 23ad274c89..ca258a9729 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,12 +1,16 @@
 obj-bin-y += head.o
 obj-bin-y += built_in_32.o
+obj-bin-y += $(obj64)
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
+obj32 += reloc-trampoline.32.o
 
-nocov-y   += $(obj32)
-noubsan-y += $(obj32)
-targets   += $(obj32)
+obj64 := reloc-trampoline.o
+
+nocov-y   += $(obj32) $(obj64)
+noubsan-y += $(obj32) $(obj64)
+targets   += $(obj32) $(obj64)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
@@ -50,7 +54,7 @@ $(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
 		--bin1 $(obj)/built_in_32.other.bin \
 		--bin2 $(obj)/built_in_32.final.bin \
 		--map $(obj)/built_in_32.final.map \
-		--exports cmdline_parse_early,reloc \
+		--exports cmdline_parse_early,reloc,reloc_trampoline32 \
 		--output $@
 
 clean-files := built_in_32.*.bin built_in_32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 50c167aef0..1110880ad4 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -41,6 +41,11 @@ SECTIONS
          * Potentially they should be all variables. */
         DECLARE_IMPORT(__base_relocs_start);
         DECLARE_IMPORT(__base_relocs_end);
+        DECLARE_IMPORT(__trampoline_rel_start);
+        DECLARE_IMPORT(__trampoline_rel_stop);
+        DECLARE_IMPORT(__trampoline_seg_start);
+        DECLARE_IMPORT(__trampoline_seg_stop);
+        DECLARE_IMPORT(trampoline_phys);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0776e3896..ade2c5c43d 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -706,28 +706,7 @@ trampoline_setup:
         mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
 
         /* Apply relocations to bootstrap trampoline. */
-        mov     sym_esi(trampoline_phys), %edx
-        lea     sym_esi(__trampoline_rel_start), %edi
-        lea     sym_esi(__trampoline_rel_stop), %ecx
-1:
-        mov     (%edi), %eax
-        add     %edx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
-
-        /* Patch in the trampoline segment. */
-        shr     $4,%edx
-        lea     sym_esi(__trampoline_seg_start), %edi
-        lea     sym_esi(__trampoline_seg_stop), %ecx
-1:
-        mov     (%edi), %eax
-        mov     %dx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
+        call    reloc_trampoline32
 
         /* Do not parse command line on EFI platform here. */
         cmpb    $0, sym_esi(efi_platform)
diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
new file mode 100644
index 0000000000..0a74c1e75a
--- /dev/null
+++ b/xen/arch/x86/boot/reloc-trampoline.c
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/compiler.h>
+#include <xen/stdint.h>
+#include <asm/trampoline.h>
+
+extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+
+#if defined(__i386__)
+void reloc_trampoline32(void)
+#elif defined (__x86_64__)
+void reloc_trampoline64(void)
+#else
+#error Unknown architecture
+#endif
+{
+    unsigned long phys = trampoline_phys;
+    const int32_t *trampoline_ptr;
+
+    /*
+     * Apply relocations to trampoline.
+     *
+     * This modifies the trampoline in place within Xen, so that it will
+     * operate correctly when copied into place.
+     */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f3443364..1acceec471 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned long delta)
     }
 }
 
-extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+void reloc_trampoline64(void);
 
 static void __init relocate_trampoline(unsigned long phys)
 {
-    const int32_t *trampoline_ptr;
-
     trampoline_phys = phys;
 
     if ( !efi_enabled(EFI_LOADER) )
         return;
 
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+    reloc_trampoline64();
 }
 
 static void __init place_string(u32 *addr, const char *s)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818523.1231855 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Gpq-0000Vd-Sj; Mon, 14 Oct 2024 08:53:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818523.1231855; Mon, 14 Oct 2024 08:53: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 1t0Gpq-0000Uw-Mm; Mon, 14 Oct 2024 08:53:50 +0000
Received: by outflank-mailman (input) for mailman id 818523;
 Mon, 14 Oct 2024 08:53: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Gpo-000862-WA
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:53:48 +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 d3e625df-8a09-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 10:53:48 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a99ebb390a5so291037566b.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:53:48 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2446sm551817766b.206.2024.10.14.01.53.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 01:53:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d3e625df-8a09-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728896028; x=1729500828; 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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=VZASOegr+0HPihLAeEU+kxpkZVIQ+yKWy96TH932Z58r+OKxuVRKJ5UjPsvQqmX/bt
         t62mn39jCTNwZQE2mS+mFFwVPuaLLbVU9UB5F56BRn5/V5yvj2SpNLeI646YQqwEQl/F
         UrbtxIIqypQitUjktuMjA4WT5D2Zq0AQv5o2Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728896028; x=1729500828;
        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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=H3vK+N/FxhfXo2+OL1Z0HDZ4izsbbHbhS0fjgRMMYYnQy7NhVyOJNTphZKDUBo2yau
         Ou0ODyw7MhaJpyLx16HRTCO5rEtCMayN8tSdrIt2/5UUMLm/dtYsAyYDpHHYgWmjNCHr
         PzrXg0D88yqYixyOKRv+EZnQhDYmZb55YaQXug92SPhmxoTbG15ux2mmlRny7dP2VLvE
         xdeD7IcW0e2+csJKzkQlw+bJMcOTy7/x8APHlTGm77p0rHvkbk85gewH4yUyq1HcCJim
         vCkWhjB8CyGFgiKtsCiw5O4/6w39epMsNs4VPS7qDUoFZa+QM3fRp4Xvt7qlmQ7uVxZ0
         pH7Q==
X-Gm-Message-State: AOJu0Yw7kxRTkAHmpbs22+yp7UGDOTryR0BslO+r4KR56zdfEnb2m1jH
	YhIgP2K7GrpJFrJqJ9hcM1/DvNS5DKcfqy/Qm3koI2y7di3vlllSrIkxPa/z1DdeJdbE230FF43
	u
X-Google-Smtp-Source: AGHT+IFj+V1uiM2hGVgK8TpUoL7Vy0uU8dQnXhBfw/jVVNHHTVFzCF12fB6dz2k1PZfFxGX1yqzZdw==
X-Received: by 2002:a17:906:6a01:b0:a99:ee26:f416 with SMTP id a640c23a62f3a-a99ee270d76mr517229666b.14.1728896027803;
        Mon, 14 Oct 2024 01:53:47 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v4 5/6] x86/boot: Use trampoline_phys variable directly from C code
Date: Mon, 14 Oct 2024 09:53:31 +0100
Message-Id: <20241014085332.3254546-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order;
- avoid useless casts.
---
 xen/arch/x86/boot/head.S  | 6 +-----
 xen/arch/x86/boot/reloc.c | 8 ++++++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 5da7ac138f..dcda91cfda 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,13 +510,9 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Get bottom-most low-memory stack address. */
-        mov     sym_esi(trampoline_phys), %ecx
-        add     $TRAMPOLINE_SPACE,%ecx
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
+        /*      reloc(magic/eax, info/edx) using fastcall. */
         call    reloc
 
 #ifdef CONFIG_PVH_GUEST
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 707d9c5f15..e50e161b27 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -19,6 +19,9 @@
 #include <xen/kconfig.h>
 #include <xen/multiboot.h>
 #include <xen/multiboot2.h>
+#include <xen/page-size.h>
+
+#include <asm/trampoline.h>
 
 #include <public/arch-x86/hvm/start_info.h>
 
@@ -344,9 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
+void *reloc(uint32_t magic, uint32_t in)
 {
-    memctx ctx = { trampoline };
+    /* Get bottom-most low-memory stack address. */
+    memctx ctx = { trampoline_phys + TRAMPOLINE_SPACE };
 
     switch ( magic )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818524.1231861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Gpr-0000bb-6r; Mon, 14 Oct 2024 08:53:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818524.1231861; Mon, 14 Oct 2024 08: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 1t0Gpq-0000ZN-Uu; Mon, 14 Oct 2024 08:53:50 +0000
Received: by outflank-mailman (input) for mailman id 818524;
 Mon, 14 Oct 2024 08:53: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Gpp-000862-Qh
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:53:49 +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 d45a0fb5-8a09-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 10:53:49 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a99ebb390a5so291041266b.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:53:49 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2446sm551817766b.206.2024.10.14.01.53.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 01:53:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d45a0fb5-8a09-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728896029; x=1729500829; 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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=S3NzKKMpV40iW4BWaXxT5dxu1M8okJE1cEEPRDmTxjr1s+dzivegcZTtJ6WqTsalF9
         hDy5j9kNEgYTyCTmasb6nkhoBWdJn19WQ+y7X35vaOtXtTkd6DbfF3gUkbSDrCMcMLfX
         VpV+JerDzWQw3TVBxrCVOYlUkDzeW18I7/G48=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728896029; x=1729500829;
        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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=FrHgYpbOJxeb4Lx+bimIvb+yhU3aznLQBKFvVOmPWSbvQaqfU7Xa9N9pgtFHF+6+A5
         5fM8+bI761UOQW/T64Ti/kU2zlvRVkM06A94FAwB0cqZhsUXv852gFdads2ehPKsMKKm
         q16XaXDv82b4eTxpmAAi1D+HlDkp+pj4mxUAqCDtWGsKpGaUlEES1mtyVUyRUt2A577U
         9acZmR1a13IFdqgeVixFIP5ppzyrcKvOzVtWoF+kNJOnclZCkmNm7DfLxBhGZXba4pA4
         rG32LCui0LW+KC508GwDl0H5C3yiTo29u+k0mqx2wmLNBp3d+pYQO9yigARwX3cCznBo
         2Mxw==
X-Gm-Message-State: AOJu0YxW6PBxO5aY5NU6y9qxWgY5E0Iu8hJbSRf+rPwQcdMjlVe0fgH+
	KrgOwAMrNCceQhfOpxuGAST49F/niuwO33hLVit2i3/V17DI8x/1FVznrUQgUSGMWn+nJjYPCHI
	2
X-Google-Smtp-Source: AGHT+IGc3uopgrUcXO4DHv75cFKwBrzFVJ3Kwh7nYK4pEV18S6bEUtErDpN+I2e6t4ivAXmmg7nm9A==
X-Received: by 2002:a17:906:6a07:b0:a99:f9fa:5c01 with SMTP id a640c23a62f3a-a99f9fa6707mr463195766b.32.1728896028631;
        Mon, 14 Oct 2024 01:53:48 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v4 6/6] x86/boot: Clarify comment
Date: Mon, 14 Oct 2024 09:53:32 +0100
Message-Id: <20241014085332.3254546-7-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/reloc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index e50e161b27..e725cfb6eb 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -65,7 +65,7 @@ typedef struct memctx {
     /*
      * Simple bump allocator.
      *
-     * It starts from the base of the trampoline and allocates downwards.
+     * It starts on top of space reserved for the trampoline and allocates downwards.
      */
     uint32_t ptr;
 } memctx;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 08:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 08:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818519.1231819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Gpn-00089d-LS; Mon, 14 Oct 2024 08:53:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818519.1231819; Mon, 14 Oct 2024 08:53: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 1t0Gpn-000896-FM; Mon, 14 Oct 2024 08:53:47 +0000
Received: by outflank-mailman (input) for mailman id 818519;
 Mon, 14 Oct 2024 08:53: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Gpm-000862-Vr
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 08:53:47 +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 d27c7779-8a09-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 10:53:46 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a99eb8b607aso227188766b.2
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 01:53:46 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99a80f2446sm551817766b.206.2024.10.14.01.53.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 01:53:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d27c7779-8a09-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728896025; x=1729500825; 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=uF49wRium9i4EoXLYTW2SLTmEeikurwbqD9tKvn/ty4=;
        b=COvIKQ+KWp3XB3Fq0Qf/jwzqqX/tNqqrruZT/EMz/FU4Xnrb5R1/rsUah57TnTx87U
         mfgvrLr+5KuHNvuGuA1MOvV+GkI+D2h/IRLM/WlyWj1vmXQ/ACqHHqCJZX5FBirCAuEy
         xRGDpuPmJ4QFnWX6GhEXAen8W3HvVhCnlkNT8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728896025; x=1729500825;
        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=uF49wRium9i4EoXLYTW2SLTmEeikurwbqD9tKvn/ty4=;
        b=nmEDRPH8dc3TW9z4fcM0p8Q1oAhAIVGoYkmGQA+rJtKibt8vosv+YtbIwwA/CGAyL6
         EnmuA/okBdt4LeELXTeMdHqf3a/wHHqHshG/KiF9b2n0VFPZIJYrB9cIf0kCogiWIoH7
         b9NCfkb6Hp5BGRBBABiaIZSiNaSBxcHy/K2VjhPbv2sH9dDkO+qg9BOCZ9lxArFCdlqj
         3V4Iu2DsPwn7T6v5Uxs3VKrswtSnFVtP0X+VhkX/x0jcMKmG6rn1h0PreCq0Lqm3fpH8
         Y8EmKdyEV25+nenqBlEPT0bpggSncPrMxtXPuHDcJ23CCfd1nAeh7+VBk870PMBHzPk4
         4P2w==
X-Gm-Message-State: AOJu0Ywv4FCuwXjXF30zQwS7+1nVXg04mGN8rIBJ4/Km6TY+5EUJRC2E
	M+Ek9SIGH861C+RZBws2JjLQXxpNNWAWpO9yrtH2Gmwmp4Nu2PHKsGk9M3xJdBqSilHsFskc1pv
	h
X-Google-Smtp-Source: AGHT+IH5ZbWN//oAAR1E4EBGs18FbAmIUsa7vCFIn2id5C5jlMOVBB9J9wqwvM57wwc+bXFYmWcktg==
X-Received: by 2002:a17:907:84d:b0:a99:e939:d69e with SMTP id a640c23a62f3a-a99e939d95bmr684155466b.51.1728896025231;
        Mon, 14 Oct 2024 01:53:45 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code and use it
Date: Mon, 14 Oct 2024 09:53:28 +0100
Message-Id: <20241014085332.3254546-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The current method to include 32 bit C boot code is:
- compile each function we want to use into a separate object file;
- each function is compiled with -fpic option;
- convert these object files to binary files. This operation removes GOP
  which we don't want in the executable;
- a small assembly part in each file add the entry point;
- code can't have external references, all possible variables are passed
  by value or pointer;
- include these binary files in head.S.

There are currently some limitations:
- code is compiled separately, it's not possible to share a function
  (like memcpy) between different functions to use;
- although code is compiled with -fpic there's no certainty there are
  no relocations, specifically data ones. This can lead into hard to
  find bugs;
- it's hard to add a simple function;
- having to pass external variables makes hard to do multiple things
  otherwise functions would require a lot of parameters so code would
  have to be split into multiple functions which is not easy.

Current change extends the current process:
- all object files are linked together before getting converted making
  possible to share code between the function we want to call;
- a single object file is generated with all functions to use and
  exported symbols to easily call;
- variables to use are declared in linker script and easily used inside
  C code. Declaring them manually could be annoying but makes also
  easier to check them. Using external pointers can be still an issue if
  they are not fixed. If an external symbol is not declared this gives a
  link error.

Some details of the implementation:
- C code is compiled with -fpic flags (as before);
- object files from C code are linked together;
- the single bundled object file is linked with 2 slightly different
  script files to generate 2 bundled object files;
- the 2 bundled object files are converted to binary removing the need
  for global offset tables;
- a Python script is used to generate assembly source from the 2
  binaries;
- the single assembly file is compiled to generate final bundled object
  file;
- to detect possible unwanted relocation in data/code code is generated
  with different addresses. This is enforced starting .text section at
  different positions and adding a fixed "gap" at the beginning.
  This makes sure code and data is position independent;
- to detect used symbols in data/code symbols are placed in .text
  section at different offsets (based on the line in the linker script).
  This is needed as potentially a reference to a symbol is converted to
  a reference to the containing section so multiple symbols could be
  converted to reference to same symbol (section name) and we need to
  distinguish them;
- --orphan-handling=error option to linker is used to make sure we
  account for all possible sections from C code;

Current limitations:
- the main one is the lack of support for 64 bit code. It would make
  sure that even the code used for 64 bit (at the moment EFI code) is
  code and data position independent. We cannot assume that code that
  came from code compiled for 32 bit and compiled for 64 bit is code and
  data position independent, different compiler options lead to
  different code/data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v2:
- removed W^X limitation, allowing data;
- added some comments to python script;
- added extension to python script;
- added header to generated assembly code from python script;
- added starting symbol to generated assembly code from python script
  to make disassembly more clear;
- other minor style changes to python script.
---
 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  38 +++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  35 ++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  12 -
 xen/arch/x86/boot/reloc.c                     |  14 --
 xen/tools/combine_two_binaries.py             | 207 ++++++++++++++++++
 7 files changed, 268 insertions(+), 55 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (70%)
 create mode 100755 xen/tools/combine_two_binaries.py

diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
index a379db7988..ebad650e5c 100644
--- a/xen/arch/x86/boot/.gitignore
+++ b/xen/arch/x86/boot/.gitignore
@@ -1,3 +1,4 @@
 /mkelf32
-/*.bin
-/*.lnk
+/build32.*.lds
+/built_in_32.*.bin
+/built_in_32.*.map
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 1199291d2b..23ad274c89 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,4 +1,5 @@
 obj-bin-y += head.o
+obj-bin-y += built_in_32.o
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
@@ -9,9 +10,6 @@ targets   += $(obj32)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
-$(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(obj32:.32.o=.bin)
-
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
 CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
@@ -25,14 +23,34 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
 $(obj)/%.32.o: $(src)/%.c FORCE
 	$(call if_changed_rule,cc_o_c)
 
+orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
 LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
 
-%.bin: %.lnk
-	$(OBJCOPY) -j .text -O binary $< $@
-
-%.lnk: %.32.o $(src)/build32.lds
-	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
-
-clean-files := *.lnk *.bin
+$(obj)/build32.final.lds: AFLAGS-y += -DFINAL
+$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S FORCE
+	$(call if_changed_dep,cpp_lds_S)
+
+# link all 32bit objects together
+$(obj)/built_in_32.tmp.o: $(obj32)
+	$(LD32) -r -o $@ $^
+
+$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.tmp.o
+## link bundle with a given layout
+	$(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
+## extract binaries from object
+	$(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
+	rm -f $(obj)/built_in_32.$(*F).o
+
+# generate final object file combining and checking above binaries
+$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
+	$(PYTHON) $(srctree)/tools/combine_two_binaries.py \
+		--script $(obj)/build32.final.lds \
+		--bin1 $(obj)/built_in_32.other.bin \
+		--bin2 $(obj)/built_in_32.final.bin \
+		--map $(obj)/built_in_32.final.map \
+		--exports cmdline_parse_early,reloc \
+		--output $@
+
+clean-files := built_in_32.*.bin built_in_32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
similarity index 70%
rename from xen/arch/x86/boot/build32.lds
rename to xen/arch/x86/boot/build32.lds.S
index 56edaa727b..50c167aef0 100644
--- a/xen/arch/x86/boot/build32.lds
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -15,22 +15,47 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-ENTRY(_start)
+#ifdef FINAL
+# define GAP 0
+# define MULT 0
+# define TEXT_START
+#else
+# define GAP 0x010200
+# define MULT 1
+# define TEXT_START 0x408020
+#endif
+# define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
+
+ENTRY(dummy_start)
 
 SECTIONS
 {
   /* Merge code and data into one section. */
-  .text : {
+  .text TEXT_START : {
+        /* Silence linker warning, we are not going to use it */
+        dummy_start = .;
+
+        /* Declare below any symbol name needed.
+         * Each symbol should be on its own line.
+         * It looks like a tedious work but we make sure the things we use.
+         * Potentially they should be all variables. */
+        DECLARE_IMPORT(__base_relocs_start);
+        DECLARE_IMPORT(__base_relocs_end);
+        . = . + GAP;
         *(.text)
         *(.text.*)
-        *(.data)
-        *(.data.*)
         *(.rodata)
         *(.rodata.*)
+        *(.data)
+        *(.data.*)
         *(.bss)
         *(.bss.*)
   }
-
+  /DISCARD/ : {
+       *(.comment)
+       *(.comment.*)
+       *(.note.*)
+  }
   /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
   .got : {
         *(.got)
diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index fc9241ede9..196c580e91 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -18,18 +18,6 @@
  * Linux kernel source (linux/lib/string.c).
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax      = &cmdline,
- *   - %edx      = &early_boot_opts.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  cmdline_parse_early      \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/kconfig.h>
 #include <xen/macros.h>
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index c4de1dfab5..e0776e3896 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -759,18 +759,6 @@ trampoline_setup:
         /* Jump into the relocated trampoline. */
         lret
 
-        /*
-         * cmdline and reloc are written in C, and linked to be 32bit PIC with
-         * entrypoints at 0 and using the fastcall convention.
-         */
-FUNC_LOCAL(cmdline_parse_early)
-        .incbin "cmdline.bin"
-END(cmdline_parse_early)
-
-FUNC_LOCAL(reloc)
-        .incbin "reloc.bin"
-END(reloc)
-
 ENTRY(trampoline_start)
 #include "trampoline.S"
 ENTRY(trampoline_end)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 8c58affcd9..94b078d7b1 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -12,20 +12,6 @@
  *    Daniel Kiper <daniel.kiper@oracle.com>
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax       = MAGIC,
- *   - %edx       = INFORMATION_ADDRESS,
- *   - %ecx       = TOPMOST_LOW_MEMORY_STACK_ADDRESS.
- *   - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  reloc                    \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/macros.h>
 #include <xen/types.h>
diff --git a/xen/tools/combine_two_binaries.py b/xen/tools/combine_two_binaries.py
new file mode 100755
index 0000000000..138c59287e
--- /dev/null
+++ b/xen/tools/combine_two_binaries.py
@@ -0,0 +1,207 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+import argparse
+import re
+import struct
+import sys
+
+parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
+parser.add_argument('--script', dest='script',
+                    required=True,
+                    help='Linker script for extracting symbols')
+parser.add_argument('--bin1', dest='bin1',
+                    required=True,
+                    help='First binary')
+parser.add_argument('--bin2', dest='bin2',
+                    required=True,
+                    help='Second binary')
+parser.add_argument('--output', dest='output',
+                    help='Output file')
+parser.add_argument('--map', dest='mapfile',
+                    help='Map file to read for symbols to export')
+parser.add_argument('--exports', dest='exports',
+                    help='Symbols to export')
+parser.add_argument('--section-header', dest='section_header',
+                    default='.section .init.text, "ax", @progbits',
+                    help='Section header declaration')
+parser.add_argument('-v', '--verbose',
+                    action='store_true')
+args = parser.parse_args()
+
+gap = 0x010200
+text_diff = 0x408020
+
+# Parse linker script for external symbols to use.
+# Next regex matches expanded DECLARE_IMPORT lines in linker script.
+symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')
+symbols = {}
+lines = {}
+for line in open(args.script):
+    m = symbol_re.match(line)
+    if not m:
+        continue
+    (name, line_num) = (m.group(1), int(m.group(2)))
+    if line_num == 0:
+        raise Exception("Invalid line number found:\n\t" + line)
+    if line_num in symbols:
+        raise Exception("Symbol with this line already present:\n\t" + line)
+    if name in lines:
+        raise Exception("Symbol with this name already present:\n\t" + name)
+    symbols[line_num] = name
+    lines[name] = line_num
+
+exports = []
+if args.exports is not None:
+    exports = dict([(name, None) for name in args.exports.split(',')])
+
+# Parse mapfile, look for ther symbols we want to export.
+if args.mapfile is not None:
+    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
+    for line in open(args.mapfile):
+        m = symbol_re.match(line)
+        if not m or m.group(2) not in exports:
+            continue
+        addr = int(m.group(1), 16)
+        exports[m.group(2)] = addr
+for (name, addr) in exports.items():
+    if addr is None:
+        raise Exception("Required export symbols %s not found" % name)
+
+file1 = open(args.bin1, 'rb')
+file2 = open(args.bin2, 'rb')
+file1.seek(0, 2)
+size1 = file1.tell()
+file2.seek(0, 2)
+size2 = file2.tell()
+if size1 > size2:
+    file1, file2 = file2, file1
+    size1, size2 = size2, size1
+if size2 != size1 + gap:
+    raise Exception('File sizes do not match')
+
+file1.seek(0, 0)
+data1 = file1.read(size1)
+file2.seek(gap, 0)
+data2 = file2.read(size1)
+
+max_line = max(symbols.keys())
+
+def to_int32(n):
+    '''Convert a number to signed 32 bit integer truncating if needed'''
+    mask = (1 << 32) - 1
+    h = 1 << 31
+    return (n & mask) ^ h - h
+
+i = 0
+references = {}
+internals = 0
+while i <= size1 - 4:
+    n1 = struct.unpack('<I', data1[i:i+4])[0]
+    n2 = struct.unpack('<I', data2[i:i+4])[0]
+    i += 1
+    # The two numbers are the same, no problems
+    if n1 == n2:
+        continue
+    # Try to understand why they are different
+    diff = to_int32(n1 - n2)
+    if diff == -gap: # this is an internal relocation
+        pos = i - 1
+        print("Internal relocation found at position %#x "
+              "n1=%#x n2=%#x diff=%#x" % (pos, n1, n2, diff),
+              file=sys.stderr)
+        i += 3
+        internals += 1
+        if internals >= 10:
+            break
+        continue
+    # This is a relative relocation to a symbol, accepted, code/data is
+    # relocatable.
+    if diff < gap and diff >= gap - max_line:
+        n = gap - diff
+        symbol = symbols.get(n)
+        # check we have a symbol
+        if symbol is None:
+            raise Exception("Cannot find symbol for line %d" % n)
+        pos = i - 1
+        if args.verbose:
+            print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
+        i += 3
+        references[pos] = symbol
+        continue
+    # First byte is the same, move to next byte
+    if diff & 0xff == 0 and i <= size1 - 4:
+       continue
+    # Probably a type of relocation we don't want or support
+    pos = i - 1
+    suggestion = ''
+    symbol = symbols.get(-diff - text_diff)
+    if symbol is not None:
+        suggestion = " Maybe %s is not defined as hidden?" % symbol
+    raise Exception("Unexpected difference found at %#x "
+                    "n1=%#x n2=%#x diff=%#x gap=%#x.%s" % \
+                    (pos, n1, n2, diff, gap, suggestion))
+if internals != 0:
+    raise Exception("Previous relocations found")
+
+def line_bytes(buf, out):
+    '''Output an assembly line with all bytes in "buf"'''
+    # Python 2 compatibility
+    if type(buf) == str:
+        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
+    else:
+        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)
+
+def part(start, end, out):
+    '''Output bytes of "data" from "start" to "end"'''
+    while start < end:
+        e = min(start + 16, end)
+        line_bytes(data1[start:e], out)
+        start = e
+
+def reference(pos, out):
+    name = references[pos]
+    n = struct.unpack('<I', data1[pos:pos+4])[0]
+    sign = '+'
+    if n >= (1 << 31):
+        n -= (1 << 32)
+    n += pos
+    if n < 0:
+        n = -n
+        sign = '-'
+    print("\t.hidden %s\n"
+          "\t.long %s %s %#x - ." % (name, name, sign, n),
+          file=out)
+
+def output(out):
+    prev = 0
+    exports_by_addr = {}
+    for (sym, addr) in exports.items():
+        exports_by_addr.setdefault(addr, []).append(sym)
+    positions = list(references.keys())
+    positions += list(exports_by_addr.keys())
+    for pos in sorted(positions):
+        part(prev, pos, out)
+        prev = pos
+        if pos in references:
+            reference(pos, out)
+            prev = pos + 4
+        if pos in exports_by_addr:
+            for sym in exports_by_addr[pos]:
+                print("\t.global %s\n"
+                      "\t.hidden %s\n"
+                      "%s:" % (sym, sym, sym),
+                      file=out)
+    part(prev, size1, out)
+
+out = sys.stdout
+if args.output is not None:
+    out = open(args.output, 'w')
+print('''/*
+ * File autogenerated by combine_two_binaries.py DO NOT EDIT
+ */''', file=out)
+print('\t' + args.section_header, file=out)
+print('obj_start:', file=out)
+output(out)
+print('\n\t.section\t.note.GNU-stack,"",@progbits', file=out)
+out.flush()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 09:12:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 09:12:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818574.1231885 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0H7f-0006Y1-Mo; Mon, 14 Oct 2024 09:12:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818574.1231885; Mon, 14 Oct 2024 09: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 1t0H7f-0006Xu-Hz; Mon, 14 Oct 2024 09:12:15 +0000
Received: by outflank-mailman (input) for mailman id 818574;
 Mon, 14 Oct 2024 09:12: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=YPQf=RK=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0H7d-0006Xo-O3
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 09:12:13 +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 650b9561-8a0c-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 11:12:12 +0200 (CEST)
Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com
 [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-552-_HQKFDXmM1SjsZa0pWFkfQ-1; Mon, 14 Oct 2024 05:12:09 -0400
Received: by mail-ej1-f71.google.com with SMTP id
 a640c23a62f3a-a93d0b27d37so357971266b.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 02:12:08 -0700 (PDT)
Received: from ?IPv6:2001:16b8:2d37:9800:1d57:78cf:c1ae:b0b3?
 (200116b82d3798001d5778cfc1aeb0b3.dip.versatel-1u1.de.
 [2001:16b8:2d37:9800:1d57:78cf:c1ae:b0b3])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a99f07c842csm290736366b.54.2024.10.14.02.12.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 02:12:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 650b9561-8a0c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1728897130;
	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=fo2G+KnEW2lnFj+6WF9Ml+ygqa1ze/YVj7KYt9dN/M0=;
	b=SNgxb5CehU3QIEbj9YSlMEamnAUpbpzzoqnX0Ama2Ay9LTIbmU6fFZGk8u0W+xSRXRqEsW
	jWyvO4Ps3HVztilzjEkEemLpSModifL76Ob1nAmAnj13PrsSOzqPtXnVtQ0GW9CQfhEP9/
	7d03rtVgIndRU+KWk0IVGQMJBPC5yu4=
X-MC-Unique: _HQKFDXmM1SjsZa0pWFkfQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728897128; x=1729501928;
        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=efYEDzJoXvnSDmPZhcwgS+G1MqF2s5kTREhSaGYut/4=;
        b=QbvzTWokvFN1ke4nXhBC56fwp6dlXcu6t7VCu4Y7z+PNUbY89b4PH6fXeTbV+pz2kp
         czY93oAhO+1B0O0hx79UfKhJJSm2uKZQY1p8sPGvPZfB4qga4zdNRZnqYX1uHDZHJKiF
         cC8+AcuRlpgZRW2k1AeN7MVSnQCgToBh82SM7tPXmPEjMW7yU0MQ8X1eG4l1308GHU4d
         DoG+2RflDdorjcSl3IkJmkItB3MSaGWHoM+0a6SNZLb2TZKtnIhOZyk0M7hnBKdThKaN
         GcbfObO1rFvfT+EIqTaz63shqoprhoAHtOsqkxT66nrS3olkZbTlJRE8TZiIflziNmEy
         PMeg==
X-Forwarded-Encrypted: i=1; AJvYcCUpcJzw+BBmwuRs8r1QmPImau9WApEYtbi6X5y0dcILP6MQU9rX7jDijuyRHDNVDK0lyO4I+wpuKEY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzytmNq8QwOJdH1iA7seI2YcGFkvATX1DV4d7YHhjW9AuuVuQux
	OnvVitA/1Wi4kf0T7zzP9cq6GZ/ezJYtSL5DQ+1LNfS04eT1g6D4n25TJ3d2BWyT6cltupOElKf
	b+SBLbztkur/phUr5EeHSDT8ZYxRliUpeRK+F5GFMNNcGEyDIU6IrmCOLDISA9Q1d
X-Received: by 2002:a17:907:9611:b0:a99:36ab:d843 with SMTP id a640c23a62f3a-a99b940ff26mr1050657466b.38.1728897127746;
        Mon, 14 Oct 2024 02:12:07 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFnnCmW/otcj2gQQZVhAW9woFCE4udOO76Y7RHXvuu8hpYM4Kp8213Cwui9o9/A0ZQF2FNuJw==
X-Received: by 2002:a17:907:9611:b0:a99:36ab:d843 with SMTP id a640c23a62f3a-a99b940ff26mr1050652366b.38.1728897127228;
        Mon, 14 Oct 2024 02:12:07 -0700 (PDT)
Message-ID: <3515493a0d0dd8f1b7df5a5677042946325ea6a8.camel@redhat.com>
Subject: Re: [RFC PATCH 01/13] PCI: Prepare removing devres from pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Mario Limonciello <mario.limonciello@amd.com>, Chen
 Ni <nichen@iscas.ac.cn>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Hannes Reinecke <hare@suse.de>, John Garry
 <john.g.garry@oracle.com>, Soumya Negi <soumya.negi97@gmail.com>, Jason
 Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>, "Dr. David Alan
 Gilbert" <linux@treblig.org>, Christian Brauner <brauner@kernel.org>, Ankit
 Agrawal <ankita@nvidia.com>, Reinette Chatre <reinette.chatre@intel.com>,
 Eric Auger <eric.auger@redhat.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 Marc Zyngier <maz@kernel.org>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org,  linux-input@vger.kernel.org,
 netdev@vger.kernel.org,  linux-wireless@vger.kernel.org,
 ntb@lists.linux.dev, linux-pci@vger.kernel.org, 
 linux-staging@lists.linux.dev, kvm@vger.kernel.org, 
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Mon, 14 Oct 2024 11:12:03 +0200
In-Reply-To: <ZwktO8AUmFEakhVP@smile.fi.intel.com>
References: <20241009083519.10088-1-pstanner@redhat.com>
	 <20241009083519.10088-2-pstanner@redhat.com>
	 <ZwfnULv2myACxnVb@smile.fi.intel.com>
	 <f65e9fa01a1947782fc930876e5f84174408db67.camel@redhat.com>
	 <ZwktO8AUmFEakhVP@smile.fi.intel.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Fri, 2024-10-11 at 16:50 +0300, Andy Shevchenko wrote:
> On Fri, Oct 11, 2024 at 02:16:06PM +0200, Philipp Stanner wrote:
> > On Thu, 2024-10-10 at 17:40 +0300, Andy Shevchenko wrote:
> > > On Wed, Oct 09, 2024 at 10:35:07AM +0200, Philipp Stanner wrote:
> > > > pci_intx() is a hybrid function which sometimes performs devres
> > > > operations, depending on whether pcim_enable_device() has been
> > > > used
> > > > to
> > > > enable the pci_dev. This sometimes-managed nature of the
> > > > function
> > > > is
> > > > problematic. Notably, it causes the function to allocate under
> > > > some
> > > > circumstances which makes it unusable from interrupt context.
> > > >=20
> > > > To, ultimately, remove the hybrid nature from pci_intx(), it is
> > > > first
> > > > necessary to provide an always-managed and a never-managed
> > > > version
> > > > of that function. Then, all callers of pci_intx() can be ported
> > > > to
> > > > the
> > > > version they need, depending whether they use
> > > > pci_enable_device()
> > > > or
> > > > pcim_enable_device().
>=20
> > > > An always-managed function exists, namely pcim_intx(), for
> > > > which
> > > > __pcim_intx(), a never-managed version of pci_intx() had been
> > > > implemented.
> > >=20
> > > > Make __pcim_intx() a public function under the name
> > > > pci_intx_unmanaged(). Make pcim_intx() a public function.
>=20
> It seems I got confused by these two paragraphs. Why the double
> underscored
> function is even mentioned here?

It's mentioned because it's being moved.

>=20
> > > To avoid an additional churn we can make just completely new
> > > APIs,
> > > namely:
> > > pcim_int_x()
> > > pci_int_x()
> > >=20
> > > You won't need all dirty dances with double underscored function
> > > naming and
> > > renaming.
> >=20
> > =C3=84hm.. I can't follow. The new version doesn't use double
> > underscores
> > anymore. __pcim_intx() is being removed, effectively.
> > After this series, we'd end up with a clean:
> >=20
> > =09pci_intx() <-> pcim_intx()
> >=20
> > just as in the other PCI APIs.
>=20
> ...
>=20
> > > > +=09pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> > > > +
> > > > +=09if (enable)
> > > > +=09=09new =3D pci_command & ~PCI_COMMAND_INTX_DISABLE;
> > > > +=09else
> > > > +=09=09new =3D pci_command | PCI_COMMAND_INTX_DISABLE;
> > > > +
> > > > +=09if (new !=3D pci_command)
> > >=20
> > > I would use positive conditionals as easy to read (yes, a couple
> > > of
> > > lines
> > > longer, but also a win is the indentation and avoiding an
> > > additional
> > > churn in
> > > the future in case we need to add something in this branch.
> >=20
> > I can't follow. You mean:
> >=20
> > if (new =3D=3D pci_command)
> > =C2=A0=C2=A0=C2=A0 return;
> >=20
> > ?
> >=20
> > That's exactly the same level of indentation.
>=20
> No, the body gets one level off.
>=20
> > Plus, I just copied the code.
> >=20
> > > > +=09=09pci_write_config_word(pdev, PCI_COMMAND, new);
>=20
> =09if (new =3D=3D pci_command)
> =09=09return;
>=20
> =09pci_write_config_word(pdev, PCI_COMMAND, new);
>=20
> See the difference?
> Also, imaging adding a new code in your case:
>=20
> =09if (new !=3D pci_command)
> =09=09pci_write_config_word(pdev, PCI_COMMAND, new);
>=20
> =3D=3D>
>=20
> =09if (new !=3D pci_command) {
> =09=09...foo...
> =09=09pci_write_config_word(pdev, PCI_COMMAND, new);
> =09=09...bar...
> =09}
>=20
> And in mine:
>=20
> =09if (new =3D=3D pci_command)
> =09=09return;
>=20
> =09...foo...
> =09pci_write_config_word(pdev, PCI_COMMAND, new);
> =09...bar...
>=20
> I hope it's clear now what I meant.

It is clear.. I'm not necessarily convinced that it's better to review
than just copying the pre-existing code, but if you really want it we
can do it I guess.

P.



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 10:19:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 10:19:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818592.1231893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0IAd-0007Mq-C2; Mon, 14 Oct 2024 10:19:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818592.1231893; Mon, 14 Oct 2024 10: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 1t0IAd-0007Mj-9V; Mon, 14 Oct 2024 10:19:23 +0000
Received: by outflank-mailman (input) for mailman id 818592;
 Mon, 14 Oct 2024 10:19: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0IAb-0007Md-LF
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 10:19:21 +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 c5f7f599-8a15-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 12:19:19 +0200 (CEST)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-37d4a5ecc44so2907773f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 03:19:19 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b6a8666sm10969563f8f.22.2024.10.14.03.19.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 03:19:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5f7f599-8a15-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728901159; x=1729505959; 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=GcZH8WjYoCDhbNDs9fcacHV9uOJXUKSKX169h2r10xM=;
        b=gLRCWdUOVJO9RIA2oYtjxKNcvsZ8G+oF7kFnYknqcoXiDMHliig/FkR6IvW+k1AFd+
         XpodZRQ2fXzt3j/c59hn8EFr+Mfy+tilYywRIJMWC6KIvNvIHfI1RzgQUX2th+yPDv3j
         iQ0TYxQjk0JJxZeJGByMkH/+AagTInl+5vrMcvXVszetQdFmt/zfx2acBVB5bacMPBW5
         ujEIHtGcsyQoiDhJg8rDh+8bgi6cEQlC75JjZmbXm37plHHdlayXDxT/CYsXnEYVm0D1
         +3Gm4RStG3wXU2AkO+iFGBOnSxu/GBh2kG9X+bX8jm5LGc60Cx1W8uC17XtSTJjq/BM4
         Ogyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728901159; x=1729505959;
        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=GcZH8WjYoCDhbNDs9fcacHV9uOJXUKSKX169h2r10xM=;
        b=Mu1pg98iPiGOXSbRTTypa8fLfiuS2Mi+YRV3b/rAIaA8D3esP72jGUouezltqn7bPs
         KviIxettW5rQMuWs9Rf+HD5EBZl3+oLL0q+9TfoOgMAOz1tT5YbhqZw7G8t14NTAqcp6
         J3VJMZs8OuHhjSMRFykc2tzioLoH8+V4ru/Ma5Xc7I5IvItD/CfFTf6qRoLvtsE7/Crq
         2EgCKzCRUPjj69QLj++1BqljqmrypfwBpjOFvks9iryZIxEGEC0TFz6HDHalLE2aU07D
         0DwkojRUJnLAAS6ziaCYEcJyhBKY7opjkwoeRrPm5sV7/W4b2C8SuoEF7dsd+BiIYuCF
         PnpQ==
X-Forwarded-Encrypted: i=1; AJvYcCWeenN/NMQlb4bvlGDihx/3oHevnwLH5mENbubwYhw53qx2zsE495FSeenqsl+y21RfDt1GlaxzdMs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwbiYPwGYLtwW8d60sDI19GIvK3d+ZaN3dhx5xz4ER1spwkDJBX
	9Z+o+G7TArHM0GWO79qr2fiC5K/RXsQ1Qqy8Jk2WUCl3IcQk9+eqMgr1sykBxQ==
X-Google-Smtp-Source: AGHT+IG1qHScwMLhBiMpVbGsop8Ga3gqkm68B4nN07lmb1OX8EU6NEnW5WWy+A+amNTr+BfNnq7aHw==
X-Received: by 2002:a05:6000:1d0:b0:374:cd3e:7d98 with SMTP id ffacd0b85a97d-37d551e3caamr8076676f8f.19.1728901158724;
        Mon, 14 Oct 2024 03:19:18 -0700 (PDT)
Message-ID: <8cb656c9-937e-4ffa-b5fd-a49f7a341c26@suse.com>
Date: Mon, 14 Oct 2024 12:19:17 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: increment domctl interface version
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Julien Grall <julien@xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
 <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.com>
 <2082c6ea-c778-444f-ad5f-15f25b87ba10@suse.com>
 <ea126b93-add2-415a-8a51-5b55ffcdd21e@suse.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: <ea126b93-add2-415a-8a51-5b55ffcdd21e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14.10.2024 10:00, Jürgen Groß wrote:
> On 14.10.24 09:46, Jan Beulich wrote:
>> On 14.10.2024 09:36, Jürgen Groß wrote:
>>> On 14.10.24 09:14, Jan Beulich wrote:
>>>> On 14.10.2024 09:06, Juergen Gross wrote:
>>>>> The recent addition of the XEN_DOMCTL_dt_overlay function was missing
>>>>> the related update of XEN_DOMCTL_INTERFACE_VERSION, as it has been the
>>>>> first interface change of the 4.20 release cycle.
>>>>>
>>>>> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
>>>>
>>>> I'm confused: That change (a) pre-dates the branching of 4.20 and (b)
>>>> bumped the version ...
>>>>
>>>>> --- 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 0x00000017
>>>>> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
>>>>
>>>> ... from 0x16 to 0x17. And for no apparent reason, as plain additions don't
>>>> require a bump. Did you maybe mean to reference a different commit?
>>>
>>> Oh, indeed. I wanted to reference d6e9a2aab39e.
>>>
>>> And regarding to "plain additions don't require a bump": 4c733873b5c2 did
>>> a plain addition and bumped the version.
>>
>> Right, hence why I said "for no apparent reason".
> 
> There seems to be a lack of documentation in this regard.
> 
> Julien explicitly asked for the bump for that addition.

Julien - why was that? Bumps are needed only for backwards incompatible
changes. Plain additions therefore never require a bump. As as we get
better with properly checking e.g. padding fields, the frequency of
required bumps should also further reduce.

> I'm fine with dropping my patch if others agree that the bump isn't needed.
> In that case I'll send another one adding a comment for the mechanics of
> interface version bump in domctl.h and sysctl.h.

Oh, yes, please feel free to do so.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 10:33:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 10:33:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818600.1231903 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0IO6-0001d5-H0; Mon, 14 Oct 2024 10:33:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818600.1231903; Mon, 14 Oct 2024 10:33: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 1t0IO6-0001cy-EO; Mon, 14 Oct 2024 10:33:18 +0000
Received: by outflank-mailman (input) for mailman id 818600;
 Mon, 14 Oct 2024 10:33: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=pOqc=RK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t0IO4-0001cp-Dg
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 10:33:16 +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 b78566ed-8a17-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 12:33:14 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 8AB3B21D74;
 Mon, 14 Oct 2024 10:33:13 +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 55AB513A42;
 Mon, 14 Oct 2024 10:33:13 +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 K3d8E2nzDGcMHQAAD6G6ig
 (envelope-from <jgross@suse.com>); Mon, 14 Oct 2024 10:33: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: b78566ed-8a17-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728901993; 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=F3NcqtA/g5gMvUSBSq5eYxVRbnCj0PZ15XHV5ZXyr6M=;
	b=WbnIGsfEl0nKalA/ZV2NE0E8AA3jaW5ycS2a0zIzojwqWvedamD/SmQmgCyHfG7o+9zBU8
	W6XFXeIti95XlCFxNTx69RtURAMaZoAMe4lrj4MsKzp6RocMSRnkafkjkvGjBud2j+fWoT
	GkSCtAbYSwt5z7n0PqNkxU7aF6Xh4m0=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1728901993; 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=F3NcqtA/g5gMvUSBSq5eYxVRbnCj0PZ15XHV5ZXyr6M=;
	b=WbnIGsfEl0nKalA/ZV2NE0E8AA3jaW5ycS2a0zIzojwqWvedamD/SmQmgCyHfG7o+9zBU8
	W6XFXeIti95XlCFxNTx69RtURAMaZoAMe4lrj4MsKzp6RocMSRnkafkjkvGjBud2j+fWoT
	GkSCtAbYSwt5z7n0PqNkxU7aF6Xh4m0=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] xen/public: add comments regarding interface version bumps
Date: Mon, 14 Oct 2024 12:33:11 +0200
Message-ID: <20241014103311.31272-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

domctl.h and sysctl.h have an interface version, which needs to be
bumped in case of incompatible modifications of the interface.

In order to avoid misunderstandings, add a comment to both headers
specifying in which cases a bump is needed.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 xen/include/public/domctl.h | 10 ++++++++++
 xen/include/public/sysctl.h | 10 ++++++++++
 2 files changed, 20 insertions(+)

diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index e1028fc524..353f831e40 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -21,6 +21,16 @@
 #include "hvm/save.h"
 #include "memory.h"
 
+/*
+ * The interface version needs to be incremented by 1 in case the interface
+ * is modified in an incompatible way AND if the version hasn't been
+ * incremented in the current development cycle already.
+ * Pure additions (e.g. new sub-commands) or compatible interface changes
+ * (e.g. adding semantics to 0-checked input fields or data to zeroed output
+ * fields) don't require a change of the version.
+ *
+ * Last version bump: Xen 4.19
+ */
 #define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
 
 /*
diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h
index b2a5a724db..b0fec271d3 100644
--- a/xen/include/public/sysctl.h
+++ b/xen/include/public/sysctl.h
@@ -18,6 +18,16 @@
 #include "domctl.h"
 #include "physdev.h"
 
+/*
+ * The interface version needs to be incremented by 1 in case the interface
+ * is modified in an incompatible way AND if the version hasn't been
+ * incremented in the current development cycle already.
+ * Pure additions (e.g. new sub-commands) or compatible interface changes
+ * (e.g. adding semantics to 0-checked input fields or data to zeroed output
+ * fields) don't require a change of the version.
+ *
+ * Last version bump: Xen 4.17
+ */
 #define XEN_SYSCTL_INTERFACE_VERSION 0x00000015
 
 /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 10:36:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 10:36:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818606.1231914 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0IQu-0002C9-UW; Mon, 14 Oct 2024 10:36:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818606.1231914; Mon, 14 Oct 2024 10:36: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 1t0IQu-0002C2-RN; Mon, 14 Oct 2024 10:36:12 +0000
Received: by outflank-mailman (input) for mailman id 818606;
 Mon, 14 Oct 2024 10:36: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0IQt-0002Bw-HP
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 10:36:11 +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 20cfc2e6-8a18-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 12:36:10 +0200 (CEST)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-431160cdbd0so25598635e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 03:36:10 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43118306181sm116805755e9.24.2024.10.14.03.36.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 03:36:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 20cfc2e6-8a18-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728902170; x=1729506970; 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=ZVpFMA4u5AsgAgxKI3HEWszVdcb9seUcyktjZRDGGz4=;
        b=ZLRX8Brw6Xu2DaBZOM9ppGKyvBfXzIotrPxTTpGlFnS47OPcpL6NmMlj11t3Xki9cd
         v92pYqw4ot1wZX7FdOFCFMrGWsqDsPPNfupOQpSnsdafZwUJJtxa8DY99x6M9gnCf5bm
         Rf99REmXtlOGC5amyY+P4MmwblyKaHfyCg/9jRL4mOEyQla3dv48orKJKePAgzKAYnWe
         Zsyoo97bWk9vu8rIh2kgISvZx04NcD4EK+qR/w7+IOKPD8o8EqH31fT94f/Wdd6QBhTN
         fyR7jJpOk3w2Y/hoYdHmAaR3y8iajwphh3O8+qTkgKQDWor+staFm3jI0NULWcU43E9P
         3nXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728902170; x=1729506970;
        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=ZVpFMA4u5AsgAgxKI3HEWszVdcb9seUcyktjZRDGGz4=;
        b=JhZ9MR6qskoeGqd8zgbc88Td6WzV5tvVmlRw06GYcNyHGpDaGrUlRQy6ml3b7Ik5ne
         QrqpesF9Ht7mozO/sbeBNHkuHiFFkkYclfMOMTmUzsgMNISJQj/DLPTh90KDbssNDb9l
         YeUgJEiy9rL3zyfbtIq5cyyRtKHgZbTFKE2pX41KUX38ZHol+XITITO0WYxavPoMyJMn
         vsegyL7QpJOQEcfylVMRf8+2aaLtJOeuBZmq26P5RlmowHfO8sObMikQjz7bibM9MNHi
         nUPO+PqBueSHekmlzPL9Ec+UFUtAlxsN3kNBgPQ/FLMF1BVPbVjDkl3rLR/3eRKHt4WF
         /skA==
X-Forwarded-Encrypted: i=1; AJvYcCXLWUe5R6gBurSUJFKSR7Ri/gppjmP4p0GUGeF/waQtbYbCXZcy1GzB96618HFM8m4FICM7i8eo9C0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzcUa9EVXKQ8hgkPyEgeAcPDJM5Vim1TlXqu+VWdh7eMHEDo8IY
	4XsCuqpeA3gKQXSo/w6cdPQLwlvfRJK5CwgS2FaguSDmo4PgA6iHSlYSeknr7g==
X-Google-Smtp-Source: AGHT+IGYlysWgB5Xkyn6biIANWyrR3M1AGLoymhDm4fi8EjvX1RR2lskvO1o0vrvWRV6qRdQYaMmSQ==
X-Received: by 2002:a05:600c:3488:b0:431:15c5:6439 with SMTP id 5b1f17b1804b1-4313380bb85mr24593515e9.13.1728902170130;
        Mon, 14 Oct 2024 03:36:10 -0700 (PDT)
Message-ID: <8219093c-2097-42e8-886e-f10ece047dbc@suse.com>
Date: Mon, 14 Oct 2024 12:36:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: add comments regarding interface version
 bumps
To: Juergen Gross <jgross@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014103311.31272-1-jgross@suse.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: <20241014103311.31272-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14.10.2024 12:33, Juergen Gross wrote:
> domctl.h and sysctl.h have an interface version, which needs to be
> bumped in case of incompatible modifications of the interface.
> 
> In order to avoid misunderstandings, add a comment to both headers
> specifying in which cases a bump is needed.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

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




From xen-devel-bounces@lists.xenproject.org Mon Oct 14 10:44:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 10:44:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818613.1231924 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0IYO-0003wl-Lj; Mon, 14 Oct 2024 10:43:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818613.1231924; Mon, 14 Oct 2024 10: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 1t0IYO-0003we-J2; Mon, 14 Oct 2024 10:43:56 +0000
Received: by outflank-mailman (input) for mailman id 818613;
 Mon, 14 Oct 2024 10:43: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 1t0IYN-0003wY-Ro
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 10:43: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 1t0IYM-0000lC-GG; Mon, 14 Oct 2024 10:43:54 +0000
Received: from [2a02:8012:3a1:0:750a:af63:2306:b870]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t0IYM-0006eA-8o; Mon, 14 Oct 2024 10:43: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=Rcq25qMf6VcWGLVIAkD/jsIbSk/4UiwG2uuQj7u3AZg=; b=jboBqeOLE0DT9U7rD9kgwB+YV/
	Vu9oTrYxQFBJ3ZJ86YakEd9V1imZFAYkjhWUUgy8POeozi5rXIG+OcpA8iMy9wi59arkRZCx4KQbK
	NGFY+1E/I3Dh97uiUpY/RMP89acbjhvq1HjU/+W0OF8FND4D9EiWu/cexKb2XsuVbaKs=;
Message-ID: <d3ecb5c5-1439-4073-a630-8c5cc69239f3@xen.org>
Date: Mon, 14 Oct 2024 11:43:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: increment domctl interface version
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
 <jgross@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014070650.14296-1-jgross@suse.com>
 <c7ea754e-e250-4431-b698-a10c2299ce75@suse.com>
 <79dca12b-6f16-4008-99cd-d0c3c1e7509c@suse.com>
 <2082c6ea-c778-444f-ad5f-15f25b87ba10@suse.com>
 <ea126b93-add2-415a-8a51-5b55ffcdd21e@suse.com>
 <8cb656c9-937e-4ffa-b5fd-a49f7a341c26@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <8cb656c9-937e-4ffa-b5fd-a49f7a341c26@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Jan,

On 14/10/2024 11:19, Jan Beulich wrote:
> On 14.10.2024 10:00, Jürgen Groß wrote:
>> On 14.10.24 09:46, Jan Beulich wrote:
>>> On 14.10.2024 09:36, Jürgen Groß wrote:
>>>> On 14.10.24 09:14, Jan Beulich wrote:
>>>>> On 14.10.2024 09:06, Juergen Gross wrote:
>>>>>> The recent addition of the XEN_DOMCTL_dt_overlay function was missing
>>>>>> the related update of XEN_DOMCTL_INTERFACE_VERSION, as it has been the
>>>>>> first interface change of the 4.20 release cycle.
>>>>>>
>>>>>> Fixes: 4c733873b5c2 ("xen/arm: Add XEN_DOMCTL_dt_overlay and device attachment to domains")
>>>>>
>>>>> I'm confused: That change (a) pre-dates the branching of 4.20 and (b)
>>>>> bumped the version ...
>>>>>
>>>>>> --- 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 0x00000017
>>>>>> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000018
>>>>>
>>>>> ... from 0x16 to 0x17. And for no apparent reason, as plain additions don't
>>>>> require a bump. Did you maybe mean to reference a different commit?
>>>>
>>>> Oh, indeed. I wanted to reference d6e9a2aab39e.
>>>>
>>>> And regarding to "plain additions don't require a bump": 4c733873b5c2 did
>>>> a plain addition and bumped the version.
>>>
>>> Right, hence why I said "for no apparent reason".
>>
>> There seems to be a lack of documentation in this regard.
>>
>> Julien explicitly asked for the bump for that addition.
> 
> Julien - why was that? 

I can't exactly remember why... I possibly just assumed that we updated 
the version every release...

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 10:48:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 10:48:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818621.1231933 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Icg-0004rz-5f; Mon, 14 Oct 2024 10:48:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818621.1231933; Mon, 14 Oct 2024 10: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 1t0Icg-0004rs-3A; Mon, 14 Oct 2024 10:48:22 +0000
Received: by outflank-mailman (input) for mailman id 818621;
 Mon, 14 Oct 2024 10:48: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 1t0Icf-0004rm-9d
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 10:48: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 1t0Icf-0000qK-6i; Mon, 14 Oct 2024 10:48:21 +0000
Received: from [2a02:8012:3a1:0:750a:af63:2306:b870]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t0Icf-0007A0-0m; Mon, 14 Oct 2024 10:48: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=NIx09bWwwG/Xv4o8dbzWGu41Fp6dsK4rVmusN8OOfKs=; b=uvRJuT3Mk5Q+3kaFuPzdw42XvO
	fESofTmX6XBLAawv9DNTDQLWUGA7yphGpTASTzK4gGF+7TbKviO9XOyJ2nj7fSaBzi2tC79+6OtVf
	zyKpfTtRCPLS3/kDKzopdRAEr+5+v7l7onp5lhg5FwIF5SqLQjV4/lg8ygtpMjjDYlC0=;
Message-ID: <0be5b60b-c333-4718-98a8-34eae911a169@xen.org>
Date: Mon, 14 Oct 2024 11:48:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: add comments regarding interface version
 bumps
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241014103311.31272-1-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241014103311.31272-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 14/10/2024 11:33, Juergen Gross wrote:
> domctl.h and sysctl.h have an interface version, which needs to be
> bumped in case of incompatible modifications of the interface.

What about vm_event.h?

> 
> In order to avoid misunderstandings, add a comment to both headers
> specifying in which cases a bump is needed.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Regardless my question above:

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 11:02:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 11:02:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818631.1231943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Ipq-0007nx-C5; Mon, 14 Oct 2024 11:01:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818631.1231943; Mon, 14 Oct 2024 11:01: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 1t0Ipq-0007nq-9F; Mon, 14 Oct 2024 11:01:58 +0000
Received: by outflank-mailman (input) for mailman id 818631;
 Mon, 14 Oct 2024 11:01: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=pOqc=RK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t0Ipo-0007nk-DF
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 11:01:56 +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 b975b1d1-8a1b-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 13:01:55 +0200 (CEST)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-431195c3538so27957225e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 04:01:55 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b7ef598sm11047296f8f.104.2024.10.14.04.01.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 04:01:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b975b1d1-8a1b-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728903715; x=1729508515; darn=lists.xenproject.org;
        h=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=04mKF5lAhJJQ4fjVIIo7qqRP97sylIwR4SEge3NJB7M=;
        b=DapK+UQCaMv0zlhosFk8RzWmdwGgquaZPysEUcl4HS2LFuevEiw1kaM0xBPs7AnBfd
         JEBHPHzwDZLjaq7BgA3ujF83vTbNEdpRZQoF3zyH64O9D4lxVORet89bRi3nYMORljZ0
         UJtfqeHbp2EoJh0Rbqxw9fmHAMghx9rDn8Nu8W1jlOHup4oH75pfwZvpqXiX27BJspHr
         TnKMXUKyDWkCZeeiX7V23NTflL/g5n4jNEbX86dujzcFMX9i7eaHxqee1IyMxdVLBTXH
         VkA6LXtWWa9GEgcaLaNwV7Zh5CX362NeEAxRQB8Tj4LDd7HWK84kdIsQN78x3nKeucEe
         neKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728903715; x=1729508515;
        h=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=04mKF5lAhJJQ4fjVIIo7qqRP97sylIwR4SEge3NJB7M=;
        b=GdKfmHz1GwS8zrup58z0g8Z/ra1vTiPU1lmnSDBoZ74ztgsAiLrAxQ4vX2jlmh2/2W
         JGyOehtzIEyXTjVYaTMY2WPIo9vZNFnS5CTP9OrBUi+PEj4efTul3kuKPWFYE+aJCxzs
         x/rozGLpLS5EUhRmLMRuFD9SYaYaL21GqP8+uriGS1ibakh3IIpo0mAgXpdXE/rncbgP
         lqm2FwvpEBiaINY2owa+1NKaX7c34f9aJiEzONcVL6UoM5eUQeANcqxW6MuGmX/DfgMM
         pDsXAWuHlpes7UNwGMfzan2NHAKG9sx9gBnVf58xM62HpimfMeZJkMPQAON6mR6RdF9V
         JueQ==
X-Forwarded-Encrypted: i=1; AJvYcCWBKh1XGvNrGIj6+KGHUsq3l3dwzJ2d71m3lMCY0iFNX7u6ZXeVr/QmfzdCWFsmnbfvjSLb9t+qwZA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxtKfKlcPqG+GQGqMorpia3DjV5De0SyK80Ynxb1fiPctcT97UG
	0mp8PHEeymJgTIm4hIT+BckZMMoDlQLbs86JFaZPscXkI8Zt3ug1fz6twXhkvUiQ5hRsHbDgyGY
	p
X-Google-Smtp-Source: AGHT+IF5px/Op7yeM3wbdLPw9HDXgnjZ3k9A3UFTJecCjRMG5BmjmzxYjY2LXPBzqHDIpcWQ/qxuvQ==
X-Received: by 2002:a05:600c:3ba0:b0:42f:310f:de9 with SMTP id 5b1f17b1804b1-4311deebe1dmr83294365e9.15.1728903714369;
        Mon, 14 Oct 2024 04:01:54 -0700 (PDT)
Message-ID: <370e7307-6698-4195-a703-76542bccd60c@suse.com>
Date: Mon, 14 Oct 2024 13:01:53 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: add comments regarding interface version
 bumps
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241014103311.31272-1-jgross@suse.com>
 <0be5b60b-c333-4718-98a8-34eae911a169@xen.org>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <0be5b60b-c333-4718-98a8-34eae911a169@xen.org>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------Ua0YLV8JMnagrm7om7U9x6QF"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Ua0YLV8JMnagrm7om7U9x6QF
Content-Type: multipart/mixed; boundary="------------qakaIdllWfxUraU55kjxgEiJ";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
Message-ID: <370e7307-6698-4195-a703-76542bccd60c@suse.com>
Subject: Re: [PATCH] xen/public: add comments regarding interface version
 bumps
References: <20241014103311.31272-1-jgross@suse.com>
 <0be5b60b-c333-4718-98a8-34eae911a169@xen.org>
In-Reply-To: <0be5b60b-c333-4718-98a8-34eae911a169@xen.org>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------qakaIdllWfxUraU55kjxgEiJ
Content-Type: multipart/mixed; boundary="------------Bk2vegGqr2BTVgI4Jr00uJzU"

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

T24gMTQuMTAuMjQgMTI6NDgsIEp1bGllbiBHcmFsbCB3cm90ZToNCj4gSGkgSnVlcmdlbiwN
Cj4gDQo+IE9uIDE0LzEwLzIwMjQgMTE6MzMsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBk
b21jdGwuaCBhbmQgc3lzY3RsLmggaGF2ZSBhbiBpbnRlcmZhY2UgdmVyc2lvbiwgd2hpY2gg
bmVlZHMgdG8gYmUNCj4+IGJ1bXBlZCBpbiBjYXNlIG9mIGluY29tcGF0aWJsZSBtb2RpZmlj
YXRpb25zIG9mIHRoZSBpbnRlcmZhY2UuDQo+IA0KPiBXaGF0IGFib3V0IHZtX2V2ZW50Lmg/
DQoNCkluZGVlZC4NCg0KVGhlcmUgc2VlbSB0byBiZSBvdGhlcnMgbWlzc2luZywgdG9vLiBI
ZXJlIGEgZ2l0IGdyZXAgb3V0cHV0IG9mDQpwb3NzaWJsZSBjYW5kaWRhdGVzIChpbmNsdWRp
bmcgZG9tY3RsLmgsIHN5c2N0bC5oIGFuZCB2bV9ldmVudC5oKToNCg0KYXJjaC14ODYveGVu
LW1jYS5oOiNkZWZpbmUgWEVOX01DQV9JTlRFUkZBQ0VfVkVSU0lPTiAweDAxZWNjMDAzDQpk
b21jdGwuaDojZGVmaW5lIFhFTl9ET01DVExfSU5URVJGQUNFX1ZFUlNJT04gMHgwMDAwMDAx
Nw0KaHZtL2h2bV9vcC5oOiNkZWZpbmUgSFZNT1BfQUxUUDJNX0lOVEVSRkFDRV9WRVJTSU9O
IDB4MDAwMDAwMDENCnBsYXRmb3JtLmg6I2RlZmluZSBYRU5QRl9JTlRFUkZBQ0VfVkVSU0lP
TiAweDAzMDAwMDAxDQpzeXNjdGwuaDojZGVmaW5lIFhFTl9TWVNDVExfSU5URVJGQUNFX1ZF
UlNJT04gMHgwMDAwMDAxNQ0Kdm1fZXZlbnQuaDojZGVmaW5lIFZNX0VWRU5UX0lOVEVSRkFD
RV9WRVJTSU9OIDB4MDAwMDAwMDcNCnhzbS9mbGFza19vcC5oOiNkZWZpbmUgWEVOX0ZMQVNL
X0lOVEVSRkFDRV9WRVJTSU9OIDENCg0KSSBjYW4gYWRkIGFub3RoZXIgcGF0Y2ggZm9yIHRo
ZSBtaXNzaW5nIG9uZXMgKG9yIDEgcGF0Y2ggZm9yIGVhY2g/KQ0KDQo+IA0KPj4NCj4+IElu
IG9yZGVyIHRvIGF2b2lkIG1pc3VuZGVyc3RhbmRpbmdzLCBhZGQgYSBjb21tZW50IHRvIGJv
dGggaGVhZGVycw0KPj4gc3BlY2lmeWluZyBpbiB3aGljaCBjYXNlcyBhIGJ1bXAgaXMgbmVl
ZGVkLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNl
LmNvbT4NCj4gDQo+IFJlZ2FyZGxlc3MgbXkgcXVlc3Rpb24gYWJvdmU6DQo+IA0KPiBBY2tl
ZC1ieTogSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4NCg0KVGhhbmtzLA0KDQpK
dWVyZ2VuDQoNCg==
--------------Bk2vegGqr2BTVgI4Jr00uJzU
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------Bk2vegGqr2BTVgI4Jr00uJzU--

--------------qakaIdllWfxUraU55kjxgEiJ--

--------------Ua0YLV8JMnagrm7om7U9x6QF
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/Ey8FAmcM+iEFAwAAAAAACgkQsN6d1ii/Ey8E
Bwf/Wdx7cbUn0Izf273xxb62G4TZ09BV5EbZIYel6iorUzm+JQp84dc8J4X7uLgI2mrFQ5qt437o
dOAzMRifRqRSClSuAuezpq11UrUyjoG1wgr/62kRmxExr7e1rXp9iMjTIWDaw0R6wTthO/7Fi0yn
Xel1nh9Kr3QXBQkzzqyLHI2NevdiiSDDxeJDnDn7GcSk2oUDl9mwiRYCWwxdnA6M3hIc//vnLQ7A
BS7RuyIgHxKnYueT1dXqKVb0AV9ZDHK1Zrn81bhWRN475yjKPYoaV05TRPQn6/FwOKhK4xgyXLH0
tB7xTObGAXA0FWMio1QHTockK37gwcjFnITpbAo5ZA==
=TUzN
-----END PGP SIGNATURE-----

--------------Ua0YLV8JMnagrm7om7U9x6QF--


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 11:02:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 11:02:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818629.1231954 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0IqK-0008Fg-OA; Mon, 14 Oct 2024 11:02:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818629.1231954; Mon, 14 Oct 2024 11: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 1t0IqK-0008FZ-LI; Mon, 14 Oct 2024 11:02:28 +0000
Received: by outflank-mailman (input) for mailman id 818629;
 Mon, 14 Oct 2024 11: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=tZnx=RK=arm.com=ryan.roberts@srs-se1.protection.inumbo.net>)
 id 1t0IpI-0007mu-7C
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 11:01:24 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id a5226c60-8a1b-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 13:01:21 +0200 (CEST)
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 6816B1713;
 Mon, 14 Oct 2024 04:01:50 -0700 (PDT)
Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com
 [10.1.196.27])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4980A3F51B;
 Mon, 14 Oct 2024 04:01:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5226c60-8a1b-11ef-99a2-01e77a169b0f
From: Ryan Roberts <ryan.roberts@arm.com>
To: Andrew Morton <akpm@linux-foundation.org>,
	Anshuman Khandual <anshuman.khandual@arm.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	David Hildenbrand <david@redhat.com>,
	Greg Marsden <greg.marsden@oracle.com>,
	Ivan Ivanov <ivan.ivanov@suse.com>,
	Kalesh Singh <kaleshsingh@google.com>,
	Marc Zyngier <maz@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Matthias Brugger <mbrugger@suse.com>,
	Miroslav Benes <mbenes@suse.cz>,
	Will Deacon <will@kernel.org>
Cc: Ryan Roberts <ryan.roberts@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	linux-mm@kvack.org,
	xen-devel@lists.xenproject.org
Subject: [RFC PATCH v1 36/57] xen: Remove PAGE_SIZE compile-time constant assumption
Date: Mon, 14 Oct 2024 11:58:43 +0100
Message-ID: <20241014105912.3207374-36-ryan.roberts@arm.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241014105912.3207374-1-ryan.roberts@arm.com>
References: <20241014105514.3206191-1-ryan.roberts@arm.com>
 <20241014105912.3207374-1-ryan.roberts@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

To prepare for supporting boot-time page size selection, refactor code
to remove assumptions about PAGE_SIZE being compile-time constant. Code
intended to be equivalent when compile-time page size is active.

Allocate enough "frame_list" static storage in the balloon driver for
the maximum supported page size. Although continue to use only the first
PAGE_SIZE of the buffer at run-time to maintain existing behaviour.

Refactor xen_biovec_phys_mergeable() to convert ifdeffery to c if/else.
For compile-time page size, the compiler will choose one branch and
strip the dead one. For boot-time, it can be evaluated at run time.

Refactor a BUILD_BUG_ON to evaluate the limit (when the minimum
supported page size is selected at boot-time).

Reserve enough storage for max page size in "struct remap_data" and
"struct xenbus_map_node".

Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
---

***NOTE***
Any confused maintainers may want to read the cover note here for context:
https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/

 drivers/xen/balloon.c              | 11 ++++++-----
 drivers/xen/biomerge.c             | 12 ++++++------
 drivers/xen/privcmd.c              |  2 +-
 drivers/xen/xenbus/xenbus_client.c |  5 +++--
 drivers/xen/xlate_mmu.c            |  6 +++---
 include/xen/page.h                 |  2 ++
 6 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index 528395133b4f8..0ed5f6453af0e 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -131,7 +131,8 @@ struct balloon_stats balloon_stats;
 EXPORT_SYMBOL_GPL(balloon_stats);
 
 /* We increase/decrease in batches which fit in a page */
-static xen_pfn_t frame_list[PAGE_SIZE / sizeof(xen_pfn_t)];
+static xen_pfn_t frame_list[PAGE_SIZE_MAX / sizeof(xen_pfn_t)];
+#define FRAME_LIST_NR_ENTRIES (PAGE_SIZE / sizeof(xen_pfn_t))
 
 
 /* List of ballooned pages, threaded through the mem_map array. */
@@ -389,8 +390,8 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
 	unsigned long i;
 	struct page   *page;
 
-	if (nr_pages > ARRAY_SIZE(frame_list))
-		nr_pages = ARRAY_SIZE(frame_list);
+	if (nr_pages > FRAME_LIST_NR_ENTRIES)
+		nr_pages = FRAME_LIST_NR_ENTRIES;
 
 	page = list_first_entry_or_null(&ballooned_pages, struct page, lru);
 	for (i = 0; i < nr_pages; i++) {
@@ -434,8 +435,8 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
 	int ret;
 	LIST_HEAD(pages);
 
-	if (nr_pages > ARRAY_SIZE(frame_list))
-		nr_pages = ARRAY_SIZE(frame_list);
+	if (nr_pages > FRAME_LIST_NR_ENTRIES)
+		nr_pages = FRAME_LIST_NR_ENTRIES;
 
 	for (i = 0; i < nr_pages; i++) {
 		page = alloc_page(gfp);
diff --git a/drivers/xen/biomerge.c b/drivers/xen/biomerge.c
index 05a286d24f148..28f0887e40026 100644
--- a/drivers/xen/biomerge.c
+++ b/drivers/xen/biomerge.c
@@ -8,16 +8,16 @@
 bool xen_biovec_phys_mergeable(const struct bio_vec *vec1,
 			       const struct page *page)
 {
-#if XEN_PAGE_SIZE == PAGE_SIZE
-	unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
-	unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
+	if (XEN_PAGE_SIZE == PAGE_SIZE) {
+		unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
+		unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
+
+		return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
+	}
 
-	return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
-#else
 	/*
 	 * XXX: Add support for merging bio_vec when using different page
 	 * size in Xen and Linux.
 	 */
 	return false;
-#endif
 }
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 9563650dfbafc..847f7b806caf7 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -557,7 +557,7 @@ static long privcmd_ioctl_mmap_batch(
 	state.global_error  = 0;
 	state.version       = version;
 
-	BUILD_BUG_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);
+	BUILD_BUG_ON(((PAGE_SIZE_MIN / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE_MAX) != 0);
 	/* mmap_batch_fn guarantees ret == 0 */
 	BUG_ON(traverse_pages_block(m.num, sizeof(xen_pfn_t),
 				    &pagelist, mmap_batch_fn, &state));
diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
index 51b3124b0d56c..99bde836c10c4 100644
--- a/drivers/xen/xenbus/xenbus_client.c
+++ b/drivers/xen/xenbus/xenbus_client.c
@@ -49,9 +49,10 @@
 
 #include "xenbus.h"
 
-#define XENBUS_PAGES(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
+#define XENBUS_PAGES(_grants)		(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
+#define XENBUS_PAGES_MAX(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE_MIN))
 
-#define XENBUS_MAX_RING_PAGES	(XENBUS_PAGES(XENBUS_MAX_RING_GRANTS))
+#define XENBUS_MAX_RING_PAGES		(XENBUS_PAGES_MAX(XENBUS_MAX_RING_GRANTS))
 
 struct xenbus_map_node {
 	struct list_head next;
diff --git a/drivers/xen/xlate_mmu.c b/drivers/xen/xlate_mmu.c
index f17c4c03db30c..a757c801a7542 100644
--- a/drivers/xen/xlate_mmu.c
+++ b/drivers/xen/xlate_mmu.c
@@ -74,9 +74,9 @@ struct remap_data {
 	int mapped;
 
 	/* Hypercall parameters */
-	int h_errs[XEN_PFN_PER_PAGE];
-	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE];
-	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE];
+	int h_errs[XEN_PFN_PER_PAGE_MAX];
+	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE_MAX];
+	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE_MAX];
 
 	int h_iter;	/* Iterator */
 };
diff --git a/include/xen/page.h b/include/xen/page.h
index 285677b42943a..86683a30038a3 100644
--- a/include/xen/page.h
+++ b/include/xen/page.h
@@ -21,6 +21,8 @@
 	((page_to_pfn(page)) << (PAGE_SHIFT - XEN_PAGE_SHIFT))
 
 #define XEN_PFN_PER_PAGE	(PAGE_SIZE / XEN_PAGE_SIZE)
+#define XEN_PFN_PER_PAGE_MIN	(PAGE_SIZE_MIN / XEN_PAGE_SIZE)
+#define XEN_PFN_PER_PAGE_MAX	(PAGE_SIZE_MAX / XEN_PAGE_SIZE)
 
 #define XEN_PFN_DOWN(x)	((x) >> XEN_PAGE_SHIFT)
 #define XEN_PFN_UP(x)	(((x) + XEN_PAGE_SIZE-1) >> XEN_PAGE_SHIFT)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 11:36:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 11:36:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818649.1231964 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0JNA-0004i4-4I; Mon, 14 Oct 2024 11:36:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818649.1231964; Mon, 14 Oct 2024 11:36: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 1t0JNA-0004hx-1c; Mon, 14 Oct 2024 11:36:24 +0000
Received: by outflank-mailman (input) for mailman id 818649;
 Mon, 14 Oct 2024 11:36: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0JN9-0004hr-3s
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 11:36:23 +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 89286e01-8a20-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 13:36:21 +0200 (CEST)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-43116f8a3c9so46865145e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 04:36:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43118355d22sm118767705e9.30.2024.10.14.04.36.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 04:36:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89286e01-8a20-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728905781; x=1729510581; 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=jjXuWByIaP4w9Tv8Fon8KqT9LP2nbpJh9NlSq/015bc=;
        b=d5KwP2OrfXitijcftXINGK7w3JIsS+a3Ot2QbwFkIF9kfqKLH2aUzNBtmJ/8CifYe4
         XUpHjnx07hZhvIEWTJSqfVefsoSr2cwwqnVdzFXEbN2oYW5mr/6MiZJHydQO+wNYY1Gf
         tnBtWdlG4neDF2zWdOjhawDYlP//4W7wUvkIUyCMcyTryYD3p13IUiy3grVoBqoR6Up4
         SH17I65UQFTtBRHhAa011iDXSbuEOqCPLkLfTcwQWd6OSvjRB9mc+7meyesKeVbZIEJX
         qk9AvcUSgnMqzwXr/4s1yoFysNgqzeMy7Id1pyaFpW6oNQWJP0JhkjlFXcGnlO7VtTOB
         Wl/Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728905781; x=1729510581;
        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=jjXuWByIaP4w9Tv8Fon8KqT9LP2nbpJh9NlSq/015bc=;
        b=B10mVdMBg9Cv/dEH8p16441tjtGhm5Kn10jY4TSipS6q2OiMf9MEu85mXDAoq8xWEP
         QA4VH0ZhGjC9GZg9n1OojqHNX+GLpYizVZQT6EuvrCSPRhrI2KuWUgtULahDXRuQExmk
         CXg1gLKqirIILJe3PoZgNrHQaRIxfAqwVxTLdHbGtesFkqjQzIHfxB2NnRgSoCgXnK+B
         2JTpbo4bvTZiVxwasbHwYklZR/U+NyErFxlcAgbVSsPkt1a6pvTVIzt0RjNrxP49yQFZ
         BkQxnt/ZBAMZvleNhnD1UuP658pDS//kcgvzxFyLy5wVGfvo880+o0VT0WUXcNSnJotq
         8YUA==
X-Forwarded-Encrypted: i=1; AJvYcCXGznIFagqyPBvEZD4lbyWbT71B4qcVMDGplzATLpRVlhQhemD/GLUxdH4di1JyviwocxGkS6O9EYU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxoO8CDXqcbe5PUR3Fso3d/X0cBjqJ9xm/We2Nf/ZTr9Tc4ozXR
	4tquItS89BHoourysQ8NHv3bG9FP/wB6BP1BVmRYoQKy4oN+9NtNc5D+0DPxkg==
X-Google-Smtp-Source: AGHT+IFiWSXHIkdlmwDXFO8AOXiT5t7RoVC7fXvQOuyE7B1V7EwbBekiLiFuJ+Mt+AgR436ynht6tw==
X-Received: by 2002:a05:600c:3555:b0:42f:75e0:780e with SMTP id 5b1f17b1804b1-431255dac0dmr88821225e9.10.1728905781118;
        Mon, 14 Oct 2024 04:36:21 -0700 (PDT)
Message-ID: <d3241a72-0bc4-44ab-aacb-5c7056bcb496@suse.com>
Date: Mon, 14 Oct 2024 13:36:19 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/public: add comments regarding interface version
 bumps
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Julien Grall <julien@xen.org>, Tamas K Lengyel <tamas@tklengyel.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241014103311.31272-1-jgross@suse.com>
 <0be5b60b-c333-4718-98a8-34eae911a169@xen.org>
 <370e7307-6698-4195-a703-76542bccd60c@suse.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: <370e7307-6698-4195-a703-76542bccd60c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14.10.2024 13:01, Jürgen Groß wrote:
> On 14.10.24 12:48, Julien Grall wrote:
>> On 14/10/2024 11:33, Juergen Gross wrote:
>>> domctl.h and sysctl.h have an interface version, which needs to be
>>> bumped in case of incompatible modifications of the interface.
>>
>> What about vm_event.h?
> 
> Indeed.
> 
> There seem to be others missing, too. Here a git grep output of
> possible candidates (including domctl.h, sysctl.h and vm_event.h):
> 
> arch-x86/xen-mca.h:#define XEN_MCA_INTERFACE_VERSION 0x01ecc003
> domctl.h:#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
> hvm/hvm_op.h:#define HVMOP_ALTP2M_INTERFACE_VERSION 0x00000001
> platform.h:#define XENPF_INTERFACE_VERSION 0x03000001
> sysctl.h:#define XEN_SYSCTL_INTERFACE_VERSION 0x00000015
> vm_event.h:#define VM_EVENT_INTERFACE_VERSION 0x00000007
> xsm/flask_op.h:#define XEN_FLASK_INTERFACE_VERSION 1
> 
> I can add another patch for the missing ones (or 1 patch for each?)

Please don't. The situation is different there. Sysctl and domctl are
unstable interfaces, hence to change them in incompatible ways a bump
is all that's needed (in addition). That's quite different from cases
where the interface itself is stable. The only possible exception to
this is vm_event.h, which offers solely tools-only interfaces. I'm
not sure though whether "just" bumping the interface version there is
enough for an incompatible change to occur. Tamas?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 12:12:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 12:12:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818668.1231974 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Jvm-0001tn-TO; Mon, 14 Oct 2024 12:12:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818668.1231974; Mon, 14 Oct 2024 12:12: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 1t0Jvm-0001tg-QY; Mon, 14 Oct 2024 12:12:10 +0000
Received: by outflank-mailman (input) for mailman id 818668;
 Mon, 14 Oct 2024 12:12: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 1t0Jvl-0001tW-Eh; Mon, 14 Oct 2024 12:12: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 1t0Jvk-0002f6-2T; Mon, 14 Oct 2024 12:12: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 1t0Jvj-0004ES-L5; Mon, 14 Oct 2024 12:12:07 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0Jvj-0001dR-KD; Mon, 14 Oct 2024 12:12: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=M5Wm382Yzeetapx+C+1Cb8Gb1lW9jh242voy7r3GMug=; b=J8IoRaW1XCLiP/pEAu7exf+kWX
	Uwh6jkZSxwUvL52BE0x4XeezNu0UcNdc/VaYPzHk+25BI7pew50KjnPO5X1XNrJOigqaM4wUXvk+6
	xpqDVqLkydeom6J7mBpVv3MrOLgWfjk4pXIF16r6nKrUobPxDKeys6MJoWWi/5+v/8B8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188079-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188079: 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-amd64-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-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-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-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-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-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-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl: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-amd64-amd64-libvirt-qcow2: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-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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
X-Osstest-Versions-This:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
X-Osstest-Versions-That:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 14 Oct 2024 12:12:07 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188071
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188071
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188071
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188071
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188071
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188071
 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-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          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-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-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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                  76a54badf890f56ff72644593c0fbc72138e13aa
baseline version:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa

Last test of basis   188079  2024-10-14 01:54: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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 14 12:31:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 12:31:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818678.1231983 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0KET-0004kT-F9; Mon, 14 Oct 2024 12:31:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818678.1231983; Mon, 14 Oct 2024 12:31: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 1t0KET-0004kM-CX; Mon, 14 Oct 2024 12:31:29 +0000
Received: by outflank-mailman (input) for mailman id 818678;
 Mon, 14 Oct 2024 12: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=dly0=RK=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t0KER-0004jx-PT
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 12:31:27 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20615.outbound.protection.outlook.com
 [2a01:111:f403:200a::615])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 39fbdf08-8a28-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 14:31:26 +0200 (CEST)
Received: from MW4PR12MB7334.namprd12.prod.outlook.com (2603:10b6:303:219::21)
 by CY5PR12MB9054.namprd12.prod.outlook.com (2603:10b6:930:36::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 12:31:21 +0000
Received: from MW4PR12MB7334.namprd12.prod.outlook.com
 ([fe80::2e77:557:17d5:86f8]) by MW4PR12MB7334.namprd12.prod.outlook.com
 ([fe80::2e77:557:17d5:86f8%5]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 12:31: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: 39fbdf08-8a28-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Cq6PuGQkaW6ZkfcFuX/kRNjqq6u9JQKmANszUxP+p+srzg4sA0npwjD4rNB14KGnCYHVKw19+7oa60cR4L72mrJFRArTH/RzY+4weIMwnqauQNtewVnT4mJar17k1SaAISYkDSftRl2C+Lce84LbNcSwrf2ffmUPPhPteJ+aotIxh1AZ8k0TeZYQwtR/cp+q9KUY5Ls84vRKXGsdEeRdZMuiAItLGM4XweNLqSMb4enZkqxXjB7gv1wZMKRLQUMdH1vVXKmpZN1WRdPdH0pIgDDi3QOCdbQLF5mxLUw9j5uHK0tGlGQumSDNBdKDpDHwNC84bFRqGPmOYL4I9rQuGw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=RrlPg+Ibf5s4mzBqi2G3YSQbRO201tuZBiLlK53qdJY=;
 b=u1x53jkz8CwrVBf91CO8ceoMIrWr2CVGTr+1ZpBr5HKU7G+f9PLGuY1/4wvsxNheqGN+619L4HLdY/uLyVnXTkzkR8j8NgqOuE7mQPtsFWirHEqlLhN6MRNRm+M4QsslNvOg+oLR+Is7480qWkeF17vwNFp78hCj2/mjGmBfodK4w/ZS40aNNIQ0+5ggmNBtnssb39o0bU6nbowvedpncEUUIouVBEKiXMLuGDs7YiQSRsxU41/JK1NIT6VM+pRomNNnhe8Gg/sPcmIKVz1Uvvi6Nxnmli9C5Gn9+xGdWawCFCa43eC8YQZgSplFuja40Eh+cPen5vghljIEO67qgw==
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=RrlPg+Ibf5s4mzBqi2G3YSQbRO201tuZBiLlK53qdJY=;
 b=uxm+jyXTQdTudH4IycKNNBR2FvoYAeriBl2Fd7a2lDbpYoqh7AIizUBHTJ0yxAQeL32qIy0GJ4nHBrvP0rKkz0q8eMmho976ocZPLFOq2ITawYyVR70pcApr12QLgAi8pNw1PwlNsDPr0P7RLTxw2gvM7kYdoPTAzKcaOEkaFJc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <6ea82706-49c8-48e6-9e17-bba0e96909d7@amd.com>
Date: Mon, 14 Oct 2024 13:31:16 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
Content-Language: en-GB
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <20241010140351.309922-5-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0450.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a9::23) To MW4PR12MB7334.namprd12.prod.outlook.com
 (2603:10b6:303:219::21)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW4PR12MB7334:EE_|CY5PR12MB9054:EE_
X-MS-Office365-Filtering-Correlation-Id: 2306ea34-1c9c-472a-a294-08dcec4c1c3b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?WWR5UHMyUXlvbkZ0Q2lkN29CbFlla2h0eTRDVWVmMUZwOVg1TGliclkvQUtk?=
 =?utf-8?B?T1hId2ZtTndqdnA3VGsxRnZQRlNDdEhyTDNhT25aTWpqWU40U2RLRWtENGlC?=
 =?utf-8?B?K2ZpejQ4eUFYYjZXZ3FYMTZqOElkUDhqMDZUMWVielIrOFZUT3ZRekdUYVFa?=
 =?utf-8?B?UTkyWm1FcUNzaTNueURtNm5mVE0yTTlwbzNSTFgvZnhPdE56bWh3VVBzcVJx?=
 =?utf-8?B?NUhOdkdzdk02TFBDdGhKN2NIWUtQSkU2R0ZHR2hrd1hRWmEzOXVoU3NJRCtU?=
 =?utf-8?B?WU9FOHhHR3Ztb01rWWc0S0JRaWg3Z1dpWDhyZ0tSc1dMa0RpQTEvYWw2eFFo?=
 =?utf-8?B?TDRVVkxON3kzZnJ4NlZFSGdDVmtRWXRzR1gxNXB1eFQ3OU5xd1UxcVRnc0dV?=
 =?utf-8?B?MnkyeUJQbndnVTZ4VWxQaGN0K3YrU0l2UStQU1ZGa0FMRXFweG15MzJxdWFh?=
 =?utf-8?B?M3NVMXlmbjd0ZGhqKytueURnL0REVlVOQm1mZzVuYjFDVmJ5NkhKdDFJZ2pD?=
 =?utf-8?B?TTlubWJjVzY5SEdGSUEyV0JTMGdrTUhXbVl3ZzhTbFVLQWlBZFJCNWU5MFpi?=
 =?utf-8?B?bS9ad1U4QkVRZ3E0YS9YNW9XWENQa3pKdVViQlNKay9tL29sZFV2RzZvSzd2?=
 =?utf-8?B?WGlkbkticGdpNlpPVTd2S2FGRFZsZlBiWDI4SUJqTFNCaGJTWUhPNlNjSlBl?=
 =?utf-8?B?SHUybnhJb0pmTDVRNTFJaDIrSVRvVGMvaFVSL1RxaXB5T3FrZFFMb005NXRv?=
 =?utf-8?B?VERCM3ZyTGdJNVEzWlcwQ0tRRjl1RVlWc21VRTczRWZwT2RtMjR2bGJ5RUZN?=
 =?utf-8?B?dVVtdWFKeU5STHp5SE9zUVE2cS9GNDk5K1dQbTBIMUFuR3JyQzVzZ0RiS2F5?=
 =?utf-8?B?SGNZQXIzTk1VMzRyampWYjRxQVBuK1VoKzlQYkRkSnM4M3NWaUxueFZSOER1?=
 =?utf-8?B?c2pLeE45TUdKY25OaHFhS0ZMdjJzQmtxTytsZStjV042eWtMZUFGVWV0MkFo?=
 =?utf-8?B?bmc1ck1za0VvdkcveGhjUjd5TVdscU1wSE1Ed0Q1WkU5eTg2L1FyMWhtTWFo?=
 =?utf-8?B?RzdrTDY2WUhiS3I3N2RLVVVGbWRLbnQ1T1FxNjFFMkUwemNqTlJMY0w1Rjln?=
 =?utf-8?B?YkNZL0xxUFE5TCtGWkl5cVNPaStmS1AzUEhyOXlHRyt2VFB1d0dleTRHU0M5?=
 =?utf-8?B?NzhSTzdFTS84VmV4MU5jZS80YW42bXIyYVlPSnNuOVR3elNLT3NjOHVuOXNm?=
 =?utf-8?B?ZEhqVGR2OGc0aUdpRkx4Q2p2ZzN0NUVaVUFpcHUrL3JhMHZFWlIzSnkwVFFK?=
 =?utf-8?B?NndFMUQ4US9aYkFnenJuZ3kxUFhCNFRnbGVNTlozU1RKRkh4MXZDbnNSSEFH?=
 =?utf-8?B?bmhjL1FaTXZlalJVcklxTnlxR21EVHcvdkJOQ3F4OC9wS1haeEtUVHhiazc2?=
 =?utf-8?B?a0pPNWQva2Z2TFpndGZrRnZENHBiT2FSS2tQbjFMblFtVTR4QmtOV3RoNGNw?=
 =?utf-8?B?WWZLT2RwTFVqcUJSWG5vM3g3UkVFMnoydmNzSElsandXcm5EeGdvWWlGYXQy?=
 =?utf-8?B?S1UvY3Z4M1JVcVBwUCtMSWoyNCs2Z1BLZXUrTEJqb09LYzdvQUc1N0k5ZVhS?=
 =?utf-8?B?VlpSWnllVnk3SHMxbWZ3M0hzY0h0M1RvUTBWQjVwcXh4SEF5SktCM2xDYVJp?=
 =?utf-8?B?SVptN1FBenNRS081UHhmVEJZTjR5WFhmc0V0OWV2UFNTTmM2L0VWdFBRPT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR12MB7334.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Z1pFRS9KQXdXRXROR0MzcllWdjZZMzN2bm04K0N1QkVHSFJ1ZnBIbkZCdFp0?=
 =?utf-8?B?Tm1ha3RId3dmMk45Zm9uSVBtUmVLdlR0Z1EvZGlIMmpIYmJEU3MwaDdiaVlP?=
 =?utf-8?B?NlV1U3hkK1ZLZXUyQ012NGk4T2xOeDlIUlpLRlZVWlU4Q3B1WFJtVUpRUUVo?=
 =?utf-8?B?aGVCM3lIMU1VTDE3bitkcEE0d3FtM3FUTjh5VmZqYTl5aHdSak5ZaUxtSk91?=
 =?utf-8?B?c0lOVzAvWnRIckpldDcxV3c5anNZSnhNeVRrQTJvMFRVcW1TTFZmTWNXTEFa?=
 =?utf-8?B?blNFSTZtSlp2blpKc0lzZ3Q3UkVhQjlPK3Y2KytLOFU4ajZib3ppeHBKVXJ6?=
 =?utf-8?B?U3FOUGRlcjZ5VS9ORTMzcVU5SUVEQ0Vqb1FTeng0ak5pVXB3UFd0QlpwL2s3?=
 =?utf-8?B?T1NIVktNOUFIMm5WamxRaHU1OWxnSG14azJ5T1UxRkwzTTVCVGJpaVhrbzFa?=
 =?utf-8?B?enEyem1lWmdxbDNCN2JLM21pZ21vejJlRWRmMWZpNVptUk1ZOGRUZnpVSFBH?=
 =?utf-8?B?ekpLRnROaWdGOGoyV0FwN2FGbXVQVDFqdHYzcFpDTTkreG5rcDMybE5NZFJH?=
 =?utf-8?B?cUw2dFVxK21nTjhvRFk3b3MwbU4vY0hiZHNqSitJOHkzT1pwTXE1cEgrRnVS?=
 =?utf-8?B?WDdKV3FUYU9GYThGU0JrMUJwT3lNbWh5Tis2QkNpblpZZTlYaEFnQ0JJNm1W?=
 =?utf-8?B?N2tNSVhJQkR0OHR2dGNrNHpDNmtOa1lKSzZqTVJCMFA2SDBiTWZvKzBTVjR2?=
 =?utf-8?B?OE0wL2lvY3NRZDZJRm9HQlo1VnBJZ09waVNQR294RTZGSms1QWVwR09qYnNp?=
 =?utf-8?B?ZWlRbFZXcVZXRE5USTUwVWx3NUtJbzA4b3FURjFLcXdtNDJpU3VzZXZFYzla?=
 =?utf-8?B?bkNkdlhielJYZHB1NjRNMG5sdjZWVHhLRmJWeW5OWVpzWWxOTjYwVnNjWjcw?=
 =?utf-8?B?dmY5eXplSjdtV3hkdERWQTdiZjZPL0UwaXc5eGhFZE5OMVhiOXJBdER1VVdZ?=
 =?utf-8?B?aVdSUjg3YklFVlpmQy9qTFIrZ1RPUVIvNWZSWXpjR2liNi9pMWlnazUrMXJF?=
 =?utf-8?B?bDZDUWF1TUJBSlZKVVR2SndqdDBHS25aMHRoQTJYK2VwNW9sNTZzcjVhYkJG?=
 =?utf-8?B?Ky9DMERqcnhIT1FqWWRKMC84aFRSVHpyRnVKTFJPNDFCZGJvT2p2K0N0ZlNm?=
 =?utf-8?B?NTNEN0hVMXNtcUM4R0JBOGE5WWsxTWdDK3BSSzF0MW1FdkRjZkh1OGlhcWVz?=
 =?utf-8?B?dDczZE5VcXY4dFNDc1JYTFNGazhpYW43SUNTYVhYSWFQZUtSZ0RwcnVvaDgz?=
 =?utf-8?B?bWJyNGJMSk1sV3B6S1h0NC9yRFRDdDVqaTFicnhoZElRMVFUZEVUdDd6eFNL?=
 =?utf-8?B?UkhiaVo2L25PQnA1MjAxUlNGTVltdHJjckdyRGtrSG91TllIK1JVaFFCN1dW?=
 =?utf-8?B?aEhrRWM5WHFmYkN2MzNJM2RvWVRmdUM3UWw5bUJQMm1taW1kUXgzb0lsak1X?=
 =?utf-8?B?cWFSOTlOTTBESUt6RllPWUpISzlnOHRUeHZCclJwdkx6Zm5vbXZTWTFjZEF0?=
 =?utf-8?B?MEhtOUU4YnR6Zm9nOUJVMUpGQ2c1UW5EeDVhb21OVm9iRzZjRXFubVZvc2x2?=
 =?utf-8?B?ZTJDWVRJcDFDOVY4ZG5URFYyaUh4YjNsQjgvQm9yYm5ibUs4NTVVRytnRFlj?=
 =?utf-8?B?d1kxTVZtUlZTb1F2TUVWRXFYSVYwZFdEUEUwWG4zSEM1d3BqWTRqZXdMeklv?=
 =?utf-8?B?OHVIdWJlV1FFYUlXdTErMHd0SXoxTWhudFo5QTJ3WkkzbzNiZU5RS0U2YWZL?=
 =?utf-8?B?cFA3UzMzdEoxQ3JzRUluQnZWaUNvM3Z0VGZZVWRZQTZoRjEyS1FhenR0MlZX?=
 =?utf-8?B?RzY4MkpSWmRVbnNJbW1zU1J0Z1V0ejhHajh3L3YrNDBXRCt6bkkxbmVyaEhF?=
 =?utf-8?B?WXgxTHJwdWZmMWlJaU1DbWd5MzRRM0FYQ2dsN3UwTFpnenRhQjBCblMyWDVa?=
 =?utf-8?B?L0RoRG51S3I1Q08zWmVRV0o4ZWcxSU92Q0pId0NvcFJYUFJVWEUyTWdRdDFs?=
 =?utf-8?B?cDlIdW5xZERVNDRJZE1LUEtBNFY5dHQ0SWtwclc4elhESDQvZkV5N0JLcUlS?=
 =?utf-8?Q?GxwPccT6WqVWLxXlPd3Lzhqkb?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2306ea34-1c9c-472a-a294-08dcec4c1c3b
X-MS-Exchange-CrossTenant-AuthSource: MW4PR12MB7334.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 12:31:21.7672
 (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: eLW+AuSiA0T3EVIj9L3O6zdfHk318OGothRG08p/wnSe4/5T2dy0KlZp0r9KrX7Zu11hhzhrihqiQJV4X1yr5w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB9054


On 10/10/2024 15:03, Ayan Kumar Halder wrote:
> Define enable_boot_cpu_mm() for the AArch64-V8R system.
>
> Like boot-time page table in MMU system, we need a boot-time MPU protection
> region configuration in MPU system so Xen can fetch code and data from normal
> memory.
>
> To do this, Xen maps the following sections of the binary as separate regions
> (with permissions) :-
> 1. Text (Read only at EL2, execution is permitted)
> 2. RO data (Read only at EL2)
> 3. RO after init data and RW data (Read/Write at EL2)
> 4. Init Text (Read only at EL2, execution is permitted)
> 5. Init data and BSS (Read/Write at EL2)
>
> Before creating a region, we check if the count exceeds the number defined in
> MPUIR_EL2. If so, then the boot fails.
>
> Also we check if the region is empty or not. IOW, if the start and end address
> of a section is the same, we skip mapping the region.
>
> To map a region, Xen uses the PRBAR_EL2, PRLAR_EL2 and PRSELR_EL2 registers.
> One can refer to ARM DDI 0600B.a ID062922 G1.3  "General System Control
> Registers", to get the definitions of these registers. Also, refer to G1.2
> "Accessing MPU memory region registers", the following
>
> ```
> The MPU provides two register interfaces to program the MPU regions:
> - Access to any of the MPU regions via PRSELR_ELx, PRBAR<n>_ELx, and
> PRLAR<n>_ELx.
> ```
>
> We use the above mechanism for mapping sections to MPU memory regions.
>
> MPU specific registers are defined in
> xen/arch/arm/include/asm/arm64/mpu/sysregs.h.
>
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from :-
>
> v1 - 1. Instead of mapping a (XEN_START_ADDRESS + 2MB) as a single MPU region,
> we have separate MPU regions for different parts of the Xen binary. The reason
> being different regions will nned different permissions (as mentioned in the
> linker script).
>
> 2. Introduced a label (__init_data_begin) to mark the beginning of the init data
> section.
>
> 3. Moved MPU specific register definitions to mpu/sysregs.h.
>
> 4. Fixed coding style issues.
>
> 5. Included page.h in mpu/head.S as page.h includes sysregs.h.
> I haven't seen sysregs.h included directly from head.S or mmu/head.S.
> (Outstanding comment not addressed).
>
> v2 - 1. Extracted "enable_mpu()" in a separate patch.
>
> 2. Removed alignment for limit address.
>
> 3. Merged some of the sections for preparing the early boot regions.
>
> 4. Checked for the max limit of MPU regions before creating a new region.
>
> 5. Checked for empty regions.
>
>   xen/arch/arm/Makefile                        |   1 +
>   xen/arch/arm/arm64/mpu/Makefile              |   1 +
>   xen/arch/arm/arm64/mpu/head.S                | 130 +++++++++++++++++++
>   xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  27 ++++
>   xen/arch/arm/include/asm/mm.h                |   2 +
>   xen/arch/arm/include/asm/mpu/arm64/mm.h      |  22 ++++
>   xen/arch/arm/include/asm/mpu/mm.h            |  20 +++
>   xen/arch/arm/xen.lds.S                       |   1 +
>   8 files changed, 204 insertions(+)
>   create mode 100644 xen/arch/arm/arm64/mpu/Makefile
>   create mode 100644 xen/arch/arm/arm64/mpu/head.S
>   create mode 100644 xen/arch/arm/include/asm/arm64/mpu/sysregs.h
>   create mode 100644 xen/arch/arm/include/asm/mpu/arm64/mm.h
>   create mode 100644 xen/arch/arm/include/asm/mpu/mm.h
>
> diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
> index 7792bff597..aebccec63a 100644
> --- a/xen/arch/arm/Makefile
> +++ b/xen/arch/arm/Makefile
> @@ -1,6 +1,7 @@
>   obj-$(CONFIG_ARM_32) += arm32/
>   obj-$(CONFIG_ARM_64) += arm64/
>   obj-$(CONFIG_MMU) += mmu/
> +obj-$(CONFIG_MPU) += mpu/

This change is incorrect. The correct change should have been in :-

--- a/xen/arch/arm/arm64/Makefile
+++ b/xen/arch/arm/arm64/Makefile
@@ -1,5 +1,6 @@
  obj-y += lib/
  obj-$(CONFIG_MMU) += mmu/
+obj-$(CONFIG_MPU) += mpu/

  obj-y += cache.o

I will wait for comments from reviewers before re-spinning the patch.

- Ayan



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 14:57:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 14:57:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818718.1231994 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0MVZ-0004Q5-Ix; Mon, 14 Oct 2024 14:57:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818718.1231994; Mon, 14 Oct 2024 14:57: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 1t0MVZ-0004Py-G8; Mon, 14 Oct 2024 14:57:17 +0000
Received: by outflank-mailman (input) for mailman id 818718;
 Mon, 14 Oct 2024 14:57: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=QJ8R=RK=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t0MVY-0004Ps-9f
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 14:57:16 +0000
Received: from mail-ej1-x641.google.com (mail-ej1-x641.google.com
 [2a00:1450:4864:20::641])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 98fcf4ff-8a3c-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 16:57:14 +0200 (CEST)
Received: by mail-ej1-x641.google.com with SMTP id
 a640c23a62f3a-a9a0c40849cso168038766b.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 07:57:14 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a13f42e8bsm125819366b.58.2024.10.14.07.57.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Oct 2024 07:57:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 98fcf4ff-8a3c-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728917833; x=1729522633; 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=dMZIQjsP5fHzlaQ6yg7Tp1+F+fv6I6NAeH/6zSGualY=;
        b=CZac8+MlrGQBWhBzBr5+oFyfYlVb3E1Wtr+6iodv+YaTQHxDuTNdZrUdGHIjohL1O7
         GOYFm13jUFGZ3UjoYZDEkKe0Xw/jsb+IqW8RCvsvduLlK7XSkvZZ4OJ7taQ+A5Y4QXRk
         IlEpO9t4RHxIIoWkNgiUfWzGrSfFNQJ0iBw80=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728917833; x=1729522633;
        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=dMZIQjsP5fHzlaQ6yg7Tp1+F+fv6I6NAeH/6zSGualY=;
        b=JDrZhCU1eP+n776KqrvdcRI91JLKdSBcznRETCxoVa/lY+QdlfB72giZwOKXo0sIW2
         GdoZEZ2GVfJ1gDJZhIMIjP35fnL4SwFJ0+/XzkNLrKBbuUUJ1um0LlhwOr7G5dfGE1my
         8506HUy6IceucX75tG0DmUPsT+5vkP24qjLWErmSff6kZskbSrV+zNk2a2qO4YJ8lN+0
         r8cHLmTIosM4R2XodGGSOnZf5jXlaNb+DwfKhWxbIJX/dkbDwo8q/r5E8au01mBocywR
         MuxrJqJj6mxZ6MJGV1O7smhafMX043w0A8Hn9D/On3gg1veprAGIsS+Eq6ICcWuqK88v
         yPpg==
X-Gm-Message-State: AOJu0YztLOXLcl/Vxs472SmHkCTsmNE6RVuA5XO0SiCGcv8+mU/+wHvo
	i386xqq87IE0QTh2luCV0ps2WRdceiWEdkpVTv/loZ/Z5w6p8Y0qLvair02OtmpQXxmkp84tCZT
	VFJAnfg==
X-Google-Smtp-Source: AGHT+IExYFkTEebe4Hwhe5Ai6UWab2+C3aQ0za22TXZEX8lpCZupatRlstndF9Ag8oOAjZ2S4aYVrA==
X-Received: by 2002:a17:907:9693:b0:a9a:1cbd:257e with SMTP id a640c23a62f3a-a9a1cbd2a10mr142202866b.29.1728917833160;
        Mon, 14 Oct 2024 07:57:13 -0700 (PDT)
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>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH] xen/spinlock: Fix UBSAN "load of address with insufficient space" in lock_prof_init()
Date: Mon, 14 Oct 2024 15:57:10 +0100
Message-Id: <20241014145710.3295232-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

UBSAN complains:

  (XEN) ================================================================================
  (XEN) UBSAN: Undefined behaviour in common/spinlock.c:794:10
  (XEN) load of address ffff82d040ae24c8 with insufficient space
  (XEN) for an object of type 'struct lock_profile *'
  (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y ubsan=y  Tainted:   C    ]----

This shows up with GCC-14, but not with GCC-12.  I have not bisected further.

Either way, the types for __lock_profile_{start,end} are incorrect.

They are an array of struct lock_profile pointers.  Correct the extern's
types, and adjust the loop to match.

No practical change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Juergen Gross <jgross@suse.com>
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

Found as collatoral damage in
https://github.com/QubesOS/qubes-issues/issues/9501 but it's not related to
the main bug being repoted.

A reported-by tag TBC.
---
 xen/common/spinlock.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c
index 0b877384451d..38caa10a2ea2 100644
--- a/xen/common/spinlock.c
+++ b/xen/common/spinlock.c
@@ -608,9 +608,6 @@ struct lock_profile_anc {
 typedef void lock_profile_subfunc(struct lock_profile *data, int32_t type,
     int32_t idx, void *par);
 
-extern struct lock_profile *__lock_profile_start;
-extern struct lock_profile *__lock_profile_end;
-
 static s_time_t lock_profile_start;
 static struct lock_profile_anc lock_profile_ancs[] = {
     [LOCKPROF_TYPE_GLOBAL] = { .name = "Global" },
@@ -780,13 +777,16 @@ void _lock_profile_deregister_struct(
     spin_unlock(&lock_profile_lock);
 }
 
+extern struct lock_profile *__lock_profile_start[];
+extern struct lock_profile *__lock_profile_end[];
+
 static int __init cf_check lock_prof_init(void)
 {
     struct lock_profile **q;
 
     BUILD_BUG_ON(ARRAY_SIZE(lock_profile_ancs) != LOCKPROF_TYPE_N);
 
-    for ( q = &__lock_profile_start; q < &__lock_profile_end; q++ )
+    for ( q = __lock_profile_start; q < __lock_profile_end; q++ )
     {
         (*q)->next = lock_profile_glb_q.elem_q;
         lock_profile_glb_q.elem_q = *q;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 15:12:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 15:12:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818727.1232003 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Mjw-00075l-QG; Mon, 14 Oct 2024 15:12:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818727.1232003; Mon, 14 Oct 2024 15: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 1t0Mjw-00075e-Nh; Mon, 14 Oct 2024 15:12:08 +0000
Received: by outflank-mailman (input) for mailman id 818727;
 Mon, 14 Oct 2024 15:12: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=pOqc=RK=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t0Mjv-00075W-CZ
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 15:12:07 +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 acc71dd5-8a3e-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 17:12:06 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a01810fffso217858266b.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 08:12:06 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a0046932csm255632166b.127.2024.10.14.08.12.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 08:12:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acc71dd5-8a3e-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728918726; x=1729523526; darn=lists.xenproject.org;
        h=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=tYwb+JnNl/u8LPjjxwvc4gzCjZl4f67aH+gMFBKGQrg=;
        b=TeFv6IfJZ6FnS9iqZxKyeH7x69Pkp68h6U5SB7REfPHKeMsfs3reFhlA8Me37srJ6W
         UezvSGGlgNlTGSDLOkXQZQm4K0F3/ZWjpLX6evLIsmn4OeXZAnirQ6Dh0rW6d+YMzpqU
         LCCKkowOKmFlq2pdDfQruC/i3ctWW8RWio/lOP3byxPHw/yChmFL2veQK56X+jEMxwKt
         /1ptIKEN7hq0SfMN/q+80+LQkwnXDogJQk32Kdk440NapqpkykXrZ+DFJHRuVKPL6NYw
         +8KGbQLU26aN2yfmRYurPaU+oVy9iNyw6p28T9IQeDgkYjBKFsHJCfjD8JtsGN/HDw9T
         XLew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728918726; x=1729523526;
        h=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=tYwb+JnNl/u8LPjjxwvc4gzCjZl4f67aH+gMFBKGQrg=;
        b=vUdCxXATF7QTjs9V+dfRf+TurQ0ksRGJpmxIUcFlnNw0bsZ3le1qCHh+QIjZkUSZpE
         hf1vg/pTbMdrYPKTY8Uuwq7Sq530x4y6jwgUZeDLXfsRpUcX17KGXrRviz4A+j+JtLH0
         0gWvHI5olu2tmCO+o6nb1/1lYCofpkgOqv6BGCe05sHrWLakDQ4x0LusDQVyWbJ2jrK3
         Qtbw+A+D4yj1Ph03cU7W4UE18lgZpI9hYB9f8Judi01y5q3QX01ZemBqmpXLaV9NE1+U
         9R8n7NeYNdkqF1wE0pwhqtEPnUrQg81utIemKqYAOOBylTJNzAgfJQgKuEwrDVe5/nn+
         77sw==
X-Forwarded-Encrypted: i=1; AJvYcCVvKj1zkKQo6U391t6sn/hy6RJDpHUN/nxHYzCKz8PABLySyyyosBt3gfqTJunxTR7aH5jPE6IyG44=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqZDm1vNl1/NxjX6uTj8U71wqhr+qIxUdBud1lMqVatv+Q/4N3
	ro2vzgVv/d8ia4ip5Jp0GqIFEEbW+O+8qt4cFGVXT39hqeZ2y6Kxa3r/KugszP8=
X-Google-Smtp-Source: AGHT+IFTX27IR2xkDfbAFjFS3qTmOWGXyxRN1drJZUhzx1Vf89Tm4oMXWEnA4oMnciWnLN2l80SK0Q==
X-Received: by 2002:a17:906:da83:b0:a7a:9144:e23a with SMTP id a640c23a62f3a-a99e3e437f4mr817869866b.43.1728918725836;
        Mon, 14 Oct 2024 08:12:05 -0700 (PDT)
Message-ID: <7dc142bb-d664-4401-9dbf-37931fe4e346@suse.com>
Date: Mon, 14 Oct 2024 17:12:04 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/spinlock: Fix UBSAN "load of address with
 insufficient space" in lock_prof_init()
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241014145710.3295232-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <20241014145710.3295232-1-andrew.cooper3@citrix.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------Vl1JSo6SKqyNsaj1chqc301U"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------Vl1JSo6SKqyNsaj1chqc301U
Content-Type: multipart/mixed; boundary="------------8EU8eZhNZP4k7fI6G4aWPwl2";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <7dc142bb-d664-4401-9dbf-37931fe4e346@suse.com>
Subject: Re: [PATCH] xen/spinlock: Fix UBSAN "load of address with
 insufficient space" in lock_prof_init()
References: <20241014145710.3295232-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241014145710.3295232-1-andrew.cooper3@citrix.com>
Autocrypt-Gossip: addr=JBeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------8EU8eZhNZP4k7fI6G4aWPwl2
Content-Type: multipart/mixed; boundary="------------OH3Kjv5WmL6MpfetNsuk0QWh"

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

T24gMTQuMTAuMjQgMTY6NTcsIEFuZHJldyBDb29wZXIgd3JvdGU6DQo+IFVCU0FOIGNvbXBs
YWluczoNCj4gDQo+ICAgIChYRU4pID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ICAg
IChYRU4pIFVCU0FOOiBVbmRlZmluZWQgYmVoYXZpb3VyIGluIGNvbW1vbi9zcGlubG9jay5j
Ojc5NDoxMA0KPiAgICAoWEVOKSBsb2FkIG9mIGFkZHJlc3MgZmZmZjgyZDA0MGFlMjRjOCB3
aXRoIGluc3VmZmljaWVudCBzcGFjZQ0KPiAgICAoWEVOKSBmb3IgYW4gb2JqZWN0IG9mIHR5
cGUgJ3N0cnVjdCBsb2NrX3Byb2ZpbGUgKicNCj4gICAgKFhFTikgLS0tLVsgWGVuLTQuMjAt
dW5zdGFibGUgIHg4Nl82NCAgZGVidWc9eSB1YnNhbj15ICBUYWludGVkOiAgIEMgICAgXS0t
LS0NCj4gDQo+IFRoaXMgc2hvd3MgdXAgd2l0aCBHQ0MtMTQsIGJ1dCBub3Qgd2l0aCBHQ0Mt
MTIuICBJIGhhdmUgbm90IGJpc2VjdGVkIGZ1cnRoZXIuDQo+IA0KPiBFaXRoZXIgd2F5LCB0
aGUgdHlwZXMgZm9yIF9fbG9ja19wcm9maWxlX3tzdGFydCxlbmR9IGFyZSBpbmNvcnJlY3Qu
DQo+IA0KPiBUaGV5IGFyZSBhbiBhcnJheSBvZiBzdHJ1Y3QgbG9ja19wcm9maWxlIHBvaW50
ZXJzLiAgQ29ycmVjdCB0aGUgZXh0ZXJuJ3MNCj4gdHlwZXMsIGFuZCBhZGp1c3QgdGhlIGxv
b3AgdG8gbWF0Y2guDQo+IA0KPiBObyBwcmFjdGljYWwgY2hhbmdlLg0KPiANCj4gU2lnbmVk
LW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4NCg0K
UmV2aWV3ZWQtYnk6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCg0KDQpKdWVy
Z2VuDQoNCg==
--------------OH3Kjv5WmL6MpfetNsuk0QWh
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------OH3Kjv5WmL6MpfetNsuk0QWh--

--------------8EU8eZhNZP4k7fI6G4aWPwl2--

--------------Vl1JSo6SKqyNsaj1chqc301U
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/Ey8FAmcNNMQFAwAAAAAACgkQsN6d1ii/Ey+q
bwf/T5IpjPA6W/xiW/hJwYkpTYdRs/qHFECW4eURrzvKk+UWY717KNo9Kb/5mKXzvCe9aXtV2p8R
CBO0ru96UMeD+TOpghweCzNT97eC4WI9mLT7beaGtsH3Til9ZcQ+67ORGYE2/LKXnKqxDTOCQrWW
qKQDTn6jmh26Ln+0uN6yTiPDFvbuaaTvStl5YGQyT2v6XMdAaIFG+8FEUCJIKoEK5iTL+MBRh1VZ
HA7hKS33Ys0FL8HJP74qq2YtMHMF2ThV67A/P+MVBo8Fy8b7dcYqhCbyDqXnEyuuW1Fmr7vF0ETq
sDb7Y4C+7+AFl3HFisFqleu0HqfuCUyfjyYn8ZCuTw==
=X0sd
-----END PGP SIGNATURE-----

--------------Vl1JSo6SKqyNsaj1chqc301U--


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 15:14:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 15:14:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818731.1232014 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Mlq-0007bN-50; Mon, 14 Oct 2024 15:14:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818731.1232014; Mon, 14 Oct 2024 15:14: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 1t0Mlq-0007bG-2Q; Mon, 14 Oct 2024 15:14:06 +0000
Received: by outflank-mailman (input) for mailman id 818731;
 Mon, 14 Oct 2024 15:14: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=QJ8R=RK=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t0Mlo-0007bA-5Z
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 15:14:04 +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 f1c45b9c-8a3e-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 17:14:02 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c42e7adbddso5838486a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 08:14:02 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a0b25226esm200650866b.59.2024.10.14.08.14.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 08:14:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f1c45b9c-8a3e-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728918842; x=1729523642; 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=otp/AbDR7UioIS7zJZCnX6rhbv6c9VLsR0yLTMR+l5w=;
        b=Zj4zK7T2D5bzcoGmMVrDiVlQ46F23cuDBqQOYGy967HJBrFtcImjQwseZwTfax9uy7
         s0zmYNRkavjqJFFIXEpu0WbSCYU7dZlVkLGFBmast09/nxPxI5uIQO9ldUzLq56KrxMw
         DUZRlgFxMNtML+Wk8eqyQAgttR5wyOEiB18JI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728918842; x=1729523642;
        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=otp/AbDR7UioIS7zJZCnX6rhbv6c9VLsR0yLTMR+l5w=;
        b=COMbnTv3kjzbt/eIoE8c0iCj1h4sCJyUccA7f3bow+cwz79eMdmzW/IcSJOhm4QsBT
         +zZZnjXZYJyFNs4QUTs0VacXvDpWo+Q45U+oCS/6Ye0Q1Hx8fp4mRZWiZm9SAWuRjm3T
         OR8v4SwovhAd7DEGIkmKgJOKjmk9NFVj4EZI1umkIZlKzDWF6l52FmoMIAkxHjl9SU3A
         hjDASQdjWTWzb+SMXakCaNp/jAROsp2wlCTDUsLxU0uy1alt6zg0d0tYC7l8maiU0418
         YvJaeh+j0pH/AgdDgtXvoBQEmRtdgB3ePbkShbXZujA6Dx7kAuiW5jGrYgkGWAFQOKH4
         T9Gg==
X-Forwarded-Encrypted: i=1; AJvYcCU9nudcCTBnOn4RKoy2yfnCpUCi/ll2gl2ZCdzX1EiFRbGlL35X0DNXfv2wguDDO/xjrWQTf2LIIOw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwyN0DFV6S/WAsYN1wGSKguRMOnPEpvMevnkSgf3eln8ehR/Ao8
	yGpIGyO6g6cm+eeSQrpS3L4Vcf9mFfuJ54RuvorhqdGC33h3FLzLLb0Y/pVUCts=
X-Google-Smtp-Source: AGHT+IG8Qq5+e6fik3J48bqEzBQ7p7/+n3xESp+iX2NH2+HzNgtnMkLW/jIRFhiSoFF29Syt1I8pOg==
X-Received: by 2002:a17:907:1a50:b0:a9a:a5a:1d47 with SMTP id a640c23a62f3a-a9a0a5a9419mr280287866b.2.1728918841552;
        Mon, 14 Oct 2024 08:14:01 -0700 (PDT)
Message-ID: <db56d29a-5ef5-4d0c-a693-307e51d769e5@citrix.com>
Date: Mon, 14 Oct 2024 16:13:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/spinlock: Fix UBSAN "load of address with
 insufficient space" in lock_prof_init()
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241014145710.3295232-1-andrew.cooper3@citrix.com>
 <7dc142bb-d664-4401-9dbf-37931fe4e346@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <7dc142bb-d664-4401-9dbf-37931fe4e346@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14/10/2024 4:12 pm, Jürgen Groß wrote:
> On 14.10.24 16:57, Andrew Cooper wrote:
>> UBSAN complains:
>>
>>    (XEN)
>> ================================================================================
>>    (XEN) UBSAN: Undefined behaviour in common/spinlock.c:794:10
>>    (XEN) load of address ffff82d040ae24c8 with insufficient space
>>    (XEN) for an object of type 'struct lock_profile *'
>>    (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y ubsan=y  Tainted:  
>> C    ]----
>>
>> This shows up with GCC-14, but not with GCC-12.  I have not bisected
>> further.
>>
>> Either way, the types for __lock_profile_{start,end} are incorrect.
>>
>> They are an array of struct lock_profile pointers.  Correct the extern's
>> types, and adjust the loop to match.
>>
>> No practical change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>
> Reviewed-by: Juergen Gross <jgross@suse.com>

Thanks, and I've got proper Reported-by tag from the conversation on Matrix.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 15:31:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 15:31:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818743.1232028 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0N2h-00029n-Jy; Mon, 14 Oct 2024 15:31:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818743.1232028; Mon, 14 Oct 2024 15:31: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 1t0N2h-00029g-HF; Mon, 14 Oct 2024 15:31:31 +0000
Received: by outflank-mailman (input) for mailman id 818743;
 Mon, 14 Oct 2024 15:31: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=UBJe=RK=bounce.vates.tech=bounce-md_30504962.670d394f.v1-a2a95156427d4fe882ac8822c5642252@srs-se1.protection.inumbo.net>)
 id 1t0N2g-00029H-Vm
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 15:31:31 +0000
Received: from mail136-14.atl41.mandrillapp.com
 (mail136-14.atl41.mandrillapp.com [198.2.136.14])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6170cde0-8a41-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 17:31:29 +0200 (CEST)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-14.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4XS1RM1RwCz705jTx
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 15:31:27 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 a2a95156427d4fe882ac8822c5642252; Mon, 14 Oct 2024 15:31: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: 6170cde0-8a41-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1728919887; x=1729180387;
	bh=qPNWSB8Aaiwjl1oUliY/TuxzP0RaqIWeE0ZoghhhNyg=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=QjtOKgWnfy2df/9kjUqGcA+Lz1qcs0Boyesuqcyrr3gdHAzxmWmeypFrSoML0JZc4
	 sqth6SjmTKSaVKM7Z5/Db3SOFV8z6/q+eZLCe70R0VO+aGLqyS4HAYROMM0K5ghHOv
	 VsVaWyv3yuz7TPBjzX9/smmdxj5FSsUZFyNIgNjjujs9cauSqnB8oDrKDtunIIaezY
	 LXkIaHVG5UX0VTUAiF320SZn6hLQMDOCrmbG5Y1MqrznYMP/I2pqvwD6hDZrHM2gpQ
	 hjeunUOZio1/QMq87ut7iI7JAoIMTH6UUYPH61Bbn9ctQeW/qs530gW0JHPYozjI/S
	 ECU1i0Q4SzaGw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1728919887; x=1729180387; i=anthony.perard@vates.tech;
	bh=qPNWSB8Aaiwjl1oUliY/TuxzP0RaqIWeE0ZoghhhNyg=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=DaPXCbOJ9xviS4TZ8GsqSlg/86FF2SmYHF0vVHNdJWeZhbUv/y60c7/FXmZraDsVS
	 mKh+J67YHWa7V635pl70pjdPNLBoOgcVb8sYu0wG0Wu/Jf8tv2sl4qy3SsPdIeWhU0
	 Yfphnwvg25+PNU64eAZZRdjS6GlYr7CcTGRBmMxZkAry81I7RHFzSFMWTvnOukWL6p
	 mNu+W3w2DdB9SdLuxDYtVlYCyyHk3PkSTLAnYJWkIyU2E0KM53Xitv2sQi3R3zr3uZ
	 ZgJptUyckQjz5+iYVvUIIgvf5MyUiLdTWK/82NjIKvrFz7SU8EmY/VoCbBOm4UVwub
	 5MeKdZOWi3ZLQ==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v4=202/6]=20x86/boot:=20create=20a=20C=20bundle=20for=2032=20bit=20boot=20code=20and=20use=20it?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1728919885576
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Message-Id: <Zw05Tb8UvCQAIo+n@l14>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com> <20241014085332.3254546-3-frediano.ziglio@cloud.com>
In-Reply-To: <20241014085332.3254546-3-frediano.ziglio@cloud.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.a2a95156427d4fe882ac8822c5642252?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241014:md
Date: Mon, 14 Oct 2024 15:31:27 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index 1199291d2b..23ad274c89 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,4 +1,5 @@
>  obj-bin-y += head.o
> +obj-bin-y += built_in_32.o

I don't quite like that this new object name is "built_in_32.o",
It's really closed to "built_in.*" which is used by Rules.mk to collect
all objects in a subdirectory. I don't really have a better suggestion at
the moment.

> @@ -9,9 +10,6 @@ targets   += $(obj32)
>  
>  obj32 := $(addprefix $(obj)/,$(obj32))
>  
> -$(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
> -$(obj)/head.o: $(obj32:.32.o=.bin)
> -
>  CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
>  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
>  CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
> @@ -25,14 +23,34 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
>  $(obj)/%.32.o: $(src)/%.c FORCE
>  	$(call if_changed_rule,cc_o_c)
>  
> +orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
>  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
>  LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
>  LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
>  
> -%.bin: %.lnk
> -	$(OBJCOPY) -j .text -O binary $< $@
> -
> -%.lnk: %.32.o $(src)/build32.lds
> -	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> -
> -clean-files := *.lnk *.bin
> +$(obj)/build32.final.lds: AFLAGS-y += -DFINAL
> +$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S FORCE
> +	$(call if_changed_dep,cpp_lds_S)
> +
> +# link all 32bit objects together
> +$(obj)/built_in_32.tmp.o: $(obj32)
> +	$(LD32) -r -o $@ $^
> +
> +$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.tmp.o
> +## link bundle with a given layout

Could you put the comment aligned with the rest of the recipe? That way
it won't visually separate the rule into several pieces. You can
prefix it with @ so it doesn't show in build logs:

        @# comments

> +	$(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o

I think this wants to be: -T $(filter %.lds,$^) -Map $(patsubst %.bin,%.map,$@) -o $(patsubst %.bin,%.o,$@) $(filter %.o,$^)

:-(, maybe that's lots of $(patsubst,), not sure which is better between
$(patsubst,) and using the stem $*.

Also, if something tries to use built_in_32.tmp.bin, we have a rule that
remove it's prerequisite.

BTW, everything is kind of temporary in a build system, beside the few
files that we want to install on a machine, so having a target named
with "*tmp*" isn't great. But having a rule that create "*tmp*" file but
remove them before the end of its recipe is fine (or those *tmp* aren't
use outside of this recipe).

> +## extract binaries from object
> +	$(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
> +	rm -f $(obj)/built_in_32.$(*F).o
> +
> +# generate final object file combining and checking above binaries
> +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin

So, "other" isn't part of "final", I don't really know what those two
things contains so naming wise I can't suggest anything useful.

But, is "built_in_32.S" really only depends on those two .bin? SHouldn't
it get regenerated if the script changes, or the .lds that --script
option seems to use? What is the "--map" option, an input or output?
But I guess we can ignore the ".map" file because it's part of the
".bin".

Another thing that might be useful to do, is to use the "if_changed"
make macro, that way if the command line of the script changes, make
can remake the output. But maybe it's a bit complicated for this recipe
because it doesn't uses $< or $^.

> +	$(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> +		--script $(obj)/build32.final.lds \
> +		--bin1 $(obj)/built_in_32.other.bin \
> +		--bin2 $(obj)/built_in_32.final.bin \
> +		--map $(obj)/built_in_32.final.map \
> +		--exports cmdline_parse_early,reloc \
> +		--output $@
> +
> +clean-files := built_in_32.*.bin built_in_32.*.map build32.*.lds
> diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
> similarity index 70%
> rename from xen/arch/x86/boot/build32.lds
> rename to xen/arch/x86/boot/build32.lds.S
> index 56edaa727b..50c167aef0 100644
> --- a/xen/arch/x86/boot/build32.lds
> +++ b/xen/arch/x86/boot/build32.lds.S
> @@ -15,22 +15,47 @@
>   * with this program.  If not, see <http://www.gnu.org/licenses/>.
>   */
>  
> -ENTRY(_start)
> +#ifdef FINAL
> +# define GAP 0
> +# define MULT 0
> +# define TEXT_START
> +#else
> +# define GAP 0x010200
> +# define MULT 1
> +# define TEXT_START 0x408020
> +#endif
> +# define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)

Is  ^ this a stray space?


Overall, it's kind of mostly style comment that I had, so feel free to
ignore most of them.

Cheers,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 15:46:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 15:46:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818757.1232038 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0NHO-0004A1-Vu; Mon, 14 Oct 2024 15:46:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818757.1232038; Mon, 14 Oct 2024 15:46: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 1t0NHO-00049u-T0; Mon, 14 Oct 2024 15:46:42 +0000
Received: by outflank-mailman (input) for mailman id 818757;
 Mon, 14 Oct 2024 15:46: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=9kmr=RK=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0NHO-00049o-2L
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 15:46: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 801ead77-8a43-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 17:46:39 +0200 (CEST)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-42f6bec84b5so43034325e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 08:46:39 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d4b6bd555sm11576127f8f.28.2024.10.14.08.46.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 08:46:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 801ead77-8a43-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728920798; x=1729525598; 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=pk64sP4JgdJ9rRgH4PNFA0FWrGItwZgqfeCYLYuY3VM=;
        b=SZZ41J701ryHevB+2P4kPd1bYxRyn8vVN7zR03NO7fLIrN5O7IGaqE8F4buc9PXanR
         kr09FUILmW3tQqNEUB5UakSj4/zOWfupN2slcAA9wM7053xtSjbOHYYAtti3rLjIqP/X
         kn0DiT/od2ioX0LcxC1KyJx/7h6he7qyj0PBa+tChJ5z+ksujZN5RPf0i7hBz8ZRuvu1
         Li7F7WA+Gx/KLi0PbuPYkGJASmtG6esGNbKAUxnFSCbF7mtkjgi340TMKwmRMMvddgDR
         ZF/jp1Zr8HKMsMgZP5XaTcrEytQAeSTJU1mphajUke5DX+FDgoNOi39voMtc/2uMSBmZ
         ndvQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728920798; x=1729525598;
        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=pk64sP4JgdJ9rRgH4PNFA0FWrGItwZgqfeCYLYuY3VM=;
        b=PySzAoLDVypq3fviOKgPjcQhgHo3NDWmBGcSObk8cnqvG05ixU3KEZq0u3GWumeEG8
         0ZWpvlkDUL8D3g09LVKHvETfBPEVU39Em4gxe8iuLgm9y3r4s0fuU7gsAeXjwyUvC9cx
         iY4xKjvxfHt1d7Qhq2cxKmh3kD53qUlcSdbuGEZnx13Y3HQBdWA1EbYNuEP8AaLf5JcF
         x51bHzG1i/lSq8gM28mi+KfqmQaDYM0ezjFALpAoATwSsrqM7Fl3EBmfngHMrv2Nvo9n
         LPM3RehBrwtoJ0O+AxJ1g9mc+661lRhk8Izy6zcV2DXtutbqD0zm0ofOSTIsLkB/zxHm
         Bz8A==
X-Gm-Message-State: AOJu0YwsOr5hCUoGsg+T9RskLxRR01S8cVeZtxQUZnyB5dTgjlsjqW8z
	6EFXOfnqLskPhlWJQzoW0BlxTXaE7ujRIWR1FxiaXsGmecu3eZ3kvHSzVgywbw==
X-Google-Smtp-Source: AGHT+IGnQBPX3VKvFOyw5bJdkgSKppYb04HbN5bsdlk1uXVLrJMU1ba+kTCDOK1G5Qn7KePnHgqMBg==
X-Received: by 2002:a05:600c:3b28:b0:42c:b905:2bf9 with SMTP id 5b1f17b1804b1-4311dee74dbmr114594625e9.16.1728920798466;
        Mon, 14 Oct 2024 08:46:38 -0700 (PDT)
Message-ID: <d55397b9-0b13-493c-89a6-be12f17d3c3b@suse.com>
Date: Mon, 14 Oct 2024 17:46:37 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Anthony PERARD <anthony.perard@vates.tech>,
 Frediano Ziglio <frediano.ziglio@cloud.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>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
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: <Zw05Tb8UvCQAIo+n@l14>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14.10.2024 17:31, Anthony PERARD wrote:
> On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
>> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
>> index 1199291d2b..23ad274c89 100644
>> --- a/xen/arch/x86/boot/Makefile
>> +++ b/xen/arch/x86/boot/Makefile
>> @@ -1,4 +1,5 @@
>>  obj-bin-y += head.o
>> +obj-bin-y += built_in_32.o
> 
> I don't quite like that this new object name is "built_in_32.o",
> It's really closed to "built_in.*" which is used by Rules.mk to collect
> all objects in a subdirectory. I don't really have a better suggestion at
> the moment.

blob32.o? bundle32.o?

Jan



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 15:52:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 15:52:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818762.1232047 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0NMt-0005ji-Ig; Mon, 14 Oct 2024 15:52:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818762.1232047; Mon, 14 Oct 2024 15:52: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 1t0NMt-0005jb-G8; Mon, 14 Oct 2024 15:52:23 +0000
Received: by outflank-mailman (input) for mailman id 818762;
 Mon, 14 Oct 2024 15:52: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=QJ8R=RK=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t0NMs-0005jV-8U
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 15:52:22 +0000
Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com
 [2a00:1450:4864:20::642])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4c1ce520-8a44-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 17:52:21 +0200 (CEST)
Received: by mail-ej1-x642.google.com with SMTP id
 a640c23a62f3a-a99f1fd20c4so331068366b.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 08:52:21 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a1cf76b1asm66362366b.132.2024.10.14.08.52.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 08:52:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c1ce520-8a44-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728921141; x=1729525941; 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=hoUHiVbYxgVUR25eEcRHopYWBdb7cDZO57dBiAeiJL8=;
        b=YsB3lZcCPprZJS6nrZX3Olz/m18+I9/P/wEFhphFLJRev1PxQOGO1lBwCw0AREL58U
         wK/N1UoNZxopLNt71DnGYFkztDGahYi95VHRXEIadgUuEP9+s/SJ/5SXIpq6i2Fz6bRU
         aibRELfutCU03H15vCYd4MV/KBzF89mhMkTPE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728921141; x=1729525941;
        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=hoUHiVbYxgVUR25eEcRHopYWBdb7cDZO57dBiAeiJL8=;
        b=FOiQ6gPCA8Pg1/O5xtQ7tg590SajZboOevpLiQgv8C9HHKbBNu4AE4RC4x6eLLCBcq
         shv8pemCy3jy+VHOcqs+l/y4pAG6zEINVl6uEi5wjgsqTMPjF3W6t20LE8S/mxBS9WsG
         D4c8Z4MXUzDxwcSQLWVQNcP+U53692SharTVTeaZh+Y6pwKW7RCWJHs66F0G4W2id7M3
         csHuUe62DRxZC2p5Npo4APc2SSDytJd3WCsUz6OIxJ6LDGTj+UAK6/ZFjkSgrwt7GVQc
         Q6E0L9FkiVTMgV2AiDQwd6poApdxoPdYoyu+WaYwJj45FDm9CSxDcy4fx0c4ycHIj/tV
         NALw==
X-Gm-Message-State: AOJu0YyJ+qCdN08F3dhZA2PEuSsEJJKWbZKiivwKmLKwr0b5J+k7kVlG
	AkqQzS0e7HynU1f9uu3oE+IW7gc4KVYxzarqgetVXYZxKCeY/4j9cDLZmWwMMP4=
X-Google-Smtp-Source: AGHT+IGeSOCCGPsnUFJlRdBV+LwhFnnn30ikYlBbbq7+kgZjrKkWDAJGx7PJuzKas29VB21eHALIgA==
X-Received: by 2002:a17:906:df46:b0:a9a:1092:b10c with SMTP id a640c23a62f3a-a9a1092b143mr175074166b.12.1728921140510;
        Mon, 14 Oct 2024 08:52:20 -0700 (PDT)
Message-ID: <903195fd-680a-4701-9977-d2dbe1142f36@citrix.com>
Date: Mon, 14 Oct 2024 16:52:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Anthony PERARD <anthony.perard@vates.tech>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zw05Tb8UvCQAIo+n@l14>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14/10/2024 4:31 pm, Anthony PERARD wrote:
> On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
>> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
>> index 1199291d2b..23ad274c89 100644
>> --- a/xen/arch/x86/boot/Makefile
>> +++ b/xen/arch/x86/boot/Makefile
>> @@ -1,4 +1,5 @@
>>  obj-bin-y += head.o
>> +obj-bin-y += built_in_32.o
> I don't quite like that this new object name is "built_in_32.o",
> It's really closed to "built_in.*" which is used by Rules.mk to collect
> all objects in a subdirectory. I don't really have a better suggestion at
> the moment.

Similarity was the point of suggesting it.

It is the end result of "the 32bit objects we've done magic with to
shoehorn into 64bit", and a improvement on "cbundle" from earlier
iterations.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 16:19:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 16:19:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818775.1232057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0NmS-0001Kz-GJ; Mon, 14 Oct 2024 16:18:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818775.1232057; Mon, 14 Oct 2024 16:18: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 1t0NmS-0001Ks-Dk; Mon, 14 Oct 2024 16:18:48 +0000
Received: by outflank-mailman (input) for mailman id 818775;
 Mon, 14 Oct 2024 16:18: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 1t0NmR-0001Ki-93; Mon, 14 Oct 2024 16:18: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 1t0NmR-0007QS-2H; Mon, 14 Oct 2024 16:18: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 1t0NmQ-000239-K8; Mon, 14 Oct 2024 16:18:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0NmQ-0002H6-Jl; Mon, 14 Oct 2024 16:18: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=ZggE4JbgJYCEY19xeuxNvUjWv6/WhI2yfHcwzADbWes=; b=sUNuupZ8EyiOUh4KZyEweUpiOR
	xUyxqdUGAfDdPYme8g7/a35Mu+0NZKN+xb8LlXfQZgb1xSf2GuuLyUo/4lZhzGI/WA0VtSuC9n3Vn
	xYu2A4FZIbXT3ycC2PcK6RTpwLM+N+XEp2SRckFvAWhbl+jfXFWThWY2T4BQS37lFJOc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188083-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188083: tolerable FAIL - PUSHED
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:guest-localmigrate:fail:allowable
X-Osstest-Versions-This:
    ovmf=21767dcf4e04ade9e679f8562513da8ceedf19ec
X-Osstest-Versions-That:
    ovmf=fcd9570c8d8164b42f907137a3a6e78977cc860a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 14 Oct 2024 16:18:46 +0000

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

Failures :-/ but no regressions.

Regressions which are regarded as allowable (not blocking):
 test-amd64-amd64-xl-qemuu-ovmf-amd64 16 guest-localmigrate fail REGR. vs. 188065

version targeted for testing:
 ovmf                 21767dcf4e04ade9e679f8562513da8ceedf19ec
baseline version:
 ovmf                 fcd9570c8d8164b42f907137a3a6e78977cc860a

Last test of basis   188065  2024-10-12 09:13:32 Z    2 days
Testing same since   188083  2024-10-14 15:15:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Nhi Pham <nhi@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                         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 :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   fcd9570c8d..21767dcf4e  21767dcf4e04ade9e679f8562513da8ceedf19ec -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 16:25:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 16:25:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818783.1232068 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0NtE-0002rS-7j; Mon, 14 Oct 2024 16:25:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818783.1232068; Mon, 14 Oct 2024 16:25: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 1t0NtE-0002rL-4n; Mon, 14 Oct 2024 16:25:48 +0000
Received: by outflank-mailman (input) for mailman id 818783;
 Mon, 14 Oct 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 <osstest-admin@xenproject.org>)
 id 1t0NtC-0002r8-RC; Mon, 14 Oct 2024 16:25: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 1t0NtC-0007Wv-KP; Mon, 14 Oct 2024 16:25: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 1t0NtC-0002Fi-2a; Mon, 14 Oct 2024 16:25:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0NtC-0005gQ-2C; Mon, 14 Oct 2024 16:25: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=0t0Mw7nS34I3zdAAPnsofjh4YVKnHFi2M4SYKiDWw/I=; b=OJo2nndhS/ok3j9OGvF5wKxYFa
	EWGQfrsM0bmMDv3biPTJ4eYnQR9QfvinKDXMzaznAY0J553/GCUhVIV2sLbgxaI2nHqaiieRwoX4E
	isD3+QZTG8dJQrV9XT1vnZ8bg3G3ACyacCwueCQ9MGDd6kBtUxy62qF0xwqMNQ/SMoV4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188081-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188081: 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: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-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-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-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: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-amd64-amd64-libvirt-vhd: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-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2: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-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=6485cf5ea253d40d507cd71253c9568c5470cd27
X-Osstest-Versions-That:
    linux=36c254515dc6592c44db77b84908358979dd6b50
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 14 Oct 2024 16:25:46 +0000

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

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 188073
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188073
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188073
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188073
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188073
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188073
 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-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-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          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-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-armhf-armhf-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                6485cf5ea253d40d507cd71253c9568c5470cd27
baseline version:
 linux                36c254515dc6592c44db77b84908358979dd6b50

Last test of basis   188073  2024-10-13 06:36:24 Z    1 days
Failing since        188077  2024-10-13 20:42:34 Z    0 days    2 attempts
Testing same since   188081  2024-10-14 05:19:18 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alan Stern <stern@rowland.harvard.edu>
  Basavaraj Natikar <Basavaraj.Natikar@amd.com>
  Benjamin Tissoires <bentiss@kernel.org>
  Chris Hixon <linux-kernel-bugs@hixontech.com>
  Danilo Krummrich <dakr@kernel.org>
  Fiona Behrens <me@kloenk.dev>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Guilherme Giacomo Simoes <trintaeoitogc@gmail.com>
  Icenowy Zheng <uwu@icenowy.me>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jinjie Ruan <ruanjinjie@huawei.com>
  Jiri Kosina <jkosina@suse.com>
  John Keeping <jkeeping@inmusicbrands.com>
  Jose Alberto Reguero <jose.alberto.reguero@gmail.com>
  Kexy Biscuit <kexybiscuit@aosc.io>
  Linus Torvalds <torvalds@linux-foundation.org>
  Matthias Kaehlcke <matthias@kaehlcke.net>
  Oliver Neukum <oneukum@suse.com>
  Pali Rohár <pali@kernel.org>
  Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
  Richard <hobbes1069@gmail.com>
  Roy Luo <royluo@google.com>
  Selvarasu Ganesan <selvarasu.g@samsung.com>
  Skyler <skpu@pm.me>
  Stefan Blum <stefan.blum@gmail.com>
  Stefan Blum <stefanblum2004@gmail.com>
  Steve French <stfrench@microsoft.com>
  SurajSonawane2415 <surajsonawane0215@gmail.com>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Wade Wang <wade.wang@hp.com>
  WangYuli <wangyuli@uniontech.com>
  Wentao Guan <guanwentao@uniontech.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   36c254515dc6..6485cf5ea253  6485cf5ea253d40d507cd71253c9568c5470cd27 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 16:32:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 16:32:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818796.1232077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Nzu-0004eH-36; Mon, 14 Oct 2024 16:32:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818796.1232077; Mon, 14 Oct 2024 16: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 1t0Nzu-0004eA-0Z; Mon, 14 Oct 2024 16:32:42 +0000
Received: by outflank-mailman (input) for mailman id 818796;
 Mon, 14 Oct 2024 16: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=qGCd=RK=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0Nzt-0004e4-FW
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 16:32:41 +0000
Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com
 [2607:f8b0:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ecfda495-8a49-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 18:32:39 +0200 (CEST)
Received: by mail-oi1-x236.google.com with SMTP id
 5614622812f47-3e5c89b013aso1947985b6e.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 09:32:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ecfda495-8a49-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728923558; x=1729528358; 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=CzzBY1ZhFPH5/v/KiILlLgN1gmTiaKNc2dMaTmOv8CU=;
        b=WusfwasH3232iaJRDpRPHq7zTDcExFgKY/E8qmYqQDgekUJu+LX95fdpnZKoWtBFpE
         rjjjmYtCfc9aWCOD5GIsezo8nAiAKlQmMzVZPigRIFYjcPf0swFEu/QIiP0tXvs5iM+n
         DIVNhcCmld3HZ8FMmQFDPygKe9I/FspTvMf1c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728923558; x=1729528358;
        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=CzzBY1ZhFPH5/v/KiILlLgN1gmTiaKNc2dMaTmOv8CU=;
        b=g2Ka18kRzGeGG3ub+WFGuL6JkaVji1X/02cdtIX0821ESm2Y0PfYDZwNTOltM4wzmK
         IK3jRiO7h+oV9TAQtdZ/F9zgSgdl9tKtMQD9vS/4pCV1wDgjWTeuV6wRHTZhhjb15ocZ
         2RMxvgbyGIP/37FBD0E27z2ImTLnPci5T3e9oIIh4Zv4ZniIljYf3/rTWruOJU5oPMg/
         4IFlhY/mfoR4K5AGtgMY53RQ0MWLueCbRa3k3BEwlE71kF0xgJm0Tn0VDwPagoT14M9d
         nymaKk5kQ2TzhAzc/GBiALREOyV6B8cokm34BWU36yvkeDT7G5qzOkPq2UqjEt9j3EsL
         8nNg==
X-Gm-Message-State: AOJu0YzOcvr38fa88KMQpUYq1kD2L/C7pMjzZ0XvskxTZPYl1nkQ99hI
	nHgVCd5RYQKXvk9WUpbrY8rh75MQ+pyKtbxYT2lKBb8faVvRKJsvssJCQkBtcXIl7EYbdvC+hCF
	NDdoWUZDTIG9s/G0zGak+XbNMroXv8fdG9oU2Eb7tukTfMl7cabU=
X-Google-Smtp-Source: AGHT+IGCgPZQ5ZwwUmoSWntLgX+L53Ng2T+9p2seArTPOPdv0Xp4dITbcwKIrxgjknnzAy4gxIDLC7CgUJWl23RwSSo=
X-Received: by 2002:a05:6808:2119:b0:3e3:a7f2:1aa4 with SMTP id
 5614622812f47-3e5c90b9da8mr8375209b6e.8.1728923557749; Mon, 14 Oct 2024
 09:32:37 -0700 (PDT)
MIME-Version: 1.0
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
In-Reply-To: <Zw05Tb8UvCQAIo+n@l14>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 14 Oct 2024 17:32:26 +0100
Message-ID: <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com>
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Anthony PERARD <anthony.perard@vates.tech>
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>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 14, 2024 at 4:31=E2=80=AFPM Anthony PERARD
<anthony.perard@vates.tech> wrote:
>
> On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
> > diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> > index 1199291d2b..23ad274c89 100644
> > --- a/xen/arch/x86/boot/Makefile
> > +++ b/xen/arch/x86/boot/Makefile
> > @@ -1,4 +1,5 @@
> >  obj-bin-y +=3D head.o
> > +obj-bin-y +=3D built_in_32.o
>
> I don't quite like that this new object name is "built_in_32.o",
> It's really closed to "built_in.*" which is used by Rules.mk to collect
> all objects in a subdirectory. I don't really have a better suggestion at
> the moment.
>

It was cbundle.o before, but people preferred built_in_32.o.
It's a collection of object files like built_in.o so it does not seem
so bad to me.
But seen other replies, some other people prefer "bundle".

> > @@ -9,9 +10,6 @@ targets   +=3D $(obj32)
> >
> >  obj32 :=3D $(addprefix $(obj)/,$(obj32))
> >
> > -$(obj)/head.o: AFLAGS-y +=3D -Wa$(comma)-I$(obj)
> > -$(obj)/head.o: $(obj32:.32.o=3D.bin)
> > -
> >  CFLAGS_x86_32 :=3D $(subst -m64,-m32 -march=3Di686,$(XEN_TREEWIDE_CFLA=
GS))
> >  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
> >  CFLAGS_x86_32 +=3D -Werror -fno-builtin -g0 -msoft-float -mregparm=3D3
> > @@ -25,14 +23,34 @@ $(obj32): XEN_CFLAGS :=3D $(CFLAGS_x86_32) -fpic
> >  $(obj)/%.32.o: $(src)/%.c FORCE
> >       $(call if_changed_rule,cc_o_c)
> >
> > +orphan-handling-$(call ld-option,--orphan-handling=3Derror) :=3D --orp=
han-handling=3Derror
> >  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) :=3D --no-warn-rw=
x-segments
> >  LDFLAGS_DIRECT +=3D $(LDFLAGS_DIRECT-y)
> >  LD32 :=3D $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
> >
> > -%.bin: %.lnk
> > -     $(OBJCOPY) -j .text -O binary $< $@
> > -
> > -%.lnk: %.32.o $(src)/build32.lds
> > -     $(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> > -
> > -clean-files :=3D *.lnk *.bin
> > +$(obj)/build32.final.lds: AFLAGS-y +=3D -DFINAL
> > +$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.=
S FORCE
> > +     $(call if_changed_dep,cpp_lds_S)
> > +
> > +# link all 32bit objects together
> > +$(obj)/built_in_32.tmp.o: $(obj32)
> > +     $(LD32) -r -o $@ $^
> > +
> > +$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.tmp.=
o
> > +## link bundle with a given layout
>
> Could you put the comment aligned with the rest of the recipe? That way
> it won't visually separate the rule into several pieces. You can
> prefix it with @ so it doesn't show in build logs:
>
>         @# comments
>

Yes, they look more or less the same but technically pretty different.
The "## XXX" is a comment for make command, the "\t@#comment" is a way
to tell make to not print the command before launching it so make will
launch a shell command "# comment".
Yes, indentation does not make it clear. Not that launching a shell to
execute a comment will take a long time. On the other hand, here that
comment is more for the rule than for the shell. Maybe something like

target:
      command \
           # do something

(personally I found it even more ugly)

> > +     $(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$(*=
F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
>
> I think this wants to be: -T $(filter %.lds,$^) -Map $(patsubst %.bin,%.m=
ap,$@) -o $(patsubst %.bin,%.o,$@) $(filter %.o,$^)
>
> :-(, maybe that's lots of $(patsubst,), not sure which is better between
> $(patsubst,) and using the stem $*.
>

Not strong about stem or patsubst.
The 2 filters seem good, they suggest lds for the script and objects
for the input, which makes sense.

> Also, if something tries to use built_in_32.tmp.bin, we have a rule that
> remove it's prerequisite.
>
> BTW, everything is kind of temporary in a build system, beside the few
> files that we want to install on a machine, so having a target named
> with "*tmp*" isn't great. But having a rule that create "*tmp*" file but
> remove them before the end of its recipe is fine (or those *tmp* aren't
> use outside of this recipe).
>

Mumble... yes, I think the XX.tmp.o was a temporary internal rule file.
So we still don't agree on one name, and now we want to find also
another, tricky.
More or less if it can help, one is a 32 bit object file that bundle
together multiple 32 bits object files while the other is the
conversion of the 32 bits bundle file to 64 bits.
XXX_32.o and XXX_32as64.o ??

> > +## extract binaries from object
> > +     $(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
> > +     rm -f $(obj)/built_in_32.$(*F).o
> > +
> > +# generate final object file combining and checking above binaries
> > +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.=
final.bin
>
> So, "other" isn't part of "final", I don't really know what those two
> things contains so naming wise I can't suggest anything useful.
>
> But, is "built_in_32.S" really only depends on those two .bin? SHouldn't
> it get regenerated if the script changes, or the .lds that --script
> option seems to use? What is the "--map" option, an input or output?

Both map file and linker script are dependency of the bin files so no probl=
ems.
Yes, potentially you want to generate if the python script change.
Potentially also if Makefile, make, ld or any other command change,
but that possibly is kind of "we don't usually care".

> But I guess we can ignore the ".map" file because it's part of the
> ".bin".
>

Yes, I suppose they are, although we can make it explicit both
generating them and using as dependencies.

> Another thing that might be useful to do, is to use the "if_changed"
> make macro, that way if the command line of the script changes, make
> can remake the output. But maybe it's a bit complicated for this recipe
> because it doesn't uses $< or $^.
>

I usually simply add Makefile to the dependencies. It works too.

> > +     $(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> > +             --script $(obj)/build32.final.lds \
> > +             --bin1 $(obj)/built_in_32.other.bin \
> > +             --bin2 $(obj)/built_in_32.final.bin \
> > +             --map $(obj)/built_in_32.final.map \
> > +             --exports cmdline_parse_early,reloc \
> > +             --output $@
> > +
> > +clean-files :=3D built_in_32.*.bin built_in_32.*.map build32.*.lds
> > diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.=
lds.S
> > similarity index 70%
> > rename from xen/arch/x86/boot/build32.lds
> > rename to xen/arch/x86/boot/build32.lds.S
> > index 56edaa727b..50c167aef0 100644
> > --- a/xen/arch/x86/boot/build32.lds
> > +++ b/xen/arch/x86/boot/build32.lds.S
> > @@ -15,22 +15,47 @@
> >   * with this program.  If not, see <http://www.gnu.org/licenses/>.
> >   */
> >
> > -ENTRY(_start)
> > +#ifdef FINAL
> > +# define GAP 0
> > +# define MULT 0
> > +# define TEXT_START
> > +#else
> > +# define GAP 0x010200
> > +# define MULT 1
> > +# define TEXT_START 0x408020
> > +#endif
> > +# define DECLARE_IMPORT(name) name =3D . + (__LINE__ * MULT)
>
> Is  ^ this a stray space?
>

Yes, a single ASCII character 32. Surely we don't want tabs. Other
parts of the file use 2 spaces indentation, others 8 spaces. Or are
you suggesting to not indent them?

>
> Overall, it's kind of mostly style comment that I had, so feel free to
> ignore most of them.
>

Naming can be cumbersome but usually helps readability.

> Cheers,
>
> --
>
> Anthony Perard | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 18:26:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 18:26:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818812.1232088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Pm0-0001Gy-23; Mon, 14 Oct 2024 18:26:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818812.1232088; Mon, 14 Oct 2024 18: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 1t0Plz-0001Gr-VL; Mon, 14 Oct 2024 18:26:27 +0000
Received: by outflank-mailman (input) for mailman id 818812;
 Mon, 14 Oct 2024 18: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=043R=RK=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t0Ply-0001CD-Cr
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 18:26:26 +0000
Received: from fhigh-a4-smtp.messagingengine.com
 (fhigh-a4-smtp.messagingengine.com [103.168.172.155])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cfe570e9-8a59-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 20:26:23 +0200 (CEST)
Received: from phl-compute-02.internal (phl-compute-02.phl.internal
 [10.202.2.42])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 311BE114017B
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 14:26:21 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-02.internal (MEProxy); Mon, 14 Oct 2024 14:26:21 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA for
 <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 14:26:20 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cfe570e9-8a59-11ef-a0be-8be0dac302b0
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=1728930381; x=1729016781; bh=M7VzohHjJK
	xRVvqGu20VrrL4HtL5ugfK54HKD2nUD3o=; b=XOgLjqcrdCojCya5ZG2M4aBeQh
	Hke5g6NO1m2YMNVTyQG+dntMrad4vQ3ZZ4vjE4aiQq2HmkaJ4WNNcnCl/nNkX5VZ
	RKZomB4Vfzao0i+RNYxivqKCb1fGsDMG+CuNE6rAmemCFMvxxIDHE6IVqibwhLli
	7hmob9oqX7tVVREIqphu1UPli+N2sbB3mOg+GsqA6+VgJ1zr8KIj02lmBbYXBYH1
	mRyE0AV5FBXa/m0VlD9Jq1R/h2EyXxEzYm+sbcRXauKp7rrdD/o27kkVDnFccj8P
	fRjiDSlTfoMd/rydu2kLMD0lMnmWFknW5fzKxaVKv3LA2hz3HrFQiGxW1dvg==
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=fm2; t=
	1728930381; x=1729016781; bh=M7VzohHjJKxRVvqGu20VrrL4HtL5ugfK54H
	KD2nUD3o=; b=nIBNwuw4EeeTj+9B6t7gtG/hHLjPaWXsZ+wc7UKxEhJQfIDZGNl
	vluUtGb0X3Q9c2ZB3fa8DMuZjjAv2m5rfAjKsfl0ptjcxqrdCuP4gid3Tk3zDjRU
	MmO7N1P/injsM9l4PFBjgm6JooGm9ycIzlUzCeem1f/cciAaVQd/EKefi6y5QWGJ
	faI9WwGhVbBNAI/9hQH96TqLQBXFRB3UeoPA+vu3uUm0ekWbv1JiIIVhaMt4i38W
	YLcQSZcxidpWLWq9xg8jc8/MS6J279N2djAZ/araAFpgYZtFXQo8q2YEOnT+JisV
	GKM7YLmAgKSyiRmJK0655KXgzGUVJvQjv/w==
X-ME-Sender: <xms:TGINZ16KacgwLSOyQ6Hu9Ut9cKEC9NpaXcRBOO1ybioEYOIWSrkUdQ>
    <xme:TGINZy563oH2F2uXEEqU8ZsON3L92qbwqpOsQouBMCntCFmhPsxhR5wpCHP32OIbS
    c5ztQlAriZu8w>
X-ME-Received: <xmr:TGINZ8exR6tWwTd4-P4OQv4L4JUNBLE9PZXyQG7BkprdqGV8W0FVi_Ilhz6XhKdNU5_KA29XEMk8stHa17diEcX9KweFmipkGw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdeghedguddvhecutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdp
    uffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecunecujfgurhepfffhvf
    fukfggtggusehgtderredttdejnecuhfhrohhmpeforghrvghkucforghrtgiihihkohif
    shhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinh
    hgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpeegheetgeeihfekvdeiuddtjeei
    ueegkeehteegkedthfektdegvdegvefhheeftdenucffohhmrghinhepkhgvrhhnvghlrd
    horhhgpdhgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgr
    mhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgsh
    hlrggsrdgtohhmpdhnsggprhgtphhtthhopedupdhmohguvgepshhmthhpohhuthdprhgt
    phhtthhopeigvghnqdguvghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrgh
X-ME-Proxy: <xmx:TGINZ-LnlhFYVjds3TxSYZ26Hx6g-a_qQd5WMl8sUdyB9ZpcR8Aa_A>
    <xmx:TGINZ5KLMQ4xa0oNhrbsZdOGMhVNJOLVBawTjRoEvLfF6nDKUodq9g>
    <xmx:TGINZ3w1_FUX89ProUI2eSznLDfQXMMXiSht7hQNZyqikvnvMhugnQ>
    <xmx:TGINZ1K_XX2ku1h2JEVJCFdZoGFGOY4U2pf0uuU-zU24e9GYCmQ9Qw>
    <xmx:TWINZ7yguA7jbjRG7GGK8xfZGVwZAAOvZD7YSL7DrIKpQa26gZIPEhad>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 14 Oct 2024 20:26:18 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Subject: Xen PAT settings vs Linux PAT settings
Message-ID: <Zw1iSuLD7473m07N@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="pu0ZT9iPPfhWGJd/"
Content-Disposition: inline


--pu0ZT9iPPfhWGJd/
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 14 Oct 2024 20:26:18 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Subject: Xen PAT settings vs Linux PAT settings

Hi,

It looks like we've identified the second buggy driver that somewhere
assumes PAT is configured as Linux normally do natively - nvidia binary
one this time[3]. The first one affected was i915, but it turned out to be
a bug in Linux mm. It was eventually fixed[1], but it was quite painful
debugging. This time a proper fix is not known yet. Since the previous
issue, Qubes OS carried a patch[2] that changes Xen to use same PAT as
Linux. We recently dropped this patch, since the Linux fix reached all
supported by us branches, but apparently it wasn't all...

Anyway, would it be useful (and acceptable) for upstream Xen to have
a kconfig option (behind UNSUPPORTED or so) to switch this behavior?
Technically, it's a PV ABI violation, and it does break few things
(definitely PV domU with passthrough are affected - Xen considers them
L1TF vulnerable then; PV live migration is most likely broken too). But
on the other hand, if one doesn't use affected feature, it allows to
workaround an issue that otherwise is very annoying to debug...


[1] git.kernel.org/torvalds/c/548cb932051fb6232ac983ed6673dae7bdf3cf4c
[2] https://github.com/QubesOS/qubes-vmm-xen/blob/44e9fd9f3b1ebf1cf43674b5a=
1c2669f7dd253f5/1019-Use-Linux-s-PAT.patch
[3] https://github.com/QubesOS/qubes-issues/issues/9501
--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcNYkoACgkQ24/THMrX
1yzg0AgAksa+WvRTW0vrh4Qf8T9wiHjo0psyVpYWFt5ZGCH6gYX2cHpABByg8Dj1
KROPRo+BX4JcJ5KLU8cLFSHvU1pCMn47o9LLTBDO6NBX4fZiqdVAoBE/gxcJggKJ
SyCVpF4uNggIjPYutkbysJKh8Me/zg6rUH59l5Z3DrX18uSbJzo+tYv0W7dQWuH5
CIDK4ipcySo1704IUloEBsneuXtlAEypk2vELHPytGF0TFcyOhj2TpUBhDCZ59Yd
VCRHgG84E7e/Z4heSprbuM1OjCR37a32x55TdMjzXLG7nJRZwoEr36rbbOGSSC6p
4QTbNY8rNdmIr/Vrn+tG2UevJ6HsuA==
=/l5S
-----END PGP SIGNATURE-----

--pu0ZT9iPPfhWGJd/--


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 18:41:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 18:41:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818820.1232098 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Q0d-0003xv-98; Mon, 14 Oct 2024 18:41:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818820.1232098; Mon, 14 Oct 2024 18:41: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 1t0Q0d-0003xo-4p; Mon, 14 Oct 2024 18:41:35 +0000
Received: by outflank-mailman (input) for mailman id 818820;
 Mon, 14 Oct 2024 18:41: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=v7KN=RK=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t0Q0b-0003xi-PU
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 18:41:34 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on2060a.outbound.protection.outlook.com
 [2a01:111:f403:2613::60a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ed2abb8e-8a5b-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 20:41:31 +0200 (CEST)
Received: from DU7P191CA0021.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:54e::21)
 by AS8PR08MB6712.eurprd08.prod.outlook.com (2603:10a6:20b:393::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 18:41:27 +0000
Received: from DB5PEPF00014B89.eurprd02.prod.outlook.com
 (2603:10a6:10:54e:cafe::16) by DU7P191CA0021.outlook.office365.com
 (2603:10a6:10:54e::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27 via Frontend
 Transport; Mon, 14 Oct 2024 18:41:26 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5PEPF00014B89.mail.protection.outlook.com (10.167.8.197) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8069.17
 via Frontend Transport; Mon, 14 Oct 2024 18:41:26 +0000
Received: ("Tessian outbound 5e8afd4f8faf:v473");
 Mon, 14 Oct 2024 18:41:26 +0000
Received: from Lccd797e1bc3c.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 CA1EAF8F-12F0-4E44-A3D1-B5FF9A6AB7A1.1; 
 Mon, 14 Oct 2024 18:41:20 +0000
Received: from EUR03-AM7-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lccd797e1bc3c.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 14 Oct 2024 18:41:20 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB9PR08MB6345.eurprd08.prod.outlook.com (2603:10a6:10:252::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct
 2024 18:41:16 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 18:41: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: ed2abb8e-8a5b-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=bvoJ7kOxApRkQlk1GaCJSzbJHzPT41ObKriSPjFe35ydaBYVKsx0pxLvT6tLmlwRbj6N8eTlFrTopplD6/UWvkBkxk+bU3hpD0OmoxLuNlCTRnH4wfLv45hOnqr5xTbKekKYdI73UkXVaq0KgnWYmfwF27Xqehk/AqIWYknHY7yjxO02d3jX/hnTjbgvGX9D8Ch4VHAgCxCKg9IGPDAdYyaBVaLDDBckDgSGgcKAzRTLaF3WCpIaAK56peDUJEsNfyNY6DdPQXap8+sm1JscEvLbWT7RX1vzbt6KKnZAx2Ls3rMXUsv3dIjmasxdBQ7ebNaQ9slfbFIi5z4Q/pISKA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=1kj+BUQPrSHOQAAEY1FTjilqpcF5B3zpcubBvPUYpWA=;
 b=IM5xO6m4aSvNMBZ380QEsFPa0418khrYVBcklzJ2dZlIz3Rioov8M25ZkoVvP53KeU11K2UF+Q70u/UK5MED8B2EYK2KlsAsqtZvDKShyBUOEXCuc0PFLvLRCdywrMJVeN0Py+eZfOvVT530b654lc6kGoF3gP/27ak+rY5wsk0gDyU6cChQ0pmx7L1u4Tp2YXtK3J/mzz/9US97XWyqpNYqzlr/op/ILu4OShAP/6WCLT/eIx2VgH2t2yumbtkxYuQo1+tH6cd8SDNq/zZhYoBHXFXtlq73x2sLkb/h1i5C1Lt25ImSnQZiNlnLotPHmvKLhyqfv+OR4Ci6Xnt/yg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1kj+BUQPrSHOQAAEY1FTjilqpcF5B3zpcubBvPUYpWA=;
 b=VljKfuJXvpwy+x86wNgjJocWb5EDF1X192S8kfWQeFxv92rX5Ksv4FRWUHErVr4ngD/DHHIaAAap45Um5BCt4tXbwva6ld1GCOjxr/+Arwe4RoJR8c57yb0KCy0yP/28Ua62aRH3GLBsHJTJBeOO/LP5V/mK9x7SZ23FsAy5YVY=
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=arm.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: 663ba3b7ef8e8413
X-TessianGatewayMetadata: UEV/SKS4DwF4CKAMk3sU6tuW0vO2WJJs0ETMZYtSYWb4AC86MhGZBHTZFlxZFUUa7ruHitIpoVAYDWfJKB6s/LRZRJphLURh/p7RiN68I6gU87XOjie3uKMBfWgeEy0JFDpZMI5I3Pvv80LVhaO3S79FpLSUmBOzvZPyzpEPwMc=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=v4aTXs1tM5UVd152AU0S4/jfY1F8PTRee6FEQ0jEs+Z+4BhsMYKmqKUUqUZuE2MCK5lCES5G7YXBgIdwABgoWieE7cLaLf18xoJmSRgwdzS8AWZMMi/MUYO16Kp+kf8JPrrv8cAqEa4LYlvOYHspc2gkg6Mmc1wm5O7MDTHT+XlGkI17QOMmj9Ch0ORdhy5G4yYOjrIG6iTU6KplBcuVDkAfj1Ly+JXIKkRkDtFqTGSDNXUsooOPwdejkKVAQFudqHdnoSnNfevwI3zPGZqwaM8lpZiHsw80z1aGPPCtO0G1ST0naPjFRzyhU4zL/hkLA6tijwOO01Q4p0bbWYEb0A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=1kj+BUQPrSHOQAAEY1FTjilqpcF5B3zpcubBvPUYpWA=;
 b=JQKJmrlGUV/nm2qhNJvbzwAChYSkRv2ni/FyVRsKpQ6mZuRlj4c9129OFj0YD0Bl/fQ/ISJwK39ES38C7tYw2yiog6U2v35uduDltT9VmARyTZ/Fopt4uyoedtIc+18O/0dGRU7K1FeK6/bI03abAHTtfUTl2tmxgglfofRV7kZRRmt9DN6vgB9WU7YCNitQoj3Ip7wthjsBqf8eoqScmzkYUEg23Yohcpi1dS2rz5Az256gZRhgIDzr+mftFeFNpa2yCFWePvYVCCHFaF1NL05hL5k+7+Y1yxQTrygzBQqflz8vxPQwC55wsbc+IPY0UtfoIMbpwws6FCjP7U34gw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1kj+BUQPrSHOQAAEY1FTjilqpcF5B3zpcubBvPUYpWA=;
 b=VljKfuJXvpwy+x86wNgjJocWb5EDF1X192S8kfWQeFxv92rX5Ksv4FRWUHErVr4ngD/DHHIaAAap45Um5BCt4tXbwva6ld1GCOjxr/+Arwe4RoJR8c57yb0KCy0yP/28Ua62aRH3GLBsHJTJBeOO/LP5V/mK9x7SZ23FsAy5YVY=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: Xen-devel <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 v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
Thread-Topic: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when
 it is empty
Thread-Index: AQHbGx1zuo3cMSSGek+SPnPgA60oUbKGmwYA
Date: Mon, 14 Oct 2024 18:41:16 +0000
Message-ID: <14DF3C7C-22A8-430A-A7F5-F0AE974CAFBD@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-2-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-2-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51.11.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB9PR08MB6345:EE_|DB5PEPF00014B89:EE_|AS8PR08MB6712:EE_
X-MS-Office365-Filtering-Correlation-Id: 03c4e00d-8dde-4e12-7cd0-08dcec7fcf7f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?5ClXFwH/UtYJ+uTyg5FcCfTy8N/Q2otQfOxXmW2ObNphK2RP8A4Erk1ROqlO?=
 =?us-ascii?Q?YcAeFrUcjNq8nUzQe9Hqi8YWz59e9YnhomG2Cu3S55yEDTAmqM/rocu8MoiX?=
 =?us-ascii?Q?1Y/qYD8Q3fmEF9lz9Xf3i0prbDDKapWILtaMtzmYvBi2xYaVtnOs86QQM1Ls?=
 =?us-ascii?Q?CJEj8WgXatuJqPwniUd3eZ6SqORlKy4uxIEqOCWfL6AZB/M6FA+biE1DFs4c?=
 =?us-ascii?Q?SchGJCpWnl5iyaq/FyjEaluQfFwvcUK8V5OCKmkO8xcJR1DMkLa4o9W+YA7g?=
 =?us-ascii?Q?a8Hz2fSQWQzZWQYfSHt+XtjtE3Et8tJeV5cRm5GHfjVP+9pUPvAkiuHmozzc?=
 =?us-ascii?Q?jiC965YMfPt87FSArkcjtxsPbOohRtpMG+1JIYhXK9wz0gytQTJsYqKzN0WS?=
 =?us-ascii?Q?suypLUUbw3CXPJ3Nnv34RRUr9YmcUhDWLtsm0NaqSo1k0BmInP7Fg8t1Csia?=
 =?us-ascii?Q?u8N2AUI/wWq63vDUydqLPPOxJLhSMNhUz7H0TCOgAsyfZBdwzstzHygLZp48?=
 =?us-ascii?Q?7whIn8U/I1CvyzRbW15lK1NPm3IsLGm2mxklihkvt7tQEhk3sQA8zVWzQr32?=
 =?us-ascii?Q?N1oo2h6G31FuhY9ydJG0AWNCgMbxre/sRDdsOc5GhXfDyIdV9gSYJdkP/5Wd?=
 =?us-ascii?Q?K0W5NTUBVVfLkga2v9WoXAr5Cjt1FiWtdN3O8NM29bayEVBKV1q3QBmFZqny?=
 =?us-ascii?Q?eI6EgGomNVQylwe3wlNwpQ6VwN8VQ+41vNAS4awewCNqIlFLjRx5+blNgURH?=
 =?us-ascii?Q?+yH5kZP2VlpInLyQxmg0hkhMW0y44ZKF1Ujq10MOcGwKDI0AWlMGlvMu1aWH?=
 =?us-ascii?Q?EoJesdUn4ZobBJmjsItPnv1fSv/bIAiqT3Vz4v1aHPTZFmeNOYO9P557jQbY?=
 =?us-ascii?Q?pidD3TzkOYRe9+eH2GuJpGNZP31+LaKST2EtaihJUA8BBo9RbQRc5/ZbK5QU?=
 =?us-ascii?Q?VDFAQO7Q2yFKW35FqKbe/TRGWMvJQC+cHdXe9AEyi/7wq09KAiIMSZdfK28P?=
 =?us-ascii?Q?85IY1H8MOyRUC6HedA7CoYF4cs/sVt7TNaCSXz3GZVWOKFAld5L+xOzNcbag?=
 =?us-ascii?Q?BzY84gdktCzqroDb0EGougK+ceTJpFcCBFtxr1V8mJhRGLMsx+OpugytxZIt?=
 =?us-ascii?Q?B8GPf/VxcJxUFWFM1tnTbeQe3thNfr6G8YIps0yxzTVOkZvDqNSt0526VsCt?=
 =?us-ascii?Q?FY9K3GKwAfpSRpW2T/XSJRHl8RqS1ND+CLh2KqlbL7Cmc8OXY+kPPXw4by+r?=
 =?us-ascii?Q?LksvcQC0xNX6OsV26guHUD2GERcGWL4sOGwhgVDy6aAep/HYhSzE+nvQew4K?=
 =?us-ascii?Q?PqyVMneQAA+R8q+6uqWKAAdTiUeO3OCLYfAjrNdeV9ZTGg=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <AAE7D11193A4DE4CA407E3293AA79E28@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6345
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B89.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	173ade16-4f08-4705-de2a-08dcec7fc992
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|1800799024|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?PpkQF26pjrHeXqPJ+aRWiQFcxFzIXiBc2wjsJo3uP8a9mIJRyr2OSDY1gctv?=
 =?us-ascii?Q?HizMCesmSabE1CyIzDlGLcr0HS96uWmlT+o3D/I2U8tEsY9y1n42YHDB7LKC?=
 =?us-ascii?Q?HlvqYjFCbNB5Fc5gAGuPxW+Davmzth7pP3paIRO/B3Ri39qkHPFR4pP93vEa?=
 =?us-ascii?Q?48iwO+p3zGwaV1swSoA4LkGiZYn6pT8BxYDv33+Qx/uEmZJha/cCrirOvm0I?=
 =?us-ascii?Q?0+I9ddSEyTx33tx+l73FYN/ASIQEWS+v2iM8p49buL8JKQMgeNEznyt12x1C?=
 =?us-ascii?Q?a9sT/N/ciAbxd/4V4P1dK+6KsTDbbvCSuBKurzStSxoSFWG+QmDulOpKzHXW?=
 =?us-ascii?Q?GOBLQ/X+5WdP9fxRxKMF04YI6yDaFog3c+OKHlziCoOgd5eCZvb++p2quZHp?=
 =?us-ascii?Q?gnOf8Q69glUC19IRMQWfJUR0+tODmeGYFuaVrR2e2Yv5fTAStriUQPARVK3V?=
 =?us-ascii?Q?MBPIMWey4ZxVXnCoSGUVBlvPrhpB1uSJZt4lHFrVbLtY7b8LmuxJLugPOhV8?=
 =?us-ascii?Q?DEFm6JIfVc/aYHmZCGXjBAiQ+9hOPDJtkeaHjTF3ERzaSX++sruhjKMptyto?=
 =?us-ascii?Q?Qje0sOMiEKYhhlXN+J81sE6m4us84QNtJwRE/uA+F0LmuvNIQPyewweqbjqJ?=
 =?us-ascii?Q?VPRzngwd6FlyYXNmmlW5nZFxfbJY0PuyAmZlYMHuvqwgozHfaOUrhjo48IP+?=
 =?us-ascii?Q?WkLhWgPaIne0EzWrGisuCYpuXIB/VHzO/jN2crA299CMlTJyQ3iI7FU20wQN?=
 =?us-ascii?Q?Kve8PNfAPv6OnIyqrJVDT5kIPa7iuXSQDUE7xcd5rl6YVFZM0vxJhVOr0Q1b?=
 =?us-ascii?Q?UQ5xHG6q4D0R6TYtMRouc4SzToos0MgX5GasQ3pwMV2yRALNXKonwwj+AiG5?=
 =?us-ascii?Q?l91/A7/hSxt2RqkdpJRSqFupg3AIgkdlYyxBj3tkHETbijI9mkpJUMl0eu8g?=
 =?us-ascii?Q?xxarPG2RYGSTKU6gEQnNptyPkL1NK7ggG+QRGbzFbuuvS8hYTEHSFiQc3k6o?=
 =?us-ascii?Q?6E4yUlitZFTA5mDjXvstU34MVVKT5/dSvwa62RKvU+bsLZuGPRl9pcXuhnUV?=
 =?us-ascii?Q?ThbQLvr0xRUO7QUMS4nWHhxeFZ1J8O8+RQSG1Xsbf1CIJWAvxnEb9U7f3xYY?=
 =?us-ascii?Q?0VTZhwOxWLfapJhUPOaUYGZJbZBMMZTX4MG05vsbZhbEPVK9itPTv/WbaYy0?=
 =?us-ascii?Q?YiMrNS5EOZxFeJt80AwXHtF9WSYO9iktAQGAGk8bQ2DEzNrP7ohdfmc72Zg7?=
 =?us-ascii?Q?uZSIwVZ1IBuCNwUuWOWMQAchx/dEDOT4u21/woNVx0jcpCnXc32bx6YwEDa/?=
 =?us-ascii?Q?1QDmz9Y4DDNd+ny3jLzmGCoh0/pwhPb2C5scqfkxnV5HUOzTf4yESDfC2bi+?=
 =?us-ascii?Q?4iztwOzconigpAPxuilAT2c4bRnm?=
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:(13230040)(82310400026)(35042699022)(1800799024)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 18:41:26.5695
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 03c4e00d-8dde-4e12-7cd0-08dcec7fcf7f
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:
	DB5PEPF00014B89.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6712

Hi Ayan,

> On 10 Oct 2024, at 15:03, Ayan Kumar Halder <ayan.kumar.halder@amd.com> w=
rote:
>=20
> If the BSS section is empty, then the function can just return.
>=20
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com <mailto:luca.fancellu@arm=
.com>>



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 18:44:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 18:44:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818828.1232108 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Q38-0004Zn-OR; Mon, 14 Oct 2024 18:44:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818828.1232108; Mon, 14 Oct 2024 18: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 1t0Q38-0004Zg-Lm; Mon, 14 Oct 2024 18:44:10 +0000
Received: by outflank-mailman (input) for mailman id 818828;
 Mon, 14 Oct 2024 18: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=v7KN=RK=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t0Q37-0004Za-0i
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 18:44:09 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on20604.outbound.protection.outlook.com
 [2a01:111:f403:2614::604])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4ab8e18b-8a5c-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 20:44:07 +0200 (CEST)
Received: from DU2PR04CA0080.eurprd04.prod.outlook.com (2603:10a6:10:232::25)
 by PA6PR08MB10782.eurprd08.prod.outlook.com (2603:10a6:102:3d0::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.24; Mon, 14 Oct
 2024 18:44:04 +0000
Received: from DU6PEPF0000A7E4.eurprd02.prod.outlook.com
 (2603:10a6:10:232:cafe::ec) by DU2PR04CA0080.outlook.office365.com
 (2603:10a6:10:232::25) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27 via Frontend
 Transport; Mon, 14 Oct 2024 18:44:04 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU6PEPF0000A7E4.mail.protection.outlook.com (10.167.8.43) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8069.17 via
 Frontend Transport; Mon, 14 Oct 2024 18:44:01 +0000
Received: ("Tessian outbound 60a4253641a2:v473");
 Mon, 14 Oct 2024 18:44:01 +0000
Received: from Lcebb58bb15be.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 793C9A56-E072-49A9-8807-3476BC6F4791.1; 
 Mon, 14 Oct 2024 18:43:55 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lcebb58bb15be.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 14 Oct 2024 18:43:55 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB9PR08MB9948.eurprd08.prod.outlook.com (2603:10a6:10:3d0::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 18:43:53 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 18:43: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: 4ab8e18b-8a5c-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=nAK36BNlY3J9Mk7JA0fWbxtKhE4wUErsYyLKj7TGlDnbbqzLQKLeaHRVUwAxJpLav+cN+NCdq2IZu7UvBXvLQ//6hvpvckOhJvxfDSWMrCAlXDwtfmkHejRYwPgnsVixRlJsVdYtLtZ6ygb+jOkA4sinjdfnmyv1JyUUofE7VcIWSSVxP5R+cygcGTi6esjIKD5kQ602XZxQAcVjzlB19OSIquUmhtwLnkSafWiPArIUfw39CQrBj70rkXXlRSvR2oE9QGf0/wMlksSEMMWDGQ61vRreBaRZetoMqTkgvLl4lC1HjiNugy+/QXfpKJu3iKbHof8A5DyjkN8dOgOIZA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=KWx7wan0tT2TaXJIvMp6T6BMjmqGnLSD2Ljm8vf2WIo=;
 b=Wp5G+n0wUGKx6JazSTzEF7Dagtm1gm9rU2OJk9/dOCav5OPk13NP18DhLqt3YoPdbYqrj7HX2qeLh8GyHJNVGYiwsPDnFTkUcDMHn6g4F0Vgv43IQpzN2TiNcE4M1Ro9I7pMsAGeCTqYZ+7Ns/i5DL0Gjhbn8M6DnU4YTLZ3+BHjtBp5K/Vnv/gWswvwUy7dtHYzmM4Rvi14HI7od1EUIOhZIEhmJqbDQmZOPVHxez28Iy1jaHNQv8jSW/FTuGSF9+gTm8WvzvcCn+8DjwQDfZr46dyNLq/lam0PKVUsBNTQu47o4FF7BFK6KmGuK3L7M7ZVESvF2OPvdhemU/PSCg==
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=bestguesspass action=none header.from=arm.com; dkim=pass (signature was
 verified) header.d=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KWx7wan0tT2TaXJIvMp6T6BMjmqGnLSD2Ljm8vf2WIo=;
 b=QidycQI3ZV8Xmw/i7kcHDyFlpRzdNxeLul96c+nkk++/sCO31PGU4l6Ulu8uiWDLvdgJsjNmdhP54oIEEdpjVDb2RSPJ4liEVPXJ1SSEzfRTDRTdlfZnZlXw1NDEukLK7OHWtA3nzjlrus8+9yZHu7Kkod6q6Reljxo84kK999Y=
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=arm.com;dmarc=bestguesspass 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: c1835f88bb4cfc4d
X-TessianGatewayMetadata: mXnhX2LYXa0Q1/cCxnoYN+PAuw4Otc0JCGd0WIHOKMVbLu/YdUDbuXGdMqVw0Oz9iaU0gNg1nrvId9HleEtqubj4MQsJlJUDzdiBy/jhA3XNtTYZRMncfx+BBNxO4T5HMHSanERecNBLj3CAzdxUPWWBlNyjnaeOmiJs6hKdBeU=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=MpFgAt9ozklkN5tiLoeLo5SdL1xhHWM9OITnQxmvWU2lLQfbZuY9TrVwKb0jvda2d0sjar98uCnv6iV2wrqKIHtbH0ezFlMsllMGrA2T3pWibm0W5CbocvWEDMRMTkeb2w8Qx5WhovLxtzcyS0IZCtxRbCSgK1A6EgqplEPZsFh8+ZsGzthnTuhGFUPgqtlmLDIDcRUrA3lgt/0IDMbuMzm0qLqYRDIE3q7VDtAPw1Fb09nh3KJTf69iedLxbHGF7cWxqYCa0SV1pTzm+YgMTzoFfhTLBXraLeM/3Uv9HcBG/Nnz5RQqTbydnNIrvkBwt/aopKJC4+LaTRNtmTuSxA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=KWx7wan0tT2TaXJIvMp6T6BMjmqGnLSD2Ljm8vf2WIo=;
 b=vwz4flxE6BzY5xOhIjqddqomV2igind+DQIN1XJRoHzhEnCzCQRO8w7qmQwWlrbCvQUvufjj++jburWJ+XhNp/g7mttL9intnPrggePQTmapa3bFT1D0fM+58LMQaroC20jtlsycYJx1IPX7WmjkSZmnlfg4eWZcgWGuUXJorT0gqfB8cuQcgY4L9IeYZHGtoUxWzwCgvdKrAtm+N7+hmr8z4rHztDW/AN0HPT6eUfJvTn3nf8HXArSfZgEBkABIXAz0rUEZYSo4WE5AJ8av6SzWmN7cmMJCcEViAQJmcyGyjQNvmy+Ov2w4xXWiWqWFy2zHyRBseCel+nn0V6JYaw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KWx7wan0tT2TaXJIvMp6T6BMjmqGnLSD2Ljm8vf2WIo=;
 b=QidycQI3ZV8Xmw/i7kcHDyFlpRzdNxeLul96c+nkk++/sCO31PGU4l6Ulu8uiWDLvdgJsjNmdhP54oIEEdpjVDb2RSPJ4liEVPXJ1SSEzfRTDRTdlfZnZlXw1NDEukLK7OHWtA3nzjlrus8+9yZHu7Kkod6q6Reljxo84kK999Y=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Andrew Cooper
	<andrew.cooper3@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>
Subject: Re: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Thread-Topic: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and
 MPU
Thread-Index: AQHbGx127FMt5Y9y2EO8VFlcKfnxirKGm8AA
Date: Mon, 14 Oct 2024 18:43:53 +0000
Message-ID: <9A01BB97-2CA9-491F-80EA-7B7D81B553AD@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-3-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-3-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51.11.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB9PR08MB9948:EE_|DU6PEPF0000A7E4:EE_|PA6PR08MB10782:EE_
X-MS-Office365-Filtering-Correlation-Id: 9f025545-3cde-48d8-2509-08dcec802c27
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?VmxJZzZnWDZ4ei9zckg5eUN1aXZQTloxOTc4SGxRYVlGQ3F5ZGpmdDZmNkVl?=
 =?utf-8?B?RWt2SzIzcnVHQ2NEYmZIaUFwVk5QVXdMUW8vVGxjUDN1SzY0WWdrazFnajFZ?=
 =?utf-8?B?WjFZZkdPY3Yxc2JnOTZOcU5wa0lNR2NQbWROLzNiT09VYVVRek5wRmZKeWxz?=
 =?utf-8?B?ZlR1b1pUUElXWUtkZDJFZEQxSFNDUEJxTHh4U1JOb3cxSGg2OFdod0huZTJO?=
 =?utf-8?B?WEUwdVJuMzdIVXU1S05ON1d2Wk9pSHhQRlhybjJ3TFByc0VSdHRuSXl3SERC?=
 =?utf-8?B?RGZnbVZ4UTlpZ3pZTFA2YkRUSGkrOTN6a1cvWE9ONDRHdkNpSTlFK2ZyaWN6?=
 =?utf-8?B?ei8vMm5ta1VqcE4wRUFMVVlLVHBVNjR4QUZiNU5ta0g0SklJN1R0SlN4MlRi?=
 =?utf-8?B?alY5YStQLzNNenlLeStYQ0NmMU82MjNIRVRka3R1UDg2TGVzbVdRcGE5RUdB?=
 =?utf-8?B?bHIxYUErNjBWc2w1SnpjRXlKUHZzckdFbG1rRVYrem8rYjJmU0VHWWFUT01z?=
 =?utf-8?B?cFFNWkIxM2xzOXh2RGFOb3I1WXBiWWNzMTd5NUdiNDNwL25DZkJPOThvRUVC?=
 =?utf-8?B?Uk1mN21zYzBQczRUemhUVklILzNtMzQ1QnJTRjFXQlkwdGs5Z0NtTmU0Vi84?=
 =?utf-8?B?WTFtZWNYeHZQRkp4UzNBdkdPY1V2c3o5Y2ZpSFJTWkRESUk2VDBZNGRTMWNt?=
 =?utf-8?B?RUpMVkFLVXorYnhrRExwbityYmZsMWd0anIyazVlWXRhMzVsdlRlbWYyNWRm?=
 =?utf-8?B?aHVGUlhXTFhlRklFSDhVam4xeVI1bzZsdlZ5OGk0WWkzL0JkM0xadFB0YlNr?=
 =?utf-8?B?VENqSnhsUXRLUE5QaTRDa0VvaWo3RGVTdU95cnlqenVyZDFrRENyL0g4c0hV?=
 =?utf-8?B?bnN2aWdtUDFtQU5HNlA2R3VwbUtKK0xVdTUzRkJYWmJRYlJmVUtzMGRKQzg4?=
 =?utf-8?B?cG00ak1haEtKYURaRy9HSDZwRUQrMXdldjBJak11aE1sSE8zdUxRV2RuSWtT?=
 =?utf-8?B?aTh2a1ZVK1YvdUpONzQ0T2dHa0tGNWpKWHRRNVdlTEJ5bzFYRVZNeVdUOE40?=
 =?utf-8?B?VVFlektsZjBkRjk4ajBJNWEyS0JZVmI3c0tad0pwbVE1ckVkbm5Xb0JOSEs4?=
 =?utf-8?B?cEhIR2l4MlJ0Nys3ZjEyYzhUMGMwTXJXSDd4V0FOeGY1dGR0QWdDMllpYUhN?=
 =?utf-8?B?dEt3YTY5T2pyUjd6Z1VQd0s2VzFSblFQTG85dWxaQkxBeFdCazRCNStyaHpJ?=
 =?utf-8?B?QVpianZSQzQxc2pkQzd0NC9lWnZLZW9PQnc2VzgvU0NuV2JtS3N6YkFVWFJE?=
 =?utf-8?B?UmdrN013aDRtMW9MZDJMdzU5S3B0bHBVUGZINGlFUmlHOE5MN1d6YUYzdWdL?=
 =?utf-8?B?b3oxSkFudDA3UTVTNER6WENYSUthNFcyTG4weHRNU3ZqZjVBSEp5Y0tlSnpI?=
 =?utf-8?B?V285MjVTNW12d3RlVVdBNlFzdGlGckg3a3ZZem9xSWp3MysrblZhTEE3S05C?=
 =?utf-8?B?SVhtdGh6bmlnK000WS9ZMnpadlVRU3JxcktneU9saTVPVSsyWGRlTHU1aXhE?=
 =?utf-8?B?UGtiWGkxcVUwbGd2VUlTalRObXU1c1lWRWhsREh6T2tpcDkzcFg1TDJrbDdS?=
 =?utf-8?B?QzIzU3lvaDJITGw0eW1tZ0dxeFRQV1dlbllwSC9YVzI3VS9rSEVBK0ZXemVz?=
 =?utf-8?B?NXpKUk96ci9Nd1ljRGkzM2N2OSsxQnA5MVZQcUkrYTVwWmNSOHROcm9TWm5X?=
 =?utf-8?B?cHV5bGRJVjJTTnVieFpPSkt0ZmJjYk5ONUFsMVd3Z1pzbDB2UzkxNmFnaG9N?=
 =?utf-8?B?dHZ6V3B6ZnNhdUhWQmlvQT09?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <69ED8FD4FC59074F808B432725D018C1@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9948
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7E4.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4138633b-26d1-48b4-4c6b-08dcec8026e0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|36860700013|376014|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?L2VrUTNRVEVjbTNtYWhuSldHTzMwVFd6WExhNklnRzJKU21rdHpzcmN1NUo4?=
 =?utf-8?B?UkdjMVNpSjhmQi9NTnhlUGF0c2tKendOVjMySFBWZnpiY2dkVjBmVEFjQ3l0?=
 =?utf-8?B?SlROYnNWckxiK0wrTG1mVXAzV2x2a0tUY05wQTJvVVN4ME5QU0piQ2ZvYWdy?=
 =?utf-8?B?YTVTS0R1anVQNkcvQXZiWHk4SHlPaVJ1ZTd0aWdyUkRkS3hNQzg1VmRZQ2o3?=
 =?utf-8?B?UVNGdXhpdXBRK1d2MWVGcVlOZU5id1pNbWljdG9tUi9CS3Q3T3VScFFENEFB?=
 =?utf-8?B?NVZZOUhhRjZBOXlxbmQ2a2NHZmg5bkVlckc5RGhlelRDWk9hQnJUNTY5cENZ?=
 =?utf-8?B?clZLUjZPWnY1RTFnaVdGWTRmWFJWK1dOeUtHdnJCMlZITWVrdWhqY2ZteGIz?=
 =?utf-8?B?TllTcmttRUJ3TnhjNUo5dWJEYlZUdm1CdFFWWXRsdmRNZ21yelhCVkZlTlg4?=
 =?utf-8?B?YnF5UjI1OG8xYzJPUFE2THB1akdsL0YxYjc0a1VROVRiYWdrTUtpdEYwR1FW?=
 =?utf-8?B?cUdFWGVSWUdGcHNWVDV1N1JaN2Z3NHNJRjNjUnVieFFETnJRUkU5SEc2OGdF?=
 =?utf-8?B?bi9abi9wTEhXSEkrMCtNUzhNNjB1anR5UzN6dHlpYWs1MHg4dTBzQzJRN0Jp?=
 =?utf-8?B?b0tWTDFyZVVZL04zQUNBNTFXVDNnNTdlWmhyN2ZSNFhTdGxBWlVGVXdSZUhl?=
 =?utf-8?B?MGhPSS9XZloxNm1Yc1hxdUF5VHRNZmlsZWwvM254UCs1QzJCY1ZqRUYwY0FU?=
 =?utf-8?B?amFxSlkvRVZIZlVlL1hJVmE0bUJvdnZ0bnh4VDFvcTdZZ0ZCVEF0M0Z4YVdY?=
 =?utf-8?B?RnhwZlFaOVhVbHlLL1BxL0d0TG5wT2hQOXA1Y09mT0FjTFpZZWxQN0FMaUlG?=
 =?utf-8?B?S0xMalYxcUlIRnU3V3pLVXUydWd5SXdtNHdDMENBTERrZTZyWm9Fdm52QWUw?=
 =?utf-8?B?bTByQThlcXU5TnN1N1ByWmRCN21NeURJUlBWUlBVV2EzQ0pFcUlXVGd3b3dP?=
 =?utf-8?B?Q2ZtbkoyOVJtN3Jwckd2SHRlL3U2NUdGRDhoUVovVlRHaW8yMkgvdVd3VVU1?=
 =?utf-8?B?V1pReE1pL0t0VlB4SVhzZjdYSCtIZ0MzekFsMGhVWkFDNXNhcys3cC9uakNP?=
 =?utf-8?B?c2VVRFZaSXVYZHE2dnRsNUM0cnozU0UxeW9JM25YZDdzQW12U2hrNG44N0J1?=
 =?utf-8?B?d2h0STd3ZnJCMjJLQXZoZEplL1VtU0lyUWEvcVh6N3JLUFMydE8zSWRnV01V?=
 =?utf-8?B?Vkk5a09TWVZUV2w0ZGxNK1IySVMvZ05UTEgyMmo0SW04ZFl4ZlcrVkkvNkhE?=
 =?utf-8?B?Si9XdFRNMnRZelcvZmJna0gyT0JUMnBYSnBPYU1xRlBkYmZUL2pWdnowLzI0?=
 =?utf-8?B?bWZXajk4Z2JKc2dOYzFqN0JtNHgxZ3UrRVdSRGZuc1p1YTUzNEZLWnk5TGNv?=
 =?utf-8?B?S0cwN2RXY2FVVlNwVyt1d1lMOWZRVTliQ3l2b01od1l3SmFPeWlnK2cxdDd2?=
 =?utf-8?B?OGxWSmZ0K1lEVXMrWjZGV3BSWjIwWDl2OXlpbk5jRlNJSVZ4QnVqenczWVJ0?=
 =?utf-8?B?bm1leUpNS0lFNkRBOTBEbzArdHpSWmFMdlVEOERsQzJkaVkxeWFoRThvOFVN?=
 =?utf-8?B?bittYWFGNER2bFUxYXUxOXJTYkZYN1NXc0ZlNm5TRS9aL1FEL1pyb1p0Wm1k?=
 =?utf-8?B?b0tzaVFMaEU1Sm5zU0VXNlplenEvUjV1cENjTHArSmhGUjJQbVhKZGQ1d3dv?=
 =?utf-8?B?T2hQS2lvSlRMejRFbkw3TUZHMzZGMTBRalptWnMzWk9TYWx1ZjV6YVl5Tmk1?=
 =?utf-8?B?elViNVdUbkV2VHlVVmJiOGxxQ3lmd1MyblhRenRueWFDVW9WMTVFU2Y1c3Vq?=
 =?utf-8?Q?XbRUSpLNI6lNV?=
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:(13230040)(35042699022)(36860700013)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 18:44:01.9249
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9f025545-3cde-48d8-2509-08dcec802c27
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:
	DU6PEPF0000A7E4.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10782

SGkgQXlhbiwNCg0KPiBPbiAxMCBPY3QgMjAyNCwgYXQgMTU6MDMsIEF5YW4gS3VtYXIgSGFsZGVy
IDxheWFuLmt1bWFyLmhhbGRlckBhbWQuY29tPiB3cm90ZToNCj4gDQo+IFRoZXJlIGFyZSBmZWF0
dXJlcyBpbiB0aGUgZm9ydGhjb21pbmcgcGF0Y2hlcyB3aGljaCBhcmUgZGVwZW5kZW50IG9uDQo+
IE1QVS4gRm9yIGVnIGZpeGVkIHN0YXJ0IGFkZHJlc3MuDQo+IEFsc28sIHNvbWUgb2YgdGhlIFhl
biBmZWF0dXJlcyAoZWcgU1RBVElDX01FTU9SWSkgd2lsbCBiZSBzZWxlY3RlZA0KPiBieSB0aGUg
TVBVIGNvbmZpZ3VyYXRpb24uDQo+IA0KPiBUaHVzLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBj
aG9pY2UgYmV0d2VlbiBNTVUgYW5kIE1QVSBmb3IgdGhlIHR5cGUNCj4gb2YgbWVtb3J5IG1hbmFn
ZW1lbnQgc3lzdGVtLiBCeSBkZWZhdWx0LCBNTVUgaXMgc2VsZWN0ZWQuDQo+IE1QVSBpcyBub3cg
Z2F0ZWQgYnkgVU5TVVBQT1JURUQuDQo+IA0KPiBVcGRhdGUgU1VQUE9SVC5tZCB0byBzdGF0ZSB0
aGF0IHRoZSBzdXBwb3J0IGZvciBNUFUgaXMgZXhwZXJpbWVudGFsLg0KDQpNYXliZSBJ4oCZbSB3
cm9uZywgYnV0IHNob3VsZG7igJl0IHdlIGFkZCB0aGlzIG9ubHkgd2hlbiBNUFUgaXMgc3VwcG9y
dGVkPw0KSW4gdGhpcyBjYXNlIHdlIGFyZSBqdXN0IGhhdmluZyB0aGUgS2NvbmZpZyBzZXR0aW5n
Lg0KDQpBcGFydCBmcm9tIHRoYXQsIHRoZSByZXN0IGxvb2tzIGdvb2QgdG8gbWU6DQoNClJldmll
d2VkLWJ5OiBMdWNhIEZhbmNlbGx1IDxsdWNhLmZhbmNlbGx1QGFybS5jb20+DQoNCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 18:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 18:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818835.1232118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0QCQ-0006MZ-Ld; Mon, 14 Oct 2024 18:53:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818835.1232118; Mon, 14 Oct 2024 18:53: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 1t0QCQ-0006MS-Hh; Mon, 14 Oct 2024 18:53:46 +0000
Received: by outflank-mailman (input) for mailman id 818835;
 Mon, 14 Oct 2024 18:53: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=v7KN=RK=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t0QCP-0006ML-Ev
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 18:53:45 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on2061d.outbound.protection.outlook.com
 [2a01:111:f403:2613::61d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a1f5aaa3-8a5d-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 20:53:42 +0200 (CEST)
Received: from AS9PR04CA0033.eurprd04.prod.outlook.com (2603:10a6:20b:46a::8)
 by DB9PR08MB8289.eurprd08.prod.outlook.com (2603:10a6:10:3df::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct
 2024 18:53:37 +0000
Received: from AMS0EPF000001AA.eurprd05.prod.outlook.com
 (2603:10a6:20b:46a:cafe::52) by AS9PR04CA0033.outlook.office365.com
 (2603:10a6:20b:46a::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27 via Frontend
 Transport; Mon, 14 Oct 2024 18:53:37 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF000001AA.mail.protection.outlook.com (10.167.16.150) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13
 via Frontend Transport; Mon, 14 Oct 2024 18:53:35 +0000
Received: ("Tessian outbound cd6aa7fa963a:v473");
 Mon, 14 Oct 2024 18:53:35 +0000
Received: from Leb2dd2277323.3
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 C5CDD8BC-DBD3-4C54-8085-D74F4683D4D1.1; 
 Mon, 14 Oct 2024 18:53:24 +0000
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Leb2dd2277323.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 14 Oct 2024 18:53:24 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB9PR08MB9948.eurprd08.prod.outlook.com (2603:10a6:10:3d0::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 18:53:20 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 18:53: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: a1f5aaa3-8a5d-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=I2kjcU4AzvF0jRaEbPfYQ8rwRcwDDzYUTX9oS4Wneonyh3Jgo6TPJdD+AXFniACEoHl89j3ftRXJ5wX5ZsaHzLk5AfsvDOf+K4vPpX2Of1SP7QsucmCldsq+aTH2DyboBRJwKNHxcJc0H5faNdsogT/C4gMQtGZYOVxInjcqeaf29ZZH30p8Xs0Yz0eNgBjLrhF3A7wC+T4yz6tf/0MLyeS44guZUHvR8p6GVPkTuFVKu+TSMiHnMKWZurndo0zRsgK1CoLSs3K2/ZZJ1jN7m7+tbUgB8Z2sqC6Zpo2AuICzTcrOVCkRt/ArEui94ZwfOc1x19F0zSzub5PhPapFCw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=rsVmI/AJaNozcM/AJY1eFyfrw+h8i4iXeWgudEr49Ww=;
 b=XIwBJHTLr5YtYQh0DrvP04IE2KXdrzNhleJq5wwnTH5yIv5vtqN7XA91sFLLjn8BC0XmqirSnofzMjinSCfSrkkQlhpI1kCnVkFTXKVJ3pE2qOwdFDSFSUxfNKRo1vjlEcVMzK+XE8KTSSRzOc5jlPA8zhp+Q9YUEGV2xYxk10wmkvTAPshCxpgu8GqFjYIigx0zYpsDkUk1mNMqdlt2cWss3ghnsEUEgW+Na6FAspufyZPpFUoyXzhE7+Jpd0TWrn3kzo6isayNhRuhtYuEbYpixN9zhHGeCeDIMKlWSJFwAcw7CRkN6P+gaoyMPsm9VSniuPOSMi7riLb7tWn+mA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rsVmI/AJaNozcM/AJY1eFyfrw+h8i4iXeWgudEr49Ww=;
 b=IIhKgXWqdxBerJxWbMwRnbC+jQzvoFGBSwNVXSHAsSoY0ERb8pjriLSYujHOYERDAmLcRCY0xbTdlmS3+CTQ/DJcHFuweZ2Gkea4xptY9OoTFv9eae0pQxrc/17mxwWMz1RehmMhX5eO2B45cht+oAMxj/gBRi6R7hFGLwYLAqg=
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=arm.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: ee21c1b9dd453a04
X-TessianGatewayMetadata: c6FukzTMuwfGg9ODlreNgLLeV/29mwR/utgSkMt1qs3lmy8GnczzxB+Jw0nphLL8r/q0OS89ZsZfGfRje0Pxl+id1iWtz9v4fK/T/JlPHUI1yfAETg+QvbIApl03I7OfnZz4GAZ5iDNJsewuAg/+2HNQsq7MDW6Bz38HuU90iDk=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=fst7Cmp5r3CbnaUt6Xmahe2cQQSS9sUF0/r3TPrvuBrd2cCO72SOKz30pz9uJvvFWNpx+HzuIc64J7UWZ1ksosUex9iolg66eWPGy3ZLXjK1Bmyku0/LU/4p3usyFquW1bRoSbvluKP/jTWkmenqos0lH16oD6xYfIqFsWCzT+WEsqSJmJStzencIiBYQrW9d3afEL/wHjYZTm29azW7OaaSS9Mzao8WJ/kYFm7aIPjTOQjpMnhKobkaiGmZVRwAntbPwob6Slr3d7xNgE5SPSFtLt888PAKqfy70C9b090v36fPLcyNvG4RM265EHt2DU3EhIu9ljATUx/4IWClCQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=rsVmI/AJaNozcM/AJY1eFyfrw+h8i4iXeWgudEr49Ww=;
 b=nePdSxctpVl7IZNyCt8sl5SEqpsV3wENR4lkjDhWcbIepqgClao8M1nhlNXZ3s2K6U6oeXms7aWQyrO4KO7OTONMkqBz4xsxaxqlAKZuaGvCgyAgC4BsHU8ayQHtlPJtHxLvFe08o8CPAspCEqymiEpcBrcAwapJFmUwy0c1lJADyMvLiKYJ2Thr20BeaeWplW0Pg52PSGX0nw1x7LYbXzYjJjMVinV2BF9WqWKnZx7STxzJC1R2nt9HTD3v9XLVUweQxzuCveBZK7Qlw6QN9/zn1+toB4NgECohCy0EnnRt49E5qHc48AOzkW4VLdFmuoX/r9KeB4q5yDKSewD38A==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rsVmI/AJaNozcM/AJY1eFyfrw+h8i4iXeWgudEr49Ww=;
 b=IIhKgXWqdxBerJxWbMwRnbC+jQzvoFGBSwNVXSHAsSoY0ERb8pjriLSYujHOYERDAmLcRCY0xbTdlmS3+CTQ/DJcHFuweZ2Gkea4xptY9OoTFv9eae0pQxrc/17mxwWMz1RehmMhX5eO2B45cht+oAMxj/gBRi6R7hFGLwYLAqg=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Wei Chen <Wei.Chen@arm.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>,
	Jiamei Xie <Jiamei.Xie@arm.com>, "frediano.ziglio@cloud.com"
	<frediano.ziglio@cloud.com>
Subject: Re: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Thread-Topic: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Thread-Index: AQHbGx17mFolmke5JEyORtvE+VZJJrKGnmUA
Date: Mon, 14 Oct 2024 18:53:20 +0000
Message-ID: <8AE12285-F017-4FC9-9F9C-6218257211F9@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-4-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-4-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51.11.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB9PR08MB9948:EE_|AMS0EPF000001AA:EE_|DB9PR08MB8289:EE_
X-MS-Office365-Filtering-Correlation-Id: 048890e1-b846-4822-dc0d-08dcec81820b
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?52PradMKmQ5L++iUD7Yr0AoN/13mU/40SxauPviFFkxbb+/kZHyjZToIdRZn?=
 =?us-ascii?Q?N2gtobftmLEJN2G+T7fhMkA6SS7CFAzlpZnEqH0otZRezbB2/iYY/Y70MoJP?=
 =?us-ascii?Q?acTLRpZ3IL2pEeSW0TjSZipJNHVqs+Vk8BYzSy/LRxQs87Qunn4kPAzAINOt?=
 =?us-ascii?Q?MsYIcmehhlxSlMkNI/09NA7QozlFySSG+tDDQXi5NWOGQ1lWuE+unNlDGpAZ?=
 =?us-ascii?Q?LJDA9OJwVTIIHqep9Gm9T3kThv8eoX6GuP9WOZwbyXXf+kpv5x/4gp8/tyB7?=
 =?us-ascii?Q?Hr3dJm6eogkyVgFfJeSJbvDt0zqZKsALvDa1PjaxWVKVrrXziz9BCnppx0Z+?=
 =?us-ascii?Q?U6cvA8zuqrpSQjw4KsE6UHe9OZOmVuW9YY4crNRsU9pE3b1V3ErMMAxtqvjT?=
 =?us-ascii?Q?kQqjAmPkymjUgffu5mbX5YpFcwvX6AU8FAtQdg3S5IO3I4wxUbuuG7rlcEWw?=
 =?us-ascii?Q?19xpaAQBsqVp4gD6rfllKzcS/V+P2mIQbJTj2bUA652GCs2dDjzhf1nkc7Zh?=
 =?us-ascii?Q?HbDz3R2m7OMbYVSCqSr3bIThKN6IGxs+ZzuDZBcq+JO1ZzUZ0pdKfBbLDiXo?=
 =?us-ascii?Q?Z0/L9B4ZRjnrHpMAUS08pGwA5JiGv5GuF3QBneMCzbED/xQcGyi7GA5jyGmC?=
 =?us-ascii?Q?lS6T0d/jTDDScXKpmb4j7CzdNh6qyHAlfgUa2hI3zrAbHym/tfMkOfj5Wxdi?=
 =?us-ascii?Q?jGCum+xEG2rlnjSK+DvJ8NCHI6kUNpkGQpnNX4/vNjtQlgbv5L3U5+ryYxaG?=
 =?us-ascii?Q?N9yGg41zDaJRIU8CPFyBzS0rARzecYLPy/hYiDs4XlPMg97J/6APVELnuh9/?=
 =?us-ascii?Q?iPVTPmcuUnZLD0n3MnxK9Iry2kghR8Ynvic2D4TYybC2bpJvYCvf7nIf7cVZ?=
 =?us-ascii?Q?2XBQ2kA3pssh+ngCqTcdO74uDPDJilUPlkFpMThjJJLXGpnhjLQhVWF1zhRH?=
 =?us-ascii?Q?nIL6T89y/mRHWSE8nTf61HrY2Zw8rYSZ8MxuY+9b106+5V8U0QBA1xObgnkC?=
 =?us-ascii?Q?S2o9u22kGm3sun8hrEP+gDB64f9upA/1zGbPXpn1BRpX9p473tx9osQzLXtr?=
 =?us-ascii?Q?GwmxpF9dmTDruSgDuO38ro9Crq4J9d9LliLSD8s+ZeKrvSgXVKW6WZu3n7wr?=
 =?us-ascii?Q?gP0g3u0srA3soO1t3xNPgHs11YpheAjVhQCONR7Xjekr2fiVCLENb1ixVPeD?=
 =?us-ascii?Q?jSu7iSbTD76AmycwdK3KNN8kORWCpURSJLiI4gVUxQ49bncjywbldm+jHBTD?=
 =?us-ascii?Q?XmWVGUJiMXDRo+EtQvnW+QkJs3ur7Vr8VJg0fVQwaf6hV9i+a678wUDM/0Z8?=
 =?us-ascii?Q?znklduSlZ2ZzeOcj7piOTVNXF0hU4nfpFu+NwPvhzyYcYQ=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <92BF7F34C4896948A186F2286ADD8AA1@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9948
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001AA.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	c8d2789b-748d-4cfe-2f5a-08dcec81790e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?jPzV2MIxRhu+HMJLROZVNR7459/gUO/GV851ANA8YJNECq6OuHH823F1CHf4?=
 =?us-ascii?Q?U1herQAOvyJXb4OOznB68r0V8O6mApvdun3PbBUa/fuWzZ3OIZP4l6cOeCVv?=
 =?us-ascii?Q?NBbTMkSgOgjxEXKCOlomVXilpCwqgjx69xvWE6ePBd9ketEPmBZSQ5xqa4k0?=
 =?us-ascii?Q?YQNBay5g6A/GLIaYSwFJ+JrTQHcaOL+prWSQpZhj2qt45EaDeKrgOZLOjF46?=
 =?us-ascii?Q?IICYfaXWqJxx8kA8ybXoIUb8WzbouZ2KONKd6FjiP/Uf4PUAJVYjwXHWnXje?=
 =?us-ascii?Q?1ZZaVZTSjmAy9h19STAOicMAUNjMYw7bS7NlsZcboP+Nzw4ZIuubDmRNvilN?=
 =?us-ascii?Q?eLaA0zfikhXZV5Owa1CPe7MGBaSIMGVDnsgnrYqgZ4LgXRLoqcWYAY1B8b9l?=
 =?us-ascii?Q?eeC9Bbv6M3HpF/eUyYH6TOerGcWhdFoDboG7ntPusLViysyvlZ18JceMsCl4?=
 =?us-ascii?Q?o1w6icaDLTTqQj+nR1U3mkSAeP0FRF4biUY/gEUC5pXRF2yXeLL6Gepsx6Rz?=
 =?us-ascii?Q?QJqO0WMahYRJQ9qk8WyjA1bY/bfIMdtfsumqbAXwpdFrZkPTFbQPl7pc2HCH?=
 =?us-ascii?Q?bWxohP5X/3ndrtswC7HqYFWfsmYTmqsl/qMXK8TybwhgnXHC7oRfMp8tR4t/?=
 =?us-ascii?Q?lo5mXreSgyDtyT96VFBec+Xr2YxY/w2qncdgEGmLf34AtAYgfRYruz7GyF9/?=
 =?us-ascii?Q?GAHijCMJs7G3Km7jD4O/XsyTrgxMff5o7QrIbjEnW625aI3ISsf6NHsE+2pN?=
 =?us-ascii?Q?sWU2et7eVCRCL2nf+iNELhoPxVgT/fAzndBcKNLzQw3YUcOGH9TqdIqHHaoY?=
 =?us-ascii?Q?pKtQtoWQUPZFT6Lh6B8qwrcth69zVviHYDGZcrlCkHv46x0/PGdDfv3JWa5x?=
 =?us-ascii?Q?dO0MdOjlSVqaOZNuj7rmcBP5PsUsvB0Qx5NB/BeFQcHod1umqWAgL1clS6Nj?=
 =?us-ascii?Q?NW+NjH4/Si495dlyNlsp5O35IkZeHxSHSEWQRHQIiO68gOTfB2EXQj7XYC4Y?=
 =?us-ascii?Q?EOAeAjeFvyvY5l7mC+u5kQi+JWSMWnFJaANp5sYcPtTcCegUCN3rsZ6oxWEU?=
 =?us-ascii?Q?voa8vhojRy1wol8z7TypZLkABMfUUEm0Rk1XZzLvguWRNE2fN3KProPJSvx6?=
 =?us-ascii?Q?Jgcz727Xf2wSWPOJVU5u633IFMEw39DzYVF4lcM5HAJZA2nCsYpjj2/C1X+q?=
 =?us-ascii?Q?MCatOK2jxcikCSMFzYQCw23UulS+0c378jqn5DNkyHx+DaKgtqTu8AG36vHe?=
 =?us-ascii?Q?KtBm9MzpXGa5J9vOinexOSJ9I3kWTG0T4cQoiRQ9ZbAnn5my/GB3GOpBtLMN?=
 =?us-ascii?Q?Oqz2YmRdw0lvwWiPrIyxaYyExeordof4GWFxAIMrlrQi41cq9GbubaaddKLl?=
 =?us-ascii?Q?tJDTXNTK08EJIoscGkDvT+0KoB6Y?=
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:(13230040)(82310400026)(35042699022)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 18:53:35.6052
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 048890e1-b846-4822-dc0d-08dcec81820b
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:
	AMS0EPF000001AA.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB8289

+ Frediano for suggestion about header protection define name

> +++ b/xen/arch/arm/include/asm/mpu/layout.h
> @@ -0,0 +1,33 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __ARM_MPU_LAYOUT_H__
> +#define __ARM_MPU_LAYOUT_H__

I think we are moving away from this notation:
https://patchwork.kernel.org/project/xen-devel/patch/20241004081713.749031-=
6-frediano.ziglio@cloud.com/
Shall this be ASM___ARM__MPU__LAYOUT_H ? @Frediano


> +
> +#define XEN_START_ADDRESS CONFIG_XEN_START_ADDRESS
> +
> +/*
> + * All MPU platforms need to provide a XEN_START_ADDRESS for linker. Thi=
s
> + * address indicates where Xen image will be loaded and run from. This
> + * address must be aligned to a PAGE_SIZE.
> + */
> +#if (XEN_START_ADDRESS % PAGE_SIZE) !=3D 0
> +#error "XEN_START_ADDRESS must be aligned to 4KB"
> +#endif
> +
> +/*
> + * For MPU, XEN's virtual start address is same as the physical address.
> + * The reason being MPU treats VA =3D=3D PA. IOW, it cannot map the phys=
ical
> + * address to a different fixed virtual address. So, the virtual start
> + * address is determined by the physical address at which Xen is loaded.
> + */
> +#define XEN_VIRT_START         _AT(paddr_t, XEN_START_ADDRESS)
> +
> +#endif /* __ARM_MPU_LAYOUT_H__ */

                   ^-- ASM___ARM__MPU__LAYOUT_H ?=20

Apart from that, the rest looks ok to me:
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>




From xen-devel-bounces@lists.xenproject.org Mon Oct 14 19:00:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 19:00:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818844.1232127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0QIw-0008Eu-GO; Mon, 14 Oct 2024 19:00:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818844.1232127; Mon, 14 Oct 2024 19:00: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 1t0QIw-0008En-Ct; Mon, 14 Oct 2024 19:00:30 +0000
Received: by outflank-mailman (input) for mailman id 818844;
 Mon, 14 Oct 2024 19:00: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 1t0QIu-0008Ed-Q3; Mon, 14 Oct 2024 19:00: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 1t0QIu-0001nN-Hd; Mon, 14 Oct 2024 19:00: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 1t0QIu-00068b-7W; Mon, 14 Oct 2024 19:00:28 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0QIu-0007kK-6k; Mon, 14 Oct 2024 19:00: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=RBF5oCgF2jne3zkzy/0Pyaiog/DXzEQi/o59IXv+F6M=; b=Apm8wORpoTpfZPjxCUSIMmIbL3
	qaj78/TAbx2f90c+nBFhg2Dg+gH6cT2CnUJPCYFEmvfjrCIINAGvz9PsG0g23jA26qatmkEzPsxDH
	r+ZhwH37/F/FTu6lGdmgu7JG4VGu6Fed/or450ZT2DcSvddDjFE2gxbvonp8Hy6oVqa8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188084-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188084: 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=542ac112fc68c66cfafc577e252404c21da4f75b
X-Osstest-Versions-That:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 14 Oct 2024 19:00:28 +0000

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

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                  542ac112fc68c66cfafc577e252404c21da4f75b
baseline version:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa

Last test of basis   188054  2024-10-11 11:02:15 Z    3 days
Testing same since   188084  2024-10-14 16:00:23 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
   76a54badf8..542ac112fc  542ac112fc68c66cfafc577e252404c21da4f75b -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 19:03:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 19:03:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818854.1232137 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0QLs-0000MX-To; Mon, 14 Oct 2024 19:03:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818854.1232137; Mon, 14 Oct 2024 19: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 1t0QLs-0000MQ-RA; Mon, 14 Oct 2024 19:03:32 +0000
Received: by outflank-mailman (input) for mailman id 818854;
 Mon, 14 Oct 2024 19:03: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=v7KN=RK=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t0QLs-0000MK-G2
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 19:03:32 +0000
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 (mail-am0eur02on20600.outbound.protection.outlook.com
 [2a01:111:f403:2606::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 00d4a7ed-8a5f-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 21:03:31 +0200 (CEST)
Received: from AS4P190CA0063.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:656::14)
 by AS4PR08MB7902.eurprd08.prod.outlook.com (2603:10a6:20b:51d::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Mon, 14 Oct
 2024 19:03:27 +0000
Received: from AM2PEPF0001C715.eurprd05.prod.outlook.com
 (2603:10a6:20b:656:cafe::70) by AS4P190CA0063.outlook.office365.com
 (2603:10a6:20b:656::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27 via Frontend
 Transport; Mon, 14 Oct 2024 19:03:27 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM2PEPF0001C715.mail.protection.outlook.com (10.167.16.185) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13
 via Frontend Transport; Mon, 14 Oct 2024 19:03:26 +0000
Received: ("Tessian outbound 5c9bb61b4476:v473");
 Mon, 14 Oct 2024 19:03:26 +0000
Received: from Lb198c0581f9f.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 B0151C4D-5477-4E96-8FF8-D3B191F23C8A.1; 
 Mon, 14 Oct 2024 19:03:20 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lb198c0581f9f.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 14 Oct 2024 19:03:20 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB4PR08MB8078.eurprd08.prod.outlook.com (2603:10a6:10:386::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 19:03:17 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 19: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: 00d4a7ed-8a5f-11ef-a0be-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=U+QbWb5T9Q9rWP89I63a6tZwc9YNQ1UJhZM5ewm7AhEvUD/4tTBMyPdsTtIxUzUMvO4E0A7pH7bs6901xzzizZXEJ75yV4SSpCByttY/cEoSGLHXHK0f3v+zHqnbhb0LXx/w8oxVYOVeUohsTaYTyjEraOXnBZI28klJBkdAF6dzz3k+oA9iR73w/Ll4LofsrcBmr52bzUX2dc1891DAYcxPHQxIgceutg4FGbt1OlFaNSuFmyIhUHVMrwOYjh7Wkn4ojCztBa4vR5p0dmLsUKUzZknriojArNvjnepwbnULlOufWm/vk+zEKWWfg4N4Sj4Ir3NptPt1dxk+sf0usw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=qY6loj9QoGNXCfU/Ew1xShneuszgigDEgY8qLYPOvpk=;
 b=rt8s4ePeZjyn/fwiKyUWhwX82/KD6xooxkm7533bPVrTZvHS5uI7Y342qzMH/ED/l77Gu9szPSiE+/k51RCZX3nq6/Emk5HQhlDqx0cnymMBfR05T2PWQlyB5H5YFDzSyDju0t1dEwxRVObt+4h2U+FCscvNsS2DbYFSJkBnywedmQaV5B9bBhqga7EVeyRHF62N3djs0Yc2rCHnNNK+XJXT1a/OzV8LmZlmLLQ+Xibg7hGxNrU2y9ac8E3gvYiSWBCmIfK1CZQKWG52+dp1hSyMh6+5Albg+QTf5EsvOxceIYogqNTxTlekEVn2Bs67vxvpJ5xI9Kl8KKx4cophDg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qY6loj9QoGNXCfU/Ew1xShneuszgigDEgY8qLYPOvpk=;
 b=cB6s02j89BBN0ug+rTcE3ZBZIzJN3TpgJh+aHI1Fj+VOvua0qQx29m+DP843hMHVsHXzL3lEOu/vfPQeFonpJYwLSVWcqEBKYrOB2pWo9/1e/ug+g4Hp2LBNF8LgmAZfkbt6aSzlnaN70tn6gb187HnelTQamZVrRBXhEWjlnR8=
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=arm.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: e6f826a6774411ac
X-TessianGatewayMetadata: CoZP5+gxg8xI6WlXlStrwAyphlv2qDF9ae6MvAWs+vQ+QJqrRaRFqqsZe69h+YLNFmum2dh9311umdY55M71T06j0p3MGCJDKjpZbduNgrt9d0D2eg+SJs34Ko6tUd5gWp/tvO0FxtnJDIg1SEtx3+TclAEOQSRZQ9ALIJgmPgc=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=IT9qjn5yAbsQN6b5Vj0nEb7VNgHALy6HjQLIzzi1lMEhjOCDvF1qtQvlT96Go38WFgTDKqM6K5IcXeEYSvwJTTspLPwZnP/QZzpy3WIo0NGR9VALuILrj57y0pzmRIKSbUtHL3D3jeK+sk9XCR0TrPJ438Rsj3NukaDxSxtkOP42jSLIE4aB06YV6CmwebFB9MixPBLjrevy8ugo5ferCdtYZxwhj4sUH5oU06o3GGRiv8bLdP4bH7WGvIDrODrfuhzDai/YnSFNKufqyIw/BkkGRGHXW7ZGesQETShbn9LbjqsptLeK7WgZQTcYHTu+WQ0qmX9mmhSK79aYLH6rxQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=qY6loj9QoGNXCfU/Ew1xShneuszgigDEgY8qLYPOvpk=;
 b=tNSrW6eBg2FY4m07ib/EnJjp+M1TPDkaplJf9e9XgfH9DimO7djKA4UhM/jDwLQxKD/0l4BfhYcYc5nSZYsmq1BV9SMgZ4x7rie/KInP0RX8a3f42gtTf1WkZfmAy9NNp5WB2BepkaQo+kART7Vu1h3/jdhpzuI4uWT/LLTcrpi5pvWS6meuqOmEZuGrTh29OkvMkzdpzCalGuMy75n32nPX1DqDVOKz4mKPmvHLo513ADUaKXEZmQNGIBRNhN7KfjSZdWnDEdydIdAdAAj2yynvBidJUb9qP2tD9yKvoOvFGJJN8G26xo1VPFOFHjUIwpw2aqNnUZc2y/AHtIdasA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qY6loj9QoGNXCfU/Ew1xShneuszgigDEgY8qLYPOvpk=;
 b=cB6s02j89BBN0ug+rTcE3ZBZIzJN3TpgJh+aHI1Fj+VOvua0qQx29m+DP843hMHVsHXzL3lEOu/vfPQeFonpJYwLSVWcqEBKYrOB2pWo9/1e/ug+g4Hp2LBNF8LgmAZfkbt6aSzlnaN70tn6gb187HnelTQamZVrRBXhEWjlnR8=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: Xen-devel <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 v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Topic: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Index: AQHbGx1+kMX1zXLp+0awtOclj3x4RLKGoSwA
Date: Mon, 14 Oct 2024 19:03:17 +0000
Message-ID: <4BFB5897-2C7A-4A44-B9E9-01BB7940BFF7@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-5-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51.11.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB4PR08MB8078:EE_|AM2PEPF0001C715:EE_|AS4PR08MB7902:EE_
X-MS-Office365-Filtering-Correlation-Id: a17c4458-f725-4e1b-ab5e-08dcec82e26a
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?zTzr1W5jt5JSwSTnoBebJyGbWhkxz0XFMDJTe0Rr0hmRiMrbJDOJy8jEifhy?=
 =?us-ascii?Q?FVjt+mMT8hcPyicRvwJLM0kms5cLFAAMwuysx8353kG6HOmipBDfPQlGIbzq?=
 =?us-ascii?Q?zl+XzAg2pQehsmAjKGK5wBqnxqB6y2t+zTQSjze1hShJf6ODXFsYUfcZrAKU?=
 =?us-ascii?Q?SHLoZzz3BZabgHR02iRQrMyK1o79HGhL8xBFr1qzVaMXG0lzdkB4tnfjMf9v?=
 =?us-ascii?Q?IsuV8eCnbewkBCIj5+00eKZMS9Bns/dcHMhvv3m2dTIVZDLdj2rR4SBLG6dX?=
 =?us-ascii?Q?eA0wSXuXmCckkk6Kq1M2fJY6TgcVvIL/e1bxsTPpPKc41+zIJ1cVtttAdNee?=
 =?us-ascii?Q?RzWhTqLxKI/OCirR21u8Tbmh2GBxRWIgU4kXOW0l4Wm8W1FrP6bPhjoospzP?=
 =?us-ascii?Q?pnVd9UBmPum9icp1OHhuQNJJ9NN+3x8RQeE75lsCfUniUmJ0tDYc1GV5xat4?=
 =?us-ascii?Q?WWvWhw67LM4zlIpHp8vb0hdJ4EzWXpdBp3pIbvICd30J01fD51QIjKvvCAu2?=
 =?us-ascii?Q?lqp58NbuRQkqFt2KFqOC+Yts+76pqH96Wv5mIgUTSzTLtRBLEfHAp5AQtKcR?=
 =?us-ascii?Q?bPoaaqCFArvLID3ur+Ih5wdq60YCkD8BBQuKSMoLgtmPq+FIY5uUgqNLOXTq?=
 =?us-ascii?Q?H3SR/snFwuyyOwi2pe5goEVVwL0s1liwHe9E17jmnQQkHK9QD40d116M/8KE?=
 =?us-ascii?Q?f6ibTdlNjWq9z3oJ2C9R95AgrOuCNdlhb0KHjAKpyu7fuJnCqNv70G9XnXQV?=
 =?us-ascii?Q?hE7sFRWuXJvcj51ChQv76mygGbq3vLdT08xJnVF3y1yz7nXyuYcG8vUcGkOw?=
 =?us-ascii?Q?x9lIHULJgUNFg2akq3sbDiW0iBiON6pp1S04Q6sm/wqaLCpxfA4Wvum+tx89?=
 =?us-ascii?Q?JkyR5tiT9nSBTFRm1LTK0exnUdqWiOLXHsV40GYjpZfNsZxkn7uZ3JbUGELU?=
 =?us-ascii?Q?M3o+DAbuo+hH3urRdKrBH8EtHI18fkh4itTjBkrnwt9E4C2YcHgwBWvlEQ4j?=
 =?us-ascii?Q?ZBuBYr12o+4o5vs54cH/s4j7ROee2bA3ZvktN2T3RM5y3Ox+RJLLfhQrtdmE?=
 =?us-ascii?Q?UiTJnzJohrbGspMOSvlNBl6YMOjfaCrepzDYf/D96If31CxKhbsGS9aFiMyb?=
 =?us-ascii?Q?2DLQUr21zSy2fvYPP9sEVr0EVe6LHF1U65LZjG0ObrK5qoBt/8d/Az9JFq5F?=
 =?us-ascii?Q?X8mzMSAENHyVArkkH6Q+ZH8vVOOo7FvBEi0DqtouQ3Hqo8/GHCbjMrcAk31v?=
 =?us-ascii?Q?jPxlFgdKjZmalWzttqgIcNPhYqsmHrbhF1u37fbfCx96o8LKazE2relovXSs?=
 =?us-ascii?Q?lgBBsZRRw/b5qCxotutH164ONMQqNsfvQqv3E2q7UOpR7g=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <E57C18E0785E3246B8DB30F241A638E5@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8078
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM2PEPF0001C715.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d67e74ba-9280-4ddf-7949-08dcec82dca8
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|35042699022|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?VnMnqyqvEJWFD9KLnEUdYEKJ/tj7Tr6f4ax1pjXMrNZ2y0TwOmGzZu3PE+hH?=
 =?us-ascii?Q?JUiPa8A+mH2k/+DLrSsbFb617obvDEqn8rPC+mMp/vhLs4cNaC7l8SFiFusR?=
 =?us-ascii?Q?dg4N5adNbyJrd+FRUg9hXtYvPub8Sdn1AhGhKJzHuT2xzkZUQzu48xd9GjXl?=
 =?us-ascii?Q?zbxp5UwUSlyV3tGImKtBPzFov71b8I8Lz34hrEiC5x3HG70FAUjBnCroX/px?=
 =?us-ascii?Q?K5Own7Wvsa1hedXwqGyIWyoOxcYP//jefkimOa+M+hfLQJknwl5YwCillgT3?=
 =?us-ascii?Q?+pXf/w61ywmM9LD5GHih3fqnqlHl9f1JPPTM5Eq06G6Rty1HkRvxILQ5WLjw?=
 =?us-ascii?Q?C/fNFeGHC9XhHsXIxI7fuRGRwWlpWE+YvpADKUrzJWEQEEyxNpgLJtZR1piv?=
 =?us-ascii?Q?9CVcIltpP2IY6hPO58JKSd/79d2MvBSnJMaP5p0r/mpAKP3ZANgT4PLKdfEF?=
 =?us-ascii?Q?Jzu8GTKWRBOSF2VF0J7xXXygVnYWDsnikAS+yTam0TjawtJmQEkyes5cPZUQ?=
 =?us-ascii?Q?WZuDj3juQnc6yEuW281lNqjXk6pC6Of6S/jL0SSastjYMAIPmUlnGt88p3Ru?=
 =?us-ascii?Q?qsJV1yt/NZme61KvfIdsPEa7yP6uad6pCt6Kbx//HCeW5+Yofsu9K1+IQyAW?=
 =?us-ascii?Q?iJ7bby1RoT+CJbNpZiqBAwDRIoayesv8Yfhoba8Gkf26e7sdx8XVcq7Vskaq?=
 =?us-ascii?Q?oUwOxXmsFXOvwoIZN9xsAuwqOQKOAXpzah6sjqiBQnOTbG2gJ6hj4UiUJeTV?=
 =?us-ascii?Q?7gl66Hq2O6tobRytveJzjuPPZ2gqC/A2WRwg5KYB8bJ3kevQKDTrbEBhKN3H?=
 =?us-ascii?Q?MibLxGJR/xNdzz6FJ2EnUQJ2hPuNQ8FAfpqG+zcjkstFxPdOIn8YbRdsrtHN?=
 =?us-ascii?Q?wabSPft5ce2yMPRn9OVT3xFY7Pt6+EBw0Hx+BlJP7NKMVsC/ZecWikI6D/PT?=
 =?us-ascii?Q?XcgViXzcit5fJbvNQT9q8GPb5oJXRAiIHaVDkf7Vu92SNqXA4LdHEf72PXyM?=
 =?us-ascii?Q?oSB9H/2XGEuWMAAmSgJOJqVUoDrcBY3kn+b0Y6xBG0pKcCvlCNPuA92pkgVi?=
 =?us-ascii?Q?TxSMH9w6MI3Kren65/RNPFD32c2CsLvi5fFPF+y93yM3d9GozEbglzNwwVz2?=
 =?us-ascii?Q?E+/RXuwVu+MZQCthU7yf1M0WW2SyWoIVKCO91i8CDkZvyY7m6/OlJ8j6mSkf?=
 =?us-ascii?Q?nJdBo8ZcWxODUoE7jZ/qHU+FidGXsRE55HSFf3pN/W135Wmy0jfgL1nhzw4j?=
 =?us-ascii?Q?9vCEtU/gor4X0SCJmxGHR7iLuomaWe3GlOollPtvbc8NjX/FlRkKUZnl2q0e?=
 =?us-ascii?Q?4rIe8JxUkh6dcoLd7yFe21zmJ/tPMLB7lIPVyRTHMMmBF3cYOcFP2lp5vE5+?=
 =?us-ascii?Q?/HSkf8nxiwblRO7FWNVc1kexf2NO?=
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:(13230040)(36860700013)(1800799024)(35042699022)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 19:03:26.7687
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a17c4458-f725-4e1b-ab5e-08dcec82e26a
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:
	AM2PEPF0001C715.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7902

Hi Ayan,


> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.=
S
> new file mode 100644
> index 0000000000..4a21bc815c
> --- /dev/null
> +++ b/xen/arch/arm/arm64/mpu/head.S
> @@ -0,0 +1,130 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Start-of-day code for an Armv8-R MPU system.
> + */
> +
> +#include <asm/mm.h>
> +#include <asm/arm64/mpu/sysregs.h>
> +
> +#define REGION_TEXT_PRBAR       0x38    /* SH=3D11 AP=3D10 XN=3D00 */
> +#define REGION_RO_PRBAR         0x3A    /* SH=3D11 AP=3D10 XN=3D10 */

NIT alignment

> +#define REGION_DATA_PRBAR       0x32    /* SH=3D11 AP=3D00 XN=3D10 */
> +
> +#define REGION_NORMAL_PRLAR     0x0f    /* NS=3D0 ATTR=3D111 EN=3D1 */
> +
> +/*
> + * Macro to prepare and set a EL2 MPU memory region.
> + * We will also create an according MPU memory region entry, which
> + * is a structure of pr_t,  in table \prmap.
> + *
> + * Inputs:
> + * sel:         region selector
> + * base:        reg storing base address (should be page-aligned)
> + * limit:       reg storing limit address
> + * prbar:       store computed PRBAR_EL2 value
> + * prlar:       store computed PRLAR_EL2 value
> + * maxcount:    maximum number of EL2 regions supported
> + * attr_prbar:  PRBAR_EL2-related memory attributes. If not specified it=
 will be
> + *              REGION_DATA_PRBAR
> + * attr_prlar:  PRLAR_EL2-related memory attributes. If not specified it=
 will be
> + *              REGION_NORMAL_PRLAR
> + */
> +.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, att=
r_prbar=3DREGION_DATA_PRBAR, attr_prlar=3DREGION_NORMAL_PRLAR
> +
> +    /* Check if the number of regions exceeded the count specified in MP=
UIR_EL2 */
> +    add   \sel, \sel, #1

I think there is an issue adding 1 here, because the very first region we a=
re going to fill will be the 1st even if we intended the 0th.
Probably moving this one at the end will fix the issue

> +    cmp   \sel, \maxcount
> +    bgt   fail
> +
> +    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
> +    and   \base, \base, #MPU_REGION_MASK
> +    mov   \prbar, #\attr_prbar
> +    orr   \prbar, \prbar, \base
> +
> +    /* Limit address should be inclusive */
> +    sub   \limit, \limit, #1
> +    and   \limit, \limit, #MPU_REGION_MASK
> +    mov   \prlar, #\attr_prlar
> +    orr   \prlar, \prlar, \limit
> +
> +    msr   PRSELR_EL2, \sel
> +    isb
> +    msr   PRBAR_EL2, \prbar
> +    msr   PRLAR_EL2, \prlar
> +    dsb   sy
> +    isb
> +.endm
> +
> +/* Load the physical address of a symbol into xb */
> +.macro load_paddr xb, sym
> +    ldr \xb, =3D\sym
> +    add \xb, \xb, x20       /* x20 - Phys offset */
> +.endm
> +
> +/*
> + * Maps the various sections of Xen (described in xen.lds.S) as differen=
t MPU
> + * regions.
> + *
> + * Inputs:
> + *   lr : Address to return to.
> + *
> + * Clobbers x0 - x5
> + *
> + */
> +FUNC(enable_boot_cpu_mm)
> +
> +    /* Check if the number of regions exceeded the count specified in MP=
UIR_EL2 */
> +    mrs   x5, MPUIR_EL2
> +
> +    /* x0: region sel */
> +    mov   x0, xzr
> +    /* Xen text section. */
> +    load_paddr x1, _stext
> +    load_paddr x2, _etext
> +    cmp x1, x2
> +    beq 1f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=3DREGION_TEXT_=
PRBAR
> +
> +1:  /* Xen read-only data section. */
> +    load_paddr x1, _srodata
> +    load_paddr x2, _erodata
> +    cmp x1, x2
> +    beq 2f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=3DREGION_RO_PR=
BAR
> +
> +2:  /* Xen read-only after init and data section. (RW data) */
> +    load_paddr x1, __ro_after_init_start
> +    load_paddr x2, __init_begin
> +    cmp x1, x2
> +    beq 3f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5
> +
> +3:  /* Xen code section. */
> +    load_paddr x1, __init_begin
> +    load_paddr x2, __init_data_begin
> +    cmp x1, x2
> +    beq 4f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=3DREGION_TEXT_=
PRBAR
> +
> +4:  /* Xen data and BSS section. */
> +    load_paddr x1, __init_data_begin
> +    load_paddr x2, __bss_end
> +    cmp x1, x2
> +    beq 5f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5
> +
> +5:
> +    ret
> +
> +fail:
> +    PRINT("- Number of MPU regions set in MPUIR_EL2 is too less -\r\n")
> +    wfe
> +    b   1b
> +END(enable_boot_cpu_mm)
> +
> +/*
> + * Local variables:
> + * mode: ASM
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h b/xen/arch/arm/=
include/asm/arm64/mpu/sysregs.h
> new file mode 100644
> index 0000000000..b0c31a58ec
> --- /dev/null
> +++ b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
> @@ -0,0 +1,27 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __ASM_ARM_ARM64_MPU_SYSREGS_H
> +#define __ASM_ARM_ARM64_MPU_SYSREGS_H

Same comment about define name as in patch 3, here and in every
new file of this patch

Cheers,
Luca=


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 19:11:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 19:11:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818860.1232147 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0QTT-0002CC-MB; Mon, 14 Oct 2024 19:11:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818860.1232147; Mon, 14 Oct 2024 19:11: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 1t0QTT-0002C5-JZ; Mon, 14 Oct 2024 19:11:23 +0000
Received: by outflank-mailman (input) for mailman id 818860;
 Mon, 14 Oct 2024 19:11: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=v7KN=RK=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t0QTS-0002Bz-Ro
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 19:11:22 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on2061f.outbound.protection.outlook.com
 [2a01:111:f403:2612::61f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 189de7b7-8a60-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 21:11:21 +0200 (CEST)
Received: from AM5PR0301CA0006.eurprd03.prod.outlook.com
 (2603:10a6:206:14::19) by DB3PR08MB8796.eurprd08.prod.outlook.com
 (2603:10a6:10:433::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Mon, 14 Oct
 2024 19:11:16 +0000
Received: from AM2PEPF0001C70E.eurprd05.prod.outlook.com
 (2603:10a6:206:14:cafe::2) by AM5PR0301CA0006.outlook.office365.com
 (2603:10a6:206:14::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27 via Frontend
 Transport; Mon, 14 Oct 2024 19:11:16 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM2PEPF0001C70E.mail.protection.outlook.com (10.167.16.202) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13
 via Frontend Transport; Mon, 14 Oct 2024 19:11:15 +0000
Received: ("Tessian outbound cd6aa7fa963a:v473");
 Mon, 14 Oct 2024 19:11:15 +0000
Received: from L89532d193e08.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 B8EB5F18-E6DD-4269-AE6F-17F76FE0BBB0.1; 
 Mon, 14 Oct 2024 19:11:08 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L89532d193e08.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 14 Oct 2024 19:11:08 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by PAVPR08MB9747.eurprd08.prod.outlook.com (2603:10a6:102:31e::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 19:11:06 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 19:11: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: 189de7b7-8a60-11ef-a0be-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=sqqtUn06FTla6hBJmSokkPJWKMxMrBcMWDF96Z0OTu0YbyMTqDOL/N0P0Jvo1+x/JsA+8SfqvHCC9e8i9TNq9oifh17BGqmEvAnMU0E0072LYBrFCxpcmkXJV3DIFbTsDweQFascfFprbr6nHj/GoIwsFccMsL+2W9WuAHxZdMkA61hbBwR25dJZ9A2yvNsnzPRmkSSCHQk7CbA03sC7xdnsVvYaSpCeQvXBa9h68NadfH2CB18J8wGVrqSneRaY7JgMmxrq2LNEROReaoMvUpBotBILaqrZDYivTK+BjUVLTizBbwGO1WeTFt0klfiuQ7AYI6Jv39TdTucjTIFC9g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=fE7k2SmLLhqYbNviwomGEU/K/QmSH8pn9ExHoSq5SUY=;
 b=SClCzA8Xc7awVhW6NT3zPZKug+NAISCXyMFP95OE/fOS3JeTD2Bj0cwiODTUfynZki3npBuOYX2jU226JtlYSP47EGTpwPcugYB9dAXCG1KM05chxZGIWktgkhhUv7XoDTdT/+xxofUXW2pyrsmJdkYsA8h5npbNLOjDhuaE6A6AKHZVpkF/DqJEF++dBCFp5dEoMs/ONOd2komkrHHE9TSeYi+igJPGa9tsw872GzGKUGqeZB/iXX+Tz+b6h0n0SMlAb/vBPnSXm7oGwKDW8AbGsfwNUfXFEqnl8RkEu6t7TniO4ropQ6PglBB9eLLMle8WubR23fsU/cDvBGpDJQ==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fE7k2SmLLhqYbNviwomGEU/K/QmSH8pn9ExHoSq5SUY=;
 b=c1Qi0SMF/gUfd798wkHWhRQJNYUouScNEGCgPCsRKIMWAMhMXmHNaJGxpG5Q1BsknUfxqpaf07EVd/ne/RLLaR7B6D4U5DKzBlC668c8VPuLWfehg3ITYrK6+GAseyis4rE6hjMeyy0IZP80VbG3sHlLJOdX67QYvMhkVfEiuJI=
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=arm.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: fda2988afb4874d5
X-TessianGatewayMetadata: GU/IhCrPs8BRLIEWdFhKYbrYwDWKhPhX+JRvnG69tMECiPQZofTOXfHm8ZsczhFXKZaHkb96BAIPqdcYdFkUDRV2rFloohFtEwYNJ1MtcCTluPy0H76T2xQXqFRkVicXSrr9p08ScFnWnIoJq5QMKQ977ZHzHEcqAxLwt+mMx+U=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=srB3TUS5JcCsOa7UjwLNXuN+n+WQ5ngOfm10/Yq+ipUYppxupI95s9MgWsbJ/wsniWM0nIRCjK/3Glpf3cbvR2YazNNR/M2rRA4+VRxSPlqtM4RxT+KLbHlxAo4HIqAdGS0+3IH9L0xSsd9WX6JtoopOReYrsEmCowkt/s5A5FMZkSOGb/W1S5Wza1wgejTU6mWA++TQ/Q49GzV7AABysu4N7Phe/1Wkk9kjucxTu1iyYuqHUFKRy4eP6LFuaYE1tnzydy4o0PzUCAzLKqODf01Fhep4E6UjHxZvypLRwLJAcawINXFLE6+RijgQcT2TcS6nTdZBW55NY4VIU9GAeA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=fE7k2SmLLhqYbNviwomGEU/K/QmSH8pn9ExHoSq5SUY=;
 b=mPxzL/LG/MtSplUG9CTxpY56mvrBCVOYQeq3zYjof3cqX3mWHRk8W3hvR97vBqUd3hfALfFvI3brOHOhOAgu1YUgge/rEMBDE4rhENQ618p+7+TGkfbT7eJO30uowgUAWHqOu5sP8/E5ZZ3lENC0PliYPGzXpJyzC6tkqjRXDVjvoM0KbWWlbdOioF1TJ49ESL+iHDUg41ytMysBQQsdPloK+RF2IKFEk+Qqo2zj2vetrOcOJpVXS1HFhyR7Nq7GaCV2QUksh4my+s9HGvFwk1qi4gCfKov5n3nQd8aAjPj5sVPLtyHThEdvEqdlgnXpvtw6MWYqkv5yKv+Fjr855w==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fE7k2SmLLhqYbNviwomGEU/K/QmSH8pn9ExHoSq5SUY=;
 b=c1Qi0SMF/gUfd798wkHWhRQJNYUouScNEGCgPCsRKIMWAMhMXmHNaJGxpG5Q1BsknUfxqpaf07EVd/ne/RLLaR7B6D4U5DKzBlC668c8VPuLWfehg3ITYrK6+GAseyis4rE6hjMeyy0IZP80VbG3sHlLJOdX67QYvMhkVfEiuJI=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: Xen-devel <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 v3 5/6] xen/arm: mpu: Enable MPU
Thread-Topic: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Index: AQHbGx2Ge9N55hTx/U2iD9lYiTVQprKGo1uA
Date: Mon, 14 Oct 2024 19:11:06 +0000
Message-ID: <6B1407DF-6FCD-4823-959A-F516CAEAA309@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-6-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51.11.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|PAVPR08MB9747:EE_|AM2PEPF0001C70E:EE_|DB3PR08MB8796:EE_
X-MS-Office365-Filtering-Correlation-Id: 0161363c-c3de-413d-76f1-08dcec83f9c6
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?PYW+2H65xbBW39VbhnN/HwR1U/mJNOz+EFwd1UWMWRfw+UVJwxCgdrzsO9Kh?=
 =?us-ascii?Q?O2ocEZiEcyZWGEOKSjSCYHFV3HwJJjssQkZ/+aoBsXwI7drbLnPIfkpRkxnI?=
 =?us-ascii?Q?VDkQvxzlsR2zDE1u2TGHUqTXr7uLEOs5XTcKC7rwhT9RLfOMH4rhEJyHhBis?=
 =?us-ascii?Q?jdGGMFR09SXCvwdbau0gq5PZWAaj7sGhIYqvKOkX3C/EXCRgxzYRFR71QeFp?=
 =?us-ascii?Q?F0jL6n43BhVnpyWZS0bm3877a7kxHnXWY+iumzzdeAW46zLWnJThM6/A3bvz?=
 =?us-ascii?Q?QAV86pQyqeIEvwEBvqWsZ84KRTJrvLa0YBW/5zHbWBvu18Q8dRqrkliu2KII?=
 =?us-ascii?Q?mk7YXj31Nn5ulg3JQXZCCO9DNT/s/+obo3yCRPWUL2l/e04RzVo8VYMoKAYm?=
 =?us-ascii?Q?7L53+OBYwL/vC7BpB5jSK2ZTrlE34rOwNfGxhKkmOx9bLhd+jSaQfYfa966T?=
 =?us-ascii?Q?1Na8rkyIWcYmc5xLR35L3LldLHbbzaLLqk56QHsfZbvViFisM87/qQuebiOx?=
 =?us-ascii?Q?SYgZaRTrW7rMH8LLkcz5zGMFLXdQWEKd+QnQEZwOPhbe98j2auLGImH0ggxu?=
 =?us-ascii?Q?HMGbSuaKStAekkeVzBkKVrI3B2TV9Ev9LzRIiUOi4+TIadpvXOiuVP4/mtOO?=
 =?us-ascii?Q?w9TYP7tpkzrJBbp6uD230ATGlejX3XYhi/yZqfqVLJvkiLeMYUxqfo5ESZVv?=
 =?us-ascii?Q?SpLBhAnNjfNIk5umF+QlI4MK7H2AjFH6vSrwLzP7JIgI88+Yhstycu/LnqXH?=
 =?us-ascii?Q?7oc0lRXdchNDVufQ4cSGG9466aaOZSsAWtzgPIjEp2etiW85tN5ebiT16D0S?=
 =?us-ascii?Q?ZwgvgIFj5IglWpRzpv+PcADmpFMt9L4i8SelAYu6I/BuDlJbu4/vpiEB2ssb?=
 =?us-ascii?Q?NElX9wfnzA+tW7U5B+UckWMDEnqQFMq8/BQwNmXZe9xeP0WZPLjRgVGd4Fw/?=
 =?us-ascii?Q?ANyxm4rFsg2QkbrmJiecgZh4NC/fsDfUlrtcyemg5ShzFkcgwY3zVVuNfJbN?=
 =?us-ascii?Q?HPMQ9iXrSc4M9nf6SUWe1Yt3dhDVgMX5HZDWdNYfuw7fcuIuPrWNOSriDUYb?=
 =?us-ascii?Q?QKztGfdJqHCTqjgEtJgFeqVC/R3kHf9eiHAqPAkBME4SnGEobwFqz5lN/lYy?=
 =?us-ascii?Q?SY+hgUoLA15gC7/X9qF8JdyQj/P8B7n0H/dD0ezWs2IfQ3pp9bq8NvsmjEFw?=
 =?us-ascii?Q?Ht2YZZjHgVykBXUCgqjAwN71vZW/bPp+DfHYpDYFPq6gDZATjYy8OZ3MaMBE?=
 =?us-ascii?Q?2vStqcMGe9AA6UzC5zhbT9SQw/rHkafVCt3xN2gA0KEUYM3gJomaK0qDrrly?=
 =?us-ascii?Q?8Enkmh1ivQsa0QyqKsLAOSFK2VBhafgI20z+3lwncYwO5A=3D=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <8ACFF1F1625CF141B5DC18FA2CE749D4@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9747
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM2PEPF0001C70E.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	4c239ca2-d3a7-4bb1-bdc0-08dcec83f44d
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|1800799024|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?6GRRKljx8hJUQcsaDZe6ew/yfqUW09nMQNCjQcrhuG8b+y0xK8n5nCgBLb/N?=
 =?us-ascii?Q?8P9qZ3SrZslQOKn+TQt95C9Rfqez1f9fSk0rBBIzlqLYe/I16NBYtWkyoUDL?=
 =?us-ascii?Q?Txf1qBXt5XMxIPiENDg9ssCZYf6I1XSrEI249QdMHkbDxd8efKiBF/KfIHvv?=
 =?us-ascii?Q?lxKvGE07dqc/iNr2aIHiVXj5hAVNOX2SNiJv63cq8D8nWC0bJLinlv4hWfEQ?=
 =?us-ascii?Q?Ou+Z7GgFFui1P/0IR6py7WKojhYgCJeoX7ZxUyPQcmRaU/FY4tvfi+ayfMFK?=
 =?us-ascii?Q?gNnHSiXuEv6kc1Rf6II+NLMJQEMBT3iATlNYxOoPbNek0NB1n6rt5AtKEIkN?=
 =?us-ascii?Q?w0/4WvcwbeHiK14h6wFSFVOM3kNdkasNmcYjd+pakE5ZhcezQs4AqHy3T2QR?=
 =?us-ascii?Q?4S4kFX9mOFspgKGwlLj6sAuYHjEKhOY2xC80s95K+rInH9RXwLAOJDU+JzNJ?=
 =?us-ascii?Q?1CgIkXjKZp8py2a4KhvAWWyaR0JCMvh/h8jzVj1WfvZwx99eMl1zz/m6RPiD?=
 =?us-ascii?Q?d1xvjy/vg75YzzaEtdxlwoRszokSaJ5KxCkK35NjgfFQa2w+ICoKY/R7HyRy?=
 =?us-ascii?Q?ZEKQgMGsRw2rdmvzc4hGzsY9jLUVW9yLZ6jlYX/EvLZAIOgI0wruwb4E4/cl?=
 =?us-ascii?Q?/Po/g8k+mrUJij3qRapuF8wEMg/rQ1JLfuSqy+kaavISrQUyzXorxU7yOPBb?=
 =?us-ascii?Q?VwcFFTWqGiG3I/un1uiZyUDhS3opuMonp0K3385HEwFaIVPakBVRy9nQx6yP?=
 =?us-ascii?Q?MEGWLdgO5U9Q8lcrroY0DhAJtFWGxZnbU2LtIIK5Wt0KHRJnKo3MbplSPcNh?=
 =?us-ascii?Q?1sCq9Q9z7Jlf5E7O0BXx5yFY1BAywa6LAI5GcEOLo9+/guySA1r7q6FTb5ol?=
 =?us-ascii?Q?HLtcGJj63rwow36J8PB4P/UV/PtO7lMeY2XNF8LIK9Xq+9DjcYQOuIIZKYYD?=
 =?us-ascii?Q?cAKcCrI7eBdbnm4ZumsX9KyolMEI3TmxoDXrfs2+wFLpumQaqWZ05YvpnMDi?=
 =?us-ascii?Q?LPVDDfo8hYlrxs6IxZfpvyOU5fEa55EuCVqjN6Z+Tfzs/a52oP4jUmMItZ5n?=
 =?us-ascii?Q?YFM4sYINAgDhnvioLnpCdJC5gUFdkZrSF+RpKkX2mrc4684U4TXB/XLemJJR?=
 =?us-ascii?Q?y6jXMWsYmw7Zz5EoMTV8lP8BdbUF/Yvn9WmzVdup/z55lmIn0VZnARVxOu5w?=
 =?us-ascii?Q?DqFLuYStxA1Y0XkDahgWNsmFNmQJj2xWEAHsSyZGAZQGYLPp9SlOh+46HOZT?=
 =?us-ascii?Q?Hb2bqksEM+COrXVT8q9HmkVD9hoWyF7I5ZYBmxEVNslJWikDNwn9+fbXVYNw?=
 =?us-ascii?Q?0ptHP6B5VAy8M7QSZsPwmkLjTiMev7O9RMCvq/pgLfuc3z0ccPEOv2OtoIA6?=
 =?us-ascii?Q?qzkQXlJiOzxPa6rip1T8kKT8AzDk?=
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:(13230040)(376014)(35042699022)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 19:11:15.4703
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0161363c-c3de-413d-76f1-08dcec83f9c6
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:
	AM2PEPF0001C70E.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB8796

Hi Ayan,

> /*
>  * Maps the various sections of Xen (described in xen.lds.S) as different=
 MPU
>  * regions.
> @@ -68,10 +92,11 @@
>  * Inputs:
>  *   lr : Address to return to.
>  *
> - * Clobbers x0 - x5
> + * Clobbers x0 - x6
>  *
>  */
> FUNC(enable_boot_cpu_mm)
> +    mov   x6, lr
>=20
>     /* Check if the number of regions exceeded the count specified in MPU=
IR_EL2 */
>     mrs   x5, MPUIR_EL2
> @@ -113,7 +138,7 @@ FUNC(enable_boot_cpu_mm)
>     beq 5f
>     prepare_xen_region x0, x1, x2, x3, x4, x5
>=20
> -5:
> +5:  mov   lr, x6

Shall these changes to enable_boot_cpu_mm be part of the previous commit?

The rest looks good to me:
Reviewed-by: Luca Fancellu <luca.fancelllu@arm.com>



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 19:13:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 19:13:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818870.1232158 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0QVp-0002on-64; Mon, 14 Oct 2024 19:13:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818870.1232158; Mon, 14 Oct 2024 19: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 1t0QVp-0002og-2p; Mon, 14 Oct 2024 19:13:49 +0000
Received: by outflank-mailman (input) for mailman id 818870;
 Mon, 14 Oct 2024 19: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=v7KN=RK=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t0QVn-0002mR-Mz
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 19:13:47 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on20611.outbound.protection.outlook.com
 [2a01:111:f403:2613::611])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6f2a90e1-8a60-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 21:13:46 +0200 (CEST)
Received: from AM0PR03CA0074.eurprd03.prod.outlook.com (2603:10a6:208:69::15)
 by AS8PR08MB9765.eurprd08.prod.outlook.com (2603:10a6:20b:616::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.16; Mon, 14 Oct
 2024 19:13:43 +0000
Received: from AMS0EPF000001A2.eurprd05.prod.outlook.com
 (2603:10a6:208:69:cafe::3) by AM0PR03CA0074.outlook.office365.com
 (2603:10a6:208:69::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27 via Frontend
 Transport; Mon, 14 Oct 2024 19:13:43 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF000001A2.mail.protection.outlook.com (10.167.16.235) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7918.13
 via Frontend Transport; Mon, 14 Oct 2024 19:13:41 +0000
Received: ("Tessian outbound de6fe3af73ff:v473");
 Mon, 14 Oct 2024 19:13:41 +0000
Received: from L0ed85c415d29.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 94267DEE-95B0-4251-84F2-46BFA76DA3DE.1; 
 Mon, 14 Oct 2024 19:13:34 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L0ed85c415d29.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 14 Oct 2024 19:13:34 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by PAVPR08MB9747.eurprd08.prod.outlook.com (2603:10a6:102:31e::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 19:13:29 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8048.020; Mon, 14 Oct 2024
 19:13: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: 6f2a90e1-8a60-11ef-99a2-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=TXyjL3gT8k/BILyc9rw6rWn6WEAhXP0tABJKkQIxGAK8DqMip8yCrE1kzH7Vt9U0DmTytTb72TEwPnc2U2BXVZdz6dZ9I/WNe7SHvXx0Ud7BF5mjfOqKtrMWN/Jg0U/jErM/MrWriP+rGazexj9IDiFjIaWAUL7CpPsORKlIanTa3l6a/PP9W74CiSyv7mhBuoIEnwQ6Na3vGqOdvQZgXOyrGoNNO98zNfKq73SRAeMLCB08aaY1MdYJjdJbMetLkbEegMTBY3/xdk7c+BIpkIeOyXU+K7W3Pqf583Oz9tCmLkRC30tA+k4t+ioUoUvGLNXYGFG/3FNkCEekk0KF3g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=k/KVuWsxVKGj2DiidtHTa5AbD05NG6u65EnAfFVF+5M=;
 b=mqLCe/N1db1Ui8c0iOg75Lr+nM87G28s6iEBWCvxP4XFt9YKkjgTcr7iEdZvLg3XN4pkYs2nyjz3LBJ3ivJ62U6g2FE46Zeo4H0O+hvdiVQomY8/NTxMCDMGwcfmRhET+AEFXZSG09IVzYR1/WZYSkiJCboqrxfdgBZXzmRNk11mIehDeIsiGqX6pWA/GU+IvaAcO03fpLc+YfW+mOx4cEDcqc6lIe6s3ZbZtEyvuXB8y2a0AeCReRGfPaLpDnjlijBZGeSB9SaRzHmpS7q7ZP1uCtqbH0vy5xrNQeAK2jW4ABWknYp9mXdWJMC3XlJcuJU6B8Z6i/d/l0/xAY1Ceg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=k/KVuWsxVKGj2DiidtHTa5AbD05NG6u65EnAfFVF+5M=;
 b=KkiXcDsrjnQYuNQwBKhoFmo99iEkd7MG3xGz07DUP/4kwJtomBD33Ygt3pTiI69w0SHWwGqtZrzl8wYejmsSewdwSCANFebB3cH21AqVz+a5E2VVir4yv3/wyxVfk9IwrjtWtAtdmTkf8wT5aSY5goAUEbVrBGgkG/RugVEhxPk=
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=arm.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: d2102fc88d0a7673
X-TessianGatewayMetadata: Z3+bUpSpdPPASC6cc65tA4eG09Fej0J5aLYIbagSUqr77TCrxjsZwRrVX+Rcpgao5/t6a/YQrGcPGk9q74T+TS+gcZlDJi9qbYssDmYlIsH4PZx2vjL/yjXaB+uILdPUeGULOSV1t27oadkbdFJ+U55a4PbVLYvSHlg5A8YHL1I=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=zCo2X3W5EeMXwgus8GrkryIbV+xU0gFvIAdy2QLkKfa/exGG21bzp2Cdp8VfWmHFSNe6teCgpB5VKgl9KFBNzj0UpSFv3LW9/d0Qc/hwhqi7PF1LnUoCS1m/Mlnaf1xoAZL41P1m+jlyteAz3wozAKy2FFk7ee5esmXiUH5mzpum/nfQjejylmSg7MmPhNeGmrI3lec6QniL8tQoT0VWecP+/PHpZ/bLCuiiFnwPa631/M76Gh6XtPFrNbPM8TU28H7uwkK6EaevbOWXRlzWj9TLkRIy+qQFL8dKeUTU/N2ULxymCP31/YWUBFWiWz5XNjuIivAVArl828y//H4aRA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=k/KVuWsxVKGj2DiidtHTa5AbD05NG6u65EnAfFVF+5M=;
 b=WUKMShR2puFYgp8LN+c2XoenxiZdQl18p1BprccX5NgkRi8iS2YzqiQsONAEDgHb6/XIq9ih/VVmW7prpBgUhbgw9b2IgH2Z6CyJeZgMiWFnK6zdzKAWq84jVRy60LQgDtZ7OjZ0fC6ZfXpu/Ca0Z+YWhqQohaIlkiDpg+9PKIMYDP7R8pLqs9sLt0lrCcWQin+yMjnjufy0ME3aMBFVMNIgO9B/mXsv6wKfxihIGSch+KahPPcx7BFUiBIYRVwDXm4LycIyz7L9dvv04HmGAWGxrVBfoURJJ5CyM9RajaogC9wAJga8B41mIDupPY4iuvQrKUUJVODSzKERoGlXDw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=k/KVuWsxVKGj2DiidtHTa5AbD05NG6u65EnAfFVF+5M=;
 b=KkiXcDsrjnQYuNQwBKhoFmo99iEkd7MG3xGz07DUP/4kwJtomBD33Ygt3pTiI69w0SHWwGqtZrzl8wYejmsSewdwSCANFebB3cH21AqVz+a5E2VVir4yv3/wyxVfk9IwrjtWtAtdmTkf8wT5aSY5goAUEbVrBGgkG/RugVEhxPk=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Andrew Cooper
	<andrew.cooper3@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>
Subject: Re: [PATCH v3 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Thread-Topic: [PATCH v3 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Thread-Index: AQHbGx19ZodYjKVFWki3qzuo9dh20bKGpAaA
Date: Mon, 14 Oct 2024 19:13:29 +0000
Message-ID: <594C2084-5F3A-43C1-9C1B-D27E9800548C@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-7-ayan.kumar.halder@amd.com>
In-Reply-To: <20241010140351.309922-7-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51.11.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|PAVPR08MB9747:EE_|AMS0EPF000001A2:EE_|AS8PR08MB9765:EE_
X-MS-Office365-Filtering-Correlation-Id: b3331b68-eecf-4a80-ff8c-08dcec8450ba
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?d2M1b2ZpSkFtYVBZMnlQamgrWEJEMTVBQnJ6SDZxL0xKM0FDNGI2Vm93amxH?=
 =?utf-8?B?NHIrMkw4dzg2NGp2bllYdlZEaTdsSnZyMm1URU9razM5eHFCU2VsV2h2cVlP?=
 =?utf-8?B?THNxbFBHTzNvVjl6UENUTEczOGk4QlVMd05DSFNINGtORGRXcjhJcmpBa0tW?=
 =?utf-8?B?ZlNLNGdFWHovK3Q0ZkRrZGxrcEd5USt1WlVuOCtNd2ExS1RYSVpleCt5WHpR?=
 =?utf-8?B?YVRUSXN0NlM3RkpFVk1abGV2Q1FLSDZ3U3dpTDNLV3VXMUY2L3VCcm5lQWRa?=
 =?utf-8?B?UWxEYkZjVENXbXBFL1ZMMzlkQTZFOXVLS250OXhpMC9NWHkrMjgxeHNtdnJN?=
 =?utf-8?B?KzdZcXJianEwZFQvRHcwNnhxWm9HWnhKYXNoWFg1NllpZjN6UkRNNU5aSEI4?=
 =?utf-8?B?eUI4QUQwcG5jKzNDMzNmckR6SWtZT1dybmtHLytLVlRsZ1J3cGJtcWpLYVQ5?=
 =?utf-8?B?MExGQk1oZFRlTWZKbTNvWGxPbGRCSHFEVjVqOVdUZWZXVjQ2MUhtMUhaYUhS?=
 =?utf-8?B?T1U1QkxGck5YL0hha0hVc2FVVW15bXVrMkg2SENTU3A3UkdTZkYxK1pTRkgv?=
 =?utf-8?B?TFRwblNBSWtMK0dEVFVsYWllQmt1V2V2L2llaEdtcS9RemgxdWRzWDZRV1k4?=
 =?utf-8?B?Um9EV2V5RFFQOGloaDBlSGgxWkkyMC9QMEVJc1J6Z3loNmp2VGtuNkU3cHN3?=
 =?utf-8?B?THFQTlJPS2U4b1pQRElUSkZRZ1djUXJKcEpNTFFyaEZDc3NDTVhrNzVVTFBx?=
 =?utf-8?B?WDllQXdUUlBLKzVGU0tEcXViQmRKcDduL05OcEU1akVNWG5GcWhmUSt1eW96?=
 =?utf-8?B?RzQyelgzeDFUSzU4UUUzODBVY0J3Sm5sNnRwOTdJYWprT0ZIU1FrNEFoUHZr?=
 =?utf-8?B?ZEhMWFd0NFFHVVVrTkhNS2ZpSVVWRFpnaXVBQ3hkVGlFVjltek9PWDV0NUNp?=
 =?utf-8?B?bThhMUdKY1ZuNEhveEVwSDAxRFhkZk9GNWhkT0hRWUFsNXo1TlN6U09RV25m?=
 =?utf-8?B?T0RHV09PaWFnZlRzaU5CR3JHU284ejJqUFljWkN4UTRiUEE5dmFHekxyeTI1?=
 =?utf-8?B?a3lYOWM0NGNNT21BR3JhSk9CQnUwMnhGNkh1Z3VlTnRHaDR5ZnMrbVErellr?=
 =?utf-8?B?cjdzNWJ2Ymt1d055ZzZjVktEbGNUc0txZjErTUZsKzVYN2FuTURBMmJRQ2VO?=
 =?utf-8?B?REg5UTRPaVd5OUo5bFdQMFloL3cyV2dCWWZNWWZJcDVwNUdvNTJkaDhlMW5D?=
 =?utf-8?B?cXptQk5pSGc4aU1pSmJsT2Zzb3k3K3pMWWNzbUg2N3l1Q1ZXdStxN3RyVW9B?=
 =?utf-8?B?djZXc01mdmJmZmpJVGNYZVVrYXY5Znp0ZTk5bkFJTVR2UFE2MVMxYlNmQkZK?=
 =?utf-8?B?cWhQdEcrVzdYS0hxOWh3Si9mK1ZYRXAya2JHa3NudGQzd3hVQWY0TmovZmdi?=
 =?utf-8?B?cGwrZ29xa2FBNjZSVDJRY2Nlc1FUN1J2Y0M2WE95RmZKYVhQUDJkM3pEUENF?=
 =?utf-8?B?ZnBWNS91d1FVbmRtQ29abmhrWHpHZldWeUV5V0k5ZnBoWmJwV0t6MTB6a2R2?=
 =?utf-8?B?SmIwb2JpQXNQU2tMdFlHUlkwZ0ZwTTBRd1BQeUF3eU5QejVOSy9CbHNmdFlj?=
 =?utf-8?B?bDFNQjB4MmpCcVIvV1pjMHFRVmp6Y3ExWDZLMyt2cDUveWo1WmpEWG9ybkMy?=
 =?utf-8?B?UzgvMFFTdnc5UFBEZHNLV01OL0lVZVJXMlo3bzB6QW51SVE0YXoyY29GZFRa?=
 =?utf-8?B?czVSMDU3TTFpaVFlY2ZzR1hlYjl6dkpBODlsczdqZm1hVzRLSzBPeXo3eWR2?=
 =?utf-8?B?Q25zaHQxZ2pWK0M2aUJWQT09?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <8C7344105D891D48A8173B3951DE2213@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9747
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A2.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	7f10fcc5-8c16-48e9-03f3-08dcec8449a3
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|376014|35042699022|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?TXhiQ21tME82cWd2b0R2b21kcWdIOTVCNTFaSWZjWUJDSjZUd2ZWdndYa1hw?=
 =?utf-8?B?NGMvWWJCcHNBeFI1c2w1OEl5Y1NLWEtRVGdwUWtwY1pLMHFCNEFSdi91RnNE?=
 =?utf-8?B?dktHQk5iSUpnUzNqVXlEMzJ2OFlHdzZVTzhuMFd6SWVkcHp4Q2F5cE80VGNS?=
 =?utf-8?B?czd2OVNpMHVrWXBNczVMb1NWbHQ1RnRRY0trYllBY1pVeWhibHNMYjhkZFdB?=
 =?utf-8?B?Z1NBdm5ldUN0WURDamtlL0s1VjBOM0JRS0Q1VG1vdUJIdFdyRDB2Z0J1Q3ZJ?=
 =?utf-8?B?dlNPZ05ETkxGNldCNmJuWWxHOGdvMkdHMXA3cjRzM1pTN1d0UFdHNXJRZmFP?=
 =?utf-8?B?VW1odkM5U2pYdXNmSENiRFhMSitJU3ltWTFJZmJxRGpsNDJDZ3o1d1BtYThS?=
 =?utf-8?B?dHdnOGF2QzhZelJ1OTNNdXZ1NnJBMXR1dFRpaWJmSThGRmdrbHdpRWFrb0ZB?=
 =?utf-8?B?MCtoNmFmalhLdXorQSt6YlFkcE1aM05xM1BPK0VtK0R1eERYaDNpdS96TWRo?=
 =?utf-8?B?VDZQTzg2emgxK2lJK0RtVFhDd0o5T3FtQTNlQTdXR2phRzFJQnkzeTl4OWlQ?=
 =?utf-8?B?cEtydFAzRVhHNWpKdFhsbng1TDhFaGtBRHZ2cEduMjdvR1prN0JWU0RlR3h4?=
 =?utf-8?B?aE05eGZKVTNQRHlWZVl6RXVBWWwzOTN4WWMyL0RQQzRkenZsVWMzdU5Sbkc5?=
 =?utf-8?B?eXAvMXRzZlRyS3dKbTlVMHMwSTVOcDNNSFQ4OFVNY3p0TEdVOGpDVkFvUGVI?=
 =?utf-8?B?b3lsQXZlbTBvYlkvLysyZVdxSm5RMWk2MmwwMmJveDBCVktoK09McUZlOGRL?=
 =?utf-8?B?dlVmMms5VS9TY3FJckhnZWVRQnh6b25ZTzEyVW1ZdGFKeVhySUU2RzJ6enRw?=
 =?utf-8?B?SWlCSkpUVnA3QkNBcmRxalhoNEVheUFmL0dtQTBPNXdxVjlHaTZJamtOSm51?=
 =?utf-8?B?TjJWeFpBMXF0NUh1MjJkZktITW5pcGlsdi9tQ3c5eTF5Y3piNm96ODlDV2x6?=
 =?utf-8?B?R3grZFJuT0o3eDFKMHo2KzQ2bnZnRVN3d1pDd3BzMUp2cVFzT3FERUlncmNm?=
 =?utf-8?B?Ty9TeUhvcXpPM3lWVFZpd3V1UXNzazNydi9mL2xFS3VGejRidEprQnNKSkNl?=
 =?utf-8?B?Y2hZeG1Na2FCWlpGRGI5RHhmeUMvRmlSVENvdjBBUlJpd2RteWxMNUFJUkhp?=
 =?utf-8?B?aGpRNmx2UkhGNG9jbEhKQ2QxYU1rN3ZxVHE3blRzZzJuYTFKT0lSaXJoSFFo?=
 =?utf-8?B?WWF1UXZSNzN0Yk9oS0Y1bG9peklldUdBWHVQdC90eWo5K3ZJbmpOSEU0cjNZ?=
 =?utf-8?B?dFlQVDF2TmtoMFJSTWxGUFJjZ0NlMzVEZjY0K3phbzZTZWpBczljYnNVaGVN?=
 =?utf-8?B?bmcxQXJHWWlaR0N1bTJ4MitYN29rQzZNMUo5UjNUQTNuNTNuTkhwaGVPSEVL?=
 =?utf-8?B?RWJUMWxxcXIwQ09EWVlDQUlDK3RTNHVmbXJWWkFLYTd3OXhBS0V0Z3pxSXJV?=
 =?utf-8?B?cFdmZDRsckpUYXJXZkdGQ1BQWEorWUNpKzZGQnQyY0dqTG1jeDlEVEh3ZDNn?=
 =?utf-8?B?V0VxcTdwemxTcXBILzRqZFM0WUpyQUlrRURJaFUxNDkzSGZncXZQWE84cjht?=
 =?utf-8?B?SDh2VGJkRC9vc0FKbGNmdkJGVWlHYVdOMDVOckVGS045aDBENVJJR1A1S2VO?=
 =?utf-8?B?ekhHWnd3NFIyMFB0b2FLMHkvUjBEYWEzN2ZkTVZFK0ZpQmM1eEE0VUIxd3N6?=
 =?utf-8?B?OGxVQWdOdTFKMkFtVnp6ZmN0YU1Ybkc4K1FwbE9TL09tNDhIVVhZMUlyUzFK?=
 =?utf-8?B?ZWlRUnFTOTJzQnRHU2YwYkhrNkJ5ek8vWDU3SXM4NFE4RVJCTGFrdnlZMWlK?=
 =?utf-8?Q?DLexnOxdn5ysA?=
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:(13230040)(1800799024)(36860700013)(376014)(35042699022)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 19:13:41.2632
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b3331b68-eecf-4a80-ff8c-08dcec8450ba
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:
	AMS0EPF000001A2.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9765

SGkgQXlhbiwNCg0KPiBPbiAxMCBPY3QgMjAyNCwgYXQgMTU6MDMsIEF5YW4gS3VtYXIgSGFsZGVy
IDxheWFuLmt1bWFyLmhhbGRlckBhbWQuY29tPiB3cm90ZToNCj4gDQo+IFNlY29uZGFyeSBjcHVz
IGluaXRpYWxpemF0aW9uIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLiBUaHVzLCB3ZSBwcmludCBhbg0K
PiBhcHByb3ByaWF0ZSBtZXNzYWdlIGFuZCBwdXQgdGhlIHNlY29uZGFyeSBjcHVzIGluIFdGRSBz
dGF0ZS4NCj4gQW5kIHdlIGludHJvZHVjZSB0byBCVUlMRF9CVUdfT04gdG8gcHJldmVudCB1c2Vy
cyB1c2luZyBmcm9tIGJ1aWxkaW5nIFhlbg0KPiBvbiBtdWx0aXByb2Nlc3NvciBiYXNlZCBNUFUg
c3lzdGVtcy4NCj4gDQo+IEluIEFybSwgdGhlcmUgaXMgbm8gY2xlYW4gd2F5IHRvIGRpc2FibGUg
U01QLiBBcyBvZiBub3csIHdlIHdpc2ggdG8gc3VwcG9ydA0KPiBNUFUgb24gVU5QIG9ubHkuIFNv
LCB3ZSBoYXZlIGRlZmluZWQgdGhlIGRlZmF1bHQgcmFuZ2Ugb2YgTlJfQ1BVcyB0byBiZSAxIGZv
cg0KPiBNUFUuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBBeWFuIEt1bWFyIEhhbGRlciA8YXlhbi5r
dW1hci5oYWxkZXJAYW1kLmNvbT4NCg0KQXBhcnQgZnJvbSBKYW7igJlzIGNvbW1lbnQsIHRoZSBy
ZXN0IG9mIHRoZSBjaGFuZ2VzIHRvIHRoZSBhcmNoL2FybSBwYXJ0IGxvb2tzIG9rIHRvIG1lOg0K
UmV2aWV3ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2VsbHVAYXJtLmNvbT4NCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 19:35:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 19:35:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818880.1232168 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0QqM-0006BS-Qx; Mon, 14 Oct 2024 19:35:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818880.1232168; Mon, 14 Oct 2024 19:35: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 1t0QqM-0006BL-OS; Mon, 14 Oct 2024 19:35:02 +0000
Received: by outflank-mailman (input) for mailman id 818880;
 Mon, 14 Oct 2024 19:35: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=n5/l=RK=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t0QqK-0006BF-W6
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 19:35:01 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on2060d.outbound.protection.outlook.com
 [2a01:111:f403:2414::60d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 649672ad-8a63-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 21:34:57 +0200 (CEST)
Received: from SN7PR04CA0048.namprd04.prod.outlook.com (2603:10b6:806:120::23)
 by DS7PR12MB8369.namprd12.prod.outlook.com (2603:10b6:8:eb::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Mon, 14 Oct
 2024 19:34:52 +0000
Received: from SA2PEPF00003F63.namprd04.prod.outlook.com
 (2603:10b6:806:120:cafe::52) by SN7PR04CA0048.outlook.office365.com
 (2603:10b6:806:120::23) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27 via Frontend
 Transport; Mon, 14 Oct 2024 19:34:52 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SA2PEPF00003F63.mail.protection.outlook.com (10.167.248.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Mon, 14 Oct 2024 19:34: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.39; Mon, 14 Oct
 2024 14:34:52 -0500
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.39; Mon, 14 Oct
 2024 14:34:52 -0500
Received: from [192.168.122.223] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 14 Oct 2024 14:34:51 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 649672ad-8a63-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=acGXjQhoTlI13Cho0+B/muvkVH4JmsPGZDFt21J01nCW8LYhta6iM9812epKB1vyhIoTMkDNMaLFAVOjdODiK+sZ01TSeLjN8F6bhLmYLAqHZmgUiKWNVBwZGyurcDcYZntvyMoaa828xNlrMwvydF+39KDAWGUlF/baOQoeeW9LZ6/HZn0WwwQ5BVS0qtCNcbMA5QH1ngvKtdrPySB9Unb2/0FuE3VCofxAiZRoyRfekr2vZjjpc5UIRo0R1raB8DFTK4U82b69+cBB7u7mKgROW63/0CenSczl84McydHbtb8+VuYoEbjatY/waSHZtOZcHmApq8vlPNi4phH47w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=So1Uuts7Om0gG4P7bfTl+P+vFuUUY52uL60n03Dy22k=;
 b=hvj2GOeVa2zhCY8k0HTQ+eOHVQ1zTzpkLRMu0Hod7W2LhzdYfOqsw0borW8+K+u8ttSYmyovNyv0o7JIs6qaH8Zxt7/3yATflAz4gd2r+IgVn/7vG7sZw/g0pGd1xA3eoIxLdyBaeWOIPRnfwz46EK9ddRNTD+kIQAfSSpJRXKh0qd8yWR/eJ3iQEwJz2BPwpO28vRj8l8MxwZKlq+AJMzDbqCTSTpXQLv+UOqYj6AdVyMm6ucIFbH6cFoB6t8dtHjXmD4jauBvb0H4aOh+S06nNYiCsnq6ZE2QRr449cJdOIjc3gy4gxQczlumH0PVuIrQHTh3iKWG/bykx06vYkQ==
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=So1Uuts7Om0gG4P7bfTl+P+vFuUUY52uL60n03Dy22k=;
 b=QnhUpjuz9hIHTIAPIJXp6Dl2HIO7QuHDiPkgZpHOYytGzIPpRMlNl1UllG67jxvgvhpfxlmsmTyN9atS5CtPhMhALQ2NfDAegoXoz8JaHblYTuY9AUHm7wCV/TYQDWoaU/yu79P3o5BJAlYYgtPHnRl2p5N5mwDCiam+2GgZafA=
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: <fb14e4dc-b8ea-444b-8eee-551d05b7217f@amd.com>
Date: Mon, 14 Oct 2024 15:34:50 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC QEMU PATCH v7 1/1] xen/pci: get gsi for passthrough devices
To: Jiqian Chen <Jiqian.Chen@amd.com>, <qemu-devel@nongnu.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Anthony PERARD
	<anthony@xenproject.org>, Paul Durrant <paul@xen.org>, "Edgar E. Iglesias"
	<edgar.iglesias@gmail.com>
CC: <xen-devel@lists.xenproject.org>, Huang Rui <Ray.Huang@amd.com>
References: <20240516101338.86763-1-Jiqian.Chen@amd.com>
 <20240516101338.86763-2-Jiqian.Chen@amd.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20240516101338.86763-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: SA2PEPF00003F63:EE_|DS7PR12MB8369:EE_
X-MS-Office365-Filtering-Correlation-Id: 4d0b5aa9-2a23-4e54-efc0-08dcec874681
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?NG1ubTdPZ1FNVVVOTWhLbUltU0dhajh4V0JzQ25wN3hRc0J4Z1RKRVBBNGE0?=
 =?utf-8?B?c0JMbEZaRmdNdUdodmdNU0RYZ3dvVGo1a2l3bmN2THFsckRrS21zbXE0dis3?=
 =?utf-8?B?eDBaTDdOS0dtS2xqSW54MXg1T2NFUTdLaW5OTVBTL1lJSVdSZ0gwendpbXJG?=
 =?utf-8?B?YVpGQkdvL1hmVFNvQzhEYm5UVUhUNmdCSjhSVXYzUE1ic3VsenlFMitrUDJj?=
 =?utf-8?B?bGpWZ0htU2hvYTNHZmpPMkswOXRiZEd2WU1lUThHU3FLdEZtWmQzN3FEdUwx?=
 =?utf-8?B?cE50STR0OXh1a1IrUTA1M3IrNHNLRmRlUWVsT3lEckowOFZjR1dEWmkwOFE3?=
 =?utf-8?B?dDhyc0ZEQUVZTGc0ZHVqUDVWNFl2QmpBdGFxclFENHYrQlVpZS9BZzhDcmRM?=
 =?utf-8?B?RFBpMnhlbE1CZ3NwcEFmWFFKazAxR3RpWmc2MnpuUFRHNEdJWU5acU5GcXUr?=
 =?utf-8?B?YnRGYWdFeksyR3RVclNzcElRTEJSZ0pnUHh6RHZ6azBuNDc2bmtKWDlFR1VO?=
 =?utf-8?B?VW5HNGhBN3BzWk0yU1RYYWRkYk1KYmVwb2VXMmVFczNUZlVnb2F5cG44a2tL?=
 =?utf-8?B?UE83cDU0bVVlL2lSZDlVSVhuR1c5ZzYvRW1yOEl0cm4rZjhmNjJvUkpXYytP?=
 =?utf-8?B?cjJGYUJqTVc3N050K3hENUhvc3Aza0E5R0NvNGduM09XN1REcXBpQmdLZHdW?=
 =?utf-8?B?UE4rb3VEdHdrZ3VVM3pNV2wvN1JmWXRJbnEzeEUyaU1pcm02eHkrNlJ1dWdu?=
 =?utf-8?B?M0prNExTZjdsYzQxenZ5Q0VJMjIwazYxVXZEVDFFcG1DR0dTek91dCtLci9t?=
 =?utf-8?B?enNYZitZa2tnaXdNMTM3aUtkZVkwVnVMdTVUUU1lUWZiWmdNdm9EZHl4YjFE?=
 =?utf-8?B?WXhHNUIwaFN2M1FoZUgrRVZGSzdYMEwzWUdhVDdBaVJEUWdxUGc0SzhmUXJt?=
 =?utf-8?B?OGprbUxpOFNYYldhL3dmblZNOFBhcHBFUGlVWVdvcWRENXNuckR2UVh1TnZN?=
 =?utf-8?B?SFlQVTlyUmVIeHhwOWFCUUY2VVhDUmNkMTVqVW82M2IyZTAvU09xRUROa2p6?=
 =?utf-8?B?MHhyOTlNbXBwL0xjZ0dNTWRGSGhnemFsVkhRaEE3L3FjaUoxbHFUSC9Tb1k3?=
 =?utf-8?B?QU1pWUU1Uy9JbnNyQytWSFF1MzBLTy9nL0FrUEJZc1orL09Od3dLNEdldTRK?=
 =?utf-8?B?T1d3eUVDYUpCVkt0Q3N2SXRqbU41dG1xWE4yc09haG5YU2hHa3J0SVcweS8z?=
 =?utf-8?B?MU1sYlhCSk5OVERjNUo5UnBFNDQxNm1udENCOTFxbkpDSHFFM2JiSXN4S3pj?=
 =?utf-8?B?cnZaQ25KWmN4cWJ4aFVzS3FUQThtcUhsL1ZDT0JKblF0cnB3OElsWUFTVXJJ?=
 =?utf-8?B?dHNtbkE2ZFAxejY5dVZxOW9UaG5jS2d2bS9HRWYwanVnVUkzMlZ2ZnErWHlO?=
 =?utf-8?B?RElibHRCYjRxdmFEbnhWdC9tcGFoTnR2cHd1ZDlKSWZDSlVDeDNoWlFETWNy?=
 =?utf-8?B?azhqQUdWTXNnVjduNFlnVVFXMVlBWjA2VlZod2RCVDhNUTJCVm0zSU1iYzBi?=
 =?utf-8?B?aHlnN20yZ3EvR3c5RWpXTFoyT2UvVkRvQ0xzVmp6V20wR3RoLzlnejhhUUxl?=
 =?utf-8?B?aE5nTk1LQWU5RXV3OWsvdTNkd3dJNkNTSlZsdnRrTk9yTWtwOHg5aWVVMzFJ?=
 =?utf-8?B?NUZ1L1d6Y1RSV0t0akI2YUFMTlEyTUx5Zi8yWGJ3UTVITWxVbzJVM1ZmcHNq?=
 =?utf-8?B?VzZqaVBJM3lKOTcwUzVHZW5PNTVpK1BwWFMwaWo1czFpZzk0dU1hbVRJMDE5?=
 =?utf-8?Q?CF9zkBRhritVeQOuPZqqw52et+NxbttaC2UX0=3D?=
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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Oct 2024 19:34:52.6647
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4d0b5aa9-2a23-4e54-efc0-08dcec874681
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:
	SA2PEPF00003F63.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8369

+Edgar

On 5/16/24 06:13, 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, 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.
> 
> Get gsi by using new function supported by Xen tools.
> 
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>

I think you can safely remove the RFC tag since the Xen bits have been
upstreamed.

> ---
>  hw/xen/xen-host-pci-device.c | 19 +++++++++++++++----
>  1 file changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/xen/xen-host-pci-device.c b/hw/xen/xen-host-pci-device.c
> index 8c6e9a1716a2..2fe6a60434ba 100644
> --- a/hw/xen/xen-host-pci-device.c
> +++ b/hw/xen/xen-host-pci-device.c
> @@ -10,6 +10,7 @@
>  #include "qapi/error.h"
>  #include "qemu/cutils.h"
>  #include "xen-host-pci-device.h"
> +#include "hw/xen/xen_native.h"

The inclusion order unfortunately seems to be delicate.
"hw/xen/xen_native.h" should be before all the other xen
includes, but after "qemu/osdep.h".

>  
>  #define XEN_HOST_PCI_MAX_EXT_CAP \
>      ((PCIE_CONFIG_SPACE_SIZE - PCI_CONFIG_SPACE_SIZE) / (PCI_CAP_SIZEOF + 4))
> @@ -329,12 +330,17 @@ int xen_host_pci_find_ext_cap_offset(XenHostPCIDevice *d, uint32_t cap)
>      return -1;
>  }
>  
> +#define PCI_SBDF(seg, bus, dev, func) \
> +            ((((uint32_t)(seg)) << 16) | \
> +            (PCI_BUILD_BDF(bus, PCI_DEVFN(dev, func))))
> +
>  void xen_host_pci_device_get(XenHostPCIDevice *d, uint16_t domain,
>                               uint8_t bus, uint8_t dev, uint8_t func,
>                               Error **errp)
>  {
>      ERRP_GUARD();
>      unsigned int v;
> +    uint32_t sdbf;

Typo: s/sdbf/sbdf/

>  
>      d->config_fd = -1;
>      d->domain = domain;
> @@ -364,11 +370,16 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uint16_t domain,
>      }
>      d->device_id = v;
>  
> -    xen_host_pci_get_dec_value(d, "irq", &v, errp);
> -    if (*errp) {
> -        goto error;
> +    sdbf = PCI_SBDF(domain, bus, dev, func);
> +    d->irq = xc_physdev_gsi_from_dev(xen_xc, sdbf);

This was renamed to xc_pcidev_get_gsi.

This also needs some sort of Xen interface version guard for backward
compatibility since it's a new call introduced in Xen 4.20.

> +    /* fail to get gsi, fallback to irq */
> +    if (d->irq == -1) {
> +        xen_host_pci_get_dec_value(d, "irq", &v, errp);
> +        if (*errp) {
> +            goto error;
> +        }
> +        d->irq = v;
>      }
> -    d->irq = v;
>  
>      xen_host_pci_get_hex_value(d, "class", &v, errp);
>      if (*errp) {



From xen-devel-bounces@lists.xenproject.org Mon Oct 14 20:06:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 20:06:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818889.1232178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0RKR-0002D2-6r; Mon, 14 Oct 2024 20:06:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818889.1232178; Mon, 14 Oct 2024 20:06: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 1t0RKR-0002Cv-3z; Mon, 14 Oct 2024 20:06:07 +0000
Received: by outflank-mailman (input) for mailman id 818889;
 Mon, 14 Oct 2024 20:06: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=QJ8R=RK=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t0RKP-0002Cp-Ky
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 20:06:05 +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 bb7847ca-8a67-11ef-99a2-01e77a169b0f;
 Mon, 14 Oct 2024 22:06:00 +0200 (CEST)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-37d55f0cf85so2161316f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 13:06:00 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-430d70b444csm164748525e9.33.2024.10.14.13.05.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 13:05:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb7847ca-8a67-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728936360; x=1729541160; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=We3nv6qTe5WU/pLKfIuGBL0H+WZavctLAtubwy4suCo=;
        b=X1Vucseh1cJNN3akmhODWfG6GFbtv1ES4YoVxGZsCNj/NQJIuocmHP+62dgUsrAHbf
         x8/xpYUNGfF9j9LsCindPyqZLHx/aPbeGVLUcVjF9FVDnOoao62LplBjov2zoZwrpwQG
         gW5l8FF/pczrYGjvaDPssTMllx5wNRS7IA4iU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728936360; x=1729541160;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=We3nv6qTe5WU/pLKfIuGBL0H+WZavctLAtubwy4suCo=;
        b=qzj8kpDVAKmFIRBorQRZQ4ErqxpEn6ohL0/HVeLxIAA7eWxgMHL5Py47Im7ne3tOjh
         05/Axc6mkkfArY8VZRIZcKNYnq+MQ8ZUnUwFa8ZERk9CKkuSiB9rEKg48W66CRck63zf
         07VuA4iMErVlTj1xzIWaCFIwR91oVwU8pfFg5u9eopkwwUlPkEt9iWHMVlmQjs9fhdS1
         ptVPyrd60rjOT2gdjjwmIGj+oQEMLv8AKYZU53V/hVw1AEHfGrkAo010Fl+urhHvDO1c
         /qGJpkBTzts/DMTDhhXKAWzlHkbaXBPVjcQqZ17LP5BC08vpmIEuzQG/dm5RYzFx6UFF
         Ui6A==
X-Forwarded-Encrypted: i=1; AJvYcCWSBAANqxwhMv4bw8h2OfmmmDnN8ZmZQE4L0eIQPZPXsvfHtlZEUPOZl+RLeM9omMNX6Kc2WDxtXLA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwTsMv8i5xbFBkGgQQDFWMl8qeLZxbfQMTyRFdiwhiaMzwD2qxD
	WrJSsh/3wcyQ42MqeRzS5eonDr8h/DR7JPVt+StBsK7v9ccS2ldWDylHao5wnM+VI6cC3bfqBpM
	+HcH+Sw==
X-Google-Smtp-Source: AGHT+IGk0iZhliZHyiTz9ABDsoGjPH/jqVhvc8Z2hNC77V10JFJmheRD94+UkDRzWwpfoIt6cro7kw==
X-Received: by 2002:a05:6000:12cc:b0:37d:41df:136b with SMTP id ffacd0b85a97d-37d551ca167mr7292976f8f.13.1728936359799;
        Mon, 14 Oct 2024 13:05:59 -0700 (PDT)
Message-ID: <dc7a4441-b082-459d-a954-78f43d7d35bd@citrix.com>
Date: Mon, 14 Oct 2024 21:05:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen PAT settings vs Linux PAT settings
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel <xen-devel@lists.xenproject.org>
References: <Zw1iSuLD7473m07N@mail-itl>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zw1iSuLD7473m07N@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14/10/2024 7:26 pm, Marek Marczykowski-Górecki wrote:
> Hi,
>
> It looks like we've identified the second buggy driver that somewhere
> assumes PAT is configured as Linux normally do natively - nvidia binary
> one this time[3]. The first one affected was i915, but it turned out to be
> a bug in Linux mm. It was eventually fixed[1], but it was quite painful
> debugging. This time a proper fix is not known yet. Since the previous
> issue, Qubes OS carried a patch[2] that changes Xen to use same PAT as
> Linux. We recently dropped this patch, since the Linux fix reached all
> supported by us branches, but apparently it wasn't all...
>
> Anyway, would it be useful (and acceptable) for upstream Xen to have
> a kconfig option (behind UNSUPPORTED or so) to switch this behavior?

Not UNSUPPORTED - it's bogus and I still want it purged.

But, behind EXPERT, with a suitable description (e.g. "This breaks
various ABIs including migration, and is presented here for debugging PV
driver issues in a single system.  If turning it on fixes a bug, please
contact upstream Xen"), then I think we need to take it.

The fact that I've had to recommend it once already this week for
debugging purposes, and it wasn't even this Nvidia bug, demonstrates how
pervasive the problems are.

> Technically, it's a PV ABI violation, and it does break few things
> (definitely PV domU with passthrough are affected - Xen considers them
> L1TF vulnerable then; PV live migration is most likely broken too).

Do you have more information on this?  The PAT bits shouldn't form any
part of L1TF considerations.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 21:14:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 21:14:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818900.1232188 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0SOD-0002ww-5b; Mon, 14 Oct 2024 21:14:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818900.1232188; Mon, 14 Oct 2024 21: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 1t0SOD-0002wp-2c; Mon, 14 Oct 2024 21:14:05 +0000
Received: by outflank-mailman (input) for mailman id 818900;
 Mon, 14 Oct 2024 21:14: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 1t0SOC-0002wf-G4; Mon, 14 Oct 2024 21:14: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 1t0SOC-00044o-9o; Mon, 14 Oct 2024 21:14: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 1t0SOB-0002gS-Oi; Mon, 14 Oct 2024 21:14:03 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0SOB-0006NK-O0; Mon, 14 Oct 2024 21:14: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=7tgGEixYPnP6IEtMzH5kqMFLybW+5cj0oNH78ivt8Is=; b=WVQv6jYZIdYwUWCAMRmyqtqbdg
	a26z7REAfNe7xVRhX9ex9NNOfTD0FxUO7WbjJRuKgZSYf2tUXaR+epR9lcT0YFMWivxTc7dz1UTKu
	+wdEMEYWXGpQwjy+2IZWYPBlmdmno7Iay6q0iL84zg7m9s/mn6CnDHBQAZ1Y1G768kXI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188082-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188082: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=7e3b6d8063f245d27eecce5aabe624b5785f2a77
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 14 Oct 2024 21:14:03 +0000

flight 188082 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188082/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188070

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-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-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-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-amd64-amd64-libvirt-qcow2 14 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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                7e3b6d8063f245d27eecce5aabe624b5785f2a77
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   28 days
Failing since        187731  2024-09-17 13:11:20 Z   27 days   46 attempts
Testing same since   188064  2024-10-12 04:58:25 Z    2 days    5 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 9278 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 21:37:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 21:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818913.1232198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0Skm-0005p4-0r; Mon, 14 Oct 2024 21:37:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818913.1232198; Mon, 14 Oct 2024 21: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 1t0Skl-0005ox-UW; Mon, 14 Oct 2024 21:37:23 +0000
Received: by outflank-mailman (input) for mailman id 818913;
 Mon, 14 Oct 2024 21: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=043R=RK=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t0Skj-0005or-Rw
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 21:37:22 +0000
Received: from fhigh-a6-smtp.messagingengine.com
 (fhigh-a6-smtp.messagingengine.com [103.168.172.157])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7cff2360-8a74-11ef-a0be-8be0dac302b0;
 Mon, 14 Oct 2024 23:37:19 +0200 (CEST)
Received: from phl-compute-02.internal (phl-compute-02.phl.internal
 [10.202.2.42])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 87D8E114015C;
 Mon, 14 Oct 2024 17:37:18 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-02.internal (MEProxy); Mon, 14 Oct 2024 17:37:18 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 14 Oct 2024 17:37:17 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7cff2360-8a74-11ef-a0be-8be0dac302b0
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=1728941838;
	 x=1729028238; bh=E2pZ6HXZGXn6JL2Rjnw6GMA6i6M+jbDIUvaH9jTyyKA=; b=
	Rpi6vO+ky2mADG1V0vZ/58m/FU/Fp1ee5/yo2AJGaVP+8apgYNqDH2UFkgM+x/mC
	lOkiJIreboHzRDNvp85DNBJyo6RFq9lXrfjcApVjBzoDWeuNyfQKNqk0GIcarusd
	wqZOkJaz7BB03MHryGZv6VVAwNgpZWsteqBoM84VE/tN8XG4AlVZ612u2M9GMGMj
	9dS7pVk6tQq/84wxBhG5syi+xYgebycBFlen6Dq8Aks6V/kGnlmarWppXF0tPrRv
	ydhsgDan5HnAZz38AkEC2UPrH0yEb0DeUAuwiBDJHUu8lBGwEW+HSjLRQUfysdJP
	Ibac5CKPozQZc6g81fhOLg==
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=1728941838; x=1729028238; bh=E2pZ6HXZGXn6JL2Rjnw6GMA6i6M+
	jbDIUvaH9jTyyKA=; b=VyrVvP1ppm1nS9Zbi4fkwgHjxqebvWmCkCzCXBDl3eJX
	g34DQ+beLVEHmofXhZBySjDnAINLjwuVqqbqg19GDkB7Nxa7qb1obp5eLo+Fg+z4
	C3qlTVDbonbHiqEjWi2ixNXjtUKZ+0mbEyO1fr9fc3aoxsqmVgGEaytf39A1GUuT
	hCA6H7U1AbB8df0KptQmAPzoK4WchIqLlqXW+hCXs0UfHiffjZAK36N4RyBIu7bb
	OofYG5rXTjy0WVeE//H/y3QEUr6CxzRHKzqzF4go4hVU+TTCV3/NN3Enjf4hmvne
	0T+V06aShiTRcnVCH6ADFFHhbZVb1/STBDq8cZYFaQ==
X-ME-Sender: <xms:Do8NZ0FUx8souoJAlRSr82xO-cKVmBlAYI4mEVZYxw5Ex_8N6hRDOA>
    <xme:Do8NZ9VhcyuLyqsg_Yx8kDFNV7k3dpCwWr1bbiUn5Z-hGX7worRSBCTXZUdGcbQux
    QKbPjKETiqqEg>
X-ME-Received: <xmr:Do8NZ-JdwgflLtIakjXmYP8i-PvSajfnHeIrZ0cSdYMIeMYldQ5GfZxPIUxGsesnBHLQnhu0d5waI-MwM4cj-9TG2LOLg0VrTw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdegiedgtdduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepueekteetgefggfekudehteegieeljeejieeihfejgeevhfetgffgte
    euteetueetnecuffhomhgrihhnpehgihhthhhusgdrtghomhenucevlhhushhtvghrufhi
    iigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhish
    hisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsggprhgtphhtthhopedvpdhmohguvgep
    shhmthhpohhuthdprhgtphhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghithhrih
    igrdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslhhishhtshdrgigvnhhprhho
    jhgvtghtrdhorhhg
X-ME-Proxy: <xmx:Do8NZ2FxVrsfq0FfIjjuODMilJ3CkqYev6Hdj65bYfooYSQjqcv9zQ>
    <xmx:Do8NZ6UwW029PYRRL4kb8cicjj6sGqMMtvuCEwi_aNU87UE3ySUwhw>
    <xmx:Do8NZ5OQikwxDFXJH3_OOWO1W1iYmiaqTZuXHlVs5d7Y0PPWeVRbcA>
    <xmx:Do8NZx0yBUmE1JBIqM4MYDkTb1rMmnqsWGSGAja2FI6oiynqQd8tew>
    <xmx:Do8NZ9fn65NXZDrtT7a7MOP4it1w6S5J-3XNNSWls5R3ekRXgumA7AZP>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 14 Oct 2024 23:37:13 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Xen PAT settings vs Linux PAT settings
Message-ID: <Zw2PCXSdxjrqP4bn@mail-itl>
References: <Zw1iSuLD7473m07N@mail-itl>
 <dc7a4441-b082-459d-a954-78f43d7d35bd@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="oh/fywFlm7BR8i0T"
Content-Disposition: inline
In-Reply-To: <dc7a4441-b082-459d-a954-78f43d7d35bd@citrix.com>


--oh/fywFlm7BR8i0T
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 14 Oct 2024 23:37:13 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Xen PAT settings vs Linux PAT settings

On Mon, Oct 14, 2024 at 09:05:58PM +0100, Andrew Cooper wrote:
> On 14/10/2024 7:26 pm, Marek Marczykowski-G=C3=B3recki wrote:
> > Hi,
> >
> > It looks like we've identified the second buggy driver that somewhere
> > assumes PAT is configured as Linux normally do natively - nvidia binary
> > one this time[3]. The first one affected was i915, but it turned out to=
 be
> > a bug in Linux mm. It was eventually fixed[1], but it was quite painful
> > debugging. This time a proper fix is not known yet. Since the previous
> > issue, Qubes OS carried a patch[2] that changes Xen to use same PAT as
> > Linux. We recently dropped this patch, since the Linux fix reached all
> > supported by us branches, but apparently it wasn't all...
> >
> > Anyway, would it be useful (and acceptable) for upstream Xen to have
> > a kconfig option (behind UNSUPPORTED or so) to switch this behavior?
>=20
> Not UNSUPPORTED - it's bogus and I still want it purged.
>=20
> But, behind EXPERT, with a suitable description (e.g. "This breaks
> various ABIs including migration, and is presented here for debugging PV
> driver issues in a single system.=C2=A0 If turning it on fixes a bug, ple=
ase
> contact upstream Xen"), then I think we need to take it.

Makes sense.

> The fact that I've had to recommend it once already this week for
> debugging purposes, and it wasn't even this Nvidia bug, demonstrates how
> pervasive the problems are.
>=20
> > Technically, it's a PV ABI violation, and it does break few things
> > (definitely PV domU with passthrough are affected - Xen considers them
> > L1TF vulnerable then; PV live migration is most likely broken too).
>=20
> Do you have more information on this?=C2=A0 The PAT bits shouldn't form a=
ny
> part of L1TF considerations.

https://github.com/QubesOS/qubes-issues/issues/8593

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcNjwkACgkQ24/THMrX
1yzfQwgAh/956Z8NeyGlNS6LADzp9jI8gLUJ1rx8ZA+VczGrI8/KPXX47xSuqiS4
Vlmmr32nyusZKIcRzKw4CiQrs5UZK/9IeVTqaJM5fsjCPHlnK5gpUwHV3XtaCdoN
VRGnNhLB18gXpgGhwb5jnaCWaSa68kcvrIqJZ8z779ySmTPKQecxdY7M5pGgCXRX
znZnjizJelzt2Dqr9Ty0FE8gcYzU8nk7ic2pTL51E+hsIbqH/x5ZJRf5PKLvCZNU
0aWXHg/I81o0fjRt5u0BbS3YkVfqHXhU74qFjHfxnVxHzm2PbpuGcGbZxKD8F8zu
masCUcNqzzoFQUAkykwazIItkfJ6GA==
=YciZ
-----END PGP SIGNATURE-----

--oh/fywFlm7BR8i0T--


From xen-devel-bounces@lists.xenproject.org Mon Oct 14 22:21:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 14 Oct 2024 22:21:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818921.1232207 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0TRB-0003RT-7J; Mon, 14 Oct 2024 22:21:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818921.1232207; Mon, 14 Oct 2024 22:21: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 1t0TRB-0003RM-4T; Mon, 14 Oct 2024 22:21:13 +0000
Received: by outflank-mailman (input) for mailman id 818921;
 Mon, 14 Oct 2024 22:21: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=QJ8R=RK=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t0TR9-0003RE-Ef
 for xen-devel@lists.xenproject.org; Mon, 14 Oct 2024 22:21:11 +0000
Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com
 [2a00:1450:4864:20::441])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9984e1f2-8a7a-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 00:21:04 +0200 (CEST)
Received: by mail-wr1-x441.google.com with SMTP id
 ffacd0b85a97d-37d462c91a9so3015158f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 15:21:04 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4313f6b323asm343525e9.36.2024.10.14.15.21.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 15:21:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9984e1f2-8a7a-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1728944463; x=1729549263; 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=zUwKM/muKeeT3tgMjVcVzA30GDKXCgqN2T1YCVbzJzM=;
        b=Fo1zhV9rrHVg4bbJzalLvvs1xyh1P3NlnwH4rFVXMzD6I+c5gYTdghrdPZhNvp9e0D
         vzp9Qn+UMNq3JkhWdLVxVQJgMKzZBhchREom6m0hTxo6h67JmfS/gUuwV9pBs2TvzinR
         iHpCTeHF6HGQjeFqxUZ0jt5ZjC2on3muMFVR8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728944463; x=1729549263;
        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=zUwKM/muKeeT3tgMjVcVzA30GDKXCgqN2T1YCVbzJzM=;
        b=CV/3ozaSbDz1LP3zTm/M0UZwl9Dlc1xhsKBMMyH0QUDbyRAMfJSead8GRl5jC0wbWR
         +P12Dpi5EgjBzx3fsqYWxx1jhxiIc+Dnd5yMKzkkrJZMpqovDLEHSVbGZPezYibmPJeY
         Kaa/ozOcdT4r5JenUKR4KwmJuoCs8rZUD5DJ/kLyL98lSRXIxy+0HznWStAXnW5vk7sS
         KY444sGDHaUPOuNfrtMyrzUBqH6Nto42LFytJhenSAWAAZPpc5uCLxB5Xb7I15zzEmnY
         uw0Hj4w0agSCMbQXnGr7uQ4sYKiBdp8RVUg2qv+SyJt8EWPWfkMWAiJpuocYeC7RN9GL
         m/ug==
X-Gm-Message-State: AOJu0YxBHTp/CRDvNkyrVSLwdbT5ZTALNQbMYT84PDXoWNDPBGIt63c0
	GV0OrA10yGRox5u5ls8vHSbNfscAcVHrTWpJXc00a0J55PIlvHkJlQuGLiT3uxxljMp1ymuExOZ
	8zbrJu00y
X-Google-Smtp-Source: AGHT+IHWSNHUsDVHer2ZwKSvFG41K5qeQTw/HQT4mRLGGHLNhB7BOFKE3vvNMAxq7+iOqygCEeVFcA==
X-Received: by 2002:a5d:40c1:0:b0:374:c614:73df with SMTP id ffacd0b85a97d-37d552a3962mr8087840f8f.57.1728944463326;
        Mon, 14 Oct 2024 15:21:03 -0700 (PDT)
Message-ID: <54ae31a1-12c8-446f-9dfc-58c986488e1c@citrix.com>
Date: Mon, 14 Oct 2024 23:21:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen PAT settings vs Linux PAT settings
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
References: <Zw1iSuLD7473m07N@mail-itl>
 <dc7a4441-b082-459d-a954-78f43d7d35bd@citrix.com> <Zw2PCXSdxjrqP4bn@mail-itl>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zw2PCXSdxjrqP4bn@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14/10/2024 10:37 pm, Marek Marczykowski-Górecki wrote:
> On Mon, Oct 14, 2024 at 09:05:58PM +0100, Andrew Cooper wrote:
>> On 14/10/2024 7:26 pm, Marek Marczykowski-Górecki wrote:
>>> Technically, it's a PV ABI violation, and it does break few things
>>> (definitely PV domU with passthrough are affected - Xen considers them
>>> L1TF vulnerable then; PV live migration is most likely broken too).
>> Do you have more information on this?  The PAT bits shouldn't form any
>> part of L1TF considerations.
> https://github.com/QubesOS/qubes-issues/issues/8593
>

0x8010000018200066

That's a very L1TF-unsafe PTE, but it's also got nothing to do with PAT.
It's:

  NX | Avail(bit 52) | addr (0x18200000) | D | A | U | W

and importantly not present.  PAT == 0 == WB in both the Xen and Linux
worlds.

But, it likely does highlight a codepath which is opencoding PTE updates.

We really ought to have an option to do as f61c54967f4a did with
_PAGE_GNTTAB, and to inject #GP into the guest to get a backtrace out of
Linux.

In the case that we're going to crash the domain anyway, #GP is still
more useful, although I would quite like the #GP option instead of
shadowing too.  Maybe hanging off pv-l1tf=fault as an option?

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 02:12:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 02:12:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818938.1232219 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0X3D-0004YO-RA; Tue, 15 Oct 2024 02:12:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818938.1232219; Tue, 15 Oct 2024 02:12: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 1t0X3D-0004YH-Lx; Tue, 15 Oct 2024 02:12:43 +0000
Received: by outflank-mailman (input) for mailman id 818938;
 Tue, 15 Oct 2024 02:12: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=0I5b=RL=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1t0X3C-0004YB-Bk
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 02:12:42 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20628.outbound.protection.outlook.com
 [2a01:111:f403:200a::628])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f34694f7-8a9a-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 04:12:39 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CH3PR12MB9100.namprd12.prod.outlook.com (2603:10b6:610:1a8::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.20; Tue, 15 Oct
 2024 02:12:33 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%4]) with mapi id 15.20.8048.020; Tue, 15 Oct 2024
 02:12: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: f34694f7-8a9a-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=PwBTGVkjEzFAhBa0/qk1dH19GDuQz7I2WOxTqRVEaSgMoziAm866wxsmr3Wv676DbgdXrn47xLFzEVbeizzEhPVL8DnQ4nWCO1oT6+zG/K3x4jpLFGzN3MnOqB/nDLIDAJh+M7tq1QZRz5fbMFcCgYiXZ3khwyW+zlOQBfkLQx+HkPb5VVKGwsPpDEPArkRthQlWEF5dgqq47FCWV0r1bSxtlKl/77r7R7sj3Ejw60XGUc5mDxzqj9Hl0yBnxdBJCIZDHkiZ3+CTu9iPv4De6oymnKiHyKmjXdZkcnX4rS+vJOD2JDSbr9OFxPvLxIpsKFupYouKW0OGS7p9f2YNnQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=nk2TV3r9qIDztPwtx/J5KwpV0H9xlQlRYy3KsqwFU1I=;
 b=vtYEUTzNw31a7OPfQHEkCk1kmjYORDieA7+tZaEX62AWF91Hx8GZuwZCf2OH63mNeOFyUrs1elSyyVILz7Ipa5M8pMM3glK3jqw/jS49fzn3H3btA5mS6bITTOONEBgcXPFWNNkuRiT/PW7KcuOf93P6uVc9YBv5U2FP70ncJGIjkkVD7tGC72yz+mQCns7sA+uzjfXBdlgmdTFJ3tB+5odFvsWgJdim1PICT0sDhZtQ9c2lUMRJA1hsDZpJrAEVWgAaQZBLbClOoaouXP35kCeg654ywzFGlq2en1usTb2pEexighPe+FUarQ3lgSFgRpoEms+Dh66RbjV6J/ZN7g==
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=nk2TV3r9qIDztPwtx/J5KwpV0H9xlQlRYy3KsqwFU1I=;
 b=XIfx+vtmp3XnQit/ONDFjop3jFHzCQbXc1QC/y6Q/dnGPGUo2gbz7PFwzf9dSAYoj1UIaIi5Fu+2xsC7+6Hmn6KDxsHARj+Sc7CzSrr9UXSthO9GrwR0oB6pTIqsOZ4uELvWtyNLSzumvt0B4KTB8ebw4lvLyABNWICHLA9DpnY=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony@xenproject.org>, Paul Durrant <paul@xen.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "Huang,
 Ray" <Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>, "Edgar E.
 Iglesias" <edgar.iglesias@gmail.com>
Subject: Re: [RFC QEMU PATCH v7 1/1] xen/pci: get gsi for passthrough devices
Thread-Topic: [RFC QEMU PATCH v7 1/1] xen/pci: get gsi for passthrough devices
Thread-Index: AQHap3nJmmJ4lr8haEKHz4C0egxoBLKHkVEAgAD0cQA=
Date: Tue, 15 Oct 2024 02:12:33 +0000
Message-ID:
 <BL1PR12MB58495C5C65A61003B9E90528E7452@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240516101338.86763-1-Jiqian.Chen@amd.com>
 <20240516101338.86763-2-Jiqian.Chen@amd.com>
 <fb14e4dc-b8ea-444b-8eee-551d05b7217f@amd.com>
In-Reply-To: <fb14e4dc-b8ea-444b-8eee-551d05b7217f@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8048.020)
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_|CH3PR12MB9100:EE_
x-ms-office365-filtering-correlation-id: b318472e-de4b-4b6a-47dc-08dcecbed46d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?MnROOURNV1BjMVhRY2g0QUllTGVGK1E1NDdEYy9tbm14MXcxeEU2RTFYamdo?=
 =?utf-8?B?SzU0bjBjNWNxTlNHTTRJdlNqSVQ4RG1JYWxDMXVCT1lzU053bnpzUjVUVFgv?=
 =?utf-8?B?M01TaWNGdFl4aHRiV1hLdzNaZDAwVmRGRlk4WjZUY1pCUGpUWmtNNzFTaVVT?=
 =?utf-8?B?QzNTWlVlUHlKTEJMWitvU1ZIbWRxbmJEOFJEeExjVlhsYVJENDMyS08vbWVV?=
 =?utf-8?B?Njc3Zlp6WEtLdk8rOER3QWpVS3RmYkN6OGtRK1p0dFRvdHh5QnNwd0xtbXc2?=
 =?utf-8?B?K1dlQWZPeDZpcnVFV2RjR29nLzFGU0l0dFhjUkh2OVpJd0R0NGEyMkkyUmxu?=
 =?utf-8?B?NkpKeHFpZ3IzdFI0UU5HZTR5dzN3UzAxdXBib1pWNGFFWGxOYUhBNnB4Sjdu?=
 =?utf-8?B?MlhKMWkvbFE4S05WdjhvMTlwQW1wVW1oSHQwRGNUbCt2RWdJeHlMSzJvT2pQ?=
 =?utf-8?B?U1BBT2ZnUzBmN0dJNmZEOVBYaUdiWEQwcTR5cm1zYkczOCtsa1ZCbTVsZnk2?=
 =?utf-8?B?ZHVVVmtxUkJOdmQwbkFGblFBV24yVzJXVjBqdzBQRHRXQ3gxL3RBVzhOSkxX?=
 =?utf-8?B?YlZpZDhlaDAwcDA5Z1ZOZWQwblUwMHZiWkYvSitQd29sK21PK1VaSXN5aURi?=
 =?utf-8?B?SW5uZEJIS0N4YVZnYUp1SXhqYUc0Mi8rbnkzdXBmajg1cG94RmwvVlRJbWkv?=
 =?utf-8?B?K1Y4QlVjRVQwU0QyMkVzQmMzelNNK1ZKS0psNWNHcklCTDBPaEt0bExrZ0gr?=
 =?utf-8?B?Sjkrcmtxb1Uxb2EzWkxISWJUcDcyclRQVFFDc0RBMHNPUCt1alJaZ1NnZFl6?=
 =?utf-8?B?VlYzSnI0UHpvakhtSVkwVUJ6Q3J3c25DSVJuRVFXMUNTVEJuSUlZUjJ5aHg0?=
 =?utf-8?B?UCtNWlRDMWFQUEJVaUpWaDRyNGVOMUpGVDJiakdaRXpuOHRha0pHVVBLWDlG?=
 =?utf-8?B?dW50WXdocGp6aWtZNmF6M0RTbnNjSHFvOG4vQUhOclRxY0lhYWYzUWY2WU50?=
 =?utf-8?B?Q25EcGdzem9SSXc3YS9VbWdMdHNPYXNDajlxeDJmejlWOUJSOEw5VStMUmFL?=
 =?utf-8?B?N0hob1ZoVzlUNUx1MjVwaUJyWUZFdDhCZTRBRVV5Z2YyZGIxZCtwVkdQZVh1?=
 =?utf-8?B?dDdIOGxTVXd0TXAxY0dVR0FYZU1ZNm1rN0ZYV3dBRnFkTTR2THFEc3p0VUhS?=
 =?utf-8?B?dklGSUplYlJjZDhNcDE2MVhLMEpOV0JTemxCcFQ4OXpaZmRSTVp5VndLT1Na?=
 =?utf-8?B?WDJxL2hTb3lGeDNad0E0eVEySlZZZk1SS0VjdXlKdVpDc3ZvazJTVGl5UFJJ?=
 =?utf-8?B?cjZSVjdldE9RU2NHMmJYQno4TzdkbndSQlZEaElKS2tsZ0puU1M1ZTZobWpr?=
 =?utf-8?B?TXI4cXY1L3FVS2dwRkh5NXgyUk9OZUdTOGxXWW9wdnJwbHE3WFVGYThiZVl4?=
 =?utf-8?B?cVBBY3BZNEt6VXlwSG5RTXpxRnpWbThNbWJtNmkwZU5WS2RFNFdMbkFBSDdN?=
 =?utf-8?B?dTd1RGx4cE5ybE1weW1kQzhySUFPQldPcU1PbVJMMzZoTzVxWEdHVVQ5NGxj?=
 =?utf-8?B?cG0vcFZEc2dQTGd0T2RXejZsVmJMSUlOOTZJOXVvcm90c29CNFRIamE2N3Q5?=
 =?utf-8?B?MHgvMkVCeEowc1lVWW4wcFlnWnpjSTRkcEhsUk1SOG1ZSXJwcFgrNjYvTnJz?=
 =?utf-8?B?Y0pheVZVQ2kyT2lEUWpKaU8zVjR2bHJJdEhCWVpBeHd0TjgycU9hNkFMVVNn?=
 =?utf-8?B?bmxJZmpjc1BTZ2ZMY2tUUUswZk1GMFRZSmw1Q2djbmtIdllFTmkrUHNGYlNk?=
 =?utf-8?B?bExQRVI0NG0xTzhLUGhDUT09?=
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:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?ZlVpeEpwYkdyMzE5S0VlMzh2WlRZMmJMWnJlY2N5MGk5ZGpxbWw3Q1FMZmRv?=
 =?utf-8?B?Z09sMXF3MW5lZS9QdGhuNmgzZmd5S1pXSVV3K05qcmsweG5rNjdWTWFPdTFo?=
 =?utf-8?B?bDdpci9KUmhyeXlFUGNSaEs0a3VDRHdBTXNlTHdVUnlJVXlzaUR6WnRqa05m?=
 =?utf-8?B?dFRBUFBxZFRFWXVXMTdpQkhucTRwRDVZck8vd0tmTFNSVkdNelVkSEZRLzMx?=
 =?utf-8?B?YThSWWxBZG4xZjJPalhWS2kwVHZPSXlBQ0F2UTRnM0VoZ2txM2FDTS8wK2pB?=
 =?utf-8?B?TnlsUmo5MnFzRmloZjAxZ0RXVTZSK3BKc3VRczNlSVh0amNKOXQ1R3oySUIw?=
 =?utf-8?B?VTFwc3h0aWY5U2tLZlZiVTRhWU9PNkl3NDhNVlRpYzBZTGRhNHY4eWxOcjFr?=
 =?utf-8?B?YzJmRDl3SURxWWJwQzdvSmlOcG00aTZWVDlnUjVCV2xuZzJFd295d1JHdW0w?=
 =?utf-8?B?TmxHZk9Cd1VkQ1F5Sm94aGRCR3U3bFJhcDZlN0N5SmZ5bUxOaHNINWk4Ny9Q?=
 =?utf-8?B?WmNhOS8zL2czakFHQS8zMjZ1SG9qSlAzY212VWpSazNjM2pxUDQvSFJjTEZZ?=
 =?utf-8?B?UWpYSWFaSzhlbThCUXBYbFFscjVmdE9Gbzk0c3p3ZHJVbER4dnJvVitkYXo5?=
 =?utf-8?B?N3FQaytVOHdld2xlVVROS0RIYUd6blNMam5sUS93dnFBMGs2T1hpSnpkcklJ?=
 =?utf-8?B?aDYvZDJYVElzU2p0M2V0RTVUQyszRksrc2IrY0FvYjc2U2JHYk5ISlZrdUQ3?=
 =?utf-8?B?RWhMcEZqRHlRa1NwME9PZnk1QVV2NFl0dlNna2oyaDhWa21PWVltejRHNlpM?=
 =?utf-8?B?VUV2QmtQOGtONTgrczMzZ2JaaGd0TlNXVHhHbGdtYmJQTzZQdVkzZWRDcm83?=
 =?utf-8?B?VUJ0S01VZU4xM2NMSG9sbGJPSmR2ZjRIZkRsL0R0emxlVG8zdENydGRKOEFH?=
 =?utf-8?B?RDZzMmdURjZKa3dtdGptQjRlVks4NzU3Q1dmZnkzY0VvUmpDL3I1WEtZSndI?=
 =?utf-8?B?OXZSNmQwbFE5bW1qbldFaERwb2VtbmYwOVVERktUcWF0akVDTHRpMWhmZDIr?=
 =?utf-8?B?eEdPUEdOQTJWR3V1VmNLTGx0V0E2cUNVcTRwa0FxZCtSb3BzTTFpYy9udVJT?=
 =?utf-8?B?NGRvdkRPbTNpQTNCSlp5dHp3VU00ZjVkMFZ3MWZGdFBDcGNpU3pOczR5NzRJ?=
 =?utf-8?B?dElTOEl5S25kSnVlTm1sSGJ0RXpqdzJtOURadDNucVNvdThKWnkzcS9LUjZa?=
 =?utf-8?B?R1E5NTMva1lmZWQ3bEJna3BROUVEZVZrT3dOdW5GUjVMa2o1eXljbU9QdGxH?=
 =?utf-8?B?ZmVJSVFGZWdJNXpQL2NRelZlZkJnL1Z1Mm44Uy81dzE3UmZDKzExMnppcVph?=
 =?utf-8?B?a3J3ZGZsc28xSXp1Znk0SmpuUDh3UXdkbDFmRGE0MlloSGVKdlREMWdhOFpB?=
 =?utf-8?B?MDlqRjJSbllORFVuMGp6cnVhMkw3TENxMzdpUWw3b1kxSmdESzBzOWZpOGFl?=
 =?utf-8?B?U3VaYWJBODlLNG1MU3hGclVWWWM5MXVpcFdEdHRDdm9BQVNIMFVFeDlyTW1P?=
 =?utf-8?B?TGYzMCt6ZEhuMEpwa3JjTDJpMnI5NmFQcGRQNFBCZTA1RHUrbk42YWdqU1ZU?=
 =?utf-8?B?allvWDlrcDFrNlM3RndvZ05GbG9BRkdTR1hONE1FSWNSTW82NVRWRzhvZXVu?=
 =?utf-8?B?ODJtTFk0TGErYzY5NVNPS0c5cmZPNCtLL2I3bTBDOHN6d1lUYVpVUE9ST1N4?=
 =?utf-8?B?UTkrOCtWSUVEOU9ldXErWXBFOUlRSW12YVpRRzR4eEs0clhybFlHSTlvSjQ5?=
 =?utf-8?B?bWpZODQzd244cnNhd2t5WGJURHhJUm5SdytBMkk3eUdXNy83NVE4RGg0VHdR?=
 =?utf-8?B?blkvMGhWZ2JETDAzaFFzc3daZlc5b29zcDFJU0hLSnAvd3ZsWnBMOFllYmhl?=
 =?utf-8?B?aFpESVR4dE9wQmdjNVZMMDJIcDdsNTRnRERmZUgydXp0MTBmVzhYK2puY2ZW?=
 =?utf-8?B?UnVEdDBCaFhnNEZ4NU45ZGFBZEF5Vjk3SER3QTVlM2RxZjhVeGQzTlJlME5x?=
 =?utf-8?B?TmJpODVuekhKQ0M2OHd1UjlwRzQrS1puenUyVzdlbmtzd1BHN09JUjk3MTlP?=
 =?utf-8?Q?BiC4=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <12619D4981BD384C8485508A68956B0C@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: b318472e-de4b-4b6a-47dc-08dcecbed46d
X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Oct 2024 02:12:33.1400
 (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: HsiKqLs2JGSqtf0LOkCYKrU4XHMTTfOwjw6xIT8ksgdvuptd8jYL9GCL71+X2CS5wrzjXSHtUCpMb1hr/ths/Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9100

T24gMjAyNC8xMC8xNSAwMzozNCwgU3Rld2FydCBIaWxkZWJyYW5kIHdyb3RlOg0KPiArRWRnYXIN
Cj4gDQo+IE9uIDUvMTYvMjQgMDY6MTMsIEppcWlhbiBDaGVuIHdyb3RlOg0KPj4gSW4gUFZIIGRv
bTAsIGl0IHVzZXMgdGhlIGxpbnV4IGxvY2FsIGludGVycnVwdCBtZWNoYW5pc20sDQo+PiB3aGVu
IGl0IGFsbG9jcyBpcnEgZm9yIGEgZ3NpLCBpdCBpcyBkeW5hbWljLCBhbmQgZm9sbG93DQo+PiB0
aGUgcHJpbmNpcGxlIG9mIGFwcGx5aW5nIGZpcnN0LCBkaXN0cmlidXRpbmcgZmlyc3QuIEFuZA0K
Pj4gdGhlIGlycSBudW1iZXIgaXMgYWxsb2NlZCBmcm9tIHNtYWxsIHRvIGxhcmdlLCBidXQgdGhl
DQo+PiBhcHBseWluZyBnc2kgbnVtYmVyIGlzIG5vdCwgbWF5IGdzaSAzOCBjb21lcyBiZWZvcmUg
Z3NpDQo+PiAyOCwgdGhhdCBjYXVzZXMgdGhlIGlycSBudW1iZXIgaXMgbm90IGVxdWFsIHdpdGgg
dGhlIGdzaQ0KPj4gbnVtYmVyLiBBbmQgd2hlbiBwYXNzdGhyb3VnaCBhIGRldmljZSwgcWVtdSB3
YW50cyB0byB1c2UNCj4+IGdzaSB0byBtYXAgcGlycSwgeGVuX3B0X3JlYWxpemUtPnhjX3BoeXNk
ZXZfbWFwX3BpcnEsIGJ1dA0KPj4gdGhlIGdzaSBudW1iZXIgaXMgZ290IGZyb20gZmlsZQ0KPj4g
L3N5cy9idXMvcGNpL2RldmljZXMvPHNiZGY+L2lycSBpbiBjdXJyZW50IGNvZGUsIHNvIGl0DQo+
PiB3aWxsIGZhaWwgd2hlbiBtYXBwaW5nLg0KPj4NCj4+IEdldCBnc2kgYnkgdXNpbmcgbmV3IGZ1
bmN0aW9uIHN1cHBvcnRlZCBieSBYZW4gdG9vbHMuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogSHVh
bmcgUnVpIDxyYXkuaHVhbmdAYW1kLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IEppcWlhbiBDaGVu
IDxKaXFpYW4uQ2hlbkBhbWQuY29tPg0KPiANCj4gSSB0aGluayB5b3UgY2FuIHNhZmVseSByZW1v
dmUgdGhlIFJGQyB0YWcgc2luY2UgdGhlIFhlbiBiaXRzIGhhdmUgYmVlbg0KPiB1cHN0cmVhbWVk
Lg0KVGhhbmsgeW91ISBJIHdpbGwgc2VuZCBhIG5ldyB2ZXJzaW9uIGxhdGVyIHRoaXMgd2VlayBh
bmQgbW9kaWZ5IHRoZSBwYXRjaCBhY2NvcmRpbmcgdG8geW91ciBjb21tZW50cy4NCg0KPiANCj4+
IC0tLQ0KPj4gIGh3L3hlbi94ZW4taG9zdC1wY2ktZGV2aWNlLmMgfCAxOSArKysrKysrKysrKysr
KystLS0tDQo+PiAgMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z
KC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2h3L3hlbi94ZW4taG9zdC1wY2ktZGV2aWNlLmMgYi9o
dy94ZW4veGVuLWhvc3QtcGNpLWRldmljZS5jDQo+PiBpbmRleCA4YzZlOWExNzE2YTIuLjJmZTZh
NjA0MzRiYSAxMDA2NDQNCj4+IC0tLSBhL2h3L3hlbi94ZW4taG9zdC1wY2ktZGV2aWNlLmMNCj4+
ICsrKyBiL2h3L3hlbi94ZW4taG9zdC1wY2ktZGV2aWNlLmMNCj4+IEBAIC0xMCw2ICsxMCw3IEBA
DQo+PiAgI2luY2x1ZGUgInFhcGkvZXJyb3IuaCINCj4+ICAjaW5jbHVkZSAicWVtdS9jdXRpbHMu
aCINCj4+ICAjaW5jbHVkZSAieGVuLWhvc3QtcGNpLWRldmljZS5oIg0KPj4gKyNpbmNsdWRlICJo
dy94ZW4veGVuX25hdGl2ZS5oIg0KPiANCj4gVGhlIGluY2x1c2lvbiBvcmRlciB1bmZvcnR1bmF0
ZWx5IHNlZW1zIHRvIGJlIGRlbGljYXRlLg0KPiAiaHcveGVuL3hlbl9uYXRpdmUuaCIgc2hvdWxk
IGJlIGJlZm9yZSBhbGwgdGhlIG90aGVyIHhlbg0KPiBpbmNsdWRlcywgYnV0IGFmdGVyICJxZW11
L29zZGVwLmgiLg0KPiANCj4+ICANCj4+ICAjZGVmaW5lIFhFTl9IT1NUX1BDSV9NQVhfRVhUX0NB
UCBcDQo+PiAgICAgICgoUENJRV9DT05GSUdfU1BBQ0VfU0laRSAtIFBDSV9DT05GSUdfU1BBQ0Vf
U0laRSkgLyAoUENJX0NBUF9TSVpFT0YgKyA0KSkNCj4+IEBAIC0zMjksMTIgKzMzMCwxNyBAQCBp
bnQgeGVuX2hvc3RfcGNpX2ZpbmRfZXh0X2NhcF9vZmZzZXQoWGVuSG9zdFBDSURldmljZSAqZCwg
dWludDMyX3QgY2FwKQ0KPj4gICAgICByZXR1cm4gLTE7DQo+PiAgfQ0KPj4gIA0KPj4gKyNkZWZp
bmUgUENJX1NCREYoc2VnLCBidXMsIGRldiwgZnVuYykgXA0KPj4gKyAgICAgICAgICAgICgoKCh1
aW50MzJfdCkoc2VnKSkgPDwgMTYpIHwgXA0KPj4gKyAgICAgICAgICAgIChQQ0lfQlVJTERfQkRG
KGJ1cywgUENJX0RFVkZOKGRldiwgZnVuYykpKSkNCj4+ICsNCj4+ICB2b2lkIHhlbl9ob3N0X3Bj
aV9kZXZpY2VfZ2V0KFhlbkhvc3RQQ0lEZXZpY2UgKmQsIHVpbnQxNl90IGRvbWFpbiwNCj4+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgYnVzLCB1aW50OF90IGRldiwgdWlu
dDhfdCBmdW5jLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJw
KQ0KPj4gIHsNCj4+ICAgICAgRVJSUF9HVUFSRCgpOw0KPj4gICAgICB1bnNpZ25lZCBpbnQgdjsN
Cj4+ICsgICAgdWludDMyX3Qgc2RiZjsNCj4gDQo+IFR5cG86IHMvc2RiZi9zYmRmLw0KPiANCj4+
ICANCj4+ICAgICAgZC0+Y29uZmlnX2ZkID0gLTE7DQo+PiAgICAgIGQtPmRvbWFpbiA9IGRvbWFp
bjsNCj4+IEBAIC0zNjQsMTEgKzM3MCwxNiBAQCB2b2lkIHhlbl9ob3N0X3BjaV9kZXZpY2VfZ2V0
KFhlbkhvc3RQQ0lEZXZpY2UgKmQsIHVpbnQxNl90IGRvbWFpbiwNCj4+ICAgICAgfQ0KPj4gICAg
ICBkLT5kZXZpY2VfaWQgPSB2Ow0KPj4gIA0KPj4gLSAgICB4ZW5faG9zdF9wY2lfZ2V0X2RlY192
YWx1ZShkLCAiaXJxIiwgJnYsIGVycnApOw0KPj4gLSAgICBpZiAoKmVycnApIHsNCj4+IC0gICAg
ICAgIGdvdG8gZXJyb3I7DQo+PiArICAgIHNkYmYgPSBQQ0lfU0JERihkb21haW4sIGJ1cywgZGV2
LCBmdW5jKTsNCj4+ICsgICAgZC0+aXJxID0geGNfcGh5c2Rldl9nc2lfZnJvbV9kZXYoeGVuX3hj
LCBzZGJmKTsNCj4gDQo+IFRoaXMgd2FzIHJlbmFtZWQgdG8geGNfcGNpZGV2X2dldF9nc2kuDQo+
IA0KPiBUaGlzIGFsc28gbmVlZHMgc29tZSBzb3J0IG9mIFhlbiBpbnRlcmZhY2UgdmVyc2lvbiBn
dWFyZCBmb3IgYmFja3dhcmQNCj4gY29tcGF0aWJpbGl0eSBzaW5jZSBpdCdzIGEgbmV3IGNhbGwg
aW50cm9kdWNlZCBpbiBYZW4gNC4yMC4NCj4gDQo+PiArICAgIC8qIGZhaWwgdG8gZ2V0IGdzaSwg
ZmFsbGJhY2sgdG8gaXJxICovDQo+PiArICAgIGlmIChkLT5pcnEgPT0gLTEpIHsNCj4+ICsgICAg
ICAgIHhlbl9ob3N0X3BjaV9nZXRfZGVjX3ZhbHVlKGQsICJpcnEiLCAmdiwgZXJycCk7DQo+PiAr
ICAgICAgICBpZiAoKmVycnApIHsNCj4+ICsgICAgICAgICAgICBnb3RvIGVycm9yOw0KPj4gKyAg
ICAgICAgfQ0KPj4gKyAgICAgICAgZC0+aXJxID0gdjsNCj4+ICAgICAgfQ0KPj4gLSAgICBkLT5p
cnEgPSB2Ow0KPj4gIA0KPj4gICAgICB4ZW5faG9zdF9wY2lfZ2V0X2hleF92YWx1ZShkLCAiY2xh
c3MiLCAmdiwgZXJycCk7DQo+PiAgICAgIGlmICgqZXJycCkgew0KPiANCg0KLS0gDQpCZXN0IHJl
Z2FyZHMsDQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 02:35:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 02:35:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818947.1232232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0XOx-0007YT-Gf; Tue, 15 Oct 2024 02:35:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818947.1232232; Tue, 15 Oct 2024 02:35: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 1t0XOx-0007YM-Dt; Tue, 15 Oct 2024 02:35:11 +0000
Received: by outflank-mailman (input) for mailman id 818947;
 Tue, 15 Oct 2024 02:35: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 1t0XOv-0007YC-Qu; Tue, 15 Oct 2024 02:35: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 1t0XOv-0001bC-Oq; Tue, 15 Oct 2024 02:35: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 1t0XOv-0004wj-9r; Tue, 15 Oct 2024 02:35:09 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0XOv-0004r1-9E; Tue, 15 Oct 2024 02:35: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=xdKeMtGl+guozgRvoHmXikMOnUF6GHrPpjliSpz0suY=; b=UTjX6GV7D76Tt/5C/gRlfgSAH4
	utYo0v31lKzJ5kxBWjsfwCgG/YcRTsrP11mshc2/RvWyGjSMJoxUVwZL+cZNqw3KMctWJXYmEW8Hf
	6yznASA9fNL2S6PaUlhF2C5cngBFlEl0O1V2qIfZZXhsNZhVmS5aa30sCegx393KHm20=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188085-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188085: 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-amd64-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-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-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-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx: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-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-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2:migrate-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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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-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
X-Osstest-Versions-This:
    xen=542ac112fc68c66cfafc577e252404c21da4f75b
X-Osstest-Versions-That:
    xen=76a54badf890f56ff72644593c0fbc72138e13aa
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 02:35:09 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188079
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188079
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188079
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188079
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188079
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188079
 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-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-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-armhf-armhf-libvirt     15 migrate-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-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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-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

version targeted for testing:
 xen                  542ac112fc68c66cfafc577e252404c21da4f75b
baseline version:
 xen                  76a54badf890f56ff72644593c0fbc72138e13aa

Last test of basis   188079  2024-10-14 01:54:05 Z    1 days
Testing same since   188085  2024-10-14 19:09:00 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   76a54badf8..542ac112fc  542ac112fc68c66cfafc577e252404c21da4f75b -> master


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 06:00:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 06:00:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818962.1232242 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0abL-0006pE-N6; Tue, 15 Oct 2024 06:00:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818962.1232242; Tue, 15 Oct 2024 06:00: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 1t0abL-0006p7-KO; Tue, 15 Oct 2024 06:00:11 +0000
Received: by outflank-mailman (input) for mailman id 818962;
 Tue, 15 Oct 2024 06: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0abC-0005qb-VB
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 06:00:03 +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 b660c132-8aba-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 08:00:00 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9a0c40849cso271662966b.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 23:00:00 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8b5:94fc:ce22:8335:8123?
 (p200300cab721c8b594fcce2283358123.dip0.t-ipconnect.de.
 [2003:ca:b721:c8b5:94fc:ce22:8335:8123])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d4d678esm300627a12.16.2024.10.14.22.59.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 22:59:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b660c132-8aba-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728971999; x=1729576799; 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=Tc+9mn57TgRg07eiv0X97eGOtK7RH4OqVhupEyE+Se0=;
        b=dPEJtHKqQmYcDdow3khjjzLmV1memRDUiKPB2x+NGT5912E6BO+q2dICHf8Y+1n1xX
         pG9azjs9jAY2lbW5XYIFus/NrDHkjvGbdqFoNh5pxLTb+gxAV3VadlhSaDkvhWLl+Sea
         83NsIfAaIJqCx9k3Pz71Mh3eatUGOelRsoVSk6zMVnlZpnM8JHzGsr5SVbk+DfGFg+vR
         uvSfaIdPwrtMqL/SD41PG6r0skPaYB8crhXomeTsLRVR7Qv+nfF9y6/HjDPlaFi7lwhs
         Ob3dlJfgr+g5g8VY9O8SCRvy7QGpTcjafifPICwM3r6Sre/M9OU3b3enEYhro7EwhPZN
         vTfw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728971999; x=1729576799;
        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=Tc+9mn57TgRg07eiv0X97eGOtK7RH4OqVhupEyE+Se0=;
        b=WyL+QGaurwSaRkU08SdzGXb4PDQgXNm4/cr+4SirDfWNIhCSZAi1hW9kXhATqm+jvP
         UJb/+WXRB5SL4ZY7V12MnJhgrDLTQsmHI/wp0epgQLBFenfhy8Knu0U4wYNDvNOAje31
         z+ORRoG8t5oCyxQ7okra3kFqxLhq+9e8xpiGkha60xsG4hFYtN+9zn1IRLxm1AEjiX8k
         iPJWVYTKUVQTxP2/SL32gP8lm26sSy8l/p80BBKYrJF4+c28Nd1bEHz0rQqhDE/5VjMX
         pKS+q6WC4uWMux50NmNOFdZNMVUnBR97tVd0U1jyO0rztvrJdhL/XRmeQXdRnExO3pPS
         Pavw==
X-Gm-Message-State: AOJu0YxV0BJZj91786AFg8K8yEzD4hhLh1KL6mmERwGJsU+T+IiInkii
	CyaHpNKecDpqPOlQpq1KKMdpbzDb84Or2V3Eeq3rNM2PPvgv70EcqBVCm98h2Q==
X-Google-Smtp-Source: AGHT+IGOx3M6cSv3eFCXy5xx6J3YguX99C0uxk0kDPSUkE4NTIIFfpTWxofcs5KLaY0MIROgzwNzdg==
X-Received: by 2002:a17:907:7f12:b0:a99:fb10:1285 with SMTP id a640c23a62f3a-a99fb102403mr691955466b.20.1728971999562;
        Mon, 14 Oct 2024 22:59:59 -0700 (PDT)
Message-ID: <bb7a77b7-f57f-4ce5-a30f-5615e2c29773@suse.com>
Date: Tue, 15 Oct 2024 07:59:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
 <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@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: <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14.10.2024 18:32, Frediano Ziglio wrote:
> On Mon, Oct 14, 2024 at 4:31 PM Anthony PERARD
> <anthony.perard@vates.tech> wrote:
>>
>> On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
>>> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
>>> index 1199291d2b..23ad274c89 100644
>>> --- a/xen/arch/x86/boot/Makefile
>>> +++ b/xen/arch/x86/boot/Makefile
>>> @@ -1,4 +1,5 @@
>>>  obj-bin-y += head.o
>>> +obj-bin-y += built_in_32.o
>>
>> I don't quite like that this new object name is "built_in_32.o",
>> It's really closed to "built_in.*" which is used by Rules.mk to collect
>> all objects in a subdirectory. I don't really have a better suggestion at
>> the moment.
>>
> 
> It was cbundle.o before, but people preferred built_in_32.o.
> It's a collection of object files like built_in.o so it does not seem
> so bad to me.
> But seen other replies, some other people prefer "bundle".

Well, I for one don't really _prefer_ bundle. I merely see it as a possible
option to address Anthony's name ambiguity concern.

>>> +     $(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
>>
>> I think this wants to be: -T $(filter %.lds,$^) -Map $(patsubst %.bin,%.map,$@) -o $(patsubst %.bin,%.o,$@) $(filter %.o,$^)
>>
>> :-(, maybe that's lots of $(patsubst,), not sure which is better between
>> $(patsubst,) and using the stem $*.
>>
> 
> Not strong about stem or patsubst.
> The 2 filters seem good, they suggest lds for the script and objects
> for the input, which makes sense.
> 
>> Also, if something tries to use built_in_32.tmp.bin, we have a rule that
>> remove it's prerequisite.
>>
>> BTW, everything is kind of temporary in a build system, beside the few
>> files that we want to install on a machine, so having a target named
>> with "*tmp*" isn't great. But having a rule that create "*tmp*" file but
>> remove them before the end of its recipe is fine (or those *tmp* aren't
>> use outside of this recipe).
>>
> 
> Mumble... yes, I think the XX.tmp.o was a temporary internal rule file.
> So we still don't agree on one name, and now we want to find also
> another, tricky.
> More or less if it can help, one is a 32 bit object file that bundle
> together multiple 32 bits object files while the other is the
> conversion of the 32 bits bundle file to 64 bits.
> XXX_32.o and XXX_32as64.o ??

Whatever the eventual name (I don't care all that much), just one request:
Dashes instead of underscores please.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 06:33:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 06:33:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818969.1232252 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0b7k-0002KJ-6s; Tue, 15 Oct 2024 06:33:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818969.1232252; Tue, 15 Oct 2024 06: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 1t0b7k-0002KC-3A; Tue, 15 Oct 2024 06:33:40 +0000
Received: by outflank-mailman (input) for mailman id 818969;
 Tue, 15 Oct 2024 06:33: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0b7i-0002K6-On
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 06:33:38 +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 68841cf0-8abf-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 08:33:37 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9a0474e70eso328261866b.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 23:33:37 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8b5:94fc:ce22:8335:8123?
 (p200300cab721c8b594fcce2283358123.dip0.t-ipconnect.de.
 [2003:ca:b721:c8b5:94fc:ce22:8335:8123])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29822de7sm31404766b.131.2024.10.14.23.33.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 23:33:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 68841cf0-8abf-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728974016; x=1729578816; 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=fgxEfrimOvPF4K21x6maK2pOXQSzUV4tkiIp99DUg3k=;
        b=RUfBOnst5htgUBHnePSDF9ic+w9GPV7wg5DSDzsZmmjAbSWeIMxRSYmJP+uSKphnCs
         hsd63zqhIK0J1JG6gXO4qfE7UdpijbCljuXd38X83B1LfcvGi4mOcSj2mQuxXufLwKR6
         LWsBoR/5riWxIh6jOJJTzppwJP4sRM5BMszMM2gLwSdllAOZjn6Z7DZjQIwpnSKv1gNF
         V0mo42U3Irv6wnzac2obc5yR9kaLaeInFwBjklXw/qOso9IztL6o/QKubq5eWlITvkGm
         qAufqlQkVZJCXJhmrSFVyIMkZAnJFPv6q7d3tgYHA8nrVb/gyGVWfMDwXjyrGeJvIaWH
         eJVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728974016; x=1729578816;
        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=fgxEfrimOvPF4K21x6maK2pOXQSzUV4tkiIp99DUg3k=;
        b=knsOZwekWjV8B9RAW5Leu2C0KcPPsi1t8g6la9VMDHdKontFOjGYBqsjD/aEnCIWVj
         Kx+6JT6t72OIGspMOm+r6HRuIrsXqgpUFtXtlXVHbueZdSKrtkUIDw2T3z9U7sWjO1y0
         Un5YS7D23SsftUoob4TxMPs/XcCwrexewhok4kJxFHKM0rI/cYMbVsd2nkckhIo59zF2
         y0SFtN0ExNBHW7SsO7IqrBZeNZUW2sTsknRro0cIvzOITSk2LSFfl9sxqEGG4l8dW5Bi
         EuN13ijdLgn+44JobbQXAaxonwhKY8T4gRuyo5kAU8+3s3GEQp4VFt5p1zuoapyB5ZN8
         iJmw==
X-Forwarded-Encrypted: i=1; AJvYcCUQMEURODhUnaOS8/z3VzbmbOKrWo5DfMBWbSUvhrHORzthc1QI265V0ahSI46IS8VcGUWLhcrdYJk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyQFx4w7Gt8S1y0TujoUTyaM6MCq7RGGp5lV+6xq7zLezEAwcah
	LEe40wq+bm3a7BhadHwm4e2vdyXAsJMq/HeP7hr7UYXcH6uU02oofCzsiw41tQ==
X-Google-Smtp-Source: AGHT+IE4V8GXYcBcQCjOaBoslyp6IovlRGWm8S9MDvk8+EMiIZZaDCjwIS3b3h+h+tSyVAM1ex8wog==
X-Received: by 2002:a17:907:948c:b0:a89:f5f6:395 with SMTP id a640c23a62f3a-a99e3b1db20mr1039997966b.1.1728974016346;
        Mon, 14 Oct 2024 23:33:36 -0700 (PDT)
Message-ID: <7e3399d7-f41c-4696-919b-dc7f57168bf9@suse.com>
Date: Tue, 15 Oct 2024 08:33:35 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/riscv: initialize bootinfo from dtb
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
 <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.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: <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.10.2024 17:30, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/setup.c
> +++ b/xen/arch/riscv/setup.c
> @@ -50,6 +50,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
>                            _end - _start, false) )
>          panic("Failed to add BOOTMOD_XEN\n");
>  
> +    BUG_ON(!boot_fdt_info(device_tree_flattened, dtb_addr));

We generally aim at avoiding side effects in BUG_ON() (or ASSERT()). With

    if (!boot_fdt_info(device_tree_flattened, dtb_addr))
        BUG();

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

I can make the adjustment while committing, if desired.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 06:38:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 06:38:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818975.1232262 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0bCn-00032n-Pi; Tue, 15 Oct 2024 06:38:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818975.1232262; Tue, 15 Oct 2024 06:38: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 1t0bCn-00032g-MG; Tue, 15 Oct 2024 06:38:53 +0000
Received: by outflank-mailman (input) for mailman id 818975;
 Tue, 15 Oct 2024 06:38: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0bCm-00032a-A2
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 06:38:52 +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 22a372e7-8ac0-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 08:38:49 +0200 (CEST)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-37d447de11dso3619073f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 23:38:50 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8b5:94fc:ce22:8335:8123?
 (p200300cab721c8b594fcce2283358123.dip0.t-ipconnect.de.
 [2003:ca:b721:c8b5:94fc:ce22:8335:8123])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fa87775sm725509f8f.27.2024.10.14.23.38.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 23:38:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 22a372e7-8ac0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728974330; x=1729579130; 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=5iSnmjekMrgf9MsLKJnZ3l+1ZJpzo13Ep98ZVlmlM+Q=;
        b=Kqd2zkAQ/inhye0ZvM+OmeipwzF18XJBsdU0pLYXddfeOR9FFFT2ubMfdGhCYsCDJW
         jXxWMmsBe6N4Gl8rTzip0QRz00oS8Y7F27KFxCIJuavfgiE0oNNA6886CXfkjZ6vJXe8
         87GXHKHTcQ+9ZY+bu7TAfAtoLZZurskRXbtSPIiRci4qHi5E4vGpIzPbe20pRdQm8658
         hu/J20DtvPkZxzS3t3LuIWVT3c3B2MDeiX990vK/3+6DnPqh+fhTxAF4KyUBAQly4ffc
         OSLi3TrDAKojoFr98M0TrTHBCGtIJNw6v1SJn+WxFZpwpETfrRV90DnbZZooCerYfpZX
         Q67A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728974330; x=1729579130;
        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=5iSnmjekMrgf9MsLKJnZ3l+1ZJpzo13Ep98ZVlmlM+Q=;
        b=h1KqjCbZnBhOvOHmQZZ3GIyASLsP0n6NvfHtutBZ3+AQ2DUS3K8R99na7hF8ijujkM
         xShRwgnTqNq5GwP+mYzrV10piSg67A/WB0Aj6fcskNsiJzFMoIOk1IAkIfUMXN8ZJqlL
         JuIdokAX1ylUh7VO/jrSdah4bBrL+UuzrxaBoqH5KTFMzkCBdUKQHNYJ470DLcgd+z4t
         uBAxZ9g1rUqqGWg8xIhQpMDAnMogUM23E/u6cvkgewpAHrri7htldmuBtwGT70YpPJOo
         6XgQQAHt4zFtgvBcrJImMHC+fcl31uPI/Kkl3RaSZ7s416najok5v0bzmhtfMp68kKhV
         uF1w==
X-Forwarded-Encrypted: i=1; AJvYcCWetSrhNMPjCcHhSjUOGtERNcFPWXLcW2Q6jV6rjZa/wlDKtoBPXSpg1PaR1QtlFKz1nQ7bMkDmk1g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwLRXelXspSPhjuXzJeWXKYixhGJPH2kvAeT5wNi6t8zgr0g2f9
	ZOuGCAks5WhNV5+NQKYONeUL2DAL7IRL2gAyHZ+fG0jdLY8yqWQN2E/5odXvmg==
X-Google-Smtp-Source: AGHT+IEBNnAyct2aztxNFyYd+Dwavw19IJsiELhFfQrhxxWe3f20oVh8KdLoDncZBEnEKacV7iEy4A==
X-Received: by 2002:adf:b35c:0:b0:369:9358:4634 with SMTP id ffacd0b85a97d-37d551d65aamr10875938f8f.19.1728974329703;
        Mon, 14 Oct 2024 23:38:49 -0700 (PDT)
Message-ID: <5b9b6623-cb35-44a5-b714-e13ad07aa8a5@suse.com>
Date: Tue, 15 Oct 2024 08:38:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] iommu/amd-vi: do not error if device referenced in IVMD
 is not behind any IOMMU
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, xen-devel@lists.xenproject.org
References: <20241008104706.74001-1-roger.pau@citrix.com>
 <d6489e43-2cfe-4ad7-824e-a3212367dbca@suse.com>
 <ZwY4ym2Gnlx4tytP@macbook.local>
 <5a2a4ff4-a2c7-46f6-bd18-a4837fe8d4c1@suse.com>
 <ZwZlVlU2nHkBedyo@macbook.local>
 <703fa416-c7d5-4862-a871-5831125c2e25@suse.com>
 <ZwZtR6ZTl2gUWN2T@macbook.local>
 <34f73ec6-0e10-41f4-8894-c367264afefc@suse.com>
 <ZwaHAqVGeeJNu4Dp@macbook.local>
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: <ZwaHAqVGeeJNu4Dp@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 15:37, Roger Pau Monné wrote:
> On Wed, Oct 09, 2024 at 02:09:33PM +0200, Jan Beulich wrote:
>> On 09.10.2024 13:47, Roger Pau Monné wrote:
>>> On Wed, Oct 09, 2024 at 01:28:19PM +0200, Jan Beulich wrote:
>>>> On 09.10.2024 13:13, Roger Pau Monné wrote:
>>>>> I also think returning an error when no device in the IVMD range is
>>>>> covered by an IOMMU is dubious.  Xen will already print warning
>>>>> messages about such firmware inconsistencies, but refusing to boot is
>>>>> too strict.
>>>>
>>>> I disagree. We shouldn't enable DMA remapping in such an event. Whereas
>>>
>>> I'm not sure I understand why you would go as far as refusing to
>>> enable DMA remapping.  How is a IVMD block having references to some
>>> devices not assigned to any IOMMU different to all devices referenced
>>> not assigned to any IOMMU?  We should deal with both in the same
>>> way.
>>
>> Precisely because of ...
>>
>>> If all devices in the IVMD block are not covered by an IOMMU, the
>>> IVMD block is useless.
>>
>> ... this. We simply can't judge whether such a useless block really was
>> meant to cover something. If it was, we're hosed. Or maybe we screwed up
>> and wrongly conclude it's useless.
> 
> The same could be stated about devices in a IVMD block that are not
> assigned to an IOMMU: it could also be Xen that screwed up and wrongly
> concluded they are not assigned to an IOMMU.
> 
>>>  But there's nothing for Xen to action, due to
>>> the devices not having an IOMMU assigned.  IOW: it would be the same
>>> as booting natively without parsing the IVRS in the first place.
>>
>> Not really, no. Not parsing IVRS means not turning on any IOMMU. We
>> then know we can't pass through any devices. We can't assess the
>> security of passing through devices (as far as it's under our control)
>> if we enable the IOMMU in perhaps a flawed way.
>>
>> A formally valid IVMD we can't make sense of is imo no different from
>> a formally invalid IVMD, for which we would return ENODEV as well (and
>> hence fail to enable the IOMMU). Whereas what you're suggesting is, if
>> I take it further, to basically ignore (almost) all errors in table
>> parsing, and enable the IOMMU(s) in a best effort manner, no matter
>> whether that leads to a functional (let alone secure [to the degree
>> possible]) system.
> 
> No, don't take it further: not ignore all errors, I think we should
> ignore errors when the device in the IVMD is not behind an IOMMU.  And
> I think that should apply globally, regardless of whether all devices
> in the IVMD block fall in that category.
> 
> That will bring AMD-Vi inline with VT-d RMRR, as from what I can see
> acpi_parse_one_rmrr() doesn't care whether the device scope in the
> entry is behind an IOMMU or not, or whether the whole RMRR doesn't
> effectively apply to any device because none of them is covered by an
> IOMMU.
> 
>> What I don't really understand is why you want to relax our checking
>> beyond what's necessary for the one issue at hand.
> 
> This issue has been reported to us and we have been able to debug.
> However, I worry what other malformed IVMD blocks might be out there,
> for example an IVMD block that applies to a single device (type 21h),
> but such single device doesn't exist (or it's not behind an IOMMU).
> Maybe next time we simply won't get a report, the user will try Xen,
> see it's not working and move to something else.
> 
> I've taken a quick look at Linux, and when parsing the IVMD blocks
> there's no checking that referred devices are behind an IOMMU, the
> regions are just added to a list.

Hmm, okay, after some more chewing on it on this basis
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 06:41:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 06:41:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818983.1232272 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0bFX-0004VD-5X; Tue, 15 Oct 2024 06:41:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818983.1232272; Tue, 15 Oct 2024 06: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 1t0bFX-0004V6-2Q; Tue, 15 Oct 2024 06:41:43 +0000
Received: by outflank-mailman (input) for mailman id 818983;
 Tue, 15 Oct 2024 06: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0bFW-0004UV-15
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 06:41:42 +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 88094bc2-8ac0-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 08:41:39 +0200 (CEST)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-43057f4a16eso43509595e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 23:41:40 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8b5:94fc:ce22:8335:8123?
 (p200300cab721c8b594fcce2283358123.dip0.t-ipconnect.de.
 [2003:ca:b721:c8b5:94fc:ce22:8335:8123])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4313f6b31e3sm8147895e9.31.2024.10.14.23.41.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 23:41:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 88094bc2-8ac0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728974500; x=1729579300; 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=S89/5L62fOPmW5cP4ByJo1hQo+FxwEK/aPqMKRj2vo0=;
        b=adPxkEf1CWwkRN7EzNbnx4uvSjxBTCCL5xn0zF8DnRuTCpXO7KhdwsmoeB9/PLcAyB
         6ZiRQA4JNBa+7+N6InOJ0ZtkrL+FUZeC0sLSuVV+nCNs7gX31VWmfPndJuFDcW9warUC
         TvtlVjQN8NH25fkHY+dV2YE/4uznRDI5ucJDpzq5dBUuEqZLGK9nZwBVTzREspM85Pmw
         x/muMZ+Kn4hxeTdffI81d1+O1UVGyhYwJaUq6L1mfd1wcwVSRBq8G94W8Ac1UrxXIYK4
         V9k1P/8QCNiqZvjULou0TNFSZKCp5QHvv7cL5EkmMkxWCcv9V1dICXkL+ElkyxDRASyv
         kBkw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728974500; x=1729579300;
        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=S89/5L62fOPmW5cP4ByJo1hQo+FxwEK/aPqMKRj2vo0=;
        b=w67GDxyatldnpy0O60G1BjoMqSHeCwh6S8bpZF27I0e4h/V4fxTgvwMCU+rCJWG9oH
         yYn/OkBXtTnVsmO4LYITI9QGxTfb+UWnRNgNW9iFDQGaNIUjTupuP5NcV03vXl6eUkWx
         VpBpk0JYoXW7G3Jo+Imp2E6zVHuzEEo8eRlw5M8PhtjUPCXeRhDDv0I8jfrE25Q0/uJY
         kf3p30OmbbZy701p2nEXp/7766pdi4wRBpa2PQe5/owj5xHOesetos1IJnabNQS+b494
         niVObziNx6SOx9MPdD6Gb37Dc3g1qW2p8/4TUUBrRd/VOaULCTYntx/SgGYckB5MBg8i
         r4TQ==
X-Forwarded-Encrypted: i=1; AJvYcCXwjs5JEEzrXhKUIorgo1l0tKAYUYZ7cCFpBJa73toXSsptTkfVqGbrWidOvgu4EEDIGuGPw9LfksA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzuD2fCctILGkoOZIWD6W5s0kocaYwoCyc+ePHF1vbEh/UOL02T
	QTrmQyZ2p071BtCg0AiZ+pKsWFyhgC9lJ4+TcBAoR/Bh5A+tIeblw5y14VoJ3w==
X-Google-Smtp-Source: AGHT+IGylaXOAKKr1uXgXOWmdLhi4OZfATqrFoo1UryW2+caMZTsGVEuZhuLp4bAL52E96ffvttxVw==
X-Received: by 2002:a05:600c:4f08:b0:430:5403:50a6 with SMTP id 5b1f17b1804b1-4311df56c09mr121304255e9.29.1728974499847;
        Mon, 14 Oct 2024 23:41:39 -0700 (PDT)
Message-ID: <7d316e7f-4630-418b-8541-adf19b44048c@suse.com>
Date: Tue, 15 Oct 2024 08:41:38 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v9 1/2] x86/boot: Align mbi2.c stack to 16 bytes
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241010094524.1836495-1-frediano.ziglio@cloud.com>
 <20241010094524.1836495-2-frediano.ziglio@cloud.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: <20241010094524.1836495-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.10.2024 11:45, Frediano Ziglio wrote:
> Doing previous testing with an Alder Lake Intel machine the with

Nit: flip "the" and "with"?

> "x86/boot: Improve MBI2 structure check" commit test started to fail.
> Removing the commit makes the tests succeed however there was not apparent
> reason (looking at the code) for the failure.
> So I instrumented code to output the structure and tested code with
> this extracted data with and without the mentioned commit and results
> were the same.
> Compiled assembly code from lab was also fine beside not keeping
> the 16-byte alignment for the stack.
> Turning on stack alignment solve the problem on Alder Lake machine.
> 
> Fixes: eb21ce14d709 ('x86/boot: Rewrite EFI/MBI2 code partly in C')
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 15 06:42:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 06:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818992.1232282 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0bGg-000548-Jg; Tue, 15 Oct 2024 06:42:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818992.1232282; Tue, 15 Oct 2024 06: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 1t0bGg-000541-GU; Tue, 15 Oct 2024 06:42:54 +0000
Received: by outflank-mailman (input) for mailman id 818992;
 Tue, 15 Oct 2024 06: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0bGf-00053U-T2
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 06:42:53 +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 b2b79064-8ac0-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 08:42:51 +0200 (CEST)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-431137d12a5so47114735e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 23:42:52 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8b5:94fc:ce22:8335:8123?
 (p200300cab721c8b594fcce2283358123.dip0.t-ipconnect.de.
 [2003:ca:b721:c8b5:94fc:ce22:8335:8123])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4313f6b1e92sm8161575e9.32.2024.10.14.23.42.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 23:42:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2b79064-8ac0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728974571; x=1729579371; 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=AFs9zimsfbQXsVW1yEIBFRmk4sdRB5guFAthFnTI4CU=;
        b=FeITSmBUt6QAOwZEgX/DkWVN8TevvXtAHdoTUnnbtAdhtc5+dD2kHskE0+tgdihkP9
         sOTFq6I0deoRBgWvfPmYtKMWeQ0djWjI0GjVZVHdrXmV10Kbfvgc6m7iPyk0RTH9Sn4d
         dlY8kg4yswP89orTSTwzzkqz+NEb59/yuSmFXy8lC0trdU4xeczVdEAgN7KrntZYGdk5
         /YP9imSnKVpZgkNfT9uzr2pi7h4YbxwUPLTuDQW+qj/tpfiSbxfaThjA6NrzNpXW6icZ
         UWELPql5OQqhmZAXcCdCZE2qYxBOCDWjTXqlo+rAmytIeZ+bB0UcXsCXf3/6YdSm5Twn
         TH/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728974571; x=1729579371;
        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=AFs9zimsfbQXsVW1yEIBFRmk4sdRB5guFAthFnTI4CU=;
        b=HKhjr3hJs/9WZlwkb/tQb8fDKshVE+/LuPTkozh5/uwvgHp1iw4aZMBTxZbXwYvOoG
         iZZ8+6H0qE9PR2yoeFaSDX4aX7rKJ2KoZuy4YlwOq1b03NbFslc88QMnsPR5wR7YIYOd
         2cy16XsSerCqLi/TgDAJuoPuTrGULOu/9YOkUXHIajd5mObJiaJxM31uWVRormHBK3zQ
         l9Snyng7LsINZpMtl2TiX3l4/DzfqYEFi2heKkBjZPqMP3WoBgtBaX20qlUxXEw+sTNR
         QRen/tQot4hmLcS/1gkj8CWxf1Lvl72cNSR53Mn2BSaIVRXFiyrHmsQ4S2I5UK40RU3q
         nu4w==
X-Forwarded-Encrypted: i=1; AJvYcCUwzqmH2xnegglMM3cRHOP4asCHoZUw6pL8OJk1epZJiW/Bu9G/YKaQ34M9woZN7/ctSWGOU76BGsk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzkncU66r3HphqstGjZaWnbxm41obhjthv0AaiNYdqD+1AsKiu3
	ExZji+v25nCkY2hTBtTnQ9bP4WiG2gwPvJihHFCcm+zoAmrOqg2mUtDP4/7f0Q==
X-Google-Smtp-Source: AGHT+IEU0qRYBiijOLLfQCX4GYXrdtMxoyc4vDAR6mvTMA9XQiyOaLo2F6Rz1wAksEcnpc/wyLSljw==
X-Received: by 2002:a05:600c:1ca4:b0:42c:de34:34c1 with SMTP id 5b1f17b1804b1-4311dea3b47mr113607455e9.2.1728974571459;
        Mon, 14 Oct 2024 23:42:51 -0700 (PDT)
Message-ID: <c0d1f5fa-cd84-401c-9f5b-f146c64556f6@suse.com>
Date: Tue, 15 Oct 2024 08:42:50 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v9 2/2] x86/boot: Improve MBI2 structure check
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20241010094524.1836495-1-frediano.ziglio@cloud.com>
 <20241010094524.1836495-3-frediano.ziglio@cloud.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: <20241010094524.1836495-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.10.2024 11:45, Frediano Ziglio wrote:
> Tag structure should contain at least the tag header.
> Entire tag structure must be contained inside MBI2 data.
> 
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Nit (for the future): Tags in chronological order please (maybe
with the exception of release acks, which personally I think best
go last).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 06:44:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 06:44:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.818998.1232292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0bI6-0005c5-TJ; Tue, 15 Oct 2024 06:44:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 818998.1232292; Tue, 15 Oct 2024 06: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 1t0bI6-0005by-Py; Tue, 15 Oct 2024 06:44:22 +0000
Received: by outflank-mailman (input) for mailman id 818998;
 Tue, 15 Oct 2024 06:44: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0bI5-0005bs-VF
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 06:44:21 +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 e7bf62d8-8ac0-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 08:44:20 +0200 (CEST)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-43117917eb9so44086415e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 23:44:20 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8b5:94fc:ce22:8335:8123?
 (p200300cab721c8b594fcce2283358123.dip0.t-ipconnect.de.
 [2003:ca:b721:c8b5:94fc:ce22:8335:8123])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fa87bd7sm736605f8f.35.2024.10.14.23.44.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 23:44:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7bf62d8-8ac0-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728974659; x=1729579459; 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=V3Sr2I1RaZiZjliKmQVjZfJeuYKBmVSJVCPnttvu8Jw=;
        b=E4Z1iikIO0hmlj40tqGf+axboOT3ytwHkuI5VzGW7qPEbftBFafPYmLP9Imzyt1bqq
         c+NCSPFmUWsibyCteFPRo6WIRoeXxodQPutZ3KP4mgvRxjghd3rZbGja5SfXSExVcR2q
         pQFPZRodgpzVqOLtZMBHbxcodhz897DrJK+7qbf/W+mbrzoVirm5DTSJp6qSHck/RyB8
         eQsKfus7rMYzgL8G426xBicTmEsB6NhWnKwHC2is/g3ua5QGCol+oSvRC+lGF5luzebj
         6Q1LgpUdbalQsdFVBD+nZhLMOTXMjmmSFhJKLDqPvguh4lISY93mko7fKhJTyA3Lwd0G
         A5Zg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728974659; x=1729579459;
        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=V3Sr2I1RaZiZjliKmQVjZfJeuYKBmVSJVCPnttvu8Jw=;
        b=p7Wn/EIS8qjlPzLlL3MolVTRJbvkrSKOOmOkGxNHdYV6+h5sDsCqrmfl3udyUW0uPb
         cQ9UCmmd5kafjC7inBzYlLXgrqsIPboYqyNYulkbcQspcBwp8nMYOfaLmWi2zkDSd7Ag
         PY/jHh70Yu11vRigJgf9i150ZVH3AefM960mBH1FWftNJvWaTPvO/6x49cvmIicMEmve
         gc6gRszP4wKQ7J3Ri4KUgf/WBfzUn+FdHp7mQPFxdLp7a+eEJ98LXwN1WEtzg0EgyFWX
         0LOchO1GS6iJiCodSLdDoOZW7JtuzeNsX8OugoNQZyycq+wnKpZTjCEqp0de4XSGLlzx
         YILg==
X-Forwarded-Encrypted: i=1; AJvYcCWqFLUhGEHGD34ZzFwUbu3uRfoqzmvVbfeDJqxJjhXnLl662u3zCj1p2AI9F6f7TtaXA1/qlGeXeWA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yygda6wIi1qtQlyGUBfbjFvKmLSRoidjJ5zBzKZRqqnGfBPPXgV
	845EB2u7Qx70LuFMXKL2I8AMWV546Yfxeoe/Z9l86/OC5yt2p/fHBiTLaKWOQQ==
X-Google-Smtp-Source: AGHT+IGNoLFzkC6DUFLTGD+sCjpTtQ7UbdIgjJioG2IL2atSIk1lsbCw7ZMYQ1hlHK1/Rbn++jqslA==
X-Received: by 2002:a05:600c:225a:b0:431:40ca:ce6e with SMTP id 5b1f17b1804b1-43140cad71bmr6540325e9.31.1728974659287;
        Mon, 14 Oct 2024 23:44:19 -0700 (PDT)
Message-ID: <7750f224-668f-4fd6-aa7b-39264a990c42@suse.com>
Date: Tue, 15 Oct 2024 08:44:18 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 1/6] x86/boot: Prep work for 32bit object changes
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-2-frediano.ziglio@cloud.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: <20241014085332.3254546-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14.10.2024 10:53, Frediano Ziglio wrote:
> Broken out of the subsequent patch for clarity.
> 
>  * Rename head-bin-objs to obj32
>  * Use a .32.o suffix to distinguish these objects
>  * Factor out $(LD32)
> 
> No functional change.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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




From xen-devel-bounces@lists.xenproject.org Tue Oct 15 06:59:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 06:59:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819007.1232302 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0bWK-00081y-3d; Tue, 15 Oct 2024 06:59:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819007.1232302; Tue, 15 Oct 2024 06:59: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 1t0bWK-00081r-0L; Tue, 15 Oct 2024 06:59:04 +0000
Received: by outflank-mailman (input) for mailman id 819007;
 Tue, 15 Oct 2024 06: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0bWI-00081l-C1
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 06:59:02 +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 f4e5e4c7-8ac2-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 08:59:01 +0200 (CEST)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-4311d972e3eso28765125e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 14 Oct 2024 23:59:01 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8b5:94fc:ce22:8335:8123?
 (p200300cab721c8b594fcce2283358123.dip0.t-ipconnect.de.
 [2003:ca:b721:c8b5:94fc:ce22:8335:8123])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fbf80a4sm755886f8f.87.2024.10.14.23.59.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 14 Oct 2024 23:59:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4e5e4c7-8ac2-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728975541; x=1729580341; 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=iiQVw5shxJMbQfEMusRN2PN4PXkxwLPt0d7Eh8tL4ow=;
        b=O24J6+RfnaeMIgGn0BiSMTKIe56sS2ZRLPiisK6Bmper1JNpI39BNr7V7qpGLCpDPM
         W2KOlOCxOsmG6xgK9oDrshxQJr05ews6dR54U3y1TxkX7eZ1zuE7h2niJQp34htnd4ii
         RFMvrZzkWz3I/y7r6FvaRQoMPAGwJuL9DPdR3flIGQdavBPKXk9Xe1Gmik0t3y709Ngk
         Z8RXPERbSil2Pd6qtgi+V5y3VbO+9gc3NhpuSFPHBH+ZpZWqOl6W5eBWgXJ0JasyX3AR
         NWEeJEm4eTn+2toQBDep2ciTqf7zBTFyE/3TqERyFzPBpD97TuSWtIad4KBzLNDEl5/W
         D8Iw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728975541; x=1729580341;
        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=iiQVw5shxJMbQfEMusRN2PN4PXkxwLPt0d7Eh8tL4ow=;
        b=kfqdMIxvZZmLPlcf2Ey//RwNmuS3ge8SLO4cbOskBl7N3yenhgUWQxiIdGNzjtFxoU
         j+Q7VxvRNqHBYGJVw0qa4oSJyh/pzd1IOvPczm25qw8xgLZ4NIE5M250GX/oFxzbFvjj
         hu2EI8SIAbE8g/I+6EPxXKj3DKQ3E8thD/AGWYEAguRq0ETsfOmPJYwXYNdX4a4ralXD
         u0nQ5F5ZofKxPx60IZVGtPiVSjaPAbAprxzFpS1oG0JVDupU5692+NmTwHZdSZwDcOzz
         4cef/DpenKkKfygg+Fx/TfotLxshciI4XWND3cA1dlABI74OvESz2AKV0YJFnevIYhqo
         ITEA==
X-Forwarded-Encrypted: i=1; AJvYcCV0P3QJF9hYNnH163PFV7lJYLtYw9pT/4eKx35gvAk/4wTMCNJfgh+tTnAKyqMCya0AGUeX5ga9rsU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxRDz8/V4HVrOEdr07+yrRWY2I47woFXvTvhfLhpHPfvgqRoc3f
	3m/2Bas7cUbmjbjxcMDy/cP3w+YICUYuktEqda3M5ZnvY03vz+F4ILvDZHEqlQ==
X-Google-Smtp-Source: AGHT+IEsuppwTgK9y78mC+YkPcPGuOHbVpv/o3dmXuNzLiak5hESVd5DspIkenpy4K1UqDysLfPhmA==
X-Received: by 2002:a05:600c:3ba4:b0:42c:a7cc:cb64 with SMTP id 5b1f17b1804b1-431255d4dcamr91135165e9.3.1728975540747;
        Mon, 14 Oct 2024 23:59:00 -0700 (PDT)
Message-ID: <58d4bea5-ff50-4b12-aa81-8ae79b49196c@suse.com>
Date: Tue, 15 Oct 2024 08:58:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/3] x86/msi: harden stale pdev handling
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
 <20241011152727.366770-2-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: <20241011152727.366770-2-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 17:27, Stewart Hildebrand wrote:
> --- a/xen/arch/x86/msi.c
> +++ b/xen/arch/x86/msi.c
> @@ -1243,7 +1243,12 @@ int pci_reset_msix_state(struct pci_dev *pdev)
>  {
>      unsigned int pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
>  
> -    ASSERT(pos);
> +    if ( !pos )
> +    {
> +        pdev->broken = true;
> +        return -EFAULT;
> +    }
> +
>      /*
>       * Xen expects the device state to be the after reset one, and hence
>       * host_maskall = guest_maskall = false and all entries should have the
> @@ -1271,7 +1276,12 @@ int pci_msi_conf_write_intercept(struct pci_dev *pdev, unsigned int reg,
>          entry = find_msi_entry(pdev, -1, PCI_CAP_ID_MSIX);
>          pos = entry ? entry->msi_attrib.pos
>                      : pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
> -        ASSERT(pos);
> +
> +        if ( !pos )
> +        {
> +            pdev->broken = true;
> +            return -EFAULT;
> +        }
>  
>          if ( reg >= pos && reg < msix_pba_offset_reg(pos) + 4 )
>          {

There are more instances of pci_find_cap_offset(..., PCI_CAP_ID_MSIX)
which may want/need dealing with, even if there are no ASSERT()s there.

Setting ->broken is of course a perhaps desirable (side) effect. Nevertheless
I wonder whether latching the capability position once during device init
wouldn't be an alternative (better?) approach.

Finally I don't think -EFAULT is appropriate here. Imo it should be -ENODEV.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 07:15:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 07:15:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819014.1232312 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0blW-0002Xj-CX; Tue, 15 Oct 2024 07:14:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819014.1232312; Tue, 15 Oct 2024 07:14: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 1t0blW-0002Xc-9P; Tue, 15 Oct 2024 07:14:46 +0000
Received: by outflank-mailman (input) for mailman id 819014;
 Tue, 15 Oct 2024 07:14: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 1t0blV-0002XS-5a; Tue, 15 Oct 2024 07:14: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 1t0blU-00019C-2y; Tue, 15 Oct 2024 07:14: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 1t0blT-0000Um-J9; Tue, 15 Oct 2024 07:14:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0blT-0004fV-Il; Tue, 15 Oct 2024 07:14: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=VZo1o9pHOD8K+kImLLC8ewWUnqd9X/vyrEkmqHZ0CJ4=; b=spSZpVbqh7EgCBRpaq7uiRBR29
	sshBNFg5inh9ntAAONN5i7U5uKvLxHOUVHMYQcBSReceUZIuFIV//4NWneeHIseE83Ro5/zN9NiL1
	FmafX3bBb9x1orydcE/xBy6kZedvFk7ZCuzbBZlurMaZc3ZbkgCChZTCS+NeyiAkNmm4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188086-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188086: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-pair:guest-migrate/dst_host/src_host/debian.repeat: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: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-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-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: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-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=eca631b8fe808748d7585059c4307005ca5c5820
X-Osstest-Versions-That:
    linux=6485cf5ea253d40d507cd71253c9568c5470cd27
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 07:14:43 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-pair 28 guest-migrate/dst_host/src_host/debian.repeat fail pass in 188090-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188081
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188081
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188081
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188081
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188081
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188081
 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-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-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-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-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                eca631b8fe808748d7585059c4307005ca5c5820
baseline version:
 linux                6485cf5ea253d40d507cd71253c9568c5470cd27

Last test of basis   188081  2024-10-14 05:19:18 Z    1 days
Testing same since   188086  2024-10-14 19:40:42 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gao Xiang <hsiangkao@linux.alibaba.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Linus Torvalds <torvalds@linux-foundation.org>
  syzbot+001306cd9c92ce0df23f@syzkaller.appspotmail.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                        fail    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   6485cf5ea253..eca631b8fe80  eca631b8fe808748d7585059c4307005ca5c5820 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 08:25:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 08:25:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819030.1232332 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0crz-0003tC-O6; Tue, 15 Oct 2024 08:25:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819030.1232332; Tue, 15 Oct 2024 08:25: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 1t0crz-0003t5-L6; Tue, 15 Oct 2024 08:25:31 +0000
Received: by outflank-mailman (input) for mailman id 819030;
 Tue, 15 Oct 2024 08:25: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=tju4=RL=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0cry-0003el-B2
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 08:25:30 +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 06d61194-8acf-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 10:25:25 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a99e3b3a411so466614266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 01:25:25 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29749663sm41590566b.64.2024.10.15.01.25.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 01:25:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 06d61194-8acf-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728980724; x=1729585524; 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=Qkb2FwdmNFA27HJZq+hvWg6nvn+M86auMXi8pWNoFV8=;
        b=C9scrtoGjYCCObYOmvM4EqgpCI9Vg9AJsSBO5Ohtn4J+7kW5Sq6HXHLlglEyxARMO8
         3zLcl5rm+jy/u0dTyal/kFR9O2RttxZfrswPpl6wBXxvruu0A0vmLfBK1MWU2Fqf9X9E
         o0u+zD1uRR1atZBqaSQ+CiWFDOuXMdDb9dVbI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728980724; x=1729585524;
        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=Qkb2FwdmNFA27HJZq+hvWg6nvn+M86auMXi8pWNoFV8=;
        b=jEpUxz9XF+LQckA8mLycoC8zh5PCeMlJzSsM+LQYQqUain8BakgSPaKVTGP1WMsGeX
         KAkdAEO+L/vHICB1NxapAKHjWyfp4pKCAZt1JCQQpX7rCRg0ZFQYhsm3wH5RKcBtb/Pr
         9sbv8XuEYXurJQ3GYrJ3/t7ccddI/l8wP7GHWg5GJOd3RxdLr2hNtr55z6nmvtBoU2Hd
         DI+0HdqhK5NqFf7nCOOQgUqtF1ZIwUzmjnUTPn0Qbsb6CJliLtzxaNf+bSgzaij2whNf
         WPG8ibLgpkL5N1bv1v+a1RoLtHbrHW1XvUVpTlfnkMfGg1RaulvVtrUbMj6UIg5CEIV+
         LsSg==
X-Gm-Message-State: AOJu0YwQE1eI1q+JbxHeaYcYH+XjMvtJyNPjJ7gflkSQkul346tDUuR7
	9iOUSvdOkp+3YOi+BsOgPNr6/go/SoYSN0xQ0QFB5CTXKjcS+YzNULBzJlgcOor8LccxCCN0IG2
	f
X-Google-Smtp-Source: AGHT+IGaBW/SgOot01Ss7xVwubLfZCvl/2HPfjfne1MHDIx1jfLcYeB/mLhlDuMsr9Yp8Vw9S07uSg==
X-Received: by 2002:a17:907:97c1:b0:a91:158b:1c23 with SMTP id a640c23a62f3a-a99b87f3669mr1131596166b.9.1728980724515;
        Tue, 15 Oct 2024 01:25:24 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v10 0/2] x86/boot: Improve MBI2 structure check (was: Reduce assembly code)
Date: Tue, 15 Oct 2024 09:25:11 +0100
Message-Id: <20241015082513.2477806-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series came from part of the work of removing duplications between
boot code and rewriting part of code from assembly to C.

Changes since v1, more details in specific commits:
- style updates;
- comments and descriptions improvements;
- other improvements.

Changes since v2:
- rebased on master, resolved conflicts;
- add comment on trampoline section.

Changes since v3:
- changed new function name;
- declare efi_multiboot2 in a separate header;
- distinguish entry point from using magic number;
- other minor changes (see commens in commits).

Changes since v4:
- rebase on staging;
- set %fs and %gs as other segment registers;
- style and other changes.

Changes since v5:
- fixed a typo.

Changes since v6:
- remove merged patch;
- comment and style;
- change some pointer checks to avoid overflows;
- rename parse-mbi2.c to mbi2.c.

Changes since v7:
- removed merged parts;
- add required stack alignment.

Changes since v8:
- added "Fixes:" line;
- typo in commit message: Adler -> Alder;
- add ".init" to mbi2.o;
- reduce difference in Makefile.

Changes since v9:
- minor messages updates.

Frediano Ziglio (2):
  x86/boot: Align mbi2.c stack to 16 bytes
  x86/boot: Improve MBI2 structure check

 xen/arch/x86/efi/Makefile | 4 ++--
 xen/arch/x86/efi/mbi2.c   | 7 +++++--
 2 files changed, 7 insertions(+), 4 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 08:25:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 08:25:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819029.1232323 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0cry-0003f3-Hw; Tue, 15 Oct 2024 08:25:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819029.1232323; Tue, 15 Oct 2024 08:25: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 1t0cry-0003ew-Cb; Tue, 15 Oct 2024 08:25:30 +0000
Received: by outflank-mailman (input) for mailman id 819029;
 Tue, 15 Oct 2024 08:25: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=tju4=RL=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0crx-0003em-65
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 08:25:29 +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 080b3b3c-8acf-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 10:25:27 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c97cc83832so2270007a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 01:25:27 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29749663sm41590566b.64.2024.10.15.01.25.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 01:25:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 080b3b3c-8acf-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728980726; x=1729585526; 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=bVfzz9tu1frx+8mGc1UmEwEmJdo4wen9lvWfIRZy8KE=;
        b=XztDqHtfMwHXOFbtWmQC0gVdte+4EmONZqY0I0yfX2TnpT1g1tR0QEKNHZTWZw4Wqs
         VIvBqVe7J60ZKfTxnxGLOpfIOP/ojqPbxdryLPfO2LOJV84nerfni1FVuaeTH0obzag+
         EMqKBAl/x2G6AATDTEfGmc1iXvURVc12gFF8Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728980726; x=1729585526;
        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=bVfzz9tu1frx+8mGc1UmEwEmJdo4wen9lvWfIRZy8KE=;
        b=nX/vnWtotpVVisxtBxVENAjN+RiMuQqMm+cSjMGG3guaXwXXFnKpvGY9Ggs6VOYPTa
         /khcHKxjfz9h+SVYMLEXRf7yzteUnBKi4C3DC1vfGWTd8NFxy57LHJxmO4T6D7wJJXQL
         S0Z3zL6HJ6Xz+X3t4tzVp/XzUlaiJhDypvD1j/Z5V6yuaUQH+8VkNuSoiPFxKlytD3W8
         Goqn5UgFzkDWFESPy6arLwFJrp9jw5XX6i4aTyHHG0qxxBT77A2Q/pdGaFcjt7xDxxPY
         aoqmpA5htjJDYQqXwI51VsK4X0maWdeWIvJtoCaf+fnqwRAHBV3oHJHwuhVVzGgbkEqc
         zmPA==
X-Gm-Message-State: AOJu0YzCOPb/1vvirc5ojL0VX7A+KGXPQEmI7M3WBa82SmVCpNBDmJKU
	pk9x+bxFOlvToUt2nkfkw+0ExMK2mpUKsjMdMNi7L+pkUK4v9wpXnVzXRKSvjr6gk33/BvmzWtK
	R
X-Google-Smtp-Source: AGHT+IGKa81QccbMlNajkjv7kazsBkfOAArMnAM0d0M/FBsLRI3BmxYrhvk67/BP07W5olX5S0nv1g==
X-Received: by 2002:a17:907:2ce6:b0:a99:ff70:3abd with SMTP id a640c23a62f3a-a99ff703c38mr594417966b.31.1728980726242;
        Tue, 15 Oct 2024 01:25:26 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v10 2/2] x86/boot: Improve MBI2 structure check
Date: Tue, 15 Oct 2024 09:25:13 +0100
Message-Id: <20241015082513.2477806-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241015082513.2477806-1-frediano.ziglio@cloud.com>
References: <20241015082513.2477806-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Tag structure should contain at least the tag header.
Entire tag structure must be contained inside MBI2 data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
Changes since v6:
- compare against total_size every time to avoid overflows.

Changes since v7:
- check for tag type being MULTIBOOT2_TAG_TYPE_END before checking
  tag size. This allows caller to not fill full tag (type field is
  before size field).

Changes since v9:
- fixed tag order.
---
 xen/arch/x86/efi/mbi2.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/efi/mbi2.c b/xen/arch/x86/efi/mbi2.c
index 55a1777483..d2f0f0ee61 100644
--- a/xen/arch/x86/efi/mbi2.c
+++ b/xen/arch/x86/efi/mbi2.c
@@ -13,6 +13,7 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     EFI_HANDLE ImageHandle = NULL;
     EFI_SYSTEM_TABLE *SystemTable = NULL;
     const char *cmdline = NULL;
+    const void *const mbi_raw = (const void *)mbi;
     bool have_bs = false;
 
     if ( magic != MULTIBOOT2_BOOTLOADER_MAGIC )
@@ -21,8 +22,10 @@ efi_multiboot2_prelude(uint32_t magic, const multiboot2_fixed_t *mbi)
     /* Skip Multiboot2 information fixed part. */
     tag = _p(ROUNDUP((unsigned long)(mbi + 1), MULTIBOOT2_TAG_ALIGN));
 
-    for ( ; (const void *)tag - (const void *)mbi < mbi->total_size &&
-            tag->type != MULTIBOOT2_TAG_TYPE_END;
+    for ( ; (const void *)(tag + 1) - mbi_raw <= mbi->total_size &&
+            tag->type != MULTIBOOT2_TAG_TYPE_END &&
+            tag->size >= sizeof(*tag) &&
+            (const void *)tag + tag->size - mbi_raw <= mbi->total_size;
           tag = _p(ROUNDUP((unsigned long)tag + tag->size,
                    MULTIBOOT2_TAG_ALIGN)) )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 08:25:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 08:25:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819031.1232337 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0cs0-0003wr-0m; Tue, 15 Oct 2024 08:25:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819031.1232337; Tue, 15 Oct 2024 08:25: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 1t0crz-0003wI-Td; Tue, 15 Oct 2024 08:25:31 +0000
Received: by outflank-mailman (input) for mailman id 819031;
 Tue, 15 Oct 2024 08:25: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=tju4=RL=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0cry-0003el-Hv
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 08:25:30 +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 0767adbb-8acf-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 10:25:26 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c9404c0d50so5240665a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 01:25:26 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29749663sm41590566b.64.2024.10.15.01.25.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 01:25:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0767adbb-8acf-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728980726; x=1729585526; 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=JPO73Ee+gUhp/QdwEt6rbkUZv+DPxFBuM2HxdwBJt8g=;
        b=YK7bXFlPcrFqHVQphJJs0eBs2UzaEwmg4u4RlgW8ScV1FP3Mom1wowtS7xGySmOmv0
         bcKGd/G6QNpaK3O4aPfQHN+IfbOB1/hCzABWB5OVFAuF6quO6zOKf07JmRZuJv0d4Yfz
         3DCm8XfaUTYOYh0a0djQatTZFHroxYPoUMCuc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728980726; x=1729585526;
        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=JPO73Ee+gUhp/QdwEt6rbkUZv+DPxFBuM2HxdwBJt8g=;
        b=Gk6keVAg7nYVaMY3WIp2/ZdalRLoPPE0C+3X8tkSxd/vseLO5mcIARWcO7EXCMxL78
         iRRaJd9NBAHgS/lUGGTH55KNp9tZAhLmtP4p/yjlAYBWII5udiDtb6BR12K0gYCNQDV2
         FqWdaiCIhDWx4TfG4BfSBCMzCas4camStzXtVPjbpI+j/pXE21XsEvN6liPOgU0+xQD4
         foVma7uF7N1czLPnxyVtUo4pU1x0Jhli2XbYdLX1Rtjse34feJbXwL23xr5lOnudNt9h
         LLIsk5RsaC7K6XGHUiR8HAY0YKFHPtY6TUh7xv3SlRDKMBKO+LFtCQ2gGhUtBYJKwM8l
         xzUw==
X-Gm-Message-State: AOJu0YwfAA6CHpa/dDgWzGGfRyk2C/62rUE/iuoAaGm+1qRwIqTevBYL
	VGT9kNzvGCpjdpn6FBHvxSFKL8vcLZKPmuakA6qlM1ElPjuniWFu9AGIgzd4+MPL6c/K0Pb81Eq
	6
X-Google-Smtp-Source: AGHT+IEpcEqQDW+bs96iXMea6FXPIQJxU+sMVnJveA9vSV+igd1zzb17GQIiKtbznJ5/DbwHk3BbJQ==
X-Received: by 2002:a17:907:940e:b0:a99:4152:1cb4 with SMTP id a640c23a62f3a-a99b9585801mr1221023466b.42.1728980725546;
        Tue, 15 Oct 2024 01:25:25 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.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 v10 1/2] x86/boot: Align mbi2.c stack to 16 bytes
Date: Tue, 15 Oct 2024 09:25:12 +0100
Message-Id: <20241015082513.2477806-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241015082513.2477806-1-frediano.ziglio@cloud.com>
References: <20241015082513.2477806-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Doing previous testing with an Alder Lake Intel machine with the
"x86/boot: Improve MBI2 structure check" commit test started to fail.
Removing the commit makes the tests succeed however there was not apparent
reason (looking at the code) for the failure.
So I instrumented code to output the structure and tested code with
this extracted data with and without the mentioned commit and results
were the same.
Compiled assembly code from lab was also fine beside not keeping
the 16-byte alignment for the stack.
Turning on stack alignment solve the problem on Alder Lake machine.

Fixes: eb21ce14d709 ('x86/boot: Rewrite EFI/MBI2 code partly in C')
Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
Changes since v8:
- added "Fixes:" line;
- typo in commit message: Adler -> Alder;
- add ".init" to mbi2.o;
- reduce difference.

Changes since v9:
- minor commit message fix;
- added Reviewed-by.
---
 xen/arch/x86/efi/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/efi/Makefile b/xen/arch/x86/efi/Makefile
index 7e2b5c07de..c6678652fc 100644
--- a/xen/arch/x86/efi/Makefile
+++ b/xen/arch/x86/efi/Makefile
@@ -9,11 +9,11 @@ $(obj)/%.o: $(src)/%.ihex FORCE
 $(obj)/boot.init.o: $(obj)/buildid.o
 
 $(call cc-option-add,cflags-stack-boundary,CC,-mpreferred-stack-boundary=4)
-$(addprefix $(obj)/,$(EFIOBJ-y)): CFLAGS_stack_boundary := $(cflags-stack-boundary)
+$(addprefix $(obj)/,$(EFIOBJ-y) mbi2.init.o): CFLAGS_stack_boundary := $(cflags-stack-boundary)
 
 obj-y := common-stub.o stub.o
 obj-$(XEN_BUILD_EFI) := $(filter-out %.init.o,$(EFIOBJ-y))
 obj-bin-$(XEN_BUILD_EFI) := $(filter %.init.o,$(EFIOBJ-y))
-obj-bin-y += mbi2.o
+obj-bin-y += mbi2.init.o
 extra-$(XEN_BUILD_EFI) += buildid.o relocs-dummy.o
 nocov-$(XEN_BUILD_EFI) += stub.o
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 09:11:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 09:11:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819063.1232352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0daK-0002wm-Bd; Tue, 15 Oct 2024 09:11:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819063.1232352; Tue, 15 Oct 2024 09:11: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 1t0daK-0002wf-8E; Tue, 15 Oct 2024 09:11:20 +0000
Received: by outflank-mailman (input) for mailman id 819063;
 Tue, 15 Oct 2024 09:11: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=XdMQ=RL=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t0daJ-0002wZ-3D
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 09:11: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 6f917a58-8ad5-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 11:11:17 +0200 (CEST)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2fb51e00c05so23259811fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 02:11:17 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2fb5d1941d7sm1105181fa.77.2024.10.15.02.11.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 02:11:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6f917a58-8ad5-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1728983477; x=1729588277; 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=4rqPBWUwF7kPM9s+Vi2i7Q4ce8s5jgHA+VANq894Tkk=;
        b=AdFcf1I0Eag1lRaYiJ1AUrAKTcvKNrQZxW7pk2IfUaEi+uk+C6C1LSdOGWpp02OdM8
         GIDuNWLUPP5Ax58qHkavE43/XNeqhZDqB6asYzsaECTxk9N9OGQSjadvHZsJFCrUuokJ
         lP0dL9JVw1+f8fJMCEt7j5w9wCFsdvovRmQBlnhwsJIKi+xENT4LW7UCHQK4GvWw+dDo
         zQ5GtTSvxPT8dKx/LjSZArG/TR90dzCQqBLw6fM9jHAKuD3eE5lisM2wLR1idUtdavHo
         0bHS75pb3h5ssKH2lyRvI+RO70UnzO/HJTNGVwLIxpcXOOPUFIMQ2PwGmN8r7tjndldM
         KDMQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728983477; x=1729588277;
        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=4rqPBWUwF7kPM9s+Vi2i7Q4ce8s5jgHA+VANq894Tkk=;
        b=HYy2wzHz7SfJ637kYH6c1JppbMFfJF2q9Xiea0RFfrIRHUS48/81QCtiM+zJH+HS/j
         JHRPJC8tesJlYYZrdvz0+nQslk/GEcPFBf4QA/weuXuGiEz+BRm5F0XgxztIQEkhadGv
         Dx+0K4kdg543I+YHIpDuntLggTFdIBB7Nx4asAQm3fSN55ungZ5wN2dNUe3xamnokfX8
         kT5dWIBpqy5Ne7GgJUG8SMqWotrVwmmKpFvxAeGR6CvXl/FOY99+/NzWfE/PfR8f6Tsg
         IffeGXb7ZrZPVjrIV1s05d/0QZIiuDxvTbVY2KX0OkJYg+M1y/qdZMxgD0BB5E9xCED6
         Pc2w==
X-Forwarded-Encrypted: i=1; AJvYcCXh9V0k0pfvoIkG48TXl+Gsqimvyi+gCjyh6Yc0OvNmJG5KL8IuxxiufwNGV3m41gwVA0Vm5UGLfWw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw3sQCH3fjHZe/MAQBqblsE7i9mpd9VPSP8dtFTK9POLwGkvKPz
	Zc9HQArLerYOeaFt7s0CYfK/ixzbCS1XDb6JLm5ijfKdIViuPWwuKIR8dQ==
X-Google-Smtp-Source: AGHT+IGxM2AeS8AliK2w1IWNXJPw/Zj1TukNgzoWnyeYW8pwmF+L1Q9SidvXocmYDiwgsqG6nJd66w==
X-Received: by 2002:a2e:b992:0:b0:2fb:256a:59f9 with SMTP id 38308e7fff4ca-2fb3f1b7812mr47288081fa.22.1728983476976;
        Tue, 15 Oct 2024 02:11:16 -0700 (PDT)
Message-ID: <fce8372ee3bac4a0a3c6de58d7c7757df6e6d0a3.camel@gmail.com>
Subject: Re: [PATCH v2 1/2] xen/riscv: initialize bootinfo from dtb
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Tue, 15 Oct 2024 11:11:15 +0200
In-Reply-To: <7e3399d7-f41c-4696-919b-dc7f57168bf9@suse.com>
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
	 <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.git.oleksii.kurochko@gmail.com>
	 <7e3399d7-f41c-4696-919b-dc7f57168bf9@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-15 at 08:33 +0200, Jan Beulich wrote:
> On 10.10.2024 17:30, Oleksii Kurochko wrote:
> > --- a/xen/arch/riscv/setup.c
> > +++ b/xen/arch/riscv/setup.c
> > @@ -50,6 +50,8 @@ void __init noreturn start_xen(unsigned long
> > bootcpu_id,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 _end - _start, false) )
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 panic("Failed to add B=
OOTMOD_XEN\n");
> > =C2=A0
> > +=C2=A0=C2=A0=C2=A0 BUG_ON(!boot_fdt_info(device_tree_flattened, dtb_ad=
dr));
>=20
> We generally aim at avoiding side effects in BUG_ON() (or ASSERT()).
> With
>=20
> =C2=A0=C2=A0=C2=A0 if (!boot_fdt_info(device_tree_flattened, dtb_addr))
> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 BUG();
>=20
> Acked-by: Jan Beulich <jbeulich@suse.com>
>=20
> I can make the adjustment while committing, if desired.
It would be great if these changes could be made during the commit.

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 09:23:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 09:23:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819070.1232361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0dmQ-0004gu-CC; Tue, 15 Oct 2024 09:23:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819070.1232361; Tue, 15 Oct 2024 09:23: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 1t0dmQ-0004gn-9V; Tue, 15 Oct 2024 09:23:50 +0000
Received: by outflank-mailman (input) for mailman id 819070;
 Tue, 15 Oct 2024 09:23: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 1t0dmO-0004gd-8w; Tue, 15 Oct 2024 09:23: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 1t0dmN-0006Dc-EE; Tue, 15 Oct 2024 09:23: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 1t0dmN-0003mG-5H; Tue, 15 Oct 2024 09:23:47 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0dmN-0007da-4n; Tue, 15 Oct 2024 09:23: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=qDsE2rjQeONj/tHTP95LptTM9edlaIDX0dOfQc5MjIU=; b=TsgZIPQ0YyJEMFMxDhO6pWuORX
	plk1sO+/rEOWEdmTubldMQRbuNbN27btijhCfT13MjymzwHHTKHGClttTNVYuu8cni6fNcBKwXfnx
	joLSgnaBJVN9C58KSasyJMNNx/dRR6I4w/mK5LxLj9P3w8TFvlqKymAK3t6CbmDNRJok=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188091-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188091: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=081cf576a226e70ce4134dda19baf977d0b8bc64
X-Osstest-Versions-That:
    ovmf=21767dcf4e04ade9e679f8562513da8ceedf19ec
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 09:23:47 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 081cf576a226e70ce4134dda19baf977d0b8bc64
baseline version:
 ovmf                 21767dcf4e04ade9e679f8562513da8ceedf19ec

Last test of basis   188083  2024-10-14 15:15:23 Z    0 days
Testing same since   188091  2024-10-15 07:43:27 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    


------------------------------------------------------------
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
   21767dcf4e..081cf576a2  081cf576a226e70ce4134dda19baf977d0b8bc64 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 11:19:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 11:19:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819094.1232375 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0fZk-0000jS-K1; Tue, 15 Oct 2024 11:18:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819094.1232375; Tue, 15 Oct 2024 11:18: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 1t0fZk-0000jL-G1; Tue, 15 Oct 2024 11:18:52 +0000
Received: by outflank-mailman (input) for mailman id 819094;
 Tue, 15 Oct 2024 11:18: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=kMn8=RL=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1t0fZj-0000ix-6g
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 11:18:51 +0000
Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com
 [2607:f8b0:4864:20::b35])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3eaee4f1-8ae7-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 13:18:47 +0200 (CEST)
Received: by mail-yb1-xb35.google.com with SMTP id
 3f1490d57ef6-e290d5f83bcso4274597276.0
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 04:18:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3eaee4f1-8ae7-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728991125; x=1729595925; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=B57zRo3dL3gMwH/o0SQ/hKHRoaP6r7aTt/ngETkQMw4=;
        b=jFw0xFY3K9XK5iqL9xEsCGnlji6rVacUly+ADnyqXWYJ8sBIC+dMtDwaZ6T1K1jvho
         iG/zSTWWfSe9+sCmr2TJnwrQkV6HV81IAtxeCz4V3h4FXhbpqRWc7nPyt+EMXLj9Xjs7
         8z8TeUbiCq76XIV7XkVsh4+0eebIoy6yCwRXU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728991125; x=1729595925;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=B57zRo3dL3gMwH/o0SQ/hKHRoaP6r7aTt/ngETkQMw4=;
        b=dod+cm5T1m2JkVA/U2PZrkkBV93HIVg9zP6LUnXGJjjmYQ3GQ/HT8a0gIAAkrRcJs9
         v0ZvrCVwar6iib47rEt2SQaWHuNMOGH0ga4RuyB9/wQgswyXdgZ+fQNuVUN/4ymgL2ni
         dgJ3rzXhCBxNoLOremA/vuk9uxBak05cV0zgLmMa/8+YA7Mu1hJBHCedq67qnID3M6/w
         ciGflmz7sm+NmCV3jqiFEScS6Py9vNI7Q+bIsENdF744G1FktOOSqVKwU8dj8PqX9G49
         Pl+zUIRHXVWhcSQQfrCxshiHxZGZwrq06YTK0vSMynQYnrXO8MBLll3CgOLFYJOBdQRH
         Oc4w==
X-Gm-Message-State: AOJu0YxaEDbwaNm63fdO/9+INWb3gs6E+5z2lq33z2NF2Ysaz3RWPdtp
	1j+UrovvF8eMYLkZsgL4T55SVYeKSh4OPI3QVMYaJ18wuDk/ksN8lo4nEpNHoEYCONot49WBjwu
	0pgl70Yp0k35Z9Sl7+H8MSfYSkJNhUPOttdfo3jRgYKTA9SW8
X-Google-Smtp-Source: AGHT+IEZNHHfcX09Ez+30cbBr/aBNnMsvokMusnBr9a1eBSzgzxeC5T+vYBmcnW27TThsoIWBYj2SRQQSCvjrzUGr4E=
X-Received: by 2002:a05:6902:2188:b0:e28:ea88:bacd with SMTP id
 3f1490d57ef6-e2931b5ddc0mr8852456276.34.1728991124836; Tue, 15 Oct 2024
 04:18:44 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 15 Oct 2024 12:18:07 +0100
Message-ID: <CAO-mL=xVdA_eb5jormSmA-JVQ2fi5D+JsJb3dmvNc41zzKekUQ@mail.gmail.com>
Subject: XEN PROJECT MEETUP: SIGN UP TODAY!
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Content-Type: multipart/related; boundary="000000000000d2f99e0624821d2b"

--000000000000d2f99e0624821d2b
Content-Type: multipart/alternative; boundary="000000000000d2f99d0624821d2a"

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

[image: Xen Project Meetup (1).png]
<https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8AP+Haft0+RwozJMKojY5lVs=
7waL-xDY/>*Register
using the link here*
<https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8AP+Haft0+RwozJMKojY5lVs=
7waL-xDY/>

*Agenda*

*Talk:* *The journey towards using Xen in embedded systems*
*Speaker: **Julien Grall*
*About:* *Julien Grall is a kernel/hypervisor engineer in the Amazon EC2
team. Julien has been involved in Xen community since 2012. Today he is a
Xen Project committer, and he maintains Xen on Arm.*

*Talk:* *Xen on the Arm=C2=AE RD-1-AE*
*Speaker: **Luca Fancellu*
*About:* *Luca Fancellu is a Staff Software Engineer in the software
division at Arm, working on the latest designed Automotive platforms,
contributing on the Xen Hypervisor from a couple of years. Luca has
experience in safety-critical and embedded software for the Automotive
sector, you will probably find most of the products he worked on running on
wheels right now.*

Expect free food, soft drinks and a catch-up with the community.

See you there!

Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>

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

<div dir=3D"ltr"><div dir=3D"ltr"><img src=3D"cid:ii_m1t87xjg1" alt=3D"Xen =
Project Meetup (1).png" width=3D"362" height=3D"362" style=3D"outline:0px;m=
argin-right:0px"><div><div><a href=3D"https://cryptpad.fr/form/#/2/form/vie=
w/I6uugZHhi6E8AP+Haft0+RwozJMKojY5lVs7waL-xDY/" target=3D"_blank"></a><a hr=
ef=3D"https://cryptpad.fr/form/#/2/form/view/I6uugZHhi6E8AP+Haft0+RwozJMKoj=
Y5lVs7waL-xDY/" target=3D"_blank"><b>Register using the link here</b></a><b=
r></div><div><b><br></b></div><div><b><u>Agenda</u></b></div><div><br></div=
><div><div><b>Talk:</b>=C2=A0<i>The journey towards using Xen in embedded s=
ystems</i></div><div><b>Speaker:=C2=A0</b><i>Julien Grall</i></div><div><b>=
About:</b>=C2=A0<i>Julien Grall is a kernel/hypervisor engineer in the Amaz=
on EC2 team. Julien has been involved in Xen community since 2012. Today he=
 is a Xen Project committer, and he maintains Xen on Arm.</i></div></div><d=
iv><br></div><div><b>Talk:</b>=C2=A0<i>Xen on the Arm=C2=AE RD-1-AE</i></di=
v><div><b>Speaker:=C2=A0</b><i>Luca Fancellu</i></div><div><b>About:</b>=C2=
=A0<i>Luca Fancellu is a Staff Software Engineer in the software division a=
t Arm, working on the latest designed Automotive platforms, contributing on=
 the Xen Hypervisor from a couple of years. Luca has experience in safety-c=
ritical and embedded software for the Automotive sector, you will probably =
find most of the products he worked on running on wheels right now.</i></di=
v><div><br></div><div>Expect free food, soft drinks and a catch-up with the=
 community.</div><div><br></div><div>See you there!=C2=A0</div></div><div><=
div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signature=
"><div dir=3D"ltr"><div><br></div><div>Kelly Choi<br></div><div><div style=
=3D"color:rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(=
136,136,136)"><a href=3D"https://xenproject.org/" target=3D"_blank">Xen Pro=
ject</a><br></div></div></div></div></div></div>
</div>

--000000000000d2f99d0624821d2a--
--000000000000d2f99e0624821d2b
Content-Type: image/png; name="Xen Project Meetup (1).png"
Content-Disposition: inline; filename="Xen Project Meetup (1).png"
Content-Transfer-Encoding: base64
Content-ID: <ii_m1t87xjg1>
X-Attachment-Id: ii_m1t87xjg1

iVBORw0KGgoAAAANSUhEUgAABLAAAASwCAYAAADrIbPPAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAE
9mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczpt
ZXRhLyc+CiAgICAgICAgPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5
LzAyLzIyLXJkZi1zeW50YXgtbnMjJz4KCiAgICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJv
dXQ9JycKICAgICAgICB4bWxuczpkYz0naHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8n
PgogICAgICAgIDxkYzp0aXRsZT4KICAgICAgICA8cmRmOkFsdD4KICAgICAgICA8cmRmOmxpIHht
bDpsYW5nPSd4LWRlZmF1bHQnPlhlbiBQcm9qZWN0IE1lZXR1cCAtIDE8L3JkZjpsaT4KICAgICAg
ICA8L3JkZjpBbHQ+CiAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICA8L3JkZjpEZXNjcmlwdGlv
bj4KCiAgICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICAgICAgICB4bWxuczpB
dHRyaWI9J2h0dHA6Ly9ucy5hdHRyaWJ1dGlvbi5jb20vYWRzLzEuMC8nPgogICAgICAgIDxBdHRy
aWI6QWRzPgogICAgICAgIDxyZGY6U2VxPgogICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0n
UmVzb3VyY2UnPgogICAgICAgIDxBdHRyaWI6Q3JlYXRlZD4yMDI0LTEwLTAzPC9BdHRyaWI6Q3Jl
YXRlZD4KICAgICAgICA8QXR0cmliOkV4dElkPjM5ZjJiMDdhLTY4MzAtNGYyNi04N2JkLWRlNjc4
YTFiYTA2MDwvQXR0cmliOkV4dElkPgogICAgICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1
ODA8L0F0dHJpYjpGYklkPgogICAgICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3Vj
aFR5cGU+CiAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgPC9yZGY6U2VxPgogICAgICAgIDwvQXR0
cmliOkFkcz4KICAgICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KCiAgICAgICAgPHJkZjpEZXNjcmlw
dGlvbiByZGY6YWJvdXQ9JycKICAgICAgICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20v
cGRmLzEuMy8nPgogICAgICAgIDxwZGY6QXV0aG9yPktlbGx5IENob2k8L3BkZjpBdXRob3I+CiAg
ICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CgogICAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFi
b3V0PScnCiAgICAgICAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4K
ICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhIChSZW5kZXJlcik8L3htcDpDcmVhdG9yVG9v
bD4KICAgICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgICAKICAgICAgICA8L3JkZjpSREY+
CiAgICAgICAgPC94OnhtcG1ldGE+KKRa6gAFRl9JREFUeJzs2DEBACAMwDDAv+fhgJceiYLe3TMz
CwAAAACizu8AAAAAAHgxsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgz
sAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOw
AAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AA
AAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAA
AABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAA
AEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAA
SDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABIM7AAAAAASDOwAAAAAEgzsAAAAABI
uwAAAP//7N3Zc5xndt/x7/OuvXdjJ8AFoihRa0myNGOPy3FSSezkwr7xTSr/Yi5yF5fLdiWZSJ6R
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
+O8qxtsMC2RFiigdIi0SoCgOhvkO4t3xmvYYT9tRVKAYr0N3UDUXD+ao7N/e0jxo0oAQCkrqHBJM
RHRIBQoM4l2EaQ95Pu3GQQEhBFb9C7i0+DOcbfwYSnKGIBERzR8GWERE9BTioHVECg2abqDAd7cY
Onpt3EKY4+mVUWW1lhQSShrf+xPlfxeQgBAMr4iIjqAocvTjbYTZcKr5hbqyULOWcbL+A5yuf4wF
9ySk5OUBERHNJ75CERHRU31TMQVAqD/7/5pkewkR0euQFxm60RbCdHCk28nxcgxLuahabTTsdbTd
U1irXkbDXoepnJd0xERERNNjgEVERERE9IYoUKAocqAAbM2Hb7SQ5jEggKIokBcZ8iKDJvVxlSsg
oWAoG6bmwtFrqJiLaHun0XZPoWGvwdGr4IxBIiKadwywiIiIiIjeFEU5X3Ctcgmm5mF3dA974QNI
IZHm0XjL7AAVqw1NGBBCwlR2GVY5G6jbq6hZy9CEflBpS0RE9CZggEVERERE9IYQopxRWLWWIIWC
pVw4ehVSKCR5iCDtI0h6qNsr0KRZVl9pFlrOcVTNNhy9xvCKiIjeSKIoisknPxIRERER0StVFDmS
PEKcBYiyIaJ0AAGBrEiR5BHSLIKlV6CEgoCEkhocvQZDOdCkAfmUuYZERETzjgEWERERERERERHN
NdYOExERERERERHRXGOARUREREREREREc40BFhERERERERERzTUGWERERERERERENNcYYBERERER
ERER0VxjgEVERERERERERHONARYREREREREREc01BlhERERERERERDTXGGAREREREREREdFcY4BF
RERERERERERzjQEWERERERERERHNNQZYREREREREREQ01xhgERERERERERHRXGOARURERERERERE
c40BFhERERERERERzTUGWERERERERERENNcYYBERERERERER0VxjgEVERERERERERHONARYRERER
EREREc01BlhERERERERERDTXGGAREREREREREdFcY4BFRERERERERERz7f8DAAD//+zdeXyM1/4H
8I+ICBJJZClCbW1dJJRauthCVIOgthRBgtZV7SUu115tLqGklmqVaJQbuSJXSCzZ7NEEsdwkJHZC
EklMlknIYrL9/sjL/PrMM0lmi5lbn/fr5fVyzjzPOWdmnnmY75zzPQxgERERERERERGRQWMAi4iI
iIiIiIiIDBoDWEREREREREREZNAYwCIiIiIiIiIiIoPGABYRERERERERERk0BrCIiIiIiIiIiMig
MYBFREREREREREQGjQEsIiIiIiIiIiIyaAxgERERERERERGRQWMAi4iIiIiIiIiIDBoDWERERERE
REREZNAYwCIiIiIiIiIiIoPGABYRERERERERERk0BrCIiIiIiIiIiMigMYBFREREREREREQGjQEs
IiIiIiIiIiIyaAxgERERERERERGRQWMAi4iIiIiIiIiIDBoDWEREREREREREZNAYwCIiIiIiIiIi
IoPGABYRERERERERERk0BrCIiIiIiIiIiMigMYBFREREREREREQGjQEsIiIiIiIiIiIyaAxgERER
ERERERGRQWMAi4iIiIiIiIiIDBoDWEREREREREREZNAYwCIiIiIiIiIiIoPGABYRERERERERERk0
BrCIiIiIiIiIiMigMYBFREREREREREQGzVjfAyAiIvqzyczMREpKirxsZGQEJycnPY6o/hQXFyMl
JQUWFhZ466230KBBA72MIysrC8nJyYK6oUOH6mUsRERERKR7DGARERHpWHR0NDw8POTlpk2boqio
SH8Dqifh4eGYNWsWsrKyAADOzs4ICgqCtbX1Kx/LqVOn4O7uLqirqqp65eMgIiIiovrBABYR0f+I
srIy3Lx5E0lJScjMzERBQQFKSkpgZmYGMzMztGnTBl26dMFf/vIXmJqa6nu49CcnlUrh4eEBiUQi
rzt58iSWL1+OnTt36nFkVN8qKiqUBgcbNGiAhg0b6qVvIyMjGBkxMwYREdGfGQNYREQGrKKiAmFh
YTh06BCOHTuGgoKCOs8xNzeHs7MzxowZg8mTJ8PExOQVjJReNwkJCYLg1Utnz5599YOhV8rR0RE3
b95U+ti9e/fQqVOneum3oKAAbdq0wfPnz0WPjRo1CkePHq2XfomIiMgw8KcqIiIDVFVVhYCAAHTv
3h3jx49HYGCgSsErAHj27BkOHz4MDw8PdO7cGTt27OBSKtI5CwsLterp9RAUFFRvbYeEhCgNXhER
EdHrgQEsIiIDk5aWBhcXF0yfPl2QCFwTqampmDt3LlxcXJCdna2jERIBPXr0wMCBA0X1n3/+uR5G
Q4aiPgNY9dn266iiogJ3795FWFgYZDKZvodDRERUJy4hJCIyIPHx8Rg9enSNwSYTExM4ODiga9eu
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
RKRpOs+fP3/e1oMgIiIi0iYlJSXIzc3F3bt3UV1djaqqKjx58gQdO3aERCJB9+7dYWdnBwcHBxgY
GLT1cImIiIjeeAywiIiIiIiIiIhIq7EGFhERERERERERaTUGWEREREREREREpNUYYBERERERERER
kVZjgEVERERERERERFqNARYREREREREREWk1BlhERERERERERKTVGGAREREREREREZFWY4BFRERE
RERERERajQEWERERERERERFpNQZYRERERERERESk1RhgERERERERERGRVmOARUREREREREREWo0B
FhERERERERERaTUGWEREREREREREpNUYYBERERERERERkVZjgEVERERERERERFqNARYRERERERER
EWk1BlhERERERERERKTVGGAREREREREREZFWY4BFRERERERERERajQEWERERERERERFpNQZYRERE
RERERESk1RhgERERERERERGRVmOARUREREREREREWo0BFhERERERERERaTUGWEREREREREREpNUY
YBERERERERERkVZjgEVERERERERERFrt/wAAAP//7N13VBTn1wfwr1RBugiKqIAYbDQLdkEEGxFN
UMAWKWoUNbYkdn92QhIMJrYoYgUlgkoUKzbAAogINmLDDoKKgiJ1ef/gMO/MsmV2AUG8n3M8Z591
2i67z+zcuc99KIBFCCGEEEIIIYQQQuo1CmARQgghhBBCCCGEkHqNAliEEEIIIYQQQgghpF6jABYh
hBBCCCGEEEIIqdcogEUIIYQQQgghhBBC6jUKYBFCCCGEEEIIIYSQeo0CWIQQQgghhBBCCCGkXqMA
FiGEEEIIIYQQQgip1yiARQghhBBCCCGEEELqNQpgEUIIIYQQQgghhJB6jQJYhBBCCCGEEEIIIaRe
owAWIYQQQgghhBBCCKnXKIBFCCGEEEIIIYQQQuo1pbo+AEIIEefq1avMYxMTE+jr69fh0ZDalJ+f
j//++49pW1paQlVVtQ6PiEiSmZmJ58+fAwCUlZVhbW1dx0dE6hvqv4k01O8TQgiRVaPy8vLyuj4I
QggRpVGjRszj7du3w8fHpw6PhtSm8+fPY8CAAUz73r17MDc3r8MjIpL4+/tj0aJFAABjY2M8ffq0
jo+I1DfUfxNpqN8nhBAiK8rAIuQLU1xcjA0bNjDt3r17o2fPnjJt48KFC0hOTgYAaGpqYvLkyTKt
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
wk5nrq+vL5OgNr/rsTAPLP6wMq4Z8UpKfHw8Hjx4gJiYGDx79gwPHjwQcGNVVtj3RlaxQ/7r/Pbt
W04uk9JmUGEjzcSntFm8eDHhBdGoUSOmLaakpGD+/PlShVay7wlQZNUvTlPOFS0tLWaiz8U7SlNT
EyYmJlKdg40s96NSpUpwdHRkVjrT09MRGRmJc+fO4fjx48TAfe3aNfTr1w+RkZFCB4uyuGYaGhoy
t+EhQ4bA3d2d6Sf2798vVDS3GHb4oKmpKbp37y5yW/a1yMnJgZeXl1R1YxuLuIY882cKkyefP38m
DBey9uvm5uaMhtibN29QWFjIOcxBWWFrKmpoaMjd26Ys2pI42P0MV08z/pcuZVr8KG1K87kUhq2t
LaZNm4bNmzcDENTNGT16tEwZ/Nj3uizGfmVqQ4mJibh79y5iYmIQGxuL+/fvS71IJgphSR+4UFKx
Zi7IomWqoqKCJk2aICoqCgB3EeiSjO1cYeuqyTqmNWvWjLNXGTvZSVxcHL59+yYxQuXatWvM5zp1
6ojURlOmcUKZnlVzc3OpogE2bNgAX19fxvHh7t27GDZsGC5evCh0rvLnzx9MmTKFMdIZGxvD19dX
LnWXBX5vN1n1bIspiedrxYoVCe1kLsiS3dbMzAzTp0/Hxo0bie+7d++OQYMGSX08eUINWHKA/SIq
a0pNfs0BYbH9/Jb7kgrIiePdu3fYsWMHjh8/LlaI0traGp8/f5bL6nNpwK6XrLoOXO6NMNi6FuWV
+/fvE1nrOnbsiKtXr6Jjx45MGuf9+/djzJgxsLe353RM/hWX4rTYpYky6MLo6elhwIABGDBgAPz9
/REQEIBVq1Yxg+CdO3fg5+eHJUuWCOxbFtdMT09P5nBjXV1dODs7Mynujx07hk2bNgnV9fn9+zfC
w8OZsqurq9jzsp/pV69eYfXq1TLVURpKU2eC3/NO1rbKrmN2djays7NLrNFQ1rDvdfXq1aUOH5Tm
+IpqS+Jgh0Xwh4qIgn8eoExCsKVNWei/eHt748SJEwJi64aGhjK3H/a9LovQmLJuQ2lpaQgODkZY
WJjYBDa1atWCnp6eVJ5GbPhD/LjCVY+uJMja77PnmVyNIyUZ27nCnrPI+pxK47XVtWtXNG7cGK9f
vwaPx4OPj49YYfYvX74whmgAYl/GlWmc4F88L0/9vaamJpYtW4b8/HysXLkSQFGinyNHjgiV3lm2
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
GBkZoW/fvti6dSsSExOrveBb23XR19fHokWLkJycjJkzZ8LGxkZh35YtW2L27NlISUlBcHCwVkUk
XcXVJVXuP3sbHBwccPHiRezatQteXl4KdxEaGhpiwIAB2L9/P+Lj49Uq0AQHB6Nbt25Ce8qUKRg4
cKCkcpRSXCIiejfwCCEREVEt8+DBA9y4cQMZGRkoKCiAiYkJbGxs4OjoqLRoJU9OTg4yMjJgb2+v
8FJzqUtPT8eNGzeQlpaGV69eQV9fH/Xr10erVq3g5OQkukdMVTW1LiUlJUhOTsbNmzeRk5MDPT09
WFpaokuXLujUqZPCX/C1pau476KsrCwkJiYiNTUV+fn5MDMzQ8uWLeHs7Cy6F0pdJSUluHv3LszN
zZUWJHWZo1TjEhFR3cQCFhERERERERERSRr//EZERERERERERJLGAhYREREREREREUkaC1hERERE
RERERCRpLGAREREREREREZGksYBFRERERERERESS9v8AAAD//+zYsQAAAADAIH/raewojAQWAAAA
AGsCCwAAAIA1gQUAAADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABr
AgsAAACANYEFAAAAwJrAAgAAAGBNYAEAAACwJrAAAAAAWBNYAAAAAKwJLAAAAADWBBYAAAAAawIL
AAAAgDWBBQAAAMCawAIAAABgTWABAAAAsCawAAAAAFgTWAAAAACsCSwAAAAA1gQWAAAAAGsCCwAA
AIA1gQUAAADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABrAgsAAACA
NYEFAAAAwJrAAgAAAGBNYAEAAACwJrAAAAAAWBNYAAAAAKwJLAAAAADWBBYAAAAAawILAAAAgDWB
BQAAAMCawAIAAABgTWABAAAAsCawAAAAAFgTWAAAAACsCSwAAAAA1gQWAAAAAGsCCwAAAIA1gQUA
AADAmsACAAAAYE1gAQAAALAmsAAAAABYE1gAAAAArAksAAAAANYEFgAAAABrAQAA///s3V2MZdl5
1vH/u9be56s+urqrv3smhpmxx4Mh9jA2M7bHduCSG24RGC6RkIiUO4QESLlBCCQCEgiuzFVAQnKE
QLEEln1DJJLYURw5cdBYYDu2x2P3zHRX1fk+e62Xi7XOPtUdB+G4u6fG8/wk9+mqOrXPPlWevnj0
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
jlZBYfxl9O3M/eptlvznXVqFRDOq91hA8YlYPloERVG47rrreP311wEaFLAA7r//flRV5X//93+p
rq6murqaDz74oNEYRnfddVe9VgMuQkJCmD17NuPHjzcW2Y1x9OhR3nrrLRYtWsTbb7/tYSXgLcOH
D2fFihXcddddhgvhxo0bG7XESktL48MPP2y03n79+nH33XcbC8kff/zRI+C4i88//9wjgD7AgAED
WLVqFdOmTSM7OxuANWvWGE/q62PQoEEsW7aMgICARtt1ueLv78+qVau4/fbbDWuYHTt2sGPHjgaP
SUhIYOHChVxzzTWXqpmXJS01X1riHveWgIAAXnjhBW67TX/gWlBQUK971/z58/m///u/c/7/8ssv
ExISwpw5c7Db7eTk5PDqq682eD5/f3+ee+45/vznP19QuyMjI1mwYAG/+c1vsNlsHDp0iGnTptVb
dtKkSTz33HMsWLDACBz+4osvAjBr1qx6BawZM2awePFi47749NNP+fTTTz3KLF68mGeeeeYcK7gL
GdPIyEjWrVvH1KlTjdhpGRkZZGRkNDgW8fHxLF261MPy61Li7+/P559/zqRJkwwR68CBAw1a2P32
t7/l7bff5rXXXrtkbUxKSvLYd0/MkJSU5BOwfJwXPhdCH794NE2j7PRp/vzYk2D2p/eI69Ec+hNk
bxbBUkpMFv8WURzqO78QAludFc3h0GM9BYfj0BRKak2NxnVqCIcGbcIEqpCcKK40Ym8pioLZpNIm
JpyikydwOGyGoKcIQdromxl+w30UHj/MV+8/S+Hxg6imM/E1XKbT+l+Bw1ZHxsblxLTtTJuOfZGa
Vq95tVnYOPej5Yx/ZGlpGQ99VMhj+8aw1PxXiomBemOyS8x+gfgFhnD4xCmEoiCEQs8OCQQH+rG/
UMHSgMGcBEL8wO7QkJouCtZVlWOvqzYszRriTCZKMyNunEllnZ0//e0xDh85xicrv2bzth04HA40
CZGh/twwvDORof4IIcjNL6SiovKydYWTSDRNv2cAY9Cl1JCaM2aVEFjMZvJPnuJfH61g49btWMz6
s44JV7VnWM+2+JktnDEyk6hmgaqe0TMNIRKXyCrpFmMhNEg1rNOEECAlXWOTmf2rP2BWTcz/7EVW
b//c2abLcwx9/PJxF1PWrl3baOySe++9l507d3LPPfcQFVV/1kxFURgxYgSfffYZ77zzjhEc+mxW
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
--000000000000d2f99e0624821d2b--


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 12:32:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 12:32:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819145.1232397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0gj2-0002MN-UJ; Tue, 15 Oct 2024 12:32:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819145.1232397; Tue, 15 Oct 2024 12:32: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 1t0gj2-0002MG-Rk; Tue, 15 Oct 2024 12:32:32 +0000
Received: by outflank-mailman (input) for mailman id 819145;
 Tue, 15 Oct 2024 12:32: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=ic8h=RL=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0gj2-0002MA-3E
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 12:32:32 +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 8bbaa088-8af1-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 14:32:30 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-5366fd6fdf1so6200934e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 05:32:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4313f6b1e9esm16631475e9.37.2024.10.15.05.32.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 15 Oct 2024 05:32:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8bbaa088-8af1-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1728995550; x=1729600350; 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=vS+LjnbTt/mPlMKrOUwqveZiLjjuHdKnLgW4MTNUxcE=;
        b=fhoFAa8oQ92otEqjJoDtOJWR015dWkb24AncJaOrt9tXbgbDu5NaYhyzX+wpueKAqe
         uN6CyD4WwxHP/CJLCAicThd8fQY0nr+CV1U9Kg7AucrZOYOLUE2DqU/yALFqJiqVdvDw
         01YhIkcvIYxreTl/hXaYmIhN0r/hJrcMvb7kpevSMQxmpDyTQBoopyI1duSw6+aOt3fu
         K9qJYrb7oi3wNRkeecwI+XXUMuZ6Ub2v4pB6WH8JiH1S4t4ZWVQloWe3w+ipm5nVpqrP
         uiH85n1dP7DL0STKZtfzHyRDYaQ35k/qQbQJ+b82bbtDDl5p/VwvZvmWYg7I8OExXCE1
         sz1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728995550; x=1729600350;
        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=vS+LjnbTt/mPlMKrOUwqveZiLjjuHdKnLgW4MTNUxcE=;
        b=keNXx4cMQX7Gk5mHDbc/5dgE5baMHEu9/ogPzdsbRRtGytd1rN2rItDCc27m4Jrp+e
         /U140NnPyN8zcX3HDseOwx+kZ6n0qlTqo0viSX37FcoWzOp9YCyGbKtnPyQAostGrh7p
         iG/gNsk+QnSQ23QSI4lZ4Z+QlPzDSml3t6dENOxH9+ZG6irD0ThUnXqhzFTXAMg1Qe1U
         D/LkrPsvsNv+oiOQyOr0IOliI2bKv15avlNd3qyWww4dXxMai0GGM6XhllBdGZE5Pur1
         u2JhQCKlw0MQXB4RyprH2fsa8bvE1YoF6I76kb0A0KuUIJ/Z6DlQ/8m1l8VzGMM4bu00
         372w==
X-Forwarded-Encrypted: i=1; AJvYcCXFtSD1KO/KTTLO/ktmvLQl5e66sjnPvz7MjMWS8MSwxJOxgn6nxzWgFDx+eIQwLTirr/MiOYsq2O4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxukS6Ai70crL57FOsDSCzWE6Ko3rwPeO7xUAkuq4+v+CLNGJpu
	9FSuJLG7rpdjs56EI3ARQ+8iiyr5+cL7+oPrbsQTN+rWDJ6QIMOOkI5d+D2B2A==
X-Google-Smtp-Source: AGHT+IFVqS4dgsBaUnz6JIPj4GjS3rNLkLSub2/25TIuk3BWZXfT70lWjAvRMTt0vKUcyS+tRwsS9Q==
X-Received: by 2002:a05:6512:ad5:b0:52e:f2a6:8e1a with SMTP id 2adb3069b0e04-53a03f2d678mr177739e87.29.1728995550183;
        Tue, 15 Oct 2024 05:32:30 -0700 (PDT)
Message-ID: <9ff389f6-874b-4bb1-8685-d1e0e2281c59@suse.com>
Date: Tue, 15 Oct 2024 14:32:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/riscv: initialize bootinfo from dtb
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
 <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.git.oleksii.kurochko@gmail.com>
 <7e3399d7-f41c-4696-919b-dc7f57168bf9@suse.com>
 <fce8372ee3bac4a0a3c6de58d7c7757df6e6d0a3.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: <fce8372ee3bac4a0a3c6de58d7c7757df6e6d0a3.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 15.10.2024 11:11, oleksii.kurochko@gmail.com wrote:
> On Tue, 2024-10-15 at 08:33 +0200, Jan Beulich wrote:
>> On 10.10.2024 17:30, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/setup.c
>>> +++ b/xen/arch/riscv/setup.c
>>> @@ -50,6 +50,8 @@ void __init noreturn start_xen(unsigned long
>>> bootcpu_id,
>>>                            _end - _start, false) )
>>>          panic("Failed to add BOOTMOD_XEN\n");
>>>  
>>> +    BUG_ON(!boot_fdt_info(device_tree_flattened, dtb_addr));
>>
>> We generally aim at avoiding side effects in BUG_ON() (or ASSERT()).
>> With
>>
>>     if (!boot_fdt_info(device_tree_flattened, dtb_addr))
>>         BUG();
>>
>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>
>> I can make the adjustment while committing, if desired.
> It would be great if these changes could be made during the commit.

I've committed it with the adjustment, yet once again I wondered: Why not
panic()?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 12:41:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 12:41:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819165.1232454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0grg-0004WK-6g; Tue, 15 Oct 2024 12:41:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819165.1232454; Tue, 15 Oct 2024 12:41: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 1t0grg-0004WD-47; Tue, 15 Oct 2024 12:41:28 +0000
Received: by outflank-mailman (input) for mailman id 819165;
 Tue, 15 Oct 2024 12:41: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 1t0gre-0004W3-0t; Tue, 15 Oct 2024 12:41: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 1t0grd-0000ts-Li; Tue, 15 Oct 2024 12:41: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 1t0grd-0000OP-6B; Tue, 15 Oct 2024 12:41:25 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0grd-0000cd-5h; Tue, 15 Oct 2024 12:41: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=m5pURmHf0hTzlTbcclynJRL3GrV2heHiDR7+kXYTNlg=; b=HOoqhmgUbVPhsDYEThLr+lGFmz
	3zpW0EK0muFc5+A1YDHCB9lIwMSIN1SfJROWZSkb1Nv2ki1iqUOP+CZTLx2bmxsY8EE82GueuILuY
	AgNJuhhDa+9FUXjjooRrwfpqQLhXc461Iyl2dEe3HoJoLjusihOW2rYw3Nd9Y08zMjAs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188087-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188087: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:host-ping-check-xen:fail:heisenbug
    qemu-mainline:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:guest-localmigrate/x10:fail:heisenbug
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=aa54f5be44be786636a5d51cc1612ad208a24849
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 12:41:25 +0000

flight 188087 qemu-mainline real [real]
flight 188092 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188087/
http://logs.test-lab.xenproject.org/osstest/logs/188092/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-libvirt-vhd 22 leak-check/check         fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt     10 host-ping-check-xen fail pass in 188092-retest
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 18 guest-localmigrate/x10 fail pass in 188092-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt 16 saverestore-support-check fail in 188092 like 187720
 test-armhf-armhf-libvirt    15 migrate-support-check fail in 188092 never pass
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-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-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-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-amd64-amd64-libvirt-qcow2 14 migrate-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                aa54f5be44be786636a5d51cc1612ad208a24849
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   29 days
Failing since        187731  2024-09-17 13:11:20 Z   27 days   47 attempts
Testing same since   188087  2024-10-14 21:41:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Helge Deller <deller@gmx.de>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Junjie Mao <junjie.mao@intel.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-qemuu-debianhvm-i386-xsm                 fail    
 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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 10182 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 12:59:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 12:59:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819177.1232464 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0h9S-0006TB-MU; Tue, 15 Oct 2024 12:59:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819177.1232464; Tue, 15 Oct 2024 12:59: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 1t0h9S-0006T4-JZ; Tue, 15 Oct 2024 12:59:50 +0000
Received: by outflank-mailman (input) for mailman id 819177;
 Tue, 15 Oct 2024 12:59: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=Dl/V=RL=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t0h9R-0006Sy-St
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 12:59:50 +0000
Received: from fhigh-a7-smtp.messagingengine.com
 (fhigh-a7-smtp.messagingengine.com [103.168.172.158])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5aade90d-8af5-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 14:59:47 +0200 (CEST)
Received: from phl-compute-03.internal (phl-compute-03.phl.internal
 [10.202.2.43])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 04ADE11401B2;
 Tue, 15 Oct 2024 08:59:46 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-03.internal (MEProxy); Tue, 15 Oct 2024 08:59:46 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 15 Oct 2024 08:59:44 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5aade90d-8af5-11ef-a0be-8be0dac302b0
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=1728997186;
	 x=1729083586; bh=D+yPD3sJo6UcTsBjzbrUAo9lMQTGJBDkFSmL6ut468c=; b=
	NCXb6mtYCDWZMt9LUJGEaIQ9YEWDNmwZBfP6JkCiysLAh9bMGw6nmgQJWHvrieY/
	22VkMXb4f6rEEGlnMDXB3Fkl7MSwew00NZ991xbn+cnkS5ALX6FMagkYfG4LwFaO
	ndCqRCAeO9zhYyoBgn6Pp828GxRTWDC6LF9F1hs/8Dz8QuY+SMPkt2WkxMKb8kB/
	U/VqdZc1qTQRb4O/QLV5kx7S4C7QDne2wfD7ABAtn7Ex2xa252fBiiqOkNbv9qTA
	/fr37aGsnE52uAuxYhcKmq8/IULqZmlC0JR/9dOkq9HLWC98rmQJsT95AABJ7k2t
	tkxvws57LfC5chQUcWKjNQ==
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=1728997186; x=1729083586; bh=D+yPD3sJo6UcTsBjzbrUAo9lMQTG
	JBDkFSmL6ut468c=; b=nEbgGTPXeXziUXRugREiWVaKcXTLYREbguWDoIsPSCUj
	8t7k2oOvkz5burQ42K4nI0rwSs0KOGf1qVmpMe7sQn2IGcSO9I5QuIytb7UAsHhz
	eBB7eCED7Lfj3eSJzZmtKXFdb2vexTYffeYed3d/sET6ZpyO+FahvKGA6F9c8+Ph
	wb/Q+XA6cYqCKAKlpmQSPInZUmHNRD0y+wo39P4EGcxbL/5AW+TtS1t6jvoeqMza
	takplwbk/vSijyZqAg6N6MRcZTbELPb8aAE/dYGMAvHgrJxXhs3laQxf86/ehmpF
	jobHAzykoHhBrVsA+poWMb7RPEweiVNpXr+vxy2w1A==
X-ME-Sender: <xms:QWcOZ5NFk4AoMSZxkKXvd5mPQS-kQSWe5AspAMfv0VxbhJF7cRj1dg>
    <xme:QWcOZ7_NsPSpK-fDjQIgotIEWYjX7xC_J-4-b7wu0rBkAe1LKQvpqHUs_chZCF-GO
    ffVVqWiOzuU6A>
X-ME-Received: <xmr:QWcOZ4SMlU1_I49jGte6nvXl9bCz4uLjZzLc8o7tIeWRkLxTlTS6vF2N_dptVYhsJr3BxJPPAkd53n0X4Kl3Kvb5mhelZsr9Cw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdegjedgheekucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhrvggu
    ihgrnhhordiiihhglhhiohestghlohhuugdrtghomhdprhgtphhtthhopeigvghnqdguvg
    hvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopeguphhs
    mhhithhhsegrphgvrhhtuhhsshholhhuthhiohhnshdrtghomhdprhgtphhtthhopehjsg
    gvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtoheprghnughrvgifrdgtohhophgv
    rhefsegtihhtrhhigidrtghomhdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrh
    higidrtghomh
X-ME-Proxy: <xmx:QWcOZ1vYfqu5WD1133NW4BpTisKf6USRDZga0yBkfXlR5WvJkTLieQ>
    <xmx:QWcOZxeli5UNcffXIWKQqvDNKIihUY6sWgZqXvUnzeVGMF86IrQR2Q>
    <xmx:QWcOZx2R4sY_yHEclfR7dZcCg52YZMPUpUGTObCtU8v0MQ8V9yfS8Q>
    <xmx:QWcOZ99oMZx1uYyKLrGOgY5h8Uz2dlMJ0q3aEjkaVdPFy5Bv0LgTHg>
    <xmx:QWcOZ6HKkBgp_VgMNz42LF6SeoAwcP-d7HCw0zrnXyb4YbQFDluLAkGN>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 15 Oct 2024 14:59:42 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH v10 0/2] x86/boot: Improve MBI2 structure check (was:
 Reduce assembly code)
Message-ID: <Zw5nPgJ8it9BsRv5@mail-itl>
References: <20241015082513.2477806-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="fQOMTUCr/4DPAMZ/"
Content-Disposition: inline
In-Reply-To: <20241015082513.2477806-1-frediano.ziglio@cloud.com>


--fQOMTUCr/4DPAMZ/
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 15 Oct 2024 14:59:42 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: [PATCH v10 0/2] x86/boot: Improve MBI2 structure check (was:
 Reduce assembly code)

On Tue, Oct 15, 2024 at 09:25:11AM +0100, Frediano Ziglio wrote:
> This series came from part of the work of removing duplications between
> boot code and rewriting part of code from assembly to C.

Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

> Changes since v1, more details in specific commits:
> - style updates;
> - comments and descriptions improvements;
> - other improvements.
>=20
> Changes since v2:
> - rebased on master, resolved conflicts;
> - add comment on trampoline section.
>=20
> Changes since v3:
> - changed new function name;
> - declare efi_multiboot2 in a separate header;
> - distinguish entry point from using magic number;
> - other minor changes (see commens in commits).
>=20
> Changes since v4:
> - rebase on staging;
> - set %fs and %gs as other segment registers;
> - style and other changes.
>=20
> Changes since v5:
> - fixed a typo.
>=20
> Changes since v6:
> - remove merged patch;
> - comment and style;
> - change some pointer checks to avoid overflows;
> - rename parse-mbi2.c to mbi2.c.
>=20
> Changes since v7:
> - removed merged parts;
> - add required stack alignment.
>=20
> Changes since v8:
> - added "Fixes:" line;
> - typo in commit message: Adler -> Alder;
> - add ".init" to mbi2.o;
> - reduce difference in Makefile.
>=20
> Changes since v9:
> - minor messages updates.
>=20
> Frediano Ziglio (2):
>   x86/boot: Align mbi2.c stack to 16 bytes
>   x86/boot: Improve MBI2 structure check
>=20
>  xen/arch/x86/efi/Makefile | 4 ++--
>  xen/arch/x86/efi/mbi2.c   | 7 +++++--
>  2 files changed, 7 insertions(+), 4 deletions(-)
>=20
> --=20
> 2.34.1
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--fQOMTUCr/4DPAMZ/
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcOZz4ACgkQ24/THMrX
1yydTgf9HuAKSVicmQL6T29k74yc2lbAMJITP/y3vuszamugHBil7xzV7hs4hi5h
JiQczjoq6FsQ0V1HyzxWrYNcsyjTuclj2yr1GiO78L99eTRRWXKn7quNlLY7D17r
8Znd3I5f2M+0+lyJt6DMkIg8o/t/VVfoO1rxSjN/RR9r0TAXmGOkZCRY5VRPJZrB
7a9IvxgBeEUOhea2FnpTt3vZzDpIluq1104623rLG1QKiPzWOF6Gb7NXSqUYuKWV
Tqc+fxi2EdB5CxpjwS5WMmfHM/+uMkA3TRnl0LIKH1rrPI/vSlQeg4XBaBlOwbOS
EdRck1+FilNXEYJdn+1orcufS4yLEA==
=BI7J
-----END PGP SIGNATURE-----

--fQOMTUCr/4DPAMZ/--


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 13:08:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 13:08:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819188.1232475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0hIB-0008KS-JE; Tue, 15 Oct 2024 13:08:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819188.1232475; Tue, 15 Oct 2024 13:08: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 1t0hIB-0008KL-GM; Tue, 15 Oct 2024 13:08:51 +0000
Received: by outflank-mailman (input) for mailman id 819188;
 Tue, 15 Oct 2024 13:08: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=GjeK=RL=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t0hIA-0008KF-3K
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 13:08:50 +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 9d726a26-8af6-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 15:08:48 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c96b2a11e7so3645532a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 06:08:48 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d5093f3sm691820a12.55.2024.10.15.06.08.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 15 Oct 2024 06:08:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d726a26-8af6-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1728997727; x=1729602527; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=sfSF5ZDNP06rKpw0Ac2Nx5ynXOi0FYyQceSCYulUZkw=;
        b=HzgODUdrShUlWKzhScLmKs4WvY4ejF7sZnmZHxnHVT4Vi87wO5RUf+9qClT8y31vFr
         UvHHNAK04BS4TIy9wrTWBYb6ZLVyu07yQZ0j8u14lRIiJL7DGFqn8pjXCPtCyQdq0ifz
         y+PvbsToXlmzuELF/3mBOdT40FvL1qYHHlSTw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1728997727; x=1729602527;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=sfSF5ZDNP06rKpw0Ac2Nx5ynXOi0FYyQceSCYulUZkw=;
        b=M9ElewRMm7rQ+qVlIl/Nufjud9kfdTC6BfI3FT75LjiRPI+INBQ4LJpXb0oXBj3NYt
         ChQKKEn1f77FrbyMNZuaLEIbhRV089Po9J9qvBIO/bmTNF+/D/hsAHTY+llOodNPI3ZJ
         SmdhzBrTCTl76FDSkGvD7wkNfQJsktfvyMZkpp7NxuJ2HeIrGFmlsE023fJ8uIs5Iflj
         tjAfai2adKT0PUfJzLFdqKd5hzUIZTSVvy7qN3g/H6wy0xq1BLW+JXGbX2THzVMjebtR
         /8AesCz9y1MmyHphbDFD+Lb735+qts6wZdYdFD72eeGaUObfQ2nQI0HmoQtJn4rZCDxz
         m5GA==
X-Forwarded-Encrypted: i=1; AJvYcCXUZ4CZL7TXoTgxzsXFi7Cb/7XyZoU6g8CBcNxlQ3gRK2goZn/0bAnSiNv/rUjDugMkOsQHBIu8OvQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxESqprlJ+YMOW5O9RnM35SCc2xazvC7zvIbPTjBA6/a3Wvmsia
	+KJAvVgTmxjFDrbuSmV19Y7FaAWXVNbOsBzKpUCPXp2vyau0z8LspBV7P/j/bDk=
X-Google-Smtp-Source: AGHT+IHHv1Ow1o4m4nzH+h1oOQta43CiqY9XPSXCVmUjXWhUblDpCeJvtgNkG6SZy8GuO/TEpFavyw==
X-Received: by 2002:a50:cb88:0:b0:5c9:5a96:2863 with SMTP id 4fb4d7f45d1cf-5c95ac1582emr7425406a12.13.1728997727509;
        Tue, 15 Oct 2024 06:08:47 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 15 Oct 2024 14:08:41 +0100
Message-Id: <D4WEJFWKCPNO.1H8D6FJBX979I@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>, "Anthony PERARD"
 <anthony.perard@vates.tech>, "Xen-devel" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v6 08/11] xen/lib: Add topology generator for x86
X-Mailer: aerc 0.18.2
References: <20241001123807.605-1-alejandro.vallejo@cloud.com>
 <20241001123807.605-9-alejandro.vallejo@cloud.com>
 <7595b3ab-0891-42f7-81b0-5666651046b9@suse.com>
 <D4RGXLJZQ6MA.1B1ND4RWZESBE@cloud.com>
 <b6eb6268-9155-48cd-9b00-bc34f8d4a01b@suse.com>
In-Reply-To: <b6eb6268-9155-48cd-9b00-bc34f8d4a01b@suse.com>

On Thu Oct 10, 2024 at 8:54 AM BST, Jan Beulich wrote:
> On 09.10.2024 19:57, Alejandro Vallejo wrote:
> > On Wed Oct 9, 2024 at 3:45 PM BST, Jan Beulich wrote:
> >> On 01.10.2024 14:38, Alejandro Vallejo wrote:
> >>> --- a/xen/lib/x86/policy.c
> >>> +++ b/xen/lib/x86/policy.c
> >>> @@ -2,6 +2,94 @@
> >>> =20
> >>>  #include <xen/lib/x86/cpu-policy.h>
> >>> =20
> >>> +static unsigned int order(unsigned int n)
> >>> +{
> >>> +    ASSERT(n); /* clz(0) is UB */
> >>> +
> >>> +    return 8 * sizeof(n) - __builtin_clz(n);
> >>> +}
> >>> +
> >>> +int x86_topo_from_parts(struct cpu_policy *p,
> >>> +                        unsigned int threads_per_core,
> >>> +                        unsigned int cores_per_pkg)
> >>> +{
> >>> +    unsigned int threads_per_pkg =3D threads_per_core * cores_per_pk=
g;
> >>
> >> What about the (admittedly absurd) case of this overflowing?
> >=20
> > Each of them individually could overflow the fields in which they are u=
sed.
> >=20
> > Does returning EINVAL if either threads_per_core or cores_per_pkg overf=
low the
> > INTEL structure j
>
> The sentence looks unfinished, so I can only vaguely say that my answer t=
o
> the question would likely be "yes".

It was indeed. Regardless, the number of bits available in Intel's cache
subleaves is rather limited, so I'll be clipping those to the maximum on
overflow and...

>
> >>> +    switch ( p->x86_vendor )
> >>> +    {
> >>> +    case X86_VENDOR_INTEL: {
> >>> +        struct cpuid_cache_leaf *sl =3D p->cache.subleaf;
> >>> +
> >>> +        for ( size_t i =3D 0; sl->type &&
> >>> +                            i < ARRAY_SIZE(p->cache.raw); i++, sl++ =
)
> >>> +        {
> >>> +            sl->cores_per_package =3D cores_per_pkg - 1;
> >>> +            sl->threads_per_cache =3D threads_per_core - 1;
> >>> +            if ( sl->type =3D=3D 3 /* unified cache */ )
> >>> +                sl->threads_per_cache =3D threads_per_pkg - 1;
> >>
> >> I wasn't able to find documentation for this, well, anomaly. Can you p=
lease
> >> point me at where this is spelled out?
> >=20
> > That's showing all unified caches as caches covering the whole package.=
 We
> > could do it the other way around (but I don't want to reverse engineer =
what the
> > host policy says because that's irrelevant). There's nothing in the SDM=
 (AFAIK)
> > forcing L2 or L3 to behave one way or another, so we get to choose. I t=
hought
> > it more helpful to make all unified caches unified across the package. =
to give
> > more information in the leaf.
> >=20
> > My own system exposes 2 unified caches (data trimmed for space):
> >=20
> > ``` cpuid
> >=20
> >    deterministic cache parameters (4):
> >       --- cache 0 ---
> >       cache type                         =3D data cache (1)
> >       cache level                        =3D 0x1 (1)
> >       maximum IDs for CPUs sharing cache =3D 0x1 (1)
> >       maximum IDs for cores in pkg       =3D 0xf (15)
> >       --- cache 1 ---
> >       cache type                         =3D instruction cache (2)
> >       cache level                        =3D 0x1 (1)
> >       maximum IDs for CPUs sharing cache =3D 0x1 (1)
> >       maximum IDs for cores in pkg       =3D 0xf (15)
> >       --- cache 2 ---
> >       cache type                         =3D unified cache (3)
> >       cache level                        =3D 0x2 (2)
> >       maximum IDs for CPUs sharing cache =3D 0x1 (1)
>
> Note how this is different ...
>
> >       maximum IDs for cores in pkg       =3D 0xf (15)
> >       --- cache 3 ---
> >       cache type                         =3D unified cache (3)
> >       cache level                        =3D 0x3 (3)
> >       maximum IDs for CPUs sharing cache =3D 0x1f (31)
>
> ... from this, whereas your code would make it the same.
>
> Especially if this is something you do beyond / outside the spec, it imo
> needs reasoning about in fair detail in the description.

... given the risk of clipping, I'll get rid of that conditional too to mak=
e it
easier for a non-clipped number to be reported.

I'll write in the commit message the behaviour on overflow for these leaves=
.

>
> Jan

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 13:51:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 13:51:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819201.1232484 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0hxA-00060l-F0; Tue, 15 Oct 2024 13:51:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819201.1232484; Tue, 15 Oct 2024 13: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 1t0hxA-00060e-CT; Tue, 15 Oct 2024 13:51:12 +0000
Received: by outflank-mailman (input) for mailman id 819201;
 Tue, 15 Oct 2024 13:51: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=Ede6=RL=bounce.vates.tech=bounce-md_30504962.670e734b.v1-83347e98641045a8b4fecea3cf005f14@srs-se1.protection.inumbo.net>)
 id 1t0hx9-00060V-IG
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 13:51:11 +0000
Received: from mail186-1.suw21.mandrillapp.com
 (mail186-1.suw21.mandrillapp.com [198.2.186.1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 877fd267-8afc-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 15:51:09 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-1.suw21.mandrillapp.com (Mailchimp) with ESMTP id 4XSb972qmyzBsThdf
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 13:51:07 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 83347e98641045a8b4fecea3cf005f14; Tue, 15 Oct 2024 13:51: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: 877fd267-8afc-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729000267; x=1729260767;
	bh=gzZg6UEljP8T81s1pJ+1JDrId+580NlT2jt8ZXi5zAI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=ZkPMMXy8XA4pjF5zrEp/o2CZQYalDlKYcR4yCuqr1NiaIGzRU/cYvWPtxrAb97Wjs
	 dMGVW4wb984KJGvCvTeq4zBvylCtqUxoSH5VgvDriI5798PyOgsaQzxzyxVEayfuM1
	 tgyR+Ka38Yo0VKTYBYXwPIBJxx6L1fGzdnRGEFeKx8Abt3jbCxNhlti+vbIsmMftQn
	 hUznAe8HGfU/8WYbV6Nj2Q5KTeG87ghHBdIWhcPdSPHEX3bE6aKn8RVDtsTFiTqO0h
	 cLty381OLTVTtPTiLWvZud5wCFrhiCx0Fb4VR6dtJa54yX/mpIIkZM8M0kZw2sbeRt
	 hSjTAXnoLUnrg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729000267; x=1729260767; i=anthony.perard@vates.tech;
	bh=gzZg6UEljP8T81s1pJ+1JDrId+580NlT2jt8ZXi5zAI=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Ea9PVLQ8iWqQd6vMI04BOQQBvYTvTbaba1yrTjQ+qlXk0jvLD+O93cDkgMbi6/S+j
	 wKrCLWEiViTI8A/bLePTRuoE4wjb7KN8bTSYgEK6wryFAv5wsgCoq8Qh9U05/HiCjq
	 diO40Dgjz27kMFd6z97k1ASYgCnZs1vLWtiD8oJVBo9DknPJNaVVJEcusv4ywb0IHl
	 SiUOyEmu1l0eDRACNWkQ0bdnRs+MSvoTxjxCGXGfhV7xqng7nMbO5iJxedB5pWMe8s
	 2gWxt1zmSDHEe/PEFbxUZalKyuqNHPsrZ/79VtA47Cl/7Uw3g8bTcS4nh22EttNtx5
	 iaDozkbmdsFng==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v4=202/6]=20x86/boot:=20create=20a=20C=20bundle=20for=2032=20bit=20boot=20code=20and=20use=20it?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729000265969
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Message-Id: <Zw5zSURbpInM5oBY@l14>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com> <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14> <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com>
In-Reply-To: <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@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.83347e98641045a8b4fecea3cf005f14?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241015:md
Date: Tue, 15 Oct 2024 13:51:07 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 14, 2024 at 05:32:26PM +0100, Frediano Ziglio wrote:
> On Mon, Oct 14, 2024 at 4:31=E2=80=AFPM Anthony PERARD
> <anthony.perard@vates.tech> wrote:
> >
> > On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
> > > diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> > > index 1199291d2b..23ad274c89 100644
> > > --- a/xen/arch/x86/boot/Makefile
> > > +++ b/xen/arch/x86/boot/Makefile
> > > @@ -1,4 +1,5 @@
> > >  obj-bin-y +=3D head.o
> > > +obj-bin-y +=3D built_in_32.o
> >
> > I don't quite like that this new object name is "built_in_32.o",
> > It's really closed to "built_in.*" which is used by Rules.mk to collect
> > all objects in a subdirectory. I don't really have a better suggestion =
at
> > the moment.
> >
> 
> It was cbundle.o before, but people preferred built_in_32.o.
> It's a collection of object files like built_in.o so it does not seem
> so bad to me.
> But seen other replies, some other people prefer "bundle".

Yeah, I guess it's ok (built_in_32 that is; now that I gave a better
review of the rest of the Makefile changes).

> > > @@ -9,9 +10,6 @@ targets   +=3D $(obj32)
> > >
> > >  obj32 :=3D $(addprefix $(obj)/,$(obj32))
> > >
> > > -$(obj)/head.o: AFLAGS-y +=3D -Wa$(comma)-I$(obj)
> > > -$(obj)/head.o: $(obj32:.32.o=3D.bin)
> > > -
> > >  CFLAGS_x86_32 :=3D $(subst -m64,-m32 -march=3Di686,$(XEN_TREEWIDE_CF=
LAGS))
> > >  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
> > >  CFLAGS_x86_32 +=3D -Werror -fno-builtin -g0 -msoft-float -mregparm=
=3D3
> > > @@ -25,14 +23,34 @@ $(obj32): XEN_CFLAGS :=3D $(CFLAGS_x86_32) -fpic
> > >  $(obj)/%.32.o: $(src)/%.c FORCE
> > >       $(call if_changed_rule,cc_o_c)
> > >
> > > +orphan-handling-$(call ld-option,--orphan-handling=3Derror) :=3D --o=
rphan-handling=3Derror
> > >  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) :=3D --no-warn-=
rwx-segments
> > >  LDFLAGS_DIRECT +=3D $(LDFLAGS_DIRECT-y)
> > >  LD32 :=3D $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
> > >
> > > -%.bin: %.lnk
> > > -     $(OBJCOPY) -j .text -O binary $< $@
> > > -
> > > -%.lnk: %.32.o $(src)/build32.lds
> > > -     $(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> > > -
> > > -clean-files :=3D *.lnk *.bin
> > > +$(obj)/build32.final.lds: AFLAGS-y +=3D -DFINAL
> > > +$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.ld=
s.S FORCE
> > > +     $(call if_changed_dep,cpp_lds_S)

Could you add:

    targets +=3D build32.final.lds build32.other.lds

otherwise, the if_changes macro doesn't work, and the target keeps been
rebuilt. `make V=3D2` will tell you the same thing.

> > > +# link all 32bit objects together
> > > +$(obj)/built_in_32.tmp.o: $(obj32)
> > > +     $(LD32) -r -o $@ $^
> > > +
> > > +$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.tm=
p.o
> > > +## link bundle with a given layout
> >
> > Could you put the comment aligned with the rest of the recipe? That way
> > it won't visually separate the rule into several pieces. You can
> > prefix it with @ so it doesn't show in build logs:
> >
> >         @# comments
> >
> 
> Yes, they look more or less the same but technically pretty different.
> The "## XXX" is a comment for make command, the "\t@#comment" is a way
> to tell make to not print the command before launching it so make will
> launch a shell command "# comment".
> Yes, indentation does not make it clear. Not that launching a shell to
> execute a comment will take a long time. On the other hand, here that
> comment is more for the rule than for the shell. Maybe something like
> 
> target:
>       command \
>            # do something
> 
> (personally I found it even more ugly)

How about removing the comments? I mean the command line is
self-explanatory here. Same thing about the objcopy comment.
(Or a comment before the rule, when really needed)

> > > +     $(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32.$=
(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
> >
> > I think this wants to be: -T $(filter %.lds,$^) -Map $(patsubst %.bin,%=
.map,$@) -o $(patsubst %.bin,%.o,$@) $(filter %.o,$^)
> >
> > :-(, maybe that's lots of $(patsubst,), not sure which is better betwee=
n
> > $(patsubst,) and using the stem $*.
> >
> 
> Not strong about stem or patsubst.

Actually, I found a better suggestion (after reading the previous path
which remind me about an existing feature that I don't really use), the
use of Substitution References
(https://www.gnu.org/software/make/manual/make.html#Substitution-Refs)

This is a shorter version than patsubst, but works very well here, the
recipe can look like this:
    $(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=3Dmap) -o $(@:bin=3D=
o) $(filter %.o,$^)
    $(OBJCOPY) -j .text -O binary $(@:bin=3Do) $@
    rm -f $(@:bin=3Do)

(It is likely fine to keep the reference to the lds script as $<,
instead of using $(filter,).)

BTW, do we need the rules that generate the input of this rules
(built_in_32.tmp.o that is), or can this one takes all 32bit objects as
input?

> The 2 filters seem good, they suggest lds for the script and objects
> for the input, which makes sense.

> > Also, if something tries to use built_in_32.tmp.bin, we have a rule tha=
t
> > remove it's prerequisite.
> >
> > BTW, everything is kind of temporary in a build system, beside the few
> > files that we want to install on a machine, so having a target named
> > with "*tmp*" isn't great. But having a rule that create "*tmp*" file bu=
t
> > remove them before the end of its recipe is fine (or those *tmp* aren't
> > use outside of this recipe).
> >
> 
> Mumble... yes, I think the XX.tmp.o was a temporary internal rule file.
> So we still don't agree on one name, and now we want to find also
> another, tricky.
> More or less if it can help, one is a 32 bit object file that bundle
> together multiple 32 bits object files while the other is the
> conversion of the 32 bits bundle file to 64 bits.
> XXX_32.o and XXX_32as64.o ??

We may not need the rule for it :-).

> > > +## extract binaries from object
> > > +     $(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
> > > +     rm -f $(obj)/built_in_32.$(*F).o
> > > +
> > > +# generate final object file combining and checking above binaries
> > > +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_3=
2.final.bin
> >
> > So, "other" isn't part of "final", I don't really know what those two
> > things contains so naming wise I can't suggest anything useful.

Instead of "other", is "control" (like in science experiment where you
have a control group), or "offseted" (which seems to be how this second
binary is constructed) would be better names for this *.bin? It seems
the script take both input and play the game of the 7 differences, to
find clues about the location of some symbols, right?.

> > But, is "built_in_32.S" really only depends on those two .bin? SHouldn'=
t
> > it get regenerated if the script changes, or the .lds that --script
> > option seems to use? What is the "--map" option, an input or output?
> 
> Both map file and linker script are dependency of the bin files so no pro=
blems.
> Yes, potentially you want to generate if the python script change.
> Potentially also if Makefile, make, ld or any other command change,
> but that possibly is kind of "we don't usually care".

Actually, for the hypervisor, we usually care about changes which could
lead to a different output. While changes of build toolchain aren't
really track (even if there's a patch that have a small improvement
toward it that was never committed), many other changes are been tracked
and act upon. The macros $(if_changes*,) from Linux's Kbuild are a great
help.

If the build system doesn't regenerate targets when a developer try to
debug some complex problem, it isn't going to help. We can easily have a
situation where the developer adds printf earlier and earlier and
earlier to try to find out where Xen crash, to find out later that the
build system was working against them by not rebuilding the file that
should be rebuilt. So if we can avoid some frustration and time lost,
it's better :-).

> > But I guess we can ignore the ".map" file because it's part of the
> > ".bin".
> >
> 
> Yes, I suppose they are, although we can make it explicit both
> generating them and using as dependencies.

Having a rule that generate several targets is complicated to write in
GNU Make 3.80, the rule is more likely to be called several time in
parallel. So let's ignored the .map file, as it should only be used
along side the .bin.

> > Another thing that might be useful to do, is to use the "if_changed"
> > make macro, that way if the command line of the script changes, make
> > can remake the output. But maybe it's a bit complicated for this recipe
> > because it doesn't uses $< or $^.
> >
> 
> I usually simply add Makefile to the dependencies. It works too.

Having "Makefile" as prerequisite is both too much and not enough. This
lead to rebuild due to unrelated changes in the Makefile and if the
command line change (like more command line option modified in a variable
in a different Makefile or the environment) the target doesn't gets
rebuilt.

That's where $(if_changed,) helps.

> > > +     $(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> > > +             --script $(obj)/build32.final.lds \
> > > +             --bin1 $(obj)/built_in_32.other.bin \
> > > +             --bin2 $(obj)/built_in_32.final.bin \
> > > +             --map $(obj)/built_in_32.final.map \
> > > +             --exports cmdline_parse_early,reloc \
> > > +             --output $@

I can think of one example where $(if_changed,) is going to really help,
by looking at this command line:
    One does update the .c file to add a function that they like to
    export, run `make`, realize they forgot to update the makefile so
    update it, run `make`, it's still doesn't work...
    Maybe run `make clean; make`, or something else...

So, could you use $(if_changed,) ?
Probably:
quiet_cmd_combine =3D GEN     $@
cmd_combine =3D $(PYTHON) ...
$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final=
.bin FORCE
    $(call if_changes,combine)
targets +=3D built_in_32.S

GEN, for generate, or it could be PY instead, because python script can
be slow to compile which could explain why the build system output is
making a pause on this target (on slow machines that is). Or it could be
COMBINE, or something else, but it's not really necessary to explain,
the target name is often enough to figure out what's happening, when
needed.

> > > +
> > > +clean-files :=3D built_in_32.*.bin built_in_32.*.map build32.*.lds
> > > diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build3=
2.lds.S
> > > similarity index 70%
> > > rename from xen/arch/x86/boot/build32.lds
> > > rename to xen/arch/x86/boot/build32.lds.S
> > > index 56edaa727b..50c167aef0 100644
> > > --- a/xen/arch/x86/boot/build32.lds
> > > +++ b/xen/arch/x86/boot/build32.lds.S
> > > @@ -15,22 +15,47 @@
> > >   * with this program.  If not, see <http://www.gnu.org/licenses/>.
> > >   */
> > >
> > > -ENTRY(_start)
> > > +#ifdef FINAL
> > > +# define GAP 0
> > > +# define MULT 0
> > > +# define TEXT_START
> > > +#else
> > > +# define GAP 0x010200
> > > +# define MULT 1
> > > +# define TEXT_START 0x408020

So I've read the python script a bit, and notice that the two values GAP
and TEXT_START are also written verbatim in it, without comment, so
looks like magic number there. Could you at least put a comment in the
python script? (Something thing that could be better were if the
Makefile itself provided those number to both the lds script and the
python script, but I don't know if it's possible.)

> > > +#endif
> > > +# define DECLARE_IMPORT(name) name =3D . + (__LINE__ * MULT)
> >
> > Is  ^ this a stray space?
> >
> 
> Yes, a single ASCII character 32. Surely we don't want tabs. Other
> parts of the file use 2 spaces indentation, others 8 spaces. Or are
> you suggesting to not indent them?

Yes, that what "stray" imply, also I mean only the last line as imply by
the use singular. Sorry, I could have try to be a bit more precise.

All the indentation within the #ifdef #endif are fine, but why is
#define still indented after the last #endif?

> >
> > Overall, it's kind of mostly style comment that I had, so feel free to
> > ignore most of them.
> >
> 
> Naming can be cumbersome but usually helps readability.

Yes, also sorry for the half-baked previous review, it could have been bett=
er.

Cheers,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 13:55:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 13:55:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819207.1232494 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0i0q-0006ZK-Vf; Tue, 15 Oct 2024 13:55:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819207.1232494; Tue, 15 Oct 2024 13:55: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 1t0i0q-0006ZD-TC; Tue, 15 Oct 2024 13:55:00 +0000
Received: by outflank-mailman (input) for mailman id 819207;
 Tue, 15 Oct 2024 13:54: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=8bEn=RL=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t0i0p-0006Z7-JX
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 13:54:59 +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 10cf1a86-8afd-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 15:54:58 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so785155666b.1
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 06:54:58 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a2971716bsm74674466b.24.2024.10.15.06.54.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 15 Oct 2024 06:54:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10cf1a86-8afd-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729000498; x=1729605298; 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=L8nmSvsJtIf6ULGt3Xh9CHaVaqRaS6Np09gi4ok652g=;
        b=kCRTcN5phleEW4MZd+EZJYgA6fG0jD/FQHdb0sZVQjGCOAowdTHmRTFGwo91unDAMu
         M8bbbEqyUykhh6Os3BEROKN+gtzIBn+8H4SDgRESDEWOSXE6hZV6VOWe1ifMATdtRp0U
         ML3mN2liGGlvM8kTohllYAtYLsl8VPbQqg0Wo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729000498; x=1729605298;
        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=L8nmSvsJtIf6ULGt3Xh9CHaVaqRaS6Np09gi4ok652g=;
        b=EMzhclx2+B6NGPT7zbbjOxVXdaDK2BHsaai7lSbrovqbgogusdaX6s3dr6jSsHLpLa
         tblQpJ/cEffBF9ce2K0KFFJEQluG2MIf4JKR3otUiu+mydXdSAVDhht6LS394rJdnEcF
         oVAvbtI/egkspUVd3bmQP4AVCQDn7uXruA7qv3MMnY2VWZYmo9GISeLS1orYawhznT+R
         DXxQ8j+swG3lb4itUrR2q1ri+u61eip5kvoXqOOedHcrXVtaCxY/htjjuiDhSEBiXUMr
         R2MstgT32hYZTO72bIAlRUi/UFO35FzhklUXIFduuosphAEEZzP9Pjb4H409Uy/yrRmO
         D9PA==
X-Forwarded-Encrypted: i=1; AJvYcCWznCih3qPfaKLnNlUcgnB1QCrbq1CXiUJxhDGarohZhKkV6wEySoKXhQMMOiyHHAzB/TQGl9LDXuQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywe3qG0a2t7z2HSPetkkQbkqOy+m77H1y8r761q4YjaBJiQN/aZ
	UANwoLOkIGas4e+wy03MVzmnFTSURWiaqFc4RIiskJMWHbaRennxbON7vrT7HmE=
X-Google-Smtp-Source: AGHT+IGRqLJNh9d0Xs4Z7FOcUFWOJ+pUCZurwyBcJ09n9Rvqvr1/kKbDah5fn1wOFsFw1pwiCGd9GQ==
X-Received: by 2002:a17:907:1c14:b0:a9a:8ee:594f with SMTP id a640c23a62f3a-a9a08ee5b21mr704359766b.21.1729000498025;
        Tue, 15 Oct 2024 06:54:58 -0700 (PDT)
Message-ID: <09d32fc3-e3a3-4f2c-beff-6a64989c4a01@citrix.com>
Date: Tue, 15 Oct 2024 14:54:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241014085332.3254546-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14/10/2024 9:53 am, Frediano Ziglio wrote:
> diff --git a/xen/tools/combine_two_binaries.py b/xen/tools/combine_two_binaries.py
> new file mode 100755
> index 0000000000..138c59287e
> --- /dev/null
> +++ b/xen/tools/combine_two_binaries.py
> @@ -0,0 +1,207 @@
>
> +if args.output is not None:
> +    out = open(args.output, 'w')
> +print('''/*
> + * File autogenerated by combine_two_binaries.py DO NOT EDIT
> + */''', file=out)
> +print('\t' + args.section_header, file=out)
> +print('obj_start:', file=out)

obj32_start:

This symbol survives into the main Xen binary, where "obj_start" is
entirely devoid of context.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 15:03:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 15:03:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819223.1232505 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0j54-00071R-Nf; Tue, 15 Oct 2024 15:03:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819223.1232505; Tue, 15 Oct 2024 15:03: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 1t0j54-00071K-KW; Tue, 15 Oct 2024 15:03:26 +0000
Received: by outflank-mailman (input) for mailman id 819223;
 Tue, 15 Oct 2024 15:03: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=3bi0=RL=bounce.vates.tech=bounce-md_30504962.670e8437.v1-9f379b0ef034429daa972e3ae31da283@srs-se1.protection.inumbo.net>)
 id 1t0j52-00071E-DR
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 15:03:24 +0000
Received: from mail136-14.atl41.mandrillapp.com
 (mail136-14.atl41.mandrillapp.com [198.2.136.14])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9da59dab-8b06-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 17:03:21 +0200 (CEST)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-14.atl41.mandrillapp.com (Mailchimp) with ESMTP id
 4XScmR1zwHz705jsS
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 15:03:19 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 9f379b0ef034429daa972e3ae31da283; Tue, 15 Oct 2024 15: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>
X-Inumbo-ID: 9da59dab-8b06-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729004599; x=1729265099;
	bh=bB3tmUmodvCERpf11kqHx2ir+SoIIlyIYgxa8IBjy5k=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=zdWOrf9rJ9foIpFomz/IbmL4H7e+1XqFzvP7uMXUjY5Ip756y0bwIiP7w3jL0eTYx
	 jwiuYoTmFk51cEq3JxSoDoKFkiFJfGs5D1GIcBynfZOypvwq7IQfzYDQD+9fEl/qJ+
	 EzYFor9lmxz3XdiWapdDzKrI9xDG9AmZu88YARWGSwzrNNtbdtooGd6SrzutaK48wN
	 ui2kDES/xKbpltc8+6pvDGGaU+hD3aXnkDNQkikV/P+cdPGwFSSNgDyBUkDt5QJ7Ln
	 tDYRSVKno+rVuLwRcZWQ3Pk/I8ZZj2UpKSZ+fS8mDPYZUkS2aRGjcUdM6ZAFBGq97C
	 3lBwdu/waiVvA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729004599; x=1729265099; i=anthony.perard@vates.tech;
	bh=bB3tmUmodvCERpf11kqHx2ir+SoIIlyIYgxa8IBjy5k=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=MhjY5Amq8TKOZHJ1GHANHk8MZRGtUozc7TfbAYI9pIIR0QVYTlcJoDwQf0ZZabe+B
	 Ecn2zVjbOZaBrKG7WygVnLbjE5KeYUefBz8Clv9IzfdqpWLZgcfd63S5LE2Gks+LhL
	 gLl1wnmb6TnIslokP0jzuGuBlqJF60puCYvBRuqRRGJ3ReGJQPgLqGXRYoBcRQPsTi
	 qFTbtBIPKOQtCnoGUpXIxqIGgryBI3DPS+kyiU/Zy6iiTHVk6Q++aHi1ZcT6bStagT
	 WkVHx9OSqkbUdFnNumUZDNdvN31T3VJN0usGgrTRRVV5v5D+V7pNWC3ZnacQ4pLJBk
	 u0bzEfqi6bATw==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v4=203/6]=20x86/boot:=20Reuse=20code=20to=20relocate=20trampoline?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729004596651
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Daniel P. Smith" <dpsmith@apertussolutions.com>, =?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-Id: <Zw6ENAH6sVr0Zuv6@l14>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com> <20241014085332.3254546-4-frediano.ziglio@cloud.com>
In-Reply-To: <20241014085332.3254546-4-frediano.ziglio@cloud.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.9f379b0ef034429daa972e3ae31da283?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241015:md
Date: Tue, 15 Oct 2024 15:03:19 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Mon, Oct 14, 2024 at 09:53:29AM +0100, Frediano Ziglio wrote:
> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index 23ad274c89..ca258a9729 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,12 +1,16 @@
>  obj-bin-y += head.o
>  obj-bin-y += built_in_32.o
> +obj-bin-y += $(obj64)

Could you move this so $(obj64) is fully set when added to $(obj-bin-y)?
There's no garanties that this is going to keep working. We already have
"obj-y :=", so it is possible we will have "obj-bin-y :=" one day. (Or
that we get rid of $(obj-bin-y) because it becomes unnecessary.)

>  obj32 := cmdline.32.o
>  obj32 += reloc.32.o
> +obj32 += reloc-trampoline.32.o
>  
> -nocov-y   += $(obj32)
> -noubsan-y += $(obj32)
> -targets   += $(obj32)
> +obj64 := reloc-trampoline.o
> +
> +nocov-y   += $(obj32) $(obj64)
> +noubsan-y += $(obj32) $(obj64)
> +targets   += $(obj32) $(obj64)

Technically, the change to $(targets) isn't necessary, $(obj-bin-y)
should already be added to it.

Cheers,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 15:56:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 15:56:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819239.1232515 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0juH-00050Z-EJ; Tue, 15 Oct 2024 15:56:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819239.1232515; Tue, 15 Oct 2024 15:56: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 1t0juH-00050S-BH; Tue, 15 Oct 2024 15:56:21 +0000
Received: by outflank-mailman (input) for mailman id 819239;
 Tue, 15 Oct 2024 15:56: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=vOwl=RL=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t0juF-00050M-L4
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 15:56:19 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20603.outbound.protection.outlook.com
 [2a01:111:f403:2416::603])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 02c15d0d-8b0e-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 17:56:17 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by PH7PR12MB7891.namprd12.prod.outlook.com (2603:10b6:510:27a::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Tue, 15 Oct
 2024 15:56:11 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8048.020; Tue, 15 Oct 2024
 15:56: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: 02c15d0d-8b0e-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=v93NeTdTSowwdeRAkS8D2XihE7rc8rwKPoeIhRJ7rZegdejLel0J2immtOzwvvJOqi1ZWvurVoJZ4GioAcsURqLbA+RJw+hiu/JcVFN/mPMGjOvj+JKvv7ghY5GINtERnOwydYOp8F4dkMN/0NjxhoWdH2mwhvLE4nS6PhWkEapcIoHthU/w6oYJN3q0nrCAzU6tVwkAXuJRYgf5rDS6FaLN0kqmJ6gS8PKxydA60K0rtiBnoY8haxVZf13ahsHvw3Ozg3SuGDFaPhMarNexsuDOSZb53wjFrhZI0tCbsYxJDpmrgv/QspLQPmHaxl/Sxatap6lBHFHgbMq/dCAKJA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=2IGTRg2cPbzFZjADGTH7lqXOZateiNvk+FtNSL/LLMs=;
 b=zGJRKEilGrJj26vpPxyHmT2rRnPpwwKUC71gXExt+R0hG6FG25wk9nVilU429CLjcLxjy5Ju4SkXQ7iXJ5VeJJIal7wKrjoKmFZsnoQSqMAw4mUjkcpTQKmYWOtsWOI1DsEfFFpgQLRA0iiein7eS9wmcdHYXlkGSKdK/Ga6jzwZYJqxShmotWN3uMIo6IbkD6iGoyKuWUpgGJQxfKIh0itfgeYUXHjrDBqP4I5mhxgJCjW8l9qoZZbI+38H7mEnZjCuEHhwvQoqk8H+YPYDxsotFbYyk3pUoQuvaeKHufNNI622V7Z6d1e+e0xmXTS454dU9TQOY6JruaCBW0CpRQ==
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=2IGTRg2cPbzFZjADGTH7lqXOZateiNvk+FtNSL/LLMs=;
 b=f+e1o/UQgJdFGOcvPRF7yy6SSAxN9OFIdgoWZpMZYOpKcaMqJY8ANkDrrIXlnpIAloZyxc09WvCGWcUM88fCfC6J/H2UbTl6ztLUKTr4VZ+IhcXhWe0oB9YJvcfyAF2z/rsKhdBRQofikse61c/IcItBSoD4Sdh9rd1gWA5PtuY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <3d0327bf-3f1c-44e6-9782-5715365b2253@amd.com>
Date: Tue, 15 Oct 2024 16:56:06 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
 <4BFB5897-2C7A-4A44-B9E9-01BB7940BFF7@arm.com>
Content-Language: en-GB
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <4BFB5897-2C7A-4A44-B9E9-01BB7940BFF7@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0282.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:195::17) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|PH7PR12MB7891:EE_
X-MS-Office365-Filtering-Correlation-Id: aa01c9b0-5a4e-4a06-a8c5-08dced31e3dc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RDFNS0pPU2hQNi9qZmNVM0RrZk5kMk5RRUo1SlZCSDQ3MngzWDN3K0JCVVJM?=
 =?utf-8?B?QkR6M1QrS0ZyT1lRa2s2OVFaSU9mRWlJeDZ4SnNhaHRka0lTMFZCdFJZUU9E?=
 =?utf-8?B?L1dTOGNCOWlYb3ZMUE1zMUo0eGNFWlNuVDlzM2JReEorNWFnMzlPY1dTNjZi?=
 =?utf-8?B?STU1ODUzUDdjTGEwR3NpbEQrNXVJWUNNVURLdnErTjd5Nll4NDRSRk4yUGZW?=
 =?utf-8?B?cm9Jb2tpYXZ1UExqSmdTUHcxYll4VmZ5QlorRG5vLzJsTFdubElZL3NORjl5?=
 =?utf-8?B?VkZIdDQ3M0xlbE9ublBnVXZVV01VRkhRdXZkSmlDTmgvcXkzZjcvS3hVTDRQ?=
 =?utf-8?B?RzRiVkQ2WXdrK3p0Wm1KWW1KNURZdmYrZ09zOUhwdTB4a3d3V1UySG5sVnM2?=
 =?utf-8?B?SXBxaVhDeTE0RTlCYkdMSnZ1QWs1THJPTE1OVWNkYkQ3aDZrcVJTY3JYQzFO?=
 =?utf-8?B?UHpSeENIaHN4K1NSOFVkaW9rMFgwa3lDVmVyL1JpZEJJM1VKbTJSNDhnL29o?=
 =?utf-8?B?S0Y2Rm1Eb0cwaUxES3VEK1I0SUlSR291N0dqdjBvTlpCbXpiNzFUc1Z0M3Qx?=
 =?utf-8?B?YkpyMUtJajFWdmpBblJnN0piT0Y4NlF2MUIwaVFweFhjVDVwclhQc1VBcno5?=
 =?utf-8?B?ZGFUa2pQZnZpY0xpLzR0WTNDaUF2SzhIdVY2Tm5XNzU0aXQ1Y0wrd1ZMdXNR?=
 =?utf-8?B?YlpUS0Y4SXE3dSt4aUNHYkRGVmNhMW5jdnB6cDhtdUJIbVk3cEhWemIzeUZC?=
 =?utf-8?B?OWRqUC9GWDBaVHRCUU5lZnI0cElQVmpZbzVuZHFYZDZkRmRIeVdUMG1hR1Nq?=
 =?utf-8?B?cjl3akRVeVd6TGtxZWprTXY0S093bG41bXJKR0JJL1haQXVFSjBTRzhVZkpK?=
 =?utf-8?B?cEkrWUJWa0UwOUkvaVROQkl1dXJuZ2IzalJtR1A2OXNsQkdqZzUyUW0raEFh?=
 =?utf-8?B?SmJuVlFwa2pJVWphejVWekVPM2xHbTBoU3A0SjdYWWw0RGh1M3BaMndqM0xl?=
 =?utf-8?B?ZWVWLy91REo0aS84Mk9CcStUeEdzM2NVSVN2bnhWWERtd0M3Y3pyaHR6T0l1?=
 =?utf-8?B?dm4ycnF0c2ZWVHo4SFlISzFJLzZOM2R3dWVnbXJVMjNQLzFoWjVHWWp3dDRt?=
 =?utf-8?B?ZC85OExBZXlraVFiTGorS0thTDNpQytoOW9KSFhJdCtFYWMvYmhnTmptc1dL?=
 =?utf-8?B?MVRDUXF2QXFIdGdvYW9ESlVrMEw2YWFiZUdYZ0VzMXlwa1BhbFNYeUhVM082?=
 =?utf-8?B?UkxScHhKbFlaSkkyYVB0aWV4UDVBWDE0MlJnR1kyaHZWMERnQmdQeEZOWTZR?=
 =?utf-8?B?UXhLblZsU1I5YVFqU3hqMHM0QWdLNjhabFpjRVVhM29MbEFWSHRGck83UnNJ?=
 =?utf-8?B?WFF6Y0o1MTlEWXNpRzAxS0xaUElLeDZoajhUT3F4Yk56MU1VcFVUK0IrRW9P?=
 =?utf-8?B?NkZFdkNUcFFqaGVCQmNtR1laQktVdDBHUnhBajk5TVh1eU1GcG92R2l4TlZY?=
 =?utf-8?B?ZWNwQUdHRjg3V2xCbWQrclIwRWQvb2NvMEJtNk1zU2c2R2RveHpEVWpZejVY?=
 =?utf-8?B?UlpQK3Mwb2VRcnM1cmc0N1JTODA2MGdEb2NKNit4WjNEdllaWEx5Q2tNV0Js?=
 =?utf-8?B?Tk1oK1RrTU9QWWNTSnIrWVZodEZubEdsZEZUeEVSMVByTW1RQjJSdGsvRXlG?=
 =?utf-8?B?WlZudmo0cElnOEZMK1BwUXN0VXd0bHlUbEpzeGRpL0ExVk0zeWllSkdnPT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?d2xGcmFIM3ZTQ09RT29aSkpvZ0hjRm9yb05EM2V0VURhdkpKMHpuTE8zMDk3?=
 =?utf-8?B?OUkxMnpUQWpzcWphYjVGMUZydDczVENuaDhmbDZVK3FUZmdZSkx1N2YvSUVG?=
 =?utf-8?B?WFRFeDdiRkxFemVXQ1BLZG5tcEdvUEZuZVVRQXVwaGxWTDBQQ3NPOWtZc2d2?=
 =?utf-8?B?VWlvNDVHUmtMZGxNelVxWG91N2FHQisrV3djUTREOTI5ZGFLRmJHZlhRTXpk?=
 =?utf-8?B?V3R1bVp1VEp3Um10ODlEVk45ejZ3bTdOUXZ0ZWVaMFFyUHV1bGpTRmNaU0sy?=
 =?utf-8?B?ZDU4eXladFk1akRFdnlkQlpUL3NCcUxDZGFsc2pyRXVrQ1Q0bnBWZkV2Mjdx?=
 =?utf-8?B?NXBCeTdhQ1Z4RVh2K241ZjdPS3RzSVJwZWk4Q3dlTXBLTktqd255aTdNNHYw?=
 =?utf-8?B?YzdRcnZDeWNWNG1leERJK1dpVVNYYnhpUW5OcEtOK1ZJQmFyaUtwQldVRUdR?=
 =?utf-8?B?clQybVhmelVJL1RrbmFnbTRDemljUEREME1xclBjWmw2cjlER1NFWjl2dXoy?=
 =?utf-8?B?aWZKdXU2VGhlK2R0dEM0cDBXY0M3WjJuaWF3a1pqL0JpY21Ba2RRck5mY2ZI?=
 =?utf-8?B?SVBTL0kxY2p4WURUK0N0R1RoT0pnWldpWm0ydTNRamU0Nnl2cEJtU3NNRjE3?=
 =?utf-8?B?bzFHRXF2Z2d2UjJiYlRHd2Qwdjd0eCtGNU5INHRPeExaSEYrbmVQeE1OQXRF?=
 =?utf-8?B?SDRLS2tVRU5pYk54TDdyendza2NnMXhCMkw2VElMc1lib1hZdlZ5Z0h2MjRW?=
 =?utf-8?B?UjR0NDFybnd5Um5oaXpDN3JSeHVhZy84cXhDZFhTeEFpRWwyQWcyRnFjOUdi?=
 =?utf-8?B?OG9OWlR6VVdmV05od2dldExVSXBWamxrR2kvTmRtU2NGRTdham5zM0hHWDBa?=
 =?utf-8?B?eVhaU01RWWs5TjlzK0ZYQXU2dGY4RUZQeWdaaDlvcXROUEYzaGRCSTdjdC9G?=
 =?utf-8?B?bEkvOGhOT1IxS3Y5L2c0ZVBDaHcxOE1qb0syVEROdGdWT25NMnUyRUM1L2J5?=
 =?utf-8?B?Y3VVcGdWNEJlaVFLQU42dnd0YUJjVUpvUi9wdjUrc1dpbVpqSmZEZVlBWTZ2?=
 =?utf-8?B?YzlsVll6UjNJODlwa09nakJsWlJqMThxYjBFUi9WeWI2dStEZFpoUnZ1TGdD?=
 =?utf-8?B?MDNLdlRwSDVsVkdwc0tDdFljWndpcEU0YkZUeGJxWGFXMjhyTVpSUEQ3RTI5?=
 =?utf-8?B?VDRLeEpJYThJR1d4emVUVzFyZU1jN280MGYydFgrS2dvU2JKekw2UmpHQUdu?=
 =?utf-8?B?S2t2Sm1lb2dFc3hpSC9SdU0xUW9OQkZ5azBHVVlRNjNsMHRvVFcxaXFOSjNj?=
 =?utf-8?B?ckUvSDNiY0I4Y0poUUprZ0p4dStxWVVFazJqZmRqWVVjemV2KzhVNklHVGc3?=
 =?utf-8?B?bjBLMU03Vmhrc1o5OUhCTis4SUorVUt5Ry9JS2dFVmhPcURZY01TSEllVXEr?=
 =?utf-8?B?dWdEV05pTnJQUVJqY2ZjYnRBUXEwNzhlb1AzWDJvUWtPdzNQeFRuWUwzeUJ1?=
 =?utf-8?B?TnlRMnRQd3ZEY1VHcGxDYUo1ZDZCcmhtSzc4T0Zic2twUzE1MWdMMUZVYUVi?=
 =?utf-8?B?U2JuSENJdWlLL2RQeVV2Z2ZtS2M0eW9FWUdzNEFSRDZZUkxtOWFYTEtEaDQ0?=
 =?utf-8?B?UTF5OGl6WGUzZytHUCsxRy9ZajJTOXlDTFp5VEw4dVhGNmxJT1VmRTdaaWdt?=
 =?utf-8?B?MEtRUDFZd2xlNTcwSlpuZmluY2RrbktsVUVsTWpjelU3VEdMaUdiN2k1WE13?=
 =?utf-8?B?blpRNmZ5MDQ3dkQ5MWZ6cTllNzhxdWxFdHl3YjVCQk1jQm95bnBoT3oyS3Uw?=
 =?utf-8?B?bDljZDJWQnZPZXF4UzNDZ0JlWGU4aEh1UkR5K29SZEVXc2QwanJHdHRIanlo?=
 =?utf-8?B?dXlhNXBoRFFoNWJMNEJhRWszUTh0VHJyc00rRTlkQlp4cForbU15d0RyQ3p0?=
 =?utf-8?B?WDRUNVRhTzgvdkRObGF0bE5Ra0JRWUUrN2k0T2VmNC8yZWZPUFJKRDhDWDFV?=
 =?utf-8?B?cmF6WkhPRlN0UkR2bWRuQ2pDbUpqZlBhdWVxWGUvYzFHdWlXQ3ZuRlR3QlUw?=
 =?utf-8?B?STdIa3FCaUhvYkx5bFdDVnBGTVZZU3FlVHJZc3drNThGRGk3ZUUxaXB2NVAr?=
 =?utf-8?Q?WmCP4B/55IlTsAG02N96/7iW9?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: aa01c9b0-5a4e-4a06-a8c5-08dced31e3dc
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2024 15:56:11.4621
 (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: eWo233KrDfdWHjUksHfiJCmGg3cS6aDItUmjIIGY7NDLnQs0VWXhNDj/7pM3VjiJsVIz6iuvLAP6KuFJDNKpQg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7891


On 14/10/2024 20:03, Luca Fancellu wrote:
> Hi Ayan,
Hi Luca,
>
>
>> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
>> new file mode 100644
>> index 0000000000..4a21bc815c
>> --- /dev/null
>> +++ b/xen/arch/arm/arm64/mpu/head.S
>> @@ -0,0 +1,130 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +/*
>> + * Start-of-day code for an Armv8-R MPU system.
>> + */
>> +
>> +#include <asm/mm.h>
>> +#include <asm/arm64/mpu/sysregs.h>
>> +
>> +#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
>> +#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
> NIT alignment
Ack
>
>> +#define REGION_DATA_PRBAR       0x32    /* SH=11 AP=00 XN=10 */
>> +
>> +#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
>> +
>> +/*
>> + * Macro to prepare and set a EL2 MPU memory region.
>> + * We will also create an according MPU memory region entry, which
>> + * is a structure of pr_t,  in table \prmap.
>> + *
>> + * Inputs:
>> + * sel:         region selector
>> + * base:        reg storing base address (should be page-aligned)
>> + * limit:       reg storing limit address
>> + * prbar:       store computed PRBAR_EL2 value
>> + * prlar:       store computed PRLAR_EL2 value
>> + * maxcount:    maximum number of EL2 regions supported
>> + * attr_prbar:  PRBAR_EL2-related memory attributes. If not specified it will be
>> + *              REGION_DATA_PRBAR
>> + * attr_prlar:  PRLAR_EL2-related memory attributes. If not specified it will be
>> + *              REGION_NORMAL_PRLAR
>> + */
>> +.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
>> +
>> +    /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
>> +    add   \sel, \sel, #1
> I think there is an issue adding 1 here, because the very first region we are going to fill will be the 1st even if we intended the 0th.
> Probably moving this one at the end will fix the issue

We are also using 'sel' to compare against the maximum number of regions 
supported. So, for the first region it needs to be 1 otherwise there is 
a risk of comparing 0 (ie first region) with 0 (max supported regions).

May be what I can do is ...

>
>> +    cmp   \sel, \maxcount
>> +    bgt   fail
>> +
>> +    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
>> +    and   \base, \base, #MPU_REGION_MASK
>> +    mov   \prbar, #\attr_prbar
>> +    orr   \prbar, \prbar, \base
>> +
>> +    /* Limit address should be inclusive */
>> +    sub   \limit, \limit, #1
>> +    and   \limit, \limit, #MPU_REGION_MASK
>> +    mov   \prlar, #\attr_prlar
>> +    orr   \prlar, \prlar, \limit
>> +

/* Regions should start from 0 */

sub     \sel, \sel, #1

- Ayan



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 16:02:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 16:02:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819246.1232525 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0k05-000788-1w; Tue, 15 Oct 2024 16:02:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819246.1232525; Tue, 15 Oct 2024 16:02: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 1t0k04-000781-Uc; Tue, 15 Oct 2024 16:02:20 +0000
Received: by outflank-mailman (input) for mailman id 819246;
 Tue, 15 Oct 2024 16:02: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=vOwl=RL=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t0k04-00077v-Aw
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 16:02:20 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20628.outbound.protection.outlook.com
 [2a01:111:f403:2409::628])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dadea780-8b0e-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 18:02:19 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by CH3PR12MB8075.namprd12.prod.outlook.com (2603:10b6:610:122::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Tue, 15 Oct
 2024 16:02:13 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8048.020; Tue, 15 Oct 2024
 16:02: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: dadea780-8b0e-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ai/ikcrOd0jcAKlBXgJ7Tz9AQDmAC326sit/QZmwJMn78iE0hGjoVSDlpXNSxO1VRFIdpQgcJSG899YLj2bZV9YsPywB+2qIbd1eMaq7zxbBuD+aY4x7qKXphKVehQXzD2v1R9smiPDwSPQfqfc0+vzr9GZ2nCyp5hviq8hKKyxrWMd37XUV1K7jCkpm7ZpJ248L3sCok64FskxSmtAobw91l9EACtFDkOceXgGmLRQZ2VdY/Gu4mbx3HZKSqjElWT/rasDExU6IUqc7NSxE+cqqTbSfNNqXyFGBLevWDA+vtquyyV5nsp4Y2QlhtsFcxNJC+QmdzQixjMq0l0EoLg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=d3STdeFXG/dPSbZJRVZQhBxxW1fuCYH3wF6eTLPrbX0=;
 b=S5IzuMaxNtdVtTE6yp0D5dLy1cb1TvS3WTyanjtnIhn9vsKDqioCZUzrceQpzdKWwslyKEIVSHQhv5YfiNAP45OAgnvWfTpcSapg1S4MxQhDkHw9sLvimZeFs7wtOxhg3uut92Y5gqSDJlPGuQd3AWzoBD2v8GAnEPglBpLILwDjYG22n/eGN0RVmgmIx0oQZrEPNPfVHcZfFwFwP41037Z0W9yPrr99AYPPTjymsiBiBNAn5YjOjxq8/+I0vJPxZWePt4ZPamXiFbeJV/U6eqxXii4UU6ZPxhhRp4UaHJlC+N5tW3DdYe9eYQjReGx+sd0OV/99/Huyc/4fORBaQA==
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=d3STdeFXG/dPSbZJRVZQhBxxW1fuCYH3wF6eTLPrbX0=;
 b=4RbpuzbNEYLDpSTF1BIb/NlkKADMMabNVnaRVYNOSdFJwiZhK9I/CzmbAZSouF5AOefulVq80FNMQQZtRGf3Y//OljGLpt4W9r8E/mRpxEPQ380kAASjiSAg5/xijJ0SVCFfmOOOrIcBVTcJSC8u/QuzTJ0fpmkbq1oCpke+has=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <9d0131ae-83f7-4f7f-bf11-78251fed5739@amd.com>
Date: Tue, 15 Oct 2024 17:02:08 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <6B1407DF-6FCD-4823-959A-F516CAEAA309@arm.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <6B1407DF-6FCD-4823-959A-F516CAEAA309@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: DU2PR04CA0188.eurprd04.prod.outlook.com
 (2603:10a6:10:28d::13) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|CH3PR12MB8075:EE_
X-MS-Office365-Filtering-Correlation-Id: 6f74bed2-f720-4c6e-3a43-08dced32bbd6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?aUdickIzK2lTeHgxUWU0QjgzREpKSGlFZDFDNHNVMlRLRFpnbFVURm10OVJa?=
 =?utf-8?B?QXI3UXFLeGQ1N0w0RnlKcUNOSmh0VjZCWHZjaHFsTHB3RGxPbnJwSkZGWHhK?=
 =?utf-8?B?VmxFSmZtRmlPNnFnVk1FNG9zN2dGOUhkcnZLVjBOQitSY0JCY3E0ZWVSZ1hV?=
 =?utf-8?B?MTlpS1R4bmdvY1dBSjdVQjZ6dmlnZmFRV3ZSOThVc2grVGVuOXVsTHhtc0xr?=
 =?utf-8?B?bWRKS2h1aW4rL09HR3pLWE9XS3N6bGQzMkdWOVhpalNwNXlYYmp6bFYwbHgz?=
 =?utf-8?B?WW1WQ0w1U0UyZytrRVhBb3lCTFQ3MTl2MzFBQ3JxMk94V05SUFV6NkRIZGdN?=
 =?utf-8?B?SnBOS2wzd0VaYmJvczJ0OWx6UDhpRlZjdGd6c05hU280eHlvV1NQcDk2cGZM?=
 =?utf-8?B?ZGhjQmUvWHB0YmZ1cVQvT3E4MDdicUowZXlXbWZmYmU5K3NDaXpZUnU4N3lO?=
 =?utf-8?B?eW5JYU82ZGd1V2dZMTdnWkxSbWhRVWN1Tjl1MUtuL2huYjJzVmdXT0NxQkRQ?=
 =?utf-8?B?d0hvZFVwd3N1OFpXcFBaOThvTTdTU1k5Y0ZIY3R4cmxJeGtNbGQ5eVJsK05Q?=
 =?utf-8?B?TnowZkdDdXp2K2hnb2R5d1dVcXIwVW85OWJ1VmRmVnRqRzZBOWJXR01Qakkv?=
 =?utf-8?B?OXJtSU1ma1RFbWxZMmQvZmZPM1dWWTBkTmdlZHpzZGJMOFE1NTM2OXRva2ww?=
 =?utf-8?B?N0ZoSVZkSC9VdStiK1NvZjJORkdSN0IxUW1JdkR2cXQxWE1IRXI0bzlZUUFE?=
 =?utf-8?B?WGdWb0NPS2ptL3hXYTNwZnh0K0ZkVUhIdFlzUHh2VEdYbXpRVjBMSGZLVWo3?=
 =?utf-8?B?bFdhdnBzZ0lqS241VHRPSmk3VVg4TEZwc3FnSUlNR1JJai9Ga2JZZnFJSVJR?=
 =?utf-8?B?VmxvQ0dGVXJtSUJEc0twMHREQ01MQkR4UTdUTnliTWR6ZmhyOE1TZDZjdjh6?=
 =?utf-8?B?dEVmY1BQb2tSR1ZpRzVuUXpsZGl0UXIvaXVzanJhMXdXK1preVlvQ1hmMmNl?=
 =?utf-8?B?QnlLSlc0eUl6elF2T1NWU3NNLzhkUmFkdEZIelNsN09hRThiekRWTWk5azZp?=
 =?utf-8?B?ck53Z0dLQllSMlh4UWVBQkI5NjNYK3NIVWozR21HRWl3QWdpR3dSZlRHRzdw?=
 =?utf-8?B?VFd5c2Iyb01od0ZuVlpqcW5NVmk4RmNoRm01ODJXbzZLUzlFcmpxRTRVMXo5?=
 =?utf-8?B?UUJWVGx3VWNlSmlmV0tXSXBmQm1qU0hLZVdMcExhMFJ0aVNNTitlR2NwMml4?=
 =?utf-8?B?N3ZnTUtjRnVGL0pnMlJDclhkR2tsWHZCdlBuSkRsYVNPWVFUbWZZc3BKK2R5?=
 =?utf-8?B?U3drSUwxU3U4a0RjY0FVWm1JZkI1ZFNIek8vcEh5NGJBa0lmMmR5UTl2YUN3?=
 =?utf-8?B?OU9DWXlwZHUweE1NTmxNZHhaWGw5d0d1UHhhQ3NraUZ4VkNEc21FSTlTRktN?=
 =?utf-8?B?NFZJdUZiVVdId3d4ejRlQWFmZTJzYkhKbW5wTk9HcGZpOG1mUGFjM2hFd1hx?=
 =?utf-8?B?TUUwMkQ5SDNGN2pEeitiUzIzYjVTaWMzNysvTEg0L0hwQTlac3pLM01YVmE3?=
 =?utf-8?B?aVYzM1dXRCtpUXh3TzhOM0Q3K0ozbmYwVVBneklMbVJzUjdaL0tUZkM2bHNT?=
 =?utf-8?B?TFNxVS80R2p4Vzh6OGRSNCtqdnVycVdnQkdaeEFlUDZSRFNWQ3owQTh3QkdY?=
 =?utf-8?B?OFQrdUt1NzRLeC93S1dob1RNd2Q1ME8weGg4eVJCRWJ5MnBYbEcrTzV3PT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cWhreWlKQnNDbVY1MGU0Q3JZYXFaZFpHMjdrUk5xR1U1N2t5cE80VUpSeGpK?=
 =?utf-8?B?RHVzQVZqR3Z1NEVNMDN2VEM3eExxNFM4TE1LaXpXN0ZvZm11Z3FZN0ZDN0V0?=
 =?utf-8?B?b0M0KzU3dlMrbnhkT2kzamQzZ2YxZWI1UjdJQ055azl1c2J4NnpjQlF5YXVJ?=
 =?utf-8?B?M2VUR1ZXd1RKSU1vRElhVlNpOVVqQUhVQkZwUzJZLzVldDVyTW5Ra1N4WUVN?=
 =?utf-8?B?UlZuYjhzSTcwcS9FRm9pOTFqUTkrU1ErWjVWdFM3Q2hQVEt4TFl6OSt2aVF5?=
 =?utf-8?B?SW5NZGc4T3A3eCtGV3U0TWFORUlVczZFUGFwemY4VWRic1gvbTBGa0hYT0Zn?=
 =?utf-8?B?bFNBUWFjODE2M2ptK0tIcWNoazBDdjA4dG9pK2I5K1VrVUhOQWl0NFF4MXpm?=
 =?utf-8?B?dDBhYWNXR3Z5TmVLTlFjbzBjZzd6ZElEa3ZzN2ZwZjhsRk5TY1Z1TmpoL0xq?=
 =?utf-8?B?NUo1MUtHQitkaXZjN3ptMWNvbW5UVmh6VWNHQXUxMWVTZkdTZGtSa1d3QVJw?=
 =?utf-8?B?M2Z0Z1dwYXVCWE83SWJDME1VbHFGUHF1N2x2c1RDNERJNzA3UThjTmN0RTVo?=
 =?utf-8?B?UE9TRldCUkxzd2NpM2tLZUEvaG0yOURzcE9yaFRIblVLU09PQUFmTElYK3lC?=
 =?utf-8?B?czIxUTBJUU9aK3VDR1FWenVWYmQ4RmNYSS9iOGxTaFgrM3BaRFloM1FUOW0x?=
 =?utf-8?B?UFUrNkFXamEwb2xwcjBYNVdsMngxQ29zNk1JMEpRN0M4NjZXMVVZNFpXYkNG?=
 =?utf-8?B?TGhZc3FQNmRaUHB5RHFxWmFKaUpobmI2a1diUWlTQXJNNFVzME9qc2g5eHcr?=
 =?utf-8?B?alBEWjUya2lBdjFwaDhmanN5b3NGM09FMlJscEg3ZHpIcVlnYk5MNlI4aVdH?=
 =?utf-8?B?YVpLNVc4ODZSc3NRTCtQKy80ZVJ4dms1SXlSQ2dIdXNwdjh0djRtNnRDb0N4?=
 =?utf-8?B?UlNpMzR1aStYOGFZTHB0d3lCdDJaSEV0cTRmOUw3WkxpMGFOMUo2d0kvWW44?=
 =?utf-8?B?MngvcFhINFp5OGtNRit0bFY2QXp4ZmRKMkV0L1V6SHdsZFlCdzVkVTZTKzhj?=
 =?utf-8?B?S3RyUEJaQy9xaGh2Njl4SnlWZ1kwTlpoaDhicks5aUNoMklrT1k5NmNkVmJK?=
 =?utf-8?B?TDBWN1ZWaTBybkZNMHFtZzd3dnEraDE5eVQ3aHh0b0hmcWNzOHpvNmZFWk84?=
 =?utf-8?B?SHRmQWdESDNxSURUU1BZZndzTk52ZytMM1A4Ly8yN0FqZ1hwaUVRclg4SGJV?=
 =?utf-8?B?USszTkZQb0xXZG5mQUtrWW1CVWt3Y0tCZVRSUjNpakdNWmlKNWVUTzZqTE53?=
 =?utf-8?B?RGU1UldBWXVHdjhzNzNFempLZ1pVK1lTb2phNE56UjNabllQZDVSTUZ3cld4?=
 =?utf-8?B?YmV1Z3I3b1YwZ1lzZVAvNmxLU2o3bkJkMi94d0xNbWlObU9tQTc1amFkMDMz?=
 =?utf-8?B?cnA1WEs0L2NzWWJQeHNrcVdXUEg1S3JUMXZidWFDcnBvUXRlK2U1aUVwdW5D?=
 =?utf-8?B?QWhUYWErd0VvVnhLK0VqYnFJTkJhbWVJWnNJRjRtRVptanBTakQ2eEwvTFpK?=
 =?utf-8?B?Y2hUaGpvcUc5ZjRuOGx6M1hZbzdWejBTM1FyZ0RsOUNPVSs4a0d1am44b2E3?=
 =?utf-8?B?dzBRN0NsS3k4dFo4Qm5nV3hPUGFCbVowZ2h3SmtuMVJpbVZoOHJXMlBRWnND?=
 =?utf-8?B?OXo1cGJGZVRYbTd0NFlkclBHbDFoaHE5YzhTdEZmN2JhWXl0Z2RQUTZyTmtj?=
 =?utf-8?B?K09VUjNzVHNRa3NETTJTc2Z1VE5SYUdGYWtIWkFzWkhyNzRUeDFqSHZ0MWk1?=
 =?utf-8?B?UUw3WEpuL3d0Tm9XL2lOK0w0RFdqamdMUjZBTXI3cVB4OUdPTG9sMzduRk5W?=
 =?utf-8?B?d25TQ0xOSXdRL0tsRjJVVlFqMXlTZHFkWlJNRk85SmtjOHBCbmVJb1RBMitp?=
 =?utf-8?B?RWdnSkhuWTN3NFlPcjlJcmRBY1QzS3RaM0RORUlHVkJtak5zSHpQYTJIU0xF?=
 =?utf-8?B?QW1teGptZHZZckZCbExweGVNY1l6OWcycHJwZllIUWlTSjFydjA3a3NrdStQ?=
 =?utf-8?B?Ym0yc25qK1dHdFFvTjdCc2R3MnhIdk1TTlFUU3hKSUhVcGxOZnpoZ3FycDJB?=
 =?utf-8?Q?Qn1YedC2AaWvD02OqBFHDQeMP?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6f74bed2-f720-4c6e-3a43-08dced32bbd6
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2024 16:02:13.8044
 (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: Bcf52rjOzwbN8TThlVX113DX+XAvYV3/HI8Tpru519cWKmruv3xYj2xxy7Cih71iSFlkaMj3ebPAQDrVOlZDUg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8075


On 14/10/2024 20:11, Luca Fancellu wrote:
> Hi Ayan,

Hi Luca,

Sorry I missed something.

>
>> /*
>>   * Maps the various sections of Xen (described in xen.lds.S) as different MPU
>>   * regions.
>> @@ -68,10 +92,11 @@
>>   * Inputs:
>>   *   lr : Address to return to.
>>   *
>> - * Clobbers x0 - x5
>> + * Clobbers x0 - x6
>>   *
>>   */
>> FUNC(enable_boot_cpu_mm)
>> +    mov   x6, lr
>>
>>      /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
>>      mrs   x5, MPUIR_EL2
>> @@ -113,7 +138,7 @@ FUNC(enable_boot_cpu_mm)
>>      beq 5f
>>      prepare_xen_region x0, x1, x2, x3, x4, x5
bl    enable_mpu
>> -5:
>> +5:  mov   lr, x6
> Shall these changes to enable_boot_cpu_mm be part of the previous commit?

This is why I had to save and restore the LR.

- Ayan



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 16:02:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 16:02:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819253.1232535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0k0g-0007dL-EB; Tue, 15 Oct 2024 16:02:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819253.1232535; Tue, 15 Oct 2024 16: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 1t0k0g-0007dE-B3; Tue, 15 Oct 2024 16:02:58 +0000
Received: by outflank-mailman (input) for mailman id 819253;
 Tue, 15 Oct 2024 16:02: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 1t0k0f-0007cy-Cr; Tue, 15 Oct 2024 16:02: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 1t0k0f-0004qr-66; Tue, 15 Oct 2024 16:02: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 1t0k0e-0000Bc-QP; Tue, 15 Oct 2024 16:02:56 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0k0e-00045U-Pr; Tue, 15 Oct 2024 16:02: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=QmdSfoYrKl6IyMgZUFQASpbATvpxOX910y0uOEvExOE=; b=M+DfvZLx2cNAuvo4KEnG64SdpW
	F5ORjKttOrPsnGWY0A2Ugiz3GyU82CPpWhHU7bhcxj2I8R8D5NMjxr5dAw9t8ZlUXhmFhjuVhIz8U
	N1KkUixpPu30KmNdT0y27firK7y3VCOYRb9yxGUWjV6uUmqvhiiX0878tZlhcfOJpaPQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188088-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188088: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-pvhv2-intel:guest-saverestore:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm:guest-saverestore:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-ovmf-amd64:guest-localmigrate/x10: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-amd64-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-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-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-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx: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-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-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2:migrate-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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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-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
X-Osstest-Versions-This:
    xen=542ac112fc68c66cfafc577e252404c21da4f75b
X-Osstest-Versions-That:
    xen=542ac112fc68c66cfafc577e252404c21da4f75b
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 16:02:56 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-pvhv2-intel 17 guest-saverestore       fail pass in 188085
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm 15 guest-saverestore fail pass in 188085
 test-amd64-amd64-xl-qemuu-ovmf-amd64 18 guest-localmigrate/x10 fail pass in 188085

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188085
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188085
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188085
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188085
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188085
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188085
 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-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-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-armhf-armhf-libvirt     15 migrate-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-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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-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

version targeted for testing:
 xen                  542ac112fc68c66cfafc577e252404c21da4f75b
baseline version:
 xen                  542ac112fc68c66cfafc577e252404c21da4f75b

Last test of basis   188088  2024-10-15 02:39:48 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-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        fail    
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         fail    
 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                              fail    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 15 16:18:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 16:18:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819265.1232545 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0kFB-0001Hc-Nv; Tue, 15 Oct 2024 16:17:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819265.1232545; Tue, 15 Oct 2024 16:17: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 1t0kFB-0001HV-Jo; Tue, 15 Oct 2024 16:17:57 +0000
Received: by outflank-mailman (input) for mailman id 819265;
 Tue, 15 Oct 2024 16:17: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=QAko=RL=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1t0kFA-0001HP-3v
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 16:17:56 +0000
Received: from EUR02-DB5-obe.outbound.protection.outlook.com
 (mail-db5eur02on20631.outbound.protection.outlook.com
 [2a01:111:f403:2608::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 07f882d9-8b11-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 18:17:54 +0200 (CEST)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by AS8PR04MB8641.eurprd04.prod.outlook.com (2603:10a6:20b:428::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.17; Tue, 15 Oct
 2024 16:17:46 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d8ae:2e16:5a97:1709%4]) with mapi id 15.20.8048.020; Tue, 15 Oct 2024
 16:17: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>
X-Inumbo-ID: 07f882d9-8b11-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=WhnKpW3xRtukcxq3oGDHN9Ld+nHXLlMRSPxgMlOtLE+un6E0F2OdFiKv4LI5LLuIR5PMoicComhWVQ54sMLaQWVlmIuUuygmu03Abiigcjep0J28LYtLJu+WcQDLINYMZ/AzCq+4aHAanpD0bZhVNoL1EtrlaevbjQLJjU+JuXeXoPIPMecJANKyO0yhmIKJ+26AZVzC9Do5t+YUPNLJgaJyrg0yKHelJyujJdMXTr0kjSs0JqfXUxtBIc3SYAgzQcFb+HJUw9zrjqp5/nTgDuHrJC/CC9WzniOpRdlR4bRYi9+ZrDUoLJLnr6DoKe0LTwpcjzCOAo+AB55IrUjG8g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=cYimG7wkMEUNBnqAhLpHNTMnDjIZ7a1O8CLuOjBIzm0=;
 b=dPxEHqN+LApyDPCNtIuWn/5+evIa/khGzgJsT0Hjq6YGhDinfF/3LTdB6F/lAbS/RpGu6J+DXWJq6CVUxBb7f9z/aML2l0xpi0IW8UOx+OSL9ySFfOSfcE1cfwEAYE0GMGUzr+XoKzxWK4lgf4/olYdSf+M14lamPK9dYpehJpSAR+rq4ekZfGzcsmdsC6GuOpTPiCzpZ0jHcoB1oWwy1l5PeWjG3w1jmDV6OEWDS0bQYuG8xOY+IJPpjsPlLTF5HQtRTwrmvWsV99/yx2HO5GC4EUDy/8uXwl9k4BnM4VG0YqKmc/VBv5axi/UzT0rs5iObiw1ilYaoLcbahmFtHw==
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=selector1-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=cYimG7wkMEUNBnqAhLpHNTMnDjIZ7a1O8CLuOjBIzm0=;
 b=fYB8aBBmHSGfD2hlZ4j5/LTP8wRGrZsNm2zWt2wRc+arKY6pNBp2wknRGd7RI9j3OxBtqoX/e49prywOTDUC1iixeEVvoSp4HCBoF2AUsdrF/dBpxvAvJB5nqA6dMzXxTnLNl6JdNnNQj4iX4I18dDTVi8iiIJrlGMtj+i0SEMS++PVXsXIH4MUJt0fUaqYbe0tq8uDejED4r0QWqP1HLJIMo4jXixoLvgEtqsm45wVi79kbkgZgr3DnI194GHMTJH1pvi6FjKdF5a1UaAT/SDL7qKjAY10mylX5ZzywRI1soVI/vkA+GMit0b3OhQQDei8nGZhFaqOz+RHKRgIE6A==
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
Message-ID: <bd780e3d-a3dd-41cf-bcdc-f4d6ea4442a4@oss.nxp.com>
Date: Tue, 15 Oct 2024 19:17:12 +0300
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/8] xen/arm: platforms: Add NXP S32CC platform code
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
 <20240930114715.642978-6-andrei.cherechesu@oss.nxp.com>
 <94dc1668-5215-424c-9dcb-1e343451d464@xen.org>
 <b8419295-cc63-41b3-9f2d-277d81e5f85a@oss.nxp.com>
 <a24807bd-5224-4110-bc0e-946287f5c90e@xen.org>
 <1de8ea10-f801-45b9-ab6a-25465ecd6b76@oss.nxp.com>
 <e2acb3bc-85ef-4d46-b392-5f1dad013226@xen.org>
Content-Language: en-US
From: Andrei Cherechesu <andrei.cherechesu@oss.nxp.com>
In-Reply-To: <e2acb3bc-85ef-4d46-b392-5f1dad013226@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: AM0PR03CA0009.eurprd03.prod.outlook.com
 (2603:10a6:208:14::22) To PA4PR04MB9565.eurprd04.prod.outlook.com
 (2603:10a6:102:26b::13)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PA4PR04MB9565:EE_|AS8PR04MB8641:EE_
X-MS-Office365-Filtering-Correlation-Id: b1efb46d-56b0-440b-98a9-08dced34e7bc
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cmJvaXZ1dzZUMWdLTXZjSVdMQWJmeEl4ZUFreExDKzVwMXI2WlpXODU2Sis2?=
 =?utf-8?B?UjRYbHFWVlFCZWtlZndUcGQ3QzNBd1RFa3V0b3JiOVlpQjRVTTZTcmpKUTlF?=
 =?utf-8?B?eCtrenhBYW9WRUpZTlNMczIxZmtLUVhNaE4zWXhOa1cvaHFoSFUzT0RlQ0JI?=
 =?utf-8?B?ZU9jU0F5TVh3dW44dlhDOTF3RG5BUEp0V0NQdVp5c0JWeFQ3STIwaUtrWXBa?=
 =?utf-8?B?MWt5NWxPZTZzcFl2aVZZd3BWOGRZdndBV2c3WlR6T3czNFBMRjdpTzBpeWUv?=
 =?utf-8?B?UTlVVVZsM09jZHJMcXNEeEV6aXpoS1hNaFlOMnZYRVU2aVhxRUY2VkU5Q1lV?=
 =?utf-8?B?YXpVdnBLWDE4c1FnMFdObWxNdXZ0eFg0cVYwekFFUjRlUmtJMnJKODRxN3h1?=
 =?utf-8?B?TjNVUHZNdm9ZNlZaU2F3ZXNRR3JyL2V4YSszRXAzN0tOUW1FRitSY3NvaDFq?=
 =?utf-8?B?Uk1kN2tSeVc0ZVY0TGpUaHhxNklNMFVDVjVic1VSTlVWZXlzS3F2V0xSWFV6?=
 =?utf-8?B?R2Y3aFNSUkw3NVhWaDRWSlVXaG0wc3plVDlyaUxtTVBjMzUrczNWdzUrZlVr?=
 =?utf-8?B?T084N1ZPVzBEbTR5T0dLUjdHQXVLcDJiYzgweUcxNS9TcDd0NHJkTUdsa1U2?=
 =?utf-8?B?SmtKZ29DdzlvZ1RqNmcwT0RBT3RML1E1STFsc0xkSXlaNUlHVW9IeVJNK2JF?=
 =?utf-8?B?Z1Y0bjRFMWxCczJFWGpTRVJZMTdUbFdjT1FFVUxrSWZpUHJWRUlLdU5xUG9Z?=
 =?utf-8?B?TXFyaVJnU2J4V2xLWjFmUzBvdjcrTXRsdHZsc3hnYVpPa005Mk0vdHFYU2tP?=
 =?utf-8?B?VWRkdGpvSGQzcEd1c1Z2UUs0eHphSkJyeFdDYk1QUG8wTlFJczVJRHgwSWFj?=
 =?utf-8?B?MGJpeXRHM29mNFRaZ3Ryd2liZnB1Y2l2MXFtWXAvTXVYY2YvMEVuWGI2WVZy?=
 =?utf-8?B?OXFuc2QxMktBZ0EyT1NQcVZYT3ByamZzZTE4OC8vUHBKc3U5QnBERElKUWZX?=
 =?utf-8?B?YlIxOFF0YmdVTmxPVHA3TmFPczQyS012TFJ5UVdGeVVhb0dUb2V5RUFadDhP?=
 =?utf-8?B?SnlCR21lTXdxbkVZUUVyUlYyREwvNUIzM092RXhVVkpnN2ZrbXpXMG5xbDFN?=
 =?utf-8?B?blZ3N2xZVlJRVlA3YytTSmNRUW90Z2dJVUx2UGlKL0RyRFA4YmxjKzhySWl2?=
 =?utf-8?B?QnZ0YmpFTTk0TGhwdEhZOTlxTkkydWZtTXU4Nlg1VGNQTUpNNnRZYTdDdXFQ?=
 =?utf-8?B?d2lqNllVWEdJdHh3eUtPeGpESnZDTitIbE9mV2JWTnN2MWpydW1PazlTL1dQ?=
 =?utf-8?B?UUw4SnB2Vkx2SHBBRlhGbmVGQzIxQ0xzaTJIbXJsZVQ5R0lCKzNjT3N2TFo5?=
 =?utf-8?B?NnhPODF1a0NzMENONWh5aDBmS1hndm4wb25vNGNkNlRJcTcxM0FxdmRrQllo?=
 =?utf-8?B?dmdhMjh5VDBtTWxqSktHMGtRMHNWT3ZQTk1qZmc3SWRuNS9OcEJwa2h1Y2I2?=
 =?utf-8?B?NEdjbm5hUldkRk1rVHQ5TkQ4ai9VNzlGSGtyWEh4VGorUnJFZUxxdnoxcUtz?=
 =?utf-8?B?WnZQejcyaWlsUGY4cm1rbmNTVkpWdUp1eEIwdXhIY1VLK2t4MC9wWHZSelk0?=
 =?utf-8?B?SEFreFVRb2Z1R1BFRUFDdkxSUGpKZ0xuT1d0SUdaUUUvaFdrYSs1THFWN0pF?=
 =?utf-8?B?Y3l2ZGlmdzEvbmorSzVPTHVHdnFCeHNWRmQ3TVc4L1hhemxTWHB0VFVnPT0=?=
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:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RW9ITCtFWjFnbmdSRGlZU29qMnFZeEhLT2lraExYWmp1aTBWREppdUVwOXlv?=
 =?utf-8?B?MHA3Y2lrYkYzUzF5NEptV04xRENORyttc2ZpL1NNUEYzUmtXTUNJU1Fxd3Jt?=
 =?utf-8?B?azM5YTVzQ3JQRUF6cWNialB6QkpSemlmbmswVVI0SUdsUDk5elhXcGtyS0tV?=
 =?utf-8?B?VW1yT2c4bkNZTEJXN3BYNVppMkFHbUQ0eTJZMW5wUXlNcG9BdDBRVGplR3p6?=
 =?utf-8?B?ODlVcWMrWEFQRkVBVUdhSEp5OFRiQjBKODJIV1ZpM1AyQmlNTGN1UnA1U0Fw?=
 =?utf-8?B?NStlNnc4cWptN2JxaUpQaVBkT3VTQmZ1OFM2NXIrQjNZdHgzd1dqMm9CMEJN?=
 =?utf-8?B?bUhYNHUvNGV0ZzVDZnZ5ZHUyajR5QXBLY1RzRHJyTU5EaElTeTJVQ0Y3K0lG?=
 =?utf-8?B?NEhCQUhYYmp1TDViWDV0dWpibnkxUWJDQ2dOcm0wTUJOV010QjE5NzV3UEtj?=
 =?utf-8?B?U25Oc3d0OUVPMVlSNG9ZOXNkK29tMHd3SERhdXpzQys3QmtmbUhmbVBsZ2Y1?=
 =?utf-8?B?eDRVTzR4ckttcUI3eGVOdlkvemRKSFNzaHhILzNxc0lLdmkvQTduY1VOV1BB?=
 =?utf-8?B?Z2VNTGo5SlBUL2c3bVgrZTJ5UGZybzhXNUd3c1QvemtXckJab2RMcDhPSVlZ?=
 =?utf-8?B?MWt1WlNXMEd5VG5HL3BINVhkQWEvZmFEenM2ZktibmxuemNrTzBNaUVWTmZw?=
 =?utf-8?B?dGJMTEpDUXRaenlqRTZ1NXhqai9Qa2poOFFTeWVpM1k4bVBKeGVKalhNbEkz?=
 =?utf-8?B?Sk5JVUcxdHpEUEZpdDQzdkZDcXVtSCt3bXVVbk84bWRMTU0xTElrMXBmd2xv?=
 =?utf-8?B?ODRIUDhFTnZsL1Z3ekhpOGpiN2FxdE9tcml0ZHYrd3plb2FGanlYcElwekdB?=
 =?utf-8?B?dlJQdFR3WE9BQlp2UnZOT21NUktRMFc0cnpBR21xMzl4Qkx4MEQzVmxqTGM0?=
 =?utf-8?B?TTdkNHVKNkVSdGM5aW9CSEk3SWNwVko4N0FZRDk1am0zV2dIOVRFeHdOWWtq?=
 =?utf-8?B?UkRQaVBhZmZKR2Z4TkdNQmhMMEgycVFtWXVkK2s3eHU3eWxZbW9sMUJMN0VP?=
 =?utf-8?B?aUNRS1RCQW9aV0tReENOSU9GbEJPY3pESi81ekcxeHNHNmZmT3dnOUpld20r?=
 =?utf-8?B?dms2NVAxUzBhWXk1eDlDbWNFb055N2NpdTFQMExYeThabFlRMDM2dmd4TitC?=
 =?utf-8?B?SWVBWDZFNFh0NENGU2V3bTl4Umx2WjNwU3MzRnJick1iQ28wb0pobWdjT0ZR?=
 =?utf-8?B?dE5xY0R2Qk1qL2VOTUFoZXRNYVFLc3U1dTNqKzVLKzRraWhIZ05JNnlTbHdO?=
 =?utf-8?B?T3JvTVV1R0pQYXBLUDVzRTAxemlzM25CL1VVYUpuUzFzcFJsSjMrYVEyd0Rs?=
 =?utf-8?B?TDdscGtpaG41dmFvREw2ZlluK216RGlpRHpXenQ5UUsrNGlXdUVvbUVxeEtK?=
 =?utf-8?B?d2xoeDlnbXN1eFU3RHpjL3FLbXNUaFI3UzltM1cySnVFdXJEOXlvancyTXZL?=
 =?utf-8?B?bFRjUVp4aHZyMW9vU3hHelhxckRLY3VoTzJZNU9PYVVUWEVLRWFmS1pGYyta?=
 =?utf-8?B?N3NLTHR1VmV2VnZYMjRNS1UyRWJrV28vUHQ0clJRcFAvOCtMbXRYeFI0Q1p0?=
 =?utf-8?B?YTNqZ3NXNEN6V3FEbWtkMkJabDhXWEdKRHh3V3VyRFBxT0lINlFOUFY0N1pE?=
 =?utf-8?B?UWhpK1p4TDZBZEc3S3krSng2ZWxwRlF6eTd0eUViUk9PczhCZWlVTGtUT3J4?=
 =?utf-8?B?Rm9JK0dzV0Rid21oMDlobWZRdklCaWhycUI3OEtxMlFWYjhjelc5MmhHZXR6?=
 =?utf-8?B?WW8vckQvSDJ6S3JuZFNMQXZ6bEk4TDQvaUxVaTRGSGF2Ti9HNlBIQWFqMWlJ?=
 =?utf-8?B?YjJtYS9hczNQaVdkeFRmNEZ0TnppWWt1SG9pVEVTYTFoRklsRUl3dFZFWnZs?=
 =?utf-8?B?R0ZFUlY3aTcrWUFwUHR5UVVwYmF1RHpxbXdMeWk3eG1GNVB4aWtVYnVtbFJy?=
 =?utf-8?B?S0hJQ0grbmh6aVVmNGdoQzR3cXFCVWtxOWJFQTZ5Y25iZTNUenc0RytRaGs1?=
 =?utf-8?B?NUlQWlBNY1dnNVlJalF5S2tWL2VxNERHS3FLam1NVEREZTZoREZudjE3THVT?=
 =?utf-8?B?eEN3K0d4cmlaUDZTekFPQTdpcGg2U0FXM3hqTmR3cHRzMFpvYVJyQWpCZElv?=
 =?utf-8?B?OEE9PQ==?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: b1efb46d-56b0-440b-98a9-08dced34e7bc
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2024 16:17:46.3997
 (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: zFnbWtEzolA+VEyxMmg9QRmB1CSW6DmR7bcKzrOXL2DkV0pr12lh9GXowXcQZrgGTe6K/kZ6RekCnExujP4crV9v65FDkQf6T0oiQYRABuM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8641

Hi Julien,

Sorry for the slow replies.


On 08/10/2024 23:31, Julien Grall wrote:
> Hi,
>
> On 08/10/2024 20:01, Andrei Cherechesu wrote:
>> Hi Julien,
>>
>> On 04/10/2024 19:24, Julien Grall wrote:
>>>
>>>
>>> On 04/10/2024 16:37, Andrei Cherechesu wrote:
>>>> Hi Julien, Stefano,
>>>
>>> Hi Andrei,
>>>
>>>>
>>>> On 01/10/2024 13:01, Julien Grall wrote:
>>>>> Hi Andrei,
>>>>>
>>>>> On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
>>>>>> From: Andrei Cherechesu <andrei.cherechesu@nxp.com>
>>>>>>
>>>>>> Add code for NXP S32CC platforms (S32G2, S32G3, S32R45).
>>>>>>
>>>>>> S32CC platforms use the NXP LINFlexD UART driver for
>>>>>> console by default, and rely on Dom0 having access to
>>>>>> SCMI services for system-level resources from firmware
>>>>>> at EL3.
>>>>>>
>>>>>> Platform-related quirks will be addressed in following
>>>>>> commits.
>>>>>
>>>>> I don't see any specific quirks in the series. Are you intended to send follow-up?
>>>>>
>>>>> [...]
>>>>
>>>> Well, we could use an opinion on some SoC erratum implementation
>>>> and if it would be acceptable for you or not, from any of
>>>> the ARM maintainers.
>>>>
>>>> The erratum is about some TLB Invalidate (tlbi) instruction
>>>> variants (by Virtual Address) which are handled incorrectly
>>>> in some cases (for some VAs), and that need to be replaced
>>>> with broader versions.
>>>
>>> Can you provide more details:
>>>    1. Is this a processor issue?
>>>    2. Which VAs are affected?
>>>    3. What is the impact if the erratum is hit?
>>>    3. Do we need to do anything on the behalf of the guests?
>>
>> Sure:
>> 1. This is an SoC issue, present in a subset of the S32CC processors family.
>> 2. VAs whose bits [48:41] are not all zero.
>> 3. Well, TLB corruption.
>
> Can you provide a bit more details? Is it a corruption within the same stage/ASID/VMID? IOW if a guest corrupt the TLB, does this mean only the stage-1?

Corruption might occur in other TLBs from the coherency domain.

When a TLBI by VA is broadcasted from a cluster, the invalidation is not
handled correctly in the other cluster for the affected VAs (with
bits [48:41] not all 0). So the other cluster cores' TLBs will contain
stale entries, and we need to use a broader TLBI variant instead.

It applies to both stage-1 and stage-2 translations.

I hope it is clearer now, but let me know if I can help you with any other details.

>
> Also, if a guest manage to corrupt its TLB, does this mean it could end up to access host physical address it should not?

Indeed, there could be mappings leading the guest to access physical
addresses not under his ownership.

>
> BTW, do you have any more documentation about the erratum?

The errata document for an affected processor variant is publicly available [0]
on NXP website, however, it also needs registering. The erratum can be found
there as ERR050481.

[0] https://www.nxp.com/webapp/Download?colCode=S32G2_1P77B&location=null

>
>> 4. There are instructions affected at both levels 1 and 2 of translation.
>> The guest will have to work its own way around it.
>>
>> In Xen, just `tlbi vae2is` (only used in flush_xen_tlb_range_va()) seems to
>> be affected, and if we go with the 2nd approach from the ones proposed,
>> it should not be very ugly to implement. I am of course open to any of your
>> suggestions.
>>
>>>
>>>
>>>> It doesn't apply for all S32CC platforms, but we can use the
>>>> Host DT compatible to identify this. My idea is that we define
>>>> a platform quirk for this and check for it using
>>>> platform_has_quirk().
>>>> Then, we either:>      - modify the definition for the affected 'tlbi' variant
>>>>       in arm64/flushtlb.h to actually execute the broader one
>>>>       if needed
>>>> or:
>>>>       - define a new wrapper for the tlbi variant we want to
>>>>       replace the affected one with
>>>>       - check for this quirk before its usage and call the
>>>>       more potent version if needed (there's only one
>>>>       occurrence of usage for the affected version).
>>>>
>>>> Number 2 seems better to me, it's more customizable and
>>>> it's similar to the existing handling for
>>>> PLATFORM_QUIRK_GIC_64K_STRIDE for some other Arm platform.
>>>
>>> I need a bit more details first (see my questions above). But if there are not many VAs affected, then we may be able to re-order the Xen memory layout to avoid the VAs. So we wouldn't need any specific change in the TLB flush operations.
>>
>> I'm not sure what to say here, we would need to have the layout
>> limited under the mentioned VA range in our case, right?
>
> Correct. Is your SoC going to ever have more than a couple of TBs of memory?

No, that shouldn't be the case. Is it possible/preferable to do that for Xen?

>
>
>> What
>> about the GVA layout?
>
> That's control by the guest. We could potentially tell the guest less VA is supported, but it is free to ignore.
>
> Can you clarify why we would need to care about the GVA layout?

Right, the hypervisor should not limit it. But the guest is then
required to handle the workaround for stage-1.

>
>
> Cheers,
>

Regards,
Andrei Cherechesu




From xen-devel-bounces@lists.xenproject.org Tue Oct 15 16:19:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 16:19:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819274.1232555 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0kH3-0001rq-5O; Tue, 15 Oct 2024 16:19:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819274.1232555; Tue, 15 Oct 2024 16:19: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 1t0kH3-0001rj-2Z; Tue, 15 Oct 2024 16:19:53 +0000
Received: by outflank-mailman (input) for mailman id 819274;
 Tue, 15 Oct 2024 16:19: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 1t0kH1-0001rW-6y; Tue, 15 Oct 2024 16:19: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 1t0kH1-00057M-3O; Tue, 15 Oct 2024 16:19: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 1t0kH0-0000ce-NP; Tue, 15 Oct 2024 16:19:50 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0kH0-0000sr-My; Tue, 15 Oct 2024 16:19: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=REzDtHnaPgtjpr6nH7NkMnKj3Z0JYN4VnwDK57y/5NE=; b=6J1Ast4/P/Q5nAbZXLigKZ1lwu
	0NgDoSa4rJUiklgQiimAL871Ghxz2PaOyojylDX/+Xc2iOb2Q6IgV4XkzSG1QqJaTDH1RMm5wHQJN
	M/S86P+tsecd+jM3E7ent65w6nlcO4YDTuxlxJVqIP3KtgGwaLO66pxzGnqHJoQUw91w=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188094-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188094: 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=3f6ee3db2e878398cfcde725399b4d1b04e92269
X-Osstest-Versions-That:
    xen=542ac112fc68c66cfafc577e252404c21da4f75b
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 16:19:50 +0000

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

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                  3f6ee3db2e878398cfcde725399b4d1b04e92269
baseline version:
 xen                  542ac112fc68c66cfafc577e252404c21da4f75b

Last test of basis   188084  2024-10-14 16:00:23 Z    1 days
Testing same since   188094  2024-10-15 13:00:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Federico Serafini <federico.serafini@bugseng.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  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>

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
   542ac112fc..3f6ee3db2e  3f6ee3db2e878398cfcde725399b4d1b04e92269 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 16:21:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 16:21:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819282.1232564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0kIi-0003Kn-I2; Tue, 15 Oct 2024 16:21:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819282.1232564; Tue, 15 Oct 2024 16:21: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 1t0kIi-0003Kg-F0; Tue, 15 Oct 2024 16:21:36 +0000
Received: by outflank-mailman (input) for mailman id 819282;
 Tue, 15 Oct 2024 16:21: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=vOwl=RL=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t0kIh-0003KZ-Kf
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 16:21:35 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20609.outbound.protection.outlook.com
 [2a01:111:f403:200a::609])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8adc137c-8b11-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 18:21:34 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by BL3PR12MB6596.namprd12.prod.outlook.com (2603:10b6:208:38f::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Tue, 15 Oct
 2024 16:21:30 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8048.020; Tue, 15 Oct 2024
 16:21: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>
X-Inumbo-ID: 8adc137c-8b11-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gokRRTqRtgHS3/bgLm6JAAXtZmYJFQEKNwYtjdNucb3n0fISbj2UiyFYxKBdMPI5OUxuOzsSNciTk/bVIyP+8pUbu6BtTGMWtbi/MPLcQCLNpQtL8usV3pWz+PSUl8cG5KhiBUW4iRex6cRPPrhBuPQa+pXIF+fqSlQFaw0Kg2779nqeemaHRxYc5eRWAQRijujvhBqQQjeFFvyN0Q6cFylXk1HRNBiyPpjrcviWaWemAYSUs0puJ/iyGCiiSRHPo4zEUyVH7Xr4qsW8OeFPs7kYNGo27PbVXOIqvCoEume+Qt156seuSvynrorVVRei2YIucps9mC3v/Ca+t32Riw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=ZQrQppJB6TTVI7vJx1MRJLTl6xSn9nFJXMYCbsX+00A=;
 b=q1cnmuRvM7/P9ZrEAKysNv4ZLNjIWmM6VzDGRfuYUJLRFOqRD5evmtgPr3TVTPwk4ETJBn/uxlVRL8tDOikfZPNhjsxxwV5zr6qVSUCVMBWOuq0+tmqb9qRngggm4lS3nV0f81usECM12f0jyf3ht/iS0GmNyXdCrL4L13iBL0wWrq5uZiZyHFTvHiDPAcm/xhBBe7MHBfLXXM1eG+B99GTE88s+DHZFqzQ+XGOxtbv8n1CmpOS4RpXB81BN0XVtpx0rMCY1eK1TZR4xj6u7z3jCeuXk/jJ4IiSC1zlCqwPArqC0oSrBLhbKDErikjrwpplLMT0V5Xuuy4O+UJSunQ==
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=ZQrQppJB6TTVI7vJx1MRJLTl6xSn9nFJXMYCbsX+00A=;
 b=bPzZjl4tJuUtZ/jFtoAqvgdaArzVhFdmFpalEd0OEd0WHimRUMqW8lArj0QftCZePK2W0udpvKxqLx40DQXa+5Nk8K67OgLGBiO7OIGrxBveUs4GAHARbAviYxBvl8j2Z/1huyWJhdJfZQyQfeAJ0Lu002N8nZb0udQQTQlbmnQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <7b8342e8-ce51-49bf-864f-90085a5a927e@amd.com>
Date: Tue, 15 Oct 2024 17:21:24 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-3-ayan.kumar.halder@amd.com>
 <9A01BB97-2CA9-491F-80EA-7B7D81B553AD@arm.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <9A01BB97-2CA9-491F-80EA-7B7D81B553AD@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P302CA0017.GBRP302.PROD.OUTLOOK.COM
 (2603:10a6:600:2c1::8) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|BL3PR12MB6596:EE_
X-MS-Office365-Filtering-Correlation-Id: 2e080124-5ffb-497f-7b5f-08dced356d14
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?WHhiWjVXYjhCdUx5cjFjNTVYKzBPUEtXYll6ZWhZaDZEUGE5dDg2amFqait0?=
 =?utf-8?B?QW95TEg0QkFSOWw4YTREc0pWbXozWElNKzkxVGdFbVU3Z2o0ZjNTUU10djhF?=
 =?utf-8?B?YkFBcUtjWG1FRkkzMkdLRTQ5ZU1uN21oNG9KL0dOSjhzSEtQZzZnVVVDMUFk?=
 =?utf-8?B?ZnBuWHlYNFYraHIxaTFSRzF2VjFRTnF2V3dHWXIwLytRNEVwVEhRT0VuWWlQ?=
 =?utf-8?B?Q21JNzVGeE00UDM4MHZNSjlIbzg1QUJvYlR5SXdBNTQ0K0xnVkRuMC9lNFQ2?=
 =?utf-8?B?bVlFeE11Z0d3djRaMjFnM3c5cEJjVzVnM3NEZGpiV1FkSHFrN2dRK1BjckFh?=
 =?utf-8?B?Nm1ESjBrL3NmUGF1S3JhRnN3N2ZmRWQxTGY1MU9qOTc1N2RsNlRaMEc5eXhv?=
 =?utf-8?B?Q3lTTC9PclROR3A3cmZjUWlRZi9CeHFnN05weUNOZ2FGTWtkQWF1TjB6VUlu?=
 =?utf-8?B?Q29DZlBQUy9vYytOamo1aXBYM3c2S09hODNiaTBXVk5hWHZXVjZ4QUl6Vy9F?=
 =?utf-8?B?Y1Z6TWNxS3ZYZ1dQeW11cEJHbDB3S1pDWHVOREpQb2RoQnhFVjZFNFRiQTNs?=
 =?utf-8?B?b1VQb0oySjBBdlU1djBPTUoyVFdkbU9sK1hCSFFPeFhxYzdQL3dMZkZJemhD?=
 =?utf-8?B?cnhzc1laT1lUeCtHbVlGNjNRWC9kMXBpbGZYdE1Lc1loUkhrSVZZMGpXMCt2?=
 =?utf-8?B?NWh3STBPRVI1bTdvYWxsbkZ2RHgzZEd4emxlWHRROHBpR1VnVUNLNkdxbUx0?=
 =?utf-8?B?UEo4bVBaTkU4YWZYOHBZUTdJdW1DQVVvamNQNXFCUlpIcnk3WWRiOGtVaC9i?=
 =?utf-8?B?SFlzZjlYbDkzeFBTemZOVGorWkR5Y1VoVmdxNUFwbEdaYThXZUtQcCtMOTYw?=
 =?utf-8?B?UEI3cmxMcEliNmZrbGZNNnVMVjZEdFNEUUZtRElhMXE0eGlJVkVHdDZqeGdp?=
 =?utf-8?B?TTZ3MUVQWGV6YTVSYjlRMWFzVkd6bUxad0hUdzl5b0c3TC9SZkZCRDJaUlJO?=
 =?utf-8?B?ZTFPbE5XQUFCeE9SaENUN3lqbm1nMWpsTFN6NHp5Tyt2UTFZcW5hcXNCWG40?=
 =?utf-8?B?MUU4Mkx4L2p2d3JPWUdWVStNNVJVZWd1V09UOUJnVUVXM3VVbTQzamRkR0FC?=
 =?utf-8?B?cjhBaTNpZjU5QWh1YjJyU3VkUkhJdXNiMWM1WXRSaWNXWHFPeHpiSmt6QW53?=
 =?utf-8?B?Rm5kZzNMT0hZc3BJSVNURHBnZ3ZOT3pZVkwvbUFER3lTV2RkVmwyYjdFNFhS?=
 =?utf-8?B?VzRRcm9XdGcvS1FxdmYwSVpuaUJIMVkyR05udmZkMVEzVy9YanpodWxwcHdk?=
 =?utf-8?B?T1Y0UTNLa3RMYmpUNzBpOG5mUzdxa0FxY0dncllDTFZyNnNCa0N2Sk9TTjVj?=
 =?utf-8?B?K0ZZb29peHpKaFdndGpsbFlneVBoWm9vK3dHWVpIWU9taGY1VDNJMzhVTFpE?=
 =?utf-8?B?Nkk5ZDh4SmYrSTB5NTlUMkZZV3p3b2RROUMxTHpHbndSSEdxa3F1Y05Xbk5N?=
 =?utf-8?B?MzE0VnpKTGVWWlRNUmZaUUpta2tmbWlxQ3JNdmRmd2EwWXZXdjZYMHREeHRE?=
 =?utf-8?B?My9WZEt4SDdTM2RVK0ZqS1U0bDlyb2pKUVQ5SG5Tb2hIWTNQbk0vSGZsakYy?=
 =?utf-8?B?U1Z6N1B4cEpwRDNjMnMyOVd6SnBuMVNzN2hrMnRXbEZ4VFUzTk9Xcitpc3N6?=
 =?utf-8?B?YVNIQzNKZEMrWlRsZUtOeEg5OFJ6c1hFT2xTa0JtKzNuUUxTbzUvWWp3PT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RVcxaU1zZWZEUG9QNnhpNHFXd2s3TitIdTZSbXJIb0gzRjZ0MnhtQzJCclU3?=
 =?utf-8?B?UU1iNno2cElnTFVWbVVZanpKek9jVEN1NXZoTEZnbTZpcnZEU3JUckdRVy9j?=
 =?utf-8?B?T3hwYUJWOTRaSkJ5SGkrT3NZdEkvRTc5djIxTU9WeldLT21kNWh5RElPS1ls?=
 =?utf-8?B?OVlud21HQnR3RzBVc1d6RDVNcmlUMHA2QmtyUFphR0VNU2ZYUm56MjZHTVNx?=
 =?utf-8?B?UW5wYnZzQkN1anNDd1hBVlpsa3ZJVEFZdmtKWHh6YmhxUzlXaWEzZGVHaUxO?=
 =?utf-8?B?ZUovUldDcTE4RWZiTUx1Sm1GZGUwTVBUTEk4cnBRZUpSRGpYVHpyTTlsQnVE?=
 =?utf-8?B?Qm1aS0ZsYTFJV3FPeWNrRnRhbDJ3ajNmdXkrdlNmdlo0dmM0SlM5U3BucmNj?=
 =?utf-8?B?OWN5eVlkMmEyYktuTUtBMHZPcEFjNGRKWDdTNFBod1lXSkpGMVJ4YXBBcUpu?=
 =?utf-8?B?L0RhOGVwajhkdFQvYWtOUzlCcTU4TCtlQ25UVkRieFhOcm9UOVpXZ1JsU2p3?=
 =?utf-8?B?RzRvaERHemdaTmJoK2tXNTBrRzJwMTQ3UVJVanJOUlFBdHZjZ3lxMWowbGJF?=
 =?utf-8?B?LzdnVVprc0xqUW9SUXBJcmgraGppbC9DL0hyUXRCcm5Ta1pKYUNIbmtyL1Ro?=
 =?utf-8?B?WDk3Z0UwOXJ1ZnBIU2U2Q1FGYTFUelJsdkJGc0dTdER4K0JXclhKUDlSVUYy?=
 =?utf-8?B?Um5aQWQ3RmVVeFhzRXBGZmZLTFI0VEVDZGZxWnl0eFpiNjVaNVozdUpkQ2JW?=
 =?utf-8?B?MXNBWHBwRDQ0Z3JSbFFIVnNhZkZFSUh6RFNxbDNMcDNFNlVSZmdySXRqOEYy?=
 =?utf-8?B?OXZueVdiS3k2ZHRvUWR5L0tUc0lUQktJdHU4dVlaQTRpV2QreHhpTkVrRGYw?=
 =?utf-8?B?OXJSMWtLZWJMSDVxOWJwUWkxTTQ2N0pLOVh2aTB3d2tUSCtIbnFsSUtLTDRS?=
 =?utf-8?B?M1dMT2k1aSsxenhtcDBuakJYMThUbjVUMGdNdnN1WDIvRVpnSC9TSWVKY3hk?=
 =?utf-8?B?cGM0NWsrSHkveHlhNjM2NjRGTVk1cDJXRHRuMTZISlc4dkd5OEdHTFNmaVo4?=
 =?utf-8?B?dFd1OU1OVWJtQldtWmdER1BFbFlhN1pUZDVwZ1I4a3VscXVOakFzaTNyeDFZ?=
 =?utf-8?B?aG1JZUR4M2FKSVoxVEM3SE5USkpDTlpRNnBqRE9SQkpkeWtzSnUveDZSbCs0?=
 =?utf-8?B?WGNtM2k5QVRXU01GT1BrWnZqY2xrbG1SWnVqcFhxdFovVVNkdVpLWVhNVmp3?=
 =?utf-8?B?Ujg2c1AySGpFb0pCOHV3R1RmUnFnYUJScks2TmhQL0ZDSW16bW1YMUd1ZW5q?=
 =?utf-8?B?eVNwb00xai96ak1MUE9aUlkvdHZmMHVzbE0wTjdBRlpsZlZJOXU1UklTeTl4?=
 =?utf-8?B?MmU3UVdBY3RVcUpVMk9wWDFrenpXUzRnM3k2UXcxMWlBL2x3dUF1WTVvWkY1?=
 =?utf-8?B?bGZwRXpzYnV0OENWQ1dWNlg0VWdoM1hJMk9OQzcyRjAvVXZQUmNjNWtkUVlG?=
 =?utf-8?B?S21Idk1XWlBObVhhRkdLK3h2NStWK1lKdGIvOVptZlhKNDNObUVicnY0QndV?=
 =?utf-8?B?ckRTNjFmditUbWlDczA4MzUvSmJGZ2MwL25SNDFUQWpZQm1FMDEyWUxFUmdX?=
 =?utf-8?B?TkM5MlFiSG96MEtrNGdwTGhsZkViVHljVGhYZHY4L213L3BrUzNHbEo2RlVU?=
 =?utf-8?B?RjF6ZHNzSFNrRUNHNDBva2lHOTQzTmRrdEN1N01KNWNmSDBGRVFyWjE5Y1dy?=
 =?utf-8?B?WitHaVgzblVFaDJvc1dabFYrOHFMNlNMUUhVU0VuUFpjRDdxMWtXTFlyS0FK?=
 =?utf-8?B?dURRZzdqV1pxYlhsWFJvOG5DSVpQMFJ3TDVETktTWGtlWThlLzZoNVB1a0Rv?=
 =?utf-8?B?eG9wM0lSNmpBbjFlWW9NdXRFa1k1RWFVRlVqS2Q3NFExQ05Tak0rM3E0cVAv?=
 =?utf-8?B?MTJmNkh1MEVwVG5xVmt5VVE2MzBmaWZTTS9CYUJhNUlxU0paU0tsMVhTcEpR?=
 =?utf-8?B?SUxJT0VGdVA3WnlyZXVyMUVrakgzN0ZDQ0tCRElQZUNYYU50RnFuellKdnM5?=
 =?utf-8?B?NzE4SUR2Vm9wRmRoK2RwRnlLQUJBcWVUN2czNGRKbzFqak1LSHBPK3QwcjRi?=
 =?utf-8?Q?U8STRByUNpjXfVj9JgQgiqqze?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2e080124-5ffb-497f-7b5f-08dced356d14
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2024 16:21:30.1634
 (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: YybdITk/EVkH+Lw/onDh/Y7LfBPwM4kE3jQBpx/LDVSVCEaNRcL2FMSk5U819JE7OIu5T3vJyYYAtaK8sxSAww==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6596


On 14/10/2024 19:43, Luca Fancellu wrote:
> Hi Ayan,
Hi Luca,
>
>> On 10 Oct 2024, at 15:03, Ayan Kumar Halder <ayan.kumar.halder@amd.com> wrote:
>>
>> There are features in the forthcoming patches which are dependent on
>> MPU. For eg fixed start address.
>> Also, some of the Xen features (eg STATIC_MEMORY) will be selected
>> by the MPU configuration.
>>
>> Thus, this patch introduces a choice between MMU and MPU for the type
>> of memory management system. By default, MMU is selected.
>> MPU is now gated by UNSUPPORTED.
>>
>> Update SUPPORT.md to state that the support for MPU is experimental.
> Maybe I’m wrong, but shouldn’t we add this only when MPU is supported?
> In this case we are just having the Kconfig setting.

Actually we need this config option for the subsequent patches. I am 
assuming 'UNSUPPORTED' also means work in progress or partially supported.

- Ayan



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 16:24:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 16:24:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819287.1232574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0kLp-0003tm-W2; Tue, 15 Oct 2024 16:24:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819287.1232574; Tue, 15 Oct 2024 16:24: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 1t0kLp-0003tf-TT; Tue, 15 Oct 2024 16:24:49 +0000
Received: by outflank-mailman (input) for mailman id 819287;
 Tue, 15 Oct 2024 16:24: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=vOwl=RL=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t0kLo-0003tY-RH
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 16:24:48 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20610.outbound.protection.outlook.com
 [2a01:111:f403:2412::610])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fe1e822a-8b11-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 18:24:46 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by SA0PR12MB4416.namprd12.prod.outlook.com (2603:10b6:806:99::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Tue, 15 Oct
 2024 16:24:41 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8048.020; Tue, 15 Oct 2024
 16:24: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: fe1e822a-8b11-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YkAW9mGykmVbFPyFIDLmmwpzaWirwva7Le1P0RHWeoOhbYXPbFLWW0nYxQG2fwtTVSTDHKOyKBQtw2lsX/pYKYPXhTOhda2jwzetdORwh7tf4sPpVBHcolD9fWIEsIQWZ8Z+rJKhenRZ02jyMM2OAUu9oS/dEggEK2H9snHU59dIpTh6lxy0UNxV1MJHdxRh3SiEEDjzbXDISQUq77kddbc+VnYrPYV0/Fdfx4xccuM9lpwjCdv103mMuBQttihta4pyIezrH1WTDLqn7R8AWI9ozGnSWYruqFIMVbG5PegLVwy2BsD60M/xtoPvvxOFFQd0rQ1idkMWldxDFcq7mg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=vBZ8LVIcC70PBPUX+KlhAPi9vNtEL7oq5bAD7s2TGjY=;
 b=osJQJvhvwy8IloGHDNrjYxFSQL6OnR45R5mS2DyH1/ccobI61SxsI0z5498Nd+ugoOIwndc/fTZQdZFtK37/EcbM0f2eRaH+e6e43y1q098JpumydjUQLZGolJDoEUIAQAfEOIHcYiQ/Klw2tz5WrPXQloo4q18Q7yAZ/vmeiWvyUypmVLbPcSTPisUPvJGpcJUsiVARKGuO1nm2sWf2DLqsoovZGl7GN/Q8NnI3Cf6VJaKFVat/jwzcRK+qeqTXMB5O6j58Hh8qZePNLpolSLCKXyZ+7F4B495UTG75ezkifMTAn8QcEMs2/nWyxvBcIMCNrLTTKdKJfJGNbeTOFQ==
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=vBZ8LVIcC70PBPUX+KlhAPi9vNtEL7oq5bAD7s2TGjY=;
 b=trihhXRFBUJVTswQlbMRsyWGF+Zo+AS3upJT8r+L3PRsVbsLhHTxElHuIz608peuZZHauuKb811Ox7wTlraKXdCoCArl7uDeABf8TadXkYU/UwbukGaipIRKKd6VcoPSKSeKZDVb7akQQheR5Z7+Atc6Ti8+VXwsg16QIcXj6fY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <9c19c7a3-2e1e-43e3-88c4-ff8c02b4adfe@amd.com>
Date: Tue, 15 Oct 2024 17:24:34 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Wei Chen <Wei.Chen@arm.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>,
 Jiamei Xie <Jiamei.Xie@arm.com>,
 "frediano.ziglio@cloud.com" <frediano.ziglio@cloud.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-4-ayan.kumar.halder@amd.com>
 <8AE12285-F017-4FC9-9F9C-6218257211F9@arm.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <8AE12285-F017-4FC9-9F9C-6218257211F9@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: MM0P280CA0112.SWEP280.PROD.OUTLOOK.COM
 (2603:10a6:190:9::20) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|SA0PR12MB4416:EE_
X-MS-Office365-Filtering-Correlation-Id: bf00768c-1340-4e76-31ae-08dced35df3d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?Qnp6djBzTzNycE1TN3VCdm1yUExWZWJGakJ5UlFXYmVERVJiQnlkSEJNMnNa?=
 =?utf-8?B?cE9nM2lvWFJXeFF2TlZLbXhKcUtrMldmS2gzcVNYZml1Sjhlc1pHWFpFWFVO?=
 =?utf-8?B?VkJaNEtZaWRkQXgra1NGSk9LZkMzS2RPNlFSNVdueHU3ejllVXcvUHBvcTc5?=
 =?utf-8?B?azV1MnFZcXVEdmdyK2Q4MWRKOStsR1RQeVVZWEU3RSsxUzE2VDIzTEdTZzQr?=
 =?utf-8?B?TFhvY29hcndVTVBjd0VzT0ExbWRPTXM5TjBvZVprSE9tU1BtK2JHelp2bTBp?=
 =?utf-8?B?cnU5QUVXdGtnQjgxM3JzYjVDWnNmQWJmUm1WYURSWm1rME52bHQxOHdReUdt?=
 =?utf-8?B?RjJuNy9QakdLZjhlUURPWUU1Tm1sZVZ6N2MwbXFWQUVJVmNxTU1JelRWMFRI?=
 =?utf-8?B?UWNZcjNIayswVUV5MFhkbXluVmFxUXRNejFvYzRyWEtSTkpkQm9OOWhnTnVS?=
 =?utf-8?B?cTB5K0pJY1ZFQmN6MXBSRUJUTHRyM2dLV3Ayckl0RkpFdU5WVkladThEcDBh?=
 =?utf-8?B?YUlnaTk2emc1WmREdURTckMvbmw1YjZxNVd3cWYvcUM1dlhLSUsxb0tlNHVz?=
 =?utf-8?B?U0Q1aE9ya1Z1TzZhd3hsM0J1Y1ZKc2lZRG15Y0ZVbnk2Yys5dmNSTSt3b2xw?=
 =?utf-8?B?bGMwK04yOWtqM2FLYWl5dElTbDJtSEZVOFBDMC9uc3MrWVJjTUlSQTRxZWFR?=
 =?utf-8?B?MWpCVUI4dkgzNWdlRmhYeDJ0UGNKZnd2YjZFdXVydjdYYWhEWUl4dFBSNER4?=
 =?utf-8?B?UUU1cXpWNHNWZ0hFNENlQm81RFNERWxnWkJxekx2aUVQQjNnQ0RoOWlxZUFo?=
 =?utf-8?B?ejhLUzBTQ1lzaDJBU1FyckZRSDRkYytRU1VyVGhLejkyU0FEUVNNQytEcWVQ?=
 =?utf-8?B?VVFWajJaanV6eTZiV2FpRHV6bkdXbS8wOU8xVmZVdUFkNVc3K05taVNzOWZo?=
 =?utf-8?B?cHBBR2NVWnI3YmYxZVFIWFFQK01CNHVFSW1IQmp1N0dldVFkUUtad3FIQW05?=
 =?utf-8?B?NHNCb01JQjdJdHlqdUoxQU5KYzR6SE1wQTEzaWVVVEY2S0REK2ErOUlIV3Yr?=
 =?utf-8?B?bFRtcnkyWGFvTkttSEVOMFhDRzEwWHZHODhCcFV3OElSNDVsdEl6UjRsZDA0?=
 =?utf-8?B?TDZyd1Y3UzZSQ0ZaUmx1K2NzbHBrNTYrNGVPVlZyQ0pZWjNzRG9BT1hGSjRB?=
 =?utf-8?B?ZThuRytudWFjcUQwUlpuTFVCU252MkRnRVN2K1Mra01LbGQ2L1NLU2E4ZWJ0?=
 =?utf-8?B?aUxiRnpNNHBHSkNIRVAzdUx1aXoxNmFHNzQweklFZlNLUDg5cmlYTWlhSEVq?=
 =?utf-8?B?NnhGeXZiV3JQL1BCMEd5OHplMkUxNWVGZWhQc0RvNmZ3NXZqaG5iTDdhVXlO?=
 =?utf-8?B?Rm5sTzk1SkRUM1JZeTVqVXR3b0FsUGc5YzNjbEkzZjJORW9PSnVNZHVLNFRv?=
 =?utf-8?B?MFJVaXRWbjlDWGRmbi93NHlwMUxYNDhEcDRHSUVjNGQ4Y3E2Rks5RDJ1ZjE4?=
 =?utf-8?B?VkpreWkvNGZFaTQwNlNnTTdTRWFwTUdDQTN2Y0M4Ykg2U0drcTBRUmRFdzkw?=
 =?utf-8?B?U3NqODJoUUJjbFBQaldLNGo4QkJvd0ZpaDR5YTM2VnFmTHBlSlZZQkNtWTFv?=
 =?utf-8?B?UU5RMER4ZzZEaDdHNDlBYXhnNEVBUk1KOEt6SmRRem9oZ0o4aGwyV2huUnda?=
 =?utf-8?B?LzN4WlBsZEM1NXc0UGlHeFB4Mk5ZcmR2bHZJeUpVYzJUSU1DdDZvdm5FWEtv?=
 =?utf-8?Q?5jlssp00L4uRDZCH4M=3D?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eEZVS0hjYUdwZFh6RnBkZlNubnZScHV1T2xOZzM4SjM4VDVqc1hFZlhid2Qw?=
 =?utf-8?B?bkhoNE5lbjVWL3hJdk42UFYvRzNMa1BiV3N4Z054RWgwMW5scWsxRngzVXhq?=
 =?utf-8?B?Mjd3bWZYd3RPcENWWlN1SXJUUktPTStHVFY2b3UyS0lOZ1hUZUwxd2J5VU5F?=
 =?utf-8?B?UXBPNHoxV0JUdDJieXU5UzIwL3ZVek0vdGVsdDRJSDN0Zkc2bG5xU3F4Y1RR?=
 =?utf-8?B?Vm56clVzUXpZSHNhcDM2VlllNHhGS1lJNVoyRzFQQllXcFJiWld1OURkZERV?=
 =?utf-8?B?Rlc0RVdZYkpoK2p6YmxYdCtudWMveWV3N1hvNzFOTm1ic2FSK1JYY2VHZmdG?=
 =?utf-8?B?dVNVbkd6NmdWMURPL0Y3ZFRpMkpuQXZGclVOd2lOM3R2VTMwN0V0NjdST2RE?=
 =?utf-8?B?QWZKbG1qWWZta0JVd1hmR0F6R2ovTXhIUWFwYVEwWnVBYVI1ZVZtMXkydC9a?=
 =?utf-8?B?MU1UdGpVNUdqU3VZWkVWV0paUlBCSUhJNzNXMFNTbU5xMVVjNzBPZ0RRcDhO?=
 =?utf-8?B?STRieG1wYUM4VmtjWWlTS0tCR3pCMTY5dXFCSmtzSFhaa2ZtdEIxNGV6TlZ4?=
 =?utf-8?B?eWRRR2w3bnRHNTF5N0ZmRHlFSDhyQXcxZnZoZmRTMldORUZCTnNMWkl0K0FX?=
 =?utf-8?B?NEltNmFiNHNhcThpaTRwenhTU3NteHJOQTJ4UlpGeVBuUXpVclUydnkzNmVq?=
 =?utf-8?B?RHY2bG1PVEVKcUM4R3VjaHlTaTB1OEJXbDdDQTgzdFpZN21OMmVIWG8vOGs4?=
 =?utf-8?B?MFVNdncyVS96aGhkbzQ5RTZSRmhWV1hvalRmUmdFUmdZbmY5akFYckM2QWRr?=
 =?utf-8?B?VmFiNVRvak9na3JraUtUMTJCT2ZSQ2lUKzlaSCtrbW9GUnFYb3UvcXRzbkJF?=
 =?utf-8?B?VitUcUF6WTBGODUwclJDRUNZN2N1c0JPSHJ6Q3ViM0xETlN3S1IxczRGdjl3?=
 =?utf-8?B?Mk45dUJ3S0FQRGxlSXhEZmxzWnZyQ0VEcEdNUjZ1TVBFOXpKdk5CRmZha1A5?=
 =?utf-8?B?Skhtd1NUVVIwN3B5ZVFwK2ZsUzFrTGd1Y1NHclBPOWZOZVUzS3YzRWRjWEJk?=
 =?utf-8?B?YURBVGVnUXJDRCtmaElIVFJiOGFsNWEyY2c0Zk91NG9MaVFERFhsZG1ieG1L?=
 =?utf-8?B?bVFZVDdNQ2lBOXZ0SUJoOUpUd0RGU3hiL1JrQlNiVG11cWd1bzE2cExoeG4w?=
 =?utf-8?B?QWxqRjdLTC85ZW5HWG96NkZkZER5STlBZXEvTzVkRDhaOVhPYXg1aE9FcTB5?=
 =?utf-8?B?Y0lpTnlSSjhJVDZuYlpscmN0QmRtd0N3Zy8wWENyUXlLSHRBdjFXbndCRG9J?=
 =?utf-8?B?bkJkaTBJcFFCaHIweFc1RHp2cUNBZklBQWZBVmZLVEhMaWN6Zk5TRFoxTTRp?=
 =?utf-8?B?SDBTYUZTRWd0MzE1cmZMenQ1RWFBcnNQUzZqcno4U3hhdkRMQTltM2JpY1Fp?=
 =?utf-8?B?bENqWnZrbVZscUZaN2F4UU92VHhtcm5xTWY4YVQ3UXhqRlpKTXQ4VzJUNVM5?=
 =?utf-8?B?cGJwUGN5Z2Roc3FGdTUvZHpuWVFXdHdIOXI0ZVM0RjBWekFlN0NzOWYrZzJx?=
 =?utf-8?B?SjUxRTFYYnVuemVSREh1TGhTd2M2bERuUFFhbzh6SXJxd1Z6ZE05N1hXbUU2?=
 =?utf-8?B?VERpb004N1BiOE84cldGbHlGa2ZCYjJJRkZFVnIwT0gwenF2V293R1c1N29H?=
 =?utf-8?B?OVYrLzQrSWV4bTZHeTBZQ3A5U3UwOE9lTGlOU1pXbzNXU3BHcFVHQ1FTT0t0?=
 =?utf-8?B?TUNockhFcHg3cEs2UjRnSXA1ZTNkd2Q4S2FFQzBCdlkxZ25PL1FGSWZWMW4v?=
 =?utf-8?B?MUswMVBCV3FWZ3VUU1hYZjZWN1kva0xLc3M5NVc3dGxjaE5tdmd0eG9yNjNt?=
 =?utf-8?B?TlVjaVBxZzdRdzNPeUxFMU9vUjlnczNkS1dkTjEwbHBydGxpQlBYVWdicXNz?=
 =?utf-8?B?SmduaVhXanpFc0V0b3JQeVVyZ3Y4Qmd3SllzRTlnb3oyMUNKYkVhWnZxZjA0?=
 =?utf-8?B?WFhhbTRSUm12eHBHOUlyMVBNdDJKY2JxN0w1RllXekh5SnhzM3BBdU80dGZz?=
 =?utf-8?B?WlJhbldHTHppbjNKYzdSdjZXYnNrczY4OXg1M3RMemZadEpsNEZvUG5wWVFO?=
 =?utf-8?Q?20NaRnvXzU6J4AkOh/hLTiimY?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bf00768c-1340-4e76-31ae-08dced35df3d
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2024 16:24:41.6469
 (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: 52CcB1WbVfXjHHF5NGZflwx8+n2c6tq3P5DAWN4KL7omG5PCKRMhtCgd4g9o2jmVaA/bQuqh2c+4VupYNY0rbw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4416

Hi,

On 14/10/2024 19:53, Luca Fancellu wrote:
> + Frediano for suggestion about header protection define name
>
>> +++ b/xen/arch/arm/include/asm/mpu/layout.h
>> @@ -0,0 +1,33 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#ifndef __ARM_MPU_LAYOUT_H__
>> +#define __ARM_MPU_LAYOUT_H__
> I think we are moving away from this notation:
> https://patchwork.kernel.org/project/xen-devel/patch/20241004081713.749031-6-frediano.ziglio@cloud.com/
> Shall this be ASM___ARM__MPU__LAYOUT_H ? @Frediano

I could see that the patch hasn't been Rb yet and as per 
https://patchwork.kernel.org/project/xen-devel/cover/20241004081713.749031-1-frediano.ziglio@cloud.com/ 
, the new coding style is still under discussion.

May be the Arm maintainers (Stefano, Julien, Bertrand, Michal) can 
provide their opinion on this.

- Ayan



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 16:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 16:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819297.1232585 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0km3-00088I-31; Tue, 15 Oct 2024 16:51:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819297.1232585; Tue, 15 Oct 2024 16: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 1t0km2-00088B-Vq; Tue, 15 Oct 2024 16:51:54 +0000
Received: by outflank-mailman (input) for mailman id 819297;
 Tue, 15 Oct 2024 16:51: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 1t0km1-000885-Lt
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 16:51: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 1t0km1-0005gc-7V; Tue, 15 Oct 2024 16:51:53 +0000
Received: from [15.248.2.235] (helo=[10.24.67.23])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t0km0-0006v2-Uu; Tue, 15 Oct 2024 16:51: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=1x+5yCAVxOjDSK0Y6dMjtedZHxgnfVHcD1/UzO5MPnk=; b=DMS2QIFV/Q94IR1kYstIvdgQOY
	IXYLI9g4vG7bg9fJhpTVjm0cFyal7toRqbltBcTy1eegYGJYp8VTjn4SQi23PjUGjY4nEnndpNWXS
	DBUUsAZADowfnAnNIb9uRHSwHBW5wUCVWpaCOryYGBQtY3iQLdQCY7DxRoxM8UMxvsXA=;
Message-ID: <b35816e4-9915-482f-a2e7-b8abacce77d8@xen.org>
Date: Tue, 15 Oct 2024 17:51:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
 <4BFB5897-2C7A-4A44-B9E9-01BB7940BFF7@arm.com>
 <3d0327bf-3f1c-44e6-9782-5715365b2253@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <3d0327bf-3f1c-44e6-9782-5715365b2253@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Ayan,

On 15/10/2024 16:56, Ayan Kumar Halder wrote:
> 
> On 14/10/2024 20:03, Luca Fancellu wrote:
>> Hi Ayan,
> Hi Luca,
>>
>>
>>> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/ 
>>> head.S
>>> new file mode 100644
>>> index 0000000000..4a21bc815c
>>> --- /dev/null
>>> +++ b/xen/arch/arm/arm64/mpu/head.S
>>> @@ -0,0 +1,130 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +/*
>>> + * Start-of-day code for an Armv8-R MPU system.
>>> + */
>>> +
>>> +#include <asm/mm.h>
>>> +#include <asm/arm64/mpu/sysregs.h>
>>> +
>>> +#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
>>> +#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
>> NIT alignment
> Ack
>>
>>> +#define REGION_DATA_PRBAR       0x32    /* SH=11 AP=00 XN=10 */
>>> +
>>> +#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
>>> +
>>> +/*
>>> + * Macro to prepare and set a EL2 MPU memory region.
>>> + * We will also create an according MPU memory region entry, which
>>> + * is a structure of pr_t,  in table \prmap.
>>> + *
>>> + * Inputs:
>>> + * sel:         region selector
>>> + * base:        reg storing base address (should be page-aligned)
>>> + * limit:       reg storing limit address
>>> + * prbar:       store computed PRBAR_EL2 value
>>> + * prlar:       store computed PRLAR_EL2 value
>>> + * maxcount:    maximum number of EL2 regions supported
>>> + * attr_prbar:  PRBAR_EL2-related memory attributes. If not 
>>> specified it will be
>>> + *              REGION_DATA_PRBAR
>>> + * attr_prlar:  PRLAR_EL2-related memory attributes. If not 
>>> specified it will be
>>> + *              REGION_NORMAL_PRLAR
>>> + */
>>> +.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, 
>>> attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
>>> +
>>> +    /* Check if the number of regions exceeded the count specified 
>>> in MPUIR_EL2 */
>>> +    add   \sel, \sel, #1
>> I think there is an issue adding 1 here, because the very first region 
>> we are going to fill will be the 1st even if we intended the 0th.
>> Probably moving this one at the end will fix the issue
> 
> We are also using 'sel' to compare against the maximum number of regions 
> supported. So, for the first region it needs to be 1 otherwise there is 
> a risk of comparing 0 (ie first region) with 0 (max supported regions).
> 
> May be what I can do is ...
> 
>>
>>> +    cmp   \sel, \maxcount
>>> +    bgt   fail
>>> +
>>> +    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
>>> +    and   \base, \base, #MPU_REGION_MASK
>>> +    mov   \prbar, #\attr_prbar
>>> +    orr   \prbar, \prbar, \base
>>> +
>>> +    /* Limit address should be inclusive */
>>> +    sub   \limit, \limit, #1
>>> +    and   \limit, \limit, #MPU_REGION_MASK
>>> +    mov   \prlar, #\attr_prlar
>>> +    orr   \prlar, \prlar, \limit
>>> +
> 
> /* Regions should start from 0 */
> 
> sub     \sel, \sel, #1

I didn't review the full patch yet. But couldn't we use ``bge``? This 
would cover "maxcount == 0" and avoid to increment and then decrement \sel.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 17:51:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 17:51:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819308.1232594 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0lhQ-0007Uu-7c; Tue, 15 Oct 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 819308.1232594; Tue, 15 Oct 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 1t0lhQ-0007Un-4l; Tue, 15 Oct 2024 17:51:12 +0000
Received: by outflank-mailman (input) for mailman id 819308;
 Tue, 15 Oct 2024 17: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=8bEn=RL=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t0lhO-0007Uh-2i
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 17:51:10 +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 0dc813d8-8b1e-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 19:51:07 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9a2209bd7fso236013666b.2
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 10:51:06 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29844899sm95923066b.178.2024.10.15.10.51.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 15 Oct 2024 10:51:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0dc813d8-8b1e-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729014666; x=1729619466; 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=5ibmZkU1ZC8MtplzNSDT8RxWrjIpYd2QtxAWHqcEuv8=;
        b=MQd1T8GPMccIjdanaF4YA6WQkXqaGBqKdFaO0zoWo5ZLHTDZbwHFy2ihTiWh/pJ00n
         YTLoEqc+q893u0ME5+vzklqHaFSeF01/Q7gNHurPmI0gsMdqFkOQo0m0x3hREDeQe1wf
         asbzVfTiuFGJufRs0vJQphdsv/U6Yb+7qlLqc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729014666; x=1729619466;
        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=5ibmZkU1ZC8MtplzNSDT8RxWrjIpYd2QtxAWHqcEuv8=;
        b=uThXoVDny8fg5LreeDRN6jUm2uIyf2px71azb67Ry6hOhBVV3Lo1ZIIK3YLch2raq0
         zhBMjgq8A7guqzA6Zb7M4DdtTWmWNbZPTswQiN9S6GX8jfqnNtAQ0jBJ+tqoBWkB/J+J
         jRmIUSxr6mfEv6x9sh5TeEXjwIPnunwKmaUsBCPhiihorSwN8F3psliDX/B4LjQQWkJc
         QXTC2wdTFQP2c+9APIFU5/XOut0jx4hvivC3/xbfCmWC+oQA6WGRCT8mUMGuWcv6kdt+
         A0eyJhm84Vd/SsaCatcgyCxRfMMxsQGnjzYm9hdpp4IQc55bHiRM5OXRUxJ/4IAM+SYe
         6RPw==
X-Gm-Message-State: AOJu0YwyBt5x5CNsPRmvZSPtyu2c+Dg/P8w32csdXJY5asEqio5stee2
	9KuZtO6A3W4lVWoLBZ4e50X4v9eINf11n1N6bIpRIDJW3iE8wRSgUapU/TjbRI0=
X-Google-Smtp-Source: AGHT+IFlKsiPib0skbNMNTayHNFlx+FwG6EE8EPPapOZGuKfMFrK7tG2lClruepwwz5UBCZ4Jvoe+w==
X-Received: by 2002:a17:907:934e:b0:a9a:26dd:16bc with SMTP id a640c23a62f3a-a9a34d3b5dcmr111758866b.5.1729014666369;
        Tue, 15 Oct 2024 10:51:06 -0700 (PDT)
Message-ID: <2e428f46-8c2a-4fc4-92e6-0d85a5cc15fd@citrix.com>
Date: Tue, 15 Oct 2024 18:51:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v10 0/2] x86/boot: Improve MBI2 structure check (was:
 Reduce assembly code)
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <20241015082513.2477806-1-frediano.ziglio@cloud.com>
 <Zw5nPgJ8it9BsRv5@mail-itl>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zw5nPgJ8it9BsRv5@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 15/10/2024 1:59 pm, Marek Marczykowski-Górecki wrote:
> On Tue, Oct 15, 2024 at 09:25:11AM +0100, Frediano Ziglio wrote:
>> This series came from part of the work of removing duplications between
>> boot code and rewriting part of code from assembly to C.
> Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

I've committed this series, but I've rewritten the commit message on
patch 1.

As presented, that's a set of debugging notes of how the patch ended up
the way it did, not an explanation of the problem and how it is being
addressed.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819320.1232633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meC-0006j7-0c; Tue, 15 Oct 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 819320.1232633; Tue, 15 Oct 2024 18: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 1t0meB-0006j0-Tj; Tue, 15 Oct 2024 18:51:55 +0000
Received: by outflank-mailman (input) for mailman id 819320;
 Tue, 15 Oct 2024 18: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meA-0006Um-KE
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:51: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 855214b0-8b26-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 20:51:51 +0200 (CEST)
Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com
 [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-615-SFTSCarcNvmMwbbIAYTAwg-1; Tue, 15 Oct 2024 14:51:41 -0400
Received: by mail-ed1-f71.google.com with SMTP id
 4fb4d7f45d1cf-5c9217064f6so4369814a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:51:41 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.51.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:51:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 855214b0-8b26-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018303;
	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=N0GRF4pPtSOgd1WabJUy8wYxVfX9TEQxA2AbPtBzocc=;
	b=UGuvMOf9+oR9oe/MgJx/Yp+vmEfz5jHcqsuPuzMem1QPnaC7V9pldeRwIHvdFxMOfdaISV
	QJTzRzymKUE+kX8ff4klnwArZlSUltbvslN2cYK/vzV/kmHDPAZrd1IjDu6Wv2wrGmCRCM
	eWELW26N8fUP18HGvEnTAP8Wyn/XWyA=
X-MC-Unique: SFTSCarcNvmMwbbIAYTAwg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018300; x=1729623100;
        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=N0GRF4pPtSOgd1WabJUy8wYxVfX9TEQxA2AbPtBzocc=;
        b=tMqFFfBW8T4LlImaO27s/0PZoSMnmgsIMbSEXBwx41oDMNtRM0wp3G+IjvRKPlKHLT
         pSF2so/79u/pJUtGFjGjggNhJ5YOPy9f+9ZOjtabSajbh0cFoGzUDzV41JYEb7AypO9A
         Cx/+5txCBk11a/5EaLKU221jDq9MS3dNbO4efRWvFY4SXJDUMj+NEjmFW/ZJ17IMB9pp
         3ew/EPbCsid7hb267vIC+ut34tfMQvazcdvS63EYynHrPs4jc2Z7hyKDy46Wg9dG0FrR
         iFqrIIftqFomkG7R+lj/R8JD0EuVZ+2JixKnNPBiJrfQStq1gnGJH+G4T4UYxwfDIkIY
         bqvw==
X-Forwarded-Encrypted: i=1; AJvYcCWkMf5Ki8f4SVEbK2IDAeLm4l29wdtz1VUyj4N3WXNBiGpCNgNs3Z39sg3ae+qtWH++91ghmHZSOjE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwouqWN8wjS0HHLY1CsPlgx/2fvEGNOY1UZjr5OLC5iVUNNk89z
	WIxgpFN2H7fgVtD9udsDOaQmQIyDUjOXOWZC3OME/hIqmIetmZWZlYcr2T8naRGR6iowQPRP5kT
	6w82Z7oan9/ujR7qCTTLq7M3n/dRZXLFDFBlJCk/0wFkmNTSFRqq6rogG9oxk6KXi
X-Received: by 2002:a05:6402:5212:b0:5c9:547d:99 with SMTP id 4fb4d7f45d1cf-5c99501ced5mr1032527a12.2.1729018300214;
        Tue, 15 Oct 2024 11:51:40 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEoUi+m94pA/sZ0UkPSNqunOeFPcNR+QjlgzRmDDQ7K7kAorm0A07Mz2aeKaa+48zMcVX+P9g==
X-Received: by 2002:a05:6402:5212:b0:5c9:547d:99 with SMTP id 4fb4d7f45d1cf-5c99501ced5mr1032505a12.2.1729018299657;
        Tue, 15 Oct 2024 11:51:39 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 00/13] Remove implicit devres from pci_intx()
Date: Tue, 15 Oct 2024 20:51:10 +0200
Message-ID: <20241015185124.64726-1-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

@Driver-Maintainers: Your driver might be touched by patch "Remove
devres from pci_intx()". You might want to take a look.

Changes since the RFC [1]:
  - Add a patch deprecating pci{m}_intx(). (Heiner, Andy, Me)
  - Add Acked-by's already given.
  - Export pcim_intx() as a GPL function. (Alex)
  - Drop patch for rts5280, since this driver will be removed quite
    soon. (Philipp Hortmann, Greg)
  - Use early-return in pci_intx_unmanaged() and pci_intx(). (Andy)

Hi all,

this series removes a problematic feature from pci_intx(). That function
sometimes implicitly uses devres for automatic cleanup. We should get
rid of this implicit behavior.

To do so, a pci_intx() version that is always-managed, and one that is
never-managed are provided. Then, all pci_intx() users are ported to the
version they need. Afterwards, pci_intx() can be cleaned up and the
users of the never-managed version be ported back to pci_intx().

This way we'd get this PCI API consistent again.

Patch "Remove devres from pci_intx()" obviously reverts the previous
patches that made drivers use pci_intx_unmanaged(). But this way it's
easier to review and approve. It also makes sure that each checked out
commit should provide correct behavior, not just the entire series as a
whole.

Merge plan for this is to enter through the PCI tree.

[1] https://lore.kernel.org/all/20241009083519.10088-1-pstanner@redhat.com/


Regards,
P.

Philipp Stanner (13):
  PCI: Prepare removing devres from pci_intx()
  ALSA: hda_intel: Use always-managed version of pcim_intx()
  drivers/xen: Use never-managed version of pci_intx()
  net/ethernet: Use never-managed version of pci_intx()
  net/ntb: Use never-managed version of pci_intx()
  misc: Use never-managed version of pci_intx()
  vfio/pci: Use never-managed version of pci_intx()
  PCI: MSI: Use never-managed version of pci_intx()
  ata: Use always-managed version of pci_intx()
  wifi: qtnfmac: use always-managed version of pcim_intx()
  HID: amd_sfh: Use always-managed version of pcim_intx()
  Remove devres from pci_intx()
  PCI: Deprecate pci_intx(), pcim_intx()

 drivers/ata/ahci.c                            |  2 +-
 drivers/ata/ata_piix.c                        |  2 +-
 drivers/ata/pata_rdc.c                        |  2 +-
 drivers/ata/sata_sil24.c                      |  2 +-
 drivers/ata/sata_sis.c                        |  2 +-
 drivers/ata/sata_uli.c                        |  2 +-
 drivers/ata/sata_vsc.c                        |  2 +-
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +--
 drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c |  2 +-
 .../wireless/quantenna/qtnfmac/pcie/pcie.c    |  2 +-
 drivers/pci/devres.c                          | 29 +++++--------------
 drivers/pci/pci.c                             | 19 ++++--------
 include/linux/pci.h                           |  1 +
 sound/pci/hda/hda_intel.c                     |  2 +-
 14 files changed, 26 insertions(+), 47 deletions(-)

-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819322.1232653 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meG-0007I6-L8; Tue, 15 Oct 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 819322.1232653; Tue, 15 Oct 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 1t0meG-0007Hz-I0; Tue, 15 Oct 2024 18:52:00 +0000
Received: by outflank-mailman (input) for mailman id 819322;
 Tue, 15 Oct 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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meF-0006Um-3b
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:51:59 +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 8d245fd3-8b26-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 20:51:57 +0200 (CEST)
Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com
 [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-479-fX4Wa6Q1NuSybcNProATBg-1; Tue, 15 Oct 2024 14:51:54 -0400
Received: by mail-ed1-f69.google.com with SMTP id
 4fb4d7f45d1cf-5c96e34ff52so2097750a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:51:54 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.51.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:51:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d245fd3-8b26-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018316;
	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=SZ3Ct+htOyFcNtVrHcgotVRsHQNuDZcXgRKY/qB2q+Y=;
	b=B4yN8ZLTdQrfOyeitqPEkaXmHsqvOo49C+BrOLdRht3WK2XjXwTzcabQQcq1K9uREggqn2
	jeivVq5fZw7MtHoHIdnQmXR08r45gAfHACH1Jgq2CZZvrJ6+ji0D2R7rSbUU4VIL8QLcVI
	Lrqk7nnnYUlk0cczlybWdyk3BqjxEAk=
X-MC-Unique: fX4Wa6Q1NuSybcNProATBg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018314; x=1729623114;
        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=SZ3Ct+htOyFcNtVrHcgotVRsHQNuDZcXgRKY/qB2q+Y=;
        b=IMYRbEamkHsO7sQbGTTAvbH3qYjt0dredXGYPjva7G0NffkDgBz/3sb07s5WsxbD5q
         IPXZR6bX0AWdBZPClxY/mSbPmayzGpfMlczpR6aOUp7Zbdi6YXefGe/k3roL1rZU4f50
         yflKFqSYU+CXltXc/XyfCpevB7gzxlrPLKo4Lf9Jr1cZKHvuFVHWS839teNTF2THcVQN
         QeNuj4UrsghP7zaGIWpn/Si+rpHJgeTdHLH/Q0hquh03MCri7wJBfG6KnNCv9g0DcQB/
         h6VyAj6oW5WDA+WYJ6Du1ivSBuxksHi4VI9hwod1nFXUut+0HnUCE/GTnI7SnXJb/J4d
         cWqQ==
X-Forwarded-Encrypted: i=1; AJvYcCUe1pDqSlNXsdAGno5VLPtBhJ4DsB2Vi6OwNfBSOEm255odFt7IFxpnj9AYzwllWlenpGCi3eWBqFI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxZwrgvmJuHkALmru7R+DNebLgN0b13w/afwlOdMZ37t6WaKacU
	j51GeZAr8YAeoD4rqxRn4W2udOfJjzL3Gx6fLJJSwc/4W4B5QQyiGitFuxVZMnFwNzTtaWJkMQB
	usWLnyyLG2UAIfjGUjF9hZ6nByLC24ULt/EHqAGUa0ww9QtIcesvGZJbXaZrYpiON
X-Received: by 2002:a05:6402:42d4:b0:5c5:c4b9:e68f with SMTP id 4fb4d7f45d1cf-5c948c8832bmr14419430a12.5.1729018313592;
        Tue, 15 Oct 2024 11:51:53 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IE6NP2MgEjIAHT9QVnzMFvrKhBgwp9yW28QIpF4WXIKBiXqmi8eGjYmTWyuU93CIou+fVZW2Q==
X-Received: by 2002:a05:6402:42d4:b0:5c5:c4b9:e68f with SMTP id 4fb4d7f45d1cf-5c948c8832bmr14419400a12.5.1729018313119;
        Tue, 15 Oct 2024 11:51:53 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 04/13] net/ethernet: Use never-managed version of pci_intx()
Date: Tue, 15 Oct 2024 20:51:14 +0200
Message-ID: <20241015185124.64726-5-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

broadcom/bnx2x and brocade/bna enable their PCI-Device with
pci_enable_device(). Thus, they need the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 2 +-
 drivers/net/ethernet/brocade/bna/bnad.c          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 678829646cec..2ae63d6e6792 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -1669,7 +1669,7 @@ static void bnx2x_igu_int_enable(struct bnx2x *bp)
 	REG_WR(bp, IGU_REG_PF_CONFIGURATION, val);
 
 	if (val & IGU_PF_CONF_INT_LINE_EN)
-		pci_intx(bp->pdev, true);
+		pci_intx_unmanaged(bp->pdev, true);
 
 	barrier();
 
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index ece6f3b48327..2b37462d406e 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -2669,7 +2669,7 @@ bnad_enable_msix(struct bnad *bnad)
 		}
 	}
 
-	pci_intx(bnad->pcidev, 0);
+	pci_intx_unmanaged(bnad->pcidev, 0);
 
 	return;
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819323.1232663 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meI-0007ZG-TG; Tue, 15 Oct 2024 18:52:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819323.1232663; Tue, 15 Oct 2024 18: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 1t0meI-0007Z9-P9; Tue, 15 Oct 2024 18:52:02 +0000
Received: by outflank-mailman (input) for mailman id 819323;
 Tue, 15 Oct 2024 18: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meI-0006Um-5a
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52:02 +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 8ee04ecc-8b26-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 20:52:00 +0200 (CEST)
Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com
 [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-107-f5_X4XZEMkmClp8pgNwoxw-1; Tue, 15 Oct 2024 14:51:57 -0400
Received: by mail-ed1-f70.google.com with SMTP id
 4fb4d7f45d1cf-5c96e34ff52so2097837a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:51:57 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.51.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:51:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ee04ecc-8b26-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018319;
	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=gh5xBESPiuO8YtWqrs+YzUNc8fkB81YlCR9KwN+kONI=;
	b=ASBqMOIWLUCiaeTIdtZxxR2bMbLI9MyGfd2H9JL07tQ2vTxIKfmO8RVt/PgDuue3mDIt1a
	SnyJqS5LffqO3n9RPsZyMbVK3PIPBlldLZmZebka7TDZ1xCPhET8Gmro2XWDBetP7qK4xn
	b463U0pOmWD6RQuXuAnCN9QkoyUo47U=
X-MC-Unique: f5_X4XZEMkmClp8pgNwoxw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018316; x=1729623116;
        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=gh5xBESPiuO8YtWqrs+YzUNc8fkB81YlCR9KwN+kONI=;
        b=TYh6Ny5VhRIakrmkOYVaods/3tkZsafmLieMZazowZbM9OdhPqCMv7zYqelatdGsg6
         UxYDY8bX5AvDY1UjMuTy+UV7dzWToDwhHoTFxBiMbFDMpmVALTzElmrhpn5CoLIJbU88
         kCVzKezVcNMNfOA4VBPH6Ln+JNCQ3Fzx5rf1K9Xb4V2RbKVgoAK2qeKxyAJI/qt/v+Zy
         MnIQEbKkVcPysAH3rtTzRdCdE9aTwTeQs4FzcSnNWulQgnOOK0iAg/6Yo/k5hzuOVfe5
         uDzLwePJwrAl4HSiQ5rUlXPLbjTLnirvPKhc6sYKQRHO4OxarNobkIuLbPF36QLIJJgF
         Xqtg==
X-Forwarded-Encrypted: i=1; AJvYcCUbENNAPm14oiVVZU9JWS8Q8NBAdWeEHwpl9ffHtYHxOnT4URW25Zl7IHKG+nZcmhdZzxQJESfpfaI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwVb0ATPhjXKoTdMoS7YNBCtMqVgsh6minCghXVPCOgnf6pm8U3
	fGzdVLRr+QwAfCQ1y80SvZeXfWEe16GHxBDwRVc2MMFGbDx87Xry0kyHb1YiNnZjklVQ3LZJZCs
	W09jeDuktp3D2DDZq0pdYv256GhnESOZvkWWquG7hzfvHQ/vo7rMbKlGYIk3QntBh
X-Received: by 2002:a05:6402:2749:b0:5c2:439d:90d4 with SMTP id 4fb4d7f45d1cf-5c948d76b4amr10733522a12.30.1729018316276;
        Tue, 15 Oct 2024 11:51:56 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGF3RowDEBzBmFjomZKJb8aI1a+lparmQD2EhJzOsotZnZJFVQLosdt/QHX4IGQZaEh/cAmrg==
X-Received: by 2002:a05:6402:2749:b0:5c2:439d:90d4 with SMTP id 4fb4d7f45d1cf-5c948d76b4amr10733454a12.30.1729018315667;
        Tue, 15 Oct 2024 11:51:55 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 05/13] net/ntb: Use never-managed version of pci_intx()
Date: Tue, 15 Oct 2024 20:51:15 +0200
Message-ID: <20241015185124.64726-6-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

hw/amd and how/intel enable their PCI-Device with pci_enable_device().
Thus, they need the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> #for ntb_hw_amd.c
---
 drivers/ntb/hw/amd/ntb_hw_amd.c    | 4 ++--
 drivers/ntb/hw/intel/ntb_hw_gen1.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
index d687e8c2cc78..b146f170e839 100644
--- a/drivers/ntb/hw/amd/ntb_hw_amd.c
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
@@ -791,7 +791,7 @@ static int ndev_init_isr(struct amd_ntb_dev *ndev,
 err_msi_enable:
 
 	/* Try to set up intx irq */
-	pci_intx(pdev, 1);
+	pci_intx_unmanaged(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
@@ -831,7 +831,7 @@ static void ndev_deinit_isr(struct amd_ntb_dev *ndev)
 		if (pci_dev_msi_enabled(pdev))
 			pci_disable_msi(pdev);
 		else
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 	}
 }
 
diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c
index 079b8cd79785..9ad9d7fe227e 100644
--- a/drivers/ntb/hw/intel/ntb_hw_gen1.c
+++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c
@@ -445,7 +445,7 @@ int ndev_init_isr(struct intel_ntb_dev *ndev,
 
 	/* Try to set up intx irq */
 
-	pci_intx(pdev, 1);
+	pci_intx_unmanaged(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819321.1232643 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meD-0006zQ-E9; Tue, 15 Oct 2024 18:51:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819321.1232643; Tue, 15 Oct 2024 18: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 1t0meD-0006zH-A8; Tue, 15 Oct 2024 18:51:57 +0000
Received: by outflank-mailman (input) for mailman id 819321;
 Tue, 15 Oct 2024 18:51: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meC-0006G4-1B
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:51: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 8bee5f45-8b26-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 20:51:55 +0200 (CEST)
Received: from mail-lj1-f200.google.com (mail-lj1-f200.google.com
 [209.85.208.200]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-486-epSy9yN1N36e3VnBmIOQYw-1; Tue, 15 Oct 2024 14:51:52 -0400
Received: by mail-lj1-f200.google.com with SMTP id
 38308e7fff4ca-2faca747f94so37293221fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:51:52 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.51.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:51:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8bee5f45-8b26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018314;
	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=2UdUsG2Ce2FuhD+Vr0J1b3PhjfLKCU3S+xUJ9DfCqJQ=;
	b=XHvPnXR/Fi+6T5w+v20GvhmTgH3gtr2+S0JaXqM0t6dd1WGFuWh+ATO6h/8jGF0r6SwHzV
	b3AzzCm8bazCtkCCCANqznWDM26eHv4qZ0jDinRcDZLeamvQ7dpIARXtF59SnPi6o2+jPv
	eGNDwT8sZxoaKXBduoL+DrbCUObvlBI=
X-MC-Unique: epSy9yN1N36e3VnBmIOQYw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018311; x=1729623111;
        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=2UdUsG2Ce2FuhD+Vr0J1b3PhjfLKCU3S+xUJ9DfCqJQ=;
        b=CKgt7WrvUvAa3mX9wwi1rSxkNL6JEaF9e839nfW4MjxdXAdgwNfN5BhTQtqd/tYT8o
         i/AD2fBvKKZseeDUexSK1SEuocpO/NDkGa4Pyl2hfr4RYZrCuIaEY9tLqkuK9JAWNLgv
         g/hWXXYRz7RjriDkgfqg5QsqTqXdLm5ZcmxTjKp0/FkOvacVLbOGiW8nQvBs+s6JDhrj
         Evhl4Q9JE/wr1dcEEjXbS99x6YLFxAJ5Vp77V8NsvcBk+5OQhMV+uZzfTFfYWzgLkeEa
         s3CsAPdjl8ybvElwAJEjcMZu5TXUYuaK5nocEcANLaaNXG3/sYdWSBJzVmKJzWjbweeu
         893Q==
X-Forwarded-Encrypted: i=1; AJvYcCXOMbwbqxXajvHGZx0tDFtiL3E0mpaB0SwTCNYVymcI3YKF+2ZsEZv7ELDK6zPlmWDmqAl7mT8BwJI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxRVWqEFcuiVuhDHQeljCypD4rSTGeY2tXjwzBFvMWH2RxPv6d+
	Pacxx4MEry0WjP2HraSyVP6DrGHTGMiI0Ppqc7C8s+bGritq00tZq2ty5/6EOjL3buiBpj1vrRO
	p1vQMxWuM355uAd4OcJPcZTHgyiEe2bkda9+jhYBIXOpgCSfZHviSoA16Wg92v131
X-Received: by 2002:a2e:be13:0:b0:2fa:c0fc:e3d6 with SMTP id 38308e7fff4ca-2fb326fc5a0mr82286071fa.7.1729018310963;
        Tue, 15 Oct 2024 11:51:50 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGg0lXB9d95359mfSRgxCA4dveTgVHKUj5pW+Si5SQOi+coS4w/96kFO+qIGBhPz8zuJnYPgA==
X-Received: by 2002:a2e:be13:0:b0:2fa:c0fc:e3d6 with SMTP id 38308e7fff4ca-2fb326fc5a0mr82285671fa.7.1729018310336;
        Tue, 15 Oct 2024 11:51:50 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 03/13] drivers/xen: Use never-managed version of pci_intx()
Date: Tue, 15 Oct 2024 20:51:13 +0200
Message-ID: <20241015185124.64726-4-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

xen enables its PCI-Device with pci_enable_device(). Thus, it
needs the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Acked-by: Juergen Gross <jgross@suse.com>
---
 drivers/xen/xen-pciback/conf_space_header.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/xen/xen-pciback/conf_space_header.c b/drivers/xen/xen-pciback/conf_space_header.c
index fc0332645966..8d26d64232e8 100644
--- a/drivers/xen/xen-pciback/conf_space_header.c
+++ b/drivers/xen/xen-pciback/conf_space_header.c
@@ -106,7 +106,7 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
 
 	if (dev_data && dev_data->allow_interrupt_control &&
 	    ((cmd->val ^ value) & PCI_COMMAND_INTX_DISABLE))
-		pci_intx(dev, !(value & PCI_COMMAND_INTX_DISABLE));
+		pci_intx_unmanaged(dev, !(value & PCI_COMMAND_INTX_DISABLE));
 
 	cmd->val = value;
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819319.1232623 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0me9-0006UO-Pj; Tue, 15 Oct 2024 18:51:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819319.1232623; Tue, 15 Oct 2024 18:51: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 1t0me9-0006UH-My; Tue, 15 Oct 2024 18:51:53 +0000
Received: by outflank-mailman (input) for mailman id 819319;
 Tue, 15 Oct 2024 18: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0me8-0006G4-9e
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:51:52 +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 896c458b-8b26-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 20:51:51 +0200 (CEST)
Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com
 [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-121-dzAfU_2yNtaYtKWelRaoaA-1; Tue, 15 Oct 2024 14:51:48 -0400
Received: by mail-ed1-f71.google.com with SMTP id
 4fb4d7f45d1cf-5c94ccfb210so3348180a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:51:48 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.51.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:51:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 896c458b-8b26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018310;
	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=3bl3QB30NLAEEM3JzJm3v9Fl/AaPLWrckmhbzUoxAcY=;
	b=alSa8kNcBnYuv6Zp6tWAIa9UGNtmWP4u7mcVrlEHVUP8BuSQszwN/J1QidI+L6Drep9DZR
	UPTRpMlo2VTu0L/OHY3KzxNILAu7xZ60YoB38oKdTM4KXnKGtl5swCw9cOVYB0Esk2l3up
	5xABHIKu4k6Wzsh3shX6qs3GLEdKq4w=
X-MC-Unique: dzAfU_2yNtaYtKWelRaoaA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018307; x=1729623107;
        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=3bl3QB30NLAEEM3JzJm3v9Fl/AaPLWrckmhbzUoxAcY=;
        b=jx7bSgWqyFDmRqHlHbD1WYybMrVupY1MnBvCz4OYgdhgpMfqenfUNYWJhdEv3ti5gy
         iYXhK2yDG5FdW2A9htPo5KFkxhgY76sCXoY2ZRgUGFRpJAnyGGZpkeNpZj2TFRj1EogT
         4KEzbfOngU8S4SdGPbkhceQQ0TrtjXsIAV5SvlyPbI+TvNyZdOL2tvPbBiEInHTUjTEF
         t5ZNBHRVhPr0abF1Y2S2An4W9+jJ2nkY9MLJD9kgLpIUTlzjQYWAxNshdG4aKXP+/wQM
         /3u0fHwfYQAnBg4V+LZSfBJsLdd59Cu/OQFW0kaiwe9kViJKIt04gAbs3bT5eC1Em3sS
         oGvg==
X-Forwarded-Encrypted: i=1; AJvYcCUUlLy55XqxxIn7lOnzlk0PX1MSd+dSV/O+P5kxuGRZNpSTC2i21C3TSAgsK/l7DGxfB1KhHqHaVhM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzVfILdZxrfNEadZHz6lu+KhdkoRxK16V0+hUpEDMWtSmKxkZjC
	BKhvWyo1jFN67GMZs62Ew+t20YpP2/rVEccoZa8FyJ0r4SUVmcJvHHIwx8ylD/HQN6NrvFWKO01
	ioP2DLspXNdq4JcqcCqNdhLzRhw9L11KOscj/kCZC6YDcfuUJ6VaDR0VYhrlhAmT7
X-Received: by 2002:a05:6402:274b:b0:5c9:758c:307d with SMTP id 4fb4d7f45d1cf-5c995123e65mr1042694a12.34.1729018307271;
        Tue, 15 Oct 2024 11:51:47 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEcpsVUn9n0QaeMUMW5c7DLX/r1R+cfZY7789CvnHFdFGuHG3lQrtgeZ9VzucvxMpAlT7QteA==
X-Received: by 2002:a05:6402:274b:b0:5c9:758c:307d with SMTP id 4fb4d7f45d1cf-5c995123e65mr1042656a12.34.1729018306780;
        Tue, 15 Oct 2024 11:51:46 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of pcim_intx()
Date: Tue, 15 Oct 2024 20:51:12 +0200
Message-ID: <20241015185124.64726-3-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

hda_intel enables its PCI-Device with pcim_enable_device(). Thus, it needs
the always-managed version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 sound/pci/hda/hda_intel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index b4540c5cd2a6..b44ca7b6e54f 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)
 	}
 	bus->irq = chip->pci->irq;
 	chip->card->sync_irq = bus->irq;
-	pci_intx(chip->pci, !chip->msi);
+	pcim_intx(chip->pci, !chip->msi);
 	return 0;
 }
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819318.1232613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0me8-0006GM-JA; Tue, 15 Oct 2024 18:51:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819318.1232613; Tue, 15 Oct 2024 18: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 1t0me8-0006GF-Fr; Tue, 15 Oct 2024 18:51:52 +0000
Received: by outflank-mailman (input) for mailman id 819318;
 Tue, 15 Oct 2024 18: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0me8-0006G4-1O
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:51:52 +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 87b3f433-8b26-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 20:51:48 +0200 (CEST)
Received: from mail-ej1-f70.google.com (mail-ej1-f70.google.com
 [209.85.218.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-609-W4BbnW53NFSgTcugynJgoA-1; Tue, 15 Oct 2024 14:51:45 -0400
Received: by mail-ej1-f70.google.com with SMTP id
 a640c23a62f3a-a9a1b8d4563so63830766b.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:51:45 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.51.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:51:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 87b3f433-8b26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018307;
	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=SU/PZdKXdnBqqSwxJC6QaxHUkhQ/Rh93i2Z0bgmQYHg=;
	b=Ejkq3oCeQzRplWK1Ber+4RfhZGByV6RiGnFDCSvpfXjLFY9pClZKGC52zyWsLdhvvB+s51
	UHL1rnJZabAV7Pgveri2vCyOZkFysoN9r+n2GvI8cDIOPC6aI0Svd7pkwH1P/RA71e/uYW
	yZusZ581e2AesVmPmgLs1RwWx2grLUE=
X-MC-Unique: W4BbnW53NFSgTcugynJgoA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018304; x=1729623104;
        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=SU/PZdKXdnBqqSwxJC6QaxHUkhQ/Rh93i2Z0bgmQYHg=;
        b=WMHhaNlRi6KX++9SC0pTxtrMWO/nayfpADdXmFCF6Li5ZESAhcZAVj3l07N7YKKW0I
         yu4qOaKCSu3cc3svWUPRm4iJJriq14Y5GYPCUaFaJRxcpaT5V2qjZivJge1TNN/TRRnf
         vkGAoZM/82TUQ49DAYho9u+kYfHVYWGIRkQPmh5n+3HHTsmBiygnmz4pPyRpg0RZATGz
         W4f0qieJn7g5LZg++q692VnZQTA3HP2x6O3ZjJjT4kKmhbE7rNNLfgT03lL5xVqiDokH
         ihn+3412fWR94bjGjaTfgGZfTHsdYBDtVV6yFUXpxe6t9pxs9+k406wmdM2xGMZRefgY
         Vu6w==
X-Forwarded-Encrypted: i=1; AJvYcCWb8CTmH5B+60tAbf7n4q4h0rwa5yxrSFAocjm1x+ptX/xwkpu8/CGcT5umXvOEHjAnDjn7CpQO95Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxYBEXHoq13OxHpF/bj2IO2ddaHTgvkRl25S2/eDtjXVsAap0Rc
	N6tOqGY9u7UuRztLNi5T1ab2HTSmQMu+4be9WJ9MQNIZ+ztCBd4bvD5eaQW4ySgxlcmsB064hPF
	oxmAle1sF6DNPzBPofnCedy1nFohpDquxLSR0rSLpocKYCchMoJ4/nGRUfPlT4pO6
X-Received: by 2002:a05:6402:26d1:b0:5c5:da5e:68e with SMTP id 4fb4d7f45d1cf-5c95ac09876mr18284551a12.3.1729018303813;
        Tue, 15 Oct 2024 11:51:43 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHZgBAdLrLu4wVCTKTVra2bi/zOy1A/yhu7xkqftgD6kovhQdMFl3ZjsIezqx0bvqyWUCvsqg==
X-Received: by 2002:a05:6402:26d1:b0:5c5:da5e:68e with SMTP id 4fb4d7f45d1cf-5c95ac09876mr18284485a12.3.1729018303219;
        Tue, 15 Oct 2024 11:51:43 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 01/13] PCI: Prepare removing devres from pci_intx()
Date: Tue, 15 Oct 2024 20:51:11 +0200
Message-ID: <20241015185124.64726-2-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which sometimes performs devres
operations, depending on whether pcim_enable_device() has been used to
enable the pci_dev. This sometimes-managed nature of the function is
problematic. Notably, it causes the function to allocate under some
circumstances which makes it unusable from interrupt context.

To, ultimately, remove the hybrid nature from pci_intx(), it is first
necessary to provide an always-managed and a never-managed version
of that function. Then, all callers of pci_intx() can be ported to the
version they need, depending whether they use pci_enable_device() or
pcim_enable_device().

An always-managed function exists, namely pcim_intx(), for which
__pcim_intx(), a never-managed version of pci_intx() had been
implemented.

Make __pcim_intx() a public function under the name
pci_intx_unmanaged(). Make pcim_intx() a public function.

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
---
 drivers/pci/devres.c | 24 +++---------------------
 drivers/pci/pci.c    | 28 ++++++++++++++++++++++++++++
 include/linux/pci.h  |  2 ++
 3 files changed, 33 insertions(+), 21 deletions(-)

diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
index b133967faef8..d32827a1f2f4 100644
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -411,31 +411,12 @@ static inline bool mask_contains_bar(int mask, int bar)
 	return mask & BIT(bar);
 }
 
-/*
- * This is a copy of pci_intx() used to bypass the problem of recursive
- * function calls due to the hybrid nature of pci_intx().
- */
-static void __pcim_intx(struct pci_dev *pdev, int enable)
-{
-	u16 pci_command, new;
-
-	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
-
-	if (enable)
-		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
-	else
-		new = pci_command | PCI_COMMAND_INTX_DISABLE;
-
-	if (new != pci_command)
-		pci_write_config_word(pdev, PCI_COMMAND, new);
-}
-
 static void pcim_intx_restore(struct device *dev, void *data)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct pcim_intx_devres *res = data;
 
-	__pcim_intx(pdev, res->orig_intx);
+	pci_intx_unmanaged(pdev, res->orig_intx);
 }
 
 static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
@@ -472,10 +453,11 @@ int pcim_intx(struct pci_dev *pdev, int enable)
 		return -ENOMEM;
 
 	res->orig_intx = !enable;
-	__pcim_intx(pdev, enable);
+	pci_intx_unmanaged(pdev, enable);
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(pcim_intx);
 
 static void pcim_disable_device(void *pdev_raw)
 {
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 7d85c04fbba2..d7fd0772a885 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -4476,6 +4476,34 @@ void pci_disable_parity(struct pci_dev *dev)
 	}
 }
 
+/**
+ * pci_intx - enables/disables PCI INTx for device dev, unmanaged version
+ * @pdev: the PCI device to operate on
+ * @enable: boolean: whether to enable or disable PCI INTx
+ *
+ * Enables/disables PCI INTx for device @pdev
+ *
+ * This function behavios identically to pci_intx(), but is never managed with
+ * devres.
+ */
+void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
+{
+	u16 pci_command, new;
+
+	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
+
+	if (enable)
+		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
+	else
+		new = pci_command | PCI_COMMAND_INTX_DISABLE;
+
+	if (new == pci_command)
+		return;
+
+	pci_write_config_word(pdev, PCI_COMMAND, new);
+}
+EXPORT_SYMBOL_GPL(pci_intx_unmanaged);
+
 /**
  * pci_intx - enables/disables PCI INTx for device dev
  * @pdev: the PCI device to operate on
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 573b4c4c2be6..6b8cde76d564 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1353,6 +1353,7 @@ int __must_check pcim_set_mwi(struct pci_dev *dev);
 int pci_try_set_mwi(struct pci_dev *dev);
 void pci_clear_mwi(struct pci_dev *dev);
 void pci_disable_parity(struct pci_dev *dev);
+void pci_intx_unmanaged(struct pci_dev *pdev, int enable);
 void pci_intx(struct pci_dev *dev, int enable);
 bool pci_check_and_mask_intx(struct pci_dev *dev);
 bool pci_check_and_unmask_intx(struct pci_dev *dev);
@@ -2293,6 +2294,7 @@ static inline void pci_fixup_device(enum pci_fixup_pass pass,
 				    struct pci_dev *dev) { }
 #endif
 
+int pcim_intx(struct pci_dev *pdev, int enabled);
 void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen);
 void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar,
 				const char *name);
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819324.1232673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meN-0007zj-6H; Tue, 15 Oct 2024 18:52:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819324.1232673; Tue, 15 Oct 2024 18:52: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 1t0meN-0007za-2S; Tue, 15 Oct 2024 18:52:07 +0000
Received: by outflank-mailman (input) for mailman id 819324;
 Tue, 15 Oct 2024 18:52: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meL-0006Um-VZ
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52:05 +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 91367b3a-8b26-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 20:52:04 +0200 (CEST)
Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com
 [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-637-E9Bfkn6SNtilpe5qOzaEpw-1; Tue, 15 Oct 2024 14:52:02 -0400
Received: by mail-ed1-f72.google.com with SMTP id
 4fb4d7f45d1cf-5c9452d6321so3556863a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:01 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.51.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:51:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91367b3a-8b26-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018323;
	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=i/tiT1oHv++iZFY5S8iNVJ0nRwrLe5bjQFEltGuWg0g=;
	b=euys1lBaWimYuPsd3pATiacwxgC2qFxyGWDsXYK/V38esHI/+7PjfaXSTb7XaAEbI9KxZN
	cdAEcHKYEjlvVvGtB1y8DCMogi4vPBwZaCQnZSLVJJ6WJkpxFFXJPNz6xW7+96ZHgLjdfq
	yIV9P30GjV6yFEZWOXEXWkZK/bTeKQ8=
X-MC-Unique: E9Bfkn6SNtilpe5qOzaEpw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018321; x=1729623121;
        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=i/tiT1oHv++iZFY5S8iNVJ0nRwrLe5bjQFEltGuWg0g=;
        b=jFTX4O6dnM1ebrFjyQJskR9im9STL5WJqpLIrBWve0rPQW8H9jiRZ5h3XnwNgNCYdI
         zC05wSKYyHpVTejPneJcn0j30DJkrvtLwlMz5uHLiG/f2U+DRCC4TMP71Jw3MBoMgqkd
         03rVRVj4bC4qJGgE+qJDTnMA7RjDgdVYZKSeCqRQTdlFL21KXLY2xcZRNJ/OJyDxkzb9
         0oOZ7ngAY9ipn5w+JsIbOi0iuzUCjBV7vnclg5tcrubtYKxtOV6UIGXivcG2WuKtrvin
         kyFVeV3Q49WfVsFR+b3bEU+c158DVe7BQrCs7iv5dEp0w/hMj2RhMPLyM+YkOZ1c6b1o
         Ul+A==
X-Forwarded-Encrypted: i=1; AJvYcCVKbY+Wza7K3WIRN99ImhpOIKDPrKQa4TZZql0kmVgedSaa3as80GDxaV21PJ2WtcYtmQRasJEnydQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyz0zDowUMOwFR11fS7mgkGgJShDOLt02DwnG01wf5w2lRXnxSm
	+6gdWf5kru4n6oe85/Jr8H+N6MujpIP2Yg5wOcwB3ylz6AVPgY6xfE1GeLeqm0C1i7N4AH6zR7F
	jxPsyt2YQe/yT9ksydGPM7qzqbtemrMHHVMS1Q3bFe5MZgr9IHdYy5iL8qhz05bnn
X-Received: by 2002:a05:6402:42ca:b0:5c9:8584:12ae with SMTP id 4fb4d7f45d1cf-5c9858414famr4855326a12.29.1729018320676;
        Tue, 15 Oct 2024 11:52:00 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHNUSaZzJFpcnbAyxu8SUqVbgRkCBc+0eZafkjjXXKs5iCySMs2In3PqmEp1mZm07oblnaLMw==
X-Received: by 2002:a05:6402:42ca:b0:5c9:8584:12ae with SMTP id 4fb4d7f45d1cf-5c9858414famr4855284a12.29.1729018320158;
        Tue, 15 Oct 2024 11:52:00 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 06/13] misc: Use never-managed version of pci_intx()
Date: Tue, 15 Oct 2024 20:51:16 +0200
Message-ID: <20241015185124.64726-7-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

cardreader/rtsx_pcr.c and tifm_7xx1.c enable their PCI-Device with
pci_enable_device(). Thus, they need the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/misc/cardreader/rtsx_pcr.c | 2 +-
 drivers/misc/tifm_7xx1.c           | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/misc/cardreader/rtsx_pcr.c b/drivers/misc/cardreader/rtsx_pcr.c
index be3d4e0e50cc..e25e6d560dd7 100644
--- a/drivers/misc/cardreader/rtsx_pcr.c
+++ b/drivers/misc/cardreader/rtsx_pcr.c
@@ -1057,7 +1057,7 @@ static int rtsx_pci_acquire_irq(struct rtsx_pcr *pcr)
 	}
 
 	pcr->irq = pcr->pci->irq;
-	pci_intx(pcr->pci, !pcr->msi_en);
+	pci_intx_unmanaged(pcr->pci, !pcr->msi_en);
 
 	return 0;
 }
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c
index 1d54680d6ed2..5f9c7ccae8d2 100644
--- a/drivers/misc/tifm_7xx1.c
+++ b/drivers/misc/tifm_7xx1.c
@@ -327,7 +327,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 		goto err_out;
 	}
 
-	pci_intx(dev, 1);
+	pci_intx_unmanaged(dev, 1);
 
 	fm = tifm_alloc_adapter(dev->device == PCI_DEVICE_ID_TI_XX21_XX11_FM
 				? 4 : 2, &dev->dev);
@@ -368,7 +368,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 err_out_free:
 	tifm_free_adapter(fm);
 err_out_int:
-	pci_intx(dev, 0);
+	pci_intx_unmanaged(dev, 0);
 	pci_release_regions(dev);
 err_out:
 	if (!pci_dev_busy)
@@ -392,7 +392,7 @@ static void tifm_7xx1_remove(struct pci_dev *dev)
 		tifm_7xx1_sock_power_off(tifm_7xx1_sock_addr(fm->addr, cnt));
 
 	iounmap(fm->addr);
-	pci_intx(dev, 0);
+	pci_intx_unmanaged(dev, 0);
 	pci_release_regions(dev);
 
 	pci_disable_device(dev);
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819325.1232682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meR-000051-K5; Tue, 15 Oct 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 819325.1232682; Tue, 15 Oct 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 1t0meR-00004r-Ge; Tue, 15 Oct 2024 18:52:11 +0000
Received: by outflank-mailman (input) for mailman id 819325;
 Tue, 15 Oct 2024 18:52: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meP-0006Um-L9
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52:09 +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 93606f18-8b26-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 20:52:07 +0200 (CEST)
Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com
 [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-588-aYi3jVLMMhqFM3EgbhOKpg-1; Tue, 15 Oct 2024 14:52:05 -0400
Received: by mail-ed1-f69.google.com with SMTP id
 4fb4d7f45d1cf-5c93479b1dcso4556194a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:05 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.52.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:52:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93606f18-8b26-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018326;
	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=op+AvZ1YCKZsOQFtb06qEXzMr+HQn8e2wB0EdtWp+RY=;
	b=ddpmrUXjdjLqmJe7js0QjV1g/HoJbIEbr+X8oYEuAhiBMOF9rUMdp4/Z8976ihE8aEEfpu
	iIh+EoFPsrDWPlC0kRU/VwbQsQ6KEa0dtpHkHHK3e9gRXWRWyjGuP8Nu/lYu7cf+gZ/0P5
	qsnKf2E2uqY9cGwx7+Dc9HTRxz5xmfE=
X-MC-Unique: aYi3jVLMMhqFM3EgbhOKpg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018324; x=1729623124;
        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=op+AvZ1YCKZsOQFtb06qEXzMr+HQn8e2wB0EdtWp+RY=;
        b=EiMn1ymxiXBi4TVebUnaAMR+cEVE7PrFO2OXc+ZjfhAR5nmkEw7SjKU2BFoMEr++T8
         Bvb4daMhV6IpF7oSJbKQlN9UdEiEIPMy+nBUl3iTP1TFy0NuRfJHtdAjQuMofHHaseiA
         msa2/UxKRg7c+1l05lazbeO95OJrlkjKgTJRtvsBEWZ4VaN1NJtk+8xo01dZr68hC9VC
         g2t6DjEhp+FZ3Ngftdan+KQmmy8C7j2mms7gjqwyv8Dqc0j1XqFXTLNuLoLWIMoo5Ss+
         BWEKTDVeq0EjwEhDgO0uyDFtBYySzYa3Wk6DSIGyA9vcbs+7rZ69VRiPmyhGt8+lrmAY
         AKjw==
X-Forwarded-Encrypted: i=1; AJvYcCUqWOJMMgOV6FiRVaIke2idFNORuFW+XSLk/Py4MKX49FyrTjA24mLZguA51y73GhSWLNPpwQ162T0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyC/0naRIJTSKxXG7Dg1uPBYs+LIi4XTyM4smMtLWZI8jL4qCKP
	vI7cihrXNqbCgtMjwgeWUXi0mcoROWlWa3Qtyzc7dmfDmxbjOzvviWhKheOYXbB5wxJheGU5bWy
	BVnaQzycEuLLdfYpxrtyivrQltX//WswEJWmKmgiMcDN+dG8v84S/g+ASCPoS+MwH
X-Received: by 2002:a05:6402:548c:b0:5c9:3ff:2734 with SMTP id 4fb4d7f45d1cf-5c948cb2e85mr11413464a12.12.1729018324143;
        Tue, 15 Oct 2024 11:52:04 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IH9Mt+tYXeO52xhZKwKuRloVsALYEKQc2I21vAq135PHqTEanBCUagfu1NmMBeK/O6BxAgzuw==
X-Received: by 2002:a05:6402:548c:b0:5c9:3ff:2734 with SMTP id 4fb4d7f45d1cf-5c948cb2e85mr11413425a12.12.1729018323667;
        Tue, 15 Oct 2024 11:52:03 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 07/13] vfio/pci: Use never-managed version of pci_intx()
Date: Tue, 15 Oct 2024 20:51:17 +0200
Message-ID: <20241015185124.64726-8-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

vfio enables its PCI-Device with pci_enable_device(). Thus, it
needs the never-managed version.

Replace pci_intx() with pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/vfio/pci/vfio_pci_core.c  |  2 +-
 drivers/vfio/pci/vfio_pci_intrs.c | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index 1ab58da9f38a..90240c8d51aa 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -498,7 +498,7 @@ int vfio_pci_core_enable(struct vfio_pci_core_device *vdev)
 		if (vfio_pci_nointx(pdev)) {
 			pci_info(pdev, "Masking broken INTx support\n");
 			vdev->nointx = true;
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 		} else
 			vdev->pci_2_3 = pci_intx_mask_supported(pdev);
 	}
diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
index 8382c5834335..40abb0b937a2 100644
--- a/drivers/vfio/pci/vfio_pci_intrs.c
+++ b/drivers/vfio/pci/vfio_pci_intrs.c
@@ -118,7 +118,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 		goto out_unlock;
 	}
 
@@ -132,7 +132,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 		 * mask, not just when something is pending.
 		 */
 		if (vdev->pci_2_3)
-			pci_intx(pdev, 0);
+			pci_intx_unmanaged(pdev, 0);
 		else
 			disable_irq_nosync(pdev->irq);
 
@@ -178,7 +178,7 @@ static int vfio_pci_intx_unmask_handler(void *opaque, void *data)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx(pdev, 1);
+			pci_intx_unmanaged(pdev, 1);
 		goto out_unlock;
 	}
 
@@ -296,7 +296,7 @@ static int vfio_intx_enable(struct vfio_pci_core_device *vdev,
 	 */
 	ctx->masked = vdev->virq_disabled;
 	if (vdev->pci_2_3) {
-		pci_intx(pdev, !ctx->masked);
+		pci_intx_unmanaged(pdev, !ctx->masked);
 		irqflags = IRQF_SHARED;
 	} else {
 		irqflags = ctx->masked ? IRQF_NO_AUTOEN : 0;
@@ -569,7 +569,7 @@ static void vfio_msi_disable(struct vfio_pci_core_device *vdev, bool msix)
 	 * via their shutdown paths.  Restore for NoINTx devices.
 	 */
 	if (vdev->nointx)
-		pci_intx(pdev, 0);
+		pci_intx_unmanaged(pdev, 0);
 
 	vdev->irq_type = VFIO_PCI_NUM_IRQS;
 }
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819326.1232693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meT-0000Te-Tq; Tue, 15 Oct 2024 18:52:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819326.1232693; Tue, 15 Oct 2024 18:52: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 1t0meT-0000Su-Pj; Tue, 15 Oct 2024 18:52:13 +0000
Received: by outflank-mailman (input) for mailman id 819326;
 Tue, 15 Oct 2024 18:52: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meR-0006G4-UW
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52:11 +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 9580159f-8b26-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 20:52:11 +0200 (CEST)
Received: from mail-lj1-f200.google.com (mail-lj1-f200.google.com
 [209.85.208.200]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-538-btv5M8XQPdKNeYohVNzpMw-1; Tue, 15 Oct 2024 14:52:08 -0400
Received: by mail-lj1-f200.google.com with SMTP id
 38308e7fff4ca-2fb45ca974bso14366691fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:08 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.52.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:52:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9580159f-8b26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018330;
	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=NsJKOkpA+QoYlzqeYDbY0Dl9xjdlxWNvzFNzd4dMwhk=;
	b=O4EfT2H9WnO5VeuryMyn25009v9RhI/mEJxxnL8tvrr5dW4ZzWnD2nBRXx137ssvOx4kpu
	EIbLSqOC68S5cEbTR2q+/Tq+WigVIrkV8Dv4GltWq0TZP7Ai+hE7+tzsefg5WKiIfUzhNI
	s8sBZY0AbQ6K/DAlKUfZze+HMagsF58=
X-MC-Unique: btv5M8XQPdKNeYohVNzpMw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018327; x=1729623127;
        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=NsJKOkpA+QoYlzqeYDbY0Dl9xjdlxWNvzFNzd4dMwhk=;
        b=D4CJ4cZiDuNvsvIHwIDsn+/9QRUMIh9dLPpqkzLqyKMLPDLybX5lgukL2EEWcJOEBE
         y3lI7OrjNhQqvz4icNuvMJwHUwJJ6tc5xybld3+6UH/rgOK4Mql8rwOfqBqtG9aKk5aB
         AAlMdda/O6dFN0wDssdyVXrP2WiFvnsbva74ojZWadNixGBYMhamazuVKcSIsucL5Sd8
         Rj9jc6iUI8cxmSvTYJhrsz96tJrapHsB/GyOhcwje781ie/kRk5mk2h1LYAKqSeK+2EY
         7e6YCLEA6k5+YvPhPlY7zp4NWCqgYEJrlZh9qv5Fz6/Z/ioMtFse9XcJBCtBN2oPlFnp
         mi5g==
X-Forwarded-Encrypted: i=1; AJvYcCX3V6fJ/NQQPYsINTdXzRzlJoXHoSNziuAX9/PXEGFhb+lGi0oOIIzBJTMF2r/OGDlDaPq7dKqs2/8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyI5SWkbuwPpHy3oJHrgtXVtcUQTc/ovcf1R8TxVnJIRCuzdPJu
	1A0cVq1Qlt24z44GmCM8Rw6FpGabm++6kZox+JBj2W5aN7mU//sm0zHVtvo+3o5e4ObBYXpO4+8
	PPRX1rxOE0IQuOz3OR4ROKxsOLk+k2cBVM1yf+TfkgGNi8C4GZJ4ulKZ3tIosIWZE
X-Received: by 2002:a2e:bc24:0:b0:2fb:51e0:951 with SMTP id 38308e7fff4ca-2fb51e00cd9mr38862361fa.7.1729018327261;
        Tue, 15 Oct 2024 11:52:07 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEVZ1XHHUqIGJ2m/RKPcgltoOTO0Mu8nn9SAFlZXigaFQMqbloSJIQ5jr77XkDUgFazWOLC0g==
X-Received: by 2002:a2e:bc24:0:b0:2fb:51e0:951 with SMTP id 38308e7fff4ca-2fb51e00cd9mr38861861fa.7.1729018326657;
        Tue, 15 Oct 2024 11:52:06 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 08/13] PCI: MSI: Use never-managed version of pci_intx()
Date: Tue, 15 Oct 2024 20:51:18 +0200
Message-ID: <20241015185124.64726-9-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

MSI sets up its own separate devres callback implicitly in
pcim_setup_msi_release(). This callback ultimately uses pci_intx(),
which is problematic since the callback of course runs on driver-detach.

That problem has last been described here:
https://lore.kernel.org/all/ee44ea7ac760e73edad3f20b30b4d2fff66c1a85.camel@redhat.com/

Replace the call to pci_intx() with one to the never-managed version
pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/pci/msi/api.c | 2 +-
 drivers/pci/msi/msi.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/msi/api.c b/drivers/pci/msi/api.c
index b956ce591f96..c95e2e7dc9ab 100644
--- a/drivers/pci/msi/api.c
+++ b/drivers/pci/msi/api.c
@@ -289,7 +289,7 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
 			 */
 			if (affd)
 				irq_create_affinity_masks(1, affd);
-			pci_intx(dev, 1);
+			pci_intx_unmanaged(dev, 1);
 			return 1;
 		}
 	}
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 3a45879d85db..53f13b09db50 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -268,7 +268,7 @@ EXPORT_SYMBOL_GPL(pci_write_msi_msg);
 static void pci_intx_for_msi(struct pci_dev *dev, int enable)
 {
 	if (!(dev->dev_flags & PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG))
-		pci_intx(dev, enable);
+		pci_intx_unmanaged(dev, enable);
 }
 
 static void pci_msi_set_enable(struct pci_dev *dev, int enable)
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819336.1232703 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meX-00015P-61; Tue, 15 Oct 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 819336.1232703; Tue, 15 Oct 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 1t0meX-00015I-2e; Tue, 15 Oct 2024 18:52:17 +0000
Received: by outflank-mailman (input) for mailman id 819336;
 Tue, 15 Oct 2024 18:52: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meW-0006G4-1i
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52:16 +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 97d3cbb0-8b26-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 20:52:15 +0200 (CEST)
Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com
 [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-61-QsCyNvYIPm6a-UlLcWjZ0g-1; Tue, 15 Oct 2024 14:52:11 -0400
Received: by mail-ed1-f72.google.com with SMTP id
 4fb4d7f45d1cf-5c930ca5d12so127179a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:11 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.52.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:52:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 97d3cbb0-8b26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018334;
	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=f2Jr5AkqxaPFEKRGVmaRlM7QFZhouz0Sldtn5ZZjCmA=;
	b=hCOjnf86RoskrSMea6O/CrmMzMiVhilXhPCSn+dn4hx9sJrAeyyCmt9Ca42guwlvbj3YFh
	4/L4PHMQmuel3T0GU4X4gSpJLMuCgRc17qGBxlCp/2lP6ecqSmgH07b2BxmzGgNxl3PowA
	/t8vTa3w/OgpHYNnRdAH2nJWNmI8Cxc=
X-MC-Unique: QsCyNvYIPm6a-UlLcWjZ0g-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018330; x=1729623130;
        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=f2Jr5AkqxaPFEKRGVmaRlM7QFZhouz0Sldtn5ZZjCmA=;
        b=RVB+rV4Qjzvs0n5YN7t70qHcGRw0ayFRdOFHuxDu0HBfMzV0CKNq2+DiyDuuBvDT7p
         m6iWACPXGHLQZNoJehAIrQk2ZEsYdGUQcF+P/TgxekyPcCXNsgyAFSoDc3GkA4O0fsQd
         QkvGwpeKlHbH6mrsZ6Bq6nUHROQkNrOgmnsc4ah1ZE2IlaQR85dHIWi3V8kE8RjT4aCz
         g3G6qgHKsmTomUp9LVwVSwdonx6c81LkZKdnXW3KHNYfPwlryqG92j02wMiBSQIX+oEE
         CPKwcEqlUD/IKH/GtCjBuqzE4YH34lw0rlpcD+CpTrE198ymRBMbwzHc2y8yr5f1ZdGL
         J/rA==
X-Forwarded-Encrypted: i=1; AJvYcCVD7kIZCINBQHOBUNrbgaeDb2e6lZ84Cjyoqwjqs5wYLX+f3Dw+hBJpBThyKdJtj0OVfR3gCWcJgac=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyz4NSpzbcbQroJ+skDKn1H0ZQBw13ATn8LqvAWNXGR5FwRB5uZ
	clrlrAvCE6VTL7bkipw/hb04fP32fkRLNIvsBJNpdqk/uAHhGMkWGOXUKUqdTogJ/OeN4R7+iGB
	G6SJMRnZ/WC2sPVV2K+5mCUMzkYFyc75KHyu81v+6qGDA9A0dunzqf3VCb5Di6ilE
X-Received: by 2002:a05:6402:27cf:b0:5c9:6981:9325 with SMTP id 4fb4d7f45d1cf-5c9698202e7mr8257651a12.8.1729018329916;
        Tue, 15 Oct 2024 11:52:09 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFz3y1lDPzlFIAXe641ucDk32i7Rid6UZFyDapZOvfZWi7HgWp5FyR2ER9dH4XFZXo38YzXpg==
X-Received: by 2002:a05:6402:27cf:b0:5c9:6981:9325 with SMTP id 4fb4d7f45d1cf-5c9698202e7mr8257603a12.8.1729018329468;
        Tue, 15 Oct 2024 11:52:09 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 09/13] ata: Use always-managed version of pci_intx()
Date: Tue, 15 Oct 2024 20:51:19 +0200
Message-ID: <20241015185124.64726-10-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

All users in ata enable their PCI-Device with pcim_enable_device(). Thus,
they need the always-managed version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/ata/ahci.c       | 2 +-
 drivers/ata/ata_piix.c   | 2 +-
 drivers/ata/pata_rdc.c   | 2 +-
 drivers/ata/sata_sil24.c | 2 +-
 drivers/ata/sata_sis.c   | 2 +-
 drivers/ata/sata_uli.c   | 2 +-
 drivers/ata/sata_vsc.c   | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index 45f63b09828a..9273ff3d4732 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1985,7 +1985,7 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	if (ahci_init_msi(pdev, n_ports, hpriv) < 0) {
 		/* legacy intx interrupts */
-		pci_intx(pdev, 1);
+		pcim_intx(pdev, 1);
 	}
 	hpriv->irq = pci_irq_vector(pdev, 0);
 
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c
index 093b940bc953..d441246fa357 100644
--- a/drivers/ata/ata_piix.c
+++ b/drivers/ata/ata_piix.c
@@ -1725,7 +1725,7 @@ static int piix_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	 * message-signalled interrupts currently).
 	 */
 	if (port_flags & PIIX_FLAG_CHECKINTR)
-		pci_intx(pdev, 1);
+		pcim_intx(pdev, 1);
 
 	if (piix_check_450nx_errata(pdev)) {
 		/* This writes into the master table but it does not
diff --git a/drivers/ata/pata_rdc.c b/drivers/ata/pata_rdc.c
index 0a9689862f71..09792aac7f9d 100644
--- a/drivers/ata/pata_rdc.c
+++ b/drivers/ata/pata_rdc.c
@@ -340,7 +340,7 @@ static int rdc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 		return rc;
 	host->private_data = hpriv;
 
-	pci_intx(pdev, 1);
+	pcim_intx(pdev, 1);
 
 	host->flags |= ATA_HOST_PARALLEL_SCAN;
 
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c
index 72c03cbdaff4..b771ebd41252 100644
--- a/drivers/ata/sata_sil24.c
+++ b/drivers/ata/sata_sil24.c
@@ -1317,7 +1317,7 @@ static int sil24_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	if (sata_sil24_msi && !pci_enable_msi(pdev)) {
 		dev_info(&pdev->dev, "Using MSI\n");
-		pci_intx(pdev, 0);
+		pcim_intx(pdev, 0);
 	}
 
 	pci_set_master(pdev);
diff --git a/drivers/ata/sata_sis.c b/drivers/ata/sata_sis.c
index ef8724986de3..b8b6d9eff3b8 100644
--- a/drivers/ata/sata_sis.c
+++ b/drivers/ata/sata_sis.c
@@ -290,7 +290,7 @@ static int sis_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 	pci_set_master(pdev);
-	pci_intx(pdev, 1);
+	pcim_intx(pdev, 1);
 	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
 				 IRQF_SHARED, &sis_sht);
 }
diff --git a/drivers/ata/sata_uli.c b/drivers/ata/sata_uli.c
index 60ea45926cd1..52894ff49dcb 100644
--- a/drivers/ata/sata_uli.c
+++ b/drivers/ata/sata_uli.c
@@ -221,7 +221,7 @@ static int uli_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 	}
 
 	pci_set_master(pdev);
-	pci_intx(pdev, 1);
+	pcim_intx(pdev, 1);
 	return ata_host_activate(host, pdev->irq, ata_bmdma_interrupt,
 				 IRQF_SHARED, &uli_sht);
 }
diff --git a/drivers/ata/sata_vsc.c b/drivers/ata/sata_vsc.c
index d39b87537168..a53a2dfc1e17 100644
--- a/drivers/ata/sata_vsc.c
+++ b/drivers/ata/sata_vsc.c
@@ -384,7 +384,7 @@ static int vsc_sata_init_one(struct pci_dev *pdev,
 		pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 0x80);
 
 	if (pci_enable_msi(pdev) == 0)
-		pci_intx(pdev, 0);
+		pcim_intx(pdev, 0);
 
 	/*
 	 * Config offset 0x98 is "Extended Control and Status Register 0"
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:52:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:52:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819337.1232713 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0meY-0001Qz-HQ; Tue, 15 Oct 2024 18:52:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819337.1232713; Tue, 15 Oct 2024 18:52: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 1t0meY-0001QJ-BN; Tue, 15 Oct 2024 18:52:18 +0000
Received: by outflank-mailman (input) for mailman id 819337;
 Tue, 15 Oct 2024 18:52: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meW-0006G4-O6
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52:16 +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 985f0d3b-8b26-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 20:52:16 +0200 (CEST)
Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com
 [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-433-HHsz9RP4P4OEz0tNjkTDfA-1; Tue, 15 Oct 2024 14:52:14 -0400
Received: by mail-ej1-f69.google.com with SMTP id
 a640c23a62f3a-a9a2593e9e9so97400166b.0
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:13 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.52.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:52:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 985f0d3b-8b26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018335;
	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=Y8By1s5DNgX9TQd6/BhnQDktT5vhu3DwbP7hhC4pXIE=;
	b=FIm8lxnLvCZC6syad7dr5VuHqhpnPHpVFdO6FSXxbltJpDrhAOxmukyicJltSYdCfGvSba
	7bvl5lBdbJOnaebHjlq3HAtMVKwGlqncXOzb3eQ/j4bgSUGHscqe8bvU9TPAaXbK5yYQJ0
	bHCLroVDsbGrgYt/gknTjfzAL8YvK2Q=
X-MC-Unique: HHsz9RP4P4OEz0tNjkTDfA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018333; x=1729623133;
        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=Y8By1s5DNgX9TQd6/BhnQDktT5vhu3DwbP7hhC4pXIE=;
        b=ckXF3EAgvZ7PeiahL9p0Pz/UkLOaB/SdDC70hhGlctaPRSDq6od/D7CSRWgWJZXK5I
         UuO+pkWzsjMj83S++Z3x55DSrPw583adKfWyx3kxXlrroJ7zSAlcMDRAUbgT5mGmzHMR
         9Ev8w0NUjbzHuYFIX5I/cLqRxmKtJDSJh2Jo6tNkyjb9BNNXsqqSTMBx1/2pCmL4ieq4
         20v5Z1RKKpjcZNtECWHJssEk5ZebuZ9EeLzFSJ0U+y/UmDcvXlFepBXho+oPoIWMdHY5
         FdKYlxZ7F336VFoYApaza+bO/erTM3J3Iu3MqXXBML9HcM6pbyZ0Xs4SQchu4mToRYuq
         0zRg==
X-Forwarded-Encrypted: i=1; AJvYcCXeT6Cz6TH8ttYdflnI2m6uJVoW8/szo8qvD15bfS6wr0lHn9omyTn+30yKSN6eWDOqtQIKIXAN5vw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz5EBWshUYaFwuip1XFvluZHWVHFs6zjedSmpK0czYiAa2BQy4T
	y5Z/wnpE549MKnybQyi8hQRjlwNKX4IcU6PgZiBiKAntQbvozzUX+uF0Bx1dy6u+hk1Uy99ESsM
	lkwVHW5PMp6uoM+pRyQZ2tU4Gxq/FjkOb8EVLruA2POXR95SC7nnS7vnzmGE1ZD9T
X-Received: by 2002:a17:907:7296:b0:a99:398b:59a2 with SMTP id a640c23a62f3a-a99e3ea2b27mr1249221366b.54.1729018332774;
        Tue, 15 Oct 2024 11:52:12 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEVMiEMyqRAKWpWp2L+WAD0bOjYiITCR1i/AfinVgUXX5Av5wUs1Mv5vuWKI1T3DD0pJ93RAg==
X-Received: by 2002:a17:907:7296:b0:a99:398b:59a2 with SMTP id a640c23a62f3a-a99e3ea2b27mr1249213666b.54.1729018332219;
        Tue, 15 Oct 2024 11:52:12 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 10/13] wifi: qtnfmac: use always-managed version of pcim_intx()
Date: Tue, 15 Oct 2024 20:51:20 +0200
Message-ID: <20241015185124.64726-11-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

qtnfmac enables its PCI-Device with pcim_enable_device(). Thus, it needs
the always-managed version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
index f66eb43094d4..3adcfac2886f 100644
--- a/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
+++ b/drivers/net/wireless/quantenna/qtnfmac/pcie/pcie.c
@@ -204,7 +204,7 @@ static void qtnf_pcie_init_irq(struct qtnf_pcie_bus_priv *priv, bool use_msi)
 
 	if (!priv->msi_enabled) {
 		pr_warn("legacy PCIE interrupts enabled\n");
-		pci_intx(pdev, 1);
+		pcim_intx(pdev, 1);
 	}
 }
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:56:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:56:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819390.1232728 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0mif-0004bf-LH; Tue, 15 Oct 2024 18:56:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819390.1232728; Tue, 15 Oct 2024 18:56: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 1t0mif-0004aJ-EC; Tue, 15 Oct 2024 18:56:33 +0000
Received: by outflank-mailman (input) for mailman id 819390;
 Tue, 15 Oct 2024 18:56: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0meh-0006G4-Oq
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52: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 9eece4b0-8b26-11ef-a0be-8be0dac302b0;
 Tue, 15 Oct 2024 20:52:27 +0200 (CEST)
Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com
 [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-64-sgIoPhvSPXmUnYTmUI6xCA-1; Tue, 15 Oct 2024 14:52:23 -0400
Received: by mail-ed1-f71.google.com with SMTP id
 4fb4d7f45d1cf-5c9166079c0so4114681a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:22 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.52.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:52:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9eece4b0-8b26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018346;
	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=GXTMrjROGaTcKBpC5zD8IzpbS8kTElR36tpy9F32tfY=;
	b=J8TfNqjM+wJxgjKiEZuJALORjwIJeobmEHx3TdWP9cDPYLWO1WmwQwCl94ENBxMWS4nLVr
	W5VjAxZjPFSpbL6qxJD0JH/4ApyjL4XmbZZMwUsLaosfvVPgO0n7xeRO+nHywQPmF3Fw5z
	ZPSs4xGEcfnPHBz9vYsp5gOdNR++r2c=
X-MC-Unique: sgIoPhvSPXmUnYTmUI6xCA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018341; x=1729623141;
        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=GXTMrjROGaTcKBpC5zD8IzpbS8kTElR36tpy9F32tfY=;
        b=GyZSc4kKs6gnez/kAlOZdIyrLBb5PQockzOA2Kl1owsEVUFW9zItxIcPuC8+d+dvAi
         VYcsFq4/3Z4HyB1FlZxMFZ1ZZo4ed5l3ECKLG7zGccNG9ZdrHulmy8+I8K6gWvkDwpZr
         y+j8748HMN8MgdSFDLoaQKDrRTROLM+mZNeD07hKGC8MJGSgsYggCzEdAHjR+SxhDjrD
         LFshlEkcBnPb5YjzwaKW1cWxU6zPYrvikOzH1Yr2UiGHqg6Uu6SPy3RzhGbFNWGG3p05
         ghxfzKlVmBYOVBfayiba1g0tobXP0gAm1KgCxj0T2nZ7g96ZWFM8ZlhwM/WUz1dDt4Br
         E/sQ==
X-Forwarded-Encrypted: i=1; AJvYcCXFiTq9YT8OLTEVwVigSoQ9bM1jTivVHtiYYt2kNP8Mak2Pdu97MsSmyAnOV9bB48pgfzmKaDT9JT8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyPm/8tIH3Nym8VCL8z02aZbMt0Dd6tu3rCttpoYcUJprVFVyd/
	OmEeILZJTqk27dq/9RRDefkgSntGb4SfnwTGhR/wFbsQTSw797uBTFY8HDrp66W2i/pJxNAi4W4
	2PmSwl/l48i1AZeXyCtIr3hA24Ztb3u3P1KWDjdm0B3ueF1pc/L36Ut0YkjphzTMX
X-Received: by 2002:a05:6402:520f:b0:5c5:ba82:c3b1 with SMTP id 4fb4d7f45d1cf-5c95ac4e471mr9746986a12.29.1729018341563;
        Tue, 15 Oct 2024 11:52:21 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IH4IRS8nhPSbHHMGAr1esFr/1sORzxV4dHhLUSla/ENaT5Qe2x1SJKm+qMzu8Ky2rtxd6imbQ==
X-Received: by 2002:a05:6402:520f:b0:5c5:ba82:c3b1 with SMTP id 4fb4d7f45d1cf-5c95ac4e471mr9746938a12.29.1729018341069;
        Tue, 15 Oct 2024 11:52:21 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
Date: Tue, 15 Oct 2024 20:51:23 +0200
Message-ID: <20241015185124.64726-14-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() and its managed counterpart pcim_intx() only exist for older
drivers which have not been ported yet for various reasons. Future
drivers should preferably use pci_alloc_irq_vectors().

Mark pci_intx() and pcim_intx() as deprecated and encourage usage of
pci_alloc_irq_vectors() in its place.

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/pci/devres.c | 5 ++++-
 drivers/pci/pci.c    | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
index 6f8f712fe34e..4c76fc063104 100644
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -435,7 +435,7 @@ static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
 }
 
 /**
- * pcim_intx - managed pci_intx()
+ * pcim_intx - managed pci_intx() (DEPRECATED)
  * @pdev: the PCI device to operate on
  * @enable: boolean: whether to enable or disable PCI INTx
  *
@@ -443,6 +443,9 @@ static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
  *
  * Enable/disable PCI INTx for device @pdev.
  * Restore the original state on driver detach.
+ *
+ * This function is DEPRECATED. Do not use it in new code.
+ * Use pci_alloc_irq_vectors() instead (there is no managed version, currently).
  */
 int pcim_intx(struct pci_dev *pdev, int enable)
 {
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 7ce1d0e3a1d5..dc69e23b8982 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -4477,11 +4477,14 @@ void pci_disable_parity(struct pci_dev *dev)
 }
 
 /**
- * pci_intx - enables/disables PCI INTx for device dev
+ * pci_intx - enables/disables PCI INTx for device dev (DEPRECATED)
  * @pdev: the PCI device to operate on
  * @enable: boolean: whether to enable or disable PCI INTx
  *
  * Enables/disables PCI INTx for device @pdev
+ *
+ * This function is DEPRECATED. Do not use it in new code.
+ * Use pci_alloc_irq_vectors() instead.
  */
 void pci_intx(struct pci_dev *pdev, int enable)
 {
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:56:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:56:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819384.1232722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0mif-0004YC-9s; Tue, 15 Oct 2024 18:56:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819384.1232722; Tue, 15 Oct 2024 18:56: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 1t0mif-0004Y5-6v; Tue, 15 Oct 2024 18:56:33 +0000
Received: by outflank-mailman (input) for mailman id 819384;
 Tue, 15 Oct 2024 18:56: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0mee-0006Um-PR
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52: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 9c428e68-8b26-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 20:52:22 +0200 (CEST)
Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com
 [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-178-odUzbqeFOq2LqoEDySMe2w-1; Tue, 15 Oct 2024 14:52:20 -0400
Received: by mail-ed1-f72.google.com with SMTP id
 4fb4d7f45d1cf-5c937403b2bso3961516a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:20 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.52.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:52:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c428e68-8b26-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018341;
	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=gRWF4l7RXrDlZGfZLpCnJ3qwA/L5ZI5EY2R8A6I+3b8=;
	b=ZzTVJbXJzXYAQgZctQpRkNf3sMxxP96Ndhz/XE/4pCQM+MUw6N/3UTipr/U6kx8gGK1vJb
	y0KOINluvzBlyXOlVL8vqPYAU8qvh5FyVpsCiG/74D2+nJS37fMJK0dKVFMpEosRRg8Hy8
	cbvWGzMKBxdCkUljcM4XlwB+7ICsiWE=
X-MC-Unique: odUzbqeFOq2LqoEDySMe2w-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018339; x=1729623139;
        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=gRWF4l7RXrDlZGfZLpCnJ3qwA/L5ZI5EY2R8A6I+3b8=;
        b=maJ7CIa+QQUtwRGBHMmLu8c5WtplLBhNY+z7WDspBKPTdUOCRlPworfmL9kOWtMIZn
         fTmJllizvN6H3VKgSm0xyfF5/tzWko/QD4b33LRmPYNA/S+zfWVAzVdGTbsXBGWyALjI
         sAnUWXytw0I6I+fVkhsP0QOYxMwAeGcqN5uU5PEJZ5qn8Drm88ZtD3Y+OS9gqNqDfNqM
         NnP8XPIJG6VY1C/axOta50+k9CK6TciGzLyhtIx0Tm1QAZlgMzap9N9G+yAnx1sOe2rc
         09L5wmt2DD3gE79/4P7EPxAOCT5CTEcH04rSWKvFyI0vI43Hvx5j9NrdaEvl5eCxVO8R
         NDug==
X-Forwarded-Encrypted: i=1; AJvYcCWsaN4akp96xzX7wNh+ANacdvfcTEHhrQrahnqdPuApQ8xyNVfMvQSceFoPCjZRZNzJGUVb/hQYqTk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwsK5O0AW/m8z3cnI/G2xMy3OYMvcLE8I77HHg6i34DxDfZ+HdH
	efCsvU5yCDXeoJM3N91D10KHf6Uia3bEsc9g/DwJCbRfVtHAVKt1rmL4DBSlEhLbhySPDd005bW
	mW/OJp9W/25uMlSqypGCnhgETYZlLpAevqI7iNX5AxQgxPbeEtxHrofcw4CvUUNCs
X-Received: by 2002:a05:6402:26ce:b0:5c9:74e3:acbb with SMTP id 4fb4d7f45d1cf-5c974e3b178mr8124684a12.10.1729018338914;
        Tue, 15 Oct 2024 11:52:18 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHgrJeKaKX4m4zRoSkTZ2iU9WDo14/3/71DwH5+IKd6TCcrfjCz2uiFI8ehE0urDwBhnYN1MQ==
X-Received: by 2002:a05:6402:26ce:b0:5c9:74e3:acbb with SMTP id 4fb4d7f45d1cf-5c974e3b178mr8124648a12.10.1729018338365;
        Tue, 15 Oct 2024 11:52:18 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org
Subject: [PATCH 12/13] Remove devres from pci_intx()
Date: Tue, 15 Oct 2024 20:51:22 +0200
Message-ID: <20241015185124.64726-13-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. This hybrid nature is undesirable.

Since all users of pci_intx() have by now been ported either to
always-managed pcim_intx() or never-managed pci_intx_unmanaged(), the
devres functionality can be removed from pci_intx().

Consequently, pci_intx_unmanaged() is now redundant, because pci_intx()
itself is now unmanaged.

Remove the devres functionality from pci_intx(). Have all users of
pci_intx_unmanaged() call pci_intx(). Remove pci_intx_unmanaged().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
---
 drivers/misc/cardreader/rtsx_pcr.c            |  2 +-
 drivers/misc/tifm_7xx1.c                      |  6 +--
 .../net/ethernet/broadcom/bnx2x/bnx2x_main.c  |  2 +-
 drivers/net/ethernet/brocade/bna/bnad.c       |  2 +-
 drivers/ntb/hw/amd/ntb_hw_amd.c               |  4 +-
 drivers/ntb/hw/intel/ntb_hw_gen1.c            |  2 +-
 drivers/pci/devres.c                          |  4 +-
 drivers/pci/msi/api.c                         |  2 +-
 drivers/pci/msi/msi.c                         |  2 +-
 drivers/pci/pci.c                             | 42 +------------------
 drivers/vfio/pci/vfio_pci_core.c              |  2 +-
 drivers/vfio/pci/vfio_pci_intrs.c             | 10 ++---
 drivers/xen/xen-pciback/conf_space_header.c   |  2 +-
 include/linux/pci.h                           |  1 -
 14 files changed, 22 insertions(+), 61 deletions(-)

diff --git a/drivers/misc/cardreader/rtsx_pcr.c b/drivers/misc/cardreader/rtsx_pcr.c
index e25e6d560dd7..be3d4e0e50cc 100644
--- a/drivers/misc/cardreader/rtsx_pcr.c
+++ b/drivers/misc/cardreader/rtsx_pcr.c
@@ -1057,7 +1057,7 @@ static int rtsx_pci_acquire_irq(struct rtsx_pcr *pcr)
 	}
 
 	pcr->irq = pcr->pci->irq;
-	pci_intx_unmanaged(pcr->pci, !pcr->msi_en);
+	pci_intx(pcr->pci, !pcr->msi_en);
 
 	return 0;
 }
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c
index 5f9c7ccae8d2..1d54680d6ed2 100644
--- a/drivers/misc/tifm_7xx1.c
+++ b/drivers/misc/tifm_7xx1.c
@@ -327,7 +327,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 		goto err_out;
 	}
 
-	pci_intx_unmanaged(dev, 1);
+	pci_intx(dev, 1);
 
 	fm = tifm_alloc_adapter(dev->device == PCI_DEVICE_ID_TI_XX21_XX11_FM
 				? 4 : 2, &dev->dev);
@@ -368,7 +368,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev,
 err_out_free:
 	tifm_free_adapter(fm);
 err_out_int:
-	pci_intx_unmanaged(dev, 0);
+	pci_intx(dev, 0);
 	pci_release_regions(dev);
 err_out:
 	if (!pci_dev_busy)
@@ -392,7 +392,7 @@ static void tifm_7xx1_remove(struct pci_dev *dev)
 		tifm_7xx1_sock_power_off(tifm_7xx1_sock_addr(fm->addr, cnt));
 
 	iounmap(fm->addr);
-	pci_intx_unmanaged(dev, 0);
+	pci_intx(dev, 0);
 	pci_release_regions(dev);
 
 	pci_disable_device(dev);
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 2ae63d6e6792..678829646cec 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -1669,7 +1669,7 @@ static void bnx2x_igu_int_enable(struct bnx2x *bp)
 	REG_WR(bp, IGU_REG_PF_CONFIGURATION, val);
 
 	if (val & IGU_PF_CONF_INT_LINE_EN)
-		pci_intx_unmanaged(bp->pdev, true);
+		pci_intx(bp->pdev, true);
 
 	barrier();
 
diff --git a/drivers/net/ethernet/brocade/bna/bnad.c b/drivers/net/ethernet/brocade/bna/bnad.c
index 2b37462d406e..ece6f3b48327 100644
--- a/drivers/net/ethernet/brocade/bna/bnad.c
+++ b/drivers/net/ethernet/brocade/bna/bnad.c
@@ -2669,7 +2669,7 @@ bnad_enable_msix(struct bnad *bnad)
 		}
 	}
 
-	pci_intx_unmanaged(bnad->pcidev, 0);
+	pci_intx(bnad->pcidev, 0);
 
 	return;
 
diff --git a/drivers/ntb/hw/amd/ntb_hw_amd.c b/drivers/ntb/hw/amd/ntb_hw_amd.c
index b146f170e839..d687e8c2cc78 100644
--- a/drivers/ntb/hw/amd/ntb_hw_amd.c
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
@@ -791,7 +791,7 @@ static int ndev_init_isr(struct amd_ntb_dev *ndev,
 err_msi_enable:
 
 	/* Try to set up intx irq */
-	pci_intx_unmanaged(pdev, 1);
+	pci_intx(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
@@ -831,7 +831,7 @@ static void ndev_deinit_isr(struct amd_ntb_dev *ndev)
 		if (pci_dev_msi_enabled(pdev))
 			pci_disable_msi(pdev);
 		else
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 	}
 }
 
diff --git a/drivers/ntb/hw/intel/ntb_hw_gen1.c b/drivers/ntb/hw/intel/ntb_hw_gen1.c
index 9ad9d7fe227e..079b8cd79785 100644
--- a/drivers/ntb/hw/intel/ntb_hw_gen1.c
+++ b/drivers/ntb/hw/intel/ntb_hw_gen1.c
@@ -445,7 +445,7 @@ int ndev_init_isr(struct intel_ntb_dev *ndev,
 
 	/* Try to set up intx irq */
 
-	pci_intx_unmanaged(pdev, 1);
+	pci_intx(pdev, 1);
 
 	rc = request_irq(pdev->irq, ndev_irq_isr, IRQF_SHARED,
 			 "ndev_irq_isr", ndev);
diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
index d32827a1f2f4..6f8f712fe34e 100644
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -416,7 +416,7 @@ static void pcim_intx_restore(struct device *dev, void *data)
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct pcim_intx_devres *res = data;
 
-	pci_intx_unmanaged(pdev, res->orig_intx);
+	pci_intx(pdev, res->orig_intx);
 }
 
 static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
@@ -453,7 +453,7 @@ int pcim_intx(struct pci_dev *pdev, int enable)
 		return -ENOMEM;
 
 	res->orig_intx = !enable;
-	pci_intx_unmanaged(pdev, enable);
+	pci_intx(pdev, enable);
 
 	return 0;
 }
diff --git a/drivers/pci/msi/api.c b/drivers/pci/msi/api.c
index c95e2e7dc9ab..b956ce591f96 100644
--- a/drivers/pci/msi/api.c
+++ b/drivers/pci/msi/api.c
@@ -289,7 +289,7 @@ int pci_alloc_irq_vectors_affinity(struct pci_dev *dev, unsigned int min_vecs,
 			 */
 			if (affd)
 				irq_create_affinity_masks(1, affd);
-			pci_intx_unmanaged(dev, 1);
+			pci_intx(dev, 1);
 			return 1;
 		}
 	}
diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c
index 53f13b09db50..3a45879d85db 100644
--- a/drivers/pci/msi/msi.c
+++ b/drivers/pci/msi/msi.c
@@ -268,7 +268,7 @@ EXPORT_SYMBOL_GPL(pci_write_msi_msg);
 static void pci_intx_for_msi(struct pci_dev *dev, int enable)
 {
 	if (!(dev->dev_flags & PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG))
-		pci_intx_unmanaged(dev, enable);
+		pci_intx(dev, enable);
 }
 
 static void pci_msi_set_enable(struct pci_dev *dev, int enable)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index d7fd0772a885..7ce1d0e3a1d5 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -4477,16 +4477,13 @@ void pci_disable_parity(struct pci_dev *dev)
 }
 
 /**
- * pci_intx - enables/disables PCI INTx for device dev, unmanaged version
+ * pci_intx - enables/disables PCI INTx for device dev
  * @pdev: the PCI device to operate on
  * @enable: boolean: whether to enable or disable PCI INTx
  *
  * Enables/disables PCI INTx for device @pdev
- *
- * This function behavios identically to pci_intx(), but is never managed with
- * devres.
  */
-void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
+void pci_intx(struct pci_dev *pdev, int enable)
 {
 	u16 pci_command, new;
 
@@ -4502,41 +4499,6 @@ void pci_intx_unmanaged(struct pci_dev *pdev, int enable)
 
 	pci_write_config_word(pdev, PCI_COMMAND, new);
 }
-EXPORT_SYMBOL_GPL(pci_intx_unmanaged);
-
-/**
- * pci_intx - enables/disables PCI INTx for device dev
- * @pdev: the PCI device to operate on
- * @enable: boolean: whether to enable or disable PCI INTx
- *
- * Enables/disables PCI INTx for device @pdev
- *
- * NOTE:
- * This is a "hybrid" function: It's normally unmanaged, but becomes managed
- * when pcim_enable_device() has been called in advance. This hybrid feature is
- * DEPRECATED! If you want managed cleanup, use pcim_intx() instead.
- */
-void pci_intx(struct pci_dev *pdev, int enable)
-{
-	u16 pci_command, new;
-
-	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
-
-	if (enable)
-		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
-	else
-		new = pci_command | PCI_COMMAND_INTX_DISABLE;
-
-	if (new != pci_command) {
-		/* Preserve the "hybrid" behavior for backwards compatibility */
-		if (pci_is_managed(pdev)) {
-			WARN_ON_ONCE(pcim_intx(pdev, enable) != 0);
-			return;
-		}
-
-		pci_write_config_word(pdev, PCI_COMMAND, new);
-	}
-}
 EXPORT_SYMBOL_GPL(pci_intx);
 
 /**
diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index 90240c8d51aa..1ab58da9f38a 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -498,7 +498,7 @@ int vfio_pci_core_enable(struct vfio_pci_core_device *vdev)
 		if (vfio_pci_nointx(pdev)) {
 			pci_info(pdev, "Masking broken INTx support\n");
 			vdev->nointx = true;
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 		} else
 			vdev->pci_2_3 = pci_intx_mask_supported(pdev);
 	}
diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
index 40abb0b937a2..8382c5834335 100644
--- a/drivers/vfio/pci/vfio_pci_intrs.c
+++ b/drivers/vfio/pci/vfio_pci_intrs.c
@@ -118,7 +118,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 		goto out_unlock;
 	}
 
@@ -132,7 +132,7 @@ static bool __vfio_pci_intx_mask(struct vfio_pci_core_device *vdev)
 		 * mask, not just when something is pending.
 		 */
 		if (vdev->pci_2_3)
-			pci_intx_unmanaged(pdev, 0);
+			pci_intx(pdev, 0);
 		else
 			disable_irq_nosync(pdev->irq);
 
@@ -178,7 +178,7 @@ static int vfio_pci_intx_unmask_handler(void *opaque, void *data)
 	 */
 	if (unlikely(!is_intx(vdev))) {
 		if (vdev->pci_2_3)
-			pci_intx_unmanaged(pdev, 1);
+			pci_intx(pdev, 1);
 		goto out_unlock;
 	}
 
@@ -296,7 +296,7 @@ static int vfio_intx_enable(struct vfio_pci_core_device *vdev,
 	 */
 	ctx->masked = vdev->virq_disabled;
 	if (vdev->pci_2_3) {
-		pci_intx_unmanaged(pdev, !ctx->masked);
+		pci_intx(pdev, !ctx->masked);
 		irqflags = IRQF_SHARED;
 	} else {
 		irqflags = ctx->masked ? IRQF_NO_AUTOEN : 0;
@@ -569,7 +569,7 @@ static void vfio_msi_disable(struct vfio_pci_core_device *vdev, bool msix)
 	 * via their shutdown paths.  Restore for NoINTx devices.
 	 */
 	if (vdev->nointx)
-		pci_intx_unmanaged(pdev, 0);
+		pci_intx(pdev, 0);
 
 	vdev->irq_type = VFIO_PCI_NUM_IRQS;
 }
diff --git a/drivers/xen/xen-pciback/conf_space_header.c b/drivers/xen/xen-pciback/conf_space_header.c
index 8d26d64232e8..fc0332645966 100644
--- a/drivers/xen/xen-pciback/conf_space_header.c
+++ b/drivers/xen/xen-pciback/conf_space_header.c
@@ -106,7 +106,7 @@ static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
 
 	if (dev_data && dev_data->allow_interrupt_control &&
 	    ((cmd->val ^ value) & PCI_COMMAND_INTX_DISABLE))
-		pci_intx_unmanaged(dev, !(value & PCI_COMMAND_INTX_DISABLE));
+		pci_intx(dev, !(value & PCI_COMMAND_INTX_DISABLE));
 
 	cmd->val = value;
 
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 6b8cde76d564..1b2a6dd1dfed 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1353,7 +1353,6 @@ int __must_check pcim_set_mwi(struct pci_dev *dev);
 int pci_try_set_mwi(struct pci_dev *dev);
 void pci_clear_mwi(struct pci_dev *dev);
 void pci_disable_parity(struct pci_dev *dev);
-void pci_intx_unmanaged(struct pci_dev *pdev, int enable);
 void pci_intx(struct pci_dev *dev, int enable);
 bool pci_check_and_mask_intx(struct pci_dev *dev);
 bool pci_check_and_unmask_intx(struct pci_dev *dev);
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 18:56:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 18:56:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819395.1232742 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0mig-00050w-Qg; Tue, 15 Oct 2024 18:56:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819395.1232742; Tue, 15 Oct 2024 18:56: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 1t0mig-00050p-Nr; Tue, 15 Oct 2024 18:56:34 +0000
Received: by outflank-mailman (input) for mailman id 819395;
 Tue, 15 Oct 2024 18:56: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=UOCu=RL=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0med-0006Um-4j
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 18:52: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 9b6d1621-8b26-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 20:52:21 +0200 (CEST)
Received: from mail-ej1-f69.google.com (mail-ej1-f69.google.com
 [209.85.218.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-473-hljZtCeAP0ehqljjTetxPw-1; Tue, 15 Oct 2024 14:52:16 -0400
Received: by mail-ej1-f69.google.com with SMTP id
 a640c23a62f3a-a9a2ae49a32so81074666b.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 11:52:16 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d5d5a0006e2615320d1d4db.dip.versatel-1u1.de.
 [2001:16b8:2d5d:5a00:6e2:6153:20d1:d4db])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d39a9a2sm974438a12.0.2024.10.15.11.52.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 11:52:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b6d1621-8b26-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729018340;
	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=nkAJx4kdHqc1uo2Ugvp3a9JlaC6teLxc6IU39omygl8=;
	b=EHYosvMnKtbl7NPjqLvr2n1chfart6A8z929UfdM/TQF/IIYpHmEBBQanRodtjFA8xRW6j
	fRWkwFwAyOpoKuySILzcJ/6yz5aDPrl+1AlIaH/QZPgSumC/Zims/LKgzv2G6tLvFgiIsm
	H8RJIbakwFhkhfS1ZRPm+gclgbtGp/U=
X-MC-Unique: hljZtCeAP0ehqljjTetxPw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729018335; x=1729623135;
        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=nkAJx4kdHqc1uo2Ugvp3a9JlaC6teLxc6IU39omygl8=;
        b=rJXJX997FGtAHdXK2vVn02Ue3ygJoiso/1M9Wx8Bo2WpEfChBpQ12lvtpoQmaJSAgr
         4Zn/oX49J1wouexgvHIH+l3dK5iUfyCtfqdMKGeCx4MqZ49+SBfFI0xtjCGrfaJ0i4VQ
         kjVB4uVjikN+BaP9H5gbBqmZPtQGUwl8tCOQez2U2QKEuj0C/5r4/hnxxVJt00nK7kHk
         D7L/XgjV6dFe9K2UqvkofLv81uu+YD2S21uwjdhIIreoU0BvzQeg5P8RA1gCtYmoZPhg
         jkbnmvf1HfX1g2OeY5Fef6YUjCxNHLTfZwFNe42bBPkmJVh8lHHu+ysGlW9hTh8F3SsC
         BCdg==
X-Forwarded-Encrypted: i=1; AJvYcCWwu6XXlK4VQ7GsjmK6jMT/rOpOpH1HrXQ2heea2MKbvrF/wq35zu0GfJKNTfk8t2i2znLm1B4Bt0s=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx5gEwnIzQcPaP752GaAzusBoHfafPJqMMoN9LYwHAWGfyHXWOM
	dHSAZqcKapAqLRkFSUIq+o6hn+pGTWlNPl3T+BKNnSa5Aq40bU4YNHejqoG4dEbszyjrUcIc3Zc
	WqignhcuvdJPuFM/hgcw0riUgWRtB7yp+4FS+PF/t8sG/CgSCqy9xT9/rQR5Xk2e7
X-Received: by 2002:a17:907:3f9a:b0:a9a:597:8cca with SMTP id a640c23a62f3a-a9a05978db6mr977637366b.45.1729018335334;
        Tue, 15 Oct 2024 11:52:15 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHtzFRtQHPl8Fct9iuZuGo9S3vsShVLZO8po30QG967TcviSYGZFyEBgz7XqihkkBKNzop8BQ==
X-Received: by 2002:a17:907:3f9a:b0:a9a:597:8cca with SMTP id a640c23a62f3a-a9a05978db6mr977631966b.45.1729018334888;
        Tue, 15 Oct 2024 11:52:14 -0700 (PDT)
From: Philipp Stanner <pstanner@redhat.com>
To: Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>,
	Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>,
	Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Philipp Stanner <pstanner@redhat.com>,
	Ricky Wu <ricky_wu@realtek.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>,
	Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	=?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>,
	Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,
	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	linux-sound@vger.kernel.org,
	Basavaraj Natikar <Basavaraj.Natikar@amd.com>
Subject: [PATCH 11/13] HID: amd_sfh: Use always-managed version of pcim_intx()
Date: Tue, 15 Oct 2024 20:51:21 +0200
Message-ID: <20241015185124.64726-12-pstanner@redhat.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="US-ASCII"; x-default=true

pci_intx() is a hybrid function which can sometimes be managed through
devres. To remove this hybrid nature from pci_intx(), it is necessary to
port users to either an always-managed or a never-managed version.

All users of amd_mp2_pci_remove(), where pci_intx() is used, call
pcim_enable_device(), which is why the driver needs the always-managed
version.

Replace pci_intx() with pcim_intx().

Signed-off-by: Philipp Stanner <pstanner@redhat.com>
Acked-by: Basavaraj Natikar <Basavaraj.Natikar@amd.com>
---
 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        | 4 ++--
 drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
index 0c28ca349bcd..48cfd0c58241 100644
--- a/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
+++ b/drivers/hid/amd-sfh-hid/amd_sfh_pcie.c
@@ -122,7 +122,7 @@ int amd_sfh_irq_init_v2(struct amd_mp2_dev *privdata)
 {
 	int rc;
 
-	pci_intx(privdata->pdev, true);
+	pcim_intx(privdata->pdev, true);
 
 	rc = devm_request_irq(&privdata->pdev->dev, privdata->pdev->irq,
 			      amd_sfh_irq_handler, 0, DRIVER_NAME, privdata);
@@ -248,7 +248,7 @@ static void amd_mp2_pci_remove(void *privdata)
 	struct amd_mp2_dev *mp2 = privdata;
 	amd_sfh_hid_client_deinit(privdata);
 	mp2->mp2_ops->stop_all(mp2);
-	pci_intx(mp2->pdev, false);
+	pcim_intx(mp2->pdev, false);
 	amd_sfh_clear_intr(mp2);
 }
 
diff --git a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
index db36d87d5634..ec9feb8e023b 100644
--- a/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
+++ b/drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c
@@ -289,7 +289,7 @@ static void amd_mp2_pci_remove(void *privdata)
 	sfh_deinit_emp2();
 	amd_sfh_hid_client_deinit(privdata);
 	mp2->mp2_ops->stop_all(mp2);
-	pci_intx(mp2->pdev, false);
+	pcim_intx(mp2->pdev, false);
 	amd_sfh_clear_intr(mp2);
 }
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 19:04:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 19:04:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819425.1232753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0mq1-0007ER-Q2; Tue, 15 Oct 2024 19:04:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819425.1232753; Tue, 15 Oct 2024 19: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 1t0mq1-0007EK-MX; Tue, 15 Oct 2024 19:04:09 +0000
Received: by outflank-mailman (input) for mailman id 819425;
 Tue, 15 Oct 2024 19:04: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 1t0mq0-0007EA-Bq; Tue, 15 Oct 2024 19:04: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 1t0mq0-00085j-3h; Tue, 15 Oct 2024 19:04: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 1t0mpz-0006g8-MY; Tue, 15 Oct 2024 19:04:07 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0mpz-0006T9-Lv; Tue, 15 Oct 2024 19:04: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=T2Zmp4QJatkJfamci2ruEsJLyxnAX9uT36btvPlc+H0=; b=TBluwCePYArjBnesx3INaZRU+a
	yvhkUEZBkwa7q3E/VhcAVkwHh/kHD641GUDHpMNaCydcsJVi/YGN+C+fM+kTll5tEjP7779qf7n8N
	MSi/oRIM2nrEP/eWOQ5Bbh/iwkHoPhH2CKO78iN6EV4qGbsCunrDHSNgYimQXL1IA5TA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188089-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188089: tolerable FAIL - PUSHED
X-Osstest-Failures:
    libvirt:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    libvirt:test-armhf-armhf-libvirt: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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=e2c6f4c80016719b081fc26a30613b54cda56443
X-Osstest-Versions-That:
    libvirt=50cc7a0d9d2b9df085ec073a6d60820a9642158a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 19:04:07 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check    fail pass in 188096-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188063
 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-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-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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              e2c6f4c80016719b081fc26a30613b54cda56443
baseline version:
 libvirt              50cc7a0d9d2b9df085ec073a6d60820a9642158a

Last test of basis   188063  2024-10-12 04:20:27 Z    3 days
Testing same since   188089  2024-10-15 04:18:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andi Chandler <andi@gowling.com>
  Göran Uddeborg <goeran@uddeborg.se>
  Jiri Denemark <jdenemar@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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 fail    
 test-armhf-armhf-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
   50cc7a0d9d..e2c6f4c800  e2c6f4c80016719b081fc26a30613b54cda56443 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 19:54:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 19:54:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819440.1232762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0nc5-0000S8-9N; Tue, 15 Oct 2024 19:53:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819440.1232762; Tue, 15 Oct 2024 19:53: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 1t0nc5-0000S1-6Q; Tue, 15 Oct 2024 19:53:49 +0000
Received: by outflank-mailman (input) for mailman id 819440;
 Tue, 15 Oct 2024 19:53: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=NFtG=RL=redhat.com=alex.williamson@srs-se1.protection.inumbo.net>)
 id 1t0nc4-0000Rv-A9
 for xen-devel@lists.xenproject.org; Tue, 15 Oct 2024 19:53: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 2da3abad-8b2f-11ef-99a2-01e77a169b0f;
 Tue, 15 Oct 2024 21:53:42 +0200 (CEST)
Received: from mail-io1-f71.google.com (mail-io1-f71.google.com
 [209.85.166.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-346-0b376iYUM3W-uskGzZ3WzA-1; Tue, 15 Oct 2024 15:53:40 -0400
Received: by mail-io1-f71.google.com with SMTP id
 ca18e2360f4ac-8354a67eb57so56549139f.2
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 12:53:40 -0700 (PDT)
Received: from redhat.com ([38.15.36.11]) by smtp.gmail.com with ESMTPSA id
 8926c6da1cb9f-4dbec9b24b5sm462948173.59.2024.10.15.12.53.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 12:53:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2da3abad-8b2f-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729022021;
	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=iDdlfoCJodlBAEHv18hly2baxUxV3CY1ROqq62ZwNfA=;
	b=GW5kbgnroZdypZ0pri7f9IK/W/kIDeKtNVySbDcPp6EDis7zRB6U7TwcovpS1hjJHSBhx4
	DrRJuB3jWOEnhigNPJMq+ISDVH/+4Ys/o3vwInG9p3jQQU0hoqvCQaGF4DfLZIqpUcJzsR
	cNTygXR/ZlZ9LJOL56rpiwq9BEpuEqo=
X-MC-Unique: 0b376iYUM3W-uskGzZ3WzA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729022020; x=1729626820;
        h=content-transfer-encoding:mime-version:organization: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=iDdlfoCJodlBAEHv18hly2baxUxV3CY1ROqq62ZwNfA=;
        b=An8Jt/U/+0Xn9uT09zNIaeHPs/+Ca4MxGSfF/jZ0S4fUmbvnhhIZi2Yp5G2HjDyX1X
         VeJ9ZDyHeqXes/uBc+9wweEAkreLgbSbygsKz4+i2gVsdAREIKmLaXMs3bv0HBXpifJY
         DrRAD3J8ema8HJg7fCF0iOvDzIHmWV69U6X08VBJPKFHkfJKHdFMcDsOlzFKW7rTGDRY
         QlfVwh059PkV92Q+OE7MFEykWf5vPp/nZCmksqqH4o8cmlDFKAn+Q/hXgMwfYyKF4/Z3
         xgaCLWsC27/UhEldYnEmXNAf0wFd0ZiANcmGgKTv4uj3zI4rCC9OqbJ3ZNUqixncDP2G
         Bi0g==
X-Forwarded-Encrypted: i=1; AJvYcCVQG3fR+mDdT0Gi4gXEyFdbOwLb1WOweVstf2D7Yhz2essxgqYrVy10Q/3FjVkYKM4hgQEOAEBJz4M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzZbw9/X2EbC/urwFd8twdjsnpVKvhfKVf1I3oLvx0GDUzHgt3H
	tF/kfblNvvfxpLI6im/GZkuGwvGGa/UVD4Pa/JqMt8IxXpe9QWUyhOAmLWyY5Fnug35KCRH6FzA
	gkdcBqKkYiDHaYrayRBUHfjAWrObDo94Iuh6ZfNbj2yTydusx3HScV0N2Z6mHP4qQ
X-Received: by 2002:a05:6e02:20e6:b0:3a2:57d2:3489 with SMTP id e9e14a558f8ab-3a3de12de3emr696205ab.3.1729022019793;
        Tue, 15 Oct 2024 12:53:39 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IESXVYWbDvg1wxgtSYFRG8WjdQ6j0NF7QGGfISEgWPkRfl6g2CRlLVPppWhf9Avs6HBI8mwDw==
X-Received: by 2002:a05:6e02:20e6:b0:3a2:57d2:3489 with SMTP id e9e14a558f8ab-3a3de12de3emr696075ab.3.1729022019438;
        Tue, 15 Oct 2024 12:53:39 -0700 (PDT)
Date: Tue, 15 Oct 2024 13:53:36 -0600
From: Alex Williamson <alex.williamson@redhat.com>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>, Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>, Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?UTF-8?B?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>, Andy Shevchenko
 <andriy.shevchenko@linux.intel.com>, Mostafa Saleh <smostafa@google.com>,
 Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>, Christian
 Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>, Eric Auger
 <eric.auger@redhat.com>, Reinette Chatre <reinette.chatre@intel.com>, Ye
 Bin <yebin10@huawei.com>, Marek =?UTF-8?B?TWFyY3p5a293c2tpLUfDs3JlY2tp?=
 <marmarek@invisiblethingslab.com>, Pierre-Louis Bossart
 <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
Message-ID: <20241015135336.0de9795e.alex.williamson@redhat.com>
In-Reply-To: <20241015185124.64726-14-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
	<20241015185124.64726-14-pstanner@redhat.com>
Organization: Red Hat
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

On Tue, 15 Oct 2024 20:51:23 +0200
Philipp Stanner <pstanner@redhat.com> wrote:

> pci_intx() and its managed counterpart pcim_intx() only exist for older
> drivers which have not been ported yet for various reasons. Future
> drivers should preferably use pci_alloc_irq_vectors().
> 
> Mark pci_intx() and pcim_intx() as deprecated and encourage usage of
> pci_alloc_irq_vectors() in its place.

I don't really understand this.  As we've discussed previously
pci_alloc_irq_vectors() is, unsurprisingly, for allocating PCI IRQ
vectors while pci_intx() is for manipulating the INTx disable bit on
PCI devices.  The latter is a generic mechanism for preventing PCI
devices from generating INTx, regardless of whether there's a vector
allocated for it.  How does the former replace the latter and why do we
feel the need to deprecate the latter?

It feels like this fits some narrow narrative and makes all users of
these now deprecated functions second class citizens.  Why?  At it's
root these are simply providing mask and set or mask and clear register
bit operations.  Thanks,

Alex
 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> ---
>  drivers/pci/devres.c | 5 ++++-
>  drivers/pci/pci.c    | 5 ++++-
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
> index 6f8f712fe34e..4c76fc063104 100644
> --- a/drivers/pci/devres.c
> +++ b/drivers/pci/devres.c
> @@ -435,7 +435,7 @@ static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
>  }
>  
>  /**
> - * pcim_intx - managed pci_intx()
> + * pcim_intx - managed pci_intx() (DEPRECATED)
>   * @pdev: the PCI device to operate on
>   * @enable: boolean: whether to enable or disable PCI INTx
>   *
> @@ -443,6 +443,9 @@ static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
>   *
>   * Enable/disable PCI INTx for device @pdev.
>   * Restore the original state on driver detach.
> + *
> + * This function is DEPRECATED. Do not use it in new code.
> + * Use pci_alloc_irq_vectors() instead (there is no managed version, currently).
>   */
>  int pcim_intx(struct pci_dev *pdev, int enable)
>  {
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 7ce1d0e3a1d5..dc69e23b8982 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -4477,11 +4477,14 @@ void pci_disable_parity(struct pci_dev *dev)
>  }
>  
>  /**
> - * pci_intx - enables/disables PCI INTx for device dev
> + * pci_intx - enables/disables PCI INTx for device dev (DEPRECATED)
>   * @pdev: the PCI device to operate on
>   * @enable: boolean: whether to enable or disable PCI INTx
>   *
>   * Enables/disables PCI INTx for device @pdev
> + *
> + * This function is DEPRECATED. Do not use it in new code.
> + * Use pci_alloc_irq_vectors() instead.
>   */
>  void pci_intx(struct pci_dev *pdev, int enable)
>  {



From xen-devel-bounces@lists.xenproject.org Tue Oct 15 21:53:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 21:53:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819452.1232772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0pTb-0007i4-3g; Tue, 15 Oct 2024 21:53:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819452.1232772; Tue, 15 Oct 2024 21:53: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 1t0pTb-0007hx-0m; Tue, 15 Oct 2024 21:53:11 +0000
Received: by outflank-mailman (input) for mailman id 819452;
 Tue, 15 Oct 2024 21:53: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 1t0pTZ-0007hm-EJ; Tue, 15 Oct 2024 21:53: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 1t0pTZ-0002fA-9N; Tue, 15 Oct 2024 21:53: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 1t0pTY-0000tv-UJ; Tue, 15 Oct 2024 21:53:09 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0pTY-0006P6-Tv; Tue, 15 Oct 2024 21:53: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=tcpS8MEwoGnphLhfStfrNnKktWzNBFJ9VhqMqiBbwME=; b=xvZa9icjfcpfCy1lNFgXoN7d3z
	SBKnMhDCvvBVGsRE0TDd40K0rVGweFjR2ZuSrRYaN9Qokl/FcFKvEBwpfPdgNjKQkWf2oEDdyqKje
	nrwJJ8MzvNzBZ34DNfQsT0YnB18f2DXp4X1RJdlLwx3shnnxf8WyJe/Rw2QpoAvA/lAE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188097-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188097: 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=47990ecef286606794d607d4ca8703d71c98d659
X-Osstest-Versions-That:
    xen=3f6ee3db2e878398cfcde725399b4d1b04e92269
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 21:53:08 +0000

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

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                  47990ecef286606794d607d4ca8703d71c98d659
baseline version:
 xen                  3f6ee3db2e878398cfcde725399b4d1b04e92269

Last test of basis   188094  2024-10-15 13:00:23 Z    0 days
Testing same since   188097  2024-10-15 18:00:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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
   3f6ee3db2e..47990ecef2  47990ecef286606794d607d4ca8703d71c98d659 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Oct 15 23:40:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 15 Oct 2024 23:40:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819465.1232782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0r91-0002AZ-HJ; Tue, 15 Oct 2024 23:40:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819465.1232782; Tue, 15 Oct 2024 23:40: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 1t0r91-0002AS-EE; Tue, 15 Oct 2024 23:40:03 +0000
Received: by outflank-mailman (input) for mailman id 819465;
 Tue, 15 Oct 2024 23:40: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 1t0r90-00021u-Rk; Tue, 15 Oct 2024 23:40: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 1t0r90-0004Ww-Gq; Tue, 15 Oct 2024 23:40: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 1t0r8z-0004Ma-TB; Tue, 15 Oct 2024 23:40:02 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0r8z-0004Ov-Sl; Tue, 15 Oct 2024 23:40: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=/evS7AxwtKhZ4xkfudCu7yFZyOFfOmj+ZIDPRT02TLQ=; b=jE+fwskt26TiZL8UgKAHEr1Lv7
	MvkkLVHMABiIuLIcXiyHNjm1xOHXJgGk1XX+fPTog84a1uw96QAET+9GcqfF3HTEevhsN2Wnn6HSR
	p+tS6jPoE+fm+MplID0Xbe1FLELTpq4YK5/TG/BIHyp/5qxcYYGuUAYXYvH3PUxJtPuk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188093-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188093: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:debian-hvm-install:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:build-armhf:xen-build:fail:regression
    qemu-mainline:build-armhf-libvirt:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:build-check(1):blocked:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:build-check(1):blocked:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=c155d13167c6ace099e351e28125f9eb3694ae27
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 15 Oct 2024 23:40:01 +0000

flight 188093 qemu-mainline real [real]
http://logs.test-lab.xenproject.org/osstest/logs/188093/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720
 build-armhf                   6 xen-build                fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 build-armhf-libvirt           1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt-vhd  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-arndale   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit1   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit2   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-multivcpu  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-qcow2     1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-raw       1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-rtds      1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-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-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-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-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                c155d13167c6ace099e351e28125f9eb3694ae27
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   29 days
Failing since        187731  2024-09-17 13:11:20 Z   28 days   48 attempts
Testing same since   188093  2024-10-15 12:45:56 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Helge Deller <deller@gmx.de>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Junjie Mao <junjie.mao@intel.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Roman Penyaev <r.peniaev@gmail.com>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  fail    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          blocked 
 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                                          blocked 
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  blocked 
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  blocked 
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  blocked 
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        fail    
 test-amd64-amd64-qemuu-nested-intel                          fail    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     blocked 
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                blocked 
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    blocked 
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-raw                                      blocked 
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 blocked 
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 10713 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 00:38:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 00:38:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819481.1232796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0s3P-0000ko-4y; Wed, 16 Oct 2024 00:38:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819481.1232796; Wed, 16 Oct 2024 00:38: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 1t0s3P-0000kh-2G; Wed, 16 Oct 2024 00:38:19 +0000
Received: by outflank-mailman (input) for mailman id 819481;
 Wed, 16 Oct 2024 00:38: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 1t0s3N-0000kX-Gw; Wed, 16 Oct 2024 00:38: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 1t0s3N-00065l-CZ; Wed, 16 Oct 2024 00:38: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 1t0s3N-0005xq-4Q; Wed, 16 Oct 2024 00:38:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0s3N-0008MP-3u; Wed, 16 Oct 2024 00:38: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=uej81kWinqZauTTU/TJI70HVGUD6cAKg6HLSWgYPzGE=; b=EPyczT0aD1eJ87Fy2xVyR1URo8
	u2XG7DqUk/RC513ooGEMDCw6JLZyNqwcObOLUw9LKQejutY/5o8RxBf94H8wPKVMEoJca2Tmu2/HZ
	+V4kGbKFiXVk+yhrhAmH9BjanGl+GUCiScwG6M010iSK5kMoSJdIzzhJYszKEnU730jw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188099-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188099: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=b3efbda1660372f3973c29cde0e92528862c4171
X-Osstest-Versions-That:
    ovmf=081cf576a226e70ce4134dda19baf977d0b8bc64
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 00:38:17 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 b3efbda1660372f3973c29cde0e92528862c4171
baseline version:
 ovmf                 081cf576a226e70ce4134dda19baf977d0b8bc64

Last test of basis   188091  2024-10-15 07:43:27 Z    0 days
Testing same since   188099  2024-10-15 22:43:19 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Leandro Becker <lbecker@positivo.com.br>
  Leandro Gustavo Biss Becker <lbecker@positivo.com.br>

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    


------------------------------------------------------------
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
   081cf576a2..b3efbda166  b3efbda1660372f3973c29cde0e92528862c4171 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 02:44:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 02:44:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819495.1232818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0u0g-0005nw-RS; Wed, 16 Oct 2024 02:43:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819495.1232818; Wed, 16 Oct 2024 02:43: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 1t0u0g-0005np-OD; Wed, 16 Oct 2024 02:43:38 +0000
Received: by outflank-mailman (input) for mailman id 819495;
 Wed, 16 Oct 2024 02:43: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 1t0u0f-0005nf-Ds; Wed, 16 Oct 2024 02:43: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 1t0u0f-0007ZT-BT; Wed, 16 Oct 2024 02:43: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 1t0u0f-0002ps-4O; Wed, 16 Oct 2024 02:43:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0u0f-00071k-42; Wed, 16 Oct 2024 02:43: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=7vn388fbocRo8GB6AjVaKYpwAakLMQeKnPP1GGxRbvE=; b=nx18C1duEf6espU7MeGbDYXmAO
	/PNLk4/I1ol0ZbjKsDOqbazrcZrSXZYZSvRUGgJDQuktRba2FEfRdlyILcqUJQzCaMZqnMJtqiBNA
	xRdw38cAzyH3SHWRam3qoZG8xds4GCKnmehOdwgdbQOrrN5U3J8yu2sE0/TtYoWK7WJE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188102-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188102: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=92c1274467fff3209d3bd29c2ed994b7f2be3efe
X-Osstest-Versions-That:
    ovmf=b3efbda1660372f3973c29cde0e92528862c4171
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 02:43:37 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 92c1274467fff3209d3bd29c2ed994b7f2be3efe
baseline version:
 ovmf                 b3efbda1660372f3973c29cde0e92528862c4171

Last test of basis   188099  2024-10-15 22:43:19 Z    0 days
Testing same since   188102  2024-10-16 00:43:29 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  INDIA\sachinganesh <sachinganesh@ami.com>
  Sachin Ganesh <sachinganesh@ami.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    


------------------------------------------------------------
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
   b3efbda166..92c1274467  92c1274467fff3209d3bd29c2ed994b7f2be3efe -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 05:29:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 05:29:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819509.1232840 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0waq-0006cD-UZ; Wed, 16 Oct 2024 05:29:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819509.1232840; Wed, 16 Oct 2024 05: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 1t0waq-0006c6-Qq; Wed, 16 Oct 2024 05:29:08 +0000
Received: by outflank-mailman (input) for mailman id 819509;
 Wed, 16 Oct 2024 05:29: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 1t0wao-0006bw-Vb; Wed, 16 Oct 2024 05:29: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 1t0wao-0002LW-Nq; Wed, 16 Oct 2024 05:29: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 1t0wao-00008G-AF; Wed, 16 Oct 2024 05:29:06 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0wao-00046O-9l; Wed, 16 Oct 2024 05:29: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=RfXNCsTd3Ck7ByIaJVDbkullKN5uQZjcqZ+EOovRjRY=; b=huiG1CZt2+YfM3jBBWb1dEGKM6
	89OTrhOsBpkXHDvh3DsnevmOfNIXbTukm9LQYo+EkQ7QpxdN9lXi+1v/pXSDJtEFGlgDPh1OKK4ct
	c3hN1ZPoNHnzwT4BDxE4lQF4cMQX0XwLWYv5TDTxCnTM5SZXiDugCk2zBpjfcIRT0bh4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188095-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188095: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check: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-amd64-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-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-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-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx: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-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-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2:migrate-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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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-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
X-Osstest-Versions-This:
    xen=3f6ee3db2e878398cfcde725399b4d1b04e92269
X-Osstest-Versions-That:
    xen=542ac112fc68c66cfafc577e252404c21da4f75b
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 05:29:06 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check    fail pass in 188106-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188088
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188088
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188088
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188088
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188088
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188088
 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-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-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-armhf-armhf-libvirt     15 migrate-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-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-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-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

version targeted for testing:
 xen                  3f6ee3db2e878398cfcde725399b4d1b04e92269
baseline version:
 xen                  542ac112fc68c66cfafc577e252404c21da4f75b

Last test of basis   188088  2024-10-15 02:39:48 Z    1 days
Testing same since   188095  2024-10-15 16:39:00 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Federico Serafini <federico.serafini@bugseng.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  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>

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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   542ac112fc..3f6ee3db2e  3f6ee3db2e878398cfcde725399b4d1b04e92269 -> master


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 05:39:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 05:39:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819531.1232901 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0wlG-0000GK-Dh; Wed, 16 Oct 2024 05:39:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819531.1232901; Wed, 16 Oct 2024 05:39: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 1t0wlG-0000GD-Am; Wed, 16 Oct 2024 05:39:54 +0000
Received: by outflank-mailman (input) for mailman id 819531;
 Wed, 16 Oct 2024 05:39: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=I4x1=RM=linuxfoundation.org=gregkh@srs-se1.protection.inumbo.net>)
 id 1t0wlF-0000G7-RN
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 05:39:53 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0fd4335f-8b81-11ef-99a2-01e77a169b0f;
 Wed, 16 Oct 2024 07:39:51 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 4A912A438E5;
 Wed, 16 Oct 2024 05:39:40 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E9E85C4CEC5;
 Wed, 16 Oct 2024 05:39:47 +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: 0fd4335f-8b81-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
	s=korg; t=1729057188;
	bh=Bd5M4DzFMNGGadIfi1fklC0+ZqtBunY0WkA0awItZsk=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=UTPd17kqa+JStBo//drZQEXyhoDU5Ick9FOrbiK2kK6EtrjHt2psudKPkH6oC/JjU
	 UK7DuqgB1JR/yTVSIQJrmb20KHuDiQAI5hwh8cFhK/eWYqq9mtCIzMO4GOty2SoRF6
	 h+kDt3eL0NVejAHRkxFksFewisHYtyjgnG5HKBLU=
Date: Wed, 16 Oct 2024 07:39:41 +0200
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>, Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
Message-ID: <2024101652-valium-gizzard-cf14@gregkh>
References: <20241015185124.64726-1-pstanner@redhat.com>
 <20241015185124.64726-14-pstanner@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241015185124.64726-14-pstanner@redhat.com>

On Tue, Oct 15, 2024 at 08:51:23PM +0200, Philipp Stanner wrote:
> pci_intx() and its managed counterpart pcim_intx() only exist for older
> drivers which have not been ported yet for various reasons. Future
> drivers should preferably use pci_alloc_irq_vectors().
> 
> Mark pci_intx() and pcim_intx() as deprecated and encourage usage of
> pci_alloc_irq_vectors() in its place.

No one is going to notice these comments, so please, if this really does
need to be removed, just remove it from all callers and delete the
function from the tree.

thanks,

greg k-h


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 06:11:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 06:11:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819543.1232913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0xFV-00057r-SV; Wed, 16 Oct 2024 06:11:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819543.1232913; Wed, 16 Oct 2024 06: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 1t0xFV-00057k-Q0; Wed, 16 Oct 2024 06:11:09 +0000
Received: by outflank-mailman (input) for mailman id 819543;
 Wed, 16 Oct 2024 06:11: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 1t0xFU-00057a-QN; Wed, 16 Oct 2024 06:11: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 1t0xFU-000377-F6; Wed, 16 Oct 2024 06:11: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 1t0xFU-0001H2-2b; Wed, 16 Oct 2024 06:11:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t0xFU-0002ua-1h; Wed, 16 Oct 2024 06:11: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=8RRCdcfppSu/0uauEgFCSglIgdL+g0rA55eDQz7X6XU=; b=eUfOFU/yQVEzopfmBVIPGSPEs9
	l1na/RnxGiUwVWhmtvnO6xWMi+kmu96cAjC0CBTpVDJG7ZPDWX7y5Rq/6rE7bzzNurNEYsGBbS8fI
	L0VO3NOepZTWJ1Mt3UHlcL44xj16GIu7O8mzCdujx60C2nS+N+GNynpHdBrqTXGbGY7E=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188107-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188107: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=a232e0cd2fe2bb882a5dd0cafe322a2899a44d51
X-Osstest-Versions-That:
    ovmf=92c1274467fff3209d3bd29c2ed994b7f2be3efe
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 06:11:08 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 a232e0cd2fe2bb882a5dd0cafe322a2899a44d51
baseline version:
 ovmf                 92c1274467fff3209d3bd29c2ed994b7f2be3efe

Last test of basis   188102  2024-10-16 00:43:29 Z    0 days
Testing same since   188107  2024-10-16 04:13:13 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jiaxin Wu <jiaxin.wu@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    


------------------------------------------------------------
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
   92c1274467..a232e0cd2f  a232e0cd2fe2bb882a5dd0cafe322a2899a44d51 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 06:29:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 06:29:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819552.1232924 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0xWh-0006nT-30; Wed, 16 Oct 2024 06:28:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819552.1232924; Wed, 16 Oct 2024 06: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 1t0xWg-0006nM-W4; Wed, 16 Oct 2024 06:28:54 +0000
Received: by outflank-mailman (input) for mailman id 819552;
 Wed, 16 Oct 2024 06:28: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=ctGc=RM=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1t0xWf-0006nG-LQ
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 06:28:53 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20610.outbound.protection.outlook.com
 [2a01:111:f403:2414::610])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e8194e4d-8b87-11ef-99a2-01e77a169b0f;
 Wed, 16 Oct 2024 08:28:51 +0200 (CEST)
Received: from SJ0PR03CA0090.namprd03.prod.outlook.com (2603:10b6:a03:331::35)
 by PH0PR12MB8797.namprd12.prod.outlook.com (2603:10b6:510:28d::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.19; Wed, 16 Oct
 2024 06:28:43 +0000
Received: from SJ5PEPF00000207.namprd05.prod.outlook.com
 (2603:10b6:a03:331:cafe::68) by SJ0PR03CA0090.outlook.office365.com
 (2603:10b6:a03:331::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18 via Frontend
 Transport; Wed, 16 Oct 2024 06:28:43 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF00000207.mail.protection.outlook.com (10.167.244.40) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Wed, 16 Oct 2024 06:28:43 +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.39; Wed, 16 Oct
 2024 01:28:40 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8194e4d-8b87-11ef-99a2-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qO7E1qqV6uQ0YAsF7C5wMyvq7qyhuN7qBOL0mYExYZPSV4ZdCOT05yXiI0MgmhHwVcITACChkUeYA/kJKuM0bPHS8uOT4GFqh9q55oqM0kk/x6bKGy58ldsSyZp/yWzp2cJKz51C7vLh/gFnvUu67s1plDOsW4R7+2LftafJCqOu4A90xb5Yk9C/xeM4OWRAG8eAPwRDKTm+6TDv7QS/HHBzKA7JQCTdYhZaz28pA+N8HeoUc8SLuosZCi0gMXerrDheBu2FvYUMSDoYw31+K/B7VAFVRSxPiBW0L5csHyh69Ygw7XwlrFTlULaOwXsa9pI2NnI23xv5qyxevAktYw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=+Qa+/Vrr5vYV8N9Hqm6E9aPfl5zi0iD1R8OkMk0hb40=;
 b=ofaIzaWoXsprLXAqBAIFrVie0Evko9XiuASyuxwzsHB9wH51A7rGXrs7dqAiXvgeABo/QjXqrYZ3pYinW56UE0CVv2k5ktUtlcgDdvBlIxzTB4j1LwXfea7QkrDSfewpUr3SLaO7eI1pvW1Y4paEUi2YzNyN2LHHpaAMjTSe5HPleEynUkRy8ycqN6Z/d196+Pns1cnngfAk0ytfnewA8I0Im9U8ig9RJ2Dbcadt6YcMI+9mrOpTOzS7jb8Gudz5fMVOmwJRFUpsZl7v9FC//9ZTHHCZvw4Wg3aYLY4c+Ywd2q4UIDfXtZjQC+xqLUR4BapbHH7sITPB2qnHyq+zYg==
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=+Qa+/Vrr5vYV8N9Hqm6E9aPfl5zi0iD1R8OkMk0hb40=;
 b=XG1Ly6/2nCr09Ej5oKJcsJG3d6P2J3vq/udR0dCJL7+zYK2jl60NQ1KY89Gxq3j1dTSn77ootzmTBcLPZhYwsDfCDL23f5pt8P+lzFbYRnM+fM4Ay7ZO5Ipkc+anfjPqBB0A0g8QP45RkHKp/MnF5w6gVHeOCrOpaHRG57g7QJI=
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: Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony@xenproject.org>, Paul Durrant <paul@xen.org>, "Edgar E . Iglesias"
	<edgar.iglesias@gmail.com>
CC: <qemu-devel@nongnu.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: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0 is PVH
Date: Wed, 16 Oct 2024 14:28:27 +0800
Message-ID: <20241016062827.2301004-1-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
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: SJ5PEPF00000207:EE_|PH0PR12MB8797:EE_
X-MS-Office365-Filtering-Correlation-Id: 9348a513-3acd-4696-da8e-08dcedabc815
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?PE3p22gpaIpl7KxYAt6w7HoXWIp/AsCVFvkKFmHG4bXdjeQ6OMSi4ze2G0wJ?=
 =?us-ascii?Q?zCg/BNz9KrG2CIXLFWunrCo9EQza9dI/am5ctwk88WbJ/Y5kyzQpPJUNhhUB?=
 =?us-ascii?Q?eiPkoP31zW02CosRHdApmri3aS1vd/dBhH3EuEuq5SC1P8njaQiKl9rSFfXC?=
 =?us-ascii?Q?grWIo1bAzo1nYxx9ZtIPY0+uzc07jZhGzbaEQoazkUWSFY3oE1FxLc4RxLay?=
 =?us-ascii?Q?d488+JFfG4hEO098a6ccmCrGI0HacnRW7tUtLX2AI87gf0ciRM5UA+EeY+Kq?=
 =?us-ascii?Q?O6ggfG9xW+4pz61pnBHZ/08zzOVu3LEJq7qHc030e0qXaiRsieSOnHRXCOiO?=
 =?us-ascii?Q?4OztvwaaSXH7nk1E/rR/MrhKaxOtHanmNBZomAg+a4LWVVKWtxjxSZ6ONpaE?=
 =?us-ascii?Q?t5EgKhCYp2pIkUeXlYRXAUNBidBPa4DEAQPuX7FGooJz5OqfvO464ttbD6c4?=
 =?us-ascii?Q?Y23Kl9TGhuMLqAEHG7djb9YJc/USeADslyb9zK+OlPKnQh+yQIlObM/F4DPy?=
 =?us-ascii?Q?Pbw698+zzwToeyjaXHYnm0GqmBtrwxtiWLlPiaHnfSv3vl7rucz1R2cZ/5Ed?=
 =?us-ascii?Q?d+OAKovRhnFncvg0li5y/5ivkz0XT2zN5k4VUdjofo4MIEoU/Ly77JCfwQgD?=
 =?us-ascii?Q?0YKDXEz5HW5izgIYkD0rWJ3JNU8c3BNOp8xpqqKnubJQOx+YfuQoL/LBlNei?=
 =?us-ascii?Q?5roahadnt5Cdt7VyB3Ywd9U2gQZzFDNlv9p21mAn+D3F1xoxfE2e5KTpGWJE?=
 =?us-ascii?Q?uYjMKX4qv2pKubqX8jwtu0Pzd7BcCfSCLa9Ds3bZkefUnobmSkpoXocRSk0c?=
 =?us-ascii?Q?pYRQ0A5mVbLLaNNTU3lL+WK8MEGYoWOdtkqtgqswHmCuALWNBpC9tn6hpM6m?=
 =?us-ascii?Q?9oJDOflE9yMLpsKgk/les6FY67wnH8OC4HHTCSJ/gy4doruAhYTg3XXhtaFY?=
 =?us-ascii?Q?0A/SFVLNWBXyTp8YNrWZhgt4NrzNZgwNcB0m4TeSEABp4EnGFnf8LTngauix?=
 =?us-ascii?Q?0iC+dRbsYAz2Nsj1syL9ZbiHUSNjlxazuTCiaVL3z+E9QcEehQlJi/Ctjq/G?=
 =?us-ascii?Q?xFt0EH5DxbCV3YZ9587bEf0+G1X3fq8ehYmHzS6SSmGBNekVvpSdH0bGmkbx?=
 =?us-ascii?Q?AFivVhdZJdhajFYAFGu3JCuRNnfoJdoHBGKsymoej5jrTUjFaM+7wuXmtQFN?=
 =?us-ascii?Q?xm1WwK/ZHKWib+OiTJUXjm7whx+PKsKHV5Ugg28MDNMHJcx+jEj3FKTRxvgK?=
 =?us-ascii?Q?rzdhla4iMLaBXYrxqLTzcVjYijYcemT/aA7onBZwDChiiBp9ZGd/R2igp9Ex?=
 =?us-ascii?Q?7ym7FZi/p7u63iRmTEaT7YEjYhbU4eZamgro81FRSF3VSMsZnCtA3QuOE2GX?=
 =?us-ascii?Q?4LQxXRd8jJASkqs1ONk1dHJ5pnKJ?=
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:(13230040)(1800799024)(36860700013)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2024 06:28:43.0427
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9348a513-3acd-4696-da8e-08dcedabc815
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:
	SJ5PEPF00000207.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8797

In PVH dom0, when passthrough a device to domU, QEMU code
xen_pt_realize->xc_physdev_map_pirq wants to use gsi, but in current codes
the gsi number is got from file /sys/bus/pci/devices/<sbdf>/irq, that is
wrong, because irq is not equal with gsi, they are in different spaces, so
pirq mapping fails.

To solve above problem, use new interface of Xen, xc_pcidev_get_gsi to get
gsi and use xc_physdev_map_pirq_gsi to map pirq when dom0 is PVH.

Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
Signed-off-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
Hi All,
This is v8 to support passthrough on Xen when dom0 is PVH.
v7->v8 change:
* Since xc_physdev_gsi_from_dev was renamed to xc_pcidev_get_gsi, changed it.
* Added xen_run_qemu_on_hvm to check if Qemu run on PV dom0, if not use xc_physdev_map_pirq_gsi to map pirq.
* Used CONFIG_XEN_CTRL_INTERFACE_VERSION to wrap the new part for compatibility.
* Added "#define DOMID_RUN_QEMU 0" to represent the id of domain that Qemu run on.


Best regards,
Jiqian Chen



v6->v7 changes:
* Because the function of obtaining gsi was changed on the kernel and Xen side. Changed to use
  xc_physdev_gsi_from_dev, that requires passing in sbdf instead of irq.

v5->v6 changes:
* Because the function of obtaining gsi was changed on the kernel and Xen side. Changed to use
  xc_physdev_gsi_from_irq, instead of gsi sysfs.
* Since function changed, removed the Review-by of Stefano.

v4->v5 changes:
* Added Review-by Stefano.

v3->v4 changes:
* Added gsi into struct XenHostPCIDevice and used gsi number that read from gsi sysfs
  if it exists, if there is no gsi sysfs, still use irq.

v2->v3 changes:
* Due 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.

v1 and v2:
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.

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. They are in different space.
---
 hw/xen/xen_pt.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 hw/xen/xen_pt.h |  1 +
 2 files changed, 45 insertions(+)

diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 3635d1b39f79..7f8139d20915 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -766,6 +766,41 @@ static void xen_pt_destroy(PCIDevice *d) {
 }
 /* init */
 
+#define PCI_SBDF(seg, bus, dev, func) \
+            ((((uint32_t)(seg)) << 16) | \
+            (PCI_BUILD_BDF(bus, PCI_DEVFN(dev, func))))
+
+#if CONFIG_XEN_CTRL_INTERFACE_VERSION >= 42000
+static bool xen_run_qemu_on_hvm(void)
+{
+    xc_domaininfo_t info;
+
+    if (!xc_domain_getinfo_single(xen_xc, DOMID_RUN_QEMU, &info) &&
+        (info.flags & XEN_DOMINF_hvm_guest)) {
+        return true;
+    }
+
+    return false;
+}
+
+static int xen_map_pirq_for_gsi(PCIDevice *d, int *pirq)
+{
+    int gsi;
+    XenPCIPassthroughState *s = XEN_PT_DEVICE(d);
+
+    gsi = xc_pcidev_get_gsi(xen_xc,
+                            PCI_SBDF(s->real_device.domain,
+                                     s->real_device.bus,
+                                     s->real_device.dev,
+                                     s->real_device.func));
+    if (gsi >= 0) {
+        return xc_physdev_map_pirq_gsi(xen_xc, xen_domid, gsi, pirq);
+    }
+
+    return gsi;
+}
+#endif
+
 static void xen_pt_realize(PCIDevice *d, Error **errp)
 {
     ERRP_GUARD();
@@ -847,7 +882,16 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
         goto out;
     }
 
+#if CONFIG_XEN_CTRL_INTERFACE_VERSION >= 42000
+    if (xen_run_qemu_on_hvm()) {
+        rc = xen_map_pirq_for_gsi(d, &pirq);
+    } else {
+        rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq);
+    }
+#else
     rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq);
+#endif
+
     if (rc < 0) {
         XEN_PT_ERR(d, "Mapping machine irq %u to pirq %i failed, (err: %d)\n",
                    machine_irq, pirq, errno);
diff --git a/hw/xen/xen_pt.h b/hw/xen/xen_pt.h
index 095a0f0365d4..a08b45b7fbae 100644
--- a/hw/xen/xen_pt.h
+++ b/hw/xen/xen_pt.h
@@ -36,6 +36,7 @@ void xen_pt_log(const PCIDevice *d, const char *f, ...) G_GNUC_PRINTF(2, 3);
 #  define XEN_PT_LOG_CONFIG(d, addr, val, len)
 #endif
 
+#define DOMID_RUN_QEMU 0
 
 /* Helper */
 #define XEN_PFN(x) ((x) >> XC_PAGE_SHIFT)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 06:58:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 06:58:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819560.1232933 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0xz5-000285-Ae; Wed, 16 Oct 2024 06:58:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819560.1232933; Wed, 16 Oct 2024 06:58: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 1t0xz5-00027y-86; Wed, 16 Oct 2024 06:58:15 +0000
Received: by outflank-mailman (input) for mailman id 819560;
 Wed, 16 Oct 2024 06:58: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=k4YY=RM=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0xz3-00027s-Je
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 06:58:13 +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 018dce70-8b8c-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 08:58:12 +0200 (CEST)
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-497-QTbjnE6aPvW1H0F5b4SexQ-1; Wed, 16 Oct 2024 02:58:08 -0400
Received: by mail-qk1-f199.google.com with SMTP id
 af79cd13be357-7b111381632so1218010085a.3
 for <xen-devel@lists.xenproject.org>; Tue, 15 Oct 2024 23:58:08 -0700 (PDT)
Received: from dhcp-64-113.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7b136164dfbsm149785985a.21.2024.10.15.23.57.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 15 Oct 2024 23:58:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 018dce70-8b8c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729061890;
	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=nKJfP3LmeT/Qx7oKj5HM871IgPtYRSHVMsPL1c0DDh4=;
	b=SWPbKKIqFoYNjjorH0UKxHv0jCyI1GQkI45hBGuDys0NoTikS8kmva40Eh9tMiHnnvW24E
	tLabImLUtymRn7VXRahJDtg9yJlNp3rlNqpYkmn6VF4G1aRb8e9jhx32yCNblfR++3BoPR
	1a1Ag03LcaEb+SQZmvfgw5XOZ7ikqEU=
X-MC-Unique: QTbjnE6aPvW1H0F5b4SexQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729061887; x=1729666687;
        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=nKJfP3LmeT/Qx7oKj5HM871IgPtYRSHVMsPL1c0DDh4=;
        b=lzzbL3f5TwOn0g9Xd2DyK6/ZyHW/V+mImeduabuDM9AqOKPgkmsM/Hi7SjS0+yi3jB
         XMNiTsyHO9O1KXhOZM5qeKseWrkxH1Qin+kaMhc7NaLkoPEm4y3adzwoJ/0nHpp4Bf8+
         JQUX0XW1NREtA0YKOF/lrJdLSI8hTldAIf+cNcQJckptXWPEImZxZznQ0sgWIvHtl172
         l+nSJeQj8k28TVHoOZ/FVnisRLetQzPy2xWo9u+bOaOtH2DhBbHHX38pjd4fow5sJ8lh
         vNz1GZcxNyeVAW7OwTCL3MhdZ1rvqSTn7k/Wtj3oo+TRZ6knWvqkFOMVUmNej/wsSshM
         gjzQ==
X-Forwarded-Encrypted: i=1; AJvYcCU4N7WPSE/2+RnjuU/kFa5BXhkXxTsf2F3RQmFRKyILPzRbpSq3XEn9ZVUBOQ0fsMwS3OIawqHmup4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxM2Rwb5I5BPmuFZtwHU47/2VZbkZ/NI4vRQ/83014Qolzz+UCg
	50tp+hWhd3Lh328tQhJaW85yDfSf2tG6MJJxWDJwNQaAHTCs9H8cxaHWrLoCADU74eSmfk6GDCQ
	BpyfYKasYLXNLyysVFxOVLqkA8LXZHduH48QWsmP+Ym5LN1J56tKjLphwo1FqEs55
X-Received: by 2002:a05:620a:400d:b0:7a1:62ad:9d89 with SMTP id af79cd13be357-7b14186f1c8mr461444285a.64.1729061887540;
        Tue, 15 Oct 2024 23:58:07 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFcw8kz1/9R04Vwhhq2lqNVDk3gX6xFnXYOAV6a2cL/WNRAli0C59zaADhpNPO2+u1Q91URSw==
X-Received: by 2002:a05:620a:400d:b0:7a1:62ad:9d89 with SMTP id af79cd13be357-7b14186f1c8mr461441885a.64.1729061887092;
        Tue, 15 Oct 2024 23:58:07 -0700 (PDT)
Message-ID: <fc7244823a5665d3db40c94aea099a2973032a0b.camel@redhat.com>
Subject: Re: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Alex Williamson <alex.williamson@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,  Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>,  Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>,  Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>,  Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>,  Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu
 <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>, Ankit Agrawal
 <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>, Reinette Chatre
 <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Wed, 16 Oct 2024 08:57:58 +0200
In-Reply-To: <20241015135336.0de9795e.alex.williamson@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
	 <20241015185124.64726-14-pstanner@redhat.com>
	 <20241015135336.0de9795e.alex.williamson@redhat.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Tue, 2024-10-15 at 13:53 -0600, Alex Williamson wrote:
> On Tue, 15 Oct 2024 20:51:23 +0200
> Philipp Stanner <pstanner@redhat.com> wrote:
>=20
> > pci_intx() and its managed counterpart pcim_intx() only exist for
> > older
> > drivers which have not been ported yet for various reasons. Future
> > drivers should preferably use pci_alloc_irq_vectors().
> >=20
> > Mark pci_intx() and pcim_intx() as deprecated and encourage usage
> > of
> > pci_alloc_irq_vectors() in its place.
>=20
> I don't really understand this.=C2=A0 As we've discussed previously
> pci_alloc_irq_vectors() is, unsurprisingly, for allocating PCI IRQ
> vectors while pci_intx() is for manipulating the INTx disable bit on
> PCI devices.=C2=A0 The latter is a generic mechanism for preventing PCI
> devices from generating INTx, regardless of whether there's a vector
> allocated for it.=C2=A0 How does the former replace the latter and why do
> we
> feel the need to deprecate the latter?
>=20
> It feels like this fits some narrow narrative and makes all users of
> these now deprecated functions second class citizens.=C2=A0 Why?=C2=A0 At=
 it's
> root these are simply providing mask and set or mask and clear
> register
> bit operations.=C2=A0 Thanks,

I got the feeling from the RFC discussion that that was basically the
consensus: people should use pci_alloc_irq_vectors(). Or did I
misunderstand Andy and Heiner?

I'm perfectly happy with dropping this patch and continue offering
pci{m}_intx() to users, since after removing that hybrid hazzard I
don't see any harm in them anymore.


P.

>=20
> Alex
> =C2=A0
> > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > ---
> > =C2=A0drivers/pci/devres.c | 5 ++++-
> > =C2=A0drivers/pci/pci.c=C2=A0=C2=A0=C2=A0 | 5 ++++-
> > =C2=A02 files changed, 8 insertions(+), 2 deletions(-)
> >=20
> > diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
> > index 6f8f712fe34e..4c76fc063104 100644
> > --- a/drivers/pci/devres.c
> > +++ b/drivers/pci/devres.c
> > @@ -435,7 +435,7 @@ static struct pcim_intx_devres
> > *get_or_create_intx_devres(struct device *dev)
> > =C2=A0}
> > =C2=A0
> > =C2=A0/**
> > - * pcim_intx - managed pci_intx()
> > + * pcim_intx - managed pci_intx() (DEPRECATED)
> > =C2=A0 * @pdev: the PCI device to operate on
> > =C2=A0 * @enable: boolean: whether to enable or disable PCI INTx
> > =C2=A0 *
> > @@ -443,6 +443,9 @@ static struct pcim_intx_devres
> > *get_or_create_intx_devres(struct device *dev)
> > =C2=A0 *
> > =C2=A0 * Enable/disable PCI INTx for device @pdev.
> > =C2=A0 * Restore the original state on driver detach.
> > + *
> > + * This function is DEPRECATED. Do not use it in new code.
> > + * Use pci_alloc_irq_vectors() instead (there is no managed
> > version, currently).
> > =C2=A0 */
> > =C2=A0int pcim_intx(struct pci_dev *pdev, int enable)
> > =C2=A0{
> > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> > index 7ce1d0e3a1d5..dc69e23b8982 100644
> > --- a/drivers/pci/pci.c
> > +++ b/drivers/pci/pci.c
> > @@ -4477,11 +4477,14 @@ void pci_disable_parity(struct pci_dev
> > *dev)
> > =C2=A0}
> > =C2=A0
> > =C2=A0/**
> > - * pci_intx - enables/disables PCI INTx for device dev
> > + * pci_intx - enables/disables PCI INTx for device dev
> > (DEPRECATED)
> > =C2=A0 * @pdev: the PCI device to operate on
> > =C2=A0 * @enable: boolean: whether to enable or disable PCI INTx
> > =C2=A0 *
> > =C2=A0 * Enables/disables PCI INTx for device @pdev
> > + *
> > + * This function is DEPRECATED. Do not use it in new code.
> > + * Use pci_alloc_irq_vectors() instead.
> > =C2=A0 */
> > =C2=A0void pci_intx(struct pci_dev *pdev, int enable)
> > =C2=A0{
>=20



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 07:45:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 07:45:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819571.1232949 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0yj5-0008Hy-Gp; Wed, 16 Oct 2024 07:45:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819571.1232949; Wed, 16 Oct 2024 07:45: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 1t0yj5-0008Hr-EJ; Wed, 16 Oct 2024 07:45:47 +0000
Received: by outflank-mailman (input) for mailman id 819571;
 Wed, 16 Oct 2024 07:45: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0yj3-0008Hl-O9
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 07:45:45 +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 a630d1d0-8b92-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 09:45:44 +0200 (CEST)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-431286f50e1so46118275e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 00:45:44 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4314f1c3c5csm10004725e9.0.2024.10.16.00.45.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 00:45:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a630d1d0-8b92-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729064744; x=1729669544; 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=kaK+FwZ5ydb+9n/3CEWaD8IkBqtAO8NGdnnZgkThlTw=;
        b=BJ3BALUsK9m/02jZxRCvvT3NwrQ6O/MHXElnvhNYXU4fhopJ93GS0+k5Xu4dqrvpf9
         1hPH0IHidjbYTObLsAfCr9+jXEP0Ypz5psi6Df9N8SMZebblDw5c6U4bqFHQHvFlTWI8
         TCLkN7CwmY9ZvUY85uLyyMlZLOLdT6J5zLh4HgR5ndapU+YazTm06T8waAxieKelMBn+
         vwW+mhI75aMk5kiV1Dym8mTyRHnq5wL3waqanOEt5ChWjMiECQaKL+PCm8cHRuhnH6Cn
         OxAqAdg65vDkS6hU7h2xKqnmsR9biLBON5RL1iTBbElSLdMcIVQ2fWTwvOmjztnf3AA+
         wPCQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729064744; x=1729669544;
        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=kaK+FwZ5ydb+9n/3CEWaD8IkBqtAO8NGdnnZgkThlTw=;
        b=m1R+HvOaU1eINLIdnCd4PBXHTISKqEk2JKmvsb/3FQE01GB+YaJCcd4cfe36IBXeyY
         G34oE7UvB+5f2ZcGcBQflg8GMaHvvAtDsbAAiUepOf9LhDlKsxR7amg2FGZW4ZVNMRAS
         S3QwFEMv48zpf0CWQuOwktOXhHwajp2aJyjM/vQU9cZAXaOFj0ZEAVZz+iaVf7zklxYU
         YB8lY54Ih4DdA0OOTTtHteUVGoioB5rjrh7IUgdsp9zE7P/95xAuY4jAZIdkA2fD7byW
         BjKZZ41sqtJCIo9jQ1DUCL7CWM5mr7ch2PtlPF0VMoz8V73oi0QX1imMQwXETucEsBot
         Oa5g==
X-Gm-Message-State: AOJu0YzjOBifZT7mDibVwBZ8taNPObM3t5FDc6sfyojIpSMF4TwoZWOJ
	kuBs0GYb7mMP6HyP703u2LOWmJI2BtVft5MtdCRaGs/P625l2fu0XirTaF1N2SJa4puhuXIfPJ8
	=
X-Google-Smtp-Source: AGHT+IFMLQN/YXmN0Wq9Xlw64tNBbvpczcXhaqPuby7gYNChcog6NQbFoxqmJdYHzYZCEkg24DRZcA==
X-Received: by 2002:a05:600c:4fd3:b0:431:54f3:11ab with SMTP id 5b1f17b1804b1-43154f3151amr1323275e9.33.1729064743603;
        Wed, 16 Oct 2024 00:45:43 -0700 (PDT)
Message-ID: <ded15010-299a-4273-9414-106579677a5f@suse.com>
Date: Wed, 16 Oct 2024 09:45:42 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86emul/test: correct loop body indentation in
 evex-disp8.c:test_one()
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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

For some reason I entirely consistently screwed these up.

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

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -905,8 +905,8 @@ static void test_one(const struct test *
         goto fail;
 
     for ( i = 0; i < (test->scale == SC_vl ? vsz : esz); ++i )
-         if ( accessed[i] )
-             goto fail;
+        if ( accessed[i] )
+            goto fail;
 
     n = test->scale == SC_vl ? vsz : esz;
     if ( !sg )
@@ -917,13 +917,13 @@ static void test_one(const struct test *
         ++n;
 
     for ( ; i < n; ++i )
-         if ( accessed[i] != (sg ? (vsz / esz) >> (test->opc & 1 & !evex.w)
-                                 : 1) )
-             goto fail;
+        if ( accessed[i] != (sg ? (vsz / esz) >> (test->opc & 1 & !evex.w)
+                                : 1) )
+            goto fail;
 
     for ( ; i < ARRAY_SIZE(accessed); ++i )
-         if ( accessed[i] )
-             goto fail;
+        if ( accessed[i] )
+            goto fail;
 
     /* Also check the broadcast case, if available. */
     if ( test->vsz >= VSZ_el || test->scale != SC_vl )
@@ -954,14 +954,14 @@ static void test_one(const struct test *
         goto fail;
 
     for ( i = 0; i < esz; ++i )
-         if ( accessed[i] )
-             goto fail;
+        if ( accessed[i] )
+            goto fail;
     for ( ; i < esz * 2; ++i )
-         if ( accessed[i] != 1 )
-             goto fail;
+        if ( accessed[i] != 1 )
+            goto fail;
     for ( ; i < ARRAY_SIZE(accessed); ++i )
-         if ( accessed[i] )
-             goto fail;
+        if ( accessed[i] )
+            goto fail;
 
     return;
 


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 07:46:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 07:46:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819580.1232960 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0ykB-0000UN-VV; Wed, 16 Oct 2024 07:46:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819580.1232960; Wed, 16 Oct 2024 07:46: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 1t0ykB-0000UG-S7; Wed, 16 Oct 2024 07:46:55 +0000
Received: by outflank-mailman (input) for mailman id 819580;
 Wed, 16 Oct 2024 07:46: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t0ykA-0000GA-BE
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 07:46:54 +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 cf188a8d-8b92-11ef-99a2-01e77a169b0f;
 Wed, 16 Oct 2024 09:46:52 +0200 (CEST)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-431160cdbd0so3630145e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 00:46:52 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4314a829abbsm25322645e9.17.2024.10.16.00.46.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 00:46:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf188a8d-8b92-11ef-99a2-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729064812; x=1729669612; 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=S3nmJ+NcNu9hQuQyW0+LPP0IFM+slM6BFEyH7KGQkzQ=;
        b=TlPtK7fnvBbrL+8RnjqkN79qtu9raQK+Vk+Inf8SFjq6NaItVVzWsDXC8xR7Mjacfs
         OahbkF2gJOs6cFH0y5f2hBoxx1sAM9yU5KMDSlcWK+IOTj+Uj+9am3HL3HPYEngIhgCa
         1npqcbfiQG2tEpuspZvrOEcg++wWTlfO4v6vbA6tJ7PpRqOpf5PsQLfjlCwTlAH17tG6
         KlYUUeNgzBFzAMJsB1FFuRNVKZ/e7OQ1x7AWHDK48ZW4wEaZhzrObLx7uLGjfxmPRqH4
         oYk/Y5L/hKtZ8ArBZSleBjr0MKEvgDeS7Sh0HHoEX04pA3MdfRQfJbxmo3xhkT29ASJC
         Y9Mw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729064812; x=1729669612;
        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=S3nmJ+NcNu9hQuQyW0+LPP0IFM+slM6BFEyH7KGQkzQ=;
        b=Hb4iV9iqrfmzRo12D3p6Qo25gBn1HXagSq9vcrQOa5b385qFN8IU7rWpsPuu+qCKYf
         +UOcC3YCEExRwOJo63kLpGVbfxBJ4Qn9syRv1Wg92eEP/4ExuHwf1AGuFxkPTSk8R/fd
         KcSUFvIdb2S1DjDlPTiUULV4z7zTaBmIdA4TkTiDGj//SOQXlSt/awa9BeRALfN1j9ve
         tCba5tYUHGaovwiNT04nDMDOcmMD0qt79kdSFfW9nlZuAHDnzJfExFijjpj650ohb8dK
         72LstpdybT9jY9HKCL8Jv15s3i5dwMsM4e5uu3MjDrT2lp85PJEsA1O4sq2L7dodMirm
         ye7w==
X-Gm-Message-State: AOJu0YzxtOdv1zGyi24h2HRwZ8Tbb1qQoFppWoz8irEIF+i4IHpGUVvl
	TIYw6zmuJBeHYJXkKQSyhbTl2qSr71YP0zi84yRNWrRg7N7ME+8w/vh2hJ3VCqZ3nwWgo1wAe8k
	=
X-Google-Smtp-Source: AGHT+IGWxaQwMKonUM4oDt6/frG24bor0KnlTDoTEsB9vFJCgWmCTA/Y/YkLGAyHX4waSDKsIhXvdA==
X-Received: by 2002:a5d:5349:0:b0:379:5c8:33fa with SMTP id ffacd0b85a97d-37d8613ebc8mr2403813f8f.0.1729064812125;
        Wed, 16 Oct 2024 00:46:52 -0700 (PDT)
Message-ID: <a2dae57f-d166-4c99-8edd-11784abdecab@suse.com>
Date: Wed, 16 Oct 2024 09:46:51 +0200
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>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86emul/test: drop Xeon Phi S/G prefetch special case
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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

Another leftover from the dropping of Xeon Phi support.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Note: I'm deliberately not switching to use of the conditional operator,
as the form as is resulting now is what we'll want for APX (which is
where I noticed this small piece of dead logic).

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -911,10 +911,8 @@ static void test_one(const struct test *
     n = test->scale == SC_vl ? vsz : esz;
     if ( !sg )
         n += vsz;
-    else if ( !strstr(test->mnemonic, "pf") )
-        n += esz;
     else
-        ++n;
+        n += esz;
 
     for ( ; i < n; ++i )
          if ( accessed[i] != (sg ? (vsz / esz) >> (test->opc & 1 & !evex.w)


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 07:51:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 07:51:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819586.1232971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0yoA-00027Z-Gy; Wed, 16 Oct 2024 07:51:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819586.1232971; Wed, 16 Oct 2024 07: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 1t0yoA-00027S-Bs; Wed, 16 Oct 2024 07:51:02 +0000
Received: by outflank-mailman (input) for mailman id 819586;
 Wed, 16 Oct 2024 07: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=8GJ6=RM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t0yo9-00027M-8O
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 07:51:01 +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 625dd384-8b93-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 09:50:59 +0200 (CEST)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2fb5638dd57so26502911fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 00:50:59 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2fb5d13590csm3387601fa.61.2024.10.16.00.50.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 00:50:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 625dd384-8b93-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729065059; x=1729669859; 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=ZdCwZ/3jnCT4ThJpxk+8AY1ZT0xqsI3RnPbCPcCaE6c=;
        b=k05P+7LJP3+8pXyBVddAqHfqHA9Sgn7wC6pgtgUL3Vj3lFf/4qlZg9QJ5rCQOmROKi
         pVkWRbz3hz55caSUSBeAMuNNqxMbggfDGN14Mly8bir1pR3tI6VX1oDO6X2tURs6cmWl
         /+JAHuAlVToAWVdoABX/TeDbJ+S854+zANz7voxjwv4Hc8KLu3aPFvjli2rlo1IlDodv
         2peSZRnp+iHkMii0QXTkmkAYgLAdFqKqd+pzCdhVdiOJfvN/LprLmZR59COQtwAhOLsP
         4dJFGW1++nKDqw7bkDaGJpTP2rSgXUDUCHHdZonyQHqyyi4pDCc52Dj7haAgqNcQbOxN
         X4Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729065059; x=1729669859;
        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=ZdCwZ/3jnCT4ThJpxk+8AY1ZT0xqsI3RnPbCPcCaE6c=;
        b=U2/ZvHj3S0X7260Guu0cGJ8d5WNEzZAgFh+8JCZWPW5ppUIsV/bKkijyer4O6jBnyz
         i4echExFVr/r/+b31rGrfKoGbch9WV0xgWpzas52gR+rNyXQM6U+wTrw03CYL30h0n6r
         I9K3QZQ2zX1WxtMknBx7MG5V6L84WzprUO9OYRIpHZ3lTeblY4gQaNPqjJfkzXXtdJVH
         XNuyOSt125B3PKhwm4VOUKi+O17VjuRJYkRxR2Zx3K5nCEExacEZfRQ141kgty38f0jY
         D2OdQkWljBF0hN4Pf04hGe4JD5uNyuilNEUeF3HuzTmAQZXA/unB8NYy0jFIyssU28tW
         atHA==
X-Forwarded-Encrypted: i=1; AJvYcCXi44ZRmNlyHQLE4luHy/lL36oi1RPk1cBDUYTB3X2Gz34Xx4Kv1/lnquy5WdbJl72/yn7nGGJW1Fw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxPnzxdTMmoJt5oRVRBerAYdJcmVDLkPRSu88Xf+15W1dDtDK+l
	QsT0pLC09ajn5r4xlVrGWnKepfqE3iyFRjSCVb3a7uSXTFYYmX9S
X-Google-Smtp-Source: AGHT+IEl9sMTVjT1feGB/qAI1sptaWjyRNrI8nUwkrY/u4vClGzqlNNKMq69qUoXSMn1uO84jD7q5g==
X-Received: by 2002:a2e:6102:0:b0:2f7:4ccd:8918 with SMTP id 38308e7fff4ca-2fb61bd1513mr16305711fa.43.1729065058949;
        Wed, 16 Oct 2024 00:50:58 -0700 (PDT)
Message-ID: <56f7ee95390a36202dafe9e0ba64531549b4c4eb.camel@gmail.com>
Subject: Re: [PATCH v2 1/2] xen/riscv: initialize bootinfo from dtb
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 16 Oct 2024 09:50:57 +0200
In-Reply-To: <9ff389f6-874b-4bb1-8685-d1e0e2281c59@suse.com>
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
	 <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.git.oleksii.kurochko@gmail.com>
	 <7e3399d7-f41c-4696-919b-dc7f57168bf9@suse.com>
	 <fce8372ee3bac4a0a3c6de58d7c7757df6e6d0a3.camel@gmail.com>
	 <9ff389f6-874b-4bb1-8685-d1e0e2281c59@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-15 at 14:32 +0200, Jan Beulich wrote:
> On 15.10.2024 11:11, oleksii.kurochko@gmail.com=C2=A0wrote:
> > On Tue, 2024-10-15 at 08:33 +0200, Jan Beulich wrote:
> > > On 10.10.2024 17:30, Oleksii Kurochko wrote:
> > > > --- a/xen/arch/riscv/setup.c
> > > > +++ b/xen/arch/riscv/setup.c
> > > > @@ -50,6 +50,8 @@ void __init noreturn start_xen(unsigned long
> > > > bootcpu_id,
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 _end - _start, false) )
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 panic("Failed to a=
dd BOOTMOD_XEN\n");
> > > > =C2=A0
> > > > +=C2=A0=C2=A0=C2=A0 BUG_ON(!boot_fdt_info(device_tree_flattened, dt=
b_addr));
> > >=20
> > > We generally aim at avoiding side effects in BUG_ON() (or
> > > ASSERT()).
> > > With
> > >=20
> > > =C2=A0=C2=A0=C2=A0 if (!boot_fdt_info(device_tree_flattened, dtb_addr=
))
> > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 BUG();
> > >=20
> > > Acked-by: Jan Beulich <jbeulich@suse.com>
> > >=20
> > > I can make the adjustment while committing, if desired.
> > It would be great if these changes could be made during the commit.
>=20
> I've committed it with the adjustment,=C2=A0
Thanks!

> yet once again I wondered: Why not
> panic()?
It could be panic() here; there's no specific reason. I agree that
using BUG() here isn't logically correct, as technically, a size of
zero for the FDT isn't a bug but rather indicates that someone provided
an incorrect FDT to Xen.

I will use panic() in the future for such cases.

It=E2=80=99s not always clear what should be used and where. Perhaps it wou=
ld
be helpful to add some explanation somewhere.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819600.1232990 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSB-0000PS-QK; Wed, 16 Oct 2024 08:32:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819600.1232990; Wed, 16 Oct 2024 08:32: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 1t0zSB-0000PL-Le; Wed, 16 Oct 2024 08:32:23 +0000
Received: by outflank-mailman (input) for mailman id 819600;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSA-0000Nz-8m
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:22 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 28341bea-8b99-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:32:20 +0200 (CEST)
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 89261FEC;
 Wed, 16 Oct 2024 01:32:48 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9F35F3F71E;
 Wed, 16 Oct 2024 01:32:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 28341bea-8b99-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 01/10] xen/arm: ffa: Rework firmware discovery
Date: Wed, 16 Oct 2024 10:31:21 +0200
Message-ID: <457020b684e87ee9ad9488a4ec0d17ade90fdea1.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rework firmware discovery during probe:
- move prints into the probe
- rename ffa_version to ffa_fw_version as the variable identifies the
  version of the firmware and not the one we support
- add error prints when allocation fail during probe

No functional changes.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- Fix error message when we fail to retrieve ffa_version
- Move back printing the firmware version before checking supported
  features
- Use Warning instead of Info to inform user that FF-A is not supported
  in firmware.
---
 xen/arch/arm/tee/ffa.c | 44 ++++++++++++++++++++++++++----------------
 1 file changed, 27 insertions(+), 17 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 022089278e1c..1cc4023135d5 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -71,8 +71,8 @@
 
 #include "ffa_private.h"
 
-/* Negotiated FF-A version to use with the SPMC */
-static uint32_t __ro_after_init ffa_version;
+/* Negotiated FF-A version to use with the SPMC, 0 if not there or supported */
+static uint32_t __ro_after_init ffa_fw_version;
 
 
 /*
@@ -105,10 +105,7 @@ static bool ffa_get_version(uint32_t *vers)
 
     arm_smccc_1_2_smc(&arg, &resp);
     if ( resp.a0 == FFA_RET_NOT_SUPPORTED )
-    {
-        gprintk(XENLOG_ERR, "ffa: FFA_VERSION returned not supported\n");
         return false;
-    }
 
     *vers = resp.a0;
 
@@ -372,7 +369,7 @@ static int ffa_domain_init(struct domain *d)
     struct ffa_ctx *ctx;
     int ret;
 
-    if ( !ffa_version )
+    if ( !ffa_fw_version )
         return -ENODEV;
      /*
       * We can't use that last possible domain ID or ffa_get_vm_id() would
@@ -505,6 +502,9 @@ static bool ffa_probe(void)
      */
     BUILD_BUG_ON(PAGE_SIZE != FFA_PAGE_SIZE);
 
+    printk(XENLOG_INFO "ARM FF-A Mediator version %u.%u\n",
+           FFA_MY_VERSION_MAJOR, FFA_MY_VERSION_MINOR);
+
     /*
      * psci_init_smccc() updates this value with what's reported by EL-3
      * or secure world.
@@ -514,22 +514,24 @@ static bool ffa_probe(void)
         printk(XENLOG_ERR
                "ffa: unsupported SMCCC version %#x (need at least %#x)\n",
                smccc_ver, ARM_SMCCC_VERSION_1_2);
-        return false;
+        goto err_no_fw;
     }
 
     if ( !ffa_get_version(&vers) )
-        return false;
+    {
+        gprintk(XENLOG_ERR, "Cannot retrieve the FFA version\n");
+        goto err_no_fw;
+    }
 
     if ( vers < FFA_MIN_SPMC_VERSION || vers > FFA_MY_VERSION )
     {
         printk(XENLOG_ERR "ffa: Incompatible version %#x found\n", vers);
-        return false;
+        goto err_no_fw;
     }
 
-    major_vers = (vers >> FFA_VERSION_MAJOR_SHIFT) & FFA_VERSION_MAJOR_MASK;
+    major_vers = (vers >> FFA_VERSION_MAJOR_SHIFT)
+                 & FFA_VERSION_MAJOR_MASK;
     minor_vers = vers & FFA_VERSION_MINOR_MASK;
-    printk(XENLOG_INFO "ARM FF-A Mediator version %u.%u\n",
-           FFA_MY_VERSION_MAJOR, FFA_MY_VERSION_MINOR);
     printk(XENLOG_INFO "ARM FF-A Firmware version %u.%u\n",
            major_vers, minor_vers);
 
@@ -546,12 +548,18 @@ static bool ffa_probe(void)
          !check_mandatory_feature(FFA_MEM_SHARE_32) ||
          !check_mandatory_feature(FFA_MEM_RECLAIM) ||
          !check_mandatory_feature(FFA_MSG_SEND_DIRECT_REQ_32) )
-        return false;
+    {
+        printk(XENLOG_ERR "ffa: Mandatory feature not supported by fw\n");
+        goto err_no_fw;
+    }
 
-    if ( !ffa_rxtx_init() )
-        return false;
+    ffa_fw_version = vers;
 
-    ffa_version = vers;
+    if ( !ffa_rxtx_init() )
+    {
+        printk(XENLOG_ERR "ffa: Error during RXTX buffer init\n");
+        goto err_no_fw;
+    }
 
     if ( !ffa_partinfo_init() )
         goto err_rxtx_destroy;
@@ -564,7 +572,9 @@ static bool ffa_probe(void)
 
 err_rxtx_destroy:
     ffa_rxtx_destroy();
-    ffa_version = 0;
+err_no_fw:
+    ffa_fw_version = 0;
+    printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
 
     return false;
 }
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819599.1232979 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zRy-00006h-Ge; Wed, 16 Oct 2024 08:32:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819599.1232979; Wed, 16 Oct 2024 08:32: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 1t0zRy-00006a-E3; Wed, 16 Oct 2024 08:32:10 +0000
Received: by outflank-mailman (input) for mailman id 819599;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zRw-00006U-Si
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:08 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 204735a8-8b99-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 10:32:06 +0200 (CEST)
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 2A6FFFEC;
 Wed, 16 Oct 2024 01:32:35 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EB1873F71E;
 Wed, 16 Oct 2024 01:32:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 204735a8-8b99-11ef-99a3-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 00/10] xen/arm: ffa: Improvements and fixes
Date: Wed, 16 Oct 2024 10:31:20 +0200
Message-ID: <cover.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This serie contains various patches to rework how firmware discovery and
feature detection is done and allow to have a more fine granular
filtering of the calls we do or not to the firmware.

There is also a patch introducing the use of the "bit 15" convention
from the FF-A specification to distinguish between secure and non-secure
identifiers as Xen VM IDs cannot have bit 15 set.

Finally we introduce support for indirect messages and for that we
transmit the RXTX buffers to the SPMC and we put the message related
functions into their own source file.

Changes in v2:
- do not activate FF-A if firmware does not support i
- various clean up and small fixes explained in each patch
- rebase on top of latest staging

Bertrand Marquis (10):
  xen/arm: ffa: Rework firmware discovery
  xen/arm: ffa: Rework feature discovery
  xen/arm: ffa: Fix version negotiation
  xen/arm: ffa: Fine granular call support
  xen/arm: ffa: Rework partition info get
  xen/arm: ffa: Use bit 15 convention for SPs
  xen/arm: ffa: Transmit RXTX buffers to the SPMC
  xen/arm: ffa: move message function into ffa_msg.c
  xen/arm: ffa: Remove per VM notif_enabled
  xen/arm: ffa: Add indirect message support

 xen/arch/arm/tee/Makefile       |   1 +
 xen/arch/arm/tee/ffa.c          | 251 +++++++++++++++-----------------
 xen/arch/arm/tee/ffa_msg.c      | 129 ++++++++++++++++
 xen/arch/arm/tee/ffa_notif.c    |  17 +--
 xen/arch/arm/tee/ffa_partinfo.c | 230 ++++++++++++++++++++---------
 xen/arch/arm/tee/ffa_private.h  |  79 ++++++++--
 xen/arch/arm/tee/ffa_rxtx.c     | 162 +++++++++++++++++----
 xen/arch/arm/tee/ffa_shm.c      |  39 +++--
 8 files changed, 642 insertions(+), 266 deletions(-)
 create mode 100644 xen/arch/arm/tee/ffa_msg.c

-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819601.1233000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSC-0000el-Vw; Wed, 16 Oct 2024 08:32:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819601.1233000; Wed, 16 Oct 2024 08:32: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 1t0zSC-0000ec-T4; Wed, 16 Oct 2024 08:32:24 +0000
Received: by outflank-mailman (input) for mailman id 819601;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSA-00006U-Uu
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:22 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 293d9897-8b99-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 10:32:21 +0200 (CEST)
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 375531007;
 Wed, 16 Oct 2024 01:32:50 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 40E6E3F71E;
 Wed, 16 Oct 2024 01:32:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 293d9897-8b99-11ef-99a3-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 02/10] xen/arm: ffa: Rework feature discovery
Date: Wed, 16 Oct 2024 10:31:22 +0200
Message-ID: <8cc7abbd82b43aa595ddc2dce3495663dfc413e0.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Store the list of ABI we need in a list and go through the list instead
of having a list of conditions inside the code.

No functional change.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- Store a string version of ABI needed from firmware and print the name
  of the ABI not supported instead of the id
- Restore comment with TODO which should not have been removed at this
  stage
- fix to unsigned int the index in the loop on the array
- use abi instead of feature in the names of the functions and variables
  as we are not checking features but abis
---
 xen/arch/arm/tee/ffa.c | 57 +++++++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 23 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 1cc4023135d5..dde932422ecf 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -74,6 +74,31 @@
 /* Negotiated FF-A version to use with the SPMC, 0 if not there or supported */
 static uint32_t __ro_after_init ffa_fw_version;
 
+struct ffa_fw_abi {
+    const uint32_t id;
+    const char *name;
+};
+
+#define FW_ABI(abi) {abi,#abi}
+
+/* List of ABI we use from the firmware */
+static const struct ffa_fw_abi ffa_fw_abi_needed[] = {
+    FW_ABI(FFA_VERSION),
+    FW_ABI(FFA_FEATURES),
+    FW_ABI(FFA_NOTIFICATION_BITMAP_CREATE),
+    FW_ABI(FFA_NOTIFICATION_BITMAP_DESTROY),
+    FW_ABI(FFA_PARTITION_INFO_GET),
+    FW_ABI(FFA_NOTIFICATION_INFO_GET_64),
+    FW_ABI(FFA_NOTIFICATION_GET),
+    FW_ABI(FFA_RX_RELEASE),
+    FW_ABI(FFA_RXTX_MAP_64),
+    FW_ABI(FFA_RXTX_UNMAP),
+    FW_ABI(FFA_MEM_SHARE_32),
+    FW_ABI(FFA_MEM_SHARE_64),
+    FW_ABI(FFA_MEM_RECLAIM),
+    FW_ABI(FFA_MSG_SEND_DIRECT_REQ_32),
+    FW_ABI(FFA_MSG_SEND_DIRECT_REQ_64),
+};
 
 /*
  * Our rx/tx buffers shared with the SPMC. FFA_RXTX_PAGE_COUNT is the
@@ -112,20 +137,9 @@ static bool ffa_get_version(uint32_t *vers)
     return true;
 }
 
-static int32_t ffa_features(uint32_t id)
-{
-    return ffa_simple_call(FFA_FEATURES, id, 0, 0, 0);
-}
-
-static bool check_mandatory_feature(uint32_t id)
+static bool ffa_abi_supported(uint32_t id)
 {
-    int32_t ret = ffa_features(id);
-
-    if ( ret )
-        printk(XENLOG_ERR "ffa: mandatory feature id %#x missing: error %d\n",
-               id, ret);
-
-    return !ret;
+    return !ffa_simple_call(FFA_FEATURES, id, 0, 0, 0);
 }
 
 static void handle_version(struct cpu_user_regs *regs)
@@ -540,17 +554,14 @@ static bool ffa_probe(void)
      * TODO: Rework the code to allow domain to use a subset of the
      * features supported.
      */
-    if ( !check_mandatory_feature(FFA_PARTITION_INFO_GET) ||
-         !check_mandatory_feature(FFA_RX_RELEASE) ||
-         !check_mandatory_feature(FFA_RXTX_MAP_64) ||
-         !check_mandatory_feature(FFA_MEM_SHARE_64) ||
-         !check_mandatory_feature(FFA_RXTX_UNMAP) ||
-         !check_mandatory_feature(FFA_MEM_SHARE_32) ||
-         !check_mandatory_feature(FFA_MEM_RECLAIM) ||
-         !check_mandatory_feature(FFA_MSG_SEND_DIRECT_REQ_32) )
+    for ( unsigned int i = 0; i < ARRAY_SIZE(ffa_fw_abi_needed); i++ )
     {
-        printk(XENLOG_ERR "ffa: Mandatory feature not supported by fw\n");
-        goto err_no_fw;
+        if ( !ffa_abi_supported(ffa_fw_abi_needed[i].id) )
+        {
+            printk(XENLOG_INFO "ARM FF-A Firmware does not support %s\n",
+                   ffa_fw_abi_needed[i].name);
+            goto err_no_fw;
+        }
     }
 
     ffa_fw_version = vers;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819602.1233004 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSD-0000i3-9s; Wed, 16 Oct 2024 08:32:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819602.1233004; Wed, 16 Oct 2024 08:32: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 1t0zSD-0000h8-5v; Wed, 16 Oct 2024 08:32:25 +0000
Received: by outflank-mailman (input) for mailman id 819602;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSB-0000Nz-K3
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:23 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 2a4e3d8a-8b99-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:32:23 +0200 (CEST)
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 1F4D8FEC;
 Wed, 16 Oct 2024 01:32:52 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EA7F63F71E;
 Wed, 16 Oct 2024 01:32:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a4e3d8a-8b99-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 03/10] xen/arm: ffa: Fix version negotiation
Date: Wed, 16 Oct 2024 10:31:23 +0200
Message-ID: <86636401aa34f9c64e674a53d49859930a227d10.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Fix FFA version negotiation with the firmware to follow the
specification guidance more closely (see FF-A Specification Version 1.1
in chapter 13.2.1).
When the firmware returns OK we can have several cases:
- the version requested is accepted but the firmware supports a greater
  one in the same major.
- the firmware supports a greater major version. It could still return
  OK even if the version requested is not accepted. Reject it.
- the firmware supports a lower version. It will return OK and give that
  version. Check if we support it and use it or reject it if we do not.

Adapt the code to:
- reject any version lower than the one we support or not with the same
  major version
- use the version returned if in our supported range (currently 1.1
  only)
- use 1.1 if the version returned is greater.

Also adapt the handling of version requests from VM:
- use our version if same major but greater minor is requested
- use requested version if same major but lower minor is requested
- do not use if incompatible major is requested
- always return our version without error to the requester

[1] https://developer.arm.com/documentation/den0077/e/

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- add link in commit message and code to the version and chapter of
  the spec.
- fix comment coding style
- introduce macros to get the major and minor of a version
- add BUILD_BUG_ON to validate that the SPMC version we want is
  compatible with our own version
- rework version testing and selecting to be clearer by discarding
  different major or version lower than what we want and then selecting
  based on the minor version.
- fix get_version handling to be more generic
---
 xen/arch/arm/tee/ffa.c         | 54 +++++++++++++++++++++++++---------
 xen/arch/arm/tee/ffa_private.h |  3 ++
 2 files changed, 43 insertions(+), 14 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index dde932422ecf..1ee6b2895e92 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -148,13 +148,20 @@ static void handle_version(struct cpu_user_regs *regs)
     struct ffa_ctx *ctx = d->arch.tee;
     uint32_t vers = get_user_reg(regs, 1);
 
-    if ( vers < FFA_VERSION_1_1 )
-        vers = FFA_VERSION_1_0;
-    else
-        vers = FFA_VERSION_1_1;
-
-    ctx->guest_vers = vers;
-    ffa_set_regs(regs, vers, 0, 0, 0, 0, 0, 0, 0);
+    /*
+     * Guest will use the version it requested if it is our major and minor
+     * lower or equals to ours. If the minor is greater, our version will be
+     * used.
+     * In any case return our version to the caller.
+     */
+    if ( FFA_VERSION_MAJOR(vers) == FFA_MY_VERSION_MAJOR )
+    {
+        if ( FFA_VERSION_MINOR(vers) > FFA_MY_VERSION_MINOR )
+            ctx->guest_vers = FFA_MY_VERSION;
+        else
+            ctx->guest_vers = vers;
+    }
+    ffa_set_regs(regs, FFA_MY_VERSION, 0, 0, 0, 0, 0, 0, 0);
 }
 
 static void handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid)
@@ -537,18 +544,39 @@ static bool ffa_probe(void)
         goto err_no_fw;
     }
 
-    if ( vers < FFA_MIN_SPMC_VERSION || vers > FFA_MY_VERSION )
+    /* Some sanity check in case we update the version we support */
+    BUILD_BUG_ON(FFA_MIN_SPMC_VERSION > FFA_MY_VERSION);
+    BUILD_BUG_ON(FFA_VERSION_MAJOR(FFA_MIN_SPMC_VERSION) !=
+                                   FFA_MY_VERSION_MAJOR);
+
+    major_vers = FFA_VERSION_MAJOR(vers);
+    minor_vers = FFA_VERSION_MINOR(vers);
+
+    if ( major_vers != FFA_MY_VERSION_MAJOR ||
+         minor_vers < FFA_VERSION_MINOR(FFA_MIN_SPMC_VERSION) )
     {
-        printk(XENLOG_ERR "ffa: Incompatible version %#x found\n", vers);
+        printk(XENLOG_ERR "ffa: Incompatible firmware version %u.%u\n",
+               major_vers, minor_vers);
         goto err_no_fw;
     }
 
-    major_vers = (vers >> FFA_VERSION_MAJOR_SHIFT)
-                 & FFA_VERSION_MAJOR_MASK;
-    minor_vers = vers & FFA_VERSION_MINOR_MASK;
     printk(XENLOG_INFO "ARM FF-A Firmware version %u.%u\n",
            major_vers, minor_vers);
 
+    /*
+     * If the call succeed and the version returned is higher or equal to
+     * the one Xen requested, the version requested by Xen will be the one
+     * used. If the version returned is lower but compatible with Xen, Xen
+     * will use that version instead.
+     * A version with a different major or lower than the minimum version
+     * we support is rejected before.
+     * See https://developer.arm.com/documentation/den0077/e/ chapter 13.2.1
+     */
+    if ( minor_vers > FFA_MY_VERSION_MINOR )
+        ffa_fw_version = FFA_MY_VERSION;
+    else
+        ffa_fw_version = vers;
+
     /*
      * At the moment domains must support the same features used by Xen.
      * TODO: Rework the code to allow domain to use a subset of the
@@ -564,8 +592,6 @@ static bool ffa_probe(void)
         }
     }
 
-    ffa_fw_version = vers;
-
     if ( !ffa_rxtx_init() )
     {
         printk(XENLOG_ERR "ffa: Error during RXTX buffer init\n");
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 7c6b06f686fc..045d9c4a0b56 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -35,6 +35,9 @@
 #define MAKE_FFA_VERSION(major, minor)  \
         ((((major) & FFA_VERSION_MAJOR_MASK) << FFA_VERSION_MAJOR_SHIFT) | \
          ((minor) & FFA_VERSION_MINOR_MASK))
+#define FFA_VERSION_MAJOR(vers) (((vers) >> FFA_VERSION_MAJOR_SHIFT) & \
+                                 FFA_VERSION_MAJOR_MASK)
+#define FFA_VERSION_MINOR(vers) ((vers) & FFA_VERSION_MINOR_MASK)
 
 #define FFA_VERSION_1_0         MAKE_FFA_VERSION(1, 0)
 #define FFA_VERSION_1_1         MAKE_FFA_VERSION(1, 1)
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819603.1233020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSF-0001Ej-OV; Wed, 16 Oct 2024 08:32:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819603.1233020; Wed, 16 Oct 2024 08:32: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 1t0zSF-0001Ec-LU; Wed, 16 Oct 2024 08:32:27 +0000
Received: by outflank-mailman (input) for mailman id 819603;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSE-00006U-OC
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:26 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 2b7aa259-8b99-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 10:32:25 +0200 (CEST)
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 1015D1007;
 Wed, 16 Oct 2024 01:32:54 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DDD763F71E;
 Wed, 16 Oct 2024 01:32:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b7aa259-8b99-11ef-99a3-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 04/10] xen/arm: ffa: Fine granular call support
Date: Wed, 16 Oct 2024 10:31:24 +0200
Message-ID: <84a39fbb681c1fdc2708d385e79bef1bbc9c6ae0.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Create a bitmap to store which feature is supported or not by the
firmware and use it to filter which calls are done to the firmware.

While there reoder ABI definition by numbers to easily find the min and
max ones.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- rename fw_feat to abi and macros to FFA_ABI to be coherent with the
  abi needed change done before
- rework the macros to be simpler by directly defining MIN and MAX using
  only Function ids
- check that requested function ids do not go over the bitmap size in
  ffa_fw_supports_fid
- add an ASSERT to make sure that we do not try to set bits outside of
  the bitmap
- turn off FF-A if there is not firmware support and adapt the commit
  message to reflect this
- add a compile time check that FFA_ABI_MIN < FFA_ABI_MAX
- remove spurious line removal
- restore proper cleanup of rxtx init in case of error
- reorder ABI by numbers
---
 xen/arch/arm/tee/ffa.c          | 28 +++++++++++++++---------
 xen/arch/arm/tee/ffa_notif.c    |  7 ++++++
 xen/arch/arm/tee/ffa_partinfo.c | 30 +++++++++++++++++++++++++-
 xen/arch/arm/tee/ffa_private.h  | 38 ++++++++++++++++++++++++++++-----
 xen/arch/arm/tee/ffa_rxtx.c     |  4 ++++
 xen/arch/arm/tee/ffa_shm.c      | 12 +++++++++++
 6 files changed, 103 insertions(+), 16 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 1ee6b2895e92..267d4435ac08 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -72,7 +72,10 @@
 #include "ffa_private.h"
 
 /* Negotiated FF-A version to use with the SPMC, 0 if not there or supported */
-static uint32_t __ro_after_init ffa_fw_version;
+uint32_t __ro_after_init ffa_fw_version;
+
+/* Features supported by the SPMC or secure world when present */
+DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
 
 struct ffa_fw_abi {
     const uint32_t id;
@@ -177,6 +180,13 @@ static void handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid)
     else
         mask = GENMASK_ULL(31, 0);
 
+    if ( !ffa_fw_supports_fid(fid) )
+    {
+        resp.a0 = FFA_ERROR;
+        resp.a2 = FFA_RET_NOT_SUPPORTED;
+        goto out;
+    }
+
     src_dst = get_user_reg(regs, 1);
     if ( (src_dst >> 16) != ffa_get_vm_id(d) )
     {
@@ -577,19 +587,16 @@ static bool ffa_probe(void)
     else
         ffa_fw_version = vers;
 
-    /*
-     * At the moment domains must support the same features used by Xen.
-     * TODO: Rework the code to allow domain to use a subset of the
-     * features supported.
-     */
     for ( unsigned int i = 0; i < ARRAY_SIZE(ffa_fw_abi_needed); i++ )
     {
-        if ( !ffa_abi_supported(ffa_fw_abi_needed[i].id) )
-        {
+        ASSERT(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id) < FFA_ABI_BITMAP_SIZE);
+
+        if ( ffa_abi_supported(ffa_fw_abi_needed[i].id) )
+            set_bit(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id),
+                    ffa_fw_abi_supported);
+        else
             printk(XENLOG_INFO "ARM FF-A Firmware does not support %s\n",
                    ffa_fw_abi_needed[i].name);
-            goto err_no_fw;
-        }
     }
 
     if ( !ffa_rxtx_init() )
@@ -611,6 +618,7 @@ err_rxtx_destroy:
     ffa_rxtx_destroy();
 err_no_fw:
     ffa_fw_version = 0;
+    bitmap_zero(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
     printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
 
     return false;
diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 541e61d2f606..4b3e46318f4b 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -377,6 +377,13 @@ void ffa_notif_init(void)
     unsigned int irq;
     int ret;
 
+    /* Only enable fw notification if all ABIs we need are supported */
+    if ( !(ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
+           ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_DESTROY) &&
+           ffa_fw_supports_fid(FFA_NOTIFICATION_GET) &&
+           ffa_fw_supports_fid(FFA_NOTIFICATION_INFO_GET_64)) )
+        return;
+
     arm_smccc_1_2_smc(&arg, &resp);
     if ( resp.a0 != FFA_SUCCESS_32 )
         return;
diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_partinfo.c
index 93a03c6bc672..99c48f0e5c05 100644
--- a/xen/arch/arm/tee/ffa_partinfo.c
+++ b/xen/arch/arm/tee/ffa_partinfo.c
@@ -77,7 +77,15 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
      */
     if ( w5 == FFA_PARTITION_INFO_GET_COUNT_FLAG &&
          ctx->guest_vers == FFA_VERSION_1_1 )
-        return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi_size);
+    {
+        if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
+            return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi_size);
+        else
+        {
+            *count = 0;
+            return FFA_RET_OK;
+        }
+    }
     if ( w5 )
         return FFA_RET_INVALID_PARAMETERS;
 
@@ -87,6 +95,18 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
     if ( !spin_trylock(&ctx->rx_lock) )
         return FFA_RET_BUSY;
 
+    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
+    {
+        if ( ctx->guest_vers == FFA_VERSION_1_0 )
+            *fpi_size = sizeof(struct ffa_partition_info_1_0);
+        else
+            *fpi_size = sizeof(struct ffa_partition_info_1_1);
+
+        *count = 0;
+        ret = FFA_RET_OK;
+        goto out;
+    }
+
     if ( !ctx->page_count || !ctx->rx_is_free )
         goto out;
     spin_lock(&ffa_rx_buffer_lock);
@@ -250,6 +270,11 @@ bool ffa_partinfo_init(void)
     uint32_t count;
     int e;
 
+    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) ||
+         !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) ||
+         !ffa_rx || !ffa_tx )
+        return false;
+
     e = ffa_partition_info_get(0, 0, 0, 0, 0, &count, &fpi_size);
     if ( e )
     {
@@ -313,6 +338,9 @@ int ffa_partinfo_domain_init(struct domain *d)
     unsigned int n;
     int32_t res;
 
+    if ( !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) )
+        return 0;
+
     ctx->vm_destroy_bitmap = xzalloc_array(unsigned long, count);
     if ( !ctx->vm_destroy_bitmap )
         return -ENOMEM;
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 045d9c4a0b56..85eb61c13464 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -14,6 +14,7 @@
 #include <xen/spinlock.h>
 #include <xen/sched.h>
 #include <xen/time.h>
+#include <xen/bitmap.h>
 
 /* Error codes */
 #define FFA_RET_OK                      0
@@ -201,18 +202,17 @@
 #define FFA_INTERRUPT                   0x84000062U
 #define FFA_VERSION                     0x84000063U
 #define FFA_FEATURES                    0x84000064U
-#define FFA_RX_ACQUIRE                  0x84000084U
 #define FFA_RX_RELEASE                  0x84000065U
 #define FFA_RXTX_MAP_32                 0x84000066U
 #define FFA_RXTX_MAP_64                 0xC4000066U
 #define FFA_RXTX_UNMAP                  0x84000067U
 #define FFA_PARTITION_INFO_GET          0x84000068U
 #define FFA_ID_GET                      0x84000069U
-#define FFA_SPM_ID_GET                  0x84000085U
+#define FFA_MSG_POLL                    0x8400006AU
 #define FFA_MSG_WAIT                    0x8400006BU
 #define FFA_MSG_YIELD                   0x8400006CU
 #define FFA_RUN                         0x8400006DU
-#define FFA_MSG_SEND2                   0x84000086U
+#define FFA_MSG_SEND                    0x8400006EU
 #define FFA_MSG_SEND_DIRECT_REQ_32      0x8400006FU
 #define FFA_MSG_SEND_DIRECT_REQ_64      0xC400006FU
 #define FFA_MSG_SEND_DIRECT_RESP_32     0x84000070U
@@ -230,8 +230,6 @@
 #define FFA_MEM_RECLAIM                 0x84000077U
 #define FFA_MEM_FRAG_RX                 0x8400007AU
 #define FFA_MEM_FRAG_TX                 0x8400007BU
-#define FFA_MSG_SEND                    0x8400006EU
-#define FFA_MSG_POLL                    0x8400006AU
 #define FFA_NOTIFICATION_BITMAP_CREATE  0x8400007DU
 #define FFA_NOTIFICATION_BITMAP_DESTROY 0x8400007EU
 #define FFA_NOTIFICATION_BIND           0x8400007FU
@@ -240,6 +238,25 @@
 #define FFA_NOTIFICATION_GET            0x84000082U
 #define FFA_NOTIFICATION_INFO_GET_32    0x84000083U
 #define FFA_NOTIFICATION_INFO_GET_64    0xC4000083U
+#define FFA_RX_ACQUIRE                  0x84000084U
+#define FFA_SPM_ID_GET                  0x84000085U
+#define FFA_MSG_SEND2                   0x84000086U
+
+/**
+ * Encoding of features supported or not by the fw in a bitmap:
+ * - Function IDs are going from 0x60 to 0xFF
+ * - A function can be supported in 32 and/or 64bit
+ * The bitmap has one bit for each function in 32 and 64 bit.
+ */
+#define FFA_ABI_ID(id)        ((id) & ARM_SMCCC_FUNC_MASK)
+#define FFA_ABI_CONV(id)      (((id) >> ARM_SMCCC_CONV_SHIFT) & BIT(0,U))
+
+#define FFA_ABI_MIN           FFA_ABI_ID(FFA_ERROR)
+#define FFA_ABI_MAX           FFA_ABI_ID(FFA_MSG_SEND2)
+
+#define FFA_ABI_BITMAP_SIZE   (2 * (FFA_ABI_MAX - FFA_ABI_MIN + 1))
+#define FFA_ABI_BITNUM(id)    ((FFA_ABI_ID(id) - FFA_ABI_MIN) << 1 | \
+                               FFA_ABI_CONV(id))
 
 struct ffa_ctx_notif {
     bool enabled;
@@ -289,6 +306,8 @@ extern void *ffa_rx;
 extern void *ffa_tx;
 extern spinlock_t ffa_rx_buffer_lock;
 extern spinlock_t ffa_tx_buffer_lock;
+extern uint32_t __ro_after_init ffa_fw_version;
+extern DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
 
 bool ffa_shm_domain_destroy(struct domain *d);
 void ffa_handle_mem_share(struct cpu_user_regs *regs);
@@ -401,4 +420,13 @@ static inline int32_t ffa_rx_release(void)
     return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
 }
 
+static inline bool ffa_fw_supports_fid(uint32_t fid)
+{
+    BUILD_BUG_ON(FFA_ABI_MIN > FFA_ABI_MAX);
+
+    if ( FFA_ABI_BITNUM(fid) > FFA_ABI_BITMAP_SIZE)
+        return false;
+    return test_bit(FFA_ABI_BITNUM(fid), ffa_fw_abi_supported);
+}
+
 #endif /*__FFA_PRIVATE_H__*/
diff --git a/xen/arch/arm/tee/ffa_rxtx.c b/xen/arch/arm/tee/ffa_rxtx.c
index 661764052e67..b6931c855779 100644
--- a/xen/arch/arm/tee/ffa_rxtx.c
+++ b/xen/arch/arm/tee/ffa_rxtx.c
@@ -193,6 +193,10 @@ bool ffa_rxtx_init(void)
 {
     int e;
 
+    /* Firmware not there or not supporting */
+    if ( !ffa_fw_supports_fid(FFA_RXTX_MAP_64) )
+        return false;
+
     ffa_rx = alloc_xenheap_pages(get_order_from_pages(FFA_RXTX_PAGE_COUNT), 0);
     if ( !ffa_rx )
         return false;
diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
index 370d83ec5cf8..efa5b67db8e1 100644
--- a/xen/arch/arm/tee/ffa_shm.c
+++ b/xen/arch/arm/tee/ffa_shm.c
@@ -149,6 +149,9 @@ static int32_t ffa_mem_share(uint32_t tot_len, uint32_t frag_len,
 static int32_t ffa_mem_reclaim(uint32_t handle_lo, uint32_t handle_hi,
                                uint32_t flags)
 {
+    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
+        return FFA_RET_NOT_SUPPORTED;
+
     return ffa_simple_call(FFA_MEM_RECLAIM, handle_lo, handle_hi, flags, 0);
 }
 
@@ -467,6 +470,12 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs)
     uint32_t range_count;
     uint32_t region_offs;
 
+    if ( !ffa_fw_supports_fid(FFA_MEM_SHARE_64) )
+    {
+        ret = FFA_RET_NOT_SUPPORTED;
+        goto out_set_ret;
+    }
+
     /*
      * We're only accepting memory transaction descriptors via the rx/tx
      * buffer.
@@ -621,6 +630,9 @@ int ffa_handle_mem_reclaim(uint64_t handle, uint32_t flags)
     register_t handle_lo;
     int ret;
 
+    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
+        return FFA_RET_NOT_SUPPORTED;
+
     spin_lock(&ctx->lock);
     shm = find_shm_mem(ctx, handle);
     if ( shm )
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819604.1233030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSH-0001V4-2f; Wed, 16 Oct 2024 08:32:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819604.1233030; Wed, 16 Oct 2024 08:32: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 1t0zSG-0001Uq-Um; Wed, 16 Oct 2024 08:32:28 +0000
Received: by outflank-mailman (input) for mailman id 819604;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSF-0000Nz-Ad
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:27 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 2c838c0f-8b99-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:32:26 +0200 (CEST)
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 CCA60FEC;
 Wed, 16 Oct 2024 01:32:55 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C5DFC3F71E;
 Wed, 16 Oct 2024 01:32:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c838c0f-8b99-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 05/10] xen/arm: ffa: Rework partition info get
Date: Wed, 16 Oct 2024 10:31:25 +0200
Message-ID: <f1521b297eee2648fdca73896640230c0ca4cc57.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rework the partition info get implementation to use the correct size of
structure depending on the version of the protocol and simplifies the
structure copy to use only memcpy and prevent recreating the structure
each time.
The goal here is to have an implementation that will be easier to
maintain in the long term as the specification is only adding fields to
structure with versions to simplify support of several protocol
versions and as such an SPMC implementation in the future could use this
and return a size higher than the one we expect.
The patch is fixing the part_info_get function for this and the
subscriber discovery on probe.

No functional changes expected.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- rebase
---
 xen/arch/arm/tee/ffa.c          |  13 +--
 xen/arch/arm/tee/ffa_partinfo.c | 185 ++++++++++++++++++++------------
 xen/arch/arm/tee/ffa_private.h  |   4 +-
 3 files changed, 118 insertions(+), 84 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 267d4435ac08..4b55e8b48f01 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -311,8 +311,6 @@ static bool ffa_handle_call(struct cpu_user_regs *regs)
     uint32_t fid = get_user_reg(regs, 0);
     struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
-    uint32_t fpi_size;
-    uint32_t count;
     int e;
 
     if ( !ctx )
@@ -338,16 +336,7 @@ static bool ffa_handle_call(struct cpu_user_regs *regs)
         e = ffa_handle_rxtx_unmap();
         break;
     case FFA_PARTITION_INFO_GET:
-        e = ffa_handle_partition_info_get(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), &count,
-                                          &fpi_size);
-        if ( e )
-            ffa_set_regs_error(regs, e);
-        else
-            ffa_set_regs_success(regs, count, fpi_size);
+        ffa_handle_partition_info_get(regs);
         return true;
     case FFA_RX_RELEASE:
         e = ffa_handle_rx_release();
diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_partinfo.c
index 99c48f0e5c05..75a073d090e0 100644
--- a/xen/arch/arm/tee/ffa_partinfo.c
+++ b/xen/arch/arm/tee/ffa_partinfo.c
@@ -33,21 +33,24 @@ static uint16_t subscr_vm_created_count __read_mostly;
 static uint16_t *subscr_vm_destroyed __read_mostly;
 static uint16_t subscr_vm_destroyed_count __read_mostly;
 
-static int32_t ffa_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
-                                      uint32_t w4, uint32_t w5, uint32_t *count,
-                                      uint32_t *fpi_size)
+static int32_t ffa_partition_info_get(uint32_t *uuid, uint32_t flags,
+                                      uint32_t *count, uint32_t *fpi_size)
 {
-    const struct arm_smccc_1_2_regs arg = {
+    struct arm_smccc_1_2_regs arg = {
         .a0 = FFA_PARTITION_INFO_GET,
-        .a1 = w1,
-        .a2 = w2,
-        .a3 = w3,
-        .a4 = w4,
-        .a5 = w5,
+        .a5 = flags,
     };
     struct arm_smccc_1_2_regs resp;
     uint32_t ret;
 
+    if ( uuid )
+    {
+        arg.a1 = uuid[0];
+        arg.a2 = uuid[1];
+        arg.a3 = uuid[2];
+        arg.a4 = uuid[3];
+    }
+
     arm_smccc_1_2_smc(&arg, &resp);
 
     ret = ffa_get_ret_code(&resp);
@@ -60,13 +63,31 @@ static int32_t ffa_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
     return ret;
 }
 
-int32_t ffa_handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
-                                      uint32_t w4, uint32_t w5, uint32_t *count,
-                                      uint32_t *fpi_size)
+void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
 {
-    int32_t ret = FFA_RET_DENIED;
+    int32_t ret;
     struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
+    uint32_t flags = get_user_reg(regs, 5);
+    uint32_t uuid[4] = {
+        get_user_reg(regs, 1),
+        get_user_reg(regs, 2),
+        get_user_reg(regs, 3),
+        get_user_reg(regs, 4),
+    };
+    uint32_t src_size, dst_size;
+    void *dst_buf;
+    uint32_t ffa_sp_count = 0;
+
+    /*
+     * If the guest is v1.0, he does not get back the entry size so we must
+     * use the v1.0 structure size in the destination buffer.
+     * Otherwise use the size of the highest version we support, here 1.1.
+     */
+    if ( ctx->guest_vers == FFA_VERSION_1_0 )
+        dst_size = sizeof(struct ffa_partition_info_1_0);
+    else
+        dst_size = sizeof(struct ffa_partition_info_1_1);
 
     /*
      * FF-A v1.0 has w5 MBZ while v1.1 allows
@@ -75,90 +96,105 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
      * FFA_PARTITION_INFO_GET_COUNT is only using registers and not the
      * rxtx buffer so do the partition_info_get directly.
      */
-    if ( w5 == FFA_PARTITION_INFO_GET_COUNT_FLAG &&
+    if ( flags == FFA_PARTITION_INFO_GET_COUNT_FLAG &&
          ctx->guest_vers == FFA_VERSION_1_1 )
     {
         if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
-            return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi_size);
+            ret = ffa_partition_info_get(uuid, flags, &ffa_sp_count,
+                                        &src_size);
         else
-        {
-            *count = 0;
-            return FFA_RET_OK;
-        }
-    }
-    if ( w5 )
-        return FFA_RET_INVALID_PARAMETERS;
+            ret = FFA_RET_OK;
 
-    if ( !ffa_rx )
-        return FFA_RET_DENIED;
+        goto out;
+    }
 
-    if ( !spin_trylock(&ctx->rx_lock) )
-        return FFA_RET_BUSY;
+    if ( flags )
+    {
+        ret = FFA_RET_INVALID_PARAMETERS;
+        goto out;
+    }
 
     if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
     {
-        if ( ctx->guest_vers == FFA_VERSION_1_0 )
-            *fpi_size = sizeof(struct ffa_partition_info_1_0);
-        else
-            *fpi_size = sizeof(struct ffa_partition_info_1_1);
-
-        *count = 0;
+        /* Just give an empty partition list to the caller */
         ret = FFA_RET_OK;
         goto out;
     }
 
-    if ( !ctx->page_count || !ctx->rx_is_free )
+    if ( !spin_trylock(&ctx->rx_lock) )
+    {
+        ret = FFA_RET_BUSY;
         goto out;
+    }
+
+    dst_buf = ctx->rx;
+
+    if ( !ffa_rx )
+    {
+        ret = FFA_RET_DENIED;
+        goto out_rx_release;
+    }
+
+    if ( !ctx->page_count || !ctx->rx_is_free )
+    {
+        ret = FFA_RET_DENIED;
+        goto out_rx_release;
+    }
+
     spin_lock(&ffa_rx_buffer_lock);
-    ret = ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi_size);
+
+    ret = ffa_partition_info_get(uuid, 0, &ffa_sp_count, &src_size);
+
     if ( ret )
         goto out_rx_buf_unlock;
+
     /*
      * ffa_partition_info_get() succeeded so we now own the RX buffer we
      * share with the SPMC. We must give it back using ffa_rx_release()
      * once we've copied the content.
      */
 
-    if ( ctx->guest_vers == FFA_VERSION_1_0 )
+    /* we cannot have a size smaller than 1.0 structure */
+    if ( src_size < sizeof(struct ffa_partition_info_1_0) )
     {
-        size_t n;
-        struct ffa_partition_info_1_1 *src = ffa_rx;
-        struct ffa_partition_info_1_0 *dst = ctx->rx;
-
-        if ( ctx->page_count * FFA_PAGE_SIZE < *count * sizeof(*dst) )
-        {
-            ret = FFA_RET_NO_MEMORY;
-            goto out_rx_release;
-        }
+        ret = FFA_RET_NOT_SUPPORTED;
+        goto out_rx_hyp_release;
+    }
 
-        for ( n = 0; n < *count; n++ )
-        {
-            dst[n].id = src[n].id;
-            dst[n].execution_context = src[n].execution_context;
-            dst[n].partition_properties = src[n].partition_properties;
-        }
+    if ( ctx->page_count * FFA_PAGE_SIZE < ffa_sp_count * dst_size )
+    {
+        ret = FFA_RET_NO_MEMORY;
+        goto out_rx_hyp_release;
     }
-    else
+
+    if ( ffa_sp_count > 0 )
     {
-        size_t sz = *count * *fpi_size;
+        uint32_t n;
+        void *src_buf = ffa_rx;
 
-        if ( ctx->page_count * FFA_PAGE_SIZE < sz )
+        /* copy the secure partitions info */
+        for ( n = 0; n < ffa_sp_count; n++ )
         {
-            ret = FFA_RET_NO_MEMORY;
-            goto out_rx_release;
+            memcpy(dst_buf, src_buf, dst_size);
+            dst_buf += dst_size;
+            src_buf += src_size;
         }
-
-        memcpy(ctx->rx, ffa_rx, sz);
     }
+
     ctx->rx_is_free = false;
-out_rx_release:
+
+out_rx_hyp_release:
     ffa_rx_release();
 out_rx_buf_unlock:
     spin_unlock(&ffa_rx_buffer_lock);
-out:
+out_rx_release:
     spin_unlock(&ctx->rx_lock);
 
-    return ret;
+out:
+    if ( ret )
+        ffa_set_regs_error(regs, ret);
+    else
+        ffa_set_regs_success(regs, ffa_sp_count, dst_size);
 }
 
 static int32_t ffa_direct_req_send_vm(uint16_t sp_id, uint16_t vm_id,
@@ -221,19 +257,28 @@ static void uninit_subscribers(void)
         XFREE(subscr_vm_destroyed);
 }
 
-static bool init_subscribers(struct ffa_partition_info_1_1 *fpi, uint16_t count)
+static bool init_subscribers(uint16_t count, uint32_t fpi_size)
 {
     uint16_t n;
     uint16_t c_pos;
     uint16_t d_pos;
+    struct ffa_partition_info_1_1 *fpi;
+
+    if ( fpi_size < sizeof(struct ffa_partition_info_1_1) )
+    {
+        printk(XENLOG_ERR "ffa: partition info size invalid: %u\n", fpi_size);
+        return false;
+    }
 
     subscr_vm_created_count = 0;
     subscr_vm_destroyed_count = 0;
     for ( n = 0; n < count; n++ )
     {
-        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_CREATED )
+        fpi = ffa_rx + n * fpi_size;
+
+        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
             subscr_vm_created_count++;
-        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
+        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
             subscr_vm_destroyed_count++;
     }
 
@@ -252,10 +297,12 @@ static bool init_subscribers(struct ffa_partition_info_1_1 *fpi, uint16_t count)
 
     for ( c_pos = 0, d_pos = 0, n = 0; n < count; n++ )
     {
-        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_CREATED )
-            subscr_vm_created[c_pos++] = fpi[n].id;
-        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
-            subscr_vm_destroyed[d_pos++] = fpi[n].id;
+        fpi = ffa_rx + n * fpi_size;
+
+        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
+            subscr_vm_created[c_pos++] = fpi->id;
+        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
+            subscr_vm_destroyed[d_pos++] = fpi->id;
     }
 
     return true;
@@ -275,7 +322,7 @@ bool ffa_partinfo_init(void)
          !ffa_rx || !ffa_tx )
         return false;
 
-    e = ffa_partition_info_get(0, 0, 0, 0, 0, &count, &fpi_size);
+    e = ffa_partition_info_get(NULL, 0, &count, &fpi_size);
     if ( e )
     {
         printk(XENLOG_ERR "ffa: Failed to get list of SPs: %d\n", e);
@@ -288,7 +335,7 @@ bool ffa_partinfo_init(void)
         goto out;
     }
 
-    ret = init_subscribers(ffa_rx, count);
+    ret = init_subscribers(count, fpi_size);
 
 out:
     ffa_rx_release();
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 85eb61c13464..e5bc73f9039e 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -316,9 +316,7 @@ int ffa_handle_mem_reclaim(uint64_t handle, uint32_t flags);
 bool ffa_partinfo_init(void);
 int ffa_partinfo_domain_init(struct domain *d);
 bool ffa_partinfo_domain_destroy(struct domain *d);
-int32_t ffa_handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
-                                      uint32_t w4, uint32_t w5, uint32_t *count,
-                                      uint32_t *fpi_size);
+void ffa_handle_partition_info_get(struct cpu_user_regs *regs);
 
 bool ffa_rxtx_init(void);
 void ffa_rxtx_destroy(void);
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819605.1233040 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSJ-0001nN-BR; Wed, 16 Oct 2024 08:32:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819605.1233040; Wed, 16 Oct 2024 08:32: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 1t0zSJ-0001nA-7W; Wed, 16 Oct 2024 08:32:31 +0000
Received: by outflank-mailman (input) for mailman id 819605;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSH-0000Nz-15
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:29 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 2d772929-8b99-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:32:28 +0200 (CEST)
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 6ADE11007;
 Wed, 16 Oct 2024 01:32:57 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8447D3F71E;
 Wed, 16 Oct 2024 01:32:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2d772929-8b99-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 06/10] xen/arm: ffa: Use bit 15 convention for SPs
Date: Wed, 16 Oct 2024 10:31:26 +0200
Message-ID: <dec1c02aa0142263796c53b8df917fa25e2d2675.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Make use and required to have bit 15 convention respected by secure
world (having bit 15 of IDs set for secure endpoints and non-set for
non-secure ones).
If any secure partition has an ID with bit 15 not set, it will not be
possible to contact or detect them.
Print an error log during probe for each secure endpoint detected with
bit 15 not set.

We are switching to this convention because Xen is currently not using
VMIDs with bit 15 set so we are sure that no VM will have it set (this
is ensured by BUILD_BUG_ON in case this becomes false in the future).
It is allowing to easily distinguish between secure and non-secure
endpoints, preventing the need to store a list of secure endpoint IDs in
Xen.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- rebase
---
 xen/arch/arm/tee/ffa.c          | 22 +++++++++++---
 xen/arch/arm/tee/ffa_partinfo.c | 54 +++++++++++++++++++++++++--------
 xen/arch/arm/tee/ffa_private.h  |  7 +++++
 xen/arch/arm/tee/ffa_shm.c      | 12 +++++++-
 4 files changed, 77 insertions(+), 18 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 4b55e8b48f01..a292003ca9fe 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -195,6 +195,14 @@ static void handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid)
         goto out;
     }
 
+    /* we do not support direct messages to VMs */
+    if ( !FFA_ID_IS_SECURE(src_dst & GENMASK(15,0)) )
+    {
+        resp.a0 = FFA_ERROR;
+        resp.a2 = FFA_RET_NOT_SUPPORTED;
+        goto out;
+    }
+
     arg.a1 = src_dst;
     arg.a2 = get_user_reg(regs, 2) & mask;
     arg.a3 = get_user_reg(regs, 3) & mask;
@@ -391,11 +399,15 @@ static int ffa_domain_init(struct domain *d)
 
     if ( !ffa_fw_version )
         return -ENODEV;
-     /*
-      * We can't use that last possible domain ID or ffa_get_vm_id() would
-      * cause an overflow.
-      */
-    if ( d->domain_id >= UINT16_MAX)
+    /*
+     * We are using the domain_id + 1 as the FF-A ID for VMs as FF-A ID 0 is
+     * reserved for the hypervisor and we only support secure endpoints using
+     * FF-A IDs with BIT 15 set to 1 so make sure those are not used by Xen.
+     */
+    BUILD_BUG_ON(DOMID_FIRST_RESERVED >= UINT16_MAX);
+    BUILD_BUG_ON((DOMID_MASK & BIT(15, U)) != 0);
+
+    if ( d->domain_id >= DOMID_FIRST_RESERVED )
         return -ERANGE;
 
     ctx = xzalloc(struct ffa_ctx);
diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_partinfo.c
index 75a073d090e0..3cf801523296 100644
--- a/xen/arch/arm/tee/ffa_partinfo.c
+++ b/xen/arch/arm/tee/ffa_partinfo.c
@@ -169,14 +169,26 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
 
     if ( ffa_sp_count > 0 )
     {
-        uint32_t n;
+        uint32_t n, real_num = ffa_sp_count;
         void *src_buf = ffa_rx;
 
         /* copy the secure partitions info */
-        for ( n = 0; n < ffa_sp_count; n++ )
+        for ( n = 0; n < real_num; n++ )
         {
-            memcpy(dst_buf, src_buf, dst_size);
-            dst_buf += dst_size;
+            struct ffa_partition_info_1_1 *fpi = src_buf;
+
+            /* filter out SP not following bit 15 convention if any */
+            if ( FFA_ID_IS_SECURE(fpi->id) )
+            {
+                memcpy(dst_buf, src_buf, dst_size);
+                dst_buf += dst_size;
+            }
+            else
+            {
+                printk(XENLOG_INFO "ffa: sp id 0x%04x skipped, bit 15 is 0\n",
+                       fpi->id);
+                ffa_sp_count--;
+            }
             src_buf += src_size;
         }
     }
@@ -276,10 +288,25 @@ static bool init_subscribers(uint16_t count, uint32_t fpi_size)
     {
         fpi = ffa_rx + n * fpi_size;
 
-        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
-            subscr_vm_created_count++;
-        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
-            subscr_vm_destroyed_count++;
+        /*
+         * We need to have secure partitions using bit 15 set convention for
+         * secure partition IDs.
+         * Inform the user with a log and discard giving created or destroy
+         * event to those IDs.
+         */
+        if ( !FFA_ID_IS_SECURE(fpi->id) )
+        {
+            printk(XENLOG_ERR "ffa: Firmware is not using bit 15 convention for IDs !!\n"
+                              "ffa: Secure partition with id 0x%04x cannot be used\n",
+                              fpi->id);
+        }
+        else
+        {
+            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
+                subscr_vm_created_count++;
+            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
+                subscr_vm_destroyed_count++;
+        }
     }
 
     if ( subscr_vm_created_count )
@@ -299,10 +326,13 @@ static bool init_subscribers(uint16_t count, uint32_t fpi_size)
     {
         fpi = ffa_rx + n * fpi_size;
 
-        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
-            subscr_vm_created[c_pos++] = fpi->id;
-        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
-            subscr_vm_destroyed[d_pos++] = fpi->id;
+        if ( FFA_ID_IS_SECURE(fpi->id) )
+        {
+            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
+                subscr_vm_created[c_pos++] = fpi->id;
+            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
+                subscr_vm_destroyed[d_pos++] = fpi->id;
+        }
     }
 
     return true;
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index e5bc73f9039e..afe69b43dbef 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -108,6 +108,13 @@
  */
 #define FFA_CTX_TEARDOWN_DELAY          SECONDS(1)
 
+/*
+ * We rely on the convention suggested but not mandated by the FF-A
+ * specification that secure world endpoint identifiers have the bit 15
+ * set and normal world have it set to 0.
+ */
+#define FFA_ID_IS_SECURE(id)    ((id) & BIT(15, U))
+
 /* 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
diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
index efa5b67db8e1..29675f9ba3f7 100644
--- a/xen/arch/arm/tee/ffa_shm.c
+++ b/xen/arch/arm/tee/ffa_shm.c
@@ -469,6 +469,7 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs)
     int ret = FFA_RET_DENIED;
     uint32_t range_count;
     uint32_t region_offs;
+    uint16_t dst_id;
 
     if ( !ffa_fw_supports_fid(FFA_MEM_SHARE_64) )
     {
@@ -537,6 +538,15 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs)
         goto out_unlock;
 
     mem_access = ctx->tx + trans.mem_access_offs;
+
+    dst_id = ACCESS_ONCE(mem_access->access_perm.endpoint_id);
+    if ( !FFA_ID_IS_SECURE(dst_id) )
+    {
+        /* we do not support sharing with VMs */
+        ret = FFA_RET_NOT_SUPPORTED;
+        goto out_unlock;
+    }
+
     if ( ACCESS_ONCE(mem_access->access_perm.perm) != FFA_MEM_ACC_RW )
     {
         ret = FFA_RET_NOT_SUPPORTED;
@@ -567,7 +577,7 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs)
         goto out_unlock;
     }
     shm->sender_id = trans.sender_id;
-    shm->ep_id = ACCESS_ONCE(mem_access->access_perm.endpoint_id);
+    shm->ep_id = dst_id;
 
     /*
      * Check that the Composite memory region descriptor fits.
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819607.1233051 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSK-00025q-Tm; Wed, 16 Oct 2024 08:32:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819607.1233051; Wed, 16 Oct 2024 08:32: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 1t0zSK-00025e-OA; Wed, 16 Oct 2024 08:32:32 +0000
Received: by outflank-mailman (input) for mailman id 819607;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSI-0000Nz-RN
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:30 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 2e9cdc9f-8b99-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:32:30 +0200 (CEST)
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 57468FEC;
 Wed, 16 Oct 2024 01:32:59 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 22BD13F71E;
 Wed, 16 Oct 2024 01:32:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2e9cdc9f-8b99-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 07/10] xen/arm: ffa: Transmit RXTX buffers to the SPMC
Date: Wed, 16 Oct 2024 10:31:27 +0200
Message-ID: <f6037d0d077d793864ec10875dccf9e82a19e100.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When an RXTX buffer is mapped by a VM transmit it to the SPMC when it
supports RX_ACQUIRE.
As a consequence of that, we must acquire the RX buffer of a VM from the
SPMC when we want to use it:
- create a generic acquire and release function to get the rx buffer of
  a VM which gets it from the SPMC when supported
- rename the rx_acquire to hyp_rx_acquire to remove confusion
- rework the rx_lock to only lock access to rx_is_free and only allow
  usage of the rx buffer to one who managed to acquire it, thus removing
  the trylock and returning busy if rx_is_free is false

As part of this change move some structure definition to ffa_private
from ffa_shm as those are need for the MAP call with the SPMC.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- unmap VM rxtx buffer in SPMC on unmap call or on VM destroy
- rework the unmap call to the SPMC to properly pass the VM ID
---
 xen/arch/arm/tee/ffa.c          |   2 +-
 xen/arch/arm/tee/ffa_partinfo.c |  29 ++----
 xen/arch/arm/tee/ffa_private.h  |  22 ++++-
 xen/arch/arm/tee/ffa_rxtx.c     | 158 ++++++++++++++++++++++++++------
 xen/arch/arm/tee/ffa_shm.c      |  15 ---
 5 files changed, 161 insertions(+), 65 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index a292003ca9fe..40ea5398fa21 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -347,7 +347,7 @@ static bool ffa_handle_call(struct cpu_user_regs *regs)
         ffa_handle_partition_info_get(regs);
         return true;
     case FFA_RX_RELEASE:
-        e = ffa_handle_rx_release();
+        e = ffa_rx_release(d);
         break;
     case FFA_MSG_SEND_DIRECT_REQ_32:
     case FFA_MSG_SEND_DIRECT_REQ_64:
diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_partinfo.c
index 3cf801523296..fde187dba4e5 100644
--- a/xen/arch/arm/tee/ffa_partinfo.c
+++ b/xen/arch/arm/tee/ffa_partinfo.c
@@ -121,11 +121,9 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
         goto out;
     }
 
-    if ( !spin_trylock(&ctx->rx_lock) )
-    {
-        ret = FFA_RET_BUSY;
+    ret = ffa_rx_acquire(d);
+    if ( ret != FFA_RET_OK )
         goto out;
-    }
 
     dst_buf = ctx->rx;
 
@@ -135,22 +133,16 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
         goto out_rx_release;
     }
 
-    if ( !ctx->page_count || !ctx->rx_is_free )
-    {
-        ret = FFA_RET_DENIED;
-        goto out_rx_release;
-    }
-
     spin_lock(&ffa_rx_buffer_lock);
 
     ret = ffa_partition_info_get(uuid, 0, &ffa_sp_count, &src_size);
 
     if ( ret )
-        goto out_rx_buf_unlock;
+        goto out_rx_hyp_unlock;
 
     /*
      * ffa_partition_info_get() succeeded so we now own the RX buffer we
-     * share with the SPMC. We must give it back using ffa_rx_release()
+     * share with the SPMC. We must give it back using ffa_hyp_rx_release()
      * once we've copied the content.
      */
 
@@ -193,15 +185,13 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
         }
     }
 
-    ctx->rx_is_free = false;
-
 out_rx_hyp_release:
-    ffa_rx_release();
-out_rx_buf_unlock:
+    ffa_hyp_rx_release();
+out_rx_hyp_unlock:
     spin_unlock(&ffa_rx_buffer_lock);
 out_rx_release:
-    spin_unlock(&ctx->rx_lock);
-
+    if ( ret != FFA_RET_OK )
+        ffa_rx_release(d);
 out:
     if ( ret )
         ffa_set_regs_error(regs, ret);
@@ -368,8 +358,7 @@ bool ffa_partinfo_init(void)
     ret = init_subscribers(count, fpi_size);
 
 out:
-    ffa_rx_release();
-
+    ffa_hyp_rx_release();
     return ret;
 }
 
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index afe69b43dbef..9adfe687c3c9 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -265,6 +265,21 @@
 #define FFA_ABI_BITNUM(id)    ((FFA_ABI_ID(id) - FFA_ABI_MIN) << 1 | \
                                FFA_ABI_CONV(id))
 
+/* Constituent memory region descriptor */
+struct ffa_address_range {
+    uint64_t address;
+    uint32_t page_count;
+    uint32_t reserved;
+};
+
+/* Composite memory region descriptor */
+struct ffa_mem_region {
+    uint32_t total_page_count;
+    uint32_t address_range_count;
+    uint64_t reserved;
+    struct ffa_address_range address_range_array[];
+};
+
 struct ffa_ctx_notif {
     bool enabled;
 
@@ -292,7 +307,7 @@ struct ffa_ctx {
     struct ffa_ctx_notif notif;
     /*
      * tx_lock is used to serialize access to tx
-     * rx_lock is used to serialize access to rx
+     * rx_lock is used to serialize access to rx_is_free
      * lock is used for the rest in this struct
      */
     spinlock_t tx_lock;
@@ -331,7 +346,8 @@ void ffa_rxtx_domain_destroy(struct domain *d);
 uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
 			     register_t rx_addr, uint32_t page_count);
 uint32_t ffa_handle_rxtx_unmap(void);
-int32_t ffa_handle_rx_release(void);
+int32_t ffa_rx_acquire(struct domain *d);
+int32_t ffa_rx_release(struct domain *d);
 
 void ffa_notif_init(void);
 void ffa_notif_init_interrupt(void);
@@ -420,7 +436,7 @@ static inline int32_t ffa_simple_call(uint32_t fid, register_t a1,
     return ffa_get_ret_code(&resp);
 }
 
-static inline int32_t ffa_rx_release(void)
+static inline int32_t ffa_hyp_rx_release(void)
 {
     return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
 }
diff --git a/xen/arch/arm/tee/ffa_rxtx.c b/xen/arch/arm/tee/ffa_rxtx.c
index b6931c855779..a5d43e51f843 100644
--- a/xen/arch/arm/tee/ffa_rxtx.c
+++ b/xen/arch/arm/tee/ffa_rxtx.c
@@ -30,6 +30,17 @@ struct ffa_endpoint_rxtx_descriptor_1_1 {
     uint32_t tx_region_offs;
 };
 
+static int32_t ffa_rxtx_map(paddr_t tx_addr, paddr_t rx_addr,
+                            uint32_t page_count)
+{
+    return ffa_simple_call(FFA_RXTX_MAP_64, tx_addr, rx_addr, page_count, 0);
+}
+
+static int32_t ffa_rxtx_unmap(uint16_t id)
+{
+    return ffa_simple_call(FFA_RXTX_UNMAP, ((uint64_t)id)<<16, 0, 0, 0);
+}
+
 uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
 			     register_t rx_addr, uint32_t page_count)
 {
@@ -42,6 +53,9 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
     void *rx;
     void *tx;
 
+    /* The code is considering that we only get one page for now */
+    BUILD_BUG_ON(FFA_MAX_RXTX_PAGE_COUNT != 1);
+
     if ( !smccc_is_conv_64(fid) )
     {
         /*
@@ -87,6 +101,65 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
     if ( !rx )
         goto err_unmap_tx;
 
+    /*
+     * Transmit the RX/TX buffer information to the SPM if acquire is supported
+     * as the spec says that if not there is not need to acquire/release/map
+     * rxtx buffers from the SPMC
+     */
+    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
+    {
+        struct ffa_endpoint_rxtx_descriptor_1_1 *rxtx_desc;
+        struct ffa_mem_region *mem_reg;
+
+        /* All must fit in our TX buffer */
+        BUILD_BUG_ON((sizeof(*rxtx_desc) + sizeof(*mem_reg)*2 +
+                      sizeof(struct ffa_address_range)*2) > FFA_PAGE_SIZE);
+
+        spin_lock(&ffa_tx_buffer_lock);
+        rxtx_desc = ffa_tx;
+
+        /*
+         * We have only one page for each so we pack everything:
+         * - rx region descriptor
+         * - rx region range
+         * - tx region descriptor
+         * - tx region range
+         */
+        rxtx_desc->sender_id = ffa_get_vm_id(d);
+        rxtx_desc->reserved = 0;
+        rxtx_desc->rx_region_offs = sizeof(*rxtx_desc);
+        rxtx_desc->tx_region_offs = sizeof(*rxtx_desc) +
+                                    offsetof(struct ffa_mem_region,
+                                             address_range_array[1]);
+
+        /* rx buffer */
+        mem_reg = ffa_tx + sizeof(*rxtx_desc);
+        mem_reg->total_page_count = 1;
+        mem_reg->address_range_count = 1;
+        mem_reg->reserved = 0;
+
+        mem_reg->address_range_array[0].address = page_to_maddr(rx_pg);
+        mem_reg->address_range_array[0].page_count = 1;
+        mem_reg->address_range_array[0].reserved = 0;
+
+        /* tx buffer */
+        mem_reg = ffa_tx + rxtx_desc->tx_region_offs;
+        mem_reg->total_page_count = 1;
+        mem_reg->address_range_count = 1;
+        mem_reg->reserved = 0;
+
+        mem_reg->address_range_array[0].address = page_to_maddr(tx_pg);
+        mem_reg->address_range_array[0].page_count = 1;
+        mem_reg->address_range_array[0].reserved = 0;
+
+        ret = ffa_rxtx_map(0, 0, 1);
+
+        spin_unlock(&ffa_tx_buffer_lock);
+
+        if ( ret != FFA_RET_OK )
+            goto err_unmap_rx;
+    }
+
     ctx->rx = rx;
     ctx->tx = tx;
     ctx->rx_pg = rx_pg;
@@ -95,6 +168,8 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
     ctx->rx_is_free = true;
     return FFA_RET_OK;
 
+err_unmap_rx:
+    unmap_domain_page_global(rx);
 err_unmap_tx:
     unmap_domain_page_global(tx);
 err_put_rx_pg:
@@ -105,8 +180,22 @@ err_put_tx_pg:
     return ret;
 }
 
-static void rxtx_unmap(struct ffa_ctx *ctx)
+static uint32_t  rxtx_unmap(struct domain *d)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
+
+    if ( !ctx->page_count )
+        return FFA_RET_INVALID_PARAMETERS;
+
+    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
+    {
+        uint32_t ret;
+
+        ret = ffa_rxtx_unmap(ffa_get_vm_id(d));
+        if ( ret != FFA_RET_OK )
+            return ret;
+    }
+
     unmap_domain_page_global(ctx->rx);
     unmap_domain_page_global(ctx->tx);
     put_page(ctx->rx_pg);
@@ -117,32 +206,63 @@ static void rxtx_unmap(struct ffa_ctx *ctx)
     ctx->tx_pg = NULL;
     ctx->page_count = 0;
     ctx->rx_is_free = false;
+
+    return FFA_RET_OK;
 }
 
 uint32_t ffa_handle_rxtx_unmap(void)
 {
-    struct domain *d = current->domain;
+    return rxtx_unmap(current->domain);
+}
+
+int32_t ffa_rx_acquire(struct domain *d)
+{
+    int32_t ret = FFA_RET_OK;
     struct ffa_ctx *ctx = d->arch.tee;
 
-    if ( !ctx->rx )
-        return FFA_RET_INVALID_PARAMETERS;
+    spin_lock(&ctx->rx_lock);
 
-    rxtx_unmap(ctx);
+    if ( !ctx->page_count )
+    {
+        ret = FFA_RET_DENIED;
+        goto out;
+    }
 
-    return FFA_RET_OK;
+    if ( !ctx->rx_is_free )
+    {
+        ret = FFA_RET_BUSY;
+        goto out;
+    }
+
+    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
+    {
+        ret = ffa_simple_call(FFA_RX_ACQUIRE, ffa_get_vm_id(d), 0, 0, 0);
+        if ( ret != FFA_RET_OK )
+            goto out;
+    }
+    ctx->rx_is_free = false;
+out:
+    spin_unlock(&ctx->rx_lock);
+
+    return ret;
 }
 
-int32_t ffa_handle_rx_release(void)
+int32_t ffa_rx_release(struct domain *d)
 {
     int32_t ret = FFA_RET_DENIED;
-    struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
 
-    if ( !spin_trylock(&ctx->rx_lock) )
-        return FFA_RET_BUSY;
+    spin_lock(&ctx->rx_lock);
 
     if ( !ctx->page_count || ctx->rx_is_free )
         goto out;
+
+    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
+    {
+        ret = ffa_simple_call(FFA_RX_RELEASE, ffa_get_vm_id(d), 0, 0, 0);
+        if ( ret != FFA_RET_OK )
+            goto out;
+    }
     ret = FFA_RET_OK;
     ctx->rx_is_free = true;
 out:
@@ -151,23 +271,9 @@ out:
     return ret;
 }
 
-static int32_t ffa_rxtx_map(paddr_t tx_addr, paddr_t rx_addr,
-                            uint32_t page_count)
-{
-    return ffa_simple_call(FFA_RXTX_MAP_64, tx_addr, rx_addr, page_count, 0);
-}
-
-static int32_t ffa_rxtx_unmap(void)
-{
-    return ffa_simple_call(FFA_RXTX_UNMAP, 0, 0, 0, 0);
-}
-
 void ffa_rxtx_domain_destroy(struct domain *d)
 {
-    struct ffa_ctx *ctx = d->arch.tee;
-
-    if ( ctx->rx )
-        rxtx_unmap(ctx);
+    rxtx_unmap(d);
 }
 
 void ffa_rxtx_destroy(void)
@@ -186,7 +292,7 @@ void ffa_rxtx_destroy(void)
     }
 
     if ( need_unmap )
-        ffa_rxtx_unmap();
+        ffa_rxtx_unmap(0);
 }
 
 bool ffa_rxtx_init(void)
diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
index 29675f9ba3f7..d628c1b70609 100644
--- a/xen/arch/arm/tee/ffa_shm.c
+++ b/xen/arch/arm/tee/ffa_shm.c
@@ -16,21 +16,6 @@
 
 #include "ffa_private.h"
 
-/* Constituent memory region descriptor */
-struct ffa_address_range {
-    uint64_t address;
-    uint32_t page_count;
-    uint32_t reserved;
-};
-
-/* Composite memory region descriptor */
-struct ffa_mem_region {
-    uint32_t total_page_count;
-    uint32_t address_range_count;
-    uint64_t reserved;
-    struct ffa_address_range address_range_array[];
-};
-
 /* Memory access permissions descriptor */
 struct ffa_mem_access_perm {
     uint16_t endpoint_id;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819608.1233060 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSM-0002Mr-7r; Wed, 16 Oct 2024 08:32:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819608.1233060; Wed, 16 Oct 2024 08: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 1t0zSM-0002MA-2o; Wed, 16 Oct 2024 08:32:34 +0000
Received: by outflank-mailman (input) for mailman id 819608;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSK-0000Nz-J4
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:32 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 2fa7210e-8b99-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:32:32 +0200 (CEST)
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 11D0C1007;
 Wed, 16 Oct 2024 01:33:01 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 2C06B3F71E;
 Wed, 16 Oct 2024 01:32:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2fa7210e-8b99-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 08/10] xen/arm: ffa: move message function into ffa_msg.c
Date: Wed, 16 Oct 2024 10:31:28 +0200
Message-ID: <480245789e126e5ee0d6d21b5946cdf2efb873ea.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Move the direct message handling function in its own source file and
rename it to have a ffa_ prefix.
This is a preparation to add support for indirect messages which will
go into this newly created source file.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- rebase
---
 xen/arch/arm/tee/Makefile      |  1 +
 xen/arch/arm/tee/ffa.c         | 69 +----------------------------
 xen/arch/arm/tee/ffa_msg.c     | 80 ++++++++++++++++++++++++++++++++++
 xen/arch/arm/tee/ffa_private.h |  2 +
 4 files changed, 84 insertions(+), 68 deletions(-)
 create mode 100644 xen/arch/arm/tee/ffa_msg.c

diff --git a/xen/arch/arm/tee/Makefile b/xen/arch/arm/tee/Makefile
index 7c0f46f7f446..0848c833fec3 100644
--- a/xen/arch/arm/tee/Makefile
+++ b/xen/arch/arm/tee/Makefile
@@ -3,5 +3,6 @@ obj-$(CONFIG_FFA) += ffa_shm.o
 obj-$(CONFIG_FFA) += ffa_partinfo.o
 obj-$(CONFIG_FFA) += ffa_rxtx.o
 obj-$(CONFIG_FFA) += ffa_notif.o
+obj-$(CONFIG_FFA) += ffa_msg.o
 obj-y += tee.o
 obj-$(CONFIG_OPTEE) += optee.o
diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 40ea5398fa21..72826b49d2aa 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -167,73 +167,6 @@ static void handle_version(struct cpu_user_regs *regs)
     ffa_set_regs(regs, FFA_MY_VERSION, 0, 0, 0, 0, 0, 0, 0);
 }
 
-static void handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid)
-{
-    struct arm_smccc_1_2_regs arg = { .a0 = fid, };
-    struct arm_smccc_1_2_regs resp = { };
-    struct domain *d = current->domain;
-    uint32_t src_dst;
-    uint64_t mask;
-
-    if ( smccc_is_conv_64(fid) )
-        mask = GENMASK_ULL(63, 0);
-    else
-        mask = GENMASK_ULL(31, 0);
-
-    if ( !ffa_fw_supports_fid(fid) )
-    {
-        resp.a0 = FFA_ERROR;
-        resp.a2 = FFA_RET_NOT_SUPPORTED;
-        goto out;
-    }
-
-    src_dst = get_user_reg(regs, 1);
-    if ( (src_dst >> 16) != ffa_get_vm_id(d) )
-    {
-        resp.a0 = FFA_ERROR;
-        resp.a2 = FFA_RET_INVALID_PARAMETERS;
-        goto out;
-    }
-
-    /* we do not support direct messages to VMs */
-    if ( !FFA_ID_IS_SECURE(src_dst & GENMASK(15,0)) )
-    {
-        resp.a0 = FFA_ERROR;
-        resp.a2 = FFA_RET_NOT_SUPPORTED;
-        goto out;
-    }
-
-    arg.a1 = src_dst;
-    arg.a2 = get_user_reg(regs, 2) & mask;
-    arg.a3 = get_user_reg(regs, 3) & mask;
-    arg.a4 = get_user_reg(regs, 4) & mask;
-    arg.a5 = get_user_reg(regs, 5) & mask;
-    arg.a6 = get_user_reg(regs, 6) & mask;
-    arg.a7 = get_user_reg(regs, 7) & mask;
-
-    arm_smccc_1_2_smc(&arg, &resp);
-    switch ( resp.a0 )
-    {
-    case FFA_ERROR:
-    case FFA_SUCCESS_32:
-    case FFA_SUCCESS_64:
-    case FFA_MSG_SEND_DIRECT_RESP_32:
-    case FFA_MSG_SEND_DIRECT_RESP_64:
-        break;
-    default:
-        /* Bad fid, report back to the caller. */
-        memset(&resp, 0, sizeof(resp));
-        resp.a0 = FFA_ERROR;
-        resp.a1 = src_dst;
-        resp.a2 = FFA_RET_ABORTED;
-    }
-
-out:
-    ffa_set_regs(regs, resp.a0, resp.a1 & mask, resp.a2 & mask, resp.a3 & mask,
-                 resp.a4 & mask, resp.a5 & mask, resp.a6 & mask,
-                 resp.a7 & mask);
-}
-
 static void handle_features(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
@@ -351,7 +284,7 @@ static bool ffa_handle_call(struct cpu_user_regs *regs)
         break;
     case FFA_MSG_SEND_DIRECT_REQ_32:
     case FFA_MSG_SEND_DIRECT_REQ_64:
-        handle_msg_send_direct_req(regs, fid);
+        ffa_handle_msg_send_direct_req(regs, fid);
         return true;
     case FFA_MEM_SHARE_32:
     case FFA_MEM_SHARE_64:
diff --git a/xen/arch/arm/tee/ffa_msg.c b/xen/arch/arm/tee/ffa_msg.c
new file mode 100644
index 000000000000..ae263e54890e
--- /dev/null
+++ b/xen/arch/arm/tee/ffa_msg.c
@@ -0,0 +1,80 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Copyright (C) 2024  Linaro Limited
+ */
+
+#include <xen/const.h>
+#include <xen/sizes.h>
+#include <xen/types.h>
+
+#include <asm/smccc.h>
+#include <asm/regs.h>
+
+#include "ffa_private.h"
+
+void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid)
+{
+    struct arm_smccc_1_2_regs arg = { .a0 = fid, };
+    struct arm_smccc_1_2_regs resp = { };
+    struct domain *d = current->domain;
+    uint32_t src_dst;
+    uint64_t mask;
+
+    if ( smccc_is_conv_64(fid) )
+        mask = GENMASK_ULL(63, 0);
+    else
+        mask = GENMASK_ULL(31, 0);
+
+    if ( !ffa_fw_supports_fid(fid) )
+    {
+        resp.a0 = FFA_ERROR;
+        resp.a2 = FFA_RET_NOT_SUPPORTED;
+        goto out;
+    }
+
+    src_dst = get_user_reg(regs, 1);
+    if ( (src_dst >> 16) != ffa_get_vm_id(d) )
+    {
+        resp.a0 = FFA_ERROR;
+        resp.a2 = FFA_RET_INVALID_PARAMETERS;
+        goto out;
+    }
+
+    /* we do not support direct messages to VMs */
+    if ( !FFA_ID_IS_SECURE(src_dst & GENMASK(15,0)) )
+    {
+        resp.a0 = FFA_ERROR;
+        resp.a2 = FFA_RET_NOT_SUPPORTED;
+        goto out;
+    }
+
+    arg.a1 = src_dst;
+    arg.a2 = get_user_reg(regs, 2) & mask;
+    arg.a3 = get_user_reg(regs, 3) & mask;
+    arg.a4 = get_user_reg(regs, 4) & mask;
+    arg.a5 = get_user_reg(regs, 5) & mask;
+    arg.a6 = get_user_reg(regs, 6) & mask;
+    arg.a7 = get_user_reg(regs, 7) & mask;
+
+    arm_smccc_1_2_smc(&arg, &resp);
+    switch ( resp.a0 )
+    {
+    case FFA_ERROR:
+    case FFA_SUCCESS_32:
+    case FFA_SUCCESS_64:
+    case FFA_MSG_SEND_DIRECT_RESP_32:
+    case FFA_MSG_SEND_DIRECT_RESP_64:
+        break;
+    default:
+        /* Bad fid, report back to the caller. */
+        memset(&resp, 0, sizeof(resp));
+        resp.a0 = FFA_ERROR;
+        resp.a1 = src_dst;
+        resp.a2 = FFA_RET_ABORTED;
+    }
+
+out:
+    ffa_set_regs(regs, resp.a0, resp.a1 & mask, resp.a2 & mask, resp.a3 & mask,
+                 resp.a4 & mask, resp.a5 & mask, resp.a6 & mask,
+                 resp.a7 & mask);
+}
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 9adfe687c3c9..02162e0ee4c7 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -360,6 +360,8 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs);
 void ffa_handle_notification_get(struct cpu_user_regs *regs);
 int ffa_handle_notification_set(struct cpu_user_regs *regs);
 
+void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid);
+
 static inline uint16_t ffa_get_vm_id(const struct domain *d)
 {
     /* +1 since 0 is reserved for the hypervisor in FF-A */
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819610.1233070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSN-0002jF-MC; Wed, 16 Oct 2024 08:32:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819610.1233070; Wed, 16 Oct 2024 08:32: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 1t0zSN-0002ib-Ex; Wed, 16 Oct 2024 08:32:35 +0000
Received: by outflank-mailman (input) for mailman id 819610;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSM-0000Nz-9n
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:34 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 30a74f6c-8b99-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:32:33 +0200 (CEST)
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 B6B5BFEC;
 Wed, 16 Oct 2024 01:33:02 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id BD68E3F71E;
 Wed, 16 Oct 2024 01:32:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 30a74f6c-8b99-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 09/10] xen/arm: ffa: Remove per VM notif_enabled
Date: Wed, 16 Oct 2024 10:31:29 +0200
Message-ID: <b23ad93b876267fb48a5a398e394e60fdf52d33d.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Remove the per VM flag to store if notifications are enabled or not as
the only case where they are not, if notifications are enabled globally,
will make the VM creation fail.
Also use the opportunity to always give the notifications interrupts IDs
to VM. If the firmware does not support notifications, there won't be
any generated and setting one will give back a NOT_SUPPORTED.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- rebase
---
 xen/arch/arm/tee/ffa.c         | 17 +++--------------
 xen/arch/arm/tee/ffa_notif.c   | 10 +---------
 xen/arch/arm/tee/ffa_private.h |  2 --
 3 files changed, 4 insertions(+), 25 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 72826b49d2aa..3a9525aa4598 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -169,8 +169,6 @@ static void handle_version(struct cpu_user_regs *regs)
 
 static void handle_features(struct cpu_user_regs *regs)
 {
-    struct domain *d = current->domain;
-    struct ffa_ctx *ctx = d->arch.tee;
     uint32_t a1 = get_user_reg(regs, 1);
     unsigned int n;
 
@@ -218,16 +216,10 @@ static void handle_features(struct cpu_user_regs *regs)
         ffa_set_regs_success(regs, 0, 0);
         break;
     case FFA_FEATURE_NOTIF_PEND_INTR:
-        if ( ctx->notif.enabled )
-            ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
-        else
-            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
+        ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
         break;
     case FFA_FEATURE_SCHEDULE_RECV_INTR:
-        if ( ctx->notif.enabled )
-            ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
-        else
-            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
+        ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
         break;
 
     case FFA_NOTIFICATION_BIND:
@@ -236,10 +228,7 @@ static void handle_features(struct cpu_user_regs *regs)
     case FFA_NOTIFICATION_SET:
     case FFA_NOTIFICATION_INFO_GET_32:
     case FFA_NOTIFICATION_INFO_GET_64:
-        if ( ctx->notif.enabled )
-            ffa_set_regs_success(regs, 0, 0);
-        else
-            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
+        ffa_set_regs_success(regs, 0, 0);
         break;
     default:
         ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 4b3e46318f4b..3c6418e62e2b 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -405,7 +405,6 @@ void ffa_notif_init(void)
 
 int ffa_notif_domain_init(struct domain *d)
 {
-    struct ffa_ctx *ctx = d->arch.tee;
     int32_t res;
 
     if ( !notif_enabled )
@@ -415,18 +414,11 @@ int ffa_notif_domain_init(struct domain *d)
     if ( res )
         return -ENOMEM;
 
-    ctx->notif.enabled = true;
-
     return 0;
 }
 
 void ffa_notif_domain_destroy(struct domain *d)
 {
-    struct ffa_ctx *ctx = d->arch.tee;
-
-    if ( ctx->notif.enabled )
-    {
+    if ( notif_enabled )
         ffa_notification_bitmap_destroy(ffa_get_vm_id(d));
-        ctx->notif.enabled = false;
-    }
 }
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 02162e0ee4c7..973ee55be09b 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -281,8 +281,6 @@ struct ffa_mem_region {
 };
 
 struct ffa_ctx_notif {
-    bool enabled;
-
     /*
      * True if domain is reported by FFA_NOTIFICATION_INFO_GET to have
      * pending global notifications.
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:32:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:32:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819613.1233081 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zSR-0003Ib-3X; Wed, 16 Oct 2024 08:32:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819613.1233081; Wed, 16 Oct 2024 08:32: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 1t0zSQ-0003IL-Rt; Wed, 16 Oct 2024 08:32:38 +0000
Received: by outflank-mailman (input) for mailman id 819613;
 Wed, 16 Oct 2024 08:32: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t0zSP-00006U-1I
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:32:37 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 31a22474-8b99-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 10:32:35 +0200 (CEST)
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 55CF41007;
 Wed, 16 Oct 2024 01:33:04 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7006F3F71E;
 Wed, 16 Oct 2024 01:32:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 31a22474-8b99-11ef-99a3-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [PATCH v2 10/10] xen/arm: ffa: Add indirect message support
Date: Wed, 16 Oct 2024 10:31:30 +0200
Message-ID: <9464941b06e82763ebe79e3f2adb4ca2497cf298.1729066788.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729066788.git.bertrand.marquis@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add support for FFA_MSG_SEND2 to send indirect messages from a VM to a
secure partition.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes in v2:
- rebase
---
 xen/arch/arm/tee/ffa.c         |  5 ++++
 xen/arch/arm/tee/ffa_msg.c     | 49 ++++++++++++++++++++++++++++++++++
 xen/arch/arm/tee/ffa_private.h |  1 +
 3 files changed, 55 insertions(+)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 3a9525aa4598..21d41b452dc9 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -101,6 +101,7 @@ static const struct ffa_fw_abi ffa_fw_abi_needed[] = {
     FW_ABI(FFA_MEM_RECLAIM),
     FW_ABI(FFA_MSG_SEND_DIRECT_REQ_32),
     FW_ABI(FFA_MSG_SEND_DIRECT_REQ_64),
+    FW_ABI(FFA_MSG_SEND2),
 };
 
 /*
@@ -195,6 +196,7 @@ static void handle_features(struct cpu_user_regs *regs)
     case FFA_PARTITION_INFO_GET:
     case FFA_MSG_SEND_DIRECT_REQ_32:
     case FFA_MSG_SEND_DIRECT_REQ_64:
+    case FFA_MSG_SEND2:
         ffa_set_regs_success(regs, 0, 0);
         break;
     case FFA_MEM_SHARE_64:
@@ -275,6 +277,9 @@ static bool ffa_handle_call(struct cpu_user_regs *regs)
     case FFA_MSG_SEND_DIRECT_REQ_64:
         ffa_handle_msg_send_direct_req(regs, fid);
         return true;
+    case FFA_MSG_SEND2:
+        e = ffa_handle_msg_send2(regs);
+        break;
     case FFA_MEM_SHARE_32:
     case FFA_MEM_SHARE_64:
         ffa_handle_mem_share(regs);
diff --git a/xen/arch/arm/tee/ffa_msg.c b/xen/arch/arm/tee/ffa_msg.c
index ae263e54890e..335f246ba657 100644
--- a/xen/arch/arm/tee/ffa_msg.c
+++ b/xen/arch/arm/tee/ffa_msg.c
@@ -12,6 +12,15 @@
 
 #include "ffa_private.h"
 
+/* Encoding of partition message in RX/TX buffer */
+struct ffa_part_msg_rxtx {
+    uint32_t flags;
+    uint32_t reserved;
+    uint32_t msg_offset;
+    uint32_t send_recv_id;
+    uint32_t msg_size;
+};
+
 void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid)
 {
     struct arm_smccc_1_2_regs arg = { .a0 = fid, };
@@ -78,3 +87,43 @@ out:
                  resp.a4 & mask, resp.a5 & mask, resp.a6 & mask,
                  resp.a7 & mask);
 }
+
+int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs)
+{
+    struct domain *src_d = current->domain;
+    struct ffa_ctx *src_ctx = src_d->arch.tee;
+    const struct ffa_part_msg_rxtx *src_msg;
+    uint16_t dst_id, src_id;
+    int32_t ret;
+
+    if ( !ffa_fw_supports_fid(FFA_MSG_SEND2) )
+        return FFA_RET_NOT_SUPPORTED;
+
+    if ( !spin_trylock(&src_ctx->tx_lock) )
+        return FFA_RET_BUSY;
+
+    src_msg = src_ctx->tx;
+    src_id = src_msg->send_recv_id >> 16;
+    dst_id = src_msg->send_recv_id & GENMASK(15,0);
+
+    if ( src_id != ffa_get_vm_id(src_d) || !FFA_ID_IS_SECURE(dst_id) )
+    {
+        ret = FFA_RET_INVALID_PARAMETERS;
+        goto out_unlock_tx;
+    }
+
+    /* check source message fits in buffer */
+    if ( src_ctx->page_count * FFA_PAGE_SIZE <
+         src_msg->msg_offset + src_msg->msg_size ||
+         src_msg->msg_offset < sizeof(struct ffa_part_msg_rxtx) )
+    {
+        ret = FFA_RET_INVALID_PARAMETERS;
+        goto out_unlock_tx;
+    }
+
+    ret = ffa_simple_call(FFA_MSG_SEND2, ((uint32_t)src_id) << 16, 0, 0, 0);
+
+out_unlock_tx:
+    spin_unlock(&src_ctx->tx_lock);
+    return ret;
+}
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 973ee55be09b..d441c0ca5598 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -359,6 +359,7 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs);
 int ffa_handle_notification_set(struct cpu_user_regs *regs);
 
 void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid);
+int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs);
 
 static inline uint16_t ffa_get_vm_id(const struct domain *d)
 {
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:33:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:33:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819634.1233089 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zTX-0005mx-Ln; Wed, 16 Oct 2024 08:33:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819634.1233089; Wed, 16 Oct 2024 08: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 1t0zTX-0005mq-JH; Wed, 16 Oct 2024 08:33:47 +0000
Received: by outflank-mailman (input) for mailman id 819634;
 Wed, 16 Oct 2024 08: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t0zTW-0005mc-MJ
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:33:46 +0000
Received: from mail-oo1-xc2d.google.com (mail-oo1-xc2d.google.com
 [2607:f8b0:4864:20::c2d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5a9ad453-8b99-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 10:33:44 +0200 (CEST)
Received: by mail-oo1-xc2d.google.com with SMTP id
 006d021491bc7-5e5b5715607so361317eaf.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 01:33:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5a9ad453-8b99-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729067623; x=1729672423; 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=azditVijaAgaL//+6f2JjVPbZEUHT+OesQroxv5VlzM=;
        b=Lkgqc6O50oRWjHbHQ925A1uMslFcVGIRE976yOEWUIrNJHa2esqa60ueQneB9WSp7t
         FA86K20QL+BRUWuA7Vj8fUzL4OYAnBGpv0XGsshz5sdowCJH+aAGbB1jaxgyHW3DHWUW
         eIeuWgBlsJZoYUZFPbgE+ZtPP84Ja1PhJAsdY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729067623; x=1729672423;
        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=azditVijaAgaL//+6f2JjVPbZEUHT+OesQroxv5VlzM=;
        b=lTGyyYb/IeG9p7+8+VJwbDEFs8kQfBH6pxvztFIxtOKa5GiJT1jKipfTCy/DvXR4LP
         QMBks2faMU/LTkroZhPEO1ivc2LAXoRziNksXyUgsKSBpCxyHzFx6STeOZYvIczp8M/1
         yOAKDgvmLtBZrM5qYm+KAQl4679Jaes2kr3mFRjo+aBPc1FQH1GdW/2NSLQACrmjM6Tn
         M0LFjFwnNi4fruIERSfoLkDVP6pdWofrQDi8mquRI46rXy9Y4IQIARxiOmYym0ceH/px
         MuFElUO4Z35uN+OdwEbgduUbardYpsk1IhUzoe9HzRljArHHXbWkCJQwt/WzxY/JXzn1
         PdAg==
X-Gm-Message-State: AOJu0YwUMJJ6QFLIs5UmvQosXYZlhlP8J6Xdj2CQhjzIqj/9SUTUbjYe
	x5yxGvM38ospSiSb17ZBBGsZ29CZLuw587iNChWrTnQ5w29g+fLnp1YfgA+ZOfnt/Op67xtVN5U
	t0zn6bXDLvWwzMrucQtu+O7xJ7RYNxqLfFk46SA==
X-Google-Smtp-Source: AGHT+IE0rwF/yJB13ZD52nhWRDEYzKIpGI++oh9e9MsksSMbeU5b7M4cxTlWCXVI5BxnavVDBaz/IY27R6xPOqMhdhs=
X-Received: by 2002:a05:6820:5104:b0:5eb:61b1:a74b with SMTP id
 006d021491bc7-5eb61b1a80fmr370382eaf.0.1729067623019; Wed, 16 Oct 2024
 01:33:43 -0700 (PDT)
MIME-Version: 1.0
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
 <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com> <Zw5zSURbpInM5oBY@l14>
In-Reply-To: <Zw5zSURbpInM5oBY@l14>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 16 Oct 2024 09:33:32 +0100
Message-ID: <CACHz=ZgN9qNygJWuWovpiU+MCGcJu9qaxaRT1VkkiHsYwbEN4A@mail.gmail.com>
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Anthony PERARD <anthony.perard@vates.tech>
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>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Oct 15, 2024 at 2:51=E2=80=AFPM Anthony PERARD
<anthony.perard@vates.tech> wrote:
>
> On Mon, Oct 14, 2024 at 05:32:26PM +0100, Frediano Ziglio wrote:
> > On Mon, Oct 14, 2024 at 4:31=E2=80=AFPM Anthony PERARD
> > <anthony.perard@vates.tech> wrote:
> > >
> > > On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
> > > > diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefil=
e
> > > > index 1199291d2b..23ad274c89 100644
> > > > --- a/xen/arch/x86/boot/Makefile
> > > > +++ b/xen/arch/x86/boot/Makefile
> > > > @@ -1,4 +1,5 @@
> > > >  obj-bin-y +=3D head.o
> > > > +obj-bin-y +=3D built_in_32.o
> > >
> > > I don't quite like that this new object name is "built_in_32.o",
> > > It's really closed to "built_in.*" which is used by Rules.mk to colle=
ct
> > > all objects in a subdirectory. I don't really have a better suggestio=
n at
> > > the moment.
> > >
> >
> > It was cbundle.o before, but people preferred built_in_32.o.
> > It's a collection of object files like built_in.o so it does not seem
> > so bad to me.
> > But seen other replies, some other people prefer "bundle".
>
> Yeah, I guess it's ok (built_in_32 that is; now that I gave a better
> review of the rest of the Makefile changes).
>

Renamed to built-in-32 for CODING_STYLE

> > > > @@ -9,9 +10,6 @@ targets   +=3D $(obj32)
> > > >
> > > >  obj32 :=3D $(addprefix $(obj)/,$(obj32))
> > > >
> > > > -$(obj)/head.o: AFLAGS-y +=3D -Wa$(comma)-I$(obj)
> > > > -$(obj)/head.o: $(obj32:.32.o=3D.bin)
> > > > -
> > > >  CFLAGS_x86_32 :=3D $(subst -m64,-m32 -march=3Di686,$(XEN_TREEWIDE_=
CFLAGS))
> > > >  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
> > > >  CFLAGS_x86_32 +=3D -Werror -fno-builtin -g0 -msoft-float -mregparm=
=3D3
> > > > @@ -25,14 +23,34 @@ $(obj32): XEN_CFLAGS :=3D $(CFLAGS_x86_32) -fpi=
c
> > > >  $(obj)/%.32.o: $(src)/%.c FORCE
> > > >       $(call if_changed_rule,cc_o_c)
> > > >
> > > > +orphan-handling-$(call ld-option,--orphan-handling=3Derror) :=3D -=
-orphan-handling=3Derror
> > > >  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) :=3D --no-war=
n-rwx-segments
> > > >  LDFLAGS_DIRECT +=3D $(LDFLAGS_DIRECT-y)
> > > >  LD32 :=3D $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
> > > >
> > > > -%.bin: %.lnk
> > > > -     $(OBJCOPY) -j .text -O binary $< $@
> > > > -
> > > > -%.lnk: %.32.o $(src)/build32.lds
> > > > -     $(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> > > > -
> > > > -clean-files :=3D *.lnk *.bin
> > > > +$(obj)/build32.final.lds: AFLAGS-y +=3D -DFINAL
> > > > +$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.=
lds.S FORCE
> > > > +     $(call if_changed_dep,cpp_lds_S)
>
> Could you add:
>
>     targets +=3D build32.final.lds build32.other.lds
>

Added

> otherwise, the if_changes macro doesn't work, and the target keeps been
> rebuilt. `make V=3D2` will tell you the same thing.
>
> > > > +# link all 32bit objects together
> > > > +$(obj)/built_in_32.tmp.o: $(obj32)
> > > > +     $(LD32) -r -o $@ $^
> > > > +
> > > > +$(obj)/built_in_32.%.bin: $(obj)/build32.%.lds $(obj)/built_in_32.=
tmp.o
> > > > +## link bundle with a given layout
> > >
> > > Could you put the comment aligned with the rest of the recipe? That w=
ay
> > > it won't visually separate the rule into several pieces. You can
> > > prefix it with @ so it doesn't show in build logs:
> > >
> > >         @# comments
> > >
> >
> > Yes, they look more or less the same but technically pretty different.
> > The "## XXX" is a comment for make command, the "\t@#comment" is a way
> > to tell make to not print the command before launching it so make will
> > launch a shell command "# comment".
> > Yes, indentation does not make it clear. Not that launching a shell to
> > execute a comment will take a long time. On the other hand, here that
> > comment is more for the rule than for the shell. Maybe something like
> >
> > target:
> >       command \
> >            # do something
> >
> > (personally I found it even more ugly)
>
> How about removing the comments? I mean the command line is
> self-explanatory here. Same thing about the objcopy comment.
> (Or a comment before the rule, when really needed)
>

Moved on top of the rule (slightly changed).

> > > > +     $(LD32) $(orphan-handling-y) -N -T $< -Map $(obj)/built_in_32=
.$(*F).map -o $(obj)/built_in_32.$(*F).o $(obj)/built_in_32.tmp.o
> > >
> > > I think this wants to be: -T $(filter %.lds,$^) -Map $(patsubst %.bin=
,%.map,$@) -o $(patsubst %.bin,%.o,$@) $(filter %.o,$^)
> > >
> > > :-(, maybe that's lots of $(patsubst,), not sure which is better betw=
een
> > > $(patsubst,) and using the stem $*.
> > >
> >
> > Not strong about stem or patsubst.
>
> Actually, I found a better suggestion (after reading the previous path
> which remind me about an existing feature that I don't really use), the
> use of Substitution References
> (https://www.gnu.org/software/make/manual/make.html#Substitution-Refs)
>
> This is a shorter version than patsubst, but works very well here, the
> recipe can look like this:
>     $(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=3Dmap) -o $(@:bin=
=3Do) $(filter %.o,$^)
>     $(OBJCOPY) -j .text -O binary $(@:bin=3Do) $@
>     rm -f $(@:bin=3Do)
>
> (It is likely fine to keep the reference to the lds script as $<,
> instead of using $(filter,).)
>

Done

> BTW, do we need the rules that generate the input of this rules
> (built_in_32.tmp.o that is), or can this one takes all 32bit objects as
> input?
>

Better not to do it In some conditions it can generate slightly
different results (like different object alignments) making the
algorithm fail.

> > The 2 filters seem good, they suggest lds for the script and objects
> > for the input, which makes sense.
>
> > > Also, if something tries to use built_in_32.tmp.bin, we have a rule t=
hat
> > > remove it's prerequisite.
> > >
> > > BTW, everything is kind of temporary in a build system, beside the fe=
w
> > > files that we want to install on a machine, so having a target named
> > > with "*tmp*" isn't great. But having a rule that create "*tmp*" file =
but
> > > remove them before the end of its recipe is fine (or those *tmp* aren=
't
> > > use outside of this recipe).
> > >
> >
> > Mumble... yes, I think the XX.tmp.o was a temporary internal rule file.
> > So we still don't agree on one name, and now we want to find also
> > another, tricky.
> > More or less if it can help, one is a 32 bit object file that bundle
> > together multiple 32 bits object files while the other is the
> > conversion of the 32 bits bundle file to 64 bits.
> > XXX_32.o and XXX_32as64.o ??
>
> We may not need the rule for it :-).
>

Not sure if we are asking a change and how.

> > > > +## extract binaries from object
> > > > +     $(OBJCOPY) -j .text -O binary $(obj)/built_in_32.$(*F).o $@
> > > > +     rm -f $(obj)/built_in_32.$(*F).o
> > > > +
> > > > +# generate final object file combining and checking above binaries
> > > > +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in=
_32.final.bin
> > >
> > > So, "other" isn't part of "final", I don't really know what those two
> > > things contains so naming wise I can't suggest anything useful.
>
> Instead of "other", is "control" (like in science experiment where you
> have a control group), or "offseted" (which seems to be how this second
> binary is constructed) would be better names for this *.bin? It seems
> the script take both input and play the game of the 7 differences, to
> find clues about the location of some symbols, right?.
>

I don't know the game and I think people not familiar with it won't
find new names more readable but less.
Not saying that current names are good, they just need to be located
at different addresses with some "magic" in the middle.

> > > But, is "built_in_32.S" really only depends on those two .bin? SHould=
n't
> > > it get regenerated if the script changes, or the .lds that --script
> > > option seems to use? What is the "--map" option, an input or output?
> >
> > Both map file and linker script are dependency of the bin files so no p=
roblems.
> > Yes, potentially you want to generate if the python script change.
> > Potentially also if Makefile, make, ld or any other command change,
> > but that possibly is kind of "we don't usually care".
>
> Actually, for the hypervisor, we usually care about changes which could
> lead to a different output. While changes of build toolchain aren't
> really track (even if there's a patch that have a small improvement
> toward it that was never committed), many other changes are been tracked
> and act upon. The macros $(if_changes*,) from Linux's Kbuild are a great
> help.
>
> If the build system doesn't regenerate targets when a developer try to
> debug some complex problem, it isn't going to help. We can easily have a
> situation where the developer adds printf earlier and earlier and
> earlier to try to find out where Xen crash, to find out later that the
> build system was working against them by not rebuilding the file that
> should be rebuilt. So if we can avoid some frustration and time lost,
> it's better :-).
>
> > > But I guess we can ignore the ".map" file because it's part of the
> > > ".bin".
> > >
> >
> > Yes, I suppose they are, although we can make it explicit both
> > generating them and using as dependencies.
>
> Having a rule that generate several targets is complicated to write in
> GNU Make 3.80, the rule is more likely to be called several time in
> parallel. So let's ignored the .map file, as it should only be used
> along side the .bin.
>
> > > Another thing that might be useful to do, is to use the "if_changed"
> > > make macro, that way if the command line of the script changes, make
> > > can remake the output. But maybe it's a bit complicated for this reci=
pe
> > > because it doesn't uses $< or $^.
> > >
> >
> > I usually simply add Makefile to the dependencies. It works too.
>
> Having "Makefile" as prerequisite is both too much and not enough. This
> lead to rebuild due to unrelated changes in the Makefile and if the
> command line change (like more command line option modified in a variable
> in a different Makefile or the environment) the target doesn't gets
> rebuilt.
>
> That's where $(if_changed,) helps.
>
> > > > +     $(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> > > > +             --script $(obj)/build32.final.lds \
> > > > +             --bin1 $(obj)/built_in_32.other.bin \
> > > > +             --bin2 $(obj)/built_in_32.final.bin \
> > > > +             --map $(obj)/built_in_32.final.map \
> > > > +             --exports cmdline_parse_early,reloc \
> > > > +             --output $@
>
> I can think of one example where $(if_changed,) is going to really help,
> by looking at this command line:
>     One does update the .c file to add a function that they like to
>     export, run `make`, realize they forgot to update the makefile so
>     update it, run `make`, it's still doesn't work...
>     Maybe run `make clean; make`, or something else...
>
> So, could you use $(if_changed,) ?
> Probably:
> quiet_cmd_combine =3D GEN     $@
> cmd_combine =3D $(PYTHON) ...
> $(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.fin=
al.bin FORCE
>     $(call if_changes,combine)
> targets +=3D built_in_32.S
>
> GEN, for generate, or it could be PY instead, because python script can
> be slow to compile which could explain why the build system output is
> making a pause on this target (on slow machines that is). Or it could be
> COMBINE, or something else, but it's not really necessary to explain,
> the target name is often enough to figure out what's happening, when
> needed.
>

It just looks more complicated to me. It happened to me, if you don't
use the exported symbol no reason to have it exported from the object,
if you use it the link will fail and it won't take long to fix it.

> > > > +
> > > > +clean-files :=3D built_in_32.*.bin built_in_32.*.map build32.*.lds
> > > > diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/buil=
d32.lds.S
> > > > similarity index 70%
> > > > rename from xen/arch/x86/boot/build32.lds
> > > > rename to xen/arch/x86/boot/build32.lds.S
> > > > index 56edaa727b..50c167aef0 100644
> > > > --- a/xen/arch/x86/boot/build32.lds
> > > > +++ b/xen/arch/x86/boot/build32.lds.S
> > > > @@ -15,22 +15,47 @@
> > > >   * with this program.  If not, see <http://www.gnu.org/licenses/>.
> > > >   */
> > > >
> > > > -ENTRY(_start)
> > > > +#ifdef FINAL
> > > > +# define GAP 0
> > > > +# define MULT 0
> > > > +# define TEXT_START
> > > > +#else
> > > > +# define GAP 0x010200
> > > > +# define MULT 1
> > > > +# define TEXT_START 0x408020
>
> So I've read the python script a bit, and notice that the two values GAP
> and TEXT_START are also written verbatim in it, without comment, so
> looks like magic number there. Could you at least put a comment in the
> python script? (Something thing that could be better were if the
> Makefile itself provided those number to both the lds script and the
> python script, but I don't know if it's possible.)
>

It can be done I suppose:
- 2 macros in Makefile
- pass values into linker scripts using variables
- 2 options for Python script
- pass values to Python script

> > > > +#endif
> > > > +# define DECLARE_IMPORT(name) name =3D . + (__LINE__ * MULT)
> > >
> > > Is  ^ this a stray space?
> > >
> >
> > Yes, a single ASCII character 32. Surely we don't want tabs. Other
> > parts of the file use 2 spaces indentation, others 8 spaces. Or are
> > you suggesting to not indent them?
>
> Yes, that what "stray" imply, also I mean only the last line as imply by
> the use singular. Sorry, I could have try to be a bit more precise.
>
> All the indentation within the #ifdef #endif are fine, but why is
> #define still indented after the last #endif?
>

Oh.. that single space. Historic, copy&paste, there were 2 defines in
the past one for each block. Removed.

> > >
> > > Overall, it's kind of mostly style comment that I had, so feel free t=
o
> > > ignore most of them.
> > >
> >
> > Naming can be cumbersome but usually helps readability.
>
> Yes, also sorry for the half-baked previous review, it could have been be=
tter.
>
> Cheers,
>
> --
>
> Anthony Perard | Vates XCP-ng Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:43:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:43:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819693.1233102 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zcy-0007qq-J0; Wed, 16 Oct 2024 08:43:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819693.1233102; Wed, 16 Oct 2024 08: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 1t0zcy-0007qj-GT; Wed, 16 Oct 2024 08:43:32 +0000
Received: by outflank-mailman (input) for mailman id 819693;
 Wed, 16 Oct 2024 08:43: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=Q9FP=RM=gmail.com=hkallweit1@srs-se1.protection.inumbo.net>)
 id 1t0zcx-0007qd-Ao
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:43:31 +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 b7ec862a-8b9a-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:43:30 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c99be0a4bbso380323a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 01:43:30 -0700 (PDT)
Received: from ?IPV6:2a02:3100:a554:2300:6c65:3e15:b0c4:185e?
 (dynamic-2a02-3100-a554-2300-6c65-3e15-b0c4-185e.310.pool.telefonica.de.
 [2a02:3100:a554:2300:6c65:3e15:b0c4:185e])
 by smtp.googlemail.com with ESMTPSA id
 a640c23a62f3a-a9a29750a9asm156042266b.88.2024.10.16.01.43.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 01:43:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b7ec862a-8b9a-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729068209; x=1729673009; 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=PaNHk+1EBRyWir9RbKJJvbLwl0XroaJpy79cuY3a4Cc=;
        b=FT/AV5cTw40dWBVeNwHgmSGQhH4KjwExd2kpGtUB0qIHhoMDRWlapJhRZPR5rN0eRG
         crrjGNDTfi/chfMBge8qA++2fAsDFCK6O3JnBmhscu8nBqYNpqCFFvBiEuh3afBA3YYz
         LVYYXNidDg7KVKqOxWX18PTbjmSkUFzHmD6RNrnEHkX9aAgYEBEpAtfv3vsghwutR5Fd
         fGRUvehGnoAqmy+u4p8+I3wikCGEWOasuJr3Mu/NPMnjFiGLyOKB7/ektemXxdNLsJnZ
         wYWKI6spW1+1MxHaeoLmtqn2dfM+HaU9d2X5fU8YGBur4OLqZLeM+5rQ7OtAFN5bUtj2
         WPGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729068209; x=1729673009;
        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=PaNHk+1EBRyWir9RbKJJvbLwl0XroaJpy79cuY3a4Cc=;
        b=iumcLmE/CcbYt4KMToKtFL8nkSrXU6csIdYHMKywL5qmknfuXTh00lZXeLH9Alwyhe
         dh9+Wk3MNQiCCxzgSfvHFfuhaYwNSHwTxxREo/+SqZuXM/GAow4OTh3MZEDZvbOUSwc4
         8qxOk3oCxdg5NI5Vqz0RY411b0TqR69whPBsmWTGQWH62GK54YZmwQiTHnQ8Yw+x1Jo6
         QMnvlRx6l+2O3vbpTSvRd8A5evgwFKFqYSWq0B0k/jW9rWX9Pv8LINtAD8qGwO98x65t
         9hpsBKi704lwjANRzSagCzMuAeHuj7wWNVVzRlT95p0QtSHcnR8byt/gsBhTcv9nrUTf
         B88w==
X-Forwarded-Encrypted: i=1; AJvYcCU5tEXjp3YkuCIPsp6+UbOmtr1zgSE9jVps3agKq1vP3ZmFnfH3evDXBMNew6Jr0z4uiDWfjPRoffI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxA5Cb6zaf5JeXtNK2BGVuvv4xhs5IGAD9f82yUxWSBZ8+DWmZa
	9/S9E1VXMao262PcWe+gFJuzOGoimzRC+upzrI2TXKT4VOLlY5pV
X-Google-Smtp-Source: AGHT+IG7Mc74tdlZs67Lg0fXYJgdjilcvHeVlNjg83zAHOOdY3c3eJlxhWztO741FFj+cDImqCMJ7w==
X-Received: by 2002:a17:906:4fc8:b0:a8a:6c5d:63b2 with SMTP id a640c23a62f3a-a99b937a6d4mr1476269166b.18.1729068209160;
        Wed, 16 Oct 2024 01:43:29 -0700 (PDT)
Message-ID: <297b5511-8f6a-4798-a2b4-d4c634969aed@gmail.com>
Date: Wed, 16 Oct 2024 10:43:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
To: Philipp Stanner <pstanner@redhat.com>,
 Alex Williamson <alex.williamson@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
 Sergey Shtylyov <s.shtylyov@omp.ru>,
 Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri Kosina
 <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>,
 Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
 Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>,
 Shyam Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>,
 Dave Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>,
 Bjorn Helgaas <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
 Chen Ni <nichen@iscas.ac.cn>, Mario Limonciello <mario.limonciello@amd.com>,
 Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
 Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
 Thomas Gleixner <tglx@linutronix.de>,
 =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,
 Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
 Mostafa Saleh <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>,
 Yi Liu <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>,
 Ankit Agrawal <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>,
 Reinette Chatre <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
 Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
 Kai Vehmanen <kai.vehmanen@linux.intel.com>,
 Rui Salvaterra <rsalvaterra@gmail.com>, linux-ide@vger.kernel.org,
 linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
 netdev@vger.kernel.org, linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
References: <20241015185124.64726-1-pstanner@redhat.com>
 <20241015185124.64726-14-pstanner@redhat.com>
 <20241015135336.0de9795e.alex.williamson@redhat.com>
 <fc7244823a5665d3db40c94aea099a2973032a0b.camel@redhat.com>
Content-Language: en-US
From: Heiner Kallweit <hkallweit1@gmail.com>
Autocrypt: addr=hkallweit1@gmail.com; keydata=
 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
In-Reply-To: <fc7244823a5665d3db40c94aea099a2973032a0b.camel@redhat.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.10.2024 08:57, Philipp Stanner wrote:
> On Tue, 2024-10-15 at 13:53 -0600, Alex Williamson wrote:
>> On Tue, 15 Oct 2024 20:51:23 +0200
>> Philipp Stanner <pstanner@redhat.com> wrote:
>>
>>> pci_intx() and its managed counterpart pcim_intx() only exist for
>>> older
>>> drivers which have not been ported yet for various reasons. Future
>>> drivers should preferably use pci_alloc_irq_vectors().
>>>
>>> Mark pci_intx() and pcim_intx() as deprecated and encourage usage
>>> of
>>> pci_alloc_irq_vectors() in its place.
>>
>> I don't really understand this.  As we've discussed previously
>> pci_alloc_irq_vectors() is, unsurprisingly, for allocating PCI IRQ
>> vectors while pci_intx() is for manipulating the INTx disable bit on
>> PCI devices.  The latter is a generic mechanism for preventing PCI
>> devices from generating INTx, regardless of whether there's a vector
>> allocated for it.  How does the former replace the latter and why do
>> we
>> feel the need to deprecate the latter?
>>
>> It feels like this fits some narrow narrative and makes all users of
>> these now deprecated functions second class citizens.  Why?  At it's
>> root these are simply providing mask and set or mask and clear
>> register
>> bit operations.  Thanks,
> 
> I got the feeling from the RFC discussion that that was basically the
> consensus: people should use pci_alloc_irq_vectors(). Or did I
> misunderstand Andy and Heiner?
> 
I think there are two different use cases for pci_intx().
At first there are several drivers where the direct usage of pci_intx()
can be eliminated by switching to the pci_alloc_irq_vectors() API.

And then there's usage of pci_intx() in
drivers/vfio/pci/vfio_pci_intrs.c
drivers/xen/xen-pciback/conf_space_header.c
There we have to keep the (AFAICS unmanaged) pci_intx() calls.

> I'm perfectly happy with dropping this patch and continue offering
> pci{m}_intx() to users, since after removing that hybrid hazzard I
> don't see any harm in them anymore.
> 
> 
> P.
> 
>>
>> Alex
>>  
>>> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
>>> ---
>>>  drivers/pci/devres.c | 5 ++++-
>>>  drivers/pci/pci.c    | 5 ++++-
>>>  2 files changed, 8 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
>>> index 6f8f712fe34e..4c76fc063104 100644
>>> --- a/drivers/pci/devres.c
>>> +++ b/drivers/pci/devres.c
>>> @@ -435,7 +435,7 @@ static struct pcim_intx_devres
>>> *get_or_create_intx_devres(struct device *dev)
>>>  }
>>>  
>>>  /**
>>> - * pcim_intx - managed pci_intx()
>>> + * pcim_intx - managed pci_intx() (DEPRECATED)
>>>   * @pdev: the PCI device to operate on
>>>   * @enable: boolean: whether to enable or disable PCI INTx
>>>   *
>>> @@ -443,6 +443,9 @@ static struct pcim_intx_devres
>>> *get_or_create_intx_devres(struct device *dev)
>>>   *
>>>   * Enable/disable PCI INTx for device @pdev.
>>>   * Restore the original state on driver detach.
>>> + *
>>> + * This function is DEPRECATED. Do not use it in new code.
>>> + * Use pci_alloc_irq_vectors() instead (there is no managed
>>> version, currently).
>>>   */
>>>  int pcim_intx(struct pci_dev *pdev, int enable)
>>>  {
>>> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
>>> index 7ce1d0e3a1d5..dc69e23b8982 100644
>>> --- a/drivers/pci/pci.c
>>> +++ b/drivers/pci/pci.c
>>> @@ -4477,11 +4477,14 @@ void pci_disable_parity(struct pci_dev
>>> *dev)
>>>  }
>>>  
>>>  /**
>>> - * pci_intx - enables/disables PCI INTx for device dev
>>> + * pci_intx - enables/disables PCI INTx for device dev
>>> (DEPRECATED)
>>>   * @pdev: the PCI device to operate on
>>>   * @enable: boolean: whether to enable or disable PCI INTx
>>>   *
>>>   * Enables/disables PCI INTx for device @pdev
>>> + *
>>> + * This function is DEPRECATED. Do not use it in new code.
>>> + * Use pci_alloc_irq_vectors() instead.
>>>   */
>>>  void pci_intx(struct pci_dev *pdev, int enable)
>>>  {
>>
> 
> 



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 08:53:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 08:53:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819704.1233112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t0zma-0001Gy-Kg; Wed, 16 Oct 2024 08:53:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819704.1233112; Wed, 16 Oct 2024 08:53: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 1t0zma-0001Gr-Hl; Wed, 16 Oct 2024 08:53:28 +0000
Received: by outflank-mailman (input) for mailman id 819704;
 Wed, 16 Oct 2024 08:53: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=k4YY=RM=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t0zmY-0001Gl-S3
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 08:53:26 +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 19ccfe4d-8b9c-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 10:53:24 +0200 (CEST)
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-247-zYcPHr4bNJGvut0pcof0Zw-1; Wed, 16 Oct 2024 04:53:20 -0400
Received: by mail-wr1-f71.google.com with SMTP id
 ffacd0b85a97d-37d4a211177so3175987f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 01:53:20 -0700 (PDT)
Received: from dhcp-64-113.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fbf8143sm3795916f8f.70.2024.10.16.01.53.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 01:53:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19ccfe4d-8b9c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729068803;
	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=7moOe8UL5Meb+BC0gY7ndfubUporns0eDJleSN460jA=;
	b=OVkGuLoWeHZJgk7CwjaWSuFYkC+PryFJaLEIleKm24bp37qgbs5B/2kEue5uzlXJLrIiqk
	rA/TNHu/PeumuElUfYNWHJQEXd/brYCiNfoVz+RiymcACxophlUwk6WYpjnLO49rsKh84d
	uFWW0BJhVOp965JCl1fCWYZE+MIIeb8=
X-MC-Unique: zYcPHr4bNJGvut0pcof0Zw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729068799; x=1729673599;
        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=7moOe8UL5Meb+BC0gY7ndfubUporns0eDJleSN460jA=;
        b=hDgyNFXyim/c6fde+afx3mFn1qg71TWY7QdDKjneGqEn7gf5r6SVWR27IEvQTheDlf
         xgj7hrMf22y5KRj/vkWR4iqpYzSj4pn9qYJYy6V1jnKOyMjSmSqVc0VS8u724DuOCPh3
         EbbNpC/Zp2U61O8FKCzWV/hX+Qpl40oU535cqczQOOuWH2Vpt8jZhjYmckMBTGknhUlR
         AFWfNoTGNLCIoRFuUSrG+WspQv1vz3LUnGbMaNHIflNMf6XzvwL2xHRcE1mm4S84hcCT
         JI4vwi931SYqkvda9SiC78z/kUBEG85lIzAnK4bgQd70dH9r8VyzAeBK7vGNCAt+N+uf
         jbEg==
X-Forwarded-Encrypted: i=1; AJvYcCVAhMZaRFa/nfQN/J5jfpESRRTxEB5UKJzy6aGZjIxDM0cZ3+yz1YVsfN5douiu88ZKTzd/eLlHk6M=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw5IhMRFT8p1FLaWS+iD1pk0P7SuJBShptXLDoD6JEfDMyCLgtV
	VK0UZGpZbwYsYfUgFgemdtK9LTMuq8MITHKKjxsoeMT+mWGTusTUCEYniDK3kMJCbWXrCpolNz/
	FoBwzHhPPzTVvUKzjvPXxVRkOT1gJV7DubL4hCUqUYNsRFaauF5s88riWvtIm0cRM
X-Received: by 2002:a5d:550c:0:b0:37c:fc25:ef39 with SMTP id ffacd0b85a97d-37d86bd470dmr2064137f8f.16.1729068799483;
        Wed, 16 Oct 2024 01:53:19 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IE813FEz+S0lBaHgTBV6vax4I3zZfvuNTqrbIYEeCSE1sgZYKS0gEVByh3SssZ+D4YfCA6CQQ==
X-Received: by 2002:a5d:550c:0:b0:37c:fc25:ef39 with SMTP id ffacd0b85a97d-37d86bd470dmr2064075f8f.16.1729068798945;
        Wed, 16 Oct 2024 01:53:18 -0700 (PDT)
Message-ID: <f871a77fb51e54332886882e8ecb1a4a5f5d296b.camel@redhat.com>
Subject: Re: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Heiner Kallweit <hkallweit1@gmail.com>, Alex Williamson
	 <alex.williamson@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,  Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>,  Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>,  Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>,  Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>,  Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu
 <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>, Ankit Agrawal
 <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>, Reinette Chatre
 <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Wed, 16 Oct 2024 10:53:16 +0200
In-Reply-To: <297b5511-8f6a-4798-a2b4-d4c634969aed@gmail.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
	 <20241015185124.64726-14-pstanner@redhat.com>
	 <20241015135336.0de9795e.alex.williamson@redhat.com>
	 <fc7244823a5665d3db40c94aea099a2973032a0b.camel@redhat.com>
	 <297b5511-8f6a-4798-a2b4-d4c634969aed@gmail.com>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Wed, 2024-10-16 at 10:43 +0200, Heiner Kallweit wrote:
> On 16.10.2024 08:57, Philipp Stanner wrote:
> > On Tue, 2024-10-15 at 13:53 -0600, Alex Williamson wrote:
> > > On Tue, 15 Oct 2024 20:51:23 +0200
> > > Philipp Stanner <pstanner@redhat.com> wrote:
> > >=20
> > > > pci_intx() and its managed counterpart pcim_intx() only exist
> > > > for
> > > > older
> > > > drivers which have not been ported yet for various reasons.
> > > > Future
> > > > drivers should preferably use pci_alloc_irq_vectors().
> > > >=20
> > > > Mark pci_intx() and pcim_intx() as deprecated and encourage
> > > > usage
> > > > of
> > > > pci_alloc_irq_vectors() in its place.
> > >=20
> > > I don't really understand this.=C2=A0 As we've discussed previously
> > > pci_alloc_irq_vectors() is, unsurprisingly, for allocating PCI
> > > IRQ
> > > vectors while pci_intx() is for manipulating the INTx disable bit
> > > on
> > > PCI devices.=C2=A0 The latter is a generic mechanism for preventing
> > > PCI
> > > devices from generating INTx, regardless of whether there's a
> > > vector
> > > allocated for it.=C2=A0 How does the former replace the latter and wh=
y
> > > do
> > > we
> > > feel the need to deprecate the latter?
> > >=20
> > > It feels like this fits some narrow narrative and makes all users
> > > of
> > > these now deprecated functions second class citizens.=C2=A0 Why?=C2=
=A0 At
> > > it's
> > > root these are simply providing mask and set or mask and clear
> > > register
> > > bit operations.=C2=A0 Thanks,
> >=20
> > I got the feeling from the RFC discussion that that was basically
> > the
> > consensus: people should use pci_alloc_irq_vectors(). Or did I
> > misunderstand Andy and Heiner?
> >=20
> I think there are two different use cases for pci_intx().
> At first there are several drivers where the direct usage of
> pci_intx()
> can be eliminated by switching to the pci_alloc_irq_vectors() API.
>=20
> And then there's usage of pci_intx() in
> drivers/vfio/pci/vfio_pci_intrs.c
> drivers/xen/xen-pciback/conf_space_header.c
> There we have to keep the (AFAICS unmanaged) pci_intx() calls.

There is also the usage within PCI itself, in MSI. Patch =E2=84=968 touches
that.

It's why I think this series should land before anyone should port
direct pci_intx() users to the irq vectors function, because the latter
also uses pci_intx() and its own devres, which sounds explosive to me.


P.

>=20
> > I'm perfectly happy with dropping this patch and continue offering
> > pci{m}_intx() to users, since after removing that hybrid hazzard I
> > don't see any harm in them anymore.
> >=20
> >=20
> > P.
> >=20
> > >=20
> > > Alex
> > > =C2=A0
> > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > ---
> > > > =C2=A0drivers/pci/devres.c | 5 ++++-
> > > > =C2=A0drivers/pci/pci.c=C2=A0=C2=A0=C2=A0 | 5 ++++-
> > > > =C2=A02 files changed, 8 insertions(+), 2 deletions(-)
> > > >=20
> > > > diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
> > > > index 6f8f712fe34e..4c76fc063104 100644
> > > > --- a/drivers/pci/devres.c
> > > > +++ b/drivers/pci/devres.c
> > > > @@ -435,7 +435,7 @@ static struct pcim_intx_devres
> > > > *get_or_create_intx_devres(struct device *dev)
> > > > =C2=A0}
> > > > =C2=A0
> > > > =C2=A0/**
> > > > - * pcim_intx - managed pci_intx()
> > > > + * pcim_intx - managed pci_intx() (DEPRECATED)
> > > > =C2=A0 * @pdev: the PCI device to operate on
> > > > =C2=A0 * @enable: boolean: whether to enable or disable PCI INTx
> > > > =C2=A0 *
> > > > @@ -443,6 +443,9 @@ static struct pcim_intx_devres
> > > > *get_or_create_intx_devres(struct device *dev)
> > > > =C2=A0 *
> > > > =C2=A0 * Enable/disable PCI INTx for device @pdev.
> > > > =C2=A0 * Restore the original state on driver detach.
> > > > + *
> > > > + * This function is DEPRECATED. Do not use it in new code.
> > > > + * Use pci_alloc_irq_vectors() instead (there is no managed
> > > > version, currently).
> > > > =C2=A0 */
> > > > =C2=A0int pcim_intx(struct pci_dev *pdev, int enable)
> > > > =C2=A0{
> > > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> > > > index 7ce1d0e3a1d5..dc69e23b8982 100644
> > > > --- a/drivers/pci/pci.c
> > > > +++ b/drivers/pci/pci.c
> > > > @@ -4477,11 +4477,14 @@ void pci_disable_parity(struct pci_dev
> > > > *dev)
> > > > =C2=A0}
> > > > =C2=A0
> > > > =C2=A0/**
> > > > - * pci_intx - enables/disables PCI INTx for device dev
> > > > + * pci_intx - enables/disables PCI INTx for device dev
> > > > (DEPRECATED)
> > > > =C2=A0 * @pdev: the PCI device to operate on
> > > > =C2=A0 * @enable: boolean: whether to enable or disable PCI INTx
> > > > =C2=A0 *
> > > > =C2=A0 * Enables/disables PCI INTx for device @pdev
> > > > + *
> > > > + * This function is DEPRECATED. Do not use it in new code.
> > > > + * Use pci_alloc_irq_vectors() instead.
> > > > =C2=A0 */
> > > > =C2=A0void pci_intx(struct pci_dev *pdev, int enable)
> > > > =C2=A0{
> > >=20
> >=20
> >=20
>=20



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:13:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:13:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819713.1233125 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1062-0004Jq-8z; Wed, 16 Oct 2024 09:13:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819713.1233125; Wed, 16 Oct 2024 09: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 1t1062-0004Jj-6F; Wed, 16 Oct 2024 09:13:34 +0000
Received: by outflank-mailman (input) for mailman id 819713;
 Wed, 16 Oct 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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1061-0004Jd-9F
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:13:33 +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 e97c42b7-8b9e-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:13:31 +0200 (CEST)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4305724c12eso48277935e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:13:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4315003b77bsm17145275e9.11.2024.10.16.02.13.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 02:13:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e97c42b7-8b9e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729070010; x=1729674810; 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=6XJAmjeGWKRRytQ/d0fJZrOi68XkeC/sjEipn/cjjRo=;
        b=ObvFm1SB/vOz6KmY7fQf/+ImbMw+lgQA8Wh3B6vmZpzbtOLzcVa78/NgvxUqgzbaZV
         tYMMYYLV/UTjq5jINuVO3+N59zf1kORK8w3e1bDMPEgNeFLTcG4m/rbYVFDS79ZFO+X1
         c6oAzcjc8xJQYwT18qeWSgQrBmjGB1XGLMDiF0Va9SUrpxmJJkaE4W+ah52ivCnjah+6
         GFk9BxbV4ggHL1QqAg9M9uS/NEerMB/Lt186EUPJu8drRTeyv5DOzI6DThw2bYyINcsP
         162UccU7xNPRvzdWnlchbk+AfCUpyda0FM4ZEiVkeSmalIQ4lJPIGhjisV6waDpluhax
         mHHw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070010; x=1729674810;
        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=6XJAmjeGWKRRytQ/d0fJZrOi68XkeC/sjEipn/cjjRo=;
        b=KZbdB8uohIBBwk66oDGB3gG9Vt2nOSAFW56jr2idSl+C7EjnZrHeKWcTY7jROMY+Lj
         vR1YxvOhrcgluFk6YbFpXfWACk42q5Jmyvkner0qiYEPX3gMwcWD2Lj5ahMzf8dust2H
         XuZ7ViZeg+iZ+MV7QJUraNwpdVQ+Q0Ksg60JGMMBQvNnwi+CO7siN9rwt1wy2Bvn8+XH
         /bG8m7iwiNS25pj/ks5hmqIi2Ew+iBLmtr3ysbBg96PF7j69zY6UJ3hjkOUT/W5jj0dS
         xyqu0BGVMOMHhNOkEMR4R+kmP+en7TrmillLI+Y+4L2IeTwpgjoC9007x/lIfNaJoPly
         ukTw==
X-Forwarded-Encrypted: i=1; AJvYcCUe09iZCImjMgcMiKZ4wC9zCKeP0DzxOQSjh1fws3WBeaolioxE6Xb+5kZoA6qlY0BSEkGXBk+dCc4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwgbXoklzs/GyLv8Ne7J0xkhLAl+tSiBub38VbW5U8Giko4jRdN
	1MpnrAjCa85Jn/zhpHCf2tHnUaBpmBn+YMKCn4UFggTcVujLVYjdLql+vXCiRQ==
X-Google-Smtp-Source: AGHT+IFJIOyZt8ke0d7FPk4ygwh/a9/j4efcFu4bFagtbRJMM/zMmDiX6xFbgu6wTJ+zQaEMPeoJ+w==
X-Received: by 2002:a05:600c:1d91:b0:42d:a024:d6bb with SMTP id 5b1f17b1804b1-431255e76dcmr108308795e9.20.1729070010505;
        Wed, 16 Oct 2024 02:13:30 -0700 (PDT)
Message-ID: <c1f1d35f-beeb-4241-ab41-4ac143858f98@suse.com>
Date: Wed, 16 Oct 2024 11:13:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/riscv: initialize bootinfo from dtb
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
 <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.git.oleksii.kurochko@gmail.com>
 <7e3399d7-f41c-4696-919b-dc7f57168bf9@suse.com>
 <fce8372ee3bac4a0a3c6de58d7c7757df6e6d0a3.camel@gmail.com>
 <9ff389f6-874b-4bb1-8685-d1e0e2281c59@suse.com>
 <56f7ee95390a36202dafe9e0ba64531549b4c4eb.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: <56f7ee95390a36202dafe9e0ba64531549b4c4eb.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.10.2024 09:50, oleksii.kurochko@gmail.com wrote:
> On Tue, 2024-10-15 at 14:32 +0200, Jan Beulich wrote:
>> On 15.10.2024 11:11, oleksii.kurochko@gmail.com wrote:
>>> On Tue, 2024-10-15 at 08:33 +0200, Jan Beulich wrote:
>>>> On 10.10.2024 17:30, Oleksii Kurochko wrote:
>>>>> --- a/xen/arch/riscv/setup.c
>>>>> +++ b/xen/arch/riscv/setup.c
>>>>> @@ -50,6 +50,8 @@ void __init noreturn start_xen(unsigned long
>>>>> bootcpu_id,
>>>>>                            _end - _start, false) )
>>>>>          panic("Failed to add BOOTMOD_XEN\n");
>>>>>  
>>>>> +    BUG_ON(!boot_fdt_info(device_tree_flattened, dtb_addr));
>>>>
>>>> We generally aim at avoiding side effects in BUG_ON() (or
>>>> ASSERT()).
>>>> With
>>>>
>>>>     if (!boot_fdt_info(device_tree_flattened, dtb_addr))
>>>>         BUG();
>>>>
>>>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>>>
>>>> I can make the adjustment while committing, if desired.
>>> It would be great if these changes could be made during the commit.
>>
>> I've committed it with the adjustment, 
> Thanks!
> 
>> yet once again I wondered: Why not
>> panic()?
> It could be panic() here; there's no specific reason. I agree that
> using BUG() here isn't logically correct, as technically, a size of
> zero for the FDT isn't a bug but rather indicates that someone provided
> an incorrect FDT to Xen.
> 
> I will use panic() in the future for such cases.
> 
> It’s not always clear what should be used and where. Perhaps it would
> be helpful to add some explanation somewhere.

My rule of thumb: During init and when the call stack / register state
aren't relevant to understand the details of the issue, use panic().

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:16:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:16:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819721.1233135 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t108S-0004rO-LX; Wed, 16 Oct 2024 09:16:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819721.1233135; Wed, 16 Oct 2024 09:16: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 1t108S-0004rH-IG; Wed, 16 Oct 2024 09:16:04 +0000
Received: by outflank-mailman (input) for mailman id 819721;
 Wed, 16 Oct 2024 09:16: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=8GJ6=RM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t108R-0004r9-Uf
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:16:03 +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 43978698-8b9f-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:16:02 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-539f4d8ef84so3915211e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:16:02 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a000129eesm391451e87.259.2024.10.16.02.15.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:16:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 43978698-8b9f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729070161; x=1729674961; 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=y6sPmoPpNtnsgzor6EgPdSMEs7XQH87dyj1gXZXnBDA=;
        b=J36hoA0xx9Jx8ZVnt/WWsOTlqHjRaR/Z1vHMK1P7J146XzAw6HI8BnmSC9UvrPWINX
         dYU4dZED/cifu/k2PcBtud1PEoDd8rZeTJurgh6jn6KR7IUaP4dP38FOWxIcOG0DIBNr
         kPCqGgQ4/AFPC04JAw/RPM1rXkhsR2B0Dw/TO84Yfb+9/LLOCzt+4JpxlbAly/DSSWWi
         ffUjgH4kZV9mYYFWLNOA3c8C4PxDb6/8ulnEElXT/qAnT1QvUXhsusXLm202RCv5N8PV
         lxEiy56BDuRVnqH29xpkt4cVUYaODvXTPFSRPWQqHbDpq1F5B24FQujwqSQkLIRB3YVw
         +H4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070161; x=1729674961;
        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=y6sPmoPpNtnsgzor6EgPdSMEs7XQH87dyj1gXZXnBDA=;
        b=jUmGyuVc3xnkV/d3SBYsEIO1fHNA9K0EG2OpQlc5MsnU97tYIJQmOlTX5NTImQgLzz
         fvvFrPI9LaVAx4PmJZoCQjRwxo47NeOjjLqjGrzv0HSpz6i9kkLqDX+6YrGogi7/cbOW
         18LP+FBQzGH4pCJhHw/531ZlmingfYAzliR+ACk7MET9WanzdbKNJ/d2rxcG9hdiUPFP
         51/qt75gBM+/eq8E7WKym2Ftw5R+8UFO3vFTl1j7GquLPX/MUuHVstrHsK0cFsFMrx7F
         g2b0eb8zocr3PyQTLRJAiGT6hpP1VvCP5t9X30cHGyQPHJ8Qf7cIGq+QIQnwwt9GPGM/
         ZGng==
X-Gm-Message-State: AOJu0YxLvnNYJcYMvcw+e4aYLLAHNWj3Pep+/rQEAQsqw0hmdPgtL/pG
	RcV2pQ2WfgW+xkp82KdBNjXIgPijZ6jp7TIcTaoyh41vkf+ZbncUX4n34w==
X-Google-Smtp-Source: AGHT+IH9SK6SYJr/C80Mo++zt24odGnIGsc4pOVXsEenW1aPXY81AX2LB9YSbJgFFcLWdp21xtxPjQ==
X-Received: by 2002:a05:6512:3f29:b0:539:ee04:2321 with SMTP id 2adb3069b0e04-539ee0424e1mr5635599e87.33.1729070160458;
        Wed, 16 Oct 2024 02:16:00 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 0/5] Setup memory management
Date: Wed, 16 Oct 2024 11:15:52 +0200
Message-ID: <cover.1729068334.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Finish initializing the memory subsystem by mapping the direct map and
frame table.
In the case of RISC-V 64, which has a large virtual address space
(the minimum supported MMU mode is Sv39, providing TB of VA space),
the direct map and frame table are mapped starting from physical address
0. This simplifies the calculations and thereby improves performance for
page_to_mfn(), mfn_to_page(), and maddr_to_virt(), as there is no
need to account for {directmap, frametable}_base_pdx.
In addition, initialize the VMAP_DEFAULT region, finalize the boot allocator,
and update the system state from early_boot to boot.

Also, after patch 3 ("xen/riscv: introduce setup_mm()") of this patch series,
the linkage error mentioned in patch 1 ("xen/riscv: add stub for
share_xen_page_with_guest()") began to occur, so patch 1 addresses this issue.

The function maddr_to_virt() is introduced as part of this patch series, as
setup_directmap_mappings() uses it indirectly through mfn_to_virt().

Oleksii Kurochko (5):
  xen/riscv: add stub for share_xen_page_with_guest()
  xen/riscv: implement maddr_to_virt()
  xen/riscv: introduce setup_mm()
  xen/riscv: initialize the VMAP_DEFAULT virtual range
  xen/riscv: finalize boot allocator and transition to boot state

 xen/arch/riscv/include/asm/mm.h    |  10 ++-
 xen/arch/riscv/include/asm/setup.h |   2 +
 xen/arch/riscv/mm.c                | 104 +++++++++++++++++++++++++++--
 xen/arch/riscv/pt.c                |   6 ++
 xen/arch/riscv/setup.c             |  14 ++++
 xen/arch/riscv/stubs.c             |  10 +++
 6 files changed, 138 insertions(+), 8 deletions(-)

-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:16:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:16:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819722.1233146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t108T-00055m-TU; Wed, 16 Oct 2024 09:16:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819722.1233146; Wed, 16 Oct 2024 09: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 1t108T-00055e-PK; Wed, 16 Oct 2024 09:16:05 +0000
Received: by outflank-mailman (input) for mailman id 819722;
 Wed, 16 Oct 2024 09:16: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=8GJ6=RM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t108S-0004r9-UK
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:16: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 44274d92-8b9f-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:16:03 +0200 (CEST)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2fb59652cb9so22534091fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:16:03 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a000129eesm391451e87.259.2024.10.16.02.16.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:16:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 44274d92-8b9f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729070161; x=1729674961; 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=FUi2WJJTrylVj2kHi62rhC3wT5w2qKiq8sfSJLHijNw=;
        b=OLfcMp6jd2wJO/AI0zZN8EKwpcGZWnN91cXbiVSQurhvxjfxfoHL5Zw61726NK1cnf
         Sy70v2dmbMhH+hBvctyKPi+WLd6B2e83TF/yQOOMYpBYwRQ4e/iTucHubSeFDbNFe//+
         9mz1Wk2Vuag+Xv7Ry4c5r+h2z4qoJB7eUck/9vN5YDjKaeEY6x8aK72NQINoc8hZNgd/
         Bgry8MDOGjilT7nHrDtaXsmzJyKJwTfDvJcUE6Tw/iLJ5XEE82AUDB5lv97j9ICys0wv
         GPdeHtjlLZxGWGFjNF7H5nE6PhothGPUAh4277Epf2jv0CvwUe8xj8H3EHJhklOr0eEW
         4bIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070161; x=1729674961;
        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=FUi2WJJTrylVj2kHi62rhC3wT5w2qKiq8sfSJLHijNw=;
        b=oeq0c166YrWarczeVLbMAhyN3hS0oMsx09nCFlMQYTU1J1+vBvQitusJ/vXNVGYE88
         dWvrguzlKTNNPdmoBVdRDOW8QIyxfIrJ/9lRI2aQ2QpXM6F3dcUcCxzidq6x0pjjf1OG
         Np+5fkpO8vV1G9wUFyc98GxjlWdyXNctLwmeaHLYc99xeZZcNeBJAxJq4PJ+RVfGGhS6
         3hMya0lb+b00Ubg7nUMcXGjvo5efB2ZmgROtw1lxeUH1EtVTPEI2edZ6vvGznGHZ8ggx
         x8ZGPJXHjEsw7yU6dfI9eY8Q1oNrA2v7LW4d0TKYYZ8uMzQ4GT6Gr+MWAuH0aXnVHJqm
         AyZQ==
X-Gm-Message-State: AOJu0YwDPq8CCLz9ftLrWSZF7MgS5RKMCnoFMO9+sbrh0IbvFyScmLWW
	npKS42OY1L+ZINMcQfsoZP7VTZxmYihS8obMxvxCZTzC8RHC538Hw2Qbmw==
X-Google-Smtp-Source: AGHT+IER3QcgvTjxn2/fyXoLjy8xB7tf/OJVdzSVEvhg72jqpoBa/NoQ/kGK1cJewxHeYkXQQOSFOg==
X-Received: by 2002:a05:6512:6d2:b0:539:f4c1:71d3 with SMTP id 2adb3069b0e04-539f4c17406mr6039710e87.29.1729070161226;
        Wed, 16 Oct 2024 02:16:01 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 1/5] xen/riscv: add stub for share_xen_page_with_guest()
Date: Wed, 16 Oct 2024 11:15:53 +0200
Message-ID: <3dfd4bdf6584e73ecdbff5a66fdbaec68e31cc3c.1729068334.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729068334.git.oleksii.kurochko@gmail.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

To avoid the following linkage fail the stub for share_xen_page_with_guest()
is introduced:
  riscv64-linux-gnu-ld: prelink.o: in function `tasklet_kill':
  /build/xen/common/tasklet.c:176: undefined reference to `share_xen_page_with_guest'
  riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol `share_xen_page_with_guest' isn't defined
  riscv64-linux-gnu-ld: final link failed: bad value

$ find . -name \*.o | while read F; do nm $F | grep share_xen_page_with_guest && echo $F; done
                 U share_xen_page_with_guest
./xen/common/built_in.o
                 U share_xen_page_with_guest
./xen/common/trace.o
                 U share_xen_page_with_guest
./xen/prelink.o

Despite the linker fingering tasklet.c (very likely a toolchain bug),
it's trace.o which has the undefined reference.

Looking at trace.i, there is call of share_xen_page_with_guest() in
share_xen_page_with_privileged_guests() from asm/mm.h.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/stubs.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c
index 5951b0ce91..c9a590b225 100644
--- a/xen/arch/riscv/stubs.c
+++ b/xen/arch/riscv/stubs.c
@@ -2,7 +2,9 @@
 #include <xen/cpumask.h>
 #include <xen/domain.h>
 #include <xen/irq.h>
+#include <xen/mm.h>
 #include <xen/nodemask.h>
+#include <xen/sched.h>
 #include <xen/sections.h>
 #include <xen/time.h>
 #include <public/domctl.h>
@@ -409,3 +411,11 @@ unsigned long get_upper_mfn_bound(void)
 {
     BUG_ON("unimplemented");
 }
+
+/* mm.c */
+
+void share_xen_page_with_guest(struct page_info *page, struct domain *d,
+                               enum XENSHARE_flags flags)
+{
+    BUG_ON("unimplemented");
+}
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:16:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:16:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819723.1233156 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t108V-0005La-6O; Wed, 16 Oct 2024 09:16:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819723.1233156; Wed, 16 Oct 2024 09:16: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 1t108V-0005LR-3f; Wed, 16 Oct 2024 09:16:07 +0000
Received: by outflank-mailman (input) for mailman id 819723;
 Wed, 16 Oct 2024 09:16: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=8GJ6=RM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t108T-0004r9-L4
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:16:05 +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 44c55a29-8b9f-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:16:04 +0200 (CEST)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-539f2b95775so4121713e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:16:04 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a000129eesm391451e87.259.2024.10.16.02.16.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:16:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 44c55a29-8b9f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729070163; x=1729674963; 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=zTo8wcoBAnZWVL6JY0i7rOCMbKVxaD9bONOTGNKU9j0=;
        b=C2cAA6GZr+IRir0BpoKtgIeq9vxBXkASqUuKhHDfWjUW8xpbf619sAIPRX4oh8aQwo
         38y9neezO0KcnrmiYbsdzWYwGPLyflyoXBF5KA7UYO1PR/S23nvfBk36kyEiNwYdQWh/
         JSKplRCW3zR7e7wOP6Og9tUsK81Jv0RFlmQFObHr/KAoXFF8jYZU5nJJkZSX/FGIQg2+
         lG53A0YXTeEipLzj+OsIBbZllTCt1IWTf5rDEL3hDNeKz+5vNT3470/YO3CLzgYZvMFr
         NODx42L/ojBUgAzrIuzV6jLiTVwoafclyRPd33jtoUyohtW96BiEA/gKcXHG3iI3I30Y
         V7jQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070163; x=1729674963;
        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=zTo8wcoBAnZWVL6JY0i7rOCMbKVxaD9bONOTGNKU9j0=;
        b=XT/4qknI1gm3xEKUVyk+OpybGkd5ydNMUH8FtXa1plRe7z3PQGgHTp6/RAOa11nn9r
         PC5qkS9fftJeMTSwyNmcLZihPh1RY0TKOXN/zAur36sKE/Hblwn3cLaiiqqthbLVJf3U
         sKN4R4QKdBKy/GjwbE2u9HIwRUrBxUpMaYLSDnrSRbDUJPsxKHCtPdz6Nvf7Q1rtjlDk
         Vv1J2MUKFPCMOt1XmpXwhGyTpzzfeob2HwqFLjMDjGHlEv2oK4JY5AlLueaovrhlP9hl
         pu5ZZW9eZcN0dI4lU+2qw5w+PJXYbpoL0sHxSCyS0Afh4sXcVKrZSYOJy3h6ZIs46cS0
         KuKw==
X-Gm-Message-State: AOJu0YyMwYuZLlm8h9KPXsGtAOaauTYrTf9YU72o4YWBK8dZgCK//cLq
	pot3rcidG8vs96ld7g7bT5DpFueTHHG5IWIEUFdOKrx5v7g86Mke0Z5otA==
X-Google-Smtp-Source: AGHT+IGiD8tLBcbs6M/QvfKxQOuo5Zgnq6pEzPkd4C4CIXLglaZ+oIXatCYihqviEWs7KjcKGIUlFA==
X-Received: by 2002:a05:6512:220d:b0:539:8a50:6ee8 with SMTP id 2adb3069b0e04-539e57282b1mr9234525e87.57.1729070163190;
        Wed, 16 Oct 2024 02:16:03 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 2/5] xen/riscv: implement maddr_to_virt()
Date: Wed, 16 Oct 2024 11:15:54 +0200
Message-ID: <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729068334.git.oleksii.kurochko@gmail.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Implement the `maddr_to_virt()` function to convert a machine address
to a virtual address. This function is specifically designed to be used
only for the DIRECTMAP region, so a check has been added to ensure that
the address does not exceed `DIRECTMAP_SIZE`.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/include/asm/mm.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index ebb142502e..0396e66f47 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -25,8 +25,12 @@
 
 static inline void *maddr_to_virt(paddr_t ma)
 {
-    BUG_ON("unimplemented");
-    return NULL;
+    /* Offset in the direct map, accounting for pdx compression */
+    unsigned long va_offset = maddr_to_directmapoff(ma);
+
+    ASSERT(va_offset < DIRECTMAP_SIZE);
+
+    return (void *)(DIRECTMAP_VIRT_START + va_offset);
 }
 
 /*
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:16:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:16:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819724.1233166 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t108W-0005bX-FM; Wed, 16 Oct 2024 09:16:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819724.1233166; Wed, 16 Oct 2024 09:16: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 1t108W-0005bD-AV; Wed, 16 Oct 2024 09:16:08 +0000
Received: by outflank-mailman (input) for mailman id 819724;
 Wed, 16 Oct 2024 09:16: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=8GJ6=RM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t108U-0005Dr-K1
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:16:06 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 458c7379-8b9f-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:16:05 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539f76a6f0dso2882761e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:16:05 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a000129eesm391451e87.259.2024.10.16.02.16.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:16:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 458c7379-8b9f-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729070165; x=1729674965; 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=fGuFYCXwauYG/Y17jk3tmaCDchtBJlytkAwIlTZfzko=;
        b=Wbrq0EcMkiODkwUFRkqGJwOY180q+enFGkXV7OzyML3HclgAY5NGw1kCm74rZIqTau
         3Grqu61S0+I3JJD9JiW0LWQroJ7hYJOQDVWA1QiTEQ/sZ0ZccPnpy+Um6+jckrQHyM2n
         oep4MykeDfgaioDDDb66TvYr4TbbI2mwXHfQEqIQgZek47Q7pV2eXvtq0PnU9SgyPqsE
         FsigDQ8CoUdMExA1GhoBnmXQONOTxhCgx0Ub/kTsUircqdz6F0NRcbyxxI++lx3TAumr
         7nsKNCurpCYdZgKVPedhkG259QpUqV0J4mlb2Msth9I4o4YRYl1XyyhZptmIe6gNtDM3
         yKcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070165; x=1729674965;
        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=fGuFYCXwauYG/Y17jk3tmaCDchtBJlytkAwIlTZfzko=;
        b=isMRpWokANn5nQRtSPzry1+/x94aBQhT5C0FsGmBjdp6upqIdEdLETvU0tCOz8RAyQ
         coTfqDJ+/Jpx5dfYrFeMzgqgoyvU1l1/MnM406uRt+Gkxs7DK4OEwq3X1cDSwL0+JZhl
         5uSqjEXZTMngtKNfWh+m2eGZB5sLAFkCcuBGCH1rURnGdz9KO1xPLshLnYmsuu383h2U
         j54Sd9g9/RPJuAfNPFWjKYOm2GpoYHEbBZPquaNBdm6likpnORUanftWFknDXbm2JwAZ
         zr1WN25IQ8IYogV5daXCiC3HmLmrarLonOv6TllWcpiTU2dxkJVoo5F1N4EcAzz8JRX9
         6iWg==
X-Gm-Message-State: AOJu0YxvRilVtNzj0q5QEKGQWbhTVj3L0evMxo4MfEFr1vP0IDUURAs/
	9gcxUiHI4QKuO0kJxh+fUcsyoRVkmRCWGkK/RS1BpLiy4qdNONIE4WIAOQ==
X-Google-Smtp-Source: AGHT+IHZkUCj21Y7l52VIWLe416ZSMs2Ro+dERhPbC13frSrZPSSU46sMhzh1iRQsImnvC/Xb+KtPg==
X-Received: by 2002:a05:6512:e9c:b0:539:f807:ad93 with SMTP id 2adb3069b0e04-539f807caf1mr5086745e87.38.1729070164430;
        Wed, 16 Oct 2024 02:16:04 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 3/5] xen/riscv: introduce setup_mm()
Date: Wed, 16 Oct 2024 11:15:55 +0200
Message-ID: <300a4a5911766d42ec01c3fcaee664d72b484296.1729068334.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729068334.git.oleksii.kurochko@gmail.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce the implementation of setup_mm(), which includes:
1. Adding all free regions to the boot allocator, as memory is needed
   to allocate page tables used for frame table mapping.
2. Calculating RAM size and the RAM end address.
3. Setting up direct map mappings from the PFN of physical address 0
   to the PFN of RAM end.
4. Setting up frame table mappings from physical address 0 to ram_end.
5. Setting up total_pages and max_page.
6. Establishing `directmap_virt_end`, which is not currently used but is
   intended for future use in virt_to_page() to ensure that virtual
   addresses do not exceed directmap_virt_end.

In the case of RISC-V 64, which has a large virtual address space
(the minimum supported MMU mode is Sv39, providing TB of VA space),
the direct map and frame table are mapped starting from physical address
0. This simplifies the calculations and thereby improves performance for
page_to_mfn(), mfn_to_page(), and maddr_to_virt(), as there is no
need to account for {directmap, frametable}_base_pdx.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/include/asm/mm.h    |  2 +
 xen/arch/riscv/include/asm/setup.h |  2 +
 xen/arch/riscv/mm.c                | 93 ++++++++++++++++++++++++++++++
 xen/arch/riscv/setup.c             |  3 +
 4 files changed, 100 insertions(+)

diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index 0396e66f47..7b472220e5 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -12,6 +12,8 @@
 
 #include <asm/page-bits.h>
 
+extern vaddr_t directmap_virt_end;
+
 #define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT)
 #define paddr_to_pfn(pa)  ((unsigned long)((pa) >> PAGE_SHIFT))
 
diff --git a/xen/arch/riscv/include/asm/setup.h b/xen/arch/riscv/include/asm/setup.h
index c0214a9bf2..844a2f0ef1 100644
--- a/xen/arch/riscv/include/asm/setup.h
+++ b/xen/arch/riscv/include/asm/setup.h
@@ -5,6 +5,8 @@
 
 #define max_init_domid (0)
 
+void setup_mm(void);
+
 #endif /* ASM__RISCV__SETUP_H */
 
 /*
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 27026d803b..53b7483f75 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -8,6 +8,7 @@
 #include <xen/libfdt/libfdt.h>
 #include <xen/macros.h>
 #include <xen/mm.h>
+#include <xen/pdx.h>
 #include <xen/pfn.h>
 #include <xen/sections.h>
 #include <xen/sizes.h>
@@ -423,3 +424,95 @@ void * __init early_fdt_map(paddr_t fdt_paddr)
 
     return fdt_virt;
 }
+
+#ifndef CONFIG_RISCV_32
+/* Map the region in the directmap area. */
+static void __init setup_directmap_mappings(unsigned long nr_mfns)
+{
+    if ( nr_mfns > PFN_DOWN(DIRECTMAP_SIZE) )
+        panic("The directmap cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
+              0UL, nr_mfns << PAGE_SHIFT);
+
+    if ( map_pages_to_xen((vaddr_t)mfn_to_virt(0),
+                          _mfn(0), nr_mfns,
+                          PAGE_HYPERVISOR_RW) )
+        panic("Unable to setup the directmap mappings.\n");
+}
+
+/* Map a frame table to cover physical addresses ps through pe */
+static void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
+{
+    unsigned long nr_mfns = mfn_x(mfn_add(maddr_to_mfn(pe), -1)) -
+                            mfn_x(maddr_to_mfn(ps)) + 1;
+    unsigned long frametable_size = nr_mfns * sizeof(struct page_info);
+    mfn_t base_mfn;
+
+    if ( frametable_size > FRAMETABLE_SIZE )
+        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
+              ps, pe);
+
+    frametable_size = ROUNDUP(frametable_size, MB(2));
+    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 2<<(20-12));
+
+    if ( map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
+                          frametable_size >> PAGE_SHIFT,
+                          PAGE_HYPERVISOR_RW) )
+        panic("Unable to setup the frametable mappings.\n");
+
+    memset(&frame_table[0], 0, nr_mfns * sizeof(struct page_info));
+    memset(&frame_table[nr_mfns], -1,
+           frametable_size - (nr_mfns * sizeof(struct page_info)));
+}
+
+vaddr_t directmap_virt_end __read_mostly;
+
+/*
+ * Setup memory management
+ *
+ * RISC-V 64 has a large virtual address space (the minimum supported
+ * MMU mode is Sv39, which provides TBs of VA space).
+ * In the case of RISC-V 64, the directmap and frametable are mapped
+ * starting from physical address 0 to simplify the page_to_mfn(),
+ * mfn_to_page(), and maddr_to_virt() calculations, as there is no need
+ * to account for {directmap, frametable}_base_pdx in this setup.
+ */
+void __init setup_mm(void)
+{
+    const struct membanks *banks = bootinfo_get_mem();
+    paddr_t ram_end = 0;
+    paddr_t ram_size = 0;
+    unsigned int i;
+
+    /*
+     * We need some memory to allocate the page-tables used for the directmap
+     * mappings. But some regions may contain memory already allocated
+     * for other uses (e.g. modules, reserved-memory...).
+     *
+     * For simplicity, add all the free regions in the boot allocator.
+     */
+    populate_boot_allocator();
+
+    total_pages = 0;
+
+    for ( i = 0; i < banks->nr_banks; i++ )
+    {
+        const struct membank *bank = &banks->bank[i];
+        paddr_t bank_end = bank->start + bank->size;
+
+        ram_size = ram_size + bank->size;
+        ram_end = max(ram_end, bank_end);
+    }
+
+    setup_directmap_mappings(PFN_DOWN(ram_end));
+
+    total_pages = PFN_DOWN(ram_size);
+
+    directmap_virt_end = DIRECTMAP_VIRT_START + ram_end;
+
+    setup_frametable_mappings(0, ram_end);
+    max_page = PFN_DOWN(ram_end);
+}
+
+#else /* CONFIG_RISCV_32 */
+#error setup_mm(), setup_{directmap,frametable}_mapping() should be implemented for RV_32
+#endif
diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index e29bd75d7c..2887a18c0c 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -12,6 +12,7 @@
 
 #include <asm/early_printk.h>
 #include <asm/sbi.h>
+#include <asm/setup.h>
 #include <asm/smp.h>
 #include <asm/traps.h>
 
@@ -59,6 +60,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
     printk("Command line: %s\n", cmdline);
     cmdline_parse(cmdline);
 
+    setup_mm();
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:16:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:16:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819725.1233172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t108W-0005fR-Te; Wed, 16 Oct 2024 09:16:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819725.1233172; Wed, 16 Oct 2024 09:16: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 1t108W-0005es-MA; Wed, 16 Oct 2024 09:16:08 +0000
Received: by outflank-mailman (input) for mailman id 819725;
 Wed, 16 Oct 2024 09:16: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=8GJ6=RM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t108V-0005Dr-9e
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:16:07 +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 45fe840f-8b9f-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:16:06 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-539983beb19so6739871e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:16:06 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a000129eesm391451e87.259.2024.10.16.02.16.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:16:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 45fe840f-8b9f-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729070166; x=1729674966; 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=5lMS96kWM5Eui5gIIP4UZOxeSh3q2YL3fIRawSS4m1s=;
        b=Mj0Wx8eCBhJJoinEo/hdwMCMVWWoA0evI5uarwiSx5zXUCfwylbAaVBCq/3d+L1m+L
         Hp8jepS4l7vnMfL/QApXfrnwVyPnwO2LSSpzGV4Nblh2Wn4HOsxLi+4GdSQU2dK3PXQE
         Mic6MA02b3SSZso4H0L6s+/LX6F3oaHaYHLzM7Ec2XlicUW7d7/m5/RzRXxloVdyolcM
         +fDIvM5BRsfEIgQ2q0fsrDL/W8X2YDFcl9SI5+4HAtW9ySZxTiw3gSSnLNjOoebP/9/+
         B37FBZClijhVdeqvHBgpY1bavUte3WK2RKGomkV4nQWETTazGUhrhrorcZs8YbMTctbC
         QBIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070166; x=1729674966;
        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=5lMS96kWM5Eui5gIIP4UZOxeSh3q2YL3fIRawSS4m1s=;
        b=W5DQMtfJX0Q1r6FZVQ5+IL5bLSb2+IYTgSTXF+B26BLU1S02QPtXQ0beO9j2uDe+io
         gCM6jiM3ongdZ1qOWKWrwle/umbRTX8nCPiY3oiyB6SA8WHqIUiFDzIVATEfJDogEPbK
         wRoYkMXcvjYeMxzXr04uut9XFCjPF9YKZH04nxSkrdxXgaCtCQi7irXjHPSSiOu4nsqG
         jCBiakjaMWJHhLcddfbAVEOVUQMZvq/orjrcwO0YECZjlf6z5jtxHtXIoNnOh5KZwbS2
         5x2ot7I90zMq5WFh6Dy1m+JdyKOTzVGEMWJzn/xvypCj4EB4UY9gMQWLdfjr9jKWQZX8
         0t2A==
X-Gm-Message-State: AOJu0YwQgBBq9goMRSNjGuV7cEU1lMI6cmIMic/5dXcywUWvCNIqV70s
	DJzhRWNovGoA8+cQ47AqfdVk4S3NpEbVokjRBhEBcvGdCKKTg0INYhi/eQ==
X-Google-Smtp-Source: AGHT+IGb80fSI23TL9q6T+bth+NXlB2cHrY4hxUWVqG0EVh54POIsEn5HZendV2P+tHGigv2GJpZ1Q==
X-Received: by 2002:ac2:4c4c:0:b0:539:8e77:9129 with SMTP id 2adb3069b0e04-539da583e0fmr9305769e87.44.1729070165278;
        Wed, 16 Oct 2024 02:16:05 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 4/5] xen/riscv: initialize the VMAP_DEFAULT virtual range
Date: Wed, 16 Oct 2024 11:15:56 +0200
Message-ID: <c1aac25b3e772ca243ee74a131e2c861ef2a20ca.1729068334.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729068334.git.oleksii.kurochko@gmail.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Call vm_init() to initialize the VMAP_DEFAULT virtual range.

To support this, introduce the populate_pt_range() and
arch_vmap_virt_end() functions, which are used by
vm_init()->vm_init_type().

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/mm.c    | 11 +++++------
 xen/arch/riscv/pt.c    |  6 ++++++
 xen/arch/riscv/setup.c |  3 +++
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 53b7483f75..2a55246f80 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -352,12 +352,6 @@ void arch_dump_shared_mem_info(void)
     BUG_ON("unimplemented");
 }
 
-int populate_pt_range(unsigned long virt, unsigned long nr_mfns)
-{
-    BUG_ON("unimplemented");
-    return -1;
-}
-
 int xenmem_add_to_physmap_one(struct domain *d, unsigned int space,
                               union add_to_physmap_extra extra,
                               unsigned long idx, gfn_t gfn)
@@ -516,3 +510,8 @@ void __init setup_mm(void)
 #else /* CONFIG_RISCV_32 */
 #error setup_mm(), setup_{directmap,frametable}_mapping() should be implemented for RV_32
 #endif
+
+void *__init arch_vmap_virt_end(void)
+{
+    return (void *)(VMAP_VIRT_START + VMAP_VIRT_SIZE);
+}
diff --git a/xen/arch/riscv/pt.c b/xen/arch/riscv/pt.c
index cc5e2d3266..d62aceb36c 100644
--- a/xen/arch/riscv/pt.c
+++ b/xen/arch/riscv/pt.c
@@ -1,6 +1,7 @@
 #include <xen/bug.h>
 #include <xen/domain_page.h>
 #include <xen/errno.h>
+#include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/mm.h>
 #include <xen/pfn.h>
@@ -419,3 +420,8 @@ int map_pages_to_xen(unsigned long virt,
 
     return pt_update(virt, mfn, nr_mfns, flags);
 }
+
+int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
+{
+    return pt_update(virt, INVALID_MFN, nr_mfns, PTE_POPULATE);
+}
diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 2887a18c0c..3652cb056d 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -7,6 +7,7 @@
 #include <xen/init.h>
 #include <xen/mm.h>
 #include <xen/shutdown.h>
+#include <xen/vmap.h>
 
 #include <public/version.h>
 
@@ -62,6 +63,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
 
     setup_mm();
 
+    vm_init();
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:16:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:16:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819726.1233187 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t108Y-00065c-8i; Wed, 16 Oct 2024 09:16:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819726.1233187; Wed, 16 Oct 2024 09: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 1t108Y-00065H-2I; Wed, 16 Oct 2024 09:16:10 +0000
Received: by outflank-mailman (input) for mailman id 819726;
 Wed, 16 Oct 2024 09:16: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=8GJ6=RM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t108W-0005Dr-9j
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:16:08 +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 464a56a6-8b9f-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:16:06 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-539fbbadf83so3650876e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:16:06 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a000129eesm391451e87.259.2024.10.16.02.16.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:16:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 464a56a6-8b9f-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729070166; x=1729674966; 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=uq1Ji0h1S5Dw2PEhn0+S62eckwVA0WVyWGndSlD+Pe0=;
        b=LpondwmI2+PhEDMQBJFrAL4cBU9ir79eVPXLnvmxhrrQmPkN0Umj7jksn3+hTjqyDl
         S7X+ExE9M3QPziSXfm6cFi+JTSq/5EaFy+oqpNeTlfELvqR7gQJdQr+yWE5XFvUYKqR8
         PNbificNlG4guCVl+FwnYvOd2Qhm5oBvYAGk6y6WRnEcS/VpQREqKJFOheabCq9mBgES
         xWqwsrhIM8DGsHxrbrpf+vbrl8EGV7KbG3mWWWGddH7maUkEw4GQpuYiEg02GE2t5ACC
         td/SQMA/nKp8RnZoAeIZ2Pk/gJY8zFTZNY01u8Xjg+w2xqtjsW7JQLGVtCQgOUt6/d9R
         VIXg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070166; x=1729674966;
        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=uq1Ji0h1S5Dw2PEhn0+S62eckwVA0WVyWGndSlD+Pe0=;
        b=ofIHNf2XHbR3jONHaZg2Sb0hQokUt/6IlCL9mJPeJUTgVPPKy8tWaqy6mfMdpC79mE
         ZKzLGdx3gNoq8itqn/X3xPiZtMdCpanzsrqQbxMX4nX3vK2+jmV72UpvFzEx1Gkt2Ega
         9jim8Cs7uvJE9vulaWiC0bXy0vvnzZv0FUDf7jdHSIsWcQHHWiCpK47HgilMXB7qXUlR
         86dkt4+n/3xQHu4+F+ccrZBQZ4ctel5haKbx+/ZBN83rUY0pWTrQ0nAJ6wBuX/WSl83q
         5Kw9xDRMl3VwmLzuc19JCfvlRphb3IKiXQzybzqf9kTZx2R6xY4rkI2HfZokDT03Zhwd
         aNmA==
X-Gm-Message-State: AOJu0Yxkuc1M/LmsTsviJcPvPJct59f3we3+fkgDkUHWMRKlv2y+0Z2U
	4pE4VBl1WoNWLs1iJb7zXGx5XoqvPSz+ReJZLIWDEQT7C2WliucaPjB1+w==
X-Google-Smtp-Source: AGHT+IGO+hyNoyG8ho2yeBme03+6EdXfXPmLx1WZxdmZiZeFAIbiv88WI4R0FDSR9TzuYZZ5fIxFCw==
X-Received: by 2002:a05:6512:3d23:b0:536:568f:c5ed with SMTP id 2adb3069b0e04-539da3b41c0mr8592917e87.1.1729070165984;
        Wed, 16 Oct 2024 02:16:05 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v1 5/5] xen/riscv: finalize boot allocator and transition to boot state
Date: Wed, 16 Oct 2024 11:15:57 +0200
Message-ID: <d3f3108653b7ad42c085118cee3a6634b3227c86.1729068334.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729068334.git.oleksii.kurochko@gmail.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a call to end_boot_allocator() in start_xen() to finalize the
boot memory allocator, moving free pages to the domain sub-allocator.

After initializing the memory subsystem, update `system_state` from
`SYS_STATE_early_boot` to `SYS_STATE_boot`, signifying the end of the
early boot phase.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/riscv/setup.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 3652cb056d..9680332fee 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -65,6 +65,14 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
 
     vm_init();
 
+    end_boot_allocator();
+
+    /*
+     * The memory subsystem has been initialized, we can now switch from
+     * early_boot -> boot.
+     */
+    system_state = SYS_STATE_boot;
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819754.1233196 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10EL-0001C8-QA; Wed, 16 Oct 2024 09:22:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819754.1233196; Wed, 16 Oct 2024 09: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 1t10EL-0001C1-Mn; Wed, 16 Oct 2024 09:22:09 +0000
Received: by outflank-mailman (input) for mailman id 819754;
 Wed, 16 Oct 2024 09:22: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t10EJ-0001Bq-Rd
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:07 +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 1cfb6a3a-8ba0-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:22:06 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-539e59dadebso5207882e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:22:06 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d7b735dsm1500429a12.81.2024.10.16.02.22.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:22:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1cfb6a3a-8ba0-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729070526; x=1729675326; 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=h+uOIbnyYxZ/WLhPfKo8hVQOG+Rxo/yE/F0IsZGaydY=;
        b=l2cuy58vKcX9FGuoPCMmkR2UiP27uh0K6qK5iSOFSD0MDcxZq/j6NvdTq5usELb/ta
         Pzy5OBc2OiNZc0J+oWghP1I0X4gRNUWbkNQT/v+1BFynQFva6ckMc2e1mlQXISe0gn0W
         PSWzrnfBXy8wXMJGgOUcvsMPRF6vLJsdr0LaQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070526; x=1729675326;
        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=h+uOIbnyYxZ/WLhPfKo8hVQOG+Rxo/yE/F0IsZGaydY=;
        b=kTplmYMhL7I7F2SU3+dXFxB409gvPOLsE3R+RNa3PIFLopIXrMEcauQYDNZMbDlEPk
         GtzU4Imaa7q+RA128pEAhgrzDWNvnqRaBlWj5Da46OdsvnEYEKixvleE1+FmTUIgqiX7
         M/O3xAfkACKxdpi3AnEGmzNFlV9bqe7j2RnK+xiUhss+iV2DN1xIs7z9ZOr4RjBl7loG
         fXsO+GfoSesI1sAGywgCrf0E97z+BCc+DpETP3+zU21SELyr0m3YRZDayOwGjOZw/Eoy
         dHeLzJP8TuE6i0MgeNTqCbfNP4SOsFLDJL82/gA1GWiLUJCdrrIIJFLpUZgGZbYaHe4R
         WOzg==
X-Gm-Message-State: AOJu0YxiqSpFtSNAibTuANpC1onSD0dIP/z9wQH9yagw+Y+ugdhXyuGd
	wfDabrplH4jztMV05SSeU6JkDqdDPTTSh23F5QHdnrxqBXmGYYVmfrgWufP5VwWvY3zPtYkGLPa
	z
X-Google-Smtp-Source: AGHT+IE3kfc6ql6F3rMXWK2dycJ9PVsbboGylut87rU8ycpzzXulha+H48ehdThXLBWWR9CjMJwJwg==
X-Received: by 2002:a05:6512:1283:b0:539:fcb7:8d53 with SMTP id 2adb3069b0e04-53a03f7cf60mr2115338e87.46.1729070526045;
        Wed, 16 Oct 2024 02:22:06 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v5 0/5] Reuse 32 bit C code more safely
Date: Wed, 16 Oct 2024 10:21:49 +0100
Message-Id: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series attempt to:
- use more C code, that is replace some assembly code with C;
- avoid some code duplication between C and assembly;
- prevent some issues having relocations in C code.

The idea is extending the current C to binary code conversion
done for 32 bit C code called from head.S making sure relocations
are safe and allowing external symbols usage from C code.

More details of the implementation are in commit message 1/5,
which is the largest patch.
Patch 2/5 reuses code to relocate the trampoline between 32 and 64 bit.
Patches 3/5 and 4/5 move some code from assembly to C.

Other RFC commits were excluded, I didn't manage to entangle the issues
sharing headers between 32 and 64 bits.
Since RFC code was more tested, also with CI and some incompatibility
were fixed. On that it's weird that we need Python 3.8 for Qemu but we
still use Python 2 for Xen. Shouldn't we bump requirement to Python 3
even for Xen?

Code boots successfully using:
- BIOS boot;
- EFI boot with Grub2 and ELF file;
- direct EFI boot without Grub.

Code is currently based on "master" branch, currently commit
3f6ee3db2e878398cfcde725399b4d1b04e92269.

Changes since v1:
- 2 preliminary commits for adjust .gitignore;
- last commit split (one variable at a time);
- lot of style and names changes;
- first commit, now 3/6 had some build changes, more details on
  commit message.

Changes since v2:
- removed merged commits;
- reverted order of 2 commits;
- remove some useless casts;
- added change to comment.

Changes since v3:
- added a preparation commit for Makefiles (mainly written by Andrew Cooper);
- added a comment improvement commit;
- allows also data;
- other minor style changes;
- added some Reviewed-by.

Changes since v4:
- add build32.final.lds build32.other.lds to targets macro;
- place some comments over a rule, not inside;
- simplified linking and producing binary rule;
- renamed built_in_32 to built-in-32, coding style;
- fix minor indentation;
- put magic numbers in Makefile and propagate them;
- minor variable clanups in Python script;
- add dependency to Python script.

Frediano Ziglio (5):
  x86/boot: create a C bundle for 32 bit boot code and use it
  x86/boot: Reuse code to relocate trampoline
  x86/boot: Use boot_vid_info variable directly from C code
  x86/boot: Use trampoline_phys variable directly from C code
  x86/boot: Clarify comment

 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  51 +++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  41 +++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  49 +---
 xen/arch/x86/boot/reloc-trampoline.c          |  36 +++
 xen/arch/x86/boot/reloc.c                     |  35 +--
 xen/arch/x86/efi/efi-boot.h                   |  15 +-
 xen/tools/combine_two_binaries.py             | 218 ++++++++++++++++++
 9 files changed, 348 insertions(+), 114 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (63%)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
 create mode 100755 xen/tools/combine_two_binaries.py

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819757.1233217 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10EP-0001bq-Nq; Wed, 16 Oct 2024 09:22:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819757.1233217; Wed, 16 Oct 2024 09:22: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 1t10EP-0001Zy-Hr; Wed, 16 Oct 2024 09:22:13 +0000
Received: by outflank-mailman (input) for mailman id 819757;
 Wed, 16 Oct 2024 09:22: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t10EN-0001Po-NF
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:11 +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 1eefe474-8ba0-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:22:10 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c9693dc739so5118725a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:22:10 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d7b735dsm1500429a12.81.2024.10.16.02.22.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:22:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1eefe474-8ba0-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729070529; x=1729675329; 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=XzEVlEnNeKtsG4oZ8vIN3HV3hoDau6dk7zOGpeVNZ9s=;
        b=YFiBdzIufeQCHPWIQL/0TEqbkyCu3zPagUFZsYhZLjb6/UaJEttihz156zrkgebumr
         CoakBG96Yt+sKIPZc/wv6TO5E+YW+0osaUGtSzxLOFGnmzaLuuAqBTgEFrBYITYLMFE9
         zXG3pCeMfR7wreEk8mqjTbTj6BGuPHPjEox8Y=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070529; x=1729675329;
        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=XzEVlEnNeKtsG4oZ8vIN3HV3hoDau6dk7zOGpeVNZ9s=;
        b=g8KigmDxEO1oXC0Zr3RyWONNOWT6RINZXinSYKbWvETs2G1+G0KXmWgMAHHuFkmcyf
         5aPD7V/XVxNShGoXYhcgNlL6sfrRiHdmCPckpOauYk/kWLC0Q/paIr/76w7R9Nu8ArLs
         KlRU6GQwKLuOexjN3QlJQWXM3kkdAMTARYe3KNriIFLxwC8WTYCEeFyM+U5rcZdmK5qH
         kFg2zG/awUWIF5MLRYB99gzm2PWbkABD01wfBZrrGHmd8OH4bsHZZSjbqfTr2O2PV8s+
         l/4aliZzrSBT0Cqup9Z7Dqqiclj/t31zGhB/sN/nLxpBT45U5AMTAkGkzHOM0BeNZMNG
         1bog==
X-Gm-Message-State: AOJu0YyphXsvdJfJaAyi7aHmwT8SbxjMEapyo3OWM8uaPCtyuMjp7GsA
	nGz1KadvrslPedc8FcdabRx7hJwfm00Hd1qLCi4HeqoVeTCKxGsdQvKFTtANBWLCzjt15VW2hsZ
	J
X-Google-Smtp-Source: AGHT+IHohGUVdY4sTxAvaiFNp1up++HCBeuU9Xmp8/ixL7XlHSMh7T3ky3iziP2QdOnDIeFlLArrAg==
X-Received: by 2002:a05:6402:3210:b0:5c5:b6a4:4ac1 with SMTP id 4fb4d7f45d1cf-5c95ac0d3eamr9519985a12.11.1729070529160;
        Wed, 16 Oct 2024 02:22:09 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v5 3/5] x86/boot: Use boot_vid_info variable directly from C code
Date: Wed, 16 Oct 2024 10:21:52 +0100
Message-Id: <20241016092154.1493035-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order.
---
 xen/arch/x86/boot/build32.lds.S |  1 +
 xen/arch/x86/boot/head.S        | 10 +---------
 xen/arch/x86/boot/reloc.c       | 13 +++++--------
 3 files changed, 7 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index fa282370f4..88b1964845 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -46,6 +46,7 @@ SECTIONS
         DECLARE_IMPORT(__trampoline_seg_start);
         DECLARE_IMPORT(__trampoline_seg_stop);
         DECLARE_IMPORT(trampoline_phys);
+        DECLARE_IMPORT(boot_vid_info);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index ade2c5c43d..5da7ac138f 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -514,18 +514,10 @@ trampoline_setup:
         mov     sym_esi(trampoline_phys), %ecx
         add     $TRAMPOLINE_SPACE,%ecx
 
-#ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %edx
-#else
-        xor     %edx, %edx
-#endif
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
-        push    %edx                /* Boot video info to be filled from MB2. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
         call    reloc
-        add     $4, %esp
 
 #ifdef CONFIG_PVH_GUEST
         cmpb    $0, sym_esi(pvh_boot)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 94b078d7b1..707d9c5f15 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -176,7 +176,7 @@ static multiboot_info_t *mbi_reloc(uint32_t mbi_in, memctx *ctx)
     return mbi_out;
 }
 
-static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx *ctx)
+static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 {
     const multiboot2_fixed_t *mbi_fix = _p(mbi_in);
     const multiboot2_memory_map_t *mmap_src;
@@ -185,7 +185,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
     memory_map_t *mmap_dst;
     multiboot_info_t *mbi_out;
 #ifdef CONFIG_VIDEO
-    struct boot_video_info *video = NULL;
+    struct boot_video_info *video = &boot_vid_info;
 #endif
     uint32_t ptr;
     unsigned int i, mod_idx = 0;
@@ -290,12 +290,11 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 
 #ifdef CONFIG_VIDEO
         case MULTIBOOT2_TAG_TYPE_VBE:
-            if ( video_out )
+            if ( video )
             {
                 const struct vesa_ctrl_info *ci;
                 const struct vesa_mode_info *mi;
 
-                video = _p(video_out);
                 ci = (const void *)get_mb2_data(tag, vbe, vbe_control_info);
                 mi = (const void *)get_mb2_data(tag, vbe, vbe_mode_info);
 
@@ -321,7 +320,6 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
             if ( (get_mb2_data(tag, framebuffer, framebuffer_type) !=
                   MULTIBOOT2_FRAMEBUFFER_TYPE_RGB) )
             {
-                video_out = 0;
                 video = NULL;
             }
             break;
@@ -346,8 +344,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
-            uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
 {
     memctx ctx = { trampoline };
 
@@ -357,7 +354,7 @@ void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
         return mbi_reloc(in, &ctx);
 
     case MULTIBOOT2_BOOTLOADER_MAGIC:
-        return mbi2_reloc(in, video_info, &ctx);
+        return mbi2_reloc(in, &ctx);
 
     case XEN_HVM_START_MAGIC_VALUE:
         if ( IS_ENABLED(CONFIG_PVH_GUEST) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819756.1233211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10EP-0001UG-Cx; Wed, 16 Oct 2024 09:22:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819756.1233211; Wed, 16 Oct 2024 09:22: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 1t10EP-0001Su-8S; Wed, 16 Oct 2024 09:22:13 +0000
Received: by outflank-mailman (input) for mailman id 819756;
 Wed, 16 Oct 2024 09: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t10EM-0001Po-Ss
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:10 +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 1e4cb635-8ba0-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:22:09 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fb559b0b00so22815681fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:22:09 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d7b735dsm1500429a12.81.2024.10.16.02.22.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:22:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1e4cb635-8ba0-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729070528; x=1729675328; 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=a7VcpN6y0URlDmG4dL4A6Jp+RGqHH6gYK9P+8EaJqbU=;
        b=O8a09peI15Tqu5tarB83vv2VkJlMSbx+RNuuhQaBxmne4pCOyVsnYcgcFN0o08zizp
         3AY/LcI1/JzWy0xhVURONIjqXH/xa5WGL5d1zeeBqx1Y8zdmOVnZkqpP5Ai6XXpv+sRx
         +djRbbMjsWr4yiwDLo0gWPvUZkdo1KaoSuUaQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070528; x=1729675328;
        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=a7VcpN6y0URlDmG4dL4A6Jp+RGqHH6gYK9P+8EaJqbU=;
        b=wMv3byJeUR9p1vDGzkkWnmZ6vtsAFXMJAjSRZacCVXI40gZLy1n4jveqZaf/rrQsR0
         s7ePTUzooQlb9HWJM64pT3r96vqCMMP7m1CRNjGQYStYHhitji7VwToGx42rm2tg009v
         SX/NewKNXz/+1LNgxPtFNS7PrI0ibRLguH+CtZWOy+s0A5RCA3+A8Ml+M3/+9CbCkRd5
         opMwHmM3hzK/rK3gQN1vL5hTFuLDfCMsVCQjezT2cAn3Va88N4Mj7HbrjQdzFhJYZ/eV
         12Mqh5tQIPRrbwD+NX0cT5wRmmJxMuXFPmmGdjh8RnudxKwIqPCxFJfYRecuRUBjPQ0l
         UhMQ==
X-Gm-Message-State: AOJu0YwcazoalfEt1Nii3+bufV0aUzfkMEAYsVBATDqpRR+cZDWMXk7w
	QyRTpCqOh1nxD9JsLXEmxq8s44Dx9cEkDN4QYv6tcRvY6nqUAAgsnNU/mxjFKvWjHdp8YmR1xzU
	2
X-Google-Smtp-Source: AGHT+IEOuhxjvaPkF0dYqQwfl81tkFDF31y8g8xuONjSKZq1ep8sAPuF7lVlLUs/1457fR1wsgjAFw==
X-Received: by 2002:a2e:4609:0:b0:2fb:2bda:3872 with SMTP id 38308e7fff4ca-2fb3f31e022mr49194961fa.45.1729070528058;
        Wed, 16 Oct 2024 02:22:08 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v5 2/5] x86/boot: Reuse code to relocate trampoline
Date: Wed, 16 Oct 2024 10:21:51 +0100
Message-Id: <20241016092154.1493035-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Move code from efi-boot.h to a separate, new, reloc-trampoline.c file.
Reuse this new code, compiling it for 32bit as well, to replace assembly
code in head.S doing the same thing.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v3:
- fixed a typo in comment;
- added Reviewed-by.
---
 xen/arch/x86/boot/Makefile           | 12 ++++++----
 xen/arch/x86/boot/build32.lds.S      |  5 ++++
 xen/arch/x86/boot/head.S             | 23 +-----------------
 xen/arch/x86/boot/reloc-trampoline.c | 36 ++++++++++++++++++++++++++++
 xen/arch/x86/efi/efi-boot.h          | 15 ++----------
 5 files changed, 52 insertions(+), 39 deletions(-)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index c665a9b420..c57c9f83d3 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,12 +1,16 @@
 obj-bin-y += head.o
 obj-bin-y += built-in-32.o
+obj-bin-y += $(obj64)
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
+obj32 += reloc-trampoline.32.o
 
-nocov-y   += $(obj32)
-noubsan-y += $(obj32)
-targets   += $(obj32)
+obj64 := reloc-trampoline.o
+
+nocov-y   += $(obj32) $(obj64)
+noubsan-y += $(obj32) $(obj64)
+targets   += $(obj32) $(obj64)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
@@ -57,7 +61,7 @@ $(obj)/built-in-32.S: $(obj)/built-in-32.other.bin $(obj)/built-in-32.final.bin
 		--bin1 $(obj)/built-in-32.other.bin \
 		--bin2 $(obj)/built-in-32.final.bin \
 		--map $(obj)/built-in-32.final.map \
-		--exports cmdline_parse_early,reloc \
+		--exports cmdline_parse_early,reloc,reloc_trampoline32 \
 		--output $@
 
 clean-files := built-in-32.*.bin built-in-32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index e3f5e55261..fa282370f4 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -41,6 +41,11 @@ SECTIONS
          * Potentially they should be all variables. */
         DECLARE_IMPORT(__base_relocs_start);
         DECLARE_IMPORT(__base_relocs_end);
+        DECLARE_IMPORT(__trampoline_rel_start);
+        DECLARE_IMPORT(__trampoline_rel_stop);
+        DECLARE_IMPORT(__trampoline_seg_start);
+        DECLARE_IMPORT(__trampoline_seg_stop);
+        DECLARE_IMPORT(trampoline_phys);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0776e3896..ade2c5c43d 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -706,28 +706,7 @@ trampoline_setup:
         mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
 
         /* Apply relocations to bootstrap trampoline. */
-        mov     sym_esi(trampoline_phys), %edx
-        lea     sym_esi(__trampoline_rel_start), %edi
-        lea     sym_esi(__trampoline_rel_stop), %ecx
-1:
-        mov     (%edi), %eax
-        add     %edx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
-
-        /* Patch in the trampoline segment. */
-        shr     $4,%edx
-        lea     sym_esi(__trampoline_seg_start), %edi
-        lea     sym_esi(__trampoline_seg_stop), %ecx
-1:
-        mov     (%edi), %eax
-        mov     %dx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
+        call    reloc_trampoline32
 
         /* Do not parse command line on EFI platform here. */
         cmpb    $0, sym_esi(efi_platform)
diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
new file mode 100644
index 0000000000..0a74c1e75a
--- /dev/null
+++ b/xen/arch/x86/boot/reloc-trampoline.c
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/compiler.h>
+#include <xen/stdint.h>
+#include <asm/trampoline.h>
+
+extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+
+#if defined(__i386__)
+void reloc_trampoline32(void)
+#elif defined (__x86_64__)
+void reloc_trampoline64(void)
+#else
+#error Unknown architecture
+#endif
+{
+    unsigned long phys = trampoline_phys;
+    const int32_t *trampoline_ptr;
+
+    /*
+     * Apply relocations to trampoline.
+     *
+     * This modifies the trampoline in place within Xen, so that it will
+     * operate correctly when copied into place.
+     */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f3443364..1acceec471 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned long delta)
     }
 }
 
-extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+void reloc_trampoline64(void);
 
 static void __init relocate_trampoline(unsigned long phys)
 {
-    const int32_t *trampoline_ptr;
-
     trampoline_phys = phys;
 
     if ( !efi_enabled(EFI_LOADER) )
         return;
 
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+    reloc_trampoline64();
 }
 
 static void __init place_string(u32 *addr, const char *s)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819755.1233206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10EP-0001RX-5I; Wed, 16 Oct 2024 09:22:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819755.1233206; Wed, 16 Oct 2024 09:22: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 1t10EP-0001RO-1C; Wed, 16 Oct 2024 09:22:13 +0000
Received: by outflank-mailman (input) for mailman id 819755;
 Wed, 16 Oct 2024 09:22: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t10EL-0001Bq-9k
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:09 +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 1db71941-8ba0-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:22:08 +0200 (CEST)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2fb58980711so26272551fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:22:08 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d7b735dsm1500429a12.81.2024.10.16.02.22.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:22:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1db71941-8ba0-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729070527; x=1729675327; 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=X+5R4r2nKy7+Sux5Q5S/t+fFYNXrcOjqAy81uCpWX2g=;
        b=afIQwimfM5jN7nUdJmsGTWFF16qnJERI3lfA/mLpdoYx2uL29Zk7ztOBL0FkSVw0JH
         QEICX/czQgMCyrMQk9tyut6aYnKKyUgfQc5oVSbd5S6L639KekparBHs5zX/OcNXbxRU
         3sJtXaMhD3oUO7YGm+Kd41ksbqGCZLGwWn0YY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070527; x=1729675327;
        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=X+5R4r2nKy7+Sux5Q5S/t+fFYNXrcOjqAy81uCpWX2g=;
        b=PYT/MnZ8ch4eBqVdnHlTpON+kyHDMVIT/bcaCv/cv53/gxiQr8i+BD8B/foFIL+5Od
         ndH0Zt45C9tihtEK32C0DYINL4HKcdcWW7gi3VZrQq96QLi+YCxujdTcWT5u/J5kLShd
         oZuqK3OGeB5b7qhBSs9ffBsGgNq0BePlumJH/5uuhPt1xJ3MyzlE3dLoAYbY7ZDR96A8
         zV5Px7Kqg9myfArMpZOD/WVOhIzDNi/SJhiRLJTrdd+wzJa+ZTgWUMiIz6TSbTs6BNda
         jbQ970jezTV2FNSjey4uR6L7etFaBjIoR7WTnGkARl01W6MMkfvBXh3udh7Sg4gpW3Ob
         IMEQ==
X-Gm-Message-State: AOJu0Yzh41L0EMTFEUWPk1UQEJ/d4ZMjhZxYZy5sWADh0bh24JyJussX
	mtloT9qSLzm+CMjNegurobWEVBgOGLmpzV0WscEi49LXLRzlAkwWUByinIyhZf2PFZ8iH7jhL1w
	m
X-Google-Smtp-Source: AGHT+IHu1kIDZD01ywdpkmMfZTpXfH00nHWnfZpBSRcUBS+0rXaPcagXlTyB71F64BIT25yTacrUew==
X-Received: by 2002:a2e:851:0:b0:2fb:5124:b8e0 with SMTP id 38308e7fff4ca-2fb61b3f8c8mr16951061fa.9.1729070527120;
        Wed, 16 Oct 2024 02:22:07 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v5 1/5] x86/boot: create a C bundle for 32 bit boot code and use it
Date: Wed, 16 Oct 2024 10:21:50 +0100
Message-Id: <20241016092154.1493035-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The current method to include 32 bit C boot code is:
- compile each function we want to use into a separate object file;
- each function is compiled with -fpic option;
- convert these object files to binary files. This operation removes GOP
  which we don't want in the executable;
- a small assembly part in each file add the entry point;
- code can't have external references, all possible variables are passed
  by value or pointer;
- include these binary files in head.S.

There are currently some limitations:
- code is compiled separately, it's not possible to share a function
  (like memcpy) between different functions to use;
- although code is compiled with -fpic there's no certainty there are
  no relocations, specifically data ones. This can lead into hard to
  find bugs;
- it's hard to add a simple function;
- having to pass external variables makes hard to do multiple things
  otherwise functions would require a lot of parameters so code would
  have to be split into multiple functions which is not easy.

Current change extends the current process:
- all object files are linked together before getting converted making
  possible to share code between the function we want to call;
- a single object file is generated with all functions to use and
  exported symbols to easily call;
- variables to use are declared in linker script and easily used inside
  C code. Declaring them manually could be annoying but makes also
  easier to check them. Using external pointers can be still an issue if
  they are not fixed. If an external symbol is not declared this gives a
  link error.

Some details of the implementation:
- C code is compiled with -fpic flags (as before);
- object files from C code are linked together;
- the single bundled object file is linked with 2 slightly different
  script files to generate 2 bundled object files;
- the 2 bundled object files are converted to binary removing the need
  for global offset tables;
- a Python script is used to generate assembly source from the 2
  binaries;
- the single assembly file is compiled to generate final bundled object
  file;
- to detect possible unwanted relocation in data/code code is generated
  with different addresses. This is enforced starting .text section at
  different positions and adding a fixed "gap" at the beginning.
  This makes sure code and data is position independent;
- to detect used symbols in data/code symbols are placed in .text
  section at different offsets (based on the line in the linker script).
  This is needed as potentially a reference to a symbol is converted to
  a reference to the containing section so multiple symbols could be
  converted to reference to same symbol (section name) and we need to
  distinguish them;
- --orphan-handling=error option to linker is used to make sure we
  account for all possible sections from C code;

Current limitations:
- the main one is the lack of support for 64 bit code. It would make
  sure that even the code used for 64 bit (at the moment EFI code) is
  code and data position independent. We cannot assume that code that
  came from code compiled for 32 bit and compiled for 64 bit is code and
  data position independent, different compiler options lead to
  different code/data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v2:
- removed W^X limitation, allowing data;
- added some comments to python script;
- added extension to python script;
- added header to generated assembly code from python script;
- added starting symbol to generated assembly code from python script
  to make disassembly more clear;
- other minor style changes to python script.

Changes since v4:
- add build32.final.lds build32.other.lds to targets macro;
- place some comments over a rule, not inside;
- simplified linking and producing binary rule;
- renamed built_in_32 to built-in-32, coding style;
- fix minor indentation;
- put magic numbers in Makefile and propagate them;
- minor variable clanups in Python script;
- add dependency to Python script.
---
 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  45 +++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  35 ++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  12 -
 xen/arch/x86/boot/reloc.c                     |  14 --
 xen/tools/combine_two_binaries.py             | 218 ++++++++++++++++++
 7 files changed, 286 insertions(+), 55 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (70%)
 create mode 100755 xen/tools/combine_two_binaries.py

diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
index a379db7988..7e85549751 100644
--- a/xen/arch/x86/boot/.gitignore
+++ b/xen/arch/x86/boot/.gitignore
@@ -1,3 +1,4 @@
 /mkelf32
-/*.bin
-/*.lnk
+/build32.*.lds
+/built-in-32.*.bin
+/built-in-32.*.map
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 1199291d2b..c665a9b420 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,4 +1,5 @@
 obj-bin-y += head.o
+obj-bin-y += built-in-32.o
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
@@ -9,9 +10,6 @@ targets   += $(obj32)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
-$(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(obj32:.32.o=.bin)
-
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
 CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
@@ -25,14 +23,41 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
 $(obj)/%.32.o: $(src)/%.c FORCE
 	$(call if_changed_rule,cc_o_c)
 
+orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
 LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
 
-%.bin: %.lnk
-	$(OBJCOPY) -j .text -O binary $< $@
-
-%.lnk: %.32.o $(src)/build32.lds
-	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
-
-clean-files := *.lnk *.bin
+text_gap := 0x010200
+text_diff := 0x408020
+
+$(obj)/build32.other.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff)
+$(obj)/build32.final.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff) -DFINAL
+$(obj)/build32.other.lds $(obj)/build32.final.lds: $(src)/build32.lds.S FORCE
+	$(call if_changed_dep,cpp_lds_S)
+
+targets += build32.final.lds build32.other.lds
+
+# link all 32bit objects together
+$(obj)/built-in-32.tmp.o: $(obj32)
+	$(LD32) -r -o $@ $^
+
+# link bundle with a given layout and extract a binary from it
+$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.o
+	$(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=map) -o $(@:bin=o) $(filter %.o,$^)
+	$(OBJCOPY) -j .text -O binary $(@:bin=o) $@
+	rm -f $(@:bin=o)
+
+# generate final object file combining and checking above binaries
+$(obj)/built-in-32.S: $(obj)/built-in-32.other.bin $(obj)/built-in-32.final.bin \
+	$(srctree)/tools/combine_two_binaries.py
+	$(PYTHON) $(srctree)/tools/combine_two_binaries.py \
+		--gap=$$(( $(text_gap) )) --text-diff=$$(( $(text_diff) )) \
+		--script $(obj)/build32.final.lds \
+		--bin1 $(obj)/built-in-32.other.bin \
+		--bin2 $(obj)/built-in-32.final.bin \
+		--map $(obj)/built-in-32.final.map \
+		--exports cmdline_parse_early,reloc \
+		--output $@
+
+clean-files := built-in-32.*.bin built-in-32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
similarity index 70%
rename from xen/arch/x86/boot/build32.lds
rename to xen/arch/x86/boot/build32.lds.S
index 56edaa727b..e3f5e55261 100644
--- a/xen/arch/x86/boot/build32.lds
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -15,22 +15,47 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-ENTRY(_start)
+#ifdef FINAL
+#  undef GAP
+#  define GAP 0
+#  define MULT 0
+#  define TEXT_START
+#else
+#  define MULT 1
+#  define TEXT_START TEXT_DIFF
+#endif
+#define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
+
+ENTRY(dummy_start)
 
 SECTIONS
 {
   /* Merge code and data into one section. */
-  .text : {
+  .text TEXT_START : {
+        /* Silence linker warning, we are not going to use it */
+        dummy_start = .;
+
+        /* Declare below any symbol name needed.
+         * Each symbol should be on its own line.
+         * It looks like a tedious work but we make sure the things we use.
+         * Potentially they should be all variables. */
+        DECLARE_IMPORT(__base_relocs_start);
+        DECLARE_IMPORT(__base_relocs_end);
+        . = . + GAP;
         *(.text)
         *(.text.*)
-        *(.data)
-        *(.data.*)
         *(.rodata)
         *(.rodata.*)
+        *(.data)
+        *(.data.*)
         *(.bss)
         *(.bss.*)
   }
-
+  /DISCARD/ : {
+       *(.comment)
+       *(.comment.*)
+       *(.note.*)
+  }
   /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
   .got : {
         *(.got)
diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index fc9241ede9..196c580e91 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -18,18 +18,6 @@
  * Linux kernel source (linux/lib/string.c).
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax      = &cmdline,
- *   - %edx      = &early_boot_opts.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  cmdline_parse_early      \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/kconfig.h>
 #include <xen/macros.h>
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index c4de1dfab5..e0776e3896 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -759,18 +759,6 @@ trampoline_setup:
         /* Jump into the relocated trampoline. */
         lret
 
-        /*
-         * cmdline and reloc are written in C, and linked to be 32bit PIC with
-         * entrypoints at 0 and using the fastcall convention.
-         */
-FUNC_LOCAL(cmdline_parse_early)
-        .incbin "cmdline.bin"
-END(cmdline_parse_early)
-
-FUNC_LOCAL(reloc)
-        .incbin "reloc.bin"
-END(reloc)
-
 ENTRY(trampoline_start)
 #include "trampoline.S"
 ENTRY(trampoline_end)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 8c58affcd9..94b078d7b1 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -12,20 +12,6 @@
  *    Daniel Kiper <daniel.kiper@oracle.com>
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax       = MAGIC,
- *   - %edx       = INFORMATION_ADDRESS,
- *   - %ecx       = TOPMOST_LOW_MEMORY_STACK_ADDRESS.
- *   - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  reloc                    \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/macros.h>
 #include <xen/types.h>
diff --git a/xen/tools/combine_two_binaries.py b/xen/tools/combine_two_binaries.py
new file mode 100755
index 0000000000..4ea899b6fc
--- /dev/null
+++ b/xen/tools/combine_two_binaries.py
@@ -0,0 +1,218 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+import argparse
+import re
+import struct
+import sys
+
+parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
+parser.add_argument('--script', dest='script',
+                    required=True,
+                    help='Linker script for extracting symbols')
+parser.add_argument('--bin1', dest='bin1',
+                    required=True,
+                    help='First binary')
+parser.add_argument('--bin2', dest='bin2',
+                    required=True,
+                    help='Second binary')
+parser.add_argument('--gap', dest='gap',
+                    required=True,
+                    type=int,
+                    help='Gap inserted at the start of code section')
+parser.add_argument('--text-diff', dest='text_diff',
+                    required=True,
+                    type=int,
+                    help='Difference between code section start')
+parser.add_argument('--output', dest='output',
+                    help='Output file')
+parser.add_argument('--map', dest='mapfile',
+                    help='Map file to read for symbols to export')
+parser.add_argument('--exports', dest='exports',
+                    help='Symbols to export')
+parser.add_argument('--section-header', dest='section_header',
+                    default='.section .init.text, "ax", @progbits',
+                    help='Section header declaration')
+parser.add_argument('-v', '--verbose',
+                    action='store_true')
+args = parser.parse_args()
+
+gap = args.gap
+text_diff = args.text_diff
+
+# Parse linker script for external symbols to use.
+# Next regex matches expanded DECLARE_IMPORT lines in linker script.
+symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')
+symbols = {}
+lines = {}
+for line in open(args.script):
+    m = symbol_re.match(line)
+    if not m:
+        continue
+    (name, line_num) = (m.group(1), int(m.group(2)))
+    if line_num == 0:
+        raise Exception("Invalid line number found:\n\t" + line)
+    if line_num in symbols:
+        raise Exception("Symbol with this line already present:\n\t" + line)
+    if name in lines:
+        raise Exception("Symbol with this name already present:\n\t" + name)
+    symbols[line_num] = name
+    lines[name] = line_num
+
+exports = []
+if args.exports is not None:
+    exports = dict([(name, None) for name in args.exports.split(',')])
+
+# Parse mapfile, look for ther symbols we want to export.
+if args.mapfile is not None:
+    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
+    for line in open(args.mapfile):
+        m = symbol_re.match(line)
+        if not m or m.group(2) not in exports:
+            continue
+        addr = int(m.group(1), 16)
+        exports[m.group(2)] = addr
+for (name, addr) in exports.items():
+    if addr is None:
+        raise Exception("Required export symbols %s not found" % name)
+
+file1 = open(args.bin1, 'rb')
+file2 = open(args.bin2, 'rb')
+file1.seek(0, 2)
+size1 = file1.tell()
+file2.seek(0, 2)
+size2 = file2.tell()
+if size1 > size2:
+    file1, file2 = file2, file1
+    size1, size2 = size2, size1
+if size2 != size1 + gap:
+    raise Exception('File sizes do not match')
+del size2
+
+file1.seek(0, 0)
+data1 = file1.read(size1)
+del file1
+file2.seek(gap, 0)
+data2 = file2.read(size1)
+del file2
+
+max_line = max(symbols.keys())
+
+def to_int32(n):
+    '''Convert a number to signed 32 bit integer truncating if needed'''
+    mask = (1 << 32) - 1
+    h = 1 << 31
+    return (n & mask) ^ h - h
+
+i = 0
+references = {}
+internals = 0
+while i <= size1 - 4:
+    n1 = struct.unpack('<I', data1[i:i+4])[0]
+    n2 = struct.unpack('<I', data2[i:i+4])[0]
+    i += 1
+    # The two numbers are the same, no problems
+    if n1 == n2:
+        continue
+    # Try to understand why they are different
+    diff = to_int32(n1 - n2)
+    if diff == -gap: # this is an internal relocation
+        pos = i - 1
+        print("Internal relocation found at position %#x "
+              "n1=%#x n2=%#x diff=%#x" % (pos, n1, n2, diff),
+              file=sys.stderr)
+        i += 3
+        internals += 1
+        if internals >= 10:
+            break
+        continue
+    # This is a relative relocation to a symbol, accepted, code/data is
+    # relocatable.
+    if diff < gap and diff >= gap - max_line:
+        n = gap - diff
+        symbol = symbols.get(n)
+        # check we have a symbol
+        if symbol is None:
+            raise Exception("Cannot find symbol for line %d" % n)
+        pos = i - 1
+        if args.verbose:
+            print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
+        i += 3
+        references[pos] = symbol
+        continue
+    # First byte is the same, move to next byte
+    if diff & 0xff == 0 and i <= size1 - 4:
+       continue
+    # Probably a type of relocation we don't want or support
+    pos = i - 1
+    suggestion = ''
+    symbol = symbols.get(-diff - text_diff)
+    if symbol is not None:
+        suggestion = " Maybe %s is not defined as hidden?" % symbol
+    raise Exception("Unexpected difference found at %#x "
+                    "n1=%#x n2=%#x diff=%#x gap=%#x.%s" % \
+                    (pos, n1, n2, diff, gap, suggestion))
+if internals != 0:
+    raise Exception("Previous relocations found")
+
+def line_bytes(buf, out):
+    '''Output an assembly line with all bytes in "buf"'''
+    # Python 2 compatibility
+    if type(buf) == str:
+        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
+    else:
+        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)
+
+def part(start, end, out):
+    '''Output bytes of "data" from "start" to "end"'''
+    while start < end:
+        e = min(start + 16, end)
+        line_bytes(data1[start:e], out)
+        start = e
+
+def reference(pos, out):
+    name = references[pos]
+    n = struct.unpack('<I', data1[pos:pos+4])[0]
+    sign = '+'
+    if n >= (1 << 31):
+        n -= (1 << 32)
+    n += pos
+    if n < 0:
+        n = -n
+        sign = '-'
+    print("\t.hidden %s\n"
+          "\t.long %s %s %#x - ." % (name, name, sign, n),
+          file=out)
+
+def output(out):
+    prev = 0
+    exports_by_addr = {}
+    for (sym, addr) in exports.items():
+        exports_by_addr.setdefault(addr, []).append(sym)
+    positions = list(references.keys())
+    positions += list(exports_by_addr.keys())
+    for pos in sorted(positions):
+        part(prev, pos, out)
+        prev = pos
+        if pos in references:
+            reference(pos, out)
+            prev = pos + 4
+        if pos in exports_by_addr:
+            for sym in exports_by_addr[pos]:
+                print("\t.global %s\n"
+                      "\t.hidden %s\n"
+                      "%s:" % (sym, sym, sym),
+                      file=out)
+    part(prev, size1, out)
+
+out = sys.stdout
+if args.output is not None:
+    out = open(args.output, 'w')
+print('''/*
+ * File autogenerated by combine_two_binaries.py DO NOT EDIT
+ */''', file=out)
+print('\t' + args.section_header, file=out)
+print('obj32_start:', file=out)
+output(out)
+print('\n\t.section\t.note.GNU-stack,"",@progbits', file=out)
+out.flush()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819758.1233224 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10EQ-0001mW-AM; Wed, 16 Oct 2024 09:22:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819758.1233224; Wed, 16 Oct 2024 09: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 1t10EQ-0001il-3K; Wed, 16 Oct 2024 09:22:14 +0000
Received: by outflank-mailman (input) for mailman id 819758;
 Wed, 16 Oct 2024 09:22: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t10EO-0001Po-J4
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:12 +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 1f614e4c-8ba0-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:22:11 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c9150f9ed4so8037730a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:22:10 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d7b735dsm1500429a12.81.2024.10.16.02.22.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:22:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f614e4c-8ba0-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729070530; x=1729675330; 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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=iB/9f9wBAY3N/x5wNuLAFz5HyvBqhfoP69DpAtB+YTjSD+hgcbnT3mrZL09hlppccu
         pOZSaKoWY3UQomWbJC/KofgALpRHQ7IWURh3/+RaRmqei4OQZLhLSFiajBdjN3hmSIkZ
         ye6eWKwQkaGP5S9LMd1qv67rgi3SPFDrTr3+U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070530; x=1729675330;
        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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=IVj7+LxQuK28133+US90q3XzjRLoFXwpgsNPtRDfmzl8qbYNZAILupbv9Q8hs2cOwV
         GQ73t8iU27ukqu+VGHqI8EhXwe19mBSet8wqvBrUmNsflMApi1+05F4h/7ptKz8UKARa
         m6a6R93A28n6eLZ8sTSu1FZaikTGx/J47taiSghafIP8OB5v+Mkfq29OnxR9a+wZcRtM
         SnNZoSIHH79S96G8Vrl/Lcg3GGbvXivKNZvvE/69vQwXjQdRQ/7ZvzuwO3Zx5w1lzyI1
         jDAVA0N8M4wGY8OIUrPunJQyRhRpTuSTSlKN+RFGExWfn6Yu7Iri0Lld898qB1MsrA5H
         BoRQ==
X-Gm-Message-State: AOJu0YwreXkBHc8vWRpoF/1XYLu7Wcaug0W9qB5hrGK2ol09YO9o2KtW
	cx1Lrhl3WqS7T9gSqA8p+VHvY+ZAyJZAJaGQyCrvHCJ0TZilGD89p+lb0lJOKCIlfrWXs0qeg/6
	r
X-Google-Smtp-Source: AGHT+IGzaRIz7yNygNZTew088JJU8SGc3ar9cJeUqtLCi6t8UejaVf/0T3c5cDKAjN729sxrqbgPfg==
X-Received: by 2002:a05:6402:268a:b0:5c9:71c7:c6be with SMTP id 4fb4d7f45d1cf-5c9951212d1mr2752056a12.29.1729070530141;
        Wed, 16 Oct 2024 02:22:10 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v5 4/5] x86/boot: Use trampoline_phys variable directly from C code
Date: Wed, 16 Oct 2024 10:21:53 +0100
Message-Id: <20241016092154.1493035-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order;
- avoid useless casts.
---
 xen/arch/x86/boot/head.S  | 6 +-----
 xen/arch/x86/boot/reloc.c | 8 ++++++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 5da7ac138f..dcda91cfda 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,13 +510,9 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Get bottom-most low-memory stack address. */
-        mov     sym_esi(trampoline_phys), %ecx
-        add     $TRAMPOLINE_SPACE,%ecx
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
+        /*      reloc(magic/eax, info/edx) using fastcall. */
         call    reloc
 
 #ifdef CONFIG_PVH_GUEST
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 707d9c5f15..e50e161b27 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -19,6 +19,9 @@
 #include <xen/kconfig.h>
 #include <xen/multiboot.h>
 #include <xen/multiboot2.h>
+#include <xen/page-size.h>
+
+#include <asm/trampoline.h>
 
 #include <public/arch-x86/hvm/start_info.h>
 
@@ -344,9 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
+void *reloc(uint32_t magic, uint32_t in)
 {
-    memctx ctx = { trampoline };
+    /* Get bottom-most low-memory stack address. */
+    memctx ctx = { trampoline_phys + TRAMPOLINE_SPACE };
 
     switch ( magic )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819759.1233245 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10ER-0002KE-Lr; Wed, 16 Oct 2024 09:22:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819759.1233245; Wed, 16 Oct 2024 09:22: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 1t10ER-0002Jf-D4; Wed, 16 Oct 2024 09:22:15 +0000
Received: by outflank-mailman (input) for mailman id 819759;
 Wed, 16 Oct 2024 09: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t10EP-0001Bq-R5
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22: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 204cab70-8ba0-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:22:13 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a993a6348e0so475946166b.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:22:13 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d7b735dsm1500429a12.81.2024.10.16.02.22.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 16 Oct 2024 02:22:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 204cab70-8ba0-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729070532; x=1729675332; 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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=VYXDCk2HCNtqZlXAtA1bxlq7cu8p27aslkiwWZf8BS0nZ2du1+aTD0tbhpUk3GRsJK
         nmxOrla8hVpm31xc7wNTWfeSB5bNn9PPXdc0sjNd8B0d5mRm8llDRk70qYak0RBjEcz3
         44n+H3TKErMU1tu/li6gHErjLz8kw5lsw6KMk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729070532; x=1729675332;
        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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=UN8vDgMKdU5nBU/ucDpJ8KlPYX31UsWp+2YOQ0AjTNSU977CPZp8aX5sloH+I7ZNbR
         7amjRlp2CLDZKs5QrIEiEtLlqnsAJtla8HHQuaJMMqfPhfpiQtiZatXc8XpwiKwLOltK
         P5jm9w8Km3pdSaQTkam2FH0ar4owooQAQBsgsNif0CAtUBAtSMOe+mt2zF4GgKysiYfa
         MwThcXMl7/GeAgRzP5uGBAQH0KvwVWZ2Te/h7ZBYuHoVYUs34ZImcIq4OB+9rZyyZFdb
         boBo+jbYaWQW1s1gatt12bz+6d5pgM+wV0XoX1ZITPAAndLQSkhP5WXLAE3FqjDu+90D
         hc+w==
X-Gm-Message-State: AOJu0Yydoq25646soZi55UeLoe7OKCh9DT5bwwhINtd/WyYmb43BiIh9
	MjgXzBFnq2ZsGddrT2fpLKlC8VKJEpdU98wxa/YniAkUclAQ6i0HzOcrCbo7vg/1tMX+ia3E6Jg
	Y
X-Google-Smtp-Source: AGHT+IGPaXjFGGU05T4tItHMIKTuFU+ttj1/IJDwwxBlRLTFSP9/0FAys/YPdmjcNmjqw2XbKevvGw==
X-Received: by 2002:a05:6402:3510:b0:5c9:5aac:c622 with SMTP id 4fb4d7f45d1cf-5c95ac09918mr23962555a12.5.1729070531754;
        Wed, 16 Oct 2024 02:22:11 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v5 5/5] x86/boot: Clarify comment
Date: Wed, 16 Oct 2024 10:21:54 +0100
Message-Id: <20241016092154.1493035-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/reloc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index e50e161b27..e725cfb6eb 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -65,7 +65,7 @@ typedef struct memctx {
     /*
      * Simple bump allocator.
      *
-     * It starts from the base of the trampoline and allocates downwards.
+     * It starts on top of space reserved for the trampoline and allocates downwards.
      */
     uint32_t ptr;
 } memctx;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819760.1233255 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10EW-0002ry-S2; Wed, 16 Oct 2024 09:22:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819760.1233255; Wed, 16 Oct 2024 09:22: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 1t10EW-0002rT-Oy; Wed, 16 Oct 2024 09:22:20 +0000
Received: by outflank-mailman (input) for mailman id 819760;
 Wed, 16 Oct 2024 09:22: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t10EV-0001Po-69
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:19 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 2337074b-8ba0-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:22:17 +0200 (CEST)
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 93092FEC;
 Wed, 16 Oct 2024 02:22:46 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5457F3F528;
 Wed, 16 Oct 2024 02:22:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2337074b-8ba0-11ef-99a3-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [RFC PATCH 0/4] FF-A VM to VM support
Date: Wed, 16 Oct 2024 11:21:54 +0200
Message-ID: <cover.1729069025.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This RFC serie is a first proposal to enable VM to VM communications
through FF-A on Arm.
It is sent as an RFC because some aspects of this serie will need to be
discussed:
- How to control/configure which VM can communicate with which VM
- How to enable this without conflicting with Optee support
- Would a system communicating with Optee without FF-A but using FF-A to
  communicate between VM make any sense

One main feature missing from this serie is the support for memory
sharing or lending through FF-A. Implementing such a feature is raising
the question of how to cleanly have FF-A mem sharing living on the side
of Xen grantables.

This serie must be applied on top of [1] which introduces
some rework of FF-A support required by this patch serie.

!! This patch serie must no be merged !!

[1] https://lore.kernel.org/xen-devel/cover.1729066788.git.bertrand.marquis@arm.com/

Bertrand Marquis (4):
  xen/arm: ffa: Introduce VM to VM support
  xen/arm: ffa: Add buffer full notification support
  xen/arm: ffa: Add indirect message between VM
  xen/arm: ffa: Enable VM to VM without firmware

 xen/arch/arm/tee/Kconfig        |  11 +++
 xen/arch/arm/tee/ffa.c          |  11 +++
 xen/arch/arm/tee/ffa_msg.c      |  96 +++++++++++++++++++--
 xen/arch/arm/tee/ffa_notif.c    | 142 ++++++++++++++++++--------------
 xen/arch/arm/tee/ffa_partinfo.c | 137 ++++++++++++++++++++++++------
 xen/arch/arm/tee/ffa_private.h  |  25 ++++++
 6 files changed, 329 insertions(+), 93 deletions(-)

-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819768.1233266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10Eh-0003us-50; Wed, 16 Oct 2024 09:22:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819768.1233266; Wed, 16 Oct 2024 09: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 1t10Eh-0003ul-1C; Wed, 16 Oct 2024 09:22:31 +0000
Received: by outflank-mailman (input) for mailman id 819768;
 Wed, 16 Oct 2024 09:22: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t10Ef-0001Bq-PT
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:29 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 2a1b3bed-8ba0-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:22:29 +0200 (CEST)
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 3F283FEC;
 Wed, 16 Oct 2024 02:22:58 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6076B3F528;
 Wed, 16 Oct 2024 02:22:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a1b3bed-8ba0-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [RFC PATCH 1/4] xen/arm: ffa: Introduce VM to VM support
Date: Wed, 16 Oct 2024 11:21:55 +0200
Message-ID: <0475e48ace0acd862224e7ff628d11db94392871.1729069025.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729069025.git.bertrand.marquis@arm.com>
References: <cover.1729069025.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Create a CONFIG_FFA_VM_TO_VM parameter to activate FFA communication
between VMs.
When activated list VMs in the system with FF-A support in part_info_get.

WARNING: There is no filtering for now and all VMs are listed !!

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/Kconfig        |  11 +++
 xen/arch/arm/tee/ffa_partinfo.c | 135 ++++++++++++++++++++++++++------
 xen/arch/arm/tee/ffa_private.h  |  12 +++
 3 files changed, 135 insertions(+), 23 deletions(-)

diff --git a/xen/arch/arm/tee/Kconfig b/xen/arch/arm/tee/Kconfig
index c5b0f88d7522..88a4c4c99154 100644
--- a/xen/arch/arm/tee/Kconfig
+++ b/xen/arch/arm/tee/Kconfig
@@ -28,5 +28,16 @@ config FFA
 
 	  [1] https://developer.arm.com/documentation/den0077/latest
 
+config FFA_VM_TO_VM
+    bool "Enable FF-A between VMs (UNSUPPORTED)" if UNSUPPORTED
+    default n
+    depends on FFA
+    help
+      This option enables to use FF-A between VMs.
+      This is experimental and there is no access control so any
+      guest can communicate with any other guest.
+
+      If unsure, say N.
+
 endmenu
 
diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_partinfo.c
index fde187dba4e5..d699a267cc76 100644
--- a/xen/arch/arm/tee/ffa_partinfo.c
+++ b/xen/arch/arm/tee/ffa_partinfo.c
@@ -77,7 +77,21 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
     };
     uint32_t src_size, dst_size;
     void *dst_buf;
-    uint32_t ffa_sp_count = 0;
+    uint32_t ffa_vm_count = 0, ffa_sp_count = 0;
+#ifdef CONFIG_FFA_VM_TO_VM
+    struct domain *dom;
+
+    /* Count the number of VM with FF-A support */
+    rcu_read_lock(&domlist_read_lock);
+    for_each_domain( dom )
+    {
+        struct ffa_ctx *vm = dom->arch.tee;
+
+        if (dom != d && vm != NULL && vm->guest_vers != 0)
+            ffa_vm_count++;
+    }
+    rcu_read_unlock(&domlist_read_lock);
+#endif
 
     /*
      * If the guest is v1.0, he does not get back the entry size so we must
@@ -127,33 +141,38 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
 
     dst_buf = ctx->rx;
 
-    if ( !ffa_rx )
+    /* If not supported, we have ffa_sp_count=0 */
+    if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
     {
-        ret = FFA_RET_DENIED;
-        goto out_rx_release;
-    }
+        if ( !ffa_rx )
+        {
+            ret = FFA_RET_DENIED;
+            goto out_rx_release;
+        }
 
-    spin_lock(&ffa_rx_buffer_lock);
+        spin_lock(&ffa_rx_buffer_lock);
 
-    ret = ffa_partition_info_get(uuid, 0, &ffa_sp_count, &src_size);
+        ret = ffa_partition_info_get(uuid, 0, &ffa_sp_count, &src_size);
 
-    if ( ret )
-        goto out_rx_hyp_unlock;
+        if ( ret )
+            goto out_rx_hyp_unlock;
 
-    /*
-     * ffa_partition_info_get() succeeded so we now own the RX buffer we
-     * share with the SPMC. We must give it back using ffa_hyp_rx_release()
-     * once we've copied the content.
-     */
+        /*
+         * ffa_partition_info_get() succeeded so we now own the RX buffer we
+         * share with the SPMC. We must give it back using ffa_hyp_rx_release()
+         * once we've copied the content.
+         */
 
-    /* we cannot have a size smaller than 1.0 structure */
-    if ( src_size < sizeof(struct ffa_partition_info_1_0) )
-    {
-        ret = FFA_RET_NOT_SUPPORTED;
-        goto out_rx_hyp_release;
+        /* we cannot have a size smaller than 1.0 structure */
+        if ( src_size < sizeof(struct ffa_partition_info_1_0) )
+        {
+            ret = FFA_RET_NOT_SUPPORTED;
+            goto out_rx_hyp_release;
+        }
     }
 
-    if ( ctx->page_count * FFA_PAGE_SIZE < ffa_sp_count * dst_size )
+    if ( ctx->page_count * FFA_PAGE_SIZE <
+         (ffa_sp_count + ffa_vm_count) * dst_size )
     {
         ret = FFA_RET_NO_MEMORY;
         goto out_rx_hyp_release;
@@ -185,18 +204,88 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
         }
     }
 
+    if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
+    {
+        ffa_hyp_rx_release();
+        spin_unlock(&ffa_rx_buffer_lock);
+    }
+
+#ifdef CONFIG_FFA_VM_TO_VM
+    if ( ffa_vm_count )
+    {
+        uint32_t curr = 0;
+        /* add the VM informations if any */
+        rcu_read_lock(&domlist_read_lock);
+        for_each_domain( dom )
+        {
+            struct ffa_ctx *vm = dom->arch.tee;
+
+            /*
+             * we do not add the VM calling to the list and only VMs with
+             * FF-A support
+             */
+            if (dom != d && vm != NULL && vm->guest_vers != 0)
+            {
+                /*
+                 * We do not have UUID info for VMs so use
+                 * the 1.0 structure so that we set UUIDs to
+                 * zero using memset
+                 */
+                struct ffa_partition_info_1_0 srcvm;
+
+                if ( curr == ffa_vm_count )
+                {
+                    /*
+                     * The number of domains changed since we counted them, we
+                     * can add new ones if there is enough space in the
+                     * destination buffer so check it or go out with an error.
+                     */
+                    ffa_vm_count++;
+                    if ( ctx->page_count * FFA_PAGE_SIZE <
+                         (ffa_sp_count + ffa_vm_count) * dst_size )
+                    {
+                        ret = FFA_RET_NO_MEMORY;
+                        rcu_read_unlock(&domlist_read_lock);
+                        goto out_rx_release;
+                    }
+                }
+
+                srcvm.id = ffa_get_vm_id(dom);
+                srcvm.execution_context = dom->max_vcpus;
+                srcvm.partition_properties = FFA_PART_VM_PROP;
+                if ( is_64bit_domain(dom) )
+                    srcvm.partition_properties |= FFA_PART_PROP_AARCH64_STATE;
+
+                memcpy(dst_buf, &srcvm, MIN(sizeof(srcvm), dst_size));
+
+                if ( dst_size > sizeof(srcvm) )
+                    memset(dst_buf + sizeof(srcvm), 0,
+                           dst_size - sizeof(srcvm));
+
+                dst_buf += dst_size;
+                curr++;
+            }
+        }
+        rcu_read_unlock(&domlist_read_lock);
+
+        /* the number of domains could have reduce since the initial count */
+        ffa_vm_count = curr;
+    }
+#endif
+
+    goto out;
+
 out_rx_hyp_release:
     ffa_hyp_rx_release();
 out_rx_hyp_unlock:
     spin_unlock(&ffa_rx_buffer_lock);
 out_rx_release:
-    if ( ret != FFA_RET_OK )
-        ffa_rx_release(d);
+    ffa_rx_release(d);
 out:
     if ( ret )
         ffa_set_regs_error(regs, ret);
     else
-        ffa_set_regs_success(regs, ffa_sp_count, dst_size);
+        ffa_set_regs_success(regs, ffa_sp_count + ffa_vm_count, dst_size);
 }
 
 static int32_t ffa_direct_req_send_vm(uint16_t sp_id, uint16_t vm_id,
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index d441c0ca5598..47dd6b5fadea 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -187,6 +187,18 @@
  */
 #define FFA_PARTITION_INFO_GET_COUNT_FLAG BIT(0, U)
 
+/*
+ * Partition properties we give for a normal world VM:
+ * - can send direct message but not receive them
+ * - can handle indirect messages
+ * - can receive notifications
+ * 32/64 bit flag is set depending on the VM
+ */
+#define FFA_PART_VM_PROP    (FFA_PART_PROP_DIRECT_REQ_SEND | \
+                             FFA_PART_PROP_INDIRECT_MSGS | \
+                             FFA_PART_PROP_RECV_NOTIF | \
+                             FFA_PART_PROP_IS_PE_ID)
+
 /* Flags used in calls to FFA_NOTIFICATION_GET interface  */
 #define FFA_NOTIF_FLAG_BITMAP_SP        BIT(0, U)
 #define FFA_NOTIF_FLAG_BITMAP_VM        BIT(1, U)
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:22:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:22:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819776.1233276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10Ej-0004JS-KZ; Wed, 16 Oct 2024 09:22:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819776.1233276; Wed, 16 Oct 2024 09: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 1t10Ej-0004JB-HJ; Wed, 16 Oct 2024 09:22:33 +0000
Received: by outflank-mailman (input) for mailman id 819776;
 Wed, 16 Oct 2024 09:22: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t10Ei-0001Po-HX
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:32 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 2b108c2e-8ba0-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:22:30 +0200 (CEST)
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 B60151007;
 Wed, 16 Oct 2024 02:22:59 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E501D3F528;
 Wed, 16 Oct 2024 02:22:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b108c2e-8ba0-11ef-99a3-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [RFC PATCH 2/4] xen/arm: ffa: Add buffer full notification support
Date: Wed, 16 Oct 2024 11:21:56 +0200
Message-ID: <70a1fd32542901791fef0d528b0fb0fa94f8e814.1729069025.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729069025.git.bertrand.marquis@arm.com>
References: <cover.1729069025.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add support to raise a Rx buffer full notification to a VM.
This function will be used for indirect message support between VM and
is only activated if CONFIG_FFA_VM_TO_VM is selected.

Even if there are 32 framework notifications possible, right now only
one is defined so the implementation is simplified to only handle the
buffer full notification using a boolean. If other framework
notifications have to be supported one day, the design will have to be
modified to handle it properly.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa_notif.c   | 26 +++++++++++++++++++++-----
 xen/arch/arm/tee/ffa_private.h | 13 +++++++++++++
 2 files changed, 34 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 3c6418e62e2b..052b3e364a70 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -93,6 +93,7 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 void ffa_handle_notification_get(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
+    struct ffa_ctx *ctx = d->arch.tee;
     uint32_t recv = get_user_reg(regs, 1);
     uint32_t flags = get_user_reg(regs, 2);
     uint32_t w2 = 0;
@@ -132,11 +133,7 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
          */
         if ( ( flags  & FFA_NOTIF_FLAG_BITMAP_SP ) &&
              ( flags & FFA_NOTIF_FLAG_BITMAP_SPM ) )
-        {
-                struct ffa_ctx *ctx = d->arch.tee;
-
-                ACCESS_ONCE(ctx->notif.secure_pending) = false;
-        }
+            ACCESS_ONCE(ctx->notif.secure_pending) = false;
 
         arm_smccc_1_2_smc(&arg, &resp);
         e = ffa_get_ret_code(&resp);
@@ -156,6 +153,12 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
             w6 = resp.a6;
     }
 
+#ifdef CONFIG_FFA_VM_TO_VM
+    if ( flags & FFA_NOTIF_FLAG_BITMAP_HYP &&
+            test_and_clear_bool(ctx->notif.buff_full_pending) )
+        w7 = FFA_NOTIF_RX_BUFFER_FULL;
+#endif
+
     ffa_set_regs(regs, FFA_SUCCESS_32, 0, w2, w3, w4, w5, w6, w7);
 }
 
@@ -178,6 +181,19 @@ int ffa_handle_notification_set(struct cpu_user_regs *regs)
                            bitmap_hi);
 }
 
+#ifdef CONFIG_FFA_VM_TO_VM
+void ffa_raise_rx_buffer_full(struct domain *d)
+{
+    struct ffa_ctx *ctx = d->arch.tee;
+
+    if ( !ctx )
+        return;
+
+    if ( !test_and_set_bool(ctx->notif.buff_full_pending) )
+        vgic_inject_irq(d, d->vcpu[0], notif_sri_irq, true);
+}
+#endif
+
 /*
  * Extract a 16-bit ID (index n) from the successful return value from
  * FFA_NOTIFICATION_INFO_GET_64 or FFA_NOTIFICATION_INFO_GET_32. IDs are
diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_private.h
index 47dd6b5fadea..ad1dd04aeb7c 100644
--- a/xen/arch/arm/tee/ffa_private.h
+++ b/xen/arch/arm/tee/ffa_private.h
@@ -210,6 +210,8 @@
 #define FFA_NOTIF_INFO_GET_ID_COUNT_SHIFT   7
 #define FFA_NOTIF_INFO_GET_ID_COUNT_MASK    0x1F
 
+#define FFA_NOTIF_RX_BUFFER_FULL        BIT(0, U)
+
 /* Feature IDs used with FFA_FEATURES */
 #define FFA_FEATURE_NOTIF_PEND_INTR     0x1U
 #define FFA_FEATURE_SCHEDULE_RECV_INTR  0x2U
@@ -298,6 +300,13 @@ struct ffa_ctx_notif {
      * pending global notifications.
      */
     bool secure_pending;
+
+#ifdef CONFIG_FFA_VM_TO_VM
+    /*
+     * Pending Hypervisor framework notifications
+     */
+    bool buff_full_pending;
+#endif
 };
 
 struct ffa_ctx {
@@ -370,6 +379,10 @@ void ffa_handle_notification_info_get(struct cpu_user_regs *regs);
 void ffa_handle_notification_get(struct cpu_user_regs *regs);
 int ffa_handle_notification_set(struct cpu_user_regs *regs);
 
+#ifdef CONFIG_FFA_VM_TO_VM
+void ffa_raise_rx_buffer_full(struct domain *d);
+#endif
+
 void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t fid);
 int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs);
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:26:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:26:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819798.1233286 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10Ir-00069v-7R; Wed, 16 Oct 2024 09:26:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819798.1233286; Wed, 16 Oct 2024 09:26: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 1t10Ir-00069o-2W; Wed, 16 Oct 2024 09:26:49 +0000
Received: by outflank-mailman (input) for mailman id 819798;
 Wed, 16 Oct 2024 09:26: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t10En-0001Po-DN
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:37 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 2ce41d79-8ba0-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 11:22:33 +0200 (CEST)
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 C70891007;
 Wed, 16 Oct 2024 02:23:02 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0223A3F528;
 Wed, 16 Oct 2024 02:22:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2ce41d79-8ba0-11ef-99a3-01e77a169b0f
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [RFC PATCH 4/4] xen/arm: ffa: Enable VM to VM without firmware
Date: Wed, 16 Oct 2024 11:21:58 +0200
Message-ID: <57c59cae4141dd9601d7b4e9260030a16809b764.1729069025.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729069025.git.bertrand.marquis@arm.com>
References: <cover.1729069025.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When VM to VM support is activated and there is no suitable FF-A support
in the firmware, enable FF-A support for VMs to allow using it for VM to
VM communications.
If there is Optee running in the secure world and using the non FF-A
communication system, having CONFIG_FFA_VM_TO_VM could be non functional
(if optee is probed first) or Optee could be non functional (if FF-A is
probed first) so it is not recommended to activate the configuration
option for such systems.

To make buffer full notification work between VMs when there is not
firmware, rework the notification handling and modify the global flag to
only be used as check for firmware notification support instead.

Modify part_info_get to return the list of VMs when there is no firmware
support.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa.c          |  11 +++
 xen/arch/arm/tee/ffa_notif.c    | 118 ++++++++++++++++----------------
 xen/arch/arm/tee/ffa_partinfo.c |   2 +
 3 files changed, 73 insertions(+), 58 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 21d41b452dc9..6d427864f3da 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -324,8 +324,11 @@ static int ffa_domain_init(struct domain *d)
     struct ffa_ctx *ctx;
     int ret;
 
+#ifndef CONFIG_FFA_VM_TO_VM
     if ( !ffa_fw_version )
         return -ENODEV;
+#endif
+
     /*
      * We are using the domain_id + 1 as the FF-A ID for VMs as FF-A ID 0 is
      * reserved for the hypervisor and we only support secure endpoints using
@@ -549,7 +552,15 @@ err_no_fw:
     bitmap_zero(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
     printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
 
+#ifdef CONFIG_FFA_VM_TO_VM
+    INIT_LIST_HEAD(&ffa_teardown_head);
+    init_timer(&ffa_teardown_timer, ffa_teardown_timer_callback, NULL, 0);
+
+    printk(XENLOG_INFO "ARM FF-A only available between VMs\n");
+    return true;
+#else
     return false;
+#endif
 }
 
 static const struct tee_mediator_ops ffa_ops =
diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
index 052b3e364a70..f2c87d1320de 100644
--- a/xen/arch/arm/tee/ffa_notif.c
+++ b/xen/arch/arm/tee/ffa_notif.c
@@ -16,7 +16,7 @@
 
 #include "ffa_private.h"
 
-static bool __ro_after_init notif_enabled;
+static bool __ro_after_init fw_notif_enabled;
 static unsigned int __ro_after_init notif_sri_irq;
 
 int ffa_handle_notification_bind(struct cpu_user_regs *regs)
@@ -27,21 +27,17 @@ int ffa_handle_notification_bind(struct cpu_user_regs *regs)
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
 
-    if ( !notif_enabled )
-        return FFA_RET_NOT_SUPPORTED;
-
     if ( (src_dst & 0xFFFFU) != ffa_get_vm_id(d) )
         return FFA_RET_INVALID_PARAMETERS;
 
     if ( flags )    /* Only global notifications are supported */
         return FFA_RET_DENIED;
 
-    /*
-     * We only support notifications from SP so no need to check the sender
-     * endpoint ID, the SPMC will take care of that for us.
-     */
-    return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags, bitmap_hi,
-                           bitmap_lo);
+    if ( FFA_ID_IS_SECURE(src_dst>>16) && fw_notif_enabled )
+        return ffa_simple_call(FFA_NOTIFICATION_BIND, src_dst, flags,
+                               bitmap_hi, bitmap_lo);
+
+    return FFA_RET_NOT_SUPPORTED;
 }
 
 int ffa_handle_notification_unbind(struct cpu_user_regs *regs)
@@ -51,32 +47,36 @@ int ffa_handle_notification_unbind(struct cpu_user_regs *regs)
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
 
-    if ( !notif_enabled )
-        return FFA_RET_NOT_SUPPORTED;
-
     if ( (src_dst & 0xFFFFU) != ffa_get_vm_id(d) )
         return FFA_RET_INVALID_PARAMETERS;
 
-    /*
-     * We only support notifications from SP so no need to check the
-     * destination endpoint ID, the SPMC will take care of that for us.
-     */
-    return  ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_hi,
-                            bitmap_lo);
+    if ( FFA_ID_IS_SECURE(src_dst>>16) && fw_notif_enabled )
+        return  ffa_simple_call(FFA_NOTIFICATION_UNBIND, src_dst, 0, bitmap_hi,
+                                bitmap_lo);
+
+    return FFA_RET_NOT_SUPPORTED;
 }
 
 void ffa_handle_notification_info_get(struct cpu_user_regs *regs)
 {
     struct domain *d = current->domain;
     struct ffa_ctx *ctx = d->arch.tee;
+    bool notif_pending = false;
 
-    if ( !notif_enabled )
+#ifndef CONFIG_FFA_VM_TO_VM
+    if ( !fw_notif_enabled )
     {
         ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         return;
     }
+#endif
 
-    if ( test_and_clear_bool(ctx->notif.secure_pending) )
+    notif_pending = ctx->notif.secure_pending;
+#ifdef CONFIG_FFA_VM_TO_VM
+    notif_pending |= ctx->notif.buff_full_pending;
+#endif
+
+    if ( notif_pending )
     {
         /* A pending global notification for the guest */
         ffa_set_regs(regs, FFA_SUCCESS_64, 0,
@@ -103,11 +103,13 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
     uint32_t w6 = 0;
     uint32_t w7 = 0;
 
-    if ( !notif_enabled )
+#ifndef CONFIG_FFA_VM_TO_VM
+    if ( !fw_notif_enabled )
     {
         ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
         return;
     }
+#endif
 
     if ( (recv & 0xFFFFU) != ffa_get_vm_id(d) )
     {
@@ -115,7 +117,8 @@ void ffa_handle_notification_get(struct cpu_user_regs *regs)
         return;
     }
 
-    if ( flags & ( FFA_NOTIF_FLAG_BITMAP_SP | FFA_NOTIF_FLAG_BITMAP_SPM ) )
+    if ( fw_notif_enabled && (flags & ( FFA_NOTIF_FLAG_BITMAP_SP
+                                        | FFA_NOTIF_FLAG_BITMAP_SPM )) )
     {
         struct arm_smccc_1_2_regs arg = {
             .a0 = FFA_NOTIFICATION_GET,
@@ -170,15 +173,14 @@ int ffa_handle_notification_set(struct cpu_user_regs *regs)
     uint32_t bitmap_lo = get_user_reg(regs, 3);
     uint32_t bitmap_hi = get_user_reg(regs, 4);
 
-    if ( !notif_enabled )
-        return FFA_RET_NOT_SUPPORTED;
-
     if ( (src_dst >> 16) != ffa_get_vm_id(d) )
         return FFA_RET_INVALID_PARAMETERS;
 
-    /* Let the SPMC check the destination of the notification */
-    return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bitmap_lo,
-                           bitmap_hi);
+    if ( FFA_ID_IS_SECURE(src_dst>>16) && fw_notif_enabled )
+        return ffa_simple_call(FFA_NOTIFICATION_SET, src_dst, flags, bitmap_lo,
+                               bitmap_hi);
+
+    return FFA_RET_NOT_SUPPORTED;
 }
 
 #ifdef CONFIG_FFA_VM_TO_VM
@@ -190,7 +192,7 @@ void ffa_raise_rx_buffer_full(struct domain *d)
         return;
 
     if ( !test_and_set_bool(ctx->notif.buff_full_pending) )
-        vgic_inject_irq(d, d->vcpu[0], notif_sri_irq, true);
+        vgic_inject_irq(d, d->vcpu[0], GUEST_FFA_NOTIF_PEND_INTR_ID, true);
 }
 #endif
 
@@ -363,7 +365,7 @@ void ffa_notif_init_interrupt(void)
 {
     int ret;
 
-    if ( notif_enabled && notif_sri_irq < NR_GIC_SGI )
+    if ( fw_notif_enabled && notif_sri_irq < NR_GIC_SGI )
     {
         /*
          * An error here is unlikely since the primary CPU has already
@@ -394,47 +396,47 @@ void ffa_notif_init(void)
     int ret;
 
     /* Only enable fw notification if all ABIs we need are supported */
-    if ( !(ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
-           ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_DESTROY) &&
-           ffa_fw_supports_fid(FFA_NOTIFICATION_GET) &&
-           ffa_fw_supports_fid(FFA_NOTIFICATION_INFO_GET_64)) )
-        return;
-
-    arm_smccc_1_2_smc(&arg, &resp);
-    if ( resp.a0 != FFA_SUCCESS_32 )
-        return;
-
-    irq = resp.a2;
-    notif_sri_irq = irq;
-    if ( irq >= NR_GIC_SGI )
-        irq_set_type(irq, IRQ_TYPE_EDGE_RISING);
-    ret = request_irq(irq, 0, notif_irq_handler, "FF-A notif", NULL);
-    if ( ret )
+    if ( ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
+         ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_DESTROY) &&
+         ffa_fw_supports_fid(FFA_NOTIFICATION_GET) &&
+         ffa_fw_supports_fid(FFA_NOTIFICATION_INFO_GET_64) )
     {
-        printk(XENLOG_ERR "ffa: request_irq irq %u failed: error %d\n",
-               irq, ret);
-        return;
-    }
+        arm_smccc_1_2_smc(&arg, &resp);
+        if ( resp.a0 != FFA_SUCCESS_32 )
+            return;
 
-    notif_enabled = true;
+        irq = resp.a2;
+        notif_sri_irq = irq;
+        if ( irq >= NR_GIC_SGI )
+            irq_set_type(irq, IRQ_TYPE_EDGE_RISING);
+        ret = request_irq(irq, 0, notif_irq_handler, "FF-A notif", NULL);
+        if ( ret )
+        {
+            printk(XENLOG_ERR "ffa: request_irq irq %u failed: error %d\n",
+                   irq, ret);
+            return;
+        }
+        fw_notif_enabled = true;
+    }
 }
 
 int ffa_notif_domain_init(struct domain *d)
 {
     int32_t res;
 
-    if ( !notif_enabled )
-        return 0;
+    if ( fw_notif_enabled )
+    {
 
-    res = ffa_notification_bitmap_create(ffa_get_vm_id(d), d->max_vcpus);
-    if ( res )
-        return -ENOMEM;
+        res = ffa_notification_bitmap_create(ffa_get_vm_id(d), d->max_vcpus);
+        if ( res )
+            return -ENOMEM;
+    }
 
     return 0;
 }
 
 void ffa_notif_domain_destroy(struct domain *d)
 {
-    if ( notif_enabled )
+    if ( fw_notif_enabled )
         ffa_notification_bitmap_destroy(ffa_get_vm_id(d));
 }
diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_partinfo.c
index d699a267cc76..2e09440fe6c2 100644
--- a/xen/arch/arm/tee/ffa_partinfo.c
+++ b/xen/arch/arm/tee/ffa_partinfo.c
@@ -128,12 +128,14 @@ void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
         goto out;
     }
 
+#ifndef CONFIG_FFA_VM_TO_VM
     if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
     {
         /* Just give an empty partition list to the caller */
         ret = FFA_RET_OK;
         goto out;
     }
+#endif
 
     ret = ffa_rx_acquire(d);
     if ( ret != FFA_RET_OK )
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:27:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:27:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819817.1233295 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10Jb-0006wb-Dm; Wed, 16 Oct 2024 09:27:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819817.1233295; Wed, 16 Oct 2024 09: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 1t10Jb-0006wU-BA; Wed, 16 Oct 2024 09:27:35 +0000
Received: by outflank-mailman (input) for mailman id 819817;
 Wed, 16 Oct 2024 09:27: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=I0z3=RM=arm.com=bertrand.marquis@srs-se1.protection.inumbo.net>)
 id 1t10El-0001Bq-Qm
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:22:35 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 2bf1599a-8ba0-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:22:32 +0200 (CEST)
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 507A9FEC;
 Wed, 16 Oct 2024 02:23:01 -0700 (PDT)
Received: from C3HXLD123V.arm.com (unknown [10.57.21.81])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 683CF3F528;
 Wed, 16 Oct 2024 02:22:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2bf1599a-8ba0-11ef-a0be-8be0dac302b0
From: Bertrand Marquis <bertrand.marquis@arm.com>
To: xen-devel@lists.xenproject.org
Cc: jens.wiklander@linaro.org,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [RFC PATCH 3/4] xen/arm: ffa: Add indirect message between VM
Date: Wed, 16 Oct 2024 11:21:57 +0200
Message-ID: <52d9809a114965832ee632756152d9125e93d4ea.1729069025.git.bertrand.marquis@arm.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729069025.git.bertrand.marquis@arm.com>
References: <cover.1729069025.git.bertrand.marquis@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add support for indirect messages between VMs.
This is only enabled if CONFIG_FFA_VM_TO_VM is selected.

Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
 xen/arch/arm/tee/ffa_msg.c | 96 ++++++++++++++++++++++++++++++++++----
 1 file changed, 88 insertions(+), 8 deletions(-)

diff --git a/xen/arch/arm/tee/ffa_msg.c b/xen/arch/arm/tee/ffa_msg.c
index 335f246ba657..25f184a06546 100644
--- a/xen/arch/arm/tee/ffa_msg.c
+++ b/xen/arch/arm/tee/ffa_msg.c
@@ -95,9 +95,12 @@ int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs)
     const struct ffa_part_msg_rxtx *src_msg;
     uint16_t dst_id, src_id;
     int32_t ret;
-
-    if ( !ffa_fw_supports_fid(FFA_MSG_SEND2) )
-        return FFA_RET_NOT_SUPPORTED;
+#ifdef CONFIG_FFA_VM_TO_VM
+    struct domain *dst_d;
+    struct ffa_ctx *dst_ctx;
+    struct ffa_part_msg_rxtx *dst_msg;
+    int err;
+#endif
 
     if ( !spin_trylock(&src_ctx->tx_lock) )
         return FFA_RET_BUSY;
@@ -106,10 +109,10 @@ int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs)
     src_id = src_msg->send_recv_id >> 16;
     dst_id = src_msg->send_recv_id & GENMASK(15,0);
 
-    if ( src_id != ffa_get_vm_id(src_d) || !FFA_ID_IS_SECURE(dst_id) )
+    if ( src_id != ffa_get_vm_id(src_d) )
     {
         ret = FFA_RET_INVALID_PARAMETERS;
-        goto out_unlock_tx;
+        goto out;
     }
 
     /* check source message fits in buffer */
@@ -118,12 +121,89 @@ int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs)
          src_msg->msg_offset < sizeof(struct ffa_part_msg_rxtx) )
     {
         ret = FFA_RET_INVALID_PARAMETERS;
-        goto out_unlock_tx;
+        goto out;
     }
 
-    ret = ffa_simple_call(FFA_MSG_SEND2, ((uint32_t)src_id) << 16, 0, 0, 0);
+    if ( FFA_ID_IS_SECURE(dst_id) )
+    {
+        /* Message for a secure partition */
+        if ( !ffa_fw_supports_fid(FFA_MSG_SEND2) )
+        {
+            ret = FFA_RET_NOT_SUPPORTED;
+            goto out;
+        }
+
+        ret = ffa_simple_call(FFA_MSG_SEND2, ((uint32_t)src_id) << 16, 0, 0,
+                              0);
+        goto out;
+    }
 
-out_unlock_tx:
+#ifndef CONFIG_FFA_VM_TO_VM
+    ret = FFA_RET_INVALID_PARAMETERS;
+#else
+    /* Message for a VM */
+    if ( dst_id == 0 )
+    {
+        /* FF-A ID 0 is the hypervisor, this is not valid */
+        ret = FFA_RET_INVALID_PARAMETERS;
+        goto out;
+    }
+
+    /* This is also checking that dest is not src */
+    err = rcu_lock_live_remote_domain_by_id(dst_id - 1, &dst_d);
+    if ( err )
+    {
+        ret = FFA_RET_INVALID_PARAMETERS;
+        goto out;
+    }
+
+    if ( dst_d->arch.tee == NULL )
+    {
+        ret = FFA_RET_INVALID_PARAMETERS;
+        goto out_unlock;
+    }
+
+    dst_ctx = dst_d->arch.tee;
+    if ( !dst_ctx->guest_vers )
+    {
+        ret = FFA_RET_INVALID_PARAMETERS;
+        goto out_unlock;
+    }
+
+    /* This also checks that destination has set a Rx buffer */
+    ret = ffa_rx_acquire(dst_d);
+    if ( ret )
+        goto out_unlock;
+
+    /* we need to have enough space in the destination buffer */
+    if ( dst_ctx->page_count * FFA_PAGE_SIZE <
+            (sizeof(struct ffa_part_msg_rxtx) + src_msg->msg_size) )
+    {
+        ret = FFA_RET_NO_MEMORY;
+        ffa_rx_release(dst_d);
+        goto out_unlock;
+    }
+
+    dst_msg = dst_ctx->rx;
+
+    /* prepare destination header */
+    dst_msg->flags = 0;
+    dst_msg->reserved = 0;
+    dst_msg->msg_offset = sizeof(struct ffa_part_msg_rxtx);
+    dst_msg->send_recv_id = src_msg->send_recv_id;
+    dst_msg->msg_size = src_msg->msg_size;
+
+    memcpy(dst_ctx->rx + sizeof(struct ffa_part_msg_rxtx),
+           src_ctx->tx + src_msg->msg_offset, src_msg->msg_size);
+
+    /* receiver rx buffer will be released by the receiver*/
+
+out_unlock:
+    rcu_unlock_domain(dst_d);
+    if ( !ret )
+        ffa_raise_rx_buffer_full(dst_d);
+#endif
+out:
     spin_unlock(&src_ctx->tx_lock);
     return ret;
 }
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:37:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819853.1233316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10T7-0001FF-L1; Wed, 16 Oct 2024 09:37:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819853.1233316; Wed, 16 Oct 2024 09:37: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 1t10T7-0001F5-HH; Wed, 16 Oct 2024 09:37:25 +0000
Received: by outflank-mailman (input) for mailman id 819853;
 Wed, 16 Oct 2024 09:37: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t10T5-0000ua-L9
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:37:23 +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 3ee26b2c-8ba2-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:37:22 +0200 (CEST)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-4314f38d274so9005335e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:37:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4313f569a06sm43202255e9.16.2024.10.16.02.37.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 02:37:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3ee26b2c-8ba2-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729071442; x=1729676242; 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=Nu1ll/Q7Ytyj2ygj7KHssanwlyEVJOTUsRXUr7xGdr0=;
        b=AyoFjq1clVics7s5Hwnc10Icgc86bteFe+wggnQBJaxUb1MXz16djm9JN1mjoDcfhz
         G9p0DUDD3+iHfQr6zBGyWmlke0MmxJ7d/mYpjb8/ctJ+Ljq8v9TZzOcCEN1jC3OChzWA
         jUfo5i1/jQuoH1u38/8qAJnbdl/9PtCpZ4rLn1Mqt738RU9IbZ2NrKvOB8FmFlzXdEos
         6jhhmofWXRMPO2iTSL3n2+DAZkOOfJmEn9zI9TaSPAJpEMZ2hdt4GMJ+XGvGwzw8Wyp0
         dQF6UkLG5lwm6rCIm/iAlwT6I50+kugpMkxjW9QwQRlrIqTF5MpUJWRBv0F6wshfFPeq
         awhQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729071442; x=1729676242;
        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=Nu1ll/Q7Ytyj2ygj7KHssanwlyEVJOTUsRXUr7xGdr0=;
        b=T39vc+ECwPXesfuI74U3yJwVO+jPX2UcxC1HxIOvAe4dNB7ytJaMHti8ifIs2/laQ8
         5Grh25ftpqNShrg5a6TnkglSr3oyvlKrm6u4lPOsWxizXti3AsAL3wQD1s7awAbM3IWv
         IfD8RPHdKfcvGMN0uEEEwe+KXCQkIoljnzrSatNFExVoYygX5NKD0Y1VxGQnrQhPZgsL
         7vu4Y1g5H71P020kvBpsgp82E+y6yKnwLB9OA7mT5zHJBPOiLSdu4w7AhBqT4lzaI/xT
         +o/jyzI+vgpxw07HlUH6nTiStark6AqcxerP9003dyXkA1GxanXsEOhzpB436F1TADtD
         dRuQ==
X-Forwarded-Encrypted: i=1; AJvYcCVf6Cr2ZdzR/38RTf1cStx64MSdxCUeFxYZ7iUDA3gHD5JHtaWJth93OFv5jQz1vNH0vWh0c2WyK5o=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx0EdHFmKnYKSC6NdeQyfsNJxrnERchUq1isUHmQtvWxWZcWMtm
	wqb+hznb3Da+fk3CgH45LPT9KXFcoRsQS7AOLA+oJssy2RXtCoTi5ZvXvTKoUw==
X-Google-Smtp-Source: AGHT+IFr62U+fZr9ILF3BKO2IoHBpL/4xypsCXXce08JQoE9zUlf92isD4kicN5Fy6fKIRe6D4BRTA==
X-Received: by 2002:a05:600c:5108:b0:430:9fde:3b92 with SMTP id 5b1f17b1804b1-431255e033bmr171123925e9.14.1729071442240;
        Wed, 16 Oct 2024 02:37:22 -0700 (PDT)
Message-ID: <f5572afc-7c9e-4c2e-ba3f-6ce4f3b71d59@suse.com>
Date: Wed, 16 Oct 2024 11:37:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/7] byteorder: replace __u16
From: Jan Beulich <jbeulich@suse.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
 <a7b6fc68-a568-4b61-895d-c295ba3d3095@citrix.com>
 <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@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: <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.10.2024 15:34, Jan Beulich wrote:
> On 09.10.2024 15:20, Andrew Cooper wrote:
>> On 09/10/2024 10:21 am, Jan Beulich wrote:
>>> In {big,little}_endian.h the changes are entirely mechanical, except for
>>> dealing with casting away of const from pointers-to-const on lines
>>> touched anyway.
>>>
>>> In swab.h the casting of constants is done away with as well - I simply
>>> don't see what the respective comment is concerned about in our
>>> environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
>>> architecture, sizeof(long long) >= 8). The comment is certainly relevant
>>> in more general cases. Excess parentheses are dropped as well,
>>> ___swab16()'s local variable is renamed, and __arch__swab16()'s is
>>> dropped as being redundant with ___swab16()'s.
>>>
>>> With that no uses of the type remain, so it moves to linux-compat.h.
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>> ---
>>> I'm unconvinced of the need of the separate ___constant_swab16(). I'm
>>> also unconvinced of the need for said constants (that even had casts on
>>> them).
>>
>> There is a still-good series deleting the whole of byteorder/ and
>> replacing it with a few-hundred line single header.
>>
>> It is the second thing stalled on a governance change (prohibited
>> reasons to object to a change) which clearly no-one gives a damn about
>> fixing.  In fact double spite because it denied a good engineer his
>> first changes in Xen.
>>
>>
>> I don't particularly feel like trying to polish byteorder.  I'm inclined
>> to rebase+repost Lin's patches, at which point the majority of this
>> series simply disappears.
> 
> I wouldn't mind you doing so, as long as that other series then progresses.
> What I don't want to get into is the other series being stuck rendering this
> one stuck, too. Then it would imo be better to take this one first, rebase
> the other on top, and work towards it becoming unstuck (whatever that takes;
> I have no recollection of what the issue was back at the time, all I recall
> is that, yes, there was such work at some point).

Just to have a clear picture: Was your reply an objection, with you indeed
meaning me to hold back this tidying work? If so, can you please indicate
when, at least roughly, you mean to re-post what you think wants re-posting?
If not, can you please indicate so, for me to commit stuff that's otherwise
ready to go in (and which that other work should be easy to re-base over)?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:37:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819852.1233306 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10Sz-0000w2-9g; Wed, 16 Oct 2024 09:37:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819852.1233306; Wed, 16 Oct 2024 09: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 1t10Sz-0000vv-6f; Wed, 16 Oct 2024 09:37:17 +0000
Received: by outflank-mailman (input) for mailman id 819852;
 Wed, 16 Oct 2024 09:37: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=r+g5=RM=kernel.org=kvalo@srs-se1.protection.inumbo.net>)
 id 1t10Sx-0000ua-En
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:37:15 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 392c18c0-8ba2-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:37:14 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 43C17A43BC2;
 Wed, 16 Oct 2024 09:37:03 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A83DEC4CECF;
 Wed, 16 Oct 2024 09:37:00 +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: 392c18c0-8ba2-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729071431;
	bh=3qs9RCIcBMaiRaaQowBtUAYRplzqstMrihAHPPNLmDY=;
	h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
	b=TKOX9/0GP1+lza5sQLTeaGorlh3MWnyZcXGq05D/f/GBd2opmS8ChUbAgJdPb/CZ1
	 yn5rFWuoHPLLh+d3Tn7faqhBzYHFIRUNCjskSa+aHE7Hk+eHTbbOc5TCSh9q9iJ3uy
	 ecD+a1d8UI2TkI22bqwo5dXLynEXWBDFQZqY5PiV0eO3UFpqqqMhVJV65YiRQTDMNj
	 WP2usCFu0zlWexw7EVaqgNj9e/FFPneDaR8h9YjjAPmN4hPc1uAoQejPiORMJPvOU5
	 CWaLZFgGsjhgxS13aQ+7ta5bJuOGaob/3dXOYCK3/wDOU6szpcWpgz4jJlrkWESsRr
	 s45FfeYSH4aKw==
From: Kalle Valo <kvalo@kernel.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>,  Niklas Cassel <cassel@kernel.org>,
  Sergey Shtylyov <s.shtylyov@omp.ru>,  Basavaraj Natikar
 <basavaraj.natikar@amd.com>,  Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>,  Arnd Bergmann <arnd@arndb.de>,  Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>,  Alex Dubov <oakad@yahoo.com>,
  Sudarsana Kalluru <skalluru@marvell.com>,  Manish Chopra
 <manishc@marvell.com>,  "David S. Miller" <davem@davemloft.net>,  Eric
 Dumazet <edumazet@google.com>,  Jakub Kicinski <kuba@kernel.org>,  Paolo
 Abeni <pabeni@redhat.com>,  Rasesh Mody <rmody@marvell.com>,
  GR-Linux-NIC-Dev@marvell.com,  Igor Mitsyanko <imitsyanko@quantenna.com>,
  Sergey Matyukevich <geomatsi@gmail.com>,  Sanjay R Mehta
 <sanju.mehta@amd.com>,  Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,  Jon
 Mason <jdmason@kudzu.us>,  Dave Jiang <dave.jiang@intel.com>,  Allen Hubbe
 <allenbh@gmail.com>,  Bjorn Helgaas <bhelgaas@google.com>,  Alex
 Williamson <alex.williamson@redhat.com>,  Juergen Gross <jgross@suse.com>,
  Stefano Stabellini <sstabellini@kernel.org>,  Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,  Jaroslav Kysela <perex@perex.cz>,
  Takashi Iwai <tiwai@suse.com>,  Chen Ni <nichen@iscas.ac.cn>,  Mario
 Limonciello <mario.limonciello@amd.com>,  Ricky Wu <ricky_wu@realtek.com>,
  Al Viro <viro@zeniv.linux.org.uk>,  Breno Leitao <leitao@debian.org>,
  Kevin Tian <kevin.tian@intel.com>,  Thomas Gleixner <tglx@linutronix.de>,
  Ilpo =?utf-8?Q?J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com>,  Andy
 Shevchenko
 <andriy.shevchenko@linux.intel.com>,  Mostafa Saleh <smostafa@google.com>,
  Jason Gunthorpe <jgg@ziepe.ca>,  Yi Liu <yi.l.liu@intel.com>,  Christian
 Brauner <brauner@kernel.org>,  Ankit Agrawal <ankita@nvidia.com>,  Eric
 Auger <eric.auger@redhat.com>,  Reinette Chatre
 <reinette.chatre@intel.com>,  Ye Bin <yebin10@huawei.com>,  Marek
 =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
  Pierre-Louis
 Bossart <pierre-louis.bossart@linux.dev>,  Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>,  Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>,  Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
  linux-ide@vger.kernel.org,  linux-kernel@vger.kernel.org,
  linux-input@vger.kernel.org,  netdev@vger.kernel.org,
  linux-wireless@vger.kernel.org,  ntb@lists.linux.dev,
  linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
  xen-devel@lists.xenproject.org,  linux-sound@vger.kernel.org
Subject: Re: [PATCH 10/13] wifi: qtnfmac: use always-managed version of
 pcim_intx()
References: <20241015185124.64726-1-pstanner@redhat.com>
	<20241015185124.64726-11-pstanner@redhat.com>
Date: Wed, 16 Oct 2024 12:36:58 +0300
In-Reply-To: <20241015185124.64726-11-pstanner@redhat.com> (Philipp Stanner's
	message of "Tue, 15 Oct 2024 20:51:20 +0200")
Message-ID: <87y12o4ced.fsf@kernel.org>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain

Philipp Stanner <pstanner@redhat.com> writes:

> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
>
> qtnfmac enables its PCI-Device with pcim_enable_device(). Thus, it needs
> the always-managed version.
>
> Replace pci_intx() with pcim_intx().
>
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>

Feel free to take this via the PCI tree:

Acked-by: Kalle Valo <kvalo@kernel.org>

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:53:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:53:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819869.1233325 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10i8-00059r-Sr; Wed, 16 Oct 2024 09:52:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819869.1233325; Wed, 16 Oct 2024 09:52: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 1t10i8-00059k-Pu; Wed, 16 Oct 2024 09:52:56 +0000
Received: by outflank-mailman (input) for mailman id 819869;
 Wed, 16 Oct 2024 09:52: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t10i7-00059e-J5
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 09:52:55 +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 6a148a65-8ba4-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 11:52:54 +0200 (CEST)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-37d462c91a9so4072542f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 02:52:54 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4313f6c5d22sm44778545e9.40.2024.10.16.02.52.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 02:52:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a148a65-8ba4-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729072374; x=1729677174; 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=3UgS7OpM1ld1zoSp8JuQLsQDd5JjjbrgQkVmt5QIjrk=;
        b=N84Fcyvakf0qxZFRHAo4xhmx4QZ6O+SNrNdKsscGnU6+kijm6fAGzj0bdsLIx7O2hK
         l5+Dtz6u1SwZi0XUHFk5pxNCMSS4qClZ8U1SiMVRQMkHVLw7eOuRbCxRlagbkmS+oysY
         AOKN2tOf/7GvWkB6FKXVAJ9Q4yaq0GiKvC7HR71L2YtE4U7B5r3XmGw+E/uuz9qAVkjs
         l1r+iajXDNGVRqKWI5yn0XOXkIkEOkltRqC34WFYWuiX3PYaRxtG7qE772dF9OeHnsaT
         c+WUAYYne4e8ZanA36r4U4CM02I8sSYfJz5Owpwxh6hdz6n0pqCy1dA+gLFAmz9yg2mW
         qdsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729072374; x=1729677174;
        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=3UgS7OpM1ld1zoSp8JuQLsQDd5JjjbrgQkVmt5QIjrk=;
        b=nix+kBcjB7yKXXQsmIjiqlZKJF9jwlbvHA1h7Kq4481xajWc3JQcPyAuFqB+VRWtF+
         znc22C7KBR/YAynZ5WDKCZZZtzYHR2hAU72cejSHahDPicAWYjCn5XGMPA5WNo8eLLnw
         Q2tChWs9MVB+Lb+0nSL1WfC3z5DSeXtR/8QEx79HxD8/lZxAL/y1VfX9IHNMQeKqpUVN
         EZESJSWNHvxhmIq8EDw/cQ8oLhd4UalpJ4/fhZJHBoM4IhOqrwDb0pjT78jtspIkkpj7
         z0tQJnHC0LEKpPxOYl5xfBeTtKFgZPUTZgsOdD3RQfsXUyA4W6Lg9CZp5h9ClYqKi0AD
         iQZw==
X-Forwarded-Encrypted: i=1; AJvYcCUGkAQDJGKSWIiqK0AZlvqThhMciAHtFYzl3G6CG+Xy5LFlT/8qp1LSYgtTR0qhm9ilI/9BPN81EsQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyusLThTL0lABpEjyJzG5mvy5QM4EsAWJ9BeSjQtW3q5LeGcMww
	9FgNyGKWdS2TZOPTtoLKouZZH8x+A3dGRMGbgazjMcThC1WelLMRmxd0TRnrdw==
X-Google-Smtp-Source: AGHT+IGKJh5QX2kGh6nSDjN16nEAau2Zz+yWHQO2jF+IcnXAHgeL5mIzE6/PFnVhDNqyJ42PjHAmyw==
X-Received: by 2002:a5d:5587:0:b0:37c:ce58:5a1b with SMTP id ffacd0b85a97d-37d5529f017mr11246449f8f.51.1729072373809;
        Wed, 16 Oct 2024 02:52:53 -0700 (PDT)
Message-ID: <46e66868-6ddc-4037-8c3a-5a60b39d8b73@suse.com>
Date: Wed, 16 Oct 2024 11:52:52 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 2/3] xen/pci: introduce PF<->VF links
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
 <20241011152727.366770-3-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: <20241011152727.366770-3-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 17:27, Stewart Hildebrand wrote:
> Add links between a VF's struct pci_dev and its associated PF struct
> pci_dev. Move the calls to pci_get_pdev()/pci_add_device() down to avoid
> dropping and re-acquiring the pcidevs_lock().
> 
> During PF removal, unlink VF from PF and mark the VF broken. As before,
> VFs may exist without a corresponding PF, although now only with
> pdev->broken = true. If the PF is removed and re-added, dom0 is expected
> to also remove and re-add the VFs.

Right, or else the VF struct instance would remain orphaned the way you've
implemented this. Question is whether it is a reasonable assumption that a
Dom0 which failed to remove the VFs during PF removal might later
"remember" that it still needs to report VFs removed. I for one doubt that.

> @@ -703,7 +696,44 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>           * extended function.
>           */
>          if ( pdev->info.is_virtfn )
> -            pdev->info.is_extfn = pf_is_extfn;
> +        {
> +            struct pci_dev *pf_pdev;
> +
> +            pf_pdev = pci_get_pdev(NULL,
> +                                   PCI_SBDF(seg, info->physfn.bus,
> +                                            info->physfn.devfn));
> +
> +            if ( !pf_pdev )
> +            {
> +                ret = pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
> +                                     NULL, node);
> +                if ( ret )
> +                {
> +                    printk(XENLOG_WARNING "Failed to add SR-IOV device PF %pp for VF %pp\n",
> +                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
> +                           &pdev->sbdf);
> +                    free_pdev(pseg, pdev);
> +                    goto out;
> +                }
> +                pf_pdev = pci_get_pdev(NULL,
> +                                       PCI_SBDF(seg, info->physfn.bus,
> +                                                info->physfn.devfn));
> +                if ( !pf_pdev )
> +                {
> +                    ASSERT_UNREACHABLE();
> +                    printk(XENLOG_ERR "Failed to find SR-IOV device PF %pp for VF %pp\n",
> +                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
> +                           &pdev->sbdf);
> +                    free_pdev(pseg, pdev);
> +                    ret = -EILSEQ;
> +                    goto out;

Might be helpful to have the printk() ahead of the ASSERT_UNREACHABLE(), in the
unlikely event that the assertion would actually trigger. Positioning doesn't
make a difference for release builds anyway.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 09:54:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 09:54:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819875.1233335 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10jz-0005gM-8F; Wed, 16 Oct 2024 09:54:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819875.1233335; Wed, 16 Oct 2024 09: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 1t10jz-0005gF-5O; Wed, 16 Oct 2024 09:54:51 +0000
Received: by outflank-mailman (input) for mailman id 819875;
 Wed, 16 Oct 2024 09:54: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 1t10jy-0005g3-9K; Wed, 16 Oct 2024 09:54: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 1t10jy-0007an-1Q; Wed, 16 Oct 2024 09:54: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 1t10jx-0003bx-Ni; Wed, 16 Oct 2024 09:54:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t10jx-0006d7-N6; Wed, 16 Oct 2024 09:54: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=M68d2Xf425YNS6mLsBfpBo1bizM0qEnzHpmrXorZtP0=; b=RFgkpWDw5+0OTmZvxrcPOeu8xM
	x7RcGUCitBwplRUmkh/nh+2MBM9BptcIZOLesPMLmkM1Zz6UCVTlnnjHKFQEIyC4iz79SE0xHHKp2
	YUZfdNI8eR98R0GFY8f+CKzBSVTbYDLm0EQKE49aWRpILm3ic3i1FX7TkOGikbANOVBE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188098-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188098: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-libvirt-vhd:leak-check/check: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: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-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-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: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-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2
X-Osstest-Versions-That:
    linux=eca631b8fe808748d7585059c4307005ca5c5820
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 09:54:49 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check    fail pass in 188113-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188086
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188086
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188086
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188086
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188086
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188086
 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-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-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-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-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2
baseline version:
 linux                eca631b8fe808748d7585059c4307005ca5c5820

Last test of basis   188086  2024-10-14 19:40:42 Z    1 days
Testing same since   188098  2024-10-15 19:12:44 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alan Huang <mmpgouride@gmail.com>
  Kent Overstreet <kent.overstreet@linux.dev>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mohammed Anees <pvmohammedanees2003@gmail.com>
  Petr Pavlu <petr.pavlu@suse.com>
  Piotr Zalewski <pZ010001011111@proton.me>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Steven Rostedt <rostedt@goodmis.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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   eca631b8fe80..2f87d0916ce0  2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:01:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:01:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819888.1233345 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10qo-00081F-1n; Wed, 16 Oct 2024 10:01:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819888.1233345; Wed, 16 Oct 2024 10:01: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 1t10qn-000818-VY; Wed, 16 Oct 2024 10:01:53 +0000
Received: by outflank-mailman (input) for mailman id 819888;
 Wed, 16 Oct 2024 10: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t10qm-000812-KG
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:01:52 +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 aa52dee3-8ba5-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 12:01:51 +0200 (CEST)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-37d4c482844so3726514f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:01:51 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7f89233fsm3941539f8f.0.2024.10.16.03.01.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:01:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa52dee3-8ba5-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729072911; x=1729677711; 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=RxvRS70blFHUYe0EVyelAOAywhcxRj0DrkSHtRVI7vs=;
        b=GB6IE1IgW4R+ns3fvEzTBmSqTYCU9Ii4ZCbGKOR2ZE3mlvnpderYrgAUcJ5xE0ncCn
         WlWpfYaMmYiuMLXJ6gQYGL6DQOALS2c47T40seSF332hp7LRVKmq2Kb1Ry0JluiVqDPN
         kOIVS0jCq5294lWY0oxM4YzAWZFMKkGhUZl0cK3PcXIman1vj47VIbglOQ50Hs/QGHW0
         8zQyUcgFm5bnusJSPsvWJwn5dNFNczHrvN9pY5YTt1QbmCL5zzr4PyMRosvHHyzTRNPq
         RaFO/DWqXNr0NyW6musZTg+9b6rOTugveEy+dFwAtAkEScFRAMyLQzLLyFTlS+Wiayew
         Bnaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729072911; x=1729677711;
        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=RxvRS70blFHUYe0EVyelAOAywhcxRj0DrkSHtRVI7vs=;
        b=NRLL54KuyXklun8rLoai3aikvNp6uCw9uCOINIfYxjZ5eeyXGDIrfQf8mdHR7tzqRt
         l54Wk0Er1d8Dn2rIKJzJ4BqVq26Mm07FW9a3DDV/5nusaT5vdYPwS3LdSNgR2On/jlty
         GvYscx3jNkwfq11h1uUpdctvumGOMQOg6EmSTbLiNX2wvxLAXOBDuNsfBrx6CwJ0wd4w
         xt5wYpiewfKRoQ87tgG21N8k1oKopjHfyM9/r0CqYyv+slgWOkvGBaLzLbTyloLYUM/s
         sR7zE4ij11yLgmzE+DRWvJDodnIiKgNvhNBDONVfvvwCVxugvoZF/AUYCXCOuqZbf0z8
         wUBQ==
X-Forwarded-Encrypted: i=1; AJvYcCVG6l7zq796QEul5lVnHlFZQM5h6tTMXRaO4toE4f00tHaFSbzrqESkPL66vJDUxFMLSyIGL69A9B8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxgJe/oe7RVNEcsJTbtVGaGLqUQKmoxRWSWwT04Euyk9a6dL07c
	MMqWMVg8jqCYczaVZS/D1IlpPKnlAP7daLZM/h6mQZACQsVYp3K1O/Fsfh4Mkg==
X-Google-Smtp-Source: AGHT+IGzcnqIj64u32KYBk3toJcT3pyU7rNc3pv7PQqUpZ7kpXzdblxDElzcFnbsRmh7Bj7xVw13Mg==
X-Received: by 2002:adf:ce83:0:b0:37d:480f:9a6c with SMTP id ffacd0b85a97d-37d86c02a75mr2178951f8f.25.1729072911000;
        Wed, 16 Oct 2024 03:01:51 -0700 (PDT)
Message-ID: <a20027e3-be10-46ce-bd2f-53e0cb1a19f0@suse.com>
Date: Wed, 16 Oct 2024 12:01:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 3/3] x86/msi: fix locking for SR-IOV devices
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
 <20241011152727.366770-4-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: <20241011152727.366770-4-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.10.2024 17:27, Stewart Hildebrand wrote:
> In commit 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci
> structure") a lock was moved from allocate_and_map_msi_pirq() to the
> caller and changed from pcidevs_lock() to read_lock(&d->pci_lock).
> However, one call path wasn't updated to reflect the change, leading to
> a failed assertion observed under the following conditions:
> 
> * PV dom0
> * Debug build (CONFIG_DEBUG=y) of Xen
> * There is an SR-IOV device in the system with one or more VFs enabled
> * Dom0 has loaded the driver for the VF and enabled MSI-X
> 
> (XEN) Assertion 'd || pcidevs_locked()' failed at drivers/passthrough/pci.c:535
> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Not tainted ]----
> ...
> (XEN) Xen call trace:
> (XEN)    [<ffff82d040284da8>] R pci_get_pdev+0x4c/0xab
> (XEN)    [<ffff82d040344f5c>] F arch/x86/msi.c#read_pci_mem_bar+0x58/0x272
> (XEN)    [<ffff82d04034530e>] F arch/x86/msi.c#msix_capability_init+0x198/0x755
> (XEN)    [<ffff82d040345dad>] F arch/x86/msi.c#__pci_enable_msix+0x82/0xe8
> (XEN)    [<ffff82d0403463e5>] F pci_enable_msi+0x3f/0x78
> (XEN)    [<ffff82d04034be2b>] F map_domain_pirq+0x2a4/0x6dc
> (XEN)    [<ffff82d04034d4d5>] F allocate_and_map_msi_pirq+0x103/0x262
> (XEN)    [<ffff82d04035da5d>] F physdev_map_pirq+0x210/0x259
> (XEN)    [<ffff82d04035e798>] F do_physdev_op+0x9c3/0x1454
> (XEN)    [<ffff82d040329475>] F pv_hypercall+0x5ac/0x6af
> (XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150
> 
> In read_pci_mem_bar(), the VF obtains the struct pci_dev pointer for its
> associated PF to access the vf_rlen array. This array is initialized in
> pci_add_device() and is only populated in the associated PF's struct
> pci_dev.
> 
> Access the vf_rlen array via the link to the PF, and remove the
> troublesome call to pci_get_pdev().
> 
> Fixes: 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci structure")
> Reported-by: Teddy Astie <teddy.astie@vates.tech>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

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

> --- a/xen/drivers/passthrough/pci.c
> +++ b/xen/drivers/passthrough/pci.c
> @@ -736,7 +736,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>          }
>      }
>  
> -    if ( !pdev->info.is_virtfn && !pdev->vf_rlen[0] )
> +    if ( !pdev->info.is_virtfn && !pdev->physfn.vf_rlen[0] )

Unrelated to your change: Now that I look at this again, it seems slightly
wrong to me to use array slot 0 as "have we populated the array already"
indicator. If BAR0 was unused, we may end up doing this more than once.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:07:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:07:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819895.1233356 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10vi-0000Pc-Jx; Wed, 16 Oct 2024 10:06:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819895.1233356; Wed, 16 Oct 2024 10:06: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 1t10vi-0000PV-HN; Wed, 16 Oct 2024 10:06:58 +0000
Received: by outflank-mailman (input) for mailman id 819895;
 Wed, 16 Oct 2024 10:06: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=kaV7=RM=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t10vh-0000Ca-Ee
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:06:57 +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 6024226f-8ba6-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 12:06:56 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a99543ab209so976946166b.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:06:56 -0700 (PDT)
Received: from localhost ([5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29816c45sm163512666b.118.2024.10.16.03.06.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:06:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6024226f-8ba6-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729073216; x=1729678016; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=sAbe4hvUkRwgjEi8iTKE7EM7ZGW5pSMTbgL8OA+0G6g=;
        b=SwF/tHvYaf4Rh+a3i0PIaGOyWsncdDCO9/G8SHWtkG3S3VE48j/QH4YFdfRz7dqWEW
         PqOCAui16aSdCPZjAdAAyjwIuIhQlfPvY+CQ7Ps7dJCIEIW0ntPQqNH8LFFOnSsngekf
         I4KjFVZokF4EDxO/IeHn6i4jqqPXceaPqfyWY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729073216; x=1729678016;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=sAbe4hvUkRwgjEi8iTKE7EM7ZGW5pSMTbgL8OA+0G6g=;
        b=JRubnsdybVbFQSgHbPIqfrlpu4WCXFremUhowAh11TfuQNNAFnGNoYj+E5O47GduQa
         yIHEQzcCq1JMzp1VVwzh7OuLP1RIQYOlx5EBCFlgcxzhBRcM/imrspJO8bcI7/4ygD9k
         Ux3BDrTQRpnO+3GUuSxsqs5OPJcnohcS0etyvpO0rH+nRlCH4klTwaX721AMSc563jWF
         Zx54V+AEzx94YmO9py0CiuXZAo50L3qsqXbvHxa2FmfTA9pKskBQ3k4DOU1dDbNovsMr
         MhnngFxfVWrHmE7MCkNvZUCYTZl3wpmmskH68Wzd9+fc0JwOcujY1YHgwkNkg0K7aJW8
         hTPg==
X-Forwarded-Encrypted: i=1; AJvYcCVuO/NxTPx6QsjZuPyflarXCI0OcqVnrxM13ao/kRIcC8jqkYIiZg1pc8SRube/AF0+K+igjValY20=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywl83MZVFAvnFByVYjMt6wbUq9H/CvGbGtobmPleNJsaav2r6Kr
	tPAFDiN6yDkayCNVwlMbPuF+3uCQOSTpq90YIVJrcljuoV8qo2RaPzveJGignyI=
X-Google-Smtp-Source: AGHT+IHCon9fRFDrHerggsiPyx4AtDw4TVZbH4Nljh4SYZtoZBIaZ3QImbtxwLENLrPIklzxFCHjvg==
X-Received: by 2002:a17:907:e696:b0:a99:61f7:8413 with SMTP id a640c23a62f3a-a9a34cb8a71mr258745466b.23.1729073216076;
        Wed, 16 Oct 2024 03:06:56 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 16 Oct 2024 11:06:47 +0100
Message-Id: <D4X5APOZBQ8R.3IKLCYY15066F@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH] x86emul/test: correct loop body indentation in
 evex-disp8.c:test_one()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <ded15010-299a-4273-9414-106579677a5f@suse.com>
In-Reply-To: <ded15010-299a-4273-9414-106579677a5f@suse.com>

On Wed Oct 16, 2024 at 8:45 AM BST, Jan Beulich wrote:
> For some reason I entirely consistently screwed these up.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

  Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

We should really give another push to the clang-format effort. This whole c=
lass
of mistakes would be a thing of the past.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:10:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:10:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819900.1233365 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10yg-0001RH-0V; Wed, 16 Oct 2024 10:10:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819900.1233365; Wed, 16 Oct 2024 10: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 1t10yf-0001Qk-UE; Wed, 16 Oct 2024 10:10:01 +0000
Received: by outflank-mailman (input) for mailman id 819900;
 Wed, 16 Oct 2024 10: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=uUxT=RM=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t10ye-0001GK-BG
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:10:00 +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 cce4849c-8ba6-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 12:09:59 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a99ea294480so372495966b.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:09:59 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d7b7da0sm1550756a12.95.2024.10.16.03.09.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:09:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cce4849c-8ba6-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729073399; x=1729678199; 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=5Ua6jsL4wZ+IdHGJK3HhNlfX9fj77sUPbHcVmEJle7o=;
        b=c7tBZFe7yi4yBKGApJgq2qSVwWhnVGxKo+fZGvD6iS5BEd0c5Gidbzx2Jm0dccrsrq
         EyC7k+aPxcZ9yNxWD8OR7LkILccvgyV6gI8OtMgmInt1hoeXAh7f6t0F6eNQ214Zewes
         cfKa9aiyeDKbuOWxSMXOUaZFSw22hEY/ahkhk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729073399; x=1729678199;
        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=5Ua6jsL4wZ+IdHGJK3HhNlfX9fj77sUPbHcVmEJle7o=;
        b=Q2AeOeesQfcAtHbATxyXFHU5A9JzHfSdcL+1sNoCl570hWYN08XCJ3XiL/EE8jQe0x
         yhdW97h9CJS3rK2bJq6ACtArE0BuKNyCiAWU+HtYbF7Q3HUhcYxy+GPId7xgUz9C+Xki
         RPmLZMCtgggpvHYKRVwddIWITBvq4Al/rrqOFe0CsB6grl+KNIdGxRHPXhMkhBjZV1M4
         MwKipazeJIpVM0GezrYwC4hgPOzHYLmMCjt2qHSPrBzifL+k52gNRBky2k/iWHU9RYkg
         JBINKUsrmNFn4ZZ1lGKSpRsY1FvSWG8TgUsBcYb7+2CB+BUZ/6rM/Rz9rAubkTy1qNok
         w2HQ==
X-Forwarded-Encrypted: i=1; AJvYcCVvTMMFkUkKb3pBlvpg6jfyWK268MhB68R7q8jD2A/WsH2TOu23xsUAUidUUxQuRBaA0B5QCGEAiBc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yza/y4i8kyG8zj41E49gsm7aeRI7+tfjZKW1gPJFGdwy++EFkp6
	l4xcjhWbtdrR0kgFhJqm3Bali6vke5kMMGty2G4wl41XzdF93lXVzgRKeCSX8lw=
X-Google-Smtp-Source: AGHT+IGw6Y9o5Hjpt9KqUmUuwatqPNNEklFAveng/tT79mTiFliODoKd2Nw9yVawFX96sJSgcJuHBw==
X-Received: by 2002:a05:6402:4142:b0:5c9:58d3:646b with SMTP id 4fb4d7f45d1cf-5c95ac62643mr19607090a12.29.1729073398556;
        Wed, 16 Oct 2024 03:09:58 -0700 (PDT)
Message-ID: <d7048875-b53e-4280-a6b7-853a90aa92ef@citrix.com>
Date: Wed, 16 Oct 2024 11:09:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/riscv: initialize bootinfo from dtb
To: oleksii.kurochko@gmail.com, Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <cover.1728481578.git.oleksii.kurochko@gmail.com>
 <70c98147d7f977649ca3eb1a82cd76aeb0df1b14.1728481578.git.oleksii.kurochko@gmail.com>
 <7e3399d7-f41c-4696-919b-dc7f57168bf9@suse.com>
 <fce8372ee3bac4a0a3c6de58d7c7757df6e6d0a3.camel@gmail.com>
 <9ff389f6-874b-4bb1-8685-d1e0e2281c59@suse.com>
 <56f7ee95390a36202dafe9e0ba64531549b4c4eb.camel@gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <56f7ee95390a36202dafe9e0ba64531549b4c4eb.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16/10/2024 8:50 am, oleksii.kurochko@gmail.com wrote:
> On Tue, 2024-10-15 at 14:32 +0200, Jan Beulich wrote:
>> On 15.10.2024 11:11, oleksii.kurochko@gmail.com wrote:
>>> On Tue, 2024-10-15 at 08:33 +0200, Jan Beulich wrote:
>>>> On 10.10.2024 17:30, Oleksii Kurochko wrote:
>>>>> --- a/xen/arch/riscv/setup.c
>>>>> +++ b/xen/arch/riscv/setup.c
>>>>> @@ -50,6 +50,8 @@ void __init noreturn start_xen(unsigned long
>>>>> bootcpu_id,
>>>>>                            _end - _start, false) )
>>>>>          panic("Failed to add BOOTMOD_XEN\n");
>>>>>  
>>>>> +    BUG_ON(!boot_fdt_info(device_tree_flattened, dtb_addr));
>>>> We generally aim at avoiding side effects in BUG_ON() (or
>>>> ASSERT()).
>>>> With
>>>>
>>>>     if (!boot_fdt_info(device_tree_flattened, dtb_addr))
>>>>         BUG();
>>>>
>>>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>>>
>>>> I can make the adjustment while committing, if desired.
>>> It would be great if these changes could be made during the commit.
>> I've committed it with the adjustment, 
> Thanks!
>
>> yet once again I wondered: Why not
>> panic()?
> It could be panic() here; there's no specific reason. I agree that
> using BUG() here isn't logically correct, as technically, a size of
> zero for the FDT isn't a bug but rather indicates that someone provided
> an incorrect FDT to Xen.
>
> I will use panic() in the future for such cases.
>
> It’s not always clear what should be used and where. Perhaps it would
> be helpful to add some explanation somewhere.

panic() gets you a single line diagnostic.  BUG() gets you a backtrace,
but no diagnostic information at all.

BUG() should be a last resort, because it requires someone to go digging
in the source code to even figure out what went wrong.  panic() (with a
good diagnostic message, e.g. "unexpected $foo in device tree") is far
more meaningful.

There are ways of getting a backtrace in combination with a panic(), if
the situation warrants it.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:10:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:10:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819905.1233377 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t10zE-0002cL-AY; Wed, 16 Oct 2024 10:10:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819905.1233377; Wed, 16 Oct 2024 10: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 1t10zE-0002cD-6F; Wed, 16 Oct 2024 10:10:36 +0000
Received: by outflank-mailman (input) for mailman id 819905;
 Wed, 16 Oct 2024 10: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t10zC-0002c1-RI
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:10: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 e101f0a7-8ba6-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 12:10:32 +0200 (CEST)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-4305413aec9so61626555e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:10:32 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4313f56e9b4sm44429735e9.25.2024.10.16.03.10.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:10:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e101f0a7-8ba6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729073432; x=1729678232; 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=81xVFYQcM6P4s1G8ejgRsNfFkhl7vejaV9IrN8QzwmE=;
        b=cXU9i4IK9oxjEAv8DZI/CHRUIKiR8yNNWHDix3UxKb6Ijto0c7OCHZxb2skaqj0Tof
         eSECqCO8j8NaKf1clkayutE5eYPVxOAHjvYjUkUh4NLiu5VA7WjfbIMdhkYwCESHWKzY
         f4ALv187bmmGwEXBSlyEgswAJmOeLRpqawf1yMWhogrqUYsQsVEhyzha601rm/U0hp6P
         pIzenoelikoK6slgJaksdOy0uI0UWUzgnbRhOZqbmj9Aw+o3vsSS5IErWRs86YmFw00m
         WjuLqZJ/jSrxxH415o5ZRX7f67faT4VbjF2vCJe9GqrbAmusybRqyJ48JaW6VXmeMV/p
         iIUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729073432; x=1729678232;
        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=81xVFYQcM6P4s1G8ejgRsNfFkhl7vejaV9IrN8QzwmE=;
        b=G/YfXLParSIDwzyJRetxpE6ySvs+c0aOqsEYPVkYdygnPGB91rfevBYdwFnipvsntq
         ST/rS4VfngnWgs9PsWVQu+sx2mLbc7CnK+itWs1SBl3YgtljY66hDVS0Wjc2AXO+dxun
         guheCyzpkJe0IlfgzsJgBZBdVnM03HpqU23s7p650UgL4U0o1kGok3n4sxC/FrZ03942
         Vyumrec18oAEtezebwwbWQtbKifyyLIDMrW7QqB8OXf9/lg/5+s1y+c4UgOsBcQ6Juzc
         8+N5vX88qlBuxC+xShkQ1yEp7C6o0c0l971W6Pywwli88jfMXevnugCMq+Ssr7ffHtTI
         gJ+w==
X-Forwarded-Encrypted: i=1; AJvYcCW1JdKFRePuNgaVh6vUvRgucRpjZg0RIZcU4VIZwvdtMtQeuMixct4T8h9dNO4ZAoRIhhb0tGOS2Hw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxa3kJdU3bO2CqVfE1KVrqrs5OH/yltVFb1gpO3C701NsJNfvic
	nNwk2C9CctMKFPKKAWNsflBy97fxdUCgc/Gwl4nNvC9qMI5IF+TSjWzM+8ZjMA==
X-Google-Smtp-Source: AGHT+IGLmNCuM1Zp1TT5U6TM3Ey0XO+eXrLEWMFVLH5szIurXIBXZ9ReyiHdfeBqJbqKzZrwqBualA==
X-Received: by 2002:a05:600c:510d:b0:42c:ba1f:5482 with SMTP id 5b1f17b1804b1-4314a3cdde9mr24405005e9.35.1729073432128;
        Wed, 16 Oct 2024 03:10:32 -0700 (PDT)
Message-ID: <dd1b3db5-6f48-4644-90f6-bdcad98e62bd@suse.com>
Date: Wed, 16 Oct 2024 12:10:30 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.19? v6 0/9] x86: Make MAX_ALTP2M configurable
To: =?UTF-8?Q?Petr_Bene=C5=A1?= <w1benny@gmail.com>
Cc: Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.org>, Anthony PERARD <anthony@xenproject.org>,
 Juergen Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@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>,
 Nick Rosbrook <rosbrookn@gmail.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Alexandru Isaila <aisaila@bitdefender.com>,
 Petre Pircalabu <ppircalabu@bitdefender.com>, xen-devel@lists.xenproject.org
References: <cover.1718038855.git.w1benny@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: <cover.1718038855.git.w1benny@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10.06.2024 19:10, Petr Beneš wrote:
> Petr Beneš (9):
>   tools/ocaml: Fix mixed tabs/spaces
>   tools/ocaml: Add missing ocaml bindings for altp2m_opts
>   xen: Refactor altp2m options into a structured format
>   tools/xl: Add altp2m_count parameter
>   docs/man: Add altp2m_count parameter to the xl.cfg manual
>   xen: Make the maximum number of altp2m views configurable for x86
>   tools/libxl: Activate the altp2m_count feature
>   xen/x86: Disallow creating domains with altp2m enabled and altp2m.nr
>     == 0
>   tools/ocaml: Add altp2m_count parameter

While the first two patches did go in, the rest is still pending afaict. If
the series is still deemed relevant, would you please either chase the
missing but necessary acks, or re-submit with review comments addressed (if
any)? If instead it was abandoned, could you please also indicate so?

Thanks, Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:13:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:13:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819916.1233389 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t112F-0003Ib-Sk; Wed, 16 Oct 2024 10:13:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819916.1233389; Wed, 16 Oct 2024 10: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 1t112F-0003IU-P2; Wed, 16 Oct 2024 10:13:43 +0000
Received: by outflank-mailman (input) for mailman id 819916;
 Wed, 16 Oct 2024 10:13: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=uUxT=RM=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t112E-0003IO-S2
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:13:42 +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 51c21e4a-8ba7-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 12:13:42 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a993a6348e0so479199866b.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:13:42 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d4f864fsm1549133a12.26.2024.10.16.03.13.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:13:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 51c21e4a-8ba7-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729073621; x=1729678421; 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=zS9Qo62hkZgsadKbAAo25IAaZmz26FG+0567DnUWbHs=;
        b=UrMBJB1X7OUPRwy+dCgLPRVjbJmqfMI5lR6UTaBsLPLCJl0ZbrSA0eTE3yp+VCXnnG
         bf0/MZoY0A5xSzv9tEhPF0ZzA1PFLCc2NJPKTecw3/tp+HWPK6773xDPmQWx8zofK7G7
         BleLTiO31KilyZiXReaiFT9dnxNe4rdVahNM4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729073621; x=1729678421;
        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=zS9Qo62hkZgsadKbAAo25IAaZmz26FG+0567DnUWbHs=;
        b=NpYo11IsyhqzcpH+6SaZrK/5al9GvZlpAhfibBhSHiFNPY9vZnfDRFagR9Voukrsp3
         6iJ5a0yqvNBbfKaF8SQAwffFWpOIPAtLetn0FR8/rSTccPARp9O2nLzG/TUb/ayHbLzm
         5TbtsUV81CGkxNLEjTkRCZgfZFa6vEBzbG/xVISfLbdEe312PI2H37qjqZSbDko3h8RO
         otqe0y0QwdUXYKcLJTbv7qoMVujrFX12L8Yz9KzHDUoY4rrITWIDaeevkF9/RMrIVfiz
         J/anL7okCorDBmwVGxYz8pmROgsNQc6TPlo4RKwTWoyN/vEx9KTV1fgPp+Fgbzcz/Vea
         Hxgw==
X-Forwarded-Encrypted: i=1; AJvYcCVqkLKBEBAUhaHcqImvveOAx+/I/GluEmHFoZUkBywola+wNr+rW1DfR3l8qblYNgcmdZKlWH1FaUQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx+KkP+dPXAvrSuEWQpLRL71Ty2u/pKFV5Wwnt0WCN/NRcfvmdh
	oZBsISad+oE0GMrzM5fTeZLtpDKBa//074MYSih4jIy4dBiJVgiNiqUi+2rRQkmVvGq7VS1VW/g
	4ZbY=
X-Google-Smtp-Source: AGHT+IH2fqiW52f2cpU4lU3NmroV4HGPJfTKvoMHem/ty4BjZcMen3uuItd/eBi07O5iR9jvdzmj0w==
X-Received: by 2002:a05:6402:370a:b0:5c9:44bc:f9b3 with SMTP id 4fb4d7f45d1cf-5c95ac15792mr17258303a12.11.1729073621489;
        Wed, 16 Oct 2024 03:13:41 -0700 (PDT)
Message-ID: <7915cc78-3cf6-48d9-97e8-1eb3360c44de@citrix.com>
Date: Wed, 16 Oct 2024 11:13:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86emul/test: drop Xeon Phi S/G prefetch special case
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <a2dae57f-d166-4c99-8edd-11784abdecab@suse.com>
Content-Language: en-GB
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: <a2dae57f-d166-4c99-8edd-11784abdecab@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16/10/2024 8:46 am, Jan Beulich wrote:
> Another leftover from the dropping of Xeon Phi support.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:15:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:15:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819921.1233398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t113z-0003qi-4w; Wed, 16 Oct 2024 10:15:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819921.1233398; Wed, 16 Oct 2024 10:15: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 1t113z-0003qb-2I; Wed, 16 Oct 2024 10:15:31 +0000
Received: by outflank-mailman (input) for mailman id 819921;
 Wed, 16 Oct 2024 10:15: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t113x-0003qR-Nw
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:15:29 +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 90d8b78c-8ba7-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 12:15:27 +0200 (CEST)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-43117ed8adbso72592215e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:15:27 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4314bf60fc4sm27518005e9.38.2024.10.16.03.15.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:15:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90d8b78c-8ba7-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729073727; x=1729678527; 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=NnDZDJssTTxzQ28twAWzrO8trKXAwByxOUQ0dbkC/U8=;
        b=gXe8uEw1u0OaU+j4a9DFyqU+oAq1I62DHNvg73UYwgZ1RY+NqZd1pJizj/gon2FZvF
         jFEOrZk3iYjrFpdm8cwJ+YehIfMXwuWuKR6649LDikDJoaEJdBosOz76mQB/GptvVSC0
         z8Qt/5SEdSgMFf1D2PKpG+gNdlEpnOUlMfkbkQBek6yhYUuIx7DXpqqdSYDCjcpEQNwG
         efQHoGOc+gJ0O5gaR5v70LcWxXvivRZ0bxzmDG4tQ23anfIQGu6FOiphXR8+OhBvgKwJ
         PlnAQMuMutFnJfFYUQjcYN87Z8kyKfrdHPR51hR6o+nD1wXD1WPxk+8yx0GqMuiaHmMe
         0xAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729073727; x=1729678527;
        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=NnDZDJssTTxzQ28twAWzrO8trKXAwByxOUQ0dbkC/U8=;
        b=In4usBKPKvNr3AZvTKUCArqyBS4Yjxw/WsuFYJ/vXQVXBGyt/H2AbME9jx7UVicnT8
         ggwowYQXS2Sbz2kS6C+yJ+0umPyIBHr6H0WGkr4tYTgqVd1yT7Z5l1QQcTf8sr7nfCrR
         q/hv4AQzl/pHXP9E3ejv9YHBqOs3nVM0KA6teYxzTXo3NKDhoGw7EY39vyks7EYyqYcl
         L2s9rhOsK+WA02bfijE4dWd/FM5eSeXKN7z+aSVvsQSHwsaB5gnJxipojjyKJ1v1wQjr
         FqnQ5T2HwRp0xsEu+xp/haR+7gfUU0C7n9ofRmSChyeBN/cLHV1yi8Aid3IGoKei5RNr
         E0sA==
X-Forwarded-Encrypted: i=1; AJvYcCUQw9/jwtnTSFmh7kTg3iLQ7avq9+jPYSVUFuBNT1P+Jm5UwyXjfbz3n+NOA9FbaeJIssq9YGF2T0c=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxKrwcezfprvbPvyQ9RjliOQ1S0J0B7VWbpQirKU4MMYLK8IOKL
	aiUchStBSJ3qKFglnuw3/zVxQCdktx6hypAQUkLjthgv7NAQsIN6gLbFE7gIDQ==
X-Google-Smtp-Source: AGHT+IF3+6a1us2WmIRV7YfGbCdjRu2BDnV73tjt5k94BjFCD62xwdiyW80qYl/q5Y7dm1lQtGf/IA==
X-Received: by 2002:a05:600c:4fd3:b0:431:54f3:11ab with SMTP id 5b1f17b1804b1-43154f3151amr6199445e9.33.1729073727109;
        Wed, 16 Oct 2024 03:15:27 -0700 (PDT)
Message-ID: <86229731-c999-4c02-a561-e8fc0bb82fc5@suse.com>
Date: Wed, 16 Oct 2024 12:15:26 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86emul/test: correct loop body indentation in
 evex-disp8.c:test_one()
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <ded15010-299a-4273-9414-106579677a5f@suse.com>
 <D4X5APOZBQ8R.3IKLCYY15066F@cloud.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: <D4X5APOZBQ8R.3IKLCYY15066F@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 12:06, Alejandro Vallejo wrote:
> On Wed Oct 16, 2024 at 8:45 AM BST, Jan Beulich wrote:
>> For some reason I entirely consistently screwed these up.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
>   Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Thanks.

> We should really give another push to the clang-format effort. This whole class
> of mistakes would be a thing of the past.

For issues like the one here it would depend on whether that would also be
applied to (parts of) tool stack code. The plans, iirc, were mainly to cover
the xen/ subtree.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:19:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:19:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819931.1233409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t117w-0004uQ-KK; Wed, 16 Oct 2024 10:19:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819931.1233409; Wed, 16 Oct 2024 10: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 1t117w-0004uJ-HC; Wed, 16 Oct 2024 10:19:36 +0000
Received: by outflank-mailman (input) for mailman id 819931;
 Wed, 16 Oct 2024 10: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=uUxT=RM=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t117u-0004uD-Vc
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:19:34 +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 230cc4d0-8ba8-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 12:19:33 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9a2cdc6f0cso235528966b.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:19:33 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29817576sm167203566b.130.2024.10.16.03.19.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:19:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 230cc4d0-8ba8-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729073972; x=1729678772; 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=+XgFDJ2V5cErzsiXHq55obWPlN7UYQiZ+qvvBhEvvoI=;
        b=mxbK2WHhV/n7us12LMNazfyDB8fMol2O4KjeVSwkFWliryvWTaL7BPjhJz8EqwXeUS
         o1EIEvymIRjdjUHcaON8aUgIbDTz8w9xFVQmxNXdgATVTNBcPSV3uZqSr1QpIPuNNX8Q
         5/9MXM1fpcW6XZ6HRRiNQLUJd5VoEJiqHC+Ho=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729073972; x=1729678772;
        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=+XgFDJ2V5cErzsiXHq55obWPlN7UYQiZ+qvvBhEvvoI=;
        b=fqdJE6PR8P05eK0X0w4dKH+g/L9KOL+loz2wi+gn9b6egP7+QwJ4kX/KDh36ZdSsBd
         U03Fg1iJrW1KqpODbjKxZgfBjFVr5fhK8DBrfS33WPsCOKrMpbmo4mv4/5ALcK2IqANW
         Y5U7zJPRNzVWkIJo0tEfqJOv/8zSlI8tgpXMSvlwlFIMdZ8ajbmjSACZQ9AhaqIXxbpJ
         rhPhicYmL4kn5QrqK1Dnw6DaQETQD/Q0r7lLm0b1QZLBdz6K6TX+ohGl1gbq0wN2tJRm
         pd59GbUEPLdlALcwYaZjD2TXeSsf0uTl7AxotwYnPvkF3Ow/DU72VO1aBi1GjGWhcN4y
         uVMg==
X-Forwarded-Encrypted: i=1; AJvYcCUZ3Rqi6hJyk/LHbyfDmPezAZAoI04MT38MP9Z2Af7ir6cb8eY7ifbr9KAD5Gv3QHuc8cNIq8dWPmE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzROdUH3OKcsWxZSVmEyZOC9LMW92Rbfm7+DcHDvKB7KZU6sM5G
	fw0rGC1c7c/O7sL6NpHT7VsGEm5k+nEKEeNs3SGVQ04pbsgK2W655Vx4oBEnA5s=
X-Google-Smtp-Source: AGHT+IFbhTxJ/VAeZHJBxn4FAtL0ysyLaItk0WG53fjev0FbpcdSk9FrcpwmIGeU+FumfyLYOxe6VQ==
X-Received: by 2002:a17:907:7da6:b0:a9a:38e6:2fdf with SMTP id a640c23a62f3a-a9a38e6307bmr190159266b.64.1729073972459;
        Wed, 16 Oct 2024 03:19:32 -0700 (PDT)
Message-ID: <067137f9-3820-49cc-af10-4e9846abc896@citrix.com>
Date: Wed, 16 Oct 2024 11:19:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 2/5] x86/boot: Reuse code to relocate trampoline
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
 <20241016092154.1493035-3-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241016092154.1493035-3-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16/10/2024 10:21 am, Frediano Ziglio wrote:
> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index c665a9b420..c57c9f83d3 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,12 +1,16 @@
>  obj-bin-y += head.o
>  obj-bin-y += built-in-32.o
> +obj-bin-y += $(obj64)
>  
>  obj32 := cmdline.32.o
>  obj32 += reloc.32.o
> +obj32 += reloc-trampoline.32.o
>  
> -nocov-y   += $(obj32)
> -noubsan-y += $(obj32)
> -targets   += $(obj32)
> +obj64 := reloc-trampoline.o
> +
> +nocov-y   += $(obj32) $(obj64)
> +noubsan-y += $(obj32) $(obj64)
> +targets   += $(obj32) $(obj64)

Per Anthony's feedback, targets doesn't need to get $(obj64), because
they're listed in obj-bin-y already.

Can be fixed on commit if everything else is is ready.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:34:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:34:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819939.1233422 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t11Me-0008Gc-Rm; Wed, 16 Oct 2024 10:34:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819939.1233422; Wed, 16 Oct 2024 10:34: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 1t11Me-0008GV-Oy; Wed, 16 Oct 2024 10:34:48 +0000
Received: by outflank-mailman (input) for mailman id 819939;
 Wed, 16 Oct 2024 10:34: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=kaV7=RM=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t11Mc-0008Fd-Ki
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:34:46 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 427a011d-8baa-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 12:34:44 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a0f198d38so508185966b.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:34:44 -0700 (PDT)
Received: from localhost ([5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a298443aesm166469066b.166.2024.10.16.03.34.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:34:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 427a011d-8baa-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729074884; x=1729679684; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=rJrQquUHoWnrPRU1jmSiFO2YF7b7zMs5StMwKmSfiLU=;
        b=efLRmuBPSilT+Zo/brSt3MTl8IOOy9w0w95H0EJR5QsPhiaKPJeQjMkGRHB/nO/m9L
         qhVYffKFGlkbp7DVNCzivoKj/FlLTJtWSjS1FR6mMlAThjS2hrFffaqZ1BTvH3oAQX88
         uU0F7ETPonDmhE/rgUQvD7ywxRxtQi1CFll9s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729074884; x=1729679684;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=rJrQquUHoWnrPRU1jmSiFO2YF7b7zMs5StMwKmSfiLU=;
        b=nYcNDpARJIPIA5y0CcFywMU/P8swjjUYDXKhSgNRHRQrNP+KqMNEgs+JWKp9b8gTY1
         VfZEM2/NbXzneLIJny3kvDU0//tCLzuuax5VW1gIYri4AmOVDZO12avgN7hhNYJu/1vp
         mvBX9GPZ86Xpa5lmX37ZRGzfySBMubzaQ7S7SoRMso9Di2PUdfeNSBuzs1joFJALee/z
         d0SBzyuTz8+AmN1uo6eP7+4yCmE3WzMIC7Cai2R3Ez9twRLKETMB5VAK/Qc37aUmr8ct
         K4HuU+A8Q3YvQQC9ouA+a3IRomqZ00GAWdoj9565/TJ/cDd2thpbhawtrA34ag5kjYVa
         C+jg==
X-Forwarded-Encrypted: i=1; AJvYcCXQKMydpex37XpnvcnfN5VTTqJEOa3BL7Q4MlmCs1yTGdjPg+NB5rh+w6wpSSUnOWGIdZrIfFA/mQ4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywn0h1FyOOkc2JPDm9o67IZuY46dFgdS63Id47yKC0ABB1deExO
	0wxl85aizWSMwwGMXbbFnSkZhD8Eh6m8cB6ZQ+7J9/2Se9yfkQrVCiuR5DhaboA=
X-Google-Smtp-Source: AGHT+IG+JuWI72bFzgC2HNRWbvQolkptpUoBt7E4u9ddPzUkkZKEedBgz/hoNf4bHzs+41vnAtFOMg==
X-Received: by 2002:a17:907:986:b0:a99:89bd:d84a with SMTP id a640c23a62f3a-a99e3b6db69mr1461505866b.25.1729074884000;
        Wed, 16 Oct 2024 03:34:44 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 16 Oct 2024 11:34:35 +0100
Message-Id: <D4X5VZZWZJII.271VYW2L8Y0PG@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH] x86emul/test: drop Xeon Phi S/G prefetch special case
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <a2dae57f-d166-4c99-8edd-11784abdecab@suse.com>
In-Reply-To: <a2dae57f-d166-4c99-8edd-11784abdecab@suse.com>

On Wed Oct 16, 2024 at 8:46 AM BST, Jan Beulich wrote:
> Another leftover from the dropping of Xeon Phi support.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Note: I'm deliberately not switching to use of the conditional operator,
> as the form as is resulting now is what we'll want for APX (which is
> where I noticed this small piece of dead logic).
>
> --- a/tools/tests/x86_emulator/evex-disp8.c
> +++ b/tools/tests/x86_emulator/evex-disp8.c
> @@ -911,10 +911,8 @@ static void test_one(const struct test *
>      n =3D test->scale =3D=3D SC_vl ? vsz : esz;
>      if ( !sg )
>          n +=3D vsz;
> -    else if ( !strstr(test->mnemonic, "pf") )
> -        n +=3D esz;
>      else
> -        ++n;
> +        n +=3D esz;

Just making sure. This is leftover from 85191cf32180("x86: drop Xeon Phi
support"), right? Dead code after the removal of the avx512pf group.

If so, that sounds good. But (not having looking at the general logic), how
come we go from ++n to "n +=3D esz". It's all quite cryptic.

> =20
>      for ( ; i < n; ++i )
>           if ( accessed[i] !=3D (sg ? (vsz / esz) >> (test->opc & 1 & !ev=
ex.w)

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:51:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:51:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819946.1233432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t11c4-0003JN-4U; Wed, 16 Oct 2024 10:50:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819946.1233432; Wed, 16 Oct 2024 10:50: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 1t11c4-0003JG-1U; Wed, 16 Oct 2024 10:50:44 +0000
Received: by outflank-mailman (input) for mailman id 819946;
 Wed, 16 Oct 2024 10: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=kaV7=RM=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t11c3-0003J9-El
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:50:43 +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 7d2ff132-8bac-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 12:50:42 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c97c7852e8so4530718a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:50:42 -0700 (PDT)
Received: from localhost ([5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29749655sm171308366b.73.2024.10.16.03.50.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:50:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d2ff132-8bac-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729075842; x=1729680642; darn=lists.xenproject.org;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=n/wOordqhTaHo/F3+nOz5hlXDS5A/In4gQzP651sSjY=;
        b=LcDTHxl2xr58UoJetck49yiE14CoC72wd/kDn1BalUqlU99NW6jPyw7je6VUZ8hcEs
         WhhP29kCLT8LlIEiVkd0JuCchS4p9oRScoEF7UBFyRehvleyHje7s7/wz2aInzqYhXA7
         IWxKTTg2RSbW7y/o+1Vlwb2tTnZJZ+c1Ya5hw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729075842; x=1729680642;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=n/wOordqhTaHo/F3+nOz5hlXDS5A/In4gQzP651sSjY=;
        b=nYUzq1NLQN9T62AuWeLEksRWfcqUkyYY3MV/21AHW4vSaw4yD1tLJ5xxaISpeMaK0S
         EsdsyRIqtVueHd6MiVdHoxa29vE0kl45UqWw9A+vc1OoAlGDY3xcfeOdzdvwfarCcFM+
         QuYensSdmwY6owSzNhAwTUJfTloj1JNG3QBl7o05UtqS4NEyCOSUpCltM/rwhEfCxv5I
         jeNq89LgJiaMfiW66EcTOVJvfATnYJVdVkS0fKzBWRsqqalmhMBtSsMbQc1lgJYGxmKs
         EDVDXbcGwLwZ/7lMDxRwfcYY70D5L8c2abt4SkKu3Wde9eDcg12NjtPpaphAuNHSM4ZZ
         Mm4w==
X-Forwarded-Encrypted: i=1; AJvYcCWo6J9GqbTsfKJlY2qqTHmbLhErQZ11U/cI6mPTgYu6RbJNw8NA6WGrLXEJ5EEMSSUEJZ2f+kN0cSY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxgb3Q/+jyQpc8WBdff8BF6fik6akXVtI7ymvTib9rZVjpvjPrA
	sVd/1Z4Cjof9barYsHGyviqVgetIz1vpDnqK/xs8va6jup66wn3iFZPnA0QOpfMtmKmHtOU/05A
	V
X-Google-Smtp-Source: AGHT+IHZHt1/PaxVVnLSi05vNpSlTLWqwmiAZkxrUHBm3oIQuGm04NCIyD1gsXKfydbAuLx4zMsK+w==
X-Received: by 2002:a17:907:3602:b0:a99:389a:63c2 with SMTP id a640c23a62f3a-a99e3ea5c6bmr1442101266b.62.1729075841804;
        Wed, 16 Oct 2024 03:50:41 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 16 Oct 2024 11:50:33 +0100
Message-Id: <D4X687XLJI5Z.35XQ462PS6ELQ@cloud.com>
Subject: Re: [PATCH v1 2/5] xen/riscv: implement maddr_to_virt()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, "Jan Beulich" <jbeulich@suse.com>,
 "Julien Grall" <julien@xen.org>, "Stefano Stabellini"
 <sstabellini@kernel.org>
X-Mailer: aerc 0.18.2
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com>
In-Reply-To: <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com>

On Wed Oct 16, 2024 at 10:15 AM BST, Oleksii Kurochko wrote:
> Implement the `maddr_to_virt()` function to convert a machine address
> to a virtual address. This function is specifically designed to be used
> only for the DIRECTMAP region, so a check has been added to ensure that
> the address does not exceed `DIRECTMAP_SIZE`.
>

nit: Worth mentioning this comes from the x86 side of things.

> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
>  xen/arch/riscv/include/asm/mm.h | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm=
/mm.h
> index ebb142502e..0396e66f47 100644
> --- a/xen/arch/riscv/include/asm/mm.h
> +++ b/xen/arch/riscv/include/asm/mm.h
> @@ -25,8 +25,12 @@
> =20
>  static inline void *maddr_to_virt(paddr_t ma)
>  {
> -    BUG_ON("unimplemented");
> -    return NULL;
> +    /* Offset in the direct map, accounting for pdx compression */
> +    unsigned long va_offset =3D maddr_to_directmapoff(ma);
> +
> +    ASSERT(va_offset < DIRECTMAP_SIZE);
> +
> +    return (void *)(DIRECTMAP_VIRT_START + va_offset);
>  }
> =20
>  /*



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:51:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:51:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819947.1233442 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t11cN-0003fM-Em; Wed, 16 Oct 2024 10:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819947.1233442; Wed, 16 Oct 2024 10: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 1t11cN-0003fF-Bp; Wed, 16 Oct 2024 10:51:03 +0000
Received: by outflank-mailman (input) for mailman id 819947;
 Wed, 16 Oct 2024 10:51: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) id 1t11cL-0003J9-KQ
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:51:02 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 86bd9cdd-8bac-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 12:51:00 +0200 (CEST)
Received: from orviesa005.jf.intel.com ([10.64.159.145])
 by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 16 Oct 2024 03:50:58 -0700
Received: from black.fi.intel.com ([10.237.72.28])
 by orviesa005.jf.intel.com with ESMTP; 16 Oct 2024 03:50:51 -0700
Received: by black.fi.intel.com (Postfix, from userid 1000)
 id DE448331; Wed, 16 Oct 2024 13:50:49 +0300 (EEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86bd9cdd-8bac-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729075860; x=1760611860;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=PNIap9Mxdye6yXywbk16VpWNVzOz915uVCPZlmzOALo=;
  b=dAe25eiMDw2e8olrLPBQ5qTQcA8k0/et1OAX7G/gktiwpi3RrcvyUuYU
   wTeOK+UZel0KZpICotQqGo4yQ6iy34hO4tUBNVknD0XgP/vwbR179NtLy
   ldZc9cSAiprCalPDUuw9TFvEysjp1OCn6QXLjTBqD4Buv65YeoWx9D95w
   PoRb5BI7a1ow2SHAR/q6EF3NQSgmdP1+YyjkmHmCmSL8FuE0Pf2rjsPy9
   6mh7i2Jo1ydTeJASyYi62EiW7nbjeQiIWPl/hb0nVeo/8jeGhot1vwTVG
   pWOuAraStv+7k6ABY8VZPXLvJ7EWfAwbYikxzWRqNMcQQ51lg2r5wawy3
   A==;
X-CSE-ConnectionGUID: /W0d1CHWT46/2OKjaPYktA==
X-CSE-MsgGUID: VK2jCiQMQn2wNOJQMciPbA==
X-IronPort-AV: E=McAfee;i="6700,10204,11226"; a="28395571"
X-IronPort-AV: E=Sophos;i="6.11,207,1725346800"; 
   d="scan'208";a="28395571"
X-CSE-ConnectionGUID: BcSritA1TJ2xJIzrN/E4tw==
X-CSE-MsgGUID: rEYd4NKfRJOPJascwiMpVw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,207,1725346800"; 
   d="scan'208";a="82969242"
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
To: Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>,
	Wei Liu <wei.liu@kernel.org>,
	Dexuan Cui <decui@microsoft.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
	Gaosheng Cui <cuigaosheng1@huawei.com>,
	Michael Roth <michael.roth@amd.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Ashish Kalra <ashish.kalra@amd.com>,
	Kai Huang <kai.huang@intel.com>,
	Andi Kleen <ak@linux.intel.com>,
	Sean Christopherson <seanjc@google.com>,
	Xiaoyao Li <xiaoyao.li@intel.com>,
	linux-hyperv@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	Dave Hansen <dave.hansen@intel.com>
Subject: [PATCH] x86/mtrr: Rename mtrr_overwrite_state() to guest_force_mtrr_state()
Date: Wed, 16 Oct 2024 13:50:48 +0300
Message-ID: <20241016105048.757081-1-kirill.shutemov@linux.intel.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <20241015095818.357915-1-kirill.shutemov@linux.intel.com>
References: <20241015095818.357915-1-kirill.shutemov@linux.intel.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rename the helper to better reflect its function.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Suggested-by: Dave Hansen <dave.hansen@intel.com>
---
 arch/x86/hyperv/ivm.c              |  2 +-
 arch/x86/include/asm/mtrr.h        | 10 +++++-----
 arch/x86/kernel/cpu/mtrr/generic.c |  6 +++---
 arch/x86/kernel/cpu/mtrr/mtrr.c    |  2 +-
 arch/x86/kernel/kvm.c              |  2 +-
 arch/x86/xen/enlighten_pv.c        |  4 ++--
 6 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/arch/x86/hyperv/ivm.c b/arch/x86/hyperv/ivm.c
index 60fc3ed72830..90aabe1fd3b6 100644
--- a/arch/x86/hyperv/ivm.c
+++ b/arch/x86/hyperv/ivm.c
@@ -664,7 +664,7 @@ void __init hv_vtom_init(void)
 	x86_platform.guest.enc_status_change_finish = hv_vtom_set_host_visibility;
 
 	/* Set WB as the default cache mode. */
-	mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK);
+	guest_force_mtrr_state(NULL, 0, MTRR_TYPE_WRBACK);
 }
 
 #endif /* defined(CONFIG_AMD_MEM_ENCRYPT) || defined(CONFIG_INTEL_TDX_GUEST) */
diff --git a/arch/x86/include/asm/mtrr.h b/arch/x86/include/asm/mtrr.h
index 4218248083d9..c69e269937c5 100644
--- a/arch/x86/include/asm/mtrr.h
+++ b/arch/x86/include/asm/mtrr.h
@@ -58,8 +58,8 @@ struct mtrr_state_type {
  */
 # ifdef CONFIG_MTRR
 void mtrr_bp_init(void);
-void mtrr_overwrite_state(struct mtrr_var_range *var, unsigned int num_var,
-			  mtrr_type def_type);
+void guest_force_mtrr_state(struct mtrr_var_range *var, unsigned int num_var,
+			    mtrr_type def_type);
 extern u8 mtrr_type_lookup(u64 addr, u64 end, u8 *uniform);
 extern void mtrr_save_fixed_ranges(void *);
 extern void mtrr_save_state(void);
@@ -75,9 +75,9 @@ void mtrr_disable(void);
 void mtrr_enable(void);
 void mtrr_generic_set_state(void);
 #  else
-static inline void mtrr_overwrite_state(struct mtrr_var_range *var,
-					unsigned int num_var,
-					mtrr_type def_type)
+static inline void guest_force_mtrr_state(struct mtrr_var_range *var,
+					  unsigned int num_var,
+					  mtrr_type def_type)
 {
 }
 
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c
index 7b29ebda024f..2fdfda2b60e4 100644
--- a/arch/x86/kernel/cpu/mtrr/generic.c
+++ b/arch/x86/kernel/cpu/mtrr/generic.c
@@ -423,7 +423,7 @@ void __init mtrr_copy_map(void)
 }
 
 /**
- * mtrr_overwrite_state - set static MTRR state
+ * guest_force_mtrr_state - set static MTRR state for a guest
  *
  * Used to set MTRR state via different means (e.g. with data obtained from
  * a hypervisor).
@@ -436,8 +436,8 @@ void __init mtrr_copy_map(void)
  * @num_var: length of the @var array
  * @def_type: default caching type
  */
-void mtrr_overwrite_state(struct mtrr_var_range *var, unsigned int num_var,
-			  mtrr_type def_type)
+void guest_force_mtrr_state(struct mtrr_var_range *var, unsigned int num_var,
+			    mtrr_type def_type)
 {
 	unsigned int i;
 
diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.c b/arch/x86/kernel/cpu/mtrr/mtrr.c
index 989d368be04f..ecbda0341a8a 100644
--- a/arch/x86/kernel/cpu/mtrr/mtrr.c
+++ b/arch/x86/kernel/cpu/mtrr/mtrr.c
@@ -625,7 +625,7 @@ void mtrr_save_state(void)
 static int __init mtrr_init_finalize(void)
 {
 	/*
-	 * Map might exist if mtrr_overwrite_state() has been called or if
+	 * Map might exist if guest_force_mtrr_state() has been called or if
 	 * mtrr_enabled() returns true.
 	 */
 	mtrr_copy_map();
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
index 21e9e4845354..7a422a6c5983 100644
--- a/arch/x86/kernel/kvm.c
+++ b/arch/x86/kernel/kvm.c
@@ -983,7 +983,7 @@ static void __init kvm_init_platform(void)
 	x86_platform.apic_post_init = kvm_apic_init;
 
 	/* Set WB as the default cache mode for SEV-SNP and TDX */
-	mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK);
+	guest_force_mtrr_state(NULL, 0, MTRR_TYPE_WRBACK);
 }
 
 #if defined(CONFIG_AMD_MEM_ENCRYPT)
diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index d6818c6cafda..633469fab536 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -171,7 +171,7 @@ static void __init xen_set_mtrr_data(void)
 
 	/* Only overwrite MTRR state if any MTRR could be got from Xen. */
 	if (reg)
-		mtrr_overwrite_state(var, reg, MTRR_TYPE_UNCACHABLE);
+		guest_force_mtrr_state(var, reg, MTRR_TYPE_UNCACHABLE);
 #endif
 }
 
@@ -195,7 +195,7 @@ static void __init xen_pv_init_platform(void)
 	if (xen_initial_domain())
 		xen_set_mtrr_data();
 	else
-		mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK);
+		guest_force_mtrr_state(NULL, 0, MTRR_TYPE_WRBACK);
 
 	/* Adjust nr_cpu_ids before "enumeration" happens */
 	xen_smp_count_cpus();
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:53:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:53:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819962.1233452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t11el-0004RM-RN; Wed, 16 Oct 2024 10:53:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819962.1233452; Wed, 16 Oct 2024 10:53: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 1t11el-0004RF-Oc; Wed, 16 Oct 2024 10:53:31 +0000
Received: by outflank-mailman (input) for mailman id 819962;
 Wed, 16 Oct 2024 10:53: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 1t11ek-0004R3-0q; Wed, 16 Oct 2024 10:53: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 1t11ej-0000DP-NK; Wed, 16 Oct 2024 10:53: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 1t11ej-0005HA-DO; Wed, 16 Oct 2024 10:53:29 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t11ej-0000dl-Cw; Wed, 16 Oct 2024 10:53: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=5eL4c9vH/tf89mZb/6LgwvWtt6fu/ivLQLKltxBGs9g=; b=4Kk6qrZ+KNZoZY5dy0hS8+m5Ix
	vJDnLjuP7GidPUGJyXl27Rm19uX+v32XAGlBWh4EkMz4Qj1rYXSkGswX2GEq8JEWlU9wVi2tBfd4M
	vTSEUF0nS63JZX/ervduCigYn18oDDMguh2r6Plz6It39mHGfl+0RJiS3ddq+kMoREyY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188114-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188114: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=d44b82270b6b1589cc2850fde24a3686cb5ef779
X-Osstest-Versions-That:
    ovmf=a232e0cd2fe2bb882a5dd0cafe322a2899a44d51
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 10:53:29 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 d44b82270b6b1589cc2850fde24a3686cb5ef779
baseline version:
 ovmf                 a232e0cd2fe2bb882a5dd0cafe322a2899a44d51

Last test of basis   188107  2024-10-16 04:13:13 Z    0 days
Testing same since   188114  2024-10-16 08:44:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  kuqin12 <42554914+kuqin12@users.noreply.github.com>
  Raymond Diaz <raymonddiaz@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    


------------------------------------------------------------
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
   a232e0cd2f..d44b82270b  d44b82270b6b1589cc2850fde24a3686cb5ef779 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 10:54:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 10:54:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819970.1233462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t11g5-00050V-5a; Wed, 16 Oct 2024 10:54:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819970.1233462; Wed, 16 Oct 2024 10: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 1t11g5-00050O-2p; Wed, 16 Oct 2024 10:54:53 +0000
Received: by outflank-mailman (input) for mailman id 819970;
 Wed, 16 Oct 2024 10: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t11g3-00050E-8y
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 10:54:51 +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 10dc6951-8bad-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 12:54:50 +0200 (CEST)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-37d4c1b1455so4948345f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 03:54:50 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7faa4085sm4019946f8f.65.2024.10.16.03.54.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 03:54:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10dc6951-8bad-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729076089; x=1729680889; 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=riiaPbwnDFcvrZpdYtHnCaIJdtGEYv4yuHp5nwNTfOo=;
        b=X8FZcX7NJleT1vZSUBL79dWzTnmMltlqVuj6BoFKrKJ9dpOwSlubelhxkb85wNOxZ3
         8w8Mgl48U8ocIF1lgZu1IkC3/ncqCY0tE0qPGaTektz6jivijYCyo175XpUsgA+Axv6c
         +vdiFTAT1/s43man2YwO7WuCYIRj+y9USqboQpGmvPxeN6ps2/RU5XgkP3/LchR69Gan
         c460tylUXQDy2LLc4PfKVGxguiFDBCvnyRU5dMkkZqqsYUq2cVWN0M0vT5vQw1dG64oB
         zaCthiF2fzicFQBXQRF9nHv7XBLf1hLIIsTw0CPXO92jfJqbG8770xDo3ZNowgn+dZjh
         nxDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729076089; x=1729680889;
        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=riiaPbwnDFcvrZpdYtHnCaIJdtGEYv4yuHp5nwNTfOo=;
        b=HKW9rjqqnfZUz1pY0GgUs2NdePktjEprWF3oIXCqFOue495Np6NgxbUAQ093mhlO0u
         D/4ts75LZDl/UHchE2AeSzQz8ophHkm38EiByfp9hMgKxduyClpIE0yhOI7A6yX9Dk+i
         lB7c0/1qURUdZWkYxQ1+eVIfLQehH26Ljq32P1ekyGTw9hF+qu9kfzfgCglfHXfm/QBe
         pV9CgsEGyaF39YPK+rPzylS+qBGzXJJcSkQBGB3WStPMn1HAvVxTFlxnRGZ7l684H1fU
         GkF8nj27t0pilJ1ed9py64y10xqA1NoL+QLvf8/UQTguSJ3CTweuxhaIuSftGxrLXtAi
         F0nQ==
X-Forwarded-Encrypted: i=1; AJvYcCUloh8nviD/PeG3Pksau9vXyjz0Y9ydYe1w8/xlT3V79TO7UtDmCeUcJoe65LvonL6rVS44RoutwwQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzcj3yFQjk8Dwa3iXkPuWRHnCOuZO3VDDnvbjt2fypeV/kJ/Eoo
	Kn8vIFk27eye/GjPkG2BWbdTlpFhyChfyRgs5G/KBrBOs2f3F7IoxidrrbVC/Q==
X-Google-Smtp-Source: AGHT+IHsVk6bdq81/l66m8c9bgQsXPQzllXsEzZA4NwBqNJPkXpKtYFpVskaFfuVnycvpSEbRGtpZQ==
X-Received: by 2002:a5d:510d:0:b0:37c:f933:48a9 with SMTP id ffacd0b85a97d-37d55184f09mr11585725f8f.1.1729076089537;
        Wed, 16 Oct 2024 03:54:49 -0700 (PDT)
Message-ID: <0695d72d-7138-4d35-be5d-c0fb0589944b@suse.com>
Date: Wed, 16 Oct 2024 12:54:48 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86emul/test: drop Xeon Phi S/G prefetch special case
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <a2dae57f-d166-4c99-8edd-11784abdecab@suse.com>
 <D4X5VZZWZJII.271VYW2L8Y0PG@cloud.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: <D4X5VZZWZJII.271VYW2L8Y0PG@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 12:34, Alejandro Vallejo wrote:
> On Wed Oct 16, 2024 at 8:46 AM BST, Jan Beulich wrote:
>> --- a/tools/tests/x86_emulator/evex-disp8.c
>> +++ b/tools/tests/x86_emulator/evex-disp8.c
>> @@ -911,10 +911,8 @@ static void test_one(const struct test *
>>      n = test->scale == SC_vl ? vsz : esz;
>>      if ( !sg )
>>          n += vsz;
>> -    else if ( !strstr(test->mnemonic, "pf") )
>> -        n += esz;
>>      else
>> -        ++n;
>> +        n += esz;
> 
> Just making sure. This is leftover from 85191cf32180("x86: drop Xeon Phi
> support"), right? Dead code after the removal of the avx512pf group.

Yes.

> If so, that sounds good. But (not having looking at the general logic), how
> come we go from ++n to "n += esz". It's all quite cryptic.

It's the (prior) if() portion we're keeping, and the "else" we're dropping.
The if() checks for _no_ "pf" in the mnemonic. "Going from ++n to n+= esz"
is merely an effect of how the change is being expressed as diff.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 11:25:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 11:25:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819981.1233471 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t12A2-0001bk-C4; Wed, 16 Oct 2024 11:25:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819981.1233471; Wed, 16 Oct 2024 11:25: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 1t12A2-0001bd-9U; Wed, 16 Oct 2024 11:25:50 +0000
Received: by outflank-mailman (input) for mailman id 819981;
 Wed, 16 Oct 2024 11:25: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=eWiC=RM=bounce.vates.tech=bounce-md_30504962.670fa2b9.v1-617380f4ef9047b9a2ff0952e96cae54@srs-se1.protection.inumbo.net>)
 id 1t12A0-0001bX-T6
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 11:25:49 +0000
Received: from mail186-1.suw21.mandrillapp.com
 (mail186-1.suw21.mandrillapp.com [198.2.186.1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 634709a8-8bb1-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 13:25:47 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-1.suw21.mandrillapp.com (Mailchimp) with ESMTP id 4XT7tx48x3zBsThTc
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 11:25:45 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 617380f4ef9047b9a2ff0952e96cae54; Wed, 16 Oct 2024 11: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>
X-Inumbo-ID: 634709a8-8bb1-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729077945; x=1729338445;
	bh=xJdBvOy+EJclUvodEoCbHDm83MOH2e9hpSmOv6TJ0lM=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=01Xclioh1M8PVMW99432jMHypcISQv5d+WkV0/FoEg/wTBmAM43MzTs4V8soSHSvr
	 0NHohCdZ+AS7FObGnjiQ+eyuLO0VkYtTgQcjSfS5oqU3Mzm+5xlX9OCKdQNm4RRqLn
	 9Pe9gDoLb/GR0C7iLjz5UMEXFsGgjDViZOgOGKKZ+KsT5AQIZ0IHp6XhPdoLOdem4q
	 diasKgE6/62x8z01YXt/5pflBdv5+EiLcJCm12jqSRZHvrWMJ5OBCUrYAIO/uJ98JG
	 7REpWdL6BJjo9hg5ax7GDzyQEN6SltAs0ZiqW9Q1r3VCOY9f9aV9r68bn/TGgF13Y/
	 zu2skHgt50zYA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729077945; x=1729338445; i=anthony.perard@vates.tech;
	bh=xJdBvOy+EJclUvodEoCbHDm83MOH2e9hpSmOv6TJ0lM=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=f2u9GbUvE1+khvzJy5q8ZLMFWy5F445yj43QIgRoWoW4G1KhCoYXLMTTQgPNqXiqk
	 Vwjljc5Yh0jy6JNUpaEqTCKqIQDyVmAX/8QP9tPkcEsOe+moVM1F21H5KQNt+0bytM
	 QsszMeZKd2v8fjqyiC3DlZiQLWJQdkCHtfxBDKE6j+JZxAArpDCpGjjZWpkB8yCTdM
	 dy8DDvc5RTsFcgq4C9sNuR951o+6p17vSBDzsy/J38B200xySyBE+vxaqm7OiwLdA9
	 Yy5UXpVyXsjVA1WT5CuCn9NCKHYF97otfCE5BBiNzbZmIqIBlVZYs+ywSGvFX41K3s
	 HPfs3Bifdsvdg==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v4=202/6]=20x86/boot:=20create=20a=20C=20bundle=20for=2032=20bit=20boot=20code=20and=20use=20it?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729077944295
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Message-Id: <Zw+it8oVVTrS62wx@l14>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com> <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14> <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com> <Zw5zSURbpInM5oBY@l14> <CACHz=ZgN9qNygJWuWovpiU+MCGcJu9qaxaRT1VkkiHsYwbEN4A@mail.gmail.com>
In-Reply-To: <CACHz=ZgN9qNygJWuWovpiU+MCGcJu9qaxaRT1VkkiHsYwbEN4A@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.617380f4ef9047b9a2ff0952e96cae54?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241016:md
Date: Wed, 16 Oct 2024 11:25:45 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 16, 2024 at 09:33:32AM +0100, Frediano Ziglio wrote:
> On Tue, Oct 15, 2024 at 2:51=E2=80=AFPM Anthony PERARD <anthony.perard@va=
tes.tech> wrote:
> > On Mon, Oct 14, 2024 at 05:32:26PM +0100, Frediano Ziglio wrote:
> > > On Mon, Oct 14, 2024 at 4:31=E2=80=AFPM Anthony PERARD <anthony.perar=
d@vates.tech> wrote:
> > > > On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:

> > BTW, do we need the rules that generate the input of this rules
> > (built_in_32.tmp.o that is), or can this one takes all 32bit objects as
> > input?
> >
> 
> Better not to do it In some conditions it can generate slightly
> different results (like different object alignments) making the
> algorithm fail.

Ok. Thanks for the explanation.

> > > > > +# generate final object file combining and checking above binari=
es
> > > > > +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_=
in_32.final.bin
> > > >
> > > > So, "other" isn't part of "final", I don't really know what those t=
wo
> > > > things contains so naming wise I can't suggest anything useful.
> >
> > Instead of "other", is "control" (like in science experiment where you
> > have a control group), or "offseted" (which seems to be how this second
> > binary is constructed) would be better names for this *.bin? It seems
> > the script take both input and play the game of the 7 differences, to
> > find clues about the location of some symbols, right?.
> >
> 
> I don't know the game and I think people not familiar with it won't
> find new names more readable but less.

Sorry, the "game" as nothing to do with the name I've proposed. I was
just asking if the script take both *.bin and was looking for
differences.

(The game of 7 differences is simple: there's two similar pictures and
you just look for the 7 differences between them, that's it.)

> Not saying that current names are good, they just need to be located
> at different addresses with some "magic" in the middle.

Well to me "other" evoke a binary that contains functions that are not
in "final", but instead they both contain the sames functions with
slight variation of placement in the file (with added offset, gap), as I
understand. But if you don't like my proposal, so be it.

> > I can think of one example where $(if_changed,) is going to really help=
,
> > by looking at this command line:
> >     One does update the .c file to add a function that they like to
> >     export, run `make`, realize they forgot to update the makefile so
> >     update it, run `make`, it's still doesn't work...
> >     Maybe run `make clean; make`, or something else...
> >
> > So, could you use $(if_changed,) ?
> > Probably:
> > quiet_cmd_combine =3D GEN     $@
> > cmd_combine =3D $(PYTHON) ...
> > $(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.f=
inal.bin FORCE
> >     $(call if_changes,combine)
> > targets +=3D built_in_32.S
> >
> > GEN, for generate, or it could be PY instead, because python script can
> > be slow to compile which could explain why the build system output is
> > making a pause on this target (on slow machines that is). Or it could b=
e
> > COMBINE, or something else, but it's not really necessary to explain,
> > the target name is often enough to figure out what's happening, when
> > needed.
> >
> 
> It just looks more complicated to me.

I'm sorry if writing makefile is complicated. GNU make doesn't help with
writing build system that work well, especially when doing incremental
builds. So we need to use more complicated construction, especially for
a complex project like Xen.

Cheers,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 12:18:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 12:18:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.819997.1233487 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t12yS-0000c7-Cc; Wed, 16 Oct 2024 12:17:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 819997.1233487; Wed, 16 Oct 2024 12: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 1t12yS-0000c0-9n; Wed, 16 Oct 2024 12:17:56 +0000
Received: by outflank-mailman (input) for mailman id 819997;
 Wed, 16 Oct 2024 12:17: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=kaV7=RM=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t12yR-0000bs-5P
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 12:17:55 +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 aad51b74-8bb8-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 14:17:52 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a998a5ca499so942454466b.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 05:17:52 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a298443e8sm176620066b.156.2024.10.16.05.17.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 05:17:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aad51b74-8bb8-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729081072; x=1729685872; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=RyHvjcuE6v5NTlo8HH7py55aUKwv0dAcBjfoKY88kgQ=;
        b=TW5gf+ea1FLEViwOyCr7C/PxDwQ0MRwkJBEAJuEfJzVWUlIph5RC9zX8+RMaAI9LDp
         UNvzs591i92sXjOnYYZ+86jKuZXm5NCbTgStjilCSrmk/IdcM3ym182AqPH0bU3g+C56
         XjwEgqEpuPrT0PO60qpK8FAtHItNtyAQyyTtE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729081072; x=1729685872;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=RyHvjcuE6v5NTlo8HH7py55aUKwv0dAcBjfoKY88kgQ=;
        b=A6ijv0eil93pf4nYFFRLuo4ASGt2s132iyxxH4ySHSQgMaymXONqEhdHI0bjbHBE/9
         l+ljT73LQ7g+0TFXUaTnSEhwkfG1t3IB66Lx7ohcOEgwDvl/44Czzc85F6sOYQbTtfyp
         ShnbvHW0phrKm4elucp52F9YSVIw2OmDPOkBACme0JVUFMZTqHGfvB8uRUoRVgSxhAak
         sIP+h2REkpx3z3F1IBLZBMY+9gUg1zwGrkj28Y5h6u6O4VxfUCfPFeWcmc07tjMECu4C
         KjjNeKYz34r9U87DQMw7EoG6Ujknf8hCOnoL2E8tWdRTKkEkE3WJjNDA7Y+lsQhWys83
         rb8A==
X-Forwarded-Encrypted: i=1; AJvYcCVwlJzB8qc2z4lxolL7rxcsq+30fcVpgdlZBWz1M6GF1TgZundDuTp1dsPe93bY0K0Q9v3orryThBc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxP4nu8anAmluk6qoRv64WHynQe+3Kc6TpBiRCuXWDP/K7tIl3Y
	igyGdr18FO4f8BLQiXb7cLN1MnB6LPkqgCRnnW0Z5Tt+No1UOOK/6tsecj/qk/8=
X-Google-Smtp-Source: AGHT+IF7ExTwV5nKkff9upJbzzP4eumcMxHXZ+Hz2w0IIvZQvEkTBWgw3bKGq7yMx+CJn3y3lzYPQg==
X-Received: by 2002:a17:907:788:b0:a99:46dd:f397 with SMTP id a640c23a62f3a-a99e3e9c018mr1486845466b.64.1729081072254;
        Wed, 16 Oct 2024 05:17:52 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 16 Oct 2024 13:17:45 +0100
Message-Id: <D4X82ZHFVVB6.12QCXQVZ41W9Q@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] x86emul/test: drop Xeon Phi S/G prefetch special case
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <a2dae57f-d166-4c99-8edd-11784abdecab@suse.com>
 <D4X5VZZWZJII.271VYW2L8Y0PG@cloud.com>
 <0695d72d-7138-4d35-be5d-c0fb0589944b@suse.com>
In-Reply-To: <0695d72d-7138-4d35-be5d-c0fb0589944b@suse.com>

On Wed Oct 16, 2024 at 11:54 AM BST, Jan Beulich wrote:
> On 16.10.2024 12:34, Alejandro Vallejo wrote:
> > On Wed Oct 16, 2024 at 8:46 AM BST, Jan Beulich wrote:
> >> --- a/tools/tests/x86_emulator/evex-disp8.c
> >> +++ b/tools/tests/x86_emulator/evex-disp8.c
> >> @@ -911,10 +911,8 @@ static void test_one(const struct test *
> >>      n =3D test->scale =3D=3D SC_vl ? vsz : esz;
> >>      if ( !sg )
> >>          n +=3D vsz;
> >> -    else if ( !strstr(test->mnemonic, "pf") )
> >> -        n +=3D esz;
> >>      else
> >> -        ++n;
> >> +        n +=3D esz;
> >=20
> > Just making sure. This is leftover from 85191cf32180("x86: drop Xeon Ph=
i
> > support"), right? Dead code after the removal of the avx512pf group.
>
> Yes.
>
> > If so, that sounds good. But (not having looking at the general logic),=
 how
> > come we go from ++n to "n +=3D esz". It's all quite cryptic.
>
> It's the (prior) if() portion we're keeping, and the "else" we're droppin=
g.
> The if() checks for _no_ "pf" in the mnemonic. "Going from ++n to n+=3D e=
sz"
> is merely an effect of how the change is being expressed as diff.
>
> Jan

Bah, misremembered strstr() being used like strcmp() on match, but of cours=
e
that makes no sense with the substring being returned. Thanks for spelling =
it
out :)

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 12:22:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 12:22:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820004.1233497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t132n-0002A9-T8; Wed, 16 Oct 2024 12:22:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820004.1233497; Wed, 16 Oct 2024 12:22: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 1t132n-0002A2-QR; Wed, 16 Oct 2024 12:22:25 +0000
Received: by outflank-mailman (input) for mailman id 820004;
 Wed, 16 Oct 2024 12:22: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=kaV7=RM=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t132m-00029u-7i
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 12:22:24 +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 4b830c48-8bb9-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 14:22:22 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c973697b52so4735967a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 05:22:22 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d4d6672sm1670809a12.17.2024.10.16.05.22.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 05:22:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4b830c48-8bb9-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729081342; x=1729686142; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=u1w5IAYRBSY/ZaPn84pSvHXsXJIk+tzG7XvUISCCXVo=;
        b=Q0anOV4dPqnQApPQGnbTXN+qcY1QPJivj9XP94ioIoMpWwD2/HMZTuR7aA8JDt2Awa
         svHujha5JRNadmiwtldYJpNVtDe8Fri72IytYk/J28rfJsym310aN7RnaMKMVR3A7Y3M
         WCHMyaoQHTsuEB80EltOz9+oCkSzz/hylTtNg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729081342; x=1729686142;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=u1w5IAYRBSY/ZaPn84pSvHXsXJIk+tzG7XvUISCCXVo=;
        b=wLLuMRtGOXs6V2AOfpcOQtrabkO2FaZE2NNJsOLJahPIQ2KNo6hSHgdjwut+bRhwfr
         k/o57j0/JU7/uXfWNSB7N29mWtUNn2ZRsvfv12WMQpSXOKDaRq4EmkjarvfPgMwBFxrf
         FEaMZDc7wWk0ZxaSqPJsiaxbah0LuapFumLHUVrAxG9Z9eRu9z+UVtCug5GnA+yRfNv/
         rA2NFr4UvQNmwrXI4Ak+pHqxwn1XQzYv5iMw9cr5Pht2u7hCtEAVd9/PvHNLF8DnxHNz
         Dw0tAOmg/jHFgLk/0rW8hhjuupw7WAQd5HNPhPrpDqadnxn+B/tThfSr7LaBaUXIORpe
         0h/A==
X-Forwarded-Encrypted: i=1; AJvYcCX0ODlHPtYkYbyf27bQKovry4E/S5OcaoiPQM7xzH9tWwSV9X3wonE9c6R21lk0LKimT3pvOnV/Zq4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwEeS03jgvr9ZvkTxIOWkbzMs/97hDZJaJWvUsGC3IQukRqjMZR
	YTTFqB1lnZq37nrjN+NnZ8kOGIgIQ3JDyuO8L9HdUTW/DjG5xIhEMrLR8V6r4wU=
X-Google-Smtp-Source: AGHT+IFrV2/t86ARram2Fwswr8T9Glh1b1iwODIQThDpJspxtomgzOB+YccuoVBcfC+Bq9tIvUbwzw==
X-Received: by 2002:a05:6402:2750:b0:5c9:7d87:eb2d with SMTP id 4fb4d7f45d1cf-5c97d87efccmr8542728a12.33.1729081341795;
        Wed, 16 Oct 2024 05:22:21 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 16 Oct 2024 13:22:14 +0100
Message-Id: <D4X86F05Q1PD.FNSXTCN2F8KC@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] x86emul/test: correct loop body indentation in
 evex-disp8.c:test_one()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <ded15010-299a-4273-9414-106579677a5f@suse.com>
 <D4X5APOZBQ8R.3IKLCYY15066F@cloud.com>
 <86229731-c999-4c02-a561-e8fc0bb82fc5@suse.com>
In-Reply-To: <86229731-c999-4c02-a561-e8fc0bb82fc5@suse.com>

On Wed Oct 16, 2024 at 11:15 AM BST, Jan Beulich wrote:
> On 16.10.2024 12:06, Alejandro Vallejo wrote:
> > On Wed Oct 16, 2024 at 8:45 AM BST, Jan Beulich wrote:
> >> For some reason I entirely consistently screwed these up.
> >>
> >> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >=20
> >   Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>
> Thanks.
>
> > We should really give another push to the clang-format effort. This who=
le class
> > of mistakes would be a thing of the past.
>
> For issues like the one here it would depend on whether that would also b=
e
> applied to (parts of) tool stack code. The plans, iirc, were mainly to co=
ver
> the xen/ subtree.
>
> Jan

True, but AIUI that was merely an act of scope reduction for the sake of
getting something merged in a finite time frame. In an ideal world the whol=
e
codebase would be covered, and I think this was a shared sentiment among th=
ose
in favour.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 12:42:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 12:42:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820023.1233516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t13Ly-0005A5-IP; Wed, 16 Oct 2024 12:42:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820023.1233516; Wed, 16 Oct 2024 12: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 1t13Ly-00059y-FD; Wed, 16 Oct 2024 12:42:14 +0000
Received: by outflank-mailman (input) for mailman id 820023;
 Wed, 16 Oct 2024 12:42: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=1se3=RM=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t13Lx-00059s-G9
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 12:42:13 +0000
Received: from fout-a1-smtp.messagingengine.com
 (fout-a1-smtp.messagingengine.com [103.168.172.144])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0f91172b-8bbc-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 14:42:11 +0200 (CEST)
Received: from phl-compute-05.internal (phl-compute-05.phl.internal
 [10.202.2.45])
 by mailfout.phl.internal (Postfix) with ESMTP id A4F03138022B;
 Wed, 16 Oct 2024 08:42:09 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-05.internal (MEProxy); Wed, 16 Oct 2024 08:42:09 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 16 Oct 2024 08:42:07 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0f91172b-8bbc-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	:content-type:content-type:date:date:from:from:in-reply-to
	:message-id:mime-version:reply-to:subject:subject:to:to; s=fm2;
	 t=1729082529; x=1729168929; bh=28ccFPUf7kgvqlDFaIKcVoBWTL1BQzci
	kKrseBZ65Qk=; b=hABnNig9tb8Fd9vWIj+AATbNIXftOPyHuiuTnSj50PQ8bsJL
	p+QPC2559ManIFrQBytksQOt+sIjukaOU8ZrLrEdW8CLh1dR78c85rM09mDgI33p
	VQsx4VAFcktU48sQxBUc/eYJ+Q1O+73lE/32XJIyZnXLDLwwJes+CYQm1+iVlL77
	3tvjIUOb3MpuI9SwMVnOfRcKc8HMhhWGX3N3J+RDSeKqbRxEHjvgIfiY/uIwAmtj
	l2hlRMGr4DU2pQJ5xOj6LRwZh00Yt5+YA7WvC+Ew6/646xC+axRw4hbdC4JvTaVx
	zcbA4+vRinGSC5AQaPGV4JEZB2k76PXBatL3iQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=fm2; t=1729082529; x=1729168929; bh=28ccFPUf7kgvq
	lDFaIKcVoBWTL1BQzcikKrseBZ65Qk=; b=WoJWguETwQZSfRU/ukhadFq4AM0Qb
	n8VyeumkYbIYuF4a4IuTQNbJwZvjhK531bcYBvYAYkXDmTvaYFa9nA6TBjcisuNg
	7nL3s1LvcQJi+9MIR0mHfbRdWvjU9WiCQiJ14tDbdBknVjfXp2m2mgNDnmoGChet
	1RpMOKIDsBLkPubCSmTVuO6nAchvNX2eWvKV6iDszldjcPFDrVhz6Weeg4DvcvZt
	6DZaIJs/RCzWSMh1FM7thA1kvpPqDWQUBY2MOHNbP/ADgVGaK/Kj+QWe6Nuuk/2I
	XExrZrmWe+we8bcxPE6UxkHZ+trmbVNBkCqY55IICA6x7UfyvSHNF/F0Q==
X-ME-Sender: <xms:obQPZ7nV1Qghcifu4zQBAapynQtxGDhtwAxX-fr7TzhnigpASKdr8A>
    <xme:obQPZ-1Rkp31asNZQlIOGwbppm3M3vq33sXIu-oChiDx8SsqljDW94hSMRVdQ14-B
    XUeOzZb6FwUfQ>
X-ME-Received: <xmr:obQPZxooxJBRnQfqQOme1wPSth3yh_NdOTSVYzaz7uFjfuMThY3FGdrbq5CMi2Yf__HyJsRDrC9TskcQEZcONGP126AA9L5tRr1Be2mNsbl9sDHelFA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdegledgheeiucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofggtgfgsehtkeertdertdejnecu
    hfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrg
    hrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffr
    rghtthgvrhhnpeelkefhudelteelleelteetveeffeetffekteetjeehlefggeekleeghe
    fhtdehvdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhm
    pehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsg
    gprhgtphhtthhopeeipdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeigvghnqdgu
    vghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehmrg
    hrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhrtghpthht
    oheprghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhope
    hjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtohepjhhulhhivghnseigvghn
    rdhorhhgpdhrtghpthhtohepshhsthgrsggvlhhlihhniheskhgvrhhnvghlrdhorhhg
X-ME-Proxy: <xmx:obQPZznbZ6gt-5rY3n1ner0egjIP7Xq_omw-YuHvtXJFVueh4StHag>
    <xmx:obQPZ51R_cXBL6Z8gV-JlSIfrNfWFFBxxXkZ46aYqy7KuMwQGP4-Qw>
    <xmx:obQPZytq0cdQF42tq48JOo8NCTnbsf2XXQTAnWN33Pakf9xmbn4bJQ>
    <xmx:obQPZ9VnztUEJvweezeNNqr9Tx9az0iY6XWIUxl5Z_vnCpHmaIL0lA>
    <xmx:obQPZx-3DgRe7AfI9dIxorebqZdQgPxVhpWW-JpEfvpScNg-3Tzg5vNU>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] docs: update documentation of reboot param
Date: Wed, 16 Oct 2024 14:41:53 +0200
Message-ID: <20241016124202.801139-1-marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Reflect changed default mode, and fix formatting of `efi` value.

Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 docs/misc/xen-command-line.pandoc | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 5ce63044ade8..0e36608f13e6 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -2153,14 +2153,13 @@ Specify the host reboot method.
 
 `kbd` instructs Xen to reboot the host via the keyboard controller.
 
-`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT.
+`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT (this is default mode if available).
 
 `pci` instructs Xen to reboot the host using PCI reset register (port CF9).
 
 `Power` instructs Xen to power-cycle the host using PCI reset register (port CF9).
 
-'efi' instructs Xen to reboot using the EFI reboot call (in EFI mode by
- default it will use that method first).
+`efi` instructs Xen to reboot using the EFI reboot call.
 
 `xen` instructs Xen to reboot using Xen's SCHEDOP hypercall (this is the default
 when running nested Xen)
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 13:06:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 13:06:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820033.1233526 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t13jJ-00088J-BK; Wed, 16 Oct 2024 13:06:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820033.1233526; Wed, 16 Oct 2024 13:06: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 1t13jJ-00088C-8V; Wed, 16 Oct 2024 13:06:21 +0000
Received: by outflank-mailman (input) for mailman id 820033;
 Wed, 16 Oct 2024 13:06: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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t13jI-000886-0n
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 13:06:20 +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 6e35773c-8bbf-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 15:06:17 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-539ee1acb86so4437274e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 06:06:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fc405a6sm4260024f8f.102.2024.10.16.06.06.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 06:06:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6e35773c-8bbf-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729083977; x=1729688777; 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=FzXlSearQU0mJeVz7+D9xc5bKj23728l/c1BZp58Xrg=;
        b=euxU379g2t3DSKP4GIQRUy++8Pz3TWwJfSSwIql0dijLptiMmUi+Q0+F9VEYk3vyCI
         IPVH4w61L7FPztra1zBYN9ibb4A/M5d46tarVdXuANwaS6suIkKDmDF5tFGrHjKPnof+
         ZnFXmpLHWY0+ZmNI7ZZmChEMCprjXpP+QUoYw77LPYwoZTNTnaqXiYloFB83FCxrp/vg
         L06b6CwJ0O9XB2W9E6QRMHriMzNtC3BSBrxWr+uwDL9xJHvB4gpmX50syMbayDax7Ifz
         7euhB9kHPFA2n9PI5RxnEOdHoG48FFZ8mzDvRNVaWYtL9UDCD0qDzG1G0RD+oZeTTyHB
         J5wg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729083977; x=1729688777;
        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=FzXlSearQU0mJeVz7+D9xc5bKj23728l/c1BZp58Xrg=;
        b=C9FMnKp2EbDc6XdcDchbluX4mApoNaC2yJbO6Ni2tCCNhDXMgtCawXzMNsO4qQ1Gzg
         79q2qEE21MrHP1cmFhelZ5e0uYydTZ/Cgrcf30XMKXfvrV7zDbFzh3DRUMPUteIfdSwc
         VgPx6OUHDdpj0Aqfcx94ks3YQrYYF1BNKTtoyhloRmB3jklfTYhrOlWw3TOIKM5wAfAR
         Myuj8BhmA/2iDGKpJIkvSMCytpYp4VfP699zGxrGeVvypMVLwlyzUMua8xj7c+nP26YI
         C44hwNnRfo8VJej8Df80UcQigvVXfZdZwXcb0YOScTnNFDkGt8KyApiazQs8ZSGJzH5w
         yzNw==
X-Forwarded-Encrypted: i=1; AJvYcCUliJhFNijphLqoCf5cZRYmoMOtKAiWN+xVTVctSt7htQMHGjXQX9kpjYZ+NNn1BBZqNnl6oYzL1MU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz2G1V1FSLsoYyRwWhNyyWGnHGRgtEACFZGV90HG9c3Y6308mTH
	uJ+YvX7UtBhHPgTbWNslfCsTnBDIX0lyYs/DJVVEqtKlAc+nlRtZaqP5AaXIKA==
X-Google-Smtp-Source: AGHT+IHf+aKbdTBMaLAm2fwxTKiIlg39w/OZCaeTvpvsSqheAuD7QRhsvFBxVveYtEb1d4hxLTbj5Q==
X-Received: by 2002:a05:6512:3ca8:b0:536:741a:6bad with SMTP id 2adb3069b0e04-539e54d816amr8309236e87.12.1729083977220;
        Wed, 16 Oct 2024 06:06:17 -0700 (PDT)
Message-ID: <5ab381fb-f6cc-4d0d-91db-79e11fc884ad@suse.com>
Date: Wed, 16 Oct 2024 15:06:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: update documentation of reboot param
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>
References: <20241016124202.801139-1-marmarek@invisiblethingslab.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: <20241016124202.801139-1-marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.10.2024 14:41, Marek Marczykowski-Górecki wrote:
> Reflect changed default mode, and fix formatting of `efi` value.
> 
> Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

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

> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -2153,14 +2153,13 @@ Specify the host reboot method.
>  
>  `kbd` instructs Xen to reboot the host via the keyboard controller.
>  
> -`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT.
> +`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT (this is default mode if available).

... this line suitably wrapped (can likely be done while committing).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 13:08:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 13:08:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820038.1233537 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t13lk-0000Qb-OR; Wed, 16 Oct 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 820038.1233537; Wed, 16 Oct 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 1t13lk-0000QS-KR; Wed, 16 Oct 2024 13:08:52 +0000
Received: by outflank-mailman (input) for mailman id 820038;
 Wed, 16 Oct 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=sXg9=RM=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t13lj-0000QM-Lg
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 13:08:51 +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 c8cfe557-8bbf-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 15:08:49 +0200 (CEST)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-431195c3538so47204605e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 06:08:49 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fa7a04asm4290072f8f.8.2024.10.16.06.08.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 06:08:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c8cfe557-8bbf-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729084129; x=1729688929; 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=YSZjA06rawFFyjY0W3eN3VrL0FdMjMV45ul5kD2Df8s=;
        b=f5P6tEVNZMGvTIIlBh+r9S8hIpi34K4dAI4VhYcVr/qERjtEV3o3/Zzgkzg4GN3kgX
         UUjQzmC+SySAfEP30exTnteadSJHX4ehVGwZpGib/bG4EjjiCbp6BKt9CX9wtJCw6ygr
         EYvhbxwxun2rFeILKlForcvpDgVzYOMuvdFjZFNlrL/sYT8RJ9SfFdEYQ/rTqLoVf4E4
         BQ19jQolAgweBXM2NAZ4y5vDdkk/kfEwpfjQoH2hloRrVDfuB8BJgB6ISthjjyL91QMQ
         RMd0oKHTorhXIDxzbGIAqCt6bR+ZpRHuOhboRHfastfU3X/mnolAAnxgw0mZMSVSOF2V
         6VMg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729084129; x=1729688929;
        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=YSZjA06rawFFyjY0W3eN3VrL0FdMjMV45ul5kD2Df8s=;
        b=texDz/DkBFUg5ewa73WbR+kPhxJ8MJJXjIUvbbCbATAJldr4tBGh04LYvsdq7cnXzJ
         PWe4gDzULrRJrzDH+UuEdZkxxu4XeNB1eJNu4lYMYCywVF0e5tFMX3rQDIdZmmnigBv3
         q0POBHn505ZUN/+C4SK9q334pyGhU2BSQZCVr7ZWHdBgVbfoA8ZQSJJ+1d5QG/ZGvnko
         l39rI34VrFkjEPmIWYuFSB2QrlxrQMR3nSnRN8Qf55uTGeLsv4sySaoWoky6MzbgKe7p
         Eos0iaLLW7qSFp2AXtpEQi1x69DfmNzTTdWuc7IWz/HG8VlWCYTkw68sdqgjujAfGZPC
         4V6A==
X-Forwarded-Encrypted: i=1; AJvYcCV7TO+0T/vPI0Dh9rTUf9GMDykVqaXoKoiLoQWsWKoosNmHQRCg1rN4Vy/OMIyxBQOopjWSJpTwk2M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzDiGYFYRm738RtMQVfAynSIYn5VKTmqhgL1gfgGgQPK48uWKFT
	GdG9hU8lSP9naLfXqrOXWNLllSNAACxCf6qsKwCKxgZTuYocYJuyexHsffLput7g45B2sg5HFaU
	=
X-Google-Smtp-Source: AGHT+IHFS1GwwF/9VO3Hyi0Eqqq6LdeqtTD0Xsqpt0cXDt4KMnbIxoRTTXW9Em9EU/2/j2+gpf8K3Q==
X-Received: by 2002:a05:600c:314f:b0:431:52c4:1069 with SMTP id 5b1f17b1804b1-43152c412eamr15087595e9.8.1729084129042;
        Wed, 16 Oct 2024 06:08:49 -0700 (PDT)
Message-ID: <7d289c5b-ea3d-4d0d-913d-d8e0b1bc24a1@suse.com>
Date: Wed, 16 Oct 2024 15:08:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] docs: update documentation of reboot param
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>
References: <20241016124202.801139-1-marmarek@invisiblethingslab.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: <20241016124202.801139-1-marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.10.2024 14:41, Marek Marczykowski-Górecki wrote:
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -2153,14 +2153,13 @@ Specify the host reboot method.
>  
>  `kbd` instructs Xen to reboot the host via the keyboard controller.
>  
> -`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT.
> +`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT (this is default mode if available).
>  
>  `pci` instructs Xen to reboot the host using PCI reset register (port CF9).
>  
>  `Power` instructs Xen to power-cycle the host using PCI reset register (port CF9).
>  
> -'efi' instructs Xen to reboot using the EFI reboot call (in EFI mode by
> - default it will use that method first).
> +`efi` instructs Xen to reboot using the EFI reboot call.
>  
>  `xen` instructs Xen to reboot using Xen's SCHEDOP hypercall (this is the default
>  when running nested Xen)

Hmm, out of context there is the pretty bogus

> Default: `0`

I wonder if we shouldn't adjust that as well while at it, to perhaps say
"system dependent" or some such.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 13:18:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 13:18:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820049.1233546 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t13uy-0002Ff-Lx; Wed, 16 Oct 2024 13:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820049.1233546; Wed, 16 Oct 2024 13: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 1t13uy-0002FY-JP; Wed, 16 Oct 2024 13:18:24 +0000
Received: by outflank-mailman (input) for mailman id 820049;
 Wed, 16 Oct 2024 13:18: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=1se3=RM=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t13uw-0002FR-LE
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 13:18:22 +0000
Received: from fhigh-a6-smtp.messagingengine.com
 (fhigh-a6-smtp.messagingengine.com [103.168.172.157])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1c360cf6-8bc1-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 15:18:19 +0200 (CEST)
Received: from phl-compute-01.internal (phl-compute-01.phl.internal
 [10.202.2.41])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 84A16114013E;
 Wed, 16 Oct 2024 09:18:18 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-01.internal (MEProxy); Wed, 16 Oct 2024 09:18:18 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 16 Oct 2024 09:18:16 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c360cf6-8bc1-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-transfer-encoding
	:content-type:content-type:date:date:from:from:in-reply-to
	:message-id:mime-version:reply-to:subject:subject:to:to; s=fm2;
	 t=1729084698; x=1729171098; bh=s2ageYzmRMVOBzBDyKeAk2S28uEKx0t2
	1pPmPlvo4Fk=; b=i57UdOrIw9euhqy4IO23j9TiyvdrvMGNFoaJOhYBF7PmMQbZ
	notYNnzSBjTU4jm8LZo5njGwWWurqfR8nWLC0ykunoWOuR8En81GH5G9y+Zltrp2
	ThpwDjXQQdFv2lO4B4ErU4tKqdhLKltvcbyTntrCmPhiymZ8ILh5M/qWEXhgb2rF
	5nBBlRey4bS841X6LIoQIAHdG431B5aer26PftYAhur6wvcXiicaeGXbP9yaDtz5
	Lqm9nz3TOLtkzhirvTbAWkXqhxZYFvu9xXZkM3yo/2Zms3/c134cZm63PNVqootc
	nIoWjt+yDmsWfmhV756HBE45bcrDmb3Bn9O+kA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-transfer-encoding
	: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=fm2; t=1729084698; x=1729171098; bh=s2ageYzmRMVOB
	zBDyKeAk2S28uEKx0t21pPmPlvo4Fk=; b=NlPAgdJhEsEV3l1gVdmng0fWpSSOV
	P3FEWudD2TKuzGoO2CtLhQa9ElCEPx34uPoELYSNEGuONBVT7bU/3mQaHU2I94y7
	xhvEy21QrKoSLRt45LCYtWILq/y7puM+R4VUdj3wjZ1VKdves/OjclnIBOpJHhWy
	k355G+9UN7HPTiLkwI/BHJcZfoHpRrpbFWbpwU+iiCiBJWDxdTsDzwgRzP5cAFwQ
	vyEV0EAeb/xFTp5SfOhTC2wHeeb0Ifsixs3jkGbOx1zcC1mTFq4c62hLecKoIrH3
	ASItU/UQmQjbHOnVfnqfNWYx6Qxjpo0p2J/6IRI+NgL+zOHPPakKZ2kjw==
X-ME-Sender: <xms:Gr0PZ1ifKdyzQ4PcfGFMOlClV6EV_lxrMQlPkeA4cHGf6-CCUXrrKg>
    <xme:Gr0PZ6AE-J_ww230TvNnL2aMojH5VhkCFuTbVwJzaheEleFAYEKy2ATH7VZCxgIry
    roz9qwJ0-NK0Q>
X-ME-Received: <xmr:Gr0PZ1EQouvHJ7sUL6U61hG-HN4v4Isf503RtnQbzoqoJ3cYDleJHwr6Jc8FSdq6xK9-CSMfSN2Z3fI3B5Ga1IfNfVwoy0ujjH843HO4TA5Pt5N7Gdg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdegledgieefucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhephffvvefufffkofggtgfgsehtkeertdertdejnecu
    hfhrohhmpeforghrvghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrg
    hrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffr
    rghtthgvrhhnpeelkefhudelteelleelteetveeffeetffekteetjeehlefggeekleeghe
    fhtdehvdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhm
    pehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhnsg
    gprhgtphhtthhopeeipdhmohguvgepshhmthhpohhuthdprhgtphhtthhopeigvghnqdgu
    vghvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehmrg
    hrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmpdhrtghpthht
    oheprghnughrvgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhope
    hjsggvuhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtohepjhhulhhivghnseigvghn
    rdhorhhgpdhrtghpthhtohepshhsthgrsggvlhhlihhniheskhgvrhhnvghlrdhorhhg
X-ME-Proxy: <xmx:Gr0PZ6QkOXzccpQL012FtF3IvJvtb61PgumIMAK3EgBJZGm3XpIjEQ>
    <xmx:Gr0PZyy2s3ZY2EBG3mN4nUU9nCeLDWoqJdgf932Ky7PlZf82DlvFRQ>
    <xmx:Gr0PZw61ppmtm7FoCIKn3J-vias5r5KT5oRbGmYi2H28G_LJA7KzPg>
    <xmx:Gr0PZ3w8K7LW4FwiWFG2RHuYEfGW8G8gvC9tX4D_t-aeiPKxgDJKzQ>
    <xmx:Gr0PZ5q0LBJLnIiUDvFusdTRX9ZGIDyB28JXYkW1R412nfYTpuZiOt1F>
Feedback-ID: i1568416f:Fastmail
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2] docs: update documentation of reboot param
Date: Wed, 16 Oct 2024 15:17:58 +0200
Message-ID: <20241016131813.801242-1-marmarek@invisiblethingslab.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Reflect changed default mode, and fix formatting of `efi` value.

Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
Changes in v2:
- wrap
- update Default: line too
---
 docs/misc/xen-command-line.pandoc | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 5ce63044ade8..293dbc1a957b 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -2139,7 +2139,7 @@ callbacks are safe to be executed. Expressed in milliseconds; maximum is
 ### reboot (x86)
 > `= t[riple] | k[bd] | a[cpi] | p[ci] | P[ower] | e[fi] | n[o] [, [w]arm | [c]old]`
 
-> Default: `0`
+> Default: system dependent
 
 Specify the host reboot method.
 
@@ -2153,14 +2153,14 @@ Specify the host reboot method.
 
 `kbd` instructs Xen to reboot the host via the keyboard controller.
 
-`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT.
+`acpi` instructs Xen to reboot the host using RESET_REG in the ACPI FADT (this
+is default mode if available).
 
 `pci` instructs Xen to reboot the host using PCI reset register (port CF9).
 
 `Power` instructs Xen to power-cycle the host using PCI reset register (port CF9).
 
-'efi' instructs Xen to reboot using the EFI reboot call (in EFI mode by
- default it will use that method first).
+`efi` instructs Xen to reboot using the EFI reboot call.
 
 `xen` instructs Xen to reboot using Xen's SCHEDOP hypercall (this is the default
 when running nested Xen)
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 13:30:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 13:30:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820060.1233558 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t146N-0004zX-Oo; Wed, 16 Oct 2024 13:30:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820060.1233558; Wed, 16 Oct 2024 13: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 1t146N-0004zQ-KY; Wed, 16 Oct 2024 13:30:11 +0000
Received: by outflank-mailman (input) for mailman id 820060;
 Wed, 16 Oct 2024 13:30: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=uUxT=RM=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t146M-0004zK-H2
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 13:30:10 +0000
Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com
 [2a00:1450:4864:20::242])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c30d430e-8bc2-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 15:30:08 +0200 (CEST)
Received: by mail-lj1-x242.google.com with SMTP id
 38308e7fff4ca-2fb599aac99so27467041fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 06:30:08 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d4f9519sm1717637a12.30.2024.10.16.06.30.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 06:30:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c30d430e-8bc2-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729085408; x=1729690208; 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=Clhcj4XFM6+MzdJRguyszE8sxxdJKjoGSaU8XHco5Xc=;
        b=fRd6d37K4/xPxXtSBAxcY00FypS8Elxp7h6fbSWHwWNFkK+Vpbiu6C/X7wQP4ruXn+
         ieEcrCSr92OS3EpBTr+4Lp1BR/bgXC4ou7bQZsjyws2JGa0I8y+wmrpozMu6dX5EICkZ
         7VbNl85cf97l0BWklE0dDxmUqcrlJMRXPIo38=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729085408; x=1729690208;
        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=Clhcj4XFM6+MzdJRguyszE8sxxdJKjoGSaU8XHco5Xc=;
        b=RrMM0ShwtPXFXCeq4dElIsFm9e2+hCerYQS+nIXvXLGJhNHCspCMClhQ0VsVyx3aWt
         qbTEavA/rw5m2VDq9crtwmJTAu+LuoU6JLKEgCI6V2DoHujmfp82iCbIHCXk5D4rQWPZ
         cfpfeh5mNyxCkH+Ru2ecKnfMD2ZqeB48westkUL8T37Gmb1oMlKgusOzFoxWSRqO1dFc
         ER+Cs6pNEtPPqPWUmNuAkndwqj6jfHd04PiGQ0ql+GwnJq2liQhcoN9/LpZkSPrGNOq7
         xiFcGTQY5+xEVCFBOUKqCHUk3Wu7+wpyS5tVrmBSB65L4MgQoC+qF5UqeG/x26caIgt4
         kT8w==
X-Forwarded-Encrypted: i=1; AJvYcCVehNTR6PSqFxIW+pZOcmu8EMETZmFWTHGzuo3r7YAWzsUgda2zXbArRJPMX63UpSJ8L8IYfoJ3So8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxyjWVFfcGwgnsHhXjn8ftJ3g5moxWGvWk8NSjE7gFdomfaqtc9
	WRDeUw6xjXGa30Mrw44BjUDv7+O9E7vecsTLN0DxXbszKODhNJKJKmfxcbitcUU=
X-Google-Smtp-Source: AGHT+IE4undybD7imzbJD2lVR7F+H5hqDTfOtmGDovUv7ZkFBn8kUwculiPqUcTFzweU2pGy6amrZA==
X-Received: by 2002:a05:651c:1545:b0:2f7:543a:3b1a with SMTP id 38308e7fff4ca-2fb63f52b2amr17653211fa.7.1729085407702;
        Wed, 16 Oct 2024 06:30:07 -0700 (PDT)
Message-ID: <821ac8cc-a0ac-412b-8069-73c52541b70b@citrix.com>
Date: Wed, 16 Oct 2024 14:30:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: lib32 followup (visibility issue and/or toolchain bug?)
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hello,

Preempting some future work I'm expecting to arrive, I had a go at using
__builtin_*() in obj32.

This is formed of 2 patches on top of this series:
https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=shortlog;h=refs/heads/xen-lib32

Patch 1 introduces lib32 beside obj32, with strlen() being the first
broken-out function, and patch 2 swaps to __builtin_strlen().

Both compile, but the difference that patch 2 introduces was unexpected.

With just lib32, and taking strsubcmp() as an example, we get:

00000000 <strsubcmp>:
   0:        83 ec 0c                 sub    $0xc,%esp
   3:        89 5c 24 04              mov    %ebx,0x4(%esp)
   7:        89 74 24 08              mov    %esi,0x8(%esp)
   b:        89 c6                    mov    %eax,%esi
   d:        89 d3                    mov    %edx,%ebx
   f:        89 d0                    mov    %edx,%eax
  11:    /-- e8 fc ff ff ff           call   12 <strsubcmp+0x12>
            12: R_386_PC32    strlen
  16:        89 c1                    mov    %eax,%ecx
  18:        89 da                    mov    %ebx,%edx
  1a:        89 f0                    mov    %esi,%eax
  1c:    /-- e8 fc ff ff ff           call   1d <strsubcmp+0x1d>
            1d: R_386_PC32    .text.strncmp
  21:        8b 5c 24 04              mov    0x4(%esp),%ebx
  25:        8b 74 24 08              mov    0x8(%esp),%esi
  29:        83 c4 0c                 add    $0xc,%esp
  2c:        c3                       ret

which all seems fine.  We get a plain PC32 relocation to strlen (which
is now in the separate library).

However, with patch 2 in place (simply swapping the plain extern for
__builtin_strlen(), we now get:

00000000 <strsubcmp>:
   0:        83 ec 0c                 sub    $0xc,%esp
   3:        89 1c 24                 mov    %ebx,(%esp)
   6:        89 74 24 04              mov    %esi,0x4(%esp)
   a:        89 7c 24 08              mov    %edi,0x8(%esp)
   e:    /-- e8 fc ff ff ff           call   f <strsubcmp+0xf>
            f: R_386_PC32    __x86.get_pc_thunk.bx
  13:        81 c3 02 00 00 00        add    $0x2,%ebx
            15: R_386_GOTPC    _GLOBAL_OFFSET_TABLE_
  19:        89 c7                    mov    %eax,%edi
  1b:        89 d6                    mov    %edx,%esi
  1d:        89 d0                    mov    %edx,%eax
  1f:    /-- e8 fc ff ff ff           call   20 <strsubcmp+0x20>
            20: R_386_PLT32    strlen
  24:        89 c1                    mov    %eax,%ecx
  26:        89 f2                    mov    %esi,%edx
  28:        89 f8                    mov    %edi,%eax
  2a:    /-- e8 fc ff ff ff           call   2b <strsubcmp+0x2b>
            2b: R_386_PC32    .text.strncmp
  2f:        8b 1c 24                 mov    (%esp),%ebx
  32:        8b 74 24 04              mov    0x4(%esp),%esi
  36:        8b 7c 24 08              mov    0x8(%esp),%edi
  3a:        83 c4 0c                 add    $0xc,%esp
  3d:        c3                       ret


The builtin hasn't managed to optimise away the call to strlen (that's
fine).  But, we've ended up spilling %ebx to the stack, calculating the
location of the GOT and not using it.

So, as it stands, trying to use __builtin_strlen() results in worse code
generation.  One thing I noticed was that we're not passing
-fvisibility=hidden into CFLAGS_x86_32, but fixing that doesn't help
either.  We do have the pragma from compiler.h, so I'm out of visibility
ideas.

Anything else I've missed?

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 14:47:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 14:47:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820079.1233572 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t15Iu-0005qq-U2; Wed, 16 Oct 2024 14:47:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820079.1233572; Wed, 16 Oct 2024 14:47: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 1t15Iu-0005qj-Qs; Wed, 16 Oct 2024 14:47:12 +0000
Received: by outflank-mailman (input) for mailman id 820079;
 Wed, 16 Oct 2024 14:47:12 +0000
Received: from [94.247.172.50] (helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=anWy=RM=arm.com=ryan.roberts@srs-se1.protection.inumbo.net>)
 id 1t15Iu-0005q7-7Z
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 14:47:12 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 7eb19bd3-8bcd-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 16:46:58 +0200 (CEST)
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 8CE951007;
 Wed, 16 Oct 2024 07:47:27 -0700 (PDT)
Received: from [10.1.28.177] (XHFQ2J9959.cambridge.arm.com [10.1.28.177])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 47B933F71E;
 Wed, 16 Oct 2024 07:46:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7eb19bd3-8bcd-11ef-99a3-01e77a169b0f
Message-ID: <829b5662-13c0-4728-894c-b2d578681b11@arm.com>
Date: Wed, 16 Oct 2024 15:46:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH v1 36/57] xen: Remove PAGE_SIZE compile-time constant
 assumption
Content-Language: en-GB
To: Andrew Morton <akpm@linux-foundation.org>,
 Anshuman Khandual <anshuman.khandual@arm.com>,
 Ard Biesheuvel <ardb@kernel.org>, Catalin Marinas <catalin.marinas@arm.com>,
 David Hildenbrand <david@redhat.com>, Greg Marsden
 <greg.marsden@oracle.com>, Ivan Ivanov <ivan.ivanov@suse.com>,
 Kalesh Singh <kaleshsingh@google.com>, Marc Zyngier <maz@kernel.org>,
 Mark Rutland <mark.rutland@arm.com>, Matthias Brugger <mbrugger@suse.com>,
 Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org,
 linux-mm@kvack.org, xen-devel@lists.xenproject.org
References: <20241014105514.3206191-1-ryan.roberts@arm.com>
 <20241014105912.3207374-1-ryan.roberts@arm.com>
 <20241014105912.3207374-36-ryan.roberts@arm.com>
From: Ryan Roberts <ryan.roberts@arm.com>
In-Reply-To: <20241014105912.3207374-36-ryan.roberts@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

+ Juergen Gross, Stefano Stabellini

This was a rather tricky series to get the recipients correct for and my script
did not realize that "supporter" was a pseudonym for "maintainer" so you were
missed off the original post. Appologies!

More context in cover letter:
https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/


On 14/10/2024 11:58, Ryan Roberts wrote:
> To prepare for supporting boot-time page size selection, refactor code
> to remove assumptions about PAGE_SIZE being compile-time constant. Code
> intended to be equivalent when compile-time page size is active.
> 
> Allocate enough "frame_list" static storage in the balloon driver for
> the maximum supported page size. Although continue to use only the first
> PAGE_SIZE of the buffer at run-time to maintain existing behaviour.
> 
> Refactor xen_biovec_phys_mergeable() to convert ifdeffery to c if/else.
> For compile-time page size, the compiler will choose one branch and
> strip the dead one. For boot-time, it can be evaluated at run time.
> 
> Refactor a BUILD_BUG_ON to evaluate the limit (when the minimum
> supported page size is selected at boot-time).
> 
> Reserve enough storage for max page size in "struct remap_data" and
> "struct xenbus_map_node".
> 
> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
> ---
> 
> ***NOTE***
> Any confused maintainers may want to read the cover note here for context:
> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
> 
>  drivers/xen/balloon.c              | 11 ++++++-----
>  drivers/xen/biomerge.c             | 12 ++++++------
>  drivers/xen/privcmd.c              |  2 +-
>  drivers/xen/xenbus/xenbus_client.c |  5 +++--
>  drivers/xen/xlate_mmu.c            |  6 +++---
>  include/xen/page.h                 |  2 ++
>  6 files changed, 21 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> index 528395133b4f8..0ed5f6453af0e 100644
> --- a/drivers/xen/balloon.c
> +++ b/drivers/xen/balloon.c
> @@ -131,7 +131,8 @@ struct balloon_stats balloon_stats;
>  EXPORT_SYMBOL_GPL(balloon_stats);
>  
>  /* We increase/decrease in batches which fit in a page */
> -static xen_pfn_t frame_list[PAGE_SIZE / sizeof(xen_pfn_t)];
> +static xen_pfn_t frame_list[PAGE_SIZE_MAX / sizeof(xen_pfn_t)];
> +#define FRAME_LIST_NR_ENTRIES (PAGE_SIZE / sizeof(xen_pfn_t))
>  
>  
>  /* List of ballooned pages, threaded through the mem_map array. */
> @@ -389,8 +390,8 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
>  	unsigned long i;
>  	struct page   *page;
>  
> -	if (nr_pages > ARRAY_SIZE(frame_list))
> -		nr_pages = ARRAY_SIZE(frame_list);
> +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
> +		nr_pages = FRAME_LIST_NR_ENTRIES;
>  
>  	page = list_first_entry_or_null(&ballooned_pages, struct page, lru);
>  	for (i = 0; i < nr_pages; i++) {
> @@ -434,8 +435,8 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
>  	int ret;
>  	LIST_HEAD(pages);
>  
> -	if (nr_pages > ARRAY_SIZE(frame_list))
> -		nr_pages = ARRAY_SIZE(frame_list);
> +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
> +		nr_pages = FRAME_LIST_NR_ENTRIES;
>  
>  	for (i = 0; i < nr_pages; i++) {
>  		page = alloc_page(gfp);
> diff --git a/drivers/xen/biomerge.c b/drivers/xen/biomerge.c
> index 05a286d24f148..28f0887e40026 100644
> --- a/drivers/xen/biomerge.c
> +++ b/drivers/xen/biomerge.c
> @@ -8,16 +8,16 @@
>  bool xen_biovec_phys_mergeable(const struct bio_vec *vec1,
>  			       const struct page *page)
>  {
> -#if XEN_PAGE_SIZE == PAGE_SIZE
> -	unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
> -	unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
> +	if (XEN_PAGE_SIZE == PAGE_SIZE) {
> +		unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
> +		unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
> +
> +		return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
> +	}
>  
> -	return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
> -#else
>  	/*
>  	 * XXX: Add support for merging bio_vec when using different page
>  	 * size in Xen and Linux.
>  	 */
>  	return false;
> -#endif
>  }
> diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
> index 9563650dfbafc..847f7b806caf7 100644
> --- a/drivers/xen/privcmd.c
> +++ b/drivers/xen/privcmd.c
> @@ -557,7 +557,7 @@ static long privcmd_ioctl_mmap_batch(
>  	state.global_error  = 0;
>  	state.version       = version;
>  
> -	BUILD_BUG_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);
> +	BUILD_BUG_ON(((PAGE_SIZE_MIN / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE_MAX) != 0);
>  	/* mmap_batch_fn guarantees ret == 0 */
>  	BUG_ON(traverse_pages_block(m.num, sizeof(xen_pfn_t),
>  				    &pagelist, mmap_batch_fn, &state));
> diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
> index 51b3124b0d56c..99bde836c10c4 100644
> --- a/drivers/xen/xenbus/xenbus_client.c
> +++ b/drivers/xen/xenbus/xenbus_client.c
> @@ -49,9 +49,10 @@
>  
>  #include "xenbus.h"
>  
> -#define XENBUS_PAGES(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
> +#define XENBUS_PAGES(_grants)		(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
> +#define XENBUS_PAGES_MAX(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE_MIN))
>  
> -#define XENBUS_MAX_RING_PAGES	(XENBUS_PAGES(XENBUS_MAX_RING_GRANTS))
> +#define XENBUS_MAX_RING_PAGES		(XENBUS_PAGES_MAX(XENBUS_MAX_RING_GRANTS))
>  
>  struct xenbus_map_node {
>  	struct list_head next;
> diff --git a/drivers/xen/xlate_mmu.c b/drivers/xen/xlate_mmu.c
> index f17c4c03db30c..a757c801a7542 100644
> --- a/drivers/xen/xlate_mmu.c
> +++ b/drivers/xen/xlate_mmu.c
> @@ -74,9 +74,9 @@ struct remap_data {
>  	int mapped;
>  
>  	/* Hypercall parameters */
> -	int h_errs[XEN_PFN_PER_PAGE];
> -	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE];
> -	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE];
> +	int h_errs[XEN_PFN_PER_PAGE_MAX];
> +	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE_MAX];
> +	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE_MAX];
>  
>  	int h_iter;	/* Iterator */
>  };
> diff --git a/include/xen/page.h b/include/xen/page.h
> index 285677b42943a..86683a30038a3 100644
> --- a/include/xen/page.h
> +++ b/include/xen/page.h
> @@ -21,6 +21,8 @@
>  	((page_to_pfn(page)) << (PAGE_SHIFT - XEN_PAGE_SHIFT))
>  
>  #define XEN_PFN_PER_PAGE	(PAGE_SIZE / XEN_PAGE_SIZE)
> +#define XEN_PFN_PER_PAGE_MIN	(PAGE_SIZE_MIN / XEN_PAGE_SIZE)
> +#define XEN_PFN_PER_PAGE_MAX	(PAGE_SIZE_MAX / XEN_PAGE_SIZE)
>  
>  #define XEN_PFN_DOWN(x)	((x) >> XEN_PAGE_SHIFT)
>  #define XEN_PFN_UP(x)	(((x) + XEN_PAGE_SIZE-1) >> XEN_PAGE_SHIFT)



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 14:54:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 14:54:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820086.1233583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t15Pd-0007Mg-Iy; Wed, 16 Oct 2024 14:54:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820086.1233583; Wed, 16 Oct 2024 14: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 1t15Pd-0007MZ-Fo; Wed, 16 Oct 2024 14:54:09 +0000
Received: by outflank-mailman (input) for mailman id 820086;
 Wed, 16 Oct 2024 14: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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t15Pb-0007MT-Ty
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 14:54:07 +0000
Received: from mail-oi1-x22a.google.com (mail-oi1-x22a.google.com
 [2607:f8b0:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7dbe44c0-8bce-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 16:54:06 +0200 (CEST)
Received: by mail-oi1-x22a.google.com with SMTP id
 5614622812f47-3e5f835c024so283668b6e.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 07:54:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7dbe44c0-8bce-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729090445; x=1729695245; 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=ggVZTExQuEWabaaIEg4MKPe8PJVnLzDsRtgbEuoiAsg=;
        b=UBnNEk3ttDiqqVlGP91LPLRGu9FPCDBtkOrskUqnXk/ZrDgedDeZnFel7YBky4GBkm
         rSCjLzxl30aO1INK7Weu2+sZwt7VeU3WGIuIlj7h7vAgcz2uMFoDnaj8eJvhHbUq0ix/
         I02mPLPP28f3lQX67OV3KT5HTgJF7ozr3dUJw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729090445; x=1729695245;
        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=ggVZTExQuEWabaaIEg4MKPe8PJVnLzDsRtgbEuoiAsg=;
        b=JFYOKIGeFbEVjGlgDCXcFsVgBhW2BTfTdFJKWz8kHDgKjITX/wa4kUuvf7pyiMWPqU
         XUxlW5xOM53Ylw/9uuQL2vG+RAm3CDdHvVS097eaXl10fOmcupFh5msH9+u5l71w/9qz
         fXpPmREIJowR/nB2cB5tIZNguDQ15tIQGOUHyzY5Gp01FRCucr4M+6wt1exhHJTnYGWl
         vttKnZig/PoVEDt+GgjBhgrR2dyDSiOX0WL3UPnyBe+tsUCFybZza271qw+gmhyGe4UT
         OU9mJZ8m8UWhh2jfiCritXrlVxUpJyhBVrQmYpv6jq1pXy8nHBuqiMdR/e4UaZtMalOu
         A/Bw==
X-Gm-Message-State: AOJu0YyLGAK60sVjwVmq4NgwACWWXtTOBjnAU0RZ+ebwu21BdmVZBox7
	y4bv+gf7WhubpHmvv3O11pHUROKHesqydOS15q3sgSegT53w36UdYl/cnp2Gr3CTC5OuVA365qi
	FrFgFweu5gu+ASz4TrETF7NcXQrMGy9kI+8vpbA==
X-Google-Smtp-Source: AGHT+IErzRxcgDCbDbQkefhj5iMP86l33yIDrwVMB0hAetJjLNMPN2yCIAqmQZMaXYvzO9AzyTEORoaJLca39Ti/RvY=
X-Received: by 2002:a05:6808:f87:b0:3e2:8696:4b4f with SMTP id
 5614622812f47-3e5f0249e47mr4405767b6e.19.1729090445504; Wed, 16 Oct 2024
 07:54:05 -0700 (PDT)
MIME-Version: 1.0
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com> <821ac8cc-a0ac-412b-8069-73c52541b70b@citrix.com>
In-Reply-To: <821ac8cc-a0ac-412b-8069-73c52541b70b@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 16 Oct 2024 15:53:54 +0100
Message-ID: <CACHz=Zj9m2tkPPbtJuCT5g_NtDRA3iMPBzxM8R5Jxp1ofVc8oQ@mail.gmail.com>
Subject: Re: lib32 followup (visibility issue and/or toolchain bug?)
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.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 Wed, Oct 16, 2024 at 2:30=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> Hello,
>
> Preempting some future work I'm expecting to arrive, I had a go at using
> __builtin_*() in obj32.
>
> This is formed of 2 patches on top of this series:
> https://xenbits.xen.org/gitweb/?p=3Dpeople/andrewcoop/xen.git;a=3Dshortlo=
g;h=3Drefs/heads/xen-lib32
>

You are confident we'll have a lot of shared code to need an
additional "lib32" in the Makefile!
I would personally stick with obj32.
Note that file should be strlen.c, not strlen.32.c, otherwise you are
possibly going to pick up the general rule and not the one in the
Makefile (but maybe is what you wanted).

> Patch 1 introduces lib32 beside obj32, with strlen() being the first
> broken-out function, and patch 2 swaps to __builtin_strlen().
>
> Both compile, but the difference that patch 2 introduces was unexpected.
>
> With just lib32, and taking strsubcmp() as an example, we get:
>
> 00000000 <strsubcmp>:
>    0:        83 ec 0c                 sub    $0xc,%esp
>    3:        89 5c 24 04              mov    %ebx,0x4(%esp)
>    7:        89 74 24 08              mov    %esi,0x8(%esp)
>    b:        89 c6                    mov    %eax,%esi
>    d:        89 d3                    mov    %edx,%ebx
>    f:        89 d0                    mov    %edx,%eax
>   11:    /-- e8 fc ff ff ff           call   12 <strsubcmp+0x12>
>             12: R_386_PC32    strlen
>   16:        89 c1                    mov    %eax,%ecx
>   18:        89 da                    mov    %ebx,%edx
>   1a:        89 f0                    mov    %esi,%eax
>   1c:    /-- e8 fc ff ff ff           call   1d <strsubcmp+0x1d>
>             1d: R_386_PC32    .text.strncmp
>   21:        8b 5c 24 04              mov    0x4(%esp),%ebx
>   25:        8b 74 24 08              mov    0x8(%esp),%esi
>   29:        83 c4 0c                 add    $0xc,%esp
>   2c:        c3                       ret
>
> which all seems fine.  We get a plain PC32 relocation to strlen (which
> is now in the separate library).
>
> However, with patch 2 in place (simply swapping the plain extern for
> __builtin_strlen(), we now get:
>
> 00000000 <strsubcmp>:
>    0:        83 ec 0c                 sub    $0xc,%esp
>    3:        89 1c 24                 mov    %ebx,(%esp)
>    6:        89 74 24 04              mov    %esi,0x4(%esp)
>    a:        89 7c 24 08              mov    %edi,0x8(%esp)
>    e:    /-- e8 fc ff ff ff           call   f <strsubcmp+0xf>
>             f: R_386_PC32    __x86.get_pc_thunk.bx
>   13:        81 c3 02 00 00 00        add    $0x2,%ebx
>             15: R_386_GOTPC    _GLOBAL_OFFSET_TABLE_
>   19:        89 c7                    mov    %eax,%edi
>   1b:        89 d6                    mov    %edx,%esi
>   1d:        89 d0                    mov    %edx,%eax
>   1f:    /-- e8 fc ff ff ff           call   20 <strsubcmp+0x20>
>             20: R_386_PLT32    strlen

PLT means it not declared hidden, otherwise it would have used the
relative relocation.
Maybe

size_t strlen(const char *s);
#define strlen(s) __builtin_strlen(s)

xen/compiler.h is included, so all declaration should get the hidden
by default ? Or add __attribute__((visibility("hidden"))) explicitly.

>   24:        89 c1                    mov    %eax,%ecx
>   26:        89 f2                    mov    %esi,%edx
>   28:        89 f8                    mov    %edi,%eax
>   2a:    /-- e8 fc ff ff ff           call   2b <strsubcmp+0x2b>
>             2b: R_386_PC32    .text.strncmp
>   2f:        8b 1c 24                 mov    (%esp),%ebx
>   32:        8b 74 24 04              mov    0x4(%esp),%esi
>   36:        8b 7c 24 08              mov    0x8(%esp),%edi
>   3a:        83 c4 0c                 add    $0xc,%esp
>   3d:        c3                       ret
>
>
> The builtin hasn't managed to optimise away the call to strlen (that's
> fine).  But, we've ended up spilling %ebx to the stack, calculating the
> location of the GOT and not using it.
>

Maybe the ABI for PLT is to have %ebx set to the GOT ? Not sure about it.

> So, as it stands, trying to use __builtin_strlen() results in worse code
> generation.  One thing I noticed was that we're not passing
> -fvisibility=3Dhidden into CFLAGS_x86_32, but fixing that doesn't help
> either.  We do have the pragma from compiler.h, so I'm out of visibility
> ideas.
>

The -fvisibility=3Dhidden should be overridden by the xen/compiler.h;
but should be overridden with hidden!
Maybe strlen is defined by default with another visibility?
If you generate the assembly, you should see if the strlen symbol gets
the .hidden bless or not.

> Anything else I've missed?
>

Coffee :-)

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 15:05:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 15:05:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820101.1233599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t15aO-0000iy-MT; Wed, 16 Oct 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 820101.1233599; Wed, 16 Oct 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 1t15aO-0000ir-Js; Wed, 16 Oct 2024 15:05:16 +0000
Received: by outflank-mailman (input) for mailman id 820101;
 Wed, 16 Oct 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=zOTK=RM=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t15aN-0000il-9i
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 15:05:15 +0000
Received: from mail-oo1-xc32.google.com (mail-oo1-xc32.google.com
 [2607:f8b0:4864:20::c32])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0b99adac-8bd0-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 17:05:14 +0200 (CEST)
Received: by mail-oo1-xc32.google.com with SMTP id
 006d021491bc7-5eb148f42a2so2916033eaf.2
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 08:05:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b99adac-8bd0-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729091113; x=1729695913; 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=3Ik4JquTEynZE8a0heVCGuxaBC0VR8UNr+gq9i5P/iw=;
        b=OI1Fd0e6W7c8eHsX3Y6Ye1WFJCgeapmY29olXwhD5EYU9LEKyjYycn+8vXKDJ05nxA
         bF2rjUD2vzu30WfZAZ7qE4jSRoNLJlqIyrU+Rb/0QssqbLgsRE0qbyBIM80a+/w82HD7
         1xuZIkZEQEebZC1pHRf/G+PZ7PzwscgWzCz2o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729091113; x=1729695913;
        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=3Ik4JquTEynZE8a0heVCGuxaBC0VR8UNr+gq9i5P/iw=;
        b=gsEsYcFAzMi1qhf+dU67LNdrsenBH1uMQbaLhPmg8Edy/fA3Mxuw3DZJXbl7j9QgvF
         4w/JGqQz365WtoeSSgbtoFydR664augfkVsW9Seh2+9uz4fywsMv6CwXXfVPuHWElsCp
         y+SYSRVkcHFS0jVSlZ0KisaBUXqQbOLvL0EtGLdPCbEtNYS4t8qgRXmBLxaJE51X6sEf
         quq+o27I/vlky6d0ZLrfjI1t+xnL+wYzSTWd6TcbDTqvQVAGesd50vzg4tC7nG+aagYG
         zzNTdsL9wa6+ZCJsILNdxMGDk1VvtRWUmaRdFib5pBOiTFfw7hb+E4sxLasnSFOeFUPl
         2aDg==
X-Gm-Message-State: AOJu0YxMleBQUNal71cJNSdF5YqrN7hi1yr1bT2A71N57CXRxwwIqvUs
	+7Gw2w95BDQ9MafOLdTnaQy/SL5ws7N7diozuVbcKihqVWJUXKysupsTyMYCq3uqmOmuQYCHDuk
	uAm2ZLht/YQWkxifuW83h2uma6To9geyposUX8g==
X-Google-Smtp-Source: AGHT+IFCebBjXfqD4qCl9j1joxdrKK6lkwa3Weerd43yzMvAAivLYfHhUzBDBZ4dG0PZrae9qHuIdtE5tiPApE4xZ4k=
X-Received: by 2002:a05:6820:221d:b0:5e5:c517:4d88 with SMTP id
 006d021491bc7-5eb260ed21bmr8873436eaf.0.1729091112824; Wed, 16 Oct 2024
 08:05:12 -0700 (PDT)
MIME-Version: 1.0
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
 <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com>
 <Zw5zSURbpInM5oBY@l14> <CACHz=ZgN9qNygJWuWovpiU+MCGcJu9qaxaRT1VkkiHsYwbEN4A@mail.gmail.com>
 <Zw+it8oVVTrS62wx@l14>
In-Reply-To: <Zw+it8oVVTrS62wx@l14>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 16 Oct 2024 16:05:00 +0100
Message-ID: <CACHz=ZgD-Zf7_R+RWWO1o8qkZbEC0uPjmz2kMJ83qQ8jXmd2JA@mail.gmail.com>
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Anthony PERARD <anthony.perard@vates.tech>
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>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 16, 2024 at 12:25=E2=80=AFPM Anthony PERARD
<anthony.perard@vates.tech> wrote:
>
> On Wed, Oct 16, 2024 at 09:33:32AM +0100, Frediano Ziglio wrote:
> > On Tue, Oct 15, 2024 at 2:51=E2=80=AFPM Anthony PERARD <anthony.perard@=
vates.tech> wrote:
> > > On Mon, Oct 14, 2024 at 05:32:26PM +0100, Frediano Ziglio wrote:
> > > > On Mon, Oct 14, 2024 at 4:31=E2=80=AFPM Anthony PERARD <anthony.per=
ard@vates.tech> wrote:
> > > > > On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
>
> > > BTW, do we need the rules that generate the input of this rules
> > > (built_in_32.tmp.o that is), or can this one takes all 32bit objects =
as
> > > input?
> > >
> >
> > Better not to do it In some conditions it can generate slightly
> > different results (like different object alignments) making the
> > algorithm fail.
>
> Ok. Thanks for the explanation.
>
> > > > > > +# generate final object file combining and checking above bina=
ries
> > > > > > +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/buil=
t_in_32.final.bin
> > > > >
> > > > > So, "other" isn't part of "final", I don't really know what those=
 two
> > > > > things contains so naming wise I can't suggest anything useful.
> > >
> > > Instead of "other", is "control" (like in science experiment where yo=
u
> > > have a control group), or "offseted" (which seems to be how this seco=
nd
> > > binary is constructed) would be better names for this *.bin? It seems
> > > the script take both input and play the game of the 7 differences, to
> > > find clues about the location of some symbols, right?.
> > >
> >
> > I don't know the game and I think people not familiar with it won't
> > find new names more readable but less.
>
> Sorry, the "game" as nothing to do with the name I've proposed. I was
> just asking if the script take both *.bin and was looking for
> differences.
>
> (The game of 7 differences is simple: there's two similar pictures and
> you just look for the 7 differences between them, that's it.)
>
> > Not saying that current names are good, they just need to be located
> > at different addresses with some "magic" in the middle.
>
> Well to me "other" evoke a binary that contains functions that are not
> in "final", but instead they both contain the sames functions with
> slight variation of placement in the file (with added offset, gap), as I
> understand. But if you don't like my proposal, so be it.
>

What about "base" and "offsetted" ? I don't know why "offsetted"
sounds weird to me but I didn't find anything better. I hope some
native English speaker could come with a better proposal.

> > > I can think of one example where $(if_changed,) is going to really he=
lp,
> > > by looking at this command line:
> > >     One does update the .c file to add a function that they like to
> > >     export, run `make`, realize they forgot to update the makefile so
> > >     update it, run `make`, it's still doesn't work...
> > >     Maybe run `make clean; make`, or something else...
> > >
> > > So, could you use $(if_changed,) ?
> > > Probably:
> > > quiet_cmd_combine =3D GEN     $@
> > > cmd_combine =3D $(PYTHON) ...
> > > $(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32=
.final.bin FORCE
> > >     $(call if_changes,combine)
> > > targets +=3D built_in_32.S
> > >
> > > GEN, for generate, or it could be PY instead, because python script c=
an
> > > be slow to compile which could explain why the build system output is
> > > making a pause on this target (on slow machines that is). Or it could=
 be
> > > COMBINE, or something else, but it's not really necessary to explain,
> > > the target name is often enough to figure out what's happening, when
> > > needed.
> > >
> >
> > It just looks more complicated to me.
>
> I'm sorry if writing makefile is complicated. GNU make doesn't help with
> writing build system that work well, especially when doing incremental
> builds. So we need to use more complicated construction, especially for
> a complex project like Xen.
>

It was more a balance consideration. Considering the cases that seem
to solve (and your case did not much apply) I don't feel that worth.
Also, dependency to Makefile would solve without additional macros and
indirection. Do you mind posting a full working change?

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 15:22:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 15:22:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820108.1233609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t15qd-0003Wx-2B; Wed, 16 Oct 2024 15:22:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820108.1233609; Wed, 16 Oct 2024 15:22: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 1t15qc-0003Wq-Vn; Wed, 16 Oct 2024 15:22:02 +0000
Received: by outflank-mailman (input) for mailman id 820108;
 Wed, 16 Oct 2024 15:22: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 1t15qa-0003WF-Sq; Wed, 16 Oct 2024 15:22: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 1t15qa-0004s0-J0; Wed, 16 Oct 2024 15:22: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 1t15qa-0002xt-8t; Wed, 16 Oct 2024 15:22:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t15qa-0000EK-8J; Wed, 16 Oct 2024 15:22: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=tKgUY6DR0ndT8HAz2X6hNYbcNGKKo+FZijjKWeWR+bE=; b=Hq5Qf0ERww26yCCdViyGs/EuaG
	CynT0CvYuBk38Ix+iRgBk0lk1o6shSHDJy1xTUYGxIWHCf3/P9E/4CWZQRy5hqZrzPT0PSNu5qUZ/
	aOpM4c9ah0f5Y0Lq6QUQSD/JfdC21is59mnH5lufdwU6ojDg4LnSthVJnZNEbl+l1Afw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188101-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188101: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:debian-hvm-install:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=f774a677507966222624a9b2859f06ede7608100
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 15:22:00 +0000

flight 188101 qemu-mainline real [real]
flight 188119 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188101/
http://logs.test-lab.xenproject.org/osstest/logs/188119/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-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-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-amd64-amd64-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-amd64-amd64-libvirt-qcow2 14 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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                f774a677507966222624a9b2859f06ede7608100
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   30 days
Failing since        187731  2024-09-17 13:11:20 Z   29 days   49 attempts
Testing same since   188101  2024-10-16 00:07:27 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandra Diupina <adiupina@astralinux.ru>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Chao Liu <chao.liu@yeah.net>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Helge Deller <deller@gmx.de>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Junjie Mao <junjie.mao@intel.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Roman Cardenas Rodriguez <rcardenas.rod@gmail.com>
  Roman Penyaev <r.peniaev@gmail.com>
  Román Cárdenas Rodríguez <rcardenas.rod@gmail.com>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  Strahinja Jankovic <strahinja.p.jankovic@gmail.com>
  Strahinja Jankovic <strahinjapjankovic@gmail.com>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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        fail    
 test-amd64-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 11295 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 15:27:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 15:27:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820117.1233619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t15vP-0004Fz-La; Wed, 16 Oct 2024 15:26:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820117.1233619; Wed, 16 Oct 2024 15:26: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 1t15vP-0004Fs-HC; Wed, 16 Oct 2024 15:26:59 +0000
Received: by outflank-mailman (input) for mailman id 820117;
 Wed, 16 Oct 2024 15:26: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 1t15vO-0004Fi-Mn; Wed, 16 Oct 2024 15:26: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 1t15vO-0004x6-LE; Wed, 16 Oct 2024 15:26: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 1t15vO-00034c-A5; Wed, 16 Oct 2024 15:26:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t15vO-00045Z-9V; Wed, 16 Oct 2024 15:26: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=dDWm3Gm+ciJkdV2ognUqbm8idhbKfynV1X3tW6b30dw=; b=uHST8VqTuZwQYXRcHFijrSKIcG
	yqphgThIZ+P2w1h9XfjwRH3/G0RmyBdfbrPHMMt/KavAySp6Ilb+tHytGi4SO/EtMuJslKRxcBMXJ
	Evf1FeOuLI+es1di1MrUd56v2v5b1dVrNsnQ6RUxNsOlFGpTcQKO9KxPrGBsQ8jp4YXs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188108-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188108: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt: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-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-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-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-vhd: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-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=e996536a3b9ffefe639820baad006a3db411157c
X-Osstest-Versions-That:
    libvirt=e2c6f4c80016719b081fc26a30613b54cda56443
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 15:26:58 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188089
 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-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-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-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-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              e996536a3b9ffefe639820baad006a3db411157c
baseline version:
 libvirt              e2c6f4c80016719b081fc26a30613b54cda56443

Last test of basis   188089  2024-10-15 04:18:55 Z    1 days
Testing same since   188108  2024-10-16 04:18:43 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Göran Uddeborg <goeran@uddeborg.se>
  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-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-armhf-armhf-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
   e2c6f4c800..e996536a3b  e996536a3b9ffefe639820baad006a3db411157c -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 16:51:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 16:51:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820206.1233667 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t17Eg-00014R-Qn; Wed, 16 Oct 2024 16:50:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820206.1233667; Wed, 16 Oct 2024 16: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 1t17Eg-00014K-Nc; Wed, 16 Oct 2024 16:50:58 +0000
Received: by outflank-mailman (input) for mailman id 820206;
 Wed, 16 Oct 2024 16:50: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=GkAW=RM=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t17Ef-000149-Ru
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 16:50:58 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20619.outbound.protection.outlook.com
 [2a01:111:f403:2413::619])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cf20b591-8bde-11ef-a0be-8be0dac302b0;
 Wed, 16 Oct 2024 18:50:55 +0200 (CEST)
Received: from SJ0PR03CA0222.namprd03.prod.outlook.com (2603:10b6:a03:39f::17)
 by SA1PR12MB6799.namprd12.prod.outlook.com (2603:10b6:806:25b::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Wed, 16 Oct
 2024 16:50:50 +0000
Received: from SJ5PEPF000001F3.namprd05.prod.outlook.com
 (2603:10b6:a03:39f:cafe::f2) by SJ0PR03CA0222.outlook.office365.com
 (2603:10b6:a03:39f::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.17 via Frontend
 Transport; Wed, 16 Oct 2024 16:50:50 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ5PEPF000001F3.mail.protection.outlook.com (10.167.242.71) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Wed, 16 Oct 2024 16:50:50 +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.39; Wed, 16 Oct
 2024 11:50:49 -0500
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.39; Wed, 16 Oct
 2024 11:50:49 -0500
Received: from [192.168.122.223] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Wed, 16 Oct 2024 11:50:48 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf20b591-8bde-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=c+wYaKfKbMui2IHBN7ORnbeCu3RnrJvC3aPdp6iv0brN0QmIpVdPYc5tkF067iHMwZjqZTVCJxB/I6KuxKpW5Y4LKXqMhYtM9pDmEWfxnDOXxCHvC0CHevbLtmGlHwva0fsoUS3+D1m0zjfCygmnpOM59evyhR2UzPwm4GtuzHxveqO+W6e4H8Iznu8NKFXnMymFqOEkbf6CCYX9Lih4O+kdTTw6N/AdbEaabNQ6sAi2W6UFHKx02RUuFI+BZ9YwM4b57huIqHxaF/VA+3/s2QyxpHe924r5PRMx3uE0ZSl036lJmA3rTSo89rAcvctk/ihhKHtXDmcJrYnkV1ZeWQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=AI7nWlRNn4ew8lhTB9IFeLafBt7X7W9FtcQ6fobuRc4=;
 b=cWVJtTnEA7YYOObGRvZil6ZE0aDGZZ+rA2Z0BMfcSnhOOk/ksDpEgH3sHyBitLEMYwSWAfghDN48jctTSYNZpmbIE+6FPtbAPnaDHKL+HJ0iD1gFU/x3WzCqprb3qa1d6jp24bpmphqbtUw+hkmy2oxTwVk8bDAJ5nAD+fZh8w1C+xuCKFbIY9hV5d7pz94GtSHAkI2s/OwMD2DjyeW5VX/v4Vz3LtlbJVvX/i5TTzKpgiSnhgIc4T//i8vwR8dTFBStfztp+3Fkiym+iFIXtTRb+e2YY6nWYOYieKsoqi/yWOcxde8XpuFd5qa/4nEgqLZaqQrXVYsGmaNb3WXqOA==
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=AI7nWlRNn4ew8lhTB9IFeLafBt7X7W9FtcQ6fobuRc4=;
 b=aIisDn/pAXygyjrITYOeitD3YccdNXf7v/Nae5N5dqnXMvif4msRKRnNz8BK9DgOLo8msRnJkea/89heEpqTn3Qdud+hi801WfC6Y2te7UA6jraSDKLMZooR2lkq8uVOYF/imnCjk/R7EYErxTUUnelj/o8B/bZi5/n7YifoVOo=
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: <881998fc-f239-4ddf-9730-eb3d151fbf16@amd.com>
Date: Wed, 16 Oct 2024 12:50:47 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 2/3] xen/pci: introduce PF<->VF links
To: Jan Beulich <jbeulich@suse.com>
CC: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, <xen-devel@lists.xenproject.org>
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
 <20241011152727.366770-3-stewart.hildebrand@amd.com>
 <46e66868-6ddc-4037-8c3a-5a60b39d8b73@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <46e66868-6ddc-4037-8c3a-5a60b39d8b73@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001F3:EE_|SA1PR12MB6799:EE_
X-MS-Office365-Filtering-Correlation-Id: e78fc79e-7899-4f79-5fcc-08dcee02b0d5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?STB1cTgrWXZ5QWxTemxac1FndFJaYk10S0swbkdMUzBadkt1bnZ0c3RxVm1S?=
 =?utf-8?B?K3VVNkZjdlNBbGFjcGR3b0Uzb1VaTkZDWUZBUE1NeG1IazIxT2hjNU5HYUtn?=
 =?utf-8?B?dWhoV25zQWVPS2pPM0hNSXB2TWNKbkNIUHA2RjBQcTNHdHhoTWxXZCtrUHQy?=
 =?utf-8?B?a1M3bldoajFzV2djM0Q5djFLclNOT0crT045Mk55cjIvSGxxVzYyYTQxNkFk?=
 =?utf-8?B?dWJIZCt2SndlN090Uk5UMWlVMkRCSVZmMjdOSnNwb3JubjRpbFJ5cEtsZVg0?=
 =?utf-8?B?eU5pTXRER3hYNXhuQU5HN2xvVDVVNTlpdHpCdHRTWkRIbU0wTmZSTktWUHNT?=
 =?utf-8?B?S2FSYk05cHZWVFBaR0Y5Y21wMXJNY3prSFVDMkg0Z0F1R2hrM0FPSU9MOEZr?=
 =?utf-8?B?dWxjRkd0Z2hMZHFLem5XVHV2bTFCYkxZYVoxTWhNbG9rc3BmTDMzam5oUlZ6?=
 =?utf-8?B?WE1BV1E5UHk3M1gvTXNOU2l2U0VjYWpUNlRUTlFOcnZHS3FiMjRycVBlRTFO?=
 =?utf-8?B?UmkxOG1yTW0rMTNUalBjRGdlUTUvOHp0T3VJZkhJeXVCOWdpU1RWR1FUWk0y?=
 =?utf-8?B?QkU4RkNnNGNrTzhJNU5mMmE4SVF4OFp2NkxURXgxUGd4LytQb1FSbThuWXNB?=
 =?utf-8?B?MGJZd05JdENkais5RFpsY0FYQnhmcDVzaGtPZHBNQURSaWM5SnRROWtJbXVX?=
 =?utf-8?B?Z1QrUGRYU2JzQURKdXh1M1ovOWltSVMzM0laNk1BMnpMNURHYTdYcGw2S3pS?=
 =?utf-8?B?aHpiK0o0Qi92WHJ0b2UrZVdrWHVEMDlSV08xNm1TUEpJWXBCOGkrL1BxZE8y?=
 =?utf-8?B?SnpBUHlJRVJIRG10ZjlScGhpeW5UZXVJODd2M0xIUFo2TE5ncGEzQS9ncUNX?=
 =?utf-8?B?WmtDUWczMU9qM3duSG5vbytjRWFnekoyemhVenYvZC91RUdEd0NWZ3NISGs3?=
 =?utf-8?B?YlpJS1NvNW5CMXhpM1FFT29PQXVHUEF3SkJMWGNvbkIvYWNjSzU3TEtKdVY3?=
 =?utf-8?B?NFlDR1NzdVhuKzhwOHpvOW0yb1p1V1dSUnNzKzJRVUlCbk9sT0V5cVNNd3Rv?=
 =?utf-8?B?Vk1PMThodkhDRmswVUFsem0yTUo1VHJDa21IMDNjTkRwdXplMFk2VU4zTDl2?=
 =?utf-8?B?Y0VRNm1HdHdSRUdVOWFWU0phMGdVWjduc1EwMlV5TEFUMWpOVENUd3RVaWVB?=
 =?utf-8?B?U0VzTHdFblpkNGQ1bGtUaWM2ek8vYjZkV3E4UzhZNGZjY0VOWFY2RnlKWW5K?=
 =?utf-8?B?T0liOTZCTDBnRzRkU0t2QU44Uk1iM3JvNjA4YnVkS2xPREpxaGNMK3lqQUE1?=
 =?utf-8?B?Ulh5K3dIdmNWbEE4Zy9DcSt0bkdCbUNtZWt6WXpURTlkQnpPQW01eEM0c29D?=
 =?utf-8?B?UzIxZjcwYzdMY0NiYmZwcUljUTFSalM1cEVkMmZpQXQ2WmhpMHVURFZGQS9h?=
 =?utf-8?B?dWgvT0x5V2VJY1NRUlE5YjdSLzRXYXJmYm5raTBJVGt5Y2Y3UWZ5Tk94NkdJ?=
 =?utf-8?B?NmFKdkYxZUFVUnpJM0RzdEhSdkY2bjIyV3RPeW5uZy9FbjQyRzJiWEc0Ykpa?=
 =?utf-8?B?cFI0dkxURU1CSE4yeHB3QldBZVh2cVZlNmh2T1dYN0VOS2dET0YxeTN1ZDU4?=
 =?utf-8?B?cGdKYllxWEdxbnc3ZzFycUFzS0g1ODNaL1ZlNm1FQldUVUo1djRxQ05naFds?=
 =?utf-8?B?eHF4NC9Ya1NZY0NLa0FCOUVvTnFiQXVqbndCbVJTOGo2ajhscFdyaGE5TXc5?=
 =?utf-8?B?N0p3T1lGTGtvVGlIYmorZnBGNUs4SERTKzFXNStMeEdORnEvYnFSUlBPTkpl?=
 =?utf-8?B?dDRNV3ZPcFJ2VnJEWXBtZ3l5c2xXTTBxcFA2VmdvSHB1L2Njdzh2TjVINDZV?=
 =?utf-8?Q?XjWOaboN2Qw4h?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2024 16:50:50.2324
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e78fc79e-7899-4f79-5fcc-08dcee02b0d5
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:
	SJ5PEPF000001F3.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6799

On 10/16/24 05:52, Jan Beulich wrote:
> On 11.10.2024 17:27, Stewart Hildebrand wrote:
>> Add links between a VF's struct pci_dev and its associated PF struct
>> pci_dev. Move the calls to pci_get_pdev()/pci_add_device() down to avoid
>> dropping and re-acquiring the pcidevs_lock().
>>
>> During PF removal, unlink VF from PF and mark the VF broken. As before,
>> VFs may exist without a corresponding PF, although now only with
>> pdev->broken = true. If the PF is removed and re-added, dom0 is expected
>> to also remove and re-add the VFs.
> 
> Right, or else the VF struct instance would remain orphaned the way you've
> implemented this. Question is whether it is a reasonable assumption that a
> Dom0 which failed to remove the VFs during PF removal might later
> "remember" that it still needs to report VFs removed. I for one doubt that.

This matches my observations: you're right, it most likely won't. I had
just written it in a misleading way in the commit message. Re-adding
should not occur until after VFs and PF have been removed in non-buggy
scenarios.

A PF driver that fails to disable SR-IOV (i.e remove VFs) during PF
removal is buggy, and would lead to issues inside dom0 as well due to
the orphaned/stale VF left behind in Linux dom0 itself. As mentioned in
patch #1, Linux warns about this:

[  100.000000]  0000:01:00.0: driver left SR-IOV enabled after remove

With the PF<->VF links in place, we now also have the ability to detect
and warn about this potentially buggy condition in Xen. I have so far
only observed VF-then-PF removal order in non-buggy scenarios. My only
hesitation with adding such a warning in Xen is that I don't know
whether removing in PF-then-VF order is legitimate.

In the previous rev I had Xen removing the VFs during PF removal. In
this rev, I chose to continue to rely on dom0 to remove VFs because:
  1. This is the expected behavior as far as I can tell.
  2. It more accurately mirrors the state of the VFs and PFs in dom0 and
     Xen.
  3. No need to consider special cases when xsm has different policies
     for PF and VF removal operations.

Perhaps the last sentence would be better written as:
"The hardware domain is expected to remove the associated VFs before
removing the PF. Print a warning in case a PF is removed with associated
VFs still present."

Or, not implying any removal order:
"If the PF is removed, the hardware domain is expected to also remove
the associated VFs."

I'm personally leaning toward not implying any removal order (i.e. same
situation as before this patch).

>> @@ -703,7 +696,44 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>           * extended function.
>>           */
>>          if ( pdev->info.is_virtfn )
>> -            pdev->info.is_extfn = pf_is_extfn;
>> +        {
>> +            struct pci_dev *pf_pdev;
>> +
>> +            pf_pdev = pci_get_pdev(NULL,
>> +                                   PCI_SBDF(seg, info->physfn.bus,
>> +                                            info->physfn.devfn));
>> +
>> +            if ( !pf_pdev )
>> +            {
>> +                ret = pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
>> +                                     NULL, node);
>> +                if ( ret )
>> +                {
>> +                    printk(XENLOG_WARNING "Failed to add SR-IOV device PF %pp for VF %pp\n",
>> +                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
>> +                           &pdev->sbdf);
>> +                    free_pdev(pseg, pdev);
>> +                    goto out;
>> +                }
>> +                pf_pdev = pci_get_pdev(NULL,
>> +                                       PCI_SBDF(seg, info->physfn.bus,
>> +                                                info->physfn.devfn));
>> +                if ( !pf_pdev )
>> +                {
>> +                    ASSERT_UNREACHABLE();
>> +                    printk(XENLOG_ERR "Failed to find SR-IOV device PF %pp for VF %pp\n",
>> +                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
>> +                           &pdev->sbdf);
>> +                    free_pdev(pseg, pdev);
>> +                    ret = -EILSEQ;
>> +                    goto out;
> 
> Might be helpful to have the printk() ahead of the ASSERT_UNREACHABLE(), in the
> unlikely event that the assertion would actually trigger.

Agreed.

> Positioning doesn't
> make a difference for release builds anyway.
> 
> Jan



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 17:43:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 17:43:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820221.1233683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1834-0008GT-NI; Wed, 16 Oct 2024 17:43:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820221.1233683; Wed, 16 Oct 2024 17:43: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 1t1834-0008GM-Jz; Wed, 16 Oct 2024 17:43:02 +0000
Received: by outflank-mailman (input) for mailman id 820221;
 Wed, 16 Oct 2024 17:43:01 +0000
Received: from [94.247.172.50] (helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LXVN=RM=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t1833-0008GG-7y
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 17:43:01 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20627.outbound.protection.outlook.com
 [2a01:111:f403:2414::627])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0eba9faf-8be6-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 19:42:48 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by SN7PR12MB6716.namprd12.prod.outlook.com (2603:10b6:806:270::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Wed, 16 Oct
 2024 17:42:44 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8048.020; Wed, 16 Oct 2024
 17:42: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: 0eba9faf-8be6-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=edWhj7MBKobnpwVagVB9RjFAfwlqPZ9dw9aBR5cTjuT373vIKE+mIDoUyJbwZSSh0h4DHrrQZPyjwMvWsQnF966UWpgwf1YXJEHWO53IAeqlmtUtSIivfAm2e1hO1iNnK7MIodKR7NYknIILnJ4umB+5JVnI1BHeQp4HwCjmtOUvYg84CZ5nVMcQmsX5PjdtBiyBVeH9fUBwwqQVtR8mMQFDIqXLmPR1djtD7NCTUH3jbl1LsgCXjmTS8uy1kHnM6956SzAT1hcFy7vD2XPT0pT8ToOYBGjQjrnt9+AZPSCgTLpu4cq4lEn1Jr4EJT4g/gqZIl5/9So3zC0aFcQXJA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=5tiU8HcXMw+ObXoFqp4xcwDh6lxWzDgGzNIFyAG6ECA=;
 b=QRRTtYCHB0SK0wGmK4WiJIf3Arblks87NiUd8q4LT2yz414cCq0rRLbJNjux1viMpXAllPJVmoY9s1YhFI4yzUvv7Z06NsMtKz8iYcSpLAc/r3D9BBn2OCgFS2O49p5xncCRRe4mDX144oAtmdB/tDXOXSRhYWqlQ6mysVUnB68LY98FPx5atpJYiqHUNxMySu8fKJJQI24WXO1UEBZIj/q/qKYkEfh0SCgGQ655bvDYUO54VzZmggfV3vArdnLGFUhEUL3bfLyYcp3fbd7MfE/ktY3LBnuA/8jOul0v6wEar/6XHh46LzeSOjGQNKOLz3t1lPB5bOWbtrwQsU7ydg==
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=5tiU8HcXMw+ObXoFqp4xcwDh6lxWzDgGzNIFyAG6ECA=;
 b=xgokbgL6TB5mNdBqZVNcpvId9D3so3uE2U9ALjLgIIilRKVUF85TPNvDtni9QROjzyLc64ULrzMdYtA21slG9kDmTxopayAbe6Pbr+0/eEScIrR0BSCkuwmAkwdmG54GKIvdm6sxkbSdTiZjlerHqjrrRHRBji+elJT7Dp+mvJg=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <a7e653d7-f0e5-44ee-b860-28e4bf64c7fd@amd.com>
Date: Wed, 16 Oct 2024 18:42:38 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
To: Julien Grall <julien@xen.org>, Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
 <4BFB5897-2C7A-4A44-B9E9-01BB7940BFF7@arm.com>
 <3d0327bf-3f1c-44e6-9782-5715365b2253@amd.com>
 <b35816e4-9915-482f-a2e7-b8abacce77d8@xen.org>
Content-Language: en-GB
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <b35816e4-9915-482f-a2e7-b8abacce77d8@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0474.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:1a8::11) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|SN7PR12MB6716:EE_
X-MS-Office365-Filtering-Correlation-Id: 02525e69-4f00-4c87-2e48-08dcee09f08e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?SzJqSWhsUGh4VFZ6TkJLdzYyaFc0VkZlbkpqSzV6YUptNVZjVUtCSExGVmYx?=
 =?utf-8?B?OW1sL0NBRmY1aytsVnB6YVV0SW1pbllyVkNLY2x1MU9uZDNCbTVrQzBEOE1o?=
 =?utf-8?B?RVZDSFR3S01Ga3hMK1M4MW1TNWRDVE9Gb0gzenVqTXFmRHpyYWQrMkJBNElr?=
 =?utf-8?B?djZEbW5vbmprdGg4RmdZdng4OWRGeTdMTis5NlBhRVZYR09XVlhTVkVPN2d6?=
 =?utf-8?B?bkRUV1ZHWE11NitRTUtuMnk1RmUya3BQdzlrU1BVb29BMHVNQWd2T3Q5c3Vu?=
 =?utf-8?B?d0RZbE5BTkR3WFpwdHdUTFhqenpVK0o0Y1lsMmhnUGdYOTdZWFNBamNISlV4?=
 =?utf-8?B?K051UTZ3RmxNd09haGM2QTBZNis2TWR4L01CMTRKcE5sVENaZFFkSTR1TnFI?=
 =?utf-8?B?RFozSlozTHhZVWpSUjdmZlpFWU9NN0k2YXpVY2U1dmVWc3lGRHRjZkpWeTBI?=
 =?utf-8?B?U1hnNVYraGxIVktPcVVFcTZtQWpDb2xEdy9LRzRRb0ZXV2lCN0xYcThDWEhp?=
 =?utf-8?B?TjV0TDRnUm9QVUFsOUZZdGdLb0U1cmRRWnNYUkQwaVJ3d1N4a3NqdEowSDd2?=
 =?utf-8?B?VC83akpVQkxaY25tUE9od01lOHEwK1hjbjBMclRhdVJzR2pKaXZCSk9NZXdu?=
 =?utf-8?B?QTVURkRaVStiTERqa0N6NHZIVktzK25jOVU0V29VZlFmdHJLaERXdllQOTlB?=
 =?utf-8?B?aVJtem84OTRPU1NMWXNFMFZOM3EzMVd2MWNxcmxxc2hxS3lWemhZaktlekNX?=
 =?utf-8?B?WWp1b2VHdGg2eEFRU0RJdll5cmF2RWQ1N2QvS0h2M2tZUzBPeXlWUllXbHFJ?=
 =?utf-8?B?alBGZ0FPOGg5UEZ2Q2xMaW9UazlmS2VRTE9oTkZKQ1pnQkJaZFFrcU05NHB1?=
 =?utf-8?B?RWliRnB6OEg4ZyttNEpNUnJWUVNrTjFsZnNiQWRsNUNZYTZycUg0SXhKSmdw?=
 =?utf-8?B?UkdYb05VZzlEZDljVnN0WmN3dVRJYkJHTVplRktwTFFpSG0rNmt6L3dheXo4?=
 =?utf-8?B?SFRMZ2ZuMHpLcFpTS0NuTkgxdHVRcmJtVmJ2QW56VXNaQ3FmWHMxY0VGNkQ4?=
 =?utf-8?B?NjFzQ2N0NXl3anpFdlNIaklvWG91Tm9tQmo4REZnOHBvODd5NURkVmRnUEcx?=
 =?utf-8?B?SEhWQjYvTWJKUy9ORlErc3pzRWRpRjNZTFJuVlZYVjRiS3YrN3lJd1ZCNEFu?=
 =?utf-8?B?QjdMeXlMc2VheE03NDFEd1hkTCtQWTNxMTJRdWJwcWFUWjZtaDNmSzUxWGNX?=
 =?utf-8?B?eDc3bTBJOUhqaHcyUmp2SjRyWXdPM2syWHpsaHlBTlVDUitnVUNsMmUyalNJ?=
 =?utf-8?B?S1hhVXVCOTgwejJsa1B0ZWYxdzYxOWVON2Y1RHFSY3JXb0Zyd1d1RHNERlJS?=
 =?utf-8?B?QjhvRWd5SnlUQlhQcStFbkZPNk1EWEtqWkdWcnAyTnBRa0RjWHlrcUJ2a0lN?=
 =?utf-8?B?ajk4cW52aENWUUR3WUw5QzZsblBqZDBsc20rSGtSaW9xRXFVQ1V1ZHU4a1Qr?=
 =?utf-8?B?YlhVUUVjbGtReTFZSkFsUUgrVlNzN0c0Z1ZPZ01qSXlDaWF2bGdwbVNNRCty?=
 =?utf-8?B?ekwzZnkzWm1hY2plREQ2Y1BiREdycUVLZkdYdlBzMGx4YUNBdWcwYnBKOExi?=
 =?utf-8?B?Qk15a1pWRWpNdWJndlVpY1NUQ1pVTlFhb2l4N3cxY0NSeTN0alIvRWpHVm9E?=
 =?utf-8?B?cnlkV0RwM01iK1lxaW1KdVQ3dmYzV3hGSlNxaTRUZFVWa0Z6Sk9kOHlnPT0=?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WnVwaXdST1pXQ0c1Qnc0dUZyOUk2Q2VWeTNzcDhYZ3Q3MEV2Q1JUd2dDcmxz?=
 =?utf-8?B?bFh0aWpWWmxJQXFnZG1IZENDMkZ0ZTJ0b0N4U0FKaGordUN0bjBRRDM1endU?=
 =?utf-8?B?anJjM2tQUGorTDU2NkNwSkpyN3dzZENHQTJoL0dzNWRGaVg4OGxnMUE5UE42?=
 =?utf-8?B?TDRncjlTUUtMWUQ5TlY2MlFCdjZYMnBDQmtHWFdBMTBiTXk5aE1Kc0lzQ3NT?=
 =?utf-8?B?ZlVYa1pIa3lObFlHajFVUzI1a3JRWHBzSVg0YWxTQnlsMnNibUdMNkhEWEND?=
 =?utf-8?B?U0JOM0tGWHNqL2JRSWRNTU9xYkR2VXhQOTBMRnR5QW1SOTIwU0xxY0pyQWdn?=
 =?utf-8?B?V0xLVThnZGZWUEV0dHpOL0dvVUo0NmtSUWtlbUVhS3poVjdieGtwWFA3eHhn?=
 =?utf-8?B?Zmk4TnN0OFlGR3FpVzJmWkFVU3RoeDlsa0hEd3kxMm1uMHBmdVltU3BFNkc3?=
 =?utf-8?B?c2ZXVDM5Tkp2amtYV1VwWlQyK0hJK1VJUVhoRU4wUGltWi85L0UyQUhuMExZ?=
 =?utf-8?B?bmhGRHN6Vy92bTBQMEcyWkthUXBmWUUwWHdMaDIvUW5IQnNmV0Y4eFlSWlAw?=
 =?utf-8?B?Y2c5eGFXa0wvenFxcXJKcVljOHNjb08wSEpmbzlRdGJUaVhVakF4OVc3c01k?=
 =?utf-8?B?ZDk1SEhXWlUxY2thZDJDTitqSEVBZkhGQnZtbytsQjNXUTVGRkVWbzFucE0r?=
 =?utf-8?B?eTM0ZnB3ZStPUjNEb3QyUFllTnRoMENEc0FXYWlMSTlzeGxPS29QQ0REbXJN?=
 =?utf-8?B?MVhFUEswYlZDNVRNMkxhUmlUVlh1by9UYTNqQ0lmemEzbjBZNVFpMDlQTGM0?=
 =?utf-8?B?aUZYL1NMczhMZ0hrVGZKdDdQS29hdDVMVFd5dGtJVjBWYUljajlPMlVwMlFp?=
 =?utf-8?B?ZEFZUGFkZ1dKNSs0aWpxUmpJUHVpY2ZnNHlTMW5yL2JLYTF5UmRTN3RUWFRW?=
 =?utf-8?B?dlVpZzN4UysxaXRyd1VYcno0SmZhUHVDaW9iUmMvMTNiSHA5OGF6WnRVRnBx?=
 =?utf-8?B?dFlzK2Fic0hyd2xsMUZTVEVmbE5RWEpLcFFGTzJEejlHSkhMbTJZcEpKQ21X?=
 =?utf-8?B?VlpjcnprRnQvWWRCdTZXUXUxSEp6L1AyZXNldE82Y0VHQjRJRDNKL0FqZGdV?=
 =?utf-8?B?VzgvcjBpSnM1YlJHd0RhbENzWUxMcVcvYTNDbEszTjBHNzUvdUNQdnZTTDdY?=
 =?utf-8?B?TmIybUFNVUh3amNoUk1MRnVHMDdCU3JqVTFKRUl6WWQ3QW50Y0xwRU1SUUxx?=
 =?utf-8?B?TmVTN1ora1Nwc1Y2Y3RvbG51cU9lZlZXKzVDTEpCOU5tMkFOVStnbktDRzZF?=
 =?utf-8?B?bVlUckFMT1ducW1tYVBhYUIyZVlyMm9sakpHR0dqTHBFL2VkMHZBSWZsejRa?=
 =?utf-8?B?c29mdG1OMlNjZWo0NkV3d3N5VjdlM2diejFVZUxNb1dnUjBYZjlFN29EM0tI?=
 =?utf-8?B?TU01Q2hlL0Mzd3VFQUhWU2hERmR5N0JsQkRrTmpQVzMzL1E2S0lvbm9xZERH?=
 =?utf-8?B?QVJ1d3ZDNTN0Mkh0N0JIbS8vVXhHb0tKS3oxTExuTGdFYUh5blZwd01UTkt4?=
 =?utf-8?B?aENuR3J5cERVMHV6aUE3bjVMUXNPSjh5dlIwNnVjb3dwa1pUUjVWc1pCaHUx?=
 =?utf-8?B?a096RkVNQTdlKzFsR1ExQ3Q0cStyRitCcFhDRjA0OUlEMHQrcWkrZ3ZiSW8w?=
 =?utf-8?B?Nzg5Q3p5U3JPOU5GU1lmTjMvSUpTeERFelU5UEVWdUhEY01wTEFnbG9YS3Rz?=
 =?utf-8?B?VnZ1WWpocERZRm00WVRyd0pMUVFpdkpYb0doVk82eE4wWjFwTi9OR2xuanR1?=
 =?utf-8?B?ZmRxaWJFU0Rpc0tpUEp4MWxXcVh2QUVDY1l1UDllWnh1QkdEMDRpSW1qSXJa?=
 =?utf-8?B?UWV6cC8rR05yWmZVMk1VRFVzUDUyZHRoZjNYeHJYVTZqWkJEYmg2SVBmTzdO?=
 =?utf-8?B?eEpOUGd1cGtpTlFlM1dvWmY5b01td3owUWFRQjFCQ2FJZWpNbmVRYjVoWFQ3?=
 =?utf-8?B?NzRnejdvN3REb0NmbkZvOXNGRWV6ZVYrb2U5OVVrMWUxY3hjTkkxSDdMQXVa?=
 =?utf-8?B?OGsvSlBIVy9zZ2J3ZVNvbTZDSnVLQlJLSWtBZWhYUlBoeDJlM2xIRUFWQUp4?=
 =?utf-8?Q?ET5WsjcLCM+oKhz7vNMDar226?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 02525e69-4f00-4c87-2e48-08dcee09f08e
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2024 17:42:44.0212
 (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: AF4DXqXFY4hhFi2kqOgKry0D7wTRS7lAtCcGpDu9jV5C10F1N+xLUTJSvy3fTq0OxqY3zJxOWy3hYo+flN71YQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6716


On 15/10/2024 17:51, Julien Grall wrote:
> Hi Ayan,
Hi Julien,
>
> On 15/10/2024 16:56, Ayan Kumar Halder wrote:
>>
>> On 14/10/2024 20:03, Luca Fancellu wrote:
>>> Hi Ayan,
>> Hi Luca,
>>>
>>>
>>>> diff --git a/xen/arch/arm/arm64/mpu/head.S 
>>>> b/xen/arch/arm/arm64/mpu/ head.S
>>>> new file mode 100644
>>>> index 0000000000..4a21bc815c
>>>> --- /dev/null
>>>> +++ b/xen/arch/arm/arm64/mpu/head.S
>>>> @@ -0,0 +1,130 @@
>>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>>> +/*
>>>> + * Start-of-day code for an Armv8-R MPU system.
>>>> + */
>>>> +
>>>> +#include <asm/mm.h>
>>>> +#include <asm/arm64/mpu/sysregs.h>
>>>> +
>>>> +#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
>>>> +#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
>>> NIT alignment
>> Ack
>>>
>>>> +#define REGION_DATA_PRBAR 0x32    /* SH=11 AP=00 XN=10 */
>>>> +
>>>> +#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
>>>> +
>>>> +/*
>>>> + * Macro to prepare and set a EL2 MPU memory region.
>>>> + * We will also create an according MPU memory region entry, which
>>>> + * is a structure of pr_t,  in table \prmap.
>>>> + *
>>>> + * Inputs:
>>>> + * sel:         region selector
>>>> + * base:        reg storing base address (should be page-aligned)
>>>> + * limit:       reg storing limit address
>>>> + * prbar:       store computed PRBAR_EL2 value
>>>> + * prlar:       store computed PRLAR_EL2 value
>>>> + * maxcount:    maximum number of EL2 regions supported
>>>> + * attr_prbar:  PRBAR_EL2-related memory attributes. If not 
>>>> specified it will be
>>>> + *              REGION_DATA_PRBAR
>>>> + * attr_prlar:  PRLAR_EL2-related memory attributes. If not 
>>>> specified it will be
>>>> + *              REGION_NORMAL_PRLAR
>>>> + */
>>>> +.macro prepare_xen_region, sel, base, limit, prbar, prlar, 
>>>> maxcount, attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
>>>> +
>>>> +    /* Check if the number of regions exceeded the count specified 
>>>> in MPUIR_EL2 */
>>>> +    add   \sel, \sel, #1
>>> I think there is an issue adding 1 here, because the very first 
>>> region we are going to fill will be the 1st even if we intended the 
>>> 0th.
>>> Probably moving this one at the end will fix the issue
>>
>> We are also using 'sel' to compare against the maximum number of 
>> regions supported. So, for the first region it needs to be 1 
>> otherwise there is a risk of comparing 0 (ie first region) with 0 
>> (max supported regions).
>>
>> May be what I can do is ...
>>
>>>
>>>> +    cmp   \sel, \maxcount
>>>> +    bgt   fail
>>>> +
>>>> +    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
>>>> +    and   \base, \base, #MPU_REGION_MASK
>>>> +    mov   \prbar, #\attr_prbar
>>>> +    orr   \prbar, \prbar, \base
>>>> +
>>>> +    /* Limit address should be inclusive */
>>>> +    sub   \limit, \limit, #1
>>>> +    and   \limit, \limit, #MPU_REGION_MASK
>>>> +    mov   \prlar, #\attr_prlar
>>>> +    orr   \prlar, \prlar, \limit
>>>> +
>>
>> /* Regions should start from 0 */
>>
>> sub     \sel, \sel, #1
>
> I didn't review the full patch yet. But couldn't we use ``bge``? This 
> would cover "maxcount == 0" and avoid to increment and then decrement 
> \sel.

Oh yes. My bad , I missed this.

- Ayan



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 19:28:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 19:28:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820243.1233704 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t19hB-0004fC-4I; Wed, 16 Oct 2024 19:28:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820243.1233704; Wed, 16 Oct 2024 19:28: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 1t19hB-0004f3-1h; Wed, 16 Oct 2024 19:28:33 +0000
Received: by outflank-mailman (input) for mailman id 820243;
 Wed, 16 Oct 2024 19:28: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 1t19hA-0004et-I2; Wed, 16 Oct 2024 19:28: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 1t19hA-0002As-Ef; Wed, 16 Oct 2024 19:28: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 1t19hA-0003wQ-1G; Wed, 16 Oct 2024 19:28:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t19hA-0007CN-0k; Wed, 16 Oct 2024 19:28: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=S6kAXuVEzezhtZ8l5rAEzuvF0JFOyXqzsGGZXiv4vH0=; b=rn10mZQjKvs4XShaJCAIfHLjB+
	0dcvPxmYWwNJw2Ec3caSd6rLzoMBFLKllIssUEcLZ28zWhUd7h7sQemMFdB+Ym+loCw0JZ8lo7k6+
	hBd2nJsSIrGRBgpCqR7RnzYaUQp8OVmJetMJW7n4EcRcF9BeIDLuzgu9gKV7tiBvkASA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188110-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188110: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:regression
    xen-unstable:build-armhf:xen-build:fail:regression
    xen-unstable:build-armhf-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-examine:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx: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-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-qcow2:migrate-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-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
X-Osstest-Versions-This:
    xen=47990ecef286606794d607d4ca8703d71c98d659
X-Osstest-Versions-That:
    xen=3f6ee3db2e878398cfcde725399b4d1b04e92269
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 19:28:32 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail REGR. vs. 188095
 build-armhf                   6 xen-build                fail REGR. vs. 188095

Tests which did not succeed, but are not blocking:
 build-armhf-libvirt           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-rtds      1 build-check(1)               blocked  n/a
 test-armhf-armhf-examine      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt-vhd  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-arndale   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit1   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit2   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-multivcpu  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-qcow2     1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-raw       1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188095
 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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-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

version targeted for testing:
 xen                  47990ecef286606794d607d4ca8703d71c98d659
baseline version:
 xen                  3f6ee3db2e878398cfcde725399b4d1b04e92269

Last test of basis   188095  2024-10-15 16:39:00 Z    1 days
Testing same since   188110  2024-10-16 05:31:45 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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                                                  fail    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          blocked 
 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                                          blocked 
 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                                 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                  blocked 
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  blocked 
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  blocked 
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     blocked 
 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                                     blocked 
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                blocked 
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    blocked 
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-raw                                      blocked 
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     blocked 
 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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 blocked 
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 47990ecef286606794d607d4ca8703d71c98d659
Author: Frediano Ziglio <frediano.ziglio@cloud.com>
Date:   Tue Oct 15 09:25:13 2024 +0100

    x86/boot: Improve MBI2 structure check
    
    Tag structure should contain at least the tag header.
    Entire tag structure must be contained inside MBI2 data.
    
    Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

commit f4c3300d88189ab18b6459e22e1aa945ab1d3f6f
Author: Frediano Ziglio <frediano.ziglio@cloud.com>
Date:   Tue Oct 15 09:25:12 2024 +0100

    x86/boot: Align mbi2.c stack to 16 bytes
    
    Most of Xen is built with a stack alignment of 8 bytes, but the UEFI spec
    mandates 16 and UEFI services will fault if the stack is misaligned.
    
    While the caller of efi_multiboot2_prelude() takes care to align the stack,
    mbi2.c accidentally got the Xen-wide default of 8, and has a 50% chance of
    crashing depending on how many variables the compiler decided to spill to the
    stack.
    
    Compile mbi2.c with the appropriate alignment for UEFI functionality.
    
    Also take the opportunity to make it a fully .init object.
    
    Fixes: eb21ce14d709 ('x86/boot: Rewrite EFI/MBI2 code partly in C')
    Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    [rewrite the commit message]
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 19:49:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 19:49:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820293.1233734 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1A1I-0000Pp-83; Wed, 16 Oct 2024 19:49:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820293.1233734; Wed, 16 Oct 2024 19: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 1t1A1I-0000Pi-4k; Wed, 16 Oct 2024 19:49:20 +0000
Received: by outflank-mailman (input) for mailman id 820293;
 Wed, 16 Oct 2024 19: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=/r4l=RM=omp.ru=s.shtylyov@srs-se1.protection.inumbo.net>)
 id 1t1A1G-0000PY-Sb
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 19:49:18 +0000
Received: from mx01.omp.ru (mx01.omp.ru [90.154.21.10])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b9586d39-8bf7-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 21:49:16 +0200 (CEST)
Received: from [192.168.2.102] (213.87.153.89) by msexch01.omp.ru
 (10.188.4.12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.2.1258.12; Wed, 16 Oct
 2024 22:49:04 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9586d39-8bf7-11ef-99a3-01e77a169b0f
Message-ID: <a32f0891-936b-4cce-a874-78b1865717ae@omp.ru>
Date: Wed, 16 Oct 2024 22:49:02 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 09/13] ata: Use always-managed version of pci_intx()
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
	<dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, Basavaraj Natikar
	<basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>, Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
	<manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric Dumazet
	<edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo Abeni
	<pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
	<GR-Linux-NIC-Dev@marvell.com>, Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
	<Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
	<dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
	<bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>, Juergen
 Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela
	<perex@perex.cz>, Takashi Iwai <tiwai@suse.com>, Chen Ni
	<nichen@iscas.ac.cn>, Mario Limonciello <mario.limonciello@amd.com>, Ricky Wu
	<ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao
	<leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>, Thomas Gleixner
	<tglx@linutronix.de>, =?UTF-8?Q?Ilpo_J=C3=A4rvinen?=
	<ilpo.jarvinen@linux.intel.com>, Andy Shevchenko
	<andriy.shevchenko@linux.intel.com>, Mostafa Saleh <smostafa@google.com>,
	Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>, Christian
 Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>, Eric Auger
	<eric.auger@redhat.com>, Reinette Chatre <reinette.chatre@intel.com>, Ye Bin
	<yebin10@huawei.com>, =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Pierre-Louis Bossart
	<pierre-louis.bossart@linux.dev>, Peter Ujfalusi
	<peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
	<maarten.lankhorst@linux.intel.com>, Kai Vehmanen
	<kai.vehmanen@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>
CC: <linux-ide@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-input@vger.kernel.org>, <netdev@vger.kernel.org>,
	<linux-wireless@vger.kernel.org>, <ntb@lists.linux.dev>,
	<linux-pci@vger.kernel.org>, <kvm@vger.kernel.org>,
	<xen-devel@lists.xenproject.org>, <linux-sound@vger.kernel.org>
References: <20241015185124.64726-1-pstanner@redhat.com>
 <20241015185124.64726-10-pstanner@redhat.com>
Content-Language: en-US
From: Sergey Shtylyov <s.shtylyov@omp.ru>
Organization: Open Mobile Platform
In-Reply-To: <20241015185124.64726-10-pstanner@redhat.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [213.87.153.89]
X-ClientProxiedBy: msexch01.omp.ru (10.188.4.12) To msexch01.omp.ru
 (10.188.4.12)
X-KSE-ServerInfo: msexch01.omp.ru, 9
X-KSE-AntiSpam-Interceptor-Info: scan successful
X-KSE-AntiSpam-Version: 6.1.0, Database issued on: 10/16/2024 19:30:03
X-KSE-AntiSpam-Status: KAS_STATUS_NOT_DETECTED
X-KSE-AntiSpam-Method: none
X-KSE-AntiSpam-Rate: 19
X-KSE-AntiSpam-Info: Lua profiles 188488 [Oct 16 2024]
X-KSE-AntiSpam-Info: Version: 6.1.0.4
X-KSE-AntiSpam-Info: Envelope from: s.shtylyov@omp.ru
X-KSE-AntiSpam-Info: LuaCore: 39 0.3.39
 e168d0b3ce73b485ab2648dd465313add1404cce
X-KSE-AntiSpam-Info: {rep_avail}
X-KSE-AntiSpam-Info: {Tracking_from_domain_doesnt_match_to}
X-KSE-AntiSpam-Info: {SMTP from is not routable}
X-KSE-AntiSpam-Info: {Found in DNSBL: 213.87.153.89 in (user)
 b.barracudacentral.org}
X-KSE-AntiSpam-Info: {Found in DNSBL: 213.87.153.89 in (user)
 dbl.spamhaus.org}
X-KSE-AntiSpam-Info:
	omp.ru:7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;127.0.0.199:7.1.2
X-KSE-AntiSpam-Info: FromAlignment: s
X-KSE-AntiSpam-Info: ApMailHostAddress: 213.87.153.89
X-KSE-AntiSpam-Info: {DNS response errors}
X-KSE-AntiSpam-Info: Rate: 19
X-KSE-AntiSpam-Info: Status: not_detected
X-KSE-AntiSpam-Info: Method: none
X-KSE-AntiSpam-Info: Auth:dmarc=temperror header.from=omp.ru;spf=temperror
 smtp.mailfrom=omp.ru;dkim=none
X-KSE-Antiphishing-Info: Clean
X-KSE-Antiphishing-ScanningType: Heuristic
X-KSE-Antiphishing-Method: None
X-KSE-Antiphishing-Bases: 10/16/2024 19:34:00
X-KSE-Antivirus-Interceptor-Info: scan successful
X-KSE-Antivirus-Info: Clean, bases: 10/16/2024 5:04:00 PM
X-KSE-Attachment-Filter-Triggered-Rules: Clean
X-KSE-Attachment-Filter-Triggered-Filters: Clean
X-KSE-BulkMessagesFiltering-Scan-Result: InTheLimit

On 10/15/24 9:51 PM, Philipp Stanner wrote:

> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> All users in ata enable their PCI-Device with pcim_enable_device(). Thus,
> they need the always-managed version.
> 
> Replace pci_intx() with pcim_intx().
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>

Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>

[...]

MBR, Sergey



From xen-devel-bounces@lists.xenproject.org Wed Oct 16 19:54:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 19:54:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820299.1233743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1A5y-00024U-NI; Wed, 16 Oct 2024 19:54:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820299.1233743; Wed, 16 Oct 2024 19:54: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 1t1A5y-00024N-Kl; Wed, 16 Oct 2024 19:54:10 +0000
Received: by outflank-mailman (input) for mailman id 820299;
 Wed, 16 Oct 2024 19:54: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=OxVE=RM=dingwall.me.uk=james@srs-se1.protection.inumbo.net>)
 id 1t1A5w-00024B-M3
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 19:54:08 +0000
Received: from smarthost01c.ixn.mail.zen.net.uk
 (smarthost01c.ixn.mail.zen.net.uk [212.23.1.22])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 65d8a6d2-8bf8-11ef-99a3-01e77a169b0f;
 Wed, 16 Oct 2024 21:54:05 +0200 (CEST)
Received: from [217.155.64.189] (helo=mail0.xen.dingwall.me.uk)
 by smarthost01c.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 1t1A5q-00FqPA-ST
 for xen-devel@lists.xenproject.org; Wed, 16 Oct 2024 19:54:04 +0000
Received: from localhost (localhost [IPv6:::1])
 by mail0.xen.dingwall.me.uk (Postfix) with ESMTP id 1AAB8AF1E94
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 20:54:04 +0100 (BST)
Received: from mail0.xen.dingwall.me.uk ([IPv6:::1])
 by localhost (mail0.xen.dingwall.me.uk [IPv6:::1]) (amavisd-new, port 10024)
 with ESMTP id 6VBz4ljSGv2m for <xen-devel@lists.xenproject.org>;
 Wed, 16 Oct 2024 20:54:03 +0100 (BST)
Received: from ghoul.dingwall.me.uk (ghoul.dingwall.me.uk [192.168.1.200])
 by dingwall.me.uk (Postfix) with ESMTP id DDBECAF1E91
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 20:54:03 +0100 (BST)
Received: by ghoul.dingwall.me.uk (Postfix, from userid 1000)
 id C77CD2B8; Wed, 16 Oct 2024 20:54:03 +0100 (BST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 65d8a6d2-8bf8-11ef-99a3-01e77a169b0f
X-Virus-Scanned: Debian amavisd-new at dingwall.me.uk
Date: Wed, 16 Oct 2024 20:54:03 +0100
From: James Dingwall <james-xen@dingwall.me.uk>
To: xen-devel@lists.xenproject.org
Subject: dm_restrict=1 bios='ovmf' boot='d': can't boot from .iso image
Message-ID: <ZxAZ255dNHLjWwUE@dingwall.me.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Originating-smarthost01c-IP: [217.155.64.189]
Feedback-ID: 217.155.64.189

Hi,

We've encountered a problem booting an 'ovmf' hvm instance from a .iso
image when dm_restrict=1.  The deprivileged qemu process can't connect
the .iso and in the qemu-dm .log:

qemu-system-i386: failed to create 'qdisk' device '5632': realization of device xen-cdrom failed: failed xs_open: No such file or directory

The problem is the qemu process is unable to open /dev/xen/{xenbus,
evtchn,gntdev}.  If I make those 0666 then no problem but that isn't
a permanent solution so currently we do dm_restrict=0 when
necessary.  If bios='seabios' then there is no need for any workaround.
Are there any suggestions on alternative ways we could look at
working out a solution?

Xen version is 4.18.3 with qemu built from the associated tag.  We do have
some local patches but I don't think any would interfere with this.

Thanks,
James


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 20:04:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 20:04:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820308.1233756 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1AFT-00042T-KZ; Wed, 16 Oct 2024 20:03:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820308.1233756; Wed, 16 Oct 2024 20:03: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 1t1AFT-00042M-Hy; Wed, 16 Oct 2024 20:03:59 +0000
Received: by outflank-mailman (input) for mailman id 820308;
 Wed, 16 Oct 2024 20:03: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 1t1AFS-00042A-Gc; Wed, 16 Oct 2024 20:03: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 1t1AFS-0003Mo-Ed; Wed, 16 Oct 2024 20:03: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 1t1AFS-0004vU-57; Wed, 16 Oct 2024 20:03:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1AFS-0002K0-4X; Wed, 16 Oct 2024 20:03: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=QEVYq2rf5mHMpSoyeb0BdQY7KvOpR6okWyg0Z5GaS2A=; b=e68XZJE0yBiTHy+edENLubgWq4
	MFzquX8Ikvr5uyokigHDyu4WryUGW6Qlxh7cPDoUKbP+YWdyTh231OFCIrX3CDY3UozpgibePto/j
	eoEgWCo7ecClbc2ol1sXXHVF9twUZJ4TqdqMdCpiI1L3Zo5MzImbC9f2RhsnS2BFyDaI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188125-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188125: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=1b19ccfdfa0a6eeecfcb8fcccf5437150ca41c3e
X-Osstest-Versions-That:
    ovmf=d44b82270b6b1589cc2850fde24a3686cb5ef779
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 20:03:58 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 1b19ccfdfa0a6eeecfcb8fcccf5437150ca41c3e
baseline version:
 ovmf                 d44b82270b6b1589cc2850fde24a3686cb5ef779

Last test of basis   188114  2024-10-16 08:44:55 Z    0 days
Testing same since   188125  2024-10-16 17:42:56 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Oleg Ilyasov <olegi@ami.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    


------------------------------------------------------------
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
   d44b82270b..1b19ccfdfa  1b19ccfdfa0a6eeecfcb8fcccf5437150ca41c3e -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Oct 16 22:37:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 16 Oct 2024 22:37:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820323.1233776 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Cda-00062M-3F; Wed, 16 Oct 2024 22:37:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820323.1233776; Wed, 16 Oct 2024 22:37: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 1t1CdZ-00062F-Vm; Wed, 16 Oct 2024 22:37:01 +0000
Received: by outflank-mailman (input) for mailman id 820323;
 Wed, 16 Oct 2024 22:37: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 1t1CdY-00061z-Qi; Wed, 16 Oct 2024 22:37: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 1t1CdY-0002Ly-Ky; Wed, 16 Oct 2024 22:37: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 1t1CdY-0001XG-8c; Wed, 16 Oct 2024 22:37:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1CdY-0000XT-86; Wed, 16 Oct 2024 22:37: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=Djl1vhKqGLB3OODmcVj4Xq+4CMAyYNe4LSvm7LnPWvY=; b=6nbjynSiq1fX44fR3AJc/n4MoQ
	LRQZKcdK8IyqPewtEaChr/i9n27V/5pLO6LsNDwQLrjnuDq41Srt8vzJKET3RlpQMdMz86mtrW+Fj
	gxpwSdwR/GTR77FQZPcBkJH/fOBc23+PTLTpVq28jhXrMJY7rJJLz+52ls/ZZIYIuINY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188131-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188131: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=b7342074a649599078553e33acd6d7a79e950683
X-Osstest-Versions-That:
    ovmf=1b19ccfdfa0a6eeecfcb8fcccf5437150ca41c3e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 16 Oct 2024 22:37:00 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 b7342074a649599078553e33acd6d7a79e950683
baseline version:
 ovmf                 1b19ccfdfa0a6eeecfcb8fcccf5437150ca41c3e

Last test of basis   188125  2024-10-16 17:42:56 Z    0 days
Testing same since   188131  2024-10-16 20:12:30 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ashraf Ali S <ashraf.ali.s@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    


------------------------------------------------------------
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
   1b19ccfdfa..b7342074a6  b7342074a649599078553e33acd6d7a79e950683 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 02:54:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 02:54:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820354.1233839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1GeZ-0000Bl-8U; Thu, 17 Oct 2024 02:54:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820354.1233839; Thu, 17 Oct 2024 02: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 1t1GeZ-0000Be-5u; Thu, 17 Oct 2024 02:54:19 +0000
Received: by outflank-mailman (input) for mailman id 820354;
 Thu, 17 Oct 2024 02:54: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 1t1GeY-0000BU-9T; Thu, 17 Oct 2024 02:54: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 1t1GeY-0008Cw-6D; Thu, 17 Oct 2024 02:54: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 1t1GeX-0003IE-Qj; Thu, 17 Oct 2024 02:54:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1GeX-0004Db-QH; Thu, 17 Oct 2024 02: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=0rEfP5D9lWSrHFgdp6x5D2QorfFU7waWdmJZUbBvq8o=; b=QpILCHgUCKy29C8jy41DTPQk8D
	IquE3HmUdsJL4INz80ZZP7S0h0e6c/vDFeYB4RGeF7fMzlKes5q9dA3DwnJPgmfR6E6vrqcqagVFt
	P69/qtbqvGh+/k/x6gpVO7OoonVYBGEuQPvHMhO9Y75UTb/5ZY1kLzMbHU0+3rmEPowo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188122-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188122: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:debian-hvm-install:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=f774a677507966222624a9b2859f06ede7608100
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 02:54:17 +0000

flight 188122 qemu-mainline real [real]
flight 188140 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188122/
http://logs.test-lab.xenproject.org/osstest/logs/188140/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-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-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-amd64-amd64-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-amd64-amd64-libvirt-qcow2 14 migrate-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  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-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                f774a677507966222624a9b2859f06ede7608100
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   30 days
Failing since        187731  2024-09-17 13:11:20 Z   29 days   50 attempts
Testing same since   188101  2024-10-16 00:07:27 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandra Diupina <adiupina@astralinux.ru>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Chao Liu <chao.liu@yeah.net>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Helge Deller <deller@gmx.de>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Junjie Mao <junjie.mao@intel.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Roman Cardenas Rodriguez <rcardenas.rod@gmail.com>
  Roman Penyaev <r.peniaev@gmail.com>
  Román Cárdenas Rodríguez <rcardenas.rod@gmail.com>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  Strahinja Jankovic <strahinja.p.jankovic@gmail.com>
  Strahinja Jankovic <strahinjapjankovic@gmail.com>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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        fail    
 test-amd64-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 11295 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 05:44:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 05:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820382.1233884 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1JIo-0002EM-5H; Thu, 17 Oct 2024 05:44:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820382.1233884; Thu, 17 Oct 2024 05:44: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 1t1JIo-0002EF-0l; Thu, 17 Oct 2024 05:44:02 +0000
Received: by outflank-mailman (input) for mailman id 820382;
 Thu, 17 Oct 2024 05:44: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1JIm-0002E9-KV
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 05:44:00 +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 ce936d94-8c4a-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 07:43:59 +0200 (CEST)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-37d51055097so338738f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 16 Oct 2024 22:43:59 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c8a3:a0aa:3800:312c:4957?
 (p200300cab721c8a3a0aa3800312c4957.dip0.t-ipconnect.de.
 [2003:ca:b721:c8a3:a0aa:3800:312c:4957])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fc3d6afsm6107515f8f.99.2024.10.16.22.43.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 16 Oct 2024 22:43:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ce936d94-8c4a-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729143839; x=1729748639; 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=6zkQIIwzYIRwp+LUOZJITxncw14i1Ey5xaPR2IZVMlE=;
        b=XcSqxubPUzhwdfZehi7sy+prW3krYDwGteHRmPzZiaFWF82AEZO5oWaKDeGrcDaq/c
         eBw+YKiV0/OjPrjRyIFcMOQ9szzEZecqiWVfBHK9ITZN1zGXxYpsKE35kMsLt0BR7gya
         F+PKph0moDFI0LaCQlRD1ygnuikLpjoSEp0yHBUkSKfU6KPyJ5KdAyfsshiOjPWUwhMf
         qrWpSyKK4/DSSnUvGgSdKilL0FZSmlOI8OTHovXiE00mNYl+b4sMZA+1Pred1MvYIk6j
         3YiJa9SwLn7bZBcqyVfw7rNo6dwiO48pEHE8jQiPo0QzJO7ckMcNTQx+Y8j/BZ7yYyee
         Wjtw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729143839; x=1729748639;
        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=6zkQIIwzYIRwp+LUOZJITxncw14i1Ey5xaPR2IZVMlE=;
        b=kJF8ZBaid0+IpePgros/1zxWOv5orV0wQ5e6RO8V6IgDIy8ggSmknz0ZThVDgQJ9iV
         yGAHfKNeEkFBjIHbb60GTd0ZDF8shMGhqCGMqew2Fkt8hg4zzx3gW6F0k3E+eUh5Vbxa
         7CFQP3nBRTbLO5V8+DAMSqqjAyzaegvPn9RoyOvsl88FU2rWeZ2lLlof+/n4CZ8SJOJA
         HwRcjV+MpZGuvCATIp+XulUNrfAa5RDCWTwXilS2EHEgHMuGRgAz9uboK4KDwl9/uFxH
         S1cH56Q8AJbo3+KzVRherG249+do9vvnFoeAn8Iz/LeeWm5gfyDA7ots+1c9uhekYNwt
         1VLg==
X-Forwarded-Encrypted: i=1; AJvYcCWWqMxFQHaEF8vL/vc2bfIlvrawj8lNNZRUTzLyDAPxM+FbMCqE1wLWGArEs0aLfke+Fq7gFKeKVyg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxBmEg+SWsmiHlNA1BhqNft4Sya0ogbuv0qmtzKAVGggxd7CFWz
	gxifTyEAqC3tA0OTd9tg2LYZocWX61Q5LnvNSxF8disM9PtT3B3UjBRPBcb+zw==
X-Google-Smtp-Source: AGHT+IFZyG+hycCeH2Ah4V6tJmfldugaoHjvEPjp05+zAbUmQenrF3rMbW/RGgS1/c9tVVxmV/6mRg==
X-Received: by 2002:adf:f686:0:b0:37d:5232:a963 with SMTP id ffacd0b85a97d-37d5fef48abmr11075781f8f.14.1729143838872;
        Wed, 16 Oct 2024 22:43:58 -0700 (PDT)
Message-ID: <0f67b7b5-b309-448b-a721-aedc3c77d63e@suse.com>
Date: Thu, 17 Oct 2024 07:43:57 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] docs: update documentation of reboot param
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>
References: <20241016131813.801242-1-marmarek@invisiblethingslab.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: <20241016131813.801242-1-marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.10.2024 15:17, Marek Marczykowski-Górecki wrote:
> Reflect changed default mode, and fix formatting of `efi` value.
> 
> Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

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




From xen-devel-bounces@lists.xenproject.org Thu Oct 17 07:25:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 07:25:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820425.1233917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1KsY-0006KV-DH; Thu, 17 Oct 2024 07:25:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820425.1233917; Thu, 17 Oct 2024 07: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 1t1KsY-0006KO-AF; Thu, 17 Oct 2024 07:25:02 +0000
Received: by outflank-mailman (input) for mailman id 820425;
 Thu, 17 Oct 2024 07: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 1t1KsW-0006KE-Re; Thu, 17 Oct 2024 07:25: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 1t1KsW-0004me-Ov; Thu, 17 Oct 2024 07: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 1t1KsW-0005Il-Ep; Thu, 17 Oct 2024 07:25:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1KsW-0002bu-EF; Thu, 17 Oct 2024 07: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=+1gqToXlvbthnHamhrNCkgRSMLwyN4LaJKBAZqMQais=; b=dF7UnJ4QWdIz9UWJvLwqVV0yoS
	LKL4mlu+tbJpFj+SpQfXI9GtlMarAUE6RnDSyOhWgFM89Z3VLxuqJ5XFitDJuJ8mNAmbQBbBWMRyG
	e/d6uH7gdZSqgMaMM/anwCtiW9H2h0I2nctjaNKohja7Qc2yI20bsEfy+Pp64jv3fKq8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188128-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188128: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:xen-boot:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-qcow2:host-ping-check-xen:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-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-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx: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-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-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:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2:migrate-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-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-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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
X-Osstest-Versions-This:
    xen=47990ecef286606794d607d4ca8703d71c98d659
X-Osstest-Versions-That:
    xen=3f6ee3db2e878398cfcde725399b4d1b04e92269
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 07:25:00 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt      8 xen-boot            fail pass in 188151-retest
 test-armhf-armhf-xl-qcow2    10 host-ping-check-xen fail pass in 188151-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt 16 saverestore-support-check fail in 188151 like 188095
 test-armhf-armhf-libvirt    15 migrate-support-check fail in 188151 never pass
 test-armhf-armhf-xl-qcow2   14 migrate-support-check fail in 188151 never pass
 test-armhf-armhf-xl-qcow2 15 saverestore-support-check fail in 188151 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188095
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188095
 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-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-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-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-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-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-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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                  47990ecef286606794d607d4ca8703d71c98d659
baseline version:
 xen                  3f6ee3db2e878398cfcde725399b4d1b04e92269

Last test of basis   188095  2024-10-15 16:39:00 Z    1 days
Testing same since   188110  2024-10-16 05:31:45 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   3f6ee3db2e..47990ecef2  47990ecef286606794d607d4ca8703d71c98d659 -> master


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 07:51:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 07:51:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820438.1233933 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1LI3-0001Wy-HE; Thu, 17 Oct 2024 07:51:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820438.1233933; Thu, 17 Oct 2024 07:51: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 1t1LI3-0001Wr-EW; Thu, 17 Oct 2024 07:51:23 +0000
Received: by outflank-mailman (input) for mailman id 820438;
 Thu, 17 Oct 2024 07:51: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=fkEm=RN=kernel.org=cassel@srs-se1.protection.inumbo.net>)
 id 1t1LI1-0001Wl-BH
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 07:51:21 +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 97673cb0-8c5c-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 09:51:19 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 9115A5C56A4;
 Thu, 17 Oct 2024 07:51:12 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 65243C4CEC3;
 Thu, 17 Oct 2024 07:51: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: 97673cb0-8c5c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729151476;
	bh=S7jKXDCTV0a7mjHjenpVgcs/7uJFTwTY0Mo7sljId2E=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=nnuHR7jwc5IT9MUnpqTkftP717SgFq2tdbzrAXLJr0NNXMPwkfDRz0DOmpmLKdpfB
	 vI3dj/r0aj6unSib+Ajn75Z/dVWMfwwAZLpYTqgTPN94WoXpHKZzvx4BCkQqYmF+E5
	 sR1NtbnU+Y91mNgozQBJkBSYpH9pnxU2CjcuXGV01SwAIff4HHp3dH6d6CsWINCYJa
	 EKqLVtbTJ61f/74WcKhy8To0jm0Hrduf43nC2norZ95y8fry4OQV6dQexDDbgqGFHD
	 h/Ylk92vVrLZrg8kZjQAjS9wRS6OBoMYHYqrTeVcuOx4jHmwdkCBhDaUoptKso9F4D
	 3rAyz4IDimhmg==
Date: Thu, 17 Oct 2024 09:51:01 +0200
From: Niklas Cassel <cassel@kernel.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?utf-8?B?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH 09/13] ata: Use always-managed version of pci_intx()
Message-ID: <ZxDB5TOb-sgiZfXg@ryzen.lan>
References: <20241015185124.64726-1-pstanner@redhat.com>
 <20241015185124.64726-10-pstanner@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241015185124.64726-10-pstanner@redhat.com>

On Tue, Oct 15, 2024 at 08:51:19PM +0200, Philipp Stanner wrote:
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> All users in ata enable their PCI-Device with pcim_enable_device(). Thus,
> they need the always-managed version.
> 
> Replace pci_intx() with pcim_intx().
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> ---

Acked-by: Niklas Cassel <cassel@kernel.org>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 08:35:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 08:35:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820449.1233943 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1LyJ-00072U-Op; Thu, 17 Oct 2024 08:35:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820449.1233943; Thu, 17 Oct 2024 08:35: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 1t1LyJ-00072N-Lj; Thu, 17 Oct 2024 08:35:03 +0000
Received: by outflank-mailman (input) for mailman id 820449;
 Thu, 17 Oct 2024 08:35: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 1t1LyI-00072D-BX; Thu, 17 Oct 2024 08:35: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 1t1LyI-0006Wd-8s; Thu, 17 Oct 2024 08:35: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 1t1LyI-00075T-1x; Thu, 17 Oct 2024 08:35:02 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1LyI-00060r-1M; Thu, 17 Oct 2024 08:35: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=5ZD4eVgFQfT32b7NwYrvBE3hBT5NI1W0/yQDCwJzsSk=; b=giAf5l6UcJ9KbCJec+7Dm+HPZw
	uq1FCHwBlHZXvH2a2/XXbmj+6wUoCB4p/kVjZkKDeKUg31k7hbXDpHkjklBn1OHbKdGvUWERQ8h5Q
	9VlwM6f1t7vZlGIP5sMmfSE5YJ3/wO5tkwp9Dfwgrp7X6HcmgluxjP4dSWLis0BmV/4w=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188152-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188152: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
X-Osstest-Versions-That:
    ovmf=b7342074a649599078553e33acd6d7a79e950683
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 08:35:02 +0000

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

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7
baseline version:
 ovmf                 b7342074a649599078553e33acd6d7a79e950683

Last test of basis   188131  2024-10-16 20:12:30 Z    0 days
Testing same since   188152  2024-10-17 07:11:33 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jason1 Lin <jason1.lin@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    


------------------------------------------------------------
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
   b7342074a6..e19cc32bce  e19cc32bce466fb1c175f7d44708c2ebb45802a7 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 09:20:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 09:20:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820468.1233958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Mg8-0004bx-9X; Thu, 17 Oct 2024 09:20:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820468.1233958; Thu, 17 Oct 2024 09:20: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 1t1Mg8-0004bq-6r; Thu, 17 Oct 2024 09:20:20 +0000
Received: by outflank-mailman (input) for mailman id 820468;
 Thu, 17 Oct 2024 09:20: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1Mg6-0004bk-Fk
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 09:20:18 +0000
Received: from mail-oo1-xc31.google.com (mail-oo1-xc31.google.com
 [2607:f8b0:4864:20::c31])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 05b674cf-8c69-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 11:20:17 +0200 (CEST)
Received: by mail-oo1-xc31.google.com with SMTP id
 006d021491bc7-5e7ae4c504fso385168eaf.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 02:20:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05b674cf-8c69-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729156816; x=1729761616; 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=tRRdHUCI6TO5aNDHIH9xZe1wa7+CvVleKjs1UzB58oY=;
        b=XSinDvEC8gs/U+ddMD04Ul5dPjfOS1qZ7HvrbTjq6QORvUVebLCJtH78CCX7paauHP
         ksqDO8ErLTDsp8G78Dq0VjcHdzet1YAXXCBQsJOuzQYFPA9K7uuDrGT6fla8H/xSjcUr
         UlvBvvnnmObDn6kZV7WCAx+oGjVpzkK8jKFU4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729156816; x=1729761616;
        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=tRRdHUCI6TO5aNDHIH9xZe1wa7+CvVleKjs1UzB58oY=;
        b=ulAcNZeRJyirAkU3RDucWFljYjyF/fEhNUHzYE/L2OSOczfvkGXZubbpxaet8ZMbiT
         5Rkvy8+akbPpyp+86sV6yvwW5ONULKCwBjRxwHA/K9yWuKjvDv6YxDQ8UuHkwtPeoUoT
         atL4MVR/VrVZQ94eVfSoA/S10CCB/7XgmU1rdJ0iMzLmYl+cmWtRSnHpo6fJLgO4nqZ0
         d5+O7BayE6BYqxCtLGp760nezrWvePuHWJcgSCm/6E3LF+nsYVNCCciuwCsTG7OzUh7l
         /eOFtObVBoDKBbLXnwCmFDmcJTGuhm6IbOB6n4DHu23dlA4ekeFO22uumnIvR/GsPxFj
         AmZg==
X-Gm-Message-State: AOJu0YwgWrtt1HOrYlQLX2ViyHnBh9afrEqGPPOkfDMTuP033Jw9tJOm
	rbtmUPnWP09HbPVMAPb3wbLIrY4sxSF/mYEwxEr89azC6DNUoY3TctroqXgGWD3IkzyFlEwPWym
	L2u15Te0+8C8LQm0FRTJNpceE5fVHxKQvlm7Utw==
X-Google-Smtp-Source: AGHT+IGeALP8gUxnhZwe8KsP9uDxzavZZ8aNOkLVSMkNSLoKgZ0N37+jq1WzGBsDVhyCzrs7H+ytAXTxnBwgKJ/BPHE=
X-Received: by 2002:a4a:ee12:0:b0:5eb:6c26:1ca0 with SMTP id
 006d021491bc7-5eb6c2621aemr1693317eaf.1.1729156816096; Thu, 17 Oct 2024
 02:20:16 -0700 (PDT)
MIME-Version: 1.0
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
 <821ac8cc-a0ac-412b-8069-73c52541b70b@citrix.com> <CACHz=Zj9m2tkPPbtJuCT5g_NtDRA3iMPBzxM8R5Jxp1ofVc8oQ@mail.gmail.com>
In-Reply-To: <CACHz=Zj9m2tkPPbtJuCT5g_NtDRA3iMPBzxM8R5Jxp1ofVc8oQ@mail.gmail.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 17 Oct 2024 10:20:05 +0100
Message-ID: <CACHz=ZjvgZHvP9G382Mc2kR6PSJJnTyPY9Hf40dE7rCy734rvw@mail.gmail.com>
Subject: Re: lib32 followup (visibility issue and/or toolchain bug?)
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
	"Daniel P. Smith" <dpsmith@apertussolutions.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 Wed, Oct 16, 2024 at 3:53=E2=80=AFPM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> On Wed, Oct 16, 2024 at 2:30=E2=80=AFPM Andrew Cooper <andrew.cooper3@cit=
rix.com> wrote:
> >
> > Hello,
> >
> > Preempting some future work I'm expecting to arrive, I had a go at usin=
g
> > __builtin_*() in obj32.
> >
> > This is formed of 2 patches on top of this series:
> > https://xenbits.xen.org/gitweb/?p=3Dpeople/andrewcoop/xen.git;a=3Dshort=
log;h=3Drefs/heads/xen-lib32
> >
>
> You are confident we'll have a lot of shared code to need an
> additional "lib32" in the Makefile!
> I would personally stick with obj32.
> Note that file should be strlen.c, not strlen.32.c, otherwise you are
> possibly going to pick up the general rule and not the one in the
> Makefile (but maybe is what you wanted).
>
> > Patch 1 introduces lib32 beside obj32, with strlen() being the first
> > broken-out function, and patch 2 swaps to __builtin_strlen().
> >
> > Both compile, but the difference that patch 2 introduces was unexpected=
.
> >
> > With just lib32, and taking strsubcmp() as an example, we get:
> >
> > 00000000 <strsubcmp>:
> >    0:        83 ec 0c                 sub    $0xc,%esp
> >    3:        89 5c 24 04              mov    %ebx,0x4(%esp)
> >    7:        89 74 24 08              mov    %esi,0x8(%esp)
> >    b:        89 c6                    mov    %eax,%esi
> >    d:        89 d3                    mov    %edx,%ebx
> >    f:        89 d0                    mov    %edx,%eax
> >   11:    /-- e8 fc ff ff ff           call   12 <strsubcmp+0x12>
> >             12: R_386_PC32    strlen
> >   16:        89 c1                    mov    %eax,%ecx
> >   18:        89 da                    mov    %ebx,%edx
> >   1a:        89 f0                    mov    %esi,%eax
> >   1c:    /-- e8 fc ff ff ff           call   1d <strsubcmp+0x1d>
> >             1d: R_386_PC32    .text.strncmp
> >   21:        8b 5c 24 04              mov    0x4(%esp),%ebx
> >   25:        8b 74 24 08              mov    0x8(%esp),%esi
> >   29:        83 c4 0c                 add    $0xc,%esp
> >   2c:        c3                       ret
> >
> > which all seems fine.  We get a plain PC32 relocation to strlen (which
> > is now in the separate library).
> >
> > However, with patch 2 in place (simply swapping the plain extern for
> > __builtin_strlen(), we now get:
> >
> > 00000000 <strsubcmp>:
> >    0:        83 ec 0c                 sub    $0xc,%esp
> >    3:        89 1c 24                 mov    %ebx,(%esp)
> >    6:        89 74 24 04              mov    %esi,0x4(%esp)
> >    a:        89 7c 24 08              mov    %edi,0x8(%esp)
> >    e:    /-- e8 fc ff ff ff           call   f <strsubcmp+0xf>
> >             f: R_386_PC32    __x86.get_pc_thunk.bx
> >   13:        81 c3 02 00 00 00        add    $0x2,%ebx
> >             15: R_386_GOTPC    _GLOBAL_OFFSET_TABLE_
> >   19:        89 c7                    mov    %eax,%edi
> >   1b:        89 d6                    mov    %edx,%esi
> >   1d:        89 d0                    mov    %edx,%eax
> >   1f:    /-- e8 fc ff ff ff           call   20 <strsubcmp+0x20>
> >             20: R_386_PLT32    strlen
>
> PLT means it not declared hidden, otherwise it would have used the
> relative relocation.
> Maybe
>
> size_t strlen(const char *s);
> #define strlen(s) __builtin_strlen(s)
>
> xen/compiler.h is included, so all declaration should get the hidden
> by default ? Or add __attribute__((visibility("hidden"))) explicitly.
>
> >   24:        89 c1                    mov    %eax,%ecx
> >   26:        89 f2                    mov    %esi,%edx
> >   28:        89 f8                    mov    %edi,%eax
> >   2a:    /-- e8 fc ff ff ff           call   2b <strsubcmp+0x2b>
> >             2b: R_386_PC32    .text.strncmp
> >   2f:        8b 1c 24                 mov    (%esp),%ebx
> >   32:        8b 74 24 04              mov    0x4(%esp),%esi
> >   36:        8b 7c 24 08              mov    0x8(%esp),%edi
> >   3a:        83 c4 0c                 add    $0xc,%esp
> >   3d:        c3                       ret
> >
> >
> > The builtin hasn't managed to optimise away the call to strlen (that's
> > fine).  But, we've ended up spilling %ebx to the stack, calculating the
> > location of the GOT and not using it.
> >
>
> Maybe the ABI for PLT is to have %ebx set to the GOT ? Not sure about it.
>
> > So, as it stands, trying to use __builtin_strlen() results in worse cod=
e
> > generation.  One thing I noticed was that we're not passing
> > -fvisibility=3Dhidden into CFLAGS_x86_32, but fixing that doesn't help
> > either.  We do have the pragma from compiler.h, so I'm out of visibilit=
y
> > ideas.
> >
>
> The -fvisibility=3Dhidden should be overridden by the xen/compiler.h;
> but should be overridden with hidden!
> Maybe strlen is defined by default with another visibility?
> If you generate the assembly, you should see if the strlen symbol gets
> the .hidden bless or not.
>

I did some more experiments, but I didn't manage to fix the issue. It
looks like when __builtin_strlen fallback to calling strlen it uses a
private declaration of strlen. -mregparam argument is taken into
account, but not visibility. I tried to declare strlen as hidden
(checking also preprocessor output to see if other declaration were
present, none found), still the @PLT. I tried to add a "static inline
strlen"... and it was not used.

I found this workaround:

diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index 80ffd0885e..ac2b0b0a4d 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -51,7 +51,12 @@ static const char delim_chars_comma[] =3D ", \n\r\t";

#define delim_chars    (delim_chars_comma + 1)

-#define strlen(s) __builtin_strlen(s)
+size_t strlen(const char *s);
+#define strlen(str) \
+  (__extension__ (__builtin_constant_p(str) \
+                 ? __builtin_strlen(str)    \
+                 : strlen(str)))
+

static int strncmp(const char *cs, const char *ct, size_t count)
{
diff --git a/xen/arch/x86/boot/strlen.32.c b/xen/arch/x86/boot/strlen.c
similarity index 100%
rename from xen/arch/x86/boot/strlen.32.c
rename to xen/arch/x86/boot/strlen.c

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 09:47:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 09:47:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820483.1233974 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1N6e-0007S2-F9; Thu, 17 Oct 2024 09:47:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820483.1233974; Thu, 17 Oct 2024 09: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 1t1N6e-0007Rv-CL; Thu, 17 Oct 2024 09:47:44 +0000
Received: by outflank-mailman (input) for mailman id 820483;
 Thu, 17 Oct 2024 09:47: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 1t1N6c-0007Rj-EW; Thu, 17 Oct 2024 09:47: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 1t1N6c-0007jR-Bk; Thu, 17 Oct 2024 09:47: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 1t1N6b-0001CI-Ug; Thu, 17 Oct 2024 09:47:42 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1N6b-00040J-UD; Thu, 17 Oct 2024 09:47: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=XcZo4/EGn+e98cDIzm35qzOydv//5OQQciqVIOt4pLg=; b=U1NUTtBN/yKELzoYhrR031tlAO
	fUv9BzuMQ5FwBdhonoGCAMEKvfLG77ZWBSPsLSLgN5Pai5BjtSs+BglXiSEr3P6oJ1r7X7jzjl2xp
	JQJu1CH2eTujZbah9xCo1YNGNpTz5fzihl2PXC+ps8LNptfcR0XmlubrnjGxpLyzd/Y0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188132-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188132: regressions - FAIL
X-Osstest-Failures:
    linux-linus:build-amd64-pvops:kernel-build:fail:regression
    linux-linus:test-amd64-amd64-xl-vhd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-shadow:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-rtds:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-raw:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ovmf-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qcow2:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-pvshim:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-pvhv2-intel:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-dom0pvh-xl-amd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-pvhv2-amd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-dom0pvh-xl-intel:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-multivcpu:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-examine:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-examine-bios:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-examine-uefi:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-credit2:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-pair:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-credit1:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-intel:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-pair:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-pygrub:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-freebsd11-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-freebsd12-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-coresched-amd64-xl:build-check(1):blocked:nonblocking
    linux-linus:test-armhf-armhf-libvirt: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-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-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm: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-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-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=c964ced7726294d40913f2127c3f185a92cb4a41
X-Osstest-Versions-That:
    linux=2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 09:47:41 +0000

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

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. 188098

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-vhd       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-raw       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-xl-pvshim    1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-pvhv2-intel  1 build-check(1)               blocked  n/a
 test-amd64-amd64-dom0pvh-xl-amd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-pvhv2-amd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-dom0pvh-xl-intel  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-multivcpu  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-credit2   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-credit1   1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-qcow2  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-xl           1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-raw  1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-vhd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-qemuu-nested-intel  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-qemuu-nested-amd  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-qemuu-freebsd12-amd64  1 build-check(1)           blocked n/a
 test-amd64-amd64-xl-xsm       1 build-check(1)               blocked  n/a
 test-amd64-coresched-amd64-xl  1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188098
 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-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-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                c964ced7726294d40913f2127c3f185a92cb4a41
baseline version:
 linux                2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2

Last test of basis   188098  2024-10-15 19:12:44 Z    1 days
Testing same since   188132  2024-10-16 21:13:43 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abhishek Mohapatra <abhishek.mohapatra@broadcom.com>
  Abhishek Mohapatra<abhishek.mohapatra@broadcom.com>
  Alexander Zubkov <green@qrator.net>
  Anumula Murali Mohan Reddy <anumula@chelsio.com>
  Atte Heikkilä <atteh.mailbox@gmail.com>
  Bart Van Assche <bvanassche@acm.org>
  Bhargava Chenna Marreddy <bhargava.marreddy@broadcom.com>
  Björn Töpel <bjorn@rivosinc.com>
  Chandramohan Akula <chandramohan.akula@broadcom.com>
  Christian Heusel <christian@heusel.eu>
  David Sterba <dsterba@suse.com>
  David Vernet <void@manifault.com>
  Filipe Manana <fdmanana@suse.com>
  Herbert Xu <herbert@gondor.apana.org.au>
  Honglei Wang <jameshongleiwang@126.com>
  Jason Gunthorpe <jgg@nvidia.com>
  Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
  Kashyap Desai <kashyap.desai@broadcom.com>
  Leon Romanovsky <leon@kernel.org>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mark Brown <broonie@kernel.org>
  Namjae Jeon <linkinjeon@kernel.org>
  Potnuri Bharat Teja <bharat@chelsio.com>
  Qianqiang Liu <qianqiang.liu@163.com>
  Roi Martin <jroi.martin@gmail.com>
  Saravanan Vajravel <saravanan.vajravel@broadcom.com>
  Selvin Xavier <selvin.xavier@broadcom.com>
  Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
  Showrya M N <showrya@chelsio.com>
  Steve French <stfrench@microsoft.com>
  Tejun Heo <tj@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-amd64-libvirt-qemuu-debianhvm-amd64-xsm           blocked 
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        blocked 
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 blocked 
 test-amd64-amd64-libvirt-xsm                                 blocked 
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      blocked 
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            blocked 
 test-amd64-amd64-xl-pvhv2-amd                                blocked 
 test-amd64-amd64-dom0pvh-xl-amd                              blocked 
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    blocked 
 test-amd64-amd64-qemuu-freebsd11-amd64                       blocked 
 test-amd64-amd64-qemuu-freebsd12-amd64                       blocked 
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         blocked 
 test-amd64-amd64-xl-qemut-win7-amd64                         blocked 
 test-amd64-amd64-xl-qemuu-win7-amd64                         blocked 
 test-amd64-amd64-xl-qemut-ws16-amd64                         blocked 
 test-amd64-amd64-xl-qemuu-ws16-amd64                         blocked 
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                blocked 
 test-amd64-amd64-xl-credit1                                  blocked 
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 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-amd64-examine                                     blocked 
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          blocked 
 test-amd64-amd64-xl-pvhv2-intel                              blocked 
 test-amd64-amd64-dom0pvh-xl-intel                            blocked 
 test-amd64-amd64-libvirt                                     blocked 
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                blocked 
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        blocked 
 test-amd64-amd64-libvirt-pair                                blocked 
 test-amd64-amd64-xl-pvshim                                   blocked 
 test-amd64-amd64-pygrub                                      blocked 
 test-amd64-amd64-libvirt-qcow2                               blocked 
 test-amd64-amd64-xl-qcow2                                    blocked 
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 blocked 
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      blocked 
 test-armhf-armhf-xl-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-amd64-xl-shadow                                   blocked 
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                blocked 
 test-amd64-amd64-libvirt-vhd                                 blocked 
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      blocked 
 test-arm64-arm64-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 926 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 10:59:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 10:59:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820507.1233994 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ODN-00076f-GW; Thu, 17 Oct 2024 10:58:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820507.1233994; Thu, 17 Oct 2024 10: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 1t1ODN-00076Y-Cl; Thu, 17 Oct 2024 10:58:45 +0000
Received: by outflank-mailman (input) for mailman id 820507;
 Thu, 17 Oct 2024 10: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1ODM-00076O-2J
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 10:58:44 +0000
Received: from mail-oo1-xc2d.google.com (mail-oo1-xc2d.google.com
 [2607:f8b0:4864:20::c2d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c3d1ab9b-8c76-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 12:58:39 +0200 (CEST)
Received: by mail-oo1-xc2d.google.com with SMTP id
 006d021491bc7-5eb6af75247so543364eaf.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 03:58:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c3d1ab9b-8c76-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729162718; x=1729767518; 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=8RQAYVMACj1L6HNtzZ0Ew1iP17vAqK5x4Ctpo10szQg=;
        b=SKSFIxWvhvKY5/aSaWlHUWISP5twSM9KIgc97SigTbdfmCoM8imZzxkxUvtDmrs3+P
         0zBDwjOwmVN2viczaBoMRC16WMtvuaXwqFwHg4UBcrYM4PjGJM5Mxk74keDhHlF+FTDT
         JpinZGwoFIzjsYiZU/soCfevfbbmis0QBpYG4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729162718; x=1729767518;
        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=8RQAYVMACj1L6HNtzZ0Ew1iP17vAqK5x4Ctpo10szQg=;
        b=un/ObdE4FaiWtb3vcRRTatu2SrRqdwzTBFKxiOQe4IbF0drhR7QKmZY1nxOzZTo5jA
         ekY3vHVyNUhbfUJr4AacYZHfHsR4kWNiRd7sk3rao/R8cC46tBTIWVpiU6G8I6xatrEn
         i6Yv3sNV55CMWcAA0lgIezhHq83cCjI/y6/eGWujFZ7cn0Bbwv+5+WOwTk+gkGeIQn67
         bbLTTPf52JUQ1Xuwz/JxEN2xpnbjWGicpTa2raNDRbjh2ktBj/jNtLc2SvRXNl8u+DD5
         wTtjKK52Zt3e5RUy3NMoTYgYU5jSHpAx3+Dv2o0q41C4KDY0KfpoFSFMQO1xgsQrU9j5
         W6cA==
X-Gm-Message-State: AOJu0Yze0trv/DpxN0frvJzzVtJe2M/hc04GkZAZ3IGZ8laRn+cMP+QT
	Xue07HR/XnnluB3cLjffeOEI4KWllPWjs/93CNoTYgGLPIU4R6ViReUkDcnLb1/yHyt57YLQtMo
	SpDP3Gzr0XXjycPN942UUqmaUbeaR1CJq3CClSA==
X-Google-Smtp-Source: AGHT+IEUfPadMPN21s2LWl6NBeoZSQEXHh7XJgpKfU800TmWqTHG9opdWeYejs2kp6tjPPaZEsnAImOV4+DcZLt6BU4=
X-Received: by 2002:a05:6820:1689:b0:5eb:827b:9bbf with SMTP id
 006d021491bc7-5eb827ba269mr16938eaf.7.1729162718601; Thu, 17 Oct 2024
 03:58:38 -0700 (PDT)
MIME-Version: 1.0
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
 <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com>
 <Zw5zSURbpInM5oBY@l14> <CACHz=ZgN9qNygJWuWovpiU+MCGcJu9qaxaRT1VkkiHsYwbEN4A@mail.gmail.com>
 <Zw+it8oVVTrS62wx@l14> <CACHz=ZgD-Zf7_R+RWWO1o8qkZbEC0uPjmz2kMJ83qQ8jXmd2JA@mail.gmail.com>
In-Reply-To: <CACHz=ZgD-Zf7_R+RWWO1o8qkZbEC0uPjmz2kMJ83qQ8jXmd2JA@mail.gmail.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Thu, 17 Oct 2024 11:58:27 +0100
Message-ID: <CACHz=ZghYq0Mzd8=QhhD5HKMqCVm1-0bRK3FRU-vyoE6mENnOQ@mail.gmail.com>
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Anthony PERARD <anthony.perard@vates.tech>
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>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 16, 2024 at 4:05=E2=80=AFPM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> On Wed, Oct 16, 2024 at 12:25=E2=80=AFPM Anthony PERARD
> <anthony.perard@vates.tech> wrote:
> >
> > On Wed, Oct 16, 2024 at 09:33:32AM +0100, Frediano Ziglio wrote:
> > > On Tue, Oct 15, 2024 at 2:51=E2=80=AFPM Anthony PERARD <anthony.perar=
d@vates.tech> wrote:
> > > > On Mon, Oct 14, 2024 at 05:32:26PM +0100, Frediano Ziglio wrote:
> > > > > On Mon, Oct 14, 2024 at 4:31=E2=80=AFPM Anthony PERARD <anthony.p=
erard@vates.tech> wrote:
> > > > > > On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote=
:
> >
> > > > BTW, do we need the rules that generate the input of this rules
> > > > (built_in_32.tmp.o that is), or can this one takes all 32bit object=
s as
> > > > input?
> > > >
> > >
> > > Better not to do it In some conditions it can generate slightly
> > > different results (like different object alignments) making the
> > > algorithm fail.
> >
> > Ok. Thanks for the explanation.
> >
> > > > > > > +# generate final object file combining and checking above bi=
naries
> > > > > > > +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/bu=
ilt_in_32.final.bin
> > > > > >
> > > > > > So, "other" isn't part of "final", I don't really know what tho=
se two
> > > > > > things contains so naming wise I can't suggest anything useful.
> > > >
> > > > Instead of "other", is "control" (like in science experiment where =
you
> > > > have a control group), or "offseted" (which seems to be how this se=
cond
> > > > binary is constructed) would be better names for this *.bin? It see=
ms
> > > > the script take both input and play the game of the 7 differences, =
to
> > > > find clues about the location of some symbols, right?.
> > > >
> > >
> > > I don't know the game and I think people not familiar with it won't
> > > find new names more readable but less.
> >
> > Sorry, the "game" as nothing to do with the name I've proposed. I was
> > just asking if the script take both *.bin and was looking for
> > differences.
> >
> > (The game of 7 differences is simple: there's two similar pictures and
> > you just look for the 7 differences between them, that's it.)
> >
> > > Not saying that current names are good, they just need to be located
> > > at different addresses with some "magic" in the middle.
> >
> > Well to me "other" evoke a binary that contains functions that are not
> > in "final", but instead they both contain the sames functions with
> > slight variation of placement in the file (with added offset, gap), as =
I
> > understand. But if you don't like my proposal, so be it.
> >
>
> What about "base" and "offsetted" ? I don't know why "offsetted"
> sounds weird to me but I didn't find anything better. I hope some
> native English speaker could come with a better proposal.
>

What about "base" and "bias"/"biased" ?

Frediano


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 11:01:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 11:01:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820513.1234003 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1OG7-00009t-Tu; Thu, 17 Oct 2024 11:01:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820513.1234003; Thu, 17 Oct 2024 11: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 1t1OG7-00009m-R5; Thu, 17 Oct 2024 11:01:35 +0000
Received: by outflank-mailman (input) for mailman id 820513;
 Thu, 17 Oct 2024 11:01: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1OG6-00009c-L7
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 11:01:34 +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 2bd3b491-8c77-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 13:01:33 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a2cdc6f0cso100907366b.2
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 04:01:33 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a2974c2e6sm283527866b.84.2024.10.17.04.01.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 04:01:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2bd3b491-8c77-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729162893; x=1729767693; 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=j9vLN+4YtPQVMPCxjEhIs8Q2SiFC/khBLaM0fCcvFcY=;
        b=fDUN1Dp4jlzHHTv9RGLwtf89aPvIi2Ldb4Q01gh1+fR9OrOCszmzcW7d100ursqUaX
         bg8SJgDF9ZWdkpmRH7+7wuOBPly5HhMjPhDaCCyItOGKI0HI+lpt1QDUtYlVNcBDM2fl
         C1RKabULqRS0mOHuLYHhmVnNSCwu/0sTqVRAw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729162893; x=1729767693;
        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=j9vLN+4YtPQVMPCxjEhIs8Q2SiFC/khBLaM0fCcvFcY=;
        b=mFI7XlRaw8du3FI6CNrDbVDSim8GMRLpC+rsJWqOV+fd39zSYR3JNPwlGT1QBimwmd
         2BRTb07piYgsbPRqgL6/E0zmFfGUZWn3bdTJrdRwIy/AYNQq6zK45kejEKaR2WAhH4RE
         EzhKmEfOP8tnDnV/qj51HKy1A4mCQ724HWxLWqQLVetBfzID34B0j1UhijPWj1jagLJ8
         BfbeA5gAtIfTz+ucXPtDKJ6Dv9ecDxSc4vOBSStMsE2RYffdN0yfG3asCCwdYzkMFSwx
         kZU/83Ui6Lw35BJJ7mAZEDg7xPK06sEvohQHydqewgZTpv76SbSjh9Ve65Q6UVSUHtNH
         6mjQ==
X-Gm-Message-State: AOJu0YzOld4yhi4Umo3yk7QaGyk/wOkWSigkT5WuehmjTU7IMJoaT7pU
	J76jIkLPi0LfJ1W0in6rr2uon535zuRpOo6EEjoJKXmE3yV8SKztJ1Fbwq27LVU=
X-Google-Smtp-Source: AGHT+IEU2XfQE4+JPNIuqiLIfnWOXDxNjdGIXRyZMtU7YiLyzNyrPYOJt20GC2WMqFb9YYk89uLuYg==
X-Received: by 2002:a17:906:4fd0:b0:a9a:6bd:95dc with SMTP id a640c23a62f3a-a9a06bd968dmr1375833766b.46.1729162893024;
        Thu, 17 Oct 2024 04:01:33 -0700 (PDT)
Message-ID: <bfab40e2-1663-430d-a22a-3b26d3171f37@citrix.com>
Date: Thu, 17 Oct 2024 12:01:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/6] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com>
 <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14>
 <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com>
 <Zw5zSURbpInM5oBY@l14>
 <CACHz=ZgN9qNygJWuWovpiU+MCGcJu9qaxaRT1VkkiHsYwbEN4A@mail.gmail.com>
 <Zw+it8oVVTrS62wx@l14>
 <CACHz=ZgD-Zf7_R+RWWO1o8qkZbEC0uPjmz2kMJ83qQ8jXmd2JA@mail.gmail.com>
 <CACHz=ZghYq0Mzd8=QhhD5HKMqCVm1-0bRK3FRU-vyoE6mENnOQ@mail.gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <CACHz=ZghYq0Mzd8=QhhD5HKMqCVm1-0bRK3FRU-vyoE6mENnOQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 11:58 am, Frediano Ziglio wrote:
> On Wed, Oct 16, 2024 at 4:05 PM Frediano Ziglio
> <frediano.ziglio@cloud.com> wrote:
>> On Wed, Oct 16, 2024 at 12:25 PM Anthony PERARD
>> <anthony.perard@vates.tech> wrote:
>>> On Wed, Oct 16, 2024 at 09:33:32AM +0100, Frediano Ziglio wrote:
>>>> On Tue, Oct 15, 2024 at 2:51 PM Anthony PERARD <anthony.perard@vates.tech> wrote:
>>>>> On Mon, Oct 14, 2024 at 05:32:26PM +0100, Frediano Ziglio wrote:
>>>>>> On Mon, Oct 14, 2024 at 4:31 PM Anthony PERARD <anthony.perard@vates.tech> wrote:
>>>>>>> On Mon, Oct 14, 2024 at 09:53:28AM +0100, Frediano Ziglio wrote:
>>>>>>>> +# generate final object file combining and checking above binaries
>>>>>>>> +$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final.bin
>>>>>>> So, "other" isn't part of "final", I don't really know what those two
>>>>>>> things contains so naming wise I can't suggest anything useful.
>>>>> Instead of "other", is "control" (like in science experiment where you
>>>>> have a control group), or "offseted" (which seems to be how this second
>>>>> binary is constructed) would be better names for this *.bin? It seems
>>>>> the script take both input and play the game of the 7 differences, to
>>>>> find clues about the location of some symbols, right?.
>>>>>
>>>> I don't know the game and I think people not familiar with it won't
>>>> find new names more readable but less.
>>> Sorry, the "game" as nothing to do with the name I've proposed. I was
>>> just asking if the script take both *.bin and was looking for
>>> differences.
>>>
>>> (The game of 7 differences is simple: there's two similar pictures and
>>> you just look for the 7 differences between them, that's it.)
>>>
>>>> Not saying that current names are good, they just need to be located
>>>> at different addresses with some "magic" in the middle.
>>> Well to me "other" evoke a binary that contains functions that are not
>>> in "final", but instead they both contain the sames functions with
>>> slight variation of placement in the file (with added offset, gap), as I
>>> understand. But if you don't like my proposal, so be it.
>>>
>> What about "base" and "offsetted" ? I don't know why "offsetted"
>> sounds weird to me but I didn't find anything better. I hope some
>> native English speaker could come with a better proposal.
>>
> What about "base" and "bias"/"biased" ?

A plain "offset" would be fine in this context.

"offsetted" is indeed wrong English.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 11:10:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 11:10:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820523.1234017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1OOy-0001tz-RN; Thu, 17 Oct 2024 11:10:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820523.1234017; Thu, 17 Oct 2024 11:10: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 1t1OOy-0001ts-Oa; Thu, 17 Oct 2024 11:10:44 +0000
Received: by outflank-mailman (input) for mailman id 820523;
 Thu, 17 Oct 2024 11:10: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 1t1OOx-0001ti-UB; Thu, 17 Oct 2024 11:10: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 1t1OOx-0000mw-T6; Thu, 17 Oct 2024 11:10: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 1t1OOx-000603-LR; Thu, 17 Oct 2024 11:10:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1OOx-0005o6-Kq; Thu, 17 Oct 2024 11:10: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=EA5/BfT8Zqth7bglvoWx6DmDonG6x/ecgA02J8LhBR8=; b=q1+FGiyiY7a1kiHdROOTeit9vs
	5R/73/X0eUFh7BZL49e+P0B0eFdlVf1LIYH4zIhQJ+w9onTtv8w9NGji+ZLQZRwS90FqrUEyKwntX
	IJaMdWn9gBs1vDxJmoGlPrttEStn0VaWh7kmTE5IATdUJTqGZIgY7cLt6eJrrsIZHj4c=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188156-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188156: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
    ovmf:build-i386-pvops:kernel-build:fail:regression
X-Osstest-Versions-This:
    ovmf=79598f34fa024ad2491b46b95c3189c5a7f159d2
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 11:10:43 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152
 build-i386-pvops              6 kernel-build             fail REGR. vs. 188152

version targeted for testing:
 ovmf                 79598f34fa024ad2491b46b95c3189c5a7f159d2
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    0 days
Testing same since   188156  2024-10-17 09:14:11 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@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                                             fail    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         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.

------------------------------------------------------------
commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 11:37:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 11:37:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820534.1234030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1OoH-0004oC-Q3; Thu, 17 Oct 2024 11:36:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820534.1234030; Thu, 17 Oct 2024 11:36: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 1t1OoH-0004o5-N1; Thu, 17 Oct 2024 11:36:53 +0000
Received: by outflank-mailman (input) for mailman id 820534;
 Thu, 17 Oct 2024 11:36: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1OoG-0004ny-77
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 11:36:52 +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 192d7aaf-8c7c-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 13:36:50 +0200 (CEST)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4314311959aso7523115e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 04:36:50 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43158c3ef0fsm22979975e9.20.2024.10.17.04.36.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 04:36:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 192d7aaf-8c7c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729165009; x=1729769809; 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=fFochA9dGqfGgEHw9yA+tE+QIGVg+WBuCbtJZtHfWK8=;
        b=Pdu05WvsUPWhlQYOVophxLslwALTi2Z1s1OG/2sc70wyEj2hpzYS+Bb5xEz848CDE8
         H8BsF6qo24/PrX9Lvi1yMzWSDH9PoXNRuwC3kADrm0ouWsSA66RF4Xe56Fs4sro4P0Zf
         1sFfLPCGUuH1/TKYo80MKrZZWagx3TWsYX8s6gnklgxRZHrqWCsqdSeuY4no9/iNvRwF
         CZHr1NNA6ERoSK/JFR+lJW6fMU0EM4d4puloHNYMbLD3Y4ooh1zLHv459EvlQSdPGQGJ
         MReZZoxUHb0yeiPhcOrf9VLXx1fcdkThcRrjOE7JCYYvq/EDivAArkvC1XH/MXy9UjHy
         OjJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729165009; x=1729769809;
        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=fFochA9dGqfGgEHw9yA+tE+QIGVg+WBuCbtJZtHfWK8=;
        b=aAFBkw3J85KBAYp4522Gj1Jou+N19XbtOrTXKU9M3ITe0KsPuYZ5UCTOgei82vtFxu
         b/ZX8X3NpcgCIXcrQQpy9BJr8k/HINSQe3wl7QcCC5huL040Q1xKJ6VQglPCFpWSHiGR
         22nkOO0Nw4YbIkjKMN21hzs0qExVVVumu3Xerv8nHb4K+5LLMBj0QAoHmsOW/I93Nbgu
         a/dWjqplmVAeNhN80SbD61WBhHhoenWVaykHhD0qta0OxWgx3cP8MIPXzBiDXDGe7Gdh
         rZG1gyBy3F1FTd95WlccxG1H12FhqAg+xsTJ9oxdeO+3dDW4R4SiUFj5cJlERQOCjO1z
         4sRQ==
X-Forwarded-Encrypted: i=1; AJvYcCUvxk1rFqKNi3jTLjcIjMdO3XppqSz8JeNRmhjhJU5VJerSnSkk0zyGdUPN3WjfWNVeAa2Dh1wiXYY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YytH7eweDkgjh2zKJF9mb7FjxnlgKbMwXy5dMPDk9lQI+7MmcDt
	HKtmRurgYiA6nZnnV1L9OTbaDy2ID9IqGTliZNkU2QiSSr5Pu5MFanfBGsvUmg==
X-Google-Smtp-Source: AGHT+IHxvA4YiW8Lfd2XBOENvf84Re09CPhU8ix89ub2FdiArSdsjb0uXWHzEWt+T7Ick8KPaUIm7g==
X-Received: by 2002:a05:600c:1c02:b0:431:4329:6642 with SMTP id 5b1f17b1804b1-4314329668bmr62775655e9.12.1729165009359;
        Thu, 17 Oct 2024 04:36:49 -0700 (PDT)
Message-ID: <b973cdcf-5807-4888-8439-892bf7b8747f@suse.com>
Date: Thu, 17 Oct 2024 13:36:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 2/3] xen/pci: introduce PF<->VF links
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
 <20241011152727.366770-3-stewart.hildebrand@amd.com>
 <46e66868-6ddc-4037-8c3a-5a60b39d8b73@suse.com>
 <881998fc-f239-4ddf-9730-eb3d151fbf16@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: <881998fc-f239-4ddf-9730-eb3d151fbf16@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 18:50, Stewart Hildebrand wrote:
> On 10/16/24 05:52, Jan Beulich wrote:
>> On 11.10.2024 17:27, Stewart Hildebrand wrote:
>>> Add links between a VF's struct pci_dev and its associated PF struct
>>> pci_dev. Move the calls to pci_get_pdev()/pci_add_device() down to avoid
>>> dropping and re-acquiring the pcidevs_lock().
>>>
>>> During PF removal, unlink VF from PF and mark the VF broken. As before,
>>> VFs may exist without a corresponding PF, although now only with
>>> pdev->broken = true. If the PF is removed and re-added, dom0 is expected
>>> to also remove and re-add the VFs.
>>
>> Right, or else the VF struct instance would remain orphaned the way you've
>> implemented this. Question is whether it is a reasonable assumption that a
>> Dom0 which failed to remove the VFs during PF removal might later
>> "remember" that it still needs to report VFs removed. I for one doubt that.
> 
> This matches my observations: you're right, it most likely won't. I had
> just written it in a misleading way in the commit message. Re-adding
> should not occur until after VFs and PF have been removed in non-buggy
> scenarios.
> 
> A PF driver that fails to disable SR-IOV (i.e remove VFs) during PF
> removal is buggy, and would lead to issues inside dom0 as well due to
> the orphaned/stale VF left behind in Linux dom0 itself. As mentioned in
> patch #1, Linux warns about this:
> 
> [  100.000000]  0000:01:00.0: driver left SR-IOV enabled after remove
> 
> With the PF<->VF links in place, we now also have the ability to detect
> and warn about this potentially buggy condition in Xen. I have so far
> only observed VF-then-PF removal order in non-buggy scenarios. My only
> hesitation with adding such a warning in Xen is that I don't know
> whether removing in PF-then-VF order is legitimate.

My take here is that it's not legitimate. VFs with no PF is physically
impossible, and hence also ought to be logically invalid. It's the PF
that surfaces (materializes) the VFs, after all.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 12:36:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 12:36:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820556.1234058 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Pk8-0006QP-Gb; Thu, 17 Oct 2024 12:36:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820556.1234058; Thu, 17 Oct 2024 12:36: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 1t1Pk8-0006QI-Dn; Thu, 17 Oct 2024 12:36:40 +0000
Received: by outflank-mailman (input) for mailman id 820556;
 Thu, 17 Oct 2024 12:36: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=FxBO=RN=bounce.vates.tech=bounce-md_30504962.671104d4.v1-54daa27fa1074ab9a801456a3f02cf87@srs-se1.protection.inumbo.net>)
 id 1t1Pk7-0006PO-Ht
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 12:36:39 +0000
Received: from mail187-33.suw11.mandrillapp.com
 (mail187-33.suw11.mandrillapp.com [198.2.187.33])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 73431ee7-8c84-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 14:36:37 +0200 (CEST)
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-33.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4XTnQD2LXWzBsTpfs
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 12:36:36 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 54daa27fa1074ab9a801456a3f02cf87; Thu, 17 Oct 2024 12:36: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: 73431ee7-8c84-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729168596; x=1729429096;
	bh=9D2zvyhviI8/Ohv0KhQUpZSdN4DGpnpSxAWoQ1PCl70=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=nsEg272yDSVdz4coW7m2Dynmp1V72AWy3S+7PnlJEZqdlGsMCnTw04qHDehBObxcM
	 kF2pzr6hQszElxbfdVoiXELFkAwTP1qMAJWuPp2stY/lsrcup6qHz5rVYwVZayfQT0
	 sFdCKotdDQZqW59X446/8Zfhu8gTdvLi7p/dUhOXRkq66ePR5gyBDY04oPm4a0yKGm
	 ew7nxXDrt2MqLPuaDnDjll2Aa/sjfFFw9aC/RuG9N8y1iv+b4Rs1NYKC5qmm3l5C3m
	 pT2bYvscxhflM1Y0gVYiFNs/vl5iS3fCd0R2daXyMWyEmvuTC1vw1bEKrWryZ4zbix
	 tXAOYmaGKrO0Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729168596; x=1729429096; i=anthony.perard@vates.tech;
	bh=9D2zvyhviI8/Ohv0KhQUpZSdN4DGpnpSxAWoQ1PCl70=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Oc3Bvj62JFEcJt0a5Ig4lF5Giaoi4AAlrj+m7+BeuQ5tckJr9SdxBeR4U8j4XAxMK
	 b0bQ3lhefcwolyI3MPZFZ5ZVX9SsMbVc5nDmbTQzQLujfnQmCzO2geYpAJEGBawAA7
	 KBsPqy2RhKPM3aQ9yvdszKw4mUoNwcgL8oCOGr2pmH2j6wy18q7RHnzMI0IlMqmiUu
	 ShbirFjg5QDB0IOyA64EAQqdXbiv/4toWX955CBrK3bqj14/WAyiX0tY/DkfWp4zUN
	 mTQQX6KI7c3NPqXBplU4zPxSmM8P7ESp4u51eNLIC0mt3+VziVoAO3DUFLHMOXMZvF
	 n/WkpYBJ6HmPQ==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v4=202/6]=20x86/boot:=20create=20a=20C=20bundle=20for=2032=20bit=20boot=20code=20and=20use=20it?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729168595040
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Message-Id: <ZxEE0sFMH6dgOa9z@l14>
References: <20241014085332.3254546-1-frediano.ziglio@cloud.com> <20241014085332.3254546-3-frediano.ziglio@cloud.com> <Zw05Tb8UvCQAIo+n@l14> <CACHz=ZiaSyr_6y=tniF6Kq7JcFjeoVse-dAX7TF3bsvL-r3jRg@mail.gmail.com> <Zw5zSURbpInM5oBY@l14> <CACHz=ZgN9qNygJWuWovpiU+MCGcJu9qaxaRT1VkkiHsYwbEN4A@mail.gmail.com> <Zw+it8oVVTrS62wx@l14> <CACHz=ZgD-Zf7_R+RWWO1o8qkZbEC0uPjmz2kMJ83qQ8jXmd2JA@mail.gmail.com>
In-Reply-To: <CACHz=ZgD-Zf7_R+RWWO1o8qkZbEC0uPjmz2kMJ83qQ8jXmd2JA@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.54daa27fa1074ab9a801456a3f02cf87?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241017:md
Date: Thu, 17 Oct 2024 12:36:36 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 16, 2024 at 04:05:00PM +0100, Frediano Ziglio wrote:
> On Wed, Oct 16, 2024 at 12:25=E2=80=AFPM Anthony PERARD > <anthony.perard=
@vates.tech> wrote:
> > On Wed, Oct 16, 2024 at 09:33:32AM +0100, Frediano Ziglio wrote:
> > > On Tue, Oct 15, 2024 at 2:51=E2=80=AFPM Anthony PERARD <anthony.perar=
d@vates.tech> wrote:
> > > > I can think of one example where $(if_changed,) is going to really =
help,
> > > > by looking at this command line:
> > > >     One does update the .c file to add a function that they like to
> > > >     export, run `make`, realize they forgot to update the makefile =
so
> > > >     update it, run `make`, it's still doesn't work...
> > > >     Maybe run `make clean; make`, or something else...
> > > >
> > > > So, could you use $(if_changed,) ?
> > > > Probably:
> > > > quiet_cmd_combine =3D GEN     $@
> > > > cmd_combine =3D $(PYTHON) ...
> > > > $(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_=
32.final.bin FORCE
> > > >     $(call if_changes,combine)
> > > > targets +=3D built_in_32.S
> > > >
> > > > GEN, for generate, or it could be PY instead, because python script=
 can
> > > > be slow to compile which could explain why the build system output =
is
> > > > making a pause on this target (on slow machines that is). Or it cou=
ld be
> > > > COMBINE, or something else, but it's not really necessary to explai=
n,
> > > > the target name is often enough to figure out what's happening, whe=
n
> > > > needed.
> > > >
> > >
> > > It just looks more complicated to me.
> >
> > I'm sorry if writing makefile is complicated. GNU make doesn't help wit=
h
> > writing build system that work well, especially when doing incremental
> > builds. So we need to use more complicated construction, especially for
> > a complex project like Xen.
> >
> 
> It was more a balance consideration. Considering the cases that seem
> to solve (and your case did not much apply) I don't feel that worth.
> Also, dependency to Makefile would solve without additional macros and
> indirection. Do you mind posting a full working change?

Sure, here it is (I notice I've misspell the macro name in what I've writte=
n
earlier):

quiet_cmd_combine =3D GEN     $@
cmd_combine =3D \
    $(PYTHON) $(srctree)/tools/combine_two_binaries.py \
=09--script $(obj)/build32.final.lds \
=09--bin1 $(obj)/built_in_32.other.bin \
=09--bin2 $(obj)/built_in_32.final.bin \
=09--map $(obj)/built_in_32.final.map \
=09--exports cmdline_parse_early,reloc \
=09--output $@

targets +=3D built_in_32.S

$(obj)/built_in_32.S: $(obj)/built_in_32.other.bin $(obj)/built_in_32.final=
.bin \
=09    $(srctree)/tools/combine_two_binaries.py FORCE
=09$(call if_changed,combine)

Cheers,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 12:46:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 12:46:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820564.1234071 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1PtL-0000BD-Df; Thu, 17 Oct 2024 12:46:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820564.1234071; Thu, 17 Oct 2024 12:46: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 1t1PtL-0000B6-9s; Thu, 17 Oct 2024 12:46:11 +0000
Received: by outflank-mailman (input) for mailman id 820564;
 Thu, 17 Oct 2024 12:46: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1PtK-00009w-1H
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 12:46:10 +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 c55eacd6-8c85-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 14:46:04 +0200 (CEST)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-4314c4cb752so9502805e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 05:46:04 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43158c61ae2sm24992065e9.46.2024.10.17.05.46.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 05:46:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c55eacd6-8c85-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729169164; x=1729773964; 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=opW0I6l9rGQivJ6oAEXHsJ/Cs7Y6jrVWJEEMQxR0m3Q=;
        b=d2M95/qvx86BZVQqjj6Qr7Zv66keUdevoc2emJHVKeJvqbr9HUFlHlOGr6rMQKQi7R
         RCMBRMumsioKWkIiMCGCy4ah41VdDrdzzdy7t1EDxmIYtRyR4JLBMr1a8L16kZ1GwJSS
         MIwCt0PwJkXKdweLJhSVu7lVSb5dcTlthz6E332fK1fhhkJPzBWKSaIITSnxDKtvxmLd
         VJ7ChPHSrUAPPIQZhxfsJHxr9N9o4HtuYjuRxce1aXLYgIGHld1iMN+fhWFgPZHPlKtC
         QlH4x4vzt8OnMfnlfdUYDU0/eFDv/5RWtTc41xXNK1OKsd8WqjKYGsZoueVm/fPZZCc2
         uuGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729169164; x=1729773964;
        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=opW0I6l9rGQivJ6oAEXHsJ/Cs7Y6jrVWJEEMQxR0m3Q=;
        b=mS7xQYPBZT4q7WysBiWjjVVz8mEwDXVwX4ZLh61XiHCyRY9RrmILf2hwJnriwMWn9I
         pzUBo9Qda16oOOSJObZDJAz1tk88e84l9t4pVKCidv1WY0Lb2s8/WialHk0ixfZU18r0
         Acr0/bC5gMvjkx7BOujrjfwRbJ5YW0H7e1p3kbgJl/2grDl7wvl8m+6XVoflW7PNc0uA
         KfVcJWjrL9Gxq9LiOdJw6cH6lRyVqvN/IAeu4PBSIsOWNvjYA3tKldA/4QPFwEPcspH1
         FIwi8+9oeBmgI0phs/ljJpqv1N4UQi4ZB4X8z9wRhIY++FkQvxe4IARwRQwQETLeicBH
         i1fg==
X-Gm-Message-State: AOJu0YynhZIdwhDg//GO8mjd6VmHF2ZjhXRceJ6xKVgIxpKG99B9gf0e
	Vw6mlKZiHz4sfP9S4H43K+sJ3whbXWlVAXlFMgYH8FH0cx3Zmo1Ffm8UelXx5w==
X-Google-Smtp-Source: AGHT+IHvDKar/4K2Q8i9QPIxHnNfbZ0ZWiMzI3aF/X7BCQjaOR+Kcv2zNgPv5oFwVBBFVCO1xI9YvA==
X-Received: by 2002:a05:600c:46cc:b0:431:1512:743b with SMTP id 5b1f17b1804b1-4311dee74e6mr203918175e9.21.1729169163648;
        Thu, 17 Oct 2024 05:46:03 -0700 (PDT)
Message-ID: <010ef264-4ee9-46a4-bfee-5c8da36d1b2a@suse.com>
Date: Thu, 17 Oct 2024 14:46:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: lib32 followup (visibility issue and/or toolchain bug?)
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241016092154.1493035-1-frediano.ziglio@cloud.com>
 <821ac8cc-a0ac-412b-8069-73c52541b70b@citrix.com>
 <CACHz=Zj9m2tkPPbtJuCT5g_NtDRA3iMPBzxM8R5Jxp1ofVc8oQ@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: <CACHz=Zj9m2tkPPbtJuCT5g_NtDRA3iMPBzxM8R5Jxp1ofVc8oQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.10.2024 16:53, Frediano Ziglio wrote:
> On Wed, Oct 16, 2024 at 2:30 PM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>>
>> Hello,
>>
>> Preempting some future work I'm expecting to arrive, I had a go at using
>> __builtin_*() in obj32.
>>
>> This is formed of 2 patches on top of this series:
>> https://xenbits.xen.org/gitweb/?p=people/andrewcoop/xen.git;a=shortlog;h=refs/heads/xen-lib32
>>
> 
> You are confident we'll have a lot of shared code to need an
> additional "lib32" in the Makefile!
> I would personally stick with obj32.
> Note that file should be strlen.c, not strlen.32.c, otherwise you are
> possibly going to pick up the general rule and not the one in the
> Makefile (but maybe is what you wanted).
> 
>> Patch 1 introduces lib32 beside obj32, with strlen() being the first
>> broken-out function, and patch 2 swaps to __builtin_strlen().
>>
>> Both compile, but the difference that patch 2 introduces was unexpected.
>>
>> With just lib32, and taking strsubcmp() as an example, we get:
>>
>> 00000000 <strsubcmp>:
>>    0:        83 ec 0c                 sub    $0xc,%esp
>>    3:        89 5c 24 04              mov    %ebx,0x4(%esp)
>>    7:        89 74 24 08              mov    %esi,0x8(%esp)
>>    b:        89 c6                    mov    %eax,%esi
>>    d:        89 d3                    mov    %edx,%ebx
>>    f:        89 d0                    mov    %edx,%eax
>>   11:    /-- e8 fc ff ff ff           call   12 <strsubcmp+0x12>
>>             12: R_386_PC32    strlen
>>   16:        89 c1                    mov    %eax,%ecx
>>   18:        89 da                    mov    %ebx,%edx
>>   1a:        89 f0                    mov    %esi,%eax
>>   1c:    /-- e8 fc ff ff ff           call   1d <strsubcmp+0x1d>
>>             1d: R_386_PC32    .text.strncmp
>>   21:        8b 5c 24 04              mov    0x4(%esp),%ebx
>>   25:        8b 74 24 08              mov    0x8(%esp),%esi
>>   29:        83 c4 0c                 add    $0xc,%esp
>>   2c:        c3                       ret
>>
>> which all seems fine.  We get a plain PC32 relocation to strlen (which
>> is now in the separate library).
>>
>> However, with patch 2 in place (simply swapping the plain extern for
>> __builtin_strlen(), we now get:
>>
>> 00000000 <strsubcmp>:
>>    0:        83 ec 0c                 sub    $0xc,%esp
>>    3:        89 1c 24                 mov    %ebx,(%esp)
>>    6:        89 74 24 04              mov    %esi,0x4(%esp)
>>    a:        89 7c 24 08              mov    %edi,0x8(%esp)
>>    e:    /-- e8 fc ff ff ff           call   f <strsubcmp+0xf>
>>             f: R_386_PC32    __x86.get_pc_thunk.bx
>>   13:        81 c3 02 00 00 00        add    $0x2,%ebx
>>             15: R_386_GOTPC    _GLOBAL_OFFSET_TABLE_
>>   19:        89 c7                    mov    %eax,%edi
>>   1b:        89 d6                    mov    %edx,%esi
>>   1d:        89 d0                    mov    %edx,%eax
>>   1f:    /-- e8 fc ff ff ff           call   20 <strsubcmp+0x20>
>>             20: R_386_PLT32    strlen
> 
> PLT means it not declared hidden, otherwise it would have used the
> relative relocation.
> Maybe
> 
> size_t strlen(const char *s);
> #define strlen(s) __builtin_strlen(s)
> 
> xen/compiler.h is included, so all declaration should get the hidden
> by default ? Or add __attribute__((visibility("hidden"))) explicitly.
> 
>>   24:        89 c1                    mov    %eax,%ecx
>>   26:        89 f2                    mov    %esi,%edx
>>   28:        89 f8                    mov    %edi,%eax
>>   2a:    /-- e8 fc ff ff ff           call   2b <strsubcmp+0x2b>
>>             2b: R_386_PC32    .text.strncmp
>>   2f:        8b 1c 24                 mov    (%esp),%ebx
>>   32:        8b 74 24 04              mov    0x4(%esp),%esi
>>   36:        8b 7c 24 08              mov    0x8(%esp),%edi
>>   3a:        83 c4 0c                 add    $0xc,%esp
>>   3d:        c3                       ret
>>
>>
>> The builtin hasn't managed to optimise away the call to strlen (that's
>> fine).  But, we've ended up spilling %ebx to the stack, calculating the
>> location of the GOT and not using it.
> 
> Maybe the ABI for PLT is to have %ebx set to the GOT ? Not sure about it.

Yes, PIC PLT entries use %ebx.

>> So, as it stands, trying to use __builtin_strlen() results in worse code
>> generation.  One thing I noticed was that we're not passing
>> -fvisibility=hidden into CFLAGS_x86_32, but fixing that doesn't help
>> either.  We do have the pragma from compiler.h, so I'm out of visibility
>> ideas.
> 
> The -fvisibility=hidden should be overridden by the xen/compiler.h;
> but should be overridden with hidden!
> Maybe strlen is defined by default with another visibility?
> If you generate the assembly, you should see if the strlen symbol gets
> the .hidden bless or not.

Only defined symbols have .hidden emitted for them, afaics. But that also
doesn't matter much, as it's the emission of the @plt on the calls which
requires the setting up of %ebx prior to those calls. (Arguably in 32-bit
code, where all addresses are reachable, "hidden" could serve as a hint
that calls don't need to go through the PLT. This maybe considered a
missed optimization opportunity.) There's no difference there between
calling strlen() or e.g. a custom (extern) StrLen().

And btw, reloc.c and cmdline.c currently also compile to code using
__x86.get_pc_thunk.* (and @gotoff relocations for data references).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 13:25:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 13:25:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820578.1234090 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1QUn-0005a2-Bj; Thu, 17 Oct 2024 13:24:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820578.1234090; Thu, 17 Oct 2024 13:24: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 1t1QUn-0005Zv-81; Thu, 17 Oct 2024 13:24:53 +0000
Received: by outflank-mailman (input) for mailman id 820578;
 Thu, 17 Oct 2024 13:24: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 1t1QUm-0005Zl-Bx; Thu, 17 Oct 2024 13:24: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 1t1QUm-00031Q-9F; Thu, 17 Oct 2024 13:24: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 1t1QUl-00061B-Qv; Thu, 17 Oct 2024 13:24:51 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1QUl-0000oN-QM; Thu, 17 Oct 2024 13:24: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=sEZcbh/DavdkixZadj6StEmAAu9sL8TIu2f6Ecy8m3s=; b=yAXvGlx3P11Zz6ngv7ltVvOuu8
	ZlLhhzIL3sOwCeOkqjVqv8CEshOu+Xp7hyFpyolj8oLalvSgL69lu7luM8ZCCYCmR8nbQ19+W3E3O
	C3RXLgx9WydnFUQF5vhZ8JwrGBL6gpO1zl+b3Ukx9WvXMkZH3Uh5Q8WhoyfgGEIL0yGE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188148-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 188148: regressions - FAIL
X-Osstest-Failures:
    libvirt:build-i386-xsm:xen-build:fail:regression
    libvirt:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:regression
    libvirt:build-arm64-pvops:kernel-build:fail:regression
    libvirt:test-arm64-arm64-libvirt:build-check(1):blocked:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:build-check(1):blocked:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:build-check(1):blocked:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    libvirt:test-armhf-armhf-libvirt: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-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-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=f7c89763b1a7a189f06fb61843bf2ba69028588b
X-Osstest-Versions-That:
    libvirt=e996536a3b9ffefe639820baad006a3db411157c
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 13:24:51 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-i386-xsm                6 xen-build                fail REGR. vs. 188108
 test-amd64-amd64-libvirt-vhd 22 leak-check/check         fail REGR. vs. 188108
 build-arm64-pvops             6 kernel-build             fail REGR. vs. 188108

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-libvirt      1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-qcow2  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-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188108
 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-libvirt     15 migrate-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-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 libvirt              f7c89763b1a7a189f06fb61843bf2ba69028588b
baseline version:
 libvirt              e996536a3b9ffefe639820baad006a3db411157c

Last test of basis   188108  2024-10-16 04:18:43 Z    1 days
Testing same since   188148  2024-10-17 04:20:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Adam Julis <ajulis@redhat.com>
  Andrea Bolognani <abologna@redhat.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Martin Kletzander <mkletzan@redhat.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               fail    
 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-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     blocked 
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-qcow2                               blocked 
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 blocked 
 test-amd64-amd64-libvirt-vhd                                 fail    
 test-armhf-armhf-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


Not pushing.

(No revision log; it would be 364 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 13:31:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 13:31:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820591.1234126 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1QbL-0007dB-MA; Thu, 17 Oct 2024 13:31:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820591.1234126; Thu, 17 Oct 2024 13:31: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 1t1QbL-0007cy-JG; Thu, 17 Oct 2024 13:31:39 +0000
Received: by outflank-mailman (input) for mailman id 820591;
 Thu, 17 Oct 2024 13:31: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1QbK-0007Yl-K9
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 13:31:38 +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 21e28026-8c8c-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 15:31:36 +0200 (CEST)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-5366fd6fdf1so1536290e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 06:31:36 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29817036sm299115166b.124.2024.10.17.06.31.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 06:31:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21e28026-8c8c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729171895; x=1729776695; 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=fZ9CyilDRJ9hcc5UhF8AJZBpprsEzy6yq5x+V3+UrsI=;
        b=VsqWJvTFpUpAfXUeLi2nmZXtXAGgj8Gj7J7kfvj3iVP5V2T5qf2XJzc87lISwuvGvw
         7Vy7c9NN277GE4HhjovzrekxUmZtxABHKG1H43Ld7u6jSZsfyjH+WkQ+F/Df05JkK7Fm
         j0t0McbpFVxqWrJVwHYoLokvZVI6oH9N5hlao=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729171895; x=1729776695;
        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=fZ9CyilDRJ9hcc5UhF8AJZBpprsEzy6yq5x+V3+UrsI=;
        b=T7pIfrPvUVL67Inwp7kb9BktCZS8KOAY/4b4pyPMn/D/S/w6ZfeHMBzsP1SY343U50
         FGPC4VvosYoXIJ2WgHG51kBhRYdQ8TuLhkzAQ0lugI3Bk2ln4T7E9T1AUKkwoAzLCydT
         pyoBzHsHfYSgNeNX34ZogPCx0HReadZUKfR6I/Oj2GKK+Un8qtiWVngV4Df/nQ6X0TVa
         1B2MTTLXjP35IMcaelXNNTQYBuxkDppT7KN2Dtd8ryCw2JKYh6mg4h3WXj9xdlCE7x/4
         AZjlIMpcXbT1G6VTsAGfhXzuauzoIMiIOr37K/i5Coi54qKcNZFJ3k9JY4FdRC1IrR0D
         Ni7Q==
X-Gm-Message-State: AOJu0YwWcC+/o8VEIAUdhnNucZgr2ECfav56bVBWzGQcckSBAm+s9Yad
	TyL3ungXmsG1M9sM3KEUOtM8qXRgL7SmmYgEsslQ2dUot/piDoMlOZm7sTaVb2h7L7+pXYjKPUf
	b
X-Google-Smtp-Source: AGHT+IErctvAnrUFXio0tyEeDTz1agZ8lWqX/qFwPX6eTI7Ki7+QcjFIYjiah0Jl/0rakksP8ZAvxQ==
X-Received: by 2002:a05:6512:2384:b0:539:ea66:597e with SMTP id 2adb3069b0e04-53a03f07225mr5393227e87.2.1729171895361;
        Thu, 17 Oct 2024 06:31:35 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v6 2/5] x86/boot: Reuse code to relocate trampoline
Date: Thu, 17 Oct 2024 14:31:20 +0100
Message-Id: <20241017133123.1946204-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Move code from efi-boot.h to a separate, new, reloc-trampoline.c file.
Reuse this new code, compiling it for 32bit as well, to replace assembly
code in head.S doing the same thing.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v3:
- fixed a typo in comment;
- added Reviewed-by.

Changes since v5:
- do not add obj64 to targets, already done adding it to obj-bin-y.
---
 xen/arch/x86/boot/Makefile           | 10 +++++---
 xen/arch/x86/boot/build32.lds.S      |  5 ++++
 xen/arch/x86/boot/head.S             | 23 +-----------------
 xen/arch/x86/boot/reloc-trampoline.c | 36 ++++++++++++++++++++++++++++
 xen/arch/x86/efi/efi-boot.h          | 15 ++----------
 5 files changed, 51 insertions(+), 38 deletions(-)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 5da19501be..98ceb1983d 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,11 +1,15 @@
 obj-bin-y += head.o
 obj-bin-y += built-in-32.o
+obj-bin-y += $(obj64)
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
+obj32 += reloc-trampoline.32.o
 
-nocov-y   += $(obj32)
-noubsan-y += $(obj32)
+obj64 := reloc-trampoline.o
+
+nocov-y   += $(obj32) $(obj64)
+noubsan-y += $(obj32) $(obj64)
 targets   += $(obj32)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
@@ -56,7 +60,7 @@ cmd_combine = \
 		--bin1 $(obj)/built-in-32.base.bin \
 		--bin2 $(obj)/built-in-32.offset.bin \
 		--map $(obj)/built-in-32.offset.map \
-		--exports cmdline_parse_early,reloc \
+		--exports cmdline_parse_early,reloc,reloc_trampoline32 \
 		--output $@
 
 targets += built-in-32.S
diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index e3f5e55261..fa282370f4 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -41,6 +41,11 @@ SECTIONS
          * Potentially they should be all variables. */
         DECLARE_IMPORT(__base_relocs_start);
         DECLARE_IMPORT(__base_relocs_end);
+        DECLARE_IMPORT(__trampoline_rel_start);
+        DECLARE_IMPORT(__trampoline_rel_stop);
+        DECLARE_IMPORT(__trampoline_seg_start);
+        DECLARE_IMPORT(__trampoline_seg_stop);
+        DECLARE_IMPORT(trampoline_phys);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0776e3896..ade2c5c43d 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -706,28 +706,7 @@ trampoline_setup:
         mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
 
         /* Apply relocations to bootstrap trampoline. */
-        mov     sym_esi(trampoline_phys), %edx
-        lea     sym_esi(__trampoline_rel_start), %edi
-        lea     sym_esi(__trampoline_rel_stop), %ecx
-1:
-        mov     (%edi), %eax
-        add     %edx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
-
-        /* Patch in the trampoline segment. */
-        shr     $4,%edx
-        lea     sym_esi(__trampoline_seg_start), %edi
-        lea     sym_esi(__trampoline_seg_stop), %ecx
-1:
-        mov     (%edi), %eax
-        mov     %dx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
+        call    reloc_trampoline32
 
         /* Do not parse command line on EFI platform here. */
         cmpb    $0, sym_esi(efi_platform)
diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
new file mode 100644
index 0000000000..0a74c1e75a
--- /dev/null
+++ b/xen/arch/x86/boot/reloc-trampoline.c
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/compiler.h>
+#include <xen/stdint.h>
+#include <asm/trampoline.h>
+
+extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+
+#if defined(__i386__)
+void reloc_trampoline32(void)
+#elif defined (__x86_64__)
+void reloc_trampoline64(void)
+#else
+#error Unknown architecture
+#endif
+{
+    unsigned long phys = trampoline_phys;
+    const int32_t *trampoline_ptr;
+
+    /*
+     * Apply relocations to trampoline.
+     *
+     * This modifies the trampoline in place within Xen, so that it will
+     * operate correctly when copied into place.
+     */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f3443364..1acceec471 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned long delta)
     }
 }
 
-extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+void reloc_trampoline64(void);
 
 static void __init relocate_trampoline(unsigned long phys)
 {
-    const int32_t *trampoline_ptr;
-
     trampoline_phys = phys;
 
     if ( !efi_enabled(EFI_LOADER) )
         return;
 
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+    reloc_trampoline64();
 }
 
 static void __init place_string(u32 *addr, const char *s)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 13:31:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 13:31:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820590.1234111 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1QbJ-0007F6-Em; Thu, 17 Oct 2024 13:31:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820590.1234111; Thu, 17 Oct 2024 13:31: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 1t1QbJ-0007Cl-B6; Thu, 17 Oct 2024 13:31:37 +0000
Received: by outflank-mailman (input) for mailman id 820590;
 Thu, 17 Oct 2024 13:31: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1QbI-00079Y-O6
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 13:31:36 +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 21641546-8c8c-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 15:31:35 +0200 (CEST)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-431286f50e1so13610905e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 06:31:35 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29817036sm299115166b.124.2024.10.17.06.31.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 06:31:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21641546-8c8c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729171895; x=1729776695; 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=aTukZVgKzhy9d/EZhN5tjFy+YSVWDkf6PLq9hRFbkpM=;
        b=fKGkYArtg+mto6xbLI0bNYZrMX8LygRS5InFCKuWhKQVHY8V/zCzotIQyIXznMMmsf
         ieJ2hkWvFinR6QM2Wx+SN2YCWavxfmt9y6lVEdJJjy6pzqGIglthPfMwE+7IHa6coWAc
         R5ftoLmT1iMPA93NlC+Eq4a7O7In3svgXrRBE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729171895; x=1729776695;
        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=aTukZVgKzhy9d/EZhN5tjFy+YSVWDkf6PLq9hRFbkpM=;
        b=FUAhTLcD6uOWrz7DRLb0LZo8iVtNjBITcglbVnv7nrdo1u8wvaLro17jVXYVUCCoYC
         9qQzZUv7xpO3ohMoxD0GKa0WGUJVb5c0i+CrYQBu7vv8ZOQME+ByOeWsntZioIre+bym
         xurLDl6x/5UMlptKT4tGyWCi163C9JTrD6c7LMoz/PiRdhZptW/MOYkdk22JWeIhMphO
         IA6EEDvH7ZrlJFRR0xPloi3VMnh3r+cKpnBCGLG4DAr+QDy6l4fSj2TZkawP2uFYaaku
         hqTEGIClsJXzzKimnu9PpDIoWIPaF8yxE1NOq1fVb6vzPcCKKELmo9wwuxgyMAInTT3N
         IdKw==
X-Gm-Message-State: AOJu0YxcXZa/GgVRsqtZ+j5w+0wBHBcpgpJmsHFVWAo7Xr96T7pqJABB
	NPFZLMyNqPcDbino40nBqfWJklVY6hxHF7ncJOvyZi6d9Johoehe/3FVFPdQ8AaXL2OERkUxQN7
	T
X-Google-Smtp-Source: AGHT+IHkTEuRhWe96GPNZ6Y+ZAg0GdHr85Kbc09J+RXHqj4JULeE4Wwt0YbTGMFzV3DGDWn1sUrvMA==
X-Received: by 2002:a5d:4b92:0:b0:37c:fbf8:fc4 with SMTP id ffacd0b85a97d-37d601fc350mr16482223f8f.59.1729171894559;
        Thu, 17 Oct 2024 06:31:34 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code and use it
Date: Thu, 17 Oct 2024 14:31:19 +0100
Message-Id: <20241017133123.1946204-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The current method to include 32 bit C boot code is:
- compile each function we want to use into a separate object file;
- each function is compiled with -fpic option;
- convert these object files to binary files. This operation removes GOP
  which we don't want in the executable;
- a small assembly part in each file add the entry point;
- code can't have external references, all possible variables are passed
  by value or pointer;
- include these binary files in head.S.

There are currently some limitations:
- code is compiled separately, it's not possible to share a function
  (like memcpy) between different functions to use;
- although code is compiled with -fpic there's no certainty there are
  no relocations, specifically data ones. This can lead into hard to
  find bugs;
- it's hard to add a simple function;
- having to pass external variables makes hard to do multiple things
  otherwise functions would require a lot of parameters so code would
  have to be split into multiple functions which is not easy.

Current change extends the current process:
- all object files are linked together before getting converted making
  possible to share code between the function we want to call;
- a single object file is generated with all functions to use and
  exported symbols to easily call;
- variables to use are declared in linker script and easily used inside
  C code. Declaring them manually could be annoying but makes also
  easier to check them. Using external pointers can be still an issue if
  they are not fixed. If an external symbol is not declared this gives a
  link error.

Some details of the implementation:
- C code is compiled with -fpic flags (as before);
- object files from C code are linked together;
- the single bundled object file is linked with 2 slightly different
  script files to generate 2 bundled object files;
- the 2 bundled object files are converted to binary removing the need
  for global offset tables;
- a Python script is used to generate assembly source from the 2
  binaries;
- the single assembly file is compiled to generate final bundled object
  file;
- to detect possible unwanted relocation in data/code code is generated
  with different addresses. This is enforced starting .text section at
  different positions and adding a fixed "gap" at the beginning.
  This makes sure code and data is position independent;
- to detect used symbols in data/code symbols are placed in .text
  section at different offsets (based on the line in the linker script).
  This is needed as potentially a reference to a symbol is converted to
  a reference to the containing section so multiple symbols could be
  converted to reference to same symbol (section name) and we need to
  distinguish them;
- --orphan-handling=error option to linker is used to make sure we
  account for all possible sections from C code;

Current limitations:
- the main one is the lack of support for 64 bit code. It would make
  sure that even the code used for 64 bit (at the moment EFI code) is
  code and data position independent. We cannot assume that code that
  came from code compiled for 32 bit and compiled for 64 bit is code and
  data position independent, different compiler options lead to
  different code/data.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v2:
- removed W^X limitation, allowing data;
- added some comments to python script;
- added extension to python script;
- added header to generated assembly code from python script;
- added starting symbol to generated assembly code from python script
  to make disassembly more clear;
- other minor style changes to python script.

Changes since v4:
- add build32.final.lds build32.other.lds to targets macro;
- place some comments over a rule, not inside;
- simplified linking and producing binary rule;
- renamed built_in_32 to built-in-32, coding style;
- fix minor indentation;
- put magic numbers in Makefile and propagate them;
- minor variable cleanups in Python script;
- add dependency to Python script.

Changes since v5:
- renamed "other" and "final" phases to "base" and "offset";
- use if_changed macro to generate built-in-32.S.
---
 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  47 +++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  35 ++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  12 -
 xen/arch/x86/boot/reloc.c                     |  14 --
 xen/tools/combine_two_binaries.py             | 220 ++++++++++++++++++
 7 files changed, 292 insertions(+), 53 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (70%)
 create mode 100755 xen/tools/combine_two_binaries.py

diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
index a379db7988..7e85549751 100644
--- a/xen/arch/x86/boot/.gitignore
+++ b/xen/arch/x86/boot/.gitignore
@@ -1,3 +1,4 @@
 /mkelf32
-/*.bin
-/*.lnk
+/build32.*.lds
+/built-in-32.*.bin
+/built-in-32.*.map
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 1199291d2b..5da19501be 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,4 +1,5 @@
 obj-bin-y += head.o
+obj-bin-y += built-in-32.o
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
@@ -9,9 +10,6 @@ targets   += $(obj32)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
-$(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(obj32:.32.o=.bin)
-
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
 CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
@@ -25,14 +23,47 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
 $(obj)/%.32.o: $(src)/%.c FORCE
 	$(call if_changed_rule,cc_o_c)
 
+orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
 LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
 
-%.bin: %.lnk
-	$(OBJCOPY) -j .text -O binary $< $@
+text_gap := 0x010200
+text_diff := 0x408020
+
+$(obj)/build32.base.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff)
+$(obj)/build32.offset.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff) -DFINAL
+$(obj)/build32.base.lds $(obj)/build32.offset.lds: $(src)/build32.lds.S FORCE
+	$(call if_changed_dep,cpp_lds_S)
+
+targets += build32.offset.lds build32.base.lds
+
+# link all 32bit objects together
+$(obj)/built-in-32.tmp.o: $(obj32)
+	$(LD32) -r -o $@ $^
+
+# link bundle with a given layout and extract a binary from it
+$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.o
+	$(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=map) -o $(@:bin=o) $(filter %.o,$^)
+	$(OBJCOPY) -j .text -O binary $(@:bin=o) $@
+	rm -f $(@:bin=o)
+
+quiet_cmd_combine = GEN     $@
+cmd_combine = \
+	$(PYTHON) $(srctree)/tools/combine_two_binaries.py \
+		--gap=$(text_gap) --text-diff=$(text_diff) \
+		--script $(obj)/build32.offset.lds \
+		--bin1 $(obj)/built-in-32.base.bin \
+		--bin2 $(obj)/built-in-32.offset.bin \
+		--map $(obj)/built-in-32.offset.map \
+		--exports cmdline_parse_early,reloc \
+		--output $@
+
+targets += built-in-32.S
 
-%.lnk: %.32.o $(src)/build32.lds
-	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
+# generate final object file combining and checking above binaries
+$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.offset.bin \
+		$(srctree)/tools/combine_two_binaries.py FORCE
+	$(call if_changed,combine)
 
-clean-files := *.lnk *.bin
+clean-files := built-in-32.*.bin built-in-32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
similarity index 70%
rename from xen/arch/x86/boot/build32.lds
rename to xen/arch/x86/boot/build32.lds.S
index 56edaa727b..e3f5e55261 100644
--- a/xen/arch/x86/boot/build32.lds
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -15,22 +15,47 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-ENTRY(_start)
+#ifdef FINAL
+#  undef GAP
+#  define GAP 0
+#  define MULT 0
+#  define TEXT_START
+#else
+#  define MULT 1
+#  define TEXT_START TEXT_DIFF
+#endif
+#define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
+
+ENTRY(dummy_start)
 
 SECTIONS
 {
   /* Merge code and data into one section. */
-  .text : {
+  .text TEXT_START : {
+        /* Silence linker warning, we are not going to use it */
+        dummy_start = .;
+
+        /* Declare below any symbol name needed.
+         * Each symbol should be on its own line.
+         * It looks like a tedious work but we make sure the things we use.
+         * Potentially they should be all variables. */
+        DECLARE_IMPORT(__base_relocs_start);
+        DECLARE_IMPORT(__base_relocs_end);
+        . = . + GAP;
         *(.text)
         *(.text.*)
-        *(.data)
-        *(.data.*)
         *(.rodata)
         *(.rodata.*)
+        *(.data)
+        *(.data.*)
         *(.bss)
         *(.bss.*)
   }
-
+  /DISCARD/ : {
+       *(.comment)
+       *(.comment.*)
+       *(.note.*)
+  }
   /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
   .got : {
         *(.got)
diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index fc9241ede9..196c580e91 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -18,18 +18,6 @@
  * Linux kernel source (linux/lib/string.c).
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax      = &cmdline,
- *   - %edx      = &early_boot_opts.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  cmdline_parse_early      \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/kconfig.h>
 #include <xen/macros.h>
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index c4de1dfab5..e0776e3896 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -759,18 +759,6 @@ trampoline_setup:
         /* Jump into the relocated trampoline. */
         lret
 
-        /*
-         * cmdline and reloc are written in C, and linked to be 32bit PIC with
-         * entrypoints at 0 and using the fastcall convention.
-         */
-FUNC_LOCAL(cmdline_parse_early)
-        .incbin "cmdline.bin"
-END(cmdline_parse_early)
-
-FUNC_LOCAL(reloc)
-        .incbin "reloc.bin"
-END(reloc)
-
 ENTRY(trampoline_start)
 #include "trampoline.S"
 ENTRY(trampoline_end)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 8c58affcd9..94b078d7b1 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -12,20 +12,6 @@
  *    Daniel Kiper <daniel.kiper@oracle.com>
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax       = MAGIC,
- *   - %edx       = INFORMATION_ADDRESS,
- *   - %ecx       = TOPMOST_LOW_MEMORY_STACK_ADDRESS.
- *   - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  reloc                    \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/macros.h>
 #include <xen/types.h>
diff --git a/xen/tools/combine_two_binaries.py b/xen/tools/combine_two_binaries.py
new file mode 100755
index 0000000000..264be77274
--- /dev/null
+++ b/xen/tools/combine_two_binaries.py
@@ -0,0 +1,220 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+import argparse
+import functools
+import re
+import struct
+import sys
+
+parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
+auto_int = functools.update_wrapper(lambda x: int(x, 0), int) # allows hex
+parser.add_argument('--script', dest='script',
+                    required=True,
+                    help='Linker script for extracting symbols')
+parser.add_argument('--bin1', dest='bin1',
+                    required=True,
+                    help='First binary')
+parser.add_argument('--bin2', dest='bin2',
+                    required=True,
+                    help='Second binary')
+parser.add_argument('--gap', dest='gap',
+                    required=True,
+                    type=auto_int,
+                    help='Gap inserted at the start of code section')
+parser.add_argument('--text-diff', dest='text_diff',
+                    required=True,
+                    type=auto_int,
+                    help='Difference between code section start')
+parser.add_argument('--output', dest='output',
+                    help='Output file')
+parser.add_argument('--map', dest='mapfile',
+                    help='Map file to read for symbols to export')
+parser.add_argument('--exports', dest='exports',
+                    help='Symbols to export')
+parser.add_argument('--section-header', dest='section_header',
+                    default='.section .init.text, "ax", @progbits',
+                    help='Section header declaration')
+parser.add_argument('-v', '--verbose',
+                    action='store_true')
+args = parser.parse_args()
+
+gap = args.gap
+text_diff = args.text_diff
+
+# Parse linker script for external symbols to use.
+# Next regex matches expanded DECLARE_IMPORT lines in linker script.
+symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')
+symbols = {}
+lines = {}
+for line in open(args.script):
+    m = symbol_re.match(line)
+    if not m:
+        continue
+    (name, line_num) = (m.group(1), int(m.group(2)))
+    if line_num == 0:
+        raise Exception("Invalid line number found:\n\t" + line)
+    if line_num in symbols:
+        raise Exception("Symbol with this line already present:\n\t" + line)
+    if name in lines:
+        raise Exception("Symbol with this name already present:\n\t" + name)
+    symbols[line_num] = name
+    lines[name] = line_num
+
+exports = []
+if args.exports is not None:
+    exports = dict([(name, None) for name in args.exports.split(',')])
+
+# Parse mapfile, look for ther symbols we want to export.
+if args.mapfile is not None:
+    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
+    for line in open(args.mapfile):
+        m = symbol_re.match(line)
+        if not m or m.group(2) not in exports:
+            continue
+        addr = int(m.group(1), 16)
+        exports[m.group(2)] = addr
+for (name, addr) in exports.items():
+    if addr is None:
+        raise Exception("Required export symbols %s not found" % name)
+
+file1 = open(args.bin1, 'rb')
+file2 = open(args.bin2, 'rb')
+file1.seek(0, 2)
+size1 = file1.tell()
+file2.seek(0, 2)
+size2 = file2.tell()
+if size1 > size2:
+    file1, file2 = file2, file1
+    size1, size2 = size2, size1
+if size2 != size1 + gap:
+    raise Exception('File sizes do not match')
+del size2
+
+file1.seek(0, 0)
+data1 = file1.read(size1)
+del file1
+file2.seek(gap, 0)
+data2 = file2.read(size1)
+del file2
+
+max_line = max(symbols.keys())
+
+def to_int32(n):
+    '''Convert a number to signed 32 bit integer truncating if needed'''
+    mask = (1 << 32) - 1
+    h = 1 << 31
+    return (n & mask) ^ h - h
+
+i = 0
+references = {}
+internals = 0
+while i <= size1 - 4:
+    n1 = struct.unpack('<I', data1[i:i+4])[0]
+    n2 = struct.unpack('<I', data2[i:i+4])[0]
+    i += 1
+    # The two numbers are the same, no problems
+    if n1 == n2:
+        continue
+    # Try to understand why they are different
+    diff = to_int32(n1 - n2)
+    if diff == -gap: # this is an internal relocation
+        pos = i - 1
+        print("Internal relocation found at position %#x "
+              "n1=%#x n2=%#x diff=%#x" % (pos, n1, n2, diff),
+              file=sys.stderr)
+        i += 3
+        internals += 1
+        if internals >= 10:
+            break
+        continue
+    # This is a relative relocation to a symbol, accepted, code/data is
+    # relocatable.
+    if diff < gap and diff >= gap - max_line:
+        n = gap - diff
+        symbol = symbols.get(n)
+        # check we have a symbol
+        if symbol is None:
+            raise Exception("Cannot find symbol for line %d" % n)
+        pos = i - 1
+        if args.verbose:
+            print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
+        i += 3
+        references[pos] = symbol
+        continue
+    # First byte is the same, move to next byte
+    if diff & 0xff == 0 and i <= size1 - 4:
+       continue
+    # Probably a type of relocation we don't want or support
+    pos = i - 1
+    suggestion = ''
+    symbol = symbols.get(-diff - text_diff)
+    if symbol is not None:
+        suggestion = " Maybe %s is not defined as hidden?" % symbol
+    raise Exception("Unexpected difference found at %#x "
+                    "n1=%#x n2=%#x diff=%#x gap=%#x.%s" % \
+                    (pos, n1, n2, diff, gap, suggestion))
+if internals != 0:
+    raise Exception("Previous relocations found")
+
+def line_bytes(buf, out):
+    '''Output an assembly line with all bytes in "buf"'''
+    # Python 2 compatibility
+    if type(buf) == str:
+        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
+    else:
+        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)
+
+def part(start, end, out):
+    '''Output bytes of "data" from "start" to "end"'''
+    while start < end:
+        e = min(start + 16, end)
+        line_bytes(data1[start:e], out)
+        start = e
+
+def reference(pos, out):
+    name = references[pos]
+    n = struct.unpack('<I', data1[pos:pos+4])[0]
+    sign = '+'
+    if n >= (1 << 31):
+        n -= (1 << 32)
+    n += pos
+    if n < 0:
+        n = -n
+        sign = '-'
+    print("\t.hidden %s\n"
+          "\t.long %s %s %#x - ." % (name, name, sign, n),
+          file=out)
+
+def output(out):
+    prev = 0
+    exports_by_addr = {}
+    for (sym, addr) in exports.items():
+        exports_by_addr.setdefault(addr, []).append(sym)
+    positions = list(references.keys())
+    positions += list(exports_by_addr.keys())
+    for pos in sorted(positions):
+        part(prev, pos, out)
+        prev = pos
+        if pos in references:
+            reference(pos, out)
+            prev = pos + 4
+        if pos in exports_by_addr:
+            for sym in exports_by_addr[pos]:
+                print("\t.global %s\n"
+                      "\t.hidden %s\n"
+                      "%s:" % (sym, sym, sym),
+                      file=out)
+    part(prev, size1, out)
+
+out = sys.stdout
+if args.output is not None:
+    out = open(args.output, 'w')
+print('''/*
+ * File autogenerated by combine_two_binaries.py DO NOT EDIT
+ */''', file=out)
+print('\t' + args.section_header, file=out)
+print('obj32_start:', file=out)
+output(out)
+print('\n\t.section\t.note.GNU-stack,"",@progbits', file=out)
+out.flush()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 13:31:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 13:31:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820592.1234136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1QbN-0007ss-36; Thu, 17 Oct 2024 13:31:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820592.1234136; Thu, 17 Oct 2024 13: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 1t1QbM-0007sd-W3; Thu, 17 Oct 2024 13:31:40 +0000
Received: by outflank-mailman (input) for mailman id 820592;
 Thu, 17 Oct 2024 13:31: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1QbL-00079Y-8E
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 13:31:39 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 23512cb5-8c8c-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 15:31:38 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539f1292a9bso1256718e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 06:31:38 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29817036sm299115166b.124.2024.10.17.06.31.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 06:31:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 23512cb5-8c8c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729171898; x=1729776698; 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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=QgEVa7OmJ+TwPHVt5a1XLA0+1paZfixgP5b/ei2Anfu5yvP/PIUUth6gL9I4VaLFwZ
         52bUQicR/FaZ2jK0SQV27cQ00Ej5ZSr+DaCHuD3ZsMiMs+t1rWV0fMfsyyVqeF0UF9L3
         0REXYC1QqLdlzCw5oRa/1/lYEb/bBWx4oiN5o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729171898; x=1729776698;
        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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=SZjzvII2KQn+AK+QMVcF32O3Tk/Y97cyWyWcVIVqv8gRAgCZS9wz2qGI7gNHJsXeaH
         cUk1kpVhIfihNJ3ck0R16PY4Aai8pqi6WwA3r5d+ZQRBK/dTNFA90nD0IEg256WXY0az
         IDTtYEHK4bDjgn2AH/WFDOZ35EaJFp9GGilFeX+p57Uasp5YtHC1WWgMsFLNk7zUIzKF
         SUL2Sz1AJhwVjMWID/HfWabKSYq/yCypBYMfhSXcCsTEXYoYOWzo0XRtewValhmKqFEo
         g2jXtsrxxH2rSZ4CqZ+hUM9m3Coymld004TrwBjqhBXTU0g+/cgESu6OCoXCkFf0uV9b
         cSlQ==
X-Gm-Message-State: AOJu0Yxbwwf1GYdF/zj4R4I99lYvhuiWMfDz36w/bzD0lFuKWFjefoNx
	BYM6lxL6Zbk5otX0hU1IxgbTsIuVsxFrN9gzmSwN5reyC+Po8LY7Y/Lup3OKYZncVLAw3TWBP4b
	C
X-Google-Smtp-Source: AGHT+IFQ8m7GP7IvMkAOFAVyuP9c1bo224/GXyA7Alb7lgZRKE1PAPj0LVHeXKyTyxPZGR/uiwNpDw==
X-Received: by 2002:a05:6512:2384:b0:539:ea66:597e with SMTP id 2adb3069b0e04-53a03f07225mr5393333e87.2.1729171898000;
        Thu, 17 Oct 2024 06:31:38 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v6 5/5] x86/boot: Clarify comment
Date: Thu, 17 Oct 2024 14:31:23 +0100
Message-Id: <20241017133123.1946204-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/reloc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index e50e161b27..e725cfb6eb 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -65,7 +65,7 @@ typedef struct memctx {
     /*
      * Simple bump allocator.
      *
-     * It starts from the base of the trampoline and allocates downwards.
+     * It starts on top of space reserved for the trampoline and allocates downwards.
      */
     uint32_t ptr;
 } memctx;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 13:31:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 13:31:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820589.1234106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1QbJ-00079q-4Y; Thu, 17 Oct 2024 13:31:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820589.1234106; Thu, 17 Oct 2024 13:31: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 1t1QbJ-00079j-1r; Thu, 17 Oct 2024 13:31:37 +0000
Received: by outflank-mailman (input) for mailman id 820589;
 Thu, 17 Oct 2024 13:31: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1QbH-00079Y-Ir
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 13:31:35 +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 20be2bbc-8c8c-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 15:31:34 +0200 (CEST)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a9a0ec0a94fso107849366b.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 06:31:34 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29817036sm299115166b.124.2024.10.17.06.31.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 06:31:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 20be2bbc-8c8c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729171894; x=1729776694; 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=SP6seo58K4cH9wg+ocd7+U6wN3oOt+d1Z2RdEKLkXDs=;
        b=SfsW/BhVcaIjubR2D4NQEfCun7weFKhg+Oc7ELPK9d0y63wkR/8Wz0p9RTXsttqhZT
         wbbORCcoeVlHnnQASE4eyHUFR8O/OgJAnkGeoXHOS/NbJVSEZdHjQPYjbENkQ0zJE5mz
         3LdLxyNg6duAIfXOTArioSwzZErzqhNjzhYS0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729171894; x=1729776694;
        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=SP6seo58K4cH9wg+ocd7+U6wN3oOt+d1Z2RdEKLkXDs=;
        b=bMicwqWzMoNYlTk/FkztXuCzt6aG3brGMRXrlJbQ/A8EeAHpjr32nhElIib23w/vvo
         QJJO5W1AITxbIv/b36H2O5mUJ9VeiLAIn1BooajhYKqhGEi+GeVHvl9jTB5hHIfpFEmv
         45Rcg3niIy0t7o06SKAJEC0rYDRa2D29qJorl/h6Haz2bznsBDYrumu3ZTnY0vVimtxg
         0R4v679JxcLw85F8fgFYjerz8wF6Ta8hTh6oUdj3F/UdBi6BnPbqp17qH3Ld6eKHjTKP
         hGps7/hHh1PSLQk2Q7q3ZyOjNiZ8QNaNdogrtka9GZemPeL5MkLFWp3BUnnqhDsNZUs3
         sBpw==
X-Gm-Message-State: AOJu0YygI9ITYrQGN6kCjZE1Q9HlzaIAJufhgkWinrZCol3ZF2nBUYO3
	gNovgMWMy80+ZAI26EU10ZwWK32LvHqHnmIoFpQy79WIgAjzHZ6ns6vX4ibbN/TRMCJrtRNSkdh
	j
X-Google-Smtp-Source: AGHT+IF4lJImkM6oBHMVbUFsEFD3MuknR5bb55goIWcdD92rIhqDNn0MthS99UDP6IYwoJTNyOjrtw==
X-Received: by 2002:a17:907:e2cd:b0:a9a:c0b:d21c with SMTP id a640c23a62f3a-a9a34cb7ef2mr612849066b.18.1729171893568;
        Thu, 17 Oct 2024 06:31:33 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v6 0/5] Reuse 32 bit C code more safely
Date: Thu, 17 Oct 2024 14:31:18 +0100
Message-Id: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series attempt to:
- use more C code, that is replace some assembly code with C;
- avoid some code duplication between C and assembly;
- prevent some issues having relocations in C code.

The idea is extending the current C to binary code conversion
done for 32 bit C code called from head.S making sure relocations
are safe and allowing external symbols usage from C code.

More details of the implementation are in commit message 1/5,
which is the largest patch.
Patch 2/5 reuses code to relocate the trampoline between 32 and 64 bit.
Patches 3/5 and 4/5 move some code from assembly to C.

Other RFC commits were excluded, I didn't manage to entangle the issues
sharing headers between 32 and 64 bits.
Since RFC code was more tested, also with CI and some incompatibility
were fixed. On that it's weird that we need Python 3.8 for Qemu but we
still use Python 2 for Xen. Shouldn't we bump requirement to Python 3
even for Xen?

Code boots successfully using:
- BIOS boot;
- EFI boot with Grub2 and ELF file;
- direct EFI boot without Grub.

Code is currently based on "master" branch, currently commit
47990ecef286606794d607d4ca8703d71c98d659.

Changes since v1:
- 2 preliminary commits for adjust .gitignore;
- last commit split (one variable at a time);
- lot of style and names changes;
- first commit, now 3/6 had some build changes, more details on
  commit message.

Changes since v2:
- removed merged commits;
- reverted order of 2 commits;
- remove some useless casts;
- added change to comment.

Changes since v3:
- added a preparation commit for Makefiles (mainly written by Andrew Cooper);
- added a comment improvement commit;
- allows also data;
- other minor style changes;
- added some Reviewed-by.

Changes since v4:
- add build32.final.lds build32.other.lds to targets macro;
- place some comments over a rule, not inside;
- simplified linking and producing binary rule;
- renamed built_in_32 to built-in-32, coding style;
- fix minor indentation;
- put magic numbers in Makefile and propagate them;
- minor variable clanups in Python script;
- add dependency to Python script.

Changes since v5:
- all Makefile changes;
- renamed "other" and "final" phases to "base" and "offset";
- use if_changed macro to generate built-in-32.S;
- do not add obj64 to targets, already done adding it to obj-bin-y.

Frediano Ziglio (5):
  x86/boot: create a C bundle for 32 bit boot code and use it
  x86/boot: Reuse code to relocate trampoline
  x86/boot: Use boot_vid_info variable directly from C code
  x86/boot: Use trampoline_phys variable directly from C code
  x86/boot: Clarify comment

 xen/arch/x86/boot/.gitignore                  |   5 +-
 xen/arch/x86/boot/Makefile                    |  55 ++++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  41 +++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  49 +---
 xen/arch/x86/boot/reloc-trampoline.c          |  36 +++
 xen/arch/x86/boot/reloc.c                     |  35 +--
 xen/arch/x86/efi/efi-boot.h                   |  15 +-
 xen/tools/combine_two_binaries.py             | 220 ++++++++++++++++++
 9 files changed, 355 insertions(+), 113 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (63%)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
 create mode 100755 xen/tools/combine_two_binaries.py

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 13:31:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 13:31:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820593.1234140 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1QbN-0007vr-Dt; Thu, 17 Oct 2024 13:31:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820593.1234140; Thu, 17 Oct 2024 13: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 1t1QbN-0007v8-8P; Thu, 17 Oct 2024 13:31:41 +0000
Received: by outflank-mailman (input) for mailman id 820593;
 Thu, 17 Oct 2024 13:31: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1QbL-0007Yl-98
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 13:31:39 +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 223c76a0-8c8c-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 15:31:37 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c99be0a4bbso1367226a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 06:31:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29817036sm299115166b.124.2024.10.17.06.31.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 06:31:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 223c76a0-8c8c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729171896; x=1729776696; 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=XzEVlEnNeKtsG4oZ8vIN3HV3hoDau6dk7zOGpeVNZ9s=;
        b=fi+RtnsGWTd6Jcj4TsDLuflGNx5hUaGq1/kX2kcJwcQydiTEtlZ/+n1CV5ejVNFxyO
         Tw2EL55WZcUz56mpg2JPbTdgqgLuOLIfz+BssnovXM7L5CE/cx9GLb7Fe4++7SYkbp5v
         W3mlGfWca0Da/AeUPDWhs8JdLGqfI/VUoT6EE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729171896; x=1729776696;
        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=XzEVlEnNeKtsG4oZ8vIN3HV3hoDau6dk7zOGpeVNZ9s=;
        b=dnu5gP4ivCdqyGwG0CbNHDrprDly0RxdKZxojUj/Vnlqg2HVjneK09CPVIHOdsL90j
         22+iQpOW086TcOka2bQWrN659Y7UJ0g/JOaakCrxJfZbpaHNI5v27/FDqZc7PwdXIa5J
         +B2ytRQZ/zhd+mWQy3G86pnluxvoZb7P3vcK3/FiE71qsA/BNfbuoyEuG310GS1M2OvZ
         e91hGIVgtq+0vNRNiW7EJzI4X2d0VtpCZZ4aaqfx2kKrAZ9RZGwQUivvbtscgwBhDVHO
         9kJK94Ea/jMSHtjl5B0bphQBp3HXqDeIpWaAA0xCEXj0MBTmx7CaOzM55iuMAdsyhTyh
         iJkA==
X-Gm-Message-State: AOJu0YzPQsQHEaeTrDul+UoV/tjIXNnSdBd3doH79wuut7CwITiU1PKf
	0+C832pWF3TuFE4hk7ZwZLf+bPIqfUnBS4ceie2OIM2OyHIDOGea45F2ZGj0O3M+QfQRGti93sn
	m
X-Google-Smtp-Source: AGHT+IGWyhuxM7dJJSlPTmg2r0XRuRDKeUhaUqGi1S7DhQ/mgftCJznObm2bf8PG4/w9z+TZwuU/jw==
X-Received: by 2002:a17:907:940c:b0:a9a:f53:a5c6 with SMTP id a640c23a62f3a-a9a0f53a8d2mr1364462866b.65.1729171896126;
        Thu, 17 Oct 2024 06:31:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v6 3/5] x86/boot: Use boot_vid_info variable directly from C code
Date: Thu, 17 Oct 2024 14:31:21 +0100
Message-Id: <20241017133123.1946204-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order.
---
 xen/arch/x86/boot/build32.lds.S |  1 +
 xen/arch/x86/boot/head.S        | 10 +---------
 xen/arch/x86/boot/reloc.c       | 13 +++++--------
 3 files changed, 7 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index fa282370f4..88b1964845 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -46,6 +46,7 @@ SECTIONS
         DECLARE_IMPORT(__trampoline_seg_start);
         DECLARE_IMPORT(__trampoline_seg_stop);
         DECLARE_IMPORT(trampoline_phys);
+        DECLARE_IMPORT(boot_vid_info);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index ade2c5c43d..5da7ac138f 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -514,18 +514,10 @@ trampoline_setup:
         mov     sym_esi(trampoline_phys), %ecx
         add     $TRAMPOLINE_SPACE,%ecx
 
-#ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %edx
-#else
-        xor     %edx, %edx
-#endif
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
-        push    %edx                /* Boot video info to be filled from MB2. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
         call    reloc
-        add     $4, %esp
 
 #ifdef CONFIG_PVH_GUEST
         cmpb    $0, sym_esi(pvh_boot)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 94b078d7b1..707d9c5f15 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -176,7 +176,7 @@ static multiboot_info_t *mbi_reloc(uint32_t mbi_in, memctx *ctx)
     return mbi_out;
 }
 
-static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx *ctx)
+static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 {
     const multiboot2_fixed_t *mbi_fix = _p(mbi_in);
     const multiboot2_memory_map_t *mmap_src;
@@ -185,7 +185,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
     memory_map_t *mmap_dst;
     multiboot_info_t *mbi_out;
 #ifdef CONFIG_VIDEO
-    struct boot_video_info *video = NULL;
+    struct boot_video_info *video = &boot_vid_info;
 #endif
     uint32_t ptr;
     unsigned int i, mod_idx = 0;
@@ -290,12 +290,11 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 
 #ifdef CONFIG_VIDEO
         case MULTIBOOT2_TAG_TYPE_VBE:
-            if ( video_out )
+            if ( video )
             {
                 const struct vesa_ctrl_info *ci;
                 const struct vesa_mode_info *mi;
 
-                video = _p(video_out);
                 ci = (const void *)get_mb2_data(tag, vbe, vbe_control_info);
                 mi = (const void *)get_mb2_data(tag, vbe, vbe_mode_info);
 
@@ -321,7 +320,6 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
             if ( (get_mb2_data(tag, framebuffer, framebuffer_type) !=
                   MULTIBOOT2_FRAMEBUFFER_TYPE_RGB) )
             {
-                video_out = 0;
                 video = NULL;
             }
             break;
@@ -346,8 +344,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
-            uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
 {
     memctx ctx = { trampoline };
 
@@ -357,7 +354,7 @@ void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
         return mbi_reloc(in, &ctx);
 
     case MULTIBOOT2_BOOTLOADER_MAGIC:
-        return mbi2_reloc(in, video_info, &ctx);
+        return mbi2_reloc(in, &ctx);
 
     case XEN_HVM_START_MAGIC_VALUE:
         if ( IS_ENABLED(CONFIG_PVH_GUEST) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 13:31:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 13:31:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820594.1234147 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1QbN-00081S-SE; Thu, 17 Oct 2024 13:31:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820594.1234147; Thu, 17 Oct 2024 13: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 1t1QbN-00080G-Is; Thu, 17 Oct 2024 13:31:41 +0000
Received: by outflank-mailman (input) for mailman id 820594;
 Thu, 17 Oct 2024 13: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=ZcP3=RN=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1QbM-0007Yl-9d
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 13:31:40 +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 22c4da06-8c8c-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 15:31:38 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so125863266b.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 06:31:38 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29817036sm299115166b.124.2024.10.17.06.31.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 06:31:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 22c4da06-8c8c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729171897; x=1729776697; 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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=hfvgJ7F4jiCfxikslPkJ6i1P5OKOMRuqlMUEX4FX+0Ov9iSWe8x1Qzzy0Qw2W/6/1i
         5aK9JJfMm81DG9KzAWWB8Ho4/YAuuFgLzG5hG1xxbhj2jPvDAZr55HlSlLl4JoMacuc+
         +Y6A2mNiJuNAtldy3g4k8xC1d1r8cJLLuE4w0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729171897; x=1729776697;
        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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=Q3g1m7wEbR09fKNOvAI3qk9VL5bcO5BgeOrXcxeQokydv22z6MIVx3w9OHkdIwPESR
         cDQ4NP4RihatTWQdnTDE53HXdRDaRpsQagid+cF9YFLnQLJP4IXHtbxOhv82EtMlIR5w
         PqymYiCTBAnWfh1u8fR8gTocNfNPmUl6WXcn7Ty4F7KkL4cJADk/VpkO0hafupcwNd2R
         touddLFHnCbCRw8UiB2NHKWldr9gelo/a7/2vaw+AJP7WwfB2WbUUVZLCb07IP4Ueyi1
         uYoVZc596uArrTzmCmXFEZ3/rvo+KNtt1INpc/EBBb4fJPas+T5OsLlPjAnQDUqiAHZ3
         REag==
X-Gm-Message-State: AOJu0YxPFToJvw5H5wEiw5qRQWpCKYM9OcrxLFPhAgjjaiN6jbgMfEFk
	a7B5BBsfNpzh24g6FGcxmfD3I+5WS+cB0i55JcmsMayjOm7I4VeeZYkbZ+aBHiihI6Q7M0Cy7wl
	H
X-Google-Smtp-Source: AGHT+IG1sYUmoX/vjQ7f1uakOXeaM56klxTlFbUCF5mFMb9u+u+inCKeGcvEet19Mzb6gBceym8AIQ==
X-Received: by 2002:a17:907:96a1:b0:a99:e82a:87ee with SMTP id a640c23a62f3a-a99e82a8932mr1790616066b.57.1729171897068;
        Thu, 17 Oct 2024 06:31:37 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v6 4/5] x86/boot: Use trampoline_phys variable directly from C code
Date: Thu, 17 Oct 2024 14:31:22 +0100
Message-Id: <20241017133123.1946204-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order;
- avoid useless casts.
---
 xen/arch/x86/boot/head.S  | 6 +-----
 xen/arch/x86/boot/reloc.c | 8 ++++++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 5da7ac138f..dcda91cfda 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,13 +510,9 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Get bottom-most low-memory stack address. */
-        mov     sym_esi(trampoline_phys), %ecx
-        add     $TRAMPOLINE_SPACE,%ecx
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
+        /*      reloc(magic/eax, info/edx) using fastcall. */
         call    reloc
 
 #ifdef CONFIG_PVH_GUEST
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 707d9c5f15..e50e161b27 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -19,6 +19,9 @@
 #include <xen/kconfig.h>
 #include <xen/multiboot.h>
 #include <xen/multiboot2.h>
+#include <xen/page-size.h>
+
+#include <asm/trampoline.h>
 
 #include <public/arch-x86/hvm/start_info.h>
 
@@ -344,9 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
+void *reloc(uint32_t magic, uint32_t in)
 {
-    memctx ctx = { trampoline };
+    /* Get bottom-most low-memory stack address. */
+    memctx ctx = { trampoline_phys + TRAMPOLINE_SPACE };
 
     switch ( magic )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 14:10:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 14:10:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820643.1234175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1RCk-0007II-R4; Thu, 17 Oct 2024 14:10:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820643.1234175; Thu, 17 Oct 2024 14:10: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 1t1RCk-0007IB-Ne; Thu, 17 Oct 2024 14:10:18 +0000
Received: by outflank-mailman (input) for mailman id 820643;
 Thu, 17 Oct 2024 14:10: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 1t1RCj-0007I1-RE; Thu, 17 Oct 2024 14:10: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 1t1RCj-0003sP-NK; Thu, 17 Oct 2024 14:10: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 1t1RCj-0007fI-AH; Thu, 17 Oct 2024 14:10:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1RCj-0000s8-9t; Thu, 17 Oct 2024 14: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>
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=ngGK31vjmvRVkB76YImEKUSoAmoXJ+6FAB2pZFnMcT0=; b=g2CEEpAnGwsTIMh9rv5/za/AK4
	ZpmF/3aJ6eSpvOKGWEX1ROFrg3bEYbBYbzpOEtpwx5k6rMYbmjYtoiDAEL0N/A5SzsdERbVHIaP/e
	K4IWFE8NypVFPrSzzgYhcCntqQZaO6th1WF6Ya8xggbAY2wvvPsI0jrLvSAFIURBSSV0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188153-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188153: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:build-amd64-libvirt:libvirt-build:fail:regression
    xen-unstable:build-arm64:xen-build:fail:regression
    xen-unstable:build-amd64-xsm:xen-build:fail:regression
    xen-unstable:build-arm64-xsm:xen-build:fail:regression
    xen-unstable:build-armhf:xen-build:fail:regression
    xen-unstable:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    xen-unstable:build-arm64-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:build-armhf-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-pair:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-raw:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-xl-xsm:build-check(1):blocked:nonblocking
    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-examine:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:build-check(1):blocked:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
X-Osstest-Versions-This:
    xen=47990ecef286606794d607d4ca8703d71c98d659
X-Osstest-Versions-That:
    xen=47990ecef286606794d607d4ca8703d71c98d659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 14:10:17 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-amd64-libvirt           6 libvirt-build            fail REGR. vs. 188128
 build-arm64                   6 xen-build                fail REGR. vs. 188128
 build-amd64-xsm               6 xen-build                fail REGR. vs. 188128
 build-arm64-xsm               6 xen-build                fail REGR. vs. 188128
 build-armhf                   6 xen-build                fail REGR. vs. 188128

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm  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
 build-arm64-libvirt           1 build-check(1)               blocked  n/a
 build-armhf-libvirt           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-libvirt-qcow2  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-raw  1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-vhd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-rtds      1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-xsm       1 build-check(1)               blocked  n/a
 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-examine      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt-vhd  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-arndale   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit1   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit2   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-multivcpu  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-qcow2     1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-raw       1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188128
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188128
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188128
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188128
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188128

version targeted for testing:
 xen                  47990ecef286606794d607d4ca8703d71c98d659
baseline version:
 xen                  47990ecef286606794d607d4ca8703d71c98d659

Last test of basis   188153  2024-10-17 07:28:21 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              fail    
 build-arm64-xsm                                              fail    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  fail    
 build-armhf                                                  fail    
 build-i386                                                   pass    
 build-amd64-libvirt                                          fail    
 build-arm64-libvirt                                          blocked 
 build-armhf-libvirt                                          blocked 
 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                                          blocked 
 test-armhf-armhf-xl                                          blocked 
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           blocked 
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        blocked 
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 blocked 
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 blocked 
 test-amd64-amd64-libvirt-xsm                                 blocked 
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-amd64-amd64-xl-xsm                                      blocked 
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                  blocked 
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  blocked 
 test-armhf-armhf-xl-credit1                                  blocked 
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  blocked 
 test-armhf-armhf-xl-credit2                                  blocked 
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     blocked 
 test-armhf-armhf-examine                                     blocked 
 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                                     blocked 
 test-armhf-armhf-libvirt                                     blocked 
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                blocked 
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                blocked 
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               blocked 
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    blocked 
 test-amd64-amd64-libvirt-raw                                 blocked 
 test-arm64-arm64-libvirt-raw                                 blocked 
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-raw                                      blocked 
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     blocked 
 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-libvirt-vhd                                 blocked 
 test-armhf-armhf-libvirt-vhd                                 blocked 
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      blocked 


------------------------------------------------------------
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 Oct 17 14:44:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 14:44:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820664.1234202 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1RjF-0002re-Nq; Thu, 17 Oct 2024 14:43:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820664.1234202; Thu, 17 Oct 2024 14:43: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 1t1RjF-0002rX-Kt; Thu, 17 Oct 2024 14:43:53 +0000
Received: by outflank-mailman (input) for mailman id 820664;
 Thu, 17 Oct 2024 14:43: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 1t1RjE-0002rR-2Y
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 14:43: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 1t1RjD-0004RG-OH; Thu, 17 Oct 2024 14:43:51 +0000
Received: from [15.248.2.232] (helo=[10.24.67.20])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1RjD-0001PX-GT; Thu, 17 Oct 2024 14:43: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=goCESiCAIPpr21klwQunsXMu3zzAXDLCliOnXZrx/Io=; b=FrYfdQ6T4O4GFhqFonGyVcghB7
	PwhUJxxT3adaDeotvZkT4gcY2P8c66Nri/hLIqnJ77KziYd+EfAKe8BHgzrkZC14DnPKTGCfq3ZM1
	Dzii8neFCHAH6Oa/plrh4iBcKd0KvL3CXjW+f/DdW1MxvwJjscl38u0BMKN5EnGi/I7A=;
Message-ID: <eccb4aca-8e62-410b-a530-b933f1f96507@xen.org>
Date: Thu, 17 Oct 2024 15:43:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/arm: dom0less: cope with missing /gic phandle
Content-Language: en-GB
To: Stefano Stabellini <sstabellini@kernel.org>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20241011211957.447290-1-stewart.hildebrand@amd.com>
 <alpine.DEB.2.22.394.2410111428450.471028@ubuntu-linux-20-04-desktop>
From: Julien Grall <julien@xen.org>
In-Reply-To: <alpine.DEB.2.22.394.2410111428450.471028@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 11/10/2024 22:28, Stefano Stabellini wrote:
> On Fri, 11 Oct 2024, Stewart Hildebrand wrote:
>> If a partial DT has a /gic node, but no references to it, dtc may omit
>> the phandle property. With the phandle property missing,
>> fdt_get_phandle() returns 0, leading Xen to generate a malformed domU
>> dtb due to invalid interrupt-parent phandle references. 0 is an invalid
>> phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC.
>>
>> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

This is now committed.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 14:44:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 14:44:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820670.1234221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Rjz-0003QE-5W; Thu, 17 Oct 2024 14:44:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820670.1234221; Thu, 17 Oct 2024 14:44: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 1t1Rjz-0003Q7-2Q; Thu, 17 Oct 2024 14:44:39 +0000
Received: by outflank-mailman (input) for mailman id 820670;
 Thu, 17 Oct 2024 14:44:37 +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 1t1Rjx-0003Od-N2
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 14:44:37 +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 1t1Rjv-0004S1-MJ; Thu, 17 Oct 2024 14:44:35 +0000
Received: from [15.248.2.232] (helo=[10.24.67.20])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1Rjv-0001kV-Fg; Thu, 17 Oct 2024 14:44: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=Bq15AjW1I70zV9leCjVzVYgsNUWiD9ibvqXqb9GOexw=; b=AUYlbYeYfShNplSvG3mrxV9CE+
	Q0nq7YgZx/LS6eZ2+X2Hcr8tTeqxX4tsfcGkgf8U8gLUSTQoSHNXEYUa/dlI6tkgVGU+oH44zGOo+
	x6pehLkY2oC2URHVjQOZeL0sce1p+VYis0JpxCFTEmiGj/yuMxY20tgTqWFeulnUfe7I=;
Message-ID: <96434f92-951f-4c62-b7b7-f15a9bf94029@xen.org>
Date: Thu, 17 Oct 2024 15:44:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] device-tree: Move dt-overlay.c to common/device-tree/
Content-Language: en-GB
To: Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>
References: <20241010105746.140921-1-michal.orzel@amd.com>
 <alpine.DEB.2.22.394.2410101248160.471028@ubuntu-linux-20-04-desktop>
From: Julien Grall <julien@xen.org>
In-Reply-To: <alpine.DEB.2.22.394.2410101248160.471028@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 10/10/2024 20:48, Stefano Stabellini wrote:
> On Thu, 10 Oct 2024, Michal Orzel wrote:
>> The code is DT specific and as such should be placed under common
>> directory for DT related files. Update MAINTAINERS file accordingly
>> and drop the line with a path from a top-level comment in dt-overlay.c.
>> It serves no purpose and requires being updated on every code movement.
>>
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> 
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

This is now committed.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 14:51:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 14:51:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820680.1234233 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Rqu-00056g-SX; Thu, 17 Oct 2024 14:51:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820680.1234233; Thu, 17 Oct 2024 14: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 1t1Rqu-00056Z-PR; Thu, 17 Oct 2024 14:51:48 +0000
Received: by outflank-mailman (input) for mailman id 820680;
 Thu, 17 Oct 2024 14: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1Rqt-00056T-UA
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 14:51:47 +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 547e2ba9-8c97-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 16:51:45 +0200 (CEST)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-42f6bec84b5so11352825e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 07:51:45 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fa90818sm7487579f8f.53.2024.10.17.07.51.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 07:51:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 547e2ba9-8c97-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729176705; x=1729781505; 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=2MsMwOd7nSHUKEo246bmkYH4R+Lqrf6ER7hND9/0lfQ=;
        b=YX1HsHCkQWnd6pYbtBXZBV0lOOm+Vd+nWqDuIJfvKhpGvV3SoScqG/pXAV0Bb7ErRO
         c0HgG9kc67GcMBv7ZOwbo/aYGxDtPJVIZZzgsCvXnihq+qFjpxmyYn7kHSjn5Y+4JQyX
         i0eP+zaNuFjDS1rEoLzc+V1+4SsMdtWFfP8fB0ZFwtfuOg+sZqGy6XwnimabbRqsTxaK
         JsO9eRmI4z/gC1M/rJGU+JxwELUzPZGfWUVAezsZfO/hWlEcOJ8iD90ueNyjv6hBnNn2
         SUvmO6GF0aLlO1tLfeo/ccUecNJAz+ZjFg9tFZhxAJGGd7sicp56Kg2dshsHuLH6Q40R
         k+Yw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729176705; x=1729781505;
        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=2MsMwOd7nSHUKEo246bmkYH4R+Lqrf6ER7hND9/0lfQ=;
        b=ie4MZkAwwGtfGk5wuFK7c84UThxV0QQ53nJcueLIjWFWrkWdJIsDkvYE9SyIayE70j
         XRMMYILdhfJvvP9PFw+hWR6tZG9uIrpDLFABmeQthqshixAARA/BoxRtpWEgz8OCZrSu
         6sGMHcQO2ov42peb6SLrKlKs7mT+RQ5tR640L0aueN9ELR3CkAKmIXAcy9RNz5ycxIo7
         0cYiW4EMZXEQyvHq2o6txyA/xJnOtOoqrOJszIdITDUHaZRR4BRFCPESQaK9RpbiAXx1
         +iRJCw7T+NojSOJ8/2aTC7/uBJ6INMNL28uWpZaz0DouIW9X1yBd7gu8wEglSaylm25m
         BDPA==
X-Forwarded-Encrypted: i=1; AJvYcCVxLw7wTtH7JCnWDz+AwHGlNG9FUatv75sU5fXyRUZ0ikUICbBR2iLOmcQEHUDNT4sGfPf/gzJSoRY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwuRNV9ktIuaqRdJF5at1bebFEOCe3Y0R3V+Nga/MvnZpoTPExt
	CG0lIYPc8G4aLDlBmWa56FbmO9M1qLuMV4Mw6YNYNbxM4DFEVL+cSAMohZq34w==
X-Google-Smtp-Source: AGHT+IFc3Gitn3w0eSAd/rwCJbaQBpr2vEUUUYdsxrOkTdR6v5h5TAOEs1KvOmxPsjK3+nFY9Ps0lA==
X-Received: by 2002:a05:600c:3328:b0:431:5970:806f with SMTP id 5b1f17b1804b1-43159708617mr22028675e9.34.1729176705156;
        Thu, 17 Oct 2024 07:51:45 -0700 (PDT)
Message-ID: <b8de7161-5d71-4ed7-a3cf-611f4a860926@suse.com>
Date: Thu, 17 Oct 2024 16:51:43 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/5] xen/riscv: add stub for
 share_xen_page_with_guest()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <3dfd4bdf6584e73ecdbff5a66fdbaec68e31cc3c.1729068334.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: <3dfd4bdf6584e73ecdbff5a66fdbaec68e31cc3c.1729068334.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 11:15, Oleksii Kurochko wrote:
> To avoid the following linkage fail the stub for share_xen_page_with_guest()
> is introduced:

What do you intend to express with "is introduced"? Is there a problem now?
Would there be a problem with subsequent changes? I'm entirely fine with
adding that stub, but the description should make clear why /when exactly
it's needed.

Jan

>   riscv64-linux-gnu-ld: prelink.o: in function `tasklet_kill':
>   /build/xen/common/tasklet.c:176: undefined reference to `share_xen_page_with_guest'
>   riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol `share_xen_page_with_guest' isn't defined
>   riscv64-linux-gnu-ld: final link failed: bad value
> 
> $ find . -name \*.o | while read F; do nm $F | grep share_xen_page_with_guest && echo $F; done
>                  U share_xen_page_with_guest
> ./xen/common/built_in.o
>                  U share_xen_page_with_guest
> ./xen/common/trace.o
>                  U share_xen_page_with_guest
> ./xen/prelink.o
> 
> Despite the linker fingering tasklet.c (very likely a toolchain bug),
> it's trace.o which has the undefined reference.
> 
> Looking at trace.i, there is call of share_xen_page_with_guest() in
> share_xen_page_with_privileged_guests() from asm/mm.h.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
>  xen/arch/riscv/stubs.c | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c
> index 5951b0ce91..c9a590b225 100644
> --- a/xen/arch/riscv/stubs.c
> +++ b/xen/arch/riscv/stubs.c
> @@ -2,7 +2,9 @@
>  #include <xen/cpumask.h>
>  #include <xen/domain.h>
>  #include <xen/irq.h>
> +#include <xen/mm.h>
>  #include <xen/nodemask.h>
> +#include <xen/sched.h>
>  #include <xen/sections.h>
>  #include <xen/time.h>
>  #include <public/domctl.h>
> @@ -409,3 +411,11 @@ unsigned long get_upper_mfn_bound(void)
>  {
>      BUG_ON("unimplemented");
>  }
> +
> +/* mm.c */
> +
> +void share_xen_page_with_guest(struct page_info *page, struct domain *d,
> +                               enum XENSHARE_flags flags)
> +{
> +    BUG_ON("unimplemented");
> +}



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 14:55:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 14:55:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820687.1234247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Ru7-0005gq-Bk; Thu, 17 Oct 2024 14:55:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820687.1234247; Thu, 17 Oct 2024 14:55: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 1t1Ru7-0005gj-92; Thu, 17 Oct 2024 14:55:07 +0000
Received: by outflank-mailman (input) for mailman id 820687;
 Thu, 17 Oct 2024 14:55: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=i/08=RN=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t1Ru5-0005gd-Ji
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 14:55:05 +0000
Received: from fhigh-a6-smtp.messagingengine.com
 (fhigh-a6-smtp.messagingengine.com [103.168.172.157])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c919811a-8c97-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 16:55:02 +0200 (CEST)
Received: from phl-compute-02.internal (phl-compute-02.phl.internal
 [10.202.2.42])
 by mailfhigh.phl.internal (Postfix) with ESMTP id C40CF114015C;
 Thu, 17 Oct 2024 10:55:00 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-02.internal (MEProxy); Thu, 17 Oct 2024 10:55:00 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 17 Oct 2024 10:54:59 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c919811a-8c97-11ef-99a3-01e77a169b0f
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=1729176900;
	 x=1729263300; bh=Wvl+TaOIAuZs4lmR2Bwb8aTJs5T6L3pBQuQTjAqGiP0=; b=
	hVUZy8+vNTv+sOpXaeIui4Bk1alLHST5jZr2YQCkDlvb2VAOhpQieZPhF9svy9g5
	gMZ/rRoqA1g0A39Tyvy56CzWP3r6mxHwUgMgs/ZaSWQBCushFYqxis4Lef8BFBJs
	hvAAQdrCBCr25sQNNw8wAB4j+zWLcr0A8NEsvUASl+lm3+gltLko3LthZHXNhnlt
	LophPnZhEkeXsn2z/b0Qn673Ar7GNC/7kHjLIbz1Pwi0INZVykdVOdQrKbE3URB/
	63+4aR6avw+e3o4mCY56/97EUifqCoWnkExJ+8t4B0yq4+jDHvq3H79FStBCCbhD
	hunQLfTAIKGUB3aX8Oe5nA==
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=1729176900; x=1729263300; bh=Wvl+TaOIAuZs4lmR2Bwb8aTJs5T6
	L3pBQuQTjAqGiP0=; b=jBaDNq6bu0EXJxdDqhRAw8FuibabKYQUk7eisvsLH9S4
	enuDYc62L3hAgV9QeLP2PbnPTMESZvay7LJgfc6D67H69X/lV3K9Hc/hLzq1odHQ
	VSqqmFSS0zCqrZp0cg4XMeuxTNMAG/QjcozKaNMNvVPtoRe174BSeM0D1/qmqXrA
	DEypBcZI0kQ/M1ChMG1xNcmXwBnrQY10yXJG4MbgReCropwN2d+HMUgSTaHMpA4a
	JVMxqw0B2eE4XzserCJEJYR1VTS83K44KcJTa9xqJ4qwOvc6JZrtX8c37xJ2VVRD
	VovO2AksiEzIBskDPZcpvYtXpXpHLBvEvMgWgWXvfg==
X-ME-Sender: <xms:RCURZ5PG-dZMpEFD74sufQGNFhRlnmLZCc6QPV24LAQo_PUHyoIk_A>
    <xme:RCURZ7-6O8IlF31rtfLqn90si1JIKtm0FtdpqPnj12-JzpfQJ-2CC4Oe-JEcJUcWh
    j7_QwGF9YnyXA>
X-ME-Received: <xmr:RCURZ4R1qh6ktsLYHKXxSTVKsXHpqa4EJbHimYJV-DhGQjP8IiR4zMk25VWtsxxg3kbRmmR-pu8i_MCWOQdb5Q0FhfPYuKwgYA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdehuddgkeefucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepffeigfefudfhieefhefhffelkeekueffhefhtdekteehueelieevud
    ehuddukeffnecuffhomhgrihhnpehofhhfshgvthdrmhgrphdplhgushdrshgspdhhvggr
    ugdrshgsnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh
    epmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnhgs
    pghrtghpthhtohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepfhhrvgguih
    grnhhordiiihhglhhiohestghlohhuugdrtghomhdprhgtphhtthhopeigvghnqdguvghv
    vghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehjsggvuh
    hlihgthhesshhushgvrdgtohhmpdhrtghpthhtoheprghnughrvgifrdgtohhophgvrhef
    segtihhtrhhigidrtghomhdprhgtphhtthhopehrohhgvghrrdhprghusegtihhtrhhigi
    drtghomhdprhgtphhtthhopeguphhsmhhithhhsegrphgvrhhtuhhsshholhhuthhiohhn
    shdrtghomh
X-ME-Proxy: <xmx:RCURZ1sNvEbddy8kitJVKH5ndLltC4R5Gxxlasx0qewiRQmQzhVXTw>
    <xmx:RCURZxc2OYj_UFMsHwtD0AfDyWKU2dnTK_Qk0m5PfsIbP3k5iy8KYA>
    <xmx:RCURZx1OD7fBMoeiqBQJzxuigfPxIRbAumHBFsbF4cHUtzMbkQm3cw>
    <xmx:RCURZ9_hC00_WJfaL09xNCHBgaOVz4-r02AKbsJWdb5oBAWS6K1jtQ>
    <xmx:RCURZ6HvVyID6_cRCZ6525wT3QHGRvYOdmKI8Drm9aT6VEIUM4JA_9XK>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 17 Oct 2024 16:54:56 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v6 2/5] x86/boot: Reuse code to relocate trampoline
Message-ID: <ZxElQKIIWK2VjpRs@mail-itl>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-3-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="tb1UnYJp27BVuOWx"
Content-Disposition: inline
In-Reply-To: <20241017133123.1946204-3-frediano.ziglio@cloud.com>


--tb1UnYJp27BVuOWx
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 17 Oct 2024 16:54:56 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH v6 2/5] x86/boot: Reuse code to relocate trampoline

On Thu, Oct 17, 2024 at 02:31:20PM +0100, Frediano Ziglio wrote:
> Move code from efi-boot.h to a separate, new, reloc-trampoline.c file.
> Reuse this new code, compiling it for 32bit as well, to replace assembly
> code in head.S doing the same thing.
>=20
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

For the EFI part:
Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

> ---
> Changes since v3:
> - fixed a typo in comment;
> - added Reviewed-by.
>=20
> Changes since v5:
> - do not add obj64 to targets, already done adding it to obj-bin-y.
> ---
>  xen/arch/x86/boot/Makefile           | 10 +++++---
>  xen/arch/x86/boot/build32.lds.S      |  5 ++++
>  xen/arch/x86/boot/head.S             | 23 +-----------------
>  xen/arch/x86/boot/reloc-trampoline.c | 36 ++++++++++++++++++++++++++++
>  xen/arch/x86/efi/efi-boot.h          | 15 ++----------
>  5 files changed, 51 insertions(+), 38 deletions(-)
>  create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
>=20
> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index 5da19501be..98ceb1983d 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,11 +1,15 @@
>  obj-bin-y +=3D head.o
>  obj-bin-y +=3D built-in-32.o
> +obj-bin-y +=3D $(obj64)
> =20
>  obj32 :=3D cmdline.32.o
>  obj32 +=3D reloc.32.o
> +obj32 +=3D reloc-trampoline.32.o
> =20
> -nocov-y   +=3D $(obj32)
> -noubsan-y +=3D $(obj32)
> +obj64 :=3D reloc-trampoline.o
> +
> +nocov-y   +=3D $(obj32) $(obj64)
> +noubsan-y +=3D $(obj32) $(obj64)
>  targets   +=3D $(obj32)
> =20
>  obj32 :=3D $(addprefix $(obj)/,$(obj32))
> @@ -56,7 +60,7 @@ cmd_combine =3D \
>  		--bin1 $(obj)/built-in-32.base.bin \
>  		--bin2 $(obj)/built-in-32.offset.bin \
>  		--map $(obj)/built-in-32.offset.map \
> -		--exports cmdline_parse_early,reloc \
> +		--exports cmdline_parse_early,reloc,reloc_trampoline32 \
>  		--output $@
> =20
>  targets +=3D built-in-32.S
> diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.=
lds.S
> index e3f5e55261..fa282370f4 100644
> --- a/xen/arch/x86/boot/build32.lds.S
> +++ b/xen/arch/x86/boot/build32.lds.S
> @@ -41,6 +41,11 @@ SECTIONS
>           * Potentially they should be all variables. */
>          DECLARE_IMPORT(__base_relocs_start);
>          DECLARE_IMPORT(__base_relocs_end);
> +        DECLARE_IMPORT(__trampoline_rel_start);
> +        DECLARE_IMPORT(__trampoline_rel_stop);
> +        DECLARE_IMPORT(__trampoline_seg_start);
> +        DECLARE_IMPORT(__trampoline_seg_stop);
> +        DECLARE_IMPORT(trampoline_phys);
>          . =3D . + GAP;
>          *(.text)
>          *(.text.*)
> diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
> index e0776e3896..ade2c5c43d 100644
> --- a/xen/arch/x86/boot/head.S
> +++ b/xen/arch/x86/boot/head.S
> @@ -706,28 +706,7 @@ trampoline_setup:
>          mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
> =20
>          /* Apply relocations to bootstrap trampoline. */
> -        mov     sym_esi(trampoline_phys), %edx
> -        lea     sym_esi(__trampoline_rel_start), %edi
> -        lea     sym_esi(__trampoline_rel_stop), %ecx
> -1:
> -        mov     (%edi), %eax
> -        add     %edx, (%edi, %eax)
> -        add     $4,%edi
> -
> -        cmp     %ecx, %edi
> -        jb      1b
> -
> -        /* Patch in the trampoline segment. */
> -        shr     $4,%edx
> -        lea     sym_esi(__trampoline_seg_start), %edi
> -        lea     sym_esi(__trampoline_seg_stop), %ecx
> -1:
> -        mov     (%edi), %eax
> -        mov     %dx, (%edi, %eax)
> -        add     $4,%edi
> -
> -        cmp     %ecx, %edi
> -        jb      1b
> +        call    reloc_trampoline32
> =20
>          /* Do not parse command line on EFI platform here. */
>          cmpb    $0, sym_esi(efi_platform)
> diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/rel=
oc-trampoline.c
> new file mode 100644
> index 0000000000..0a74c1e75a
> --- /dev/null
> +++ b/xen/arch/x86/boot/reloc-trampoline.c
> @@ -0,0 +1,36 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#include <xen/compiler.h>
> +#include <xen/stdint.h>
> +#include <asm/trampoline.h>
> +
> +extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
> +extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
> +
> +#if defined(__i386__)
> +void reloc_trampoline32(void)
> +#elif defined (__x86_64__)
> +void reloc_trampoline64(void)
> +#else
> +#error Unknown architecture
> +#endif
> +{
> +    unsigned long phys =3D trampoline_phys;
> +    const int32_t *trampoline_ptr;
> +
> +    /*
> +     * Apply relocations to trampoline.
> +     *
> +     * This modifies the trampoline in place within Xen, so that it will
> +     * operate correctly when copied into place.
> +     */
> +    for ( trampoline_ptr =3D __trampoline_rel_start;
> +          trampoline_ptr < __trampoline_rel_stop;
> +          ++trampoline_ptr )
> +        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) +=3D phys;
> +
> +    for ( trampoline_ptr =3D __trampoline_seg_start;
> +          trampoline_ptr < __trampoline_seg_stop;
> +          ++trampoline_ptr )
> +        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) =3D phys >=
> 4;
> +}
> diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
> index 94f3443364..1acceec471 100644
> --- a/xen/arch/x86/efi/efi-boot.h
> +++ b/xen/arch/x86/efi/efi-boot.h
> @@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned=
 long delta)
>      }
>  }
> =20
> -extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
> -extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
> +void reloc_trampoline64(void);
> =20
>  static void __init relocate_trampoline(unsigned long phys)
>  {
> -    const int32_t *trampoline_ptr;
> -
>      trampoline_phys =3D phys;
> =20
>      if ( !efi_enabled(EFI_LOADER) )
>          return;
> =20
> -    /* Apply relocations to trampoline. */
> -    for ( trampoline_ptr =3D __trampoline_rel_start;
> -          trampoline_ptr < __trampoline_rel_stop;
> -          ++trampoline_ptr )
> -        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) +=3D phys;
> -    for ( trampoline_ptr =3D __trampoline_seg_start;
> -          trampoline_ptr < __trampoline_seg_stop;
> -          ++trampoline_ptr )
> -        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) =3D phys >> 4;
> +    reloc_trampoline64();
>  }
> =20
>  static void __init place_string(u32 *addr, const char *s)
> --=20
> 2.34.1
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcRJUAACgkQ24/THMrX
1ywGEwf/cW8EvBK/tLHqS7hFqdvn5Dgu9hyyRauX9irvZ0OMCqaEnNG4WmEnJqjJ
8skxouuprrYoBcCEt824WKnRRMIyeZZbKUJfT48NCeWTUBMZ9cT4mHZLNWT1qmNd
Kn2ss0QfLxNfbb6no8ZHc+9fiu1nRGZ+QcaxreAIFNkQXU6hAYewiO29wmu8hB3X
QKkOrfEFp0J7Io9F0Ut4RSEPrLEqbQ53dEw5oAHlWL6YOPnj7Y6XJ2aru5XDh673
r3KjRTBbDp+XBZ+h2s3FkWVnP7UcxkYYadvvV0asVwCqNpS2U6foy3ibuVxtGrjD
rtdRri00INBfipCkFrApLqJEcBYk2Q==
=mHcz
-----END PGP SIGNATURE-----

--tb1UnYJp27BVuOWx--


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 14:55:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 14:55:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820688.1234257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Ru8-0005v2-JV; Thu, 17 Oct 2024 14:55:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820688.1234257; Thu, 17 Oct 2024 14:55: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 1t1Ru8-0005uv-Fh; Thu, 17 Oct 2024 14:55:08 +0000
Received: by outflank-mailman (input) for mailman id 820688;
 Thu, 17 Oct 2024 14:55: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1Ru7-0005gd-Ci
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 14:55:07 +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 cbb3aa8f-8c97-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 16:55:05 +0200 (CEST)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-430ee5c9570so14586925e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 07:55:05 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43158c404a5sm28928465e9.24.2024.10.17.07.55.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 07:55:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cbb3aa8f-8c97-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729176905; x=1729781705; 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=Ra4PJOF5dFa52c02/HS5qZC1o4o5NK91nl5ZJ+GhIqs=;
        b=FUT62LFbjqTIm4hCRKwZs84lAH6GnWhCyVNEnQK9swO6vugdpfw6+sT9tEFdjbihJG
         ermJOE1VQY5LaivFRKCz2nAvnOEk6iYqPW2rGQs2fGcpEv/Mp+PGD9EKUhgAXdGuGlpE
         ydVaSItDKrf9sbCKLjuHKozlCJaNehNpAXJ3v9dF+YTo0C0b9o11hw3H9+Tckwj/bblK
         CTyCEVgFHcR4E3/RMoCeEEa0aP9e5mXq7bkQxD5ycySb/gSsL1OKVniKKmzm+0Aq8+P2
         9qtTK62khG+SaCwQaS6SGRsEJng1oh4FyUjcoeZ0JsFIAWgJGYhAU1QIr6y73VGzV6+g
         ZQxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729176905; x=1729781705;
        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=Ra4PJOF5dFa52c02/HS5qZC1o4o5NK91nl5ZJ+GhIqs=;
        b=luuwwl8V40exrvqIT+UZlmfY1+boeSN8scrUV2CyZfN6TXkSlaY6h8rDcGeWbNf7g5
         dKKkykWxDbjm5y1nqLm6ELGkigOlVO9tBvKFkkGOzbBV4+6E0lryi+jrCGUzMPikRQ+4
         QJ1iXkQJk+rhb7wayDJHk5HE8weIZldtqFZOYy8nIF8m/CWf0QwvezeMYJqiOJPQWddB
         9fiIioAl4QDJ+n8tMQZ02//WkR16JD+1+looTCfdgGAxDUnpPsqVGcEoaWCkIiCgIikV
         x9dXVmuffsbLfbXbOGQTWR6VaAcNMGwQjGirCB0cfZTDkXDjdbQBVfLsnu0I0m83DRWS
         fFEg==
X-Forwarded-Encrypted: i=1; AJvYcCUXo9XfknMlYV3Wt1DHC+IEQ594v/oF75u8cw2QLBh5Wclf4Cz9WE0SaeRDQsNs0JF0uh5D/Vga+VE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzooxbCueCCYrEqqTixnH4ct6la1co3LUXDZKCOmYacR4If1siY
	nSKAYt27oUUknU+V8vXaxybRKH9V8tWPCbWpxmX/Lf2NULjJIkxhOqw4bgQvbA==
X-Google-Smtp-Source: AGHT+IHMMckdnBgHgKVhBCzfmqHnX7Bsgk3QD8L9T4a3JNRw7mrY2A9SqJD037mB4PGzYBN4PH+3rw==
X-Received: by 2002:a05:600c:5250:b0:431:4b88:d407 with SMTP id 5b1f17b1804b1-4314b89198amr82959055e9.5.1729176905301;
        Thu, 17 Oct 2024 07:55:05 -0700 (PDT)
Message-ID: <2565f369-96e3-4c28-b752-53b1b6a0d968@suse.com>
Date: Thu, 17 Oct 2024 16:55:03 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/5] xen/riscv: implement maddr_to_virt()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.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: <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 11:15, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/include/asm/mm.h
> +++ b/xen/arch/riscv/include/asm/mm.h
> @@ -25,8 +25,12 @@
>  
>  static inline void *maddr_to_virt(paddr_t ma)
>  {
> -    BUG_ON("unimplemented");
> -    return NULL;
> +    /* Offset in the direct map, accounting for pdx compression */
> +    unsigned long va_offset = maddr_to_directmapoff(ma);

Why the mentioning of PDX compression? At least right now it's unavailable
for RISC-V afaics. Are there plans to change that any time soon?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 15:16:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 15:16:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820707.1234276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1SEF-00010I-Dr; Thu, 17 Oct 2024 15:15:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820707.1234276; Thu, 17 Oct 2024 15:15: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 1t1SEF-00010B-BB; Thu, 17 Oct 2024 15:15:55 +0000
Received: by outflank-mailman (input) for mailman id 820707;
 Thu, 17 Oct 2024 15:15: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1SEE-000105-9B
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 15:15:54 +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 b2246155-8c9a-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 17:15:51 +0200 (CEST)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-37d5689eea8so772964f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 08:15:51 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43158c39c47sm29193915e9.12.2024.10.17.08.15.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 08:15:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2246155-8c9a-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729178151; x=1729782951; 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=Lm/qdeiQvY6WvHdvvmGMQN1rSYOXspNo5iR6WVnD02g=;
        b=ACR3uoEwn9O2TQ5/uSuGruA3CTHwV/Uh3fwk8Egvk52Z9Y0b4af7zR+bpyt9oE7Nh5
         h/GltpQD4NE8NFr4YKDy+ADAPN0Wd/cgTJtyR46wTA417GE9zhODVIYywQk7Kjxeht5A
         V2yRi4oqegkNjhy13duLeXWl1NTsjuPtJmvtBiIc6HWotj+tqVViq64l4Qn3xrc2gR+v
         i613bb8S/QRbUJnpAWZKmlCzMHiiD2se+TwX7S49VDty0C16ZIU/V9DRH1niB4U//lm7
         jfPDRphb59mZPUQHz3df/cAGRLMrTH4wh2scgQEh47tk+SUp/ewsZav0jUKK2CZfGduJ
         CnNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729178151; x=1729782951;
        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=Lm/qdeiQvY6WvHdvvmGMQN1rSYOXspNo5iR6WVnD02g=;
        b=GnGJ6jMnn2FzlDv9pUW858Z7xYnb+KdNlpSXWCwqTdw6TTP3AxvY/Gw9sVaRSyNQ7N
         TwzFskPKJkpHQqreFNTM81gaSN4vY2dCg26wXCY+mP6S8k6MNKp4GQcnpZLBxClTFIPm
         DpHNLiQQ0Zs/9nNHF/dQ87eWPKuRF5v2uJrJK4WmlagIZnZSFB1qBJL+g4ZXkv+VgEyP
         3P2Uh1gh3QzF7MSc6pUuCobXAvknAuDBUi3uvbgQ/NmH+y1SVX3dqV5Z0vIbBT2XUYvD
         7nk4LYl6neoZQ/Lnlp4pOG85VyfFKT3kAH8UCw0QGYvVMz36VjrQMQSFH3x1lGhRmZpP
         d0tw==
X-Forwarded-Encrypted: i=1; AJvYcCXpbPci2EABjuSDUB0HFBQ2Hq0r0CAkYw6RFPSQgnE1EEK2/YyaoepAf1znBv0DDQ+i4f41iFAR4bY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwS6zEWorFkhCF0A4uWNRIZ25mJPV8tKR3D64Y0P8wG90XKc5mv
	8b6sq9QcYZR4qfllCOfE6qobaPLSfu7gzy2pmIVjM90HHfslPs1XI0WHI4WMBA==
X-Google-Smtp-Source: AGHT+IGX6SWrBwayOcHom/neT4JzniDsKZC3oepW2VIddGFfS9Gzkz/swJJAav6gyEm4W60pR5+0YQ==
X-Received: by 2002:adf:a31d:0:b0:374:c92e:f6b1 with SMTP id ffacd0b85a97d-37d86bc3939mr4812155f8f.23.1729178150812;
        Thu, 17 Oct 2024 08:15:50 -0700 (PDT)
Message-ID: <37929e86-0394-499e-ada1-4686ff77d3f7@suse.com>
Date: Thu, 17 Oct 2024 17:15:49 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/5] xen/riscv: introduce setup_mm()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <300a4a5911766d42ec01c3fcaee664d72b484296.1729068334.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: <300a4a5911766d42ec01c3fcaee664d72b484296.1729068334.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 11:15, Oleksii Kurochko wrote:
> @@ -423,3 +424,95 @@ void * __init early_fdt_map(paddr_t fdt_paddr)
>  
>      return fdt_virt;
>  }
> +
> +#ifndef CONFIG_RISCV_32
> +/* Map the region in the directmap area. */
> +static void __init setup_directmap_mappings(unsigned long nr_mfns)
> +{
> +    if ( nr_mfns > PFN_DOWN(DIRECTMAP_SIZE) )
> +        panic("The directmap cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
> +              0UL, nr_mfns << PAGE_SHIFT);

Here and elsewhere can you please use mathematical range expressions
(apparently "[%"PRIpaddr", %#"PRIpaddr")" here), to avoid ambiguity?

> +    if ( map_pages_to_xen((vaddr_t)mfn_to_virt(0),
> +                          _mfn(0), nr_mfns,
> +                          PAGE_HYPERVISOR_RW) )
> +        panic("Unable to setup the directmap mappings.\n");
> +}
> +
> +/* Map a frame table to cover physical addresses ps through pe */
> +static void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
> +{
> +    unsigned long nr_mfns = mfn_x(mfn_add(maddr_to_mfn(pe), -1)) -

This looks to be accounting for a partial page at the end.

> +                            mfn_x(maddr_to_mfn(ps)) + 1;

Whereas this doesn't do the same at the start. The sole present caller
passes 0, so that's going to be fine for the time being. Yet it's a
latent pitfall. I'd recommend to either drop the function parameter, or
to deal with it correctly right away.

> +    unsigned long frametable_size = nr_mfns * sizeof(struct page_info);
> +    mfn_t base_mfn;
> +
> +    if ( frametable_size > FRAMETABLE_SIZE )
> +        panic("The frametable cannot cover the physical region %#"PRIpaddr" - %#"PRIpaddr"\n",
> +              ps, pe);
> +
> +    frametable_size = ROUNDUP(frametable_size, MB(2));
> +    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, 2<<(20-12));

Nit: Missing blanks in binary expressions. Also please don't open-code
PFN_DOWN() (and again below).

> +    if ( map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
> +                          frametable_size >> PAGE_SHIFT,
> +                          PAGE_HYPERVISOR_RW) )
> +        panic("Unable to setup the frametable mappings.\n");

Nit (as indicated before): No full stop please at the end of log or
panic messages.

> +    memset(&frame_table[0], 0, nr_mfns * sizeof(struct page_info));
> +    memset(&frame_table[nr_mfns], -1,
> +           frametable_size - (nr_mfns * sizeof(struct page_info)));
> +}
> +
> +vaddr_t directmap_virt_end __read_mostly;

__ro_after_init? And moved ahead of the identifier, just like ...

> +/*
> + * Setup memory management
> + *
> + * RISC-V 64 has a large virtual address space (the minimum supported
> + * MMU mode is Sv39, which provides TBs of VA space).
> + * In the case of RISC-V 64, the directmap and frametable are mapped
> + * starting from physical address 0 to simplify the page_to_mfn(),
> + * mfn_to_page(), and maddr_to_virt() calculations, as there is no need
> + * to account for {directmap, frametable}_base_pdx in this setup.
> + */
> +void __init setup_mm(void)

... __init is placed e.g. here.

It's also unclear why the variable needs to be non-static.

> +{
> +    const struct membanks *banks = bootinfo_get_mem();
> +    paddr_t ram_end = 0;
> +    paddr_t ram_size = 0;
> +    unsigned int i;
> +
> +    /*
> +     * We need some memory to allocate the page-tables used for the directmap
> +     * mappings. But some regions may contain memory already allocated
> +     * for other uses (e.g. modules, reserved-memory...).
> +     *
> +     * For simplicity, add all the free regions in the boot allocator.
> +     */
> +    populate_boot_allocator();
> +
> +    total_pages = 0;
> +
> +    for ( i = 0; i < banks->nr_banks; i++ )
> +    {
> +        const struct membank *bank = &banks->bank[i];
> +        paddr_t bank_end = bank->start + bank->size;
> +
> +        ram_size = ram_size + bank->size;
> +        ram_end = max(ram_end, bank_end);
> +    }
> +
> +    setup_directmap_mappings(PFN_DOWN(ram_end));

While you may want to use non-offset-ed mappings, I can't see how you can
validly map just a single huge chunk, no matter whether there are holes
in there. Such holes could hold MMIO regions, which I'm sure would require
more careful mapping (to avoid cacheable accesses, or even speculative
ones).

> +    total_pages = PFN_DOWN(ram_size);

Imo the rounding down to page granularity needs to be done when ram_size
is accumulated, such that partial pages simply won't be counted. Unless
of course there's a guarantee that banks can never have partial pages at
their start/end.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 15:18:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 15:18:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820714.1234286 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1SGU-0001oU-Pd; Thu, 17 Oct 2024 15:18:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820714.1234286; Thu, 17 Oct 2024 15: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 1t1SGU-0001oN-Mp; Thu, 17 Oct 2024 15:18:14 +0000
Received: by outflank-mailman (input) for mailman id 820714;
 Thu, 17 Oct 2024 15: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1SGT-0001oE-KE
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 15:18:13 +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 05b923c2-8c9b-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 17:18:11 +0200 (CEST)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-37d473c4bb6so901277f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 08:18:11 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fc123dasm7468474f8f.94.2024.10.17.08.18.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 08:18:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05b923c2-8c9b-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729178291; x=1729783091; 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=vysFJVZZxp17KWTtrvzVuNPjUdPB2c7Ix1VyLuHSzq4=;
        b=ANEMO2B1pF0jXbrMghGQnJ+lC9utNU8eiUs3+nu6gLDTnFdKvQem1YyrStrhmesffJ
         +H+ymENdMOXahUJPSFzCMGKK6KRZ+Sdq8FjquS+XIYtP9H4hk6VRkSBrJ490um2vKBPr
         +vF5SschOhZ4uZMfU0C7RnULD2Bv/ox5q+JdgekppTi0TZ6NtMEshVdj81QDD9R6YLNa
         o5p+viRFO5TVDXDuseUjOD8wkOS7SgL6bUrRUadchf+m5hDetG5sMr/qT6kYArEeI1Vr
         udsn0V6FcL6kRHx9BnyYgV6sGu1qU6vyuey/HW3wSCqoUvrjCEH5kJvI5pcVEF3vUxyj
         gHew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729178291; x=1729783091;
        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=vysFJVZZxp17KWTtrvzVuNPjUdPB2c7Ix1VyLuHSzq4=;
        b=cfiuqO+0quFwwkzCMXMj+LvDuDV52IizeTuITGeWAZP+aq1cw8N8Vt9oUaqCqPvFxQ
         00YgLLeSQ5klC81098M8/5r+VrfWg8YZtAQN4R6Y/SZC2K79KATuV+Qoz+4itphBjLoz
         jD8PRivfvU+5XfK83BpNVmnGvNFxDzSWdhLyf3aF+bb1yrxcSRku/47x4Z0nixz6O56V
         VQr2xXkpJaPbySTSereXr85qWBM9GD6SFg+Mr4Vhl6Or6PW3xsOFKF19IKVrFbg501bk
         cUqCpum+cglMLcEI23zCtp6YrEAzehy4E570X5oIR7YoU8O6mIn9796pcYHVHkFYxQ8q
         KNqA==
X-Forwarded-Encrypted: i=1; AJvYcCVwZMydotF4sCN8gcwMeq5qQYrUSNnaHVuN6TbZKhDhIHgXe5bYC7jOv7vK3IECMloa5zu84I3K8zc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyZXuZYaozQ0agWh/wrGGWFuA3ihVCQGJEGjRvbaWt3y4MMGqs/
	Vbdq7Q9KUn3rBCIhPdok88QvId1wXQeE8aFxQ/QEypbGUP868tm2LsVUNlXkVQ==
X-Google-Smtp-Source: AGHT+IFG08zZZ8WX4rffRGh2c+dA9Q7kjaAfVwyyYV+dXzs78/MZD8070xoIr/Oxi46ipdE9uqE1SQ==
X-Received: by 2002:a05:6000:11ce:b0:37d:3e6d:6a00 with SMTP id ffacd0b85a97d-37d600d329cmr17707144f8f.47.1729178291063;
        Thu, 17 Oct 2024 08:18:11 -0700 (PDT)
Message-ID: <a09aaf26-2e52-4e0b-9a09-da90d24cc01e@suse.com>
Date: Thu, 17 Oct 2024 17:18:09 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 4/5] xen/riscv: initialize the VMAP_DEFAULT virtual
 range
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <c1aac25b3e772ca243ee74a131e2c861ef2a20ca.1729068334.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: <c1aac25b3e772ca243ee74a131e2c861ef2a20ca.1729068334.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 11:15, Oleksii Kurochko wrote:
> Call vm_init() to initialize the VMAP_DEFAULT virtual range.
> 
> To support this, introduce the populate_pt_range() and
> arch_vmap_virt_end() functions, which are used by
> vm_init()->vm_init_type().
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Thu Oct 17 15:18:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 15:18:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820717.1234296 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1SH0-0002KA-1r; Thu, 17 Oct 2024 15:18:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820717.1234296; Thu, 17 Oct 2024 15: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 1t1SGz-0002K3-Uk; Thu, 17 Oct 2024 15:18:45 +0000
Received: by outflank-mailman (input) for mailman id 820717;
 Thu, 17 Oct 2024 15:18: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=Rwie=RN=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1SGz-0001oE-3O
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 15:18:45 +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 18b50693-8c9b-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 17:18:43 +0200 (CEST)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-37d4c1b1455so852762f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 08:18:43 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37d7fc12023sm7505034f8f.91.2024.10.17.08.18.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 08:18:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 18b50693-8c9b-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729178323; x=1729783123; 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=pFd35RxNwSJLVrbxufCDkXuExbYD0dHZNmusIHFCzDs=;
        b=RWc6bEE9xuMBEnKNNkGO3STaOqFuLceGukDUtk46jLonY4z4Z9jRAjwK9w4vXD8NZ1
         6WK+6dj5zTBLb8xGGqnc3OfSmrsCXMqfln+9j0PzQK/uN9MB0YNY+UsUYoTNWxuDL6ci
         HOyEAzgm36dcVXGWxhdJqWr62RADQR0lhiEt1Oj3Tx6BMCk9dYBNkiqPftnss2dfSB3K
         X3h2GL6dyFTR/x+1TsGrck3HZw42IjVoAyG6Y/9KtrgVpP6xr+snZfLXcz6bLiD+6I5L
         4F28E9y6lyZhjKi/o0Sr1Kvd9hnY66BjdvtTcWxRv9uVCMakVQR/84gIf851tiosUSeA
         mRBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729178323; x=1729783123;
        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=pFd35RxNwSJLVrbxufCDkXuExbYD0dHZNmusIHFCzDs=;
        b=rCCXdLkR4Ui4SPP/wObH1T4BgP2iB5G8OvdgXDWZBFnSHKWneucwGDl49lAlb7S1BX
         RlpmU1NokTBqgVmXyzlJZ6ik/f6Bi9zln/EVOJuv+WLtS+2q7I9fKfm9Z3spb0PBjlut
         qnrofpVqI4z7A5YcZigAbTVPkA9bB232Rtb3lahx9DcKI0BSk88tvYYnTxEw1EAq3nPp
         ef+0dBPpyauGIc1GVPspKp3/l4gnqBgLwSD3XlYuKBqPZbt3Hu2annxzQtoNkuOxoCrw
         LGFkyb4ttDiBXq2KLDhvAa+we21z9p+hjY/UYmAscunOyErnWLGl+Hv0xbOhQ4ey+5Fp
         FIWA==
X-Forwarded-Encrypted: i=1; AJvYcCW2cXhTvqtgZO6C6rKcQN0Lqf17/xvBBdk1rN2k+2Ciwj4QvCcUjHrvbq3pjhv/dSfCk6hI753Ts/o=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz80SIxBz7hM63lwHvFUIGgw4gxGIrk3SL4BYTJh6OS2nsFIq6f
	2FbLwzk01ptaW/Cnalwdzrh/ReRljGJNwF2p5q5ku5PmBmWo+/riq7MEOiIAVg==
X-Google-Smtp-Source: AGHT+IEWyksSelgkdGY1sqB3Vr5jjERe2Uoib4RWDlHhEXWYV9/IEt6jnkXZZ47nqDL5sIlR1SXiYw==
X-Received: by 2002:a5d:564b:0:b0:374:c3a3:1f4f with SMTP id ffacd0b85a97d-37d551ab725mr15659585f8f.24.1729178322907;
        Thu, 17 Oct 2024 08:18:42 -0700 (PDT)
Message-ID: <9779788e-13e4-4608-8c98-d58fa6464ed2@suse.com>
Date: Thu, 17 Oct 2024 17:18:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 5/5] xen/riscv: finalize boot allocator and transition
 to boot state
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <d3f3108653b7ad42c085118cee3a6634b3227c86.1729068334.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: <d3f3108653b7ad42c085118cee3a6634b3227c86.1729068334.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.10.2024 11:15, Oleksii Kurochko wrote:
> Add a call to end_boot_allocator() in start_xen() to finalize the
> boot memory allocator, moving free pages to the domain sub-allocator.
> 
> After initializing the memory subsystem, update `system_state` from
> `SYS_STATE_early_boot` to `SYS_STATE_boot`, signifying the end of the
> early boot phase.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

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




From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:01:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:01:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820737.1234326 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Svs-0001D0-Ee; Thu, 17 Oct 2024 16:01:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820737.1234326; Thu, 17 Oct 2024 16: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 1t1Svs-0001Ct-C1; Thu, 17 Oct 2024 16:01:00 +0000
Received: by outflank-mailman (input) for mailman id 820737;
 Thu, 17 Oct 2024 16: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=soIK=RN=bounce.vates.tech=bounce-md_30504962.671134b6.v1-3269ddf0e1504209a556bf261eed95cc@srs-se1.protection.inumbo.net>)
 id 1t1Svq-0001Cn-Sc
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 16:00:59 +0000
Received: from mail186-28.suw21.mandrillapp.com
 (mail186-28.suw21.mandrillapp.com [198.2.186.28])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fe180603-8ca0-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 18:00:56 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-28.suw21.mandrillapp.com (Mailchimp) with ESMTP id
 4XTsxy6RqXzMQxdJL
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 16:00:54 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 3269ddf0e1504209a556bf261eed95cc; Thu, 17 Oct 2024 16: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>
X-Inumbo-ID: fe180603-8ca0-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729180854; x=1729441354;
	bh=sBknxU3qx6lJYsXJtc0shHOmOTxFkXuKMSShxe3dFks=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=XDI3hlHshQqfziBDv8LD5czS9yA5zqhLcFs90uDhIfFz/srdabdZbTRLh7/G/jOd/
	 JgnoEe1+IqWCl/pVFuBgigIjd+Eeq+Zl8Im560LoQ82/2dblFKZKA9xQVjJ1Yb7i6d
	 /BBGWwsE4t3VQUq3uXj/OSPTd+vg101H0AltjAGSPVxehujNcz2tREeEbZ1s4ltruf
	 O5ylErSvP4FFQpMtFL/et5WEHhPC9aq9ge+KcYraISmGpix0aSERisyuUzpNed71pQ
	 fodnbsNqIkCy83aEsfEFHtryOo5WhGv7MaUuNqFlew2EcicIjGETWb4bzBMjjrZL1u
	 P3pfQpu058CFw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729180854; x=1729441354; i=anthony.perard@vates.tech;
	bh=sBknxU3qx6lJYsXJtc0shHOmOTxFkXuKMSShxe3dFks=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Clx9Ufm0pf7fPXNHzpAfRoTukxjUuZOwVp9grodQLjcR0/GB+eFpzPfd8RRIw4Mx2
	 UtBkRp8e7RVcCseMTAVtKNRzN+sH+J0qJwGeFEVJtbtT1FWfwUsEU/T4QVmR1GH1hD
	 jis/oqECphCCcGN9gX+qnc2d2sNNfuljjjkeR8NcRFbJG9xGcVr9M5yp1KilEXebDe
	 HO+oibzNfvoPXfLbF2sNQknD7tFfje3Sjp4+Ossfc/t63PhfRTwEXHlWsS0M8mH49v
	 mdagw9qylX6f3ZxhwsWNZ+psYmerhSm8xuYusYwRe6vzo0nQ8WCu5sa9JGCG6A+GqX
	 wN+70DoWEKHpQ==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH=20v6=201/5]=20x86/boot:=20create=20a=20C=20bundle=20for=2032=20bit=20boot=20code=20and=20use=20it?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729180851602
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Message-Id: <ZxE0slUwETDK83PD@l14>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com> <20241017133123.1946204-2-frediano.ziglio@cloud.com>
In-Reply-To: <20241017133123.1946204-2-frediano.ziglio@cloud.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.3269ddf0e1504209a556bf261eed95cc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241017:md
Date: Thu, 17 Oct 2024 16:00:54 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> +$(obj)/build32.base.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff)
> +$(obj)/build32.offset.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff) -DFINAL

I was somehow expecting "base" and "offset" to be the other way around,
but that's fine. And by the way, -DFINAL cancel changes to GAP and
TEXT_DIFF ;-).

But overall, the changes looks nice as is,
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:15:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:15:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820747.1234342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1T9c-00036R-MA; Thu, 17 Oct 2024 16:15:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820747.1234342; Thu, 17 Oct 2024 16:15: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 1t1T9c-00036K-JV; Thu, 17 Oct 2024 16:15:12 +0000
Received: by outflank-mailman (input) for mailman id 820747;
 Thu, 17 Oct 2024 16:15: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 1t1T9b-00036A-Jw; Thu, 17 Oct 2024 16:15: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 1t1T9b-0006X4-Fr; Thu, 17 Oct 2024 16:15: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 1t1T9b-0005Mt-6k; Thu, 17 Oct 2024 16:15:11 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1T9b-00033O-6R; Thu, 17 Oct 2024 16:15: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>
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=CaBDEPxVdvoWZutApCalVK3SjYZ2l6O3Lw/30O9DC/w=; b=mUvfhgQNV4qtSQImZj6KQupFI+
	YCtp9LEKb2sqZd1+uMkRE06alMBGt1Ksj6zC9GdqZ0U9BCelpfPMn0L5L0fI9pyrTknIv2nCfIKzm
	TCBkcZOxtvcarsB4mHufEQkem7dZDcum+sQOLUTU8AChulc3HNDzPON2Nd9Rh5Zx+m3I=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188144-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188144: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:debian-hvm-install:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=f774a677507966222624a9b2859f06ede7608100
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 16:15:11 +0000

flight 188144 qemu-mainline real [real]
flight 188171 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188144/
http://logs.test-lab.xenproject.org/osstest/logs/188171/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-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-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-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-amd64-amd64-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-amd64-amd64-libvirt-qcow2 14 migrate-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                f774a677507966222624a9b2859f06ede7608100
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   31 days
Failing since        187731  2024-09-17 13:11:20 Z   30 days   51 attempts
Testing same since   188101  2024-10-16 00:07:27 Z    1 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandra Diupina <adiupina@astralinux.ru>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Chao Liu <chao.liu@yeah.net>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Helge Deller <deller@gmx.de>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Julia Suvorova <jusual@redhat.com>
  Junjie Mao <junjie.mao@intel.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Roman Cardenas Rodriguez <rcardenas.rod@gmail.com>
  Roman Penyaev <r.peniaev@gmail.com>
  Román Cárdenas Rodríguez <rcardenas.rod@gmail.com>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  Strahinja Jankovic <strahinja.p.jankovic@gmail.com>
  Strahinja Jankovic <strahinjapjankovic@gmail.com>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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        fail    
 test-amd64-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 11295 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:20:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:20:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820761.1234353 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TEu-0004vP-EU; Thu, 17 Oct 2024 16:20:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820761.1234353; Thu, 17 Oct 2024 16:20: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 1t1TEu-0004vI-Bh; Thu, 17 Oct 2024 16:20:40 +0000
Received: by outflank-mailman (input) for mailman id 820761;
 Thu, 17 Oct 2024 16:20: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=ZFta=RN=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t1TEs-0004vC-Ll
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 16:20:38 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id be869c86-8ca3-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 18:20:37 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c9454f3bfaso1405297a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 09:20:37 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d77995esm2922739a12.65.2024.10.17.09.20.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 09:20:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: be869c86-8ca3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729182037; x=1729786837; 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=U+mTJfy0n5PIKLSVcCNTFOuwd2xc+l1lEtM8PXgXmcU=;
        b=dZlXXTglyzXDu2BDDbmHrgaaJiLnW2mkiEdFZuH8wH6srCqaKAh6+nNxZXgEmf1MdZ
         lBEQbMdbSpiVi7mxmVlt4575Yt84kM/gIb6CybNxxqUXKMWSsgTwAWr34Ea7QqQhwjul
         RdMXsS6e+k5XbD0bkKZaYjzv0/QSeSyWK4HB4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729182037; x=1729786837;
        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=U+mTJfy0n5PIKLSVcCNTFOuwd2xc+l1lEtM8PXgXmcU=;
        b=kc7E2/aRFVeZN0qQgZoUiW28UtsWhC6cP2TmwEA9eaifzqlv1YfW00/2EHg73hAHlw
         p1B32OqVDDbEkvF2XrYEjXbqNfOxjTK5ipQx3ahjNNzNeB8DhMF9PSrOiObfF80x9w6z
         7ddJmW27QSpZx5kGyFSVCCF4LGDwAFueCOZuDUeVc2348xPOK6+jY9QWpOdgYMW0hWTM
         6mD9hzcoL+pBNqjpPT2iaq2LQSvwP6mI/P/NwUrdzs8zzAkanbojYwwD2nlM8qLezFrR
         b+6dNcvYaec8LGVMVYg0BnWw1uRlkvdoNKitFLUwrbsUyC0khlmu+deZbmIorcC0Gyme
         LkDw==
X-Gm-Message-State: AOJu0YxLyRptnSyyUF7bDpZEWR+RyGTmaIbV7A6E3hP8SryhqTl0saX1
	tm+eHv/Q0btEFEvqyw7TQcFbQuH94+OV3IpFGukiV+cjTXKo5Mxd7FaOD4wxeZvDV07S7flRfw6
	PWkI=
X-Google-Smtp-Source: AGHT+IFiKnYxnAR6geUAwfqTvZ+lIASvuwjtE5j8OiErv9ABiA1EkY8G+CuRgbMRA/pxH0xyzT6Csg==
X-Received: by 2002:a05:6402:909:b0:5c9:1d7f:4fd9 with SMTP id 4fb4d7f45d1cf-5c95ac15476mr17135550a12.8.1729182036915;
        Thu, 17 Oct 2024 09:20:36 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: [XEN PATCH v1 0/3] CI: Upgrade the Fedora container and fix build failure
Date: Thu, 17 Oct 2024 17:20:18 +0100
Message-ID: <cover.1729170005.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.46.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hi,

Continuing Andrew's work on refreshing containers in GitLab CI.  With
Fedora 40, there was a build failure in the ocaml builds.  It is due
to an unused variable in an ocaml macro when building with "-Werror" .
Patch 2 solves the build failure, but I'm unsure if it is the best
approach.  Ideas welcome.

Andrew Cooper (1):
  CI: Refresh and upgrade the Fedora container

Javi Merino (2):
  automation: Fix URL to the gitlab container registry documentation
  ocaml/libs: Fill build failure due to unused variable in ocaml macro

 automation/build/README.md                    |  2 +-
 automation/build/fedora/29.dockerfile         | 46 -----------
 automation/build/fedora/40-x86_64.dockerfile  | 77 +++++++++++++++++++
 automation/gitlab-ci/build.yaml               |  8 +-
 automation/scripts/containerize               |  2 +-
 .../domain_getinfo_stubs_v1.c                 |  3 +
 6 files changed, 86 insertions(+), 52 deletions(-)
 delete mode 100644 automation/build/fedora/29.dockerfile
 create mode 100644 automation/build/fedora/40-x86_64.dockerfile

-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:20:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:20:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820762.1234364 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TEx-0005A4-Me; Thu, 17 Oct 2024 16:20:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820762.1234364; Thu, 17 Oct 2024 16: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 1t1TEx-00059w-HP; Thu, 17 Oct 2024 16:20:43 +0000
Received: by outflank-mailman (input) for mailman id 820762;
 Thu, 17 Oct 2024 16:20: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=ZFta=RN=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t1TEw-0004vC-Lb
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 16:20:42 +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 c1431c14-8ca3-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 18:20:42 +0200 (CEST)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2fb5014e2daso13310121fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 09:20:42 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d77995esm2922739a12.65.2024.10.17.09.20.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 09:20:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1431c14-8ca3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729182041; x=1729786841; 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=0mFPVW/GNfkFYA0jwP0JP0xhWbJwauejO0ZM9dVMIMk=;
        b=UjCxelEVIvR+2xeFyj/TnE1UjZm6m5fgKdGaF8f6vzV7Iw0ftOVuAcqzUMthohBe2w
         GA2xhJaOUPOUGMI6y4/C3EZJArR4liq5Pz6uU+lW3mpudgpetm/EqN65a5fhRMTCqiEL
         H44ZVDiPy+363QxfMxNsHXizI9OPg5Dw+Asig=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729182041; x=1729786841;
        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=0mFPVW/GNfkFYA0jwP0JP0xhWbJwauejO0ZM9dVMIMk=;
        b=mOjz/FZWLGrJ7mREr/RsqWkme9kMWRO7jWUcT5pw9a8lGinAH9V4XEdBFkM7eWuNKP
         Fp4pdkeFFDOp+RoDtDYdCq2gh2ShPBAKd2PzLWPbTCJI+8MQrl4UW92Ig1LOpJLeu1FW
         /pUqn1V6gLo1f1EdppxPwxRwUGAx+uGOOFHEp9dm0gLM/H/vnR1cz8DdcSCO73XnGXw5
         v+8P623O4lKudcHPE5y+5UbrW6OkH7QsQbEQZQuiVAdkV7yGDEOmtVTklj0Ro8DT+PGN
         6EafpVQXNfOk09+utHpxyITaK7ApRdR7RKjbAeFZXHfUNRlcnuwFaFwXdCu5UwJ0Guwq
         5RCw==
X-Gm-Message-State: AOJu0YwZ/A888xVndXtRJcCF36o37XdZhrm2uiV7bOQhFBMtgy/gVNAf
	cVHORjJaTqomb0JfZvTUsCaX6JP5PCs7ybpLZrrCgd+116SBi7bTQGPzTTuIZmiA3OHMERvMgow
	Kevg=
X-Google-Smtp-Source: AGHT+IGLTAiFvsipA8tB4KV2Rl1jDJqMPccfYVUbE4KJ0Xy7TV2QHZvD9nu9WmlTmzjjHZy3ZW6l9Q==
X-Received: by 2002:a2e:be23:0:b0:2fa:c9ad:3d36 with SMTP id 38308e7fff4ca-2fb3f1650e2mr97736421fa.7.1729182041389;
        Thu, 17 Oct 2024 09:20:41 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 1/3] automation: Fix URL to the gitlab container registry documentation
Date: Thu, 17 Oct 2024 17:20:19 +0100
Message-ID: <5ebb776792a345724b43b0843aa41c21febcc843.1729170005.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <cover.1729170005.git.javi.merino@cloud.com>
References: <cover.1729170005.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The gitlab documentation is now at
https://docs.gitlab.com/ee/administration/packages/container_registry.html

Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
 automation/build/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/automation/build/README.md b/automation/build/README.md
index bd0c0e041804..ecc898680c91 100644
--- a/automation/build/README.md
+++ b/automation/build/README.md
@@ -110,7 +110,7 @@ make -C automation/build opensuse/tumbleweed-x86_64 PUSH=1
 
 [BuildKit]: https://docs.docker.com/build/buildkit/
 [registry]: https://gitlab.com/xen-project/xen/container_registry
-[registry help]: https://gitlab.com/help/user/project/container_registry
+[registry help]: https://docs.gitlab.com/ee/user/packages/container_registry/
 
 
 Building/Running container for a different architecture
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:20:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:20:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820763.1234373 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TF3-0005Rq-Si; Thu, 17 Oct 2024 16:20:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820763.1234373; Thu, 17 Oct 2024 16:20: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 1t1TF3-0005Re-Py; Thu, 17 Oct 2024 16:20:49 +0000
Received: by outflank-mailman (input) for mailman id 820763;
 Thu, 17 Oct 2024 16:20: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=ZFta=RN=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t1TF2-0004vC-3B
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 16:20:48 +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 c45a0a80-8ca3-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 18:20:47 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a99fa009adcso58626766b.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 09:20:47 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d77995esm2922739a12.65.2024.10.17.09.20.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 09:20:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c45a0a80-8ca3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729182047; x=1729786847; 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=kgnhx5agu8oUcqb9qagvcSva4nEzimHG4s1giyUXOgs=;
        b=DoxzSI2tFJ1jDiYPjcQ+I6PTOyZz3genmfTBvKgINuTb5soggOqQpzk1kbx6nSpR7d
         ab33TJelsGc0T5yHxITxS5TcSPlGG9Pkx2hjrGXq1ivFvW0AYw9LElRB8yVsRZXqRzDq
         3D1YrpSF5gL1zzwhcjOXCTIWzcetZVQCCY5zI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729182047; x=1729786847;
        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=kgnhx5agu8oUcqb9qagvcSva4nEzimHG4s1giyUXOgs=;
        b=f3qlJ6ruI6H5QFGqbPRkrx8EyhkOnrUGPrUmsAV5DMLMwLW1+KQDet2vIhizGTsDai
         OH+ja73d9PNICQJpaQFu2w241zF9O41GDYGFfgmkUJdtLht5OolCOxZeV0QLzr29gPcl
         5svFi+3i60idHAOOb6jd8YEqVz2k5s7BiTu03W1s9RmK4GTeLx6+YH0bIYpGFw/2I9oY
         5+depgMQxuDC2ZVnJOQSfI1QfA6UEb5jVLb3Ky151NW2XEhvmzJlWr3BPx/Pe41UfMLv
         c3gR6sA/21wiIMkpBnLWjQADTtVbjDeKxeBDCx01KxbtLsjue2SuqT/5XDc2NtURa3/U
         DGBA==
X-Gm-Message-State: AOJu0Yy3aFmnFdrA2duiYYB5jA9JJqCepuXvIL4fbfxQ/22YMGUaGl+6
	zXljrM2Q0ZvcmBGVQRXOjUlCdIp8LJlxuRnpdBYN05PYeF2RJFbmHF1Yl6c6sp7plah9ERCPBJH
	Nfwk=
X-Google-Smtp-Source: AGHT+IGi48jW39nfLzkZ0jShufFEA0sV9ND93jydXIr0b+hTtD4pgFjW5DI8ncZwdeIP/YBXSsiSbA==
X-Received: by 2002:a05:6402:5c9:b0:5c9:5745:de9a with SMTP id 4fb4d7f45d1cf-5c95ac15776mr22549115a12.9.1729182046684;
        Thu, 17 Oct 2024 09:20:46 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Andrii Sultanov <andrii.sultanov@cloud.com>
Subject: [XEN PATCH v1 2/3] ocaml/libs: Fill build failure due to unused variable in ocaml macro
Date: Thu, 17 Oct 2024 17:20:20 +0100
Message-ID: <d6b98ca75017bf4aa72a69468321705263e66f30.1729170005.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <cover.1729170005.git.javi.merino@cloud.com>
References: <cover.1729170005.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

On Fedora 40, the build fails with:

    gcc -m64 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-but-set-variable -Wno-unused-local-typedefs   -Werror -O2 -fomit-frame-pointer -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ -MMD -MP -MF .domain_getinfo_stubs_v1.o.d -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE   -fPIC -I/usr/lib64/ocaml -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs/xsd_glue -I/build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include -D__XEN_TOOLS__ -I/build/tools/ocaml/libs\/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include  -c -o domain_getinfo_stubs_v1.o domain_getinfo_stubs_v1.c
    In file included from domain_getinfo_stubs_v1.c:10:
    domain_getinfo_stubs_v1.c: In function 'xsd_glue_failwith':
    /usr/lib64/ocaml/caml/memory.h:275:29: error: unused variable 'caml__frame' [-Werror=unused-variable]
      275 |   struct caml__roots_block *caml__frame = *caml_local_roots_ptr
          |                             ^~~~~~~~~~~
    domain_getinfo_stubs_v1.c:48:9: note: in expansion of macro 'CAMLparam0'
      48 |         CAMLparam0();
         |         ^~~~~~~~~~
    cc1: all warnings being treated as errors

The CAMLparam0 macro is defined in /usr/lib64/ocaml/caml/memory.h:255 as:

    #define CAMLparam0()                                                    \
      struct caml__roots_block** caml_local_roots_ptr =                     \
        (DO_CHECK_CAML_STATE ? Caml_check_caml_state() : (void)0,           \
         &CAML_LOCAL_ROOTS);                                                \
      struct caml__roots_block *caml__frame = *caml_local_roots_ptr

We can't modify the macro.  Mark the xsd_glue_failwith() function with
ignore "-Wunused-variable" to prevent gcc from failing the build due
to the unused variable.

Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
Signed-off-by: Javi Merino <javi.merino@cloud.com>
---

While it is not ideal, this is the most effective option I have found
that avoids treating warnings as errors.  I can add a comment above
the pragma explaining why if we decide that this is the way forward.

 .../domain_getinfo_plugin_v1/domain_getinfo_stubs_v1.c         | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/domain_getinfo_stubs_v1.c b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/domain_getinfo_stubs_v1.c
index 7be386f4d4c2..df2b3c74c727 100644
--- a/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/domain_getinfo_stubs_v1.c
+++ b/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/domain_getinfo_stubs_v1.c
@@ -42,6 +42,8 @@ static struct custom_operations xsd_glue_xenctrl_ops = {
 	.compare_ext = custom_compare_ext_default, /* Can't compare     */
 };
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-variable"
 static void Noreturn xsd_glue_failwith(
 	xc_interface *xch, const char *func, unsigned int line)
 {
@@ -70,6 +72,7 @@ static void Noreturn xsd_glue_failwith(
 
 	caml_raise_with_arg(*caml_named_value("xsg.error_v1"), msg);
 }
+#pragma GCC diagnostic pop
 #define xsd_glue_failwith(xch) xsd_glue_failwith(xch, __func__, __LINE__)
 
 CAMLprim value stub_xsd_glue_xc_interface_open(value unit)
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:20:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:20:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820764.1234383 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TF6-0005j8-5K; Thu, 17 Oct 2024 16:20:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820764.1234383; Thu, 17 Oct 2024 16:20: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 1t1TF6-0005iz-2V; Thu, 17 Oct 2024 16:20:52 +0000
Received: by outflank-mailman (input) for mailman id 820764;
 Thu, 17 Oct 2024 16:20: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=ZFta=RN=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t1TF4-0004vC-VW
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 16:20:50 +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 c60e79b9-8ca3-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 18:20:50 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c94b0b466cso1325224a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 09:20:50 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d77995esm2922739a12.65.2024.10.17.09.20.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 17 Oct 2024 09:20:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c60e79b9-8ca3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729182049; x=1729786849; 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=+NoEGn1hLziPO1/kdmCT0M4Dt8mYyVB2krAxxwVj8SM=;
        b=EwkQ7dF0Ra18CstDcH3SOD439eNk2KSF3nAmejQfmPfZT6mKavd6rTw1uutKCQhgvz
         sfFq9iUm65QoqBOtnawsfIQlsJmE5dH+C2nc7tovw0pVEBXS88qNNFRa1isKjMn+7KnG
         MKkXfRiB29Zcef1mjigHkrph0YhCfpBc0q8D0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729182049; x=1729786849;
        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=+NoEGn1hLziPO1/kdmCT0M4Dt8mYyVB2krAxxwVj8SM=;
        b=AQEBuPzR0hFxCJJrCRLx3jFwZFZ8rlgqqzFNhUQnSAUvkSw3kR0VDQQqnR4g1Y421Y
         avlgXlktLkqn/MSPyq0zh3pavDOvF0c6UFaG3Kk0Hfa2iXeHNy7E0B11TvcLYodV1+wd
         eBlo8qdGvdJk4XJRmCHRPReZIcI3etcfySlw7FPD/WdNV1q9UwZP2lpu6On+wyH2dAPc
         3UeI5k5Sj3UBbK+r+Wc/WlKD3v9meXvu6Jut3uYbbZQ1qy//Dh4lyfBH02fQtvMhg9y2
         dz9/3rCGSz7P6MouGeU8ZZplrkkz7fix+1qkxCYVDfD6toBN8He8YAMuiruM457HPSOi
         60HA==
X-Gm-Message-State: AOJu0YxHMp1RfEO6FjeNGHTxvsexoBgy24WCp+9Do+fX5NGyadC6qLxe
	pKXecAVDsOdR36fEUQWFOnDO7Zc6D9uuQvQLVf541MtREigtkOf4HqMq/jKKI1yk7FbmP9WBeo7
	wR64=
X-Google-Smtp-Source: AGHT+IFGc7GgRD5h3sh2qNHDcYbgjl/dkczgYrtKSi/fyrZqFFzkBmjqow0LUsh8aWmasQh1ziOdFg==
X-Received: by 2002:a05:6402:210a:b0:5c9:4d96:891 with SMTP id 4fb4d7f45d1cf-5c9950e0fd7mr5738796a12.18.1729182049619;
        Thu, 17 Oct 2024 09:20:49 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Javi Merino <javi.merino@cloud.com>
Subject: [XEN PATCH v1 3/3] CI: Refresh and upgrade the Fedora container
Date: Thu, 17 Oct 2024 17:20:21 +0100
Message-ID: <178560672106e37648304f5e597cc0b16c8db6db.1729170005.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.46.1
In-Reply-To: <cover.1729170005.git.javi.merino@cloud.com>
References: <cover.1729170005.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Andrew Cooper <andrew.cooper3@citrix.com>

Fedora 29 is long out of date.  Move forward 5 years to Fedora 40.

Include all the usual improvements.  Rework the container to be non-root, use
heredocs for legibility, and switch to the new naming scheme.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
 automation/build/fedora/29.dockerfile        | 46 ------------
 automation/build/fedora/40-x86_64.dockerfile | 77 ++++++++++++++++++++
 automation/gitlab-ci/build.yaml              |  8 +-
 automation/scripts/containerize              |  2 +-
 4 files changed, 82 insertions(+), 51 deletions(-)
 delete mode 100644 automation/build/fedora/29.dockerfile
 create mode 100644 automation/build/fedora/40-x86_64.dockerfile

diff --git a/automation/build/fedora/29.dockerfile b/automation/build/fedora/29.dockerfile
deleted file mode 100644
index d5f017ac723d..000000000000
--- a/automation/build/fedora/29.dockerfile
+++ /dev/null
@@ -1,46 +0,0 @@
-# syntax=docker/dockerfile:1
-FROM --platform=linux/amd64 fedora:29
-LABEL maintainer.name="The Xen Project" \
-      maintainer.email="xen-devel@lists.xenproject.org"
-
-# install Xen depends
-RUN dnf -y install \
-        clang \
-        gcc \
-        gcc-c++ \
-        ncurses-devel \
-        zlib-devel \
-        python-devel \
-        python3-devel \
-        libuuid-devel \
-        pkgconfig \
-        flex \
-        bison \
-        libaio-devel \
-        glib2-devel \
-        yajl-devel \
-        pixman-devel \
-        glibc-devel \
-        make \
-        binutils \
-        git \
-        wget \
-        acpica-tools \
-        python-markdown \
-        patch \
-        checkpolicy \
-        dev86 \
-        xz-devel \
-        bzip2 \
-        nasm \
-        ocaml \
-        ocaml-findlib \
-        golang \
-        # QEMU
-        ninja-build \
-    && dnf clean all && \
-    rm -rf /var/cache/dnf
-
-RUN useradd --create-home user
-USER user
-WORKDIR /build
diff --git a/automation/build/fedora/40-x86_64.dockerfile b/automation/build/fedora/40-x86_64.dockerfile
new file mode 100644
index 000000000000..7d4d4cc2ac0a
--- /dev/null
+++ b/automation/build/fedora/40-x86_64.dockerfile
@@ -0,0 +1,77 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 fedora:40
+LABEL maintainer.name="The Xen Project"
+LABEL maintainer.email="xen-devel@lists.xenproject.org"
+
+RUN <<EOF
+    set -e
+
+    useradd --create-home user
+
+    dnf -y update
+
+    DEPS=(
+        # Xen
+        binutils
+        gcc
+        make
+        python3
+        # Kconfig
+        bison
+        flex
+        # Flask
+        checkpolicy
+
+        # Tools (general)
+        git-core
+        gzip
+        patch
+        perl-interpreter
+        perl-File-Find
+        pkgconfig
+        wget
+        # libxenguest dombuilder
+        bzip2-devel
+        libzstd-devel
+        lzo-devel
+        xz-devel
+        zlib-devel
+        # libacpi
+        acpica-tools
+        # libxl
+        libuuid-devel
+        yajl-devel
+        # xen-foreign
+        diffutils
+        # RomBIOS
+        dev86
+        # Header Check
+        gcc-c++
+        # xentop
+        ncurses-devel
+        # Python bindings
+        python3-devel
+        python3-setuptools
+        # Ocaml bindings/oxenstored
+        ocaml
+        ocaml-findlib
+        # Golang bindings
+        golang
+
+        # Stubdom download/extract
+        bzip2
+
+        # Qemu build
+        glib2-devel
+        pixman-devel
+        ninja-build
+    )
+
+    dnf -y --setopt=install_weak_deps=False install "${DEPS[@]}"
+
+    dnf clean all
+    rm -rf /var/cache/dnf
+EOF
+
+USER user
+WORKDIR /build
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index c2db69ecf86c..09dd9e6ccbd0 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -579,15 +579,15 @@ debian-bookworm-32-gcc-debug:
   variables:
     CONTAINER: debian:bookworm-i386
 
-fedora-gcc:
+fedora-40-x86_64-gcc:
   extends: .gcc-x86-64-build
   variables:
-    CONTAINER: fedora:29
+    CONTAINER: fedora:40-x86_64
 
-fedora-gcc-debug:
+fedora-40-x86_64-gcc-debug:
   extends: .gcc-x86-64-build-debug
   variables:
-    CONTAINER: fedora:29
+    CONTAINER: fedora:40-x86_64
 
 ubuntu-16.04-x86_64-clang:
   extends: .clang-x86-64-build
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index 7607b78f7666..6ac02c42d124 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -28,7 +28,7 @@ case "_${CONTAINER}" in
     _alpine-arm64v8) CONTAINER="${BASE}/alpine:3.18-arm64v8" ;;
     _archlinux|_arch) CONTAINER="${BASE}/archlinux:current" ;;
     _centos7) CONTAINER="${BASE}/centos:7" ;;
-    _fedora) CONTAINER="${BASE}/fedora:29";;
+    _fedora) CONTAINER="${BASE}/fedora:40-x86_64";;
     _bullseye-ppc64le) CONTAINER="${BASE}/debian:11-ppc64le" ;;
     _bookworm-ppc64le) CONTAINER="${BASE}/debian:12-ppc64le" ;;
     _bullseye-riscv64) CONTAINER="${BASE}/debian:11-riscv64" ;;
-- 
2.46.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:49:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:49:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820794.1234398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TgJ-0001kz-B0; Thu, 17 Oct 2024 16:48:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820794.1234398; Thu, 17 Oct 2024 16:48: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 1t1TgJ-0001ks-8J; Thu, 17 Oct 2024 16:48:59 +0000
Received: by outflank-mailman (input) for mailman id 820794;
 Thu, 17 Oct 2024 16:48: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 1t1TgI-0001km-7Y
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 16:48: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 1t1TgG-00078I-HB; Thu, 17 Oct 2024 16:48:56 +0000
Received: from [15.248.2.232] (helo=[10.24.67.20])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1TgG-0006Tl-7b; Thu, 17 Oct 2024 16:48: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=Odz8lSXl2+Hf9YX92bPts2jH/5omdeFVBrfw8Jnbm7o=; b=O4evCxqd3Di4KPpNjwY2Z4c1ew
	FXrt0R1rkUMgygAGdrV7DKAMbc0J84/r0uZSAMS059tplsYu9VjfWEty6G13eTTloz5MMuCZEDrd3
	RwwtnkoFZG1IBO/Dhw3qCs8QpjWEkq2rGQJ6TceNXa1sVIquQLxtL8UMyXcg2zhHVoNs=;
Message-ID: <52741def-249f-4565-9f42-629e3c758dfc@xen.org>
Date: Thu, 17 Oct 2024 17:48:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] MAINTAINERS: minor file line update
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>
References: <20241004111127.897937-1-frediano.ziglio@cloud.com>
 <2a020197-e061-4d8d-9d49-df7878153d85@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <2a020197-e061-4d8d-9d49-df7878153d85@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 08/10/2024 12:48, Jan Beulich wrote:
> On 04.10.2024 13:11, Frediano Ziglio wrote:
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -517,7 +517,7 @@ F:	stubdom/
>>   TEE MEDIATORS
>>   M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>>   S:	Supported
>> -F:	xen/arch/arm/include/asm/tee
>> +F:	xen/arch/arm/include/asm/tee/
>>   F:	xen/arch/arm/tee/
> 
> I think this is a change which actually wants ack-ing by the maintainer
> named here, not THE REST. Cc-ing Volodymyr.

I would agree if this is significantly changing the list of files 
maintained. However, from testing, it doesn't change anything. So I 
don't think it is necessary to require the actual maintainer named in 
this section...

Also Bertrand is now a co-maintainer. So CCing him. I will give both of 
them another day to answer. If there are no answer, I will commit by end 
of my day tomorrow with:

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:51:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:51:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820803.1234408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TiH-0003Fn-QM; Thu, 17 Oct 2024 16:51:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820803.1234408; Thu, 17 Oct 2024 16:51: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 1t1TiH-0003Fg-Nm; Thu, 17 Oct 2024 16:51:01 +0000
Received: by outflank-mailman (input) for mailman id 820803;
 Thu, 17 Oct 2024 16:51: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 1t1TiG-0003FW-RG; Thu, 17 Oct 2024 16:51: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 1t1TiG-0007AJ-Pw; Thu, 17 Oct 2024 16:51: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 1t1TiG-0007jb-Fn; Thu, 17 Oct 2024 16:51:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1TiG-0002Mi-FJ; Thu, 17 Oct 2024 16:51: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=ZmM3uwRUPs2lthkLp/TnEXWv9J3zI83HvyOjZuUA7rc=; b=V9TDdkE3itiLej0EFBEwsJfDeo
	jWFQvZDM5Pnc2m85OL/HcShW2FyEnuZmdu7PZFgv4B06QwWwB0giN2y9LE8k3xf6T/FBBWD21/uKg
	lkRcc+4hk99e+Yz8Ba+JHKMu7LLg4IT9eCgPJxQe6SDqIEwJeX5VNWc7Pr5681NOw1AI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188161-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188161: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=79598f34fa024ad2491b46b95c3189c5a7f159d2
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 16:51:00 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 79598f34fa024ad2491b46b95c3189c5a7f159d2
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    0 days
Testing same since   188156  2024-10-17 09:14:11 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@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                         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.

------------------------------------------------------------
commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 16:53:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 16:53:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820811.1234419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TkR-0003nq-74; Thu, 17 Oct 2024 16:53:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820811.1234419; Thu, 17 Oct 2024 16:53: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 1t1TkR-0003nj-3A; Thu, 17 Oct 2024 16:53:15 +0000
Received: by outflank-mailman (input) for mailman id 820811;
 Thu, 17 Oct 2024 16: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=rXRp=RN=epam.com=Volodymyr_Babchuk@srs-se1.protection.inumbo.net>)
 id 1t1TkP-0003na-7G
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 16:53:13 +0000
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur02on20602.outbound.protection.outlook.com
 [2a01:111:f403:2607::602])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4ad24bdd-8ca8-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 18:53:11 +0200 (CEST)
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 (2603:10a6:150:16a::21) by AS8PR03MB8808.eurprd03.prod.outlook.com
 (2603:10a6:20b:537::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.23; Thu, 17 Oct
 2024 16:53:06 +0000
Received: from GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::a41e:5aa8:e298:757e]) by GV1PR03MB10456.eurprd03.prod.outlook.com
 ([fe80::a41e:5aa8:e298:757e%4]) with mapi id 15.20.8048.020; Thu, 17 Oct 2024
 16:53: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: 4ad24bdd-8ca8-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qoYeH/t0SASCbg5BZrfSFOluQxT48807GfnDZliWkfQAlyQaqYuKmWO/jX1fhc667BmWx1Luy4Y3quHd8WYIK6TvL5ucj5mGKTQ2UQO+lA7hUXj89YzkMY7AbKkxue5t/hT3SEMjpsOZ3zHaKUNJW6CX0p5fZzx2blCxaJYmzUf1NqVpijpQ6ngGkEcBWomuFA/UUOmWzVf1PgSvB1Ll0VDg+6TFvz4qw/B1n70GuUBQybF3xsrnGQ15iyu1MMK/qvITr12j7VxssKlZTYyGvMLMBiAg8AugLbXMjJqXM/XfH/SVxKHcOydUPnNyMYXE7QMBE4LGfAZJH/uPxyv8gA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=RUD2Jrq9fjp3vA8DtcPFBUdXVEZWwv052vpfQluUuY8=;
 b=Ff1Yi8H9YQ6S7qRifBGwQ8za1InYcu6Xq9QCeHBnAtlK2LW1IgNGnHP9WasaI8ZYe71Q76z3nCQ8bybA8Uzp+R8K2/gknItV6UaV8+m4PAK4ZM+Ao1bkPrnbfcuV3fYsl9DotYu3vJLoI4n/fARycMqUkUSy1h4zU5U7iqIlGokNLCJivgJoHSsubNFZFTs03udCbSeAMlITkPKhBcj7Vy7Pk4CYQ3U4rauY2nKq96URhlZeY6eAfJtyjx/O8hUyf3xu6+7ao3p1YQCpAux0G7QLmHCwqLwGpMkANFN9Dn8vAD5JGRg/80/cdOPobeK7noNMHKTBuKYZv5Y8EjiUHw==
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=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RUD2Jrq9fjp3vA8DtcPFBUdXVEZWwv052vpfQluUuY8=;
 b=uc0CnemGCeeUL+Hq3aYlIYXAadA6MtmPsgdYvReMEmWvXoesa0WNDOvnie1EiP847+5ORN6yvywAJ9aQKko7NEupXJ7JDJuVUQNT+msmUhC62+D8MxjMEn1OS9t0B15WhYGbBjqeo7A1G90+2nJn3KFs8IFy/xcQe8RZc4q6KwTNgWwawNsjrcPnzuYrRIYuoM84/G1qzbqEQrxPBW8632pxnh+o8CVgh2J/T7FVn1dx4OF3cS8Y6hcQA/IQS8zd7GjRrVcJY86q/tvJgOuUyAXkxO1wj/S2buhCgnc2YdV6dcLKpHQxpI22YuqPaauTVczGKY5cvlSAdVcns2gEiw==
From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Frediano Ziglio <frediano.ziglio@cloud.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2] MAINTAINERS: minor file line update
Thread-Topic: [PATCH v2] MAINTAINERS: minor file line update
Thread-Index: AQHbFk40xUuteohYiUWl6ITrxLtdtA==
Date: Thu, 17 Oct 2024 16:53:06 +0000
Message-ID: <87msj24qoe.fsf@epam.com>
References: <20241004111127.897937-1-frediano.ziglio@cloud.com>
	<2a020197-e061-4d8d-9d49-df7878153d85@suse.com>
In-Reply-To: <2a020197-e061-4d8d-9d49-df7878153d85@suse.com> (Jan Beulich's
	message of "Tue, 8 Oct 2024 13:48:41 +0200")
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=epam.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: GV1PR03MB10456:EE_|AS8PR03MB8808:EE_
x-ms-office365-filtering-correlation-id: 37fed862-8e98-40bb-288d-08dceecc2c55
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
x-microsoft-antispam-message-info:
 =?iso-8859-1?Q?naQ3rEVR/8e5gtIhAzCGOt6S5Bm3vrlmx1YQu+N0ODq9iRCNGzyLV2Dp3D?=
 =?iso-8859-1?Q?7AcszrBL56hhhHa1tnd82vzbuomLpQ0EcB+01FF/LLX9gPAZzrmitsdPiG?=
 =?iso-8859-1?Q?1jthjm376Pzw0xeoXvN0PVag8jizw5jCF5KhMqbKiWUNmpiIVbO8cBUSaF?=
 =?iso-8859-1?Q?/d4hxBhtIryVajvmU8VOe/ivzPUo0rQK6CgHwZsooqCoMuwXYAoAKGP39V?=
 =?iso-8859-1?Q?FGadqHiIRvzQwGms6obh/pu02t3rUmpTwLYN3IYN/3QVZbcStZjk/V6uVS?=
 =?iso-8859-1?Q?JtKEZ3bNnVbGMmW3JXIcpGCF++zmn5Ks9aVSIXTGfyUpeTu2ehNSFMNXyh?=
 =?iso-8859-1?Q?2GlTIkjBq2ityo/jssV6xjNbQHLq7jFHEji9lgJgjqUhNObEVv3NaFCpf0?=
 =?iso-8859-1?Q?P+byTQkZx30c9qUyhMXIXrERaGKGpeNCZN0lItZfz4Hsd4dhtTa6WzDMPN?=
 =?iso-8859-1?Q?xsSVramGCCYrCymuv5vLMjNke+vkGW+KTspx7CaHufNkLsFuuh7zFVcVTc?=
 =?iso-8859-1?Q?QMrQzujPypia7xOJAAWziZXbOsCnUMg5eebDyvDjgdORUE0TV/Ph6kJBvl?=
 =?iso-8859-1?Q?80pDCvdsI2qdvPXT6DG0Ajnmw1lN5Cd9CE8j7K1RAZGHtsjy5z7LA4KkOm?=
 =?iso-8859-1?Q?8W0FAg/XA3JSnE5lPnAXxMShGkQhjMqFRHd/i7UWDioPY6ykeXnqir02yc?=
 =?iso-8859-1?Q?Gk0a96PoodQYXhSp47aoRBpq3H9y96NGEwSBbIOmwA+DEbY+QgIPHX3dRI?=
 =?iso-8859-1?Q?caMTZu3BZsXCtK1SBPd6HOftmj4Pvu7w2rW4a1bTj/H80VkGDBqIOjM8ID?=
 =?iso-8859-1?Q?xdTOaoBUFz8c8Q/wEV1GW6YkGWdI2HlwIdSVeQTJ4O9w7HELDBqOvO2kC+?=
 =?iso-8859-1?Q?ufHwvZ80gA4eZOWLgn/OUXrQ2U8nGv43n7U/LLexXQv/J3NLTkSHXXwizA?=
 =?iso-8859-1?Q?sf9NKkU6OamTZdC6ab6KChKvcsbFIRooR1eHq9oq6lfLhoWtWb2LYgAuhk?=
 =?iso-8859-1?Q?i2r61ENYZT0S4z3/ko2g1xkRWq0u9BaXbfg2uzCb/z2RdxeRzQv1G6v091?=
 =?iso-8859-1?Q?oky3l9qch7DbNHifD1gwEc4K4Okj6D/wBp0VvZTEWX26HdsUwRY+50ISP7?=
 =?iso-8859-1?Q?cVKIJSaYIEiubnzgJ/rfSF6nYY5VNr0ewR1S/PCLR09zNvBW15xtZ5tbXz?=
 =?iso-8859-1?Q?ej+KJTABgjv0RMV3nQzbOZiqCzoCjX3jlgvnHOs+/kZujg+6rqomvMmHxz?=
 =?iso-8859-1?Q?kAaUuFYKCBBpOZFndxBpPib5ZuEI6xEcY6IoxbaZ1r7tLXdqCAY6uuT/dY?=
 =?iso-8859-1?Q?B8BOe7abAUZYnX0o4LOlveGMuNpJJ8v84BeQ1eEjuZb2FvzLVLQpuwt4zD?=
 =?iso-8859-1?Q?4ynGgqwhqbdiDWScQWg9DD8Xo+KzFyt/nCi0iofu/a8muh9gX8XZ8=3D?=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR03MB10456.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?iso-8859-1?Q?hJb7dYPYmZZ/TCE1SuzB9pq5+bFmmUdaNsx27NeplxgA0tmQ5pUbqVPhAu?=
 =?iso-8859-1?Q?ow2rznveE0hoP9f31HfJEINe+fuXU8BYU2knhTEQRQ2Phe7aF7Z8WZzYKq?=
 =?iso-8859-1?Q?vG08CB/I3s9bxnKLxSjO/io1wZzjnsswsSRg3tMXYwXT9ZGsyUACYICHIj?=
 =?iso-8859-1?Q?sGGWvtknAUWD+piMnkG8+XEngOhWrnKMdUmpxslN9hLiiTDsv2tQwkxg9Y?=
 =?iso-8859-1?Q?qsclfHrfvzbUsO/4t+qDN08YzY6TRf7ugQkBdeufMAqFlgyE5sl8DiJfhF?=
 =?iso-8859-1?Q?LgsgB57IIDoWJgyi75Gch/vg96AydFKYQy+0O5NYOv969WYFFTE7WFdDXl?=
 =?iso-8859-1?Q?xgm1KvxRevMjvmYb98GVbcicj2OtA3Qtlq4tJqZebpfyd3/zPy5fZu2rxF?=
 =?iso-8859-1?Q?TQZXJRUZOKevUOeJo5aq9eNiSdEyThMl76yx4NiWR+uQ6mCjQD0/hIDmxE?=
 =?iso-8859-1?Q?keCxgFmmrZOniqUO1hee22uiQSpXKmpslh5AwtMFmPxQWr4GASDrK+R3sN?=
 =?iso-8859-1?Q?sXEvotRYPoHz3dR97dfssN4PB7Xj9ouQRw88L6l4FznTF+kL5ceF4wkWo/?=
 =?iso-8859-1?Q?C2Rr/OagM9tWsGbDfU0ns2DivH43QiGfzaIM5wxKZQ2zI6NtU5KkNM7t7I?=
 =?iso-8859-1?Q?hYwQGAN5GG2JlD4HSHeilojtjZC+sjVuj+VoA7NfA4XFZ0tKPOZ3tphePq?=
 =?iso-8859-1?Q?1fjlrd2e+z/7uatUkW2GSdwCEA2sbi4B9VMzwPSscw0Y53OKwxGRGeI/CQ?=
 =?iso-8859-1?Q?TmCoyunq5NX85mnUniIBvfBCfQ0kgTs3lghxrge3xgOSEOHU5zkMTAiR5u?=
 =?iso-8859-1?Q?mrk+Tet0gScPVvdu5pZoQXBt6pKFWEjuICXDvgNI9zSWKB4yOPlstY1/vU?=
 =?iso-8859-1?Q?a3HkIWuEmRztNXAF7icT/lquPGRD4/y8+ifU3naDDutWV1b8fb944novzN?=
 =?iso-8859-1?Q?HQRAaJGrr/Ge6p4TVu6fvzHIPLwK94YXzxwvSFRxZCtX5/nXp933aofTB5?=
 =?iso-8859-1?Q?PLufJRCGQzGyZzs1EbIaQNjkN8PeraxnicLC2BnLoL9jrBkHmr+OCl0sx6?=
 =?iso-8859-1?Q?HcLMnd+0KoCIXC3rue1yRZFDN1Z1/kfc/FrXUuB2CD6pblhHozWYwOLn3E?=
 =?iso-8859-1?Q?yt0WiEso7eBwsfionA110c+Oy1mcOldclW2r1oHNYR7I9lQzfgRR3NYi83?=
 =?iso-8859-1?Q?pmfveq/qKxN8XGtb5o0ymo9yw/+3lcdD62brS/J7Fyi/6c9pVIOTuResIu?=
 =?iso-8859-1?Q?jsUMEKkIjYBZAsVKjc24NKPwr3C0yfUu9XzEZg4t1huIop37L7tHqByABq?=
 =?iso-8859-1?Q?JHPSsnJs19yx/pfYrR3YCcSO/YcSLLLG4V9DNAPodv4Kws15Hl7/vT2qcN?=
 =?iso-8859-1?Q?iU8na4B7FoG+km/aDdqWPUsXb9F7mJUf6bJasOYZdMp+PB7qGPlTrq85ui?=
 =?iso-8859-1?Q?ijzZGoMC8JOrjFHXSg3TOLq6J8CMDMVZbONjsFlI6J923Jw/H92if6tp3s?=
 =?iso-8859-1?Q?Wp2RiM2saguwy2KBUZlVIvZoe36eyCa9ie4lHvV9XXHnkqO2DTPc225rvM?=
 =?iso-8859-1?Q?+KPugR0ZadtkngnFHdqZdVTG90WzzUxikizkSThoMEg9ut7Ke1jkR9huVn?=
 =?iso-8859-1?Q?HVZZP/aQafabSqvgv4Y8elj2q3jxlzEKvC6ZhmZp5qb0SMcx7blxYCTQ?=
 =?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: GV1PR03MB10456.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 37fed862-8e98-40bb-288d-08dceecc2c55
X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Oct 2024 16:53:06.4101
 (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: wvYEP4gbAc7BunIv/D60TGp1W2GZ//AsluTZVPIZ0MkHxHKNDpLM6VA5RlTBFG+4oP38mYKBbgpat+fyyKS6w3kMY06hpTjrE8AIZDNGYRY=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8808

Jan Beulich <jbeulich@suse.com> writes:

Hi

> On 04.10.2024 13:11, Frediano Ziglio wrote:
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -517,7 +517,7 @@ F:	stubdom/
>>  TEE MEDIATORS
>>  M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>>  S:	Supported
>> -F:	xen/arch/arm/include/asm/tee
>> +F:	xen/arch/arm/include/asm/tee/
>>  F:	xen/arch/arm/tee/
>

Acked-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

> I think this is a change which actually wants ack-ing by the maintainer
> named here, not THE REST. Cc-ing Volodymyr.
>
> Jan


--=20
WBR, Volodymyr=


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:03:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:03:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820819.1234429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Ttn-0005o2-22; Thu, 17 Oct 2024 17:02:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820819.1234429; Thu, 17 Oct 2024 17:02: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 1t1Ttm-0005nv-Va; Thu, 17 Oct 2024 17:02:54 +0000
Received: by outflank-mailman (input) for mailman id 820819;
 Thu, 17 Oct 2024 17: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=0C1g=RN=bounce.vates.tech=bounce-md_30504962.67114339.v1-36c0712005714e83bc891fbb4b76035d@srs-se1.protection.inumbo.net>)
 id 1t1Ttm-0005np-EE
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:02:54 +0000
Received: from mail186-28.suw21.mandrillapp.com
 (mail186-28.suw21.mandrillapp.com [198.2.186.28])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a45b3c37-8ca9-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:02:52 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-28.suw21.mandrillapp.com (Mailchimp) with ESMTP id
 4XTvKP4SRGzMQxdJX
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 17:02:49 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 36c0712005714e83bc891fbb4b76035d; Thu, 17 Oct 2024 17: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: a45b3c37-8ca9-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729184569; x=1729445069;
	bh=RuKXeiTwVLED9q8JXfpU9iyhN9lwitkaLd9n5bwKn5Q=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=VdH3QFdi38fNtiDyHI0MX6NUTrezUGartAPiD2aEt/16UfQEVELiZgx8pAEoL72F5
	 wUDqvPs8OFw3pg4UySkYbP9rlwS4pGKtf7zI3/AuGrkHhbvmX+0Tctit7QESAcybd5
	 EJpmYmJz5xnHtHe3s4E+rONFTfcz/oUnzDldeL+diQJEHp531iDmolB3CyJE4eRpOV
	 6uvG7q+R1PM4oEVkVPU5R2ltoVjClspmL1Ek2ZCUoGuYnx7IycivgItCVXYOMbFGzC
	 f9bVb+YreClHaGa8WsdP3MYoV+m7ybd2T6H1jFax59pk4BPPm/dMblnVDdVTZMY2BB
	 2R2kJsX7nYLnw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729184569; x=1729445069; i=anthony.perard@vates.tech;
	bh=RuKXeiTwVLED9q8JXfpU9iyhN9lwitkaLd9n5bwKn5Q=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=YSlsOHzcKPSrjvbUGRV68wA79xEVA3fham6R0PfZXwG0glLFrTurY0M1RkH2fIiid
	 +mWZZ5pjJgsZwMtZRClHcr0qo5qbAYa/i17BcYrWknCSfV9wNZqqpKH+hrV026CtnD
	 OOCgAXM8/sia0SZ18D2QAaGb/8TuonLwpQf80qjiiHwj/fNVqZFQkZilcXLsCgPvFr
	 U1lYyNbWqG/jUwyQn5hwlbXodbXrbkZLj6RsqQ1KGj/aJ0fDeK48N/cctsjk2FRTBR
	 IdUGoa3v8lq7Wol7yoQ+J38DrZXDrbQIowWieXhftzk+IGRu3myPbEeg90FHjsA0yJ
	 lbeS1oDDvksDA==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[XEN=20PATCH=20v1=201/3]=20automation:=20Fix=20URL=20to=20the=20gitlab=20container=20registry=20documentation?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729184568275
To: Javi Merino <javi.merino@cloud.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, Stefano Stabellini <sstabellini@kernel.org>
Message-Id: <ZxFDN0rRfsg0iNBj@l14>
References: <cover.1729170005.git.javi.merino@cloud.com> <5ebb776792a345724b43b0843aa41c21febcc843.1729170005.git.javi.merino@cloud.com>
In-Reply-To: <5ebb776792a345724b43b0843aa41c21febcc843.1729170005.git.javi.merino@cloud.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.36c0712005714e83bc891fbb4b76035d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241017:md
Date: Thu, 17 Oct 2024 17:02:49 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Thu, Oct 17, 2024 at 05:20:19PM +0100, Javi Merino wrote:
> The gitlab documentation is now at
> https://docs.gitlab.com/ee/administration/packages/container_registry.html

This link seems to be for self-managed instance of gitlab, but the link
in the patch looks fine.

> Signed-off-by: Javi Merino <javi.merino@cloud.com>

The patch description could be removed, so:
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

> ---
>  automation/build/README.md | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/automation/build/README.md b/automation/build/README.md
> index bd0c0e041804..ecc898680c91 100644
> --- a/automation/build/README.md
> +++ b/automation/build/README.md
> @@ -110,7 +110,7 @@ make -C automation/build opensuse/tumbleweed-x86_64 PUSH=1
>  
>  [BuildKit]: https://docs.docker.com/build/buildkit/
>  [registry]: https://gitlab.com/xen-project/xen/container_registry
> -[registry help]: https://gitlab.com/help/user/project/container_registry
> +[registry help]: https://docs.gitlab.com/ee/user/packages/container_registry/
>  
>  
>  Building/Running container for a different architecture

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:03:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:03:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820820.1234439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TuB-0006CW-AZ; Thu, 17 Oct 2024 17:03:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820820.1234439; Thu, 17 Oct 2024 17:03: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 1t1TuB-0006CL-7I; Thu, 17 Oct 2024 17:03:19 +0000
Received: by outflank-mailman (input) for mailman id 820820;
 Thu, 17 Oct 2024 17:03: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=mMIn=RN=bounce.vates.tech=bounce-md_30504962.67114354.v1-ca06631e087c4c96a937f8f6e5a5c153@srs-se1.protection.inumbo.net>)
 id 1t1TuA-0005np-7c
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:03:18 +0000
Received: from mail187-33.suw11.mandrillapp.com
 (mail187-33.suw11.mandrillapp.com [198.2.187.33])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b3d5db19-8ca9-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:03:17 +0200 (CEST)
Received: from pmta09.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail187-33.suw11.mandrillapp.com (Mailchimp) with ESMTP id
 4XTvKw1GBGzBsThdd
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 17:03:16 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 ca06631e087c4c96a937f8f6e5a5c153; Thu, 17 Oct 2024 17:03: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: b3d5db19-8ca9-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729184596; x=1729445096;
	bh=Dp1aMJniWX6oCPINvn4tAgg/ci6dO3dy+/T+6RmcpKU=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Ok50UhxUXMgp3zdC/X+UnvFuVxwwv5uqKueQJnkqy0wsS0QiB9IhTNM8eoUlQKk3t
	 I5Whu8upIF7YB/AFVi3W1BktI1BevbgadXcGaOAS4zjb/JxA9gkqSrpmeiFOuSRG9X
	 0MPG9aBZBVpQeQVvgoALrUd2YWsGUWqc48OKqzWgy6YglaMhiLzOk0JKOXVxEm4UFW
	 oIo57Wm10eQOhTaGctfO22pSmWwWQ4eCHhyUyYGKafVU4d+FctMU8kpd6sm0YewYRA
	 We0jRILRS6kT7/rAnV1U80/sU2rHfobkmdVR/3NPYekfoaACH0uAX1PA5elHCCnB29
	 g5KzHS8YkSldA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729184596; x=1729445096; i=anthony.perard@vates.tech;
	bh=Dp1aMJniWX6oCPINvn4tAgg/ci6dO3dy+/T+6RmcpKU=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=WGj/GFZ9Dll2lcZgqCUH8WOJr/hJbTAzIvN0mzcZqWnEp+BZphn9FB+33kCN8nMZe
	 CTyroeidy9New/El63Ngv7Lgl51YhCy15DsS3upreEAmO8m91qTmNCTxPod8tXKiue
	 EVGVW3KzMHTc+SIWg/88e2fM4guhB6bBDeyLVKJwPMjVZWIw6NvUiOuhz21OwxH7kB
	 exfeDZ2uLTYxSOGWWS5GW6C12Tug6EQtne+lov/qrlhJRlLp/V+7pGy3mvf9qslN9B
	 gLV3amGtxaQ8TDWemEHhg9cLxklu1RAklzR26r+a8ttFRpXKGlDfpApHvjyFXmv/qd
	 8aLVrqdCcCj+A==
From: Anthony PERARD <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[XEN=20PATCH=20v1=203/3]=20CI:=20Refresh=20and=20upgrade=20the=20Fedora=20container?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729184594407
To: Javi Merino <javi.merino@cloud.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, Doug Goldstein <cardoe@cardoe.com>, Juergen Gross <jgross@suse.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Jan Beulich <JBeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Oleksii Kurochko <oleksii.kurochko@gmail.com>
Message-Id: <ZxFDUf2zYE1Qzr6v@l14>
References: <cover.1729170005.git.javi.merino@cloud.com> <178560672106e37648304f5e597cc0b16c8db6db.1729170005.git.javi.merino@cloud.com>
In-Reply-To: <178560672106e37648304f5e597cc0b16c8db6db.1729170005.git.javi.merino@cloud.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.ca06631e087c4c96a937f8f6e5a5c153?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241017:md
Date: Thu, 17 Oct 2024 17:03:16 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Thu, Oct 17, 2024 at 05:20:21PM +0100, Javi Merino wrote:
> From: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Fedora 29 is long out of date.  Move forward 5 years to Fedora 40.
> 
> Include all the usual improvements.  Rework the container to be non-root, use
> heredocs for legibility, and switch to the new naming scheme.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Javi Merino <javi.merino@cloud.com>

Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:03:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:03:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820829.1234449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TuZ-0006hy-Hb; Thu, 17 Oct 2024 17:03:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820829.1234449; Thu, 17 Oct 2024 17: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 1t1TuZ-0006hr-Et; Thu, 17 Oct 2024 17:03:43 +0000
Received: by outflank-mailman (input) for mailman id 820829;
 Thu, 17 Oct 2024 17:03: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TuY-0006TN-Fc
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:03:42 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c0fc6846-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:03:40 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184614125835.3060789132351;
 Thu, 17 Oct 2024 10:03:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0fc6846-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184615; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=DGkn+RA174ivaZm8OFzjwfNqaHM6Erhb8iiEzTGLpvsF/zfzhDFh1oW04/WyzxPWqft5EFpkP/Kn3rVnlrcs37cw0pIXx3sQoTLAsijUB78O48mP3kFzrIfAZS4Hb2lzIVi9ogwcV30sjHdDxAJQ/jtq5ShNwr/EpWhDN0VolG8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184615; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=l24/Fd8ZwkhmJFMB3yq6pYdelZbGLqPP0MgmaU0Hw7k=; 
	b=lZFlL3sAkFWQyCXFRnIzqlQ9MIo9s7hVPXiPN5UQcvquqEfj2zQTvV+S2xMyTFC6bKyXvs9q5Ux35juWvjPDX+XyYJRR1T3v/OfjjwZ/U8RbE40UD/NBehZqy3XJXnqrUUq6burlefLRYdYcvgAW3BXKszrabPIJcXA2ZEOcayQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184615;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=l24/Fd8ZwkhmJFMB3yq6pYdelZbGLqPP0MgmaU0Hw7k=;
	b=VHBKUb9Zd6H7giQqHPzcNn086KX8qyvtjY8VkzOqFasZ9O+SS7c1yHX0wgjdqPRS
	lmFsIoGsFlV1RrhoGoIUUItrCbEOiYULpN7K36gN7DC9gEQrzZk++YEQB9rrvpm22eT
	yWqKqgo+5BNSxry2vxetpKPCRp+Yi8KfWQaFc0Eg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com
Subject: [PATCH v6 00/44] Boot modules for Hyperlaunch
Date: Thu, 17 Oct 2024 13:02:40 -0400
Message-Id: <20241017170325.3842-1-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The Boot Modules for Hyperlaunch series is an effort to split out preliminary
changes necessary for the introduction of the Hyperlaunch domain builder
logic. These preliminary changes revolve around introducing the struct
boot_module and struct boot_domain structures. This includes converting the
dom0 construction path to use these structures. These abstractions lay the
groundwork to transform and extend the dom0 construction logic into a limited,
but general domain builder.

The splitting of Hyperlaunch into a set of series are twofold, to reduce the
effort in reviewing a much larger series, and to reduce the effort in handling
the knock-on effects to the construction logic from requested review changes.

Much thanks to AMD for supporting this work.

Documentation on Hyperlaunch:
https://wiki.xenproject.org/wiki/Hyperlaunch

Original Hyperlaunch v1 patch series:
https://lists.xenproject.org/archives/html/xen-devel/2022-07/msg00345.html

V/r,
Daniel P. Smith

Changes since v5:
- switched to per patch change logs
- incorporated review requests

Changes since v4:
- added requested inline code comments
- moved instance of struct boot_info to unit level and extern'ed
- array of struct boot_module moved into struct boot_info
- renamed function to multiboot_fill_bootinfo, now returns *struct boot_info
- multiboot_fill_bootinfo changed to take multiboot_info_t addr as param
- added missing guard that checked there were multiboot1/2 modules passed
- renmaed struct elements per the review
- fixed errant commit messages per the review
- corrected coding style per review
- attempted to repalce all open codings of page/addr translations touched 
- unified use of `bi` as var name for pointer ref to struct boot_info
- when appropriate, ensure variables where typed, eg size_t, paddr_t, etc.
- dropped all uses of "a = b = c"

Changes since v3:
- reduced scope to x86 only
- broke changes into a smaller chunks with a linear progression
- concerns about deconflicting with Arm deferred
- conversion from mb1 to boot modules no longer attempted at entry points
- the temporary conversion function is now the permenant means to convert
- incorporated suggestion from Andy Cooper for handling bootstrap_map

Changes since v2:
- combined v2 patches 7 and 8 for common review
- rebased the v2 series onto the current tip of staging (sorry)
- fixed the placement of the patch changelogs
- provided the changes description in the cover letter

Changes since v1:
- the v2 and v3 series implement functionality from v1 patches 2-4
    - v2 series objective is to enable efficient patch review in support
      of merging the functionality into the hypervisor. It implements a
      subset of the v1 series, incorporating changes from community
      feedback.
- the bootstrap map is made accessible early in the v2 series via both
  multiboot and boot module arguments until later in the series where
  multiboot use is retired. This allows for incremental conversion across
  several patches from multiboot to boot modules.
- the 32-bit x86 boot environment header is removed, and changes are
  made to allow the new common bootinfo headers to be used instead.
- Arm and RISC-V architecture bootinfo headers are added to ensure that
  builds on those architectures can complete correctly.
- The KConfig patch to set the maximum number of boot modules allowed
  is not included in this series, replaced with a static maximum define.

Andrew Cooper (1):
  x86/boot: split bootstrap_map_addr() out of bootstrap_map()

Christopher Clark (1):
  x86/boot: move x86 boot module counting into a new boot_info struct

Daniel P. Smith (42):
  x86/boot: move boot loader name to boot info
  x86/boot: move cmdline to boot info
  x86/boot: move mmap info to boot info
  x86/boot: introduce struct boot_module
  x86/boot: convert consider_modules to struct boot_module
  x86/boot: move headroom to boot modules
  x86/boot: convert mod refs to boot_module mod
  x86/boot: introduce boot module types
  x86/boot: introduce boot module flags
  x86/boot: add start and size fields to struct boot_module
  x86/boot: update struct boot_module on module relocation
  x86/boot: transition relocation calculations to struct boot_module
  x86/boot: introduce boot module interator
  x86/boot: introduce consumed flag for struct boot_module
  x86/boot: convert microcode loading to consume struct boot_info
  x86/boot: convert late microcode loading to struct boot_module
  x86/boot: use consumed boot module flag for microcode
  x86/boot: convert xsm policy loading to struct boot_module
  x86/boot: convert ramdisk locating to struct boot_module
  x86/boot: remove module_map usage from microcode loading
  x86/boot: remove module_map usage from xsm policy loading
  x86/boot: remove module_map usage by ramdisk loading
  x86/boot: convert create_dom0 to use boot info
  x86/boot: convert construct_dom0 to use struct boot_module
  x86/boot: relocate kextra into boot info
  x86/boot: add cmdline to struct boot_module
  x86/boot: convert dom0_construct_pv image param to struct boot_module
  x86/boot: convert dom0_construct_pv initrd param to struct boot_module
  x86/boot: convert dom0_construct_pvh to struct boot_module
  x86/boot: convert pvh_load_kernel to struct boot_module
  x86/boot: convert initial_images to struct boot_module
  x86/boot: drop the use of initial_images unit global
  x86/boot: remove usage of mod_end by discard_initial_images
  x86/boot: remove remaining module_t references
  x86/boot: remove mod from struct boot_module
  x86/boot: introduce boot domain
  x86/boot: introduce domid field to struct boot_domain
  x86/boot: add cmdline to struct boot_domain
  x86/boot: add struct domain to struct boot_domain
  x86/boot: convert construct_dom0 to struct boot_domain
  x86/boot: convert dom0_construct_pv to struct boot_domain
  x86/boot: convert dom0_construct_pvh to struct boot_domain

 xen/arch/x86/cpu/microcode/core.c     |  78 +++----
 xen/arch/x86/dom0_build.c             |  10 +-
 xen/arch/x86/efi/efi-boot.h           |   4 +-
 xen/arch/x86/hvm/dom0_build.c         |  32 ++-
 xen/arch/x86/include/asm/bootdomain.h |  37 ++++
 xen/arch/x86/include/asm/bootinfo.h   | 110 +++++++++
 xen/arch/x86/include/asm/dom0_build.h |  11 +-
 xen/arch/x86/include/asm/microcode.h  |  12 +-
 xen/arch/x86/include/asm/setup.h      |  11 +-
 xen/arch/x86/pv/dom0_build.c          |  54 +++--
 xen/arch/x86/setup.c                  | 308 ++++++++++++++++----------
 xen/include/xsm/xsm.h                 |  14 +-
 xen/xsm/xsm_core.c                    |  19 +-
 xen/xsm/xsm_policy.c                  |  22 +-
 14 files changed, 459 insertions(+), 263 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootdomain.h
 create mode 100644 xen/arch/x86/include/asm/bootinfo.h

-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:03:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:03:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820830.1234459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Tuf-000700-Ts; Thu, 17 Oct 2024 17:03:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820830.1234459; Thu, 17 Oct 2024 17:03: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 1t1Tuf-0006zr-QP; Thu, 17 Oct 2024 17:03:49 +0000
Received: by outflank-mailman (input) for mailman id 820830;
 Thu, 17 Oct 2024 17:03: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tue-0006TN-KO
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:03:48 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c4ed82b6-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:03:46 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172918461568161.967850809187325;
 Thu, 17 Oct 2024 10:03:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c4ed82b6-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184617; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=V7DmMI0IyY1SvQ+dFhr99YoBFyumoEMS2iLrzrNhtS3FHIr0cEuASvy2ks3PKgeWt3NXJom3SFZl0bqUhN98Bj+kinurVkzaS5vw5JrsQF1TydMtBoGsABfPFxGNyNn/zFnszV+lW+h6AiWL2JfPELUzCo7/MU8E3NtIkL7+dOU=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184617; h=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=/GTvBBrsBVsR7hgeazYsrIdIraxYMSG35yaHz9LsVpk=; 
	b=LyzdqAvv1fvhdMI7fB2kuoJZwF59XEDEI6wtjnhlH7TNhiSQqv0jUmfDQlZJiYN+MNsNg6svWGtQkJsSzBpNgbceClQTJl6Oz04PmJLjrmq6YdV1Hq5fHOeb1uwznZ0wS+83EGXnM+MKs1lxQ/cze4QjeIoOHNzEmHL+PtQb0eY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184617;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=/GTvBBrsBVsR7hgeazYsrIdIraxYMSG35yaHz9LsVpk=;
	b=a5WpW5m87PCRe8fcXRRPRUAcmDl4s0/AfLgGUIgwdMgY8X5sBxuPWqp1ZSmYVNLr
	7z5BxbPhGX7cJ0bvMdEn8d0cix3bAHFutEAepwmxWBy5i1IZZOpDseAroEGK1O1TMtT
	iKQ/QbSl0mZFdj7W0iAi7lRR+jUCmWtD657JeSqE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: Christopher Clark <christopher.w.clark@gmail.com>,
	jason.andryuk@amd.com,
	stefano.stabellini@amd.com,
	"Daniel P . Smith" <dpsmith@apertussolutions.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 v6 01/44] x86/boot: move x86 boot module counting into a new boot_info struct
Date: Thu, 17 Oct 2024 13:02:41 -0400
Message-Id: <20241017170325.3842-2-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

From: Christopher Clark <christopher.w.clark@gmail.com>

An initial step towards a non-multiboot internal representation of boot
modules for common code, starting with x86 setup and converting the fields
that are accessed for the startup calculations.

Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
structure initially containing a count of the number of boot modules.

No functional change intended.

Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- moved __init from being in middle of type declaration
---
 xen/arch/x86/include/asm/bootinfo.h | 29 +++++++++++++
 xen/arch/x86/include/asm/setup.h    |  2 +
 xen/arch/x86/setup.c                | 64 ++++++++++++++++++-----------
 3 files changed, 71 insertions(+), 24 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootinfo.h

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
new file mode 100644
index 000000000000..a649500ee3a2
--- /dev/null
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
+ * Copyright (c) 2024 Apertus Solutions, LLC
+ * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
+ */
+
+#ifndef __XEN_X86_BOOTINFO_H__
+#define __XEN_X86_BOOTINFO_H__
+
+/*
+ * Xen internal representation of information provided by the
+ * bootloader/environment, or derived from the information.
+ */
+struct boot_info {
+    unsigned int nr_modules;
+};
+
+#endif /* __XEN_X86_BOOTINFO_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/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index d75589178b91..3d189521189d 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -32,6 +32,8 @@ int construct_dom0(
     const char *cmdline);
 void setup_io_bitmap(struct domain *d);
 
+extern struct boot_info xen_boot_info;
+
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
 void *bootstrap_map(const module_t *mod);
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index a6e77c9ed9fc..6201ca0fad19 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -32,6 +32,7 @@
 #include <compat/xen.h>
 #endif
 #include <xen/bitops.h>
+#include <asm/bootinfo.h>
 #include <asm/smp.h>
 #include <asm/processor.h>
 #include <asm/mpspec.h>
@@ -274,16 +275,28 @@ static int __init cf_check parse_acpi_param(const char *s)
 custom_param("acpi", parse_acpi_param);
 
 static const module_t *__initdata initial_images;
-static unsigned int __initdata nr_initial_images;
+
+struct boot_info __initdata xen_boot_info;
+
+static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
+{
+    struct boot_info *bi = &xen_boot_info;
+    const multiboot_info_t *mbi = __va(mbi_p);
+
+    bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
+
+    return bi;
+}
 
 unsigned long __init initial_images_nrpages(nodeid_t node)
 {
+    struct boot_info *bi = &xen_boot_info;
     unsigned long node_start = node_start_pfn(node);
     unsigned long node_end = node_end_pfn(node);
     unsigned long nr;
     unsigned int i;
 
-    for ( nr = i = 0; i < nr_initial_images; ++i )
+    for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
         unsigned long start = initial_images[i].mod_start;
         unsigned long end = start + PFN_UP(initial_images[i].mod_end);
@@ -297,9 +310,10 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
 void __init discard_initial_images(void)
 {
+    struct boot_info *bi = &xen_boot_info;
     unsigned int i;
 
-    for ( i = 0; i < nr_initial_images; ++i )
+    for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
 
@@ -307,7 +321,7 @@ void __init discard_initial_images(void)
                            start + PAGE_ALIGN(initial_images[i].mod_end));
     }
 
-    nr_initial_images = 0;
+    bi->nr_modules = 0;
     initial_images = NULL;
 }
 
@@ -969,6 +983,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     void *bsp_stack;
     struct cpu_info *info = get_cpu_info(), *bsp_info;
     unsigned int initrdidx, num_parked = 0;
+    struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
     unsigned long nr_pages, raw_max_page, modules_headroom, module_map[1];
@@ -1015,6 +1030,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         mod = __va(mbi->mods_addr);
     }
 
+    bi = multiboot_fill_boot_info(mbi_p);
+
     loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
                                            : "unknown";
 
@@ -1122,18 +1139,18 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            bootsym(boot_edd_info_nr));
 
     /* Check that we have at least one Multiboot module. */
-    if ( !(mbi->flags & MBI_MODULES) || (mbi->mods_count == 0) )
+    if ( !bi->nr_modules )
         panic("dom0 kernel not specified. Check bootloader configuration\n");
 
     /* Check that we don't have a silly number of modules. */
-    if ( mbi->mods_count > sizeof(module_map) * 8 )
+    if ( bi->nr_modules > sizeof(module_map) * 8 )
     {
-        mbi->mods_count = sizeof(module_map) * 8;
-        printk("Excessive multiboot modules - using the first %u only\n",
-               mbi->mods_count);
+        bi->nr_modules = sizeof(module_map) * 8;
+        printk("Excessive boot modules - using the first %u only\n",
+               bi->nr_modules);
     }
 
-    bitmap_fill(module_map, mbi->mods_count);
+    bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
 
     if ( pvh_boot )
@@ -1306,9 +1323,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     kexec_reserve_area();
 
     initial_images = mod;
-    nr_initial_images = mbi->mods_count;
 
-    for ( i = 0; !efi_enabled(EFI_LOADER) && i < mbi->mods_count; i++ )
+    for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
         if ( mod[i].mod_start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
@@ -1332,8 +1348,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        mod[mbi->mods_count].mod_start = virt_to_mfn(_stext);
-        mod[mbi->mods_count].mod_end = __2M_rwdata_end - _stext;
+        mod[bi->nr_modules].mod_start = virt_to_mfn(_stext);
+        mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
     }
 
     modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
@@ -1393,7 +1409,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules. */
             end = consider_modules(s, e, reloc_size + mask,
-                                   mod, mbi->mods_count, -1);
+                                   mod, bi->nr_modules, -1);
             end &= ~mask;
         }
         else
@@ -1414,7 +1430,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         }
 
         /* Is the region suitable for relocating the multiboot modules? */
-        for ( j = mbi->mods_count - 1; j >= 0; j-- )
+        for ( j = bi->nr_modules - 1; j >= 0; j-- )
         {
             /*
              * 'headroom' is a guess for the decompressed size and
@@ -1429,7 +1445,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             /* Don't overlap with other modules (or Xen itself). */
             end = consider_modules(s, e, size, mod,
-                                   mbi->mods_count + relocated, j);
+                                   bi->nr_modules + relocated, j);
 
             if ( highmem_start && end > highmem_start )
                 continue;
@@ -1456,7 +1472,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules (or Xen itself). */
             e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), mod,
-                                 mbi->mods_count + relocated, -1);
+                                 bi->nr_modules + relocated, -1);
             if ( s >= e )
                 break;
             if ( e > kexec_crash_area_limit )
@@ -1471,7 +1487,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( modules_headroom && !mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
-    for ( i = 0; i < mbi->mods_count; ++i )
+    for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
 
@@ -1551,7 +1567,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                     ASSERT(j);
                 }
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
-                for ( j = 0; j < mbi->mods_count; ++j )
+                for ( j = 0; j < bi->nr_modules; ++j )
                 {
                     uint64_t end = pfn_to_paddr(mod[j].mod_start) +
                                    mod[j].mod_end;
@@ -1626,7 +1642,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         }
     }
 
-    for ( i = 0; i < mbi->mods_count; ++i )
+    for ( i = 0; i < bi->nr_modules; ++i )
     {
         set_pdx_range(mod[i].mod_start,
                       mod[i].mod_start + PFN_UP(mod[i].mod_end));
@@ -2011,8 +2027,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? XENLOG_INFO : XENLOG_WARNING "Warning: ",
            cpu_has_nx ? "" : "not ");
 
-    initrdidx = find_first_bit(module_map, mbi->mods_count);
-    if ( bitmap_weight(module_map, mbi->mods_count) > 1 )
+    initrdidx = find_first_bit(module_map, bi->nr_modules);
+    if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
                initrdidx);
@@ -2022,7 +2038,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
     dom0 = create_dom0(mod, modules_headroom,
-                       initrdidx < mbi->mods_count ? mod + initrdidx : NULL,
+                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
                        kextra, loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:03:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:03:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820832.1234469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Tup-0007Om-5j; Thu, 17 Oct 2024 17:03:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820832.1234469; Thu, 17 Oct 2024 17:03: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 1t1Tup-0007Of-1f; Thu, 17 Oct 2024 17:03:59 +0000
Received: by outflank-mailman (input) for mailman id 820832;
 Thu, 17 Oct 2024 17:03: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tun-0006TN-0H
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:03:57 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c9f0b45f-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:03:55 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184617025693.5091672796183;
 Thu, 17 Oct 2024 10:03:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c9f0b45f-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184619; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Gmtj6AN39W5taH+ZtDAgTM9cSAB3DsnuX0gmnoywqsFxdXHlLJ5cJsU3GtKhgZ3rc3wK+WFzOblQXuIHhbGRJnCQEIKhvTV49Nareno5T4bncVyOiOS67dDZX66glaBvQ3/pcTgT2FRFRr4XvRH4Smo61hPApzcAG5jE4V9jIs8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184619; h=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=ioXQiGftZuaa2y3+MlFiiL8tR31atQ3yfwKB0el8GZ8=; 
	b=VaJcEyEJjFdnj/N4MA3zPIYriY3qvUdSJQRZxarLxrJx4T1H5Uroq8obavFfiXf5maVkuwqQQ7IsVEogrxsB3zFwfZfMuV1VeTackddCBjmxxcbmOi4tyVzV12kBR+caetQJ5i7YxuBRZm47HenEJ4iio1AZ7Ng2vbIDRZ8k44Q=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184619;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=ioXQiGftZuaa2y3+MlFiiL8tR31atQ3yfwKB0el8GZ8=;
	b=YGE1uQkAKaI6cNbuiw4DONdSlNhrnrPRcDhutefcGVvqF/us9MxGP8PD2Xerv1V4
	/eZCmxBWPa2Hi9Fv8+BqxxHtszqNRxDe9xeFfSBeiQUXa1aOhvKAeqWWd6TfUy753mw
	iKQrqN1W9yqhMz8KKCXKzMZpvTZ2FHTrwjHreD+c=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 02/44] x86/boot: move boot loader name to boot info
Date: Thu, 17 Oct 2024 13:02:42 -0400
Message-Id: <20241017170325.3842-3-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Transition the incoming boot loader name to be held in struct boot_info.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- reorder struct boot_module fields
- code style changes
---
 xen/arch/x86/include/asm/bootinfo.h |  2 ++
 xen/arch/x86/setup.c                | 16 ++++++++--------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index a649500ee3a2..bec35e7c2f23 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -13,6 +13,8 @@
  * bootloader/environment, or derived from the information.
  */
 struct boot_info {
+    const char *loader;
+
     unsigned int nr_modules;
 };
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 6201ca0fad19..eac0954f42b8 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -285,6 +285,9 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
 
     bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
 
+    bi->loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
+                                               : "unknown";
+
     return bi;
 }
 
@@ -978,7 +981,7 @@ static struct domain *__init create_dom0(const module_t *image,
 
 void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 {
-    const char *memmap_type = NULL, *loader, *cmdline = "";
+    const char *memmap_type = NULL, *cmdline = "";
     char *kextra;
     void *bsp_stack;
     struct cpu_info *info = get_cpu_info(), *bsp_info;
@@ -1032,12 +1035,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     bi = multiboot_fill_boot_info(mbi_p);
 
-    loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
-                                           : "unknown";
-
     /* Parse the command-line options. */
     if ( mbi->flags & MBI_CMDLINE )
-        cmdline = cmdline_cook(__va(mbi->cmdline), loader);
+        cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
 
     if ( (kextra = strstr(cmdline, " -- ")) != NULL )
     {
@@ -1078,7 +1078,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     if ( pvh_boot )
         pvh_print_info();
 
-    printk("Bootloader: %s\n", loader);
+    printk("Bootloader: %s\n", bi->loader);
 
     printk("Command line: %s\n", cmdline);
 
@@ -1171,7 +1171,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         l3_bootmap[l3_table_offset(BOOTSTRAP_MAP_BASE)] =
             l3e_from_paddr(__pa(l2_bootmap), __PAGE_HYPERVISOR);
 
-        memmap_type = loader;
+        memmap_type = bi->loader;
     }
     else if ( efi_enabled(EFI_BOOT) )
         memmap_type = "EFI";
@@ -2039,7 +2039,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      */
     dom0 = create_dom0(mod, modules_headroom,
                        initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
-                       kextra, loader);
+                       kextra, bi->loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:05:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:05:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820846.1234479 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TwG-0008Tb-GP; Thu, 17 Oct 2024 17:05:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820846.1234479; Thu, 17 Oct 2024 17:05: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 1t1TwG-0008TU-Dg; Thu, 17 Oct 2024 17:05:28 +0000
Received: by outflank-mailman (input) for mailman id 820846;
 Thu, 17 Oct 2024 17:05: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TwF-0008TH-HT
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:05:27 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ffe5de37-8ca9-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:05:25 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184629973825.0331942335803;
 Thu, 17 Oct 2024 10:03:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ffe5de37-8ca9-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184632; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=lCkBpR3oksT79NRryhLIHUU6Pgz5aNGTPZNaqKRRRGlpH6oI4Yl5/uEaaTROBETeHCePCJHySyAEoucZCHmNmaX/QpYVp91xrrxEgApuPIuvaSee2kfonPFxto4N66hoj3jG4YFYNFkOyVF9zOWItXs/mz9ZMC8Avlu+vO1mSOI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184632; h=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=zL/cFqK5qkXy9lJ8lYgSqek6O1BwEfk0id77UI0IvV0=; 
	b=W3XtYF+xk2SmhMqBSGTUGpX35JwqsvxKdeUfTLWBd4o55YQNtPrzt16yyNRHIKsbks+OFojA7vVmaVnOwzHXp9un/mj+k66tNkUn7nKKJrKkMK+2ZBOMD8cJiV2rpwer/mSWvR7FX5aEM4kzWJDOTXroyjQH2cDxh4oeKTmaeOY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184632;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=zL/cFqK5qkXy9lJ8lYgSqek6O1BwEfk0id77UI0IvV0=;
	b=qIvG04TZ4Khikl1EDCNAoiu7IwFFeh6YdcxcvUQxFBRgyBezX++uUNEXhkWXKWbr
	JA71ZQDdn1qsozaR2ozKwT5CmIUxg93VSlp2ILghflZtx4WgpWjsl2kHAdPz/JFU5nx
	PWH9JkIVtAeU6mAMwWWZczdeTsam6WmJ0l27vHYQ=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 12/44] x86/boot: update struct boot_module on module relocation
Date: Thu, 17 Oct 2024 13:02:52 -0400
Message-Id: <20241017170325.3842-13-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

When a boot module is relocated, ensure struct boot_module start and size
fields are updated along with early_mod.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- corrected conversion function for a missed switch from mfn to maddr/paddr
---
 xen/arch/x86/setup.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 6ee352fc0cde..d51b0b03bc97 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1380,8 +1380,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
-        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
+        bi->mods[xen].start = virt_to_maddr(_stext);
+        bi->mods[xen].size = __2M_rwdata_end - _stext;
+
+        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
+        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
     }
 
     bi->mods[0].headroom =
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:05:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:05:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820847.1234489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TwO-0000KL-NB; Thu, 17 Oct 2024 17:05:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820847.1234489; Thu, 17 Oct 2024 17: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 1t1TwO-0000KC-KM; Thu, 17 Oct 2024 17:05:36 +0000
Received: by outflank-mailman (input) for mailman id 820847;
 Thu, 17 Oct 2024 17:05: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TwN-0008TH-PG
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:05:35 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 055c323c-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:05:34 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184631161835.9593205812029;
 Thu, 17 Oct 2024 10:03:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 055c323c-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184633; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=G9DjefLvn7Ru+/zbJhgbQf/oWEtG6w9X3bIJZ96hSFmnck49GVckqDLnmuA3682IGUaWsbYegHLO+bfkKQC90YUP+ymIi9P9qqKsgffrTSru886SSD3PbNPYH0LRCIqXT99Mz5lIz4wDwI6XJzRJe7imGhmwrVYtnCVmlzYKs08=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184633; h=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=buUYqo46akp40axyhMLTCjGqzGXlUDMWgwiiv0Mju9Y=; 
	b=nxMv2aHM6AytCLReXGvPa1qf+Ko0xf7uCwjHEE7Gd75DErgmdUhimnLuA8e9ioYg3R3Eh3X7YK7VMfWlDRWJemXU5fkb2YVpkwlPP5xNGbhMF0vGxjiEhT1/vyhGJcGsj+9653j70KD9ZQsjEaqtC3TkKHTniCK+4xm3HTeU2QY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184633;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=buUYqo46akp40axyhMLTCjGqzGXlUDMWgwiiv0Mju9Y=;
	b=Rt4/mpQfEreseFJGJfA1K+wlAgU0prYIMvig84X4FrsQCFL5W336te2DOKwrS1cD
	n+Gg9EzFSzlzi7s5uLYaJlzCIK5E/VlSKw0YGekg2RAO97mkMxcHIorDzJsDq+TB4K/
	6fOrqw0tCTQhTmKYY4VUZcyEzYJ79B/kC6zErDo8=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 13/44] x86/boot: transition relocation calculations to struct boot_module
Date: Thu, 17 Oct 2024 13:02:53 -0400
Message-Id: <20241017170325.3842-14-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Use struct boot_module fields, start and size, when calculating the relocation
address and size. It also ensures that early_mod references are kept in sync.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- removed unnecessary paddr_to_pfn, allowing condition to collapse to one line
- correct a missed conversion from .mod->mod_start to .start
---
 xen/arch/x86/setup.c | 38 +++++++++++++++++---------------------
 1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index d51b0b03bc97..44cec48fc877 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1476,7 +1476,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
              * move mod[0], we incorporate this as extra space at the start.
              */
             struct boot_module *bm = &bi->mods[j];
-            unsigned long size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
+            unsigned long size = PAGE_ALIGN(bm->headroom + bm->size);
 
             if ( bi->mods[j].flags & BOOTMOD_FLAG_X86_RELOCATED )
                 continue;
@@ -1488,15 +1488,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             if ( highmem_start && end > highmem_start )
                 continue;
 
-            if ( s < end &&
-                 (bm->headroom ||
-                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
+            if ( s < end && (bm->headroom || (end - size) > bm->start) )
             {
-                move_memory(end - size + bm->headroom,
-                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
-                            bm->mod->mod_end);
-                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
-                bm->mod->mod_end += bm->headroom;
+                move_memory(end - size + bm->headroom, bm->start, bm->size);
+                bm->start = (end - size);
+                bm->mod->mod_start = paddr_to_pfn(bm->start);
+                bm->size += bm->headroom;
+                bm->mod->mod_end = bm->size;
                 bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
             }
         }
@@ -1528,11 +1526,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
-                        << PAGE_SHIFT;
+        uint64_t s = (uint64_t)bi->mods[i].start;
 
         reserve_e820_ram(&boot_e820, s,
-                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
+                         s + PAGE_ALIGN(bi->mods[i].size));
     }
 
     if ( !xen_phys_start )
@@ -1610,9 +1607,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
                 for ( j = 0; j < bi->nr_modules; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(
-                                   bi->mods[j].mod->mod_start) +
-                                   bi->mods[j].mod->mod_end;
+                    uint64_t end = bi->mods[j].start +
+                                   bi->mods[j].size;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1686,12 +1682,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        set_pdx_range(bi->mods[i].mod->mod_start,
-                      bi->mods[i].mod->mod_start +
-                      PFN_UP(bi->mods[i].mod->mod_end));
-        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
-            _mfn(bi->mods[i].mod->mod_start),
-            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
+        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
+                      paddr_to_pfn(bi->mods[i].start) +
+                      PFN_UP(bi->mods[i].size));
+        map_pages_to_xen((unsigned long)maddr_to_virt(bi->mods[i].start),
+            maddr_to_mfn(bi->mods[i].start),
+            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);
     }
 
 #ifdef CONFIG_KEXEC
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:05:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:05:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820849.1234499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TwW-0000ge-3e; Thu, 17 Oct 2024 17:05:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820849.1234499; Thu, 17 Oct 2024 17:05: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 1t1TwW-0000gX-0G; Thu, 17 Oct 2024 17:05:44 +0000
Received: by outflank-mailman (input) for mailman id 820849;
 Thu, 17 Oct 2024 17:05: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TwV-0008TH-2v
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:05:43 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 09cb3731-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:05:42 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184632344879.4637074312935;
 Thu, 17 Oct 2024 10:03:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 09cb3731-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184634; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=hs0ya0EXGgdii09hB6B50gKi/B5NEM9YlQSpSJmaU5jX0HcI/s+qVQCuK1jh+/5Lp87oKIKItjCU0QEy8bIbX4oLRIHfFqdmSz6/StD7Gda1cLq+llyTEETZ++FfnUErq6a321XvNYhz9Uxx3Vj/BZ9dUakoMTMOMTdXJqZqJ60=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184634; h=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=3lVlOCpdm5TzR4Ue4fgJ/C+2B6QVGR3l2Wwg3ehYe0k=; 
	b=ZaQoxosUFrBxAC0LF+Oa4INnWTJ90CLG4siiB8Lcw3C9HbKuGQNRs0SOHOyrP9FsgGoXSZNhYNpzpsYiS1QIrO/voamWl53ifnqhd0HIcBnnJzn/S17vP6TEi5/0mJRARLljMA0AjxK3jgW/52Cx+92ImyN2+K91UOi+3lgrq/0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184634;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=3lVlOCpdm5TzR4Ue4fgJ/C+2B6QVGR3l2Wwg3ehYe0k=;
	b=qQ+jZvZju1WjCYDEgDCHPNCvO7bJ+4EtMAfCSVkHkBCgh5t7VcN+eOL6WhxYHyS3
	GDKzV1gffCJoqcHp3ym7MxO+O6AXOGx4rhHgvSovRUXajCMwTCumeXn4z7w0CUZXcgv
	0GvL5harq6b90/DfPMPsss9mffo4i4SrhJfonhV0=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 14/44] x86/boot: introduce boot module interator
Date: Thu, 17 Oct 2024 13:02:54 -0400
Message-Id: <20241017170325.3842-15-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Provide an iterator to go through boot module array searching based on type.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- documented help next_boot_module_index
- switch to unsigned int for next_boot_module_index
- changes identified that BOOTMOD_XEN was not supported, so added support
---
 xen/arch/x86/include/asm/bootinfo.h | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 5862054b8cef..3010e6f4af9c 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -62,8 +62,35 @@ struct boot_info {
     struct boot_module mods[MAX_NR_BOOTMODS + 1];
 };
 
-#endif /* __XEN_X86_BOOTINFO_H__ */
+/*
+ * next_boot_module_index:
+ *     Finds the next boot module of type t, starting at array index start.
+ *
+ * Returns:
+ *      Success - index in boot_module array
+ *      Failure - a value greater than MAX_NR_BOOTMODS
+ */
+static inline unsigned int __init next_boot_module_index(
+    const struct boot_info *bi, enum bootmod_type t, unsigned int start)
+{
+    unsigned int i;
+
+    if ( t == BOOTMOD_XEN )
+        return MAX_NR_BOOTMODS;
 
+    for ( i = start; i < bi->nr_modules; i++ )
+    {
+        if ( bi->mods[i].type == t )
+            return i;
+    }
+
+    return MAX_NR_BOOTMODS + 1;
+}
+
+#define first_boot_module_index(bi, t)              \
+    next_boot_module_index(bi, t, 0)
+
+#endif /* __XEN_X86_BOOTINFO_H__ */
 /*
  * Local variables:
  * mode: C
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:05:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:05:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820852.1234509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Twe-00019z-Bw; Thu, 17 Oct 2024 17:05:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820852.1234509; Thu, 17 Oct 2024 17:05: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 1t1Twe-00019s-8S; Thu, 17 Oct 2024 17:05:52 +0000
Received: by outflank-mailman (input) for mailman id 820852;
 Thu, 17 Oct 2024 17:05: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Twc-0008TH-BQ
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:05:50 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0dfb6901-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:05:49 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184633549591.1849705803486;
 Thu, 17 Oct 2024 10:03:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0dfb6901-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184635; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=bRqieGlVFZ/N04xtoYCV2/nB4oT+9dzFbm7jPyI55EBmij42qn6zfrhUYqdYSKj5G+Kph8LV2DNPhq974/BktseYSjAMIjna9UAq+639P74dxcBYtBpvZpiA6Np7iAUnscBnHkKBg/P8pVBeOqH+VMXRE8pqA/6EgPARw4H1e4E=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184635; h=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=UOSq2CQ+avjz4TDy8H9wvkgSNIMCssGHhL5g606izH0=; 
	b=hNwIchschivOXSjMOrWOSXEpKNE9jrHA0ljfizKfslueb5CoLKnhYQ1xRuMFKosmI1SrGnI59m8QmvPnNBKKoCG5C6tcp7MAfT4peG7Dra2kLX6ptRSmqZfq54xZZ4JwuV87g1/jfuhobFivE+yn8w/UrSMaT+e3JcX3HH+04bs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184635;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=UOSq2CQ+avjz4TDy8H9wvkgSNIMCssGHhL5g606izH0=;
	b=tbfOUxOwC2qw65HyPaOR/AOqCwFrs30Hb+N6c49ws9ZGmdtizFGP1T/ykjx8UE0F
	MeVyqtcSe8rWG7wsdF31zxBnjVGhhIqwTJ/MRARWIO5raN5kouLAdhDtLVlxXqdfe7C
	hcxcnmRKE5xYkivyMh14JsrS56RUMMvODZoLfmFk=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 15/44] x86/boot: introduce consumed flag for struct boot_module
Date: Thu, 17 Oct 2024 13:02:55 -0400
Message-Id: <20241017170325.3842-16-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Allow the tracking of when a boot module has been consumed by a handler in the
hypervisor independent of when it is claimed. The instances where the
hypervisor does nothing beyond claiming, the dom0 kernel, dom0 ramdisk, and a
placeholder for itself, are updated as being consumed at the time of being
claimed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- first flag assignment can be = instead of |=
---
 xen/arch/x86/include/asm/bootinfo.h | 1 +
 xen/arch/x86/setup.c                | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 3010e6f4af9c..6903ab00ec90 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -42,6 +42,7 @@ struct boot_module {
 
     uint32_t flags;
 #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
+#define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
 
     paddr_t start;
     size_t size;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 44cec48fc877..8261a87d9fb4 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -318,6 +318,7 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
 
     /* map the last mb module for xen entry */
     bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
+    bi->mods[bi->nr_modules].flags = BOOTMOD_FLAG_X86_CONSUMED;
 
     return bi;
 }
@@ -1180,6 +1181,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
+    bi->mods[0].flags = BOOTMOD_FLAG_X86_CONSUMED;
 
     if ( pvh_boot )
     {
@@ -2068,7 +2070,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     initrdidx = find_first_bit(module_map, bi->nr_modules);
     if ( initrdidx < bi->nr_modules )
+    {
         bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
+        bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+    }
     if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:06:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:06:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820862.1234519 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Twm-0001gj-Ih; Thu, 17 Oct 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 820862.1234519; Thu, 17 Oct 2024 17: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 1t1Twm-0001ga-Fc; Thu, 17 Oct 2024 17:06:00 +0000
Received: by outflank-mailman (input) for mailman id 820862;
 Thu, 17 Oct 2024 17:05: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Twl-00014B-B8
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:05:59 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 12ce7763-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:05:57 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184634817591.1928959407942;
 Thu, 17 Oct 2024 10:03:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 12ce7763-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184637; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=M4y3G8O6JKAiI5vqQXyZGSBHMpOQi9SRILP7EUkG1d3qbOcyyr9bqBStZmMSgHXr+Sl1WcFMnPm77pucsYelTNZijkaCMS22LXuvuUyJkxIqDHKfh6wi01dOQxsU+9s+TKJ6QmjQdEFtgN6Qd3mDFae47FYP0M5FwjOGjEW6j38=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184637; h=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=HqxZ6XJiXLCqmaSWp0mzQral5RGgZ8p3yBsfBpkK9gk=; 
	b=cFj3x4xlFQcRAzC8mUlTRHqwKRuPW4aHFMd2J93PkCwYdzr+h+hC9KUb+l+m/QKV95M9/kuf9XywA5gL/M1YTMatPJsNugJLHFg4tq/i+KMDpA2sUnTgue/+jxCCLooFscao35yCbfPjXSQ5CIYcxANcSfRoEno27Fc6sX0l530=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184637;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=HqxZ6XJiXLCqmaSWp0mzQral5RGgZ8p3yBsfBpkK9gk=;
	b=kUz/DnUCHxdAWmKwQhTk8VJzXlt+TZeZsF59yAWSNZrgdDOcr/uqbP5629PRiXo7
	8rRPhKm1ck39Dy9T1R9FHqh4aO1hC9ZVcn651oBaxCA0gH7gg3gRic89kMWTWvtWwyy
	ZEfrwcjmHlTUPawNquEWUUkB/4IZdaQ8Rf78Q9gk=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v6 16/44] x86/boot: split bootstrap_map_addr() out of bootstrap_map()
Date: Thu, 17 Oct 2024 13:02:56 -0400
Message-Id: <20241017170325.3842-17-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

From: Andrew Cooper <andrew.cooper3@citrix.com>

Using an interface based on addresses directly, not modules.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- moved bootstrap_map_addr() to being static to setup.c
---
 xen/arch/x86/setup.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 8261a87d9fb4..852454c161ee 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -442,24 +442,22 @@ static void __init normalise_cpu_order(void)
  * Ensure a given physical memory range is present in the bootstrap mappings.
  * Use superpage mappings to ensure that pagetable memory needn't be allocated.
  */
-void *__init bootstrap_map(const module_t *mod)
+static void *__init bootstrap_map_addr(paddr_t start, paddr_t end)
 {
     static unsigned long __initdata map_cur = BOOTSTRAP_MAP_BASE;
-    uint64_t start, end, mask = (1L << L2_PAGETABLE_SHIFT) - 1;
+    uint64_t mask = (1L << L2_PAGETABLE_SHIFT) - 1;
     void *ret;
 
     if ( system_state != SYS_STATE_early_boot )
-        return mod ? mfn_to_virt(mod->mod_start) : NULL;
+        return end ? maddr_to_virt(start) : NULL;
 
-    if ( !mod )
+    if ( !end )
     {
         destroy_xen_mappings(BOOTSTRAP_MAP_BASE, BOOTSTRAP_MAP_LIMIT);
         map_cur = BOOTSTRAP_MAP_BASE;
         return NULL;
     }
 
-    start = (uint64_t)mod->mod_start << PAGE_SHIFT;
-    end = start + mod->mod_end;
     if ( start >= end )
         return NULL;
 
@@ -475,6 +473,15 @@ void *__init bootstrap_map(const module_t *mod)
     return ret;
 }
 
+void *__init bootstrap_map(const module_t *mod)
+{
+    if ( !mod )
+        return bootstrap_map_addr(0, 0);
+
+    return bootstrap_map_addr(pfn_to_paddr(mod->mod_start),
+                              pfn_to_paddr(mod->mod_start) + mod->mod_end);
+}
+
 static void __init move_memory(
     uint64_t dst, uint64_t src, unsigned int size)
 {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:06:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:06:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820865.1234528 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Twu-0002Af-QN; Thu, 17 Oct 2024 17:06:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820865.1234528; Thu, 17 Oct 2024 17:06: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 1t1Twu-0002AY-Na; Thu, 17 Oct 2024 17:06:08 +0000
Received: by outflank-mailman (input) for mailman id 820865;
 Thu, 17 Oct 2024 17:06: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Twt-00014B-Ui
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:06:07 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1804ce12-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:06:06 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184636285638.5734527381169;
 Thu, 17 Oct 2024 10:03:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1804ce12-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184638; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Q7r4nHSVDq5gQXeVmJvZns0msN1qkLbRSMFtRD5dm70aFF+PWpFc9HhCBHNHiwhcrnnrVJU5z0T11OUvA7SbRwyS8bBP96XEq725q8PBS3K1ydYyKq0p02JMgxLo06WS1dk0yvRgFdGlM530DJaZDSaGgEVjkzm5KLo0kvlQ9b8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184638; h=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=mEfInqFkYxY5RZVtNiKPHgUhdYnWLo2IuwYz96mD0y4=; 
	b=OH1WOhblMEbskTZ5gd+jMxSUbyekb8sDrrjgoZQnFHiPmoNYPa67XBnVOC0AxJdVSv2JR+uWr4KY9I00adDOzWa9rWFbqaydd5wRH59kt92xWbxAZrJlmu5lsH9a83Yh8QEzpVS69p89p8CZ5mfCQj/eG3H7IwaE5hgpK9L21MM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184638;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=mEfInqFkYxY5RZVtNiKPHgUhdYnWLo2IuwYz96mD0y4=;
	b=MjxdYnmfmkS1pCZB/lpCPSatWm43UxUnNJX+nozJAGKBP0cslJgLTjHS3LJrSHvW
	2T87ZTKb7c9Aeds2mQX+kEef9L/3CK8NtlJ2zryo/GEWYvycGDYOCViiBu8s/nNw2Ku
	VpIdn5Yy5AmnFbTtbgGhfaqCn9M5vw2p9VH1GurE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 17/44] x86/boot: convert microcode loading to consume struct boot_info
Date: Thu, 17 Oct 2024 13:02:57 -0400
Message-Id: <20241017170325.3842-18-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Convert the microcode loading functions to take struct boot_info, and then
using struct boot_module to map and check for microcode. To keep the changes
focused, continue using the struct mod to hold the reference to the microcode
that is used by the late microcode logic.

To support loading the microcode boot module in to the bootstrap map, introduce
bootstrap_map_bm() for mapping struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- moved bootstrap_map_bm definition to this commit
---
 xen/arch/x86/cpu/microcode/core.c    | 37 +++++++++++++---------------
 xen/arch/x86/include/asm/bootinfo.h  |  1 +
 xen/arch/x86/include/asm/microcode.h | 14 ++++++-----
 xen/arch/x86/include/asm/setup.h     |  2 ++
 xen/arch/x86/setup.c                 | 12 +++++++--
 5 files changed, 38 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 8564e4d2c94c..22fea80bc97e 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -35,6 +35,7 @@
 #include <xen/watchdog.h>
 
 #include <asm/apic.h>
+#include <asm/bootinfo.h>
 #include <asm/cpu-policy.h>
 #include <asm/nmi.h>
 #include <asm/processor.h>
@@ -153,10 +154,8 @@ static int __init cf_check parse_ucode(const char *s)
 custom_param("ucode", parse_ucode);
 
 static void __init microcode_scan_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+    unsigned long *module_map, const struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     uint64_t *_blob_start;
     unsigned long _blob_size;
     struct cpio_data cd;
@@ -178,16 +177,16 @@ static void __init microcode_scan_module(
     /*
      * Try all modules and see whichever could be the microcode blob.
      */
-    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
+    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
     {
         if ( !test_bit(i, module_map) )
             continue;
 
-        _blob_start = bootstrap_map(&mod[i]);
-        _blob_size = mod[i].mod_end;
+        _blob_start = bootstrap_map_bm(&bi->mods[i]);
+        _blob_size = bi->mods[i].size;
         if ( !_blob_start )
         {
-            printk("Could not map multiboot module #%d (size: %ld)\n",
+            printk("Could not map boot module #%d (size: %ld)\n",
                    i, _blob_size);
             continue;
         }
@@ -205,20 +204,18 @@ static void __init microcode_scan_module(
 }
 
 static void __init microcode_grab_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
-
     if ( ucode_mod_idx < 0 )
-        ucode_mod_idx += mbi->mods_count;
-    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
+        ucode_mod_idx += bi->nr_modules;
+    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
-    ucode_mod = mod[ucode_mod_idx];
+    bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
+    ucode_mod = *bi->mods[ucode_mod_idx].mod;
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(module_map, bi);
 }
 
 static struct microcode_ops __ro_after_init ucode_ops;
@@ -822,8 +819,8 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+int __init microcode_init_cache(
+    unsigned long *module_map, const struct boot_info *bi)
 {
     int rc = 0;
 
@@ -832,7 +829,7 @@ int __init microcode_init_cache(unsigned long *module_map,
 
     if ( ucode_scan )
         /* Need to rescan the modules because they might have been relocated */
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(module_map, bi);
 
     if ( ucode_mod.mod_end )
         rc = early_update_cache(bootstrap_map(&ucode_mod),
@@ -879,7 +876,7 @@ static int __init early_microcode_update_cpu(void)
 }
 
 int __init early_microcode_init(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+                                struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
     int rc = 0;
@@ -922,7 +919,7 @@ int __init early_microcode_init(unsigned long *module_map,
         return -ENODEV;
     }
 
-    microcode_grab_module(module_map, mbi);
+    microcode_grab_module(module_map, bi);
 
     if ( ucode_mod.mod_end || ucode_blob.size )
         rc = early_microcode_update_cpu();
diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 6903ab00ec90..19a0ed16ab27 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -20,6 +20,7 @@ enum bootmod_type {
     BOOTMOD_XEN,
     BOOTMOD_KERNEL,
     BOOTMOD_RAMDISK,
+    BOOTMOD_MICROCODE,
 };
 
 struct boot_module {
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 57c08205d475..495c8f7a7cc5 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -4,6 +4,8 @@
 #include <xen/types.h>
 #include <xen/percpu.h>
 
+#include <asm/bootinfo.h>
+
 #include <public/xen.h>
 
 struct multiboot_info;
@@ -22,12 +24,12 @@ struct cpu_signature {
 DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 
 void microcode_set_module(unsigned int idx);
-int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
-                     unsigned long len, unsigned int flags);
-int early_microcode_init(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
-int microcode_init_cache(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
+int microcode_update(
+    XEN_GUEST_HANDLE(const_void) buf, unsigned long len, unsigned int flags);
+int early_microcode_init(
+    unsigned long *module_map, struct boot_info *bi);
+int microcode_init_cache(
+    unsigned long *module_map, const struct boot_info *bi);
 int microcode_update_one(void);
 
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 3d189521189d..729f68ca23b8 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -2,6 +2,7 @@
 #define __X86_SETUP_H_
 
 #include <xen/multiboot.h>
+#include <asm/bootinfo.h>
 #include <asm/numa.h>
 
 extern const char __2M_text_start[], __2M_text_end[];
@@ -37,6 +38,7 @@ extern struct boot_info xen_boot_info;
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
 void *bootstrap_map(const module_t *mod);
+void *bootstrap_map_bm(const struct boot_module *bm);
 
 int remove_xen_ranges(struct rangeset *r);
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 852454c161ee..04de06ba1400 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -482,6 +482,14 @@ void *__init bootstrap_map(const module_t *mod)
                               pfn_to_paddr(mod->mod_start) + mod->mod_end);
 }
 
+void *__init bootstrap_map_bm(const struct boot_module *bm)
+{
+    if ( !bm )
+        return bootstrap_map_addr(0, 0);
+
+    return bootstrap_map_addr(bm->start, bm->start + bm->size);
+}
+
 static void __init move_memory(
     uint64_t dst, uint64_t src, unsigned int size)
 {
@@ -1377,7 +1385,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * TODO: load ucode earlier once multiboot modules become accessible
      * at an earlier stage.
      */
-    early_microcode_init(module_map, mbi);
+    early_microcode_init(module_map, bi);
 
     if ( xen_phys_start )
     {
@@ -1929,7 +1937,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     timer_init();
 
-    microcode_init_cache(module_map, mbi); /* Needs xmalloc() */
+    microcode_init_cache(module_map, bi); /* Needs xmalloc() */
 
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:06:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:06:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820874.1234539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TxD-0002vE-2u; Thu, 17 Oct 2024 17:06:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820874.1234539; Thu, 17 Oct 2024 17:06: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 1t1TxC-0002v7-W3; Thu, 17 Oct 2024 17:06:26 +0000
Received: by outflank-mailman (input) for mailman id 820874;
 Thu, 17 Oct 2024 17:06: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tw4-0006TN-Dx
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:05:16 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9430893-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:05:14 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184628693714.7111287097858;
 Thu, 17 Oct 2024 10:03:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9430893-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184631; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=PqX/pyk6X/pI9ldvPH5cVFcVKKcRotmmkSVyyRetCm6EY+W+GXe6GedXJqODel6E9ZT8IDERd6OGwVB5khKFsmUCJdcfzHUU5J4vO0PK2f/LHOIZmn7utQmGiXHmN9DlrhxNOXViMoaIhNb8zpEYX2YsIHr5oos83ioy7rL1YD4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184631; h=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=jMznZ4/Qnb47L6uS5Mep6oH/AOXeu1gaoH+gJ/apC6A=; 
	b=Q7XLJYKaSTBdJ9nU9OIJaOLc3CZ3xZDIQHHUK1kfIM0nJeKEwWWJUThvg14rZ8r9j8MkwN5xPdPz+UfBZsPUV7E1xPZ2/kviJ116leNKlWNCwZ9W3kFMAKju+ssNUq3R9QeFZyY2e/p0ouTmmYFf3y+iBejLwMWVNp/9MnIAz1k=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184631;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=jMznZ4/Qnb47L6uS5Mep6oH/AOXeu1gaoH+gJ/apC6A=;
	b=oqszHDl5zgvb+fvQ1+Ix9i1lHgNhHIGLAdOVfg+SmLYzC9AKX6dssJ9UAeXeL2fX
	08zzCNWIm4+p5swcAYigZJ5ZdxN2Bs+KyRKNgcA9aBnfa9LkuxcTRAuKFTk4I1X7OR4
	9MiXrP+4fcXYknOl5YFxo2fKGJGavMpZBraj76Vw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: Jan Beulich <jbeulich@suse.com>,
	xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v6 11/44] x86/boot: add start and size fields to struct boot_module
Date: Thu, 17 Oct 2024 13:02:51 -0400
Message-Id: <20241017170325.3842-12-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit introduces the start and size fields to struct boot_module and
assigns their value during boot_info construction.

The EFI entry point special cased itself, and pre-converted mod_start and
mod_end to mfn and size respectively. This required an additional test
in the coversion loop to not convert mod_start and mod_end when the conversion
was done for both the multiboot and PVH boot entry points. To simplify the
logic populating the start and size fields, the EFI module population logic
was coverted to using start and end addresses.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- switched EFI population of mod_start/mod_end to addresses
---
 xen/arch/x86/efi/efi-boot.h         | 4 ++--
 xen/arch/x86/include/asm/bootinfo.h | 3 +++
 xen/arch/x86/setup.c                | 7 ++++++-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f34433640f..779f101c3de7 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -732,8 +732,8 @@ static void __init efi_arch_handle_module(const struct file *file,
     if ( options )
         place_string(&mb_modules[mbi.mods_count].string, options);
     place_string(&mb_modules[mbi.mods_count].string, local_name.s);
-    mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
-    mb_modules[mbi.mods_count].mod_end = file->size;
+    mb_modules[mbi.mods_count].mod_start = file->addr;
+    mb_modules[mbi.mods_count].mod_end = file->addr + file->size;
     ++mbi.mods_count;
     efi_bs->FreePool(ptr);
 }
diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index e8ba9390a51f..5862054b8cef 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -42,6 +42,9 @@ struct boot_module {
 
     uint32_t flags;
 #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
+
+    paddr_t start;
+    size_t size;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f87faa31a2cf..6ee352fc0cde 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -309,8 +309,13 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
      * reserved for Xen itself
      */
     for ( i = 0; i <= bi->nr_modules; i++ )
+    {
         bi->mods[i].mod = &mods[i];
 
+        bi->mods[i].start = (paddr_t)mods[i].mod_start;
+        bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
+    }
+
     /* map the last mb module for xen entry */
     bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
 
@@ -1351,7 +1356,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      */
     initial_images = bi->mods[0].mod;
 
-    for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
+    for ( i = 0; i < bi->nr_modules; i++ )
     {
         if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:07:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:07:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820879.1234549 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TyF-0004Dy-EW; Thu, 17 Oct 2024 17:07:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820879.1234549; Thu, 17 Oct 2024 17:07: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 1t1TyF-0004Dr-Bb; Thu, 17 Oct 2024 17:07:31 +0000
Received: by outflank-mailman (input) for mailman id 820879;
 Thu, 17 Oct 2024 17:07: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tvn-0006TN-8i
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:04:59 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id eefa78a0-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:04:57 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184626209754.6375868347845;
 Thu, 17 Oct 2024 10:03:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eefa78a0-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184628; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=EhQ00uV5KWcXLb7ZAuzSAi6b9ej2Wl3tJ3B+8kjvf7b6mDzZoeQ8pJaEMRYmYY6CsusInTHpK0D1ZgGhP8ctXlBTjve44IwhZbRqEQl/wxY3ZA7KZFmHpSt35Gv1LKxhvGsKpLU0XDtsjooMe2BgYaWS5cZ32LdogXvHPBHDXMs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184628; h=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=Gn+NgukrSZNmUBqbS3h19LnxMuHuw+P3qAI40MVL2NA=; 
	b=WeBY9Xq/Qo1W/Abt/lIT3RCAH5yPe01/M3J5tk3+bX0ZzZtyrvtUMuJTV6Crw0R6j3o9YZ+8+Z/8FQI23XOQITWat55/aPT2qmZl4q//5ylQYEu65DPRjQpK2BEo+R0orN3A76XbTBHa41vV4JiGMXYD8Qv/Upfnr1rZZ6MOytU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184628;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Gn+NgukrSZNmUBqbS3h19LnxMuHuw+P3qAI40MVL2NA=;
	b=mwJ7JW/xMrsbow9/Z7dd+HrZF1KFwGE7GS2qLwrof2NHO4zBojx07XP5HLcuq7Ay
	WF+W6hJM6aE5JLNTmmgQswClDlGbC6S9NyPNntm/Tabn3km51o/EM/8uFcrxvRQp1Az
	yO78/fPqEKa4UH739OfXByt0xtybdiFXJDNU1yf4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 09/44] x86/boot: introduce boot module types
Date: Thu, 17 Oct 2024 13:02:49 -0400
Message-Id: <20241017170325.3842-10-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit introduces module types of xen, kernel, and ramdisk to allow boot
module detect code to tag the purpose of a boot module. This reduces the need
for hard coded order assumptions and global variables to be used by consumers
of boot modules, such as domain construction.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- added guard around initrd type assignment
- removed a missed rebase artifact
---
 xen/arch/x86/include/asm/bootinfo.h | 9 +++++++++
 xen/arch/x86/setup.c                | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 5fe4f1387d03..18281d80fa97 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -14,6 +14,14 @@
 /* Max number of boot modules a bootloader can provide in addition to Xen */
 #define MAX_NR_BOOTMODS 63
 
+/* Boot module binary type / purpose */
+enum bootmod_type {
+    BOOTMOD_UNKNOWN,
+    BOOTMOD_XEN,
+    BOOTMOD_KERNEL,
+    BOOTMOD_RAMDISK,
+};
+
 struct boot_module {
     /* Transitionary only */
     module_t *mod;
@@ -30,6 +38,7 @@ struct boot_module {
      *     [ decompressed kernel ][ unused rounding ]
      */
     unsigned long headroom;
+    enum bootmod_type type;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 1b56eaf26efe..fed9bef16305 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -311,6 +311,9 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     for ( i = 0; i <= bi->nr_modules; i++ )
         bi->mods[i].mod = &mods[i];
 
+    /* map the last mb module for xen entry */
+    bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
+
     return bi;
 }
 
@@ -1171,6 +1174,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
+    bi->mods[0].type = BOOTMOD_KERNEL;
 
     if ( pvh_boot )
     {
@@ -2059,6 +2063,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? "" : "not ");
 
     initrdidx = find_first_bit(module_map, bi->nr_modules);
+    if ( initrdidx < bi->nr_modules )
+        bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
     if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:07:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:07:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820881.1234558 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TyG-0004Sf-Kk; Thu, 17 Oct 2024 17:07:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820881.1234558; Thu, 17 Oct 2024 17:07: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 1t1TyG-0004SW-Hs; Thu, 17 Oct 2024 17:07:32 +0000
Received: by outflank-mailman (input) for mailman id 820881;
 Thu, 17 Oct 2024 17:07: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tx1-00014B-Fz
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:06:15 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1c96bce4-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:06:13 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184637493451.84421739071854;
 Thu, 17 Oct 2024 10:03:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c96bce4-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184639; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ER0ju3p2fPTCk6jegIRIWVHZCZiFqjUM0aihbhLMWQK0hQ2/Ur+sM9Yv/gJYYEHALYcOCVQDNwI0xZFjFXXHiIlb/rzwQpER173Y4eslYDMawLfmG157QePXP6Ux8bWtt/KXW0VajU5bDbhXZFkvRLlFXgbDSRcP2ld/p8sZhl8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184639; h=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=IYHnqAORfDi1eC8Y7S7zVhUJU72K5GjJXVS7llgVqYI=; 
	b=DctUKoEGuoA8Rdr9m63PNBizaKu5a4n2j/hCYDvddsc3z2F56vCUjzRlsxvgAlp1rLozQMSWC7D9zReEToZpdlbJOeOzJUjVTQA+YWcM3hJGxWGbnyW4bGq9xC4ZFGvHa6ZtNCnFyANbeLEu1+JcCdwE5+AWKIpiDjepXmISV88=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184639;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=IYHnqAORfDi1eC8Y7S7zVhUJU72K5GjJXVS7llgVqYI=;
	b=Gky6augRufFxhCCGQoCHMsQCCvAVH1Ed2IHZ2UOnHu95P5BAUqqfPDkplBb0OqZl
	usAn+3rUYty4DhUMfO2ScdDvbuekt2MBsOe+i1DDUloVskaIJRMo4pY5g+qhbgUJPyh
	4zlbbZviL6xtvzyOXglv3VQPHV8DCPeKo2opNFmk=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 18/44] x86/boot: convert late microcode loading to struct boot_module
Date: Thu, 17 Oct 2024 13:02:58 -0400
Message-Id: <20241017170325.3842-19-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Remove the use of struct mod to hold the reference for the microcode,
converting the code to work with a struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/cpu/microcode/core.c | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 22fea80bc97e..7bcc17e0ab2f 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -28,7 +28,6 @@
 #include <xen/err.h>
 #include <xen/guest_access.h>
 #include <xen/init.h>
-#include <xen/multiboot.h>
 #include <xen/param.h>
 #include <xen/spinlock.h>
 #include <xen/stop_machine.h>
@@ -59,7 +58,7 @@
  */
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
-static module_t __initdata ucode_mod;
+static struct boot_module __initdata ucode_mod;
 static signed int __initdata ucode_mod_idx;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
@@ -98,7 +97,7 @@ struct patch_with_flags {
 
 static struct ucode_mod_blob __initdata ucode_blob;
 /*
- * By default we will NOT parse the multiboot modules to see if there is
+ * By default we will NOT parse the boot modules to see if there is
  * cpio image with the microcode images.
  */
 static bool __initdata ucode_scan;
@@ -199,7 +198,7 @@ static void __init microcode_scan_module(
             ucode_blob.data = cd.data;
             break;
         }
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
     }
 }
 
@@ -212,7 +211,7 @@ static void __init microcode_grab_module(
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
-    ucode_mod = *bi->mods[ucode_mod_idx].mod;
+    ucode_mod = bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
         microcode_scan_module(module_map, bi);
@@ -766,14 +765,14 @@ static int __init cf_check microcode_init(void)
      */
     if ( ucode_blob.size )
     {
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
         ucode_blob.size = 0;
         ucode_blob.data = NULL;
     }
-    else if ( ucode_mod.mod_end )
+    else if ( ucode_mod.size )
     {
-        bootstrap_map(NULL);
-        ucode_mod.mod_end = 0;
+        bootstrap_map_bm(NULL);
+        ucode_mod.size = 0;
     }
 
     return 0;
@@ -831,9 +830,9 @@ int __init microcode_init_cache(
         /* Need to rescan the modules because they might have been relocated */
         microcode_scan_module(module_map, bi);
 
-    if ( ucode_mod.mod_end )
-        rc = early_update_cache(bootstrap_map(&ucode_mod),
-                                ucode_mod.mod_end);
+    if ( ucode_mod.size )
+        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
+                                ucode_mod.size);
     else if ( ucode_blob.size )
         rc = early_update_cache(ucode_blob.data, ucode_blob.size);
 
@@ -852,10 +851,10 @@ static int __init early_microcode_update_cpu(void)
         len = ucode_blob.size;
         data = ucode_blob.data;
     }
-    else if ( ucode_mod.mod_end )
+    else if ( ucode_mod.size )
     {
-        len = ucode_mod.mod_end;
-        data = bootstrap_map(&ucode_mod);
+        len = ucode_mod.size;
+        data = bootstrap_map_bm(&ucode_mod);
     }
 
     if ( !data )
@@ -921,7 +920,7 @@ int __init early_microcode_init(unsigned long *module_map,
 
     microcode_grab_module(module_map, bi);
 
-    if ( ucode_mod.mod_end || ucode_blob.size )
+    if ( ucode_mod.size || ucode_blob.size )
         rc = early_microcode_update_cpu();
 
     /*
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:07:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:07:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820882.1234569 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TyM-0004rW-SP; Thu, 17 Oct 2024 17:07:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820882.1234569; Thu, 17 Oct 2024 17:07: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 1t1TyM-0004rN-Om; Thu, 17 Oct 2024 17:07:38 +0000
Received: by outflank-mailman (input) for mailman id 820882;
 Thu, 17 Oct 2024 17:07: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TvU-0006TN-4f
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:04:40 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e382022c-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:04:38 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184623813332.0053578314786;
 Thu, 17 Oct 2024 10:03:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e382022c-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184626; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=bosGKq7O4GCzRI4fX0jqTRkaseg7RuA6hZrxT1cfZgkyUMfmeh15/QP1CBZfVrpIOztoM28vf92y/HY90CVXoKLU70epYOy5d+pSV+rEB/Qu2H+So9y5jCiL8HTXtaRiQtJlgsk/LF9JQssaRjHvtHbqVd6DNOzhglKLZyRiYCo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184626; h=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=H7+H2K1xx8lIY92L5+m10RhDN9p6bY+Wrz/xIahDxoc=; 
	b=CZDOVR2sT/N5kYCYadGbQgv7rlUjSFtwQIEleQV5X2jczsVYEUnAY/d2qz+tij+Dx25bVcnjn5JowllPVK1XR0d5zuvg7mSbC7eLMCgNXfR+7gwUusCToPBmo08zS/yRRz/k1M3X+XKkY2Sgdrhmf6sg5qldL0KYMcL0v1m93T4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184626;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=H7+H2K1xx8lIY92L5+m10RhDN9p6bY+Wrz/xIahDxoc=;
	b=Zr+oNKk3rc/45DjoWREHaupFr7RYaQSsjF4bgSyExxxKzb8XPG6rxwNaA5yCQG2u
	bEifx013yw++oO58VT46KWzwVotzdCGLdBcJbYiJrzBHdJtAmxEwy1JHe2GNWTUQpdV
	E8R6eK1YOo6XrYcGEF9Y2c/u94YP6Zo2fduzqrSs=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 07/44] x86/boot: move headroom to boot modules
Date: Thu, 17 Oct 2024 13:02:47 -0400
Message-Id: <20241017170325.3842-8-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The purpose of struct boot_module is to encapsulate the state of boot module as
it is processed by Xen. Locating boot module state struct boot_module reduces
the number of global variables as well as the number of state variables that
must be passed around. It also lays the groundwork for hyperlaunch mult-domain
construction, where multiple instances of state variables like headroom will be
needed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- reword and expand comment on headroom
- consolidated declaration and assignment
---
 xen/arch/x86/include/asm/bootinfo.h | 13 +++++++++++++
 xen/arch/x86/setup.c                | 21 ++++++++++++---------
 2 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index d19473d8941e..5fe4f1387d03 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -17,6 +17,19 @@
 struct boot_module {
     /* Transitionary only */
     module_t *mod;
+    /*
+     * A boot module may contain a compressed kernel that will require
+     * additional space, before the module data, into which the kernel will be
+     * decompressed.
+     *
+     * Memory layout at boot:
+     *     [ compressed kernel ]
+     * After boot module relocation:
+     *     [ estimated headroom + PAGE_SIZE rounding ][ compressed kernel ]
+     * After kernel decompression:
+     *     [ decompressed kernel ][ unused rounding ]
+     */
+    unsigned long headroom;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 10934bf31d7f..11e1027d72dd 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1012,7 +1012,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
-    unsigned long nr_pages, raw_max_page, modules_headroom, module_map[1];
+    unsigned long nr_pages, raw_max_page, module_map[1];
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
@@ -1371,7 +1371,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
     }
 
-    modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
+    bi->mods[0].headroom =
+        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
+                         bi->mods[0].mod->mod_end);
+
     bootstrap_map(NULL);
 
 #ifndef highmem_start
@@ -1456,8 +1459,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
              * decompressor overheads of mod[0] (the dom0 kernel).  When we
              * move mod[0], we incorporate this as extra space at the start.
              */
-            unsigned long headroom = j ? 0 : modules_headroom;
-            unsigned long size = PAGE_ALIGN(headroom + mod[j].mod_end);
+            struct boot_module *bm = &bi->mods[j];
+            unsigned long size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
 
             if ( mod[j].reserved )
                 continue;
@@ -1470,14 +1473,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 continue;
 
             if ( s < end &&
-                 (headroom ||
+                 (bm->headroom ||
                   ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
             {
-                move_memory(end - size + headroom,
+                move_memory(end - size + bm->headroom,
                             (uint64_t)mod[j].mod_start << PAGE_SHIFT,
                             mod[j].mod_end);
                 mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += headroom;
+                mod[j].mod_end += bm->headroom;
                 mod[j].reserved = 1;
             }
         }
@@ -1504,7 +1507,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( modules_headroom && !mod->reserved )
+    if ( bi->mods[0].headroom && !mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
@@ -2056,7 +2059,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(mod, modules_headroom,
+    dom0 = create_dom0(mod, bi->mods[0].headroom,
                        initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:07:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:07:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820885.1234579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TyU-0005Lz-3K; Thu, 17 Oct 2024 17:07:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820885.1234579; Thu, 17 Oct 2024 17:07: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 1t1TyU-0005Ln-0h; Thu, 17 Oct 2024 17:07:46 +0000
Received: by outflank-mailman (input) for mailman id 820885;
 Thu, 17 Oct 2024 17:07: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TvD-0006TN-4t
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:04:23 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d968c908-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:04:21 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184621129703.1852929433529;
 Thu, 17 Oct 2024 10:03:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d968c908-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184623; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=SEAYWKE7xL9UY82MEuvzA+0SxasmSBKqYzgwbNc4g+lHlj6PMoU7SXxUHjRtw51ROIuh8WlqoChZK7Jkw2+yZyCzgbK4Be3uYG2+0htFRojgMzbGfK8zMkqf36nsd05QpQ5NAGS4JEfYnFmdT8agqiBBuwpL97B4+gmveO3Ctzs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184623; h=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=8Nn0zA/RVfT8SY13G0Olhb8w8UWUndxx4zU/53Bq7j4=; 
	b=g32lLWqhURhiuSQlrlAiS++0ytl8QPj1Bi/OBsolv/ARRyFCfT2Yt1YY8EspgvwyjdBoNhhS+CgqocxCrsqyBkF6XQVKokkNMcViZCPyxkbsbMujR5xEJg2603tX5oaUnYHgQok21ZpmzAXBuBHKMR82XDy7KQbarykCg8+vb3Y=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184623;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=8Nn0zA/RVfT8SY13G0Olhb8w8UWUndxx4zU/53Bq7j4=;
	b=cS8x22pegiJZg6bepZsRpT6NPWts2WLIAgAEFSXUS569tIWPsS28dRaepcjcvri4
	cEghTfCdame0vVv/i0DaV477S/SsegqiftYncKJuIwbw1VrEVQ3ANQOzQgthGdyUUfl
	ZM5sqHkdwS8hfUzy214zQcZuIr6nvSZqM+TCReKg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 05/44] x86/boot: introduce struct boot_module
Date: Thu, 17 Oct 2024 13:02:45 -0400
Message-Id: <20241017170325.3842-6-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This will introduce a new struct boot_module to provide a rich state
representation around modules provided by the boot loader. Support is for 64
boot modules, one held in reserve for Xen, and up to 63 can be provided by the
boot loader. The array of struct boot_modules will be accessible via a
reference held in struct boot_info.

A temporary `mod` parameter is included in struct boot_module to ease the
transition from using Multiboot v1 structures over to struct boot_module. Once
the transition is complete, the parameter will be dropped from the structure.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- reword comment
---
 xen/arch/x86/include/asm/bootinfo.h | 10 ++++++++++
 xen/arch/x86/setup.c                |  9 +++++++++
 2 files changed, 19 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index f75a7e72a700..d19473d8941e 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,8 +8,17 @@
 #ifndef __XEN_X86_BOOTINFO_H__
 #define __XEN_X86_BOOTINFO_H__
 
+#include <xen/multiboot.h>
 #include <xen/types.h>
 
+/* Max number of boot modules a bootloader can provide in addition to Xen */
+#define MAX_NR_BOOTMODS 63
+
+struct boot_module {
+    /* Transitionary only */
+    module_t *mod;
+};
+
 /*
  * Xen internal representation of information provided by the
  * bootloader/environment, or derived from the information.
@@ -22,6 +31,7 @@ struct boot_info {
     size_t memmap_length;
 
     unsigned int nr_modules;
+    struct boot_module mods[MAX_NR_BOOTMODS + 1];
 };
 
 #endif /* __XEN_X86_BOOTINFO_H__ */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f7ea482920ef..d8ee5741740a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -284,6 +284,8 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
 {
     struct boot_info *bi = &xen_boot_info;
     const multiboot_info_t *mbi = __va(mbi_p);
+    module_t *mods = __va(mbi->mods_addr);
+    unsigned int i;
 
     bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
 
@@ -302,6 +304,13 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
         bi->memmap_length = mbi->mmap_length;
     }
 
+    /*
+     * Iterate over all modules, including the extra one which should have been
+     * reserved for Xen itself
+     */
+    for ( i = 0; i <= bi->nr_modules; i++ )
+        bi->mods[i].mod = &mods[i];
+
     return bi;
 }
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:07:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:07:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820889.1234589 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Tyd-0005tJ-BW; Thu, 17 Oct 2024 17:07:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820889.1234589; Thu, 17 Oct 2024 17:07: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 1t1Tyd-0005tC-8L; Thu, 17 Oct 2024 17:07:55 +0000
Received: by outflank-mailman (input) for mailman id 820889;
 Thu, 17 Oct 2024 17:07: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tv4-0006TN-7w
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:04:14 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d412f094-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:04:12 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184619793164.3023967873388;
 Thu, 17 Oct 2024 10:03:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d412f094-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184622; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=cQk1zZ7TwRBci2G9oF6og8rdWMqi3KtNbdnlRxViRtcKnaW9xnnpQ/QW2lVfu8AwXmcFWi74fDK7H0oMV48tBLgP7v8IBm34qYjbivmNZEe6PCTqpNHR63Y5MvMRKyItrPtP2iKenrS+X9wU19nWur/IVZ0u4bP+IB8qenIU2Bo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184622; h=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=3fsfruenGzMW022TyDqthGbN65HLKdpAAZMOHPTj6cg=; 
	b=Zay2ybEtCrHNIWi/jHt36aQFMMY3HOPjUeNSYbYWMGpZ0bne9jjuinavfDPcoPaxFsVSnfBhSGJh9Ocicflwz2MXMF5NNth755MzJxJNYKDK3rNgCXe0XWycjc9ZbBuxviryB9RJdVbJQWyycCccELdOqBe5kRcWYfqTw1gvWQE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184622;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=3fsfruenGzMW022TyDqthGbN65HLKdpAAZMOHPTj6cg=;
	b=p1dnh5wu2HChCm67ww/Dz9smgUzf0jbdB+ZDPt61AWymLWVp7LS1BZa1mdg74Sc1
	b0LPdA8UMQRKksuGZ29LmKYpTl0kZ7Gc2TMObaLpDcpqTrIiBpkStXNzaIY/YQmAXNX
	kyHQ5nMZJhwIoPYk4G6Vf8EACMWJlkxDXUeajnhE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 04/44] x86/boot: move mmap info to boot info
Date: Thu, 17 Oct 2024 13:02:44 -0400
Message-Id: <20241017170325.3842-5-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Transition the memory map info to be held in struct boot_info.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- reorder of struct boot_module fields
- changed to memmap_length check for memmap detection
---
 xen/arch/x86/include/asm/bootinfo.h |  5 +++++
 xen/arch/x86/setup.c                | 12 +++++++++---
 2 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index efbbd30cc514..f75a7e72a700 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,6 +8,8 @@
 #ifndef __XEN_X86_BOOTINFO_H__
 #define __XEN_X86_BOOTINFO_H__
 
+#include <xen/types.h>
+
 /*
  * Xen internal representation of information provided by the
  * bootloader/environment, or derived from the information.
@@ -16,6 +18,9 @@ struct boot_info {
     const char *loader;
     const char *cmdline;
 
+    paddr_t memmap_addr;
+    size_t memmap_length;
+
     unsigned int nr_modules;
 };
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 037cdd17386c..f7ea482920ef 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -296,6 +296,12 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     else
         bi->cmdline = "";
 
+    if ( mbi->flags & MBI_MEMMAP )
+    {
+        bi->memmap_addr = mbi->mmap_addr;
+        bi->memmap_length = mbi->mmap_length;
+    }
+
     return bi;
 }
 
@@ -1185,13 +1191,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         memmap_type = "Xen-e820";
     }
-    else if ( mbi->flags & MBI_MEMMAP )
+    else if ( bi->memmap_length )
     {
         memmap_type = "Multiboot-e820";
-        while ( bytes < mbi->mmap_length &&
+        while ( bytes < bi->memmap_length &&
                 e820_raw.nr_map < ARRAY_SIZE(e820_raw.map) )
         {
-            memory_map_t *map = __va(mbi->mmap_addr + bytes);
+            memory_map_t *map = __va(bi->memmap_addr + bytes);
 
             /*
              * This is a gross workaround for a BIOS bug. Some bootloaders do
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:08:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:08:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820894.1234599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Tyz-00070D-NG; Thu, 17 Oct 2024 17:08:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820894.1234599; Thu, 17 Oct 2024 17:08: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 1t1Tyz-0006zY-JL; Thu, 17 Oct 2024 17:08:17 +0000
Received: by outflank-mailman (input) for mailman id 820894;
 Thu, 17 Oct 2024 17:08: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tuv-0006TN-3d
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:04:05 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cebfa7dd-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:04:03 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184618449299.4483272125001;
 Thu, 17 Oct 2024 10:03:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cebfa7dd-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184621; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Jj69mog7FESSW+fvVP3+RCzMBMmqWmc3v0uPKmHRi8b263x7K6eX/88EhvivAybvDSZJa+Kwk8WgtHtneYbmvzcvenJNbaglQ/syLwxfUkCi3W2iddyWxMHn1+sEsDXlWJUSk0SoyD4hhDJzR/HlBk+1feG0SIXWvd/XQGZDPUE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184621; h=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=Dr1jKzgUHAaiQbYekBVD6PQo4dQeZnEBKNdNITplfLE=; 
	b=TZkx8ohR4MO2a4uoshPcehr5lwl0XBEyWwM/xabNwAFb84nam0gObY5GPqStjoLYH/j9lxq21KdeAFDSCWsL2OkbdbuVDCwMf9E39nDkKiGpS93UmXu+6tblwaS4WhuSZg939o5wxD4Xv8W6y/hdsLAQuOfbocr2asoZ4AlAdRU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184621;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Dr1jKzgUHAaiQbYekBVD6PQo4dQeZnEBKNdNITplfLE=;
	b=GR6WiaXfoG7f/aZ+nKcXzYLlpEwLqBIDprZYcMvRlxkOu42PG34CwqjDnJScBtBX
	m7yW0hLY5gPRPTLFjrFfE8nsR/dALcfiMNM7IyHCxtM6k2K8yhPsIhyA1NMENl3QY0S
	ejNWVze6O2NbaMBbZMtJjPcKYoLU3t22/oaw9PUQ=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH v6 03/44] x86/boot: move cmdline to boot info
Date: Thu, 17 Oct 2024 13:02:43 -0400
Message-Id: <20241017170325.3842-4-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Transition Xen's command line to being held in struct boot_info.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

---

Changes since v5:
- reorder struct boot_module fields
---
 xen/arch/x86/include/asm/bootinfo.h |  1 +
 xen/arch/x86/setup.c                | 20 ++++++++++++--------
 2 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index bec35e7c2f23..efbbd30cc514 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -14,6 +14,7 @@
  */
 struct boot_info {
     const char *loader;
+    const char *cmdline;
 
     unsigned int nr_modules;
 };
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index eac0954f42b8..037cdd17386c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -274,6 +274,8 @@ static int __init cf_check parse_acpi_param(const char *s)
 }
 custom_param("acpi", parse_acpi_param);
 
+static const char *cmdline_cook(const char *p, const char *loader_name);
+
 static const module_t *__initdata initial_images;
 
 struct boot_info __initdata xen_boot_info;
@@ -288,6 +290,12 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     bi->loader = (mbi->flags & MBI_LOADERNAME) ? __va(mbi->boot_loader_name)
                                                : "unknown";
 
+    /* Parse the command-line options. */
+    if ( mbi->flags & MBI_CMDLINE )
+        bi->cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
+    else
+        bi->cmdline = "";
+
     return bi;
 }
 
@@ -981,7 +989,7 @@ static struct domain *__init create_dom0(const module_t *image,
 
 void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 {
-    const char *memmap_type = NULL, *cmdline = "";
+    const char *memmap_type = NULL;
     char *kextra;
     void *bsp_stack;
     struct cpu_info *info = get_cpu_info(), *bsp_info;
@@ -1035,11 +1043,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     bi = multiboot_fill_boot_info(mbi_p);
 
-    /* Parse the command-line options. */
-    if ( mbi->flags & MBI_CMDLINE )
-        cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
-
-    if ( (kextra = strstr(cmdline, " -- ")) != NULL )
+    if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )
     {
         /*
          * Options after ' -- ' separator belong to dom0.
@@ -1050,7 +1054,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         kextra += 3;
         while ( kextra[1] == ' ' ) kextra++;
     }
-    cmdline_parse(cmdline);
+    cmdline_parse(bi->cmdline);
 
     /* Must be after command line argument parsing and before
      * allocing any xenheap structures wanted in lower memory. */
@@ -1080,7 +1084,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     printk("Bootloader: %s\n", bi->loader);
 
-    printk("Command line: %s\n", cmdline);
+    printk("Command line: %s\n", bi->cmdline);
 
     printk("Xen image load base address: %#lx\n", xen_phys_start);
     if ( hypervisor_name )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:08:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:08:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820895.1234609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Tz5-0007OE-Tt; Thu, 17 Oct 2024 17:08:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820895.1234609; Thu, 17 Oct 2024 17:08: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 1t1Tz5-0007O0-R3; Thu, 17 Oct 2024 17:08:23 +0000
Received: by outflank-mailman (input) for mailman id 820895;
 Thu, 17 Oct 2024 17:08: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TvL-0006TN-Cm
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:04:31 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id de6aa70a-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:04:29 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184622569551.9933736684571;
 Thu, 17 Oct 2024 10:03:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: de6aa70a-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184625; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=JxOPe9KK7rni9b8F2K6sb0JpTMEgtu2VDdjARWYd1Kp30tslpPEQm8P3yMuvFyqO3ovQSvaZ1L5/Ler/EpO49VKusqWouUM1iMZNUO7Dw5arx1yPimgprRJnyxZZRiFGiD7YdkUHpf8NTmKV9D6TajoPMLeBeVdfwpqtjQRU9Hw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184625; h=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=i/MwelbIDlLsytRqJnx56gOPNpJbq/sBz2YfvwIYl4c=; 
	b=GAQSAHJxfulU7UVno+fvmUbI8jcisFo6uaampi1BTROFbdzvYVFVKUAiN6nOl2ATaH1VE+KYxb1Zxg/rACDZZ/ts0MuCOCZ1nzSjZdTf0By70/W4bNGfsbFc8Yi/SkO6GBnDWpR6gdD/bYy591F0n8xqIPaHronuRevRF9OMSJk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184625;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=i/MwelbIDlLsytRqJnx56gOPNpJbq/sBz2YfvwIYl4c=;
	b=qcLTaouKMVsM2G/AnEtCSkWyGecFRTR9kUX8ygvq8O1JsNJjln0u/54rOtKTThsA
	0HEMECXMh0x2+Or1JUYSpuzdI1VnqWw1dd1kDieGylfsDdE5ZOtWcTbsjeW+s59OW7W
	AXcjDtgJ8VmYRh6xpS4M3AlU7IpNZ/JtRPQI0X+A=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 06/44] x86/boot: convert consider_modules to struct boot_module
Date: Thu, 17 Oct 2024 13:02:46 -0400
Message-Id: <20241017170325.3842-7-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To start transitioning consider_modules() over to struct boot_module, begin
with taking the array of struct boot_modules but use the temporary struct
element mod.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- drop unnecessary type cast
---
 xen/arch/x86/setup.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index d8ee5741740a..10934bf31d7f 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -629,7 +629,7 @@ static void __init noinline move_xen(void)
 #undef BOOTSTRAP_MAP_LIMIT
 
 static uint64_t __init consider_modules(
-    uint64_t s, uint64_t e, uint32_t size, const module_t *mod,
+    uint64_t s, uint64_t e, uint32_t size, const struct boot_module mods[],
     unsigned int nr_mods, unsigned int this_mod)
 {
     unsigned int i;
@@ -639,20 +639,20 @@ static uint64_t __init consider_modules(
 
     for ( i = 0; i < nr_mods ; ++i )
     {
-        uint64_t start = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
-        uint64_t end = start + PAGE_ALIGN(mod[i].mod_end);
+        uint64_t start = pfn_to_paddr(mods[i].mod->mod_start);
+        uint64_t end = start + PAGE_ALIGN(mods[i].mod->mod_end);
 
         if ( i == this_mod )
             continue;
 
         if ( s < end && start < e )
         {
-            end = consider_modules(end, e, size, mod + i + 1,
+            end = consider_modules(end, e, size, &mods[i + 1],
                                    nr_mods - i - 1, this_mod - i - 1);
             if ( end )
                 return end;
 
-            return consider_modules(s, start, size, mod + i + 1,
+            return consider_modules(s, start, size, &mods[i + 1],
                                     nr_mods - i - 1, this_mod - i - 1);
         }
     }
@@ -1428,7 +1428,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules. */
             end = consider_modules(s, e, reloc_size + mask,
-                                   mod, bi->nr_modules, -1);
+                                   bi->mods, bi->nr_modules, -1);
             end &= ~mask;
         }
         else
@@ -1463,7 +1463,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
-            end = consider_modules(s, e, size, mod,
+            end = consider_modules(s, e, size, bi->mods,
                                    bi->nr_modules + relocated, j);
 
             if ( highmem_start && end > highmem_start )
@@ -1490,7 +1490,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         while ( !kexec_crash_area.start )
         {
             /* Don't overlap with modules (or Xen itself). */
-            e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), mod,
+            e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), bi->mods,
                                  bi->nr_modules + relocated, -1);
             if ( s >= e )
                 break;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:08:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:08:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820897.1234619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TzE-0007n7-5T; Thu, 17 Oct 2024 17:08:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820897.1234619; Thu, 17 Oct 2024 17:08: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 1t1TzE-0007my-2J; Thu, 17 Oct 2024 17:08:32 +0000
Received: by outflank-mailman (input) for mailman id 820897;
 Thu, 17 Oct 2024 17:08: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tve-0006TN-UP
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:04:50 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e9f9d9f1-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:04:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172918462501326.25612647323169;
 Thu, 17 Oct 2024 10:03:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e9f9d9f1-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184627; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=FUkpM/OCEcp5/uIZbCKalpSYRPxBkMgIREkMD/F/4arWA+FeVEOTkGRJbIY56GbOvFgyrLBSbBDASLoTzUbPwN4MhnLujKQDNiMEafS1P0IO+FVr2W8+MMY+3q/K/MJjfnRcf0WIpSMFAIyXHiPvMcluVrr5+LI+zhpqpizOIZM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184627; h=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=a1nvXWrB1CLe8R744GeUpJxtCMGjQBOguC52kxhYdIY=; 
	b=CC1W1WtLl1uhPlm47ARFUPNOCPHt/0MqUQOqpo8Hau8V4fIFywMPDQ5q/StNVL7x3t2RwSW3b8UIGtD+1AUCS5dXaF8tKe3VUe6LUXsNMo0yRRPPmt+DUhLhTVZ0PBJaSO5Gj2Nvz3dzgx0Zpz28wV0F1Xmy+kc1N9CSMfU7H/M=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184627;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=a1nvXWrB1CLe8R744GeUpJxtCMGjQBOguC52kxhYdIY=;
	b=NUiiCmVMwLCgLnyONPDG29nW6SCnACEvQQ4OlChClf1q7omdhESPdexQlngzuw6X
	vDZVxjsZvUZLEqmTufx9ZifwviXQuiXMq/jVTmD8gSZjmo6EIXihCLBHo1UdB7fmsoR
	BjdWm8JtIM/F2MaPn2cHnzwew1KqhNUWA1C5uP58=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 08/44] x86/boot: convert mod refs to boot_module mod
Date: Thu, 17 Oct 2024 13:02:48 -0400
Message-Id: <20241017170325.3842-9-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To allow a slow conversion of x86 over to struct boot_module, start with
replacing all references to module_t mod, only in setup.c, to the mod element
of struct boot_module. These serves twofold, first to allow the incremental
transition from module_t fields to struct boot_module fields. The second is to
allow the conversion of function definitions from taking module_t parameters to
accepting struct boot_module as needed when a transitioned field will be
accessed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- rewrote commit message
- coding style changes
- added comment for initial_images assignment
---
 xen/arch/x86/setup.c | 64 +++++++++++++++++++++++++-------------------
 1 file changed, 37 insertions(+), 27 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 11e1027d72dd..1b56eaf26efe 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1341,15 +1341,19 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = mod;
+    /*
+     * The field bi->mods[0].mod points to the first element of the module_t
+     * array.
+     */
+    initial_images = bi->mods[0].mod;
 
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
-        if ( mod[i].mod_start & (PAGE_SIZE - 1) )
+        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-        mod[i].mod_end -= mod[i].mod_start;
-        mod[i].mod_start >>= PAGE_SHIFT;
-        mod[i].reserved = 0;
+        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
+        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
+        bi->mods[i].mod->reserved = 0;
     }
 
     /*
@@ -1360,6 +1364,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( xen_phys_start )
     {
+        unsigned int xen = bi->nr_modules;
         relocated = true;
 
         /*
@@ -1367,8 +1372,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        mod[bi->nr_modules].mod_start = virt_to_mfn(_stext);
-        mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
+        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
+        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
     }
 
     bi->mods[0].headroom =
@@ -1460,9 +1465,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
              * move mod[0], we incorporate this as extra space at the start.
              */
             struct boot_module *bm = &bi->mods[j];
-            unsigned long size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
+            unsigned long size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
 
-            if ( mod[j].reserved )
+            if ( bi->mods[j].mod->reserved )
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
@@ -1474,14 +1479,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             if ( s < end &&
                  (bm->headroom ||
-                  ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
+                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
             {
                 move_memory(end - size + bm->headroom,
-                            (uint64_t)mod[j].mod_start << PAGE_SHIFT,
-                            mod[j].mod_end);
-                mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += bm->headroom;
-                mod[j].reserved = 1;
+                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
+                            bm->mod->mod_end);
+                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
+                bm->mod->mod_end += bm->headroom;
+                bm->mod->reserved = 1;
             }
         }
 
@@ -1507,13 +1512,15 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( bi->mods[0].headroom && !mod->reserved )
+    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
+        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
+                        << PAGE_SHIFT;
 
-        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(mod[i].mod_end));
+        reserve_e820_ram(&boot_e820, s,
+                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
     }
 
     if ( !xen_phys_start )
@@ -1591,8 +1598,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
                 for ( j = 0; j < bi->nr_modules; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
-                                   mod[j].mod_end;
+                    uint64_t end = pfn_to_paddr(
+                                   bi->mods[j].mod->mod_start) +
+                                   bi->mods[j].mod->mod_end;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1666,11 +1674,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        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),
-                         _mfn(mod[i].mod_start),
-                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
+        set_pdx_range(bi->mods[i].mod->mod_start,
+                      bi->mods[i].mod->mod_start +
+                      PFN_UP(bi->mods[i].mod->mod_end));
+        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
+            _mfn(bi->mods[i].mod->mod_start),
+            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
     }
 
 #ifdef CONFIG_KEXEC
@@ -2059,8 +2068,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(mod, bi->mods[0].headroom,
-                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
+    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
+                       initrdidx < bi->nr_modules ? bi->mods[initrdidx].mod
+                                                  : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:08:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:08:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820898.1234629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TzF-000849-CC; Thu, 17 Oct 2024 17:08:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820898.1234629; Thu, 17 Oct 2024 17:08: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 1t1TzF-00083w-8k; Thu, 17 Oct 2024 17:08:33 +0000
Received: by outflank-mailman (input) for mailman id 820898;
 Thu, 17 Oct 2024 17:08: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tvv-0006TN-ST
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:05:07 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f42e10c9-8ca9-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:05:06 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184627400845.0097301540941;
 Thu, 17 Oct 2024 10:03:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f42e10c9-8ca9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184629; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=SeayuwoQT0saTqC6G096y+49K1bclg5Ivg81bteWsoDLt/adFhxnFW3tKKpe/IWKuCK2jaI8RMq4NqZ3w5Hit3zXBubjRzMX+B0N8cy4mAOfWPTcJf/wEUf4YLj12lfiJYWtazTvbLq8IoUOlC37CmR00icW70Q4sFG8mfbUbXo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184629; h=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=Dgh7JemAIAyELVZo1MtAbdLIy6CYiHIimrr6e9LjQD8=; 
	b=TS19wJUP0AMUiHWHp2eIISwQGpgs2CJKJCRwnlx1rDwNRQwoqOWgZqqwCnXyLHBMQRtRuIO4V/X70VsAZvI6r8AhW49kWAwEttsFIPPDcFm4ZhOW1cd2yWnnDYQzZ5DZcOnwS3zRwDpAaJgBy/PA+ibqDTqhGQo3/0OG+L8IhTQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184629;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Dgh7JemAIAyELVZo1MtAbdLIy6CYiHIimrr6e9LjQD8=;
	b=K4K1/ZiQiOWJ4pIQWR8kcK25hcKKNHMCIIV0jXCjd2149ZUXycVc3sYYaeqwrsyM
	1sfKSVqt1NlVpU6FcdjYIInTnfaoX/QRYLCSXzdsuoMKKGXIy1JGrCnL9EoeLYbioUH
	rRXqtzfuNVbC3KFj5rGn2C969yTTnhPCXPclm8Xg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 10/44] x86/boot: introduce boot module flags
Date: Thu, 17 Oct 2024 13:02:50 -0400
Message-Id: <20241017170325.3842-11-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The existing startup code employs various ad-hoc state tracking about certain
boot module types by each area of the code. A boot module flags is added to
enable tracking these different states.  The first state to be transition by
this commit is module relocation.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes since v5:
- removed trailing blank line.
---
 xen/arch/x86/include/asm/bootinfo.h | 3 +++
 xen/arch/x86/setup.c                | 8 ++++----
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 18281d80fa97..e8ba9390a51f 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -39,6 +39,9 @@ struct boot_module {
      */
     unsigned long headroom;
     enum bootmod_type type;
+
+    uint32_t flags;
+#define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index fed9bef16305..f87faa31a2cf 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1357,7 +1357,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             panic("Bootloader didn't honor module alignment request\n");
         bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
         bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
-        bi->mods[i].mod->reserved = 0;
     }
 
     /*
@@ -1471,7 +1470,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             struct boot_module *bm = &bi->mods[j];
             unsigned long size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
 
-            if ( bi->mods[j].mod->reserved )
+            if ( bi->mods[j].flags & BOOTMOD_FLAG_X86_RELOCATED )
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
@@ -1490,7 +1489,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                             bm->mod->mod_end);
                 bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
                 bm->mod->mod_end += bm->headroom;
-                bm->mod->reserved = 1;
+                bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
             }
         }
 
@@ -1516,7 +1515,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
+    if ( bi->mods[0].headroom &&
+         !(bi->mods[0].flags & BOOTMOD_FLAG_X86_RELOCATED) )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:08:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:08:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820901.1234639 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1TzL-00006x-Qd; Thu, 17 Oct 2024 17:08:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820901.1234639; Thu, 17 Oct 2024 17: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 1t1TzL-00006n-MI; Thu, 17 Oct 2024 17:08:39 +0000
Received: by outflank-mailman (input) for mailman id 820901;
 Thu, 17 Oct 2024 17:08: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tx8-00014B-N8
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:06:22 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 20cfa8ef-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:06:21 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184639096561.6358775710053;
 Thu, 17 Oct 2024 10:03:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 20cfa8ef-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184641; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=MV3u8BzJ/LpTzbG91Beu7DO1aL2ciVRH+ZszcL8ha8+8/ddu+5Cp+Bx/E2yGoNU91+9mSLTWkcHExtp5JVOZed8Mch5pGIbPTBto1VR8JYmu3DCi5zUymDklg20v4U/6g8FhusjEyC2gukZp++b9lRsDH2wthVAp4abM60NbNhM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184641; h=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=VF4eHm6uxrTpSrtxk8vxbuolB5VgBKHNdcHv6nx9QeQ=; 
	b=YOeAlAQ8UqXDMkHJh4D/3cXI9R/bnPhlQYpeQYXz+XQJ6KkzKSlWwgFMRDjcicLHlBrwS/1Z1pJsWxdgNcMNaS9WFiNyLRZkWEbeCH6uZszHRXyDooGz/+eqs22ld6G8S+SUwxMBBYRJ2dFOOudnu/hh7v1DzM7XawbdkUc0LxE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184641;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=VF4eHm6uxrTpSrtxk8vxbuolB5VgBKHNdcHv6nx9QeQ=;
	b=aMxZe0CvWweY1pZjHQuHKYRrnyTiYEOiQvK/qww0sZ+x7duhNG7OzwTz//8iS3l8
	eHx0u0Xp53vGNZ+my0Ewiu/HSN0l0BWACQVRShO7vPGiQnhJkK+Njl3PRLSFwSwxWa2
	PhDaeRIDkoSDo6l+xtSOlKQ6ed3C2wBaaSKGb03k=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 19/44] x86/boot: use consumed boot module flag for microcode
Date: Thu, 17 Oct 2024 13:02:59 -0400
Message-Id: <20241017170325.3842-20-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To track if the microcode boot module was loaded, a copy of the boot module is
kept. The size element of this copy is set to zero as the indicator that the
microcode was loaded. A side effect is that the modules have to be rescanned to
find the boot module post-relocation, so the cache copy can be created.

Use the consumed boot module flag to track the loading of the microcode boot
module. This removes the need to manipulate the boot module size element, no
longer requiring the copy, thus allowing it to be replaced by a reference. As a
result it is no longer necessary to rescan the boot modules after relocation
has occurred.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 7bcc17e0ab2f..5b42aad2fdd0 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -58,7 +58,7 @@
  */
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
-static struct boot_module __initdata ucode_mod;
+static struct boot_module __initdata *ucode_mod;
 static signed int __initdata ucode_mod_idx;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
@@ -211,7 +211,7 @@ static void __init microcode_grab_module(
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
-    ucode_mod = bi->mods[ucode_mod_idx];
+    ucode_mod = &bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
         microcode_scan_module(module_map, bi);
@@ -769,10 +769,10 @@ static int __init cf_check microcode_init(void)
         ucode_blob.size = 0;
         ucode_blob.data = NULL;
     }
-    else if ( ucode_mod.size )
+    else if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
     {
         bootstrap_map_bm(NULL);
-        ucode_mod.size = 0;
+        ucode_mod->flags |= BOOTMOD_FLAG_X86_CONSUMED;
     }
 
     return 0;
@@ -826,14 +826,14 @@ int __init microcode_init_cache(
     if ( !ucode_ops.apply_microcode )
         return -ENODEV;
 
-    if ( ucode_scan )
-        /* Need to rescan the modules because they might have been relocated */
+    /* Scan if microcode was not detected earlier */
+    if ( !ucode_mod )
         microcode_scan_module(module_map, bi);
 
-    if ( ucode_mod.size )
-        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
-                                ucode_mod.size);
-    else if ( ucode_blob.size )
+    if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
+        rc = early_update_cache(bootstrap_map_bm(ucode_mod),
+                                ucode_mod->size);
+    else if ( ucode_mod && ucode_blob.size )
         rc = early_update_cache(ucode_blob.data, ucode_blob.size);
 
     return rc;
@@ -851,10 +851,10 @@ static int __init early_microcode_update_cpu(void)
         len = ucode_blob.size;
         data = ucode_blob.data;
     }
-    else if ( ucode_mod.size )
+    else if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
     {
-        len = ucode_mod.size;
-        data = bootstrap_map_bm(&ucode_mod);
+        len = ucode_mod->size;
+        data = bootstrap_map_bm(ucode_mod);
     }
 
     if ( !data )
@@ -920,7 +920,7 @@ int __init early_microcode_init(unsigned long *module_map,
 
     microcode_grab_module(module_map, bi);
 
-    if ( ucode_mod.size || ucode_blob.size )
+    if ( ucode_mod || ucode_blob.size )
         rc = early_microcode_update_cpu();
 
     /*
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:13:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:13:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820924.1234652 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U3q-0002aj-DT; Thu, 17 Oct 2024 17:13:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820924.1234652; Thu, 17 Oct 2024 17: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 1t1U3q-0002ac-AX; Thu, 17 Oct 2024 17:13:18 +0000
Received: by outflank-mailman (input) for mailman id 820924;
 Thu, 17 Oct 2024 17:13: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1U3o-0002aT-7M
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:13:16 +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 17ccb6cc-8cab-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:13:14 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a99f3a5a44cso138745966b.3
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 10:13:14 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29844739sm321594766b.171.2024.10.17.10.13.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 10:13:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 17ccb6cc-8cab-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729185193; x=1729789993; 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=IkLHiZ/qjVTDpUeGwLUHZrwXAY+Uv7XRFyXyBc3jX0g=;
        b=M5slW+jgTMMJb4UKPFdiOjn5THr6VRPWF452VUu0iHZdRRtL5zO3WMQ/gqrMdB9kD0
         7cj8U0cF50rXQSmLo3nGNpJpZtQ2l08gxzWCxEi89Vg2Eyv/ZMdK2QXif1dy+solJVvS
         ABLODnnnLcXFB/mZg+gVi5kkT+pQf9KOKC8P4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729185193; x=1729789993;
        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=IkLHiZ/qjVTDpUeGwLUHZrwXAY+Uv7XRFyXyBc3jX0g=;
        b=C0uMlyZGGsanlgT65zZ8wx0cgXjgoHhHDwLTWn+wxDl9mVyCkNbEb7F5KT+5rfdNdM
         a5NHvRvDcQn3DJ9F/3W8VP64OdPP+KVWP0cf65CDa6xF/wCBqSzWLBs762+BDhBnkYSt
         0nV9n4L+ag7ydvAG3Eo01et+OMJddg0QC3eQUD+59thq2sS5Bqyi0sc0Ehqm8QLojHdi
         ZcLMeZTmk8pm3HA9aiGguDBotCTm6hc47K5kf6iNLIMGYTZNzkTzNGJCVCY++cRfEhTp
         atCTUomTMJ5gN67n+pnW6UFTycpw+3yot5D/ZIXLQ/80tx1Zj4oORkI+xQATwGO1qvf0
         rstg==
X-Forwarded-Encrypted: i=1; AJvYcCWDikyuYBTQlI+11Trw6Af6TPW1tocDIrQZk1TxR2NsTa/qV85RKwFKCnq5OYM6sq//CKt+2mZyVGQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzdz6c0WKBe3GUGEB6UnPvwY0tgRU2BV+JCG6fydASkiK6J7Aum
	GoENPSznmLogBe3pGI8nEx1kHjH47NQ/xZmnoXxd8Qm3PJOsY7rUlMgQ5BhucVM=
X-Google-Smtp-Source: AGHT+IESP+9oVq28xWQpQuFHl7pEtiaXkQ2oazakehQ3/jNXEDmu/0I7VglDGVIuZdKD9cg3Z03opQ==
X-Received: by 2002:a17:907:d2df:b0:a99:f656:2bd8 with SMTP id a640c23a62f3a-a9a34dd96e5mr694341266b.42.1729185193238;
        Thu, 17 Oct 2024 10:13:13 -0700 (PDT)
Message-ID: <a5745a93-1d82-45f1-bb88-81a737ebcce3@citrix.com>
Date: Thu, 17 Oct 2024 18:13:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017133123.1946204-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 2:31 pm, Frediano Ziglio wrote:
> The current method to include 32 bit C boot code is:
> - compile each function we want to use into a separate object file;
> - each function is compiled with -fpic option;
> - convert these object files to binary files. This operation removes GOP
>   which we don't want in the executable;
> - a small assembly part in each file add the entry point;
> - code can't have external references, all possible variables are passed
>   by value or pointer;
> - include these binary files in head.S.
>
> There are currently some limitations:
> - code is compiled separately, it's not possible to share a function
>   (like memcpy) between different functions to use;
> - although code is compiled with -fpic there's no certainty there are
>   no relocations, specifically data ones. This can lead into hard to
>   find bugs;
> - it's hard to add a simple function;
> - having to pass external variables makes hard to do multiple things
>   otherwise functions would require a lot of parameters so code would
>   have to be split into multiple functions which is not easy.
>
> Current change extends the current process:
> - all object files are linked together before getting converted making
>   possible to share code between the function we want to call;
> - a single object file is generated with all functions to use and
>   exported symbols to easily call;
> - variables to use are declared in linker script and easily used inside
>   C code. Declaring them manually could be annoying but makes also
>   easier to check them. Using external pointers can be still an issue if
>   they are not fixed. If an external symbol is not declared this gives a
>   link error.
>
> Some details of the implementation:
> - C code is compiled with -fpic flags (as before);
> - object files from C code are linked together;
> - the single bundled object file is linked with 2 slightly different
>   script files to generate 2 bundled object files;
> - the 2 bundled object files are converted to binary removing the need
>   for global offset tables;
> - a Python script is used to generate assembly source from the 2
>   binaries;
> - the single assembly file is compiled to generate final bundled object
>   file;
> - to detect possible unwanted relocation in data/code code is generated
>   with different addresses. This is enforced starting .text section at
>   different positions and adding a fixed "gap" at the beginning.
>   This makes sure code and data is position independent;
> - to detect used symbols in data/code symbols are placed in .text
>   section at different offsets (based on the line in the linker script).
>   This is needed as potentially a reference to a symbol is converted to
>   a reference to the containing section so multiple symbols could be
>   converted to reference to same symbol (section name) and we need to
>   distinguish them;
> - --orphan-handling=error option to linker is used to make sure we
>   account for all possible sections from C code;
>
> Current limitations:
> - the main one is the lack of support for 64 bit code. It would make
>   sure that even the code used for 64 bit (at the moment EFI code) is
>   code and data position independent. We cannot assume that code that
>   came from code compiled for 32 bit and compiled for 64 bit is code and
>   data position independent, different compiler options lead to
>   different code/data.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

This commit message is not particularly easy to follow.  Can I recommend
the following:

---%<---
x86/boot: Rework how 32bit C is linked/included for early boot

Right now, the two functions which were really too complicated to write
in asm are compiled as 32bit PIC, linked to a blob and included
directly, using global asm() to arrange for them to have function semantics.

This is limiting and fragile; the use of data relocations will compile
fine but malfunction when used, creating hard-to-debug bugs.

Furthermore, we would like to increase the amount of C, to
deduplicate/unify Xen's boot logic, as well as making it easier to
follow.  Therefore, rework how the 32bit objects are included.

Link all 32bit objects together first.  This allows for sharing of logic
between translation units.  Use differential linking and explicit
imports/exports to confirm that we only have the expected relocations,
and write the object back out as an assembly file so it can be linked
again as if it were 64bit, to integrate with the rest of Xen.

This allows for the use of external references (e.g. access to global
variables) with reasonable assurance of doing so safely.

No functional change.
---%<---

which I think is an accurate and more concise summary of what's changing?

> diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
> index a379db7988..7e85549751 100644
> --- a/xen/arch/x86/boot/.gitignore
> +++ b/xen/arch/x86/boot/.gitignore
> @@ -1,3 +1,4 @@
>  /mkelf32
> -/*.bin
> -/*.lnk
> +/build32.*.lds
> +/built-in-32.*.bin
> +/built-in-32.*.map

/built-in-32.S too

And from a glance at the file, this adjustment in the combine script too:

-print('\n\t.section\t.note.GNU-stack,"",@progbits', file=out)
+print('\n\t.section .note.GNU-stack, "", @progbits', file=out)

to have both .section's formatted in the same way.


> diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
> similarity index 70%
> rename from xen/arch/x86/boot/build32.lds
> rename to xen/arch/x86/boot/build32.lds.S
> index 56edaa727b..e3f5e55261 100644
> --- a/xen/arch/x86/boot/build32.lds
> +++ b/xen/arch/x86/boot/build32.lds.S
> <snip>
>          *(.text)
>          *(.text.*)
> -        *(.data)
> -        *(.data.*)
>          *(.rodata)
>          *(.rodata.*)
> +        *(.data)
> +        *(.data.*)

Reordering .data and .rodata really isn't necessary.

I'd just drop this part of the diff.  I have some different follow-up
for it anyway, which I've been holding off until after this first change
is sorted.

Everything here I'm happy to fix up on commit, if you're ok with me
doing so.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:16:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:16:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820931.1234662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U76-0003Es-SU; Thu, 17 Oct 2024 17:16:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820931.1234662; Thu, 17 Oct 2024 17: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 1t1U76-0003El-Ot; Thu, 17 Oct 2024 17:16:40 +0000
Received: by outflank-mailman (input) for mailman id 820931;
 Thu, 17 Oct 2024 17: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TzR-0008TH-14
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:45 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 764fdd61-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:08:44 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184660412458.4759663546213;
 Thu, 17 Oct 2024 10:04:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 764fdd61-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184662; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ICoRWKfFh0fwzoJ4RKp+H6tPLezHb7U0FjEexjHQMGfl5abUMQGUcC2HY+M4Q2ZryiXBOQ/I4e8k9uzcgPYvAMW4hQhE9etbli1uZFqUvZrqla/wstbhT74RhD6lJuV9wPSwSwdq2q8GndMFJtt7EQSEcnDnxw0Qrk5gmrcx7JM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184662; h=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=yCWAwbuasnt6b9Yd1Y7i2kLi7iLwBuIBFqAlz4Zq4CE=; 
	b=GyZCqXV2sEq9lDb9hy7MIOC+4ClfXxIZZ6HuY54xuuYiOVx8f7hhFIyX0utvAYLP7XXhaAqpqTqzDxyoa50OCsZGX1xz4i1+gKf/8UGg0jnoP5ByyAgI6nrg1cQnDSMw1kFUNZpdL9HOdz4Lxna33FtBemHT6Ilb9tHeXKQRVBQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184662;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=yCWAwbuasnt6b9Yd1Y7i2kLi7iLwBuIBFqAlz4Zq4CE=;
	b=GuqVYQ57RFIx63UqbWBa/o9oOsSAbZ3TtsQyhYI50nlocZZwUneOZG4BQfpLe5d+
	DTvEIN/YFqdhwENjpg4xc1cDS+qWtm9pyLrpln/Gg+6R6vV3WL394bU3anRMfcN8xEh
	F9iKhXuErl9N27B0l025V6K0W+Fceu8sOrjPhlMw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 36/44] x86/boot: remove remaining module_t references
Date: Thu, 17 Oct 2024 13:03:16 -0400
Message-Id: <20241017170325.3842-37-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Any direct usages of module_t have been transitioned, remove the remaining
references to the mod field. This also removes any external use of
bootstrap_map(), dropping from setup.h and making it static.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- commit message rewrite
- coding style change
- remove export of bootstrap_map()
---
 xen/arch/x86/include/asm/setup.h |  1 -
 xen/arch/x86/setup.c             | 27 +++++++++------------------
 2 files changed, 9 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 72d183e8a4de..f7958b56eab6 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -35,7 +35,6 @@ extern struct boot_info xen_boot_info;
 
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
-void *bootstrap_map(const module_t *mod);
 void *bootstrap_map_bm(const struct boot_module *bm);
 
 int remove_xen_ranges(struct rangeset *r);
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 4d53292aa444..5ae82f3abcb5 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -333,8 +333,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = bi->mods[i].mod->mod_start;
-        unsigned long end = start + PFN_UP(bi->mods[i].mod->mod_end);
+        unsigned long start = bi->mods[i].start;
+        unsigned long end = start + PFN_UP(bi->mods[i].size);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -471,7 +471,7 @@ static void *__init bootstrap_map_addr(paddr_t start, paddr_t end)
     return ret;
 }
 
-void *__init bootstrap_map(const module_t *mod)
+static void *__init bootstrap_map(const module_t *mod)
 {
     if ( !mod )
         return bootstrap_map_addr(0, 0);
@@ -661,8 +661,8 @@ static uint64_t __init consider_modules(
 
     for ( i = 0; i < nr_mods ; ++i )
     {
-        uint64_t start = pfn_to_paddr(mods[i].mod->mod_start);
-        uint64_t end = start + PAGE_ALIGN(mods[i].mod->mod_end);
+        uint64_t start = (uint64_t)mods[i].start;
+        uint64_t end = start + PAGE_ALIGN(mods[i].size);
 
         if ( i == this_mod )
             continue;
@@ -1377,10 +1377,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; i++ )
     {
-        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
+        if ( bi->mods[i].start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
-        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
     }
 
     /*
@@ -1401,16 +1399,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          */
         bi->mods[xen].start = virt_to_maddr(_stext);
         bi->mods[xen].size = __2M_rwdata_end - _stext;
-
-        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
-        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
     }
 
-    bi->mods[0].headroom =
-        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
-                         bi->mods[0].mod->mod_end);
-
-    bootstrap_map(NULL);
+    bi->mods[0].headroom = bzimage_headroom(
+        bootstrap_map_bm(&bi->mods[0]), bi->mods[0].size);
+    bootstrap_map_bm(NULL);
 
 #ifndef highmem_start
     /* Don't allow split below 4Gb. */
@@ -1511,9 +1504,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             {
                 move_memory(end - size + bm->headroom, bm->start, bm->size);
                 bm->start = (end - size);
-                bm->mod->mod_start = paddr_to_pfn(bm->start);
                 bm->size += bm->headroom;
-                bm->mod->mod_end = bm->size;
                 bm->flags |= BOOTMOD_FLAG_X86_RELOCATED;
             }
         }
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:16:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:16:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820935.1234672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U7M-0003gZ-37; Thu, 17 Oct 2024 17:16:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820935.1234672; Thu, 17 Oct 2024 17:16: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 1t1U7M-0003gS-0I; Thu, 17 Oct 2024 17:16:56 +0000
Received: by outflank-mailman (input) for mailman id 820935;
 Thu, 17 Oct 2024 17:16: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TzA-00014B-HW
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:28 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6bd16e38-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:08:26 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184658005873.5613662896585;
 Thu, 17 Oct 2024 10:04:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6bd16e38-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184660; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=n7ZYi8u/rh/V7Dw9U4AhWRO/mKjxsLHcvk2bf9fVBZUnfCUuCkptJ9yzyu1VdzWzgU44ApHNdSUeLMwndFoWF4w8STrNUXNP5tIgUjpRsPUV5h3xqLf7X0jjv8vy1GjLGC2d5g4Z4C0NZ+6WC8MWDXNk+suElVcTu707am/nnd4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184660; h=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=JraRp4qDaDWJ2lj1CcSCRxF+QAMscl93p41Cp6mewpw=; 
	b=anJC8yyyrOqRlOC/1FBaHJ6rqFhMr1m84qT2Jy/1vpZuBt5VrI9PqrKei0hXvy+VfxwPyiPtHnig1FlH7IgX7/+ET44C+QkOZWQYQt0pgH3wmFNBruUsAiZ/oxJtc8YOiX8HroIu6z8Z9MjAOE860kQnWTEQVT07+gl04TKXitM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184660;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=JraRp4qDaDWJ2lj1CcSCRxF+QAMscl93p41Cp6mewpw=;
	b=Ap1tYajcF/sRYx7/Ua6dS2DfhYOwNh/9hyXa3+gMfIPBDe0A9HWtIDb4f9TuVY8/
	D4a0iHviwHMpz3h4Wd56ZcB1FpYjQiin12xmSV3itQ1W5v0GxNoWfo1zX6lzD3Xsj98
	+YeheXOzZd6g2Ahif2l3CIrhgUw1TsriaOH0bT1w=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 34/44] x86/boot: drop the use of initial_images unit global
Date: Thu, 17 Oct 2024 13:03:14 -0400
Message-Id: <20241017170325.3842-35-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

---

Changes since v5:
- coding style changes
---
 xen/arch/x86/setup.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f5cd7eeb157c..f8b9c164c1cb 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -276,8 +276,6 @@ custom_param("acpi", parse_acpi_param);
 
 static const char *cmdline_cook(const char *p, const char *loader_name);
 
-static const struct boot_module *__initdata initial_images;
-
 struct boot_info __initdata xen_boot_info;
 
 static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
@@ -335,8 +333,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = initial_images[i].mod->mod_start;
-        unsigned long end = start + PFN_UP(initial_images[i].mod->mod_end);
+        unsigned long start = bi->mods[i].mod->mod_start;
+        unsigned long end = start + PFN_UP(bi->mods[i].mod->mod_end);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -353,14 +351,12 @@ void __init discard_initial_images(void)
     for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t start =
-            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
+            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
 
-        init_domheap_pages(start,
-                           start + PAGE_ALIGN(initial_images[i].mod->mod_end));
+        init_domheap_pages(start, start + PAGE_ALIGN(bi->mods[i].mod->mod_end));
     }
 
     bi->nr_modules = 0;
-    initial_images = NULL;
 }
 
 static void __init init_idle_domain(void)
@@ -1380,8 +1376,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = bi->mods;
-
     for ( i = 0; i < bi->nr_modules; i++ )
     {
         if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:17:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:17:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820939.1234682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U7V-00049g-El; Thu, 17 Oct 2024 17:17:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820939.1234682; Thu, 17 Oct 2024 17:17: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 1t1U7V-00049Z-B1; Thu, 17 Oct 2024 17:17:05 +0000
Received: by outflank-mailman (input) for mailman id 820939;
 Thu, 17 Oct 2024 17: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TxO-0008TH-ST
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:06:38 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2b0226f4-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:06:38 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184642001935.7928067426468;
 Thu, 17 Oct 2024 10:04:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b0226f4-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184644; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=VThMhDqlfyEbcCaSZ4XQ//QSDbd2FvoW9cNkyRyOmoBaUzboZAO8jIZQ684Sea4w4Jet6lIYaVAMgXg+iMB2ti8L/iYyXv+VsFB2P1E9HK4xwlnukuQjgUL2Nx1i+WXxDhFDbXLMBlZqCuvu92q538ubRWRT7gc77rCnhBuQl+4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184644; h=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=a9E8yTqYav2aI/xh1POt8XbQvYtTU40bLqsYbWj2y9s=; 
	b=aIkOl1TcwtmHYXqTQ8rMRfsLaKTijG8zrJvjstr2pTH8AKcEH8seC4pOwmBO+hB7FxMV1Z10c8qWWx8KbEscCD2eyetxKyewZTuCvj1Cf90Hzc0tZRxBXIjff7ykRGOT9B6omFkllzJfiwq6wI706TeSM9dZ3gYgaawPk+03wa0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184644;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=a9E8yTqYav2aI/xh1POt8XbQvYtTU40bLqsYbWj2y9s=;
	b=NCkCTvtSUm3XGj5CqdsH7YFc300BedFexRbHOP785xaw2+Ixc7K2d9ljI/IjUh5L
	ny7r0a6y9ONM8g7ygDWHHIQnP0M1FX1HUP2uMY/8KL/dXoqY8F/P86c2RrRo/IPgUh1
	AweAdVo2Fvm4nar/s4oJFrUCIx7nmnfINi7tRNpw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 21/44] x86/boot: convert ramdisk locating to struct boot_module
Date: Thu, 17 Oct 2024 13:03:01 -0400
Message-Id: <20241017170325.3842-22-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Locate the first unclaimed struct boot_module and mark it as ramdisk. If there
are any remaining unclaimed struct boot_module instances, report to the
console. In the change, the new boot module iterator is used to find the
initrd index, which returns a signed int. Switch initrdidx from unsigned to
signed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

---
Changes since v5:
- adjusted initrdidx check for prior changes to boot module search function
---
 xen/arch/x86/setup.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index a4ddcb908626..6ba8a893daf0 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -2083,16 +2083,23 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? XENLOG_INFO : XENLOG_WARNING "Warning: ",
            cpu_has_nx ? "" : "not ");
 
-    initrdidx = find_first_bit(module_map, bi->nr_modules);
-    if ( initrdidx < bi->nr_modules )
+    /*
+     * At this point all capabilities that consume boot modules should have
+     * claimed their boot modules. Find the first unclaimed boot module and
+     * claim it as the initrd ramdisk. Do a second search to see if there are
+     * any remaining unclaimed boot modules, and report them as unusued initrd
+     * candidates.
+     */
+    initrdidx = first_boot_module_index(bi, BOOTMOD_UNKNOWN);
+    if ( initrdidx < MAX_NR_BOOTMODS )
     {
         bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
         bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+        if ( first_boot_module_index(bi, BOOTMOD_UNKNOWN) < MAX_NR_BOOTMODS )
+            printk(XENLOG_WARNING
+                   "Multiple initrd candidates, picking module #%u\n",
+                   initrdidx);
     }
-    if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
-        printk(XENLOG_WARNING
-               "Multiple initrd candidates, picking module #%u\n",
-               initrdidx);
 
     /*
      * We're going to setup domain0 using the module(s) that we stashed safely
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:17:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:17:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820943.1234692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U7f-0004gO-KP; Thu, 17 Oct 2024 17:17:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820943.1234692; Thu, 17 Oct 2024 17:17: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 1t1U7f-0004gH-Hq; Thu, 17 Oct 2024 17:17:15 +0000
Received: by outflank-mailman (input) for mailman id 820943;
 Thu, 17 Oct 2024 17:17: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TzY-0008TH-14
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:52 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7a61aa24-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:08:51 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184661673704.2726553863293;
 Thu, 17 Oct 2024 10:04:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7a61aa24-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184664; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=FGaplFOEg0rWI0UwXkCA+tRto+W1AeKjKp/IK1sImY8OaZ0tt2Hwb3CBRrNcwNVSewTgRHEPOPlRZFPQOswlI+1dYOfuxLrEw6PMzvJZsYhV3TDfsOIEq9pxwprgNN2P8NLChp7FSWcHs0+bdZ6xyEd9Ljm+asRWKTH/Eqmo2A8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184664; h=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=t8mwfgj0+AG9djRszVKShE80Ero/zF+/yhs316UwKJo=; 
	b=WauNIwkoJRLSMZUi9LAolyhJZfXfdMN1GuLam2sWYVV4151l5t33HuKcCNqIdgohaiwEJ6OEW6DjjJZUBclRbNC6ucxcH7u7HQZsGU3rdmgBWuHT8X9/Ebo4m9EBG2uoto6W06+FLiZOuFcv51LblVaYTNfyCV0CKiFDt6klqrc=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184664;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=t8mwfgj0+AG9djRszVKShE80Ero/zF+/yhs316UwKJo=;
	b=V/XPjZlOPZgdAHyA7bfz3i0WTSD1qZbB+lW7Mi6BUdIyPL8JTejU6Ixn8DiCqQxW
	Nq6v5VZ8gQZfDhceAcmaSmSaq8g6yIMr+YkjrA820OeUKHtaWugOxLvPXze+TRJHhHP
	y3d1OCR2oN89UagNAVviywYA7jmq0z/iwLBWphB4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 37/44] x86/boot: remove mod from struct boot_module
Date: Thu, 17 Oct 2024 13:03:17 -0400
Message-Id: <20241017170325.3842-38-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With all references to mod field removed, remove the mod field from struct
boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 3 ---
 xen/arch/x86/setup.c                | 2 --
 2 files changed, 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 24c2f37c7b11..b65b55c0a2c2 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,7 +8,6 @@
 #ifndef __XEN_X86_BOOTINFO_H__
 #define __XEN_X86_BOOTINFO_H__
 
-#include <xen/multiboot.h>
 #include <xen/types.h>
 
 /* Max number of boot modules a bootloader can provide in addition to Xen */
@@ -25,8 +24,6 @@ enum bootmod_type {
 };
 
 struct boot_module {
-    /* Transitionary only */
-    module_t *mod;
     /*
      * A boot module may contain a compressed kernel that will require
      * additional space, before the module data, into which the kernel will be
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 5ae82f3abcb5..ae027667eb82 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -308,8 +308,6 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
      */
     for ( i = 0; i <= bi->nr_modules; i++ )
     {
-        bi->mods[i].mod = &mods[i];
-
         bi->mods[i].cmdline = (paddr_t)mods[i].string;
 
         bi->mods[i].start = (paddr_t)mods[i].mod_start;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:17:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:17:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820960.1234701 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U7y-0005Vu-RQ; Thu, 17 Oct 2024 17:17:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820960.1234701; Thu, 17 Oct 2024 17:17: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 1t1U7y-0005Vn-Os; Thu, 17 Oct 2024 17:17:34 +0000
Received: by outflank-mailman (input) for mailman id 820960;
 Thu, 17 Oct 2024 17:17: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tze-0008TH-L2
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:58 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7e4aa548-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:08:57 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184662893105.18560154820727;
 Thu, 17 Oct 2024 10:04:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e4aa548-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184665; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=fBe4WLb7EHSW3PylVLEICC3qQRDDiKHL+H0c+uF7mjXUy5PcrmKf+qG1f+lFY1FaTEm+rJdYCMxDPGRJVX/zTJsxy+pLukTSOLLDgnmyVLq5xFzEX6up4Uope85qacc6qakYc9V2YNGofkbqt+JkPuydUFfn31tClzqBDC92t9E=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184665; h=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=S1LW22pFbnxH5JGQ8//MfzLwShQxKtqrPZfaGz84Hgg=; 
	b=Osbbkoh/MPisEEZO+D7hShf3v40EoYGbEGjI6M3dRnpeoX55IQeNvxjd9Jx4ydAjCk71cBZd0stqBiPJ0WZBxqqFDvRnjiNbzWoyF262aBb579DcVinw+ZX1OykfpqBjGwWONu6eZkKHIzC91ulhOJoBpvnSNjip6pLwrN7OD1w=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184665;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=S1LW22pFbnxH5JGQ8//MfzLwShQxKtqrPZfaGz84Hgg=;
	b=is4MgpcB2Qw7lJR60I4biW7RtZlThCKyy2HlGdCtygnA1/Dnl/VtyJOQ5nQ3qnIo
	x0O/4vni9MAKVmUNEGCWt8jMAhmfvQ8W86OUoQKWUDLaINyE/BzXyvbgI95CPlYSDDY
	ip+F2EqrX5YhPQ68F5dW77QqzYrrfLoRphOVPLiY=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 38/44] x86/boot: introduce boot domain
Date: Thu, 17 Oct 2024 13:03:18 -0400
Message-Id: <20241017170325.3842-39-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To begin moving toward allowing the hypervisor to construct more than one
domain at boot, a container is needed for a domain's build information.

Introduce a new header, <xen/asm/bootdomain.h>, that contains the initial
struct boot_domain that encapsulate the build information for a domain.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h | 28 +++++++++++++++++++++++++++
 xen/arch/x86/include/asm/bootinfo.h   |  5 +++++
 xen/arch/x86/setup.c                  | 23 +++++++---------------
 3 files changed, 40 insertions(+), 16 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootdomain.h

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
new file mode 100644
index 000000000000..4285223ac5ab
--- /dev/null
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2024 Apertus Solutions, LLC
+ * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
+ * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
+ */
+
+#ifndef __XEN_X86_BOOTDOMAIN_H__
+#define __XEN_X86_BOOTDOMAIN_H__
+
+struct boot_module;
+
+struct boot_domain {
+    struct boot_module *kernel;
+    struct boot_module *ramdisk;
+};
+
+#endif
+
+/*
+ * 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/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index b65b55c0a2c2..476f71a7633b 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -9,10 +9,14 @@
 #define __XEN_X86_BOOTINFO_H__
 
 #include <xen/types.h>
+#include <asm/bootdomain.h>
 
 /* Max number of boot modules a bootloader can provide in addition to Xen */
 #define MAX_NR_BOOTMODS 63
 
+/* Max number of boot domains that Xen can construct */
+#define MAX_NR_BOOTDOMS 1
+
 /* Boot module binary type / purpose */
 enum bootmod_type {
     BOOTMOD_UNKNOWN,
@@ -63,6 +67,7 @@ struct boot_info {
 
     unsigned int nr_modules;
     struct boot_module mods[MAX_NR_BOOTMODS + 1];
+    struct boot_domain domains[MAX_NR_BOOTDOMS];
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index ae027667eb82..ccb5052e18be 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -956,20 +956,10 @@ static struct domain *__init create_dom0(struct boot_info *bi)
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
-    unsigned int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
-    struct boot_module *image, *initrd;
+    struct boot_domain *bd = &bi->domains[0];
     struct domain *d;
     domid_t domid;
 
-    /* Map boot_module to mb1 module for dom0 */
-    image = &bi->mods[0];
-
-    /* Map boot_module to mb1 module for initrd */
-    if ( mod_idx < 0 )
-        initrd = NULL;
-    else
-        initrd = &bi->mods[mod_idx];
-
     if ( opt_dom0_pvh )
     {
         dom0_cfg.flags |= (XEN_DOMCTL_CDF_hvm |
@@ -995,11 +985,10 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->cmdline || bi->kextra )
+    if ( bd->kernel->cmdline || bi->kextra )
     {
-        if ( image->cmdline )
-            safe_strcpy(cmdline,
-                        cmdline_cook(__va(image->cmdline),
+        if ( bd->kernel->cmdline )
+            safe_strcpy(cmdline, cmdline_cook(__va(bd->kernel->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
@@ -1023,7 +1012,7 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         }
     }
 
-    if ( construct_dom0(d, image, initrd, cmdline) != 0 )
+    if ( construct_dom0(d, bd->kernel, bd->ramdisk, cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
@@ -1203,6 +1192,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
     bi->mods[0].flags = BOOTMOD_FLAG_X86_CONSUMED;
+    bi->domains[0].kernel = &bi->mods[0];
 
     if ( pvh_boot )
     {
@@ -2086,6 +2076,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
         bi->mods[initrdidx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+        bi->domains[0].ramdisk = &bi->mods[initrdidx];
         if ( first_boot_module_index(bi, BOOTMOD_UNKNOWN) < MAX_NR_BOOTMODS )
             printk(XENLOG_WARNING
                    "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:18:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:18:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820968.1234711 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U8O-0006Ec-2e; Thu, 17 Oct 2024 17:18:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820968.1234711; Thu, 17 Oct 2024 17: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 1t1U8O-0006ET-09; Thu, 17 Oct 2024 17:18:00 +0000
Received: by outflank-mailman (input) for mailman id 820968;
 Thu, 17 Oct 2024 17:17: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Txe-0008TH-Dk
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:06:54 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3453d31c-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:06:53 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184644453447.45974491621405;
 Thu, 17 Oct 2024 10:04:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3453d31c-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184646; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=n+mu8ezXWcs5uab9RtWpeEcNuIZz3J4tj/l91FTvYbwJ5O3gPGdos+RdqiEBiO4+AAz5Um26RWduIIRTMlGlzxSMqd/H+6HEfGUgM9pGc5FpxxHQbtdy70IF6LRi/FtOLcKyCuj3lAQPtTNT3jQp5/eJLJ5bHvu80OLijnnQYWA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184646; h=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=INdU8Vy7H1JFe+GjwDiltbnyksHVP3i84VMPvIn3WAY=; 
	b=IM5m2bZpAHgXSJckzMrAzCyhZWgH94E41bX95fRmC1Nh/rFlgOkfiFKqMhbNMYmTayRi6tYLsTxx6F92p5lrHYyrqN2foBzpUrx70z8xUJyAG9IYG50HoxEaxOxo4NZ3b50zaRMCVk+07NCPvEyFg2QvweEoZ5jUNwOxen9KvuM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184646;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=INdU8Vy7H1JFe+GjwDiltbnyksHVP3i84VMPvIn3WAY=;
	b=QkiSudRVf/AxMqRDYQidDSOMYr8nhOeZb8TFC7qKG464V2iRvWqCaW/XQKvPGnyz
	PJKp78zHMrtgPjIfktdSC9X5jy/ZGptWpLFV6094lX+sA4Uh89W+wUbC2MAlu8oLnzJ
	4gLy8aB2swQ/A8SUN+vBw4kT+jqcACMg7aeIRT9s=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 23/44] x86/boot: remove module_map usage from xsm policy loading
Date: Thu, 17 Oct 2024 13:03:03 -0400
Message-Id: <20241017170325.3842-24-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- adjust comment to coding style
---
 xen/arch/x86/setup.c  | 2 +-
 xen/include/xsm/xsm.h | 9 +++------
 xen/xsm/xsm_core.c    | 6 ++----
 xen/xsm/xsm_policy.c  | 9 ++-------
 4 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e1763d7e6548..91110ba96f73 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1863,7 +1863,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
                                   RANGESETF_prettyprint_hex);
 
-    xsm_multiboot_init(module_map, bi);
+    xsm_multiboot_init(bi);
 
     /*
      * IOMMU-related ACPI table parsing may require some of the system domains
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index f155d10e718c..791936e5285b 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -781,11 +781,9 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 #endif /* XSM_NO_WRAPPERS */
 
 #ifdef CONFIG_MULTIBOOT
-int xsm_multiboot_init(
-    unsigned long *module_map, struct boot_info *bi);
+int xsm_multiboot_init(struct boot_info *bi);
 int xsm_multiboot_policy_init(
-    unsigned long *module_map, struct boot_info *bi,
-    void **policy_buffer, size_t *policy_size);
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size);
 #endif
 
 #ifdef CONFIG_HAS_DEVICE_TREE
@@ -831,8 +829,7 @@ static const inline struct xsm_ops *silo_init(void)
 #include <xsm/dummy.h>
 
 #ifdef CONFIG_MULTIBOOT
-static inline int xsm_multiboot_init (
-    unsigned long *module_map, struct boot_info *bi)
+static inline int xsm_multiboot_init(struct boot_info *bi)
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index 6f034f70428d..50b665759aad 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -140,8 +140,7 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)
 }
 
 #ifdef CONFIG_MULTIBOOT
-int __init xsm_multiboot_init(
-    unsigned long *module_map, struct boot_info *bi)
+int __init xsm_multiboot_init(struct boot_info *bi)
 {
     int ret = 0;
     void *policy_buffer = NULL;
@@ -151,8 +150,7 @@ int __init xsm_multiboot_init(
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, bi, &policy_buffer,
-                                        &policy_size);
+        ret = xsm_multiboot_policy_init(bi, &policy_buffer, &policy_size);
         if ( ret )
         {
             bootstrap_map_bm(NULL);
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 921bb254b9d1..453c81df4a2d 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -32,18 +32,14 @@
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(
-    unsigned long *module_map, struct boot_info *bi,
-    void **policy_buffer, size_t *policy_size)
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size)
 {
     int i;
     int rc = 0;
     u32 *_policy_start;
     unsigned long _policy_len;
 
-    /*
-     * Try all modules and see whichever could be the binary policy.
-     * Adjust module_map for the module that is the binary policy.
-     */
+    /* Try all modules and see whichever could be the binary policy. */
     for ( i = bi->nr_modules-1; i >= 1; i-- )
     {
         if ( bi->mods[i].type != BOOTMOD_UNKNOWN )
@@ -60,7 +56,6 @@ int __init xsm_multiboot_policy_init(
             printk("Policy len %#lx, start at %p.\n",
                    _policy_len,_policy_start);
 
-            __clear_bit(i, module_map);
             bi->mods[i].type = BOOTMOD_XSM_POLICY;
             break;
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820975.1234722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9L-000744-Be; Thu, 17 Oct 2024 17:18:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820975.1234722; Thu, 17 Oct 2024 17: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 1t1U9L-00073x-8j; Thu, 17 Oct 2024 17:18:59 +0000
Received: by outflank-mailman (input) for mailman id 820975;
 Thu, 17 Oct 2024 17:18: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TyO-00014B-9e
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:07:40 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4f0770c6-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:07:38 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184650633546.6576643682486;
 Thu, 17 Oct 2024 10:04:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f0770c6-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184653; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=dfCM84MZcmAEPtFX2MhQRtWyFJmLgrRmDcsXJW7/voj/A8DRPp9Jr7bH5fJI1n2JFiKvk7SABUVFF5nPpQ/ud7Gus5mQvzU5Eplt2TI8FAhcEphOHWb8wGTAx0Vtw8JpWXLrugCxcPjgatw5yv+f0dJUWS4VSCHiWv8EA8i3uzA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184653; h=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=5pWxQAdhYkQ5A/U/o5fJjyYZh8d6vSIlQX+nrYdkAwQ=; 
	b=BCGY6vLiLdLQldxTLDRyFmUUkcwXutAgzSsstAlv7rguLd4UAv/99whuY8LtUxiUcZFCOh65vKYNnKkYFXp0KgW+0+w5SPw868pec30nmedDuRxi39awWVK7yYxrVU5gZ8p9Izz5kESnH94Y+hoRTF1vaQdKtCPXGwub6HtyYTw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184653;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=5pWxQAdhYkQ5A/U/o5fJjyYZh8d6vSIlQX+nrYdkAwQ=;
	b=JgKwDM9SC3x8mlCYgwlqEfMC5cbLdkCtwVyGT20FtHidBVMkHTc1Fowme5/FIsIk
	6lTWhRRaeMMM9SpgkuLVdSBxfVrokP+x6+2O6g19HHrHjWqEtUQIfRfEk/0L6KP9bAi
	Hye9m7NzKfzdndWb/N3UqjjgzqhVKeNblTsAZQN8=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 28/44] x86/boot: add cmdline to struct boot_module
Date: Thu, 17 Oct 2024 13:03:08 -0400
Message-Id: <20241017170325.3842-29-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a char pointer field, cmdline, to struct boot_module to hold the address
pointed to by the string field of struct mod. This removes the need to use the
early_mod field to get to the dom0 kernel command line.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- changed boot_module element cmdline to paddr_t
---
 xen/arch/x86/include/asm/bootinfo.h | 2 ++
 xen/arch/x86/setup.c                | 9 ++++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 8dcda42b3400..24c2f37c7b11 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -46,6 +46,8 @@ struct boot_module {
 #define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
 #define BOOTMOD_FLAG_X86_CONSUMED      (1U << 1)
 
+    paddr_t cmdline;
+
     paddr_t start;
     size_t size;
 };
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 2574d2f1fdb4..e6f1208d5807 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -312,6 +312,8 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     {
         bi->mods[i].mod = &mods[i];
 
+        bi->mods[i].cmdline = (paddr_t)mods[i].string;
+
         bi->mods[i].start = (paddr_t)mods[i].mod_start;
         bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
     }
@@ -999,10 +1001,11 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->mod->string || bi->kextra )
+    if ( image->cmdline || bi->kextra )
     {
-        if ( image->mod->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
+        if ( image->cmdline )
+            safe_strcpy(cmdline,
+                        cmdline_cook(__va(image->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820978.1234732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9W-0007R6-Mv; Thu, 17 Oct 2024 17:19:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820978.1234732; Thu, 17 Oct 2024 17: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 1t1U9W-0007Qx-Je; Thu, 17 Oct 2024 17:19:10 +0000
Received: by outflank-mailman (input) for mailman id 820978;
 Thu, 17 Oct 2024 17:19: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tzm-0008TH-Lk
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:09:06 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 823c5b74-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:09:04 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 17291846641131020.5415294818473;
 Thu, 17 Oct 2024 10:04:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 823c5b74-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184666; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=G9sG10XUydhECPLFpPpP4Gj5/KgVJVQcXfRjaOC5oWlrL8zFzWaAKfK73gv8k9j2jB3VDy+Nu9C2t6YdRKkUX0h5zMc7s+Ytqgp/7KOQjjjW+XAVR2unke/Z4+ucXODc71ln7P+KH8v/02qJNBj7HtvFh8Xc1SAuya0TqqBhcX4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184666; h=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=BJ5VYIncE7+0Abn8b+L/cjX/uv1rXkaBhM0DRTxUuNQ=; 
	b=OEDj4ZGTx7P0jgg7gqEkpX71lswsW2r7WLNGdghPKfLb+dwez9x0cc5YaEUnA8it8pjzUdylnM+UzdsSL/dlURZB1BoF4cjRfOvzuUtnOJPmz46LCgaeNVBjRlx3BMJuGroGj7pUNuyEpN9pKindfkcMydSUbNHs48Phhw7WM3k=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184666;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=BJ5VYIncE7+0Abn8b+L/cjX/uv1rXkaBhM0DRTxUuNQ=;
	b=IXRNGp/QEirmwMm1/AiJDtxtQJ802FfZ9h8qYsp9jINm9o7ywTzn36Mg3zvorEXe
	0YnSOm1w+xfCCh9bf1Pa1YtAc5TDnW8KbXRa2ztLVfUTBeNGZ/r2hlZR+qdfxPtrmLb
	WikeVFtcw3/ErWtTF8l5Jd/a66LwvC+LTCoM87sw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 39/44] x86/boot: introduce domid field to struct boot_domain
Date: Thu, 17 Oct 2024 13:03:19 -0400
Message-Id: <20241017170325.3842-40-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a domid field to struct boot_domain to hold the assigned domain id for the
domain. During initialization, ensure all instances of struct boot_domain have
the invalid domid to ensure that the domid must be set either by convention or
configuration.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/include/asm/bootdomain.h |  2 ++
 xen/arch/x86/setup.c                  | 12 +++++++-----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index 4285223ac5ab..d6264d554dba 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -11,6 +11,8 @@
 struct boot_module;
 
 struct boot_domain {
+    domid_t domid;
+
     struct boot_module *kernel;
     struct boot_module *ramdisk;
 };
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index ccb5052e18be..e74526e20b5b 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -318,6 +318,9 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     bi->mods[bi->nr_modules].type = BOOTMOD_XEN;
     bi->mods[bi->nr_modules].flags = BOOTMOD_FLAG_X86_CONSUMED;
 
+    for ( i = 0; i < MAX_NR_BOOTDOMS; i++ )
+        bi->domains[i].domid = DOMID_INVALID;
+
     return bi;
 }
 
@@ -958,7 +961,6 @@ static struct domain *__init create_dom0(struct boot_info *bi)
     };
     struct boot_domain *bd = &bi->domains[0];
     struct domain *d;
-    domid_t domid;
 
     if ( opt_dom0_pvh )
     {
@@ -974,15 +976,15 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
 
     /* Create initial domain.  Not d0 for pvshim. */
-    domid = get_initial_domain_id();
-    d = domain_create(domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
+    bd->domid = get_initial_domain_id();
+    d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
     if ( IS_ERR(d) )
-        panic("Error creating d%u: %ld\n", domid, PTR_ERR(d));
+        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d));
 
     init_dom0_cpuid_policy(d);
 
     if ( alloc_dom0_vcpu0(d) == NULL )
-        panic("Error creating d%uv0\n", domid);
+        panic("Error creating d%uv0\n", bd->domid);
 
     /* Grab the DOM0 command line. */
     if ( bd->kernel->cmdline || bi->kextra )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820979.1234743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9X-0007hn-Vn; Thu, 17 Oct 2024 17:19:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820979.1234743; Thu, 17 Oct 2024 17:19: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 1t1U9X-0007hc-Qn; Thu, 17 Oct 2024 17:19:11 +0000
Received: by outflank-mailman (input) for mailman id 820979;
 Thu, 17 Oct 2024 17:19: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=c7jd=RN=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t1U9W-0007JO-0e
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:19:10 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20605.outbound.protection.outlook.com
 [2a01:111:f403:2405::605])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e56ee804-8cab-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:19:00 +0200 (CEST)
Received: from CH2PR11CA0029.namprd11.prod.outlook.com (2603:10b6:610:54::39)
 by SN7PR12MB7250.namprd12.prod.outlook.com (2603:10b6:806:2aa::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.17; Thu, 17 Oct
 2024 17:18:56 +0000
Received: from CH1PEPF0000AD7D.namprd04.prod.outlook.com
 (2603:10b6:610:54:cafe::e4) by CH2PR11CA0029.outlook.office365.com
 (2603:10b6:610:54::39) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18 via Frontend
 Transport; Thu, 17 Oct 2024 17:18:56 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000AD7D.mail.protection.outlook.com (10.167.244.86) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 17:18: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.39; Thu, 17 Oct
 2024 12:18:55 -0500
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.39; Thu, 17 Oct
 2024 12:18:55 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Thu, 17 Oct 2024 12:18:54 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e56ee804-8cab-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=zOaNYAC85CZvKTSZKIC8qNuNMfIObJMdmZXD4ODwyHXRpnurc0evhIDwCP9nXV8SzWFfa51P10bOE05r7oQmlCZsZViHj8fm9eVEMty1oYwE2CfH2vKGb8YJ9tJNfMulX5R1DPKiJD7l5wXr3XoDGgtpDqNrFYQkoKURPfRLruFBVb32M/7JqNrjpr2eCLP1XMh3r5RVZOtO45mSIwQrZgyz74Nw+mJB2j05h1wrzO/NyoAjwhS8Pbw1ZrUdh3HY645DNW/5/STo/aUoV/78RGEplNZ6mmoYnuc9gNvIgYjqQ5cJXC3we5JtMNxkYjMsnhikFemS6uvEqCYgJJFVgg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jNZ4IhvfY96hseFUkdXAkYxaQJura+eXssH8aXv6I8Y=;
 b=heuCO6PEY+FUe3TwrQCVB+c4PEuRd8lD1srOIijSuSg/8f0iLXi8Z7iDOyskMsDH5R3s9DNguGkETZDnpGmcI1c9CDUPa2vFZC4Qfp3xC8K3UaRbIfSO8Z2CTW5k0TVxwNxbhWtq9uQ2N4tOmIEVniAgRClZ7DylsdU7bQE4O67l+3zRebdW/DF5nAPSUgDMDYXRP4xtqXhGCV5l0+Dde3H61lIEt0pFi/6zuoSqQd5cUJeW9uop7nwY0V4dnrdgqk9mYbQvfw6E7RqNii/QazUFTOUEuiwMqgwzB11iA1GGfMdNfByvDWRKHsFoGDlP8Vh001plow/2hglnGc1jEw==
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=jNZ4IhvfY96hseFUkdXAkYxaQJura+eXssH8aXv6I8Y=;
 b=mUCpNrIsG+HQGI0h73KBuDK8S+gzaN1Vf/a4CXgpmHKLn3VkN77xkDw1bzCOFuxeNT/ppqKD3TAplZZS/DV1tedpW3iN1MWAHpzohDAV0FeGIXi8T06bvnh0UYGIlKskQRD07H0Ae8EWbiaZCm/PddPBuzruRgOlEw4qksMgLZI=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 0/3] automation: add x86_64 test (linux argo)
Date: Thu, 17 Oct 2024 10:18:25 -0700
Message-ID: <cover.1729183051.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7D:EE_|SN7PR12MB7250:EE_
X-MS-Office365-Filtering-Correlation-Id: 57a73a92-bec0-4d24-62db-08dceecfc7ee
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?99dnqk8PC3cQtIIu3AxKFRHhBZb2hfJSlVxeEsdQis/sCKHD6iFerVnGRRdz?=
 =?us-ascii?Q?ZBR7rUzfDCxu7EGiw7j7iXvq5VZpvTW+YWk6PoYMREYWg1Yv7iN5Ij+EL0Tm?=
 =?us-ascii?Q?DeAaN/FEZQHKkgth2n5A/DRNp5kEVEvvXjTEu8ibYceMmgJYoWsSVS2XJ8dP?=
 =?us-ascii?Q?jCPWl4f5yESY3BeWi4p/Is6hhIQhHOL3BYuZ6ujXM7eU7s1AYP8ru/UUYy2f?=
 =?us-ascii?Q?nYdM9wssSb4xjWkmQjsbH9V20SeIxnJgILHMCYSN4QCxPLf5HJoAeen4trdw?=
 =?us-ascii?Q?Q/T8rkirZjWbIXukiiw9bylKyL4Ys+H1WHWdKzvrclSyyrkdJLTNebul7kIg?=
 =?us-ascii?Q?EUFQPhgMT0dRvW41I8aJrZGYkWjNPZiYqNWieZ3LoA1RRjlHiAhClez1Kgc1?=
 =?us-ascii?Q?9i7Szy1p9EO+TCLs0wdeewjpgZy1Ng6djoK0S428pkKZPL0l2+4a1gGSNNV4?=
 =?us-ascii?Q?vgOEORJ0j0zES0rwUCmEvTR23s92vtEp9XWz2iz5GFnkniHB+JlbOgQVs1jl?=
 =?us-ascii?Q?Di3nVMeMAd95u47BLZcl9HxTclDJPgaCmPFVjRDwtpXl+/Vy9glk/S0xma7w?=
 =?us-ascii?Q?n3sl/aWiBCfEKrkEDJvsWyapyDaiL+ebhsMmLMhFxIjOS1Qdb7DCriwBvuqY?=
 =?us-ascii?Q?FPS3P4BPfHfB/niPe3Rno0NDgomYJniPpN8LfHRsP+rANsUHkju5UuPMqHFj?=
 =?us-ascii?Q?E21jesmojI6vAke4MLbIB1mFNjmFB3CcH70mIX/GHCHvFZdYeUXDSthejBxi?=
 =?us-ascii?Q?tA6Bys21J2b2SxFh68721m83n6plZBwn8teBFWRSWRr3rktY4/78N/uLeuPb?=
 =?us-ascii?Q?/PjogRremM7hCe8BsWmOZ6ogbszFoT/yILrEToJQXXIf59BBAaRgsMQBar7D?=
 =?us-ascii?Q?RBOsxRyKGirNSkeeayoF2KZIYLQZtPCw5Vx/Mx3pHWfjIxK71X7YUxcqq84n?=
 =?us-ascii?Q?U6DEoILlp6VwsfsFW3+wR/4nmmC9OzyD63333f20aG5Fl11JuchQ7paKFQD6?=
 =?us-ascii?Q?LwnOomQfVhU/7wBQeW/qVY2aFHRuJYef5G+MSw4R4j9yzHzAJ8+bjfG3V4Ki?=
 =?us-ascii?Q?p4pQ5p6plbaR8fOJUrByQrjiNp4a9B04twAKNex2+zeE70MhyrXGfBvcTNZ7?=
 =?us-ascii?Q?ByLHSTyE+6Pue0Z+b1hCy1gtCiDc5YtJ2IOXtVVuLJIlQKTtg7uSG69Tp/yF?=
 =?us-ascii?Q?i1rb6Dmehgss64vGTJi/lMdoOYcWjebcSlN65DqopKK3Oc7W/FkozDZdJzu8?=
 =?us-ascii?Q?jvsg8C3OfI9iwVGZQI5g9f+dBtEx5HmvhB+pFIV2DHdxoBFoGm+hrFJBXWgi?=
 =?us-ascii?Q?6bNIxUdr4of492HHTkOp2so7pUn6re/YN+3yqinP0/8neVWWIeOA3iJlN/rE?=
 =?us-ascii?Q?LQWcf6++g3a3qPvp6NLQGEDNcWcn+4hihfPAlfkJ8HEtYkBCZw=3D=3D?=
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:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 17:18:55.8760
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 57a73a92-bec0-4d24-62db-08dceecfc7ee
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:
	CH1PEPF0000AD7D.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7250

From: Victor Lira <victorm.lira@amd.com>

Add x86_64 hardware test that creates a Xen Argo communication
connection between two PVH domains.

To accomplish this, add new build artifacts for Linux and Argo, and
update the xilinx x86_64 test script.

Victor Lira (3):
  automation: add linux 6.6.56 artifact
  automation: add linux argo test artifacts
  automation: add x86_64 test (linux argo)

 automation/gitlab-ci/build.yaml               | 34 +++++++
 automation/gitlab-ci/test.yaml                | 10 ++
 .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 ++++++++++-----
 .../tests-artifacts/argo/6.6.56.dockerfile    | 95 +++++++++++++++++++
 .../tests-artifacts/kernel/6.6.56.dockerfile  | 54 +++++++++++
 5 files changed, 244 insertions(+), 25 deletions(-)
 create mode 100644 automation/tests-artifacts/argo/6.6.56.dockerfile
 create mode 100644 automation/tests-artifacts/kernel/6.6.56.dockerfile

--
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820980.1234747 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9Y-0007kd-9s; Thu, 17 Oct 2024 17:19:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820980.1234747; Thu, 17 Oct 2024 17:19: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 1t1U9Y-0007jU-2k; Thu, 17 Oct 2024 17:19:12 +0000
Received: by outflank-mailman (input) for mailman id 820980;
 Thu, 17 Oct 2024 17:19: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=c7jd=RN=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t1U9W-0007JO-7Y
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:19:10 +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 e890d483-8cab-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:19:05 +0200 (CEST)
Received: from MW4PR03CA0038.namprd03.prod.outlook.com (2603:10b6:303:8e::13)
 by MN2PR12MB4192.namprd12.prod.outlook.com (2603:10b6:208:1d5::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.20; Thu, 17 Oct
 2024 17:19:00 +0000
Received: from SJ1PEPF000023D0.namprd02.prod.outlook.com
 (2603:10b6:303:8e:cafe::46) by MW4PR03CA0038.outlook.office365.com
 (2603:10b6:303:8e::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18 via Frontend
 Transport; Thu, 17 Oct 2024 17:18:59 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF000023D0.mail.protection.outlook.com (10.167.244.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 17:18:59 +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.39; Thu, 17 Oct
 2024 12:18:58 -0500
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.39; Thu, 17 Oct
 2024 12:18:58 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Thu, 17 Oct 2024 12:18:58 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e890d483-8cab-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=jdmJL0/wYW1Y56oRBoNi7c3jubLHR8UHUw0P3j99GAxvlEGKGEGlPYDWsnP9+K7HmD+s9vGdtA4Nj3w8E9jIUtSqY1ji4fYKMrQ7EzoYsk0XRm6OatwjCgzfd9JjsZrh+yn9OI/IfmGKkJAf4+tNfG8nGp+VZOXEIsiL1tu17aw5/536k20XVwWisXEBAdRCL5T5sIr1lQa+2JQVmqVNEqOWziyXnI4xCBEQlPhkuCAVYRzbNkLTWt/JYBMkOQr0Z2xdh78ei+MmXb15SKI0VBBi2pLCZ7hQi9BhEJErV86YaKXyjLDVhoDirQd4m07hMqyiRyfKlLVXk7AIV0zqCQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=mxvXkgc+im7eck3YggvnFHTjF0jIAu8u4EX91lFkEiA=;
 b=W7/3S+PQbihLOP5h332+G/t93c6psSGkvnS4HWe8+FbQhLDWV+ePohIn2XVsivMhkdwmHEfDNA3wN7JXU2H91T3UnOIdx/1y2Kr9Fjv22S+14+OKbUZ6YqGOhZH1ZPvBVa2F2UQBQ2kvN3Pk9oPTU21W797B4Qd5SRHPhLcT9roPF+8aXW82wVvkfTKZdbbmUVw3Dkf28o9u+hF4dISPKufpNg0X2xRioVhep/zZKzuQbUzlslwKMJSV68o1HikPdB9zhIS2AvwXwom0ROeKgGPCJXpYCvfbOrNGjqUs3shsuGuuaMe4calN7DZEgvWACoHQ6fx9/GtooQfSXoZ49Q==
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=mxvXkgc+im7eck3YggvnFHTjF0jIAu8u4EX91lFkEiA=;
 b=wTBtOWu5cR0FgFnGlzIIyeRVY5jMpRlkwmMbY+suaQzoJ2JkyEjwu+2N3NlQ/cK5/9ypwOpPP8dJDKC5jdqy0cQJbOGU/lKaPLfo5A89zUAbrEmQWwdhr8/yW/SS4/Yx3JByB2Zk7QESXRCP9HougaBtzezGrtyQtDW1gucvtbo=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 1/3] automation: add linux 6.6.56 artifact
Date: Thu, 17 Oct 2024 10:18:26 -0700
Message-ID: <15562cef1631443695d5ddab64c0737a327eb849.1729183051.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1729183051.git.victorm.lira@amd.com>
References: <cover.1729183051.git.victorm.lira@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023D0:EE_|MN2PR12MB4192:EE_
X-MS-Office365-Filtering-Correlation-Id: 9df8027b-6815-4369-72ba-08dceecfca40
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?m3Kndkitza9RkcqlsSuLk0m0boDRqal2GrfSFnKsIP642c3RKc9uKUFkAWdl?=
 =?us-ascii?Q?HZN6gt9MU6T9nylS9zdFWbOJbCdC2wBX0nbc351MSaRA5arV8H0pJgS9WYvW?=
 =?us-ascii?Q?BZ9btut5iMRsMzcalFyYq04uP81YTIr3ClK3s4TR+/GjYZPhLBViNkSAhovQ?=
 =?us-ascii?Q?qKKMPsqcf2nUinMt8NsxaKYy/uuWYHjN0yrmxUb802wUaxTEkt4VCQLwkuH4?=
 =?us-ascii?Q?D3UhYoYwEe9tYIZiTTW5pKbBH3PG/I9fZxyUlyH+2kTJTwRgy4WgRn/9NdYO?=
 =?us-ascii?Q?hdtLIHrNphS8AyhMWfcxQJpFuifnx8lW5yUMAgcLW5et/P8Cc8tX4cRm4yHD?=
 =?us-ascii?Q?ynGBFEQ4mVummB1lTjGq9hO7gmMuin85cSjDHsgQP9PQ3+MNAH1qHGCPudGf?=
 =?us-ascii?Q?iqjWWhbiMSlZCx5vZ9YO+7sHQVIzbcDW1B/zJostuq3NggcUihUyKdA7bANi?=
 =?us-ascii?Q?i0XHrdWs34sSN+QpAz5mFkBRcHcS2wcevl5GHX3n7zV8EPnxLusqg7lwEkJw?=
 =?us-ascii?Q?1LJk6g0t+Kgb8VBaQ3UMG/LL00XcJWtp3ZCe1T5qDm3pdw2Mse5mML6WF+QW?=
 =?us-ascii?Q?Aft4TnzV80C79ju4axMdPE4zY+Ev+o7NPRmH5xcP8jxoNawe3E9t6cC5K7vb?=
 =?us-ascii?Q?1t5oLcWeDMDvcSKHibgVKFnpgOsrw9QpnC2z/lmpYczmzc5JDD8S5Q021XzH?=
 =?us-ascii?Q?G67lbSYYAThvPazYYbOSrZhcy4sUgy3rYftXmyJQry1GbFYcmfDswf6shwzM?=
 =?us-ascii?Q?+u/UD+TvdvdVvJUHjOI5VqwoQwToI5sa9ke3hMCM6GB7cXRlQs08gWvkLdys?=
 =?us-ascii?Q?JU+cwvyKaggmxkaFX39JSVI4M3dewxWY1OrJ4M22BFYwzsGxGrrpT+XYG4sN?=
 =?us-ascii?Q?rZl1sDgGlHtpPU7n0g2zDc8eiLTcgcL6wAdfajpRMAyo4juy8ttQNfF5yRCo?=
 =?us-ascii?Q?eQSnd0Ex5X8Nguxe6upLGkZMCgwg6bprF+5LJVMxHIbx3cLEQvBbzbN1KYh8?=
 =?us-ascii?Q?FI8GnpXbMxHDX/G7cO84Z/7r9VrqzCV5TPUYJMSHQtVCCfYtZ2n0KZIk5F6j?=
 =?us-ascii?Q?AkEA2efUaNysYuXys3K+HOciEUuVEBqsyycEHwjr7y9tJoztK5u4hb+sSiEE?=
 =?us-ascii?Q?sytqggU3UtOpxhszeAulNFzPOl2xQe3+qSE8Wply1sKMszNUKchDVRlS5lI4?=
 =?us-ascii?Q?w4EEXsauwGWHpn7zc9Zrsp8ITnKDyIku8H9LoFDx8HXTccoLIBBb503RDhHW?=
 =?us-ascii?Q?KBlvGUSkMe2kGw0JyHBp7cqhBZzh+1qWlX5JMwJpeT4hwDZlDUz08q3JdLri?=
 =?us-ascii?Q?RSTbhMMHBsjJgD8U97f++9wuMQXbFZXf3WqBmGJ7NpjRapIpOsMdF9TidnQr?=
 =?us-ascii?Q?HJDGClY=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 17:18:59.7067
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9df8027b-6815-4369-72ba-08dceecfca40
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:
	SJ1PEPF000023D0.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4192

From: Victor Lira <victorm.lira@amd.com>

Add dockerfile for building container image that holds linux 6.6.56
bzImage for x86_64, using the same build process as the current 6.1.19
image

Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 .../tests-artifacts/kernel/6.6.56.dockerfile  | 54 +++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 automation/tests-artifacts/kernel/6.6.56.dockerfile

diff --git a/automation/tests-artifacts/kernel/6.6.56.dockerfile b/automation/tests-artifacts/kernel/6.6.56.dockerfile
new file mode 100644
index 0000000000..5b6f2fe527
--- /dev/null
+++ b/automation/tests-artifacts/kernel/6.6.56.dockerfile
@@ -0,0 +1,54 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 debian:bookworm
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV LINUX_VERSION=6.6.56
+ENV USER root
+
+RUN mkdir /build
+WORKDIR /build
+
+# build depends
+RUN apt-get update && \
+    apt-get --quiet --yes install \
+        build-essential \
+        libssl-dev \
+        bc \
+        curl \
+        flex \
+        bison \
+        libelf-dev \
+        && \
+    apt-get autoremove -y && \
+    apt-get clean && \
+    rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/* && \
+    \
+    # Build the kernel
+    curl -fsSLO https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"$LINUX_VERSION".tar.xz && \
+    tar xvJf linux-"$LINUX_VERSION".tar.xz && \
+    cd linux-"$LINUX_VERSION" && \
+    make defconfig && \
+    make xen.config && \
+    scripts/config --enable BRIDGE && \
+    scripts/config --enable IGC && \
+    scripts/config --enable TUN && \
+    cp .config .config.orig && \
+    cat .config.orig | grep XEN | grep =m |sed 's/=m/=y/g' >> .config && \
+    make -j$(nproc) bzImage && \
+    cp arch/x86/boot/bzImage / && \
+    cd /build && \
+    rm -rf linux-"$LINUX_VERSION"* && \
+    \
+    # Clean up
+    apt-get --yes purge \
+        build-essential \
+        libssl-dev \
+        bc \
+        curl \
+        flex \
+        bison \
+        libelf-dev \
+        && \
+    apt-get autoremove -y
--
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820988.1234762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9d-0008Ts-KJ; Thu, 17 Oct 2024 17:19:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820988.1234762; Thu, 17 Oct 2024 17:19: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 1t1U9d-0008T3-Fn; Thu, 17 Oct 2024 17:19:17 +0000
Received: by outflank-mailman (input) for mailman id 820988;
 Thu, 17 Oct 2024 17:19: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=c7jd=RN=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t1U9c-0007JO-Ki
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:19:16 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on2062e.outbound.protection.outlook.com
 [2a01:111:f403:2414::62e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id eeea65ec-8cab-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:19:14 +0200 (CEST)
Received: from CH0PR04CA0087.namprd04.prod.outlook.com (2603:10b6:610:74::32)
 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.8069.19; Thu, 17 Oct
 2024 17:19:09 +0000
Received: from CH1PEPF0000AD83.namprd04.prod.outlook.com
 (2603:10b6:610:74:cafe::8d) by CH0PR04CA0087.outlook.office365.com
 (2603:10b6:610:74::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.19 via Frontend
 Transport; Thu, 17 Oct 2024 17:19:09 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000AD83.mail.protection.outlook.com (10.167.244.85) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 17:19:09 +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.39; Thu, 17 Oct
 2024 12:19:06 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Thu, 17 Oct 2024 12:19:06 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eeea65ec-8cab-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RSQwTVDn3dJDpvs1vHDnvGmFXyMMIaqkl/ljZMUhyUAVjKoEG3ak2QUg9zmsza2Eo6aJki8Pqd9Y07+Gemg+Wr84rRCItmciCQJZ+LIHvveg53xocSW0gYU5U/RmxqVatBKNr8guJGoOi/WqSD35UEX2zP6ZmaSiOP74d2ummAnjMsCDk5zMYUUYm0I1S1Edow9EK/PZW/t2Lm/VzDvhCFLGR36TY8kHGfKVXWVz8cR1is/MlbHVNOYLu+L4INA7COlvFxJBXfn4pHeGPqKOY5nhQx+A+8T2ZXacTKYC6YyQvavD1nna+uXB6TRQ9ZatdaMDfyo/uQ0J8pzyGIMf6w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=gy3iCM2Pj8XFgiDVlyvkp+6fDd0KZqSJ0q+Uj82o+6g=;
 b=Vrvri066MB3HFwGUKJZHbalJUuygx6jPNjFCi+iOAlz7Yr0Z2AIqvlSxzCT0y35s4I6QRiIXxuq7vXShtdtRAAtbQ12sWXX74deHGieo83JCCU3sJUJMC1RxB84+KT0DciGw9m2fFJiCU4vu/OBFF9BkHN2xC5gD/YCHVvnC53eJ7e3GRO+wwXobz6S4a5Sgwi3GcmrOJ5ZWi6CkdRg58bGe/39EUVDpLrNn9vpr5Icy8J7FKl2X4V59QnnFUbfqTiEd/S0wtmBmX8sYftY8OJ90t9YQUbB3Az5ATe8o+UtEi3HX8Pxb0BxzoMJzSHx2dyluh0y3k+TWxap9tlJagA==
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=gy3iCM2Pj8XFgiDVlyvkp+6fDd0KZqSJ0q+Uj82o+6g=;
 b=YUfZ6jH385NEPZ24RHyCP7+nzntyhsZda3O/DzwC/WLD/QnVx5nVcotb+B+PeH50tEuyCHbaNW7B0jNWV1ATldvmB8Ex3QqcO7UGEd/piE9soh1QVIaic0KcaLfo3yYezFkKY7FxgbAR/0fWP90iomIW/saBSJKSGp+Hcn7DziU=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 3/3] automation: add x86_64 test (linux argo)
Date: Thu, 17 Oct 2024 10:18:28 -0700
Message-ID: <59ac55effa57b2046576b01bd4bc279369735e05.1729183051.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1729183051.git.victorm.lira@amd.com>
References: <cover.1729183051.git.victorm.lira@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD83:EE_|DS0PR12MB7897:EE_
X-MS-Office365-Filtering-Correlation-Id: 8b6129b2-dfa9-4fcd-b2cb-08dceecfd021
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?e2njL6VdiYCxtDQvHgBGTNieKhkt/EIlru23Oo5/+DWQCdaspL7Pae6UVAhI?=
 =?us-ascii?Q?n3Vxe2LjVznj+5Sd1mhnCbbaMgpfDi860WySEsIxthElNVuhvfsUI8PRqrD0?=
 =?us-ascii?Q?nSsTXKHpyaD/pE7/LdMMH44h+USZTNqh5xyBInlxkzgpGGpUNhlq+0X7RmkJ?=
 =?us-ascii?Q?euEXrPGIuhE9wHONFllW7Ko3ocrPP61MYf59I8YrsBexxe7iJW/5UoJECMQU?=
 =?us-ascii?Q?a+h2NV8KPdlswven6lPjrmHV3I16OnowWCbNUztvbuont3x7Zb8ZiEgywXEp?=
 =?us-ascii?Q?NAG8feXk5fInHOPcKHSOKjG1DTRswR89zd7PIP1JzpHY8gUC4A5SZeC6vAAr?=
 =?us-ascii?Q?z1M0wQtGcfSAdZxvwP6tWzePElAs37Lhj2/O59fFyR24wxEhInHu9BaiNQoa?=
 =?us-ascii?Q?yu5s635a3dkvljJd1Swzi76AgQLiYu8p5BB4dg2VOk+kdANQZjvoVDM7FtSJ?=
 =?us-ascii?Q?qkhPkGBFIhIGn4NrlmOFmvdxNkNBYkypzujmDVspjbn2NlXK+CkTM7D/xsR+?=
 =?us-ascii?Q?7PcA2eHFN1oM2x+95c/exN1umCEGDZD+3918JtJGdQfTDNiEMhYgcA4Hmzzb?=
 =?us-ascii?Q?CCpfFU3VjdrC4Eps3bLWvYBhKJAYUPbObyMBayhUpUBhVmpOQubi6uFmAtjK?=
 =?us-ascii?Q?f2TaK7dHYoZQx9PDhIgjGuW5ybzaL3hIQY/kRgZsStNWnBFY14gd1vZ6Ztc8?=
 =?us-ascii?Q?x9DGm6t0rTkht9M8X0RIsbWArkH0S2KCeBiAtlm6hYkG1eH05s4xqDqhIcvA?=
 =?us-ascii?Q?B7B3g5rNnshUJzAAcnTJDP0QOEdTDHYbu/7cLx7KQ5YLIX16Xvo982q/PuYh?=
 =?us-ascii?Q?pgqPPKTLEXJDJZeqqMS0P15cIgEcJ4e0EHwEnDw13DKS8/RMp8HH6v96NnU5?=
 =?us-ascii?Q?CTZO1Bob6ULwQgLEdC72AERYku4hf6XTA1D6sCyAkZG2fHn7zHfnxmIChrzq?=
 =?us-ascii?Q?MbQ5SXW7Hz1uwiVR8YmToFttaayuUYd8qsMMimsVZOGxEHu2skJy9sr+sRxd?=
 =?us-ascii?Q?LWYavTB52ECnP5pUaPM7mF64GLLWe2+OKhLKH61eqfcLuBFUwwjwHFDzejfq?=
 =?us-ascii?Q?zOzRH8k5OUgNufaz+PysrXKNu4OWoHNMPmVYaq3iBZLalTxOZa4T1+J9IaS4?=
 =?us-ascii?Q?C18p9rEFHsNR0L0gvNmIYJL70vhkmFTRE27BEMZH9YySK+5K0ZfCciJZga8v?=
 =?us-ascii?Q?KbyePkhhQ30xGaaYMikhrsWJwXtYK6wPhr3VCRmytZbkvgoREt3dGIIoAe4W?=
 =?us-ascii?Q?jUzPCE1LWwM0cJjX2GtRsH4bUIth0ZVii2mR/2pfGt1hyCXqifb76vIDb1oV?=
 =?us-ascii?Q?mT0gNG16FakIwOopZHrHucOaeyJvBSs3U6tKLWXuqEVGuDTn2XylLYMqhlD5?=
 =?us-ascii?Q?b9nlfak=3D?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 17:19:09.6340
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b6129b2-dfa9-4fcd-b2cb-08dceecfd021
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:
	CH1PEPF0000AD83.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7897

From: Victor Lira <victorm.lira@amd.com>

Add x86_64 hardware test that creates a Xen Argo communication
connection between two PVH domains. In the test, dom0 creates a domU and
listens for messages sent by the domU through Argo.

To accomplish this, add Xen build jobs to export Linux and argo artifacts,
and build Xen with CONFIG_ARGO=y.

Update the xilinx x86_64 test script to support the new test, and add
"sync_console" to command line to avoid an issue with console messages
being lost.

Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 automation/gitlab-ci/build.yaml               | 34 +++++++++
 automation/gitlab-ci/test.yaml                | 10 +++
 .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 +++++++++++++------
 3 files changed, 95 insertions(+), 25 deletions(-)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index c2db69ecf8..827759fb7b 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -326,6 +326,30 @@ kernel-6.1.19-export:
   tags:
     - x86_64

+kernel-6.6.56-export:
+  extends: .test-jobs-artifact-common
+  image: registry.gitlab.com/xen-project/xen/tests-artifacts/kernel:6.6.56
+  script:
+    - mkdir binaries && cp /bzImage binaries/bzImage
+  artifacts:
+    paths:
+      - binaries/bzImage
+  tags:
+    - x86_64
+
+argo-6.6.56-export:
+  extends: .test-jobs-artifact-common
+  image: registry.gitlab.com/xen-project/xen/tests-artifacts/argo:6.6.56
+  script:
+    - mkdir binaries && cp -ar /artifacts/* binaries
+  artifacts:
+    paths:
+      - binaries/xen-argo.ko
+      - binaries/lib/
+      - binaries/argo-exec
+  tags:
+    - x86_64
+
 # Jobs below this line

 # Build jobs needed for tests
@@ -341,6 +365,16 @@ alpine-3.18-gcc-debug:
     CONTAINER: alpine:3.18
     BUILD_QEMU_XEN: y

+alpine-3.18-gcc-debug-argo:
+  extends: .gcc-x86-64-build-debug
+  variables:
+    CONTAINER: alpine:3.18
+    EXTRA_XEN_CONFIG: |
+      CONFIG_EXPERT=y
+      CONFIG_UNSUPPORTED=y
+      CONFIG_ARGO=y
+    BUILD_QEMU_XEN: n
+
 debian-bookworm-gcc-debug:
   extends: .gcc-x86-64-build-debug
   variables:
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index b27c2be174..849860627d 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -192,6 +192,16 @@ xilinx-smoke-dom0-x86_64-gcc-debug:
     - *x86-64-test-needs
     - alpine-3.18-gcc-debug

+xilinx-smoke-dom0-x86_64-gcc-debug-argo:
+  extends: .xilinx-x86_64
+  script:
+    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
+  needs:
+    - alpine-3.18-gcc-debug-argo
+    - kernel-6.6.56-export
+    - alpine-3.18-rootfs-export
+    - argo-6.6.56-export
+
 adl-smoke-x86-64-gcc-debug:
   extends: .adl-x86-64
   script:
diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
index 7027f083ba..f70cfdc155 100755
--- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
+++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
@@ -9,6 +9,8 @@ fatal() {
     exit 1
 }

+WORKDIR="${PWD}"
+
 # Test parameter defaults.
 TEST="$1"
 PASS_MSG="Test passed: ${TEST}"
@@ -24,9 +26,10 @@ kernel = "/boot/vmlinuz"
 ramdisk = "/boot/initrd-domU"
 extra = "root=/dev/ram0 console=hvc0"
 memory = 512
-vif = [ "bridge=xenbr0", ]
-disk = [ ]
 '
+DOMU_CFG_EXTRA=""
+copy_domU_files () { :; }
+copy_dom0_files () { :; }

 # Select test variant.
 if [ "${TEST}" = "ping" ]; then
@@ -39,6 +42,14 @@ done
 echo \"${DOMU_MSG}\"
 "
     DOM0_CMD="
+brctl addbr xenbr0
+brctl addif xenbr0 eth0
+ifconfig eth0 up
+ifconfig xenbr0 up
+ifconfig xenbr0 192.168.0.1
+# get domU console content into test log
+tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
+xl create /etc/xen/domU.cfg
 set +x
 until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
     sleep 1
@@ -46,6 +57,34 @@ done
 set -x
 echo \"${PASS_MSG}\"
 "
+    DOMU_CFG_EXTRA='
+vif = [ "bridge=xenbr0", ]
+disk = [ ]
+'
+elif [ "${TEST}" = "argo" ]
+then
+    PASS_MSG="TEST: Message from DOMU"
+    XEN_CMD_EXTRA="argo=1,mac-permissive=1"
+    DOMU_CMD="
+insmod /root/xen-argo.ko
+until false
+do
+  echo \"${PASS_MSG}\"
+  sleep 1
+done | argo-exec -p 28333 -d 0 -- /bin/echo
+"
+    DOM0_CMD="
+insmod /root/xen-argo.ko
+xl create /etc/xen/domU.cfg
+argo-exec -l -p 28333 -- /bin/echo
+"
+copy_dom0_files ()
+{
+    cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
+    cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
+    cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
+}
+copy_domU_files () { copy_dom0_files; }
 else
     fatal "Unknown test: ${TEST}"
 fi
@@ -54,18 +93,18 @@ fi
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir proc run srv sys
 rm var/run
 echo "#!/bin/sh
-
+set -x
+export LD_LIBRARY_PATH=/usr/local/lib
+PATH=/usr/local/bin:/usr/local/sbin:\$PATH
 ${DOMU_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 sed -i -e 's/^Welcome/domU \0/' etc/issue
+copy_domU_files
 find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
 cd ..
 rm -rf rootfs
@@ -74,37 +113,24 @@ rm -rf rootfs
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir boot
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir boot proc run srv sys
 rm var/run
 cp -ar ../binaries/dist/install/* .
 echo "#!/bin/bash
-
+set -x
 export LD_LIBRARY_PATH=/usr/local/lib
 bash /etc/init.d/xencommons start
-
-brctl addbr xenbr0
-brctl addif xenbr0 eth0
-ifconfig eth0 up
-ifconfig xenbr0 up
-ifconfig xenbr0 192.168.0.1
-
-# get domU console content into test log
-tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
-xl create /etc/xen/domU.cfg
 ${DOM0_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
-echo "${DOMU_CFG}" > etc/xen/domU.cfg
+echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
 echo "rc_verbose=yes" >> etc/rc.conf
 echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
 echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
 mkdir -p var/log/xen/console
 cp ../binaries/bzImage boot/vmlinuz
 cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
+copy_dom0_files
 find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
 cd ..

@@ -116,7 +142,7 @@ cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
 cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
 echo "
 net_default_server=10.0.6.1
-multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE}
+multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
 module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
 module2 (tftp)/${TEST_BOARD}/initrd-dom0
 boot
--
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820991.1234772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9g-0000P8-0S; Thu, 17 Oct 2024 17:19:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 820991.1234772; Thu, 17 Oct 2024 17: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 1t1U9f-0000Ox-Sc; Thu, 17 Oct 2024 17:19:19 +0000
Received: by outflank-mailman (input) for mailman id 820991;
 Thu, 17 Oct 2024 17:19: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TxW-0008TH-Pd
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:06:46 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2fb3dcb7-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:06:45 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184643193190.33025190860144;
 Thu, 17 Oct 2024 10:04:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2fb3dcb7-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184645; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=aZe4itBBnJA2y9TxgpuNou8I7xD39engfcpAbjXrG+C8EqbJ4vl+doeSIXfiKjkQvwbgPuXe+VRACv/us7s/sY1L1GrnaNwweIdHdfJPKNs3SvF8KiR5PGqYoATKgVEonxNhQ1kvPwWNFT/uJuH+gqAdAH5vzNi6QMYMOJlkTYU=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184645; h=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=fMkGfujHPoOjChPMwwzqPao8q0VWxzzsdGo5pHHHDFY=; 
	b=kCNym6KselYtzkaoiRE54OKnmGVijOgHVABlUOxI5KU2yWgieDHQqzMv/jrig45TyTpTTBA/wcJlB+KbpHxCnfrw/r9w5JFW6ne0jD3MB641n7JmHdToOiAvBEHXGvHEMEqqy012Jyloh3Sw0+P/5Iq57TC7ZcIm0HQR+H+IzmI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184645;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=fMkGfujHPoOjChPMwwzqPao8q0VWxzzsdGo5pHHHDFY=;
	b=noYIythe3ulKS3B18DOV2DkKiCX8BtzIW/ZfL3MVh6Sk918EvpHtk2ZE9s+XESi6
	piRf3NFbfZi+01nPJGk1gJukqCh8jwU8KUSRStPWZkj3jzaRuY9dm47ZCBHzWVEXacm
	RuSybzs+4hntfMgvXISl/uNbDs45acJ9Bx3F8zCc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 22/44] x86/boot: remove module_map usage from microcode loading
Date: Thu, 17 Oct 2024 13:03:02 -0400
Message-Id: <20241017170325.3842-23-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With all consumers of module_map converted, remove usage of it
by the microcode loading logic.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- dropped unnecessary parens
---
 xen/arch/x86/cpu/microcode/core.c    | 22 +++++++++-------------
 xen/arch/x86/include/asm/microcode.h |  6 ++----
 xen/arch/x86/setup.c                 |  4 ++--
 3 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 5b42aad2fdd0..23984c69bce7 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -152,8 +152,7 @@ static int __init cf_check parse_ucode(const char *s)
 }
 custom_param("ucode", parse_ucode);
 
-static void __init microcode_scan_module(
-    unsigned long *module_map, const struct boot_info *bi)
+static void __init microcode_scan_module(const struct boot_info *bi)
 {
     uint64_t *_blob_start;
     unsigned long _blob_size;
@@ -178,7 +177,7 @@ static void __init microcode_scan_module(
      */
     for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
     {
-        if ( !test_bit(i, module_map) )
+        if ( bi->mods[i].type != BOOTMOD_UNKNOWN )
             continue;
 
         _blob_start = bootstrap_map_bm(&bi->mods[i]);
@@ -202,19 +201,18 @@ static void __init microcode_scan_module(
     }
 }
 
-static void __init microcode_grab_module(
-    unsigned long *module_map, struct boot_info *bi)
+static void __init microcode_grab_module(struct boot_info *bi)
 {
     if ( ucode_mod_idx < 0 )
         ucode_mod_idx += bi->nr_modules;
     if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
-         !__test_and_clear_bit(ucode_mod_idx, module_map) )
+         bi->mods[ucode_mod_idx].type != BOOTMOD_UNKNOWN )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
     ucode_mod = &bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, bi);
+        microcode_scan_module(bi);
 }
 
 static struct microcode_ops __ro_after_init ucode_ops;
@@ -818,8 +816,7 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(
-    unsigned long *module_map, const struct boot_info *bi)
+int __init microcode_init_cache(const struct boot_info *bi)
 {
     int rc = 0;
 
@@ -828,7 +825,7 @@ int __init microcode_init_cache(
 
     /* Scan if microcode was not detected earlier */
     if ( !ucode_mod )
-        microcode_scan_module(module_map, bi);
+        microcode_scan_module(bi);
 
     if ( ucode_mod && !(ucode_mod->flags & BOOTMOD_FLAG_X86_CONSUMED) )
         rc = early_update_cache(bootstrap_map_bm(ucode_mod),
@@ -874,8 +871,7 @@ static int __init early_microcode_update_cpu(void)
     return microcode_update_cpu(patch, 0);
 }
 
-int __init early_microcode_init(unsigned long *module_map,
-                                struct boot_info *bi)
+int __init early_microcode_init(struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
     int rc = 0;
@@ -918,7 +914,7 @@ int __init early_microcode_init(unsigned long *module_map,
         return -ENODEV;
     }
 
-    microcode_grab_module(module_map, bi);
+    microcode_grab_module(bi);
 
     if ( ucode_mod || ucode_blob.size )
         rc = early_microcode_update_cpu();
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 495c8f7a7cc5..84e0eb487244 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -26,10 +26,8 @@ DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 void microcode_set_module(unsigned int idx);
 int microcode_update(
     XEN_GUEST_HANDLE(const_void) buf, unsigned long len, unsigned int flags);
-int early_microcode_init(
-    unsigned long *module_map, struct boot_info *bi);
-int microcode_init_cache(
-    unsigned long *module_map, const struct boot_info *bi);
+int early_microcode_init(struct boot_info *bi);
+int microcode_init_cache(const struct boot_info *bi);
 int microcode_update_one(void);
 
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 6ba8a893daf0..e1763d7e6548 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1385,7 +1385,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * TODO: load ucode earlier once multiboot modules become accessible
      * at an earlier stage.
      */
-    early_microcode_init(module_map, bi);
+    early_microcode_init(bi);
 
     if ( xen_phys_start )
     {
@@ -1937,7 +1937,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     timer_init();
 
-    microcode_init_cache(module_map, bi); /* Needs xmalloc() */
+    microcode_init_cache(bi); /* Needs xmalloc() */
 
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.820992.1234782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9i-0000jv-85; Thu, 17 Oct 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 820992.1234782; Thu, 17 Oct 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 1t1U9i-0000jm-4M; Thu, 17 Oct 2024 17:19:22 +0000
Received: by outflank-mailman (input) for mailman id 820992;
 Thu, 17 Oct 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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TxG-0008TH-Pu
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:06:30 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2621499d-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:06:29 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184640324617.7081638090145;
 Thu, 17 Oct 2024 10:04:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2621499d-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184643; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=GudBkxNB4uk1sueWWl+b+OP6jTJXLFAeyzYM8YUWdxnyr+bK/gVchS0QTLyxsKoFxE7DdP5s3e08ZWH7fb6uUN7S12N8Hh8PgvTUXlEqmKLBmJ+K/BUMQD46W5ct7jdJCl/aIzotiZELXhjFVH+YWESa4B/KhlhzXLkyZ1mDrxI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184643; h=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=GjWn8P4/iAki6mlp0w0Xm+yUTIZ9w1BAGBcnDQ6vMwM=; 
	b=LpYrwgK9bfZueJBU+SAUDU1e3bU5wodF29i6gi1+jPXnXoZE9ow843hw6Yc9ovQYURESv9FJZig+f94DZ/daVKxVlntlBzTGIYtN6yc4tJRiCTy8GwX+7faLJNoy3xy1ITWMGysEwE6I7qjep+nArvqkLA1wz5yE203zmPzJVLw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184643;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=GjWn8P4/iAki6mlp0w0Xm+yUTIZ9w1BAGBcnDQ6vMwM=;
	b=TkoQ29bQlwlOP19lG7oy5Zjm46vD9LKMur7RO34njb2dqGPpF02cR1T43nSTDWSP
	c3Q+bGHEPk7vTw70gM5qvW6JCt4KYx6X8Pbl2ZpM54BfMqc2M0uOGjbv3JUZF67V2ez
	9mPBEwPVrlWQPZz8o/kGuKb3nFAhrBKtVsp1Fulg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 20/44] x86/boot: convert xsm policy loading to struct boot_module
Date: Thu, 17 Oct 2024 13:03:00 -0400
Message-Id: <20241017170325.3842-21-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Iterate through the unclaimed struct boot_module to see if any are an XSM FLASK
policy. If one is located, mark it as an xsm policy.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- replaced bootstrap_map with bootstrap_map_bm
- make init function definitions consistent in dropping const on *bi
---
 xen/arch/x86/include/asm/bootinfo.h |  1 +
 xen/arch/x86/setup.c                |  2 +-
 xen/include/xsm/xsm.h               | 11 +++++++----
 xen/xsm/xsm_core.c                  | 17 +++++++++++++----
 xen/xsm/xsm_policy.c                | 15 ++++++++-------
 5 files changed, 30 insertions(+), 16 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 19a0ed16ab27..8b63eb27d6dd 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -21,6 +21,7 @@ enum bootmod_type {
     BOOTMOD_KERNEL,
     BOOTMOD_RAMDISK,
     BOOTMOD_MICROCODE,
+    BOOTMOD_XSM_POLICY,
 };
 
 struct boot_module {
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 04de06ba1400..a4ddcb908626 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1863,7 +1863,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
                                   RANGESETF_prettyprint_hex);
 
-    xsm_multiboot_init(module_map, mbi);
+    xsm_multiboot_init(module_map, bi);
 
     /*
      * IOMMU-related ACPI table parsing may require some of the system domains
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731af..f155d10e718c 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -17,7 +17,10 @@
 
 #include <xen/alternative-call.h>
 #include <xen/sched.h>
-#include <xen/multiboot.h>
+
+#ifdef CONFIG_MULTIBOOT
+#include <asm/bootinfo.h>
+#endif
 
 /* policy magic number (defined by XSM_MAGIC) */
 typedef uint32_t xsm_magic_t;
@@ -779,9 +782,9 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 
 #ifdef CONFIG_MULTIBOOT
 int xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi);
+    unsigned long *module_map, struct boot_info *bi);
 int xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
+    unsigned long *module_map, struct boot_info *bi,
     void **policy_buffer, size_t *policy_size);
 #endif
 
@@ -829,7 +832,7 @@ static const inline struct xsm_ops *silo_init(void)
 
 #ifdef CONFIG_MULTIBOOT
 static inline int xsm_multiboot_init (
-    unsigned long *module_map, const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index eaa028109bde..6f034f70428d 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -21,6 +21,7 @@
 #ifdef CONFIG_XSM
 
 #ifdef CONFIG_MULTIBOOT
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 
@@ -140,7 +141,7 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
     int ret = 0;
     void *policy_buffer = NULL;
@@ -150,18 +151,26 @@ int __init xsm_multiboot_init(
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, mbi, &policy_buffer,
+        ret = xsm_multiboot_policy_init(module_map, bi, &policy_buffer,
                                         &policy_size);
         if ( ret )
         {
-            bootstrap_map(NULL);
+            bootstrap_map_bm(NULL);
             printk(XENLOG_ERR "Error %d initializing XSM policy\n", ret);
             return -EINVAL;
         }
     }
 
     ret = xsm_core_init(policy_buffer, policy_size);
-    bootstrap_map(NULL);
+    if ( ret == 0 )
+    {
+        int idx = first_boot_module_index(bi, BOOTMOD_XSM_POLICY);
+
+        /* If the policy was loaded from a boot module, mark it consumed */
+        if ( idx >= 0 )
+            bi->mods[idx].flags |= BOOTMOD_FLAG_X86_CONSUMED;
+    }
+    bootstrap_map_bm(NULL);
 
     return 0;
 }
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 8dafbc93810f..921bb254b9d1 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -21,6 +21,7 @@
 #include <xsm/xsm.h>
 #ifdef CONFIG_MULTIBOOT
 #include <xen/multiboot.h>
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 #include <xen/bitops.h>
@@ -31,11 +32,10 @@
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
+    unsigned long *module_map, struct boot_info *bi,
     void **policy_buffer, size_t *policy_size)
 {
     int i;
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     int rc = 0;
     u32 *_policy_start;
     unsigned long _policy_len;
@@ -44,13 +44,13 @@ int __init xsm_multiboot_policy_init(
      * Try all modules and see whichever could be the binary policy.
      * Adjust module_map for the module that is the binary policy.
      */
-    for ( i = mbi->mods_count-1; i >= 1; i-- )
+    for ( i = bi->nr_modules-1; i >= 1; i-- )
     {
-        if ( !test_bit(i, module_map) )
+        if ( bi->mods[i].type != BOOTMOD_UNKNOWN )
             continue;
 
-        _policy_start = bootstrap_map(mod + i);
-        _policy_len   = mod[i].mod_end;
+        _policy_start = bootstrap_map_bm(&bi->mods[i]);
+        _policy_len   = bi->mods[i].size;
 
         if ( (xsm_magic_t)(*_policy_start) == XSM_MAGIC )
         {
@@ -61,11 +61,12 @@ int __init xsm_multiboot_policy_init(
                    _policy_len,_policy_start);
 
             __clear_bit(i, module_map);
+            bi->mods[i].type = BOOTMOD_XSM_POLICY;
             break;
 
         }
 
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
     }
 
     return rc;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:19:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:19:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821003.1234792 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1U9t-0001dA-Ix; Thu, 17 Oct 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 821003.1234792; Thu, 17 Oct 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 1t1U9t-0001cU-Dr; Thu, 17 Oct 2024 17:19:33 +0000
Received: by outflank-mailman (input) for mailman id 821003;
 Thu, 17 Oct 2024 17: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=c7jd=RN=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t1U9s-0007JO-52
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:19:32 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on2061c.outbound.protection.outlook.com
 [2a01:111:f403:2408::61c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f71c1d23-8cab-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:19:29 +0200 (CEST)
Received: from CH0PR04CA0110.namprd04.prod.outlook.com (2603:10b6:610:75::25)
 by DS0PR12MB7583.namprd12.prod.outlook.com (2603:10b6:8:13f::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.17; Thu, 17 Oct
 2024 17:19:08 +0000
Received: from CH1PEPF0000AD83.namprd04.prod.outlook.com
 (2603:10b6:610:75:cafe::5d) by CH0PR04CA0110.outlook.office365.com
 (2603:10b6:610:75::25) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.19 via Frontend
 Transport; Thu, 17 Oct 2024 17:19:04 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000AD83.mail.protection.outlook.com (10.167.244.85) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 17:19:03 +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.39; Thu, 17 Oct
 2024 12:19:02 -0500
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.39; Thu, 17 Oct
 2024 12:19:02 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Thu, 17 Oct 2024 12:19:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f71c1d23-8cab-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=IqPhtnWtyeq8ejdG0iy2u53JbKgz7WitO14SiC3WtBFDHX+snDUFTTHItEjJfiULlMiMHESif/I11R9AD3P1aVolK7hui10O70QmKlOCyo8jlao2hznu+v2uNwtONmjsYPgj17NU6oBZt4XBMj/ohIA0tsil5Qe0gykaDu65NESzdYcLuXF0swsrMVauLx53uF79sGCzyjqy1a5LcBimNKCl6IFPlWhvQMV+ji91UnGi7LVvLEWYk9hqp0k5bAw1OzvevhvcoVdL1YXYeyOlXMrYUZ6mIEcp9hP6bRwx9q58D/8lr7mCVcKVQ3aVPg02KB85OJZhS1DRUXxOBCGN+g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=1zaVyoOUYBX6WPASuaE/d8keX1X2ko5PNA11fHB6pyo=;
 b=a81lmu8FRsgGOadZhtQQl1UFRQhnRBZwSLq+xAHFSdHUx2GM0gL/MfSrEIlzgJi/GojdE+OlT66PEKrJ/5fSulO+yck8IdQD2MRxdPgI4iWc+l6lZL4mH13IvK/z6CXfIx1EuiofWBUYzR72yC3czj9w7dRV0in6qBxhxMpxD0Pehmc6Ebll85mW7utpejI/jylHGH8zGI0My0756IScbUqGkZEBizc5nFhyDu83vgyIHixL6sHxrEBvK6g3K7ZmUHTaHMhj7ZdUyY8808FaIOxraT98zyzA69jc5IMjslo4rWzPuXEY4mdVIHiFNhnY5SCXikSbyM+amie+Vetryw==
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=1zaVyoOUYBX6WPASuaE/d8keX1X2ko5PNA11fHB6pyo=;
 b=b6ifowMXu7LAe0AmNI3huEfrYwCDT/4EPvJeAlDIAi8c0l7ddw2/jM5E+KObmseqfifQUSAuS+ilLJGa3DpxgWKUPujUxnk0PeI3T+Ex7SWu4ol47ouZR3HU68aJy8F2pg5URg/OUJHT7bvGCDn9qjKNAVPi+vLoa6vQiju8/mg=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 2/3] automation: add linux argo test artifacts
Date: Thu, 17 Oct 2024 10:18:27 -0700
Message-ID: <f8abd08a2c3f9e52a166359b0f4c1ecf4c8d1a73.1729183051.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1729183051.git.victorm.lira@amd.com>
References: <cover.1729183051.git.victorm.lira@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD83:EE_|DS0PR12MB7583:EE_
X-MS-Office365-Filtering-Correlation-Id: cb0b346e-ae11-4431-ebf7-08dceecfccb1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?e73IPiKkOsAWd0wIc0wYdx8kaotxC92KFjJXmNQuBSnqZ7LnhL3SsNnNT72K?=
 =?us-ascii?Q?lfS79nunwYOsSlrZ3AJ5oKNJ551ymVSE2nHSKs0rWlI5pICJeWrMSK7pfar3?=
 =?us-ascii?Q?JzLhm177a2zctEHVIQ0rUxcNyHxic2qQAK7POK65WLJxJkrGbiwi81lIUYAb?=
 =?us-ascii?Q?+8DXgKdAYe7Evae+H1y/i9VGCdBAFfH1bKHNApdhUnRWiCCeufcejagrk/JT?=
 =?us-ascii?Q?oz0c0nejOTFP1GzvL/qA9n3mwUXZzI+X33z2JiC9tYOgf2dMW1W2fGdsFVy+?=
 =?us-ascii?Q?46/1jpGK1hNBwcnUBW3EnoOhRZlLIi1wbgza8aH99W502/PCP/xsI14Vt0hx?=
 =?us-ascii?Q?PW0E+RhSxCLdvu10sbgvH3+nCHqrAZ/PABWHDu5OR5syj35BxSDpSy1uoCCd?=
 =?us-ascii?Q?KKisXAlhwnLzo6YJeg6QqLujjC7LzjCHV7VszwhqRzAI6Kp47eue/+G28vUo?=
 =?us-ascii?Q?q42xQ5qbmWovaYBDucnmg79N6w+hSC6lzNd+vtbM8YUdkzfcrWGHO/pyngVV?=
 =?us-ascii?Q?fBkb3TEj2xQVS36eAVvvRXca93ZnibeV1vNpUZ7BUd+Zeb+Qjo76NiVZsUsv?=
 =?us-ascii?Q?sjvVU7Sg9sr6AZp96DVB3wIxTOlTpcyK+/ck2JP4nrKyYwLKHfA0ey9v4z/5?=
 =?us-ascii?Q?4Ej6r7LcSGOtdxszQZjYdoPjkDDuWu47coBFePaKfV8qVmdplfVpeuHBtNee?=
 =?us-ascii?Q?aipDKA5OZ2UFbwKh9KA6v7OYyIBB1yCwqMw2gMgz4xP+7lVH29CoofZ9BndI?=
 =?us-ascii?Q?3dERV1iei7mONmGT619P2WxTArfgiSmVTIEqen/Wia0EhbrrkGeTQju6T6GM?=
 =?us-ascii?Q?NQQykkPEj56Mn3fz3aHoTnbcMh1TVSIiXdngzGDcK4JS12pQJHfg5i9URUt8?=
 =?us-ascii?Q?zvmrFckaTQlw+QDUCkq3Uu9RGPRCpHdJmYcXa9kulK+kwSMbmVV987FVjtoN?=
 =?us-ascii?Q?GZnlAR/TA36BAHfZekveXjjSIowVbiuC8Sdi9lZ34e0qAvUjwCblqWZFA2Q0?=
 =?us-ascii?Q?elt9ItMOe2TNJfYDpUEZuELG/JNh8USGce6V4aEY86n9ddblkfhcITm1nv2o?=
 =?us-ascii?Q?5DsjhJD7wiO8qzleTIjQgSkFI8jACmCIOlrk/5gH5MD1ctF/nUksnOjHWNH4?=
 =?us-ascii?Q?vQhKZrxN//rzuzzkBHC7dd6ulHpTjAJ/2KaDbFmesToMcPT99kjKtLB6lyfl?=
 =?us-ascii?Q?fnSwfgET9P80soMtoh1qgNjodQG7NwLzzyiJ3EIdnN0fUqA234BX6cXMVa4d?=
 =?us-ascii?Q?Jl+kLr8ODb4WSOy62Fn0TYHUXWC7JoIZqUMwVDWIjtsC0W5YS9L8uFGGSMbE?=
 =?us-ascii?Q?ew+kLw39KijdNXOGymHzX+j2pPoS5+3ArdCpy2g83393pF1SEjB8C5rsKogC?=
 =?us-ascii?Q?9bQ2Gds=3D?=
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:(13230040)(82310400026)(1800799024)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 17:19:03.8683
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cb0b346e-ae11-4431-ebf7-08dceecfccb1
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:
	CH1PEPF0000AD83.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7583

From: Victor Lira <victorm.lira@amd.com>

Add dockerfile for building container image that holds test binaries for
Xen Argo test on Linux 6.6.56 x86_64

The build produces the following:
- xen-argo.ko       Linux kernel module
- lib/libargo*      Linux shared library
- argo-exec         Linux user test program

Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 .../tests-artifacts/argo/6.6.56.dockerfile    | 95 +++++++++++++++++++
 1 file changed, 95 insertions(+)
 create mode 100644 automation/tests-artifacts/argo/6.6.56.dockerfile

diff --git a/automation/tests-artifacts/argo/6.6.56.dockerfile b/automation/tests-artifacts/argo/6.6.56.dockerfile
new file mode 100644
index 0000000000..a8e199ad3b
--- /dev/null
+++ b/automation/tests-artifacts/argo/6.6.56.dockerfile
@@ -0,0 +1,95 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 alpine:3.18
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV LINUX_VERSION=6.6.56
+ENV USER root
+
+RUN mkdir /build /artifacts
+WORKDIR /build
+ENV BUILDDIR=/build/
+ENV COPYDIR=/artifacts/
+ENV ARGO_SHA="705a7a8a624b42e13e655d3042059b8a85cdf6a3"
+ENV ARGOEXEC_SHA="d900429f6640acc6f68a3d3a4c945d7da60625d8"
+
+RUN apk --no-cache add \
+  \
+  musl-dev  \
+  build-base \
+  libc6-compat \
+  linux-headers \
+  bash \
+  git \
+  curl \
+  flex \
+  bison \
+  elfutils-dev \
+  autoconf \
+  automake \
+  libtool && \
+  \
+  # Prepare Linux sources
+  curl -fsSLO https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"$LINUX_VERSION".tar.xz && \
+  tar xJf linux-"$LINUX_VERSION".tar.xz && \
+  cd linux-"$LINUX_VERSION" && \
+  make ARCH=x86 defconfig && \
+  make ARCH=x86 xen.config && \
+  ./scripts/config --enable BRIDGE && \
+  ./scripts/config --enable IGC && \
+  ./scripts/config --enable TUN && \
+  cp .config .config.orig && \
+  cat .config.orig | grep XEN | grep =m |sed 's/=m/=y/g' >> .config && \
+  make ARCH=x86 olddefconfig && \
+  make ARCH=x86 modules_prepare && \
+  \
+  # Build Linux kernel module for Xen Argo
+  cd "${BUILDDIR}" && \
+  git clone \
+      --depth=1 --branch=master \
+      https://github.com/OpenXT/linux-xen-argo.git && \
+  git -C "${BUILDDIR}/linux-xen-argo" switch --detach "${ARGO_SHA}" && \
+  make -C "linux-${LINUX_VERSION}" M="${BUILDDIR}/linux-xen-argo/argo-linux" \
+      CFLAGS_MODULE="-Wno-error" KBUILD_MODPOST_WARN=1 && \
+  cp "linux-xen-argo/argo-linux/xen-argo.ko" "${COPYDIR}/xen-argo.ko" && \
+  \
+  # Build Linux libargo shared library, applying fixes to build in Alpine
+  cd "${BUILDDIR}/linux-xen-argo/libargo" && \
+  sed -i "s|AM_INIT_AUTOMAKE|AC_CONFIG_AUX_DIR(.)\nAM_INIT_AUTOMAKE|" configure.ac && \
+  sed -i "s/__SOCKADDR_COMMON (sxenargo_)/sa_family_t sxenargo_family/" src/libargo.h && \
+  sed -i "s/__SOCKADDR_COMMON_SIZE/(sizeof (unsigned short int))/" src/libargo.h && \
+  autoreconf --install && \
+  ./configure  --prefix="${COPYDIR}" CPPFLAGS="-I${PWD}/../argo-linux/include" && \
+  make && \
+  make install && \
+  \
+  # Build Linux user program, modifying for xilinx argo test
+  cd "${BUILDDIR}" && \
+  wget "https://raw.githubusercontent.com/OpenXT/xenclient-oe/${ARGOEXEC_SHA}/recipes-openxt/argo-exec/argo-exec/argo-exec.c" && \
+  sed -i "s|#include <xen/xen.h>||" argo-exec.c && \
+  sed -i "s|ret = shuffle(s, fds\[0\], fds\[1\]);|ret = shuffle(s, 0, 1);|" argo-exec.c && \
+  gcc -I"${BUILDDIR}/linux-xen-argo/libargo/src" \
+      -I"${BUILDDIR}/linux-xen-argo/argo-linux/include" \
+      -L"${COPYDIR}/lib/" \
+      -o argo-exec argo-exec.c -largo && \
+  cp argo-exec "${COPYDIR}" && \
+  \
+  # Clean up
+  cd /build && \
+  rm -fr linux-"$LINUX_VERSION"* linux-xen-argo argo-exec.c && \
+  \
+  apk del \
+  \
+  musl-dev  \
+  build-base \
+  libc6-compat \
+  linux-headers \
+  bash \
+  git \
+  curl \
+  flex \
+  bison \
+  elfutils-dev \
+  autoconf \
+  automake \
+  libtool
--
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:20:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:20:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821019.1234802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UAb-00042s-1O; Thu, 17 Oct 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 821019.1234802; Thu, 17 Oct 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 1t1UAa-00042l-UO; Thu, 17 Oct 2024 17:20:16 +0000
Received: by outflank-mailman (input) for mailman id 821019;
 Thu, 17 Oct 2024 17:20: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TyW-00014B-0C
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:07:48 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 539bd735-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:07:46 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184651885979.0690248848649;
 Thu, 17 Oct 2024 10:04:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 539bd735-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184654; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=HRGzO+0jOKUR/Meq44FRnVuwdp1uY7NXVVZifN8wuadlwVVxglBTFTCIXNOMEB8rFU0Cn23CGQAH8fS9dSLmSFCTH1d6yGrwoYAATRmAnrYE6secvf2XOSYFVcNJo7LjRPhGziCSf9co7ZcIuzcO87Bq5p8e9gtRbnPLhLiriMk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184654; h=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=cvWn5Yqu/hyHibZNnNCf1iWRt37Pr6iw0261tw9I/1o=; 
	b=EyN6YhRwhAIouOy4xuxaqLrgtitgsZssr8DVFkozYUmzorXPJYJOFamAt2THm7Jrte3xKEmQtoPsCR4lmvbixRAb3rRQIhzcdNxG+PfoXh6OF0p0/SzBfdFa/BGvCLx6PCpC8oVw8IdIgKxiAWfLv9/AuF94uJVewwyQvBh2+Xo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184654;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=cvWn5Yqu/hyHibZNnNCf1iWRt37Pr6iw0261tw9I/1o=;
	b=TRxOmHrFkMtsK4fC14yETXVYeGzzRVW+9ez0BTMeFHumoA0qnlqc2BDZXyeVWjas
	9aTmOPSvcY6ECR6hWek0Pysc2Vf6JgYRgWMuIp+D9UZI7TI/ds04UiThOcC2CjmnL6L
	WRTXqFpTlEbcBCf5LEOXbS08992Y2zOsx3gLtdN4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 29/44] x86/boot: convert dom0_construct_pv image param to struct boot_module
Date: Thu, 17 Oct 2024 13:03:09 -0400
Message-Id: <20241017170325.3842-30-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes the type for the image parameter of dom0_construct_pv to be struct
boot_module. Removing the usage of early_mod field for kernel module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- replaced bootstrap_map(NULL) with bootstrap_map_bm
---
 xen/arch/x86/dom0_build.c             |  3 +--
 xen/arch/x86/include/asm/dom0_build.h |  7 +++----
 xen/arch/x86/pv/dom0_build.c          | 16 +++++++---------
 3 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 1eff3192f72d..54db578dd29f 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -613,8 +613,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
         rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
                                 cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image->mod, image->headroom, initrd->mod,
-                               cmdline);
+        rc = dom0_construct_pv(d, image, initrd->mod, cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 107c1ff98367..a1f36f7d360d 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -13,10 +13,9 @@ unsigned long dom0_compute_nr_pages(struct domain *d,
                                     unsigned long initrd_len);
 int dom0_setup_permissions(struct domain *d);
 
-int dom0_construct_pv(struct domain *d, const module_t *image,
-                      unsigned long image_headroom,
-                      module_t *initrd,
-                      const char *cmdline);
+int dom0_construct_pv(
+    struct domain *d, const struct boot_module *image,
+    module_t *initrd, const char *cmdline);
 
 int dom0_construct_pvh(struct domain *d, const module_t *image,
                        unsigned long image_headroom,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 262edb6bf2f0..f59597e50a11 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -355,8 +355,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
 }
 
 static int __init dom0_construct(struct domain *d,
-                                 const module_t *image,
-                                 unsigned long image_headroom,
+                                 const struct boot_module *image,
                                  module_t *initrd,
                                  const char *cmdline)
 {
@@ -374,9 +373,9 @@ static int __init dom0_construct(struct domain *d,
     unsigned int flush_flags = 0;
     start_info_t *si;
     struct vcpu *v = d->vcpu[0];
-    void *image_base = bootstrap_map(image);
-    unsigned long image_len = image->mod_end;
-    void *image_start = image_base + image_headroom;
+    void *image_base = bootstrap_map_bm(image);
+    unsigned long image_len = image->size;
+    void *image_start = image_base + image->headroom;
     unsigned long initrd_len = initrd ? initrd->mod_end : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
@@ -830,7 +829,7 @@ static int __init dom0_construct(struct domain *d,
         printk("Failed to load the kernel binary\n");
         goto out;
     }
-    bootstrap_map(NULL);
+    bootstrap_map_bm(NULL);
 
     if ( UNSET_ADDR != parms.virt_hypercall )
     {
@@ -1052,8 +1051,7 @@ out:
 }
 
 int __init dom0_construct_pv(struct domain *d,
-                             const module_t *image,
-                             unsigned long image_headroom,
+                             const struct boot_module *image,
                              module_t *initrd,
                              const char *cmdline)
 {
@@ -1072,7 +1070,7 @@ int __init dom0_construct_pv(struct domain *d,
         write_cr4(read_cr4() & ~X86_CR4_SMAP);
     }
 
-    rc = dom0_construct(d, image, image_headroom, initrd, cmdline);
+    rc = dom0_construct(d, image, initrd, cmdline);
 
     if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:20:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:20:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821022.1234811 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UAc-0004Iv-8R; Thu, 17 Oct 2024 17:20:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821022.1234811; Thu, 17 Oct 2024 17: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 1t1UAc-0004Io-5X; Thu, 17 Oct 2024 17:20:18 +0000
Received: by outflank-mailman (input) for mailman id 821022;
 Thu, 17 Oct 2024 17:20: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tzy-0008TH-MW
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:09:18 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8a49ec72-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:09:17 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184666649537.2838599744491;
 Thu, 17 Oct 2024 10:04:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8a49ec72-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184669; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=oHHB7tPYQvisRi3u0iB+bVrCD7dg6zYEq0nvVKIrcPfKLE6HlQR99F591gzujjraocIn3pHreKtEqb1Z2hEvUeJelryz/P9EyOZaHA+mu4jszJlsFngQ8jE0Dsmvgb08JC/3R2OP6wZv1a4YY/EQJAOd4pMkMdZaPH5Oc9zaT2M=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184669; h=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=MA3/IH4VWLQ7jN2aVHhTtAIX9q+RjxglxLS16ZJ3JG4=; 
	b=feHejNNneXvg0zFTeejqjJHLTk+QyLaan0JN1LntEzApZjcwT8oGwJbZK5rlfOvItEHR9gkdDzQVQqHfOfvsUKi/VWdls7Lsc1tDGrJCu2GObsvPstykww8GwOBZSzlKizprAYosZpG5TOv1Twhav/5Kt7kAKIFc9MAK/nXu3Kk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184669;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=MA3/IH4VWLQ7jN2aVHhTtAIX9q+RjxglxLS16ZJ3JG4=;
	b=jTUtbPFRVzBOQciezzn28jKMB9WTosJ6B1wF4vOpIqx1+QNUdhh2/8QYjT7uSC3N
	UZAw61ekFunYgRyi+DDns8rVmsxZCnBOhAbGIV2AToRE+I/rQ6H4A4kbn5ARUnY2LRX
	XE0r8lH/bdeWhR++Qe/N/7kunbGXOuyTfcj2gQWw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 41/44] x86/boot: add struct domain to struct boot_domain
Date: Thu, 17 Oct 2024 13:03:21 -0400
Message-Id: <20241017170325.3842-42-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Store a reference to the created domain in struct boot_domain.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- moved back to using variable *d to hold domain reference locally
---
 xen/arch/x86/include/asm/bootdomain.h | 3 +++
 xen/arch/x86/setup.c                  | 4 +++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index 00f7d9267965..2322c459e36a 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -10,6 +10,7 @@
 
 #include <public/xen.h>
 
+struct domain;
 struct boot_module;
 
 struct boot_domain {
@@ -19,6 +20,8 @@ struct boot_domain {
 
     struct boot_module *kernel;
     struct boot_module *ramdisk;
+
+    struct domain *d;
 };
 
 #endif
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 1aa063facfce..494e48a7c836 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1012,10 +1012,12 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         }
     }
 
+    bd->d = d;
+
     if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
-    return d;
+    return bd->d;
 }
 
 /* How much of the directmap is prebuilt at compile time. */
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:20:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:20:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821027.1234822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UAf-0004jW-Gv; Thu, 17 Oct 2024 17:20:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821027.1234822; Thu, 17 Oct 2024 17: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 1t1UAf-0004jN-De; Thu, 17 Oct 2024 17:20:21 +0000
Received: by outflank-mailman (input) for mailman id 821027;
 Thu, 17 Oct 2024 17:20: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tyu-00014B-LM
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:12 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 61c44785-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:08:09 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184655620990.0465556999607;
 Thu, 17 Oct 2024 10:04:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 61c44785-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184657; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=dbwr3om9PZ4En8gFJd9v1mNrb/XPwezxwWfc4fiSUCNZ8f7LvijJJRsUkzu1WDfgERsE+TCBvensIXC+4wAiIZDUNkpuU756buzHgDNmR5CudHfWLT/cnkDLoiRaC9/yHIDsgNEgmwx4RWMhX4CCjWmowULHFILKHa07fasUFAs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184657; h=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=NBDtInGp9YJQJOeasJO8noI67YJSFGQINY+XLRHfqCo=; 
	b=J2aljjfyPDne7TpLJ9XyqIZQjXyWhLlE4XRZmWShk+k/98iBec89enAqplSBsyedkKaFS7/yKtdbO+mB9KunSLURI08q7xPuTsaB0l6N7Y6pPcaaA4WlqT1+eDe4W11Da92ROCCD21TKhEkDD8BFCsZknuZH2bDyQkI3gDu4YbQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184657;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=NBDtInGp9YJQJOeasJO8noI67YJSFGQINY+XLRHfqCo=;
	b=Y1txQgXlBFhJcdfypqPQmk4164USOHXRiQqzkaLVEZDVogw2V51hQK7iqt9qrOoA
	7Yp6hD1vkM874W9+A4ZVxch2iKrEgBuwbVOmRxDgvaFDec3m0QreqXeqn8yzb/bkX7D
	6rRNexlNk1iI2Bl8hnaYQ1VoSLNLSn01btDvQI2E=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 32/44] x86/boot: convert pvh_load_kernel to struct boot_module
Date: Thu, 17 Oct 2024 13:03:12 -0400
Message-Id: <20241017170325.3842-33-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes both the kernel and ramdisk parameters over to struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/hvm/dom0_build.c | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index beaa1d492077..a3fd5e762dc4 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -642,15 +642,14 @@ static bool __init check_and_adjust_load_address(
     return true;
 }
 
-static int __init pvh_load_kernel(struct domain *d, const module_t *image,
-                                  unsigned long image_headroom,
-                                  module_t *initrd, void *image_base,
-                                  const char *cmdline, paddr_t *entry,
-                                  paddr_t *start_info_addr)
+static int __init pvh_load_kernel(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, void *image_base,
+    const char *cmdline, paddr_t *entry, paddr_t *start_info_addr)
 {
-    void *image_start = image_base + image_headroom;
-    unsigned long image_len = image->mod_end;
-    unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+    void *image_start = image_base + image->headroom;
+    unsigned long image_len = image->size;
+    unsigned long initrd_len = initrd ? initrd->size : 0;
     struct elf_binary elf;
     struct elf_dom_parms parms;
     paddr_t last_addr;
@@ -725,7 +724,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, maddr_to_virt(initrd->start),
                                     initrd_len, v);
         if ( rc )
         {
@@ -736,9 +735,9 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
         mod.paddr = last_addr;
         mod.size = initrd_len;
         last_addr += ROUNDUP(initrd_len, elf_64bit(&elf) ? 8 : 4);
-        if ( initrd->string )
+        if ( initrd->cmdline )
         {
-            char *str = __va(initrd->string);
+            char *str = __va((unsigned long)initrd->cmdline);
             size_t len = strlen(str) + 1;
 
             rc = hvm_copy_to_guest_phys(last_addr, str, len, v);
@@ -1346,8 +1345,8 @@ int __init dom0_construct_pvh(
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image->mod, image->headroom, initrd->mod,
-                         bootstrap_map_bm(image), cmdline, &entry, &start_info);
+    rc = pvh_load_kernel(d, image, initrd, bootstrap_map_bm(image), cmdline,
+                         &entry, &start_info);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:20:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:20:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821036.1234831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UAs-0005Mx-Qs; Thu, 17 Oct 2024 17:20:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821036.1234831; Thu, 17 Oct 2024 17: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 1t1UAs-0005Mk-N8; Thu, 17 Oct 2024 17:20:34 +0000
Received: by outflank-mailman (input) for mailman id 821036;
 Thu, 17 Oct 2024 17:20: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1U0E-0008TH-Mg
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:09:34 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 93ddd747-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:09:34 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184669125634.2300346641034;
 Thu, 17 Oct 2024 10:04:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93ddd747-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184672; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=WEKpKvDtClHHQBu0BzpCfBAD/yVFbIu4CI12tll1MvaPJ8DbqPizvrdLlArqNVtruizHVLfyQUaBL2/hn/D0mMnD/6yRx75Sv7VxQYtuVxjCsTaQ3nyEmjmR5jAAIn3uR1+xbIVNGkbH9LF6nml7RqU+/N1cDEQ+/FYjgvh+kc8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184672; h=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=9+B4OzBQ7rw57Cecbw8dku0IeEJ1zavf5a/aaymJkgU=; 
	b=bAQQDiTx4fZoQDKLiUIW212k+LBPbbQQ4d/2n4gKHKyz7WmT29Lf01/ItbAvk2JkQvYkXUORGuLZ+996sJgHjbSTzsulyZEZg/rktdvt/xjMLPXmpgb/pP5WNir0qCNih2MGS3fIJtdBg05VY39FnqpGCR5en1fVEh8+oAbp04M=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184672;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=9+B4OzBQ7rw57Cecbw8dku0IeEJ1zavf5a/aaymJkgU=;
	b=qjgxSDaDZaunxPeasAy4mEYRX7fljKd0+/lWyCl/lSYWT1T77eG47a998ine8WsD
	gHt+mqRDzkZV2gJ4aoivpI4W//04DWBCkSHRa4uNwspWAa81t09IAeqBAK89g6CyFmr
	wF4wWc8uc7vbhtwBlEZ01/h44sOpEAmuwqtwL9+A=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 43/44] x86/boot: convert dom0_construct_pv to struct boot_domain
Date: Thu, 17 Oct 2024 13:03:23 -0400
Message-Id: <20241017170325.3842-44-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With construct_dom0 consuming struct boot_domain, continue passing the
structure down to dom0_construct_pv.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- reverted back *v d->vcpu[0]
---
 xen/arch/x86/dom0_build.c             |  2 +-
 xen/arch/x86/include/asm/dom0_build.h |  5 ++--
 xen/arch/x86/pv/dom0_build.c          | 41 ++++++++++++---------------
 3 files changed, 21 insertions(+), 27 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 34b4943de3b1..96cd1154b037 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -612,7 +612,7 @@ int __init construct_dom0(struct boot_domain *bd)
     if ( is_hvm_domain(d) )
         rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
+        rc = dom0_construct_pv(bd);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 8f7b37f3d308..60e9cb21f14d 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -4,6 +4,7 @@
 #include <xen/libelf.h>
 #include <xen/sched.h>
 
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 
 extern unsigned int dom0_memflags;
@@ -13,9 +14,7 @@ unsigned long dom0_compute_nr_pages(struct domain *d,
                                     unsigned long initrd_len);
 int dom0_setup_permissions(struct domain *d);
 
-int dom0_construct_pv(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline);
+int dom0_construct_pv(struct boot_domain *bd);
 
 int dom0_construct_pvh(
     struct domain *d, const struct boot_module *image,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 5e7b543d0cbe..53c34b7cf358 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -354,10 +354,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
     return page;
 }
 
-static int __init dom0_construct(struct domain *d,
-                                 const struct boot_module *image,
-                                 struct boot_module *initrd,
-                                 const char *cmdline)
+static int __init dom0_construct(struct boot_domain *bd)
 {
     int i, rc, order, machine;
     bool compatible, compat;
@@ -373,11 +370,12 @@ static int __init dom0_construct(struct domain *d,
     struct page_info *page = NULL;
     unsigned int flush_flags = 0;
     start_info_t *si;
+    struct domain *d = bd->d;
     struct vcpu *v = d->vcpu[0];
-    void *image_base = bootstrap_map_bm(image);
-    unsigned long image_len = image->size;
-    void *image_start = image_base + image->headroom;
-    unsigned long initrd_len = initrd ? initrd->size : 0;
+    void *image_base = bootstrap_map_bm(bd->kernel);
+    unsigned long image_len = bd->kernel->size;
+    void *image_start = image_base + bd->kernel->headroom;
+    unsigned long initrd_len = bd->ramdisk ? bd->ramdisk->size : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
@@ -613,7 +611,7 @@ static int __init dom0_construct(struct domain *d,
         initrd_pfn = vinitrd_start ?
                      (vinitrd_start - v_start) >> PAGE_SHIFT :
                      domain_tot_pages(d);
-        initrd_mfn = maddr_to_mfn(initrd->start);
+        initrd_mfn = maddr_to_mfn(bd->ramdisk->start);
         mfn = mfn_x(initrd_mfn);
         count = PFN_UP(initrd_len);
         if ( d->arch.physaddr_bitsize &&
@@ -629,13 +627,13 @@ static int __init dom0_construct(struct domain *d,
                     free_domheap_pages(page, order);
                     page += 1UL << order;
                 }
-            memcpy(page_to_virt(page), maddr_to_virt(initrd->start),
+            memcpy(page_to_virt(page), maddr_to_virt(bd->ramdisk->start),
                    initrd_len);
-            mpt_alloc = initrd->start;
+            mpt_alloc = bd->ramdisk->start;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
             initrd_mfn = page_to_mfn(page);
-            initrd->start = mfn_to_maddr(initrd_mfn);
+            bd->ramdisk->start = mfn_to_maddr(initrd_mfn);
         }
         else
         {
@@ -643,7 +641,7 @@ static int __init dom0_construct(struct domain *d,
                 if ( assign_pages(mfn_to_page(_mfn(mfn++)), 1, d, 0) )
                     BUG();
         }
-        initrd->size = 0;
+        bd->ramdisk->size = 0;
 
         iommu_memory_setup(d, "initrd", mfn_to_page(initrd_mfn),
                            PFN_UP(initrd_len), &flush_flags);
@@ -655,9 +653,9 @@ static int __init dom0_construct(struct domain *d,
     if ( domain_tot_pages(d) < nr_pages )
         printk(" (%lu pages to be allocated)",
                nr_pages - domain_tot_pages(d));
-    if ( initrd )
+    if ( bd->ramdisk )
     {
-        mpt_alloc = initrd->start;
+        mpt_alloc = bd->ramdisk->start;
         printk("\n Init. ramdisk: %"PRIpaddr"->%"PRIpaddr,
                mpt_alloc, mpt_alloc + initrd_len);
     }
@@ -885,7 +883,7 @@ static int __init dom0_construct(struct domain *d,
         if ( pfn >= initrd_pfn )
         {
             if ( pfn < initrd_pfn + PFN_UP(initrd_len) )
-                mfn = paddr_to_pfn(initrd->start) + (pfn - initrd_pfn);
+                mfn = paddr_to_pfn(bd->ramdisk->start) + (pfn - initrd_pfn);
             else
                 mfn -= PFN_UP(initrd_len);
         }
@@ -955,8 +953,8 @@ static int __init dom0_construct(struct domain *d,
     }
 
     memset(si->cmd_line, 0, sizeof(si->cmd_line));
-    if ( cmdline != NULL )
-        strlcpy((char *)si->cmd_line, cmdline, sizeof(si->cmd_line));
+    if ( bd->cmdline[0] != '\0' )
+        strlcpy((char *)si->cmd_line, bd->cmdline, sizeof(si->cmd_line));
 
 #ifdef CONFIG_VIDEO
     if ( !pv_shim && fill_console_start_info((void *)(si + 1)) )
@@ -1053,10 +1051,7 @@ out:
     return rc;
 }
 
-int __init dom0_construct_pv(struct domain *d,
-                             const struct boot_module *image,
-                             struct boot_module *initrd,
-                             const char *cmdline)
+int __init dom0_construct_pv(struct boot_domain *bd)
 {
     int rc;
 
@@ -1073,7 +1068,7 @@ int __init dom0_construct_pv(struct domain *d,
         write_cr4(read_cr4() & ~X86_CR4_SMAP);
     }
 
-    rc = dom0_construct(d, image, initrd, cmdline);
+    rc = dom0_construct(bd);
 
     if ( boot_cpu_has(X86_FEATURE_XEN_SMAP) )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:20:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:20:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821038.1234842 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UAu-0005f0-3o; Thu, 17 Oct 2024 17:20:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821038.1234842; Thu, 17 Oct 2024 17:20: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 1t1UAt-0005en-Vx; Thu, 17 Oct 2024 17:20:35 +0000
Received: by outflank-mailman (input) for mailman id 821038;
 Thu, 17 Oct 2024 17:20: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TyG-00014B-Ow
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:07:32 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4a73a28b-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:07:30 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184649380155.40519092477825;
 Thu, 17 Oct 2024 10:04:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a73a28b-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184651; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Wpe+oEVSbYV3IhV6IBjYPlx3kNNAazLZxGPKXgbAFTVtxCHAg/uvodXXUT/rWOCuD19nIC5W8lVQmZx5Ts1f+Bv5N1XqfQ2gsBsvjMIhyKab5SJRbseFJZO/rILifvLmjtEQhi+tY7xpgyaH+1f8J/KXnG4AHUdZYzxOT57/V5I=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184651; h=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=m7ZLsFa0scaQr3iKRnGjSr9xOOYoJU1g28IpOugO1dA=; 
	b=fKe7VX5oXbm9z9WyEMvAegXBpNfFZ2Hse/EWr6Ch9WPR84VWTOHGyApauOUNWW39+4VAo1j0hgIELO/vScTBytZJQd5Lhv2W4dYORyFTz6kB31RO5leLk0hsJHKTOsAACHFZFRDBtIUGY/ixRxiasV7ZoRfgVkkq5DGapym7r7w=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184651;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=m7ZLsFa0scaQr3iKRnGjSr9xOOYoJU1g28IpOugO1dA=;
	b=hPMDsb+3XYBveCTZ/4OUIthAHB6gh8TRBAWsQR+H7lvmIEYMvuFTlIg+5krCZaHr
	atgYbglbip2cXpVnKto59kHe+ApwYH80LZ8NjvUuMe0dQhDf5Ub9WL4ehXnOIRPALE1
	Wh47WspqpHO/viBaxPtIhxshp6Zi3YbkLbwK8qNE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 27/44] x86/boot: relocate kextra into boot info
Date: Thu, 17 Oct 2024 13:03:07 -0400
Message-Id: <20241017170325.3842-28-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Move kextra into struct boot_info, thus no longer needed to be passed as a
parameter to create_dom0.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  1 +
 xen/arch/x86/setup.c                | 12 ++++++------
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 8b63eb27d6dd..8dcda42b3400 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -57,6 +57,7 @@ struct boot_module {
 struct boot_info {
     const char *loader;
     const char *cmdline;
+    const char *kextra;
 
     paddr_t memmap_addr;
     size_t memmap_length;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e7573bc3f40b..2574d2f1fdb4 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -945,8 +945,7 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(struct boot_info *bi,
-                                         const char *kextra)
+static struct domain *__init create_dom0(struct boot_info *bi)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
 
@@ -1000,15 +999,15 @@ static struct domain *__init create_dom0(struct boot_info *bi,
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->mod->string || kextra )
+    if ( image->mod->string || bi->kextra )
     {
         if ( image->mod->string )
             safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
                         bi->loader));
 
-        if ( kextra )
+        if ( bi->kextra )
             /* kextra always includes exactly one leading space. */
-            safe_strcat(cmdline, kextra);
+            safe_strcat(cmdline, bi->kextra);
 
         /* Append any extra parameters. */
         if ( skip_ioapic_setup && !strstr(cmdline, "noapic") )
@@ -1102,6 +1101,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         *kextra = '\0';
         kextra += 3;
         while ( kextra[1] == ' ' ) kextra++;
+        bi->kextra = kextra;
     }
     cmdline_parse(bi->cmdline);
 
@@ -2114,7 +2114,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(bi, kextra);
+    dom0 = create_dom0(bi);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:21:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:21:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821055.1234867 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UBJ-0007Cm-6c; Thu, 17 Oct 2024 17:21:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821055.1234867; Thu, 17 Oct 2024 17:21: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 1t1UBJ-0007Bv-28; Thu, 17 Oct 2024 17:21:01 +0000
Received: by outflank-mailman (input) for mailman id 821055;
 Thu, 17 Oct 2024 17: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tz2-00014B-6A
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:20 +0000
Received: from sender3-of-o57.zoho.com (sender3-of-o57.zoho.com
 [136.143.184.57]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 66b991cd-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:08:18 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172918465678522.81224609932019;
 Thu, 17 Oct 2024 10:04:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 66b991cd-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184659; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=eJQfjQzV3ePGKVDU/vX+th6KQbjrtVB9sjDQeUGVsjDIFi4di3rClsfJgPbehrTqzz9ebdpK4KpyaUmr1fxVUwwT53IeHcIzP9AfeeqXeGoQC9etWyJ/KMd+ltjqPJmP24qSO9dNJl9y1S2f/TQvoEMcMgqtdOcHF/PwNw0Iu54=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184659; h=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=Rp7RzI1QNTY5hwhage3xG8298106lOX2KeM4idRZunk=; 
	b=Dk6/hSvBUPh+Pertq86eqcZvACCkSta0TQLCxH7pCwLRVLo5HtlrwUM0KSWTe0dk4frrIxb/EonAhgaQ++trEEmrGNGB7OKkhEAfenwdA1z/HKEvLlawEEczn21KAwg8QFmexu7mxKl6rX2/ELwF/j6kPW3FYCaizrrzBCg4HW4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184659;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Rp7RzI1QNTY5hwhage3xG8298106lOX2KeM4idRZunk=;
	b=ai0q7Ip3Elh0GwZq/CZicDNx8l6vfbr4f8leXo+qnk7k+1Ip5MdyjE2yPZ83Qu9B
	+Wy4X8S/7Re51tzqVgcJ+7HujdkFot0pszNkEZ9j9N5mJeDocyqbaKVXHS6Zu2vbwUA
	H2RWSvZATWvk3q9dQy7+HhMg9/NpQ5w5NaTw+3lo=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 33/44] x86/boot: convert initial_images to struct boot_module
Date: Thu, 17 Oct 2024 13:03:13 -0400
Message-Id: <20241017170325.3842-34-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The variable initial_images is used for tracking the boot modules passed in by
the boot loader. Convert to a struct boot_module and adjust the code that uses
it accordingly.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- coding style changes
---
 xen/arch/x86/setup.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e6f1208d5807..f5cd7eeb157c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -276,7 +276,7 @@ custom_param("acpi", parse_acpi_param);
 
 static const char *cmdline_cook(const char *p, const char *loader_name);
 
-static const module_t *__initdata initial_images;
+static const struct boot_module *__initdata initial_images;
 
 struct boot_info __initdata xen_boot_info;
 
@@ -335,8 +335,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = initial_images[i].mod_start;
-        unsigned long end = start + PFN_UP(initial_images[i].mod_end);
+        unsigned long start = initial_images[i].mod->mod_start;
+        unsigned long end = start + PFN_UP(initial_images[i].mod->mod_end);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -352,10 +352,11 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
+        uint64_t start =
+            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
 
         init_domheap_pages(start,
-                           start + PAGE_ALIGN(initial_images[i].mod_end));
+                           start + PAGE_ALIGN(initial_images[i].mod->mod_end));
     }
 
     bi->nr_modules = 0;
@@ -1379,11 +1380,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    /*
-     * The field bi->mods[0].mod points to the first element of the module_t
-     * array.
-     */
-    initial_images = bi->mods[0].mod;
+    initial_images = bi->mods;
 
     for ( i = 0; i < bi->nr_modules; i++ )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:21:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:21:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821049.1234852 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UBE-0006nF-Ju; Thu, 17 Oct 2024 17:20:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821049.1234852; Thu, 17 Oct 2024 17: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 1t1UBE-0006n6-FK; Thu, 17 Oct 2024 17:20:56 +0000
Received: by outflank-mailman (input) for mailman id 821049;
 Thu, 17 Oct 2024 17:20: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tym-00014B-Dl
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:04 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5cce03bf-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:08:01 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184654449478.7806231697002;
 Thu, 17 Oct 2024 10:04:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5cce03bf-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184656; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=BlgBeqvn+5njIBvSNaCrFnXfqcjRi9m0UBXa6PxjfXpvZzE0QwNpMivSL8ZtGGpLd38Xry+JuznYGJ4Ns18e8nif6bTgUCzlbp2pooTphmbOqBrZlsUHf2dCVxkZpAbhGlxcfEpgXczcQcR2dbjzGRsElEE6qHgqZQzNQHz+nYM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184656; h=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=F4Lz7sqO+ktRyIvGIcZPYbApzi/uegkQRLWv0yMSK6A=; 
	b=i1cQlB2zdS+kuEpuagXx7vqCgMt2tUD0HHdNwjMdZ5IzSWteDP7CpMl1tTLo67j27blkl4EfmBkJIgQMKVE9G5Uvt4RBkkepJIumO+TmmIy2SOEQ/Je2FAGk5EkLR1krxTpsfhyM1Vxr09ktOg4Tc9KCQ8MdFk0EZ9yIpiO4cQE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184656;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=F4Lz7sqO+ktRyIvGIcZPYbApzi/uegkQRLWv0yMSK6A=;
	b=SWjNeTJDj4gjiqiwKRVV+QEHiABcJX5F7SYtw8CGejLsHocWv8fGgt+nbdPVaOLw
	5sN38TetRvO1d87E+6R56E6cnSllqkElbnrWU28tYq5E2uwaYjJT79y+DOcV1QnNSKj
	jEtIr/V/xUPFKYaBB8JKDQ2317HCBZMH3P4Nyx4I=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 31/44] x86/boot: convert dom0_construct_pvh to struct boot_module
Date: Thu, 17 Oct 2024 13:03:11 -0400
Message-Id: <20241017170325.3842-32-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes both the kernel and ramdisk parameters over to struct
boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/dom0_build.c             |  3 +--
 xen/arch/x86/hvm/dom0_build.c         | 11 +++++------
 xen/arch/x86/include/asm/dom0_build.h |  7 +++----
 3 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 1d05ee53a6d8..71b2e3afc1a1 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -610,8 +610,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
-                                cmdline);
+        rc = dom0_construct_pvh(d, image, initrd, cmdline);
     else if ( is_pv_domain(d) )
         rc = dom0_construct_pv(d, image, initrd, cmdline);
     else
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 3dd913bdb029..beaa1d492077 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -1300,10 +1300,9 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain *d)
     }
 }
 
-int __init dom0_construct_pvh(struct domain *d, const module_t *image,
-                              unsigned long image_headroom,
-                              module_t *initrd,
-                              const char *cmdline)
+int __init dom0_construct_pvh(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, const char *cmdline)
 {
     paddr_t entry, start_info;
     int rc;
@@ -1347,8 +1346,8 @@ int __init dom0_construct_pvh(struct domain *d, const module_t *image,
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image, image_headroom, initrd, bootstrap_map(image),
-                         cmdline, &entry, &start_info);
+    rc = pvh_load_kernel(d, image->mod, image->headroom, initrd->mod,
+                         bootstrap_map_bm(image), cmdline, &entry, &start_info);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 2ce5ea3851af..8f7b37f3d308 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -17,10 +17,9 @@ int dom0_construct_pv(
     struct domain *d, const struct boot_module *image,
     struct boot_module *initrd, const char *cmdline);
 
-int dom0_construct_pvh(struct domain *d, const module_t *image,
-                       unsigned long image_headroom,
-                       module_t *initrd,
-                       const char *cmdline);
+int dom0_construct_pvh(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, const char *cmdline);
 
 unsigned long dom0_paging_pages(const struct domain *d,
                                 unsigned long nr_pages);
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:21:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:21:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821053.1234862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UBI-00079m-TO; Thu, 17 Oct 2024 17:21:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821053.1234862; Thu, 17 Oct 2024 17:21: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 1t1UBI-00079f-Q8; Thu, 17 Oct 2024 17:21:00 +0000
Received: by outflank-mailman (input) for mailman id 821053;
 Thu, 17 Oct 2024 17: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Txm-00014B-Tg
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:07:02 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 38cd6bc6-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:07:01 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184645708207.7226848723384;
 Thu, 17 Oct 2024 10:04:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38cd6bc6-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184648; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=SJYiZ1sUG49vabG9vcQXWN55T3uHptNU1UAWTTCUhGuzX4sb0NITpr7LUck7C36p+VnZutGul0pYr3k/mi5VufsxCfhs707nEBT40jWiundcnHOgJ2dgZHbd8o1vQ5VAE6CWUzBYCfQlxElg3z536OpmW8X9hj97UtbtQZgL3FE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184648; h=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=AlPw4EAVQKE/AEdlatH3NgpfKfcwbCqOnaIcZsRcFfU=; 
	b=NkkOhsKT9bH/kMaNOkR4KvOxRRnXWpggDWemdGITiY/O8ZMlsVUT6hXAxhjRJNW2DFTk7zpcwIGEqO0wdD0QjNcYDzV82phiDs18mZkNrMIrbEZJzxRj48e6ZMio4mo+95N0fxCKNFQmQNAbrzVfCCnyKZY3x65vToK2GAxFqFE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184648;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=AlPw4EAVQKE/AEdlatH3NgpfKfcwbCqOnaIcZsRcFfU=;
	b=ncTHZpOwvInORTU5zOa2lR3cK3RNc3VWl35npYLPcApdMoUXNO9cukYWWx/o0ETh
	niJYbKYIKLrtbv/yQDByfZDl9hjQMNvKBjsxQud9flWzSIK7bwiOcseBGMZfefcFKYs
	c8oP/zx5pmKlNkMQLFICiZxommBIEArKPW2js30g=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 24/44] x86/boot: remove module_map usage by ramdisk loading
Date: Thu, 17 Oct 2024 13:03:04 -0400
Message-Id: <20241017170325.3842-25-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The ramdisk loading is the last user of module_map, remove
its usage and any remaining remnants of module_map.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- set excessive module check down to MAX_NR_BOOTMODS
---
 xen/arch/x86/setup.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 91110ba96f73..08319f871a5d 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1036,7 +1036,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
-    unsigned long nr_pages, raw_max_page, module_map[1];
+    unsigned long nr_pages, raw_max_page;
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
@@ -1186,15 +1186,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         panic("dom0 kernel not specified. Check bootloader configuration\n");
 
     /* Check that we don't have a silly number of modules. */
-    if ( bi->nr_modules > sizeof(module_map) * 8 )
+    if ( bi->nr_modules > MAX_NR_BOOTMODS )
     {
-        bi->nr_modules = sizeof(module_map) * 8;
-        printk("Excessive boot modules - using the first %u only\n",
+        bi->nr_modules = MAX_NR_BOOTMODS;
+        printk("Excessive multiboot modules - using the first %u only\n",
                bi->nr_modules);
     }
 
-    bitmap_fill(module_map, bi->nr_modules);
-    __clear_bit(0, module_map); /* Dom0 kernel is always first */
+    /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
     bi->mods[0].flags = BOOTMOD_FLAG_X86_CONSUMED;
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:21:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:21:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821058.1234882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UBN-0007s1-Fr; Thu, 17 Oct 2024 17:21:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821058.1234882; Thu, 17 Oct 2024 17:21: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 1t1UBN-0007rs-Bs; Thu, 17 Oct 2024 17:21:05 +0000
Received: by outflank-mailman (input) for mailman id 821058;
 Thu, 17 Oct 2024 17:21: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tzs-0008TH-3K
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:09:12 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 86559b7f-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:09:11 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184665301732.0723237960185;
 Thu, 17 Oct 2024 10:04:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86559b7f-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184668; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=VMQ+bGVq9sllLGMYOT9NujBbHIYd1PyHiSqvZcsqfSqi3fbdcyF8uCB4UffqLq+rttutct2vQuff8Cm68oMs2A0PiIKPgh63dCK6kg8db51xA2lfu2XXsImLkSSQZUayMnKGYaNfUqE2bXaPNI9KAh9O4ClgvAQSnduUy9mX2TQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184668; h=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=M5ZqTV3hdrjp9T+eS9L5DEYe6kUmW2KTxCnzOajAfpE=; 
	b=cJV/c4hN5XBjioZluQlAfs8pcUWameU1dIIU+vfl/bPdsrP5ouvEGQnbprqmny4isWbTZuxsAxP9OO4G/ZbP+HUkEiFZDR/N4zGq/bURDX51P6zE04PQYZ3TuVG7x2sQeWtjeRyvWa1xorLgGh59638FvzA8aowzkzml9NciV+4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184668;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=M5ZqTV3hdrjp9T+eS9L5DEYe6kUmW2KTxCnzOajAfpE=;
	b=vWM3I32nrj0Q9VLOHMOj77lAL0+AxCLKzgAmv40s/POtYaQXn7hPJOkvfEVDnFci
	ZXLo4KHTW97dvYUxoRO+gbdemQMHe8hA47+yxzwOn+xJOYDYZwTPqRsEcPD+1Zk2yJN
	4iqmuf1VrDGhJKkZ8qq/WeBp/1Ut2e5a0U0qiMdc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 40/44] x86/boot: add cmdline to struct boot_domain
Date: Thu, 17 Oct 2024 13:03:20 -0400
Message-Id: <20241017170325.3842-41-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a container for the "cooked" command line for a domain.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h |  4 ++++
 xen/arch/x86/setup.c                  | 18 ++++++++----------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index d6264d554dba..00f7d9267965 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -8,9 +8,13 @@
 #ifndef __XEN_X86_BOOTDOMAIN_H__
 #define __XEN_X86_BOOTDOMAIN_H__
 
+#include <public/xen.h>
+
 struct boot_module;
 
 struct boot_domain {
+    char cmdline[MAX_GUEST_CMDLINE];
+
     domid_t domid;
 
     struct boot_module *kernel;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e74526e20b5b..1aa063facfce 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -946,8 +946,6 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
 
 static struct domain *__init create_dom0(struct boot_info *bi)
 {
-    static char __initdata cmdline[MAX_GUEST_CMDLINE];
-
     struct xen_domctl_createdomain dom0_cfg = {
         .flags = IS_ENABLED(CONFIG_TBOOT) ? XEN_DOMCTL_CDF_s3_integrity : 0,
         .max_evtchn_port = -1,
@@ -990,16 +988,16 @@ static struct domain *__init create_dom0(struct boot_info *bi)
     if ( bd->kernel->cmdline || bi->kextra )
     {
         if ( bd->kernel->cmdline )
-            safe_strcpy(cmdline, cmdline_cook(__va(bd->kernel->cmdline),
+            safe_strcpy(bd->cmdline, cmdline_cook(__va(bd->kernel->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
             /* kextra always includes exactly one leading space. */
-            safe_strcat(cmdline, bi->kextra);
+            safe_strcat(bd->cmdline, bi->kextra);
 
         /* Append any extra parameters. */
-        if ( skip_ioapic_setup && !strstr(cmdline, "noapic") )
-            safe_strcat(cmdline, " noapic");
+        if ( skip_ioapic_setup && !strstr(bd->cmdline, "noapic") )
+            safe_strcat(bd->cmdline, " noapic");
 
         if ( (strlen(acpi_param) == 0) && acpi_disabled )
         {
@@ -1007,14 +1005,14 @@ static struct domain *__init create_dom0(struct boot_info *bi)
             safe_strcpy(acpi_param, "off");
         }
 
-        if ( (strlen(acpi_param) != 0) && !strstr(cmdline, "acpi=") )
+        if ( (strlen(acpi_param) != 0) && !strstr(bd->cmdline, "acpi=") )
         {
-            safe_strcat(cmdline, " acpi=");
-            safe_strcat(cmdline, acpi_param);
+            safe_strcat(bd->cmdline, " acpi=");
+            safe_strcat(bd->cmdline, acpi_param);
         }
     }
 
-    if ( construct_dom0(d, bd->kernel, bd->ramdisk, cmdline) != 0 )
+    if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:21:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:21:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821059.1234887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UBN-0007uu-Rm; Thu, 17 Oct 2024 17:21:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821059.1234887; Thu, 17 Oct 2024 17:21: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 1t1UBN-0007tz-KL; Thu, 17 Oct 2024 17:21:05 +0000
Received: by outflank-mailman (input) for mailman id 821059;
 Thu, 17 Oct 2024 17:21: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1U04-0008TH-IH
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:09:24 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8dc2d6f9-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:09:23 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184667892741.9331042535918;
 Thu, 17 Oct 2024 10:04:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8dc2d6f9-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184670; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=WVR/lDK+04iVOVW/0H/mHVl9L6kUHWCNJWWyghZxCuhKlHc4yQfq8WpNiXnkMQugs8k+RIccLmVyDuEDFkMARnlnSPqKZPEAl64FEOlraHKZDogGGgAEF6HzAU9IxcfVwSUHYV8ZJ/A4jhv4/cONHMBDlcbNF156qAXxTUhe268=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184670; h=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=+1GsfAAD9TH3Wlh8fsiZ1qgiG1+d1IF1Bk8zaWFZI9U=; 
	b=ebrqyv3CKounmHSUNcjhbQviXOLghOgMdrTbkGE8+YK5rCsdZgkVnYdXASMvjl+x0Nh5ONlzRWzExGSyV2L60T4JDofJbdFIG+bdw4YLtZom81jdKrm0JJekFdYCO9TqHWZ60EcsMVNfIn44RY1Yyi9nSuSh1gDrfB6KVq6TuIk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184670;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=+1GsfAAD9TH3Wlh8fsiZ1qgiG1+d1IF1Bk8zaWFZI9U=;
	b=l53SLPqO/UvAc2AhBCNFOElQLLyAgDloPG62jPyUtOMKRBeTGvV5kg6bPyC6K/19
	ap1KP+Q7nlw1wpt/H1/w+HUzBw2YdaKixh25040M4VyxfJFQG5/Wktq63PkIp/dm4AT
	tpq7/5t2Uh90tGiSRMfz3G3gCVBEIxKvvW2yHvpg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 42/44] x86/boot: convert construct_dom0 to struct boot_domain
Date: Thu, 17 Oct 2024 13:03:22 -0400
Message-Id: <20241017170325.3842-43-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

A struct boot_domain now encapsulates the domain reference, kernel, ramdisk,
and command line for the domain being constructed. As a result of this
encapsulation, construct_dom0 can now take a single struct boot_domain instead
of these four parameters.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- moved back to using variable *d to hold domain reference locally
---
 xen/arch/x86/dom0_build.c        | 8 ++++----
 xen/arch/x86/include/asm/setup.h | 4 +---
 xen/arch/x86/setup.c             | 2 +-
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 71b2e3afc1a1..34b4943de3b1 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -597,10 +597,10 @@ int __init dom0_setup_permissions(struct domain *d)
     return rc;
 }
 
-int __init construct_dom0(struct domain *d, const struct boot_module *image,
-                          struct boot_module *initrd, const char *cmdline)
+int __init construct_dom0(struct boot_domain *bd)
 {
     int rc;
+    struct domain *d = bd->d;
 
     /* Sanity! */
     BUG_ON(!pv_shim && d->domain_id != 0);
@@ -610,9 +610,9 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image, initrd, cmdline);
+        rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, initrd, cmdline);
+        rc = dom0_construct_pv(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index f7958b56eab6..b049dc5ee17e 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -26,9 +26,7 @@ void subarch_init_memory(void);
 
 void init_IRQ(void);
 
-int construct_dom0(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline);
+int construct_dom0(struct boot_domain *d);
 void setup_io_bitmap(struct domain *d);
 
 extern struct boot_info xen_boot_info;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 494e48a7c836..d9ad27093611 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1014,7 +1014,7 @@ static struct domain *__init create_dom0(struct boot_info *bi)
 
     bd->d = d;
 
-    if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
+    if ( construct_dom0(bd) != 0 )
         panic("Could not construct domain 0\n");
 
     return bd->d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:22:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:22:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821077.1234901 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UCq-0001yy-Bv; Thu, 17 Oct 2024 17:22:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821077.1234901; Thu, 17 Oct 2024 17:22: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 1t1UCq-0001yr-92; Thu, 17 Oct 2024 17:22:36 +0000
Received: by outflank-mailman (input) for mailman id 821077;
 Thu, 17 Oct 2024 17:22: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Ty5-00014B-CW
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:07:21 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 439ef11c-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:07:19 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184648189955.1156774966953;
 Thu, 17 Oct 2024 10:04:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 439ef11c-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184650; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Jx5FWTUJn7kqf8t8QVVpiHAbOaUuY0KYLLS8PjdImFLSDBSgmcb5CqgW2eQ7YO1J8rMna7coslGxDAHaORRg8OJafEAxmupT2+fNsf2RfBdd+d0f77TZO0ovPMZngNT7ilEYSUewhSLcjFa9EjQ86hyktlC40hAFgzkoAjyf6ug=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184650; h=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=8tl89rB/YSG6P4YyPJkHaSNB7c9SwgIpSdiGSHM6J/8=; 
	b=RExN4TJGaQZLLvhfmGSAGdXm1MPg3LiS4f09hJdFqB+EPckERAXHpALFhdhGNhPMYgQrrRoXNEyT91lIdvS54LtkxXJSM5vFU5XtUuR7rrQ/G/Tr68DEm/gCsDe3VV2RBHNoHDevdkhJWTdtI3d+5wleQsL+b7vA8heh01CNHYI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184650;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=8tl89rB/YSG6P4YyPJkHaSNB7c9SwgIpSdiGSHM6J/8=;
	b=tF0OR6hy1R8IyNULd+7NLrpKf2Ht0ZsIq+rTNtMMoLueOPEEykIyyABOReFP8eqB
	aa1zVpW58kq/qdZOO+O1tnNtzl0JkQjzs50PbFAH2JEDX+FzMbxUMkbZsu3AGb0OR2n
	00MTduYm3x8HgOtCjKBVOj0RjGr6hv0QIIH1vM4g=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 26/44] x86/boot: convert construct_dom0 to use struct boot_module
Date: Thu, 17 Oct 2024 13:03:06 -0400
Message-Id: <20241017170325.3842-27-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The construct_dom0 function is converted to consume struct boot_module
instances for the kernel and ramdisk. With this change, it is no longer
necessary for the internal use of struct mod by create_dom0, so they are
changed to struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/dom0_build.c        | 12 +++++++-----
 xen/arch/x86/include/asm/setup.h |  6 ++----
 xen/arch/x86/setup.c             | 19 +++++++++----------
 3 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 8d56705a0861..1eff3192f72d 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -13,6 +13,7 @@
 #include <xen/softirq.h>
 
 #include <asm/amd.h>
+#include <asm/bootinfo.h>
 #include <asm/dom0_build.h>
 #include <asm/guest.h>
 #include <asm/hpet.h>
@@ -596,9 +597,8 @@ int __init dom0_setup_permissions(struct domain *d)
     return rc;
 }
 
-int __init construct_dom0(struct domain *d, const module_t *image,
-                          unsigned long image_headroom, module_t *initrd,
-                          const char *cmdline)
+int __init construct_dom0(struct domain *d, const struct boot_module *image,
+                          struct boot_module *initrd, const char *cmdline)
 {
     int rc;
 
@@ -610,9 +610,11 @@ int __init construct_dom0(struct domain *d, const module_t *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image, image_headroom, initrd, cmdline);
+        rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
+                                cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, image_headroom, initrd, cmdline);
+        rc = dom0_construct_pv(d, image->mod, image->headroom, initrd->mod,
+                               cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 729f68ca23b8..72d183e8a4de 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -27,10 +27,8 @@ void subarch_init_memory(void);
 void init_IRQ(void);
 
 int construct_dom0(
-    struct domain *d,
-    const module_t *image, unsigned long image_headroom,
-    module_t *initrd,
-    const char *cmdline);
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, const char *cmdline);
 void setup_io_bitmap(struct domain *d);
 
 extern struct boot_info xen_boot_info;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 5bc667b8b4d4..e7573bc3f40b 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -945,7 +945,7 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(const struct boot_info *bi,
+static struct domain *__init create_dom0(struct boot_info *bi,
                                          const char *kextra)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
@@ -961,21 +961,19 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
-    unsigned long headroom;
     unsigned int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
-    module_t *image, *initrd;
+    struct boot_module *image, *initrd;
     struct domain *d;
     domid_t domid;
 
     /* Map boot_module to mb1 module for dom0 */
-    image = bi->mods[0].mod;
-    headroom = bi->mods[0].headroom;
+    image = &bi->mods[0];
 
     /* Map boot_module to mb1 module for initrd */
     if ( mod_idx < 0 )
         initrd = NULL;
     else
-        initrd = bi->mods[mod_idx].mod;
+        initrd = &bi->mods[mod_idx];
 
     if ( opt_dom0_pvh )
     {
@@ -1002,10 +1000,11 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->string || kextra )
+    if ( image->mod->string || kextra )
     {
-        if ( image->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->string), bi->loader));
+        if ( image->mod->string )
+            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
+                        bi->loader));
 
         if ( kextra )
             /* kextra always includes exactly one leading space. */
@@ -1028,7 +1027,7 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
         }
     }
 
-    if ( construct_dom0(d, image, headroom, initrd, cmdline) != 0 )
+    if ( construct_dom0(d, image, initrd, cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:22:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:22:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821079.1234913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UCs-0002Fb-LZ; Thu, 17 Oct 2024 17:22:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821079.1234913; Thu, 17 Oct 2024 17:22: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 1t1UCs-0002FS-G7; Thu, 17 Oct 2024 17:22:38 +0000
Received: by outflank-mailman (input) for mailman id 821079;
 Thu, 17 Oct 2024 17:22: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1TzI-00014B-Ru
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:08:36 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 70cf6943-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:08:35 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184659192935.1571835611051;
 Thu, 17 Oct 2024 10:04:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 70cf6943-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184661; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=cLxxMYz4+nyr7jfi+Ep3ytFff8XZcen7miLa1T8mjFeYdfPvpAohjPHA18fZGV7CwfGx2kYxTRpjiygaILG0fMG+7NsOxVGofa8eurTy/btluC2cESCL1BWJsLsS+2nbA9tHAni7FW3jnK9vbKBqZ3N2ZLqpNWcNY0CpbdbgdSg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184661; h=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=0gjJz5LNIJtqKeHWTU5DRHYNSoNLJ9iVjYbe2ie5Je8=; 
	b=LXu/AVLme8Hl12MVfGEEhOFM4w+wD3MIYbn9A2rKMcaO22wZzkDN7AOMmtxTg4htOmiiU9TLrNPUSdfP5Fwh0r5GXhZfTttuU7T163/6NactU37BfI7HgxRRsc7a4KTyb/z12Qsb7jd397ejSO9r2Vz64rUlf/Unz7MO2MBEyDY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184661;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=0gjJz5LNIJtqKeHWTU5DRHYNSoNLJ9iVjYbe2ie5Je8=;
	b=RTC1S6GK7APnbt9YKRdB5S/2iypzfyIc9IJMFjUFLIIMpN9R4tfbcogvXrRTsZye
	LkRtSdNC5/MznK8MNY5fOVEo5ifLJh0OUK+9SeV8rJ3OlbEhUV+xoMnCW+Ca7OrQSZL
	d1auH6xRqFx8kJEkgyOfDTD1QnTMEVt4I7lkOwZA=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 35/44] x86/boot: remove usage of mod_end by discard_initial_images
Date: Thu, 17 Oct 2024 13:03:15 -0400
Message-Id: <20241017170325.3842-36-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This eliminates usage of early_mod by discard_initial_images

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/setup.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f8b9c164c1cb..4d53292aa444 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -350,10 +350,9 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t start =
-            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
+        uint64_t start = bi->mods[i].start;
 
-        init_domheap_pages(start, start + PAGE_ALIGN(bi->mods[i].mod->mod_end));
+        init_domheap_pages(start, start + PAGE_ALIGN(bi->mods[i].size));
     }
 
     bi->nr_modules = 0;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:22:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:22:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821084.1234922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UD1-0002gi-S0; Thu, 17 Oct 2024 17:22:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821084.1234922; Thu, 17 Oct 2024 17: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 1t1UD1-0002gY-Oi; Thu, 17 Oct 2024 17:22:47 +0000
Received: by outflank-mailman (input) for mailman id 821084;
 Thu, 17 Oct 2024 17:22: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Tyd-00014B-Kw
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:07:55 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 58218783-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:07:53 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184653228647.9822276705668;
 Thu, 17 Oct 2024 10:04:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58218783-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184655; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Jld2HDSz4LYuX9nEW6HUuGh4+nl1b+M4vtjnzZJX6kqQvNPTjxuJPrjUw3/bC4nuF8SiiEjOB72ejNwFlwp+qc40eeadiuImnIAOtTwGO86x46ORGtbsWWjn0YyQVK/pT2pZNkuYu/Jp6Cw5MwqMZtPODq9Ai5SONtrfomgssJs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184655; h=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=/WocqNvqWMovNBKSHYsx06yhaw6uzqBVu1livQAQNWE=; 
	b=GtY7Fy0eheiLwmG68C3oilhZ/IrCfd5rZ2SC+9E3QmxsHEvZrJntySo/8BN4Zy/bfGuM5nLJc2QocODobdHomG0aA7FWh+mgkG6vowaSfrbG416+s0ukE/bTHtihXLvV1A/i22ED5t/TV0x/gq+u5Z8m5OP2F8jR8QrblRlIlgg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184655;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=/WocqNvqWMovNBKSHYsx06yhaw6uzqBVu1livQAQNWE=;
	b=TftWHWDt5PjjLKEvUeJw+DLFHVsXNW7/WDUktKsLLJ1QiLmExiQ3RgXqSJnK4y4J
	64z7HcX5gmoMdbw5ALEiKCM3WuB/+20jOAsSWjQP1pKlUS6VxkDTOBzSayeS+6SZy4R
	BQRjJDBJfmw2s1CGNwNYCZ7Q2WSrDQrOlbfPiI2U=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 30/44] x86/boot: convert dom0_construct_pv initrd param to struct boot_module
Date: Thu, 17 Oct 2024 13:03:10 -0400
Message-Id: <20241017170325.3842-31-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes the type for the initrd parameter of dom0_construct_pv to be struct
boot_module. This conversion requires several adjustments throughout dom0_construct_pv
to account for the type change. Removes the usage of early_mod field for ramdisk module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- changed initrd_mfn initialization to _mfn(0)
---
 xen/arch/x86/dom0_build.c             |  2 +-
 xen/arch/x86/include/asm/dom0_build.h |  2 +-
 xen/arch/x86/pv/dom0_build.c          | 29 +++++++++++++++------------
 3 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 54db578dd29f..1d05ee53a6d8 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -613,7 +613,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
         rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
                                 cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, initrd->mod, cmdline);
+        rc = dom0_construct_pv(d, image, initrd, cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index a1f36f7d360d..2ce5ea3851af 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -15,7 +15,7 @@ int dom0_setup_permissions(struct domain *d);
 
 int dom0_construct_pv(
     struct domain *d, const struct boot_module *image,
-    module_t *initrd, const char *cmdline);
+    struct boot_module *initrd, const char *cmdline);
 
 int dom0_construct_pvh(struct domain *d, const module_t *image,
                        unsigned long image_headroom,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index f59597e50a11..5e7b543d0cbe 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -356,7 +356,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
 
 static int __init dom0_construct(struct domain *d,
                                  const struct boot_module *image,
-                                 module_t *initrd,
+                                 struct boot_module *initrd,
                                  const char *cmdline)
 {
     int i, rc, order, machine;
@@ -367,7 +367,8 @@ static int __init dom0_construct(struct domain *d,
     unsigned long nr_pt_pages;
     unsigned long alloc_spfn;
     unsigned long alloc_epfn;
-    unsigned long initrd_pfn = -1, initrd_mfn = 0;
+    unsigned long initrd_pfn = -1;
+    mfn_t  initrd_mfn = _mfn(0);
     unsigned long count;
     struct page_info *page = NULL;
     unsigned int flush_flags = 0;
@@ -376,7 +377,7 @@ static int __init dom0_construct(struct domain *d,
     void *image_base = bootstrap_map_bm(image);
     unsigned long image_len = image->size;
     void *image_start = image_base + image->headroom;
-    unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+    unsigned long initrd_len = initrd ? initrd->size : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
@@ -612,7 +613,8 @@ static int __init dom0_construct(struct domain *d,
         initrd_pfn = vinitrd_start ?
                      (vinitrd_start - v_start) >> PAGE_SHIFT :
                      domain_tot_pages(d);
-        initrd_mfn = mfn = initrd->mod_start;
+        initrd_mfn = maddr_to_mfn(initrd->start);
+        mfn = mfn_x(initrd_mfn);
         count = PFN_UP(initrd_len);
         if ( d->arch.physaddr_bitsize &&
              ((mfn + count - 1) >> (d->arch.physaddr_bitsize - PAGE_SHIFT)) )
@@ -627,12 +629,13 @@ static int __init dom0_construct(struct domain *d,
                     free_domheap_pages(page, order);
                     page += 1UL << order;
                 }
-            memcpy(page_to_virt(page), mfn_to_virt(initrd->mod_start),
+            memcpy(page_to_virt(page), maddr_to_virt(initrd->start),
                    initrd_len);
-            mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+            mpt_alloc = initrd->start;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
-            initrd->mod_start = initrd_mfn = mfn_x(page_to_mfn(page));
+            initrd_mfn = page_to_mfn(page);
+            initrd->start = mfn_to_maddr(initrd_mfn);
         }
         else
         {
@@ -640,9 +643,9 @@ static int __init dom0_construct(struct domain *d,
                 if ( assign_pages(mfn_to_page(_mfn(mfn++)), 1, d, 0) )
                     BUG();
         }
-        initrd->mod_end = 0;
+        initrd->size = 0;
 
-        iommu_memory_setup(d, "initrd", mfn_to_page(_mfn(initrd_mfn)),
+        iommu_memory_setup(d, "initrd", mfn_to_page(initrd_mfn),
                            PFN_UP(initrd_len), &flush_flags);
     }
 
@@ -654,7 +657,7 @@ static int __init dom0_construct(struct domain *d,
                nr_pages - domain_tot_pages(d));
     if ( initrd )
     {
-        mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+        mpt_alloc = initrd->start;
         printk("\n Init. ramdisk: %"PRIpaddr"->%"PRIpaddr,
                mpt_alloc, mpt_alloc + initrd_len);
     }
@@ -763,7 +766,7 @@ static int __init dom0_construct(struct domain *d,
         if ( count < initrd_pfn || count >= initrd_pfn + PFN_UP(initrd_len) )
             mfn = pfn++;
         else
-            mfn = initrd_mfn++;
+            mfn = mfn_x(initrd_mfn) + 1;
         *l1tab = l1e_from_pfn(mfn, compat ? COMPAT_L1_PROT : L1_PROT);
         l1tab++;
 
@@ -882,7 +885,7 @@ static int __init dom0_construct(struct domain *d,
         if ( pfn >= initrd_pfn )
         {
             if ( pfn < initrd_pfn + PFN_UP(initrd_len) )
-                mfn = initrd->mod_start + (pfn - initrd_pfn);
+                mfn = paddr_to_pfn(initrd->start) + (pfn - initrd_pfn);
             else
                 mfn -= PFN_UP(initrd_len);
         }
@@ -1052,7 +1055,7 @@ out:
 
 int __init dom0_construct_pv(struct domain *d,
                              const struct boot_module *image,
-                             module_t *initrd,
+                             struct boot_module *initrd,
                              const char *cmdline)
 {
     int rc;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:22:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:22:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821087.1234932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UD3-0002w1-2G; Thu, 17 Oct 2024 17:22:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821087.1234932; Thu, 17 Oct 2024 17:22: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 1t1UD2-0002vs-Uz; Thu, 17 Oct 2024 17:22:48 +0000
Received: by outflank-mailman (input) for mailman id 821087;
 Thu, 17 Oct 2024 17:22: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Txw-00014B-BO
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:07:12 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3e59ac53-8caa-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:07:10 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184646961494.5555495958281;
 Thu, 17 Oct 2024 10:04:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3e59ac53-8caa-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729184649; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=VB+bghv1DBQjUSk6ujnGUFjyWy7/8DtSUjB1NYK7UJdnn/0ZN/KOflLsCNqflpF1P4VZ+xydvKkSUnQPoK0Ybxu5XiJ6j5QcBvUblWAip2UJfHctY4BUX1Pv8+oGs1pfEpzrXtetcy0x8JuMgHoEazs4VtrAvU5b3NEd5NfQNzo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184649; h=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=aspkH3LwBaiSwnG3lvyv34jbI4VkIKf8lSHUsreXCUg=; 
	b=m2lyBFLaShauw3nSRXIaG7+9vbEsLffItwmRIGGKsZva3hr5iNUAb+hitv+mW+Gdz2g3Gdv2SaIAFN2SVesusRWIPVVoQSTmsC6Ids1bgAnbd9buBzf8WCgcfrhin+ERIFC96/YV9xss8bgI1qPBggp+lCzdXRYNKkKL4awEbZw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184649;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=aspkH3LwBaiSwnG3lvyv34jbI4VkIKf8lSHUsreXCUg=;
	b=QPCRMfutIMbiye7CYv0bzR8+gm7BqarP4IB0ntvYD+sjukUu/SthYCBCIlO3mRiM
	d0JEyPs7Qwr5Mh1NVR1FiZE5Lj4txUdSs1TpTzMtAwTlwx8VN2g6M9gFvcMvqPJI7MF
	3MNhBYPPa9vCx3FFXr6MU9EXLb75t+ZCvptM7kT4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 25/44] x86/boot: convert create_dom0 to use boot info
Date: Thu, 17 Oct 2024 13:03:05 -0400
Message-Id: <20241017170325.3842-26-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit changes create_dom0 to no longer take the individual components and
take struct boot_info instead. Internally, it is changed to locate the kernel
and ramdisk details from struct boot_info.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- change headroom back to unsigned long
- make mod_idx unsigned int
---
 xen/arch/x86/setup.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 08319f871a5d..5bc667b8b4d4 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -945,10 +945,8 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(const module_t *image,
-                                         unsigned long headroom,
-                                         module_t *initrd, const char *kextra,
-                                         const char *loader)
+static struct domain *__init create_dom0(const struct boot_info *bi,
+                                         const char *kextra)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
 
@@ -963,9 +961,22 @@ static struct domain *__init create_dom0(const module_t *image,
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
+    unsigned long headroom;
+    unsigned int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
+    module_t *image, *initrd;
     struct domain *d;
     domid_t domid;
 
+    /* Map boot_module to mb1 module for dom0 */
+    image = bi->mods[0].mod;
+    headroom = bi->mods[0].headroom;
+
+    /* Map boot_module to mb1 module for initrd */
+    if ( mod_idx < 0 )
+        initrd = NULL;
+    else
+        initrd = bi->mods[mod_idx].mod;
+
     if ( opt_dom0_pvh )
     {
         dom0_cfg.flags |= (XEN_DOMCTL_CDF_hvm |
@@ -994,7 +1005,7 @@ static struct domain *__init create_dom0(const module_t *image,
     if ( image->string || kextra )
     {
         if ( image->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->string), loader));
+            safe_strcpy(cmdline, cmdline_cook(__va(image->string), bi->loader));
 
         if ( kextra )
             /* kextra always includes exactly one leading space. */
@@ -2104,10 +2115,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
-                       initrdidx < bi->nr_modules ? bi->mods[initrdidx].mod
-                                                  : NULL,
-                       kextra, bi->loader);
+    dom0 = create_dom0(bi, kextra);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:23:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:23:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821098.1234942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UDN-0003mF-A4; Thu, 17 Oct 2024 17:23:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821098.1234942; Thu, 17 Oct 2024 17:23: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 1t1UDN-0003m6-7A; Thu, 17 Oct 2024 17:23:09 +0000
Received: by outflank-mailman (input) for mailman id 821098;
 Thu, 17 Oct 2024 17:23: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1U0L-0008TH-Ha
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:09:41 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 97e63093-8caa-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 19:09:40 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729184670345139.97769028146377;
 Thu, 17 Oct 2024 10:04:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 97e63093-8caa-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729184675; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=h8JXQBZOZrM2p6qZgH3hMcCxqAAhiixQy6xbyCWesNaNXQN80/EoWjREk/VI4hDsVigYxkD2cQ8AWqduewxCD5jRc9TkAdrcKSEashepCRAb/m0Ym8UNCKuq0qL9f8Adqf//U+mfFAaCanF/YULp/tRvrQhhC14nOL69QDayGJE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729184675; h=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=q6fEPJY/wmWNpsEBUPTBtfhYBFq0uC8xsS/EzPvmcH0=; 
	b=MFL9pWy5djDH5+3K4yX5AHL7Q7OgPzSp/eaJU1VyVEbpNOY4B/4AY8Um7E1ThcNAkIDYWElCNv20YHe5BHMbXH4xccMFbfayUVtPMXBDdGjuNX5yVMei+qNLYwbSFl4DS95C/xcMqt1tUn/VLaLhP6zPQpILQh8remgPbrH9COc=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729184675;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=q6fEPJY/wmWNpsEBUPTBtfhYBFq0uC8xsS/EzPvmcH0=;
	b=mm2pa+tS7CPFYPUsuJOT7JtnoBisxyxfn+6/rrXOOFhjav1oHkM9jdlazrPhrwVU
	l3NR4r2XV5Erynnui2pZUWfWUXUjx1e3Dya2JJHWqw5R9w3uj9YWEO8MpHdy1CJgAmb
	kliwcbxi327WlCD1HjcWBwygDmSDfjTURYVwAKjc=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v6 44/44] x86/boot: convert dom0_construct_pvh to struct boot_domain
Date: Thu, 17 Oct 2024 13:03:24 -0400
Message-Id: <20241017170325.3842-45-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With construct_dom0 consuming struct boot_domain, continue passing the
structure down to dom0_construct_pvh.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- revert back to using *d as local reference for struct domain
---
 xen/arch/x86/dom0_build.c             | 2 +-
 xen/arch/x86/hvm/dom0_build.c         | 8 ++++----
 xen/arch/x86/include/asm/dom0_build.h | 4 +---
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 96cd1154b037..f0d2c349095b 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -610,7 +610,7 @@ int __init construct_dom0(struct boot_domain *bd)
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
+        rc = dom0_construct_pvh(bd);
     else if ( is_pv_domain(d) )
         rc = dom0_construct_pv(bd);
     else
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index a3fd5e762dc4..720e08f9346f 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -1299,10 +1299,9 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain *d)
     }
 }
 
-int __init dom0_construct_pvh(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline)
+int __init dom0_construct_pvh(const struct boot_domain *bd)
 {
+    struct domain *d = bd->d;
     paddr_t entry, start_info;
     int rc;
 
@@ -1345,7 +1344,8 @@ int __init dom0_construct_pvh(
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image, initrd, bootstrap_map_bm(image), cmdline,
+    rc = pvh_load_kernel(d, bd->kernel, bd->ramdisk,
+                         bootstrap_map_bm(bd->kernel), bd->cmdline,
                          &entry, &start_info);
     if ( rc )
     {
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 60e9cb21f14d..adbe90bfd034 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -16,9 +16,7 @@ int dom0_setup_permissions(struct domain *d);
 
 int dom0_construct_pv(struct boot_domain *bd);
 
-int dom0_construct_pvh(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline);
+int dom0_construct_pvh(const struct boot_domain *bd);
 
 unsigned long dom0_paging_pages(const struct domain *d,
                                 unsigned long nr_pages);
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:40:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:40:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821206.1234960 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UTv-0003EJ-Rn; Thu, 17 Oct 2024 17:40:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821206.1234960; Thu, 17 Oct 2024 17:40: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 1t1UTv-0003EC-Or; Thu, 17 Oct 2024 17:40:15 +0000
Received: by outflank-mailman (input) for mailman id 821206;
 Thu, 17 Oct 2024 17:40: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 1t1UTu-0003E2-Lu; Thu, 17 Oct 2024 17:40: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 1t1UTu-00089W-K6; Thu, 17 Oct 2024 17:40: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 1t1UTu-0000xa-7W; Thu, 17 Oct 2024 17:40:14 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1UTu-0003kX-70; Thu, 17 Oct 2024 17:40: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=KWgAq5QJdxo1ktI+YWAsK/T+5PF/E5WqmDhjIytc+TY=; b=yTvZjEMG+yUBcMhF9u3ICrCj/U
	Cw7d/QHgN0ximpD72DKPFlX5zkiSA4csG+jINtpNN7g2Y6jVN772k74UPpjjIqDUTmDv9DfPwev28
	WtJc1PwKvVPZHuZWZ6rRsmtFGu+7Zwb89dSuVr34ET+t3FGH/4+ccyuc7mF2+ar2KftE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188165-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188165: 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=b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
X-Osstest-Versions-That:
    xen=47990ecef286606794d607d4ca8703d71c98d659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 17:40:14 +0000

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

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                  b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
baseline version:
 xen                  47990ecef286606794d607d4ca8703d71c98d659

Last test of basis   188097  2024-10-15 18:00:23 Z    1 days
Testing same since   188165  2024-10-17 13:00:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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
   47990ecef2..b3ca3caaf3  b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 17:48:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 17:48:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821234.1234970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UbG-0000EO-Ih; Thu, 17 Oct 2024 17:47:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821234.1234970; Thu, 17 Oct 2024 17:47: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 1t1UbG-0000EH-G5; Thu, 17 Oct 2024 17:47:50 +0000
Received: by outflank-mailman (input) for mailman id 821234;
 Thu, 17 Oct 2024 17:47: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1UbF-0000EB-C7
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 17:47:49 +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 eb3d2d16-8caf-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 19:47:47 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9a0c40849cso180837366b.3
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 10:47:47 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a29719522sm319492566b.28.2024.10.17.10.47.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 10:47:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb3d2d16-8caf-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729187266; x=1729792066; 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=R9LMWjL7Ko3oKrrr/ibTnCEa4SwijRoFqkZNkg83gD8=;
        b=YTECeo5w0zpNsFtWh1MRqzpUZuU6SqCDkDBn3lqb86sOyGDoW4FF1+CZYT36oP+nYA
         UKTyvLFj/miR4++jtLYQLnrPYGBWRVAk/Ywaj/TpRceVMGrruDGkEvqMSF+ssN2qEUVM
         DChYf+Dmz5/3qpv5Krm+zVObJ9l0EmOzYui6U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729187266; x=1729792066;
        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=R9LMWjL7Ko3oKrrr/ibTnCEa4SwijRoFqkZNkg83gD8=;
        b=DTLxNIdGbtEwWCBKgfD1YVxBEPkOZgbLk8jXghdeKM6fZm+Bk4VHDqToykTXdF7K2b
         I2rRn5fSmJg2iJ41zNO7iT4IDpENmWQBiEFB8K7P+BJJpLeG41S9fV6GscgiJlnsSzj3
         rWQ9omwFdpXb5jn4zVOT2WvKXPh3clfYZ93hpizIFFWcuRwzEwNAwTC5UlLTfgf90lmZ
         4xrn6J+Ju47dEZqVI1ymOjkcQPcrXWj+wrOTQJKmNXqAxSGL8bJbCN0RdOXWFvPJf9Jf
         4qKiA0B8kF20HaVGsj8gMX1cOGLI/PmySxzEn8dKtM3yfAONz99jwNH6Fn+B8Az+cvxh
         daHQ==
X-Forwarded-Encrypted: i=1; AJvYcCUeqANDALWOaVayGv297YxKIk32vt2xEGaoIX+ysqDJep41rAE9UibER/OGVyA1+g+tmoCIzipQhMw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwVkPnas1W9z5DD38BVNanD43WVC/gRo5CT7LW5CumqBsmXyne/
	I6P8YcDibg49jpl52X/ZB1HfUdSJ+PiIDGieAAsdZJpKdhILA/AYulUOD+r9HBIYNgykPNdCDkh
	QY9Q=
X-Google-Smtp-Source: AGHT+IF9q7umOZPFy+wzMabUBEuEN5j7ew7pp/3MOn1h7B7NPctrv5bmlbNuo5aqbMQkBHHYg1sGbQ==
X-Received: by 2002:a17:907:930d:b0:a9a:dac:2ab9 with SMTP id a640c23a62f3a-a9a0dac2ec0mr1574105766b.42.1729187266080;
        Thu, 17 Oct 2024 10:47:46 -0700 (PDT)
Message-ID: <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>
Date: Thu, 17 Oct 2024 18:47:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 2/3] ocaml/libs: Fill build failure due to unused
 variable in ocaml macro
To: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
Cc: Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.org>, Anthony PERARD <anthony.perard@vates.tech>,
 Andrii Sultanov <andrii.sultanov@cloud.com>
References: <cover.1729170005.git.javi.merino@cloud.com>
 <d6b98ca75017bf4aa72a69468321705263e66f30.1729170005.git.javi.merino@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <d6b98ca75017bf4aa72a69468321705263e66f30.1729170005.git.javi.merino@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 5:20 pm, Javi Merino wrote:
> On Fedora 40, the build fails with:
>
>     gcc -m64 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-but-set-variable -Wno-unused-local-typedefs   -Werror -O2 -fomit-frame-pointer -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ -MMD -MP -MF .domain_getinfo_stubs_v1.o.d -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE   -fPIC -I/usr/lib64/ocaml -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs/xsd_glue -I/build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include -D__XEN_TOOLS__ -I/build/tools/ocaml/libs\/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include  -c -o domain_getinfo_stubs_v1.o domain_getinfo_stubs_v1.c
>     In file included from domain_getinfo_stubs_v1.c:10:
>     domain_getinfo_stubs_v1.c: In function 'xsd_glue_failwith':
>     /usr/lib64/ocaml/caml/memory.h:275:29: error: unused variable 'caml__frame' [-Werror=unused-variable]
>       275 |   struct caml__roots_block *caml__frame = *caml_local_roots_ptr
>           |                             ^~~~~~~~~~~
>     domain_getinfo_stubs_v1.c:48:9: note: in expansion of macro 'CAMLparam0'
>       48 |         CAMLparam0();
>          |         ^~~~~~~~~~
>     cc1: all warnings being treated as errors
>
> The CAMLparam0 macro is defined in /usr/lib64/ocaml/caml/memory.h:255 as:
>
>     #define CAMLparam0()                                                    \
>       struct caml__roots_block** caml_local_roots_ptr =                     \
>         (DO_CHECK_CAML_STATE ? Caml_check_caml_state() : (void)0,           \
>          &CAML_LOCAL_ROOTS);                                                \
>       struct caml__roots_block *caml__frame = *caml_local_roots_ptr
>
> We can't modify the macro.  Mark the xsd_glue_failwith() function with
> ignore "-Wunused-variable" to prevent gcc from failing the build due
> to the unused variable.
>
> Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
> Signed-off-by: Javi Merino <javi.merino@cloud.com>

That's horrible...

I note the Ocaml manual even says:

"Some C compilers give bogus warnings about unused variables
caml__dummy_xxx at each use of CAMLparam and CAMLlocal. You should
ignore them."  which a brave claim to make...


The problem with pragma gcc is that we support Clang too.

Having had a play, this works too

@@ -45,7 +45,9 @@ static struct custom_operations xsd_glue_xenctrl_ops = {
 static void Noreturn xsd_glue_failwith(
        xc_interface *xch, const char *func, unsigned int line)
 {
+#define caml__frame __attribute__((unused)) caml__frame
        CAMLparam0();
+#undef caml__frame
        CAMLlocal1(msg);
        const xc_error *error = xch ? xc_get_last_error(xch) : NULL;
        char *str = NULL;

and is rather more selective.


However, looking through other bits of memory.h, there's this gem:

#define CAMLnoreturn ((void) caml__frame)

which has existed since db3745919 "suppression des warnings "unused
variable" de gcc" in 2004.

So, I think this is a better fix:

@@ -69,6 +69,7 @@ static void Noreturn xsd_glue_failwith(
        free(str);
 
        caml_raise_with_arg(*caml_named_value("xsg.error_v1"), msg);
+       CAMLnoreturn;
 }
 #define xsd_glue_failwith(xch) xsd_glue_failwith(xch, __func__, __LINE__)
 
and F40 seem happy with the result.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 18:08:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 18:08:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821246.1234992 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1UvE-0002nG-8N; Thu, 17 Oct 2024 18:08:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821246.1234992; Thu, 17 Oct 2024 18:08: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 1t1UvE-0002n9-5Z; Thu, 17 Oct 2024 18:08:28 +0000
Received: by outflank-mailman (input) for mailman id 821246;
 Thu, 17 Oct 2024 18:08: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1UvD-0002lh-2o
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 18:08:27 +0000
Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com
 [2a00:1450:4864:20::542])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cd49b8b9-8cb2-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 20:08:25 +0200 (CEST)
Received: by mail-ed1-x542.google.com with SMTP id
 4fb4d7f45d1cf-5c984352742so1409800a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 11:08:24 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5c98d777fb3sm2994634a12.59.2024.10.17.11.08.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 11:08:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd49b8b9-8cb2-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729188504; x=1729793304; 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=rZfFk2ZgNUx0mu+VU3eD6F1IqPGzjpLkZfAYsb+kTXU=;
        b=FO4QJYI0KrZO98wkOgKlPptoG52aomFEORauMv7Co1xi2ROfiwEHe68bHjRCrgFx0c
         /0O1lV7lMaqet4RDxMzSLQj86nnb9WYszOGjTZtSaEZdfD1DRQ1HZHBMW/qDyU4eWbzk
         amcOQms60ERS/tWqt2PZYdnM4mEi4taFUb4EY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729188504; x=1729793304;
        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=rZfFk2ZgNUx0mu+VU3eD6F1IqPGzjpLkZfAYsb+kTXU=;
        b=cOb3gZ45baJ+nRK9JrDbzQ4aXRh9/7JXzdKJax+LbV+A+4muy+mD6WEesmxhTQKrTE
         Lq4GqFp12r9fAaRvU3to6lZvVsJ4jTvCL4HtcBMhK1pi1HleEqxMMKCdW4HncBdtOhNk
         UpDKSw8WcyrvFBK5w/6fJcFbC3HYb+zJvVBdoLrthKORod1glr13How1/B0Sh1+ruOal
         YuEkU/JXy+OKEsEteCstW1v4aMMM/Zivm3hR64ucjpa5d/ldfcuFWgyq81e5MyWZr2OX
         LBKY4tZMzubqnIiw/G1DgjUSCn+cDQWbjOSpbmLtE19aT+vGBK/F0udPld5pnoKdiOVu
         qquw==
X-Forwarded-Encrypted: i=1; AJvYcCXyW6Q8dSyHJV7G2NziQRngo0blJL8EPfSt5wYACAU3WK100KX75rUKSrZfQM9Va7Kv7HrLVdTy2S8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzxFXqPoTygWuvgpDVII4jLXBlHUyhOg/dOR6nQUHURhtdLycEc
	N3olKpm73aVUb3EuMqhCYsVlT3TCi2Er3rMQ1qzJvJ2mwoP3pT6lAQJ2tGlojxo=
X-Google-Smtp-Source: AGHT+IHgI6ffCwdpp/Pxn9JH7uKr3TJ/j1CLF4L5MixL7nw1qbWrqXJAwCK5plgxCnGM0pbHhsAnyQ==
X-Received: by 2002:a05:6402:280a:b0:5c9:62c3:e7fd with SMTP id 4fb4d7f45d1cf-5c99510f6c3mr7413754a12.16.1729188504272;
        Thu, 17 Oct 2024 11:08:24 -0700 (PDT)
Message-ID: <a3b46327-9bd7-419c-8d31-bff94830a6c6@citrix.com>
Date: Thu, 17 Oct 2024 19:08:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 2/3] ocaml/libs: Fill build failure due to unused
 variable in ocaml macro
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
Cc: Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.org>, Anthony PERARD <anthony.perard@vates.tech>,
 Andrii Sultanov <andrii.sultanov@cloud.com>
References: <cover.1729170005.git.javi.merino@cloud.com>
 <d6b98ca75017bf4aa72a69468321705263e66f30.1729170005.git.javi.merino@cloud.com>
 <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 6:47 pm, Andrew Cooper wrote:
> On 17/10/2024 5:20 pm, Javi Merino wrote:
>> On Fedora 40, the build fails with:
>>
>>     gcc -m64 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-but-set-variable -Wno-unused-local-typedefs   -Werror -O2 -fomit-frame-pointer -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ -MMD -MP -MF .domain_getinfo_stubs_v1.o.d -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE   -fPIC -I/usr/lib64/ocaml -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs/xsd_glue -I/build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include -D__XEN_TOOLS__ -I/build/tools/ocaml/libs\/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include  -c -o domain_getinfo_stubs_v1.o domain_getinfo_stubs_v1.c
>>     In file included from domain_getinfo_stubs_v1.c:10:
>>     domain_getinfo_stubs_v1.c: In function 'xsd_glue_failwith':
>>     /usr/lib64/ocaml/caml/memory.h:275:29: error: unused variable 'caml__frame' [-Werror=unused-variable]
>>       275 |   struct caml__roots_block *caml__frame = *caml_local_roots_ptr
>>           |                             ^~~~~~~~~~~
>>     domain_getinfo_stubs_v1.c:48:9: note: in expansion of macro 'CAMLparam0'
>>       48 |         CAMLparam0();
>>          |         ^~~~~~~~~~
>>     cc1: all warnings being treated as errors
>>
>> The CAMLparam0 macro is defined in /usr/lib64/ocaml/caml/memory.h:255 as:
>>
>>     #define CAMLparam0()                                                    \
>>       struct caml__roots_block** caml_local_roots_ptr =                     \
>>         (DO_CHECK_CAML_STATE ? Caml_check_caml_state() : (void)0,           \
>>          &CAML_LOCAL_ROOTS);                                                \
>>       struct caml__roots_block *caml__frame = *caml_local_roots_ptr
>>
>> We can't modify the macro.  Mark the xsd_glue_failwith() function with
>> ignore "-Wunused-variable" to prevent gcc from failing the build due
>> to the unused variable.
>>
>> Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
>> Signed-off-by: Javi Merino <javi.merino@cloud.com>
> That's horrible...
>
> I note the Ocaml manual even says:
>
> "Some C compilers give bogus warnings about unused variables
> caml__dummy_xxx at each use of CAMLparam and CAMLlocal. You should
> ignore them."  which a brave claim to make...
>
>
> The problem with pragma gcc is that we support Clang too.
>
> Having had a play, this works too
>
> @@ -45,7 +45,9 @@ static struct custom_operations xsd_glue_xenctrl_ops = {
>  static void Noreturn xsd_glue_failwith(
>         xc_interface *xch, const char *func, unsigned int line)
>  {
> +#define caml__frame __attribute__((unused)) caml__frame
>         CAMLparam0();
> +#undef caml__frame
>         CAMLlocal1(msg);
>         const xc_error *error = xch ? xc_get_last_error(xch) : NULL;
>         char *str = NULL;
>
> and is rather more selective.
>
>
> However, looking through other bits of memory.h, there's this gem:
>
> #define CAMLnoreturn ((void) caml__frame)
>
> which has existed since db3745919 "suppression des warnings "unused
> variable" de gcc" in 2004.
>
> So, I think this is a better fix:
>
> @@ -69,6 +69,7 @@ static void Noreturn xsd_glue_failwith(
>         free(str);
>  
>         caml_raise_with_arg(*caml_named_value("xsg.error_v1"), msg);
> +       CAMLnoreturn;
>  }
>  #define xsd_glue_failwith(xch) xsd_glue_failwith(xch, __func__, __LINE__)
>  
> and F40 seem happy with the result.

And https://github.com/ocaml/ocaml/pull/13561 to update Ocaml's
documentation on the matter.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 19:26:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 19:26:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821267.1235014 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1W8J-0000gY-N4; Thu, 17 Oct 2024 19:26:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821267.1235014; Thu, 17 Oct 2024 19: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 1t1W8J-0000gR-KV; Thu, 17 Oct 2024 19:26:03 +0000
Received: by outflank-mailman (input) for mailman id 821267;
 Thu, 17 Oct 2024 19:26: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1W8H-0000gI-GA
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 19:26:01 +0000
Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com
 [2a00:1450:4864:20::643])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a3ef6361-8cbd-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 21:26:00 +0200 (CEST)
Received: by mail-ej1-x643.google.com with SMTP id
 a640c23a62f3a-a9a0ec0a94fso150384266b.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 12:26:00 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68ae637dsm2505766b.75.2024.10.17.12.25.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 12:25:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a3ef6361-8cbd-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729193159; x=1729797959; 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=SuNZu5aefzSwLtRNqfGvpifiTm71LesuuR4WD6zMOrs=;
        b=Gscz4gI64s0FSqctwxLRV0uKFqa7KJK6Mm6lNi5OHAisn4pDqzhl6Z+L03lB88ZTDU
         8L8HOThLhGOJBtfzWjbqwrETWXgPVqP8vI9/AUtW1d+QCojieQvDP1u7BbcFfAImhW+K
         jcZjcUWWYRkl/qJUcmPpx8XvsH92R+ZJ/w+HQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729193159; x=1729797959;
        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=SuNZu5aefzSwLtRNqfGvpifiTm71LesuuR4WD6zMOrs=;
        b=YI6K24BLRGby4TkoZTu2tKgw+NiWf3m+QC5hRTQIoMMH/JF88PYMo2IYOUkSz5FiHV
         YJzUyxMDzyilC5Aab6c6QVkeR8MF2wAsLR90iRmc5NKPxpzKR5G3OFvnesxOJNWR+8e1
         KQxYCAAvEuOoXTo2SW9eWYq8hFbuqxnxL1vsfWOLWjw7st1OanJk63miIWGOqHppRbaR
         U2Ua1Ppbo6GBq4yEHnJhZnTeRxUpQ06XekpnIS2L9pNbPg+hNpz/kPXdaS/+0eqOxOyS
         lYf+PLcTmXvS5XFZ3SLY2ltRmzCvj26rIUzzO0TkS+lOdtdDmbtJjJFbE5dotKp79z0S
         gcVA==
X-Forwarded-Encrypted: i=1; AJvYcCVJU1bibrj+5iDMTu8+gZJd3vXTWdfeu6oriypjHIpvyVZjv6ubMnKkjgmb+nG1+2lWATTKjynjcZ4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxPzENzcOz2Q4/miaX2LdGYPqBoQbes1X6R14PfI48p8GGZLGdR
	A7af7IbUKkrxVBuANsdD5FaN4jsRYsQ8RQ/pMGdxib16qOHqLoPm/wQmF4WnwwY=
X-Google-Smtp-Source: AGHT+IH6ZiS3072UZTrI+W5l6YPINDutsxTy4mu+exhBWmaiIVUJZkuFk1/+xIM1bTYWEV38Cm3utw==
X-Received: by 2002:a17:906:6a14:b0:a99:c9a4:a4da with SMTP id a640c23a62f3a-a9a34e76bf4mr755322566b.61.1729193159361;
        Thu, 17 Oct 2024 12:25:59 -0700 (PDT)
Message-ID: <40f27418-08b3-4b74-889b-12720be8f9c7@citrix.com>
Date: Thu, 17 Oct 2024 20:25:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 0/3] automation: add x86_64 test (linux argo)
To: victorm.lira@amd.com, xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Christopher Clark <christopher.w.clark@gmail.com>,
 Daniel Smith <dpsmith@apertussolutions.com>
References: <cover.1729183051.git.victorm.lira@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <cover.1729183051.git.victorm.lira@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 6:18 pm, victorm.lira@amd.com wrote:
> From: Victor Lira <victorm.lira@amd.com>
>
> Add x86_64 hardware test that creates a Xen Argo communication
> connection between two PVH domains.
>
> To accomplish this, add new build artifacts for Linux and Argo, and
> update the xilinx x86_64 test script.
>
> Victor Lira (3):
>   automation: add linux 6.6.56 artifact
>   automation: add linux argo test artifacts
>   automation: add x86_64 test (linux argo)
>
>  automation/gitlab-ci/build.yaml               | 34 +++++++
>  automation/gitlab-ci/test.yaml                | 10 ++
>  .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 ++++++++++-----
>  .../tests-artifacts/argo/6.6.56.dockerfile    | 95 +++++++++++++++++++
>  .../tests-artifacts/kernel/6.6.56.dockerfile  | 54 +++++++++++
>  5 files changed, 244 insertions(+), 25 deletions(-)
>  create mode 100644 automation/tests-artifacts/argo/6.6.56.dockerfile
>  create mode 100644 automation/tests-artifacts/kernel/6.6.56.dockerfile

I'm afraid that we need to stop doing this test-artefacts like this.

The *-export pattern is nonsense (wasting lots of runner network&disk
and time just to copy data back into Github's artefact store), and the
main reason why we're at ~2T of data total for Xen-project.

We need a project wide expires_in: setting, which will prune all of our
not-most-recent content, and probably make most of that 2T disappear.

But, the test jobs stating what artefacts they want are perfectly
capable of pulling artefacts from somewhere other than an earlier nop
build job, meaning that we could get away with having one artefact
shared by everything, not one artefact copied per user per pipeline into
the artefact store.


I was thinking of experimenting with a separate top-level repo that does
nothing but has a few manual runs to populate artefacts, and having the
Xen tests pull artefacts from here rather than from earlier build jobs.

But, I've not had a chance to play yet, so I don't know for sure if this
is a workable direction.

Alternatively, if anyone has a better idea, I'm all ears.  But, it is
very clear that the *-export pattern is a giant bodge and there are
better ways.


Other notes.  Your dockerfiles use syntax:1 but not heredocs, and
they're also root containers.

Please follow the pattern in
https://lore.kernel.org/xen-devel/178560672106e37648304f5e597cc0b16c8db6db.1729170005.git.javi.merino@cloud.com/T/#u
or one of plenty other containers I've already converted in the past few
months.

Please do not add a new build job just to get a new minor variation of
Xen.  Just enable ARGO in general Xen build.

Although, given that you are now putting in testing from an unsupported
feature, we really need to bump the suggestion to move it to at least
Tech Preview.  (CC Dan/Chris).

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 19:50:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 19:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821278.1235024 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1WW2-00067B-NC; Thu, 17 Oct 2024 19:50:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821278.1235024; Thu, 17 Oct 2024 19:50: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 1t1WW2-000674-Kh; Thu, 17 Oct 2024 19:50:34 +0000
Received: by outflank-mailman (input) for mailman id 821278;
 Thu, 17 Oct 2024 19:50: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1WW1-00066y-SJ
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 19:50:33 +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 11c0da09-8cc1-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 21:50:32 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99e3b3a411so388942466b.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 12:50:32 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68ae549bsm5117766b.77.2024.10.17.12.50.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 12:50:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 11c0da09-8cc1-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729194632; x=1729799432; 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=vs9/oTPCF9qbA4fIhOkXAdawt4YsQJ75+QQenrjo9W8=;
        b=g+ay58BegcRUeuiJMVyN4chcSs4NtbLoFy0u6LBBQ5et9rzJylAS7/1HGXzEEzI+ge
         fNPreG4Bd2HGf2vJYoDAU0lv07sTdVzJnA9Gojx8GpB1QUFRN9flk53thMWUmVgim7sh
         T4Z4PMdXIWUxfIFn4RfxMFQJI4euaSOT3pDLk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729194632; x=1729799432;
        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=vs9/oTPCF9qbA4fIhOkXAdawt4YsQJ75+QQenrjo9W8=;
        b=oMzN9nHVRd6qZ3RCHr9opLM+WYeb286pyBc4r0PwM/n8mw/qXDC+R96nlo8uMhdDRY
         /fg/cNHjp0v49Zp+5Ta373HNKfWHjW5ZoptzhXQA3fqvAJJ5JI5HpkUOyHxT1JIG6upt
         G27sFSalkLQc9DruoLsvqeNLPr/5/wmTbFAsh0q4cyD/dpkEOGzQ+LBTIi6oe7vVaAcH
         ntUJ04Gbv2A70xQFsVGM3pb/b5cxrUAmtKPysxuEyJafPobdR5qDo6rALAdZ4GmABY5z
         /NTIovQajsVKIu9DKTsaIgNqDMDcAdPxUQ/dgJakE8YSiYh+qZepahhwRoojpfQB+Zzj
         IxSA==
X-Forwarded-Encrypted: i=1; AJvYcCXB7baiSlQEvi34pbwSRu7ICCEmovkOhOPrfSB22NZSWTOPZ5b4ldPEq0mFAfnkHJYTm8XcWKvEpKg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxq7Bzm5JGP5HxUBUcr2MAkb5hSyVNfjA1Q5sdjoNTuFVR5pPlF
	bADd4KGmXS/oEGdDm/TIxg8K38/QxMuOq+8eWQ8hcuUkIga8ISqLlGU/yYp4giY=
X-Google-Smtp-Source: AGHT+IGGm9hQThhajV8uvR7MN+R/+zyT2wMidtSx90gj6yM+gGzsQjp2CzRXI9T1N0t2OPnwdeL/lg==
X-Received: by 2002:a17:906:c105:b0:a9a:5b84:ac81 with SMTP id a640c23a62f3a-a9a67f1c8b6mr26315866b.31.1729194632076;
        Thu, 17 Oct 2024 12:50:32 -0700 (PDT)
Message-ID: <66fc898a-e346-4dce-a99a-b8fdf2590511@citrix.com>
Date: Thu, 17 Oct 2024 20:50:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 01/44] x86/boot: move x86 boot module counting into a
 new boot_info struct
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: Christopher Clark <christopher.w.clark@gmail.com>, jason.andryuk@amd.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-2-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-2-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index a6e77c9ed9fc..6201ca0fad19 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -274,16 +275,28 @@ static int __init cf_check parse_acpi_param(const char *s)
>  custom_param("acpi", parse_acpi_param);
>  
>  static const module_t *__initdata initial_images;
> -static unsigned int __initdata nr_initial_images;
> +
> +struct boot_info __initdata xen_boot_info;
> +
> +static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
> +{
> +    struct boot_info *bi = &xen_boot_info;
> +    const multiboot_info_t *mbi = __va(mbi_p);
> +
> +    bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;

Having looked to end of the series, this and a few other expressions are
still awkward.

The nicer way looks like:

struct boot_info __initdata xen_boot_info = {
    .loader = "unknown",
    .cmdline = "",
};

static struct boot_info *__init multiboot_fill_boot_info(unsigned long
mbi_p)
{
    struct boot_info *bi = &xen_boot_info;
    const multiboot_info_t *mbi = __va(mbi_p);
    module_t *mods = __va(mbi->mods_addr);
    unsigned int i;

    if ( mbi->flags & MBI_MODULES )
        bi->nr_modules = mbi->mods_count;

    if ( mbi->flags & MBI_LOADERNAME )
        bi->loader = __va(mbi->boot_loader_name);

    if ( mbi->flags & MBI_CMDLINE )
        bi->cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);

    if ( mbi->flags & MBI_MEMMAP )
    {
        bi->memmap_addr = mbi->mmap_addr;
        bi->memmap_length = mbi->mmap_length;
    }


which is easier to read and follow.  Thoughts?

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 20:07:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 20:07:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821287.1235034 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Wmm-0006Jk-3W; Thu, 17 Oct 2024 20:07:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821287.1235034; Thu, 17 Oct 2024 20:07: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 1t1Wmm-0006Jd-0t; Thu, 17 Oct 2024 20:07:52 +0000
Received: by outflank-mailman (input) for mailman id 821287;
 Thu, 17 Oct 2024 20: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 1t1Wmk-0006JR-NT; Thu, 17 Oct 2024 20: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 1t1Wmk-0002i3-LH; Thu, 17 Oct 2024 20: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 1t1Wmk-0001K5-C5; Thu, 17 Oct 2024 20:07:50 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1Wmk-0002BO-Bc; Thu, 17 Oct 2024 20:07: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=+HGbQyRwq7z/21Ogmgcq6VXF3/hNhjRsRlHH9FLT4r8=; b=GBYJuffZYgE1vAy1xwE86Td9N4
	A58pXG7GZASaCca9hL16YVRu5+G3u8gOalv9EV7hpXxv7XfEClB48PmEF48zyeIMoZVye9bTNh+XP
	YKz/yJTdYsXF2Q9edNJXLfNsJhngSw+bQ3t+nHIEaSTFMc1jaHiqB9Y8GCQ9K4Suulfs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188188-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188188: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=6e197a8ba5e349e511850fc52457992de88c8795
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 20:07:50 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 6e197a8ba5e349e511850fc52457992de88c8795
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    0 days
Failing since        188156  2024-10-17 09:14:11 Z    0 days    3 attempts
Testing same since   188188  2024-10-17 17:12:12 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 20:08:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 20:08:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821295.1235045 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Wnm-0008AK-El; Thu, 17 Oct 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 821295.1235045; Thu, 17 Oct 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 1t1Wnm-0008AD-Ai; Thu, 17 Oct 2024 20:08:54 +0000
Received: by outflank-mailman (input) for mailman id 821295;
 Thu, 17 Oct 2024 20: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=QiKY=RN=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1Wnl-0007In-Dr
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 20:08:53 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20626.outbound.protection.outlook.com
 [2a01:111:f403:200a::626])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9f911df8-8cc3-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 22:08:51 +0200 (CEST)
Received: from MN2PR07CA0005.namprd07.prod.outlook.com (2603:10b6:208:1a0::15)
 by PH7PR12MB6978.namprd12.prod.outlook.com (2603:10b6:510:1b8::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Thu, 17 Oct
 2024 20:08:46 +0000
Received: from BN2PEPF000044AA.namprd04.prod.outlook.com
 (2603:10b6:208:1a0:cafe::68) by MN2PR07CA0005.outlook.office365.com
 (2603:10b6:208:1a0::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.21 via Frontend
 Transport; Thu, 17 Oct 2024 20:08:45 +0000
Received: from SATLEXMB03.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.8069.17 via Frontend Transport; Thu, 17 Oct 2024 20:08:45 +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.39; Thu, 17 Oct
 2024 15:08:42 -0500
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.39; Thu, 17 Oct
 2024 15:08:42 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 15:08:41 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9f911df8-8cc3-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=uxec8+yUAO5vfUzIfaR+7ahhf19vixPzKRE+ZXcak4CzAJc2Qv1CRVdMTdfMAj0skkaLB8KmGecv3WzuA98cGGAR4ulw09FL6N1yT4y4/Gw7aPp8bOrOetFgMm1lM7JV+WYHv1PGXGn4feJl01Wn03ZBdAP80Rdm2NtygJC7NXYDP3S1ypB2BqcshiG4zlLsPCRYFBZa/hDXuLQHi9waMhAC0eF9VLCknMz0pvBEbjZMhIhZV+EUUx7kPrWy1DQR9bxYL0Stom3R8esrDWFKqsNcCFXdF3TlWIXLVUN+XTENZirCgDgomqi0NcGTxdbR2A3dy82C0BC9/erAFJcbiA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=TqqPW2W+OPGRcNbC/wVa0vqFEz+QLEn0XYEmsjLlp4A=;
 b=Tip0xHbXJi5IOdT3yuiCRkv6Lxk4TcjCSp69lzWFOdauLMlRxWLh0gBPw8+Jg5mxMPolFD4LWAgkcBoUSA4ef7hNCUSvb0aWYkvuBwIi+/eo7QvsJPImWCGBrrOZQw+Yk6qaNobFriu1CwHp0G0N7/ldwbIYeCOsGZXAAFTCYWFATc1wRuRt13xDpKhLiNrWsUkI5FLdAYxT7hwtnG9BMs8eOldBV43GgTns88K9Ib89/ti+1hMaVsstAOpmPRNMekr6fqJsbAiNis2EJCX4ir/uIuunFXYKPQy8k7/PYbmSIuijBDHi020uK9q2/fOBPYMXo4P7QX/8WUvo6TcADw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=TqqPW2W+OPGRcNbC/wVa0vqFEz+QLEn0XYEmsjLlp4A=;
 b=cA+wIct5W0ya2GkZhhggJR+l6VQiEMcvMWqOe4vAZS1vIpM8w8gvgYHdkQweknJOOF+1o6Bc+zfWBC/Atn6qnjQWXGJG89qz32mnJEdGAgjsUJFsHHzUbgIWzSHCfJASjSCVQd5K2l4KXwshMiBLwISQJH4YqufuQHNUZYPoJ34=
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: <80976965-8c47-4827-a3a0-db58d9d6f8d8@amd.com>
Date: Thu, 17 Oct 2024 16:08:41 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 02/44] x86/boot: move boot loader name to boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-3-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-3-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044AA:EE_|PH7PR12MB6978:EE_
X-MS-Office365-Filtering-Correlation-Id: 8430e926-85de-4260-c26b-08dceee7813e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?amcyR2V2TkROQWRKL21KeEM1L0wyb3JEZzdIME1ESlFLQ1lBb2ttNEtrb0hJ?=
 =?utf-8?B?c1VrNTNGSk8vN1dZYmFQNFlLVyt1bTV0eHU3aHV4SFZmdWRUdmxTVzYxOFpR?=
 =?utf-8?B?UlhjWXM3dHMxbXFiUVUzaEJVYmdaQUo3bWhtQmNRRlBYc2VWQUtZWm1xaktT?=
 =?utf-8?B?M3JOQklTd08yQ2RnK0MrRTlwQUhWQVUrT0hORVgxQjQvckRaZGNCUXhXMGVn?=
 =?utf-8?B?ZGcxMTNmOEd4WGFiYTNDd0pEYyt6YTlJNldxYzdkbW53eWIvWVMyRHh5VEtm?=
 =?utf-8?B?MElrcy9saUdKNDZ5TDc2Ti9KOHNKVzgvczIxeGpUM2RQYU1IdnNnL1dIWnBv?=
 =?utf-8?B?WVkxMTh4elcvQS9UZjlPbnVTUnBLRWhYWGVSeDJrY1gzR09aZE9nblJYbU1x?=
 =?utf-8?B?dk9HQzc5YVJLclBTamhFU3FINWRTdXphRnU2b0UvM1pjbHhBM3o0V2dwWGZT?=
 =?utf-8?B?TDQ1OXBEYWVjWjVuZE9WN0I5TUlRdWMybnh4RXJSYXhvRHZqTnlVSThudDVm?=
 =?utf-8?B?WU8vT2lmVXllOFVpTWRUdWxsVVF6MzBvMnlUWmYxZGdKS1FrVDhUWlBUWmVv?=
 =?utf-8?B?WmZ3UTI1SElJTG9PY3c0MlBzdGZHUG1sMGFPOVlwMmd4WkgwTzdhQW1uVVdj?=
 =?utf-8?B?TEJQeGUvN1pHWHNPY2Y4NXZZUFVMK1drcEZKNHc2ME50M2ptQUdadzZaN0R1?=
 =?utf-8?B?bTU1bElqWXg4d2FETzJhU3RPeGwwR3hxN0tSNzVhV0VWUkxOMlZvZms5Z1lm?=
 =?utf-8?B?dFBVVUh0cmhHZ2xodURtSnJqZk56VDZtVGR6aDVlS2pPKytCdGVweWZoa2JR?=
 =?utf-8?B?T2x0dkN5L0cwM3I4dTBpeGIxYVc4NWRnUHNTTUxqUFZPZUdVd0crMDdzMkhi?=
 =?utf-8?B?MVB3SmNkSDhPeEo3a2NXaEFsRTdyam52RXc2UGY1Y1gzdjZRVjZBUzlNNXFC?=
 =?utf-8?B?MGE4R1JHYnVMRC9WWnl6QlNQWVVWaGcwSDJiUEdwdGVuc0RSQy9vcWlqZnZD?=
 =?utf-8?B?M1lFYzBIMW1ib3VQS2VRMHRwb0p4WVRJR3BxYmNrZ1F4TXZoN3E0SlBSZE9L?=
 =?utf-8?B?Wlp5bXp1MGU3SVVlTktSS3RoME4vcVh4Q0hRSVROd2EzSXVyekxEcGtocnVN?=
 =?utf-8?B?QzcrMkpqTER3QXJYcXYyZVpsNmNTTWlMNGREYTg3OFVrcXE3QklraGwyYTc1?=
 =?utf-8?B?cC9WTm5RWG9RaWlSTE1oQjUwZTd0NnVxeU9HQ0JzWkQ1MkVFNG8yRGtaclYw?=
 =?utf-8?B?a2gyQy9HSHRLWjlSelVPTkFXZk9oaE12SGtBVk9tWGhNbHRJUXJxajk4azJJ?=
 =?utf-8?B?UFhPR1ZTRldHRGJkSkw1ZGowVmJLSVRZWnF4QVhyQjhNcW1lSitaY2pFUjNC?=
 =?utf-8?B?TEVucUtoQzBiNkQxR05VK2U5T25vMjRTUldtclpMTDhscjlrbkI4R01HNDRG?=
 =?utf-8?B?NnNDdW1GUjNSdldOVGFxNWtxTy9JamxsUHBGcDkxMDIrZ0N1YUZONjRFcS9D?=
 =?utf-8?B?YTN6NnIrVzRzUnpGNmpmVndZOS9sL01UNFlaZ0pNU3Bhbi9TL2svS3ZxQ1RK?=
 =?utf-8?B?RjlnWEw4UFl6OFlaRlBOY2pmOTkwZGFzS29qY1M2VGV3Q2NUVWtzQWVScFdh?=
 =?utf-8?B?VHJmVzVBMmxkdUwrRFp5Rnp1WlhDQ2RFdHBQekkrdXVlWkdVTERNQldWZzZ6?=
 =?utf-8?B?bG9kOTljUjZ2VVBWa3Q0Uk9QS3dFNGN0WHpSMlVmTm9GKzNqT0pHeXpsYnlw?=
 =?utf-8?B?VEhKNkdUYS80TS9SQ2F1MnZGYjlXb2xKN2MzZHRRMVM2THEyTmZFWC9KeHNM?=
 =?utf-8?B?WXhVTFBWNWd4eGdNRDdZQUJRNlhTcGxaQWMrc09iYlNMN2hwU3RsNGFYUmNt?=
 =?utf-8?B?ZnR3MC9SVXU4elZKalh1MTVVV3A0bmZMcnY2aENhcGZTK1E9PQ==?=
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:(13230040)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 20:08:45.2216
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8430e926-85de-4260-c26b-08dceee7813e
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:
	BN2PEPF000044AA.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6978

On 2024-10-17 13:02, Daniel P. Smith wrote:
> Transition the incoming boot loader name to be held in struct boot_info.
> 
> No functional change intended.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 20:36:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 20:36:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821306.1235061 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1XDt-0003V4-HZ; Thu, 17 Oct 2024 20:35:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821306.1235061; Thu, 17 Oct 2024 20:35: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 1t1XDt-0003Ux-E5; Thu, 17 Oct 2024 20:35:53 +0000
Received: by outflank-mailman (input) for mailman id 821306;
 Thu, 17 Oct 2024 20:35: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1XDr-0003Un-IB
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 20:35:51 +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 657a7105-8cc7-11ef-a0be-8be0dac302b0;
 Thu, 17 Oct 2024 22:35:50 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso175120066b.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 13:35:50 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68a8e8bbsm10729866b.40.2024.10.17.13.35.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 13:35:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 657a7105-8cc7-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729197350; x=1729802150; 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=QXmHh7QZhi00KJf2hyAIHynC2R6YC6GoRxucIlnvmE8=;
        b=FPdoFSMsALoODJv2ytLceh/AXK9n0CpKhKR26+gVa2TPeDrcQIiQ9iEANnjpZU36Nf
         mB61MASkcKr/hzjPZbmlKFLNvbViHDbIX7YQgl540efq1amzb90jjaPObVGwAStVgXIC
         xfAjs1eqPvD+th+DxhapPW1FH5C3rCapTc0YY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729197350; x=1729802150;
        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=QXmHh7QZhi00KJf2hyAIHynC2R6YC6GoRxucIlnvmE8=;
        b=OgOhvvXOVVc6IuxkFZsOQBrH34I1MFAonWip9nATAGfHppVvK6ymGRXokFxiHmcmwN
         JjB6zVHlNNQ3jYL+LCuYQnd8A3UOIorKOgD+eDlBpPrVjDlVPd/qK4TEpE6wmGk+2+Zl
         zryvk9O8yRWoP3aB9JVXiFyXRWIxWE56KmwdEHAKTwRuqfUupBX2457J2FVD9oefNXJj
         uAXR8Krw3lyB6qmAXNpBs45tgs0BSJ+SraGvkXiy6Q9hvEjfT70fix8YNlBDGxwMtYEg
         imeqaeXVT5sUOLen3HJOTtUifS8hUcHRhZD6xAnOoGw/uyv9AamsFtLt9/ceYg3iCOPY
         xQvA==
X-Forwarded-Encrypted: i=1; AJvYcCX0wcHSJMJfM7UBKiXIfZQAXzxB02ZknogajxvmCWCsMLquar2PYLBfaOczFA6mhufny39ysA5FK6w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxpPLRpDqFM1GJbr2LQTm1e6p/rFf2nbdsH/wsJ42PeyqzQ26Wz
	MXw4gZaJI3cxIaQRmJ2wHZAbVO8U50a07gbghuJ+GgizevKxhJ1ykLNZvGFO31k=
X-Google-Smtp-Source: AGHT+IGU/I3CebTsU52qizCf7frP56x9Owj9DQReYdDhzI1PTSzjsBHm5d6TWLB1xa5sVq3fIs0sIw==
X-Received: by 2002:a17:907:2d8c:b0:a9a:cf6:b629 with SMTP id a640c23a62f3a-a9a69a80a5amr5703266b.29.1729197349569;
        Thu, 17 Oct 2024 13:35:49 -0700 (PDT)
Message-ID: <620ed038-f308-4abe-8529-9bb3f203f4c2@citrix.com>
Date: Thu, 17 Oct 2024 21:35:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 03/44] x86/boot: move cmdline to boot info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-4-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-4-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index eac0954f42b8..037cdd17386c 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1035,11 +1043,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>  
>      bi = multiboot_fill_boot_info(mbi_p);
>  
> -    /* Parse the command-line options. */
> -    if ( mbi->flags & MBI_CMDLINE )
> -        cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
> -
> -    if ( (kextra = strstr(cmdline, " -- ")) != NULL )
> +    if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )

The /* Parse the command-line options. */ comment refers mostly to ...

>      {
>          /*
>           * Options after ' -- ' separator belong to dom0.
> @@ -1050,7 +1054,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>          kextra += 3;
>          while ( kextra[1] == ' ' ) kextra++;
>      }
> -    cmdline_parse(cmdline);
> +    cmdline_parse(bi->cmdline);

..., so should stay in place rather than moving into
multiboot_fill_boot_info().

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 21:02:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 21:02:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821321.1235083 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Xdm-0001Fn-Jc; Thu, 17 Oct 2024 21:02:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821321.1235083; Thu, 17 Oct 2024 21:02: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 1t1Xdm-0001Fg-Gk; Thu, 17 Oct 2024 21:02:38 +0000
Received: by outflank-mailman (input) for mailman id 821321;
 Thu, 17 Oct 2024 21:02: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1Xdm-0001Fa-6n
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 21:02:38 +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 229e4ddd-8ccb-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 23:02:36 +0200 (CEST)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2fb584a8f81so17154821fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 14:02:36 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ca0b0e897fsm7947a12.68.2024.10.17.14.02.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 14:02:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 229e4ddd-8ccb-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729198955; x=1729803755; 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=IniFf35UezkvSvEGewqh6lr5mUJCyLnyObFDqnAgdgk=;
        b=oSPG1ymCBQlweTbkykUz+zc6hSEZI6GXVMr3I5hAo87XVG89QEb58MrGaEtmxzesVb
         nXEDB5MMWt4JiJ7cWXXFQnwCrCN0tLSjPfiwoA55XCtlYz6GzVvGUt7fOjAmLHiq+mVO
         WTQ+Qq5KMKk2bjb0NffGLvc2oKzTSYPwePO+M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729198955; x=1729803755;
        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=IniFf35UezkvSvEGewqh6lr5mUJCyLnyObFDqnAgdgk=;
        b=itr6Ii+8540mjkderHGm06Xix08SNW5WIHP+mvS2HjD1BzP8S17SVD2bkTp9U5OWov
         atIMslFxQMeMqx7SHMFVmFEFUNqF7hXpyhuOosS/5EtUuKq2qv3lGxKx7IbItsOE6Kcu
         F4I5icUALHCRIva98b5fFBT058aXt53t8lGtS5Ze7QO8TrVkk1cHDAVCTrV9QrGewWSR
         mjNPF65drxsH5vyHOznAWb4ERtzKKC5brQEKnajDX7hJsKoiu2wBOLnxmVMf0sD32LWf
         W44uebXVhkyWMsFIw3WTBEDDGuLjM080N7TbuvPYcGiUcNtYAR8ZXTJc2nhACYiEwmfm
         mDTQ==
X-Forwarded-Encrypted: i=1; AJvYcCXj68HGbQ2UHYFnkZ6K9liqX7VeAA6GTlbxzpx38HM7y/8K8IIZQrc6eG10lh28I0g6p0m+SbqPe38=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwlRZnhRMl8Ktlb/LcN16aNc9uk5YzGvERJfuPSsQALxzVtgUc/
	gft93GgBM8NHOzfmsFj8zATqgOrf/criY94FROsNDO4WiJPQnftTQuk1GNzO6rI=
X-Google-Smtp-Source: AGHT+IE2WdIVzJuaqz+AmwhdpTm1gEFkWP3WFhaRkzcff8kaiY+H+9NciT9oTZXcH/Xyrc70ofG/Uw==
X-Received: by 2002:a2e:be9d:0:b0:2fb:587d:2ee with SMTP id 38308e7fff4ca-2fb61b46312mr64047521fa.12.1729198955272;
        Thu, 17 Oct 2024 14:02:35 -0700 (PDT)
Message-ID: <766eaa46-fc8c-4069-a3bc-116dac23ca53@citrix.com>
Date: Thu, 17 Oct 2024 22:02:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 05/44] x86/boot: introduce struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-6-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-6-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index f7ea482920ef..d8ee5741740a 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -284,6 +284,8 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>  {
>      struct boot_info *bi = &xen_boot_info;
>      const multiboot_info_t *mbi = __va(mbi_p);
> +    module_t *mods = __va(mbi->mods_addr);
> +    unsigned int i;
>  
>      bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
>  
> @@ -302,6 +304,13 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>          bi->memmap_length = mbi->mmap_length;
>      }
>  
> +    /*
> +     * Iterate over all modules, including the extra one which should have been
> +     * reserved for Xen itself
> +     */
> +    for ( i = 0; i <= bi->nr_modules; i++ )
> +        bi->mods[i].mod = &mods[i];

I'm afraid you've got a bug here.  bi->nr_modules is unsanitised from
firmware at this point.

It's checked/clamped later in __start_xen(), but not before you've
potentially scribbled past the end of bi->mod[] in this loop.

I think we want to retain the warning from clamping (which needs to be
after printk() is set up, so after parsing the cmdline), so to
compensate I think you want:

    i < ARRAY_SIZE(bi->mods) && i <= bi->nr_modules

as the loop condition here, and a note to this effect.  I'm not sure
what I think about passing exactly 64 modules, and this interacting with
the Xen slot.


However, you also want to move part of "x86/boot: convert create_dom0 to
use boot info" into this patch.

Specifically, the conversion from sizeof(module_map)*8 to
MAX_NR_BOOTMODS, or there's also a latent bug that depends Xen being
compiled as 64bit (unsigned long vs MAX_NR_BOOTMODS).

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 21:22:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 21:22:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821339.1235100 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Xwn-0002hD-9h; Thu, 17 Oct 2024 21:22:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821339.1235100; Thu, 17 Oct 2024 21:22: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 1t1Xwn-0002h6-55; Thu, 17 Oct 2024 21:22:17 +0000
Received: by outflank-mailman (input) for mailman id 821339;
 Thu, 17 Oct 2024 21:22: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=QiKY=RN=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1Xwl-0002gv-MA
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 21:22:15 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2062b.outbound.protection.outlook.com
 [2a01:111:f403:2413::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e06bdf51-8ccd-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 23:22:13 +0200 (CEST)
Received: from CH0PR04CA0003.namprd04.prod.outlook.com (2603:10b6:610:76::8)
 by MW4PR12MB6730.namprd12.prod.outlook.com (2603:10b6:303:1ec::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.19; Thu, 17 Oct
 2024 21:22:09 +0000
Received: from CH3PEPF00000017.namprd21.prod.outlook.com
 (2603:10b6:610:76:cafe::74) by CH0PR04CA0003.outlook.office365.com
 (2603:10b6:610:76::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.19 via Frontend
 Transport; Thu, 17 Oct 2024 21:22:09 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH3PEPF00000017.mail.protection.outlook.com (10.167.244.122) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.1 via Frontend Transport; Thu, 17 Oct 2024 21:22:08 +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.39; Thu, 17 Oct
 2024 16:22:08 -0500
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.39; Thu, 17 Oct
 2024 16:22:08 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 16:22:07 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e06bdf51-8ccd-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=I1HmjA20HWlMxWI1BF+G/VuCymfx9BhrIjtTNp1YmRIYnAHp/OCr+JTbOMB7JAvuRW2CEwVJ/7rwJDasSTMDGo0W10fguFuBGQnuROxhbm+J86lWV18f7Znk59nUXt3P2M4N1xX7puvrLpIe+5Uu4kBZVYvCiCoc6qgqfbAU/ULBAYtQSayDCoHgGzIikDPrxeidlhoVPNDVctwgIPzM8dfkrIV2PbH6vIVmq/MbjBBqXgRL1+7Wm1BmWNwUj+fCE+aWl2av4BtfYoFIUdls1K18Lr5QqJzu+Sqo96t14uBhRJ47D88oI/8epzTyjrTTQTjbbcrShRvjLBAFtLHVMA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=ZIJNiSPda1uLXfBZUDr5py1ZfFbvvz2cKDS1+fXWd8U=;
 b=Z2IrXuCLJr/NPX5OzrT6TWnallOz+sZ36S0k6RQPMREkwHck1TJWBWpGHflTYDtlGMIMsKqOGnpwtMn34Ceb5eSQKoIpiKfwtnzZ8WfRr1+41t4vUT0yNWee4y8dat8/8M3CqtSKEVOx5VHtbW9+ZFWS9OcUt/+r6B+qLQTFTWOyW3pUVKESIzu3/lRJMmDVZFzF+TeurI8yWf+Er8w45iulz90Qy9clvZWsIpE6rEyzDX5rn1Gnig/jBgtQagYEG6f3R0su5Gih7Oyb4jMmvzIKg8giV5+0C/siVI3Z6824KrtyQbZVKjzUBY0r8GyOyB9BNadwpoVsjonLoVH9fg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=ZIJNiSPda1uLXfBZUDr5py1ZfFbvvz2cKDS1+fXWd8U=;
 b=B2dJqoRh7HUuat6o2KhCBOkOnBhRyLtn6SmvcTHGPCGJBRmEYyKaTodEA7IXWKQXtSmtdx6goIpL47sDKvtRULE4byjorcUrp9ETUw03pu8fjtuZougbrNeakcHlIhAaidNyf/ZXwRZf2mHG3lkHX/8IRe3Ankc3GZExlaaHbGQ=
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: <35ae437a-83f4-4c71-a0c7-94894f232710@amd.com>
Date: Thu, 17 Oct 2024 17:22:07 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 07/44] x86/boot: move headroom to boot modules
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-8-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-8-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH3PEPF00000017:EE_|MW4PR12MB6730:EE_
X-MS-Office365-Filtering-Correlation-Id: 0e3ab54d-6db7-4b25-23e4-08dceef1c204
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?R0VIMnlrRHhwQW5XeFlkdGIvNHFPUnkxMjdyRGdET2pyY1JNRXZoRFlPWk1Q?=
 =?utf-8?B?eXAxUTN6VUVFa1E1VWlESExBcFczeU5QL25YNHBhWTJxTlZUUTlYWEVWVEh1?=
 =?utf-8?B?Z204OUxjOWNoajI4WHh3K0RsREM5NDdxYURjZldIdmEyYVNRVHFqMlU0RDh0?=
 =?utf-8?B?MEdUbVk3b1hXUEFvZ3FUYWF4M1czd3RIK0g1WlgzUURsRjNycnJZWElTSDY2?=
 =?utf-8?B?SDg5VzJDMkxCc3lIQUFmVW1YM2hsUmtDTFErazNmZTIweFE4b1FrN21hcHpM?=
 =?utf-8?B?dHpwdjRwVWZDbkkrSUpIcW9oRVFpUEZ5cmVFMUtzQk1xcWM3c1dSa3ZOaGsz?=
 =?utf-8?B?YzkyOVZLQVJhaU81SWdsZUpaY01OUjZ3aStNRnd4WVNlTlpwcUlSRTl0UkM0?=
 =?utf-8?B?Uk96SEZsMlkvdkhZUTI5ZDUzRzkxYVNvbFFZSjY4ZnV0YVZXeXlHUVQwekJG?=
 =?utf-8?B?dmt3WTBlYWhlUW5ZVkhKcmlUUFRVeEdHeERrWEh3UFBmM3lJQ2Z2NWVSWURp?=
 =?utf-8?B?TkNaQ1UwWVVZeXFhYTRnYVNJS0xZcWllRGpKSDA5VmxXY0tZRDFoM1lsbURm?=
 =?utf-8?B?VXFUNkF3dlVDem5DTzJNSkRhYk5pV0FON3dLUGtOSnlFZmZ4R2FyTGYxU2pp?=
 =?utf-8?B?V3JvQ3JEY2lhTE50dTdJcm5qd240ZDhLTnRUVGc4N1hIbHFFU2RrM3BiaUNy?=
 =?utf-8?B?SkEwUmpwQk1sSlRvVnJhaGEzdTBJRkdUUUtZUjl0TUdmL0NmcFdTNWZNSk5k?=
 =?utf-8?B?Y2F1MnNHSmVFd29yU0FlTitwQjg0UkRTZXI3UVdxSmpLdTRDZnh2SHVyNFdh?=
 =?utf-8?B?YzFua2xHdDJ3K1FIRHlKMUdYOHVwc1FGcHRjdTg0d1BIT204UE1YUEdvQjQw?=
 =?utf-8?B?WFJZZGMyQ1NGTVE3dSt5akM3OWVrL1dHcW1TVlZCZExoR3JOLzJlc3pOUHJH?=
 =?utf-8?B?VnhST3B5V0VYZmlhNU1UdENBOGNDNnNKQXlQcm9JbFNUa29yb0ppaUJRRmkx?=
 =?utf-8?B?NitpYjVCQU5ieEhhTVd3cXovRCtRdU1NRGNYY2VNdkNJU1VOSXVVMG1sZ1g3?=
 =?utf-8?B?VmFwa010RzcwVGZSeGlrYlVlSHFvc0lUWWRNeXlDZXU5MlREcVdOMFFVYTFh?=
 =?utf-8?B?RlJiL2V3QS9maE1RTEFSRFZ6UWlLcjV1QklLVDErNmhPNEIwQlI5dUxodTE4?=
 =?utf-8?B?M3pFcTNJN3ZjcnRKWFVsRWVYdTBTS2FnSzVhTEo4eDRQbWhKMXRtY3NmOFE0?=
 =?utf-8?B?bTZLbk9FMnB4VnlpUkZ5dHpJM1lhWHNRYlZTcllxT29UbHJLNFZwc2xCWmt0?=
 =?utf-8?B?R1ZJUjViS2E5YjUreWNoc3ZabFdPRHZoR1NnNzFKNHhVb0R1SHVDd2l4OUlZ?=
 =?utf-8?B?VzdXUjBrMkJjMHBOSDNvbUNOYW8wY1NsSzNXQ0VRSzZROXE0WWtiNHJzS3ZE?=
 =?utf-8?B?MEpjWWhIRk1yOU1xVEJVbGJQU05nSWpCTUh6R2toQnV5MUVwSG5MVE1XQ2Ns?=
 =?utf-8?B?TnN5Z1NXeGZtKy9ueWNpTWEyY3pOa2Yvc1dNR2ZXaDRIV3M5Qm5vOFlRTFRP?=
 =?utf-8?B?NXNPWFRnckN4dUxpVzRtcDlrc3NRY3FTaGszeXRBR3dSUkZ3aXpId09YSTJh?=
 =?utf-8?B?dmpZRnhjYjlia05LNDdkb1krUDdpUXhHdHRseGhaWHk2U3VEbmRzOG5abDVl?=
 =?utf-8?B?dUw1aVZZOERLN0Q4T0Z6QjFBc1VyY3VUR2hiYldkSHVEM1lHQTBVMldUanV1?=
 =?utf-8?B?QitDUmVzaDdPZVJvc0xmWTFiR0ZtQmtnQjdFcEJrYUZFKzNQZjQ1ZFFkYjRB?=
 =?utf-8?B?bmY5aDArZ1JsSkZsSlpzelVFSngzdTBKUkptWTZ1UStOdnUrcUQyMHMyKzA4?=
 =?utf-8?B?b0g3UTIyQXFXZ00rNzVaN1FyZGVEclZ4MzRpODRtNmFRNXc9PQ==?=
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:(13230040)(376014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 21:22:08.8566
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0e3ab54d-6db7-4b25-23e4-08dceef1c204
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:
	CH3PEPF00000017.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6730

On 2024-10-17 13:02, Daniel P. Smith wrote:
> The purpose of struct boot_module is to encapsulate the state of boot module as
> it is processed by Xen. Locating boot module state struct boot_module reduces
> the number of global variables as well as the number of state variables that
> must be passed around. It also lays the groundwork for hyperlaunch mult-domain
> construction, where multiple instances of state variables like headroom will be
> needed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 21:24:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 21:24:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821344.1235108 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Xyv-0003E9-Iv; Thu, 17 Oct 2024 21:24:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821344.1235108; Thu, 17 Oct 2024 21: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 1t1Xyv-0003E2-GN; Thu, 17 Oct 2024 21:24:29 +0000
Received: by outflank-mailman (input) for mailman id 821344;
 Thu, 17 Oct 2024 21:24: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 1t1Xyu-0003Dq-DG; Thu, 17 Oct 2024 21:24: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 1t1Xyu-000434-9i; Thu, 17 Oct 2024 21:24: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 1t1Xyt-0006GD-TZ; Thu, 17 Oct 2024 21:24:27 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1Xyt-0007op-T8; Thu, 17 Oct 2024 21: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>
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=tvPnrkPGCl/LSX/xKwZfLcUkHEg94gJNP+zkrfCQf4w=; b=EZTAptnUK5DeKarM5L9m5eM29K
	nenjEetZSUwmUR5N3ZkkdjeDfaxj5l1FY25kWQnb5GHeoE0nhWpsCuctoYnrunq/nDkQwlu/dZJwD
	3MFQPgVbXPd2HndxgOM/KUSvmfzjfH6g6oQFkvQcWuXloU+DOSK0UjfEdqfnidGu1bak=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188158-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188158: regressions - FAIL
X-Osstest-Failures:
    linux-linus:build-amd64-pvops:kernel-build:fail:regression
    linux-linus:test-armhf-armhf-xl-qcow2:leak-check/check:fail:heisenbug
    linux-linus:test-amd64-coresched-amd64-xl:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-vhd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-rtds:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-examine-uefi:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-pygrub:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-intel:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-pair:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-dom0pvh-xl-intel:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-pair:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-multivcpu:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-pvhv2-amd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-examine-bios:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-credit2:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-freebsd11-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-examine:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-pvhv2-intel:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-freebsd12-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-credit1:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-shadow:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qcow2:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-pvshim:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-raw:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-dom0pvh-xl-amd:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ovmf-amd64: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: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-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: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-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-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-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=c964ced7726294d40913f2127c3f185a92cb4a41
X-Osstest-Versions-That:
    linux=2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 21:24:27 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-amd64-pvops             6 kernel-build   fail in 188132 REGR. vs. 188098

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-qcow2    20 leak-check/check           fail pass in 188132

Tests which did not succeed, but are not blocking:
 test-amd64-coresched-amd64-xl  1 build-check(1)          blocked in 188132 n/a
 test-amd64-amd64-xl           1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-vhd       1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-rtds      1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-examine-uefi  1 build-check(1)          blocked in 188132 n/a
 test-amd64-amd64-libvirt-raw  1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-qemut-win7-amd64  1 build-check(1)   blocked in 188132 n/a
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-pygrub       1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-libvirt-xsm  1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-qemuu-nested-intel  1 build-check(1)    blocked in 188132 n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-pair         1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-dom0pvh-xl-intel  1 build-check(1)      blocked in 188132 n/a
 test-amd64-amd64-libvirt-pair  1 build-check(1)          blocked in 188132 n/a
 test-amd64-amd64-xl-multivcpu  1 build-check(1)          blocked in 188132 n/a
 test-amd64-amd64-xl-pvhv2-amd  1 build-check(1)          blocked in 188132 n/a
 test-amd64-amd64-xl-qemuu-win7-amd64  1 build-check(1)   blocked in 188132 n/a
 test-amd64-amd64-examine-bios  1 build-check(1)          blocked in 188132 n/a
 test-amd64-amd64-libvirt      1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-credit2   1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-qemuu-freebsd11-amd64  1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-xl-qemuu-ws16-amd64  1 build-check(1)   blocked in 188132 n/a
 test-amd64-amd64-examine      1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-xl-qemut-debianhvm-amd64 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-xl-pvhv2-intel  1 build-check(1)        blocked in 188132 n/a
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-libvirt-qcow2  1 build-check(1)         blocked in 188132 n/a
 test-amd64-amd64-qemuu-freebsd12-amd64  1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-xl-credit1   1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-libvirt-vhd  1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-qemuu-nested-amd  1 build-check(1)      blocked in 188132 n/a
 test-amd64-amd64-xl-xsm       1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-shadow    1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-qcow2     1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-pvshim    1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-qemut-ws16-amd64  1 build-check(1)   blocked in 188132 n/a
 test-amd64-amd64-xl-raw       1 build-check(1)           blocked in 188132 n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow 1 build-check(1) blocked in 188132 n/a
 test-amd64-amd64-dom0pvh-xl-amd  1 build-check(1)        blocked in 188132 n/a
 test-amd64-amd64-xl-qemuu-ovmf-amd64  1 build-check(1)   blocked in 188132 n/a
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188098
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188098
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188098
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188098
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188098
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188098
 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-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          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-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
 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-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                c964ced7726294d40913f2127c3f185a92cb4a41
baseline version:
 linux                2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2

Last test of basis   188098  2024-10-15 19:12:44 Z    2 days
Testing same since   188132  2024-10-16 21:13:43 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abhishek Mohapatra <abhishek.mohapatra@broadcom.com>
  Abhishek Mohapatra<abhishek.mohapatra@broadcom.com>
  Alexander Zubkov <green@qrator.net>
  Anumula Murali Mohan Reddy <anumula@chelsio.com>
  Atte Heikkilä <atteh.mailbox@gmail.com>
  Bart Van Assche <bvanassche@acm.org>
  Bhargava Chenna Marreddy <bhargava.marreddy@broadcom.com>
  Björn Töpel <bjorn@rivosinc.com>
  Chandramohan Akula <chandramohan.akula@broadcom.com>
  Christian Heusel <christian@heusel.eu>
  David Sterba <dsterba@suse.com>
  David Vernet <void@manifault.com>
  Filipe Manana <fdmanana@suse.com>
  Herbert Xu <herbert@gondor.apana.org.au>
  Honglei Wang <jameshongleiwang@126.com>
  Jason Gunthorpe <jgg@nvidia.com>
  Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
  Kashyap Desai <kashyap.desai@broadcom.com>
  Leon Romanovsky <leon@kernel.org>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mark Brown <broonie@kernel.org>
  Namjae Jeon <linkinjeon@kernel.org>
  Potnuri Bharat Teja <bharat@chelsio.com>
  Qianqiang Liu <qianqiang.liu@163.com>
  Roi Martin <jroi.martin@gmail.com>
  Saravanan Vajravel <saravanan.vajravel@broadcom.com>
  Selvin Xavier <selvin.xavier@broadcom.com>
  Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
  Showrya M N <showrya@chelsio.com>
  Steve French <stfrench@microsoft.com>
  Tejun Heo <tj@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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 926 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 21:40:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 21:40:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821360.1235119 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1YDi-0003iu-T4; Thu, 17 Oct 2024 21:39:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821360.1235119; Thu, 17 Oct 2024 21:39: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 1t1YDi-0003in-PZ; Thu, 17 Oct 2024 21:39:46 +0000
Received: by outflank-mailman (input) for mailman id 821360;
 Thu, 17 Oct 2024 21:39: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1YDh-0003ih-F6
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 21:39: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 51285f68-8cd0-11ef-99a3-01e77a169b0f;
 Thu, 17 Oct 2024 23:39:41 +0200 (CEST)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-539fe76e802so1811407e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 14:39:41 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431606c5a09sm7876905e9.35.2024.10.17.14.39.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 14:39:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 51285f68-8cd0-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729201181; x=1729805981; 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=K61ARtLoo6TxZvm2tB5jwYs9fU0MPx831LzaRgb8hU4=;
        b=piwq9mGbcYlUz6bAiycHvqavoWJW9qV05eAWPX/W2lX13YaTvqRMD8fLJe8YuLsm+T
         9d6KBhftKMb2vdfD1mar1NsMUCy6Uz5WgBNMaXDMbRpIRq1j7RK+M4DkxZQNCKs63lj5
         uUjkGIAJ/fFOUybjlA04nmntC2FuH0jxireKw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729201181; x=1729805981;
        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=K61ARtLoo6TxZvm2tB5jwYs9fU0MPx831LzaRgb8hU4=;
        b=lb49VoTl2pObI/zueda65vB/jYYyrUwiCFr/7lvu6gvJwPz668I+TSKkgGs4VaCy4H
         3M3PKTHk8hUHtqdbBa8LxLUxfg8oIO1WEUJSDV79K3EpGJ8ErnfhiiFeiT4OKSIjmsq6
         8czoYNcj7VTORQ5CHjVp02bpotcng/OFl3deWOrpFviIK3h++BtUSg5zZWOzwAb/4Iyp
         bGjs2sdnQIc+LjjfNx7tDDnzDsWq+Q+PjQJMmAs8/4qj//bYLJ265K1+4ToPGh7DdVaz
         3sJ7uBMMrvZkkbnZl6hMhB1ioHNv1epcSzyI9GY6TmpSE+EhDyUaoryhL1PZkzjk2wAm
         RUyQ==
X-Forwarded-Encrypted: i=1; AJvYcCXcmuVE737vIYcnV11b8iLQ5iGVNIlvNLb0RuQiicESEpQzFVyMK9mJRgXXdvhmKA6YzjrJWlZeWBc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyakVJk6gFUMxoa77a5+yqcre7Cg1hE/PoQIt4Ajh1Sg1ZqEO73
	zNcQpOqp3mMtRVGQGrcMa+bLJxZNwKoL7yeW8h36kiukaJuAIROirn2XePSRqu1J+Ei4wEr/p4A
	93gi/Ew==
X-Google-Smtp-Source: AGHT+IE264vKiRfl5Fqa2Pj6Ql8a/niGZBJHVqY5SgkkZplVk0OhXNZl4h/6JQn0c8BIKs4KcWikQA==
X-Received: by 2002:a05:6512:3049:b0:535:d4e9:28bf with SMTP id 2adb3069b0e04-53a154f903dmr171753e87.46.1729201180780;
        Thu, 17 Oct 2024 14:39:40 -0700 (PDT)
Message-ID: <a0a12283-4197-41dc-89c1-1b7a703e3d0a@citrix.com>
Date: Thu, 17 Oct 2024 22:39:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 07/44] x86/boot: move headroom to boot modules
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-8-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-8-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index d19473d8941e..5fe4f1387d03 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -17,6 +17,19 @@
>  struct boot_module {
>      /* Transitionary only */
>      module_t *mod;

Blank line here.

I know it falls back out later, but it's very important for legibility
to be able to tell at a glance which comment belongs to which item.

~Andrew

> +    /*
> +     * A boot module may contain a compressed kernel that will require
> +     * additional space, before the module data, into which the kernel will be
> +     * decompressed.
> +     *
> +     * Memory layout at boot:
> +     *     [ compressed kernel ]
> +     * After boot module relocation:
> +     *     [ estimated headroom + PAGE_SIZE rounding ][ compressed kernel ]
> +     * After kernel decompression:
> +     *     [ decompressed kernel ][ unused rounding ]
> +     */
> +    unsigned long headroom;
>  };
>  
>  /*
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 22:32:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 22:32:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821370.1235138 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Z2z-0002rL-TL; Thu, 17 Oct 2024 22:32:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821370.1235138; Thu, 17 Oct 2024 22:32: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 1t1Z2z-0002rE-QU; Thu, 17 Oct 2024 22:32:45 +0000
Received: by outflank-mailman (input) for mailman id 821370;
 Thu, 17 Oct 2024 22:32: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Z2y-0002r8-V2
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 22:32:44 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b7c34752-8cd7-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 00:32:41 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729204353976955.4195539362453;
 Thu, 17 Oct 2024 15:32:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b7c34752-8cd7-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729204355; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=CXNZwQFLx/20b37IhCKaXn90PGQpxnX28M52L7RNU96Wkf1m3ZzC4OUHSK8MuJoI/GcY9JtitXjIscrXzvBOYiUhrJOGSIh+aj7COeT6hym8lGeBbXCMeuWvXibtSNEGvHwG06CYEJ4wSOcvTsJIaDV4K+Swzno5H0AOX875aq4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729204355; 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=vGIAkDNB2sXTt3FTeWfWAF+i+JJIF4Hz6HMFD/0qFHQ=; 
	b=BekLHtWQqmafpJ3+OjJxbliQEOPPUOKEQLBZFa/NIg0cixhLP9sJ1W1XB/uAwTbGn6PIU51JC4B+XVH6KBzHSUxMoan1MymM0AvwqX0vi0QT7EqZ5je/lZP/MS0rxHl0XVifa+vy+6cjIByRxLzdGos3qk5LYgF+jrWdsrk9JP4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729204355;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=vGIAkDNB2sXTt3FTeWfWAF+i+JJIF4Hz6HMFD/0qFHQ=;
	b=D8vrHjA0aBcgXrlYEn3cq+7ANcAB52jfqWBrIvym0grLA+vrfjAsisNeIdfD4v80
	+KeHTkpJ/Oc6spzntI4yh3xPS37v3PmgKlVE1FESgYQ12w3/Oe9OgV3oG0urex0u31W
	aeNDStZpvhP0bwNQeM5QMYi9hkutXgW8AfqMq07A=
Message-ID: <d4af945d-2ce6-4a2f-8a13-8464cd67994d@apertussolutions.com>
Date: Thu, 17 Oct 2024 18:32:27 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 01/44] x86/boot: move x86 boot module counting into a
 new boot_info struct
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: Christopher Clark <christopher.w.clark@gmail.com>, jason.andryuk@amd.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-2-dpsmith@apertussolutions.com>
 <66fc898a-e346-4dce-a99a-b8fdf2590511@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <66fc898a-e346-4dce-a99a-b8fdf2590511@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 15:50, Andrew Cooper wrote:
> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index a6e77c9ed9fc..6201ca0fad19 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -274,16 +275,28 @@ static int __init cf_check parse_acpi_param(const char *s)
>>   custom_param("acpi", parse_acpi_param);
>>   
>>   static const module_t *__initdata initial_images;
>> -static unsigned int __initdata nr_initial_images;
>> +
>> +struct boot_info __initdata xen_boot_info;
>> +
>> +static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>> +{
>> +    struct boot_info *bi = &xen_boot_info;
>> +    const multiboot_info_t *mbi = __va(mbi_p);
>> +
>> +    bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
> 
> Having looked to end of the series, this and a few other expressions are
> still awkward.
> 
> The nicer way looks like:
> 
> struct boot_info __initdata xen_boot_info = {
>      .loader = "unknown",
>      .cmdline = "",
> };
> 
> static struct boot_info *__init multiboot_fill_boot_info(unsigned long
> mbi_p)
> {
>      struct boot_info *bi = &xen_boot_info;
>      const multiboot_info_t *mbi = __va(mbi_p);
>      module_t *mods = __va(mbi->mods_addr);
>      unsigned int i;
> 
>      if ( mbi->flags & MBI_MODULES )
>          bi->nr_modules = mbi->mods_count;
> 
>      if ( mbi->flags & MBI_LOADERNAME )
>          bi->loader = __va(mbi->boot_loader_name);
> 
>      if ( mbi->flags & MBI_CMDLINE )
>          bi->cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
> 
>      if ( mbi->flags & MBI_MEMMAP )
>      {
>          bi->memmap_addr = mbi->mmap_addr;
>          bi->memmap_length = mbi->mmap_length;
>      }
> 
> 
> which is easier to read and follow.  Thoughts?

You are right, that is much cleaner. I'm good with it.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 22:38:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 22:38:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821376.1235148 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Z8I-0004L8-Fn; Thu, 17 Oct 2024 22:38:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821376.1235148; Thu, 17 Oct 2024 22: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 1t1Z8I-0004L1-Cn; Thu, 17 Oct 2024 22:38:14 +0000
Received: by outflank-mailman (input) for mailman id 821376;
 Thu, 17 Oct 2024 22: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=KqF2=RN=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1Z8G-0004Jc-Md
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 22:38:12 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7c3e5f43-8cd8-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 00:38:11 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729204682437455.8210057968672;
 Thu, 17 Oct 2024 15:38:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c3e5f43-8cd8-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729204684; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=OZk80wssMq4KfAeyNi6IgfW0nYUZfU/IhMPAzMD9Btt7mBnuIAP0JuI/FoBEGH7m5+qg3aJGzP8uZYcHkne+0k/K6ekZMGjaQLXvBVtJrJELSq6+WoYXiSApAZ9q+SjEW6KOiSV4OUqtl5GwfFkWN+voParK/FHXsHB978PQ7oA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729204684; 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=SsxxR4pG7Tb9BswiXQOBqaoRFK+ymUPoEw7YQ9yTCIk=; 
	b=hRtuKqlqqrAClKCI4PUgRP14kZgGjUV+5TvSqJtqQy7dINoAd1jfcF7oUNBF8pXoxaPNbjLmg8wgNMVTS9NcoCfz5zN40iLHrPHjnMPk76aU+TAqbM3bQRJS+zb4T3AmCeYoSSKVb3Nc/UkwiDltu6SBv6NW9xihY0B5r2ZhLHs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729204684;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=SsxxR4pG7Tb9BswiXQOBqaoRFK+ymUPoEw7YQ9yTCIk=;
	b=Mtrd4hkV7y+1x3kB4nvH9VFDH9FG46L2/XUp0W0iA0+tmT9lZB9DJxBG4HWWivKd
	zTN2pAauYNxG5yYaFG6525lPcbw+HpkSIMRaXHJQBsvy/N7K5tAuG+SPrn5lzbMSYoz
	GS2hG3v3gIZLMyRzjdnIO4EcXNsseb6WOt2lrEzU=
Message-ID: <1237946a-68f2-4177-a410-1a75f535e8e5@apertussolutions.com>
Date: Thu, 17 Oct 2024 18:38:01 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 03/44] x86/boot: move cmdline to boot info
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-4-dpsmith@apertussolutions.com>
 <620ed038-f308-4abe-8529-9bb3f203f4c2@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <620ed038-f308-4abe-8529-9bb3f203f4c2@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/17/24 16:35, Andrew Cooper wrote:
> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index eac0954f42b8..037cdd17386c 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1035,11 +1043,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>   
>>       bi = multiboot_fill_boot_info(mbi_p);
>>   
>> -    /* Parse the command-line options. */
>> -    if ( mbi->flags & MBI_CMDLINE )
>> -        cmdline = cmdline_cook(__va(mbi->cmdline), bi->loader);
>> -
>> -    if ( (kextra = strstr(cmdline, " -- ")) != NULL )
>> +    if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )
> 
> The /* Parse the command-line options. */ comment refers mostly to ...
> 
>>       {
>>           /*
>>            * Options after ' -- ' separator belong to dom0.
>> @@ -1050,7 +1054,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>           kextra += 3;
>>           while ( kextra[1] == ' ' ) kextra++;
>>       }
>> -    cmdline_parse(cmdline);
>> +    cmdline_parse(bi->cmdline);
> 
> ..., so should stay in place rather than moving into
> multiboot_fill_boot_info().

Ack.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 22:48:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 22:48:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821385.1235161 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ZHx-0002tG-E8; Thu, 17 Oct 2024 22:48:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821385.1235161; Thu, 17 Oct 2024 22:48: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 1t1ZHx-0002t9-B0; Thu, 17 Oct 2024 22:48:13 +0000
Received: by outflank-mailman (input) for mailman id 821385;
 Thu, 17 Oct 2024 22:48: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1ZHv-0002sE-LJ
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 22:48:11 +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 e1885ca4-8cd9-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 00:48:09 +0200 (CEST)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4314fa33a35so14556805e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 15:48:09 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43160e445c7sm5812275e9.33.2024.10.17.15.48.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 15:48:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1885ca4-8cd9-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729205289; x=1729810089; 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=cwhnusYSwE60LOzQvQX2yMXU6sqoOhu3eZcJ1hYlajk=;
        b=m3T3vkJGCrIwNL4nP2OwE4iU5wK5gbBPWryRsKbyG4dy0d5lIFn3rXJg+DVhyYYeF+
         jL89Qm5YLVa/n343Ed+iLfU/eY98269A+VfxxII4luJJic1ZwYMYFzUpWuWXrJ4LMYqY
         ahhThNL6clHVeMp9Z2IUCJLXWe1lbIvmVvuaA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729205289; x=1729810089;
        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=cwhnusYSwE60LOzQvQX2yMXU6sqoOhu3eZcJ1hYlajk=;
        b=B/F2sH/RhiNg5XMJsqSnMdSpKyLM+pFfcfGRC6qmWAYNyUQ29GbpFBj/mb8WI8Qzto
         1aThHKoUM6ehcws77ZCRNkZdtJOMmscmXhxW9IUi4goHzX97Ng7kR+LxULCirms7PDC+
         V3wJcXCk82WLw4RnEqy2d/xlDaB61nCJma/aAZ3rE3FMPsXeOKTJeDOPWQ6bjZvUYjeN
         35AQwcaNGvu61adGGbwKlyWZ03wPRwHTpyiwNkTHzrb/mX/OWvMCyT0VVVtC4j9wxjFR
         6HXQqIm5ilyKkixyyvFxP1wNU9q2b9vmBSMIYU8z1tFSmGeRWDVK5sN1YkuOV+PY8eFT
         5t6g==
X-Forwarded-Encrypted: i=1; AJvYcCWO/xNOSOMXrvWJJ5WO1xa7+1SMEg/atFNuRX3Egzbtinxe5IuL/I9f0QffbM2AMdD39s22W0ex6oI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzK59gFF7cmAq6d5sJ2al9y18tMnlht+JrGtLJHBo3bAkW4O2tq
	eRwTekWLfaILDxz37BOd1kTaeen1sqd8LiW+PH+442QF9Mtt74Paf9D4iumP/jE=
X-Google-Smtp-Source: AGHT+IHiBtgnIrEGRc1UsHCt1XhkQWcxGmJBHRZF0hvaSwQU5bdehsRhHWSf8Ob5y3Fxuyw5IJir7g==
X-Received: by 2002:a05:600c:474e:b0:42c:a89e:b0e6 with SMTP id 5b1f17b1804b1-43161641cf8mr2111875e9.11.1729205288703;
        Thu, 17 Oct 2024 15:48:08 -0700 (PDT)
Message-ID: <d8b45f3b-2312-428d-8f11-927d3250aa6f@citrix.com>
Date: Thu, 17 Oct 2024 23:48:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 00/44] Boot modules for Hyperlaunch
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-1-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> Christopher Clark (1):
>   x86/boot: move x86 boot module counting into a new boot_info struct
>
> Daniel P. Smith (42):
>   x86/boot: move boot loader name to boot info
>   x86/boot: move cmdline to boot info
>   x86/boot: move mmap info to boot info

I've committed these 4, with the noted minor adjustments.

Unfortunately patch 5 needs some more complicated rework.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 23:03:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 23:03:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821399.1235198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ZWF-0000xn-Tp; Thu, 17 Oct 2024 23:02:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821399.1235198; Thu, 17 Oct 2024 23:02: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 1t1ZWF-0000xg-Qz; Thu, 17 Oct 2024 23:02:59 +0000
Received: by outflank-mailman (input) for mailman id 821399;
 Thu, 17 Oct 2024 23:02: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=QiKY=RN=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1ZWE-0000xa-L5
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 23:02:58 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20603.outbound.protection.outlook.com
 [2a01:111:f403:2412::603])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f1e89397-8cdb-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 01:02:57 +0200 (CEST)
Received: from BL1P222CA0026.NAMP222.PROD.OUTLOOK.COM (2603:10b6:208:2c7::31)
 by DS7PR12MB5840.namprd12.prod.outlook.com (2603:10b6:8:7b::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Thu, 17 Oct
 2024 23:02:50 +0000
Received: from BN2PEPF000055DD.namprd21.prod.outlook.com
 (2603:10b6:208:2c7:cafe::b) by BL1P222CA0026.outlook.office365.com
 (2603:10b6:208:2c7::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18 via Frontend
 Transport; Thu, 17 Oct 2024 23:02:50 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN2PEPF000055DD.mail.protection.outlook.com (10.167.245.7) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.1 via Frontend Transport; Thu, 17 Oct 2024 23:02:50 +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.39; Thu, 17 Oct
 2024 18:02:49 -0500
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.39; Thu, 17 Oct
 2024 18:02:49 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 18:02:48 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f1e89397-8cdb-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=QtTYJrXRKxSIYghynvQYpU+DhidnRGHneNMbZ2xBni2eNMLNecMfMdh1nKfr2jjNdw9bdM0fHDYWwn+W94MsVp/t9CgOml1WFh+b7t0R8gG4hw/NvuAv+yk0xgCZY2qDymuEHVLkNu8tjT1DhiFm7g2MP9QnY5YjzncJ6P9gVOh0TjXYiLd4/5sRrVGzibmqh+fwMPWAEUAzZS5g9gzL4BPZxItQH1IgZzU/iXfMgPQ2JHN7dBrwbmInqAXX+lCF/NeZDg298VACgZ2kVB3+2+VbcchR58Nl6iIDUAeIZLQuFpA6u7liQ2a8KLnW5uCRHFhQqHjgN5xWGfCH+xcJOQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=rlssxS5dA+B8fy3sNYL4ak5z1TyaBT3rNYJ2kxgo62g=;
 b=t1Ojzk8lg/XQAJhy8OTmwvzmu6LsIZJr3NwcmC9+sSLwGregKxrEiXRuOAdyg6wImnL+LIH/fCRSN+t7T8ZNeyGT9bEoWQZ6CQD+cx4dVD/4mT6Ql5jMhfSBAmNtPM9f+S5MzshiqNtITN7bFCLr4wxrMnXZ7NkBrXfL+zAhm2YHvupgiDioOx8wDAAethZKAErKZVguVHWFlMmOdsXBhOV3yajOpxIZjT68Nd5jc2i0ZbTWXAWWKLpjyXX3tRUnr8F51uI9at7vPtkwKbwu052/YTyXnp+MczFEv5kr5r7GQSxgByhOoRU03Av71NECJqzZL4UItV1FTwsqrisRbg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=rlssxS5dA+B8fy3sNYL4ak5z1TyaBT3rNYJ2kxgo62g=;
 b=UnnU+uN/4X1M0rhsJs9Bg05DpjIosZtqApy069eivD31+YCpowKgFJdSFSoONOkJg6g2hOhWcQpxqQmb1W56jPghPU1GDltWZ0Qbdqp2jLIxBJCjKtVVahTEcFLy/i1zPL2Bs6PI8U3H9P4LeeiGJ26c0jIo2wgaqMmzpBPJG9g=
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: <73783f6f-c041-4190-bed3-f2cebd2e57b2@amd.com>
Date: Thu, 17 Oct 2024 19:02:43 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 08/44] x86/boot: convert mod refs to boot_module mod
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-9-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-9-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000055DD:EE_|DS7PR12MB5840:EE_
X-MS-Office365-Filtering-Correlation-Id: 6513af6b-6719-4d93-df6e-08dceeffd327
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?dllMQmxmQzNuOWlkc2N4WHQ0TGpKajJndVk5Qk15MDBERXl2b1B2Y1BjREc2?=
 =?utf-8?B?U09aRkVRelpTeUhGUGpmVk9zQUcxbGxoTEN3VEVTMW9TUkI3U1F5T0ZPUHVZ?=
 =?utf-8?B?VTM1NTdQeUJhZXZ4MERNRmtxcTIyUW83Mk5IWm8rNjRQM09lY1ErSm85Q0xP?=
 =?utf-8?B?M0ttYWphUlJFOUdYaWo0ejFBakJnYW05RkU1NkNDMDNyREJKNmF1N2lFZzVi?=
 =?utf-8?B?STBpZ1l2eGFIR29UT0FsYnF3S3NkeXg5TmpUeDJxaGdjTHlGbnA2aVdNYUF2?=
 =?utf-8?B?UElRQkYzNnBNMC9KS25yYksyQ1NGRXdkV3MyYytmT09JRXlId3pDUjJackRj?=
 =?utf-8?B?OGhpb09SRk5WL3dGZ2Z4cUp6Mjg2WEZUbU9OVkxRcFBnQUJ4VGFtVlNFTFpM?=
 =?utf-8?B?OWp5TWlVZm9ZMmZGWm5EeHdPWm9Kc2xpTnNJd1NiTERZcFNvOWlocXNIZ1VY?=
 =?utf-8?B?T2VCczNyQXpVUWxsK0RKWDFFQS9GeW5QNHh1Q1dTOXdFdmhYR29YNG9zeVBt?=
 =?utf-8?B?VnBDVmRpRkFKaTJSeHhzVVordGFYQTJaL2tLbW5RczNkNVBKSk1UenhTUThN?=
 =?utf-8?B?YTV2akhteEhBRmRuNjJrUDFBWEtCVUhDTFFEcW1qU0g0cExhSEZxM3NpcWRZ?=
 =?utf-8?B?cE9XcGN2aHFFR2pKblhMNmhIbWhpNkxFbVV4RktvZ05VZDRNS3dVM1RjMWtw?=
 =?utf-8?B?MVR4WFJTRlh2NEEwRTdCQit3QzF3Q2k2VkxYY1lWcS9BVkQ3NWIwM29ObVVC?=
 =?utf-8?B?ZGlFMkhIcGdsSWRFSXVNSXQ3cUZBMmlBK0tzYzJzakZkcDlpRzV5c3cvdzNO?=
 =?utf-8?B?WXNyT093RE1RVnhkR3p0cnp4a3NLOVFONE51U3NVOHNOYjNIZHVteTYyaW1L?=
 =?utf-8?B?OWx3SWxxNjE3ZHhpYlh6OTBYd0taVE5Rc08veVpicWlpWWl0OVdVQU9RRzQv?=
 =?utf-8?B?cjI0ZlRxUG5Pb3dGREx5WTZYZ3NHeUlnaUVWL0E3SmhQaTNTdEFkK25qUWo2?=
 =?utf-8?B?ZGhOVWNSbzFoeVhXa1k3ZUdXZjJuRWQ2Y2xYZnV2THhXK0FycWV4c1FFNXZ6?=
 =?utf-8?B?cU8rSE8xVERvckgwNFppMHYvN3FDcENvRkQrZGNMdDFYTEs4OG1jZ3hYY0F6?=
 =?utf-8?B?N2oxazlhMVptMWszRG5ORThGWHk4OWkxQVJnSkh5dGFSNjNCRGRieGNPc3Nr?=
 =?utf-8?B?czJjdzQxMVVaYkRUT1RLdFVRWEpBNEJwQWtERjJhT2ZEaDZ1VFhCZmlvWURz?=
 =?utf-8?B?U0tRSTI2dkp5Q096S1NjVUY2YTExSXRqVHIwZVZXK1JyY3gvZjVkTzhPclVm?=
 =?utf-8?B?SklLVkNPNzlLS2ZZNGNLQStxcUVhV0FVNFpJck5OY2phQXR2TGlBVUxmaWtK?=
 =?utf-8?B?ZFU0Qll6QmJaM0N1WGtHZHJTUkNGRnpiZzFubG1yR0lqSG0xWjVlTXRqVEhS?=
 =?utf-8?B?K09Ga2VZR1YrQUhXM0g0OERGeHpvQ0xmaUcwSEY4VWZqeFV4cC9vd01nOG8r?=
 =?utf-8?B?SUdYdUdsaktGY2RVTzJNNktYeXRsYmVjUTBYR3Q4RUNYc2JCWmtOeGxhSzRM?=
 =?utf-8?B?NnUxZ1I2WFRjQjkrL0NpTjk0Vks4RU9tY2pEMGN2eHZWdS9OQkM5eUFaLzdq?=
 =?utf-8?B?VlRKSGNUTmtWZW9RclFTc3dNVkhpMHpKR1hwcm9pU2kyOEpNNDdTdUtmNHFt?=
 =?utf-8?B?Vkl3c082eGtOWmxFTEpnSkdvMWNGdFpIa1pxcWxQbUdvUzNBSWY5aFllRUkv?=
 =?utf-8?B?MTA3V1lvbFBYaDVTb2lldEFmV2h3UlhZK0NFT1RIS1MwUDE0TGUwRm5qdFJL?=
 =?utf-8?B?aFRZVncxaUUzT25lTGRrcy9KKzBxSmxiMjh3TzlLTzRvZjhoYWhvdXVjNlpv?=
 =?utf-8?B?eFFkdXlvVDJ4TDZLQUZUVWNnQzUxYktXK1dMZEhUVnFxT3c9PQ==?=
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:(13230040)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 23:02:50.5507
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6513af6b-6719-4d93-df6e-08dceeffd327
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:
	BN2PEPF000055DD.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5840

On 2024-10-17 13:02, Daniel P. Smith wrote:
> To allow a slow conversion of x86 over to struct boot_module, start with
> replacing all references to module_t mod, only in setup.c, to the mod element
> of struct boot_module. These serves twofold, first to allow the incremental
> transition from module_t fields to struct boot_module fields. The second is to
> allow the conversion of function definitions from taking module_t parameters to
> accepting struct boot_module as needed when a transitioned field will be
> accessed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
> Changes since v5:
> - rewrote commit message
> - coding style changes
> - added comment for initial_images assignment
> ---
>   xen/arch/x86/setup.c | 64 +++++++++++++++++++++++++-------------------
>   1 file changed, 37 insertions(+), 27 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 11e1027d72dd..1b56eaf26efe 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c

> @@ -1460,9 +1465,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>                * move mod[0], we incorporate this as extra space at the start.
>                */
>               struct boot_module *bm = &bi->mods[j];
> -            unsigned long size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
> +            unsigned long size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
>   
> -            if ( mod[j].reserved )
> +            if ( bi->mods[j].mod->reserved )

Use bm->mod->reserved here?

>                   continue;
>   
>               /* Don't overlap with other modules (or Xen itself). */

> @@ -1591,8 +1598,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>                   map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
>                   for ( j = 0; j < bi->nr_modules; ++j )
>                   {
> -                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
> -                                   mod[j].mod_end;
> +                    uint64_t end = pfn_to_paddr(
> +                                   bi->mods[j].mod->mod_start) +

pfn_to_paddr and mod_start can fit on one line

> +                                   bi->mods[j].mod->mod_end;
>   
>                       if ( map_e < end )
>                           map_e = end;
> @@ -1666,11 +1674,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        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),
> -                         _mfn(mod[i].mod_start),
> -                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
> +        set_pdx_range(bi->mods[i].mod->mod_start,
> +                      bi->mods[i].mod->mod_start +
> +                      PFN_UP(bi->mods[i].mod->mod_end));

Indent PFN_UP since it's a continuation of the previous argument?

> +        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
> +            _mfn(bi->mods[i].mod->mod_start),
> +            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
>       }
>   
>   #ifdef CONFIG_KEXEC

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 23:04:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 23:04:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821407.1235209 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ZXd-0002Cl-A5; Thu, 17 Oct 2024 23:04:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821407.1235209; Thu, 17 Oct 2024 23:04: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 1t1ZXd-0002Ce-7R; Thu, 17 Oct 2024 23:04:25 +0000
Received: by outflank-mailman (input) for mailman id 821407;
 Thu, 17 Oct 2024 23:04: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=QiKY=RN=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1ZXc-0002BI-2C
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 23:04:24 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20613.outbound.protection.outlook.com
 [2a01:111:f403:2408::613])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 248ccf05-8cdc-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 01:04:21 +0200 (CEST)
Received: from BN0PR04CA0038.namprd04.prod.outlook.com (2603:10b6:408:e8::13)
 by IA1PR12MB7712.namprd12.prod.outlook.com (2603:10b6:208:420::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.19; Thu, 17 Oct
 2024 23:04:16 +0000
Received: from BN2PEPF000044AB.namprd04.prod.outlook.com
 (2603:10b6:408:e8:cafe::6e) by BN0PR04CA0038.outlook.office365.com
 (2603:10b6:408:e8::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.21 via Frontend
 Transport; Thu, 17 Oct 2024 23:04:16 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN2PEPF000044AB.mail.protection.outlook.com (10.167.243.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 23:04: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.39; Thu, 17 Oct
 2024 18:04:16 -0500
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.39; Thu, 17 Oct
 2024 18:04:16 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 18:04:15 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 248ccf05-8cdc-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HiMOZ5PTDxenXEEnYxRX7hwh84rs2O/L/EgJiiYgXiTo8EvYnQaOTJtzQIk8/PdMhZ5pjqirISXGEZWXG9S2ski6e94Tl9bdtnLidaYjZ/ybzd5HVUE2wnkwoxE2ft2+7hTp+kc42M0CNSclwcehyZFvwKDMHENuKK9Zv2zgbX1iy2vM9gETL9BxTkSxjyLlSxzTw47jgpHGhZjjeEypoAIHl/eKaql58bbJdF/2055PayzZmmxUV6crPEGQgeWTTbnD0rHejoF1iyCQjIRMM7KDpyF593ha8Pngq/8cgAX+tjy9+B8+AmzrRIf93f7kF1dhQ4PztBDQwZ59WOdbYA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=OEBhXu7pwuYzL0GDWgLRLdHeHtaZlsYoaZNgcZ97nxs=;
 b=ZyfZ6kDiRL5ZsWZUINV+XOWQSAvngUr5ELqRDPgIs30qLYuE292CRNDUf/sbKX8F0Y8LKi279ZOEsuz2iSfx7ctjeXpokhZQ77c2t5FPdHvgpwoJl9h8Cg0Oi0gmsLm6tZkrnrf9FvfXedn03V1OI7R0gEBRcPMQ4jPgHv1xBs8BaU42tjhqCc3wd0eJupJ15iHy8AviUxTLAkF4JJ9RoNfcZYW/Uw3vkFXUO1p3v1dWsvVXZ0rXW+F6jItqqSeEojVqkv+ceGnKVMNCrR66fOQ2ZZj71rg/WyFrHhOHlEE1IBmYUUuh7KamdtG0zMEqpLr6qUXOxQn/RvwSXGkb8A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=OEBhXu7pwuYzL0GDWgLRLdHeHtaZlsYoaZNgcZ97nxs=;
 b=RTyfC3C3PbaPg6JLppl1s7LaklKtmAziuKGrN4bR5DDLGl/9ICARyRconmraaXNqMM4iPE63ug5lQA8oBNe/dvi49VtGhERgq6e9Lq/paQ3yRMLYahYt/39h/WhEAc5g7j+hUMcHM1m5PIDseQDC2oKTiCCFm3s3Pg9QtmkReZw=
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: <3701ecb3-0694-4787-9190-ebb93bbaf2c6@amd.com>
Date: Thu, 17 Oct 2024 19:04:14 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 09/44] x86/boot: introduce boot module types
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-10-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-10-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044AB:EE_|IA1PR12MB7712:EE_
X-MS-Office365-Filtering-Correlation-Id: f6b86f00-055b-40b4-6941-08dcef000673
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?c1JwcnhWTzRpdkI0STlpaUQzelBsSkI2eUliY1VTV0M3NkZKTnF6V1VhQlBy?=
 =?utf-8?B?UjJkNWdJcjNWNlVKbmllQkFkeE1mQnJ1UVhtQWpoYS9JRmFJcnJHTFVCNzZD?=
 =?utf-8?B?NE1CUFFyU1FRUjBIUFRvS3c1WTNOLzhkS3hxMnBYaStuZFJiNThLUE4zK3d5?=
 =?utf-8?B?MEEyaHJ5dFh4WElpNzN5RzlJVXBwT0pPYWwvK1dTTnd0OWlFNzE5VVV2ZTlL?=
 =?utf-8?B?cUhjRDFNVzI1eTRacTVjQ1dqWCtyQS93Y1VIRXpjTWJCaW5zSkxjQkxjQ21o?=
 =?utf-8?B?NEs0Z0V5M013QWE0aUEyczRJS2ZkL3MvU0lOQUtJWmJVdlNRd0Q0TENrbHoy?=
 =?utf-8?B?NlExc2NoYlNvRnIydlZNVk9pOVBaQ1RYdHh3VTVSdDh3cktqb2tYK1RneTZI?=
 =?utf-8?B?VXFzNnZCc2JEcXE2V2hxNE83WFhPVW5KY2UxcHYxT3pTNkZ1cDlaVklmTDlU?=
 =?utf-8?B?TTkzS3Q3eFFqdWozUTU1WXRYZno4UWdYVmJqajRXM1FwZFBYZkhnZzRYeGYw?=
 =?utf-8?B?aFhCMzBNVGhZajJ6OGUvL0RUY1huQnRZcWxaL1NsTnVVU2RJclgyM0czWVRQ?=
 =?utf-8?B?UVFQUUU4RFU3cTVaWUNkb0ZaOWJYeFJLU2MwaFJwQW5PSml2TUVoWHdOVFlQ?=
 =?utf-8?B?bzU2Zjdkby9qSkgzSy9qWmYrbVJBTzc4d2hCNXI3WE9kSXcwQmlGTldMQnpQ?=
 =?utf-8?B?bjY2V2diUnY1Ti82ZVVOb2hvQmFTb0JCU1ZjbjVzN0h4aVR2S3Z2QlpXQ1pz?=
 =?utf-8?B?d1JBeE9NWmJuQkh4VFg4dm5SQ0hvVWFIWjBoa0REWTZHY2dleForZXJaUFFo?=
 =?utf-8?B?cWZ2ZlBWY0dRQnh2c0l3UjRxZFBrT0MraWdadmRTQyt3aDhPL29XbWU5QTBW?=
 =?utf-8?B?L3FjVHh6OFR0OVhLOUd0Yms5VjlCcFBJd0IyS0tncnBlTkJwWjltbEpkbFZN?=
 =?utf-8?B?OVJyNG1hOHJsQVhjNGtySHJUL2lEMWJTZDlzdmZJZXBTdWVVRTZoMnM1Rkcw?=
 =?utf-8?B?SjJqTmthbFlHTnRqdEFpOGNsdjRRTkltck1RUHlCampmWlZqWGtTY1NVTERZ?=
 =?utf-8?B?T2ppMzVTTm9SZWlibnVxYW1UZHJzUDE1WDVxNDhRQWhhV2tPYngxejFEVlc0?=
 =?utf-8?B?N2tsS0UvYk9OYm54QVorRFZFU2Yvam5CN3pqV0NtZTFOL2hIQ0ExRFhuMXVa?=
 =?utf-8?B?WnBNZ1lUUHU2UTdDUnJjQ0ZMa2dmaXFPT3NLMDdnODZaNXlKQk5xNy9Uck5D?=
 =?utf-8?B?b0U5S2lBTWlwN2xodlpNcFNZdG5QUjdZaUNCR25BTzZ4bkV1eTQyRXhHdUpM?=
 =?utf-8?B?TU0wMGFadVdJVURnSUhhdnUxeGtLbEh4cVZINGdKbmhQbTNWUkVnTVk5REdS?=
 =?utf-8?B?emlBK0Q3alV4SXppa2VqOHVtWkxCSTI2RUFYRWFRQUtISk1hdmhzYTUvVTcv?=
 =?utf-8?B?Unh6Yng5S3ZrSXBoSEJJV0tUc0NSbnNKQk1DV3RNcDRBdTk2dUtKZGtQeVpl?=
 =?utf-8?B?YUh6dzBham5NOWN5MG5PWjZRRE12VmNHM1JiMGMvU3hzd1pzL1E0Q2orenJw?=
 =?utf-8?B?NmRTWDhQT0hTblljdXptczdIczhCVUxZSzI5bkxsc0F0bWFyOUdXTGpMZzVO?=
 =?utf-8?B?S3VQUHZML3c5d1R1Mk1OVnUrTjhXYUI4aEhSd1RTMnFQVzIxMUNiWFJpWmk4?=
 =?utf-8?B?dXVNQlY2NFZiZnJpN1gxWnBpQ1pkSUE3OXl2M3hnTzF4dXdIV3BkY1dvK2FE?=
 =?utf-8?B?SXprV0ZpRmVueDBEbUM2VHp6YzVJNU1Qblh4c0J3OTV4QjZyUDRWK1NhcnM1?=
 =?utf-8?B?LzVReE5aVFpVTVppYkI5VXo5bVp4QUpRSEtuTWc1UDNQU1EveXpwZU9PekhI?=
 =?utf-8?B?b3B3Q0o3TlNFOEFyendEanp4V05aUSt1L25za3Y5N3l1Ync9PQ==?=
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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 23:04:16.6408
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f6b86f00-055b-40b4-6941-08dcef000673
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:
	BN2PEPF000044AB.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7712

On 2024-10-17 13:02, Daniel P. Smith wrote:
> This commit introduces module types of xen, kernel, and ramdisk to allow boot
> module detect code to tag the purpose of a boot module. This reduces the need
> for hard coded order assumptions and global variables to be used by consumers
> of boot modules, such as domain construction.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 23:12:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 23:12:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821413.1235218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ZfF-00086E-2f; Thu, 17 Oct 2024 23:12:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821413.1235218; Thu, 17 Oct 2024 23:12: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 1t1ZfE-000867-WD; Thu, 17 Oct 2024 23:12:17 +0000
Received: by outflank-mailman (input) for mailman id 821413;
 Thu, 17 Oct 2024 23:12: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 1t1ZfD-00085x-5w; Thu, 17 Oct 2024 23:12: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 1t1ZfD-00061E-3g; Thu, 17 Oct 2024 23:12: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 1t1ZfC-0002bn-Mm; Thu, 17 Oct 2024 23:12:14 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1ZfC-00078X-MB; Thu, 17 Oct 2024 23:12: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=ZiyPrsjRRKVwxqL+HqtrSUJU6gAuSfXZ174uVJJkSwY=; b=PxozI7MChWdW/1DYF3jjHqHz5V
	EBAzEKScS+Ow+63UpovvDtT9DwdzKPvdg/jU6eAmkbaQOPf0PY+1hW/2id4ZW3X6tgjFvK8URUY2F
	pbAXBQ0MQqIRRCkksxsdmEWpCiGua2UDtanXgUWg9jj98H3g9ey8tRwUIKdTxF22i5XQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188192-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188192: 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=081683ea578da56dd20b9dc22a64d03c893b47ba
X-Osstest-Versions-That:
    xen=b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 17 Oct 2024 23:12:14 +0000

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

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                  081683ea578da56dd20b9dc22a64d03c893b47ba
baseline version:
 xen                  b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d

Last test of basis   188165  2024-10-17 13:00:23 Z    0 days
Testing same since   188192  2024-10-17 18:08:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michal Orzel <michal.orzel@amd.com>
  Stewart Hildebrand <stewart.hildebrand@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
   b3ca3caaf3..081683ea57  081683ea578da56dd20b9dc22a64d03c893b47ba -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 23:13:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 23:13:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821423.1235232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Zg6-0000Ax-E3; Thu, 17 Oct 2024 23:13:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821423.1235232; Thu, 17 Oct 2024 23: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 1t1Zg6-0000Ap-As; Thu, 17 Oct 2024 23:13:10 +0000
Received: by outflank-mailman (input) for mailman id 821423;
 Thu, 17 Oct 2024 23:13: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=QiKY=RN=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1Zg4-0000AU-Te
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 23:13:08 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on20604.outbound.protection.outlook.com
 [2a01:111:f403:2406::604])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5cefb1ca-8cdd-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 01:13:05 +0200 (CEST)
Received: from BL1PR13CA0070.namprd13.prod.outlook.com (2603:10b6:208:2b8::15)
 by IA1PR12MB8078.namprd12.prod.outlook.com (2603:10b6:208:3f1::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Thu, 17 Oct
 2024 23:13:01 +0000
Received: from BL6PEPF00022571.namprd02.prod.outlook.com
 (2603:10b6:208:2b8:cafe::5e) by BL1PR13CA0070.outlook.office365.com
 (2603:10b6:208:2b8::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.8 via Frontend
 Transport; Thu, 17 Oct 2024 23:13:01 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF00022571.mail.protection.outlook.com (10.167.249.39) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 23:13:01 +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.39; Thu, 17 Oct
 2024 18:13:01 -0500
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.39; Thu, 17 Oct
 2024 18:13:00 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 18:13:00 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5cefb1ca-8cdd-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vcD1VtBkpy/NBooz7xa+w9Zbv752m0TOQdAn9e9T9cEuv3hlD7GTzHCmF/CuOnfRrSpm7I1ROfMjYTZHMSFXt3ZFtu9tPQrHScYGsIY4rGxQler0fnJmfXeTq1ZHAoewkR6SxL99JrGicK3+LNF/8xQ5+IQV/PJjdHAxt7DzANoBQpRaQwGKcziDFFZBd5zIKnQo2bmZrbJPzrxXgJnx0bYPDDT8WlUIWGw9TuMw6F9hDx01v8pFaZ69ooHCjg0C2gdJ06RhB/cupDGaIS+X3qxAATS6nDXSS9Z1x6aFddS4lbDnr7F5eSpIHf6lsrt2Ed0hFg30am3xbG2fX12GpA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=xB+CrNJ2+x2Ays8w4baPV6mTqog/lvZm6DwxS8oVzVo=;
 b=fnL0osKip2gUPfE+ll+q4xN9w3W9JknBpMPatWkz9zBuoBmclMqVkyJhaeovzUxMomvkUqdIGxT7ThZWcWzCygh9G50imWZoSr4QDIJlaL5pNeXhG8cQIEqp0qHazsHdZA0KqkoOPHcM2GCaVLRjOBAE8kLioObyuanIvyWWGmMRmeRQW2f0aYg7riOSiY21ziAIIB5A33FcSU7yd7B+Vl6NIqOIwIATBE5iL5WlfFP/n1t2QU9/6nNy1D8CK7+wnfcIrirdomohsP+34P72S4jqkEop3h+kWGtEKA/TEDTOaWBY17hNfF6EXoQXaIfdPjI8vLg7VKf3ZdlOPmX8ag==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=xB+CrNJ2+x2Ays8w4baPV6mTqog/lvZm6DwxS8oVzVo=;
 b=eA8lyR0hDmIO550tHh9ki+qFLlOLGToTCQ7NoxrRHxi1HI3k6d1yJrkjxnmWV8Nu853St6j/5Jg0mHoldXVMG4W3wblcGEVtNJiEkZo8N2zsWGeYknLJ7Ok2X2UU3aokqXPSkiOf+Goq/vTl+/BPp5+mBjlBeuRiLbhBMX1ZC70=
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: <394f8083-a6c9-4ccf-8e01-cdc1e6767214@amd.com>
Date: Thu, 17 Oct 2024 19:12:59 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 11/44] x86/boot: add start and size fields to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>, Jan Beulich
	<jbeulich@suse.com>, <xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.com>,
	=?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-12-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-12-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022571:EE_|IA1PR12MB8078:EE_
X-MS-Office365-Filtering-Correlation-Id: 8d1bbd21-846c-4e54-c2f1-08dcef013f4b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?L1FySjIxWTRqNzJobkxGaE1HZVpyWi9Ob28vRTN6YVd3NlVEbVZ2NkkrUnBV?=
 =?utf-8?B?dzI1YXNPQy9oTzI3L2FidG94dlVsMVAxY1J3ZHFiMDRkc0RKbmFIMnBRNysw?=
 =?utf-8?B?QjR2eDBnUUU2ZFJoQ2UxR01EMWhWSTVNanBpSHMwL25hMzF6cGdmd005M1Fm?=
 =?utf-8?B?OFRvS3R0aTlBamhxUjRnemY4ZkNCb1BGaVdDdStNNU83MFhNL05SSm11Smgw?=
 =?utf-8?B?Q3Bjcmx2UUk0ZC9aMGhnZHNYblYwN2RWdUQ2M2FPYWx5N1RYTkRFa1JjRlhU?=
 =?utf-8?B?V1V1SDZZaGVRdys1allkNEhiNzVoWXpvMjhWSjRMQWcwRHNzUWU3WURldkVu?=
 =?utf-8?B?NHF3OEFrVjMwVnVNczlOSEFmQXBmTWxlMnI1ZzN2ZUg1WFVFZ0tlckpRYzVD?=
 =?utf-8?B?S0lnV1FXUTBwYkNIL0FEUXhCaGVqYVRuMHpRY1Qvbk9uTG14anNWUVBrZUNJ?=
 =?utf-8?B?ZDkzS1VwVlF6WFRCOWo3Skx4R1ZkMDBUMmtFa09vaXFmNDRWalRlQUlJd0JW?=
 =?utf-8?B?R3BGTFJ2VE91YWd5ZFRqVk1HMEVWYWlyVThkVXhVdWNuTFl5ZkMrQTdpRGtN?=
 =?utf-8?B?enJscld1NTdKY2dsOWtrQjhROXVFM3d6czdIeDYxQStCZ1R0T1hZMmZXZElM?=
 =?utf-8?B?VXpuRjhOd1JsbU1iMkxWYTdTeWh4enJDa0JpMGxWUklEUk1mMVhWN0k1MTBQ?=
 =?utf-8?B?WFo5em9USXFOTHN1RmRmZFQrMTMxMkxJT3YzWnltSTd6S0FwNHp4MmxUVjJV?=
 =?utf-8?B?MEcySEhJZGZub3ZBYlVDSDdYQnVORFdpNW5XQ1Y0YStUYjgxbVJoNEdaQnhJ?=
 =?utf-8?B?UEZ2U2UvRVFEWE5VSEZxS1lvRk1IVnhtSS9UNmJQTFJlUHhBeSs2SzBvejlv?=
 =?utf-8?B?Zmo2R3I1UjI0bmdnRHRjMGllOXN1b1lKdjJNZHNGYkEyRis2c2hpdTNJRktZ?=
 =?utf-8?B?S0VRVWc3Zi9ZSlNUam5kZXJWS0tZbXB5TS9BSXBmK0hHdDBuejIzZDRtTmhW?=
 =?utf-8?B?WmhYcjNDNG5aNnhibHl4dHRSTlJMZXZsaTBVMjZDMlg5MTh1bGUxVHp3SGVt?=
 =?utf-8?B?dC9tc0VPQnRuc0hYT1NlRDE1OEw4cVhlblZHWFlyLzUrVmNTMjloWEphMHJi?=
 =?utf-8?B?bFZHRy9vOGpPS0t3b1ZWdmlRbnExUFBJV2F0ZUhYOFEwOVI3VDN2VmpaajYw?=
 =?utf-8?B?bVo0bndpaGwxbmNEY0JreHBoRTVmU2RrL3BRV2txbFFpdWxwbnJ2TzhvTGdJ?=
 =?utf-8?B?WGEza1JUZTRNRkJCNjc4bUFQbUtScW0yZHIvSHlKWmgySDhsRDVuMXpxeHNy?=
 =?utf-8?B?Vm44UzUvM0Uzb0VoUXNrRG91SXFRd2J3VjV0WmNNS0RYTDY0UjdjdURkTkU0?=
 =?utf-8?B?S0dFTWl4cGxKREw3U2hqMnF4bTNlNGtlU1dYbmI1cFYxa1lJY2xEbExWeW9O?=
 =?utf-8?B?bHJxTmQrNDJ0d25JWDJhYnNpR3FKM1hCb2wyUG9RL2pseWt4WG9Xd1pIT2Nu?=
 =?utf-8?B?RGdreFVYRndOZEswalo3YktId0E4OEF3WitEVkN5c2ZYbEVGUVBsT1M3ZDRj?=
 =?utf-8?B?eHRDR3RKbEF5Z3c5ZGZ4amEva1VSZWdtL2lnQTVEUEx1TncwaWtVSE8xSEJ6?=
 =?utf-8?B?U3U0V3ExaG51clFlYjN0cWpkWkljT0haZGpCNHJlVi9CSVdKdURMZ3VRc3k0?=
 =?utf-8?B?WWlxOHhpRDdRaFQ1ZG1yeUFaemdNVTBsU0dxdmFsaTFidjByWFArVkdLb3ZU?=
 =?utf-8?B?b29VMkFUZjh2bXRTOFlXOUlhUEhCRWZaQldpOUdpOFBrMDNteXlvS1NQQVdY?=
 =?utf-8?B?UGphMXlCNkF1dW1EWGs4OG5DM3FNeGg2NzJWWlB1RTQ4OTlHQnA5T2Y1a2I1?=
 =?utf-8?B?blFBZ092S1hZSDI5cUdMUzJkRFIySlA1a2VpamplV1pLVEE9PQ==?=
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:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 23:13:01.5078
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8d1bbd21-846c-4e54-c2f1-08dcef013f4b
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:
	BL6PEPF00022571.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8078

On 2024-10-17 13:02, Daniel P. Smith wrote:
> This commit introduces the start and size fields to struct boot_module and
> assigns their value during boot_info construction.
> 
> The EFI entry point special cased itself, and pre-converted mod_start and
> mod_end to mfn and size respectively. This required an additional test
> in the coversion loop to not convert mod_start and mod_end when the conversion

conversion

> was done for both the multiboot and PVH boot entry points. To simplify the
> logic populating the start and size fields, the EFI module population logic
> was coverted to using start and end addresses.

converted

> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>

with that
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

EFI now gains the alignment check, but beforehand it was just silently 
truncating.  Seems better to check :)

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 23:15:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 23:15:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821430.1235244 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1Zid-0000nz-Sp; Thu, 17 Oct 2024 23:15:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821430.1235244; Thu, 17 Oct 2024 23:15: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 1t1Zid-0000ns-QE; Thu, 17 Oct 2024 23:15:47 +0000
Received: by outflank-mailman (input) for mailman id 821430;
 Thu, 17 Oct 2024 23: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=QiKY=RN=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1Zid-0000nm-0Q
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 23:15:47 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2062a.outbound.protection.outlook.com
 [2a01:111:f403:2413::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bb595829-8cdd-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 01:15:44 +0200 (CEST)
Received: from DM6PR12CA0003.namprd12.prod.outlook.com (2603:10b6:5:1c0::16)
 by LV3PR12MB9411.namprd12.prod.outlook.com (2603:10b6:408:215::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Thu, 17 Oct
 2024 23:15:40 +0000
Received: from DS2PEPF00003439.namprd02.prod.outlook.com
 (2603:10b6:5:1c0:cafe::32) by DM6PR12CA0003.outlook.office365.com
 (2603:10b6:5:1c0::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.20 via Frontend
 Transport; Thu, 17 Oct 2024 23:15:37 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS2PEPF00003439.mail.protection.outlook.com (10.167.18.36) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 23:15:37 +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.39; Thu, 17 Oct
 2024 18:15:37 -0500
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.39; Thu, 17 Oct
 2024 18:15:36 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 18:15:36 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb595829-8cdd-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Lug5XigQCcVBR8kGpMoKW+lXVleHfGXBPnCHRM+SroTsL08Ce0ccG1+tBYCMbm0BxYC62vmuvW7u1MqMRz5heUpGT+HOMH4PfpTb4vVfp7R+3F4WxrJuGiYWtbOdEVlN7xs0GLiA8T/5FHX1HjXRpy8kGZxsBmMoYT7NkqxHaw1qe/H2YOE7KOV8rsAlpOevDTFxVRn4l+Q5qQ4CqjngsoiVw+fzs3HhhHVqSfGxcpSlSoIz+ID/xSz9fq/HMx3Hg8qqCodLN4fOA1sM+eacJWYNcZG9G3ItLel4nwh3dDHs+LH4wO6t/FOJM0BO3D39jqFPLQMVw7fbG5iNfHTRoQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=w4lPJHl433fjvn7gzT0sSSZbiDYLuToYof3A5FZAJUU=;
 b=a6lsbsb+xhfPUO41O3R9/ugLzR4CyowpWoYaGpKHxs6T7r8VFY/SPcVCQpzTIc5ZpKwpHejzlKH3j1YULqlF01j/PWYsCDDnnlQJWkRS95EapLzS8/kf1CQyOIOLPJyfOAqg41hbRxjghG7CyX9gxU+o7xJ5TrlfvI917rGynkB7DBvxumrOdmxPIGY2a1QGopQwJlSaS02R3ahBkm1RANmfwNnDXUwvxgS0/ihdXrOy9D6djLC7z4TmFOiZrOnjTG90FIcHTBUHgsTbWFVE7V354Yr04zfGDRP2Qdics0a+zLX+CqJUnOLchkV+vmvFhBNuw8uzkw06xYqzNprsHg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=w4lPJHl433fjvn7gzT0sSSZbiDYLuToYof3A5FZAJUU=;
 b=Scma5jmix2HGFaJZnl++/quF1yMT7FX0kFEskYVgDJbwpeBPez/kcLl9bvEX+Lmul9hlbJbeOu7H+LGTksUaxztZNu4EqbmtPDIy4ExNu1p0WazxwCF6kuTDL8qmTO0VBTTEBTzdzx12dly1NYRDW8LQ5Yv2cXIki/xVJV0r8gM=
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: <2133207a-88a0-4b92-a389-39259e649269@amd.com>
Date: Thu, 17 Oct 2024 19:15:35 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 12/44] x86/boot: update struct boot_module on module
 relocation
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-13-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-13-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF00003439:EE_|LV3PR12MB9411:EE_
X-MS-Office365-Filtering-Correlation-Id: c3a831a8-59ae-47bd-2509-08dcef019c57
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cVQxZDkzT1VwUU1OUUFjRTlOb2VsQnY0OUl1a2xSL1RJdlpSSHNUYkRCNk92?=
 =?utf-8?B?OUUxUk96NkJ0TFNwUnhmSU9TOVdyeTNEeEZHUE5yUzZLdFBCQ0lIODF5Q2t5?=
 =?utf-8?B?ZjE5dHBzQ1BFc0ZNd1orTkNFckowWlRYMmJJYWZXeUFFYlJlUVNKbFBrb3lq?=
 =?utf-8?B?TTErM1lzdnNlUjZnWWMvY2ZVS0o2M2QvYnArS3Awc1FQRHUybGk1a0oxUFdt?=
 =?utf-8?B?M3Mxb0lmNEdMdE9NOExnUzFqbVJQeE12UHVHREpuUmk0R0NFNTNtMGd3cXJs?=
 =?utf-8?B?ZGtKbUZ5V0xIQndjSjF6RVVkZjF4eHlGdEJNa0NKV25GcTJCU29TRkFNQ056?=
 =?utf-8?B?ZTFIcTd4R2dtSnoyQXpGbUZBMERqZzdONk9oN0FGVUVvU1dZTWVNbjZObGxW?=
 =?utf-8?B?d3ZSYjcycUxsTkFPVWk0b2JaZ1VWWFNFSVljTmNaRGthSTUrTTYwa00wOWE0?=
 =?utf-8?B?THZyRTNRbGJEQWd0aXc3dzdvaXlGOGIyNmNWVFlJSGNHT0RxRUttSXJJeUs2?=
 =?utf-8?B?cXJDTGtDOFJRSStHQlByRnhIcEErRysrYWZwdys0VU1yR3lpTU92a2ZIVUtx?=
 =?utf-8?B?WVNmenVQeUtFNGRFRlA4aHkwSytULzlVWmFsYjZXK0wzeWdyTGlETXZ5NmtD?=
 =?utf-8?B?V25Yb3VqVkkyYStRZzRXZzJuMU5rOXB6elJRRE54Vml4QzZwWi8yS0w1b0di?=
 =?utf-8?B?Nml3VGFNVUc0anhiMkFFMEJJTnozbW42bjU0ajVuQURoSWtKeTFBMUhoekFv?=
 =?utf-8?B?S2JvMmNTVWVFNDJDamo4cG1VOWFMcWFGZzd5Mmp3bHU5amdTSnB1a29nUjlr?=
 =?utf-8?B?YmZtOXorL3VVWGxIYlZROWhLMW84OFRMbDByYWxzQmxkNEN2bitDVW1FSWpV?=
 =?utf-8?B?ZkpXdDZ0SDNVV29NRzVzTkFJNkZsMTlrODFWblY3YSt6QmRkeGE0d2JrWW4y?=
 =?utf-8?B?d2JmK1RHMDQ3ZUFKTmNrdllGU0hQbTVBRkF3MXprSElxNE1VVFJoZ2o4cVFW?=
 =?utf-8?B?VWV0UjFtVEtwS3JXaGhTdHk1VFZuNlR3a050OWs3bFRoZStwTVNjWEFRVVRX?=
 =?utf-8?B?d2lXYVJKLzdUaHR5KzJOaXBjTy9FSjNUTmNReVlVUXcweThSTU94YWZIWlJh?=
 =?utf-8?B?MUtYeVhXcUpXVzRaU080TDdzYnFDelRJK2NHMksvWHl1REhybms2V2I4QTBs?=
 =?utf-8?B?V2o2SW4wWTV5M3hISFdBN1pHOUdwb0tlNnZXTFh0ekZHL2lTSXgwd2ZsR09T?=
 =?utf-8?B?MUVuTmlFZHpjRGNRRncxdUJMREdQTVJLMlpVMThsWXdvM0tBRzAvd21NYWJZ?=
 =?utf-8?B?MXM1VFVQZS82bFlIZ3dudVpSTkEzVHlIT05xM25Dd29PQTdhdFZib1BYQ0FH?=
 =?utf-8?B?M0lIMkJ6akl3QStaMGR2RXJjY0lTTTREcHJ1RVRqd1hYcVlaV1grM2pqTXEr?=
 =?utf-8?B?NnBlSEFaNXMxNkxodWN5UU9lUUFhRVgyMExMZHl3eEFwSUpNQXA2Um1PUVJ6?=
 =?utf-8?B?V1F1NytFN2QrRnRvN0ZXZEhacTU3Y1lZc3dBQ2o0MGpxb3NRWlJKeDBIalhh?=
 =?utf-8?B?UkNHYjlyeXZib25KUG8xVEV6YXZsbUFCbTlqQ2ZLaVFMQjhhRm5kT2ZGZ3Bx?=
 =?utf-8?B?dWgyZGU3MVVrbmU1aG5vdVNGL2IxNStVMTNHSVpMdXBsUWxTZ01vY3prY1BT?=
 =?utf-8?B?U1RQeDlwcEZqT213R25mSFk0eFdwbjNFd0xxT0xQaUFBM0U5L05ORVpIT0Jn?=
 =?utf-8?B?Ymp0cko4bGdzTHRYTjBUN0thb3c3anB3bE1la1FFbk5DR0tnb1FpVWFnUHpv?=
 =?utf-8?B?MnFDYkovSkpjOERXRlRaeXJRVDRvbDRaai9XSXE2M0YvQ3JKUDhhbzgxbGFB?=
 =?utf-8?B?b3I5WENiN1dCOHJlMXNLV3phWjdYVmJzd3BhNlYxRDVLV1E9PQ==?=
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:(13230040)(82310400026)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 23:15:37.5636
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c3a831a8-59ae-47bd-2509-08dcef019c57
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:
	DS2PEPF00003439.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9411

On 2024-10-17 13:02, Daniel P. Smith wrote:
> When a boot module is relocated, ensure struct boot_module start and size
> fields are updated along with early_mod.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
> Changes since v5:
> - corrected conversion function for a missed switch from mfn to maddr/paddr
> ---
>   xen/arch/x86/setup.c | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 6ee352fc0cde..d51b0b03bc97 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1380,8 +1380,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>            * respective reserve_e820_ram() invocation below. No need to
>            * query efi_boot_mem_unused() here, though.
>            */
> -        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
> -        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
> +        bi->mods[xen].start = virt_to_maddr(_stext);
> +        bi->mods[xen].size = __2M_rwdata_end - _stext;
> +
> +        bi->mods[xen].mod->mod_start = bi->mods[xen].start;

But now this line needs to be converted to an mfn?

Regards,
Jason

> +        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
>       }
>   
>       bi->mods[0].headroom =


From xen-devel-bounces@lists.xenproject.org Thu Oct 17 23:59:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 17 Oct 2024 23:59:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821446.1235261 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1aOR-0006o8-7A; Thu, 17 Oct 2024 23:58:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821446.1235261; Thu, 17 Oct 2024 23:58: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 1t1aOR-0006o1-46; Thu, 17 Oct 2024 23:58:59 +0000
Received: by outflank-mailman (input) for mailman id 821446;
 Thu, 17 Oct 2024 23:58: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=2/Py=RN=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1aOP-0006md-LU
 for xen-devel@lists.xenproject.org; Thu, 17 Oct 2024 23:58:57 +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 c406faee-8ce3-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 01:58:55 +0200 (CEST)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-4305413aec9so15878375e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 16:58:55 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431605f8e0esm10321815e9.0.2024.10.17.16.58.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 16:58:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c406faee-8ce3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729209534; x=1729814334; 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=0GPB8iwtQYxIXTVxPHbtqi7ZbMuQrAeIyutJnKz+h7A=;
        b=tC3z78+m2lr2SRbfI5Hs3YF9k1WC5C4jmaeRT59DC8FoDtrry/1wGqsVLLW2vmGaMm
         qfljYSPUcyyejEIepGDxVEcaWQFk0b9wHR2HMiOBK49pQwklUM9aMno70uC01XReI28h
         yH4aCoM+dNZD/plglEkmZIQK9Uw4QMYHx7hiM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729209534; x=1729814334;
        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=0GPB8iwtQYxIXTVxPHbtqi7ZbMuQrAeIyutJnKz+h7A=;
        b=DHCB/ZYJJ2qOYyZhaUV1I8UvlhBE2D/WCmdImR7Xe/NQ4lQoR0zOAS4FwuJ8tOFLY2
         THyf+ACp3BxnpHWNrMk9QTLWowkIemjNFwtxU4a4a8zb89ZpZmSFzy1d5m0sP7N7P4IQ
         Dx6TM5k0uCYj4oI5qsUt9d4wkxLudm/SDwneKYPxh0jidG4Jr19BNtT4TrNN9SKFo3oJ
         iyd1AXiBaiDbGLebonWAD9IXe5+yQ1t7l5dQQs0HXbXoRKTAG6iFZidbK5zdZ6dNjdTB
         DOnFCpjUSmPQG9PtMQBz37jseqfj0mtv5mtiJYIrHve/MjD19dpd55Ep4ESLKmhJ0UBE
         mAug==
X-Forwarded-Encrypted: i=1; AJvYcCW69kL8g27FTXncIUXwxFNIOQaZe1Xhd9yf+GnNHhZHoL0ci3gyEGvJyTK9+UkJMrAVyqvecdg503M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YynFbVtYgoJ8mHc67/LJexQFN0qagd8e7XCk1AtNt0zTNcpJLrm
	a9l+nR5Q3TCk3hZCiqOcxYd4VKLnDtdVvceGp5FDIISUJOkGSW4uEfQkom/nIJc=
X-Google-Smtp-Source: AGHT+IFp0bIRemccCA417iPH3iETP3GHiIi0YQ1kYl0jJHPUD2elO80lKncaWqpMZaA15eDdxEi3ZQ==
X-Received: by 2002:a05:600c:3b9b:b0:431:5d4f:73a3 with SMTP id 5b1f17b1804b1-43161655d48mr1963315e9.18.1729209534120;
        Thu, 17 Oct 2024 16:58:54 -0700 (PDT)
Message-ID: <5bc04cc7-b9ce-4d4a-9c69-62ae6ccc6acb@citrix.com>
Date: Fri, 18 Oct 2024 00:58:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 10/44] x86/boot: introduce boot module flags
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-11-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-11-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index 18281d80fa97..e8ba9390a51f 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -39,6 +39,9 @@ struct boot_module {
>       */
>      unsigned long headroom;
>      enum bootmod_type type;
> +
> +    uint32_t flags;
> +#define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)

There are two parts to this request.  First, there's nothing X86
specific about any of the flags added (in this series at least), and the
FLAG infix doesn't feel as if it adds much.

But, looking over the code, I get the feeling it would be better as simply:

    /*
     * Misc flags  XXX docs
     */
    bool relocated:1;
    bool consumed:1;

(Possibly with an enclosing struct { ... } flags; but I don't think
that's necessary either.)

because flags is never operated on as a unit of multiple things, or
passed around separately from a bm-> pointer.  For misc independent
flags like this, bitfields lead to far more legible code because you're
not having to express everything as binary operators in the logic.

I know this will be a moderately invasive change, but I suspect the
improvement will speak for itself.  (Assuming there isn't a need to keep
it as a plain flags field later.)

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 00:15:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 00:15:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821454.1235274 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1aeD-0006uX-Kp; Fri, 18 Oct 2024 00:15:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821454.1235274; Fri, 18 Oct 2024 00: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 1t1aeD-0006uQ-HE; Fri, 18 Oct 2024 00:15:17 +0000
Received: by outflank-mailman (input) for mailman id 821454;
 Fri, 18 Oct 2024 00: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=Xu+L=RO=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1aeD-0006uK-0M
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 00:15:17 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0b28485e-8ce6-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 02:15:14 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729210508585206.93971905076296;
 Thu, 17 Oct 2024 17:15:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b28485e-8ce6-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729210509; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=S04kpg88lILvWbNs1dVe9R8mwkeIL1TJb3O4IQtHjZMIhVLVil64DUd0DuOKYP+q87GbhOI0y/N7L5UCR5yNIhygXtVS6V2wpmHeotCS73+zBfn8zG3p9IbYg0gKrHUgwpZoFQ+wJggBIuk06t5oiafGtM24a4LSJmod6OVVqJs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729210509; 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=2WBY1d784sRwXYzUn8u8sRCxIsLl8d/a1Fy5wqmbP/w=; 
	b=UdN2ZxMNMoWSpDO76qjAf6t3zyWb9SOq1VYJD1G2mtuGupZYG+wXICQ2GjV2RIm5k8JqgZ8hpYyrlfOeFN90drbrT+Th30EQTwyhcKzJ+rhiRDaHE4aczGsfQCXn9zGaXdk5KGUMpSQp0ijkAKpD1mi9IAsmZ/tpiol5KmTc4bU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729210509;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=2WBY1d784sRwXYzUn8u8sRCxIsLl8d/a1Fy5wqmbP/w=;
	b=rIDKeouzjtMalC6lrJo74l7+sALDKWJ2mfsVec2L5BhF6i8pwGAcsKOLdqImgEDU
	LpBucpOgm0yAmXMjckhCwGIobYLRAhfMzoi+raZC7T8eoraEfenpZc22fJnRrcSOvgu
	31H04drAN4khssrtlcni5qmy09WYUUNrnuX/RqY4=
Message-ID: <1f409e81-7137-43ac-9616-4e18d1ec0817@apertussolutions.com>
Date: Thu, 17 Oct 2024 20:15:07 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 05/44] x86/boot: introduce struct boot_module
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-6-dpsmith@apertussolutions.com>
 <766eaa46-fc8c-4069-a3bc-116dac23ca53@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <766eaa46-fc8c-4069-a3bc-116dac23ca53@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 17:02, Andrew Cooper wrote:
> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index f7ea482920ef..d8ee5741740a 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -284,6 +284,8 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>>   {
>>       struct boot_info *bi = &xen_boot_info;
>>       const multiboot_info_t *mbi = __va(mbi_p);
>> +    module_t *mods = __va(mbi->mods_addr);
>> +    unsigned int i;
>>   
>>       bi->nr_modules = (mbi->flags & MBI_MODULES) ? mbi->mods_count : 0;
>>   
>> @@ -302,6 +304,13 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>>           bi->memmap_length = mbi->mmap_length;
>>       }
>>   
>> +    /*
>> +     * Iterate over all modules, including the extra one which should have been
>> +     * reserved for Xen itself
>> +     */
>> +    for ( i = 0; i <= bi->nr_modules; i++ )
>> +        bi->mods[i].mod = &mods[i];
> 
> I'm afraid you've got a bug here.  bi->nr_modules is unsanitised from
> firmware at this point.
> 
> It's checked/clamped later in __start_xen(), but not before you've
> potentially scribbled past the end of bi->mod[] in this loop.
> 
> I think we want to retain the warning from clamping (which needs to be
> after printk() is set up, so after parsing the cmdline), so to
> compensate I think you want:
> 
>      i < ARRAY_SIZE(bi->mods) && i <= bi->nr_modules
> 
> as the loop condition here, and a note to this effect.  I'm not sure
> what I think about passing exactly 64 modules, and this interacting with
> the Xen slot.

Completely agree. I think Alejandro was trying to call that out and I 
missed his point. Will fix.

> However, you also want to move part of "x86/boot: convert create_dom0 to
> use boot info" into this patch.
> 
> Specifically, the conversion from sizeof(module_map)*8 to
> MAX_NR_BOOTMODS, or there's also a latent bug that depends Xen being
> compiled as 64bit (unsigned long vs MAX_NR_BOOTMODS).

You are right, we should truncate to MAX_NR_BOOTMODS at this point and 
not later.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 00:19:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 00:19:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821462.1235286 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1aiW-00034Q-4b; Fri, 18 Oct 2024 00:19:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821462.1235286; Fri, 18 Oct 2024 00: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 1t1aiW-00034J-1n; Fri, 18 Oct 2024 00:19:44 +0000
Received: by outflank-mailman (input) for mailman id 821462;
 Fri, 18 Oct 2024 00: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=Xu+L=RO=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1aiV-00034D-69
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 00:19:43 +0000
Received: from sender3-of-o57.zoho.com (sender3-of-o57.zoho.com
 [136.143.184.57]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aa1e5804-8ce6-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 02:19:41 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729210771493744.6108440044962;
 Thu, 17 Oct 2024 17:19:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa1e5804-8ce6-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729210774; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ROmzkvP5hA532cjCBYpk7MhEhBEqxnSbYBh6jjD7dl7HALnMZV2fZUy0EZ5et63B7CWW/f19lqTTQDc9NFAxMPXNd3J5mXhazW5XU9saWm3JghqLjUhu9rH9TTfUzG7y7E9BxHgstj3kx3YtC73oWnh4xeItJ+0NLH77fnKNje0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729210774; 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=pKs5rlu+UF0KVgzNhpCHFYB1Rd0E4htXrkx4KJCb8G8=; 
	b=mTPm+PLKHEk8cah5NKL8nyKZHNVYfuhYVodMR9xtmPRLUX2lgw8NhKf80pxmCRMht3CslXkduRhVF2H9JOx4YvRSKz5HvxHAgYLD9z1Og8/RNGI9sOQPCYGqd5tsbEuKVnjd9rwMfQEwWFkLgu/P6NoD/0DgHCAHrSfrot7wRac=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729210774;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=pKs5rlu+UF0KVgzNhpCHFYB1Rd0E4htXrkx4KJCb8G8=;
	b=XtEscou7wT1l87j6g+dNqbkMM4Kp0m5TN9y9meBrUZpVKS1sogpKtY7NGDNG2avO
	2nZ2rSJLEh4UPNbQZs+z3RBxv7YDCfvssPcCSCkHjKrvZ9okHkh1MLxz05bFcAw3fub
	OfFGrXEOm6NxW+cQ/uyrm0kq6Q1HkKSGS2f0TxTI=
Message-ID: <09c2a61c-04ae-4750-b9bb-671548d714e7@apertussolutions.com>
Date: Thu, 17 Oct 2024 20:19:29 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 07/44] x86/boot: move headroom to boot modules
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-8-dpsmith@apertussolutions.com>
 <a0a12283-4197-41dc-89c1-1b7a703e3d0a@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <a0a12283-4197-41dc-89c1-1b7a703e3d0a@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/17/24 17:39, Andrew Cooper wrote:
> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
>> index d19473d8941e..5fe4f1387d03 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -17,6 +17,19 @@
>>   struct boot_module {
>>       /* Transitionary only */
>>       module_t *mod;
> 
> Blank line here.
> 
> I know it falls back out later, but it's very important for legibility
> to be able to tell at a glance which comment belongs to which item.

Ack.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 00:23:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 00:23:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821468.1235297 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1amV-0004Xa-Lm; Fri, 18 Oct 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 821468.1235297; Fri, 18 Oct 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 1t1amV-0004XT-IQ; Fri, 18 Oct 2024 00:23:51 +0000
Received: by outflank-mailman (input) for mailman id 821468;
 Fri, 18 Oct 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=/epI=RO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1amU-0004XN-0O
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 00:23:50 +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 3e90f69d-8ce7-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 02:23:48 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c9a664e65fso1775255a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 17:23:48 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ca0b0e87c7sm105363a12.61.2024.10.17.17.23.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 17:23:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3e90f69d-8ce7-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729211028; x=1729815828; 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=YAzNaxrZSFDaNAQts78PeAV0Zfl1z9WxXLmkRbuw5/g=;
        b=JqMH3+pWiGQvdcFTZt454y6BTk0voEgatzNbjznXZ6qx1GUuIRNV3i7QaQFrHoqoNK
         eK9cogPIBu0chGeL8R9pEuSUS8qbmjuiUIHk+5ZPmNxGRxWYdoDlCkU7IX9Zsco04bFU
         D7CxGaxT2BEZ1k+E0FbpxnuKCCPoJvTCyYFiw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729211028; x=1729815828;
        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=YAzNaxrZSFDaNAQts78PeAV0Zfl1z9WxXLmkRbuw5/g=;
        b=TvAjqud8S40CGaCYN383lFMohs+aNOjQE6DFeFZP7VOoROFvvEqSH+C96ZBsbQ4Fi9
         AV/HTZvjVyG4YWxttka1FLZBiuU8EVvxj0ZhaibUKbXB5w+2ZBrK6ZjpiR5oV2a5Pxu/
         108ffcxeahQrwa4/+e7UjRLamQgQfMAileHQeaupSOnYfTFUchQfEg5kdcxYgTnh47ev
         W8T9/bLZ+PVqSBZfMUhbGWOowjwex0BYyoDCWCcfs+nR9DnL6dWI7cn2QxoksnzjGaYe
         tb3J0n1AeZwU1O89J+cZk+zFjpyajnRWHHfq8T+bP9Z390OPq4B1RfMFLuVlunFf5vNH
         Mcyw==
X-Forwarded-Encrypted: i=1; AJvYcCWMQzyOAsEEJ8HVmpgHAQjyxUZHCM7CrcUoMjiVTtEFhiP/3v6PPXc1OTug1kOGdiHtZSKW8FIsvvs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7H3eSRE4Q+5n/oSlYDLrXMGNJbcgu5iIF7zn0TjaV+L5aCAQK
	lEa16PQSD7JyTryBne0mTDk4L7nikXo5Ii28l/oa/FdP5tPKBOMldhXqiKdvmEc=
X-Google-Smtp-Source: AGHT+IGGo5VFHVwpXxIrTKi1xcwpYPtL3Uu8ONHuPjsGrWASvL1RdgfOmN/l5gU4CGj8u64dDqtNHQ==
X-Received: by 2002:a05:6402:2711:b0:5c9:6bd9:68d9 with SMTP id 4fb4d7f45d1cf-5ca0afaa1ebmr341384a12.32.1729211028171;
        Thu, 17 Oct 2024 17:23:48 -0700 (PDT)
Message-ID: <0c342b3a-f66e-44a6-a87a-5553f4f7ba7d@citrix.com>
Date: Fri, 18 Oct 2024 01:23:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 11/44] x86/boot: add start and size fields to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-12-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-12-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> This commit introduces the start and size fields to struct boot_module and
> assigns their value during boot_info construction.
>
> The EFI entry point special cased itself, and pre-converted mod_start and
> mod_end to mfn and size respectively. This required an additional test
> in the coversion loop to not convert mod_start and mod_end when the conversion
> was done for both the multiboot and PVH boot entry points. To simplify the
> logic populating the start and size fields, the EFI module population logic
> was coverted to using start and end addresses.
>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
> Changes since v5:
> - switched EFI population of mod_start/mod_end to addresses
> ---
>  xen/arch/x86/efi/efi-boot.h         | 4 ++--
>  xen/arch/x86/include/asm/bootinfo.h | 3 +++
>  xen/arch/x86/setup.c                | 7 ++++++-
>  3 files changed, 11 insertions(+), 3 deletions(-)

Despite being small already, I'd still prefer to split this into two
patches.

One changing the EFI path, and a separate one adding in the new (real)
start/size fields.

Sods law would says that if we don't, bisection is going to end up here,
except it doesn't need to...

> diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
> index 94f34433640f..779f101c3de7 100644
> --- a/xen/arch/x86/efi/efi-boot.h
> +++ b/xen/arch/x86/efi/efi-boot.h
> @@ -732,8 +732,8 @@ static void __init efi_arch_handle_module(const struct file *file,
>      if ( options )
>          place_string(&mb_modules[mbi.mods_count].string, options);
>      place_string(&mb_modules[mbi.mods_count].string, local_name.s);
> -    mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
> -    mb_modules[mbi.mods_count].mod_end = file->size;
> +    mb_modules[mbi.mods_count].mod_start = file->addr;
> +    mb_modules[mbi.mods_count].mod_end = file->addr + file->size;

... because you can't drop this shift until you have a full-width start
field to use.   file->addr might exceed 4G, and truncate with this patch
in place.

You're going to need to keep the old semantics here, fill in all 4
fields, and keep the EFI special case in the final hunk until you can
remove the ->mod_{start,end} narrow fields.

> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index f87faa31a2cf..6ee352fc0cde 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -309,8 +309,13 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>       * reserved for Xen itself
>       */
>      for ( i = 0; i <= bi->nr_modules; i++ )
> +    {
>          bi->mods[i].mod = &mods[i];
>  
> +        bi->mods[i].start = (paddr_t)mods[i].mod_start;

This cast isn't needed, but don't we need a shift in here?

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 00:40:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 00:40:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821479.1235312 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1b2d-0006aC-45; Fri, 18 Oct 2024 00:40:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821479.1235312; Fri, 18 Oct 2024 00:40: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 1t1b2d-0006a5-1M; Fri, 18 Oct 2024 00:40:31 +0000
Received: by outflank-mailman (input) for mailman id 821479;
 Fri, 18 Oct 2024 00:40: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=Xu+L=RO=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1b2b-0006Yk-5Z
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 00:40:29 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9074b2d4-8ce9-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 02:40:26 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729212021724179.02065458662037;
 Thu, 17 Oct 2024 17:40:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9074b2d4-8ce9-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729212022; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=KEK6Wao0q94HOy1NT1EXpKqzgdd8AvU6hXIMCmdeoBN+0XuKiFeGZcltH5y9MdUNGjFQ8cP2bIetRX3VHeVp04V0nDn2sEgQdQkYYR2G/jl4qh9AJcjzX3ol2BX6vzCkB6zRf+eEtRW7bffhJGmUCU1XC17IANScpjIhjBhijjs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729212022; 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=JMzJ5gcjp1O7Yu3mklstGVlkxt9Hd4Of0mW+e6bpH7g=; 
	b=bfI/dYJ+ttn6yAK0oBnYu5cuGladBSM3mvtF7zA/5KRGqOCM4duF1UxG6O8h2hF3dzgUq3ZyZcDIVE+W2hC/44joucK7umWUqQTzVqwnek9TX1Q0qiUFiDdeA+2GFNkYt4lQ/4doljeRZ+AxAIvz3kJa4hOgIA6PO0nmEhQ1TAA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729212022;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=JMzJ5gcjp1O7Yu3mklstGVlkxt9Hd4Of0mW+e6bpH7g=;
	b=ZzPXmfnZOcOAke1KBArwmiqYbCtyyoJvD7iBZMaCP256n7iCSPTB8FFWAVTUWQho
	01h7TTf3uL+bZ/AviiKgUXTdVoShQAX+Z8BWdfXUKngL2w+w6bgj76QlL2jriXxocpg
	k/qGnqxjs+9J1Sv4+MjRbE2YU4tifWO3VVQBfl1s=
Message-ID: <9a5b8aab-1c36-43ed-8ad9-0fa739ebe6dc@apertussolutions.com>
Date: Thu, 17 Oct 2024 20:40:20 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 08/44] x86/boot: convert mod refs to boot_module mod
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-9-dpsmith@apertussolutions.com>
 <73783f6f-c041-4190-bed3-f2cebd2e57b2@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <73783f6f-c041-4190-bed3-f2cebd2e57b2@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 19:02, Jason Andryuk wrote:
> On 2024-10-17 13:02, Daniel P. Smith wrote:
>> To allow a slow conversion of x86 over to struct boot_module, start with
>> replacing all references to module_t mod, only in setup.c, to the mod 
>> element
>> of struct boot_module. These serves twofold, first to allow the 
>> incremental
>> transition from module_t fields to struct boot_module fields. The 
>> second is to
>> allow the conversion of function definitions from taking module_t 
>> parameters to
>> accepting struct boot_module as needed when a transitioned field will be
>> accessed.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>> Changes since v5:
>> - rewrote commit message
>> - coding style changes
>> - added comment for initial_images assignment
>> ---
>>   xen/arch/x86/setup.c | 64 +++++++++++++++++++++++++-------------------
>>   1 file changed, 37 insertions(+), 27 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 11e1027d72dd..1b56eaf26efe 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
> 
>> @@ -1460,9 +1465,9 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>                * move mod[0], we incorporate this as extra space at 
>> the start.
>>                */
>>               struct boot_module *bm = &bi->mods[j];
>> -            unsigned long size = PAGE_ALIGN(bm->headroom + 
>> mod[j].mod_end);
>> +            unsigned long size = PAGE_ALIGN(bm->headroom + 
>> bm->mod->mod_end);
>> -            if ( mod[j].reserved )
>> +            if ( bi->mods[j].mod->reserved )
> 
> Use bm->mod->reserved here?

Yah, that would be better.

>>                   continue;
>>               /* Don't overlap with other modules (or Xen itself). */
> 
>> @@ -1591,8 +1598,9 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>                   map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
>>                   for ( j = 0; j < bi->nr_modules; ++j )
>>                   {
>> -                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
>> -                                   mod[j].mod_end;
>> +                    uint64_t end = pfn_to_paddr(
>> +                                   bi->mods[j].mod->mod_start) +
> 
> pfn_to_paddr and mod_start can fit on one line

I will check but you have to also account for the '+' as generally it 
should stay with the LHS.

>> +                                   bi->mods[j].mod->mod_end;
>>                       if ( map_e < end )
>>                           map_e = end;
>> @@ -1666,11 +1674,12 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        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),
>> -                         _mfn(mod[i].mod_start),
>> -                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
>> +        set_pdx_range(bi->mods[i].mod->mod_start,
>> +                      bi->mods[i].mod->mod_start +
>> +                      PFN_UP(bi->mods[i].mod->mod_end));
> 
> Indent PFN_UP since it's a continuation of the previous argument?

Ack.


v/r,
dps


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 00:42:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 00:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821489.1235323 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1b4v-0007Xt-MP; Fri, 18 Oct 2024 00:42:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821489.1235323; Fri, 18 Oct 2024 00:42: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 1t1b4v-0007Xm-Jb; Fri, 18 Oct 2024 00:42:53 +0000
Received: by outflank-mailman (input) for mailman id 821489;
 Fri, 18 Oct 2024 00: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=paTR=RO=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1b4u-0007Xg-VU
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 00:42:52 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20622.outbound.protection.outlook.com
 [2a01:111:f403:2417::622])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e7194871-8ce9-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 02:42:51 +0200 (CEST)
Received: from BN7PR02CA0007.namprd02.prod.outlook.com (2603:10b6:408:20::20)
 by IA1PR12MB8518.namprd12.prod.outlook.com (2603:10b6:208:447::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Fri, 18 Oct
 2024 00:42:47 +0000
Received: from BL6PEPF00020E60.namprd04.prod.outlook.com
 (2603:10b6:408:20:cafe::f1) by BN7PR02CA0007.outlook.office365.com
 (2603:10b6:408:20::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.19 via Frontend
 Transport; Fri, 18 Oct 2024 00:42:47 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL6PEPF00020E60.mail.protection.outlook.com (10.167.249.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Fri, 18 Oct 2024 00:42:46 +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.39; Thu, 17 Oct
 2024 19:42:45 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 19:42:44 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7194871-8ce9-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=opET5GyILpUYiawNrdmM6DVi4sK4gltuYag5lJzDt9Hd/YUBx65jnsS5LE4qDADY6zwsBPluNda8sF+uqItZPAxQcB2OlQPHouSeaYP+6drPMFYfzrMhDA4fCOQGGKQ6dCgAcDb4fk7w5rvvyqfF6ZTCvek0Fq6l1M1JNXLbJoH9jhFulyMRBcgkpmDQtWokrGXZxaZZuadAoK5FjedtHQRCd12svircPjqNrFJi73iJiKdtBzKCuMUkS7CXl514CQwAth5F/byjZnVgf5MohcNe3oG2DWVZyxrZErpzI+8AyTTG/MNaSz0oZaxpCDx99u8BB35rbnpYM0f0JzS7Vg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=wSrMqtuJMc2lXNjsjYK9vb2y0nNh0jXdP0MkdIJ7OLE=;
 b=SBTp6eKN4KjRBzXqEDr/enN0+qth4brJxzYN7hUWUmQKJoBB7KbVXDtu08Rx8kfIYZq0FYDoPcX2abCvity68+vCeVshEyeCtzndl+9osk4qeOrvpYWaAt1MYMaF/vJT1Sb4yTJAzkwp6SP4jXCeovJKaQBMyu0cHce7iBayffvukrzBN67nrQdgMIOnk08rURH92OVnAik2T/I94NEkYuYMTFj2eVLk8wY4czaL5Tpq/dSCKGtZ0d9vdznvojixVavAdOUKGXXRN2VQSSQfixTLPhqAhYcL7yiT4sN0tMrHJWLVIJgA6S/0pDIu77xfdfVgFsCTAURQ00oQeSSKVg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=wSrMqtuJMc2lXNjsjYK9vb2y0nNh0jXdP0MkdIJ7OLE=;
 b=h31MqlrWNDd4y0nI2B8c/6ISyicDajAeAahc441laK4CIQ7n7yvNLl2S8o9+xr4bJwJ0rmX01dylWt1FqC96MEk+6qsdwIr6zDvHKp2PC9NmyulxtF6lYq6NhfIm/UwA4/Q4n1b6QcKxz4RCiXmvzO/9zrphsW42Bka5UmA4bZk=
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: <a94f876a-5f9a-4f21-be28-f4192c991337@amd.com>
Date: Thu, 17 Oct 2024 20:42:39 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 13/44] x86/boot: transition relocation calculations to
 struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-14-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-14-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00020E60:EE_|IA1PR12MB8518:EE_
X-MS-Office365-Filtering-Correlation-Id: 84d7e7db-5d99-43d8-a9ac-08dcef0dc936
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?YnF4d2dqNVVqYzFKOER0MCtKRHJKeG9pc3F0Uks5Z0UwTy9UbTVQVjNZMjV2?=
 =?utf-8?B?dkZ4a1lteGo3V2hDdjM0NTI4RlZaYnRPVDhOMXVUNFk0bXJrNG16OFR2V2N3?=
 =?utf-8?B?UTR4a2xjVWFEdGRPYTAvenlmWDVMSTNyNGhDVU96c3lJQzNqVlRXb0pGai9K?=
 =?utf-8?B?aGwxOXdLdFJQcTNEeDNwL0pvSWF0YmgrcXBaaEhhMmNHMVJLaVN5QkM0UElE?=
 =?utf-8?B?SzBpSkI4TENJMkdjeXFQWFIzVlZnczczQy9QN3Y3QzJlcG03QktBNHhjNTBO?=
 =?utf-8?B?clo5WTYwa1pscGhrOTFjRnNkc1djN3NKa0tMN2R1UFRPS1R1eHFKcWNCcXFo?=
 =?utf-8?B?cld2b2JlWVlva1JGL3RRb0sxdDhrTm5qREhiQXZYeGsxVmpYVDhlQUxCTkN2?=
 =?utf-8?B?TzRaT25Hb2JvU1JlMVkxenNLL1BNM0tkdDUxTEMxR2poOHBpYWhDblVCZHhQ?=
 =?utf-8?B?REI5UkpVSTNHNkFzVjl2eGt6TGFDT3oxWHZMVnJ6eC93R3FIMC9qcTQ5TXZM?=
 =?utf-8?B?TmNZTnV0SWI4VVRrR2RRNEZ0OTNndXd6RFp0K0p3WVk3eWVUWVNEQzVDK21r?=
 =?utf-8?B?QUhpajVraTNubVdCOFRrOVFoT2M3TUxSTTB1NDQ2UHJ2K21lbmg5WC9CZFdp?=
 =?utf-8?B?UkMvNi9KbytDcVRqUXhXS2F4dEYvbUxiRWdmdldlcGI4VjUrMmNFODQ0OXlj?=
 =?utf-8?B?TWRIZDJYVmduZ0ZFZm1JR2w5U1hBS0tvUyswMGorZkZPaElYa2k0MnhwTXpR?=
 =?utf-8?B?TU1ob0svbXEvWE9ibFgxQzgza2VSMFJWNTBibU5nRmF6c1hZTU1ydnBLakhZ?=
 =?utf-8?B?Y1VweWprbGxQUUo4ekVjYjNNa2V6ckMxMFZJQWc5K3FJZHcxUkNSVklxMytm?=
 =?utf-8?B?RnU0Tk1JNk5naTdNZ3ZCRU9BMDROa0hjbk5jdFpYSjJsalBhWU1ZcmI5dUVE?=
 =?utf-8?B?R0c0S2YyRVNiZzV4bVhsL2VoWU1MUVhzaXI0NU5rcHZQcm1SMzJWVGl1QXlX?=
 =?utf-8?B?bHczbHlKeHZCdHQxWnUzNGdiZFFjYmNuUUVHVEE5bkRBOGhYRnpNQnovYjBU?=
 =?utf-8?B?RUNkMmg2cmxYalUrV0JKS1V0bEt4WFRkc0tKZUtxbFk1d1hxUzVOekFSSkU1?=
 =?utf-8?B?dnNmWG93RmhsTXZ0SXJFK0VHNzluZmRXV0VTVWhIMS9PLzlVMUx2R2poSDJ5?=
 =?utf-8?B?dmRNY1ZHY3J1OXdPVDZlcFhJejVuckQzQllTTVZjTjQ2M1R2RGlPRUFBZm9v?=
 =?utf-8?B?QzJnRTVKQm5xNXh3STFRSUpYNWlZdE5UR1pxZHVtQWYvcXd5dGh1TktkQkFH?=
 =?utf-8?B?S3puazFCMGNCc2J2VzFYbytRQlNFZC9tZUNxcWVheWF1ejduUnEzaTZPb1Nv?=
 =?utf-8?B?TnQ4R2hFREhlNnlZamdQdEo2UUJVRW9hbURUWWVvbm1KcWpOa2NzQjlXcGFx?=
 =?utf-8?B?R3NCOEc0UU1RVElVT0RvZ3NqMmhuUytncW9sRVJyaGtyanJxQ3ZHSzduRkpj?=
 =?utf-8?B?a3hWeDQzZTk5N3RqTVZWR0ZoZDlvRCsxVXNNVm94T0xmcHNUWHVCcEtEYVI5?=
 =?utf-8?B?NUNEZ1ladUVsQ1NqTGtjbG1OMkRQV08zYXVtUDlwUmczU053bFdwMDBiZTJr?=
 =?utf-8?B?Mk5FdlVITURUSHowanRsZWQvdWhMeFIrUUJvUWNuSW1LSXUraXBNNm1DMjU2?=
 =?utf-8?B?WW9xSmtHSEdoOU5aTnlOc25LVGovbXhTT0tVeEkydlRLV1lUcWV2ZzJLaTBJ?=
 =?utf-8?B?OHBmZFVGZFU3NDlTNlYyaXN2WlFzKzQ4L1NKa0ZvWUNNeU95d0dJdyt5RlNV?=
 =?utf-8?B?eHdvLzJDeUE0djRtdXFoajVTd04yWTQxSTRSUWVBL1c1eTZpeXlxOEhqNFNw?=
 =?utf-8?B?RGlQa3poYXpETkowbGpWUktWNUJuelFKV0pKZWNESFFKWFE9PQ==?=
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:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 00:42:46.8558
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 84d7e7db-5d99-43d8-a9ac-08dcef0dc936
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:
	BL6PEPF00020E60.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8518

On 2024-10-17 13:02, Daniel P. Smith wrote:
> Use struct boot_module fields, start and size, when calculating the relocation
> address and size. It also ensures that early_mod references are kept in sync.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
> Changes since v5:
> - removed unnecessary paddr_to_pfn, allowing condition to collapse to one line
> - correct a missed conversion from .mod->mod_start to .start
> ---
>   xen/arch/x86/setup.c | 38 +++++++++++++++++---------------------
>   1 file changed, 17 insertions(+), 21 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index d51b0b03bc97..44cec48fc877 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c

> @@ -1528,11 +1526,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>           panic("Not enough memory to relocate the dom0 kernel image\n");
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
> -                        << PAGE_SHIFT;
> +        uint64_t s = (uint64_t)bi->mods[i].start;

I don't think this cast is necessary.

>   
>           reserve_e820_ram(&boot_e820, s,
> -                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
> +                         s + PAGE_ALIGN(bi->mods[i].size));
>       }
>   
>       if ( !xen_phys_start )

> @@ -1686,12 +1682,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>   
>       for ( i = 0; i < bi->nr_modules; ++i )
>       {
> -        set_pdx_range(bi->mods[i].mod->mod_start,
> -                      bi->mods[i].mod->mod_start +
> -                      PFN_UP(bi->mods[i].mod->mod_end));
> -        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
> -            _mfn(bi->mods[i].mod->mod_start),
> -            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
> +        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
> +                      paddr_to_pfn(bi->mods[i].start) +
> +                      PFN_UP(bi->mods[i].size));
> +        map_pages_to_xen((unsigned long)maddr_to_virt(bi->mods[i].start),
> +            maddr_to_mfn(bi->mods[i].start),
> +            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);

I would vertically align all the parameters inside the (.

>       }
>   
>   #ifdef CONFIG_KEXEC

With those:
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 00:54:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 00:54:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821497.1235335 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1bFx-0004xH-NA; Fri, 18 Oct 2024 00:54:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821497.1235335; Fri, 18 Oct 2024 00: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 1t1bFx-0004xA-KP; Fri, 18 Oct 2024 00:54:17 +0000
Received: by outflank-mailman (input) for mailman id 821497;
 Fri, 18 Oct 2024 00:54: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=Xu+L=RO=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t1bFw-0004x4-AM
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 00:54:16 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7d977fb8-8ceb-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 02:54:13 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729212845451565.2493557416915;
 Thu, 17 Oct 2024 17:54:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d977fb8-8ceb-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729212846; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=YgvKeqDMw28AQLtdR+bF2r0Aa+Q86pmrZPMu9Nk0hZkb2sAW7scaeccJ+p7e6PyKxKyamZ+NjNMgyJ7ykvdUbtTZSWNkW310jBOFgbwMbjfS/mBeDSFJzetlHdpSGWllVKaB7m7VCp7nPxd24mPaHgY7wlnXPZzXkmscln+9bvQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729212846; 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=KLF4GOTGKi39kyoT2GIHZ0az9UBYS+/DtaPYr71MTOA=; 
	b=RpkFJIuS+l+/bFpI2QrOV1FjbDV0bUu+765dCRitGoVvZs3RhpXuk8oaKoANqlC9FdP4OpcHA4RiQaMtyHGq7IN5HYLR9yuUDEcqB7arn8NEfvAzmoUuRN3rivxNjTn09HJ70R9qUPJTGq0NvewGEybDdMWl92ZuSsThv5AbEbE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729212846;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=KLF4GOTGKi39kyoT2GIHZ0az9UBYS+/DtaPYr71MTOA=;
	b=mSh5R7elT3mRXd2rMgeNiCGZDuFLBOJiqpUtllEJ4W3aDdFqCeTIaU9nW0pq2ENn
	9VY5/N2BA0QWcm2Xgl5Jn8+CeHW/GXyMMqOdvrYZAptCNIHcq/HU9ar+whg6jz+6Mb3
	VnH7pyRDMhg1JY9JAQhhHrO9DavclyU4Cx4PDass=
Message-ID: <590a07a2-3363-4aae-b06d-63148bc5e20a@apertussolutions.com>
Date: Thu, 17 Oct 2024 20:54:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 10/44] x86/boot: introduce boot module flags
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-11-dpsmith@apertussolutions.com>
 <5bc04cc7-b9ce-4d4a-9c69-62ae6ccc6acb@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <5bc04cc7-b9ce-4d4a-9c69-62ae6ccc6acb@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 19:58, Andrew Cooper wrote:
> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
>> index 18281d80fa97..e8ba9390a51f 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -39,6 +39,9 @@ struct boot_module {
>>        */
>>       unsigned long headroom;
>>       enum bootmod_type type;
>> +
>> +    uint32_t flags;
>> +#define BOOTMOD_FLAG_X86_RELOCATED     (1U << 0)
> 
> There are two parts to this request.  First, there's nothing X86
> specific about any of the flags added (in this series at least), and the
> FLAG infix doesn't feel as if it adds much.
> 
> But, looking over the code, I get the feeling it would be better as simply:
> 
>      /*
>       * Misc flags  XXX docs
>       */
>      bool relocated:1;
>      bool consumed:1;
> 
> (Possibly with an enclosing struct { ... } flags; but I don't think
> that's necessary either.)

I see no reason why not a bitfield, and as you state, will make code 
simpler (and possibly shorter) elsewhere.

> because flags is never operated on as a unit of multiple things, or
> passed around separately from a bm-> pointer.  For misc independent
> flags like this, bitfields lead to far more legible code because you're
> not having to express everything as binary operators in the logic.
> 
> I know this will be a moderately invasive change, but I suspect the
> improvement will speak for itself.  (Assuming there isn't a need to keep
> it as a plain flags field later.)

Yah it will be a bit painful, but I would rather have cleaner and easier 
to read code.

v/r,
dps



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 01:15:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 01:15:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821504.1235348 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1bZz-00075d-Bf; Fri, 18 Oct 2024 01:14:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821504.1235348; Fri, 18 Oct 2024 01:14: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 1t1bZz-00075W-8y; Fri, 18 Oct 2024 01:14:59 +0000
Received: by outflank-mailman (input) for mailman id 821504;
 Fri, 18 Oct 2024 01:14: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=/epI=RO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1bZx-00075P-UE
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 01:14:58 +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 62e6dc84-8cee-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 03:14:56 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a99eb8b607aso155242066b.2
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 18:14:56 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68bc4370sm28340966b.100.2024.10.17.18.14.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 18:14:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 62e6dc84-8cee-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729214096; x=1729818896; 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=7trNMeizhi2sjMdwOJm9SUQthDpsfbtBNDyDPT8M0Dk=;
        b=B/DusWfPvqaaad2NoNKaNvDBAxZroZzWGp5v7ZsSFCt+edptFoX2pA2Y65WKSsKBJ5
         Na75NW3/a1H3IbR/aY4y3mHSdOLgaArn8/T33qyTbh3OmQLS+dMXBPTZnYd36Zrsn7sC
         +9yDd7yzO21lxeYDQxk0/f3Lpx2iYgYpvZjVs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729214096; x=1729818896;
        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=7trNMeizhi2sjMdwOJm9SUQthDpsfbtBNDyDPT8M0Dk=;
        b=S86gL5z5feN1Q0NLKCDA3erFs1dNSrLGCfv2U9N2OD4vUys6qHk4DY+Ko5aG4QG1LX
         2GO2caWwFMfUaruMYVMs2Da0yRepelpElw1GUSkQD0XSEkHebEPy/YSS4Ao+N7RYngMA
         seBjv6jBLK76W17qbQ0HtLF5qGcHYKYtPwe1stuCuun6HKfxVCWJWRDq06t/n2k/2PK2
         WZMldddDwM1/PaWQX/RXpeVDhS/tFy79ij/zX++rgDskQKKvyWtO/8mrXhbS/QyGn8dc
         zGppPCezftG7z5LNVrCkbWuasTeZbe+7NrXMhneKhQ7cSG1pbVFhXLHqVcZMCsCIBuFl
         EtTQ==
X-Forwarded-Encrypted: i=1; AJvYcCXsmJI3fsrba0wj7Az5Rw8vKJ2vK3Kxx7EULoy4qHj/vXfbahDakThNEVYaJsBR2F2IpUlBsz078Ac=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyWjMAxTheGbAC56Xl4slMuhKY9kmGDy31Gn2KwGakM4n1fsIXp
	SYUsV+PW0ZwW8qSS/Q+zAI34H9CpahVH4Ke+SLV20AsNAYm+6MsNyvurP+Ht/Jw=
X-Google-Smtp-Source: AGHT+IHj927bM5aSNUqAnw0OV5MP3+G2Msyg0ERz4pbicDBjChsWEqKQepleHwP0S+KxU9Ky/ZhFnw==
X-Received: by 2002:a17:907:7214:b0:a9a:2afc:e4e3 with SMTP id a640c23a62f3a-a9a69c55bdfmr38063166b.50.1729214095635;
        Thu, 17 Oct 2024 18:14:55 -0700 (PDT)
Message-ID: <c9cc4162-2ddb-4085-be39-a4e477f417c5@citrix.com>
Date: Fri, 18 Oct 2024 02:14:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 17/44] x86/boot: convert microcode loading to consume
 struct boot_info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-18-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241017170325.3842-18-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
> diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
> index 8564e4d2c94c..22fea80bc97e 100644
> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c
> @@ -178,16 +177,16 @@ static void __init microcode_scan_module(
>      /*
>       * Try all modules and see whichever could be the microcode blob.
>       */
> -    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
> +    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
>      {
>          if ( !test_bit(i, module_map) )
>              continue;
>  

Somewhere in this series, it would be nice to purge the these "module 0
is dom0" special cases.  I'm not sure where best in the series to do it,
and it may not be here.

Later, in "x86/boot: remove module_map usage from microcode loading" you
convert this test_bit() into a type != UNKNOWN check, but the pattern is
used elsewhere too.

How about a for_each_unknown_module(bi, bm) helper?  (which at this
point can even use module_map in scope).

If you introduce it at this point, then I think the churn later in the
series reduces marginally, and I think it removes all the "careful not
to look at dom0" special cases.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 02:01:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 02:01:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821516.1235370 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1cIW-00019i-Ki; Fri, 18 Oct 2024 02:01:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821516.1235370; Fri, 18 Oct 2024 02: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 1t1cIW-00019b-Hp; Fri, 18 Oct 2024 02:01:00 +0000
Received: by outflank-mailman (input) for mailman id 821516;
 Fri, 18 Oct 2024 02: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=WtqF=RO=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t1cIU-00019V-Uw
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 02:00:58 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org
 [2604:1380:4641:c500::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d005a6d4-8cf4-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 04:00:57 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 2F9925C5962;
 Fri, 18 Oct 2024 02:00:51 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C02B0C4CEC3;
 Fri, 18 Oct 2024 02:00:53 +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: d005a6d4-8cf4-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729216855;
	bh=7PTAIz+36Vc79ODWymyO64T6mDCP1k7N1wRDWcZcvDM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=kbg3HS6DkPt9RNYsNfaP3B2jDiXGzCp7pAnMKSOM0mUC0jRRAXGTXaHL2FOdga6AV
	 0XI+YOSb2B9Y5nhWlS0ySDBf2PMEdaZKFAlBhJ0yj8yIo6jFpYSn7ZsAiggWjbO2lL
	 rGbbzwK+zpIEhRT5hwWK4LhVpY6Wt9VuZcTpLCFK+p8bHfYKDriZ669JllIJDM0NRq
	 foetEZ+rzPv+B6WCORaho2iTR4QUJX8+iuYlxN7UEC3oQMn2OgroWVNiHzAKIrXG+h
	 klLLZ18KD72n2V4OInssfHHg5Ve9pIiDYrcocyi7n62nIiCWyT14CbxhSsrcj7UC4G
	 gtsJMEoOjzDlA==
Date: Thu, 17 Oct 2024 19:00:52 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Anthony PERARD <anthony.perard@vates.tech>
cc: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    Doug Goldstein <cardoe@cardoe.com>, Juergen Gross <jgross@suse.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Jan Beulich <JBeulich@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Oleksii Kurochko <oleksii.kurochko@gmail.com>
Subject: Re: [XEN PATCH v1 3/3] CI: Refresh and upgrade the Fedora
 container
In-Reply-To: <ZxFDUf2zYE1Qzr6v@l14>
Message-ID: <alpine.DEB.2.22.394.2410171900240.2416588@ubuntu-linux-20-04-desktop>
References: <cover.1729170005.git.javi.merino@cloud.com> <178560672106e37648304f5e597cc0b16c8db6db.1729170005.git.javi.merino@cloud.com> <ZxFDUf2zYE1Qzr6v@l14>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 17 Oct 2024, Anthony PERARD wrote:
> On Thu, Oct 17, 2024 at 05:20:21PM +0100, Javi Merino wrote:
> > From: Andrew Cooper <andrew.cooper3@citrix.com>
> > 
> > Fedora 29 is long out of date.  Move forward 5 years to Fedora 40.
> > 
> > Include all the usual improvements.  Rework the container to be non-root, use
> > heredocs for legibility, and switch to the new naming scheme.
> > 
> > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > Signed-off-by: Javi Merino <javi.merino@cloud.com>
> 
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Assuming it was tested successfully:

Acked-by: Stefano Stabellini <sstabellini@kernel.org>



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 02:01:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 02:01:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821517.1235381 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1cIm-0001Vv-Sz; Fri, 18 Oct 2024 02:01:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821517.1235381; Fri, 18 Oct 2024 02: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 1t1cIm-0001Vo-Oz; Fri, 18 Oct 2024 02:01:16 +0000
Received: by outflank-mailman (input) for mailman id 821517;
 Fri, 18 Oct 2024 02: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=WtqF=RO=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t1cIl-00019V-0c
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 02:01:15 +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 da43950f-8cf4-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 04:01:14 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 974055C596B;
 Fri, 18 Oct 2024 02:01:08 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 171EDC4CEC3;
 Fri, 18 Oct 2024 02:01:11 +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: da43950f-8cf4-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729216872;
	bh=IRb4Eps7fyqDJ127qmXjYcblzj8KsfLlIhVHmWFGf5o=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=HW4vggLNLRtd/3KbdmwUqXpdXUymxKaUM8o5dLWnk3hu8paS5NA0vujuZTca8twEd
	 UuVAmy8ncRT7k1ciq9WftbhI8uedS/Rvi22Q88V110JHKf0/PB2umt6zJZnqAiW+vc
	 BzCQLg1cZnavHppWdnmKmS+VEtPX3YCW8tvpRwx385kXAxohjX92VC3jt5bNh7K4Kb
	 AbNkP/sLXlu9I+ZnemPiW0+ePqJJa4aLfAQy8IxsW35KP83X3R3wr8xJeTBp7z/9HN
	 R4Rsr6qIkHQrfoGoGMzstVPkKLbRySGR9Lcfl88cqWthEgAyd7+LhRw6ZvoYkZ3D3A
	 yjHLBFVeWl+tw==
Date: Thu, 17 Oct 2024 19:01:10 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Anthony PERARD <anthony.perard@vates.tech>
cc: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v1 1/3] automation: Fix URL to the gitlab container
 registry documentation
In-Reply-To: <ZxFDN0rRfsg0iNBj@l14>
Message-ID: <alpine.DEB.2.22.394.2410171901020.2416588@ubuntu-linux-20-04-desktop>
References: <cover.1729170005.git.javi.merino@cloud.com> <5ebb776792a345724b43b0843aa41c21febcc843.1729170005.git.javi.merino@cloud.com> <ZxFDN0rRfsg0iNBj@l14>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 17 Oct 2024, Anthony PERARD wrote:
> On Thu, Oct 17, 2024 at 05:20:19PM +0100, Javi Merino wrote:
> > The gitlab documentation is now at
> > https://docs.gitlab.com/ee/administration/packages/container_registry.html
> 
> This link seems to be for self-managed instance of gitlab, but the link
> in the patch looks fine.
> 
> > Signed-off-by: Javi Merino <javi.merino@cloud.com>
> 
> The patch description could be removed, so:
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>


Acked-by: Stefano Stabellini <sstabellini@kernel.org>

 
> > ---
> >  automation/build/README.md | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/automation/build/README.md b/automation/build/README.md
> > index bd0c0e041804..ecc898680c91 100644
> > --- a/automation/build/README.md
> > +++ b/automation/build/README.md
> > @@ -110,7 +110,7 @@ make -C automation/build opensuse/tumbleweed-x86_64 PUSH=1
> >  
> >  [BuildKit]: https://docs.docker.com/build/buildkit/
> >  [registry]: https://gitlab.com/xen-project/xen/container_registry
> > -[registry help]: https://gitlab.com/help/user/project/container_registry
> > +[registry help]: https://docs.gitlab.com/ee/user/packages/container_registry/
> >  
> >  
> >  Building/Running container for a different architecture
> 
> -- 
> 
> Anthony Perard | Vates XCP-ng Developer
> 
> XCP-ng & Xen Orchestra - Vates solutions
> 
> web: https://vates.tech
> 


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 02:15:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 02:15:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821535.1235397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1cWi-0007lo-8h; Fri, 18 Oct 2024 02:15:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821535.1235397; Fri, 18 Oct 2024 02: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 1t1cWi-0007lh-5c; Fri, 18 Oct 2024 02:15:40 +0000
Received: by outflank-mailman (input) for mailman id 821535;
 Fri, 18 Oct 2024 02: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=BiWJ=RO=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t1cWh-0007lb-28
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 02:15:39 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20614.outbound.protection.outlook.com
 [2a01:111:f403:2407::614])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dc3e0dc0-8cf6-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 04:15:36 +0200 (CEST)
Received: from MN2PR15CA0058.namprd15.prod.outlook.com (2603:10b6:208:237::27)
 by CY8PR12MB7755.namprd12.prod.outlook.com (2603:10b6:930:87::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Fri, 18 Oct
 2024 02:15:32 +0000
Received: from BL6PEPF0001AB74.namprd02.prod.outlook.com
 (2603:10b6:208:237:cafe::d9) by MN2PR15CA0058.outlook.office365.com
 (2603:10b6:208:237::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.20 via Frontend
 Transport; Fri, 18 Oct 2024 02:15:32 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL6PEPF0001AB74.mail.protection.outlook.com (10.167.242.167) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Fri, 18 Oct 2024 02:15:29 +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.39; Thu, 17 Oct
 2024 21:15:29 -0500
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.39; Thu, 17 Oct
 2024 21:15:29 -0500
Received: from [192.168.122.223] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Thu, 17 Oct 2024 21:15:28 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dc3e0dc0-8cf6-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=TBeH5b8K0on5EiuDKME/YKoGUb0OONGXt9VQq/qqn65U9NEvcshkYfDGt2M01TGLYH8bTcx7F1EvEE4s9/4MoU5kgOZ8il3Sl0mKOfNyW2BcuZOyw5iE1Dpo+aDvAlgY9+3s7c3x2mmh1EuRWLLU6ndaGgUZ7aoWiEvPpgVz6Fm8j9TM0gmjnAlglgGPeEGXMX6hKz0vwNpRww2q2+nuWdpiR6LAVq8fE7FLOeGWkD1hgWyyJoYfUPfdhiyXwHJ6ZLmdbA8lY3b1Gku3+X7BZdcEYOCQQJq9l649drQSGWSulJhcTIZQpqzV5Z5X1Bx17/hhH+QmrxtOha6qwaREvA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jPZT5wcr0oCwNIfVfwipZlRogRfPVeQtTOls2m5X7HI=;
 b=RrD6aAqzDyqK0CN4nOLnF2BHdP4Wt3cpEDqlA6Kky3ZDldbcfSfAgqcwwJHyUj05iaZTKeF5XLsV4jk77PgK6W3Hc6lLWIYvvmxaoy2I269zt631tGy7AN1SYf2y98bnRwblYuyeqzpdPA+SN7ZgPCmzcpMJ1zGhOVMpNyR4y00bTA6UG4j1ftE0i9G2YTcDB+bgarpy86T2ueBkbtv+B5BJup8ObrIbGT6rishEmgm7EEcKH8Vuk4+JTga4JATuyodnlzDcwbDoaLrbMCTvzWUvhZ0e47wKqE22HMz2yHlMoFErlSz87yq69AwJiV432lIaSYAIqvBxIevRYyt0jQ==
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=jPZT5wcr0oCwNIfVfwipZlRogRfPVeQtTOls2m5X7HI=;
 b=QsbqoaVpAJMtMaIyVpm9RcAttEBRO6BxGDBmcZW2piVOSC1eqV+qlAp3Mx3LXrunbrjbqyH+oOGpSrMoHMuG5FHmE64SNoKTmFBe8LrMN56Zhow9w0BT/16C+dSquRdLv1R2mUm4sKofldZdYWV58x/6jX7c+0c9+HAtPOalXhI=
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: <b82a3f4c-51fd-40c4-ba71-36ec0f4bf688@amd.com>
Date: Thu, 17 Oct 2024 22:15:28 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/3] x86/msi: harden stale pdev handling
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>,
	<xen-devel@lists.xenproject.org>
References: <20241011152727.366770-1-stewart.hildebrand@amd.com>
 <20241011152727.366770-2-stewart.hildebrand@amd.com>
 <58d4bea5-ff50-4b12-aa81-8ae79b49196c@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <58d4bea5-ff50-4b12-aa81-8ae79b49196c@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB74:EE_|CY8PR12MB7755:EE_
X-MS-Office365-Filtering-Correlation-Id: 1dfb6f22-053e-4dac-4043-08dcef1abd16
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MEZ6aS9hZWYyYk15ZW54KzludXNvZW1lNUNNaUlJTEYySkJEVU5xTXNFcVdF?=
 =?utf-8?B?THErYlBwZ2xueWw4K056anRxSWZ1cUF5b1RGNkVuRnRvZnA2dldvcUhZUzAy?=
 =?utf-8?B?V0ErRy81RDl5SE5vRFczaHdvMmRNSmdJekNGZExNcElaeHRlUVVaUGVNa0NC?=
 =?utf-8?B?cUJRb2kwb3RKd1hTT1B0Vi9ERjZFVTdKTVkyY2ZaZjBTK2VzcERlRU9ZcE13?=
 =?utf-8?B?QWlsM1RHRkJQdFlzN0lIQ3JzTk8zcFJ1Tnc4QjRwZWEzQVRjcjZ5U0FXZFY4?=
 =?utf-8?B?Z1hES0ptSHBVQ1BkSGxyQnpBNWszMXJTMGl3QlJvMFRPWTBiSWE3akU2citK?=
 =?utf-8?B?VTNZTzBVRkFhSWlmbmpRaHpjZWxUb09Nb3pVOHp3SE14TjJZQzJ6TmNPZzdK?=
 =?utf-8?B?T2lIdm1zSSs2Ri9Ka2NDV3cweXRqSHBFZmZGREdNK0dnNEJmY1htenlDQ1ZM?=
 =?utf-8?B?Qy92MVZ0bmZHemgrMlVzdkE0aG5OS01lbEx0NGxvRENNc2RkSlBxcjVCOTNm?=
 =?utf-8?B?QkVnVnRlOHZ1VW5VL3FINkVka1FuWlVBTC9QVER1L3NmV0FERHBydk9VUHdx?=
 =?utf-8?B?TTR2VHJKdGN4cHlkczRac3AwZE1sa29yRXhEMitqVStyRnNzU1ViWGp0Vlo1?=
 =?utf-8?B?eENwM1pIMkpmUzY4Q29KR0VwZUZZS0tYemJZYUQxb1RzSjVad1lKcTU3Tmhy?=
 =?utf-8?B?Q2F2V1BhVjZJdjdNRGRhY25pNW54VUErdWt5M05xLzdnNmxGTHNUWitqS3VP?=
 =?utf-8?B?Yk1PQkk0MmhZNFY4aXRSZXRlSEd1MmpFZDJ5Z2FHei9jQ1hZV1JMNi9KbnNs?=
 =?utf-8?B?TVdsKy9WYXdzczk3dWZWUXJkcnB0Y2VkS1ZES0JvOUdUZzhndXZMNFBacEZV?=
 =?utf-8?B?ZjdybTFHWEF3VGdLUGp2Q2Ixa1Y0UnpVeVpQUkpCUmNUanFPK3hjRVpQOEFB?=
 =?utf-8?B?akVWN055UGZJaDRld0Evd051L0pqVWcrQWEyaFR5VlA5eWx5aVNrV2liUTUw?=
 =?utf-8?B?aitPMkNXZjNKSFE3M2Vab3dicmNLZWZxSkt6czI3dlllb2s5TkYzd3dhUUFw?=
 =?utf-8?B?Y0p5MUUrZUJQaEd2SGxmVzFNNG8xZkR5WW9ubGRQblZXK0J3UnZ4RFhDVFNU?=
 =?utf-8?B?U1c0ZFRLeVcrakNHbUV2YnBHbGNXSG5yVVRrQ3k3VVE2ZWJxdzRndDZadzRs?=
 =?utf-8?B?SnJsY0gwZGlmdWZUUjQ2N2ZBamdObzB2dXJ5b0VzUXB5MmJ3Z0t0Q0g1QWpw?=
 =?utf-8?B?bmQrM0VxWk5QMGtXUVVTSEcyWGtqZGJUUS9idTdzWHJKTWhJaXlRTE5kSWl6?=
 =?utf-8?B?WElvaE9rYVRZdDg1NFJyOXBWKzc3QlRQZVFrMkE2VDFQdkJGMlNBcU5ZMVox?=
 =?utf-8?B?UlpDVGVaams2WXFiRXNQSktESXZrdjROdVEvamVEVnFOTGRHdEZvSG9IUUs5?=
 =?utf-8?B?UWxVWWNCVnhRVE1CTW04WE5TSDJtZEl2c3h6eFo2Z1hBYXRGRFIrZzJoU1RF?=
 =?utf-8?B?ZUtOdjNGWGdoOXEraThReGNHR0hoaEFFRnQ1RUN6TVptc0VMZGZNTGcrTk43?=
 =?utf-8?B?WFNWcHdKc3ZnNE9xTW1kSzhacThEQisyNTNTSW5VdzlWTjBGWG4vK3pQY1o2?=
 =?utf-8?B?dWpXcS85b1F0c1MzTXdCank0NXV1Rm1Pa2UyTkdsOFBMY1o4K2YrNzg3KzRH?=
 =?utf-8?B?NHRVbG1jT1kvenU3bXMzVEd6V1lnbHJmR1BaUk82Q1hhamVzNU5yMDB3WUxL?=
 =?utf-8?B?NXQwTFNwQzRkd3A0VTJIRklhV0tmQ1NzaVVJNVdTbnRYak9nZUUzSUk1ekZq?=
 =?utf-8?B?TzZGU1llbS9iOHVnbDRwR3ZoNlkrd1BmZ1BZYkxKL09qRysxVEJLcEx4T2Jr?=
 =?utf-8?B?aWlmMUhpaUFBVnhvVEY3blR1ZW0wUExTZTFtNW5uMFd0b2c9PQ==?=
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:(13230040)(82310400026)(36860700013)(1800799024)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 02:15:29.9526
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1dfb6f22-053e-4dac-4043-08dcef1abd16
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:
	BL6PEPF0001AB74.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7755

On 10/15/24 02:58, Jan Beulich wrote:
> On 11.10.2024 17:27, Stewart Hildebrand wrote:
>> --- a/xen/arch/x86/msi.c
>> +++ b/xen/arch/x86/msi.c
>> @@ -1243,7 +1243,12 @@ int pci_reset_msix_state(struct pci_dev *pdev)
>>  {
>>      unsigned int pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
>>  
>> -    ASSERT(pos);
>> +    if ( !pos )
>> +    {
>> +        pdev->broken = true;
>> +        return -EFAULT;
>> +    }
>> +
>>      /*
>>       * Xen expects the device state to be the after reset one, and hence
>>       * host_maskall = guest_maskall = false and all entries should have the
>> @@ -1271,7 +1276,12 @@ int pci_msi_conf_write_intercept(struct pci_dev *pdev, unsigned int reg,
>>          entry = find_msi_entry(pdev, -1, PCI_CAP_ID_MSIX);
>>          pos = entry ? entry->msi_attrib.pos
>>                      : pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
>> -        ASSERT(pos);
>> +
>> +        if ( !pos )
>> +        {
>> +            pdev->broken = true;
>> +            return -EFAULT;
>> +        }
>>  
>>          if ( reg >= pos && reg < msix_pba_offset_reg(pos) + 4 )
>>          {
> 
> There are more instances of pci_find_cap_offset(..., PCI_CAP_ID_MSIX)
> which may want/need dealing with, even if there are no ASSERT()s there.

Yes, and some instances of pci_find_cap_offset(..., PCI_CAP_ID_MSI) too.

> Setting ->broken is of course a perhaps desirable (side) effect. Nevertheless
> I wonder whether latching the capability position once during device init
> wouldn't be an alternative (better?) approach.

I'll give this a try for the next rev.

> Finally I don't think -EFAULT is appropriate here. Imo it should be -ENODEV.

OK

> 
> Jan



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 02:42:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 02:42:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821545.1235412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1cwx-0007Yg-Dh; Fri, 18 Oct 2024 02:42:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821545.1235412; Fri, 18 Oct 2024 02:42: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 1t1cwx-0007YZ-B5; Fri, 18 Oct 2024 02:42:47 +0000
Received: by outflank-mailman (input) for mailman id 821545;
 Fri, 18 Oct 2024 02:42: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 1t1cww-0007YP-Le; Fri, 18 Oct 2024 02:42: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 1t1cww-00014k-JV; Fri, 18 Oct 2024 02:42: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 1t1cww-00039F-7I; Fri, 18 Oct 2024 02:42:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1cww-0007Ap-6r; Fri, 18 Oct 2024 02:42: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=DS72x2ovtIu2QJcIPnlTRDpHWSaADc3Xca8MB94M2HQ=; b=X0VSPy46P3B6Ft6TEacuHhMIjg
	jDOJHeTIiKOiBD9PzjtBE7d5TnL12GP5rPxtysyF6MWV8SiKjeUghcX7tK6K4Lij4H5XjH36B1ZDg
	Hgb8ecIh30G0r2ZbjfanoN/FOLVYl1RxHWmJJXEhM4TvHCkbVcXH1leXle2MNUvHqcUk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188169-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-6.1 test] 188169: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-6.1:test-amd64-amd64-xl-raw:guest-start/debian.repeat:fail:heisenbug
    linux-6.1:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-6.1:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-6.1:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-6.1:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-6.1:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=54d90d17e8cee20b163d395829162cec92b583f4
X-Osstest-Versions-That:
    linux=aa4cd140bba57b7064b4c7a7141bebd336d32087
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 02:42:46 +0000

flight 188169 linux-6.1 real [real]
flight 188214 linux-6.1 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188169/
http://logs.test-lab.xenproject.org/osstest/logs/188214/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-raw 21 guest-start/debian.repeat fail pass in 188214-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187909
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 187909
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 187909
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187909
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187909
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187909
 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-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 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-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-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-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-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-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                54d90d17e8cee20b163d395829162cec92b583f4
baseline version:
 linux                aa4cd140bba57b7064b4c7a7141bebd336d32087

Last test of basis   187909  2024-09-30 14:42:22 Z   17 days
Testing same since   188169  2024-10-17 13:44:21 Z    0 days    1 attempts

------------------------------------------------------------
663 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      fail    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   aa4cd140bba5..54d90d17e8ce  54d90d17e8cee20b163d395829162cec92b583f4 -> tested/linux-6.1


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 02:44:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 02:44:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821553.1235424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1cyC-000850-R0; Fri, 18 Oct 2024 02:44:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821553.1235424; Fri, 18 Oct 2024 02: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 1t1cyC-00084t-MC; Fri, 18 Oct 2024 02:44:04 +0000
Received: by outflank-mailman (input) for mailman id 821553;
 Fri, 18 Oct 2024 02:44: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 1t1cyB-00084j-AU; Fri, 18 Oct 2024 02:44: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 1t1cyB-000182-76; Fri, 18 Oct 2024 02:44: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 1t1cyB-0003Ab-0G; Fri, 18 Oct 2024 02:44:03 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1cyA-0007vG-Vx; Fri, 18 Oct 2024 02: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=rRBHztaY6wdg/6xvKR+4FkH+PEjgfUriQIGvSAISsxk=; b=BGoYFheQYHNzLfFLYpqJBcvP6h
	vKOEGk5S+MVZWwFJWMK3KcjG8hIEIn2vMnQ+xJoty80rj27Y/UPEnniMzBmYQM1ikFJihwvopmm2/
	3WXJhMnCv07QLpninNH7u+A7/lpHsVrOBGc1SRKbC9TkyVurCxBL6b2fAspqXhUMQ050=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188197-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188197: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=6e197a8ba5e349e511850fc52457992de88c8795
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 02:44:02 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 6e197a8ba5e349e511850fc52457992de88c8795
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    0 days
Failing since        188156  2024-10-17 09:14:11 Z    0 days    4 attempts
Testing same since   188188  2024-10-17 17:12:12 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 02:44:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 02:44:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821562.1235433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1cyg-0000Bj-6w; Fri, 18 Oct 2024 02:44:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821562.1235433; Fri, 18 Oct 2024 02: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 1t1cyg-0000Bc-3y; Fri, 18 Oct 2024 02:44:34 +0000
Received: by outflank-mailman (input) for mailman id 821562;
 Fri, 18 Oct 2024 02:44: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=WtqF=RO=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t1cye-0008Sr-N1
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 02:44:32 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e6b7a52d-8cfa-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 04:44:31 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 75BBAA434F1;
 Fri, 18 Oct 2024 02:44:21 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45283C4CEC3;
 Fri, 18 Oct 2024 02:44: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: e6b7a52d-8cfa-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729219470;
	bh=y4/9vUSU46QUvJ37YVwJ7PHeferKEDkYRNT77KetPXk=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=EKlLbIJUGbcxsL891caDYxri5QezBugVee+sz+jpq7g3mE0h8+H7CsIMze8RdGbBb
	 OrIcs3iNUEy1DgTIhZxec4N23dwlzZ8QORWCqoGpF7cJmJBDmcOzm0Cx3Lcd3kE8BN
	 P4L2wphXm7/4vLvM2URr7zGr/n/FoIBjgHTZEqTHsbjbujhhp6pr/mEtOW2NkBMjae
	 KpM01Khtm6jFcHj3+HijTxcrDVz0WHGYwK0XGWkBAIl5Ru+WiHI08Z/5aZVnVYaWtV
	 0dauGkgld3LvB8VAJerqQ1pt7+gqd5kimGJjwavmiSDVufLDsJGOh77k8+uAgeLCXH
	 hoZ9RXkCtwtsQ==
Date: Thu, 17 Oct 2024 19:44:28 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: victorm.lira@amd.com, xen-devel@lists.xenproject.org, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Christopher Clark <christopher.w.clark@gmail.com>, 
    Daniel Smith <dpsmith@apertussolutions.com>
Subject: Re: [XEN PATCH v1 0/3] automation: add x86_64 test (linux argo)
In-Reply-To: <40f27418-08b3-4b74-889b-12720be8f9c7@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410171903200.2416588@ubuntu-linux-20-04-desktop>
References: <cover.1729183051.git.victorm.lira@amd.com> <40f27418-08b3-4b74-889b-12720be8f9c7@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1391709021-1729217293=:2416588"
Content-ID: <alpine.DEB.2.22.394.2410171908210.2416588@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-1391709021-1729217293=:2416588
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410171908211.2416588@ubuntu-linux-20-04-desktop>

On Thu, 17 Oct 2024, Andrew Cooper wrote:
> On 17/10/2024 6:18 pm, victorm.lira@amd.com wrote:
> > From: Victor Lira <victorm.lira@amd.com>
> >
> > Add x86_64 hardware test that creates a Xen Argo communication
> > connection between two PVH domains.
> >
> > To accomplish this, add new build artifacts for Linux and Argo, and
> > update the xilinx x86_64 test script.
> >
> > Victor Lira (3):
> >   automation: add linux 6.6.56 artifact
> >   automation: add linux argo test artifacts
> >   automation: add x86_64 test (linux argo)
> >
> >  automation/gitlab-ci/build.yaml               | 34 +++++++
> >  automation/gitlab-ci/test.yaml                | 10 ++
> >  .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 ++++++++++-----
> >  .../tests-artifacts/argo/6.6.56.dockerfile    | 95 +++++++++++++++++++
> >  .../tests-artifacts/kernel/6.6.56.dockerfile  | 54 +++++++++++
> >  5 files changed, 244 insertions(+), 25 deletions(-)
> >  create mode 100644 automation/tests-artifacts/argo/6.6.56.dockerfile
> >  create mode 100644 automation/tests-artifacts/kernel/6.6.56.dockerfile
> 
> I'm afraid that we need to stop doing this test-artefacts like this.
> 
> The *-export pattern is nonsense (wasting lots of runner network&disk
> and time just to copy data back into Github's artefact store), and the
> main reason why we're at ~2T of data total for Xen-project.
> 
> We need a project wide expires_in: setting, which will prune all of our
> not-most-recent content, and probably make most of that 2T disappear.

I looked at this for an hour and couldn't find a way to do it
unfortunately. expires_in can only be changed if you are an Admin of the
Gitlab instance, meaning an Admin of gitlab.com.

However, there is a setting in each repository (not one global at the
gitlab.com/xen-project level) called "Keep artifacts from most recent
successful jobs" that can be disabled. I did it manually for my repo.

The big offender is patchew. I went and disabled "Keep artifacts from
most recent successful jobs" but I didn't see any immediate changes in
storage utilization. But it is expected to take time to propagate.


> But, the test jobs stating what artefacts they want are perfectly
> capable of pulling artefacts from somewhere other than an earlier nop
> build job, meaning that we could get away with having one artefact
> shared by everything, not one artefact copied per user per pipeline into
> the artefact store.
> 
> 
> I was thinking of experimenting with a separate top-level repo that does
> nothing but has a few manual runs to populate artefacts, and having the
> Xen tests pull artefacts from here rather than from earlier build jobs.
> 
> But, I've not had a chance to play yet, so I don't know for sure if this
> is a workable direction.
>
> Alternatively, if anyone has a better idea, I'm all ears.  But, it is
> very clear that the *-export pattern is a giant bodge and there are
> better ways.
> 
> Other notes.  Your dockerfiles use syntax:1 but not heredocs, and
> they're also root containers.
> 
> Please follow the pattern in
> https://lore.kernel.org/xen-devel/178560672106e37648304f5e597cc0b16c8db6db.1729170005.git.javi.merino@cloud.com/T/#u
> or one of plenty other containers I've already converted in the past few
> months.
> 
> Please do not add a new build job just to get a new minor variation of
> Xen.  Just enable ARGO in general Xen build.

+1
--8323329-1391709021-1729217293=:2416588--


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 04:11:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 04:11:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821586.1235473 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1eKe-0006lh-Lp; Fri, 18 Oct 2024 04:11:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821586.1235473; Fri, 18 Oct 2024 04:11: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 1t1eKe-0006la-Hu; Fri, 18 Oct 2024 04:11:20 +0000
Received: by outflank-mailman (input) for mailman id 821586;
 Fri, 18 Oct 2024 04:11: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 1t1eKd-0006ky-DV; Fri, 18 Oct 2024 04:11: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 1t1eKd-0002fy-Cd; Fri, 18 Oct 2024 04:11: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 1t1eKd-0005gT-4V; Fri, 18 Oct 2024 04:11:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1eKd-0007Fx-3z; Fri, 18 Oct 2024 04:11: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=D5rodSqUOP5UKpDSUJJ/uQHJbQIdRX0J/1i93FoIr8Y=; b=yjx3bNRGWQZYp2Udc7GGNNsEJ7
	KJgNbYz4Ct31VLAq6rsFf34rSVMpfKQ87MLzbD5wTLcfkh8bz++qc+g/0c9KPEfEhZDU13nDOHQX+
	b8UX5vDYS/N3CwjFC1v21OR2V/twWaP6G/rZlYV20PPF8dkisElqAUuotIbqC2WWxveM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188209-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188209: 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=a285d2ac2e524c808091062c67142cf5924b56f6
X-Osstest-Versions-That:
    xen=081683ea578da56dd20b9dc22a64d03c893b47ba
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 04:11:19 +0000

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

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                  a285d2ac2e524c808091062c67142cf5924b56f6
baseline version:
 xen                  081683ea578da56dd20b9dc22a64d03c893b47ba

Last test of basis   188192  2024-10-17 18:08:23 Z    0 days
Testing same since   188209  2024-10-18 00:00:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Christopher Clark <christopher.w.clark@gmail.com>
  Daniel P. Smith <dpsmith@apertussolutions.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
   081683ea57..a285d2ac2e  a285d2ac2e524c808091062c67142cf5924b56f6 -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 06:12:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 06:12:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821607.1235507 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1gDk-00035D-EB; Fri, 18 Oct 2024 06:12:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821607.1235507; Fri, 18 Oct 2024 06:12: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 1t1gDk-000356-BK; Fri, 18 Oct 2024 06:12:20 +0000
Received: by outflank-mailman (input) for mailman id 821607;
 Fri, 18 Oct 2024 06:12: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=0bzP=RO=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t1gDi-000350-TS
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 06:12:19 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on2060f.outbound.protection.outlook.com
 [2a01:111:f403:2612::60f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ecfe8aa2-8d17-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 08:12:17 +0200 (CEST)
Received: from DUZPR01CA0329.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4ba::28) by DU4PR08MB11080.eurprd08.prod.outlook.com
 (2603:10a6:10:570::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.24; Fri, 18 Oct
 2024 06:12:14 +0000
Received: from DB5PEPF00014B9B.eurprd02.prod.outlook.com
 (2603:10a6:10:4ba:cafe::7a) by DUZPR01CA0329.outlook.office365.com
 (2603:10a6:10:4ba::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.23 via Frontend
 Transport; Fri, 18 Oct 2024 06:12:14 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5PEPF00014B9B.mail.protection.outlook.com (10.167.8.168) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8069.17
 via Frontend Transport; Fri, 18 Oct 2024 06:12:13 +0000
Received: ("Tessian outbound 5e8afd4f8faf:v473");
 Fri, 18 Oct 2024 06:12:13 +0000
Received: from L481dd9cd5ed9.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 9D28E739-08F1-47AF-86D7-B1BE785576AD.1; 
 Fri, 18 Oct 2024 06:09:39 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L481dd9cd5ed9.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Fri, 18 Oct 2024 06:09:39 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by VI0PR08MB11223.eurprd08.prod.outlook.com (2603:10a6:800:24f::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.20; Fri, 18 Oct
 2024 06:09:15 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8069.020; Fri, 18 Oct 2024
 06:09: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: ecfe8aa2-8d17-11ef-a0be-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=W/2d7FGumldbcn1GzoSJ8fSmAT3yQ5VEY58q0RFcAARyMEH3mCuuaFvkEoRajigqHQL8JwhzCfBO+PiqHYg8fTtBA2Sf8+/oOZC1ObkbY+WVV5lUvM1DcLNmi0EpnN7BmaKNCcShH17ao0yApvddLn+YM19AUiwdxF0bcoL8rIVhVrrQBD14/sU3UJg5UI/j841+Q0uomL0cr/fPj3vTl8d5bPw+Pka7LXRAvn1FRQvMeqrm0MfcOasr+oPfx1T68oWZMj+rQYab6O6ai1/dNo56i1Nbi8hvtIp6R5xLxevdCv6uRCQyLTPth9gGDwdwLK9ErDx9wEeTmdx/yLrfJA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=HLSayk7f4LAKxJ9ZTSTcIONVIZtmtgJTBlkRudhWPeA=;
 b=QRBMLf28zWH0midCi7taaQGVUNd/U0UQsk/Cb2QRgE8c84D/ATZnk9UzbIoTEBTl+t0MY40x/YzWjF2bk6kQQDumozEMIhmsr+3fkzPYf34strki/Zyi9aK0QYeRSdhOL7+s7x+B3oStGwUifBZpDJE5ZucgnzehsDuYRicqYBSbBZF+NbkOWdI5WGr8Xacz73U4fwprkjaWxRHuKTkhliyV3WlOi77kfPwN296DtxJbxBMZoNlte7SgyA8yCQpfUNDqoS6/BNDF7zHGep/SQDM7UdHS/ET0b13grPv8XvmsKEOaLUMwzGI2FPgBERSIxhGdp6NgLyY61GbWWGyCKw==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HLSayk7f4LAKxJ9ZTSTcIONVIZtmtgJTBlkRudhWPeA=;
 b=DXxMafWd2MISlDGYDtJ/qKZwLIiMwa6oiooTOZBKYOYoZGamWKnoitqTxD5STTB2GtNzbVj6kNEhHKy22Tn6Ob5dde4+3nxj9H3Bo7+gJl6iYJ525CQmgyt1DAufN8GIriIubombc/ZXEHFkM6LcjjW/7PbEXLavJeEJg+43hfw=
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=arm.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: 4a9b310d84360d96
X-TessianGatewayMetadata: rdhre7KbGWekP4+mTOLdpAwytMnxEwHGmtZOR50jliD97jzwuwJG2nO/s6McHiMS5Woq/9QhxVycKiyTtZAv2AR6TrF8zsA93yqDdP+PO+pa4z6za6hcHIZpjkulIdCgLyNew4YKrd2lc5kg56k5LuaFSoUUsqevYquS8egNSUY=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=XPKqKi2KOrThczoXdkPz/COCl6KOgFl07PIkwYxnefKJ2+yM9nWKZNVoveXr3yza9E9LU4yScg1tqzlwBPP1TYeM5xZUfBnTQRyuk1Kjs5w94zW6y3BBJRm9BFYREck3J1fvKKdVGiCWGGtbCpXwU84NdqZ2VcwJcBxf1UqSsBLybn/O02YYK66y84Hrup+PS9v1UFDUy55UB0ySZhYVvoTkixSHbjKQ/Yqk+4LKnE1glFcMmU5u65VLUlkj+TQMW3FSeFLfkKto9S0SZXUxrWbVTfDp0ASuISXpkYEeE7VxS5/U7ZFCBWxwM2XxzjS3lo117Tj8vd5xUJxPwqjWJQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=HLSayk7f4LAKxJ9ZTSTcIONVIZtmtgJTBlkRudhWPeA=;
 b=XrihAy1AXP6We8+olCC9c9wuasLyG21YTSnTy2moc0Lut8h9R5PgQb/uz12k2mqVQiO0sEyNRMTLprvKfd6EgbZdkoCVmT0b50CMX6fKU8ELK3HOWQxkME4q1/itM1osVKKaTEjfKKeLq+BVNuIsMGvLjcM5urusLIjBvXuYhtwSWhfwBvW0Q/3zdCLpgZeO/GcgWSoTYEqdCv3vugXFzySKm8kTOwwKfp+fimugq7mFq1zO80uSRI46oQLHp7KCd5zTnntdyoHg/rrx5C+76zlpEpLi6JRGFRJ0VC+2NOEBDEQ250cPIFG+mpARJwCtxZ5AGPNiRp+m5z8AnWdv/w==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HLSayk7f4LAKxJ9ZTSTcIONVIZtmtgJTBlkRudhWPeA=;
 b=DXxMafWd2MISlDGYDtJ/qKZwLIiMwa6oiooTOZBKYOYoZGamWKnoitqTxD5STTB2GtNzbVj6kNEhHKy22Tn6Ob5dde4+3nxj9H3Bo7+gJl6iYJ525CQmgyt1DAufN8GIriIubombc/ZXEHFkM6LcjjW/7PbEXLavJeEJg+43hfw=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Jan Beulich <jbeulich@suse.com>, Frediano Ziglio
	<frediano.ziglio@cloud.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v2] MAINTAINERS: minor file line update
Thread-Topic: [PATCH v2] MAINTAINERS: minor file line update
Thread-Index: AQHbFk45v3QTT6ax202/2upCZc3+r7KMG9oA
Date: Fri, 18 Oct 2024 06:09:14 +0000
Message-ID: <0CE767AC-99B6-41E8-9707-46F2158F883B@arm.com>
References: <20241004111127.897937-1-frediano.ziglio@cloud.com>
 <2a020197-e061-4d8d-9d49-df7878153d85@suse.com> <87msj24qoe.fsf@epam.com>
In-Reply-To: <87msj24qoe.fsf@epam.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|VI0PR08MB11223:EE_|DB5PEPF00014B9B:EE_|DU4PR08MB11080:EE_
X-MS-Office365-Filtering-Correlation-Id: 7a2c3626-a14e-4f5f-c42f-08dcef3bcf3e
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|10070799003|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?sIi0spGaZyCr3nqU4gX0zDKOgXfx4U9dYd6eqs/ud8BIrRjiKmmLeokwO5CV?=
 =?us-ascii?Q?J1Pj28yW5VSldRpCy/mhZEQnxaAmqHu9zWJfKeCJw+nUIo2frKSEVC+P8LjG?=
 =?us-ascii?Q?mEYDc+buq5KwvkmuLeGSzummexOc3ul3CtVpd9zoiwvcjzDUUm2TLxo9KYF4?=
 =?us-ascii?Q?ev17GZI43n8Qw/l9EFWwquX0w0LgwLLuPUFdk86ualJ/XYj0lq36hFj7RNKe?=
 =?us-ascii?Q?IkvX0GpYih5mngsD3RgrR9dmoI3EHCFIupzwheCu+3tGKrBnSzED3OHK9A9f?=
 =?us-ascii?Q?kWqkHppvYSwHgN0+HlRsLr8rh01OwIO7oztN6Q3NegrUBtZ3ZCVluS9Ezays?=
 =?us-ascii?Q?5EBQfHTlhxmVXLQBvy5h4LzS4oRO2xZcu5YPA8PyrFI8YhatnQR1R+JyLPUD?=
 =?us-ascii?Q?DBVcebbuwauqpEfAbTqPjmYgFk3tMYmmaF2BSqhbL3cQg5sMxxT7XZJUj8Qj?=
 =?us-ascii?Q?0II82lcf8BizQmZBcNHgLJt2ODwDyPQRB4FWE6Ksrelz7yNLxeUGJ3X1cU9G?=
 =?us-ascii?Q?yBaR7IYznuG4+JrcX46XQY7RH1HzWrlwqio6kysesdErzS0fT4GwNT5mV3u9?=
 =?us-ascii?Q?b1mS/Me03ekozOCi9FoP/UuooUEtFSQk7ZwClEonwwm4cDFx0pCGg6CFDdG+?=
 =?us-ascii?Q?sWQk2AqpQJBULP+8ptp3uYlYu/SEB3plreOdVQB1DZMMxIwNRNGjFLNGecXn?=
 =?us-ascii?Q?vx44OuQBLS+nP9yF/dYM/sSVtCAjJsWb2DaJnDUnq0yUf4mr1z6muYEZQPAI?=
 =?us-ascii?Q?mBHIodGKd7Gu69Y0TepT3FGkJ2O4Hk4lV0NzLjsdkE0LRvbsOYF35j3+O8Y5?=
 =?us-ascii?Q?X+0bdNaEUK5Ze7hI534zdjdEmD3QfWFzXTizscBzLrjMWeYKNRmbgXZVH4Wd?=
 =?us-ascii?Q?LYdYqJWvhzhqb6rAnX95yUfWTrZm+isPXjw/YrEedv91KXNXuAkVdyK2gi3d?=
 =?us-ascii?Q?19kNc+7SCOY/NVSdToFEqSobKSIDoNadQ+cANjicvTTgnMyy+I2JkFrnGGmB?=
 =?us-ascii?Q?fEQlre6k0X/pjfzvv99VBX5K7T0GZ/ydGeys6/+qZOrtP/HHiTZz/PwPXv3e?=
 =?us-ascii?Q?g0Lx8D+re+XP+sZZ/flvO4AM9KEoVbPvlbL8SKcyto01g6mwovbaccuOSzpf?=
 =?us-ascii?Q?Lg+f7PWaHQ3B/uC8GNm41/ywaPzE1LeeQq4XNbKeyEQs9wTytWpeRsnIvnaD?=
 =?us-ascii?Q?0SIjWvza/BH3ewjesNTazWl70s18VHrfIHDFMlQ5sdDVSAfKSubq1gEg6cRW?=
 =?us-ascii?Q?NZHbzAiWYUJDPV8K0eSM+ZMV6v/2j1Nd7biHWS+yfpNcOEfe1n/WiV5HQU/3?=
 =?us-ascii?Q?zj7olLpHnFfvgm5ZgTW1UTHPTjXPUO2Lgz1mfw1RKomUPA5fCZTq6yeQsykZ?=
 =?us-ascii?Q?hMjGNrM=3D?=
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:(13230040)(1800799024)(376014)(366016)(10070799003)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <0081685A8666C843839371058B5C774D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB11223
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B9B.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	fd916e07-9f6d-4b12-546a-08dcef3b649a
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?5lMcBCy2LuzypLB2kmvBou/bHu+mnTS16IcbRrVeE54iCOgUbTLZKmpPFVi2?=
 =?us-ascii?Q?aLRIqrW2IC4mb1H92FqA5li6qTUPBFcg5MSvOKuFw4F0NKQ6INTHFtBm27mU?=
 =?us-ascii?Q?sa3TZ8y3m+yWNGvb62f8QEyAvEh1kD0L0SJfGv5Oybr7LJNtNyemdpenrQX6?=
 =?us-ascii?Q?HTCqZ/NhTpWTtyEPFjvswm2D5LRwwfQJQ4ZlQao0UYMD7OQY4AKjDyuLE63r?=
 =?us-ascii?Q?sw2bwhZzO1Rruqv03I9+fzAPpaiWlMbxbYAMi7ZpsEOIR9Ctgqv+m69Y/4Q8?=
 =?us-ascii?Q?h7ja65LsFPxaAMm4G6eSIGluQp6bNLItFS8bZit5UruMD2FoSp/6f0MBn4Eh?=
 =?us-ascii?Q?N4yqlB+ZsrK0nyrx6X/ugnv9lgcw5rpIumrpDJJiV3Owoi89H1gXXeBi/dlf?=
 =?us-ascii?Q?me7yahrSvUb3f64KWdAnctFUcrH4DdVSFqqI6Qh1atli4rEhzK+ZpBjceoMN?=
 =?us-ascii?Q?EDIEFarkFYv4rCVbNi4eisfzgXggL0wNSQKWiKiON/sEQG5G3NfKky7H29LQ?=
 =?us-ascii?Q?6d+cgHpEp/EsT7G6CCc5o20M8bhct91zkQdJw557yYu/25kZq7sfDr0VP5aI?=
 =?us-ascii?Q?v2cqry4upvOwD6kZg10pTuGkLuwEYnNFDgP8vauFQTo7sCiGBSDYrtS1wYJx?=
 =?us-ascii?Q?K557EI9plhFqz5/fycc+ZUbl+trhe9rlUiYJh7WNlfwzfrjHPfFuoUwI6L4G?=
 =?us-ascii?Q?K8bSEgJ29Fafa637fr14WufdhPmpQ4k9k8JZKApumwUwqkU9iRWDnMrng+UO?=
 =?us-ascii?Q?fZH0H7gYJ78GzJSvsYOEN3fy8k7T+JroK9ub8g4a6SXc1wsKt0EUhib5OATi?=
 =?us-ascii?Q?yJ95ktzj62Z/utQqrLqJvz7+9Y1t4tGY3lpAUFyZuovtPBU6f32GEKlgce0D?=
 =?us-ascii?Q?w2IC3BHv3mUODPQ+DJ4b9AuewIA2Tj0hCpbUG3s7uvQvtHaUvq8OekrVaes6?=
 =?us-ascii?Q?kFiVKHm/qowMawM7INdY/GhT3sH3Q9zEvM2+bQ8TiKlmDe5ZIavWVffLHzou?=
 =?us-ascii?Q?9fKQmH1HoXP2WD/Q2QJzebaP8+yewLK3Txoc8bdbhBHMBX7yirbl4PHFdN3C?=
 =?us-ascii?Q?eo1Ezwkz1lqy3OdPkpVkOqP3KGMNIu7k9RyH5QD2fd+3gGNmt7F8xPY63tWX?=
 =?us-ascii?Q?ExXEoXE0NaZE6IF1+VeqiPt+NxDaiFm4dXL9lczkHXxNM0WGwzBmvqqjGv5f?=
 =?us-ascii?Q?APuUM0vxEJ5D0UWei/KZpKgEl2yUEN+neTEVf5lmPaFstoIOqW9UTe7FvKGX?=
 =?us-ascii?Q?9zFxuKr4Sl20qs/vJTKStnOtQDHNVbsTvDusB+Hr0m0zfJ+lcsdxDrEui9sP?=
 =?us-ascii?Q?MJ1q6IWDPZZw/dGMwoA1tE0ieKNThHdAKJJoJF4xV+0oPW2xjR9q6kdMQAn7?=
 =?us-ascii?Q?OhiG3FM5wrwlJJdFtfjgSftIvmOqBLrLYaSeIsZ2nQsiDRlQdA=3D=3D?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 06:12:13.8873
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a2c3626-a14e-4f5f-c42f-08dcef3bcf3e
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:
	DB5PEPF00014B9B.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU4PR08MB11080

Hi,

> On 17 Oct 2024, at 18:53, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com> =
wrote:
>=20
> Jan Beulich <jbeulich@suse.com> writes:
>=20
> Hi
>=20
>> On 04.10.2024 13:11, Frediano Ziglio wrote:
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -517,7 +517,7 @@ F: stubdom/
>>> TEE MEDIATORS
>>> M: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>>> S: Supported
>>> -F: xen/arch/arm/include/asm/tee
>>> +F: xen/arch/arm/include/asm/tee/
>>> F: xen/arch/arm/tee/
>>=20
>=20
> Acked-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>

Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand

>=20
>> I think this is a change which actually wants ack-ing by the maintainer
>> named here, not THE REST. Cc-ing Volodymyr.
>>=20
>> Jan
>=20
>=20
> --=20
> WBR, Volodymyr



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 06:39:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 06:39:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821616.1235523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1gdy-0001gI-H4; Fri, 18 Oct 2024 06:39:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821616.1235523; Fri, 18 Oct 2024 06:39: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 1t1gdy-0001gB-Dv; Fri, 18 Oct 2024 06:39:26 +0000
Received: by outflank-mailman (input) for mailman id 821616;
 Fri, 18 Oct 2024 06:39: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=dzfJ=RO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1gdx-0001g5-09
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 06:39:25 +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 b5df6089-8d1b-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 08:39:22 +0200 (CEST)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-37d63a79bb6so1252950f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 17 Oct 2024 23:39:22 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37ecf146e2asm1028155f8f.116.2024.10.17.23.39.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 17 Oct 2024 23:39:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b5df6089-8d1b-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729233562; x=1729838362; 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=lN0rfgA0CPLJ8E+1VU7tZMJVgzD0vTwjwmAcbfaDlIw=;
        b=AT0PcwClUx6g0+/Qm0jU1iGf17LPx+z+2YGLPf3ttY1DbVLFElkKJV/bC80HhPfWjo
         t7yi4dCASHeflfMUQYO83d++cRc8Sbl+woXFrYRfvFzInhYv2QblFF0O9ydho1m/hnPI
         5rx2PicFhUwDYIw9ONT1NCYy816ZWOlmdwNm+g/7QcL+VelWlCUOr1/gP+MrSDLXx3KJ
         Jnd/BqNfokH64Oc2mmvOWyTJ+Mhh9xgLJ7oj1rlkeoctaydnLq2oLegrA61qTzs1/hmK
         XhaaybUanryEpC9TGSkjKufmQtNT/FVIakOJ99YTx4WR7mg9wmxVbqNCe7/btG/+F4Lo
         8YSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729233562; x=1729838362;
        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=lN0rfgA0CPLJ8E+1VU7tZMJVgzD0vTwjwmAcbfaDlIw=;
        b=bOgaT3AN4cotISz2OCffzw6KYuBSJj75KocjR9P9m+2BKlBkGm2bA14m88qMNbaSzW
         hBsKnZ1U4DI/HwDS8GnQ6TxQzsSBGjFpw3xqYSJ3HvVt0UqfqEQNG5vlJ8ozAw61aPbI
         e1TrRvVl6GRpHv0ExZenwtv9g99XCXjLgp7H/LtnzhiglccJShN0RLICw4M2NOsdZbQ3
         S+w5C8dpgiK32Ot2n2QERcbwmJvwQJibqPZTgPdjHlX7LvqnE0o5KkV2VzHgmUZIfL5d
         LhVx0+Z9FNwJ8cfv3ZeHuEQeouZghrop6HMfYsmuExFuYV9nUTo6mylWZYrzcvnxk65+
         Xbzw==
X-Forwarded-Encrypted: i=1; AJvYcCVOWX84s8uYpBUaUjAt1Iihcjp1WnbJubK9MALNfPavZU9bhcMlJSOtyh7xogKJLTQFVkidY/NRZvg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwrlFVkBHTF4GSbaKsDxQUQT2Z9t6hlM5pFElUHRreCNl33Ixag
	dfUt7RijPH8W9elJp7ODQCs3kNoGSBFgmp7zNkTV5dWa1kolvBtvXcO8d/N1gQ==
X-Google-Smtp-Source: AGHT+IEmp1gVG+sta7fbs+XJLDiZj68Qt50yheN3nq7QjV04ANEnwRHRykj7YfpksvE5FYzow3NP1g==
X-Received: by 2002:a5d:67cc:0:b0:37d:4cd6:6f2b with SMTP id ffacd0b85a97d-37eab6ec97cmr1025143f8f.14.1729233562079;
        Thu, 17 Oct 2024 23:39:22 -0700 (PDT)
Message-ID: <cd25c03d-456d-49a8-a832-e8ec02b69108@suse.com>
Date: Fri, 18 Oct 2024 08:39:20 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 13/44] x86/boot: transition relocation calculations to
 struct boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org, Jason Andryuk <jason.andryuk@amd.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-14-dpsmith@apertussolutions.com>
 <a94f876a-5f9a-4f21-be28-f4192c991337@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: <a94f876a-5f9a-4f21-be28-f4192c991337@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.10.2024 02:42, Jason Andryuk wrote:
> On 2024-10-17 13:02, Daniel P. Smith wrote:
>> @@ -1686,12 +1682,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>   
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        set_pdx_range(bi->mods[i].mod->mod_start,
>> -                      bi->mods[i].mod->mod_start +
>> -                      PFN_UP(bi->mods[i].mod->mod_end));
>> -        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
>> -            _mfn(bi->mods[i].mod->mod_start),
>> -            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
>> +        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
>> +                      paddr_to_pfn(bi->mods[i].start) +
>> +                      PFN_UP(bi->mods[i].size));
>> +        map_pages_to_xen((unsigned long)maddr_to_virt(bi->mods[i].start),
>> +            maddr_to_mfn(bi->mods[i].start),
>> +            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);
> 
> I would vertically align all the parameters inside the (.

At the very least the two successive calls want formatting the same way.
Plus imo the presented formatting of map_pages_to_xen() isn't "legal"
anyway, it ought to be

        map_pages_to_xen(
            (unsigned long)maddr_to_virt(bi->mods[i].start),
            maddr_to_mfn(bi->mods[i].start),
            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);

(if not doing it the way Jason asked for).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 07:42:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 07:42:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821636.1235552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1hck-0001QO-92; Fri, 18 Oct 2024 07:42:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821636.1235552; Fri, 18 Oct 2024 07: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 1t1hck-0001QH-4y; Fri, 18 Oct 2024 07:42:14 +0000
Received: by outflank-mailman (input) for mailman id 821636;
 Fri, 18 Oct 2024 07:42:12 +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 1t1hci-0001Q7-Tx; Fri, 18 Oct 2024 07:42:12 +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 1t1hci-0006g4-PR; Fri, 18 Oct 2024 07:42:12 +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 1t1hci-0003hN-Cw; Fri, 18 Oct 2024 07:42:12 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1hci-0007zB-CV; Fri, 18 Oct 2024 07:42: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=JvduRARSxh74Ljf1+u5/Fq+h1+F+odlFfa5nErtRfbQ=; b=dSN6/VjI55g2C3yZtye2yivltj
	QbOWf8KPTEQxG5VzsWiqBu7/OCqZbxPtlEY/jR1UKwjnlhv34l3SPgVh6p9YvtzNfQATdIssUvsbf
	dRi81YeNXFD8GTu61P/Q79mlP7bMRdB5IXB/QKR3t8cJMd6HjJDLJ7KHN1W47LEi/Ga0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188186-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188186: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:debian-hvm-install:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=95a16ee753d6da651fce8df876333bf7fcf134d9
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 07:42:12 +0000

flight 188186 qemu-mainline real [real]
flight 188230 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188186/
http://logs.test-lab.xenproject.org/osstest/logs/188230/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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 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-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-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-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-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-amd64-amd64-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-amd64-amd64-libvirt-qcow2 14 migrate-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                95a16ee753d6da651fce8df876333bf7fcf134d9
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   31 days
Failing since        187731  2024-09-17 13:11:20 Z   30 days   52 attempts
Testing same since   188186  2024-10-17 16:47:22 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandra Diupina <adiupina@astralinux.ru>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Chao Liu <chao.liu@yeah.net>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Helge Deller <deller@gmx.de>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Jiaxun Yang <jiaxun.yang@flygoat.com>
  Julia Suvorova <jusual@redhat.com>
  Junjie Mao <junjie.mao@intel.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Roman Cardenas Rodriguez <rcardenas.rod@gmail.com>
  Roman Penyaev <r.peniaev@gmail.com>
  Román Cárdenas Rodríguez <rcardenas.rod@gmail.com>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Song Gao <gaosong@loongson.cn>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  Strahinja Jankovic <strahinja.p.jankovic@gmail.com>
  Strahinja Jankovic <strahinjapjankovic@gmail.com>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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        fail    
 test-amd64-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 12024 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 07:55:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 07:55:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821650.1235560 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1hpd-0007Hw-CQ; Fri, 18 Oct 2024 07:55:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821650.1235560; Fri, 18 Oct 2024 07:55: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 1t1hpd-0007Hp-9f; Fri, 18 Oct 2024 07:55:33 +0000
Received: by outflank-mailman (input) for mailman id 821650;
 Fri, 18 Oct 2024 07:55: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=E+xU=RO=cloud.com=christian.lindig@srs-se1.protection.inumbo.net>)
 id 1t1hpc-0007Hj-DC
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 07:55:32 +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 58e3a3bd-8d26-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 09:55:31 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a0472306cso229893966b.3
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 00:55:31 -0700 (PDT)
Received: from smtpclient.apple ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68bf7194sm58799166b.184.2024.10.18.00.55.30
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 18 Oct 2024 00:55:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58e3a3bd-8d26-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729238131; x=1729842931; 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=9OmCAW04F+XNRYTouUorOSGcUl6M9+czQrDiQWyjOlY=;
        b=Cp8gq6MnnPITx+cAQf6DZYKKkLwTnrx5gY6gbYrdy/KvQkFP2IPBorepJHi8Pjz7k2
         abAsr3L71S2cy4u4ND3kfq/ydvR+N+3fFZGyKpUPysC2Odx1ZpuryeEB5YEJOqk6QsOg
         7b6Qv7d+X7JcjsinZ0r6bNoEi1N1xY8IONX7U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729238131; x=1729842931;
        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=9OmCAW04F+XNRYTouUorOSGcUl6M9+czQrDiQWyjOlY=;
        b=Ms+V9EUZ/GkT+bh5v87SoPSfZ/55MlBzYZht9auMbf8dCc0jQbGA8t8Da+f8F7S/Pw
         Nq3LAzWspgOQxQFjN/+5DetXQobbyE8IqHWUzZXYc8VPknG3UmC4+W30SVd6uMzXl31c
         7etIHlovUfoHKhcib5kXliEKLmJtmeZAPdEXvyrPK9kfJFh4Bh2lpe6XVMceRQg/raqn
         xzVF8XB4QpnnBaqQdcRvUrwSsoypBYJBGfp+VL4I/qNTSVf4LBtRO6uNl2wNgna2dXh3
         XevGXgkxxhGCNXR0gkVqnfoZ+77XYIV7j6dj3gaNCuy15PpiKD2kG6HdmHdnT7m+tNKg
         mKcQ==
X-Gm-Message-State: AOJu0YwIql1hLbhIU+YEegKsil52BXXkX53eVRPddrpD5rMJC+F58/Tg
	5ZGpWfKo2MgVDrKJSB97CAOTJ6Y4XqcXeWw+2YzMrJN9W5XOmvS5YcBfbUg3ATE=
X-Google-Smtp-Source: AGHT+IFHgbpwzSldzxWVTO5CihohsLlb/4f8FglcyqkoSI86XItCVdyH/g8lj9p4N/o4AIU69UNU2A==
X-Received: by 2002:a17:907:1c1e:b0:a9a:294:cb30 with SMTP id a640c23a62f3a-a9a69a75013mr104115966b.16.1729238130680;
        Fri, 18 Oct 2024 00:55:30 -0700 (PDT)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\))
Subject: Re: [XEN PATCH v1 2/3] ocaml/libs: Fill build failure due to unused
 variable in ocaml macro
From: Christian Lindig <christian.lindig@cloud.com>
In-Reply-To: <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>
Date: Fri, 18 Oct 2024 08:55:18 +0100
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Andrii Sultanov <andrii.sultanov@cloud.com>
Content-Transfer-Encoding: quoted-printable
Message-Id: <638CD86D-09F4-4706-95CF-71B2E2971E25@cloud.com>
References: <cover.1729170005.git.javi.merino@cloud.com>
 <d6b98ca75017bf4aa72a69468321705263e66f30.1729170005.git.javi.merino@cloud.com>
 <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Javi Merino <javi.merino@cloud.com>
X-Mailer: Apple Mail (2.3774.600.62)



> On 17 Oct 2024, at 18:47, Andrew Cooper <andrew.cooper3@citrix.com> =
wrote:
>=20
>=20
> So, I think this is a better fix:
>=20
> @@ -69,6 +69,7 @@ static void Noreturn xsd_glue_failwith(
>         free(str);
> =20
>         caml_raise_with_arg(*caml_named_value("xsg.error_v1"), msg);
> +       CAMLnoreturn;
>  }
>  #define xsd_glue_failwith(xch) xsd_glue_failwith(xch, __func__, =
__LINE__)
> =20
> and F40 seem happy with the result.

Acked-by: Christian Lindig <christian.lindig@cloud.com>


I like the effort to remove warnings.

=E2=80=94 C=


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 08:08:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 08:08:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821658.1235570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1i25-00011r-Ga; Fri, 18 Oct 2024 08:08:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821658.1235570; Fri, 18 Oct 2024 08: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 1t1i25-00011k-E4; Fri, 18 Oct 2024 08:08:25 +0000
Received: by outflank-mailman (input) for mailman id 821658;
 Fri, 18 Oct 2024 08: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=7i1V=RO=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t1i24-00011d-GI
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 08:08:24 +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 244a80c8-8d28-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 10:08:22 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c9625cfe4dso2210806a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 01:08:22 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68bf7669sm61338066b.171.2024.10.18.01.08.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 01:08:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 244a80c8-8d28-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729238901; x=1729843701; 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=SWO0FmBLFHJZH9jt972i/jtzdUO5iTIlLeJ7XupzTFg=;
        b=sYwylxeXq1S/z1Xlx0uXQKN+LTUcdtm+jR7eeITAmGEC8Fe6oimTKXJ0IHLOsdJRU6
         5rxEuKmNTmJLgt2sXOMRCjnRoVnITOj9bpbu0BcRDGb+0s4X0i1HyYwDQUORqqBb6Jta
         WiBE58DJUv7WChzvCZpZeM38EnWM6s9eztNvE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729238901; x=1729843701;
        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=SWO0FmBLFHJZH9jt972i/jtzdUO5iTIlLeJ7XupzTFg=;
        b=UE5+6OZ3BMy0osQ3Z6ud37SYB4GZQNt4kj3eOO/n7Xl3emrIXrzGt9Z1URf+FfxXhZ
         mpnkEOL7Av7vjBDW8tpW57F9axvBfDM7ygcIT6wS11JvZY8F34Bv2cx+CaV0xo76eR4N
         fobpv82C49p0iBv1s3L1w0nt9K9hHvjgW4CegJb6SDWbkmmW+TEZjWPr82gjUBZabz4w
         BjH8b42AKiNe3Cb75tHcvXfeCzG5NqtA72Dr35WIz94jNohSUg2oUpQKzNiOip6FWv+l
         UqrZiCd5mgcm64bpqF49qPJL/8rSrc4LNeBHdSYD4F2Jq4e+9AuOwKGbx5pdYrUZk2+m
         Xt4A==
X-Gm-Message-State: AOJu0Yy0Vg0GwDzTDbw5z6lyS367NPP2Wains01cugIymdDs9V7yutTs
	Z97IinLfkN6S/q9utzraiKI1IVpSILJWnc6XASkIeNpjqLdCoceO5Exj6oMNYiW0M4tFTUyUIRm
	B
X-Google-Smtp-Source: AGHT+IF+jgDYwQM9HweZrGlbsiGa6znuoD6fPzkUgdsAhPubJQJ3h9X8ir+y0rKvW08wm/Qc3I6TIQ==
X-Received: by 2002:a17:907:7f87:b0:a9a:41c6:1d34 with SMTP id a640c23a62f3a-a9a69a66b40mr125532466b.21.1729238900579;
        Fri, 18 Oct 2024 01:08:20 -0700 (PDT)
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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt remapping
Date: Fri, 18 Oct 2024 10:08:13 +0200
Message-ID: <20241018080813.45759-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
repurposed to contain part of the offset into the remapping table.  Previous to
2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
table would match the vector.  Such logic was mandatory for end of interrupt to
work, since the vector field (even when not containing a vector) is used by the
IO-APIC to find for which pin the EOI must be performed.

Introduce a table to store the EOI handlers when using interrupt remapping, so
that the IO-APIC driver can translate pins into EOI handlers without having to
read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
unconditionally when interrupt remapping is enabled, even if strictly it would
only be required for AMD-Vi.

Reported-by: Willi Junga <xenproject@ymy.be>
Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index e40d2f7dbd75..8856eb29d275 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
 
 static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
 
+/*
+ * Store the EOI handle when using interrupt remapping.
+ *
+ * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
+ * format repurposes the vector field to store the offset into the Interrupt
+ * Remap table.  This causes directed EOI to longer work, as the CPU vector no
+ * longer matches the contents of the RTE vector field.  Add a translation
+ * table so that directed EOI uses the value in the RTE vector field when
+ * interrupt remapping is enabled.
+ *
+ * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
+ * when using the remapped format, but use the translation table uniformly in
+ * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
+ */
+static unsigned int **apic_pin_eoi;
+
 static void share_vector_maps(unsigned int src, unsigned int dst)
 {
     unsigned int pin;
@@ -273,6 +289,13 @@ void __ioapic_write_entry(
     {
         __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
         __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
+        /*
+         * Might be called before apic_pin_eoi is allocated.  Entry will be
+         * updated once the array is allocated and there's an EOI or write
+         * against the pin.
+         */
+        if ( apic_pin_eoi )
+            apic_pin_eoi[apic][pin] = e.vector;
     }
     else
         iommu_update_ire_from_apic(apic, pin, e.raw);
@@ -298,9 +321,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
     /* Prefer the use of the EOI register if available */
     if ( ioapic_has_eoi_reg(apic) )
     {
+        if ( apic_pin_eoi )
+            vector = apic_pin_eoi[apic][pin];
+
         /* If vector is unknown, read it from the IO-APIC */
         if ( vector == IRQ_VECTOR_UNASSIGNED )
+        {
             vector = __ioapic_read_entry(apic, pin, true).vector;
+            if ( apic_pin_eoi )
+                /* Update cached value so further EOI don't need to fetch it. */
+                apic_pin_eoi[apic][pin] = vector;
+        }
 
         *(IO_APIC_BASE(apic)+16) = vector;
     }
@@ -1022,7 +1053,23 @@ static void __init setup_IO_APIC_irqs(void)
 
     apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
 
+    if ( iommu_intremap )
+    {
+        apic_pin_eoi = xzalloc_array(typeof(*apic_pin_eoi), nr_ioapics);
+        BUG_ON(!apic_pin_eoi);
+    }
+
     for (apic = 0; apic < nr_ioapics; apic++) {
+        if ( iommu_intremap )
+        {
+            apic_pin_eoi[apic] = xmalloc_array(typeof(**apic_pin_eoi),
+                                               nr_ioapic_entries[apic]);
+            BUG_ON(!apic_pin_eoi[apic]);
+
+            for ( pin = 0; pin < nr_ioapic_entries[apic]; pin++ )
+                apic_pin_eoi[apic][pin] = IRQ_VECTOR_UNASSIGNED;
+        }
+
         for (pin = 0; pin < nr_ioapic_entries[apic]; pin++) {
             /*
              * add it to the IO-APIC irq-routing table:
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 08:43:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 08:43:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821674.1235591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1iZe-0001bi-Bk; Fri, 18 Oct 2024 08:43:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821674.1235591; Fri, 18 Oct 2024 08:43: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 1t1iZe-0001bb-7h; Fri, 18 Oct 2024 08:43:06 +0000
Received: by outflank-mailman (input) for mailman id 821674;
 Fri, 18 Oct 2024 08:43: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1iZc-0001bO-Pb
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 08:43:04 +0000
Received: from mail-oo1-xc34.google.com (mail-oo1-xc34.google.com
 [2607:f8b0:4864:20::c34])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id faed2d1c-8d2c-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 10:43:00 +0200 (CEST)
Received: by mail-oo1-xc34.google.com with SMTP id
 006d021491bc7-5eb7f8e26f4so583529eaf.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 01:43:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: faed2d1c-8d2c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729240979; x=1729845779; 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=xVua38eTNwsaYkmdKKirirqsAZkuuYqPZOoYR9T/JuM=;
        b=JCOc3jdFKSvR/leAODcGkyuLyFoZF7j9qX62Gszj/Bqd4QnbSnFnk+WC6IfpcY5d1D
         ti4okDP3sRX1fs9d7Pb8A8YIfhRJJhpkvPVT8Tgac3KQau9mth0zlPhbItoPQ4hlCtXU
         qUbbFV8iOBYihpc1dUxf9YZj/kJhL731/zC2I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729240979; x=1729845779;
        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=xVua38eTNwsaYkmdKKirirqsAZkuuYqPZOoYR9T/JuM=;
        b=Xudhq+nEald2+PS8qcYa0uGGHqxDQPqqUvS2Prv8aX0G/UEjm9lNEz1AemeWsM1x2+
         Hq25Yy+qZnhvYzELBaeOiQqSFZS1eT4ELa1sq7+kq+AIgkzpPXiLHFow/ADTAK7FkrZ2
         BGBE9rciGT8vouuckb4qgVbPgGLSzKe44tg6sCprjx2KdI33w5wDxQHmqZt5NJjtfcZo
         iwDGL2q+niYcAsSfrP64Yg4hINCdF6+5yX+oaSs5op0qDhc3T+IycwiDEp6Z9ys72+w4
         KyEKbNSBiAIkcDiP/Ee5GMVLK3hJrFrtguNYXSyFI/BU2RGEUpbIH8pEnIGF6m/yeecX
         Durw==
X-Gm-Message-State: AOJu0YwbK2xnJYFqZmUlSq0TO8Z98DPQc/aawgmhgXgBLeuoePeE/7GD
	3jZA4p6sJciqkpiEJM9G40X2frE8aT4IEaFUH9qWGFZafsCVBe20pLDlYIAwZwoTQpHvuLmSWMb
	RvKn9CWQDqthsvHPrOtj/ZQNz8vpfxgxE+rXTvw==
X-Google-Smtp-Source: AGHT+IGxKGHL0rgOsSkBBNov75N9/8afZYcuBghKn0m2YiulyXmOG2drJU+1kAwXh9c3xQIPRL4yVUjBhJFJHrqs4VM=
X-Received: by 2002:a05:6820:f08:b0:5e1:e65d:5148 with SMTP id
 006d021491bc7-5eb8b6e59b0mr1031888eaf.6.1729240979319; Fri, 18 Oct 2024
 01:42:59 -0700 (PDT)
MIME-Version: 1.0
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com> <a5745a93-1d82-45f1-bb88-81a737ebcce3@citrix.com>
In-Reply-To: <a5745a93-1d82-45f1-bb88-81a737ebcce3@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 09:42:48 +0100
Message-ID: <CACHz=ZhULqJpE8UK7kZQN0He5Poc85Cr6heTCKj1KLjxcPA6XQ@mail.gmail.com>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 17, 2024 at 6:13=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> On 17/10/2024 2:31 pm, Frediano Ziglio wrote:
> > The current method to include 32 bit C boot code is:
> > - compile each function we want to use into a separate object file;
> > - each function is compiled with -fpic option;
> > - convert these object files to binary files. This operation removes GO=
P
> >   which we don't want in the executable;
> > - a small assembly part in each file add the entry point;
> > - code can't have external references, all possible variables are passe=
d
> >   by value or pointer;
> > - include these binary files in head.S.
> >
> > There are currently some limitations:
> > - code is compiled separately, it's not possible to share a function
> >   (like memcpy) between different functions to use;
> > - although code is compiled with -fpic there's no certainty there are
> >   no relocations, specifically data ones. This can lead into hard to
> >   find bugs;
> > - it's hard to add a simple function;
> > - having to pass external variables makes hard to do multiple things
> >   otherwise functions would require a lot of parameters so code would
> >   have to be split into multiple functions which is not easy.
> >
> > Current change extends the current process:
> > - all object files are linked together before getting converted making
> >   possible to share code between the function we want to call;
> > - a single object file is generated with all functions to use and
> >   exported symbols to easily call;
> > - variables to use are declared in linker script and easily used inside
> >   C code. Declaring them manually could be annoying but makes also
> >   easier to check them. Using external pointers can be still an issue i=
f
> >   they are not fixed. If an external symbol is not declared this gives =
a
> >   link error.
> >
> > Some details of the implementation:
> > - C code is compiled with -fpic flags (as before);
> > - object files from C code are linked together;
> > - the single bundled object file is linked with 2 slightly different
> >   script files to generate 2 bundled object files;
> > - the 2 bundled object files are converted to binary removing the need
> >   for global offset tables;
> > - a Python script is used to generate assembly source from the 2
> >   binaries;
> > - the single assembly file is compiled to generate final bundled object
> >   file;
> > - to detect possible unwanted relocation in data/code code is generated
> >   with different addresses. This is enforced starting .text section at
> >   different positions and adding a fixed "gap" at the beginning.
> >   This makes sure code and data is position independent;
> > - to detect used symbols in data/code symbols are placed in .text
> >   section at different offsets (based on the line in the linker script)=
.
> >   This is needed as potentially a reference to a symbol is converted to
> >   a reference to the containing section so multiple symbols could be
> >   converted to reference to same symbol (section name) and we need to
> >   distinguish them;
> > - --orphan-handling=3Derror option to linker is used to make sure we
> >   account for all possible sections from C code;
> >
> > Current limitations:
> > - the main one is the lack of support for 64 bit code. It would make
> >   sure that even the code used for 64 bit (at the moment EFI code) is
> >   code and data position independent. We cannot assume that code that
> >   came from code compiled for 32 bit and compiled for 64 bit is code an=
d
> >   data position independent, different compiler options lead to
> >   different code/data.
> >
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>
> This commit message is not particularly easy to follow.  Can I recommend
> the following:
>
> ---%<---
> x86/boot: Rework how 32bit C is linked/included for early boot
>
> Right now, the two functions which were really too complicated to write
> in asm are compiled as 32bit PIC, linked to a blob and included
> directly, using global asm() to arrange for them to have function semanti=
cs.
>
> This is limiting and fragile; the use of data relocations will compile
> fine but malfunction when used, creating hard-to-debug bugs.
>
> Furthermore, we would like to increase the amount of C, to
> deduplicate/unify Xen's boot logic, as well as making it easier to
> follow.  Therefore, rework how the 32bit objects are included.
>
> Link all 32bit objects together first.  This allows for sharing of logic
> between translation units.  Use differential linking and explicit
> imports/exports to confirm that we only have the expected relocations,
> and write the object back out as an assembly file so it can be linked
> again as if it were 64bit, to integrate with the rest of Xen.
>
> This allows for the use of external references (e.g. access to global
> variables) with reasonable assurance of doing so safely.
>
> No functional change.
> ---%<---
>
> which I think is an accurate and more concise summary of what's changing?
>

You cut half of the explanation, replacing with nothing.
Why is a script needed? Why 2 linking? How the new method detects
unwanted relocations?
Why wasn't possible to share functions?
Why using --orphan-handling option?

The description has been there for about 2 months without many objections.

> > diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignor=
e
> > index a379db7988..7e85549751 100644
> > --- a/xen/arch/x86/boot/.gitignore
> > +++ b/xen/arch/x86/boot/.gitignore
> > @@ -1,3 +1,4 @@
> >  /mkelf32
> > -/*.bin
> > -/*.lnk
> > +/build32.*.lds
> > +/built-in-32.*.bin
> > +/built-in-32.*.map
>
> /built-in-32.S too
>

Sure

> And from a glance at the file, this adjustment in the combine script too:
>
> -print('\n\t.section\t.note.GNU-stack,"",@progbits', file=3Dout)
> +print('\n\t.section .note.GNU-stack, "", @progbits', file=3Dout)
>
> to have both .section's formatted in the same way.
>

Fine

>
> > diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.=
lds.S
> > similarity index 70%
> > rename from xen/arch/x86/boot/build32.lds
> > rename to xen/arch/x86/boot/build32.lds.S
> > index 56edaa727b..e3f5e55261 100644
> > --- a/xen/arch/x86/boot/build32.lds
> > +++ b/xen/arch/x86/boot/build32.lds.S
> > <snip>
> >          *(.text)
> >          *(.text.*)
> > -        *(.data)
> > -        *(.data.*)
> >          *(.rodata)
> >          *(.rodata.*)
> > +        *(.data)
> > +        *(.data.*)
>
> Reordering .data and .rodata really isn't necessary.
>

Yes, I asked in some comment. No problem, can be removed.

I'll write another commit. Not anyway strong, this is the general
order of sections. Here won't make much difference, usually you want
this order to minimize page changes (both text and rodata are
read-only).


> I'd just drop this part of the diff.  I have some different follow-up
> for it anyway, which I've been holding off until after this first change
> is sorted.
>
> Everything here I'm happy to fix up on commit, if you're ok with me
> doing so.
>
> ~Andrew

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 08:50:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 08:50:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821686.1235603 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ih9-0007T2-4D; Fri, 18 Oct 2024 08:50:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821686.1235603; Fri, 18 Oct 2024 08: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 1t1ih9-0007Sv-10; Fri, 18 Oct 2024 08:50:51 +0000
Received: by outflank-mailman (input) for mailman id 821686;
 Fri, 18 Oct 2024 08: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=hWMG=RO=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t1ih7-0007Sp-T0
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 08:50:50 +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 11357450-8d2e-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 10:50:46 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2fb57f97d75so18707121fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 01:50:46 -0700 (PDT)
Received: from jmerino-thinkstation ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ca0b0807f8sm455583a12.33.2024.10.18.01.50.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 01:50:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 11357450-8d2e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729241446; x=1729846246; 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=fuL/P2AT5Kv+sre0CQ3J2lpLtaynLRHpaP6kVoT7GaM=;
        b=ACj6w5duaRupLAllCbEt7sznhYauzCU0b69G9+FL1jYHpNMNW8s5Oma8tva3fIhL0M
         8mkk+UMNpNRA78/6uKyzgzcXulXrmdav75xGaTTLPVtNkH6fN0HSfLOnUcRqvT1QiEJJ
         q4I7AqNyICu7yo0EyFmzDs/i5bqV2emsFAiD8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729241446; x=1729846246;
        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=fuL/P2AT5Kv+sre0CQ3J2lpLtaynLRHpaP6kVoT7GaM=;
        b=CqLxK7HeUM5Ca/6Ob7dUpkxnEVmAd/ok74rbEZKUun2CgprNpoIAA10ugvuB4L0gPP
         sFkFa1KdVVFr7Jolozkrq6siysAYBYNs4vr5lvcjXS7sBOvy/n85gJ4BrepjpZMwssOq
         y/CgeyTtUZPZ69fR4uUu31zSaNOTQRJa/OT+dl6UVe+uQ+W5etzldt3AODkmaRvj83G3
         bShfg7xCyKevcZefXjyd7Mz3LVZ1IHdqOvGsM3AtRgg+rq5waC6WehGB/JOQncZ2fz5/
         XjkZi23JsLdjisILGT6mi1wJW9/FPSSFoGmaMuwyHKY8iEG9CaYfECGzO5BMNM7v2/ro
         VLag==
X-Gm-Message-State: AOJu0Yxsxp59igiV9I3Vz7Dj17+mrZqCCV+I2W0qP5JnYhEVF8t9vW95
	igT6u192xeCU18Ul1sM4tP15CanFTkBzkOJfBXulT50csz9PqzQbdhvDOaOWT/U=
X-Google-Smtp-Source: AGHT+IHzVbkgI4Sj6Uv/p9TfuPiMxSXSbwU3GpD6OKxqGEgFnUIFyKehwjQ6zKnGtvNxS8eCETwAiQ==
X-Received: by 2002:a2e:e01:0:b0:2fb:45cf:5eef with SMTP id 38308e7fff4ca-2fb83260fe6mr5852401fa.30.1729241446141;
        Fri, 18 Oct 2024 01:50:46 -0700 (PDT)
Date: Fri, 18 Oct 2024 09:50:44 +0100
From: Javi Merino <javi.merino@cloud.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, 
	Christian Lindig <christian.lindig@citrix.com>, David Scott <dave@recoil.org>, 
	Anthony PERARD <anthony.perard@vates.tech>, Andrii Sultanov <andrii.sultanov@cloud.com>
Subject: Re: [XEN PATCH v1 2/3] ocaml/libs: Fill build failure due to unused
 variable in ocaml macro
Message-ID: <nb2iahlpzuwvmoqtlu552uteujm27ywe3gzxnfzad26pguwreh@s5kjlxonlgdc>
References: <cover.1729170005.git.javi.merino@cloud.com>
 <d6b98ca75017bf4aa72a69468321705263e66f30.1729170005.git.javi.merino@cloud.com>
 <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>

On Thu, Oct 17, 2024 at 06:47:44PM +0100, Andrew Cooper wrote:
> On 17/10/2024 5:20 pm, Javi Merino wrote:
> > On Fedora 40, the build fails with:
> >
> >     gcc -m64 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-but-set-variable -Wno-unused-local-typedefs   -Werror -O2 -fomit-frame-pointer -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ -MMD -MP -MF .domain_getinfo_stubs_v1.o.d -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE   -fPIC -I/usr/lib64/ocaml -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs/xsd_glue -I/build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include -D__XEN_TOOLS__ -I/build/tools/ocaml/libs\/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include  -c -o domain_getinfo_stubs_v1.o domain_getinfo_stubs_v1.c
> >     In file included from domain_getinfo_stubs_v1.c:10:
> >     domain_getinfo_stubs_v1.c: In function 'xsd_glue_failwith':
> >     /usr/lib64/ocaml/caml/memory.h:275:29: error: unused variable 'caml__frame' [-Werror=unused-variable]
> >       275 |   struct caml__roots_block *caml__frame = *caml_local_roots_ptr
> >           |                             ^~~~~~~~~~~
> >     domain_getinfo_stubs_v1.c:48:9: note: in expansion of macro 'CAMLparam0'
> >       48 |         CAMLparam0();
> >          |         ^~~~~~~~~~
> >     cc1: all warnings being treated as errors
> >
> > The CAMLparam0 macro is defined in /usr/lib64/ocaml/caml/memory.h:255 as:
> >
> >     #define CAMLparam0()                                                    \
> >       struct caml__roots_block** caml_local_roots_ptr =                     \
> >         (DO_CHECK_CAML_STATE ? Caml_check_caml_state() : (void)0,           \
> >          &CAML_LOCAL_ROOTS);                                                \
> >       struct caml__roots_block *caml__frame = *caml_local_roots_ptr
> >
> > We can't modify the macro.  Mark the xsd_glue_failwith() function with
> > ignore "-Wunused-variable" to prevent gcc from failing the build due
> > to the unused variable.
> >
> > Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
> > Signed-off-by: Javi Merino <javi.merino@cloud.com>
> 
> That's horrible...
> 
> I note the Ocaml manual even says:
> 
> "Some C compilers give bogus warnings about unused variables
> caml__dummy_xxx at each use of CAMLparam and CAMLlocal. You should
> ignore them."  which a brave claim to make...
> 
> 
> The problem with pragma gcc is that we support Clang too.
> 
> Having had a play, this works too
> 
> @@ -45,7 +45,9 @@ static struct custom_operations xsd_glue_xenctrl_ops = {
>  static void Noreturn xsd_glue_failwith(
>         xc_interface *xch, const char *func, unsigned int line)
>  {
> +#define caml__frame __attribute__((unused)) caml__frame
>         CAMLparam0();
> +#undef caml__frame
>         CAMLlocal1(msg);
>         const xc_error *error = xch ? xc_get_last_error(xch) : NULL;
>         char *str = NULL;
> 
> and is rather more selective.
> 
> 
> However, looking through other bits of memory.h, there's this gem:
> 
> #define CAMLnoreturn ((void) caml__frame)
> 
> which has existed since db3745919 "suppression des warnings "unused
> variable" de gcc" in 2004.
> 
> So, I think this is a better fix:
> 
> @@ -69,6 +69,7 @@ static void Noreturn xsd_glue_failwith(
>         free(str);
>  
>         caml_raise_with_arg(*caml_named_value("xsg.error_v1"), msg);
> +       CAMLnoreturn;
>  }
>  #define xsd_glue_failwith(xch) xsd_glue_failwith(xch, __func__, __LINE__)
>  

Right!  I actually tried put a (void)caml__frame to silence the
warning, but I didn't think of looking for a macro that would do
exactly that.

Do I have to resend the series with your patch, or can you commit it
directly?

Cheers,
Javi


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 09:33:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 09:33:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821697.1235618 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1jLq-00040G-TT; Fri, 18 Oct 2024 09:32:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821697.1235618; Fri, 18 Oct 2024 09:32: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 1t1jLq-000409-Qe; Fri, 18 Oct 2024 09:32:54 +0000
Received: by outflank-mailman (input) for mailman id 821697;
 Fri, 18 Oct 2024 09: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 1t1jLp-0003zz-Pl; Fri, 18 Oct 2024 09: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 1t1jLp-0000ih-La; Fri, 18 Oct 2024 09: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 1t1jLp-0000lk-B4; Fri, 18 Oct 2024 09:32:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1jLp-0003xu-Aa; Fri, 18 Oct 2024 09: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>
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=8diJNHIIQtPiTtkmE2MI/y0G3tqLFPdu+hAoqMsBv/U=; b=inpCTtH2jP6m/QujxKOY6PZExJ
	yI30z6Xf07iFEmZwnP+pIZNYv1CdwWHL0Yc7l717R5ZxLZ4LqQxP2tOVrf6eUwd7E0RRdBLPgYDAB
	kWInEZIDg6uNEGKQMrfLH/TAXTt1ecbuWPsARIZH9lxF0lnOoD6UhFrDG4I31q7eAg98=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188219-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188219: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=6e197a8ba5e349e511850fc52457992de88c8795
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 09:32:53 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 6e197a8ba5e349e511850fc52457992de88c8795
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    1 days
Failing since        188156  2024-10-17 09:14:11 Z    1 days    5 attempts
Testing same since   188188  2024-10-17 17:12:12 Z    0 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 09:47:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 09:47:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821710.1235628 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1jZj-0002Ue-4C; Fri, 18 Oct 2024 09:47:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821710.1235628; Fri, 18 Oct 2024 09: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 1t1jZj-0002UX-1c; Fri, 18 Oct 2024 09:47:15 +0000
Received: by outflank-mailman (input) for mailman id 821710;
 Fri, 18 Oct 2024 09:47: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=/epI=RO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t1jZi-0002Cw-B1
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 09:47:14 +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 f3b6dc0c-8d35-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 11:47:13 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c9c28c1ecbso2061880a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 02:47:13 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ca0b0e6deesm498028a12.67.2024.10.18.02.47.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 18 Oct 2024 02:47:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3b6dc0c-8d35-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729244833; x=1729849633; 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=apE2YBiQmBua5hk/tOheXqY61ZxwE45bg2npG6a6nFg=;
        b=J1L8g4X/Orj+GSnoEPZqxdZjgtdvm5ux5n9lZpI+qoBZH0OVmDIp9HQKvfSe0NHfHf
         pQ/Q2ytu4/O7cS4Tz1r6vR3OD29m/cs+JSVJopXTaZ0KG/0dQAYbeoy4m5aOR6DPvy3S
         iXptPaY0NNE+I4RMl7f4qAhpBrirL30z5ExC8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729244833; x=1729849633;
        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=apE2YBiQmBua5hk/tOheXqY61ZxwE45bg2npG6a6nFg=;
        b=EjF7nT4+x8sH6BxWVt+QtRcW9QMGhBnL7IcY0ob41WmnFIkumAZlOv4QXKsNFOQ54d
         rJWmD4/xXCoVTf/bWbLJZduJMjaA5SXj6If29oMhT4YTDBjFhRBts8yNZZgbMHIb+tBV
         c22By3odFFSQdO39Oos7yYMsiTZu49sG5gr7zR0jh7wYd39t9aU9XBdDoTBi9PVTuX3p
         3osnqcwG2DOtGlvkxhFtq7u6F/vCwnk+my312ShT1BJul2ZyW+WqzWymF1uPlks5h6sV
         BDjPVg8+tKnxRRDAZ/V0aQuwVNLMv7uQl8P0mrIA0YucBJagL0muLmz2kBS+ZusCco3n
         +kvQ==
X-Gm-Message-State: AOJu0YxPxYRrG3OTN55zoHDm5Ae3ftdVWXSu4mhzL3y5Siwg92BtGXaW
	8v59aYN4AIosJ2jbRJEYR/oAFBE8TH/LnknGH/2Aoh34ku9aHKhEs5KYJf6Qpz8=
X-Google-Smtp-Source: AGHT+IERxMPKEHg1yJ7hnN84xfMgHdttTy0v7g5sUVYTvJ3L0FDRfpXc1a+BJs2/ArjRmFYqg42J1w==
X-Received: by 2002:a05:6402:13c7:b0:5c9:6eeb:4c7 with SMTP id 4fb4d7f45d1cf-5ca0ac860f3mr981218a12.9.1729244832801;
        Fri, 18 Oct 2024 02:47:12 -0700 (PDT)
Message-ID: <a7ece1f6-81be-47fe-b4a9-fde7e952315a@citrix.com>
Date: Fri, 18 Oct 2024 10:47:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 2/3] ocaml/libs: Fill build failure due to unused
 variable in ocaml macro
To: Javi Merino <javi.merino@cloud.com>
Cc: xen-devel@lists.xenproject.org,
 Christian Lindig <christian.lindig@citrix.com>, David Scott
 <dave@recoil.org>, Anthony PERARD <anthony.perard@vates.tech>,
 Andrii Sultanov <andrii.sultanov@cloud.com>
References: <cover.1729170005.git.javi.merino@cloud.com>
 <d6b98ca75017bf4aa72a69468321705263e66f30.1729170005.git.javi.merino@cloud.com>
 <a2fb569d-4314-4d0e-b288-8891d8848d24@citrix.com>
 <nb2iahlpzuwvmoqtlu552uteujm27ywe3gzxnfzad26pguwreh@s5kjlxonlgdc>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <nb2iahlpzuwvmoqtlu552uteujm27ywe3gzxnfzad26pguwreh@s5kjlxonlgdc>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18/10/2024 9:50 am, Javi Merino wrote:
> On Thu, Oct 17, 2024 at 06:47:44PM +0100, Andrew Cooper wrote:
>> On 17/10/2024 5:20 pm, Javi Merino wrote:
>>> On Fedora 40, the build fails with:
>>>
>>>     gcc -m64 -DBUILD_ID -fno-strict-aliasing -std=gnu99 -Wall -Wstrict-prototypes -Wno-unused-but-set-variable -Wno-unused-local-typedefs   -Werror -O2 -fomit-frame-pointer -D__XEN_INTERFACE_VERSION__=__XEN_LATEST_INTERFACE_VERSION__ -MMD -MP -MF .domain_getinfo_stubs_v1.o.d -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE   -fPIC -I/usr/lib64/ocaml -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs -I /build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../libs/xsd_glue -I/build/tools/ocaml/libs/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include -D__XEN_TOOLS__ -I/build/tools/ocaml/libs\/xsd_glue/domain_getinfo_plugin_v1/../../../../../tools/include  -c -o domain_getinfo_stubs_v1.o domain_getinfo_stubs_v1.c
>>>     In file included from domain_getinfo_stubs_v1.c:10:
>>>     domain_getinfo_stubs_v1.c: In function 'xsd_glue_failwith':
>>>     /usr/lib64/ocaml/caml/memory.h:275:29: error: unused variable 'caml__frame' [-Werror=unused-variable]
>>>       275 |   struct caml__roots_block *caml__frame = *caml_local_roots_ptr
>>>           |                             ^~~~~~~~~~~
>>>     domain_getinfo_stubs_v1.c:48:9: note: in expansion of macro 'CAMLparam0'
>>>       48 |         CAMLparam0();
>>>          |         ^~~~~~~~~~
>>>     cc1: all warnings being treated as errors
>>>
>>> The CAMLparam0 macro is defined in /usr/lib64/ocaml/caml/memory.h:255 as:
>>>
>>>     #define CAMLparam0()                                                    \
>>>       struct caml__roots_block** caml_local_roots_ptr =                     \
>>>         (DO_CHECK_CAML_STATE ? Caml_check_caml_state() : (void)0,           \
>>>          &CAML_LOCAL_ROOTS);                                                \
>>>       struct caml__roots_block *caml__frame = *caml_local_roots_ptr
>>>
>>> We can't modify the macro.  Mark the xsd_glue_failwith() function with
>>> ignore "-Wunused-variable" to prevent gcc from failing the build due
>>> to the unused variable.
>>>
>>> Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
>>> Signed-off-by: Javi Merino <javi.merino@cloud.com>
>> That's horrible...
>>
>> I note the Ocaml manual even says:
>>
>> "Some C compilers give bogus warnings about unused variables
>> caml__dummy_xxx at each use of CAMLparam and CAMLlocal. You should
>> ignore them."  which a brave claim to make...
>>
>>
>> The problem with pragma gcc is that we support Clang too.
>>
>> Having had a play, this works too
>>
>> @@ -45,7 +45,9 @@ static struct custom_operations xsd_glue_xenctrl_ops = {
>>  static void Noreturn xsd_glue_failwith(
>>         xc_interface *xch, const char *func, unsigned int line)
>>  {
>> +#define caml__frame __attribute__((unused)) caml__frame
>>         CAMLparam0();
>> +#undef caml__frame
>>         CAMLlocal1(msg);
>>         const xc_error *error = xch ? xc_get_last_error(xch) : NULL;
>>         char *str = NULL;
>>
>> and is rather more selective.
>>
>>
>> However, looking through other bits of memory.h, there's this gem:
>>
>> #define CAMLnoreturn ((void) caml__frame)
>>
>> which has existed since db3745919 "suppression des warnings "unused
>> variable" de gcc" in 2004.
>>
>> So, I think this is a better fix:
>>
>> @@ -69,6 +69,7 @@ static void Noreturn xsd_glue_failwith(
>>         free(str);
>>  
>>         caml_raise_with_arg(*caml_named_value("xsg.error_v1"), msg);
>> +       CAMLnoreturn;
>>  }
>>  #define xsd_glue_failwith(xch) xsd_glue_failwith(xch, __func__, __LINE__)
>>  
> Right!  I actually tried put a (void)caml__frame to silence the
> warning, but I didn't think of looking for a macro that would do
> exactly that.

:)  It's Ocaml.  I had a hunch there'd be something.

> Do I have to resend the series with your patch, or can you commit it
> directly?

I'll just fold it on commit.  No point spending more time on this.

In the meantime, Ocaml upstream have already merged my docs PR about this.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 09:59:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 09:59:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821721.1235638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1jlM-0001ao-77; Fri, 18 Oct 2024 09:59:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821721.1235638; Fri, 18 Oct 2024 09: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 1t1jlM-0001ah-4W; Fri, 18 Oct 2024 09:59:16 +0000
Received: by outflank-mailman (input) for mailman id 821721;
 Fri, 18 Oct 2024 09:59: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=1Ho2=RO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t1jlL-0001Zn-7K
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 09:59:15 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a0fec28c-8d37-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 11:59:13 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c9693dc739so2472058a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 02:59:13 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68ae6394sm72592166b.84.2024.10.18.02.59.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 18 Oct 2024 02:59:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a0fec28c-8d37-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729245553; x=1729850353; darn=lists.xenproject.org;
        h=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=4rqjNImrHSaZ2A+eBwfHKQRTUfZ0zzYSU9zXimlEN9Y=;
        b=H10MPMeo4sLGYS3rLbb47mLLSqKAlw1wiAC3969nVcXgtbuAbEIIdrE38pD6WgIovn
         Xwea/nNV1zbq1wpLMqRwKjByCDFNPK/i9XanG7//4eNORZxPLApplKHZl97E3iwIQn1K
         LZUCz7aRBUL1t4E0ZGmJykxr78RC4kWNJEOrkLz38Ly1ZyVqi8NrLIM4NaH1nbBv0iQG
         q8rPmyIZREPU1+mM8yD/f+/pQeHJIgeMfKxryyM7nuNo0MuNMGQcjg6yWNhydrMdNb5E
         6JthT4rwGaX0aiVLHZWVXMjHLQAUrYVv7WylvOUk4Bjw8lvxjwW3WBHJTlhUMe521qTo
         Qaig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729245553; x=1729850353;
        h=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=4rqjNImrHSaZ2A+eBwfHKQRTUfZ0zzYSU9zXimlEN9Y=;
        b=abb3TiYd1gTG+ZpJc1KBp500IsR1esCdXSATI68tUjpb8kIbnN+X35bX4iSjpkGvqd
         Tuz4gfwUJcKU8NymjPNgU/i1hMzAuA4Qey5pxw9jEFBduywP7nPPendu/Tb9t3c8xuQb
         MYDdE0+r/PBc7SlM0wvI7S9itpbB3CkeKFKxE8cVtcACrAzJxcFcv+7Q7Lo3OIXid4y1
         YHow4zuDqVeCgS/G/5z6yOr8lCh3mg64yQ5d88d+Hkdh1lGMSQ48bkO0fkxhpbi46bRy
         7BQAf452JjGW1m7ANDLD2/Xm24CKcDamwCsSkFRBtFYGqkmzq8Ytb+9Vga3EpqEApFBS
         tQQQ==
X-Gm-Message-State: AOJu0YweN6bi3M29a2/i+IMb0mpf16jUMV4Wni/3fMx0J2OiuetVY0JC
	kbIpryozvIZX3xWPdp6RJFC6OZsSiqSIg/KZHsK50ELIhBC58KSDl6BYb3qH7nE=
X-Google-Smtp-Source: AGHT+IE6/oaz3Cowp8yQ0wdd0YPB7iS5/TLsQm8EmObTB4MGX187ObsFNLt7Mf1m25k8pC5NZ8c2eQ==
X-Received: by 2002:a17:907:8f16:b0:a9a:11f5:8cd9 with SMTP id a640c23a62f3a-a9a69ca372dmr121338366b.56.1729245553061;
        Fri, 18 Oct 2024 02:59:13 -0700 (PDT)
Message-ID: <c46981c8-e7d9-48f6-937f-5e8059114208@suse.com>
Date: Fri, 18 Oct 2024 11:59:11 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] xen: Remove dependency between pciback and privcmd
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241012084537.1543059-1-Jiqian.Chen@amd.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <20241012084537.1543059-1-Jiqian.Chen@amd.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------AmPFckrNgvwwbduhaYh8qahR"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------AmPFckrNgvwwbduhaYh8qahR
Content-Type: multipart/mixed; boundary="------------Ce1NOyyNmelfgX6ZLDWQaQxN";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jiqian Chen <Jiqian.Chen@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-ID: <c46981c8-e7d9-48f6-937f-5e8059114208@suse.com>
Subject: Re: [PATCH v4] xen: Remove dependency between pciback and privcmd
References: <20241012084537.1543059-1-Jiqian.Chen@amd.com>
In-Reply-To: <20241012084537.1543059-1-Jiqian.Chen@amd.com>

--------------Ce1NOyyNmelfgX6ZLDWQaQxN
Content-Type: multipart/mixed; boundary="------------pj1s4fBFEZDt0TOUWOFV3jlC"

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

T24gMTIuMTAuMjQgMTA6NDUsIEppcWlhbiBDaGVuIHdyb3RlOg0KPiBDb21taXQgMmZhZTZi
YjdiZTMyICgieGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbCB0byBnZXQgZ3NpIGZyb20g
ZGV2IikNCj4gYWRkcyBhIHdlYWsgcmV2ZXJzZSBkZXBlbmRlbmN5IHRvIHRoZSBjb25maWcg
WEVOX1BSSVZDTUQgZGVmaW5pdGlvbiwgdGhhdA0KPiBkZXBlbmRlbmN5IGNhdXNlcyB4ZW4t
cHJpdmNtZCBjYW4ndCBiZSBsb2FkZWQgb24gZG9tVSwgYmVjYXVzZSBkZXBlbmRlbnQNCj4g
eGVuLXBjaWJhY2sgaXNuJ3QgYWx3YXlzIGJlIGxvYWRlZCBzdWNjZXNzZnVsbHkgb24gZG9t
VS4NCj4gDQo+IFRvIHNvbHZlIGFib3ZlIHByb2JsZW0sIHJlbW92ZSB0aGF0IGRlcGVuZGVu
Y3ksIGFuZCBkbyBub3QgY2FsbA0KPiBwY2lzdHViX2dldF9nc2lfZnJvbV9zYmRmKCkgZGly
ZWN0bHksIGluc3RlYWQgYWRkIGEgaG9vayBpbg0KPiBkcml2ZXJzL3hlbi9hcGNpLmMsIHhl
bi1wY2liYWNrIHJlZ2lzdGVyIHRoZSByZWFsIGNhbGwgZnVuY3Rpb24sIHRoZW4gaW4NCj4g
cHJpdmNtZF9pb2N0bF9wY2lkZXZfZ2V0X2dzaSBjYWxsIHRoYXQgaG9vay4NCj4gDQo+IEZp
eGVzOiAyZmFlNmJiN2JlMzIgKCJ4ZW4vcHJpdmNtZDogQWRkIG5ldyBzeXNjYWxsIHRvIGdl
dCBnc2kgZnJvbSBkZXYiKQ0KPiBSZXBvcnRlZC1ieTogTWFyZWsgTWFyY3p5a293c2tpLUfD
s3JlY2tpIDxtYXJtYXJla0BpbnZpc2libGV0aGluZ3NsYWIuY29tPg0KPiBTaWduZWQtb2Zm
LWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1kLmNvbT4NCg0KUmV2aWV3ZWQtYnk6
IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCg0KDQpKdWVyZ2VuDQoNCg==
--------------pj1s4fBFEZDt0TOUWOFV3jlC
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------pj1s4fBFEZDt0TOUWOFV3jlC--

--------------Ce1NOyyNmelfgX6ZLDWQaQxN--

--------------AmPFckrNgvwwbduhaYh8qahR
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/Ey8FAmcSMXAFAwAAAAAACgkQsN6d1ii/Ey+h
rQf/W/FjhT9zrxkOAN9UuDMjD0vzF0e41ptS9YFlrjdWeJvDZJsPCjQNXvSdAWMOrTlqRORXw+HP
D9n2WnI6CDTTYjQeY01ehsMCil9M7F5u3bXN7k0Am+bDao1g19XKmTA4LvhGX3RpyRNkbwwowkOr
nRm9dcczcHbQi8lkhlePgdqTvhYT5LxA9Rah5gjv0th0hJZVGTLb9jEVSBwfi0HrK7OrHW3jCZrD
885z7o/jnJVs5m6jXy8fRnIr5ZD2ahhFZ/MiVfOuGRyeBSVVOG84DQ6iVRMEMDxtbm8n2Uj6QnKr
LfMmFhDYGRv3WTa30NfVQZeweqDetVUnXN9MVHmOCw==
=Avxp
-----END PGP SIGNATURE-----

--------------AmPFckrNgvwwbduhaYh8qahR--


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 10:27:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 10:27:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821736.1235670 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1kCQ-000853-KB; Fri, 18 Oct 2024 10:27:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821736.1235670; Fri, 18 Oct 2024 10: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 1t1kCQ-00084w-He; Fri, 18 Oct 2024 10:27:14 +0000
Received: by outflank-mailman (input) for mailman id 821736;
 Fri, 18 Oct 2024 10:27:12 +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 1t1kCO-00082M-MR; Fri, 18 Oct 2024 10:27:12 +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 1t1kCO-0001iA-HB; Fri, 18 Oct 2024 10:27:12 +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 1t1kCO-0002k4-8Y; Fri, 18 Oct 2024 10:27:12 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1kCO-0007bb-5V; Fri, 18 Oct 2024 10:27: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=xenproject.org; s=20200302mail; h=Date:From:Message-Id:Subject:To;
	bh=31Oj4avklJI4Gi56X8Nw6n51i7dcwpRiTjrhBapbkp4=; b=yePsXStdV9y7sl0SMRUYZEEjbg
	mo1yWEqTHZRji9dmZS+9N943ZghkL/AVLzhPEO6TeTTgPM7SkpTby9rfQm3lxV6RASSLnFwaRhh7d
	vQCVdWYzAFk7TCIb+wHl3sVdrbRmKORPXZg1hUA0QfNq95UvUdu1kLMfcMcmKRQF22DA=;
To: xen-devel@lists.xenproject.org
Subject: [ovmf bisection] complete test-amd64-amd64-xl-qemuu-ovmf-amd64
Message-Id: <E1t1kCO-0007bb-5V@osstest.test-lab.xenproject.org>
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 10:27:12 +0000

branch xen-unstable
xenbranch xen-unstable
job test-amd64-amd64-xl-qemuu-ovmf-amd64
testid debian-hvm-install

Tree: linux git://xenbits.xen.org/linux-pvops.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: ovmf https://github.com/tianocore/edk2.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: seabios git://xenbits.xen.org/osstest/seabios.git
Tree: xen git://xenbits.xen.org/xen.git

*** Found and reproduced problem changeset ***

  Bug is in tree:  ovmf https://github.com/tianocore/edk2.git
  Bug introduced:  d64d1e195ceb003c824786bfd817227c7ae81f06
  Bug not present: b3f36e151d8b014cac5c6a833e2270c14d998739
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/188238/


  commit d64d1e195ceb003c824786bfd817227c7ae81f06
  Author: Kun Qin <kuqin@microsoft.com>
  Date:   Thu Sep 19 14:11:37 2024 -0700
  
      MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
      
      REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
      
      This change adds the implementation that fits the needs and description
      of PI spec defined Delayed Dispatch PPI in Pei Core.
      
      The PPI would allow minimal delay for registered callbacks. As well as
      allowing other functions to wait for GUIDed delayed dispatch callbacks.
      
      Cc: Jian J Wang <jian.j.wang@intel.com>
      Cc: Dandan Bi <dandan.bi@intel.com>
      Cc: Liming Gao <gaoliming@byosoft.com.cn>
      Cc: Debkumar De <debkumar.de@intel.com>
      Cc: Catharine West <catharine.west@intel.com>
      
      Co-authored-by: Mike Turner <mikeyt@pobox.com>
      Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
      Signed-off-by: Kun Qin <kuqin12@gmail.com>


For bisection revision-tuple graph see:
   http://logs.test-lab.xenproject.org/osstest/results/bisect/ovmf/test-amd64-amd64-xl-qemuu-ovmf-amd64.debian-hvm-install.html
Revision IDs in each graph node refer, respectively, to the Trees above.

----------------------------------------
Running cs-bisection-step --graph-out=/home/logs/results/bisect/ovmf/test-amd64-amd64-xl-qemuu-ovmf-amd64.debian-hvm-install --summary-out=tmp/188238.bisection-summary --basis-template=188152 --blessings=real,real-bisect,real-retry ovmf test-amd64-amd64-xl-qemuu-ovmf-amd64 debian-hvm-install
Searching for failure / basis pass:
 188219 fail [host=godello1] / 188152 [host=huxelrebe1] 188131 [host=godello0] 188125 [host=fiano0] 188114 [host=septiner0] 188107 [host=debina1] 188102 [host=debina0] 188099 [host=fiano1] 188091 [host=albana1] 188083 [host=albana1] 188065 [host=pinot0] 188049 [host=italia1] 188039 [host=albana0] 188037 [host=huxelrebe0] 188031 [host=nobling0] 188023 [host=italia0] 188020 [host=sabro1] 188006 [host=septiner1] 188004 [host=pinot1] 187996 [host=rimava1] 187977 [host=nobling1] 187974 [host=rimava0]\
  187973 [host=godello0] 187972 [host=nobling0] 187969 [host=sabro0] 187963 ok.
Failure / basis pass flights: 188219 / 187963
(tree with no url: minios)
Tree: linux git://xenbits.xen.org/linux-pvops.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: ovmf https://github.com/tianocore/edk2.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: seabios git://xenbits.xen.org/osstest/seabios.git
Tree: xen git://xenbits.xen.org/xen.git
Latest 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 6e197a8ba5e349e511850fc52457992de88c8795 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
Basis pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 91d806917fd2be763f067a58ef05fadcf43efab1 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 2424e4c04aa30d90e85073ea41d18a7845460783 41190d2ceb03b12ffc17a66c04de519c26a6052a
Generating revisions with ./adhoc-revtuple-generator  git://xenbits.xen.org/linux-pvops.git#aa4cd140bba57b7064b4c7a7141bebd336d32087-54d90d17e8cee20b163d395829162cec92b583f4 git://xenbits.xen.org/osstest/linux-firmware.git#c530a75c1e6a472b0eb9558310b518f0dfcd8860-c530a75c1e6a472b0eb9558310b518f0dfcd8860 https://github.com/tianocore/edk2.git#91d806917fd2be763f067a58ef05fadcf43efab1-6e197a8ba5e349e511850fc52457992de88c8795 git://xenbits.xen.org/qemu-xen-traditional.git#3d273dd05e51e5a1ffba3d98c743\
 7ee84e8f8764-3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 git://xenbits.xen.org/qemu-xen.git#0df9387c8983e1b1e72d8c574356f572342c03e6-3fdb3cd3a27a22a050c7d27126a24807a7a45745 git://xenbits.xen.org/osstest/seabios.git#2424e4c04aa30d90e85073ea41d18a7845460783-2424e4c04aa30d90e85073ea41d18a7845460783 git://xenbits.xen.org/xen.git#41190d2ceb03b12ffc17a66c04de519c26a6052a-47990ecef286606794d607d4ca8703d71c98d659
adhoc-revtuple-generator: tree discontiguous: qemu-xen
>From git://cache:9419/git://xenbits.xen.org/xen
   a285d2ac2e..6e085825cb  staging    -> origin/staging
Loaded 15002 nodes in revision graph
Searching for test results:
 188232 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 b3f36e151d8b014cac5c6a833e2270c14d998739 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188238 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d64d1e195ceb003c824786bfd817227c7ae81f06 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 187963 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 91d806917fd2be763f067a58ef05fadcf43efab1 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 2424e4c04aa30d90e85073ea41d18a7845460783 41190d2ceb03b12ffc17a66c04de519c26a6052a
 187969 [host=sabro0]
 187972 [host=nobling0]
 187973 [host=godello0]
 187974 [host=rimava0]
 187977 [host=nobling1]
 187996 [host=rimava1]
 188004 [host=pinot1]
 188006 [host=septiner1]
 188020 [host=sabro1]
 188023 [host=italia0]
 188031 [host=nobling0]
 188037 [host=huxelrebe0]
 188039 [host=albana0]
 188049 [host=italia1]
 188065 [host=pinot0]
 188083 [host=albana1]
 188091 [host=albana1]
 188099 [host=fiano1]
 188102 [host=debina0]
 188107 [host=debina1]
 188114 [host=septiner0]
 188125 [host=fiano0]
 188131 [host=godello0]
 188152 [host=huxelrebe1]
 188227 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d64d1e195ceb003c824786bfd817227c7ae81f06 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188219 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 6e197a8ba5e349e511850fc52457992de88c8795 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188156 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 79598f34fa024ad2491b46b95c3189c5a7f159d2 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188162 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 91d806917fd2be763f067a58ef05fadcf43efab1 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 2424e4c04aa30d90e85073ea41d18a7845460783 41190d2ceb03b12ffc17a66c04de519c26a6052a
 188161 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 79598f34fa024ad2491b46b95c3189c5a7f159d2 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188167 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 79598f34fa024ad2491b46b95c3189c5a7f159d2 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188184 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 7bac0a940e905941487c3a2f2f5fb6ee43ff040a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 e305256e69b1c943db3ca20173da6ded3db2d252
 188188 fail irrelevant
 188189 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188196 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 081cf576a226e70ce4134dda19baf977d0b8bc64 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 3f6ee3db2e878398cfcde725399b4d1b04e92269
 188200 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 a232e0cd2fe2bb882a5dd0cafe322a2899a44d51 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188205 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 b7342074a649599078553e33acd6d7a79e950683 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188197 fail irrelevant
 188211 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 b3f36e151d8b014cac5c6a833e2270c14d998739 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188217 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d64d1e195ceb003c824786bfd817227c7ae81f06 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188222 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 b3f36e151d8b014cac5c6a833e2270c14d998739 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
Searching for interesting versions
 Result found: flight 187963 (pass), for basis pass
 For basis failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 b3f36e151d8b014cac5c6a833e2270c14d998739 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659, results HASH(0x55b44bd18258) HASH(0x55b44ad7a178) HASH(0x55b44ad82a48) For basis failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1\
 e6a472b0eb9558310b518f0dfcd8860 b7342074a649599078553e33acd6d7a79e950683 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659, results HASH(0x55b44bd71e70) For basis failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 a232e0cd2fe2bb882a5dd0cafe322a2899a44d51 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d271\
 26a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659, results HASH(0x55b44bd72470) For basis failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 081cf576a226e70ce4134dda19baf977d0b8bc64 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 3f6ee3db2e878398cfcde725399b4d1b04e92269, results HASH(0x55b44bd42ac0) For basis\
  failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa, results HASH(0x55b44bd0b2d8) For basis failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 7bac0a940e905941487c\
 3a2f2f5fb6ee43ff040a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 e305256e69b1c943db3ca20173da6ded3db2d252, results HASH(0x55b44ad7a868) For basis failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 91d806917fd2be763f067a58ef05fadcf43efab1 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 2424e4c04aa30d90e85073ea41d18a78454\
 60783 41190d2ceb03b12ffc17a66c04de519c26a6052a, results HASH(0x55b44bd3bca0) HASH(0x55b44bd02c90) Result found: flight 188156 (fail), for basis failure (at ancestor ~9749)
 Repro found: flight 188162 (pass), for basis pass
 Repro found: flight 188219 (fail), for basis failure
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 b3f36e151d8b014cac5c6a833e2270c14d998739 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
No revisions left to test, checking graph state.
 Result found: flight 188211 (pass), for last pass
 Result found: flight 188217 (fail), for first failure
 Repro found: flight 188222 (pass), for last pass
 Repro found: flight 188227 (fail), for first failure
 Repro found: flight 188232 (pass), for last pass
 Repro found: flight 188238 (fail), for first failure

*** Found and reproduced problem changeset ***

  Bug is in tree:  ovmf https://github.com/tianocore/edk2.git
  Bug introduced:  d64d1e195ceb003c824786bfd817227c7ae81f06
  Bug not present: b3f36e151d8b014cac5c6a833e2270c14d998739
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/188238/


  commit d64d1e195ceb003c824786bfd817227c7ae81f06
  Author: Kun Qin <kuqin@microsoft.com>
  Date:   Thu Sep 19 14:11:37 2024 -0700
  
      MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
      
      REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
      
      This change adds the implementation that fits the needs and description
      of PI spec defined Delayed Dispatch PPI in Pei Core.
      
      The PPI would allow minimal delay for registered callbacks. As well as
      allowing other functions to wait for GUIDed delayed dispatch callbacks.
      
      Cc: Jian J Wang <jian.j.wang@intel.com>
      Cc: Dandan Bi <dandan.bi@intel.com>
      Cc: Liming Gao <gaoliming@byosoft.com.cn>
      Cc: Debkumar De <debkumar.de@intel.com>
      Cc: Catharine West <catharine.west@intel.com>
      
      Co-authored-by: Mike Turner <mikeyt@pobox.com>
      Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
      Signed-off-by: Kun Qin <kuqin12@gmail.com>

neato: graph is too large for cairo-renderer bitmaps. Scaling by 0.615458 to fit
pnmtopng: 38 colors found
Revision graph left in /home/logs/results/bisect/ovmf/test-amd64-amd64-xl-qemuu-ovmf-amd64.debian-hvm-install.{dot,ps,png,html,svg}.
----------------------------------------
188238: tolerable ALL FAIL

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

Failures :-/ but no regressions.

Tests which did not succeed,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail baseline untested


jobs:
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         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



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 11:26:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 11:26:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821754.1235691 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1l6y-0005VL-UP; Fri, 18 Oct 2024 11:25:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821754.1235691; Fri, 18 Oct 2024 11:25: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 1t1l6y-0005VE-RT; Fri, 18 Oct 2024 11:25:40 +0000
Received: by outflank-mailman (input) for mailman id 821754;
 Fri, 18 Oct 2024 11:25: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 1t1l6x-0005V4-Np; Fri, 18 Oct 2024 11:25: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 1t1l6w-0002hk-Tg; Fri, 18 Oct 2024 11:25: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 1t1l6w-0004MP-Dj; Fri, 18 Oct 2024 11:25:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1l6w-0005rG-DE; Fri, 18 Oct 2024 11:25: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=AK+triJXj4RkjWc6m7v41zV2CTF9mf/0ITsb2uwFK2E=; b=jnV9n34a1WjTBDPP2/EoOIzDxi
	wWGNtdE8Rspm1E4uuBzRxIK47fXK8OGEDTqf3+ouVAoKtwxzQjaj+0gIphlCPkWbd1+aSA21xxxDr
	rDA0L/NaGwkzZTKZfql5E3N23oWoFg3sHG113RkAdEPaRIWpJQq20ov1oYQ6cX+8PW/w=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188193-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188193: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:regression
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:xen-boot:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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: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-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-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-amd64-libvirt-qcow2:migrate-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-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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
X-Osstest-Versions-This:
    xen=b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
X-Osstest-Versions-That:
    xen=47990ecef286606794d607d4ca8703d71c98d659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 11:25:38 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-libvirt-vhd 22 leak-check/check         fail REGR. vs. 188128

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-qcow2    20 leak-check/check        fail blocked in 188153
 test-armhf-armhf-libvirt      8 xen-boot                     fail  like 188128
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188153
 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-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          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-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-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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                  b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
baseline version:
 xen                  47990ecef286606794d607d4ca8703d71c98d659

Last test of basis   188153  2024-10-17 07:28:21 Z    1 days
Testing same since   188193  2024-10-17 18:11:18 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:51 2024 +0200

    x86emul/test: drop Xeon Phi S/G prefetch special case
    
    Another leftover from the dropping of Xeon Phi support.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 09d22fe15cb11254d06413d15fd578093d7fe062
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:31 2024 +0200

    x86emul/test: correct loop body indentation in evex-disp8.c:test_one()
    
    For some reason I entirely consistently screwed these up.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

commit 330d4e62508defa708b55f1b612f42b6a2e2842b
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Thu Oct 17 14:13:50 2024 +0200

    docs: update documentation of reboot param
    
    Reflect changed default mode, and fix formatting of `efi` value.
    
    Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 11:35:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 11:35:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821764.1235703 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1lGE-0002l2-QJ; Fri, 18 Oct 2024 11:35:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821764.1235703; Fri, 18 Oct 2024 11:35: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 1t1lGE-0002kv-No; Fri, 18 Oct 2024 11:35:14 +0000
Received: by outflank-mailman (input) for mailman id 821764;
 Fri, 18 Oct 2024 11:35: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=L8t4=RO=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t1lGD-0002kp-6i
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 11:35:13 +0000
Received: from fout-b3-smtp.messagingengine.com
 (fout-b3-smtp.messagingengine.com [202.12.124.146])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0817e1fd-8d45-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 13:35:10 +0200 (CEST)
Received: from phl-compute-05.internal (phl-compute-05.phl.internal
 [10.202.2.45])
 by mailfout.stl.internal (Postfix) with ESMTP id 52AED11400B9;
 Fri, 18 Oct 2024 07:35:09 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
 by phl-compute-05.internal (MEProxy); Fri, 18 Oct 2024 07:35:09 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 18 Oct 2024 07:35:07 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0817e1fd-8d45-11ef-a0be-8be0dac302b0
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=1729251309;
	 x=1729337709; bh=J9e4oENcL/5Vc6tFtkpQbGyrpkQM0D537/k26suPCmo=; b=
	ha1Zq1nuMaiWRcoFxJXo0Hh2pMa7emGH3OZrLXSNfbLJYS/fCtTWvuFqxPMQHJ/Y
	QA0kVERjoEgv40yV90QOyBZL80Z4V+f6zCqOD6BensMmKPPRIm0v0Od4fOw60tdU
	5/rMB2WyzMGLKBiQk7csFIoEbu1c30icg+fnOPmn6FxW79B9yRSv3d98InnLgzz6
	C+sRn73ut+89SmunEBagdhSA4XYkr1yzPrMM5P4EuS6dGKfz0TidhYc7jMooHY8x
	T+oPfXMkdX3a24y1o1lGWopYVDsHVgmPO5PXO+KerliYPYDAge3F7Bri0amuXQY2
	fJj3mAQy2Kz6S4CjnhvPZg==
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=1729251309; x=1729337709; bh=J9e4oENcL/5Vc6tFtkpQbGyrpkQM
	0D537/k26suPCmo=; b=qMcjG9ZMGG9fiJ9xV2upltHsely95dqAxL47tsTqhMxM
	1Sj11nW12J4735QgbZb08qz0QHwxyNOa9E6NT6DdjkovWcCHQGtRycRxO1XkAlaM
	AajMh3zM3+5xkKagXVhCtP0nI5oczyG4sjwMrfLVVNEDGDlnXLJ0i+Nq/8xRGRrt
	AuBA8RegWiz1gI3+U4oJrskiwSutDSXl19ruF/CejmjVlk5Y4de2Gx7LfdPw5R7D
	zEZXrc7bVrZtwTFX6D6OzLU3Qcq9Ri2zchv7A/5EWsdm3a/fGgzkK3sO4zQmSCCi
	UZJwBkli3rfhysznANFy6W6Fs6zi4S0hQ2VxcFjVGw==
X-ME-Sender: <xms:7EcSZ1ySbF9rbamiUdOjgtLgqgdoOUmF58RCpkx8PlFKg6U6OnwRTg>
    <xme:7EcSZ1QVfykC53NIMxBLYrDwA1PF__yp4iqNYGI3459DahRvtIshgyxoYSa3USe1s
    0O41ybI-Dw1ZA>
X-ME-Received: <xmr:7EcSZ_XkFVErc7GIfmvoW5Rtv2o07PDMVKrw0tRjUW6wtscXWgZ5RQvAtfrjyQn4TfAowTx6Xv6AzA9YcDpIIGJj7BlCtzQ7WQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdehfedgfeelucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepjedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnughr
    vgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhopehvihgtthhorh
    hmrdhlihhrrgesrghmugdrtghomhdprhgtphhtthhopeigvghnqdguvghvvghlsehlihhs
    thhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopegtrghrughovgestggrrh
    guohgvrdgtohhmpdhrtghpthhtohepshhsthgrsggvlhhlihhniheskhgvrhhnvghlrdho
    rhhgpdhrtghpthhtoheptghhrhhishhtohhphhgvrhdrfidrtghlrghrkhesghhmrghilh
    drtghomhdprhgtphhtthhopeguphhsmhhithhhsegrphgvrhhtuhhsshholhhuthhiohhn
    shdrtghomh
X-ME-Proxy: <xmx:7EcSZ3gGxv4hYdib-xdFichxzGY9pyMkmR7PyCFK8JZMUi6j1L0vTg>
    <xmx:7EcSZ3BVBKfYEAs0ZEwiVak2pNLpNPUN_PaucEAWpnJLthyJAKYO5Q>
    <xmx:7EcSZwKdwWX60Z98e756-RCiWYYUqTibgbf0xo2W6nIQ30nnHRcaHQ>
    <xmx:7EcSZ2A39TJCkUftTfxyZvsHUKhotRwEMdSj8fcO3tGalcnWWu-q_Q>
    <xmx:7UcSZ51G05BMTD7-IAPTj4K6CIbFHFaIYIRsbkiiBIL3Q0k1JRHdHxv0>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 18 Oct 2024 13:35:04 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: victorm.lira@amd.com, xen-devel@lists.xenproject.org,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Christopher Clark <christopher.w.clark@gmail.com>,
	Daniel Smith <dpsmith@apertussolutions.com>
Subject: Re: [XEN PATCH v1 0/3] automation: add x86_64 test (linux argo)
Message-ID: <ZxJH6BNsM7Rt7-U8@mail-itl>
References: <cover.1729183051.git.victorm.lira@amd.com>
 <40f27418-08b3-4b74-889b-12720be8f9c7@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="yCpBQ9XTvwErHfDn"
Content-Disposition: inline
In-Reply-To: <40f27418-08b3-4b74-889b-12720be8f9c7@citrix.com>


--yCpBQ9XTvwErHfDn
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 18 Oct 2024 13:35:04 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: victorm.lira@amd.com, xen-devel@lists.xenproject.org,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Christopher Clark <christopher.w.clark@gmail.com>,
	Daniel Smith <dpsmith@apertussolutions.com>
Subject: Re: [XEN PATCH v1 0/3] automation: add x86_64 test (linux argo)

On Thu, Oct 17, 2024 at 08:25:57PM +0100, Andrew Cooper wrote:
> I was thinking of experimenting with a separate top-level repo that does
> nothing but has a few manual runs to populate artefacts, and having the
> Xen tests pull artefacts from here rather than from earlier build jobs.

This sounds like a good idea. It may also help with rebuilding
containers when needed?

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcSR+gACgkQ24/THMrX
1yynZwf/Q0+I/qaoHTvLnCileK8GnIKYJXltS4V7uoKPwjUM10gqzNZaJQPabGDa
L3Uv01UvIYR0PaAmbQ61MufafH/ZwrliAivwOC6CqFDuE7dGiJJ5AGY/mYLkT/U6
pGWGjSKzSn4PI6t0WU5ob0m0EiWAEourwoKndRDt4VQrYBJQk0RWLewivkCYYbRo
3wllojL8XsU9Kvj9/W2Xr8nWPHarw4hWyqHy674i+q/G7zxMjvctasFlvRs4EHlk
bK6dqWC+dsl3eS5RX0rqugbqB7jV/0AYBosbvZylRGQC2FO1+jSbNUwo3qPpzgR9
oTP7Lxxe9qpKgrGEUozr8NTczhNOwA==
=j5yA
-----END PGP SIGNATURE-----

--yCpBQ9XTvwErHfDn--


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 11:41:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 11:41:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821772.1235717 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1lMK-0008SD-Gd; Fri, 18 Oct 2024 11:41:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821772.1235717; Fri, 18 Oct 2024 11:41: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 1t1lMK-0008S6-Dk; Fri, 18 Oct 2024 11:41:32 +0000
Received: by outflank-mailman (input) for mailman id 821772;
 Fri, 18 Oct 2024 11:41: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=7i1V=RO=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t1lMJ-0008Rg-4N
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 11:41:31 +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 e9b54d1e-8d45-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 13:41:28 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c94c4ad9d8so2782177a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 04:41:28 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a68ae54a6sm85628866b.65.2024.10.18.04.41.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 04:41:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e9b54d1e-8d45-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729251688; x=1729856488; 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=FfW/VOltijs/T9SwMBNInKkhvuG6mWcW7+gL38HquWI=;
        b=atOhJBK5LeondEBx2cZm3RYLlIznZMbn9y4ci5h+6awLlVkHHO/YMeBaqr1kfPuMHG
         upK9wVDAIWFGqunkxaFRVbnHmzPn+769KBvFd74iQRPCLbyqnvRSEkrofDCgz3FTUgZu
         owWrU3xSDO/gGy5P05I0K3Uf4brh5mN1Rcs00=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729251688; x=1729856488;
        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=FfW/VOltijs/T9SwMBNInKkhvuG6mWcW7+gL38HquWI=;
        b=mDf9tV8y/45tiUuka0uylmV+PET1SETkQm+sttzEEXpnv4mMANiPCWcdfkTbNh++qA
         uWcbiCcV0F84BwkTQYynBNo8wIHsNKHjlCrJzU1Rue5qbqMZe0uQGhAaogTTcwI99Sbk
         6jMWoXfRIe6+dyy8rmPXDtZ0G1bpFSceiZw5pNGQMLH7bFWqkeBWBUmDZoGYrtPsk0m5
         fNIuSXQGqE2GtWk3CHVhH13uO5JoolcitB9rMiwb/PRSl86wuqiCNdeBXFchuQM3ifPk
         RTbQqGCYi4Z9PiCRphECtnCjnT8YQ4Ct+3OLKmZgCLeIsA+1nA45f4tgXl688gO4ffCl
         +TGQ==
X-Gm-Message-State: AOJu0Yzoo5quK86J1KhR3GrXr71zAvP5z3HAGmQFHStLLTD2r7oACCmt
	ZOM1KA0RH9htGSE39glQ16XRhoYxotXZZN2gfsVQPWsnyX+vWOtimF8NlfP6oJc=
X-Google-Smtp-Source: AGHT+IEcP06vujEQZ12rH/JJtcueprmzuMbkLOokUU5lm8csTbckvWRiMy9MuGOCeXj5+cLY3rUatA==
X-Received: by 2002:a17:907:9693:b0:a9a:3cf:cdb8 with SMTP id a640c23a62f3a-a9a69ba6e93mr161795066b.36.1729251687898;
        Fri, 18 Oct 2024 04:41:27 -0700 (PDT)
Date: Fri, 18 Oct 2024 13:41:26 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
Message-ID: <ZxJJZvOCQLzU_Q5s@macbook.local>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20241017133123.1946204-2-frediano.ziglio@cloud.com>

On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> The current method to include 32 bit C boot code is:
> - compile each function we want to use into a separate object file;
> - each function is compiled with -fpic option;
> - convert these object files to binary files. This operation removes GOP
>   which we don't want in the executable;
> - a small assembly part in each file add the entry point;
> - code can't have external references, all possible variables are passed
>   by value or pointer;
> - include these binary files in head.S.
> 
> There are currently some limitations:
> - code is compiled separately, it's not possible to share a function
>   (like memcpy) between different functions to use;
> - although code is compiled with -fpic there's no certainty there are
>   no relocations, specifically data ones. This can lead into hard to
>   find bugs;
> - it's hard to add a simple function;
> - having to pass external variables makes hard to do multiple things
>   otherwise functions would require a lot of parameters so code would
>   have to be split into multiple functions which is not easy.
> 
> Current change extends the current process:
> - all object files are linked together before getting converted making
>   possible to share code between the function we want to call;
> - a single object file is generated with all functions to use and
>   exported symbols to easily call;
> - variables to use are declared in linker script and easily used inside
>   C code. Declaring them manually could be annoying but makes also
>   easier to check them. Using external pointers can be still an issue if
>   they are not fixed. If an external symbol is not declared this gives a
>   link error.
> 
> Some details of the implementation:
> - C code is compiled with -fpic flags (as before);
> - object files from C code are linked together;
> - the single bundled object file is linked with 2 slightly different
>   script files to generate 2 bundled object files;
> - the 2 bundled object files are converted to binary removing the need
>   for global offset tables;
> - a Python script is used to generate assembly source from the 2
>   binaries;
> - the single assembly file is compiled to generate final bundled object
>   file;
> - to detect possible unwanted relocation in data/code code is generated
>   with different addresses. This is enforced starting .text section at
>   different positions and adding a fixed "gap" at the beginning.
>   This makes sure code and data is position independent;
> - to detect used symbols in data/code symbols are placed in .text
>   section at different offsets (based on the line in the linker script).
>   This is needed as potentially a reference to a symbol is converted to
>   a reference to the containing section so multiple symbols could be
>   converted to reference to same symbol (section name) and we need to
>   distinguish them;
> - --orphan-handling=error option to linker is used to make sure we
>   account for all possible sections from C code;
> 
> Current limitations:
> - the main one is the lack of support for 64 bit code. It would make
>   sure that even the code used for 64 bit (at the moment EFI code) is
>   code and data position independent. We cannot assume that code that
>   came from code compiled for 32 bit and compiled for 64 bit is code and
>   data position independent, different compiler options lead to
>   different code/data.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
> Changes since v2:
> - removed W^X limitation, allowing data;
> - added some comments to python script;
> - added extension to python script;
> - added header to generated assembly code from python script;
> - added starting symbol to generated assembly code from python script
>   to make disassembly more clear;
> - other minor style changes to python script.
> 
> Changes since v4:
> - add build32.final.lds build32.other.lds to targets macro;
> - place some comments over a rule, not inside;
> - simplified linking and producing binary rule;
> - renamed built_in_32 to built-in-32, coding style;
> - fix minor indentation;
> - put magic numbers in Makefile and propagate them;
> - minor variable cleanups in Python script;
> - add dependency to Python script.
> 
> Changes since v5:
> - renamed "other" and "final" phases to "base" and "offset";
> - use if_changed macro to generate built-in-32.S.
> ---
>  xen/arch/x86/boot/.gitignore                  |   5 +-
>  xen/arch/x86/boot/Makefile                    |  47 +++-
>  .../x86/boot/{build32.lds => build32.lds.S}   |  35 ++-
>  xen/arch/x86/boot/cmdline.c                   |  12 -
>  xen/arch/x86/boot/head.S                      |  12 -
>  xen/arch/x86/boot/reloc.c                     |  14 --
>  xen/tools/combine_two_binaries.py             | 220 ++++++++++++++++++
>  7 files changed, 292 insertions(+), 53 deletions(-)
>  rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (70%)
>  create mode 100755 xen/tools/combine_two_binaries.py
> 
> diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
> index a379db7988..7e85549751 100644
> --- a/xen/arch/x86/boot/.gitignore
> +++ b/xen/arch/x86/boot/.gitignore
> @@ -1,3 +1,4 @@
>  /mkelf32
> -/*.bin
> -/*.lnk
> +/build32.*.lds
> +/built-in-32.*.bin
> +/built-in-32.*.map
> diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> index 1199291d2b..5da19501be 100644
> --- a/xen/arch/x86/boot/Makefile
> +++ b/xen/arch/x86/boot/Makefile
> @@ -1,4 +1,5 @@
>  obj-bin-y += head.o
> +obj-bin-y += built-in-32.o
>  
>  obj32 := cmdline.32.o
>  obj32 += reloc.32.o
> @@ -9,9 +10,6 @@ targets   += $(obj32)
>  
>  obj32 := $(addprefix $(obj)/,$(obj32))
>  
> -$(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
> -$(obj)/head.o: $(obj32:.32.o=.bin)
> -
>  CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
>  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
>  CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
> @@ -25,14 +23,47 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
>  $(obj)/%.32.o: $(src)/%.c FORCE
>  	$(call if_changed_rule,cc_o_c)
>  
> +orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
>  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
>  LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
>  LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
>  
> -%.bin: %.lnk
> -	$(OBJCOPY) -j .text -O binary $< $@
> +text_gap := 0x010200
> +text_diff := 0x408020
> +
> +$(obj)/build32.base.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff)
> +$(obj)/build32.offset.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff) -DFINAL
> +$(obj)/build32.base.lds $(obj)/build32.offset.lds: $(src)/build32.lds.S FORCE
> +	$(call if_changed_dep,cpp_lds_S)
> +
> +targets += build32.offset.lds build32.base.lds
> +
> +# link all 32bit objects together
> +$(obj)/built-in-32.tmp.o: $(obj32)
> +	$(LD32) -r -o $@ $^
> +
> +# link bundle with a given layout and extract a binary from it
> +$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.o
> +	$(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=map) -o $(@:bin=o) $(filter %.o,$^)
> +	$(OBJCOPY) -j .text -O binary $(@:bin=o) $@
> +	rm -f $(@:bin=o)
> +
> +quiet_cmd_combine = GEN     $@
> +cmd_combine = \
> +	$(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> +		--gap=$(text_gap) --text-diff=$(text_diff) \
> +		--script $(obj)/build32.offset.lds \
> +		--bin1 $(obj)/built-in-32.base.bin \
> +		--bin2 $(obj)/built-in-32.offset.bin \
> +		--map $(obj)/built-in-32.offset.map \
> +		--exports cmdline_parse_early,reloc \
> +		--output $@

See xen/Rules.mk, for consistency the indentation should be done with
spaces when defining variables.  That would also allow to align the
options.

> +
> +targets += built-in-32.S
>  
> -%.lnk: %.32.o $(src)/build32.lds
> -	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> +# generate final object file combining and checking above binaries
> +$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.offset.bin \
> +		$(srctree)/tools/combine_two_binaries.py FORCE

Can you indent this using spaces also, so it's on the same column as
the ':'?

> +	$(call if_changed,combine)
>  
> -clean-files := *.lnk *.bin
> +clean-files := built-in-32.*.bin built-in-32.*.map build32.*.lds
> diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
> similarity index 70%
> rename from xen/arch/x86/boot/build32.lds
> rename to xen/arch/x86/boot/build32.lds.S
> index 56edaa727b..e3f5e55261 100644
> --- a/xen/arch/x86/boot/build32.lds
> +++ b/xen/arch/x86/boot/build32.lds.S
> @@ -15,22 +15,47 @@
>   * with this program.  If not, see <http://www.gnu.org/licenses/>.
>   */
>  
> -ENTRY(_start)
> +#ifdef FINAL
> +#  undef GAP
> +#  define GAP 0
> +#  define MULT 0
> +#  define TEXT_START
> +#else
> +#  define MULT 1
> +#  define TEXT_START TEXT_DIFF
> +#endif

In other places we use a single space between the hash and the define.

> +#define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
> +
> +ENTRY(dummy_start)
>  
>  SECTIONS
>  {
>    /* Merge code and data into one section. */
> -  .text : {
> +  .text TEXT_START : {
> +        /* Silence linker warning, we are not going to use it */
> +        dummy_start = .;
> +
> +        /* Declare below any symbol name needed.
> +         * Each symbol should be on its own line.
> +         * It looks like a tedious work but we make sure the things we use.
> +         * Potentially they should be all variables. */

The style is wrong for the opening and closing comment delimiters.

I think it would be best if this was written in a more natural style.

/*
 * Any symbols used should be declared below, this ensures which
 * symbols are visible to the 32bit C boot code.
 */

I don't think you need to mention that each symbol should be on it's
own line.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 11:49:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 11:49:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821783.1235730 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1lUD-0004x8-Dl; Fri, 18 Oct 2024 11:49:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821783.1235730; Fri, 18 Oct 2024 11: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 1t1lUD-0004x1-AZ; Fri, 18 Oct 2024 11:49:41 +0000
Received: by outflank-mailman (input) for mailman id 821783;
 Fri, 18 Oct 2024 11:49: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=7i1V=RO=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t1lUC-0004wv-9K
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 11:49:40 +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 0e295180-8d47-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 13:49:39 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c942815197so1003077a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 04:49:39 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ca0b0ff773sm637081a12.92.2024.10.18.04.49.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 04:49:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e295180-8d47-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729252179; x=1729856979; 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=Gq7a76mJRy4Sh7L0EL4cqmiClIrsIleECH6kmYmxGSU=;
        b=It27yHuf+wLdXgAcvpr7nfUNiWXgNowgaJXby2byt/l63Ipd6rsHr4VAK4b+nl3fXQ
         Wjz0TtbjhBqH70PrfDFuV3VAUYh82QBjmmmq+DKO5nA9Z+8A2TsXBteOJdMkXhsDW64M
         Or2stEpTWBkNaUSEUNv5GwesEXuaxvYme1UE0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729252179; x=1729856979;
        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=Gq7a76mJRy4Sh7L0EL4cqmiClIrsIleECH6kmYmxGSU=;
        b=dt636yQQ0naBa2bxqhZlHI6P11jHgU7gRPJ8CsvK7wSKPcc5q4uun2pe7gYJSdjEzV
         3MIxGH55YOjOPlsu56I6FvYAEeHGkefqb6iKNFwCCKv+1DuNlj/w6OuwzkxJsi9ZPVIl
         vccg0u3ZKaFPjBdzNkDAFEkwA1ytrwiqBWGbjPDKnu+S3IOhd2H5aHl7hfgY/DhAjrsI
         3iRQQgZCieGUecsumS5jx1i9sm3N5S4Loqjsq9w5cA5Je/GOUDeT0/XByL1tX50VHiGY
         bCyr8DytW8rPNxnTxzJv9lnytxo1IAbHgfnRWLBOGovJ+/UABcwY8c3jUqaQamwKQsOu
         3jVA==
X-Forwarded-Encrypted: i=1; AJvYcCXT4YWLRfUCbziJozKQxepkDRgvVKCMzij6jVuQxLVG/pcCAk+unaKo7KbU14zRQEwaT1fWCLqaUqE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxREqf9ZiskbdwPaUmko5Ac+4F+9Z1ONaMFBGeptDN7ebVBgxSB
	8l+zNtwR1O0KKrGWGpGYJjW0MGFn8KYe1jlAAHBwil5f2VdtmhzgGZrAaUQ5MiU=
X-Google-Smtp-Source: AGHT+IG6muZ4MT9RnZWm0rXxCBeoAavDjEndwGDBfAXMOQW1gDG+m09UHaV83ncnfprPeQ0S0vHkLg==
X-Received: by 2002:a05:6402:234f:b0:5c5:da5e:68e with SMTP id 4fb4d7f45d1cf-5ca0ac43b6bmr2135421a12.3.1729252178597;
        Fri, 18 Oct 2024 04:49:38 -0700 (PDT)
Date: Fri, 18 Oct 2024 13:49:37 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
Message-ID: <ZxJLUeMFyejFGCLc@macbook.local>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
 <a5745a93-1d82-45f1-bb88-81a737ebcce3@citrix.com>
 <CACHz=ZhULqJpE8UK7kZQN0He5Poc85Cr6heTCKj1KLjxcPA6XQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CACHz=ZhULqJpE8UK7kZQN0He5Poc85Cr6heTCKj1KLjxcPA6XQ@mail.gmail.com>

On Fri, Oct 18, 2024 at 09:42:48AM +0100, Frediano Ziglio wrote:
> On Thu, Oct 17, 2024 at 6:13 PM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
> >
> > On 17/10/2024 2:31 pm, Frediano Ziglio wrote:
> > > The current method to include 32 bit C boot code is:
> > > - compile each function we want to use into a separate object file;
> > > - each function is compiled with -fpic option;
> > > - convert these object files to binary files. This operation removes GOP
> > >   which we don't want in the executable;
> > > - a small assembly part in each file add the entry point;
> > > - code can't have external references, all possible variables are passed
> > >   by value or pointer;
> > > - include these binary files in head.S.
> > >
> > > There are currently some limitations:
> > > - code is compiled separately, it's not possible to share a function
> > >   (like memcpy) between different functions to use;
> > > - although code is compiled with -fpic there's no certainty there are
> > >   no relocations, specifically data ones. This can lead into hard to
> > >   find bugs;
> > > - it's hard to add a simple function;
> > > - having to pass external variables makes hard to do multiple things
> > >   otherwise functions would require a lot of parameters so code would
> > >   have to be split into multiple functions which is not easy.
> > >
> > > Current change extends the current process:
> > > - all object files are linked together before getting converted making
> > >   possible to share code between the function we want to call;
> > > - a single object file is generated with all functions to use and
> > >   exported symbols to easily call;
> > > - variables to use are declared in linker script and easily used inside
> > >   C code. Declaring them manually could be annoying but makes also
> > >   easier to check them. Using external pointers can be still an issue if
> > >   they are not fixed. If an external symbol is not declared this gives a
> > >   link error.
> > >
> > > Some details of the implementation:
> > > - C code is compiled with -fpic flags (as before);
> > > - object files from C code are linked together;
> > > - the single bundled object file is linked with 2 slightly different
> > >   script files to generate 2 bundled object files;
> > > - the 2 bundled object files are converted to binary removing the need
> > >   for global offset tables;
> > > - a Python script is used to generate assembly source from the 2
> > >   binaries;
> > > - the single assembly file is compiled to generate final bundled object
> > >   file;
> > > - to detect possible unwanted relocation in data/code code is generated
> > >   with different addresses. This is enforced starting .text section at
> > >   different positions and adding a fixed "gap" at the beginning.
> > >   This makes sure code and data is position independent;
> > > - to detect used symbols in data/code symbols are placed in .text
> > >   section at different offsets (based on the line in the linker script).
> > >   This is needed as potentially a reference to a symbol is converted to
> > >   a reference to the containing section so multiple symbols could be
> > >   converted to reference to same symbol (section name) and we need to
> > >   distinguish them;
> > > - --orphan-handling=error option to linker is used to make sure we
> > >   account for all possible sections from C code;
> > >
> > > Current limitations:
> > > - the main one is the lack of support for 64 bit code. It would make
> > >   sure that even the code used for 64 bit (at the moment EFI code) is
> > >   code and data position independent. We cannot assume that code that
> > >   came from code compiled for 32 bit and compiled for 64 bit is code and
> > >   data position independent, different compiler options lead to
> > >   different code/data.
> > >
> > > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> >
> > This commit message is not particularly easy to follow.  Can I recommend
> > the following:
> >
> > ---%<---
> > x86/boot: Rework how 32bit C is linked/included for early boot
> >
> > Right now, the two functions which were really too complicated to write
> > in asm are compiled as 32bit PIC, linked to a blob and included
> > directly, using global asm() to arrange for them to have function semantics.
> >
> > This is limiting and fragile; the use of data relocations will compile
> > fine but malfunction when used, creating hard-to-debug bugs.
> >
> > Furthermore, we would like to increase the amount of C, to
> > deduplicate/unify Xen's boot logic, as well as making it easier to
> > follow.  Therefore, rework how the 32bit objects are included.
> >
> > Link all 32bit objects together first.  This allows for sharing of logic
> > between translation units.  Use differential linking and explicit
> > imports/exports to confirm that we only have the expected relocations,
> > and write the object back out as an assembly file so it can be linked
> > again as if it were 64bit, to integrate with the rest of Xen.
> >
> > This allows for the use of external references (e.g. access to global
> > variables) with reasonable assurance of doing so safely.
> >
> > No functional change.
> > ---%<---
> >
> > which I think is an accurate and more concise summary of what's changing?
> >
> 
> You cut half of the explanation, replacing with nothing.
> Why is a script needed? Why 2 linking? How the new method detects
> unwanted relocations?

TBH this is not clear to me even with your original commit message.

> Why wasn't possible to share functions?
> Why using --orphan-handling option?
> 
> The description has been there for about 2 months without many objections.

IMO it's fine to use lists to describe specific points, but using
lists exclusively to write a commit message makes the items feel
disconnected between them.

The format of the commit message by Andrew is clearer to undertsand
for me.  Could you add what you think it's missing to the proposed
message by Andrew?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:04:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:04:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821795.1235745 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1liW-0003Zu-Rc; Fri, 18 Oct 2024 12:04:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821795.1235745; Fri, 18 Oct 2024 12:04: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 1t1liW-0003Zn-P3; Fri, 18 Oct 2024 12:04:28 +0000
Received: by outflank-mailman (input) for mailman id 821795;
 Fri, 18 Oct 2024 12:04: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=dzfJ=RO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1liV-0003Zf-4l
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:04:27 +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 1e3fd19b-8d49-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 14:04:25 +0200 (CEST)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-37d5689eea8so1469578f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 05:04:25 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431606965edsm25569755e9.22.2024.10.18.05.04.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 18 Oct 2024 05:04:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1e3fd19b-8d49-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729253065; x=1729857865; 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=Z5IdA1FD82Z7SpcZiRdkvg8+n7jOpz3Wh0YtWAEeyDY=;
        b=QR0ylp3bX04OutSjS0ivkLB7LHHf8MvnoQoCztF0zbpA5L3KIyfEJIvWoUnI+YBqMF
         8KRwPwgMSRdObey3sV2uScMNoX33aPQQRgL6D//ULAEZTZsLqtkMyOWJI1lHAIMi9sof
         l2Clwqhw5Gl3kQu4pky7AygA38aUIdHe2fwE9hzSU4NFdzF48w1akGAOyA1BkLuiEYSf
         hvbIZbDW8mJolcvKFKPKhANPFrb8hPBMJCbgomtjl7YQV9EKDdKCZW4DqvlDQolZYe/e
         mUPImVRVS/Ea5NrcoU0IwUe2pYdMzsWyWxi9N3DEtSR3KhGuOsi5orI8oDQEJqq8h/MJ
         brew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729253065; x=1729857865;
        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=Z5IdA1FD82Z7SpcZiRdkvg8+n7jOpz3Wh0YtWAEeyDY=;
        b=RdUc2abfjEVVHBvJZ+nwsDtnGh3PUPEXRCvbrh0rmtK+/VfWWLqbQondB6594X/jmE
         d0yvDhopUt2g7VRfr3Ooheqg1dcEB187yuRaZkyB7zz/sEZKR880Z4aXlTWhbgakMUQn
         I1GcNL8W9GPmEItYVE1T5q+0aaL9bllgZQTbPegfEBgtaTgW5d/MvF2hBRzNZhhyKqrO
         3SMZ2PDKbjOpVQl8vOyJgUMpmz/XAsbgZ5B+E4ly6OYHQIDV2fUh0D1jqwsbftYS9q+0
         sr94fgn7DxWrYBvdbfCtQyMSTd8G3tGjIaNpMZHZgE64fhFJ6dcorRFFKh7ESRX+TsvS
         8jEQ==
X-Gm-Message-State: AOJu0YwtbRUNDNUdmsyFFE1j5NMnlkKRtqkgZqa12RH8r2RIYxsxAZJq
	trISkPlHyb9oZjZfA8VQ0smid0Fk5yPY3QkuyHlJkSYZNk9Ubf/V+pitkqJi0w==
X-Google-Smtp-Source: AGHT+IG3EYhfTwpceYezltsli9CjEyXeoT6/1BEfG6xhn1gvF+HJB7avRid9dhZvXwdJaivFS8pi4g==
X-Received: by 2002:adf:cf08:0:b0:37c:d179:2f77 with SMTP id ffacd0b85a97d-37eab4d13aamr1495253f8f.12.1729253064598;
        Fri, 18 Oct 2024 05:04:24 -0700 (PDT)
Message-ID: <7afb8389-3758-4633-a97a-3623513dc917@suse.com>
Date: Fri, 18 Oct 2024 14:04:22 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
 <ZxJJZvOCQLzU_Q5s@macbook.local>
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: <ZxJJZvOCQLzU_Q5s@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.10.2024 13:41, Roger Pau Monné wrote:
> On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
>> @@ -25,14 +23,47 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
>>  $(obj)/%.32.o: $(src)/%.c FORCE
>>  	$(call if_changed_rule,cc_o_c)
>>  
>> +orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
>>  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
>>  LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
>>  LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
>>  
>> -%.bin: %.lnk
>> -	$(OBJCOPY) -j .text -O binary $< $@
>> +text_gap := 0x010200
>> +text_diff := 0x408020
>> +
>> +$(obj)/build32.base.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff)
>> +$(obj)/build32.offset.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff) -DFINAL
>> +$(obj)/build32.base.lds $(obj)/build32.offset.lds: $(src)/build32.lds.S FORCE
>> +	$(call if_changed_dep,cpp_lds_S)
>> +
>> +targets += build32.offset.lds build32.base.lds
>> +
>> +# link all 32bit objects together
>> +$(obj)/built-in-32.tmp.o: $(obj32)
>> +	$(LD32) -r -o $@ $^
>> +
>> +# link bundle with a given layout and extract a binary from it
>> +$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.o
>> +	$(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=map) -o $(@:bin=o) $(filter %.o,$^)
>> +	$(OBJCOPY) -j .text -O binary $(@:bin=o) $@
>> +	rm -f $(@:bin=o)
>> +
>> +quiet_cmd_combine = GEN     $@
>> +cmd_combine = \
>> +	$(PYTHON) $(srctree)/tools/combine_two_binaries.py \
>> +		--gap=$(text_gap) --text-diff=$(text_diff) \
>> +		--script $(obj)/build32.offset.lds \
>> +		--bin1 $(obj)/built-in-32.base.bin \
>> +		--bin2 $(obj)/built-in-32.offset.bin \
>> +		--map $(obj)/built-in-32.offset.map \
>> +		--exports cmdline_parse_early,reloc \
>> +		--output $@
> 
> See xen/Rules.mk, for consistency the indentation should be done with
> spaces when defining variables.  That would also allow to align the
> options.

And ideally also such that the options align with the first program
argument.

>> +
>> +targets += built-in-32.S
>>  
>> -%.lnk: %.32.o $(src)/build32.lds
>> -	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
>> +# generate final object file combining and checking above binaries
>> +$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.offset.bin \
>> +		$(srctree)/tools/combine_two_binaries.py FORCE
> 
> Can you indent this using spaces also, so it's on the same column as
> the ':'?

The first $(obj) you mean, I think / hope?

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:08:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:08:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821802.1235756 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1lm1-0007EE-9l; Fri, 18 Oct 2024 12:08:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821802.1235756; Fri, 18 Oct 2024 12:08: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 1t1lm1-0007E7-6n; Fri, 18 Oct 2024 12:08:05 +0000
Received: by outflank-mailman (input) for mailman id 821802;
 Fri, 18 Oct 2024 12:08: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1llz-0007Dy-EN
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:08:03 +0000
Received: from mail-oo1-xc31.google.com (mail-oo1-xc31.google.com
 [2607:f8b0:4864:20::c31])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9e99ad7f-8d49-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 14:08:01 +0200 (CEST)
Received: by mail-oo1-xc31.google.com with SMTP id
 006d021491bc7-5e7ae4c504fso956680eaf.1
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 05:08:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e99ad7f-8d49-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729253280; x=1729858080; 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=PvAMSRAXf52OhK2pXnM8sxQusYSpTiA7W9Pocse7Ssg=;
        b=Oi266v6pT1AbKSl/l0lErs1ENrsJ/IGJSr3LMuvTSuW84OPz4UanbwdUf5s9xGRa1U
         WV3P6VfPF4De+ZJ/0K4Nm2DVwsoYnGX1NUGfzkuCXljsCx5DpDIKfO9NHFVsOvurB14Z
         JExqUCIRigSPSAqJ9+OUMh7XOC9NqgIEDZEgs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729253280; x=1729858080;
        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=PvAMSRAXf52OhK2pXnM8sxQusYSpTiA7W9Pocse7Ssg=;
        b=DkfdMhfNUFy179YlkR35xfhB+1HOpTm360fyjKcSch+TemzK/tenmv/L3RHLuF9r9I
         H6l5CWNJoCjFuPfJttyv8i3RO8HryIY630HMrnbDM+IHB49Fny402SO6Xvg7p7A5GZO8
         GO3dRDZmD331VZtuLJKBkMw/QDKPXb4uyaG1StVj6X/9BmJ2fTsphnqXCOnSQ6gI4luZ
         SFnaGyKRS88pUl6s6g17QuBAEDpM1a95NVGGzojQ6W3VxJRwqwEWCRB5FM+ybg6cg3/W
         q22W50AY1HTbzhrUwj+dsN27k3ENcjUSbfl098p0ks/lGFOPL/wW8bPZet5xNfy7wV2r
         NlMg==
X-Gm-Message-State: AOJu0Yw6t0uesAntxsYRvXMEuhIsjZCPYGJvv8Vu1OsAkQW90JGvcV9+
	g7zeNRfZpriQRgT8mjpG0k9xccoVrsJDXfbjQeIVndVyxEtSSptgxmKbUcGdPXd3JHGxPGxeTM6
	eJzJ/34+vfGkvsOV4dufWhbgwcOukcmtLdB8OjSUj+QEYQ9LU
X-Google-Smtp-Source: AGHT+IGCkpiUr6EpXMkkG2wMUGJ3xuqq7DGD52xqlF3G/FF3TnBVLUCdXmbTNUU4TVxA6atj5ONwuUsZLKosI1hqT88=
X-Received: by 2002:a05:6820:c91:b0:5eb:6c26:1ca0 with SMTP id
 006d021491bc7-5eb8b3a4b8amr1621266eaf.1.1729253279836; Fri, 18 Oct 2024
 05:07:59 -0700 (PDT)
MIME-Version: 1.0
References: <20240926095133.483619-1-frediano.ziglio@cloud.com> <CACHz=ZgwcejTF0Yz5vchVy18Hn15LYp_R8Y1LqOA=qAHK-HRiA@mail.gmail.com>
In-Reply-To: <CACHz=ZgwcejTF0Yz5vchVy18Hn15LYp_R8Y1LqOA=qAHK-HRiA@mail.gmail.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 13:07:48 +0100
Message-ID: <CACHz=Zh9r7xFSsq3vxdBfss1ozJC1neoTFs4Dvpw+xeQiUFTsg@mail.gmail.com>
Subject: Re: [PATCH] Update deprecated SPDX license identifiers
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@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>, 
	Ross Lagerwall <ross.lagerwall@citrix.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>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, 
	Paul Durrant <paul@xen.org>, Dario Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>, 
	George Dunlap <gwd@xenproject.org>, Doug Goldstein <cardoe@cardoe.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 4, 2024 at 9:08=E2=80=AFAM Frediano Ziglio
<frediano.ziglio@cloud.com> wrote:
>
> On Thu, Sep 26, 2024 at 10:51=E2=80=AFAM Frediano Ziglio
> <frediano.ziglio@cloud.com> wrote:
> >
> > As specified in LICENSES/GPL-2.0:
> > - GPL-2.0 -> GPL-2.0-only;
> > - GPL-2.0+ -> GPL-2.0-or-later.
> >
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>
> ping
>

ping

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:11:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:11:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821808.1235765 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1lpU-0001XR-Nq; Fri, 18 Oct 2024 12:11:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821808.1235765; Fri, 18 Oct 2024 12:11: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 1t1lpU-0001XK-LG; Fri, 18 Oct 2024 12:11:40 +0000
Received: by outflank-mailman (input) for mailman id 821808;
 Fri, 18 Oct 2024 12:11: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 1t1lpT-0001XE-Ei
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:11: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 1t1lpP-0003Uz-PM; Fri, 18 Oct 2024 12:11:35 +0000
Received: from [2a02:8012:3a1:0:ecee:6c05:256c:cbd3]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1lpP-0005xI-DW; Fri, 18 Oct 2024 12:11: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=CEW0q9jPtO5ph7jT+m62XhsSsatBUccJ+mWp8Fn/lEs=; b=yYqnawH6QHbL9RIZQ99ceyIGiP
	MhXX/DTtU6Pg6u6ijEhyxVZbiGGxRvnGtCQYU12qNrzUTj2iZrQrJnmw4xHG2E5UTPl1PGbY6kTII
	UMLd2sI3ArcRJAXvzNMiaE75OvJ3/WnG3ozuMH9qcy6sHt+Y7lJpQRohKf04WG5VGFp4=;
Message-ID: <6d5bad39-1a20-4cef-a1c5-aaa99c501941@xen.org>
Date: Fri, 18 Oct 2024 13:11:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] Update deprecated SPDX license identifiers
Content-Language: en-GB
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, 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>,
 Ross Lagerwall <ross.lagerwall@citrix.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>, Elena Ufimtseva <elena.ufimtseva@oracle.com>,
 Paul Durrant <paul@xen.org>, Dario Faggioli <dfaggioli@suse.com>,
 Juergen Gross <jgross@suse.com>, George Dunlap <gwd@xenproject.org>,
 Doug Goldstein <cardoe@cardoe.com>
References: <20240926095133.483619-1-frediano.ziglio@cloud.com>
 <CACHz=ZgwcejTF0Yz5vchVy18Hn15LYp_R8Y1LqOA=qAHK-HRiA@mail.gmail.com>
 <CACHz=Zh9r7xFSsq3vxdBfss1ozJC1neoTFs4Dvpw+xeQiUFTsg@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CACHz=Zh9r7xFSsq3vxdBfss1ozJC1neoTFs4Dvpw+xeQiUFTsg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Frediano,

On 18/10/2024 13:07, Frediano Ziglio wrote:
> On Fri, Oct 4, 2024 at 9:08 AM Frediano Ziglio
> <frediano.ziglio@cloud.com> wrote:
>>
>> On Thu, Sep 26, 2024 at 10:51 AM Frediano Ziglio
>> <frediano.ziglio@cloud.com> wrote:
>>>
>>> As specified in LICENSES/GPL-2.0:
>>> - GPL-2.0 -> GPL-2.0-only;
>>> - GPL-2.0+ -> GPL-2.0-or-later.
>>>
>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>>
>> ping
>>
> 
> ping

Please try to be more specific.

I see you already have an ack from Stefano (which would cover Arm + 
Common). What else are you missing? Is it committing? Do you need 
someone else to ack? If the latter, then please mention who you think 
need to ack...

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:16:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:16:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821814.1235776 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1luA-0003Bf-9B; Fri, 18 Oct 2024 12:16:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821814.1235776; Fri, 18 Oct 2024 12:16: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 1t1luA-0003BY-6B; Fri, 18 Oct 2024 12:16:30 +0000
Received: by outflank-mailman (input) for mailman id 821814;
 Fri, 18 Oct 2024 12:16: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 1t1lu8-00036T-W0; Fri, 18 Oct 2024 12:16: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 1t1lu8-0003as-Rg; Fri, 18 Oct 2024 12:16: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 1t1lu8-0005is-KW; Fri, 18 Oct 2024 12:16:28 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1lu8-00022Q-K1; Fri, 18 Oct 2024 12:16: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:Message-Id:Subject:To;
	bh=ReADHFE8EoY67K0UF7XC8Ykja9VJtehMY+/OXKB1sxI=; b=3gcPXhcrgUhlQNnPcrzX60r6KU
	XNIFfQ4PgopTjphIG3tqn2QX0vRJaTyjD5xtVkefm9qeuh2AYp9+FJuM2NGYkABW3b2nY8W3/ufPn
	vymuvfsBTpHxj0a++J9uEFH1ZHtTNmqIIAOZGmwQ7xfVNd3DkdERZ5TTYfYI4/NtQqkY=;
To: xen-devel@lists.xenproject.org
Subject: [qemu-mainline bisection] complete test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict
Message-Id: <E1t1lu8-00022Q-K1@osstest.test-lab.xenproject.org>
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 12:16:28 +0000

branch xen-unstable
xenbranch xen-unstable
job test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict
testid debian-hvm-install

Tree: linux git://xenbits.xen.org/linux-pvops.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: ovmf git://xenbits.xen.org/osstest/ovmf.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu https://gitlab.com/qemu-project/qemu.git
Tree: seabios git://xenbits.xen.org/osstest/seabios.git
Tree: xen git://xenbits.xen.org/xen.git

*** Found and reproduced problem changeset ***

  Bug is in tree:  qemuu https://gitlab.com/qemu-project/qemu.git
  Bug introduced:  35152940b78e478b97051a799cb6275ced03192e
  Bug not present: aa54f5be44be786636a5d51cc1612ad208a24849
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/188250/


  commit 35152940b78e478b97051a799cb6275ced03192e
  Merge: aa54f5be44 4cd78a3db2
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   Mon Oct 14 17:05:25 2024 +0100
  
      Merge tag 'ui-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging
      
      UI-related fixes & shareable 2d memory with -display dbus
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmcNHtIcHG1hcmNhbmRy
      # ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5SYTD/9fRNrgnZIvIbIGf0kv
      # j3LguzwEsfn8eIUbJEIxtDnoS17zX1t981kP9J9ctUM6wnb0iQNYCXeTrF8Xrq0z
      # psiPhHGwPyWMdn9SWRfj597ShPn75z340Qve5GUm7clGu2KILh7TqqACH8LzaX+5
      # 6jqoZc3kqD+PYZHnYAi6v1YFfLIYfj0n6EaO/J4RRRZSrknpgct7jpmqL4wVzTIo
      # KYlG5afdUUfhmSIv5ZDpuuEJppdG74K2H+hJKDPIOOQ8/i/IU2EQPJ00ppiOPbET
      # nA0+piLGtHQwU24u5kDdbDlGL/y1KBKvGclOtzLQxWNStch5A6hqllNsuIg+0dJW
      # MRO2WZ8C7P7LD1eGmtYVZF/NzjnlTW/hbM5i0poPqhfcwbVmlIXjDs8GUfMGfINr
      # 1MVFGNjxfgadYZ1f6Q/JU/KWPJMR4Ik3C/SmGrRBlfra5YIts0ItDeGgfQIW9JGb
      # 1CpOng6/3SvW01B6psrPL+wP+6PsK333KPIA77KafOEMyOyEyuSOUrTShXbyXBHc
      # r/nLbWw2lZs4U0kgGRQ21+R3huTyw8LnikYpCnGwTWGCpb9NDFYg7z3CRrZW0hWx
      # DIWfN7M6YymeYygPUV9Wjo6i4yq4QqWPp7/QXtkSdX3v44/D7NWytKGST+Hwjkpa
      # h6U2vrsLdep2m47bnX/dEEP61g==
      # =xdt/
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Mon 14 Oct 2024 14:38:26 BST
      # gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
      # gpg:                issuer "marcandre.lureau@redhat.com"
      # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full]
      # gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full]
      # Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5
      
      * tag 'ui-pull-request' of https://gitlab.com/marcandre.lureau/qemu:
        audio/pw: Report more accurate error when connecting to PipeWire fails
        tests: add basic -display dbus Map.Unix test
        ui: refactor using a common qemu_pixman_shareable
        virtio-gpu: allocate shareable 2d resources on !win32
        ui/dbus: implement Unix.Map
        ui/dbus: add Listener.Unix.Map interface XML
        ui/dbus: make Listener.Win32.Map win32-specific
        meson: find_program('gdbus-codegen') directly
        ui/surface: allocate shared memory on !win32
        ui/dbus: add trace for can_share_map
        ui/dbus: do not limit to one listener per connection / bus name
        ui/pixman: generalize shared_image_destroy
        util/memfd: report potential errors on free
        ui/dbus: discard pending CursorDefine on new one
        ui/dbus: discard display messages on disable
        ui/dbus: fix filtering all update messages
        ui/win32: fix potential use-after-free with dbus shared memory
        ui/dbus: fix leak on message filtering
        hw/audio/hda: fix memory leak on audio setup
        hw/audio/hda: free timer on exit
      
      Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  
  commit 4cd78a3db2478d3c1527905a26c9d3fbee83ccac
  Author: Michal Privoznik <mprivozn@redhat.com>
  Date:   Wed Sep 18 10:17:06 2024 +0200
  
      audio/pw: Report more accurate error when connecting to PipeWire fails
      
      According to its man page [1], pw_context_connect() sets errno on
      failure:
      
        Returns a Core on success or NULL with errno set on error.
      
      It may be handy to see errno when figuring out why PipeWire
      failed to connect. That leaves us with just one possible path to
      reach 'fail_error' label which is then moved to that path and
      also its error message is adjusted slightly.
      
      1: https://docs.pipewire.org/group__pw__core.html#ga5994e3a54e4ec718094ca02a1234815b
      
      Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
      Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
      Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Message-ID: <3a78811ad5b0e87816b7616ab21d2eeef00b9c52.1726647033.git.mprivozn@redhat.com>
  
  commit ab10297a4ab1dac64baf04ed66929bef60e67d2e
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:28 2024 +0400
  
      tests: add basic -display dbus Map.Unix test
      
      Only check we eventually get a shared memory scanout.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-20-marcandre.lureau@redhat.com>
  
  commit 1ff788db9781615be745671ebdb2eb82c137c5b8
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:27 2024 +0400
  
      ui: refactor using a common qemu_pixman_shareable
      
      Use a common shareable type for win32 & unix, and helper functions.
      This simplify the code as it avoids a lot of #ifdef'ery.
      
      Note: if it helps review, commits could be reordered to introduce the
      common type before introducing shareable memory for unix.
      
      Suggested-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-19-marcandre.lureau@redhat.com>
  
  commit 5f899c34af1dbb0f621287faf9bcfb60fa237543
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:26 2024 +0400
  
      virtio-gpu: allocate shareable 2d resources on !win32
      
      Similar to what was done in commit 9462ff46 ("virtio-gpu/win32: allocate
      shareable 2d resources/images") for win32, allocate resource memory with
      memfd, so the associated display surface memory can be shared with a
      different process.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-18-marcandre.lureau@redhat.com>
  
  commit 48b7ef0f0fc3c3033797b67d1554987a516488f9
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:25 2024 +0400
  
      ui/dbus: implement Unix.Map
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-17-marcandre.lureau@redhat.com>
  
  commit 4de1797ff6ceb7387cdb967ec1fa0128624ff405
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:24 2024 +0400
  
      ui/dbus: add Listener.Unix.Map interface XML
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-16-marcandre.lureau@redhat.com>
  
  commit 3a9d38d31ea7bf99c62c8d97433baa85b3bdd5c9
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:23 2024 +0400
  
      ui/dbus: make Listener.Win32.Map win32-specific
      
      There are no types specific to Windows, so the code compiles on other
      platforms, but its useless on !Windows.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-15-marcandre.lureau@redhat.com>
  
  commit c118c8eb3e63c02421e8a02e82ffab6fa8369301
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:22 2024 +0400
  
      meson: find_program('gdbus-codegen') directly
      
      gio.pc variable is a bit bogus in context of cross-compilation, since it
      contains an absolute path, relative to the sysroot directory. On Fedora, it ends
      up as:
      /usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig/usr/bin/gdbus-codegen
      path which does not exist because it is not shipped by Fedora mingw
      packages.
      
      Instead, we can rely on meson find_program() behaviour to do a better
      job based on its search order and capabilities.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-14-marcandre.lureau@redhat.com>
  
  commit ec818df0005d1598d249f0cfea557226b6ad89a6
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:21 2024 +0400
  
      ui/surface: allocate shared memory on !win32
      
      Use qemu_memfd_alloc() to allocate the display surface memory, which
      will fallback on tmpfile/mmap() on systems without memfd, and allow to
      share the display with other processes.
      
      This is similar to how display memory is allocated on win32 since commit
      09b4c198 ("console/win32: allocate shareable display surface").
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-13-marcandre.lureau@redhat.com>
  
  commit 28a3ca04782c5b72b85e197ccfab287a66ce76cb
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:20 2024 +0400
  
      ui/dbus: add trace for can_share_map
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-12-marcandre.lureau@redhat.com>
  
  commit 2448ff392c46aec2835f5eb6214e73438bbecda5
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:19 2024 +0400
  
      ui/dbus: do not limit to one listener per connection / bus name
      
      This is an arbitrary limitation that doesn't concern QEMU directly and
      may make some use cases unnecessarily more complicated.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-11-marcandre.lureau@redhat.com>
  
  commit 1bfb726112ea4fda07c988f08df32d1eebb9abec
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:18 2024 +0400
  
      ui/pixman: generalize shared_image_destroy
      
      Learn to free memfd-allocated shared memory.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-10-marcandre.lureau@redhat.com>
  
  commit c90204b65400d77a918844889ad6789858406203
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:17 2024 +0400
  
      util/memfd: report potential errors on free
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-9-marcandre.lureau@redhat.com>
  
  commit dcf62fb6ce8f56709d74c9b79c15478b9f3ff266
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:16 2024 +0400
  
      ui/dbus: discard pending CursorDefine on new one
      
      Similar to scanout updates, let's discard pending cursor changes.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-8-marcandre.lureau@redhat.com>
  
  commit 6b9524dfa550e4ce66451e3bdfbe61f2a683fddc
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:15 2024 +0400
  
      ui/dbus: discard display messages on disable
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-7-marcandre.lureau@redhat.com>
  
  commit cf59889781297a5618f1735a5f31402caa806b42
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:14 2024 +0400
  
      ui/dbus: fix filtering all update messages
      
      Filtering pending messages when a new scanout is given shouldn't discard
      pending cursor changes, for example.
      
      Since filtering happens in a different thread, use atomic set/get.
      
      Fixes: fa88b85dea ("ui/dbus: filter out pending messages when scanout")
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-6-marcandre.lureau@redhat.com>
  
  commit 330ef31deb2e5461cff907488b710f5bd9cd2327
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:13 2024 +0400
  
      ui/win32: fix potential use-after-free with dbus shared memory
      
      DisplaySurface may be free before the pixman image is freed, since the
      image is refcounted and used by different objects, including pending
      dbus messages.
      
      Furthermore, setting the destroy function in
      create_displaysurface_from() isn't appropriate, as it may not be used,
      and may be overriden as in ramfb.
      
      Set the destroy function when the shared handle is set, use the HANDLE
      directly for destroy data, using a single common helper
      qemu_pixman_win32_image_destroy().
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-5-marcandre.lureau@redhat.com>
  
  commit 244d52ff736fefc3dd364ed091720aa896af306d
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:12 2024 +0400
  
      ui/dbus: fix leak on message filtering
      
      A filter function that wants to drop a message should return NULL, in
      which case it must also unref the message itself.
      
      Fixes: fa88b85de ("ui/dbus: filter out pending messages when scanout")
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-4-marcandre.lureau@redhat.com>
  
  commit 6d6e23361fc732e4fe36a8bc5873b85f264ed53a
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:11 2024 +0400
  
      hw/audio/hda: fix memory leak on audio setup
      
      When SET_STREAM_FORMAT is called, we should clear the existing setup.
      
      Factor out common function to close a stream.
      
      Direct leak of 144 byte(s) in 3 object(s) allocated from:
          #0 0x7f91d38f7350 in calloc (/lib64/libasan.so.8+0xf7350) (BuildId: a4ad7eb954b390cf00f07fa10952988a41d9fc7a)
          #1 0x7f91d2ab7871 in g_malloc0 (/lib64/libglib-2.0.so.0+0x64871) (BuildId: 36b60dbd02e796145a982d0151ce37202ec05649)
          #2 0x562fa2f447ee in timer_new_full /home/elmarco/src/qemu/include/qemu/timer.h:538
          #3 0x562fa2f4486f in timer_new /home/elmarco/src/qemu/include/qemu/timer.h:559
          #4 0x562fa2f448a9 in timer_new_ns /home/elmarco/src/qemu/include/qemu/timer.h:577
          #5 0x562fa2f47955 in hda_audio_setup ../hw/audio/hda-codec.c:490
          #6 0x562fa2f4897e in hda_audio_command ../hw/audio/hda-codec.c:605
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-3-marcandre.lureau@redhat.com>
  
  commit f27206ceedbe2efae37c8d143c5eb2db05251508
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:10 2024 +0400
  
      hw/audio/hda: free timer on exit
      
      Fixes: 280c1e1cd ("audio/hda: create millisecond timers that handle IO")
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-2-marcandre.lureau@redhat.com>


For bisection revision-tuple graph see:
   http://logs.test-lab.xenproject.org/osstest/results/bisect/qemu-mainline/test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict.debian-hvm-install.html
Revision IDs in each graph node refer, respectively, to the Trees above.

----------------------------------------
Running cs-bisection-step --graph-out=/home/logs/results/bisect/qemu-mainline/test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict.debian-hvm-install --summary-out=tmp/188250.bisection-summary --basis-template=187720 --blessings=real,real-bisect,real-retry qemu-mainline test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict debian-hvm-install
Searching for failure / basis pass:
 188186 fail [host=pinot1] / 188087 [host=nobling1] 188082 [host=septiner1] 188078 [host=debina0] 188075 [host=huxelrebe1] 188070 [host=albana1] 188064 [host=fiano0] 188058 [host=italia0] 188048 [host=albana0] 188036 [host=godello1] 188019 [host=huxelrebe0] 188005 [host=sabro0] 187999 [host=godello0] 187992 [host=pinot0] 187988 [host=rimava0] 187987 [host=italia1] 187983 [host=septiner0] 187978 [host=sabro1] 187965 [host=debina1] 187953 [host=nobling0] 187943 [host=rimava1] 187938 [host=debina0]\
  187928 [host=huxelrebe1] 187913 [host=albana1] 187903 ok.
Failure / basis pass flights: 188186 / 187903
(tree with no url: minios)
Tree: linux git://xenbits.xen.org/linux-pvops.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: ovmf git://xenbits.xen.org/osstest/ovmf.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu https://gitlab.com/qemu-project/qemu.git
Tree: seabios git://xenbits.xen.org/osstest/seabios.git
Tree: xen git://xenbits.xen.org/xen.git
Latest aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 e19cc32bce466fb1c175f7d44708c2ebb45802a7 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 95a16ee753d6da651fce8df876333bf7fcf134d9 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
Basis pass e526b12bf9169887f8cfe5afed2b10e56bdca4c3 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21e1fc5400c0d916ef9023a08b62eaf708727def 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3b14a767eaca3df5534a162851f04787b363670e 2424e4c04aa30d90e85073ea41d18a7845460783 457052167b4dbcda59e06300039302479cc1debf
Generating revisions with ./adhoc-revtuple-generator  git://xenbits.xen.org/linux-pvops.git#e526b12bf9169887f8cfe5afed2b10e56bdca4c3-aa4cd140bba57b7064b4c7a7141bebd336d32087 git://xenbits.xen.org/osstest/linux-firmware.git#c530a75c1e6a472b0eb9558310b518f0dfcd8860-c530a75c1e6a472b0eb9558310b518f0dfcd8860 git://xenbits.xen.org/osstest/ovmf.git#21e1fc5400c0d916ef9023a08b62eaf708727def-e19cc32bce466fb1c175f7d44708c2ebb45802a7 git://xenbits.xen.org/qemu-xen-traditional.git#3d273dd05e51e5a1ffba3d98c74\
 37ee84e8f8764-3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 https://gitlab.com/qemu-project/qemu.git#3b14a767eaca3df5534a162851f04787b363670e-95a16ee753d6da651fce8df876333bf7fcf134d9 git://xenbits.xen.org/osstest/seabios.git#2424e4c04aa30d90e85073ea41d18a7845460783-2424e4c04aa30d90e85073ea41d18a7845460783 git://xenbits.xen.org/xen.git#457052167b4dbcda59e06300039302479cc1debf-47990ecef286606794d607d4ca8703d71c98d659
Loaded 39972 nodes in revision graph
Searching for test results:
 188233 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 e19cc32bce466fb1c175f7d44708c2ebb45802a7 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 95a16ee753d6da651fce8df876333bf7fcf134d9 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188237 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 aa54f5be44be786636a5d51cc1612ad208a24849 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188242 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 35152940b78e478b97051a799cb6275ced03192e 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188243 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 aa54f5be44be786636a5d51cc1612ad208a24849 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188250 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 35152940b78e478b97051a799cb6275ced03192e 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 187903 pass e526b12bf9169887f8cfe5afed2b10e56bdca4c3 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21e1fc5400c0d916ef9023a08b62eaf708727def 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3b14a767eaca3df5534a162851f04787b363670e 2424e4c04aa30d90e85073ea41d18a7845460783 457052167b4dbcda59e06300039302479cc1debf
 187913 [host=albana1]
 187928 [host=huxelrebe1]
 187938 [host=debina0]
 187953 [host=nobling0]
 187943 [host=rimava1]
 187965 [host=debina1]
 187978 [host=sabro1]
 187983 [host=septiner0]
 187987 [host=italia1]
 187988 [host=rimava0]
 187992 [host=pinot0]
 187999 [host=godello0]
 188019 [host=huxelrebe0]
 188005 [host=sabro0]
 188036 [host=godello1]
 188048 [host=albana0]
 188058 [host=italia0]
 188064 [host=fiano0]
 188070 [host=albana1]
 188075 [host=huxelrebe1]
 188078 [host=debina0]
 188082 [host=septiner1]
 188087 [host=nobling1]
 188093 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 081cf576a226e70ce4134dda19baf977d0b8bc64 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 c155d13167c6ace099e351e28125f9eb3694ae27 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188100 pass e526b12bf9169887f8cfe5afed2b10e56bdca4c3 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21e1fc5400c0d916ef9023a08b62eaf708727def 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3b14a767eaca3df5534a162851f04787b363670e 2424e4c04aa30d90e85073ea41d18a7845460783 457052167b4dbcda59e06300039302479cc1debf
 188103 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 081cf576a226e70ce4134dda19baf977d0b8bc64 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 c155d13167c6ace099e351e28125f9eb3694ae27 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188104 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4de1797ff6ceb7387cdb967ec1fa0128624ff405 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188105 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 7e3b6d8063f245d27eecce5aabe624b5785f2a77 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188109 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 91d806917fd2be763f067a58ef05fadcf43efab1 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 ca9275a4b11aced3074219d1712e29fce5036f72 2424e4c04aa30d90e85073ea41d18a7845460783 bcce5a6b62761c8b678aebce33c55ea66f879f66
 188111 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 91d806917fd2be763f067a58ef05fadcf43efab1 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 6b7d2f6e1896fb675e8518ed61c792d4dd92e034 2424e4c04aa30d90e85073ea41d18a7845460783 bcce5a6b62761c8b678aebce33c55ea66f879f66
 188112 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 f962adc8a089949ecc730ba17f08234b52e3952d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 35ba77d2fcd10efd6db8318bbd4d21fa9402143b 2424e4c04aa30d90e85073ea41d18a7845460783 444cb9350f2c1cc202b6b86176ddd8e57525e2d9
 188115 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 f962adc8a089949ecc730ba17f08234b52e3952d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 8f3375434d45e56db51b5ecd4d8a929146ba5641 2424e4c04aa30d90e85073ea41d18a7845460783 444cb9350f2c1cc202b6b86176ddd8e57525e2d9
 188116 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 df884297fd57aac379d227925e27211e667974ee 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 7cca79fa52128054b02ecbea249aa51e1916ba72 2424e4c04aa30d90e85073ea41d18a7845460783 1223375d8b7faf0eab642834292bf4924e40f425
 188117 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 4f4673846fc9d6fc1c10a6c025da4739d872a6a0 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 72cb4806fdb0c5d7efca181dedfd46bed2acc9e7 2424e4c04aa30d90e85073ea41d18a7845460783 66878a8b7566e9a98d20b69ab95ddaffe1130683
 188101 fail irrelevant
 188118 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 2fdc39d09d49a57e8dc87022b1dedd958f8c8d6a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 423be09ab9492735924e73a2d36069784441ebc6 2424e4c04aa30d90e85073ea41d18a7845460783 d82e0e094e7a07353ba0fb35732724316c2ec2f6
 188120 pass e526b12bf9169887f8cfe5afed2b10e56bdca4c3 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21e1fc5400c0d916ef9023a08b62eaf708727def 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3b14a767eaca3df5534a162851f04787b363670e 2424e4c04aa30d90e85073ea41d18a7845460783 457052167b4dbcda59e06300039302479cc1debf
 188121 fail irrelevant
 188123 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 0bae161fed39d8996693e586b77f31094b61b9d7 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 764a6ee9feb428a9759eaa94673285fad2586f11 2424e4c04aa30d90e85073ea41d18a7845460783 b32d24bcd6b79bb9de5b92dc69642d0c863f0765
 188124 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 e530581ee06573fcf48c7f7a6c3f8ec6e5809243 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188126 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 232c3a848e8b291362e29835408011025031d88b 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188127 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 330ef31deb2e5461cff907488b710f5bd9cd2327 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188130 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 aa54f5be44be786636a5d51cc1612ad208a24849 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188133 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 dc43b18d2e1ed50e6c912427d5f7fbd2c62007bb 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188134 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 461a9252e249adab5f0bae3b9634be77dd5be17e 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188136 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 e34460c8b27d4f47b4f895e06955a254c5b0ac00 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188137 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 1bfb726112ea4fda07c988f08df32d1eebb9abec 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188138 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4cd78a3db2478d3c1527905a26c9d3fbee83ccac 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188122 fail irrelevant
 188139 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 081cf576a226e70ce4134dda19baf977d0b8bc64 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 1ba399406a8fa82ad24fd5208595ca429d2927ab 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188141 pass e526b12bf9169887f8cfe5afed2b10e56bdca4c3 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21e1fc5400c0d916ef9023a08b62eaf708727def 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3b14a767eaca3df5534a162851f04787b363670e 2424e4c04aa30d90e85073ea41d18a7845460783 457052167b4dbcda59e06300039302479cc1debf
 188143 fail irrelevant
 188145 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 8105ca851246338d58ee329d8471878023650b5a 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188146 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 f27206ceedbe2efae37c8d143c5eb2db05251508 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188147 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 ec818df0005d1598d249f0cfea557226b6ad89a6 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188149 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4cd78a3db2478d3c1527905a26c9d3fbee83ccac 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188150 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 081cf576a226e70ce4134dda19baf977d0b8bc64 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 005b6d511f23e0c2b69b4c7353defaa48c24853d 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188154 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 474dcfc0ab093043fee9952282bcab5f1dedc43a 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188155 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188157 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 6b9524dfa550e4ce66451e3bdfbe61f2a683fddc 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188159 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 5f899c34af1dbb0f621287faf9bcfb60fa237543 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188160 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 35152940b78e478b97051a799cb6275ced03192e 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188163 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 2b74dd918007d91f5fee94ad0034b5e7a30ed777 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188164 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 6ae8c5382b2396d394e135c2c6d3742d11c6d0c2 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188166 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 872e9581f705a98a26048180c454dedabc535b86 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188144 fail irrelevant
 188170 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 2351165f1b8252269a36d625823743d9f6c243b9 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188174 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188177 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 6d6e23361fc732e4fe36a8bc5873b85f264ed53a 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188183 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 dcf62fb6ce8f56709d74c9b79c15478b9f3ff266 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188185 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 2448ff392c46aec2835f5eb6214e73438bbecda5 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188187 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 c118c8eb3e63c02421e8a02e82ffab6fa8369301 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188191 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 1ff788db9781615be745671ebdb2eb82c137c5b8 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188195 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 aa54f5be44be786636a5d51cc1612ad208a24849 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 188198 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 d0f0cd5b1f7e9780753344548e17ad4df9fcf5d8 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188201 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 8db4e0f92e83fd80b6609439440b303ddded7ad8 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188203 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 effb0f7724bc317c1d4c13b92040ef1a022ab1a7 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188204 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 381d2c36e1242f849a55f4622e50b9a69cb92842 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188206 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 7d4da670ea7b3be1f8c3a8d6768f59c2c8d3752a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188208 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3860a2a8de56fad71db42f4ad120eb7eff03b51f 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188210 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 244d52ff736fefc3dd364ed091720aa896af306d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188212 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 cf59889781297a5618f1735a5f31402caa806b42 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188216 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 c90204b65400d77a918844889ad6789858406203 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188218 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 28a3ca04782c5b72b85e197ccfab287a66ce76cb 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188220 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3a9d38d31ea7bf99c62c8d97433baa85b3bdd5c9 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188221 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 48b7ef0f0fc3c3033797b67d1554987a516488f9 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188224 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 ab10297a4ab1dac64baf04ed66929bef60e67d2e 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188226 blocked aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4cd78a3db2478d3c1527905a26c9d3fbee83ccac 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 188186 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 e19cc32bce466fb1c175f7d44708c2ebb45802a7 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 95a16ee753d6da651fce8df876333bf7fcf134d9 2424e4c04aa30d90e85073ea41d18a7845460783 47990ecef286606794d607d4ca8703d71c98d659
 188231 pass e526b12bf9169887f8cfe5afed2b10e56bdca4c3 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21e1fc5400c0d916ef9023a08b62eaf708727def 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3b14a767eaca3df5534a162851f04787b363670e 2424e4c04aa30d90e85073ea41d18a7845460783 457052167b4dbcda59e06300039302479cc1debf
 188228 fail aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 35152940b78e478b97051a799cb6275ced03192e 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
Searching for interesting versions
 Result found: flight 187903 (pass), for basis pass
 Result found: flight 188186 (fail), for basis failure
 Repro found: flight 188231 (pass), for basis pass
 Repro found: flight 188233 (fail), for basis failure
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 aa54f5be44be786636a5d51cc1612ad208a24849 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 7e3b6d8063f245d27eecce5aabe624b5785f2a77 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 474dcfc0ab093043fee9952282bcab5f1dedc43a 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 2b74dd918007d91f5fee94ad0034b5e7a30ed777 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 d0f0cd5b1f7e9780753344548e17ad4df9fcf5d8 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 461a9252e249adab5f0bae3b9634be77dd5be17e 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 6ae8c5382b2396d394e135c2c6d3742d11c6d0c2 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 8db4e0f92e83fd80b6609439440b303ddded7ad8 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 8105ca851246338d58ee329d8471878023650b5a 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 872e9581f705a98a26048180c454dedabc535b86 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 effb0f7724bc317c1d4c13b92040ef1a022ab1a7 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 232c3a848e8b291362e29835408011025031d88b 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 381d2c36e1242f849a55f4622e50b9a69cb92842 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 d2a41d1a7a555e54336e03731c801eb93fba801d 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 2351165f1b8252269a36d625823743d9f6c243b9 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 7d4da670ea7b3be1f8c3a8d6768f59c2c8d3752a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 e34460c8b27d4f47b4f895e06955a254c5b0ac00 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 b38d263bca64bbba36d4b175ea0f5746b4c5604d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 e530581ee06573fcf48c7f7a6c3f8ec6e5809243 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3860a2a8de56fad71db42f4ad120eb7eff03b51f 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 f27206ceedbe2efae37c8d143c5eb2db05251508 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 6d6e23361fc732e4fe36a8bc5873b85f264ed53a 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 244d52ff736fefc3dd364ed091720aa896af306d 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 330ef31deb2e5461cff907488b710f5bd9cd2327 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 cf59889781297a5618f1735a5f31402caa806b42 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 6b9524dfa550e4ce66451e3bdfbe61f2a683fddc 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 dcf62fb6ce8f56709d74c9b79c15478b9f3ff266 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 c90204b65400d77a918844889ad6789858406203 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 1bfb726112ea4fda07c988f08df32d1eebb9abec 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 2448ff392c46aec2835f5eb6214e73438bbecda5 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 28a3ca04782c5b72b85e197ccfab287a66ce76cb 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 ec818df0005d1598d249f0cfea557226b6ad89a6 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 c118c8eb3e63c02421e8a02e82ffab6fa8369301 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3a9d38d31ea7bf99c62c8d97433baa85b3bdd5c9 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4de1797ff6ceb7387cdb967ec1fa0128624ff405 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 48b7ef0f0fc3c3033797b67d1554987a516488f9 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 5f899c34af1dbb0f621287faf9bcfb60fa237543 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 1ff788db9781615be745671ebdb2eb82c137c5b8 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 ab10297a4ab1dac64baf04ed66929bef60e67d2e 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 fcd9570c8d8164b42f907137a3a6e78977cc860a 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4cd78a3db2478d3c1527905a26c9d3fbee83ccac 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4cd78a3db2478d3c1527905a26c9d3fbee83ccac 2424e4c04aa30d90e85073ea41d18a7845460783 76a54badf890f56ff72644593c0fbc72138e13aa
 0 revisions at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 21767dcf4e04ade9e679f8562513da8ceedf19ec 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 4cd78a3db2478d3c1527905a26c9d3fbee83ccac 2424e4c04aa30d90e85073ea41d18a7845460783 542ac112fc68c66cfafc577e252404c21da4f75b
No revisions left to test, checking graph state.
 Result found: flight 188195 (pass), for last pass
 Result found: flight 188228 (fail), for first failure
 Repro found: flight 188237 (pass), for last pass
 Repro found: flight 188242 (fail), for first failure
 Repro found: flight 188243 (pass), for last pass
 Repro found: flight 188250 (fail), for first failure

*** Found and reproduced problem changeset ***

  Bug is in tree:  qemuu https://gitlab.com/qemu-project/qemu.git
  Bug introduced:  35152940b78e478b97051a799cb6275ced03192e
  Bug not present: aa54f5be44be786636a5d51cc1612ad208a24849
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/188250/


  commit 35152940b78e478b97051a799cb6275ced03192e
  Merge: aa54f5be44 4cd78a3db2
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   Mon Oct 14 17:05:25 2024 +0100
  
      Merge tag 'ui-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging
      
      UI-related fixes & shareable 2d memory with -display dbus
      
      # -----BEGIN PGP SIGNATURE-----
      #
      # iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmcNHtIcHG1hcmNhbmRy
      # ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5SYTD/9fRNrgnZIvIbIGf0kv
      # j3LguzwEsfn8eIUbJEIxtDnoS17zX1t981kP9J9ctUM6wnb0iQNYCXeTrF8Xrq0z
      # psiPhHGwPyWMdn9SWRfj597ShPn75z340Qve5GUm7clGu2KILh7TqqACH8LzaX+5
      # 6jqoZc3kqD+PYZHnYAi6v1YFfLIYfj0n6EaO/J4RRRZSrknpgct7jpmqL4wVzTIo
      # KYlG5afdUUfhmSIv5ZDpuuEJppdG74K2H+hJKDPIOOQ8/i/IU2EQPJ00ppiOPbET
      # nA0+piLGtHQwU24u5kDdbDlGL/y1KBKvGclOtzLQxWNStch5A6hqllNsuIg+0dJW
      # MRO2WZ8C7P7LD1eGmtYVZF/NzjnlTW/hbM5i0poPqhfcwbVmlIXjDs8GUfMGfINr
      # 1MVFGNjxfgadYZ1f6Q/JU/KWPJMR4Ik3C/SmGrRBlfra5YIts0ItDeGgfQIW9JGb
      # 1CpOng6/3SvW01B6psrPL+wP+6PsK333KPIA77KafOEMyOyEyuSOUrTShXbyXBHc
      # r/nLbWw2lZs4U0kgGRQ21+R3huTyw8LnikYpCnGwTWGCpb9NDFYg7z3CRrZW0hWx
      # DIWfN7M6YymeYygPUV9Wjo6i4yq4QqWPp7/QXtkSdX3v44/D7NWytKGST+Hwjkpa
      # h6U2vrsLdep2m47bnX/dEEP61g==
      # =xdt/
      # -----END PGP SIGNATURE-----
      # gpg: Signature made Mon 14 Oct 2024 14:38:26 BST
      # gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
      # gpg:                issuer "marcandre.lureau@redhat.com"
      # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full]
      # gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full]
      # Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5
      
      * tag 'ui-pull-request' of https://gitlab.com/marcandre.lureau/qemu:
        audio/pw: Report more accurate error when connecting to PipeWire fails
        tests: add basic -display dbus Map.Unix test
        ui: refactor using a common qemu_pixman_shareable
        virtio-gpu: allocate shareable 2d resources on !win32
        ui/dbus: implement Unix.Map
        ui/dbus: add Listener.Unix.Map interface XML
        ui/dbus: make Listener.Win32.Map win32-specific
        meson: find_program('gdbus-codegen') directly
        ui/surface: allocate shared memory on !win32
        ui/dbus: add trace for can_share_map
        ui/dbus: do not limit to one listener per connection / bus name
        ui/pixman: generalize shared_image_destroy
        util/memfd: report potential errors on free
        ui/dbus: discard pending CursorDefine on new one
        ui/dbus: discard display messages on disable
        ui/dbus: fix filtering all update messages
        ui/win32: fix potential use-after-free with dbus shared memory
        ui/dbus: fix leak on message filtering
        hw/audio/hda: fix memory leak on audio setup
        hw/audio/hda: free timer on exit
      
      Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  
  commit 4cd78a3db2478d3c1527905a26c9d3fbee83ccac
  Author: Michal Privoznik <mprivozn@redhat.com>
  Date:   Wed Sep 18 10:17:06 2024 +0200
  
      audio/pw: Report more accurate error when connecting to PipeWire fails
      
      According to its man page [1], pw_context_connect() sets errno on
      failure:
      
        Returns a Core on success or NULL with errno set on error.
      
      It may be handy to see errno when figuring out why PipeWire
      failed to connect. That leaves us with just one possible path to
      reach 'fail_error' label which is then moved to that path and
      also its error message is adjusted slightly.
      
      1: https://docs.pipewire.org/group__pw__core.html#ga5994e3a54e4ec718094ca02a1234815b
      
      Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
      Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
      Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Message-ID: <3a78811ad5b0e87816b7616ab21d2eeef00b9c52.1726647033.git.mprivozn@redhat.com>
  
  commit ab10297a4ab1dac64baf04ed66929bef60e67d2e
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:28 2024 +0400
  
      tests: add basic -display dbus Map.Unix test
      
      Only check we eventually get a shared memory scanout.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-20-marcandre.lureau@redhat.com>
  
  commit 1ff788db9781615be745671ebdb2eb82c137c5b8
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:27 2024 +0400
  
      ui: refactor using a common qemu_pixman_shareable
      
      Use a common shareable type for win32 & unix, and helper functions.
      This simplify the code as it avoids a lot of #ifdef'ery.
      
      Note: if it helps review, commits could be reordered to introduce the
      common type before introducing shareable memory for unix.
      
      Suggested-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-19-marcandre.lureau@redhat.com>
  
  commit 5f899c34af1dbb0f621287faf9bcfb60fa237543
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:26 2024 +0400
  
      virtio-gpu: allocate shareable 2d resources on !win32
      
      Similar to what was done in commit 9462ff46 ("virtio-gpu/win32: allocate
      shareable 2d resources/images") for win32, allocate resource memory with
      memfd, so the associated display surface memory can be shared with a
      different process.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-18-marcandre.lureau@redhat.com>
  
  commit 48b7ef0f0fc3c3033797b67d1554987a516488f9
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:25 2024 +0400
  
      ui/dbus: implement Unix.Map
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-17-marcandre.lureau@redhat.com>
  
  commit 4de1797ff6ceb7387cdb967ec1fa0128624ff405
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:24 2024 +0400
  
      ui/dbus: add Listener.Unix.Map interface XML
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-16-marcandre.lureau@redhat.com>
  
  commit 3a9d38d31ea7bf99c62c8d97433baa85b3bdd5c9
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:23 2024 +0400
  
      ui/dbus: make Listener.Win32.Map win32-specific
      
      There are no types specific to Windows, so the code compiles on other
      platforms, but its useless on !Windows.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-15-marcandre.lureau@redhat.com>
  
  commit c118c8eb3e63c02421e8a02e82ffab6fa8369301
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:22 2024 +0400
  
      meson: find_program('gdbus-codegen') directly
      
      gio.pc variable is a bit bogus in context of cross-compilation, since it
      contains an absolute path, relative to the sysroot directory. On Fedora, it ends
      up as:
      /usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig/usr/bin/gdbus-codegen
      path which does not exist because it is not shipped by Fedora mingw
      packages.
      
      Instead, we can rely on meson find_program() behaviour to do a better
      job based on its search order and capabilities.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-14-marcandre.lureau@redhat.com>
  
  commit ec818df0005d1598d249f0cfea557226b6ad89a6
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:21 2024 +0400
  
      ui/surface: allocate shared memory on !win32
      
      Use qemu_memfd_alloc() to allocate the display surface memory, which
      will fallback on tmpfile/mmap() on systems without memfd, and allow to
      share the display with other processes.
      
      This is similar to how display memory is allocated on win32 since commit
      09b4c198 ("console/win32: allocate shareable display surface").
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-13-marcandre.lureau@redhat.com>
  
  commit 28a3ca04782c5b72b85e197ccfab287a66ce76cb
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:20 2024 +0400
  
      ui/dbus: add trace for can_share_map
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-12-marcandre.lureau@redhat.com>
  
  commit 2448ff392c46aec2835f5eb6214e73438bbecda5
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:19 2024 +0400
  
      ui/dbus: do not limit to one listener per connection / bus name
      
      This is an arbitrary limitation that doesn't concern QEMU directly and
      may make some use cases unnecessarily more complicated.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-11-marcandre.lureau@redhat.com>
  
  commit 1bfb726112ea4fda07c988f08df32d1eebb9abec
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:18 2024 +0400
  
      ui/pixman: generalize shared_image_destroy
      
      Learn to free memfd-allocated shared memory.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-10-marcandre.lureau@redhat.com>
  
  commit c90204b65400d77a918844889ad6789858406203
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:17 2024 +0400
  
      util/memfd: report potential errors on free
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-9-marcandre.lureau@redhat.com>
  
  commit dcf62fb6ce8f56709d74c9b79c15478b9f3ff266
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:16 2024 +0400
  
      ui/dbus: discard pending CursorDefine on new one
      
      Similar to scanout updates, let's discard pending cursor changes.
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-8-marcandre.lureau@redhat.com>
  
  commit 6b9524dfa550e4ce66451e3bdfbe61f2a683fddc
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:15 2024 +0400
  
      ui/dbus: discard display messages on disable
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-7-marcandre.lureau@redhat.com>
  
  commit cf59889781297a5618f1735a5f31402caa806b42
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:14 2024 +0400
  
      ui/dbus: fix filtering all update messages
      
      Filtering pending messages when a new scanout is given shouldn't discard
      pending cursor changes, for example.
      
      Since filtering happens in a different thread, use atomic set/get.
      
      Fixes: fa88b85dea ("ui/dbus: filter out pending messages when scanout")
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-6-marcandre.lureau@redhat.com>
  
  commit 330ef31deb2e5461cff907488b710f5bd9cd2327
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:13 2024 +0400
  
      ui/win32: fix potential use-after-free with dbus shared memory
      
      DisplaySurface may be free before the pixman image is freed, since the
      image is refcounted and used by different objects, including pending
      dbus messages.
      
      Furthermore, setting the destroy function in
      create_displaysurface_from() isn't appropriate, as it may not be used,
      and may be overriden as in ramfb.
      
      Set the destroy function when the shared handle is set, use the HANDLE
      directly for destroy data, using a single common helper
      qemu_pixman_win32_image_destroy().
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-5-marcandre.lureau@redhat.com>
  
  commit 244d52ff736fefc3dd364ed091720aa896af306d
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:12 2024 +0400
  
      ui/dbus: fix leak on message filtering
      
      A filter function that wants to drop a message should return NULL, in
      which case it must also unref the message itself.
      
      Fixes: fa88b85de ("ui/dbus: filter out pending messages when scanout")
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-4-marcandre.lureau@redhat.com>
  
  commit 6d6e23361fc732e4fe36a8bc5873b85f264ed53a
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:11 2024 +0400
  
      hw/audio/hda: fix memory leak on audio setup
      
      When SET_STREAM_FORMAT is called, we should clear the existing setup.
      
      Factor out common function to close a stream.
      
      Direct leak of 144 byte(s) in 3 object(s) allocated from:
          #0 0x7f91d38f7350 in calloc (/lib64/libasan.so.8+0xf7350) (BuildId: a4ad7eb954b390cf00f07fa10952988a41d9fc7a)
          #1 0x7f91d2ab7871 in g_malloc0 (/lib64/libglib-2.0.so.0+0x64871) (BuildId: 36b60dbd02e796145a982d0151ce37202ec05649)
          #2 0x562fa2f447ee in timer_new_full /home/elmarco/src/qemu/include/qemu/timer.h:538
          #3 0x562fa2f4486f in timer_new /home/elmarco/src/qemu/include/qemu/timer.h:559
          #4 0x562fa2f448a9 in timer_new_ns /home/elmarco/src/qemu/include/qemu/timer.h:577
          #5 0x562fa2f47955 in hda_audio_setup ../hw/audio/hda-codec.c:490
          #6 0x562fa2f4897e in hda_audio_command ../hw/audio/hda-codec.c:605
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-3-marcandre.lureau@redhat.com>
  
  commit f27206ceedbe2efae37c8d143c5eb2db05251508
  Author: Marc-André Lureau <marcandre.lureau@redhat.com>
  Date:   Tue Oct 8 16:50:10 2024 +0400
  
      hw/audio/hda: free timer on exit
      
      Fixes: 280c1e1cd ("audio/hda: create millisecond timers that handle IO")
      
      Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
      Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
      Message-ID: <20241008125028.1177932-2-marcandre.lureau@redhat.com>

Revision graph left in /home/logs/results/bisect/qemu-mainline/test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict.debian-hvm-install.{dot,ps,png,html,svg}.
----------------------------------------
188250: tolerable ALL FAIL

flight 188250 qemu-mainline real-bisect [real]
http://logs.test-lab.xenproject.org/osstest/logs/188250/

Failures :-/ but no regressions.

Tests which did not succeed,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail baseline untested


jobs:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        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



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:18:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:18:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821827.1235786 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1lvb-00077z-Pp; Fri, 18 Oct 2024 12:17:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821827.1235786; Fri, 18 Oct 2024 12:17: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 1t1lvb-00077s-MX; Fri, 18 Oct 2024 12:17:59 +0000
Received: by outflank-mailman (input) for mailman id 821827;
 Fri, 18 Oct 2024 12:17: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 1t1lvb-00077g-8A; Fri, 18 Oct 2024 12:17: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 1t1lvb-0003bv-5d; Fri, 18 Oct 2024 12:17: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 1t1lva-0005lt-SI; Fri, 18 Oct 2024 12:17:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1lva-0005fn-Rj; Fri, 18 Oct 2024 12: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=+US1yzW9tYWe/AP2MaOXb1k2qhSeojls++u4PAfc3iY=; b=H9WZEnz+FCQCiokSVbdV9bv21n
	XXM8lOSlVCi0RsjnkG/4zWGz3q7dm/6iJckJRunchCA3S6aCp1kVfgmEfCngW8/fLhroWZIPANNpC
	kLdVDNZ2AfSpjuTe7OJ/ubgnO0EwrNGRV3UZWTtu+OZOOfsNwa81Qg739JbPo8MTShoI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188241-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188241: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=6e197a8ba5e349e511850fc52457992de88c8795
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 12:17:58 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 6e197a8ba5e349e511850fc52457992de88c8795
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    1 days
Failing since        188156  2024-10-17 09:14:11 Z    1 days    6 attempts
Testing same since   188188  2024-10-17 17:12:12 Z    0 days    4 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:29:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:29:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821840.1235796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1m6P-0004eP-PL; Fri, 18 Oct 2024 12:29:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821840.1235796; Fri, 18 Oct 2024 12: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 1t1m6P-0004eI-Mc; Fri, 18 Oct 2024 12:29:09 +0000
Received: by outflank-mailman (input) for mailman id 821840;
 Fri, 18 Oct 2024 12:29: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1m6O-0004eA-F4
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:29:08 +0000
Received: from mail-oo1-xc32.google.com (mail-oo1-xc32.google.com
 [2607:f8b0:4864:20::c32])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 90b90871-8d4c-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 14:29:06 +0200 (CEST)
Received: by mail-oo1-xc32.google.com with SMTP id
 006d021491bc7-5e56759e6d7so1124947eaf.3
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 05:29:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90b90871-8d4c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729254545; x=1729859345; 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=AbpWdiQpGE3Bskr7WxrRo5EpezqbLDqpGCJ8x6fw77M=;
        b=L7qWdRHlm9dZ0PG9DrzMc+bF6v5sjjcVjSuAh9jywt1/3cA1s0t8BF7flYHNoup3Bp
         zbsIxi5iaWA6SFumN2+Ajtir6loTlOpMaFQkE9q+VQSx+MNYApks9z/Drw8vz9rCS1az
         Tn5kFBp9Nw2qIc7tmMyMZzsZGE2LGj3lOAON8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729254545; x=1729859345;
        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=AbpWdiQpGE3Bskr7WxrRo5EpezqbLDqpGCJ8x6fw77M=;
        b=KetE18ED8rvfdRAcENZj7NpWoehVxKqxqhMNXn8V1Y1DK7ktPUshCgxsvN3+pFNNiy
         tk8yiCUEu0tRWKCk3IRe8ienpbpKDN9qEq8w+/d29bbW7QsFVgh7D5hwX85ePZQRYgrc
         gb+B07fBpHnLd7zJzHdsgkz2qW3DfYLXGvIh64Xa6re8mwsssKtrAJeAniSHivg9X832
         yzoG03EOOTUyT4iVsvciKWUbySpl9pVFhuOWqw4gguN+7OrfrxV6szyPaiO6PsEX+ci9
         qsMxPa9HSeFEoeAJX2QP5HKCvqZZ+b7bGjmVT7vtMIyqMRHh3cl0XddWm5jKRFPjv90Q
         Ix1A==
X-Gm-Message-State: AOJu0YwFob5qQXDFDG0Q4YDzHun9UYdKb/s+ZDy5PqyRuZLh//EyIn90
	ni1xzd8ovXVzR4fD5BA6idcvEhqH7vjRY5x7GrRtxe4RCWDddjmghukWgBop9HTLI5I7iT/z02h
	/G7AQwA5Gbuze+4lzKAjkPqnLlDaod7UVTmE0NQ==
X-Google-Smtp-Source: AGHT+IGo7na0RQQcXn7k9N5A9LHNzzvqDzEzR+XST8CqzPnsOzsEPpQmrgiStEC6ao1Ir2kKrRJdP/rmwGUqVmTzZIk=
X-Received: by 2002:a05:6820:82c:b0:5e1:c19d:3f4e with SMTP id
 006d021491bc7-5eb8b7e5be0mr1828460eaf.8.1729254545218; Fri, 18 Oct 2024
 05:29:05 -0700 (PDT)
MIME-Version: 1.0
References: <20240926095133.483619-1-frediano.ziglio@cloud.com>
 <CACHz=ZgwcejTF0Yz5vchVy18Hn15LYp_R8Y1LqOA=qAHK-HRiA@mail.gmail.com>
 <CACHz=Zh9r7xFSsq3vxdBfss1ozJC1neoTFs4Dvpw+xeQiUFTsg@mail.gmail.com> <6d5bad39-1a20-4cef-a1c5-aaa99c501941@xen.org>
In-Reply-To: <6d5bad39-1a20-4cef-a1c5-aaa99c501941@xen.org>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 13:28:54 +0100
Message-ID: <CACHz=ZhGUG8tihk6vVTLk6fJOe1mFk=Mep-YOB0ci46JsKJKEw@mail.gmail.com>
Subject: Re: [PATCH] Update deprecated SPDX license identifiers
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, 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>, 
	Ross Lagerwall <ross.lagerwall@citrix.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>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, 
	Paul Durrant <paul@xen.org>, Dario Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>, 
	George Dunlap <gwd@xenproject.org>, Doug Goldstein <cardoe@cardoe.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 18, 2024 at 1:11=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
>
> Hi Frediano,
>
> On 18/10/2024 13:07, Frediano Ziglio wrote:
> > On Fri, Oct 4, 2024 at 9:08=E2=80=AFAM Frediano Ziglio
> > <frediano.ziglio@cloud.com> wrote:
> >>
> >> On Thu, Sep 26, 2024 at 10:51=E2=80=AFAM Frediano Ziglio
> >> <frediano.ziglio@cloud.com> wrote:
> >>>
> >>> As specified in LICENSES/GPL-2.0:
> >>> - GPL-2.0 -> GPL-2.0-only;
> >>> - GPL-2.0+ -> GPL-2.0-or-later.
> >>>
> >>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> >>
> >> ping
> >>
> >
> > ping
>
> Please try to be more specific.
>
> I see you already have an ack from Stefano (which would cover Arm +
> Common). What else are you missing? Is it committing? Do you need
> someone else to ack? If the latter, then please mention who you think
> need to ack...
>
> Cheers,
>
> --
> Julien Grall
>

Hi,
   I'm not a mind reader, so I don't know what is missing.
It's a style change with some updates which has been acked, so I would
expect it to be merged or people tell me what is missing.

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:43:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:43:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821852.1235806 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1mJu-0003Do-TV; Fri, 18 Oct 2024 12:43:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821852.1235806; Fri, 18 Oct 2024 12:43: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 1t1mJu-0003Dh-Qq; Fri, 18 Oct 2024 12:43:06 +0000
Received: by outflank-mailman (input) for mailman id 821852;
 Fri, 18 Oct 2024 12:43: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1mJt-0003Db-Ai
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:43:05 +0000
Received: from mail-oo1-xc32.google.com (mail-oo1-xc32.google.com
 [2607:f8b0:4864:20::c32])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 838e9299-8d4e-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 14:43:03 +0200 (CEST)
Received: by mail-oo1-xc32.google.com with SMTP id
 006d021491bc7-5eb6981dfd4so1077327eaf.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 05:43:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 838e9299-8d4e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729255382; x=1729860182; 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=g7jhY+MTXbNLwrkLEL0/wm7GDbSFjVkqyXX0cDg5mQA=;
        b=aiwrz42xemRn2Eq3QMDb5O4JOHDrxQqgN+mf6KM3FbSBpoCxUNvVZlmjs+nC6wILzV
         eAB9u19E7eSeHeTZ85H/2yr3IWPe0xiOjIoOjkyQcBNalnjk40dwPZ4j+QKR424XUYBf
         Rpr3wnzzCxpA4aNOdgWhHkehQCp4w+3UKMi08=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729255382; x=1729860182;
        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=g7jhY+MTXbNLwrkLEL0/wm7GDbSFjVkqyXX0cDg5mQA=;
        b=bWpNk374+ZGvpVCzK84soT0lEkB3CfBq2B1v4WH9NFEaoEVg2TdIng5XGrpw1+3h4x
         SSzwV4wq7pZawKAHXyv+O97xuVBD15h79WE4J9DK6VLgFvmSVCHt4qrFoc6gS0lIVFiL
         +ZGD1tEyNiz2DJAoSy1pS/1LU+2J/kogZi+adK18UI+64Uy7osk4gNJlgkMfKbSEhP3u
         hKS/K4vrbU8fI2fA7MhmillIsfDGqUu45gcC5l7JSIOr2t1b1h8RAMMEKyfosNyW5UK4
         6B0XLolxIr+OnctCqZy+x8x3lPalwiffy9cQf/R+ghcLETBKbUExKYOU3SgHVNeQHfAC
         zIFw==
X-Gm-Message-State: AOJu0YyFubinyq4QTDVtW18G6vLDO9AZjmIsIV1Rn+t0Z2TSetCaMAR9
	fAA8pLqKa1NC5NBUagMrHfTmzEqN2pDKm6ssud1pNW4/y/kqtTnSqYAA0h99W6vPmGL5GBVeBE9
	hoGpJNVlWGGJeyXaFI2h/zk4EF2PfCBxvugz4XA==
X-Google-Smtp-Source: AGHT+IE36QNrX5h5DfwiOih3Vytnd0K/5Z+KkG+Pq0mTYnz7BYWb/2XVjpKKJP7SDi7a3e2woQoYYgZPoQSQrTGDSuk=
X-Received: by 2002:a05:6820:822:b0:5e5:7086:ebed with SMTP id
 006d021491bc7-5eb8b6cb95fmr1498354eaf.7.1729255382160; Fri, 18 Oct 2024
 05:43:02 -0700 (PDT)
MIME-Version: 1.0
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com> <ZxE0slUwETDK83PD@l14>
In-Reply-To: <ZxE0slUwETDK83PD@l14>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 13:42:51 +0100
Message-ID: <CACHz=ZjCQUKqRbwNPGR8JDVV=Cy07zWisn5G7OgmQiaEBQnpQw@mail.gmail.com>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: Anthony PERARD <anthony.perard@vates.tech>
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>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 17, 2024 at 5:00=E2=80=AFPM Anthony PERARD
<anthony.perard@vates.tech> wrote:
>
> On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> > +$(obj)/build32.base.lds: AFLAGS-y +=3D -DGAP=3D$(text_gap) -DTEXT_DIFF=
=3D$(text_diff)
> > +$(obj)/build32.offset.lds: AFLAGS-y +=3D -DGAP=3D$(text_gap) -DTEXT_DI=
FF=3D$(text_diff) -DFINAL
>
> I was somehow expecting "base" and "offset" to be the other way around,

That's weird. I mean, the "base" uses a GAP and TEXT_START of 0 while
for "offset" they are not zero adding some offset to the code/data.

> but that's fine. And by the way, -DFINAL cancel changes to GAP and
> TEXT_DIFF ;-).
>

Yes, and potentially the first like added above can be removed. On the
other hand, they are values used for the algorithm despite them being
used in some cases or not.

> But overall, the changes looks nice as is,
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
>
> Thanks,
>
Thanks,

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:48:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:48:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821860.1235815 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1mPL-0008Fe-Ih; Fri, 18 Oct 2024 12:48:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821860.1235815; Fri, 18 Oct 2024 12:48: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 1t1mPL-0008FX-FX; Fri, 18 Oct 2024 12:48:43 +0000
Received: by outflank-mailman (input) for mailman id 821860;
 Fri, 18 Oct 2024 12:48: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1mPK-0008FO-4u
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:48:42 +0000
Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com
 [2607:f8b0:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4c1aa035-8d4f-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 14:48:39 +0200 (CEST)
Received: by mail-oi1-x236.google.com with SMTP id
 5614622812f47-3e6010a3bbfso551792b6e.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 05:48:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c1aa035-8d4f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729255718; x=1729860518; 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=i4VdeTmbrICVlOel0MWaDhEqdpbnLSshtNF4xIcqBgA=;
        b=cFTSVNqlrZVbQc2PFZoFxa0mUQvMjpRfuJ1HXUuMxMspUMYLDn4VCR+T89JyonoI+E
         +FbStPxF9FrqUmRQNT0VJN7+dJGySlqnKAzjkowzNltQ3iwCsL8avCgxrGpVA0fqvWJv
         wHTkXez7ZKLY4eAWI5HXgzk/SF1d2aT8tBrqY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729255718; x=1729860518;
        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=i4VdeTmbrICVlOel0MWaDhEqdpbnLSshtNF4xIcqBgA=;
        b=VtKucVBokJuWGvDjRvfIIXsPrm9elhB46ZWF2UoZ10okmDmJPt8wYDX3Qo+F65FlwC
         ItyyUFyCpUr2pvs8EqVHT0zBqidpkEzu4fX47a7SST7UalNaNY5o18PN6xQV8pDESzxc
         +8NO1zUGrmYCw21IEmXO4C4UUwENlamSzgam1x53vK4v0VuiotM29do8fRb6i6TdmdPq
         GbEacV7rRoxAhAjiCBDpMufAJSw90PkmdU7VMXUEW2e1fhmdZIRSxlV1Voh92sTbMYoj
         aP0cDsI1k5fxF6oieM1BoRjSKc9PpzPgL87TfHaiWtySsPfdJFodEWruFrAG0xu2niOx
         +XvA==
X-Gm-Message-State: AOJu0YyznWkuV1ALKQ8nGoH7q39UgTjCXWfZ1AUSib17uOpEvOpwb4Bw
	KE1THIBLxCIFDweuD4ArbGon4qC2VsRBvvz8m9f8txjmcMXUBBa1K5b+er1gHiBeaVnkr2kj0QE
	yycS+czec0L3rXAzW7ul4KI0o9MgQAQtXxusHlA==
X-Google-Smtp-Source: AGHT+IEyGI4tT33pvobv6qms9ch0EkYFcgXsN7HUv3fN06sNLxLdhW5n+9oDgoST7v7sa+XvDXy+pmzzaMfgZ9PzCvw=
X-Received: by 2002:a05:6808:15a6:b0:3e5:ff2b:8e78 with SMTP id
 5614622812f47-3e602da2a47mr2380272b6e.31.1729255718355; Fri, 18 Oct 2024
 05:48:38 -0700 (PDT)
MIME-Version: 1.0
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com> <ZxJJZvOCQLzU_Q5s@macbook.local>
In-Reply-To: <ZxJJZvOCQLzU_Q5s@macbook.local>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 13:48:27 +0100
Message-ID: <CACHz=Zif6tirzF3QSLYLOvDFuaE3o9=Cu+ybm4ns7vNkAKCROg@mail.gmail.com>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, 
	Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 18, 2024 at 12:41=E2=80=AFPM Roger Pau Monn=C3=A9 <roger.pau@ci=
trix.com> wrote:
>
> On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> > The current method to include 32 bit C boot code is:
> > - compile each function we want to use into a separate object file;
> > - each function is compiled with -fpic option;
> > - convert these object files to binary files. This operation removes GO=
P
> >   which we don't want in the executable;
> > - a small assembly part in each file add the entry point;
> > - code can't have external references, all possible variables are passe=
d
> >   by value or pointer;
> > - include these binary files in head.S.
> >
> > There are currently some limitations:
> > - code is compiled separately, it's not possible to share a function
> >   (like memcpy) between different functions to use;
> > - although code is compiled with -fpic there's no certainty there are
> >   no relocations, specifically data ones. This can lead into hard to
> >   find bugs;
> > - it's hard to add a simple function;
> > - having to pass external variables makes hard to do multiple things
> >   otherwise functions would require a lot of parameters so code would
> >   have to be split into multiple functions which is not easy.
> >
> > Current change extends the current process:
> > - all object files are linked together before getting converted making
> >   possible to share code between the function we want to call;
> > - a single object file is generated with all functions to use and
> >   exported symbols to easily call;
> > - variables to use are declared in linker script and easily used inside
> >   C code. Declaring them manually could be annoying but makes also
> >   easier to check them. Using external pointers can be still an issue i=
f
> >   they are not fixed. If an external symbol is not declared this gives =
a
> >   link error.
> >
> > Some details of the implementation:
> > - C code is compiled with -fpic flags (as before);
> > - object files from C code are linked together;
> > - the single bundled object file is linked with 2 slightly different
> >   script files to generate 2 bundled object files;
> > - the 2 bundled object files are converted to binary removing the need
> >   for global offset tables;
> > - a Python script is used to generate assembly source from the 2
> >   binaries;
> > - the single assembly file is compiled to generate final bundled object
> >   file;
> > - to detect possible unwanted relocation in data/code code is generated
> >   with different addresses. This is enforced starting .text section at
> >   different positions and adding a fixed "gap" at the beginning.
> >   This makes sure code and data is position independent;
> > - to detect used symbols in data/code symbols are placed in .text
> >   section at different offsets (based on the line in the linker script)=
.
> >   This is needed as potentially a reference to a symbol is converted to
> >   a reference to the containing section so multiple symbols could be
> >   converted to reference to same symbol (section name) and we need to
> >   distinguish them;
> > - --orphan-handling=3Derror option to linker is used to make sure we
> >   account for all possible sections from C code;
> >
> > Current limitations:
> > - the main one is the lack of support for 64 bit code. It would make
> >   sure that even the code used for 64 bit (at the moment EFI code) is
> >   code and data position independent. We cannot assume that code that
> >   came from code compiled for 32 bit and compiled for 64 bit is code an=
d
> >   data position independent, different compiler options lead to
> >   different code/data.
> >
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > ---
> > Changes since v2:
> > - removed W^X limitation, allowing data;
> > - added some comments to python script;
> > - added extension to python script;
> > - added header to generated assembly code from python script;
> > - added starting symbol to generated assembly code from python script
> >   to make disassembly more clear;
> > - other minor style changes to python script.
> >
> > Changes since v4:
> > - add build32.final.lds build32.other.lds to targets macro;
> > - place some comments over a rule, not inside;
> > - simplified linking and producing binary rule;
> > - renamed built_in_32 to built-in-32, coding style;
> > - fix minor indentation;
> > - put magic numbers in Makefile and propagate them;
> > - minor variable cleanups in Python script;
> > - add dependency to Python script.
> >
> > Changes since v5:
> > - renamed "other" and "final" phases to "base" and "offset";
> > - use if_changed macro to generate built-in-32.S.
> > ---
> >  xen/arch/x86/boot/.gitignore                  |   5 +-
> >  xen/arch/x86/boot/Makefile                    |  47 +++-
> >  .../x86/boot/{build32.lds =3D> build32.lds.S}   |  35 ++-
> >  xen/arch/x86/boot/cmdline.c                   |  12 -
> >  xen/arch/x86/boot/head.S                      |  12 -
> >  xen/arch/x86/boot/reloc.c                     |  14 --
> >  xen/tools/combine_two_binaries.py             | 220 ++++++++++++++++++
> >  7 files changed, 292 insertions(+), 53 deletions(-)
> >  rename xen/arch/x86/boot/{build32.lds =3D> build32.lds.S} (70%)
> >  create mode 100755 xen/tools/combine_two_binaries.py
> >
> > diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignor=
e
> > index a379db7988..7e85549751 100644
> > --- a/xen/arch/x86/boot/.gitignore
> > +++ b/xen/arch/x86/boot/.gitignore
> > @@ -1,3 +1,4 @@
> >  /mkelf32
> > -/*.bin
> > -/*.lnk
> > +/build32.*.lds
> > +/built-in-32.*.bin
> > +/built-in-32.*.map
> > diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
> > index 1199291d2b..5da19501be 100644
> > --- a/xen/arch/x86/boot/Makefile
> > +++ b/xen/arch/x86/boot/Makefile
> > @@ -1,4 +1,5 @@
> >  obj-bin-y +=3D head.o
> > +obj-bin-y +=3D built-in-32.o
> >
> >  obj32 :=3D cmdline.32.o
> >  obj32 +=3D reloc.32.o
> > @@ -9,9 +10,6 @@ targets   +=3D $(obj32)
> >
> >  obj32 :=3D $(addprefix $(obj)/,$(obj32))
> >
> > -$(obj)/head.o: AFLAGS-y +=3D -Wa$(comma)-I$(obj)
> > -$(obj)/head.o: $(obj32:.32.o=3D.bin)
> > -
> >  CFLAGS_x86_32 :=3D $(subst -m64,-m32 -march=3Di686,$(XEN_TREEWIDE_CFLA=
GS))
> >  $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
> >  CFLAGS_x86_32 +=3D -Werror -fno-builtin -g0 -msoft-float -mregparm=3D3
> > @@ -25,14 +23,47 @@ $(obj32): XEN_CFLAGS :=3D $(CFLAGS_x86_32) -fpic
> >  $(obj)/%.32.o: $(src)/%.c FORCE
> >       $(call if_changed_rule,cc_o_c)
> >
> > +orphan-handling-$(call ld-option,--orphan-handling=3Derror) :=3D --orp=
han-handling=3Derror
> >  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) :=3D --no-warn-rw=
x-segments
> >  LDFLAGS_DIRECT +=3D $(LDFLAGS_DIRECT-y)
> >  LD32 :=3D $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
> >
> > -%.bin: %.lnk
> > -     $(OBJCOPY) -j .text -O binary $< $@
> > +text_gap :=3D 0x010200
> > +text_diff :=3D 0x408020
> > +
> > +$(obj)/build32.base.lds: AFLAGS-y +=3D -DGAP=3D$(text_gap) -DTEXT_DIFF=
=3D$(text_diff)
> > +$(obj)/build32.offset.lds: AFLAGS-y +=3D -DGAP=3D$(text_gap) -DTEXT_DI=
FF=3D$(text_diff) -DFINAL
> > +$(obj)/build32.base.lds $(obj)/build32.offset.lds: $(src)/build32.lds.=
S FORCE
> > +     $(call if_changed_dep,cpp_lds_S)
> > +
> > +targets +=3D build32.offset.lds build32.base.lds
> > +
> > +# link all 32bit objects together
> > +$(obj)/built-in-32.tmp.o: $(obj32)
> > +     $(LD32) -r -o $@ $^
> > +
> > +# link bundle with a given layout and extract a binary from it
> > +$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.=
o
> > +     $(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=3Dmap) -o $(@:=
bin=3Do) $(filter %.o,$^)
> > +     $(OBJCOPY) -j .text -O binary $(@:bin=3Do) $@
> > +     rm -f $(@:bin=3Do)
> > +
> > +quiet_cmd_combine =3D GEN     $@
> > +cmd_combine =3D \
> > +     $(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> > +             --gap=3D$(text_gap) --text-diff=3D$(text_diff) \
> > +             --script $(obj)/build32.offset.lds \
> > +             --bin1 $(obj)/built-in-32.base.bin \
> > +             --bin2 $(obj)/built-in-32.offset.bin \
> > +             --map $(obj)/built-in-32.offset.map \
> > +             --exports cmdline_parse_early,reloc \
> > +             --output $@
>
> See xen/Rules.mk, for consistency the indentation should be done with
> spaces when defining variables.  That would also allow to align the
> options.
>

Changed.

Is there a reason why these variables (I think the correct make
terminology is macros) use "=3D" and not ":=3D" ?

> > +
> > +targets +=3D built-in-32.S
> >
> > -%.lnk: %.32.o $(src)/build32.lds
> > -     $(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> > +# generate final object file combining and checking above binaries
> > +$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.o=
ffset.bin \
> > +             $(srctree)/tools/combine_two_binaries.py FORCE
>
> Can you indent this using spaces also, so it's on the same column as
> the ':'?
>

Changed.

> > +     $(call if_changed,combine)
> >
> > -clean-files :=3D *.lnk *.bin
> > +clean-files :=3D built-in-32.*.bin built-in-32.*.map build32.*.lds
> > diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.=
lds.S
> > similarity index 70%
> > rename from xen/arch/x86/boot/build32.lds
> > rename to xen/arch/x86/boot/build32.lds.S
> > index 56edaa727b..e3f5e55261 100644
> > --- a/xen/arch/x86/boot/build32.lds
> > +++ b/xen/arch/x86/boot/build32.lds.S
> > @@ -15,22 +15,47 @@
> >   * with this program.  If not, see <http://www.gnu.org/licenses/>.
> >   */
> >
> > -ENTRY(_start)
> > +#ifdef FINAL
> > +#  undef GAP
> > +#  define GAP 0
> > +#  define MULT 0
> > +#  define TEXT_START
> > +#else
> > +#  define MULT 1
> > +#  define TEXT_START TEXT_DIFF
> > +#endif
>
> In other places we use a single space between the hash and the define.
>

Changed.
This file has very weird indentation rules.

> > +#define DECLARE_IMPORT(name) name =3D . + (__LINE__ * MULT)
> > +
> > +ENTRY(dummy_start)
> >
> >  SECTIONS
> >  {
> >    /* Merge code and data into one section. */
> > -  .text : {
> > +  .text TEXT_START : {
> > +        /* Silence linker warning, we are not going to use it */
> > +        dummy_start =3D .;
> > +
> > +        /* Declare below any symbol name needed.
> > +         * Each symbol should be on its own line.
> > +         * It looks like a tedious work but we make sure the things we=
 use.
> > +         * Potentially they should be all variables. */
>
> The style is wrong for the opening and closing comment delimiters.
>
> I think it would be best if this was written in a more natural style.
>
> /*
>  * Any symbols used should be declared below, this ensures which
>  * symbols are visible to the 32bit C boot code.
>  */
>

But why to remove the "Potentially they should be all variables.".
Surely something not written is more clear than something written, but
on the other way it carries no information.

> I don't think you need to mention that each symbol should be on it's
> own line.
>

Yes, this is also enforced by Python script, so you can't do that
mistake in any case.

> Thanks, Roger.

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:54:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:54:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821869.1235826 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1mUf-0001VE-B8; Fri, 18 Oct 2024 12:54:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821869.1235826; Fri, 18 Oct 2024 12:54: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 1t1mUf-0001V7-7Q; Fri, 18 Oct 2024 12:54:13 +0000
Received: by outflank-mailman (input) for mailman id 821869;
 Fri, 18 Oct 2024 12:54:12 +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 1t1mUe-0001Ux-As
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:54:12 +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 1t1mUb-0004Ku-DE; Fri, 18 Oct 2024 12:54:09 +0000
Received: from [2a02:8012:3a1:0:ecee:6c05:256c:cbd3]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1mUa-0001vE-9U; Fri, 18 Oct 2024 12:54: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=t7NwVt31ntC85HZj9Elcwa21Mm4i+jEEQENYS82h0f8=; b=nezKTTZb+BsgSYt7fubIDuty0g
	o8MOm/WvYz1Bz1auQDUoOEbchrk18tDzSSju9t7C2pDF5EYGUAUKcblvwbx7tlpXMX2Woeqi2Qhnh
	EQ7Fiqgsyn5XBlWO/p4Wh1YG4Q6RdVy8E0WKyfaEN282uPKR6PSki3lwGzBcSdQDyO3Y=;
Message-ID: <8a57ee10-1440-4c9f-b961-fb9d1220b104@xen.org>
Date: Fri, 18 Oct 2024 13:54:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] Update deprecated SPDX license identifiers
Content-Language: en-GB
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 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>,
 Ross Lagerwall <ross.lagerwall@citrix.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>, Elena Ufimtseva <elena.ufimtseva@oracle.com>,
 Paul Durrant <paul@xen.org>, Dario Faggioli <dfaggioli@suse.com>,
 Juergen Gross <jgross@suse.com>, George Dunlap <gwd@xenproject.org>,
 Doug Goldstein <cardoe@cardoe.com>
References: <20240926095133.483619-1-frediano.ziglio@cloud.com>
 <CACHz=ZgwcejTF0Yz5vchVy18Hn15LYp_R8Y1LqOA=qAHK-HRiA@mail.gmail.com>
 <CACHz=Zh9r7xFSsq3vxdBfss1ozJC1neoTFs4Dvpw+xeQiUFTsg@mail.gmail.com>
 <6d5bad39-1a20-4cef-a1c5-aaa99c501941@xen.org>
 <CACHz=ZhGUG8tihk6vVTLk6fJOe1mFk=Mep-YOB0ci46JsKJKEw@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CACHz=ZhGUG8tihk6vVTLk6fJOe1mFk=Mep-YOB0ci46JsKJKEw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

On 18/10/2024 13:28, Frediano Ziglio wrote:
> On Fri, Oct 18, 2024 at 1:11 PM Julien Grall <julien@xen.org> wrote:
>>
>> Hi Frediano,
>>
>> On 18/10/2024 13:07, Frediano Ziglio wrote:
>>> On Fri, Oct 4, 2024 at 9:08 AM Frediano Ziglio
>>> <frediano.ziglio@cloud.com> wrote:
>>>>
>>>> On Thu, Sep 26, 2024 at 10:51 AM Frediano Ziglio
>>>> <frediano.ziglio@cloud.com> wrote:
>>>>>
>>>>> As specified in LICENSES/GPL-2.0:
>>>>> - GPL-2.0 -> GPL-2.0-only;
>>>>> - GPL-2.0+ -> GPL-2.0-or-later.
>>>>>
>>>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>>>>
>>>> ping
>>>>
>>>
>>> ping
>>
>> Please try to be more specific.
>>
>> I see you already have an ack from Stefano (which would cover Arm +
>> Common). What else are you missing? Is it committing? Do you need
>> someone else to ack? If the latter, then please mention who you think
>> need to ack...
>>
>> Cheers,
>>
>> --
>> Julien Grall
>>
> 
> Hi,
>     I'm not a mind reader, so I don't know what is missing.

Committers are not mind reader either... ;) With such a large list of 
CC, how do you think someone will know what they need to do?

You could have been more specific to what you expect.

 > It's a style change with some updates which has been acked, so I 
would> expect it to be merged or people tell me what is missing.
You probably use scripts/get_maintainers.pl to get a list of CC. You 
could also use it for figuring out who you are missing:

42sh> scripts/get_maintainer.pl 
20240926_frediano_ziglio_update_deprecated_spdx_license_identifiers.mbx 
--roles

But in this case, I think it would be ok to commit without all the 
relevant acks as this is only renaming. That said, this patch doesn't 
apply... So you will need to send a new version.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821875.1235836 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1mVj-00023g-Jw; Fri, 18 Oct 2024 12:55:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821875.1235836; Fri, 18 Oct 2024 12: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 1t1mVj-00023Z-H4; Fri, 18 Oct 2024 12:55:19 +0000
Received: by outflank-mailman (input) for mailman id 821875;
 Fri, 18 Oct 2024 12:55: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=7i1V=RO=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t1mVi-00023L-M8
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:55:18 +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 38ec9cb3-8d50-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 14:55:16 +0200 (CEST)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-4315df7b43fso15945485e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 05:55:16 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37ecf118b67sm1881243f8f.99.2024.10.18.05.55.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 05:55:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38ec9cb3-8d50-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729256116; x=1729860916; 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=PIrRIcxrInlX5eGaIHFdn51+ZgGAHXcudRiXCHVXzso=;
        b=DmlthkBG97c0LN7MSOWNFlqYQjnkXkBJxKpVmfOl9bF9TOr4/eudhYrETFsX0KSXOd
         TGJEqKosB1N9ryeQmcXrqRsmfHSmcWQ5MNbTSh9lX9mXTRp8JWNqimM1FFUEKfen1zzk
         ivTRIq7+nw0wFzrNB+IhtXnoVWc3wYaXMF7eQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729256116; x=1729860916;
        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=PIrRIcxrInlX5eGaIHFdn51+ZgGAHXcudRiXCHVXzso=;
        b=f2iIV0WL9++mNjWoSUrdhg/P9sgUblf2tS8lCm3KUXinsvC4dw7Kp9HM5W8d1cqUoD
         TjuKit7+gF4gWmcy7496K5bxJcDL2UEeiNe3XlCLeXldAGhzi/H8CgCHOd3oBCcSTgi8
         E1w0a5aq37f9jxRKsrHZhPVLtZ53GDEBBu7aVz+zxN5iRrYJecUaIwLwCLLkTO0qDXVF
         kFOMTqxmV2z48MGYYJT5CyLY/6WQAvDWm7qGqJnUvxT3HEPDupTYqQEP1KmXc3KH1ww2
         lDVTNYEj/Q8uCTqzEE4iu76q9022tz478ZcdsYmQm2S3hvOJUnuHgAnYlnWXpCWrZlLU
         OU8Q==
X-Forwarded-Encrypted: i=1; AJvYcCXhh+8gePvxxcKMOho+aI5meVJ4blhhJzbdY77O4lHkaYTldmMNd6xJmrH9wTgSCMLlWHZ2AomsmEQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxsPDAw1kSJMIUpBRSjStM2zRGrxKBvgXl+N7vaBl5aoj4Z3x9M
	jmvCpjgyColLLkGAoj7ZnnK2BtGiP3FpyE5S5JrGDY8G3a1Y65GW2rHaWZwBU40=
X-Google-Smtp-Source: AGHT+IF5Tu8AkZXTitcXlLO3RDS63yNt8O1Yvga9WFdlNacI8SRB1IrgO09uzKNJaLNDxfl0w1szpg==
X-Received: by 2002:a5d:4535:0:b0:37d:49d1:1e89 with SMTP id ffacd0b85a97d-37eab6e46b9mr1595857f8f.27.1729256115863;
        Fri, 18 Oct 2024 05:55:15 -0700 (PDT)
Date: Fri, 18 Oct 2024 14:55:14 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
Message-ID: <ZxJasvLomAlvMEws@macbook.local>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
 <ZxJJZvOCQLzU_Q5s@macbook.local>
 <7afb8389-3758-4633-a97a-3623513dc917@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <7afb8389-3758-4633-a97a-3623513dc917@suse.com>

On Fri, Oct 18, 2024 at 02:04:22PM +0200, Jan Beulich wrote:
> On 18.10.2024 13:41, Roger Pau Monné wrote:
> > On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> >> @@ -25,14 +23,47 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
> >>  $(obj)/%.32.o: $(src)/%.c FORCE
> >>  	$(call if_changed_rule,cc_o_c)
> >>  
> >> +orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
> >>  LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
> >>  LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
> >>  LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
> >>  
> >> -%.bin: %.lnk
> >> -	$(OBJCOPY) -j .text -O binary $< $@
> >> +text_gap := 0x010200
> >> +text_diff := 0x408020
> >> +
> >> +$(obj)/build32.base.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff)
> >> +$(obj)/build32.offset.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff) -DFINAL
> >> +$(obj)/build32.base.lds $(obj)/build32.offset.lds: $(src)/build32.lds.S FORCE
> >> +	$(call if_changed_dep,cpp_lds_S)
> >> +
> >> +targets += build32.offset.lds build32.base.lds
> >> +
> >> +# link all 32bit objects together
> >> +$(obj)/built-in-32.tmp.o: $(obj32)
> >> +	$(LD32) -r -o $@ $^
> >> +
> >> +# link bundle with a given layout and extract a binary from it
> >> +$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.o
> >> +	$(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=map) -o $(@:bin=o) $(filter %.o,$^)
> >> +	$(OBJCOPY) -j .text -O binary $(@:bin=o) $@
> >> +	rm -f $(@:bin=o)
> >> +
> >> +quiet_cmd_combine = GEN     $@
> >> +cmd_combine = \
> >> +	$(PYTHON) $(srctree)/tools/combine_two_binaries.py \
> >> +		--gap=$(text_gap) --text-diff=$(text_diff) \
> >> +		--script $(obj)/build32.offset.lds \
> >> +		--bin1 $(obj)/built-in-32.base.bin \
> >> +		--bin2 $(obj)/built-in-32.offset.bin \
> >> +		--map $(obj)/built-in-32.offset.map \
> >> +		--exports cmdline_parse_early,reloc \
> >> +		--output $@
> > 
> > See xen/Rules.mk, for consistency the indentation should be done with
> > spaces when defining variables.  That would also allow to align the
> > options.
> 
> And ideally also such that the options align with the first program
> argument.

Yup, that's what I was attempting to suggest, sorry if it wasn't
clear.

> >> +
> >> +targets += built-in-32.S
> >>  
> >> -%.lnk: %.32.o $(src)/build32.lds
> >> -	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
> >> +# generate final object file combining and checking above binaries
> >> +$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.offset.bin \
> >> +		$(srctree)/tools/combine_two_binaries.py FORCE
> > 
> > Can you indent this using spaces also, so it's on the same column as
> > the ':'?
> 
> The first $(obj) you mean, I think / hope?

Indeed, it's one space after the ':':

# Generate final object file combining and checking above binaries
$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.offset.bin \
                      $(srctree)/tools/combine_two_binaries.py FORCE

Preferably comments should also start with an uppercase letter.

Note this already exceeds the 80 char maximum, as the longest line is
81.  I think we have been a bit lax with Makefiles however.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 12:59:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 12:59:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821884.1235845 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1mZR-0007Em-2V; Fri, 18 Oct 2024 12:59:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821884.1235845; Fri, 18 Oct 2024 12:59: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 1t1mZQ-0007Ef-WB; Fri, 18 Oct 2024 12:59:08 +0000
Received: by outflank-mailman (input) for mailman id 821884;
 Fri, 18 Oct 2024 12:59: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=7i1V=RO=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t1mZP-0007EV-Ah
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 12:59:07 +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 c1b5bff8-8d50-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 14:59:06 +0200 (CEST)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-431548bd1b4so18569035e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 05:59:06 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37ecf0496basm1871904f8f.29.2024.10.18.05.59.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 05:59:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1b5bff8-8d50-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729256345; x=1729861145; 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=mbjOAs3DZQuMj6X6tRNO0hIiB1rCriMgG8xryc54IDY=;
        b=OkFbH0WgHq+K0UMVysZfHSgsDXoB2v9nR5A4Uo6/sxN+7tgLPUAwaozZ4wzhOzY+so
         f/SKii52dsfiFhdXMSV9SVONOFj/SEdS7S5WTs+XiGJW/f0LFa/e97RP6SLaPLm7m115
         ioVRRbx8n1pGKa9kaosRcOGHpQcxt4lxosBp8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729256345; x=1729861145;
        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=mbjOAs3DZQuMj6X6tRNO0hIiB1rCriMgG8xryc54IDY=;
        b=cGsyeU5DlMg6FTBOAtks4m9e/49+Gt0XGkEYMJiSAIYVQMyS4SAG9gk5ScjvXLEoh2
         3WArkxtXiBB6v+FCX40tS40tm5DnGyQh36NGwYWAAz5mbWvcfNDap5A7oK9AHrL3wjHo
         JCJzVFOK4jT7uDxvFaONQ1xptVUDJfZU87SPY6rggE2stDQCNOZNRLtaR9fCfNN5YzgQ
         6wx8aVCEnsvQS5F4FELpkhCxWWJLdDyk4TIwUHxSeje7a5RZYzKD9xAEaKSDFcwqIWln
         ki1N7hv03lfzWxdMe4REZ2kJfMuB874KaUioeRi0B6vaSEmom6LZfMm6SGjZlMa/GOQk
         LhKA==
X-Gm-Message-State: AOJu0YzhqTaPkVLF7Z7BWe5fhRKilz+lKrNa2h0N95j/rUUg52GtFmNe
	F/R+Xt+OKYFYcBm/vRkMpwyvZaljz9iNqsnPQT12bFYli7kPa3rzZi3yJZZg/5wH03N+JBafkO1
	x
X-Google-Smtp-Source: AGHT+IFQCX0x+iZTauveFvrTbmZglc8IXUMideuu+/wmPF0NZS2m0I+aDSL+uiZSz4WCvEQTuulyPA==
X-Received: by 2002:a5d:4d89:0:b0:371:9360:c4a8 with SMTP id ffacd0b85a97d-37ea21402a2mr1992172f8f.6.1729256345336;
        Fri, 18 Oct 2024 05:59:05 -0700 (PDT)
Date: Fri, 18 Oct 2024 14:59:04 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
Message-ID: <ZxJbmIU4OUmeO3xq@macbook.local>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
 <ZxJJZvOCQLzU_Q5s@macbook.local>
 <CACHz=Zif6tirzF3QSLYLOvDFuaE3o9=Cu+ybm4ns7vNkAKCROg@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CACHz=Zif6tirzF3QSLYLOvDFuaE3o9=Cu+ybm4ns7vNkAKCROg@mail.gmail.com>

On Fri, Oct 18, 2024 at 01:48:27PM +0100, Frediano Ziglio wrote:
> On Fri, Oct 18, 2024 at 12:41 PM Roger Pau Monné <roger.pau@citrix.com> wrote:
> >
> > On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> > > +#define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
> > > +
> > > +ENTRY(dummy_start)
> > >
> > >  SECTIONS
> > >  {
> > >    /* Merge code and data into one section. */
> > > -  .text : {
> > > +  .text TEXT_START : {
> > > +        /* Silence linker warning, we are not going to use it */
> > > +        dummy_start = .;
> > > +
> > > +        /* Declare below any symbol name needed.
> > > +         * Each symbol should be on its own line.
> > > +         * It looks like a tedious work but we make sure the things we use.
> > > +         * Potentially they should be all variables. */
> >
> > The style is wrong for the opening and closing comment delimiters.
> >
> > I think it would be best if this was written in a more natural style.
> >
> > /*
> >  * Any symbols used should be declared below, this ensures which
> >  * symbols are visible to the 32bit C boot code.
> >  */
> >
> 
> But why to remove the "Potentially they should be all variables.".
> Surely something not written is more clear than something written, but
> on the other way it carries no information.

I'm not sure I understand why this is helpful: either they are
mandated to be only variables, and hence the "potentially" is wrong, or
they are not, in which case I don't see why spelling a desire for they
to be only variables is helpful if it's not a strict requirement.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:10:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:10:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821892.1235858 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1mkc-00069Y-26; Fri, 18 Oct 2024 13:10:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821892.1235858; Fri, 18 Oct 2024 13: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 1t1mkb-00069R-Vq; Fri, 18 Oct 2024 13:10:41 +0000
Received: by outflank-mailman (input) for mailman id 821892;
 Fri, 18 Oct 2024 13:10: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=Jazm=RO=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t1mka-00069H-72
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:10:40 +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 5ef5a336-8d52-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 15:10:39 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2fb4af0b6beso35027471fa.3
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 06:10:39 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2fb809a6a88sm2107801fa.7.2024.10.18.06.10.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 06:10:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5ef5a336-8d52-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729257039; x=1729861839; 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=y402AQdR4+Tqh0flzvHXrC1KErpGurEXVRL8dNJKWU4=;
        b=Jr+WUfFQTRgiu9sK5hTuv2JHBtupiGy48QTOhUKmTL7+0v/4sHiwjZafNK3hAmr9Rv
         6yVdnioTVHDep7bjPbRGJKCn0vHHxM0Okw3TvU41rKYHqxqvHL7gOWact/I1IkonLA2a
         U93yr8pWTfwuDvCx9r4/WFRGHMVSpdES/8CGfwZT6O26Tr89PSenHZ80kf57KKMnD3it
         BmXNe7q5QnYdpJPErzyRmojqHhbrYrPrSI314caukfTRfH5PaSDBUErVoxr82RfcsxXd
         9NHr5gI2jzMz2Js6xkP9lZmpJfjisZjCeK6DE8tr0QU9RB6Gks259ipxRkP/Zddmm0gV
         zu9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729257039; x=1729861839;
        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=y402AQdR4+Tqh0flzvHXrC1KErpGurEXVRL8dNJKWU4=;
        b=vLVF9GjiMZUTIRnlWU5o6fc0tyKfKLE0OkIBIGpiHRTbqpO9zDmbWBdOKvltTABeqa
         7r1V6E1uXooOUCAoiisEKeWLuBVOnzFvr9WJejeT/zD/bKiiZy3yxmI4d9KO2SF62tMY
         P41d8WbLGFk3Hu1ulYwHRKfFyQb7Wwon5uoJxWK0xFg4MFsAreeJ+iUoF4ulo/8L3Lu2
         LkZUgBEFflteIheNH0aEOyEQEaYPYWHRTfWUyUvO2+Vk0PSh62tGbBhgv1Pik8ag/RtN
         1izjsYj0+bqpvIEZA0QkzEgotPaVGSrWIjTR8kz7si5RzTeRc94tYnkLIeERJlz5unmS
         K8JA==
X-Forwarded-Encrypted: i=1; AJvYcCU6mibGHB1tKAzg0D2/w5EUZoVR0IXP+YvfIk9OJ0DXlG5aQFzUdKHHV2zQqlEsAISwQVV2fwc4noY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvNz6Qy75Du6kNdtZsR3TaA2csYweYJXqesBaaD6pa/J8UcqfW
	tvS6b6Y9YnrU1CUH8DNywjsGFPyYcMOh+skD5fthMOa4RTitUjp5
X-Google-Smtp-Source: AGHT+IEKbar/6M5Rg+w53rlfJ6eirljl85OyaSMYH1ABVSWkCbLOLjk12tB7TWIGqHPWvXfmHY0KUQ==
X-Received: by 2002:a2e:851:0:b0:2f0:27da:6864 with SMTP id 38308e7fff4ca-2fb82eaae41mr15762261fa.17.1729257038174;
        Fri, 18 Oct 2024 06:10:38 -0700 (PDT)
Message-ID: <df635c41cf530d08898d021adf92eb141624d07d.camel@gmail.com>
Subject: Re: [PATCH v1 1/5] xen/riscv: add stub for
 share_xen_page_with_guest()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Fri, 18 Oct 2024 15:10:37 +0200
In-Reply-To: <b8de7161-5d71-4ed7-a3cf-611f4a860926@suse.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
	 <3dfd4bdf6584e73ecdbff5a66fdbaec68e31cc3c.1729068334.git.oleksii.kurochko@gmail.com>
	 <b8de7161-5d71-4ed7-a3cf-611f4a860926@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Thu, 2024-10-17 at 16:51 +0200, Jan Beulich wrote:
> On 16.10.2024 11:15, Oleksii Kurochko wrote:
> > To avoid the following linkage fail the stub for
> > share_xen_page_with_guest()
> > is introduced:
>=20
> What do you intend to express with "is introduced"? Is there a
> problem now?
> Would there be a problem with subsequent changes? I'm entirely fine
> with
> adding that stub, but the description should make clear why /when
> exactly
> it's needed.
I mentioned that in the cover letter:
```
   Also, after patch 3 ("xen/riscv: introduce setup_mm()") of this
   patch series,
   the linkage error mentioned in patch 1 ("xen/riscv: add stub for
   share_xen_page_with_guest()") began to occur, so patch 1 addresses
   this issue.
```
I thought it would be the better then just mention in the commit
message that.

Will it be fine to mention instead:
```
   Introduction of setup memory management function will require
   share_xen_page_with_guest() defined, at least, as a stub otherwise
   the following linkage error will occur...
```

Perhaps it would be better just to merge these changes with patch 3 and
add an explanation in patch 3 commit message.

~ Oleksii
> > =C2=A0 riscv64-linux-gnu-ld: prelink.o: in function `tasklet_kill':
> > =C2=A0 /build/xen/common/tasklet.c:176: undefined reference to
> > `share_xen_page_with_guest'
> > =C2=A0 riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol
> > `share_xen_page_with_guest' isn't defined
> > =C2=A0 riscv64-linux-gnu-ld: final link failed: bad value
> >=20
> > $ find . -name \*.o | while read F; do nm $F | grep
> > share_xen_page_with_guest && echo $F; done
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 U share_xen_page_with_guest
> > ./xen/common/built_in.o
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 U share_xen_page_with_guest
> > ./xen/common/trace.o
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 U share_xen_page_with_guest
> > ./xen/prelink.o
> >=20
> > Despite the linker fingering tasklet.c (very likely a toolchain
> > bug),
> > it's trace.o which has the undefined reference.
> >=20
> > Looking at trace.i, there is call of share_xen_page_with_guest() in
> > share_xen_page_with_privileged_guests() from asm/mm.h.
> >=20
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > =C2=A0xen/arch/riscv/stubs.c | 10 ++++++++++
> > =C2=A01 file changed, 10 insertions(+)
> >=20
> > diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c
> > index 5951b0ce91..c9a590b225 100644
> > --- a/xen/arch/riscv/stubs.c
> > +++ b/xen/arch/riscv/stubs.c
> > @@ -2,7 +2,9 @@
> > =C2=A0#include <xen/cpumask.h>
> > =C2=A0#include <xen/domain.h>
> > =C2=A0#include <xen/irq.h>
> > +#include <xen/mm.h>
> > =C2=A0#include <xen/nodemask.h>
> > +#include <xen/sched.h>
> > =C2=A0#include <xen/sections.h>
> > =C2=A0#include <xen/time.h>
> > =C2=A0#include <public/domctl.h>
> > @@ -409,3 +411,11 @@ unsigned long get_upper_mfn_bound(void)
> > =C2=A0{
> > =C2=A0=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > =C2=A0}
> > +
> > +/* mm.c */
> > +
> > +void share_xen_page_with_guest(struct page_info *page, struct
> > domain *d,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 enum XENSHARE_flags flags)
> > +{
> > +=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > +}
>=20



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:18:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:18:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821899.1235869 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1mrc-0002uc-Ol; Fri, 18 Oct 2024 13:17:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821899.1235869; Fri, 18 Oct 2024 13: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 1t1mrc-0002uV-LV; Fri, 18 Oct 2024 13:17:56 +0000
Received: by outflank-mailman (input) for mailman id 821899;
 Fri, 18 Oct 2024 13:17: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=Jazm=RO=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t1mrb-0002uL-5s
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:17:55 +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 619dd84c-8d53-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 15:17:53 +0200 (CEST)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-539e8586b53so2665067e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 06:17:53 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a151b0106sm217563e87.7.2024.10.18.06.17.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 06:17:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 619dd84c-8d53-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729257473; x=1729862273; 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=qVrC5Zf+loZB7jHvPASHXU9Fwz1bNf35TTJrOZgmlTI=;
        b=KCtv/Gv5gwY8ZYQskx7WBZFSnVTkQBKQnydIMveEGYu+QX9N03jqc2ZfsNMegT6toV
         t4ITDew0iMI/HoeN1Tv5LQZQjFJ2hN1qVlYR143GGJNWrmKBr+MRxmiBQ0shz7KJ2HcZ
         heGKRarJwdNn6Ak7QNMLu4agZSBHEW/1oQt4PJGwcCJ87aKc0tGqLKfMjBtO0NRn92b2
         TyJxWKgiGnewX2N3My71lJ0kUDYTadj3+2kY3BjQ7ZPLxcgSEzjs+S7FQ/9qbyg+T53g
         8LKuw4wSgAXdy7D/g9YQ2yIdSe1+ygdvGDEjA/IEMEyRSUcaoUm1qOXMOdtajb2fwBnC
         ldYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729257473; x=1729862273;
        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=qVrC5Zf+loZB7jHvPASHXU9Fwz1bNf35TTJrOZgmlTI=;
        b=XeXi5EPWkaz/NB+m3lEy42jLVQw13k6iOmr27tesjgdtsMuDLL20N3Va48U40Ja9Bh
         o03GbAZg6s5l97Ioof5zUaFvXN3OTnVjtaWq8Sy9+fuGKRVHkxfiJ2dFQXojjD2GXOBA
         A06joxYVIdM2E0dqRwLOV7a3euiWevFxDA3qAp2F+74RZC5CKM//xl576gT32TfGJk7k
         1r+Jmhg7U7joy45zpe0HIB60Haz6I8XsZk9rO/Vs9RBiHDPC+Xqk5T+HOAQHCqLjYdXH
         ZRYln/nBxXPvlfhGk4026FamX7cUN6prY4IyFDRHXplCSH5tzPe+uqm4WubO25gXfzFx
         MLKw==
X-Forwarded-Encrypted: i=1; AJvYcCV4gqnaMDuKp7DQxAurgsYZvW5BP8XoG7TW5qkpD2l5XkSRaE8SbciurcQJcM2jFeHu5DZYd+es1Vs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxN3jwk8Ml3SaSIscafluCxdPqLVDV/bmx7q2kNEogJ7FFARAkY
	PdqGtni8zZFvNuRGxIJvb30vqWvAYKpyygnyml7uLacgC1/BGCOP
X-Google-Smtp-Source: AGHT+IHqsHC9wlouSsou/Nto15ct4JzFej4ozgpy9gBTfCUnT3JrYsgduiDDL0aZj3NClG4FkSc/zw==
X-Received: by 2002:a05:6512:3184:b0:539:fcf0:268e with SMTP id 2adb3069b0e04-53a0c6dae70mr2344119e87.14.1729257472430;
        Fri, 18 Oct 2024 06:17:52 -0700 (PDT)
Message-ID: <aebdb0df0ad9fb13db9929f131737bf5479cdf29.camel@gmail.com>
Subject: Re: [PATCH v1 2/5] xen/riscv: implement maddr_to_virt()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Fri, 18 Oct 2024 15:17:51 +0200
In-Reply-To: <2565f369-96e3-4c28-b752-53b1b6a0d968@suse.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
	 <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com>
	 <2565f369-96e3-4c28-b752-53b1b6a0d968@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Thu, 2024-10-17 at 16:55 +0200, Jan Beulich wrote:
> On 16.10.2024 11:15, Oleksii Kurochko wrote:
> > --- a/xen/arch/riscv/include/asm/mm.h
> > +++ b/xen/arch/riscv/include/asm/mm.h
> > @@ -25,8 +25,12 @@
> > =C2=A0
> > =C2=A0static inline void *maddr_to_virt(paddr_t ma)
> > =C2=A0{
> > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > -=C2=A0=C2=A0=C2=A0 return NULL;
> > +=C2=A0=C2=A0=C2=A0 /* Offset in the direct map, accounting for pdx com=
pression */
> > +=C2=A0=C2=A0=C2=A0 unsigned long va_offset =3D maddr_to_directmapoff(m=
a);
>=20
> Why the mentioning of PDX compression?
It was mentioned because if PDX will be enabled maddr_to_directmapoff()
will take into account PDX stuff.

>  At least right now it's unavailable
> for RISC-V afaics. Are there plans to change that any time soon?
At the moment, I don't have such plans, looking at available platform
there are no a lot of benefits of having PDX compression now.

Perhaps it would be good to add
BUILD_BUG_ON(IS_ENABLED(PDX_COMPRESSION)) for the places which should
be updated when CONFIG_PDX will be enabled.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:27:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821909.1235879 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1n0u-0008WU-PY; Fri, 18 Oct 2024 13:27:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821909.1235879; Fri, 18 Oct 2024 13: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 1t1n0u-0008WN-Ls; Fri, 18 Oct 2024 13:27:32 +0000
Received: by outflank-mailman (input) for mailman id 821909;
 Fri, 18 Oct 2024 13: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=dzfJ=RO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t1n0u-0008Vz-2s
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:27:32 +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 ba0ae83a-8d54-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 15:27:31 +0200 (CEST)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-4314fa33a35so20969935e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 06:27:31 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316067dbedsm27467215e9.7.2024.10.18.06.27.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 18 Oct 2024 06:27:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba0ae83a-8d54-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729258050; x=1729862850; 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=uXX4Yaad9ZLGqVuCLSseYn7johVlB/9w4iskjmBAIA4=;
        b=hA/QDj0yMoGToCsiHVKnoSLSxAyD1hadErLGO0vmj2Px9nVJc0jcweUG1/cjd7eha8
         SpabwJIuWwP/aKxD66yccPlrUiNkOvJDF+zujz7BAI5WsYJtoYR40W0JbiaHe2wj2R55
         L77LEJ3vgPYvZ6VsUJHwL8VkHI18mucTUmT2baWlbyTPySEUKH+97WgeCm3oQzg2fj+q
         F8e5P6rMkM1Tn6I+6ICx9BkKqVNAscSFidpP7ah5AKLmQAQ6gOXPbB9uAaFK7A1+SBkS
         PcZTCoZN2n2JZZbbWvLgjcFfyAYMhtj0myfwG3bJF0hCr7Pgd2zXfhyswV/n5ag/cLMD
         FkiQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729258050; x=1729862850;
        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=uXX4Yaad9ZLGqVuCLSseYn7johVlB/9w4iskjmBAIA4=;
        b=dDz8z0cwMHyDJsweHSeb34hwBs3k4tbYu7aL/e6ksD25jU6A+PbiOK/OSorUWzWmnG
         jXKPM/SzqZbMP04YBNHS3II+lMjVoIg4cHboGcvpuJFjP3/Qz0r6G40gKdhs0L854mI8
         pHFCTHHyc9zE6RfeWPwWSvVuEsLxFa2tB2MSAHPQAqAsGZLCeaUGeMVJjHK+MrmJIHKr
         mrOIy9TUIVe5+dRW0AfX9umAixbcGVZ/gvqsfodgpZCKk0sJSqv2im5ysWmVIcnNO60B
         Kgzvse/s0r4f+frL0+e/dq0mneGj2ZkXvZc4dWq95BTMixh6slTdFjFuH8TcrtpTUnzu
         A34g==
X-Forwarded-Encrypted: i=1; AJvYcCVWwuFxxDI9S/LXxn/KldZc/+JEtGtpCYK9UHpqUzhK1yAgH8AqzrkqD7An91pAwe+o6BWRNX+Fx/g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxsBaFjNRDYPhe7nlipLvst+itX1hSWJPqY/r6ID8t7NvsDkuFK
	MSQIglIkljCpqDrNUvYMK7We4eHGY9P1eQr1o0VPYuP7lS9lgrFC6NnFSbieaQ==
X-Google-Smtp-Source: AGHT+IG+vtFTHKekFGzx2JSjGYucri2NY5wu0OJjYzZUZFzX5eF1sSUN0Dsh/KT6QrPf8siwpEeQJQ==
X-Received: by 2002:a05:600c:c8a:b0:431:2b66:44f7 with SMTP id 5b1f17b1804b1-4316169737dmr18731965e9.31.1729258050542;
        Fri, 18 Oct 2024 06:27:30 -0700 (PDT)
Message-ID: <3f87a19f-c249-438a-ac1d-be9b8fd80c8e@suse.com>
Date: Fri, 18 Oct 2024 15:27:29 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/5] xen/riscv: add stub for
 share_xen_page_with_guest()
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <3dfd4bdf6584e73ecdbff5a66fdbaec68e31cc3c.1729068334.git.oleksii.kurochko@gmail.com>
 <b8de7161-5d71-4ed7-a3cf-611f4a860926@suse.com>
 <df635c41cf530d08898d021adf92eb141624d07d.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: <df635c41cf530d08898d021adf92eb141624d07d.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.10.2024 15:10, oleksii.kurochko@gmail.com wrote:
> On Thu, 2024-10-17 at 16:51 +0200, Jan Beulich wrote:
>> On 16.10.2024 11:15, Oleksii Kurochko wrote:
>>> To avoid the following linkage fail the stub for
>>> share_xen_page_with_guest()
>>> is introduced:
>>
>> What do you intend to express with "is introduced"? Is there a
>> problem now?
>> Would there be a problem with subsequent changes? I'm entirely fine
>> with
>> adding that stub, but the description should make clear why /when
>> exactly
>> it's needed.
> I mentioned that in the cover letter:
> ```
>    Also, after patch 3 ("xen/riscv: introduce setup_mm()") of this
>    patch series,
>    the linkage error mentioned in patch 1 ("xen/riscv: add stub for
>    share_xen_page_with_guest()") began to occur, so patch 1 addresses
>    this issue.
> ```
> I thought it would be the better then just mention in the commit
> message that.

Mentioning in the cover letter is fine, but each patch needs to also
be self-contained.

> Will it be fine to mention instead:
> ```
>    Introduction of setup memory management function will require
>    share_xen_page_with_guest() defined, at least, as a stub otherwise
>    the following linkage error will occur...
> ```

Quoting the linker error is imo of limited use. What such an explanation
wants to say is why, all of the sudden, such an error occurs. After all
you don't change anything directly related to common/trace.c.

> Perhaps it would be better just to merge these changes with patch 3 and
> add an explanation in patch 3 commit message.

Perhaps, as you say.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:28:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:28:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821915.1235889 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1n1i-00019F-2L; Fri, 18 Oct 2024 13:28:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821915.1235889; Fri, 18 Oct 2024 13:28: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 1t1n1h-000198-Uh; Fri, 18 Oct 2024 13:28:21 +0000
Received: by outflank-mailman (input) for mailman id 821915;
 Fri, 18 Oct 2024 13:28: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1n1g-000169-7G
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:28:20 +0000
Received: from mail-oi1-x22e.google.com (mail-oi1-x22e.google.com
 [2607:f8b0:4864:20::22e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d5b5527d-8d54-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 15:28:18 +0200 (CEST)
Received: by mail-oi1-x22e.google.com with SMTP id
 5614622812f47-3e5ea4cbcf9so1277086b6e.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 06:28:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d5b5527d-8d54-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729258097; x=1729862897; 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=upSoKpQfCmZYAp8KGYRI/oZvmRH5DQOTMB8V6GfpXag=;
        b=XusIaj6s8uLLRzY9EQ+TUf/kbqiL+n/zyzyrLDUpyGSeSEMSQLAV5ZHXqHtytOxgNg
         JGXFBMaQtd/lOdfkcjX+724PiPXcHlTMJBWqzutbNchfGb3iK0wqbF6OiVlyEoAHob51
         vSpeQBkP2eEGty+80nse0hRdGfc+yyh8l/0BM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729258097; x=1729862897;
        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=upSoKpQfCmZYAp8KGYRI/oZvmRH5DQOTMB8V6GfpXag=;
        b=M9NSFPdfv876qEKFqMLNJWEE80WHfJhuPULZTtwJodeTK1Y6nofQjHMK621xDwDYlA
         4erD4xdakfGieV5jHmGs/oWa7iolzKUQXqoKP1cqVqVR776Dx3AGmnR4nqbTJMLHxgC0
         dTK/nJFaTwEprHsexj7QbsnmAXnPqYGPAHjJIyGMnn3B+hZz/7yDwkEtpvItfOoudOdh
         1Q9wc9ATf1oz15/G67tqiSt15+vmSutg0fvk3pMzDZaJV0sSdFLfqIyhr/30s1dUJm0v
         3d9jCrMr7pz7i2KWMufnUC4GD9sVl1b53O5hnMickhaKzJaXW+QKJQGeJphZEyhbRY0T
         9/RA==
X-Forwarded-Encrypted: i=1; AJvYcCWwd7Z8hgB+eTvlkFlImzKh3LdrSUypw5YEKozKMVDf9SPYKe7wA3GXYWbJqXkxnr/8msm8C1el/z8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxIieRO8ZNACx6GYibYPGIPaEmg/Dgd8VmgzQUrd5O2l9g1IDnW
	YbpL8rNtySU9yBkTiYMezkksLzTahi4iNmOciGcf50219htIW3/B53WYOiGEDXsPpDLKteJ+yDh
	jCqgKoxyHtREhXUlwMHnfCHV6Enoix3rIl+T3pg==
X-Google-Smtp-Source: AGHT+IFyjEM0E22XBKlojIW+MJdt+JoUvn+/6NmijlyS4Wcxq1q5/W+lpQPrYssytNMladHPoRwqb5TE0sLf/PWmM4w=
X-Received: by 2002:a05:6808:2020:b0:3e5:d8b9:fcff with SMTP id
 5614622812f47-3e602da1233mr1515681b6e.42.1729258096813; Fri, 18 Oct 2024
 06:28:16 -0700 (PDT)
MIME-Version: 1.0
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com> <a5745a93-1d82-45f1-bb88-81a737ebcce3@citrix.com>
 <CACHz=ZhULqJpE8UK7kZQN0He5Poc85Cr6heTCKj1KLjxcPA6XQ@mail.gmail.com> <ZxJLUeMFyejFGCLc@macbook.local>
In-Reply-To: <ZxJLUeMFyejFGCLc@macbook.local>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 14:28:05 +0100
Message-ID: <CACHz=ZhXFRG1PcCqvTUy6jQbbbFNHu7rwWP+CVtJuEeXRqQYXA@mail.gmail.com>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org, 
	Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, 
	Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 18, 2024 at 12:49=E2=80=AFPM Roger Pau Monn=C3=A9 <roger.pau@ci=
trix.com> wrote:
>
> On Fri, Oct 18, 2024 at 09:42:48AM +0100, Frediano Ziglio wrote:
> > On Thu, Oct 17, 2024 at 6:13=E2=80=AFPM Andrew Cooper <andrew.cooper3@c=
itrix.com> wrote:
> > >
> > > On 17/10/2024 2:31 pm, Frediano Ziglio wrote:
> > > > The current method to include 32 bit C boot code is:
> > > > - compile each function we want to use into a separate object file;
> > > > - each function is compiled with -fpic option;
> > > > - convert these object files to binary files. This operation remove=
s GOP
> > > >   which we don't want in the executable;
> > > > - a small assembly part in each file add the entry point;
> > > > - code can't have external references, all possible variables are p=
assed
> > > >   by value or pointer;
> > > > - include these binary files in head.S.
> > > >
> > > > There are currently some limitations:
> > > > - code is compiled separately, it's not possible to share a functio=
n
> > > >   (like memcpy) between different functions to use;
> > > > - although code is compiled with -fpic there's no certainty there a=
re
> > > >   no relocations, specifically data ones. This can lead into hard t=
o
> > > >   find bugs;
> > > > - it's hard to add a simple function;
> > > > - having to pass external variables makes hard to do multiple thing=
s
> > > >   otherwise functions would require a lot of parameters so code wou=
ld
> > > >   have to be split into multiple functions which is not easy.
> > > >
> > > > Current change extends the current process:
> > > > - all object files are linked together before getting converted mak=
ing
> > > >   possible to share code between the function we want to call;
> > > > - a single object file is generated with all functions to use and
> > > >   exported symbols to easily call;
> > > > - variables to use are declared in linker script and easily used in=
side
> > > >   C code. Declaring them manually could be annoying but makes also
> > > >   easier to check them. Using external pointers can be still an iss=
ue if
> > > >   they are not fixed. If an external symbol is not declared this gi=
ves a
> > > >   link error.
> > > >
> > > > Some details of the implementation:
> > > > - C code is compiled with -fpic flags (as before);
> > > > - object files from C code are linked together;
> > > > - the single bundled object file is linked with 2 slightly differen=
t
> > > >   script files to generate 2 bundled object files;
> > > > - the 2 bundled object files are converted to binary removing the n=
eed
> > > >   for global offset tables;
> > > > - a Python script is used to generate assembly source from the 2
> > > >   binaries;
> > > > - the single assembly file is compiled to generate final bundled ob=
ject
> > > >   file;
> > > > - to detect possible unwanted relocation in data/code code is gener=
ated
> > > >   with different addresses. This is enforced starting .text section=
 at
> > > >   different positions and adding a fixed "gap" at the beginning.
> > > >   This makes sure code and data is position independent;
> > > > - to detect used symbols in data/code symbols are placed in .text
> > > >   section at different offsets (based on the line in the linker scr=
ipt).
> > > >   This is needed as potentially a reference to a symbol is converte=
d to
> > > >   a reference to the containing section so multiple symbols could b=
e
> > > >   converted to reference to same symbol (section name) and we need =
to
> > > >   distinguish them;
> > > > - --orphan-handling=3Derror option to linker is used to make sure w=
e
> > > >   account for all possible sections from C code;
> > > >
> > > > Current limitations:
> > > > - the main one is the lack of support for 64 bit code. It would mak=
e
> > > >   sure that even the code used for 64 bit (at the moment EFI code) =
is
> > > >   code and data position independent. We cannot assume that code th=
at
> > > >   came from code compiled for 32 bit and compiled for 64 bit is cod=
e and
> > > >   data position independent, different compiler options lead to
> > > >   different code/data.
> > > >
> > > > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > >
> > > This commit message is not particularly easy to follow.  Can I recomm=
end
> > > the following:
> > >
> > > ---%<---
> > > x86/boot: Rework how 32bit C is linked/included for early boot
> > >
> > > Right now, the two functions which were really too complicated to wri=
te
> > > in asm are compiled as 32bit PIC, linked to a blob and included
> > > directly, using global asm() to arrange for them to have function sem=
antics.
> > >
> > > This is limiting and fragile; the use of data relocations will compil=
e
> > > fine but malfunction when used, creating hard-to-debug bugs.
> > >
> > > Furthermore, we would like to increase the amount of C, to
> > > deduplicate/unify Xen's boot logic, as well as making it easier to
> > > follow.  Therefore, rework how the 32bit objects are included.
> > >
> > > Link all 32bit objects together first.  This allows for sharing of lo=
gic
> > > between translation units.  Use differential linking and explicit
> > > imports/exports to confirm that we only have the expected relocations=
,
> > > and write the object back out as an assembly file so it can be linked
> > > again as if it were 64bit, to integrate with the rest of Xen.
> > >
> > > This allows for the use of external references (e.g. access to global
> > > variables) with reasonable assurance of doing so safely.
> > >
> > > No functional change.
> > > ---%<---
> > >
> > > which I think is an accurate and more concise summary of what's chang=
ing?
> > >
> >
> > You cut half of the explanation, replacing with nothing.
> > Why is a script needed? Why 2 linking? How the new method detects
> > unwanted relocations?
>
> TBH this is not clear to me even with your original commit message.
>

I'm starting to think that either me or Andrew are not the right
persons to write this, there's a lot of assumptions we assume for
granted.

>From what I see, in my message:
----
- to detect possible unwanted relocation in data/code code is generated
  with different addresses. This is enforced starting .text section at
  different positions and adding a fixed "gap" at the beginning.
  This makes sure code and data is position independent;
- to detect used symbols in data/code symbols are placed in .text
  section at different offsets (based on the line in the linker script).
  This is needed as potentially a reference to a symbol is converted to
  a reference to the containing section so multiple symbols could be
  converted to reference to same symbol (section name) and we need to
  distinguish them;
----

in Andrew message:
----
Use differential linking and explicit imports/exports to confirm that
we only have the expected relocations,
----

probably both are cryptic, but getting from "differential linking" you
really need to know in advance what you are explaining.

> > Why wasn't possible to share functions?

mine:
----
- code is compiled separately, it's not possible to share a function
  (like memcpy) between different functions to use;
----

in Andrew message:
----
Link all 32bit objects together first.  This allows for sharing of
logic between translation units.
----

I would agree Andrew comment is clearer here.

> > Why using --orphan-handling option?

mine:
----
- --orphan-handling=3Derror option to linker is used to make sure we
  account for all possible sections from C code;
---

in Andrew message:
----
----

still, Andrew more clear, but not carrying any information.

> >
> > The description has been there for about 2 months without many objectio=
ns.
>
> IMO it's fine to use lists to describe specific points, but using
> lists exclusively to write a commit message makes the items feel
> disconnected between them.
>
> The format of the commit message by Andrew is clearer to undertsand
> for me.  Could you add what you think it's missing to the proposed
> message by Andrew?
>
> Thanks, Roger.

Probably, as said above, we (me and Andrew) have too many assumptions.
This commit is doing quite some magic that's not easy to grasp.
I can try to explain, and possibly you can suggest something that
makes sense also to people not too involved in this.

There are quite some challenges here. This code is executed during the
boot process and the environment is pretty uncommon. Simply writing a
message is not that easy. We are not sure if we have VGA, serial, BIOS
or UEFI. We are not executing in the location code was compiled/linked
to run so assuming it is wrong and causes issue; in other word the
code/data should be position independent. This code is meant to be
compiled and run in 32 mode, however Xen is 64 bit, so compiler output
can't be linked to the final executable. And obviously you cannot call
64 bit code from 32 bit code. Even if code would be compiled and run
in 64 bit mode, calling functions like printk would probably crash (it
does, we discovered recently) as Xen code assumes some environment
settings (in case of printk, just as example, it was missing per-cpu
info leading to pointer to garbage). In 32 bit mode, you can get code
position independence with -fpic, but this requires linker to generate
GOT table but 64 bit linker would generate that table in a position
not compatible with 32 bit code (and that's not the only issue of
using 64 bit linker on 32 bit code). So, to solve this code/data is
linked to a 32 bit object and converted to binary (note: this is an
invariant, it was done like that before and after this commit). Solved
the code with -fpic, what about data? Say we have something like
"const char *message =3D "hello";"... a pointer is a pointer, which is
the location of the data pointed. But as said before, we are in an
uncommon environment where code/data could be run at a different
location than compiled/linked! There's no magic option for doing that,
so instead of hoping for the best (as we are doing at the moment) we
check to not have pointers. How? We link code+data at different
locations which will generate different binary in that case and we
compare the 2 binaries to make sure there are no such differences
(well, this is a simplification of the process).


So... somebody willing to translate the above, surely poor and
unclear, explanation is somethig digestible by people less involved in
it?

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:33:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:33:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821922.1235899 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1n6M-0002jz-Hy; Fri, 18 Oct 2024 13:33:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821922.1235899; Fri, 18 Oct 2024 13:33: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 1t1n6M-0002jr-FC; Fri, 18 Oct 2024 13:33:10 +0000
Received: by outflank-mailman (input) for mailman id 821922;
 Fri, 18 Oct 2024 13:33: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 1t1n6L-0002ja-4M; Fri, 18 Oct 2024 13:33: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 1t1n6L-00050l-0W; Fri, 18 Oct 2024 13:33: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 1t1n6K-00087A-JB; Fri, 18 Oct 2024 13:33:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1n6K-0002IR-Ih; Fri, 18 Oct 2024 13:33: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=JA38qaJWS7VIaaQMh/yVuJbWZSHJ83y76TVvjttd8Ls=; b=2cLZcgs2hRDetM3e3OXZsYtnUH
	r7YEtfArKVch7kxDd08Nc8AA9nAHgqVZa6OQu5NBt8BIWy0v7s2MDKeyn2ts3OPEHfrFn718V+gD5
	ZEmLqRqFhv4Z9JT6PesxAJLa0pbSPgqzX0xf8M6mz8aWnyiewY/EqzrQ3UDrsmcuJeec=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188251-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188251: regressions - FAIL
X-Osstest-Failures:
    ovmf:build-i386-libvirt:libvirt-build:fail:regression
    ovmf:build-amd64-xsm:xen-build:fail:regression
    ovmf:build-amd64:xen-build:fail:regression
    ovmf:build-i386-xsm:xen-build:fail:regression
    ovmf:build-i386-pvops:kernel-build:fail:regression
    ovmf:build-amd64-libvirt:build-check(1):blocked:nonblocking
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:build-check(1):blocked:nonblocking
X-Osstest-Versions-This:
    ovmf=6e197a8ba5e349e511850fc52457992de88c8795
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 13:33:08 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-i386-libvirt            6 libvirt-build            fail REGR. vs. 188152
 build-amd64-xsm               6 xen-build                fail REGR. vs. 188152
 build-amd64                   6 xen-build                fail REGR. vs. 188152
 build-i386-xsm                6 xen-build                fail REGR. vs. 188152
 build-i386-pvops              6 kernel-build             fail REGR. vs. 188152

Tests which did not succeed, but are not blocking:
 build-amd64-libvirt           1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemuu-ovmf-amd64  1 build-check(1)             blocked n/a

version targeted for testing:
 ovmf                 6e197a8ba5e349e511850fc52457992de88c8795
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    1 days
Failing since        188156  2024-10-17 09:14:11 Z    1 days    7 attempts
Testing same since   188188  2024-10-17 17:12:12 Z    0 days    5 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@microsoft.com>

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


------------------------------------------------------------
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 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:41:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:41:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821937.1235912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nEE-0000XV-FA; Fri, 18 Oct 2024 13:41:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821937.1235912; Fri, 18 Oct 2024 13:41: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 1t1nEE-0000XO-CU; Fri, 18 Oct 2024 13:41:18 +0000
Received: by outflank-mailman (input) for mailman id 821937;
 Fri, 18 Oct 2024 13:41: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 1t1nEC-0000XG-Iq
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:41: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 1t1nEB-00059T-Id; Fri, 18 Oct 2024 13:41:15 +0000
Received: from [2a02:8012:3a1:0:ecee:6c05:256c:cbd3]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1nEB-0007dI-CE; Fri, 18 Oct 2024 13:41: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=DCYuUNL/RfjODf9RJJh+G33KsZmG9bSdX/moEd97n2o=; b=k1NPDV4ZFPVvrQJXSTG4gOyY4/
	cl7TMzInemGqv6TW0JrRjfkx1SiCFxLxsFX7wgcne5eObgVotQHvh5ktadz4Z7/IlGr+cNMH5rQGz
	DMK2eDWdLQM1pdV97PTHHXvwKPGvHiKy/6k8JC3NImP1qBHQeZ5INt6z4gEVhFjY/rF4=;
Message-ID: <7ee1579b-f1e8-4dd4-8540-e6c0858c6999@xen.org>
Date: Fri, 18 Oct 2024 14:41:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
Content-Language: en-GB
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-2-ayan.kumar.halder@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241010140351.309922-2-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Ayan,

On 10/10/2024 15:03, Ayan Kumar Halder wrote:
> If the BSS section is empty, then the function can just return.

This is more than "can", right? If we don't do it, we will end up to 
zero outside of BSS. This could be critical data...

Also, I am tempted to suggest to add a Fixes tag because even if it is 
unlikely BSS will be zero in the current Xen, it is also not unlikely.

The tag would be:

Fixes: dac84b66cc9a ("xen: arm64: initial build + config changes, start 
of day code")

> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>

I saw the discussion. I don't have a strong opinion on the exact 
approach choosen for zeroing. With the commit message updated:

Acked-by: Julien Grall <jgrall@amazon.com>

> ---
> Changes from :-
> 
> v1..v2 - New patch introduced in v3.
> 
>   xen/arch/arm/arm64/head.S | 2 ++

Don't we need a similar change on the arm32 code?

>   1 file changed, 2 insertions(+)
> 
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index 14c3720d80..72c7b24498 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
>           PRINT("- Zero BSS -\r\n")
>           ldr   x0, =__bss_start       /* x0 := vaddr(__bss_start) */
>           ldr   x1, =__bss_end         /* x1 := vaddr(__bss_end)   */
> +        cmp   x1, x0
> +        beq   skip_bss
>   
>   1:      str   xzr, [x0], #8
>           cmp   x0, x1

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:46:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:46:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821943.1235922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nJ0-0001Bj-0i; Fri, 18 Oct 2024 13:46:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821943.1235922; Fri, 18 Oct 2024 13: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 1t1nIz-0001Bc-U2; Fri, 18 Oct 2024 13:46:13 +0000
Received: by outflank-mailman (input) for mailman id 821943;
 Fri, 18 Oct 2024 13:46: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1nIz-0001BU-Cb
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:46:13 +0000
Received: from mail-ot1-x335.google.com (mail-ot1-x335.google.com
 [2607:f8b0:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 55435727-8d57-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 15:46:11 +0200 (CEST)
Received: by mail-ot1-x335.google.com with SMTP id
 46e09a7af769-7181b86a749so294398a34.3
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 06:46:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 55435727-8d57-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729259170; x=1729863970; 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=DTPsjIABa3LCJZi7qTqNcr3SqKOQmVAhVEFbou9H1fA=;
        b=jOtZOy0uDVcvuCMiwahVKWGoFUhpQePVYmi+Oc/DUNUoxl8O8GdAkE5GfXnT6Klqn1
         15kS+EclboCqhRDqDJIPb0lb707yyuIhv/aQjNmQ+0LLi5nDUU9cyeRhJAu9wRCyuvJp
         AxntMLVank2n4XaMf286tQNw3QxaYvN6IChmE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729259170; x=1729863970;
        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=DTPsjIABa3LCJZi7qTqNcr3SqKOQmVAhVEFbou9H1fA=;
        b=hJdit/NoLsK6Fj9+2wLluV7Kg7Hy/c1E9Tda7KLxDQ6nGzUnF41XdppKKFUihOOU0h
         9ZDLkBMHwb3A8vjudqFoSqKOwvY0mE4sVZ0XXjf3OTjxnacxDvCDalMOiNBUltJOTVAw
         7C0ZhZTrRcyvDpKsqhf6nWoLlVpEesmsWesAUFcAoW20KAXmi2PP31d+a3TCNawZasE0
         iO9PqKQXl7NjVDfkBBZLzQm14BYsldbuXBAGf4rwWOKK0dZ4iD1JwGcm4Dh/Fmu8kzFz
         GhIPfNqelHQr2/7WF6x//8k6a+T9q4Tcq62d0opdsNGlcHf+0rTp3NgN+wfg/ZRf+PIF
         f8hg==
X-Gm-Message-State: AOJu0YxavG2X2EKsGgjGCNqJY3KyWltEjTMUYJqwDOhYkpvly5avnc8a
	d6HQF/o/FIgYUI7jB5amLV78s6WgswDqAlmSP0d80L24Mbwewk4nfsGAvVuoBnvCDjVIpvQC9VR
	CT4e9jiLkW/KR81GwT8dZ8BQ3ARm/UAG9NqwWtQ==
X-Google-Smtp-Source: AGHT+IHWFzmT6jYKq32x6ruud7sJfwiOF6e3UXJmGBhSQjtEj4GkO49rTsjatGiDCOBjxHJ0U/zsptelDQAYsn7nBPw=
X-Received: by 2002:a05:6830:670c:b0:710:fef4:3c92 with SMTP id
 46e09a7af769-7181a89f672mr2263847a34.21.1729259169867; Fri, 18 Oct 2024
 06:46:09 -0700 (PDT)
MIME-Version: 1.0
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com> <ZxJJZvOCQLzU_Q5s@macbook.local>
 <CACHz=Zif6tirzF3QSLYLOvDFuaE3o9=Cu+ybm4ns7vNkAKCROg@mail.gmail.com> <ZxJbmIU4OUmeO3xq@macbook.local>
In-Reply-To: <ZxJbmIU4OUmeO3xq@macbook.local>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 14:45:59 +0100
Message-ID: <CACHz=ZiHp40-MkkbfnnNi2yQaB89_PA9VU_cLrTX4LHY6o7j6w@mail.gmail.com>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, 
	Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 18, 2024 at 1:59=E2=80=AFPM Roger Pau Monn=C3=A9 <roger.pau@cit=
rix.com> wrote:
>
> On Fri, Oct 18, 2024 at 01:48:27PM +0100, Frediano Ziglio wrote:
> > On Fri, Oct 18, 2024 at 12:41=E2=80=AFPM Roger Pau Monn=C3=A9 <roger.pa=
u@citrix.com> wrote:
> > >
> > > On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> > > > +#define DECLARE_IMPORT(name) name =3D . + (__LINE__ * MULT)
> > > > +
> > > > +ENTRY(dummy_start)
> > > >
> > > >  SECTIONS
> > > >  {
> > > >    /* Merge code and data into one section. */
> > > > -  .text : {
> > > > +  .text TEXT_START : {
> > > > +        /* Silence linker warning, we are not going to use it */
> > > > +        dummy_start =3D .;
> > > > +
> > > > +        /* Declare below any symbol name needed.
> > > > +         * Each symbol should be on its own line.
> > > > +         * It looks like a tedious work but we make sure the thing=
s we use.
> > > > +         * Potentially they should be all variables. */
> > >
> > > The style is wrong for the opening and closing comment delimiters.
> > >
> > > I think it would be best if this was written in a more natural style.
> > >
> > > /*
> > >  * Any symbols used should be declared below, this ensures which
> > >  * symbols are visible to the 32bit C boot code.
> > >  */
> > >
> >
> > But why to remove the "Potentially they should be all variables.".
> > Surely something not written is more clear than something written, but
> > on the other way it carries no information.
>
> I'm not sure I understand why this is helpful: either they are
> mandated to be only variables, and hence the "potentially" is wrong, or
> they are not, in which case I don't see why spelling a desire for they
> to be only variables is helpful if it's not a strict requirement.
>

As normal, rules often have exceptions. Most of the functions (so
code) in Xen is 64 bit, so you don't want to use them. However, saying
you have a function in head.S written in assembly for 32 bit (or any
other functions written for 32 bit), you want the possibility to call
it. For instance you could export from head.S the function to output
to serial in the future.

About variables... are all variables fine to be accessed from these
functions? Probably yes if they have no pointers in them. If they have
pointers... that's another matter. Does the pointer have relocation?
Is it going to be used at the final defined program location or only
during initialization? To make an example, you could override a NULL
pointer (that is, without relocation) to a current symbol, if this
pointer is used after Xen is moved into its final position it will
become invalid. If, on the other hand, the pointer had relocation
potentially it will be automatically be relocated.

> Thanks, Roger.

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:49:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:49:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821952.1235938 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nMU-0006Nd-JS; Fri, 18 Oct 2024 13:49:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821952.1235938; Fri, 18 Oct 2024 13:49: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 1t1nMU-0006NW-GU; Fri, 18 Oct 2024 13:49:50 +0000
Received: by outflank-mailman (input) for mailman id 821952;
 Fri, 18 Oct 2024 13:49:49 +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 1t1nMT-0006NC-EW
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:49:49 +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 1t1nMT-0005Iw-6g; Fri, 18 Oct 2024 13:49:49 +0000
Received: from [2a02:8012:3a1:0:ecee:6c05:256c:cbd3]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1nMS-0008QZ-Ve; Fri, 18 Oct 2024 13:49: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=vnd9TW+w9BTHCty5NNSxtmfD7HJd02zpAyMyszh1xdU=; b=3yc6C0Ms0XlCg+o/mwvqFYMD3P
	0V0e60e86Cae1QAw5nhwThz1LO5jccOK+PHveHQosFT37zBptUIj0tlVjiA87RTtvXn4BButUEsMb
	NI+saFXcIt7pVEd92hvNi6SfjPgxZXDeRt48/HQlKkTvHYG9uEZqhc1OquJPHJmCoJjE=;
Message-ID: <494e17ee-73be-4afe-873d-fd0b3cc49901@xen.org>
Date: Fri, 18 Oct 2024 14:49:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.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: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-3-ayan.kumar.halder@amd.com>
 <9A01BB97-2CA9-491F-80EA-7B7D81B553AD@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <9A01BB97-2CA9-491F-80EA-7B7D81B553AD@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 14/10/2024 19:43, Luca Fancellu wrote:
> Hi Ayan,
> 
>> On 10 Oct 2024, at 15:03, Ayan Kumar Halder <ayan.kumar.halder@amd.com> wrote:
>>
>> There are features in the forthcoming patches which are dependent on
>> MPU. For eg fixed start address.
>> Also, some of the Xen features (eg STATIC_MEMORY) will be selected
>> by the MPU configuration.
>>
>> Thus, this patch introduces a choice between MMU and MPU for the type
>> of memory management system. By default, MMU is selected.
>> MPU is now gated by UNSUPPORTED.
>>
>> Update SUPPORT.md to state that the support for MPU is experimental.
> 
> Maybe I’m wrong, but shouldn’t we add this only when MPU is supported?

The support of the MPU will happen quite a long way down the line. We 
will first start with experimental (which implies the code may or may 
not work) and I think this is correct to do that now.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:57:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:57:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821960.1235947 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nU5-0003SU-A4; Fri, 18 Oct 2024 13:57:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821960.1235947; Fri, 18 Oct 2024 13:57: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 1t1nU5-0003SN-7I; Fri, 18 Oct 2024 13:57:41 +0000
Received: by outflank-mailman (input) for mailman id 821960;
 Fri, 18 Oct 2024 13:57: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1nU3-0003R5-AU
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:57:39 +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 eedd1d02-8d58-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 15:57:37 +0200 (CEST)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2fb56cb61baso17742001fa.1
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 06:57:37 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ca0b08ad15sm782732a12.40.2024.10.18.06.57.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 06:57:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eedd1d02-8d58-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729259857; x=1729864657; 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=MFi1IpE2RMbe/hgN3OTHgA1rDMwAOtf6si8ZyzGxviE=;
        b=ECKZeIz6wDvUFnihlmhIZW58WTeWR7t+mPbCxoIMjJWRhs5UPBuNcP2F7etxXCcS9m
         8//k7+VMu5KSsmOG7EAOlwO5BhHe0JhbeqOku77+mguJLh+DD4lGCJNwQQbxEjz00UD/
         Eme3bJrm8HlT12p+806sXQ5NZkcfnfdxYXejk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729259857; x=1729864657;
        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=MFi1IpE2RMbe/hgN3OTHgA1rDMwAOtf6si8ZyzGxviE=;
        b=nInivdV9aEXwrQLGnj98H88iL05QAk4Dogv/o0Y2WViHXaFlZ9YbLqXSWPyC27EIvh
         sb+E5GtQfL+9ak6jjzYMDlLTAW61Pc6/UnxS6uZyJIeh2aNxWbKYoh/MPUMEr/PS1zRp
         l+FcitgxYduoKMdXeJ0K2KcI2pRJQ28nXa0BX7xNaw0F/4a0g66e3KTPXB3lUyYK3rge
         GjJ+PrrwpaTDz4ic7vGsdGg/CsxknLj/QaAI4/2YjGMGLn1WTKtK/CVOPBSIPnlweWxg
         srAjZIgfNOQV81IFJWUh+314UcY7bZ79hUP8Suc0tf3dyElzngXTkRzv7Ha3Ik7m91gG
         Eo5g==
X-Gm-Message-State: AOJu0Yz+JqFeMv0tY58HZW8/C0CZ2b4zAkRBOyevWlDaMsV+rA0fRB2A
	yxvGXNERLvdtLyUrup3uZ3y7/Be8Wrr77ncDr5utBmRJGaJemle95BYPSFvVSyfFTnGGK5EjxW/
	1
X-Google-Smtp-Source: AGHT+IF7mpSWS3LHvMxCgx5QyqALjZvMOWjzLsYAJC3DIAZ6KiUL7CBVRwZdAbHuXLYDxZeXtTHU+w==
X-Received: by 2002:a05:651c:2228:b0:2fb:57b7:5cd with SMTP id 38308e7fff4ca-2fb82e90c47mr13668911fa.7.1729259856526;
        Fri, 18 Oct 2024 06:57:36 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@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=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Ross Lagerwall <ross.lagerwall@citrix.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>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Paul Durrant <paul@xen.org>,
	Dario Faggioli <dfaggioli@suse.com>,
	Juergen Gross <jgross@suse.com>,
	George Dunlap <gwd@xenproject.org>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH v2] Update deprecated SPDX license identifiers
Date: Fri, 18 Oct 2024 14:57:25 +0100
Message-Id: <20241018135725.2357572-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

As specified in LICENSES/GPL-2.0:
- GPL-2.0 -> GPL-2.0-only;
- GPL-2.0+ -> GPL-2.0-or-later.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
 CODING_STYLE                                 | 2 +-
 xen/arch/arm/alternative.c                   | 2 +-
 xen/arch/arm/arm32/mmu/mm.c                  | 2 +-
 xen/arch/arm/arm64/mmu/mm.c                  | 2 +-
 xen/arch/arm/cpuerrata.c                     | 2 +-
 xen/arch/arm/cpufeature.c                    | 2 +-
 xen/arch/arm/dm.c                            | 2 +-
 xen/arch/arm/domain_build.c                  | 2 +-
 xen/arch/arm/domctl.c                        | 2 +-
 xen/arch/arm/early_printk.c                  | 2 +-
 xen/arch/arm/gic-v3-its.c                    | 2 +-
 xen/arch/arm/gic-v3-lpi.c                    | 2 +-
 xen/arch/arm/guest_atomics.c                 | 2 +-
 xen/arch/arm/guest_walk.c                    | 2 +-
 xen/arch/arm/guestcopy.c                     | 2 +-
 xen/arch/arm/hvm.c                           | 2 +-
 xen/arch/arm/include/asm/nospec.h            | 2 +-
 xen/arch/arm/ioreq.c                         | 2 +-
 xen/arch/arm/kernel.c                        | 2 +-
 xen/arch/arm/livepatch.c                     | 2 +-
 xen/arch/arm/mem_access.c                    | 2 +-
 xen/arch/arm/mmu/p2m.c                       | 2 +-
 xen/arch/arm/monitor.c                       | 2 +-
 xen/arch/arm/p2m.c                           | 2 +-
 xen/arch/arm/physdev.c                       | 2 +-
 xen/arch/arm/platform_hypercall.c            | 2 +-
 xen/arch/arm/shutdown.c                      | 2 +-
 xen/arch/arm/smp.c                           | 2 +-
 xen/arch/arm/sysctl.c                        | 2 +-
 xen/arch/arm/vgic-v3-its.c                   | 2 +-
 xen/arch/arm/vm_event.c                      | 2 +-
 xen/arch/arm/vpl011.c                        | 2 +-
 xen/arch/arm/vsmc.c                          | 2 +-
 xen/arch/riscv/early_printk.c                | 2 +-
 xen/arch/riscv/include/asm/acpi.h            | 2 +-
 xen/arch/riscv/include/asm/bitops.h          | 2 +-
 xen/arch/riscv/include/asm/bug.h             | 2 +-
 xen/arch/riscv/include/asm/cache.h           | 2 +-
 xen/arch/riscv/include/asm/string.h          | 2 +-
 xen/arch/x86/cpu/mcheck/intel-nonfatal.c     | 2 +-
 xen/arch/x86/debug.c                         | 2 +-
 xen/arch/x86/hvm/svm/nestedhvm.h             | 2 +-
 xen/arch/x86/hvm/svm/svm.h                   | 2 +-
 xen/arch/x86/include/asm/gdbsx.h             | 2 +-
 xen/arch/x86/include/asm/guest/hyperv-tlfs.h | 2 +-
 xen/arch/x86/include/asm/intel-family.h      | 2 +-
 xen/arch/x86/include/asm/nospec.h            | 2 +-
 xen/arch/x86/include/asm/prot-key.h          | 2 +-
 xen/common/device-tree/bootfdt.c             | 2 +-
 xen/common/sched/boot-cpupool.c              | 2 +-
 xen/include/asm-generic/atomic-ops.h         | 2 +-
 xen/include/asm-generic/monitor.h            | 2 +-
 xen/include/xen/alternative-call.h           | 2 +-
 xen/include/xen/nospec.h                     | 2 +-
 xen/include/xen/unaligned.h                  | 2 +-
 xen/tools/kconfig/expr.h                     | 2 +-
 xen/tools/kconfig/images.h                   | 2 +-
 xen/tools/kconfig/lexer.l                    | 2 +-
 xen/tools/kconfig/list.h                     | 2 +-
 xen/tools/kconfig/lkc.h                      | 2 +-
 xen/tools/kconfig/lkc_proto.h                | 2 +-
 xen/tools/kconfig/lxdialog/checklist.c       | 2 +-
 xen/tools/kconfig/lxdialog/dialog.h          | 2 +-
 xen/tools/kconfig/lxdialog/inputbox.c        | 2 +-
 xen/tools/kconfig/lxdialog/menubox.c         | 2 +-
 xen/tools/kconfig/lxdialog/textbox.c         | 2 +-
 xen/tools/kconfig/lxdialog/util.c            | 2 +-
 xen/tools/kconfig/lxdialog/yesno.c           | 2 +-
 xen/tools/kconfig/nconf.h                    | 2 +-
 xen/tools/kconfig/parser.y                   | 2 +-
 xen/tools/kconfig/qconf.h                    | 2 +-
 71 files changed, 71 insertions(+), 71 deletions(-)

diff --git a/CODING_STYLE b/CODING_STYLE
index 554c69a16a..e3b1da6048 100644
--- a/CODING_STYLE
+++ b/CODING_STYLE
@@ -20,7 +20,7 @@ SPDX
 New files should start with a single-line SPDX comment to express the
 license, e.g.:
 
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 
 See LICENSES/ for a list of licenses and SPDX tags currently used.
 
diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
index c56caba010..d99b507093 100644
--- a/xen/arch/arm/alternative.c
+++ b/xen/arch/arm/alternative.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * alternative runtime patching
  * inspired by the x86 version
diff --git a/xen/arch/arm/arm32/mmu/mm.c b/xen/arch/arm/arm32/mmu/mm.c
index 30a7aa1e8e..063611412b 100644
--- a/xen/arch/arm/arm32/mmu/mm.c
+++ b/xen/arch/arm/arm32/mmu/mm.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <xen/init.h>
 #include <xen/lib.h>
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index 0de4f3c079..671eaadbc1 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 
 #include <xen/init.h>
 #include <xen/mm.h>
diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
index afd0605922..eef9c0ea0e 100644
--- a/xen/arch/arm/cpuerrata.c
+++ b/xen/arch/arm/cpuerrata.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/cpu.h>
 #include <xen/cpumask.h>
 #include <xen/init.h>
diff --git a/xen/arch/arm/cpufeature.c b/xen/arch/arm/cpufeature.c
index b45dbe3c66..1a80738571 100644
--- a/xen/arch/arm/cpufeature.c
+++ b/xen/arch/arm/cpufeature.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Contains CPU feature definitions
  *
diff --git a/xen/arch/arm/dm.c b/xen/arch/arm/dm.c
index 5569efa121..773a0a2592 100644
--- a/xen/arch/arm/dm.c
+++ b/xen/arch/arm/dm.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (c) 2019 Arm ltd.
  */
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 669970c86f..2c30792de8 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/init.h>
 #include <xen/compile.h>
 #include <xen/lib.h>
diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c
index 12a12ee781..9d047065ba 100644
--- a/xen/arch/arm/domctl.c
+++ b/xen/arch/arm/domctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /******************************************************************************
  * Arch-specific domctl.c
  *
diff --git a/xen/arch/arm/early_printk.c b/xen/arch/arm/early_printk.c
index 03cbe0fb88..9c54f77c78 100644
--- a/xen/arch/arm/early_printk.c
+++ b/xen/arch/arm/early_printk.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * printk() for use before the final page tables are setup.
  *
diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
index 55bed3fe87..5fd83af25a 100644
--- a/xen/arch/arm/gic-v3-its.c
+++ b/xen/arch/arm/gic-v3-its.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * xen/arch/arm/gic-v3-its.c
  *
diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
index eb0a5535e4..de4b0eb4a4 100644
--- a/xen/arch/arm/gic-v3-lpi.c
+++ b/xen/arch/arm/gic-v3-lpi.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * xen/arch/arm/gic-v3-lpi.c
  *
diff --git a/xen/arch/arm/guest_atomics.c b/xen/arch/arm/guest_atomics.c
index 6ba77f082d..678b57d197 100644
--- a/xen/arch/arm/guest_atomics.c
+++ b/xen/arch/arm/guest_atomics.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * arch/arm/guest_atomics.c
  */
diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
index 2f7d3a0da7..09fe486598 100644
--- a/xen/arch/arm/guest_walk.c
+++ b/xen/arch/arm/guest_walk.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Guest page table walk
  * Copyright (c) 2017 Sergej Proskurin <proskurin@sec.in.tum.de>
diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c
index 6716b03561..497e785ec4 100644
--- a/xen/arch/arm/guestcopy.c
+++ b/xen/arch/arm/guestcopy.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/domain_page.h>
 #include <xen/guest_access.h>
 #include <xen/lib.h>
diff --git a/xen/arch/arm/hvm.c b/xen/arch/arm/hvm.c
index 0989309fea..86e49bf474 100644
--- a/xen/arch/arm/hvm.c
+++ b/xen/arch/arm/hvm.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * arch/arm/hvm.c
  *
diff --git a/xen/arch/arm/include/asm/nospec.h b/xen/arch/arm/include/asm/nospec.h
index efac51fc03..9c70eed605 100644
--- a/xen/arch/arm/include/asm/nospec.h
+++ b/xen/arch/arm/include/asm/nospec.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
 #ifndef _ASM_ARM_NOSPEC_H
diff --git a/xen/arch/arm/ioreq.c b/xen/arch/arm/ioreq.c
index 2e829d2e7f..b4211f0159 100644
--- a/xen/arch/arm/ioreq.c
+++ b/xen/arch/arm/ioreq.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * arm/ioreq.c: hardware virtual machine I/O emulation
  *
diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
index 674388fa11..669d143cee 100644
--- a/xen/arch/arm/kernel.c
+++ b/xen/arch/arm/kernel.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Kernel image loading.
  *
diff --git a/xen/arch/arm/livepatch.c b/xen/arch/arm/livepatch.c
index bbca1e5a5e..037746d952 100644
--- a/xen/arch/arm/livepatch.c
+++ b/xen/arch/arm/livepatch.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  *  Copyright (C) 2016 Citrix Systems R&D Ltd.
  */
diff --git a/xen/arch/arm/mem_access.c b/xen/arch/arm/mem_access.c
index 31db846354..0ec3462364 100644
--- a/xen/arch/arm/mem_access.c
+++ b/xen/arch/arm/mem_access.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * arch/arm/mem_access.c
  *
diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 1725cca649..bfa312cc8a 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/cpu.h>
 #include <xen/domain_page.h>
 #include <xen/ioreq.h>
diff --git a/xen/arch/arm/monitor.c b/xen/arch/arm/monitor.c
index 6c93a9e993..49f5df8513 100644
--- a/xen/arch/arm/monitor.c
+++ b/xen/arch/arm/monitor.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * arch/arm/monitor.c
  *
diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index 2465c266e9..65b70955e3 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/iocap.h>
 #include <xen/lib.h>
 #include <xen/sched.h>
diff --git a/xen/arch/arm/physdev.c b/xen/arch/arm/physdev.c
index 7b1682ee10..d63a8bf5ae 100644
--- a/xen/arch/arm/physdev.c
+++ b/xen/arch/arm/physdev.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /******************************************************************************
  * Arch-specific physdev.c
  *
diff --git a/xen/arch/arm/platform_hypercall.c b/xen/arch/arm/platform_hypercall.c
index fde4bc3e58..ac55622426 100644
--- a/xen/arch/arm/platform_hypercall.c
+++ b/xen/arch/arm/platform_hypercall.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /******************************************************************************
  * platform_hypercall.c
  *
diff --git a/xen/arch/arm/shutdown.c b/xen/arch/arm/shutdown.c
index 205a5e7f8c..c9778e5786 100644
--- a/xen/arch/arm/shutdown.c
+++ b/xen/arch/arm/shutdown.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/console.h>
 #include <xen/cpu.h>
 #include <xen/delay.h>
diff --git a/xen/arch/arm/smp.c b/xen/arch/arm/smp.c
index bb65a08fc1..c11bba93ad 100644
--- a/xen/arch/arm/smp.c
+++ b/xen/arch/arm/smp.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <xen/mm.h>
 #include <asm/system.h>
 #include <asm/smp.h>
diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c
index 5cda0dc674..32cab4feff 100644
--- a/xen/arch/arm/sysctl.c
+++ b/xen/arch/arm/sysctl.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /******************************************************************************
  * Arch-specific sysctl.c
  *
diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
index 70b5aeb822..c65c1dbf52 100644
--- a/xen/arch/arm/vgic-v3-its.c
+++ b/xen/arch/arm/vgic-v3-its.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * xen/arch/arm/vgic-v3-its.c
  *
diff --git a/xen/arch/arm/vm_event.c b/xen/arch/arm/vm_event.c
index ccfd25bbbc..31812d9da3 100644
--- a/xen/arch/arm/vm_event.c
+++ b/xen/arch/arm/vm_event.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * arch/arm/vm_event.c
  *
diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
index 7856b4b5f5..1fc3114cce 100644
--- a/xen/arch/arm/vpl011.c
+++ b/xen/arch/arm/vpl011.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * arch/arm/vpl011.c
  *
diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
index 7f2f5eb9ce..f679cced7f 100644
--- a/xen/arch/arm/vsmc.c
+++ b/xen/arch/arm/vsmc.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * xen/arch/arm/vsmc.c
  *
diff --git a/xen/arch/riscv/early_printk.c b/xen/arch/riscv/early_printk.c
index 610c814f54..634141354c 100644
--- a/xen/arch/riscv/early_printk.c
+++ b/xen/arch/riscv/early_printk.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * RISC-V early printk using SBI
  *
diff --git a/xen/arch/riscv/include/asm/acpi.h b/xen/arch/riscv/include/asm/acpi.h
index f0b5e90969..0c553bd6b8 100644
--- a/xen/arch/riscv/include/asm/acpi.h
+++ b/xen/arch/riscv/include/asm/acpi.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 
 #ifndef ASM__RISCV__ACPI_H
 #define ASM__RISCV__ACPI_H
diff --git a/xen/arch/riscv/include/asm/bitops.h b/xen/arch/riscv/include/asm/bitops.h
index 9a6f576187..d22eec1e87 100644
--- a/xen/arch/riscv/include/asm/bitops.h
+++ b/xen/arch/riscv/include/asm/bitops.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright (C) 2012 Regents of the University of California */
 
 #ifndef ASM__RISCV__BITOPS_H
diff --git a/xen/arch/riscv/include/asm/bug.h b/xen/arch/riscv/include/asm/bug.h
index fa18dba20e..c395b809c6 100644
--- a/xen/arch/riscv/include/asm/bug.h
+++ b/xen/arch/riscv/include/asm/bug.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2012 Regents of the University of California
  * Copyright (C) 2021-2023 Vates
diff --git a/xen/arch/riscv/include/asm/cache.h b/xen/arch/riscv/include/asm/cache.h
index 9a9e5162ab..d4cf1ac8e2 100644
--- a/xen/arch/riscv/include/asm/cache.h
+++ b/xen/arch/riscv/include/asm/cache.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 
 #ifndef ASM__RISCV__CACHE_H
 #define ASM__RISCV__CACHE_H
diff --git a/xen/arch/riscv/include/asm/string.h b/xen/arch/riscv/include/asm/string.h
index 75a2048fb1..a20af81f67 100644
--- a/xen/arch/riscv/include/asm/string.h
+++ b/xen/arch/riscv/include/asm/string.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 
 #ifndef ASM__RISCV__STRING_H
 #define ASM__RISCV__STRING_H
diff --git a/xen/arch/x86/cpu/mcheck/intel-nonfatal.c b/xen/arch/x86/cpu/mcheck/intel-nonfatal.c
index 092a828812..607c0f88c9 100644
--- a/xen/arch/x86/cpu/mcheck/intel-nonfatal.c
+++ b/xen/arch/x86/cpu/mcheck/intel-nonfatal.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Non Fatal Machine Check Exception Reporting
  * (C) Copyright 2002 Dave Jones. <davej@codemonkey.org.uk>
diff --git a/xen/arch/x86/debug.c b/xen/arch/x86/debug.c
index b10f1f12b6..e99e663ba5 100644
--- a/xen/arch/x86/debug.c
+++ b/xen/arch/x86/debug.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2023 XenServer.
  */
diff --git a/xen/arch/x86/hvm/svm/nestedhvm.h b/xen/arch/x86/hvm/svm/nestedhvm.h
index 43245e13de..9bfed5ffd7 100644
--- a/xen/arch/x86/hvm/svm/nestedhvm.h
+++ b/xen/arch/x86/hvm/svm/nestedhvm.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * nestedsvm.h: Nested Virtualization
  *
diff --git a/xen/arch/x86/hvm/svm/svm.h b/xen/arch/x86/hvm/svm/svm.h
index 8dbf37ff49..beeaaab4f7 100644
--- a/xen/arch/x86/hvm/svm/svm.h
+++ b/xen/arch/x86/hvm/svm/svm.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * svm.h: SVM Architecture related definitions
  *
diff --git a/xen/arch/x86/include/asm/gdbsx.h b/xen/arch/x86/include/asm/gdbsx.h
index e906be9ea3..6315a7cfeb 100644
--- a/xen/arch/x86/include/asm/gdbsx.h
+++ b/xen/arch/x86/include/asm/gdbsx.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #ifndef __X86_GDBX_H__
 #define __X86_GDBX_H__
 
diff --git a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
index a6915ad731..79cfc90dd8 100644
--- a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
+++ b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 
 /*
  * This file contains definitions from Hyper-V Hypervisor Top-Level Functional
diff --git a/xen/arch/x86/include/asm/intel-family.h b/xen/arch/x86/include/asm/intel-family.h
index d44dd3f69f..ab20cce124 100644
--- a/xen/arch/x86/include/asm/intel-family.h
+++ b/xen/arch/x86/include/asm/intel-family.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #ifndef _ASM_X86_INTEL_FAMILY_H
 #define _ASM_X86_INTEL_FAMILY_H
 
diff --git a/xen/arch/x86/include/asm/nospec.h b/xen/arch/x86/include/asm/nospec.h
index e058a3bb0e..150e78e884 100644
--- a/xen/arch/x86/include/asm/nospec.h
+++ b/xen/arch/x86/include/asm/nospec.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
 
 #ifndef _ASM_X86_NOSPEC_H
diff --git a/xen/arch/x86/include/asm/prot-key.h b/xen/arch/x86/include/asm/prot-key.h
index 0dcd31b7ea..0cbecc2df4 100644
--- a/xen/arch/x86/include/asm/prot-key.h
+++ b/xen/arch/x86/include/asm/prot-key.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (c) 2021-2022 Citrix Systems Ltd.
  */
diff --git a/xen/common/device-tree/bootfdt.c b/xen/common/device-tree/bootfdt.c
index 911a630e7d..927f59c64b 100644
--- a/xen/common/device-tree/bootfdt.c
+++ b/xen/common/device-tree/bootfdt.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Early Device Tree
  *
diff --git a/xen/common/sched/boot-cpupool.c b/xen/common/sched/boot-cpupool.c
index feeac3b704..641f3495cb 100644
--- a/xen/common/sched/boot-cpupool.c
+++ b/xen/common/sched/boot-cpupool.c
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * xen/common/boot_cpupools.c
  *
diff --git a/xen/include/asm-generic/atomic-ops.h b/xen/include/asm-generic/atomic-ops.h
index 98dd907942..769583b766 100644
--- a/xen/include/asm-generic/atomic-ops.h
+++ b/xen/include/asm-generic/atomic-ops.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * The header provides default implementations for every xen/atomic.h-provided
  * forward inline declaration that can be synthesized from other atomic
diff --git a/xen/include/asm-generic/monitor.h b/xen/include/asm-generic/monitor.h
index 1ade289099..cad2b6ff24 100644
--- a/xen/include/asm-generic/monitor.h
+++ b/xen/include/asm-generic/monitor.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * include/asm-generic/monitor.h
  *
diff --git a/xen/include/xen/alternative-call.h b/xen/include/xen/alternative-call.h
index 10f7d7637e..62672b7324 100644
--- a/xen/include/xen/alternative-call.h
+++ b/xen/include/xen/alternative-call.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #ifndef XEN_ALTERNATIVE_CALL
 #define XEN_ALTERNATIVE_CALL
 
diff --git a/xen/include/xen/nospec.h b/xen/include/xen/nospec.h
index 828dbd4e0a..c8167a8a24 100644
--- a/xen/include/xen/nospec.h
+++ b/xen/include/xen/nospec.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /* Copyright(c) 2018 Linus Torvalds. All rights reserved. */
 /* Copyright(c) 2018 Alexei Starovoitov. All rights reserved. */
 /* Copyright(c) 2018 Intel Corporation. All rights reserved. */
diff --git a/xen/include/xen/unaligned.h b/xen/include/xen/unaligned.h
index d9bb599e65..8c8b08338b 100644
--- a/xen/include/xen/unaligned.h
+++ b/xen/include/xen/unaligned.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #ifndef __XEN_UNALIGNED_H__
 #define __XEN_UNALIGNED_H__
 
diff --git a/xen/tools/kconfig/expr.h b/xen/tools/kconfig/expr.h
index 017843c9a4..fd08add33f 100644
--- a/xen/tools/kconfig/expr.h
+++ b/xen/tools/kconfig/expr.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
diff --git a/xen/tools/kconfig/images.h b/xen/tools/kconfig/images.h
index d8ff614bd0..565466511d 100644
--- a/xen/tools/kconfig/images.h
+++ b/xen/tools/kconfig/images.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
diff --git a/xen/tools/kconfig/lexer.l b/xen/tools/kconfig/lexer.l
index 4b7339ff4c..1e57543900 100644
--- a/xen/tools/kconfig/lexer.l
+++ b/xen/tools/kconfig/lexer.l
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
diff --git a/xen/tools/kconfig/list.h b/xen/tools/kconfig/list.h
index 45cb237ab7..979cd516d6 100644
--- a/xen/tools/kconfig/list.h
+++ b/xen/tools/kconfig/list.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #ifndef LIST_H
 #define LIST_H
 
diff --git a/xen/tools/kconfig/lkc.h b/xen/tools/kconfig/lkc.h
index 4fb16f3166..18282e7b0b 100644
--- a/xen/tools/kconfig/lkc.h
+++ b/xen/tools/kconfig/lkc.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
diff --git a/xen/tools/kconfig/lkc_proto.h b/xen/tools/kconfig/lkc_proto.h
index f9ab98238a..7598a2ef20 100644
--- a/xen/tools/kconfig/lkc_proto.h
+++ b/xen/tools/kconfig/lkc_proto.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 #include <stdarg.h>
 
 /* confdata.c */
diff --git a/xen/tools/kconfig/lxdialog/checklist.c b/xen/tools/kconfig/lxdialog/checklist.c
index fd161cfff1..29960ed000 100644
--- a/xen/tools/kconfig/lxdialog/checklist.c
+++ b/xen/tools/kconfig/lxdialog/checklist.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  *  checklist.c -- implements the checklist box
  *
diff --git a/xen/tools/kconfig/lxdialog/dialog.h b/xen/tools/kconfig/lxdialog/dialog.h
index 68b565e3c4..3930d93a4a 100644
--- a/xen/tools/kconfig/lxdialog/dialog.h
+++ b/xen/tools/kconfig/lxdialog/dialog.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
+/* SPDX-License-Identifier: GPL-2.0-or-later */
 /*
  *  dialog.h -- common declarations for all dialog modules
  *
diff --git a/xen/tools/kconfig/lxdialog/inputbox.c b/xen/tools/kconfig/lxdialog/inputbox.c
index 1dcfb288ee..b8b6f15779 100644
--- a/xen/tools/kconfig/lxdialog/inputbox.c
+++ b/xen/tools/kconfig/lxdialog/inputbox.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  *  inputbox.c -- implements the input box
  *
diff --git a/xen/tools/kconfig/lxdialog/menubox.c b/xen/tools/kconfig/lxdialog/menubox.c
index 58c2f8afe5..4287745566 100644
--- a/xen/tools/kconfig/lxdialog/menubox.c
+++ b/xen/tools/kconfig/lxdialog/menubox.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  *  menubox.c -- implements the menu box
  *
diff --git a/xen/tools/kconfig/lxdialog/textbox.c b/xen/tools/kconfig/lxdialog/textbox.c
index 4e339b1266..b5987735b0 100644
--- a/xen/tools/kconfig/lxdialog/textbox.c
+++ b/xen/tools/kconfig/lxdialog/textbox.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  *  textbox.c -- implements the text box
  *
diff --git a/xen/tools/kconfig/lxdialog/util.c b/xen/tools/kconfig/lxdialog/util.c
index 1b490d4af0..0de2b05352 100644
--- a/xen/tools/kconfig/lxdialog/util.c
+++ b/xen/tools/kconfig/lxdialog/util.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  *  util.c
  *
diff --git a/xen/tools/kconfig/lxdialog/yesno.c b/xen/tools/kconfig/lxdialog/yesno.c
index bcaac9b7ba..ff1db42b3d 100644
--- a/xen/tools/kconfig/lxdialog/yesno.c
+++ b/xen/tools/kconfig/lxdialog/yesno.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: GPL-2.0+
+// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  *  yesno.c -- implements the yes/no box
  *
diff --git a/xen/tools/kconfig/nconf.h b/xen/tools/kconfig/nconf.h
index fa5245eb93..eab138b30d 100644
--- a/xen/tools/kconfig/nconf.h
+++ b/xen/tools/kconfig/nconf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com>
  *
diff --git a/xen/tools/kconfig/parser.y b/xen/tools/kconfig/parser.y
index 822fc89fc8..5bac26bd91 100644
--- a/xen/tools/kconfig/parser.y
+++ b/xen/tools/kconfig/parser.y
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
diff --git a/xen/tools/kconfig/qconf.h b/xen/tools/kconfig/qconf.h
index 45bfe9b2b9..61ecd5bdab 100644
--- a/xen/tools/kconfig/qconf.h
+++ b/xen/tools/kconfig/qconf.h
@@ -1,4 +1,4 @@
-/* SPDX-License-Identifier: GPL-2.0 */
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
  */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 13:58:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 13:58:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821969.1235958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nVB-0004gz-Lj; Fri, 18 Oct 2024 13:58:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821969.1235958; Fri, 18 Oct 2024 13: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 1t1nVB-0004gs-In; Fri, 18 Oct 2024 13:58:49 +0000
Received: by outflank-mailman (input) for mailman id 821969;
 Fri, 18 Oct 2024 13:58: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=SHZo=RO=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t1nVA-0004gg-Kl
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 13:58:48 +0000
Received: from mail-oi1-x22a.google.com (mail-oi1-x22a.google.com
 [2607:f8b0:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1825cb38-8d59-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 15:58:47 +0200 (CEST)
Received: by mail-oi1-x22a.google.com with SMTP id
 5614622812f47-3e5ef9e795bso1184534b6e.0
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 06:58:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1825cb38-8d59-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729259926; x=1729864726; 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=XNaz/Tu5QWDWGclW8gPyNnm7G2uCfGFowGZcOL34N3I=;
        b=gfLVN+XIQqf522lSqOnJ1FEUpLZtyv/UADR766JNwhaSqj+E8XJlXgjHq4rDV1wenI
         wKBAoxLCpiraRW2wP3k7eXVjIYHmB72bsQiK0qE+HGTCgh3bUh06JuZstvrzSXyRENR/
         u7J37Txpfbcm59Vl+LN13zBHM1YRU3Hmy1kzU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729259926; x=1729864726;
        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=XNaz/Tu5QWDWGclW8gPyNnm7G2uCfGFowGZcOL34N3I=;
        b=gP/yeXOKvOfWcT0FJuFdJLFFFqR2mVu/lI0EQH28+vf0e8n9jN/8S39hWMfzH/2X2C
         6YwcNfWZcR3OabDpvu4wPENMqVVThrA5D+mJYspctE6A5mIbmr5IlGQNBFR8F+FSh6gE
         rYSK/UE09aLOE4gETxJtss1mk8pOQoJX05dp7czeaUcw9P8BlE3HeN1eZt6auutXGpwb
         PU6v5lo3k/1OxK4MYXRDhrt7GKJfk/6RSdDNeCqW+F+HRnidC1b8mIiuizSHmkbSj7Sc
         BWbbtziScDqJiTTpGuPy6EIgiXBXykSmUWNLaw4syXhpm6WZj+mbV9+OJc+H5N/ONzVL
         Ap9g==
X-Gm-Message-State: AOJu0YxQSlNn884EwY9vj56a7DMYn337Wugf8SJHDlRYZe/816VcGeYw
	OQnzRPfqFN3z8PAB13pD4kxzpn8HNLFQ2F543y2TwJrAi4+hy73jbkuGp+IT3Pprk4ej4oasUiG
	T2tS4i4T5pYUH6GmH+7vTXLdTxJfRm4deWiCj3A==
X-Google-Smtp-Source: AGHT+IHAFBU2I8JTI28taF26kJamIONYxEaZoUYYbHgZb5f7Jndphi6zQBTv7tBsF/EIOzYfOIW8ODGfp5lf7qiHuPg=
X-Received: by 2002:a05:6808:1818:b0:3e3:e592:7c24 with SMTP id
 5614622812f47-3e602dbbee2mr2011268b6e.40.1729259926247; Fri, 18 Oct 2024
 06:58:46 -0700 (PDT)
MIME-Version: 1.0
References: <20240926095133.483619-1-frediano.ziglio@cloud.com>
 <CACHz=ZgwcejTF0Yz5vchVy18Hn15LYp_R8Y1LqOA=qAHK-HRiA@mail.gmail.com>
 <CACHz=Zh9r7xFSsq3vxdBfss1ozJC1neoTFs4Dvpw+xeQiUFTsg@mail.gmail.com>
 <6d5bad39-1a20-4cef-a1c5-aaa99c501941@xen.org> <CACHz=ZhGUG8tihk6vVTLk6fJOe1mFk=Mep-YOB0ci46JsKJKEw@mail.gmail.com>
 <8a57ee10-1440-4c9f-b961-fb9d1220b104@xen.org>
In-Reply-To: <8a57ee10-1440-4c9f-b961-fb9d1220b104@xen.org>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Fri, 18 Oct 2024 14:58:34 +0100
Message-ID: <CACHz=Zhpc-B3J+k7giDt8-T71cgga9JtcZUN0nvyCYe-dV1qjQ@mail.gmail.com>
Subject: Re: [PATCH] Update deprecated SPDX license identifiers
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, 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>, 
	Ross Lagerwall <ross.lagerwall@citrix.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>, Elena Ufimtseva <elena.ufimtseva@oracle.com>, 
	Paul Durrant <paul@xen.org>, Dario Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>, 
	George Dunlap <gwd@xenproject.org>, Doug Goldstein <cardoe@cardoe.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Oct 18, 2024 at 1:54=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
>
> Hi,
>
> On 18/10/2024 13:28, Frediano Ziglio wrote:
> > On Fri, Oct 18, 2024 at 1:11=E2=80=AFPM Julien Grall <julien@xen.org> w=
rote:
> >>
> >> Hi Frediano,
> >>
> >> On 18/10/2024 13:07, Frediano Ziglio wrote:
> >>> On Fri, Oct 4, 2024 at 9:08=E2=80=AFAM Frediano Ziglio
> >>> <frediano.ziglio@cloud.com> wrote:
> >>>>
> >>>> On Thu, Sep 26, 2024 at 10:51=E2=80=AFAM Frediano Ziglio
> >>>> <frediano.ziglio@cloud.com> wrote:
> >>>>>
> >>>>> As specified in LICENSES/GPL-2.0:
> >>>>> - GPL-2.0 -> GPL-2.0-only;
> >>>>> - GPL-2.0+ -> GPL-2.0-or-later.
> >>>>>
> >>>>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> >>>>
> >>>> ping
> >>>>
> >>>
> >>> ping
> >>
> >> Please try to be more specific.
> >>
> >> I see you already have an ack from Stefano (which would cover Arm +
> >> Common). What else are you missing? Is it committing? Do you need
> >> someone else to ack? If the latter, then please mention who you think
> >> need to ack...
> >>
> >> Cheers,
> >>
> >> --
> >> Julien Grall
> >>
> >
> > Hi,
> >     I'm not a mind reader, so I don't know what is missing.
>
> Committers are not mind reader either... ;) With such a large list of
> CC, how do you think someone will know what they need to do?
>
> You could have been more specific to what you expect.
>
>  > It's a style change with some updates which has been acked, so I
> would> expect it to be merged or people tell me what is missing.
> You probably use scripts/get_maintainers.pl to get a list of CC. You
> could also use it for figuring out who you are missing:
>
> 42sh> scripts/get_maintainer.pl
> 20240926_frediano_ziglio_update_deprecated_spdx_license_identifiers.mbx
> --roles
>

I used scripts/add_maintainers.pl, I suppose it uses the same list.

> But in this case, I think it would be ok to commit without all the
> relevant acks as this is only renaming. That said, this patch doesn't
> apply... So you will need to send a new version.
>

Oh... git rebase was happy. Sending a new version.

> Cheers,
>
> --
> Julien Grall
>

Frediano


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 14:09:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 14:09:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821979.1235974 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nf4-0002f0-N4; Fri, 18 Oct 2024 14:09:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821979.1235974; Fri, 18 Oct 2024 14:09: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 1t1nf4-0002et-JG; Fri, 18 Oct 2024 14:09:02 +0000
Received: by outflank-mailman (input) for mailman id 821979;
 Fri, 18 Oct 2024 14:09: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 1t1nf3-0002el-1g
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 14:09: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 1t1nf2-0005iv-Ne; Fri, 18 Oct 2024 14:09:00 +0000
Received: from [2a02:8012:3a1:0:ecee:6c05:256c:cbd3]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1nf2-0002OW-HS; Fri, 18 Oct 2024 14: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=bImrkhUb8P5oWUkPjvbqEfY7hYNffhxA+JC4XOOsqDs=; b=mPbrXLOL98OWQlGSeYVGCYcyDx
	kpEhTlo6eb7IQLvpbwPuAWxGoiV1iw9Z5OB1mHhvl0BhL02JrLDq7pW4tZ3vfEJZSKxBCUGSekheJ
	OWa9vmEQS9YLRKXcNxhbf2iIm/R8vJlPs3YWSJFlM+s7fJG8N/VI56HdHyYXNW+vm5hA=;
Message-ID: <a2ba4e14-cede-4b30-a67a-790f4a55f3a6@xen.org>
Date: Fri, 18 Oct 2024 15:08:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Content-Language: en-GB
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.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: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-3-ayan.kumar.halder@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241010140351.309922-3-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 10/10/2024 15:03, Ayan Kumar Halder wrote:
> There are features in the forthcoming patches which are dependent on
> MPU. For eg fixed start address.
> Also, some of the Xen features (eg STATIC_MEMORY) will be selected
> by the MPU configuration.
> 
> Thus, this patch introduces a choice between MMU and MPU for the type
> of memory management system. By default, MMU is selected.
> MPU is now gated by UNSUPPORTED.
> 
> Update SUPPORT.md to state that the support for MPU is experimental.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>

With one remark below:

Acked-by: Julien Grall <jgrall@amazon.com>

> ---
> Changes from :-
> 
> v1 - 1. Reworded the help messages.
> 2. Updated Support.md.
> 
> v2 - 1. Reworded the help message.
> 
>   SUPPORT.md                     |  1 +
>   xen/arch/arm/Kconfig           | 17 ++++++++++++++++-
>   xen/arch/arm/platforms/Kconfig |  2 +-
>   3 files changed, 18 insertions(+), 2 deletions(-)
> 
> diff --git a/SUPPORT.md b/SUPPORT.md
> index 23dd7e6424..3f6d788a43 100644
> --- a/SUPPORT.md
> +++ b/SUPPORT.md
> @@ -40,6 +40,7 @@ supported in this document.
>   
>       Status, Xen in AArch64 mode: Supported
>       Status, Xen in AArch32 mode: Tech Preview
> +    Status, Xen with MPU: Experimental

Maybe mention Armv8-R?

>       Status, Cortex A57 r0p0-r1p1: Supported, not security supported
>       Status, Cortex A77 r0p0-r1p0: Supported, not security supported
>   
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 323c967361..ed92eb67cb 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -58,10 +58,25 @@ config PADDR_BITS
>   	default 40 if ARM_PA_BITS_40
>   	default 48 if ARM_64
>   
> +choice
> +	prompt "Memory management system"
> +	default MMU
> +	help
> +	  User can choose between the different forms of memory management system.
> +
>   config MMU
> -	def_bool y
> +	bool "MMU"
>   	select HAS_PMAP
>   	select HAS_VMAP
> +	help
> +	  Select it if you plan to run Xen on A-profile Armv7+
> +
> +config MPU
> +	bool "MPU" if UNSUPPORTED
> +	help
> +	  Memory Protection Unit (MPU). Select if you plan to run Xen on ARMv8-R
> +	  systems supporting EL2. (UNSUPPORTED)
> +endchoice
>   
>   source "arch/Kconfig"
>   
> diff --git a/xen/arch/arm/platforms/Kconfig b/xen/arch/arm/platforms/Kconfig
> index 76f7e76b1b..02322c259c 100644
> --- a/xen/arch/arm/platforms/Kconfig
> +++ b/xen/arch/arm/platforms/Kconfig
> @@ -1,5 +1,5 @@
>   choice
> -	prompt "Platform Support"
> +	prompt "Platform Support" if MMU
>   	default ALL_PLAT
>   	help
>   	Choose which hardware platform to enable in Xen.

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 14:09:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 14:09:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821985.1235984 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nfi-00038u-VL; Fri, 18 Oct 2024 14:09:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821985.1235984; Fri, 18 Oct 2024 14:09: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 1t1nfi-00038n-RZ; Fri, 18 Oct 2024 14:09:42 +0000
Received: by outflank-mailman (input) for mailman id 821985;
 Fri, 18 Oct 2024 14:09: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=paTR=RO=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t1nfh-00038Q-KD
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 14:09:41 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on2062b.outbound.protection.outlook.com
 [2a01:111:f403:2416::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9c2b471e-8d5a-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 16:09:39 +0200 (CEST)
Received: from SJ0PR05CA0115.namprd05.prod.outlook.com (2603:10b6:a03:334::30)
 by SJ2PR12MB8159.namprd12.prod.outlook.com (2603:10b6:a03:4f9::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.26; Fri, 18 Oct
 2024 14:09:35 +0000
Received: from SJ1PEPF000023D0.namprd02.prod.outlook.com
 (2603:10b6:a03:334:cafe::48) by SJ0PR05CA0115.outlook.office365.com
 (2603:10b6:a03:334::30) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.10 via Frontend
 Transport; Fri, 18 Oct 2024 14:09:35 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF000023D0.mail.protection.outlook.com (10.167.244.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Fri, 18 Oct 2024 14:09:34 +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.39; Fri, 18 Oct
 2024 09:09:34 -0500
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.39; Fri, 18 Oct
 2024 09:09:33 -0500
Received: from [172.21.242.153] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Fri, 18 Oct 2024 09:09:33 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c2b471e-8d5a-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=NOT+JscgytH/tHjWQP8KtkKvZ7hEw3yA3Z/VBB6m/1VRTNVaLNG1x19siY6HVKXpZXiJVo+FsbHk2UmAUPmNcK6pPWZoUsmu8acg1MmVIe7g1unCECSYnK4cTIhZ6DBTgmjEV9azJZjYOq4G5OelJBo8EWchUZjO1JGNxRZJLE5BOPtGQu43TKo/YEa5bk0SV5ytmVjVK/ybtbHqfohQY8N30KuxukQMmJJjwOCGsBZIgqCF0jaWHUcP3YKOd6BCAVRZt4OqEl3XLm3l/M7kg44qwWvlJwId9aLv7hnpdJKyGiMvqVIQSBBmm7V+9Xc2k4tyr0TbmVlGrl9zMhPICA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=+o1gKyVaiKlpwwJXfggBVrbogXfkx/SrodavCyaR8EM=;
 b=PEJ09QBVNrPpoIq6D+7ZiiQbSYGW8JrWtyhl2itm3pJCt/v+fwSH91BR7wjCLKj+x8XQ+N9/wF3tQpcZ28sxgw8pqn4bJL0d4UxxyizgdtDR9RwiUJ+5boVR30bh0SnRLPQYBrujwzuRiQQKBXNOLwb8/iLFSUmPO2SIoMUtsqiY9H27gJxsQq4LvnZTlWxbnPVmjZnkDqP3q/ir3EJstxOb5BKqEje2OXpKTDn0BBF97bLASVRhL+Z3ofyRCThV/YesNlkecrnrDIPoT1dW4UGLEAZ3J9EViUXAzwqIE/GPiGZ+0YWq3HTF8ujOM+UHw2D1YkA6f/mhNOvblsfCeg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=apertussolutions.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=+o1gKyVaiKlpwwJXfggBVrbogXfkx/SrodavCyaR8EM=;
 b=2Xaasc59zx4/2UJ4V7Gxkre8REbsE8yveujCXIPms7O7lG26KyIUDLxPFT5icoN+1NEyhjol1j05yYd7v01PltwCfcrxxZjTJGt7bZ5u0jPY5muSzjiVtuQbH4h9Mv0W1yHW42wu/kzmGx1GC4wGg/AtoHCWeGlmnlXzL8ahftQ=
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: <acbb1045-237e-4570-b7a1-ea3283d344ef@amd.com>
Date: Fri, 18 Oct 2024 10:09:31 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 14/44] x86/boot: introduce boot module interator
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	<xen-devel@lists.xenproject.org>
CC: <christopher.w.clark@gmail.com>, <stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-15-dpsmith@apertussolutions.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241017170325.3842-15-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF000023D0:EE_|SJ2PR12MB8159:EE_
X-MS-Office365-Filtering-Correlation-Id: 6326b442-f78f-4811-be34-08dcef7e7eb0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cldEYWZFdXNqcjFSMmE5THI0WTJ3VCtuTWhZbzVHZkZxdWYwRXpVSFpWRXF3?=
 =?utf-8?B?eE55VDZDVUlhUWV4V0F1dm1kWCtuWnlocFV6TjZjZG9XUjI0NVVkRDFXMUVn?=
 =?utf-8?B?RloreHBqaDRJTTNhRzY0T2I2VTZiQlFrN1I4TjZWcWptZ0U2RzRjaVdLVUFq?=
 =?utf-8?B?L0xva1dKWGV4dytScUdRQjRkOEpFQm9yU0lOclh1REZCblpMWHpWbi9ST1RS?=
 =?utf-8?B?VExvbDcwSXpJM3dkRHIwQjM1cU1MYnlxMjA3azBXUFNwcEZNVVBMdktvU2pO?=
 =?utf-8?B?VHdRbnRMMGwrQ21XWTBleE5OTHJ3cnRwM3hqUWU0YkZqQnQ5WStBZ1YwK2xn?=
 =?utf-8?B?MXlXU1AzTlI2a1RsYmJ1S2VZcnRLNk5CL0lLUW5pY1ZVRDBCWFR1Um9HeG5t?=
 =?utf-8?B?c1ZLUytyNFd3djNSRUxmK2Q0b0x4NzBvNHhiVVJvOTNEWERnZWQ2elpra3h2?=
 =?utf-8?B?OU9JV0RQNjZKK3JsL3ZTZFh0SDJUeEd4aWIvd0xsMWZYblJQeTdJb2VhNUxj?=
 =?utf-8?B?dmI2SkNPTXBNVElRN2k5Q3lzYTRjYU9renJmUGwvbHRrWDRIK2VBWUZEL1Ba?=
 =?utf-8?B?U0dqKzJLalhlM2s2STVzSHg0UEFZZ2pRTG1DNDNMajZPRXdSNDRBblhhMWRz?=
 =?utf-8?B?ZGY1YzdIdVYzRk9WVmNNTGdCUXBNRDhWNUxNbGRZYVdqYW04dkhXcEhHRHFH?=
 =?utf-8?B?VnY1bW5JaVpPOUhkTXhIM3Y1THFtblY0QllIZmFIaGk1YWZJSW5YUnFIOE92?=
 =?utf-8?B?MmtNeDJUUWNxUEZCM3NPd1RXK0k3bmhQTDJQTDdBSXhsYnlLcWNzZnZDZ2NZ?=
 =?utf-8?B?NWJndHNMQ3g4OENiY0JkT1NPcXllYXpRTlpSVEQrT3FmbGxYSzlta3lRcU1P?=
 =?utf-8?B?OVV1TGV2d0xCelpxM0tETm9YTGRDSVA2U0pjbnV1K0N1R0g4aExFZkFQT0hk?=
 =?utf-8?B?STdaZDAwNGUzRXhjTXhEeEtkWWdvZFBNYzdYVWljZlpXTElzVHd5Wi9qdUcz?=
 =?utf-8?B?SEpLVC9zOGJQMUttNk92NlVDTmswWkFwT0VwdTNsejFzWEpTVHNQNUxmRjMr?=
 =?utf-8?B?dXVpcEF3VndGRU15UjYyczdKUTA5SFEvNk5zeDMyQUxCNTZhdnZmaFFuVTVP?=
 =?utf-8?B?bXQyTmgyQjgxWk1IdWdmVkE4WC9RNkk0V3B1Q2I0TVk1SkY3ZEJpL1NmZG1D?=
 =?utf-8?B?NVpxd1FWT3BXSkFaQ0NqWS8xQyt1QXIzemlUTFlPSzJmM1NUZVZYVm9MVmgz?=
 =?utf-8?B?V05tY1VxSU4yZUJJRy96SXdHbExiODYyMUZTckJIV1o0eGMyZlR5d2UvNTFl?=
 =?utf-8?B?ekJCWjkwVUdzSnVYK2NpRnZ2Mk5UV1h3NndjODcxWlJLMGM4S3I3L3JBbkor?=
 =?utf-8?B?NmVXQ3c2SmZHVDBVS3hnTjFUcE40cHFjSnpWc3hsdW16a0J1L3VzRjlsdEo4?=
 =?utf-8?B?dWwyTjhSZTIvVnhRd0dOUk8yTmsxcjRJTEJ5L0oyblcwOEo4cC9oZHFKTVFG?=
 =?utf-8?B?QjVRVUF0dGRrRUVpR2wwZi9kT0srUlVSRndJcGFUdFRMZ1E0ZmU2YkVsYTBR?=
 =?utf-8?B?UXU3bG50VVJLY3UyZWtHMllVQTNoQVFOWXArMEllL0RuL0xOaHNxdW4vRE11?=
 =?utf-8?B?ZGVaQTEyUWFzdU0rZVg3dUxaakJYUVRNT3N1ajl3dFNUL2ptengzR1R3cGhD?=
 =?utf-8?B?RDJaWStxVUt0NUdFZ0pSZ21YNWJQY0FENkUrVkNGYi9UbEkzMHZRZ0JzKzZQ?=
 =?utf-8?B?VTJudDZiSEEvVmVyUHM5WFFaUkxYYVhMY05xY3lrWlorNkkyU21ybngrUlZ1?=
 =?utf-8?B?ZmJKZzY0U09OcEdTd21YbTc0SElMWUUzQlJPSGF5Qms2M2lTUUcvN3UzUjd5?=
 =?utf-8?B?bDRFY1p0QzlhZEI0VTZESFFMYjRKUDZJOWZ0eW0yTDR5RHc9PQ==?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 14:09:34.8791
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6326b442-f78f-4811-be34-08dcef7e7eb0
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:
	SJ1PEPF000023D0.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8159

On 2024-10-17 13:02, Daniel P. Smith wrote:
> Provide an iterator to go through boot module array searching based on type.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
> Changes since v5:
> - documented help next_boot_module_index
> - switch to unsigned int for next_boot_module_index
> - changes identified that BOOTMOD_XEN was not supported, so added support
> ---
>   xen/arch/x86/include/asm/bootinfo.h | 29 ++++++++++++++++++++++++++++-
>   1 file changed, 28 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index 5862054b8cef..3010e6f4af9c 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -62,8 +62,35 @@ struct boot_info {
>       struct boot_module mods[MAX_NR_BOOTMODS + 1];
>   };
>   
> -#endif /* __XEN_X86_BOOTINFO_H__ */
> +/*
> + * next_boot_module_index:
> + *     Finds the next boot module of type t, starting at array index start.
> + *
> + * Returns:
> + *      Success - index in boot_module array
> + *      Failure - a value greater than MAX_NR_BOOTMODS
> + */
> +static inline unsigned int __init next_boot_module_index(
> +    const struct boot_info *bi, enum bootmod_type t, unsigned int start)
> +{
> +    unsigned int i;
> +
> +    if ( t == BOOTMOD_XEN )
> +        return MAX_NR_BOOTMODS;

Your earlier patch "x86/boot: convert mod refs to boot_module mod" put 
xen at bi->nr_modules.  You'll want these to match.

Regards,
Jason

>   
> +    for ( i = start; i < bi->nr_modules; i++ )
> +    {
> +        if ( bi->mods[i].type == t )
> +            return i;
> +    }
> +
> +    return MAX_NR_BOOTMODS + 1;
> +}
> +
> +#define first_boot_module_index(bi, t)              \
> +    next_boot_module_index(bi, t, 0)
> +
> +#endif /* __XEN_X86_BOOTINFO_H__ */
>   /*
>    * Local variables:
>    * mode: C


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 14:27:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 14:27:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.821996.1235997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1nwz-0004XM-Et; Fri, 18 Oct 2024 14:27:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 821996.1235997; Fri, 18 Oct 2024 14:27: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 1t1nwz-0004XF-Bh; Fri, 18 Oct 2024 14:27:33 +0000
Received: by outflank-mailman (input) for mailman id 821996;
 Fri, 18 Oct 2024 14: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=Jazm=RO=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t1nwy-0004Wr-HU
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 14:27:32 +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 1b444c46-8d5d-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 16:27:30 +0200 (CEST)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2fb587d0436so23378331fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 07:27:30 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a151b01ecsm231706e87.23.2024.10.18.07.27.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 07:27:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1b444c46-8d5d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729261650; x=1729866450; 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=YQTm7Rcj774u6EMpqacNn4u91Je6LfJJSxE7uInnP84=;
        b=b8FbTpwvcFy30lyRl0WTZtpaS6iVLGgPkSGMT/P6A738idsr45OOGwJVqFggD51pA0
         vmc5sJ44TYPRtzeOi3bY8im/QB3XJjkRN4bBFN867iSqTAC5cKLY4l/qq1SXJX/mlFUm
         Q7bNqKMUS8mW1JfnimSTZKZDjXJBqgMeAZOMU7h1jZpCWFunLrf1zsSylxffNVsdum8x
         W7zD9Xte99VdaT1pgLzb8lu1Hu3YrhyZ72p8VvmvSr0cjLEhHj8/Gj+yIpjQEiFHEy19
         abPoLClRSJsWtJR5fdzPiIW32qCT7xzp3RwddqYY7zYIz0xywVvt+6RiBBotZwKXmP8m
         HzkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729261650; x=1729866450;
        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=YQTm7Rcj774u6EMpqacNn4u91Je6LfJJSxE7uInnP84=;
        b=WstLgc8D1zEwauuGyjS87VdLduiBlUy7WPbAC+p9mk7tNefFTcOko6JliOcHfjPgMy
         W/asm4IRonRvofrTcLz5GZCBxYTEBK3FW9mBUZ9lLVar7K7kJMClW9FFXDd8mfrN+QG/
         IhlKWATjls7M6bmitWBJaF7sSiJm1p8encDFzIHiBq2EoguQom+qBIKyCwWwj0XRxCLF
         c0GJ38UsxdzOcTpuVX1cJj09dNgO6b5k4fyXRnhQo97XtT/chEtuf7FMJ0rqx/CmbFt/
         pMjO1YY/vKai7yMueY/VbC6WwPJ+hiLFkwKxDdv2xTdnJpKsfTEblLN8jsuzdihNl8fv
         UFSA==
X-Forwarded-Encrypted: i=1; AJvYcCXbWd7x77oOmw/ouoCoZ8uxmkB1SHHeMmNSZ7RBABX+AmYp6Rb0M9MMXj+0o7yhqXtqPPjE73naqj8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzDP5oK9OqT4Co3+0px91CBsJ3L6JvPtvdJVj/dIOmh87uCBX41
	KTKVGdsykDx6ILLj7PlubztOgEcldbnDxznU83CwxzytOP1BFMxK
X-Google-Smtp-Source: AGHT+IEw0CEg7xbRMjH85VlE4IugE61vRMANzUH41/pzLYegQLPJbPss53qgPnwJSJIAWMdDOsIxGw==
X-Received: by 2002:a05:6512:2387:b0:539:89a8:5fe8 with SMTP id 2adb3069b0e04-53a1522a886mr2164104e87.29.1729261649308;
        Fri, 18 Oct 2024 07:27:29 -0700 (PDT)
Message-ID: <abc1c95497372f3a46b34c6694b75b4e1647d4b9.camel@gmail.com>
Subject: Re: [PATCH v1 3/5] xen/riscv: introduce setup_mm()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Fri, 18 Oct 2024 16:27:28 +0200
In-Reply-To: <37929e86-0394-499e-ada1-4686ff77d3f7@suse.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
	 <300a4a5911766d42ec01c3fcaee664d72b484296.1729068334.git.oleksii.kurochko@gmail.com>
	 <37929e86-0394-499e-ada1-4686ff77d3f7@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Thu, 2024-10-17 at 17:15 +0200, Jan Beulich wrote:
> On 16.10.2024 11:15, Oleksii Kurochko wrote:
>=20
> > +=C2=A0=C2=A0=C2=A0 if ( map_pages_to_xen((vaddr_t)mfn_to_virt(0),
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=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(0), nr_mfns,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 PAGE_HYPERVISOR_RW) )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 panic("Unable to setup the =
directmap mappings.\n");
> > +}
> > +
> > +/* Map a frame table to cover physical addresses ps through pe */
> > +static void __init setup_frametable_mappings(paddr_t ps, paddr_t
> > pe)
> > +{
> > +=C2=A0=C2=A0=C2=A0 unsigned long nr_mfns =3D mfn_x(mfn_add(maddr_to_mf=
n(pe), -1)) -
>=20
> This looks to be accounting for a partial page at the end.
>=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 mfn_x(maddr_to_mfn(ps)) + 1;
>=20
> Whereas this doesn't do the same at the start. The sole present
> caller
> passes 0, so that's going to be fine for the time being. Yet it's a
> latent pitfall. I'd recommend to either drop the function parameter,
> or
> to deal with it correctly right away.
Then it will be better to do in the next way to be sure that everything
is properly aligned:
   unsigned long nr_mfns =3D PFN_DOWN(ALIGN_UP(pe) - ALIGN_DOWN(ps));

> > +=C2=A0=C2=A0=C2=A0 memset(&frame_table[0], 0, nr_mfns * sizeof(struct
> > page_info));
> > +=C2=A0=C2=A0=C2=A0 memset(&frame_table[nr_mfns], -1,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 frametabl=
e_size - (nr_mfns * sizeof(struct
> > page_info)));
> > +}
> > +
> > +vaddr_t directmap_virt_end __read_mostly;
>=20
> __ro_after_init? And moved ahead of the identifier, just like ...
>=20
> > +/*
> > + * Setup memory management
> > + *
> > + * RISC-V 64 has a large virtual address space (the minimum
> > supported
> > + * MMU mode is Sv39, which provides TBs of VA space).
> > + * In the case of RISC-V 64, the directmap and frametable are
> > mapped
> > + * starting from physical address 0 to simplify the page_to_mfn(),
> > + * mfn_to_page(), and maddr_to_virt() calculations, as there is no
> > need
> > + * to account for {directmap, frametable}_base_pdx in this setup.
> > + */
> > +void __init setup_mm(void)
>=20
> ... __init is placed e.g. here.
>=20
> It's also unclear why the variable needs to be non-static.
As it could be use then for some ASSERT(), for example, in
virt_to_page() as Arm or x86 do.

>=20
> > +{
> > +=C2=A0=C2=A0=C2=A0 const struct membanks *banks =3D bootinfo_get_mem()=
;
> > +=C2=A0=C2=A0=C2=A0 paddr_t ram_end =3D 0;
> > +=C2=A0=C2=A0=C2=A0 paddr_t ram_size =3D 0;
> > +=C2=A0=C2=A0=C2=A0 unsigned int i;
> > +
> > +=C2=A0=C2=A0=C2=A0 /*
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * We need some memory to allocate the page-ta=
bles used for
> > the directmap
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * mappings. But some regions may contain memo=
ry already
> > allocated
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * for other uses (e.g. modules, reserved-memo=
ry...).
> > +=C2=A0=C2=A0=C2=A0=C2=A0 *
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * For simplicity, add all the free regions in=
 the boot
> > allocator.
> > +=C2=A0=C2=A0=C2=A0=C2=A0 */
> > +=C2=A0=C2=A0=C2=A0 populate_boot_allocator();
> > +
> > +=C2=A0=C2=A0=C2=A0 total_pages =3D 0;
> > +
> > +=C2=A0=C2=A0=C2=A0 for ( i =3D 0; i < banks->nr_banks; i++ )
> > +=C2=A0=C2=A0=C2=A0 {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const struct membank *bank =
=3D &banks->bank[i];
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 paddr_t bank_end =3D bank->=
start + bank->size;
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_size =3D ram_size + ban=
k->size;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_end =3D max(ram_end, ba=
nk_end);
> > +=C2=A0=C2=A0=C2=A0 }
> > +
> > +=C2=A0=C2=A0=C2=A0 setup_directmap_mappings(PFN_DOWN(ram_end));
>=20
> While you may want to use non-offset-ed mappings, I can't see how you
> can
> validly map just a single huge chunk, no matter whether there are
> holes
> in there. Such holes could hold MMIO regions, which I'm sure would
> require
> more careful mapping (to avoid cacheable accesses, or even
> speculative
> ones).
My intention was to avoid subraction of directmap_start ( =3D ram_start )
in maddr_to_virt() to have less  operations during maddr to virt
calculation:
   static inline void *maddr_to_virt(paddr_t ma)
   {
       /* Offset in the direct map, accounting for pdx compression */
       unsigned long va_offset =3D maddr_to_directmapoff(ma);
  =20
       ASSERT(va_offset < DIRECTMAP_SIZE);
  =20
       return (void *)(DIRECTMAP_VIRT_START /* - directmap_start */ +
   va_offset);
   }
But it seems I don't have any chance to avoid that because of mentioned
by you reasons... Except probably to have a config which will hard code
RAM_START for each platform ( what on other hand will make Xen less
flexible in some point ).
Does it make sense to have a config instead of identifying ram_start in
runtime?

So I have to rework this part of code to look as:
    for ( i =3D 0; i < banks->nr_banks; i++ )
    {
        const struct membank *bank =3D &banks->bank[i];
        paddr_t bank_end =3D bank->start + bank->size;

        ram_size =3D ram_size + bank->size;
        ram_start =3D min(ram_start, bank->start);
        ram_end =3D max(ram_end, bank_end);

        setup_directmap_mappings(PFN_DOWN(bank->start),
                                 PFN_DOWN(bank->size));
    }


>=20
> > +=C2=A0=C2=A0=C2=A0 total_pages =3D PFN_DOWN(ram_size);
>=20
> Imo the rounding down to page granularity needs to be done when
> ram_size
> is accumulated, such that partial pages simply won't be counted.
> Unless
> of course there's a guarantee that banks can never have partial pages
> at
> their start/end.
Hmm, good point. I thought that start/end is always properly aligned
but I can't find in device tree spec that it is guaranteed for memory
node, so it will really better rounding down after ram_size is
accumulated.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 14:36:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 14:36:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822007.1236010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1o4z-0008K4-E6; Fri, 18 Oct 2024 14:35:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822007.1236010; Fri, 18 Oct 2024 14:35: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 1t1o4z-0008Jx-AB; Fri, 18 Oct 2024 14:35:49 +0000
Received: by outflank-mailman (input) for mailman id 822007;
 Fri, 18 Oct 2024 14:35: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=Jazm=RO=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t1o4x-0008Jo-DT
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 14:35:47 +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 41bae230-8d5e-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 16:35:44 +0200 (CEST)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-539f0f9ee49so2615033e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 07:35:44 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a151b98f8sm234634e87.112.2024.10.18.07.35.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 07:35:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 41bae230-8d5e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729262143; x=1729866943; 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=P4oiMBtryCtNP+mMGg52fNSmnKoCLQVz0Uw7et1Q7kM=;
        b=EbOXkl/WBONPgqlch0fEPTAyXP2qv+1BEasqb4hnSwLQmTdwo8GkZvcRciLiobKZpR
         zZiA3DPHb3Cq3znkg/vB5Oi3qpmUI0pgLPD6PaWpnZ/8bR3qgLVKdemB6KDsp8SNyfLz
         4CauItGLJXpF2/VLDG2kZD7glfmiXbi96nuz3sOaf95/N6E5+Jq5VIfpm5X2uGivMk4v
         guSqWKut6LeAJy58OkZtt7Z3/QtYLqinURlq4thAvkbvtlecQyZ/ee+g3boj+x6yPF0n
         VbGdj8O2uMZNRXCdTGgiX2qfWLBhKmj0us6FVZnF2/vzz0RsBpUahiesql75JHTd6qkB
         eEgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729262143; x=1729866943;
        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=P4oiMBtryCtNP+mMGg52fNSmnKoCLQVz0Uw7et1Q7kM=;
        b=dkMKGQnIDpOgIbndMYz7+pnwQDhiqCK3LMZT1gstKUMcIfk/TYO7Wslp1oWUxwJ6EP
         d6fg4i9smQugbs2iUlBFSBqM7moxucf1IFnxueeHVXB7xBN7QqqyIDzzoQKMTJzXbggL
         HQKYtUoo9R//E7TKYK9OidFZ/fmZa2U9sx/ZKu7SvOKNoZPXiHGKXBVcsBl9Lp/odbX7
         1z029I6eRoyc99nT23dbmOYNHw+07A870jVNOCaxsgp9FsqX3FLor3/Z/VttT18Mg2vA
         S4ICABZ5zvjODMwGUkPL1+VAgtc4uxsHiFUn8s8/+0pNu21G+Ne/qjL0YhFRBSqcr/Py
         GfXg==
X-Forwarded-Encrypted: i=1; AJvYcCVs1eGWdYGBTV3iRh18u+F2UFpNU6JDhI/Rik2hqdeycAz2AawBjxHJdlPzdp1oSRxsriHaKg8/4BM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyY0K6ZPPwMa7vmFmy91VWWEGSTtjMXvFVgPd6WsxlutJYI1MTx
	Ha7HnaqfRVYpl/wbgMJ3n/oP1uv3V4c9DDFNojkLJ3FldKzB8odA
X-Google-Smtp-Source: AGHT+IFF+3rS+nSjom7GOjrszEnh6chz4cC9Ky/rf3JRrLfWs9OE4ubfxKZxuIKx+rONR+P/PMnT/Q==
X-Received: by 2002:a05:6512:1582:b0:539:f619:b459 with SMTP id 2adb3069b0e04-53a15444f43mr1715384e87.17.1729262143186;
        Fri, 18 Oct 2024 07:35:43 -0700 (PDT)
Message-ID: <b1a38c60291b15b550834027f69cec9f4613e6e3.camel@gmail.com>
Subject: Re: [PATCH v2] Update deprecated SPDX license identifiers
From: oleksii.kurochko@gmail.com
To: Frediano Ziglio <frediano.ziglio@cloud.com>, 
	xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@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>, Roger Pau =?ISO-8859-1?Q?Monn=E9?=
 <roger.pau@citrix.com>,  Ross Lagerwall <ross.lagerwall@citrix.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>, Elena
 Ufimtseva <elena.ufimtseva@oracle.com>, Paul Durrant <paul@xen.org>, Dario
 Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>,  George
 Dunlap <gwd@xenproject.org>, Doug Goldstein <cardoe@cardoe.com>
Date: Fri, 18 Oct 2024 16:35:41 +0200
In-Reply-To: <20241018135725.2357572-1-frediano.ziglio@cloud.com>
References: <20241018135725.2357572-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Fri, 2024-10-18 at 14:57 +0100, Frediano Ziglio wrote:
> As specified in LICENSES/GPL-2.0:
> - GPL-2.0 -> GPL-2.0-only;
> - GPL-2.0+ -> GPL-2.0-or-later.
>=20
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
For RISC-V: Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

~ Oleksii

> ---
> =C2=A0CODING_STYLE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=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=A0xen/arch/arm/alternative.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=C2=A0=C2=A0=C2=A0 | 2 +=
-
> =C2=A0xen/arch/arm/arm32/mmu/mm.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=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/arm64/mmu/mm.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=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/cpuerrata.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | 2 +-
> =C2=A0xen/arch/arm/cpufeature.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=C2=A0=C2=A0=C2=A0=C2=A0 | =
2 +-
> =C2=A0xen/arch/arm/dm.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=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=A0xen/arch/arm/domain_build.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=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/domctl.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/early_printk.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=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/gic-v3-its.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=C2=A0=C2=A0=C2=A0=C2=A0 | =
2 +-
> =C2=A0xen/arch/arm/gic-v3-lpi.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=C2=A0=C2=A0=C2=A0=C2=A0 | =
2 +-
> =C2=A0xen/arch/arm/guest_atomics.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=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/guest_walk.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=C2=A0=C2=A0=C2=A0=C2=A0 | =
2 +-
> =C2=A0xen/arch/arm/guestcopy.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | 2 +-
> =C2=A0xen/arch/arm/hvm.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/include/asm/nospec.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/ioreq.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/kernel.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/livepatch.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | 2 +-
> =C2=A0xen/arch/arm/mem_access.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=C2=A0=C2=A0=C2=A0=C2=A0 | =
2 +-
> =C2=A0xen/arch/arm/mmu/p2m.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/monitor.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/p2m.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/physdev.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/platform_hypercall.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/shutdown.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/smp.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/sysctl.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/vgic-v3-its.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=C2=A0=C2=A0=C2=A0 | 2 +=
-
> =C2=A0xen/arch/arm/vm_event.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/vpl011.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/arm/vsmc.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/riscv/early_printk.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 | 2 +-
> =C2=A0xen/arch/riscv/include/asm/acpi.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/riscv/include/asm/bitops.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/riscv/include/asm/bug.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 | 2 +-
> =C2=A0xen/arch/riscv/include/asm/cache.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/riscv/include/asm/string.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/x86/cpu/mcheck/intel-nonfatal.c=C2=A0=C2=A0=C2=A0=C2=A0 | =
2 +-
> =C2=A0xen/arch/x86/debug.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/x86/hvm/svm/nestedhvm.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 | 2 +-
> =C2=A0xen/arch/x86/hvm/svm/svm.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 | 2 +=
-
> =C2=A0xen/arch/x86/include/asm/gdbsx.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 | 2 +-
> =C2=A0xen/arch/x86/include/asm/guest/hyperv-tlfs.h | 2 +-
> =C2=A0xen/arch/x86/include/asm/intel-family.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 | 2 +-
> =C2=A0xen/arch/x86/include/asm/nospec.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/arch/x86/include/asm/prot-key.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/common/device-tree/bootfdt.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 | 2 +-
> =C2=A0xen/common/sched/boot-cpupool.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 | 2 +-
> =C2=A0xen/include/asm-generic/atomic-ops.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/include/asm-generic/monitor.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/include/xen/alternative-call.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/include/xen/nospec.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 | 2 +-
> =C2=A0xen/include/xen/unaligned.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 | 2 +-
> =C2=A0xen/tools/kconfig/expr.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 | 2 +-
> =C2=A0xen/tools/kconfig/images.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 | 2 +=
-
> =C2=A0xen/tools/kconfig/lexer.l=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=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=A0xen/tools/kconfig/list.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 | 2 +-
> =C2=A0xen/tools/kconfig/lkc.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 | 2 +-
> =C2=A0xen/tools/kconfig/lkc_proto.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 | 2 +-
> =C2=A0xen/tools/kconfig/lxdialog/checklist.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 | 2 +-
> =C2=A0xen/tools/kconfig/lxdialog/dialog.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/tools/kconfig/lxdialog/inputbox.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/tools/kconfig/lxdialog/menubox.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/tools/kconfig/lxdialog/textbox.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/tools/kconfig/lxdialog/util.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/tools/kconfig/lxdialog/yesno.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 2 +-
> =C2=A0xen/tools/kconfig/nconf.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 | =
2 +-
> =C2=A0xen/tools/kconfig/parser.y=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=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=A0xen/tools/kconfig/qconf.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 | =
2 +-
> =C2=A071 files changed, 71 insertions(+), 71 deletions(-)
>=20
> diff --git a/CODING_STYLE b/CODING_STYLE
> index 554c69a16a..e3b1da6048 100644
> --- a/CODING_STYLE
> +++ b/CODING_STYLE
> @@ -20,7 +20,7 @@ SPDX
> =C2=A0New files should start with a single-line SPDX comment to express
> the
> =C2=A0license, e.g.:
> =C2=A0
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0
> =C2=A0See LICENSES/ for a list of licenses and SPDX tags currently used.
> =C2=A0
> diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
> index c56caba010..d99b507093 100644
> --- a/xen/arch/arm/alternative.c
> +++ b/xen/arch/arm/alternative.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * alternative runtime patching
> =C2=A0 * inspired by the x86 version
> diff --git a/xen/arch/arm/arm32/mmu/mm.c
> b/xen/arch/arm/arm32/mmu/mm.c
> index 30a7aa1e8e..063611412b 100644
> --- a/xen/arch/arm/arm32/mmu/mm.c
> +++ b/xen/arch/arm/arm32/mmu/mm.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0
> =C2=A0#include <xen/init.h>
> =C2=A0#include <xen/lib.h>
> diff --git a/xen/arch/arm/arm64/mmu/mm.c
> b/xen/arch/arm/arm64/mmu/mm.c
> index 0de4f3c079..671eaadbc1 100644
> --- a/xen/arch/arm/arm64/mmu/mm.c
> +++ b/xen/arch/arm/arm64/mmu/mm.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0
> =C2=A0#include <xen/init.h>
> =C2=A0#include <xen/mm.h>
> diff --git a/xen/arch/arm/cpuerrata.c b/xen/arch/arm/cpuerrata.c
> index afd0605922..eef9c0ea0e 100644
> --- a/xen/arch/arm/cpuerrata.c
> +++ b/xen/arch/arm/cpuerrata.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <xen/cpu.h>
> =C2=A0#include <xen/cpumask.h>
> =C2=A0#include <xen/init.h>
> diff --git a/xen/arch/arm/cpufeature.c b/xen/arch/arm/cpufeature.c
> index b45dbe3c66..1a80738571 100644
> --- a/xen/arch/arm/cpufeature.c
> +++ b/xen/arch/arm/cpufeature.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Contains CPU feature definitions
> =C2=A0 *
> diff --git a/xen/arch/arm/dm.c b/xen/arch/arm/dm.c
> index 5569efa121..773a0a2592 100644
> --- a/xen/arch/arm/dm.c
> +++ b/xen/arch/arm/dm.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (c) 2019 Arm ltd.
> =C2=A0 */
> diff --git a/xen/arch/arm/domain_build.c
> b/xen/arch/arm/domain_build.c
> index 669970c86f..2c30792de8 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <xen/init.h>
> =C2=A0#include <xen/compile.h>
> =C2=A0#include <xen/lib.h>
> diff --git a/xen/arch/arm/domctl.c b/xen/arch/arm/domctl.c
> index 12a12ee781..9d047065ba 100644
> --- a/xen/arch/arm/domctl.c
> +++ b/xen/arch/arm/domctl.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/******************************************************************=
*
> ***********
> =C2=A0 * Arch-specific domctl.c
> =C2=A0 *
> diff --git a/xen/arch/arm/early_printk.c
> b/xen/arch/arm/early_printk.c
> index 03cbe0fb88..9c54f77c78 100644
> --- a/xen/arch/arm/early_printk.c
> +++ b/xen/arch/arm/early_printk.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * printk() for use before the final page tables are setup.
> =C2=A0 *
> diff --git a/xen/arch/arm/gic-v3-its.c b/xen/arch/arm/gic-v3-its.c
> index 55bed3fe87..5fd83af25a 100644
> --- a/xen/arch/arm/gic-v3-its.c
> +++ b/xen/arch/arm/gic-v3-its.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * xen/arch/arm/gic-v3-its.c
> =C2=A0 *
> diff --git a/xen/arch/arm/gic-v3-lpi.c b/xen/arch/arm/gic-v3-lpi.c
> index eb0a5535e4..de4b0eb4a4 100644
> --- a/xen/arch/arm/gic-v3-lpi.c
> +++ b/xen/arch/arm/gic-v3-lpi.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * xen/arch/arm/gic-v3-lpi.c
> =C2=A0 *
> diff --git a/xen/arch/arm/guest_atomics.c
> b/xen/arch/arm/guest_atomics.c
> index 6ba77f082d..678b57d197 100644
> --- a/xen/arch/arm/guest_atomics.c
> +++ b/xen/arch/arm/guest_atomics.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * arch/arm/guest_atomics.c
> =C2=A0 */
> diff --git a/xen/arch/arm/guest_walk.c b/xen/arch/arm/guest_walk.c
> index 2f7d3a0da7..09fe486598 100644
> --- a/xen/arch/arm/guest_walk.c
> +++ b/xen/arch/arm/guest_walk.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Guest page table walk
> =C2=A0 * Copyright (c) 2017 Sergej Proskurin <proskurin@sec.in.tum.de>
> diff --git a/xen/arch/arm/guestcopy.c b/xen/arch/arm/guestcopy.c
> index 6716b03561..497e785ec4 100644
> --- a/xen/arch/arm/guestcopy.c
> +++ b/xen/arch/arm/guestcopy.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <xen/domain_page.h>
> =C2=A0#include <xen/guest_access.h>
> =C2=A0#include <xen/lib.h>
> diff --git a/xen/arch/arm/hvm.c b/xen/arch/arm/hvm.c
> index 0989309fea..86e49bf474 100644
> --- a/xen/arch/arm/hvm.c
> +++ b/xen/arch/arm/hvm.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * arch/arm/hvm.c
> =C2=A0 *
> diff --git a/xen/arch/arm/include/asm/nospec.h
> b/xen/arch/arm/include/asm/nospec.h
> index efac51fc03..9c70eed605 100644
> --- a/xen/arch/arm/include/asm/nospec.h
> +++ b/xen/arch/arm/include/asm/nospec.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights
> Reserved. */
> =C2=A0
> =C2=A0#ifndef _ASM_ARM_NOSPEC_H
> diff --git a/xen/arch/arm/ioreq.c b/xen/arch/arm/ioreq.c
> index 2e829d2e7f..b4211f0159 100644
> --- a/xen/arch/arm/ioreq.c
> +++ b/xen/arch/arm/ioreq.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * arm/ioreq.c: hardware virtual machine I/O emulation
> =C2=A0 *
> diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c
> index 674388fa11..669d143cee 100644
> --- a/xen/arch/arm/kernel.c
> +++ b/xen/arch/arm/kernel.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Kernel image loading.
> =C2=A0 *
> diff --git a/xen/arch/arm/livepatch.c b/xen/arch/arm/livepatch.c
> index bbca1e5a5e..037746d952 100644
> --- a/xen/arch/arm/livepatch.c
> +++ b/xen/arch/arm/livepatch.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 *=C2=A0 Copyright (C) 2016 Citrix Systems R&D Ltd.
> =C2=A0 */
> diff --git a/xen/arch/arm/mem_access.c b/xen/arch/arm/mem_access.c
> index 31db846354..0ec3462364 100644
> --- a/xen/arch/arm/mem_access.c
> +++ b/xen/arch/arm/mem_access.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * arch/arm/mem_access.c
> =C2=A0 *
> diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
> index 1725cca649..bfa312cc8a 100644
> --- a/xen/arch/arm/mmu/p2m.c
> +++ b/xen/arch/arm/mmu/p2m.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <xen/cpu.h>
> =C2=A0#include <xen/domain_page.h>
> =C2=A0#include <xen/ioreq.h>
> diff --git a/xen/arch/arm/monitor.c b/xen/arch/arm/monitor.c
> index 6c93a9e993..49f5df8513 100644
> --- a/xen/arch/arm/monitor.c
> +++ b/xen/arch/arm/monitor.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * arch/arm/monitor.c
> =C2=A0 *
> diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
> index 2465c266e9..65b70955e3 100644
> --- a/xen/arch/arm/p2m.c
> +++ b/xen/arch/arm/p2m.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <xen/iocap.h>
> =C2=A0#include <xen/lib.h>
> =C2=A0#include <xen/sched.h>
> diff --git a/xen/arch/arm/physdev.c b/xen/arch/arm/physdev.c
> index 7b1682ee10..d63a8bf5ae 100644
> --- a/xen/arch/arm/physdev.c
> +++ b/xen/arch/arm/physdev.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/******************************************************************=
*
> ***********
> =C2=A0 * Arch-specific physdev.c
> =C2=A0 *
> diff --git a/xen/arch/arm/platform_hypercall.c
> b/xen/arch/arm/platform_hypercall.c
> index fde4bc3e58..ac55622426 100644
> --- a/xen/arch/arm/platform_hypercall.c
> +++ b/xen/arch/arm/platform_hypercall.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/******************************************************************=
*
> ***********
> =C2=A0 * platform_hypercall.c
> =C2=A0 *
> diff --git a/xen/arch/arm/shutdown.c b/xen/arch/arm/shutdown.c
> index 205a5e7f8c..c9778e5786 100644
> --- a/xen/arch/arm/shutdown.c
> +++ b/xen/arch/arm/shutdown.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <xen/console.h>
> =C2=A0#include <xen/cpu.h>
> =C2=A0#include <xen/delay.h>
> diff --git a/xen/arch/arm/smp.c b/xen/arch/arm/smp.c
> index bb65a08fc1..c11bba93ad 100644
> --- a/xen/arch/arm/smp.c
> +++ b/xen/arch/arm/smp.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <xen/mm.h>
> =C2=A0#include <asm/system.h>
> =C2=A0#include <asm/smp.h>
> diff --git a/xen/arch/arm/sysctl.c b/xen/arch/arm/sysctl.c
> index 5cda0dc674..32cab4feff 100644
> --- a/xen/arch/arm/sysctl.c
> +++ b/xen/arch/arm/sysctl.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/******************************************************************=
*
> ***********
> =C2=A0 * Arch-specific sysctl.c
> =C2=A0 *
> diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
> index 70b5aeb822..c65c1dbf52 100644
> --- a/xen/arch/arm/vgic-v3-its.c
> +++ b/xen/arch/arm/vgic-v3-its.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * xen/arch/arm/vgic-v3-its.c
> =C2=A0 *
> diff --git a/xen/arch/arm/vm_event.c b/xen/arch/arm/vm_event.c
> index ccfd25bbbc..31812d9da3 100644
> --- a/xen/arch/arm/vm_event.c
> +++ b/xen/arch/arm/vm_event.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * arch/arm/vm_event.c
> =C2=A0 *
> diff --git a/xen/arch/arm/vpl011.c b/xen/arch/arm/vpl011.c
> index 7856b4b5f5..1fc3114cce 100644
> --- a/xen/arch/arm/vpl011.c
> +++ b/xen/arch/arm/vpl011.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * arch/arm/vpl011.c
> =C2=A0 *
> diff --git a/xen/arch/arm/vsmc.c b/xen/arch/arm/vsmc.c
> index 7f2f5eb9ce..f679cced7f 100644
> --- a/xen/arch/arm/vsmc.c
> +++ b/xen/arch/arm/vsmc.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * xen/arch/arm/vsmc.c
> =C2=A0 *
> diff --git a/xen/arch/riscv/early_printk.c
> b/xen/arch/riscv/early_printk.c
> index 610c814f54..634141354c 100644
> --- a/xen/arch/riscv/early_printk.c
> +++ b/xen/arch/riscv/early_printk.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * RISC-V early printk using SBI
> =C2=A0 *
> diff --git a/xen/arch/riscv/include/asm/acpi.h
> b/xen/arch/riscv/include/asm/acpi.h
> index f0b5e90969..0c553bd6b8 100644
> --- a/xen/arch/riscv/include/asm/acpi.h
> +++ b/xen/arch/riscv/include/asm/acpi.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0
> =C2=A0#ifndef ASM__RISCV__ACPI_H
> =C2=A0#define ASM__RISCV__ACPI_H
> diff --git a/xen/arch/riscv/include/asm/bitops.h
> b/xen/arch/riscv/include/asm/bitops.h
> index 9a6f576187..d22eec1e87 100644
> --- a/xen/arch/riscv/include/asm/bitops.h
> +++ b/xen/arch/riscv/include/asm/bitops.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/* Copyright (C) 2012 Regents of the University of California */
> =C2=A0
> =C2=A0#ifndef ASM__RISCV__BITOPS_H
> diff --git a/xen/arch/riscv/include/asm/bug.h
> b/xen/arch/riscv/include/asm/bug.h
> index fa18dba20e..c395b809c6 100644
> --- a/xen/arch/riscv/include/asm/bug.h
> +++ b/xen/arch/riscv/include/asm/bug.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2012 Regents of the University of California
> =C2=A0 * Copyright (C) 2021-2023 Vates
> diff --git a/xen/arch/riscv/include/asm/cache.h
> b/xen/arch/riscv/include/asm/cache.h
> index 9a9e5162ab..d4cf1ac8e2 100644
> --- a/xen/arch/riscv/include/asm/cache.h
> +++ b/xen/arch/riscv/include/asm/cache.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0
> =C2=A0#ifndef ASM__RISCV__CACHE_H
> =C2=A0#define ASM__RISCV__CACHE_H
> diff --git a/xen/arch/riscv/include/asm/string.h
> b/xen/arch/riscv/include/asm/string.h
> index 75a2048fb1..a20af81f67 100644
> --- a/xen/arch/riscv/include/asm/string.h
> +++ b/xen/arch/riscv/include/asm/string.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0
> =C2=A0#ifndef ASM__RISCV__STRING_H
> =C2=A0#define ASM__RISCV__STRING_H
> diff --git a/xen/arch/x86/cpu/mcheck/intel-nonfatal.c
> b/xen/arch/x86/cpu/mcheck/intel-nonfatal.c
> index 092a828812..607c0f88c9 100644
> --- a/xen/arch/x86/cpu/mcheck/intel-nonfatal.c
> +++ b/xen/arch/x86/cpu/mcheck/intel-nonfatal.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Non Fatal Machine Check Exception Reporting
> =C2=A0 * (C) Copyright 2002 Dave Jones. <davej@codemonkey.org.uk>
> diff --git a/xen/arch/x86/debug.c b/xen/arch/x86/debug.c
> index b10f1f12b6..e99e663ba5 100644
> --- a/xen/arch/x86/debug.c
> +++ b/xen/arch/x86/debug.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2023 XenServer.
> =C2=A0 */
> diff --git a/xen/arch/x86/hvm/svm/nestedhvm.h
> b/xen/arch/x86/hvm/svm/nestedhvm.h
> index 43245e13de..9bfed5ffd7 100644
> --- a/xen/arch/x86/hvm/svm/nestedhvm.h
> +++ b/xen/arch/x86/hvm/svm/nestedhvm.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * nestedsvm.h: Nested Virtualization
> =C2=A0 *
> diff --git a/xen/arch/x86/hvm/svm/svm.h b/xen/arch/x86/hvm/svm/svm.h
> index 8dbf37ff49..beeaaab4f7 100644
> --- a/xen/arch/x86/hvm/svm/svm.h
> +++ b/xen/arch/x86/hvm/svm/svm.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * svm.h: SVM Architecture related definitions
> =C2=A0 *
> diff --git a/xen/arch/x86/include/asm/gdbsx.h
> b/xen/arch/x86/include/asm/gdbsx.h
> index e906be9ea3..6315a7cfeb 100644
> --- a/xen/arch/x86/include/asm/gdbsx.h
> +++ b/xen/arch/x86/include/asm/gdbsx.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#ifndef __X86_GDBX_H__
> =C2=A0#define __X86_GDBX_H__
> =C2=A0
> diff --git a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
> b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
> index a6915ad731..79cfc90dd8 100644
> --- a/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
> +++ b/xen/arch/x86/include/asm/guest/hyperv-tlfs.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0
> =C2=A0/*
> =C2=A0 * This file contains definitions from Hyper-V Hypervisor Top-Level
> Functional
> diff --git a/xen/arch/x86/include/asm/intel-family.h
> b/xen/arch/x86/include/asm/intel-family.h
> index d44dd3f69f..ab20cce124 100644
> --- a/xen/arch/x86/include/asm/intel-family.h
> +++ b/xen/arch/x86/include/asm/intel-family.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#ifndef _ASM_X86_INTEL_FAMILY_H
> =C2=A0#define _ASM_X86_INTEL_FAMILY_H
> =C2=A0
> diff --git a/xen/arch/x86/include/asm/nospec.h
> b/xen/arch/x86/include/asm/nospec.h
> index e058a3bb0e..150e78e884 100644
> --- a/xen/arch/x86/include/asm/nospec.h
> +++ b/xen/arch/x86/include/asm/nospec.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights
> Reserved. */
> =C2=A0
> =C2=A0#ifndef _ASM_X86_NOSPEC_H
> diff --git a/xen/arch/x86/include/asm/prot-key.h
> b/xen/arch/x86/include/asm/prot-key.h
> index 0dcd31b7ea..0cbecc2df4 100644
> --- a/xen/arch/x86/include/asm/prot-key.h
> +++ b/xen/arch/x86/include/asm/prot-key.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (c) 2021-2022 Citrix Systems Ltd.
> =C2=A0 */
> diff --git a/xen/common/device-tree/bootfdt.c b/xen/common/device-
> tree/bootfdt.c
> index 911a630e7d..927f59c64b 100644
> --- a/xen/common/device-tree/bootfdt.c
> +++ b/xen/common/device-tree/bootfdt.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Early Device Tree
> =C2=A0 *
> diff --git a/xen/common/sched/boot-cpupool.c b/xen/common/sched/boot-
> cpupool.c
> index feeac3b704..641f3495cb 100644
> --- a/xen/common/sched/boot-cpupool.c
> +++ b/xen/common/sched/boot-cpupool.c
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * xen/common/boot_cpupools.c
> =C2=A0 *
> diff --git a/xen/include/asm-generic/atomic-ops.h b/xen/include/asm-
> generic/atomic-ops.h
> index 98dd907942..769583b766 100644
> --- a/xen/include/asm-generic/atomic-ops.h
> +++ b/xen/include/asm-generic/atomic-ops.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * The header provides default implementations for every
> xen/atomic.h-provided
> =C2=A0 * forward inline declaration that can be synthesized from other
> atomic
> diff --git a/xen/include/asm-generic/monitor.h b/xen/include/asm-
> generic/monitor.h
> index 1ade289099..cad2b6ff24 100644
> --- a/xen/include/asm-generic/monitor.h
> +++ b/xen/include/asm-generic/monitor.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * include/asm-generic/monitor.h
> =C2=A0 *
> diff --git a/xen/include/xen/alternative-call.h
> b/xen/include/xen/alternative-call.h
> index 10f7d7637e..62672b7324 100644
> --- a/xen/include/xen/alternative-call.h
> +++ b/xen/include/xen/alternative-call.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#ifndef XEN_ALTERNATIVE_CALL
> =C2=A0#define XEN_ALTERNATIVE_CALL
> =C2=A0
> diff --git a/xen/include/xen/nospec.h b/xen/include/xen/nospec.h
> index 828dbd4e0a..c8167a8a24 100644
> --- a/xen/include/xen/nospec.h
> +++ b/xen/include/xen/nospec.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/* Copyright(c) 2018 Linus Torvalds. All rights reserved. */
> =C2=A0/* Copyright(c) 2018 Alexei Starovoitov. All rights reserved. */
> =C2=A0/* Copyright(c) 2018 Intel Corporation. All rights reserved. */
> diff --git a/xen/include/xen/unaligned.h
> b/xen/include/xen/unaligned.h
> index d9bb599e65..8c8b08338b 100644
> --- a/xen/include/xen/unaligned.h
> +++ b/xen/include/xen/unaligned.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#ifndef __XEN_UNALIGNED_H__
> =C2=A0#define __XEN_UNALIGNED_H__
> =C2=A0
> diff --git a/xen/tools/kconfig/expr.h b/xen/tools/kconfig/expr.h
> index 017843c9a4..fd08add33f 100644
> --- a/xen/tools/kconfig/expr.h
> +++ b/xen/tools/kconfig/expr.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
> =C2=A0 */
> diff --git a/xen/tools/kconfig/images.h b/xen/tools/kconfig/images.h
> index d8ff614bd0..565466511d 100644
> --- a/xen/tools/kconfig/images.h
> +++ b/xen/tools/kconfig/images.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
> =C2=A0 */
> diff --git a/xen/tools/kconfig/lexer.l b/xen/tools/kconfig/lexer.l
> index 4b7339ff4c..1e57543900 100644
> --- a/xen/tools/kconfig/lexer.l
> +++ b/xen/tools/kconfig/lexer.l
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
> =C2=A0 */
> diff --git a/xen/tools/kconfig/list.h b/xen/tools/kconfig/list.h
> index 45cb237ab7..979cd516d6 100644
> --- a/xen/tools/kconfig/list.h
> +++ b/xen/tools/kconfig/list.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#ifndef LIST_H
> =C2=A0#define LIST_H
> =C2=A0
> diff --git a/xen/tools/kconfig/lkc.h b/xen/tools/kconfig/lkc.h
> index 4fb16f3166..18282e7b0b 100644
> --- a/xen/tools/kconfig/lkc.h
> +++ b/xen/tools/kconfig/lkc.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
> =C2=A0 */
> diff --git a/xen/tools/kconfig/lkc_proto.h
> b/xen/tools/kconfig/lkc_proto.h
> index f9ab98238a..7598a2ef20 100644
> --- a/xen/tools/kconfig/lkc_proto.h
> +++ b/xen/tools/kconfig/lkc_proto.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0#include <stdarg.h>
> =C2=A0
> =C2=A0/* confdata.c */
> diff --git a/xen/tools/kconfig/lxdialog/checklist.c
> b/xen/tools/kconfig/lxdialog/checklist.c
> index fd161cfff1..29960ed000 100644
> --- a/xen/tools/kconfig/lxdialog/checklist.c
> +++ b/xen/tools/kconfig/lxdialog/checklist.c
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0+
> +// SPDX-License-Identifier: GPL-2.0-or-later
> =C2=A0/*
> =C2=A0 *=C2=A0 checklist.c -- implements the checklist box
> =C2=A0 *
> diff --git a/xen/tools/kconfig/lxdialog/dialog.h
> b/xen/tools/kconfig/lxdialog/dialog.h
> index 68b565e3c4..3930d93a4a 100644
> --- a/xen/tools/kconfig/lxdialog/dialog.h
> +++ b/xen/tools/kconfig/lxdialog/dialog.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0+ */
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> =C2=A0/*
> =C2=A0 *=C2=A0 dialog.h -- common declarations for all dialog modules
> =C2=A0 *
> diff --git a/xen/tools/kconfig/lxdialog/inputbox.c
> b/xen/tools/kconfig/lxdialog/inputbox.c
> index 1dcfb288ee..b8b6f15779 100644
> --- a/xen/tools/kconfig/lxdialog/inputbox.c
> +++ b/xen/tools/kconfig/lxdialog/inputbox.c
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0+
> +// SPDX-License-Identifier: GPL-2.0-or-later
> =C2=A0/*
> =C2=A0 *=C2=A0 inputbox.c -- implements the input box
> =C2=A0 *
> diff --git a/xen/tools/kconfig/lxdialog/menubox.c
> b/xen/tools/kconfig/lxdialog/menubox.c
> index 58c2f8afe5..4287745566 100644
> --- a/xen/tools/kconfig/lxdialog/menubox.c
> +++ b/xen/tools/kconfig/lxdialog/menubox.c
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0+
> +// SPDX-License-Identifier: GPL-2.0-or-later
> =C2=A0/*
> =C2=A0 *=C2=A0 menubox.c -- implements the menu box
> =C2=A0 *
> diff --git a/xen/tools/kconfig/lxdialog/textbox.c
> b/xen/tools/kconfig/lxdialog/textbox.c
> index 4e339b1266..b5987735b0 100644
> --- a/xen/tools/kconfig/lxdialog/textbox.c
> +++ b/xen/tools/kconfig/lxdialog/textbox.c
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0+
> +// SPDX-License-Identifier: GPL-2.0-or-later
> =C2=A0/*
> =C2=A0 *=C2=A0 textbox.c -- implements the text box
> =C2=A0 *
> diff --git a/xen/tools/kconfig/lxdialog/util.c
> b/xen/tools/kconfig/lxdialog/util.c
> index 1b490d4af0..0de2b05352 100644
> --- a/xen/tools/kconfig/lxdialog/util.c
> +++ b/xen/tools/kconfig/lxdialog/util.c
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0+
> +// SPDX-License-Identifier: GPL-2.0-or-later
> =C2=A0/*
> =C2=A0 *=C2=A0 util.c
> =C2=A0 *
> diff --git a/xen/tools/kconfig/lxdialog/yesno.c
> b/xen/tools/kconfig/lxdialog/yesno.c
> index bcaac9b7ba..ff1db42b3d 100644
> --- a/xen/tools/kconfig/lxdialog/yesno.c
> +++ b/xen/tools/kconfig/lxdialog/yesno.c
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0+
> +// SPDX-License-Identifier: GPL-2.0-or-later
> =C2=A0/*
> =C2=A0 *=C2=A0 yesno.c -- implements the yes/no box
> =C2=A0 *
> diff --git a/xen/tools/kconfig/nconf.h b/xen/tools/kconfig/nconf.h
> index fa5245eb93..eab138b30d 100644
> --- a/xen/tools/kconfig/nconf.h
> +++ b/xen/tools/kconfig/nconf.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2008 Nir Tzachar <nir.tzachar@gmail.com>
> =C2=A0 *
> diff --git a/xen/tools/kconfig/parser.y b/xen/tools/kconfig/parser.y
> index 822fc89fc8..5bac26bd91 100644
> --- a/xen/tools/kconfig/parser.y
> +++ b/xen/tools/kconfig/parser.y
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
> =C2=A0 */
> diff --git a/xen/tools/kconfig/qconf.h b/xen/tools/kconfig/qconf.h
> index 45bfe9b2b9..61ecd5bdab 100644
> --- a/xen/tools/kconfig/qconf.h
> +++ b/xen/tools/kconfig/qconf.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> =C2=A0/*
> =C2=A0 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
> =C2=A0 */



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 14:48:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 14:48:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822020.1236022 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1oGr-0002GP-Mf; Fri, 18 Oct 2024 14:48:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822020.1236022; Fri, 18 Oct 2024 14:48: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 1t1oGr-0002GI-Ju; Fri, 18 Oct 2024 14:48:05 +0000
Received: by outflank-mailman (input) for mailman id 822020;
 Fri, 18 Oct 2024 14:48: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 1t1oGq-0002G8-Ki; Fri, 18 Oct 2024 14:48: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 1t1oGq-0006O6-H8; Fri, 18 Oct 2024 14:48: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 1t1oGq-0005TP-9Q; Fri, 18 Oct 2024 14:48:04 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1oGq-0003J1-97; Fri, 18 Oct 2024 14:48: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=9U7N+D74F+1vBHXGmknjwYhDJZSCGkgnoPxGE8sbNho=; b=4MC0CC9tOFgd9Y2nCBc72z1snF
	5U0yJha7zxRSCYN9r9NwFJ5RsHXQBUPFpPzzW4UZRZAeckGNxOHJmiDndOGu83duFNR8UjQhyX0vE
	06bD7NnacQMq4Zhj9w7oFMt8RLfYlPxeAbLvl0zbaxklMuHUsJh58xfaVhExAOkAcSVA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188244-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188244: 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=4c21b6affb4c5a3afe22cbc144362091de063366
X-Osstest-Versions-That:
    xen=a285d2ac2e524c808091062c67142cf5924b56f6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 14:48:04 +0000

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

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                  4c21b6affb4c5a3afe22cbc144362091de063366
baseline version:
 xen                  a285d2ac2e524c808091062c67142cf5924b56f6

Last test of basis   188209  2024-10-18 00:00:25 Z    0 days
Testing same since   188244  2024-10-18 11:00:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Christian Lindig <christian.lindig@cloud.com>
  Daniel P. Smith <dpsmith@apertussolutions.com>
  Jan Beulich <jbeulich@suse.com>
  Javi Merino <javi.merino@cloud.com>
  Stefano Stabellini <sstabellini@kernel.org>

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
   a285d2ac2e..4c21b6affb  4c21b6affb4c5a3afe22cbc144362091de063366 -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 15:52:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 15:52:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822039.1236039 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1pGo-0002Qw-9W; Fri, 18 Oct 2024 15:52:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822039.1236039; Fri, 18 Oct 2024 15:52: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 1t1pGo-0002Qp-6Z; Fri, 18 Oct 2024 15:52:06 +0000
Received: by outflank-mailman (input) for mailman id 822039;
 Fri, 18 Oct 2024 15:52: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=/a1N=RO=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t1pGm-0002Qh-G5
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 15:52:04 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2413::61b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e97ba24e-8d68-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 17:52:01 +0200 (CEST)
Received: from DS7PR06CA0047.namprd06.prod.outlook.com (2603:10b6:8:54::27) by
 DM6PR12MB4140.namprd12.prod.outlook.com (2603:10b6:5:221::13) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8069.24; Fri, 18 Oct 2024 15:51:55 +0000
Received: from DS3PEPF000099D4.namprd04.prod.outlook.com
 (2603:10b6:8:54:cafe::2a) by DS7PR06CA0047.outlook.office365.com
 (2603:10b6:8:54::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.23 via Frontend
 Transport; Fri, 18 Oct 2024 15:51:55 +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.8069.17 via Frontend Transport; Fri, 18 Oct 2024 15:51:55 +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.39; Fri, 18 Oct
 2024 10:51:53 -0500
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.39; Fri, 18 Oct
 2024 10:51:52 -0500
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.39 via
 Frontend Transport; Fri, 18 Oct 2024 10:51:52 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e97ba24e-8d68-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=JmGg/bz/f6CKetYS2hTpT2b6o+ijqNGHH89bD/XLQwbDLCJDc2JeKBz4PGfRboBsm2GLAQGyIjPom/bfS/Ti1/XzInt5PG4jbQBv5Eh7KXLWq+1ZR/MyWOmJkAiwxjdSSrTijJQqtS62ykA175GGlQ3055cOgFl9wQT3whfNqahXS34rdQ4tAWcEFvvZycNfP4BHui0r/pEbAzKqMDUVCoU7YOIylCrS9fAx02X06M0TjAFDQxGd3bvAxDeM0XjhGJY5hE8ziLmhnj4QFzM0Twiygse/VUFmLybm9b48UC7By/f+00Nr6BTXHfWuuRvkHfFhindIJB1nUJUtUCy8Og==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=mDQCIMfLR/FEIw0hQ9HyHhSu1V2kRxDHrtTYGAA4uws=;
 b=oU8XSmym2o1cAytx5u7ERzyzoGPOq24rqZwtjzgB/uh/Mx4N4PLu423Faga/9/ooY1mTR9L6gqgPd6O9pqQgtdYyv9JuM52xfAcTgu8W04nUufiJLlC13OKUehZMrEfEOIzcEyWWcL5Ieh0tPcwnUlr0fcFzIHvB0RWFc0PbWHHcZsE/nCmuAdsUeBJvhi0nOzlKj26/k37nPovNTjUTpaPb+gCy6sXcyi+5RpOnU1+P0/hBtCUKIObIQrIChJAvh0JsT37jwl4+SVUOtNwa8zFtFHorzgKH4/jm3LLDn+cZt+tA4sCYk8I5d2bvF+8V6VG/K92iwOrYSLhzsgsE6A==
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=mDQCIMfLR/FEIw0hQ9HyHhSu1V2kRxDHrtTYGAA4uws=;
 b=tgdbIajgOSqIam3i92m4JOiWK5sNTfjtuFLm6Koz1ccAUWIvLGzIPoPv4r1obq1Ukjo/S+qUD+MwNcliFs55nTJWVDxw8YgdZ4qC6mw4sFP6Lq0HbnbA7WNqQW2zzOEmuh9tctBd6jSEaww6yy9thT96Of9acjAoE+XVKjjCqdA=
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: Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, "Ayan
 Kumar Halder" <ayan.kumar.halder@amd.com>, Artem Mygaiev
	<artem_mygaiev@epam.com>, Munakata Hisao <hisao.munakata.vt@renesas.com>
Subject: [PATCH] docs: fusa: Add dom0less domain configuration requirements
Date: Fri, 18 Oct 2024 16:51:44 +0100
Message-ID: <20241018155144.3433395-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: DS3PEPF000099D4:EE_|DM6PR12MB4140:EE_
X-MS-Office365-Filtering-Correlation-Id: e6c57ee7-38db-4585-2e68-08dcef8ccac5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?YpPFmH+/Gmq/oR0Gl2iCjom5K3YYOL6/fi11WGFGNCJO6ONIwJ4MCrEj3W9J?=
 =?us-ascii?Q?jG2zIgHu/E5mrjXlS6l6d1maSwTjb14E865fXwdIrLxBZMZ0/HT57P0HqAKH?=
 =?us-ascii?Q?37QkByRLMhfRVWHf/ykQfObqEN/PJKsAajzNj2Ya6SOUpIGwamjL8ySRNaQb?=
 =?us-ascii?Q?RFBGLXHr0QtB16m58LdUOvu7bbH8nSdTnDs+tvAvRTIN31GdP5HwpSVwX5lY?=
 =?us-ascii?Q?akC7QDm0sBAh5aEgLGL/PWZ5L3A4rfXsVBOLZjBhrobKwxvETugFg/IDiafU?=
 =?us-ascii?Q?MLyNNuS+zJVf20IC9AIp2fDFKM3Lm+B8RUxMJZTAd6EeYIaokhxU4N3ENrtt?=
 =?us-ascii?Q?tDdY1sn8VmTd6uXyIp0SNZC/66Cj+bn8/VUOKfjQD+zxtAjkX+yZCXUmJRAg?=
 =?us-ascii?Q?gSe8fu+Tp30gfQ3PfbraGQOZAaB1pRAuFCUYeNrrebe4LevSAhpWOrmz14xw?=
 =?us-ascii?Q?L7ks/8pKkrYCnAyNEreA2sxSq+m5Y4AwgZ9btXTsLKgVRbOpMP1lDf+2VENe?=
 =?us-ascii?Q?2UAfrjHYvDQ2SnjMA0fgJU8r8CBFkPc2HsoCTyS3+wDOkN9PhxHt1VZ5rQWq?=
 =?us-ascii?Q?iALbCVHg0Xa9B4cM10/iy9Qb0uNuALM+oD0r/LhvQg9WGPkOfh1E9POD3WAC?=
 =?us-ascii?Q?jW+0owtWZjNnaN5NlqFm8cawewbN8yGMh2sOo3WNLRf8y53RWo3VneMfLY1W?=
 =?us-ascii?Q?fq+N4gSp6FpxSWQ3Ol12c4Kl58WYCLnajmugdqRBT2IMJqFOgrG62/Ixy3zC?=
 =?us-ascii?Q?J+65TFfmJtVBkdg3vurxFfQLr6kI1qevFV/yNH8e0HNdPhqBPX3ObcP5qbQc?=
 =?us-ascii?Q?iqrAM5ZoSSsrsUidpke66uMu7Tj3BcLkKUDrmrkc/W+EmX0myNERNKD+ZBWc?=
 =?us-ascii?Q?FidsxKbvtRog6tgLwlU11uo5EXA/yCOvAmp5/5wRJx0zznolspt2C2lvnWwq?=
 =?us-ascii?Q?pSiQXy0cnALRdGQ1gfmAMoMdT3FDIgLI+F/kE+5VAO2D2pKqaJ5F9czrDp4P?=
 =?us-ascii?Q?h1xqry3RYdnkJKt+8Txx1isIayVLKAXafUsVY4WVgTE00tNVEx5FboeX05gD?=
 =?us-ascii?Q?pug9JG6LmFwJG6D8NpB6rj7xaYIuoLEGwycg044vFYUNZglQs7UV+H7tLQKc?=
 =?us-ascii?Q?Ocx+PDpu2F4DoaUROBrhkaoim/2B6fIKXnKWOorgn/sCh3wPu1vam1jQMvM8?=
 =?us-ascii?Q?pKSwauyEsyCpMbH0+Q+n2RCfU4iEmul2B6Xb+fQv7UHuPGFZlkuSX/+OIHq5?=
 =?us-ascii?Q?jqOPh37felNkUAqJFs1ANEAwEfbdvvV4uno96+9WjlR45PgAsy9/skdXLp+/?=
 =?us-ascii?Q?5fV28RS86Sbm6LF9HDN9Y8f5Xf+QdBe52ZMuyjBD609GOkNGyFJZZZEs+JMo?=
 =?us-ascii?Q?tlX2n3Y=3D?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 15:51:55.5054
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e6c57ee7-38db-4585-2e68-08dcef8ccac5
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: DM6PR12MB4140

From: Michal Orzel <michal.orzel@amd.com>

Add requirements for dom0less domain creation.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
 .../arm64/dom0less_domain_config.rst          | 267 ++++++++++++++++++
 docs/fusa/reqs/market-reqs/reqs.rst           |  15 +
 docs/fusa/reqs/product-reqs/arm64/reqs.rst    |  20 ++
 3 files changed, 302 insertions(+)
 create mode 100644 docs/fusa/reqs/design-reqs/arm64/dom0less_domain_config.rst

diff --git a/docs/fusa/reqs/design-reqs/arm64/dom0less_domain_config.rst b/docs/fusa/reqs/design-reqs/arm64/dom0less_domain_config.rst
new file mode 100644
index 0000000000..17b5f8962c
--- /dev/null
+++ b/docs/fusa/reqs/design-reqs/arm64/dom0less_domain_config.rst
@@ -0,0 +1,267 @@
+.. SPDX-License-Identifier: CC-BY-4.0
+
+Dom0less Domain configuration requirements
+==========================================
+
+The following are the requirements related to dom0less domain configuration for
+Arm64 domains.
+
+Specify Arm64 Linux kernel image
+----------------------------------
+
+`XenSwdgn~arm64_specify_kernel_linux_image~1`
+
+Description:
+Xen shall create a domain with a Arm64 Linux kernel image.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify Arm64 Gzip Linux kernel image
+---------------------------------------
+
+`XenSwdgn~arm64_specify_kernel_gzip_image~1`
+
+Description:
+Xen shall create a domain with a Arm64 Gzip compressed Linux kernel image.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify kernel with uImage header
+---------------------------------
+
+`XenSwdgn~arm64_specify_kernel_uimage~1`
+
+Description:
+Xen shall create a domain with a kernel containing uImage header.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify Gzip kernel with uImage header
+--------------------------------------
+
+`XenSwdgn~arm64_specify_gzip_kernel_uimage~1`
+
+Description:
+Xen shall create a domain with a Gzip compressed kernel containing uImage
+header.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify passthrough device tree
+-------------------------------
+
+`XenSwdgn~arm64_specify_passthrough_dt~1`
+
+Description:
+Xen shall support direct assignment of devices to a domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify kernel command line arguments
+-------------------------------------
+
+`XenSwdgn~arm64_specify_kernel_cmd_line_args~1`
+
+Description:
+Xen shall pass kernel command line arguments to a domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify initial ramdisk
+-----------------------
+
+`XenSwdgn~arm64_specify_initial_ramdisk~1`
+
+Description:
+Xen shall provide initial ramdisk to a domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify amount of memory
+------------------------
+
+`XenSwdgn~arm64_specify_memory~1`
+
+Description:
+Xen shall create a domain with specified amount of memory.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Assign a single vCPU
+--------------------
+
+`XenSwdgn~arm64_assign_single_vcpu~1`
+
+Description:
+Xen shall assign a single vCPU to a domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Assign multiple vCPUs
+---------------------
+
+`XenSwdgn~arm64_assign_multiple_vcpus~1`
+
+Description:
+Xen shall assign multiple vCPUs to a domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Assign vCPUs from CPU pool
+--------------------------
+
+`XenSwdgn~arm64_assign_vcpus_cpu_pool~1`
+
+Description:
+Xen shall assign vCPUs to a domain from a CPU pool.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify CPU pool scheduler
+--------------------------
+
+`XenSwdgn~arm64_specify_cpu_pool_scheduler~1`
+
+Description:
+Xen shall assign a CPU pool scheduler to a domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Assign virtual UART
+-------------------
+
+`XenSwdgn~arm64_assign_virtual_uart~1`
+
+Description:
+Xen shall assign a virtual UART to a domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify number of SPIs
+----------------------
+
+`XenSwdgn~arm64_specify_num_spis~1`
+
+Description:
+Xen shall allocate a specified number of shared peripheral interrupts for a
+domain.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify grant table version for a domain
+----------------------------------------
+
+`XenSwdgn~arm64_specify_grant_table_version~1`
+
+Description:
+Xen shall create a domain with a specified version of grant table structure
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify number of grant table frames for a domain
+-------------------------------------------------
+
+`XenSwdgn~arm64_specify_num_grant_table_frames~1`
+
+Description:
+Xen shall create a domain with a specified number of grant table frames.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+Specify number of grant maptrack frames for a domain
+----------------------------------------------------
+
+`XenSwdgn~arm64_specify_num_grant_maptrack_frames~1`
+
+Description:
+Xen shall create a domain with a specified number of grant maptrack frames.
+
+Rationale:
+
+Comments:
+
+Covers:
+ - `XenProd~static_domains_configuration~1`
+
+| [1] https://xenbits.xenproject.org/gitweb/?p=xen.git;a=blob;f=docs/misc/arm/device-tree/booting.txt
+| [2] https://xenbits.xenproject.org/gitweb/?p=xen.git;a=blob;f=docs/misc/arm/device-tree/cpupools.txt
diff --git a/docs/fusa/reqs/market-reqs/reqs.rst b/docs/fusa/reqs/market-reqs/reqs.rst
index f456788d96..ca020f9a33 100644
--- a/docs/fusa/reqs/market-reqs/reqs.rst
+++ b/docs/fusa/reqs/market-reqs/reqs.rst
@@ -47,3 +47,18 @@ Comments:
 
 Needs:
  - XenProd
+
+Static VM definition
+--------------------
+
+`XenMkt~static_vm_definition~1`
+
+Description:
+Xen shall support specifying resources for a domain.
+
+Rationale:
+
+Comments:
+
+Needs:
+ - XenProd
\ No newline at end of file
diff --git a/docs/fusa/reqs/product-reqs/arm64/reqs.rst b/docs/fusa/reqs/product-reqs/arm64/reqs.rst
index db91c47a02..0453dbb862 100644
--- a/docs/fusa/reqs/product-reqs/arm64/reqs.rst
+++ b/docs/fusa/reqs/product-reqs/arm64/reqs.rst
@@ -40,3 +40,23 @@ Covers:
 
 Needs:
  - XenSwdgn
+
+Configure static domains
+------------------------
+
+`XenProd~static_domains_configuration~1`
+
+Description:
+Xen shall support specifying the resources required for a domain.
+
+Rationale:
+
+Comments:
+
+Rationale:
+
+Covers:
+ - `XenMkt~static_vm_definition~1`
+
+Needs:
+ - XenSwdgn
\ No newline at end of file
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 15:58:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 15:58:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822047.1236049 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1pMR-0007L9-Sh; Fri, 18 Oct 2024 15:57:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822047.1236049; Fri, 18 Oct 2024 15:57: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 1t1pMR-0007L2-Pi; Fri, 18 Oct 2024 15:57:55 +0000
Received: by outflank-mailman (input) for mailman id 822047;
 Fri, 18 Oct 2024 15:57: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=Jazm=RO=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t1pMQ-0007Ku-Mu
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 15:57:54 +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 bbf688e9-8d69-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 17:57:53 +0200 (CEST)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fb57f97d75so23156571fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 18 Oct 2024 08:57:53 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2fb809a6922sm2504401fa.16.2024.10.18.08.57.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 18 Oct 2024 08:57:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bbf688e9-8d69-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729267073; x=1729871873; 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=v5orI54nZBD+fu8JQy5cbVlXs/AsjxM47XNEU+WvlJo=;
        b=kumyMn51DVNGkLfOUmHfryFs1GRIkCNIVHyCHeANMuHRW6sKg+UCI4PDiSSRXUKFOk
         zlVa/64qsnyN/TJEXnpQ9dtCfQ5Jqc5Re5Ke8lNolXtHWRoBiBNq1U4t+F1zgQF5neI3
         nOogw+hcp2+YDmD5ykW0nS+T62AT2F03kWe+jJ/1MLZxSVvPlEsesOq4i3oj2W4XOQVb
         fDFJop4EmypDdAwy3pXhKSD93qODeskfHr33llomSNlqRV2+D0rlwCCcbzIy07JUwI49
         rp1/Ahnhtv177R1u6VxpaErrIWaZ9O5fHtMpU0bazxJBBeGeKoRofbRxSE2nOOxogAN1
         2vhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729267073; x=1729871873;
        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=v5orI54nZBD+fu8JQy5cbVlXs/AsjxM47XNEU+WvlJo=;
        b=Tn0vw4krjaL9fdc2PDln1dRPbS7d9ifYE6Ey/Ds9JhYJmxXFKDjgHOancZR6NADWmh
         hLLzODdZvrksRt0Ps0oVWtWRWO9Sz2MpRA8fNrlE5Xm3ZvMlrM6/A0I11/E+hpvRgyf5
         JYhDc4o87pR+U4ABBYF8apkQ/AqRSMuKWziJ5Bnr3MxbpmoeekJlcCwJn24+pSvoaydW
         rMIhpwYTu20U9u1JXprNDxsESr0ACuhy9SYNdU2ptjMGZ8HIvHN6GqS9q7YzOx5VRgMl
         hwOvQpXGUwVuALDzOucmCdt9p2ppUcoD2uXjjAQ/LzuxVrwo1wns9IS2IQ3JyUkGRo6P
         UDiQ==
X-Forwarded-Encrypted: i=1; AJvYcCVwoaktYVQW83G0UJEgVL9/8tvOy5Dlyed0SxWcbv6QuTGug95QE0kB8iK1GqCa0UublrVRVQzdQ1k=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzappmj2Tb6HD10YqDusrGTdhSoquvEur5SBBen6O6+9FsfexsJ
	NxsmECctzyb4dX9L6Tw0eMk3twuGvVCtyAIQFUySqBs9JnJNCb1g
X-Google-Smtp-Source: AGHT+IGd+kDjWFM4wSb2CwHkt8+qZYqj7stZyJLOZf279C/0iy98ifZ0fj5Ds8ZHSJn746YoDqNE5Q==
X-Received: by 2002:a2e:a99a:0:b0:2fb:4f0c:e40a with SMTP id 38308e7fff4ca-2fb83281b7bmr14684821fa.38.1729267072760;
        Fri, 18 Oct 2024 08:57:52 -0700 (PDT)
Message-ID: <6f1d21c3eb10edf9206f45b6c0c6afaa7bb58ef3.camel@gmail.com>
Subject: Re: [PATCH v1 1/5] xen/riscv: add stub for
 share_xen_page_with_guest()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Fri, 18 Oct 2024 17:57:51 +0200
In-Reply-To: <3f87a19f-c249-438a-ac1d-be9b8fd80c8e@suse.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
	 <3dfd4bdf6584e73ecdbff5a66fdbaec68e31cc3c.1729068334.git.oleksii.kurochko@gmail.com>
	 <b8de7161-5d71-4ed7-a3cf-611f4a860926@suse.com>
	 <df635c41cf530d08898d021adf92eb141624d07d.camel@gmail.com>
	 <3f87a19f-c249-438a-ac1d-be9b8fd80c8e@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Fri, 2024-10-18 at 15:27 +0200, Jan Beulich wrote:
> On 18.10.2024 15:10, oleksii.kurochko@gmail.com=C2=A0wrote:
> > On Thu, 2024-10-17 at 16:51 +0200, Jan Beulich wrote:
> > > On 16.10.2024 11:15, Oleksii Kurochko wrote:
> > > > To avoid the following linkage fail the stub for
> > > > share_xen_page_with_guest()
> > > > is introduced:
> > >=20
> > > What do you intend to express with "is introduced"? Is there a
> > > problem now?
> > > Would there be a problem with subsequent changes? I'm entirely
> > > fine
> > > with
> > > adding that stub, but the description should make clear why /when
> > > exactly
> > > it's needed.
> > I mentioned that in the cover letter:
> > ```
> > =C2=A0=C2=A0 Also, after patch 3 ("xen/riscv: introduce setup_mm()") of=
 this
> > =C2=A0=C2=A0 patch series,
> > =C2=A0=C2=A0 the linkage error mentioned in patch 1 ("xen/riscv: add st=
ub for
> > =C2=A0=C2=A0 share_xen_page_with_guest()") began to occur, so patch 1
> > addresses
> > =C2=A0=C2=A0 this issue.
> > ```
> > I thought it would be the better then just mention in the commit
> > message that.
>=20
> Mentioning in the cover letter is fine, but each patch needs to also
> be self-contained.
>=20
> > Will it be fine to mention instead:
> > ```
> > =C2=A0=C2=A0 Introduction of setup memory management function will requ=
ire
> > =C2=A0=C2=A0 share_xen_page_with_guest() defined, at least, as a stub
> > otherwise
> > =C2=A0=C2=A0 the following linkage error will occur...
> > ```
>=20
> Quoting the linker error is imo of limited use. What such an
> explanation
> wants to say is why, all of the sudden, such an error occurs. After
> all
> you don't change anything directly related to common/trace.c.
if maddr_to_virt() is defined as:
    static inline void *maddr_to_virt(paddr_t ma)
   {
       BUG_ON("unimplemented");
       return NULL;
       // /* Offset in the direct map, accounting for pdx compression */
       // unsigned long va_offset =3D maddr_to_directmapoff(ma);
  =20
       // ASSERT(va_offset < DIRECTMAP_SIZE);
  =20
       // return (void *)(DIRECTMAP_VIRT_START + va_offset);
   }
Then no stub for share_xen_page_with_privileged_guests() is needed but
it isn't clear at all why the definition of maddr_to_virt() affects
linkage of share_xen_page_with_privileged_guests().

I tried to look what is the difference after preprocessing stage for
common/trace.o and the only difference is in how maddr_to_virt() is
implemented:
   7574a7575,7577
   >     do { if (__builtin_expect(!!("unimplemented"),0)) do { do { ({
   _Static_assert(!((30) >> ((31 - 24) + (31 - 24))), "!(" "(30) >>
   (BUG_LINE_LO_WIDTH + BUG_LINE_HI_WIDTH)" ")"); }); ({
   _Static_assert(!((2) >=3D 4), "!(" "(2) >=3D BUGFRAME_NR" ")"); }); asm
   volatile ( ".Lbug%=3D:""unimp""\n" "   .pushsection
   .bug_frames.%""""[bf_type], \"a\", %%progbits\n" "   .p2align 2\n"
   ".Lfrm%=3D:\n" "   .long (.Lbug%=3D - .Lfrm%=3D) + %""""[bf_line_hi]\n" =
"
   .long (%""""[bf_ptr] - .Lfrm%=3D) + %""""[bf_line_lo]\n" "   .if " "0"
   "\n" "   .long 0, %""""[bf_msg] - .Lfrm%=3D\n" "   .endif\n" " =20
   .popsection\n" :: [bf_type] "i" (2), [bf_ptr] "i"
   ("./arch/riscv/include/asm/mm.h"), [bf_msg] "i" (((void*)0)),
   [bf_line_lo] "i" (((30) & ((1 << (31 - 24)) - 1)) << 24),
   [bf_line_hi] "i" (((30) >> (31 - 24)) << 24) ); } while ( 0 );
   __builtin_unreachable(); } while ( 0 ); } while (0);
   >     return ((void*)0);
   >=20
   7578d7580
   <     unsigned long va_offset =3D (ma);
   7580d7581
   <     do { if ( __builtin_expect(!!(!(va_offset < ((((vaddr_t)(509))
   << ((3 - 1) * (9) + 12)) - (((vaddr_t)(200)) << ((3 - 1) * (9) +
   12))))),0) ) do { do { ({ _Static_assert(!((35) >> ((31 - 24) + (31
   - 24))), "!(" "(35) >> (BUG_LINE_LO_WIDTH + BUG_LINE_HI_WIDTH)"
   ")"); }); ({ _Static_assert(!((3) >=3D 4), "!(" "(3) >=3D BUGFRAME_NR"
   ")"); }); asm volatile ( ".Lbug%=3D:""unimp""\n" "   .pushsection
   .bug_frames.%""""[bf_type], \"a\", %%progbits\n" "   .p2align 2\n"
   ".Lfrm%=3D:\n" "   .long (.Lbug%=3D - .Lfrm%=3D) + %""""[bf_line_hi]\n" =
"
   .long (%""""[bf_ptr] - .Lfrm%=3D) + %""""[bf_line_lo]\n" "   .if " "1"
   "\n" "   .long 0, %""""[bf_msg] - .Lfrm%=3D\n" "   .endif\n" " =20
   .popsection\n" :: [bf_type] "i" (3), [bf_ptr] "i"
   ("./arch/riscv/include/asm/mm.h"), [bf_msg] "i" ("va_offset <
   DIRECTMAP_SIZE"), [bf_line_lo] "i" (((35) & ((1 << (31 - 24)) - 1))
   << 24), [bf_line_hi] "i" (((35) >> (31 - 24)) << 24) ); } while ( 0
   ); __builtin_unreachable(); } while ( 0 ); } while (0);
   7582d7582
   <     return (void *)((((vaddr_t)(200)) << ((3 - 1) * (9) + 12)) +
   va_offset);

Could it be that DCE likely happen when maddr_to_virt() is defined as
stub and so code which call share_xen_page_with_privileged_guests() is
just eliminated? ( but I am not sure that I know fast way to check that
, do you have any pointers? )

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 16:46:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 16:46:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822065.1236065 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1q6v-000536-4l; Fri, 18 Oct 2024 16:45:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822065.1236065; Fri, 18 Oct 2024 16:45: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 1t1q6v-00052z-1d; Fri, 18 Oct 2024 16:45:57 +0000
Received: by outflank-mailman (input) for mailman id 822065;
 Fri, 18 Oct 2024 16: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 1t1q6t-00052p-Q3; Fri, 18 Oct 2024 16: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 1t1q6t-0000Qg-MX; Fri, 18 Oct 2024 16: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 1t1q6t-0000rl-DW; Fri, 18 Oct 2024 16:45:55 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1q6t-0002uA-D1; Fri, 18 Oct 2024 16:45: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=tRe6KlXetDp4Im0227qaN/YPIXgwUl/8XQFRP1KtJQ4=; b=rVcvbCNBya/ypa3mwK9kYUxH5w
	zUuCNbENAn5WuTaneGBg3APWy4F8Aqf24QbnmIa/mvtYvG5SheNxTZBHmDWIJTLoI80e3SvW3j5lV
	5k2pX/V51f0IcAv7PcLBrCUvIFHL9dTzQg3Zlhm14RfU0yauECwvGDnewWHHcX/wyOKc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188202-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 188202: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-pvhv2-amd:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-amd64-amd64-libvirt-vhd:guest-start/debian.repeat: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: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-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-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: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-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-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-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-vhd: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-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-vhd: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-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-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-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=6efbea77b390604a7be7364583e19cd2d6a1291b
X-Osstest-Versions-That:
    linux=2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 16:45:55 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-pvhv2-amd 22 guest-start/debian.repeat fail pass in 188261-retest
 test-amd64-amd64-libvirt-vhd 19 guest-start/debian.repeat fail pass in 188261-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188098
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188098
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188098
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188098
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188098
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188098
 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-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-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-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
 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-amd64-amd64-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-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-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-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                6efbea77b390604a7be7364583e19cd2d6a1291b
baseline version:
 linux                2f87d0916ce0d2925cedbc9e8f5d6291ba2ac7b2

Last test of basis   188098  2024-10-15 19:12:44 Z    2 days
Failing since        188132  2024-10-16 21:13:43 Z    1 days    3 attempts
Testing same since   188202  2024-10-17 21:42:51 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abhishek Mohapatra <abhishek.mohapatra@broadcom.com>
  Abhishek Mohapatra<abhishek.mohapatra@broadcom.com>
  Alessandro Zanni <alessandro.zanni87@gmail.com>
  Alexander Sverdlin <alexander.sverdlin@gmail.com>
  Alexander Zubkov <green@qrator.net>
  Andrew Lunn <andrew@lunn.ch>
  Anton Protopopov <aspsk@isovalent.com>
  Anumula Murali Mohan Reddy <anumula@chelsio.com>
  Arnd Bergmann <arnd@arndb.de>
  Atte Heikkilä <atteh.mailbox@gmail.com>
  Baojun Xu <baojun.xu@ti.com>
  Bard Liao <yung-chuan.liao@linux.intel.com>
  Bart Van Assche <bvanassche@acm.org>
  Bhargava Chenna Marreddy <bhargava.marreddy@broadcom.com>
  Björn Töpel <bjorn@rivosinc.com>
  Chandramohan Akula <chandramohan.akula@broadcom.com>
  Changhuang Liang <changhuang.liang@starfivetech.com>
  Christian Heusel <christian@heusel.eu>
  christoph.plattner <christoph.plattner@gmx.at>
  Christophe Leroy <christophe.leroy@csgroup.eu>
  Colin Ian King <colin.i.king@gmail.com>
  Cosmin Ratiu <cratiu@nvidia.com>
  Cristian Marussi <cristian.marussi@arm.com>
  Daniel Borkmann <daniel@iogearbox.net>
  Daniel Machon <daniel.machon@microchip.com>
  David Sterba <dsterba@suse.com>
  David Vernet <void@manifault.com>
  Eric Dumazet <edumazet@google.com>
  Felix Fietkau <nbd@nbd.name>
  Filipe Manana <fdmanana@suse.com>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Klink <flokli@flokli.de>
  Gavin Shan <gshan@redhat.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Hal Feng <hal.feng@starfivetech.com>
  Herbert Xu <herbert@gondor.apana.org.au>
  Herve Codina <herve.codina@bootlin.com>
  Honglei Wang <jameshongleiwang@126.com>
  Jakub Kicinski <kuba@kernel.org>
  Jakub Sitnicki <jakub@cloudflare.com>
  Jason Gunthorpe <jgg@nvidia.com>
  Jinjie Ruan <ruanjinjie@huawei.com>
  Joey Gouly <joey.gouly@arm.com>
  Josua Mayer <josua@solid-run.com>
  Julian Vetter <jvetter@kalrayinc.com>
  Justin Chen <justin.chen@broadcom.com>
  Kai Shen <KaiShen@linux.alibaba.com>
  Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
  Karol Kosik <k.kosik@outlook.com>
  Kashyap Desai <kashyap.desai@broadcom.com>
  Konstantin Ryabitsev <konstantin@linuxfoundation.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Kuniyuki Iwashima <kuniyu@amazon.com>
  Leon Romanovsky <leon@kernel.org>
  Li RongQing <lirongqing@baidu.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Maher Sanalla <msanalla@nvidia.com>
  Mark Brown <broonie@kernel.org>
  Mark Rutland <mark.rutland@arm.com>
  Markus Grabner <line6@grabner-graz.at>
  Matthieu Baerts (NGI0) <matttbe@kernel.org>
  Murad Masimov <m.masimov@maxima.ru>
  Namjae Jeon <linkinjeon@kernel.org>
  Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
  Nikolay Nikolaev <nikolay.nikolaev@isovalent.com>
  Oleksij Rempel <o.rempel@pengutronix.de>
  Oliver Neukum <oneukum@suse.com>
  Paolo Abeni <pabeni@redhat.com>
  Paritosh Dixit <paritoshd@nvidia.com>
  Paul Barker <paul.barker.ct@bp.renesas.com>
  Pawel Dembicki <paweldembicki@gmail.com>
  Peter Rashleigh <peter@rashleigh.ca>
  Philipp Zabel <p.zabel@pengutronix.de>
  Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
  Potnuri Bharat Teja <bharat@chelsio.com>
  Qianqiang Liu <qianqiang.liu@163.com>
  Richard Cochran <richardcochran@gmail.com>
  Rob Herring (Arm) <robh@kernel.org>
  Roi Martin <jroi.martin@gmail.com>
  Sabrina Dubroca <sd@queasysnail.net>
  Saravanan Vajravel <saravanan.vajravel@broadcom.com>
  Selvin Xavier <selvin.xavier@broadcom.com>
  Shay Drory <shayd@nvidia.com>
  Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
  Showrya M N <showrya@chelsio.com>
  Steve French <stfrench@microsoft.com>
  Su Hui <suhui@nfschina.com>
  Sudeep Holla <sudeep.holla@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tariq Toukan <tariqt@nvidia.com>
  Tejun Heo <tj@kernel.org>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Vladimir Oltean <vladimir.oltean@nxp.com>
  Wang Hai <wanghai38@huawei.com>
  Wei Fang <wei.fang@nxp.com>
  Will Deacon <will@kernel.org>
  Willem de Bruijn <willemdebruijn.kernel@gmail.com>
  Xin Long <lucien.xin@gmail.com>
  Yan Zhen <yanzhen@vivo.com>
  Yevgeny Kliteynik <kliteyn@nvidia.com>
  Zhu Jun <zhujun2@cmss.chinamobile.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                                fail    
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   2f87d0916ce0..6efbea77b390  6efbea77b390604a7be7364583e19cd2d6a1291b -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 18:01:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 18:01:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822118.1236087 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1rHp-0007hm-Kd; Fri, 18 Oct 2024 18:01:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822118.1236087; Fri, 18 Oct 2024 18:01: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 1t1rHp-0007hf-I5; Fri, 18 Oct 2024 18:01:17 +0000
Received: by outflank-mailman (input) for mailman id 822118;
 Fri, 18 Oct 2024 18:01: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 1t1rHo-0007hV-0Z; Fri, 18 Oct 2024 18:01: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 1t1rHn-0001kW-RG; Fri, 18 Oct 2024 18:01: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 1t1rHn-0003Ax-JQ; Fri, 18 Oct 2024 18:01:15 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1rHn-0007Lv-Iv; Fri, 18 Oct 2024 18: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>
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=0LK1uzFDL59ocoCAeRD2irfKxDX6x+zbIFO6S2OuCtY=; b=CzznvVj6ZKE3XmSXZOep/OUhM/
	kGj2+nyvBsM2/FlHLgg7ITTf4+IFiBQ04f3RekMVw/E+ozxGSpgbMEFyhpC6u9zGbGUqYYSNJBsLf
	UC66Prd1L8m+4JCOPftjZUhjesP40H30OSVB+qDK0WTlYMlncDMO+/jaNou8Ek/paUr8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188253-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188253: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=6e197a8ba5e349e511850fc52457992de88c8795
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 18:01:15 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 6e197a8ba5e349e511850fc52457992de88c8795
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    1 days
Failing since        188156  2024-10-17 09:14:11 Z    1 days    8 attempts
Testing same since   188188  2024-10-17 17:12:12 Z    1 days    6 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 20:39:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 20:39:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822149.1236119 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1tl2-0001DL-0T; Fri, 18 Oct 2024 20:39:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822149.1236119; Fri, 18 Oct 2024 20: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 1t1tl1-0001DE-TR; Fri, 18 Oct 2024 20:39:35 +0000
Received: by outflank-mailman (input) for mailman id 822149;
 Fri, 18 Oct 2024 20:39: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=BiWJ=RO=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t1tl0-0001Cl-9l
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 20:39:34 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20627.outbound.protection.outlook.com
 [2a01:111:f403:2409::627])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 12d601b8-8d91-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 22:39:31 +0200 (CEST)
Received: from CH2PR18CA0060.namprd18.prod.outlook.com (2603:10b6:610:55::40)
 by SA3PR12MB8046.namprd12.prod.outlook.com (2603:10b6:806:304::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.20; Fri, 18 Oct
 2024 20:39:25 +0000
Received: from CH2PEPF00000149.namprd02.prod.outlook.com
 (2603:10b6:610:55:cafe::77) by CH2PR18CA0060.outlook.office365.com
 (2603:10b6:610:55::40) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.21 via Frontend
 Transport; Fri, 18 Oct 2024 20:39:25 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH2PEPF00000149.mail.protection.outlook.com (10.167.244.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Fri, 18 Oct 2024 20:39:25 +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.39; Fri, 18 Oct
 2024 15:39:24 -0500
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.39; Fri, 18 Oct
 2024 15:39:24 -0500
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.39 via Frontend
 Transport; Fri, 18 Oct 2024 15:39:23 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 12d601b8-8d91-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OapSGjE5nWZCxDGN+2OXRd7fRBmd08+D3NDufWu31YYgq2tEpbi1pzJ8Lujwa3o8H+RBv8G93bm0K9fpJig1RSwL2RQ3lcdKYqQKtxH6z1Annh6icdySah7wKukabCpCqDZF5jAlH5QsWof2AI25WHSLaUO5i2v4sd2LHy/PsP/FXcrJMOETwuUcF/6oZSeQ+SMgbZelJn+ZoobkV45UltO8vA+mi3/B108ygt9yLHYKFC6rypbotVbPOLOniGbZpiIWUbO66F2j4LzIE2uRQZO3TWKBBn224ittJ+vEebAodRy6eViEcf7LVpIsVEZVWJ2PnnIQreluaYNL+Dzpuw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=uhSgenMyww7CPsK0AMuHmuq3dKJ97wqxyXgBiGyLZRY=;
 b=mCKeI1ODwPqiaGGahftuMIrTlamxcX5HeyBRGSQ7hZhtehq1bgHyUsHJrqRZFPDimOW43tlfOoplVzK/d4XoxtPOMQ4MmGEQoFBPdNg7oEpybvLGJ1Yo2kPHUs1z/LV0xkrj9vmzISb79ZXonfVtDcYhk/isz0QhLq6yHr1DFsH8pGS2bHNnc/9KTEHWl/2oMd25Z57qoCnykbvfEg71Gsl/pHJKOh1GlB8G2+7i1Ogve/BymLCOoyX6OfH0Pz2w7zBf60bLuezwdomGR1mSoFQxfZnGy2NnqORb4uFvbUASjvpBmryv44C8jic8LkzBMMZHqWU7x0Lr3OojbTDE0g==
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=uhSgenMyww7CPsK0AMuHmuq3dKJ97wqxyXgBiGyLZRY=;
 b=Uh5v40aSuaDBvDWnZod0WmLMSbUPj+U1s+lZWlY7y2s7NTyZAyQMT2oNe4u+UlNGXLPU7z3w9NGqR0t2B9IJE1HK3YAPp+vhPTeDJ+nqJxubPo1TjnjYo7eSwEWUjPJA978G5b7sF1C1GpslDEZztOr4bcoRWB5fjAwYOYPbC9o=
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>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 1/3] x86/msi: harden stale pdev handling
Date: Fri, 18 Oct 2024 16:39:08 -0400
Message-ID: <20241018203913.1162962-2-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PEPF00000149:EE_|SA3PR12MB8046:EE_
X-MS-Office365-Filtering-Correlation-Id: 576cb1c1-6113-4765-1066-08dcefb4f450
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?fN0Ewg4HcNoQ8V4Gyx1u1x5lqzJT3wbUmrBR3CG5Z2enm17SiI+hlVnoLsHf?=
 =?us-ascii?Q?l1om8OGtV6eP0LV0m7BcWAmcTLBcxQmQ1sQDtIWQ+Ob07i3dIv/5LW9yMUHp?=
 =?us-ascii?Q?B1Fhcw5hKYkHA9UklbbQO2Qlz6bMUkj9RkQmTOxHJCbT8gyFQVEL3+skLi6u?=
 =?us-ascii?Q?7nhTcfIrzwRviMVXvsepmVRXxq8wTQKwfC1cxGOIUpG4h3EGXG1y0yAGvhtR?=
 =?us-ascii?Q?HE8NsMh0jvwhGEkCElWbLLgLNZzEmnaERimI+qPc5KBNBGtiEZ/wXdixWLYa?=
 =?us-ascii?Q?e675mNoSOq71u/Kou5nxFHhO3m+CGHOPjoJkWVY+bCwvzLW7HmbaS9hIKxkj?=
 =?us-ascii?Q?aGVVqkLp2B1+/9KG7AYtuPEOMReEW06I5R1r9WC1yKDnWOh1ddKAuf2ytZmT?=
 =?us-ascii?Q?MMditvO9Lp224bRAABm0/rY6v/5XlLLayry+5LgC/8AxuWRYOftxrHESs5KS?=
 =?us-ascii?Q?4SMLDLsZ96yklGMXYfMXDDI6x5r/0vQ86/EQ5rKB/X7gs9r5RZAjOwLN0hzm?=
 =?us-ascii?Q?GoLHjyFW9x8TBjGegszvy/SOxPQrOo7E/n653UTJlIR6mlEHvxmj3XSR3qmS?=
 =?us-ascii?Q?NO4Qvcz0PgKdwI8F+LhHuyiE98lxbdKH3r4gi/k4eAxW9Nro0eTdBNPL6JD+?=
 =?us-ascii?Q?CjzUhzBYdMs+D6KD/X+MbMNgQKfHS0FmkXDksubwPCxDmIqQWSFVb8u3Rhr7?=
 =?us-ascii?Q?KOAlHwkzYuQajxPO/o0OPjNIbx5TzclwRo0y60FFNoaqmf+TwDX0BReePS0s?=
 =?us-ascii?Q?tyogP2Gcw0cbayjIgWaqSmsn+9Jsa/WYmk2me2/F+kh2SgCmUFQZRMcKM0lQ?=
 =?us-ascii?Q?zcrRoityj8rbiEa4xGBvd2VqhSxwyR+zm25vWOshHDZ3xgUFmd+KWOLa57Mm?=
 =?us-ascii?Q?Q0sM3EfB0wvrKL5SzYGikym8sV1RPz1bHIKEGljL1+wUKkaut4FS7iGWhNm+?=
 =?us-ascii?Q?HiQXkmaOt8n2yA6olEI2lAxIcY2CttggCb+07zef0z9j+wTQHS/vkKAQqMzH?=
 =?us-ascii?Q?mM8YwG6mZnLCVby0iJPfsaGeNkAR8iZBOc3IehxJX4OTu19kMg6if1cfLFpd?=
 =?us-ascii?Q?6B66HW5ouM8HE+ae9d7Be6zxioPOGvl6UxqhS/OJLip/gCnl3WWwQ55P9u30?=
 =?us-ascii?Q?afg95Q+/x8n/bKnwEOI+hhGV7/ApGKXarnL0RQgRzmbTvtjJgiwxPEjH5HaH?=
 =?us-ascii?Q?u65w2lZx04vQpDwIGhgmY1YJ+7Il1sXdaF8XEHILVnMXDMBRyLDHEwwWNB1P?=
 =?us-ascii?Q?Di24mDIZC1WNc6hxd6h5JBkA3+T+NSSoxJjAiG9008iqSrg1md7JEb0ui8/B?=
 =?us-ascii?Q?+1a/liwrNLwVJ3nzRckjhkOnSBJ66ikeeb4uRyQqNS/nrVNUENpmlPhGyU06?=
 =?us-ascii?Q?zWgB4ePZFyRuYMnEQqfVFKNaezYSm2XoDuZ+kzrE8Q4hPSGPog=3D=3D?=
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:(13230040)(82310400026)(1800799024)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 20:39:25.0869
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 576cb1c1-6113-4765-1066-08dcefb4f450
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:
	CH2PEPF00000149.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8046

Dom0 normally informs Xen of PCI device removal via
PHYSDEVOP_pci_device_remove, e.g. in response to SR-IOV disable or
hot-unplug. We might find ourselves with stale pdevs if a buggy dom0
fails to report removal via PHYSDEVOP_pci_device_remove. In this case,
attempts to access the config space of the stale pdevs would be invalid
and return all 1s.

Some possible conditions leading to this are:

1. Dom0 disables SR-IOV without reporting VF removal to Xen.

The Linux SR-IOV subsystem normally reports VF removal when a PF driver
disables SR-IOV. In case of a buggy dom0 SR-IOV subsystem, SR-IOV could
become disabled with stale dangling VF pdevs in both dom0 Linux and Xen.

2. Dom0 reporting PF removal without reporting VF removal.

During SR-IOV PF removal (hot-unplug), a buggy PF driver may fail to
disable SR-IOV, thus failing to remove the VFs, leaving stale dangling
VFs behind in both Xen and Linux. At least Linux warns in this case:

[  100.000000]  0000:01:00.0: driver left SR-IOV enabled after remove

In either case, Xen is left with stale VF pdevs, risking invalid PCI
config space accesses.

When Xen is built with CONFIG_DEBUG=y, the following Xen crashes were
observed when dom0 attempted to access the config space of a stale VF:

(XEN) Assertion 'pos' failed at arch/x86/msi.c:1274
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040346834>] R pci_msi_conf_write_intercept+0xa2/0x1de
(XEN)    [<ffff82d04035d6b4>] F pci_conf_write_intercept+0x68/0x78
(XEN)    [<ffff82d0403264e5>] F arch/x86/pv/emul-priv-op.c#pci_cfg_ok+0xa0/0x114
(XEN)    [<ffff82d04032660e>] F arch/x86/pv/emul-priv-op.c#guest_io_write+0xb5/0x1c8
(XEN)    [<ffff82d0403267bb>] F arch/x86/pv/emul-priv-op.c#write_io+0x9a/0xe0
(XEN)    [<ffff82d04037c77a>] F x86_emulate+0x100e5/0x25f1e
(XEN)    [<ffff82d0403941a8>] F x86_emulate_wrapper+0x29/0x64
(XEN)    [<ffff82d04032802b>] F pv_emulate_privileged_op+0x12e/0x217
(XEN)    [<ffff82d040369f12>] F do_general_protection+0xc2/0x1b8
(XEN)    [<ffff82d040201aa7>] F x86_64/entry.S#handle_exception_saved+0x2b/0x8c

(XEN) Assertion 'pos' failed at arch/x86/msi.c:1246
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040346b0a>] R pci_reset_msix_state+0x47/0x50
(XEN)    [<ffff82d040287eec>] F pdev_msix_assign+0x19/0x35
(XEN)    [<ffff82d040286184>] F drivers/passthrough/pci.c#assign_device+0x181/0x471
(XEN)    [<ffff82d040287c36>] F iommu_do_pci_domctl+0x248/0x2ec
(XEN)    [<ffff82d040284e1f>] F iommu_do_domctl+0x26/0x44
(XEN)    [<ffff82d0402483b8>] F do_domctl+0x8c1/0x1660
(XEN)    [<ffff82d04032977e>] F pv_hypercall+0x5ce/0x6af
(XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150

These ASSERTs triggered because the MSI-X capability position can't be
found for a stale pdev.

Latch the capability positions of MSI and MSI-X during device init, and
replace instances of pci_find_cap_offset(..., PCI_CAP_ID_MSI{,X}) with
the stored value. Introduce one additional ASSERT, while the two
existing ASSERTs in question continue to work as intended, even with a
stale pdev.

Fixes: 484d7c852e4f ("x86/MSI-X: track host and guest mask-all requests separately")
Fixes: 575e18d54d19 ("pci: clear {host/guest}_maskall field on assign")
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
v5->v6;
* latch MSI/MSI-X capability position during device init

v4->v5:
* new patch, independent of the rest of the series
* new approach to fixing the issue: don't rely on dom0 to report any
  sort of device removal; rather, fix the condition directly

---
Instructions to reproduce
Requires Xen with CONFIG_DEBUG=y
Tested with Linux 6.11

1. Dom0 disables SR-IOV without reporting VF removal to Xen.

* Hack the Linux SR-IOV subsystem to remove the call to
  pci_stop_and_remove_bus_device() in
  drivers/pci/iov.c:pci_iov_remove_virtfn().

* Enable SR-IOV, then disable SR-IOV
  echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
  echo 0 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs

* Now we have a stale VF. We can trigger the ASSERT either by unbinding
  the VF driver and issuing a reset...

  echo 0000\:01\:10.0 > /sys/bus/pci/devices/0000\:01\:10.0/driver/unbind
  echo 1 > /sys/bus/pci/devices/0000\:01\:10.0/reset

  ... or by doing xl pci-assignable-add

  xl pci-assignable-add 01:10.0

2. Dom0 reporting PF removal without reporting VF removal.

* Hack your PF driver to leave SR-IOV enabled when removing the device

* Enable SR-IOV

  echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs

* Unplug the PCI device

  (qemu) device_del mydev

* Now we have a stale VF. We can trigger the ASSERT either by re-adding
  the PF device with SR-IOV disabled...

  echo 0000\:01\:10.0 > /sys/bus/pci/devices/0000\:01\:10.0/driver/unbind
  (qemu) device_add igb,id=mydev,bus=pcie.1,netdev=net1

  ... or by reset / xl pci-assignable-add as above.
---
 xen/arch/x86/msi.c            | 19 +++++++++----------
 xen/drivers/passthrough/msi.c |  3 +++
 xen/drivers/vpci/msi.c        |  2 +-
 xen/drivers/vpci/msix.c       |  2 +-
 xen/include/xen/pci.h         |  3 +++
 5 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index ff2e3d86878d..5e24df7be0c0 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -278,23 +278,21 @@ void __msi_set_enable(u16 seg, u8 bus, u8 slot, u8 func, int pos, int enable)
 
 static void msi_set_enable(struct pci_dev *dev, int enable)
 {
-    int pos;
+    int pos = dev->msi_pos;
     u16 seg = dev->seg;
     u8 bus = dev->bus;
     u8 slot = PCI_SLOT(dev->devfn);
     u8 func = PCI_FUNC(dev->devfn);
 
-    pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
     if ( pos )
         __msi_set_enable(seg, bus, slot, func, pos, enable);
 }
 
 static void msix_set_enable(struct pci_dev *dev, int enable)
 {
-    int pos;
+    int pos = dev->msix_pos;
     uint16_t control;
 
-    pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSIX);
     if ( pos )
     {
         control = pci_conf_read16(dev->sbdf, msix_control_reg(pos));
@@ -601,7 +599,7 @@ static int msi_capability_init(struct pci_dev *dev,
     uint16_t control;
 
     ASSERT_PDEV_LIST_IS_READ_LOCKED(dev->domain);
-    pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
+    pos = dev->msi_pos;
     if ( !pos )
         return -ENODEV;
     control = pci_conf_read16(dev->sbdf, msi_control_reg(pos));
@@ -764,7 +762,7 @@ static int msix_capability_init(struct pci_dev *dev,
     u8 slot = PCI_SLOT(dev->devfn);
     u8 func = PCI_FUNC(dev->devfn);
     bool maskall = msix->host_maskall, zap_on_error = false;
-    unsigned int pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSIX);
+    unsigned int pos = dev->msix_pos;
 
     if ( !pos )
         return -ENODEV;
@@ -1133,11 +1131,13 @@ static void _pci_cleanup_msix(struct arch_msix *msix)
 static void __pci_disable_msix(struct msi_desc *entry)
 {
     struct pci_dev *dev = entry->dev;
-    unsigned int pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSIX);
+    unsigned int pos = dev->msix_pos;
     u16 control = pci_conf_read16(dev->sbdf,
                                   msix_control_reg(entry->msi_attrib.pos));
     bool maskall = dev->msix->host_maskall;
 
+    ASSERT(pos);
+
     if ( unlikely(!(control & PCI_MSIX_FLAGS_ENABLE)) )
     {
         dev->msix->host_maskall = 1;
@@ -1241,7 +1241,7 @@ void pci_cleanup_msi(struct pci_dev *pdev)
 
 int pci_reset_msix_state(struct pci_dev *pdev)
 {
-    unsigned int pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
+    unsigned int pos = pdev->msix_pos;
 
     ASSERT(pos);
     /*
@@ -1269,8 +1269,7 @@ int pci_msi_conf_write_intercept(struct pci_dev *pdev, unsigned int reg,
     if ( pdev->msix )
     {
         entry = find_msi_entry(pdev, -1, PCI_CAP_ID_MSIX);
-        pos = entry ? entry->msi_attrib.pos
-                    : pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
+        pos = entry ? entry->msi_attrib.pos : pdev->msix_pos;
         ASSERT(pos);
 
         if ( reg >= pos && reg < msix_pba_offset_reg(pos) + 4 )
diff --git a/xen/drivers/passthrough/msi.c b/xen/drivers/passthrough/msi.c
index 13d904692ef8..ed2bc7ebe635 100644
--- a/xen/drivers/passthrough/msi.c
+++ b/xen/drivers/passthrough/msi.c
@@ -29,6 +29,7 @@ int pdev_msi_init(struct pci_dev *pdev)
     {
         uint16_t ctrl = pci_conf_read16(pdev->sbdf, msi_control_reg(pos));
 
+        pdev->msi_pos = pos;
         pdev->msi_maxvec = multi_msi_capable(ctrl);
     }
 
@@ -41,6 +42,8 @@ int pdev_msi_init(struct pci_dev *pdev)
         if ( !msix )
             return -ENOMEM;
 
+        pdev->msix_pos = pos;
+
         spin_lock_init(&msix->table_lock);
 
         ctrl = pci_conf_read16(pdev->sbdf, msix_control_reg(pos));
diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
index dd6620ec5674..66e5a8a116be 100644
--- a/xen/drivers/vpci/msi.c
+++ b/xen/drivers/vpci/msi.c
@@ -195,7 +195,7 @@ static void cf_check mask_write(
 
 static int cf_check init_msi(struct pci_dev *pdev)
 {
-    unsigned int pos = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSI);
+    unsigned int pos = pdev->msi_pos;
     uint16_t control;
     int ret;
 
diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
index 5bb4444ce21f..6bd8c55bb48e 100644
--- a/xen/drivers/vpci/msix.c
+++ b/xen/drivers/vpci/msix.c
@@ -711,7 +711,7 @@ static int cf_check init_msix(struct pci_dev *pdev)
     struct vpci_msix *msix;
     int rc;
 
-    msix_offset = pci_find_cap_offset(pdev->sbdf, PCI_CAP_ID_MSIX);
+    msix_offset = pdev->msix_pos;
     if ( !msix_offset )
         return 0;
 
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index 63e49f0117e9..ef56e80651d6 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -113,6 +113,9 @@ struct pci_dev {
         pci_sbdf_t sbdf;
     };
 
+    unsigned int msi_pos;
+    unsigned int msix_pos;
+
     uint8_t msi_maxvec;
     uint8_t phantom_stride;
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 20:39:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 20:39:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822150.1236129 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1tl8-0001V4-A9; Fri, 18 Oct 2024 20:39:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822150.1236129; Fri, 18 Oct 2024 20:39: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 1t1tl8-0001Ux-5m; Fri, 18 Oct 2024 20:39:42 +0000
Received: by outflank-mailman (input) for mailman id 822150;
 Fri, 18 Oct 2024 20:39: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=BiWJ=RO=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t1tl7-0000xC-G4
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 20:39:41 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on20629.outbound.protection.outlook.com
 [2a01:111:f403:240a::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 189e824f-8d91-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 22:39:40 +0200 (CEST)
Received: from BY3PR05CA0023.namprd05.prod.outlook.com (2603:10b6:a03:254::28)
 by PH7PR12MB5853.namprd12.prod.outlook.com (2603:10b6:510:1d4::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.27; Fri, 18 Oct
 2024 20:39:34 +0000
Received: from SJ1PEPF00002310.namprd03.prod.outlook.com
 (2603:10b6:a03:254:cafe::23) by BY3PR05CA0023.outlook.office365.com
 (2603:10b6:a03:254::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.10 via Frontend
 Transport; Fri, 18 Oct 2024 20:39:34 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00002310.mail.protection.outlook.com (10.167.242.164) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Fri, 18 Oct 2024 20:39:32 +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.39; Fri, 18 Oct
 2024 15:39:32 -0500
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.39 via Frontend
 Transport; Fri, 18 Oct 2024 15:39:30 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 189e824f-8d91-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Cv2J0MgqpazzhLjeyG63sHGxWuLt7ZVUSdd0KdofanA7yDEH8bw3QXS9Y7OPy6LOIf5DbpIvmxjTWP0hFx/h98k7kXEh/JPRBSwHl0Ilgh4ffpg9CCIFOk0j+7/zIbirnxjRZ4idG6Qv8usIJThdSjgqIyXP4lJgKhb5z5DseJgbjwzTI+NgkWT7dqsGA++NzvyzNrbAh6PBVcC0DU5cXZEjmmvmP3UOwxiMoftF6RD+0+xpJNRCS+6P+csUbSiFkDt7YdQfqizToKy9pWsMbxr5BF+oSjjKJDUKgTfJGtJlbnkA69AtcGveOrXnN72yOOcBQNXqiU6ku1qhWEzgBw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=5fq6KP4wVu47kB55ME6GPz2MtcQHWslf85p2ZaJ9WoQ=;
 b=ykw8fcwvufKrJhuX22BIw/6P8KamRUbPK/Xlzsi16DpADEeyc/S9M3ct9+f34VT/jbSar4H6j+pf8z52VM/6aqBWj9x3T70cy23l5OvdBYaBSjnF/n6LHzdEjCOdiVpGzvOlWIvSEKZvBJw8+qBm6Uu2knciLgUEiTRi9rU91pFp31aAjxtVmaF3+keyxDmlO+tOCiWnzHqoMAXabiFdHSeDyTVLmqVva/AOgoFoIAfRU5yS6ttjpHCQBEfgTp0OsAKUhWju+x5ZBsi3Cbhdzqe2pGvKtaQ7LQCsT5aTlVD1xag/yHI+5IWr6W1KOqy/GssqjuCNl/HH24BqAn1Kug==
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=5fq6KP4wVu47kB55ME6GPz2MtcQHWslf85p2ZaJ9WoQ=;
 b=nO3TspkTNOZMz6/ExV5qiHKosYq9LZxlGZc9pp03SIryrAyucVvxi0bUyt/aqdq7XoLJELL1oLGxekbtDTNO8/cxps2ygs/SR5SY2nnXhdfh7iz4HrxFKIAlh8SuJk8R6uaQkHbepSYn/HBl5Z/XOGe4embPuUeKBpmUyAUlyjA=
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>, Jan Beulich
	<jbeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "Julien
 Grall" <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v6 2/3] xen/pci: introduce PF<->VF links
Date: Fri, 18 Oct 2024 16:39:09 -0400
Message-ID: <20241018203913.1162962-3-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002310:EE_|PH7PR12MB5853:EE_
X-MS-Office365-Filtering-Correlation-Id: 3aa28764-1c2a-4471-cffc-08dcefb4f90b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?WQGirubvFsMHFc/rghVPZsvKPdBCWJT49f86mJmn8n4o/wJIu7Xw7RffwylS?=
 =?us-ascii?Q?vLEFkqOCpzecJ0p2mhLdSy0J2NpKsvgZ50k+5PNn59TLz1Qkhq3Rph5XYVr3?=
 =?us-ascii?Q?bflyCLx/3pjVgU42Jf3FWiWOhCb2Kokbm2Kvga7WemRzHQ6Ijh6dzo3G3toE?=
 =?us-ascii?Q?mZ0FdzjF3ijxsZSLlMndIVE+NwF99enshGFmCIzwbrINizPVeOPwrWsyskdg?=
 =?us-ascii?Q?0b5/yi538y/lLhcDZ1JZe1fWtHIOa6rBIYvFX5LsctSbA7jlGUzjsUSub+ZW?=
 =?us-ascii?Q?8B8yV3+DpxamhJVHGzqsVnfddHWQEXwP31AYylde6CBfDhEqQ3tjwCrzJ0Uf?=
 =?us-ascii?Q?BtwBJ707xPTC/0M8v94Z2BApRPv+zGgtYptFlSylnDWIzvnEGVgj0bHE1lWT?=
 =?us-ascii?Q?337RPQ3MiUi5ZH0yH93PLWn9Bb1lxrpLNCCm2iNUtapOZ38sxi8riSRlQC3w?=
 =?us-ascii?Q?hLR0hAj/7yg9QMqeohxoKEGnD23CxPG4Nil/YgNnN4EHTGOvbyFLy9ppbtLm?=
 =?us-ascii?Q?XtPpFkJydTBX5SYw9vg4Er03ICZTJqK3E59RJ12Badf3phILJz5FlRxnuZO/?=
 =?us-ascii?Q?58seha9sNPL6uSSU3An9RHSicHjAdNSQvBNMCHnfI2FkmNY24fS6LMMCKvNf?=
 =?us-ascii?Q?zxLNrMCD3vjEm1SbNf741cAmeYQ9x3Xv1T/4M3H3SwVUUYQty/UjeoppjSeM?=
 =?us-ascii?Q?oNdnuz3AGCRXJNX845y1BCpd6kXyOFa992Iz6MSvHlFM1wilQz6q+FqSU70G?=
 =?us-ascii?Q?Dg3TOa7gNzU1ZSPguhSTEpBOe7BeUphj7+eD4hxkjAlqVeqjHFL9NZzj2kTC?=
 =?us-ascii?Q?2BhHeCyUnBLfp5hacWKNqzHJHoCIB77beFPtNcSe5l8dOTe+Ovy7Fr2GPAra?=
 =?us-ascii?Q?OWQUslkhW2pOKZe0uXbweogEWI9x8DTj31qhLnC7IOkRn746zyPGfF4meDfz?=
 =?us-ascii?Q?OACEJPzZGlUXycid+0Bts0y4uA3eH4rmh9ACq/kTCqVmRmHDHthEY2wAl9nJ?=
 =?us-ascii?Q?liecRitO5Ee4Dm4YUbKYv3/mDri/OxiudcEn1U6wZvvVRrTv7aEU1DsvvJ4O?=
 =?us-ascii?Q?jASTYHCFDZ1yNlCOFASRkCrJ4o/GfBnp0h2rzWj2L8pfd52zRUlP2TseREbK?=
 =?us-ascii?Q?P7WGNvXuqhuPCxrHJWffukHq6W2yFmTN/uGofdJ5NHWz5KaXZ7mlh1HudT+j?=
 =?us-ascii?Q?80Mpu/QzGQ47oyY5kV1/RGzcv1F5SwUKzdyaalcr9KxjEeFrGHXxy6ZuzREC?=
 =?us-ascii?Q?SZnTt98XHFUtV0avjoDIq8dQ2wwWr8X+Mn1XbVX0mC5dbdGhdOct1eXiSWgL?=
 =?us-ascii?Q?bqCcYqjbMj5y1zBnyHK0UOQAZ793ZrDnCF2ituJ0U5861U7Vvk0TGQmIarxI?=
 =?us-ascii?Q?bmMEOeBLtLGn/plfVtzuT8XzJUHUp4hQcvs0J3KCmu6JABxNJw=3D=3D?=
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:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 20:39:32.9657
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3aa28764-1c2a-4471-cffc-08dcefb4f90b
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:
	SJ1PEPF00002310.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5853

Add links between a VF's struct pci_dev and its associated PF struct
pci_dev. Move the calls to pci_get_pdev()/pci_add_device() down to avoid
dropping and re-acquiring the pcidevs_lock().

During PF removal, unlink VF from PF and mark the VF broken. As before,
VFs may exist without a corresponding PF, although now only with
pdev->broken = true.

The hardware domain is expected to remove the associated VFs before
removing the PF. Print a warning in case a PF is removed with associated
VFs still present.

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Candidate for backport to 4.19 (the next patch depends on this one)

v5->v6:
* move printk() before ASSERT_UNREACHABLE()
* warn about PF removal with VFs still present
* clarify commit message

v4->v5:
* new patch, split from ("x86/msi: fix locking for SR-IOV devices")
* move INIT_LIST_HEAD(&pdev->vf_list); earlier
* collapse struct list_head instances
* retain error code from pci_add_device()
* unlink (and mark broken) VFs instead of removing them
* const-ify VF->PF link
---
 xen/drivers/passthrough/pci.c | 76 ++++++++++++++++++++++++++++-------
 xen/include/xen/pci.h         | 10 +++++
 2 files changed, 72 insertions(+), 14 deletions(-)

diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 74d3895e1ef6..fe31255b1207 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -333,6 +333,8 @@ static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn)
     *((u8*) &pdev->devfn) = devfn;
     pdev->domain = NULL;
 
+    INIT_LIST_HEAD(&pdev->vf_list);
+
     arch_pci_init_pdev(pdev);
 
     rc = pdev_msi_init(pdev);
@@ -449,6 +451,10 @@ static void free_pdev(struct pci_seg *pseg, struct pci_dev *pdev)
 
     list_del(&pdev->alldevs_list);
     pdev_msi_deinit(pdev);
+
+    if ( pdev->info.is_virtfn && pdev->virtfn.pf_pdev )
+        list_del(&pdev->vf_list);
+
     xfree(pdev);
 }
 
@@ -656,24 +662,11 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
     unsigned int slot = PCI_SLOT(devfn), func = PCI_FUNC(devfn);
     const char *type;
     int ret;
-    bool pf_is_extfn = false;
 
     if ( !info )
         type = "device";
     else if ( info->is_virtfn )
-    {
-        pcidevs_lock();
-        pdev = pci_get_pdev(NULL,
-                            PCI_SBDF(seg, info->physfn.bus,
-                                     info->physfn.devfn));
-        if ( pdev )
-            pf_is_extfn = pdev->info.is_extfn;
-        pcidevs_unlock();
-        if ( !pdev )
-            pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
-                           NULL, node);
         type = "virtual function";
-    }
     else if ( info->is_extfn )
         type = "extended function";
     else
@@ -703,7 +696,44 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
          * extended function.
          */
         if ( pdev->info.is_virtfn )
-            pdev->info.is_extfn = pf_is_extfn;
+        {
+            struct pci_dev *pf_pdev;
+
+            pf_pdev = pci_get_pdev(NULL,
+                                   PCI_SBDF(seg, info->physfn.bus,
+                                            info->physfn.devfn));
+
+            if ( !pf_pdev )
+            {
+                ret = pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
+                                     NULL, node);
+                if ( ret )
+                {
+                    printk(XENLOG_WARNING "Failed to add SR-IOV device PF %pp for VF %pp\n",
+                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
+                           &pdev->sbdf);
+                    free_pdev(pseg, pdev);
+                    goto out;
+                }
+                pf_pdev = pci_get_pdev(NULL,
+                                       PCI_SBDF(seg, info->physfn.bus,
+                                                info->physfn.devfn));
+                if ( !pf_pdev )
+                {
+                    printk(XENLOG_ERR "Failed to find SR-IOV device PF %pp for VF %pp\n",
+                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
+                           &pdev->sbdf);
+                    ASSERT_UNREACHABLE();
+                    free_pdev(pseg, pdev);
+                    ret = -EILSEQ;
+                    goto out;
+                }
+            }
+
+            pdev->info.is_extfn = pf_pdev->info.is_extfn;
+            pdev->virtfn.pf_pdev = pf_pdev;
+            list_add(&pdev->vf_list, &pf_pdev->vf_list);
+        }
     }
 
     if ( !pdev->info.is_virtfn && !pdev->vf_rlen[0] )
@@ -821,6 +851,24 @@ 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 )
         {
+            if ( !pdev->info.is_virtfn )
+            {
+                struct pci_dev *vf_pdev, *tmp;
+                bool warn_stale_vfs = false;
+
+                list_for_each_entry_safe(vf_pdev, tmp, &pdev->vf_list, vf_list)
+                {
+                    list_del(&vf_pdev->vf_list);
+                    vf_pdev->virtfn.pf_pdev = NULL;
+                    vf_pdev->broken = true;
+                    warn_stale_vfs = true;
+                }
+
+                if ( warn_stale_vfs )
+                    printk(XENLOG_WARNING "PCI SR-IOV PF %pp removed with VFs still present\n",
+                           &pdev->sbdf);
+            }
+
             if ( pdev->domain )
             {
                 write_lock(&pdev->domain->pci_lock);
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index ef56e80651d6..2ea168d5f914 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -153,7 +153,17 @@ struct pci_dev {
         unsigned int count;
 #define PT_FAULT_THRESHOLD 10
     } fault;
+
+    /*
+     * List head if info.is_virtfn == false
+     * List entry if info.is_virtfn == true
+     */
+    struct list_head vf_list;
     u64 vf_rlen[6];
+    struct {
+        /* Only populated for VFs (info.is_virtfn == true) */
+        const struct pci_dev *pf_pdev;        /* Link from VF to PF */
+    } virtfn;
 
     /* Data for vPCI. */
     struct vpci *vpci;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 20:39:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 20:39:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822148.1236109 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1tks-0000xP-NQ; Fri, 18 Oct 2024 20:39:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822148.1236109; Fri, 18 Oct 2024 20:39: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 1t1tks-0000xI-Kf; Fri, 18 Oct 2024 20:39:26 +0000
Received: by outflank-mailman (input) for mailman id 822148;
 Fri, 18 Oct 2024 20:39: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=BiWJ=RO=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t1tkr-0000xC-Nq
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 20:39:25 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20631.outbound.protection.outlook.com
 [2a01:111:f403:2412::631])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0df7a2f9-8d91-11ef-a0be-8be0dac302b0;
 Fri, 18 Oct 2024 22:39:23 +0200 (CEST)
Received: from SJ0PR13CA0221.namprd13.prod.outlook.com (2603:10b6:a03:2c1::16)
 by MW6PR12MB7086.namprd12.prod.outlook.com (2603:10b6:303:238::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Fri, 18 Oct
 2024 20:39:18 +0000
Received: from SJ1PEPF00002316.namprd03.prod.outlook.com
 (2603:10b6:a03:2c1:cafe::7) by SJ0PR13CA0221.outlook.office365.com
 (2603:10b6:a03:2c1::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.21 via Frontend
 Transport; Fri, 18 Oct 2024 20:39:18 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00002316.mail.protection.outlook.com (10.167.242.170) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Fri, 18 Oct 2024 20:39:17 +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.39; Fri, 18 Oct
 2024 15:39:16 -0500
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.39; Fri, 18 Oct
 2024 15:39:16 -0500
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.39 via Frontend
 Transport; Fri, 18 Oct 2024 15:39:14 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0df7a2f9-8d91-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=hSIMrjYRY0WGfBYxbArmnefYkEhgrIoqXPJs7nS3ZWe/ePFmF/6qKDaOaBTPWJbHOLnr19SrBd1Om5VfJNpzK+1ujMc8h9dyKQ6IPLvzcpAohKtpdLJZYy38TCKGJhiMhQGoJJFGw+viBU++CJDetflZdHC2ksU/99pUnodQt/oMRLDkNUrc1TI00xyN8ZtsGIJQuXBgi6tmRjwUN36Aic7422QpFPZliaO0SLDmSHm/v+H0BUwkqjqm573HW1N2z4VCse6c5zPRczXdKPfFm89IoOXf4P9wNXpwPZijgLW29sEnMrbNbpB5Aav+HkxYb5Zif8W4oIdVABBk1zWwNA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=65zOba1Go4UkXf4nl4lRvSYjNqYKLo2d/nxL4CbGz60=;
 b=GrRmBvGNrUg9C+9P5lF6fgsF1RtO5ZQnLT+DV7IHuYC5j40gbHPWPVakJBPiB4ETZTkLFCiJ2N9ywdPXq5E07gBJBp2Tg/J4ik3DNk6yKXO622ZWcYeDOJBm0NCMwOLOpQZKirEd1ncPyBObLxqFvgoC4p7iRgxwtsbHBBDBmdG2YBTqbU/j0MhJBTCkKohBXbGVyqTkJ+WJfKGvgqMsZXvH6V5ZIXueOsZS1ATmYd0l7j1wV/HZ+7W3c3JW8eDiPYRs3DrWu/1/e17g3dE7qIXzpR5VvWzxP/794THBkKI/K68hoQOVsfiOjh/k9ZWihlPCb/d24e1xqiWcOYDI8w==
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=65zOba1Go4UkXf4nl4lRvSYjNqYKLo2d/nxL4CbGz60=;
 b=1X3419D8MkAGNlw2MZMyNYmRzIuXQISsmwwSu0fCT13Z20LCePRW4XTwvH2zhbbdwpF89TyMgb/2hcMKKMIlgO6SbhOR2hnhSqprWr43F7QyKyGzi17uPamV0RhFSXupYy3jFgKiq7J/c0uH1uDZyE9J8s9YX0X5gKbgGlM4kKM=
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>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [PATCH v6 0/3] xen: SR-IOV fixes
Date: Fri, 18 Oct 2024 16:39:07 -0400
Message-ID: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002316:EE_|MW6PR12MB7086:EE_
X-MS-Office365-Filtering-Correlation-Id: 03acee0d-8a06-4cd0-5a66-08dcefb4efc1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?XkiNwZt9+rNfr0/LkFssOQpgWsThmuvw2UIEcqIwUKX9xfCNvqR1Q1WkEZhP?=
 =?us-ascii?Q?PrnsAt6XlYrb5Fu4bI7AE0WVqWsxoFoeISFCIca4+By7XMbJJcC4HdKxHUOs?=
 =?us-ascii?Q?MIVhZRITBXRHg2jQjGNsCDB9fngl8bQiZHx1VULGqVnkIlyb8IczhCHbsDI/?=
 =?us-ascii?Q?8d9nv+rdjEGN1CR4bVCCN7gsmpt953DsRI6qiG95VsTK7XRQKc0+QB7IH5Lr?=
 =?us-ascii?Q?wPQ2v4dTxzdhO2e1W2sw50qZ+HYauKsroaUpsqZQnvwibOoHiC3U/aUzJxWH?=
 =?us-ascii?Q?+s05o5Fb2BvmkHREpmVst2elNZyYj72/WETxtK4LL+j6dUkKifAm2WOmGbwD?=
 =?us-ascii?Q?5bji2vrK4+QNgCfBj8wrV7s8wwQQ8QFwjvrLLWorgMCLc/FVcmKUtiYqvslD?=
 =?us-ascii?Q?DTSvC/2j2R1R5UENXyONYlYMNNYexbffoOVuMBqPuk/b0FUQJDG+PsTp83BQ?=
 =?us-ascii?Q?G5SXAHjlYLZN03bGqeTMuKf7g/3ilsjTXBxyJoXc15BcNs5eeiRu+JgltCso?=
 =?us-ascii?Q?QyshdVzOdEJuapcHmKAlPocw5BkmudQxWk1iAyE7dqH/RcusxCX3Q6aRPMhH?=
 =?us-ascii?Q?grisIarUNld7odIbvGIZmKJr5fgeYteMOhoHVKhRsw/81f5SzIlXQqZ01Wh4?=
 =?us-ascii?Q?IhhjcUujGNfgspa3yZ6QrwqcVqe4neh6FfvrpVBFzVzcCvUO52yPPgcoDsL7?=
 =?us-ascii?Q?cEHCP3YaUPW+SZa6KL4ytP4ci6fXIqitYwXHPj0jg6+wFwrJuTzwSe0H/PGy?=
 =?us-ascii?Q?YNobY5lv1SoNja031n2IN0Ie8Z0D48nqS8aqyPjyb2WR9adzYLb5Cz0NOK8Y?=
 =?us-ascii?Q?pmncaRzRZ90kQkiAe8d98+QllP/SM0GjSfE1vFbSgHw4gfxEr62yk5x/lnMm?=
 =?us-ascii?Q?iKE2rz9v+EvbAQHHpP/f9Jm1QbqkGrKA3ZCKcaTkRcIf09Jf2hXNxnpzjxp7?=
 =?us-ascii?Q?BsNB+SQSQk63hO0fVqM1PWpF5FPHSlS8H9KEkiALV62UpH8EMKGlEJE88Lvp?=
 =?us-ascii?Q?8Mzf6jblxIZHOS7p7zpDTa3qrcz+wtJAU1YVvc+L4lUbm+l2qraSBNlxTury?=
 =?us-ascii?Q?che0U2H2cURz4+fG9LdUGnsccXojkHnwNUlmsp1qc+gMguhNrU7xp7CXXK2r?=
 =?us-ascii?Q?G6ksBicyGGeCBsTUkZBS41nXxg9/y3w7L5g4AfhFnJYERWNU67QXGYjz+Lp7?=
 =?us-ascii?Q?4pAff+lmC/VqtIlw6DNH9zF3p+fey3DqRrXqzWxQlUzgvnFGaADcCpLWMbUB?=
 =?us-ascii?Q?occHbsj4YEy7LDNVVRhBV8mmYX5mHcItpgZqClDD4MU3q5ZSsLxEqWS09dyM?=
 =?us-ascii?Q?rm4lLb7uUaQ8dk/eugMWpiVJ4TZZEcOF5h/RZthUkbANLLl8pJPSw2xfCthC?=
 =?us-ascii?Q?amiySABthAIFzg3Y9HctdnHzgIBOXEtw4t6gmBzzik+E3QqTFg=3D=3D?=
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:(13230040)(36860700013)(82310400026)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 20:39:17.3939
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 03acee0d-8a06-4cd0-5a66-08dcefb4efc1
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:
	SJ1PEPF00002316.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB7086

A fix for handling of stale pdevs, and a fix for a regressiong related
to a locking change.

Stewart Hildebrand (3):
  x86/msi: harden stale pdev handling
  xen/pci: introduce PF<->VF links
  x86/msi: fix locking for SR-IOV devices

 xen/arch/x86/msi.c            | 56 +++++++++++++----------
 xen/drivers/passthrough/msi.c |  3 ++
 xen/drivers/passthrough/pci.c | 84 ++++++++++++++++++++++++++++-------
 xen/drivers/vpci/msi.c        |  2 +-
 xen/drivers/vpci/msix.c       |  2 +-
 xen/include/xen/pci.h         | 20 ++++++++-
 6 files changed, 123 insertions(+), 44 deletions(-)


base-commit: 4c21b6affb4c5a3afe22cbc144362091de063366
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 20:39:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 20:39:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822152.1236139 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1tlF-0001uG-NT; Fri, 18 Oct 2024 20:39:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822152.1236139; Fri, 18 Oct 2024 20:39: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 1t1tlF-0001u9-IP; Fri, 18 Oct 2024 20:39:49 +0000
Received: by outflank-mailman (input) for mailman id 822152;
 Fri, 18 Oct 2024 20:39: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=BiWJ=RO=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t1tlE-0001Cl-CZ
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 20:39:48 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20622.outbound.protection.outlook.com
 [2a01:111:f403:2415::622])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1c11bab8-8d91-11ef-99a3-01e77a169b0f;
 Fri, 18 Oct 2024 22:39:46 +0200 (CEST)
Received: from SJ0PR13CA0217.namprd13.prod.outlook.com (2603:10b6:a03:2c1::12)
 by MW4PR12MB5667.namprd12.prod.outlook.com (2603:10b6:303:18a::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.26; Fri, 18 Oct
 2024 20:39:40 +0000
Received: from SJ1PEPF00002316.namprd03.prod.outlook.com
 (2603:10b6:a03:2c1:cafe::fc) by SJ0PR13CA0217.outlook.office365.com
 (2603:10b6:a03:2c1::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.8 via Frontend
 Transport; Fri, 18 Oct 2024 20:39:40 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00002316.mail.protection.outlook.com (10.167.242.170) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8069.17 via Frontend Transport; Fri, 18 Oct 2024 20:39:40 +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.39; Fri, 18 Oct
 2024 15:39:39 -0500
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.39 via Frontend
 Transport; Fri, 18 Oct 2024 15:39:38 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c11bab8-8d91-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=GHxmXdiw5IU7oEfNP0HaZXGgUZId99mv4mG3SeZCS2GgBPUynfPwoUGS7BVFpFgSvV6no9aVFdQxlTSTWN/WhmI2kuJXf2E0NzvaDO5AY05hLNRuysAgyukOv/s0rdPsC8N1H9OTHSgt2VpYBZvjRTmOJXFkGIRdJdeGPpMQld8AyqQYpeO3sYaO/V/8OaD3XmxtD7XqnoAH0qLZ7Phah+N1PKeTgJ552rdASgOMo4oGE+plqNDVvim39xGLMLmxmqro6l/qhw7EnlmhttfKRPWfXj082Y3iKb37ygh26W2nZpdnx6ntiN+I2cEfaR273obH7Btv7GNzelf88wnHrQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=PYAsN6CZPwERab7Ma9P37546OYVBrhDtCRKV6N+OMD0=;
 b=wpZcka6lRPbwqkN1O7JFMWLQvhXi0u2dukNDCTzFcufw3LOh0jivqV4KQSNLzScDgtKrRisKHSWFc2Xa18yjblrONvd6ZkPTzZy5EhvG4HRSMIDp067VW208/o1a6Z4aOnU7KQudQ1eq2rR3g1bvQIYLHuS18RuzeA9RZiYAGEodTOdF2Ixd9HeXqt4vIvy21+yu83Gkz1yOnBVqyxAR4eb0OreCGpuA9hYg9trU0NKbPQCzC4MO0ioQ4S8BjKlaWpydmqFPUIjbfAjEZYR2aGbVRFzVrK6eXZoW0cEtZy+sZS2wqiF5bFtxE1zN9gFqSk3lPCxFNpORHpFj0Vn19w==
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=PYAsN6CZPwERab7Ma9P37546OYVBrhDtCRKV6N+OMD0=;
 b=qJrLA6fbYJXB5DF5u5hmqnMjzO7t7L5UqsP7FbZGVktZbEeAK8TyvOx51r7Eno3D0PvbMD1HF9dat1MMT/Gv/zy/w0yBKU/uBPePMNfsY+20T5f8brxa/hSzbGvfduom2OJo4ljUWF0//mZwwAcQa7ldK10NW4yShlUrsJMiVsE=
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>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Teddy Astie
	<teddy.astie@vates.tech>
Subject: [PATCH v6 3/3] x86/msi: fix locking for SR-IOV devices
Date: Fri, 18 Oct 2024 16:39:10 -0400
Message-ID: <20241018203913.1162962-4-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002316:EE_|MW4PR12MB5667:EE_
X-MS-Office365-Filtering-Correlation-Id: 2694bcef-708d-4ff1-2a94-08dcefb4fd85
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?oe5+MRPL6/ZqUvsviAbciql0oRQEzSLi3j3jH7CLofKauSjF+Ah6WujdgLst?=
 =?us-ascii?Q?V3xKwshuT0KFfBx3t2BVFT03aTimJr5n9rQDDciv+sjQhFYlpv4XqChLV5yb?=
 =?us-ascii?Q?Lg3hFO2SU1oEtCjIWDjPKfYsxWZRY82tOjaxQ6eIWBirURE4j/XF/RTYUUY7?=
 =?us-ascii?Q?LfGqorhgKIKkXIzmoBhaQM05nrmrCfjRq4FbebNb4brZD7gXsvyFNq1+wjHJ?=
 =?us-ascii?Q?D2VvHxMAS1ZPI9o0uDdJ9TsjoCESDnPBI8kQV/IQ+p3zYSPqvW6dQH2HUJjK?=
 =?us-ascii?Q?gupL7xTwPLVqcZlMeVJZFS3HOuIB+DRQQkuedhu89t8w0Y3bf7nMoABub79G?=
 =?us-ascii?Q?yNdaFN11lmvfoKz9YxicrHNQvKvf1EDjP9fpHsEwJPql9s6eQVRGva8NEASC?=
 =?us-ascii?Q?2rhw0Y9Ci0C4Fu6kECh7HOz1IV7Zntiwa8S6VxXPbdNIzBMhHWdGg4oUSPGn?=
 =?us-ascii?Q?vyBkNioH+d94O6Dge4aoQqa8Vtl6HZt5wBbQobs9a76bQziSTHo5vt0l3Ji3?=
 =?us-ascii?Q?Z9p0kiRcLsnkHM3TyIMMEGp3UwXCuT4vcT4aGNs3B7Mm14HsYVfBenZav6Vg?=
 =?us-ascii?Q?9EZd7FnxzDYgS/JTjOP5L1cSRNdOHLpgt2y04ZjPPlAM5/60jUQKtxv30IQf?=
 =?us-ascii?Q?CVvIrffLi13YWEZBne5dvWuupHQgHH691vXmTp2uV6KBZfC9jj8veJ7m9kVZ?=
 =?us-ascii?Q?xbJOox1vziSNRggzEikYvv8FHufR0l/rh1XkdtmdV4OFBmSI3Dtcr40XG5CX?=
 =?us-ascii?Q?9wVtm8M8eC+VMojfhavFfVmQ//XHjXZjaaaqOGj+Uk7OivwD6/82xqz6ottu?=
 =?us-ascii?Q?rEcLDHdJBOcHz4BBzURoDc/VsNxNLbGbYuerjCZCbk5ujqQkfDa0xecNqZr2?=
 =?us-ascii?Q?566Ox8B3MGL6ClBV0Abq9W3dmAnF5ePMeEPqceYLLL6Rv6Op3d2sljr5R2r+?=
 =?us-ascii?Q?egoebmWZt6WJTc34ITj3OqLhNehHlSTdORv/0ZlcUTV4uCFdFsjEXdnbFtfR?=
 =?us-ascii?Q?RCf+449sgkonIyXrHWR7coMjuOoKQm5leyetGlETM6bKBOaaYBJYNsCPBdVv?=
 =?us-ascii?Q?VYYP5bl0ybvppkzNIHAtUe2bJfKzc8XHzDZwgts9kElGd+nqf4GroFje4ST2?=
 =?us-ascii?Q?d0PT7pi3AEVZ/yahhDOzeVTr+KEBLQh6zlYYLBYuKyYKPEGYSovHj2w74igT?=
 =?us-ascii?Q?gf+pj6B7nC7XTq2deYuHWX3WoGCNxuZ0VgzcZjm63m03yHPvJICCKUOmjjdI?=
 =?us-ascii?Q?NiSG9cGa3V2s+tXqtxHIbfqeDquVymKJPUmG1yl9GHjnCwdgkUiQONlGWUnm?=
 =?us-ascii?Q?805th9Hxl0v/ZGgMb3pCyRZ20gW0xyuWPAUGMoA4iiu0LGkGh46FqDLJ8Vec?=
 =?us-ascii?Q?Tai2v1huY0JK6hwVByTOEQywKhvoaTta1Z3BpMkSI4eLLe/eNw=3D=3D?=
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:(13230040)(82310400026)(376014)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2024 20:39:40.4876
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2694bcef-708d-4ff1-2a94-08dcefb4fd85
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:
	SJ1PEPF00002316.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB5667

In commit 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci
structure") a lock was moved from allocate_and_map_msi_pirq() to the
caller and changed from pcidevs_lock() to read_lock(&d->pci_lock).
However, one call path wasn't updated to reflect the change, leading to
a failed assertion observed under the following conditions:

* PV dom0
* Debug build (CONFIG_DEBUG=y) of Xen
* There is an SR-IOV device in the system with one or more VFs enabled
* Dom0 has loaded the driver for the VF and enabled MSI-X

(XEN) Assertion 'd || pcidevs_locked()' failed at drivers/passthrough/pci.c:535
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Not tainted ]----
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040284da8>] R pci_get_pdev+0x4c/0xab
(XEN)    [<ffff82d040344f5c>] F arch/x86/msi.c#read_pci_mem_bar+0x58/0x272
(XEN)    [<ffff82d04034530e>] F arch/x86/msi.c#msix_capability_init+0x198/0x755
(XEN)    [<ffff82d040345dad>] F arch/x86/msi.c#__pci_enable_msix+0x82/0xe8
(XEN)    [<ffff82d0403463e5>] F pci_enable_msi+0x3f/0x78
(XEN)    [<ffff82d04034be2b>] F map_domain_pirq+0x2a4/0x6dc
(XEN)    [<ffff82d04034d4d5>] F allocate_and_map_msi_pirq+0x103/0x262
(XEN)    [<ffff82d04035da5d>] F physdev_map_pirq+0x210/0x259
(XEN)    [<ffff82d04035e798>] F do_physdev_op+0x9c3/0x1454
(XEN)    [<ffff82d040329475>] F pv_hypercall+0x5ac/0x6af
(XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150

In read_pci_mem_bar(), the VF obtains the struct pci_dev pointer for its
associated PF to access the vf_rlen array. This array is initialized in
pci_add_device() and is only populated in the associated PF's struct
pci_dev.

Access the vf_rlen array via the link to the PF, and remove the
troublesome call to pci_get_pdev().

Fixes: 4f78438b45e2 ("vpci: use per-domain PCI lock to protect vpci structure")
Reported-by: Teddy Astie <teddy.astie@vates.tech>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
Candidate for backport to 4.19
Patch #2 ("xen/pci: introduce PF<->VF links") is pre-requisite

v5->v6:
* add Jan's R-b

v4->v5:
* split the PF<->VF links to a pre-requisite patch
* pass pci_sbdf_t to read_pci_mem_bar()
* use stdint.h types on changed lines
* re-add NULL check for pf_info in read_pci_mem_bar(), as pf_info could
  be NULL

v3->v4:
* handle case when PF is removed with VFs enabled, then re-added with
  VFs disabled

v2->v3:
* link from VF to PF's struct pci_dev *

v1->v2:
* remove call to pci_get_pdev()
---
 xen/arch/x86/msi.c            | 37 ++++++++++++++++++++++-------------
 xen/drivers/passthrough/pci.c |  8 +++++---
 xen/include/xen/pci.h         | 15 +++++++++-----
 3 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index 5e24df7be0c0..79fff9de4305 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -660,34 +660,35 @@ static int msi_capability_init(struct pci_dev *dev,
     return 0;
 }
 
-static u64 read_pci_mem_bar(u16 seg, u8 bus, u8 slot, u8 func, u8 bir, int vf)
+static uint64_t read_pci_mem_bar(pci_sbdf_t sbdf, uint8_t bir, int vf,
+                                 const struct pf_info *pf_info)
 {
+    uint16_t seg = sbdf.seg;
+    uint8_t bus = sbdf.bus, slot = sbdf.dev, func = sbdf.fn;
     u8 limit;
     u32 addr, base = PCI_BASE_ADDRESS_0;
     u64 disp = 0;
 
     if ( vf >= 0 )
     {
-        struct pci_dev *pdev = pci_get_pdev(NULL,
-                                            PCI_SBDF(seg, bus, slot, func));
         unsigned int pos;
         uint16_t ctrl, num_vf, offset, stride;
 
-        if ( !pdev )
+        if ( !pf_info )
             return 0;
 
-        pos = pci_find_ext_capability(pdev->sbdf, PCI_EXT_CAP_ID_SRIOV);
-        ctrl = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_CTRL);
-        num_vf = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_NUM_VF);
-        offset = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_OFFSET);
-        stride = pci_conf_read16(pdev->sbdf, pos + PCI_SRIOV_VF_STRIDE);
+        pos = pci_find_ext_capability(sbdf, PCI_EXT_CAP_ID_SRIOV);
+        ctrl = pci_conf_read16(sbdf, pos + PCI_SRIOV_CTRL);
+        num_vf = pci_conf_read16(sbdf, pos + PCI_SRIOV_NUM_VF);
+        offset = pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_OFFSET);
+        stride = pci_conf_read16(sbdf, pos + PCI_SRIOV_VF_STRIDE);
 
         if ( !pos ||
              !(ctrl & PCI_SRIOV_CTRL_VFE) ||
              !(ctrl & PCI_SRIOV_CTRL_MSE) ||
              !num_vf || !offset || (num_vf > 1 && !stride) ||
              bir >= PCI_SRIOV_NUM_BARS ||
-             !pdev->vf_rlen[bir] )
+             !pf_info->vf_rlen[bir] )
             return 0;
         base = pos + PCI_SRIOV_BAR;
         vf -= PCI_BDF(bus, slot, func) + offset;
@@ -701,8 +702,8 @@ static u64 read_pci_mem_bar(u16 seg, u8 bus, u8 slot, u8 func, u8 bir, int vf)
         }
         if ( vf >= num_vf )
             return 0;
-        BUILD_BUG_ON(ARRAY_SIZE(pdev->vf_rlen) != PCI_SRIOV_NUM_BARS);
-        disp = vf * pdev->vf_rlen[bir];
+        BUILD_BUG_ON(ARRAY_SIZE(pf_info->vf_rlen) != PCI_SRIOV_NUM_BARS);
+        disp = vf * pf_info->vf_rlen[bir];
         limit = PCI_SRIOV_NUM_BARS;
     }
     else switch ( pci_conf_read8(PCI_SBDF(seg, bus, slot, func),
@@ -811,6 +812,7 @@ static int msix_capability_init(struct pci_dev *dev,
         int vf;
         paddr_t pba_paddr;
         unsigned int pba_offset;
+        const struct pf_info *pf_info;
 
         if ( !dev->info.is_virtfn )
         {
@@ -818,6 +820,7 @@ static int msix_capability_init(struct pci_dev *dev,
             pslot = slot;
             pfunc = func;
             vf = -1;
+            pf_info = NULL;
         }
         else
         {
@@ -825,9 +828,14 @@ static int msix_capability_init(struct pci_dev *dev,
             pslot = PCI_SLOT(dev->info.physfn.devfn);
             pfunc = PCI_FUNC(dev->info.physfn.devfn);
             vf = dev->sbdf.bdf;
+            if ( dev->virtfn.pf_pdev )
+                pf_info = &dev->virtfn.pf_pdev->physfn;
+            else
+                pf_info = NULL;
         }
 
-        table_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf);
+        table_paddr = read_pci_mem_bar(PCI_SBDF(seg, pbus, pslot, pfunc), bir,
+                                       vf, pf_info);
         WARN_ON(msi && msi->table_base != table_paddr);
         if ( !table_paddr )
         {
@@ -850,7 +858,8 @@ static int msix_capability_init(struct pci_dev *dev,
 
         pba_offset = pci_conf_read32(dev->sbdf, msix_pba_offset_reg(pos));
         bir = (u8)(pba_offset & PCI_MSIX_BIRMASK);
-        pba_paddr = read_pci_mem_bar(seg, pbus, pslot, pfunc, bir, vf);
+        pba_paddr = read_pci_mem_bar(PCI_SBDF(seg, pbus, pslot, pfunc), bir, vf,
+                                     pf_info);
         WARN_ON(!pba_paddr);
         pba_paddr += pba_offset & ~PCI_MSIX_BIRMASK;
 
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index fe31255b1207..9182723ece1b 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -736,7 +736,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         }
     }
 
-    if ( !pdev->info.is_virtfn && !pdev->vf_rlen[0] )
+    if ( !pdev->info.is_virtfn && !pdev->physfn.vf_rlen[0] )
     {
         unsigned int pos = pci_find_ext_capability(pdev->sbdf,
                                                    PCI_EXT_CAP_ID_SRIOV);
@@ -748,7 +748,9 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         {
             unsigned int i;
 
-            BUILD_BUG_ON(ARRAY_SIZE(pdev->vf_rlen) != PCI_SRIOV_NUM_BARS);
+            BUILD_BUG_ON(ARRAY_SIZE(pdev->physfn.vf_rlen) !=
+                                    PCI_SRIOV_NUM_BARS);
+
             for ( i = 0; i < PCI_SRIOV_NUM_BARS; )
             {
                 unsigned int idx = pos + PCI_SRIOV_BAR + i * 4;
@@ -763,7 +765,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
                     continue;
                 }
                 ret = pci_size_mem_bar(pdev->sbdf, idx, NULL,
-                                       &pdev->vf_rlen[i],
+                                       &pdev->physfn.vf_rlen[i],
                                        PCI_BAR_VF |
                                        ((i == PCI_SRIOV_NUM_BARS - 1) ?
                                         PCI_BAR_LAST : 0));
diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
index 2ea168d5f914..e961a3c66799 100644
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -159,11 +159,16 @@ struct pci_dev {
      * List entry if info.is_virtfn == true
      */
     struct list_head vf_list;
-    u64 vf_rlen[6];
-    struct {
-        /* Only populated for VFs (info.is_virtfn == true) */
-        const struct pci_dev *pf_pdev;        /* Link from VF to PF */
-    } virtfn;
+    union {
+        struct pf_info {
+            /* Only populated for PFs (info.is_virtfn == false) */
+            uint64_t vf_rlen[PCI_SRIOV_NUM_BARS];
+        } physfn;
+        struct {
+            /* Only populated for VFs (info.is_virtfn == true) */
+            const struct pci_dev *pf_pdev;        /* Link from VF to PF */
+        } virtfn;
+    };
 
     /* Data for vPCI. */
     struct vpci *vpci;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 18 21:50:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 21:50:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822185.1236155 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ur7-0000lH-Ld; Fri, 18 Oct 2024 21:49:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822185.1236155; Fri, 18 Oct 2024 21:49: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 1t1ur7-0000lA-I4; Fri, 18 Oct 2024 21:49:57 +0000
Received: by outflank-mailman (input) for mailman id 822185;
 Fri, 18 Oct 2024 21:49: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 1t1ur5-0000l4-QY
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 21:49: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 1t1ur5-0005rG-Ho; Fri, 18 Oct 2024 21:49:55 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1ur5-0003h5-91; Fri, 18 Oct 2024 21:49: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=e0c9y30/PkyRqGXPgFiq4cMngAF6UndroV3+nRgB5A4=; b=hFzSElx65jpb63IJKhdxb6u3po
	B2YhMsmstFX0xN3aomQkyInMbXkAf25s/a0PVcOsinnX7gdi0o0VxJhUhdelqDovKcnDJvulnO17q
	VdvtxAIC3znQ1djVK+8cgzxu5/Nvbiepu/ZZoF5K0w/EnRR4GNaCHqHAYlxgujWMKmB8=;
Message-ID: <2969514c-932b-4fc7-a762-2f9998296462@xen.org>
Date: Fri, 18 Oct 2024 22:49:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 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>,
 Jiamei Xie <Jiamei.Xie@arm.com>,
 "frediano.ziglio@cloud.com" <frediano.ziglio@cloud.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-4-ayan.kumar.halder@amd.com>
 <8AE12285-F017-4FC9-9F9C-6218257211F9@arm.com>
 <9c19c7a3-2e1e-43e3-88c4-ff8c02b4adfe@amd.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <9c19c7a3-2e1e-43e3-88c4-ff8c02b4adfe@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 15/10/2024 17:24, Ayan Kumar Halder wrote:
> Hi,

Hi Ayan & Luca,

> On 14/10/2024 19:53, Luca Fancellu wrote:
>> + Frediano for suggestion about header protection define name
>>
>>> +++ b/xen/arch/arm/include/asm/mpu/layout.h
>>> @@ -0,0 +1,33 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +
>>> +#ifndef __ARM_MPU_LAYOUT_H__
>>> +#define __ARM_MPU_LAYOUT_H__
>> I think we are moving away from this notation:
>> https://patchwork.kernel.org/project/xen-devel/patch/20241004081713.749031-6-frediano.ziglio@cloud.com/
>> Shall this be ASM___ARM__MPU__LAYOUT_H ? @Frediano
> 
> I could see that the patch hasn't been Rb yet and as per 
> https://patchwork.kernel.org/project/xen-devel/cover/20241004081713.749031-1-frediano.ziglio@cloud.com/ , the new coding style is still under discussion.
> 
> May be the Arm maintainers (Stefano, Julien, Bertrand, Michal) can 
> provide their opinion on this.

The current guideline is been debating within among the committers. For 
now, please ignore the guideline.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 22:00:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 22:00:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822192.1236165 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1v0m-0004O7-HG; Fri, 18 Oct 2024 21:59:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822192.1236165; Fri, 18 Oct 2024 21:59: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 1t1v0m-0004O0-EP; Fri, 18 Oct 2024 21:59:56 +0000
Received: by outflank-mailman (input) for mailman id 822192;
 Fri, 18 Oct 2024 21:59:54 +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 1t1v0k-0004Nu-FM
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 21:59:54 +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 1t1v0k-00061A-6K; Fri, 18 Oct 2024 21:59:54 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1v0j-0004lK-Vb; Fri, 18 Oct 2024 21:59: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=4DHIibTvMlDOEgAhm4AvPwIF0zESC5f25TDqgCLFYJA=; b=LpSZ0dUqKCzD0mO9V6B8yjYceZ
	A3oHmmkiCfvdaQhUOC0KiKy+c8uol+nzM50jNd4K34cxqt6G16Nu0eNaee8yntVjLQ5MM+Q+oaIBg
	z4pZ++mctJh8ADQswpmIiTUdChgLB+9Yz7g3VFDKssc1o9zOS3fHKs4Yvy6Dp2EMedwg=;
Message-ID: <5740cd89-1064-4ad1-a0a6-90c03ab99768@xen.org>
Date: Fri, 18 Oct 2024 22:59:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Content-Language: en-GB
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>,
 "Jiamei . Xie" <jiamei.xie@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-4-ayan.kumar.halder@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241010140351.309922-4-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 10/10/2024 15:03, Ayan Kumar Halder wrote:
> From: Wei Chen <wei.chen@arm.com>
> 
> On Armv8-A, Xen has a fixed virtual start address (link address too) for all
> Armv8-A platforms. In an MMU based system, Xen can map its loaded address to
> this virtual start address. So, on Armv8-A platforms, the Xen start address does
> not need to be configurable. But on Armv8-R platforms, there is no MMU to map
> loaded address to a fixed virtual address and different platforms will have very
> different address space layout. So Xen cannot use a fixed physical address on
> MPU based system and need to have it configurable.
> 
> So, we introduce a Kconfig option for users to set the start address. The start
> address needs to be aligned to 4KB. We have a check for this alignment.
> 
> MPU allows us to define regions which are 64 bits aligned. This restriction
> comes from the bitfields of PRBAR, PRLAR (the lower 6 bits are 0 extended to
> provide the base and limit address of a region). This means that the start
> address of Xen needs to be at least 64 bits aligned (as it will correspond to
> the start address of memory protection region).
> 
> As for now Xen on MPU tries to use the same memory alignment restrictions as it
> has been for MMU. Unlike MMU where the starting virtual address is 2MB, Xen on
> MPU needs the start address to be 4KB (ie page size) aligned.
> 
> In case if the user forgets to set the start address, then 0xffffffff is used
> as default. This is to trigger the error (on alignment check) and thereby prompt
> user to set the start address.
> 
> Also updated config.h so that it includes mpu/layout.h when CONFIG_MPU is
> defined.
> 
> Signed-off-by: Wei Chen <wei.chen@arm.com>
> Signed-off-by: Jiamei.Xie <jiamei.xie@arm.com>
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from :-
> 
> v1 - 1. Fixed some of the coding style issues.
> 2. Reworded the help message.
> 3. Updated the commit message.
> 
> v2 - Added clarification for the use of page and page size.
> 
>   xen/arch/arm/Kconfig                  | 10 ++++++++
>   xen/arch/arm/include/asm/config.h     |  4 +++-
>   xen/arch/arm/include/asm/mpu/layout.h | 33 +++++++++++++++++++++++++++
>   xen/arch/arm/setup.c                  |  8 +++++++
>   xen/arch/arm/xen.lds.S                |  6 +++++
>   5 files changed, 60 insertions(+), 1 deletion(-)
>   create mode 100644 xen/arch/arm/include/asm/mpu/layout.h
> 
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index ed92eb67cb..15b2e4a227 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -23,6 +23,16 @@ config ARCH_DEFCONFIG
>   	default "arch/arm/configs/arm32_defconfig" if ARM_32
>   	default "arch/arm/configs/arm64_defconfig" if ARM_64
>   
> +config XEN_START_ADDRESS
> +	hex "Xen start address: keep default to use platform defined address"
> +	default 0xFFFFFFFF
> +	depends on MPU
> +	help
> +	  Used to set customized address at which which Xen will be linked on MPU
> +	  systems. Must be aligned to 4KB.
> +	  0xFFFFFFFF is used as default value to indicate that user has not
> +	  customized this address.
> +
>   menu "Architecture Features"
>   
>   choice
> diff --git a/xen/arch/arm/include/asm/config.h b/xen/arch/arm/include/asm/config.h
> index a2e22b659d..0a51142efd 100644
> --- a/xen/arch/arm/include/asm/config.h
> +++ b/xen/arch/arm/include/asm/config.h
> @@ -69,8 +69,10 @@
>   #include <xen/const.h>
>   #include <xen/page-size.h>
>   
> -#ifdef CONFIG_MMU
> +#if defined(CONFIG_MMU)
>   #include <asm/mmu/layout.h>
> +#elif defined(CONFIG_MPU)
> +#include <asm/mpu/layout.h>
>   #else
>   # error "Unknown memory management layout"
>   #endif
> diff --git a/xen/arch/arm/include/asm/mpu/layout.h b/xen/arch/arm/include/asm/mpu/layout.h
> new file mode 100644
> index 0000000000..d6d397f4c2
> --- /dev/null
> +++ b/xen/arch/arm/include/asm/mpu/layout.h
> @@ -0,0 +1,33 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef __ARM_MPU_LAYOUT_H__
> +#define __ARM_MPU_LAYOUT_H__
> +
> +#define XEN_START_ADDRESS CONFIG_XEN_START_ADDRESS
> +
> +/*
> + * All MPU platforms need to provide a XEN_START_ADDRESS for linker. This
> + * address indicates where Xen image will be loaded and run from. This
> + * address must be aligned to a PAGE_SIZE.
> + */
> +#if (XEN_START_ADDRESS % PAGE_SIZE) != 0
> +#error "XEN_START_ADDRESS must be aligned to 4KB"
> +#endif
> +
> +/*
> + * For MPU, XEN's virtual start address is same as the physical address.
> + * The reason being MPU treats VA == PA. IOW, it cannot map the physical
> + * address to a different fixed virtual address. So, the virtual start
> + * address is determined by the physical address at which Xen is loaded.
> + */
> +#define XEN_VIRT_START         _AT(paddr_t, XEN_START_ADDRESS)
> +
> +#endif /* __ARM_MPU_LAYOUT_H__ */
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 71ebaa77ca..0203771164 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -295,6 +295,14 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
>       struct domain *d;
>       int rc, i;
>   
> +#ifdef CONFIG_MPU
> +    /*
> +     * Unlike MMU, MPU does not use pages for translation. However, we continue
> +     * to use PAGE_SIZE to denote 4KB. This is so that the existing memory
> +     * management based on pages, continue to work for now.
> +     */
> +    BUILD_BUG_ON(PAGE_SIZE != SZ_4K);
> +#endif

I think it would be better suited in mm.c or mpu/*.c.

>       dcache_line_bytes = read_dcache_line_bytes();
>   
>       percpu_init_areas();
> diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
> index bd884664ad..fe4b468cca 100644
> --- a/xen/arch/arm/xen.lds.S
> +++ b/xen/arch/arm/xen.lds.S
> @@ -231,6 +231,12 @@ SECTIONS
>    */
>   ASSERT(_start == XEN_VIRT_START, "_start != XEN_VIRT_START")
>   
> +/*
> + * On MPU based platforms, the starting address is to be provided by user.
> + * One need to check that it is 4KB aligned.
> + */
> +ASSERT(IS_ALIGNED(_start,       4096), "starting address is misaligned")
> +

Shouldn't this be protected with #ifdef CONFIG_MPU? Also, it would 
probably be useful to start the exact size in the error message.

>   /*
>    * We require that Xen is loaded at a page boundary, so this ensures that any
>    * code running on the identity map cannot cross a section boundary.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 22:13:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 22:13:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822203.1236175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1vDo-0000hF-Pn; Fri, 18 Oct 2024 22:13:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822203.1236175; Fri, 18 Oct 2024 22:13: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 1t1vDo-0000h8-Mq; Fri, 18 Oct 2024 22:13:24 +0000
Received: by outflank-mailman (input) for mailman id 822203;
 Fri, 18 Oct 2024 22:13: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 1t1vDn-0000h1-Qv
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 22:13: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 1t1vDn-0006Gy-Is; Fri, 18 Oct 2024 22:13:23 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1vDn-0006Rs-D4; Fri, 18 Oct 2024 22: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>
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=PPU7dvSNOjs7OLwo4wtyElWE+iMdgBfTIKhllPqOzGU=; b=gyDE/KZgzUUsApLgTzljLn8PUI
	ELZzm29++KgT7OkKTFTKUeMk6KCHSSha2nhASFnRmwtRZBsN3G4LlHNcP65lw0pIkA4jUvmLhI3bG
	7aZWR8YfQq/qQEhJ3OK/9C7a2JYxVepx8Z4R/ahcpndkQt204LgUTtM2U0TXh+gGpoug=;
Message-ID: <870059bd-d2af-4100-88be-9f6eb4facbe9@xen.org>
Date: Fri, 18 Oct 2024 23:13:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Content-Language: en-GB
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241010140351.309922-5-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Ayan,

On 10/10/2024 15:03, Ayan Kumar Halder wrote:
> diff --git a/xen/arch/arm/arm64/mpu/Makefile b/xen/arch/arm/arm64/mpu/Makefile
> new file mode 100644
> index 0000000000..3340058c08
> --- /dev/null
> +++ b/xen/arch/arm/arm64/mpu/Makefile
> @@ -0,0 +1 @@
> +obj-y += head.o
> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
> new file mode 100644
> index 0000000000..4a21bc815c
> --- /dev/null
> +++ b/xen/arch/arm/arm64/mpu/head.S
> @@ -0,0 +1,130 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Start-of-day code for an Armv8-R MPU system.
> + */
> +
> +#include <asm/mm.h>
> +#include <asm/arm64/mpu/sysregs.h>
> +
> +#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
> +#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
> +#define REGION_DATA_PRBAR       0x32    /* SH=11 AP=00 XN=10 */
> +
> +#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
> +
> +/*
> + * Macro to prepare and set a EL2 MPU memory region.
> + * We will also create an according MPU memory region entry, which
> + * is a structure of pr_t,  in table \prmap.
> + *
> + * Inputs:
> + * sel:         region selector
> + * base:        reg storing base address (should be page-aligned)
> + * limit:       reg storing limit address
> + * prbar:       store computed PRBAR_EL2 value
> + * prlar:       store computed PRLAR_EL2 value
> + * maxcount:    maximum number of EL2 regions supported
> + * attr_prbar:  PRBAR_EL2-related memory attributes. If not specified it will be
> + *              REGION_DATA_PRBAR
> + * attr_prlar:  PRLAR_EL2-related memory attributes. If not specified it will be
> + *              REGION_NORMAL_PRLAR
> + */
> +.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
> +
> +    /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
> +    add   \sel, \sel, #1
> +    cmp   \sel, \maxcount
> +    bgt   fail
> +
> +    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
> +    and   \base, \base, #MPU_REGION_MASK
> +    mov   \prbar, #\attr_prbar
> +    orr   \prbar, \prbar, \base
> +
> +    /* Limit address should be inclusive */
> +    sub   \limit, \limit, #1
> +    and   \limit, \limit, #MPU_REGION_MASK
> +    mov   \prlar, #\attr_prlar
> +    orr   \prlar, \prlar, \limit
> +
> +    msr   PRSELR_EL2, \sel
> +    isb
> +    msr   PRBAR_EL2, \prbar
> +    msr   PRLAR_EL2, \prlar
> +    dsb   sy
> +    isb
> +.endm
> +
> +/* Load the physical address of a symbol into xb */
> +.macro load_paddr xb, sym
> +    ldr \xb, =\sym
> +    add \xb, \xb, x20       /* x20 - Phys offset */

Sorry I didn't spot this until now. Xen will be linked to a specific 
physical address, so why do we need to add an offset?

> +.endm
> +
> +/*
> + * Maps the various sections of Xen (described in xen.lds.S) as different MPU
> + * regions.
> + *
> + * Inputs:
> + *   lr : Address to return to.
> + *
> + * Clobbers x0 - x5
> + *
> + */
> +FUNC(enable_boot_cpu_mm)
> +
> +    /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */

AFAIU, this doesn't match what the instruction is doing below.

> +    mrs   x5, MPUIR_EL2
> +
> +    /* x0: region sel */
> +    mov   x0, xzr
> +    /* Xen text section. */
> +    load_paddr x1, _stext
> +    load_paddr x2, _etext
> +    cmp x1, x2
> +    beq 1f

This check seems to be excessive... I can't think of a reason why there 
would be no text at all... Same for a lot of the checks below.

> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
> +
> +1:  /* Xen read-only data section. */
> +    load_paddr x1, _srodata
> +    load_paddr x2, _erodata
> +    cmp x1, x2
> +    beq 2f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_RO_PRBAR
> +
> +2:  /* Xen read-only after init and data section. (RW data) */
> +    load_paddr x1, __ro_after_init_start
> +    load_paddr x2, __init_begin
> +    cmp x1, x2
> +    beq 3f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5
> +
> +3:  /* Xen code section. */
> +    load_paddr x1, __init_begin
> +    load_paddr x2, __init_data_begin
> +    cmp x1, x2
> +    beq 4f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
> +
> +4:  /* Xen data and BSS section. */
> +    load_paddr x1, __init_data_begin
> +    load_paddr x2, __bss_end
> +    cmp x1, x2
> +    beq 5f
> +    prepare_xen_region x0, x1, x2, x3, x4, x5
> +
> +5:
> +    ret
> +
> +fail:

This name is a bit too generic given you use within a macro. Also, I 
think it should be its own local function because the macro can be used 
anywhere.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 22:26:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 22:26:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822210.1236184 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1vPz-0004PO-Rq; Fri, 18 Oct 2024 22:25:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822210.1236184; Fri, 18 Oct 2024 22: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 1t1vPz-0004PH-PD; Fri, 18 Oct 2024 22:25:59 +0000
Received: by outflank-mailman (input) for mailman id 822210;
 Fri, 18 Oct 2024 22:25: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 1t1vPy-0004PB-VW
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 22:25: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 1t1vPy-0006Sb-HY; Fri, 18 Oct 2024 22:25:58 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1vPy-0007Rz-AU; Fri, 18 Oct 2024 22: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>
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=p+x2eJFladDLbsN+a+86YLfuVAHBlcVQVW40+FQX8m0=; b=7IuXe0szg5/dTGivEndU7V3Opu
	R62Cp+RrZ1jhUZktsETfIr7HIht0ME3BBVQ7jURZ0aqgdVLCtA45sV2smiHcnxsJs5jhtGSEMbPYD
	r9AVjrtx/SqfvAjVhcDuiacLLbNetZokfpDJZW4xcH+yId/pgAQf5yOzVVwPjkAXTQ68=;
Message-ID: <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
Date: Fri, 18 Oct 2024 23:25:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241010140351.309922-6-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 10/10/2024 15:03, Ayan Kumar Halder wrote:
> After the regions have been created, now we enable the MPU. For this we disable
> the background region so that the new memory map created for the regions take
> effect. Also, we treat all RW regions as non executable and the data cache is
> enabled.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from :-
> 
> v2 - 1. Extracted from the previous patch into a new one.
> 
> 2. Disabled background region.
> 
>   xen/arch/arm/arm64/mpu/head.S                | 29 ++++++++++++++++++--
>   xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  3 ++
>   2 files changed, 30 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
> index 4a21bc815c..e354f4552b 100644
> --- a/xen/arch/arm/arm64/mpu/head.S
> +++ b/xen/arch/arm/arm64/mpu/head.S
> @@ -61,6 +61,30 @@
>       add \xb, \xb, x20       /* x20 - Phys offset */
>   .endm
>   
> +/*
> + * Enable EL2 MPU and data cache
> + * If the Background region is enabled, then the MPU uses the default memory
> + * map as the Background region for generating the memory
> + * attributes when MPU is disabled.
> + * Since the default memory map of the Armv8-R AArch64 architecture is
> + * IMPLEMENTATION DEFINED, we intend to turn off the Background region here.
> + *
> + * Clobbers x0
> + *
> + */
> +FUNC_LOCAL(enable_mpu)
> +    mrs   x0, SCTLR_EL2
> +    bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
> +    orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
> +    orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
> +    orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */

NIT: Can't we have a single "orr" instruction to set all the flags?

> +    dsb   sy

I still question this use of "dsb sy"...

> +    msr   SCTLR_EL2, x0
> +    isb
> +
> +    ret
> +END(enable_mpu)
> +
>   /*
>    * Maps the various sections of Xen (described in xen.lds.S) as different MPU
>    * regions.
> @@ -68,10 +92,11 @@
>    * Inputs:
>    *   lr : Address to return to.
>    *
> - * Clobbers x0 - x5
> + * Clobbers x0 - x6
>    *
>    */
>   FUNC(enable_boot_cpu_mm)
> +    mov   x6, lr
>   
>       /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
>       mrs   x5, MPUIR_EL2
> @@ -113,7 +138,7 @@ FUNC(enable_boot_cpu_mm)
>       beq 5f
>       prepare_xen_region x0, x1, x2, x3, x4, x5
>   
> -5:
> +5:  mov   lr, x6
>       ret
>   
>   fail:
> diff --git a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
> index b0c31a58ec..3769d23c80 100644
> --- a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
> +++ b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
> @@ -15,6 +15,9 @@
>   /* MPU Protection Region Selection Register encode */
>   #define PRSELR_EL2  S3_4_C6_C2_1
>   
> +/* Backgroud region enable/disable */
> +#define SCTLR_ELx_BR    BIT(17, UL)
> +
>   #endif /* __ASM_ARM_ARM64_MPU_SYSREGS_H */
>   
>   /*

Cheers,


-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 22:29:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 22:29:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822216.1236194 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1vT8-00071P-A7; Fri, 18 Oct 2024 22:29:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822216.1236194; Fri, 18 Oct 2024 22:29: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 1t1vT8-00071I-6v; Fri, 18 Oct 2024 22:29:14 +0000
Received: by outflank-mailman (input) for mailman id 822216;
 Fri, 18 Oct 2024 22:29: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 1t1vT6-0006yg-VF
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 22:29:12 +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 1t1vT6-0006Wn-OI; Fri, 18 Oct 2024 22:29:12 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1vT6-0007gq-FE; Fri, 18 Oct 2024 22:29: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=iDmJTs92hkVvWmRwe3tGhEaIOKfIblBCHm/9/5i97AI=; b=HCWxvhtN9bMKb8xxAm9vU6pjCn
	/701cdmO1/QfEwu85fIzdQDFo4DtGd1Aoz28UmjKVYpj0/fn+RV2Z4qH2l5GyNEfwf/UYKwOz5Y27
	AOi5yzSa24bnzmCJX2rCdhlcSLsVSmcF2O1Cm3DzLuLNWIqPbfuXceGN+Xse1vqolc8A=;
Message-ID: <edddfb39-f166-4657-aeb7-391f8990d01b@xen.org>
Date: Fri, 18 Oct 2024 23:29:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Content-Language: en-GB
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.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: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-7-ayan.kumar.halder@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241010140351.309922-7-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Ayan,

On 10/10/2024 15:03, Ayan Kumar Halder wrote:
> Secondary cpus initialization is not yet supported. Thus, we print an
> appropriate message and put the secondary cpus in WFE state.
> And we introduce to BUILD_BUG_ON to prevent users using from building Xen
> on multiprocessor based MPU systems.
> 
> In Arm, there is no clean way to disable SMP. As of now, we wish to support
> MPU on UNP only. So, we have defined the default range of NR_CPUs to be 1 for
> MPU.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from :-
> 
> v1 - 1. NR_CPUS is defined as 1 for MPU
> 
> 2. Added a message in enable_secondary_cpu_mm()
> 
> v2 - 1. Added the range
> 
> 2. Clarified in the commit message why/how we have disabled SMP.
> 
>   xen/arch/Kconfig              |  2 ++
>   xen/arch/arm/arm64/mpu/head.S | 10 ++++++++++
>   xen/arch/arm/setup.c          |  5 +++++
>   3 files changed, 17 insertions(+)
> 
> diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
> index 308ce129a8..6053e048fa 100644
> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>   
>   config NR_CPUS
>   	int "Maximum number of CPUs"
> +	range 1 1 if MPU
>   	range 1 16383
>   	default "256" if X86
>   	default "8" if ARM && RCAR3
>   	default "4" if ARM && QEMU
>   	default "4" if ARM && MPSOC
> +	default "1" if ARM && MPU
>   	default "128" if ARM
>   	help
>   	  Controls the build-time size of various arrays and bitmaps
> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
> index e354f4552b..4d36a8c9bc 100644
> --- a/xen/arch/arm/arm64/mpu/head.S
> +++ b/xen/arch/arm/arm64/mpu/head.S
> @@ -147,6 +147,16 @@ fail:
>       b   1b
>   END(enable_boot_cpu_mm)
>   
> +/*
> + * We don't yet support secondary CPUs bring-up. Implement a dummy helper to
> + * please the common code.
> + */
> +ENTRY(enable_secondary_cpu_mm)
> +    PRINT("- SMP not enabled yet -\r\n")
> +1:  wfe
> +    b 1b
> +ENDPROC(enable_secondary_cpu_mm)
> +
>   /*
>    * Local variables:
>    * mode: ASM
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 0203771164..5a0d343f5b 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -296,6 +296,11 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
>       int rc, i;
>   
>   #ifdef CONFIG_MPU
> +    /*
> +     * Currently, SMP is not enabled on MPU based systems.
> +     */
> +    BUILD_BUG_ON(NR_CPUS > 1);

I think this is a odd place to add the BUILD_BUG_ON. It would better 
belong to smp.c (if not mpu/smpboot.c). Maybe in a build_assertions() 
function.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 22:34:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 22:34:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822222.1236204 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1vXn-0008VR-QJ; Fri, 18 Oct 2024 22:34:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822222.1236204; Fri, 18 Oct 2024 22:34: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 1t1vXn-0008VK-NV; Fri, 18 Oct 2024 22:34:03 +0000
Received: by outflank-mailman (input) for mailman id 822222;
 Fri, 18 Oct 2024 22:34: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 1t1vXm-0008VE-Gb
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 22:34: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 1t1vXj-0006bX-MG; Fri, 18 Oct 2024 22:33:59 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1vXj-0008GC-Ec; Fri, 18 Oct 2024 22:33: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=dXGLANbP/rt5hPPlYgm5oQsbhV1csYPRsDBdXPVe5eM=; b=yE4D+Qj2f9J+yADj+p5u8VGJyK
	AW/xK08nFIQVpdJMI1CE/vW/+AwrZkLu8N+zSRSoPNGdlVf/6cvvW4m4UWgJuVOvxiFvjUQO6Q1v7
	coe3JJLe/7EYvevIzlDiA/qbz2QhBWbxsYW28k3LUT2IwrveVS0fjSwTp4uXPJrh0s2s=;
Message-ID: <f6919556-b041-4a28-9298-cf24128a92c7@xen.org>
Date: Fri, 18 Oct 2024 23:33:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] Update deprecated SPDX license identifiers
Content-Language: en-GB
To: oleksii.kurochko@gmail.com, Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, 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>,
 Ross Lagerwall <ross.lagerwall@citrix.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>, Elena Ufimtseva <elena.ufimtseva@oracle.com>,
 Paul Durrant <paul@xen.org>, Dario Faggioli <dfaggioli@suse.com>,
 Juergen Gross <jgross@suse.com>, George Dunlap <gwd@xenproject.org>,
 Doug Goldstein <cardoe@cardoe.com>
References: <20241018135725.2357572-1-frediano.ziglio@cloud.com>
 <b1a38c60291b15b550834027f69cec9f4613e6e3.camel@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <b1a38c60291b15b550834027f69cec9f4613e6e3.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Oleksii,

On 18/10/2024 15:35, oleksii.kurochko@gmail.com wrote:
> On Fri, 2024-10-18 at 14:57 +0100, Frediano Ziglio wrote:
>> As specified in LICENSES/GPL-2.0:
>> - GPL-2.0 -> GPL-2.0-only;
>> - GPL-2.0+ -> GPL-2.0-or-later.
>>
>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> For RISC-V: Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Thanks for the review. For the future, would you be able to put your 
reviewed-by tag on its own line? This would allow "b4 am" to pick the tag.

As a side note, you could also specify the component at the end. Excerpt 
from docs/process/sending-patches.pandoc:

If the
review is covering only some parts of the patch, those parts can optionally
be specified (multiple areas can be either separated by commas, or be 
covered
with multiple `Reviewed-by:` tags). It is in the format:

     Reviewed-by: name <email@domain> [# area[, area]]

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 22:36:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 22:36:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822227.1236215 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1va1-0000dZ-5G; Fri, 18 Oct 2024 22:36:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822227.1236215; Fri, 18 Oct 2024 22:36: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 1t1va1-0000dS-2P; Fri, 18 Oct 2024 22:36:21 +0000
Received: by outflank-mailman (input) for mailman id 822227;
 Fri, 18 Oct 2024 22:36: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 1t1vZz-0000dG-Mv
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 22:36: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 1t1vZx-0006e8-7V; Fri, 18 Oct 2024 22:36:17 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1vZx-0008U3-0f; Fri, 18 Oct 2024 22:36: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=l72wswh3gM0440mfeKPFxND8KaRj+ZZWcIjtOt2a7GY=; b=CwyszvKwitVmO+SW1qtALz7SrY
	s82ZueQ3fWX1a86s2+c7a//0Jcj3eNK767QX6nM4NgSOr0QxqVhiCqDsbURmx8TNeUl08gBy9Et11
	41bnTS+AJ/kSSWpPSiCoK3GnF1gt2NNOakX/vlJqVbWA72sA8STQveXDhorYoJiuNi9M=;
Message-ID: <e1897919-69e2-4479-a56f-a532c24a3534@xen.org>
Date: Fri, 18 Oct 2024 23:36:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] Update deprecated SPDX license identifiers
Content-Language: en-GB
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, 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>,
 Ross Lagerwall <ross.lagerwall@citrix.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>, Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Elena Ufimtseva <elena.ufimtseva@oracle.com>, Paul Durrant <paul@xen.org>,
 Dario Faggioli <dfaggioli@suse.com>, Juergen Gross <jgross@suse.com>,
 George Dunlap <gwd@xenproject.org>, Doug Goldstein <cardoe@cardoe.com>
References: <20241018135725.2357572-1-frediano.ziglio@cloud.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241018135725.2357572-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 18/10/2024 14:57, Frediano Ziglio wrote:
> As specified in LICENSES/GPL-2.0:
> - GPL-2.0 -> GPL-2.0-only;
> - GPL-2.0+ -> GPL-2.0-or-later.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

It is committed now.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 22:39:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 22:39:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822235.1236225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1vci-00037s-IA; Fri, 18 Oct 2024 22:39:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822235.1236225; Fri, 18 Oct 2024 22:39: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 1t1vci-00037l-FQ; Fri, 18 Oct 2024 22:39:08 +0000
Received: by outflank-mailman (input) for mailman id 822235;
 Fri, 18 Oct 2024 22:39: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 1t1vch-00037Z-Jk
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 22:39:07 +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 1t1vcf-0006i1-W4; Fri, 18 Oct 2024 22:39:05 +0000
Received: from [2a02:8012:3a1:0:11d8:dae4:636f:615c]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t1vcf-0000KI-Po; Fri, 18 Oct 2024 22: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>
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=2q3wz2Vdz2J2dQlia8Ug/K2X83xQ0Sqq7GInLbcRvW4=; b=mHrHckzPpYTYC5abE4k4SURoan
	lSdRUqtsoIFmNQQ4y5QMatwZ525STTtN1EyeB45SyS3rCEPVFktDti6+hAOQ1897bGBvXy+Bv5mO7
	dFOrkAN72UTGnIAALhz26X74SjUgAXOgiQXcSQODa1Wbe7ZC5bAtr2Ohm69qCPOzPblA=;
Message-ID: <476e8715-5b4c-432f-a286-18b529008826@xen.org>
Date: Fri, 18 Oct 2024 23:39:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 0/8] xen/arm: Add support for S32CC platforms and
 LINFlexD UART
Content-Language: en-GB
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
 xen-devel@lists.xenproject.org
Cc: S32@nxp.com, Andrei Cherechesu <andrei.cherechesu@nxp.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>, Jan Beulich <jbeulich@suse.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>
References: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240930114715.642978-1-andrei.cherechesu@oss.nxp.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 30/09/2024 12:47, Andrei Cherechesu (OSS) wrote:
> Andrei Cherechesu (8):
>    xen/arm: Add NXP LINFlexD UART Driver
>    xen/arm: Add NXP LINFlexD UART early printk support

I have committed the first two patches.

Cheers,


-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 23:10:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 23:10:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822250.1236246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1w6Y-0003bP-W3; Fri, 18 Oct 2024 23:09:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822250.1236246; Fri, 18 Oct 2024 23: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 1t1w6Y-0003bI-TM; Fri, 18 Oct 2024 23:09:58 +0000
Received: by outflank-mailman (input) for mailman id 822250;
 Fri, 18 Oct 2024 23:09: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 1t1w6X-0003b8-Np; Fri, 18 Oct 2024 23:09: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 1t1w6X-0007F6-KL; Fri, 18 Oct 2024 23:09: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 1t1w6X-0006yn-3W; Fri, 18 Oct 2024 23:09:57 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1w6X-00044W-39; Fri, 18 Oct 2024 23:09: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=YXUbhNQDhmgHe7MSpOJexNYqgTzHSznEhgymMxfON84=; b=2644KqebwODdHERWlFYax8MlZi
	ulv+wbK3ps9a0f/DPX5J1Yk4kUUQA3ukX/dIZHV4ZGAPSNwxTk8XiVltew1v1wzKC0RRfSJwkQP8T
	OoL+Ta7gY1XMkWzbnEru/0rVRmvfVD9h+82XZJ0t9NSgGmtHbOrQpAdvNyFhteOPkV1A=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188268-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188268: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=8f84eb0e761992dc1218f63ee53a54ac0c65630f
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 23:09:57 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 8f84eb0e761992dc1218f63ee53a54ac0c65630f
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    1 days
Failing since        188156  2024-10-17 09:14:11 Z    1 days    9 attempts
Testing same since   188268  2024-10-18 18:13:31 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Mike Beaton <mjsbeaton@gmail.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 8f84eb0e761992dc1218f63ee53a54ac0c65630f
Author: Mike Beaton <mjsbeaton@gmail.com>
Date:   Sun Sep 29 11:40:44 2024 +0100

    BaseTools: Remove -Wno-unneeded-internal-declaration from CLANGDWARF
    
    Subsequent to updating the 'null' DEBUG macro to explicitly
    discard its expression, it is possible to remove this warning
    suppression from CLANGDWARF and still successfully compile
    its RELEASE build.
    
    Note that CLANGPDB did and does not have this warning suppressed,
    and so before updating the 'null' DEBUG macro, CLANGPDB RELEASE
    was not building successfully in recent versions of clang,
    but was stopping with the error:
    
    .../edk2/OvmfPkg/VirtioSerialDxe/VirtioSerial.c:28:22: error:
    variable &apos;EventNames&apos; is not needed and will not be
    emitted [-Werror,-Wunneeded-internal-declaration]
    STATIC CONST CHAR8  *EventNames[] = {
                         ^
    
    This change makes the two CLANG variants match with respect
    to this warning, and leaves the warning enabled which is
    considered a benefit as it has the potential to catch real
    coding errors
    
    Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>

commit ae83c6b7fd83a5906e016a32027c1bcd792a624e
Author: Mike Beaton <mjsbeaton@gmail.com>
Date:   Sat Sep 28 02:43:15 2024 +0100

    MdePkg: Fix null macros for XCODE5 and CLANG
    
    When building OvmfPkg in RELEASE mode in the XCODE5 toolchain, the
    ASSERT_EFI_ERROR change prevents this error:
    
    .../MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c:141:15:
    error: variable 'Status' set but not used [-Werror,-Wunused-but-set-variable]
      EFI_STATUS  Status;
                  ^
    
    which is currently stopping the build.
    
    When building in RELEASE mode in the CLANGPDB toolchain,the DEBUG macro
    change prevents this error:
    
    .../edk2/OvmfPkg/VirtioSerialDxe/VirtioSerial.c:28:22: error:
    variable &apos;EventNames&apos; is not needed and will not be
    emitted [-Werror,-Wunneeded-internal-declaration]
    STATIC CONST CHAR8  *EventNames[] = {
                         ^
    
    which is currently stopping the build.
    
    CLANGDWARF produces the same error as CLANGPDB above, if
    -Wno-unneeded-internal-declaration is removed from its build flags.
    With the null DEBUG macro change, this warning suppression
    can be removed from CLANGDWARF, which is considered a benefit
    as it has the potential to catch real coding errors. This is
    done in a subsequent commit.
    
    This commit has the desirable side effect that we no longer require
    (and cannot use) explicit `#ifndef MDEPKG_NDEBUG` around items only
    used in DEBUG macros. This requires the ArmPkg change made here to
    be in the same commit as the MdePkg changes.
    
    Note: In common with existing macros in EDK II, including the pre-existing
    and unchanged DEBUG/NOOPT versions of the macros which are modified here,
    we use the standard approach of adding `do { ... } while (FALSE)` wrapping
    to ensure that the macros behave correctly with surrounding code
    (e.g. require a following ';' and do not combine in unexpected ways with
    nearby conditionals).
    
    Continuous-integration-options: PatchCheck.ignore-multi-package
    Co-authored-by: Mikhail Krichanov <krichanov@ispras.ru>
    Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>

commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 23:32:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 23:32:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822268.1236262 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1wSQ-0001eq-Sd; Fri, 18 Oct 2024 23:32:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822268.1236262; Fri, 18 Oct 2024 23: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 1t1wSQ-0001ej-Py; Fri, 18 Oct 2024 23:32:34 +0000
Received: by outflank-mailman (input) for mailman id 822268;
 Fri, 18 Oct 2024 23:32:33 +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 1t1wSP-0001eZ-C4; Fri, 18 Oct 2024 23:32:33 +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 1t1wSP-0007om-83; Fri, 18 Oct 2024 23:32: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 1t1wSO-0007YT-Rp; Fri, 18 Oct 2024 23:32:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1wSO-00067k-RZ; Fri, 18 Oct 2024 23: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=ZXMooVT2dmqhico3ye+f9zHDdsEa77zrV+bmXkSL2kc=; b=eWZSDHRyhu465+UdDw/3ANoSN8
	bV5Da61JYn6tWmPBeBNlsolMWx+xuasCDgWNW7Xlw7/v2fYPwpu5vC4fRKzaWW41dhqkRQfDsey7d
	kzEu4MKto14fehnVVnU8+oLY/4NnQLd9Y+RNwNblFOfjywXTpshydt3LNVKqzdZpyApg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188235-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [qemu-mainline test] 188235: regressions - FAIL
X-Osstest-Failures:
    qemu-mainline:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:debian-hvm-install:fail:regression
    qemu-mainline:test-amd64-amd64-qemuu-nested-intel:debian-hvm-install/l1/l2:fail:regression
    qemu-mainline:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-raw:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    qemu-mainline:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    qemuu=95a16ee753d6da651fce8df876333bf7fcf134d9
X-Osstest-Versions-That:
    qemuu=ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 18 Oct 2024 23:32:32 +0000

flight 188235 qemu-mainline real [real]
flight 188271 qemu-mainline real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/188235/
http://logs.test-lab.xenproject.org/osstest/logs/188271/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 12 debian-hvm-install fail REGR. vs. 187720
 test-amd64-amd64-qemuu-nested-intel 20 debian-hvm-install/l1/l2 fail REGR. vs. 187720

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 187720
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 187720
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 187720
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 187720
 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-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-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-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-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-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-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-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-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-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      15 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-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass

version targeted for testing:
 qemuu                95a16ee753d6da651fce8df876333bf7fcf134d9
baseline version:
 qemuu                ea9cdbcf3a0b8d5497cddf87990f1b39d8f3bb0a

Last test of basis   187720  2024-09-16 10:37:24 Z   32 days
Failing since        187731  2024-09-17 13:11:20 Z   31 days   53 attempts
Testing same since   188186  2024-10-17 16:47:22 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
    Ajeet Singh <itachis@FreeBSD.org>
  Akihiko Odaki <akihiko.odaki@daynix.com>
  Alan Adamson <alan.adamson@oracle.com>
  Alejandro Zeise <alejandro.zeise@seagate.com>
  Alex Bennée <alex.bennee@linaro.org>
  Alexandra Diupina <adiupina@astralinux.ru>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alistair Francis <alistair.francis@wdc.com>
  Alistair Francis <alistair23@gmail.com>
  Alvin Chang <alvinga@andestech.com>
  Andrew Jeffery <andrew@codeconstruct.com.au>
  Andrew Jones <ajones@ventanamicro.com>
  Ani Sinha <anisinha@redhat.com>
  Anthony PERARD <anthony.perard@vates.tech>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arun Kumar <arun.kka@samsung.com>
  Bernhard Beschow <shentey@gmail.com>
  Bibo Mao <maobibo@loongson.cn>
  Chao Liu <chao.liu@yeah.net>
  Corvin Köhne <c.koehne@beckhoff.com>
  Corvin Köhne <corvin.koehne@gmail.com>
  Cédric Le Goater <clg@redhat.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Daniil Tatianin <d-tatianin@yandex-team.ru>
  David Hildenbrand <david@redhat.com>
  Dmitry Frolov <frolov@swemel.ru>
  Dr. David Alan Gilbert <dave@treblig.org>
  Edgar E. Iglesias <edgar.iglesias@amd.com>
  Fabiano Rosas <farosas@suse.de>
  Fea.Wang <fea.wang@sifive.com>
  Fiona Ebner <f.ebner@proxmox.com>
  Gavin Shan <gshan@redhat.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Greg Kurz <groug@kaod.org>
  Haibo Xu <haibo1.xu@intel.com>
  Helge Deller <deller@gmx.de>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Inès Varhol <ines.varhol@telecom-paris.fr>
  Jacob Abrams <satur9nine@gmail.com>
  Jamin Lin <jamin_lin@aspeedtech.com>
  Jan Luebbe <jlu@pengutronix.de>
  Jason Chien <jason.chien@sifive.com>
  Jiaxun Yang <jiaxun.yang@flygoat.com>
  Julia Suvorova <jusual@redhat.com>
  Junjie Mao <junjie.mao@intel.com>
  Juraj Marcin <jmarcin@redhat.com>
  Kamil Szczęk <kamil@szczek.dev>
  Keith Busch <kbusch@kernel.org>
  Kinsey Moore <kinsey.moore@oarcorp.com>
  Klaus Jensen <k.jensen@samsung.com>
  Kunwu <chentao@kylinos.cn>
  Laurent Vivier <laurent@vivier.eu>
  Lei Wang <lei4.wang@intel.com>
  Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
  Marc-André Lureau <marcandre.lureau@redhat.com>
  Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
  Maria Klauchek <m.klauchek@syntacore.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
  Mark Corbin <mark@dibsco.co.uk>
  Markus Armbruster <armbru@redhat.com>
  Markus Armbruster <armbru@redhat.com> (QAPI schema)
  Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
  Mattias Nissler <mnissler@rivosinc.com>
  Michael Tokarev <mjt@tls.msk.ru>
  Michael Vogt <mvogt@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Milan P. Stanić <mps@arvanta.net>
  Niels de Vos <ndevos@redhat.com>
  Octavian Purdila <tavip@google.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paulo Neves <ptsneves@gmail.com>
  Peter Krempa <pkrempa@redhat.com>
  Peter Maydell <peter.maydell@linaro.org>
  Peter Xu <peterx@redhat.com>
  Philippe Mathieu-Daudé <philmd@linaro.org>
  Pierrick Bouvier <pierrick.bouvier@linaro.org>
  Richard Henderson <richard.henderson@linaro.org>
  Roman Cardenas Rodriguez <rcardenas.rod@gmail.com>
  Roman Penyaev <r.peniaev@gmail.com>
  Román Cárdenas Rodríguez <rcardenas.rod@gmail.com>
  Rowan Hart <rowanbhart@gmail.com>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Tardieu <sam@rfc1149.net>
  Shiva sagar Myana <Shivasagar.Myana@amd.com>
  Song Gao <gaosong@loongson.cn>
  Stefan Hajnoczi <stefanha@redhat.com>
  Stefan Weil <sw@weilnetz.de>
  Stefano Stabellini <sstabellini@kernel.org>
  Strahinja Jankovic <strahinja.p.jankovic@gmail.com>
  Strahinja Jankovic <strahinjapjankovic@gmail.com>
  TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
  Tejas Vipin <tejasvipin76@gmail.com>
  Thomas Huth <thuth@redhat.com>
  Tomasz Jeznach <tjeznach@rivosinc.com>
  Vladimir Isaev <vladimir.isaev@syntacore.com>
  Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
  Warner Losh <imp@bsdimp.com>
  Xianglai Li <lixianglai@loongson.cn>
  Xin Li (Intel) <xin@zytor.com>
  Xin Li <xin3.li@intel.com>
  Xingtao Yao <yaoxt.fnst@fujitsu.com>
  Yotaro Nada <yotaro.nada@gmail.com>
  Yuan Liu <yuan1.liu@intel.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhenyu Zhang <zhenyzha@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-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-qemuu-debianhvm-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-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-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        fail    
 test-amd64-amd64-qemuu-nested-intel                          fail    
 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 12024 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Oct 18 23:45:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 18 Oct 2024 23:45:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822279.1236272 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1wfB-0004Zc-VV; Fri, 18 Oct 2024 23:45:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822279.1236272; Fri, 18 Oct 2024 23: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 1t1wfB-0004ZV-T0; Fri, 18 Oct 2024 23:45:45 +0000
Received: by outflank-mailman (input) for mailman id 822279;
 Fri, 18 Oct 2024 23:45: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=TH/0=RO=kernel.org=helgaas@srs-se1.protection.inumbo.net>)
 id 1t1wfA-0004ZP-6q
 for xen-devel@lists.xenproject.org; Fri, 18 Oct 2024 23:45:44 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 15654099-8dab-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 01:45:41 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 750C7A43E29;
 Fri, 18 Oct 2024 23:45:30 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C6996C4CEC3;
 Fri, 18 Oct 2024 23:45:38 +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: 15654099-8dab-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729295139;
	bh=lFZnjV8RlVPG6PrVOgGg9hgB2Ob3uus6nsFdYXxg0xQ=;
	h=Date:From:To:Cc:Subject:In-Reply-To:From;
	b=evtxctpRyaoTSOigJT5cFz8FlzinZ4CiqIbWurTmKrRfQkXyPwANmEAW+wstE4BGx
	 TIN4rKkxFq5bRqf1RYbu8X5+GaKP8PCUkJCSI7XdnVuPyggqqCKegX2g9xYIK1RWWo
	 +b0kx6X/7xFOXGXdvbNco/L2DpCtD2beey4jXYhDZqcjQ6tHOX7X1U5wq38aQ9bZXw
	 j4FYzQwUpZeifU9a96tVVuahIFbm86NthAcccPlNw2GRZ0nybq3IyuM42izSzAVkj8
	 T19Q5jWyld7A4Ht/0K1UYHtBeST5LII4RfUrhhhbZUkSRif8tr3x1ApUVAUGVSTvJT
	 Ma/8xyjaHk33A==
Date: Fri, 18 Oct 2024 18:45:37 -0500
From: Bjorn Helgaas <helgaas@kernel.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Heiner Kallweit <hkallweit1@gmail.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?utf-8?B?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
Message-ID: <20241018234537.GA770692@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f871a77fb51e54332886882e8ecb1a4a5f5d296b.camel@redhat.com>

On Wed, Oct 16, 2024 at 10:53:16AM +0200, Philipp Stanner wrote:
> On Wed, 2024-10-16 at 10:43 +0200, Heiner Kallweit wrote:
> > On 16.10.2024 08:57, Philipp Stanner wrote:
> > > On Tue, 2024-10-15 at 13:53 -0600, Alex Williamson wrote:
> > > > On Tue, 15 Oct 2024 20:51:23 +0200
> > > > Philipp Stanner <pstanner@redhat.com> wrote:
> > > > 
> > > > > pci_intx() and its managed counterpart pcim_intx() only exist
> > > > > for
> > > > > older
> > > > > drivers which have not been ported yet for various reasons.
> > > > > Future
> > > > > drivers should preferably use pci_alloc_irq_vectors().
> > > > > 
> > > > > Mark pci_intx() and pcim_intx() as deprecated and encourage
> > > > > usage
> > > > > of
> > > > > pci_alloc_irq_vectors() in its place.
> > > > 
> > > > I don't really understand this.  As we've discussed previously
> > > > pci_alloc_irq_vectors() is, unsurprisingly, for allocating PCI
> > > > IRQ
> > > > vectors while pci_intx() is for manipulating the INTx disable bit
> > > > on
> > > > PCI devices.  The latter is a generic mechanism for preventing
> > > > PCI
> > > > devices from generating INTx, regardless of whether there's a
> > > > vector
> > > > allocated for it.  How does the former replace the latter and why
> > > > do
> > > > we
> > > > feel the need to deprecate the latter?
> > > > 
> > > > It feels like this fits some narrow narrative and makes all users
> > > > of
> > > > these now deprecated functions second class citizens.  Why?  At
> > > > it's
> > > > root these are simply providing mask and set or mask and clear
> > > > register
> > > > bit operations.  Thanks,
> > > 
> > > I got the feeling from the RFC discussion that that was basically
> > > the
> > > consensus: people should use pci_alloc_irq_vectors(). Or did I
> > > misunderstand Andy and Heiner?
> > > 
> > I think there are two different use cases for pci_intx().
> > At first there are several drivers where the direct usage of
> > pci_intx()
> > can be eliminated by switching to the pci_alloc_irq_vectors() API.
> > 
> > And then there's usage of pci_intx() in
> > drivers/vfio/pci/vfio_pci_intrs.c
> > drivers/xen/xen-pciback/conf_space_header.c
> > There we have to keep the (AFAICS unmanaged) pci_intx() calls.
> 
> There is also the usage within PCI itself, in MSI. Patch №8 touches
> that.
> 
> It's why I think this series should land before anyone should port
> direct pci_intx() users to the irq vectors function, because the latter
> also uses pci_intx() and its own devres, which sounds explosive to me.
>
> > > I'm perfectly happy with dropping this patch and continue offering
> > > pci{m}_intx() to users, since after removing that hybrid hazzard I
> > > don't see any harm in them anymore.

So is the bottom line that we should drop *this* patch and apply the
rest of the series?

> > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > > ---
> > > > >  drivers/pci/devres.c | 5 ++++-
> > > > >  drivers/pci/pci.c    | 5 ++++-
> > > > >  2 files changed, 8 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
> > > > > index 6f8f712fe34e..4c76fc063104 100644
> > > > > --- a/drivers/pci/devres.c
> > > > > +++ b/drivers/pci/devres.c
> > > > > @@ -435,7 +435,7 @@ static struct pcim_intx_devres
> > > > > *get_or_create_intx_devres(struct device *dev)
> > > > >  }
> > > > >  
> > > > >  /**
> > > > > - * pcim_intx - managed pci_intx()
> > > > > + * pcim_intx - managed pci_intx() (DEPRECATED)
> > > > >   * @pdev: the PCI device to operate on
> > > > >   * @enable: boolean: whether to enable or disable PCI INTx
> > > > >   *
> > > > > @@ -443,6 +443,9 @@ static struct pcim_intx_devres
> > > > > *get_or_create_intx_devres(struct device *dev)
> > > > >   *
> > > > >   * Enable/disable PCI INTx for device @pdev.
> > > > >   * Restore the original state on driver detach.
> > > > > + *
> > > > > + * This function is DEPRECATED. Do not use it in new code.
> > > > > + * Use pci_alloc_irq_vectors() instead (there is no managed
> > > > > version, currently).
> > > > >   */
> > > > >  int pcim_intx(struct pci_dev *pdev, int enable)
> > > > >  {
> > > > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> > > > > index 7ce1d0e3a1d5..dc69e23b8982 100644
> > > > > --- a/drivers/pci/pci.c
> > > > > +++ b/drivers/pci/pci.c
> > > > > @@ -4477,11 +4477,14 @@ void pci_disable_parity(struct pci_dev
> > > > > *dev)
> > > > >  }
> > > > >  
> > > > >  /**
> > > > > - * pci_intx - enables/disables PCI INTx for device dev
> > > > > + * pci_intx - enables/disables PCI INTx for device dev
> > > > > (DEPRECATED)
> > > > >   * @pdev: the PCI device to operate on
> > > > >   * @enable: boolean: whether to enable or disable PCI INTx
> > > > >   *
> > > > >   * Enables/disables PCI INTx for device @pdev
> > > > > + *
> > > > > + * This function is DEPRECATED. Do not use it in new code.
> > > > > + * Use pci_alloc_irq_vectors() instead.
> > > > >   */
> > > > >  void pci_intx(struct pci_dev *pdev, int enable)
> > > > >  {
> > > > 
> > > 
> > > 
> > 
> 


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 02:00:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 02:00:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822298.1236289 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1ylR-0003cT-Qs; Sat, 19 Oct 2024 02:00:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822298.1236289; Sat, 19 Oct 2024 02: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 1t1ylR-0003cM-OH; Sat, 19 Oct 2024 02:00:21 +0000
Received: by outflank-mailman (input) for mailman id 822298;
 Sat, 19 Oct 2024 02:00: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 1t1ylR-0003cC-81; Sat, 19 Oct 2024 02:00: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 1t1ylR-0001yo-67; Sat, 19 Oct 2024 02:00: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 1t1ylQ-0004oh-W5; Sat, 19 Oct 2024 02:00:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1ylQ-0001Zy-Vb; Sat, 19 Oct 2024 02:00: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=8IFuOm8CcHzYFqvaIIbp0nmkKS3Nlyku8dIoP8bRLDY=; b=QsFO6b9XUaW1V98n+LDDAeoSUN
	fCDMTUyawP7zoQVok/WRW3fr3BaX8ZkAhK0d8hhdlHdz/teaVotxdVk1xrtqEgkv5gJBomQNc9Aoy
	WEO2k6SHU4xbPsS4JMEORPIEokPq/+EllihNWHbA+FGl4cVrBwHXAf8INP09pMqYFEfY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188274-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188274: 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=e9f227685e7204cb2293576ee5b745b828cb3cd7
X-Osstest-Versions-That:
    xen=4c21b6affb4c5a3afe22cbc144362091de063366
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 02:00:20 +0000

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

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                  e9f227685e7204cb2293576ee5b745b828cb3cd7
baseline version:
 xen                  4c21b6affb4c5a3afe22cbc144362091de063366

Last test of basis   188244  2024-10-18 11:00:25 Z    0 days
Testing same since   188274  2024-10-18 23:00:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrei Cherechesu <andrei.cherechesu@nxp.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Julien Grall <jgrall@amazon.com>
  Peter van der Perk <peter.vander.perk@nxp.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
   4c21b6affb..e9f227685e  e9f227685e7204cb2293576ee5b745b828cb3cd7 -> smoke


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 02:58:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 02:58:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822309.1236299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1zfR-00089k-Uj; Sat, 19 Oct 2024 02:58:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822309.1236299; Sat, 19 Oct 2024 02:58: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 1t1zfR-00089d-RE; Sat, 19 Oct 2024 02:58:13 +0000
Received: by outflank-mailman (input) for mailman id 822309;
 Sat, 19 Oct 2024 02:58:12 +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 1t1zfQ-00089T-Md; Sat, 19 Oct 2024 02:58:12 +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 1t1zfQ-0002yM-Hx; Sat, 19 Oct 2024 02:58:12 +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 1t1zfQ-000738-28; Sat, 19 Oct 2024 02:58:12 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1zfQ-00013n-1V; Sat, 19 Oct 2024 02:58: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=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=pElW0avrhJDuCd3+endJg1x6M5o4DIvkMf1gkKDrdec=; b=uRz6kdwho4e42rCxpYo1FQAsxK
	txWWbCEQewCvVSEf45FyqL5KSBLjslWp9GROfYouE2vc/Jewz2WyoSoUzuDl6vsqVYwySlBslZwsu
	DjUpFdF2ervTotiFzubTJrvdcGQ3nHjk9JGcp6ci5edErMSiecrsYY4BKfJx9BqyzJ/Q=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188275-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188275: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=8f84eb0e761992dc1218f63ee53a54ac0c65630f
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 02:58:12 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 8f84eb0e761992dc1218f63ee53a54ac0c65630f
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    1 days
Failing since        188156  2024-10-17 09:14:11 Z    1 days   10 attempts
Testing same since   188268  2024-10-18 18:13:31 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Mike Beaton <mjsbeaton@gmail.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 8f84eb0e761992dc1218f63ee53a54ac0c65630f
Author: Mike Beaton <mjsbeaton@gmail.com>
Date:   Sun Sep 29 11:40:44 2024 +0100

    BaseTools: Remove -Wno-unneeded-internal-declaration from CLANGDWARF
    
    Subsequent to updating the 'null' DEBUG macro to explicitly
    discard its expression, it is possible to remove this warning
    suppression from CLANGDWARF and still successfully compile
    its RELEASE build.
    
    Note that CLANGPDB did and does not have this warning suppressed,
    and so before updating the 'null' DEBUG macro, CLANGPDB RELEASE
    was not building successfully in recent versions of clang,
    but was stopping with the error:
    
    .../edk2/OvmfPkg/VirtioSerialDxe/VirtioSerial.c:28:22: error:
    variable &apos;EventNames&apos; is not needed and will not be
    emitted [-Werror,-Wunneeded-internal-declaration]
    STATIC CONST CHAR8  *EventNames[] = {
                         ^
    
    This change makes the two CLANG variants match with respect
    to this warning, and leaves the warning enabled which is
    considered a benefit as it has the potential to catch real
    coding errors
    
    Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>

commit ae83c6b7fd83a5906e016a32027c1bcd792a624e
Author: Mike Beaton <mjsbeaton@gmail.com>
Date:   Sat Sep 28 02:43:15 2024 +0100

    MdePkg: Fix null macros for XCODE5 and CLANG
    
    When building OvmfPkg in RELEASE mode in the XCODE5 toolchain, the
    ASSERT_EFI_ERROR change prevents this error:
    
    .../MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c:141:15:
    error: variable 'Status' set but not used [-Werror,-Wunused-but-set-variable]
      EFI_STATUS  Status;
                  ^
    
    which is currently stopping the build.
    
    When building in RELEASE mode in the CLANGPDB toolchain,the DEBUG macro
    change prevents this error:
    
    .../edk2/OvmfPkg/VirtioSerialDxe/VirtioSerial.c:28:22: error:
    variable &apos;EventNames&apos; is not needed and will not be
    emitted [-Werror,-Wunneeded-internal-declaration]
    STATIC CONST CHAR8  *EventNames[] = {
                         ^
    
    which is currently stopping the build.
    
    CLANGDWARF produces the same error as CLANGPDB above, if
    -Wno-unneeded-internal-declaration is removed from its build flags.
    With the null DEBUG macro change, this warning suppression
    can be removed from CLANGDWARF, which is considered a benefit
    as it has the potential to catch real coding errors. This is
    done in a subsequent commit.
    
    This commit has the desirable side effect that we no longer require
    (and cannot use) explicit `#ifndef MDEPKG_NDEBUG` around items only
    used in DEBUG macros. This requires the ArmPkg change made here to
    be in the same commit as the MdePkg changes.
    
    Note: In common with existing macros in EDK II, including the pre-existing
    and unchanged DEBUG/NOOPT versions of the macros which are modified here,
    we use the standard approach of adding `do { ... } while (FALSE)` wrapping
    to ensure that the macros behave correctly with surrounding code
    (e.g. require a following ';' and do not combine in unexpected ways with
    nearby conditionals).
    
    Continuous-integration-options: PatchCheck.ignore-multi-package
    Co-authored-by: Mikhail Krichanov <krichanov@ispras.ru>
    Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>

commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 03:18:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 03:18:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822320.1236309 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t1zzF-0004yD-Hf; Sat, 19 Oct 2024 03:18:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822320.1236309; Sat, 19 Oct 2024 03:18: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 1t1zzF-0004y6-EC; Sat, 19 Oct 2024 03:18:41 +0000
Received: by outflank-mailman (input) for mailman id 822320;
 Sat, 19 Oct 2024 03: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 1t1zzE-0004xv-LR; Sat, 19 Oct 2024 03: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 1t1zzE-0003LH-H7; Sat, 19 Oct 2024 03: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 1t1zzE-0007ys-0o; Sat, 19 Oct 2024 03:18:40 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t1zzE-0007mC-0O; Sat, 19 Oct 2024 03:18: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=Im+ej3U68LsSeaR8d+n8Kz0z5iJGCS2mHh+w7gVndws=; b=vpSveZbaDCLdQb3ktMX/ZdGWZo
	ZBH2DoCynzHdnAf9mf1pslUXKzkQV2ZIMhGNBtOfxqclYE/OZstGg74yaoGSkqmnJFDDVYtodX3G+
	jsUKDYclWlP5v19292azbq1MalgRU4YuSH8BonDcCwyNQkzGocyNYE6QzbMetsR4IGTU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188248-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188248: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-pvshim:guest-start:fail:regression
    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-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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: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-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-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-amd64-amd64-libvirt-qcow2:migrate-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-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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
X-Osstest-Versions-This:
    xen=a285d2ac2e524c808091062c67142cf5924b56f6
X-Osstest-Versions-That:
    xen=47990ecef286606794d607d4ca8703d71c98d659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 03:18:40 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-pvshim   14 guest-start              fail REGR. vs. 188153

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt   16 saverestore-support-check fail blocked in 188153
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188153
 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-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          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-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-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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                  a285d2ac2e524c808091062c67142cf5924b56f6
baseline version:
 xen                  47990ecef286606794d607d4ca8703d71c98d659

Last test of basis   188153  2024-10-17 07:28:21 Z    1 days
Failing since        188193  2024-10-17 18:11:18 Z    1 days    2 attempts
Testing same since   188248  2024-10-18 11:35:04 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Christopher Clark <christopher.w.clark@gmail.com>
  Daniel P. Smith <dpsmith@apertussolutions.com>
  Jan Beulich <jbeulich@suse.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Michal Orzel <michal.orzel@amd.com>
  Stewart Hildebrand <stewart.hildebrand@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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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                                   fail    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 a285d2ac2e524c808091062c67142cf5924b56f6
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:44 2024 -0400

    x86/boot: move mmap info to boot info
    
    Transition the memory map info to be held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 29aaded97dacd3120842aeeafa91a4a8e6d45180
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:43 2024 -0400

    x86/boot: move cmdline to boot info
    
    Transition Xen's command line to being held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit b438c5fbf4c02145f6ecc8642290d46bf1957388
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:42 2024 -0400

    x86/boot: move boot loader name to boot info
    
    Transition the incoming boot loader name to be held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 038826b61e852469b1a54690dba6d142aceb1f20
Author: Christopher Clark <christopher.w.clark@gmail.com>
Date:   Thu Oct 17 13:02:41 2024 -0400

    x86/boot: move x86 boot module counting into a new boot_info struct
    
    An initial step towards a non-multiboot internal representation of boot
    modules for common code, starting with x86 setup and converting the fields
    that are accessed for the startup calculations.
    
    Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
    structure initially containing a count of the number of boot modules.
    
    No functional change intended.
    
    Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 081683ea578da56dd20b9dc22a64d03c893b47ba
Author: Stewart Hildebrand <stewart.hildebrand@amd.com>
Date:   Fri Oct 11 17:19:56 2024 -0400

    xen/arm: dom0less: cope with missing /gic phandle
    
    If a partial DT has a /gic node, but no references to it, dtc may omit
    the phandle property. With the phandle property missing,
    fdt_get_phandle() returns 0, leading Xen to generate a malformed domU
    dtb due to invalid interrupt-parent phandle references. 0 is an invalid
    phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC.
    
    Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

commit 1e81d2df4f48f37d2086bc75199c75ca93cace92
Author: Michal Orzel <michal.orzel@amd.com>
Date:   Thu Oct 10 12:57:46 2024 +0200

    device-tree: Move dt-overlay.c to common/device-tree/
    
    The code is DT specific and as such should be placed under common
    directory for DT related files. Update MAINTAINERS file accordingly
    and drop the line with a path from a top-level comment in dt-overlay.c.
    It serves no purpose and requires being updated on every code movement.
    
    Signed-off-by: Michal Orzel <michal.orzel@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

commit b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:51 2024 +0200

    x86emul/test: drop Xeon Phi S/G prefetch special case
    
    Another leftover from the dropping of Xeon Phi support.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 09d22fe15cb11254d06413d15fd578093d7fe062
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:31 2024 +0200

    x86emul/test: correct loop body indentation in evex-disp8.c:test_one()
    
    For some reason I entirely consistently screwed these up.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

commit 330d4e62508defa708b55f1b612f42b6a2e2842b
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Thu Oct 17 14:13:50 2024 +0200

    docs: update documentation of reboot param
    
    Reflect changed default mode, and fix formatting of `efi` value.
    
    Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 03:23:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 03:23:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822331.1236319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t204D-0006X9-96; Sat, 19 Oct 2024 03:23:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822331.1236319; Sat, 19 Oct 2024 03:23: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 1t204D-0006X2-63; Sat, 19 Oct 2024 03:23:49 +0000
Received: by outflank-mailman (input) for mailman id 822331;
 Sat, 19 Oct 2024 03:23: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=VpTG=RP=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t204B-0006Ww-Da
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 03:23:47 +0000
Received: from fout-a8-smtp.messagingengine.com
 (fout-a8-smtp.messagingengine.com [103.168.172.151])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8af16639-8dc9-11ef-a0be-8be0dac302b0;
 Sat, 19 Oct 2024 05:23:45 +0200 (CEST)
Received: from phl-compute-12.internal (phl-compute-12.phl.internal
 [10.202.2.52])
 by mailfout.phl.internal (Postfix) with ESMTP id 5EB39138025C;
 Fri, 18 Oct 2024 23:23:42 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-12.internal (MEProxy); Fri, 18 Oct 2024 23:23:42 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 18 Oct 2024 23:23:40 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8af16639-8dc9-11ef-a0be-8be0dac302b0
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=1729308222;
	 x=1729394622; bh=62U24OVI9ASqF2RIn6vHVkVMeUufpkaeCYq69ukBmv8=; b=
	i/meU/GlHsLVxubQLaYIEuz8TkncgJOvgly2mIlXBRqWozw2DGoxIDEG2J8HvUk9
	hj7mPL2Av/S/XOUYtjSB1AtqqFon5DM3IkRjm1XIZ9MjwRZYzwUpKCrPUPaypx6d
	KxGkL/QHZEE4/VpjX6GuDysQR7v64xiLyVwye/OPM3FA5WU0VdYoHELJf/1c+/Vv
	D23IUo45J0kGWlBbalNtHcrh89tzArHYnpnuP3+VIhv4alupfP3z/C3GaxUxZmm/
	I+sPu1PNaMLCOc9bbZU/WynFFgpBAHr5VoKod3fCXPaSknB2/OaC11WmsLMrHx85
	eEhmVgXokX5wI+FFW3FRMw==
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=1729308222; x=1729394622; bh=62U24OVI9ASqF2RIn6vHVkVMeUuf
	pkaeCYq69ukBmv8=; b=QdpYHD9Xj26PZO6HBFMyHy/qTwso8JZAVcyO2RRxmeUv
	MLYpUMJPyL3HmqYtvD5NlkzqF54ToAkKkfs9PWVlsoRdO0d4hI2nt5anciNf5dXF
	VELatzwipxYEl/ZOdKRSAVAyEC3eJbuhD7biBbXsKWQeorQL5DKLTmAxKYKy+vU+
	Z826PqEIBd4pZq0LG8BWSUETOZkGVzeQpjQWKSQDDXike4zxi65ycD8fz8VrM5La
	QbyOBn9blwwknLL3GFGnzoJPXhPa8cwwLEVo4UV70Jfq0eVWnX59Tam4FYc37jL/
	H3vcVj/7/GDQALAbujebG1i9BoJWkNSCNU5Mo4efYQ==
X-ME-Sender: <xms:PSYTZ8-QzfboB1SmVg8iz6w2KqXqGp3bQo1b_ba7149z6iXqZeE7SA>
    <xme:PSYTZ0u-ag5BI-p5Alb3gL2ZsMDCT0jqBhFyhh0a0QziRoSmKfoOFvGuQIY3hAR5W
    qep4MkZtMji3g>
X-ME-Received: <xmr:PSYTZyDA7nhtJgGUVU4NZ1TsWOmOsraY3hIMurfy_D4FBYzUBkZas4wlOB-aO3mn3YM6eN5HWPmQgJ4QMIW8ZL8EFY4LfwDpdw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdehgedgjeduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepiedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprhhoghgv
    rhdrphgruhestghithhrihigrdgtohhmpdhrtghpthhtohepgigvnhdquggvvhgvlheslh
    hishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtohepjhgsvghulhhitghh
    sehsuhhsvgdrtghomhdprhgtphhtthhopegrnhgurhgvfidrtghoohhpvghrfeestghith
    hrihigrdgtohhmpdhrtghpthhtohepgigvnhhprhhojhgvtghtseihmhihrdgsvgdprhgt
    phhtthhopegufihmfiesrghmrgiiohhnrdgtohdruhhk
X-ME-Proxy: <xmx:PSYTZ8f5pyAkbApOZ6Z4mvOvNtTsDkhmlehwjzjCuDyh0WmPl3bp8A>
    <xmx:PSYTZxPopeP1xanPxl9WGvSmOAUgieo0L67OR6Cy7BCgFevWVyBkOQ>
    <xmx:PSYTZ2l-j-gXUZf7uAz2Cm6tOEuZIehhmhKXe_pmB4121HuSiNVW-w>
    <xmx:PSYTZzu6FPrzTecFJtDb21T0nVUNiXu28S3CGNKmgqlikI0acmwRZQ>
    <xmx:PiYTZ03wN-AqzKo6l1FsFOeKj4YhxgBQE4KoftVTdxZr93lNQNKXWxSk>
Feedback-ID: i1568416f:Fastmail
Date: Sat, 19 Oct 2024 05:23:38 +0200
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, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Message-ID: <ZxMmOjD7oHuAE7Vb@mail-itl>
References: <20241018080813.45759-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="+AprsNGlh2aM16SR"
Content-Disposition: inline
In-Reply-To: <20241018080813.45759-1-roger.pau@citrix.com>


--+AprsNGlh2aM16SR
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Sat, 19 Oct 2024 05:23:38 +0200
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, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping

On Fri, Oct 18, 2024 at 10:08:13AM +0200, Roger Pau Monne wrote:
> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE=
 is
> repurposed to contain part of the offset into the remapping table.  Previ=
ous to
> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> table would match the vector.  Such logic was mandatory for end of interr=
upt to
> work, since the vector field (even when not containing a vector) is used =
by the
> IO-APIC to find for which pin the EOI must be performed.
>=20
> Introduce a table to store the EOI handlers when using interrupt remappin=
g, so
> that the IO-APIC driver can translate pins into EOI handlers without havi=
ng to
> read the IO-APIC RTE entry.  Note that to simplify the logic such table i=
s used
> unconditionally when interrupt remapping is enabled, even if strictly it =
would
> only be required for AMD-Vi.
>=20
> Reported-by: Willi Junga <xenproject@ymy.be>
> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a=
 static mapping')
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>

I can confirm it fixes touchpad issue on Framework 13 AMD,
it works without ioapic_ack=3Dnew now, thanks!
Tested-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

> ---
>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>=20
> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> index e40d2f7dbd75..8856eb29d275 100644
> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> =20
>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> =20
> +/*
> + * Store the EOI handle when using interrupt remapping.
> + *
> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry rem=
apped
> + * format repurposes the vector field to store the offset into the Inter=
rupt
> + * Remap table.  This causes directed EOI to longer work, as the CPU vec=
tor no
> + * longer matches the contents of the RTE vector field.  Add a translati=
on
> + * table so that directed EOI uses the value in the RTE vector field when
> + * interrupt remapping is enabled.
> + *
> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vecto=
r field
> + * when using the remapped format, but use the translation table uniform=
ly in
> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> + */
> +static unsigned int **apic_pin_eoi;
> +
>  static void share_vector_maps(unsigned int src, unsigned int dst)
>  {
>      unsigned int pin;
> @@ -273,6 +289,13 @@ void __ioapic_write_entry(
>      {
>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> +        /*
> +         * Might be called before apic_pin_eoi is allocated.  Entry will=
 be
> +         * updated once the array is allocated and there's an EOI or wri=
te
> +         * against the pin.
> +         */
> +        if ( apic_pin_eoi )
> +            apic_pin_eoi[apic][pin] =3D e.vector;
>      }
>      else
>          iommu_update_ire_from_apic(apic, pin, e.raw);
> @@ -298,9 +321,17 @@ static void __io_apic_eoi(unsigned int apic, unsigne=
d int vector, unsigned int p
>      /* Prefer the use of the EOI register if available */
>      if ( ioapic_has_eoi_reg(apic) )
>      {
> +        if ( apic_pin_eoi )
> +            vector =3D apic_pin_eoi[apic][pin];
> +
>          /* If vector is unknown, read it from the IO-APIC */
>          if ( vector =3D=3D IRQ_VECTOR_UNASSIGNED )
> +        {
>              vector =3D __ioapic_read_entry(apic, pin, true).vector;
> +            if ( apic_pin_eoi )
> +                /* Update cached value so further EOI don't need to fetc=
h it. */
> +                apic_pin_eoi[apic][pin] =3D vector;
> +        }
> =20
>          *(IO_APIC_BASE(apic)+16) =3D vector;
>      }
> @@ -1022,7 +1053,23 @@ static void __init setup_IO_APIC_irqs(void)
> =20
>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
> =20
> +    if ( iommu_intremap )
> +    {
> +        apic_pin_eoi =3D xzalloc_array(typeof(*apic_pin_eoi), nr_ioapics=
);
> +        BUG_ON(!apic_pin_eoi);
> +    }
> +
>      for (apic =3D 0; apic < nr_ioapics; apic++) {
> +        if ( iommu_intremap )
> +        {
> +            apic_pin_eoi[apic] =3D xmalloc_array(typeof(**apic_pin_eoi),
> +                                               nr_ioapic_entries[apic]);
> +            BUG_ON(!apic_pin_eoi[apic]);
> +
> +            for ( pin =3D 0; pin < nr_ioapic_entries[apic]; pin++ )
> +                apic_pin_eoi[apic][pin] =3D IRQ_VECTOR_UNASSIGNED;
> +        }
> +
>          for (pin =3D 0; pin < nr_ioapic_entries[apic]; pin++) {
>              /*
>               * add it to the IO-APIC irq-routing table:
> --=20
> 2.46.0
>=20
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcTJjoACgkQ24/THMrX
1yzaFwf8C+J4vgJ4lEOMFFSgir20FGRMxKH616PLIqdhzrMsDs+21pd9A+YbAyuL
0zf3OipSRjZhdl73klQuEuQGvrl81r5jrk0Pr6WcM29rAdufEs1zcjQVgYneRExH
2jcnGEyGih9JThhxSgq69lGir/q4MCCZdujYULKQ5QaYgKA9EVrGX4SBf0o39JM0
eFbIXObt7OeZs8CHD2ihfiPsLOF9oUd/2U6WTGIRAnAjUrzLqajNty/6TzyPtxHS
SM9pjWBQIa72Z56a87Ry0vuN4OPSF5tjUAqHzxqzS9xfCLk010ZATyl7yUsiNOb3
oZrkQhNh3XjJO3ZwJXXnjqasw/52fA==
=dFRW
-----END PGP SIGNATURE-----

--+AprsNGlh2aM16SR--


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 05:11:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 05:11:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822347.1236343 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t21kK-0007WS-Pf; Sat, 19 Oct 2024 05:11:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822347.1236343; Sat, 19 Oct 2024 05:11: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 1t21kK-0007WL-Mw; Sat, 19 Oct 2024 05:11:24 +0000
Received: by outflank-mailman (input) for mailman id 822347;
 Sat, 19 Oct 2024 05:11: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=36bq=RP=outlook.com=mhklinux@srs-se1.protection.inumbo.net>)
 id 1t21kJ-0007WF-PK
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 05:11:23 +0000
Received: from SJ2PR03CU002.outbound.protection.outlook.com
 (mail-westusazolkn190130001.outbound.protection.outlook.com
 [2a01:111:f403:d000::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 93e7b601-8dd8-11ef-a0be-8be0dac302b0;
 Sat, 19 Oct 2024 07:11:22 +0200 (CEST)
Received: from SN6PR02MB4157.namprd02.prod.outlook.com (2603:10b6:805:33::23)
 by CY8PR02MB9425.namprd02.prod.outlook.com (2603:10b6:930:73::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Sat, 19 Oct
 2024 05:11:16 +0000
Received: from SN6PR02MB4157.namprd02.prod.outlook.com
 ([fe80::cedd:1e64:8f61:b9df]) by SN6PR02MB4157.namprd02.prod.outlook.com
 ([fe80::cedd:1e64:8f61:b9df%3]) with mapi id 15.20.8069.016; Sat, 19 Oct 2024
 05:11: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: 93e7b601-8dd8-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Yag//04gAqOpfmxdKVj/HTqSZDrv96reG9dnjPnmbl8DlYGkZ4wNR8PaU+wmk6rTHaUwXuv97mUVEQGS5nHRIzfgr0XqeaslAoJlDq0w7FTdGDZ3m77SV8kW/BDdnpBEQrD1v0+qsPRHT6pKxa69OgoruD7XyLVvREMJ2AaiIrpplko3c9QuFjAEcMwDd9g6L4DrMCXadvLD+KX6ldvGeKWLZv1IQIjES0+HuzqZATdnX0or012Eg37XeOAbodwEL/ff8NevherWXsP+a2A0KJgPPi7TZ/CmRSxNCcDUMP0GH25+A6trd8+kTXM10GItxTxQlNEsH44tPdAWb7P0BA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=llm5civONHWGtFjuGCu8jsP/ljZTLecaUgeevi0V1eM=;
 b=wbze2gSglj1UokBZ04wrTa3y1HN6rLXPaQKaMlRFf1UkWOfUdtwcizzXia47BNZ6Q2NugzsWcnkCqBA0eiDCk1anpQfF4gf1R4a3nQCstYHi75UuzNRp1OZ10y5rAfXqvWWSd4ap4DBbFJkFz2YKAFcFVcln7AtLImzSFPmi/QuyXn4ohqj1tEj1CdQa6VPG9FfRKSivE0lvWuh6xHBFGSBowdIcTcKdITmOFvRsNAw+1JRG5skP7WVazmC8LOREyAzK5qiDTgUTy8Bz217dAbTvdPXu+6kCEHMrdhFDStonUN4rdLQYpsi5ciUAOGsleu9RgN0rJPJkGrcg8Zfevg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=llm5civONHWGtFjuGCu8jsP/ljZTLecaUgeevi0V1eM=;
 b=cNdaZ/U60VFIAuDMWFbWg0DlGvA7PCjBzM6GDiVJFd6zm5k+WiSKrQTKWIELSvz41sq73C770pwH00Xg8tYbQdtDuJ8wO0DzpxBde5nruYzUbg0VUAOPQaJRMC6m8lRvU9pDNWdrh/02NWpbcx2dlOE7aY+ZLl3WBhaus8lbiFXLpNbM85w9lCRMTcQOlm7TScr2EYF1qVNx4DZOplLVRhC0XWBp18BaVTWW3L52rsVe1K5HXTYYRuj29N7IevELvnpcKV8a784pxS980eWY917kTCsBAM6s31d7uYo+sBMJd4OOyev7Ao2CohDsZPgkN2f489b4Glw/o9hF6pnnAQ==
From: Michael Kelley <mhklinux@outlook.com>
To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>, Thomas Gleixner
	<tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, Borislav Petkov
	<bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, "x86@kernel.org"
	<x86@kernel.org>
CC: "K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang
	<haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui
	<decui@microsoft.com>, "H. Peter Anvin" <hpa@zytor.com>, Paolo Bonzini
	<pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross
	<jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, Gaosheng Cui
	<cuigaosheng1@huawei.com>, Michael Roth <michael.roth@amd.com>, Tom Lendacky
	<thomas.lendacky@amd.com>, Ashish Kalra <ashish.kalra@amd.com>, Kai Huang
	<kai.huang@intel.com>, Andi Kleen <ak@linux.intel.com>, Sean Christopherson
	<seanjc@google.com>, Xiaoyao Li <xiaoyao.li@intel.com>,
	"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, Dave Hansen <dave.hansen@intel.com>
Subject: RE: [PATCH] x86/mtrr: Rename mtrr_overwrite_state() to
 guest_force_mtrr_state()
Thread-Topic: [PATCH] x86/mtrr: Rename mtrr_overwrite_state() to
 guest_force_mtrr_state()
Thread-Index: AQHbH7lXKN74uyRaU0+LX19wrvgpfbKNiJAw
Date: Sat, 19 Oct 2024 05:11:16 +0000
Message-ID:
 <SN6PR02MB4157C91EE70F4EF4B6EDDE46D4412@SN6PR02MB4157.namprd02.prod.outlook.com>
References: <20241015095818.357915-1-kirill.shutemov@linux.intel.com>
 <20241016105048.757081-1-kirill.shutemov@linux.intel.com>
In-Reply-To: <20241016105048.757081-1-kirill.shutemov@linux.intel.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SN6PR02MB4157:EE_|CY8PR02MB9425:EE_
x-ms-office365-filtering-correlation-id: af00db32-885f-4cac-75fb-08dceffc7573
x-microsoft-antispam:
 BCL:0;ARA:14566002|15080799006|8060799006|461199028|8062599003|19110799003|102099032|440099028|3412199025;
x-microsoft-antispam-message-info:
 lB7isbQS0VOlEiWsmJuxnBKWBpsIbjc5N6hU3ZhsWX/4ObibUllBxSvWodpFVsjYsYGXXN/xKnxGwPkSyQ9ASfjrmI7qOs0VyRHtX9S5mbQ/QCOsh+GpTj1DkzbUxQEqWCAGXCCg33XqW9Bu9iOL2/jxUTmeZgNsZxJ+D8zZNQAyOfJlgcg6+q4gyOgDig6tQ7tIleXweyWIKY3xV0cViUW0QrihB4zvRj/UuQsSh7UVbAv2trxv8ZbWepkoUp5wfQVL8URkhuHAj9Cf+2NrTI0zlFg8qTJT0HjpnLWIHFxme3fEmTHpaRvzJf594nkNPJMTx9VyRmLHYOyNwENgx+OPnvm6z/j7aPYARfilKdXb3HRiw/H8yvP72Yb5hCdPPgnXbDOlV2pgV8xe6XJWxCsMoQId8ZWrTt9PZHhW4IwD4cU/qXePHYGJLaN7PBOqstzlPJTACDwSRxb7f9+oCv6fb807+gASZxwOvLxeOg5oABDnx3G5RL9AoB5AfKN1/V+9PYulS5LBrjntAzq8cNvRIEVly2BwtnBSlKIkoV7+VySScWCeyER4d1ZYsigFBdTuKtPtOMzH/HNDRCO3+xR/9zbZjUkLxw2kUel70Hh+UODLZZs2JzvxcXREJ2ix/ExAfG8FkxsEGIKrM+Ahxck+EJ+49swn+Bviw2qZBdGTQ/ov/HIT8ys1LoE84/1NaYxFRX6RheTw3ediHrjKOA==
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?WuAQ5V+pUZJdlWkPr1YxbICXRIQwjULl7wH9bxdcIieJW7V1d4L6wj86l2ub?=
 =?us-ascii?Q?sr4XDvNfvFRss7hcmbrKqw9ImTAmzXkYVW+bOUBc8ReFggHceYagWZ2szZBO?=
 =?us-ascii?Q?ryzdY0Ap1fYniDQyuXQ0WfZ2108Em3lVmr+sWxBGL1u4l18zdi4feDjQL81z?=
 =?us-ascii?Q?Cv7TEIqPIhAQbMYeO7BDkAKq1mdCv9R+H1Ym94CYpZgGXlpe5ZPXhvGnKyCX?=
 =?us-ascii?Q?HA1Vzc8kdn8Umn4txDVLsXlmxUKju5B9CNiVE1sKn+SwCWCCwnCxJnhgMRVd?=
 =?us-ascii?Q?Cebo5sZA3/ge7ou99arQAvzWFrP3fW8AmGx2Ue12xDwWXpINmNN9XxHbVC/Y?=
 =?us-ascii?Q?tq2GS5RV48plG29KkBVyImZnqGofCIOiVUIhXPZWXcg5Yk1kxOwbf6I0wFVv?=
 =?us-ascii?Q?6wDDIOmj8tdIAwMRi1opAkSoqydGbkC4CjOaK0VeBUHCYmzvKhcV+eLia3Pj?=
 =?us-ascii?Q?X8Z9l6/jIwpWYCe41zvj3mBC1xsm9Xdddg2hqKRcmsIlyrdVKDb89k/iZreC?=
 =?us-ascii?Q?ZuDL8gUBLITk/uWFJmWuJ3h7eDIhTzLWzAJbrbVRN+ef8GUx3/Skdr75uQYp?=
 =?us-ascii?Q?orqVwwrZrMftQ1WalrSI43VZqdbT+aWGfrU8Bz0BrOgihWbu3AW/lszkOUAG?=
 =?us-ascii?Q?v2mNdHtg5dZJC8yE5EerxQCRB96YbK6BO0OGwPSg0efcWcAGe+eQjJ+XbccK?=
 =?us-ascii?Q?qpvi1or5tcX0mjmIg6sYIQCSMhOwNfWLbXvnKyYs59oFpmy2lThvmJUf7DHP?=
 =?us-ascii?Q?FMJGUOVZcspwehk6/ea3Zk9oTyCZDtS5Im6lrx09+MHhIZ29UFn05k5zD+z+?=
 =?us-ascii?Q?gMqEi14QdIU/ezYVtqcXaMIReiGwUxZ9rNy3vwSuF2dIxDwpExLjgACWoD+3?=
 =?us-ascii?Q?eSjo0/Tl+kC+IOgP9Iw/nQciqdiI729EoFLDl0MhiZG9sa1HG1HteL5M62X3?=
 =?us-ascii?Q?cu1wGwzyZNYXwviB+31TgQcEtShVqAH9yENy5M2cJca3qTBMgzzJjl3v4aoK?=
 =?us-ascii?Q?c8qoUNeZJFsmJqWgnoKVSumFof2m3lTUW1SsJhNemtjp/SnwOizIvncdz6Ex?=
 =?us-ascii?Q?TxCAGJ7czrMnChnzn0af0iONNJuAgZKv2TB3GvX9VSRk67Vq2Antx3kBr5vM?=
 =?us-ascii?Q?NUcjRsN9TCSiEsXl5Rf/xn2IBP0sCVaVg+/ma9iPeqsCT5nTbXTo1iQrl4hc?=
 =?us-ascii?Q?g3FwpFOSgV25ugMqDZxSNMPLWNVs+ydACMfXSJnwq3QqfrJvQF9+JemkUEs?=
 =?us-ascii?Q?=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SN6PR02MB4157.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: af00db32-885f-4cac-75fb-08dceffc7573
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Oct 2024 05:11:16.0574
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR02MB9425

From: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Sent: Wednesday,=
 October 16, 2024 3:51 AM
>=20
> Rename the helper to better reflect its function.
>=20
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Suggested-by: Dave Hansen <dave.hansen@intel.com>
> ---
>  arch/x86/hyperv/ivm.c              |  2 +-
>  arch/x86/include/asm/mtrr.h        | 10 +++++-----
>  arch/x86/kernel/cpu/mtrr/generic.c |  6 +++---
>  arch/x86/kernel/cpu/mtrr/mtrr.c    |  2 +-
>  arch/x86/kernel/kvm.c              |  2 +-
>  arch/x86/xen/enlighten_pv.c        |  4 ++--
>  6 files changed, 13 insertions(+), 13 deletions(-)
>=20
> diff --git a/arch/x86/hyperv/ivm.c b/arch/x86/hyperv/ivm.c
> index 60fc3ed72830..90aabe1fd3b6 100644
> --- a/arch/x86/hyperv/ivm.c
> +++ b/arch/x86/hyperv/ivm.c
> @@ -664,7 +664,7 @@ void __init hv_vtom_init(void)
>  	x86_platform.guest.enc_status_change_finish =3D hv_vtom_set_host_visibi=
lity;
>=20
>  	/* Set WB as the default cache mode. */
> -	mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK);
> +	guest_force_mtrr_state(NULL, 0, MTRR_TYPE_WRBACK);
>  }
>=20
>  #endif /* defined(CONFIG_AMD_MEM_ENCRYPT) ||
> defined(CONFIG_INTEL_TDX_GUEST) */
> diff --git a/arch/x86/include/asm/mtrr.h b/arch/x86/include/asm/mtrr.h
> index 4218248083d9..c69e269937c5 100644
> --- a/arch/x86/include/asm/mtrr.h
> +++ b/arch/x86/include/asm/mtrr.h
> @@ -58,8 +58,8 @@ struct mtrr_state_type {
>   */
>  # ifdef CONFIG_MTRR
>  void mtrr_bp_init(void);
> -void mtrr_overwrite_state(struct mtrr_var_range *var, unsigned int num_v=
ar,
> -			  mtrr_type def_type);
> +void guest_force_mtrr_state(struct mtrr_var_range *var, unsigned int num=
_var,
> +			    mtrr_type def_type);
>  extern u8 mtrr_type_lookup(u64 addr, u64 end, u8 *uniform);
>  extern void mtrr_save_fixed_ranges(void *);
>  extern void mtrr_save_state(void);
> @@ -75,9 +75,9 @@ void mtrr_disable(void);
>  void mtrr_enable(void);
>  void mtrr_generic_set_state(void);
>  #  else
> -static inline void mtrr_overwrite_state(struct mtrr_var_range *var,
> -					unsigned int num_var,
> -					mtrr_type def_type)
> +static inline void guest_force_mtrr_state(struct mtrr_var_range *var,
> +					  unsigned int num_var,
> +					  mtrr_type def_type)
>  {
>  }
>=20
> diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtr=
r/generic.c
> index 7b29ebda024f..2fdfda2b60e4 100644
> --- a/arch/x86/kernel/cpu/mtrr/generic.c
> +++ b/arch/x86/kernel/cpu/mtrr/generic.c
> @@ -423,7 +423,7 @@ void __init mtrr_copy_map(void)
>  }
>=20
>  /**
> - * mtrr_overwrite_state - set static MTRR state
> + * guest_force_mtrr_state - set static MTRR state for a guest
>   *
>   * Used to set MTRR state via different means (e.g. with data obtained f=
rom
>   * a hypervisor).
> @@ -436,8 +436,8 @@ void __init mtrr_copy_map(void)
>   * @num_var: length of the @var array
>   * @def_type: default caching type
>   */
> -void mtrr_overwrite_state(struct mtrr_var_range *var, unsigned int num_v=
ar,
> -			  mtrr_type def_type)
> +void guest_force_mtrr_state(struct mtrr_var_range *var, unsigned int num=
_var,
> +			    mtrr_type def_type)
>  {
>  	unsigned int i;
>=20
> diff --git a/arch/x86/kernel/cpu/mtrr/mtrr.c b/arch/x86/kernel/cpu/mtrr/m=
trr.c
> index 989d368be04f..ecbda0341a8a 100644
> --- a/arch/x86/kernel/cpu/mtrr/mtrr.c
> +++ b/arch/x86/kernel/cpu/mtrr/mtrr.c
> @@ -625,7 +625,7 @@ void mtrr_save_state(void)
>  static int __init mtrr_init_finalize(void)
>  {
>  	/*
> -	 * Map might exist if mtrr_overwrite_state() has been called or if
> +	 * Map might exist if guest_force_mtrr_state() has been called or if
>  	 * mtrr_enabled() returns true.
>  	 */
>  	mtrr_copy_map();
> diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
> index 21e9e4845354..7a422a6c5983 100644
> --- a/arch/x86/kernel/kvm.c
> +++ b/arch/x86/kernel/kvm.c
> @@ -983,7 +983,7 @@ static void __init kvm_init_platform(void)
>  	x86_platform.apic_post_init =3D kvm_apic_init;
>=20
>  	/* Set WB as the default cache mode for SEV-SNP and TDX */
> -	mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK);
> +	guest_force_mtrr_state(NULL, 0, MTRR_TYPE_WRBACK);
>  }
>=20
>  #if defined(CONFIG_AMD_MEM_ENCRYPT)
> diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
> index d6818c6cafda..633469fab536 100644
> --- a/arch/x86/xen/enlighten_pv.c
> +++ b/arch/x86/xen/enlighten_pv.c
> @@ -171,7 +171,7 @@ static void __init xen_set_mtrr_data(void)
>=20
>  	/* Only overwrite MTRR state if any MTRR could be got from Xen. */
>  	if (reg)
> -		mtrr_overwrite_state(var, reg, MTRR_TYPE_UNCACHABLE);
> +		guest_force_mtrr_state(var, reg, MTRR_TYPE_UNCACHABLE);
>  #endif
>  }
>=20
> @@ -195,7 +195,7 @@ static void __init xen_pv_init_platform(void)
>  	if (xen_initial_domain())
>  		xen_set_mtrr_data();
>  	else
> -		mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK);
> +		guest_force_mtrr_state(NULL, 0, MTRR_TYPE_WRBACK);
>=20
>  	/* Adjust nr_cpu_ids before "enumeration" happens */
>  	xen_smp_count_cpus();
> --
> 2.45.2
>=20

LGTM
Reviewed-by: Michael Kelley <mhklinux@outlook.com>


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 06:50:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 06:50:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822359.1236356 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t23Hg-0004YT-8c; Sat, 19 Oct 2024 06:49:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822359.1236356; Sat, 19 Oct 2024 06:49: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 1t23Hg-0004YM-61; Sat, 19 Oct 2024 06:49:56 +0000
Received: by outflank-mailman (input) for mailman id 822359;
 Sat, 19 Oct 2024 06:49: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 1t23He-0004YC-UY; Sat, 19 Oct 2024 06:49: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 1t23He-0007K5-PQ; Sat, 19 Oct 2024 06:49: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 1t23He-0008DM-97; Sat, 19 Oct 2024 06:49:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t23He-0000u4-8f; Sat, 19 Oct 2024 06:49: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=U1H++NpsVk6WYj9bQoST7NMKMmPEvw7A47uRk821c3g=; b=oJ0FHtjRF5lXRWE0hOr++FfgpJ
	X+ki7xM4inZC3aSD/VWh0S1Rq+D77BDYBQys3HKBD5vffZ2IxSGJ2Q3prXLPuBjnMXWMMXoGtMh2q
	qsUUpZPpI7JWV5TA+aLNYu7LE8Bi4w5nhY4wnFuDjbeYttDyyPZfCqKWSo+xIPPPHcKk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188281-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 188281: regressions - FAIL
X-Osstest-Failures:
    ovmf:test-amd64-amd64-xl-qemuu-ovmf-amd64:debian-hvm-install:fail:regression
X-Osstest-Versions-This:
    ovmf=8f84eb0e761992dc1218f63ee53a54ac0c65630f
X-Osstest-Versions-That:
    ovmf=e19cc32bce466fb1c175f7d44708c2ebb45802a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 06:49:54 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemuu-ovmf-amd64 12 debian-hvm-install fail REGR. vs. 188152

version targeted for testing:
 ovmf                 8f84eb0e761992dc1218f63ee53a54ac0c65630f
baseline version:
 ovmf                 e19cc32bce466fb1c175f7d44708c2ebb45802a7

Last test of basis   188152  2024-10-17 07:11:33 Z    1 days
Failing since        188156  2024-10-17 09:14:11 Z    1 days   11 attempts
Testing same since   188268  2024-10-18 18:13:31 Z    0 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
  jack Hsieh <v-chhsieh@microsoft.com>
  Jeremy Compostella <jeremy.compostella@intel.com>
  Kun Qin <kuqin12@gmail.com>
  Kun Qin <kuqin@microsoft.com>
  Mike Beaton <mjsbeaton@gmail.com>
  Sienski Piotr <piotr.sienski@intel.com>
  v-chhsieh <v-chhsieh@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                         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.

------------------------------------------------------------
commit 8f84eb0e761992dc1218f63ee53a54ac0c65630f
Author: Mike Beaton <mjsbeaton@gmail.com>
Date:   Sun Sep 29 11:40:44 2024 +0100

    BaseTools: Remove -Wno-unneeded-internal-declaration from CLANGDWARF
    
    Subsequent to updating the 'null' DEBUG macro to explicitly
    discard its expression, it is possible to remove this warning
    suppression from CLANGDWARF and still successfully compile
    its RELEASE build.
    
    Note that CLANGPDB did and does not have this warning suppressed,
    and so before updating the 'null' DEBUG macro, CLANGPDB RELEASE
    was not building successfully in recent versions of clang,
    but was stopping with the error:
    
    .../edk2/OvmfPkg/VirtioSerialDxe/VirtioSerial.c:28:22: error:
    variable &apos;EventNames&apos; is not needed and will not be
    emitted [-Werror,-Wunneeded-internal-declaration]
    STATIC CONST CHAR8  *EventNames[] = {
                         ^
    
    This change makes the two CLANG variants match with respect
    to this warning, and leaves the warning enabled which is
    considered a benefit as it has the potential to catch real
    coding errors
    
    Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>

commit ae83c6b7fd83a5906e016a32027c1bcd792a624e
Author: Mike Beaton <mjsbeaton@gmail.com>
Date:   Sat Sep 28 02:43:15 2024 +0100

    MdePkg: Fix null macros for XCODE5 and CLANG
    
    When building OvmfPkg in RELEASE mode in the XCODE5 toolchain, the
    ASSERT_EFI_ERROR change prevents this error:
    
    .../MdePkg/Library/UefiMemoryAllocationLib/MemoryAllocationLib.c:141:15:
    error: variable 'Status' set but not used [-Werror,-Wunused-but-set-variable]
      EFI_STATUS  Status;
                  ^
    
    which is currently stopping the build.
    
    When building in RELEASE mode in the CLANGPDB toolchain,the DEBUG macro
    change prevents this error:
    
    .../edk2/OvmfPkg/VirtioSerialDxe/VirtioSerial.c:28:22: error:
    variable &apos;EventNames&apos; is not needed and will not be
    emitted [-Werror,-Wunneeded-internal-declaration]
    STATIC CONST CHAR8  *EventNames[] = {
                         ^
    
    which is currently stopping the build.
    
    CLANGDWARF produces the same error as CLANGPDB above, if
    -Wno-unneeded-internal-declaration is removed from its build flags.
    With the null DEBUG macro change, this warning suppression
    can be removed from CLANGDWARF, which is considered a benefit
    as it has the potential to catch real coding errors. This is
    done in a subsequent commit.
    
    This commit has the desirable side effect that we no longer require
    (and cannot use) explicit `#ifndef MDEPKG_NDEBUG` around items only
    used in DEBUG macros. This requires the ArmPkg change made here to
    be in the same commit as the MdePkg changes.
    
    Note: In common with existing macros in EDK II, including the pre-existing
    and unchanged DEBUG/NOOPT versions of the macros which are modified here,
    we use the standard approach of adding `do { ... } while (FALSE)` wrapping
    to ensure that the macros behave correctly with surrounding code
    (e.g. require a following ';' and do not combine in unexpected ways with
    nearby conditionals).
    
    Continuous-integration-options: PatchCheck.ignore-multi-package
    Co-authored-by: Mikhail Krichanov <krichanov@ispras.ru>
    Signed-off-by: Mike Beaton <mjsbeaton@gmail.com>

commit 6e197a8ba5e349e511850fc52457992de88c8795
Author: v-chhsieh <v-chhsieh@microsoft.com>
Date:   Mon Sep 30 14:43:39 2024 +0800

    MdePkg: Add Google Test Library and Protocol
    
    Mock Libraries:
     MdePkg\Test\Mock\Library\GoogleTest\MockCpuLib
     MdePkg\Test\Mock\Library\GoogleTest\MockPciSegmentLib
     MdePkg\Test\Mock\Library\GoogleTest\MockReportStatusCodeLib
     MdePkg\Test\Mock\Library\GoogleTest\MockSmmServicesTableLib
    
    Mock Protocol:
     MdePkg\Test\Mock\Include\GoogleTest\Protocol\MockMpService.h
    
    Signed-off-by: jack Hsieh <v-chhsieh@microsoft.com>
    Cc: Maintainer Shruti Gupta <shrugupt@microsoft.com>
    Cc: Reviewer   Shruti Gupta <shrugupt@microsoft.com>

commit 866abb233817eb349fa5fe2b32283e990a8e5056
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Oct 9 15:03:13 2024 -0700

    MdeModulePkg: Replace right bit shift operator with RShiftU64
    
    Instead of using bit shift operations, it is preferable to use BaseLib
    bit shift functions to prevent compilers from inserting intrinsics.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 996e740cc83aa499d91b3ab3ae857dab7578e05c
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Tue Oct 8 16:55:51 2024 -0700

    MdeModulePkg: Fix PeiAllocatePages() corner case
    
    I recently ran into an AllocatePages() hang. It turns out that
    AllocatePages() does not account for the Memory Allocation HOB when it
    makes the decision of allocating out of free memory.
    
    Here is the scenario:
    
      FreeMemoryTop    - 0x71C03000
      FreeMemoryBottom - 0x71BDBFD8
      => We have 159,784 bytes left => ~39.0098 pages left.
    
    We attempt to allocate 39 pages. There are enough pages left but
    allocating those pages requires to allocate a Memory Allocation HOB
    which needs an extra 48 bytes. But once the pages are allocated,
    there are only 40 bytes left.
    
    In addition to taking into account the Memory Allocation HOB size,
    this commit reverses the condition to keep it simple.
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>

commit 1b70dcd375765d293f57fe546710b98525e6a46d
Author: Sienski Piotr <piotr.sienski@intel.com>
Date:   Mon Oct 14 12:24:14 2024 +0200

    MdePkg/Include/Guid: Add missing CXL definitions to Cper.h
    
    [Issue Description]
    In MdePkg/Include/Guid/Cper.h there are missing multiple definitions
    regarding CXL that can be found in UEFI 2.10 spec
    chapters N.2.13 and N.2.14
    
    [Resolution]
    Add these definitions to MdePkg/Include/Guid/Cper.h
    
    Signed-off-by: Sienski Piotr <piotr.sienski@intel.com>

commit 79598f34fa024ad2491b46b95c3189c5a7f159d2
Author: Kun Qin <kuqin12@gmail.com>
Date:   Wed Aug 10 22:56:34 2022 -0700

    MdeModulePkg: PeiMain: Updated dispatcher for delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds a check for PEI dispatcher to continue dispatching when
    there are still pending delayed dispatch requests, to be compatible with
    newly integrated Delayed Dispatcher PPI interface.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: John Schock <joschock@microsoft.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit d64d1e195ceb003c824786bfd817227c7ae81f06
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:11:37 2024 -0700

    MdeModulePkg: PeiMain: Introduce implementation of delayed dispatch
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    This change adds the implementation that fits the needs and description
    of PI spec defined Delayed Dispatch PPI in Pei Core.
    
    The PPI would allow minimal delay for registered callbacks. As well as
    allowing other functions to wait for GUIDed delayed dispatch callbacks.
    
    Cc: Jian J Wang <jian.j.wang@intel.com>
    Cc: Dandan Bi <dandan.bi@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Debkumar De <debkumar.de@intel.com>
    Cc: Catharine West <catharine.west@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>

commit b3f36e151d8b014cac5c6a833e2270c14d998739
Author: Kun Qin <kuqin@microsoft.com>
Date:   Thu Sep 19 14:09:03 2024 -0700

    MdePkg: Update Delayed Dispatch PPI as per PI 1.8 A Spec
    
    REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4496
    
    PI spec defined the `Register` function input argument `Delay` as output.
    However, this parameter should be used to define the minmal time delay
    the callback should fire. Thus it should be an input parameter.
    
    This change fixed the argument type.
    
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Cc: Liming Gao <gaoliming@byosoft.com.cn>
    Cc: Zhiguang Liu <zhiguang.liu@intel.com>
    
    Co-authored-by: Mike Turner <mikeyt@pobox.com>
    Co-authored-by: Sachin Ganesh <sachinganesh@ami.com>
    Signed-off-by: Kun Qin <kuqin12@gmail.com>


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 11:33:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 11:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822454.1236418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t27hZ-0003Bi-HJ; Sat, 19 Oct 2024 11:32:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822454.1236418; Sat, 19 Oct 2024 11:32: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 1t27hZ-0003Bb-EZ; Sat, 19 Oct 2024 11:32:57 +0000
Received: by outflank-mailman (input) for mailman id 822454;
 Sat, 19 Oct 2024 11:32: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t27hY-0003BV-Ld
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 11:32:56 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e04fdad8-8e0d-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 13:32:53 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729337566204366.4886802052788;
 Sat, 19 Oct 2024 04:32:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e04fdad8-8e0d-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729337568; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=NSAfYFcjdk/xpSZifwfm29T45632m4wEKe5rqCeUlvb1z49jOpx39v5s5sdjzfM1rrtGCx3FLNV2qfBDVTRokqQXvJpn416PbQ/IvA2OkjcxfS4LAPbwgiu/7QQV0BVEUluAWbPkZ1lYiFS6l42fkJWIekoESuJIC+qZIQEJ0iQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729337568; 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=5S4ocbMRN/ZDTrHRIpLShwguvEXp7SmgKv9cGlo+DFI=; 
	b=OiWGmtOHZzjAaDsLqO2XeeLPOPbfwb+d6s1eZZER9J009aGnVayaSHHYDd3NBi9vh6CloSJwbsu1pz2cA2xhQGvnC64e5f779bONQhlSFvmYSzLdyDJC51/2B1igCJXbp7J7QPGyJ0Nd+rlHXjEGvdw57pkjIJK2XYfAOlA+OQI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729337568;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=5S4ocbMRN/ZDTrHRIpLShwguvEXp7SmgKv9cGlo+DFI=;
	b=h10Bp9uMBIaC0gUYn07wcCs2fyRUo6ziX9hrx1bokijlhPJtL28rA6v4aOcGvEis
	NP2hQTc6qx28pqKNLMxPWgY0cUB8uP5KQzNKAKUUPcKAxhgK60lmJnt6YnEpydkFXg2
	2/mbw44+yqaxsKyxAy2e5sV4wDeDHWUOAFk4SQU0=
Message-ID: <f251c5c7-8904-4dc9-addb-5ce02d53164c@apertussolutions.com>
Date: Sat, 19 Oct 2024 07:32:44 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 11/44] x86/boot: add start and size fields to struct
 boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, Jan Beulich <jbeulich@suse.com>,
 xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-12-dpsmith@apertussolutions.com>
 <394f8083-a6c9-4ccf-8e01-cdc1e6767214@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <394f8083-a6c9-4ccf-8e01-cdc1e6767214@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 19:12, Jason Andryuk wrote:
> On 2024-10-17 13:02, Daniel P. Smith wrote:
>> This commit introduces the start and size fields to struct boot_module 
>> and
>> assigns their value during boot_info construction.
>>
>> The EFI entry point special cased itself, and pre-converted mod_start and
>> mod_end to mfn and size respectively. This required an additional test
>> in the coversion loop to not convert mod_start and mod_end when the 
>> conversion
> 
> conversion

Ack.

>> was done for both the multiboot and PVH boot entry points. To simplify 
>> the
>> logic populating the start and size fields, the EFI module population 
>> logic
>> was coverted to using start and end addresses.
> 
> converted

Ack.

>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
> with that
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thank you but will hold off since Andy has asked this be split and changed.

> EFI now gains the alignment check, but beforehand it was just silently 
> truncating.  Seems better to check :)

My thinking as well.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 11:54:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 11:54:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822463.1236428 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t281t-0008RG-5B; Sat, 19 Oct 2024 11:53:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822463.1236428; Sat, 19 Oct 2024 11:53: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 1t281t-0008R9-2R; Sat, 19 Oct 2024 11:53:57 +0000
Received: by outflank-mailman (input) for mailman id 822463;
 Sat, 19 Oct 2024 11:53: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t281s-0008R3-2B
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 11:53:56 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cf2807ad-8e10-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 13:53:53 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729338825079915.4567732383301;
 Sat, 19 Oct 2024 04:53:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf2807ad-8e10-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729338825; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=XC9RcMqfJ4bRoUbR/6dC2pxetCRD61Ndq6X4TNK4Jzl7uJn72FlAntNBcyqm9p/JvsnJrnQIKrCDv6CZ6rhAdH3UuSQEs8toVj4T27JMGhxktCkJ2ndiHXtbFLdAADZ5/T2szAGOUq6aoQu621ZJnjf9x1ZyO4k4HSIZVM1DIsY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729338825; 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=+nwo/g0/7mc+QxvvEVssTnbGRa1xfLYka6GFaBMxdVI=; 
	b=GVlf06eDp8ZQBHSezlLdpMAw5+etmzX9gqSiZSrcqLqJr5E69kE2M6x6vXP6xDQHUP/NScNRMbcVzQ7qqznV1StEKNhB9ACDDbNZuCP7OEgm5Ft5Y4XpwfWTKaMuOOZwNJESwfafpVLs8WH+UpUbT6TO1LrSE4mojZCnJBXTzHA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729338825;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=+nwo/g0/7mc+QxvvEVssTnbGRa1xfLYka6GFaBMxdVI=;
	b=gnvhiWM1rQrqnvv3SlZ7AqgrKsj9F/s3uubaBs4BUNygEQQAt58s0cgdyWj5tClL
	EH++ANs9julTzzE2S36uaJILhpPB8pBr83UhG6mzPy7PGOju9SFrnGXnuZU6rlnoUki
	Lkq23bqffosLDyi8eO/rTCYv9hsi1SMIL/ewZQYc=
Message-ID: <ccc34697-170f-4e5a-ac58-3c36e53e55b4@apertussolutions.com>
Date: Sat, 19 Oct 2024 07:53:43 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 11/44] x86/boot: add start and size fields to struct
 boot_module
To: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-12-dpsmith@apertussolutions.com>
 <0c342b3a-f66e-44a6-a87a-5553f4f7ba7d@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <0c342b3a-f66e-44a6-a87a-5553f4f7ba7d@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 20:23, Andrew Cooper wrote:
> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>> This commit introduces the start and size fields to struct boot_module and
>> assigns their value during boot_info construction.
>>
>> The EFI entry point special cased itself, and pre-converted mod_start and
>> mod_end to mfn and size respectively. This required an additional test
>> in the coversion loop to not convert mod_start and mod_end when the conversion
>> was done for both the multiboot and PVH boot entry points. To simplify the
>> logic populating the start and size fields, the EFI module population logic
>> was coverted to using start and end addresses.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>> Changes since v5:
>> - switched EFI population of mod_start/mod_end to addresses
>> ---
>>   xen/arch/x86/efi/efi-boot.h         | 4 ++--
>>   xen/arch/x86/include/asm/bootinfo.h | 3 +++
>>   xen/arch/x86/setup.c                | 7 ++++++-
>>   3 files changed, 11 insertions(+), 3 deletions(-)
> 
> Despite being small already, I'd still prefer to split this into two
> patches.

I was going to agree with you but thinking about your point that in EFI 
the addr could legitimately be >4G and thus the conversion to pfn and 
size will need to stay. Therefore this will cause the efi changes to 
drop back out and require the introduction of EFI test and alternative 
path for setting start/size by converting back. If I were to break up it 
up, what will result is there will be a patch that introduces straight 
assignment for MB and PVH boot. The second commit would introduce the 
EFI test and alternate branch to assign start using the shift 
conversion. I think this all probably should stay in a single patch, but 
if you still would like to see it separate than I will do so.

> One changing the EFI path, and a separate one adding in the new (real)
> start/size fields.
> 
> Sods law would says that if we don't, bisection is going to end up here,
> except it doesn't need to...
> 
>> diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
>> index 94f34433640f..779f101c3de7 100644
>> --- a/xen/arch/x86/efi/efi-boot.h
>> +++ b/xen/arch/x86/efi/efi-boot.h
>> @@ -732,8 +732,8 @@ static void __init efi_arch_handle_module(const struct file *file,
>>       if ( options )
>>           place_string(&mb_modules[mbi.mods_count].string, options);
>>       place_string(&mb_modules[mbi.mods_count].string, local_name.s);
>> -    mb_modules[mbi.mods_count].mod_start = file->addr >> PAGE_SHIFT;
>> -    mb_modules[mbi.mods_count].mod_end = file->size;
>> +    mb_modules[mbi.mods_count].mod_start = file->addr;
>> +    mb_modules[mbi.mods_count].mod_end = file->addr + file->size;
> 
> ... because you can't drop this shift until you have a full-width start
> field to use.   file->addr might exceed 4G, and truncate with this patch
> in place.
> 
> You're going to need to keep the old semantics here, fill in all 4
> fields, and keep the EFI special case in the final hunk until you can
> remove the ->mod_{start,end} narrow fields.

While in testing I did not see it occur, you are correct that it is 
possible that the EFI allocator may choose to do so. I will drop the 
change in the efi code and handle with a condition in the 
multiboot_fill_boot_info() funciton for the time being.

>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index f87faa31a2cf..6ee352fc0cde 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -309,8 +309,13 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>>        * reserved for Xen itself
>>        */
>>       for ( i = 0; i <= bi->nr_modules; i++ )
>> +    {
>>           bi->mods[i].mod = &mods[i];
>>   
>> +        bi->mods[i].start = (paddr_t)mods[i].mod_start;
> 
> This cast isn't needed, but don't we need a shift in here?

Only for EFI.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 11:57:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 11:57:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822470.1236439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t285B-0001N3-Kl; Sat, 19 Oct 2024 11:57:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822470.1236439; Sat, 19 Oct 2024 11:57: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 1t285B-0001Mw-H1; Sat, 19 Oct 2024 11:57:21 +0000
Received: by outflank-mailman (input) for mailman id 822470;
 Sat, 19 Oct 2024 11:57: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t285A-0001HY-CK
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 11:57:20 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 468020a4-8e11-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 13:57:13 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729339026460533.0095954572497;
 Sat, 19 Oct 2024 04:57:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 468020a4-8e11-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729339028; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=K/aw+B5lvkHPt3m3sSwCcQLXl+r0v4OtbIQxVIVzXr3RknWXLiAs5LeTsxOUlJJERtbosDhqvudY3cfvYViLJBPeuQoFRwKNWmvTvBIG4TQOYgMchkyGGKZAl8vBeWIWhdyNY5h3QNhdV9IqOxryLfV0EorMes7O85t07IrQKwo=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729339028; 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=IUDqa87blw5l4UUTH6147BSi9tzzegZKadzKH1zev3M=; 
	b=WA/v3UHzbB4NXdxWibj+bulMUPMQWWXs7kvvDoG52KVtx5i4uHAJsuNyVqtCIIWoLvFiLs0/rdSEQ/nAUpLZQBTkklkfvX2I/iP/ZNKXfMbMejP75XqzR4dawPpx12E3EsfqJ0Yrgozl4+p+s2H7D25S0E77FYYEAPA5I5Li/io=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729339028;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=IUDqa87blw5l4UUTH6147BSi9tzzegZKadzKH1zev3M=;
	b=e24XT2lJ7wjZUsl0Zj0aK8Ie1BwDSNEBY1+6bTrMjjQMqklSubKem4XEkDKygWME
	QwnQRhj06MR3imzixPP1oSsfiaebJVZ/jGPW1ltMCwyCeyD1YFBOAxLjCz90L8TzL/n
	vtBhqInDlpb8t+9s1ueeKG7fYVGaHl3ETDTGWfT0=
Message-ID: <bc7b51f4-e45f-42a9-90a4-878ecc76baf8@apertussolutions.com>
Date: Sat, 19 Oct 2024 07:57:04 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 12/44] x86/boot: update struct boot_module on module
 relocation
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-13-dpsmith@apertussolutions.com>
 <2133207a-88a0-4b92-a389-39259e649269@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <2133207a-88a0-4b92-a389-39259e649269@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 19:15, Jason Andryuk wrote:
> On 2024-10-17 13:02, Daniel P. Smith wrote:
>> When a boot module is relocated, ensure struct boot_module start and size
>> fields are updated along with early_mod.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>> Changes since v5:
>> - corrected conversion function for a missed switch from mfn to 
>> maddr/paddr
>> ---
>>   xen/arch/x86/setup.c | 7 +++++--
>>   1 file changed, 5 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 6ee352fc0cde..d51b0b03bc97 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1380,8 +1380,11 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>            * respective reserve_e820_ram() invocation below. No need to
>>            * query efi_boot_mem_unused() here, though.
>>            */
>> -        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
>> -        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
>> +        bi->mods[xen].start = virt_to_maddr(_stext);
>> +        bi->mods[xen].size = __2M_rwdata_end - _stext;
>> +
>> +        bi->mods[xen].mod->mod_start = bi->mods[xen].start;
> 
> But now this line needs to be converted to an mfn?

Correct.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 12:01:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 12:01:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822481.1236449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2896-0003gf-Dx; Sat, 19 Oct 2024 12:01:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822481.1236449; Sat, 19 Oct 2024 12:01: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 1t2896-0003gY-A4; Sat, 19 Oct 2024 12:01:24 +0000
Received: by outflank-mailman (input) for mailman id 822481;
 Sat, 19 Oct 2024 12:01: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2894-0003g6-Uk
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 12:01:22 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d9e8db89-8e11-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 14:01:20 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172933927283258.91642450225356;
 Sat, 19 Oct 2024 05:01:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d9e8db89-8e11-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729339275; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=TrRta5JeLWip0SAp+zQPe78M7eD+PVbsaFH93YA/+ZFKB7zjsmEP17z5zTCStlzsqqAiCJ07Qnbui6l5/EJMqPtCzEF1L7nbf5YdJLt/Y9ucRkAwzsJl6jdyF3CBSJBFKk8WK0RVtKzwIcylBHB/kzNfeoxcE2D8ajYw4NeBm70=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729339275; 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=EuAZ5n0GARnApKkjEdEJ5lLtbJazOpAP6AKPlAJmOWs=; 
	b=ZvaswZ8DibhR2QuuNsORi2wuqj8ufrI+eD+I+mm5lHnHH4XPFhRa2xC/oVwvkmve3/1yk959pDrD0K2WMu2Gw9pR3y8oQ8n9g/ifU6WjUHe2vorsP9MYcRTm7LfWU9kdftdXVhoXvvKRqohT/BH6jmp/ag5N7cK7coZ1vBS8eek=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729339275;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=EuAZ5n0GARnApKkjEdEJ5lLtbJazOpAP6AKPlAJmOWs=;
	b=SRHqY+2QEnde+uOr2jSNEh1K59iyhu2yMke4GkT74lzDk/L6ZYaVzEN9a5Yi/5Ga
	kcgOHaydqAlgqWN/cHIYl8gmE11206g4w4VGO6oQizdaZnOORs5+/JxktWMvTMFbjsN
	VopzFmsJYB8z736iq9FgL3EZ83Y5DGqnHua3XWaU=
Message-ID: <c1434463-e5f0-495b-a641-5ad4642e863b@apertussolutions.com>
Date: Sat, 19 Oct 2024 08:01:11 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 13/44] x86/boot: transition relocation calculations to
 struct boot_module
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-14-dpsmith@apertussolutions.com>
 <a94f876a-5f9a-4f21-be28-f4192c991337@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <a94f876a-5f9a-4f21-be28-f4192c991337@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 20:42, Jason Andryuk wrote:
> On 2024-10-17 13:02, Daniel P. Smith wrote:
>> Use struct boot_module fields, start and size, when calculating the 
>> relocation
>> address and size. It also ensures that early_mod references are kept 
>> in sync.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>> Changes since v5:
>> - removed unnecessary paddr_to_pfn, allowing condition to collapse to 
>> one line
>> - correct a missed conversion from .mod->mod_start to .start
>> ---
>>   xen/arch/x86/setup.c | 38 +++++++++++++++++---------------------
>>   1 file changed, 17 insertions(+), 21 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index d51b0b03bc97..44cec48fc877 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
> 
>> @@ -1528,11 +1526,10 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>           panic("Not enough memory to relocate the dom0 kernel image\n");
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start
>> -                        << PAGE_SHIFT;
>> +        uint64_t s = (uint64_t)bi->mods[i].start;
> 
> I don't think this cast is necessary.

Ack.

>>           reserve_e820_ram(&boot_e820, s,
>> -                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
>> +                         s + PAGE_ALIGN(bi->mods[i].size));
>>       }
>>       if ( !xen_phys_start )
> 
>> @@ -1686,12 +1682,12 @@ void asmlinkage __init noreturn 
>> __start_xen(unsigned long mbi_p)
>>       for ( i = 0; i < bi->nr_modules; ++i )
>>       {
>> -        set_pdx_range(bi->mods[i].mod->mod_start,
>> -                      bi->mods[i].mod->mod_start +
>> -                      PFN_UP(bi->mods[i].mod->mod_end));
>> -        map_pages_to_xen((unsigned 
>> long)mfn_to_virt(bi->mods[i].mod->mod_start),
>> -            _mfn(bi->mods[i].mod->mod_start),
>> -            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
>> +        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
>> +                      paddr_to_pfn(bi->mods[i].start) +
>> +                      PFN_UP(bi->mods[i].size));
>> +        map_pages_to_xen((unsigned 
>> long)maddr_to_virt(bi->mods[i].start),
>> +            maddr_to_mfn(bi->mods[i].start),
>> +            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);
> 
> I would vertically align all the parameters inside the (.

Ack, though I will be applying the format requested by Jan.

> With those:
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks!

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 12:02:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 12:02:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822489.1236459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t28AE-0004HF-N9; Sat, 19 Oct 2024 12:02:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822489.1236459; Sat, 19 Oct 2024 12:02: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 1t28AE-0004H8-KX; Sat, 19 Oct 2024 12:02:34 +0000
Received: by outflank-mailman (input) for mailman id 822489;
 Sat, 19 Oct 2024 12: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t28AE-0004Gh-7b
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 12:02:34 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 04fbc5fe-8e12-11ef-a0be-8be0dac302b0;
 Sat, 19 Oct 2024 14:02:33 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729339344445472.78716576219813;
 Sat, 19 Oct 2024 05:02:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 04fbc5fe-8e12-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729339345; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=mgESEPhQeGKFaTKgVEZDHqRI4dbH7bB0TX05EcNLAYjbdEa/JtUg1uVmZpaY3AQ/vbkNYgD2ogoIKfaC8iH/w3lJXtN4QWOa1PnyLgJ6uFeG7bRzcXciLaJOy7+H7OhTmoHaJkWwTcT2EhaSamO3GVh36kX5cn9wgnvZSM8SdjM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729339345; 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=iRk+UeqORKfqBassxklkpgtIy64S1iDTrldwYgFsmTM=; 
	b=ZtqKtO5xeH5rFd4DFT8LMjoZNPaWgX0HZXPP3I5eYUjgkog+oXHFYnOpFMrvEkJeA0QSbZnJ4HSRiUqd6IdNi/MDVpSKPnc/DqcrYu5PuGPAPmcegPrZ4cGUgPOJlqSQmQoc69C/MbA5663xg/aqkPXQyfHqDmJA06td/KnHl80=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729339345;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=iRk+UeqORKfqBassxklkpgtIy64S1iDTrldwYgFsmTM=;
	b=KPiUuvqTudu+UoSzmvgqE4+s3flq1gyEicnUveinpIRDw+tPncH68K7YHd4qX8ey
	l5EaFYqpFRkPIDT772OSi/j9vW/wwdCExB9jI23HZ4yzmMTmOTzBM6ihuMgy6DAkL9b
	PLEb6WYHElVi4xlssgU4JcL3cwm2pLyLlC+y3lvk=
Message-ID: <11ed10c8-3c6b-45cc-8d03-e8449ce9f7d0@apertussolutions.com>
Date: Sat, 19 Oct 2024 08:02:23 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 13/44] x86/boot: transition relocation calculations to
 struct boot_module
To: Jan Beulich <jbeulich@suse.com>
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org, Jason Andryuk <jason.andryuk@amd.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-14-dpsmith@apertussolutions.com>
 <a94f876a-5f9a-4f21-be28-f4192c991337@amd.com>
 <cd25c03d-456d-49a8-a832-e8ec02b69108@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <cd25c03d-456d-49a8-a832-e8ec02b69108@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/18/24 02:39, Jan Beulich wrote:
> On 18.10.2024 02:42, Jason Andryuk wrote:
>> On 2024-10-17 13:02, Daniel P. Smith wrote:
>>> @@ -1686,12 +1682,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>>    
>>>        for ( i = 0; i < bi->nr_modules; ++i )
>>>        {
>>> -        set_pdx_range(bi->mods[i].mod->mod_start,
>>> -                      bi->mods[i].mod->mod_start +
>>> -                      PFN_UP(bi->mods[i].mod->mod_end));
>>> -        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
>>> -            _mfn(bi->mods[i].mod->mod_start),
>>> -            PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
>>> +        set_pdx_range(paddr_to_pfn(bi->mods[i].start),
>>> +                      paddr_to_pfn(bi->mods[i].start) +
>>> +                      PFN_UP(bi->mods[i].size));
>>> +        map_pages_to_xen((unsigned long)maddr_to_virt(bi->mods[i].start),
>>> +            maddr_to_mfn(bi->mods[i].start),
>>> +            PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);
>>
>> I would vertically align all the parameters inside the (.
> 
> At the very least the two successive calls want formatting the same way.
> Plus imo the presented formatting of map_pages_to_xen() isn't "legal"
> anyway, it ought to be
> 
>          map_pages_to_xen(
>              (unsigned long)maddr_to_virt(bi->mods[i].start),
>              maddr_to_mfn(bi->mods[i].start),
>              PFN_UP(bi->mods[i].size), PAGE_HYPERVISOR);

Agreed, will change to the above.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 12:04:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 12:04:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822497.1236469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t28CR-0004s7-3d; Sat, 19 Oct 2024 12:04:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822497.1236469; Sat, 19 Oct 2024 12:04: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 1t28CQ-0004s0-W7; Sat, 19 Oct 2024 12:04:50 +0000
Received: by outflank-mailman (input) for mailman id 822497;
 Sat, 19 Oct 2024 12: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t28CQ-0004rq-A3
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 12:04:50 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 55be0697-8e12-11ef-a0be-8be0dac302b0;
 Sat, 19 Oct 2024 14:04:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729339482088428.4743933200755;
 Sat, 19 Oct 2024 05:04:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 55be0697-8e12-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729339483; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=X62RzoancnBFF5utUmqIp2FG4K1vzb9kAgJMnIRbPR+P7BQvktlc0qJ9my5YLE5hzzG3XelQkvnJv/9U6nq2UmYJefbzSo2WE0uv4Jihea69dR8ev3DhWinpHG7DUN3L5uGTF7riCKjjfV0pS4Oq5LhjZMbgffQpoDCztlgIT7g=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729339483; 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=MOwM/LbPXEACamzONVfkb7fee3UcYZJYnIGCl3yxkkY=; 
	b=JFm1s9KxmwwFIhT4xt/lgkcGmOoILFVX//KJePtPdj1EX2+cIOB943C1Q8lyXckUp7lc+S1Zy6KqreitxsZ/sQ2ftIkRbOZpioksrLvSbKtaofl4HMdPr3qSKXkcYcf0vOIiqSeRqJDIjcyozlVUAWzwoudbqlybDLU0bP2SGWg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729339483;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=MOwM/LbPXEACamzONVfkb7fee3UcYZJYnIGCl3yxkkY=;
	b=gG1lPGY8eQwGOe+HBMMUF+u6q3v1Av+VqErue9X95XhfWKTaxwjacvwqgRhIJ91v
	hOweyBeHRQ9DghZIf80japF0sgZA8SE6E+hmV0NwE4oAv+mRQNN/x6uF/PUTjfz196j
	MEaiWvqENG10fkgtNbki/Keu2AMTy2x0R12c+q/Y=
Message-ID: <f81ac002-b857-4e1c-9f57-809b0c3250ef@apertussolutions.com>
Date: Sat, 19 Oct 2024 08:04:40 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 14/44] x86/boot: introduce boot module interator
To: Jason Andryuk <jason.andryuk@amd.com>, xen-devel@lists.xenproject.org
Cc: christopher.w.clark@gmail.com, stefano.stabellini@amd.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: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-15-dpsmith@apertussolutions.com>
 <acbb1045-237e-4570-b7a1-ea3283d344ef@amd.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <acbb1045-237e-4570-b7a1-ea3283d344ef@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/18/24 10:09, Jason Andryuk wrote:
> On 2024-10-17 13:02, Daniel P. Smith wrote:
>> Provide an iterator to go through boot module array searching based on 
>> type.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>> Changes since v5:
>> - documented help next_boot_module_index
>> - switch to unsigned int for next_boot_module_index
>> - changes identified that BOOTMOD_XEN was not supported, so added support
>> ---
>>   xen/arch/x86/include/asm/bootinfo.h | 29 ++++++++++++++++++++++++++++-
>>   1 file changed, 28 insertions(+), 1 deletion(-)
>>
>> diff --git a/xen/arch/x86/include/asm/bootinfo.h 
>> b/xen/arch/x86/include/asm/bootinfo.h
>> index 5862054b8cef..3010e6f4af9c 100644
>> --- a/xen/arch/x86/include/asm/bootinfo.h
>> +++ b/xen/arch/x86/include/asm/bootinfo.h
>> @@ -62,8 +62,35 @@ struct boot_info {
>>       struct boot_module mods[MAX_NR_BOOTMODS + 1];
>>   };
>> -#endif /* __XEN_X86_BOOTINFO_H__ */
>> +/*
>> + * next_boot_module_index:
>> + *     Finds the next boot module of type t, starting at array index 
>> start.
>> + *
>> + * Returns:
>> + *      Success - index in boot_module array
>> + *      Failure - a value greater than MAX_NR_BOOTMODS
>> + */
>> +static inline unsigned int __init next_boot_module_index(
>> +    const struct boot_info *bi, enum bootmod_type t, unsigned int start)
>> +{
>> +    unsigned int i;
>> +
>> +    if ( t == BOOTMOD_XEN )
>> +        return MAX_NR_BOOTMODS;
> 
> Your earlier patch "x86/boot: convert mod refs to boot_module mod" put 
> xen at bi->nr_modules.  You'll want these to match.

Yep.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 15:50:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 15:50:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822575.1236530 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2BiD-0008MN-0x; Sat, 19 Oct 2024 15:49:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822575.1236530; Sat, 19 Oct 2024 15:49: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 1t2BiC-0008MG-UX; Sat, 19 Oct 2024 15:49:52 +0000
Received: by outflank-mailman (input) for mailman id 822575;
 Sat, 19 Oct 2024 15:49: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2BiB-0008MA-Bh
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 15:49:51 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c43a9369-8e31-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 17:49:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729352978547718.265852665283;
 Sat, 19 Oct 2024 08:49:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c43a9369-8e31-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729352980; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=EGW+NUfNhnrXYGATiZzOVacHAQ+w/+hYQz3c6EiY4SUDmS46sEysjEt8kSgKeVm10G0UNYPQBDXuumcwGSF0dWg/AstfzonYMxahOhG6jV/JzSdHCoEIzk29QfAK57BOt/M+cZ56JCJ/fMyJcsYPgOGgBeUVr2bxYEQSCRjZQsQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729352980; 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=G7BBTQCFyf31hu8f1N++zMSNLcexIXcZNf4Ecwut6ls=; 
	b=G+ewrBlvjtEKyQ4FzFKmxOiyYrvOFeKV2BX0KX6Z43+y9VWDiAN9Js86QTxzBepLvZejVwEkSCSpT6tSVRAEoeD4ldNg/8b0WrN8fhBeTymQB/o/FIl1hNCnYkkhVBcvqySS1ONiFAT24b6gVQnKjtcAmfXnIoTigFJeZ7MOU5U=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729352980;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=G7BBTQCFyf31hu8f1N++zMSNLcexIXcZNf4Ecwut6ls=;
	b=AQgWMocEwHmTG+yGx7+19AQhG7C1F94Q3dyNDo6k0bw3ZHCoPXEJrcD0wzVa82bX
	TWv9p2ToKUN7uxS4MMYFUSkYSojNl1oM7FnWcl6xDI1ATeBUwiNf8/qhHXi7om88wVW
	vh4LWjP+/F/qq//zq6ec3vJ13nPzSVFUviYmsG+s=
Message-ID: <f83bd185-e5cf-4824-b2f0-c5300c06d998@apertussolutions.com>
Date: Sat, 19 Oct 2024 11:49:36 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 17/44] x86/boot: convert microcode loading to consume
 struct boot_info
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-18-dpsmith@apertussolutions.com>
 <c9cc4162-2ddb-4085-be39-a4e477f417c5@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <c9cc4162-2ddb-4085-be39-a4e477f417c5@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/17/24 21:14, Andrew Cooper wrote:
> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>> diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
>> index 8564e4d2c94c..22fea80bc97e 100644
>> --- a/xen/arch/x86/cpu/microcode/core.c
>> +++ b/xen/arch/x86/cpu/microcode/core.c
>> @@ -178,16 +177,16 @@ static void __init microcode_scan_module(
>>       /*
>>        * Try all modules and see whichever could be the microcode blob.
>>        */
>> -    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
>> +    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
>>       {
>>           if ( !test_bit(i, module_map) )
>>               continue;
>>   
> 
> Somewhere in this series, it would be nice to purge the these "module 0
> is dom0" special cases.  I'm not sure where best in the series to do it,
> and it may not be here.
> 
> Later, in "x86/boot: remove module_map usage from microcode loading" you
> convert this test_bit() into a type != UNKNOWN check, but the pattern is
> used elsewhere too.
> 
> How about a for_each_unknown_module(bi, bm) helper?  (which at this
> point can even use module_map in scope).

So I do have the first_boot_module_index() iterator which I am using to 
effectively open-code your suggested for_each_unknown_module() in one or 
two places. I can introduce that helper when I first do the open coding,
though I would like to make it a little more generic. I would prefer to 
do it as for_each_bootmodule(bi, bm, type). There is a 
scenario/enhancement that I would like to get to that may require doing 
an iteration on a type other than BOOTMOD_UNKNOWN.

Would you be okay with leaving the module_map usage at this point and 
changing over to the for_each_bootmodule() when it is dropped? As I see 
it, otherwise I would have to make the helper initially work with 
module_map only to turn around and drop it when module_map goes away. At 
least to me, seems like unnecessary churn unless you see a way without 
causing the churn in the helper.

> If you introduce it at this point, then I think the churn later in the
> series reduces marginally, and I think it removes all the "careful not
> to look at dom0" special cases.

In the end, yes I want to get a way from that, once domain builder is 
introduced, it will be possible to provide the boot modules in any order.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 16:00:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 16:00:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822585.1236543 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2Bsr-000566-07; Sat, 19 Oct 2024 16:00:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822585.1236543; Sat, 19 Oct 2024 16: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 1t2Bsq-00055z-TP; Sat, 19 Oct 2024 16:00:52 +0000
Received: by outflank-mailman (input) for mailman id 822585;
 Sat, 19 Oct 2024 16: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=9wyF=RP=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2Bso-00055t-WF
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 16:00:51 +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 4ee1fb73-8e33-11ef-a0be-8be0dac302b0;
 Sat, 19 Oct 2024 18:00:49 +0200 (CEST)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-43155abaf0bso29913725e9.0
 for <xen-devel@lists.xenproject.org>; Sat, 19 Oct 2024 09:00:49 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37ecf027a50sm4735122f8f.15.2024.10.19.09.00.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 19 Oct 2024 09:00:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4ee1fb73-8e33-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729353648; x=1729958448; 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=d0DVluRQMgQwqA5P8D1A1X7VBqpmGdcgsjJkPsiIBNw=;
        b=BchEC3JLRtEYqj8/lY1+i4z2GLb3QNLVhj7ni/CJ70tRCljLrmR0Y5NC12LeIi0GB5
         inpcYe9Oct39pP6jYljcLDNRRGDuudmDSrA1sf3leIHWhy32xqpMoPbTB/DCKl8JrOq9
         vKvtTln2eQvhfcp6QtxDo9Ew1e+7oNuNGURic=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729353648; x=1729958448;
        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=d0DVluRQMgQwqA5P8D1A1X7VBqpmGdcgsjJkPsiIBNw=;
        b=EeF4Nd0yvDqQjqvxzhvSyk6dzDLGhO8OzJG6hCLaUme0o5upUnV6WR7qz/+bqVfWSm
         pSqoEZnCMGbC1YUKdCE+N20CjN7hzZ3cs+b9QiKC5K30an6a5zn7D1Prkvj5drjp3CUh
         1DmugjWo+DNRuK/JJ7Xer0urLv/97EqodzWw+0j5iR0fgS4hGeUTbkcxMYuZ86K73owS
         U3vTT/8bjuUrmj6C3O0BUqPwzf2oZTfIJ5VvJtC9EpRCQVRnadJxkgwuVTFLKh/NJ+TS
         Lj3RNbkQ2bRy0JbVxx4JAHyYHomN2YB9WP519PCprxSSvpQrDIisJKBABzC9qb6xzwDU
         d8ig==
X-Forwarded-Encrypted: i=1; AJvYcCWBW7pOngt+liPUVp8tkvE7k2P7QKlZOdtaGr+w/XXdvk5qatrUrPkBE5+rFFgBMt62Ngg4BHvwk5Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxnn0+Nn60jdNnmzXecMeuU7BKIJB4R6XSwVMhlo0fO0kzmICua
	WJHX4kb5bXPjG2nzhnBGKYz6zvicsY2W0uEMgiOn5p5td/tRb9glbQz4Au27Ayo=
X-Google-Smtp-Source: AGHT+IGCLVRMxLqwXI3ADi2W95qGXRBye3CnV//hMHW20/cQeosjAXy7omADYLLdF9TQBX2kHfDPbQ==
X-Received: by 2002:a05:600c:34c1:b0:431:52a3:d9d9 with SMTP id 5b1f17b1804b1-431615bd3f2mr47416075e9.0.1729353648520;
        Sat, 19 Oct 2024 09:00:48 -0700 (PDT)
Message-ID: <34770deb-4fff-4b9a-af2e-668a17a40c93@citrix.com>
Date: Sat, 19 Oct 2024 17:00:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 17/44] x86/boot: convert microcode loading to consume
 struct boot_info
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241017170325.3842-1-dpsmith@apertussolutions.com>
 <20241017170325.3842-18-dpsmith@apertussolutions.com>
 <c9cc4162-2ddb-4085-be39-a4e477f417c5@citrix.com>
 <f83bd185-e5cf-4824-b2f0-c5300c06d998@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <f83bd185-e5cf-4824-b2f0-c5300c06d998@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19/10/2024 4:49 pm, Daniel P. Smith wrote:
> On 10/17/24 21:14, Andrew Cooper wrote:
>> On 17/10/2024 6:02 pm, Daniel P. Smith wrote:
>>> diff --git a/xen/arch/x86/cpu/microcode/core.c
>>> b/xen/arch/x86/cpu/microcode/core.c
>>> index 8564e4d2c94c..22fea80bc97e 100644
>>> --- a/xen/arch/x86/cpu/microcode/core.c
>>> +++ b/xen/arch/x86/cpu/microcode/core.c
>>> @@ -178,16 +177,16 @@ static void __init microcode_scan_module(
>>>       /*
>>>        * Try all modules and see whichever could be the microcode blob.
>>>        */
>>> -    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
>>> +    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
>>>       {
>>>           if ( !test_bit(i, module_map) )
>>>               continue;
>>>   
>>
>> Somewhere in this series, it would be nice to purge the these "module 0
>> is dom0" special cases.  I'm not sure where best in the series to do it,
>> and it may not be here.
>>
>> Later, in "x86/boot: remove module_map usage from microcode loading" you
>> convert this test_bit() into a type != UNKNOWN check, but the pattern is
>> used elsewhere too.
>>
>> How about a for_each_unknown_module(bi, bm) helper?  (which at this
>> point can even use module_map in scope).
>
> So I do have the first_boot_module_index() iterator which I am using
> to effectively open-code your suggested for_each_unknown_module() in
> one or two places. I can introduce that helper when I first do the
> open coding,
> though I would like to make it a little more generic. I would prefer
> to do it as for_each_bootmodule(bi, bm, type). There is a
> scenario/enhancement that I would like to get to that may require
> doing an iteration on a type other than BOOTMOD_UNKNOWN.
>
> Would you be okay with leaving the module_map usage at this point and
> changing over to the for_each_bootmodule() when it is dropped? As I
> see it, otherwise I would have to make the helper initially work with
> module_map only to turn around and drop it when module_map goes away.
> At least to me, seems like unnecessary churn unless you see a way
> without causing the churn in the helper.

I'll leave it to your judgement about when is best to introduce the
helper.  You know the series better than I do.

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 16:26:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 16:26:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822599.1236557 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2CHa-0003nP-TM; Sat, 19 Oct 2024 16:26:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822599.1236557; Sat, 19 Oct 2024 16:26: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 1t2CHa-0003nI-Py; Sat, 19 Oct 2024 16:26:26 +0000
Received: by outflank-mailman (input) for mailman id 822599;
 Sat, 19 Oct 2024 16:26: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 1t2CHY-0003lq-RE; Sat, 19 Oct 2024 16:26: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 1t2CHY-0001qj-Od; Sat, 19 Oct 2024 16:26: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 1t2CHY-0006ry-DH; Sat, 19 Oct 2024 16:26:24 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2CHY-0007iz-Cj; Sat, 19 Oct 2024 16: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
Precedence: 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=Nngvi5YJtoxY5NHIYtySiZFlHi8GDKPASRbjN6yB2/U=; b=5jn6ilTggEZXFjE1D8X4muLgPr
	YK3/wYAEUDQZtFVCsmtI3nsRpQkoRw8usBENFOtwE9aiP6x0K0/arYo6J4j+hUnX1KXerwibnsTxC
	Zf75TBK6DToN7T6Ck5BQwrAdxs1WJrdQEwQJnMVJc+J1Vgx6wXQXhs1xvM5HNZIs61us=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188282-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188282: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-pvshim:guest-start:fail:regression
    xen-unstable:test-amd64-amd64-libvirt-pair:guest-migrate/dst_host/src_host/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-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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: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-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-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-amd64-amd64-libvirt-qcow2:migrate-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-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-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
X-Osstest-Versions-This:
    xen=e9f227685e7204cb2293576ee5b745b828cb3cd7
X-Osstest-Versions-That:
    xen=47990ecef286606794d607d4ca8703d71c98d659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 16:26:24 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-pvshim   14 guest-start              fail REGR. vs. 188153

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-pair 28 guest-migrate/dst_host/src_host/debian.repeat fail pass in 188303-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt   16 saverestore-support-check fail blocked in 188153
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188153
 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-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          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-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-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-credit2  16 saverestore-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

version targeted for testing:
 xen                  e9f227685e7204cb2293576ee5b745b828cb3cd7
baseline version:
 xen                  47990ecef286606794d607d4ca8703d71c98d659

Last test of basis   188153  2024-10-17 07:28:21 Z    2 days
Failing since        188193  2024-10-17 18:11:18 Z    1 days    3 attempts
Testing same since   188282  2024-10-19 03:21:26 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrei Cherechesu <andrei.cherechesu@nxp.com>
  Andrew Cooper <andrew.cooper3@citrix.com>
  Christian Lindig <christian.lindig@cloud.com>
  Christopher Clark <christopher.w.clark@gmail.com>
  Daniel P. Smith <dpsmith@apertussolutions.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Javi Merino <javi.merino@cloud.com>
  Julien Grall <jgrall@amazon.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Michal Orzel <michal.orzel@amd.com>
  Peter van der Perk <peter.vander.perk@nxp.com>
  Stefano Stabellini <sstabellini@kernel.org>
  Stewart Hildebrand <stewart.hildebrand@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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                fail    
 test-amd64-amd64-xl-pvshim                                   fail    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 e9f227685e7204cb2293576ee5b745b828cb3cd7
Author: Andrei Cherechesu <andrei.cherechesu@nxp.com>
Date:   Mon Sep 30 14:47:08 2024 +0300

    xen/arm: Add NXP LINFlexD UART early printk support
    
    This adds support for early printk debug via the NXP LINFlexD
    UART controller.
    
    Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
    Signed-off-by: Peter van der Perk <peter.vander.perk@nxp.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit 6ba3b1f8285fbca53c8f6eeb587a1364cbe17939
Author: Andrei Cherechesu <andrei.cherechesu@nxp.com>
Date:   Mon Sep 30 14:47:07 2024 +0300

    xen/arm: Add NXP LINFlexD UART Driver
    
    The LINFlexD UART is an UART controller available on NXP S32
    processors family targeting automotive (for example: S32G2, S32G3,
    S32R).
    
    S32G3 Reference Manual:
    https://www.nxp.com/webapp/Download?colCode=RMS32G3.
    
    Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
    Signed-off-by: Peter van der Perk <peter.vander.perk@nxp.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit 0710b38921ec6740d75148b6b400b6aa44314d2d
Author: Frediano Ziglio <frediano.ziglio@cloud.com>
Date:   Fri Oct 18 14:57:25 2024 +0100

    Update deprecated SPDX license identifiers
    
    As specified in LICENSES/GPL-2.0:
    - GPL-2.0 -> GPL-2.0-only;
    - GPL-2.0+ -> GPL-2.0-or-later.
    
    Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> [RISC-V]

commit 4c21b6affb4c5a3afe22cbc144362091de063366
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Fri Aug 30 18:49:53 2024 +0100

    x86/boot: Further simplify CR4 handling in dom0_construct_pv()
    
    The logic would be more robust disabling SMAP based on its precense in CR4,
    rather than SMAP's accociation with a synthetic feature.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>

commit 6e085825cb073255cc9d5db32b496284b89290d3
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Thu Oct 17 17:20:21 2024 +0100

    CI: Refresh and upgrade the Fedora container
    
    Fedora 29 is long out of date.  Move forward 5 years to Fedora 40.
    
    Include all the usual improvements.  Rework the container to be non-root, use
    heredocs for legibility, and switch to the new naming scheme.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Javi Merino <javi.merino@cloud.com>
    Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>

commit d84f6870fe18565c93937224fc0e1a2b69aa529a
Author: Javi Merino <javi.merino@cloud.com>
Date:   Thu Oct 17 17:20:20 2024 +0100

    ocaml/libs: Fill build failure due to unused variable in ocaml macro
    
    On Fedora 40, the build fails with:
    
        In file included from domain_getinfo_stubs_v1.c:10:
        domain_getinfo_stubs_v1.c: In function 'xsd_glue_failwith':
        /usr/lib64/ocaml/caml/memory.h:275:29: error: unused variable 'caml__frame' [-Werror=unused-variable]
          275 |   struct caml__roots_block *caml__frame = *caml_local_roots_ptr
              |                             ^~~~~~~~~~~
        domain_getinfo_stubs_v1.c:48:9: note: in expansion of macro 'CAMLparam0'
          48 |         CAMLparam0();
             |         ^~~~~~~~~~
        cc1: all warnings being treated as errors
    
    The CAMLparam0 macro is defined in /usr/lib64/ocaml/caml/memory.h:255 as:
    
        #define CAMLparam0()                                                    \$
          struct caml__roots_block** caml_local_roots_ptr =                     \$
            (DO_CHECK_CAML_STATE ? Caml_check_caml_state() : (void)0,           \$
             &CAML_LOCAL_ROOTS);                                                \$
          struct caml__roots_block *caml__frame = *caml_local_roots_ptr
    
    We can't modify the macro.  But, it turns out there's a CAMLnoreturn macro
    with the sole purpose of masking this warning.
    
    Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
    Signed-off-by: Javi Merino <javi.merino@cloud.com>
    Acked-by: Christian Lindig <christian.lindig@cloud.com>

commit 0bcf66d05a3d425e22b995020ca31bdbcaf48823
Author: Javi Merino <javi.merino@cloud.com>
Date:   Thu Oct 17 17:20:19 2024 +0100

    automation: Fix URL to the gitlab container registry documentation
    
    The gitlab documentation is now at
    https://docs.gitlab.com/ee/administration/packages/container_registry.html
    
    Signed-off-by: Javi Merino <javi.merino@cloud.com>
    Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>

commit 572010c552b210f07e633473bd0c1129af4d0b50
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Thu Oct 17 13:02:56 2024 -0400

    x86/boot: split bootstrap_map_addr() out of bootstrap_map()
    
    Using an interface based on addresses directly, not modules.
    
    No functional change.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

commit a285d2ac2e524c808091062c67142cf5924b56f6
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:44 2024 -0400

    x86/boot: move mmap info to boot info
    
    Transition the memory map info to be held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 29aaded97dacd3120842aeeafa91a4a8e6d45180
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:43 2024 -0400

    x86/boot: move cmdline to boot info
    
    Transition Xen's command line to being held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit b438c5fbf4c02145f6ecc8642290d46bf1957388
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:42 2024 -0400

    x86/boot: move boot loader name to boot info
    
    Transition the incoming boot loader name to be held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 038826b61e852469b1a54690dba6d142aceb1f20
Author: Christopher Clark <christopher.w.clark@gmail.com>
Date:   Thu Oct 17 13:02:41 2024 -0400

    x86/boot: move x86 boot module counting into a new boot_info struct
    
    An initial step towards a non-multiboot internal representation of boot
    modules for common code, starting with x86 setup and converting the fields
    that are accessed for the startup calculations.
    
    Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
    structure initially containing a count of the number of boot modules.
    
    No functional change intended.
    
    Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 081683ea578da56dd20b9dc22a64d03c893b47ba
Author: Stewart Hildebrand <stewart.hildebrand@amd.com>
Date:   Fri Oct 11 17:19:56 2024 -0400

    xen/arm: dom0less: cope with missing /gic phandle
    
    If a partial DT has a /gic node, but no references to it, dtc may omit
    the phandle property. With the phandle property missing,
    fdt_get_phandle() returns 0, leading Xen to generate a malformed domU
    dtb due to invalid interrupt-parent phandle references. 0 is an invalid
    phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC.
    
    Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

commit 1e81d2df4f48f37d2086bc75199c75ca93cace92
Author: Michal Orzel <michal.orzel@amd.com>
Date:   Thu Oct 10 12:57:46 2024 +0200

    device-tree: Move dt-overlay.c to common/device-tree/
    
    The code is DT specific and as such should be placed under common
    directory for DT related files. Update MAINTAINERS file accordingly
    and drop the line with a path from a top-level comment in dt-overlay.c.
    It serves no purpose and requires being updated on every code movement.
    
    Signed-off-by: Michal Orzel <michal.orzel@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

commit b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:51 2024 +0200

    x86emul/test: drop Xeon Phi S/G prefetch special case
    
    Another leftover from the dropping of Xeon Phi support.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 09d22fe15cb11254d06413d15fd578093d7fe062
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:31 2024 +0200

    x86emul/test: correct loop body indentation in evex-disp8.c:test_one()
    
    For some reason I entirely consistently screwed these up.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

commit 330d4e62508defa708b55f1b612f42b6a2e2842b
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Thu Oct 17 14:13:50 2024 +0200

    docs: update documentation of reboot param
    
    Reflect changed default mode, and fix formatting of `efi` value.
    
    Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 17:13:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 17:13:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822612.1236573 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2D0y-0003ML-DD; Sat, 19 Oct 2024 17:13:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822612.1236573; Sat, 19 Oct 2024 17: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 1t2D0y-0003ME-9e; Sat, 19 Oct 2024 17:13:20 +0000
Received: by outflank-mailman (input) for mailman id 822612;
 Sat, 19 Oct 2024 17: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 1t2D0w-0003M4-GW; Sat, 19 Oct 2024 17: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 1t2D0w-0002f4-CW; Sat, 19 Oct 2024 17: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 1t2D0w-0007uZ-4Y; Sat, 19 Oct 2024 17:13:18 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2D0w-0005rF-45; Sat, 19 Oct 2024 17: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:Message-Id:Subject:To;
	bh=4cvpDsYXO8+y0WzHYCoo67nIPR18LGizZ8IBpw2SNFo=; b=GvrDbgplRrPzi5t7Zey/E1JKLU
	dkVes5vusGG1JlElcF45yIJNai5v4IaM/SFuXv5h6Oa+BsgJKTf/t2FW+Rx/nsowNTDw95HGnaGAx
	+NJRsZC1VkMI0xdQBBGPnO5Mdb+R9jGKKK/64hIuKFov9V9Lbdl5q/paKZzvKSliDxjE=;
To: xen-devel@lists.xenproject.org
Subject: [xen-unstable bisection] complete test-amd64-amd64-xl-pvshim
Message-Id: <E1t2D0w-0005rF-45@osstest.test-lab.xenproject.org>
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 17:13:18 +0000

branch xen-unstable
xenbranch xen-unstable
job test-amd64-amd64-xl-pvshim
testid guest-start

Tree: linux git://xenbits.xen.org/linux-pvops.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: xen git://xenbits.xen.org/xen.git

*** Found and reproduced problem changeset ***

  Bug is in tree:  xen git://xenbits.xen.org/xen.git
  Bug introduced:  038826b61e852469b1a54690dba6d142aceb1f20
  Bug not present: 081683ea578da56dd20b9dc22a64d03c893b47ba
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/188306/


  commit 038826b61e852469b1a54690dba6d142aceb1f20
  Author: Christopher Clark <christopher.w.clark@gmail.com>
  Date:   Thu Oct 17 13:02:41 2024 -0400
  
      x86/boot: move x86 boot module counting into a new boot_info struct
      
      An initial step towards a non-multiboot internal representation of boot
      modules for common code, starting with x86 setup and converting the fields
      that are accessed for the startup calculations.
      
      Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
      structure initially containing a count of the number of boot modules.
      
      No functional change intended.
      
      Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
      Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
      Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
      Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


For bisection revision-tuple graph see:
   http://logs.test-lab.xenproject.org/osstest/results/bisect/xen-unstable/test-amd64-amd64-xl-pvshim.guest-start.html
Revision IDs in each graph node refer, respectively, to the Trees above.

----------------------------------------
Running cs-bisection-step --graph-out=/home/logs/results/bisect/xen-unstable/test-amd64-amd64-xl-pvshim.guest-start --summary-out=tmp/188306.bisection-summary --basis-template=188153 --blessings=real,real-bisect,real-retry xen-unstable test-amd64-amd64-xl-pvshim guest-start
Searching for failure / basis pass:
 188282 fail [host=nobling0] / 188193 [host=italia0] 188153 [host=fiano0] 188128 [host=albana0] 188110 [host=rimava0] 188095 [host=pinot0] 188088 [host=sabro1] 188085 [host=sabro0] 188079 [host=godello1] 188071 [host=italia1] 188067 [host=septiner1] 188061 [host=godello0] 188052 [host=rimava1] 188045 [host=septiner0] 188034 [host=debina1] 188018 [host=huxelrebe1] 188009 [host=fiano1] 188000 [host=huxelrebe0] 187991 [host=pinot1] 187986 [host=albana1] 187979 [host=italia0] 187968 [host=nobling1] \
 187955 ok.
Failure / basis pass flights: 188282 / 187955
(tree with no url: minios)
(tree with no url: ovmf)
(tree with no url: seabios)
Tree: linux git://xenbits.xen.org/linux-pvops.git
Tree: linuxfirmware git://xenbits.xen.org/osstest/linux-firmware.git
Tree: qemu git://xenbits.xen.org/qemu-xen-traditional.git
Tree: qemuu git://xenbits.xen.org/qemu-xen.git
Tree: xen git://xenbits.xen.org/xen.git
Latest 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 e9f227685e7204cb2293576ee5b745b828cb3cd7
Basis pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 444cb9350f2c1cc202b6b86176ddd8e57525e2d9
Generating revisions with ./adhoc-revtuple-generator  git://xenbits.xen.org/linux-pvops.git#aa4cd140bba57b7064b4c7a7141bebd336d32087-54d90d17e8cee20b163d395829162cec92b583f4 git://xenbits.xen.org/osstest/linux-firmware.git#c530a75c1e6a472b0eb9558310b518f0dfcd8860-c530a75c1e6a472b0eb9558310b518f0dfcd8860 git://xenbits.xen.org/qemu-xen-traditional.git#3d273dd05e51e5a1ffba3d98c7437ee84e8f8764-3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 git://xenbits.xen.org/qemu-xen.git#0df9387c8983e1b1e72d8c574356f57\
 2342c03e6-3fdb3cd3a27a22a050c7d27126a24807a7a45745 git://xenbits.xen.org/xen.git#444cb9350f2c1cc202b6b86176ddd8e57525e2d9-e9f227685e7204cb2293576ee5b745b828cb3cd7
adhoc-revtuple-generator: tree discontiguous: qemu-xen
Loaded 10002 nodes in revision graph
Searching for test results:
 188248 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 a285d2ac2e524c808091062c67142cf5924b56f6
 188282 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 e9f227685e7204cb2293576ee5b745b828cb3cd7
 188283 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 444cb9350f2c1cc202b6b86176ddd8e57525e2d9
 188284 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 a285d2ac2e524c808091062c67142cf5924b56f6
 188286 pass 3ff50bc627aa309e256f30ae17ac7c69cbc2e94d c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
 188287 pass bc2cbf7525ac288e07d465f5a1d8cb8fb9599254 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
 188290 pass ec5b06acbe9371c7c89fe9dbee46e6030d408c89 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
 188291 pass 9a9747288ba0a9ad4f5c9877f18dd245770ad64e c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
 188293 pass 1132e01090016277431454417a2649d3921cd6ea c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
 188294 pass 9c4198dfdca818c5ce19c764d90eabd156bbc6da c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
 188295 pass 2da76b4d08aed3cd3bbaccc9d18cf7f1d4f58994 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
 188297 pass 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 081683ea578da56dd20b9dc22a64d03c893b47ba
 188298 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b438c5fbf4c02145f6ecc8642290d46bf1957388
 188299 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 038826b61e852469b1a54690dba6d142aceb1f20
 188300 pass 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 081683ea578da56dd20b9dc22a64d03c893b47ba
 188301 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 038826b61e852469b1a54690dba6d142aceb1f20
 188302 pass 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 081683ea578da56dd20b9dc22a64d03c893b47ba
 188304 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 e9f227685e7204cb2293576ee5b745b828cb3cd7
 188306 fail 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 038826b61e852469b1a54690dba6d142aceb1f20
 187955 pass aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 444cb9350f2c1cc202b6b86176ddd8e57525e2d9
 187968 [host=nobling1]
 187979 [host=italia0]
 187986 [host=albana1]
 187991 [host=pinot1]
 188000 [host=huxelrebe0]
 188009 [host=fiano1]
 188018 [host=huxelrebe1]
 188034 [host=debina1]
 188045 [host=septiner0]
 188052 [host=rimava1]
 188061 [host=godello0]
 188067 [host=septiner1]
 188071 [host=italia1]
 188079 [host=godello1]
 188085 [host=sabro0]
 188088 [host=sabro1]
 188095 [host=pinot0]
 188110 [host=rimava0]
 188128 [host=albana0]
 188193 [host=italia0]
 188153 [host=fiano0]
Searching for interesting versions
 Result found: flight 187955 (pass), for basis pass
 For basis failure, parent search stopping at 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 081683ea578da56dd20b9dc22a64d03c893b47ba, results HASH(0x55e0ff7751f0) HASH(0x55e0ff769978) HASH(0x55e0ff76c280) For basis failure, parent search stopping at 2da76b4d08aed3cd3bbaccc9d18cf7f1d4f58994 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a\
 27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d, results HASH(0x55e0ff74bd68) For basis failure, parent search stopping at 9c4198dfdca818c5ce19c764d90eabd156bbc6da c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d, results HASH(0x55e0ff793df0) For basis failure, parent search stopping at 1132e01090016277431454417a2649d3921cd6ea c530a75c1e6a472b0eb9558310b518f\
 0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d, results HASH(0x55e0ff78fdb8) For basis failure, parent search stopping at 9a9747288ba0a9ad4f5c9877f18dd245770ad64e c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d, results HASH(0x55e0ff78bda8) For basis failure, parent search stopping at ec5b06acbe93\
 71c7c89fe9dbee46e6030d408c89 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d, results HASH(0x55e0ff75a6f0) For basis failure, parent search stopping at bc2cbf7525ac288e07d465f5a1d8cb8fb9599254 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d, results HASH(0x55e0ff784b6\
 8) For basis failure, parent search stopping at 3ff50bc627aa309e256f30ae17ac7c69cbc2e94d c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d, results HASH(0x55e0ff753db0) For basis failure, parent search stopping at aa4cd140bba57b7064b4c7a7141bebd336d32087 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 0df9387c8983e1b1e72d8c574356f572342c03e6 444cb935\
 0f2c1cc202b6b86176ddd8e57525e2d9, results HASH(0x55e0ff7529a8) HASH(0x55e0ff799628) Result found: flight 188248 (fail), for basis failure (at ancestor ~4766)
 Repro found: flight 188283 (pass), for basis pass
 Repro found: flight 188304 (fail), for basis failure
 0 revisions at 54d90d17e8cee20b163d395829162cec92b583f4 c530a75c1e6a472b0eb9558310b518f0dfcd8860 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764 3fdb3cd3a27a22a050c7d27126a24807a7a45745 081683ea578da56dd20b9dc22a64d03c893b47ba
No revisions left to test, checking graph state.
 Result found: flight 188297 (pass), for last pass
 Result found: flight 188299 (fail), for first failure
 Repro found: flight 188300 (pass), for last pass
 Repro found: flight 188301 (fail), for first failure
 Repro found: flight 188302 (pass), for last pass
 Repro found: flight 188306 (fail), for first failure

*** Found and reproduced problem changeset ***

  Bug is in tree:  xen git://xenbits.xen.org/xen.git
  Bug introduced:  038826b61e852469b1a54690dba6d142aceb1f20
  Bug not present: 081683ea578da56dd20b9dc22a64d03c893b47ba
  Last fail repro: http://logs.test-lab.xenproject.org/osstest/logs/188306/


  commit 038826b61e852469b1a54690dba6d142aceb1f20
  Author: Christopher Clark <christopher.w.clark@gmail.com>
  Date:   Thu Oct 17 13:02:41 2024 -0400
  
      x86/boot: move x86 boot module counting into a new boot_info struct
      
      An initial step towards a non-multiboot internal representation of boot
      modules for common code, starting with x86 setup and converting the fields
      that are accessed for the startup calculations.
      
      Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
      structure initially containing a count of the number of boot modules.
      
      No functional change intended.
      
      Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
      Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
      Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
      Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

neato: graph is too large for cairo-renderer bitmaps. Scaling by 0.632177 to fit
pnmtopng: 39 colors found
Revision graph left in /home/logs/results/bisect/xen-unstable/test-amd64-amd64-xl-pvshim.guest-start.{dot,ps,png,html,svg}.
----------------------------------------
188306: tolerable ALL FAIL

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

Failures :-/ but no regressions.

Tests which did not succeed,
including tests which could not be run:
 test-amd64-amd64-xl-pvshim   14 guest-start             fail baseline untested


jobs:
 test-amd64-amd64-xl-pvshim                                   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



From xen-devel-bounces@lists.xenproject.org Sat Oct 19 18:21:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 18:21:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822639.1236583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2E4T-0004j3-Q0; Sat, 19 Oct 2024 18:21:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822639.1236583; Sat, 19 Oct 2024 18:21: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 1t2E4T-0004iw-NG; Sat, 19 Oct 2024 18:21:01 +0000
Received: by outflank-mailman (input) for mailman id 822639;
 Sat, 19 Oct 2024 18:21: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=9wyF=RP=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2E4S-0004iq-LZ
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 18:21:00 +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 e32a4d19-8e46-11ef-a0be-8be0dac302b0;
 Sat, 19 Oct 2024 20:20:58 +0200 (CEST)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-37d6a2aa748so2090044f8f.1
 for <xen-devel@lists.xenproject.org>; Sat, 19 Oct 2024 11:20:58 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d6383sm3935566b.6.2024.10.19.11.20.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 19 Oct 2024 11:20:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e32a4d19-8e46-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729362057; x=1729966857; 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=YQ+XswcKE3eTwpfFb8whrcadqSkZhZ894uDrIh9ujhg=;
        b=N8WkivhBLANNsMBBkRQgtb3E6sDtTGigVL/WHmS3qTPLBVqsYFrtPw2yKt9DZs/ANW
         iReSdysqCn0KX6E1dHhANhSE+jZ9DMhpb/qFdvwRglj8viJQ+Tk9hadaHiioO4HcNSx5
         xcoMXa3YzShhtnjYfBtwZn0HIDD9HYB+peeoY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729362057; x=1729966857;
        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=YQ+XswcKE3eTwpfFb8whrcadqSkZhZ894uDrIh9ujhg=;
        b=Lw1OuPq6Ho4ugv7Nc2JtgpqCyq4hXlV/4gO0TKc54apaug4FOcnKCuUDXnKTturAQk
         X1xdaJ2ft+bvxcmUubCb+Oi98F8V8JitspZeftjppCneFK7QP6PfRaJfIFki3oYvCn97
         2FDIbpryMyDrQIONHSzZSxFsQxxWeGaMarCca/eFCqF9I9Ex0ECe5CmARQhd9LeJF2NR
         xBLz6/dd37Al+e0oX7PAtrkDnEFksx1D2pgeh65DhlABww4Ua8B0mO1lvmPY0EKYLqfe
         QjHTd1d4Y3kEmJwmTleUm9mvTpgTvuBToZxmzsSvL3WKP0LYsfRbqiwuacr0DeIVlm8Q
         5xFA==
X-Gm-Message-State: AOJu0YzTO8T7wdCKBDCPDbsiKt8GKgQg7acH10FPnu6CsmpvW0CJFb7L
	eRASe653u+ij+MT4CTGFb/vYK7UaPg6P+ycjNo8CWhZ0tnYNkt6GteK+CL/cLoLXKrsdHwQ2y5m
	u
X-Google-Smtp-Source: AGHT+IFfJF5sibyxVlWbMk0NcQlVo9m8EMt7Xnv2eUv43QIVWGecscVNiqZcQInxW/vq6wHKROq7Uw==
X-Received: by 2002:a5d:5512:0:b0:37d:4fb1:4fab with SMTP id ffacd0b85a97d-37eab6ec42dmr3645829f8f.57.1729362057124;
        Sat, 19 Oct 2024 11:20:57 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH] x86/boot: Fix PVH boot following the start of the MBI->BI conversion
Date: Sat, 19 Oct 2024 19:20:54 +0100
Message-Id: <20241019182054.3842879-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

pvh_init() sets up the mbi pointer, but leaves mbi_p at 0.  This isn't
compatbile with multiboot_fill_boot_info() starting from the physical address,
in order to remove the use of the mbi pointer.

Fixes: 038826b61e85 ("x86/boot: move x86 boot module counting into a new boot_info struct")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>

This is a testiment to how tangled the boot code really is.
---
 xen/arch/x86/setup.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 6746ed8cced6..bfede5064e8c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1048,6 +1048,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         ASSERT(mbi_p == 0);
         pvh_init(&mbi, &mod);
+        mbi_p = __pa(mbi);
     }
     else
     {

base-commit: e9f227685e7204cb2293576ee5b745b828cb3cd7
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Sat Oct 19 18:24:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 18:24:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822644.1236592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2E7P-0005Fh-6Q; Sat, 19 Oct 2024 18:24:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822644.1236592; Sat, 19 Oct 2024 18: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 1t2E7P-0005Fa-3m; Sat, 19 Oct 2024 18:24:03 +0000
Received: by outflank-mailman (input) for mailman id 822644;
 Sat, 19 Oct 2024 18:24: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=qdF/=RP=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2E7O-0005FU-1p
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 18:24:02 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4e478b1f-8e47-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 20:23:59 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729362234172172.78630606787408;
 Sat, 19 Oct 2024 11:23:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4e478b1f-8e47-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729362235; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=N84psd4OuWCRHbPXfMqew9IriduK9qEoF8SMbOEk9jt6mnPcPoEQL3Nw35Lbp7yYJ4+u6k2sclOO/MEBQLVWHiUFMpwFOsYnRASyINbPWZX33LCT9khjpmYrWZlDrIpZova8I2sHaCLkm7FUuIBONZvSI7N+2NzZW8TjxeirDn4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729362235; 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=SHoNmuO0gYmDxQNpXWyCwOI+zewpEv3IPGRCkzcH7YU=; 
	b=mMy0gKtMXQJ04XONQvrkIoq3+NCBZx7qCk2Gh4sh+z0wlr6/tMAF1zUMoJx4Y7wnmWMu/BE7zpfDHyqMPm3kKMWtnMtxH9FJbwNwayW05io1Mbp7mSlDXB3lHJ1qsl43Y6MbuW6lSLgQUTFJ1sW02eZT5buCM72tQNmGxuJWSMs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729362235;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=SHoNmuO0gYmDxQNpXWyCwOI+zewpEv3IPGRCkzcH7YU=;
	b=euagaa4ru97T1FfnxXognOqmyKQkEXIaBRRoXzV9I4bxXv/e2Pwuw7AAV5fKniYb
	CIzHwHEGHiMFKPOaWjrkd5ePhRpjYAUbET10Em22SHIkWeFX3lnPALbzWoAjhB5fjXv
	TMNpGkAnT3oTY1Bpp4/cprSszrhXIkgY2+DzPQQE=
Message-ID: <bf9041cd-04bb-41c4-a221-67403d1ad6bb@apertussolutions.com>
Date: Sat, 19 Oct 2024 14:23:52 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Fix PVH boot following the start of the MBI->BI
 conversion
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>
References: <20241019182054.3842879-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241019182054.3842879-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/19/24 14:20, Andrew Cooper wrote:
> pvh_init() sets up the mbi pointer, but leaves mbi_p at 0.  This isn't
> compatbile with multiboot_fill_boot_info() starting from the physical address,
> in order to remove the use of the mbi pointer.
> 
> Fixes: 038826b61e85 ("x86/boot: move x86 boot module counting into a new boot_info struct")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
> This is a testiment to how tangled the boot code really is.
> ---
>   xen/arch/x86/setup.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 6746ed8cced6..bfede5064e8c 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1048,6 +1048,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>       {
>           ASSERT(mbi_p == 0);
>           pvh_init(&mbi, &mod);
> +        mbi_p = __pa(mbi);
>       }
>       else
>       {
> 
> base-commit: e9f227685e7204cb2293576ee5b745b828cb3cd7

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 18:25:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 18:25:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822650.1236603 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2E8Z-0005mG-GA; Sat, 19 Oct 2024 18:25:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822650.1236603; Sat, 19 Oct 2024 18:25: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 1t2E8Z-0005m9-Cl; Sat, 19 Oct 2024 18:25:15 +0000
Received: by outflank-mailman (input) for mailman id 822650;
 Sat, 19 Oct 2024 18:25: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=9wyF=RP=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2E8Y-0005m3-Et
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 18:25:14 +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 7ab3617a-8e47-11ef-99a3-01e77a169b0f;
 Sat, 19 Oct 2024 20:25:12 +0200 (CEST)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-4315baec681so29703605e9.2
 for <xen-devel@lists.xenproject.org>; Sat, 19 Oct 2024 11:25:12 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f5c3127sm1141985e9.38.2024.10.19.11.25.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 19 Oct 2024 11:25:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ab3617a-8e47-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729362312; x=1729967112; 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=xKUZzJ2uALh4rWMkrM2kQSZXhZk0gUxTCwmYdo77P1I=;
        b=FJz7RsCYCmjCfyukY0UAhaaSNQfc3ayaML6W7RGBaNKmZ5R45RSlG4u+c+vpBzS8lx
         +a9QIf5D+evwcQrD3hBieCCMpejjh7u5sJuYB9ZaJZY/EWPJcelx+vv+p/2RamndMuie
         LR5qTNfZ8PAUA9bjr9EBLi8MxOLds14FT/w74=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729362312; x=1729967112;
        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=xKUZzJ2uALh4rWMkrM2kQSZXhZk0gUxTCwmYdo77P1I=;
        b=xIuFdOWUvJ6nz7cg0Xn1oeCjoYTbdHGrTDLJoh02g+VGgqlkV82Kttpeo0qolItind
         LMCDJoBzlXJXKGNaRjomGtZpCOBc/YxenJxagL+IBEwyp66cp8X2IIsxMjsACia0UpNS
         Z6yapbXdRdHg3AKeOi19Pt4lxRlNr06P2PlJ58Oo39ribOMVunUoFPM1IL9g8PEZY+Bz
         xNu5WW0NEZRpqBsdEcLu29w9ZVWYDzNX1qWfuC8x+K1Rrc8SZauSvHXtDFlbFtagnBFx
         mJCIKpmNICYoEaxMP9JzuXsn/afxf2Iv5PNv6ISPVsGD06bIrKaR3Cc2YADHyvxTvBgw
         BdqQ==
X-Forwarded-Encrypted: i=1; AJvYcCWXn1iq8FpStCbVGdER6TR/bFb36vE1Ch2LJsp4M3VjPG34UmsGTfp/jpmnSjlvcdZfsX/EDbxzo8U=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyh6LI2TGG7OBSaU9omQaXh3uWGAXGP0kgt2kiEXQMzMzj+Nuwo
	v+PIcZMc45IVPsY0odzc2X9y5TtUm+O6KD14yNw1/0FFThxqyruIXIw6FlTwkIE=
X-Google-Smtp-Source: AGHT+IEp++LahRvUD1lKKFhIpoeGZnAfN/7Ne5CZSdCJOQfwgnaGYNYotm1QTxRz3wy0g85+eM0+Kw==
X-Received: by 2002:a05:600c:1c8d:b0:431:12a8:7f1a with SMTP id 5b1f17b1804b1-4316165d3acmr57045915e9.16.1729362311964;
        Sat, 19 Oct 2024 11:25:11 -0700 (PDT)
Message-ID: <705c02d2-c0a4-4b02-a5c2-88538eeab644@citrix.com>
Date: Sat, 19 Oct 2024 19:25:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Fix PVH boot following the start of the MBI->BI
 conversion
To: "Daniel P. Smith" <dpsmith@apertussolutions.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>
References: <20241019182054.3842879-1-andrew.cooper3@citrix.com>
 <bf9041cd-04bb-41c4-a221-67403d1ad6bb@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <bf9041cd-04bb-41c4-a221-67403d1ad6bb@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19/10/2024 7:23 pm, Daniel P. Smith wrote:
> On 10/19/24 14:20, Andrew Cooper wrote:
>> pvh_init() sets up the mbi pointer, but leaves mbi_p at 0.  This isn't
>> compatbile with multiboot_fill_boot_info() starting from the physical
>> address,
>> in order to remove the use of the mbi pointer.
>>
>> Fixes: 038826b61e85 ("x86/boot: move x86 boot module counting into a
>> new boot_info struct")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
>>
>> This is a testiment to how tangled the boot code really is.
>> ---
>>   xen/arch/x86/setup.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 6746ed8cced6..bfede5064e8c 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1048,6 +1048,7 @@ void asmlinkage __init noreturn
>> __start_xen(unsigned long mbi_p)
>>       {
>>           ASSERT(mbi_p == 0);
>>           pvh_init(&mbi, &mod);
>> +        mbi_p = __pa(mbi);
>>       }
>>       else
>>       {
>>
>> base-commit: e9f227685e7204cb2293576ee5b745b828cb3cd7
>
> Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Thanks.  I'll get this committed right away so OSSTest can start working
on untangling itself.

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 19:07:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 19:07:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822661.1236616 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2En9-00075h-En; Sat, 19 Oct 2024 19:07:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822661.1236616; Sat, 19 Oct 2024 19: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 1t2En9-00075a-Bs; Sat, 19 Oct 2024 19:07:11 +0000
Received: by outflank-mailman (input) for mailman id 822661;
 Sat, 19 Oct 2024 19: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=+jKr=RP=gmail.com=christopher.w.clark.io@srs-se1.protection.inumbo.net>)
 id 1t2En8-00075U-ON
 for xen-devel@lists.xenproject.org; Sat, 19 Oct 2024 19:07:10 +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 569610ab-8e4d-11ef-a0be-8be0dac302b0;
 Sat, 19 Oct 2024 21:07:09 +0200 (CEST)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-43155afca99so23370475e9.1
 for <xen-devel@lists.xenproject.org>; Sat, 19 Oct 2024 12:07:09 -0700 (PDT)
Received: from localhost.localdomain ([91.85.47.110])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f5cc88esm1928725e9.46.2024.10.19.12.07.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 19 Oct 2024 12:07:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.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: 569610ab-8e4d-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729364828; x=1729969628; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:sender:from:to:cc:subject:date:message-id:reply-to;
        bh=k2G4BWrXzsillw6CXWZmHKEYScfoF2QkPHpWYHr5Z0I=;
        b=LlK1jR1QhOX1EIKIhwsuDCvMqV/HzkLhY6J886CMltzGdTNTWXgpoCgElPrziVQbGN
         bkKd80A/vAOrUiVmMku+70I5+cBV556uHajwUmRUVNlIH2lQMCqLHDfodfxxahNuWceS
         fQc60DCzlfPxGIUh3vmFVl/LIFn7qn36MuXIzbdfBYf6NPxU0PlegJyusHDaCmudJ5EZ
         TPor9oyMnwyuXmriGZnW+pq5H92hsJL+Ij+hIRSJFm6tjYHxKq/r7wiNIYm3oq+qxZjq
         DsDo4Np/uuIUyevGfaeISOvbtEivC7jOjVGId0ho6ue30qiDWMJUBUnSWQwFdKIy3IYM
         MVUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729364828; x=1729969628;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:sender:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=k2G4BWrXzsillw6CXWZmHKEYScfoF2QkPHpWYHr5Z0I=;
        b=RFIA51yBYoD8BByP/uGMsHP70PaBNtec00/HhOl81OgTV2J1pntSKa94yfr+LkhRWI
         3lYSvQWP/95E8VeSAurrD1/l+5QTl0nwgKPwo4oMtYOAIdltE8O4V63RgyBTZOEEaeaZ
         nvRyroIHy7tmXzphbi8fEnQM+OnIDjs8o4gHeJJBmpPA1hQp9Cmed/zuLuPZTnLROoKe
         Nwo65Hl+ZGBtuUoGfFGjYW6BlVVZEnimReUruQf1N3spUGyjIn+IY+qFK24sOKUQ1t6N
         6GQ76XyhOehXmZVHG7XKT8mt18NmPlyONTUWPVunNlzAuttDF8jWcS7cWxhQetji16Pu
         VjNA==
X-Gm-Message-State: AOJu0YwUzc5j+ylahEJoK2WWk+PJT7dtMLVjylSQuhaphC59r/HHR0u2
	Q9QCdGLYbtNHAS7pXvwXukyCjmy32G3DfKIR7yjD6vpppuW8mJXeOUFhwyfdhLnaCw==
X-Google-Smtp-Source: AGHT+IEOAZgCBoX9AeTfNTe3zz9ZBzg7/QsmiCfhszUg+GNVAKqIN3ebVrhP6U4YDZ8ibGhXfAcRzg==
X-Received: by 2002:a05:600c:4ed2:b0:431:57cf:f13d with SMTP id 5b1f17b1804b1-4316161dcc1mr41128045e9.3.1729364827750;
        Sat, 19 Oct 2024 12:07:07 -0700 (PDT)
Sender: Christopher Clark <christopher.w.clark.io@gmail.com>
From: Christopher Clark <christopher.w.clark@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Daniel Smith <dpsmith@apertussolutions.com>,
	Rich Persaud <persaur@gmail.com>,
	Jason Andryuk <jandryuk@gmail.com>,
	openxt@googlegroups.com
Subject: [PATCH] SUPPORT.md: Argo: Upgrade status to Tech Preview
Date: Sat, 19 Oct 2024 20:06:52 +0100
Message-Id: <20241019190652.21559-1-christopher.w.clark@gmail.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Recent patches to xen-devel indicate active interest in Argo within the Xen
community, and as the feature has been documented and in use by
OpenXT for multiple years, update the Xen SUPPORT.md statement of status.

Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
---
 SUPPORT.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/SUPPORT.md b/SUPPORT.md
index 23dd7e6424..4f56094356 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -848,7 +848,7 @@ This feature is not security supported: see https://xenbits.xen.org/xsa/advisory
 
 ### Argo: Inter-domain message delivery by hypercall
 
-    Status: Experimental
+    Status: Tech Preview
 
 ### x86/PCI Device Passthrough
 
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Sat Oct 19 21:59:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 21:59:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822677.1236627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2HTy-00088k-9V; Sat, 19 Oct 2024 21:59:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822677.1236627; Sat, 19 Oct 2024 21:59: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 1t2HTy-00088d-60; Sat, 19 Oct 2024 21:59:34 +0000
Received: by outflank-mailman (input) for mailman id 822677;
 Sat, 19 Oct 2024 21:59: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 1t2HTw-00088Q-Nd; Sat, 19 Oct 2024 21:59: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 1t2HTw-0007YO-LC; Sat, 19 Oct 2024 21:59: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 1t2HTw-0002cd-AQ; Sat, 19 Oct 2024 21:59:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2HTw-0007by-9z; Sat, 19 Oct 2024 21:59: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=qGvJEkkLxUmIBPeO2Q3QU5q59EDHkNZYmno4NSWPxCw=; b=43POvoArVT9Tpht2yaxIsyk23y
	IKwHrSzd6Nc8bvP9E4XJ2LNwO16G98nKZc2Qb40ddhjfwrLV57hfetWp1cFO6HtkbqyRlrTMPVoB6
	DXxVthzHdTqvEqGR1N08oarPZGbog4a6IUlKC2Awy2Hc11YsLzrDXiQCaEWRZKw0vfT0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188307-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188307: 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=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
X-Osstest-Versions-That:
    xen=e9f227685e7204cb2293576ee5b745b828cb3cd7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 21:59:32 +0000

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

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                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
baseline version:
 xen                  e9f227685e7204cb2293576ee5b745b828cb3cd7

Last test of basis   188274  2024-10-18 23:00:25 Z    0 days
Testing same since   188307  2024-10-19 19:00:26 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
   e9f227685e..73785a4c77  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7 -> smoke


From xen-devel-bounces@lists.xenproject.org Sat Oct 19 22:54:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 19 Oct 2024 22:54:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822689.1236637 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2ILS-0008IG-0D; Sat, 19 Oct 2024 22:54:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822689.1236637; Sat, 19 Oct 2024 22:54: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 1t2ILR-0008I9-T1; Sat, 19 Oct 2024 22:54:49 +0000
Received: by outflank-mailman (input) for mailman id 822689;
 Sat, 19 Oct 2024 22:54: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 1t2ILQ-0008HD-Lp; Sat, 19 Oct 2024 22:54: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 1t2ILQ-00005N-IC; Sat, 19 Oct 2024 22:54: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 1t2ILQ-0003ys-2J; Sat, 19 Oct 2024 22:54:48 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2ILQ-0006WF-1i; Sat, 19 Oct 2024 22:54: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=uVT50tdiVQ68qyQhU933AOyxA35Lu3TuWKXWxdQMQcE=; b=EJmCkipHJOd68ALYAcsPzRnbzr
	df2x8KHy+NhGTymG5gAefzwKXFZEGWDrkMoS3Vm2lVSFEr+X9+JXEr/xIv+hHxMvxuxula4hj9+KS
	2tViWUfu/p74m2NyB4PdL8m3ks8JwkEluozesXzb82kYBzUVkJ5d+b2XMpCGsxCsKoWA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188305-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188305: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:build-armhf:xen-build:fail:regression
    xen-unstable:test-amd64-amd64-xl-pvshim:guest-start:fail:regression
    xen-unstable:test-amd64-amd64-libvirt-pair:guest-migrate/dst_host/src_host/debian.repeat:fail:heisenbug
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    xen-unstable:build-armhf-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-examine:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt: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-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-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2: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-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-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: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-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-qcow2:migrate-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-raw: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-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
X-Osstest-Versions-This:
    xen=e9f227685e7204cb2293576ee5b745b828cb3cd7
X-Osstest-Versions-That:
    xen=47990ecef286606794d607d4ca8703d71c98d659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 19 Oct 2024 22:54:48 +0000

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

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-armhf                   6 xen-build                fail REGR. vs. 188128
 test-amd64-amd64-xl-pvshim   14 guest-start              fail REGR. vs. 188153

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-pair 28 guest-migrate/dst_host/src_host/debian.repeat fail in 188282 pass in 188305
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188282

Tests which did not succeed, but are not blocking:
 build-armhf-libvirt           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-rtds      1 build-check(1)               blocked  n/a
 test-armhf-armhf-examine      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt      1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt-vhd  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl           1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-arndale   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit1   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-credit2   1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-multivcpu  1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-qcow2     1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-raw       1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt 16 saverestore-support-check fail in 188282 blocked in 188153
 test-armhf-armhf-xl         15 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl     16 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-libvirt    15 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-qcow2   14 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-qcow2 15 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-xl-raw     14 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-raw 15 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-credit2 15 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-xl-credit2 16 saverestore-support-check fail in 188282 never pass
 test-armhf-armhf-xl-rtds    15 migrate-support-check fail in 188282 never pass
 test-armhf-armhf-xl-rtds 16 saverestore-support-check fail in 188282 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188153
 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-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-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-amd64-amd64-libvirt-raw 14 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-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

version targeted for testing:
 xen                  e9f227685e7204cb2293576ee5b745b828cb3cd7
baseline version:
 xen                  47990ecef286606794d607d4ca8703d71c98d659

Last test of basis   188153  2024-10-17 07:28:21 Z    2 days
Failing since        188193  2024-10-17 18:11:18 Z    2 days    4 attempts
Testing same since   188282  2024-10-19 03:21:26 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrei Cherechesu <andrei.cherechesu@nxp.com>
  Andrew Cooper <andrew.cooper3@citrix.com>
  Christian Lindig <christian.lindig@cloud.com>
  Christopher Clark <christopher.w.clark@gmail.com>
  Daniel P. Smith <dpsmith@apertussolutions.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Javi Merino <javi.merino@cloud.com>
  Julien Grall <jgrall@amazon.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Michal Orzel <michal.orzel@amd.com>
  Peter van der Perk <peter.vander.perk@nxp.com>
  Stefano Stabellini <sstabellini@kernel.org>
  Stewart Hildebrand <stewart.hildebrand@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                                                  fail    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          blocked 
 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                                          blocked 
 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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                                  blocked 
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  blocked 
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  blocked 
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     blocked 
 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                                     blocked 
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                blocked 
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   fail    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    blocked 
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-raw                                      blocked 
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     blocked 
 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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 blocked 
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 e9f227685e7204cb2293576ee5b745b828cb3cd7
Author: Andrei Cherechesu <andrei.cherechesu@nxp.com>
Date:   Mon Sep 30 14:47:08 2024 +0300

    xen/arm: Add NXP LINFlexD UART early printk support
    
    This adds support for early printk debug via the NXP LINFlexD
    UART controller.
    
    Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
    Signed-off-by: Peter van der Perk <peter.vander.perk@nxp.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit 6ba3b1f8285fbca53c8f6eeb587a1364cbe17939
Author: Andrei Cherechesu <andrei.cherechesu@nxp.com>
Date:   Mon Sep 30 14:47:07 2024 +0300

    xen/arm: Add NXP LINFlexD UART Driver
    
    The LINFlexD UART is an UART controller available on NXP S32
    processors family targeting automotive (for example: S32G2, S32G3,
    S32R).
    
    S32G3 Reference Manual:
    https://www.nxp.com/webapp/Download?colCode=RMS32G3.
    
    Signed-off-by: Andrei Cherechesu <andrei.cherechesu@nxp.com>
    Signed-off-by: Peter van der Perk <peter.vander.perk@nxp.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit 0710b38921ec6740d75148b6b400b6aa44314d2d
Author: Frediano Ziglio <frediano.ziglio@cloud.com>
Date:   Fri Oct 18 14:57:25 2024 +0100

    Update deprecated SPDX license identifiers
    
    As specified in LICENSES/GPL-2.0:
    - GPL-2.0 -> GPL-2.0-only;
    - GPL-2.0+ -> GPL-2.0-or-later.
    
    Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com> [RISC-V]

commit 4c21b6affb4c5a3afe22cbc144362091de063366
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Fri Aug 30 18:49:53 2024 +0100

    x86/boot: Further simplify CR4 handling in dom0_construct_pv()
    
    The logic would be more robust disabling SMAP based on its precense in CR4,
    rather than SMAP's accociation with a synthetic feature.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>

commit 6e085825cb073255cc9d5db32b496284b89290d3
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Thu Oct 17 17:20:21 2024 +0100

    CI: Refresh and upgrade the Fedora container
    
    Fedora 29 is long out of date.  Move forward 5 years to Fedora 40.
    
    Include all the usual improvements.  Rework the container to be non-root, use
    heredocs for legibility, and switch to the new naming scheme.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Javi Merino <javi.merino@cloud.com>
    Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>

commit d84f6870fe18565c93937224fc0e1a2b69aa529a
Author: Javi Merino <javi.merino@cloud.com>
Date:   Thu Oct 17 17:20:20 2024 +0100

    ocaml/libs: Fill build failure due to unused variable in ocaml macro
    
    On Fedora 40, the build fails with:
    
        In file included from domain_getinfo_stubs_v1.c:10:
        domain_getinfo_stubs_v1.c: In function 'xsd_glue_failwith':
        /usr/lib64/ocaml/caml/memory.h:275:29: error: unused variable 'caml__frame' [-Werror=unused-variable]
          275 |   struct caml__roots_block *caml__frame = *caml_local_roots_ptr
              |                             ^~~~~~~~~~~
        domain_getinfo_stubs_v1.c:48:9: note: in expansion of macro 'CAMLparam0'
          48 |         CAMLparam0();
             |         ^~~~~~~~~~
        cc1: all warnings being treated as errors
    
    The CAMLparam0 macro is defined in /usr/lib64/ocaml/caml/memory.h:255 as:
    
        #define CAMLparam0()                                                    \$
          struct caml__roots_block** caml_local_roots_ptr =                     \$
            (DO_CHECK_CAML_STATE ? Caml_check_caml_state() : (void)0,           \$
             &CAML_LOCAL_ROOTS);                                                \$
          struct caml__roots_block *caml__frame = *caml_local_roots_ptr
    
    We can't modify the macro.  But, it turns out there's a CAMLnoreturn macro
    with the sole purpose of masking this warning.
    
    Fixes: a6576011a4d2 ("ocaml/libs: Implement a dynamically-loaded plugin for Xenctrl.domain_getinfo")
    Signed-off-by: Javi Merino <javi.merino@cloud.com>
    Acked-by: Christian Lindig <christian.lindig@cloud.com>

commit 0bcf66d05a3d425e22b995020ca31bdbcaf48823
Author: Javi Merino <javi.merino@cloud.com>
Date:   Thu Oct 17 17:20:19 2024 +0100

    automation: Fix URL to the gitlab container registry documentation
    
    The gitlab documentation is now at
    https://docs.gitlab.com/ee/administration/packages/container_registry.html
    
    Signed-off-by: Javi Merino <javi.merino@cloud.com>
    Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>

commit 572010c552b210f07e633473bd0c1129af4d0b50
Author: Andrew Cooper <andrew.cooper3@citrix.com>
Date:   Thu Oct 17 13:02:56 2024 -0400

    x86/boot: split bootstrap_map_addr() out of bootstrap_map()
    
    Using an interface based on addresses directly, not modules.
    
    No functional change.
    
    Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

commit a285d2ac2e524c808091062c67142cf5924b56f6
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:44 2024 -0400

    x86/boot: move mmap info to boot info
    
    Transition the memory map info to be held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 29aaded97dacd3120842aeeafa91a4a8e6d45180
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:43 2024 -0400

    x86/boot: move cmdline to boot info
    
    Transition Xen's command line to being held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit b438c5fbf4c02145f6ecc8642290d46bf1957388
Author: Daniel P. Smith <dpsmith@apertussolutions.com>
Date:   Thu Oct 17 13:02:42 2024 -0400

    x86/boot: move boot loader name to boot info
    
    Transition the incoming boot loader name to be held in struct boot_info.
    
    No functional change intended.
    
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 038826b61e852469b1a54690dba6d142aceb1f20
Author: Christopher Clark <christopher.w.clark@gmail.com>
Date:   Thu Oct 17 13:02:41 2024 -0400

    x86/boot: move x86 boot module counting into a new boot_info struct
    
    An initial step towards a non-multiboot internal representation of boot
    modules for common code, starting with x86 setup and converting the fields
    that are accessed for the startup calculations.
    
    Introduce a new header, <asm/bootinfo.h>, and populate it with a new boot_info
    structure initially containing a count of the number of boot modules.
    
    No functional change intended.
    
    Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
    Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
    Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 081683ea578da56dd20b9dc22a64d03c893b47ba
Author: Stewart Hildebrand <stewart.hildebrand@amd.com>
Date:   Fri Oct 11 17:19:56 2024 -0400

    xen/arm: dom0less: cope with missing /gic phandle
    
    If a partial DT has a /gic node, but no references to it, dtc may omit
    the phandle property. With the phandle property missing,
    fdt_get_phandle() returns 0, leading Xen to generate a malformed domU
    dtb due to invalid interrupt-parent phandle references. 0 is an invalid
    phandle value. Add a zero check, and fall back to GUEST_PHANDLE_GIC.
    
    Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

commit 1e81d2df4f48f37d2086bc75199c75ca93cace92
Author: Michal Orzel <michal.orzel@amd.com>
Date:   Thu Oct 10 12:57:46 2024 +0200

    device-tree: Move dt-overlay.c to common/device-tree/
    
    The code is DT specific and as such should be placed under common
    directory for DT related files. Update MAINTAINERS file accordingly
    and drop the line with a path from a top-level comment in dt-overlay.c.
    It serves no purpose and requires being updated on every code movement.
    
    Signed-off-by: Michal Orzel <michal.orzel@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

commit b3ca3caaf36efa3eaea0cce909f75e12b0fb6a1d
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:51 2024 +0200

    x86emul/test: drop Xeon Phi S/G prefetch special case
    
    Another leftover from the dropping of Xeon Phi support.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit 09d22fe15cb11254d06413d15fd578093d7fe062
Author: Jan Beulich <jbeulich@suse.com>
Date:   Thu Oct 17 14:14:31 2024 +0200

    x86emul/test: correct loop body indentation in evex-disp8.c:test_one()
    
    For some reason I entirely consistently screwed these up.
    
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

commit 330d4e62508defa708b55f1b612f42b6a2e2842b
Author: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Date:   Thu Oct 17 14:13:50 2024 +0200

    docs: update documentation of reboot param
    
    Reflect changed default mode, and fix formatting of `efi` value.
    
    Fixes: d81dd3130351 ("x86/shutdown: change default reboot method preference")
    Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Sun Oct 20 06:05:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 20 Oct 2024 06:05:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822717.1236647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2P3X-000208-Vb; Sun, 20 Oct 2024 06:04:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822717.1236647; Sun, 20 Oct 2024 06: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 1t2P3X-000201-Sg; Sun, 20 Oct 2024 06:04:47 +0000
Received: by outflank-mailman (input) for mailman id 822717;
 Sun, 20 Oct 2024 06:04: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 1t2P3X-0001zr-0X; Sun, 20 Oct 2024 06:04: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 1t2P3W-0007oj-Up; Sun, 20 Oct 2024 06:04: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 1t2P3W-0002J5-GD; Sun, 20 Oct 2024 06:04:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2P3W-0002ut-Fh; Sun, 20 Oct 2024 06:04: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=U0XkkqHfOhjlNuuyA6xKJqNkS1tpvuOB3S1hVSQwMMQ=; b=NaOudZmdIep6zxZqzvp5LhxN9/
	ZDeZdkEM4I+qSXMjCxHhZ6ZlDG5mBcQYeOc5bU4omwxoabH3eB2g0ax5q/hvfSSbakKWNztyZwL3E
	kjjKo6ZdQ5o1pgNbbkdaIHNzwi/+/3x42xhplvo8RMvepyJSXBMb48Df7Cso++1v9HGM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188308-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188308: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-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: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-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-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-amd64-amd64-libvirt-qcow2:migrate-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-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-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
X-Osstest-Versions-This:
    xen=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
X-Osstest-Versions-That:
    xen=47990ecef286606794d607d4ca8703d71c98d659
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 20 Oct 2024 06:04:46 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt   16 saverestore-support-check fail blocked in 188153
 test-armhf-armhf-xl-qcow2    20 leak-check/check        fail blocked in 188153
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188153
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188153
 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-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-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          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-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-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-credit2  16 saverestore-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

version targeted for testing:
 xen                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
baseline version:
 xen                  47990ecef286606794d607d4ca8703d71c98d659

Last test of basis   188153  2024-10-17 07:28:21 Z    2 days
Failing since        188193  2024-10-17 18:11:18 Z    2 days    5 attempts
Testing same since   188308  2024-10-19 23:10:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrei Cherechesu <andrei.cherechesu@nxp.com>
  Andrew Cooper <andrew.cooper3@citrix.com>
  Christian Lindig <christian.lindig@cloud.com>
  Christopher Clark <christopher.w.clark@gmail.com>
  Daniel P. Smith <dpsmith@apertussolutions.com>
  Frediano Ziglio <frediano.ziglio@cloud.com>
  Jan Beulich <jbeulich@suse.com>
  Javi Merino <javi.merino@cloud.com>
  Julien Grall <jgrall@amazon.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Michal Orzel <michal.orzel@amd.com>
  Peter van der Perk <peter.vander.perk@nxp.com>
  Stefano Stabellini <sstabellini@kernel.org>
  Stewart Hildebrand <stewart.hildebrand@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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   47990ecef2..73785a4c77  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7 -> master


From xen-devel-bounces@lists.xenproject.org Sun Oct 20 10:05:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 20 Oct 2024 10:05:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822757.1236729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2Soe-0004DB-9x; Sun, 20 Oct 2024 10:05:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822757.1236729; Sun, 20 Oct 2024 10:05: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 1t2Soe-0004D4-71; Sun, 20 Oct 2024 10:05:40 +0000
Received: by outflank-mailman (input) for mailman id 822757;
 Sun, 20 Oct 2024 10: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=Zp1O=RQ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t2Soc-0004Cy-Op
 for xen-devel@lists.xenproject.org; Sun, 20 Oct 2024 10:05:38 +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 d95b4a75-8eca-11ef-99a3-01e77a169b0f;
 Sun, 20 Oct 2024 12:05:35 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 0E34B1FDDE;
 Sun, 20 Oct 2024 10:05: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 CD2AF13894;
 Sun, 20 Oct 2024 10:05: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 gQNDMO3VFGd4IgAAD6G6ig
 (envelope-from <jgross@suse.com>); Sun, 20 Oct 2024 10: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>
X-Inumbo-ID: d95b4a75-8eca-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729418734; 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=yN4mSamSE977luvalP1/nrLwKNupeevFLON1NVBJIOg=;
	b=EAAlkW7uunjfa8n0lH/lb98e3o41KEvzMwShkY4eq3LWOKb8mfPFGTcrocv6u/seuTvXB6
	kMlWiGdoE13/3su9CIhYGsgsPXGjMvUb0J+c9Wa9piiCIqXMsoIlVRalWj3njXP6Z/O8+r
	QP8fTyXGkDZda3C8kZKMf4G+MJ5zvkc=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729418734; 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=yN4mSamSE977luvalP1/nrLwKNupeevFLON1NVBJIOg=;
	b=EAAlkW7uunjfa8n0lH/lb98e3o41KEvzMwShkY4eq3LWOKb8mfPFGTcrocv6u/seuTvXB6
	kMlWiGdoE13/3su9CIhYGsgsPXGjMvUb0J+c9Wa9piiCIqXMsoIlVRalWj3njXP6Z/O8+r
	QP8fTyXGkDZda3C8kZKMf4G+MJ5zvkc=
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.12-rc4
Date: Sun, 20 Oct 2024 12:05:33 +0200
Message-ID: <20241020100533.24289-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:mid];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	TO_DN_NONE(0.00)[];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
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.12a-rc4-tag

xen: branch for v6.12-rc4

It contains just a single fix for a build failure introduced with a
patch in the 6.12 merge window.

Thanks.

Juergen

 drivers/xen/Kconfig                |  1 -
 drivers/xen/acpi.c                 | 24 ++++++++++++++++++++++++
 drivers/xen/privcmd.c              |  6 ++----
 drivers/xen/xen-pciback/pci_stub.c | 11 +++++++++--
 include/xen/acpi.h                 | 14 +++++++++-----
 5 files changed, 44 insertions(+), 12 deletions(-)

Jiqian Chen (1):
      xen: Remove dependency between pciback and privcmd


From xen-devel-bounces@lists.xenproject.org Sun Oct 20 12:39:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 20 Oct 2024 12:39:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822787.1236739 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2VD2-0004RQ-83; Sun, 20 Oct 2024 12:39:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822787.1236739; Sun, 20 Oct 2024 12: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 1t2VD2-0004RI-4d; Sun, 20 Oct 2024 12:39:00 +0000
Received: by outflank-mailman (input) for mailman id 822787;
 Sun, 20 Oct 2024 12: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 1t2VD1-0004R8-Lo; Sun, 20 Oct 2024 12: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 1t2VD1-0006gn-Hp; Sun, 20 Oct 2024 12:38: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 1t2VD1-0008JH-35; Sun, 20 Oct 2024 12:38:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2VD1-0002xm-2Y; Sun, 20 Oct 2024 12:38: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=BCklW9UhytPE0fggpDVR9lvSxPwpK5neNWAZefIrzRs=; b=a+Tq0RPOTxNXTD434DErQxavhP
	3RbqztF9y5QG/O8zn/rXvsQe+2WnUxnoGt1XjPjeYEFO73yaTE8Sgs1Jlud9HEAB4qcDPpbQDlA3i
	xXw+Gic6kMuCfLWSA6NkePSHlRVbd6t8UG6eyZDaZOjkTlSN+OZyV2uCybGyniN4mJOI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188309-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188309: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-arndale:host-ping-check-xen:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    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:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-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: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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2: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-amd64-libvirt-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-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
X-Osstest-Versions-This:
    xen=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
X-Osstest-Versions-That:
    xen=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 20 Oct 2024 12:38:59 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-qcow2    20 leak-check/check fail in 188308 pass in 188309
 test-armhf-armhf-xl-arndale  10 host-ping-check-xen        fail pass in 188308
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 188308

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 188308 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 188308 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188308
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188308
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188308
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188308
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188308
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188308
 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-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-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-libvirt     15 migrate-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-credit2  16 saverestore-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

version targeted for testing:
 xen                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
baseline version:
 xen                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7

Last test of basis   188309  2024-10-20 06:09:14 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-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                                 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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 20 19:12:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 20 Oct 2024 19:12:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822853.1236749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2bLg-0004uh-MR; Sun, 20 Oct 2024 19:12:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822853.1236749; Sun, 20 Oct 2024 19:12: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 1t2bLg-0004ua-J3; Sun, 20 Oct 2024 19:12:20 +0000
Received: by outflank-mailman (input) for mailman id 822853;
 Sun, 20 Oct 2024 19:12: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=P9Mf=RQ=kernel.org=pr-tracker-bot@srs-se1.protection.inumbo.net>)
 id 1t2bLf-0004uU-8E
 for xen-devel@lists.xenproject.org; Sun, 20 Oct 2024 19:12:19 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 38ad39b7-8f17-11ef-a0be-8be0dac302b0;
 Sun, 20 Oct 2024 21:12:17 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id D1E58A4039E;
 Sun, 20 Oct 2024 19:12:06 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94454C4CEC6;
 Sun, 20 Oct 2024 19:12:15 +0000 (UTC)
Received: from [10.30.226.235] (localhost [IPv6:::1])
 by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id
 ADDB63805CC0; Sun, 20 Oct 2024 19:12:22 +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: 38ad39b7-8f17-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729451535;
	bh=gn+1A9Rw3cMyIwfsi6G6Z2rukd8IhTCYjZqddk9wZoA=;
	h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
	b=NnMKJ2vxHWZa7+3Hwt1I7h5jb/mocM1sdSZEHDTzxVYtVz7IMTdvXzm13mEDEH4tJ
	 hpA4igUjFTxHEVQA/zbd2IuqgCzpMZteRZCrMgEjs1uQyBHc+IOoChDW8iZJ8bH7mC
	 jdEDA/QyZsbzQgYZxS1s6ebgu4iABbh7VuvkxvMj89Tt1S/dzSiVq6OGmjvPvUEs9Z
	 GQnBUEmEWQbrlPVoc50RpMcizk594vnhE6xbu4QYmYGu/UOQHM3YXl70kYDCfxuCSi
	 40OZRmx2JViI0XtFpOLbTn2Zie85vzmXUZfzwbd0zTEdFzIN5XTk35LzgCe1aq+bdi
	 E42K4Dg9j7Uxw==
Subject: Re: [GIT PULL] xen: branch for v6.12-rc4
From: pr-tracker-bot@kernel.org
In-Reply-To: <20241020100533.24289-1-jgross@suse.com>
References: <20241020100533.24289-1-jgross@suse.com>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <20241020100533.24289-1-jgross@suse.com>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc4-tag
X-PR-Tracked-Commit-Id: 0fd2a743301b6b5eec0f407080f89bed98384836
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: a5ee44c8297803efd36cd0c773d72687afdd7500
Message-Id: <172945154126.3627590.5231704990925009776.pr-tracker-bot@kernel.org>
Date: Sun, 20 Oct 2024 19:12:21 +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 Sun, 20 Oct 2024 12:05:33 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.12a-rc4-tag

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/a5ee44c8297803efd36cd0c773d72687afdd7500

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:46:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:46:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822875.1236772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gZC-0007Hr-O2; Mon, 21 Oct 2024 00:46:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822875.1236772; Mon, 21 Oct 2024 00:46: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 1t2gZC-0007Hk-L6; Mon, 21 Oct 2024 00:46:38 +0000
Received: by outflank-mailman (input) for mailman id 822875;
 Mon, 21 Oct 2024 00:46: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZB-000738-Vl
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:46:37 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ec7b1db2-8f45-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:46:37 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471584878605.8210982846448;
 Sun, 20 Oct 2024 17:46:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec7b1db2-8f45-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471587; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=mtYfdajC466EsrRkIugo5XkE5Sbcn0nEWOwxgeFNWIBOjJwjv5YKUtENqGzroxTEp7n0y3SS/DcIDfeK3pHrVJ8a7znXwSCwqmsDYi+D/V12euOLBrNKEHdJRSCtnP5y1qY83yAps35G8TtYPCMy+ImWnviaQj5Tp6NLJzCQZ3w=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471587; h=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=VV/xki6IWbJcCiOta+71vA6COU5u0Y4wCmksjgvwz50=; 
	b=De0yF6l4trKCbWupE0SIWHu4Pa0XxVuLY0whkTnpQjM1RpuYpdFvY/Wimrwb69IdtFDm6XEWHE/BK29GxGTjdclDenAfZDXhIBkJSBDLJYTJafzhZ0bq3jgDzR7WeAxNL3yyoLJJfqZWx+GsT0TKMixlml6tOgEFDel6j2OZXo8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471587;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=VV/xki6IWbJcCiOta+71vA6COU5u0Y4wCmksjgvwz50=;
	b=kmbCr/1XhspE9MpwHoFLyV7m5ulNl43qmvPk2PI3NZ7EmjjLW9g2pMB5hqgUv+4D
	qwdZ9lJ/HETKhBD62lyjSBxFX4Y/m4wharIuY6H4wuY8+roqpLjLCuYxaxOAsnb8UOI
	fRga7vrvDWpmmwdH2I4aIgHPxuN5pc0tV+jzk4fM=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 01/38] x86/boot: introduce struct boot_module
Date: Sun, 20 Oct 2024 20:45:36 -0400
Message-Id: <20241021004613.18793-2-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This will introduce a new struct boot_module to provide a rich state
representation around modules provided by the boot loader. Support is for 64
boot modules, one held in reserve for Xen, and up to 63 can be provided by the
boot loader. The array of struct boot_modules will be accessible via a
reference held in struct boot_info.

A temporary `mod` parameter is included in struct boot_module to ease the
transition from using Multiboot v1 structures over to struct boot_module. Once
the transition is complete, the parameter will be dropped from the structure.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v6:
- add guard to prevent OOB access of the boot module array
- pulled the setting of the Xen entry back out as independently set
- updated comment to understand why Xen entry has to be explicitly set

Changes since v5:
- reword comment
---
 xen/arch/x86/include/asm/bootinfo.h | 10 ++++++++++
 xen/arch/x86/setup.c                | 26 ++++++++++++++++++++++++--
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index e7821e0603f8..ffa443406747 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,8 +8,17 @@
 #ifndef X86_BOOTINFO_H
 #define X86_BOOTINFO_H
 
+#include <xen/multiboot.h>
 #include <xen/types.h>
 
+/* Max number of boot modules a bootloader can provide in addition to Xen */
+#define MAX_NR_BOOTMODS 63
+
+struct boot_module {
+    /* Transitionary only */
+    module_t *mod;
+};
+
 /*
  * Xen internal representation of information provided by the
  * bootloader/environment, or derived from the information.
@@ -22,6 +31,7 @@ struct boot_info {
     size_t memmap_length;
 
     unsigned int nr_modules;
+    struct boot_module mods[MAX_NR_BOOTMODS + 1];
 };
 
 #endif /* X86_BOOTINFO_H */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index bfede5064e8c..db670258d650 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -287,6 +287,8 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
 {
     struct boot_info *bi = &xen_boot_info;
     const multiboot_info_t *mbi = __va(mbi_p);
+    module_t *mods = __va(mbi->mods_addr);
+    unsigned int i;
 
     if ( mbi->flags & MBI_MODULES )
         bi->nr_modules = mbi->mods_count;
@@ -303,6 +305,21 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
         bi->memmap_length = mbi->mmap_length;
     }
 
+    /*
+     * The multiboot entry point will reserve mods_count + 1 instances of
+     * module_t, with the last one being for Xen. First iterate over nr_modules
+     * module_t entries, or MAX_NR_BOOTMODS if more than the max was passed.
+     *
+     * As the Xen entry may be beyond MAX_NR_BOOTMODS, explicitly set the last
+     * entry in mods to point at the last module_t entry which the entry point
+     * reserved for Xen.
+     */
+    for ( i = 0; i < MAX_NR_BOOTMODS && i < bi->nr_modules; i++ )
+        bi->mods[i].mod = &mods[i];
+
+    /* Variable 'i' should be one entry past the last module. */
+    bi->mods[i].mod = &mods[bi->nr_modules];
+
     return bi;
 }
 
@@ -1163,9 +1180,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         panic("dom0 kernel not specified. Check bootloader configuration\n");
 
     /* Check that we don't have a silly number of modules. */
-    if ( bi->nr_modules > sizeof(module_map) * 8 )
+    if ( bi->nr_modules > MAX_NR_BOOTMODS )
     {
-        bi->nr_modules = sizeof(module_map) * 8;
+        /*
+         * Only MAX_NR_BOOTMODS were populated in bootinfo, truncate nr_modules
+         * now that it can be report that an excess number of modules were
+         * passed.
+         */
+        bi->nr_modules = MAX_NR_BOOTMODS;
         printk("Excessive boot modules - using the first %u only\n",
                bi->nr_modules);
     }
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:46:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:46:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822874.1236762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gZ9-00073L-D4; Mon, 21 Oct 2024 00:46:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822874.1236762; Mon, 21 Oct 2024 00: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 1t2gZ9-00073E-9g; Mon, 21 Oct 2024 00:46:35 +0000
Received: by outflank-mailman (input) for mailman id 822874;
 Mon, 21 Oct 2024 00:46: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZ7-000738-V9
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:46:34 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e8b7dc3a-8f45-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:46:30 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471583597702.4571296580966;
 Sun, 20 Oct 2024 17:46:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8b7dc3a-8f45-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471586; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Pt/pMRLNqxz9OQWUyhscFHFkNhO+OLokPYwk6W77YIvK/be4S98COrBnv7DxU/HNp5quW55OPL9Wy0jIIF4zdcwDqXuAT9StoTehOAXnNUjGVrpfgB7+m1DtaKXBQa4w17wlQCTIp2esYfNlttGAtk6rsYhPntK7iVdsBhJ0qsM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471586; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=IXGQnwVFs2+KINA9++STIo8SbSGKr1Zxrx/G0Z6oXIg=; 
	b=b89YqUcjOjByfLKp0tn2WKdzf7K/b+pcrfnCuEkt4/ehMjj6RVrwlEO4MR5q3kLZEu+IwRiSzybyVNsx516tQG39M6UyoBFfsbuw/2P6yk5sJaCqk9qN2Dg1qYqTeZhW4mL0/U855YumQ9GOWATUZ3exEpCpsVtF6jQFYtfVNrY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471586;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=IXGQnwVFs2+KINA9++STIo8SbSGKr1Zxrx/G0Z6oXIg=;
	b=GZrB+XF9VPrWwCrZjUWTSyIDgADm8DL8UTZf+EA50wquD4wwKAG9tHI6DVGneHhX
	aKHbvqf8QZ7WNFAhgtWQujkR5HFOtRO6Vqo0dAMYuiYWaIZ+STcqf/EUmoKkEzmgbDC
	KK37P8TB9VCCnrr0x902tRTgCsMz7NnKRhaWGMUA=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@amd.com
Subject: [PATCH v7 00/38] Boot modules for Hyperlaunch
Date: Sun, 20 Oct 2024 20:45:35 -0400
Message-Id: <20241021004613.18793-1-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The Boot Modules for Hyperlaunch series is an effort to split out preliminary
changes necessary for the introduction of the Hyperlaunch domain builder
logic. These preliminary changes revolve around introducing the struct
boot_module and struct boot_domain structures. This includes converting the
dom0 construction path to use these structures. These abstractions lay the
groundwork to transform and extend the dom0 construction logic into a limited,
but general domain builder.

The splitting of Hyperlaunch into a set of series are twofold, to reduce the
effort in reviewing a much larger series, and to reduce the effort in handling
the knock-on effects to the construction logic from requested review changes.

Much thanks to AMD for supporting this work.

Documentation on Hyperlaunch:
https://wiki.xenproject.org/wiki/Hyperlaunch

Original Hyperlaunch v1 patch series:
https://lists.xenproject.org/archives/html/xen-devel/2022-07/msg00345.html

V/r,
Daniel P. Smith

Changes since v6:
- Dropped patches that were merged from v5
- patch 8 title and commit message rewritten
- boot module interator patch merged with xsm patch, its first use
- incorporated review requests
- made additional style optimizations as a result of review requests

Changes since v5:
- switched to per patch change logs
- incorporated review requests

Changes since v4:
- added requested inline code comments
- moved instance of struct boot_info to unit level and extern'ed
- array of struct boot_module moved into struct boot_info
- renamed function to multiboot_fill_bootinfo, now returns *struct boot_info
- multiboot_fill_bootinfo changed to take multiboot_info_t addr as param
- added missing guard that checked there were multiboot1/2 modules passed
- renmaed struct elements per the review
- fixed errant commit messages per the review
- corrected coding style per review
- attempted to repalce all open codings of page/addr translations touched 
- unified use of `bi` as var name for pointer ref to struct boot_info
- when appropriate, ensure variables where typed, eg size_t, paddr_t, etc.
- dropped all uses of "a = b = c"

Changes since v3:
- reduced scope to x86 only
- broke changes into a smaller chunks with a linear progression
- concerns about deconflicting with Arm deferred
- conversion from mb1 to boot modules no longer attempted at entry points
- the temporary conversion function is now the permenant means to convert
- incorporated suggestion from Andy Cooper for handling bootstrap_map

Changes since v2:
- combined v2 patches 7 and 8 for common review
- rebased the v2 series onto the current tip of staging (sorry)
- fixed the placement of the patch changelogs
- provided the changes description in the cover letter

Changes since v1:
- the v2 and v3 series implement functionality from v1 patches 2-4
    - v2 series objective is to enable efficient patch review in support
      of merging the functionality into the hypervisor. It implements a
      subset of the v1 series, incorporating changes from community
      feedback.
- the bootstrap map is made accessible early in the v2 series via both
  multiboot and boot module arguments until later in the series where
  multiboot use is retired. This allows for incremental conversion across
  several patches from multiboot to boot modules.
- the 32-bit x86 boot environment header is removed, and changes are
  made to allow the new common bootinfo headers to be used instead.
- Arm and RISC-V architecture bootinfo headers are added to ensure that
  builds on those architectures can complete correctly.
- The KConfig patch to set the maximum number of boot modules allowed
  is not included in this series, replaced with a static maximum define.

Daniel P. Smith (38):
  x86/boot: introduce struct boot_module
  x86/boot: convert consider_modules to struct boot_module
  x86/boot: move headroom to boot modules
  x86/boot: convert mod refs to boot_module mod
  x86/boot: introduce boot module types
  x86/boot: introduce boot module flags
  x86/boot: add start and size fields to struct boot_module
  x86/boot: populate boot module for xen entry
  x86/boot: transition relocation calculations to struct boot_module
  x86/boot: introduce consumed flag for struct boot_module
  x86/boot: convert microcode loading to consume struct boot_info
  x86/boot: convert late microcode loading to struct boot_module
  x86/boot: use consumed boot module flag for microcode
  x86/boot: convert xsm policy loading to struct boot_module
  x86/boot: convert ramdisk locating to struct boot_module
  x86/boot: remove module_map usage from microcode loading
  x86/boot: remove module_map usage from xsm policy loading
  x86/boot: remove module_map usage by ramdisk loading
  x86/boot: convert create_dom0 to use boot info
  x86/boot: convert construct_dom0 to use struct boot_module
  x86/boot: relocate kextra into boot info
  x86/boot: add cmdline to struct boot_module
  x86/boot: convert dom0_construct_pv image param to struct boot_module
  x86/boot: convert dom0_construct_pv initrd param to struct boot_module
  x86/boot: convert dom0_construct_pvh to struct boot_module
  x86/boot: convert pvh_load_kernel to struct boot_module
  x86/boot: convert initial_images to struct boot_module
  x86/boot: drop the use of initial_images unit global
  x86/boot: remove usage of mod_end by discard_initial_images
  x86/boot: remove remaining module_t references
  x86/boot: remove mod from struct boot_module
  x86/boot: introduce boot domain
  x86/boot: introduce domid field to struct boot_domain
  x86/boot: add cmdline to struct boot_domain
  x86/boot: add struct domain to struct boot_domain
  x86/boot: convert construct_dom0 to struct boot_domain
  x86/boot: convert dom0_construct_pv to struct boot_domain
  x86/boot: convert dom0_construct_pvh to struct boot_domain

 xen/arch/x86/cpu/microcode/core.c     |  83 ++++------
 xen/arch/x86/dom0_build.c             |  10 +-
 xen/arch/x86/hvm/dom0_build.c         |  32 ++--
 xen/arch/x86/include/asm/bootdomain.h |  37 +++++
 xen/arch/x86/include/asm/bootinfo.h   | 104 +++++++++++-
 xen/arch/x86/include/asm/dom0_build.h |  11 +-
 xen/arch/x86/include/asm/microcode.h  |  12 +-
 xen/arch/x86/include/asm/setup.h      |   9 +-
 xen/arch/x86/pv/dom0_build.c          |  54 +++---
 xen/arch/x86/setup.c                  | 226 ++++++++++++++++----------
 xen/include/xsm/xsm.h                 |  14 +-
 xen/xsm/xsm_core.c                    |  19 ++-
 xen/xsm/xsm_policy.c                  |  20 +--
 13 files changed, 398 insertions(+), 233 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootdomain.h

-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:46:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:46:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822876.1236782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gZK-0007aJ-V5; Mon, 21 Oct 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 822876.1236782; Mon, 21 Oct 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 1t2gZK-0007a9-SL; Mon, 21 Oct 2024 00:46:46 +0000
Received: by outflank-mailman (input) for mailman id 822876;
 Mon, 21 Oct 2024 00:46: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZJ-000738-Lq
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:46:45 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f120f82e-8f45-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:46:44 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471586110575.2544669844197;
 Sun, 20 Oct 2024 17:46:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f120f82e-8f45-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471587; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=jz96BrikdNvb6h+sW+8+QNhXkT6jvzLV4UgMHDxoVjQxpOjOBQ0i21LTZ2YW/Ja4uV0HabLx3G1inbGLGXxg0mzmafHMSuUZ5nC2bPf0NmexJvvxT6/VjXq197H6GqoFMpco1jZ1l8rWWB/fFRY4Jdm4tnjpll8kMhAX8oASiVM=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471587; h=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=5BxR907iR5u9/6Q1o/EHkq0aEkes4oDlkRcMr/AbvX4=; 
	b=FLwMYW6bbSr35RkxwEd34DlEHCt2o7cDwPuu+G0gvxroyezK7blnL61mVafWiSojhS+RzRSVNl5zsGhNxoLVlKl/N5EsF7wR99uObp63rzjtFp0/KXanEehk4Yqp+hPEJkXPjKyfdG1ah7NPRE9yFiRcsJwqgLvML6Ghfv8Ykgo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471587;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=5BxR907iR5u9/6Q1o/EHkq0aEkes4oDlkRcMr/AbvX4=;
	b=iFb+ctHZTLWhQhMF92wcvY/sYWmZ+9HBVvgD5c4F4JuA/B39N310cWu2lNnMEEXD
	s6of4wzioysICSnkLrTD/2bE/4u0yh0F2JmZ5bQGtOVpn5Iwq9rNcOVH0wxjij3ys6w
	ECW3ckhZCKVErBZig0aMFg0NibsDqP5/cwlk2XOg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 02/38] x86/boot: convert consider_modules to struct boot_module
Date: Sun, 20 Oct 2024 20:45:37 -0400
Message-Id: <20241021004613.18793-3-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To start transitioning consider_modules() over to struct boot_module, begin
with taking the array of struct boot_modules but use the temporary struct
element mod.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- drop unnecessary type cast
---
 xen/arch/x86/setup.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index db670258d650..1eafa0a61e0e 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -645,7 +645,7 @@ static void __init noinline move_xen(void)
 #undef BOOTSTRAP_MAP_LIMIT
 
 static uint64_t __init consider_modules(
-    uint64_t s, uint64_t e, uint32_t size, const module_t *mod,
+    uint64_t s, uint64_t e, uint32_t size, const struct boot_module mods[],
     unsigned int nr_mods, unsigned int this_mod)
 {
     unsigned int i;
@@ -655,20 +655,20 @@ static uint64_t __init consider_modules(
 
     for ( i = 0; i < nr_mods ; ++i )
     {
-        uint64_t start = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
-        uint64_t end = start + PAGE_ALIGN(mod[i].mod_end);
+        uint64_t start = pfn_to_paddr(mods[i].mod->mod_start);
+        uint64_t end = start + PAGE_ALIGN(mods[i].mod->mod_end);
 
         if ( i == this_mod )
             continue;
 
         if ( s < end && start < e )
         {
-            end = consider_modules(end, e, size, mod + i + 1,
+            end = consider_modules(end, e, size, &mods[i + 1],
                                    nr_mods - i - 1, this_mod - i - 1);
             if ( end )
                 return end;
 
-            return consider_modules(s, start, size, mod + i + 1,
+            return consider_modules(s, start, size, &mods[i + 1],
                                     nr_mods - i - 1, this_mod - i - 1);
         }
     }
@@ -1451,7 +1451,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* Don't overlap with modules. */
             end = consider_modules(s, e, reloc_size + mask,
-                                   mod, bi->nr_modules, -1);
+                                   bi->mods, bi->nr_modules, -1);
             end &= ~mask;
         }
         else
@@ -1486,7 +1486,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
-            end = consider_modules(s, e, size, mod,
+            end = consider_modules(s, e, size, bi->mods,
                                    bi->nr_modules + relocated, j);
 
             if ( highmem_start && end > highmem_start )
@@ -1513,7 +1513,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         while ( !kexec_crash_area.start )
         {
             /* Don't overlap with modules (or Xen itself). */
-            e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), mod,
+            e = consider_modules(s, e, PAGE_ALIGN(kexec_crash_area.size), bi->mods,
                                  bi->nr_modules + relocated, -1);
             if ( s >= e )
                 break;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:46:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:46:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822877.1236793 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gZS-0007xP-8P; Mon, 21 Oct 2024 00:46:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822877.1236793; Mon, 21 Oct 2024 00:46: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 1t2gZS-0007xG-46; Mon, 21 Oct 2024 00:46:54 +0000
Received: by outflank-mailman (input) for mailman id 822877;
 Mon, 21 Oct 2024 00:46: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZQ-000738-Bb
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:46:52 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f53e2ef6-8f45-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:46:51 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471587294458.09984789376335;
 Sun, 20 Oct 2024 17:46:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f53e2ef6-8f45-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471588; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=jlh7GxHfaUm5qhXtMauf6Tf5AX8pJebhqnLsMrD9ahbn4ICgUXVkFnXvjQw+mDaA55qSBIvnZ4A7jmiYydgkStJWhgAaHOfDVmkXCXese6ptmd1p23s84B2CdNEc6Q7FLEW1JfbeWbwhmQdXg3qioPpcEJWwShdHe7Yt6tAX7Sw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471588; h=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=4OnSYGb1tvM1Q1JcgOyBkYudm2zIjXBaFQ9ShM2msC8=; 
	b=KKVC+RnFgNC23zCDpwax22gldl40n6wIn2P1JcY6/Mb0Vc2RSswOZvJ7oyXm2xxNxYhd03XYAbLd3gDr7wfRpdVMj7d+TRSahC4xRCHu8QnxKioLxrWPqos8GI5kmg04oWXV0lf1vmcre9Tjwbs2b1pzFJ1/jvr25xgoh6Yn6os=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471588;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=4OnSYGb1tvM1Q1JcgOyBkYudm2zIjXBaFQ9ShM2msC8=;
	b=oK7Lm+cehUnPixaqW7H5dhzaVWm4kLqkz12buA77UcMW068nFlzjj9mjaHzMoruw
	bkcZJ5QmbOg8DnuKeuGaPYPi+v4qZFAr5CCtzT8fDr9h4WKzKjGW6sOu+Pzpq/f3Dxz
	vzQIBez/1DIPP/O5HgCFAmQRvx2pzyqX6lHSYZBU=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 03/38] x86/boot: move headroom to boot modules
Date: Sun, 20 Oct 2024 20:45:38 -0400
Message-Id: <20241021004613.18793-4-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The purpose of struct boot_module is to encapsulate the state of boot module as
it is processed by Xen. Locating boot module state struct boot_module reduces
the number of global variables as well as the number of state variables that
must be passed around. It also lays the groundwork for hyperlaunch mult-domain
construction, where multiple instances of state variables like headroom will be
needed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v6:
- add blank line to separate comment from line above it

Changes since v5:
- reword and expand comment on headroom
- consolidated declaration and assignment
---
 xen/arch/x86/include/asm/bootinfo.h | 14 ++++++++++++++
 xen/arch/x86/setup.c                | 21 ++++++++++++---------
 2 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index ffa443406747..59e6696f9671 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -17,6 +17,20 @@
 struct boot_module {
     /* Transitionary only */
     module_t *mod;
+
+    /*
+     * A boot module may contain a compressed kernel that will require
+     * additional space, before the module data, into which the kernel will be
+     * decompressed.
+     *
+     * Memory layout at boot:
+     *     [ compressed kernel ]
+     * After boot module relocation:
+     *     [ estimated headroom + PAGE_SIZE rounding ][ compressed kernel ]
+     * After kernel decompression:
+     *     [ decompressed kernel ][ unused rounding ]
+     */
+    unsigned long headroom;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 1eafa0a61e0e..48809aa94451 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1028,7 +1028,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
-    unsigned long nr_pages, raw_max_page, modules_headroom, module_map[1];
+    unsigned long nr_pages, raw_max_page, module_map[1];
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
@@ -1394,7 +1394,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
     }
 
-    modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
+    bi->mods[0].headroom =
+        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
+                         bi->mods[0].mod->mod_end);
+
     bootstrap_map(NULL);
 
 #ifndef highmem_start
@@ -1479,8 +1482,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
              * decompressor overheads of mod[0] (the dom0 kernel).  When we
              * move mod[0], we incorporate this as extra space at the start.
              */
-            unsigned long headroom = j ? 0 : modules_headroom;
-            unsigned long size = PAGE_ALIGN(headroom + mod[j].mod_end);
+            struct boot_module *bm = &bi->mods[j];
+            unsigned long size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
 
             if ( mod[j].reserved )
                 continue;
@@ -1493,14 +1496,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 continue;
 
             if ( s < end &&
-                 (headroom ||
+                 (bm->headroom ||
                   ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
             {
-                move_memory(end - size + headroom,
+                move_memory(end - size + bm->headroom,
                             (uint64_t)mod[j].mod_start << PAGE_SHIFT,
                             mod[j].mod_end);
                 mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += headroom;
+                mod[j].mod_end += bm->headroom;
                 mod[j].reserved = 1;
             }
         }
@@ -1527,7 +1530,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( modules_headroom && !mod->reserved )
+    if ( bi->mods[0].headroom && !mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
@@ -2079,7 +2082,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(mod, modules_headroom,
+    dom0 = create_dom0(mod, bi->mods[0].headroom,
                        initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:47:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:47:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822880.1236801 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gZY-0008SF-Ev; Mon, 21 Oct 2024 00:47:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822880.1236801; Mon, 21 Oct 2024 00: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 1t2gZY-0008S6-Bi; Mon, 21 Oct 2024 00:47:00 +0000
Received: by outflank-mailman (input) for mailman id 822880;
 Mon, 21 Oct 2024 00:46: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZW-000738-OH
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:46:58 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f90525c6-8f45-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:46:58 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471588434168.99853711437606;
 Sun, 20 Oct 2024 17:46:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f90525c6-8f45-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471589; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=BXZsbouImeuGsUjuRGIu2CdEllsZmH12CZS4CxQ4p+IRXDXTbjcX1V5IXGcNms8RBImFHrNMksLu7oCNu+DmQonnx8aklfJyexKUAWJ23ipDlJJGygGGuH/oqRrc2w5L8yIBDO3obY+g9/FQt9E87DHTbT05aOaR8agKZwwbh8k=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471589; h=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=0hf/GPWorDxYmQn+gugUE/WDMvvSA827DeL6H9WXctU=; 
	b=RJlHBziQUaOFTrEREf8DjJ8jz52wdMkS88PSomo/hbXZ/K0ON3ohMarJUtXR3jdGnkWf9MtfIlS2lj2IbzXdkE7k0odZu14GXtORhRRwANl4ddOrzBTBqSyYIQunTA3D4RFp9eV1wjMLliVDwgkzRkIIGsPimY0rUwNFUsUENHk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471589;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=0hf/GPWorDxYmQn+gugUE/WDMvvSA827DeL6H9WXctU=;
	b=eFGrbTJAYWMY95Rdi5DkjzkE8UI8f3HGYTgT1NhY7lau/bZByvUgTl5X87SsX96v
	9sRzLazkd6dL10ikAh98SlqpJskgmWqOdTnOqr+l6mqq09Iy55j2KO+BkOTHXpiacNH
	YfBPrI6cwK05wYtMvZKj8tHjW9eQ+dGeyIltbjaY=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 04/38] x86/boot: convert mod refs to boot_module mod
Date: Sun, 20 Oct 2024 20:45:39 -0400
Message-Id: <20241021004613.18793-5-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To allow a slow conversion of x86 over to struct boot_module, start with
replacing all references to module_t mod, only in setup.c, to the mod element
of struct boot_module. These serves twofold, first to allow the incremental
transition from module_t fields to struct boot_module fields. The second is to
allow the conversion of function definitions from taking module_t parameters to
accepting struct boot_module as needed when a transitioned field will be
accessed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- code style
- switched to a local ref

Changes since v5:
- rewrote commit message
- coding style changes
- added comment for initial_images assignment
---
 xen/arch/x86/setup.c | 62 +++++++++++++++++++++++++-------------------
 1 file changed, 35 insertions(+), 27 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 48809aa94451..b6d688f8fe5e 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1364,15 +1364,19 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = mod;
+    /*
+     * The field bi->mods[0].mod points to the first element of the module_t
+     * array.
+     */
+    initial_images = bi->mods[0].mod;
 
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
-        if ( mod[i].mod_start & (PAGE_SIZE - 1) )
+        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-        mod[i].mod_end -= mod[i].mod_start;
-        mod[i].mod_start >>= PAGE_SHIFT;
-        mod[i].reserved = 0;
+        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
+        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
+        bi->mods[i].mod->reserved = 0;
     }
 
     /*
@@ -1383,6 +1387,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( xen_phys_start )
     {
+        unsigned int xen = bi->nr_modules;
         relocated = true;
 
         /*
@@ -1390,8 +1395,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        mod[bi->nr_modules].mod_start = virt_to_mfn(_stext);
-        mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
+        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
+        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
     }
 
     bi->mods[0].headroom =
@@ -1483,9 +1488,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
              * move mod[0], we incorporate this as extra space at the start.
              */
             struct boot_module *bm = &bi->mods[j];
-            unsigned long size = PAGE_ALIGN(bm->headroom + mod[j].mod_end);
+            unsigned long size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
 
-            if ( mod[j].reserved )
+            if ( bm->mod->reserved )
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
@@ -1497,14 +1502,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             if ( s < end &&
                  (bm->headroom ||
-                  ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
+                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
             {
                 move_memory(end - size + bm->headroom,
-                            (uint64_t)mod[j].mod_start << PAGE_SHIFT,
-                            mod[j].mod_end);
-                mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += bm->headroom;
-                mod[j].reserved = 1;
+                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
+                            bm->mod->mod_end);
+                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
+                bm->mod->mod_end += bm->headroom;
+                bm->mod->reserved = 1;
             }
         }
 
@@ -1530,13 +1535,14 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( bi->mods[0].headroom && !mod->reserved )
+    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
+        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
 
-        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(mod[i].mod_end));
+        reserve_e820_ram(&boot_e820, s,
+                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
     }
 
     if ( !xen_phys_start )
@@ -1614,8 +1620,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
                 for ( j = 0; j < bi->nr_modules; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
-                                   mod[j].mod_end;
+                    uint64_t end = pfn_to_paddr(bi->mods[j].mod->mod_start) +
+                                   bi->mods[j].mod->mod_end;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1689,11 +1695,12 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        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),
-                         _mfn(mod[i].mod_start),
-                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
+        set_pdx_range(bi->mods[i].mod->mod_start,
+                      bi->mods[i].mod->mod_start +
+                          PFN_UP(bi->mods[i].mod->mod_end));
+        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
+                         _mfn(bi->mods[i].mod->mod_start),
+                         PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
     }
 
 #ifdef CONFIG_KEXEC
@@ -2082,8 +2089,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(mod, bi->mods[0].headroom,
-                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
+    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
+                       initrdidx < bi->nr_modules ? bi->mods[initrdidx].mod
+                                                  : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:47:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:47:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822888.1236812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gZf-0000Zx-U2; Mon, 21 Oct 2024 00:47:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822888.1236812; Mon, 21 Oct 2024 00:47: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 1t2gZf-0000Zk-QT; Mon, 21 Oct 2024 00:47:07 +0000
Received: by outflank-mailman (input) for mailman id 822888;
 Mon, 21 Oct 2024 00:47: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZe-000738-Cw
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:06 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fd092f93-8f45-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:47:04 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471589554240.44779013138236;
 Sun, 20 Oct 2024 17:46:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd092f93-8f45-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471591; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=RjyG3Vl5JYgQf2EuO5BGJO/EDHuK5ukSioKgYb6ErZM+kTzXA+uePusSxVb2MUnMHFfBnHHYPRfHkI5MRsV/hUgFDMxJFYuCdZvxuJNkYTt7a0cx2bsd12x1ISxMf0Scfozz7fs0OG6qGD6bmCy2dbACedBfW7AUg5e9qtG94rY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471591; h=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=34cklPGzHZTKAMY1dl5kem1MkF+P5eeKqClixrNkoNU=; 
	b=KlhbN00pLjObScO62rZchS/gTiN13VlWMA/HEhY8BfmozMGQoHnEAi8yLpRxwnm1Euy7YpXjiHHVIsJ69/SXazXXiF64E4SC8ectKeMWSmIH6kUv5i7/STWDlTi6WMufuJ/3KFKBPLwzRa76YxJZdvZAU5tOu9Fnl/inCAmjr+k=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471591;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=34cklPGzHZTKAMY1dl5kem1MkF+P5eeKqClixrNkoNU=;
	b=FkpQN5mXrg2DRKxDTzJeKotzle/sZQgnDI4dWg9Cr6XjbiHQkhBVZzaXR49IRhOY
	krMouJM4kUM9qsfnOE36k4w+vEgQ9TBXX+TWKXAl6PyUUA+TbO+bx4OHQhY2Ocxhq9R
	mlLftEc4ne5OKziKrIMVH5gMXlHb90FUjWJ/fu/I=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 05/38] x86/boot: introduce boot module types
Date: Sun, 20 Oct 2024 20:45:40 -0400
Message-Id: <20241021004613.18793-6-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit introduces module types of xen, kernel, and ramdisk to allow boot
module detect code to tag the purpose of a boot module. This reduces the need
for hard coded order assumptions and global variables to be used by consumers
of boot modules, such as domain construction.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- added guard around initrd type assignment
- removed a missed rebase artifact
---
 xen/arch/x86/include/asm/bootinfo.h | 9 +++++++++
 xen/arch/x86/setup.c                | 4 ++++
 2 files changed, 13 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 59e6696f9671..ec005a97d6d5 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -14,6 +14,14 @@
 /* Max number of boot modules a bootloader can provide in addition to Xen */
 #define MAX_NR_BOOTMODS 63
 
+/* Boot module binary type / purpose */
+enum bootmod_type {
+    BOOTMOD_UNKNOWN,
+    BOOTMOD_XEN,
+    BOOTMOD_KERNEL,
+    BOOTMOD_RAMDISK,
+};
+
 struct boot_module {
     /* Transitionary only */
     module_t *mod;
@@ -31,6 +39,7 @@ struct boot_module {
      *     [ decompressed kernel ][ unused rounding ]
      */
     unsigned long headroom;
+    enum bootmod_type type;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b6d688f8fe5e..496f0900890d 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -319,6 +319,7 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
 
     /* Variable 'i' should be one entry past the last module. */
     bi->mods[i].mod = &mods[bi->nr_modules];
+    bi->mods[i].type = BOOTMOD_XEN;
 
     return bi;
 }
@@ -1194,6 +1195,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
+    bi->mods[0].type = BOOTMOD_KERNEL;
 
     if ( pvh_boot )
     {
@@ -2080,6 +2082,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? "" : "not ");
 
     initrdidx = find_first_bit(module_map, bi->nr_modules);
+    if ( initrdidx < bi->nr_modules )
+        bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
     if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:48:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:48:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822902.1236822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gam-0001iG-7X; Mon, 21 Oct 2024 00:48:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822902.1236822; Mon, 21 Oct 2024 00:48: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 1t2gam-0001i9-46; Mon, 21 Oct 2024 00:48:16 +0000
Received: by outflank-mailman (input) for mailman id 822902;
 Mon, 21 Oct 2024 00:48: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gal-0001i1-5z
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:48:15 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 265c702e-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:48:14 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471600038731.5465299032828;
 Sun, 20 Oct 2024 17:46:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 265c702e-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471602; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=R5C/6c72qx+Pv8oreNCXC4DXvp/5JJnmlv/xclSb5BsT0ZdTpN3y4h2M4kFMirySA5JTOFHKNFUEiqU4feYkIjr6+Jv3yU731SSWY6rZRItFchQFW7nv1XxJzyx04RhbxJM6LM70y8a2KbRz6lJWsTBXm1/T6aQXEK0jNGFOGB0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471602; h=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=rCqjXfRhQzYVNQ0/zCmbI25PcWcrpjQT5dqAU64Gu4k=; 
	b=lPzVPPQ3chk7ME56/x00Apav5fW5vjhbd9aysGtiPFmTQQQgCmw4zRHqbh3/aK3TFRSt8oDJaAI2WleAUMcdEpsLrAPljTUkARA9g8vQJ2jIK4384oOfiZarTWy9X2O+D1sGY0CJ3BO+FD98oUj7QobgJ6LPfFhp0/+t87tVwCU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471602;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=rCqjXfRhQzYVNQ0/zCmbI25PcWcrpjQT5dqAU64Gu4k=;
	b=bf4RE0epFdDbi2YeS7igOMlUsKCKEolaFHUl/BiUULa0RFPS60biKwgRqtVSnA5H
	YYniQlmasSFzxiSb40XP/+DNeUn1nK/feS03dbKzNI+6lMbefbF+oWG/37nvQBrukCw
	td96MHar5aOqNCcxHU5R3FRLQd9A4tdidC5JQiP8=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 14/38] x86/boot: convert xsm policy loading to struct boot_module
Date: Sun, 20 Oct 2024 20:45:49 -0400
Message-Id: <20241021004613.18793-15-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Iterate through the unclaimed boot modules to see if any are an XSM FLASK
policy. If one is located, mark it as an xsm policy.

To assist with looking up the index of the xsm policy in the boot module array,
an iterator is provided.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- converted boot module walk over to for each helper
- slight reword of commit message
- merged the interator patch with its first usage by XSM
- corrected the short-circuit return value for Xen in the interator
- dropped R-b due to merging with patch not approved.

Changes since v5:
- replaced bootstrap_map with bootstrap_map_bm
- make init function definitions consistent in dropping const on *bi
---
 xen/arch/x86/include/asm/bootinfo.h | 30 ++++++++++++++++++++++++++++-
 xen/arch/x86/setup.c                |  2 +-
 xen/include/xsm/xsm.h               | 11 +++++++----
 xen/xsm/xsm_core.c                  | 17 ++++++++++++----
 xen/xsm/xsm_policy.c                | 20 +++++++++----------
 5 files changed, 59 insertions(+), 21 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index e470df48700d..3ca56454c4d7 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -21,6 +21,7 @@ enum bootmod_type {
     BOOTMOD_KERNEL,
     BOOTMOD_RAMDISK,
     BOOTMOD_MICROCODE,
+    BOOTMOD_XSM_POLICY,
 };
 
 struct boot_module {
@@ -94,8 +95,35 @@ static inline struct boot_module *__init next_boot_module_by_type(
 #define boot_module_index(bi, bm)                   \
     (unsigned int)(bm - &bi->mods[0])
 
-#endif /* X86_BOOTINFO_H */
+/*
+ * next_boot_module_index:
+ *     Finds the next boot module of type t, starting at array index start.
+ *
+ * Returns:
+ *      Success - index in boot_module array
+ *      Failure - a value greater than MAX_NR_BOOTMODS
+ */
+static inline unsigned int __init next_boot_module_index(
+    const struct boot_info *bi, enum bootmod_type t, unsigned int start)
+{
+    unsigned int i;
+
+    if ( t == BOOTMOD_XEN )
+        return bi->nr_modules;
+
+    for ( i = start; i < bi->nr_modules; i++ )
+    {
+        if ( bi->mods[i].type == t )
+            return i;
+    }
+
+    return MAX_NR_BOOTMODS + 1;
+}
+
+#define first_boot_module_index(bi, t)              \
+    next_boot_module_index(bi, t, 0)
 
+#endif /* X86_BOOTINFO_H */
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 272d5a725c54..ed1d89ad4bb4 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1882,7 +1882,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
                                   RANGESETF_prettyprint_hex);
 
-    xsm_multiboot_init(module_map, mbi);
+    xsm_multiboot_init(module_map, bi);
 
     /*
      * IOMMU-related ACPI table parsing may require some of the system domains
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731af..f155d10e718c 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -17,7 +17,10 @@
 
 #include <xen/alternative-call.h>
 #include <xen/sched.h>
-#include <xen/multiboot.h>
+
+#ifdef CONFIG_MULTIBOOT
+#include <asm/bootinfo.h>
+#endif
 
 /* policy magic number (defined by XSM_MAGIC) */
 typedef uint32_t xsm_magic_t;
@@ -779,9 +782,9 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 
 #ifdef CONFIG_MULTIBOOT
 int xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi);
+    unsigned long *module_map, struct boot_info *bi);
 int xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
+    unsigned long *module_map, struct boot_info *bi,
     void **policy_buffer, size_t *policy_size);
 #endif
 
@@ -829,7 +832,7 @@ static const inline struct xsm_ops *silo_init(void)
 
 #ifdef CONFIG_MULTIBOOT
 static inline int xsm_multiboot_init (
-    unsigned long *module_map, const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index eaa028109bde..234b39de7a1d 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -21,6 +21,7 @@
 #ifdef CONFIG_XSM
 
 #ifdef CONFIG_MULTIBOOT
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 
@@ -140,7 +141,7 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
     int ret = 0;
     void *policy_buffer = NULL;
@@ -150,18 +151,26 @@ int __init xsm_multiboot_init(
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, mbi, &policy_buffer,
+        ret = xsm_multiboot_policy_init(module_map, bi, &policy_buffer,
                                         &policy_size);
         if ( ret )
         {
-            bootstrap_map(NULL);
+            bootstrap_map_bm(NULL);
             printk(XENLOG_ERR "Error %d initializing XSM policy\n", ret);
             return -EINVAL;
         }
     }
 
     ret = xsm_core_init(policy_buffer, policy_size);
-    bootstrap_map(NULL);
+    if ( ret == 0 )
+    {
+        int idx = first_boot_module_index(bi, BOOTMOD_XSM_POLICY);
+
+        /* If the policy was loaded from a boot module, mark it consumed */
+        if ( idx >= 0 )
+            bi->mods[idx].consumed = true;
+    }
+    bootstrap_map_bm(NULL);
 
     return 0;
 }
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 8dafbc93810f..9fb8563eb571 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -21,6 +21,7 @@
 #include <xsm/xsm.h>
 #ifdef CONFIG_MULTIBOOT
 #include <xen/multiboot.h>
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 #include <xen/bitops.h>
@@ -31,26 +32,22 @@
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
+    unsigned long *module_map, struct boot_info *bi,
     void **policy_buffer, size_t *policy_size)
 {
-    int i;
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     int rc = 0;
     u32 *_policy_start;
     unsigned long _policy_len;
+    struct boot_module *bm;
 
     /*
      * Try all modules and see whichever could be the binary policy.
      * Adjust module_map for the module that is the binary policy.
      */
-    for ( i = mbi->mods_count-1; i >= 1; i-- )
+    for_each_boot_module(bi, bm, BOOTMOD_UNKNOWN)
     {
-        if ( !test_bit(i, module_map) )
-            continue;
-
-        _policy_start = bootstrap_map(mod + i);
-        _policy_len   = mod[i].mod_end;
+        _policy_start = bootstrap_map_bm(bm);
+        _policy_len   = bm->size;
 
         if ( (xsm_magic_t)(*_policy_start) == XSM_MAGIC )
         {
@@ -60,12 +57,13 @@ int __init xsm_multiboot_policy_init(
             printk("Policy len %#lx, start at %p.\n",
                    _policy_len,_policy_start);
 
-            __clear_bit(i, module_map);
+            __clear_bit(boot_module_index(bi, bm), module_map);
+            bm->type = BOOTMOD_XSM_POLICY;
             break;
 
         }
 
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
     }
 
     return rc;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:48:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:48:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822903.1236833 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gat-0001zg-FX; Mon, 21 Oct 2024 00:48:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822903.1236833; Mon, 21 Oct 2024 00: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 1t2gat-0001zX-Al; Mon, 21 Oct 2024 00:48:23 +0000
Received: by outflank-mailman (input) for mailman id 822903;
 Mon, 21 Oct 2024 00: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gar-0001i1-Tc
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:48:21 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2a91c9af-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:48:21 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471601162568.064054440376;
 Sun, 20 Oct 2024 17:46:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a91c9af-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471603; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=GKyqfDqbEeKuQwWQLYdew4J4KatT5pV9ciu2/Ss2y8YRrWd87Ypz7quKGsMRZShfUHNDGKHl1DAFF+b5wELtn+IDAMjSuwkYQqQtNreS9fqJWm1+2VKBGw5gqycSOJR8PuQy4/kElkpbUbxQKWBvEfolPTxozjpxIN3rZ090kUI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471603; h=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=JxNA2AykQl5CnA7b5uvq1Eui/yHAxLJ9Nq2owH5nUvw=; 
	b=mepFKoE+xjEfcmC40Mv0inMPwwP9gHxtl5NXwixspgFXXfh+I+G6Oga4UEHTZjOI/Oz+rDDI7EoMfGd4QrPc+/NFu7HBFbhYAVZPp0pOkHdoNmVYDwLmgJuerZVqohN8QmMsbQH6MpojLpiZL+KyJfQTSmnmA3SEOrSw6b3g/Uk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471602;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=JxNA2AykQl5CnA7b5uvq1Eui/yHAxLJ9Nq2owH5nUvw=;
	b=SvSOd9o818hytF1kasZynjnxEMsP8mqfkLNEGAAbVV7eVDAdhRfHs43MzXkkrKEm
	q4Re16DD/BKV+s7VH/XiPX6IMceIDOv4OVS2iIGjCR4QcxnZ6fGCCQAvpMm/EVgTHi3
	G9IinW38hIP9aGbMAAWrkX2rg0fqjlQQ8GgGXJK0=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 15/38] x86/boot: convert ramdisk locating to struct boot_module
Date: Sun, 20 Oct 2024 20:45:50 -0400
Message-Id: <20241021004613.18793-16-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Locate the first unclaimed struct boot_module and mark it as ramdisk. If there
are any remaining unclaimed struct boot_module instances, report to the
console. In the change, the new boot module iterator is used to find the
initrd index, which returns a signed int. Switch initrdidx from unsigned to
signed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

---
Changes since v5:
- adjusted initrdidx check for prior changes to boot module search function
---
 xen/arch/x86/setup.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index ed1d89ad4bb4..153d361793c1 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -2102,16 +2102,23 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
            cpu_has_nx ? XENLOG_INFO : XENLOG_WARNING "Warning: ",
            cpu_has_nx ? "" : "not ");
 
-    initrdidx = find_first_bit(module_map, bi->nr_modules);
-    if ( initrdidx < bi->nr_modules )
+    /*
+     * At this point all capabilities that consume boot modules should have
+     * claimed their boot modules. Find the first unclaimed boot module and
+     * claim it as the initrd ramdisk. Do a second search to see if there are
+     * any remaining unclaimed boot modules, and report them as unusued initrd
+     * candidates.
+     */
+    initrdidx = first_boot_module_index(bi, BOOTMOD_UNKNOWN);
+    if ( initrdidx < MAX_NR_BOOTMODS )
     {
         bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
         bi->mods[initrdidx].consumed = true;
+        if ( first_boot_module_index(bi, BOOTMOD_UNKNOWN) < MAX_NR_BOOTMODS )
+            printk(XENLOG_WARNING
+                   "Multiple initrd candidates, picking module #%u\n",
+                   initrdidx);
     }
-    if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
-        printk(XENLOG_WARNING
-               "Multiple initrd candidates, picking module #%u\n",
-               initrdidx);
 
     /*
      * We're going to setup domain0 using the module(s) that we stashed safely
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:48:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:48:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822904.1236842 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gb0-0002OW-Mf; Mon, 21 Oct 2024 00:48:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822904.1236842; Mon, 21 Oct 2024 00:48: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 1t2gb0-0002ON-JZ; Mon, 21 Oct 2024 00:48:30 +0000
Received: by outflank-mailman (input) for mailman id 822904;
 Mon, 21 Oct 2024 00:48: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gaz-0001i1-DR
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:48:29 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2f295301-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:48:28 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471602382953.3963286856804;
 Sun, 20 Oct 2024 17:46:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2f295301-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471603; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=ffjeDt3vlGThPv2nGih5zq6NopZoxBvcvG5nslxFWuPr28L4i22uCe1sQvZwCIX85CDHqMwW2Va9QgGRPL6r/ZVd+7rlPTudkLu28MSyu4u89o7JfPL7Id/i0/737PxbZvx7LKlJtIfy/Fh4SSMGuVIyA0fSMnazdMEv+0wzIe8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471603; h=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=1DlKXsrl8Pt4Zb3FNGx3fPisFvIcfKzE2I6khDAdJVU=; 
	b=WOeS81PAEGUyIUJI1hRr+RA1Tvfhc4b2EIs7lKgj9qeQVn3a4rSco0Kqz1tfAwvy2OmScMW1dKXwTKDbtwHZfzzE3nc0/CWPp908gXgl5/ueA5/cA+F7UCBwGVsecxb5mGBLT4tEIPSYCJlzxgURm9z4oD1OZSVaxg5nwn/3Ft8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471603;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=1DlKXsrl8Pt4Zb3FNGx3fPisFvIcfKzE2I6khDAdJVU=;
	b=R7IMpvaeD/MFXuaEPG7e7FHgRQiQbruUh3NpNGB7hrDym0oPyPmRKUNKc6ZtQpdC
	jECE4biceXaQiMp5JX7W3btUEhC56nSa56dUj73Z0b83ioMSZdJyf/0OzwleT4mz2l+
	VEDNn8buWZwMISXBVU/rl6jMrUCbVCcDaAjnDGXA=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 16/38] x86/boot: remove module_map usage from microcode loading
Date: Sun, 20 Oct 2024 20:45:51 -0400
Message-Id: <20241021004613.18793-17-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With all consumers of module_map converted, remove usage of it
by the microcode loading logic.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- dropped unnecessary parens
---
 xen/arch/x86/cpu/microcode/core.c    | 20 ++++++++------------
 xen/arch/x86/include/asm/microcode.h |  6 ++----
 xen/arch/x86/setup.c                 |  4 ++--
 3 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 8ea789dceec2..938dfd74a9f1 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -152,8 +152,7 @@ static int __init cf_check parse_ucode(const char *s)
 }
 custom_param("ucode", parse_ucode);
 
-static void __init microcode_scan_module(
-    unsigned long *module_map, struct boot_info *bi)
+static void __init microcode_scan_module(struct boot_info *bi)
 {
     uint64_t *_blob_start;
     unsigned long _blob_size;
@@ -199,19 +198,18 @@ static void __init microcode_scan_module(
     }
 }
 
-static void __init microcode_grab_module(
-    unsigned long *module_map, struct boot_info *bi)
+static void __init microcode_grab_module(struct boot_info *bi)
 {
     if ( ucode_mod_idx < 0 )
         ucode_mod_idx += bi->nr_modules;
     if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
-         !__test_and_clear_bit(ucode_mod_idx, module_map) )
+         bi->mods[ucode_mod_idx].type != BOOTMOD_UNKNOWN )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
     ucode_mod = &bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, bi);
+        microcode_scan_module(bi);
 }
 
 static struct microcode_ops __ro_after_init ucode_ops;
@@ -815,8 +813,7 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(
-    unsigned long *module_map, struct boot_info *bi)
+int __init microcode_init_cache(struct boot_info *bi)
 {
     int rc = 0;
 
@@ -825,7 +822,7 @@ int __init microcode_init_cache(
 
     /* Scan if microcode was not detected earlier */
     if ( !ucode_mod )
-        microcode_scan_module(module_map, bi);
+        microcode_scan_module(bi);
 
     if ( ucode_mod && !ucode_mod->consumed )
         rc = early_update_cache(bootstrap_map_bm(ucode_mod),
@@ -871,8 +868,7 @@ static int __init early_microcode_update_cpu(void)
     return microcode_update_cpu(patch, 0);
 }
 
-int __init early_microcode_init(unsigned long *module_map,
-                                struct boot_info *bi)
+int __init early_microcode_init(struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
     int rc = 0;
@@ -915,7 +911,7 @@ int __init early_microcode_init(unsigned long *module_map,
         return -ENODEV;
     }
 
-    microcode_grab_module(module_map, bi);
+    microcode_grab_module(bi);
 
     if ( ucode_mod || ucode_blob.size )
         rc = early_microcode_update_cpu();
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 9e7c7ab004ed..917a861fd8f7 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -26,10 +26,8 @@ DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 void microcode_set_module(unsigned int idx);
 int microcode_update(
     XEN_GUEST_HANDLE(const_void) buf, unsigned long len, unsigned int flags);
-int early_microcode_init(
-    unsigned long *module_map, struct boot_info *bi);
-int microcode_init_cache(
-    unsigned long *module_map, struct boot_info *bi);
+int early_microcode_init(struct boot_info *bi);
+int microcode_init_cache(struct boot_info *bi);
 int microcode_update_one(void);
 
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 153d361793c1..7fdbe57ca1c3 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1409,7 +1409,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * TODO: load ucode earlier once multiboot modules become accessible
      * at an earlier stage.
      */
-    early_microcode_init(module_map, bi);
+    early_microcode_init(bi);
 
     if ( xen_phys_start )
     {
@@ -1956,7 +1956,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     timer_init();
 
-    microcode_init_cache(module_map, bi); /* Needs xmalloc() */
+    microcode_init_cache(bi); /* Needs xmalloc() */
 
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:48:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:48:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822908.1236852 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gb8-0002rI-2U; Mon, 21 Oct 2024 00:48:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822908.1236852; Mon, 21 Oct 2024 00:48: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 1t2gb7-0002rB-VV; Mon, 21 Oct 2024 00:48:37 +0000
Received: by outflank-mailman (input) for mailman id 822908;
 Mon, 21 Oct 2024 00:48: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gb6-0001i1-JM
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:48:36 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3353eecb-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:48:35 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471603538750.0207690703996;
 Sun, 20 Oct 2024 17:46:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3353eecb-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471606; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=X4s3eIQ14tZWKHqkKLPMrGe3CIVkwuXN4KvYLbrgervkjM3mcQH/HYkgGTnNVovltcXzbN5fZb1yu2knYvzvSEPzc6rEWDz5my1pWEX/n2JdzZrnMqcHWimuaCBCEgBSzIXaN4uwSEjNPXVeaGLp+K+5jPcgeAkZ5Y1czBOnWeA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471606; h=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=yhLw3VJzc36B+i3/OvCwWtKAEdp06v39PF++zo/ehfw=; 
	b=Xf46jjNQrPvREwCQYthNg3zmsjbrIFGOko19Y0ng6aUd/Ez9iFvm9VX0C2kiS3dPKagfAvkb0FkLWh62JfOt2ePQY6UZvUnhfqhTKG2Py5r9qbXHFVSeqDHXsh3jcyZlshODibl+IfN88UbAlPjZIl6Dli3vne5+VOvRyZfdolQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471606;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=yhLw3VJzc36B+i3/OvCwWtKAEdp06v39PF++zo/ehfw=;
	b=n9QYn8gCMsKqiePXlsaqdnDbpcy+na+8vvwFTe1IrpXYDS63W4CfZuW558Pm2hH9
	njZcUjN8/V5+T1fZsFWtm7w2ALp4b9uPdRBY0jg20J99bacE33InNQL/yTKMs5Cqjax
	N0ZOs4VD7G79iuvqX+siyEoEGAPMvXn3+b4I1kEw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 17/38] x86/boot: remove module_map usage from xsm policy loading
Date: Sun, 20 Oct 2024 20:45:52 -0400
Message-Id: <20241021004613.18793-18-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- adjust comment to coding style
---
 xen/arch/x86/setup.c  | 2 +-
 xen/include/xsm/xsm.h | 9 +++------
 xen/xsm/xsm_core.c    | 6 ++----
 xen/xsm/xsm_policy.c  | 4 +---
 4 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 7fdbe57ca1c3..84d6981f4e77 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1882,7 +1882,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
                                   RANGESETF_prettyprint_hex);
 
-    xsm_multiboot_init(module_map, bi);
+    xsm_multiboot_init(bi);
 
     /*
      * IOMMU-related ACPI table parsing may require some of the system domains
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index f155d10e718c..791936e5285b 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -781,11 +781,9 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 #endif /* XSM_NO_WRAPPERS */
 
 #ifdef CONFIG_MULTIBOOT
-int xsm_multiboot_init(
-    unsigned long *module_map, struct boot_info *bi);
+int xsm_multiboot_init(struct boot_info *bi);
 int xsm_multiboot_policy_init(
-    unsigned long *module_map, struct boot_info *bi,
-    void **policy_buffer, size_t *policy_size);
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size);
 #endif
 
 #ifdef CONFIG_HAS_DEVICE_TREE
@@ -831,8 +829,7 @@ static const inline struct xsm_ops *silo_init(void)
 #include <xsm/dummy.h>
 
 #ifdef CONFIG_MULTIBOOT
-static inline int xsm_multiboot_init (
-    unsigned long *module_map, struct boot_info *bi)
+static inline int xsm_multiboot_init(struct boot_info *bi)
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index 234b39de7a1d..d58042a1fa4a 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -140,8 +140,7 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)
 }
 
 #ifdef CONFIG_MULTIBOOT
-int __init xsm_multiboot_init(
-    unsigned long *module_map, struct boot_info *bi)
+int __init xsm_multiboot_init(struct boot_info *bi)
 {
     int ret = 0;
     void *policy_buffer = NULL;
@@ -151,8 +150,7 @@ int __init xsm_multiboot_init(
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, bi, &policy_buffer,
-                                        &policy_size);
+        ret = xsm_multiboot_policy_init(bi, &policy_buffer, &policy_size);
         if ( ret )
         {
             bootstrap_map_bm(NULL);
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 9fb8563eb571..f1c94702f6e0 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -32,8 +32,7 @@
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(
-    unsigned long *module_map, struct boot_info *bi,
-    void **policy_buffer, size_t *policy_size)
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size)
 {
     int rc = 0;
     u32 *_policy_start;
@@ -57,7 +56,6 @@ int __init xsm_multiboot_policy_init(
             printk("Policy len %#lx, start at %p.\n",
                    _policy_len,_policy_start);
 
-            __clear_bit(boot_module_index(bi, bm), module_map);
             bm->type = BOOTMOD_XSM_POLICY;
             break;
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:48:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:48:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822913.1236861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gbG-0003N5-91; Mon, 21 Oct 2024 00:48:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822913.1236861; Mon, 21 Oct 2024 00:48: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 1t2gbG-0003Mv-6H; Mon, 21 Oct 2024 00:48:46 +0000
Received: by outflank-mailman (input) for mailman id 822913;
 Mon, 21 Oct 2024 00: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gbE-0003Iq-Ri
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:48:44 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 37813caf-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:48:42 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471604782239.07506705249955;
 Sun, 20 Oct 2024 17:46:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 37813caf-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471606; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Qw2RrvII95qAkQzNoyV01MYL7i48DXV/rPwAYiEaCXvz3hozLRlt6jH2BhSsNJHUVEeNpxT3z8JoMrxsOnb/ozL3oBsXG1VaRN49roTx8x3k8u6cb7d+T8jKSt5ucp0dCb3MIQ96clok3ocHjMis0dnb/4ZmGFJ0hOS6CIfZWfI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471606; h=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=yVwODdnV8WxSfmxxfPtGY+cCMyrPgV0sY5P16JCBxdM=; 
	b=ejLfnlxz6GXAuT7pi1SNDZKKuHFJ/odObHb97X52dcdzbpVhWSscl2GsFR1k8LDn/SjzEwSNIBMyq3uXqOfnwoxaYmCHVQqqQdrT+5tEyVQlkzENsuaPny8JAACSrjciz08n4MVxgaOcLvEk08qRqPi6AcfKtI+4jXprWK5TGKs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471606;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=yVwODdnV8WxSfmxxfPtGY+cCMyrPgV0sY5P16JCBxdM=;
	b=FhnZS4DxhLJshSVTG+L9H3TzX0lo4g/BAM/BfsZWtXN/NfeS2kFZIFDhYHVx0esa
	cx1fzYs5CRwOm2z0EQhN+6S98lIiIDDG5fMK8VnCplJlkYeeso2i2wj+eE5DqJeGlgG
	3XxiBliI9JbU/bwid4dsQVCc4hM/rJnvTvQjLAs4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 18/38] x86/boot: remove module_map usage by ramdisk loading
Date: Sun, 20 Oct 2024 20:45:53 -0400
Message-Id: <20241021004613.18793-19-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The ramdisk loading is the last user of module_map, remove
its usage and any remaining remnants of module_map.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- set excessive module check down to MAX_NR_BOOTMODS
---
 xen/arch/x86/setup.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 84d6981f4e77..4a482c8aefa4 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1053,7 +1053,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     struct boot_info *bi;
     multiboot_info_t *mbi;
     module_t *mod;
-    unsigned long nr_pages, raw_max_page, module_map[1];
+    unsigned long nr_pages, raw_max_page;
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
@@ -1217,8 +1217,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                bi->nr_modules);
     }
 
-    bitmap_fill(module_map, bi->nr_modules);
-    __clear_bit(0, module_map); /* Dom0 kernel is always first */
+    /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
     bi->mods[0].consumed = true;
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:48:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:48:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822921.1236872 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gbN-0003tJ-HR; Mon, 21 Oct 2024 00:48:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822921.1236872; Mon, 21 Oct 2024 00:48: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 1t2gbN-0003t9-Ed; Mon, 21 Oct 2024 00:48:53 +0000
Received: by outflank-mailman (input) for mailman id 822921;
 Mon, 21 Oct 2024 00:48: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gbM-0003Iq-IA
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:48:52 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3c3ef1cb-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:48:50 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471605922769.1616730146538;
 Sun, 20 Oct 2024 17:46:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3c3ef1cb-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471608; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=BhUoykAv0QlunbmRcqPYtKySMSy9xrRdYPBOvgw+GZZoRmHyK+RxdEaVSNZulXOvG8GWJnzZfbxicwxeQrimZxXInJj5/IjX+j7O4u3q2zrFxqI7tFFY1v+4qLZX3fJzrTXPGTNaabmNcBBgkiDRbW0MHPOlu7/qQ9pYxDt8n04=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471608; h=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=ZZjD4AlskBmTFJGQxv1B5HnCBYZoGhPGwEpU4WRgfog=; 
	b=J4BdJMqbiXxa8CxKKbS0+qX2U82cCngXxAn/5huTQX5nIdswpSqg6v39DWkEl3ZDSDVnkQq2Dzm0pLycnG58dopQYIkbolxn6P2SYmoK1uLM16yZsBiNZIWx4iQtr1p5UFNxo7wt5R3mfm67MnH8EJeam4abPptQCKh7afAlj58=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471608;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=ZZjD4AlskBmTFJGQxv1B5HnCBYZoGhPGwEpU4WRgfog=;
	b=pu8QZfI1ARA9IDzbkIbj6C4cE6Dfp4G1OSyvl9bi6+qcrVINLMqRMxlDc9B6GPIn
	cpPQgjVrSyn43aq07GYq9WlaMpPh4Q3rwrB9Ryx6ziu7nCA6R5PGsiSiNhXGfg8DTkF
	+2MvNfe/0Spzvwe6MFUGO8IfXc5r+PS86SAHH+cM=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 19/38] x86/boot: convert create_dom0 to use boot info
Date: Sun, 20 Oct 2024 20:45:54 -0400
Message-Id: <20241021004613.18793-20-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit changes create_dom0 to no longer take the individual components and
take struct boot_info instead. Internally, it is changed to locate the kernel
and ramdisk details from struct boot_info.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- change headroom back to unsigned long
- make mod_idx unsigned int
---
 xen/arch/x86/setup.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 4a482c8aefa4..347b27ad7c6c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -962,10 +962,8 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(const module_t *image,
-                                         unsigned long headroom,
-                                         module_t *initrd, const char *kextra,
-                                         const char *loader)
+static struct domain *__init create_dom0(const struct boot_info *bi,
+                                         const char *kextra)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
 
@@ -980,9 +978,22 @@ static struct domain *__init create_dom0(const module_t *image,
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
+    unsigned long headroom;
+    unsigned int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
+    module_t *image, *initrd;
     struct domain *d;
     domid_t domid;
 
+    /* Map boot_module to mb1 module for dom0 */
+    image = bi->mods[0].mod;
+    headroom = bi->mods[0].headroom;
+
+    /* Map boot_module to mb1 module for initrd */
+    if ( mod_idx < 0 )
+        initrd = NULL;
+    else
+        initrd = bi->mods[mod_idx].mod;
+
     if ( opt_dom0_pvh )
     {
         dom0_cfg.flags |= (XEN_DOMCTL_CDF_hvm |
@@ -1011,7 +1022,7 @@ static struct domain *__init create_dom0(const module_t *image,
     if ( image->string || kextra )
     {
         if ( image->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->string), loader));
+            safe_strcpy(cmdline, cmdline_cook(__va(image->string), bi->loader));
 
         if ( kextra )
             /* kextra always includes exactly one leading space. */
@@ -2123,10 +2134,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(bi->mods[0].mod, bi->mods[0].headroom,
-                       initrdidx < bi->nr_modules ? bi->mods[initrdidx].mod
-                                                  : NULL,
-                       kextra, bi->loader);
+    dom0 = create_dom0(bi, kextra);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:49:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:49:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822924.1236882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gbV-0004OR-Q2; Mon, 21 Oct 2024 00:49:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822924.1236882; Mon, 21 Oct 2024 00:49: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 1t2gbV-0004OH-LC; Mon, 21 Oct 2024 00:49:01 +0000
Received: by outflank-mailman (input) for mailman id 822924;
 Mon, 21 Oct 2024 00:49: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gbU-0003Iq-F1
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:00 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 40ed903a-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:48:58 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471607102166.0182824509185;
 Sun, 20 Oct 2024 17:46:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 40ed903a-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471608; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=WO5Zr6CPBrBo9daYaNRGckB7hkc6SsWurLIp5gvxptdINyH8EjibF1Qtim1vnD+rBedp6vUTndyACF0A2qAvVY2rs5Z+ZpEyl4OGmqbc8GiUp2G/dWy/lvZjsueVWj/JgdX0y912qQOWKdHyPReO3qsj189ZdqveYZ9JE9C1I40=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471608; h=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=cBjn8qpPRBCnRHHQipv24ZKBHCd3uNn+xt1GGGTjo4k=; 
	b=NSbS3/reyYsemBUu+p9rK7RlHY2gQwziWRUnJzzYuLw2kpAKZzxth8vpMVkvWor9Kfaipess1v2P1OUaRrGc1BbQoFPKOGvzktO4nAjJiUE4QI400fTmXh6r/BxrlYWelWB/jCgJLKQvw98v5j7Bm16f2SbJeU1wf6IphzVaAV4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471608;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=cBjn8qpPRBCnRHHQipv24ZKBHCd3uNn+xt1GGGTjo4k=;
	b=I/OxuYEX0ItDD1mTenXEOPO3Yc/g//LoyeRo3O3ZbOn05UT6yh/ZD8npdItO9WQI
	U/vFyEIBRDUU1k2kPtZPAGjEqOH2460Pen30jZ5zTJi7Vdd5Vumln7rt3dowp8ZMfrA
	nLqJ6fBONBYP95Im4t7Fadbp7yBtx4Xh5b8UGI8I=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 20/38] x86/boot: convert construct_dom0 to use struct boot_module
Date: Sun, 20 Oct 2024 20:45:55 -0400
Message-Id: <20241021004613.18793-21-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The construct_dom0 function is converted to consume struct boot_module
instances for the kernel and ramdisk. With this change, it is no longer
necessary for the internal use of struct mod by create_dom0, so they are
changed to struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/dom0_build.c        | 12 +++++++-----
 xen/arch/x86/include/asm/setup.h |  6 ++----
 xen/arch/x86/setup.c             | 19 +++++++++----------
 3 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 8d56705a0861..1eff3192f72d 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -13,6 +13,7 @@
 #include <xen/softirq.h>
 
 #include <asm/amd.h>
+#include <asm/bootinfo.h>
 #include <asm/dom0_build.h>
 #include <asm/guest.h>
 #include <asm/hpet.h>
@@ -596,9 +597,8 @@ int __init dom0_setup_permissions(struct domain *d)
     return rc;
 }
 
-int __init construct_dom0(struct domain *d, const module_t *image,
-                          unsigned long image_headroom, module_t *initrd,
-                          const char *cmdline)
+int __init construct_dom0(struct domain *d, const struct boot_module *image,
+                          struct boot_module *initrd, const char *cmdline)
 {
     int rc;
 
@@ -610,9 +610,11 @@ int __init construct_dom0(struct domain *d, const module_t *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image, image_headroom, initrd, cmdline);
+        rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
+                                cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, image_headroom, initrd, cmdline);
+        rc = dom0_construct_pv(d, image->mod, image->headroom, initrd->mod,
+                               cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 729f68ca23b8..72d183e8a4de 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -27,10 +27,8 @@ void subarch_init_memory(void);
 void init_IRQ(void);
 
 int construct_dom0(
-    struct domain *d,
-    const module_t *image, unsigned long image_headroom,
-    module_t *initrd,
-    const char *cmdline);
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, const char *cmdline);
 void setup_io_bitmap(struct domain *d);
 
 extern struct boot_info xen_boot_info;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 347b27ad7c6c..d7f03225bd5a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -962,7 +962,7 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(const struct boot_info *bi,
+static struct domain *__init create_dom0(struct boot_info *bi,
                                          const char *kextra)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
@@ -978,21 +978,19 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
-    unsigned long headroom;
     unsigned int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
-    module_t *image, *initrd;
+    struct boot_module *image, *initrd;
     struct domain *d;
     domid_t domid;
 
     /* Map boot_module to mb1 module for dom0 */
-    image = bi->mods[0].mod;
-    headroom = bi->mods[0].headroom;
+    image = &bi->mods[0];
 
     /* Map boot_module to mb1 module for initrd */
     if ( mod_idx < 0 )
         initrd = NULL;
     else
-        initrd = bi->mods[mod_idx].mod;
+        initrd = &bi->mods[mod_idx];
 
     if ( opt_dom0_pvh )
     {
@@ -1019,10 +1017,11 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->string || kextra )
+    if ( image->mod->string || kextra )
     {
-        if ( image->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->string), bi->loader));
+        if ( image->mod->string )
+            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
+                        bi->loader));
 
         if ( kextra )
             /* kextra always includes exactly one leading space. */
@@ -1045,7 +1044,7 @@ static struct domain *__init create_dom0(const struct boot_info *bi,
         }
     }
 
-    if ( construct_dom0(d, image, headroom, initrd, cmdline) != 0 )
+    if ( construct_dom0(d, image, initrd, cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:50:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:50:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822930.1236892 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gcr-0006Ss-2D; Mon, 21 Oct 2024 00:50:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822930.1236892; Mon, 21 Oct 2024 00:50: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 1t2gcq-0006Sl-Vh; Mon, 21 Oct 2024 00:50:24 +0000
Received: by outflank-mailman (input) for mailman id 822930;
 Mon, 21 Oct 2024 00: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gcq-0006SZ-8Y
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:24 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 72bfce43-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:50:22 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471619758245.98953686943776;
 Sun, 20 Oct 2024 17:46:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 72bfce43-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471622; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=IRqZaQ4+kh/HRypaOU5C5US+K0CJvsmhAIFWyD4SbQ8osnR2ivVgxks1gf52rW3J2X0mJo2rMgB2BGKmwXXv2L5/BS73P9i/kGlW1NwFIu75IrEFeObVnwUlJ3pYuvAmjswTJb3XLfBrO0j0ih+YdavyQ6rwLusYmr1qrzpIyJw=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471622; h=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=Jx51Zf1zwygUUllbZAd+b9gYxFDST6JrxccGSqHc+vc=; 
	b=HUbtKCinlxiyjKm2U/HqD/m266ijeF9U5/81vdsyTWqjHOqgbkAx/LAmHW1dZCOpBAdliHhYUZlqy4lFa4ggk+3AZZ5soxbVzrQdpi5EcYIudxSTlzj/mvDOZ1l5UpjfCZ80pz0fABAOtkP59VRcR01UVyvRYyxA5avq25Aj8kI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471622;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Jx51Zf1zwygUUllbZAd+b9gYxFDST6JrxccGSqHc+vc=;
	b=IHCOGVlafenqtX/hDFMkmGm89FkiB7nolG3pT236cn0cBDr3plYLAuXefKNoLmkA
	24ZAizCLX6VUoFKVKdblOYxo/YUNTRHjRs0moa23Ueoch/K9FoyVVvwAzBCavaBF1qK
	TagzaIh3wBeZES4/3Iz2BoHDZEQHEcTRf884iBpI=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 31/38] x86/boot: remove mod from struct boot_module
Date: Sun, 20 Oct 2024 20:46:06 -0400
Message-Id: <20241021004613.18793-32-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With all references to mod field removed, remove the mod field from struct
boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 4 ----
 xen/arch/x86/setup.c                | 3 ---
 2 files changed, 7 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 941363601db7..eaed99b64e57 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -8,7 +8,6 @@
 #ifndef X86_BOOTINFO_H
 #define X86_BOOTINFO_H
 
-#include <xen/multiboot.h>
 #include <xen/types.h>
 
 /* Max number of boot modules a bootloader can provide in addition to Xen */
@@ -25,9 +24,6 @@ enum bootmod_type {
 };
 
 struct boot_module {
-    /* Transitionary only */
-    module_t *mod;
-
     /*
      * A boot module may contain a compressed kernel that will require
      * additional space, before the module data, into which the kernel will be
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 2102923cd510..1fda462ba1d0 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -314,8 +314,6 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
      */
     for ( i = 0; i < MAX_NR_BOOTMODS && i < bi->nr_modules; i++ )
     {
-        bi->mods[i].mod = &mods[i];
-
         bi->mods[i].cmdline = (paddr_t)mods[i].string;
 
         if ( !efi_enabled(EFI_LOADER) )
@@ -331,7 +329,6 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     }
 
     /* Variable 'i' should be one entry past the last module. */
-    bi->mods[i].mod = &mods[bi->nr_modules];
     bi->mods[i].start = mods[i].mod_start;
     bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
     bi->mods[i].type = BOOTMOD_XEN;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:50:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:50:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822931.1236902 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gcz-0006mK-CX; Mon, 21 Oct 2024 00:50:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822931.1236902; Mon, 21 Oct 2024 00:50: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 1t2gcz-0006mB-9g; Mon, 21 Oct 2024 00:50:33 +0000
Received: by outflank-mailman (input) for mailman id 822931;
 Mon, 21 Oct 2024 00:50: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gcy-0006SZ-Ek
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:32 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 77c4f1ae-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:50:30 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471620910870.5614994718397;
 Sun, 20 Oct 2024 17:47:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 77c4f1ae-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471623; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=DuBhDV9LR43EjSEDrWxffmCR7i6UHowBWr7l+kg6XwSINeRtJOd86N/zKlBiTw6oKnTRsFsHyDMwXYVn8UkTFjCtfaC2eL7ftbeYf+1H1U7dkixblKhFPQ+Pkj6P8a/B00wHAeB9pLlhHO1uNEjq+IAgZjD1Xs9+fc3sCH76i0I=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471623; h=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=Oopo77OjyZyLSeSBhv9zVkD0fLALdVYLRGVHW2cBbWA=; 
	b=bCNVar2zNjEBdjfjwPaH/BnBHAqljrdLZgyXO9wfANN245/I36u7c+600KnPRklNsWYEZ5O6Mgw3O1NOrNwIdNS1XVRmWHDgYzdgi4G8HC6PnjVveLP1+v5GlLIEdZxiIakAABDAVisSwV2fHttpXGsuAmo+0h9+cyeBCizSyMY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471623;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Oopo77OjyZyLSeSBhv9zVkD0fLALdVYLRGVHW2cBbWA=;
	b=UQhe8Ua9gqNAY8peiLoAJNH5hlB8ScDqnGV6yIMJVUg48TBWhzqY8jcyxykrEQyU
	p6doLUX1OO2C3fYyPHOAMC9lUyrbrbcVHAr/7neHRHqsUjd+F5FDnS7JKSAlM0cPaJd
	v/CMUXFMwAA8qI04KEdtE4t8/zfqowB5xct30V2k=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 32/38] x86/boot: introduce boot domain
Date: Sun, 20 Oct 2024 20:46:07 -0400
Message-Id: <20241021004613.18793-33-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To begin moving toward allowing the hypervisor to construct more than one
domain at boot, a container is needed for a domain's build information.

Introduce a new header, <xen/asm/bootdomain.h>, that contains the initial
struct boot_domain that encapsulate the build information for a domain.

No functional change intended.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h | 28 +++++++++++++++++++++++++++
 xen/arch/x86/include/asm/bootinfo.h   |  5 +++++
 xen/arch/x86/setup.c                  | 23 +++++++---------------
 3 files changed, 40 insertions(+), 16 deletions(-)
 create mode 100644 xen/arch/x86/include/asm/bootdomain.h

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
new file mode 100644
index 000000000000..4285223ac5ab
--- /dev/null
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2024 Apertus Solutions, LLC
+ * Author: Daniel P. Smith <dpsmith@apertussolutions.com>
+ * Copyright (c) 2024 Christopher Clark <christopher.w.clark@gmail.com>
+ */
+
+#ifndef __XEN_X86_BOOTDOMAIN_H__
+#define __XEN_X86_BOOTDOMAIN_H__
+
+struct boot_module;
+
+struct boot_domain {
+    struct boot_module *kernel;
+    struct boot_module *ramdisk;
+};
+
+#endif
+
+/*
+ * 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/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index eaed99b64e57..3fb23e90d712 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -9,10 +9,14 @@
 #define X86_BOOTINFO_H
 
 #include <xen/types.h>
+#include <asm/bootdomain.h>
 
 /* Max number of boot modules a bootloader can provide in addition to Xen */
 #define MAX_NR_BOOTMODS 63
 
+/* Max number of boot domains that Xen can construct */
+#define MAX_NR_BOOTDOMS 1
+
 /* Boot module binary type / purpose */
 enum bootmod_type {
     BOOTMOD_UNKNOWN,
@@ -68,6 +72,7 @@ struct boot_info {
 
     unsigned int nr_modules;
     struct boot_module mods[MAX_NR_BOOTMODS + 1];
+    struct boot_domain domains[MAX_NR_BOOTDOMS];
 };
 
 static inline struct boot_module *__init next_boot_module_by_type(
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 1fda462ba1d0..9b2a16863eae 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -972,20 +972,10 @@ static struct domain *__init create_dom0(struct boot_info *bi)
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
         },
     };
-    unsigned int mod_idx = first_boot_module_index(bi, BOOTMOD_RAMDISK);
-    struct boot_module *image, *initrd;
+    struct boot_domain *bd = &bi->domains[0];
     struct domain *d;
     domid_t domid;
 
-    /* Map boot_module to mb1 module for dom0 */
-    image = &bi->mods[0];
-
-    /* Map boot_module to mb1 module for initrd */
-    if ( mod_idx < 0 )
-        initrd = NULL;
-    else
-        initrd = &bi->mods[mod_idx];
-
     if ( opt_dom0_pvh )
     {
         dom0_cfg.flags |= (XEN_DOMCTL_CDF_hvm |
@@ -1011,11 +1001,10 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->cmdline || bi->kextra )
+    if ( bd->kernel->cmdline || bi->kextra )
     {
-        if ( image->cmdline )
-            safe_strcpy(cmdline,
-                        cmdline_cook(__va(image->cmdline),
+        if ( bd->kernel->cmdline )
+            safe_strcpy(cmdline, cmdline_cook(__va(bd->kernel->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
@@ -1039,7 +1028,7 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         }
     }
 
-    if ( construct_dom0(d, image, initrd, cmdline) != 0 )
+    if ( construct_dom0(d, bd->kernel, bd->ramdisk, cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
@@ -1226,6 +1215,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
     bi->mods[0].consumed = true;
+    bi->domains[0].kernel = &bi->mods[0];
 
     if ( pvh_boot )
     {
@@ -2104,6 +2094,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
         bi->mods[initrdidx].consumed = true;
+        bi->domains[0].ramdisk = &bi->mods[initrdidx];
         if ( first_boot_module_index(bi, BOOTMOD_UNKNOWN) < MAX_NR_BOOTMODS )
             printk(XENLOG_WARNING
                    "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:50:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822932.1236912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gd7-0007Ah-K3; Mon, 21 Oct 2024 00:50:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822932.1236912; Mon, 21 Oct 2024 00: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 1t2gd7-0007Aa-HN; Mon, 21 Oct 2024 00:50:41 +0000
Received: by outflank-mailman (input) for mailman id 822932;
 Mon, 21 Oct 2024 00:50: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gd6-0006SZ-C7
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:40 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7c837f0d-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:50:38 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471622046365.3421362328204;
 Sun, 20 Oct 2024 17:47:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c837f0d-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471624; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=FBnTCKciI1qXLSfvCylWHRkTkplR4ELrfIQI8nyH/1X7lmHPI/SbwYrFzyLX36A5yd3lS+JIeruVSDZEn5rteH+C3P3tyJscSdsRGxnd6HLNh4SCtypNmWqaTyuFWddxm1teOKlglF4cBK9OHkv08bVpfruVShtJS0183J/YHHs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471624; h=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=W9SYyOcjZouRlsw2CUmEqIi1nilT6Qy3TrY52aUXeMg=; 
	b=DLRUpmCqKFm+g+ScIYzX5BvoR3b7nyJ9li+oSezQqi+g0tsmxHScsB0hWsaiacP/yqG7xWVuywGJO2QXmuF6xjW7PYZ24XFt+gM8OH7HmjGv/MdDa/on9VVqQQ5KPPqLmEtzzS0uAInRacfwtZlUE011k6NAnXtTlf3cszxoVNo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471624;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=W9SYyOcjZouRlsw2CUmEqIi1nilT6Qy3TrY52aUXeMg=;
	b=oVYj5Zm+wV2+cD1qWNmVcSId/gJNWioLepmtZGnBaw0V6oLDVuJsYqeMP2GnQFr+
	Ej+asYIbKQ2Ziiz/+oCqkhLwkIX9ucD4hLb6e4pvywvATHsc2izb1Jf8WUuAqFLiLK2
	mH9SseOHWCA2ve8xNhkJXgTkc9qMumruEitPfV4w=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 33/38] x86/boot: introduce domid field to struct boot_domain
Date: Sun, 20 Oct 2024 20:46:08 -0400
Message-Id: <20241021004613.18793-34-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a domid field to struct boot_domain to hold the assigned domain id for the
domain. During initialization, ensure all instances of struct boot_domain have
the invalid domid to ensure that the domid must be set either by convention or
configuration.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/include/asm/bootdomain.h |  2 ++
 xen/arch/x86/setup.c                  | 12 +++++++-----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index 4285223ac5ab..d6264d554dba 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -11,6 +11,8 @@
 struct boot_module;
 
 struct boot_domain {
+    domid_t domid;
+
     struct boot_module *kernel;
     struct boot_module *ramdisk;
 };
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 9b2a16863eae..e6756d0ad18d 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -334,6 +334,9 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     bi->mods[i].type = BOOTMOD_XEN;
     bi->mods[i].consumed = true;
 
+    for ( i = 0; i < MAX_NR_BOOTDOMS; i++ )
+        bi->domains[i].domid = DOMID_INVALID;
+
     return bi;
 }
 
@@ -974,7 +977,6 @@ static struct domain *__init create_dom0(struct boot_info *bi)
     };
     struct boot_domain *bd = &bi->domains[0];
     struct domain *d;
-    domid_t domid;
 
     if ( opt_dom0_pvh )
     {
@@ -990,15 +992,15 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
 
     /* Create initial domain.  Not d0 for pvshim. */
-    domid = get_initial_domain_id();
-    d = domain_create(domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
+    bd->domid = get_initial_domain_id();
+    d = domain_create(bd->domid, &dom0_cfg, pv_shim ? 0 : CDF_privileged);
     if ( IS_ERR(d) )
-        panic("Error creating d%u: %ld\n", domid, PTR_ERR(d));
+        panic("Error creating d%u: %ld\n", bd->domid, PTR_ERR(d));
 
     init_dom0_cpuid_policy(d);
 
     if ( alloc_dom0_vcpu0(d) == NULL )
-        panic("Error creating d%uv0\n", domid);
+        panic("Error creating d%uv0\n", bd->domid);
 
     /* Grab the DOM0 command line. */
     if ( bd->kernel->cmdline || bi->kextra )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:50:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:50:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822937.1236922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gdF-0007fY-SA; Mon, 21 Oct 2024 00:50:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822937.1236922; Mon, 21 Oct 2024 00: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 1t2gdF-0007fP-OT; Mon, 21 Oct 2024 00:50:49 +0000
Received: by outflank-mailman (input) for mailman id 822937;
 Mon, 21 Oct 2024 00:50: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gdE-0006SZ-EW
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:48 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 813cac43-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:50:46 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471623186522.1233549769001;
 Sun, 20 Oct 2024 17:47:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 813cac43-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471625; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=HqxM3dqdeB0km8RbD03cNlgcNFhccTKsB3/cwgbgufplgTrAjeFLwM7zuLG7IwHraDZRbTpAG7qCrP5LEU0m6uxyiNRL1QKyQmNncwkN+V+Y1BniHqMeoCuGlR5urTxiKmZezHgQH/00B7GnHBlq14lhqiPVc/BT0EBNgvJMdcg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471625; h=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=UX88o1+TSwX0OSFHrl/WAKdIoJCte8538NgcDozE6gA=; 
	b=TyFlmEAIJGaeMFUxU+j1jKotorVNlZm8Bi0WySImX/t3XgX9VAdjoUEcjHwI+5jt2o6Rt6a20r+oSt5ZPCd4LtrPn+FvhoC4aXDp25XVq8lctsl8++XZIJKLfRoYdA/6HDt8wOzpSkQzA/biTwA73h5lKyDMoU2E1x6h1eRULgY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471625;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=UX88o1+TSwX0OSFHrl/WAKdIoJCte8538NgcDozE6gA=;
	b=IKzMOY38vu0RPRknNzhv2Ov7+2JGcL0+KdOkbx69xbdhgs2IrXZtSy8XL4qzfN9A
	DxmmheJFF9EKTrTPXItg3PBjFbJKGeyYXa3nacO7bHIhaIBl2EP0HEZB/JfkD2wUSFh
	7eXcKMW+czxF2vwm6UlVC2iPIXPyazeGDHPGPg4E=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 34/38] x86/boot: add cmdline to struct boot_domain
Date: Sun, 20 Oct 2024 20:46:09 -0400
Message-Id: <20241021004613.18793-35-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a container for the "cooked" command line for a domain.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootdomain.h |  4 ++++
 xen/arch/x86/setup.c                  | 18 ++++++++----------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index d6264d554dba..00f7d9267965 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -8,9 +8,13 @@
 #ifndef __XEN_X86_BOOTDOMAIN_H__
 #define __XEN_X86_BOOTDOMAIN_H__
 
+#include <public/xen.h>
+
 struct boot_module;
 
 struct boot_domain {
+    char cmdline[MAX_GUEST_CMDLINE];
+
     domid_t domid;
 
     struct boot_module *kernel;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index e6756d0ad18d..47b705097dd3 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -962,8 +962,6 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
 
 static struct domain *__init create_dom0(struct boot_info *bi)
 {
-    static char __initdata cmdline[MAX_GUEST_CMDLINE];
-
     struct xen_domctl_createdomain dom0_cfg = {
         .flags = IS_ENABLED(CONFIG_TBOOT) ? XEN_DOMCTL_CDF_s3_integrity : 0,
         .max_evtchn_port = -1,
@@ -1006,16 +1004,16 @@ static struct domain *__init create_dom0(struct boot_info *bi)
     if ( bd->kernel->cmdline || bi->kextra )
     {
         if ( bd->kernel->cmdline )
-            safe_strcpy(cmdline, cmdline_cook(__va(bd->kernel->cmdline),
+            safe_strcpy(bd->cmdline, cmdline_cook(__va(bd->kernel->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
             /* kextra always includes exactly one leading space. */
-            safe_strcat(cmdline, bi->kextra);
+            safe_strcat(bd->cmdline, bi->kextra);
 
         /* Append any extra parameters. */
-        if ( skip_ioapic_setup && !strstr(cmdline, "noapic") )
-            safe_strcat(cmdline, " noapic");
+        if ( skip_ioapic_setup && !strstr(bd->cmdline, "noapic") )
+            safe_strcat(bd->cmdline, " noapic");
 
         if ( (strlen(acpi_param) == 0) && acpi_disabled )
         {
@@ -1023,14 +1021,14 @@ static struct domain *__init create_dom0(struct boot_info *bi)
             safe_strcpy(acpi_param, "off");
         }
 
-        if ( (strlen(acpi_param) != 0) && !strstr(cmdline, "acpi=") )
+        if ( (strlen(acpi_param) != 0) && !strstr(bd->cmdline, "acpi=") )
         {
-            safe_strcat(cmdline, " acpi=");
-            safe_strcat(cmdline, acpi_param);
+            safe_strcat(bd->cmdline, " acpi=");
+            safe_strcat(bd->cmdline, acpi_param);
         }
     }
 
-    if ( construct_dom0(d, bd->kernel, bd->ramdisk, cmdline) != 0 )
+    if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
     return d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822961.1236932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gio-0000W4-Ex; Mon, 21 Oct 2024 00:56:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822961.1236932; Mon, 21 Oct 2024 00:56: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 1t2gio-0000Vx-C5; Mon, 21 Oct 2024 00:56:34 +0000
Received: by outflank-mailman (input) for mailman id 822961;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gc8-0003Iq-8g
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:40 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 58ae11b6-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:49:38 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471612942225.76711816814077;
 Sun, 20 Oct 2024 17:46:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58ae11b6-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471615; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=cpzfKsLPJDHZ+wGCTOoC4bv0ZMt6IHACr0seNBS4v9uf4XTP6KX6QHm61USy5AeXPoIFV9Y6J+Wmt5DjVV3h+HM1gzIUy0c1gLdnbG81p7hHfT+ndnmWODVJRWCmFnMai9kh0DHq7lETG0j5kQWYDPHIUIChVfPmrVOJasdTgfQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471615; h=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=ebv6FBQmIywtxA6+m9LZfpSXV7xXQCPLvSbFsF4UzmI=; 
	b=VhWSYOZNCvOHiJi9zujPVBL2n676Dp1remqwkSmdT+2zCOmqZPyLnDEqqI+jnV9pxeXhoUjsIdtToneRN8WQs4Fc9OrAoOcs8t5FWk0V0pF46gJPhEOivECy8RxNPwIDvdZ2Vr/ijuzXCgOuac9VYNYB8Ugo6RIEgJprk1RIJzw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471615;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=ebv6FBQmIywtxA6+m9LZfpSXV7xXQCPLvSbFsF4UzmI=;
	b=KNBDWPXWwZLAphtk14ZshhKlW6khKiP8V1bdBALppv0vUNtNe5etp8JwGRJ9aXYN
	jO0CKtH355qst6GQJhbCU0Az8Q8Ds2X4i0RMqKxH6Ds0b4qGxcBFc7sIavUueTJN2ZA
	Oeyt/WjBrJQ3MyFxmCcI6BQ2oIkwJ/5F9OLHliJ8=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 25/38] x86/boot: convert dom0_construct_pvh to struct boot_module
Date: Sun, 20 Oct 2024 20:46:00 -0400
Message-Id: <20241021004613.18793-26-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes both the kernel and ramdisk parameters over to struct
boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v6:
- removed unnecessary indentation changes
---
 xen/arch/x86/dom0_build.c             | 3 +--
 xen/arch/x86/hvm/dom0_build.c         | 9 ++++-----
 xen/arch/x86/include/asm/dom0_build.h | 5 ++---
 3 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 1d05ee53a6d8..71b2e3afc1a1 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -610,8 +610,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
-                                cmdline);
+        rc = dom0_construct_pvh(d, image, initrd, cmdline);
     else if ( is_pv_domain(d) )
         rc = dom0_construct_pv(d, image, initrd, cmdline);
     else
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 3dd913bdb029..0fe63f040936 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -1300,9 +1300,8 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain *d)
     }
 }
 
-int __init dom0_construct_pvh(struct domain *d, const module_t *image,
-                              unsigned long image_headroom,
-                              module_t *initrd,
+int __init dom0_construct_pvh(struct domain *d, const struct boot_module *image,
+                              struct boot_module *initrd,
                               const char *cmdline)
 {
     paddr_t entry, start_info;
@@ -1347,8 +1346,8 @@ int __init dom0_construct_pvh(struct domain *d, const module_t *image,
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image, image_headroom, initrd, bootstrap_map(image),
-                         cmdline, &entry, &start_info);
+    rc = pvh_load_kernel(d, image->mod, image->headroom, initrd->mod,
+                         bootstrap_map_bm(image), cmdline, &entry, &start_info);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 3ddd22fad2ba..5d0c4fd2639a 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -17,9 +17,8 @@ int dom0_construct_pv(struct domain *d, const struct boot_module *image,
                       struct boot_module *initrd,
                       const char *cmdline);
 
-int dom0_construct_pvh(struct domain *d, const module_t *image,
-                       unsigned long image_headroom,
-                       module_t *initrd,
+int dom0_construct_pvh(struct domain *d, const struct boot_module *image,
+                       struct boot_module *initrd,
                        const char *cmdline);
 
 unsigned long dom0_paging_pages(const struct domain *d,
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822970.1236954 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2giq-0000yI-Fu; Mon, 21 Oct 2024 00:56:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822970.1236954; Mon, 21 Oct 2024 00:56: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 1t2giq-0000wW-AJ; Mon, 21 Oct 2024 00:56:36 +0000
Received: by outflank-mailman (input) for mailman id 822970;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gbl-0003Iq-2H
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:17 +0000
Received: from sender3-of-o57.zoho.com (sender3-of-o57.zoho.com
 [136.143.184.57]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4ab63ad6-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:49:15 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471609370815.6656070423512;
 Sun, 20 Oct 2024 17:46:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4ab63ad6-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471611; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=VOOV58aeXXstEaea5PEYY5hCNM5Cf2DbWfz2W9JspozDw/+uuMHZvc84UM+6/zOQJngg17ateZEawbZzi8ThwznVn0yhXIpVL3hoif0xQSgA5EZbnRUKg4cdalq2h+4CQMI6Poi9ZUeGjHXMYeRSU3CWB0AR6QGFuY8fYIBTllU=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471611; h=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=StSbCrB+Dkpm/0KxKKmbp9r7lXihj1wwfuzXw0D2zII=; 
	b=DzdLNigp2vxkFU15ypRPfOMbmQkmJKfIrGQQQOqOX7BC6HcCkDG81j3sQVFeSixvbaKEK0yO5T9cwCC0ltJ4q0m+xleIOt0C9nnmkpwSJJgb0X1ary9aZiSQ9up0vNpwcJfzUPpVYulqrA3GhUo3cK4SXmkwWAMowI7i/mCyzCA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471611;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=StSbCrB+Dkpm/0KxKKmbp9r7lXihj1wwfuzXw0D2zII=;
	b=dXJQ+gs63Q0A8BdYYVq/jGFJDNiM0vKokc2EhktgXDOQvCoAaYHdsS5ZZJj++YUF
	6mWDgRdSzh+tsmMKCryvQRCm1qbyuzI0aSgEtAu9msVEq4zRKcCZNztegQAbqz6Iycg
	tVLwP8p+VKalsQDZqo0aScT54knUo9z9eldrG9Mo=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 22/38] x86/boot: add cmdline to struct boot_module
Date: Sun, 20 Oct 2024 20:45:57 -0400
Message-Id: <20241021004613.18793-23-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Add a char pointer field, cmdline, to struct boot_module to hold the address
pointed to by the string field of struct mod. This removes the need to use the
early_mod field to get to the dom0 kernel command line.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- changed boot_module element cmdline to paddr_t
---
 xen/arch/x86/include/asm/bootinfo.h | 2 ++
 xen/arch/x86/setup.c                | 9 ++++++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 9bd0e6336b4a..941363601db7 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -52,6 +52,8 @@ struct boot_module {
     bool relocated:1;
     bool consumed:1;
 
+    paddr_t cmdline;
+
     paddr_t start;
     size_t size;
 };
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 6f953edd7521..254aeb0c5e1b 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -318,6 +318,8 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     {
         bi->mods[i].mod = &mods[i];
 
+        bi->mods[i].cmdline = (paddr_t)mods[i].string;
+
         if ( !efi_enabled(EFI_LOADER) )
         {
             bi->mods[i].start = mods[i].mod_start;
@@ -1016,10 +1018,11 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->mod->string || bi->kextra )
+    if ( image->cmdline || bi->kextra )
     {
-        if ( image->mod->string )
-            safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
+        if ( image->cmdline )
+            safe_strcpy(cmdline,
+                        cmdline_cook(__va(image->cmdline),
                         bi->loader));
 
         if ( bi->kextra )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822963.1236942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gip-0000lm-MK; Mon, 21 Oct 2024 00:56:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822963.1236942; Mon, 21 Oct 2024 00:56: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 1t2gip-0000lf-J8; Mon, 21 Oct 2024 00:56:35 +0000
Received: by outflank-mailman (input) for mailman id 822963;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gdL-0001i1-5T
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:55 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 85e2359c-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:50:54 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471624314615.4554817379054;
 Sun, 20 Oct 2024 17:47:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 85e2359c-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471626; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=i30lf8G+k/jQfGtNSeGKOCqI68IMmUoWwWcBaXzwK2jtXy6qKxgotbJp8GcH3YILB/znM2CpC5fhWAIOCjWix0yGhDC1nn3SDjBJL9NoK6mPS4tODrn1oaORhYFNLOr+Wbf/jKC/xOxQFick1LEOx8jQw4iBHuAb4agLj/m4Ctg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471626; h=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=SP/LZEnrjEkSEMtxaAJe6x6uyzbbJYUTQUInZxcjnQE=; 
	b=ZC/Ja/iy4CecbkMHRdrE8sPL2DerYU8qTnccbOlu7f7mF06+0lOUqrGpBgt71Z4u3qNoS4iD5GDIaXe5D6RNkmd6ZGHrX68yGtglO2Lo5hS/SAN9Z8XNVhLud5tDzpYiJEjP3EqTcsH8vNK3zSb18kT7b5nJLRiLGS9PDG+iTd4=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471626;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=SP/LZEnrjEkSEMtxaAJe6x6uyzbbJYUTQUInZxcjnQE=;
	b=Ei/E3zLwLQ1W4eaCfIMHpufN0xqQlLOUE3IfHKrSjpMlhI6khcNG9WzPWNjUuQ/4
	HMPli8dtCpuEGWGqmVU41onFqoAGtaGLCetK8MM3E6JU9147deMT11PxZEI1ZBEVcb1
	kPE6GRBVlEb9wKoC95KKdVTQQvKKOJpl2B7LsIdw=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 35/38] x86/boot: add struct domain to struct boot_domain
Date: Sun, 20 Oct 2024 20:46:10 -0400
Message-Id: <20241021004613.18793-36-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Store a reference to the created domain in struct boot_domain.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- moved back to using variable *d to hold domain reference locally
---
 xen/arch/x86/include/asm/bootdomain.h | 3 +++
 xen/arch/x86/setup.c                  | 4 +++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/include/asm/bootdomain.h b/xen/arch/x86/include/asm/bootdomain.h
index 00f7d9267965..2322c459e36a 100644
--- a/xen/arch/x86/include/asm/bootdomain.h
+++ b/xen/arch/x86/include/asm/bootdomain.h
@@ -10,6 +10,7 @@
 
 #include <public/xen.h>
 
+struct domain;
 struct boot_module;
 
 struct boot_domain {
@@ -19,6 +20,8 @@ struct boot_domain {
 
     struct boot_module *kernel;
     struct boot_module *ramdisk;
+
+    struct domain *d;
 };
 
 #endif
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 47b705097dd3..9423e999990a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1028,10 +1028,12 @@ static struct domain *__init create_dom0(struct boot_info *bi)
         }
     }
 
+    bd->d = d;
+
     if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
         panic("Could not construct domain 0\n");
 
-    return d;
+    return bd->d;
 }
 
 /* How much of the directmap is prebuilt at compile time. */
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822968.1236948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2giq-0000ts-6Q; Mon, 21 Oct 2024 00:56:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822968.1236948; Mon, 21 Oct 2024 00:56: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 1t2giq-0000rm-1H; Mon, 21 Oct 2024 00:56:36 +0000
Received: by outflank-mailman (input) for mailman id 822968;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gdg-0001i1-E6
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:51:16 +0000
Received: from sender3-of-o57.zoho.com (sender3-of-o57.zoho.com
 [136.143.184.57]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 92784cff-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:51:15 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471627762341.13633961756796;
 Sun, 20 Oct 2024 17:47:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 92784cff-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471630; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=DBpP/etX40b9X02XsY3EwrRHnOnn1TQzVdf233CEGfo6hf/HkjM+08haoVCXvTxSkuVdjQMRUZhChx3xDGieYgOFJv3ue5fD4iDRIda1e31w9597CFrmqsUGvxOtI1+1/YQ6p/zKf1Fg4tXEj6k2wRzVGVhGbPp4qorLmAEUlY4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471630; h=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=aNiN7YZD1SazmqTlmBUizZzq3LQ/OZULOiAYxfKrfPs=; 
	b=cClLXdwR2izAtMgWydaL8WXbRd943bZGgq1Jubtuoog+ln9tjiBEltcE6tDNXiHTgJpNlr0OJwog8b/N8qOHYGB3I15wAr+O+xl7Wr2cC1LseSyTzruRKdMxP+a0/N1SXVANs8YwlinIgAUEn2WWohdwChRo0RAMtqcJ+Za7dyU=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471630;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=aNiN7YZD1SazmqTlmBUizZzq3LQ/OZULOiAYxfKrfPs=;
	b=BtM3NsMWsvvFPWD62qTZVIfeXRwvA6uhNs8WbuskbHBWsdvBGGzG1JoNAtIVYCEW
	ZeyeCK1tD24lOc8v//7bNaoXHA7HH7jfZgnnII7AYU30YR+4srXjq4nCOlRulIUOSSP
	BOX9qzU2r+YyoVGGOJ72ZlpriyVa/5CtdRtsu75s=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 38/38] x86/boot: convert dom0_construct_pvh to struct boot_domain
Date: Sun, 20 Oct 2024 20:46:13 -0400
Message-Id: <20241021004613.18793-39-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With construct_dom0 consuming struct boot_domain, continue passing the
structure down to dom0_construct_pvh.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- revert back to using *d as local reference for struct domain
---
 xen/arch/x86/dom0_build.c             | 2 +-
 xen/arch/x86/hvm/dom0_build.c         | 8 ++++----
 xen/arch/x86/include/asm/dom0_build.h | 4 +---
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 96cd1154b037..f0d2c349095b 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -610,7 +610,7 @@ int __init construct_dom0(struct boot_domain *bd)
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
+        rc = dom0_construct_pvh(bd);
     else if ( is_pv_domain(d) )
         rc = dom0_construct_pv(bd);
     else
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 211f4e3e772e..720e08f9346f 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -1299,10 +1299,9 @@ static void __hwdom_init pvh_setup_mmcfg(struct domain *d)
     }
 }
 
-int __init dom0_construct_pvh(struct domain *d, const struct boot_module *image,
-                              struct boot_module *initrd,
-                              const char *cmdline)
+int __init dom0_construct_pvh(const struct boot_domain *bd)
 {
+    struct domain *d = bd->d;
     paddr_t entry, start_info;
     int rc;
 
@@ -1345,7 +1344,8 @@ int __init dom0_construct_pvh(struct domain *d, const struct boot_module *image,
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image, initrd, bootstrap_map_bm(image), cmdline,
+    rc = pvh_load_kernel(d, bd->kernel, bd->ramdisk,
+                         bootstrap_map_bm(bd->kernel), bd->cmdline,
                          &entry, &start_info);
     if ( rc )
     {
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index eafa741db16f..adbe90bfd034 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -16,9 +16,7 @@ int dom0_setup_permissions(struct domain *d);
 
 int dom0_construct_pv(struct boot_domain *bd);
 
-int dom0_construct_pvh(struct domain *d, const struct boot_module *image,
-                       struct boot_module *initrd,
-                       const char *cmdline);
+int dom0_construct_pvh(const struct boot_domain *bd);
 
 unsigned long dom0_paging_pages(const struct domain *d,
                                 unsigned long nr_pages);
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822976.1236972 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2git-0001ef-TA; Mon, 21 Oct 2024 00:56:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822976.1236972; Mon, 21 Oct 2024 00:56: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 1t2git-0001eU-MN; Mon, 21 Oct 2024 00:56:39 +0000
Received: by outflank-mailman (input) for mailman id 822976;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gbd-0003Iq-Ha
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:09 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 458ada27-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:49:06 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471608242129.3516752909568;
 Sun, 20 Oct 2024 17:46:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 458ada27-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471610; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=TT+LCxtpTpaxwA4CjDxX6dIo1aDWZEc6eRSY+ov/NFY8IK0awNGO2R3SnmEX9PaFcfrUMfmTyLgZY6QEj4Yh7hZhiimvLbNIis9uiiKNNSMgdm88Sd/h0v6iN6ZXHSAWJmPQJEK20WZjDcOOpgdnhZH9x/5MhhGbad3Eek7ooOs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471610; h=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=uzzoAQRXv4hKDmaKTHKSRZqXTQp1Xcv7fYKLtSvFAac=; 
	b=Isnqm0WXmGSjcVq7mIMjkjMNw8IAS9ZdKYHSc1ORQYJuTYlL50T3sg8l/0Ryd3qAAlx6tsR7/WjWFFq+mvdS2fmVfNxzKSzEZCi0JxVeFPaDWE0n4Cz4tX8S4qwQ/Zq1CepE//svlNQcFIchUCyS3Y1BEB53j4WlXtIHODYXHgA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471610;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=uzzoAQRXv4hKDmaKTHKSRZqXTQp1Xcv7fYKLtSvFAac=;
	b=kn14O1BQxrWNU5Cv6zh1/xBPtB0vpXcSzhe+ei/1s125KGtvD+JCMn8oamgQ9aZZ
	VWMiSttqUXUkrJEW15JR1dZ+EKFWBpd/wl1lmE/S7GXRqRDU1LcdbjRwFLn0jnua5uQ
	EYhzBiAK4hIjtlzmLyPUDN7hvKBiV3aVfaAeAQNU=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 21/38] x86/boot: relocate kextra into boot info
Date: Sun, 20 Oct 2024 20:45:56 -0400
Message-Id: <20241021004613.18793-22-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Move kextra into struct boot_info, thus no longer needed to be passed as a
parameter to create_dom0.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/include/asm/bootinfo.h |  1 +
 xen/arch/x86/setup.c                | 12 ++++++------
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 3ca56454c4d7..9bd0e6336b4a 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -63,6 +63,7 @@ struct boot_module {
 struct boot_info {
     const char *loader;
     const char *cmdline;
+    const char *kextra;
 
     paddr_t memmap_addr;
     size_t memmap_length;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index d7f03225bd5a..6f953edd7521 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -962,8 +962,7 @@ static unsigned int __init copy_bios_e820(struct e820entry *map, unsigned int li
     return n;
 }
 
-static struct domain *__init create_dom0(struct boot_info *bi,
-                                         const char *kextra)
+static struct domain *__init create_dom0(struct boot_info *bi)
 {
     static char __initdata cmdline[MAX_GUEST_CMDLINE];
 
@@ -1017,15 +1016,15 @@ static struct domain *__init create_dom0(struct boot_info *bi,
         panic("Error creating d%uv0\n", domid);
 
     /* Grab the DOM0 command line. */
-    if ( image->mod->string || kextra )
+    if ( image->mod->string || bi->kextra )
     {
         if ( image->mod->string )
             safe_strcpy(cmdline, cmdline_cook(__va(image->mod->string),
                         bi->loader));
 
-        if ( kextra )
+        if ( bi->kextra )
             /* kextra always includes exactly one leading space. */
-            safe_strcat(cmdline, kextra);
+            safe_strcat(cmdline, bi->kextra);
 
         /* Append any extra parameters. */
         if ( skip_ioapic_setup && !strstr(cmdline, "noapic") )
@@ -1121,6 +1120,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         *kextra = '\0';
         kextra += 3;
         while ( kextra[1] == ' ' ) kextra++;
+        bi->kextra = kextra;
     }
     cmdline_parse(bi->cmdline);
 
@@ -2133,7 +2133,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(bi, kextra);
+    dom0 = create_dom0(bi);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822980.1236982 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2giv-0001vR-21; Mon, 21 Oct 2024 00:56:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822980.1236982; Mon, 21 Oct 2024 00:56: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 1t2giu-0001vC-UC; Mon, 21 Oct 2024 00:56:40 +0000
Received: by outflank-mailman (input) for mailman id 822980;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZz-000738-Uj
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:27 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0a69954d-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:47:27 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471592962507.4627630240867;
 Sun, 20 Oct 2024 17:46:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0a69954d-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471594; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=mK3dy+ROetQibWDQkE2abbPJkr6Vvawn07z/3r4l9R6/eOQdmUtCtmVcoAp/UHYYPRI/J2a+LyrVZqkBsuABYmjX67AwkCKsJi6uXyiOwVlLhRNHz4sfIMts+nwJM8XJvoVRYziFGeR5u1s9pdIpQ2k/npu8kkFpFQbvMzkdxUE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471594; h=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=Zg0/zrG8nOgRHoZJidNwfeDdFu4m0rBe5upUUFqNRlI=; 
	b=EdBwnOe0sw8iK8jWcyW0mtp8RxiKfJuLsSUDXW5Viny8SY8BMGO3x8LRmPf3WD69I5Xn9udTkI7JKdbmZ0QIDkrTvqptn78YawwKsta4HOEfx8G/SmtZoGvJoQj6HC1ZS9I4Wo9XNNMySd1Gb94oyHEmSgrWM9tEZ1OoSj9jBlw=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471594;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Zg0/zrG8nOgRHoZJidNwfeDdFu4m0rBe5upUUFqNRlI=;
	b=Pv63iucLy2BAnqn+7M1Igu9pyL7cClzAcYZ5im4cNdjPK+wit+lVgb7o1XfducfZ
	XjOQFUN3Mxmf8Pf8SvxO3chfoAm5HMkdkceeTNWvGZcAqB6OniqO5PqH3GjZfLLLPFN
	j7bWdVFNQ4pC7pOh6+GwXgxHEjF6xpY4an0aHJBI=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 08/38] x86/boot: populate boot module for xen entry
Date: Sun, 20 Oct 2024 20:45:43 -0400
Message-Id: <20241021004613.18793-9-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Populate the start and size fields for the Xen entry when populating them in
the reserved module_t entry.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- apply correct conversion of assignment to mod_start
- rewrite commit message to reflect code change

Changes since v5:
- corrected conversion function for a missed switch from mfn to maddr/paddr
---
 xen/arch/x86/setup.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 2e87aa314389..4e5d4055e7dd 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1411,8 +1411,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        bi->mods[xen].mod->mod_start = virt_to_mfn(_stext);
-        bi->mods[xen].mod->mod_end = __2M_rwdata_end - _stext;
+        bi->mods[xen].start = virt_to_maddr(_stext);
+        bi->mods[xen].size = __2M_rwdata_end - _stext;
+
+        bi->mods[xen].mod->mod_start = paddr_to_pfn(bi->mods[xen].start);
+        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
     }
 
     bi->mods[0].headroom =
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822984.1236992 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2giy-0002Q8-AF; Mon, 21 Oct 2024 00:56:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822984.1236992; Mon, 21 Oct 2024 00: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 1t2giy-0002Px-6O; Mon, 21 Oct 2024 00:56:44 +0000
Received: by outflank-mailman (input) for mailman id 822984;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gad-0000Dk-MG
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:48:07 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 210e2bd8-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:48:05 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471598854865.3394944103438;
 Sun, 20 Oct 2024 17:46:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 210e2bd8-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471600; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=HKsQ+Zjc8MHAZ9nbxHOQxCY2PCzIFFbWhfNagWs5LlGQst96aMMpOka9UCGu7jv82KF6qsk+Rhbyo9rXF6znIFMHWkJMFnk/iwn5n71hgNw+5X0uUyLIQyNLyeXPro0G+pZ+oUFtWfuWhOJJ81o0GAxsBn0u+KR/LcsIIXX0K4c=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471600; h=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=iJYAb243RSTcsTIRrMAmS03Q6YE6d276D7BTcoq1ZCs=; 
	b=K3fNOycSd7lD+iBLFIiHKDgbwMEF/AoUhruFNoxHxLElYjJhusdvZV3XLVOkSwxGEfvEpW/DxZ1vZOyoC3v0pbSMiyPRJ3JbYkf2NXbzEJx8cNLAU2yDAqn5/3WrAYry8aE4LuoorKTYG9nIpHR3wPp7UVj89l0F3CHP+8+meC0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471600;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=iJYAb243RSTcsTIRrMAmS03Q6YE6d276D7BTcoq1ZCs=;
	b=C1f/HYbThMei6aNxR4f+zW5r+znqk5ySicMDC6HNothbMqcr1bXAB1d0PObo/MuZ
	tjf44f+RFmHGSEEF595OxYbQVN0nxo/dxGWg9yImIsAuOb0RObq1qcxG+O3YhHrIzsu
	Cdl0Kc/Nc51+I2WdiOYtjtlFUGxPeNIq4R+9XREg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 13/38] x86/boot: use consumed boot module flag for microcode
Date: Sun, 20 Oct 2024 20:45:48 -0400
Message-Id: <20241021004613.18793-14-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

To track if the microcode boot module was loaded, a copy of the boot module is
kept. The size element of this copy is set to zero as the indicator that the
microcode was loaded. A side effect is that the modules have to be rescanned to
find the boot module post-relocation, so the cache copy can be created.

Use the consumed boot module flag to track the loading of the microcode boot
module. This removes the need to manipulate the boot module size element, no
longer requiring the copy, thus allowing it to be replaced by a reference. As a
result it is no longer necessary to rescan the boot modules after relocation
has occurred.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- adjust logic to the change of consumed flag to being a bitfield
---
 xen/arch/x86/cpu/microcode/core.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index b6badd9afdb2..8ea789dceec2 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -58,7 +58,7 @@
  */
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
-static struct boot_module __initdata ucode_mod;
+static struct boot_module __initdata *ucode_mod;
 static signed int __initdata ucode_mod_idx;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
@@ -208,7 +208,7 @@ static void __init microcode_grab_module(
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
-    ucode_mod = bi->mods[ucode_mod_idx];
+    ucode_mod = &bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
         microcode_scan_module(module_map, bi);
@@ -766,10 +766,10 @@ static int __init cf_check microcode_init(void)
         ucode_blob.size = 0;
         ucode_blob.data = NULL;
     }
-    else if ( ucode_mod.size )
+    else if ( ucode_mod && !ucode_mod->consumed )
     {
         bootstrap_map_bm(NULL);
-        ucode_mod.size = 0;
+        ucode_mod->consumed = true;
     }
 
     return 0;
@@ -823,14 +823,14 @@ int __init microcode_init_cache(
     if ( !ucode_ops.apply_microcode )
         return -ENODEV;
 
-    if ( ucode_scan )
-        /* Need to rescan the modules because they might have been relocated */
+    /* Scan if microcode was not detected earlier */
+    if ( !ucode_mod )
         microcode_scan_module(module_map, bi);
 
-    if ( ucode_mod.size )
-        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
-                                ucode_mod.size);
-    else if ( ucode_blob.size )
+    if ( ucode_mod && !ucode_mod->consumed )
+        rc = early_update_cache(bootstrap_map_bm(ucode_mod),
+                                ucode_mod->size);
+    else if ( ucode_mod && ucode_blob.size )
         rc = early_update_cache(ucode_blob.data, ucode_blob.size);
 
     return rc;
@@ -848,10 +848,10 @@ static int __init early_microcode_update_cpu(void)
         len = ucode_blob.size;
         data = ucode_blob.data;
     }
-    else if ( ucode_mod.size )
+    else if ( ucode_mod && !ucode_mod->consumed )
     {
-        len = ucode_mod.size;
-        data = bootstrap_map_bm(&ucode_mod);
+        len = ucode_mod->size;
+        data = bootstrap_map_bm(ucode_mod);
     }
 
     if ( !data )
@@ -917,7 +917,7 @@ int __init early_microcode_init(unsigned long *module_map,
 
     microcode_grab_module(module_map, bi);
 
-    if ( ucode_mod.size || ucode_blob.size )
+    if ( ucode_mod || ucode_blob.size )
         rc = early_microcode_update_cpu();
 
     /*
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822985.1237002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gj0-0002pa-Ux; Mon, 21 Oct 2024 00:56:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822985.1237002; Mon, 21 Oct 2024 00:56: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 1t2gj0-0002pM-Ps; Mon, 21 Oct 2024 00:56:46 +0000
Received: by outflank-mailman (input) for mailman id 822985;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gdT-0001i1-8Z
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:51:03 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 89e10626-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:51:01 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471625461841.4722904899356;
 Sun, 20 Oct 2024 17:47:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89e10626-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471627; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=eMa1HRJ1pAyi+naSie41rXJ4ul0tWIH6Mf4h5eXWiaMGb1WtszHSh0FRIeIfbYUSrSAUmnpdGvtXa06ctW+iYcPYSBCXeUAxUozuCXoMRDYY/q65I8iYpPnFPGfvhBUb/XIzO0oCRto+U2R5PAmk7HjPgErldu9D/bPhVv9fI1k=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471627; h=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=Bmio29Z/US+aVmz65/fnIfDiOrUjnKKY2s1SIs0oHx0=; 
	b=FtcGzU9OdEGgDi8JtV8esFwJZdDdYc3FwToszELgJYCKjLI10GiASnswuPw0hk7hEq7e8nvSC+WZq7R2jdAPvn09nqy52EHLCBvJdA/bAUM2iyQ0wmoRHEDTs/yCBAjHRfyLVzmIpic9hO24x6gBpZZRbMCro5Qm/fuBSa+h3EM=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471627;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Bmio29Z/US+aVmz65/fnIfDiOrUjnKKY2s1SIs0oHx0=;
	b=Uq+pgaMtepxBpvUbdDz5+mnmmL609SPvaVha7e1ZNQ2Ybm2UqTMUuEx8ZNQI4Qm/
	fpUDozbuGyV0n46vcwpX27e8ym2e/3waNyoO5UGlhRMvLrbQ6mPdj+XZ+u6btWdMDoF
	TQ9Nf0W8C6FMXY6E+BPtiWkrmgvUniB6ptze7JSI=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 36/38] x86/boot: convert construct_dom0 to struct boot_domain
Date: Sun, 20 Oct 2024 20:46:11 -0400
Message-Id: <20241021004613.18793-37-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

A struct boot_domain now encapsulates the domain reference, kernel, ramdisk,
and command line for the domain being constructed. As a result of this
encapsulation, construct_dom0 can now take a single struct boot_domain instead
of these four parameters.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v5:
- moved back to using variable *d to hold domain reference locally
---
 xen/arch/x86/dom0_build.c        | 8 ++++----
 xen/arch/x86/include/asm/setup.h | 4 +---
 xen/arch/x86/setup.c             | 2 +-
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 71b2e3afc1a1..34b4943de3b1 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -597,10 +597,10 @@ int __init dom0_setup_permissions(struct domain *d)
     return rc;
 }
 
-int __init construct_dom0(struct domain *d, const struct boot_module *image,
-                          struct boot_module *initrd, const char *cmdline)
+int __init construct_dom0(struct boot_domain *bd)
 {
     int rc;
+    struct domain *d = bd->d;
 
     /* Sanity! */
     BUG_ON(!pv_shim && d->domain_id != 0);
@@ -610,9 +610,9 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
     process_pending_softirqs();
 
     if ( is_hvm_domain(d) )
-        rc = dom0_construct_pvh(d, image, initrd, cmdline);
+        rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, initrd, cmdline);
+        rc = dom0_construct_pv(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index f7958b56eab6..b049dc5ee17e 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -26,9 +26,7 @@ void subarch_init_memory(void);
 
 void init_IRQ(void);
 
-int construct_dom0(
-    struct domain *d, const struct boot_module *image,
-    struct boot_module *initrd, const char *cmdline);
+int construct_dom0(struct boot_domain *d);
 void setup_io_bitmap(struct domain *d);
 
 extern struct boot_info xen_boot_info;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 9423e999990a..ed4bf3d2b62b 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1030,7 +1030,7 @@ static struct domain *__init create_dom0(struct boot_info *bi)
 
     bd->d = d;
 
-    if ( construct_dom0(d, bd->kernel, bd->ramdisk, bd->cmdline) != 0 )
+    if ( construct_dom0(bd) != 0 )
         panic("Could not construct domain 0\n");
 
     return bd->d;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822986.1237007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gj1-0002vD-DL; Mon, 21 Oct 2024 00:56:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822986.1237007; Mon, 21 Oct 2024 00:56: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 1t2gj1-0002u2-7D; Mon, 21 Oct 2024 00:56:47 +0000
Received: by outflank-mailman (input) for mailman id 822986;
 Mon, 21 Oct 2024 00:56: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gaU-0000Dk-AN
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:58 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1bf5744c-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:47:56 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471597726785.8559370322578;
 Sun, 20 Oct 2024 17:46:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1bf5744c-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471599; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=X+3TCbeo8SmNMU9UwPqg1IKuN36QkJXjUTY3gA2tC3JG7Xkb0Qmi7cbhb7hWOuFPzrLpaoIQQ0F+0pm0X/OeNjLrmQodiXopAkI+yy+wAzByhcUcB3cqTEktyZjwgSiPsXKmwaQjMhdhFzvuDTqqr1sMh9gdPVHYlGNdDTYL5zI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471599; h=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=bzqdIFigmmAvQphctRGkKTNha+8Q/o+Qc2uZk2PQ5ls=; 
	b=ZaulxndFMT2r5ys1DpEMqUHNNS+nEGVjApZiM/atcMP3q35mP35jFvfeiqDL8ozWyahsLgHnsQ18VsFA1C1d7C9ZCt4MK6iwKnLWF3m1W/CNqzEmyuVQc2xzHcRc9433VAznwfO4lpxaiLQPG+pSFtqtTlX7UHvrykhmav9tzLg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471599;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=bzqdIFigmmAvQphctRGkKTNha+8Q/o+Qc2uZk2PQ5ls=;
	b=KiIBgvELDEgCKkFTWgXnf/yo3oaM8JBS6dgzQkvEICbVszn+n9T7GzmPgOv7GCr5
	iMrkQI4uA5kWfBQfZaug8q0eP8ELmz0ij1lsbVy3GuzkzfAWME3CS9vg+HLbGC7WiEy
	j90hVy5AHWa241UZW16OlULSYQskT30UpJQsVt0w=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 12/38] x86/boot: convert late microcode loading to struct boot_module
Date: Sun, 20 Oct 2024 20:45:47 -0400
Message-Id: <20241021004613.18793-13-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Remove the use of struct mod to hold the reference for the microcode,
converting the code to work with a struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/cpu/microcode/core.c | 29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 11a0ba978a33..b6badd9afdb2 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -28,7 +28,6 @@
 #include <xen/err.h>
 #include <xen/guest_access.h>
 #include <xen/init.h>
-#include <xen/multiboot.h>
 #include <xen/param.h>
 #include <xen/spinlock.h>
 #include <xen/stop_machine.h>
@@ -59,7 +58,7 @@
  */
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
-static module_t __initdata ucode_mod;
+static struct boot_module __initdata ucode_mod;
 static signed int __initdata ucode_mod_idx;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
@@ -98,7 +97,7 @@ struct patch_with_flags {
 
 static struct ucode_mod_blob __initdata ucode_blob;
 /*
- * By default we will NOT parse the multiboot modules to see if there is
+ * By default we will NOT parse the boot modules to see if there is
  * cpio image with the microcode images.
  */
 static bool __initdata ucode_scan;
@@ -209,7 +208,7 @@ static void __init microcode_grab_module(
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
     bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
-    ucode_mod = *bi->mods[ucode_mod_idx].mod;
+    ucode_mod = bi->mods[ucode_mod_idx];
 scan:
     if ( ucode_scan )
         microcode_scan_module(module_map, bi);
@@ -763,14 +762,14 @@ static int __init cf_check microcode_init(void)
      */
     if ( ucode_blob.size )
     {
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
         ucode_blob.size = 0;
         ucode_blob.data = NULL;
     }
-    else if ( ucode_mod.mod_end )
+    else if ( ucode_mod.size )
     {
-        bootstrap_map(NULL);
-        ucode_mod.mod_end = 0;
+        bootstrap_map_bm(NULL);
+        ucode_mod.size = 0;
     }
 
     return 0;
@@ -828,9 +827,9 @@ int __init microcode_init_cache(
         /* Need to rescan the modules because they might have been relocated */
         microcode_scan_module(module_map, bi);
 
-    if ( ucode_mod.mod_end )
-        rc = early_update_cache(bootstrap_map(&ucode_mod),
-                                ucode_mod.mod_end);
+    if ( ucode_mod.size )
+        rc = early_update_cache(bootstrap_map_bm(&ucode_mod),
+                                ucode_mod.size);
     else if ( ucode_blob.size )
         rc = early_update_cache(ucode_blob.data, ucode_blob.size);
 
@@ -849,10 +848,10 @@ static int __init early_microcode_update_cpu(void)
         len = ucode_blob.size;
         data = ucode_blob.data;
     }
-    else if ( ucode_mod.mod_end )
+    else if ( ucode_mod.size )
     {
-        len = ucode_mod.mod_end;
-        data = bootstrap_map(&ucode_mod);
+        len = ucode_mod.size;
+        data = bootstrap_map_bm(&ucode_mod);
     }
 
     if ( !data )
@@ -918,7 +917,7 @@ int __init early_microcode_init(unsigned long *module_map,
 
     microcode_grab_module(module_map, bi);
 
-    if ( ucode_mod.mod_end || ucode_blob.size )
+    if ( ucode_mod.size || ucode_blob.size )
         rc = early_microcode_update_cpu();
 
     /*
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822987.1237021 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gj3-0003d4-NX; Mon, 21 Oct 2024 00:56:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 822987.1237021; Mon, 21 Oct 2024 00: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 1t2gj3-0003cs-Ik; Mon, 21 Oct 2024 00:56:49 +0000
Received: by outflank-mailman (input) for mailman id 822987;
 Mon, 21 Oct 2024 00: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZl-000738-Ag
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:13 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0192cad4-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:47:12 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172947159069489.25305881589452;
 Sun, 20 Oct 2024 17:46:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0192cad4-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471592; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=RtaK8huPFpAEWBdzWn/hxL55Dfn4Yd1PxHRIcSw/jQmn+GesVOzy7JzmKjWQPQ448pVa7mU5aRGFDyA0g6pTn4e0n98f7FdRZjmpqj7oe5LT8VSSReOBaJkZ3/ZKTXA3npbR+6Ha0QqAy/Be1+3BbTE0BzjNPUVvYOUPqq4PHwA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471592; h=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=0R4FqS7cm2ZwHrj01Lkx0kaLT9LesczGLcvq3CBN3bk=; 
	b=At3Wtwyx59FEnmOhNzEYotwOQThLmtlEoZTLH7P+1Lu/pIP/bO3xap8x9Fpr3bN2bApOz70Nh/gX/g4rSuq3nh5f0rI8F+6n63xRhAbUU24EZQlwkMepCqdqqPr3rTBdS7+23/Qc5Whovt+KTbsDWZsl8abZ4GXbEcJpTeL05vs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471592;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=0R4FqS7cm2ZwHrj01Lkx0kaLT9LesczGLcvq3CBN3bk=;
	b=qU11rr3Lls/dnbh0qxnLqRQ45dQuNB1Wr+5plXknMMvooG3vCQNqSvedlCtc9H/S
	pkwUcGf9DpAGnIOBQb08Lv/Wqj9LOSUvIF5h1oo1m4VS4+EIIeq4uHfiWTh+rDwQTOa
	ao3Ds7XEWHbROB121FjM137gQNDvmodzEpVBTHTU=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 06/38] x86/boot: introduce boot module flags
Date: Sun, 20 Oct 2024 20:45:41 -0400
Message-Id: <20241021004613.18793-7-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The existing startup code employs various ad-hoc state tracking about certain
boot module types by each area of the code. A boot module flags bitfield is
added to enable tracking these different states. The first state to be
transition by this commit is module relocation.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- replaced bitmask flags field with the bitfield, relocated
- slight update to commit message to mention bitfield
- dropped Rb and Ab due to approach change

Changes since v5:
- removed trailing blank line.
---
 xen/arch/x86/include/asm/bootinfo.h | 6 ++++++
 xen/arch/x86/setup.c                | 7 +++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index ec005a97d6d5..e8fba66eedc5 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -40,6 +40,12 @@ struct boot_module {
      */
     unsigned long headroom;
     enum bootmod_type type;
+
+    /*
+     * Module State Flags:
+     *   relocated: indicates module has been relocated in memory.
+     */
+    bool relocated:1;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 496f0900890d..17f74384b5c1 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1378,7 +1378,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             panic("Bootloader didn't honor module alignment request\n");
         bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
         bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
-        bi->mods[i].mod->reserved = 0;
     }
 
     /*
@@ -1492,7 +1491,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             struct boot_module *bm = &bi->mods[j];
             unsigned long size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
 
-            if ( bm->mod->reserved )
+            if ( bm->relocated )
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
@@ -1511,7 +1510,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                             bm->mod->mod_end);
                 bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
                 bm->mod->mod_end += bm->headroom;
-                bm->mod->reserved = 1;
+                bm->relocated = true;
             }
         }
 
@@ -1537,7 +1536,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 #endif
     }
 
-    if ( bi->mods[0].headroom && !bi->mods[0].mod->reserved )
+    if ( bi->mods[0].headroom && !bi->mods[0].relocated )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:56:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:56:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.822998.1237032 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gj9-0004dQ-32; Mon, 21 Oct 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 822998.1237032; Mon, 21 Oct 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 1t2gj8-0004d1-UY; Mon, 21 Oct 2024 00:56:54 +0000
Received: by outflank-mailman (input) for mailman id 822998;
 Mon, 21 Oct 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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gcY-0001i1-Qq
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:06 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6938c053-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:50:06 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471617465839.8166672698667;
 Sun, 20 Oct 2024 17:46:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6938c053-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471619; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=J31Wi4UxyzqAXeN9DVb/u9MYZSPtC/vYa3QRHJPuV9+Wmrt7PPaBNqCOJB3/kPg/jWgzB6Zxq/lc2f7Ed+tqAC8xYBhuRg5zk2ESkoxWitAfXOAQgHsqhdGw9jaw+wDpOHNRxx8jhZFgtn3KAWZg+oOI0D6hCWUg9Mhq66frSIk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471619; h=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=2hHosgMYwG/qh3KyF6wBYzUNZ0LC3cPr+j0rK/PGAiY=; 
	b=HxqUZ+g+sSGAeGTjPNSmFdMQCEKEc1MGQ1QNOxpZ1+pSHgyzwAiwkPPMXLFiFJC5uadz5aV0w+YcK4oJ4l4iCWwolMCdFSH+wv8mFTbVKJSywSYW5E8q0jASJTxOnCawvvM0lg9W4fV/OBKPghhyhakKCWhF9Cq/BkSLQ9ayYI0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471619;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=2hHosgMYwG/qh3KyF6wBYzUNZ0LC3cPr+j0rK/PGAiY=;
	b=SUw+1gLzRkcVfTFOdXvLHoCerTY2wmLKmFd46xXdn9wH1xr1np/F+iRoKvwiBA5P
	Eo4z01n/Cbv1vDdUq4Rpcj/37kpNwBp+8Q1SvjKekzVKnw0QUtPDA6ZkP7F7ruGSEpd
	MDJj/9WBTSkeKzAqaj+JY2hOgwCvqEDGcLDfwTbQ=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 29/38] x86/boot: remove usage of mod_end by discard_initial_images
Date: Sun, 20 Oct 2024 20:46:04 -0400
Message-Id: <20241021004613.18793-30-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This eliminates usage of early_mod by discard_initial_images

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/setup.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 87b118cdcf1e..67e72459170a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -367,10 +367,9 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t start =
-            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
+        uint64_t start = bi->mods[i].start;
 
-        init_domheap_pages(start, start + PAGE_ALIGN(bi->mods[i].mod->mod_end));
+        init_domheap_pages(start, start + PAGE_ALIGN(bi->mods[i].size));
     }
 
     bi->nr_modules = 0;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823019.1237041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjP-0006Sz-BB; Mon, 21 Oct 2024 00:57:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823019.1237041; Mon, 21 Oct 2024 00: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 1t2gjP-0006ST-81; Mon, 21 Oct 2024 00:57:11 +0000
Received: by outflank-mailman (input) for mailman id 823019;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gda-0001i1-1z
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:51:10 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8e57dc13-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:51:08 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471626606907.5806199234472;
 Sun, 20 Oct 2024 17:47:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8e57dc13-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471628; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=UGl4CcdPM4nKzyzRg8g2MZsMS0SHNlqa1Ngq87fUNUy9l0ZIg0feoNz44a07z5NbfbLsUzCLF7nwBpbwXJjc+//Y2x5SePEbYcpNTQB+SwZcwXYgMFf3sM1ZSi/F+xfFPdWJITxhbaw3Emuii4TCu8CvZ4GaM8eiijUAWs7BOrc=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471628; h=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=7rvH6WBzxQb9IRNi1YOifSatMNkaZHAsSaJgeiL+WGk=; 
	b=fUMoFVEl22M+HotU5VGt1vYC22FqJMImju+zWCj7peCRnOaGX6z+jE++gBX3iPbwaydr/lNLRcCBb9As3j/morUe8xCjvYL6OGL+5XAdDgdWP46AlCOBCNOZr8vOw7Zkk9AiviQGF+GNIQ5qbpNd36eHSQhlWIhWl+En7Twm9xY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471628;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=7rvH6WBzxQb9IRNi1YOifSatMNkaZHAsSaJgeiL+WGk=;
	b=H+A0Rxi/Q7hfCBuQ3mu860Sh6YZFaKMlU/2bSEysxZWH+XUhwkL9QRcGGC9MtBFs
	FlUj0CzVdsrMzHFMbtS2IZgGusPgUz3Vhel/BLpeD0caC7Q2FgJk0ANDhERD1y3MKoh
	scQnMc8HRMljirszyGZscBl51eSw72cnDzGuJMSg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 37/38] x86/boot: convert dom0_construct_pv to struct boot_domain
Date: Sun, 20 Oct 2024 20:46:12 -0400
Message-Id: <20241021004613.18793-38-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

With construct_dom0 consuming struct boot_domain, continue passing the
structure down to dom0_construct_pv.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- reverted back *v d->vcpu[0]
---
 xen/arch/x86/dom0_build.c             |  2 +-
 xen/arch/x86/include/asm/dom0_build.h |  5 ++--
 xen/arch/x86/pv/dom0_build.c          | 41 ++++++++++++---------------
 3 files changed, 21 insertions(+), 27 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 34b4943de3b1..96cd1154b037 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -612,7 +612,7 @@ int __init construct_dom0(struct boot_domain *bd)
     if ( is_hvm_domain(d) )
         rc = dom0_construct_pvh(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(bd->d, bd->kernel, bd->ramdisk, bd->cmdline);
+        rc = dom0_construct_pv(bd);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 5d0c4fd2639a..eafa741db16f 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -4,6 +4,7 @@
 #include <xen/libelf.h>
 #include <xen/sched.h>
 
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 
 extern unsigned int dom0_memflags;
@@ -13,9 +14,7 @@ unsigned long dom0_compute_nr_pages(struct domain *d,
                                     unsigned long initrd_len);
 int dom0_setup_permissions(struct domain *d);
 
-int dom0_construct_pv(struct domain *d, const struct boot_module *image,
-                      struct boot_module *initrd,
-                      const char *cmdline);
+int dom0_construct_pv(struct boot_domain *bd);
 
 int dom0_construct_pvh(struct domain *d, const struct boot_module *image,
                        struct boot_module *initrd,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 45a386aa81f0..d9efef4f0599 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -354,10 +354,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
     return page;
 }
 
-static int __init dom0_construct(struct domain *d,
-                                 const struct boot_module *image,
-                                 struct boot_module *initrd,
-                                 const char *cmdline)
+static int __init dom0_construct(struct boot_domain *bd)
 {
     int i, rc, order, machine;
     bool compatible, compat;
@@ -373,11 +370,12 @@ static int __init dom0_construct(struct domain *d,
     struct page_info *page = NULL;
     unsigned int flush_flags = 0;
     start_info_t *si;
+    struct domain *d = bd->d;
     struct vcpu *v = d->vcpu[0];
-    void *image_base = bootstrap_map_bm(image);
-    unsigned long image_len = image->size;
-    void *image_start = image_base + image->headroom;
-    unsigned long initrd_len = initrd ? initrd->size : 0;
+    void *image_base = bootstrap_map_bm(bd->kernel);
+    unsigned long image_len = bd->kernel->size;
+    void *image_start = image_base + bd->kernel->headroom;
+    unsigned long initrd_len = bd->ramdisk ? bd->ramdisk->size : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
@@ -613,7 +611,7 @@ static int __init dom0_construct(struct domain *d,
         initrd_pfn = vinitrd_start ?
                      (vinitrd_start - v_start) >> PAGE_SHIFT :
                      domain_tot_pages(d);
-        initrd_mfn = maddr_to_mfn(initrd->start);
+        initrd_mfn = maddr_to_mfn(bd->ramdisk->start);
         mfn = mfn_x(initrd_mfn);
         count = PFN_UP(initrd_len);
         if ( d->arch.physaddr_bitsize &&
@@ -629,13 +627,13 @@ static int __init dom0_construct(struct domain *d,
                     free_domheap_pages(page, order);
                     page += 1UL << order;
                 }
-            memcpy(page_to_virt(page), maddr_to_virt(initrd->start),
+            memcpy(page_to_virt(page), maddr_to_virt(bd->ramdisk->start),
                    initrd_len);
-            mpt_alloc = initrd->start;
+            mpt_alloc = bd->ramdisk->start;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
             initrd_mfn = page_to_mfn(page);
-            initrd->start = mfn_to_maddr(initrd_mfn);
+            bd->ramdisk->start = mfn_to_maddr(initrd_mfn);
         }
         else
         {
@@ -643,7 +641,7 @@ static int __init dom0_construct(struct domain *d,
                 if ( assign_pages(mfn_to_page(_mfn(mfn++)), 1, d, 0) )
                     BUG();
         }
-        initrd->size = 0;
+        bd->ramdisk->size = 0;
 
         iommu_memory_setup(d, "initrd", mfn_to_page(initrd_mfn),
                            PFN_UP(initrd_len), &flush_flags);
@@ -655,9 +653,9 @@ static int __init dom0_construct(struct domain *d,
     if ( domain_tot_pages(d) < nr_pages )
         printk(" (%lu pages to be allocated)",
                nr_pages - domain_tot_pages(d));
-    if ( initrd )
+    if ( bd->ramdisk )
     {
-        mpt_alloc = initrd->start;
+        mpt_alloc = bd->ramdisk->start;
         printk("\n Init. ramdisk: %"PRIpaddr"->%"PRIpaddr,
                mpt_alloc, mpt_alloc + initrd_len);
     }
@@ -885,7 +883,7 @@ static int __init dom0_construct(struct domain *d,
         if ( pfn >= initrd_pfn )
         {
             if ( pfn < initrd_pfn + PFN_UP(initrd_len) )
-                mfn = paddr_to_pfn(initrd->start) + (pfn - initrd_pfn);
+                mfn = paddr_to_pfn(bd->ramdisk->start) + (pfn - initrd_pfn);
             else
                 mfn -= PFN_UP(initrd_len);
         }
@@ -955,8 +953,8 @@ static int __init dom0_construct(struct domain *d,
     }
 
     memset(si->cmd_line, 0, sizeof(si->cmd_line));
-    if ( cmdline != NULL )
-        strlcpy((char *)si->cmd_line, cmdline, sizeof(si->cmd_line));
+    if ( bd->cmdline[0] != '\0' )
+        strlcpy((char *)si->cmd_line, bd->cmdline, sizeof(si->cmd_line));
 
 #ifdef CONFIG_VIDEO
     if ( !pv_shim && fill_console_start_info((void *)(si + 1)) )
@@ -1053,10 +1051,7 @@ out:
     return rc;
 }
 
-int __init dom0_construct_pv(struct domain *d,
-                             const struct boot_module *image,
-                             struct boot_module *initrd,
-                             const char *cmdline)
+int __init dom0_construct_pv(struct boot_domain *bd)
 {
     unsigned long cr4 = read_cr4();
     int rc;
@@ -1074,7 +1069,7 @@ int __init dom0_construct_pv(struct domain *d,
         write_cr4(cr4 & ~X86_CR4_SMAP);
     }
 
-    rc = dom0_construct(d, image, initrd, cmdline);
+    rc = dom0_construct(bd);
 
     if ( cr4 & X86_CR4_SMAP )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823021.1237048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjP-0006ZF-S1; Mon, 21 Oct 2024 00:57:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823021.1237048; Mon, 21 Oct 2024 00: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 1t2gjP-0006Yo-KR; Mon, 21 Oct 2024 00:57:11 +0000
Received: by outflank-mailman (input) for mailman id 823021;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gcL-0001i1-G9
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:53 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 610f676a-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:49:52 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471615202442.76370585557197;
 Sun, 20 Oct 2024 17:46:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 610f676a-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471617; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=CIv9MEArRivr4cwIqGVq5EVSB2bEstnzqvi1WfqcQrGsUejgrvj6f7uAWik6A8hRzzJw1FWtVGXlJOAJBpTNf9wm2OPzc96LeE6n9BpGqZkLngmycDb1gXvcM6Q5lc2n4x1NaNgVHLn6R57qCJnmXWgoy+TCdWRKLt1s8iO5eSY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471617; h=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=g0NVk64TuKi2tR5OnvtS4NnU7f+YLD8Wq1acHX9UIbs=; 
	b=APaGUFCQVJVZ2glPYSsw687cau06o+/I8GDzrNNm8eebuSRMaKu5emPgvNaE9I9lB64nNJCoMJWs5wY+1LdGQTIK3eEi84OunSjtSqu9rYqpU3GQSrdYQBk903iqaFn5A7MClNmKKY/YBqjra0tECpc57ymP50ZtyLmJcYomuHA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471617;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=g0NVk64TuKi2tR5OnvtS4NnU7f+YLD8Wq1acHX9UIbs=;
	b=S4Bnj9nRgJCK1jSlWbAhpSGz6bZZlkvl5zO23KEK6qpHPCC5Lfn8/LC23k+8pnm8
	yHbFZfcSaDvy+oOcNXpyNwwMnCGuUh1a50nRwDhOKuizpUROumKPYbl8YKqCeFg7IeE
	l4LueC69upfXsG1Ah/4QracetxKxQiazHrJJ4DgE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 27/38] x86/boot: convert initial_images to struct boot_module
Date: Sun, 20 Oct 2024 20:46:02 -0400
Message-Id: <20241021004613.18793-28-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

The variable initial_images is used for tracking the boot modules passed in by
the boot loader. Convert to a struct boot_module and adjust the code that uses
it accordingly.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v5:
- coding style changes
---
 xen/arch/x86/setup.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 254aeb0c5e1b..0f8fb3c572c6 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -276,7 +276,7 @@ custom_param("acpi", parse_acpi_param);
 
 static const char *cmdline_cook(const char *p, const char *loader_name);
 
-static const module_t *__initdata initial_images;
+static const struct boot_module *__initdata initial_images;
 
 struct boot_info __initdata xen_boot_info = {
     .loader = "unknown",
@@ -352,8 +352,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = initial_images[i].mod_start;
-        unsigned long end = start + PFN_UP(initial_images[i].mod_end);
+        unsigned long start = initial_images[i].mod->mod_start;
+        unsigned long end = start + PFN_UP(initial_images[i].mod->mod_end);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -369,10 +369,11 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
+        uint64_t start =
+            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
 
         init_domheap_pages(start,
-                           start + PAGE_ALIGN(initial_images[i].mod_end));
+                           start + PAGE_ALIGN(initial_images[i].mod->mod_end));
     }
 
     bi->nr_modules = 0;
@@ -1403,11 +1404,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    /*
-     * The field bi->mods[0].mod points to the first element of the module_t
-     * array.
-     */
-    initial_images = bi->mods[0].mod;
+    initial_images = bi->mods;
 
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823024.1237062 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjR-000744-B5; Mon, 21 Oct 2024 00:57:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823024.1237062; Mon, 21 Oct 2024 00: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 1t2gjR-00073K-6y; Mon, 21 Oct 2024 00:57:13 +0000
Received: by outflank-mailman (input) for mailman id 823024;
 Mon, 21 Oct 2024 00: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gaF-0000Dk-3N
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:43 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1280206b-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:47:40 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471595370855.1759275725335;
 Sun, 20 Oct 2024 17:46:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1280206b-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471597; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=gbTJwubuLjGLXIHRQ/v0sQ4sKwXEXkxqBfrsPp1jvJhZptzb8RFMpfMyZIUj7q8mtwRlMDPURn4xa/J/zyPhbAhvl3fEEAdDO6Zhdl2enuFsVYsN7aSPY02HX8Fqr+1ifwzL3TKspy1J/y4H1CBgguS0CihiDM1EV2vFOMC+OSY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471597; h=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=YvJ2m/YsYOZLoEyM2p3qJT9+gJiHXjraaWi+kBWIksU=; 
	b=gt0hBNrw1cMHJe7/URFosCDFGhah22QoJYaj+ufVmKPMIiBgu4n6SCJLqliVZQL3YTu/Rq0eyl/VdWvtADiNsUCJG6mv+h1i5G+yomkM7pX8AXC3JK+WuzY9TFTHhNhFKDZuQz+WYwYCucypXZ10xq8PGxHEau5eRBqIjdOhBX0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471597;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=YvJ2m/YsYOZLoEyM2p3qJT9+gJiHXjraaWi+kBWIksU=;
	b=npQB6TzqdDny8vKAgaIGczrXeIrX9nRV2oiiN7jZgbOrLzHYT2SNZc7jVV6ADErc
	cU9Yyt9vFu+QLm1U03yfj3Gyiibh+vIlVJ15tjtoAp2Hc12vjQmeSGcmiB3P2BPPZBd
	fQQXj0ANashdkWTbSFurktRqRzyoeZQBy78Tpoz4=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 10/38] x86/boot: introduce consumed flag for struct boot_module
Date: Sun, 20 Oct 2024 20:45:45 -0400
Message-Id: <20241021004613.18793-11-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Allow the tracking of when a boot module has been consumed by a handler in the
hypervisor independent of when it is claimed. The instances where the
hypervisor does nothing beyond claiming, the dom0 kernel, dom0 ramdisk, and a
placeholder for itself, are updated as being consumed at the time of being
claimed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- changed flag from bitmap to bitfield.

Changes since v5:
- first flag assignment can be = instead of |=
---
 xen/arch/x86/include/asm/bootinfo.h | 3 +++
 xen/arch/x86/setup.c                | 5 +++++
 2 files changed, 8 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index dbd22db3d063..3eb9930904c0 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -44,8 +44,11 @@ struct boot_module {
     /*
      * Module State Flags:
      *   relocated: indicates module has been relocated in memory.
+     *   consumed:  indicates that the subystem that claimed the module has
+     *              finished with it.
      */
     bool relocated:1;
+    bool consumed:1;
 
     paddr_t start;
     size_t size;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b02391b887b1..a623f9cd9df9 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -335,6 +335,7 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
     bi->mods[i].start = mods[i].mod_start;
     bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
     bi->mods[i].type = BOOTMOD_XEN;
+    bi->mods[i].consumed = true;
 
     return bi;
 }
@@ -1211,6 +1212,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     bitmap_fill(module_map, bi->nr_modules);
     __clear_bit(0, module_map); /* Dom0 kernel is always first */
     bi->mods[0].type = BOOTMOD_KERNEL;
+    bi->mods[0].consumed = true;
 
     if ( pvh_boot )
     {
@@ -2094,7 +2096,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     initrdidx = find_first_bit(module_map, bi->nr_modules);
     if ( initrdidx < bi->nr_modules )
+    {
         bi->mods[initrdidx].type = BOOTMOD_RAMDISK;
+        bi->mods[initrdidx].consumed = true;
+    }
     if ( bitmap_weight(module_map, bi->nr_modules) > 1 )
         printk(XENLOG_WARNING
                "Multiple initrd candidates, picking module #%u\n",
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823025.1237066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjR-00077K-Kh; Mon, 21 Oct 2024 00:57:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823025.1237066; Mon, 21 Oct 2024 00: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 1t2gjR-00076r-G8; Mon, 21 Oct 2024 00:57:13 +0000
Received: by outflank-mailman (input) for mailman id 823025;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gcF-0001i1-1E
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:47 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5d3c98f9-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:49:46 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471614074580.9912900787891;
 Sun, 20 Oct 2024 17:46:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d3c98f9-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471616; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Rh1pfFOh/ZaLbVfmXmkN8JvQ1BP/bKVNJPhIe+6B6jfb2wMticdqY1bNxcoaABWgCK+3xujsR72yzXeo5tOM31oGk9962xxdSnkgvNG7ye3p0jlQELzRdXXnvU236Bk25EIw9ZFVQWoq+fgspjPDauSbvvJ/vR1OLeoEMmtjA9w=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471616; h=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=8l/A5uTX2SajRrK9csx9oFSHA7WUVR/YgCRfUTZ06cw=; 
	b=l2bMvlqYqkBzD7ur+Bwz+73Kqdz/Bbn7GZhuOTfNlDkV+ruazlWjeml58PCeRH0GSmq0AJ28j/geGbeZ0ppa6aTmJ8Ek1szaQL4X6S/5KXvKO1JTpUCTYQ1U6SYbH3Ay+h3eG9lK/Z3uYeLbQNgUu+5XjQAW0Hm4OQ0hiB30BT8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471616;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=8l/A5uTX2SajRrK9csx9oFSHA7WUVR/YgCRfUTZ06cw=;
	b=By/WpDgqmji2sfwMOYkHAH2S/rjv1GqBVDprm5hLT69o0VmYCmm0fPy/Bt1aNwJu
	69ViJFj+c5kuZUA7beejUnL9BpLhIRub+Enh5Mp+7mIEPUjvUgrgqYye476NSHgNUnO
	AhH9ZUT9fpZBb3aepolJ9mqExTJBcTEZsGztZZqg=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 26/38] x86/boot: convert pvh_load_kernel to struct boot_module
Date: Sun, 20 Oct 2024 20:46:01 -0400
Message-Id: <20241021004613.18793-27-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes both the kernel and ramdisk parameters over to struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
 xen/arch/x86/hvm/dom0_build.c | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index 0fe63f040936..211f4e3e772e 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -642,15 +642,14 @@ static bool __init check_and_adjust_load_address(
     return true;
 }
 
-static int __init pvh_load_kernel(struct domain *d, const module_t *image,
-                                  unsigned long image_headroom,
-                                  module_t *initrd, void *image_base,
-                                  const char *cmdline, paddr_t *entry,
-                                  paddr_t *start_info_addr)
+static int __init pvh_load_kernel(
+    struct domain *d, const struct boot_module *image,
+    struct boot_module *initrd, void *image_base,
+    const char *cmdline, paddr_t *entry, paddr_t *start_info_addr)
 {
-    void *image_start = image_base + image_headroom;
-    unsigned long image_len = image->mod_end;
-    unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+    void *image_start = image_base + image->headroom;
+    unsigned long image_len = image->size;
+    unsigned long initrd_len = initrd ? initrd->size : 0;
     struct elf_binary elf;
     struct elf_dom_parms parms;
     paddr_t last_addr;
@@ -725,7 +724,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, maddr_to_virt(initrd->start),
                                     initrd_len, v);
         if ( rc )
         {
@@ -736,9 +735,9 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
         mod.paddr = last_addr;
         mod.size = initrd_len;
         last_addr += ROUNDUP(initrd_len, elf_64bit(&elf) ? 8 : 4);
-        if ( initrd->string )
+        if ( initrd->cmdline )
         {
-            char *str = __va(initrd->string);
+            char *str = __va((unsigned long)initrd->cmdline);
             size_t len = strlen(str) + 1;
 
             rc = hvm_copy_to_guest_phys(last_addr, str, len, v);
@@ -1346,8 +1345,8 @@ int __init dom0_construct_pvh(struct domain *d, const struct boot_module *image,
         return rc;
     }
 
-    rc = pvh_load_kernel(d, image->mod, image->headroom, initrd->mod,
-                         bootstrap_map_bm(image), cmdline, &entry, &start_info);
+    rc = pvh_load_kernel(d, image, initrd, bootstrap_map_bm(image), cmdline,
+                         &entry, &start_info);
     if ( rc )
     {
         printk("Failed to load Dom0 kernel\n");
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823026.1237082 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjV-0007qc-0X; Mon, 21 Oct 2024 00:57:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823026.1237082; Mon, 21 Oct 2024 00:57: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 1t2gjU-0007qT-R8; Mon, 21 Oct 2024 00:57:16 +0000
Received: by outflank-mailman (input) for mailman id 823026;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gaM-0000Dk-GX
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:50 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 173a9453-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:47:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471596570279.0068470318946;
 Sun, 20 Oct 2024 17:46:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 173a9453-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471598; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=agHxrAwa/gwzl0lF5c5hip/jZgdb1dhKrC1ik3YA170glJuri75yKhD9UI67dwapoHyA9EjKvz/WXRos8xcugos7BEmfcTMQGQ6LO7gTsqyIia8uW3Y/B8ZT8EofVAwhUNlMsZNnbXEpifwh+RYSf2cOWkexOWjiIHZyqQK6M+E=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471598; h=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=7htI5l3h8JWhW9QL/lD8LlUYIubTfk49/4+QzqSxcrQ=; 
	b=krd8hze8VMzYJtvT2OSd6aAWsm/sPOqLdBc2RqSKe/HKcnEW/0Mg/Du6r2FwwK9N1TM+BxxQVGLVyWwWltiHbAt8NjP59wgw39Nu9j8W9cnlQWsALVcGzyS+mY8aCgrLbwG4uQo5NokcYCywfdbmtEuucS8Pb2Mo53ur6Si1TwQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471598;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=7htI5l3h8JWhW9QL/lD8LlUYIubTfk49/4+QzqSxcrQ=;
	b=bv47YzelbM1dTZhrhRFsvaBP0z7QgwF8k3fOdDYcVDZe2XE5Op9/ATadSWjWYUNJ
	3orK/xI63WsWFuC/jdx7wcEhco1O6xUKzhIv6PRnhKCKcsh6zprhr+Um/PXSei0f+R7
	JxaMfcS9mNjvckgxQloywrc8H4/mVBzrZRs/UQV8=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 11/38] x86/boot: convert microcode loading to consume struct boot_info
Date: Sun, 20 Oct 2024 20:45:46 -0400
Message-Id: <20241021004613.18793-12-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Convert the microcode loading functions to take struct boot_info, and then
using struct boot_module to map and check for microcode. To keep the changes
focused, continue using the struct mod to hold the reference to the microcode
that is used by the late microcode logic.

To support loading the microcode boot module in to the bootstrap map, introduce
bootstrap_map_bm() for mapping struct boot_module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- introduce helpers for_each_boot_module and boot_module_index
- drop const due to object use changes done by helpers
- converted boot module search to use for each helper
- make bootstrap unmap call match bootstrap map

Changes since v5:
- moved bootstrap_map_bm definition to this commit
---
 xen/arch/x86/cpu/microcode/core.c    | 46 ++++++++++++----------------
 xen/arch/x86/include/asm/bootinfo.h  | 25 +++++++++++++++
 xen/arch/x86/include/asm/microcode.h | 14 +++++----
 xen/arch/x86/include/asm/setup.h     |  2 ++
 xen/arch/x86/setup.c                 | 12 ++++++--
 5 files changed, 65 insertions(+), 34 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 8564e4d2c94c..11a0ba978a33 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -35,6 +35,7 @@
 #include <xen/watchdog.h>
 
 #include <asm/apic.h>
+#include <asm/bootinfo.h>
 #include <asm/cpu-policy.h>
 #include <asm/nmi.h>
 #include <asm/processor.h>
@@ -153,16 +154,14 @@ static int __init cf_check parse_ucode(const char *s)
 custom_param("ucode", parse_ucode);
 
 static void __init microcode_scan_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     uint64_t *_blob_start;
     unsigned long _blob_size;
     struct cpio_data cd;
     long offset;
     const char *p = NULL;
-    int i;
+    struct boot_module *bm;
 
     ucode_blob.size = 0;
     if ( !ucode_scan )
@@ -178,17 +177,14 @@ static void __init microcode_scan_module(
     /*
      * Try all modules and see whichever could be the microcode blob.
      */
-    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
+    for_each_boot_module(bi, bm, BOOTMOD_UNKNOWN)
     {
-        if ( !test_bit(i, module_map) )
-            continue;
-
-        _blob_start = bootstrap_map(&mod[i]);
-        _blob_size = mod[i].mod_end;
+        _blob_start = bootstrap_map_bm(bm);
+        _blob_size = bm->size;
         if ( !_blob_start )
         {
-            printk("Could not map multiboot module #%d (size: %ld)\n",
-                   i, _blob_size);
+            printk("Could not map boot module #%d (size: %ld)\n",
+                   boot_module_index(bi, bm), _blob_size);
             continue;
         }
         cd.data = NULL;
@@ -200,25 +196,23 @@ static void __init microcode_scan_module(
             ucode_blob.data = cd.data;
             break;
         }
-        bootstrap_map(NULL);
+        bootstrap_map_bm(NULL);
     }
 }
 
 static void __init microcode_grab_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+    unsigned long *module_map, struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
-
     if ( ucode_mod_idx < 0 )
-        ucode_mod_idx += mbi->mods_count;
-    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
+        ucode_mod_idx += bi->nr_modules;
+    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
          !__test_and_clear_bit(ucode_mod_idx, module_map) )
         goto scan;
-    ucode_mod = mod[ucode_mod_idx];
+    bi->mods[ucode_mod_idx].type = BOOTMOD_MICROCODE;
+    ucode_mod = *bi->mods[ucode_mod_idx].mod;
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(module_map, bi);
 }
 
 static struct microcode_ops __ro_after_init ucode_ops;
@@ -822,8 +816,8 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+int __init microcode_init_cache(
+    unsigned long *module_map, struct boot_info *bi)
 {
     int rc = 0;
 
@@ -832,7 +826,7 @@ int __init microcode_init_cache(unsigned long *module_map,
 
     if ( ucode_scan )
         /* Need to rescan the modules because they might have been relocated */
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(module_map, bi);
 
     if ( ucode_mod.mod_end )
         rc = early_update_cache(bootstrap_map(&ucode_mod),
@@ -879,7 +873,7 @@ static int __init early_microcode_update_cpu(void)
 }
 
 int __init early_microcode_init(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+                                struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
     int rc = 0;
@@ -922,7 +916,7 @@ int __init early_microcode_init(unsigned long *module_map,
         return -ENODEV;
     }
 
-    microcode_grab_module(module_map, mbi);
+    microcode_grab_module(module_map, bi);
 
     if ( ucode_mod.mod_end || ucode_blob.size )
         rc = early_microcode_update_cpu();
diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index 3eb9930904c0..e470df48700d 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -20,6 +20,7 @@ enum bootmod_type {
     BOOTMOD_XEN,
     BOOTMOD_KERNEL,
     BOOTMOD_RAMDISK,
+    BOOTMOD_MICROCODE,
 };
 
 struct boot_module {
@@ -69,6 +70,30 @@ struct boot_info {
     struct boot_module mods[MAX_NR_BOOTMODS + 1];
 };
 
+static inline struct boot_module *__init next_boot_module_by_type(
+    struct boot_info *bi, struct boot_module *bm, enum bootmod_type t)
+{
+    if ( bm == NULL )
+        bm = &bi->mods[0];
+    else
+        bm++;
+
+    for ( ; bm <= &bi->mods[bi->nr_modules]; bm++ )
+    {
+        if ( bm->type == t )
+            return bm;
+    }
+
+    return NULL;
+}
+
+#define for_each_boot_module(bi, bm, t)                                     \
+    for ( bm = &bi->mods[0]; bm != NULL && bm <= &bi->mods[bi->nr_modules]; \
+          bm = next_boot_module_by_type(bi, bm, t) )
+
+#define boot_module_index(bi, bm)                   \
+    (unsigned int)(bm - &bi->mods[0])
+
 #endif /* X86_BOOTINFO_H */
 
 /*
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 57c08205d475..9e7c7ab004ed 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -4,6 +4,8 @@
 #include <xen/types.h>
 #include <xen/percpu.h>
 
+#include <asm/bootinfo.h>
+
 #include <public/xen.h>
 
 struct multiboot_info;
@@ -22,12 +24,12 @@ struct cpu_signature {
 DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 
 void microcode_set_module(unsigned int idx);
-int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
-                     unsigned long len, unsigned int flags);
-int early_microcode_init(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
-int microcode_init_cache(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
+int microcode_update(
+    XEN_GUEST_HANDLE(const_void) buf, unsigned long len, unsigned int flags);
+int early_microcode_init(
+    unsigned long *module_map, struct boot_info *bi);
+int microcode_init_cache(
+    unsigned long *module_map, struct boot_info *bi);
 int microcode_update_one(void);
 
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 3d189521189d..729f68ca23b8 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -2,6 +2,7 @@
 #define __X86_SETUP_H_
 
 #include <xen/multiboot.h>
+#include <asm/bootinfo.h>
 #include <asm/numa.h>
 
 extern const char __2M_text_start[], __2M_text_end[];
@@ -37,6 +38,7 @@ extern struct boot_info xen_boot_info;
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
 void *bootstrap_map(const module_t *mod);
+void *bootstrap_map_bm(const struct boot_module *bm);
 
 int remove_xen_ranges(struct rangeset *r);
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index a623f9cd9df9..272d5a725c54 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -499,6 +499,14 @@ void *__init bootstrap_map(const module_t *mod)
                               pfn_to_paddr(mod->mod_start) + mod->mod_end);
 }
 
+void *__init bootstrap_map_bm(const struct boot_module *bm)
+{
+    if ( !bm )
+        return bootstrap_map_addr(0, 0);
+
+    return bootstrap_map_addr(bm->start, bm->start + bm->size);
+}
+
 static void __init move_memory(
     uint64_t dst, uint64_t src, unsigned int size)
 {
@@ -1401,7 +1409,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * TODO: load ucode earlier once multiboot modules become accessible
      * at an earlier stage.
      */
-    early_microcode_init(module_map, mbi);
+    early_microcode_init(module_map, bi);
 
     if ( xen_phys_start )
     {
@@ -1948,7 +1956,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     timer_init();
 
-    microcode_init_cache(module_map, mbi); /* Needs xmalloc() */
+    microcode_init_cache(module_map, bi); /* Needs xmalloc() */
 
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823030.1237091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjY-0008Kr-HR; Mon, 21 Oct 2024 00:57:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823030.1237091; Mon, 21 Oct 2024 00:57: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 1t2gjY-0008Ka-Cr; Mon, 21 Oct 2024 00:57:20 +0000
Received: by outflank-mailman (input) for mailman id 823030;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gZs-000738-RL
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:20 +0000
Received: from sender3-of-o58.zoho.com (sender3-of-o58.zoho.com
 [136.143.184.58]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 060d6c93-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:47:19 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471591822568.8599150587428;
 Sun, 20 Oct 2024 17:46:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 060d6c93-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471593; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=D6oyLCDD5DJpBPsrlA/M7BmHu9FXfhAZnT8g4rcfuK85qAjfgfl0Iv/dvtjK9L5aQqG/bNuf9kdoVLKr3Tu8nEBvkZv25i9EpTwCUEy06w5v4NHzZi/kcHdWsECJUCCzfvzuuCqAYMcTC6Rz+A1RK2+mBY49KSd0qw3PIU3oikk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471593; h=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=Vt87AgI0m9lK6tCp4TANNpG9kFhWx6vDUngb9zKNYKY=; 
	b=FqSpP7+5QHeyC4Y6qtlVlUjNmculkc7LL+uFS/yubXnpSYHcuNaGUd+L6vvzLDTGvZw+v57KViPnlJdAW/6utgw1SE3Ugod6l5xn7GTFpnUZufHPl/iFYa1Tw5Df7oYR+0GvYj1Fn/5i+eVMA/1cYiKtpiD8vb6/P3NeMIoZsGo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471593;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=Vt87AgI0m9lK6tCp4TANNpG9kFhWx6vDUngb9zKNYKY=;
	b=KYpeI6fo1rWP+ZYhGVQP6arHGsxz9sKtVBFWwJUQi29+UH4ISJ9cHtWN76g0FS42
	ViNDWGkaY9Zk4NYxWhadBX4NeRW9KC9TYY3ZE0Lax6OzAGTInRYMAsSPPVeEvrLCvhP
	v7TuncPjDhlwlCzm3Vka9RUumOpd5lJ1eol887ls=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 07/38] x86/boot: add start and size fields to struct boot_module
Date: Sun, 20 Oct 2024 20:45:42 -0400
Message-Id: <20241021004613.18793-8-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This commit introduces the start and size fields to struct boot_module and
assigns their value during boot_info construction.

The EFI entry point is a special case, as the EFI file loading boot service may
load a file beyond the 4G barrier. As a result, to make the address fit in the
32bit integer used by the MB1 module_t structure, the frame number is stored in
mod_start and size in mod_end. Until the EFI entry point is enlightened to work
with boot_info and boot_module, multiboot_fill_boot_info will handle the
alternate values in mod_start and mod_end when EFI is detected.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- put the efi conversion for mod_start and mod_end back along with check
- dropped unnecessary cast
- updated the population of start and size fields to take into account efi

Changes since v5:
- switched EFI population of mod_start/mod_end to addresses
---
 xen/arch/x86/include/asm/bootinfo.h |  3 +++
 xen/arch/x86/setup.c                | 15 +++++++++++++++
 2 files changed, 18 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index e8fba66eedc5..dbd22db3d063 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -46,6 +46,9 @@ struct boot_module {
      *   relocated: indicates module has been relocated in memory.
      */
     bool relocated:1;
+
+    paddr_t start;
+    size_t size;
 };
 
 /*
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 17f74384b5c1..2e87aa314389 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -315,10 +315,25 @@ static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
      * reserved for Xen.
      */
     for ( i = 0; i < MAX_NR_BOOTMODS && i < bi->nr_modules; i++ )
+    {
         bi->mods[i].mod = &mods[i];
 
+        if ( !efi_enabled(EFI_LOADER) )
+        {
+            bi->mods[i].start = mods[i].mod_start;
+            bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
+        }
+        else
+        {
+            bi->mods[i].start = pfn_to_paddr(mods[i].mod_start);
+            bi->mods[i].size = mods[i].mod_end;
+        }
+    }
+
     /* Variable 'i' should be one entry past the last module. */
     bi->mods[i].mod = &mods[bi->nr_modules];
+    bi->mods[i].start = mods[i].mod_start;
+    bi->mods[i].size = mods[i].mod_end - mods[i].mod_start;
     bi->mods[i].type = BOOTMOD_XEN;
 
     return bi;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823031.1237098 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjZ-0008RC-4u; Mon, 21 Oct 2024 00:57:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823031.1237098; Mon, 21 Oct 2024 00:57: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 1t2gjY-0008QK-Rs; Mon, 21 Oct 2024 00:57:20 +0000
Received: by outflank-mailman (input) for mailman id 823031;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gc0-0003Iq-6Z
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:32 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 53f4a1d0-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:49:30 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471611802555.2471817938753;
 Sun, 20 Oct 2024 17:46:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 53f4a1d0-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471614; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=bqkjdy6BkatGSN0bWrlE45r4aQgQTmOVWieYxEtX1BbU/u8kFB6AUuR+bT7MTd1cAUlIR87oa3qnXe8zyEEjJQ+x55D3cwnACdK7PJJFWOhLQq2gY00SZ6R222QOSJEqzeXXNCLb2NgsU40ygT9KAUuKroPwSehxgzyhkBn0v5k=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471614; h=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=G3ehmCO8bT8qPw3YmQxCtvKfHyAgzuybCULbUdCF2DY=; 
	b=BmZrndyqsacMN/x144p/nW5gC+mOYlCVlawDXPhJg/64ecfRj+W15sDNblN5h2o+8n+r3miCrt3x69fPHrAUCp4y1PV3q7mEOIWX4zCWYSBDNaOuTQg+DEdl1Z4rFyd3EEKj9USVM2qYgtpAEmjHsoXFGLxVlvcUgBDwn/yEl+Y=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471614;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=G3ehmCO8bT8qPw3YmQxCtvKfHyAgzuybCULbUdCF2DY=;
	b=egMyPoqRN6xRPi9spUmX+V8+xuhVOH4kfrXmOJwU+P5tOeDLjfmbXYra/NnxKvaF
	VFRkle4K21A/OuORaxOvX9+ceNZAke+rjmlNIYqXIOquvdujRymlIO0SgtOOe3TF13a
	zTv4lrk4h8yvb/cb/mKn0KQWyLv9uH1ODhlXEJaU=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 24/38] x86/boot: convert dom0_construct_pv initrd param to struct boot_module
Date: Sun, 20 Oct 2024 20:45:59 -0400
Message-Id: <20241021004613.18793-25-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes the type for the initrd parameter of dom0_construct_pv to be struct
boot_module. This conversion requires several adjustments throughout dom0_construct_pv
to account for the type change. Removes the usage of early_mod field for ramdisk module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v6:
- removed unnecessary indentation changes

Changes since v5:
- changed initrd_mfn initialization to _mfn(0)
---
 xen/arch/x86/dom0_build.c             |  2 +-
 xen/arch/x86/include/asm/dom0_build.h |  2 +-
 xen/arch/x86/pv/dom0_build.c          | 29 +++++++++++++++------------
 3 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 54db578dd29f..1d05ee53a6d8 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -613,7 +613,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
         rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
                                 cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image, initrd->mod, cmdline);
+        rc = dom0_construct_pv(d, image, initrd, cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 66ea70869c49..3ddd22fad2ba 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -14,7 +14,7 @@ unsigned long dom0_compute_nr_pages(struct domain *d,
 int dom0_setup_permissions(struct domain *d);
 
 int dom0_construct_pv(struct domain *d, const struct boot_module *image,
-                      module_t *initrd,
+                      struct boot_module *initrd,
                       const char *cmdline);
 
 int dom0_construct_pvh(struct domain *d, const module_t *image,
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index db4c066e626b..45a386aa81f0 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -356,7 +356,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
 
 static int __init dom0_construct(struct domain *d,
                                  const struct boot_module *image,
-                                 module_t *initrd,
+                                 struct boot_module *initrd,
                                  const char *cmdline)
 {
     int i, rc, order, machine;
@@ -367,7 +367,8 @@ static int __init dom0_construct(struct domain *d,
     unsigned long nr_pt_pages;
     unsigned long alloc_spfn;
     unsigned long alloc_epfn;
-    unsigned long initrd_pfn = -1, initrd_mfn = 0;
+    unsigned long initrd_pfn = -1;
+    mfn_t  initrd_mfn = _mfn(0);
     unsigned long count;
     struct page_info *page = NULL;
     unsigned int flush_flags = 0;
@@ -376,7 +377,7 @@ static int __init dom0_construct(struct domain *d,
     void *image_base = bootstrap_map_bm(image);
     unsigned long image_len = image->size;
     void *image_start = image_base + image->headroom;
-    unsigned long initrd_len = initrd ? initrd->mod_end : 0;
+    unsigned long initrd_len = initrd ? initrd->size : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
@@ -612,7 +613,8 @@ static int __init dom0_construct(struct domain *d,
         initrd_pfn = vinitrd_start ?
                      (vinitrd_start - v_start) >> PAGE_SHIFT :
                      domain_tot_pages(d);
-        initrd_mfn = mfn = initrd->mod_start;
+        initrd_mfn = maddr_to_mfn(initrd->start);
+        mfn = mfn_x(initrd_mfn);
         count = PFN_UP(initrd_len);
         if ( d->arch.physaddr_bitsize &&
              ((mfn + count - 1) >> (d->arch.physaddr_bitsize - PAGE_SHIFT)) )
@@ -627,12 +629,13 @@ static int __init dom0_construct(struct domain *d,
                     free_domheap_pages(page, order);
                     page += 1UL << order;
                 }
-            memcpy(page_to_virt(page), mfn_to_virt(initrd->mod_start),
+            memcpy(page_to_virt(page), maddr_to_virt(initrd->start),
                    initrd_len);
-            mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+            mpt_alloc = initrd->start;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
-            initrd->mod_start = initrd_mfn = mfn_x(page_to_mfn(page));
+            initrd_mfn = page_to_mfn(page);
+            initrd->start = mfn_to_maddr(initrd_mfn);
         }
         else
         {
@@ -640,9 +643,9 @@ static int __init dom0_construct(struct domain *d,
                 if ( assign_pages(mfn_to_page(_mfn(mfn++)), 1, d, 0) )
                     BUG();
         }
-        initrd->mod_end = 0;
+        initrd->size = 0;
 
-        iommu_memory_setup(d, "initrd", mfn_to_page(_mfn(initrd_mfn)),
+        iommu_memory_setup(d, "initrd", mfn_to_page(initrd_mfn),
                            PFN_UP(initrd_len), &flush_flags);
     }
 
@@ -654,7 +657,7 @@ static int __init dom0_construct(struct domain *d,
                nr_pages - domain_tot_pages(d));
     if ( initrd )
     {
-        mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
+        mpt_alloc = initrd->start;
         printk("\n Init. ramdisk: %"PRIpaddr"->%"PRIpaddr,
                mpt_alloc, mpt_alloc + initrd_len);
     }
@@ -763,7 +766,7 @@ static int __init dom0_construct(struct domain *d,
         if ( count < initrd_pfn || count >= initrd_pfn + PFN_UP(initrd_len) )
             mfn = pfn++;
         else
-            mfn = initrd_mfn++;
+            mfn = mfn_x(initrd_mfn) + 1;
         *l1tab = l1e_from_pfn(mfn, compat ? COMPAT_L1_PROT : L1_PROT);
         l1tab++;
 
@@ -882,7 +885,7 @@ static int __init dom0_construct(struct domain *d,
         if ( pfn >= initrd_pfn )
         {
             if ( pfn < initrd_pfn + PFN_UP(initrd_len) )
-                mfn = initrd->mod_start + (pfn - initrd_pfn);
+                mfn = paddr_to_pfn(initrd->start) + (pfn - initrd_pfn);
             else
                 mfn -= PFN_UP(initrd_len);
         }
@@ -1052,7 +1055,7 @@ out:
 
 int __init dom0_construct_pv(struct domain *d,
                              const struct boot_module *image,
-                             module_t *initrd,
+                             struct boot_module *initrd,
                              const char *cmdline)
 {
     unsigned long cr4 = read_cr4();
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823032.1237110 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gja-0000Q4-Fd; Mon, 21 Oct 2024 00:57:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823032.1237110; Mon, 21 Oct 2024 00:57: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 1t2gja-0000PI-9T; Mon, 21 Oct 2024 00:57:22 +0000
Received: by outflank-mailman (input) for mailman id 823032;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gbt-0003Iq-Cz
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:49:25 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4f617d7b-8f46-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 02:49:22 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471610646436.30794011322234;
 Sun, 20 Oct 2024 17:46:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f617d7b-8f46-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729471612; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=i+Fo7mE2l6lnDvHSkdzMXcIc0cXnGZAOArVr2J9rW9rvUEMLkdwRQBqObaK9lHCNNOtaJ9raWFdMjyxPOM6par5wpYQg8fB7WnH06ov6lo4fXOwDP7OeVFij+/zcE7bO7kEGjl9+rtDUhAmFlCe3oxRGJa495acNoLm9hZ1k4p8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471612; h=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=6EFYFOIpJeJaM58GR4EodZUTDNutkt83UE7kPDWs5iU=; 
	b=Hr+zKuiK73+LfVVlD2yDJZZlbQY1vLy1x66B8tC3/pE1k5dsLyC6/RA1HWeJ155h6fbbrZO/7SQW7iihIMCjWQNaOoZz4h6cwfcnwkXO3TnjHmYS+AKL4954mhNmAmsy1JFFhRElQWaq6wDZKCJwTjkMJcMx2aVDoz2p02ISIt8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471612;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=6EFYFOIpJeJaM58GR4EodZUTDNutkt83UE7kPDWs5iU=;
	b=ebI5JlVoik3O/my+I8RYupFUUSvnlk9k8w8a3pcPdmlAdnvY5vTng6VOfc/6dCfB
	fdAsny2LWWRRCOswBs5/oN4Pcgmtm9NgbGzElq9DRR6BWsebL9Lro68vwrINBeLoSAo
	W32Rzrvo8NrIE2RuEEsBSZXgS2EvZcY/LbG/uWS8=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 23/38] x86/boot: convert dom0_construct_pv image param to struct boot_module
Date: Sun, 20 Oct 2024 20:45:58 -0400
Message-Id: <20241021004613.18793-24-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

This changes the type for the image parameter of dom0_construct_pv to be struct
boot_module. Removing the usage of early_mod field for kernel module.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
---
Changes since v6:
- removed unnecessary indentation changes

Changes since v5:
- replaced bootstrap_map(NULL) with bootstrap_map_bm
---
 xen/arch/x86/dom0_build.c             |  3 +--
 xen/arch/x86/include/asm/dom0_build.h |  3 +--
 xen/arch/x86/pv/dom0_build.c          | 16 +++++++---------
 3 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/dom0_build.c b/xen/arch/x86/dom0_build.c
index 1eff3192f72d..54db578dd29f 100644
--- a/xen/arch/x86/dom0_build.c
+++ b/xen/arch/x86/dom0_build.c
@@ -613,8 +613,7 @@ int __init construct_dom0(struct domain *d, const struct boot_module *image,
         rc = dom0_construct_pvh(d, image->mod, image->headroom, initrd->mod,
                                 cmdline);
     else if ( is_pv_domain(d) )
-        rc = dom0_construct_pv(d, image->mod, image->headroom, initrd->mod,
-                               cmdline);
+        rc = dom0_construct_pv(d, image, initrd->mod, cmdline);
     else
         panic("Cannot construct Dom0. No guest interface available\n");
 
diff --git a/xen/arch/x86/include/asm/dom0_build.h b/xen/arch/x86/include/asm/dom0_build.h
index 107c1ff98367..66ea70869c49 100644
--- a/xen/arch/x86/include/asm/dom0_build.h
+++ b/xen/arch/x86/include/asm/dom0_build.h
@@ -13,8 +13,7 @@ unsigned long dom0_compute_nr_pages(struct domain *d,
                                     unsigned long initrd_len);
 int dom0_setup_permissions(struct domain *d);
 
-int dom0_construct_pv(struct domain *d, const module_t *image,
-                      unsigned long image_headroom,
+int dom0_construct_pv(struct domain *d, const struct boot_module *image,
                       module_t *initrd,
                       const char *cmdline);
 
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index ee9ecdc2abbf..db4c066e626b 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -355,8 +355,7 @@ static struct page_info * __init alloc_chunk(struct domain *d,
 }
 
 static int __init dom0_construct(struct domain *d,
-                                 const module_t *image,
-                                 unsigned long image_headroom,
+                                 const struct boot_module *image,
                                  module_t *initrd,
                                  const char *cmdline)
 {
@@ -374,9 +373,9 @@ static int __init dom0_construct(struct domain *d,
     unsigned int flush_flags = 0;
     start_info_t *si;
     struct vcpu *v = d->vcpu[0];
-    void *image_base = bootstrap_map(image);
-    unsigned long image_len = image->mod_end;
-    void *image_start = image_base + image_headroom;
+    void *image_base = bootstrap_map_bm(image);
+    unsigned long image_len = image->size;
+    void *image_start = image_base + image->headroom;
     unsigned long initrd_len = initrd ? initrd->mod_end : 0;
     l4_pgentry_t *l4tab = NULL, *l4start = NULL;
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
@@ -830,7 +829,7 @@ static int __init dom0_construct(struct domain *d,
         printk("Failed to load the kernel binary\n");
         goto out;
     }
-    bootstrap_map(NULL);
+    bootstrap_map_bm(NULL);
 
     if ( UNSET_ADDR != parms.virt_hypercall )
     {
@@ -1052,8 +1051,7 @@ out:
 }
 
 int __init dom0_construct_pv(struct domain *d,
-                             const module_t *image,
-                             unsigned long image_headroom,
+                             const struct boot_module *image,
                              module_t *initrd,
                              const char *cmdline)
 {
@@ -1073,7 +1071,7 @@ int __init dom0_construct_pv(struct domain *d,
         write_cr4(cr4 & ~X86_CR4_SMAP);
     }
 
-    rc = dom0_construct(d, image, image_headroom, initrd, cmdline);
+    rc = dom0_construct(d, image, initrd, cmdline);
 
     if ( cr4 & X86_CR4_SMAP )
     {
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823038.1237122 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gjd-00011W-Ry; Mon, 21 Oct 2024 00:57:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823038.1237122; Mon, 21 Oct 2024 00:57: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 1t2gjd-0000zk-Ky; Mon, 21 Oct 2024 00:57:25 +0000
Received: by outflank-mailman (input) for mailman id 823038;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gcg-0001i1-8a
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:14 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6d7b8930-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:50:13 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471618610716.8532469184576;
 Sun, 20 Oct 2024 17:46:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6d7b8930-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471620; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=FbmgV0ezgOaZfoTNAr14nsADmTTI4W2l6IfmMrxqv7fZZKXzsUEzOl5yMjdawq9lc4ARJ6RxXFMC0W0ivtfppHqoG0rhWa0h3p9WIB0tXVf9COnD/uo+1HbfLQMS+Gq+jlHlT3OvUvcOKKtNKYIEl8Ish+/BwgTJ06kIyhsMeWk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471620; h=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=GK3STJ5aZqEuHy+kekMK2JZrWAG/l3wNbP6L7AEea2o=; 
	b=WOIp4AnExr9s0FuhE8pQQyfzHxS42zDXg8ARsNhYfFsoMl792+QVpMjiHt4qgpJybCjPcL4yfR9fTeivhMgqOso8/sOYBg4zflKTUzScbTCLGHjofQKkGAIlmmtAhfsdzJAa0/CA6hHWlg3qKGUfTLmsI2iI7tP9BIXzicnviNo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471620;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=GK3STJ5aZqEuHy+kekMK2JZrWAG/l3wNbP6L7AEea2o=;
	b=oE3W/Ky24xtuIXw4iJhxF7Lfi3zRKAbUkmzBs3n+VBuhi9yfoQ3CqIhY2ly+GI83
	+0C0omcIB7u9zFNNXXB4Urw+q1hWTo7fREWQr1snuTlHTak6KuAynDvyK60He+/Uwcd
	qrW0A0K6V2Gv+WYKrn5tzUgqe5NF8T/7MQQfFREE=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 30/38] x86/boot: remove remaining module_t references
Date: Sun, 20 Oct 2024 20:46:05 -0400
Message-Id: <20241021004613.18793-31-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Any direct usages of module_t have been transitioned, remove the remaining
references to the mod field. This also removes any external use of
bootstrap_map(), dropping from setup.h and making it static.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- drop efi exclusion check for module memory alignment validation

Changes since v5:
- commit message rewrite
- coding style change
- remove export of bootstrap_map()
---
 xen/arch/x86/include/asm/setup.h |  1 -
 xen/arch/x86/setup.c             | 29 ++++++++++-------------------
 2 files changed, 10 insertions(+), 20 deletions(-)

diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 72d183e8a4de..f7958b56eab6 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -35,7 +35,6 @@ extern struct boot_info xen_boot_info;
 
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
-void *bootstrap_map(const module_t *mod);
 void *bootstrap_map_bm(const struct boot_module *bm);
 
 int remove_xen_ranges(struct rangeset *r);
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 67e72459170a..2102923cd510 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -350,8 +350,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = bi->mods[i].mod->mod_start;
-        unsigned long end = start + PFN_UP(bi->mods[i].mod->mod_end);
+        unsigned long start = bi->mods[i].start;
+        unsigned long end = start + PFN_UP(bi->mods[i].size);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -488,7 +488,7 @@ static void *__init bootstrap_map_addr(paddr_t start, paddr_t end)
     return ret;
 }
 
-void *__init bootstrap_map(const module_t *mod)
+static void *__init bootstrap_map(const module_t *mod)
 {
     if ( !mod )
         return bootstrap_map_addr(0, 0);
@@ -678,8 +678,8 @@ static uint64_t __init consider_modules(
 
     for ( i = 0; i < nr_mods ; ++i )
     {
-        uint64_t start = pfn_to_paddr(mods[i].mod->mod_start);
-        uint64_t end = start + PAGE_ALIGN(mods[i].mod->mod_end);
+        uint64_t start = (uint64_t)mods[i].start;
+        uint64_t end = start + PAGE_ALIGN(mods[i].size);
 
         if ( i == this_mod )
             continue;
@@ -1399,12 +1399,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
+    for ( i = 0; i < bi->nr_modules; i++ )
     {
-        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
+        if ( bi->mods[i].start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
-        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
     }
 
     /*
@@ -1425,16 +1423,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          */
         bi->mods[xen].start = virt_to_maddr(_stext);
         bi->mods[xen].size = __2M_rwdata_end - _stext;
-
-        bi->mods[xen].mod->mod_start = paddr_to_pfn(bi->mods[xen].start);
-        bi->mods[xen].mod->mod_end = bi->mods[xen].size;
     }
 
-    bi->mods[0].headroom =
-        bzimage_headroom(bootstrap_map(bi->mods[0].mod),
-                         bi->mods[0].mod->mod_end);
-
-    bootstrap_map(NULL);
+    bi->mods[0].headroom = bzimage_headroom(
+        bootstrap_map_bm(&bi->mods[0]), bi->mods[0].size);
+    bootstrap_map_bm(NULL);
 
 #ifndef highmem_start
     /* Don't allow split below 4Gb. */
@@ -1535,9 +1528,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             {
                 move_memory(end - size + bm->headroom, bm->start, bm->size);
                 bm->start = (end - size);
-                bm->mod->mod_start = paddr_to_pfn(bm->start);
                 bm->size += bm->headroom;
-                bm->mod->mod_end = bm->size;
                 bm->relocated = true;
             }
         }
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823041.1237132 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gji-0001qD-EC; Mon, 21 Oct 2024 00:57:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823041.1237132; Mon, 21 Oct 2024 00:57: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 1t2gji-0001pu-9B; Mon, 21 Oct 2024 00:57:30 +0000
Received: by outflank-mailman (input) for mailman id 823041;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2gcS-0001i1-9C
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:50:00 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6522d4f6-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:49:59 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471616342247.8943247367;
 Sun, 20 Oct 2024 17:46:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6522d4f6-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471618; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=Fv1tyRxEi/bmv8ISik3CGJTEMws3IwYpieAIPAehIm0qomzABxCtPLyzWKp35V22ptyguIXFyU1nY4DId8tge14euLcyLM/sNkYS+eTShnQbtDPlYsnBu9mXkP7AKgHOz82hEJ2h9DSRzNmsQeDEJEXX++5BFmbQY1hF5vVkwRA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471618; h=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=4ag7BDYJg0dD1MtHECzU1bM5RUJR5RzORSBjMhAVv1w=; 
	b=ZuSiiyzG3fdtSHntSZ2ZXQ0JCKmEmjkcNfSWAn866GehqOYwbFKcguMzqadb67+r2qRoft9lRfMTdpw6u7NchdcEPq8z2n+xZYgyvTA/rExfH7bmDcY/IkGGaH5YHShIdFtALq+l8/vZdV3gXBmppRpn92KGhEYcxkFM8C1h04E=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471618;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=4ag7BDYJg0dD1MtHECzU1bM5RUJR5RzORSBjMhAVv1w=;
	b=qrosCpFNUEl73UQKhT5m7P6zLtUVfdIaDflloSBb0piuDWi1qcBtURdNJAm5A1vd
	ErsfO4PakwSy0IIiGN4a9B8fUT3amFzhGIIXhrsuztkjqd7N8uTeiUhgLmdQ3+dIv+R
	xysEpEr37/EdW/QUGzPxiYAip0kc9yWR+trlWo9U=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 28/38] x86/boot: drop the use of initial_images unit global
Date: Sun, 20 Oct 2024 20:46:03 -0400
Message-Id: <20241021004613.18793-29-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

---

Changes since v5:
- coding style changes
---
 xen/arch/x86/setup.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 0f8fb3c572c6..87b118cdcf1e 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -276,8 +276,6 @@ custom_param("acpi", parse_acpi_param);
 
 static const char *cmdline_cook(const char *p, const char *loader_name);
 
-static const struct boot_module *__initdata initial_images;
-
 struct boot_info __initdata xen_boot_info = {
     .loader = "unknown",
     .cmdline = "",
@@ -352,8 +350,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = initial_images[i].mod->mod_start;
-        unsigned long end = start + PFN_UP(initial_images[i].mod->mod_end);
+        unsigned long start = bi->mods[i].mod->mod_start;
+        unsigned long end = start + PFN_UP(bi->mods[i].mod->mod_end);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -370,14 +368,12 @@ void __init discard_initial_images(void)
     for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t start =
-            (uint64_t)initial_images[i].mod->mod_start << PAGE_SHIFT;
+            (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
 
-        init_domheap_pages(start,
-                           start + PAGE_ALIGN(initial_images[i].mod->mod_end));
+        init_domheap_pages(start, start + PAGE_ALIGN(bi->mods[i].mod->mod_end));
     }
 
     bi->nr_modules = 0;
-    initial_images = NULL;
 }
 
 static void __init init_idle_domain(void)
@@ -1404,8 +1400,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = bi->mods;
-
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
         if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 00:57:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 00:57:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823043.1237137 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2gji-0001wP-UK; Mon, 21 Oct 2024 00:57:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823043.1237137; Mon, 21 Oct 2024 00:57: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 1t2gji-0001vF-Lr; Mon, 21 Oct 2024 00:57:30 +0000
Received: by outflank-mailman (input) for mailman id 823043;
 Mon, 21 Oct 2024 00:57: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=Q0x4=RR=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t2ga6-000738-Ow
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 00:47:34 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0e7738f3-8f46-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 02:47:33 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729471594102634.8207739049702;
 Sun, 20 Oct 2024 17:46:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e7738f3-8f46-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729471595; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=DwBCWLzNDovqZO5A9SXMghcH2KD50zs29+J6GUIcLtpoCvmPaS1zrNs85gIQEX9BiTBElkSayoF3xl7ABzdrskKCHsDOCsc/6Hy4N6VRSCIuWkrJo+xJRfVsla12uuB7MTseHX4p+T7kCV5uGK4t4I7pxLN5zmJ4N9hcgvHNyrg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729471595; h=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=gBcmVTmdjlVx1YSjoPePx3/LQoLpGu8yyKS5g8B8j3Q=; 
	b=jyX2LyLDGO46yhvd0aPQxMj7fyBiJRf57HKzlL1nylqHBcBixsG49NhgY9e4Y1X4osqdJWicA7BrekyH4+DE5YsSilXZQJ4ECwX5DpV195SLKte3nMwRoD4SnhDeNfnyVipe+VDr2Bps9KD7pQ4zZ/e5ceYqnADpJd88sMSBiRk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729471595;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Reply-To;
	bh=gBcmVTmdjlVx1YSjoPePx3/LQoLpGu8yyKS5g8B8j3Q=;
	b=HRxnN92+I8POhxf1RYKBqGlJk64RR2HEYD1BDj4K2x44SzNZObo6HwVYTIrH6VGy
	IzcsEDOiqKtQ2S33Z7eNRDIAf+mapElmYN4c1E4FXL+IfOVWdMsVuiCQv3JU29CuhMC
	QalrGqlJUQZRb293r7/mGRMUioJXCAiGQdzd88ko=
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
To: xen-devel@lists.xenproject.org
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	jason.andryuk@amd.com,
	christopher.w.clark@gmail.com,
	stefano.stabellini@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>
Subject: [PATCH v7 09/38] x86/boot: transition relocation calculations to struct boot_module
Date: Sun, 20 Oct 2024 20:45:44 -0400
Message-Id: <20241021004613.18793-10-dpsmith@apertussolutions.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20241021004613.18793-1-dpsmith@apertussolutions.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

Use struct boot_module fields, start and size, when calculating the relocation
address and size. It also ensures that early_mod references are kept in sync.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
---
Changes since v6:
- introduce local s and l refs for start and size, shortening the lines while
  correcting the indentation style

Changes since v5:
- removed unnecessary paddr_to_pfn, allowing condition to collapse to one line
- correct a missed conversion from .mod->mod_start to .start
---
 xen/arch/x86/setup.c | 34 ++++++++++++++--------------------
 1 file changed, 14 insertions(+), 20 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 4e5d4055e7dd..b02391b887b1 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1507,7 +1507,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
              * move mod[0], we incorporate this as extra space at the start.
              */
             struct boot_module *bm = &bi->mods[j];
-            unsigned long size = PAGE_ALIGN(bm->headroom + bm->mod->mod_end);
+            unsigned long size = PAGE_ALIGN(bm->headroom + bm->size);
 
             if ( bm->relocated )
                 continue;
@@ -1519,15 +1519,13 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             if ( highmem_start && end > highmem_start )
                 continue;
 
-            if ( s < end &&
-                 (bm->headroom ||
-                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
+            if ( s < end && (bm->headroom || (end - size) > bm->start) )
             {
-                move_memory(end - size + bm->headroom,
-                            (uint64_t)bm->mod->mod_start << PAGE_SHIFT,
-                            bm->mod->mod_end);
-                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
-                bm->mod->mod_end += bm->headroom;
+                move_memory(end - size + bm->headroom, bm->start, bm->size);
+                bm->start = (end - size);
+                bm->mod->mod_start = paddr_to_pfn(bm->start);
+                bm->size += bm->headroom;
+                bm->mod->mod_end = bm->size;
                 bm->relocated = true;
             }
         }
@@ -1558,10 +1556,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t s = (uint64_t)bi->mods[i].mod->mod_start << PAGE_SHIFT;
+        uint64_t s = bi->mods[i].start;
 
-        reserve_e820_ram(&boot_e820, s,
-                         s + PAGE_ALIGN(bi->mods[i].mod->mod_end));
+        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(bi->mods[i].size));
     }
 
     if ( !xen_phys_start )
@@ -1639,8 +1636,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
                 for ( j = 0; j < bi->nr_modules; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(bi->mods[j].mod->mod_start) +
-                                   bi->mods[j].mod->mod_end;
+                    uint64_t end = bi->mods[j].start + bi->mods[j].size;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1714,12 +1710,10 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        set_pdx_range(bi->mods[i].mod->mod_start,
-                      bi->mods[i].mod->mod_start +
-                          PFN_UP(bi->mods[i].mod->mod_end));
-        map_pages_to_xen((unsigned long)mfn_to_virt(bi->mods[i].mod->mod_start),
-                         _mfn(bi->mods[i].mod->mod_start),
-                         PFN_UP(bi->mods[i].mod->mod_end), PAGE_HYPERVISOR);
+        unsigned long s = bi->mods[i].start, l = bi->mods[i].size;
+        set_pdx_range(paddr_to_pfn(s), paddr_to_pfn(s) + PFN_UP(l));
+        map_pages_to_xen((unsigned long)maddr_to_virt(s), maddr_to_mfn(s),
+                         PFN_UP(l), PAGE_HYPERVISOR);
     }
 
 #ifdef CONFIG_KEXEC
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 06:48:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 06:48:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823197.1237152 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2mCu-0003kg-09; Mon, 21 Oct 2024 06:48:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823197.1237152; Mon, 21 Oct 2024 06: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 1t2mCt-0003kZ-SR; Mon, 21 Oct 2024 06:47:59 +0000
Received: by outflank-mailman (input) for mailman id 823197;
 Mon, 21 Oct 2024 06:47: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=JE5p=RR=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t2mCs-0003kT-3v
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 06:47:58 +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 6651b993-8f78-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 08:47:56 +0200 (CEST)
Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com
 [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-65-FSq77O53PxCTYm0ykJzBiw-1; Mon, 21 Oct 2024 02:47:50 -0400
Received: by mail-wm1-f71.google.com with SMTP id
 5b1f17b1804b1-431604a3b47so23449675e9.3
 for <xen-devel@lists.xenproject.org>; Sun, 20 Oct 2024 23:47:50 -0700 (PDT)
Received: from eisenberg.fritz.box
 (200116b82d449800aee93296d73e68da.dip.versatel-1u1.de.
 [2001:16b8:2d44:9800:aee9:3296:d73e:68da])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f570f89sm45821675e9.7.2024.10.20.23.47.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 20 Oct 2024 23:47:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6651b993-8f78-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729493274;
	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=teyMIfpNNQjSsb5MbXyVqzP1VIlH5kdTfogRdrP4p8U=;
	b=H6yyz7ZQHfOJWxDQybm0UBGe0/oNi9DhJrT6zT7tpjtTexTcwOt0JzQY8Amy4NLVvnVbjA
	Xi2DatgmBicfvR3VXskiKwJhoV3hy3sOnt5UHDm3IIVCiL+6grEtWOk5WBE54nubgIXcXi
	QBWW19Wvy8uPGrR8ZoWXTz7SD4722Ao=
X-MC-Unique: FSq77O53PxCTYm0ykJzBiw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729493269; x=1730098069;
        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=teyMIfpNNQjSsb5MbXyVqzP1VIlH5kdTfogRdrP4p8U=;
        b=DSm/LWnZTtuFpTdnPsoBBIQyF2B2O5wyJoU/Hn9CyYZPVQbOljyyRHBEH0uACp5JOC
         VK/SZYz7toL7Y9016kAHdQdqBwqVSmHFvm+hJOsKhXy/wsEUXekk44mssgyQcYCBSqeY
         rh3IaShBGA7t7fuyPr9duvDxQsG4QDNUDxcuccwCH9rn6UwbHubs+CiJwyaKRcrs4iys
         5sCXjbZnUlNNuAzBK0/lPxfck2ySKSiaWY3vdXVT7988RjPIKEek2aM5ISAHPKU4b/0B
         BEIt7kST9NVopY5DEFUEzbUKWQt57+QF2r3ktGAJF4MLqgwOYN9vNcQrBs69QCTkUe64
         wx+Q==
X-Forwarded-Encrypted: i=1; AJvYcCV9bUvPh89TbDLrDeLWKneMhbNcrPgaXfmYoU4BCHDJp/Be2idmc7cpmbjTArRHBTTJoHjh2yW1gvc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7psqHY2h+QSQH5Ad5ZRFTbDl1ptrJGHwx2lQlQj6bNVaxSy2K
	d0cOd50NaxiBA+l6+WC+fXbzDQRYUBYtQJgel6NJEEy31JZOyC+6Gr8TxdHiKIrJu6/h59ondYO
	ORPk05TfL75y24l7j3J0YNIIFhKQpjlEGeDEL0gv7/2OGN+TSelFKbTLtCdhIpUDT
X-Received: by 2002:a05:600c:3591:b0:431:4c14:abf4 with SMTP id 5b1f17b1804b1-4316163a1b2mr84025645e9.14.1729493269429;
        Sun, 20 Oct 2024 23:47:49 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFVZgn1S+/IbVUHVqZogTbkz5rvgpgAowACslYYkYZ99T9pAyCEi5NExPZQP+nHcWcbmjh9Bw==
X-Received: by 2002:a05:600c:3591:b0:431:4c14:abf4 with SMTP id 5b1f17b1804b1-4316163a1b2mr84025225e9.14.1729493268971;
        Sun, 20 Oct 2024 23:47:48 -0700 (PDT)
Message-ID: <1f90d885f0e8dc2e8d9b2b7e88700b4cdb19d84c.camel@redhat.com>
Subject: Re: [PATCH 13/13] PCI: Deprecate pci_intx(), pcim_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: Heiner Kallweit <hkallweit1@gmail.com>, Alex Williamson
 <alex.williamson@redhat.com>, Damien Le Moal <dlemoal@kernel.org>, Niklas
 Cassel <cassel@kernel.org>, Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj
 Natikar <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,
 Benjamin Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
 Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov
 <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,  Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>,  Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>,  Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>,  Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>,  Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu
 <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>, Ankit Agrawal
 <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>, Reinette Chatre
 <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Mon, 21 Oct 2024 08:47:46 +0200
In-Reply-To: <20241018234537.GA770692@bhelgaas>
References: <20241018234537.GA770692@bhelgaas>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Fri, 2024-10-18 at 18:45 -0500, Bjorn Helgaas wrote:
> On Wed, Oct 16, 2024 at 10:53:16AM +0200, Philipp Stanner wrote:
> > On Wed, 2024-10-16 at 10:43 +0200, Heiner Kallweit wrote:
> > > On 16.10.2024 08:57, Philipp Stanner wrote:
> > > > On Tue, 2024-10-15 at 13:53 -0600, Alex Williamson wrote:
> > > > > On Tue, 15 Oct 2024 20:51:23 +0200
> > > > > Philipp Stanner <pstanner@redhat.com> wrote:
> > > > >=20
> > > > > > pci_intx() and its managed counterpart pcim_intx() only
> > > > > > exist
> > > > > > for
> > > > > > older
> > > > > > drivers which have not been ported yet for various reasons.
> > > > > > Future
> > > > > > drivers should preferably use pci_alloc_irq_vectors().
> > > > > >=20
> > > > > > Mark pci_intx() and pcim_intx() as deprecated and encourage
> > > > > > usage
> > > > > > of
> > > > > > pci_alloc_irq_vectors() in its place.
> > > > >=20
> > > > > I don't really understand this.=C2=A0 As we've discussed
> > > > > previously
> > > > > pci_alloc_irq_vectors() is, unsurprisingly, for allocating
> > > > > PCI
> > > > > IRQ
> > > > > vectors while pci_intx() is for manipulating the INTx disable
> > > > > bit
> > > > > on
> > > > > PCI devices.=C2=A0 The latter is a generic mechanism for
> > > > > preventing
> > > > > PCI
> > > > > devices from generating INTx, regardless of whether there's a
> > > > > vector
> > > > > allocated for it.=C2=A0 How does the former replace the latter an=
d
> > > > > why
> > > > > do
> > > > > we
> > > > > feel the need to deprecate the latter?
> > > > >=20
> > > > > It feels like this fits some narrow narrative and makes all
> > > > > users
> > > > > of
> > > > > these now deprecated functions second class citizens.=C2=A0 Why?=
=C2=A0
> > > > > At
> > > > > it's
> > > > > root these are simply providing mask and set or mask and
> > > > > clear
> > > > > register
> > > > > bit operations.=C2=A0 Thanks,
> > > >=20
> > > > I got the feeling from the RFC discussion that that was
> > > > basically
> > > > the
> > > > consensus: people should use pci_alloc_irq_vectors(). Or did I
> > > > misunderstand Andy and Heiner?
> > > >=20
> > > I think there are two different use cases for pci_intx().
> > > At first there are several drivers where the direct usage of
> > > pci_intx()
> > > can be eliminated by switching to the pci_alloc_irq_vectors()
> > > API.
> > >=20
> > > And then there's usage of pci_intx() in
> > > drivers/vfio/pci/vfio_pci_intrs.c
> > > drivers/xen/xen-pciback/conf_space_header.c
> > > There we have to keep the (AFAICS unmanaged) pci_intx() calls.
> >=20
> > There is also the usage within PCI itself, in MSI. Patch =E2=84=968 tou=
ches
> > that.
> >=20
> > It's why I think this series should land before anyone should port
> > direct pci_intx() users to the irq vectors function, because the
> > latter
> > also uses pci_intx() and its own devres, which sounds explosive to
> > me.
> >=20
> > > > I'm perfectly happy with dropping this patch and continue
> > > > offering
> > > > pci{m}_intx() to users, since after removing that hybrid
> > > > hazzard I
> > > > don't see any harm in them anymore.
>=20
> So is the bottom line that we should drop *this* patch and apply the
> rest of the series?

Yes Sir, that's the idea

Regards,
P.

>=20
> > > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > > > ---
> > > > > > =C2=A0drivers/pci/devres.c | 5 ++++-
> > > > > > =C2=A0drivers/pci/pci.c=C2=A0=C2=A0=C2=A0 | 5 ++++-
> > > > > > =C2=A02 files changed, 8 insertions(+), 2 deletions(-)
> > > > > >=20
> > > > > > diff --git a/drivers/pci/devres.c b/drivers/pci/devres.c
> > > > > > index 6f8f712fe34e..4c76fc063104 100644
> > > > > > --- a/drivers/pci/devres.c
> > > > > > +++ b/drivers/pci/devres.c
> > > > > > @@ -435,7 +435,7 @@ static struct pcim_intx_devres
> > > > > > *get_or_create_intx_devres(struct device *dev)
> > > > > > =C2=A0}
> > > > > > =C2=A0
> > > > > > =C2=A0/**
> > > > > > - * pcim_intx - managed pci_intx()
> > > > > > + * pcim_intx - managed pci_intx() (DEPRECATED)
> > > > > > =C2=A0 * @pdev: the PCI device to operate on
> > > > > > =C2=A0 * @enable: boolean: whether to enable or disable PCI INT=
x
> > > > > > =C2=A0 *
> > > > > > @@ -443,6 +443,9 @@ static struct pcim_intx_devres
> > > > > > *get_or_create_intx_devres(struct device *dev)
> > > > > > =C2=A0 *
> > > > > > =C2=A0 * Enable/disable PCI INTx for device @pdev.
> > > > > > =C2=A0 * Restore the original state on driver detach.
> > > > > > + *
> > > > > > + * This function is DEPRECATED. Do not use it in new code.
> > > > > > + * Use pci_alloc_irq_vectors() instead (there is no
> > > > > > managed
> > > > > > version, currently).
> > > > > > =C2=A0 */
> > > > > > =C2=A0int pcim_intx(struct pci_dev *pdev, int enable)
> > > > > > =C2=A0{
> > > > > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> > > > > > index 7ce1d0e3a1d5..dc69e23b8982 100644
> > > > > > --- a/drivers/pci/pci.c
> > > > > > +++ b/drivers/pci/pci.c
> > > > > > @@ -4477,11 +4477,14 @@ void pci_disable_parity(struct
> > > > > > pci_dev
> > > > > > *dev)
> > > > > > =C2=A0}
> > > > > > =C2=A0
> > > > > > =C2=A0/**
> > > > > > - * pci_intx - enables/disables PCI INTx for device dev
> > > > > > + * pci_intx - enables/disables PCI INTx for device dev
> > > > > > (DEPRECATED)
> > > > > > =C2=A0 * @pdev: the PCI device to operate on
> > > > > > =C2=A0 * @enable: boolean: whether to enable or disable PCI INT=
x
> > > > > > =C2=A0 *
> > > > > > =C2=A0 * Enables/disables PCI INTx for device @pdev
> > > > > > + *
> > > > > > + * This function is DEPRECATED. Do not use it in new code.
> > > > > > + * Use pci_alloc_irq_vectors() instead.
> > > > > > =C2=A0 */
> > > > > > =C2=A0void pci_intx(struct pci_dev *pdev, int enable)
> > > > > > =C2=A0{
> > > > >=20
> > > >=20
> > > >=20
> > >=20
> >=20
>=20



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 07:40:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 07:40:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823206.1237173 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2n1K-0005A0-1T; Mon, 21 Oct 2024 07:40:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823206.1237173; Mon, 21 Oct 2024 07: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 1t2n1J-00059K-Sh; Mon, 21 Oct 2024 07:40:05 +0000
Received: by outflank-mailman (input) for mailman id 823206;
 Mon, 21 Oct 2024 07:40: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=Cz9x=RR=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1t2n1I-0004Lr-6a
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 07:40:04 +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 aeb65ee2-8f7f-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 09:40:02 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-539e8607c2aso4324268e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 00:40:02 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a22456503sm411931e87.306.2024.10.21.00.40.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 00:40:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aeb65ee2-8f7f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729496402; x=1730101202; 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=ut6tdXFoieCwDzjCk3rSVYe/V5H9QVhV/RCoAHnEImI=;
        b=kqtVQRRdAzhgsHApEHHYKH5rzjJhYlsNObz6UV60JnkdTENQDOjc73KQVF9ryCqx/a
         YOzcRABaj8dc9jejZ5uSHS4QzyDZdjxW0RtLJhtFZ9ygdbZ1ZtHTUNvfC96PwlhWYSt5
         S0iZ4BPtjyruceYIsnhs50iZtHmKMJTEy5lbQupwWvR+28IL4lFyIFoBPO2vrGH128Yr
         KZekiTbmCuZo6QDrA6VtbHav1l/HJv9+Kv0MH6g4PMRjPDVUfE/1WhJEzT98eIeRkSkO
         4ai1+O0bxH1CiEyABZkroLb02M6yA+EiyvFQZoYR+4h6LD1oJv9aSw5in0iFDeKgpRD8
         Gsow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729496402; x=1730101202;
        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=ut6tdXFoieCwDzjCk3rSVYe/V5H9QVhV/RCoAHnEImI=;
        b=gJ/vW8a5c6J5dicWMgw2N1fKIkieBjYTq/mJkSkgesXfxDcpnwvwmLk+7Ko5nT1dmN
         V2CKBP07vqkdJrFRAEgj0Ts4KaqXlm+ZFtduCSlJmPfGWmDZn4ydHJ+cIXPVU2iM1nTn
         MgDg3adDxUMwoT07nNSoK+zT+89SvKvhNo32GG+kja9cfUNL+LiNnuWtNWdKZ/cFZdJy
         A3r8IMDmNVDIgNVjjT/GNolt8zIniZLQzSn63FkfSFm4ucMqr/TzcW6L3bH6rsKCAZTt
         bAf+bgDpA9jbKd+Lw7dZoV8S82NbtOZJ9HBRcY1Mcuc7pY0zAd3Km60c0+yJbm3YSrTZ
         H6qQ==
X-Forwarded-Encrypted: i=1; AJvYcCUgDl6m10LuwbeyJnI6XhKovNsh099rsdWA0KEai11LnXxPldbdxDJa8A1AdNx25d5ZWQQSUo5Ed/8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxi1/Z+MZO7n4YebJLTihO/1SuP7k9ZHmjHHBXU7/6wmaRXS0cb
	hZ+jPkQVurfiV3QWN90dNimnj3jARwmAT/1hDWceKZlMjuXdahRe
X-Google-Smtp-Source: AGHT+IHQciL+iTlfAU599XwSCdWoMZD5RsI/tADgn8OXsviefzQLziznjymiXZ5JCWF6gR0gAzu4Hg==
X-Received: by 2002:a05:6512:3a95:b0:539:ee0d:2bb4 with SMTP id 2adb3069b0e04-53a154b2cb6mr5122358e87.45.1729496402045;
        Mon, 21 Oct 2024 00:40:02 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Subject: [PULL v1 1/1] hw/xen: Avoid use of uninitialized bufioreq_evtchn
Date: Mon, 21 Oct 2024 09:39:57 +0200
Message-ID: <20241021073957.1851500-2-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241021073957.1851500-1-edgar.iglesias@gmail.com>
References: <20241021073957.1851500-1-edgar.iglesias@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

Avoid use of uninitialized bufioreq_evtchn. It should only
be used if buffered IOREQs are enabled.

Resolves: Coverity CID 1563383
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
---
 hw/xen/xen-hvm-common.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 7d2b72853b..7ffbbfea23 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -752,9 +752,10 @@ static int xen_map_ioreq_server(XenIOState *state)
         return -1;
     }
 
-    trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
-
-    state->bufioreq_remote_port = bufioreq_evtchn;
+    if (state->has_bufioreq) {
+        trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
+        state->bufioreq_remote_port = bufioreq_evtchn;
+    }
 
     return 0;
 }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 07:40:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 07:40:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823205.1237162 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2n1I-0004kD-Mn; Mon, 21 Oct 2024 07:40:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823205.1237162; Mon, 21 Oct 2024 07:40: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 1t2n1I-0004jZ-K2; Mon, 21 Oct 2024 07:40:04 +0000
Received: by outflank-mailman (input) for mailman id 823205;
 Mon, 21 Oct 2024 07:40: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=Cz9x=RR=gmail.com=edgar.iglesias@srs-se1.protection.inumbo.net>)
 id 1t2n1H-0004Lr-Dw
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 07:40:03 +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 ad7397fc-8f7f-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 09:40:00 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-539e59dadebso5242777e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 00:40:00 -0700 (PDT)
Received: from gmail.com (213-67-3-247-no600.tbcn.telia.com. [213.67.3.247])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53a224313fbsm411183e87.219.2024.10.21.00.39.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 00:39:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad7397fc-8f7f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729496400; x=1730101200; 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=GnVZgiNfswIw7OgFquKKUJodllKwremLFomd7GhQzKY=;
        b=nbjAzIRoH77WKpvZiI8eG4nD5CbTceN9t7AIwe9bpp/JQnxBPNqFqffXtP4bTA4J3u
         xws7cyofw+1D88c0RyTV46+nSN3woPtR1ou30+XJg7aelfnJxKP1DEiYtl2Lvw1NMK2Q
         sOsvl7WJxpFdcULXRlg4vvoqTC+B9qguTrNMOBdEBDiS6IFdgLANQubgfQnvBgoTvWHY
         arZ+f77oPaC3+khX+P771wn7Vxl3ya5gh1LYJReHih/Wk+GmgtQU5wBxIMdVYxuhQvL4
         2g7JOH9h8hcmEqokbpWMLobur8cr8MbirZ4UKDrxlx7lVAQ/VbSHtJkTunJdc+OejFSX
         F9aA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729496400; x=1730101200;
        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=GnVZgiNfswIw7OgFquKKUJodllKwremLFomd7GhQzKY=;
        b=KYMRSTxLF1GdTgvHEeezL37NU3oIzfGvFpt3Q5YBWT4R1lVxhPyfKatHQitnj8sdva
         irdYTxx4epACc7p9pXGmENuwKtcG4fps0Mj69KPqqTBdzfA9861Ra8lcqCSnzy1ziFWu
         GFC7FgwW7hUBemJSKgkMO3ZGg8LCzn8pR41Kk/DHrswwdVm1kA/GoZ1f8vmyweuVKLPP
         YCq4BqNH4XRp17bMJdJToYcPZwF2ecO4SrD0JzDrkFzZMDmhjTg7Q+ZRoeLcFy6exkSg
         fe4wtrtGQw4CGkS6Bc4BuSjkgIpRA/9WoTPyFsIwDzCSY06Z0cZ3fiPC6CtHg2HQO2Nv
         DDgg==
X-Forwarded-Encrypted: i=1; AJvYcCXJba00dQF9V4/YkOjTh0MM1BtbudHiqFU951E7IkUTB3Je6QZiu/UKazb813svjezBf9WyH1mrXZ4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyZjbWLzIpXd6C5stNvnKjP0dAPnjf2AB1W0IN2+9UgDUkQGTWn
	n53befapaNUS5h0CLxS4lmXd2ZJgkLKwcKi1VGarcc7ObamYEhKv
X-Google-Smtp-Source: AGHT+IFaCtOXhq99BOX5U08lfOxTiedEUSHJvwsz8f8iv4Hr3cpYh8DzUX4+obfzdliyy3EL8K9qlQ==
X-Received: by 2002:a05:6512:b08:b0:535:3ca5:daa with SMTP id 2adb3069b0e04-53a1520bd21mr4456242e87.7.1729496399802;
        Mon, 21 Oct 2024 00:39:59 -0700 (PDT)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: qemu-devel@nongnu.org
Cc: sstabellini@kernel.org,
	anthony@xenproject.org,
	paul@xen.org,
	peter.maydell@linaro.org,
	edgar.iglesias@amd.com,
	xen-devel@lists.xenproject.org
Subject: [PULL v1 0/1] Xen Queue
Date: Mon, 21 Oct 2024 09:39:56 +0200
Message-ID: <20241021073957.1851500-1-edgar.iglesias@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>

The following changes since commit f1dd640896ee2b50cb34328f2568aad324702954:

  Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2024-10-18 10:42:56 +0100)

are available in the Git repository at:

  https://gitlab.com/edgar.iglesias/qemu.git tags/edgar/xen-queue-2024-10-21.for-upstream

for you to fetch changes up to 676a68fd4850924db73548c9cb20ea484709708c:

  hw/xen: Avoid use of uninitialized bufioreq_evtchn (2024-10-21 07:53:21 +0200)

----------------------------------------------------------------
Edgars Xen queue.

----------------------------------------------------------------
Edgar E. Iglesias (1):
      hw/xen: Avoid use of uninitialized bufioreq_evtchn

 hw/xen/xen-hvm-common.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

-- 
2.43.0


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 07:57:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 07:57:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823222.1237182 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2nHk-0003C3-FF; Mon, 21 Oct 2024 07:57:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823222.1237182; Mon, 21 Oct 2024 07:57: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 1t2nHk-0003Bw-BK; Mon, 21 Oct 2024 07:57:04 +0000
Received: by outflank-mailman (input) for mailman id 823222;
 Mon, 21 Oct 2024 07:57: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2nHi-00032O-SE
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 07:57:02 +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 0df2d04f-8f82-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 09:57:01 +0200 (CEST)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-4316a44d1bbso14205755e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 00:57:01 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37ee0ba7480sm3607062f8f.113.2024.10.21.00.57.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 00:57:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0df2d04f-8f82-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729497421; x=1730102221; darn=lists.xenproject.org;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=SoSl7kvBeNHYgqJAPlrDaIhKUnzvMFR29dB37Ux8+8g=;
        b=OQSzRwPSvLc3NOmmIxtUl/ItOGC/uc5fo9AcfR5JvFfHy6Dax3QpvYRvnhO9Ejs4PU
         mnjy85EyQux38OPB/zE6AwoPvmjW9rUdldvGhPUKJXRJVciqV+1JxgoXJHrgtgArc215
         E7/wV6N8MqgKCFvw8Qseyg9PPG+cw5CiyKgdA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729497421; x=1730102221;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=SoSl7kvBeNHYgqJAPlrDaIhKUnzvMFR29dB37Ux8+8g=;
        b=n1c0zi00R3pcgaI/O6GHZVR4GEa5lC51M1Fkq6TTn6s7xl6mpYlP5AbuwInbK535Jt
         fZL86lYQkG+/4zODc9ayHGAOmiHFX/jKVLYFt4bNWTvG5z+i7tq+cXmiEq0a+SRWE/la
         QyRwceOAtlmORXDJRSZTJJHZfcOrOTf1TcLC3l2lMmGm2p04Ua1Tez3aQ33jF5P5RyHY
         QvqT4iaWWQCwpBA+kUvVy/fli60qsO/FLNHXQ4trM5Cn5Zf24qE0w8CD6Fbu04MRLXj1
         uIO428W9bDiYWNFCaoutJlrwGyRZakSR36JqZe54L9KzvolbUDu543V8fVgNMf/Jw8cg
         DaXw==
X-Forwarded-Encrypted: i=1; AJvYcCVZrhB9rrW92CEHC4QDBTUt5FxHQktBMxa8U+P4OQ+6iXNPgp43yRlkpYUK162S4TT2U4MiASzcbA4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YywAreZ9fncWv7e648k9CTK82aPXYSc5nqGbBgWqb4YZe4+vvhQ
	AxqGwCgtThPA473nErYteXlFbIUiIepNuoxWmyfXQFIkpg2x9/x0jnPUMYouQsQ=
X-Google-Smtp-Source: AGHT+IHW1+7cVnpi8HuXJ1ynA+XGEnpIVTAH2NfUBQFh4DWHBRKGTWE1zGRDlQTvvLmdwVjTNrMTbA==
X-Received: by 2002:a05:600c:3b9b:b0:42c:b037:5f9d with SMTP id 5b1f17b1804b1-43161636f67mr80340725e9.3.1729497421008;
        Mon, 21 Oct 2024 00:57:01 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 21 Oct 2024 08:56:55 +0100
Message-Id: <D51BO0DX4047.IXQS05RISYW0@cloud.com>
Subject: Re: [PATCH v1 2/5] xen/riscv: implement maddr_to_virt()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: <oleksii.kurochko@gmail.com>, "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>, "Julien Grall" <julien@xen.org>,
 "Stefano Stabellini" <sstabellini@kernel.org>,
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com> <2565f369-96e3-4c28-b752-53b1b6a0d968@suse.com> <aebdb0df0ad9fb13db9929f131737bf5479cdf29.camel@gmail.com>
In-Reply-To: <aebdb0df0ad9fb13db9929f131737bf5479cdf29.camel@gmail.com>

On Fri Oct 18, 2024 at 2:17 PM BST, oleksii.kurochko wrote:
> On Thu, 2024-10-17 at 16:55 +0200, Jan Beulich wrote:
> > On 16.10.2024 11:15, Oleksii Kurochko wrote:
> > > --- a/xen/arch/riscv/include/asm/mm.h
> > > +++ b/xen/arch/riscv/include/asm/mm.h
> > > @@ -25,8 +25,12 @@
> > > =C2=A0
> > > =C2=A0static inline void *maddr_to_virt(paddr_t ma)
> > > =C2=A0{
> > > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > > -=C2=A0=C2=A0=C2=A0 return NULL;
> > > +=C2=A0=C2=A0=C2=A0 /* Offset in the direct map, accounting for pdx c=
ompression */
> > > +=C2=A0=C2=A0=C2=A0 unsigned long va_offset =3D maddr_to_directmapoff=
(ma);
> >=20
> > Why the mentioning of PDX compression?
> It was mentioned because if PDX will be enabled maddr_to_directmapoff()
> will take into account PDX stuff.
>
> >  At least right now it's unavailable
> > for RISC-V afaics. Are there plans to change that any time soon?
> At the moment, I don't have such plans, looking at available platform
> there are no a lot of benefits of having PDX compression now.
>
> Perhaps it would be good to add
> BUILD_BUG_ON(IS_ENABLED(PDX_COMPRESSION)) for the places which should
> be updated when CONFIG_PDX will be enabled.
>
> ~ Oleksii

I'd just forget about it unless you ever notice you're wasting a lot of ent=
ries
in the frame table due to empty space in the memory map. Julien measured th=
e
effect on Amazon's Live Migration as a 10% improvement in downtime with PDX
off.

PDX compression shines when you have separate RAM banks at very, very
disparately far addresses (specifics in pdx.h). Unfortunately the flip side=
 of
this compression is that you get several memory accesses for each single
pdx-(to/from)-mfn conversion. And we do a lot of those. One possible soluti=
on
would be to alt-patch the values in the code-stream and avoid the perf-hit,=
 but
that's not merged. Jan had some patches but that didn't make it to staging,
IIRC.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 08:01:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 08:01:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823232.1237191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2nMQ-0005kx-0a; Mon, 21 Oct 2024 08:01:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823232.1237191; Mon, 21 Oct 2024 08: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 1t2nMP-0005kq-UL; Mon, 21 Oct 2024 08:01:53 +0000
Received: by outflank-mailman (input) for mailman id 823232;
 Mon, 21 Oct 2024 08:01: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2nMO-0005kk-OA
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 08:01:52 +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 ba3a2219-8f82-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 10:01:50 +0200 (CEST)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-431481433bdso43865935e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 01:01:50 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f57e66asm47939415e9.13.2024.10.21.01.01.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 01:01:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba3a2219-8f82-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729497710; x=1730102510; 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=b5CztZD253iwPne0j5dpy1DVfOcw8GxwGQPFHqNnCTQ=;
        b=pm47wQwj/D6wgSa85/1gBy15nclUHvwYAFVUt8Y/7hWTXhOp+h6c1wmdAJ535VXO8a
         bNehK30982Ljnmz2p7j43AEZwN9CrbFVim6piqK0qVQig9Et8/NJDUj0Lf0rnpjZrkSp
         4QwrHtaDKpGrGa6J4Cw1QRPirJUTn9W4xvrfM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729497710; x=1730102510;
        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=b5CztZD253iwPne0j5dpy1DVfOcw8GxwGQPFHqNnCTQ=;
        b=W0m1SLyK5N8URhqGnMgR3zERw/79j+u+yW+YegOTIKGpAYIJLOQSV2LHUD4+v3YhZR
         Z+B032UuyXw6mUnsrgJ6Qt1hR/zlLZjLA+sUZHXWFTs1kN2V+dFXlmW6eam+ExSAOgBZ
         i80/NVnMbM4NdNFEn+IKbo1RipBPZURfWsi3kbZEbFhqVbBQLW8oeGyXZhFoIR8CL93p
         ig+Algb7r6KAiQ/1fOttGhQQXbXgQzGHV+4ODH1RNkIyypKL5ngAX+WmocVxOCpx6hfN
         cqsM2O6rv5+hBVCkvcO6x1ohv8c3dGcwRh997gXV/5JoGlg/gsLz2Cfn/zxHoA1wo5SX
         2AuQ==
X-Gm-Message-State: AOJu0YxnwuYQU4Jv1mTlg/9sd+YfTyXfUp3ZWnzwpzF6J7MzWWcdyN2p
	tlRSM9qDVwA+EfStLTMyRr9q7xOVrhQJdpoMCmi6VihsHB7cacXgCYU70nRRWgA=
X-Google-Smtp-Source: AGHT+IGyZcU3xWApCGtJ7eHgJq8TR0dl3Zs2cELwEwn4QQUtGojLfNmGD9cLUlGBXydg05H+xhFnNw==
X-Received: by 2002:a05:600c:474e:b0:42c:b52b:4335 with SMTP id 5b1f17b1804b1-4316162875bmr83229645e9.10.1729497710059;
        Mon, 21 Oct 2024 01:01:50 -0700 (PDT)
Date: Mon, 21 Oct 2024 10:01:48 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
Message-ID: <ZxYKbMzsjtcKlTdR@macbook.local>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
 <ZxJJZvOCQLzU_Q5s@macbook.local>
 <CACHz=Zif6tirzF3QSLYLOvDFuaE3o9=Cu+ybm4ns7vNkAKCROg@mail.gmail.com>
 <ZxJbmIU4OUmeO3xq@macbook.local>
 <CACHz=ZiHp40-MkkbfnnNi2yQaB89_PA9VU_cLrTX4LHY6o7j6w@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CACHz=ZiHp40-MkkbfnnNi2yQaB89_PA9VU_cLrTX4LHY6o7j6w@mail.gmail.com>

On Fri, Oct 18, 2024 at 02:45:59PM +0100, Frediano Ziglio wrote:
> On Fri, Oct 18, 2024 at 1:59 PM Roger Pau Monné <roger.pau@citrix.com> wrote:
> >
> > On Fri, Oct 18, 2024 at 01:48:27PM +0100, Frediano Ziglio wrote:
> > > On Fri, Oct 18, 2024 at 12:41 PM Roger Pau Monné <roger.pau@citrix.com> wrote:
> > > >
> > > > On Thu, Oct 17, 2024 at 02:31:19PM +0100, Frediano Ziglio wrote:
> > > > > +#define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
> > > > > +
> > > > > +ENTRY(dummy_start)
> > > > >
> > > > >  SECTIONS
> > > > >  {
> > > > >    /* Merge code and data into one section. */
> > > > > -  .text : {
> > > > > +  .text TEXT_START : {
> > > > > +        /* Silence linker warning, we are not going to use it */
> > > > > +        dummy_start = .;
> > > > > +
> > > > > +        /* Declare below any symbol name needed.
> > > > > +         * Each symbol should be on its own line.
> > > > > +         * It looks like a tedious work but we make sure the things we use.
> > > > > +         * Potentially they should be all variables. */
> > > >
> > > > The style is wrong for the opening and closing comment delimiters.
> > > >
> > > > I think it would be best if this was written in a more natural style.
> > > >
> > > > /*
> > > >  * Any symbols used should be declared below, this ensures which
> > > >  * symbols are visible to the 32bit C boot code.
> > > >  */
> > > >
> > >
> > > But why to remove the "Potentially they should be all variables.".
> > > Surely something not written is more clear than something written, but
> > > on the other way it carries no information.
> >
> > I'm not sure I understand why this is helpful: either they are
> > mandated to be only variables, and hence the "potentially" is wrong, or
> > they are not, in which case I don't see why spelling a desire for they
> > to be only variables is helpful if it's not a strict requirement.
> >
> 
> As normal, rules often have exceptions. Most of the functions (so
> code) in Xen is 64 bit, so you don't want to use them. However, saying
> you have a function in head.S written in assembly for 32 bit (or any
> other functions written for 32 bit), you want the possibility to call
> it. For instance you could export from head.S the function to output
> to serial in the future.
> 
> About variables... are all variables fine to be accessed from these
> functions? Probably yes if they have no pointers in them. If they have
> pointers... that's another matter. Does the pointer have relocation?
> Is it going to be used at the final defined program location or only
> during initialization? To make an example, you could override a NULL
> pointer (that is, without relocation) to a current symbol, if this
> pointer is used after Xen is moved into its final position it will
> become invalid. If, on the other hand, the pointer had relocation
> potentially it will be automatically be relocated.

IMO comments are meant to clarify parts of the code.  A comment that
uses a conditional like "Potentially" introduces more ambiguity than
it removes, unless the restriction is stated in the comment itself.

I think you either you expand the comment to mention exactly which
kind of symbols can be declared, or you make the comment a more
restrictive one to avoid the ambiguity: "Symbols declared below should
all be variables."

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 08:52:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 08:52:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823241.1237202 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2o9B-00049n-Me; Mon, 21 Oct 2024 08:52:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823241.1237202; Mon, 21 Oct 2024 08: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 1t2o9B-00049g-IS; Mon, 21 Oct 2024 08:52:17 +0000
Received: by outflank-mailman (input) for mailman id 823241;
 Mon, 21 Oct 2024 08:52: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2o9A-00049K-2k
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 08:52:16 +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 c43d27fa-8f89-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 10:52:13 +0200 (CEST)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-37d808ae924so2884513f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 01:52:13 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f5cc921sm49291895e9.46.2024.10.21.01.52.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 01:52:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c43d27fa-8f89-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729500733; x=1730105533; 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=qXZGc179aRo893lr/4rYKQQ5skWwgoiP4aS1jfTyaK8=;
        b=sesiqYpojjZsNAFMXRJ7T0bYqHPl9SD3FvbukgIHyxll4bud9SCmAkQ4ZeO+8armph
         Xl7TzXGfkeOwju1mZGoRzSZ7iokiTZgk21wBDZvlRs1CSUSxs2NMoGEuu9ZY/8i39G7j
         Qrgdd2/QAsS30pz7BWX1/6lcbQq9Ow5S6Ra50=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729500733; x=1730105533;
        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=qXZGc179aRo893lr/4rYKQQ5skWwgoiP4aS1jfTyaK8=;
        b=Tx7EK5VkgaFRFUld11XRjsbcfXgyaLYL2IQD/UquAoNAyb1JvsSqSpRpf+pT9lDp1O
         k+HEaaIB8BP5FXVAdZ+nKcWDakERRLlHhaFMN38AIAKBASKKEna2/np4h0LruFQXSf43
         vNN4horf63IGMNVLSO8Ej4rfgqraUWQtnukqVBljqjRjNRtfXgTeULPtiUZTSj1GIgiF
         8rIr+4ZUeJa7L6U1hxMk72t04AwbcPySE3Nv8aVOEVSUm5hh5kMux5Jwk8vUM/8ILrZj
         GBVcz1/L4hH700snWnqZ70PkyN6JFXs5qgySMxGCLydGNyweGWDz//bANCnwBpdjyOlo
         4TRA==
X-Forwarded-Encrypted: i=1; AJvYcCU3x2h/q4hVx1aD3wxI7ebPW/fhyMMzQ4Kf7h7bR8yxLqjj0cvVL77vhgDw7x8ya/0bi6yl/dtwh4I=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx9KQxERKQtJg0ah0+YDC8nkWO9Do2lOr8xPxk5+N6FCPQ+COyg
	EqjxN/xUbFsco5BzI+MTPCZkUuwUzKdCH8qKrYo+AW+JClVkkd/AjZCrPQ0+wdU=
X-Google-Smtp-Source: AGHT+IFCCfi6wsXlK5MqYcdLxGN75VofwnnvYXzXGNqSm2E63Q3J+tfGmVF3wsDMthShZAH62/x0Qg==
X-Received: by 2002:a05:6000:100d:b0:37d:4f1b:359 with SMTP id ffacd0b85a97d-37eb48a0f28mr6533604f8f.53.1729500733227;
        Mon, 21 Oct 2024 01:52:13 -0700 (PDT)
Date: Mon, 21 Oct 2024 10:52:12 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v6 1/5] x86/boot: create a C bundle for 32 bit boot code
 and use it
Message-ID: <ZxYWPHK-rUbCwsNk@macbook.local>
References: <20241017133123.1946204-1-frediano.ziglio@cloud.com>
 <20241017133123.1946204-2-frediano.ziglio@cloud.com>
 <a5745a93-1d82-45f1-bb88-81a737ebcce3@citrix.com>
 <CACHz=ZhULqJpE8UK7kZQN0He5Poc85Cr6heTCKj1KLjxcPA6XQ@mail.gmail.com>
 <ZxJLUeMFyejFGCLc@macbook.local>
 <CACHz=ZhXFRG1PcCqvTUy6jQbbbFNHu7rwWP+CVtJuEeXRqQYXA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CACHz=ZhXFRG1PcCqvTUy6jQbbbFNHu7rwWP+CVtJuEeXRqQYXA@mail.gmail.com>

On Fri, Oct 18, 2024 at 02:28:05PM +0100, Frediano Ziglio wrote:
> On Fri, Oct 18, 2024 at 12:49 PM Roger Pau Monné <roger.pau@citrix.com> wrote:
> >
> > On Fri, Oct 18, 2024 at 09:42:48AM +0100, Frediano Ziglio wrote:
> > > On Thu, Oct 17, 2024 at 6:13 PM Andrew Cooper <andrew.cooper3@citrix.com> wrote:
> > > >
> > > > On 17/10/2024 2:31 pm, Frediano Ziglio wrote:
> > > > > The current method to include 32 bit C boot code is:
> > > > > - compile each function we want to use into a separate object file;
> > > > > - each function is compiled with -fpic option;
> > > > > - convert these object files to binary files. This operation removes GOP
> > > > >   which we don't want in the executable;
> > > > > - a small assembly part in each file add the entry point;
> > > > > - code can't have external references, all possible variables are passed
> > > > >   by value or pointer;
> > > > > - include these binary files in head.S.
> > > > >
> > > > > There are currently some limitations:
> > > > > - code is compiled separately, it's not possible to share a function
> > > > >   (like memcpy) between different functions to use;
> > > > > - although code is compiled with -fpic there's no certainty there are
> > > > >   no relocations, specifically data ones. This can lead into hard to
> > > > >   find bugs;
> > > > > - it's hard to add a simple function;
> > > > > - having to pass external variables makes hard to do multiple things
> > > > >   otherwise functions would require a lot of parameters so code would
> > > > >   have to be split into multiple functions which is not easy.
> > > > >
> > > > > Current change extends the current process:
> > > > > - all object files are linked together before getting converted making
> > > > >   possible to share code between the function we want to call;
> > > > > - a single object file is generated with all functions to use and
> > > > >   exported symbols to easily call;
> > > > > - variables to use are declared in linker script and easily used inside
> > > > >   C code. Declaring them manually could be annoying but makes also
> > > > >   easier to check them. Using external pointers can be still an issue if
> > > > >   they are not fixed. If an external symbol is not declared this gives a
> > > > >   link error.
> > > > >
> > > > > Some details of the implementation:
> > > > > - C code is compiled with -fpic flags (as before);
> > > > > - object files from C code are linked together;
> > > > > - the single bundled object file is linked with 2 slightly different
> > > > >   script files to generate 2 bundled object files;
> > > > > - the 2 bundled object files are converted to binary removing the need
> > > > >   for global offset tables;
> > > > > - a Python script is used to generate assembly source from the 2
> > > > >   binaries;
> > > > > - the single assembly file is compiled to generate final bundled object
> > > > >   file;
> > > > > - to detect possible unwanted relocation in data/code code is generated
> > > > >   with different addresses. This is enforced starting .text section at
> > > > >   different positions and adding a fixed "gap" at the beginning.
> > > > >   This makes sure code and data is position independent;
> > > > > - to detect used symbols in data/code symbols are placed in .text
> > > > >   section at different offsets (based on the line in the linker script).
> > > > >   This is needed as potentially a reference to a symbol is converted to
> > > > >   a reference to the containing section so multiple symbols could be
> > > > >   converted to reference to same symbol (section name) and we need to
> > > > >   distinguish them;
> > > > > - --orphan-handling=error option to linker is used to make sure we
> > > > >   account for all possible sections from C code;
> > > > >
> > > > > Current limitations:
> > > > > - the main one is the lack of support for 64 bit code. It would make
> > > > >   sure that even the code used for 64 bit (at the moment EFI code) is
> > > > >   code and data position independent. We cannot assume that code that
> > > > >   came from code compiled for 32 bit and compiled for 64 bit is code and
> > > > >   data position independent, different compiler options lead to
> > > > >   different code/data.
> > > > >
> > > > > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > > >
> > > > This commit message is not particularly easy to follow.  Can I recommend
> > > > the following:
> > > >
> > > > ---%<---
> > > > x86/boot: Rework how 32bit C is linked/included for early boot
> > > >
> > > > Right now, the two functions which were really too complicated to write
> > > > in asm are compiled as 32bit PIC, linked to a blob and included
> > > > directly, using global asm() to arrange for them to have function semantics.
> > > >
> > > > This is limiting and fragile; the use of data relocations will compile
> > > > fine but malfunction when used, creating hard-to-debug bugs.
> > > >
> > > > Furthermore, we would like to increase the amount of C, to
> > > > deduplicate/unify Xen's boot logic, as well as making it easier to
> > > > follow.  Therefore, rework how the 32bit objects are included.
> > > >
> > > > Link all 32bit objects together first.  This allows for sharing of logic
> > > > between translation units.  Use differential linking and explicit
> > > > imports/exports to confirm that we only have the expected relocations,
> > > > and write the object back out as an assembly file so it can be linked
> > > > again as if it were 64bit, to integrate with the rest of Xen.
> > > >
> > > > This allows for the use of external references (e.g. access to global
> > > > variables) with reasonable assurance of doing so safely.
> > > >
> > > > No functional change.
> > > > ---%<---
> > > >
> > > > which I think is an accurate and more concise summary of what's changing?
> > > >
> > >
> > > You cut half of the explanation, replacing with nothing.
> > > Why is a script needed? Why 2 linking? How the new method detects
> > > unwanted relocations?
> >
> > TBH this is not clear to me even with your original commit message.
> >
> 
> I'm starting to think that either me or Andrew are not the right
> persons to write this, there's a lot of assumptions we assume for
> granted.
> 
> From what I see, in my message:
> ----
> - to detect possible unwanted relocation in data/code code is generated
>   with different addresses. This is enforced starting .text section at
>   different positions and adding a fixed "gap" at the beginning.
>   This makes sure code and data is position independent;
> - to detect used symbols in data/code symbols are placed in .text
>   section at different offsets (based on the line in the linker script).
>   This is needed as potentially a reference to a symbol is converted to
>   a reference to the containing section so multiple symbols could be
>   converted to reference to same symbol (section name) and we need to
>   distinguish them;
> ----
> 
> in Andrew message:
> ----
> Use differential linking and explicit imports/exports to confirm that
> we only have the expected relocations,
> ----
> 
> probably both are cryptic, but getting from "differential linking" you
> really need to know in advance what you are explaining.
> 
> > > Why wasn't possible to share functions?
> 
> mine:
> ----
> - code is compiled separately, it's not possible to share a function
>   (like memcpy) between different functions to use;
> ----
> 
> in Andrew message:
> ----
> Link all 32bit objects together first.  This allows for sharing of
> logic between translation units.
> ----
> 
> I would agree Andrew comment is clearer here.
> 
> > > Why using --orphan-handling option?
> 
> mine:
> ----
> - --orphan-handling=error option to linker is used to make sure we
>   account for all possible sections from C code;
> ---
> 
> in Andrew message:
> ----
> ----
> 
> still, Andrew more clear, but not carrying any information.

Maybe the issue is that some of the information you currently have in
the commit message would be better added as inline comments.  For
example the reasoning about why 2 linker passes are need should better
be added to xen/arch/x86/boot/Makefile IMO.

In any case the code in xen/arch/x86/boot/Makefile needs some
comments.  For example what are the seemingly random values in
text_{gap,diff}?  Could those values be different?

> 
> > >
> > > The description has been there for about 2 months without many objections.
> >
> > IMO it's fine to use lists to describe specific points, but using
> > lists exclusively to write a commit message makes the items feel
> > disconnected between them.
> >
> > The format of the commit message by Andrew is clearer to undertsand
> > for me.  Could you add what you think it's missing to the proposed
> > message by Andrew?
> >
> > Thanks, Roger.
> 
> Probably, as said above, we (me and Andrew) have too many assumptions.

Well, you are the author of the code, so it's expected from you to
provide a suitable commit message that goes together with the change,
as you ultimately knows exactly the reasoning behind the commit code
changes.

Andrew didn't think the provided message was fully suitable and as a
courtesy he suggested an adjusted wording.  He however had no
requirement to do such suggestion, neither you should feel his
verbatim wording is what should be used.

My bias is towards Andrew suggested message (or something along those
lines), because it can be read and parsed as a natural text rather
than unconnected bullet points.  It gives the reader enough context to
understand the intention of the code change.

I agree your commit message contains more details, but as said above,
it's in my opinion better for those implementation details to be added
as comments to the code.

> This commit is doing quite some magic that's not easy to grasp.
> I can try to explain, and possibly you can suggest something that
> makes sense also to people not too involved in this.
> 
> There are quite some challenges here. This code is executed during the
> boot process and the environment is pretty uncommon. Simply writing a
> message is not that easy. We are not sure if we have VGA, serial, BIOS
> or UEFI. We are not executing in the location code was compiled/linked
> to run so assuming it is wrong and causes issue; in other word the
> code/data should be position independent. This code is meant to be
> compiled and run in 32 mode, however Xen is 64 bit, so compiler output
> can't be linked to the final executable.

I've attempted to do something similar in FreeBSD for the PVH entry
point, so that the initial page-tables could be built in C rather than
asm:

https://reviews.freebsd.org/D44451

However there I didn't made the code position independent yet, and I
was using objcopy to convert the object from elf32-i386 to
elf64-x86-64 (sadly such conversion makes FreeBSD elftoolchain objcopy
explode).  I need to find some time to try and fix elftoolchain
objcopy so it can do the conversion.

The above however is much simpler, as FreeBSD PVH entry point is not
(yet) relocatable.

> And obviously you cannot call
> 64 bit code from 32 bit code. Even if code would be compiled and run
> in 64 bit mode, calling functions like printk would probably crash (it
> does, we discovered recently) as Xen code assumes some environment
> settings (in case of printk, just as example, it was missing per-cpu
> info leading to pointer to garbage). In 32 bit mode, you can get code
> position independence with -fpic, but this requires linker to generate
> GOT table but 64 bit linker would generate that table in a position
> not compatible with 32 bit code (and that's not the only issue of
> using 64 bit linker on 32 bit code). So, to solve this code/data is
> linked to a 32 bit object and converted to binary (note: this is an
> invariant, it was done like that before and after this commit). Solved
> the code with -fpic, what about data? Say we have something like
> "const char *message = "hello";"... a pointer is a pointer, which is
> the location of the data pointed. But as said before, we are in an
> uncommon environment where code/data could be run at a different
> location than compiled/linked! There's no magic option for doing that,
> so instead of hoping for the best (as we are doing at the moment) we
> check to not have pointers. How? We link code+data at different
> locations which will generate different binary in that case and we
> compare the 2 binaries to make sure there are no such differences
> (well, this is a simplification of the process).
> 
> 
> So... somebody willing to translate the above, surely poor and
> unclear, explanation is somethig digestible by people less involved in
> it?

I think it would be easier if you could attempt to convert the above
explanation as more concise inline comments.

It would also help if you could add a comment at the top of the
introduced script (xen/tools/combine_two_binaries.py) to describe it's
intended purpose.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 09:17:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 09:17:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823252.1237212 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2oXS-0007vw-O0; Mon, 21 Oct 2024 09:17:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823252.1237212; Mon, 21 Oct 2024 09:17: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 1t2oXS-0007vp-KQ; Mon, 21 Oct 2024 09:17:22 +0000
Received: by outflank-mailman (input) for mailman id 823252;
 Mon, 21 Oct 2024 09:17: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=2ab4=RR=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t2oXR-0007vj-NI
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 09:17:21 +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 46506ce6-8f8d-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 11:17:20 +0200 (CEST)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2fb59652cb9so40421061fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 02:17:20 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2fb9ae24a9csm4539181fa.123.2024.10.21.02.17.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 02:17:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 46506ce6-8f8d-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729502240; x=1730107040; 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=7Zkx5OzrR5noIzrXQaE+sP3FfBEoM2+NgFV1MzDY4bs=;
        b=kkXtWCxBGqvlQXQaLDZSZdbWRYPD7oIWizdIPYnFArIZ0qvKDOWxzFgZL5y4EJmRuN
         HybUfWw6gWbsS35MgC8aALmPnYp/QHf/yAH5vt2HboNSi82hhst5Ifa7KTQzrp6ApIzD
         Z8b3RY+fSJj4woDKyc7oNLtNJNS+IQ2giLzWC3y41fDdV4gsMAmC44KkMTPywBMpXh49
         5pYE9j7Y8vrIB7/9Sd+2B2XfJR3eyBrT0vS4Khu7cxlbNjJsI9NRuGYfU4hIlDtLpvhq
         GeUnDuJ5AYrSyFAW0GMhUz/GqrJbxbh0Krh7oD2n7FUkOW+GbqU4WBQUXZkLYl2neFz7
         AsiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729502240; x=1730107040;
        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=7Zkx5OzrR5noIzrXQaE+sP3FfBEoM2+NgFV1MzDY4bs=;
        b=rdKSZYQf4gxpTKJFst+DzO8uyBtb7PXQLpjQsX3Wu8r3FlWrd3O/H0SBeoGIR6OXpm
         utHhJ5cim+cnWncrYFTsZzhJH7IeUthwl9bbmUg3R8aTnOpRHBkQp+9gPs0lny/9lHCf
         XNIT35HDKjOH9YXlk+92cYY3Go5xVEf4z5kxKnXSLinF4V1Wq6aHbFniQtXt6jrYq7Zm
         pUb9mPAeuh6pJa5tVQcJxHRs9WLvp0vuxaH37kotX32rPd5SsAtkH3mbDTNWXWYUe/5+
         BJgkoWsjMD0GY1xRUvBTp5mf1PfRTlh2zIx3g9QabEAp1Fi6RIcpJfhZUjRxME2RRdZT
         EmCg==
X-Forwarded-Encrypted: i=1; AJvYcCVlDKCn9bqUMPyyn68rBMrZZnMArQye4vFU5EN4tPjQjEyolcM96Lnw6v0mVPhDEdClVqWbao0mjhY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywu86tyooIGjFARQu+fxMibtZ5a1JzZpMmSc5RiCumY0IcWzT0q
	+zSvQNi4CIy0zNtT03+9Jez7NPNZJ6D3UYrVNXX5SmMgWCeeeLRK
X-Google-Smtp-Source: AGHT+IHGBHaw2MgPGUuQ03iYeqiexR9VxkajDDxffzKEOfq8DbVnq5bYywyzob8tVIkgzBBkytDUvQ==
X-Received: by 2002:a05:651c:2105:b0:2fb:266b:e3b2 with SMTP id 38308e7fff4ca-2fb83209eafmr50606361fa.36.1729502239600;
        Mon, 21 Oct 2024 02:17:19 -0700 (PDT)
Message-ID: <43e8ee94d3b7aa5b643db1d81a63e513a8feef57.camel@gmail.com>
Subject: Re: [PATCH v1 2/5] xen/riscv: implement maddr_to_virt()
From: oleksii.kurochko@gmail.com
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>, 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Mon, 21 Oct 2024 11:17:18 +0200
In-Reply-To: <D51BO0DX4047.IXQS05RISYW0@cloud.com>
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
	 <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com>
	 <2565f369-96e3-4c28-b752-53b1b6a0d968@suse.com>
	 <aebdb0df0ad9fb13db9929f131737bf5479cdf29.camel@gmail.com>
	 <D51BO0DX4047.IXQS05RISYW0@cloud.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Mon, 2024-10-21 at 08:56 +0100, Alejandro Vallejo wrote:
> On Fri Oct 18, 2024 at 2:17 PM BST, oleksii.kurochko wrote:
> > On Thu, 2024-10-17 at 16:55 +0200, Jan Beulich wrote:
> > > On 16.10.2024 11:15, Oleksii Kurochko wrote:
> > > > --- a/xen/arch/riscv/include/asm/mm.h
> > > > +++ b/xen/arch/riscv/include/asm/mm.h
> > > > @@ -25,8 +25,12 @@
> > > > =C2=A0
> > > > =C2=A0static inline void *maddr_to_virt(paddr_t ma)
> > > > =C2=A0{
> > > > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > > > -=C2=A0=C2=A0=C2=A0 return NULL;
> > > > +=C2=A0=C2=A0=C2=A0 /* Offset in the direct map, accounting for pdx
> > > > compression */
> > > > +=C2=A0=C2=A0=C2=A0 unsigned long va_offset =3D maddr_to_directmapo=
ff(ma);
> > >=20
> > > Why the mentioning of PDX compression?
> > It was mentioned because if PDX will be enabled
> > maddr_to_directmapoff()
> > will take into account PDX stuff.
> >=20
> > > =C2=A0At least right now it's unavailable
> > > for RISC-V afaics. Are there plans to change that any time soon?
> > At the moment, I don't have such plans, looking at available
> > platform
> > there are no a lot of benefits of having PDX compression now.
> >=20
> > Perhaps it would be good to add
> > BUILD_BUG_ON(IS_ENABLED(PDX_COMPRESSION)) for the places which
> > should
> > be updated when CONFIG_PDX will be enabled.
> >=20
> > ~ Oleksii
>=20
> I'd just forget about it unless you ever notice you're wasting a lot
> of entries
> in the frame table due to empty space in the memory map. Julien
> measured the
> effect on Amazon's Live Migration as a 10% improvement in downtime
> with PDX
> off.
>=20
> PDX compression shines when you have separate RAM banks at very, very
> disparately far addresses (specifics in pdx.h). Unfortunately the
> flip side of
> this compression is that you get several memory accesses for each
> single
> pdx-(to/from)-mfn conversion. And we do a lot of those. One possible
> solution
> would be to alt-patch the values in the code-stream and avoid the
> perf-hit, but
> that's not merged. Jan had some patches but that didn't make it to
> staging,
> IIRC.
Could you please give me some links in the mailing list with mentioned
patches?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 09:18:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 09:18:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823257.1237222 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2oYH-0008RY-0L; Mon, 21 Oct 2024 09:18:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823257.1237222; Mon, 21 Oct 2024 09:18: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 1t2oYG-0008RR-Tp; Mon, 21 Oct 2024 09:18:12 +0000
Received: by outflank-mailman (input) for mailman id 823257;
 Mon, 21 Oct 2024 09:18: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 1t2oYF-0008Qn-Fo; Mon, 21 Oct 2024 09:18: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 1t2oYF-0004j8-At; Mon, 21 Oct 2024 09:18: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 1t2oYE-0007VZ-RL; Mon, 21 Oct 2024 09:18:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2oYE-0005eH-Qo; Mon, 21 Oct 2024 09:18: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=V+SzZiTVHAyaQilZ0x61VNZzRw/jYz2Zka6cXj5+oZM=; b=qTfwbYb1zJQcAeGmCZduKRi/WT
	0f6byUJ20uAHaKo/NDmAnWwKXLGdwhq/2hG3MiN3chlD6pxYhwIaVK1ez1N9oOn3z6txoC4fSWGKY
	Hgqom7MbuWDdL6tZ+/pgNtOPU096gKlkoutUzw7gMdDM2Ybj0Z7EtBaBB4rBYAdn0Vxc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188310-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188310: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-arndale:host-ping-check-xen:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check: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-amd64-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-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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-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: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-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-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2: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-amd64-libvirt-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-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
X-Osstest-Versions-This:
    xen=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
X-Osstest-Versions-That:
    xen=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 21 Oct 2024 09:18:10 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale 10 host-ping-check-xen fail in 188309 pass in 188310
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail in 188309 pass in 188310
 test-amd64-amd64-libvirt-vhd 22 leak-check/check           fail pass in 188309

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188309
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188309
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188309
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188309
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188309
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188309
 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-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-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-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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-credit2  16 saverestore-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

version targeted for testing:
 xen                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
baseline version:
 xen                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7

Last test of basis   188310  2024-10-21 01:55:45 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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 21 09:53:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 09:53:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823268.1237232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2p6T-0003Oa-Lm; Mon, 21 Oct 2024 09:53:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823268.1237232; Mon, 21 Oct 2024 09:53: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 1t2p6T-0003OT-Ig; Mon, 21 Oct 2024 09:53:33 +0000
Received: by outflank-mailman (input) for mailman id 823268;
 Mon, 21 Oct 2024 09:53: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2p6S-0003ON-2h
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 09:53:32 +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 53829254-8f92-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 11:53:30 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c96df52c52so5503075a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 02:53:30 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d893csm186414566b.16.2024.10.21.02.53.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 02:53:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 53829254-8f92-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729504410; x=1730109210; 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=EMQ8ZqYR0N5hhNUqke7TQE0DOGwKS7Bm5ex4OXmwuVQ=;
        b=lQvYpwsVbyoHvIuZ3g6rnL2uZCgsEOJzQmr/ZiaeP6Z/bMqVAVa6cRW524zCVmRuPb
         FefKTfx+V8pHXpLhXaITwo7+CyW6JlvYR9bk4ReIe/dmObZvli/6gTlGwPnPsBHJjNo2
         k9Bg/LNpfvHO600/JyGoYZW/qX+ig0agJeN8Y=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729504410; x=1730109210;
        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=EMQ8ZqYR0N5hhNUqke7TQE0DOGwKS7Bm5ex4OXmwuVQ=;
        b=gaqFxkIiOfbalkJLefBQH0YCNTM6fS7x7kU20YjjFtqb4z/7MtNKeJctFlK8pDxUIb
         DZx6mRqnq69xHldgWUHcuFtGDuECT4Z65hf0SDGxpyWydHUMK/oYFtMVdsWnmztxeKaT
         fyx4u0Jd88cZMT7lOvX4hK21U3nPMQHs4U36SM/RQ5IcVcKHhElEA/Heu5yRDka0aZDy
         NXG2eUOZhDot+4ejWUFnV7mdnJkbwjJoH0GFuuSFd30WuECxkT36CU7WlXSzYdrywWJP
         E6ZwlHH0xC81EGyKNC63JH/zX8lIxOPY4jcldVjH372PKo8Tmh9Qts64fjRxhcZZPOIq
         acxg==
X-Forwarded-Encrypted: i=1; AJvYcCVuUd0++t5HfEEaviUOEP50Gi3ZJKVSbla/8nt/+a5wQ2W1lpF6w1pNe+v/ZBsWLUkVYqeB7paqHYY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzcpvRB2qDeUcpMXexAbuCPmm6KxcRYq5XRC4dSQv2xezccW+EA
	Yy1K/DB9EU4wNIxccJHIQixvZpn9d17Ia2lcWyMBiaYfVm2oWoqhJ6E0nwsMlU0=
X-Google-Smtp-Source: AGHT+IGj0endX+tvyzwY7GkpTP21C4QXkjSKNuSUitfTPNoRGcJWvzbvBQAwIp4PHn89A/tzFXcdaw==
X-Received: by 2002:a17:907:7247:b0:a99:88ab:c7cb with SMTP id a640c23a62f3a-a9a69a80a70mr1135334766b.33.1729504409622;
        Mon, 21 Oct 2024 02:53:29 -0700 (PDT)
Message-ID: <c57b3cb6-0a3d-4930-8acd-e8bc03dc2a53@citrix.com>
Date: Mon, 21 Oct 2024 10:53:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 02/38] x86/boot: convert consider_modules to struct
 boot_module
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
 <20241021004613.18793-3-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021004613.18793-3-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 1:45 am, Daniel P. Smith wrote:
> To start transitioning consider_modules() over to struct boot_module, begin
> with taking the array of struct boot_modules but use the temporary struct
> element mod.
>
> No functional change intended.
>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

I've taken patch 1 (currently in testing to push).

However, this change breaks PV Shim (same test case that I debugged the
OSSTest failure with on Saturday).

(XEN) PVH start info: (pa 0000ffc0)
(XEN)   version:    1
(XEN)   flags:      0
(XEN)   nr_modules: 2
(XEN)   modlist_pa: 000000000000ff60
(XEN)   cmdline_pa: 000000000000ffa0
(XEN)   cmdline:    'pv-shim console=xen,pv'
(XEN)   rsdp_pa:    00000000fc008000
(XEN)     mod[0].pa:         0000000001042000
(XEN)     mod[0].size:       0000000006907440
(XEN)     mod[0].cmdline_pa: 0000000000000000
(XEN)     mod[1].pa:         00000000016d9000
(XEN)     mod[1].size:       0000000019870751
(XEN)     mod[1].cmdline_pa: 0000000000000000
(XEN) Bootloader: PVH Directboot
(XEN) Command line: pv-shim console=xen,pv
(XEN) Xen image load base address: 0
...
(XEN) ----[ Xen-4.20-unstable  x86_64  debug=y ubsan=y  Not tainted ]----
(XEN) CPU:    0
(XEN) RIP:    e008:[<ffff82d040a51d38>]
arch/x86/pv/dom0_build.c#dom0_construct+0x2020/0x24eb
...
(XEN) Xen call trace:
(XEN)    [<ffff82d040a51d38>] R
arch/x86/pv/dom0_build.c#dom0_construct+0x2020/0x24eb
(XEN)    [<ffff82d040a52222>] F dom0_construct_pv+0x1f/0xcd
(XEN)    [<ffff82d040a7bb27>] F construct_dom0+0xad/0xc0
(XEN)    [<ffff82d040a6eb3f>] F __start_xen+0x50f2/0x53aa
(XEN)    [<ffff82d040206184>] F __high_start+0x94/0xa0
...
(XEN) Pagetable walk from ffff8287fffffff8:
(XEN)  L4[0x105] = 000000001fa17063 ffffffffffffffff
(XEN)  L3[0x01f] = 0000000000000000 ffffffffffffffff
(XEN)
(XEN) ****************************************
(XEN) Panic on CPU 0:
(XEN) FATAL PAGE FAULT
(XEN) [error_code=0000]
(XEN) Faulting linear address: ffff8287fffffff8
(XEN) ****************************************

We've got a wild access, but it's not clear exactly what's going on here.

addr2line says it's line 904 which is in the middle of the
page_list_for_each() loop setting up the physmap.

My gut feeling is that the pointer -> array conversion in
consider_modules() isn't correct, because that's literally the only
non-trivial change, but I can't spot anything concretely wrong...

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 09:55:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 09:55:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823277.1237242 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2p8F-00040V-36; Mon, 21 Oct 2024 09:55:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823277.1237242; Mon, 21 Oct 2024 09:55: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 1t2p8F-00040O-0U; Mon, 21 Oct 2024 09:55:23 +0000
Received: by outflank-mailman (input) for mailman id 823277;
 Mon, 21 Oct 2024 09:55: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=dRMf=RR=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1t2p8C-00040H-AC
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 09:55:21 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 944a1479-8f92-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 11:55:19 +0200 (CEST)
Received: from truciolo.bugseng.com (unknown [37.163.179.18])
 by support.bugseng.com (Postfix) with ESMTPSA id 822BB4EE0737;
 Mon, 21 Oct 2024 11:55:17 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 944a1479-8f92-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1729504518; bh=Y+u7e5DLnPPoRwdo2M0VVHEj6Bi+ttyz8sg120Qh7JY=;
	h=From:To:Cc:Subject:Date:From;
	b=TaaTuVdqpMqxbAZfRhQG9tcmp9/aoWN7PHgZ4qL7Yxg27pP1hu1TXhagbhteYXpCe
	 YXBbX6txRlGRwwE+lDtu8nQSZWgARxaLcPH8/f6YBAm8GrDt8esGAhUNiJBQnzE4IO
	 lQRhsYuJ+fNbOypaILQ8Vxh0CxVRlJM8jNBJ6ripaG05TUHaBiT3hBF6XyEzw9ZHDv
	 8HU6InnMh19qpt4xp7cDBLbOxsqiUMXLmF57eY2ZCCwz7O7N9DbHE4LoN+6PCSc98A
	 PiCc8TBCmPpXwtmifkdOL66mY4QiPC8JdugGn8lP5NpTMBIMsTu6tjL6F1Y+y6Go2e
	 rYJhp3/3vfHgw==
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>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v3] x86/emul: address violations of MISRA C Rule 16.3
Date: Mon, 21 Oct 2024 11:55:10 +0200
Message-ID: <63d51d39995c8dbab6f02d74982287a238ee5353.1729500464.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add missing break statements to address violations of MISRA C:2012
Rule 16.3 (An unconditional `break' statement shall terminate
every switch-clause).

Make explicit unreachability of a program point with
ASSERT_UNREACHABLE() and add defensive code.

No functional change.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
Changes in v3:
- return error code from the ureachable path.
Changes in v2:
- unreachability made explicit.
---
 xen/arch/x86/x86_emulate/fpu.c         | 5 +++++
 xen/arch/x86/x86_emulate/x86_emulate.c | 1 +
 2 files changed, 6 insertions(+)

diff --git a/xen/arch/x86/x86_emulate/fpu.c b/xen/arch/x86/x86_emulate/fpu.c
index 480d879657..54c8621421 100644
--- a/xen/arch/x86/x86_emulate/fpu.c
+++ b/xen/arch/x86/x86_emulate/fpu.c
@@ -218,6 +218,7 @@ int x86emul_fpu(struct x86_emulate_state *s,
              */
             if ( dst->type == OP_MEM && !s->fpu_ctrl && !fpu_check_write() )
                 dst->type = OP_NONE;
+            break;
         }
         break;
 
@@ -296,6 +297,7 @@ int x86emul_fpu(struct x86_emulate_state *s,
             default:
                 generate_exception(X86_EXC_UD);
             }
+            break;
         }
         break;
 
@@ -386,6 +388,7 @@ int x86emul_fpu(struct x86_emulate_state *s,
              */
             if ( dst->type == OP_MEM && !s->fpu_ctrl && !fpu_check_write() )
                 dst->type = OP_NONE;
+            break;
         }
         break;
 
@@ -457,6 +460,8 @@ int x86emul_fpu(struct x86_emulate_state *s,
             case 7: /* fistp m64i */
                 goto fpu_memdst64;
             }
+            ASSERT_UNREACHABLE();
+            return X86EMUL_UNHANDLEABLE;
         }
         break;
 
diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c
index 6b6b8c8fe4..30674ec301 100644
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -8310,6 +8310,7 @@ x86_emulate(
         }
         if ( rc != 0 )
             goto done;
+        break;
     default:
         break;
     }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 09:56:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 09:56:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823283.1237252 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2p8t-0004V5-BJ; Mon, 21 Oct 2024 09:56:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823283.1237252; Mon, 21 Oct 2024 09: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 1t2p8t-0004Uy-8c; Mon, 21 Oct 2024 09:56:03 +0000
Received: by outflank-mailman (input) for mailman id 823283;
 Mon, 21 Oct 2024 09:56: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2p8r-0004Qi-DM
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 09:56:01 +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 aca1657c-8f92-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 11:55:59 +0200 (CEST)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-4316a44d1bbso15348575e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 02:55:59 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f570a97sm51818395e9.9.2024.10.21.02.55.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 02:55:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aca1657c-8f92-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729504559; x=1730109359; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=EL+8dy6zztf9H4+yhyuoyf8ApGGeck1aRp1m8vKu9LM=;
        b=a75Ta8HNQOTTEZW7C1PPj0bn1RDa4njEabfE2oMjx/iPnVWDg7yZXi7EUHa+FtyFug
         nMX1DTi7gB3uup1oDzjRBohZSmLgLIHEI8ThNg55WX6tnVi/JoeJp988V/eYO09VeKNj
         9DmokXh6atniSWwxWH/xdsSqBdLLEdqpkIUgQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729504559; x=1730109359;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=EL+8dy6zztf9H4+yhyuoyf8ApGGeck1aRp1m8vKu9LM=;
        b=f0hg7jSVvwZwhUiLSv1zwYJoOhPFUt5dlBvRr6tZVSbdes79a7TKF6Tl/NZUQOHq70
         Z2LWMbRS3spDWJVoAnHuX4J9OhWNBZMcSDo0o/t/HBEEjVX3c7hkPJybWEFhdR2Wsuxn
         +yt2+qqt+982E7je+Rquz/mc+gAKKjLsItc77DPf9W4Yaksc8tKR3BkLKVOqOw/DsdRI
         QAc2z/4qvAczSfqbKBks2abbScUiEA4a12dSQ9OGoeca9KgCe9xYveRCOqSyG9HhonYe
         PTGjd39S0Zycgp2e38dpcjEF0XhQt0+oOSRRDVscL374zlrLkNxUXTH6qrwBNX2vPuyq
         qjAg==
X-Forwarded-Encrypted: i=1; AJvYcCUle2SSsPpWY0FwfWw+TAj3aJWP0j7Rc9SyARy9CdFAOVsPHcWJ/LsYlFOj05Sx8DGEw9OzdgGDRoo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxP8HzUwtNrXnKzhuH0iJluuX98+bSFzf+9K3Qdehetu6JYT6P6
	w1kyFxZ9cRiKbOhHWagc72krtnqdxT+bbQ8o2yMpQag4vWruBtH9Cw6oUcW98F0=
X-Google-Smtp-Source: AGHT+IH6Au0XrzfXXOI3VfeWFzBR2NqhP2KmO5qyEQQXOXVxq8vKIazy0COmhnS7eW9isr5AwEPwaA==
X-Received: by 2002:a05:6000:11c1:b0:37d:5282:1339 with SMTP id ffacd0b85a97d-37ea2196749mr7520271f8f.22.1729504559108;
        Mon, 21 Oct 2024 02:55:59 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 21 Oct 2024 10:55:54 +0100
Message-Id: <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>
Cc: "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>, "Willi Junga" <xenproject@ymy.be>, "David
 Woodhouse" <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Roger Pau Monne" <roger.pau@citrix.com>,
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241018080813.45759-1-roger.pau@citrix.com>
In-Reply-To: <20241018080813.45759-1-roger.pau@citrix.com>

On Fri Oct 18, 2024 at 9:08 AM BST, Roger Pau Monne wrote:
> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE=
 is
> repurposed to contain part of the offset into the remapping table.  Previ=
ous to

For my own education. Is that really a repurpose? Isn't the RTE vector fiel=
d
itself simply remapped, just like any MSI?

> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remappin=
g
> table would match the vector.  Such logic was mandatory for end of interr=
upt to
> work, since the vector field (even when not containing a vector) is used =
by the
> IO-APIC to find for which pin the EOI must be performed.
>
> Introduce a table to store the EOI handlers when using interrupt remappin=
g, so

The table seems to store the pre-IR vectors. Is this a matter of nomenclatu=
re
or leftover from a previous implementation?

> that the IO-APIC driver can translate pins into EOI handlers without havi=
ng to
> read the IO-APIC RTE entry.  Note that to simplify the logic such table i=
s used
> unconditionally when interrupt remapping is enabled, even if strictly it =
would
> only be required for AMD-Vi.

Given that last statement it might be worth mentioning that the table is
bypassed when IR is off as well.

>
> Reported-by: Willi Junga <xenproject@ymy.be>
> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a=
 static mapping')
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> ---
>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>
> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> index e40d2f7dbd75..8856eb29d275 100644
> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> =20
>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> =20
> +/*
> + * Store the EOI handle when using interrupt remapping.

That explains the when, but not the what. This is "a LUT from IOAPIC pin to=
 its
vector field", as far as I can see.=20

The order in which it's meant to be indexed would be a good addition here a=
s
well. I had to scroll down to see how it was used to really see what this w=
as.

> + *
> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry rem=
apped
> + * format repurposes the vector field to store the offset into the Inter=
rupt
> + * Remap table.  This causes directed EOI to longer work, as the CPU vec=
tor no
> + * longer matches the contents of the RTE vector field.  Add a translati=
on
> + * table so that directed EOI uses the value in the RTE vector field whe=
n

nit: Might be worth mentioning that it's a merely cache and is populated
on-demand from authoritative state in the IOAPIC.

> + * interrupt remapping is enabled.
> + *
> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vecto=
r field
> + * when using the remapped format, but use the translation table uniform=
ly in
> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> + */
> +static unsigned int **apic_pin_eoi;

This should be signed to allow IRQ_VECTOR_UNASSIGNED, I think. Possibly
int16_t, matching arch_irq_desc->vector. This raises doubts about the exist=
ing
vectors here typed as unsigned too.

On naming, I'd rather see ioapic rather than apic, but that's a an existing=
 sin
in the whole file. Otherwise, while it's used for EOI ATM, isn't it really =
just
an ioapic_pin_vector?

> +
>  static void share_vector_maps(unsigned int src, unsigned int dst)
>  {
>      unsigned int pin;
> @@ -273,6 +289,13 @@ void __ioapic_write_entry(
>      {
>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> +        /*
> +         * Might be called before apic_pin_eoi is allocated.  Entry will=
 be
> +         * updated once the array is allocated and there's an EOI or wri=
te
> +         * against the pin.
> +         */
> +        if ( apic_pin_eoi )
> +            apic_pin_eoi[apic][pin] =3D e.vector;
>      }
>      else
>          iommu_update_ire_from_apic(apic, pin, e.raw);
> @@ -298,9 +321,17 @@ static void __io_apic_eoi(unsigned int apic, unsigne=
d int vector, unsigned int p

Out of curiosity, how could this vector come to be unassigned as a paramete=
r?
The existing code seems to assume that may happen.

>      /* Prefer the use of the EOI register if available */
>      if ( ioapic_has_eoi_reg(apic) )
>      {
> +        if ( apic_pin_eoi )
> +            vector =3D apic_pin_eoi[apic][pin];
> +
>          /* If vector is unknown, read it from the IO-APIC */
>          if ( vector =3D=3D IRQ_VECTOR_UNASSIGNED )
> +        {
>              vector =3D __ioapic_read_entry(apic, pin, true).vector;
> +            if ( apic_pin_eoi )
> +                /* Update cached value so further EOI don't need to fetc=
h it. */
> +                apic_pin_eoi[apic][pin] =3D vector;
> +        }
> =20
>          *(IO_APIC_BASE(apic)+16) =3D vector;
>      }
> @@ -1022,7 +1053,23 @@ static void __init setup_IO_APIC_irqs(void)
> =20
>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
> =20
> +    if ( iommu_intremap )
> +    {
> +        apic_pin_eoi =3D xzalloc_array(typeof(*apic_pin_eoi), nr_ioapics=
);
> +        BUG_ON(!apic_pin_eoi);
> +    }
> +
>      for (apic =3D 0; apic < nr_ioapics; apic++) {

Was here before, but it might be a good time to reformat this line and the =
loop
below.

> +        if ( iommu_intremap )
> +        {
> +            apic_pin_eoi[apic] =3D xmalloc_array(typeof(**apic_pin_eoi),
> +                                               nr_ioapic_entries[apic]);
> +            BUG_ON(!apic_pin_eoi[apic]);
> +
> +            for ( pin =3D 0; pin < nr_ioapic_entries[apic]; pin++ )
> +                apic_pin_eoi[apic][pin] =3D IRQ_VECTOR_UNASSIGNED;
> +        }
> +

Rather than doing this, we could have a single allocation for everything, a=
nd
store the different bases accounting for the number of pins of each IOAPIC.

    apic_pin_eoi[0] =3D base;
    for_each_ioapic
        apic_pin_eoi[i+1] =3D apic_pin_eoi[i] + nr_ioapic_entries[i];

>          for (pin =3D 0; pin < nr_ioapic_entries[apic]; pin++) {
>              /*
>               * add it to the IO-APIC irq-routing table:

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 09:56:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 09:56:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823284.1237262 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2p95-0004p0-J9; Mon, 21 Oct 2024 09:56:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823284.1237262; Mon, 21 Oct 2024 09: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 1t2p95-0004oq-Fo; Mon, 21 Oct 2024 09:56:15 +0000
Received: by outflank-mailman (input) for mailman id 823284;
 Mon, 21 Oct 2024 09: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2p95-0004Qi-3G
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 09:56:15 +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 b4e73696-8f92-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 11:56:13 +0200 (CEST)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-43162cf1eaaso38119375e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 02:56:13 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f5cc563sm51521805e9.44.2024.10.21.02.56.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 02:56:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b4e73696-8f92-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729504573; x=1730109373; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
        b=V4VI3tT0S+nuvwCqLFA1wTyiauyteW+4qw32supwjZxb+S+sdffTe2ekLDWMr+ZuSc
         QwOBNsDSE8y1KjJXaIbvdVESO238QQ/8tR/eprNso70DALPY/XCewwYUvN0E3XYpz3Er
         BdpfVimIxULyoZMFSR50N7guuWl/hQ66xAxK4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729504573; x=1730109373;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
        b=F9uiYx3D/tOnewcxRmiTGNc+WV0WKL1x8IpKUhfa0CbLJqoVF55Vaa032S0u5zQzJx
         ePiCIRuAwqxs2uRZqXX/kPOb9+hhG6ynXxSWa/JiEVwv7DG1dNwHBE5kMYbahFmbH1Bi
         cBkVru05sPnkRC+NxoTZVLHKBT+lIZxsKrFULNPyfiC5slgN83ovNpEa19rv2GLSanRA
         1TJ2qfz+nm8lejkmbgpWPQI6gAQC+4Srhz+/SjPJWRWiJNrzRwY8hIMNFLKhAF8d5wnu
         l44uFSQ+TMvwwsMx0GLkURT+ImHWAe3zQ+MYbl1fIysi5rPLzw6ThOjWaGZiadsw+rlh
         E5kA==
X-Forwarded-Encrypted: i=1; AJvYcCVevuWeoTHAShF1N9Tq27B5YcsWS41ZxbDCSJjNgHY7XUeFjuH0U3np9Hl76+Z4/9cYl1PYAhAErng=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwOam17dQqxO27wcO7l6hB//aZsc/Ny6z0+DQD18dIexzbdS0bK
	+AJDcYC4DsHQ38Ajz4zPHV83AFz45pLxxY7kjhUsvzhHbseI3ShlzDpDCm4oIbY=
X-Google-Smtp-Source: AGHT+IEPgdcTLX0fXfu9QxeIWkOZb2SN8Qv17Wv6aZpctdDSRc38nNjSo2RdpBK2zBai1rqwBsuo+A==
X-Received: by 2002:a05:600c:3b9b:b0:431:562a:54be with SMTP id 5b1f17b1804b1-43161627c0dmr127966805e9.9.1729504573168;
        Mon, 21 Oct 2024 02:56:13 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 21 Oct 2024 10:56:08 +0100
Message-Id: <D51E7A643B2K.2D2HZ59U4S2K5@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>, "Willi Junga" <xenproject@ymy.be>, "David
 Woodhouse" <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
X-Mailer: aerc 0.18.2
References: <20241018080813.45759-1-roger.pau@citrix.com>
In-Reply-To: <20241018080813.45759-1-roger.pau@citrix.com>



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 10:07:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 10:07:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823304.1237272 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2pJi-0003Fu-Gf; Mon, 21 Oct 2024 10:07:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823304.1237272; Mon, 21 Oct 2024 10:07: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 1t2pJi-0003Fn-Dq; Mon, 21 Oct 2024 10:07:14 +0000
Received: by outflank-mailman (input) for mailman id 823304;
 Mon, 21 Oct 2024 10:07: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2pJh-0003FV-C3
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 10:07:13 +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 3d06b6dd-8f94-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 12:07:11 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a4031f69fso619336866b.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 03:07:11 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a913078cfsm185638566b.96.2024.10.21.03.07.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 03:07:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d06b6dd-8f94-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729505231; x=1730110031; 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=9pYuc6dtzAvigt2JQ3wSMynecFATbtODD9P239495Ik=;
        b=ScNAfU+qWe3yYq0ISLl0iKQPfWkhn95JAYcEbYSmQIdWyAL/9ozN2+Vtdw2W6PoSXi
         PAPSHgZ0OwGxEV4GT9IWV24hgBGugm8sAWwpVQOst9rLApDRnamSKIOUfkUtle3/tcI2
         729mg3nPkYOzAbqTtjr6JDl5fNkUZJCDY9XXo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729505231; x=1730110031;
        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=9pYuc6dtzAvigt2JQ3wSMynecFATbtODD9P239495Ik=;
        b=kcK4ibKlXEbezcBIVW/4U1O5b8OmyvpxoUZz+mIOQ6IMVY4l3Hwg3KF3eqJcAaGOJA
         m/FzLpDNtTSdr3UU0/Bo8cSOLC5FmoBSzX3dGhOoxyFrkG8PB/lGGYTFMQr8aVFcvUMy
         0KF/1JBtujaIKJb4krjQJ1DkV9tLbH/NyRGpI9L+3VEngZLVjyX2GCC1nmCD2T5GNWVh
         5rA5kB//bUN/+RR3f9fvDUPTX0niLS/bZfMRMy6+b3HjjTCJXBUjG9eFO+VgE14JmTVJ
         2dHtymPZn794uyeDrUGnSKv0LifBvQ6LiZWOa5kQwGG8Amxz0hrOmxUfbwvq/3vzsHEp
         gdNw==
X-Forwarded-Encrypted: i=1; AJvYcCWgL+CeE/1f8eVJ1nnD/y3m726crgesfDq5dM4mDitJSHpoKHJyPVIn/Rl3L9YjlB4++wIzRHZZhu4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxDfCasF5amznQKTNdJgGj9jXL2I1lqhangwXPTEGKw2RsMnavC
	jryW9eiMUkxoobGQCabNo7K2J5w9JBTvj0ZHJdMAA5QkrmPMRERH+PpmZ34scec=
X-Google-Smtp-Source: AGHT+IHpisSS5hdtrcYni2bsI5V71NFs1qX4ffPIATmZ/VUELrqZO1ZNSgwaXbeU2ptPCG6al3u76w==
X-Received: by 2002:a17:907:7e85:b0:a99:5466:2556 with SMTP id a640c23a62f3a-a9a69cdf7f2mr1286302966b.61.1729505230818;
        Mon, 21 Oct 2024 03:07:10 -0700 (PDT)
Message-ID: <16264b44-f323-48bf-bb03-161effc712eb@citrix.com>
Date: Mon, 21 Oct 2024 11:07:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Willi Junga <xenproject@ymy.be>,
 David Woodhouse <dwmw@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 10:55 am, Alejandro Vallejo wrote:
> On Fri Oct 18, 2024 at 9:08 AM BST, Roger Pau Monne wrote:
>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>> repurposed to contain part of the offset into the remapping table.  Previous to
> For my own education. Is that really a repurpose? Isn't the RTE vector field
> itself simply remapped, just like any MSI?

Yes, it really is repurposed.  The vector field has a different meaning
under IR, and indeed different meanings between Intel and AMD.

The way you're supposed to use interrupt remapping is to set up a static
configuration in the device (inc IO-APIC in this case), and then (only)
edit the IO-RTE in the IOMMU to change destination/vector.

This avoids needing to do CFG/MMIO cycles to move interrupt affinity,
not to mention the corner cases involved with doing so.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 10:09:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 10:09:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823309.1237282 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2pLT-0003oZ-Qj; Mon, 21 Oct 2024 10:09:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823309.1237282; Mon, 21 Oct 2024 10: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 1t2pLT-0003oS-O3; Mon, 21 Oct 2024 10:09:03 +0000
Received: by outflank-mailman (input) for mailman id 823309;
 Mon, 21 Oct 2024 10:09: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2pLT-0003oM-19
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 10:09:03 +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 7e5f1f79-8f94-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 12:09:01 +0200 (CEST)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-37d6ff1cbe1so3333078f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 03:09:01 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4316f58adffsm52238085e9.22.2024.10.21.03.08.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 03:09:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e5f1f79-8f94-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729505340; x=1730110140; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=68TgLZXfpKuLuM6nJglCqDvFF0rV0uue7z6s7da9kgg=;
        b=WaBMU687o8ZIBZ/ZkLrmwPqAV+3mZ8RAap7CtX3hwZZqYmKBCGmIYnxCfZWDGnGu+F
         lBGSyyJHGkXVWrSZpNKSmLQIB2FWpjnwLglo3o71iB/a/S804nmiP0DwQYmg5Ga/oVNV
         g0eJ77wlPLc4vprCJAN6DAZT5v9s+qpd6iGhQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729505340; x=1730110140;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=68TgLZXfpKuLuM6nJglCqDvFF0rV0uue7z6s7da9kgg=;
        b=PIWr/uBpU9MFCUJa9yTOsFQtW1aFN4se+nl8Z1OxCzUK4v25nTayQI8R6a8KUJoNqt
         K9jcaPH70JiAFfFE3ptlm5gDlH+vkBoZh45t2GcgMjknWj40psYG1Ytcq77QtqPsSb2D
         70vviymhtVxjiN9RkOsx34YfLPGzFLBz3Yguqc87+XZYQhNbTV6KtXD6kuKTWDJ5tIVM
         fq8lnBs14C+YiWpyb55x6Cg84gNy+YhhZIlhTGKlQkv51uChSCrlEj9EAJT2lEa2OgMS
         n3oi9mFCVjG3n7ufOeuVTSuY34dkjAPy1ItPo+jnGULNAZrQMellVZ0xKdPtemG/jFiN
         aAhg==
X-Forwarded-Encrypted: i=1; AJvYcCWNdgD32uv/LZenkmyo3HKEAwYXsQdBXv6P5pf21/G+PtGcntHYVeHnMeKRGT6EI4CdLbagjE5zfx4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzRBzqCr8HKOy+DLwTLg8eo5J9ubo6j49ioe+CAAezJIQJMsaFO
	Too9/cLcCo5RU/ztEYXVM6WLuNXMByN61glsgNWubfow6AIWOsTgFjmHKVS9C5M=
X-Google-Smtp-Source: AGHT+IF+vmJyJudKzvjeNTh2u/rQaS9mV+r5jI2WymHSM6WuQy0Pc8ZAsdZ7pBHf4Z4Xi0ubCFjQOw==
X-Received: by 2002:adf:f744:0:b0:37d:4d80:34ae with SMTP id ffacd0b85a97d-37eab4edf5bmr7016302f8f.4.1729505340537;
        Mon, 21 Oct 2024 03:09:00 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 21 Oct 2024 11:08:55 +0100
Message-Id: <D51EH2JFJVEZ.19LP27BXM7WZD@cloud.com>
Cc: "Alistair Francis" <alistair.francis@wdc.com>, "Bob Eshleman"
 <bobbyeshleman@gmail.com>, "Connor Davis" <connojdavis@gmail.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, "Julien Grall" <julien@xen.org>,
 "Stefano Stabellini" <sstabellini@kernel.org>,
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v1 2/5] xen/riscv: implement maddr_to_virt()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: <oleksii.kurochko@gmail.com>, "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <ec04dca87144194f5b3ecb9a78d142d370c9193f.1729068334.git.oleksii.kurochko@gmail.com> <2565f369-96e3-4c28-b752-53b1b6a0d968@suse.com> <aebdb0df0ad9fb13db9929f131737bf5479cdf29.camel@gmail.com> <D51BO0DX4047.IXQS05RISYW0@cloud.com> <43e8ee94d3b7aa5b643db1d81a63e513a8feef57.camel@gmail.com>
In-Reply-To: <43e8ee94d3b7aa5b643db1d81a63e513a8feef57.camel@gmail.com>

On Mon Oct 21, 2024 at 10:17 AM BST, oleksii.kurochko wrote:
> On Mon, 2024-10-21 at 08:56 +0100, Alejandro Vallejo wrote:
> > On Fri Oct 18, 2024 at 2:17 PM BST, oleksii.kurochko wrote:
> > > On Thu, 2024-10-17 at 16:55 +0200, Jan Beulich wrote:
> > > > On 16.10.2024 11:15, Oleksii Kurochko wrote:
> > > > > --- a/xen/arch/riscv/include/asm/mm.h
> > > > > +++ b/xen/arch/riscv/include/asm/mm.h
> > > > > @@ -25,8 +25,12 @@
> > > > > =C2=A0
> > > > > =C2=A0static inline void *maddr_to_virt(paddr_t ma)
> > > > > =C2=A0{
> > > > > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > > > > -=C2=A0=C2=A0=C2=A0 return NULL;
> > > > > +=C2=A0=C2=A0=C2=A0 /* Offset in the direct map, accounting for p=
dx
> > > > > compression */
> > > > > +=C2=A0=C2=A0=C2=A0 unsigned long va_offset =3D maddr_to_directma=
poff(ma);
> > > >=20
> > > > Why the mentioning of PDX compression?
> > > It was mentioned because if PDX will be enabled
> > > maddr_to_directmapoff()
> > > will take into account PDX stuff.
> > >=20
> > > > =C2=A0At least right now it's unavailable
> > > > for RISC-V afaics. Are there plans to change that any time soon?
> > > At the moment, I don't have such plans, looking at available
> > > platform
> > > there are no a lot of benefits of having PDX compression now.
> > >=20
> > > Perhaps it would be good to add
> > > BUILD_BUG_ON(IS_ENABLED(PDX_COMPRESSION)) for the places which
> > > should
> > > be updated when CONFIG_PDX will be enabled.
> > >=20
> > > ~ Oleksii
> >=20
> > I'd just forget about it unless you ever notice you're wasting a lot
> > of entries
> > in the frame table due to empty space in the memory map. Julien
> > measured the
> > effect on Amazon's Live Migration as a 10% improvement in downtime
> > with PDX
> > off.
> >=20
> > PDX compression shines when you have separate RAM banks at very, very
> > disparately far addresses (specifics in pdx.h). Unfortunately the
> > flip side of
> > this compression is that you get several memory accesses for each
> > single
> > pdx-(to/from)-mfn conversion. And we do a lot of those. One possible
> > solution
> > would be to alt-patch the values in the code-stream and avoid the
> > perf-hit, but
> > that's not merged. Jan had some patches but that didn't make it to
> > staging,
> > IIRC.
> Could you please give me some links in the mailing list with mentioned
> patches?
>
> ~ Oleksii

Sure.

Much of this was discussed in the "Make PDX compression optional" series. T=
his
link is v1, but there were 3 in total and a pre-patch documenting pdx.h
explaining what the technique actually does to make sure we were all on the
same page (pun intended) and the pdx-off case wouldn't break the world.

  https://lore.kernel.org/xen-devel/20230717160318.2113-1-alejandro.vallejo=
@cloud.com/

This was Jan's 2018 take to turn PDX into alternatives. He mentioned it
somewhere in those threads, but I can't find that message anymore.

  https://lore.kernel.org/xen-devel/5B76740802000078001DF345@prv1-mh.provo.=
novell.com/

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 10:14:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 10:14:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823320.1237292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2pQT-0005Qw-Hz; Mon, 21 Oct 2024 10:14:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823320.1237292; Mon, 21 Oct 2024 10: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 1t2pQT-0005Qp-EB; Mon, 21 Oct 2024 10:14:13 +0000
Received: by outflank-mailman (input) for mailman id 823320;
 Mon, 21 Oct 2024 10:14: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 1t2pQR-0005Qj-Sg
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 10:14: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 1t2pQR-0005kc-L2; Mon, 21 Oct 2024 10:14:11 +0000
Received: from [2a02:8012:3a1:0:fd5f:7f1f:ad43:a2ab]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t2pQR-0003ji-Cp; Mon, 21 Oct 2024 10: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>
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=OVlJffoZYvD00U9z35Ct8Fcg3jjLaCDFP8nKgCa7a2M=; b=0KW6bLgIGAq/aeur6CQle4y9qy
	KceUu0OkzN3A/5mlZagZJO1zBrvS42GMZ94/2610KOm888O8JUfv+pfZbaw2sCHT6/bFKwcxl6mUM
	zlHlei+4b0Itu0ulNA+7YJI1cdLNg/h7iz5NrpbtnGXLJWKme4mJnaqM3o5hi8oNC6+Y=;
Message-ID: <1365d02f-931a-447d-9193-46266e4963c1@xen.org>
Date: Mon, 21 Oct 2024 11:14:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] SUPPORT.md: Argo: Upgrade status to Tech Preview
Content-Language: en-GB
To: Christopher Clark <christopher.w.clark@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Daniel Smith <dpsmith@apertussolutions.com>, Rich Persaud
 <persaur@gmail.com>, Jason Andryuk <jandryuk@gmail.com>,
 openxt@googlegroups.com
References: <20241019190652.21559-1-christopher.w.clark@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20241019190652.21559-1-christopher.w.clark@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Christopher,

On 19/10/2024 20:06, Christopher Clark wrote:
> Recent patches to xen-devel indicate active interest in Argo within the Xen
> community, and as the feature has been documented and in use by
> OpenXT for multiple years, update the Xen SUPPORT.md statement of status.
> 
> Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>

Acked-by: Julien Grall <jgrall@amazon.com>

> ---
>   SUPPORT.md | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/SUPPORT.md b/SUPPORT.md
> index 23dd7e6424..4f56094356 100644
> --- a/SUPPORT.md
> +++ b/SUPPORT.md
> @@ -848,7 +848,7 @@ This feature is not security supported: see https://xenbits.xen.org/xsa/advisory
>   
>   ### Argo: Inter-domain message delivery by hypercall
>   
> -    Status: Experimental
> +    Status: Tech Preview

What is missing to make the feature supported (or suported but not 
security supported)?

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 10:49:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 10:49:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823331.1237301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2pyb-0002QX-3m; Mon, 21 Oct 2024 10:49:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823331.1237301; Mon, 21 Oct 2024 10:49: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 1t2pyb-0002QQ-1B; Mon, 21 Oct 2024 10:49:29 +0000
Received: by outflank-mailman (input) for mailman id 823331;
 Mon, 21 Oct 2024 10:49: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2pyZ-0002QK-PV
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 10:49:27 +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 24171c46-8f9a-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 12:49:26 +0200 (CEST)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2fb5fa911aaso62863971fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 03:49:26 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ecda8sm187225166b.47.2024.10.21.03.49.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 03:49:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 24171c46-8f9a-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729507766; x=1730112566; 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=3DyZ13pPdG43U6GXZMBlRYIk4dI8g09vSS0nw6afr/s=;
        b=ku+KYx0o/XsTmDJnTllw8BKH5wKEa+iobkIFV7U3rp6TlgKOWWVX9YCrpL6WXLSrY+
         PeeCKXGEgW9B9IURa99ah7hczVHhKHgM018lrP5oWPSWEiXFWX2Gwqe7QdIKg0X3T/MS
         9LZmZz6sDDh3wSuNHjuhn/KTu+ACCBExrJ/oI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729507766; x=1730112566;
        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=3DyZ13pPdG43U6GXZMBlRYIk4dI8g09vSS0nw6afr/s=;
        b=oFV9GMqIvknWpF+IY5bkyN6pLdT+2IN6sr9W6r2ERru6wBapkW2W+mspdEqllrb+pb
         JfUz4sEH936nE4YZH4oUdRIAK7JSDHO9iORAwLtV/orm+4k+EV6eTd6Jc+NiwXVgpdIW
         sTUMdGhpmLEOl5T2G7BBm1OFSn3GbyDyQiA5yKPA6PxGi1lhQMK8lMpzEpuBUevLhYDd
         3ZW59u4ckm2xF4w69cH36TiabHC0Gs/R51CQ8MpjFGyHjZ47eOj53+yLINsUa8iizcWU
         q5xKDriVOiRfSL5wjv3W8+9TC7EZ890cHuctqDMvqSJHMSuKZFbVvtX+doJDX15VUPoF
         xr3A==
X-Gm-Message-State: AOJu0YylWjI2RRbRfe+HocyGsGGYyCMHsP2+9GXXPrzlA5i80zhnm3QK
	/vBiAmGFasADNrssg2E5EGVuxlO8hBAg9wVQ1HsWjenBa8XNqNPMPv9o8cVkTDs=
X-Google-Smtp-Source: AGHT+IFZMVCRmxzwlPVV3QZDuOgGN1oMQp/obgc3HbRYvvDvQHSwwlTJIht9bCiskxHRTZN4exQorA==
X-Received: by 2002:a2e:8ecd:0:b0:2fb:4f8e:efd with SMTP id 38308e7fff4ca-2fb831ef969mr64911881fa.32.1729507765874;
        Mon, 21 Oct 2024 03:49:25 -0700 (PDT)
Date: Mon, 21 Oct 2024 12:49:24 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Message-ID: <ZxYxtIenThvt7zDz@macbook.local>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>

On Mon, Oct 21, 2024 at 10:55:54AM +0100, Alejandro Vallejo wrote:
> On Fri Oct 18, 2024 at 9:08 AM BST, Roger Pau Monne wrote:
> > When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> > repurposed to contain part of the offset into the remapping table.  Previous to
> 
> For my own education. Is that really a repurpose? Isn't the RTE vector field
> itself simply remapped, just like any MSI?

Well, the vector field no longer stores a vector, but an offset into
the Interrupt Remapping table.

> > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> > table would match the vector.  Such logic was mandatory for end of interrupt to
> > work, since the vector field (even when not containing a vector) is used by the
> > IO-APIC to find for which pin the EOI must be performed.
> >
> > Introduce a table to store the EOI handlers when using interrupt remapping, so
> 
> The table seems to store the pre-IR vectors. Is this a matter of nomenclature
> or leftover from a previous implementation?

IR doesn't change the vector, so pre-IR and post-IR vectors are the
same.

However, the table stores the value of 'raw' IO-APIC RTEs, which would
be the RTEs as written by the IOMMU code (post-IR).  See how IOMMU
code calls __ioapic_write_entry() to update the IO-APIC RTEs to use
the remapped format.

> > that the IO-APIC driver can translate pins into EOI handlers without having to
> > read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> > unconditionally when interrupt remapping is enabled, even if strictly it would
> > only be required for AMD-Vi.
> 
> Given that last statement it might be worth mentioning that the table is
> bypassed when IR is off as well.

Sure, that's fine to add.

> >
> > Reported-by: Willi Junga <xenproject@ymy.be>
> > Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> > Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 47 insertions(+)
> >
> > diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> > index e40d2f7dbd75..8856eb29d275 100644
> > --- a/xen/arch/x86/io_apic.c
> > +++ b/xen/arch/x86/io_apic.c
> > @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> >  
> >  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> >  
> > +/*
> > + * Store the EOI handle when using interrupt remapping.
> 
> That explains the when, but not the what. This is "a LUT from IOAPIC pin to its
> vector field", as far as I can see. 

Well, it's the vector field when not using the remapped format, it's
no longer a vector field when using IR on AMD-Vi.  Hence why I've
named it "EOI handle".

> The order in which it's meant to be indexed would be a good addition here as
> well. I had to scroll down to see how it was used to really see what this was.

It's [apic][pin] matrix.  It's quite common in the IO-APIC code, I didn't
want to make the comment to verbose, but can certainly add to it.

> > + *
> > + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> > + * format repurposes the vector field to store the offset into the Interrupt
> > + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> > + * longer matches the contents of the RTE vector field.  Add a translation
> > + * table so that directed EOI uses the value in the RTE vector field when
> 
> nit: Might be worth mentioning that it's a merely cache and is populated
> on-demand from authoritative state in the IOAPIC.
> 
> > + * interrupt remapping is enabled.
> > + *
> > + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> > + * when using the remapped format, but use the translation table uniformly in
> > + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> > + */
> > +static unsigned int **apic_pin_eoi;
> 
> This should be signed to allow IRQ_VECTOR_UNASSIGNED, I think. Possibly
> int16_t, matching arch_irq_desc->vector. This raises doubts about the existing
> vectors here typed as unsigned too.

It's -1 which will be ~0, certainly out of the scope of the vectors
range.

The coding style in Xen is to not use fixed width integers unless
strictly necessary (iow: when representing register values for
example).  I don't think it's strictly required here to use a
fixed-width type.

> 
> On naming, I'd rather see ioapic rather than apic, but that's a an existing sin
> in the whole file. Otherwise, while it's used for EOI ATM, isn't it really just
> an ioapic_pin_vector?

As said above - using 'vector' when using AMD-Vi RTE remapped format is
not accurate IMO.

> > +
> >  static void share_vector_maps(unsigned int src, unsigned int dst)
> >  {
> >      unsigned int pin;
> > @@ -273,6 +289,13 @@ void __ioapic_write_entry(
> >      {
> >          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
> >          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> > +        /*
> > +         * Might be called before apic_pin_eoi is allocated.  Entry will be
> > +         * updated once the array is allocated and there's an EOI or write
> > +         * against the pin.
> > +         */
> > +        if ( apic_pin_eoi )
> > +            apic_pin_eoi[apic][pin] = e.vector;
> >      }
> >      else
> >          iommu_update_ire_from_apic(apic, pin, e.raw);
> > @@ -298,9 +321,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
> 
> Out of curiosity, how could this vector come to be unassigned as a parameter?
> The existing code seems to assume that may happen.

I think it's possible that some IO-APIC pins are configured before Xen
is started, in which case Xen would need to deal with them.  I didn't
want to break that assumption anyway, if we want to get rid of this
case it should be a separate change.

> >      /* Prefer the use of the EOI register if available */
> >      if ( ioapic_has_eoi_reg(apic) )
> >      {
> > +        if ( apic_pin_eoi )
> > +            vector = apic_pin_eoi[apic][pin];
> > +
> >          /* If vector is unknown, read it from the IO-APIC */
> >          if ( vector == IRQ_VECTOR_UNASSIGNED )
> > +        {
> >              vector = __ioapic_read_entry(apic, pin, true).vector;
> > +            if ( apic_pin_eoi )
> > +                /* Update cached value so further EOI don't need to fetch it. */
> > +                apic_pin_eoi[apic][pin] = vector;
> > +        }
> >  
> >          *(IO_APIC_BASE(apic)+16) = vector;
> >      }
> > @@ -1022,7 +1053,23 @@ static void __init setup_IO_APIC_irqs(void)
> >  
> >      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
> >  
> > +    if ( iommu_intremap )
> > +    {
> > +        apic_pin_eoi = xzalloc_array(typeof(*apic_pin_eoi), nr_ioapics);
> > +        BUG_ON(!apic_pin_eoi);
> > +    }
> > +
> >      for (apic = 0; apic < nr_ioapics; apic++) {
> 
> Was here before, but it might be a good time to reformat this line and the loop
> below.
> 
> > +        if ( iommu_intremap )
> > +        {
> > +            apic_pin_eoi[apic] = xmalloc_array(typeof(**apic_pin_eoi),
> > +                                               nr_ioapic_entries[apic]);
> > +            BUG_ON(!apic_pin_eoi[apic]);
> > +
> > +            for ( pin = 0; pin < nr_ioapic_entries[apic]; pin++ )
> > +                apic_pin_eoi[apic][pin] = IRQ_VECTOR_UNASSIGNED;
> > +        }
> > +
> 
> Rather than doing this, we could have a single allocation for everything, and
> store the different bases accounting for the number of pins of each IOAPIC.

Could do, overall it seems to make the logic more complicated than
strictly needed.  The allocation is done exclusively once at boot, and
hence doing a single one or possibly 4 or 5 different ones doesn't
seem worth it.  There are not that many IO-APICs on a system.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:03:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:03:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823338.1237312 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qBi-0007fZ-8a; Mon, 21 Oct 2024 11:03:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823338.1237312; Mon, 21 Oct 2024 11:03: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 1t2qBi-0007fS-47; Mon, 21 Oct 2024 11:03:02 +0000
Received: by outflank-mailman (input) for mailman id 823338;
 Mon, 21 Oct 2024 11:03: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=uLLp=RR=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t2qBh-0007fM-2E
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:03:01 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20628.outbound.protection.outlook.com
 [2a01:111:f403:2416::628])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 083675f5-8f9c-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 13:03:00 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by DS7PR12MB6120.namprd12.prod.outlook.com (2603:10b6:8:98::5) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8069.28; Mon, 21 Oct 2024 11:02:55 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 11: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: 083675f5-8f9c-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=rqK8g0xdPP/TW/uYysbCoqlJfWsAwbSIhaKIkW2OhSBQvocKNbzK95QllzRWdH8mS0vKJVJhCOyfi89HSr7qQl/DsSrdehZtZCELEiS9AIrFLmO1vNxRfeNMgKRJ7Lh0df547BLICDz0TV01POJPyfFnowlvi9JKb0FuzQiNMl6Rlg4ICtTNBKj86HTa0qkoutBOTMhf6PzxYIhhfBG7tANUpIFiNYLXwcNhFfrX0dWzOsFxxWpqeV0B4UOgSahbGrb6YwzVb+vB5k/LSpW/wUul/H70CfCzkd/Vx6ftocGGLcVJnB/CE4t7ZvCjlVqlNQlUmWiguD0CKiq0Q0hrVQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=6gu3+tSqcU7KtepL///lS71wax8NI7Od2LlMsiW3swo=;
 b=Kg4YPmxLbumiZmqb8kNF7DdMa+uLfGdr7s3+1fC52rTLIDCfBwTDeBpKoPXydujplBqhCx3QJM7pz9LNwXm5EznES3oluiC5bxhcfh42nlbOlFonGAizWtIf8Ne+N2iHOXEdOXwXpGxE2tDUP7n65LK+dxjkeYTrkyNLnvt42rwQ5vULYNAdB7GNCusZLgT2qa3wSmHm450Q6/Z/YbrayNdWfrIDtXS/nh81RpM3RpiiafynKMwYjNMIJhevkOL9F7rS5wRSP8WQ8ILQnf/E/HGzXmjBck2/nlUGjpYoiKEU8vd3EW3l+DHtfzNfkm9R+Huq9GeiWfU0XeXu+9puPA==
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=6gu3+tSqcU7KtepL///lS71wax8NI7Od2LlMsiW3swo=;
 b=Hj3qp7GN3o8iJ6rkhDEKuqdc6Wnl4jLtlamN1NWQa8qmfjhqVCYxSjSGHam+oilovTeYii1O5UBN6QhGWG33+WOP9XuS5Q3jI0hGLaouEwxUQQaAQhy/QhxvwtcwLaaNdkaRaLMMbum2OCG/lBS9zsJudeK+UWAQg681yzlAhCY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <eeea2dd9-56de-4ec1-a1fe-c3480a5aa35e@amd.com>
Date: Mon, 21 Oct 2024 12:02:49 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 0/6] Enable early bootup of AArch64 MPU systems
To: oleksii.kurochko@gmail.com, Ayan Kumar Halder
 <ayan.kumar.halder@amd.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>, Jan Beulich <jbeulich@suse.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <1915f5c78a9282d4b00c330c59749f22e6dd4ef8.camel@gmail.com>
Content-Language: en-GB
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <1915f5c78a9282d4b00c330c59749f22e6dd4ef8.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: PA7P264CA0034.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:34b::15) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|DS7PR12MB6120:EE_
X-MS-Office365-Filtering-Correlation-Id: fbaabbc7-662c-4929-18c0-08dcf1bfea6b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?bmZ1UklxTUUzazhrQzlJVWFleW9uYVcvRWo2U0tPeEE4MnphelJwK3p1R0lP?=
 =?utf-8?B?YWxwMi82S3REaU1rOE9scEw0WkZVRnMxZzViRXhocnpRbGJEZUQ3S2RrbXMw?=
 =?utf-8?B?V0pNTGhWSFUwSm9UNDJhRUFJS1hpTHorTTFLaGkreUZtYTlaSXV4dlNlZWVy?=
 =?utf-8?B?T2c1NHdxNHlpc0NmYlpiZkRDRU9KV0hBTkJZZmo4aVcveWRhY3NXT0YyRkVs?=
 =?utf-8?B?LzBFTDdWQkd6aHNnK0lBT3BoaDN1bU04NXhUQ3VhUHZVaUhKWnlYZXpsMDRa?=
 =?utf-8?B?eFVZanh4dnFScnBnRlF1OWNhSTRvaENRYzBjWWxiRm45TElxbjVzWHJTV3g5?=
 =?utf-8?B?aDlmZzRKcFJxaWtDS1J2TkVVMVNkd2ZzS1FHYmhqVmVGZjVWTldaT1BmK3RV?=
 =?utf-8?B?aUFadXhYQnhpL3J0aUxiQncyRytmWTI4Mjc2Z3o2eDhwQ0xEMkx1aHhUdGox?=
 =?utf-8?B?ZVo2bVhrMFhHLy9CcWZRcVE0NXFIQlRzeFFmR2o5UzNEcC8zQktqN3cwdE1J?=
 =?utf-8?B?N09OVmFxVFl5b0UyVHI1eDF2MUVmTlRXTmhTMnFsRGJqNG5BQm95VXhhRUd5?=
 =?utf-8?B?aVBNUkZ3VllrN20yQmpwVjl4WndZNjRESnR6cEsyLzc3MnhzM3VuMEVBenJt?=
 =?utf-8?B?TVcyeDdBWm1XMWhYN21aV1NUZjNtNnVITU5rc0xjRllRbkQrVDdlazQyNHlr?=
 =?utf-8?B?VTJYbHlFZzNtUkhwcmhmNW8wYjkyYTlSbDZ2NVFjMm5PWWZ3WmNwaGIrbUpP?=
 =?utf-8?B?ZThOejMyNmhTKzJKS0J4S0QvM3ZjdEkvK0l5ZGNHVmlMbk0zdmVzQmVtVDdE?=
 =?utf-8?B?NHFiVHdsaFF3M0FNeWIrSktSVU5zTkJqU3hTQjVGM2ZiNUpVVVdZb3FieWJ4?=
 =?utf-8?B?VGwyd2IzNCt4R3FqenRyZTdCa2FUVzBlSHU0WlVtT0RJanJING1iTFY4aUtZ?=
 =?utf-8?B?K1I4QjFReVNiZHNlOUxGY09kNGQ2aURLRWVxK2NObXVmUXpocDNrcTdnZktM?=
 =?utf-8?B?eS94WkFUZUpKWEN1Uko3WHdJNVNLemVOUFVLY0g1c0xjVXJTUVo3REoveUdQ?=
 =?utf-8?B?aE0xN0RVdi8yMGFpd2V0dnVjSEJwcUZyNXY0MHRUcWRiWEZCaURUNHliWnl4?=
 =?utf-8?B?SzBqRTdvNytPdlpyZmhHMHc4MnRQN3E4SDlBRGxiNGIwN3l1R0hFQ2U2Rits?=
 =?utf-8?B?Q2thMGVyaFRicFNKMmh0TURadlVhMjBFYmJJT1ZFNVB4MDd2UEdKUVVaR1pR?=
 =?utf-8?B?QXNkK0g4TmxlS1FQRGNDSWs5UlozRHJnL0VhM3p2bktSV3F2MkpaeHh2Snpr?=
 =?utf-8?B?VW04UDdyYUQzaG5rdWpjUXU1NHA5SGNlTEpYOHNtbVFCM1JNMkhvU3BreGti?=
 =?utf-8?B?dWQ4NHAxMWNicUhwc2xrb0xOalM2aWxDWWRqUWY2RXh1ME5LNzdnVWVmSThk?=
 =?utf-8?B?SXFMRndzUktrUzBuREtDbkh3VTVaNUo2UkYxUndlYWZjMzJpQXRHdTRReEZ5?=
 =?utf-8?B?Z24xUWRoOG00cDU2bEp5SkR4V0pSWmgwVnZVVVBUWkwzbEMxMmVxekhzOGtl?=
 =?utf-8?B?bGF1OFpzRDI4Q0dWa1RQMEdoblRrbnRhZXc5Z1QzcGhqQjZVVVh2cWw0c0J0?=
 =?utf-8?B?anh3TzlzUCt2QWZ1ZnlsbUtFUHVXZE4zelQzMnovTG5kc1FBWGovZThGQUZO?=
 =?utf-8?B?SkZFVjQySmVITEJ0WnVMQythVFBJYlpQR1czVkUzV2lVYzF2bUQ2K3ZyTTJw?=
 =?utf-8?Q?+bFQwAtf9DbrqzjxhQcJolyhiAqun/SL/PPmUa1?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aFB3NEJwMlRXUnNIbW9zeWd6REIxTVNqd04vQ1NZc0t1NkJMYmdZZnFFbGZt?=
 =?utf-8?B?KzlQSnFNb3I3TGgralRHMENkMmJoWUJwNENFdVdBZHNPVkQ4SWw5d1VodHVQ?=
 =?utf-8?B?S3Z5ZzRCa1BZOGZoOG9GKzY3ZytQRWZ4Z21HWTdFYkNoMmZ0RHRkQkxsZVFV?=
 =?utf-8?B?NkdlQ2NQMytnYmtmYzAvZ2xXREpZREVvNHNIcXl1UjYrN1JsVDV6UXovcXY5?=
 =?utf-8?B?eStkZE16djJnVm9WcGhONlFHQ1ZzK0lrVHgzRHpQNlZNY21KQ3VCSU9SR2ti?=
 =?utf-8?B?TTZmV09NQTdmWFJLOEI2dlRKcU5IdlVDMWd2VnBMWS93dHRTczBFanhhZVBK?=
 =?utf-8?B?QTRHSXlOcTB2aVZ3YWJ3MzJUNXJVOU82ODkyK1BWajd0dFRYeS9teTFQN2Zr?=
 =?utf-8?B?aUJJbitYRUxYYzhPek4xTzZ6ak1FcUgvNXFBWFVybEVGZVQzWFNmbDllZG11?=
 =?utf-8?B?WnpET3JkNDZwb2NzL1ZWUmFCUHpMT2p5eTJHcTI0MUllQnJVSUJvMHp1b0t5?=
 =?utf-8?B?OXowWTcrSmxCTEVLYTAzRUJma0FyOHNGTEJSZUdTWVExMFJwL1k1cVA0Mlo4?=
 =?utf-8?B?VEVQTms1WEIreGwrNnU1THVORE9JVEtiZ0JDR1IwaDRyYTh0dXNQY0JweUlS?=
 =?utf-8?B?KzE4dzJCNVNIbWdBYzFSK3ViY3JBd0huRGFtZzhTRStkQy9uQTIvbDhoVmxz?=
 =?utf-8?B?UDJtSkVHRC9lUDFuZXpMN3lMaVhleUlvTXd3alBiclNXdnBEK216MHcrWXJ4?=
 =?utf-8?B?cG9WcjBMbVVtcWRDR29NOXM0L0x2cE9EZFk0WGRaM1V1V1lyQ0ZlRVlGWith?=
 =?utf-8?B?bjRYVFE0L1l2bkIrYUM0dHBkTTdBVGJ1U3pBcWFmNVJhNU9RZHNLSkpTNHls?=
 =?utf-8?B?ZHFkK3h4MFdObEdtb3YzbWJDSmFzeHJzUkFMZ25iSlk0aWxYRUM2aEVsTU50?=
 =?utf-8?B?blJIMUNhQ1krVG02dHlHTytKaHRhelVCK1lyZ1oyc05xVGpCV2h1dmdvdWpz?=
 =?utf-8?B?SlR1azlMRFNyUno1YVQxQ25VemRpN3JOd0FlZFZmanJZcGl2TmROSWRFU25I?=
 =?utf-8?B?TGFSMUxwYTJsdUs4VUJFdlNsaFh5VHF4UGJsSFR4ODE3MkRYY01WbGU3K09k?=
 =?utf-8?B?VDVwdkxib3ByUG9JZDZ5WFZmK3Zvc0hyWFV2bGI3bU5PQTFGdXlqajhzRVV1?=
 =?utf-8?B?bEhmM2ZldUJZU00zUjBhVHJUbU9kRnRzdnhGWlBDbFhaS2tnZVhRMERJZFVl?=
 =?utf-8?B?SldMQUx4VnZRTHZPWXYyQnR4bUl2NFBsK3Mrd1kyUnpPZkgyNUc4SzNhUkdk?=
 =?utf-8?B?TUVvTzlzZU9oL3B4TXcyREdSMzhKM2wrQmZ5UlhBT3JQWkJCRnpwb0xNaFVi?=
 =?utf-8?B?VWlTamxFV3c2NXdCVFVUdjMwZTFwVGo1YVhmRnhoSXpVK2NNM01JS1M3RG91?=
 =?utf-8?B?WUYxY3U4am5MVHR5UzFPUGRSSWkweittRExPeVpyTEl3TVNhemJFSUpNMDVO?=
 =?utf-8?B?RWZvRkJsaExRcHd5RzFkV0k5K2VmTmgrMHYrcWttcXZpbURvNXJzTmExbVlF?=
 =?utf-8?B?UTlGVS9VT0JvQjZDYlU2VVFoZnFkUE5yZzhKaUJpVUxwQS83WXAwQlppT0dX?=
 =?utf-8?B?QUIyVDF1Zm1RZ1ptUk5Oa2xzZG5WVklpVjJrNXNKUWF0OXJlZElDaFdJNFd6?=
 =?utf-8?B?dTN4NEZFTjB0Q1RDUnY3V29ucHJ0Q1FvWnM2RmVRZ1JPUEJqTTZmWllmbGIx?=
 =?utf-8?B?MFNveTZ2eU1yWTAvWEQrcllzZjhwMVZ1UW9SRTNVZlNYK09TaDRXcFQ2SDhT?=
 =?utf-8?B?em9wa3FsWjRVSGdPaXBEVTVpZjlhQ0xjRTFxbms1b2tFWjJ2R1Nxd2NJZjVF?=
 =?utf-8?B?Y1lnZjBjc01GSTRZU1VBWnArSzEwRCs2OERvQWNCcXhhajNCNU1XcHozK2gy?=
 =?utf-8?B?Vk1vVW5wNkJSS2pkMXBZZUxHRnJKZHh2WSthK0s0U2ZxRjIwNmpvYXRtamRR?=
 =?utf-8?B?ZURJU3JvT0FpU0p6c1I5cUUxcDBjdUdDdjhRU0NqbXR6eDdpODlVUVMvMW5I?=
 =?utf-8?B?ZzhTU0JtUG9UeERnRWR1djRFeW9ValZScEI0OHIyTnk0TTBIclZZUVlKSVFG?=
 =?utf-8?Q?UXPry2aaNtTP36oVuPbLU4whp?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: fbaabbc7-662c-4929-18c0-08dcf1bfea6b
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 11:02:55.6719
 (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: WfnBSynLXM+X7SusbZIH+TPBe3oT28PapYMa5mGEwDDbaOA1OWgs02iq2EZI3Ge+xjS/OWGH2lyDvJzm2fxcFg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6120


On 10/10/2024 16:40, oleksii.kurochko@gmail.com wrote:
> Hello Ayan,
Hi Oleksii,
>
> I think that we have to mention in CHANGELOG.md that experimental
> support of Xen with MPU for Arm is added. ( if I understand correctly
> what is this patch series about ).

Sure, I will add this. I will send this in v4.

- Ayan



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:05:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:05:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823343.1237322 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qDe-0008FK-J8; Mon, 21 Oct 2024 11:05:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823343.1237322; Mon, 21 Oct 2024 11:05: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 1t2qDe-0008FD-Fr; Mon, 21 Oct 2024 11:05:02 +0000
Received: by outflank-mailman (input) for mailman id 823343;
 Mon, 21 Oct 2024 11:05: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=xEjj=RR=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1t2qDd-0008F3-0P
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:05:01 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on2062c.outbound.protection.outlook.com
 [2a01:111:f403:200a::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4ecf4de6-8f9c-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 13:04:58 +0200 (CEST)
Received: from SN4PR0501CA0118.namprd05.prod.outlook.com
 (2603:10b6:803:42::35) by SJ0PR12MB5662.namprd12.prod.outlook.com
 (2603:10b6:a03:429::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.23; Mon, 21 Oct
 2024 11:04:52 +0000
Received: from SN1PEPF0002636A.namprd02.prod.outlook.com
 (2603:10b6:803:42:cafe::f3) by SN4PR0501CA0118.outlook.office365.com
 (2603:10b6:803:42::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.8 via Frontend
 Transport; Mon, 21 Oct 2024 11:04:52 +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.8093.14 via Frontend Transport; Mon, 21 Oct 2024 11:04:52 +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.39; Mon, 21 Oct
 2024 06:04:51 -0500
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.39; Mon, 21 Oct
 2024 06:04:50 -0500
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.39
 via Frontend Transport; Mon, 21 Oct 2024 06:04:49 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4ecf4de6-8f9c-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=slqEaA8m9bFlzq4ia3DLzvWvqPoVykdu5wAHTzabC8EhDxLK462NJSX2sa7vki24SB+XoOuK8EU27GiiN9DC5Jj2g0sPXz0quZMXBuLx1VvZngwTOVYe98s1nRl13Ek8H2Qo9Nplew0XG/xau0X+ObuZSyriiwCU/F3+c8Bb413j/xK3PUAYAOPV/n/udPPfrY5d0mfd2YVUIXEa1dMM0w7zpHYY9OV2Ra+kurx8sDQOpa4q5QrY8U/EEzX8R7pWPVz3hPDS0UlHEDT4t+1GIonZLLIjxyZgFG4YQpdWIq1pfrEob/6zTW9bWutp087YI2UrpMDkqiu3Q5YqCkKETQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=/y+1fO09HSxr0gr6oFKsCoLLbaVbP4p7XDQyh3mR+Bw=;
 b=pDww5FuAkyhGHQFDFzPOsGWaYsP3A3muQ2DZiV0hlB9DYkQ0yyfNlLSw7hX9Ggr/Y0dx8JgrVlWJrsmrEDpQJsOtbf/uGFTfefFyzll/Uei+CrtORsYNOXPbTUV+XX9QiWFvc4eZbY7KfHeEFXkcmTmby5K9pIeNm2W5NS8drpn3MyF1Cpqz58i2QfUeohKdsuDQ16C14isuR3rIJ5MqmT3CeJAVjlNRbKGQ3bZMGb+pUkbJ/sNw5E673Rg4q4o2iOp1fceMymDGw8TcqT4ZRuCRQAH7G1rp7gttWB7WCeiFa5uvEpi4I3XyGUkoS82ctieoyfGKQ3CEu6kr+TBgfQ==
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=/y+1fO09HSxr0gr6oFKsCoLLbaVbP4p7XDQyh3mR+Bw=;
 b=oyOqlr0i5WxAYMCSGLVHhWT9ZfJsWBEHQ2jzmicL4QjajH6DI8bgrJ73QxNu6Eka1qdZbU+FYpODUOFDPrkDJbddg0yZTtrM01ccSd92v1eZ6zzBaHwuUA49ophUhJJsjGRH0y3Ta8w2SSRSp2d6M4c/eGEdu0CYKt7GGEKntqs=
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] Fix device tree node naming
Date: Mon, 21 Oct 2024 13:04:46 +0200
Message-ID: <20241021110446.8633-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
Received-SPF: None (SATLEXMB05.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF0002636A:EE_|SJ0PR12MB5662:EE_
X-MS-Office365-Filtering-Correlation-Id: e0c6cb4e-68e9-457b-d11a-08dcf1c03013
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?36wJ3dMmZJdKwgYWCxpgIcAASs5M1HwBSQS4DV8unz7xlL5RKAOYrb492rMk?=
 =?us-ascii?Q?htDP8iFSE1FboDGnKqUOTFMVH1+V+gKDS7Hqb/8DbI+Z+Tqn3pf9F3+lO+9B?=
 =?us-ascii?Q?EtJx3sGdae/0ff/CRMZxl2ZS8GCQ7xjLeMZV3JDf9qHYL82ovMZ7If22+YXE?=
 =?us-ascii?Q?zzfIQ+lmSlwY0/AhLIj0MguZrJYBUrDm9Rh6GsW+V4rSpPoz2sBQawe1yTbn?=
 =?us-ascii?Q?J/JqDIlTDtgly61fZ1flOmBcGtEg3R45jbtT7NNCHcdupOmAsc4sx9ozQQKt?=
 =?us-ascii?Q?ac1lXOKc5Dp/Gzd8KnxUEHPx7jSrnJIcuZB0HDyjGvlOqtCRbgv1JRZ0b0Fz?=
 =?us-ascii?Q?/9SU3uRf+Aw/N83vZ615m3pnoBQS4cpX/MtwRDzg/jhGNTOkJC9x0o3L16PW?=
 =?us-ascii?Q?yLcr9k9MPckpMIDJLKETDHpc0hG/w4uBURdajlTSGTLcERgaepHCvAVAAcqp?=
 =?us-ascii?Q?XvXig+MVfsODPkmeGllJKc1bQL1OU693dmnZCFt2yCDN2SfXPcsEpnH+C5Ha?=
 =?us-ascii?Q?vt4zQQNCNpGfblFQPS+ftaSm5jupZKVy3E33AizRCShrQbn/85uixuyKkbWf?=
 =?us-ascii?Q?ve3TG0l5HZ1JurnPfu93DSSRbZxtZob+Lym/jE0O87QetXr2m6NUzCKhcwAT?=
 =?us-ascii?Q?EggXZ09C4BSwhFO/b33wUob1igzl5nGOJD1vV7+ECgODXibJmlkTtDCL7chS?=
 =?us-ascii?Q?VmCbedgUjJ5eINJIRpKB0njU6UVLGoXbyjiYST4nZg9gyzZ1DxWIVJP9y9CC?=
 =?us-ascii?Q?ay1/zJ1iKn6ysF6YUQzDmm1w8DQPrv266gm9g0aRWc7UghPyqjnU8rkN/WlV?=
 =?us-ascii?Q?Z5Fob9riVjD62OHf5iPTu/i48k9f+Y1f6qPFjk9SDFlLkIBH4TwvTVt5b/P/?=
 =?us-ascii?Q?OaSsOYqOKumZX1+JlQDZTymNNzdEspbgWmHNQlAtg2tnCeYPrbZ56kFUl8+I?=
 =?us-ascii?Q?aReb0mtZ8UBiLwonVd/TwG19O1dcIb+bbWLmCmGUfeX6RzBNapOWK1GjEyrs?=
 =?us-ascii?Q?KwfdSZY9I31NMIRn/Ul8ZDZ/+T7RA+bIOH8q++Cbf2PCeefZ0NZy4poKsLqq?=
 =?us-ascii?Q?Hs25lqwG7pHEnIiocC7LsubhtWSCRo002+9IV8XfzbCE+IRDKrCNwgTMW2gM?=
 =?us-ascii?Q?421FoDyQTu8h/auKlevvEerUSGNAgh0QcQO3hhHdVeUcbwpqv9V9LJ6hEgrU?=
 =?us-ascii?Q?lAn5TlVoVCP9DFDGMPnZi6eV1Te+o2mvHzm3btMqmrJHd9fbovj5LjG7W/IJ?=
 =?us-ascii?Q?+Axi5VM94r6CAWB6cWuw60+5aFvnKSMLPCejqu0WIKjGEpUlIuRhhlIFzvY2?=
 =?us-ascii?Q?Dso26ohqzKcYfItVsVESXjncUmXaDVhQZd/Z6DvL/xFPRGHf3BIhPxIeVPR7?=
 =?us-ascii?Q?31wZnikmiSeCFdX1cYg/QgBwQCL9GVUS5u3jOpTcSdWV9GO53g=3D=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 11:04:52.1606
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e0c6cb4e-68e9-457b-d11a-08dcf1c03013
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: SJ0PR12MB5662

A device tree node is named as follows: node-name@unit-address. The
unit-address must match the first address specified in the reg property
or be omitted if there's no reg property.

Fix the following issues:
1) domU modules are named as: node-name0xunit-address. Fix the naming to
   follow the device tree spec.
2) dom0 kernel and ramdisk, despite having the reg property do not have
   unit addresses specified. Fix it.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 scripts/uboot-script-gen | 39 +++++++++++++++++++++++----------------
 1 file changed, 23 insertions(+), 16 deletions(-)

diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
index f8a087b881ce..f10e5f4a49bf 100755
--- a/scripts/uboot-script-gen
+++ b/scripts/uboot-script-gen
@@ -106,11 +106,12 @@ function add_device_tree_kernel()
     local addr=$2
     local size=$3
     local bootargs=$4
+    local node_name="module@${addr#0x}"
 
-    dt_mknode "$path" "module$addr"
-    dt_set "$path/module$addr" "compatible" "str_a" "multiboot,kernel multiboot,module"
-    dt_set "$path/module$addr" "reg" "hex"  "$(split_addr_size $addr $size)"
-    dt_set "$path/module$addr" "bootargs" "str" "$bootargs"
+    dt_mknode "$path" "$node_name"
+    dt_set "$path/$node_name" "compatible" "str_a" "multiboot,kernel multiboot,module"
+    dt_set "$path/$node_name" "reg" "hex"  "$(split_addr_size $addr $size)"
+    dt_set "$path/$node_name" "bootargs" "str" "$bootargs"
 }
 
 
@@ -119,10 +120,11 @@ function add_device_tree_ramdisk()
     local path=$1
     local addr=$2
     local size=$3
+    local node_name="module@${addr#0x}"
 
-    dt_mknode "$path"  "module$addr"
-    dt_set "$path/module$addr" "compatible" "str_a" "multiboot,ramdisk multiboot,module"
-    dt_set "$path/module$addr" "reg" "hex"  "$(split_addr_size $addr $size)"
+    dt_mknode "$path"  "$node_name"
+    dt_set "$path/$node_name" "compatible" "str_a" "multiboot,ramdisk multiboot,module"
+    dt_set "$path/$node_name" "reg" "hex"  "$(split_addr_size $addr $size)"
 }
 
 
@@ -131,10 +133,11 @@ function add_device_tree_passthrough()
     local path=$1
     local addr=$2
     local size=$3
+    local node_name="module@${addr#0x}"
 
-    dt_mknode "$path"  "module$addr"
-    dt_set "$path/module$addr" "compatible" "str_a" "multiboot,device-tree multiboot,module"
-    dt_set "$path/module$addr" "reg" "hex"  "$(split_addr_size $addr $size)"
+    dt_mknode "$path"  "$node_name"
+    dt_set "$path/$node_name" "compatible" "str_a" "multiboot,device-tree multiboot,module"
+    dt_set "$path/$node_name" "reg" "hex"  "$(split_addr_size $addr $size)"
 }
 
 function add_device_tree_mem()
@@ -314,17 +317,21 @@ function xen_device_tree_editing()
 
     if test "$DOM0_KERNEL"
     then
-        dt_mknode "/chosen" "dom0"
-        dt_set "/chosen/dom0" "compatible" "str_a" "xen,linux-zimage xen,multiboot-module multiboot,module"
-        dt_set "/chosen/dom0" "reg" "hex" "$(split_addr_size $dom0_kernel_addr $dom0_kernel_size)"
+        local node_name="dom0@${dom0_kernel_addr#0x}"
+
+        dt_mknode "/chosen" "$node_name"
+        dt_set "/chosen/$node_name" "compatible" "str_a" "xen,linux-zimage xen,multiboot-module multiboot,module"
+        dt_set "/chosen/$node_name" "reg" "hex" "$(split_addr_size $dom0_kernel_addr $dom0_kernel_size)"
         dt_set "/chosen" "xen,dom0-bootargs" "str" "$DOM0_CMD"
     fi
 
     if test "$DOM0_RAMDISK" && test $ramdisk_addr != "-"
     then
-        dt_mknode "/chosen" "dom0-ramdisk"
-        dt_set "/chosen/dom0-ramdisk" "compatible" "str_a" "xen,linux-initrd xen,multiboot-module multiboot,module"
-        dt_set "/chosen/dom0-ramdisk" "reg" "hex" "$(split_addr_size $ramdisk_addr $ramdisk_size)"
+        local node_name="dom0-ramdisk@${ramdisk_addr#0x}"
+
+        dt_mknode "/chosen" "$node_name"
+        dt_set "/chosen/$node_name" "compatible" "str_a" "xen,linux-initrd xen,multiboot-module multiboot,module"
+        dt_set "/chosen/$node_name" "reg" "hex" "$(split_addr_size $ramdisk_addr $ramdisk_size)"
     fi
 
     i=0
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:10:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:10:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823354.1237331 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qIp-0003vv-8T; Mon, 21 Oct 2024 11:10:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823354.1237331; Mon, 21 Oct 2024 11: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 1t2qIp-0003vo-5q; Mon, 21 Oct 2024 11:10:23 +0000
Received: by outflank-mailman (input) for mailman id 823354;
 Mon, 21 Oct 2024 11:10: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2qIo-0003vi-73
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:10:22 +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 0fd1a5b4-8f9d-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 13:10:21 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99eb8b607aso448643566b.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 04:10:21 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571ea5sm188718066b.160.2024.10.21.04.10.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 04:10:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0fd1a5b4-8f9d-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729509020; x=1730113820; 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=RdQr/WUPUYdYFMMdvsLv83oQ5FLo3thV2YYeKX+s5k8=;
        b=E4K5t3xv/Qh08jiIuakGnBdu/51BohKwaI8na95Dpa3otwA4id7Ku6ohtvfKcIxdYv
         bU7w3vhQAE/z/0eyyPKbJ1SRuAiuom9EqV45HhiD5zO5lAE5b6jmVOLw7ECfF5h0DUGf
         78aG56qOJAc1XcVGMCqp8bijDXMgQ6Ul2SLdw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729509020; x=1730113820;
        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=RdQr/WUPUYdYFMMdvsLv83oQ5FLo3thV2YYeKX+s5k8=;
        b=A+iymG6EknwZbIAh8sdyL+DhPQ4OtgiZrzz7uvOX2MbSdYRWgvYfydddxi2yJi+7gt
         /A/DDd3UHsR9919W+AD35Ubsrw+tnFo2w7khl+oYQFrqCck11jNDmGVg1C/z0udmllHk
         8c42SlkQ9c6YnjMJEFyky0GyIsZbEC+XoerbdXW1hNXdMUcw8RsYulxLdC4IKa0inzD3
         BJdcNN/O+Vsu3ryFQIBFeTKdFqokLApgX1W9K2K1djlMg60jMwGa7yL6LhgNtD6eBbKq
         NB/JGvMrrfciefTdVBWHuP0ff6x0vt24vsY3vCvb2ueBJrZseUlB1oY9LGv7ns3rMKHo
         DU0g==
X-Forwarded-Encrypted: i=1; AJvYcCXWSq8HEw0/gjH93XhTd0Vs/qHzJbtyjMr+lOf6ZpL+eOBk2DTdivNp5tOjDEjW96RYtiiPmzuSvkA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yze6byMJgxJxUPSP80vGqUo3aR5ReMbkz5gRlYsM6gTOK/G4ySx
	w5iG/XD5wWvQDn5p+QuAcqlgn2DQTYFPXo+cf0NQwU9Xr/jbn8CUrSYhW0AcSpI=
X-Google-Smtp-Source: AGHT+IFkeCsmjf55MisGwN/cfMHmCRnZuCle/ahoV4SwGgN2hmeD9dwnWLVKzb9z5asYFSFOPbM3XQ==
X-Received: by 2002:a17:907:1b81:b0:a9a:835b:fc8e with SMTP id a640c23a62f3a-a9a835bffd1mr540871066b.54.1729509020453;
        Mon, 21 Oct 2024 04:10:20 -0700 (PDT)
Message-ID: <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
Date: Mon, 21 Oct 2024 12:10:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Willi Junga <xenproject@ymy.be>,
 David Woodhouse <dwmw@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241018080813.45759-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18/10/2024 9:08 am, Roger Pau Monne wrote:
> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> repurposed to contain part of the offset into the remapping table.  Previous to
> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> table would match the vector.  Such logic was mandatory for end of interrupt to
> work, since the vector field (even when not containing a vector) is used by the
> IO-APIC to find for which pin the EOI must be performed.
>
> Introduce a table to store the EOI handlers when using interrupt remapping, so
> that the IO-APIC driver can translate pins into EOI handlers without having to
> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> unconditionally when interrupt remapping is enabled, even if strictly it would
> only be required for AMD-Vi.
>
> Reported-by: Willi Junga <xenproject@ymy.be>
> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Yet more fallout from the multi-MSI work.  That really has been a giant
source of bugs.

> ---
>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>
> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> index e40d2f7dbd75..8856eb29d275 100644
> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>  
>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>  
> +/*
> + * Store the EOI handle when using interrupt remapping.
> + *
> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> + * format repurposes the vector field to store the offset into the Interrupt
> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> + * longer matches the contents of the RTE vector field.  Add a translation
> + * table so that directed EOI uses the value in the RTE vector field when
> + * interrupt remapping is enabled.
> + *
> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> + * when using the remapped format, but use the translation table uniformly in
> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> + */
> +static unsigned int **apic_pin_eoi;

I think we can get away with this being uint8_t rather than unsigned
int, especially as we're allocating memory when not strictly necessary.

The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.

Vector 0xff is strictly SPIV and not allocated for anything else, so can
be reused as a suitable sentinel here.

> +
>  static void share_vector_maps(unsigned int src, unsigned int dst)
>  {
>      unsigned int pin;
> @@ -273,6 +289,13 @@ void __ioapic_write_entry(
>      {
>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> +        /*
> +         * Might be called before apic_pin_eoi is allocated.  Entry will be
> +         * updated once the array is allocated and there's an EOI or write
> +         * against the pin.
> +         */

Is this for the xAPIC path where we turn on interrupts before the IOMMU ?

> +        if ( apic_pin_eoi )
> +            apic_pin_eoi[apic][pin] = e.vector;
>      }
>      else
>          iommu_update_ire_from_apic(apic, pin, e.raw);
> @@ -298,9 +321,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>      /* Prefer the use of the EOI register if available */
>      if ( ioapic_has_eoi_reg(apic) )
>      {
> +        if ( apic_pin_eoi )
> +            vector = apic_pin_eoi[apic][pin];
> +
>          /* If vector is unknown, read it from the IO-APIC */
>          if ( vector == IRQ_VECTOR_UNASSIGNED )
> +        {
>              vector = __ioapic_read_entry(apic, pin, true).vector;
> +            if ( apic_pin_eoi )
> +                /* Update cached value so further EOI don't need to fetch it. */
> +                apic_pin_eoi[apic][pin] = vector;
> +        }
>  
>          *(IO_APIC_BASE(apic)+16) = vector;
>      }
> @@ -1022,7 +1053,23 @@ static void __init setup_IO_APIC_irqs(void)
>  
>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
>  
> +    if ( iommu_intremap )

MISRA requires this to be iommu_intremap != iommu_intremap_off.

But, if this safe on older hardware?  iommu_intremap defaults to on
(full), and is then turned off later on boot for various reasons.

We do all memory allocations in setup_IO_APIC_irqs() so at least we get
to see a consistent view of iommu_intremap.

I suppose there's nothing wrong with having an extra cache of the vector
in the way when not using interrupt remapping, so maybe it's fine?

> +    {
> +        apic_pin_eoi = xzalloc_array(typeof(*apic_pin_eoi), nr_ioapics);
> +        BUG_ON(!apic_pin_eoi);
> +    }
> +
>      for (apic = 0; apic < nr_ioapics; apic++) {
> +        if ( iommu_intremap )
> +        {
> +            apic_pin_eoi[apic] = xmalloc_array(typeof(**apic_pin_eoi),
> +                                               nr_ioapic_entries[apic]);
> +            BUG_ON(!apic_pin_eoi[apic]);
> +
> +            for ( pin = 0; pin < nr_ioapic_entries[apic]; pin++ )
> +                apic_pin_eoi[apic][pin] = IRQ_VECTOR_UNASSIGNED;
> +        }

This logic will be better if you pull nr_ioapic_entries[apic] out into a
loop-local variable.

It should also allow the optimiser to turn the for loop into a memset(),
which it can't now because of possible pointer aliasing with the
induction variable.

But overall, the patch looks broadly ok to me.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:13:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:13:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823362.1237341 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qLY-0004WL-Kc; Mon, 21 Oct 2024 11:13:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823362.1237341; Mon, 21 Oct 2024 11:13: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 1t2qLY-0004WE-Hu; Mon, 21 Oct 2024 11:13:12 +0000
Received: by outflank-mailman (input) for mailman id 823362;
 Mon, 21 Oct 2024 11:13: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=uLLp=RR=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t2qLX-0004W7-3c
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:13:11 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20608.outbound.protection.outlook.com
 [2a01:111:f403:2413::608])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7358cce8-8f9d-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 13:13:09 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by PH7PR12MB6466.namprd12.prod.outlook.com (2603:10b6:510:1f6::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.27; Mon, 21 Oct
 2024 11:13:04 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 11:13: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: 7358cce8-8f9d-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=MFAK4Q8jh0lexQ7oiLkRzvQTeV9qdzAf/3Bqc7eQ5mOTnAyAAKokf/RkHrPEs+nH1gxHb0j2cM7BeYECofpWQ+8t3rcAlA7329B5ZZI8BfUvItltfvvGSmkqGX0y6pfmevKjh2LwGe3CdzNreTe0xqpOg3P867wN/C3UVpUXA7r6h1Q495NnECq2vImlNVSOe4kBzoQRBoArVMqPAklB1JR3St/kT5hbP01G96146tyEfjDPsBBeFCNn2qkN8wTc1Xu0d2oOzP7F5b6zy99GAZbPHPL+KAL1tmiQ7ec/nm4Ibgmo8wo8BL20VnWrHtJRsQM2hyj/3Iiwoeltz7h4UA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=G/hq6ogFFoePwgmFZF9miXV3OIKmYM6Dzdrg5I2d4RQ=;
 b=hnjzUJbxKElX1HJtyRbkblqQi87rE8FeIdtbExHEukkGWfakPQhJfA/dzhG2ZXi/35JvIA+vyCu+RC0N1e/ywYUmRiUT+9bJM6nXp26oTADVlilzQL1WuehxyZmjM3dXV/EIr2AX51eYRmxkYQwrC/02u5XpMgIOag4beP5ezWuk6Hw7D4hyckMRjiA0EQrlWlKGhl7j7wTjbL1UwHFpCPpUbDUZsenjuBLRfn73DtIjoZrvs6cOTeVzfWGszXd31ei8EJRzSxeFWfteQHnqz4NnjIJMReoWHtQA2ZjgI8oz5yZY2GG5pLqCYB0HEKih4FiEx/faynxpF8uGWfK1Mg==
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=G/hq6ogFFoePwgmFZF9miXV3OIKmYM6Dzdrg5I2d4RQ=;
 b=hpKeJRHDk6yW/PHjSreH6XWG6pCPnRv2QF/UnNNt72azONORp+4D88qc8qyi/jtlv49gmnKFi0OKABkgM9QVOnvBpwadkr7RSm511p52nmMpfWjV29LEL88EMEbmbqtqXCy9ZKi6X+tWgDlK0XXNVNtrTRKwacJmT9rnTrM4txs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <f5b875e0-56e6-451d-a736-f2cc33cabae0@amd.com>
Date: Mon, 21 Oct 2024 12:12:58 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
Content-Language: en-GB
To: Julien Grall <julien@xen.org>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-2-ayan.kumar.halder@amd.com>
 <7ee1579b-f1e8-4dd4-8540-e6c0858c6999@xen.org>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <7ee1579b-f1e8-4dd4-8540-e6c0858c6999@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0097.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:191::12) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|PH7PR12MB6466:EE_
X-MS-Office365-Filtering-Correlation-Id: 060cf19f-5bce-4f01-2e3b-08dcf1c15537
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?S1pDZEpVNkl3N0VDWXhRZUZMeHA5dzdNSzE3ZU1neTc1d2hKdWxuWUduZ0Vp?=
 =?utf-8?B?V05jK1U4WkFxdFp0b2hYOU5uVElwcWxkaGlQR0pvNnYrbzlQWWF2eGhUWWF1?=
 =?utf-8?B?blBZQmhWdjZkSThJTm13S0JSN1ZSRUdMeXM1cG14ZWsxY0xPbUx3ZlkyUU5U?=
 =?utf-8?B?NmJzbnJMa0hESzlUZmxQUE1pdFdTTDJMVUtaVXBpZktLM3p3QTFJNmRkLzVi?=
 =?utf-8?B?d0F1bFFrUUd4MVEwSmxDb1JiUDc5dVFOUUh0cnhxdCtSQzhJeEsyTkhsZlhI?=
 =?utf-8?B?WUtBd2ZCVmdTd3lhSS81ZG9JMWo5TFdyUUoxWFhSQ0xqNnlJcVVucGgvQUs0?=
 =?utf-8?B?ZUhXR2tyb0JpTHpTa3N5QWplNWdmMmcyYmlqOXlmN05iYXZydWt6cUhvbEF3?=
 =?utf-8?B?R3p6dFZ2VjRvNCtCazkySW5Id2owOU9jelQzaHJZd1RDYldnSWlsYUtOcHVI?=
 =?utf-8?B?Wkh6YzF4blpOT1g4L0xLd0hqOU01Y3J1eG5xRU5BQjZPZW5ZMEU0Qkc2cTA0?=
 =?utf-8?B?M1J4bU8yOHhUcTlYNlJBT0pYamh1RG1qSm4ySnBERTZPRkt1U3ZwZWhBQXZt?=
 =?utf-8?B?SDBucHl6dU5uRXA5QVhZY2pXazNXVFVnWU1zREQrNmlLS1BKUVprUXhlZEg5?=
 =?utf-8?B?Vk01Y0owTlU1K3d6d1JyeHpkV2d0RmcyRXpXY0hyWlZyd3FWbUJjTUczaktB?=
 =?utf-8?B?aTZXb1l4NnFSQnNlS0U5TnpaelphWkN3WUZJUW9PVXNyekpYMWNIMmY4Um4y?=
 =?utf-8?B?VmhRckx3UmlwcmJTWi8zeFI2ZnFGU0FmUHRRY0ptVUZXeVNRSEQzOVNERXJ2?=
 =?utf-8?B?MUhMalNoME1ISUQ5OEZDamV2MENVVnl3K3Z6RkEySXJWV1NpUnliY2RPbWsy?=
 =?utf-8?B?K3pMbzdqUmxqZCtkOGtlQlFTQ2Y2K05hWU1XZHhwS2xxZjl0WVh6VkVIK0FM?=
 =?utf-8?B?UDVmditVOGFQTlVybXluTktoQzdBV3FLVVpqWDZNN3Fxd0pZSlgrYWRIcnlU?=
 =?utf-8?B?TFRHQXh6TTBpb1M3Y3VyQ29XUloxR21sZTdIZHFiUjNDSU5BM0RlU1ZYNzBN?=
 =?utf-8?B?QUJlTndxQ0VBTzFYUGk1ZElZdVNyK3VValUyWStKTlNYMFpobmx5U0FUaUFl?=
 =?utf-8?B?Sk9LNk95SE9TR2kycU9JbktnMWZ4cks5SHZValMySXNQZE1YUklSckVTaGZB?=
 =?utf-8?B?VFdJL3ZPREZ0UFd5UnYvNXpoUG1uRzEvU09FTk9YYTNvSFcrR0E0Z0NKelVi?=
 =?utf-8?B?TnlabEpBb05iWG1HQmdxY3QySzVuWi83ZmVyRU9UenFuQThkUTQ4MURoR1B5?=
 =?utf-8?B?L05kcGdCdGdZNUt5WXBOTDJvSTdPSlBMR0wrOU5GZmdIOEF4YldsRlk4bGV5?=
 =?utf-8?B?VkVONHNtTmZUdXFKSnFQbVc0bXB6L2Vrb2xDQUFxczFaQ0ZwcnU5UkZ3bG9Z?=
 =?utf-8?B?SFVKZC9SbzA1Y1M3bk54MEtSRzRFdEJ2NFEwdVo1UWRiR0QrNDltZjlnYVhT?=
 =?utf-8?B?cE8zaGlIZlk1dC94bjU5NWZPZS82OUVuRUFrYjhZUkN2UTFaM3pCY2FKZXpH?=
 =?utf-8?B?K24xUHo2UjRCa2VrdkJSajQ1L1NPMW90V3h1Y1VWVUZOZWJ2ejdRZm00cnkv?=
 =?utf-8?B?VW04ajZjWVJlMlIzQkpVZUEyUXBFOENCbFhrd2UzQkIzeGJWNWVjaTFWcDkz?=
 =?utf-8?B?cW9PVC9HVkpyckJuUEV4eThXS0Zwd2xDU1N4QnZaNklsdXlSWDNabUNQeDh6?=
 =?utf-8?Q?WOogdCovoIC0+ZhfUb4//oeaDfzOJiCmgms9RUw?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?VS9LUmdKaHphM2E1NnNlUmdwZTR2Vk1GajV0Z2owUE9BbjlrTVFlMER5VFRZ?=
 =?utf-8?B?L0hycWxBRkF3dmtWSGVKVGxSdUlnVVk4U2hLdm5wMk1WNEJtQ2QyWnRjN0xp?=
 =?utf-8?B?T0NOTjJEK2VqVW1HeUFrTjZxS0s5N2JUbUpUL2Q3UHZZUXJoV0Q0OUVObE5K?=
 =?utf-8?B?b01icjBsMVBVTDMvdkNCcC9QdjI3b09KYnMvb3hKaXZFdmVpMjdMZi9mVHpa?=
 =?utf-8?B?RG9QeXlSSkxMSUVXNlErTDRpb2N0Y3NwaDlkN0ltdTRENG9DY0wwTDV1L2FZ?=
 =?utf-8?B?SlV6anpWYURiMWhmRSs5K1VqU3RPU3F5NFBCTVlkQ1VBcEZtV2l4dHJWME9x?=
 =?utf-8?B?S3NCbFZBaXkzcFl0Y3ZlTG8xeUVINkdqTzlDOC9UK1RDT3M3eXowcGdsNTNP?=
 =?utf-8?B?am5pb3M1S1IwOExXYlMyUW9maUhnSGd3UGY5Y3VhdkJOZ3RWNS9sUWIwQWo1?=
 =?utf-8?B?ajNNS1M2WC80QjNmN2dMZDJ2bDNla3Z2dS9Zbk02S2VvM3NORjQrMndRcDVv?=
 =?utf-8?B?dE93VUJzbG1La000V29HaCtvY1ZYM1Fwa2paSi9NRzNQbjRsOENCQzlmeGtL?=
 =?utf-8?B?UTRYaHNZZ0Q4TEs1TU5MVWE0L2ZWS1c0YUFlS1VhSjdMdTI1Y0lzMUV1cW5N?=
 =?utf-8?B?S2FCVmM3T3VVR29jZzEvMkNNUnZ6bHdidTd0by8rY3NTS3NMb3psRERqckFo?=
 =?utf-8?B?d2Q4ZUpDd2dROUtrT3IvVUp0bnpjalYvMGlHcVBhMWhTYTdkclhuQTlob2M5?=
 =?utf-8?B?K1FNeEcxaVhPVXo1UGh4aGg5ZmxVcXZIdWhTSjU0UHpwbytrdVdPM1NTRmEy?=
 =?utf-8?B?RFRBQ012YlI3bVdWRmg3cUxQb3Y4TE5iNzFMZ1dLK2J3ZTNYcHM4UkkzQ25P?=
 =?utf-8?B?Qnc3d3lzL29BSmQvUy9NYUdPTTJjUUVlQitLRzhDRUZ1cHdUeEVwcGFlWjNw?=
 =?utf-8?B?SGpRUWV1RjZVQUt0c3hhUUIvUktPcC9LTFloQ09CZUQxKzVaZkRSRzFaV3JY?=
 =?utf-8?B?aFd6SGhwNDRHVkJmbExiYmd1eHRSMkRsRDVZRS9HZlIzZ3luWEFqcDMrSU1k?=
 =?utf-8?B?Q2VLUFE5bi9CeGhzTDBYQ05udGVPckF1UE9sTGhOaUFSU3cvM2VXWlQ2U1Fv?=
 =?utf-8?B?OU8reTB3bi9TRjBIQ2J1dzcxZjZybHFSckUrOWFFKzhYd1NZbHh5VE9TZGlt?=
 =?utf-8?B?cVV5cytsK29EZXRHbmgxNG1ZQ2ozQWdGamlIeTJKcUx3WGFkUXdnUUNPSGNl?=
 =?utf-8?B?TkhpcmhPcUlMQUh2R3o5UFNJbm80cERRa3IyQUhHSWRYbWVCNXltYVEwWXZE?=
 =?utf-8?B?ZXhpUVpTNmpPVDZnb0xsR2VML2hXZUd6eHlJRVZ6KzRyY3Vpb0puSm5KSmdT?=
 =?utf-8?B?azRkUW5TUDdEcmlyUmpENklOa2oyNENMODlQZ0IzalNqZHpLYmR3OWo1c1pu?=
 =?utf-8?B?TEVBRDhIbFBaL3p4SVR6ZmZ4SDY4T0V4ZG95WE5ITnQwNTc5UXdUODJHQ2RD?=
 =?utf-8?B?WGJDWGczdUorcnBpb0lNQ3pRYUJvaTY1VTJaNUsvS3hublB1bm9OY2VrbTRO?=
 =?utf-8?B?b0FYMURhVmFLT0N5RGNDVVRob204MHo4c2RnNUdpd3ZxejV0cy8rYlhTY2NT?=
 =?utf-8?B?clRtVk5adG9qTW5MTWFET011a1N5SlRLanZtU1dSZ1YrNHZvRDNOYjZMblZI?=
 =?utf-8?B?S1I4RGJFc0ZiV3hLcGRmaDBLWUJUQlpjYkRkb2p6NmlEOCswRVZMeFpkcEVh?=
 =?utf-8?B?R0FrVVdLK29UTWFacFZVTlpTKzlRNDlhN1FjTHpnQ0tmc3BUVUh4RGNlOWcw?=
 =?utf-8?B?aWRuSjUwMDNmbUpwQy9IVDZCS0tOR3poL0dkZWJsbVJRUzNtR3YyT2phdkN2?=
 =?utf-8?B?VW9hVzNCZmJKVE9GMUdHUzVHc3UydS9BSVVTUzZwWG8weXFZRExxU1lXTW13?=
 =?utf-8?B?MVFqQ2FVbkN1amRxR0hDMWlkTDJvdHkrZnMwRUkyTTFlcTY4aEdxTE41NGxN?=
 =?utf-8?B?dmM0WFlBajE3d2J6UEVWV2tXeWNDWW5wMHJNUHB5blVpSGNOTnhGbTcxMmxB?=
 =?utf-8?B?MEhyamREdU8vMkZ2UEFvbUh6Q2JFOWpWUXIwdXBBOVp3eFVRZkJ4d2l3eGRw?=
 =?utf-8?Q?xvxLGRnAotSGN01F9Vk/peHSC?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 060cf19f-5bce-4f01-2e3b-08dcf1c15537
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 11:13:04.2868
 (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: DwV1kp5WHTpFEVkDteGiQ7tUQVm8QoHU057teEjW8r4/O2T9MGR0svdqY2h/j7qKq1OaYXHET09DRT9k9xrSZg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6466


On 18/10/2024 14:41, Julien Grall wrote:
> Hi Ayan,
Hi Julien,
>
> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>> If the BSS section is empty, then the function can just return.
>
> This is more than "can", right? If we don't do it, we will end up to 
> zero outside of BSS. This could be critical data...
s/can just/should
>
> Also, I am tempted to suggest to add a Fixes tag because even if it is 
> unlikely BSS will be zero in the current Xen, it is also not unlikely.
>
> The tag would be:
>
> Fixes: dac84b66cc9a ("xen: arm64: initial build + config changes, 
> start of day code")
Ack.
>
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>
> I saw the discussion. I don't have a strong opinion on the exact 
> approach choosen for zeroing. With the commit message updated:
>
> Acked-by: Julien Grall <jgrall@amazon.com>

I propose that this patch to be committed. The changes to the commit 
message can be done on commit.

>
>> ---
>> Changes from :-
>>
>> v1..v2 - New patch introduced in v3.
>>
>>   xen/arch/arm/arm64/head.S | 2 ++
>
> Don't we need a similar change on the arm32 code?

I haven't looked at the arm32 code. My idea is to get the earlyboot (ie 
the asm part) of Xen working on R82 and then do the similar changes for 
R52 (ie arm32).

So that when we start plumbing the lateboot (ie start_xen() onwards), we 
can test it for both R82 + R52 as a significant part of the code will be 
common.

Let me know if this sounds ok.

- Ayan

>
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
>> index 14c3720d80..72c7b24498 100644
>> --- a/xen/arch/arm/arm64/head.S
>> +++ b/xen/arch/arm/arm64/head.S
>> @@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
>>           PRINT("- Zero BSS -\r\n")
>>           ldr   x0, =__bss_start       /* x0 := vaddr(__bss_start) */
>>           ldr   x1, =__bss_end         /* x1 := vaddr(__bss_end)   */
>> +        cmp   x1, x0
>> +        beq   skip_bss
>>     1:      str   xzr, [x0], #8
>>           cmp   x0, x1
>
> Cheers,
>


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:25:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:25:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823370.1237352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qXY-0000GD-LC; Mon, 21 Oct 2024 11:25:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823370.1237352; Mon, 21 Oct 2024 11:25: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 1t2qXY-0000G6-Hn; Mon, 21 Oct 2024 11:25:36 +0000
Received: by outflank-mailman (input) for mailman id 823370;
 Mon, 21 Oct 2024 11:25: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=uLLp=RR=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t2qXX-0000G0-5f
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:25:35 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on2060f.outbound.protection.outlook.com
 [2a01:111:f403:2412::60f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2e9635a3-8f9f-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 13:25:33 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by SA3PR12MB7976.namprd12.prod.outlook.com (2603:10b6:806:312::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29; Mon, 21 Oct
 2024 11:25:27 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 11:25: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: 2e9635a3-8f9f-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=eCFz6fdjqEhMORaqA+2ZzGkUX4t5m+p4j45hpNA1eVHHl6nfisZ3BQ+/dlPNnx8C/MSiUpbN3LvAfipVMK1ylBxJ3R5B08RYI9lF/0GgFDF1oY3Be4hjMoGIdG1P6896NObyqpofTi+XSpmp8oKpKhxqHY3DGi20p8hYud29mKuXR1pLpJioCykn/1Z7CfXnaDiReos3AGIU4EN+kxa+6jcf8LyFR5yHByVE0ZqqjSbYu55tageNZLquHlXsvXXs9+67IiDTJ26P8yqPXa1aSQH6zMg/SGLEgnrWuSN+9CzTmtc2YYB6gvbzt1F14EVHxkbv4RcDd7mtUBesBaz8jA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=p3/UazAXgyQl1xJR3qrZqCMWeE1TDkb5KglTussWt1c=;
 b=hN/AjfApiiaCtIdRsXd0SeVZPOaF+hTLUniBRpDjG8SBr2Wrj6Qjk3tnZl7xJ7bIu9BqiJXs5FPSt8OmV75vMPpKFip6kUnS5FKKLY1ZCrHDxeGQVWGjxoZvn1aQbMHkAIRDph5yI03vsKsMlwtD15fvDhJ7ZkHYCk9b/2jF2886zWWdU9HGMWLRdTl++LzyGfK0Dydi9aM4R/2M8x3S7b9y75rHTMDyLKGXf+je20gLgYDkcSmxDj87gCshB3Gn2HmEWKPZUgaw/gH7zs9JNm/ux+E//EcR9PuvK3ai4whjneqlJdmo3armwKwATO87dZjaESl0AI5vxAlZrShftg==
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=p3/UazAXgyQl1xJR3qrZqCMWeE1TDkb5KglTussWt1c=;
 b=szhExru7mBBN8VgpP+myX4qbZ685PJawjkTS2x8K1lArQer3aXLvpE0X8MlBUlx/Ojv+DACW9SxOew32EeWPtEN/XHWpze8LCMOdN4cOqOn5dx/60j+CE/35asEfLyNHnexE/ujIpxQIVaB1uIQ76pYPXfapaAUHr/klkLLOcNY=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <74dd600b-4261-46a7-916a-506a11eb2c99@amd.com>
Date: Mon, 21 Oct 2024 12:25:21 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Content-Language: en-GB
To: Julien Grall <julien@xen.org>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.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: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-3-ayan.kumar.halder@amd.com>
 <a2ba4e14-cede-4b30-a67a-790f4a55f3a6@xen.org>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <a2ba4e14-cede-4b30-a67a-790f4a55f3a6@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P302CA0031.GBRP302.PROD.OUTLOOK.COM
 (2603:10a6:600:317::18) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|SA3PR12MB7976:EE_
X-MS-Office365-Filtering-Correlation-Id: d6dbb0fa-fe4e-4054-3fe6-08dcf1c31017
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eVlIcVZuQWNWUmF4TjBFOXpJaFhxN045OXU5U0NPSkRHT3l2bjZHaVBjYTRw?=
 =?utf-8?B?TXZuc2RTVHhCcUtwNS92U1JBdS90aTk0ajhzRUswZEJhSTU2K0oySllwcUxw?=
 =?utf-8?B?dmdna2RENVoxeE5teWE4aHQzTjIyQ2FtbjJldlB3WEdlcDVmT25IeExJcmNv?=
 =?utf-8?B?VkFmcXQ0VEg0VVgwbWZhNnUvWDBBYlE2N00weWRwQy9ocFJhc3ZHTlVqdDBn?=
 =?utf-8?B?anprL3ZSNGg3ajVXT1lhZmtqazAxTno5N2RrNVI1aVNQM3gwNkIrQlFzdHZV?=
 =?utf-8?B?cTk1QTBaeW52U1EyUEF2OGR6Znp2TFNqS211RDFIMFk5Skd1Q1RjM3lHWGdV?=
 =?utf-8?B?TUNwSE9CRkIvMURBWUVEVnpCRThORHBhczBYbEpBQ2VMZXdFTFJwekFVazlH?=
 =?utf-8?B?RUhZNkVRQTZIU2czWjA1c3ZoNlRVa3Mvb3hZMHJHM0lsdVFuaWwvaE4vcXJS?=
 =?utf-8?B?SzBneTZmRXZ3U09jYTJhZCtuTllBb2xicEVBNVNNaXU1SlB1aFEzYmNFeEtE?=
 =?utf-8?B?ZmNHSUY2WlFma0Fkb1M5bElpM1BKaUlmMHpmbml1R25LS1Y4STNuN05BQ2dq?=
 =?utf-8?B?NlRKZTlRbzl2MmFSUDhjV0pwS25tU0pUcDhqaFJXaS8yNURyeTJMeFNpdnRU?=
 =?utf-8?B?YUtQVjRoSTNKZUp3eTRFUUZZZ2lNWFBISjBNbE1UM0ZmR2xXRlhNTjlJTnd0?=
 =?utf-8?B?T25HOEZEV0RxVUFmekFFeGQ0bDkrNTVNTldNOHNJR3hYcDlWNk5VTDZ5Vmh0?=
 =?utf-8?B?Qm8yWW5Cemgyazc3MXBPWTNXUXMrRVF4ZjEzdmw4azRLVHM1UTZtMnArY2lv?=
 =?utf-8?B?VEd1eFNxVnNGQml6a0lnZ2xuTiswL1Frc2R3V3ZXaTlRWjg3c3FmWE9HSmw2?=
 =?utf-8?B?ZkxKalJVTHNxckw0QWxuQlZUbU5FOWpDMWFkb0xzcmFydGpQRDl3dEpienZk?=
 =?utf-8?B?K3FtVjR4amowSnJ3Wnl6ZTF5VkVIR3ZTY29Pdkg1bFdNanREcGVvcklWNVZP?=
 =?utf-8?B?cnVYelVNMncrL3hJeE9OWU1MWC91dDk3UmQ1N3JwTUFCVWVMd3dlc0QvTEZt?=
 =?utf-8?B?MDFjK3hsSHNSL1VVY0dxb2QxWDNMUmlrMmNaMlpBZWVuYlRWcXNjNWFiYllK?=
 =?utf-8?B?akQ3WDlYcXFCUVgzem9XZHNKWUhzTTkzZm9nVnVJVzV1MEY1bXh0V2lTK1FB?=
 =?utf-8?B?UGVtRlNBWDVXTytmMFBpQWUrVndCV1dzcTY4UFNGRFE0RmEveWNsWTFhODNM?=
 =?utf-8?B?QnczZnRoVUw3TlZadmVFUGRwUDlOTDNVRmMxSDVYSWN3MXVrVWljK1RuQ21J?=
 =?utf-8?B?Rys3U1V2QWw3bDJlYWRoa29OcWFnb2wrbDVpOWJUZHZSYlhIU1JOSytGZGRo?=
 =?utf-8?B?MzRDVlhJazV3MkRrUlhXa1E0OGpPSjhBV0R0SFV4VVROVjRtSUNCLzBSeDN0?=
 =?utf-8?B?SkFZdkQ3SDc3T0xPOEhOODJsZkZNOHNNekQ3cGRMVUxoSWQ1SWlPQWViSTRn?=
 =?utf-8?B?SW9lck4wSGp1Sm5URis3L3VYR0xiV29ndEtLRWlTQXVFSWN6QUIzVW1tWmc1?=
 =?utf-8?B?SnJrY3lOd1EyL0thSy9DYmozZFhGQm8xczZkbUI0VXlqVk02Z01BdmNHaTFq?=
 =?utf-8?B?dEdTSm5CYjZ6TG14UlZ0SWZWeW5DYTJvazU5aEFOVU4zQklGN2RER3pMOGZz?=
 =?utf-8?B?WWNtbFhMOE9Lc1ZlVjRrU3lFZVNJRlFLNUN1bU45bVRUN25JWFBiV24rZy9K?=
 =?utf-8?Q?HINDDOmrPp3SdnZkGM=3D?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?YlNGLzVPbGhMUnJaaDRDOVJFRnNlRnQ2bDU5ZzN6bml6a0M3TXVxMW52Si9R?=
 =?utf-8?B?L0pudVJVemhpZFFMMmdpWG1jUHoyN1d0SVo0N2ZIcTRtcjNuM1VTOGlqYjA1?=
 =?utf-8?B?ZTNEK2Z0YUJZUThTb2h0UjExYUNwbURacmMzc3FiQzI1SjV6KzFpbDhmUnl3?=
 =?utf-8?B?YytlYWpSblVFMnIvcE03cEZlSFNPd1dMQm13KzlvTnZsTWxTck84UnBNbERE?=
 =?utf-8?B?Z0Q4V21RdnZnaHZCb2tKVzVvdWxQbmpWZ3JXUy9SbkdOZXE2SXFlT0Fmckta?=
 =?utf-8?B?TWIydmJMbmtRS1ZpN3BqanFDWXY3UGIyUStoVXhwS2hqZmpXY2xPQUM5c3E1?=
 =?utf-8?B?aVFzS01OUHBBT2hyQ05IV09sT3V1WmRkaGxXSlphdkNLMDVBSHFzMXRIalB3?=
 =?utf-8?B?a0dlUHRZV3Vua04zQW00YUp4anl6R3MzSE0xM3FNQkl5dzcrL0laL2dBbEFm?=
 =?utf-8?B?QkoxYVlud2Y3eVRadWk2SUFIN2RiU25QUVh2dlZiaUFwNUhYN2pISGNQdWZo?=
 =?utf-8?B?aURrTzRxb1grcENKMG4za2NVRWdFNHlnOThtbEJnWnZhQXdNQWNjTnJBSURt?=
 =?utf-8?B?NStKNDlyVHUvdTIxSC9ndmZnMU9aMWZTUWNZZFZvNmRhNW9oYTJPOHFCb1BH?=
 =?utf-8?B?c1dXSVhIdWNVMXJZVzYvNkJ4QXVUMHNUNFAvcll1MVpxdlBsdVNLdzdUd3hZ?=
 =?utf-8?B?SnRwSm9uNUMvNmp0V1RId2JtWndwR3BPWFJTNEVmcExRRjF3elRyMGpGc0xU?=
 =?utf-8?B?MytMVkZSdFpJMjdVSUlBVjlnb1lLb3FhNjYyZnlsSHUyczB5TjVncGRmQldp?=
 =?utf-8?B?MWpGVytzTi9xWGd6NE9RQ3Q4WnNkSmZQQlRPTTEvTEh0SVRIS0NldkVkZ3Yz?=
 =?utf-8?B?OWsvbkZIdmJvQkdTVjF1aTJLUDgyM2srNUNlTEhQcm1TbHRKbXBzZStjdHN3?=
 =?utf-8?B?bkVoenhLTTVpOWZCVEthOTE3d2NVeUx4Z1RqYk5uU0ttTTB1cjRHTEQrRUVs?=
 =?utf-8?B?YTZaZk5LVkRUTjNLaUh5R29zL0lkVXlZQkpGaWRpN28rRC9GNzVmaE53c3lS?=
 =?utf-8?B?Q3JBWXBTaHQ0L1NMQTlTS3ZTSnZKZU1nOElDSHFJOW14a2FZaTk4Q01JMGtJ?=
 =?utf-8?B?M3F3dXZLSE5mYXNkVWVsT2dsZUdDcmNuWlV1eG54TStIcWIxQkgxVmlkUG16?=
 =?utf-8?B?MldPZG1lZmhjMVVETTBWZW5Ib0dqZVVLTjRWRVQrdU1JTGlUY0pkbGtORjF1?=
 =?utf-8?B?KzB1YWt6WEVXR2EwZnlhRGZlYncxYnlSZERPbENPTnpOZTRKNUptczV6VGM4?=
 =?utf-8?B?YkpsOCtwcDhrckxrTE1aTHBpODFjdTkrZFk4KzVYV1RZVWNsSEM4TzlnbEpj?=
 =?utf-8?B?anhRVjRYbGt5MVhaS2dPbnU4bCtmYXVWbXEwWDAyczA4d2IwbDBHVU1JeDdH?=
 =?utf-8?B?NjhHbzl1ZzBxUWViU3hqY2dEYlNDVmptTnBiNGlqcGY4akNJMmc3VG1yUmFS?=
 =?utf-8?B?V3R2SzV6amVnb1dRUGFVZ1FjMEx4aTZFV1lEb29PVXRnU0tQSW96Rk00alpK?=
 =?utf-8?B?SzFKcXVxUjNPeWZGVEY1MTc3U1NQQ2lsWVhmRWxFbndZTXUzMlZVN3ZXWnhp?=
 =?utf-8?B?TTZ6RENHK0VNZVMvSEdsZUxMT0NnSDNYa0I4MkYzZEx0WVVJbys5Um1NeHo3?=
 =?utf-8?B?dUQreVRkNnN2NUFUcU5ySkw1WjhCZ1JQWUxtMWY4aFVzazBnODdndXhmRlJq?=
 =?utf-8?B?UFY1OVZjK3FRR1VlVE9pK3FxRDlrM1ZQYUV6eTI3ekhsaVVHKzdyNjNrallu?=
 =?utf-8?B?NEFGdnE4M20vdHNtbmRmOUNydGZBYVdzbXY4NFhNWlNaNmF1TVlTWHNzNVlw?=
 =?utf-8?B?c2RyelNiTVBnYUtTbnZxS2RMWTFESHVSSlBNNVhhRVZuaytRQWlQVFJiNU41?=
 =?utf-8?B?YTV5VHRxcWltWVo1eTI5ZXZUWEJOelV0TzRuM0NBd2xIcDMvcml6U2FycGto?=
 =?utf-8?B?MHVUd3l6a3dKM1dQQTgwdWZmQXhrbEYrQUFCa0p4OVpERTFhR3h0UmpvQ2wy?=
 =?utf-8?B?d3RxcUs5UmRBSmtldU1oMnE5b0dvUzRyNVByUzhYYlcyRTZEa0x3SGZIWXZj?=
 =?utf-8?Q?iJdgh/TzjI8JTlHXqjKGj8b7U?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d6dbb0fa-fe4e-4054-3fe6-08dcf1c31017
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 11:25:27.3931
 (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: 37dlIGIuvqc7jNcPcj5YBq/NFTMiJH3u8jHD02A7h+TO8aa9kLSy146xWedjmjYD7KKosG/Y//j+eVNeQo/wwg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7976


On 18/10/2024 15:08, Julien Grall wrote:
> Hi,
Hi,
>
> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>> There are features in the forthcoming patches which are dependent on
>> MPU. For eg fixed start address.
>> Also, some of the Xen features (eg STATIC_MEMORY) will be selected
>> by the MPU configuration.
>>
>> Thus, this patch introduces a choice between MMU and MPU for the type
>> of memory management system. By default, MMU is selected.
>> MPU is now gated by UNSUPPORTED.
>>
>> Update SUPPORT.md to state that the support for MPU is experimental.
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>
> With one remark below:
>
> Acked-by: Julien Grall <jgrall@amazon.com>
Thanks.
>
>> ---
>> Changes from :-
>>
>> v1 - 1. Reworded the help messages.
>> 2. Updated Support.md.
>>
>> v2 - 1. Reworded the help message.
>>
>>   SUPPORT.md                     |  1 +
>>   xen/arch/arm/Kconfig           | 17 ++++++++++++++++-
>>   xen/arch/arm/platforms/Kconfig |  2 +-
>>   3 files changed, 18 insertions(+), 2 deletions(-)
>>
>> diff --git a/SUPPORT.md b/SUPPORT.md
>> index 23dd7e6424..3f6d788a43 100644
>> --- a/SUPPORT.md
>> +++ b/SUPPORT.md
>> @@ -40,6 +40,7 @@ supported in this document.
>>         Status, Xen in AArch64 mode: Supported
>>       Status, Xen in AArch32 mode: Tech Preview
>> +    Status, Xen with MPU: Experimental
>
> Maybe mention Armv8-R?

Yes.

I propose this change be done on commit as well.

And then I can respin the next 4 patches.

- Ayan



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:32:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:32:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823380.1237361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qeG-0004SL-Cs; Mon, 21 Oct 2024 11:32:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823380.1237361; Mon, 21 Oct 2024 11:32: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 1t2qeG-0004SE-A1; Mon, 21 Oct 2024 11:32:32 +0000
Received: by outflank-mailman (input) for mailman id 823380;
 Mon, 21 Oct 2024 11:32: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=TLRE=RR=casper.srs.infradead.org=BATV+0b6dd01573de8e3a2a7a+7729+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1t2qeE-0004S7-7X
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:32:31 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 26e72a34-8fa0-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 13:32:29 +0200 (CEST)
Received: from [2001:8b0:10b:5:9789:3d79:3bbb:1070]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux))
 id 1t2qeA-0000000GERK-3oQ4; Mon, 21 Oct 2024 11:32: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: 26e72a34-8fa0-11ef-a0be-8be0dac302b0
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=ZOLHuioJiShYKKKkpErplkqkgXnNiPsyBY9e+8JJ/38=; b=umt04pu9+Fm66lP9X3GFIdW456
	4uz4abLp+AGkPGEWJHy6IC1FSu8DaB2IiCMDVfvhlxCYCmG6ZkS1QEixYUHZe0DVwbtz1ci2C3N0h
	bo+PE+9VEP0yrnpMaokZAnv1huLGq7AP6wScboesLhfBE7C8GGwvbHkeOoz4Dl2Jj6/f/c766A03B
	cipHkkmeQOvBH5yY2vhxJhPAYGUSpCd+R7B7ekmwh9okO69ya3/djd0CB2G55WPBuFQbutNWkvbVh
	xqua/uQej1/wsMHrAn9a8Ag9oPoHh3MDTvbfnUaaar3SZeaY4Oq+lEEgmSGZLXg/6mL3D4iKoGuUW
	JF8/suzw==;
Message-ID: <52c88b22daeb3740402f478ca393e07d84c87731.camel@infradead.org>
Subject: Re:  [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
From: David Woodhouse <dwmw2@infradead.org>
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>, Roger Pau Monne
	 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>,  Willi Junga <xenproject@ymy.be>
Date: Mon, 21 Oct 2024 12:32:23 +0100
In-Reply-To: <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>
References: <20241018080813.45759-1-roger.pau@citrix.com>
	 <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-d7lu6K/rzuX3Xb065Rno"
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


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

On Mon, 2024-10-21 at 10:55 +0100, Alejandro Vallejo wrote:
> On Fri Oct 18, 2024 at 9:08 AM BST, Roger Pau Monne wrote:
> > When using AMD-VI interrupt remapping the vector field in the IO-APIC R=
TE is
> > repurposed to contain part of the offset into the remapping table.=C2=
=A0 Previous to
>=20
> For my own education....

Careful what you wish for.

http://david.woodhou.se/more-than-you-ever-wanted-to-know-about-x86-msis.tx=
t

--=-d7lu6K/rzuX3Xb065Rno
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
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQxMDIxMTEzMjIzWjAvBgkqhkiG9w0BCQQxIgQgUMDfZFBY
hxukD7VwgJtZNXlhdSjJAACQtfKf3wUz72Uwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgAIcGPtTBhYtKG4zqo8+DSFVBdGZtgByZXT
rrpdkjjCUYnpaxfw6hZ/oPrerBKsfCNJbxsPE+NeBVKGWO2BtD03SLl+X86yUGAsBucD1lJCRRiG
mSErRZK++NN82onrtbOysfMXOjrqnB9/LHchc4G+Sd6tF851aXxOiMoKqH9lzN1Plu0k1Y/+ZU6Q
D82gjF5hmoO5m9ggyoa7urKVgG5fvbV36XzBPHTP1begphV7GtLIelff/h4+Ux/2DTNde2XUvZ+F
aJd2GitN8RT39bh+0qmh6YYehiuGjv8rnw9w7P9q3NRb9Lp6xd3lfgV8aCfruzQRlB5UYyKukw4P
hudQxGhTX4mBJzzGRzpYc3OxLEkDey7cxfZmOqrLD9PwBcuHT2UNTRz2cFRacn+bcBg/Z6V4gipM
kOUW2lWTUPGcxKYRzxsY194zJq2zm4WEP+1T3FXsIvdCy35aDyKuIfLXOk22GtHmwHPtRigYF2LO
ROfIUffKP3jy30N8wLFkK6wJGO9WG6fD6kXPTEUKI1C37jYBLYLScCDjz4uiTiUxSTvreKiqqxsN
ZiVPgU0GdzT+tcxf//TtyvX64W4asT3ghzC4Gb42WCv62QNMxf7Z8eadhz5CDf6t1pkMn8EVNCX4
qylk3/1Q4uqa7gdiLpRWbHXQASrXHAY26sfn2kIXTQAAAAAAAA==


--=-d7lu6K/rzuX3Xb065Rno--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:34:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:34:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823385.1237372 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qgL-0004zZ-Pd; Mon, 21 Oct 2024 11:34:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823385.1237372; Mon, 21 Oct 2024 11:34: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 1t2qgL-0004zR-MY; Mon, 21 Oct 2024 11:34:41 +0000
Received: by outflank-mailman (input) for mailman id 823385;
 Mon, 21 Oct 2024 11: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=TLRE=RR=casper.srs.infradead.org=BATV+0b6dd01573de8e3a2a7a+7729+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1t2qgK-0004zL-MC
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:34:40 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 74681e04-8fa0-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 13:34:38 +0200 (CEST)
Received: from [2001:8b0:10b:5:9789:3d79:3bbb:1070]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux))
 id 1t2qgH-0000000GEaK-0viO; Mon, 21 Oct 2024 11:34: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>
X-Inumbo-ID: 74681e04-8fa0-11ef-99a3-01e77a169b0f
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=WaBRpxVnzpwkdNewkPOt4QzZaZYI6prQ8WM5M8t/T+4=; b=MohPj0zFApJ32pGuqrGo1Mr6ZW
	APLH8hVABIUNt6lZMew1XqkqPzUCa9vOr2S9QjVRS0o6Mpox07EqHSA5p7iO+VthwiGZ6ypPR/U0C
	7O3hww9Pv+kboEkEk2CK1yUtffHu8o+VduHPMNfQOGOdfWE4SeJlO589Zj81+haR1T4upZEMKSMud
	TZqZ1sW2auonTCLuz6NfBl0F0cTdpPmK+8Y3N5uFhO0KkWUh6xb086seaXBDv/rAkdhnKEAYIdZIC
	JnpeFGENObVMxt8cY8e4Snci8LkysFfmIYHSP75myxkN11L626XikRCv14W2gUDerZ0wGJ9q47nn0
	fVAP4N+g==;
Message-ID: <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
From: David Woodhouse <dwmw2@infradead.org>
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>,  Willi Junga <xenproject@ymy.be>
Date: Mon, 21 Oct 2024 12:34:37 +0100
In-Reply-To: <20241018080813.45759-1-roger.pau@citrix.com>
References: <20241018080813.45759-1-roger.pau@citrix.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-FewaL+l0YfQmVl6hg6xN"
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


--=-FewaL+l0YfQmVl6hg6xN
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-10-18 at 10:08 +0200, Roger Pau Monne wrote:
> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE=
 is
> repurposed to contain part of the offset into the remapping table.=C2=A0 =
Previous to
> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remappin=
g
> table would match the vector.=C2=A0 Such logic was mandatory for end of i=
nterrupt to
> work, since the vector field (even when not containing a vector) is used =
by the
> IO-APIC to find for which pin the EOI must be performed.
>=20
> Introduce a table to store the EOI handlers when using interrupt remappin=
g, so
> that the IO-APIC driver can translate pins into EOI handlers without havi=
ng to
> read the IO-APIC RTE entry.=C2=A0 Note that to simplify the logic such ta=
ble is used
> unconditionally when interrupt remapping is enabled, even if strictly it =
would
> only be required for AMD-Vi.
>=20
> Reported-by: Willi Junga <xenproject@ymy.be>
> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a=
 static mapping')
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>

Hm, couldn't we just have used the pin#?

The AMD IOMMU has per-device IRTE, so you *know* you can just use IRTE
indices 0-23 for the I/O APIC pins.



--=-FewaL+l0YfQmVl6hg6xN
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
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQxMDIxMTEzNDM3WjAvBgkqhkiG9w0BCQQxIgQgJVv1WthT
XKSXuz8N5CUCzPoLdovzwL+7a6Yy+kOQTVUwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgAROPzyqCNEpBn43jv/NGRps6S38R8/hTWp
Q7+cNbXtw9kXkl4UhJQms9KpWUn5B5uFTWEEJXWe7P+NuoY2KQCWaUDtHYoxKSerRlf1k8ZSx2Xl
yUxzdZRzYHc1hok7zHj7lIwFnwwvd2ZTXb4cNmh6SHzuob3NC+zuXSvqwXDhpHrr3ypDdUe3foyp
T7TrGYCVbmK/eHRZRXKGYQC2yecuO6YE8dghARb1f5s8h6TPuEZnqeHSw3M9rjH6Pld0FZXYm8hp
ILab3rw4zJfZeuZBIcoAIiblqpvactxFSixaEz2Mt4ysuxTqHFvMrGru6o62tKLFQsLE3qY1kU5x
0I6HkYh02BeF7TNSJ21xWyleoXo01Ll/x0I5+OQq4zgc3s+tk6j39xLkCdYDdDo8PD9IP872joUg
n9HWdeemdfcLN8nM++rN6RM9LdAANR6ZF2yjB/9XluW9gNqhQ8Nq3f9ZpssB9eLTMVaHEKM56qv5
8Oz6jKg4c1LPh8BmnalmboixYRs/ay8IUSigrHFEl9toNLdiIg6hHbgHlCtfFidP8SEwqsBDFCru
0aFLRYSnp+kGZpvHnV24XA2rW3hxPV1f+BcZ/zRhE/XTvdy4icx2DWVhhjSvqlyug88TIyu3VgkF
NG9U/vFmBa/pndTT4sOiP9jXDL//3DP5A0QizyDjcgAAAAAAAA==


--=-FewaL+l0YfQmVl6hg6xN--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:38:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:38:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823392.1237381 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qjs-00084l-7u; Mon, 21 Oct 2024 11:38:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823392.1237381; Mon, 21 Oct 2024 11:38: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 1t2qjs-00084e-5Q; Mon, 21 Oct 2024 11:38:20 +0000
Received: by outflank-mailman (input) for mailman id 823392;
 Mon, 21 Oct 2024 11:38: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2qjq-00084Y-Oz
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:38:18 +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 f72124fe-8fa0-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 13:38:17 +0200 (CEST)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-37d58377339so4794198f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 04:38:17 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a915a2df1sm192872366b.225.2024.10.21.04.38.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 04:38:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f72124fe-8fa0-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729510697; x=1730115497; 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=yvUdusz1h2YQeWtwQ/ZRTPbFevemmJzPasRPm9EkN4c=;
        b=LoFicQMDSLKj7BlM/HPa58AdbURTcz/NqVZkYaSnE/6ra05ScR4pgEYKjRWnq5ZA/3
         wDK8vBaDQoZTwM8wugymc4XJRYfqUExdRjpMcnKrFqd+uo4wsrKo2/4kkp3AHQTKRiPg
         cM+vWMAbxGj64NZeeMMX28cacM1MNBhU9ltyo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729510697; x=1730115497;
        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=yvUdusz1h2YQeWtwQ/ZRTPbFevemmJzPasRPm9EkN4c=;
        b=Xc2ks78LdnJsmIdTv2dypefDqL/dFtmtjW/eCLiwIcecac2ePUNtxlVf8D7Yrh7wh5
         /a9b4W4wRjOFVf9SbVO/UcYnq217HUFAtxIsCIerh8ioT1liyUwTJusgkeJpoEdmrKq/
         7DfY8McmvNibV2jdnrSWShu3Dxp/l3KMudHrSKf70MVLPQlHvRrq3PgYNTI9miIPkn/+
         7p/GesNr3EQPLeM2slzFj6O4vfyWkuVFftpFtU9SEQxguCdW5ZhcY5o0N45+P5DJQ863
         GGCOEPx76i5EboXEUrbqZphS71FtbzHPZvsay9BL5CXiGYRHO2/YDUIixfGKEHnOHFwk
         MZZA==
X-Forwarded-Encrypted: i=1; AJvYcCWU+4r+aNoP1/pMUtHdJea2+StNwdo1Dm/dnMZsPPYSy20qSIAivK5ACQTL2b8OKoO40+6eNoHGlmI=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy/YNGWoHhgwhNcwVYb/GZ6kuNkIuI1z6FVIXKTruRF6Jewn2f4
	wCkceHneOV5I94/qdYV2807QzYdTttJpdxKalzs3kRw/y5Ls88xc3+5B2CAa3OY=
X-Google-Smtp-Source: AGHT+IE3yZo/bVXu3hz9Hjlj0tqX7bmP21ZBBILv73KA7a1bTrACKDxmWGJb8qxrAnWwp6TWn5j8YA==
X-Received: by 2002:adf:f708:0:b0:37d:7e71:67a0 with SMTP id ffacd0b85a97d-37ea21c3026mr9896440f8f.9.1729510695572;
        Mon, 21 Oct 2024 04:38:15 -0700 (PDT)
Message-ID: <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
Date: Mon, 21 Oct 2024 12:38:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Willi Junga <xenproject@ymy.be>,
 David Woodhouse <dwmw@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 12:10 pm, Andrew Cooper wrote:
> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>> repurposed to contain part of the offset into the remapping table.  Previous to
>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>> table would match the vector.  Such logic was mandatory for end of interrupt to
>> work, since the vector field (even when not containing a vector) is used by the
>> IO-APIC to find for which pin the EOI must be performed.
>>
>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>> that the IO-APIC driver can translate pins into EOI handlers without having to
>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>> unconditionally when interrupt remapping is enabled, even if strictly it would
>> only be required for AMD-Vi.
>>
>> Reported-by: Willi Junga <xenproject@ymy.be>
>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Yet more fallout from the multi-MSI work.  That really has been a giant
> source of bugs.
>
>> ---
>>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 47 insertions(+)
>>
>> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
>> index e40d2f7dbd75..8856eb29d275 100644
>> --- a/xen/arch/x86/io_apic.c
>> +++ b/xen/arch/x86/io_apic.c
>> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>>  
>>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>>  
>> +/*
>> + * Store the EOI handle when using interrupt remapping.
>> + *
>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
>> + * format repurposes the vector field to store the offset into the Interrupt
>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
>> + * longer matches the contents of the RTE vector field.  Add a translation
>> + * table so that directed EOI uses the value in the RTE vector field when
>> + * interrupt remapping is enabled.
>> + *
>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
>> + * when using the remapped format, but use the translation table uniformly in
>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
>> + */
>> +static unsigned int **apic_pin_eoi;
> I think we can get away with this being uint8_t rather than unsigned
> int, especially as we're allocating memory when not strictly necessary.
>
> The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
>
> Vector 0xff is strictly SPIV and not allocated for anything else, so can
> be reused as a suitable sentinel here.

Actually, vectors 0 thru 0x0f are also strictly invalid, and could be
used as sentinels.  That's probably better than trying to play integer
promotion games between IRQ_VECTOR_UNASSIGNED and uint8_t.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:48:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:48:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823410.1237401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qtT-0003Y8-B4; Mon, 21 Oct 2024 11:48:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823410.1237401; Mon, 21 Oct 2024 11:48: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 1t2qtT-0003Y1-77; Mon, 21 Oct 2024 11:48:15 +0000
Received: by outflank-mailman (input) for mailman id 823410;
 Mon, 21 Oct 2024 11: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=9gOu=RR=amazon.co.uk=prvs=017fe8541=dwmw@srs-se1.protection.inumbo.net>)
 id 1t2qtR-0002fZ-B7
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:48:13 +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 5886d7fa-8fa2-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 13:48:11 +0200 (CEST)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO 169.254.80.37)
 ([10.43.8.6]) by smtp-border-fw-52003.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2024 11:48:10 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by inbound-smtp.us-west-2.amazonaws.com with SMTP id
 t2h73osf72gp28frdr4lj61kq4o9tfsnruoi4701
 for ingestion@secure-attach.perimeter.email.amazon.dev;
 Mon, 21 Oct 2024 11:43:07 +0000 (UTC)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.25.36.210])
 by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2024 11:43:05 +0000
Received: from EX19MTAUEC002.ant.amazon.com [10.0.0.204:18408]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.25:2525]
 with esmtp (Farcaster)
 id 201fbedc-2036-4ed9-91d8-4c54fa45f86c; Mon, 21 Oct 2024 11:43:04 +0000 (UTC)
Received: from EX19D008UEC001.ant.amazon.com (10.252.135.232) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.34;
 Mon, 21 Oct 2024 11:43:04 +0000
Received: from EX19D008UEC001.ant.amazon.com (10.252.135.232) by
 EX19D008UEC001.ant.amazon.com (10.252.135.232) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.34;
 Mon, 21 Oct 2024 11:43:04 +0000
Received: from EX19D008UEC001.ant.amazon.com ([fe80::4702:5d1a:c556:797]) by
 EX19D008UEC001.ant.amazon.com ([fe80::4702:5d1a:c556:797%3]) with mapi id
 15.02.1258.034; Mon, 21 Oct 2024 11:43: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: 5886d7fa-8fa2-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt;
  s=amazon201209; t=1729511292; x=1761047292;
  h=from:to:cc:subject:date:message-id:references:
   in-reply-to;
  bh=HGomAy27EiOqevmUp9aqgQ2x4mJxiI4PWKTFvPqjMJs=;
  b=X5SQnsfKCU34ZtLycXHpeg58eHOxoYR//WIlL3c/vwhpT2EYxks/pdYp
   9q23Y4lR8mcDWnnaC1Yg26WBK2PW2+C6lunhesmGu1Iu+GBSGYY+Jmonn
   plQ9+gFrFx8ArOZWIzPsFP80vHV5q26O1punvYfNPvX2UGTdoAOwxfhdj
   w=;
X-Amazon-filename: smime.p7s
X-IronPort-AV: E=Sophos;i="6.11,220,1725321600";
   d="p7s'346?scan'346,208,346";a="140132990"
Content-Type: multipart/mixed; boundary="===============4692130862257726593=="
MIME-Version: 1.0
X-Farcaster-Flow-ID: 201fbedc-2036-4ed9-91d8-4c54fa45f86c
From: "Woodhouse, David" <dwmw@amazon.co.uk>
To: "roger.pau@citrix.com" <roger.pau@citrix.com>,
	"marmarek@invisiblethingslab.com" <marmarek@invisiblethingslab.com>,
	"bp@alien8.de" <bp@alien8.de>, "x86@kernel.org" <x86@kernel.org>
CC: "jbeulich@suse.com" <jbeulich@suse.com>, "xenproject@ymy.be"
	<xenproject@ymy.be>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "andrew.cooper3@citrix.com"
	<andrew.cooper3@citrix.com>
Subject: Re:  [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Thread-Topic: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Thread-Index: AQHbI65j/ode2i+6jkmTOdAwVhWC+Q==
Date: Mon, 21 Oct 2024 11:43:04 +0000
Message-ID: <3663ba26192a78de2090512c912bff8afc852e5c.camel@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
	 <ZxMmOjD7oHuAE7Vb@mail-itl>
In-Reply-To: <ZxMmOjD7oHuAE7Vb@mail-itl>
Accept-Language: en-GB, en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
x-originating-ip: [10.106.82.51]
MIME-Version: 1.0

--===============4692130862257726593==
Content-Language: en-US
Content-Type: multipart/signed; micalg=sha-256;
	protocol="application/pkcs7-signature"; boundary="=-XPmOImkDXv8tlkxUWb9S"

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

On Sat, 2024-10-19 at 05:23 +0200, Marek Marczykowski-G=C3=B3recki wrote:
> On Fri, Oct 18, 2024 at 10:08:13AM +0200, Roger Pau Monne wrote:
> > When using AMD-VI interrupt remapping the vector field in the IO-APIC R=
TE is
> > repurposed to contain part of the offset into the remapping table.=C2=
=A0 Previous to
> > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapp=
ing
> > table would match the vector.=C2=A0 Such logic was mandatory for end of=
 interrupt to
> > work, since the vector field (even when not containing a vector) is use=
d by the
> > IO-APIC to find for which pin the EOI must be performed.
> >=20
> > Introduce a table to store the EOI handlers when using interrupt remapp=
ing, so
> > that the IO-APIC driver can translate pins into EOI handlers without ha=
ving to
> > read the IO-APIC RTE entry.=C2=A0 Note that to simplify the logic such =
table is used
> > unconditionally when interrupt remapping is enabled, even if strictly i=
t would
> > only be required for AMD-Vi.
> >=20
> > Reported-by: Willi Junga <xenproject@ymy.be>
> > Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> > Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using=
 a static mapping')
> > Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
>=20
> I can confirm it fixes touchpad issue on Framework 13 AMD,
> it works without ioapic_ack=3Dnew now, thanks!
> Tested-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.c=
om>

Thanks for testing. But... why did this work with the auto-EOI? That
*should* have had exactly the same problem, surely?=20

The problem fixed by this patch is that the directed EOI used the
actual vector# and *not* the bits that the I/O APIC *thinks* are the
vector#, which are actually the IRTE index#.

But if you let the CPU do its broadcast EOI then surely *that* is going
to use the actual vector# too, and have precisely the same problem?

If you use the code prior to this patch, *without* ioapic_ack=3Dnew (i.e.
the mode that was failing), what happens if you do this:

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -595,7 +595,7 @@ void setup_local_APIC(void)
     /*
      * Enable directed EOI
      */
-    if ( directed_eoi_enabled )
+    if ( 0 && directed_eoi_enabled )
     {
         value |=3D APIC_SPIV_DIRECTED_EOI;
         apic_printk(APIC_VERBOSE, "Suppress EOI broadcast on CPU#%d\n",


I'm guessing that 'fixes' it too? In which case, it looks like AMD has
some undocumented hack in between its APIC and I/O APIC to let it
magically auto-EOI the correct pin somehow?

Adding Boris and x86@kernel.org to Cc... do we know anything about such
an AMD hack?

--=-XPmOImkDXv8tlkxUWb9S
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEjww
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
5ZgtwCLXgAIe5W8mybM2JzCCBhAwggT4oAMCAQICEQC/QgfpbUT3q2fHshU/ReqfMA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28udWsw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCZgnzd4h6STv/MQcUPixvDN/dNtp4yVSdc
xz9mB1OcA7HXd4WdPyYagmkcH0WguDYaQnOszkSdElI+2XRFSlGXhY7U9tktvdWuY1zAY1UWES8e
3BUHqSKbIKx4SX6GuctCcPnyagVZ9Hk21YUElx9cdmrqt0bGoydgxAspEx56J9Q5a48WfvFYjLBF
NL1dw+P1eUeAljco30+Xggf5faawKfPArUX0cmU4VIh5DMUyv4d0xxfNN6cK1GMj/HGUg2T9OTHW
nbTdq+OHJwHGi/37mCWx1O3uV0hbZzA1fNklaqlsr1Acg0elPeCFXLb8dSkMgQZHNJVjn+mBvG4d
MG4FS3ntipApytA+a5IaMP3LNAo0EoBd5/xVy0M6TXbiYesYLq9rhnrLgO1qcw7+if0jH9YoEJ6a
Je1m7omfEXh2XpospSLaohmAqaBKlyhXDXbTnUVnIf79zU5ohHZof0cP2amnnvYUVD72iuf9qe7X
4L1Rj589qEWYROKiMil5X7l/smE1dAmxhKxx6YWvWkXH9u7JOcmLGdKST0voaY7j3Wk0lxK3NKsk
q0G3BpqbPz3P8BYtn38BvbkFnwVW7F7Qzus3KZJgP62eN25QHxoFj44x3sppx4I5WlYG4lxdFZsY
smQdj64c7MaJ7cp8RJN+eO32RKrkndEkihzxevl11wIDAQABo4IByjCCAcYwHwYDVR0jBBgwFoAU
CcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFJ418HpIgZaPnwpWdCNSvm4XgH/lMA4GA1Ud
DwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjBA
BgNVHSAEOTA3MDUGDCsGAQQBsjEBAgEBATAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28u
Y29tL0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29S
U0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggrBgEFBQcBAQR+
MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1
dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3Nw
LnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqGSIb3DQEBCwUA
A4IBAQCSez7gtf1wlWJr568crX21nm6QFWRdJ/YxMOReeqYtGs8QZf2zm2vIEFab61MrgJFJcFJL
sRhVHwnH/hvax3ZldDpUhM0ODpA9soUjYsvKJ0boFAHPtI1BL0yrZNCBdsUGxMv0t64Acj2ovxQ+
OxPd5ngHu0MzYIKLDvTSehxkh/qW23X7Ey/fPR0sgnAK4IV7clidmuWBbrqX+WKEyEP2kaEvLsRg
8plzYbVVFJl37rX2waKnGaWYnJ3BrvcMMgDSQCuoxMThWAOr7wxOh0ni0K3rW7CwDIAjUSk+fFmS
2EacUvIv/0xUW1nXzGJ12/Qyi+Mw65m0qE776qfcftg3MIIGEDCCBPigAwIBAgIRAL9CB+ltRPer
Z8eyFT9F6p8wDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVy
IE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+
MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1h
aWwgQ0EwHhcNMjIwMTA3MDAwMDAwWhcNMjUwMTA2MjM1OTU5WjAiMSAwHgYJKoZIhvcNAQkBFhFk
d213QGFtYXpvbi5jby51azCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJmCfN3iHpJO
/8xBxQ+LG8M39022njJVJ1zHP2YHU5wDsdd3hZ0/JhqCaRwfRaC4NhpCc6zORJ0SUj7ZdEVKUZeF
jtT22S291a5jXMBjVRYRLx7cFQepIpsgrHhJfoa5y0Jw+fJqBVn0eTbVhQSXH1x2auq3RsajJ2DE
CykTHnon1DlrjxZ+8ViMsEU0vV3D4/V5R4CWNyjfT5eCB/l9prAp88CtRfRyZThUiHkMxTK/h3TH
F803pwrUYyP8cZSDZP05MdadtN2r44cnAcaL/fuYJbHU7e5XSFtnMDV82SVqqWyvUByDR6U94IVc
tvx1KQyBBkc0lWOf6YG8bh0wbgVLee2KkCnK0D5rkhow/cs0CjQSgF3n/FXLQzpNduJh6xgur2uG
esuA7WpzDv6J/SMf1igQnpol7WbuiZ8ReHZemiylItqiGYCpoEqXKFcNdtOdRWch/v3NTmiEdmh/
Rw/Zqaee9hRUPvaK5/2p7tfgvVGPnz2oRZhE4qIyKXlfuX+yYTV0CbGErHHpha9aRcf27sk5yYsZ
0pJPS+hpjuPdaTSXErc0qySrQbcGmps/Pc/wFi2ffwG9uQWfBVbsXtDO6zcpkmA/rZ43blAfGgWP
jjHeymnHgjlaVgbiXF0VmxiyZB2PrhzsxontynxEk3547fZEquSd0SSKHPF6+XXXAgMBAAGjggHK
MIIBxjAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUnjXwekiBlo+f
ClZ0I1K+bheAf+UwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYB
BQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEW
F2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2Vj
dGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5j
cmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9T
ZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEF
BQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHAYDVR0RBBUwE4ERZHdtd0BhbWF6b24uY28u
dWswDQYJKoZIhvcNAQELBQADggEBAJJ7PuC1/XCVYmvnrxytfbWebpAVZF0n9jEw5F56pi0azxBl
/bOba8gQVpvrUyuAkUlwUkuxGFUfCcf+G9rHdmV0OlSEzQ4OkD2yhSNiy8onRugUAc+0jUEvTKtk
0IF2xQbEy/S3rgByPai/FD47E93meAe7QzNggosO9NJ6HGSH+pbbdfsTL989HSyCcArghXtyWJ2a
5YFuupf5YoTIQ/aRoS8uxGDymXNhtVUUmXfutfbBoqcZpZicncGu9wwyANJAK6jExOFYA6vvDE6H
SeLQretbsLAMgCNRKT58WZLYRpxS8i//TFRbWdfMYnXb9DKL4zDrmbSoTvvqp9x+2DcxggTHMIIE
wwIBATCBrDCBljELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdv
IFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAL9CB+ltRPer
Z8eyFT9F6p8wDQYJYIZIAWUDBAIBBQCgggHrMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJ
KoZIhvcNAQkFMQ8XDTI0MTAyMTExNDMwM1owLwYJKoZIhvcNAQkEMSIEIGSTJqxf3YRzSYK9BtMB
1yeDesaxEPO4jzwfdj8va2MUMIG9BgkrBgEEAYI3EAQxga8wgawwgZYxCzAJBgNVBAYTAkdCMRsw
GQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1Nl
Y3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9u
IGFuZCBTZWN1cmUgRW1haWwgQ0ECEQC/QgfpbUT3q2fHshU/ReqfMIG/BgsqhkiG9w0BCRACCzGB
r6CBrDCBljELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJT
QSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAL9CB+ltRPerZ8ey
FT9F6p8wDQYJKoZIhvcNAQEBBQAEggIAghDcnN2nV57OY+R3kvhquPjIfGr11LNZrXG4s3dbV9EU
BkO7wCHSU8+Ocd738PN/fugdO9fqGmCB2dQRAJlBMwXhboR1+IlyV7lPWRyLoNAZFk+5H/t2mAoh
ElkPgh9xBKph4Z+O05VuiLfgMhHaYyFEUUpVpf6KAkPnOvKjHLxaaCohjO2v6Ki1yTilA5Cc13dV
8BMwXhcnjkUNwlrRCnQWo59fcSkxhVWa8QA24+OKjEtJ7YkaTqc7ABcYploBUDVyKgZn1ICs2sWg
hXI6U7ilrXEWOZMniTM1yJAFbHKVkprgFX0KyltLuTXx/SRrairllf4K1aM8xG6pAukw51ty3FOx
9DjjPUoFjm2dykKL+trrCq//I5OO2WBN/0DGZlL3SsTHuwad2BoPHa3oJKlbsVbvd/d8+U+vcvYC
nwXjgQ9lmcCH5Ut3qLF7m5zvUNNGYNF/JgxjdxuGeYIK5/KPeA4OhAnDCpgCNhClpZIRThjlNR1l
qz3Wz9eqknUPSj9rVqEisrf1ezVgcPWSWIFv5R+oAkGC6CySgp0KOm/eOhvpVnJqxU54mYrWMEDc
j3oF3vc9ZJ5RNNTFIt1G3S/ADuVBP5REiQyJHsUMt35rq0KRrosGrlHxznz+JVhuYy9r7/vZTtpl
hEUneZK7fFbWdNQ0j83NJRSb/ef5otMAAAAAAAA=


--=-XPmOImkDXv8tlkxUWb9S--

--===============4692130862257726593==
Content-Type: multipart/alternative; boundary="===============4441431936227863102=="
MIME-Version: 1.0
Content-Disposition: inline

--===============4441431936227863102==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable




Amazon Development Centre (London) Ltd. Registered in England and Wales wit=
h registration number 04543232 with its registered office at 1 Principal Pl=
ace, Worship Street, London EC2A 2FA, United Kingdom.



--===============4441431936227863102==
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

<br><br><br>Amazon Development Centre (London) Ltd.Registered in England an=
d Wales with registration number 04543232 with its registered office at 1 P=
rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.<br><br><br>

--===============4441431936227863102==--

--===============4692130862257726593==--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:48:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:48:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823411.1237406 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qtT-0003bK-KJ; Mon, 21 Oct 2024 11:48:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823411.1237406; Mon, 21 Oct 2024 11:48: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 1t2qtT-0003bD-Ek; Mon, 21 Oct 2024 11:48:15 +0000
Received: by outflank-mailman (input) for mailman id 823411;
 Mon, 21 Oct 2024 11:48: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=9gOu=RR=amazon.co.uk=prvs=017fe8541=dwmw@srs-se1.protection.inumbo.net>)
 id 1t2qtR-0003Xp-7I
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:48:13 +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 583ae32e-8fa2-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 13:48:11 +0200 (CEST)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO 169.254.80.37)
 ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2024 11:48:09 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by inbound-smtp.us-west-2.amazonaws.com with SMTP id
 t2h73osf72gp28frdr4lj61kq4o9tfsnruoi4701
 for ingestion@secure-attach.perimeter.email.amazon.dev;
 Mon, 21 Oct 2024 11:43:07 +0000 (UTC)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.25.36.210])
 by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2024 11:43:05 +0000
Received: from EX19MTAUEC002.ant.amazon.com [10.0.0.204:18408]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.25:2525]
 with esmtp (Farcaster)
 id 201fbedc-2036-4ed9-91d8-4c54fa45f86c; Mon, 21 Oct 2024 11:43:04 +0000 (UTC)
Received: from EX19D008UEC001.ant.amazon.com (10.252.135.232) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.34;
 Mon, 21 Oct 2024 11:43:04 +0000
Received: from EX19D008UEC001.ant.amazon.com (10.252.135.232) by
 EX19D008UEC001.ant.amazon.com (10.252.135.232) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.34;
 Mon, 21 Oct 2024 11:43:04 +0000
Received: from EX19D008UEC001.ant.amazon.com ([fe80::4702:5d1a:c556:797]) by
 EX19D008UEC001.ant.amazon.com ([fe80::4702:5d1a:c556:797%3]) with mapi id
 15.02.1258.034; Mon, 21 Oct 2024 11:43: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: 583ae32e-8fa2-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt;
  s=amazon201209; t=1729511292; x=1761047292;
  h=from:to:cc:subject:date:message-id:references:
   in-reply-to;
  bh=HGomAy27EiOqevmUp9aqgQ2x4mJxiI4PWKTFvPqjMJs=;
  b=X5SQnsfKCU34ZtLycXHpeg58eHOxoYR//WIlL3c/vwhpT2EYxks/pdYp
   9q23Y4lR8mcDWnnaC1Yg26WBK2PW2+C6lunhesmGu1Iu+GBSGYY+Jmonn
   plQ9+gFrFx8ArOZWIzPsFP80vHV5q26O1punvYfNPvX2UGTdoAOwxfhdj
   w=;
X-Amazon-filename: smime.p7s
X-IronPort-AV: E=Sophos;i="6.11,220,1725321600";
   d="p7s'346?scan'346,208,346";a="140132990"
Content-Type: multipart/mixed; boundary="===============4692130862257726593=="
MIME-Version: 1.0
X-Farcaster-Flow-ID: 201fbedc-2036-4ed9-91d8-4c54fa45f86c
From: "Woodhouse, David" <dwmw@amazon.co.uk>
To: "roger.pau@citrix.com" <roger.pau@citrix.com>,
	"marmarek@invisiblethingslab.com" <marmarek@invisiblethingslab.com>,
	"bp@alien8.de" <bp@alien8.de>, "x86@kernel.org" <x86@kernel.org>
CC: "jbeulich@suse.com" <jbeulich@suse.com>, "xenproject@ymy.be"
	<xenproject@ymy.be>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "andrew.cooper3@citrix.com"
	<andrew.cooper3@citrix.com>
Subject: Re:  [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Thread-Topic: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Thread-Index: AQHbI65j/ode2i+6jkmTOdAwVhWC+Q==
Date: Mon, 21 Oct 2024 11:43:04 +0000
Message-ID: <3663ba26192a78de2090512c912bff8afc852e5c.camel@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
	 <ZxMmOjD7oHuAE7Vb@mail-itl>
In-Reply-To: <ZxMmOjD7oHuAE7Vb@mail-itl>
Accept-Language: en-GB, en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator: 
x-originating-ip: [10.106.82.51]
MIME-Version: 1.0

--===============4692130862257726593==
Content-Language: en-US
Content-Type: multipart/signed; micalg=sha-256;
	protocol="application/pkcs7-signature"; boundary="=-XPmOImkDXv8tlkxUWb9S"

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

On Sat, 2024-10-19 at 05:23 +0200, Marek Marczykowski-G=C3=B3recki wrote:
> On Fri, Oct 18, 2024 at 10:08:13AM +0200, Roger Pau Monne wrote:
> > When using AMD-VI interrupt remapping the vector field in the IO-APIC R=
TE is
> > repurposed to contain part of the offset into the remapping table.=C2=
=A0 Previous to
> > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapp=
ing
> > table would match the vector.=C2=A0 Such logic was mandatory for end of=
 interrupt to
> > work, since the vector field (even when not containing a vector) is use=
d by the
> > IO-APIC to find for which pin the EOI must be performed.
> >=20
> > Introduce a table to store the EOI handlers when using interrupt remapp=
ing, so
> > that the IO-APIC driver can translate pins into EOI handlers without ha=
ving to
> > read the IO-APIC RTE entry.=C2=A0 Note that to simplify the logic such =
table is used
> > unconditionally when interrupt remapping is enabled, even if strictly i=
t would
> > only be required for AMD-Vi.
> >=20
> > Reported-by: Willi Junga <xenproject@ymy.be>
> > Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> > Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using=
 a static mapping')
> > Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
>=20
> I can confirm it fixes touchpad issue on Framework 13 AMD,
> it works without ioapic_ack=3Dnew now, thanks!
> Tested-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.c=
om>

Thanks for testing. But... why did this work with the auto-EOI? That
*should* have had exactly the same problem, surely?=20

The problem fixed by this patch is that the directed EOI used the
actual vector# and *not* the bits that the I/O APIC *thinks* are the
vector#, which are actually the IRTE index#.

But if you let the CPU do its broadcast EOI then surely *that* is going
to use the actual vector# too, and have precisely the same problem?

If you use the code prior to this patch, *without* ioapic_ack=3Dnew (i.e.
the mode that was failing), what happens if you do this:

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -595,7 +595,7 @@ void setup_local_APIC(void)
     /*
      * Enable directed EOI
      */
-    if ( directed_eoi_enabled )
+    if ( 0 && directed_eoi_enabled )
     {
         value |=3D APIC_SPIV_DIRECTED_EOI;
         apic_printk(APIC_VERBOSE, "Suppress EOI broadcast on CPU#%d\n",


I'm guessing that 'fixes' it too? In which case, it looks like AMD has
some undocumented hack in between its APIC and I/O APIC to let it
magically auto-EOI the correct pin somehow?

Adding Boris and x86@kernel.org to Cc... do we know anything about such
an AMD hack?

--=-XPmOImkDXv8tlkxUWb9S
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEjww
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
5ZgtwCLXgAIe5W8mybM2JzCCBhAwggT4oAMCAQICEQC/QgfpbUT3q2fHshU/ReqfMA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28udWsw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCZgnzd4h6STv/MQcUPixvDN/dNtp4yVSdc
xz9mB1OcA7HXd4WdPyYagmkcH0WguDYaQnOszkSdElI+2XRFSlGXhY7U9tktvdWuY1zAY1UWES8e
3BUHqSKbIKx4SX6GuctCcPnyagVZ9Hk21YUElx9cdmrqt0bGoydgxAspEx56J9Q5a48WfvFYjLBF
NL1dw+P1eUeAljco30+Xggf5faawKfPArUX0cmU4VIh5DMUyv4d0xxfNN6cK1GMj/HGUg2T9OTHW
nbTdq+OHJwHGi/37mCWx1O3uV0hbZzA1fNklaqlsr1Acg0elPeCFXLb8dSkMgQZHNJVjn+mBvG4d
MG4FS3ntipApytA+a5IaMP3LNAo0EoBd5/xVy0M6TXbiYesYLq9rhnrLgO1qcw7+if0jH9YoEJ6a
Je1m7omfEXh2XpospSLaohmAqaBKlyhXDXbTnUVnIf79zU5ohHZof0cP2amnnvYUVD72iuf9qe7X
4L1Rj589qEWYROKiMil5X7l/smE1dAmxhKxx6YWvWkXH9u7JOcmLGdKST0voaY7j3Wk0lxK3NKsk
q0G3BpqbPz3P8BYtn38BvbkFnwVW7F7Qzus3KZJgP62eN25QHxoFj44x3sppx4I5WlYG4lxdFZsY
smQdj64c7MaJ7cp8RJN+eO32RKrkndEkihzxevl11wIDAQABo4IByjCCAcYwHwYDVR0jBBgwFoAU
CcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFJ418HpIgZaPnwpWdCNSvm4XgH/lMA4GA1Ud
DwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjBA
BgNVHSAEOTA3MDUGDCsGAQQBsjEBAgEBATAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28u
Y29tL0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29S
U0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggrBgEFBQcBAQR+
MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1
dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3Nw
LnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqGSIb3DQEBCwUA
A4IBAQCSez7gtf1wlWJr568crX21nm6QFWRdJ/YxMOReeqYtGs8QZf2zm2vIEFab61MrgJFJcFJL
sRhVHwnH/hvax3ZldDpUhM0ODpA9soUjYsvKJ0boFAHPtI1BL0yrZNCBdsUGxMv0t64Acj2ovxQ+
OxPd5ngHu0MzYIKLDvTSehxkh/qW23X7Ey/fPR0sgnAK4IV7clidmuWBbrqX+WKEyEP2kaEvLsRg
8plzYbVVFJl37rX2waKnGaWYnJ3BrvcMMgDSQCuoxMThWAOr7wxOh0ni0K3rW7CwDIAjUSk+fFmS
2EacUvIv/0xUW1nXzGJ12/Qyi+Mw65m0qE776qfcftg3MIIGEDCCBPigAwIBAgIRAL9CB+ltRPer
Z8eyFT9F6p8wDQYJKoZIhvcNAQELBQAwgZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVy
IE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+
MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1h
aWwgQ0EwHhcNMjIwMTA3MDAwMDAwWhcNMjUwMTA2MjM1OTU5WjAiMSAwHgYJKoZIhvcNAQkBFhFk
d213QGFtYXpvbi5jby51azCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJmCfN3iHpJO
/8xBxQ+LG8M39022njJVJ1zHP2YHU5wDsdd3hZ0/JhqCaRwfRaC4NhpCc6zORJ0SUj7ZdEVKUZeF
jtT22S291a5jXMBjVRYRLx7cFQepIpsgrHhJfoa5y0Jw+fJqBVn0eTbVhQSXH1x2auq3RsajJ2DE
CykTHnon1DlrjxZ+8ViMsEU0vV3D4/V5R4CWNyjfT5eCB/l9prAp88CtRfRyZThUiHkMxTK/h3TH
F803pwrUYyP8cZSDZP05MdadtN2r44cnAcaL/fuYJbHU7e5XSFtnMDV82SVqqWyvUByDR6U94IVc
tvx1KQyBBkc0lWOf6YG8bh0wbgVLee2KkCnK0D5rkhow/cs0CjQSgF3n/FXLQzpNduJh6xgur2uG
esuA7WpzDv6J/SMf1igQnpol7WbuiZ8ReHZemiylItqiGYCpoEqXKFcNdtOdRWch/v3NTmiEdmh/
Rw/Zqaee9hRUPvaK5/2p7tfgvVGPnz2oRZhE4qIyKXlfuX+yYTV0CbGErHHpha9aRcf27sk5yYsZ
0pJPS+hpjuPdaTSXErc0qySrQbcGmps/Pc/wFi2ffwG9uQWfBVbsXtDO6zcpkmA/rZ43blAfGgWP
jjHeymnHgjlaVgbiXF0VmxiyZB2PrhzsxontynxEk3547fZEquSd0SSKHPF6+XXXAgMBAAGjggHK
MIIBxjAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUnjXwekiBlo+f
ClZ0I1K+bheAf+UwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYB
BQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEW
F2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2Vj
dGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5j
cmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9T
ZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEF
BQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHAYDVR0RBBUwE4ERZHdtd0BhbWF6b24uY28u
dWswDQYJKoZIhvcNAQELBQADggEBAJJ7PuC1/XCVYmvnrxytfbWebpAVZF0n9jEw5F56pi0azxBl
/bOba8gQVpvrUyuAkUlwUkuxGFUfCcf+G9rHdmV0OlSEzQ4OkD2yhSNiy8onRugUAc+0jUEvTKtk
0IF2xQbEy/S3rgByPai/FD47E93meAe7QzNggosO9NJ6HGSH+pbbdfsTL989HSyCcArghXtyWJ2a
5YFuupf5YoTIQ/aRoS8uxGDymXNhtVUUmXfutfbBoqcZpZicncGu9wwyANJAK6jExOFYA6vvDE6H
SeLQretbsLAMgCNRKT58WZLYRpxS8i//TFRbWdfMYnXb9DKL4zDrmbSoTvvqp9x+2DcxggTHMIIE
wwIBATCBrDCBljELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdv
IFJTQSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAL9CB+ltRPer
Z8eyFT9F6p8wDQYJYIZIAWUDBAIBBQCgggHrMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJ
KoZIhvcNAQkFMQ8XDTI0MTAyMTExNDMwM1owLwYJKoZIhvcNAQkEMSIEIGSTJqxf3YRzSYK9BtMB
1yeDesaxEPO4jzwfdj8va2MUMIG9BgkrBgEEAYI3EAQxga8wgawwgZYxCzAJBgNVBAYTAkdCMRsw
GQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1Nl
Y3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9u
IGFuZCBTZWN1cmUgRW1haWwgQ0ECEQC/QgfpbUT3q2fHshU/ReqfMIG/BgsqhkiG9w0BCRACCzGB
r6CBrDCBljELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE
BxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJT
QSBDbGllbnQgQXV0aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAL9CB+ltRPerZ8ey
FT9F6p8wDQYJKoZIhvcNAQEBBQAEggIAghDcnN2nV57OY+R3kvhquPjIfGr11LNZrXG4s3dbV9EU
BkO7wCHSU8+Ocd738PN/fugdO9fqGmCB2dQRAJlBMwXhboR1+IlyV7lPWRyLoNAZFk+5H/t2mAoh
ElkPgh9xBKph4Z+O05VuiLfgMhHaYyFEUUpVpf6KAkPnOvKjHLxaaCohjO2v6Ki1yTilA5Cc13dV
8BMwXhcnjkUNwlrRCnQWo59fcSkxhVWa8QA24+OKjEtJ7YkaTqc7ABcYploBUDVyKgZn1ICs2sWg
hXI6U7ilrXEWOZMniTM1yJAFbHKVkprgFX0KyltLuTXx/SRrairllf4K1aM8xG6pAukw51ty3FOx
9DjjPUoFjm2dykKL+trrCq//I5OO2WBN/0DGZlL3SsTHuwad2BoPHa3oJKlbsVbvd/d8+U+vcvYC
nwXjgQ9lmcCH5Ut3qLF7m5zvUNNGYNF/JgxjdxuGeYIK5/KPeA4OhAnDCpgCNhClpZIRThjlNR1l
qz3Wz9eqknUPSj9rVqEisrf1ezVgcPWSWIFv5R+oAkGC6CySgp0KOm/eOhvpVnJqxU54mYrWMEDc
j3oF3vc9ZJ5RNNTFIt1G3S/ADuVBP5REiQyJHsUMt35rq0KRrosGrlHxznz+JVhuYy9r7/vZTtpl
hEUneZK7fFbWdNQ0j83NJRSb/ef5otMAAAAAAAA=


--=-XPmOImkDXv8tlkxUWb9S--

--===============4692130862257726593==
Content-Type: multipart/alternative; boundary="===============4441431936227863102=="
MIME-Version: 1.0
Content-Disposition: inline

--===============4441431936227863102==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable




Amazon Development Centre (London) Ltd. Registered in England and Wales wit=
h registration number 04543232 with its registered office at 1 Principal Pl=
ace, Worship Street, London EC2A 2FA, United Kingdom.



--===============4441431936227863102==
Content-Type: text/html; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

<br><br><br>Amazon Development Centre (London) Ltd.Registered in England an=
d Wales with registration number 04543232 with its registered office at 1 P=
rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.<br><br><br>

--===============4441431936227863102==--

--===============4692130862257726593==--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:50:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:50:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823426.1237419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qv1-00050H-14; Mon, 21 Oct 2024 11:49:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823426.1237419; Mon, 21 Oct 2024 11:49: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 1t2qv0-00050A-Ug; Mon, 21 Oct 2024 11:49:50 +0000
Received: by outflank-mailman (input) for mailman id 823426;
 Mon, 21 Oct 2024 11:49: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=TLRE=RR=casper.srs.infradead.org=BATV+0b6dd01573de8e3a2a7a+7729+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1t2quy-0004zD-Uc
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:49:49 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 92076c02-8fa2-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 13:49:47 +0200 (CEST)
Received: from [2001:8b0:10b:5:9789:3d79:3bbb:1070]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux))
 id 1t2quv-0000000GFSs-2Ql5; Mon, 21 Oct 2024 11:49: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>
X-Inumbo-ID: 92076c02-8fa2-11ef-99a3-01e77a169b0f
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=v3hkCYJD9sRyeR1VJL8xmp0biGtojARTexhut9tx5rc=; b=L76eCZBEE41VaU0vLpunC7bKkO
	ZKh1DsNZ/HATuv/VoV4XBEM8TmLLAEa55ri+gr+Zam8qqog8m4pdkKAbxzctiff5THxhM7/EHjY/K
	YgnWhmSiBiVqJa5Ekam0K1+u+bY/LxP4aivLlzKMhg5fVvYAMJ1EbijwQSKglwVkaw+Pmu3jW9t+C
	goUDzaWZKmLIB8axwdODJJLlEud9k2PBCuCcgbX5gExbgbS+x15Uz+awAfQgOtfvYMCMleZDbS0vf
	zgy9twGny4kVUzq/hdztjY2C6rYnScb3fmF/XAHksMUSCjDwlIoTJHs6bjU7Kqy3UM3BZQOgYnqAt
	IJEAlJzw==;
Message-ID: <f64650fb455c1d33d7ec3898eb5423a930624998.camel@infradead.org>
Subject: Re: [EXTERNAL] [PATCH] x86/io-apic: fix directed EOI when using
 AMd-Vi interrupt remapping
From: David Woodhouse <dwmw2@infradead.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>, Roger Pau Monne
	 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Willi Junga <xenproject@ymy.be>
Date: Mon, 21 Oct 2024 12:49:45 +0100
In-Reply-To: <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
References: <20241018080813.45759-1-roger.pau@citrix.com>
	 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
	 <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-a5T5Dipx8gMjkkpUPYlC"
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


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

On Mon, 2024-10-21 at 12:38 +0100, Andrew Cooper wrote:
> On 21/10/2024 12:10 pm, Andrew Cooper wrote:
> > On 18/10/2024 9:08 am, Roger Pau Monne wrote:
> >=20
> > >=20
> > > +/*
> > > + * Store the EOI handle when using interrupt remapping.
> > > + *
> > > + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry=
 remapped
> > > + * format repurposes the vector field to store the offset into the I=
nterrupt
> > > + * Remap table.=C2=A0 This causes directed EOI to longer work, as th=
e CPU vector no
> > > + * longer matches the contents of the RTE vector field.=C2=A0 Add a =
translation
> > > + * table so that directed EOI uses the value in the RTE vector field=
 when
> > > + * interrupt remapping is enabled.
> > > + *
> > > + * Note Intel VT-d Xen code still stores the CPU vector in the RTE v=
ector field
> > > + * when using the remapped format, but use the translation table uni=
formly in
> > > + * order to avoid extra logic to differentiate between VT-d and AMD-=
Vi.
> > > + */
> > > +static unsigned int **apic_pin_eoi;
> > I think we can get away with this being uint8_t rather than unsigned
> > int, especially as we're allocating memory when not strictly necessary.
> >=20
> > The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
> >=20
> > Vector 0xff is strictly SPIV and not allocated for anything else, so ca=
n
> > be reused as a suitable sentinel here.
>=20
> Actually, vectors 0 thru 0x0f are also strictly invalid, and could be
> used as sentinels.=C2=A0 That's probably better than trying to play integ=
er
> promotion games between IRQ_VECTOR_UNASSIGNED and uint8_t.

I don't quite follow how you need a sentinel value. How could you ever
*not* know it, given that you have to write it to the RTE?

(And you should *also* just use the pin# like Linux does, as I said).

--=-a5T5Dipx8gMjkkpUPYlC
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
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQxMDIxMTE0OTQ1WjAvBgkqhkiG9w0BCQQxIgQghjfr8Crs
N44YcBYq5Wdrv8nE1GIbx07SncQs2EqjhDUwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgBmMjOhWcQmbBAz6qyWagqv7r1fVOVmbXmj
4/Q0fvZ4h42aNwbCF6v/ApyeTKlqQmL7aSoo1b9bp9DHSsUZdfVy8uwxXnjFhJeeEzFIKci9MNWm
iyipHwxum8TKGYa/nyN8M7v7WEyd3R0/FJrKtTjIq4A6F+bq1OcdFrAgAez6V0NZar/lt8S6fCg6
RO/3Nr7Oz+2jAvuHflUDvgK6poH/ChTnBFyEcDuKrhP2Gt8FF0Wdd/7ttICn0fWY6DBaEr4NQUCv
U81J1n/1Q7n0zJ5n/NsHcemiZ5FIcFZatVVYGV2qOfOgexUC6abvKCvO9yqDz/GfUkLzOotRfdAW
LiiHpWH+8Y8XmiFqCW0s8rQSuB+gFcXI7WWW3fAoclTUZwqEsnUb47ShHBaI1H1EQ193xt9tNRp/
Ua7dTwsaL22z3tLcytOb53KIxVSWrQtZO4fzflul49ALj/rqWPiicLBHWQT5en5Yr4vSj4ByZit5
RxwKL/0o/7qv15+IdYKxS3Jk9AF/dUrrg2ztyt9dn6/Gi16FOJ5d/eouecUeVGXT3FfVSjT0Ri5q
olk0Zms+mM65SXY0Y4WWnVtsasOnKbau3jsHr5eJgsAes93PPsVUnY4MD64mUCT2O4QaafUnOgBO
LZ3sYCrE56mfzR6pofifrtpLajJfLtYD+Yvbd9LKqAAAAAAAAA==


--=-a5T5Dipx8gMjkkpUPYlC--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:53:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:53:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823434.1237429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2qyM-0006U5-Ei; Mon, 21 Oct 2024 11:53:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823434.1237429; Mon, 21 Oct 2024 11: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 1t2qyM-0006Ty-CE; Mon, 21 Oct 2024 11:53:18 +0000
Received: by outflank-mailman (input) for mailman id 823434;
 Mon, 21 Oct 2024 11: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2qyK-0006Tp-TF
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:53:16 +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 0e9db00b-8fa3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 13:53:16 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso649787066b.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 04:53:16 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912f681bsm194149466b.84.2024.10.21.04.53.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 04:53:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e9db00b-8fa3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729511595; x=1730116395; 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=yUIBOu4+Z/u5NyqwnkYStQkT1+5Cq0yFoowVkIIhxhg=;
        b=gncoVzou6+aAmPmiFGwADFaSiJ32YDA+d+/RH7Ep8mUyHbJZcwLCjerKSmnvOO8JAg
         sgPY6+F6X+rn3G0dBaSmUsXlx410/4iHCPq3JtVfJOE6LpxQ+fE6ZWAS4FCk1e1k+PTs
         7I2uR2siholBWMWoqb7db5SP76LJn54tnJ9i4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729511595; x=1730116395;
        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=yUIBOu4+Z/u5NyqwnkYStQkT1+5Cq0yFoowVkIIhxhg=;
        b=nxYZTZHM1GXYDjVLS1K9/jhicgLNrLw2DWNr/yG5fMeBBDtCM8YgGFMYXXNpqrhB+5
         NY27j63GcKwHOjseusz9FsPT9s2vmy1pCGW4l+4i02ArJ1Zf11c5bRPhnFVjxiOzmXpj
         5oyN6LaT/8s1g6/QH30NqRZ57kArHhNucsPBK0AcGODMMQB1r+Xwkw8dCZKGzVmkkSIM
         ODY9Ih2NYn3bJa3t7XEBqJdDN1oT1Su5v9DSFnf2W8g2ynpeHFmsf9QtOTSt/tQlrZ7I
         D23JdMYisXQbhoEXP5WbnEARYiR0ulJ1YoUbulUS204CUn2n1673A9hz5yJYa/sn8dpE
         Cy2w==
X-Forwarded-Encrypted: i=1; AJvYcCUjR81GWBcZkqLRpYQF6IzS/ojLyDw4+0xZEMi+NTPNRcKOHhl3Uz0M2rI0ZN2hT7Z+4CKfvxIWQi0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy9ICyADcouOOVkWwRNaG6ZNQC/IsYwFkkBdhjPcjVgnoKzSIMm
	1Q/kFLoQEKXsQ+GHX3YJnZmqo0em7pElWzY/LsGE75kdrjnABsnfiY4wTxWLr9I=
X-Google-Smtp-Source: AGHT+IGmYpxSvf9LMEA7KWaNppcpOYVU1U3rEJ8pnVNykBUMq5HKwRvHtkuQmtLdvXW86pbOTSI8Lw==
X-Received: by 2002:a17:906:f58a:b0:a9a:67a9:dc45 with SMTP id a640c23a62f3a-a9a6995d6bfmr953263366b.3.1729511595384;
        Mon, 21 Oct 2024 04:53:15 -0700 (PDT)
Message-ID: <3a92bbe3-d58f-4a33-82db-ead6214ecc00@citrix.com>
Date: Mon, 21 Oct 2024 12:53:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [EXTERNAL] [PATCH] x86/io-apic: fix directed EOI when using
 AMd-Vi interrupt remapping
To: David Woodhouse <dwmw2@infradead.org>,
 Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Willi Junga <xenproject@ymy.be>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
 <f64650fb455c1d33d7ec3898eb5423a930624998.camel@infradead.org>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <f64650fb455c1d33d7ec3898eb5423a930624998.camel@infradead.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 12:49 pm, David Woodhouse wrote:
> On Mon, 2024-10-21 at 12:38 +0100, Andrew Cooper wrote:
>> On 21/10/2024 12:10 pm, Andrew Cooper wrote:
>>> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
>>>
>>>> +/*
>>>> + * Store the EOI handle when using interrupt remapping.
>>>> + *
>>>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
>>>> + * format repurposes the vector field to store the offset into the Interrupt
>>>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
>>>> + * longer matches the contents of the RTE vector field.  Add a translation
>>>> + * table so that directed EOI uses the value in the RTE vector field when
>>>> + * interrupt remapping is enabled.
>>>> + *
>>>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
>>>> + * when using the remapped format, but use the translation table uniformly in
>>>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
>>>> + */
>>>> +static unsigned int **apic_pin_eoi;
>>> I think we can get away with this being uint8_t rather than unsigned
>>> int, especially as we're allocating memory when not strictly necessary.
>>>
>>> The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
>>>
>>> Vector 0xff is strictly SPIV and not allocated for anything else, so can
>>> be reused as a suitable sentinel here.
>> Actually, vectors 0 thru 0x0f are also strictly invalid, and could be
>> used as sentinels.  That's probably better than trying to play integer
>> promotion games between IRQ_VECTOR_UNASSIGNED and uint8_t.
> I don't quite follow how you need a sentinel value. How could you ever
> *not* know it, given that you have to write it to the RTE?
>
> (And you should *also* just use the pin# like Linux does, as I said).

Because Xen is insane and, for non-x2APIC cases, sets the system up
normally and the turns the IOMMU on late.

This really does need deleting, and everything merging into the early path.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 11:57:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 11:57:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823444.1237440 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2r2M-0007ky-VP; Mon, 21 Oct 2024 11:57:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823444.1237440; Mon, 21 Oct 2024 11:57: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 1t2r2M-0007kr-Ry; Mon, 21 Oct 2024 11:57:26 +0000
Received: by outflank-mailman (input) for mailman id 823444;
 Mon, 21 Oct 2024 11:57: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2r2L-0007gr-Nu
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 11:57:25 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a226c939-8fa3-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 13:57:23 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99cc265e0aso635990866b.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 04:57:23 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a913078cfsm195874166b.96.2024.10.21.04.57.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 04:57:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a226c939-8fa3-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729511843; x=1730116643; 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=dOXsZFe9/SdziGOPCF+rutiT1SVsLkqyo0qn+OkwR5U=;
        b=CT0E/JnId+h8VAi3uJgMDrbGeE+4LKnFf8NHUbDMoZlqEFjfQjaWODuSegPscJeixF
         emN7G8ATACyhVn10r5bgSUhlVZ9fEqWAD1Bbbcrs5dsV4ZaCAXLyCvAKsN5++0Ztvo72
         YOOJ4rWk1qR+3DWqY5Sj2Rkiihq4ZEwhDa6A8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729511843; x=1730116643;
        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=dOXsZFe9/SdziGOPCF+rutiT1SVsLkqyo0qn+OkwR5U=;
        b=Hin58COcpMuYc53+Yo4HI894wB5XivfhokXQ2cQp1236fnQeQDcOLHQghAl1WKxoQX
         j18voY8orTGGgpH9ABF3MoQ7lXSZMU7srOMhluRBZA6j526S2F4do6HHmXCJ7EeErCXI
         GSE5pDnr+8w3ZzruEZ20DeizqJcgbVkiNbgEok6uipGFyWqfrqGLn5+O5fmbyEbCjWI7
         imn4FPXATcReYm3ddNZ+mRca7+ohyVtWzGaFcgLYrgN2wIt2V7/HckdNmt99SI07Jhd0
         pEuqcD8phs+zfjwSutXv3NaVpZBKFyQkBc3tPvG/3Fc/JWtacC7nvWQSrFZWegqlcfbz
         wgSg==
X-Gm-Message-State: AOJu0YwM2hpCbW6JP5v0wgb9M1cVXH7mzSafZVvrbkEeqbp0o9f5bI2+
	+CJ1go1rtB2ffy8YkWah+uOWv99pJ3h7wgsuFnL0xmNNJsrpe8TgfcApd1Nv7NDP5zckdi4riZO
	6
X-Google-Smtp-Source: AGHT+IGjYpjEo3D8JeTxVaVOa98N1NNulTEGysKL5Yt5E2uOkaBSkXrWkDsByfgwaeVTqD94kUEATg==
X-Received: by 2002:a17:907:9623:b0:a9a:230b:fb5e with SMTP id a640c23a62f3a-a9a69868cb2mr1210661666b.4.1729511842881;
        Mon, 21 Oct 2024 04:57:22 -0700 (PDT)
Date: Mon, 21 Oct 2024 13:57:21 +0200
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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Message-ID: <ZxZBocLV7eJUxK50@macbook.local>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>

On Mon, Oct 21, 2024 at 12:10:14PM +0100, Andrew Cooper wrote:
> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
> > When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> > repurposed to contain part of the offset into the remapping table.  Previous to
> > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> > table would match the vector.  Such logic was mandatory for end of interrupt to
> > work, since the vector field (even when not containing a vector) is used by the
> > IO-APIC to find for which pin the EOI must be performed.
> >
> > Introduce a table to store the EOI handlers when using interrupt remapping, so
> > that the IO-APIC driver can translate pins into EOI handlers without having to
> > read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> > unconditionally when interrupt remapping is enabled, even if strictly it would
> > only be required for AMD-Vi.
> >
> > Reported-by: Willi Junga <xenproject@ymy.be>
> > Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> > Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Yet more fallout from the multi-MSI work.  That really has been a giant
> source of bugs.
> 
> > ---
> >  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 47 insertions(+)
> >
> > diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> > index e40d2f7dbd75..8856eb29d275 100644
> > --- a/xen/arch/x86/io_apic.c
> > +++ b/xen/arch/x86/io_apic.c
> > @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> >  
> >  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> >  
> > +/*
> > + * Store the EOI handle when using interrupt remapping.
> > + *
> > + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> > + * format repurposes the vector field to store the offset into the Interrupt
> > + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> > + * longer matches the contents of the RTE vector field.  Add a translation
> > + * table so that directed EOI uses the value in the RTE vector field when
> > + * interrupt remapping is enabled.
> > + *
> > + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> > + * when using the remapped format, but use the translation table uniformly in
> > + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> > + */
> > +static unsigned int **apic_pin_eoi;
> 
> I think we can get away with this being uint8_t rather than unsigned
> int, especially as we're allocating memory when not strictly necessary.
> 
> The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
> 
> Vector 0xff is strictly SPIV and not allocated for anything else, so can
> be reused as a suitable sentinel here.

The coding style explicitly discourages using fixed width types unless
it's strictly necessary, I assume the usage here would be covered by
Xen caching a value of a hardware register field that has a
fixed-width size.

> > +
> >  static void share_vector_maps(unsigned int src, unsigned int dst)
> >  {
> >      unsigned int pin;
> > @@ -273,6 +289,13 @@ void __ioapic_write_entry(
> >      {
> >          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
> >          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> > +        /*
> > +         * Might be called before apic_pin_eoi is allocated.  Entry will be
> > +         * updated once the array is allocated and there's an EOI or write
> > +         * against the pin.
> > +         */
> 
> Is this for the xAPIC path where we turn on interrupts before the IOMMU ?

It's for iommu_setup() -> iommu_hardware_setup() saving and restoring
the IO-APIC entries around enabling of interrupt remapping.  This is
done just ahead of smp_prepare_cpus() which is where
setup_IO_APIC_irqs() gets called.

> > +        if ( apic_pin_eoi )
> > +            apic_pin_eoi[apic][pin] = e.vector;
> >      }
> >      else
> >          iommu_update_ire_from_apic(apic, pin, e.raw);
> > @@ -298,9 +321,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
> >      /* Prefer the use of the EOI register if available */
> >      if ( ioapic_has_eoi_reg(apic) )
> >      {
> > +        if ( apic_pin_eoi )
> > +            vector = apic_pin_eoi[apic][pin];
> > +
> >          /* If vector is unknown, read it from the IO-APIC */
> >          if ( vector == IRQ_VECTOR_UNASSIGNED )
> > +        {
> >              vector = __ioapic_read_entry(apic, pin, true).vector;
> > +            if ( apic_pin_eoi )
> > +                /* Update cached value so further EOI don't need to fetch it. */
> > +                apic_pin_eoi[apic][pin] = vector;
> > +        }
> >  
> >          *(IO_APIC_BASE(apic)+16) = vector;
> >      }
> > @@ -1022,7 +1053,23 @@ static void __init setup_IO_APIC_irqs(void)
> >  
> >      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
> >  
> > +    if ( iommu_intremap )
> 
> MISRA requires this to be iommu_intremap != iommu_intremap_off.
> 
> But, if this safe on older hardware?  iommu_intremap defaults to on
> (full), and is then turned off later on boot for various reasons.

I think it's fine because setup_IO_APIC_irqs() is strictly called
after iommu_setup(), so the value of iommu_intremap by that point
should reflect whether IR is enabled.

> We do all memory allocations in setup_IO_APIC_irqs() so at least we get
> to see a consistent view of iommu_intremap.
> 
> I suppose there's nothing wrong with having an extra cache of the vector
> in the way when not using interrupt remapping, so maybe it's fine?
> 
> > +    {
> > +        apic_pin_eoi = xzalloc_array(typeof(*apic_pin_eoi), nr_ioapics);
> > +        BUG_ON(!apic_pin_eoi);
> > +    }
> > +
> >      for (apic = 0; apic < nr_ioapics; apic++) {
> > +        if ( iommu_intremap )
> > +        {
> > +            apic_pin_eoi[apic] = xmalloc_array(typeof(**apic_pin_eoi),
> > +                                               nr_ioapic_entries[apic]);
> > +            BUG_ON(!apic_pin_eoi[apic]);
> > +
> > +            for ( pin = 0; pin < nr_ioapic_entries[apic]; pin++ )
> > +                apic_pin_eoi[apic][pin] = IRQ_VECTOR_UNASSIGNED;
> > +        }
> 
> This logic will be better if you pull nr_ioapic_entries[apic] out into a
> loop-local variable.
> 
> It should also allow the optimiser to turn the for loop into a memset(),
> which it can't now because of possible pointer aliasing with the
> induction variable.

Oh, OK, can send v2 with that adjusted.

> But overall, the patch looks broadly ok to me.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 12:02:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 12:02:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823455.1237450 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2r6s-0002sA-LB; Mon, 21 Oct 2024 12:02:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823455.1237450; Mon, 21 Oct 2024 12:02: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 1t2r6s-0002s3-Hl; Mon, 21 Oct 2024 12:02:06 +0000
Received: by outflank-mailman (input) for mailman id 823455;
 Mon, 21 Oct 2024 12:02: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=2ab4=RR=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t2r6r-0002rx-T0
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 12:02:05 +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 49f43c37-8fa4-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 14:02:05 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9a850270e2so327329266b.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 05:02:05 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912edfc5sm195792266b.70.2024.10.21.05.02.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 05:02:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49f43c37-8fa4-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729512124; x=1730116924; 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=dPDau3OKwow0esCaNfoSaE/koAvkLGgfbnB1Y+yw2VU=;
        b=lrshU85WsBtj4cnUlr6s98niN8TU/0/PAub63V02fDjrwtvRtpOWxTznXIDetsWk09
         NrrQHIFFPtmS3HUGc0/fbKFToYsqTpBzplU/FuCHpN9ce0qHVBRmBslxf81fQdXpIXFC
         miaOCG+/vD06VuA1MYb41Xc4OecM30AQUt6rLyiWFVcPdEHXMbG+eRbsrk4a/5DtXyO5
         cFkLH0R84HoSBttjLUcQR0/oomhVGNN0fJMNttaG64gyCbpByvafl2U9N7FOT2WJxwh6
         az1n8NfTImYQ1/ovdjtMFtooYfzkc1o2uJq5V4yPYCkPbjcTK/hQPiMJvbap7zUqqNyf
         J3Nw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729512124; x=1730116924;
        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=dPDau3OKwow0esCaNfoSaE/koAvkLGgfbnB1Y+yw2VU=;
        b=xN2aNC2bM/raiSS9r++eOlSYsGvBtYTrcYuU3g0mQvVJOxfWjmiUKZchpJ7IS6gEWm
         dfwzxyzrOLBbXwydQZo+oTiF12C/xIW/oql/cmFAQ8CXBtWMyQCPmJAOcWc2tNsxdrMd
         jN6zNjfrt9VL7XPsie2oJwvSgz4BEFOuVFACCa9HoU8jLWxttIKo6VcBSWeex6dx40jc
         gMb60o/b+0+3pn1avW9V+XEJFmvdsZal5a0ZuGdlERkUdZMOT+HsM8iIR+mCjkkU30vv
         QJ2BWTDqyGMuwesxUSCGY8FEdfep9Cx6ZF7TmYr6SdPOVCaJW3CAm+NyyaqwFMMRSdsD
         trEQ==
X-Gm-Message-State: AOJu0Yz7PKUVPGHc5Kl3rDzb4cOHc1U0KYC4PXZ4nKYfWK9QqdgzzYK2
	xoNG1Q00HfSXhJRh9ZUbyVqjPX2Ru9eXaujnD2BsApw+58MemUEfHEMm2g==
X-Google-Smtp-Source: AGHT+IFVj1usi2lt0jJV5vBbv5Uxmj0nfnglzfgqHDHmFtSurKtjOCuVinbxzdDiqTI9Dur/jI08tw==
X-Received: by 2002:a17:906:f594:b0:a86:94e2:2a47 with SMTP id a640c23a62f3a-a9a69a79c72mr1304356366b.15.1729512123442;
        Mon, 21 Oct 2024 05:02:03 -0700 (PDT)
Message-ID: <e470822f190a41b2f1600821b81d7ad158ed33db.camel@gmail.com>
Subject: Xen 4.20 release schedule
From: oleksii.kurochko@gmail.com
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Community Manager <community.manager@xenproject.org>, "committers @
 xenproject . org" <committers@xenproject.org>
Date: Mon, 21 Oct 2024 14:02:02 +0200
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

Hello everyone,

As there were no objections to the proposed release schedule
(https://lore.kernel.org/xen-devel/CAMacjJxEi6PThwH2=3DNwG3He8eQn39aiaxZCw3=
bQF7i4YcmjuNw@mail.gmail.com/
), I've updated the wiki with the schedule for Xen 4.20 release
(https://wiki.xenproject.org/wiki/Xen_Project_X.YY_Release_Notes), and
it is now accessible from
https://xenbits.xen.org/docs/unstable-staging/support-matrix.html.

Have a good week!

Best regards,
 Oleksii



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 12:02:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 12:02:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823457.1237459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2r7K-0003Jx-Sz; Mon, 21 Oct 2024 12:02:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823457.1237459; Mon, 21 Oct 2024 12:02: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 1t2r7K-0003Jq-QR; Mon, 21 Oct 2024 12:02:34 +0000
Received: by outflank-mailman (input) for mailman id 823457;
 Mon, 21 Oct 2024 12:02: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=TLRE=RR=casper.srs.infradead.org=BATV+0b6dd01573de8e3a2a7a+7729+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1t2r7J-0002rx-SI
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 12:02: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 5aa62038-8fa4-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 14:02:33 +0200 (CEST)
Received: from [2001:8b0:10b:5:9789:3d79:3bbb:1070]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux))
 id 1t2r7H-0000000GGK1-3EFU; Mon, 21 Oct 2024 12:02: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: 5aa62038-8fa4-11ef-a0be-8be0dac302b0
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=yLf+zz/5tkP4VMQsRsnmRWhQ/5mNy0rcjE5fFDyVbzQ=; b=RIFB+PL7fCg39tFyzo66fwwGU2
	8718jBUCYe5an4bmwdICxO9XvgMe1zzTX5VSi2rEs1Epvxmek0fJ2rv+Pce6AlcLXAW2SREIXPtOT
	BvYYkftTizLk/j/RyF763DLZLdT4utuIV/sL6d5TkcihetHwdEQolkKlU+ZglggN1af5aQgc3zIya
	LLCD43DjUhl3ly2Qdk4SprNv54YFczUQLsXxgsjEgdezkSvnB5uwZp6jc5PaCthRiL/jf64cIP0g5
	VoKh2wsDudM8f5aswm2TyPDyhwrFkd+OygmBHsb+sQyC7+CTQb1LcB6ZALf1wv+yoc2O6Cqqr3S1C
	M+GCAnqQ==;
Message-ID: <9d988ea013f294356bda62253ad43cd24c2048e9.camel@infradead.org>
Subject: Re: [EXTERNAL] [PATCH] x86/io-apic: fix directed EOI when using
 AMd-Vi interrupt remapping
From: David Woodhouse <dwmw2@infradead.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>, Roger Pau Monne
	 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Willi Junga <xenproject@ymy.be>
Date: Mon, 21 Oct 2024 13:02:31 +0100
In-Reply-To: <3a92bbe3-d58f-4a33-82db-ead6214ecc00@citrix.com>
References: <20241018080813.45759-1-roger.pau@citrix.com>
	 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
	 <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
	 <f64650fb455c1d33d7ec3898eb5423a930624998.camel@infradead.org>
	 <3a92bbe3-d58f-4a33-82db-ead6214ecc00@citrix.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-WcYDAzLcF2TVisnoHJDw"
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


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

On Mon, 2024-10-21 at 12:53 +0100, Andrew Cooper wrote:
>=20
> > I don't quite follow how you need a sentinel value. How could you ever
> > *not* know it, given that you have to write it to the RTE?
> >=20
> > (And you should *also* just use the pin# like Linux does, as I said).
>=20
> Because Xen is insane and, for non-x2APIC cases, sets the system up
> normally and the turns the IOMMU on late.
>=20
> This really does need deleting, and everything merging into the early pat=
h.

Don't you still have to mask the interrupts when enabling the IOMMU and
then re-enable them by writing the new values to the RTE once remapping
is turned on? So at any given moment, surely it's still the case that
you know what was written to the RTE?

But OK, i don't really want to know... :)

--=-WcYDAzLcF2TVisnoHJDw
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
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQxMDIxMTIwMjMxWjAvBgkqhkiG9w0BCQQxIgQgSPpX5moE
5sAetV2JRzkSBvSSxF4B8R2+jJgj9Ens0e0wgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCZtUWVMYoC/pnucGgcafRlyV1CLR9ivtq5
AtOiAyGLFt4Ed+4G+EmO0aB4vfVv3H7AEM/B81oIvX38JQ+qRmG2GtpEMU8Rx3LrHSONlcH+zYmW
sIQHfgfGaJwCDKTryOWj2UiPgglit8p2+VYwqvXM/xEVOmnnMawkdrMTP8b8YUv5gbt/F02PTDn+
/eWdhQhIzu5g9aGfbTXKaD5fYeOw00snyJ0QKO1hXqYzQUkRhFHRStp4DsXC+1zUhXZeuBHyPF95
IFAlMlT+9QTmLa4WDPOF5oVb/nHtDgyrnNrslNCxCewX232B6lVlC1ghkppnEjnYXlN9+a04iID9
O9P08zY2hB78Xbn8Ry5JA4MOs2Vy6zQa6yHrRIUHaJ2CBcrjEYpdcO0HmYfxLhWBicE7M+A7s+xe
tWasgVeBWe+Z+vDLM/s7xGPOSy9OREFnGLcM0iZquvXCbSzp2zRhUrZo1SrTCWx19TlLK83Tjy1g
bs8U1hbwHXruwnlJ4LEn6xN9FC9KXlIc3xMvii+fQlpQWdqchMy2h7umPmJOeXmaPvWWA/oZSwQD
rnvVwzC87ASStRMJbutqEVtoLEhte/EYuzFda3pZmxU1BB3xXs2tZSUnUg76hCX7jxEdu8WTXue1
1wPQgCnI1Y9ImXh3WQZIsXotQgZZ/KXHRewuWUU2wAAAAAAAAA==


--=-WcYDAzLcF2TVisnoHJDw--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 12:18:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 12:18:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823470.1237469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2rMT-0000Sh-5N; Mon, 21 Oct 2024 12:18:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823470.1237469; Mon, 21 Oct 2024 12: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 1t2rMT-0000Sa-2o; Mon, 21 Oct 2024 12:18:13 +0000
Received: by outflank-mailman (input) for mailman id 823470;
 Mon, 21 Oct 2024 12:18: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2rMR-0000RK-8z
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 12:18: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 894b6243-8fa6-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 14:18:10 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fb5be4381dso43403261fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 05:18:10 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb6692889esm1980938a12.0.2024.10.21.05.18.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 05:18:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 894b6243-8fa6-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729513090; x=1730117890; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zfDfPZv8mcr96KheZUC8WlkeWS5ZcxKWSa0rUaFr+0k=;
        b=c8XXHBu0NkpZ+Cy1qnuPpGIW/JbKXZmzgJnybnzTGqI9CH/Q204kFeyJ8gbwF2QhtD
         BKsDb9Z7sR9p2SubuSn3enoMhWp/m5dHr/jHt2sF+Xg0zqbylZcvO/IvT2mKMldLbQ93
         RR9lLzOJK4OL5Nj6GpT96agjQWDL5QJU+Nr0E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729513090; x=1730117890;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=zfDfPZv8mcr96KheZUC8WlkeWS5ZcxKWSa0rUaFr+0k=;
        b=f5t+DLGdXNSGENRSSaBu7WalDfx5ycNKwCt/edd/zKDxjl0qACs9poH5OK/tZ3Ivtf
         71Ow2e+DD8uC1Fn5eIjs5gj1NqVW3mlv8irhJ7YRpvr+p+iG8blD2iRrOaiLwdwIePzj
         VJ06Z476vM8DKrOtnBzxqEpEzOqc4JeixyZrCmr9k39QxEZ+dHHuSPxOoCka1KpBRrVy
         Ydgz6jDjGh6XwnSwfP94HgYAo7KCvUBMlY1LhuYh4u69zt3RPAri2KlefwVqWyHC4Nqj
         lN1wdEM6IqlinBXJU91qq7SjqhGK48kLh6RF4gDuUCabdqLKHWIpOqGBxBmVvxUxt+gu
         /cdg==
X-Forwarded-Encrypted: i=1; AJvYcCXLn1+vBbxchF5wCgXRkFQ249ZBaPk+jXuXPHgZg1yjHj9sTXvt4pXgU874aMuTQfgRn6pjVw9cjLw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyD7Ch1TIKbsOaxoGAQlxSCgeJex/64aui0cpyNFLUyebh6mweh
	9xAllnTDQ2oqJCFga4zfdKtSmjc/vJDKcXRVnGKQCdYPMeJxa8TkR/jw+9nylgA=
X-Google-Smtp-Source: AGHT+IE6zYIp2+IK4SKzEBAQdiuhwHR9+Ljfnw2m9CF9IbkYYfyWcOXMNHGB/vN61aGxetU28XmAGQ==
X-Received: by 2002:a2e:bc03:0:b0:2fb:5168:1a0c with SMTP id 38308e7fff4ca-2fb82eb03eamr48750511fa.19.1729513088169;
        Mon, 21 Oct 2024 05:18:08 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 21 Oct 2024 13:18:06 +0100
Message-Id: <D51H7ZKHDY49.1NG4YOYCBIX96@cloud.com>
Cc: "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>, "Willi Junga" <xenproject@ymy.be>
Subject: Re:  [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "David Woodhouse" <dwmw2@infradead.org>, "Roger Pau Monne"
 <roger.pau@citrix.com>, <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <D51E73OWU4LY.3GIECD0KR4UW@cloud.com>
 <52c88b22daeb3740402f478ca393e07d84c87731.camel@infradead.org>
In-Reply-To: <52c88b22daeb3740402f478ca393e07d84c87731.camel@infradead.org>

On Mon Oct 21, 2024 at 12:32 PM BST, David Woodhouse wrote:
> On Mon, 2024-10-21 at 10:55 +0100, Alejandro Vallejo wrote:
> > On Fri Oct 18, 2024 at 9:08 AM BST, Roger Pau Monne wrote:
> > > When using AMD-VI interrupt remapping the vector field in the IO-APIC=
 RTE is
> > > repurposed to contain part of the offset into the remapping table.=C2=
=A0 Previous to
> >=20
> > For my own education....
>
> Careful what you wish for.
>
> http://david.woodhou.se/more-than-you-ever-wanted-to-know-about-x86-msis.=
txt

I had seen it before, but then neglected to give it the attentive read it v=
ery
much deserves. Let me correct that, thanks.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 12:32:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 12:32:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823481.1237480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2raV-0006I8-Bu; Mon, 21 Oct 2024 12:32:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823481.1237480; Mon, 21 Oct 2024 12:32: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 1t2raV-0006I1-8e; Mon, 21 Oct 2024 12:32:43 +0000
Received: by outflank-mailman (input) for mailman id 823481;
 Mon, 21 Oct 2024 12:32:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <anthony@xenproject.org>)
 id 1t2raT-0006Hr-Sr; Mon, 21 Oct 2024 12:32:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <anthony@xenproject.org>)
 id 1t2raT-0008JB-Rd; Mon, 21 Oct 2024 12:32:41 +0000
Received: from lfbn-gre-1-248-145.w90-112.abo.wanadoo.fr ([90.112.205.145]
 helo=l14) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92)
 (envelope-from <anthony@xenproject.org>)
 id 1t2raT-0000Zn-IN; Mon, 21 Oct 2024 12:32: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=Content-Type:MIME-Version:Message-ID:
	Subject:To:From:Date; bh=OFJ51rIGTDPK9KfZwWZAUjyzzCoowdHjvJO0LaHNgVs=; b=RgTv
	FXJeMREh3UvqEQJdheLGkRMwZbvthoBFxBHexPR+/qzkbyzJBbPQrvGf7YvwyB2Jo4g9cFK9Gf7cS
	mvBpnoSEhEm48bRT4vETdmkiQo5iznIb6Il4K5hBQt4UWisr8uRpDLNj5VPJcW0jba05Re7t4LtRq
	8K3PbjBcoPbu0=;
Date: Mon, 21 Oct 2024 14:32:39 +0200
From: Anthony PERARD <anthony@xenproject.org>
To: xen-announce@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Scheduled Maintenance of xenbits, wiki, mail
Message-ID: <ZxZJ542OmZTlGmXQ@l14>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hello everyone,

We planned to upgrade a few host of xenproject.org in the coming week.

This will affect access to git repository (on xenbits), download of Xen
release tarballs (on mail), access to the wiki, and email delivery
delayed for some.

The upgrade will start at 09:00 European Time (so 07:00 then 08:00 UTC)
and will take a few hours on those dates:

- 2024-10-23: mail.xenproject.org
- 2024-10-24: wiki.xenproject.org
- 2024-10-28: xenbits.xenproject.org

Cheers,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 12:33:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 12:33:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823487.1237490 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2rbJ-00079p-Lu; Mon, 21 Oct 2024 12:33:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823487.1237490; Mon, 21 Oct 2024 12:33: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 1t2rbJ-00079i-IS; Mon, 21 Oct 2024 12:33:33 +0000
Received: by outflank-mailman (input) for mailman id 823487;
 Mon, 21 Oct 2024 12:33: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2rbH-0006wG-VY
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 12:33:32 +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 ad931931-8fa8-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 14:33:30 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c99be0a4bbso5996878a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 05:33:30 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d6603sm199106266b.35.2024.10.21.05.33.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 05:33:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad931931-8fa8-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729514010; x=1730118810; 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=tzjdZeSIcmuqtlIDEl9oyOSeF8Of1W9c6v+eUL6c6AA=;
        b=b1SygCOAAZ7th/M/W8LKKH6MGtgWxpNeXbpnqzGLNdycxb0JgWedsI52CyegWN8ebb
         TvNQZt5TylWPJa8oqx/NsFXYtpRA3ritAGPAgkbAcnWt6EsJtK8zyBdm4mmGuax70sXe
         YGeiz/IlrBm8vjF5/QizXo5BL77uL2T6n5Gys=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729514010; x=1730118810;
        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=tzjdZeSIcmuqtlIDEl9oyOSeF8Of1W9c6v+eUL6c6AA=;
        b=w6+4v2oSGTs0Blkkg1YAO1sqTWeH2JDwo3w09EI2JdGQTCILHpAzrz+35asco7XZ71
         nOXPLK5bknwYn3ZrftQyB7nZQ38WIvEIP7RXEkE7M3G3LqWcTiE4kPlaeOdK2Ssew7P6
         bBrme3MvYoveminQMiXKBoC1iLuHex2IE2eG8o7ViMJ1i4/9M4MrQ0HtVuc8XDiq+Zpx
         /hGRGb+jGM9AAja1y0pw3pXu+C8h0J/JJi7qrLS5Ni5PeRKpdqrKYBNE14DCVqQCKdvJ
         WG072dMEM6ahi+g8ZG3Sv1xUMYi9SnS84oJ1LqCgw4314raxz3rFQiNxm/mHofsQ3WMM
         zuhg==
X-Gm-Message-State: AOJu0Yy5t9CjdNgXBjehYfGufT3i7UsChJED0Hb/0HFwqmc8yjCfbM2V
	QLAPzKBnhW7DWHnJJXGLm+DQqjyAFvz1gok4H2ptRANHUqhyT7aO0GHMmg5QUpGyPNLmAbTgO8g
	2
X-Google-Smtp-Source: AGHT+IFnNktbPxVUYA5meS1UBt0a+O5rMFKUMFqUvrT0+RtvPQX5tdJqFZleRCf2b7A5zAkjAJBbrg==
X-Received: by 2002:a17:907:9490:b0:a9a:3718:6d6 with SMTP id a640c23a62f3a-a9a69cdaea8mr1216931966b.58.1729514009544;
        Mon, 21 Oct 2024 05:33:29 -0700 (PDT)
Message-ID: <f60d6bde-d694-4f26-8405-9d8cefcebd80@citrix.com>
Date: Mon, 21 Oct 2024 13:33:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 Willi Junga <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <ZxZBocLV7eJUxK50@macbook.local>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZxZBocLV7eJUxK50@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 12:57 pm, Roger Pau Monné wrote:
> On Mon, Oct 21, 2024 at 12:10:14PM +0100, Andrew Cooper wrote:
>> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
>>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>>> repurposed to contain part of the offset into the remapping table.  Previous to
>>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>>> table would match the vector.  Such logic was mandatory for end of interrupt to
>>> work, since the vector field (even when not containing a vector) is used by the
>>> IO-APIC to find for which pin the EOI must be performed.
>>>
>>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>>> that the IO-APIC driver can translate pins into EOI handlers without having to
>>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>>> unconditionally when interrupt remapping is enabled, even if strictly it would
>>> only be required for AMD-Vi.
>>>
>>> Reported-by: Willi Junga <xenproject@ymy.be>
>>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>> Yet more fallout from the multi-MSI work.  That really has been a giant
>> source of bugs.
>>
>>> ---
>>>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
>>>  1 file changed, 47 insertions(+)
>>>
>>> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
>>> index e40d2f7dbd75..8856eb29d275 100644
>>> --- a/xen/arch/x86/io_apic.c
>>> +++ b/xen/arch/x86/io_apic.c
>>> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>>>  
>>>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>>>  
>>> +/*
>>> + * Store the EOI handle when using interrupt remapping.
>>> + *
>>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
>>> + * format repurposes the vector field to store the offset into the Interrupt
>>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
>>> + * longer matches the contents of the RTE vector field.  Add a translation
>>> + * table so that directed EOI uses the value in the RTE vector field when
>>> + * interrupt remapping is enabled.
>>> + *
>>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
>>> + * when using the remapped format, but use the translation table uniformly in
>>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
>>> + */
>>> +static unsigned int **apic_pin_eoi;
>> I think we can get away with this being uint8_t rather than unsigned
>> int, especially as we're allocating memory when not strictly necessary.
>>
>> The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
>>
>> Vector 0xff is strictly SPIV and not allocated for anything else, so can
>> be reused as a suitable sentinel here.
> The coding style explicitly discourages using fixed width types unless
> it's strictly necessary, I assume the usage here would be covered by
> Xen caching a value of a hardware register field that has a
> fixed-width size.

I'm >< this close to reverting that too.  It's not even self-consistent
as written, nonsense in some cases, and is being used as a whipping
stick to reject otherwise-ok patches, which is pure toxicity in the
community.

Not to mention that this rule is in contradiction to MISRA, and there's
no progress being made in that direction.


All variables should be of an appropriate type.

Sometimes that's a fixed width type, and sometimes it's not.  (And this
is what is impossible to dictate in CODING_STYLE.)

In this case, we're talking about a quantity which is strictly in the
range 0x10-0xfe, plus one sentinel.  There is a 4x difference in memory
allocated between unsigned int and uint8_t.

Given that part of the justification here is "allocate memory
unconditionally to simplify things", then a 4x reduction in allocated
memory is definitely a good thing.
>>> +        if ( apic_pin_eoi )
>>> +            apic_pin_eoi[apic][pin] = e.vector;
>>>      }
>>>      else
>>>          iommu_update_ire_from_apic(apic, pin, e.raw);
>>> @@ -298,9 +321,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>>>      /* Prefer the use of the EOI register if available */
>>>      if ( ioapic_has_eoi_reg(apic) )
>>>      {
>>> +        if ( apic_pin_eoi )
>>> +            vector = apic_pin_eoi[apic][pin];
>>> +
>>>          /* If vector is unknown, read it from the IO-APIC */
>>>          if ( vector == IRQ_VECTOR_UNASSIGNED )
>>> +        {
>>>              vector = __ioapic_read_entry(apic, pin, true).vector;
>>> +            if ( apic_pin_eoi )
>>> +                /* Update cached value so further EOI don't need to fetch it. */
>>> +                apic_pin_eoi[apic][pin] = vector;
>>> +        }
>>>  
>>>          *(IO_APIC_BASE(apic)+16) = vector;
>>>      }
>>> @@ -1022,7 +1053,23 @@ static void __init setup_IO_APIC_irqs(void)
>>>  
>>>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
>>>  
>>> +    if ( iommu_intremap )
>> MISRA requires this to be iommu_intremap != iommu_intremap_off.
>>
>> But, if this safe on older hardware?  iommu_intremap defaults to on
>> (full), and is then turned off later on boot for various reasons.
> I think it's fine because setup_IO_APIC_irqs() is strictly called
> after iommu_setup(), so the value of iommu_intremap by that point
> should reflect whether IR is enabled.

Ok.  Can you note this in a comment?

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 12:41:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 12:41:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823512.1237512 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2riQ-0003xg-MA; Mon, 21 Oct 2024 12:40:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823512.1237512; Mon, 21 Oct 2024 12:40: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 1t2riQ-0003xZ-JV; Mon, 21 Oct 2024 12:40:54 +0000
Received: by outflank-mailman (input) for mailman id 823512;
 Mon, 21 Oct 2024 12:40: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=uLLp=RR=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t2riP-0003xT-Il
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 12:40:53 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20630.outbound.protection.outlook.com
 [2a01:111:f403:2418::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b45bfe8d-8fa9-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 14:40:52 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by CH0PR12MB8579.namprd12.prod.outlook.com (2603:10b6:610:182::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29; Mon, 21 Oct
 2024 12:40:47 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 12:40: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: b45bfe8d-8fa9-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=otqoy5vm8r5aBm/AmjCz/sP5kzaT7JnBcqms6SD4Id/cKnVbfZ3GvPlhAcOHof4pjpNUUD6dFxU3GX3FDaADZff9KH09hZHiZwhUNEVuj1q/Y0hlW+5qfA9F00eQKpAkS0ke96knQjuQVIUF7XPqam03SBGhdA3xBOWoZvFpaZP658LVaV3ufbWfsDw4V5H42D018ZRtzUe7QXVYwUfpI08+Ueibo/qkz58mZ/ucyfZ6AooVQQsTN0nCw3Gn3qHvXfPGYHY8oZQTn5BGBbgJGfyGrKpv4O60Kkd2+lWnr2LgQJtbeqySc5hDRWcy5kmGDILtk9IkNIkSmUGqbW3Wdw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=hFN2UDjaEnLN9eJmO5kwiez4nOlZrLYP8urHK7eEdQ4=;
 b=stGMae+fl1SaiFLYJVAPlKc01AltpFQ7/kWLIz3b/k7dCAU2AupB8jaC1KPjT8mhiJcfept9iljCHYbFh0A282lXctAY2WltPLIagAmQ8FHk4FgvBJPsg8LBu8lMXQlaPgV2tN5G7i9JrW3j+wxDtorRh3/3y1g+1iFQtu95WZd/y/FxYdHkwKESwCOMcDcNxEhxXPUO8AIJRFljUMFm2RdrZEMCb3jDYSUxC3WWnsjfdEJ+0z/gkpwTLuf581ab39f4l0c9LJ5YIGahbKD0oK338E2CCu2qUw2PAqQ/irNszTUkdqiRmhfWl1tsmow404TsGS1KQtT9zzGzCkerQg==
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=hFN2UDjaEnLN9eJmO5kwiez4nOlZrLYP8urHK7eEdQ4=;
 b=h2bGsJwWIWLWy05CKdn0i7PQ0TZ1o58DtyJ7eG2V54Z9I243OqzoBhzFn0pqy0ArstJltAh7LZEadZwjffK8yOPIi04k+ank2eqqnHvjJQSAZyo2UARRNQCVL7nkZriIbkXfCO/PevTvilAXKebGVFQVtvcG7KvKCTADgARdeYQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <a92993c9-8af9-4d53-a934-79e7f5a5f92a@amd.com>
Date: Mon, 21 Oct 2024 13:40:42 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Content-Language: en-GB
To: Julien Grall <julien@xen.org>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>,
 "Jiamei . Xie" <jiamei.xie@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-4-ayan.kumar.halder@amd.com>
 <5740cd89-1064-4ad1-a0a6-90c03ab99768@xen.org>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <5740cd89-1064-4ad1-a0a6-90c03ab99768@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO2P265CA0173.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:a::17) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|CH0PR12MB8579:EE_
X-MS-Office365-Filtering-Correlation-Id: ed7ab63a-501d-4818-e19f-08dcf1cd9672
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?b2xNQ3ZzSjVHN1NUc1k4ZEpnY3Q4cnQyRmw0cXdJSElrOFNmdzJqazN5Yk5j?=
 =?utf-8?B?YnRxNjJ0OVNuNDJDWndCbEpBWnNUSnhoUENJQXBzU0lseVF5UXhPbEIvUGpu?=
 =?utf-8?B?bFZFSG1sQzd5UXovUHN0c0szelRDRTZkZUh0a01TYkRqWENIMEZEcGJmWDBJ?=
 =?utf-8?B?Q2dOWmhnSDlleURPNHhIeHNjbCtrd0JBTlBUZzg3UUI5VUdDQSt3ZmdVT2Nl?=
 =?utf-8?B?WWhJUURvUnkxYmRBbkwzMllodG8zL2wvdWFWakt1R1lLR0hSUk0vaXVmcU8y?=
 =?utf-8?B?SjRZV1NRRklCMUhPbFU0WUJzMGJJcmk3WlFTVm5vdmZRMUNnMTAwb2pVd0JY?=
 =?utf-8?B?Z0JXTmpZUHZDMnA3K0Z0cGhtVlF6RTRRdkhTWVQzUnpLdVZWT2FjRmJEUHlo?=
 =?utf-8?B?MVh3YTlpL3gxYjJwU09tWFM5SFRqaXRuYzhZY3g3aGxHWEROc2ZrakJ5Q01X?=
 =?utf-8?B?Z3pyaUhzbmxuZGVpMG8ybWU2ZWZ1VXJDTm0vek5sdm51QnRoU1pZUkQrbVBJ?=
 =?utf-8?B?WXFPeXN4QjhmNzNNTEtiTmk4MmhsdEVsWnhVMnJCcUJCSFRiRlRyTHB6Q1ZF?=
 =?utf-8?B?UGlTNU85NkdhRmY0L3FaWXBuWUo1SG1RSUJjRVRsYXpEeFJDY2ZHcnVvNVNF?=
 =?utf-8?B?TlhCbENqRG1sbHA0QkZYdkJwdi9UTnZEN0R3aVJwQ2d1NVJPSEJrbDRhbjRk?=
 =?utf-8?B?eWVaQXZ4SXU3YklGa21ua285NDlBeFZJSU1SQnk2cEFPTnBEeGhTYmxTOFVV?=
 =?utf-8?B?TGEvNjVHVlBQSlUxWXZtbS9PSFVoZFZzRURKNDdycGMvcnYzUXpEa3l2Rkxt?=
 =?utf-8?B?MnpYTnV6ekJ6L2pqYUh3bCswZlRPdTF5ekRZSUptSlIzM0lrWHZKUzFjeUQ1?=
 =?utf-8?B?amhWNkVSV3dDZFFCTlI0TEM1Y09wQnNOeURwK1IzYlZJMWJuNnNrYU5NMERv?=
 =?utf-8?B?c1dhUDhWRWdpYnBjZ3VTZnQ0UTNZN1A4UWZCODFWQWk3cXkzT09WV25pYXUr?=
 =?utf-8?B?ZTIxSmlBRXBidURmbU55aE5IWDZoaitKQVZmaCt6WmwxSkJxMWhMdTErZG90?=
 =?utf-8?B?K3M4YkRWRGJlZkRBN0lnSUUvWnlkZktla1NrcTVZdDhvT0tkYzhyaWYwZFdE?=
 =?utf-8?B?VjE2V1g4QkpyeTJrTitjSGllemFlbGRJcWZ4Y21ydWdPWERYU3JQQVlnbVNn?=
 =?utf-8?B?MjcrU0pueFBmbGNUUDR3WHZyMkJ2Q3Q1Z2dvNG43SVRpdk56dTJJUTBReUZ2?=
 =?utf-8?B?OHZ3L3JKL2NBV0xweHN0ZGpHKy93K2hXU2tHaUJPTXBWVk54c2hEcEJBcW5B?=
 =?utf-8?B?N1lBdytMOGtXRDVSU0tZUkhMbm9GdmNTV1FpMjU2VzRpM1NNSHgwS2RwVU44?=
 =?utf-8?B?VWo2WWMvWUExWGYzOHBneGMvczR3Q0dmQUN3NkRESVhOVE50Vitwdjh2SHkx?=
 =?utf-8?B?K2N6RXI4aDIvU2lkYm9MdkxVYUxxN1RVU2NTZUVFK2tLTEo5THBzblNnZU85?=
 =?utf-8?B?dU1BS0R1N3BDRU8vUVBQRFA0MDV3SHIrOW9TYjNlTkk5dnlFQk9KcDR3TTRt?=
 =?utf-8?B?Tmpic3lXVElvRlpVV1FpdU43V3JacWd6N3RINEJ5c25hMmp2T3UyanJQaGRr?=
 =?utf-8?B?ZVBIajBUOEJycUpwMVpIZjVXdTEweDNZcmJueGg0UzdzdlVCbG84TGJxMGxD?=
 =?utf-8?B?MGxUU29iSTRDQ0JWMEV2b3p3andCbmNpd3dWSGdtMmxySDFvK0NMSWR0ZW1C?=
 =?utf-8?Q?KskCripeEXRhnbdYxDErEWMsF2wr2uWvyab11WU?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cXo0T0tTd0tLTU12SjJBczlZbHR5c2lEWnh4djlIaGFRQ21nWFI3SU5uM2RS?=
 =?utf-8?B?M0hlRTNvWHlOVUpOVmp0YlFJL1lIVVV4QStmbldTb1FOTURidkxWQVhUWUd6?=
 =?utf-8?B?SGFFQ28zREFxWUkzWjBFUzU4Wi93cWRINTZPY3k0QlptUG9QRXpoL1JsTkFE?=
 =?utf-8?B?Ylc1TjlHYWpVUUhUc0ZLbEJ3TUJPRnZKL01vdHJ4RE9CVkt4Zzc2WUovOStR?=
 =?utf-8?B?bkFEdkZMUWRyMW40OW1SbHlMZjc3bUkxTmpRbmNhdUxvTWNubUJJbzNlWW9O?=
 =?utf-8?B?TEZPR2Q3NFFpRUxaTENVTVlPUTFmSzRhVlRna29DcFUxbVdLcHJVeC9FMXE0?=
 =?utf-8?B?ZTVLV21CNm12a055UzNqU0RsOEJtVEljVkdRVnFSSlpZWjRDMXRmR3BRZDNj?=
 =?utf-8?B?UjJ6Vkt3YTRGNkpqb1RRVlBMTEYyVFdLU2xzb3pPVzhTZi9EOTFCMG94Vjdv?=
 =?utf-8?B?T2hKZDBXc0hDMjg3ZFNhdndoVlRueVdUNEZzdWRIb1dTNTRxZ2REamJVZEQw?=
 =?utf-8?B?VExrdEZMRml5aG81RXFya3U2a2hBZHFscm9aSVUxTDZpdGNJVTJ5R1d5bUMz?=
 =?utf-8?B?dG5uMHVEYWNIU3ZrYVFmWEVURW9hdW1sU0xxL3g2TE8rOWtCbDlVRUdJNUFI?=
 =?utf-8?B?QVl0YmVSWkN2Z2dyeWhkNS9WRkgxTVZaRXVmWDJaY0R6MS9QSm1tWlJyRXhN?=
 =?utf-8?B?NE1SU2Nabkh4WVZkZUk3V0VGeFlnak5NYkNSenBFVUtKN0R6K2ltUVFhbkhj?=
 =?utf-8?B?akJ0bVJhZFh4NmFNbXBZSUt4dUQ1NW90V3FCbnIzeURVeXBoZWFEb3J3d3NB?=
 =?utf-8?B?WGROZlExQ2xZQk9YYWpSQ1dXd0NiTHlvdHZzYXJ6OXZKTmZVUHlXSFliVVdQ?=
 =?utf-8?B?TFhMa0ZxVHFlbVlHMkNPNXA3VDU1UG5yNEl0WHdvc2xUalE3TEJnZmU2dndI?=
 =?utf-8?B?VmdIclRJVjJJbXN2bEpOY0djeCtYMWwyR0QrL0hPeHIyMmNIV0YyS1VQUTBl?=
 =?utf-8?B?ZkJUdWRTdDlBYXJLNEY3TXFzTXhkSk1WdGZCWmwwRVZKb2FVV2tuNlhweEIr?=
 =?utf-8?B?KzJmWm5hY3Y0TE5DZmRDL3FMU3dTZzcraVZtekVwenVHaWJhV0RxR0t5MjFs?=
 =?utf-8?B?dlVTT3VCSzRiaEtkbjNvU0xzR2ZRR24rS2NsVmd1NSswQnBDUmVDTEp1dzd2?=
 =?utf-8?B?cm53RkU2WjRhRXo4QUVoRWpOVHl4RXNsdVZMTXJrTkJZMEpwcWlzNkxWMmlq?=
 =?utf-8?B?MWZ3ZXNieTdWWmNNNmE4RmowUmMxTEV2aW4xVTNPb3hOWnJvZm9MMzEwTkF0?=
 =?utf-8?B?UzlFa0NEY09BZURZTlFBdG9MRDdmeXVNakluMmZNQ3ZTVVdoOGs4d1NGc1dm?=
 =?utf-8?B?WG5pNEJ2Wnp6dVVyYkMwem1CRThVbUVPaVRXOGJvd3RyRFVhY2NKZXpEVTlJ?=
 =?utf-8?B?aFA1MXJNaGVGMzExZGFSeDkxOHNyKzlZUkpObGtaNk91RTg4MStSaFdlOS9F?=
 =?utf-8?B?bVVTOVFTdG8wbE5hd0N5eERid0p3dGhjU01mRlU4QWRTUjZ1TitoUE1hVXh5?=
 =?utf-8?B?WG9PM1RabGhEYmhNb2RuNE5MSnVjaEFXWnJ1YVFXdUNGbHduM3hVYmJVNmpr?=
 =?utf-8?B?eFVNQVF3dUlPK2dwM2cvMks4MmpTc1RtT0tOQmhRb0lURXJLemc1NlJNRkdX?=
 =?utf-8?B?bk8zK3BkZUZ4M1VHcVlNakNSZWwwakFQais1MGxmSWhkWThRclFpaWMzSkRJ?=
 =?utf-8?B?cm5HR3BiSUc1SUVFOTg1RG9FTUoyQlJDNkdIcGMzSEgrMzRQVVdPcDBvWUF5?=
 =?utf-8?B?ZWFxeVdscFNTNy9ia3pDY21mYXlKYldRSnJnZm1sR0dlMFpFR0pNa01wbFM0?=
 =?utf-8?B?djBaYzNXSTNaaktwYVNXTk5BbkJteWd6a2JudnAxVTR0Z242VS9IR0dnck1Q?=
 =?utf-8?B?d2RmTzBjejU0WHZONTlxb2Z5bjNlN3IrRXU5Z09EVEs5Y0s0Q1RrTzYvQjZa?=
 =?utf-8?B?UTdtdUFMaEFodmF5YTkyZWhJVk1LVlF3RUNRVzZlWndRdXEvZk5qajlHYmZK?=
 =?utf-8?B?Q2lBalJtbVBPbndqWHEwTi9SQTdUK0VzRGU3WTlLK01IeDZKeFhDcG9jQ1NE?=
 =?utf-8?Q?6odKxJJhpfkRTm2M2PE2SM/0i?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ed7ab63a-501d-4818-e19f-08dcf1cd9672
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 12:40:47.5857
 (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: +BifhuIB3wx/9PENaG5qTrFJYwghIhv9wXm7If5pVZlWmb0+PLEQ/JhNy21y+Dz66R0JzTqalAlfIQsBH83t0g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB8579


On 18/10/2024 22:59, Julien Grall wrote:
> Hi,

Hi Julien,

Few clarifications.

>
> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>> From: Wei Chen <wei.chen@arm.com>
>>
>> On Armv8-A, Xen has a fixed virtual start address (link address too) 
>> for all
>> Armv8-A platforms. In an MMU based system, Xen can map its loaded 
>> address to
>> this virtual start address. So, on Armv8-A platforms, the Xen start 
>> address does
>> not need to be configurable. But on Armv8-R platforms, there is no 
>> MMU to map
>> loaded address to a fixed virtual address and different platforms 
>> will have very
>> different address space layout. So Xen cannot use a fixed physical 
>> address on
>> MPU based system and need to have it configurable.
>>
>> So, we introduce a Kconfig option for users to set the start address. 
>> The start
>> address needs to be aligned to 4KB. We have a check for this alignment.
>>
>> MPU allows us to define regions which are 64 bits aligned. This 
>> restriction
>> comes from the bitfields of PRBAR, PRLAR (the lower 6 bits are 0 
>> extended to
>> provide the base and limit address of a region). This means that the 
>> start
>> address of Xen needs to be at least 64 bits aligned (as it will 
>> correspond to
>> the start address of memory protection region).
>>
>> As for now Xen on MPU tries to use the same memory alignment 
>> restrictions as it
>> has been for MMU. Unlike MMU where the starting virtual address is 
>> 2MB, Xen on
>> MPU needs the start address to be 4KB (ie page size) aligned.
>>
>> In case if the user forgets to set the start address, then 0xffffffff 
>> is used
>> as default. This is to trigger the error (on alignment check) and 
>> thereby prompt
>> user to set the start address.
>>
>> Also updated config.h so that it includes mpu/layout.h when 
>> CONFIG_MPU is
>> defined.
>>
>> Signed-off-by: Wei Chen <wei.chen@arm.com>
>> Signed-off-by: Jiamei.Xie <jiamei.xie@arm.com>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>> ---
>> Changes from :-
>>
>> v1 - 1. Fixed some of the coding style issues.
>> 2. Reworded the help message.
>> 3. Updated the commit message.
>>
>> v2 - Added clarification for the use of page and page size.
>>
>>   xen/arch/arm/Kconfig                  | 10 ++++++++
>>   xen/arch/arm/include/asm/config.h     |  4 +++-
>>   xen/arch/arm/include/asm/mpu/layout.h | 33 +++++++++++++++++++++++++++
>>   xen/arch/arm/setup.c                  |  8 +++++++
>>   xen/arch/arm/xen.lds.S                |  6 +++++
>>   5 files changed, 60 insertions(+), 1 deletion(-)
>>   create mode 100644 xen/arch/arm/include/asm/mpu/layout.h
>>
>> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
>> index ed92eb67cb..15b2e4a227 100644
>> --- a/xen/arch/arm/Kconfig
>> +++ b/xen/arch/arm/Kconfig
>> @@ -23,6 +23,16 @@ config ARCH_DEFCONFIG
>>       default "arch/arm/configs/arm32_defconfig" if ARM_32
>>       default "arch/arm/configs/arm64_defconfig" if ARM_64
>>   +config XEN_START_ADDRESS
>> +    hex "Xen start address: keep default to use platform defined 
>> address"
>> +    default 0xFFFFFFFF
>> +    depends on MPU
>> +    help
>> +      Used to set customized address at which which Xen will be 
>> linked on MPU
>> +      systems. Must be aligned to 4KB.
>> +      0xFFFFFFFF is used as default value to indicate that user has not
>> +      customized this address.
>> +
>>   menu "Architecture Features"
>>     choice
>> diff --git a/xen/arch/arm/include/asm/config.h 
>> b/xen/arch/arm/include/asm/config.h
>> index a2e22b659d..0a51142efd 100644
>> --- a/xen/arch/arm/include/asm/config.h
>> +++ b/xen/arch/arm/include/asm/config.h
>> @@ -69,8 +69,10 @@
>>   #include <xen/const.h>
>>   #include <xen/page-size.h>
>>   -#ifdef CONFIG_MMU
>> +#if defined(CONFIG_MMU)
>>   #include <asm/mmu/layout.h>
>> +#elif defined(CONFIG_MPU)
>> +#include <asm/mpu/layout.h>
>>   #else
>>   # error "Unknown memory management layout"
>>   #endif
>> diff --git a/xen/arch/arm/include/asm/mpu/layout.h 
>> b/xen/arch/arm/include/asm/mpu/layout.h
>> new file mode 100644
>> index 0000000000..d6d397f4c2
>> --- /dev/null
>> +++ b/xen/arch/arm/include/asm/mpu/layout.h
>> @@ -0,0 +1,33 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +
>> +#ifndef __ARM_MPU_LAYOUT_H__
>> +#define __ARM_MPU_LAYOUT_H__
>> +
>> +#define XEN_START_ADDRESS CONFIG_XEN_START_ADDRESS
>> +
>> +/*
>> + * All MPU platforms need to provide a XEN_START_ADDRESS for linker. 
>> This
>> + * address indicates where Xen image will be loaded and run from. This
>> + * address must be aligned to a PAGE_SIZE.
>> + */
>> +#if (XEN_START_ADDRESS % PAGE_SIZE) != 0
>> +#error "XEN_START_ADDRESS must be aligned to 4KB"
>> +#endif
>> +
>> +/*
>> + * For MPU, XEN's virtual start address is same as the physical 
>> address.
>> + * The reason being MPU treats VA == PA. IOW, it cannot map the 
>> physical
>> + * address to a different fixed virtual address. So, the virtual start
>> + * address is determined by the physical address at which Xen is 
>> loaded.
>> + */
>> +#define XEN_VIRT_START         _AT(paddr_t, XEN_START_ADDRESS)
>> +
>> +#endif /* __ARM_MPU_LAYOUT_H__ */
>> +/*
>> + * Local variables:
>> + * mode: C
>> + * c-file-style: "BSD"
>> + * c-basic-offset: 4
>> + * indent-tabs-mode: nil
>> + * End:
>> + */
>> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
>> index 71ebaa77ca..0203771164 100644
>> --- a/xen/arch/arm/setup.c
>> +++ b/xen/arch/arm/setup.c
>> @@ -295,6 +295,14 @@ void asmlinkage __init start_xen(unsigned long 
>> fdt_paddr)
>>       struct domain *d;
>>       int rc, i;
>>   +#ifdef CONFIG_MPU
>> +    /*
>> +     * Unlike MMU, MPU does not use pages for translation. However, 
>> we continue
>> +     * to use PAGE_SIZE to denote 4KB. This is so that the existing 
>> memory
>> +     * management based on pages, continue to work for now.
>> +     */
>> +    BUILD_BUG_ON(PAGE_SIZE != SZ_4K);
>> +#endif
>
> I think it would be better suited in mm.c or mpu/*.c.

We do not have mpu/*.c at the moment. Also, I am not sure within which 
function in mm.c, should this change be incorporated.

Can we take out this change from the current patch and put it in a later 
series when we support the lateboot of Xen (ie start_xen() onwards) for 
MPU ?

>
>>       dcache_line_bytes = read_dcache_line_bytes();
>>         percpu_init_areas();
>> diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
>> index bd884664ad..fe4b468cca 100644
>> --- a/xen/arch/arm/xen.lds.S
>> +++ b/xen/arch/arm/xen.lds.S
>> @@ -231,6 +231,12 @@ SECTIONS
>>    */
>>   ASSERT(_start == XEN_VIRT_START, "_start != XEN_VIRT_START")
>>   +/*
>> + * On MPU based platforms, the starting address is to be provided by 
>> user.
>> + * One need to check that it is 4KB aligned.
>> + */
>> +ASSERT(IS_ALIGNED(_start,       4096), "starting address is 
>> misaligned")
>> +
>
> Shouldn't this be protected with #ifdef CONFIG_MPU? 
yes
> Also, it would probably be useful to start the exact size in the error 
> message.

Do you mean ?

ASSERT(IS_ALIGNED(_start,       4096), "starting address should be 
aligned to 4KB")


- Ayan



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 12:41:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 12:41:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823520.1237522 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2rjH-0004SR-0j; Mon, 21 Oct 2024 12:41:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823520.1237522; Mon, 21 Oct 2024 12:41: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 1t2rjG-0004SK-UK; Mon, 21 Oct 2024 12:41:46 +0000
Received: by outflank-mailman (input) for mailman id 823520;
 Mon, 21 Oct 2024 12:41: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2rjF-0003xT-Mc
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 12:41:45 +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 d4abd648-8fa9-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 14:41:45 +0200 (CEST)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-539eb97f26aso4907585e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 05:41:45 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a915a48aesm201897966b.221.2024.10.21.05.41.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 05:41:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d4abd648-8fa9-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729514505; x=1730119305; 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=7Vn6Q0Pwqa5RNW1ybDKnNgbtaU+fomY1vCuQ4A19ju0=;
        b=dsZblfvp14mrjZh2M+OVG0kdMkzCDU+ECCxdowE2v32Gqx+GNdoIZ8erq+6yskTb7a
         zdN0m+A+UOCu2RB899dglW2of8plrwyvkf19hISCDuhETpwbAtagV6IeadkTjnyjL9Td
         pHPXeNij1oKYYmrvc38WUyVas/DrQD6C3Hb18=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729514505; x=1730119305;
        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=7Vn6Q0Pwqa5RNW1ybDKnNgbtaU+fomY1vCuQ4A19ju0=;
        b=Cg5k8UpvvHxQ8yasJKauIp+6FAOEHHVaPsXLpDojLcA9qatIzNI+QuSDnPgsraUIjC
         aNsH68j3es8czqFV4YWFEW+zUACaUYZ2IPYCRPGK/yKoGVa5EChh22ufS0jyZ2iMw7Q2
         QNAbUufNnV62WuPpt+E4MoRPAsGWkol5ykhPR3YHhVJGDjJDSzWetfwB+p+CXNV1U6B/
         Sj6zGfFgLEDDwTckACT145QzhHi8syfVxrKzlExBXFHKbGT8Dk/jHuwPKnrBgOjuCCIU
         FRRDI4j41KCnHjF9XxILIB1qS47O5MmfSFXGqXLlt0nlbVdK0/3lqeM3NNLuUsC3oGCg
         FnKQ==
X-Forwarded-Encrypted: i=1; AJvYcCVTp0jKbSCfnZS1FfK5cLUcnPuqO+aSmC/dXd3X8zXWH1vKDyzE9qk3TfhFmSq91gHJLtr6FNftjO4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yws7NTkNncwD3KHd2DLAzEtETNwCAwsSz1v6sX1n+F+fhn6/ExU
	ZX4lCgh2RCPlozLHB6zE4bkzFxWn8Xhwv7deU1F5ptHPlI+ExL/uXpOk8YxnV3w=
X-Google-Smtp-Source: AGHT+IFG8PSqz/3M0OFJJCC3SDXKuPu62s11fcFqZenx7BM+hcmnKoK10rPWm8872Agmb3q+g8+ISQ==
X-Received: by 2002:a05:6512:4020:b0:539:8a9a:4e56 with SMTP id 2adb3069b0e04-53a1545c412mr4810061e87.53.1729514504696;
        Mon, 21 Oct 2024 05:41:44 -0700 (PDT)
Message-ID: <8d419b12-efbf-4314-8148-3ece0baa779b@citrix.com>
Date: Mon, 21 Oct 2024 13:41:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] SUPPORT.md: Argo: Upgrade status to Tech Preview
To: Christopher Clark <christopher.w.clark@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Daniel Smith <dpsmith@apertussolutions.com>, Rich Persaud
 <persaur@gmail.com>, Jason Andryuk <jandryuk@gmail.com>,
 openxt@googlegroups.com
References: <20241019190652.21559-1-christopher.w.clark@gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241019190652.21559-1-christopher.w.clark@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19/10/2024 8:06 pm, Christopher Clark wrote:
> Recent patches to xen-devel indicate active interest in Argo within the Xen
> community, and as the feature has been documented and in use by
> OpenXT for multiple years, update the Xen SUPPORT.md statement of status.
>
> Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>

We also discussed this in XenSummit didn't we?

If so, I'd suggest that gets mentioned too.


As for work before full security support, destruction is currently a
long-running operation which needs making preemptible.  Specifically,
moving into domain_teardown().

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 13:54:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 13:54:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823536.1237539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2sri-0003z9-96; Mon, 21 Oct 2024 13:54:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823536.1237539; Mon, 21 Oct 2024 13:54: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 1t2sri-0003z2-59; Mon, 21 Oct 2024 13:54:34 +0000
Received: by outflank-mailman (input) for mailman id 823536;
 Mon, 21 Oct 2024 13:54: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=kyLN=RR=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t2srg-0003yt-F7
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 13:54:32 +0000
Received: from fout-a4-smtp.messagingengine.com
 (fout-a4-smtp.messagingengine.com [103.168.172.147])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fd0b81b8-8fb3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 15:54:28 +0200 (CEST)
Received: from phl-compute-02.internal (phl-compute-02.phl.internal
 [10.202.2.42])
 by mailfout.phl.internal (Postfix) with ESMTP id 52CE913806CA;
 Mon, 21 Oct 2024 09:54:27 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-02.internal (MEProxy); Mon, 21 Oct 2024 09:54:27 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 21 Oct 2024 09:54:25 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd0b81b8-8fb3-11ef-a0be-8be0dac302b0
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=1729518867;
	 x=1729605267; bh=OVvohps445LY4Ocyxh36b8xLuT44vmvyNSU/Hs8Em14=; b=
	W2BL4VaFqzY1jPg43V6mlfO+9HAx9/obBgwHECrt0Jjjn1b9nIXceIuDPSjEJbe0
	4m2TqD55lr/bGAtipUDxGXMG4BtW90818gi9UbHKn8hAsTqu0OWvLMwMGNclr0ve
	/AkB/QDzNFUvK1ckq9VDvFtjThtJKVFzjZeV3VRRexCqIPS/V0C3I10DbMSQf8JT
	BXzdFvnBhVpT7aGbPz46fjB/Elw213uOjcDnSysIQm7HM8j4+0uqQ4f/dYIf5Jl7
	yJGEgBCXA9aYSENriayHE0PXDMvrUpQzpR6yNfZhkzgl07M5A9zWRGIsQQORYdiL
	PDrLzJnppThTsIdXJrh+Tg==
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=1729518867; x=1729605267; bh=OVvohps445LY4Ocyxh36b8xLuT44
	vmvyNSU/Hs8Em14=; b=E3kSlB3qb9v/k3hNmVfFwoIrERpmqSWAflyBZ3Thy0K5
	BuQ4SC8uAZBdx9r0fneAzZDjC4FT0BCqswUShq//QSYfCMhkIK6ZXpAgzwCsxww4
	4mlu+xexuVpdA/ikWzFb8h7t2t6Dh6N381wubcPyo4k6taDr1HPUEC7qBKCcm+66
	ToSQYsv3zT7JQ+Hd/ZSujKaHLaNbTL6k8Ovkbdf4YEEGwtEonBaJza0osT5dLrQC
	ORP9impNZQG0+M+HCX0sr6q9HYurDD+s9QbE+3D/4VhOKC1yiPN9y+rqIUxT90gy
	1oWwlDRDOFiq9HAaUFXHaCoU+XY96zaW5iHvMhZGUA==
X-ME-Sender: <xms:El0WZ4zF-4c7Y5DoRi6hpFZCUJclT2uKQVilUvI5_qbgr3vZ5OEsHg>
    <xme:El0WZ8QAtebSMyXk4j8Y8svkJb0WQzkoO9DEZ7PbMWGYfgZhnf8AWj-G016hzIucg
    Yohvl5wT2I13Q>
X-ME-Received: <xmr:El0WZ6XD0X1UpMGiutbSk8uSaCNmJyMbI0DQzb045cybWkuj7cnTZPwcFmdmm8mdtWrLtA3L0DOeSTj-ASilzQZEGuqRxrMhCg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdehledgjedtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohephedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnughr
    vgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhopeigvghnqdguvg
    hvvghlsehlihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopehjsggv
    uhhlihgthhesshhushgvrdgtohhmpdhrtghpthhtoheprhhoghgvrhdrphgruhestghith
    hrihigrdgtohhmpdhrtghpthhtohepughpshhmihhthhesrghpvghrthhushhsohhluhht
    ihhonhhsrdgtohhm
X-ME-Proxy: <xmx:El0WZ2j3Fb8aJbvx84NcHZuF-JJKOEgzmkubumNgjRIliHOxssEISg>
    <xmx:El0WZ6CLxZjkbsN0GbjJBilRzlm8TgDWSDriU69l-3kDirsL32OXvQ>
    <xmx:El0WZ3LP9H_EBT-ItuOoucpquKGSVCubSUqc62S76LrpilebmQIBhg>
    <xmx:El0WZxBRUvmeewkKNxW6A5b3DMz55aF3zxNPo7DBbg8DuX1lL9UGZw>
    <xmx:E10WZ9_xNkBhw5wqsvz58QG9QuE9cd2NwNFJ4MgF-zRo4fsZoJ_BonxZ>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 21 Oct 2024 15:54:23 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Jan Beulich <JBeulich@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH] x86/boot: Fix PVH boot following the start of the
 MBI->BI conversion
Message-ID: <ZxZdD-LtTZo4qTzk@mail-itl>
References: <20241019182054.3842879-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="RVHBqWdD+4k30F0s"
Content-Disposition: inline
In-Reply-To: <20241019182054.3842879-1-andrew.cooper3@citrix.com>


--RVHBqWdD+4k30F0s
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 21 Oct 2024 15:54:23 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Jan Beulich <JBeulich@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH] x86/boot: Fix PVH boot following the start of the
 MBI->BI conversion

On Sat, Oct 19, 2024 at 07:20:54PM +0100, Andrew Cooper wrote:
> pvh_init() sets up the mbi pointer, but leaves mbi_p at 0.  This isn't
> compatbile with multiboot_fill_boot_info() starting from the physical add=
ress,
> in order to remove the use of the mbi pointer.
>=20
> Fixes: 038826b61e85 ("x86/boot: move x86 boot module counting into a new =
boot_info struct")
> 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: Daniel P. Smith <dpsmith@apertussolutions.com>
>=20
> This is a testiment to how tangled the boot code really is.

Did it causes crash in some boot configuration? If so, did some test
tripped on this (from what I see, not a gitlab one)?

> ---
>  xen/arch/x86/setup.c | 1 +
>  1 file changed, 1 insertion(+)
>=20
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 6746ed8cced6..bfede5064e8c 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1048,6 +1048,7 @@ void asmlinkage __init noreturn __start_xen(unsigne=
d long mbi_p)
>      {
>          ASSERT(mbi_p =3D=3D 0);
>          pvh_init(&mbi, &mod);
> +        mbi_p =3D __pa(mbi);
>      }
>      else
>      {
>=20
> base-commit: e9f227685e7204cb2293576ee5b745b828cb3cd7
> --=20
> 2.39.5
>=20
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--RVHBqWdD+4k30F0s
Content-Type: application/pgp-signature; name="signature.asc"

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcWXQ8ACgkQ24/THMrX
1yzMogf9FH69iDN/aInhRMer0ef0mpKLmGPw4JJgDFygBPHeIyvQ/uJ/5CunKbVu
nBG58wcG6WyJ1LTsMQ95kH+2OxVyXr2RB5UAvDPw0XqE5Ox4SivsTsDIJ96tyB8d
B6LYn0sp+ODdsvnDDJ+NYH4WUNklQC2Sex3iK38RrpAs51BeS7nJjyXBaLR1jalK
d1zH8QX0Z2MIivwQqbhLw9mGwIjsB8mq7aDR+nPv+nmy/A5cKI6V3sf0S3tdxRLn
xDFlxSrsLLxvlRBBiQ+80LGHfp9mlJBfw8YLJXmnyUHxPTASwqa+cgmRrOT59nCB
Q0/mNNdyfKfHLWVrPCpevZ6VO16LlQ==
=LX1G
-----END PGP SIGNATURE-----

--RVHBqWdD+4k30F0s--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 13:56:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 13:56:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823545.1237548 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2stC-0004YV-MI; Mon, 21 Oct 2024 13:56:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823545.1237548; Mon, 21 Oct 2024 13:56: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 1t2stC-0004YO-Ja; Mon, 21 Oct 2024 13:56:06 +0000
Received: by outflank-mailman (input) for mailman id 823545;
 Mon, 21 Oct 2024 13:56: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2stB-0004YG-P7
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 13:56:05 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3575ffe2-8fb4-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 15:56:02 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a99f629a7aaso811008566b.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 06:56:02 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a913706e9sm206970266b.114.2024.10.21.06.56.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 06:56:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3575ffe2-8fb4-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729518962; x=1730123762; 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=xclxHqId2pCgnBHyQ0wK3pypOg4q79YkSoGaeK6nFEs=;
        b=R2fJRPDDHqlg8gK+uNqLlWTCuNoWlDOpznXYWS/ICrUFZWzxCHmjPKJ0J2s5W1FOCR
         OCzI6tipDVqLcr24steO3Zev9xyMyUktAxvyNKKvzf83DGZNq55iZZ70v0tvLyvCeNFS
         vtn+kwHMdsVnZse0EkamNArw+hZKvlU2eyiUo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729518962; x=1730123762;
        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=xclxHqId2pCgnBHyQ0wK3pypOg4q79YkSoGaeK6nFEs=;
        b=FYNkuS/YGChmd2tTSwNSLAAlnotg5sE2IhwhZx5cxrNrEqQ/wJlxrBDjts5ZGCEbnO
         SZlDBxfsQkSkrX9ZJr1HUbcm9TN21xRYB/dWJ1A2RP13iy8j5WtTbET4xgntvQpV0Sgl
         x4qrQYPBVWkW3yD4AIVWKOpEM7MDhZ4g4CXfPx6OJF3HUUspew7je9haJ5Ak7TchbNkZ
         P8MlZdc2SvmnlDXYWNbvFxHh1Z9rzpd+LQH9aKwUdIYNvmhAkK9o2oK4WFuBDAWqy1SN
         WcwtfpCWPLC5gdauU12qSnO409pyJX5Hg/p/nsNfTLI3AWbDvSAlyR+zmfnOKA0QgXLz
         +xZw==
X-Gm-Message-State: AOJu0Yx39QOYLKELnheB0mF/UbK3MvmsdYDgaFPoTM2ZaiS2/GjkYeAX
	UAjbaPmt5NbXuHe7qDRbreR1rT5V42ayyMIn4BT1EviKD18M+ZL/q9WmnRlKDMg=
X-Google-Smtp-Source: AGHT+IF8esEKLtxtvzWW2xQCYLFzFQhgGhoJk8AF9H5uxPyjueQHCXa4V+gDnj0KuuF7Yl6kf4tSyA==
X-Received: by 2002:a17:907:ea6:b0:a99:5f45:cb69 with SMTP id a640c23a62f3a-a9a6a3eb505mr1074952666b.4.1729518961909;
        Mon, 21 Oct 2024 06:56:01 -0700 (PDT)
Message-ID: <e32cf45f-bf0d-4ebe-b872-599d0c4ce979@citrix.com>
Date: Mon, 21 Oct 2024 14:55:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Fix PVH boot following the start of the MBI->BI
 conversion
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, "Daniel P . Smith" <dpsmith@apertussolutions.com>
References: <20241019182054.3842879-1-andrew.cooper3@citrix.com>
 <ZxZdD-LtTZo4qTzk@mail-itl>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZxZdD-LtTZo4qTzk@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 2:54 pm, Marek Marczykowski-Górecki wrote:
> On Sat, Oct 19, 2024 at 07:20:54PM +0100, Andrew Cooper wrote:
>> pvh_init() sets up the mbi pointer, but leaves mbi_p at 0.  This isn't
>> compatbile with multiboot_fill_boot_info() starting from the physical address,
>> in order to remove the use of the mbi pointer.
>>
>> Fixes: 038826b61e85 ("x86/boot: move x86 boot module counting into a new boot_info struct")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
>>
>> This is a testiment to how tangled the boot code really is.
> Did it causes crash in some boot configuration? If so, did some test
> tripped on this (from what I see, not a gitlab one)?

OSSTest found it.

E1t2D0w-0005rF-45@osstest.test-lab.xenproject.org

I'm writing a PVSHIM test for Gitlab CI right now, seeing as OSSTest is
going away imminently.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505384944

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:03:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:03:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823554.1237557 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2t0d-0000BM-Ai; Mon, 21 Oct 2024 14:03:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823554.1237557; Mon, 21 Oct 2024 14:03: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 1t2t0d-0000BF-8B; Mon, 21 Oct 2024 14:03:47 +0000
Received: by outflank-mailman (input) for mailman id 823554;
 Mon, 21 Oct 2024 14:03: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2t0c-0000B8-2w
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:03:46 +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 48b25903-8fb5-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 16:03:44 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c903f5bd0eso381952a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:03:44 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d65adsm208150266b.27.2024.10.21.07.03.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 07:03:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 48b25903-8fb5-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729519424; x=1730124224; 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=grfRuzxwxhhW3svckMI1JoDsdzWpAhGvOOfgPJhIm/s=;
        b=Szodz+5soQlP1c1aTAuX1FWXvXSXH4Bc4ksyAseSJ9ENRDMVv0hjvJVLkIklO1DOru
         MnR+e23BoylNk2rOr2gg65w4zDpoaPxq27ZhS++og4PnS8x+bBmO/ROxJyLQSW7YQa/H
         n0DbyEVay3lnYYI8c3fNrmORu6rV4dOIcLAqo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729519424; x=1730124224;
        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=grfRuzxwxhhW3svckMI1JoDsdzWpAhGvOOfgPJhIm/s=;
        b=ZDdzsbp4eHOpjYKDWHi64yT8/kIVk86tlKpGWVlhElh3GSrZ+jUPJ35KCUIOfGCNtZ
         HQKxhAed9PjzoonUcqR1N8COcWCIhifms1yCuFmD9YAiRToMLdcfInOQprkMQXWjiAeD
         Ujvr+2RtYCH6b5LteOiM7sanC535LHqrZikMfb46YwQZiVTiMIB0Bt7rHp1EZ9QZH0Wx
         YuXo0BwsITOYWQ8L5kLvzXEU6tIwtblz/5bG+vL753C3qCIVagzFD2VCHHmJ/TrCNpvI
         w5PllIkVcVUc/nl2k0SSnbew20z29vOkcJ5R4cyGmbq/ca0MUwgrDdeDSoIeh1UyYcsU
         l+bw==
X-Gm-Message-State: AOJu0Yyr+5odaq7XzfYw7+qMNogNq7QykmEaujhLkbPPHkI626YPeOxh
	pamp4d12++x1qWuBBHglD9ZmrbKGnp+taMwa2EawJGMU6gn3o+7ObAwHUdGOtvGpRBNkPFRx+EG
	j
X-Google-Smtp-Source: AGHT+IE3uQKRoEXWRTUwNIomZMUTsyW8qAMWPFMwB8t9rlmE/dY+wNh2v1dxSfesjowzvJwe4GkZ4w==
X-Received: by 2002:a17:907:3f23:b0:a9a:558:3929 with SMTP id a640c23a62f3a-a9a69c9881dmr1243053266b.48.1729519423554;
        Mon, 21 Oct 2024 07:03:43 -0700 (PDT)
Date: Mon, 21 Oct 2024 16:03:42 +0200
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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Message-ID: <ZxZfPpOz0v0xxlUu@macbook.local>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>

On Mon, Oct 21, 2024 at 12:38:13PM +0100, Andrew Cooper wrote:
> On 21/10/2024 12:10 pm, Andrew Cooper wrote:
> > On 18/10/2024 9:08 am, Roger Pau Monne wrote:
> >> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> >> repurposed to contain part of the offset into the remapping table.  Previous to
> >> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> >> table would match the vector.  Such logic was mandatory for end of interrupt to
> >> work, since the vector field (even when not containing a vector) is used by the
> >> IO-APIC to find for which pin the EOI must be performed.
> >>
> >> Introduce a table to store the EOI handlers when using interrupt remapping, so
> >> that the IO-APIC driver can translate pins into EOI handlers without having to
> >> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> >> unconditionally when interrupt remapping is enabled, even if strictly it would
> >> only be required for AMD-Vi.
> >>
> >> Reported-by: Willi Junga <xenproject@ymy.be>
> >> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> >> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> >> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > Yet more fallout from the multi-MSI work.  That really has been a giant
> > source of bugs.
> >
> >> ---
> >>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
> >>  1 file changed, 47 insertions(+)
> >>
> >> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> >> index e40d2f7dbd75..8856eb29d275 100644
> >> --- a/xen/arch/x86/io_apic.c
> >> +++ b/xen/arch/x86/io_apic.c
> >> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> >>  
> >>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> >>  
> >> +/*
> >> + * Store the EOI handle when using interrupt remapping.
> >> + *
> >> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> >> + * format repurposes the vector field to store the offset into the Interrupt
> >> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> >> + * longer matches the contents of the RTE vector field.  Add a translation
> >> + * table so that directed EOI uses the value in the RTE vector field when
> >> + * interrupt remapping is enabled.
> >> + *
> >> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> >> + * when using the remapped format, but use the translation table uniformly in
> >> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> >> + */
> >> +static unsigned int **apic_pin_eoi;
> > I think we can get away with this being uint8_t rather than unsigned
> > int, especially as we're allocating memory when not strictly necessary.
> >
> > The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
> >
> > Vector 0xff is strictly SPIV and not allocated for anything else, so can
> > be reused as a suitable sentinel here.
> 
> Actually, vectors 0 thru 0x0f are also strictly invalid, and could be
> used as sentinels.  That's probably better than trying to play integer
> promotion games between IRQ_VECTOR_UNASSIGNED and uint8_t.

Hm, do you mean to change IRQ_VECTOR_UNASSIGNED to be 0 instead of -1?
Those vectors are equally invalid to be used for external interrupts,
and hence should never be in an irq_desc.

Otherwise just using 0 for the EOI table sentinel will make the code a
bit more ugly IMO:

if ( apic_pin_eoi )
    vector = apic_pin_eoi[apic][pin] ?: IRQ_VECTOR_UNASSIGNED;

/* If vector is unknown, read it from the IO-APIC */
if ( vector == IRQ_VECTOR_UNASSIGNED )
{
    vector = __ioapic_read_entry(apic, pin, true).vector;
    if ( apic_pin_eoi )
        /* Update cached value so further EOI don't need to fetch it. */
        apic_pin_eoi[apic][pin] = vector;
}

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:06:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:06:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823560.1237567 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2t3G-0000s5-O8; Mon, 21 Oct 2024 14:06:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823560.1237567; Mon, 21 Oct 2024 14:06: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 1t2t3G-0000ry-L8; Mon, 21 Oct 2024 14:06:30 +0000
Received: by outflank-mailman (input) for mailman id 823560;
 Mon, 21 Oct 2024 14:06: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2t3F-0000rq-J9
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:06:29 +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 aa9e28b8-8fb5-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 16:06:28 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a0f198d38so629167066b.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:06:28 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571effsm209087766b.146.2024.10.21.07.06.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 07:06:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa9e28b8-8fb5-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729519588; x=1730124388; 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=9jsZXFlBMqxSTtYGLAh95eBqBynSmQcybucP6zaMjq0=;
        b=SA0N9IG22BQFVmHIn2twV90wkwMzjfkJxg5M1T1ZkN3RvuxIGCNCsASvnc1P2L11ua
         jQ/q6ov5KlvkfgHE2JPqk0cYgRykchaf9eH/BgdY8GsVAYGE+JaMEvqQGQYR0pVbsvbf
         8F69g9LnAAsuu91f93LqkDFddgaSzGAS4snMw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729519588; x=1730124388;
        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=9jsZXFlBMqxSTtYGLAh95eBqBynSmQcybucP6zaMjq0=;
        b=Xl06aULQH9v74H6EaqPhMAuf2Nqfv2oDEFYEIiV54HTCBgPgbH1YpvZvkka15nT+AN
         secOTuuiDOumzdqJR728gX4Bx/zhqJVsSTCsw7OJOoBjMBQbpUS0ISkJof0ZqQaGZVmQ
         L3V9welaEswf631R/5iF5gYXN+4OopY0+tsh7/UHxUEJK/ZFHwnK2n2iwuG5NRw/g3x6
         8vARPZDyDHqxl2IbGsIXTYhH5aUjHo68GwN37D8tlllQhOaBZOQ386LQjE9ATQDBStXz
         K7eRSUKkFbbcuP1lNRYZMMKmxhdI+ffAm/qOrQV7RjQzQdHMqvumEGfKwrlctgBEEBHX
         WgZQ==
X-Gm-Message-State: AOJu0YzEm3cGsPweQNOqw7iKHMUxAzzEE7b2xRKzetFrdLsp1R3v0qxD
	s2e7Vfimh7GFPlb0+IWQn9kTXVpPfdbVu3JZDEiKsrWoCkmMVgqE0zzmjrZqRg+YNBcu0xDKfFD
	B
X-Google-Smtp-Source: AGHT+IEG5Ay8edcw37ltFjcEYpuYUMityeyy7sOfVD47MJftVYzHKV+c9dsrxzQzTqBADrwP8+hhYw==
X-Received: by 2002:a17:906:dc94:b0:a88:b90a:ff30 with SMTP id a640c23a62f3a-a9a69c6a786mr1107554466b.50.1729519588157;
        Mon, 21 Oct 2024 07:06:28 -0700 (PDT)
Date: Mon, 21 Oct 2024 16:06:26 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Willi Junga <xenproject@ymy.be>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Message-ID: <ZxZf4nHFhhfyMF12@macbook.local>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>

On Mon, Oct 21, 2024 at 12:34:37PM +0100, David Woodhouse wrote:
> On Fri, 2024-10-18 at 10:08 +0200, Roger Pau Monne wrote:
> > When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> > repurposed to contain part of the offset into the remapping table.  Previous to
> > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> > table would match the vector.  Such logic was mandatory for end of interrupt to
> > work, since the vector field (even when not containing a vector) is used by the
> > IO-APIC to find for which pin the EOI must be performed.
> > 
> > Introduce a table to store the EOI handlers when using interrupt remapping, so
> > that the IO-APIC driver can translate pins into EOI handlers without having to
> > read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> > unconditionally when interrupt remapping is enabled, even if strictly it would
> > only be required for AMD-Vi.
> > 
> > Reported-by: Willi Junga <xenproject@ymy.be>
> > Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> > Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Hm, couldn't we just have used the pin#?

Yes, but that would require a much bigger change that what's currently
presented here, and for backport purposes I think it's better done
this way for fixing this specific bug.

Changing to use pin# as the IR offset is worthwhile, but IMO needs to
be done separated from the bugfix here.

> The AMD IOMMU has per-device IRTE, so you *know* you can just use IRTE
> indices 0-23 for the I/O APIC pins.

Aren't there IO-APICs with more than 24 pins?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:25:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:25:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823570.1237577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tLy-0008I1-7k; Mon, 21 Oct 2024 14:25:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823570.1237577; Mon, 21 Oct 2024 14:25: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 1t2tLy-0008Hu-5B; Mon, 21 Oct 2024 14:25:50 +0000
Received: by outflank-mailman (input) for mailman id 823570;
 Mon, 21 Oct 2024 14:25: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2tLx-0008Ho-7g
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:25:49 +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 5d18d305-8fb8-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 16:25:47 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5cb15b84544so2080708a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:25:47 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912f7c32sm211668766b.90.2024.10.21.07.25.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 07:25:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d18d305-8fb8-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729520746; x=1730125546; 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=KQiv2mi6w4LufEOH2Qle69NnXyOCRRsXOXRfDUrCXCs=;
        b=a0Qjm5Rko4BykZcP51tcTkzTNhRlCi1M/0hC79z94QKwCo5xCaDGU6+pWoPqz+pSrg
         tioaBvWQleS+FjdZdQad9sq0oszWEtdV+4FVPGnj+Kt7QJOcfDEFj9iepOqoYPpQQDvh
         bfsyUoW52mfGJqOzg1YYXdQbkyl7dBw8wtS+Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729520746; x=1730125546;
        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=KQiv2mi6w4LufEOH2Qle69NnXyOCRRsXOXRfDUrCXCs=;
        b=dboWvVfh36nXAFJIdbqXlGuFPiSoZZ3gSyLBCGr96Ue7y90j4EsVgLHUuBdlrY5/0e
         Bnr7/kwpEc+uP7zgZSFDbTcHd54W75026RqOwuyZQs/CyTXRYwsryIz75k/fMWR2bmQw
         267e2Nxg6dgYdmJNaz+EU8H9ZA2VdPHfWLTYzVe/kMxd+yVOC+menOFWQZ3hRX1+cJEh
         +x6drgEkB8rhqN1ChB6GZLZ5Uj9j8ZNLApL4PI0ZiNecXMDcF4+w/MFRcO/LvKbjeVE1
         DZOvGtC3cUnGafJXaZ8qfXh7y0yklHV4IGxC8KLp7+gymikiqkRS64iHEidxxRbi5xCb
         pL7g==
X-Forwarded-Encrypted: i=1; AJvYcCVSXS62bjPWYRcIEZqDn2A2t0zPYPmSAYnV5V5PwTPp4Zd0XHK6vH9pOJFNtEeNzwDRIYT8lQ3y1q4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzb6QhsB63k33+4D5UEdlicNhAhDXgzPSX17RT8Ru6TOTzyKngr
	PVnmeZKF4rDMTVUtp7eLl1h72j86F2QJ0gyI/62f50PBaoC6Vg/wpbH0CUoDel0=
X-Google-Smtp-Source: AGHT+IHWbqdLylwPt9I2wy63SX58gNceCwtaE5hkJA3tgnlkgIIcZRkEwXM3Os735xLI5CA8OvvP/A==
X-Received: by 2002:a17:906:f589:b0:a9a:4aa3:728b with SMTP id a640c23a62f3a-a9a69ca0575mr1126149466b.53.1729520746513;
        Mon, 21 Oct 2024 07:25:46 -0700 (PDT)
Date: Mon, 21 Oct 2024 16:25:45 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Willi Junga <xenproject@ymy.be>
Subject: Re: [EXTERNAL] [PATCH] x86/io-apic: fix directed EOI when using
 AMd-Vi interrupt remapping
Message-ID: <ZxZkaTzN4d4E-__H@macbook.local>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
 <f64650fb455c1d33d7ec3898eb5423a930624998.camel@infradead.org>
 <3a92bbe3-d58f-4a33-82db-ead6214ecc00@citrix.com>
 <9d988ea013f294356bda62253ad43cd24c2048e9.camel@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <9d988ea013f294356bda62253ad43cd24c2048e9.camel@infradead.org>

On Mon, Oct 21, 2024 at 01:02:31PM +0100, David Woodhouse wrote:
> On Mon, 2024-10-21 at 12:53 +0100, Andrew Cooper wrote:
> > 
> > > I don't quite follow how you need a sentinel value. How could you ever
> > > *not* know it, given that you have to write it to the RTE?
> > > 
> > > (And you should *also* just use the pin# like Linux does, as I said).
> > 
> > Because Xen is insane and, for non-x2APIC cases, sets the system up
> > normally and the turns the IOMMU on late.
> > 
> > This really does need deleting, and everything merging into the early path.
> 
> Don't you still have to mask the interrupts when enabling the IOMMU and
> then re-enable them by writing the new values to the RTE once remapping
> is turned on? So at any given moment, surely it's still the case that
> you know what was written to the RTE?
> 
> But OK, i don't really want to know... :)

It's possible that __io_apic_eoi() gets called before the EOI handler
array is allocated, as part of clear_IO_APIC_pin() that is done ahead
setup_IO_APIC() (so with apic_pin_eoi == NULL).

Whether Xen can get into __io_apic_eoi() with the EOI handler array
allocated but some entries not initialized, it's not clear to me.
However I prefer to act on the safe side and allow the fallback of
fetching the field from the RTE itself.  This is a swamp I don't want
to drain right now (as I'm busy with other stuff).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:35:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:35:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823579.1237609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tVc-0004KP-O3; Mon, 21 Oct 2024 14:35:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823579.1237609; Mon, 21 Oct 2024 14:35: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 1t2tVc-0004KG-Ik; Mon, 21 Oct 2024 14:35:48 +0000
Received: by outflank-mailman (input) for mailman id 823579;
 Mon, 21 Oct 2024 14:35: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2tVb-0003qm-Lj
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:35:47 +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 c228474e-8fb9-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 16:35:46 +0200 (CEST)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fb58980711so46566931fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:35:46 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b1d8sm1999394a12.72.2024.10.21.07.35.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 07:35:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c228474e-8fb9-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729521345; x=1730126145; 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=wx4DxoEGK87IzCRHyCD3oOn3pSGeacIwAEqwfo4eKqM=;
        b=Pk4ebvSvOIdMK5KNDulYR8mHvWz41vFAxe9t78E7bkqOhdLDFDLICTTsR6Reek3BCO
         begwut4Oi94hSAXy4lvivMSeWKGNvN3SnC+I8p39w8Fb8ZXommYzcLN0BciKY9SwJ7Ls
         TVQgkcYGnaan0sGRBcsUB9QJDWTYigR53htYM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729521345; x=1730126145;
        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=wx4DxoEGK87IzCRHyCD3oOn3pSGeacIwAEqwfo4eKqM=;
        b=LgBRfmAyuF2ufpe5kM8CbevUv/lfR3oea0uYO35BHSwnN9P46VdIbswG6kAinSalc1
         8NiH462espZoCZwFFe8InP5sajL8V0ky3pItp5eZJ5cCStC9bIZdmwm2zrnxzWZK9vuY
         zTiAphgBVSSDp++W0VSsxA5ABDzAnYUHKRY1lSJ5yU/5AlJAiPlmaY00i7+M487iEd7s
         AqU+C604Yr5dcJOW6YVRD4ZssAAHBElG1NN2GlEiaHfE872Rz1g+a32XTjqQoltrRYa5
         lVp0ikpRjuk+k8Bp3ckKt7YNTDWOEDt8x8J69+TBz0bPrLEGlv0A9yd2lPxff7jhDa6w
         wz0Q==
X-Gm-Message-State: AOJu0YziErSzl4930pMEGQOnRnOmZiAUBBQVNmqBJSNXcO1j3aSWjtSU
	CJ3rU64LFynfOWdUBfInLEFkk5JpCvrFwYpLkoiOhL/QQvxQsSoQECKy5rmlXkpXezSdrQ2Dluk
	i
X-Google-Smtp-Source: AGHT+IGse2dyV0E/absSWns3VWnI+Id9CbrtOfQF+0l232rU5Hw81dKAt8o1eL90madGy4MeeaNP/w==
X-Received: by 2002:a2e:4e02:0:b0:2fa:ded3:f6aa with SMTP id 38308e7fff4ca-2fb831df580mr42160181fa.20.1729521344684;
        Mon, 21 Oct 2024 07:35:44 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH 2/3] CI: Rework domU_config generation in qubes-x86-64.sh
Date: Mon, 21 Oct 2024 15:35:38 +0100
Message-Id: <20241021143539.3898995-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Right now, various blocks rewrite domU_config= as a whole, even though it is
largely the same.

 * dom0pvh-hvm does nothing but change the domain type to hvm
 * *-pci sets the domain type, clears vif=[], appends earlyprintk=xen to the
   cmdline, and adds some PCI config.

Refactor this to be domU_type (defaults to pvh), domU_vif (defaults to
xenbr0), and domU_extra_cfg (defaults to empty) and use these variables to
build domU_config= once.

Of note, the default domU_config= now sets cmdline=, and extra= is intended
for inclusion via domU_extra_cfg as necessary.

No practical change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Doug Goldstein <cardoe@cardoe.com>
---
 automation/scripts/qubes-x86-64.sh | 50 +++++++++++++-----------------
 1 file changed, 21 insertions(+), 29 deletions(-)

diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
index 306304e9219f..4b6311efffa8 100755
--- a/automation/scripts/qubes-x86-64.sh
+++ b/automation/scripts/qubes-x86-64.sh
@@ -15,16 +15,9 @@ test_variant=$1
 extra_xen_opts=
 wait_and_wakeup=
 timeout=120
-domU_config='
-type = "pvh"
-name = "domU"
-kernel = "/boot/vmlinuz"
-ramdisk = "/boot/initrd-domU"
-extra = "root=/dev/ram0 console=hvc0"
-memory = 512
-vif = [ "bridge=xenbr0", ]
-disk = [ ]
-'
+domU_type="pvh"
+domU_vif="'bridge=xenbr0',"
+domU_extra_cfg=
 
 case "${test_variant}" in
     ### test: smoke test & smoke test PVH & smoke test HVM
@@ -50,16 +43,7 @@ echo \"${passed}\"
         fi
 
         if [ "${test_variant}" = "dom0pvh-hvm" ]; then
-            domU_config='
-type = "hvm"
-name = "domU"
-kernel = "/boot/vmlinuz"
-ramdisk = "/boot/initrd-domU"
-extra = "root=/dev/ram0 console=hvc0"
-memory = 512
-vif = [ "bridge=xenbr0", ]
-disk = [ ]
-'
+            domU_type="hvm"
         fi
         ;;
 
@@ -101,15 +85,11 @@ echo \"${passed}\"
 
         passed="pci test passed"
 
-        domU_config='
-type = "'${test_variant#pci-}'"
-name = "domU"
-kernel = "/boot/vmlinuz"
-ramdisk = "/boot/initrd-domU"
-extra = "root=/dev/ram0 console=hvc0 earlyprintk=xen"
-memory = 512
-vif = [ ]
-disk = [ ]
+        domU_type="${test_variant#pci-}"
+        domU_vif=""
+
+        domU_extra_config='
+extra = "earlyprintk=xen"
 pci = [ "'$PCIDEV',seize=1" ]
 on_reboot = "destroy"
 '
@@ -148,6 +128,18 @@ done
         ;;
 esac
 
+domU_config="
+type = '${domU_type}'
+name = 'domU'
+kernel = '/boot/vmlinuz'
+ramdisk = '/boot/initrd-domU'
+cmdline = 'root=/dev/ram0 console=hvc0'
+memory = 512
+vif = [ ${domU_vif} ]
+disk = [ ]
+$domU_extra_config
+"
+
 # DomU
 mkdir -p rootfs
 cd rootfs
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:35:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:35:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823580.1237618 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tVd-0004Zp-Ub; Mon, 21 Oct 2024 14:35:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823580.1237618; Mon, 21 Oct 2024 14:35: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 1t2tVd-0004Zg-R1; Mon, 21 Oct 2024 14:35:49 +0000
Received: by outflank-mailman (input) for mailman id 823580;
 Mon, 21 Oct 2024 14: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2tVc-0003qm-Gz
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:35:48 +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 c2b49f58-8fb9-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 16:35:47 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a99ea294480so302582966b.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:35:47 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b1d8sm1999394a12.72.2024.10.21.07.35.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 07:35:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2b49f58-8fb9-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729521345; x=1730126145; 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=ffY1VjEznp41YMioLn3WaQGjvM4SloKJ+MSKOS4FI5c=;
        b=XQoey2hS5D7JsRE/DAJwkmqoZyqM7q7Ol/ryp8QBV0sFXXx2cXwQJNCQYHMFx+Cql0
         XjlUiy5Lu/G+E2RDZrnFu1yt2YCYOhau4Cl48eOLnu9LweWE+smtMeaKwfzPyrRqkEEi
         T41iRsyatKz84mNVYgLzs50BQCqqE8muALggs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729521345; x=1730126145;
        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=ffY1VjEznp41YMioLn3WaQGjvM4SloKJ+MSKOS4FI5c=;
        b=JiyYtZWrctu5PpUpUvCR6A/katfIxk8P3RidYfXogrhqSJgWQkREYD19xadfQANcoj
         aiBCNgg84kIeTLbwlM1pssKI0URny1kwhrupZQK6eEzla0sZtE9R91uJZ24BjO/6MA+/
         k8wROZQAAmaN6G7ee44JmtpD3huZDRqhrX7mHqbbjxSx9s2mvLJN+cD7OTfNIDmaD12E
         8E/GVn7IOZ/jm8lm5WMYWd7J2wqB62IOnAG+kzAUuFTl2qRikNIUijFoA7pQcQhW1zUN
         LObgEWc8+mjWKc1Ge+iul+II/2qe0y0nPCYlJlxlKcKhYbdU4R4CapjBW4ujCoI/8y2x
         stYw==
X-Gm-Message-State: AOJu0YzX0IH2QUqxk4MtSfVS2WDWiWcz3h/XcAQ5iiknBVURud3xVhY+
	dWGA9RR3UPtyj2xnLSmJdCTQ4fYNBwS6S1H3rsnRqBWc3tfQQ22aNCSk2Otr9klWqE8w/g7yAVL
	V
X-Google-Smtp-Source: AGHT+IF1gehkVz+JmHowBFH/HTU2wVxXLlX6vyPnlnAgzAPNv8+U9MrIWNbFyrjfCj5LBrOMmDqQEA==
X-Received: by 2002:a05:6402:1d52:b0:5cb:65f4:7d91 with SMTP id 4fb4d7f45d1cf-5cb65f47da5mr6763403a12.29.1729521345457;
        Mon, 21 Oct 2024 07:35:45 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH 3/3] CI: Add {adl,zen3p}-pvshim-* tests
Date: Mon, 21 Oct 2024 15:35:39 +0100
Message-Id: <20241021143539.3898995-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

GitlabCI has no testing of Xen's PVH entrypoint.  Fix this.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Doug Goldstein <cardoe@cardoe.com>

OSSTest (which is disappearing imminently) found a pvshim bug in the
hyperlaunch series, and I found a second shortly after while trying to take
more of the series.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505518838
---
 automation/gitlab-ci/test.yaml     | 16 ++++++++++++++++
 automation/scripts/qubes-x86-64.sh | 10 ++++++++--
 2 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index b27c2be17487..e76a37bef32d 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -240,6 +240,14 @@ adl-pci-hvm-x86-64-gcc-debug:
     - *x86-64-test-needs
     - alpine-3.18-gcc-debug
 
+adl-pvshim-x86-64-gcc-debug:
+  extends: .adl-x86-64
+  script:
+    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
+  needs:
+    - *x86-64-test-needs
+    - alpine-3.18-gcc-debug
+
 zen3p-smoke-x86-64-gcc-debug:
   extends: .zen3p-x86-64
   script:
@@ -272,6 +280,14 @@ zen3p-pci-hvm-x86-64-gcc-debug:
     - *x86-64-test-needs
     - alpine-3.18-gcc-debug
 
+zen3p-pvshim-x86-64-gcc-debug:
+  extends: .zen3p-x86-64
+  script:
+    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
+  needs:
+    - *x86-64-test-needs
+    - alpine-3.18-gcc-debug
+
 qemu-smoke-dom0-arm64-gcc:
   extends: .qemu-arm64
   script:
diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
index 4b6311efffa8..ace494b938d8 100755
--- a/automation/scripts/qubes-x86-64.sh
+++ b/automation/scripts/qubes-x86-64.sh
@@ -8,6 +8,7 @@ set -ex
 #  - dom0pvh-hvm    PVH dom0, HVM domU
 #  - pci-hvm        PV dom0,  HVM domU + PCI Passthrough
 #  - pci-pv         PV dom0,  PV domU + PCI Passthrough
+#  - pvshim         PV dom0,  PVSHIM domU
 #  - s3             PV dom0,  S3 suspend/resume
 test_variant=$1
 
@@ -20,8 +21,8 @@ domU_vif="'bridge=xenbr0',"
 domU_extra_cfg=
 
 case "${test_variant}" in
-    ### test: smoke test & smoke test PVH & smoke test HVM
-    ""|"dom0pvh"|"dom0pvh-hvm")
+    ### test: smoke test & smoke test PVH & smoke test HVM & smoke test PVSHIM
+    ""|"dom0pvh"|"dom0pvh-hvm"|"pvshim")
         passed="ping test passed"
         domU_check="
 ifconfig eth0 192.168.0.2
@@ -44,6 +45,11 @@ echo \"${passed}\"
 
         if [ "${test_variant}" = "dom0pvh-hvm" ]; then
             domU_type="hvm"
+        elif [ "${test_variant}" = "pvshim" ]; then
+            domU_type="pv"
+            domU_extra_cfg='
+pvshim = 1
+'
         fi
         ;;
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:35:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:35:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823577.1237588 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tVa-0003qu-3t; Mon, 21 Oct 2024 14:35:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823577.1237588; Mon, 21 Oct 2024 14:35: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 1t2tVa-0003qn-16; Mon, 21 Oct 2024 14:35:46 +0000
Received: by outflank-mailman (input) for mailman id 823577;
 Mon, 21 Oct 2024 14:35: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2tVY-0003qg-JN
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:35:44 +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 c0ac9314-8fb9-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 16:35:43 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c40aea5c40so8241610a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:35:43 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b1d8sm1999394a12.72.2024.10.21.07.35.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 07:35:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0ac9314-8fb9-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729521342; x=1730126142; 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=tXb6zgsDmrfdX6HGNDxDlfgEnBGx6ObbDfJiK//3eo0=;
        b=Wcynk9cy4cb8LgV9te4sbi9h32O54rqWK1FN5x+VOT6l+nXa86B8oosC4bva+x35MJ
         7GbMu5zvxUQDPGYqn7d3Dl3FB9yYAchO0Z8kHJ0qYBCOOIufqhxfMUYDSCQem6LDFKeM
         6Rc4Nw8Bxz2Koh3UVujkxSdlkg5IamxuB2vXA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729521342; x=1730126142;
        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=tXb6zgsDmrfdX6HGNDxDlfgEnBGx6ObbDfJiK//3eo0=;
        b=gEY6qdDbepzZJGNrp6DMLDRELkwL1aqaRmchTrzkB8ii2CaVGhZFNXIbU/u9VHI4ct
         xHse7jJs24zPn/3VpaHgysTq9j1lIVrm/fo0gR6X5Yihn/l8W1WbHXcOmCdZVIMCYjnw
         y7o6ewqJhCCLKfh9J82U+ne7UPz+TeKtKdFkZxHyaq3hbSgNFDKfabm8wbjqgoSVt8Bx
         FVxTBEMD8ZmCbG1+FEVCDKmp929DkoYjIFjtnvEXSrKHDn/xtknO6XEs/Z96WDAHYyT4
         2+4lgjdS6keulobrwtUJlDp8MaOp1UPc4zqmPb6LayuuVz06fIbDvN2JlIOwarnQgh/d
         a5zA==
X-Gm-Message-State: AOJu0YzFp6WSSsO5oCK7IG6rKSxg4zC3NATofDsWuEB8IdX1h5dLgjps
	yo5u4s1KgQXcLLdZ9PwXfmzMqQCobzZYPiqIp594b7kJV9XsJ3O/MakEYSgXnYjRQn0+gTfGFjb
	Z
X-Google-Smtp-Source: AGHT+IG6NFWWQCzKIXyOzA/1+R5cV9BKX+NNgjwPB0wSkUA7nV+cimJJ08HbcwJPuzxrNYr7NHZb8A==
X-Received: by 2002:a05:6402:26cb:b0:5c5:c444:4e3a with SMTP id 4fb4d7f45d1cf-5ca0afd391cmr10441443a12.0.1729521342286;
        Mon, 21 Oct 2024 07:35:42 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH 0/3] Add {adl,zen3p}-pvshim-* tests
Date: Mon, 21 Oct 2024 15:35:36 +0100
Message-Id: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The main patch is patch 3.  Patches 1 and 2 are cleanup to qubes-x86-64.sh.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505518838
https://cirrus-ci.com/build/4673310460477440

Andrew Cooper (3):
  CI: Minor cleanup to qubes-x86-64.sh
  CI: Rework domU_config generation in qubes-x86-64.sh
  CI: Add {adl,zen3p}-pvshim-* tests

 automation/gitlab-ci/test.yaml     |  16 ++++
 automation/scripts/qubes-x86-64.sh | 138 ++++++++++++++++-------------
 2 files changed, 92 insertions(+), 62 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:35:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:35:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823578.1237598 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tVb-00045M-Fm; Mon, 21 Oct 2024 14:35:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823578.1237598; Mon, 21 Oct 2024 14:35: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 1t2tVb-00045F-BA; Mon, 21 Oct 2024 14:35:47 +0000
Received: by outflank-mailman (input) for mailman id 823578;
 Mon, 21 Oct 2024 14:35: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2tVa-0003qm-Si
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:35:46 +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 c0fb9749-8fb9-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 16:35:44 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a99fa009adcso251164566b.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:35:44 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b1d8sm1999394a12.72.2024.10.21.07.35.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 07:35:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0fb9749-8fb9-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729521343; x=1730126143; 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=PPCHulRaSrD9EnHHmG1DTpUULk+3NsrkYOUB7K+zHIQ=;
        b=nnsgEdalGKTRAagQOv+viymd557Ppeaqi5QrtObVJoOSasuKqFqOlwAod7DFROc2uR
         lnaWXXEPab/sTgy0FdfUPW+G8vRgcBRCPzqRN7KLvd0ONZEgK0JIgl6Gz2mkvnmXasv7
         gHfuCgSVO4e1EwG4NzMNwkllInuOO+eKbujXQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729521343; x=1730126143;
        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=PPCHulRaSrD9EnHHmG1DTpUULk+3NsrkYOUB7K+zHIQ=;
        b=VrnqZjiB8YahuPatTHWaB8z/pm29rFMCShhiXpnM50H0judhdLZZVMt55Ntrt3YMeq
         WKQH7o38mNFYNvlUYAdls0tM0sQEG0MiG6fEdxXE+1xb4fqzC1GXfmYb0ImeOIpkgkkd
         qRcTZDdLx87mchPG5yof4JrZKCweeUQry/eMU3giTPL4fAmT+2INGVEbLLZXpA2G67Om
         JpPK2UEuziWtPjH48eyo7i5Kbr1P2yZiFXHD0TMbadjVsZk4/DAddd7FGYgi9MwRQWFy
         JKoaNvQWHu/D9ehj+XUnRdl/dBZSXfWWlV19W6Xo9qeCVEj0zyblzRuOqgiW7zw+uC67
         VpDA==
X-Gm-Message-State: AOJu0YyrIpnpVK7a6fnAPgvYiOVOKVLBjBpUKn91rgynudIwGVNw0BsO
	1VR1/dWY4BE8wd2DaM8PqQxSXojsSkrwHOkr0dhMxV7smd8atG5JlAcUvub/dDMua9XB4AU69k4
	g
X-Google-Smtp-Source: AGHT+IF/YKBje1/sjQyLcv3cwySNfu272LXfSKucSlUmr6D4l1TBu+bJ4V3sTFepZXPB8g7FfCCWKQ==
X-Received: by 2002:a05:6402:5412:b0:5cb:6841:ede5 with SMTP id 4fb4d7f45d1cf-5cb6841ee4emr7993078a12.28.1729521343064;
        Mon, 21 Oct 2024 07:35:43 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH 1/3] CI: Minor cleanup to qubes-x86-64.sh
Date: Mon, 21 Oct 2024 15:35:37 +0100
Message-Id: <20241021143539.3898995-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

 * List all the test_variants and summerise what's going on
 * Use case rather than an if/else chain for $test_variant
 * Fix indentation inside the case block

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Doug Goldstein <cardoe@cardoe.com>
---
 automation/scripts/qubes-x86-64.sh | 84 ++++++++++++++++++------------
 1 file changed, 50 insertions(+), 34 deletions(-)

diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
index bfa60c912a64..306304e9219f 100755
--- a/automation/scripts/qubes-x86-64.sh
+++ b/automation/scripts/qubes-x86-64.sh
@@ -2,6 +2,13 @@
 
 set -ex
 
+# One of:
+#  - ""             PV dom0,  PVH domU
+#  - dom0pvh        PVH dom0, PVH domU
+#  - dom0pvh-hvm    PVH dom0, HVM domU
+#  - pci-hvm        PV dom0,  HVM domU + PCI Passthrough
+#  - pci-pv         PV dom0,  PV domU + PCI Passthrough
+#  - s3             PV dom0,  S3 suspend/resume
 test_variant=$1
 
 ### defaults
@@ -19,17 +26,18 @@ vif = [ "bridge=xenbr0", ]
 disk = [ ]
 '
 
-### test: smoke test & smoke test PVH & smoke test HVM
-if [ -z "${test_variant}" ] || [ "${test_variant}" = "dom0pvh" ] || [ "${test_variant}" = "dom0pvh-hvm" ]; then
-    passed="ping test passed"
-    domU_check="
+case "${test_variant}" in
+    ### test: smoke test & smoke test PVH & smoke test HVM
+    ""|"dom0pvh"|"dom0pvh-hvm")
+        passed="ping test passed"
+        domU_check="
 ifconfig eth0 192.168.0.2
 until ping -c 10 192.168.0.1; do
     sleep 1
 done
 echo \"${passed}\"
 "
-    dom0_check="
+        dom0_check="
 set +x
 until grep -q \"${passed}\" /var/log/xen/console/guest-domU.log; do
     sleep 1
@@ -37,12 +45,12 @@ done
 set -x
 echo \"${passed}\"
 "
-if [ "${test_variant}" = "dom0pvh" ] || [ "${test_variant}" = "dom0pvh-hvm" ]; then
-    extra_xen_opts="dom0=pvh"
-fi
+        if [ "${test_variant}" = "dom0pvh" ] || [ "${test_variant}" = "dom0pvh-hvm" ]; then
+            extra_xen_opts="dom0=pvh"
+        fi
 
-if [ "${test_variant}" = "dom0pvh-hvm" ]; then
-    domU_config='
+        if [ "${test_variant}" = "dom0pvh-hvm" ]; then
+            domU_config='
 type = "hvm"
 name = "domU"
 kernel = "/boot/vmlinuz"
@@ -52,17 +60,18 @@ memory = 512
 vif = [ "bridge=xenbr0", ]
 disk = [ ]
 '
-fi
-
-### test: S3
-elif [ "${test_variant}" = "s3" ]; then
-    passed="suspend test passed"
-    wait_and_wakeup="started, suspending"
-    domU_check="
+        fi
+        ;;
+
+    ### test: S3
+    "s3")
+        passed="suspend test passed"
+        wait_and_wakeup="started, suspending"
+        domU_check="
 ifconfig eth0 192.168.0.2
 echo domU started
 "
-    dom0_check="
+        dom0_check="
 until grep 'domU started' /var/log/xen/console/guest-domU.log; do
     sleep 1
 done
@@ -79,19 +88,20 @@ xl dmesg | grep 'Finishing wakeup from ACPI S3 state' || exit 1
 ping -c 10 192.168.0.2 || exit 1
 echo \"${passed}\"
 "
+        ;;
 
-### test: pci-pv, pci-hvm
-elif [ "${test_variant}" = "pci-pv" ] || [ "${test_variant}" = "pci-hvm" ]; then
+    ### test: pci-pv, pci-hvm
+    "pci-pv"|"pci-hvm")
 
-    if [ -z "$PCIDEV" ]; then
-        echo "Please set 'PCIDEV' variable with BDF of test network adapter" >&2
-        echo "Optionally set also 'PCIDEV_INTR' to 'MSI' or 'MSI-X'" >&2
-        exit 1
-    fi
+        if [ -z "$PCIDEV" ]; then
+            echo "Please set 'PCIDEV' variable with BDF of test network adapter" >&2
+            echo "Optionally set also 'PCIDEV_INTR' to 'MSI' or 'MSI-X'" >&2
+            exit 1
+        fi
 
-    passed="pci test passed"
+        passed="pci test passed"
 
-    domU_config='
+        domU_config='
 type = "'${test_variant#pci-}'"
 name = "domU"
 kernel = "/boot/vmlinuz"
@@ -104,7 +114,7 @@ pci = [ "'$PCIDEV',seize=1" ]
 on_reboot = "destroy"
 '
 
-    domU_check="
+        domU_check="
 set -x -e
 interface=eth0
 ip link set \"\$interface\" up
@@ -115,22 +125,28 @@ echo domU started
 pcidevice=\$(basename \$(readlink /sys/class/net/\$interface/device))
 lspci -vs \$pcidevice
 "
-    if [ -n "$PCIDEV_INTR" ]; then
-        domU_check="$domU_check
+        if [ -n "$PCIDEV_INTR" ]; then
+            domU_check="$domU_check
 lspci -vs \$pcidevice | fgrep '$PCIDEV_INTR: Enable+'
 "
-    fi
-    domU_check="$domU_check
+        fi
+        domU_check="$domU_check
 echo \"${passed}\"
 "
 
-    dom0_check="
+        dom0_check="
 tail -F /var/log/xen/qemu-dm-domU.log &
 until grep -q \"^domU Welcome to Alpine Linux\" /var/log/xen/console/guest-domU.log; do
     sleep 1
 done
 "
-fi
+        ;;
+
+    *)
+        echo "Unrecognised test_variant '${test_variant}'" >&2
+        exit 1
+        ;;
+esac
 
 # DomU
 mkdir -p rootfs
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:42:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:42:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823607.1237627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tbc-00087z-GI; Mon, 21 Oct 2024 14:42:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823607.1237627; Mon, 21 Oct 2024 14:42: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 1t2tbc-00087s-Cg; Mon, 21 Oct 2024 14:42:00 +0000
Received: by outflank-mailman (input) for mailman id 823607;
 Mon, 21 Oct 2024 14:41: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2tbb-00087k-Fs
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:41:59 +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 9f52ea66-8fba-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 16:41:57 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fb518014b9so38792251fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:41:57 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b535sm1976858a12.68.2024.10.21.07.41.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 07:41:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9f52ea66-8fba-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729521716; x=1730126516; 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=mDqF20tp3+oy1a1lJpVgUW6qTWwEfxQHY1oxgdv7794=;
        b=fVqUMnnWKGvYJLc8AdgCmuz8kE70flowOC1Cq8F6meIfqLqwlu+ejX3eNpkGkUJjqC
         QHkupquPdLno+Sw8eshYZK0vD8MKlWPi2NRGONAi/BEAwLcL02nDT6bXkewIKWPgUddj
         b+5t3JURnb7KoOdtkS8XTTCMZnC66CMiaw8fg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729521716; x=1730126516;
        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=mDqF20tp3+oy1a1lJpVgUW6qTWwEfxQHY1oxgdv7794=;
        b=gJz45TW5cYphW/YKv72KYigrIvrJGJGXUWlkqNZnqym2cIwsUy2u39/tZXn8i/VbOw
         /mDo6IMezhHxc9u1/jNF7MtRFTTbU2XtK/+a6tBbe9Eeq/H2dcUNC7lm4vEoaZB2gOkf
         m/L1ESvMv5vYSy8586ClelWCtPfpKsJsmCMg8q4JEzNzcXvIAr558E2rOmpxCZ8//IXh
         1FTrOH0dgRm6DHRIelHuqTSWzVIP9F14ckSx+C7Y8ZEr3iUJFV3+IZcOzDmfgB56YCq8
         TtajTPdkdyOcpVsr6hOXO0S1/FBz5tqCMK9wiKzIvG66jq7UNc/nJdsnuiEni37MBGE3
         285w==
X-Gm-Message-State: AOJu0YzK+gpAqUyfRwsiZZJcTKfG/I023rKKXM6WvYZs38uYCUYumbwl
	AWgircj0lj6SIwN4IeTGn2Y/Os9z7uW6XaATvOGx55wQDgEa9bCfsg+m3Rh9mP44X7zoVSZaTJU
	F
X-Google-Smtp-Source: AGHT+IHDr4PmfBehgIc0d9EbWj6rgnqsfYur1t+XMefmUWHdxB9Yf3mRz8mR5h2vslaQLmsi95iNOg==
X-Received: by 2002:a05:651c:b07:b0:2fb:4b1f:973f with SMTP id 38308e7fff4ca-2fb82eb7027mr54475221fa.7.1729521715866;
        Mon, 21 Oct 2024 07:41:55 -0700 (PDT)
Message-ID: <78116f34-2448-4b08-9eb3-50d70a18074e@citrix.com>
Date: Mon, 21 Oct 2024 15:41:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] CI: Add {adl,zen3p}-pvshim-* tests
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
 <20241021143539.3898995-4-andrew.cooper3@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021143539.3898995-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 3:35 pm, Andrew Cooper wrote:
> GitlabCI has no testing of Xen's PVH entrypoint.  Fix this.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Michal Orzel <michal.orzel@amd.com>
> CC: Doug Goldstein <cardoe@cardoe.com>
>
> OSSTest (which is disappearing imminently) found a pvshim bug in the
> hyperlaunch series, and I found a second shortly after while trying to take
> more of the series.
>
> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505518838
> ---
>  automation/gitlab-ci/test.yaml     | 16 ++++++++++++++++
>  automation/scripts/qubes-x86-64.sh | 10 ++++++++--
>  2 files changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index b27c2be17487..e76a37bef32d 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -240,6 +240,14 @@ adl-pci-hvm-x86-64-gcc-debug:
>      - *x86-64-test-needs
>      - alpine-3.18-gcc-debug
>  
> +adl-pvshim-x86-64-gcc-debug:
> +  extends: .adl-x86-64
> +  script:
> +    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
> +  needs:
> +    - *x86-64-test-needs
> +    - alpine-3.18-gcc-debug
> +
>  zen3p-smoke-x86-64-gcc-debug:
>    extends: .zen3p-x86-64
>    script:
> @@ -272,6 +280,14 @@ zen3p-pci-hvm-x86-64-gcc-debug:
>      - *x86-64-test-needs
>      - alpine-3.18-gcc-debug
>  
> +zen3p-pvshim-x86-64-gcc-debug:
> +  extends: .zen3p-x86-64
> +  script:
> +    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
> +  needs:
> +    - *x86-64-test-needs
> +    - alpine-3.18-gcc-debug
> +
>  qemu-smoke-dom0-arm64-gcc:
>    extends: .qemu-arm64
>    script:
> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
> index 4b6311efffa8..ace494b938d8 100755
> --- a/automation/scripts/qubes-x86-64.sh
> +++ b/automation/scripts/qubes-x86-64.sh
> @@ -8,6 +8,7 @@ set -ex
>  #  - dom0pvh-hvm    PVH dom0, HVM domU
>  #  - pci-hvm        PV dom0,  HVM domU + PCI Passthrough
>  #  - pci-pv         PV dom0,  PV domU + PCI Passthrough
> +#  - pvshim         PV dom0,  PVSHIM domU
>  #  - s3             PV dom0,  S3 suspend/resume
>  test_variant=$1
>  
> @@ -20,8 +21,8 @@ domU_vif="'bridge=xenbr0',"
>  domU_extra_cfg=
>  
>  case "${test_variant}" in
> -    ### test: smoke test & smoke test PVH & smoke test HVM
> -    ""|"dom0pvh"|"dom0pvh-hvm")
> +    ### test: smoke test & smoke test PVH & smoke test HVM & smoke test PVSHIM
> +    ""|"dom0pvh"|"dom0pvh-hvm"|"pvshim")
>          passed="ping test passed"
>          domU_check="
>  ifconfig eth0 192.168.0.2
> @@ -44,6 +45,11 @@ echo \"${passed}\"
>  
>          if [ "${test_variant}" = "dom0pvh-hvm" ]; then
>              domU_type="hvm"
> +        elif [ "${test_variant}" = "pvshim" ]; then
> +            domU_type="pv"
> +            domU_extra_cfg='
> +pvshim = 1
> +'
>          fi
>          ;;
>  

Bah - serves me right for some last minute refactoring.  The domain type
should be pvh for pvshim=1 to work.

New pipeline:
https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505540810

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:51:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:51:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823622.1237638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tkn-0005hC-Ev; Mon, 21 Oct 2024 14:51:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823622.1237638; Mon, 21 Oct 2024 14:51: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 1t2tkn-0005h5-CM; Mon, 21 Oct 2024 14:51:29 +0000
Received: by outflank-mailman (input) for mailman id 823622;
 Mon, 21 Oct 2024 14:51: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2tkm-0005gz-46
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:51:28 +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 f2eae451-8fbb-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 16:51:27 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c903f5bd0eso470946a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 07:51:27 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b7d5sm2031801a12.75.2024.10.21.07.51.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 07:51:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f2eae451-8fbb-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729522286; x=1730127086; 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=b9qW0fa8xJC8nQtELc0+zoCH5xJqyCANSk0j8fzTp3w=;
        b=mMA+Q4h7RBr8i2lbW7Yj88uhgq+m8EIkqLxaQY8Dwl0sRCe/if215oKZlq1eFJmbou
         gufXd3cqGCtBHvGA8wvLvRT6Ri2oKSKAw8smMrpo2SWxve93ZslmIvYK0IhoXA6jcwhi
         KdVTeKhONzllIcdPxnr6hWDq770iSmXvGUb2A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729522286; x=1730127086;
        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=b9qW0fa8xJC8nQtELc0+zoCH5xJqyCANSk0j8fzTp3w=;
        b=D9M9AoKzebpbpPVyfiqk2EmlBCZsbVMstjUw+bH6CIliQCymZykpqwLE6dkTrH8Zp8
         eHrxTUyosDEizycUsmeN0lKEsxG0Ff7Djr7ZYYB0gW/NW0kywz4YTLso/3rFUBji9sAt
         GnMHddd0PcJpiK2eKd1UsbbxYAKSmu2BEQfknp77E4AnbVMEYLPIYwcuC41fIKjac68D
         5BkDxVmWRoW2dar7no3q2t3K5jvWEDvPi+5nIdd44b4x93IzBIdRviamNN96lZNqZuJJ
         3rpfRTR5hwyAX9ZPId/sBMQASxSV+v9eAtDo6M2Akz7mUeT25sM7RVCUgpu/TZ6qtJ1/
         yLdg==
X-Gm-Message-State: AOJu0YwT5Td6XpuHsClo8qHkeU+Kb6OMRaUvKRWJK9H7zVDO0WBSWv/i
	YSTpFRDCUuEFyJe7rzh+TdOB/d8WayBYhtONAnh06789JDtG8GMkkNsKiGBQehc=
X-Google-Smtp-Source: AGHT+IGjh11KyGqEExxH5H8zKnXh3vJR190BND/LkoF9MkpkfmxbjcGVinuP/K3YUGPWNV2M+Swiig==
X-Received: by 2002:a05:6402:1e95:b0:5cb:674f:b0a2 with SMTP id 4fb4d7f45d1cf-5cb674fb0admr5334931a12.36.1729522286428;
        Mon, 21 Oct 2024 07:51:26 -0700 (PDT)
Message-ID: <5970c852-8800-414a-83f9-66392bdbe016@citrix.com>
Date: Mon, 21 Oct 2024 15:51:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 David Woodhouse <dwmw2@infradead.org>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 Willi Junga <xenproject@ymy.be>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>
 <ZxZf4nHFhhfyMF12@macbook.local>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZxZf4nHFhhfyMF12@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 3:06 pm, Roger Pau Monné wrote:
> On Mon, Oct 21, 2024 at 12:34:37PM +0100, David Woodhouse wrote:
>> On Fri, 2024-10-18 at 10:08 +0200, Roger Pau Monne wrote:
>>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>>> repurposed to contain part of the offset into the remapping table.  Previous to
>>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>>> table would match the vector.  Such logic was mandatory for end of interrupt to
>>> work, since the vector field (even when not containing a vector) is used by the
>>> IO-APIC to find for which pin the EOI must be performed.
>>>
>>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>>> that the IO-APIC driver can translate pins into EOI handlers without having to
>>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>>> unconditionally when interrupt remapping is enabled, even if strictly it would
>>> only be required for AMD-Vi.
>>>
>>> Reported-by: Willi Junga <xenproject@ymy.be>
>>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>> Hm, couldn't we just have used the pin#?
> Yes, but that would require a much bigger change that what's currently
> presented here, and for backport purposes I think it's better done
> this way for fixing this specific bug.
>
> Changing to use pin# as the IR offset is worthwhile, but IMO needs to
> be done separated from the bugfix here.
>
>> The AMD IOMMU has per-device IRTE, so you *know* you can just use IRTE
>> indices 0-23 for the I/O APIC pins.
> Aren't there IO-APICs with more than 24 pins?

Recent Intel SoCs have a single IO-APIC with 120 pins.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 14:54:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 14:54:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823628.1237649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2tnr-0006LF-U0; Mon, 21 Oct 2024 14:54:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823628.1237649; Mon, 21 Oct 2024 14: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 1t2tnr-0006L8-P7; Mon, 21 Oct 2024 14:54:39 +0000
Received: by outflank-mailman (input) for mailman id 823628;
 Mon, 21 Oct 2024 14:54: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=TLRE=RR=casper.srs.infradead.org=BATV+0b6dd01573de8e3a2a7a+7729+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1t2tnp-0006L2-Tr
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 14:54:38 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 641e6351-8fbc-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 16:54:37 +0200 (CEST)
Received: from [2001:8b0:10b:5:9789:3d79:3bbb:1070]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.98 #2 (Red Hat Linux))
 id 1t2tnn-0000000GQth-1zey; Mon, 21 Oct 2024 14:54: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: 641e6351-8fbc-11ef-a0be-8be0dac302b0
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=VkiLuYv7jnyGe/C+drcnyz34lmngKs0rQCoGJXW+ReM=; b=YUhO/4MvW9wyB+LCpS124IqwZq
	4HjgZQL8HUcqefSEQDKU25Z/C2+Hqz3VcnhQRjCJh2M5QBUw9YJQwYSpAWn9hQprCGuNBPBvIIcsX
	NS7TLPgtrIqwOYSNncX58HcmVFNTncFI88nZw/5mLK5Pux6LraD40x3qUCt38hNDL3tWGeUYrDeXZ
	Mr4vbyALttHylRNMe9G5jojRr3QfmDX5C6mBi+zHd8/upW13QFG4DlHesCofftN7kuiwEOvHmRPAF
	ckCQMqt6hcYb7qLNO4Z4d335XPXLrap1069CtmO062XBYwiSlBbu5YXT3cOSabg3xA4PHIuRjw/3Q
	rFiwDQpg==;
Message-ID: <a43a44b86654e414907e44f4899761fe030b640a.camel@infradead.org>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
From: David Woodhouse <dwmw2@infradead.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>, Roger Pau
	=?ISO-8859-1?Q?Monn=E9?=
	 <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, Willi
	Junga <xenproject@ymy.be>
Date: Mon, 21 Oct 2024 15:54:35 +0100
In-Reply-To: <5970c852-8800-414a-83f9-66392bdbe016@citrix.com>
References: <20241018080813.45759-1-roger.pau@citrix.com>
	 <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>
	 <ZxZf4nHFhhfyMF12@macbook.local>
	 <5970c852-8800-414a-83f9-66392bdbe016@citrix.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-stca2nf+7IJxy5VDxRNw"
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


--=-stca2nf+7IJxy5VDxRNw
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, 2024-10-21 at 15:51 +0100, Andrew Cooper wrote:
> On 21/10/2024 3:06 pm, Roger Pau Monn=C3=A9 wrote:
> > On Mon, Oct 21, 2024 at 12:34:37PM +0100, David Woodhouse wrote:
> > > On Fri, 2024-10-18 at 10:08 +0200, Roger Pau Monne wrote:
> > > > When using AMD-VI interrupt remapping the vector field in the IO-AP=
IC RTE is
> > > > repurposed to contain part of the offset into the remapping table.=
=C2=A0 Previous to
> > > > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt re=
mapping
> > > > table would match the vector.=C2=A0 Such logic was mandatory for en=
d of interrupt to
> > > > work, since the vector field (even when not containing a vector) is=
 used by the
> > > > IO-APIC to find for which pin the EOI must be performed.
> > > >=20
> > > > Introduce a table to store the EOI handlers when using interrupt re=
mapping, so
> > > > that the IO-APIC driver can translate pins into EOI handlers withou=
t having to
> > > > read the IO-APIC RTE entry.=C2=A0 Note that to simplify the logic s=
uch table is used
> > > > unconditionally when interrupt remapping is enabled, even if strict=
ly it would
> > > > only be required for AMD-Vi.
> > > >=20
> > > > Reported-by: Willi Junga <xenproject@ymy.be>
> > > > Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> > > > Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of u=
sing a static mapping')
> > > > Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> > > Hm, couldn't we just have used the pin#?
> > Yes, but that would require a much bigger change that what's currently
> > presented here, and for backport purposes I think it's better done
> > this way for fixing this specific bug.
> >=20
> > Changing to use pin#=C2=A0as the IR offset is worthwhile, but IMO needs=
 to
> > be done separated from the bugfix here.
> >=20
> > > The AMD IOMMU has per-device IRTE, so you *know* you can just use IRT=
E
> > > indices 0-23 for the I/O APIC pins.
> > Aren't there IO-APICs with more than 24 pins?
>=20
> Recent Intel SoCs have a single IO-APIC with 120 pins.

And Xen offers a 32-pin one to guests IIRC. I should have said. 'you
can just use IRTE indices 0-(N-1) for the I/O APIC pins'.

The point is the IRTE is per-device, unless the platform has more than
one I/O APIC with the *same* requester-id.


--=-stca2nf+7IJxy5VDxRNw
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
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQxMDIxMTQ1NDM1WjAvBgkqhkiG9w0BCQQxIgQg4e10Ul/O
jS/jkFE49LsYFuXiF32Fy295e5Bk16QOdF0wgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCSjI/KlyoEvhFdWeIkLk0Ic8taHv/1sFip
pB/f2nEtEnfSUDdU7lmkz+gLhX9+CKfXEhpJlBY2Zgt0tzcpMnMXch4OyBONIsx38R/+KmYM3uuA
BOS9QqWD8n+x5ZoWfUV+Kk1Db0PmItVhW3X1S2QcWDo6qINZofzwh9Zek293fohywGMGrZ4po5uI
jFlGT90qvFBpqy3IzxcO9GNeG6/OXzwrCvrd8ZysGGz9ptBi3YM5KYNXrH8t1MufK5KetltwKYVZ
Qub+Hrrlgq5y6GFduuNfMQkF8AvUKUpWaCeahLfVgExTrGNUOcVif0kSa4Na8se2CxYiWePEjwU5
iXVIPnhvtlWcdPEELNjKnuwFuFVH317npZEBUsCbp/eZAvLuIVPQOjnGZxr9b50W9fBnXYRDT5NH
kERo4V15sj+TyCs1X/e6Z/+nKrk+bW0ubLvKczQM36akrNZujciU8/ikb26WE5pmwK3hGj7uIK/c
gWlRtA6TwX4HdfrbC52PdCZcAu27AXi8s7AbyRN5v/ve/Lt/+4XBwai72a8b41nYYjo//SmvyTbP
K9pkH7pufZ3GJCgyWTEBDpWiWeQNjQIqgJvuJmGpe9RAIIJBvkefDKvJ+YTz9L0J836eXZTWzvtc
4jXDYX6swY6Cb7KP6lR5A+6vOxwbsKGIiPLq1UQy5gAAAAAAAA==


--=-stca2nf+7IJxy5VDxRNw--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:00:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:00:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823636.1237657 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2ttg-0000bw-FD; Mon, 21 Oct 2024 15:00:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823636.1237657; Mon, 21 Oct 2024 15:00: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 1t2ttg-0000bp-CX; Mon, 21 Oct 2024 15:00:40 +0000
Received: by outflank-mailman (input) for mailman id 823636;
 Mon, 21 Oct 2024 15:00: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2ttf-0000bj-Aq
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:00:39 +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 3b746656-8fbd-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:00:38 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c9362c26d8so9659288a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:00:38 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee10bsm211122366b.51.2024.10.21.08.00.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:00:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3b746656-8fbd-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729522837; x=1730127637; 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=7ULGMTaWk9o/AEQ73xekKUtrsfU2argESkvYLJDyNso=;
        b=YZQQzvnfeQxOYOVPs/INkBfHjJKFvVDx8Si2FYuqV28xN5OaeiEvG01SCTm4CPQIJc
         LDXrSV2m5dCOjURme0lcAhlFLBN9A47IjEPDz0yLW65gGKP8LyZwLJOb2qfKrqfRZswG
         naGmIIOvcU5DErlcpDLrzrz0VuHMWvAnIF0yQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729522837; x=1730127637;
        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=7ULGMTaWk9o/AEQ73xekKUtrsfU2argESkvYLJDyNso=;
        b=d3YBLdErpE1fNrw3g+dhoDV+9edT1VBlzbbBxSR+h2hlzP9spCMRXnxQn32DUqUi7j
         Sn4SZCXjTgyJ7PrfQLz1uqPLkTqR/aIqzzfzrZWPDF3HCj9yCkI1wRn7B6XVzzZdYj7E
         3mYrXOBKkRlnDs8Z9nIuZYjhaZqIcqrpTBCkUD5jnMr2uNjknhrOfx+bt/NTf03OP+Ln
         RMvRl65eppFB5jbeOTki4/y0CLuIrDYsKkk/mT1pjESSih6tn12iZ18hEWCxM5J97y4Q
         7IFOoSz5MLC2TSeg5xMvmIrteVDg0cJNN1h9TFgnfAzwOOy7az4zesPE45gVbkTbpcwn
         +65Q==
X-Forwarded-Encrypted: i=1; AJvYcCUAwQ2F1FrK8ClILwM2QUdWnMqAn/ZXrDJqSMIX8ZOEso1bobyPJBsumIl43WhwEpJpZoc6JrZg7Ck=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzLXa0SI6y0focRcx2r+vK2seckHeV/nB9BZQ7HfaGLuDJIf/HQ
	7qxsXgZTJCudZPU1hG74UZEmdZc/ZcqhXPrLejl3IRB4VRKXr9piBhTq9Qp4yHiFo8eKD0tTp6J
	L
X-Google-Smtp-Source: AGHT+IG+q1h+4NzgzNFQayA78ik7NMSFYueExOLp3dTsCGZrX8ScjhZNN87Dz+Nb20PaCp1r/gF43Q==
X-Received: by 2002:a17:907:1c20:b0:a9a:a3a:6c48 with SMTP id a640c23a62f3a-a9a4c2c532fmr1806657766b.2.1729522835435;
        Mon, 21 Oct 2024 08:00:35 -0700 (PDT)
Date: Mon, 21 Oct 2024 17:00:34 +0200
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Willi Junga <xenproject@ymy.be>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Message-ID: <ZxZskrKNuZB9etW9@macbook.local>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>
 <ZxZf4nHFhhfyMF12@macbook.local>
 <5970c852-8800-414a-83f9-66392bdbe016@citrix.com>
 <a43a44b86654e414907e44f4899761fe030b640a.camel@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <a43a44b86654e414907e44f4899761fe030b640a.camel@infradead.org>

On Mon, Oct 21, 2024 at 03:54:35PM +0100, David Woodhouse wrote:
> On Mon, 2024-10-21 at 15:51 +0100, Andrew Cooper wrote:
> > On 21/10/2024 3:06 pm, Roger Pau Monné wrote:
> > > On Mon, Oct 21, 2024 at 12:34:37PM +0100, David Woodhouse wrote:
> > > > On Fri, 2024-10-18 at 10:08 +0200, Roger Pau Monne wrote:
> > > > > When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> > > > > repurposed to contain part of the offset into the remapping table.  Previous to
> > > > > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> > > > > table would match the vector.  Such logic was mandatory for end of interrupt to
> > > > > work, since the vector field (even when not containing a vector) is used by the
> > > > > IO-APIC to find for which pin the EOI must be performed.
> > > > > 
> > > > > Introduce a table to store the EOI handlers when using interrupt remapping, so
> > > > > that the IO-APIC driver can translate pins into EOI handlers without having to
> > > > > read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> > > > > unconditionally when interrupt remapping is enabled, even if strictly it would
> > > > > only be required for AMD-Vi.
> > > > > 
> > > > > Reported-by: Willi Junga <xenproject@ymy.be>
> > > > > Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> > > > > Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> > > > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > > > Hm, couldn't we just have used the pin#?
> > > Yes, but that would require a much bigger change that what's currently
> > > presented here, and for backport purposes I think it's better done
> > > this way for fixing this specific bug.
> > > 
> > > Changing to use pin# as the IR offset is worthwhile, but IMO needs to
> > > be done separated from the bugfix here.
> > > 
> > > > The AMD IOMMU has per-device IRTE, so you *know* you can just use IRTE
> > > > indices 0-23 for the I/O APIC pins.
> > > Aren't there IO-APICs with more than 24 pins?
> > 
> > Recent Intel SoCs have a single IO-APIC with 120 pins.
> 
> And Xen offers a 32-pin one to guests IIRC. I should have said. 'you
> can just use IRTE indices 0-(N-1) for the I/O APIC pins'.

Indeed, my comment was about the hardcoding of 24 pins, as I recall
seeing IO-APICs with more pins.

> The point is the IRTE is per-device, unless the platform has more than
> one I/O APIC with the *same* requester-id.

Yup, just wanted to clarify whether there was a reason for you to
mention 0-23 explicitly, didn't mean to be pedantic (but possibly
sounded like that).

Thanks, Roger


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:03:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:03:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823642.1237668 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2twN-00019F-S1; Mon, 21 Oct 2024 15:03:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823642.1237668; Mon, 21 Oct 2024 15:03: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 1t2twN-000198-PL; Mon, 21 Oct 2024 15:03:27 +0000
Received: by outflank-mailman (input) for mailman id 823642;
 Mon, 21 Oct 2024 15:03: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2twM-000190-FO
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:03:26 +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 9e8a9dfd-8fbd-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:03:24 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a156513a1so635945366b.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:03:24 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a9159a265sm211045766b.212.2024.10.21.08.03.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 08:03:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e8a9dfd-8fbd-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729523004; x=1730127804; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=mJ/WlD/cQwm48zyU/zKL/eCqE13Y05/rtsbUgorXLdk=;
        b=TmGsDzYK0AkLI8CNEaFRMESZYf6PdwdNfoNM/vYz5r+C0OkaevjGzyFhc4KN2e/dih
         ZmxTda2qJH1fjzBNp4AROr5O+aDRrjgHe3XKb+LAu0vs6OKt/AzVLunQDEL3UAupp/Hi
         VfKH/WE9IA0lrDtVg9m25OYdCvMlo0cZo9T/I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729523004; x=1730127804;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=mJ/WlD/cQwm48zyU/zKL/eCqE13Y05/rtsbUgorXLdk=;
        b=UxsYGO4HYKKC9t6A3C3MQ2323VzkI1zjrl1sGiqWmKhPl/qkclSzV3srgoMHGJK7OQ
         JcxZHl+QnRMJE5ubx3lHgeipTsVXExF+OFSgtP3lWXR+YDGY513pSHVl07XIf5PXjaGJ
         fmmTlo/m6ek9b3p+qA9OtTFHRT9FaDFR5h3Psf4+/A5gIObiwKfHnyySct8MjQkLQuMT
         wwvVVvB8fB/tKZPDLKk1dI8ZPT6/1tDi0VPL7/3Hui5WPq0E4YDiCOyBqyS5GKIdKbif
         Jlk7xESrDVmAJl4ip4APRoTXxfv94Q2IwigL7GXnZQMWwRP2XI0ITyYBPTrwa/bPSslk
         7tRw==
X-Gm-Message-State: AOJu0YwDlQfdCtHsOdcBUbTnJCO6NyE9SZ7s2XlI6Xng9sGssd1XIQzQ
	VGChUoVQJeHkUJsEFA6PFsRjYzOhyPJYuUCjLpEtrIIiIjPwbSCSvuUimNK/Iqo=
X-Google-Smtp-Source: AGHT+IE5CVRZTg5j9iteM535GeTKXwZno4noweInwMtGJxwQnPV9hdO5mZCRLU8B+mhSwo307JCbEQ==
X-Received: by 2002:a17:906:730e:b0:a99:e939:d69e with SMTP id a640c23a62f3a-a9a69c67624mr1120458266b.51.1729523003817;
        Mon, 21 Oct 2024 08:03:23 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 21 Oct 2024 16:03:22 +0100
Message-Id: <D51KQITG2YWD.34JT5C9Y10XS9@cloud.com>
Cc: <xen-devel@lists.xenproject.org>, "Jan Beulich" <jbeulich@suse.com>,
 "Willi Junga" <xenproject@ymy.be>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "David Woodhouse"
 <dwmw2@infradead.org>
X-Mailer: aerc 0.18.2
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>
 <ZxZf4nHFhhfyMF12@macbook.local>
 <5970c852-8800-414a-83f9-66392bdbe016@citrix.com>
In-Reply-To: <5970c852-8800-414a-83f9-66392bdbe016@citrix.com>

On Mon Oct 21, 2024 at 3:51 PM BST, Andrew Cooper wrote:
> On 21/10/2024 3:06 pm, Roger Pau Monn=C3=A9 wrote:
> > On Mon, Oct 21, 2024 at 12:34:37PM +0100, David Woodhouse wrote:
> >> On Fri, 2024-10-18 at 10:08 +0200, Roger Pau Monne wrote:
> >>> When using AMD-VI interrupt remapping the vector field in the IO-APIC=
 RTE is
> >>> repurposed to contain part of the offset into the remapping table.=C2=
=A0 Previous to
> >>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt rema=
pping
> >>> table would match the vector.=C2=A0 Such logic was mandatory for end =
of interrupt to
> >>> work, since the vector field (even when not containing a vector) is u=
sed by the
> >>> IO-APIC to find for which pin the EOI must be performed.
> >>>
> >>> Introduce a table to store the EOI handlers when using interrupt rema=
pping, so
> >>> that the IO-APIC driver can translate pins into EOI handlers without =
having to
> >>> read the IO-APIC RTE entry.=C2=A0 Note that to simplify the logic suc=
h table is used
> >>> unconditionally when interrupt remapping is enabled, even if strictly=
 it would
> >>> only be required for AMD-Vi.
> >>>
> >>> Reported-by: Willi Junga <xenproject@ymy.be>
> >>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> >>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of usi=
ng a static mapping')
> >>> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> >> Hm, couldn't we just have used the pin#?
> > Yes, but that would require a much bigger change that what's currently
> > presented here, and for backport purposes I think it's better done
> > this way for fixing this specific bug.
> >
> > Changing to use pin#=C2=A0as the IR offset is worthwhile, but IMO needs=
 to
> > be done separated from the bugfix here.
> >
> >> The AMD IOMMU has per-device IRTE, so you *know* you can just use IRTE
> >> indices 0-23 for the I/O APIC pins.
> > Aren't there IO-APICs with more than 24 pins?
>
> Recent Intel SoCs have a single IO-APIC with 120 pins.
>
> ~Andrew

I can't say I understand why though.

In practice you have the legacy ISA IRQs and the 4 legacy PCI INTx. If you =
have
a weird enough system you might have more than one PCIe bus, but even that =
fits
more than nicely in 24 "pins". Does ACPI give more than 4 IRQs these days a=
fter
an adequate blood sacrifice to the gods of AML?

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:07:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:07:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823653.1237678 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2u0X-000600-GM; Mon, 21 Oct 2024 15:07:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823653.1237678; Mon, 21 Oct 2024 15:07: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 1t2u0X-0005zt-CP; Mon, 21 Oct 2024 15:07:45 +0000
Received: by outflank-mailman (input) for mailman id 823653;
 Mon, 21 Oct 2024 15:07: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=uLLp=RR=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t2u0V-0005zn-Or
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:07:43 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on2061b.outbound.protection.outlook.com
 [2a01:111:f403:2416::61b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 376bfd37-8fbe-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:07:42 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by PH7PR12MB8826.namprd12.prod.outlook.com (2603:10b6:510:26a::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.27; Mon, 21 Oct
 2024 15:07:37 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 15:07: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>
X-Inumbo-ID: 376bfd37-8fbe-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=lJ0kVrIRDio9aSUlHJMQ2xc8vs+WPEaZSsnqrUnuoOefWD+X2GXLWmINvILZt2whZpexYvMJWv2OT9uLzbYf3NDmpm++OJHJyEfIHnZMsKFqYGq19TwbEkBfApjMGyOtK5JE7+N10+PoqXI0iWTanK2kj1evHPBB5IUFCbx4/HIKsvtxdR/oputoXRiVtOTF49dX09iCL01Rj5E8njymRIu1fHjA3MWPg/AOgngGw/9g15nw4yi2+k5hlF+LrE1qNTASRTrXjXX2pM5CW9uOQ4hj+xGk7vBdIcDCIMThwwGP5VQ3F5sf30vXrN4Nc8Jm2N4G0p4/+JfzwYXFpMSf9g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=vK0gOMX5GY3wYuzkvhrqd3XvZMD6GY+H+a4JObZ05fk=;
 b=DhsB+b4/v7y5BY8uQuomocbeT63Db1/oKEJwW8pDy8m9qiLfHDllO8mOhOWf6rL/UK9U6bvS7emhiXg8sKYg1Wv3stYmkrQ2+7LBP0/hEgEi72bjCUq5/RljVwXCcmFW4n9Apph7rFfppj5vPB5l8Mjqm0Et3qMLf/8BGYjmSV8bxALQnnHCv2cq+vPqQDUlt/ByIO4eCOLpby23tNomRfrOQx+TMNdVJcqTefVDwlLicBGC2S56MsdF1721vSGP0O9WbpoagWOvI/ejjnYBiGUzesKO4Zr2or9Foaovzhto8yurY5YrlfS12JPoHFHvpFERZ3W+qc7cRkTFv8fyHg==
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=vK0gOMX5GY3wYuzkvhrqd3XvZMD6GY+H+a4JObZ05fk=;
 b=IHGJO4y0qOnYZf3Om6rEXj8Y7jESBvnAIQlNWVXboiZZ674KOrgd9dIFzDVfeW2p3T2KYt9NHtwao57Ktf6sTF15VeD4NIgofFAHlDSC2W8smKhuXSqHumhu28xU4++8f38xGTBUYCMVIsGIwhK3NqO33hHyeY9Bubw+D0HDz/k=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <d7918da2-1ea7-4036-ab12-89afc6deb966@amd.com>
Date: Mon, 21 Oct 2024 16:07:32 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Content-Language: en-GB
To: Julien Grall <julien@xen.org>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
 <870059bd-d2af-4100-88be-9f6eb4facbe9@xen.org>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <870059bd-d2af-4100-88be-9f6eb4facbe9@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0546.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:319::17) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|PH7PR12MB8826:EE_
X-MS-Office365-Filtering-Correlation-Id: 723d41cc-bce7-44d2-0f3f-08dcf1e21969
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?LzVPR1lMSXkwdXZYSk9VVURld21yd3VxdVk1YWR2eXovSzFWTzIwbVpsaHNZ?=
 =?utf-8?B?RU9XQi9XZU4wM2k0MW53KzR5WDVKdDRJVXVqT3RZWlkxUXNwbUtEYjFsQzFM?=
 =?utf-8?B?VURKb3d4VjhKeE5kakZaZnhoUisvUzFOeHk4NW1xNk1mUXRCbXZoWFR3ZW9I?=
 =?utf-8?B?czNnendDdE1jVVhHalMvK1djZnZWNXFiRXBDNXFxRnBhWTZGSVBxb1lvK3NC?=
 =?utf-8?B?NXBkKzhmeTltYXB4MXhTZzFVaHVOYnNJRDNEam12M2FVTUEwbGpvMjdjVUZG?=
 =?utf-8?B?MCs5dUtKNTh1VlZ4dWlrcXQ3MEcrWENmM2Nab3NwSk1CaUZIdFc1UXF5V2Ft?=
 =?utf-8?B?L0E2MjNHSUlYRTB1UmdKWkk2aURVZ29uRitnZUoyaFNIM01NdnBxVE5HVG9n?=
 =?utf-8?B?WHhhTHBXOXBGaGpGaGVENVoxNmxXK1JmS0svektpcTMzR2hQV1hUd01jNXVr?=
 =?utf-8?B?NVZTZGg5R0R6Zzh5YXE2NjZWUnNUNVQ2VzU0Z2hFZVVKQ1NTVmhPMmZ1bGRE?=
 =?utf-8?B?bTB2NWJwNThPWXQzMVNBOWw3SXE5Q0NpbTVFL2p0UXY5YjJKaVovVThZSm95?=
 =?utf-8?B?cVZRWmFZbGQ1elcweXpNVklGdWdvL0V2dHdEZmF0U09FSFo0anJWaHhNcWlK?=
 =?utf-8?B?NnBOMmh3d1lzcXVWekFzclVoN1REclByczhkWVhjdUdUZkE5V014SGxXUnR6?=
 =?utf-8?B?MFpVT1JMQ2ZBQVFja3h2VjAyVENmNHpBK1RsTnE2dmt4UDlpd204dzE3ZFVx?=
 =?utf-8?B?bjFnaWpJMHFHK2RNaXVOVHI2aFJSWHVvRG9qVUJ3WDVpbGxXN0xLQ0hEWHMv?=
 =?utf-8?B?Unc1ZTE5OVVNS0RQWGdwQXhlTElucEprVHJZcHFONHpYUE56QlVkTEc3UEJ1?=
 =?utf-8?B?R0diYlc2dzRYVkxLaEw2dTNuMTVPYTBGdDBFRVhOUUU0ZHlVcE1meTZVVDRn?=
 =?utf-8?B?anJ2cmJiMWFoK0twbXRXbVZhU0ZYb1BKSklVTGVNdDlpUG1CN041K1JwVEtP?=
 =?utf-8?B?dmh3MWV6Ky9iNDZQQmV1L0xlL0JHOHRKUzFxU0cwdFFsaUtQQUl4MVQwN01Z?=
 =?utf-8?B?OTJEdHV3VVZzRi9BbmlrWkNXWGp1RWROYjBWS3RybUkvSjhhdFE5TWhPSFBM?=
 =?utf-8?B?enhGVmZLREI0dXg1ZmJieXhMSElQeFlFd0tVblcrNmwzWFp4N28xK1FIbEZq?=
 =?utf-8?B?S1B1WjZHaE12Q2NvQ0VGOWNaOUZxM2x6WG9Md3BIck1lVTIxemltZExEUTky?=
 =?utf-8?B?OGxPcW0xeUFqYmgwSEtwZElOUWV6Y2JGcnQ3SXlkaE9iMFhnTkF3eEs5QmpG?=
 =?utf-8?B?d2d1dUhQN2laU25lWE5SR05wNVJhUkcxclNzM3hzckMrdzNnQ1Rqcm13eHln?=
 =?utf-8?B?S3J3dEEyMHNiSzNiNGFiR29hSEd5WVA4NzhGSFNSbUZtcktBL3RGYkpjVjc5?=
 =?utf-8?B?RGxJbWFHMUE1ZngzN3JsSU14S2dCSzl4L05laUpvZ2xSRUg2TmdTaHpuZ2RG?=
 =?utf-8?B?NFZPU2VTUXhGZGwxckJ5VmlCQWZnWWZzUzQ3Ukc1d2dsNkdJQmtueDZ4TFpH?=
 =?utf-8?B?N09ORUsyL09Ddll0SENhOGxZazBQc2lmQVc3eDdxb3Jrc29qMUl4LzFaaDRJ?=
 =?utf-8?B?cTk3QU5pRDJ0NzJWdWRVU0JLMjVOL1ptL2FTYlJZRUFGZm13am9ZdVRHdEgw?=
 =?utf-8?B?aGZ0U3dTMGIzUVhlcVU3M3cyZGNhaGFoKyttQkZMeDY5dm1xSG43TjVFSlFV?=
 =?utf-8?Q?hnSXLXW8/Tpwi1gki4bS289hsXS4YaLrpX0S/CP?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?bEFCelRldkFNVnZFdFl1ZHdNWkNDaW84V2ZXeWRuVjA3OTV2QzhaL1pDRzJi?=
 =?utf-8?B?NnFFdHA2aVZkb1phaklFRjFBOG42WGtwdnRrZmt4SklDZFZTZzMyRnpGU0lq?=
 =?utf-8?B?OEZJaGlhNmppMURvcWEzdFpWbWtNR1gzZkRoanlSTmVuSHhwSmFwazNkeVVk?=
 =?utf-8?B?bWI1L3FtNGVEaXR3b1l0QjMzdmYxRE9qZmpRdHc1SURNVmZwNjQ3aVN6TFJK?=
 =?utf-8?B?RFRFRUVoTUFjTGZsdVIveEtvNlRuZUc4UWFPRjhXU1orVmYyTGkwbUNiU3JH?=
 =?utf-8?B?RVVld3hVeW0xTnhQNkZ6MHc5UWVjaHpBbklaQUxZaVpiZ3NmbzV4MlR1ck1s?=
 =?utf-8?B?RXJqaVBqSjdMVDM1ZWFEQ29GdDFGaS9ENU1paGlhZHhhbHF6emYrdzlOMmVy?=
 =?utf-8?B?eXNzZTVBRU5wUTl3bGhZREtkT3lrSDhjaW5BSlJaS3ZNSEhqbVcrNXF2Yjhs?=
 =?utf-8?B?cmFyYzJXMmthclFyUUhNVVppLzhISzdZWFA2dlFNZkdyZVM4aGlWZ0NlNDVX?=
 =?utf-8?B?TjVLZGJHMnF6bXhrRVNCN2VObGVLTUJNVWhMQ0NKZWNWSFVUem1mcWFDajd0?=
 =?utf-8?B?eGVZbkVoRHN4RDhuK1Y4V3MrOUJEMG9RbUorenp1WmV4M0ZzbmxzZlFJUjRv?=
 =?utf-8?B?OGdNbHIwSVlEVnlhVVM5SUljdVRIbXdCcGVoaERrWmpJZUl0SmcweWU5SjdJ?=
 =?utf-8?B?WEFZV1Z6U1JHWllrTjNHVnF6SFZ4MjFUcWc3MDVDc1VsbkEyUjEvSkRPOGI4?=
 =?utf-8?B?NkpBWkdtT29JNGV0dHV4YVFaMkVUOW9abGxJTldFeTZJMHVhdFNLdWhYdjNk?=
 =?utf-8?B?M1FsbUZhM1BCY0lSdmw0YXgxTWlMaXV4UWRKSU5MNXZhMTgwdUg2bjhRbFhh?=
 =?utf-8?B?NUVnc1ZYNE85S0E1My91bmZaQ3UrS1A3bHFFMGoveGV3aERKS1ZKeDNJU2lG?=
 =?utf-8?B?ZWs0WVdFbGF4MDREY2VMUXJtbUJsSTNRcG9obmwwNFk0S1NJWjhBWGM4MXRv?=
 =?utf-8?B?aHJPdEhMSTRQWEYzKzlWTVowVm1XQlpaZjJyQ3F2OGxqV0RnQXRSWkR2RFd0?=
 =?utf-8?B?Z2VURnROTVJIMUxCZ3VXdm9CRHVscEptWlVsQzFqWWpjMUdzOENkUXA0Tjh3?=
 =?utf-8?B?UnhXbGpyYm9TKzYreHFWQmdOYmQ2QUw2WjhEWEs0QlFSRVFOZ1hDWTJOUVpF?=
 =?utf-8?B?VFloeDkrS0luYnNIZTR4dUNPcEkrUEpwaGUzQ2NHY3pvblZwaHdOVjc3MmRt?=
 =?utf-8?B?VkJ5cnNrWUpUeW9GRDlyaU1rM2tqbThOdVBpemFxRTdnNXZXcHA0VjNWelE4?=
 =?utf-8?B?MS9lQnVKa3JWaG8vckNISUVuWWxCREMyekpKZFgxTTVIZXBjWElYSHpMcnNp?=
 =?utf-8?B?UTNhQTNPSjV4eWEwWGx2RVFLaG51QThuVEdueHFNUFhta05SWjUvQ24rU2dr?=
 =?utf-8?B?eFdRbXc4V3lFZUdNaC8zckwycG05UUc4NFNJaExjalRieGl5ODJxbkdlWTRy?=
 =?utf-8?B?STJTZURCWldXQmF3dFZnMDloajlidXJoc3cwNlBjRVNGTWpZTUtuNHIvRnR1?=
 =?utf-8?B?dmhPcXE2b3VmRVVrdGxQb3E4aTZ6bVJXbHlPYk42d3FpNytJRUJXeGlwYmhJ?=
 =?utf-8?B?OUZaYUovYTRiK0ROUWo0Ky9jMWtVdEg0ZjR1T2FFdTRyVlNsTHZsMk5OY2Na?=
 =?utf-8?B?cnNtVmlKTFFWTlEzUWZMY2pYYVV1bGdBSDcrYldJVUM1R2lmUEhqcGs2bzFD?=
 =?utf-8?B?RER5YmdRdytrY05GdFl4Z1FTUk4wckVXSXMxZTU2bmlpSVNWSTFlYmltbHE4?=
 =?utf-8?B?Qys3Q3draC9LVkdaYkFmSklya3p4YjYwVzZNSXRtdmIvc0FDYU9ZN0dKbURI?=
 =?utf-8?B?eDg0bUVBcFBrNnovUnR1Y2lyVlEyREx1WStFMURzRFlJMHNqODBDWlg2aG9w?=
 =?utf-8?B?K1JlWWZIRzRSZzdxU3JzS2hoUm9jQ00xUkkrdVcrYk5YVE5tZGp2cDVIZ1Zv?=
 =?utf-8?B?VkYvcmkwSjFsR2JTOG8vZFozcEQ5RjRzOWxNdHFGR1BodzZsdkJwTlk4QzJv?=
 =?utf-8?B?OWkwWFRheWVEcGo2WE1jZHhFVy9xV2xHWkZUcUFSNldyS2tZSkcvRW5WMHJr?=
 =?utf-8?Q?kcNN0X2SVJizTi+dJ2unDSRNq?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 723d41cc-bce7-44d2-0f3f-08dcf1e21969
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 15:07:37.4009
 (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: QXKgyHKV23eECycdcXiZphoXmNOhkKvA5NfC/q3dhex1qH8amNQ9wPVkx5BVUHa3ffz094RKizhMnJkge6a+8w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8826


On 18/10/2024 23:13, Julien Grall wrote:
> Hi Ayan,

Hi Julien,

Just one clarification.

>
> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>> diff --git a/xen/arch/arm/arm64/mpu/Makefile 
>> b/xen/arch/arm/arm64/mpu/Makefile
>> new file mode 100644
>> index 0000000000..3340058c08
>> --- /dev/null
>> +++ b/xen/arch/arm/arm64/mpu/Makefile
>> @@ -0,0 +1 @@
>> +obj-y += head.o
>> diff --git a/xen/arch/arm/arm64/mpu/head.S 
>> b/xen/arch/arm/arm64/mpu/head.S
>> new file mode 100644
>> index 0000000000..4a21bc815c
>> --- /dev/null
>> +++ b/xen/arch/arm/arm64/mpu/head.S
>> @@ -0,0 +1,130 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +/*
>> + * Start-of-day code for an Armv8-R MPU system.
>> + */
>> +
>> +#include <asm/mm.h>
>> +#include <asm/arm64/mpu/sysregs.h>
>> +
>> +#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
>> +#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
>> +#define REGION_DATA_PRBAR       0x32    /* SH=11 AP=00 XN=10 */
>> +
>> +#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
>> +
>> +/*
>> + * Macro to prepare and set a EL2 MPU memory region.
>> + * We will also create an according MPU memory region entry, which
>> + * is a structure of pr_t,  in table \prmap.
>> + *
>> + * Inputs:
>> + * sel:         region selector
>> + * base:        reg storing base address (should be page-aligned)
>> + * limit:       reg storing limit address
>> + * prbar:       store computed PRBAR_EL2 value
>> + * prlar:       store computed PRLAR_EL2 value
>> + * maxcount:    maximum number of EL2 regions supported
>> + * attr_prbar:  PRBAR_EL2-related memory attributes. If not 
>> specified it will be
>> + *              REGION_DATA_PRBAR
>> + * attr_prlar:  PRLAR_EL2-related memory attributes. If not 
>> specified it will be
>> + *              REGION_NORMAL_PRLAR
>> + */
>> +.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, 
>> attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
>> +
>> +    /* Check if the number of regions exceeded the count specified 
>> in MPUIR_EL2 */
>> +    add   \sel, \sel, #1
>> +    cmp   \sel, \maxcount
>> +    bgt   fail
>> +
>> +    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
>> +    and   \base, \base, #MPU_REGION_MASK
>> +    mov   \prbar, #\attr_prbar
>> +    orr   \prbar, \prbar, \base
>> +
>> +    /* Limit address should be inclusive */
>> +    sub   \limit, \limit, #1
>> +    and   \limit, \limit, #MPU_REGION_MASK
>> +    mov   \prlar, #\attr_prlar
>> +    orr   \prlar, \prlar, \limit
>> +
>> +    msr   PRSELR_EL2, \sel
>> +    isb
>> +    msr   PRBAR_EL2, \prbar
>> +    msr   PRLAR_EL2, \prlar
>> +    dsb   sy
>> +    isb
>> +.endm
>> +
>> +/* Load the physical address of a symbol into xb */
>> +.macro load_paddr xb, sym
>> +    ldr \xb, =\sym
>> +    add \xb, \xb, x20       /* x20 - Phys offset */
>
> Sorry I didn't spot this until now. Xen will be linked to a specific 
> physical address, so why do we need to add an offset?
Yes, this needs to be removed. x20 contains 0.
>
>> +.endm
>> +
>> +/*
>> + * Maps the various sections of Xen (described in xen.lds.S) as 
>> different MPU
>> + * regions.
>> + *
>> + * Inputs:
>> + *   lr : Address to return to.
>> + *
>> + * Clobbers x0 - x5
>> + *
>> + */
>> +FUNC(enable_boot_cpu_mm)
>> +
>> +    /* Check if the number of regions exceeded the count specified 
>> in MPUIR_EL2 */
>
> AFAIU, this doesn't match what the instruction is doing below.
Sorry, this needs to be removed.
>
>> +    mrs   x5, MPUIR_EL2
>> +
>> +    /* x0: region sel */
>> +    mov   x0, xzr
>> +    /* Xen text section. */
>> +    load_paddr x1, _stext
>> +    load_paddr x2, _etext
>> +    cmp x1, x2
>> +    beq 1f
>
> This check seems to be excessive... I can't think of a reason why 
> there would be no text at all... Same for a lot of the checks below.
Is it ok if we have this excess check ? The downsides are only a small 
increase in code size and boot time. Otherwise, I need to justify why we 
have this checks in some places, but not in others.
>
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, 
>> attr_prbar=REGION_TEXT_PRBAR
>> +
>> +1:  /* Xen read-only data section. */
>> +    load_paddr x1, _srodata
>> +    load_paddr x2, _erodata
>> +    cmp x1, x2
>> +    beq 2f
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, 
>> attr_prbar=REGION_RO_PRBAR
>> +
>> +2:  /* Xen read-only after init and data section. (RW data) */
>> +    load_paddr x1, __ro_after_init_start
>> +    load_paddr x2, __init_begin
>> +    cmp x1, x2
>> +    beq 3f
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5
>> +
>> +3:  /* Xen code section. */
>> +    load_paddr x1, __init_begin
>> +    load_paddr x2, __init_data_begin
>> +    cmp x1, x2
>> +    beq 4f
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, 
>> attr_prbar=REGION_TEXT_PRBAR
>> +
>> +4:  /* Xen data and BSS section. */
>> +    load_paddr x1, __init_data_begin
>> +    load_paddr x2, __bss_end
>> +    cmp x1, x2
>> +    beq 5f
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5
>> +
>> +5:
>> +    ret
>> +
>> +fail:
>
> This name is a bit too generic given you use within a macro. Also, I 
> think it should be its own local function because the macro can be 
> used anywhere.

Ack. I will convert this to a function.

- Ayan



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:08:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:08:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823660.1237688 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2u1e-0006Vy-Oe; Mon, 21 Oct 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 823660.1237688; Mon, 21 Oct 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 1t2u1e-0006Vr-M4; Mon, 21 Oct 2024 15:08:54 +0000
Received: by outflank-mailman (input) for mailman id 823660;
 Mon, 21 Oct 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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2u1c-0006Vh-Up
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:08:52 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 613ee9cb-8fbe-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:08:51 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so533322666b.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:08:51 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a9155a1c9sm212970066b.129.2024.10.21.08.08.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 08:08:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 613ee9cb-8fbe-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729523330; x=1730128130; 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=E5ZZ1ZGwLNfx5yh4T1bZZfcgIUaSUikY7n52pslz2Y8=;
        b=TfrflGPddnkA2k+eUPLSj3bgj6mktjzkWk8HlTh49UdOwDL8FNfMuZcHBgh8+Vj9C2
         rP8zFUtleg3rqRoDTQlYDyBZMZwgESj1zHF3hfkYlGr50ZQrK35WXbAFmQ/1tar0vVFZ
         f53bftP9qCQfhxBQlA6tBl7PtDen1eQ8EcX/Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729523330; x=1730128130;
        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=E5ZZ1ZGwLNfx5yh4T1bZZfcgIUaSUikY7n52pslz2Y8=;
        b=tqDfgulnGLRhXqUDCEg8jluxwHbAmFUvvzc2O95LrjjJpkZMuyvlPfNmXwV5VaWQV9
         vFSj4YMoONnyWPgDuFQaknmSF48hMW7aIth84xtnW2EJj+9lIqNbWjbn8sL5w4MCuUK3
         Q0doJokzBwZPDfFrlrGsWpFhkXxVqJmDsWLK3mfA8BbzpGHPHd6WB2XI6Diu5giWrqhH
         RA0Lat8UcRlWz3rMfi47BbcMKNO53ljsxPtTE2HWfy5Kvtdp/sqrN+BlUCSeN0zhP8MO
         Znck02U6tY5/Rm8B1kRXlitejH759juBEBPbbZR6oxitLlLe/6Dcooju5yEhCXlzzMed
         aXAQ==
X-Gm-Message-State: AOJu0YzyPEQeajXY5gx7hD78ZPuigSS/A8AKh84ulRx9feBXb60TlhPf
	sZZ6DkyLecIrMlkLdeXHyWJ6tJc+tG9WWSP27DRK2VG1WmhUpK4pkXkyWIQA6+w=
X-Google-Smtp-Source: AGHT+IGuzF+pfvTHUY9k+H0C++iUwOl+kj7Czq0vqGssig8KcYLa7nR+bErcQZZdDkTMI0BsWrxX5A==
X-Received: by 2002:a17:907:9450:b0:a9a:139:5ef3 with SMTP id a640c23a62f3a-a9aa8a41db6mr30109566b.55.1729523330538;
        Mon, 21 Oct 2024 08:08:50 -0700 (PDT)
Message-ID: <c917e062-60dc-4595-88ad-2838e63b0887@citrix.com>
Date: Mon, 21 Oct 2024 16:08:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 David Woodhouse <dwmw2@infradead.org>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 Willi Junga <xenproject@ymy.be>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <10e0f567ab3be0eae4c6473326da3a6d369ba8ff.camel@infradead.org>
 <ZxZf4nHFhhfyMF12@macbook.local>
 <5970c852-8800-414a-83f9-66392bdbe016@citrix.com>
 <D51KQITG2YWD.34JT5C9Y10XS9@cloud.com>
Content-Language: en-GB
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: <D51KQITG2YWD.34JT5C9Y10XS9@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 4:03 pm, Alejandro Vallejo wrote:
> On Mon Oct 21, 2024 at 3:51 PM BST, Andrew Cooper wrote:
>> On 21/10/2024 3:06 pm, Roger Pau Monné wrote:
>>> On Mon, Oct 21, 2024 at 12:34:37PM +0100, David Woodhouse wrote:
>>>> On Fri, 2024-10-18 at 10:08 +0200, Roger Pau Monne wrote:
>>>>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>>>>> repurposed to contain part of the offset into the remapping table.  Previous to
>>>>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>>>>> table would match the vector.  Such logic was mandatory for end of interrupt to
>>>>> work, since the vector field (even when not containing a vector) is used by the
>>>>> IO-APIC to find for which pin the EOI must be performed.
>>>>>
>>>>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>>>>> that the IO-APIC driver can translate pins into EOI handlers without having to
>>>>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>>>>> unconditionally when interrupt remapping is enabled, even if strictly it would
>>>>> only be required for AMD-Vi.
>>>>>
>>>>> Reported-by: Willi Junga <xenproject@ymy.be>
>>>>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>>>>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>>> Hm, couldn't we just have used the pin#?
>>> Yes, but that would require a much bigger change that what's currently
>>> presented here, and for backport purposes I think it's better done
>>> this way for fixing this specific bug.
>>>
>>> Changing to use pin# as the IR offset is worthwhile, but IMO needs to
>>> be done separated from the bugfix here.
>>>
>>>> The AMD IOMMU has per-device IRTE, so you *know* you can just use IRTE
>>>> indices 0-23 for the I/O APIC pins.
>>> Aren't there IO-APICs with more than 24 pins?
>> Recent Intel SoCs have a single IO-APIC with 120 pins.
>>
>> ~Andrew
> I can't say I understand why though.
>
> In practice you have the legacy ISA IRQs and the 4 legacy PCI INTx. If you have
> a weird enough system you might have more than one PCIe bus, but even that fits
> more than nicely in 24 "pins". Does ACPI give more than 4 IRQs these days after
> an adequate blood sacrifice to the gods of AML?

There's a whole bunch of pins for misc non-PCI(e) things, including
plain GPIO lines.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:25:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:25:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823668.1237698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uHF-0003Yu-2S; Mon, 21 Oct 2024 15:25:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823668.1237698; Mon, 21 Oct 2024 15: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 1t2uHE-0003Yn-Ug; Mon, 21 Oct 2024 15:25:00 +0000
Received: by outflank-mailman (input) for mailman id 823668;
 Mon, 21 Oct 2024 15:24: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 1t2uHD-0003Yh-HV
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:24: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 1t2uHD-00030B-4v; Mon, 21 Oct 2024 15:24:59 +0000
Received: from [2a02:8012:3a1:0:827:16ef:abff:1cc1]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t2uHC-0001VM-Us; Mon, 21 Oct 2024 15:24: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=dQc6hAtu75myaazsr1LbWijLKSj/7+Shsh5iwxymJto=; b=Ps/qqdXjS1cOPWXPNGU+MllcXs
	7oSllRXqP/k7WJdSduL9/1fIeRFJ+TnUdZoxWPBo6MO9kFd0/JyMNPUL+d/uh4De1UzQj5FDHDKuk
	m5vJU2uxtRSJ/TTGdhT3B8VpLIUiwYg/UiUM+7ESHeB4skB9fbqTyeDxi8fdtuLHIX5Q=;
Message-ID: <3ea2fdeb-faac-4766-800f-917ea8af1063@xen.org>
Date: Mon, 21 Oct 2024 16:24:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-2-ayan.kumar.halder@amd.com>
 <7ee1579b-f1e8-4dd4-8540-e6c0858c6999@xen.org>
 <f5b875e0-56e6-451d-a736-f2cc33cabae0@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <f5b875e0-56e6-451d-a736-f2cc33cabae0@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Ayan,

On 21/10/2024 12:12, Ayan Kumar Halder wrote:
> 
> On 18/10/2024 14:41, Julien Grall wrote:
>> Hi Ayan,
> Hi Julien,
>>
>> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>>> If the BSS section is empty, then the function can just return.
>>
>> This is more than "can", right? If we don't do it, we will end up to 
>> zero outside of BSS. This could be critical data...
> s/can just/should
>>
>> Also, I am tempted to suggest to add a Fixes tag because even if it is 
>> unlikely BSS will be zero in the current Xen, it is also not unlikely.
>>
>> The tag would be:
>>
>> Fixes: dac84b66cc9a ("xen: arm64: initial build + config changes, 
>> start of day code")
> Ack.
>>
>>>
>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>
>> I saw the discussion. I don't have a strong opinion on the exact 
>> approach choosen for zeroing. With the commit message updated:
>>
>> Acked-by: Julien Grall <jgrall@amazon.com>
> 
> I propose that this patch to be committed. The changes to the commit 
> message can be done on commit.
> 
>>
>>> ---
>>> Changes from :-
>>>
>>> v1..v2 - New patch introduced in v3.
>>>
>>>   xen/arch/arm/arm64/head.S | 2 ++
>>
>> Don't we need a similar change on the arm32 code?
> 
> I haven't looked at the arm32 code. My idea is to get the earlyboot (ie 
> the asm part) of Xen working on R82 and then do the similar changes for 
> R52 (ie arm32).

AFAIU, this change is not related to the MPU. So I would rather prefer 
if we keep this change in sync. I am happy to send a patch for it if you 
don't have time.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:26:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:26:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823677.1237707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uIn-0004Do-Fe; Mon, 21 Oct 2024 15:26:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823677.1237707; Mon, 21 Oct 2024 15: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 1t2uIn-0004Dh-D1; Mon, 21 Oct 2024 15:26:37 +0000
Received: by outflank-mailman (input) for mailman id 823677;
 Mon, 21 Oct 2024 15:26: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 1t2uIm-0004DY-3g
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:26: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 1t2uIl-00031T-Mi; Mon, 21 Oct 2024 15:26:35 +0000
Received: from [2a02:8012:3a1:0:827:16ef:abff:1cc1]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t2uIl-0001bp-G4; Mon, 21 Oct 2024 15: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
Precedence: 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=3WxrTBZEA732rGh3PXOA0Igi/wV6/lGDTLO8ghG8IXI=; b=izKhB6GTcQyDsuSfD62Ixh22tA
	tPzU6t/tANGYBjGUJMGKOjx9F0GirXSUiDhK2yLvEAZQOwE/DjZ+6O2hKiSJawlfyuS+0pXkauOLo
	xF+guCpQK6llVduGR/G5gACL3755lb2AGzqM9c4GuZQdDtKbDI/Q9GY1G92dKrvXoDMc=;
Message-ID: <cd2340a0-edfc-4d93-aa01-df9c5df76e3c@xen.org>
Date: Mon, 21 Oct 2024 16:26:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.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: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-3-ayan.kumar.halder@amd.com>
 <a2ba4e14-cede-4b30-a67a-790f4a55f3a6@xen.org>
 <74dd600b-4261-46a7-916a-506a11eb2c99@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <74dd600b-4261-46a7-916a-506a11eb2c99@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Ayan,

On 21/10/2024 12:25, Ayan Kumar Halder wrote:
> 
> On 18/10/2024 15:08, Julien Grall wrote:
>> Hi,
> Hi,
>>
>> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>>> There are features in the forthcoming patches which are dependent on
>>> MPU. For eg fixed start address.
>>> Also, some of the Xen features (eg STATIC_MEMORY) will be selected
>>> by the MPU configuration.
>>>
>>> Thus, this patch introduces a choice between MMU and MPU for the type
>>> of memory management system. By default, MMU is selected.
>>> MPU is now gated by UNSUPPORTED.
>>>
>>> Update SUPPORT.md to state that the support for MPU is experimental.
>>>
>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>
>> With one remark below:
>>
>> Acked-by: Julien Grall <jgrall@amazon.com>
> Thanks.
>>
>>> ---
>>> Changes from :-
>>>
>>> v1 - 1. Reworded the help messages.
>>> 2. Updated Support.md.
>>>
>>> v2 - 1. Reworded the help message.
>>>
>>>   SUPPORT.md                     |  1 +
>>>   xen/arch/arm/Kconfig           | 17 ++++++++++++++++-
>>>   xen/arch/arm/platforms/Kconfig |  2 +-
>>>   3 files changed, 18 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/SUPPORT.md b/SUPPORT.md
>>> index 23dd7e6424..3f6d788a43 100644
>>> --- a/SUPPORT.md
>>> +++ b/SUPPORT.md
>>> @@ -40,6 +40,7 @@ supported in this document.
>>>         Status, Xen in AArch64 mode: Supported
>>>       Status, Xen in AArch32 mode: Tech Preview
>>> +    Status, Xen with MPU: Experimental
>>
>> Maybe mention Armv8-R?
> 
> Yes.
> 
> I propose this change be done on commit as well.

Unless Stefano wants to do, I would rather not as you are going to send 
a new version of the series. Same applies for patch #1.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:30:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:30:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823685.1237718 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uMS-0005kD-Vj; Mon, 21 Oct 2024 15:30:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823685.1237718; Mon, 21 Oct 2024 15:30: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 1t2uMS-0005k6-SU; Mon, 21 Oct 2024 15:30:24 +0000
Received: by outflank-mailman (input) for mailman id 823685;
 Mon, 21 Oct 2024 15: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 1t2uMR-0005k0-Aj
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15: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 1t2uMQ-00036d-WA; Mon, 21 Oct 2024 15:30:22 +0000
Received: from [2a02:8012:3a1:0:827:16ef:abff:1cc1]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t2uMQ-0001ok-P3; Mon, 21 Oct 2024 15: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=ydsDvZXSr607MylDcGfzwfPfmlY+lHjaN570Eg9c2OQ=; b=1cWt0mYwMTUkCldZcWDt1RMyxK
	CJrWuwoUah9gwMtC3VZ9b7G+O+Ldsq3g5elGvrxEo3gcV72AOya0gqJfZNvzOGCbnwUWR4fHddGVl
	h6FZyVDstqT83VAk6mpVUH91wak+3RSqgxtY4+NVOOqwFSGLA/rEOcP9xCu2/1R6xGRo=;
Message-ID: <12d61ae8-b89d-4bc8-824c-65a97e4ba988@xen.org>
Date: Mon, 21 Oct 2024 16:30:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>,
 "Jiamei . Xie" <jiamei.xie@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-4-ayan.kumar.halder@amd.com>
 <5740cd89-1064-4ad1-a0a6-90c03ab99768@xen.org>
 <a92993c9-8af9-4d53-a934-79e7f5a5f92a@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <a92993c9-8af9-4d53-a934-79e7f5a5f92a@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 21/10/2024 13:40, Ayan Kumar Halder wrote:
> 
> On 18/10/2024 22:59, Julien Grall wrote:
>>> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
>>> index 71ebaa77ca..0203771164 100644
>>> --- a/xen/arch/arm/setup.c
>>> +++ b/xen/arch/arm/setup.c
>>> @@ -295,6 +295,14 @@ void asmlinkage __init start_xen(unsigned long 
>>> fdt_paddr)
>>>       struct domain *d;
>>>       int rc, i;
>>>   +#ifdef CONFIG_MPU
>>> +    /*
>>> +     * Unlike MMU, MPU does not use pages for translation. However, 
>>> we continue
>>> +     * to use PAGE_SIZE to denote 4KB. This is so that the existing 
>>> memory
>>> +     * management based on pages, continue to work for now.
>>> +     */
>>> +    BUILD_BUG_ON(PAGE_SIZE != SZ_4K);
>>> +#endif
>>
>> I think it would be better suited in mm.c or mpu/*.c.
> 
> We do not have mpu/*.c at the moment.

But we are going to get some and most likely a mpu/mm.c, right? If so, I 
don't see why we can't create one right now. Anyway...

 > Also, I am not sure within which > function in mm.c, should this 
change be incorporated.

in arm/mm.c, I could create a new function:

static void __init __maybe_unused build_assertions(void)

> 
> Can we take out this change from the current patch and put it in a later 
> series when we support the lateboot of Xen (ie start_xen() onwards) for 
> MPU ?

I would say no. The BUILD_BUG_ON() is suited here.

> 
>>
>>>       dcache_line_bytes = read_dcache_line_bytes();
>>>         percpu_init_areas();
>>> diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
>>> index bd884664ad..fe4b468cca 100644
>>> --- a/xen/arch/arm/xen.lds.S
>>> +++ b/xen/arch/arm/xen.lds.S
>>> @@ -231,6 +231,12 @@ SECTIONS
>>>    */
>>>   ASSERT(_start == XEN_VIRT_START, "_start != XEN_VIRT_START")
>>>   +/*
>>> + * On MPU based platforms, the starting address is to be provided by 
>>> user.
>>> + * One need to check that it is 4KB aligned.
>>> + */
>>> +ASSERT(IS_ALIGNED(_start,       4096), "starting address is 
>>> misaligned")
>>> +
>>
>> Shouldn't this be protected with #ifdef CONFIG_MPU? 
> yes
>> Also, it would probably be useful to start the exact size in the error 
>> message.
> 
> Do you mean ?
> 
> ASSERT(IS_ALIGNED(_start,       4096), "starting address should be 
> aligned to 4KB")

Yes.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:30:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823686.1237728 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uMj-00064T-6P; Mon, 21 Oct 2024 15:30:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823686.1237728; Mon, 21 Oct 2024 15:30: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 1t2uMj-00064M-3Z; Mon, 21 Oct 2024 15:30:41 +0000
Received: by outflank-mailman (input) for mailman id 823686;
 Mon, 21 Oct 2024 15:30: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=uLLp=RR=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t2uMh-00063k-CO
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:30:39 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20602.outbound.protection.outlook.com
 [2a01:111:f403:2415::602])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6b381d23-8fc1-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:30:37 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by DM4PR12MB8452.namprd12.prod.outlook.com (2603:10b6:8:184::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29; Mon, 21 Oct
 2024 15:30:33 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 15:30: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: 6b381d23-8fc1-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=eah/bllfx7RlOoe+GUUzkmMw93A7NQO4VqBjLxTA02ShBXnzJvM+D4cdJuDTE2gNm3GOAdfm4gprlYoPv/0y9T08aBqoJbif1Rs4O5S6pkt1Wj+Fd4DMWl8yyoG3/K4Yq/wmBtg00ZgXSy7S3/4MJhmvr9IqJbqN3kmRsshp+Bmg9j1+YO8p6eV7j8zNJ8OMgHVnjlRnhj/pctFPJv8nAHIjdfrXvshWo+9+8nCBGoBXTUlCljSuelhI2JsJWrfrdMCNxyl41KDv36f+LdtbuuepEX6QxoPuO9tTkrQANFUrh7p9IGOiCErVmAwiO8zPVql2xiwyC0SlV7jAw4l1kQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=6q4FOnTw5Bp7ynSHNxH1X3HDuB1BVVNOXjtQ+R4dAbY=;
 b=IRdEPaIzTZMbkM1Q9Sc9TjtsCG0rtTCfMrudU55nSmqvmbksVgJ6WWYpsEi3CIORNri64VFjVFlTMmUe4i5pYQDwM6hQqbg8kgYAm4siGWVp+BWWWkSiTEVuHvI7uHajdt47JI/apC6I8/DtPmFZ54Xwu07uTpYhpPTge5wBROQU0bSvNRuHR4A2ewsEhar2nhDJHfaiJX6lt2GxQubATuBTQSaM5wU5MW1yEJ8or2w7A/aNSXrmn2f+En62rIeMceKJlTKOzgFztitSQraRKCV5PjxDGWn7v5EG7bJ9WRfaWzkb0T5HrHlcWsWqDoYX3FYx33rCp4aBNuYIfKsRgA==
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=6q4FOnTw5Bp7ynSHNxH1X3HDuB1BVVNOXjtQ+R4dAbY=;
 b=pzI3y1FokILfQehNMxpF6Bs2BJZJituAGTroRum+yElG518Y7toUpLyH9xsganZas3+IDiEevKQNMiG971WdAUdhenHT7OOjc0oEWoFOhlDG6EweykBUM9vG41kAISqRd1QLs8YM6U20/GkIn3ORDQGyINPqBkfLFI2xeDUHo7s=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
Date: Mon, 21 Oct 2024 16:30:28 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Julien Grall <julien@xen.org>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0058.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:2af::8) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|DM4PR12MB8452:EE_
X-MS-Office365-Filtering-Correlation-Id: 9c99ee77-c41a-40a5-49d1-08dcf1e54db8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?NEcrczAyNUF1NTZSRHV1aEM1ZXhhQVh4b1htYklUUnZVcmY0RGUzTmxPYXhX?=
 =?utf-8?B?QVhXTFRKcmFLUTNtdE00ajQwVk14ZTJHREE1dC9rV2NkZnFocDZqZGxoYzly?=
 =?utf-8?B?U0FRQnprdVhuZDEzQWhVR252cGVKczQ3WkpjUjkzR3BFVS9WWENUbFpVaitH?=
 =?utf-8?B?azg1SVU2Q1RTeDYrWnNiRDdPaXBVamRSc2Z3RFMwd0Z3ellCNjVZNGdqNGJx?=
 =?utf-8?B?R3dZeFo1M2p3ODBxRTNLbVliUmRlOEltaENSUkRuSGdIUk5sQW9XajZYVElm?=
 =?utf-8?B?eEFoV2hYMHVwaU9mS0FpOGVxc2RnUjlEKzNYaUNXajh1K0ErRE9iUnYwd3Zv?=
 =?utf-8?B?YzhmcG1TMnpkYTNjbFNlc1ZDeU5SbVAvS2RxSmhYVjhMbS83RC9oS0FUeUpJ?=
 =?utf-8?B?N3ZtL0xEdUxYcWsyUWRxZXM0ZkRtRko1MmpudXZyc1E2dExCcHVJa3ZqN1dR?=
 =?utf-8?B?QS9jdEF2bmNsYXN6ZHowWnVSTkJybUZ0bG9JUHdPNEo3SUZzTWRUM0lJbFRu?=
 =?utf-8?B?UWFPbTRremdBODkxNU5vMEFnY3FmWm5JeUUwSTlqbnF1MkRGS2lCNDU2SVk3?=
 =?utf-8?B?REVFb2ZDUjBJSTA0cUs5YTg2eE1ualYycy9kTHB0QXQwbWN4dC9Iek9meUdw?=
 =?utf-8?B?L2JxbjZRNlQ5VGZQN0RPZ1BuZjB5TlovbkRDRHlwQ2t0c0hSRDFlMnMycFB0?=
 =?utf-8?B?dkswQ0s0ZktRclRnNWhmWVFscjZGSUZpejBvZmk2OW1ETW84QlRMWEROMGxI?=
 =?utf-8?B?aWZDL09ONHliWWpBejBaTzFTQlVNQkFFLzZFbTM1dCtaRUxjTlFBcnFEZ29F?=
 =?utf-8?B?Uit5V2d1cnFsa1RRRzZmcGowQTdDaGRDOVU4VUZhYlQ3TzJLUGlMTklkTGY1?=
 =?utf-8?B?V1EzWk94M2Ezb2xGRHVWbVhqQ2hvaTV6Wkk4YVU2cnd3b283a0k5VjJFRE9z?=
 =?utf-8?B?U0R4d052T21zd0FPTVhPbWhhNVd6dU40cG53ZGJUNGQ2ckt2WmR4alVyQlFD?=
 =?utf-8?B?WVRmMk1zQnNjY2ZEZU5QV0RTR2IwYU1pL1FOdVZDbkxYU0dtTzg4R2Y5SGRK?=
 =?utf-8?B?QUlQUkQwdlVpbFV6QXZPdmxrK2dWTGtOd0hpa2RxSUhYV2JDbFlKZmJXeDN5?=
 =?utf-8?B?azJDMExXY242N05BSEUwdFR3MFVmOWdkWEhXS00rOVpFZ3RJaWpnd09GZFBw?=
 =?utf-8?B?NnVoM1lSWHl1REIyMzJocmc2Vyswak9IeFlFT0d0THdnTzVXaEdBNmNyanhi?=
 =?utf-8?B?OE9QemFxRDBUT3VhM0h5RHB3YUxscHU0UmpVUjN2YzQyaHl0ZE1DaGd6b0p6?=
 =?utf-8?B?QWp5QkU0bFZIYzlwRUJRVDA4SmU3Y20xMitTTWNsNm9HZUFMTUhwY3lQK3Y1?=
 =?utf-8?B?Tkp1TkkxTVgzL3JpQ210WHFtMGcvY3FOSHBPRlpwbndPMmtPb3NwbEp2T3RC?=
 =?utf-8?B?TUhyUld3WW1NQWJ4R052RnZ0L2FTVmR2NlZZU2xxeUFRN0FhVEo0SktrTWc2?=
 =?utf-8?B?b1AwS2hBK0RIa3JCdUM1WTNoZ0t6STJVWWZGOFVIZlVxK2hPQXVXaGdVOE9o?=
 =?utf-8?B?MURDZ0loc1hKT20yN3NBM0ZMTS9jUEo5ODFORDhEcmg1RHkrRjNsK3BrRkwv?=
 =?utf-8?B?SzN1VkFVOW1KclJuOFhkcVA2cmpMS01QZDZHTzNpa2VHaFFQcGpqdmhST2Rj?=
 =?utf-8?B?bG1aakdtSnhpNWxPSzBrUDZObCtqekd5VXRsZ05FQWlDRzhxNEhuSGdUZ3Y1?=
 =?utf-8?Q?hiJmrY/+I9zPK+ifZ72XuwB0avvyLJco8fEdwgT?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?YUxhY1RjOGcxbTNMVUQxV25jYjRGemtjUG44c0wwMkQ3TnI0dVFab01DODJ1?=
 =?utf-8?B?b1JkblBtUHBRUStWWkloNHdQdXEvN2Q1aTFMNnFqTFQ2QnhOQTA0OGhyUFpD?=
 =?utf-8?B?OVFrM0x3V3c3emIwRDhQY0JMdlV1b0x0R3pUMVAwNzNQdGxnWDhOc3N0bDVz?=
 =?utf-8?B?NEIxMU9uVkVubjBNZW1iTE5YSGhKWTlhYTZQelRMTy9lek9VMlpJSCtiQVFz?=
 =?utf-8?B?cXk5SmJab3lvOXo0TUcxV2lhaTdjY0lHOXpESE9pV1d4OGQvU1I5bDZKS3RD?=
 =?utf-8?B?czE1Q2dBVFZHeXFNd0t5elNtUHN6eW9JLzBBVmorZys1ak9EeHBmMnV5ZmxE?=
 =?utf-8?B?azdzYm5WS0pwYzFrUVFMaklLekVrZDVtMVlSbm1jOFZ5OEsxZk1tOE4zVmhh?=
 =?utf-8?B?RDQ3cGt6ekNhK2NUZVRCbXQvYmw4SnU1V0ZxRk8zQ1Nhbko4bGxEWUFET1lj?=
 =?utf-8?B?MVgzUVAvaEs3Z0grUFNxWnF6U3RweHR2bUFra293a3pzcmhVQkNlZC9uSWM3?=
 =?utf-8?B?V3djYkFWN08yVkFXVDNKQTllYkpGcHpMM2tLcy9UMG1wZ3V2eEt3RHUwdXdL?=
 =?utf-8?B?dThoL2cyRTVGcGNkUDhMSDNjTktacGUxbTUyRk8rZlRETEU3eFB0bjh3bm5n?=
 =?utf-8?B?czVOcEw4b3FYaExWQkJlUVVBT1dUcTFYOW5GSTR1RW1rOUtLdUYvek0rVTAz?=
 =?utf-8?B?a2F2VUFncTlrTktrc0cyM21hTDArZngrRGJOSkZxdmRkbzVWemtVaitUTWpD?=
 =?utf-8?B?dDE5VlpRTVIva0lSWFFYaXQ3VlNvbkI4UkNFaFJmY1RCYTdrdnR1blFtR2xI?=
 =?utf-8?B?ZFZicnBuVEpKNy9JR1g2RlhJdEZDbXJlMVB5Q0FVeVhsV3V6ZFFGWTd3clNF?=
 =?utf-8?B?aHFTOVQ1Z1l0L01UMVoxSWxNdkhzdGoycmVzZDgzQnBhdWt4VVdhV1VKNWlj?=
 =?utf-8?B?dXRTNkdseENmYzYyenAyQmgwTkFXYmZ5anZkaHd6V0MyTmVGTGY2TkhsU29D?=
 =?utf-8?B?REFyVmdRbkdDOTdNOXppcVBhMzZINnZ5VHBYK0Q2UmxIR3NBczRJTlM3bDYz?=
 =?utf-8?B?MFhjUXlXRVROUXRERlNPNGJ4Nmt5azFUbXRzL2lTRjVBMTFZbE1CS0hESndt?=
 =?utf-8?B?SEc2T1dHQ1hNR3liYVl1SFZUdmNNUVRSbGFCUmp3U0RXWXhaQmNpSEYreW9L?=
 =?utf-8?B?ei96b0RLaTZTZWZELzNmOThqV3FXSmlrRTFyMlJjQkJPdC9DK29XcCtNUVB4?=
 =?utf-8?B?ZWhYMnd5V2tYZ3BTc3pKK0hqUG1FZTljbktySTRjaUxtRUtlcTlqZEN4dmlB?=
 =?utf-8?B?OEF5anVMOEYxa1Iza1ZBb1RRcWFaSFlEekFoODZyd0Y3UXBQRi8zeFBYelFi?=
 =?utf-8?B?YUJTK3RoREZrNkQ4cnVZVVV3YUxPM3lxN2plTFZYQW9MbkcrUGIvQzlkQnpR?=
 =?utf-8?B?citCa0pJSlljZjcwVmM5Tmlldy9BakZQV3k1dW1oNlRaUGxkcjRhNDhCZmFm?=
 =?utf-8?B?QnEwZHNzUnN0OVcwWFBCeXFWZDdvM1cvUVNwd3ZuMml5cHFTYWZxbTJYZGpw?=
 =?utf-8?B?VmV0S2RLZVZLZnU2TXo4WSsvM3dsMC9EUDlobmRYRDRyRTNjVjBxU0hMbXF0?=
 =?utf-8?B?cWNCTmx4Wks5dyt4OWdtTDY0NEhlalhRQm9JUWkvRDlpZ0gxSHZhWmVyRC84?=
 =?utf-8?B?VlZGTitiUVFWWGZIRDlwRjEyaWtxTEdxdTZGLzFIRThWRlo0WTdTdVJYNHdQ?=
 =?utf-8?B?cEhlOUo2ZlhNSWV2RUZVWUZYa1dhUnVXRGZaSkpBbXVlblRmaWtTZ1dzS1dD?=
 =?utf-8?B?YXdZTU5SNC9zVGR3MHRodEsyOEp6Q2ZWamNTM3JkemhpcmtFNm1ieEhKWUQz?=
 =?utf-8?B?RzdtblIyUk95Q0JCTS85cjliMmMxVnhGLzFUVWhnclpyYWZUb0o0Tm9neDBZ?=
 =?utf-8?B?WjlycTByb041VHRQd0JxS0UxU0VWL2RueWpWUEJoa1VWcWFPYWZDVTREa0pO?=
 =?utf-8?B?MDc5SCtDYjRpV2hWcnc4cld3VytXWnUrSlovejZWaFp0ZEdoNHpHV0JOdVl0?=
 =?utf-8?B?eFVLZUkwWlBoRGtXTzJQVjdHMHZaYktHVWo3emxNSEkvbTZMcWdPeUdtWito?=
 =?utf-8?Q?JFYb8rbenc9wnHJNleE3KBQBh?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9c99ee77-c41a-40a5-49d1-08dcf1e54db8
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 15:30:33.5870
 (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: VZsuDn0P1up8xsv2P9/NtAjn2OOiTcHJJD0y6mEouMb9iKmUHHM4L+eUrKS8BcO/qxhdE4G4mgsiUUU5MepOtQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8452


On 18/10/2024 23:25, Julien Grall wrote:
> Hi,
Hi Julien,
>
> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>> After the regions have been created, now we enable the MPU. For this 
>> we disable
>> the background region so that the new memory map created for the 
>> regions take
>> effect. Also, we treat all RW regions as non executable and the data 
>> cache is
>> enabled.
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>> ---
>> Changes from :-
>>
>> v2 - 1. Extracted from the previous patch into a new one.
>>
>> 2. Disabled background region.
>>
>>   xen/arch/arm/arm64/mpu/head.S                | 29 ++++++++++++++++++--
>>   xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  3 ++
>>   2 files changed, 30 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/arch/arm/arm64/mpu/head.S 
>> b/xen/arch/arm/arm64/mpu/head.S
>> index 4a21bc815c..e354f4552b 100644
>> --- a/xen/arch/arm/arm64/mpu/head.S
>> +++ b/xen/arch/arm/arm64/mpu/head.S
>> @@ -61,6 +61,30 @@
>>       add \xb, \xb, x20       /* x20 - Phys offset */
>>   .endm
>>   +/*
>> + * Enable EL2 MPU and data cache
>> + * If the Background region is enabled, then the MPU uses the 
>> default memory
>> + * map as the Background region for generating the memory
>> + * attributes when MPU is disabled.
>> + * Since the default memory map of the Armv8-R AArch64 architecture is
>> + * IMPLEMENTATION DEFINED, we intend to turn off the Background 
>> region here.
>> + *
>> + * Clobbers x0
>> + *
>> + */
>> +FUNC_LOCAL(enable_mpu)
>> +    mrs   x0, SCTLR_EL2
>> +    bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>> +    orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>> +    orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>> +    orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>
> NIT: Can't we have a single "orr" instruction to set all the flags?
Yes, I will change this.
>
>> +    dsb   sy
>
> I still question this use of "dsb sy"...

Actually I kept this to ensure that all outstanding memory access are 
completed before MPU is enabled.

However, prepare_xen_region() is invoked before this and it has a 'dsb 
sy' at the end.

So we can drop this barrier.

- Ayan

>
>> +    msr   SCTLR_EL2, x0
>> +    isb
>> +
>> +    ret
>> +END(enable_mpu)
>> +
>>   /*
>>    * Maps the various sections of Xen (described in xen.lds.S) as 
>> different MPU
>>    * regions.
>> @@ -68,10 +92,11 @@
>>    * Inputs:
>>    *   lr : Address to return to.
>>    *
>> - * Clobbers x0 - x5
>> + * Clobbers x0 - x6
>>    *
>>    */
>>   FUNC(enable_boot_cpu_mm)
>> +    mov   x6, lr
>>         /* Check if the number of regions exceeded the count 
>> specified in MPUIR_EL2 */
>>       mrs   x5, MPUIR_EL2
>> @@ -113,7 +138,7 @@ FUNC(enable_boot_cpu_mm)
>>       beq 5f
>>       prepare_xen_region x0, x1, x2, x3, x4, x5
>>   -5:
>> +5:  mov   lr, x6
>>       ret
>>     fail:
>> diff --git a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h 
>> b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
>> index b0c31a58ec..3769d23c80 100644
>> --- a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
>> +++ b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
>> @@ -15,6 +15,9 @@
>>   /* MPU Protection Region Selection Register encode */
>>   #define PRSELR_EL2  S3_4_C6_C2_1
>>   +/* Backgroud region enable/disable */
>> +#define SCTLR_ELx_BR    BIT(17, UL)
>> +
>>   #endif /* __ASM_ARM_ARM64_MPU_SYSREGS_H */
>>     /*
>
> Cheers,
>
>


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:33:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:33:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823700.1237737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uPS-0000vE-IH; Mon, 21 Oct 2024 15:33:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823700.1237737; Mon, 21 Oct 2024 15:33: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 1t2uPS-0000v7-FY; Mon, 21 Oct 2024 15:33:30 +0000
Received: by outflank-mailman (input) for mailman id 823700;
 Mon, 21 Oct 2024 15:33:29 +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 1t2uPR-0000uz-5n
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:33:29 +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 1t2uPQ-0003B0-Uy; Mon, 21 Oct 2024 15:33:28 +0000
Received: from [2a02:8012:3a1:0:827:16ef:abff:1cc1]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t2uPQ-0002EH-PQ; Mon, 21 Oct 2024 15:33: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=VFmjguUQFQAf9lWczfktOSWTuA2+Vv43VsS79pZlLrY=; b=XLMG1VpmrYnATnwNWBcjcNDD4Z
	mz0la7ntKxCEc3z+EpsqHvYDUQ6eDW1QzzQ3FRkCp4o6T8kKfQfd1XNhohFA58zAIiQ0XCDG4r+JW
	moS+XdCJ75LbWpcryE3AovqH96XC06NTqdkPj/6lYE21JaehlhW9ne9HqIkseCPRrD34=;
Message-ID: <832d5f2c-63d6-4c00-be8f-1b44ca2a91d9@xen.org>
Date: Mon, 21 Oct 2024 16:33:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-5-ayan.kumar.halder@amd.com>
 <870059bd-d2af-4100-88be-9f6eb4facbe9@xen.org>
 <d7918da2-1ea7-4036-ab12-89afc6deb966@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <d7918da2-1ea7-4036-ab12-89afc6deb966@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Ayan,

On 21/10/2024 16:07, Ayan Kumar Halder wrote:
> 
> On 18/10/2024 23:13, Julien Grall wrote:
>> Hi Ayan,
>>> +.endm
>>> +
>>> +/*
>>> + * Maps the various sections of Xen (described in xen.lds.S) as 
>>> different MPU
>>> + * regions.
>>> + *
>>> + * Inputs:
>>> + *   lr : Address to return to.
>>> + *
>>> + * Clobbers x0 - x5
>>> + *
>>> + */
>>> +FUNC(enable_boot_cpu_mm)
>>> +
>>> +    /* Check if the number of regions exceeded the count specified 
>>> in MPUIR_EL2 */
>>
>> AFAIU, this doesn't match what the instruction is doing below.
> Sorry, this needs to be removed.
>>
>>> +    mrs   x5, MPUIR_EL2
>>> +
>>> +    /* x0: region sel */
>>> +    mov   x0, xzr
>>> +    /* Xen text section. */
>>> +    load_paddr x1, _stext
>>> +    load_paddr x2, _etext
>>> +    cmp x1, x2
>>> +    beq 1f
>>
>> This check seems to be excessive... I can't think of a reason why 
>> there would be no text at all... Same for a lot of the checks below.
> Is it ok if we have this excess check ? The downsides are only a small 
> increase in code size and boot time. Otherwise, I need to justify why we 
> have this checks in some places, but not in others.

How about moving the check in prepare_xen_region? This should solve the 
concerns on both the current approach and my proposed approach.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:36:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:36:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823706.1237747 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uSX-0001nZ-WA; Mon, 21 Oct 2024 15:36:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823706.1237747; Mon, 21 Oct 2024 15:36: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 1t2uSX-0001nS-TU; Mon, 21 Oct 2024 15:36:41 +0000
Received: by outflank-mailman (input) for mailman id 823706;
 Mon, 21 Oct 2024 15:36: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 1t2uSW-0001nM-Rs
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:36: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 1t2uSW-0003DM-L3; Mon, 21 Oct 2024 15:36:40 +0000
Received: from [2a02:8012:3a1:0:827:16ef:abff:1cc1]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t2uSW-0002R6-Fp; Mon, 21 Oct 2024 15:36: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=nLueNOYoLFNP+jViI1e8HCR/HUdQAOWaDBOX/I1ywnc=; b=YGUphi9WOkLh8MP65pIsIIddW9
	WVaAFePpmdhwyui7yX9fZX6xlYAZ/MTDJNzWFu4PXi5ZOOvPBqXyYTiQ4YkeRVunNKG4pPNgEm8m/
	ZWGqIrxhV+fONlEZqvhcY0hodG5QxRONmwKOLpZtAuGzvSt9f3WrnghCXvRlNt0LPbp0=;
Message-ID: <8983387d-79f7-49e3-bd1b-8c401e01eeb6@xen.org>
Date: Mon, 21 Oct 2024 16:36:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Ayan,

On 21/10/2024 16:30, Ayan Kumar Halder wrote:
> 
> On 18/10/2024 23:25, Julien Grall wrote:
>> Hi,
> Hi Julien,
>>
>> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>>> After the regions have been created, now we enable the MPU. For this 
>>> we disable
>>> the background region so that the new memory map created for the 
>>> regions take
>>> effect. Also, we treat all RW regions as non executable and the data 
>>> cache is
>>> enabled.
>>>
>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>> ---
>>> Changes from :-
>>>
>>> v2 - 1. Extracted from the previous patch into a new one.
>>>
>>> 2. Disabled background region.
>>>
>>>   xen/arch/arm/arm64/mpu/head.S                | 29 ++++++++++++++++++--
>>>   xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  3 ++
>>>   2 files changed, 30 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/ 
>>> head.S
>>> index 4a21bc815c..e354f4552b 100644
>>> --- a/xen/arch/arm/arm64/mpu/head.S
>>> +++ b/xen/arch/arm/arm64/mpu/head.S
>>> @@ -61,6 +61,30 @@
>>>       add \xb, \xb, x20       /* x20 - Phys offset */
>>>   .endm
>>>   +/*
>>> + * Enable EL2 MPU and data cache
>>> + * If the Background region is enabled, then the MPU uses the 
>>> default memory
>>> + * map as the Background region for generating the memory
>>> + * attributes when MPU is disabled.
>>> + * Since the default memory map of the Armv8-R AArch64 architecture is
>>> + * IMPLEMENTATION DEFINED, we intend to turn off the Background 
>>> region here.
>>> + *
>>> + * Clobbers x0
>>> + *
>>> + */
>>> +FUNC_LOCAL(enable_mpu)
>>> +    mrs   x0, SCTLR_EL2
>>> +    bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>>> +    orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>> +    orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>> +    orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>
>> NIT: Can't we have a single "orr" instruction to set all the flags?
> Yes, I will change this.
>>
>>> +    dsb   sy
>>
>> I still question this use of "dsb sy"...
> 
> Actually I kept this to ensure that all outstanding memory access are 
> completed before MPU is enabled.

I don't mind to keep it for this reason so long it is documented.

Cheers,


-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:38:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:38:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823715.1237757 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uUB-0004sb-DW; Mon, 21 Oct 2024 15:38:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823715.1237757; Mon, 21 Oct 2024 15:38: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 1t2uUB-0004sU-B1; Mon, 21 Oct 2024 15:38:23 +0000
Received: by outflank-mailman (input) for mailman id 823715;
 Mon, 21 Oct 2024 15: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=uLLp=RR=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t2uU9-0004sM-T2
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:38:21 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on2060b.outbound.protection.outlook.com
 [2a01:111:f403:2009::60b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ecfe2b9-8fc2-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:38:19 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by DM4PR12MB8452.namprd12.prod.outlook.com (2603:10b6:8:184::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29; Mon, 21 Oct
 2024 15:38:16 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 15:38: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: 7ecfe2b9-8fc2-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=dacL7WIEPgpJFuY2Jhncd2kL4IPw7yoEWPT080Poh3SIZ+UqwpGrNq55QdZeFHMiwOiR0FK7nvzUJd7+muQ2kKxu6QrrHph/klCMwe0eG8QzX6JagTTc6SMqpCqw+JTlkDtLqbIr4mpHLvbJAg0wCMja5sNstjr4jN/TMOcWG6hDVM3zC/wsqubQokTTdye5NqKKo7kOii9y7sRi/Ehh65X3j/ctnWmjjto0uB6lnGX5TmYSnEoElZOk1Yr9mn0dXo7+dd0Zk8Grtur5p3Ysgju3ZDRJT8OBIhbbrWmqk8821OH6QvwLA/9VMLDfoJbMMs7KOoKrZ+OD2LCckDSzRQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=FX6YhEdY+0Axj5TvJVj3Q7SUU4UyfU0JGkiPPwqbbM8=;
 b=RK+IgUX2ulhsZ4Pe6xEMFFVPbRTh0NdBw0vSIyvNLTeD+XnBb+rBpoSDHfA9NiNmFD66BkOy5Yn+kZnLgg4XUts9qVercmXp8yTrSTBk+096xn4hurSq2B0ENInDLBdDPqHp1BajC1iVmKl+5qrZvxT4SeZpvAKH112SCDsPFl85E93WP8Xt1efp8FvTrnMCOhqHcSQSd2A9cVu3CSffKj+VjlNJo+VuC6QuiaMQHfsKLnvMAXCNeU4G1vSBRJjjc/Of0gRBl1fv9xJQfrpxezfdALAwc7RS5MyHBAmsQhuDKzENEbny2X+MRTF2spFI6FpIcOObqjyCU4NKdwIDRQ==
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=FX6YhEdY+0Axj5TvJVj3Q7SUU4UyfU0JGkiPPwqbbM8=;
 b=zrBrE+19qoJrerJsdiIrnqfWEN926YVsYjUzjkmJ55FfTCANR4ublAupV7cGq5VXmFlEkvTGnfjkXbwQSjk+tqeW2CiT23wBfKBIzCvKWrGe0bfmDA+e2u+a2+MW2UGAQJf/vekc3TXk2xvuiTQg/15ZDJNyG80gbUQrsLc1hac=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <810ef39a-8af8-416d-bf42-e6b0eebd1f00@amd.com>
Date: Mon, 21 Oct 2024 16:38:11 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
Content-Language: en-GB
To: Julien Grall <julien@xen.org>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-2-ayan.kumar.halder@amd.com>
 <7ee1579b-f1e8-4dd4-8540-e6c0858c6999@xen.org>
 <f5b875e0-56e6-451d-a736-f2cc33cabae0@amd.com>
 <3ea2fdeb-faac-4766-800f-917ea8af1063@xen.org>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <3ea2fdeb-faac-4766-800f-917ea8af1063@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P265CA0249.GBRP265.PROD.OUTLOOK.COM
 (2603:10a6:600:350::14) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|DM4PR12MB8452:EE_
X-MS-Office365-Filtering-Correlation-Id: 320a935e-a07f-4cab-19d6-08dcf1e661a5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RzltTWloYmhKNVRzUHVIWWgyWXBJZUlmTzdmQzNoQmJkNWJVUiszWGFydFdG?=
 =?utf-8?B?TUVuamZRWG84emZzUUNoM3RzK2dVRGFMdmRRNnowYVIyRnF2aGVSUzRCWE80?=
 =?utf-8?B?bmN3a3Y1Vjhrei94Q3ZYWHphNzAwdG9hd0Zad2creGVMKzRvZDR4MG9xTGIw?=
 =?utf-8?B?UDhCaVlBMSs4WDZzbjVyenlDbWlZN0kxR2E3NDg3UUtFMHpJdzkvRXl4K2FN?=
 =?utf-8?B?M200QmFVdVVFQWZJTzVUSGFKN2M4MmdDNUxTVldvakFNQmgwZUYyZjdPbjBZ?=
 =?utf-8?B?S0sxSUFFZW94ZVJ3OGw5ZDRQbEtBZlFneldvVzFhb090dnZnNDBYeG8zR09Q?=
 =?utf-8?B?dzhzcmM3eDYvMG0xT2REUTJyTUVnclVydnFlQUZDS3BxWUtMSEVXWmpiK24x?=
 =?utf-8?B?dUFaZkhCdmk3WkF6VWRtSXQvMmxtc0RCSFo1RlpKTmk0SXpLUHhIYk1penRk?=
 =?utf-8?B?ZkJ6QThMQmQzN3c5REFHQjVaYjhnMm5Ob1hPNzVOMjYwWEgxdEZYcVlsZTdH?=
 =?utf-8?B?Z2lsYUhMOXNzdFR6b3J4dDBwUVRaSjA1UzdYT1hCd1ZFdXFKM0dvMzBVcEs5?=
 =?utf-8?B?Mi9tQ1B0djRFTlNLeDcwaC84bzB5SnVXNGNHMS9Rc0hHNnlhbmRvK0VrTGtN?=
 =?utf-8?B?QndKbjBiK2I1TytudXE3TzArUGRrU0QwVWxhZE40WlNFbXhwYjUyRlhlUmFy?=
 =?utf-8?B?UE5PeG56c3lTaW8wNXQzMnRtK2pyeDY0QmtIOER6USsxWXQ2ZkJxZGYzdGhi?=
 =?utf-8?B?RE01S3M1dEpyWjBvb2RsVXoyRzJnK3l1TXUySHpROEVYTWdKcU5RbEhqL3Bm?=
 =?utf-8?B?MitSdHJ6dnNnUXFZd2UxQzNSVXFhS0FvWTk5MHVhVzdYdWQ2K1A4OTNmS1J5?=
 =?utf-8?B?cGY3dFFFcytYMm1EVjZZcncyZWNKZkhhdFcwb2x1OVJlblkzbU1PNHVrSk1E?=
 =?utf-8?B?THlaODZwaE9FTWVEWHR1MXlDU3pJcFB1RGJFM1JFSzdyS09TYVBra1YzVmxl?=
 =?utf-8?B?TnFjK1o2NCtnOVNveWg0cGpCbGRGWWtxbmxEUCtKUy9OVkE0YWIyNEtWcVZN?=
 =?utf-8?B?VHY1cG84Zm5VQVRzYXFaMUpqWFRnMkw2RE1GdGxlYUhkcTBiVW4zajJXbTlK?=
 =?utf-8?B?d0ZoSEN5SERlb2Jud21va2FEOC80dzVtaTQxekJKcGlxaWxwOXd6czdKNXFv?=
 =?utf-8?B?eXRybVh1Q0k3ZkNSR0NLOUQ1dEVZZnpFajdDSERoMWl1eTROaTR4dXE1VVRU?=
 =?utf-8?B?YTk2bHZqOXdaR0tVOWpxMWxTMC9Pdy92bEFPSDRwbTJLZCt4ZVVuR2haZGRx?=
 =?utf-8?B?WTRhNGpLKzkyR3N3a2VkQXVkVEV6VG5ySVJWNEpPVUJWYVkrRStCaEsyUDVs?=
 =?utf-8?B?bC80VWk1d1JKaVBnaEl3VmU1cHhlNVExTUNWZTF3N1JqdVpuRk9XTEdmdC9F?=
 =?utf-8?B?MkhMN05HZ0ZZZDVtZDJ3Vk5KR28vclNKN1RUVDU3OFhHTnYrQU9tVE52YWZN?=
 =?utf-8?B?KzEyaEdqdXBwTld2OUZuc1BYRnVjMUJmZW9OQ1d0cWc3VWtrdzRvd3A5SWJy?=
 =?utf-8?B?cjdlenYxQndOczRjT1ovL0R0UDN0MG9uKzZyYko1Q28zRHlvc2NhWjREZkZ0?=
 =?utf-8?B?RDliV2JWajlUdTNiNjBWend1VUZndlNOQkJlUzVpaWNsOEF3bUt3Y1gwWW1W?=
 =?utf-8?B?clhQWVBYZG9UTEJKVitsYkFpL2w1MGM3Rm1MVXdBSjdhTWs0bUJMRHlmZ0Fi?=
 =?utf-8?Q?NdjXO1RyF5cWDDmfYIa0or9eVk1m7ngW6bBATh6?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?cHlMOEdMWkdjaFE0cVVtZWNxeUVDckRmdlhVbjJ3ZjBONkN1M0Rrd2g4Z0F0?=
 =?utf-8?B?WEZDL0tEWStCNnltemdLV0RyTHI0SURCV1ZaMnJkUjdoRnhNQ1kwMmhJSVc2?=
 =?utf-8?B?bGQvczBJYWM5Qndjamg4Vmtsb2RFdWtYUnlHM3RiT2FGeHh5QVY3Ni9RdFR3?=
 =?utf-8?B?OWF1VEdKazhhTXBFKzh3TjZtTFlaVXB0NGVRSlczalA2NjdJTXViQmUzY2tk?=
 =?utf-8?B?V0dHcUlBYnFGRUhqSEhYZGt2Q0VzMEdBdUtGVDl2ODJhMFZWUCtlUy9YWkk1?=
 =?utf-8?B?ZDVBS3IvaHVmUWhlb3RSbEZwR2R0MFcyd2lIT0xLT3oycUhLNTFpazZRM1dO?=
 =?utf-8?B?VW5IVVRYVG5nWWFaekpXZkJYV1pTYlZwalZZVHozNUtjWDBlQjl2V3Y5Ulds?=
 =?utf-8?B?NE5yMUVxVC9YQmRvU0VBenBQZ2ZtdkJCc3ExVmlDVFFDeStJWUhidkFJMHhK?=
 =?utf-8?B?RXFUb09kUGZWV2lNVUhkVkw5RTkzMHZoR3M4YmZ5b1FhZU1rK3JsdHk5ME4y?=
 =?utf-8?B?MnA4T3VkMFBGZUg4QUkxMC8rRFI3Qm93VnpqalFWQ3RkWEVDbE8rVEZ6OG12?=
 =?utf-8?B?YlpXZXMzR28yVXBRZGcxZ1BIcEgreEFheVp3ZHdhQWprOVhwZlVLR3dsWXM0?=
 =?utf-8?B?NnhSbHM5V0t4S1dXTUVwRjh5L09vZHBML2U2QUdiRU9uK20xS09PVlJXbDlN?=
 =?utf-8?B?YUQ2UHV0NmU0cVJ0T09NSGZwd1hvc3RJelN0NTFubFoyY1lSUExxSTlXbFlP?=
 =?utf-8?B?NFpEUUd4a2NzSFpEbnk1dlBVcU9uM0FqNmlScXNvV0s4eVMrc29VNzBSSDI0?=
 =?utf-8?B?NTNDMmo0SWNmS2hkQkJ3UXdzcnE0TnRRdDN2ZzUxRUcvYmdjZ3pLN0Z0L1ZX?=
 =?utf-8?B?ektBTjFOMHZGcHh1UUR2dTg0RUk4RUlIVVl6YTZObEx5anpVeTBxNVJUb3U4?=
 =?utf-8?B?QUdZR3pKNVZWRzFNYzI3cjhXdDhQR0pnN0ZnNEdjRjFhTGZDL2cxK1cySk5L?=
 =?utf-8?B?VXIrblhEdG9iL3FnNThGR3d0UGo2MHdPQndieUJBL0ozVVB6QnVlMWR1VFE0?=
 =?utf-8?B?dTlxOGZsbGx3bHQwU0JFRmNQSUZiV3pnUmpPTjJ0N1N4Mk4zWGN1b08zR1FF?=
 =?utf-8?B?bmVyUnlSK3R3UUJkZnZBVjBZdG4wdGE0RkNzcWkrS25nQ2lLM1NQOC9SM1di?=
 =?utf-8?B?b3lCYURJUUxrZ0FaSXlYSkUxSDc3NmViM1pMYXR0dUE1dmF4ZkhMbkY0UFlU?=
 =?utf-8?B?VGNJNE9Zak1EcVpDZFlxMVJEUmo5anM3VTFUbWxuVTJieXhnVXBnS3VCQmx5?=
 =?utf-8?B?TUNKdlc1bVdnelgvbmNiSjN0QnlLMVVJR003bk1YWS9BMTZRNlFNVmh4UDZG?=
 =?utf-8?B?eEs2VnlwSHJBRDBzcXVZTVNNYVJjZUVYRHNOeFdRZWR6MkE0RWc4Z3FqSEJY?=
 =?utf-8?B?a3NYM1R4SVBDSkxsTHNnRWIzN2IxQ0lENEw0a09nZEFhN2JGTXBRbnhmMjZs?=
 =?utf-8?B?cy9yUEVacXQ1U2NqdG50VFVCUUhTK1NLaWhwZEJmTjArSG5YLytIek1MWU9j?=
 =?utf-8?B?cGkxcWpnUGFsQ1FxcG5LbnZjd3kvZDdteGZnSUpoWjA0RkNPOXBhNkgvYXNl?=
 =?utf-8?B?SjcxaUdwN2tYdnZNTnpyeHJ4bDloclMyaTlTZUc1Y1dpOWRFanQrcmN5dCtu?=
 =?utf-8?B?R2xZM3hwMHM4Nk8xWnRGVG9EaGM1ZWV2UTJRWVVIUE1HL3lNNUJ5akpXT0pH?=
 =?utf-8?B?TmoyaFNkcmhreS9IUm9CNUFFVUFYdDhRd2swVEhBakRaZUlCYzZoWEFzaDNC?=
 =?utf-8?B?a2JabE4vdzJsRk9ySjIyNjRXUzMvZkgvMXJHS0h5ejZBT0ZOeWJnT1l2RVpY?=
 =?utf-8?B?cnptakEydGUwTUtBaCt5WlN5QTJiUURBV0czM0dpVE5HUUxnYnY1UWdveUZQ?=
 =?utf-8?B?aVVlVVVzb2RoWThEZFF4T2wxWE5DQVRDUnQwNHRxTS9XL3pBZm40RkdxN2JI?=
 =?utf-8?B?cFNYREQ3MlRMMUxKZWgzdTRtQmtvWllJVXY2MVVVbVB0WTc1N2xIdFN3RXBa?=
 =?utf-8?B?V1RENit0R3piUUtaMWN5TklmcEdZb1pMME5GNzloWUJEd2FRV1FCOUY0ZndD?=
 =?utf-8?Q?OVsZr1/LVXukeF3K20VeOk9+P?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 320a935e-a07f-4cab-19d6-08dcf1e661a5
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 15:38:16.5228
 (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: 4uGWuKCwnzkLArVJpcOEsOfj310m881fqhhhVurODmktj/KCgf6rutAbnwY3T8O4xAGJi2/DwbEn+h/MY55bew==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB8452


On 21/10/2024 16:24, Julien Grall wrote:
> Hi Ayan,
Hi Julien,
>
> On 21/10/2024 12:12, Ayan Kumar Halder wrote:
>>
>> On 18/10/2024 14:41, Julien Grall wrote:
>>> Hi Ayan,
>> Hi Julien,
>>>
>>> On 10/10/2024 15:03, Ayan Kumar Halder wrote:
>>>> If the BSS section is empty, then the function can just return.
>>>
>>> This is more than "can", right? If we don't do it, we will end up to 
>>> zero outside of BSS. This could be critical data...
>> s/can just/should
>>>
>>> Also, I am tempted to suggest to add a Fixes tag because even if it 
>>> is unlikely BSS will be zero in the current Xen, it is also not 
>>> unlikely.
>>>
>>> The tag would be:
>>>
>>> Fixes: dac84b66cc9a ("xen: arm64: initial build + config changes, 
>>> start of day code")
>> Ack.
>>>
>>>>
>>>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>>>
>>> I saw the discussion. I don't have a strong opinion on the exact 
>>> approach choosen for zeroing. With the commit message updated:
>>>
>>> Acked-by: Julien Grall <jgrall@amazon.com>
>>
>> I propose that this patch to be committed. The changes to the commit 
>> message can be done on commit.
>>
>>>
>>>> ---
>>>> Changes from :-
>>>>
>>>> v1..v2 - New patch introduced in v3.
>>>>
>>>>   xen/arch/arm/arm64/head.S | 2 ++
>>>
>>> Don't we need a similar change on the arm32 code?
>>
>> I haven't looked at the arm32 code. My idea is to get the earlyboot 
>> (ie the asm part) of Xen working on R82 and then do the similar 
>> changes for R52 (ie arm32).
>
> AFAIU, this change is not related to the MPU. So I would rather prefer 
> if we keep this change in sync. I am happy to send a patch for it if 
> you don't have time.

No worries, I can do it.

I will include the arm32 changes in this patch. So that we have a single 
patch covering the issue for both arm64 and arm32.

- Ayan



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:43:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:43:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823725.1237768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uZT-0006Nv-2D; Mon, 21 Oct 2024 15:43:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823725.1237768; Mon, 21 Oct 2024 15: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 1t2uZS-0006No-Un; Mon, 21 Oct 2024 15:43:50 +0000
Received: by outflank-mailman (input) for mailman id 823725;
 Mon, 21 Oct 2024 15:43: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2uZR-0006Ni-IC
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:43:49 +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 435a0f23-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:43:48 +0200 (CEST)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-37d4ac91d97so4586960f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:43:48 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571ebdsm219979866b.148.2024.10.21.08.43.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 08:43:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 435a0f23-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729525427; x=1730130227; 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=v8yngkW2UikPso3VZPtXlF+DG/JIY0munR4mEBLbNHk=;
        b=HZoFxTlaGfFLS5thXYTNTqMrK9mj9NXxQjRF9pZhsO6cNLS/y9isyLIXhcNJyvqyiV
         ClYquvNrdNx0I1BnvoXYaNoHFTNjAwde7lJ+vNP8aFDQ/2Mtx0NoFFFS7asy6FgWE8Wt
         JwB3i0BW5jwe8r0w/oBT1ORs3neVcN8uRxZU4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525427; x=1730130227;
        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=v8yngkW2UikPso3VZPtXlF+DG/JIY0munR4mEBLbNHk=;
        b=L776ReoGBm6Rku+ja5dPgTumrLlOTdztYUDXWQzl9YhFkxmoql9S7qsujLVuiH5l7H
         F+RExWIqV0z3mIVlufmUZiXgFxIGfzbCJWE38r9Bp6gsZJfcmcfGwsIyTzejXPpLaMNU
         MUAbE4Ddb4+/q7qPhVnNXnOoM2LpMCGVHU6LfxVsczz3jUBQ7qFFv/xsH1GuhGmRMty9
         ZyVi87ttBt5lH1YOCsBQR3BsN64R0IM8eTm6whGoWDkAw0pemDVkTmEKjOYlqwGRdT0h
         HUPcZfjanJtg5tYkB3ArGp+9aVPbY6LWB5myFjpdijUQtrbw6G/FAoN7tWKpm02OGVeV
         TInA==
X-Gm-Message-State: AOJu0YzT9ovN0j05N9yVnJrN5gWUthIzC5CXLf0WbSmhmK8OoYPEwD0P
	sltJd4kXCw3vDB5qjPdjr1QXJijJd/xyIoXfn7oKUg19Xp8Vtl4RK9XC844H3UL6OFvtVs9cpFI
	8
X-Google-Smtp-Source: AGHT+IGN45fuQwADc5I6mpYGr9hYT4MjvXsxqM37Ym9s50L1iq+pVdqI12hXeXl/+grmXTD4YzQsmg==
X-Received: by 2002:a5d:468d:0:b0:37d:4cf9:e08b with SMTP id ffacd0b85a97d-37eab4d1253mr11007736f8f.31.1729525427091;
        Mon, 21 Oct 2024 08:43:47 -0700 (PDT)
Message-ID: <5d02722a-eccd-43f9-9d6e-2e845d9757d9@citrix.com>
Date: Mon, 21 Oct 2024 16:43:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] CI: Add {adl,zen3p}-pvshim-* tests
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
 <20241021143539.3898995-4-andrew.cooper3@citrix.com>
 <78116f34-2448-4b08-9eb3-50d70a18074e@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <78116f34-2448-4b08-9eb3-50d70a18074e@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 3:41 pm, Andrew Cooper wrote:
> On 21/10/2024 3:35 pm, Andrew Cooper wrote:
>> GitlabCI has no testing of Xen's PVH entrypoint.  Fix this.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
>> CC: Anthony PERARD <anthony.perard@vates.tech>
>> CC: Stefano Stabellini <sstabellini@kernel.org>
>> CC: Michal Orzel <michal.orzel@amd.com>
>> CC: Doug Goldstein <cardoe@cardoe.com>
>>
>> OSSTest (which is disappearing imminently) found a pvshim bug in the
>> hyperlaunch series, and I found a second shortly after while trying to take
>> more of the series.
>>
>> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505518838
>> ---
>>  automation/gitlab-ci/test.yaml     | 16 ++++++++++++++++
>>  automation/scripts/qubes-x86-64.sh | 10 ++++++++--
>>  2 files changed, 24 insertions(+), 2 deletions(-)
>>
>> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
>> index b27c2be17487..e76a37bef32d 100644
>> --- a/automation/gitlab-ci/test.yaml
>> +++ b/automation/gitlab-ci/test.yaml
>> @@ -240,6 +240,14 @@ adl-pci-hvm-x86-64-gcc-debug:
>>      - *x86-64-test-needs
>>      - alpine-3.18-gcc-debug
>>  
>> +adl-pvshim-x86-64-gcc-debug:
>> +  extends: .adl-x86-64
>> +  script:
>> +    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
>> +  needs:
>> +    - *x86-64-test-needs
>> +    - alpine-3.18-gcc-debug
>> +
>>  zen3p-smoke-x86-64-gcc-debug:
>>    extends: .zen3p-x86-64
>>    script:
>> @@ -272,6 +280,14 @@ zen3p-pci-hvm-x86-64-gcc-debug:
>>      - *x86-64-test-needs
>>      - alpine-3.18-gcc-debug
>>  
>> +zen3p-pvshim-x86-64-gcc-debug:
>> +  extends: .zen3p-x86-64
>> +  script:
>> +    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
>> +  needs:
>> +    - *x86-64-test-needs
>> +    - alpine-3.18-gcc-debug
>> +
>>  qemu-smoke-dom0-arm64-gcc:
>>    extends: .qemu-arm64
>>    script:
>> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
>> index 4b6311efffa8..ace494b938d8 100755
>> --- a/automation/scripts/qubes-x86-64.sh
>> +++ b/automation/scripts/qubes-x86-64.sh
>> @@ -8,6 +8,7 @@ set -ex
>>  #  - dom0pvh-hvm    PVH dom0, HVM domU
>>  #  - pci-hvm        PV dom0,  HVM domU + PCI Passthrough
>>  #  - pci-pv         PV dom0,  PV domU + PCI Passthrough
>> +#  - pvshim         PV dom0,  PVSHIM domU
>>  #  - s3             PV dom0,  S3 suspend/resume
>>  test_variant=$1
>>  
>> @@ -20,8 +21,8 @@ domU_vif="'bridge=xenbr0',"
>>  domU_extra_cfg=
>>  
>>  case "${test_variant}" in
>> -    ### test: smoke test & smoke test PVH & smoke test HVM
>> -    ""|"dom0pvh"|"dom0pvh-hvm")
>> +    ### test: smoke test & smoke test PVH & smoke test HVM & smoke test PVSHIM
>> +    ""|"dom0pvh"|"dom0pvh-hvm"|"pvshim")
>>          passed="ping test passed"
>>          domU_check="
>>  ifconfig eth0 192.168.0.2
>> @@ -44,6 +45,11 @@ echo \"${passed}\"
>>  
>>          if [ "${test_variant}" = "dom0pvh-hvm" ]; then
>>              domU_type="hvm"
>> +        elif [ "${test_variant}" = "pvshim" ]; then
>> +            domU_type="pv"
>> +            domU_extra_cfg='
>> +pvshim = 1
>> +'
>>          fi
>>          ;;
>>  
> Bah - serves me right for some last minute refactoring.  The domain type
> should be pvh for pvshim=1 to work.
>
> New pipeline:
> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505540810

And from the same bit of refactoring, a mismatch between
domU_extra_{cfg,config}.  Consolidated on the latter.

https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/8143613752

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823733.1237784 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc0-0007C9-OU; Mon, 21 Oct 2024 15:46:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823733.1237784; Mon, 21 Oct 2024 15:46: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 1t2uc0-0007BL-Gu; Mon, 21 Oct 2024 15:46:28 +0000
Received: by outflank-mailman (input) for mailman id 823733;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2ubz-0006wR-0e
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:27 +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 a0e3e2e9-8fc3-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:46:25 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso679844466b.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:25 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a0e3e2e9-8fc3-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525584; x=1730130384; 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=5B5PBoQqeHRKR1XhKv6Vo5Hv+PtFd3V27vrqsynASyo=;
        b=YUp2sDK27kKw7NCaFRU3BK3sI5kSuLxBFA9mGBebdbHnowNEO54uZjE2bL9MjwaUUI
         s9o/oh/mbxf415h+tyN9HLIr8HJ/zBMvd5t5QljESiyPPhoi24HCjfzfkKRZATPjSYyq
         ArBSEOQp6CyBcdCK5tmjMERgOvCBmODJgxcpk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525584; x=1730130384;
        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=5B5PBoQqeHRKR1XhKv6Vo5Hv+PtFd3V27vrqsynASyo=;
        b=WKPhTW69LjMwZvTB4qV4k1Iu8kYgB4FejIARDILIophFqoVD/SPQ5k4HAi0WDjexha
         JEyLjy+3ZFwD+giWnssIv+F4WA7R7+Rz1iAK2ALj70QuCrXjbEADDUrRQyQRT2OlMuqe
         Nml7o69wKR27SEp3Frp5PyNxtjGswOheoj8ZYIuUtXOu4Iblf/rv0+MMRKUwwWDOs88n
         QUOb5K3GWJpfJb7jkQE9j9bkIJ4S5VZJQ36N3MbUM1IlXci4sC76F64uewX640ufFQp0
         gml71uUlpGLIfvS3N5onywXk2PaOB5BAaGP2YLXxECEEkcFpvG/321tEbtOIeUrUL5XZ
         4hpQ==
X-Gm-Message-State: AOJu0YzcTsmqJV0ioqjWh7NLpC/Bd+FAOV+Z8p5KaxhvsM8DgN9lPzv8
	K28o5o4hO6ScU8/mkGQkTsh3ofZPfq5XuyouXrtu9i0qFMtQs+ST6b5craCNs8zjaEU6AAntsbn
	Y
X-Google-Smtp-Source: AGHT+IF+JCOiVC4fd7XiDGOfaV8WDxj+tAE7Om1/oNXTfBv0GO/pofYATwd7v/kPNGfmsNDvABFGZA==
X-Received: by 2002:a17:907:7ea8:b0:a9a:423:3278 with SMTP id a640c23a62f3a-a9a69c9883emr1068329066b.49.1729525584344;
        Mon, 21 Oct 2024 08:46:24 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v7 00/10] x86: Expose consistent topology to guests
Date: Mon, 21 Oct 2024 16:45:50 +0100
Message-ID: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
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".

===

Other minor changes highlighted in each individual patch.

Hypervisor prerequisites:

  patch  1: lib/x86: Bump max basic leaf in {pv,hvm}_max_policy
    * Conceptually similar to v6/patch1 ("Relax checks about policy
      compatibility"), but operates on the max policies instead.
  patch  2: xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
  patch  3: xen/x86: Add supporting code for uploading LAPIC contexts during
           domain create

hvmloader prerequisites

  patch  4: tools/hvmloader: Retrieve (x2)APIC IDs from the APs themselves

Toolstack prerequisites:

  patch  5: tools/libacpi: Use LUT of APIC IDs rather than function pointer
  patch  6: tools/libguest: Always set vCPU context in vcpu_hvm()

No functional changes:

  patch  7: xen/lib: Add topology generator for x86
    * Tweaked the behaviour of the cache leaves on overflow and added stronger
      checks.
  patch  8: xen/x86: Derive topologically correct x2APIC IDs from the policy

Final toolstack/xen stitching:

  patch  9: tools/libguest: Set distinct x2APIC IDs for each vCPU
  patch 10: xen/x86: Synthesise domain topologies

v6: https://lore.kernel.org/xen-devel/20241001123807.605-1-alejandro.vallejo@cloud.com
v5: https://lore.kernel.org/xen-devel/20240808134251.29995-1-alejandro.vallejo@cloud.com/
v4: https://lore.kernel.org/xen-devel/cover.1719416329.git.alejandro.vallejo@cloud.com/
v3: https://lore.kernel.org/xen-devel/cover.1716976271.git.alejandro.vallejo@cloud.com/
v2: https://lore.kernel.org/xen-devel/cover.1715102098.git.alejandro.vallejo@cloud.com/
v1: https://lore.kernel.org/xen-devel/20240109153834.4192-1-alejandro.vallejo@cloud.com/


Alejandro Vallejo (10):
  lib/x86: Bump max basic leaf in {pv,hvm}_max_policy
  xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
  xen/x86: Add supporting code for uploading LAPIC contexts during
    domain create
  tools/hvmloader: Retrieve (x2)APIC IDs from the APs themselves
  tools/libacpi: Use LUT of APIC IDs rather than function pointer
  tools/libguest: Always set vCPU context in vcpu_hvm()
  xen/lib: Add topology generator for x86
  xen/x86: Derive topologically correct x2APIC IDs from the policy
  tools/libguest: Set distinct x2APIC IDs for each vCPU
  tools/x86: Synthesise domain topologies

 tools/firmware/hvmloader/config.h        |   5 +-
 tools/firmware/hvmloader/hvmloader.c     |   6 +-
 tools/firmware/hvmloader/mp_tables.c     |   4 +-
 tools/firmware/hvmloader/smp.c           |  57 +++++--
 tools/firmware/hvmloader/util.c          |   7 +-
 tools/include/xen-tools/common-macros.h  |   5 +
 tools/include/xenguest.h                 |   8 +
 tools/libacpi/build.c                    |   6 +-
 tools/libacpi/libacpi.h                  |   2 +-
 tools/libs/guest/xg_cpuid_x86.c          |  29 +++-
 tools/libs/guest/xg_dom_x86.c            |  93 +++++++----
 tools/libs/light/libxl_dom.c             |  25 +++
 tools/libs/light/libxl_x86_acpi.c        |   7 +-
 tools/tests/cpu-policy/test-cpu-policy.c | 201 +++++++++++++++++++++++
 xen/arch/x86/cpu-policy.c                |  15 +-
 xen/arch/x86/cpuid.c                     |  18 +-
 xen/arch/x86/hvm/vlapic.c                |  42 ++++-
 xen/arch/x86/include/asm/hvm/vlapic.h    |   1 +
 xen/include/public/arch-x86/hvm/save.h   |   2 +
 xen/include/xen/lib/x86/cpu-policy.h     |  27 +++
 xen/lib/x86/policy.c                     | 169 +++++++++++++++++++
 xen/lib/x86/private.h                    |   4 +
 22 files changed, 649 insertions(+), 84 deletions(-)


base-commit: 081683ea578da56dd20b9dc22a64d03c893b47ba
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823734.1237792 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc1-0007KI-6i; Mon, 21 Oct 2024 15:46:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823734.1237792; Mon, 21 Oct 2024 15:46: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 1t2uc0-0007J6-UZ; Mon, 21 Oct 2024 15:46:28 +0000
Received: by outflank-mailman (input) for mailman id 823734;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2ubz-00072f-KY
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:27 +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 a1bd5b18-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:46:26 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a4031f69fso670324066b.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:26 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a1bd5b18-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525586; x=1730130386; 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=f4JeQE08gNbfSWczpDPa3wKYhVIymZneTtaBPTmRUh4=;
        b=QYEkr2Ra5S1VXH9tIQPlrgItAiZG6jqghIZB/waLU7IkIPY6earLMxbSuGNEuM8flB
         IutR8xowSMSCLTmRQwt2NzOeBm7nlrsDXqtqjVMBFeic2+0+7YL6OlOweP+2gglEtCCU
         IcH7S4CK6ZZi+8kRheKxiRVjHqjKnifkWaDgA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525586; x=1730130386;
        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=f4JeQE08gNbfSWczpDPa3wKYhVIymZneTtaBPTmRUh4=;
        b=FWv5P2p9Q2ooJdQ+rs059HB+FyDvWhyBd7K5W4eizVJBCq7gwNYy9bXk3METkHc2c6
         H+HtstyYk75E2dwFJsKgYxa2hhmo2Lazv1/ohlflub0z3lfg3/UpU5TSVlhEewpJmbAZ
         y3RxDGweMrF9wMiCY3GuHAzH30tra+lvbRJLphJUeVsNUvM1rgVrQgiQloCK+XqZmwsh
         ly3ewg5mkYcB7efHgY+AQziD5B+oE/LZVN+3i1FW0NCy0+CclkAh4XKMSqwxduaSmcoP
         e7oxjlpFqfr18mMA42NI462eJHj4AJBWIp+ynkRJH73YwXJZ4u3Cq8JLEqKAMpturOX7
         NHqg==
X-Gm-Message-State: AOJu0YzQKqGghni68vE+NOGY6ogAZ19rLo6z+ewsMVAV2g7Szas1qVpZ
	4LaMNAbOJdJUAwnkCmhQzqD36I4qEZyjRL92hxwlge1TrtN/xxnNwQw4YezwXL7DMWmEAV3ld4b
	T
X-Google-Smtp-Source: AGHT+IFsK7Iu5vWYlhUZff+ic0jHttVXhWo6yGhM9JdgQlboahnygpBdmE//ilKBKhQ2dxolpNcy6w==
X-Received: by 2002:a17:907:7e9e:b0:a9a:161:8da4 with SMTP id a640c23a62f3a-a9a69cdd435mr1195055966b.55.1729525585741;
        Mon, 21 Oct 2024 08:46:25 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH v7 02/10] xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
Date: Mon, 21 Oct 2024 16:45:52 +0100
Message-ID: <20241021154600.11745-3-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-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.
This allows further changes to topology and APIC ID assignment without
breaking existing hosts. 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.

The hardcoded mapping x2apic_id=2*vcpu_id is kept for the time being,
but it's meant to be overriden by toolstack on a later patch with
appropriate values.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
 * Preserve output for CPUID[0xb].edx on PV rather than nullify it.
 * s/vlapic->hw.x2apic_id/vlapic_x2apic_id(vlapic)/ in vlapic.c
---
 xen/arch/x86/cpuid.c                   | 18 +++++++-----------
 xen/arch/x86/hvm/vlapic.c              | 22 ++++++++++++++++++++--
 xen/arch/x86/include/asm/hvm/vlapic.h  |  1 +
 xen/include/public/arch-x86/hvm/save.h |  2 ++
 4 files changed, 30 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c
index 2a777436ee27..e2489ff8e346 100644
--- a/xen/arch/x86/cpuid.c
+++ b/xen/arch/x86/cpuid.c
@@ -138,10 +138,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 |= vlapic_x2apic_id(vcpu_vlapic(v)) << 24;
 
         /* TODO: Rework vPMU control in terms of toolstack choices. */
         if ( vpmu_available(v) &&
@@ -310,19 +309,16 @@ 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;
+            /*
+             * Fix the x2APIC identifier. The PV side is nonsensical, but
+             * we've always shown it like this so it's kept for compat.
+             */
+            res->d = is_hvm_domain(d) ? vlapic_x2apic_id(vcpu_vlapic(v))
+                                      : 2 * v->vcpu_id;
         }
         break;
 
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 3363926b487b..33b463925f4e 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1090,7 +1090,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_x2apic_id(vlapic);
     uint32_t apic_ldr = x2apic_ldr_from_id(apic_id);
 
     /*
@@ -1470,7 +1470,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_x2apic_id(vlapic)));
     vlapic_do_init(vlapic);
 }
 
@@ -1538,6 +1538,16 @@ 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);
 
+    /*
+     * Loading record without hw.x2apic_id in the save stream, calculate using
+     * the traditional "vcpu_id * 2" relation. There's an implicit assumption
+     * that vCPU0 always has x2APIC0, which is true for the old relation, and
+     * still holds under the new x2APIC generation algorithm. While that case
+     * goes through the conditional it's benign because it still maps to zero.
+     */
+    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) )
@@ -1606,6 +1616,13 @@ static int cf_check lapic_check_hidden(const struct domain *d,
          APIC_BASE_EXTD )
         return -EINVAL;
 
+    /*
+     * Fail migrations from newer versions of Xen where
+     * rsvd_zero is interpreted as something else.
+     */
+    if ( s.rsvd_zero )
+        return -EINVAL;
+
     return 0;
 }
 
@@ -1687,6 +1704,7 @@ int vlapic_init(struct vcpu *v)
     }
 
     vlapic->pt.source = PTSRC_lapic;
+    vlapic->hw.x2apic_id = 2 * v->vcpu_id;
 
     vlapic->regs_page = alloc_domheap_page(v->domain, MEMF_no_owner);
     if ( !vlapic->regs_page )
diff --git a/xen/arch/x86/include/asm/hvm/vlapic.h b/xen/arch/x86/include/asm/hvm/vlapic.h
index 2c4ff94ae7a8..85c4a236b9f6 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.
diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/public/arch-x86/hvm/save.h
index 7ecacadde165..1c2ec669ffc9 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);
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823732.1237778 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc0-00078w-Dd; Mon, 21 Oct 2024 15:46:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823732.1237778; Mon, 21 Oct 2024 15:46: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 1t2uc0-00078p-An; Mon, 21 Oct 2024 15:46:28 +0000
Received: by outflank-mailman (input) for mailman id 823732;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uby-00072f-Ul
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:26 +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 a144706c-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:46:26 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9aa8895facso28000366b.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:26 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a144706c-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525585; x=1730130385; 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=GBassmQzkQGjGcGX6CCW94tabGk8bt3HmbNpfye2CBI=;
        b=fQVisM99hOGDTBagGT7JvBbBDzaIQopRXIbcYHrceNr/Z3GDkQ8ykeYmYyfWVbAsva
         9GBOqsIBnTMRzIvgHWaMv3NaivkTIKX9xgKNfvJ+uKLe1gUdNWvBHN87ej6Bylum4MEn
         pOV6h05uG9H7SHpt38z5JPjMt+oLcmgpeUEg0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525585; x=1730130385;
        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=GBassmQzkQGjGcGX6CCW94tabGk8bt3HmbNpfye2CBI=;
        b=sc8AX5vH+JSc9Hgibno9jTZTvKS8Jw1Sm5xVzdECyr3IH7g8C0Xjh99FIEKjHOFsRP
         wlH27CEoxOLSfVd4ExvPkxKUhYXTk+06kNaJIzhgyAGPPShuW9nE9Ob6kd5Q0yju3VxU
         iafCFwigOvYQDF1XAWYB61pgxxuNAKP40NDQywrPLre7Eek6BKiDg8iX84IKfzmpclIP
         vJ4jUSfpnmiEg0eRhYCA/pGZBLDGMYaWT5R4MDsDjzC5Ue9bq7ZXwF6Eq+02WRCcnacy
         HeHFseHrA1SH8wq0CLUc0ii2Dp9zx0KZuyrf1KIEXdLLXcrReCcebe99sxxmBLguQwoj
         pi1A==
X-Gm-Message-State: AOJu0YzlV9mUz4V4yQxjhM9fX6CFNOuPOvG3xU/0UaTca+ygiBSBnMWM
	XAMkaAqvjlf0kK2y45JauQSm4b/Y6yir/XcZEhCXz5bXHC74FWo7kwecxfsxDX23mGPmPEJx6fz
	x
X-Google-Smtp-Source: AGHT+IEihvHwwhqYr+uHOEPw6bXq1/E4z6qPAHQE2TFcRK7PeBA8wIjJHn08cy5toE54HuoyOx+a0Q==
X-Received: by 2002:a17:907:7fab:b0:a99:e505:2089 with SMTP id a640c23a62f3a-a9a69c92299mr1103020666b.45.1729525585037;
        Mon, 21 Oct 2024 08:46:25 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH v7 01/10] lib/x86: Bump max basic leaf in {pv,hvm}_max_policy
Date: Mon, 21 Oct 2024 16:45:51 +0100
Message-ID: <20241021154600.11745-2-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Bump it to ARRAY_SIZE() so toolstack is able to extend a policy past
host limits (i.e: to emulate a feature not present in the host)

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * Replaces v6/patch1("Relax checks about policy compatibility")
  * Bumps basic.max_leaf to ARRAY_SIZE(basic.raw) to pass the
    compatibility checks rather than tweaking the checker.
---
 xen/arch/x86/cpu-policy.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index b6d9fad56773..715a66d2a978 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -585,6 +585,9 @@ static void __init calculate_pv_max_policy(void)
      */
     p->feat.max_subleaf = ARRAY_SIZE(p->feat.raw) - 1;
 
+    /* Toolstack may populate leaves not present in the basic host leaves */
+    p->basic.max_leaf = ARRAY_SIZE(p->basic.raw) - 1;
+
     x86_cpu_policy_to_featureset(p, fs);
 
     for ( i = 0; i < ARRAY_SIZE(fs); ++i )
@@ -672,6 +675,9 @@ static void __init calculate_hvm_max_policy(void)
      */
     p->feat.max_subleaf = ARRAY_SIZE(p->feat.raw) - 1;
 
+    /* Toolstack may populate leaves not present in the basic host leaves */
+    p->basic.max_leaf = ARRAY_SIZE(p->basic.raw) - 1;
+
     x86_cpu_policy_to_featureset(p, fs);
 
     mask = hvm_hap_supported() ?
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823735.1237807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc2-0007pj-DF; Mon, 21 Oct 2024 15:46:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823735.1237807; Mon, 21 Oct 2024 15:46: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 1t2uc2-0007pI-8z; Mon, 21 Oct 2024 15:46:30 +0000
Received: by outflank-mailman (input) for mailman id 823735;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc0-00072f-KX
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:28 +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 a206f3b7-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:46:27 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9a3dc089d8so644860566b.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:27 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a206f3b7-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525586; x=1730130386; 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=pByswpXzSTiGKGfVPV2EdkKns62a7SkqiG3943NVlFI=;
        b=SzVzt4WHidbE0zJ9QCJxdlgrNuOVZeEpxB7ZQLDu45hlrGTufcqLIdsUbXLaExMpyT
         /GyDl8pmZd+Bg4gSenmnLu4Ta0ct+A2b5mIx1N9Kfj2faZfIAvGdp/OJEe6G/RDz4C26
         +uxwJVnY68IF4180zWCB3w0TiCikTv0qkYDkw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525586; x=1730130386;
        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=pByswpXzSTiGKGfVPV2EdkKns62a7SkqiG3943NVlFI=;
        b=HdkweMDsO1fBa7WIXw89GJWdO6Xs3E/FgeGDPo+4WE7ZeOSWp4XCX6U5jGHcGNHXYT
         qcotSkmHuN/O6jOyB75yne8wVPn/SviSq7Fnyd1YWJaA0U6uhLY4fOuCIkCYgOO4afvu
         ooC3OW5EyIsqzzgGV8aEGcOzxN9CvzseFBa/FGLhPMGP2Kxrq2GqykqTYLnPZHuMr7HV
         vPjKPvvKa8PJ2+SBPlpvpc0vkzFSNhbNmdU+8H/sDRIXxwDa5sDKojXzK1zuxmpo1Y6z
         OqPNjVUOXSSEJJpNVT26TLngXHaHH+isd1yyvfbvQWPSW0AJWzYcjmEbBa5qvE2iC+gd
         hKEQ==
X-Gm-Message-State: AOJu0YyPtj2RkNM3qprDSF0MW92ir5aCgS/PjRTOmEEE7JmstxsNyp2n
	dYZ0ee2hXXY7XfWkSvmbN17hzWuIOyTYxdq9sRH3T7IR20U3WWOCRpUE9H2xWGi6VDyL7T1K88z
	S
X-Google-Smtp-Source: AGHT+IHM8n1JQD1o+pIuj+Z2TwTg9W/MBIC+VNA8N9YrEwNUTTBufyr/ioxaPO0pJOwlwX0Eg+kgew==
X-Received: by 2002:a17:907:6094:b0:a99:4eac:bb98 with SMTP id a640c23a62f3a-a9a69c6a5a9mr1125006366b.51.1729525586449;
        Mon, 21 Oct 2024 08:46:26 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH v7 03/10] xen/x86: Add supporting code for uploading LAPIC contexts during domain create
Date: Mon, 21 Oct 2024 16:45:53 +0100
Message-ID: <20241021154600.11745-4-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

A later patch will upload LAPIC contexts as part of domain creation. In
order for it not to encounter a problem where the architectural state
does not reflect the APIC ID in the hidden state, this patch ensures
updates to the hidden state trigger an update in the architectural
registers so the APIC ID in both is consistent.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
 * Rework the commit message so it explains a follow-up patch rather
   than hypothetical behaviour.
---
 xen/arch/x86/hvm/vlapic.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index 33b463925f4e..03581eb33812 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1640,7 +1640,27 @@ static int cf_check lapic_load_hidden(struct domain *d, hvm_domain_context_t *h)
 
     s->loaded.hw = 1;
     if ( s->loaded.regs )
+    {
+        /*
+         * We already processed architectural regs in lapic_load_regs(), so
+         * this must be a migration. Fix up inconsistencies from any older Xen.
+         */
         lapic_load_fixup(s);
+    }
+    else
+    {
+        /*
+         * We haven't seen architectural regs so this could be a migration or a
+         * plain domain create. In the domain create case it's fine to modify
+         * the architectural state to align it to the APIC ID that was just
+         * uploaded and in the migrate case it doesn't matter because the
+         * architectural state will be replaced by the LAPIC_REGS ctx later on.
+         */
+        if ( vlapic_x2apic_mode(s) )
+            set_x2apic_id(s);
+        else
+            vlapic_set_reg(s, APIC_ID, SET_xAPIC_ID(s->hw.x2apic_id));
+    }
 
     hvm_update_vlapic_mode(v);
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823736.1237818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc3-00088h-LL; Mon, 21 Oct 2024 15:46:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823736.1237818; Mon, 21 Oct 2024 15:46: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 1t2uc3-00087j-HV; Mon, 21 Oct 2024 15:46:31 +0000
Received: by outflank-mailman (input) for mailman id 823736;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc1-00072f-Kw
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:29 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a2cb0625-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:46:28 +0200 (CEST)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539ee1acb86so2582166e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:28 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a2cb0625-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525587; x=1730130387; 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=EtunhDViKB6O/YaErMLF4cLS3+ZvtcQXDHgeo9Ij1bY=;
        b=djRRh/9z86qf/TEZU79596fEqF96wZI81c+pjR4scKPl3VFStBF/pULzIRyzNHF7MR
         H3yts0akrvmrixv8enDYClgNChFmVaTES0gDDmhpq6X272d46dNLMsj+6R8x/Iq5jCXZ
         bA/RwWrpKDlPmbiGp+/R6rtJcRTssGnqdR56s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525587; x=1730130387;
        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=EtunhDViKB6O/YaErMLF4cLS3+ZvtcQXDHgeo9Ij1bY=;
        b=VDQ+Lj2fqy2C/2oHSi03klJu/jZed/one70kHtcMoteFj4LYfkDQnsQDIlJ1dsXszz
         GDGqWkmfuFYYX4MrlU7lGLYfa5EwsYmF/X1utEgVR4IwdgmRbRazUTVKQvtt0/VKwPb8
         klip1YEhKMpskAOJiNaVzJVRuJ3S7Ks/cNeX+PLxqr4MgvEv+MYboXxuGFjWeIDu0OEk
         QdY73ZSzZpV4idaseyCzKNTXL3R6XHFjDPdM7SGEBkZN9QD3fiZkevtQRKMUGzJc/pIv
         vC+Esh5kE9OKBpvySvEmOc42m4zNxT2zJrOzBVpWs0gjJXPIZLNLZeELLVXfuXs2sFBi
         pkmA==
X-Gm-Message-State: AOJu0Yyc52QyQ4FyDjlbqRPGG9h3BL6DU6Jf86bLCL9dw61iSZrgfo0m
	DA1F3RU23IBw+tDDMq8TP/bPkJ9lpJb4AouaP0Q6kTrK5YAlu8nRD0NEqdrIVwxEhDDy0RQR4Gp
	z
X-Google-Smtp-Source: AGHT+IFxh2loJHPDPgOCevVyoWp2JdQvGapLa1M3JZTi6PJ3c8ms+bUOhIryrbRzFPxi7M0HnoySFQ==
X-Received: by 2002:a05:6512:31c1:b0:535:6cde:5c4d with SMTP id 2adb3069b0e04-53a1520bfaemr7157800e87.3.1729525587370;
        Mon, 21 Oct 2024 08:46:27 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v7 04/10] tools/hvmloader: Retrieve (x2)APIC IDs from the APs themselves
Date: Mon, 21 Oct 2024 16:45:54 +0100
Message-ID: <20241021154600.11745-5-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Make it so the APs expose their own APIC IDs in a LUT. We can use that
LUT to populate the MADT, decoupling the algorithm that relates CPU IDs
and APIC IDs from hvmloader.

Moved smp_initialise() ahead of apic_setup() in order to initialise
cpu_to_x2apicid ASAP and avoid using it uninitialised. Note that
bringing up the APs doesn't need the APIC in hvmloader becasue it always
runs virtualized and uses the PV interface.

While at this, exploit the assumption that CPU0 always has APICID0 to
remove ap_callin, as writing the APIC ID may serve the same purpose.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * CPU_TO_X2APICID to lowercase
  * Spell out the CPU0<-->APICID0 relationship in the commit message as
    the rationale to remove ap_callin.
  * Explain the motion of smp_initialise() ahead of apic_setup() in the
    commit message.
---
 tools/firmware/hvmloader/config.h       |  5 ++-
 tools/firmware/hvmloader/hvmloader.c    |  6 +--
 tools/firmware/hvmloader/mp_tables.c    |  4 +-
 tools/firmware/hvmloader/smp.c          | 57 ++++++++++++++++++++-----
 tools/firmware/hvmloader/util.c         |  2 +-
 tools/include/xen-tools/common-macros.h |  5 +++
 6 files changed, 63 insertions(+), 16 deletions(-)

diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h
index cd716bf39245..04cab1e59f08 100644
--- a/tools/firmware/hvmloader/config.h
+++ b/tools/firmware/hvmloader/config.h
@@ -4,6 +4,8 @@
 #include <stdint.h>
 #include <stdbool.h>
 
+#include <xen/hvm/hvm_info_table.h>
+
 enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt };
 extern enum virtual_vga virtual_vga;
 
@@ -48,8 +50,9 @@ extern uint8_t ioapic_version;
 
 #define IOAPIC_ID           0x01
 
+extern uint32_t cpu_to_x2apicid[HVM_MAX_VCPUS];
+
 #define LAPIC_BASE_ADDRESS  0xfee00000
-#define LAPIC_ID(vcpu_id)   ((vcpu_id) * 2)
 
 #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 f8af88fabf24..bebdfa923880 100644
--- a/tools/firmware/hvmloader/hvmloader.c
+++ b/tools/firmware/hvmloader/hvmloader.c
@@ -224,7 +224,7 @@ static void apic_setup(void)
 
     /* 8259A ExtInts are delivered through IOAPIC pin 0 (Virtual Wire Mode). */
     ioapic_write(0x10, APIC_DM_EXTINT);
-    ioapic_write(0x11, SET_APIC_ID(LAPIC_ID(0)));
+    ioapic_write(0x11, SET_APIC_ID(cpu_to_x2apicid[0]));
 }
 
 struct bios_info {
@@ -341,11 +341,11 @@ int main(void)
 
     printf("CPU speed is %u MHz\n", get_cpu_mhz());
 
+    smp_initialise();
+
     apic_setup();
     pci_setup();
 
-    smp_initialise();
-
     perform_tests();
 
     if ( bios->bios_info_setup )
diff --git a/tools/firmware/hvmloader/mp_tables.c b/tools/firmware/hvmloader/mp_tables.c
index 77d3010406d0..539260365e1e 100644
--- a/tools/firmware/hvmloader/mp_tables.c
+++ b/tools/firmware/hvmloader/mp_tables.c
@@ -198,8 +198,10 @@ static void fill_mp_config_table(struct mp_config_table *mpct, int length)
 /* fills in an MP processor entry for VCPU 'vcpu_id' */
 static void fill_mp_proc_entry(struct mp_proc_entry *mppe, int vcpu_id)
 {
+    ASSERT(cpu_to_x2apicid[vcpu_id] < 0xFF );
+
     mppe->type = ENTRY_TYPE_PROCESSOR;
-    mppe->lapic_id = LAPIC_ID(vcpu_id);
+    mppe->lapic_id = cpu_to_x2apicid[vcpu_id];
     mppe->lapic_version = 0x11;
     mppe->cpu_flags = CPU_FLAG_ENABLED;
     if ( vcpu_id == 0 )
diff --git a/tools/firmware/hvmloader/smp.c b/tools/firmware/hvmloader/smp.c
index 1b940cefd071..d63536f14f00 100644
--- a/tools/firmware/hvmloader/smp.c
+++ b/tools/firmware/hvmloader/smp.c
@@ -29,7 +29,37 @@
 
 #include <xen/vcpu.h>
 
-static int ap_callin;
+/**
+ * Lookup table of (x2)APIC IDs.
+ *
+ * Each entry is populated its respective CPU as they come online. This is required
+ * for generating the MADT with minimal assumptions about ID relationships.
+ *
+ * While the name makes "x2" explicit, these may actually be xAPIC IDs if no
+ * x2APIC is present. "x2" merely highlights that each entry is 32 bits wide.
+ */
+uint32_t cpu_to_x2apicid[HVM_MAX_VCPUS];
+
+/** Tristate about x2apic being supported. -1=unknown */
+static int has_x2apic = -1;
+
+static uint32_t read_apic_id(void)
+{
+    uint32_t apic_id;
+
+    if ( has_x2apic )
+        cpuid(0xb, NULL, NULL, NULL, &apic_id);
+    else
+    {
+        cpuid(1, NULL, &apic_id, NULL, NULL);
+        apic_id >>= 24;
+    }
+
+    /* Never called by cpu0, so should never return 0 */
+    ASSERT(apic_id);
+
+    return apic_id;
+}
 
 static void cpu_setup(unsigned int cpu)
 {
@@ -37,13 +67,17 @@ static void cpu_setup(unsigned int cpu)
     cacheattr_init();
     printf("done.\n");
 
-    if ( !cpu ) /* Used on the BSP too */
+    /* The BSP exits early because its APIC ID is known to be zero */
+    if ( !cpu )
         return;
 
     wmb();
-    ap_callin = 1;
+    ACCESS_ONCE(cpu_to_x2apicid[cpu]) = read_apic_id();
 
-    /* After this point, the BSP will shut us down. */
+    /*
+     * After this point the BSP will shut us down. A write to
+     * cpu_to_x2apicid[cpu] signals the BSP to bring down `cpu`.
+     */
 
     for ( ;; )
         asm volatile ( "hlt" );
@@ -54,10 +88,6 @@ static void boot_cpu(unsigned int cpu)
     static uint8_t ap_stack[PAGE_SIZE] __attribute__ ((aligned (16)));
     static struct vcpu_hvm_context ap;
 
-    /* Initialise shared variables. */
-    ap_callin = 0;
-    wmb();
-
     /* Wake up the secondary processor */
     ap = (struct vcpu_hvm_context) {
         .mode = VCPU_HVM_MODE_32B,
@@ -90,10 +120,11 @@ static void boot_cpu(unsigned int cpu)
         BUG();
 
     /*
-     * Wait for the secondary processor to complete initialisation.
+     * Wait for the secondary processor to complete initialisation,
+     * which is signaled by its x2APIC ID being written to the LUT.
      * Do not touch shared resources meanwhile.
      */
-    while ( !ap_callin )
+    while ( !ACCESS_ONCE(cpu_to_x2apicid[cpu]) )
         cpu_relax();
 
     /* Take the secondary processor offline. */
@@ -104,6 +135,12 @@ static void boot_cpu(unsigned int cpu)
 void smp_initialise(void)
 {
     unsigned int i, nr_cpus = hvm_info->nr_vcpus;
+    uint32_t ecx;
+
+    cpuid(1, NULL, NULL, &ecx, NULL);
+    has_x2apic = (ecx >> 21) & 1;
+    if ( has_x2apic )
+        printf("x2APIC supported\n");
 
     printf("Multiprocessor initialisation:\n");
     cpu_setup(0);
diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
index d3b3f9038e64..821b3086a87d 100644
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -827,7 +827,7 @@ static void acpi_mem_free(struct acpi_ctxt *ctxt,
 
 static uint32_t acpi_lapic_id(unsigned cpu)
 {
-    return LAPIC_ID(cpu);
+    return cpu_to_x2apic_id[cpu];
 }
 
 void hvmloader_acpi_build_tables(struct acpi_config *config,
diff --git a/tools/include/xen-tools/common-macros.h b/tools/include/xen-tools/common-macros.h
index 60912225cb7a..336c6309d96e 100644
--- a/tools/include/xen-tools/common-macros.h
+++ b/tools/include/xen-tools/common-macros.h
@@ -108,4 +108,9 @@
 #define get_unaligned(ptr)      get_unaligned_t(typeof(*(ptr)), ptr)
 #define put_unaligned(val, ptr) put_unaligned_t(typeof(*(ptr)), val, ptr)
 
+#define __ACCESS_ONCE(x) ({                             \
+            (void)(typeof(x))0; /* Scalar typecheck. */ \
+            (volatile typeof(x) *)&(x); })
+#define ACCESS_ONCE(x) (*__ACCESS_ONCE(x))
+
 #endif	/* __XEN_TOOLS_COMMON_MACROS__ */
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823737.1237823 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc4-0008C5-4y; Mon, 21 Oct 2024 15:46:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823737.1237823; Mon, 21 Oct 2024 15: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 1t2uc3-0008Ao-Q7; Mon, 21 Oct 2024 15:46:31 +0000
Received: by outflank-mailman (input) for mailman id 823737;
 Mon, 21 Oct 2024 15:46: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 1t2uc1-0007cv-LW; Mon, 21 Oct 2024 15:46: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 1t2uc1-0003Oq-IW; Mon, 21 Oct 2024 15:46: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 1t2uc0-0007gJ-WE; Mon, 21 Oct 2024 15:46:29 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t2uc0-0006GH-Vf; Mon, 21 Oct 2024 15:46: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=WHep3VsM+s47Mbck/G5G+877jkT+0Q48c6nAhADJ/es=; b=IbjGnK5OmIl0vkpvmpvSbd5aQf
	wbwiyxx5e0VT8KtKoo+U5TpMkEIiPe/6hQWS7q2LIJTlpJyjjiXOfdVHKRhHWNz7GjOM8lgaDYjs4
	LuV9Mh8dZ83kWXhAPxpWwydLmSZLL2YFMprFmuL42kHaLgQedBNcLigct9VuMX+B3Zmc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188312-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188312: 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=7cf6e073e47f7c7edfe764ce904df283ec7ddad8
X-Osstest-Versions-That:
    xen=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 21 Oct 2024 15:46:28 +0000

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

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                  7cf6e073e47f7c7edfe764ce904df283ec7ddad8
baseline version:
 xen                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7

Last test of basis   188307  2024-10-19 19:00:26 Z    1 days
Testing same since   188312  2024-10-21 12:03:51 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Daniel P. Smith <dpsmith@apertussolutions.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
   73785a4c77..7cf6e073e4  7cf6e073e47f7c7edfe764ce904df283ec7ddad8 -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823739.1237829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc4-0008Na-N2; Mon, 21 Oct 2024 15:46:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823739.1237829; Mon, 21 Oct 2024 15: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 1t2uc4-0008KR-Ev; Mon, 21 Oct 2024 15:46:32 +0000
Received: by outflank-mailman (input) for mailman id 823739;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc2-00072f-L2
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:30 +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 a329ebb5-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:46:29 +0200 (CEST)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-539fbbadf83so5935511e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:29 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a329ebb5-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525588; x=1730130388; 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=kt6+5jEr1Vb36dNDj6FYHrZnMI7Ec+TK6iPRKwqkLa8=;
        b=dYWfdIqie9JvNXBWGcz9yHXzD4Btc/2WwTI1L2GNS2H0PGsJ9qpmSb0xm+Jlgi30i6
         XDs/Kmb5AeNyJ+GH8u1JYMsAJO/qWMBOxOMVUsqgghWJmFx1GlC97p4Lzu/7TqO5byGz
         EuKMI7qlj0MPt5Amx8vcmtuA9AxYPLMox2tP8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525588; x=1730130388;
        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=kt6+5jEr1Vb36dNDj6FYHrZnMI7Ec+TK6iPRKwqkLa8=;
        b=l7XGlkpLjPJLcCLCiIyGyd9zIl8NUOIKVSrxuP4WiPtH6S4r1Cc/HD2wzLBKYxd7N+
         oAraV0aAqm1N9bl+ulfFXCRMlwTbw0iFJ0VE6rWUvMpj9nH0lciIkz+ZViD3cEMj92mA
         2H2ywZlkrzJW2vi4ZkOBOVsdR1RgLVFHp2s2jJSQQ6KIND2OhCQjr8k8HAwFnYFUw9tR
         u10NH573h7odvkYaBIOcKA4rxxRf4VR1FEhTEzhNGinnUErJZlyORq5mAn9shEdA1WeI
         Wul+BMZfvWBvdT18MzT9eR6FvBYHTmrLQbSX7BDVjrXDCKk334Nv330QT7ShTzDiH4Bk
         8Nmg==
X-Gm-Message-State: AOJu0YyzoFEZ23cjvM/GxFKCtCoL5sjEKnYfeQb/ecmjYXpELfKv7PWY
	YmA1uhcqHl6NTrSrkgsN9XYsW1gQNBoNQI8av/CI00U0MDHtIbCmy//naRZ2hjkeUrv5NAUi5cP
	G
X-Google-Smtp-Source: AGHT+IEVrJLMBoJ/8SaBB8jA+N4KaLZEj3RQfn5qwUH4alpb3yPxMwBg2zaGlHFDoRArLQYZjKNmAw==
X-Received: by 2002:a05:6512:b19:b0:539:d2e2:41ff with SMTP id 2adb3069b0e04-53a15493465mr5426897e87.23.1729525588191;
        Mon, 21 Oct 2024 08:46:28 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v7 05/10] tools/libacpi: Use LUT of APIC IDs rather than function pointer
Date: Mon, 21 Oct 2024 16:45:55 +0100
Message-ID: <20241021154600.11745-6-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Refactors libacpi so that a single LUT is the authoritative source of
truth for the CPU to APIC ID mappings. This has a know-on effect in
reducing complexity on future patches, as the same LUT can be used for
configuring the APICs and configuring the ACPI tables for PVH.

Not functional change intended, because the same mappings are preserved.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * NOTE: didn't add assert to libacpi as initially accepted in order to
    protect libvirt from an assert failure.
  * s/uint32_t/unsigned int/ in for loop of libxl.
  * turned Xen-style loop in libxl to libxl-style.
---
 tools/firmware/hvmloader/util.c   | 7 +------
 tools/include/xenguest.h          | 5 +++++
 tools/libacpi/build.c             | 6 +++---
 tools/libacpi/libacpi.h           | 2 +-
 tools/libs/light/libxl_dom.c      | 5 +++++
 tools/libs/light/libxl_x86_acpi.c | 7 +------
 6 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
index 821b3086a87d..afa3eb9d5775 100644
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -825,11 +825,6 @@ static void acpi_mem_free(struct acpi_ctxt *ctxt,
     /* ACPI builder currently doesn't free memory so this is just a stub */
 }
 
-static uint32_t acpi_lapic_id(unsigned cpu)
-{
-    return cpu_to_x2apic_id[cpu];
-}
-
 void hvmloader_acpi_build_tables(struct acpi_config *config,
                                  unsigned int physical)
 {
@@ -859,7 +854,7 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
     }
 
     config->lapic_base_address = LAPIC_BASE_ADDRESS;
-    config->lapic_id = acpi_lapic_id;
+    config->cpu_to_apicid = cpu_to_x2apicid;
     config->ioapic_base_address = IOAPIC_BASE_ADDRESS;
     config->ioapic_id = IOAPIC_ID;
     config->pci_isa_irq_mask = PCI_ISA_IRQ_MASK; 
diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index e01f494b772a..aa50b78dfb89 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -22,6 +22,8 @@
 #ifndef XENGUEST_H
 #define XENGUEST_H
 
+#include "xen/hvm/hvm_info_table.h"
+
 #define XC_NUMA_NO_NODE   (~0U)
 
 #define XCFLAGS_LIVE      (1 << 0)
@@ -236,6 +238,9 @@ struct xc_dom_image {
 #if defined(__i386__) || defined(__x86_64__)
     struct e820entry *e820;
     unsigned int e820_entries;
+
+    /* LUT mapping cpu id to (x2)APIC ID */
+    uint32_t cpu_to_apicid[HVM_MAX_VCPUS];
 #endif
 
     xen_pfn_t vuart_gfn;
diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c
index 2f29863db154..2ad1d461a2ec 100644
--- a/tools/libacpi/build.c
+++ b/tools/libacpi/build.c
@@ -74,7 +74,7 @@ static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
     const struct hvm_info_table   *hvminfo = config->hvminfo;
     int i, sz;
 
-    if ( config->lapic_id == NULL )
+    if ( config->cpu_to_apicid == NULL )
         return NULL;
 
     sz  = sizeof(struct acpi_20_madt);
@@ -148,7 +148,7 @@ static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
         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 = config->cpu_to_apicid[i];
         lapic->flags = (test_bit(i, hvminfo->vcpu_online)
                         ? ACPI_LOCAL_APIC_ENABLED : 0);
         lapic++;
@@ -236,7 +236,7 @@ static struct acpi_20_srat *construct_srat(struct acpi_ctxt *ctxt,
         processor->type     = ACPI_PROCESSOR_AFFINITY;
         processor->length   = sizeof(*processor);
         processor->domain   = config->numa.vcpu_to_vnode[i];
-        processor->apic_id  = config->lapic_id(i);
+        processor->apic_id  = config->cpu_to_apicid[i];
         processor->flags    = ACPI_LOCAL_APIC_AFFIN_ENABLED;
         processor++;
     }
diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h
index deda39e5dbc4..e8f603ee18ee 100644
--- a/tools/libacpi/libacpi.h
+++ b/tools/libacpi/libacpi.h
@@ -84,7 +84,7 @@ struct acpi_config {
     unsigned long rsdp;
 
     /* x86-specific parameters */
-    uint32_t (*lapic_id)(unsigned cpu);
+    const uint32_t *cpu_to_apicid; /* LUT mapping cpu id to (x2)APIC ID */
     uint32_t lapic_base_address;
     uint32_t ioapic_base_address;
     uint16_t pci_isa_irq_mask;
diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c
index 94fef374014e..5f4f6830e850 100644
--- a/tools/libs/light/libxl_dom.c
+++ b/tools/libs/light/libxl_dom.c
@@ -1082,6 +1082,11 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
 
     dom->container_type = XC_DOM_HVM_CONTAINER;
 
+#if defined(__i386__) || defined(__x86_64__)
+    for (unsigned int i = 0; i < info->max_vcpus; i++)
+        dom->cpu_to_apicid[i] = 2 * i; /* TODO: Replace by topo calculation */
+#endif
+
     /* The params from the configuration file are in Mb, which are then
      * multiplied by 1 Kb. This was then divided off when calling
      * the old xc_hvm_build_target_mem() which then turned them to bytes.
diff --git a/tools/libs/light/libxl_x86_acpi.c b/tools/libs/light/libxl_x86_acpi.c
index 5cf261bd6794..585d4c8755cb 100644
--- a/tools/libs/light/libxl_x86_acpi.c
+++ b/tools/libs/light/libxl_x86_acpi.c
@@ -75,11 +75,6 @@ static void acpi_mem_free(struct acpi_ctxt *ctxt,
 {
 }
 
-static uint32_t acpi_lapic_id(unsigned cpu)
-{
-    return cpu * 2;
-}
-
 static int init_acpi_config(libxl__gc *gc, 
                             struct xc_dom_image *dom,
                             const libxl_domain_build_info *b_info,
@@ -144,7 +139,7 @@ static int init_acpi_config(libxl__gc *gc,
     config->hvminfo = hvminfo;
 
     config->lapic_base_address = LAPIC_BASE_ADDRESS;
-    config->lapic_id = acpi_lapic_id;
+    config->cpu_to_apicid = dom->cpu_to_apicid;
     config->acpi_revision = 5;
 
     rc = 0;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823740.1237837 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc5-0008TT-9G; Mon, 21 Oct 2024 15:46:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823740.1237837; Mon, 21 Oct 2024 15:46: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 1t2uc4-0008RY-U5; Mon, 21 Oct 2024 15:46:32 +0000
Received: by outflank-mailman (input) for mailman id 823740;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc3-00072f-L3
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:31 +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 a3938409-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:46:29 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-539f1292a9bso5581983e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:29 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a3938409-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525589; x=1730130389; 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=drYAV2GRBVtyItzvlbWxXVZKwAVghUrG2tjy6Y/nrn8=;
        b=NsgtkWqUJoX/ZecU5BPAlRrB+MnyVNR1CC5M9mWhhjsZ/hvtM0QgkxvBQvVC1finNQ
         wkifs8VW6vy7UGPpzis08JeEBqsIXvvzEfnn+HeDviUZ7c6BnG5VcNlYNUSAXueKHuqV
         SoaNnfGUpp6d1xRijZ4cnMl1JUR3RTiFULjXc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525589; x=1730130389;
        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=drYAV2GRBVtyItzvlbWxXVZKwAVghUrG2tjy6Y/nrn8=;
        b=iwL5iu2egF4DxAXHAJhFxKu+N7sjbHxQxXLZVFSZPF3b3iRnHayv6VKCH1N9VKC9nE
         TasCIuZprVJRaHtQBshAK0S0iTDYJmKHHdnaUsznlb3vOpyEAkNYYtpJMtDld/5CYNJg
         ibeOh5ksV2xt45hvZTUlHW+rAq/ZNWXdeYtmiJ6qsCWLnPHTyDoS4osZsL/Ogw74brPO
         2VPjka6bc3ey5PgYsXUZIj82f9Vd6qZoXiy6ctGj11sAqRMCmV+slwe0Yp5OjPRB5U3M
         aDDBtiSP20q1FXqcjtAG5tfPEniUxwWoUjU/li98ZWCkEAkLttOTX8MJMeVAvKS5Of7d
         tXXw==
X-Gm-Message-State: AOJu0YyPSzBHGEeNY6bcMq2CBuhB9jInS6gp6eDSlPJDPcnbMBVaHIMZ
	arZqWWa75dzbWoJ8JR+k+YYz+f4yx7iQm3iEZKlbTvTT7M6yymGeT5kjV7kY2DNz6PEkYFoU/hW
	F
X-Google-Smtp-Source: AGHT+IG3Qtze17MfiMkatL5qI9j1ubDDXbU9gfmG9CbFNA99JNwPYq0pyj7mFHKGcMnqXtCxG4WZGw==
X-Received: by 2002:ac2:4c4a:0:b0:539:fb49:c47d with SMTP id 2adb3069b0e04-53a153410a1mr5489109e87.12.1729525588875;
        Mon, 21 Oct 2024 08:46:28 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v7 06/10] tools/libguest: Always set vCPU context in vcpu_hvm()
Date: Mon, 21 Oct 2024 16:45:56 +0100
Message-ID: <20241021154600.11745-7-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Currently used by PVH to set MTRR, will be used by a later patch to set
APIC state. Unconditionally send the hypercall, and gate overriding the
MTRR so it remains functionally equivalent.

While at it, add a missing "goto out" to what was the error condition
in the loop.

In principle this patch shouldn't affect functionality. An extra record
(the MTRR) is sent to the hypervisor per vCPU on HVM, but these records
are identical to those retrieved in the first place so there's no
expected functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * Unchanged
---
 tools/libs/guest/xg_dom_x86.c | 84 ++++++++++++++++++-----------------
 1 file changed, 44 insertions(+), 40 deletions(-)

diff --git a/tools/libs/guest/xg_dom_x86.c b/tools/libs/guest/xg_dom_x86.c
index cba01384ae75..c98229317db7 100644
--- a/tools/libs/guest/xg_dom_x86.c
+++ b/tools/libs/guest/xg_dom_x86.c
@@ -989,6 +989,7 @@ const static void *hvm_get_save_record(const void *ctx, unsigned int type,
 
 static int vcpu_hvm(struct xc_dom_image *dom)
 {
+    /* Initialises the BSP */
     struct {
         struct hvm_save_descriptor header_d;
         HVM_SAVE_TYPE(HEADER) header;
@@ -997,6 +998,18 @@ static int vcpu_hvm(struct xc_dom_image *dom)
         struct hvm_save_descriptor end_d;
         HVM_SAVE_TYPE(END) end;
     } bsp_ctx;
+    /* Initialises APICs and MTRRs of every vCPU */
+    struct {
+        struct hvm_save_descriptor header_d;
+        HVM_SAVE_TYPE(HEADER) header;
+        struct hvm_save_descriptor mtrr_d;
+        HVM_SAVE_TYPE(MTRR) mtrr;
+        struct hvm_save_descriptor end_d;
+        HVM_SAVE_TYPE(END) end;
+    } vcpu_ctx;
+    /* Context from full_ctx */
+    const HVM_SAVE_TYPE(MTRR) *mtrr_record;
+    /* Raw context as taken from Xen */
     uint8_t *full_ctx = NULL;
     int rc;
 
@@ -1083,51 +1096,42 @@ static int vcpu_hvm(struct xc_dom_image *dom)
     bsp_ctx.end_d.instance = 0;
     bsp_ctx.end_d.length = HVM_SAVE_LENGTH(END);
 
-    /* TODO: maybe this should be a firmware option instead? */
-    if ( !dom->device_model )
+    /* TODO: maybe setting MTRRs should be a firmware option instead? */
+    mtrr_record = hvm_get_save_record(full_ctx, HVM_SAVE_CODE(MTRR), 0);
+
+    if ( !mtrr_record)
     {
-        struct {
-            struct hvm_save_descriptor header_d;
-            HVM_SAVE_TYPE(HEADER) header;
-            struct hvm_save_descriptor mtrr_d;
-            HVM_SAVE_TYPE(MTRR) mtrr;
-            struct hvm_save_descriptor end_d;
-            HVM_SAVE_TYPE(END) end;
-        } mtrr = {
-            .header_d = bsp_ctx.header_d,
-            .header = bsp_ctx.header,
-            .mtrr_d.typecode = HVM_SAVE_CODE(MTRR),
-            .mtrr_d.length = HVM_SAVE_LENGTH(MTRR),
-            .end_d = bsp_ctx.end_d,
-            .end = bsp_ctx.end,
-        };
-        const HVM_SAVE_TYPE(MTRR) *mtrr_record =
-            hvm_get_save_record(full_ctx, HVM_SAVE_CODE(MTRR), 0);
-        unsigned int i;
-
-        if ( !mtrr_record )
-        {
-            xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
-                         "%s: unable to get MTRR save record", __func__);
-            goto out;
-        }
+        xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
+                     "%s: unable to get MTRR save record", __func__);
+        goto out;
+    }
 
-        memcpy(&mtrr.mtrr, mtrr_record, sizeof(mtrr.mtrr));
+    vcpu_ctx.header_d = bsp_ctx.header_d;
+    vcpu_ctx.header = bsp_ctx.header;
+    vcpu_ctx.mtrr_d.typecode = HVM_SAVE_CODE(MTRR);
+    vcpu_ctx.mtrr_d.length = HVM_SAVE_LENGTH(MTRR);
+    vcpu_ctx.mtrr = *mtrr_record;
+    vcpu_ctx.end_d = bsp_ctx.end_d;
+    vcpu_ctx.end = bsp_ctx.end;
 
-        /*
-         * Enable MTRR, set default type to WB.
-         * TODO: add MMIO areas as UC when passthrough is supported.
-         */
-        mtrr.mtrr.msr_mtrr_def_type = MTRR_TYPE_WRBACK | MTRR_DEF_TYPE_ENABLE;
+    /*
+     * Enable MTRR, set default type to WB.
+     * TODO: add MMIO areas as UC when passthrough is supported in PVH
+     */
+    if ( !dom->device_model )
+        vcpu_ctx.mtrr.msr_mtrr_def_type = MTRR_TYPE_WRBACK | MTRR_DEF_TYPE_ENABLE;
+
+    for ( unsigned int i = 0; i < dom->max_vcpus; i++ )
+    {
+        vcpu_ctx.mtrr_d.instance = i;
 
-        for ( i = 0; i < dom->max_vcpus; i++ )
+        rc = xc_domain_hvm_setcontext(dom->xch, dom->guest_domid,
+                                      (uint8_t *)&vcpu_ctx, sizeof(vcpu_ctx));
+        if ( rc != 0 )
         {
-            mtrr.mtrr_d.instance = i;
-            rc = xc_domain_hvm_setcontext(dom->xch, dom->guest_domid,
-                                          (uint8_t *)&mtrr, sizeof(mtrr));
-            if ( rc != 0 )
-                xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
-                             "%s: SETHVMCONTEXT failed (rc=%d)", __func__, rc);
+            xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
+                         "%s: SETHVMCONTEXT failed (rc=%d)", __func__, rc);
+            goto out;
         }
     }
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823741.1237842 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc5-00009q-Ux; Mon, 21 Oct 2024 15:46:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823741.1237842; Mon, 21 Oct 2024 15:46: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 1t2uc5-00008K-Hb; Mon, 21 Oct 2024 15:46:33 +0000
Received: by outflank-mailman (input) for mailman id 823741;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc4-0006wR-BN
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:32 +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 a407dd8c-8fc3-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:46:30 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-539f2b95775so5435340e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:30 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a407dd8c-8fc3-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525590; x=1730130390; 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=B+0Jbu2kh7Cn4CCRfH/8q2upu7Cfme230B9kVzgUhq8=;
        b=PhSZxRjenbKet4mSJFH9t5Jb128DCXflavWSQy3ynGzQLw6p7YhS3JtMjTBX4WNRkY
         CYyvqXwXVfIzdZ6mxzsAtp+PZP51dCoMbms0yt5pJqn5g0FFUIZToe3fBWf0toAoLAig
         /mVUhcA0bIjs0pbMwpVi4tmilxy9e3ekfQh98=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525590; x=1730130390;
        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=B+0Jbu2kh7Cn4CCRfH/8q2upu7Cfme230B9kVzgUhq8=;
        b=ZZKkaGGMJHLiqduhIrP3h2LvoJ2qcbkijNgAYk14pXowwiEooFy+PUvvq8/9X0GYbl
         eoHTpQlI14xUZdfNVPxaG2PnZmFiNoN53U1mwuwMnkCueeYgvc+tLvPh9dfcspgTAUyz
         MlAgyYt7XW6A0S63LJNqp7+BMncPoXSJqhHtlJJRAktgPyj3PWSqf4odEQ9SrnJJsNd6
         aTraI/753tiYSMVRweDneOWFWIKh0cfj2bmDRBpUM+JmLS1VepOrvBQoffqspyws6dZa
         QgJhQDMAq0UOv5QR1R0kpgJnvLJACUATPku/b1kZliOedEta/JSiHM99OxkY8KY7cDYX
         bi8g==
X-Gm-Message-State: AOJu0YxU8HpjjzrzRbrT3XJAEYiGooWywl8Jvoy/ch7TlAc9h2zI5FQj
	/fVh0Xv35gNULV+WwF9DSnNCjfsPuUTLQjR46XZ3wki+YlrmN88wbSRwhY4yrzwSPZHps8Qi7D1
	5
X-Google-Smtp-Source: AGHT+IHXZ1CnR00lcFsoJkWHss8JP3iG6PSkfzvmmszq9athvUFwwflQJ2IXTTXzwW2fFJl3M3ZsZg==
X-Received: by 2002:a05:6512:3ca7:b0:531:8f2f:8ae7 with SMTP id 2adb3069b0e04-53a1545dfcbmr9958279e87.25.1729525589641;
        Mon, 21 Oct 2024 08:46:29 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v7 07/10] xen/lib: Add topology generator for x86
Date: Mon, 21 Oct 2024 16:45:57 +0100
Message-ID: <20241021154600.11745-8-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a helper to populate topology leaves in the cpu policy from
threads/core and cores/package counts. It's unit-tested in
test-cpu-policy.c, but it's not connected to the rest of the code yet.

Intel's cache leaves (CPUID[4]) have limited width for core counts, so
(in the absence of real world data for how it might behave) this
implementation takes the view that those counts should clip to their
maximum values on overflow. Just like lppp and NC.

Adds the ASSERT() macro to xen/lib/x86/private.h, as it was missing.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * MAX/MIN -> max/min; adding U suffixes to literals for type-matching
    and uppercases for MISRA compliance.
  * Clip core counts in cache leaves to their maximum values
  * Remove unified cache conditional. Less code, and less likely for the
    threads_per_cache field to clip.
  * Add extra check to ensure threads_per_pkg fit in 16 bits (which is
    the space they have in leaf 0xb.
  * Add extra check to detect overflow in threads_per_pkg calculation.
  * Reworked the comment for the topo generator, expressing more clearly
    what are inputs and what are outputs.
---
 tools/tests/cpu-policy/test-cpu-policy.c | 133 +++++++++++++++++++++++
 xen/include/xen/lib/x86/cpu-policy.h     |  16 +++
 xen/lib/x86/policy.c                     |  93 ++++++++++++++++
 xen/lib/x86/private.h                    |   4 +
 4 files changed, 246 insertions(+)

diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c
index 301df2c00285..849d7cebaa7c 100644
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -650,6 +650,137 @@ static void test_is_compatible_failure(void)
     }
 }
 
+static void test_topo_from_parts(void)
+{
+    static const struct test {
+        unsigned int threads_per_core;
+        unsigned int cores_per_pkg;
+        struct cpu_policy policy;
+    } tests[] = {
+        {
+            .threads_per_core = 3, .cores_per_pkg = 1,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    { .nr_logical = 1, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 1, .cores_per_pkg = 3,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 1, .level = 0, .type = 1, .id_shift = 0, },
+                    { .nr_logical = 3, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 7, .cores_per_pkg = 5,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 7, .level = 0, .type = 1, .id_shift = 3, },
+                    { .nr_logical = 5, .level = 1, .type = 2, .id_shift = 6, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 2, .cores_per_pkg = 128,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    { .nr_logical = 2, .level = 0, .type = 1, .id_shift = 1, },
+                    { .nr_logical = 128, .level = 1, .type = 2,
+                      .id_shift = 8, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 3, .cores_per_pkg = 1,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    { .nr_logical = 3, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 1, .cores_per_pkg = 3,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 1, .level = 0, .type = 1, .id_shift = 0, },
+                    { .nr_logical = 3, .level = 1, .type = 2, .id_shift = 2, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 7, .cores_per_pkg = 5,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 7, .level = 0, .type = 1, .id_shift = 3, },
+                    { .nr_logical = 35, .level = 1, .type = 2, .id_shift = 6, },
+                },
+            },
+        },
+        {
+            .threads_per_core = 2, .cores_per_pkg = 128,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    { .nr_logical = 2, .level = 0, .type = 1, .id_shift = 1, },
+                    { .nr_logical = 256, .level = 1, .type = 2,
+                      .id_shift = 8, },
+                },
+            },
+        },
+    };
+
+    printf("Testing topology synthesis from parts:\n");
+
+    for ( size_t i = 0; i < ARRAY_SIZE(tests); ++i )
+    {
+        const struct test *t = &tests[i];
+        struct cpu_policy actual = { .x86_vendor = t->policy.x86_vendor };
+        int rc = x86_topo_from_parts(&actual, t->threads_per_core,
+                                     t->cores_per_pkg);
+
+        if ( rc || memcmp(&actual.topo, &t->policy.topo, sizeof(actual.topo)) )
+        {
+#define TOPO(n, f)  t->policy.topo.subleaf[(n)].f, actual.topo.subleaf[(n)].f
+            fail("FAIL[%d] - '%s %u t/c, %u c/p'\n",
+                 rc,
+                 x86_cpuid_vendor_to_str(t->policy.x86_vendor),
+                 t->threads_per_core, t->cores_per_pkg);
+            printf("  subleaf=%u  expected_n=%u actual_n=%u\n"
+                   "             expected_lvl=%u actual_lvl=%u\n"
+                   "             expected_type=%u actual_type=%u\n"
+                   "             expected_shift=%u actual_shift=%u\n",
+                   0,
+                   TOPO(0, nr_logical),
+                   TOPO(0, level),
+                   TOPO(0, type),
+                   TOPO(0, id_shift));
+
+            printf("  subleaf=%u  expected_n=%u actual_n=%u\n"
+                   "             expected_lvl=%u actual_lvl=%u\n"
+                   "             expected_type=%u actual_type=%u\n"
+                   "             expected_shift=%u actual_shift=%u\n",
+                   1,
+                   TOPO(1, nr_logical),
+                   TOPO(1, level),
+                   TOPO(1, type),
+                   TOPO(1, id_shift));
+#undef TOPO
+        }
+    }
+}
+
 int main(int argc, char **argv)
 {
     printf("CPU Policy unit tests\n");
@@ -667,6 +798,8 @@ int main(int argc, char **argv)
     test_is_compatible_success();
     test_is_compatible_failure();
 
+    test_topo_from_parts();
+
     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 f43e1a3b21e9..67d16fda933d 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -542,6 +542,22 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err);
 
+/**
+ * Synthesise topology information in `p` given high-level constraints
+ *
+ * Topology is expressed in various fields accross several leaves, some of
+ * which are vendor-specific. This function populates such fields given
+ * threads/core, cores/package and other existing policy fields.
+ *
+ * @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.
+ * @return                    0 on success; -errno on failure
+ */
+int x86_topo_from_parts(struct cpu_policy *p,
+                        unsigned int threads_per_core,
+                        unsigned int cores_per_pkg);
+
 #endif /* !XEN_LIB_X86_POLICIES_H */
 
 /*
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index f033d22785be..5ff89022e901 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -2,6 +2,99 @@
 
 #include <xen/lib/x86/cpu-policy.h>
 
+static unsigned int order(unsigned int n)
+{
+    ASSERT(n); /* clz(0) is UB */
+
+    return 8 * sizeof(n) - __builtin_clz(n);
+}
+
+int x86_topo_from_parts(struct cpu_policy *p,
+                        unsigned int threads_per_core,
+                        unsigned int cores_per_pkg)
+{
+    unsigned int threads_per_pkg = threads_per_core * cores_per_pkg;
+    unsigned int apic_id_size;
+
+    /*
+     * threads_per_pkg must fit in 16bits to avoid overflowing
+     * nr_logical in leaf 0xb on Intel systems.
+     */
+    if ( !p || !threads_per_core || !cores_per_pkg ||
+         threads_per_pkg > UINT16_MAX ||
+         threads_per_pkg / cores_per_pkg != threads_per_core )
+        return -EINVAL;
+
+    p->basic.max_leaf = max(0xBU, p->basic.max_leaf);
+
+    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 = min(0xFFU, 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++ )
+        {
+            /* Clip these values to their max if they overflow */
+            sl->cores_per_package = min(63U, cores_per_pkg - 1);
+            sl->threads_per_cache = min(4095U, threads_per_core - 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 = min(0xFFU, threads_per_pkg - 1);
+
+        /* TODO: Expose leaf e1E */
+        p->extd.topoext = false;
+
+        /*
+         * Clip APIC ID to 8 bits, as that's what high core-count machines do.
+         *
+         * That's what AMD EPYC 9654 does with >256 CPUs.
+         */
+        p->extd.apic_id_size = min(8U, apic_id_size);
+
+        break;
+    }
+
+    return 0;
+}
+
 int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err)
diff --git a/xen/lib/x86/private.h b/xen/lib/x86/private.h
index 60bb82a400b7..2ec9dbee33c2 100644
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -4,6 +4,7 @@
 #ifdef __XEN__
 
 #include <xen/bitops.h>
+#include <xen/bug.h>
 #include <xen/guest_access.h>
 #include <xen/kernel.h>
 #include <xen/lib.h>
@@ -17,6 +18,7 @@
 
 #else
 
+#include <assert.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <stdbool.h>
@@ -28,6 +30,8 @@
 
 #include <xen-tools/common-macros.h>
 
+#define ASSERT(x) assert(x)
+
 static inline bool test_bit(unsigned int bit, const void *vaddr)
 {
     const char *addr = vaddr;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823744.1237851 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc7-0000RT-3W; Mon, 21 Oct 2024 15:46:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823744.1237851; Mon, 21 Oct 2024 15: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 1t2uc6-0000P1-JC; Mon, 21 Oct 2024 15:46:34 +0000
Received: by outflank-mailman (input) for mailman id 823744;
 Mon, 21 Oct 2024 15: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc5-0006wR-BY
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:33 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a477a862-8fc3-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:46:31 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a9a68480164so419718166b.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:31 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a477a862-8fc3-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525590; x=1730130390; 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=tyMILG5xYLAUWZBjTYch+adQ7UE+pZOJc6bGIxa6c/k=;
        b=gbIqMD/LvondHsiZusAleCtxCJ5+HF2niZpv+nnedf0K91XU4zShgsemfSsL4j2W+o
         QZnh2x7hbqEpAJ/O0TtsYia/p3SIWYCiaFBc4DKC5B/NuA5hfDT0fzTSkO0UTfM82e6R
         mpqOio20ZhhFpQVByvMQShUc8pAHb3a25Yf2s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525590; x=1730130390;
        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=tyMILG5xYLAUWZBjTYch+adQ7UE+pZOJc6bGIxa6c/k=;
        b=j+VSmJqo1sKSq5Zdv6va34n71gg5tMVwrZOowZRRuCixfWcqxNuWTxQsMixg4Gs2yt
         c0eZV13/KnTTUqIwjunB9wNYOcqdhucUsP8oV9X06zgzdgTvpZtuxS9pL3z/kezRx/0d
         Y11+9FcahEHUKdss58nKyc7M8YlCrZsyn7MKwaD+k1czieVwfOn4iLv8oMy1gSh9qi2I
         01+XJTBn5SBdXuXLnpw+dWUHiQWnoEdYECASz6An1E/5h2UCkvWG09Kd0m2/VPoqXTXB
         c3WkAPebUeUYUfE+hwP1AEj9CLLZFtTEKDp3ci29hvxPNmo/I8hq/KmOAJR8uNTtdPMm
         2zOQ==
X-Gm-Message-State: AOJu0YwBxKLpuv5LOgwSAw3BeNEnMCrwxf1IRMxcNhSAjy83how1KzsR
	hMIQ7DGF0wa2Q1XUroH/eDBvKRDpE/IgPIsS7K4xHCmIfDclrq7naC3MTZI5Ums2ns66eB3alZK
	W
X-Google-Smtp-Source: AGHT+IEHO+BMoGb02KNxKaz4YLWXtEMPsaSKlJNp8iV78Jnc1cuBBSu1Fy+E5dU4JnuL1X/1iUvnbg==
X-Received: by 2002:a17:907:9629:b0:a99:43b2:417e with SMTP id a640c23a62f3a-a9a69ce1072mr1361128466b.62.1729525590393;
        Mon, 21 Oct 2024 08:46:30 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v7 08/10] xen/x86: Derive topologically correct x2APIC IDs from the policy
Date: Mon, 21 Oct 2024 16:45:58 +0100
Message-ID: <20241021154600.11745-9-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-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 extended 0x26 in the future.

The helper returns the legacy mapping when leaf 0xb is not implemented
(as is the case at the moment).

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * Changes to commit message
---
 tools/tests/cpu-policy/test-cpu-policy.c | 68 +++++++++++++++++++++
 xen/include/xen/lib/x86/cpu-policy.h     | 11 ++++
 xen/lib/x86/policy.c                     | 76 ++++++++++++++++++++++++
 3 files changed, 155 insertions(+)

diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c
index 849d7cebaa7c..e5f9b8f7ee39 100644
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -781,6 +781,73 @@ static void test_topo_from_parts(void)
     }
 }
 
+static void test_x2apic_id_from_vcpu_id_success(void)
+{
+    static const struct test {
+        unsigned int vcpu_id;
+        unsigned int threads_per_core;
+        unsigned int cores_per_pkg;
+        uint32_t x2apic_id;
+        uint8_t x86_vendor;
+    } tests[] = {
+        {
+            .vcpu_id = 3, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = 1 << 2,
+        },
+        {
+            .vcpu_id = 6, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = 2 << 2,
+        },
+        {
+            .vcpu_id = 24, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = 1 << 5,
+        },
+        {
+            .vcpu_id = 35, .threads_per_core = 3, .cores_per_pkg = 8,
+            .x2apic_id = (35 % 3) | (((35 / 3) % 8) << 2) | ((35 / 24) << 5),
+        },
+        {
+            .vcpu_id = 96, .threads_per_core = 7, .cores_per_pkg = 3,
+            .x2apic_id = (96 % 7) | (((96 / 7) % 3) << 3) | ((96 / 21) << 5),
+        },
+    };
+
+    const uint8_t vendors[] = {
+        X86_VENDOR_INTEL,
+        X86_VENDOR_AMD,
+        X86_VENDOR_CENTAUR,
+        X86_VENDOR_SHANGHAI,
+        X86_VENDOR_HYGON,
+    };
+
+    printf("Testing x2apic id from vcpu id success:\n");
+
+    /* Perform the test run on every vendor we know about */
+    for ( size_t i = 0; i < ARRAY_SIZE(vendors); ++i )
+    {
+        for ( size_t j = 0; j < ARRAY_SIZE(tests); ++j )
+        {
+            struct cpu_policy policy = { .x86_vendor = vendors[i] };
+            const struct test *t = &tests[j];
+            uint32_t x2apic_id;
+            int rc = x86_topo_from_parts(&policy, t->threads_per_core,
+                                         t->cores_per_pkg);
+
+            if ( rc ) {
+                fail("FAIL[%d] - 'x86_topo_from_parts() failed", rc);
+                continue;
+            }
+
+            x2apic_id = x86_x2apic_id_from_vcpu_id(&policy, t->vcpu_id);
+            if ( x2apic_id != t->x2apic_id )
+                fail("FAIL - '%s cpu%u %u t/c %u c/p'. bad x2apic_id: expected=%u actual=%u\n",
+                     x86_cpuid_vendor_to_str(policy.x86_vendor),
+                     t->vcpu_id, t->threads_per_core, t->cores_per_pkg,
+                     t->x2apic_id, x2apic_id);
+        }
+    }
+}
+
 int main(int argc, char **argv)
 {
     printf("CPU Policy unit tests\n");
@@ -799,6 +866,7 @@ int main(int argc, char **argv)
     test_is_compatible_failure();
 
     test_topo_from_parts();
+    test_x2apic_id_from_vcpu_id_success();
 
     if ( nr_failures )
         printf("Done: %u failures\n", nr_failures);
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index 67d16fda933d..61d5cf3c7f12 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -542,6 +542,17 @@ 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
+ *
+ * If the policy lacks leaf 0xb falls back to legacy mapping of apic_id=cpu*2
+ *
+ * @param p          CPU policy of the domain.
+ * @param 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 id);
+
 /**
  * Synthesise topology information in `p` given high-level constraints
  *
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index 5ff89022e901..427a90f907a2 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -2,6 +2,82 @@
 
 #include <xen/lib/x86/cpu-policy.h>
 
+static uint32_t parts_per_higher_scoped_level(const struct cpu_policy *p,
+                                              size_t lvl)
+{
+    /*
+     * `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.
+     */
+    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 extended 0x26) 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;
+}
+
 static unsigned int order(unsigned int n)
 {
     ASSERT(n); /* clz(0) is UB */
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823743.1237858 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc7-0000co-Od; Mon, 21 Oct 2024 15:46:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823743.1237858; Mon, 21 Oct 2024 15: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 1t2uc7-0000Yz-A4; Mon, 21 Oct 2024 15:46:35 +0000
Received: by outflank-mailman (input) for mailman id 823743;
 Mon, 21 Oct 2024 15: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc5-00072f-8B
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:33 +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 a5497378-8fc3-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 17:46:32 +0200 (CEST)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-539e1543ab8so7757360e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:32 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5497378-8fc3-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525592; x=1730130392; 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=eLoTPwH/b49P11LPnPYXfCXJJX0udy5YrCnU2/Yv3Q8=;
        b=TZiH5fQzDmBSYxkHYc4E8iKOuLHjb9hgosDXyRrwAO91dS3rn6XJqeleqKdDp9WkQk
         hW0gXLdcbdx5kAMBBsW8hlAD0e1oYdxtNEqxh0Np0UUHcpRC7QqGy17CFUnyEyMtXjLI
         KZjE/RcrscVKwuz0Cm7YWyq4ZG6KBA+dI9Mq0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525592; x=1730130392;
        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=eLoTPwH/b49P11LPnPYXfCXJJX0udy5YrCnU2/Yv3Q8=;
        b=UY4iIUgrOsebtQf2gPyvW6zQFIMC3D+oJJfMqzlNkOx0VkOAA2fbwlUxHooReGJWzG
         PQXjL3hMtE/R/yGwJWuGQGlYjH04Uwbu9TsBg30F4S7AVv1qv2U1pGuBEgboTB+6OId7
         ufCQv6hgOaNWmaD99WnX59OB6/lJ0Gi3ozog2dZPo6iw59i8lrp60/YlGJEIJQQ+XfAO
         4ewAE2Hh5fVO6EBSrCauoroCHT1Ze0gouTWp0xo69p3gK+7mkV3HhbUCiLntYpZUe7za
         sHAIdJddbiP61EdRQAf9zw2wFtHv2w3/YzqAxQMbNPtqOxLAAOMUh6+NfErR8xgOtyEu
         +P9Q==
X-Gm-Message-State: AOJu0YzDOQrEgNjPP/ErsMb4FyxLnyAHh2fEYHUkajixwtfMq8KsPNKq
	EGAin/5tpTKkTStObCVSJ217KtO8XCdzia9FRQnF+emc7Cor+67wijqZJDV8hDJjkiMF1cdxcGO
	1
X-Google-Smtp-Source: AGHT+IEKI3F754OZTMcPDYuuXAH9Oj+SnjFeFSVHzQIMr0uet8yShlvwWryHEeCKjJKW5m2/CM2Iqg==
X-Received: by 2002:a05:6512:1244:b0:536:a7a4:c3d4 with SMTP id 2adb3069b0e04-53a154c9f17mr10083781e87.39.1729525591793;
        Mon, 21 Oct 2024 08:46:31 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	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 v7 10/10] tools/x86: Synthesise domain topologies
Date: Mon, 21 Oct 2024 16:46:00 +0100
Message-ID: <20241021154600.11745-11-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Expose sensible topologies in leaf 0xb. At the moment it synthesises
non-HT systems, in line with the previous code intent.

Leaf 0xb in the host policy is no longer zapped and the guest {max,def}
policies have their topology leaves zapped instead. The intent is for
toolstack to populate them. There's no current use for the topology
information in the host policy, but it makes no harm.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * No changes
---
 tools/include/xenguest.h        |  3 +++
 tools/libs/guest/xg_cpuid_x86.c | 29 ++++++++++++++++++++++++++++-
 tools/libs/light/libxl_dom.c    | 22 +++++++++++++++++++++-
 xen/arch/x86/cpu-policy.c       |  9 ++++++---
 4 files changed, 58 insertions(+), 5 deletions(-)

diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index aa50b78dfb89..dcabf219b9cb 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -831,6 +831,9 @@ int xc_set_domain_cpu_policy(xc_interface *xch, uint32_t domid,
 
 uint32_t xc_get_cpu_featureset_size(void);
 
+/* Returns the APIC ID of the `cpu`-th CPU according to `policy` */
+uint32_t xc_cpu_to_apicid(const xc_cpu_policy_t *policy, unsigned int cpu);
+
 enum xc_static_cpu_featuremask {
     XC_FEATUREMASK_KNOWN,
     XC_FEATUREMASK_SPECIAL,
diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c
index 4453178100ad..c591f8732a1a 100644
--- a/tools/libs/guest/xg_cpuid_x86.c
+++ b/tools/libs/guest/xg_cpuid_x86.c
@@ -725,8 +725,16 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
         p->policy.basic.htt       = test_bit(X86_FEATURE_HTT, host_featureset);
         p->policy.extd.cmp_legacy = test_bit(X86_FEATURE_CMP_LEGACY, host_featureset);
     }
-    else
+    else if ( restore )
     {
+        /*
+         * Reconstruct the topology exposed on Xen <= 4.13. It makes very little
+         * sense, but it's what those guests saw so it's set in stone now.
+         *
+         * Guests from Xen 4.14 onwards carry their own CPUID leaves in the
+         * migration stream so they don't need special treatment.
+         */
+
         /*
          * 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.
@@ -782,6 +790,20 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
             break;
         }
     }
+    else
+    {
+        /* TODO: Expose the ability to choose a custom topology for HVM/PVH */
+        unsigned int threads_per_core = 1;
+        unsigned int cores_per_pkg = di.max_vcpu_id + 1;
+
+        rc = x86_topo_from_parts(&p->policy, threads_per_core, cores_per_pkg);
+        if ( rc )
+        {
+            ERROR("Failed to generate topology: rc=%d t/c=%u c/p=%u",
+                  rc, threads_per_core, cores_per_pkg);
+            goto out;
+        }
+    }
 
     nr_leaves = ARRAY_SIZE(p->leaves);
     rc = x86_cpuid_copy_to_buffer(&p->policy, p->leaves, &nr_leaves);
@@ -1028,3 +1050,8 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host,
 
     return false;
 }
+
+uint32_t xc_cpu_to_apicid(const xc_cpu_policy_t *policy, unsigned int cpu)
+{
+    return x86_x2apic_id_from_vcpu_id(&policy->policy, cpu);
+}
diff --git a/tools/libs/light/libxl_dom.c b/tools/libs/light/libxl_dom.c
index 5f4f6830e850..1d7c34820d8f 100644
--- a/tools/libs/light/libxl_dom.c
+++ b/tools/libs/light/libxl_dom.c
@@ -1063,6 +1063,9 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
     libxl_domain_build_info *const info = &d_config->b_info;
     struct xc_dom_image *dom = NULL;
     bool device_model = info->type == LIBXL_DOMAIN_TYPE_HVM ? true : false;
+#if defined(__i386__) || defined(__x86_64__)
+    struct xc_cpu_policy *policy = NULL;
+#endif
 
     xc_dom_loginit(ctx->xch);
 
@@ -1083,8 +1086,22 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
     dom->container_type = XC_DOM_HVM_CONTAINER;
 
 #if defined(__i386__) || defined(__x86_64__)
+    policy = xc_cpu_policy_init();
+    if (!policy) {
+        LOGE(ERROR, "xc_cpu_policy_get_domain failed d%u", domid);
+        rc = ERROR_NOMEM;
+        goto out;
+    }
+
+    rc = xc_cpu_policy_get_domain(ctx->xch, domid, policy);
+    if (rc != 0) {
+        LOGE(ERROR, "xc_cpu_policy_get_domain failed d%u", domid);
+        rc = ERROR_FAIL;
+        goto out;
+    }
+
     for (unsigned int i = 0; i < info->max_vcpus; i++)
-        dom->cpu_to_apicid[i] = 2 * i; /* TODO: Replace by topo calculation */
+        dom->cpu_to_apicid[i] = xc_cpu_to_apicid(policy, i);
 #endif
 
     /* The params from the configuration file are in Mb, which are then
@@ -1214,6 +1231,9 @@ int libxl__build_hvm(libxl__gc *gc, uint32_t domid,
 out:
     assert(rc != 0);
     if (dom != NULL) xc_dom_release(dom);
+#if defined(__i386__) || defined(__x86_64__)
+    xc_cpu_policy_destroy(policy);
+#endif
     return rc;
 }
 
diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 715a66d2a978..a7e0d44cce78 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -266,9 +266,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;
@@ -619,6 +616,9 @@ static void __init calculate_pv_max_policy(void)
     recalculate_xstate(p);
 
     p->extd.raw[0xa] = EMPTY_LEAF; /* No SVM for PV guests. */
+
+    /* Wipe host topology. Populated by toolstack */
+    memset(p->topo.raw, 0, sizeof(p->topo.raw));
 }
 
 static void __init calculate_pv_def_policy(void)
@@ -785,6 +785,9 @@ static void __init calculate_hvm_max_policy(void)
 
     /* It's always possible to emulate CPUID faulting for HVM guests */
     p->platform_info.cpuid_faulting = true;
+
+    /* Wipe host topology. Populated by toolstack */
+    memset(p->topo.raw, 0, sizeof(p->topo.raw));
 }
 
 static void __init calculate_hvm_def_policy(void)
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 15:46:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 15:46:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823745.1237869 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2uc8-0000w5-VF; Mon, 21 Oct 2024 15:46:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823745.1237869; Mon, 21 Oct 2024 15:46: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 1t2uc8-0000sr-EJ; Mon, 21 Oct 2024 15:46:36 +0000
Received: by outflank-mailman (input) for mailman id 823745;
 Mon, 21 Oct 2024 15:46: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=FlK+=RR=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t2uc6-0006wR-Bm
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 15:46:34 +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 a4dd602d-8fc3-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 17:46:32 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a6acac4c3so513927966b.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 08:46:32 -0700 (PDT)
Received: from localhost.localdomain (0545937c.skybroadband.com.
 [5.69.147.124]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370fe5sm215688966b.112.2024.10.21.08.46.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 08:46:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a4dd602d-8fc3-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729525591; x=1730130391; 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=1Ah3/FAbVDfMti3UAa0nn+9bbUxazwt70g5vkEVtpiQ=;
        b=NWUY+epNoew5/1ldTepo39PKCN1U7eBVUnS36w5owKxRhJqxVsbFaIscMzvDPch6fa
         v08E/2ilPKswXK7A27b4q1AN6km/9GfvzinaWZf5PDrxO1HwIGR4MLMhUuxLsfMEpPhI
         oTrgaJqMkPBtZIr9N1sUCa0bhwZue4kgdfPLk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729525591; x=1730130391;
        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=1Ah3/FAbVDfMti3UAa0nn+9bbUxazwt70g5vkEVtpiQ=;
        b=VNfWA7UugFsYGu/tURwu4l8zOBERnp9RIqaSK6zNOIpS0g7lCnpth6s4vzawqAuH8E
         iITBjbUjQ532aPAOxt5ka9d3dB5hOZqmo1VBV1l+jlw7gszuIEou+jG7MQT+aIhKqxRY
         30+Jmp457atv2puJ3Li2nxXmEVu55MeuEJ/Cxtv/nsLZ+a1S7WBOOU64yuXZ9prCnY9S
         D4BiRTEnKGulB3yPR374iFUA/stZvbb8e3xD9hFo7WviqufMgymHbEUdsMdl1x1x2Nxq
         65GQxJwvk0roN0tCk4mEJLq88HHz79aO2IsL7CnTnKYptixumqBdrTjGvLkvJmLfVjcH
         gp/w==
X-Gm-Message-State: AOJu0Yw87dQ++8Zch4n0JvgFOP4WcxDrUvdfdZeA3W/WgSnPBgd3aDIZ
	zEpCCUmQb0ccLxXok4Ne+dlwgOs5G9TIrc6/LRp1NbkearX9xW8mTYSZ7bdQKwNlY+pYBNU+hIe
	Q
X-Google-Smtp-Source: AGHT+IHrrel4rYJieUp5DclhkwRc/OzjjzSiMA6PoQqA3Un6eQfLV09C+ETms8nfNVWbTtbGfL3cog==
X-Received: by 2002:a17:907:e89:b0:a99:61f7:8413 with SMTP id a640c23a62f3a-a9a69a75abdmr1097909866b.23.1729525591042;
        Mon, 21 Oct 2024 08:46:31 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v7 09/10] tools/libguest: Set distinct x2APIC IDs for each vCPU
Date: Mon, 21 Oct 2024 16:45:59 +0100
Message-ID: <20241021154600.11745-10-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Have toolstack populate the new x2APIC ID in the LAPIC save record with
the proper IDs intended for each vCPU.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
v7:
  * Unchanged
---
 tools/libs/guest/xg_dom_x86.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/tools/libs/guest/xg_dom_x86.c b/tools/libs/guest/xg_dom_x86.c
index c98229317db7..38486140ed15 100644
--- a/tools/libs/guest/xg_dom_x86.c
+++ b/tools/libs/guest/xg_dom_x86.c
@@ -1004,11 +1004,14 @@ static int vcpu_hvm(struct xc_dom_image *dom)
         HVM_SAVE_TYPE(HEADER) header;
         struct hvm_save_descriptor mtrr_d;
         HVM_SAVE_TYPE(MTRR) mtrr;
+        struct hvm_save_descriptor lapic_d;
+        HVM_SAVE_TYPE(LAPIC) lapic;
         struct hvm_save_descriptor end_d;
         HVM_SAVE_TYPE(END) end;
     } vcpu_ctx;
-    /* Context from full_ctx */
+    /* Contexts from full_ctx */
     const HVM_SAVE_TYPE(MTRR) *mtrr_record;
+    const HVM_SAVE_TYPE(LAPIC) *lapic_record;
     /* Raw context as taken from Xen */
     uint8_t *full_ctx = NULL;
     int rc;
@@ -1111,6 +1114,8 @@ static int vcpu_hvm(struct xc_dom_image *dom)
     vcpu_ctx.mtrr_d.typecode = HVM_SAVE_CODE(MTRR);
     vcpu_ctx.mtrr_d.length = HVM_SAVE_LENGTH(MTRR);
     vcpu_ctx.mtrr = *mtrr_record;
+    vcpu_ctx.lapic_d.typecode = HVM_SAVE_CODE(LAPIC);
+    vcpu_ctx.lapic_d.length = HVM_SAVE_LENGTH(LAPIC);
     vcpu_ctx.end_d = bsp_ctx.end_d;
     vcpu_ctx.end = bsp_ctx.end;
 
@@ -1125,6 +1130,18 @@ static int vcpu_hvm(struct xc_dom_image *dom)
     {
         vcpu_ctx.mtrr_d.instance = i;
 
+        lapic_record = hvm_get_save_record(full_ctx, HVM_SAVE_CODE(LAPIC), i);
+        if ( !lapic_record )
+        {
+            xc_dom_panic(dom->xch, XC_INTERNAL_ERROR,
+                         "%s: unable to get LAPIC[%d] save record", __func__, i);
+            goto out;
+        }
+
+        vcpu_ctx.lapic = *lapic_record;
+        vcpu_ctx.lapic.x2apic_id = dom->cpu_to_apicid[i];
+        vcpu_ctx.lapic_d.instance = i;
+
         rc = xc_domain_hvm_setcontext(dom->xch, dom->guest_domid,
                                       (uint8_t *)&vcpu_ctx, sizeof(vcpu_ctx));
         if ( rc != 0 )
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 16:25:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 16:25:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823833.1237903 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2vDM-0004lf-U8; Mon, 21 Oct 2024 16:25:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823833.1237903; Mon, 21 Oct 2024 16: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 1t2vDM-0004lY-RO; Mon, 21 Oct 2024 16:25:04 +0000
Received: by outflank-mailman (input) for mailman id 823833;
 Mon, 21 Oct 2024 16:25: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=lolC=RR=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t2vDL-0004lS-Ee
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 16:25:03 +0000
Received: from EUR03-DBA-obe.outbound.protection.outlook.com
 (mail-dbaeur03on20609.outbound.protection.outlook.com
 [2a01:111:f403:260d::609])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 033fc663-8fc9-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 18:24:58 +0200 (CEST)
Received: from DU2PR04CA0346.eurprd04.prod.outlook.com (2603:10a6:10:2b4::33)
 by AS8PR08MB8923.eurprd08.prod.outlook.com (2603:10a6:20b:5b3::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Mon, 21 Oct
 2024 16:24:57 +0000
Received: from DB5PEPF00014B90.eurprd02.prod.outlook.com
 (2603:10a6:10:2b4:cafe::33) by DU2PR04CA0346.outlook.office365.com
 (2603:10a6:10:2b4::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28 via Frontend
 Transport; Mon, 21 Oct 2024 16:24:57 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5PEPF00014B90.mail.protection.outlook.com (10.167.8.228) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Mon, 21 Oct 2024 16:24:56 +0000
Received: ("Tessian outbound 40ef283ec771:v473");
 Mon, 21 Oct 2024 16:24:55 +0000
Received: from L8cf413ebdb2e.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 72B8D149-FA91-426A-990B-E0399C9A4BED.1; 
 Mon, 21 Oct 2024 16:24:45 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L8cf413ebdb2e.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 21 Oct 2024 16:24:45 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by AS2PR08MB8806.eurprd08.prod.outlook.com (2603:10a6:20b:5f2::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Mon, 21 Oct
 2024 16:24:41 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8069.027; Mon, 21 Oct 2024
 16:24: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: 033fc663-8fc9-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=PjwwPgKG2+WnRLoZNtQiEx4v4VhNllxsSy/73F9snJfyVnzo8vMnjSmRmCuqa3s7Vs33HaeS1h19gvBJx1gxObxqe1hig41rQPl5insmV3NHLpyJRfBmbjBveXssQKDlU0CZhQ5qkAe4bwlF6nD2HSJMQ8WHO8dRPplyUbUoztknIQTCNeeAZm+c4udbNzz0j9Mbu7wjysj4p9O39cntD8TsWksvYCQ7dEdN4d3k1Ge2uPkIupQJwPRr0yX5OouveZyfQvOkTa2Wi0or2BtWWBwFg4IwzQZaJOKmXMuKotM4Da5FCTR1UWrvivh56fZy7lAMQoImm8miKyaQSeRS+g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=KDnD/43S0t9dyaAndg3CRk1IIb+YgmQLM873xTrWWZ8=;
 b=bcZaUhFCUtBYDcF9VX75qrKzEDetel3q4sJkR+1/49zZ/M2JC6L4VtlrDg3U3uw6SlbXOSy7NU/M7zCtk8h2XURY5YxELGmItuGaQddxIWT/DEbvOFY4Omp7uy2AROhImvVdxkapRBv4EU0VaGBMs90BRCXp5l0urOIwm7r99aCDxx/O8G3+7Pn9xLgUdAHMWa2GH5acXlYfDZbJ2H9i9hTZdc1VCzsc6jZYvbGr0kYc/kvhFmAvx4WXs44+PxwYYHpL58VwKO1hz/nvthvE2Dr6G8wqmZmt3kSOk7Lnhp2p3T/j6qeLTJHZou0xQptBmX8OSZcmlrCpsI/10Jfdmg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KDnD/43S0t9dyaAndg3CRk1IIb+YgmQLM873xTrWWZ8=;
 b=BGg8Oml8c6wP4FFlMjFaX/QO7jGc6QHJg2EB3td9+BP7NHWYjTEGT7vacqgQCkrJFdzAu4ovB/Ilua2riLZAjcro8yHzFc1/jALRimbsgjLhIunoc/kXzincn26E2zPQFInzYJA1mV+f/8/1F7iKeNVY6iOhOZEHmRhcIJL30S0=
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=arm.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: 20094811b254a8d2
X-TessianGatewayMetadata: P6A2Z1o3jp6qui2tJHXAUZCxukUWYOrDM42jDXNR38PQcWwByZQNlJy7xRF2GSd5xdbaROlqBXHHxW8lTLLhksOa4E+kytLL5Kv4eUalktH1xUwyLs661Y/TQKQCbg1DwsLcHya1qF2Ld4yQ/aAR9FGfiTTtohLIFacGBjb3UBE=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=KqPt8sio7Rk7GYcf4/Q1VY6PBX4dasBO8wwPjTYDWwzmiUn4sRTOGmaUAivYNpqXZxiZ8wbdOeW4aatLi8kT13wmrJORYn3FK3wQcI5jznhQUJJuvmopYBOaEzRg5ykmAgIwAzD1tiufXK2YqzyNV9FL3Mk8WOVSMrPJ0y6E8moyVMEI7FP2RDioRbzrLkEf0VK3lC0LLx4nw/CMz8hDb4ojP2BDNpK1K/LpM0RRmSpEn/gjwDv68LlArB6Lb4l0F6SiEKgIEHmFU/6ZdgrCC5hDMN2wnWYXWgyhW/j1++xvppeyLRd8u55EoUx/0c6bW2KJ0HxXCtbDrgYlgzPrbg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=KDnD/43S0t9dyaAndg3CRk1IIb+YgmQLM873xTrWWZ8=;
 b=NVhwCwU72KivbitDcWoZHpHGyYQGWlsKYJ1BbnjTkqc9YYWxNtH3lXkgFUQswGTqTeK2WioNSwGt22vcy6Kckkgvl8SaQ9hGRTxMlth6t6aGl36oEm5a0oZIWm1YuWt+bNltuG//wrn/Lf51uAskDpIgf81dnCUmkAQIW6AX6eYLZS3HCgP9HXeZEjr+2+pcuxCBoYEfCNM9gix5I/4wpcqnICkV0jKMdBeA6wnF/2fv7mOgGqMMI3PCbRR3fPGBPigBKZeMln6irVoTtA/MVVKS3jPfxFLnhHumTfm75KMbbTrnaBR1mQTChuOQcSiCrfae9XNND4aBleSlXwwTlA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KDnD/43S0t9dyaAndg3CRk1IIb+YgmQLM873xTrWWZ8=;
 b=BGg8Oml8c6wP4FFlMjFaX/QO7jGc6QHJg2EB3td9+BP7NHWYjTEGT7vacqgQCkrJFdzAu4ovB/Ilua2riLZAjcro8yHzFc1/jALRimbsgjLhIunoc/kXzincn26E2zPQFInzYJA1mV+f/8/1F7iKeNVY6iOhOZEHmRhcIJL30S0=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayankuma@amd.com>
CC: Julien Grall <julien@xen.org>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, "xen-devel@lists.xenproject.org"
	<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>
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Topic: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Index: AQHbGx2Ge9N55hTx/U2iD9lYiTVQprKNIysAgARC6gCAAA8agA==
Date: Mon, 21 Oct 2024 16:24:41 +0000
Message-ID: <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
In-Reply-To: <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|AS2PR08MB8806:EE_|DB5PEPF00014B90:EE_|AS8PR08MB8923:EE_
X-MS-Office365-Filtering-Correlation-Id: e383b9c0-3a89-4cb5-ed54-08dcf1ece67f
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?A02jDODr8K4fiPIojShK4mhsovbn7DPKchGPRZgQRMbGcN+yNNY+5vmkNBq8?=
 =?us-ascii?Q?Y48WmosfhKQYaCxbcfpxG2H139Q2ZkbvIv0I9BAQ4juLsAQVh0niJOhwq8LC?=
 =?us-ascii?Q?VdqrLH7Jv6y9MJYm9BeG2L8x0D27V1LxBg/GeKScNhSeBBqZhuL/G+L1dmmI?=
 =?us-ascii?Q?ACG94WOtO2Vm2X0Y9h/U74snppAdsHZmIOJGSGkuLqr6URADsmOYpTmApUzz?=
 =?us-ascii?Q?FGQTc909wiXzQrAQKL7EEtK6P7auIVyf5rYVV4Mwx8ixlPEZo1YIPhEEBQbx?=
 =?us-ascii?Q?K8m2992+5sJOaaTbu+4OD2c3F/eWirSsmlQImgL5J0OAis8jaTwYZwygzlPF?=
 =?us-ascii?Q?T6NEk5fH6EF7SqvkvkkMuNDa5lMFWZ7XcO/8d3k94UaEJqLLRY7NSXO6XCEc?=
 =?us-ascii?Q?6/eu/c17NatmoymoGehs8r3oAreELc+jzhTSwppyNRgG7t6tZuq9dZC42EQr?=
 =?us-ascii?Q?m3QLyX48Au/XNRaNzc7B2HhnunWS3LyFmbnxnjs60fNKt7NHcWbreg5cNMKF?=
 =?us-ascii?Q?PdVLkj177aiwozM3WHZhbno+OrpYRd6cTKacMvkG/nNwO0Gi3lGMJyIsILFF?=
 =?us-ascii?Q?LulhCu5U2TJAr7YavsUZjTp+ecxfOz0z84SmgU6jav5rMBlx4l8MPaDgfqwO?=
 =?us-ascii?Q?nQh6IZ+jvg1+Z3Bc9bqOOaMDM8jXqlO67tLYaLbQDCI1t7sfcI/Wo9P2KTf4?=
 =?us-ascii?Q?yt8jH89qro37af0+uGIyZgPI0ilcZPZ2qoyevXdJDFfGmUsPbnrFmq6PCq7D?=
 =?us-ascii?Q?0wHUSSCRQ/3htTU+OzMscdpFlH09RCw/HHOMnnXFkhF0nS1JF/GUCzxmIkjY?=
 =?us-ascii?Q?57/tY8MLH1z2nOQZpt6tXAf9aca4Z3w5Mxy5mR1ODohMy4hWKQoRTVSU91nK?=
 =?us-ascii?Q?En70hkfQva2xeyZK65gXE9HfsMy5c/iBYfyToacTe2EvcEBgF0lIq4/Eos4i?=
 =?us-ascii?Q?hwip+gAnxkg2YjMegAUy0nofWEG/YpD2dXBHw4LMDVlb3ZHFkC3sCc4xGTEU?=
 =?us-ascii?Q?IX0zIjbMprBpgW6CqQEpIJw/6xJ8Sx8srvNB5uiUnLVIY666Z62WvTTS3TaQ?=
 =?us-ascii?Q?CXnejNwmCjcvmtXtxvasYfSC1Q6t+941q6CH8e4meu+ZRCe87yWKl+L8+dhR?=
 =?us-ascii?Q?LMIzSlrfQ6NnqejkY4PttwcwC9A+3wz6wse5WVYqANny8Og8g86zjk/6jylU?=
 =?us-ascii?Q?3WK8TDi2k8aqueBw3qneAhuRAxzOib4l4p13+utGqiCiHyzd3G038s0wGfkL?=
 =?us-ascii?Q?1oPDfq44M6RjpgN1ryK9oqlrYCa2Nus96vCpVCJDOkNuQuZuVWCSURgH+zOp?=
 =?us-ascii?Q?PozF9V5UEn1VvNO18A4elz35vYEvkMFOEXGt0uwnoKSXFTAMCFkC9f3Bfv1D?=
 =?us-ascii?Q?D79OrSofhwThW4ccOiMRvie0Xpi5?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <AF8BF2327E8CC247BBD181DACD756110@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB8806
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B90.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e6ae8ace-788a-4c05-3645-08dcf1ecddfa
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|35042699022|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?FGJt/acHTtLLxOQ1r8fySAPfoMGHJP/eFIjmrauuJHwKMURCAyJObbm0W38T?=
 =?us-ascii?Q?YdhDZj3V7WbnwMMGY3KY5YwjTVPsVsoc4ARK98Rkh8ElA/4nXWK32vc4rgN9?=
 =?us-ascii?Q?UprNeUpNd0dVDVmJk5RBcVBOUdS1oDcbwOopTbzJRMHdTTYc0KBHCHhtLR8o?=
 =?us-ascii?Q?xM6Z8VN4J94DdN7q+I4kq43J83f3iV3vpp4FeBQ0/yEPTsx2bQNBPfbXelL+?=
 =?us-ascii?Q?9QR7RBtJdjKhZSew43OkYXevVE1mZi8o/BlLUnhpkQBnm6KgszJXDhLPGzjJ?=
 =?us-ascii?Q?jTzwzJm25Fs7IZ9s8r79CNReD5OE78Ks/Gsf5mLcfiiXRRhx6rzTseBE6gHY?=
 =?us-ascii?Q?qhqL+FubzrOc5kDHQhDvj7BgwOtSTT28neR0bv8yb3ID2isQDd4DE3M2V0zd?=
 =?us-ascii?Q?gOBrMKuV4zMsdincm4uysSp8RVSqiAJJAuO0lr52TS+LnOzglqK+pkaOO/Q5?=
 =?us-ascii?Q?3GtnTiHWbtZIhnZBec5FVBHoGVV5HM/kRqyefWDe4BwtvmCuUvGSkLY2S1ve?=
 =?us-ascii?Q?hTIeQhitRyBIqXW1UGYsQGNaG0oAIDlN1yGgyhxbV97hM2pLntvkD6qNEEE8?=
 =?us-ascii?Q?Z29C5kwpyuXTB2kFR05wt4B6sQZJ6d/Zg/qQ3IOu9CQZ1eefaFbntmD9gu2Z?=
 =?us-ascii?Q?eKK0epbR0ch9tVrSYAzqpb5PtGBbBV5FEUoSDvQJNwyZVFrTeBT2ZfJSumDo?=
 =?us-ascii?Q?jDiDwEKG9BsiGow0BXH+R3XQigIpZwQeL6zuT9GMQol5jlPpo/fJVo9niQNB?=
 =?us-ascii?Q?wU8SLfFdM/QzBx12ifZGgHjAlO91m1IWS8rvXVaHJrpRodlhLI9N6Za+qzRY?=
 =?us-ascii?Q?FDUX7EQMNTSLac3VtRFhxrrzQ1b5az93PjrYeRQwsfq7OfNhjefFHgBCjNyy?=
 =?us-ascii?Q?+lEuhv7f5+i9eqM1WfB8eYu0KycVTH0jMdZXlqt9a2xj6q4GL/P6XRku0i4+?=
 =?us-ascii?Q?iw4GvNtSrTRLI3jrnR+EWll2fPaX4kVAjwJtRjTLIHfkEg80bJO3M7ddbylv?=
 =?us-ascii?Q?vi3HZaalwHTCi6EOXrC+o9DeuvHchb+FAEWd4xSvLO4Ntupr296SqGaGBn8L?=
 =?us-ascii?Q?ruAzM5BEmWTqdofMd08h+/D3RYa2jah00BrgBMfi3qDBr9R+UjbkEw+7Qgvt?=
 =?us-ascii?Q?fyxsUcvYM7kh8udvQVbTcUmddWcifwTpS3gze+mJR28Zj9y6hjpfZA/FD9hv?=
 =?us-ascii?Q?Bv1rW0yzyh+smT+zew1A1x/jEonmmLx8cEuDfkvuvbVKfrs3l06aLRN3Ebqy?=
 =?us-ascii?Q?QbzKXV0XfjlLZCuYLbC5CJdmuyOvkgiPSe0a+bDbZxwjlNUEd0BiuvMKZRI0?=
 =?us-ascii?Q?IziZ3jOpXmjlIM9J9mDIbkZ1inUkr97G/2va7Y6Vc1DUQkxxO9lbUcaIjW27?=
 =?us-ascii?Q?tFjXP2b9UlhfmJQatF6Uv2Uz6pswVuOseBHepVbceFYVlKsjyw=3D=3D?=
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:(13230040)(1800799024)(82310400026)(35042699022)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 16:24:56.1487
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e383b9c0-3a89-4cb5-ed54-08dcf1ece67f
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:
	DB5PEPF00014B90.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8923

Hi Ayan,

>>> + */
>>> +FUNC_LOCAL(enable_mpu)
>>> +    mrs   x0, SCTLR_EL2
>>> +    bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>>> +    orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>> +    orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>> +    orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>=20
>> NIT: Can't we have a single "orr" instruction to set all the flags?
> Yes, I will change this.
>>=20
>>> +    dsb   sy
>>=20
>> I still question this use of "dsb sy"...
>=20
> Actually I kept this to ensure that all outstanding memory access are com=
pleted before MPU is enabled.
>=20
> However, prepare_xen_region() is invoked before this and it has a 'dsb sy=
' at the end.
>=20
> So we can drop this barrier.

I suggest to keep the barrier here and drop the one in prepare_xen_region i=
nstead,
have a look in my branch: https://gitlab.com/xen-project/xen/-/merge_reques=
ts/7/diffs?commit_id=3Df42a2816f9bd95f2f6957887be910cb9acd140b5

During my testing I was having trouble without this barrier.

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 16:27:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 16:27:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823841.1237913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2vFx-00081G-Df; Mon, 21 Oct 2024 16:27:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823841.1237913; Mon, 21 Oct 2024 16:27: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 1t2vFx-000819-B1; Mon, 21 Oct 2024 16:27:45 +0000
Received: by outflank-mailman (input) for mailman id 823841;
 Mon, 21 Oct 2024 16:27: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 1t2vFv-000813-UJ
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 16:27: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 1t2vFv-0004dZ-LE; Mon, 21 Oct 2024 16:27:43 +0000
Received: from [2a02:8012:3a1:0:827:16ef:abff:1cc1]
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t2vFv-0007E3-Co; Mon, 21 Oct 2024 16:27: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=e5A8t1WHFzn5iZrUW/XRx6D6YZ7PghDyICb5Fvg3BYc=; b=CgvWofl1qMtQTNfesJ22Czvpks
	0zhBd/I+MACRqFdv1WUQu0lQov5qtFCEOeyHnMfFyczpmorgo+8RiWmY/5HNAdi1JFraZpHXrNsgU
	tMTsfGv312xjgx3r9uf9lJO0sxCF474TbbHwV20DTl0yAaEiZ04poCA1Q3SeQ4CWQtp0=;
Message-ID: <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
Date: Mon, 21 Oct 2024 17:27:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayankuma@amd.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 21/10/2024 17:24, Luca Fancellu wrote:
> Hi Ayan,
> 
>>>> + */
>>>> +FUNC_LOCAL(enable_mpu)
>>>> +    mrs   x0, SCTLR_EL2
>>>> +    bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>>>> +    orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>>> +    orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>>> +    orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>>
>>> NIT: Can't we have a single "orr" instruction to set all the flags?
>> Yes, I will change this.
>>>
>>>> +    dsb   sy
>>>
>>> I still question this use of "dsb sy"...
>>
>> Actually I kept this to ensure that all outstanding memory access are completed before MPU is enabled.
>>
>> However, prepare_xen_region() is invoked before this and it has a 'dsb sy' at the end.
>>
>> So we can drop this barrier.
> 
> I suggest to keep the barrier here and drop the one in prepare_xen_region instead,

I think the barriers in prepare_xen_region() should be kept because we 
may want to use the helper *after* the MPU is turned on.

> have a look in my branch: https://gitlab.com/xen-project/xen/-/merge_requests/7/diffs?commit_id=f42a2816f9bd95f2f6957887be910cb9acd140b5
> 
> During my testing I was having trouble without this barrier.

Was it before or after removing the barriers in prepare_xen_region()? If 
the latter, then I am a bit puzzled why you need it. Did you investigate 
a bit more?

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 17:00:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 17:00:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823852.1237924 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2vlP-0003Hl-T6; Mon, 21 Oct 2024 17:00:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823852.1237924; Mon, 21 Oct 2024 17:00: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 1t2vlP-0003He-P8; Mon, 21 Oct 2024 17:00:15 +0000
Received: by outflank-mailman (input) for mailman id 823852;
 Mon, 21 Oct 2024 17: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=IAaI=RR=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t2vlO-0003HY-PI
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 17:00:14 +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 f037ca44-8fcd-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 19:00:13 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c9850ae22eso5945949a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 10:00:13 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72757sm2127530a12.92.2024.10.21.10.00.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 21 Oct 2024 10:00:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f037ca44-8fcd-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729530013; x=1730134813; 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=+ClLCiN38QDkvTTCPc3TF4FA56XZ7XlB9KpaadPaz9E=;
        b=qQESVnnvvYi0sRycK6+qREGXiE6PYi9PSbHNd/10uSCMXemhixmdTzbnmG2bzeZ0hH
         AxK8NkfHznHtWbnKnrIeBeHRBon/N5E6vjLYKgJWVG32mU45LUiYy41+r6T6kHyOdNux
         cNjLrs6VPfhBh6m25ya+UgLUWlqc9IdGWip6I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729530013; x=1730134813;
        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=+ClLCiN38QDkvTTCPc3TF4FA56XZ7XlB9KpaadPaz9E=;
        b=HYJ/eKmhbUmU5YCyp3W/ZNkDTloAShEtUYTQhskCChWsCfEbutJuowIyu+uP9SoCMe
         BD0G7XTrE8Ug+P7GcX7iZV46bbdxJNFBAtVI1/vWDww72jFzimx8fAE1zM9AAoYpxH1f
         vjipmjAlE3/Bb62j1h66Poa11GLlnFfuNuMgpyEv397BXI/gwQzOd3y9jDxUhYUlLC6k
         kREQNjk4i1yDz6mh7kLFCTSXAskkJcCbE6w5uzpQQlvOllLQtD0Iuh3QhD0jtddHkIJ4
         HUywkglkNF9kM7DIcWKjfwx7aqA41RL7gqoCCI8sDritxQTEYZ0eAbWGQT3bo11okR1k
         38HQ==
X-Gm-Message-State: AOJu0YyTVlYQzQA6sWkoFbhuBkC/fq96j7wvyWmCDe8HDrEJ+ZlvbCuo
	w+TCNAphX5rOsiCT+qtE0M95TabOoyK4fK4H/wKPI3TntpCa8EwdoF8JOAkZyzM=
X-Google-Smtp-Source: AGHT+IG8VXIc3Sb4DbuWCIvzwbgBtUUdVov7W26e/boeJAvl/FXGtDVyzAsUKi158kqjw5Ia/dMFYA==
X-Received: by 2002:a05:6402:5247:b0:5cb:6690:eabb with SMTP id 4fb4d7f45d1cf-5cb6690eb13mr5461415a12.24.1729530012679;
        Mon, 21 Oct 2024 10:00:12 -0700 (PDT)
Date: Mon, 21 Oct 2024 19:00:11 +0200
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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi
 interrupt remapping
Message-ID: <ZxaImxbGOg2uxR3x@macbook.local>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>

On Mon, Oct 21, 2024 at 12:38:13PM +0100, Andrew Cooper wrote:
> On 21/10/2024 12:10 pm, Andrew Cooper wrote:
> > On 18/10/2024 9:08 am, Roger Pau Monne wrote:
> >> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> >> repurposed to contain part of the offset into the remapping table.  Previous to
> >> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> >> table would match the vector.  Such logic was mandatory for end of interrupt to
> >> work, since the vector field (even when not containing a vector) is used by the
> >> IO-APIC to find for which pin the EOI must be performed.
> >>
> >> Introduce a table to store the EOI handlers when using interrupt remapping, so
> >> that the IO-APIC driver can translate pins into EOI handlers without having to
> >> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> >> unconditionally when interrupt remapping is enabled, even if strictly it would
> >> only be required for AMD-Vi.
> >>
> >> Reported-by: Willi Junga <xenproject@ymy.be>
> >> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> >> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> >> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > Yet more fallout from the multi-MSI work.  That really has been a giant
> > source of bugs.
> >
> >> ---
> >>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
> >>  1 file changed, 47 insertions(+)
> >>
> >> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> >> index e40d2f7dbd75..8856eb29d275 100644
> >> --- a/xen/arch/x86/io_apic.c
> >> +++ b/xen/arch/x86/io_apic.c
> >> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> >>  
> >>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> >>  
> >> +/*
> >> + * Store the EOI handle when using interrupt remapping.
> >> + *
> >> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> >> + * format repurposes the vector field to store the offset into the Interrupt
> >> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> >> + * longer matches the contents of the RTE vector field.  Add a translation
> >> + * table so that directed EOI uses the value in the RTE vector field when
> >> + * interrupt remapping is enabled.
> >> + *
> >> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> >> + * when using the remapped format, but use the translation table uniformly in
> >> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> >> + */
> >> +static unsigned int **apic_pin_eoi;
> > I think we can get away with this being uint8_t rather than unsigned
> > int, especially as we're allocating memory when not strictly necessary.
> >
> > The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
> >
> > Vector 0xff is strictly SPIV and not allocated for anything else, so can
> > be reused as a suitable sentinel here.
> 
> Actually, vectors 0 thru 0x0f are also strictly invalid, and could be
> used as sentinels.  That's probably better than trying to play integer
> promotion games between IRQ_VECTOR_UNASSIGNED and uint8_t.

I've been giving some thought about this further, and I don't think
the above is accurate.  While vectors 0 thru 0x0f are strictly
invalid, the EOI handle in AMD-Vi is not a vector, but an offset into
the IR table.  Hence the range of valid handles is 0 to 0xff.

So the type of apic_pin_eoi needs to account for 0 to 0xff plus one
sentinel.  We could use uint16_t or int16_t, but at that point it
might be better to just use unsigned int?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 17:04:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 17:04:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823859.1237934 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2vp1-0003qF-CK; Mon, 21 Oct 2024 17:03:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823859.1237934; Mon, 21 Oct 2024 17:03: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 1t2vp1-0003q8-8U; Mon, 21 Oct 2024 17:03:59 +0000
Received: by outflank-mailman (input) for mailman id 823859;
 Mon, 21 Oct 2024 17:03: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=U+0L=RR=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t2voz-0003pr-Tn
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 17:03:57 +0000
Received: from mail-oo1-xc36.google.com (mail-oo1-xc36.google.com
 [2607:f8b0:4864:20::c36])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 75204ee3-8fce-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 19:03:57 +0200 (CEST)
Received: by mail-oo1-xc36.google.com with SMTP id
 006d021491bc7-5ebc22e6362so615035eaf.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 10:03:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 75204ee3-8fce-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729530236; x=1730135036; 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=Pfhuas0OX4nfogXWgXqPLh1xPv2Vhux6R/Dr5csfTZk=;
        b=bY9Qd6wF8LPQZUZOrLtdSnXZ0rrEb+pwFIqUjMDSzllF6Lg74KQpxSem6117A0N7AK
         zdU9twRv0ofXZa69w8BZqWLyHZqbbmqRWOyjlPlp5O3EaJ2vLCXYzzOR+vrLYAAT7lAv
         ZChVoWyy2rZ8JV4JCNmJ/zneFzSRa+S1r8voumlcH8d4HlXQdPY4FQ8mCqIM2LcB1aFA
         8r/HY8cpqGRIC0Js5l7YkRdmJ2zmHKiCHi94TQOeJ8y0Wm3I1qh4b6O31qqRKwPBQQuD
         NnKnTvFVW4/WKE6MhHceXL1h70xJRiEw4B0myQVB3xy4i3gHeclYnwUA9QNQVRRVk5iK
         2yyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729530236; x=1730135036;
        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=Pfhuas0OX4nfogXWgXqPLh1xPv2Vhux6R/Dr5csfTZk=;
        b=tHrmB54lcRXPYXYWC70Zwfn4hGxLPHT6yNk7X50WjTxDguHhcHxxjhubFhHTj+GBqw
         kF7NhVB2QvZw64A8TKkgRoOIZEwnY9/4OVOvSMnX+kD14TSlom6c5cFAPFiQDHe3HfJb
         gio9D4FN7ff0OeQeR8RmTERO7oQU91TBWxsXfjYyivCTt9NmyG7ynFMG9SCtNePFnwlr
         X66vg1EqOWToBA9C/qbKsHeGzoJEkPoTU9QLfj1jIsKnYXkAwuiq3qNTefKEVtCmuIyT
         prLYKJ+2c/wnK9lpkRKWPd/mdF/GfYuf7GvqFBYLCZR6uU/urLxIHjjp8g9jjSIsu/X/
         BR1A==
X-Gm-Message-State: AOJu0YyWLzsGbKgho1ESwhj4/Omyiw2DMonsIjDP1vm2tQiQ0sZSOyrJ
	pxmVeIlQVXb0Ojk2Sk/FiNXLKgEox8kmo1DLVw/6ljOaMLwQabYutknGIzlIWCEUU+yKvvgsYE/
	veKwvSK5K3ouylHa8Zs4gtgjKI8PJ+g+8mF65VA==
X-Google-Smtp-Source: AGHT+IHeJmkqh+fjjd91jtyqq9WjogdxTQ63VprxCX1ey8SMHzMK3oz1WWMvd0h9i4jwjRz97PNeaxKqCeHOOPpgooc=
X-Received: by 2002:a05:6870:9a23:b0:287:7a8c:4f15 with SMTP id
 586e51a60fabf-2892c34d269mr9391130fac.20.1729530235706; Mon, 21 Oct 2024
 10:03:55 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <457020b684e87ee9ad9488a4ec0d17ade90fdea1.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <457020b684e87ee9ad9488a4ec0d17ade90fdea1.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Mon, 21 Oct 2024 19:03:43 +0200
Message-ID: <CAHUa44FDQPepdzM1q+6QjB+fA4C+0OnC3-+Na6KMD_AVAeQadw@mail.gmail.com>
Subject: Re: [PATCH v2 01/10] xen/arm: ffa: Rework firmware discovery
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Rework firmware discovery during probe:
> - move prints into the probe
> - rename ffa_version to ffa_fw_version as the variable identifies the
>   version of the firmware and not the one we support
> - add error prints when allocation fail during probe
>
> No functional changes.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - Fix error message when we fail to retrieve ffa_version
> - Move back printing the firmware version before checking supported
>   features
> - Use Warning instead of Info to inform user that FF-A is not supported
>   in firmware.
> ---
>  xen/arch/arm/tee/ffa.c | 44 ++++++++++++++++++++++++++----------------
>  1 file changed, 27 insertions(+), 17 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 022089278e1c..1cc4023135d5 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -71,8 +71,8 @@
>
>  #include "ffa_private.h"
>
> -/* Negotiated FF-A version to use with the SPMC */
> -static uint32_t __ro_after_init ffa_version;
> +/* Negotiated FF-A version to use with the SPMC, 0 if not there or suppo=
rted */
> +static uint32_t __ro_after_init ffa_fw_version;
>
>
>  /*
> @@ -105,10 +105,7 @@ static bool ffa_get_version(uint32_t *vers)
>
>      arm_smccc_1_2_smc(&arg, &resp);
>      if ( resp.a0 =3D=3D FFA_RET_NOT_SUPPORTED )
> -    {
> -        gprintk(XENLOG_ERR, "ffa: FFA_VERSION returned not supported\n")=
;
>          return false;
> -    }
>
>      *vers =3D resp.a0;
>
> @@ -372,7 +369,7 @@ static int ffa_domain_init(struct domain *d)
>      struct ffa_ctx *ctx;
>      int ret;
>
> -    if ( !ffa_version )
> +    if ( !ffa_fw_version )
>          return -ENODEV;
>       /*
>        * We can't use that last possible domain ID or ffa_get_vm_id() wou=
ld
> @@ -505,6 +502,9 @@ static bool ffa_probe(void)
>       */
>      BUILD_BUG_ON(PAGE_SIZE !=3D FFA_PAGE_SIZE);
>
> +    printk(XENLOG_INFO "ARM FF-A Mediator version %u.%u\n",
> +           FFA_MY_VERSION_MAJOR, FFA_MY_VERSION_MINOR);
> +
>      /*
>       * psci_init_smccc() updates this value with what's reported by EL-3
>       * or secure world.
> @@ -514,22 +514,24 @@ static bool ffa_probe(void)
>          printk(XENLOG_ERR
>                 "ffa: unsupported SMCCC version %#x (need at least %#x)\n=
",
>                 smccc_ver, ARM_SMCCC_VERSION_1_2);
> -        return false;
> +        goto err_no_fw;
>      }
>
>      if ( !ffa_get_version(&vers) )
> -        return false;
> +    {
> +        gprintk(XENLOG_ERR, "Cannot retrieve the FFA version\n");
> +        goto err_no_fw;
> +    }
>
>      if ( vers < FFA_MIN_SPMC_VERSION || vers > FFA_MY_VERSION )
>      {
>          printk(XENLOG_ERR "ffa: Incompatible version %#x found\n", vers)=
;
> -        return false;
> +        goto err_no_fw;
>      }
>
> -    major_vers =3D (vers >> FFA_VERSION_MAJOR_SHIFT) & FFA_VERSION_MAJOR=
_MASK;
> +    major_vers =3D (vers >> FFA_VERSION_MAJOR_SHIFT)
> +                 & FFA_VERSION_MAJOR_MASK;

Spurious change?

>      minor_vers =3D vers & FFA_VERSION_MINOR_MASK;
> -    printk(XENLOG_INFO "ARM FF-A Mediator version %u.%u\n",
> -           FFA_MY_VERSION_MAJOR, FFA_MY_VERSION_MINOR);

It's not a big deal, but isn't it useful to know which version we're
at? If it's too much with a separate line, how about adding "(our
version %u.u%)" at the end of the line below?

>      printk(XENLOG_INFO "ARM FF-A Firmware version %u.%u\n",
>             major_vers, minor_vers);
>
> @@ -546,12 +548,18 @@ static bool ffa_probe(void)
>           !check_mandatory_feature(FFA_MEM_SHARE_32) ||
>           !check_mandatory_feature(FFA_MEM_RECLAIM) ||
>           !check_mandatory_feature(FFA_MSG_SEND_DIRECT_REQ_32) )
> -        return false;
> +    {
> +        printk(XENLOG_ERR "ffa: Mandatory feature not supported by fw\n"=
);
> +        goto err_no_fw;
> +    }
>
> -    if ( !ffa_rxtx_init() )
> -        return false;
> +    ffa_fw_version =3D vers;
>
> -    ffa_version =3D vers;
> +    if ( !ffa_rxtx_init() )
> +    {
> +        printk(XENLOG_ERR "ffa: Error during RXTX buffer init\n");

With this added, wouldn't it make sense to remove the error print in
ffa_rxtx_init()?

Cheers,
Jens

> +        goto err_no_fw;
> +    }
>
>      if ( !ffa_partinfo_init() )
>          goto err_rxtx_destroy;
> @@ -564,7 +572,9 @@ static bool ffa_probe(void)
>
>  err_rxtx_destroy:
>      ffa_rxtx_destroy();
> -    ffa_version =3D 0;
> +err_no_fw:
> +    ffa_fw_version =3D 0;
> +    printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
>
>      return false;
>  }
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 17:16:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 17:16:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823866.1237944 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2w0Z-0007re-Bw; Mon, 21 Oct 2024 17:15:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823866.1237944; Mon, 21 Oct 2024 17:15: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 1t2w0Z-0007rX-9O; Mon, 21 Oct 2024 17:15:55 +0000
Received: by outflank-mailman (input) for mailman id 823866;
 Mon, 21 Oct 2024 17:15: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2w0Y-0007rR-8Z
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 17:15:54 +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 1e18811c-8fd0-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 19:15:49 +0200 (CEST)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-539f4d8ef84so4833034e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 10:15:51 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370e91sm225973366b.123.2024.10.21.10.15.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 10:15:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1e18811c-8fd0-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729530951; x=1730135751; 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=c0cXqLRwe3iym/6jLCN0Oy99JZZMOf7h4GoFd86Hcbo=;
        b=OHZdzuRewp+0a/nbWleZJAwlZcA7vPB3EhfY7AQYKQVaDa3+wW71Y3rqUSWe2PNBAn
         yDv430Tn+tsjvrS4GBAHl7qswyaTmEnHPWtKsXdqt2nMKn8l4t/i1yeC4uJXi0lSXho/
         mQtpjEEBQ8cvwTKxK1PcPgJvYYj/CywaYLIp8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729530951; x=1730135751;
        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=c0cXqLRwe3iym/6jLCN0Oy99JZZMOf7h4GoFd86Hcbo=;
        b=KZ2Xc6Pq73v86XsOJNN6sIcf7QSFyUYkBp5f2wvD0y+m2MPHTyqvU+tSTd0OPFGk5z
         UAPXozBcXDeBvVPEcPGG0cL7zZFWUd2Jkee4gCmVQpH0+yyteXc2nJBX/MDslRmjpv7b
         0rhnIMbj20F3SmU14IDp0iiVUMKDIau5ZeeavRtnlwkuRSt1E2YV4ONsuABuhUlVZVRF
         kzSovP8KsuoesPLP1HbB08DKC1oNOiXGO8PeQBKnumD33O/mzzsevs+Jx9wfwe0T+S0P
         QIga0OWB5ljsyM9CbisyadDFWMitQ6U1M6yZHaTuEdFjhxR+hXcduODexh5uvThErh0L
         b9Lg==
X-Forwarded-Encrypted: i=1; AJvYcCUpdBNi7L0LA9oUzhaIhdPkvGG/Yfg8o/Z97PEtzYlqMxhvyLZxslFu30RZW2Ibd5okFf2V8ixHIyE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw8gWq2CqP3Qcqxe/AscoZWGX7jUk2/kGb8xJFTxg+Yy2Ly3s48
	lSSzDhrKU4KsZVJv6M1+qyyn1mAz1WwC9kWF+q8Cn0yCTVp523tTFFXK4vKsWoE=
X-Google-Smtp-Source: AGHT+IGpJk3m6yOKHHmrgbNGEx4tr6J99WQbuYOtItfqz5hbojFDmfC8M+J1wgIuHLkcSX6uaVpF2A==
X-Received: by 2002:a05:6512:3d29:b0:539:e94d:2d3d with SMTP id 2adb3069b0e04-53a1544140bmr6307934e87.7.1729530951174;
        Mon, 21 Oct 2024 10:15:51 -0700 (PDT)
Message-ID: <208d469c-d86d-417b-a2cc-2e06337d15ba@citrix.com>
Date: Mon, 21 Oct 2024 18:15:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 03/38] x86/boot: move headroom to boot modules
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
 <20241021004613.18793-4-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021004613.18793-4-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 1:45 am, Daniel P. Smith wrote:
> The purpose of struct boot_module is to encapsulate the state of boot module as
> it is processed by Xen. Locating boot module state struct boot_module reduces
> the number of global variables as well as the number of state variables that
> must be passed around. It also lays the groundwork for hyperlaunch mult-domain
> construction, where multiple instances of state variables like headroom will be
> needed.
>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
> ---
> Changes since v6:
> - add blank line to separate comment from line above it
>
> Changes since v5:
> - reword and expand comment on headroom
> - consolidated declaration and assignment
> ---
>  xen/arch/x86/include/asm/bootinfo.h | 14 ++++++++++++++
>  xen/arch/x86/setup.c                | 21 ++++++++++++---------
>  2 files changed, 26 insertions(+), 9 deletions(-)
>
> diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
> index ffa443406747..59e6696f9671 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -17,6 +17,20 @@
>  struct boot_module {
>      /* Transitionary only */
>      module_t *mod;
> +
> +    /*
> +     * A boot module may contain a compressed kernel that will require
> +     * additional space, before the module data, into which the kernel will be
> +     * decompressed.

The grammar is a bit awkward.  Space beforehand is an implementation
choice of Xen, not a requirement.

Can I suggest:

---%<---
A boot module may need decompressing by Xen.  Headroom is an estimate of
the additional space required to decompress the module.

Headroom is accounted for at the start of the module.  Decompressing is
done in-place with input=start, output=start-headroom, expecting the
pointers to become equal (give or take some rounding) when decompression
is complete.
---%<---


> +     *
> +     * Memory layout at boot:
> +     *     [ compressed kernel ]
> +     * After boot module relocation:
> +     *     [ estimated headroom + PAGE_SIZE rounding ][ compressed kernel ]
> +     * After kernel decompression:
> +     *     [ decompressed kernel ][ unused rounding ]
> +     */

I'm not sure how helpful this is.  If anything, I'd say it ought to be:

                       start + size --+
          start --+                   |
                  v                   v
                  +-------------------+
                  | Compressed Module |
 +----------------+-------------------+
 |         Decompressed Module        |
 +----------------+-------------------+
 ^
 +-- start - headroom


~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 17:21:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 17:21:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823876.1237954 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2w5n-0003IA-1R; Mon, 21 Oct 2024 17:21:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823876.1237954; Mon, 21 Oct 2024 17: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 1t2w5m-0003I3-Uy; Mon, 21 Oct 2024 17:21:18 +0000
Received: by outflank-mailman (input) for mailman id 823876;
 Mon, 21 Oct 2024 17:21: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2w5m-0003Hx-32
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 17:21:18 +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 e1503996-8fd0-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 19:21:16 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c9150f9ed4so5839551a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 10:21:17 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91578129sm231220166b.186.2024.10.21.10.21.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 10:21:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1503996-8fd0-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729531276; x=1730136076; 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=ttHRPKCEufgYnbrjF1RktWen+MRJjtRBCUpJjtMLEsg=;
        b=j66rJFLhZG3ttmO1AbokxmaaKiy0S2R0/18RVA6RtRUviko3pko43cArtR2zG1KU3a
         pf/XIDB0Tunnf94S2BM8M5kdBa8EIoy38x1JatH96BnWIkQLsGRcSgDGmrH9QiKrho0I
         ljxQWZHyYkOcHLLQ6udi8VHNdZ0if4JKk3Olc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729531276; x=1730136076;
        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=ttHRPKCEufgYnbrjF1RktWen+MRJjtRBCUpJjtMLEsg=;
        b=juvdq1hkEcdHQJkLjrbOdYUdXqcL7LhG8SOzfn6XXZ1BQdT1fHu906TleYdzBRBYnE
         vWvF/cyL7wjZOXc2omu+m0TjTBUHowCpfrPrqIxzWXxtOYCP0K51f83cEhgbsQnBzZuA
         SpF9ctrvPx8hdK+mkJK/oC7gf5nxTlll2ojcsjjB0eg0GFiM+D62gAStJeuzIxO6gn29
         O1gc9VafmLUOxY40abwyboDHIVX/a4/tQYosdNc4uEl13r3Bd7vuuKz5L6mUgjnuTtpe
         dg/DF0elhsRBwuZNIhlT6JCRKWT3as+zoPvOwJ5IakN83cwgW9GsxbZLI66g53b1KeGT
         PJWA==
X-Gm-Message-State: AOJu0Yzvq1Mb4BDk/d9TflX36KADNj8+AJGSwH4ByvVX8wh5h2JwIjts
	+f0zHltCe/+GGIi0JuulcuJb50nPcGaJEVmkSjwWNIRylHxoKCVVK0QLKDKDdG8=
X-Google-Smtp-Source: AGHT+IEZ1M6TSUb+PuEjO1tRaP6rIBN9qobuuOfBXeepQl3qh8uSzYfZXl2iN+zmWEqccWLnkia2qw==
X-Received: by 2002:a17:907:94d4:b0:a99:f56e:ce40 with SMTP id a640c23a62f3a-a9a69c9e9c1mr1482575466b.47.1729531276568;
        Mon, 21 Oct 2024 10:21:16 -0700 (PDT)
Message-ID: <eddf8637-ebbf-46b0-b2f9-8592464acf76@citrix.com>
Date: Mon, 21 Oct 2024 18:21:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 Willi Junga <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <0f3a9c97-3903-414c-b076-5012e6bc9350@citrix.com>
 <ZxaImxbGOg2uxR3x@macbook.local>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZxaImxbGOg2uxR3x@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 6:00 pm, Roger Pau Monné wrote:
> On Mon, Oct 21, 2024 at 12:38:13PM +0100, Andrew Cooper wrote:
>> On 21/10/2024 12:10 pm, Andrew Cooper wrote:
>>> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
>>>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>>>> repurposed to contain part of the offset into the remapping table.  Previous to
>>>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>>>> table would match the vector.  Such logic was mandatory for end of interrupt to
>>>> work, since the vector field (even when not containing a vector) is used by the
>>>> IO-APIC to find for which pin the EOI must be performed.
>>>>
>>>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>>>> that the IO-APIC driver can translate pins into EOI handlers without having to
>>>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>>>> unconditionally when interrupt remapping is enabled, even if strictly it would
>>>> only be required for AMD-Vi.
>>>>
>>>> Reported-by: Willi Junga <xenproject@ymy.be>
>>>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>>>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> Yet more fallout from the multi-MSI work.  That really has been a giant
>>> source of bugs.
>>>
>>>> ---
>>>>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
>>>>  1 file changed, 47 insertions(+)
>>>>
>>>> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
>>>> index e40d2f7dbd75..8856eb29d275 100644
>>>> --- a/xen/arch/x86/io_apic.c
>>>> +++ b/xen/arch/x86/io_apic.c
>>>> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>>>>  
>>>>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>>>>  
>>>> +/*
>>>> + * Store the EOI handle when using interrupt remapping.
>>>> + *
>>>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
>>>> + * format repurposes the vector field to store the offset into the Interrupt
>>>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
>>>> + * longer matches the contents of the RTE vector field.  Add a translation
>>>> + * table so that directed EOI uses the value in the RTE vector field when
>>>> + * interrupt remapping is enabled.
>>>> + *
>>>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
>>>> + * when using the remapped format, but use the translation table uniformly in
>>>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
>>>> + */
>>>> +static unsigned int **apic_pin_eoi;
>>> I think we can get away with this being uint8_t rather than unsigned
>>> int, especially as we're allocating memory when not strictly necessary.
>>>
>>> The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
>>>
>>> Vector 0xff is strictly SPIV and not allocated for anything else, so can
>>> be reused as a suitable sentinel here.
>> Actually, vectors 0 thru 0x0f are also strictly invalid, and could be
>> used as sentinels.  That's probably better than trying to play integer
>> promotion games between IRQ_VECTOR_UNASSIGNED and uint8_t.
> I've been giving some thought about this further, and I don't think
> the above is accurate.  While vectors 0 thru 0x0f are strictly
> invalid, the EOI handle in AMD-Vi is not a vector, but an offset into
> the IR table.  Hence the range of valid handles is 0 to 0xff.

Yeah, that occurred to me after sending.  With IR active, it's no longer
an architectural vector, and can have any 8-bit value.

> So the type of apic_pin_eoi needs to account for 0 to 0xff plus one
> sentinel.  We could use uint16_t or int16_t, but at that point it
> might be better to just use unsigned int?

Either of those are still half the allocated memory vs unsigned int, so
worth it IMO.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 18:00:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 18:00:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823885.1237964 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2who-0000Ka-Ul; Mon, 21 Oct 2024 18:00:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823885.1237964; Mon, 21 Oct 2024 18:00: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 1t2who-0000KT-Rs; Mon, 21 Oct 2024 18:00:36 +0000
Received: by outflank-mailman (input) for mailman id 823885;
 Mon, 21 Oct 2024 18:00: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2whn-0000KN-PY
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 18:00:35 +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 5e3e2efd-8fd6-11ef-a0be-8be0dac302b0;
 Mon, 21 Oct 2024 20:00:34 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9aa8895facso48526666b.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 11:00:34 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ed80fsm235783666b.46.2024.10.21.11.00.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 11:00:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e3e2efd-8fd6-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729533633; x=1730138433; 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=lhAUSEoXCuCRIGV3DTbLXgmsJN9hgsLll/uq1npoaYw=;
        b=VT/NMuDhAc5fQDYcJ7UVhlLAonUWQRMyBzJ8K+Lu4EjlglDSU09nmYoB3btfuUmdp6
         AvkboG+s3EMOZHGxOp3T//lr4UXRmire28JPDnlxCsYD7SajUY6bUVjCpNC1Rdm7/mAs
         +ijZPxEK5/fVWARN7Nhox80JXrXalLDr/EYOU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729533633; x=1730138433;
        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=lhAUSEoXCuCRIGV3DTbLXgmsJN9hgsLll/uq1npoaYw=;
        b=Nsi2Id7eOrIQUYxOj15Ij0hQ4w3MuiT/gLidy4o2/vbvZZureYMFUMl12rhZob8jgN
         48RCcjouM3WePSqzwrKeS3rEpBw0nFs3Bpk6+ntC1hib+U0Zbmjl2iNdhzOTThUQz8Xm
         iA+nJ4DRNr1C6G8Ff5bDriHgGATtKC54GMXdwKukSupPbJZ4tSWjm4oUX/31GNBGbhlo
         8GeQh2J7QrJel7StC/mDlARLyrw/m52mH5pXOpT8epdZlvROZ5ta+x1jO8KJ35lVLXOe
         sf2rt9RLrzhDndB79lbqs7NT+QXmKHA7Pcif0jhBt+7fa18WLtzW2Ts3N1Oj31dPPlx1
         O0CA==
X-Forwarded-Encrypted: i=1; AJvYcCUL2EEnGW5MGrEX9d6Mt6LrKYJn4hjBzpw3+E214HwdDbcE0CGYKDEXmekprRb9wgg5UW7vZWRwK5M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyWd8XTSQ8PU/4ddTjkwGZY2yvG3b2abpvOqve+YKxD/XAIs/7f
	fA2PkrUbfQq93iPsTxDvIbqGiBHOwAc9L/uj3wbC4V9cTa/kvBBMG/VCjOsbPxs=
X-Google-Smtp-Source: AGHT+IEyvYfbGX/aHLK/vMiJzR14WOKq0MsTjaSjePusBiVnKX8OnyeG6rW63ZXnT3jhKL2lwjN0Mw==
X-Received: by 2002:a17:907:3f09:b0:a9a:8a4:e090 with SMTP id a640c23a62f3a-a9a69c8fcf9mr1224017766b.50.1729533633383;
        Mon, 21 Oct 2024 11:00:33 -0700 (PDT)
Message-ID: <7834aee9-db1d-4b1c-a71a-0434c5c590d1@citrix.com>
Date: Mon, 21 Oct 2024 19:00:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 04/38] x86/boot: convert mod refs to boot_module mod
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
 <20241021004613.18793-5-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021004613.18793-5-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 1:45 am, Daniel P. Smith wrote:
> To allow a slow conversion of x86 over to struct boot_module, start with
> replacing all references to module_t mod, only in setup.c, to the mod element
> of struct boot_module. These serves twofold, first to allow the incremental
> transition from module_t fields to struct boot_module fields. The second is to
> allow the conversion of function definitions from taking module_t parameters to
> accepting struct boot_module as needed when a transitioned field will be
> accessed.
>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> ---
> Changes since v6:
> - code style
> - switched to a local ref
>
> Changes since v5:
> - rewrote commit message
> - coding style changes
> - added comment for initial_images assignment
> ---
>  xen/arch/x86/setup.c | 62 +++++++++++++++++++++++++-------------------
>  1 file changed, 35 insertions(+), 27 deletions(-)
>
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index 48809aa94451..b6d688f8fe5e 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1364,15 +1364,19 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>      set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
>      kexec_reserve_area();
>  
> -    initial_images = mod;
> +    /*
> +     * The field bi->mods[0].mod points to the first element of the module_t
> +     * array.
> +     */
> +    initial_images = bi->mods[0].mod;

This looks actively-dodgy.  It might be correct, but its also not necessary.

bi->mods[] is populated and both initial_images_nrpages() and
discard_initial_images() have a local bi-> pointer which they already
consume nr_module from, so you really can drop initial_images here in
the series.

i.e. you want to pull patch 28 forward to ahead of of this one, and it
will reduce the churn through the series.

But mostly, it removes a transient-WTF construct from the series, making
it easier to review.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 18:11:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 18:11:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823893.1237973 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2wsT-0004BW-SN; Mon, 21 Oct 2024 18:11:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823893.1237973; Mon, 21 Oct 2024 18:11: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 1t2wsT-0004BP-Pd; Mon, 21 Oct 2024 18:11:37 +0000
Received: by outflank-mailman (input) for mailman id 823893;
 Mon, 21 Oct 2024 18:11: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2wsS-0004BH-E0
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 18:11:36 +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 e61ce34c-8fd7-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 20:11:31 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-539f7606199so5308045e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 11:11:33 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a9155a2d1sm238244666b.124.2024.10.21.11.11.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 11:11:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e61ce34c-8fd7-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729534293; x=1730139093; 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=zbIE9pfFuCa+GQjRM0KB5UaeF1BNQgtIQ7XLvrQX+rM=;
        b=NwTmWBHBMannXpdcgr68m1a//xU95gQB+MguH9brwZoX5oI1GvfXjLV84w7EukeGuN
         CnvqPRGLa7Fh9YRNZ+2wa8KK7/hS+s6NlUEQvj9P8zpmkypcAviFROQHQYFpRO1/rIAO
         3HJSM9yTJI10ENzD5tWJoxLXQys+oyofhYbI0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729534293; x=1730139093;
        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=zbIE9pfFuCa+GQjRM0KB5UaeF1BNQgtIQ7XLvrQX+rM=;
        b=KUJfXhRfCs0HqG2VeyUJ6doDB84dSxwiyqMufLpkmc4pl7xcTIFbpiIkNOIlkSjn5s
         pOjBL5hxO37Kh416LPORz0mReEIWxv4Q/tQ+Uo6Y75aRbTcvmgGiv4nDbQyuggZzzODX
         C+uYriUG9ewJdk0rkfC+acNTgpsnsySH2bNl98Wqp3FuhUOM3IPIdIzL5+AdGY7aVElz
         z0IlElL5yq9mJTfa/AM+qN9e5MLF6/DGKofGRKlUqgiGcnEosvzrpbgXaFyvDJddtwgc
         YtzWKoRJPBWHVF1A7RH+LU9wmGSz9RGsLrgwHG5CGqaNRUmQ8DDS0guoMXnambLofUKo
         4juA==
X-Forwarded-Encrypted: i=1; AJvYcCUiAzL0o95q04FZaCvFkmc7niO5a5m59JMbLAzhHakWgSKa7UO/itULvdLQYWvkzMbSYu/GRlrPJME=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx6Rrqbgyj4SxofaIbCxrhBf21BKHmC5lNImr1wlhr5xqLU3NCv
	SrIP4ZZF5IumG3n8id58q+2hFXZG6x3bv/uNUoZ4LAUgozGeTp1OUKfLZw+eX7A=
X-Google-Smtp-Source: AGHT+IH06H7DsMMUF+fpvzIlQLl3uXkLLJYW5/8WBADE4mpEDFIBEndrfcMSgRH2Ydx5q2TlQjEl7g==
X-Received: by 2002:a05:6512:b95:b0:535:6aa9:9868 with SMTP id 2adb3069b0e04-53b12bfcf01mr495935e87.19.1729534293198;
        Mon, 21 Oct 2024 11:11:33 -0700 (PDT)
Message-ID: <78098aa0-b656-45e0-84c8-1f5df5458018@citrix.com>
Date: Mon, 21 Oct 2024 19:11:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 04/38] x86/boot: convert mod refs to boot_module mod
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
 <20241021004613.18793-5-dpsmith@apertussolutions.com>
 <7834aee9-db1d-4b1c-a71a-0434c5c590d1@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <7834aee9-db1d-4b1c-a71a-0434c5c590d1@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 7:00 pm, Andrew Cooper wrote:
> On 21/10/2024 1:45 am, Daniel P. Smith wrote:
>> To allow a slow conversion of x86 over to struct boot_module, start with
>> replacing all references to module_t mod, only in setup.c, to the mod element
>> of struct boot_module. These serves twofold, first to allow the incremental
>> transition from module_t fields to struct boot_module fields. The second is to
>> allow the conversion of function definitions from taking module_t parameters to
>> accepting struct boot_module as needed when a transitioned field will be
>> accessed.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> ---
>> Changes since v6:
>> - code style
>> - switched to a local ref
>>
>> Changes since v5:
>> - rewrote commit message
>> - coding style changes
>> - added comment for initial_images assignment
>> ---
>>  xen/arch/x86/setup.c | 62 +++++++++++++++++++++++++-------------------
>>  1 file changed, 35 insertions(+), 27 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index 48809aa94451..b6d688f8fe5e 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -1364,15 +1364,19 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>>      set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
>>      kexec_reserve_area();
>>  
>> -    initial_images = mod;
>> +    /*
>> +     * The field bi->mods[0].mod points to the first element of the module_t
>> +     * array.
>> +     */
>> +    initial_images = bi->mods[0].mod;
> This looks actively-dodgy.  It might be correct, but its also not necessary.
>
> bi->mods[] is populated and both initial_images_nrpages() and
> discard_initial_images() have a local bi-> pointer which they already
> consume nr_module from, so you really can drop initial_images here in
> the series.
>
> i.e. you want to pull patch 28 forward to ahead of of this one, and it
> will reduce the churn through the series.
>
> But mostly, it removes a transient-WTF construct from the series, making
> it easier to review.

In fact, having done this locally, both patches 27 and 28 disappear. 
Patches 29 and 30 are the ones which swap these two functions away from
using the mod-> pointer, and they're basically the same.

So yes, far less churn.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 18:28:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 18:28:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823904.1237983 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2x8S-00024C-8t; Mon, 21 Oct 2024 18:28:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823904.1237983; Mon, 21 Oct 2024 18: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 1t2x8S-000245-6I; Mon, 21 Oct 2024 18:28:08 +0000
Received: by outflank-mailman (input) for mailman id 823904;
 Mon, 21 Oct 2024 18:28: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=euus=RR=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t2x8Q-00023z-Lr
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 18:28:06 +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 35fad601-8fda-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 20:28:04 +0200 (CEST)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-37d495d217bso4721954f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 11:28:04 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571ea5sm238233166b.160.2024.10.21.11.28.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 21 Oct 2024 11:28:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35fad601-8fda-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729535284; x=1730140084; 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=1atm7aHEAAAXeOA7aSszB88+y0MCidLIb0iFhJyFn/o=;
        b=VMghiTE+NtrN2MHALL+vSiLQSlZyAWq0nxqv5cTG478dHzwjxpDaK4+bJy5KQgOdIi
         8ajgB8mMk7rWkaHp4dRCA4y8Ocza0jgT2+XmgpztVJbAMkEk+ulmbVH0q99wNgAWgsN5
         /LjqQMEPofD+qpm4g4rfLu2ETkuHmZVzK6UH0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729535284; x=1730140084;
        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=1atm7aHEAAAXeOA7aSszB88+y0MCidLIb0iFhJyFn/o=;
        b=Vzyp8XHC6zAm/Ksf7NI7jhFLcKiG9ODQQqQuXgbtZEWdO5q7OSN3E1ZUBY4qIsT6E2
         zYsCkwdbIJBLy+M+0UZ3Q5hdCrDR7YSgnOg0w+5VGz1imRRSCnE/RHg2vph5beO9C9a8
         dMkol0NhD5sEl1wc87QZtD23jKpSP8QL3XMnhCN6Iiuw2krG5Vt8Fh+mO4oigN4/mG1l
         RHd5d1BX9Ip7AOd6JfJeIQq9Wacqu5JgkUh5fKFDlzputUCZMal4Yrax3HwQ2cRSfkwo
         XTOacT1R/B8DAuOtppYWfRCKG9Y9VLUYcMDlV6C8mEUp0I5KSDWHWdnKTfv/QMc0zlaO
         beWw==
X-Forwarded-Encrypted: i=1; AJvYcCWe3LR7rMt0wi8oloO8T5lWduX4FJtj1312pVCxpUVVGMBK20HWcgefX/CYrVy78BUbKvFKQ5qO2W4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwewOJq6T23ej8HPgSSlwlkurVhyKCBYWJKkDDMO+aLhgueYlp0
	zIWl7g/rq6pQVyqDatw9/2iTD9fS0wLj1Wp4ZVUVFY9r7vQgGaVobzi0uxgcEcg=
X-Google-Smtp-Source: AGHT+IH1Tpv2gMEo1mS+WOCKGrDBoPKQAkOCAzBhuERw0QHU7N31Da/YO3L6I5wgFpxuTcZjI/c08A==
X-Received: by 2002:a05:6000:114b:b0:374:c658:706e with SMTP id ffacd0b85a97d-37eab755b4fmr12170117f8f.39.1729535283785;
        Mon, 21 Oct 2024 11:28:03 -0700 (PDT)
Message-ID: <f545b1d2-829c-44a8-b83c-0dc2759f2f73@citrix.com>
Date: Mon, 21 Oct 2024 19:28:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 03/38] x86/boot: move headroom to boot modules
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
 <20241021004613.18793-4-dpsmith@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021004613.18793-4-dpsmith@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 21/10/2024 1:45 am, Daniel P. Smith wrote:
> The purpose of struct boot_module is to encapsulate the state of boot module as
> it is processed by Xen. Locating boot module state struct boot_module reduces
> the number of global variables as well as the number of state variables that
> must be passed around. It also lays the groundwork for hyperlaunch mult-domain
> construction, where multiple instances of state variables like headroom will be
> needed.
>
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Actually, based on the observation in the subsequent patch about pulling
the initial_image deletion earlier in the series, I'm going to recommend
something else here.

You should fully remove the mod pointer in __start_xen() (i.e. convert
mod[] references to bi->mods[]) before starting to remove other
variables such as module_headroom here.

This is largely doable because microcode and xsm both take the mbi
pointer and map mbi->module_addr themselves, rather than take
__start_xen()'s pointer.

Again, this reduces churn in the series, and minimises the extent to
which we're operating on multiple representations of the same data.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 20:56:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 20:56:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823925.1238002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t2zRi-0001Sp-Lw; Mon, 21 Oct 2024 20:56:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823925.1238002; Mon, 21 Oct 2024 20: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 1t2zRi-0001Si-HJ; Mon, 21 Oct 2024 20:56:10 +0000
Received: by outflank-mailman (input) for mailman id 823925;
 Mon, 21 Oct 2024 20:56: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=jACd=RR=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1t2zRg-0001Sc-S2
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 20:56:09 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20626.outbound.protection.outlook.com
 [2a01:111:f403:2409::626])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dfd525a5-8fee-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 22:56:00 +0200 (CEST)
Received: from CH2PR05CA0031.namprd05.prod.outlook.com (2603:10b6:610::44) by
 DS7PR12MB8231.namprd12.prod.outlook.com (2603:10b6:8:db::14) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8069.27; Mon, 21 Oct 2024 20:55:56 +0000
Received: from CH1PEPF0000AD7C.namprd04.prod.outlook.com
 (2603:10b6:610:0:cafe::6) by CH2PR05CA0031.outlook.office365.com
 (2603:10b6:610::44) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend
 Transport; Mon, 21 Oct 2024 20:55:55 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000AD7C.mail.protection.outlook.com (10.167.244.84) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Mon, 21 Oct 2024 20:55:55 +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.39; Mon, 21 Oct
 2024 15:55:55 -0500
Received: from [192.168.122.223] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 21 Oct 2024 15:55:54 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dfd525a5-8fee-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=SEkHM7vV1YNwyJJ3L2QNhhUqs8y++GVZbZ+oH3aak46sc8Zes+DZoZ7w+r8UjYX0oSyd/272yojyaGogdkzBWjQxtlekrYXasdbHxUQQu/h0FwNVFPfzGVM3sLs+nC9umlmOoQjWSx+u28bciTycL8BWmsp7SgwMUOZ5gKOcDIxukDwVt0ZvjIUGXi79Fzr4tjPrjc7qIqbPLZbSw8ycmn7e7f2JuyRwDJ1Z+N5Bype3uxcFCYdpYqJdxAP5o+mu26seYehknnDAAbRTcNKfycCKPriBf1EJrOucuelyRQ3YyX6EdnxxVHhUZVhmf3+Yj6FhXXCIRUtCYOYJQIhRsA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=4WSbIQbVmLBugBlh0MGnbh49fvK/BlXxqgaV3mVvLKM=;
 b=UyBuhVAn1jbS30hCsECaPdLUJ7jBjAUDI4nq7KUtqZrpOQiuyMI4U7PMyxc/UrlTiiBjF6HAKgR3nw9yO7TuTScFuZbeg2/B/c5ha53HuFwvBGIdOXzE9Mortd1DwA9P6SCOSslBnhBu9kdyJ0HNbAMotqj60hoojGnJWKDL1rMo4/ajGajeZpljArL8DXS0fZkXyk7bsfqIYRGugiAZk3tF6lyS+boR1uaRvXmral5XzgcvrP+wg3iIql9nUkgYAeow091HgkIHpjtO3ASTQzhJKhVQa9NewHq9MVpDGTZOTWUXnJjgdf8bqadLusLVDkyCmCvT/O3gtWoFCL9AwA==
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=4WSbIQbVmLBugBlh0MGnbh49fvK/BlXxqgaV3mVvLKM=;
 b=H7nxrLlfDUIVz+L4xlvzrcwzBV/7QTsWVjWJ2i4WtrAKiSTofdYJckfoassbhpZ8EgenlihKsF1UgNcNzIs7zWoTxLXoPE5G9Om4+/pszRB4S609zklk7QvSgyf7zOchGezxVATAjiPp0wPRl3/5wkJS8lCTS81irpejTfYYeaI=
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: <83ae0df2-c255-48ca-9f50-d495d1593852@amd.com>
Date: Mon, 21 Oct 2024 16:55:53 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0 is
 PVH
To: Jiqian Chen <Jiqian.Chen@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony@xenproject.org>, "Paul
 Durrant" <paul@xen.org>, "Edgar E . Iglesias" <edgar.iglesias@gmail.com>
CC: <qemu-devel@nongnu.org>, <xen-devel@lists.xenproject.org>, Huang Rui
	<Ray.Huang@amd.com>
References: <20241016062827.2301004-1-Jiqian.Chen@amd.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20241016062827.2301004-1-Jiqian.Chen@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: stewart.hildebrand@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000AD7C:EE_|DS7PR12MB8231:EE_
X-MS-Office365-Filtering-Correlation-Id: 783aeebe-2aa1-46b6-6755-08dcf212c20d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VWFNYk1DL2pSRGovYzA2cWVQZS9QRDE5R0dEN01xdkNMREN2YkdBcElwcUJL?=
 =?utf-8?B?ZmpHYnFFdENSelFERWZKRHNWbGRCWFRkeU9tRWxVZmZYSXF2VVN0RzAzTVEv?=
 =?utf-8?B?bHlwM21wZWg3TFdKbU8xUEwwNW10eEc1V0MvZDhLNHBubFdvc05ieE1ZQTFy?=
 =?utf-8?B?WEh6RllUeUhTdWxPUG5XYTBhTVRwZXZaMFcxMXNrcDZwZmlhNjVIOWU1ZFVF?=
 =?utf-8?B?cVdld1NJclQ3dU0yVFdzdVhDS3RzeTBER3FRTHhiY3hpc3BpTlRDQzc1Q1pk?=
 =?utf-8?B?K3hiNFhMQko0WFJhb0Z3aEJXcVBIVU8vMVpFV2R2UFJ6ZGNRVTdtUGVndWZW?=
 =?utf-8?B?eEwwRytCM3JDVFo4YUdlMndUVTZhVDBNeW9sVVVZNlloYWw4UlFuVnoxZEtW?=
 =?utf-8?B?TkdaVFFxTVR6eFdoeGV3ZTd2cHRLVDkxZ0pDVlVkNEM2ZjhNaitTbCs4ZjhT?=
 =?utf-8?B?SFp6cW40ckdOdzR5dEpUVWZCeWw2ZzBWR2xzbU1GaWdhcXlpSW8vUCswL3VT?=
 =?utf-8?B?SVBYYjFiQUhRaHBhZDZMbGhoZjBNYXQxMlk4Nnd3SHJEVXVnU2lLZWdxdzBH?=
 =?utf-8?B?RDJodzJTdVp5d2UvaExYRzN3RHF6RXJaVjUzU082TWZ4VnFQOEFIWEdhM0RI?=
 =?utf-8?B?ejRRWjJIcDNSM2tmcG1uVit4aHlxWGtkTndDWlVqbVNkcmFVcWdxMGhoMVpU?=
 =?utf-8?B?WWRzQzlDUlphMkpadytUZ2E2aXMzRFV4cFdxRVhjVGhIMGRjblNKT3J5azBx?=
 =?utf-8?B?bjYxSG16d3A0MkZLQW5zaXA3d05kcHJsVFZXc3RteTUxMUNtODczdXltOGFa?=
 =?utf-8?B?VXZUalk4Q3BqWHJHWkhRcEFjd0JGUURmZlU2WXdEQXlsWjhPa2IxbGJyY1da?=
 =?utf-8?B?RGZhMitvallyZ0hLMkFXNFBxS1dESkNiSnlYMUJNK1BBWk5tR1BPNnlZSlZ2?=
 =?utf-8?B?ZDd6VzZweGxCQTBGNm00NWxQbzE5SFNCQWVQV3F6TmxyR1A5YmRHbGxKTHZm?=
 =?utf-8?B?M3pCVkdUb09WaU9BbmF1T1Uyby80V1JlM21RK25KK0RheWI3V1VGRW56ZnZI?=
 =?utf-8?B?eTR5UXIwb0I5ZitRMC8zbmwxSGxJTnRnME1FSUw2QkVuVG1kbi9Wa3dKTnly?=
 =?utf-8?B?S1dkVkVXV0ZzaVhKQ3pZTHFESHhGRXpWOUxkV2d0RVkxd25MYkxXcTJOYVF6?=
 =?utf-8?B?eUR1czFuS2FhVXpyQjI0aHlJMXJyMk1wL0h2VUFQTWlReFlUWXpGMG1iS0xq?=
 =?utf-8?B?UzBuai83TUxlZ3BvMHA0ZHl0U1dTTTVFWGJQYlNtbzd5dVBIbkt5MEdpUFRv?=
 =?utf-8?B?RTN1RGpzRkNSNGZoQ2EydExGWXV5Zlh5blo0Zjg5MklVcFlIV2F4a0lNYm1z?=
 =?utf-8?B?ZStVUWpJQ0xtYVpZVnJpeElEbjFwRmdDMU1OazNlOTlmdkx6Q0s3QWxHUGkx?=
 =?utf-8?B?U21VZFM5cjF6OHNDS1BLRHRtQklVRy9QZW8rc0NUcFZ5YU9XNDlUU1RkTWpG?=
 =?utf-8?B?WDViSVdORm5sWmhtUkg1YW9BMC9YNFNJRW5CT2NoY1BIcDVPTkZ3cVE3MFpN?=
 =?utf-8?B?MmZydkRLaXJadnBneU42QWpSNjBaMm1JZEhCMVNBZENkM0RHMDVQem5Kb2FE?=
 =?utf-8?B?TU9wbzBEMCtaVDVlVks5TEZuaUtZQTRRN2poeGZjWFhaalByd2Rvb0lhWkZJ?=
 =?utf-8?B?Ty94alI1VjlndG5uemU0ZWhiVllTZlFiQlQ2TkVLTURBQzFmak9sd1JpemdF?=
 =?utf-8?B?NHNTM1hqVlFXcnZvL1hNbEdPaGVPaUlzRVg3K2RGQ0p0b25VM2FBVzZIQ25o?=
 =?utf-8?B?ZTNDb2ZON0FZeDIrRE9lbjN4YllEdDJMaFVxbmxHZW43UjAxMEhvQWZaUllL?=
 =?utf-8?B?bEhUWHhaNzlkWk9JdmVNTXdlMTlRam1XM0ZuVW1OUnBEZ2c9PQ==?=
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:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 20:55:55.7665
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 783aeebe-2aa1-46b6-6755-08dcf212c20d
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:
	CH1PEPF0000AD7C.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8231

On 10/16/24 02:28, Jiqian Chen wrote:
> In PVH dom0, when passthrough a device to domU, QEMU code
> xen_pt_realize->xc_physdev_map_pirq wants to use gsi, but in current codes
> the gsi number is got from file /sys/bus/pci/devices/<sbdf>/irq, that is
> wrong, because irq is not equal with gsi, they are in different spaces, so
> pirq mapping fails.
> 
> To solve above problem, use new interface of Xen, xc_pcidev_get_gsi to get
> gsi and use xc_physdev_map_pirq_gsi to map pirq when dom0 is PVH.
> 
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> ---
> Hi All,
> This is v8 to support passthrough on Xen when dom0 is PVH.
> v7->v8 change:
> * Since xc_physdev_gsi_from_dev was renamed to xc_pcidev_get_gsi, changed it.
> * Added xen_run_qemu_on_hvm to check if Qemu run on PV dom0, if not use xc_physdev_map_pirq_gsi to map pirq.
> * Used CONFIG_XEN_CTRL_INTERFACE_VERSION to wrap the new part for compatibility.
> * Added "#define DOMID_RUN_QEMU 0" to represent the id of domain that Qemu run on.
> 
> 
> Best regards,
> Jiqian Chen
> 
> 
> 
> v6->v7 changes:
> * Because the function of obtaining gsi was changed on the kernel and Xen side. Changed to use
>   xc_physdev_gsi_from_dev, that requires passing in sbdf instead of irq.
> 
> v5->v6 changes:
> * Because the function of obtaining gsi was changed on the kernel and Xen side. Changed to use
>   xc_physdev_gsi_from_irq, instead of gsi sysfs.
> * Since function changed, removed the Review-by of Stefano.
> 
> v4->v5 changes:
> * Added Review-by Stefano.
> 
> v3->v4 changes:
> * Added gsi into struct XenHostPCIDevice and used gsi number that read from gsi sysfs
>   if it exists, if there is no gsi sysfs, still use irq.
> 
> v2->v3 changes:
> * Due 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.
> 
> v1 and v2:
> 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.
> 
> 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. They are in different space.
> ---
>  hw/xen/xen_pt.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
>  hw/xen/xen_pt.h |  1 +
>  2 files changed, 45 insertions(+)
> 
> diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
> index 3635d1b39f79..7f8139d20915 100644
> --- a/hw/xen/xen_pt.c
> +++ b/hw/xen/xen_pt.c
> @@ -766,6 +766,41 @@ static void xen_pt_destroy(PCIDevice *d) {
>  }
>  /* init */
>  
> +#define PCI_SBDF(seg, bus, dev, func) \
> +            ((((uint32_t)(seg)) << 16) | \
> +            (PCI_BUILD_BDF(bus, PCI_DEVFN(dev, func))))

Nit: This macro looks generic and useful. Would it be better defined in
include/hw/pci/pci.h?

> +
> +#if CONFIG_XEN_CTRL_INTERFACE_VERSION >= 42000
> +static bool xen_run_qemu_on_hvm(void)

This function name seems to imply "is qemu running on HVM?", but I think
the question we're really trying to answer is whether the pcidev needs
a GSI mapped. How about calling the function "xen_pt_needs_gsi" or
similar?

> +{
> +    xc_domaininfo_t info;
> +
> +    if (!xc_domain_getinfo_single(xen_xc, DOMID_RUN_QEMU, &info) &&
> +        (info.flags & XEN_DOMINF_hvm_guest)) {

I think reading /sys/hypervisor/guest_type would allow you to get the
same information without another hypercall.

> +        return true;
> +    }
> +
> +    return false;
> +}
> +
> +static int xen_map_pirq_for_gsi(PCIDevice *d, int *pirq)

Nit: s/xen_/xen_pt_/

> +{
> +    int gsi;
> +    XenPCIPassthroughState *s = XEN_PT_DEVICE(d);
> +
> +    gsi = xc_pcidev_get_gsi(xen_xc,
> +                            PCI_SBDF(s->real_device.domain,
> +                                     s->real_device.bus,
> +                                     s->real_device.dev,
> +                                     s->real_device.func));
> +    if (gsi >= 0) {
> +        return xc_physdev_map_pirq_gsi(xen_xc, xen_domid, gsi, pirq);
> +    }
> +
> +    return gsi;
> +}
> +#endif
> +
>  static void xen_pt_realize(PCIDevice *d, Error **errp)
>  {
>      ERRP_GUARD();
> @@ -847,7 +882,16 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
>          goto out;
>      }
>  
> +#if CONFIG_XEN_CTRL_INTERFACE_VERSION >= 42000
> +    if (xen_run_qemu_on_hvm()) {
> +        rc = xen_map_pirq_for_gsi(d, &pirq);
> +    } else {
> +        rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq);
> +    }
> +#else
>      rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq);
> +#endif
> +
>      if (rc < 0) {
>          XEN_PT_ERR(d, "Mapping machine irq %u to pirq %i failed, (err: %d)\n",
>                     machine_irq, pirq, errno);
> diff --git a/hw/xen/xen_pt.h b/hw/xen/xen_pt.h
> index 095a0f0365d4..a08b45b7fbae 100644
> --- a/hw/xen/xen_pt.h
> +++ b/hw/xen/xen_pt.h
> @@ -36,6 +36,7 @@ void xen_pt_log(const PCIDevice *d, const char *f, ...) G_GNUC_PRINTF(2, 3);
>  #  define XEN_PT_LOG_CONFIG(d, addr, val, len)
>  #endif
>  
> +#define DOMID_RUN_QEMU 0
>  
>  /* Helper */
>  #define XEN_PFN(x) ((x) >> XC_PAGE_SHIFT)



From xen-devel-bounces@lists.xenproject.org Mon Oct 21 21:58:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 21:58:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823934.1238011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t30Po-0007q5-16; Mon, 21 Oct 2024 21:58:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823934.1238011; Mon, 21 Oct 2024 21:58: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 1t30Pn-0007py-Ua; Mon, 21 Oct 2024 21:58:15 +0000
Received: by outflank-mailman (input) for mailman id 823934;
 Mon, 21 Oct 2024 21:58: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=5C8l=RR=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t30Pm-0007pr-Mh
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 21:58:14 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on2060c.outbound.protection.outlook.com
 [2a01:111:f403:2414::60c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9036638b-8ff7-11ef-99a3-01e77a169b0f;
 Mon, 21 Oct 2024 23:58:12 +0200 (CEST)
Received: from MW4P220CA0016.NAMP220.PROD.OUTLOOK.COM (2603:10b6:303:115::21)
 by CY8PR12MB7098.namprd12.prod.outlook.com (2603:10b6:930:62::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.27; Mon, 21 Oct
 2024 21:58:08 +0000
Received: from BN3PEPF0000B074.namprd04.prod.outlook.com
 (2603:10b6:303:115:cafe::9e) by MW4P220CA0016.outlook.office365.com
 (2603:10b6:303:115::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28 via Frontend
 Transport; Mon, 21 Oct 2024 21:58:07 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN3PEPF0000B074.mail.protection.outlook.com (10.167.243.119) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Mon, 21 Oct 2024 21:58:06 +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.39; Mon, 21 Oct
 2024 16:58:06 -0500
Received: from [172.22.159.229] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Mon, 21 Oct 2024 16:58:06 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9036638b-8ff7-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Fz9PKll+DURNBvv2kQBmUvsEVD6WKYicz5j8am5CuwmAK0zY93EczyB1kO45u3Ets/57ZAH3LxTzujzRiJrr/yxdElYmbu+8npaYAOY46aYviqWF79LMBcGFUVQOnquZwvJcN2V9YKiBfvaaItGAB8g8AmDZCFQbLSUCpQNo2u9tUMUONCEDXEFi4gFvfMioWclSrJJdwPTbbbejztDmWbQKCPaoyKSTapSOONgsWBZvL0vJNsFJ9+pJkhFEC6Gbl44upgLXSAkmxRJvlwvtPUiMU98xOEWta/IkmzLIE3Ypws7Lm4XJI78bHMe3+oXDQcA1+FdlkiAVsIthU8M5nA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=i7tEg6u059lt4v92kfx6fnn0P6MF2ZWSBam88+HweZo=;
 b=swHjv6oIG55MqmEQUttZRHPohGcf9KmMOKIsV0pxpp18Gk3ptCzCs2dcJWXIDcvAeZKjwRClRMBETdrA5DQ/afnH/As+0byF8+2d0s1jCLpTH36tdbJUxt7/ntDC8rTsmPoAT8UC9zho0RrXAPdJFW6yRyOsUqdyoPS93W6wA9JuMyg9Gj0vBsf8DLjOSg3kSIP9zYusohlwNFmqiYOuQkqq0izAlajukuQXI3/gBkBFV4Dz8CVyby6cqqxf0gL2jfVy3DYOT1kYa9uNa6EzvrE4HZ3JWny0R+wwRGjY93W6bua4HAPYfLvCDk9/kj28JAv+y88vOIuSlurSxPQcuw==
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=i7tEg6u059lt4v92kfx6fnn0P6MF2ZWSBam88+HweZo=;
 b=Ikm82Y4BT//3ZRECUFtfqrV++H9cBp8PSYMi+PSDIHw8ZwP9uhBmSaBLYGqPrliFN0PNLVteA1//2jF1RDeLRU61Sl9/6WmSs/p/kMmGBZxpMaySjld16vvRXN8KHmG/6+bAffHoEDIljz+AwFzvDjnrSvPaB9XY/hY6kEPDJfc=
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: <76bfa4fe-bf09-4667-968f-890c8d917780@amd.com>
Date: Mon, 21 Oct 2024 17:58:05 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [ImageBuilder] Fix device tree node naming
To: Michal Orzel <michal.orzel@amd.com>, <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>
References: <20241021110446.8633-1-michal.orzel@amd.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241021110446.8633-1-michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF0000B074:EE_|CY8PR12MB7098:EE_
X-MS-Office365-Filtering-Correlation-Id: 9582ba8f-3a85-48b3-e872-08dcf21b71ed
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?a1M4dlF5SDZNMUY4Y1B6WUh3SEpESlZrVHJDbUVTVmcrOVphcXRzdnpnS1RB?=
 =?utf-8?B?VW44QjhvbGIxeVkxVXhMdnNGTmZiaWlsN1psS0N5VXlOQThORTVHdGp4b0hk?=
 =?utf-8?B?KzNFRlFoRnZ2RXpoNnJjcFhDc3hpVXZxeHhKQXVzVFBDaXk3azlmZlovWWph?=
 =?utf-8?B?bUpkc25PaFJVazF4RHdzVmVncDNiRlh1S2NZOExJZitiNUQ0enNpRzg2ajhp?=
 =?utf-8?B?SElaR0RQQkUxbTNNVUsvN0lvUzVmQkUzN1ErejQxb0JTc0VCeHRpQUl2VW91?=
 =?utf-8?B?VVVqVDY4bHV5U1JSY0NGUEUyOEFod1NCWWhTUlI1bGFHdW03N3k4c3FHMTdh?=
 =?utf-8?B?eHZ5N0lnVGRFWGNYRHczZXA2L2JON1RMTTkrU1VDNzlqUVpwZ2dMVzJOb0g1?=
 =?utf-8?B?ZEJ5WTBsd2NQWktsNVNNS1QyMmN0bUIzZTM2bS8raDE2cTBWM2wrSloxTktn?=
 =?utf-8?B?dUVuM2ZrT3cxUVpYZGlCWTdNME8rV2RNOHEzUU5WZ011UFA4WjRKMnFiL1hU?=
 =?utf-8?B?bGVGbWU1cW9jMDU4dmd3YkdSOWxMQnErZmZzaXRKYUpPcFBwaWlMQ0tkanlG?=
 =?utf-8?B?Mk5BbEJyd283dEZaOGNydVU2a1k4NkVKbjBSSGc1cEppWnQwa2ZRNWpqTFRR?=
 =?utf-8?B?Zzg5Yjh4R2NZMkErV1VFMkhCQk9uM05TdmRZTThnbDlEczRqTEJtUm9PQTdn?=
 =?utf-8?B?aW40bjVONEhmMnZQc001TUhCTUszL0RvMDFwNDNJMGhlRjEyKzF4VjErTjZa?=
 =?utf-8?B?ZlMza1dCeUdIVjF1eWRWeWUxbmZDYmVSQzkyemg1Q1c0STlMZTdZdmo5SUwz?=
 =?utf-8?B?WTRYcSthang4c1VuUXFJbGxWMm9JZ0F1Yi9jbDF1d09Ja0psdnhjcXF2L1lz?=
 =?utf-8?B?cURvVmtDL3BycENOT1BWVURRZUxWUkVhYVFqMHRoVGRTU3NJTGZtQmRpNW5L?=
 =?utf-8?B?VDQ1SWExTXYzSFdWeWI5QzU3UEFHeHlxMG5aTktVNGxpRGc1Q3Q5ckpEb2dn?=
 =?utf-8?B?ckpiVW1rWnJ0OHdmMUZlWlB0ejBLUE1wK0p5SHByeFpzaisyZmNjbGlBSmZy?=
 =?utf-8?B?YncrZnh6b0JkUFlNSWNHWGRZL0psSkRPbFZyOW1DYndSTzZXRUNpQ3JTRk9W?=
 =?utf-8?B?UmVSYk9xVndBdWcrc3NsQkxhVHEzd2lqMkw5eERNZDhSRlFGSzdoOENQczlI?=
 =?utf-8?B?RW5ybzVOcWlEYnFMZ0NyNGxpMjhha1MvdmhMa3FPNHhLNzE4YVJvMXM5YUl4?=
 =?utf-8?B?bVRJNzlqN3ZybktXdVJGQVVMaGFxcEtVOERJcVZuQkU3dTBwcVBIbHdrc2hw?=
 =?utf-8?B?OVVsdG1QeGE2TFlmbmJOWU1rOHB4NUszSXFqT3FZWml1NS9PNi9wbWV6VVVS?=
 =?utf-8?B?QURxTExXcDdSOW1BNDQrOTdUSGFNOVhpZXppQ1JpcTlhcXJJdS9SMEJZbENL?=
 =?utf-8?B?UVhNV1JodnFWUk9JVG9vdGtJcFBQQXhsNnB0SS9YaVFEZ3hiWkRKc3pzMmxL?=
 =?utf-8?B?QmJiYnIwcTdFNEpwYkI4OHBSUG83UWVTb2QyK1hERU5zZWRobUNLZEtlTDls?=
 =?utf-8?B?MVR2NnRjaFJ1M2JrQmdLekprVXNCTFcwN1BIRVBoYjdvckxYOENWUWJRTGRq?=
 =?utf-8?B?aTQycmthMjB0ZnR1VjdzaTkyRmJZNURLek5MWDQva1hiSWwyTDdTQU53bzA5?=
 =?utf-8?B?ZUY2NWh1aHllcG5OVm9LMDk0NDIycWFCOUFnWVFMc1lyVUMyamszK09wWTU2?=
 =?utf-8?B?YUdPSlE5K09wS08yVlR0ckNWa1ZhV2RLaUZpOG5BY3poWitNSFVIV3JmUE5t?=
 =?utf-8?B?K1Rmdm0xQnBKSzZoTUxDM2JBSVJWTDBtNlRhVnVVSlFCZGMxNlpiSDhtUkha?=
 =?utf-8?B?QXNRRld5cHVFc2JPZnd3TWlWMGRNbGZla1hjUitSM0Jjcnc9PQ==?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2024 21:58:06.8598
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9582ba8f-3a85-48b3-e872-08dcf21b71ed
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:
	BN3PEPF0000B074.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7098

On 2024-10-21 07:04, Michal Orzel wrote:
> A device tree node is named as follows: node-name@unit-address. The
> unit-address must match the first address specified in the reg property
> or be omitted if there's no reg property.
> 
> Fix the following issues:
> 1) domU modules are named as: node-name0xunit-address. Fix the naming to
>     follow the device tree spec.
> 2) dom0 kernel and ramdisk, despite having the reg property do not have
>     unit addresses specified. Fix it.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 22:09:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 22:09:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823942.1238022 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t30ag-0003bn-4r; Mon, 21 Oct 2024 22:09:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823942.1238022; Mon, 21 Oct 2024 22: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 1t30ag-0003bg-1s; Mon, 21 Oct 2024 22:09:30 +0000
Received: by outflank-mailman (input) for mailman id 823942;
 Mon, 21 Oct 2024 22: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=fGSZ=RR=gmail.com=w1benny@srs-se1.protection.inumbo.net>)
 id 1t30ae-0003ba-EG
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 22:09:28 +0000
Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com
 [2607:f8b0:4864:20::229])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21fcffd7-8ff9-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 00:09:25 +0200 (CEST)
Received: by mail-oi1-x229.google.com with SMTP id
 5614622812f47-3e6095eacc9so52366b6e.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 15:09:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21fcffd7-8ff9-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729548564; x=1730153364; 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=vkWW2BZ3ezllvIUS0dsSu68WrzHVPP8TMndLIssIw94=;
        b=daRtup86uENNA3J318nZ58NxYh8+cNwpvQjtU4RbvVhHkAtFQUFW9BohGrVb1l5rXH
         0mCdmuhjxS2XKe9N7rjogGuarNijcGZVYdmaxCJ/YXIVBM4pvNeF7uHskNuhKGHXoJUW
         h4oGHsxhBfVccB3djLOf02e3S7WkGE4kLo0zpAnKTgd8F1hY1th2Dg9Riis/fb8bnxGn
         0H23JqD7qtzDNkONx3eUavMQkfhFIVjxG7KMyf20MywyGmfESJzwqSIi2BCK9PMjKD9e
         s7dh+wgubpxyN/TnxjAde3hfqfDYfOTDoUnOLqJZQICAECiaztaRlXy5jmfY8k71lWal
         cC8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729548564; x=1730153364;
        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=vkWW2BZ3ezllvIUS0dsSu68WrzHVPP8TMndLIssIw94=;
        b=Gng2C8D374bdfZHPxK6ehVgAGcpCSi4Hq8JKZUNTIX6cjsb1qXESCt+NkE8ZdXWoVv
         cK/RLE9lvMp0HvNmuGZ6a3GFLBk8i1QIJR3dvpEqlfHebhzuY9hMUMjILPPIX6Z+KSTq
         4AblA0BhlF4aVp7MEg/1GH3KQ/zZVisJvbUwpodB78EAl/G0vSM6HDBvX12EdCCyzSCh
         W6NVRuR7NZ8zl7kmskmC5TfMnRNzclPwihIWe6XOrzcEhNMAjXx2aTmq5HchTF1T4bi6
         ZXcu1ZRE556o8Pia9LC9DGOFesaVKw+3d8nOjFWwEzevXwiELLktC0xwftDfDUKRvBQA
         ZZrw==
X-Forwarded-Encrypted: i=1; AJvYcCVa3YrBL0h6oEkrfj/wmroJSnPb08nBMzrtBXbRsxsHqwgydq0kqqtJS5ThlDFHhnwz0eL/SZSrThQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwF5u2CJROzFMhaDH+Rh9VBre6HPOsSKiLI+/0kYZ6vX+dDfbDV
	1NJP2W9EiqyrF33PrI0/O4Nmo6FnRU2ZRVHNWmunFmP+/4JIAGlQ2kh5HY9yznppTQTRoXlr5WI
	cxCp5+dMuyn2lKNBtGZAZveut8pU=
X-Google-Smtp-Source: AGHT+IHK9ZoPF5J00BJlCCCF8TFFVIljnIFDN6HsaOV3HKF39e99YvVS/g/GK4ghPNaBeKQwuq2nXLKCKLZudTtotsk=
X-Received: by 2002:a54:4493:0:b0:3e0:3e5e:c8b1 with SMTP id
 5614622812f47-3e602c7c2b9mr2865161b6e.1.1729548564450; Mon, 21 Oct 2024
 15:09:24 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1718038855.git.w1benny@gmail.com> <dd1b3db5-6f48-4644-90f6-bdcad98e62bd@suse.com>
In-Reply-To: <dd1b3db5-6f48-4644-90f6-bdcad98e62bd@suse.com>
From: =?UTF-8?Q?Petr_Bene=C5=A1?= <w1benny@gmail.com>
Date: Tue, 22 Oct 2024 00:09:13 +0200
Message-ID: <CAKBKdXi+nkhOa6SCgTDYnq6VLnXOzeNB4odg0W8+yZQAEvgiKA@mail.gmail.com>
Subject: Re: [PATCH for-4.19? v6 0/9] x86: Make MAX_ALTP2M configurable
To: Jan Beulich <jbeulich@suse.com>
Cc: Christian Lindig <christian.lindig@citrix.com>, David Scott <dave@recoil.org>, 
	Anthony PERARD <anthony@xenproject.org>, Juergen Gross <jgross@suse.com>, 
	Andrew Cooper <andrew.cooper3@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>, 
	Nick Rosbrook <rosbrookn@gmail.com>, Tamas K Lengyel <tamas@tklengyel.com>, 
	Alexandru Isaila <aisaila@bitdefender.com>, Petre Pircalabu <ppircalabu@bitdefender.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 16, 2024 at 12:10=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wr=
ote:
> While the first two patches did go in, the rest is still pending afaict. =
If
> the series is still deemed relevant, would you please either chase the
> missing but necessary acks, or re-submit with review comments addressed (=
if
> any)? If instead it was abandoned, could you please also indicate so?

I plan to resubmit, I would like to see these patches in 4.20. I just
got caught up in different project meanwhile.

P.


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 22:17:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 22:17:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823949.1238031 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t30ig-0007gX-T8; Mon, 21 Oct 2024 22:17:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823949.1238031; Mon, 21 Oct 2024 22: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 1t30ig-0007gQ-Qb; Mon, 21 Oct 2024 22:17:46 +0000
Received: by outflank-mailman (input) for mailman id 823949;
 Mon, 21 Oct 2024 22:17: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=Pwn9=RR=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t30if-0007gK-W0
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 22:17:46 +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 4aeac4f3-8ffa-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 00:17:44 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 31DBC5C5BF8;
 Mon, 21 Oct 2024 22:17:38 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6448EC4CEC3;
 Mon, 21 Oct 2024 22:17:41 +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: 4aeac4f3-8ffa-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729549062;
	bh=2hiR4oyMJvoVTbdyuZQU95NrRzovdc9RZ3+Huh5lD40=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=CC1VtEsCGPBIITanpktMUagkU6quVsK+t5cCKOd24Egr5ogkKzSqV/efKnqTJzxmd
	 GckZLPZGoXRQtwF7OOtyi+ggIGy03WhLNV8XUeE+9humT3i7TjBm3TuuQ3Noe9o0jE
	 FrAPt3qTPKyKGCwlSQFoVtUatweH2e7GkmItJ7aFpxnJa6rASjHspo+hIABiUGa1WK
	 1OjESQndHJ76nA7AQqHk38EywQf3vasgvWlvKiqYeGyZmaSCDzLZF0N+vcuGckEjNS
	 95K4cdVuxi/CB99xpsSn+QeBtIgxE+aLcmKFcxBHAaBKgbnqWSlypaf3yY5AC/aCJ9
	 nKFoMFlJDT6jA==
Date: Mon, 21 Oct 2024 15:17:39 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Xen-devel <xen-devel@lists.xenproject.org>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    "Daniel P . Smith" <dpsmith@apertussolutions.com>, 
    Anthony PERARD <anthony.perard@vates.tech>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 1/3] CI: Minor cleanup to qubes-x86-64.sh
In-Reply-To: <20241021143539.3898995-2-andrew.cooper3@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410211515030.3833@ubuntu-linux-20-04-desktop>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com> <20241021143539.3898995-2-andrew.cooper3@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-624098942-1729549062=:3833"

  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-624098942-1729549062=:3833
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Mon, 21 Oct 2024, Andrew Cooper wrote:
>  * List all the test_variants and summerise what's going on
>  * Use case rather than an if/else chain for $test_variant
>  * Fix indentation inside the case block
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>



> ---
> CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Michal Orzel <michal.orzel@amd.com>
> CC: Doug Goldstein <cardoe@cardoe.com>
> ---
>  automation/scripts/qubes-x86-64.sh | 84 ++++++++++++++++++------------
>  1 file changed, 50 insertions(+), 34 deletions(-)
> 
> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
> index bfa60c912a64..306304e9219f 100755
> --- a/automation/scripts/qubes-x86-64.sh
> +++ b/automation/scripts/qubes-x86-64.sh
> @@ -2,6 +2,13 @@
>  
>  set -ex
>  
> +# One of:
> +#  - ""             PV dom0,  PVH domU
> +#  - dom0pvh        PVH dom0, PVH domU
> +#  - dom0pvh-hvm    PVH dom0, HVM domU
> +#  - pci-hvm        PV dom0,  HVM domU + PCI Passthrough
> +#  - pci-pv         PV dom0,  PV domU + PCI Passthrough
> +#  - s3             PV dom0,  S3 suspend/resume
>  test_variant=$1
>  
>  ### defaults
> @@ -19,17 +26,18 @@ vif = [ "bridge=xenbr0", ]
>  disk = [ ]
>  '
>  
> -### test: smoke test & smoke test PVH & smoke test HVM
> -if [ -z "${test_variant}" ] || [ "${test_variant}" = "dom0pvh" ] || [ "${test_variant}" = "dom0pvh-hvm" ]; then
> -    passed="ping test passed"
> -    domU_check="
> +case "${test_variant}" in
> +    ### test: smoke test & smoke test PVH & smoke test HVM
> +    ""|"dom0pvh"|"dom0pvh-hvm")
> +        passed="ping test passed"
> +        domU_check="
>  ifconfig eth0 192.168.0.2
>  until ping -c 10 192.168.0.1; do
>      sleep 1
>  done
>  echo \"${passed}\"
>  "
> -    dom0_check="
> +        dom0_check="
>  set +x
>  until grep -q \"${passed}\" /var/log/xen/console/guest-domU.log; do
>      sleep 1
> @@ -37,12 +45,12 @@ done
>  set -x
>  echo \"${passed}\"
>  "
> -if [ "${test_variant}" = "dom0pvh" ] || [ "${test_variant}" = "dom0pvh-hvm" ]; then
> -    extra_xen_opts="dom0=pvh"
> -fi
> +        if [ "${test_variant}" = "dom0pvh" ] || [ "${test_variant}" = "dom0pvh-hvm" ]; then
> +            extra_xen_opts="dom0=pvh"
> +        fi
>  
> -if [ "${test_variant}" = "dom0pvh-hvm" ]; then
> -    domU_config='
> +        if [ "${test_variant}" = "dom0pvh-hvm" ]; then
> +            domU_config='
>  type = "hvm"
>  name = "domU"
>  kernel = "/boot/vmlinuz"
> @@ -52,17 +60,18 @@ memory = 512
>  vif = [ "bridge=xenbr0", ]
>  disk = [ ]
>  '
> -fi
> -
> -### test: S3
> -elif [ "${test_variant}" = "s3" ]; then
> -    passed="suspend test passed"
> -    wait_and_wakeup="started, suspending"
> -    domU_check="
> +        fi
> +        ;;
> +
> +    ### test: S3
> +    "s3")
> +        passed="suspend test passed"
> +        wait_and_wakeup="started, suspending"
> +        domU_check="
>  ifconfig eth0 192.168.0.2
>  echo domU started
>  "
> -    dom0_check="
> +        dom0_check="
>  until grep 'domU started' /var/log/xen/console/guest-domU.log; do
>      sleep 1
>  done
> @@ -79,19 +88,20 @@ xl dmesg | grep 'Finishing wakeup from ACPI S3 state' || exit 1
>  ping -c 10 192.168.0.2 || exit 1
>  echo \"${passed}\"
>  "
> +        ;;
>  
> -### test: pci-pv, pci-hvm
> -elif [ "${test_variant}" = "pci-pv" ] || [ "${test_variant}" = "pci-hvm" ]; then
> +    ### test: pci-pv, pci-hvm
> +    "pci-pv"|"pci-hvm")
>  
> -    if [ -z "$PCIDEV" ]; then
> -        echo "Please set 'PCIDEV' variable with BDF of test network adapter" >&2
> -        echo "Optionally set also 'PCIDEV_INTR' to 'MSI' or 'MSI-X'" >&2
> -        exit 1
> -    fi
> +        if [ -z "$PCIDEV" ]; then
> +            echo "Please set 'PCIDEV' variable with BDF of test network adapter" >&2
> +            echo "Optionally set also 'PCIDEV_INTR' to 'MSI' or 'MSI-X'" >&2
> +            exit 1
> +        fi
>  
> -    passed="pci test passed"
> +        passed="pci test passed"
>  
> -    domU_config='
> +        domU_config='
>  type = "'${test_variant#pci-}'"
>  name = "domU"
>  kernel = "/boot/vmlinuz"
> @@ -104,7 +114,7 @@ pci = [ "'$PCIDEV',seize=1" ]
>  on_reboot = "destroy"
>  '
>  
> -    domU_check="
> +        domU_check="
>  set -x -e
>  interface=eth0
>  ip link set \"\$interface\" up
> @@ -115,22 +125,28 @@ echo domU started
>  pcidevice=\$(basename \$(readlink /sys/class/net/\$interface/device))
>  lspci -vs \$pcidevice
>  "
> -    if [ -n "$PCIDEV_INTR" ]; then
> -        domU_check="$domU_check
> +        if [ -n "$PCIDEV_INTR" ]; then
> +            domU_check="$domU_check
>  lspci -vs \$pcidevice | fgrep '$PCIDEV_INTR: Enable+'
>  "
> -    fi
> -    domU_check="$domU_check
> +        fi
> +        domU_check="$domU_check
>  echo \"${passed}\"
>  "
>  
> -    dom0_check="
> +        dom0_check="
>  tail -F /var/log/xen/qemu-dm-domU.log &
>  until grep -q \"^domU Welcome to Alpine Linux\" /var/log/xen/console/guest-domU.log; do
>      sleep 1
>  done
>  "
> -fi
> +        ;;
> +
> +    *)
> +        echo "Unrecognised test_variant '${test_variant}'" >&2
> +        exit 1
> +        ;;
> +esac
>  
>  # DomU
>  mkdir -p rootfs
> -- 
> 2.39.5
> 
--8323329-624098942-1729549062=:3833--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 22:20:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 22:20:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823955.1238042 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t30lO-0000l0-9R; Mon, 21 Oct 2024 22:20:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823955.1238042; Mon, 21 Oct 2024 22: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 1t30lO-0000kt-6O; Mon, 21 Oct 2024 22:20:34 +0000
Received: by outflank-mailman (input) for mailman id 823955;
 Mon, 21 Oct 2024 22: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=Pwn9=RR=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t30lN-0000kn-1G
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 22:20:33 +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 aecc6ca2-8ffa-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 00:20:31 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 148C45C59D2;
 Mon, 21 Oct 2024 22:20:26 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49834C4CEC3;
 Mon, 21 Oct 2024 22:20: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: aecc6ca2-8ffa-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729549230;
	bh=sw5MkKI70xtj4yiOrk0sXVHYlbx0d1lYJImkfXc4C5w=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=QVVkjsmhlifpGPyZLRjoIIYpDC16S/x8k8XC+8u7c0qALeNP+BpJ+n9ibnf2ZLuqJ
	 pETKO2pH2yUJUrKp/Y3QG6yoThLZpQ2EyAbyfkVXKEbI5B15IUg0IYhIcFXUd0frHd
	 sDUo9S0hD4aChCdpaqkb8h79Ouyb1bkptqM5ARQrfTHGm2kvogl2O37qnalItgFdqW
	 9Fg1xP5qpmXEp+2e9nKvMvB1qY2vzy0OM3VwH0tCxemUx7q5m+pLx7OGa/X2XszL44
	 Zf1MyXuq49kslrRrfL3+7FGh8kBkgkXySXhj6hwGLerJ4fp+KGr0dpE+58/wSp2gkz
	 0xPbIOJrxnJhQ==
Date: Mon, 21 Oct 2024 15:20:27 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Xen-devel <xen-devel@lists.xenproject.org>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    "Daniel P . Smith" <dpsmith@apertussolutions.com>, 
    Anthony PERARD <anthony.perard@vates.tech>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 2/3] CI: Rework domU_config generation in
 qubes-x86-64.sh
In-Reply-To: <20241021143539.3898995-3-andrew.cooper3@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410211520180.3833@ubuntu-linux-20-04-desktop>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com> <20241021143539.3898995-3-andrew.cooper3@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-1811041587-1729549229=:3833"

  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-1811041587-1729549229=:3833
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Mon, 21 Oct 2024, Andrew Cooper wrote:
> Right now, various blocks rewrite domU_config= as a whole, even though it is
> largely the same.
> 
>  * dom0pvh-hvm does nothing but change the domain type to hvm
>  * *-pci sets the domain type, clears vif=[], appends earlyprintk=xen to the
>    cmdline, and adds some PCI config.
> 
> Refactor this to be domU_type (defaults to pvh), domU_vif (defaults to
> xenbr0), and domU_extra_cfg (defaults to empty) and use these variables to
> build domU_config= once.
> 
> Of note, the default domU_config= now sets cmdline=, and extra= is intended
> for inclusion via domU_extra_cfg as necessary.
> 
> No practical change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Michal Orzel <michal.orzel@amd.com>
> CC: Doug Goldstein <cardoe@cardoe.com>
> ---
>  automation/scripts/qubes-x86-64.sh | 50 +++++++++++++-----------------
>  1 file changed, 21 insertions(+), 29 deletions(-)
> 
> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
> index 306304e9219f..4b6311efffa8 100755
> --- a/automation/scripts/qubes-x86-64.sh
> +++ b/automation/scripts/qubes-x86-64.sh
> @@ -15,16 +15,9 @@ test_variant=$1
>  extra_xen_opts=
>  wait_and_wakeup=
>  timeout=120
> -domU_config='
> -type = "pvh"
> -name = "domU"
> -kernel = "/boot/vmlinuz"
> -ramdisk = "/boot/initrd-domU"
> -extra = "root=/dev/ram0 console=hvc0"
> -memory = 512
> -vif = [ "bridge=xenbr0", ]
> -disk = [ ]
> -'
> +domU_type="pvh"
> +domU_vif="'bridge=xenbr0',"
> +domU_extra_cfg=
>  
>  case "${test_variant}" in
>      ### test: smoke test & smoke test PVH & smoke test HVM
> @@ -50,16 +43,7 @@ echo \"${passed}\"
>          fi
>  
>          if [ "${test_variant}" = "dom0pvh-hvm" ]; then
> -            domU_config='
> -type = "hvm"
> -name = "domU"
> -kernel = "/boot/vmlinuz"
> -ramdisk = "/boot/initrd-domU"
> -extra = "root=/dev/ram0 console=hvc0"
> -memory = 512
> -vif = [ "bridge=xenbr0", ]
> -disk = [ ]
> -'
> +            domU_type="hvm"
>          fi
>          ;;
>  
> @@ -101,15 +85,11 @@ echo \"${passed}\"
>  
>          passed="pci test passed"
>  
> -        domU_config='
> -type = "'${test_variant#pci-}'"
> -name = "domU"
> -kernel = "/boot/vmlinuz"
> -ramdisk = "/boot/initrd-domU"
> -extra = "root=/dev/ram0 console=hvc0 earlyprintk=xen"
> -memory = 512
> -vif = [ ]
> -disk = [ ]
> +        domU_type="${test_variant#pci-}"
> +        domU_vif=""
> +
> +        domU_extra_config='
> +extra = "earlyprintk=xen"
>  pci = [ "'$PCIDEV',seize=1" ]
>  on_reboot = "destroy"
>  '
> @@ -148,6 +128,18 @@ done
>          ;;
>  esac
>  
> +domU_config="
> +type = '${domU_type}'
> +name = 'domU'
> +kernel = '/boot/vmlinuz'
> +ramdisk = '/boot/initrd-domU'
> +cmdline = 'root=/dev/ram0 console=hvc0'
> +memory = 512
> +vif = [ ${domU_vif} ]
> +disk = [ ]
> +$domU_extra_config
> +"
> +
>  # DomU
>  mkdir -p rootfs
>  cd rootfs
> -- 
> 2.39.5
> 
--8323329-1811041587-1729549229=:3833--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 22:28:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 22:28:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823964.1238051 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t30su-0003yY-0E; Mon, 21 Oct 2024 22:28:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823964.1238051; Mon, 21 Oct 2024 22:28: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 1t30st-0003yR-Tl; Mon, 21 Oct 2024 22:28:19 +0000
Received: by outflank-mailman (input) for mailman id 823964;
 Mon, 21 Oct 2024 22:28: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=Pwn9=RR=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t30ss-0003yG-G0
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 22:28:18 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c46880f2-8ffb-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 00:28:17 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id A3C43A43B3D;
 Mon, 21 Oct 2024 22:28:06 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6CE87C4CEE6;
 Mon, 21 Oct 2024 22:28: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: c46880f2-8ffb-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729549695;
	bh=+byfss9ay9GfFzFJTLCAlbgY5ZE5Pl2ZOEomuj5sfHo=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=RmqwH83h3zeG1blDxKeFKRZrEGqJ3YonW/M7IfAyJcfdxBq95Uc1z+wPSlo8G8hF3
	 SzWLa1vfb7/iLGmRbrwtr1DBsTer5uTL0zA+WoAdFhVLsaAMke6bK/uoUsVuyyErUB
	 5ed9Q63pQpdmYZZl76TsUyl48h59+ZHwjU2rSZLkbUg1c6PDP6l9Pr/33Oc42ZzgG3
	 0pCwJSjzOgEuDUFRjHAJA51h5Z/7BhAu3eHMcUV50eeapkvXEgLOq3/3k0xMuTShKz
	 B5JDiIRadFQqH80U2GgVwYTWf9cmiAgqHFxM4OzDi04AlrS6OcYH+vqZKKVmQUEWne
	 MWxL4FA6hFWFA==
Date: Mon, 21 Oct 2024 15:28:12 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Xen-devel <xen-devel@lists.xenproject.org>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    "Daniel P . Smith" <dpsmith@apertussolutions.com>, 
    Anthony PERARD <anthony.perard@vates.tech>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 3/3] CI: Add {adl,zen3p}-pvshim-* tests
In-Reply-To: <5d02722a-eccd-43f9-9d6e-2e845d9757d9@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410211524170.3833@ubuntu-linux-20-04-desktop>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com> <20241021143539.3898995-4-andrew.cooper3@citrix.com> <78116f34-2448-4b08-9eb3-50d70a18074e@citrix.com> <5d02722a-eccd-43f9-9d6e-2e845d9757d9@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-601275253-1729549695=:3833"

  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-601275253-1729549695=:3833
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Mon, 21 Oct 2024, Andrew Cooper wrote:
> > Bah - serves me right for some last minute refactoring.  The domain type
> > should be pvh for pvshim=1 to work.
> >
> > New pipeline:
> > https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1505540810
> 
> And from the same bit of refactoring, a mismatch between
> domU_extra_{cfg,config}.  Consolidated on the latter.
> 
> https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/8143613752

I reviewed the commit c80e9241209cc9ed7f66c3f45275f837ddafc21c from your
branch instead. See below.


> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index b27c2be174..e76a37bef3 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -240,6 +240,14 @@ adl-pci-hvm-x86-64-gcc-debug:
>      - *x86-64-test-needs
>      - alpine-3.18-gcc-debug
>  
> +adl-pvshim-x86-64-gcc-debug:
> +  extends: .adl-x86-64
> +  script:
> +    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
> +  needs:
> +    - *x86-64-test-needs
> +    - alpine-3.18-gcc-debug
> +
>  zen3p-smoke-x86-64-gcc-debug:
>    extends: .zen3p-x86-64
>    script:
> @@ -272,6 +280,14 @@ zen3p-pci-hvm-x86-64-gcc-debug:
>      - *x86-64-test-needs
>      - alpine-3.18-gcc-debug
>  
> +zen3p-pvshim-x86-64-gcc-debug:
> +  extends: .zen3p-x86-64
> +  script:
> +    - ./automation/scripts/qubes-x86-64.sh pvshim 2>&1 | tee ${LOGFILE}
> +  needs:
> +    - *x86-64-test-needs
> +    - alpine-3.18-gcc-debug
> +
>  qemu-smoke-dom0-arm64-gcc:
>    extends: .qemu-arm64
>    script:
> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
> index 76fbafac84..95090eb12c 100755
> --- a/automation/scripts/qubes-x86-64.sh
> +++ b/automation/scripts/qubes-x86-64.sh
> @@ -8,6 +8,7 @@ set -ex
>  #  - dom0pvh-hvm    PVH dom0, HVM domU
>  #  - pci-hvm        PV dom0,  HVM domU + PCI Passthrough
>  #  - pci-pv         PV dom0,  PV domU + PCI Passthrough
> +#  - pvshim         PV dom0,  PVSHIM domU
>  #  - s3             PV dom0,  S3 suspend/resume
>  test_variant=$1
>  
> @@ -20,8 +21,8 @@ domU_vif="'bridge=xenbr0',"
>  domU_extra_config=
>  
>  case "${test_variant}" in
> -    ### test: smoke test & smoke test PVH & smoke test HVM
> -    ""|"dom0pvh"|"dom0pvh-hvm")
> +    ### test: smoke test & smoke test PVH & smoke test HVM & smoke test PVSHIM
> +    ""|"dom0pvh"|"dom0pvh-hvm"|"pvshim")
>          passed="ping test passed"
>          domU_check="
>  ifconfig eth0 192.168.0.2
> @@ -44,6 +45,11 @@ echo \"${passed}\"
>  
>          if [ "${test_variant}" = "dom0pvh-hvm" ]; then
>              domU_type="hvm"
> +        elif [ "${test_variant}" = "pvshim" ]; then
> +            domU_type="pvh"

This is not necessary since PVH is already the default. In theory, it is
harmless, but it caused me to do a double-take because I initially
thought I was missing something, given that PVH is expected to be the
default at this point.


> +            domU_extra_config='
> +pvshim = 1
> +'

Is there a reason this cannot be:

    domU_extra_config='pvshim = 1'

?

These are just minor cosmetics.


>          fi
>          ;;
>  
--8323329-601275253-1729549695=:3833--


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 22:34:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 22:34:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823972.1238066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t30z0-0005eN-Lq; Mon, 21 Oct 2024 22:34:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823972.1238066; Mon, 21 Oct 2024 22: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 1t30z0-0005eG-IV; Mon, 21 Oct 2024 22:34:38 +0000
Received: by outflank-mailman (input) for mailman id 823972;
 Mon, 21 Oct 2024 22:34: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 1t30yy-0005e6-Kb; Mon, 21 Oct 2024 22:34: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 1t30yy-0003AE-IZ; Mon, 21 Oct 2024 22:34: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 1t30yy-0005ZM-4Q; Mon, 21 Oct 2024 22:34:36 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t30yy-0007FV-3s; Mon, 21 Oct 2024 22:34: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=OupqslnLXpR5K5vZHAWtgDw4dnkwTHB2cw6DSU7WbS8=; b=KiCX4baWFMLyZ4ydrW2Yi5+g/C
	9STjLXWUenmUJocCuc5MqSNdqESUGRWQj3g/6mId7E4gyJ+Q6N/skn1sw766/h8IMZ0vqFHe47pBe
	xQiA9LEMbg4XOU08YKoU/7sux0Woe0w93pjSWy52BrMDUCLE8bfTd/TtiaVoaMey6aZU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188313-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188313: 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-amd64-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-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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-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: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-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-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2: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-amd64-libvirt-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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-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=7cf6e073e47f7c7edfe764ce904df283ec7ddad8
X-Osstest-Versions-That:
    xen=73785a4c7727cd7a888c7d16ca6a77c3ed0161d7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 21 Oct 2024 22:34:36 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188310
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188310
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188310
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188310
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188310
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188310
 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-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-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-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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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                  7cf6e073e47f7c7edfe764ce904df283ec7ddad8
baseline version:
 xen                  73785a4c7727cd7a888c7d16ca6a77c3ed0161d7

Last test of basis   188310  2024-10-21 01:55:45 Z    0 days
Testing same since   188313  2024-10-21 16:07:09 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Daniel P. Smith <dpsmith@apertussolutions.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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   73785a4c77..7cf6e073e4  7cf6e073e47f7c7edfe764ce904df283ec7ddad8 -> master


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 22:43:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 22:43:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823985.1238075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t317F-0001Hq-I1; Mon, 21 Oct 2024 22:43:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823985.1238075; Mon, 21 Oct 2024 22:43: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 1t317F-0001Hj-FY; Mon, 21 Oct 2024 22:43:09 +0000
Received: by outflank-mailman (input) for mailman id 823985;
 Mon, 21 Oct 2024 22:43: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 1t317D-0001HX-Cy; Mon, 21 Oct 2024 22:43: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 1t317D-0003J8-8s; Mon, 21 Oct 2024 22:43: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 1t317C-0005lm-R3; Mon, 21 Oct 2024 22:43:06 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t317C-0001Vv-Qf; Mon, 21 Oct 2024 22:43: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=Tku34npYVyHhtUOKqXFG1oEy6oidrUptQ+66kCkmjAg=; b=J4yNtT9odQYybXFflxfGUTND+I
	6h2WGoPV3nEnKaEACfK28y7/vejPRpeTURB10Ji3EhQAXSWYMLVV9U3sKivHQ2SBqnrBw0r74TNNF
	QrPBM9zbCkd30Q9elzkaSCitguRvFp+kXPIiDa/C3USr2eg1VntQeZTRlDGrLGfOm+bE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188314-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188314: 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=49a068471d77820af5dac5ad062cde7129e3faae
X-Osstest-Versions-That:
    xen=7cf6e073e47f7c7edfe764ce904df283ec7ddad8
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 21 Oct 2024 22:43:06 +0000

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

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                  49a068471d77820af5dac5ad062cde7129e3faae
baseline version:
 xen                  7cf6e073e47f7c7edfe764ce904df283ec7ddad8

Last test of basis   188312  2024-10-21 12:03:51 Z    0 days
Testing same since   188314  2024-10-21 19:02:13 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alejandro Vallejo <alejandro.vallejo@cloud.com>
  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
   7cf6e073e4..49a068471d  49a068471d77820af5dac5ad062cde7129e3faae -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Oct 21 23:14:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 21 Oct 2024 23:14:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.823995.1238085 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t31bV-00047X-UL; Mon, 21 Oct 2024 23:14:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 823995.1238085; Mon, 21 Oct 2024 23: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 1t31bV-00047Q-Rd; Mon, 21 Oct 2024 23:14:25 +0000
Received: by outflank-mailman (input) for mailman id 823995;
 Mon, 21 Oct 2024 23: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=Pwn9=RR=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t31bV-00047J-0s
 for xen-devel@lists.xenproject.org; Mon, 21 Oct 2024 23:14:25 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 34f9edf1-9002-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 01:14:23 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 8BD87A43D1A;
 Mon, 21 Oct 2024 23:14:12 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0CB9C4CEC3;
 Mon, 21 Oct 2024 23:14: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: 34f9edf1-9002-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729552461;
	bh=T7fb8m8YIZ9OK+6EyD6YeKcOh9HhowUsSrDyQAKwUto=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=J8sU/OwNbABTGgW0UAPG8Eg6XCRhCnmR6SOaXrEarbFLGssVdLzbg+WVipLKR/YVq
	 xlEcha03yOASsG+7C7/Fi1bg4Y2yhnHJrRyj18fEIkfn96DwFsy0pEQMJ+dsB9JgfR
	 ufEYp3enohnpT/Su3/kp56qPMn6d9CeWhbm+e4HtBZVZ3GKCC39JNvCm6PtMX+OpQV
	 6361fI+VfTQ8M/2NfBjIypha3qqHKuTk6yK9DD1rV2Jg+optP8ry7whXPrh4GXCLkJ
	 WPxnA/JhdIrDqPqENlCf9rkR2zy+jURYjb83nhCNa86I+UuhWSmNxj0evJFGIcYdy2
	 qdrAQrAPTL3NQ==
Date: Mon, 21 Oct 2024 16:14:19 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jason Andryuk <jason.andryuk@amd.com>
cc: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org, 
    sstabellini@kernel.org
Subject: Re: [ImageBuilder] Fix device tree node naming
In-Reply-To: <76bfa4fe-bf09-4667-968f-890c8d917780@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410211614140.3833@ubuntu-linux-20-04-desktop>
References: <20241021110446.8633-1-michal.orzel@amd.com> <76bfa4fe-bf09-4667-968f-890c8d917780@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 21 Oct 2024, Jason Andryuk wrote:
> On 2024-10-21 07:04, Michal Orzel wrote:
> > A device tree node is named as follows: node-name@unit-address. The
> > unit-address must match the first address specified in the reg property
> > or be omitted if there's no reg property.
> > 
> > Fix the following issues:
> > 1) domU modules are named as: node-name0xunit-address. Fix the naming to
> >     follow the device tree spec.
> > 2) dom0 kernel and ramdisk, despite having the reg property do not have
> >     unit addresses specified. Fix it.
> > 
> > Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> 
> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Acked-by: Stefano Stabellini <sstabellini@kernel.org>


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 06:06:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 06:06:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824020.1238095 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t382K-0000Al-PW; Tue, 22 Oct 2024 06:06:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824020.1238095; Tue, 22 Oct 2024 06:06: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 1t382K-0000Ae-Mk; Tue, 22 Oct 2024 06:06:32 +0000
Received: by outflank-mailman (input) for mailman id 824020;
 Tue, 22 Oct 2024 06:06: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=bY6J=RS=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t382J-00006Y-9q
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 06:06:31 +0000
Received: from mail-ot1-x32b.google.com (mail-ot1-x32b.google.com
 [2607:f8b0:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c739d6d8-903b-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 08:06:30 +0200 (CEST)
Received: by mail-ot1-x32b.google.com with SMTP id
 46e09a7af769-718119fc061so2052997a34.2
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 23:06:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c739d6d8-903b-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729577188; x=1730181988; 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=UzP+E4jzsmuJ+iCaiHO2g6t+IVRtEuFceEfviBL8JT4=;
        b=e1NG+TA5cgogtnB/UsO0LBcorbhM0b4zEINvZnEYQwnIEKOnJRXBPgjr5081mVXe6F
         J0SJoS/FEdP0stkL50EA+aV0en3TUGUZh61W+9HBinkfXcDFtxsZFPc8CQx4JxKccuhK
         /1afJ4dQGYBmyWwR15tNlurpDQP25d02Ff5bn77f6Y5spMI+VNEhlCYZq3c+WzixWyR3
         TgvLxxjQqiI4EBl3QZl2J5ZApM0qzvPzbp8ZpqefMUE+0ITvD/2RcBdrXaALgl1MOI7q
         NYYsCaDKE95JMtOakAQtezahlcFbpwIFyl+BG6I1OwER/OV6qbn8nbLEa2TFuTsYCN5I
         I7AQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729577188; x=1730181988;
        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=UzP+E4jzsmuJ+iCaiHO2g6t+IVRtEuFceEfviBL8JT4=;
        b=OiR174bFS/DzY/TwFlVPCCIgjttxcTj3bMthTIcTNXo6ena3mAt7gOV7XAViySeZQw
         EvmOepCTcacbQNS5qvyYpli6mXGtXYzCmWipgj5LfisjqmNgVtoJ4wna+F35tRK9ks2H
         9uij6n8Pz2hA+wz8fMJLGv8LApQHLYBCRBXSfsw9/8CYCo+U7dZqcn2qCQp2VHL/9NWC
         NyUYvo/Zqaqf6qXP2UbUt0NY9+JXBF3697KYcyVlErZPVVzjr7fK3LGp/91XBTiWScQr
         Tjo9Wkgdd1/AZMjhb+BsNicecfbBTJW34AkcdHzz3ew2P1iX7VQ7JSxozDTzVv01s1tT
         Ag9Q==
X-Gm-Message-State: AOJu0YxQxW6SzcKwOs6thQFPKJucnSosPcXR6scCg9hRdFFfZUPsjIiO
	2HpPFN8L/SSWnnc6JfoFouwwHJcktrwa3se3uDawXOYpjBy+9ZRtRUme0ByjhSRWzLVnA/3n5g8
	DtG6LCLnTp0CBZHfvLGiJxhaCqhqr/37w1w26mg==
X-Google-Smtp-Source: AGHT+IGAQE98aBWxbKbnL7UlgpwA3rkDWyZaJRxEXUe74lesnibvR0DVyRORftJERc9wuhyPrwOItLb3jUwwUQs6U+Q=
X-Received: by 2002:a05:6871:b22:b0:261:164e:d12a with SMTP id
 586e51a60fabf-2892c34c6f7mr11019531fac.22.1729577188486; Mon, 21 Oct 2024
 23:06:28 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <457020b684e87ee9ad9488a4ec0d17ade90fdea1.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44FDQPepdzM1q+6QjB+fA4C+0OnC3-+Na6KMD_AVAeQadw@mail.gmail.com>
In-Reply-To: <CAHUa44FDQPepdzM1q+6QjB+fA4C+0OnC3-+Na6KMD_AVAeQadw@mail.gmail.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Tue, 22 Oct 2024 08:06:17 +0200
Message-ID: <CAHUa44EV7EAoWGfKBgnv4BPuU_rAvD_jcOozqC0CgZWUzo0Mug@mail.gmail.com>
Subject: Re: [PATCH v2 01/10] xen/arm: ffa: Rework firmware discovery
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 21, 2024 at 7:03=E2=80=AFPM Jens Wiklander
<jens.wiklander@linaro.org> wrote:
>
> Hi Bertrand,
>
> On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
> <bertrand.marquis@arm.com> wrote:
> >
> > Rework firmware discovery during probe:
> > - move prints into the probe
> > - rename ffa_version to ffa_fw_version as the variable identifies the
> >   version of the firmware and not the one we support
> > - add error prints when allocation fail during probe
> >
> > No functional changes.
> >
> > Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> > ---
> > Changes in v2:
> > - Fix error message when we fail to retrieve ffa_version
> > - Move back printing the firmware version before checking supported
> >   features
> > - Use Warning instead of Info to inform user that FF-A is not supported
> >   in firmware.
> > ---
> >  xen/arch/arm/tee/ffa.c | 44 ++++++++++++++++++++++++++----------------
> >  1 file changed, 27 insertions(+), 17 deletions(-)
> >
> > diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> > index 022089278e1c..1cc4023135d5 100644
> > --- a/xen/arch/arm/tee/ffa.c
> > +++ b/xen/arch/arm/tee/ffa.c
> > @@ -71,8 +71,8 @@
> >
> >  #include "ffa_private.h"
> >
> > -/* Negotiated FF-A version to use with the SPMC */
> > -static uint32_t __ro_after_init ffa_version;
> > +/* Negotiated FF-A version to use with the SPMC, 0 if not there or sup=
ported */
> > +static uint32_t __ro_after_init ffa_fw_version;
> >
> >
> >  /*
> > @@ -105,10 +105,7 @@ static bool ffa_get_version(uint32_t *vers)
> >
> >      arm_smccc_1_2_smc(&arg, &resp);
> >      if ( resp.a0 =3D=3D FFA_RET_NOT_SUPPORTED )
> > -    {
> > -        gprintk(XENLOG_ERR, "ffa: FFA_VERSION returned not supported\n=
");
> >          return false;
> > -    }
> >
> >      *vers =3D resp.a0;
> >
> > @@ -372,7 +369,7 @@ static int ffa_domain_init(struct domain *d)
> >      struct ffa_ctx *ctx;
> >      int ret;
> >
> > -    if ( !ffa_version )
> > +    if ( !ffa_fw_version )
> >          return -ENODEV;
> >       /*
> >        * We can't use that last possible domain ID or ffa_get_vm_id() w=
ould
> > @@ -505,6 +502,9 @@ static bool ffa_probe(void)
> >       */
> >      BUILD_BUG_ON(PAGE_SIZE !=3D FFA_PAGE_SIZE);
> >
> > +    printk(XENLOG_INFO "ARM FF-A Mediator version %u.%u\n",
> > +           FFA_MY_VERSION_MAJOR, FFA_MY_VERSION_MINOR);
> > +
> >      /*
> >       * psci_init_smccc() updates this value with what's reported by EL=
-3
> >       * or secure world.
> > @@ -514,22 +514,24 @@ static bool ffa_probe(void)
> >          printk(XENLOG_ERR
> >                 "ffa: unsupported SMCCC version %#x (need at least %#x)=
\n",
> >                 smccc_ver, ARM_SMCCC_VERSION_1_2);
> > -        return false;
> > +        goto err_no_fw;
> >      }
> >
> >      if ( !ffa_get_version(&vers) )
> > -        return false;
> > +    {
> > +        gprintk(XENLOG_ERR, "Cannot retrieve the FFA version\n");
> > +        goto err_no_fw;
> > +    }
> >
> >      if ( vers < FFA_MIN_SPMC_VERSION || vers > FFA_MY_VERSION )
> >      {
> >          printk(XENLOG_ERR "ffa: Incompatible version %#x found\n", ver=
s);
> > -        return false;
> > +        goto err_no_fw;
> >      }
> >
> > -    major_vers =3D (vers >> FFA_VERSION_MAJOR_SHIFT) & FFA_VERSION_MAJ=
OR_MASK;
> > +    major_vers =3D (vers >> FFA_VERSION_MAJOR_SHIFT)
> > +                 & FFA_VERSION_MAJOR_MASK;
>
> Spurious change?
>
> >      minor_vers =3D vers & FFA_VERSION_MINOR_MASK;
> > -    printk(XENLOG_INFO "ARM FF-A Mediator version %u.%u\n",
> > -           FFA_MY_VERSION_MAJOR, FFA_MY_VERSION_MINOR);
>
> It's not a big deal, but isn't it useful to know which version we're
> at? If it's too much with a separate line, how about adding "(our
> version %u.u%)" at the end of the line below?

Please ignore this comment, I missed this was moved up a few lines.

Thanks,
Jens

>
> >      printk(XENLOG_INFO "ARM FF-A Firmware version %u.%u\n",
> >             major_vers, minor_vers);
> >
> > @@ -546,12 +548,18 @@ static bool ffa_probe(void)
> >           !check_mandatory_feature(FFA_MEM_SHARE_32) ||
> >           !check_mandatory_feature(FFA_MEM_RECLAIM) ||
> >           !check_mandatory_feature(FFA_MSG_SEND_DIRECT_REQ_32) )
> > -        return false;
> > +    {
> > +        printk(XENLOG_ERR "ffa: Mandatory feature not supported by fw\=
n");
> > +        goto err_no_fw;
> > +    }
> >
> > -    if ( !ffa_rxtx_init() )
> > -        return false;
> > +    ffa_fw_version =3D vers;
> >
> > -    ffa_version =3D vers;
> > +    if ( !ffa_rxtx_init() )
> > +    {
> > +        printk(XENLOG_ERR "ffa: Error during RXTX buffer init\n");
>
> With this added, wouldn't it make sense to remove the error print in
> ffa_rxtx_init()?
>
> Cheers,
> Jens
>
> > +        goto err_no_fw;
> > +    }
> >
> >      if ( !ffa_partinfo_init() )
> >          goto err_rxtx_destroy;
> > @@ -564,7 +572,9 @@ static bool ffa_probe(void)
> >
> >  err_rxtx_destroy:
> >      ffa_rxtx_destroy();
> > -    ffa_version =3D 0;
> > +err_no_fw:
> > +    ffa_fw_version =3D 0;
> > +    printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
> >
> >      return false;
> >  }
> > --
> > 2.47.0
> >


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 06:31:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 06:31:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824027.1238106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t38Q4-0005il-Lo; Tue, 22 Oct 2024 06:31:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824027.1238106; Tue, 22 Oct 2024 06:31: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 1t38Q4-0005ie-J4; Tue, 22 Oct 2024 06:31:04 +0000
Received: by outflank-mailman (input) for mailman id 824027;
 Tue, 22 Oct 2024 06:31: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=bY6J=RS=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t38Q3-0005iY-C4
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 06:31:03 +0000
Received: from mail-oi1-x232.google.com (mail-oi1-x232.google.com
 [2607:f8b0:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3382c388-903f-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 08:31:00 +0200 (CEST)
Received: by mail-oi1-x232.google.com with SMTP id
 5614622812f47-3e5fb8a4e53so2296914b6e.1
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 23:31:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3382c388-903f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729578659; x=1730183459; 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=NZxJZnqUFr6BQdAzFP7rxLC2of8rlZYwZttZmH78GZQ=;
        b=hPfUw3l5wrgmhQy0Ndsrf7BRM4++vCXLXvhltse8rW5M9ps1Zr/WSM+N8PpcgjpPRC
         +4Y0xYciV/vjefAEM/Mmqtk/t7oKUTPO5rKis6KwkbTcSa9nDVPF9zFR6s2MeMc096Eo
         1Y9fbDz71PkdmTm+/IsuKUv3piS3QL+8nN43HWpHq5d+XcyPA1U6L1IaUVZghFEv0PHJ
         ML+HnJnaTWPXXwEgnpA0N7gSUIgmCXESU214V8YrfbkR/avVO6wm9w22oNmROsnY0M3l
         NwRYVX6hQSy3PtpM+qFSfTxlw5ahTTg5h8ftFMDc/gk6m2oT0vre3/JOSPpg4hmjrTh/
         rueA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729578659; x=1730183459;
        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=NZxJZnqUFr6BQdAzFP7rxLC2of8rlZYwZttZmH78GZQ=;
        b=r7SF63L5VU9XXb+TKGr0MLN3FpMprwba4mz+wtnp8e7wHbbQOh9GCv3dzhOToRldlJ
         cm7Ek72LwthDeUjh4HtgUqhWXjS0Lqcr2IO8fSm2io8o0XmiCZblYOCZcUMiyweZTozk
         Jct9CqkCW43jfJ5vGs3cmCqshM00xUJbKGz7Oyn8ypjTVzKtWhfzPI1Tqt2IcPdncwIT
         /HMaeVjate5vi+yBImk6QWBvd3fYWZ8FH6dBZBFk0vWqUB9ZwJ7Ua4n1Ij5mMQ376IP2
         aqedOAiuyj/1xRWmyEQggFnd7Dda7gLTStPAZfeMVNrtToaSuydJB807PpInDRsy6ahp
         /Eww==
X-Gm-Message-State: AOJu0YzuXf5nsoA0qRIFa1IzYycQSTQpZ95cmyoYDwiJMHl2Ib2WFUAu
	awuom/ckNbYqg3bgRH5tiOPDZICQbCoKjF+Xmnk1pfKXB2ITP35xiEEWTTZsc0O1awXAJwnJg/k
	l7TkHuidSgTDBu06wxFrC0pB+iPRvQx9hs6qmbg==
X-Google-Smtp-Source: AGHT+IErRlY6x7QLrMqBSYMyWjWkEbNuoIuDUw1hefP9RnPVH2Eu4sdhKjNB4ItCpM2nUAZ5gsm6x+2kNl2U/2iBeno=
X-Received: by 2002:a05:6870:8086:b0:288:679e:ca8a with SMTP id
 586e51a60fabf-28caff1eb49mr1592236fac.18.1729578658760; Mon, 21 Oct 2024
 23:30:58 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <8cc7abbd82b43aa595ddc2dce3495663dfc413e0.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <8cc7abbd82b43aa595ddc2dce3495663dfc413e0.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Tue, 22 Oct 2024 08:30:47 +0200
Message-ID: <CAHUa44GUxXLmeUon5JbxcEcKqyitaC6-2FmZFAW37daqyVg-CQ@mail.gmail.com>
Subject: Re: [PATCH v2 02/10] xen/arm: ffa: Rework feature discovery
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Store the list of ABI we need in a list and go through the list instead
> of having a list of conditions inside the code.
>
> No functional change.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - Store a string version of ABI needed from firmware and print the name
>   of the ABI not supported instead of the id
> - Restore comment with TODO which should not have been removed at this
>   stage
> - fix to unsigned int the index in the loop on the array
> - use abi instead of feature in the names of the functions and variables
>   as we are not checking features but abis
> ---
>  xen/arch/arm/tee/ffa.c | 57 +++++++++++++++++++++++++-----------------
>  1 file changed, 34 insertions(+), 23 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 1cc4023135d5..dde932422ecf 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -74,6 +74,31 @@
>  /* Negotiated FF-A version to use with the SPMC, 0 if not there or suppo=
rted */
>  static uint32_t __ro_after_init ffa_fw_version;
>
> +struct ffa_fw_abi {
> +    const uint32_t id;

I prefer removing the const attribute for this struct member since it
doesn't add anything when the struct itself is const.

Cheers,
Jens

> +    const char *name;
> +};
> +
> +#define FW_ABI(abi) {abi,#abi}
> +
> +/* List of ABI we use from the firmware */
> +static const struct ffa_fw_abi ffa_fw_abi_needed[] =3D {
> +    FW_ABI(FFA_VERSION),
> +    FW_ABI(FFA_FEATURES),
> +    FW_ABI(FFA_NOTIFICATION_BITMAP_CREATE),
> +    FW_ABI(FFA_NOTIFICATION_BITMAP_DESTROY),
> +    FW_ABI(FFA_PARTITION_INFO_GET),
> +    FW_ABI(FFA_NOTIFICATION_INFO_GET_64),
> +    FW_ABI(FFA_NOTIFICATION_GET),
> +    FW_ABI(FFA_RX_RELEASE),
> +    FW_ABI(FFA_RXTX_MAP_64),
> +    FW_ABI(FFA_RXTX_UNMAP),
> +    FW_ABI(FFA_MEM_SHARE_32),
> +    FW_ABI(FFA_MEM_SHARE_64),
> +    FW_ABI(FFA_MEM_RECLAIM),
> +    FW_ABI(FFA_MSG_SEND_DIRECT_REQ_32),
> +    FW_ABI(FFA_MSG_SEND_DIRECT_REQ_64),
> +};
>
>  /*
>   * Our rx/tx buffers shared with the SPMC. FFA_RXTX_PAGE_COUNT is the
> @@ -112,20 +137,9 @@ static bool ffa_get_version(uint32_t *vers)
>      return true;
>  }
>
> -static int32_t ffa_features(uint32_t id)
> -{
> -    return ffa_simple_call(FFA_FEATURES, id, 0, 0, 0);
> -}
> -
> -static bool check_mandatory_feature(uint32_t id)
> +static bool ffa_abi_supported(uint32_t id)
>  {
> -    int32_t ret =3D ffa_features(id);
> -
> -    if ( ret )
> -        printk(XENLOG_ERR "ffa: mandatory feature id %#x missing: error =
%d\n",
> -               id, ret);
> -
> -    return !ret;
> +    return !ffa_simple_call(FFA_FEATURES, id, 0, 0, 0);
>  }
>
>  static void handle_version(struct cpu_user_regs *regs)
> @@ -540,17 +554,14 @@ static bool ffa_probe(void)
>       * TODO: Rework the code to allow domain to use a subset of the
>       * features supported.
>       */
> -    if ( !check_mandatory_feature(FFA_PARTITION_INFO_GET) ||
> -         !check_mandatory_feature(FFA_RX_RELEASE) ||
> -         !check_mandatory_feature(FFA_RXTX_MAP_64) ||
> -         !check_mandatory_feature(FFA_MEM_SHARE_64) ||
> -         !check_mandatory_feature(FFA_RXTX_UNMAP) ||
> -         !check_mandatory_feature(FFA_MEM_SHARE_32) ||
> -         !check_mandatory_feature(FFA_MEM_RECLAIM) ||
> -         !check_mandatory_feature(FFA_MSG_SEND_DIRECT_REQ_32) )
> +    for ( unsigned int i =3D 0; i < ARRAY_SIZE(ffa_fw_abi_needed); i++ )
>      {
> -        printk(XENLOG_ERR "ffa: Mandatory feature not supported by fw\n"=
);
> -        goto err_no_fw;
> +        if ( !ffa_abi_supported(ffa_fw_abi_needed[i].id) )
> +        {
> +            printk(XENLOG_INFO "ARM FF-A Firmware does not support %s\n"=
,
> +                   ffa_fw_abi_needed[i].name);
> +            goto err_no_fw;
> +        }
>      }
>
>      ffa_fw_version =3D vers;
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 06:56:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 06:56:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824035.1238116 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t38om-0000mq-Kt; Tue, 22 Oct 2024 06:56:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824035.1238116; Tue, 22 Oct 2024 06:56: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 1t38om-0000mj-He; Tue, 22 Oct 2024 06:56:36 +0000
Received: by outflank-mailman (input) for mailman id 824035;
 Tue, 22 Oct 2024 06:56: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=bY6J=RS=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t38ol-0000lC-9s
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 06:56:35 +0000
Received: from mail-oo1-xc31.google.com (mail-oo1-xc31.google.com
 [2607:f8b0:4864:20::c31])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c5cb1572-9042-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 08:56:34 +0200 (CEST)
Received: by mail-oo1-xc31.google.com with SMTP id
 006d021491bc7-5ebc9bda8c8so690965eaf.0
 for <xen-devel@lists.xenproject.org>; Mon, 21 Oct 2024 23:56:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5cb1572-9042-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729580192; x=1730184992; 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=ksO6GCw6PIPFs5dx8hdx9Ui5VfcEYz/8/jRlF1w0Pxs=;
        b=CRd/VokKpX+1H8vrau2tJj0+gXers1A3oG3ZaxLMxdJ4ycuLtAczsYZdupIIL4azdy
         dQ8ZVmgfVo94T9X4wcVAjLCOWqt4k1WqQ9xfZjirsrJR/20daifjuo+n/h1ibrjkTFZJ
         MYy1If4loDDxmJCOn5vsCwsObEy/UXL2R2PB6uR0QYbEDySzrbiZC/pr1P5gbyXRifF0
         6JC53W9HyHyWgYRo47SZeUsH7wGQmAq/pZO/cjLqOAXhLhFrzHCRrwR46/4gX+Esn32g
         O4Q1L3KtOyJC0wYv/6YwECDRreLihoVXyqQptiTuEv9pvRppF4sAKUBYruK2WEziHIDD
         fidw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729580192; x=1730184992;
        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=ksO6GCw6PIPFs5dx8hdx9Ui5VfcEYz/8/jRlF1w0Pxs=;
        b=TL6ytxc4gDzACUkxGZU+/fkKGMpZOad3dRDTZbzGKqPFkYTCa2Rbpp2p0F2apf7hbI
         D8ayxAqZXERz9L6M50+JVttrvx6BPmVJ+9WwHyEgAbcIdo+erXwP1aU1MkFmJZ1FtryH
         jdxgj5UOJhU/w9iUMqaalSoN5itDWI2LYN3Jwe6clicNzM9mHdiPoReBUFlQ7hMDDfvz
         mdn224Uw5CVfh6rqYz/HaVxEWPd1/yBMOLRyewWxls7k1f3iMgK+Q+HMKtEf9pLA4ic9
         wHY9Ag6Im2s5JAhsPJka0kMawR0duYVfP6ejqlny+e9YW5IovGn6xEx1kupE2KXwgN0W
         GqXw==
X-Gm-Message-State: AOJu0Yyii8xCnaL32xzylCggEVr6DdO54YDjelFB00dGEucDsPUpLeHp
	eg0uuX6uk0pNpf3Rw7Ui/P4qdfkuY/in6YRoYujdFcu3XsWRqqbpOm57uPQpAHNBe/w8wuCA9Ub
	e2wLjyoLD7FIj2hT840wi+Af41E79YJSbbvkTAA==
X-Google-Smtp-Source: AGHT+IGXRVtuLew4DSE1TDARe3BNRLU/3AjuyxAuQtByZuZvIvZK+3KJ3n3CtPkrBAttt8iaAfrNm3C68JjO3xDhK98=
X-Received: by 2002:a05:6870:e311:b0:278:65c:3c14 with SMTP id
 586e51a60fabf-2892c2580d7mr10827718fac.5.1729580192597; Mon, 21 Oct 2024
 23:56:32 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <86636401aa34f9c64e674a53d49859930a227d10.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <86636401aa34f9c64e674a53d49859930a227d10.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Tue, 22 Oct 2024 08:56:20 +0200
Message-ID: <CAHUa44GF8VwAzX1Qs-PGsJXUaAStGiSeiPNtq-LWhXC3=qixiQ@mail.gmail.com>
Subject: Re: [PATCH v2 03/10] xen/arm: ffa: Fix version negotiation
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Fix FFA version negotiation with the firmware to follow the
> specification guidance more closely (see FF-A Specification Version 1.1
> in chapter 13.2.1).
> When the firmware returns OK we can have several cases:
> - the version requested is accepted but the firmware supports a greater
>   one in the same major.
> - the firmware supports a greater major version. It could still return
>   OK even if the version requested is not accepted. Reject it.
> - the firmware supports a lower version. It will return OK and give that
>   version. Check if we support it and use it or reject it if we do not.
>
> Adapt the code to:
> - reject any version lower than the one we support or not with the same
>   major version
> - use the version returned if in our supported range (currently 1.1
>   only)
> - use 1.1 if the version returned is greater.
>
> Also adapt the handling of version requests from VM:
> - use our version if same major but greater minor is requested
> - use requested version if same major but lower minor is requested
> - do not use if incompatible major is requested
> - always return our version without error to the requester
>
> [1] https://developer.arm.com/documentation/den0077/e/
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - add link in commit message and code to the version and chapter of
>   the spec.
> - fix comment coding style
> - introduce macros to get the major and minor of a version
> - add BUILD_BUG_ON to validate that the SPMC version we want is
>   compatible with our own version
> - rework version testing and selecting to be clearer by discarding
>   different major or version lower than what we want and then selecting
>   based on the minor version.
> - fix get_version handling to be more generic
> ---
>  xen/arch/arm/tee/ffa.c         | 54 +++++++++++++++++++++++++---------
>  xen/arch/arm/tee/ffa_private.h |  3 ++
>  2 files changed, 43 insertions(+), 14 deletions(-)

Looks good.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

Cheers,
Jens

>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index dde932422ecf..1ee6b2895e92 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -148,13 +148,20 @@ static void handle_version(struct cpu_user_regs *re=
gs)
>      struct ffa_ctx *ctx =3D d->arch.tee;
>      uint32_t vers =3D get_user_reg(regs, 1);
>
> -    if ( vers < FFA_VERSION_1_1 )
> -        vers =3D FFA_VERSION_1_0;
> -    else
> -        vers =3D FFA_VERSION_1_1;
> -
> -    ctx->guest_vers =3D vers;
> -    ffa_set_regs(regs, vers, 0, 0, 0, 0, 0, 0, 0);
> +    /*
> +     * Guest will use the version it requested if it is our major and mi=
nor
> +     * lower or equals to ours. If the minor is greater, our version wil=
l be
> +     * used.
> +     * In any case return our version to the caller.
> +     */
> +    if ( FFA_VERSION_MAJOR(vers) =3D=3D FFA_MY_VERSION_MAJOR )
> +    {
> +        if ( FFA_VERSION_MINOR(vers) > FFA_MY_VERSION_MINOR )
> +            ctx->guest_vers =3D FFA_MY_VERSION;
> +        else
> +            ctx->guest_vers =3D vers;
> +    }
> +    ffa_set_regs(regs, FFA_MY_VERSION, 0, 0, 0, 0, 0, 0, 0);
>  }
>
>  static void handle_msg_send_direct_req(struct cpu_user_regs *regs, uint3=
2_t fid)
> @@ -537,18 +544,39 @@ static bool ffa_probe(void)
>          goto err_no_fw;
>      }
>
> -    if ( vers < FFA_MIN_SPMC_VERSION || vers > FFA_MY_VERSION )
> +    /* Some sanity check in case we update the version we support */
> +    BUILD_BUG_ON(FFA_MIN_SPMC_VERSION > FFA_MY_VERSION);
> +    BUILD_BUG_ON(FFA_VERSION_MAJOR(FFA_MIN_SPMC_VERSION) !=3D
> +                                   FFA_MY_VERSION_MAJOR);
> +
> +    major_vers =3D FFA_VERSION_MAJOR(vers);
> +    minor_vers =3D FFA_VERSION_MINOR(vers);
> +
> +    if ( major_vers !=3D FFA_MY_VERSION_MAJOR ||
> +         minor_vers < FFA_VERSION_MINOR(FFA_MIN_SPMC_VERSION) )
>      {
> -        printk(XENLOG_ERR "ffa: Incompatible version %#x found\n", vers)=
;
> +        printk(XENLOG_ERR "ffa: Incompatible firmware version %u.%u\n",
> +               major_vers, minor_vers);
>          goto err_no_fw;
>      }
>
> -    major_vers =3D (vers >> FFA_VERSION_MAJOR_SHIFT)
> -                 & FFA_VERSION_MAJOR_MASK;
> -    minor_vers =3D vers & FFA_VERSION_MINOR_MASK;
>      printk(XENLOG_INFO "ARM FF-A Firmware version %u.%u\n",
>             major_vers, minor_vers);
>
> +    /*
> +     * If the call succeed and the version returned is higher or equal t=
o
> +     * the one Xen requested, the version requested by Xen will be the o=
ne
> +     * used. If the version returned is lower but compatible with Xen, X=
en
> +     * will use that version instead.
> +     * A version with a different major or lower than the minimum versio=
n
> +     * we support is rejected before.
> +     * See https://developer.arm.com/documentation/den0077/e/ chapter 13=
.2.1
> +     */
> +    if ( minor_vers > FFA_MY_VERSION_MINOR )
> +        ffa_fw_version =3D FFA_MY_VERSION;
> +    else
> +        ffa_fw_version =3D vers;
> +
>      /*
>       * At the moment domains must support the same features used by Xen.
>       * TODO: Rework the code to allow domain to use a subset of the
> @@ -564,8 +592,6 @@ static bool ffa_probe(void)
>          }
>      }
>
> -    ffa_fw_version =3D vers;
> -
>      if ( !ffa_rxtx_init() )
>      {
>          printk(XENLOG_ERR "ffa: Error during RXTX buffer init\n");
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 7c6b06f686fc..045d9c4a0b56 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -35,6 +35,9 @@
>  #define MAKE_FFA_VERSION(major, minor)  \
>          ((((major) & FFA_VERSION_MAJOR_MASK) << FFA_VERSION_MAJOR_SHIFT)=
 | \
>           ((minor) & FFA_VERSION_MINOR_MASK))
> +#define FFA_VERSION_MAJOR(vers) (((vers) >> FFA_VERSION_MAJOR_SHIFT) & \
> +                                 FFA_VERSION_MAJOR_MASK)
> +#define FFA_VERSION_MINOR(vers) ((vers) & FFA_VERSION_MINOR_MASK)
>
>  #define FFA_VERSION_1_0         MAKE_FFA_VERSION(1, 0)
>  #define FFA_VERSION_1_1         MAKE_FFA_VERSION(1, 1)
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 07:01:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 07:01:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824047.1238134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t38tQ-0002Yy-EP; Tue, 22 Oct 2024 07:01:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824047.1238134; Tue, 22 Oct 2024 07:01: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 1t38tQ-0002Yr-BE; Tue, 22 Oct 2024 07:01:24 +0000
Received: by outflank-mailman (input) for mailman id 824047;
 Tue, 22 Oct 2024 07:01: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 1t38tO-0002Yh-HB; Tue, 22 Oct 2024 07:01: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 1t38tO-0004bF-FV; Tue, 22 Oct 2024 07:01:22 +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 1t38tN-0005jz-UI; Tue, 22 Oct 2024 07:01:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t38tN-0008LB-Tp; Tue, 22 Oct 2024 07: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>
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=beL0eHtwwEPF76ufzz++0b0YakQoBhvUFuKJJMGQLNM=; b=hLgypDZbBLUvI5AeuV1bdUvmfP
	/6ypsnsXZBfFB+WILygH5RadrDNcd5cGiv0zyCKEXl74qgsyUTpNkvTwrEnsHcuDe3ShwSi4o6Go+
	NFydGPPljxogjyzI0aysNQTfNISgQ9q+df6iUpkmMvxm2fO83VYrQSR7PjPu3NZ6oRMA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188315-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188315: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check: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-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-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: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-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-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2: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-amd64-libvirt-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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-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=49a068471d77820af5dac5ad062cde7129e3faae
X-Osstest-Versions-That:
    xen=7cf6e073e47f7c7edfe764ce904df283ec7ddad8
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 22 Oct 2024 07:01:21 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check    fail pass in 188316-retest
 test-armhf-armhf-xl-qcow2    20 leak-check/check    fail pass in 188316-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188313
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188313
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188313
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188313
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188313
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188313
 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-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-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-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-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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                  49a068471d77820af5dac5ad062cde7129e3faae
baseline version:
 xen                  7cf6e073e47f7c7edfe764ce904df283ec7ddad8

Last test of basis   188313  2024-10-21 16:07:09 Z    0 days
Testing same since   188315  2024-10-21 23:10:38 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alejandro Vallejo <alejandro.vallejo@cloud.com>
  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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 fail    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   7cf6e073e4..49a068471d  49a068471d77820af5dac5ad062cde7129e3faae -> master


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 09:41:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 09:41:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824061.1238144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3BOK-0007pA-Ml; Tue, 22 Oct 2024 09:41:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824061.1238144; Tue, 22 Oct 2024 09:41: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 1t3BOK-0007p3-Iu; Tue, 22 Oct 2024 09:41:28 +0000
Received: by outflank-mailman (input) for mailman id 824061;
 Tue, 22 Oct 2024 09:41: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=tTvi=RS=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t3BOJ-0007ox-5W
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 09:41:27 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on2061d.outbound.protection.outlook.com
 [2a01:111:f403:2614::61d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cdc070ec-9059-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 11:41:25 +0200 (CEST)
Received: from AS4P190CA0004.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::10)
 by VI1PR08MB10244.eurprd08.prod.outlook.com (2603:10a6:800:1bd::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.20; Tue, 22 Oct
 2024 09:41:17 +0000
Received: from AM4PEPF00027A66.eurprd04.prod.outlook.com
 (2603:10a6:20b:5de:cafe::ec) by AS4P190CA0004.outlook.office365.com
 (2603:10a6:20b:5de::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend
 Transport; Tue, 22 Oct 2024 09:41:17 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00027A66.mail.protection.outlook.com (10.167.16.91) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Tue, 22 Oct 2024 09:41:16 +0000
Received: ("Tessian outbound 60a4253641a2:v473");
 Tue, 22 Oct 2024 09:41:15 +0000
Received: from Lee0e0fd7ce08.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 EB519613-64FD-4640-AD92-179E2E2AA889.1; 
 Tue, 22 Oct 2024 09:41:06 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lee0e0fd7ce08.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 22 Oct 2024 09:41:06 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by AS4PR08MB7711.eurprd08.prod.outlook.com (2603:10a6:20b:512::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Tue, 22 Oct
 2024 09:41:02 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8069.027; Tue, 22 Oct 2024
 09:41: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: cdc070ec-9059-11ef-a0be-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=fezVyDcUNc41b7XeNJn1q5yb5g3OBmBXSwMyKNAy1lHMSuusvL0VGrAnCD4KTH4dVprTUri1QB7x53rDOJKdF87g1pqMIbHU68kUHnzwrNpi+UpICIONlvg/QRAlVaPvBp2FGfXp9WsTKH+gzNMYG8w87EUUsyD5EeyRx5sNdp9jgzJbQJAV8mFPlGrskrfeQvHx01z0wiOpbaf79n0GX/O/lHb3RfTBrx5eidF3K/debgJepUDE+r1V3rgex1vYyx91MFvC+1dlFWXKz9Zk3N3BAvFTJR6+JmXHkhOQ1mH6bziPVk+uFXql0NYamby/njD+X7O+0mLy60BEAQwbdQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=HarXrckkJaLj21h4AuSMkcradpaBEuoWuIiL4YAfb5c=;
 b=tlpXabY8br49meZP+usLzHc3vBDP77BsZGFMu0dzQPlreyd9y7+dc6gsBobZCRVsCB3LTf1XE+1slNxUhqvcOyaKtrNviFJykerOL9zJdCLtIZ1H08jwr6ez3XZv9ePBj/iJfHzfjKPHs1KhB5BPMuwkoVPNT1JsbheEkaE/5nFvBCl/XIpO52n/4V3RbxnRjjD7FeMW6LgpL95NcbKLb2W6UEBCLiBy4YIrBB7F54Z1NNNJCAAivzzXRYbeuhmvuwOu0fKSjlW9lmfwfHKcaM0H1H9/OaLGKFwwD1VghOljmkMevPkldG1nH6TlkFzbMeEDOaKe/7FwPN/KZgsTSQ==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HarXrckkJaLj21h4AuSMkcradpaBEuoWuIiL4YAfb5c=;
 b=ojY/w8EEWxgWw/lYJqbDyOPeZJGgg9Z/DpqR8mEviISgBvvJ1MiFdV5tteRvWdsUgO5/EVJiFYzITYujiAfI3Eiyx3cbrnfr+HNw1ypEh/QDMDePi3xAX6sUSAwej3vLM9u21WWsUEeZR/wioojiXl5WjqB8jSh6RZa4bIK5JZ4=
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=arm.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: f310c73c1b09954e
X-TessianGatewayMetadata: twgCD9/r73dLx9Ren9HSZn3OQk+lEMW8ZhEdgOsehd4bgNM8+UBbuPnoZPG8hI/qdDei5lbTu5GgvzVO9t+HlQwenVtZV97R6l8rqF22wTQoI7xaIo8O2ds6fKcrgr7XVAJIc21IuachVOCO/4/W2rR2Sh9aZNA7RQrOsxVjdtE=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=H/lDVxSvCOfezrox6QXfDP4RAHPwREps8Pe9bjWP/2k4+YI1faC6nSc4rumO3p9mBeZTQtwrboR/Wf2zI6BPflzZ8t8tGplnd+rJV+hvkvp6C18O7RjsUbWgpZmJtElq7C1Kch88+g7E5vkrCAk5B2c3NO3J1woebzecuJ+4lIWJpykQQwmX2iAmRvOLKJN1oNBPJFyKR6XkILl1/eVWbPvxUK5LFkkpb0VG9o9rTPPl7DNrqEVghcSxFRJ3yrgCp272OE6ztSZFt7sK7/z838BllgxdXeMKo2rsqkcsfp+S2NnZkDEaYIKw+rLrKJeqVnhkuBz8jD/jRHPJShwYHw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=HarXrckkJaLj21h4AuSMkcradpaBEuoWuIiL4YAfb5c=;
 b=uzyLw6NFKll0kdZuxO3wWyNP0CjqpP2htHhIDwu0k9M77S7Dou375EM6CI5LeDZyngWKUgSqK2FkaNslvQJERXOk9dOTjbL8Qz2T2lqUAIbDChjc8vtwPq/vbuJ47WceFU5fapTOT5W8P7IIitaGigLZXQOwLASl4TrOreJf2V9SpegOsh1e9DnM6rsn+Ac+r4C3r+tnoRYI96SYtzRLnqyP7jlwqfGHYw21U8OJUcNdYizjmcBDZVdmoildLiIEoCKZCaSfYz9qENP0YQhhZQ5VN0cdUEY5Xwrlf6WvjlrIs7EbSU/3DN48EAhG8ZlUsUWUjIV21+MgDqPkUNrmIQ==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=HarXrckkJaLj21h4AuSMkcradpaBEuoWuIiL4YAfb5c=;
 b=ojY/w8EEWxgWw/lYJqbDyOPeZJGgg9Z/DpqR8mEviISgBvvJ1MiFdV5tteRvWdsUgO5/EVJiFYzITYujiAfI3Eiyx3cbrnfr+HNw1ypEh/QDMDePi3xAX6sUSAwej3vLM9u21WWsUEeZR/wioojiXl5WjqB8jSh6RZa4bIK5JZ4=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Julien Grall <julien@xen.org>
CC: Ayan Kumar Halder <ayankuma@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, "xen-devel@lists.xenproject.org"
	<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>
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Topic: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Index: AQHbGx2Ge9N55hTx/U2iD9lYiTVQprKNIysAgARC6gCAAA8agIAAAOKAgAEgqoA=
Date: Tue, 22 Oct 2024 09:41:02 +0000
Message-ID: <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
In-Reply-To: <f444f549-6f4e-494b-af85-aeec127722c4@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.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|AS4PR08MB7711:EE_|AM4PEPF00027A66:EE_|VI1PR08MB10244:EE_
X-MS-Office365-Filtering-Correlation-Id: 95c79676-1a07-4a35-72d8-08dcf27daccc
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?Q2trYVF5dUc3bGo5QzJLclBlaGhUVXBQc1dBRTcxRjJPVm03UVJteVVMbUYw?=
 =?utf-8?B?NkhLcnVsemI4VFFYb3JJempvWGRUNFlscVVBelJ4UTRMWDRMd0Y3Zmo0cFAx?=
 =?utf-8?B?cWxEdEs0VHRpRTdPc3U0SHRiQWx2d3RpMFBFdzRGTHhHOENiOXYrRGkvbFNq?=
 =?utf-8?B?MjRrY3Jyenk4RHFJclBnYlB1RjVxdDZzL29TOXp0QjlXT2xBeUl1WFNqTWx2?=
 =?utf-8?B?QXVaRXp6RWk5dEJUTExDM3J6OEw4S2tvcFBteDA3ZTM1ZGpaekNhQzBlaWhq?=
 =?utf-8?B?M1ZBYXBDaFdibWxZejZzbEp5MWdUZ1ZxRWhVblQ4Zk5QZkQ0NjlGU1lORzRv?=
 =?utf-8?B?L3NaWmlyeW0yQ0hTbkhpOGdhdGhBTk4rb0crM3BPUWZLUlBqNERqQTJGWCto?=
 =?utf-8?B?QUk4cHFTZ0Jxb0wyUUtoQ0JYNWlRMUphbmFOcE9KTW5HNUlHODVueGdmVnFZ?=
 =?utf-8?B?NC92V2hvc0FEQkN0cmE4YjlaeU5LejMyckxPVnNEYXVLNE9GdGtoVVIrN2Y0?=
 =?utf-8?B?aHArZWc0OVloZjV3VFFkMnFwREVqd0hIVzJCdWpMYkZ1YkM5cUpnMzYwZ1dN?=
 =?utf-8?B?ZjY5R2NmTWV5RVdQNkR1QWx2NzBtRCtQQ0Q3SDc3UE1ZTHRlcWYzdnZsSGxv?=
 =?utf-8?B?WlNlRnhBcFBBTndlbFNOdWxCQ0xUM2F6UFYyQ0RCblRiT2hYQnlERHIwK2I5?=
 =?utf-8?B?aTYyem51UEVwRlN0clQ5OGh2bHByQUpvbklkSXNPSTFVYVIwcXN4SUFVU0J2?=
 =?utf-8?B?bmFkcUU1OXY1V21BbmQyRmFUUVdsYm9kVTIra3ZiVlpVNGxSZ0dvMDlsWEFa?=
 =?utf-8?B?R2xLWlpyV012bHRUQjVxWFdBVzJwQ2krOEZvRWlaSWVKTjVDb1JBV053Q2ds?=
 =?utf-8?B?ckh3L3YxTVpoR090cDRHaEY2Qk5OYlFob0FCZ01SR2Q0S3JiQ1RPUlFZdllj?=
 =?utf-8?B?aFNDM2tYekxyc3c2WXcvRDlPTnlIZzBZVlUxaVUzMUIvbUpSWThuRlA0amxr?=
 =?utf-8?B?djdpZE1BYzArem1ubmU5M3ZzU1lxcXRxRmlrSjM0ZGpQbVRVdGpKQkxaQU16?=
 =?utf-8?B?MGEwMjNUcmZtaVJqM2tvQW95ZmE0VU9EcmZ5cUF1NC9abDk4N1pkM0dOUmI3?=
 =?utf-8?B?T3AyOGpjWXBqL1R6aWNnd2JJTzNtekhwUVRDNTV2ZE43dkRoZElJdUdpMTRu?=
 =?utf-8?B?cHUzR2lNa2dhV25rQ1c0bEcraTIraUlUVXVWZ2FlYVV3dkZaN2dqVWpqWXZL?=
 =?utf-8?B?b1o0NE5qYVBOUHFVWEhienIvV0VDYUFJYzBBdmp1THNMUEs0TTM4aFZTeVY2?=
 =?utf-8?B?RmRURGIzd3hQamVMS2ZySVY4ck9EZkZKYjhld1RxU3F0T0lPdTVDR1dIVksx?=
 =?utf-8?B?dndGamZJR0lCenZPY28rQ3N2aTh0TTRNMXBLZjhaTldRekRqeWkrZ1VlM1pW?=
 =?utf-8?B?QllOMGpEckltMkFOdS9oZzRBWkpiTy90YXZzN3pRT2QyOTNlOXhJczl5ZXNJ?=
 =?utf-8?B?VkdCeU51Yy9xUmVLOFp5MUxNN0dib1hTbmxxT3IrVnAwd1ZwZlROSncrUXo2?=
 =?utf-8?B?U2x2QWtiY1BrMnMyK29oTjdUNFg5R092Ly9jSWNtalMrcjYzQXBVeTBwcGZP?=
 =?utf-8?B?eVBqZWQ2eFZ5UWJNMWhXdElRZmdnajIxK0lBQ1dTZVdQUzhiQSs1OFdydVZj?=
 =?utf-8?B?VDlTbCtsdnlUVmt4TjdCTUkySUdGcjh5bENSbVlsdW5GL1IrZGtwdUkwZHFm?=
 =?utf-8?Q?3vRSYGvTWKCkp99E1ndFfkIik4pPO04Z/Hs9FqV?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <A024AD7529A25A47A6DAF3EF06C1EFF1@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7711
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A66.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	93d41fa7-9baa-4136-1204-08dcf27da48f
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|35042699022|82310400026|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?dE5pN0VqclV4NzUzR3ZxTDFxTWFPNGh3U3Q3SERiNnp3Zjc0bHRIVmVBcEF4?=
 =?utf-8?B?MDZUSmtUcTRBSVpyRFZiM2xmTHpJNUszOS9pSUNYNnJBWjBjMmVhcEllZFFp?=
 =?utf-8?B?TS9YelRyQTh2Vk1FTDBzYkZZKzYyc3A0ak1mREZWbEdyVDJKd3dNS2hwendQ?=
 =?utf-8?B?eWxkNkJYZHA2bmNzSSt2VU9ZeDdVK2NrRFlCbVpadFoya3ZsWE0vVDc5N1Vl?=
 =?utf-8?B?LzVkTTJUVlhWZG8rL0FmME8wNlkrbFNIbC81Tit5WXVSekdna2diVW5vZXdR?=
 =?utf-8?B?TS82Um5iZVNWeUdMRm8yNzVMYXRhc1NzVmdBUUhBUnZkSmdTbkVhRCtnQmow?=
 =?utf-8?B?bzR4OWRvbTFyT2M4aG50L1l5UzZ5MmJXandITHFiK1ZDaTNUT2d2ODd2QzNL?=
 =?utf-8?B?RXlZQXYwSmVlRUxRTXF1SkNRZ0lhMUJHZjBseXl5elVUaUJtbWo3VjRJcDF6?=
 =?utf-8?B?eHRVNjdkSjlqOGJwTnNYeUdmYjh6RHpiUHFvclBQVkRjZmZZWE5reUtKNjZq?=
 =?utf-8?B?WGtZdm5BNkYvYUpBcldraEljK0t6eDQrbFNzOFRvUDQ2dWJ4Z2xZUUNvdlV1?=
 =?utf-8?B?dENxdnp1ZXdIVmhsRFhBTUVNL0I3Zm94ZFhMVStLVDVZT25hdWNaTmozZ2wy?=
 =?utf-8?B?czVZSnVsODJLMjNpcmZNNlpjQ2NDQ2lvaEIwbG80dkEzRFQ3cGpHRXhYaWha?=
 =?utf-8?B?eEdpcEc3dXprdURzQWovVWtmbUlUbXBDWFg4dDhpQktITzlmaEpSQ3VIamxO?=
 =?utf-8?B?NnVSYnBOMjF3Q3owNjhYd2xPa0RqUENENnE4bnBtdzZaSUNJYU1tSy9YRzc1?=
 =?utf-8?B?S0hwRTVoalY3cXZYVXE0MDZBWS9tVk9pVnlORERaM1A0WTU5eHYrZGtNVm1U?=
 =?utf-8?B?NzRoYmEzMGdFU2ppcUZFbk1mdlh1QjJCRUNLQlI4d3VpOFBOYkk4OWlkT0d3?=
 =?utf-8?B?NEJZcUZvTERFU1Z0L2huZFhSK0diMkhxN1lCcFMyM0tZZmhZWEpTaXlmM3U1?=
 =?utf-8?B?U1VJYWtYcXhqVlVUUnU4RTQrQ2Z5cWxCcm9jZGlJcDZWd3hmei9ZSzFzWXJh?=
 =?utf-8?B?eUFoc09odURhRkpzWUkrUDZIOUV4WVRjYXNMZkRRcUx5bkk1NUpMUWRCMTNJ?=
 =?utf-8?B?Zjk1dG90SXlMT0ZPTDJBc2dTdDZlTVQrYkpUdzZiNEdNN1ZuQ1pBOTY0VHhk?=
 =?utf-8?B?WTFxbzJhWFZOQWJLVjk1MEZqWlUrRVFuRlhhZVdkUWU2TUx3dkg0blhvaVNk?=
 =?utf-8?B?UVAwemhqMUttam0vVHBvWmtBQnZuUTd5clVXSjhRVVJLa2l5Ky9MTitoY2hD?=
 =?utf-8?B?RXgwNkhybzJnc3J0VHB2WHRGS0ExaFdrdWlwRTN3L213bko4Y1YzSnVXV0tQ?=
 =?utf-8?B?QlRWeElmV2NXa0FIVUU4akNUbGl6SWhvM2JnUHFrVVFQd3F6MjJBTGplbGwr?=
 =?utf-8?B?QjROUVVSL2RTUnBVbWJCbit0a1NsblpuSGgyT0dPK0lHSnV2RnphcjVremUv?=
 =?utf-8?B?b2gxU0ZzaVdWbFAvenVTdk9IeFgwajl0aHJnekdqZkFnUzBzaTVjOFRCb0tC?=
 =?utf-8?B?dGJRRUl1SXhBN0RwSlNXQzN6RFBFRlI3a2s0MXJScWxZZTVHVkRFU2tqWWtI?=
 =?utf-8?B?cVhrMUtJYXdkZ0JZVVhGcDdweVZ5QlhTNG8wSThSbU9Ob3NhakRPTmNtY0Vr?=
 =?utf-8?B?RkVKd0JzRlBiYUFsTml2bkVNRVBRRWFIZVFvajV5K3NJSkc1RHdKT2tIQ29m?=
 =?utf-8?B?QlRjdDRJV2s0NzZJSkFrVHVPVFVhTlBDNkRVR2VSekh3M1hwS0R1Y2dBNGlz?=
 =?utf-8?Q?Al1VaVPSHzwORBW0zRVW5iuB+UgVwpdWumnww=3D?=
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:(13230040)(1800799024)(35042699022)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2024 09:41:16.3057
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 95c79676-1a07-4a35-72d8-08dcf27daccc
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:
	AM4PEPF00027A66.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB10244

SGkgSnVsaWVuLA0KDQo+IE9uIDIxIE9jdCAyMDI0LCBhdCAxNzoyNywgSnVsaWVuIEdyYWxsIDxq
dWxpZW5AeGVuLm9yZz4gd3JvdGU6DQo+IA0KPiANCj4gDQo+IE9uIDIxLzEwLzIwMjQgMTc6MjQs
IEx1Y2EgRmFuY2VsbHUgd3JvdGU6DQo+PiBIaSBBeWFuLA0KPj4+Pj4gKyAqLw0KPj4+Pj4gK0ZV
TkNfTE9DQUwoZW5hYmxlX21wdSkNCj4+Pj4+ICsgICAgbXJzICAgeDAsIFNDVExSX0VMMg0KPj4+
Pj4gKyAgICBiaWMgICB4MCwgeDAsICNTQ1RMUl9FTHhfQlIgICAgICAgLyogRGlzYWJsZSBCYWNr
Z3JvdW5kIHJlZ2lvbiAqLw0KPj4+Pj4gKyAgICBvcnIgICB4MCwgeDAsICNTQ1RMUl9BeHhfRUx4
X00gICAgLyogRW5hYmxlIE1QVSAqLw0KPj4+Pj4gKyAgICBvcnIgICB4MCwgeDAsICNTQ1RMUl9B
eHhfRUx4X0MgICAgLyogRW5hYmxlIEQtY2FjaGUgKi8NCj4+Pj4+ICsgICAgb3JyICAgeDAsIHgw
LCAjU0NUTFJfQXh4X0VMeF9XWE4gIC8qIEVuYWJsZSBXWE4gKi8NCj4+Pj4gDQo+Pj4+IE5JVDog
Q2FuJ3Qgd2UgaGF2ZSBhIHNpbmdsZSAib3JyIiBpbnN0cnVjdGlvbiB0byBzZXQgYWxsIHRoZSBm
bGFncz8NCj4+PiBZZXMsIEkgd2lsbCBjaGFuZ2UgdGhpcy4NCj4+Pj4gDQo+Pj4+PiArICAgIGRz
YiAgIHN5DQo+Pj4+IA0KPj4+PiBJIHN0aWxsIHF1ZXN0aW9uIHRoaXMgdXNlIG9mICJkc2Igc3ki
Li4uDQo+Pj4gDQo+Pj4gQWN0dWFsbHkgSSBrZXB0IHRoaXMgdG8gZW5zdXJlIHRoYXQgYWxsIG91
dHN0YW5kaW5nIG1lbW9yeSBhY2Nlc3MgYXJlIGNvbXBsZXRlZCBiZWZvcmUgTVBVIGlzIGVuYWJs
ZWQuDQo+Pj4gDQo+Pj4gSG93ZXZlciwgcHJlcGFyZV94ZW5fcmVnaW9uKCkgaXMgaW52b2tlZCBi
ZWZvcmUgdGhpcyBhbmQgaXQgaGFzIGEgJ2RzYiBzeScgYXQgdGhlIGVuZC4NCj4+PiANCj4+PiBT
byB3ZSBjYW4gZHJvcCB0aGlzIGJhcnJpZXIuDQo+PiBJIHN1Z2dlc3QgdG8ga2VlcCB0aGUgYmFy
cmllciBoZXJlIGFuZCBkcm9wIHRoZSBvbmUgaW4gcHJlcGFyZV94ZW5fcmVnaW9uIGluc3RlYWQs
DQo+IA0KPiBJIHRoaW5rIHRoZSBiYXJyaWVycyBpbiBwcmVwYXJlX3hlbl9yZWdpb24oKSBzaG91
bGQgYmUga2VwdCBiZWNhdXNlIHdlIG1heSB3YW50IHRvIHVzZSB0aGUgaGVscGVyICphZnRlciog
dGhlIE1QVSBpcyB0dXJuZWQgb24uDQoNClN1cmUgSSBhZ3JlZSwgZ2l2ZW4gdGhhdCB0aGUgY3Vy
cmVudCBjb2RlIHdhcyBvbmx5IGNhbGxlZCBiZWZvcmUgZW5hYmxpbmcgdGhlIE1QVSBJIHdhcyBv
ayB0byBkcm9wIHRoZSBiYXJyaWVyIGluIHByZXBhcmVfeGVuX3JlZ2lvbiwNCmJ1dCBnaXZlbiB0
aGF0IHRoZSBtYWNybyBjb3VsZCBiZSByZXVzZWQsIGl04oCZcyBzYWZlciB0byBrZWVwIHRoZW0g
Ym90aC4NCg0KPiANCj4+IGhhdmUgYSBsb29rIGluIG15IGJyYW5jaDogaHR0cHM6Ly9naXRsYWIu
Y29tL3hlbi1wcm9qZWN0L3hlbi8tL21lcmdlX3JlcXVlc3RzLzcvZGlmZnM/Y29tbWl0X2lkPWY0
MmEyODE2ZjliZDk1ZjJmNjk1Nzg4N2JlOTEwY2I5YWNkMTQwYjUNCj4+IER1cmluZyBteSB0ZXN0
aW5nIEkgd2FzIGhhdmluZyB0cm91YmxlIHdpdGhvdXQgdGhpcyBiYXJyaWVyLg0KPiANCj4gV2Fz
IGl0IGJlZm9yZSBvciBhZnRlciByZW1vdmluZyB0aGUgYmFycmllcnMgaW4gcHJlcGFyZV94ZW5f
cmVnaW9uKCk/IElmIHRoZSBsYXR0ZXIsIHRoZW4gSSBhbSBhIGJpdCBwdXp6bGVkIHdoeSB5b3Ug
bmVlZCBpdC4gRGlkIHlvdSBpbnZlc3RpZ2F0ZSBhIGJpdCBtb3JlPw0KDQpJIGRvbuKAmXQgcmVj
YWxsIHVuZm9ydHVuYXRlbHksIEkgdHJpZWQgdG8gcmVwcm9kdWNlIHRoZSBpc3N1ZSByZW1vdmlu
ZyB0aGUgYmFycmllciBmcm9tIGVuYWJsZV9tcHUgYW5kIGFkZGluZyBpdCBpbnRvIHByZXBhcmVf
eGVuX3JlZ2lvbiBvbmx5IGJ1dCBpdOKAmXMgd29ya2luZyBmaW5lDQpvciBhdCBsZWFzdCBJ4oCZ
bSBub3QgYWJsZSB0byByZXByb2R1Y2UgdGhlIGlzc3VlIEkgd2FzIGhhdmluZywgb2YgY291cnNl
IEkgd291bGRu4oCZdCByZW1vdmUgaXQgZnJvbSBib3RoIHNpbmNlIGl0IGdvZXMgYWdhaW5zdCB0
aGUgYXJtIGFybSwgc28gSSB0aGluayB0aGUgbG9naWMNCmhlcmUgc2hvdWxkIGJlIGtlZXBpbmcg
Ym90aCB0aGUgYmFycmllcnM6DQoNCjEpIGRzYitpc2IgYmFycmllciBhZnRlciB3cml0aW5nIHBy
YmFyL3BybGFyIGFzIHRoZSBhcm0gYXJtIHJlY29tbWVuZHMgKGluIGNhc2UgdGhlIG1hY3JvIGlz
IHVzZWQgd2l0aCBNUFUgZW5hYmxlZCBpbiB0aGUgZnV0dXJlKQ0KMikgZHNiK2lzYiBiYXJyaWVy
IGFmdGVyIGVuYWJsaW5nIHRoZSBNUFUsIHNpbmNlIHdlIGFyZSBlbmFibGluZyB0aGUgTVBVIGJ1
dCBhbHNvIGJlY2F1c2Ugd2UgYXJlIGRpc2FibGluZyB0aGUgYmFja2dyb3VuZCByZWdpb24NCg0K
Q2hlZXJzLA0KTHVjYQ0KDQo=


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 09:47:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 09:47:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824071.1238154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3BU3-0000NO-DZ; Tue, 22 Oct 2024 09:47:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824071.1238154; Tue, 22 Oct 2024 09: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 1t3BU3-0000NH-As; Tue, 22 Oct 2024 09:47:23 +0000
Received: by outflank-mailman (input) for mailman id 824071;
 Tue, 22 Oct 2024 09:47:22 +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 1t3BU2-0000NB-4L
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 09:47:22 +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 1t3BU1-0008BK-S0; Tue, 22 Oct 2024 09:47:21 +0000
Received: from [15.248.2.30] (helo=[10.24.67.22])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t3BU1-0004Sc-Hx; Tue, 22 Oct 2024 09:47: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=qWFuTsn7LHlq5w8F24MSRtz0zFjfVk2OZRhjvmAVIgY=; b=vdN+cT9qkO8q4fVWDyy98X7yu6
	guQSq1ib2F/XJz9aY412o++t1VaPPAgCuSCNHmeYkbSXQ897sBl9gRUNT4XmJrLJK57/xyKM4wU5U
	jluu42bxBWKYvTcjacMX6IKVa+j+hYt5KiqJFFQLKuEZZQjSS4cDl8OM3praFa3btYtk=;
Message-ID: <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
Date: Tue, 22 Oct 2024 10:47:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Luca,

On 22/10/2024 10:41, Luca Fancellu wrote:
>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
> 2) dsb+isb barrier after enabling the MPU, since we are enabling the MPU but also because we are disabling the background region

TBH, I don't understand this one. Why would disabling the background 
region requires a dsb + isb? Do you have any pointer in the Armv8-R 
specification?

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 09:56:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 09:56:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824076.1238163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Bcq-0001x7-6f; Tue, 22 Oct 2024 09:56:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824076.1238163; Tue, 22 Oct 2024 09:56: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 1t3Bcq-0001x0-3j; Tue, 22 Oct 2024 09:56:28 +0000
Received: by outflank-mailman (input) for mailman id 824076;
 Tue, 22 Oct 2024 09:56: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=tTvi=RS=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t3Bco-0001vb-UM
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 09:56:27 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on2062b.outbound.protection.outlook.com
 [2a01:111:f403:2614::62b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e63dc665-905b-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 11:56:25 +0200 (CEST)
Received: from AS4P192CA0038.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:658::7)
 by VI1PR08MB9960.eurprd08.prod.outlook.com (2603:10a6:800:1c3::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.27; Tue, 22 Oct
 2024 09:56:20 +0000
Received: from AM3PEPF00009B9C.eurprd04.prod.outlook.com
 (2603:10a6:20b:658:cafe::34) by AS4P192CA0038.outlook.office365.com
 (2603:10a6:20b:658::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29 via Frontend
 Transport; Tue, 22 Oct 2024 09:56:20 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM3PEPF00009B9C.mail.protection.outlook.com (10.167.16.21) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Tue, 22 Oct 2024 09:56:19 +0000
Received: ("Tessian outbound de6fe3af73ff:v473");
 Tue, 22 Oct 2024 09:56:19 +0000
Received: from L152ac9f6f7fb.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 2CFDF8F6-AA1E-4DE8-8CC5-082D9ACD2265.1; 
 Tue, 22 Oct 2024 09:56:08 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L152ac9f6f7fb.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 22 Oct 2024 09:56:08 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB8PR08MB5356.eurprd08.prod.outlook.com (2603:10a6:10:f9::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.20; Tue, 22 Oct
 2024 09:56:06 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8069.027; Tue, 22 Oct 2024
 09:56: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: e63dc665-905b-11ef-a0be-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=Jv8SlrmUKHtaHUxe0C5oeJ2EwcP6N35MqeLddeicsKVzg+9eicIsDyqg/1lKWNAEY/mEPwo0kEMPyXp2Ppe8D6mAZy9bmGCrwlMKXSgeYVP433eZPYUxwY5IY9cUYaHBhd8HHCQOiwa6T416LI5bH3StCtR2e/YxvZgQY4TMLNIjmRBP4uBOeOrcuVt6UUwO+3FJZQW5vwgaMHt5CaKdOeHXq1e0EU/6tYdHq3QY3EJ26KGZVfUSRCLIgFlp6Jc1zfmoeDMuXfoqSh9/X2sdLfwRmGQuIWMn94LD9lU42xPfnpRz0+ODyOqyIehzoz5Ib2xeD/9p2Yb0zASde1iILg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=4/jkBc+Jo2chXmFr1nPWkw0pkZ25zz2KFn/IsMUEgcU=;
 b=RkVxq2s0zHRRBraQtklYmBBh/8smoUEbyj2dSKN2GdCQKxUJJIih+BdrIPnbGob0MG2txxH5O6p7Dv1bAUh1QPYKwUe/ID/thZP+TuGbEOgYWpaxr42KHkQcUhx1LJFdh3n7bUJZocFjfNGgo5Wm3DU3Q9GwL31lHhzIP1G65x4Fs/nr2XqlLnyG45T4UzOC3jLSruVLbVlg280RPgpPT9JVJ9/5AOxAJVIbLqj/AX+bMp8NoiGszZGZLVaMmFNZVYR0w5Cy0fPnnXM/6+h8S80Zy9d0fQ1iLl+pVGdzZoIV7aunPgFCOfqSmCWGhfaEuVeAZXcyW3A9tNS8FMar6Q==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4/jkBc+Jo2chXmFr1nPWkw0pkZ25zz2KFn/IsMUEgcU=;
 b=STOjpeE3yY3pOs5dBY7Q9Doc0CQpPOV4PuAXmAjIA+4JuPra5hu2Gvj1fWfU2okC9IElPQq7TCtnpLgSi9upULqcMD8OkqZFCIhh9/ONc9iOcJsuXGnxjI0QZCWjDsz3RtAq4FSnJfeGxUzqMqVEvANSxiAmFaDNhBM0Q+fN/P4=
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=arm.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: d3841bc22a130d2f
X-TessianGatewayMetadata: OHlhpz3N40fHIfZxRGbh4xQ0cWu7owc1xCn9ukgSYZFb8/MZeD/05l280qQAZNQHIZLZrO3BjF0JhS7JUoqXZ9m00mdcROaIn1ribNsPNIvDEOS1YbO2YXGqvxCWn3g2RLsZ1SpM9KZFXCLAQWCpBIQiJ4rcucOTVap1lbXfIAc=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bYLWpNZSo9jBXNWlGrwtmB4r55sERdSzdZwluTRMuqiOTei7s0lhd+UcIjgVQQd5kzgoZiFB6OVAj/jCtPN7Mao0u0ULcpvvo1DlzrLuWJh28OpdSiQidGb0bzJ+ibV/+OdCB26X2hCSbxheSSaD/LekP/an9Xgye0wJDZu1QVPFYXYuLewNJ7P8G5RNKSwuQXuBh8mguveXc9pzI8WKXMBKg/iNz+7pNKGSoojTNQ4n7l8WonZcFGuih+XPzNS8uMsP9j+cwGcJUV4cnmvS6Zqad1z/6PjQ2vCBy5q3FmbmijKmgt2QI229V7Iubm+LyIHUaShdO35YOHzO/RNG2w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=4/jkBc+Jo2chXmFr1nPWkw0pkZ25zz2KFn/IsMUEgcU=;
 b=tAXc7WPbEIqBnMi/9/yObplAGwrqiPgXQZ6wvTw+QRHoY4emqgXkhOFTkciEPnZyQMHCxu+q2OHP0G+oNTCMPxUXQPMG+crdbVBadqh8aH986aXZy27GthORPzKztwVaW4jdHieo73cnCkTEhfaqVoFV5eaSx3vcWjhQZhw+oLSNMivUFVGJQPpS8AYsZavh0M6HLSnTQxRIJm9gFuqekzSxiZKUHPakUKZgPH9J1EmwUAlPdO9TKRBZ50DpXTEKW48VgqmocVKESbaDcn1CxwKqMblE8Tnt6vU1FM1GE/JJZtQ2lcKanHLR35fY4V90LK1pGJH1Deupa8bUxd1ZCA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4/jkBc+Jo2chXmFr1nPWkw0pkZ25zz2KFn/IsMUEgcU=;
 b=STOjpeE3yY3pOs5dBY7Q9Doc0CQpPOV4PuAXmAjIA+4JuPra5hu2Gvj1fWfU2okC9IElPQq7TCtnpLgSi9upULqcMD8OkqZFCIhh9/ONc9iOcJsuXGnxjI0QZCWjDsz3RtAq4FSnJfeGxUzqMqVEvANSxiAmFaDNhBM0Q+fN/P4=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Julien Grall <julien@xen.org>
CC: Ayan Kumar Halder <ayankuma@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, "xen-devel@lists.xenproject.org"
	<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>
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Topic: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Index:
 AQHbGx2Ge9N55hTx/U2iD9lYiTVQprKNIysAgARC6gCAAA8agIAAAOKAgAEgqoCAAAHOgIAAAmiA
Date: Tue, 22 Oct 2024 09:56:06 +0000
Message-ID: <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
In-Reply-To: <d1e8decf-3c63-41fe-a6e3-f880b984dda4@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.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB8PR08MB5356:EE_|AM3PEPF00009B9C:EE_|VI1PR08MB9960:EE_
X-MS-Office365-Filtering-Correlation-Id: 1b8c2873-9149-4a97-ebdd-08dcf27fc754
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?d1RtOFBVSzFpbkxoS3MweFQvTDNwdHNLWmNwS21WcCt1RzBjbmlldDV4NlQv?=
 =?utf-8?B?elRHL3NQL29OVStSWHdPeU5Td3FoRDVkVG5kVjRlbVg1QVFOK0dodklIWjVn?=
 =?utf-8?B?Vk1qVndic1U5d3J2RUtTckdhSmdXZStTbHk5MzRZMVU3MWp1eVpldlJ6Z1hU?=
 =?utf-8?B?NFNMWlZTL3hpSUpuSG9ZU2dmUEFVcXZrNXE0NU5SaWgzN1dGcEQyZm4rRExX?=
 =?utf-8?B?bEJaRzVLV2ZaQ2tpL0Z1bUw2RWgxVUV5ZTZRM2FaNHlsRUlOdHNBVlpRQUZW?=
 =?utf-8?B?RHNuNU5CY1pTc0F1MEgvYXR3L01CWmtKc3czNnpGYVVZOFVUbXkxOFNkNzhq?=
 =?utf-8?B?RytRdnIzR2VnNmV2MmxOSy93cGJhbndWOER3QW94VGhVa1lybThKY1d3RXVh?=
 =?utf-8?B?bHpyZHNLQUt4eXhSdEk4THNZL05wWUJpZUFMTnl2TWU1TGRWcmt2eGFwQ0Yx?=
 =?utf-8?B?S0ZKaE5GRkxQdzF5TU1MbnA0TVhXZFg5dVJKSnladjhJRjZDTUJKNk11SEtk?=
 =?utf-8?B?WXlKNm1rdDJrWUVRanZFdVM2aVJUV0J4cHNIQ0FSdHB1MFQrS1UzNktVS0FF?=
 =?utf-8?B?Y0FyNlJqVnltT3gvUEwydW9RWk0yMDVuNEl0bnFLQlVwUDhEZWpTVk1UclNR?=
 =?utf-8?B?a3FpUnZmZDkyWUNnVUhDbHgwUjNGSUlPdE5Mc3VCYkp1aGpXNVdUTVduZ0RL?=
 =?utf-8?B?c2taK3lwM1U0bXk3aXMyTjkyek9jS2NvU0h0cFJiUkxkSVdQVEFwenhRZmpT?=
 =?utf-8?B?SmZlaDlDNW9vQ2h6L0g1dmxpaU5iaVlYaWJtaSt1L1FtRTlqYkkyaGxmdlFT?=
 =?utf-8?B?alhXTkNsWTh6Q0FYR3h1VURkczM5RHpUYWtQeVpkZHhpQVJIeEFrdU5pUnR4?=
 =?utf-8?B?RXpTcTM1c3JPK2k5K3RqK01ZTzl4NUNaT2ZkSGlTS0pqbUdYb1paMnF4Q1Zx?=
 =?utf-8?B?Wk1UQVc5cFV4aU5UY3BWL2E4QjZTVXM5TXRyV2kxNXRHUWw0emdkdFR0WTBm?=
 =?utf-8?B?d0d3YUt2NkVNbllYclhDN2RYVnFRTVcwZlFleXg1elRySVppeXJ3YkczOTY0?=
 =?utf-8?B?TU1KTHZyWG53SVU3K0tqNDlSV21nanZCdWN4RGdBN00xc3RvMC94OTZBSDIr?=
 =?utf-8?B?SGgxbmp3UkdzWUp6TitxZjNNTFBiV1pJTWpVQnRRKzdaNWp2N2I3SGRmRUNa?=
 =?utf-8?B?TnhOVTc0aHFBRTVHeUkvcnFucHpFMmd3L1J1NkV2UDFCK25DalJTVjA4amtr?=
 =?utf-8?B?VVNSRE1BN25XZzM3THNkVTgrU0wveGtDa3cwNG0vQ2trbk9BY0Q3eUlEc3JU?=
 =?utf-8?B?OWVuTTJMUkwwZk1HTGd4RzVMTU9oVklaR2FXVVRvOGkwZ2RYaU9SMXhsWlY5?=
 =?utf-8?B?aUc2clJDMTlGYVlxOVBGdlJSYVdkbUZvcUhZaFVIUHY2K2toU2M2anZ5QWNP?=
 =?utf-8?B?MVJ1a1JvVnVTVEJsay8rZ245TksyZHB5UVZUNGZWQm1hemlLZitUV1NIalhU?=
 =?utf-8?B?N2toWVAzTzVHSmFBcDc1Y2x6ejBFMjBDTGZYa3JNY2Y3bnBiNGM4RzFFakJo?=
 =?utf-8?B?b01HZ1JKMXowdDNKdVVVTUkxWUxZemZ0L1poVnp1U0k0cUkvMkpWY05TYjE0?=
 =?utf-8?B?eVFrYWU1NU1Ob21LdFcxc0VNOWJQUitBT3hjMUIvb2VSYk9CVWs1Tldjd1RX?=
 =?utf-8?B?bmxGSGlpb0FpcS9Td3dSQWNBVVFEWFhVd0lpbHovNko3TTR0QWtPbzZ3SVFV?=
 =?utf-8?B?YW9Yd0Exa3Y3NUZOODZUUTc3MS9tZFpyY0V3SWtVaU9iR2tEWjlhVUQwZ2cz?=
 =?utf-8?Q?1chbk/GdU4RuQMPmOOyNrBEhOQ3+YWjXhAO4k=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <8EF7253A325F8E459ECE333F19DE48DA@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5356
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM3PEPF00009B9C.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	ed4f7fc2-d54e-488d-fbc3-08dcf27fbf2e
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?REg0NTJ3VFQ1QW5TK2k3N1ByYmd5TFg1S1B1MUNCVnFPYzJINHdqZmpNRVJo?=
 =?utf-8?B?SzFrV0lIdkF5WS9hUjFRVDVXMDFwaGM2ZE4yZHNFd0VlY2RwMjUrZkpWdGhO?=
 =?utf-8?B?TmFob3lEcVNtcEt2c1NJa0pBZ1YyWnBGNHJsVzFTQllmSHBmbFNpRWVYOTBz?=
 =?utf-8?B?NHZiOW9BcFBYWk5ydmJaNG80akNTenBsQzUrTmNSMWUzRlpXeDg4V0dONndl?=
 =?utf-8?B?NkplUUxUWVRhWlBqL1NmMWVUTU1nNXZ3bTJlNDY4ZXo4ZkdQUURvbzd0cFhN?=
 =?utf-8?B?SGdXYWloSzJEdVRXVG5XRW5OemJ5TFd5YWxWdFo1SGt6YlVpNEoyY1Y0QVZJ?=
 =?utf-8?B?RFlzTnQ2WUMzcGtjYXJ1R3hibTNSSytFd2QxNVFVcGQ3YU1FbDJVMmJhRW9O?=
 =?utf-8?B?TE9STHZ5MVA3eGpBMXovV0RKd2NyMDM3RlVmNEIvaDhqTklxUzgwc3NpUXd5?=
 =?utf-8?B?RmpHeEw4alc4TnNCOGppMnpSZitVaGFWeENUM1E1N0pOVnFoZEk2bmlsQVYr?=
 =?utf-8?B?U3B5UXU2SW45QTJvaXo4NTFNRnc5SlFZR25XUm1TZTl1a1R2RWJFQWFDNCtF?=
 =?utf-8?B?b2xmbG9NMi8xcWNLdFV0YmZpNSsvLzBuaVJSZ0VLVHkyN3ZCZHhCQ0tlYWd2?=
 =?utf-8?B?WEQ4Mkh2cFVtSFo0NXE3Nm9Pdk1iMDE3RHZWbFpQcHBQeDBYRlFYQjdJQXA1?=
 =?utf-8?B?OU5GSmxuU3E3b2RpakpQUjFSbG5WTFNIN0VqdHdiMEtoZGNpeVlJWWtGTXpp?=
 =?utf-8?B?ZHJKOHBtcUVGU0JUdENjVnFCVExScWFvUlM2eE8xU1kxK285bnZkUmQxaWs1?=
 =?utf-8?B?Z1J2ekJhNEZLcU0ySG9admwxQUlmTlpBNVVVOW1ZdDNNek4rdlRaNXZNY1BM?=
 =?utf-8?B?TCtiOFFKWExjdDJxY0xoeUpuelVIaHp5OFFzbXIxNmEvZk43WHVhQ29jNlNz?=
 =?utf-8?B?dTdjVDdBN2pucmpOTlpxNnNDUlMxcjU5cHJuR1cwcDVqUk5NejFrY3lBcUxI?=
 =?utf-8?B?UVZIc01PR3FyUkJVbGoxQUF2UDI4TERyWXMrd2pSRTBJRis5N0VjaGNlSWh2?=
 =?utf-8?B?anZMMnE4QzQ0NTlWRUt2NWVLZ24yOXEvL0p2Y0lhVEpZS0lqUUJpK0xEMlpQ?=
 =?utf-8?B?N3FFVHhCcDdoTEwrb3hLL3RSN2xJWnc4dXNpbElod1hJbm5kZVdMNDZtQWZH?=
 =?utf-8?B?WnJXRDNSZXVQK3QvYTRvcExNd1BmK2tTTGgwV3A1K0NVZ01CN1pzcDNqUnFO?=
 =?utf-8?B?a21FYjJYb3RrdG9sRkRkb3VwYkZHU0RuNWIwMEJ0STZLb210bWVpMlcvSHpo?=
 =?utf-8?B?UjBNNUxRSFJYR2haR2ZJT3I5NmF2MUdIZW44T0thZ3VJbHgzT1I0blkyMjdB?=
 =?utf-8?B?TWRDODZMdlpiSTdoV015RFZOV2NPOVJBTVh3c3owTUN3RjVnd3R1bUJXeHN4?=
 =?utf-8?B?S0o5dFNVNE5hMERZTjlHSWtYWmt4WStOb1VYaGhGSmRjRGpiUzkvallyVUZN?=
 =?utf-8?B?SDRKaEpPUHhmdzFmOW1wdWhXVVc2K0ZOTUZST1hVeXJsT2xYZlhNNFR5Vzcx?=
 =?utf-8?B?ang2UXJtK0tiUEFtUlBUc0wzdkszckxsZVd6dHFINEFKTzhlVWRYTE9XbTd1?=
 =?utf-8?B?UjVvS3A0WStQSkM2MXpaMjRFbVFPUkRCRUZURTAvcVFqS3g3MmxIYUdrMlcz?=
 =?utf-8?B?NytISmk3a202dDBxRDRWdm9VTTNpZkd6ODI1czZVL2t0bGI0bDNuYmphQ01P?=
 =?utf-8?B?VEZkamk4N3lUSWR2QnFhS2xUK1ZwN2p4ZVpuMWxaUnJ4Nzg1ODBNUS94U2dq?=
 =?utf-8?B?ZzZDbktPamRiL25yQk14VG5xakk5SGV3bERGVit5QndHeDNRVFlMcjVSdUJj?=
 =?utf-8?B?amtaYnZEc1RMRGV0V1Nna1lTRkpEcDVBZi96bXAwV0lLMXc9PQ==?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2024 09:56:19.8298
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1b8c2873-9149-4a97-ebdd-08dcf27fc754
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:
	AM3PEPF00009B9C.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB9960

DQoNCj4gT24gMjIgT2N0IDIwMjQsIGF0IDEwOjQ3LCBKdWxpZW4gR3JhbGwgPGp1bGllbkB4ZW4u
b3JnPiB3cm90ZToNCj4gDQo+IEhpIEx1Y2EsDQo+IA0KPiBPbiAyMi8xMC8yMDI0IDEwOjQxLCBM
dWNhIEZhbmNlbGx1IHdyb3RlOg0KPj4+IE9uIDIxIE9jdCAyMDI0LCBhdCAxNzoyNywgSnVsaWVu
IEdyYWxsIDxqdWxpZW5AeGVuLm9yZz4gd3JvdGU6DQo+PiAyKSBkc2IraXNiIGJhcnJpZXIgYWZ0
ZXIgZW5hYmxpbmcgdGhlIE1QVSwgc2luY2Ugd2UgYXJlIGVuYWJsaW5nIHRoZSBNUFUgYnV0IGFs
c28gYmVjYXVzZSB3ZSBhcmUgZGlzYWJsaW5nIHRoZSBiYWNrZ3JvdW5kIHJlZ2lvbg0KPiANCj4g
VEJILCBJIGRvbid0IHVuZGVyc3RhbmQgdGhpcyBvbmUuIFdoeSB3b3VsZCBkaXNhYmxpbmcgdGhl
IGJhY2tncm91bmQgcmVnaW9uIHJlcXVpcmVzIGEgZHNiICsgaXNiPyBEbyB5b3UgaGF2ZSBhbnkg
cG9pbnRlciBpbiB0aGUgQXJtdjgtUiBzcGVjaWZpY2F0aW9uPw0KDQpJ4oCZbSBhZnJhaWQgdGhp
cyBpcyBvbmx5IG15IGRlZHVjdGlvbiwgU2VjdGlvbiBDMS40IG9mIHRoZSBBcm3CriBBcmNoaXRl
Y3R1cmUgUmVmZXJlbmNlIE1hbnVhbCBTdXBwbGVtZW50IEFybXY4LCBmb3IgUi1wcm9maWxlIEFB
cmNoNjQgYXJjaGl0ZWN0dXJlLA0KKERESSAwNjAwQi5hKSBleHBsYWlucyB3aGF0IGlzIHRoZSBi
YWNrZ3JvdW5kIHJlZ2lvbiwgaXQgc2F5cyBpdCBpbXBsZW1lbnRzIHBoeXNpY2FsIGFkZHJlc3Mg
cmFuZ2UocyksIHNvIHdoZW4gd2UgZGlzYWJsZSBpdCwgd2Ugd291bGQgbGlrZSBhbnkgZGF0YQ0K
YWNjZXNzIHRvIGNvbXBsZXRlIGJlZm9yZSBjaGFuZ2luZyB0aGlzIGltcGxlbWVudGF0aW9uIGRl
ZmluZWQgcmFuZ2Ugd2l0aCB0aGUgcmFuZ2VzIGRlZmluZWQgYnkgdXMgdHdlYWtpbmcgUFJCQVIv
UFJMQVIsIGFtIEkgcmlnaHQ/DQoNCg0KPiANCj4gQ2hlZXJzLA0KPiANCj4gLS0gDQo+IEp1bGll
biBHcmFsbA0KPiANCg0K


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 10:10:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 10:10:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824087.1238173 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3BqZ-0005ID-9X; Tue, 22 Oct 2024 10:10:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824087.1238173; Tue, 22 Oct 2024 10:10: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 1t3BqZ-0005I6-71; Tue, 22 Oct 2024 10:10:39 +0000
Received: by outflank-mailman (input) for mailman id 824087;
 Tue, 22 Oct 2024 10:10: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=yutH=RS=cloud.com=bernhard.kaindl@srs-se1.protection.inumbo.net>)
 id 1t3BqY-0005I0-9A
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 10:10:38 +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 e1749ac3-905d-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 12:10:36 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso805633966b.1
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 03:10:36 -0700 (PDT)
Received: from localhost ([185.68.248.203]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571ebdsm322361366b.148.2024.10.22.03.10.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 03:10:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1749ac3-905d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729591835; x=1730196635; 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=LYXPGw1U0OFZ1dEh+x0cloBQ3vRFUK2rGGbM+Gy0GWc=;
        b=l9969PRQmPFAHXLScoMi9Bs22D0tiG8t4p4cAj32mu5zjsBHmUP7eTym87K4JxgRX2
         YxZU/O4Yk0gavtw+Y85/p1Wy9cgY6oJzGNt3tiVuzbBx1FAeOcOaO03OvSY/hYxvDznX
         2BsTOJYTxtmInYlfuGEvM6Rk7nBDI3ByUCZ2I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729591835; x=1730196635;
        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=LYXPGw1U0OFZ1dEh+x0cloBQ3vRFUK2rGGbM+Gy0GWc=;
        b=cQfKk2FVs5vwoklX80ryqWkzf4dqMg+5vaYKzM1SMlWCaRNYi18qdu/oWJ3RuZBymt
         ppAfVa8Na7qFYCMsELBJaOmu+4cnS25XCsD1YLhG9DyvThxDtp9DJ/+J4yWzaBuZENxU
         Fh5ubetI/rZbwIKWjdkhrNNj0vv10Pdf0VWtvjC6of2YnkjonTH12FqFWjICt4WnRGby
         x0jfAuaiqMhUk6NTq2x/lbGUYIzR3+V2piBB/k+kBVP9wIjRnPde6xh/95+HBMbNIwmu
         maXRee6deEwvT3vBWkzIkwRcess99RsogjITYw94rF3f6csl4e/HoGB3gskRjZ1xpjnh
         s6Cg==
X-Gm-Message-State: AOJu0YxB9Q1biwEtkLTxdkQhWbLgd3VVk3h1KsCqH53riHz+EGLq2gRK
	bMLIh6rjvXXzFCapjlfqopTR5puttBKTQ0szovmiWRLZr+4rBfW7ig5w0UxEYRiO6MvkWTXiHEI
	T7a4=
X-Google-Smtp-Source: AGHT+IGdS3ZoHMXbmw0Hhd/MsrbA0KpU/MrljsWGlZcFPFKZscWl27dVOax1RyjvNy7k7Xvb7L5mjQ==
X-Received: by 2002:a17:907:1c2a:b0:a99:4261:e9f7 with SMTP id a640c23a62f3a-a9a69b84f55mr1240379266b.39.1729591835371;
        Tue, 22 Oct 2024 03:10:35 -0700 (PDT)
From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
X-Google-Original-From: Bernhard Kaindl <bernhardkaindl7@gmail.com>
To: xen-devel@lists.xenproject.org,
	Jan Beulich <jbeulich@suse.com>
Cc: Bernhard Kaindl <bernhard.kaindl@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/1] NUMA: Introduce NODE_DATA->node_present_pages(RAM pages)
Date: Tue, 22 Oct 2024 12:10:29 +0200
Message-ID: <20241022101029.967911-1-bernhardkaindl7@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Bernhard Kaindl <bernhard.kaindl@cloud.com>

Some admin tools like 'xl info -n' like to display the total memory
for each NUMA node. The Xen backend[1] of hwloc comes to mind too.

The total amount of RAM on a NUMA node is not needed by Xen internally:
Xen only uses NODE_DATA->node_spanned_pages, but that can be confusing
for users as it includes memory holes (can be as large as 2GB on x86).

Calculate the RAM per NUMA node by iterating over arch_get_ram_range()
which returns the e820 RAM entries on x86 and update it on memory_add().

Use NODE_DATA->node_present_pages (like in the Linux kernel) to hold
this info and in a later commit, find a way for tools to read it.

[1] hwloc with Xen backend: https://github.com/xenserver-next/hwloc/

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
---
Changes in v2:
- Remove update of numainfo call, only calculate RAM for each node.
- Calculate RAM based on page boundaries, coding style fixes
Changes in v3:
- Use PFN_UP/DOWN, refactored further to simplify the code, while leaving
  compiler-level optimisations to the compiler's optimisation passes.
---
 xen/arch/x86/x86_64/mm.c |  3 +++
 xen/common/numa.c        | 31 ++++++++++++++++++++++++++++---
 xen/include/xen/numa.h   |  3 +++
 3 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index b2a280fba3..66b9bed057 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -1334,6 +1334,9 @@ int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm)
     share_hotadd_m2p_table(&info);
     transfer_pages_to_heap(&info);
 
+    /* Update the node's present pages (like the total_pages of the system) */
+    NODE_DATA(node)->node_present_pages += epfn - spfn;
+
     return 0;
 
 destroy_m2p:
diff --git a/xen/common/numa.c b/xen/common/numa.c
index 28a09766fa..374132df08 100644
--- a/xen/common/numa.c
+++ b/xen/common/numa.c
@@ -4,6 +4,7 @@
  * Adapted for Xen: Ryan Harper <ryanh@us.ibm.com>
  */
 
+#include "xen/pfn.h"
 #include <xen/init.h>
 #include <xen/keyhandler.h>
 #include <xen/mm.h>
@@ -499,15 +500,39 @@ int __init compute_hash_shift(const struct node *nodes,
     return shift;
 }
 
-/* Initialize NODE_DATA given nodeid and start/end */
+/**
+ * @brief Initialize a NUMA node's NODE_DATA given nodeid and start/end addrs.
+ *
+ * This function sets up the boot memory for a given NUMA node by calculating
+ * the node's start and end page frame numbers (PFNs) and determining
+ * the number of present RAM pages within the node's memory range.
+ *
+ * @param nodeid The identifier of the node to initialize.
+ * @param start The starting physical address of the node's memory range.
+ * @param end The ending physical address of the node's memory range.
+ */
 void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end)
 {
     unsigned long start_pfn = paddr_to_pfn(start);
     unsigned long end_pfn = paddr_to_pfn(end);
+    struct node_data *numa_node = NODE_DATA(nodeid);
+    paddr_t start_ram, end_ram;
+    unsigned long pages = 0;
+    unsigned int idx = 0;
+    int err;
 
-    NODE_DATA(nodeid)->node_start_pfn = start_pfn;
-    NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
+    numa_node->node_start_pfn = start_pfn;
+    numa_node->node_spanned_pages = end_pfn - start_pfn;
 
+    /* Calculate the number of present RAM pages within the node: */
+    while ( (err = arch_get_ram_range(idx++, &start_ram, &end_ram)) != -ENOENT )
+    {
+        if ( err || start_ram >= end || end_ram <= start )
+            continue;  /* Not RAM (err != 0) or range is outside the node */
+
+        pages += PFN_DOWN(min(end_ram, end)) - PFN_UP(max(start_ram, start));
+    }
+    numa_node->node_present_pages = pages;
     node_set_online(nodeid);
 }
 
diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
index fd1511a6fb..c860f3ad1c 100644
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -71,6 +71,7 @@ extern nodeid_t *memnodemap;
 struct node_data {
     unsigned long node_start_pfn;
     unsigned long node_spanned_pages;
+    unsigned long node_present_pages;
 };
 
 extern struct node_data node_data[];
@@ -91,6 +92,7 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
 
 #define node_start_pfn(nid)     (NODE_DATA(nid)->node_start_pfn)
 #define node_spanned_pages(nid) (NODE_DATA(nid)->node_spanned_pages)
+#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
 #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn + \
                                  NODE_DATA(nid)->node_spanned_pages)
 
@@ -123,6 +125,7 @@ extern void numa_set_processor_nodes_parsed(nodeid_t node);
 extern mfn_t first_valid_mfn;
 
 #define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
+#define node_present_pages(nid) total_pages
 #define node_start_pfn(nid) mfn_x(first_valid_mfn)
 #define __node_distance(a, b) 20
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 11:20:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 11:20:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824107.1238193 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3CwC-0007KG-H6; Tue, 22 Oct 2024 11:20:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824107.1238193; Tue, 22 Oct 2024 11: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 1t3CwC-0007K9-Ed; Tue, 22 Oct 2024 11:20:32 +0000
Received: by outflank-mailman (input) for mailman id 824107;
 Tue, 22 Oct 2024 11:20: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=BtP5=RS=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t3CwA-0007K3-GT
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 11:20:30 +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 a418453f-9067-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 13:20:28 +0200 (CEST)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a9a3da96a8aso859681666b.0
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 04:20:28 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91559b33sm324647866b.116.2024.10.22.04.20.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 22 Oct 2024 04:20:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a418453f-9067-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729596028; x=1730200828; darn=lists.xenproject.org;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=99i7iibbJGvEeFRBxMTHBv5mXYRfhzAjEyUVUsI4UOo=;
        b=SQZ8XnypgUe06JTv4bRJcqWAbacEDSeijlyCC9Ys5fYbr5Wqxo5u0fgPbj8T1YJGEq
         4hyGpxYXQrLTtekl4Hnxs83+2l9HjfM6O9m2UR2uHbQd5FJ+9i7a6nEeUErm+iGvtYdi
         y1OB7O72E59fDIMjAPYMR+XGyyZXo4V26C7bE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729596028; x=1730200828;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=99i7iibbJGvEeFRBxMTHBv5mXYRfhzAjEyUVUsI4UOo=;
        b=KVp+x6BuI/sNt2G48v4QfqWxbASId7o3VqYuJBAIDIIiVtcJtG7IE8Xi1eNYgwRrcl
         a7u/S7iunf7NOAUarhdjVgy/uPv+nPHMb1V63yc18GK+HZTaT23PBLtlcovwKLNWOc4g
         OtDoiDHzrXd48G68RnekLv6G0Nl5WJdi5wTpLDMXEkDzxSKOp5QYCUCMgFPKnlLv3f9v
         WGNziTGFZiPNhyPIFwshUjByT+xb22Mcfje52eB/yySLnH1NBNV4a4uNqaf4fxS4czVI
         aLok2SGgfK0DF+FtE2KLucNdo+wz7vKBwXSMHx4pLQ7haX8WR4ljf9hIGClla0DhhWP1
         IJdg==
X-Forwarded-Encrypted: i=1; AJvYcCUOH0m27VDN3PE27TcNo9XEy0dOvAoJrq0oOSJIDtQOA7IoJs9a58AR+FKiBiYMLMJ30hxplIEsvSQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwOUE7IyQmft/jO0HAr5Xe9MwBZA9PgcXQB6HGaLKholk00m8LQ
	L5jxFDCqY8gvb5kEdC9Is8Ma2KKCDmw2H4m9pND4qQLPFlfKFTggbi7vitZa95g=
X-Google-Smtp-Source: AGHT+IHB1w08OjfYrx4K1lq0j0+AEqNA35mQXBd4ztCiumy3a6Gl8MPERhDlQvh1Pat+vYksO6ZoIQ==
X-Received: by 2002:a17:907:7e8f:b0:a99:facf:cfc with SMTP id a640c23a62f3a-a9aaa540c6dmr328295566b.17.1729596027595;
        Tue, 22 Oct 2024 04:20:27 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 22 Oct 2024 12:20:25 +0100
Message-Id: <D52AMD3KJVNP.2JX4IYPI4AE0A@cloud.com>
Subject: Re: [PATCH 1/1] NUMA: Introduce NODE_DATA->node_present_pages(RAM
 pages)
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Bernhard Kaindl" <bernhard.kaindl@cloud.com>,
 <xen-devel@lists.xenproject.org>, "Jan Beulich" <jbeulich@suse.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Julien Grall"
 <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>
X-Mailer: aerc 0.18.2
References: <20241022101029.967911-1-bernhardkaindl7@gmail.com>
In-Reply-To: <20241022101029.967911-1-bernhardkaindl7@gmail.com>

Hi,

The subject was probably meant to have a v3?

On Tue Oct 22, 2024 at 11:10 AM BST, Bernhard Kaindl wrote:
> From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
>
> Some admin tools like 'xl info -n' like to display the total memory
> for each NUMA node. The Xen backend[1] of hwloc comes to mind too.
>
> The total amount of RAM on a NUMA node is not needed by Xen internally:
> Xen only uses NODE_DATA->node_spanned_pages, but that can be confusing
> for users as it includes memory holes (can be as large as 2GB on x86).
>
> Calculate the RAM per NUMA node by iterating over arch_get_ram_range()
> which returns the e820 RAM entries on x86 and update it on memory_add().
>
> Use NODE_DATA->node_present_pages (like in the Linux kernel) to hold
> this info and in a later commit, find a way for tools to read it.

Part of this information would be more helpful in a comment in the definiti=
on
of node_data, I think.

>
> [1] hwloc with Xen backend: https://github.com/xenserver-next/hwloc/
>
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
> ---
> Changes in v2:
> - Remove update of numainfo call, only calculate RAM for each node.
> - Calculate RAM based on page boundaries, coding style fixes
> Changes in v3:
> - Use PFN_UP/DOWN, refactored further to simplify the code, while leaving
>   compiler-level optimisations to the compiler's optimisation passes.
> ---
>  xen/arch/x86/x86_64/mm.c |  3 +++
>  xen/common/numa.c        | 31 ++++++++++++++++++++++++++++---
>  xen/include/xen/numa.h   |  3 +++
>  3 files changed, 34 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
> index b2a280fba3..66b9bed057 100644
> --- a/xen/arch/x86/x86_64/mm.c
> +++ b/xen/arch/x86/x86_64/mm.c
> @@ -1334,6 +1334,9 @@ int memory_add(unsigned long spfn, unsigned long ep=
fn, unsigned int pxm)
>      share_hotadd_m2p_table(&info);
>      transfer_pages_to_heap(&info);
> =20
> +    /* Update the node's present pages (like the total_pages of the syst=
em) */
> +    NODE_DATA(node)->node_present_pages +=3D epfn - spfn;
> +
>      return 0;
> =20
>  destroy_m2p:
> diff --git a/xen/common/numa.c b/xen/common/numa.c
> index 28a09766fa..374132df08 100644
> --- a/xen/common/numa.c
> +++ b/xen/common/numa.c
> @@ -4,6 +4,7 @@
>   * Adapted for Xen: Ryan Harper <ryanh@us.ibm.com>
>   */
> =20
> +#include "xen/pfn.h"
>  #include <xen/init.h>
>  #include <xen/keyhandler.h>
>  #include <xen/mm.h>
> @@ -499,15 +500,39 @@ int __init compute_hash_shift(const struct node *no=
des,
>      return shift;
>  }
> =20
> -/* Initialize NODE_DATA given nodeid and start/end */
> +/**
> + * @brief Initialize a NUMA node's NODE_DATA given nodeid and start/end =
addrs.
> + *
> + * This function sets up the boot memory for a given NUMA node by calcul=
ating
> + * the node's start and end page frame numbers (PFNs) and determining
> + * the number of present RAM pages within the node's memory range.
> + *
> + * @param nodeid The identifier of the node to initialize.
> + * @param start The starting physical address of the node's memory range=
.
> + * @param end The ending physical address of the node's memory range.

I'd add that end is "exclusive". To make it unambiguous.

> + */
>  void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t e=
nd)
>  {
>      unsigned long start_pfn =3D paddr_to_pfn(start);
>      unsigned long end_pfn =3D paddr_to_pfn(end);
> +    struct node_data *numa_node =3D NODE_DATA(nodeid);
> +    paddr_t start_ram, end_ram;
> +    unsigned long pages =3D 0;
> +    unsigned int idx =3D 0;
> +    int err;
> =20
> -    NODE_DATA(nodeid)->node_start_pfn =3D start_pfn;
> -    NODE_DATA(nodeid)->node_spanned_pages =3D end_pfn - start_pfn;
> +    numa_node->node_start_pfn =3D start_pfn;
> +    numa_node->node_spanned_pages =3D end_pfn - start_pfn;
> =20
> +    /* Calculate the number of present RAM pages within the node: */
> +    while ( (err =3D arch_get_ram_range(idx++, &start_ram, &end_ram)) !=
=3D -ENOENT )

nit: This line seems quite overloaded. Might be easier for the eye as a
do-while, with "int err" being defined inside the loop itself.

> +    {
> +        if ( err || start_ram >=3D end || end_ram <=3D start )
> +            continue;  /* Not RAM (err !=3D 0) or range is outside the n=
ode */
> +
> +        pages +=3D PFN_DOWN(min(end_ram, end)) - PFN_UP(max(start_ram, s=
tart));
> +    }
> +    numa_node->node_present_pages =3D pages;
>      node_set_online(nodeid);
>  }
> =20
> diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
> index fd1511a6fb..c860f3ad1c 100644
> --- a/xen/include/xen/numa.h
> +++ b/xen/include/xen/numa.h
> @@ -71,6 +71,7 @@ extern nodeid_t *memnodemap;
>  struct node_data {
>      unsigned long node_start_pfn;
>      unsigned long node_spanned_pages;
> +    unsigned long node_present_pages;
>  };
> =20
>  extern struct node_data node_data[];
> @@ -91,6 +92,7 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
> =20
>  #define node_start_pfn(nid)     (NODE_DATA(nid)->node_start_pfn)
>  #define node_spanned_pages(nid) (NODE_DATA(nid)->node_spanned_pages)
> +#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
>  #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn + \
>                                   NODE_DATA(nid)->node_spanned_pages)
> =20
> @@ -123,6 +125,7 @@ extern void numa_set_processor_nodes_parsed(nodeid_t =
node);
>  extern mfn_t first_valid_mfn;
> =20
>  #define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> +#define node_present_pages(nid) total_pages
>  #define node_start_pfn(nid) mfn_x(first_valid_mfn)
>  #define __node_distance(a, b) 20
> =20

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 11:46:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 11:46:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824121.1238209 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3DLB-0002SC-IX; Tue, 22 Oct 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 824121.1238209; Tue, 22 Oct 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 1t3DLB-0002S5-Fh; Tue, 22 Oct 2024 11:46:21 +0000
Received: by outflank-mailman (input) for mailman id 824121;
 Tue, 22 Oct 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=Ufxd=RS=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t3DLA-0002Rz-Ir
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 11:46:20 +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 40a5aad6-906b-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 13:46:19 +0200 (CEST)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-37d55f0cf85so3928422f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 04:46:19 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37ee0b9bac3sm6427749f8f.94.2024.10.22.04.46.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 04:46:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 40a5aad6-906b-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729597578; x=1730202378; 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=LwID1GrxV/bloiAFKXhClGYUkDfFW0Ltl4Y5csEIZIg=;
        b=FiJ2EF8oefuptduMk+7Redcsxmw9h1MCRvhgXFZE/4wIeroi/JxpLnOaERhxVCRy++
         woXNlx04amnvxNo8Be67N6k95D+0Q1vMDcnmXsZLE3ep7zanM1mTsfdDPCBIAM/22+6C
         3fO1hLg4diX94xPUKyNNKKo8yhRNiMpXAnJgY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729597578; x=1730202378;
        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=LwID1GrxV/bloiAFKXhClGYUkDfFW0Ltl4Y5csEIZIg=;
        b=qgYxugX7Zz3vkOWcHsjdH9cJFbGXXn+VAfkC4xLLkQO4fQNFuIt8+YcLm9qo2POrkU
         /541QGSKSILHniKo8a9lTQ98k6gD2D+MLthrt9vlwpDAHQqsEF8OAz/mTYHVRhESxU+C
         6Y9kGeOTIOF4jW7EEQB9RpJPxIJCQrLvsMTSFXLn1hLcZRpjWdWdz+J55LS+NdU4hOyG
         nsFXeCwhI0g2JjGs5rYHa0TeqEV5XJi1TFujq9aGEi5odK3E14p9pyeiR16qMc2VZviq
         rsPrxRbL1SfwextLFqRCj7m3mYJc3eqsL3J/fvhkj6ra6J8aN486TRLGgR+MfBH4VgDs
         7t/g==
X-Gm-Message-State: AOJu0Yx4KY7v4Rg6GC1P4EXXpwcfkbzndXq3JoiP74fv50g9dM+OI68Y
	Jr82FCEcQ/9iZ2m7+16igCj9IYEE6pMu2fFoEJVrvzuF4YJoAEgVoOFcgTnlfCmWvl7NfAiom+G
	2
X-Google-Smtp-Source: AGHT+IEiU0wvj+zs1cHFftrmNWCE46p/g5/8Id31g7guT40biFpam4JG0okRinspcIsKavQhB9xDPg==
X-Received: by 2002:a5d:458e:0:b0:37d:4706:f728 with SMTP id ffacd0b85a97d-37ef21bb0aamr1780768f8f.50.1729597578475;
        Tue, 22 Oct 2024 04:46:18 -0700 (PDT)
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>
Subject: [PATCH] x86/pv: remove unlikely() from BUG_ON() condition in pv_map_ldt_shadow_page()
Date: Tue, 22 Oct 2024 13:46:07 +0200
Message-ID: <20241022114607.2908-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

BUG_ON() itself already contains an unlikely() wrapping the bug condition.

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/pv/mm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/pv/mm.c b/xen/arch/x86/pv/mm.c
index 24f0d2e4ff7d..187f5f6a3e8c 100644
--- a/xen/arch/x86/pv/mm.c
+++ b/xen/arch/x86/pv/mm.c
@@ -55,7 +55,7 @@ bool pv_map_ldt_shadow_page(unsigned int offset)
     l1_pgentry_t gl1e, *pl1e;
     unsigned long linear = curr->arch.pv.ldt_base + offset;
 
-    BUG_ON(unlikely(in_irq()));
+    BUG_ON(in_irq());
 
     /*
      * Prior limit checking should guarantee this property.  NB. This is
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 12:32:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 12:32:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824147.1238219 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3E3W-0001Qr-4r; Tue, 22 Oct 2024 12:32:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824147.1238219; Tue, 22 Oct 2024 12:32: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 1t3E3W-0001Qk-1c; Tue, 22 Oct 2024 12:32:10 +0000
Received: by outflank-mailman (input) for mailman id 824147;
 Tue, 22 Oct 2024 12:32: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3E3U-0001Qe-J1
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 12:32:08 +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 a5df22fb-9071-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 14:32:06 +0200 (CEST)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso826497466b.2
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 05:32:06 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912f67e6sm331745066b.82.2024.10.22.05.32.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 22 Oct 2024 05:32:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5df22fb-9071-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729600325; x=1730205125; 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=AWA+HbRBOcytwjikkEQvlsMbz2ZBLtWBVjxpVK+izwY=;
        b=h0STXGMQDU5ZqEqVjPAH5izARYpncz/H92TiA2jnYMhZT0hJXywaOyo4PAY8nvRRhW
         kTXd+IwJDGcYyvYq84qfZceqc6WgmUJ3xIxkVqWXrJhSxDL6ox29IBwlt0xWKVOMmygU
         tPfGr9kotB7eXHbwgXpGNFsdyUHX8rklYAZpY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729600325; x=1730205125;
        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=AWA+HbRBOcytwjikkEQvlsMbz2ZBLtWBVjxpVK+izwY=;
        b=LW3gOmDZ8sxwEa4X50MYWP75CRgjCMGw7jfJhtH4+IFdFlGiRyoi/IcR6FvEFfZjvQ
         McGSqpXXOos5IpAZ+VVwjwgYXsAfgk149oUlS41Hu6Ooafhmh0gDEH3jkIpkQCEHZdAF
         HPg6dj59eJJ/anDoaxCg0eTlfx/qxWNhfZ/1okpv5cqUMfFAwxT4V+NLbPpEq3pyC8bJ
         t8ZyKFEdPZ9brNsgHkRf9ro5ZY3vLOpOX1nzCkpTA7gLE96gu+hMg3UdPdl7/1vkMaHy
         lFPcQPHEUG+V5zGR+dejKcyC1H3FwPwIi8r6/KZc2rW/9opZ0VDhnuNQKNKAxxlOOZs5
         5vlA==
X-Forwarded-Encrypted: i=1; AJvYcCUuNSRIZm+ewthCOrlW5r3j0m7QO9cQbsRqDtIzMxb0YeRcKUIuY+6qMb4B5Z1uS2Jwh6+KCuK+VKw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxLQeHn0TwCl6pwHSPrSHX+epRsWWg2A0hl1+YPTEIpeDD/+Vlq
	BU8LfG5prWK1zdknBdPbCdQBUGMuqE5PWqAfo73C+ye3IVp7r+dJ3ZZ7fVXLZmk=
X-Google-Smtp-Source: AGHT+IEGT9Y69yZtMW1/+3cRlwlGgXEaD4VP3Z12o6bwikyX7BEfLxsCIi5clEgCBGMYiFhvV2OwBQ==
X-Received: by 2002:a17:907:3f94:b0:a9a:eeb:b263 with SMTP id a640c23a62f3a-a9aad37174dmr235671566b.58.1729600325489;
        Tue, 22 Oct 2024 05:32:05 -0700 (PDT)
Message-ID: <0e62a978-4cd9-4571-a639-f042a614f25e@citrix.com>
Date: Tue, 22 Oct 2024 13:32:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/pv: remove unlikely() from BUG_ON() condition in
 pv_map_ldt_shadow_page()
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>
References: <20241022114607.2908-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241022114607.2908-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 22/10/2024 12:46 pm, Roger Pau Monne wrote:
> BUG_ON() itself already contains an unlikely() wrapping the bug condition.
>
> No functional change.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

likely()/unlikely() annotations are notoriously difficult for humans to
reason about, and I think we have many wrong examples in Xen.

In some copious free time, I was thinking of borrowing Linux's ftrace
mechanism for identifying broken annotations.  All it involves is
turning if() into a macro...


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 12:41:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 12:41:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824153.1238228 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ECQ-00036k-VL; Tue, 22 Oct 2024 12:41:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824153.1238228; Tue, 22 Oct 2024 12: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 1t3ECQ-00036d-SM; Tue, 22 Oct 2024 12:41:22 +0000
Received: by outflank-mailman (input) for mailman id 824153;
 Tue, 22 Oct 2024 12:41: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3ECP-00036X-9Y
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 12:41:21 +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 efc51183-9072-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 14:41:19 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso823498966b.1
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 05:41:19 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a9159a32esm334147266b.214.2024.10.22.05.41.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 05:41:17 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: efc51183-9072-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729600878; x=1730205678; 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=JCY/tvSeKu0JrSPKb1ZpoawrJHGWY+r+mQ7PZh73VRI=;
        b=fmxt+UIhtzNs/CGmH0t/V0YxWihx+Aq/xLUKm0kQLDx+uZZD5fK53WPuD3unf/OY/q
         FFmxrLbG7rEg/j+kKTADbWXPp4hmYRtrz7LrlpyA4Qy+h4NaVHpCW6B0IdkeSHRqLBrR
         J9HogfIWsXBgVANFxFKZiAYWKNzBV72LsOGxo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729600878; x=1730205678;
        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=JCY/tvSeKu0JrSPKb1ZpoawrJHGWY+r+mQ7PZh73VRI=;
        b=r6cChlZd7mt0kkz7HFmaBF3PbRpJvRVwnKlpPQxThGs3YEoRmGtogJ3EJzf+2le5SZ
         yL3iQexJ2SWidUqqMQVFGh69tJYxGjV8Z4PZ0kszKiUwxjvxO/T0JzaCug2jLPdoVBLl
         KIjtSwRKUtKlhV4rkplY60IYhHTalz+pvpcdH5pjxGuXYoxxJlYvtQfkps59h5O/3LJ/
         rIkQvVNsODqe4ZqmysnqZZ6FXBCB9Ps19XPpwsHY3aOCi4ajGlplN//V29yGQnjrus04
         1q0AiNhVB1kvNGdHk/8/QO9tmUN1r7QJjUMkzv3UOfwPK+mc/mSG59ZopfxtRJI/kaHI
         OyBw==
X-Gm-Message-State: AOJu0Yzbyz9QILO9Odz870Hgi/h+o17UUD683jM5Jcsp9x7QrBgC9Z+Z
	6XxeWlQB8yPt+4V4KHh2p8eAu5vFAjzJJHJLFP75wTIYllswJQitJjCWmVhgTvj9BkA/fuls7qm
	y
X-Google-Smtp-Source: AGHT+IE6XkZ0MZ72BN3ZdYOLHRe+hvRyaILz9bLgWMzcnXOZSqVqOt8GjI+ZVvDGcHxPDTYlXn8Srw==
X-Received: by 2002:a17:906:c113:b0:a9a:1092:b10d with SMTP id a640c23a62f3a-a9a69b7af5dmr1473603566b.33.1729600877953;
        Tue, 22 Oct 2024 05:41:17 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH] x86/boot: Fix PVH boot during boot_info transition period
Date: Tue, 22 Oct 2024 13:41:14 +0100
Message-Id: <20241022124114.84498-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

multiboot_fill_boot_info() taking the physical address of the multiboot_info
structure leads to a subtle use-after-free on the PVH path, with rather less
subtle fallout.

The pointers used by __start_xen(), mbi and mod, are either:

 - MB:  Directmap pointers into the trampoline, or
 - PVH: Xen pointers into .initdata, or
 - EFI: Directmap pointers into Xen.

Critically, these either remain valid across move_xen() (MB, PVH), or rely on
move_xen() being inhibited (EFI).

The conversion to multiboot_fill_boot_info(), taking only mbi_p, makes the PVH
path use directmap pointers into Xen, as well as move_xen() which invalidates
said pointers.

Switch multiboot_fill_boot_info() to consume the same virtual addresses that
__start_xen() currently uses.  This keeps all the pointers valid for the
duration of __start_xen(), for all boot protocols.

It can be safely untangled once multiboot_fill_boot_info() takes a full copy
the multiboot info data, and __start_xen() has been moved over to using the
new boot_info consistently.

Right now, bi->{loader,cmdline,mods} are problematic.  Nothing uses
bi->mods[], and nothing uses bi->cmdline after move_xen().

bi->loader is used after move_xen(), although only for cmdline_cook() of
dom0's cmdline, where it happens to be benign because PVH boot skips the
inspection of the bootloader name.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>

This is more proof that Xen only boots by accident.  It certainly isn't by any
kind of design.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1506947472
including the pending work to add a PVShim test

This is the least-invasive fix given the rest of the Hyperlaunch series.

A different option would to introduce EFI and PVH forms of
multiboot_fill_boot_info(), but that would involve juggling even more moving
parts during the transition period.
---
 xen/arch/x86/setup.c | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index db670258d650..e43b56d4e80f 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -283,11 +283,10 @@ struct boot_info __initdata xen_boot_info = {
     .cmdline = "",
 };
 
-static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
+static struct boot_info *__init multiboot_fill_boot_info(
+    multiboot_info_t *mbi, module_t *mods)
 {
     struct boot_info *bi = &xen_boot_info;
-    const multiboot_info_t *mbi = __va(mbi_p);
-    module_t *mods = __va(mbi->mods_addr);
     unsigned int i;
 
     if ( mbi->flags & MBI_MODULES )
@@ -1065,15 +1064,31 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         ASSERT(mbi_p == 0);
         pvh_init(&mbi, &mod);
-        mbi_p = __pa(mbi);
+        /*
+         * mbi and mod are regular pointers to .initdata.  These remain valid
+         * across move_xen().
+         */
     }
     else
     {
         mbi = __va(mbi_p);
         mod = __va(mbi->mods_addr);
+
+        /*
+         * For MB1/2, mbi and mod are directmap pointers into the trampoline.
+         * These remain valid across move_xen().
+         *
+         * For EFI, these are directmap pointers into the Xen image.  They do
+         * not remain valid across move_xen().  EFI boot only functions
+         * because a non-zero xen_phys_start inhibits move_xen().
+         *
+         * Don't be fooled by efi_arch_post_exit_boot() passing "D" (&mbi).
+         * This is a EFI physical-mode (i.e. identity map) pointer.
+         */
+        ASSERT(mbi_p < MB(1) || xen_phys_start);
     }
 
-    bi = multiboot_fill_boot_info(mbi_p);
+    bi = multiboot_fill_boot_info(mbi, mod);
 
     /* Parse the command-line options. */
     if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )

base-commit: 49a068471d77820af5dac5ad062cde7129e3faae
prerequisite-patch-id: 4ada23fb7ca505d30d9c41e23583d5db5ed95bec
prerequisite-patch-id: 2427c5681fce868938a85f8d70de7adb31f731a7
prerequisite-patch-id: 99b7107cd0d8a7675ebd30cf788e550fda4e9cfb
prerequisite-patch-id: 795f6e9425cc6a953166b530ae68df466a7a3c2b
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 13:14:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 13:14:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824161.1238239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Ehs-0007Cw-CJ; Tue, 22 Oct 2024 13:13:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824161.1238239; Tue, 22 Oct 2024 13: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 1t3Ehs-0007Cp-9s; Tue, 22 Oct 2024 13:13:52 +0000
Received: by outflank-mailman (input) for mailman id 824161;
 Tue, 22 Oct 2024 13:13: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 1t3Ehr-0007Cj-47
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 13:13: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 1t3Ehq-0003hL-SF; Tue, 22 Oct 2024 13:13:50 +0000
Received: from [15.248.2.30] (helo=[10.24.67.22])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t3Ehq-0001FD-Gy; Tue, 22 Oct 2024 13:13: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=9Yui1Qzv9Jxy1memHOnnDaMKzPMThV6ntmpVrrYPXg8=; b=tqZI7/pzeWabxqcjuduyLbQQoC
	/XI+X34a/8qqfFSSuhwv06vNkPLKCmLC2epRLsl9eialdKG5v12svCsUgmsN7dxp1PATKgsWEykdY
	ALu/qRIpVAv9c1zBSqyWZVrWirJf2Mr+GU6oCBq7JaNQjPEoOayf3EItYN8s17RfFCyM=;
Message-ID: <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
Date: Tue, 22 Oct 2024 14:13:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 22/10/2024 10:56, Luca Fancellu wrote:
> 
> 
>> On 22 Oct 2024, at 10:47, Julien Grall <julien@xen.org> wrote:
>>
>> Hi Luca,
>>
>> On 22/10/2024 10:41, Luca Fancellu wrote:
>>>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
>>> 2) dsb+isb barrier after enabling the MPU, since we are enabling the MPU but also because we are disabling the background region
>>
>> TBH, I don't understand this one. Why would disabling the background region requires a dsb + isb? Do you have any pointer in the Armv8-R specification?
> 
> I’m afraid this is only my deduction, Section C1.4 of the Arm® Architecture Reference Manual Supplement Armv8, for R-profile AArch64 architecture,
> (DDI 0600B.a) explains what is the background region, it says it implements physical address range(s), so when we disable it, we would like any data
> access to complete before changing this implementation defined range with the ranges defined by us tweaking PRBAR/PRLAR, am I right?

My mental model for the ordering is similar to a TLB flush which is:
    1/ dsb nsh
    2/ tlbi
    3/ dsb nsh
    4/ isb

Enabling the MPU is effectively 2. AFAIK, 1 is only necessary to ensure 
the update to the page-tables. But it is not a requirement to ensure any 
data access are completed (otherwise, we would have needed a dsb sy 
because we don't know how far the access are going...).

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 13:19:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 13:19:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824168.1238249 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3En9-0007v9-Uv; Tue, 22 Oct 2024 13:19:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824168.1238249; Tue, 22 Oct 2024 13: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 1t3En9-0007v2-SD; Tue, 22 Oct 2024 13:19:19 +0000
Received: by outflank-mailman (input) for mailman id 824168;
 Tue, 22 Oct 2024 13:19: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 1t3En9-0007us-17; Tue, 22 Oct 2024 13:19: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 1t3En8-0003nA-PP; Tue, 22 Oct 2024 13:19: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 1t3En8-0002qV-9u; Tue, 22 Oct 2024 13:19:18 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t3En8-0006nl-9L; Tue, 22 Oct 2024 13:19: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=ZRiovQNi7qYgxrHAvSQLv6r+Jv9bZj7oPziYGlyKz9A=; b=Q3g4IoG7FXj21zLf8vkZFM1Ren
	noSCwfCY4Jy1XQCRkE56S6Z/r4IH4jLGUCu5PtXhigbUSUoUWfnU26+NF3vUA2YPtTGTGu8Cz9wbT
	o8m0oVNBC2MS9dSu5KVhnH8SaNEc/4C5aVKKZyjWJlOxY6uLWVf0cnfAqpVd6rjY01HQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188317-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188317: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-libvirt-vhd:leak-check/check:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-qcow2:leak-check/check:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-arndale:host-ping-check-native:fail:heisenbug
    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:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-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-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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-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-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-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2: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-amd64-libvirt-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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-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=49a068471d77820af5dac5ad062cde7129e3faae
X-Osstest-Versions-That:
    xen=49a068471d77820af5dac5ad062cde7129e3faae
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 22 Oct 2024 13:19:18 +0000

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

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-vhd 22 leak-check/check fail in 188315 pass in 188317
 test-armhf-armhf-xl-qcow2    20 leak-check/check fail in 188315 pass in 188317
 test-armhf-armhf-xl-arndale   6 host-ping-check-native     fail pass in 188315

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 188315 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 188315 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188315
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188315
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188315
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188315
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188315
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188315
 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-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-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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                  49a068471d77820af5dac5ad062cde7129e3faae
baseline version:
 xen                  49a068471d77820af5dac5ad062cde7129e3faae

Last test of basis   188317  2024-10-22 07:05: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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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 Oct 22 13:26:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 13:26:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824179.1238260 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Etf-00014W-QF; Tue, 22 Oct 2024 13:26:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824179.1238260; Tue, 22 Oct 2024 13: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 1t3Etf-00014P-LF; Tue, 22 Oct 2024 13:26:03 +0000
Received: by outflank-mailman (input) for mailman id 824179;
 Tue, 22 Oct 2024 13:26: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Etd-00014J-V2
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 13:26:02 +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 2c086b70-9079-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 15:25:57 +0200 (CEST)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9a3da96a8aso880418566b.0
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 06:25:57 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a9159a27bsm339463566b.211.2024.10.22.06.25.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 22 Oct 2024 06:25:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c086b70-9079-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729603557; x=1730208357; 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=ATXiZzRWbPiuw605p6sYWcYlbxwWRSQL+4+7ZCBI11M=;
        b=V1xJoe/8nS/IRe1KTV8k0sA1W7FJifR5kXGOB7a8OrQQUnofTNDC0AlTGiBSrE3oVj
         C2lBbOjkfIOow8YjP4/STJTP2VPJ4ukMLbSZNnjnwgXvI4Pbg1c019tuMutxIzMEtHXP
         3Tp0VuOcGgNFu1ost4AaTLD2V8SD+bQ5A3hMs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729603557; x=1730208357;
        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=ATXiZzRWbPiuw605p6sYWcYlbxwWRSQL+4+7ZCBI11M=;
        b=bRRyUzagSFkkwGxlTjpMqWUKIQzGuQqbLhVc9M/dzY7Mps3XWKKuAB/hEyCGFETLGN
         dVmqew+GPWuu4QK4lVMIqrocSf8PHrt8O78UGgz8DR+MIE3yaNPooYrZEolFz817LTvz
         djLAkMx4Udc9QKHxOh9yJ+e3IPaCTj/BlZB6vEMMcnmJMssxc827tqZeT27aAWFz/ne0
         7yIOPYEblzaqUvwNT/9PqH7qRfg/OicYFhskkYLV87vD4XsYjyPC/C8KzDmEZ0LC+N6i
         ABqlWAwmjrIEkGQOdoMywIvYmaEg74daETTSMmaV/uFlpcwaYX4XfEaKeTWhizk/HsJZ
         UyYQ==
X-Gm-Message-State: AOJu0YzilktSdPesajOqtXDQhqdlLQx2ovx+pPagwQ+UFve/OV12Kgtw
	C757ybvITroPGGyTa4yy9Rjd3w21fbhh8/u0Bs7zeirmfgUPLU1aS3Lk9baqe58=
X-Google-Smtp-Source: AGHT+IGLpilGPNJ8X45KvD9UaJCgfCD7zfhpPnhbxY6vPrFUSw+rxbl1DUVxObyyr8/zyLGeC9W/AA==
X-Received: by 2002:a17:907:e8b:b0:a9a:7b3d:705 with SMTP id a640c23a62f3a-a9aaa669749mr265540666b.30.1729603557020;
        Tue, 22 Oct 2024 06:25:57 -0700 (PDT)
Message-ID: <60833e8e-47bd-4b75-a263-f3b88ae40b6d@citrix.com>
Date: Tue, 22 Oct 2024 14:25:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH 3/3] CI: Add {adl,zen3p}-pvshim-* tests
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
 <20241021143539.3898995-4-andrew.cooper3@citrix.com>
 <78116f34-2448-4b08-9eb3-50d70a18074e@citrix.com>
 <5d02722a-eccd-43f9-9d6e-2e845d9757d9@citrix.com>
 <alpine.DEB.2.22.394.2410211524170.3833@ubuntu-linux-20-04-desktop>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <alpine.DEB.2.22.394.2410211524170.3833@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 11:28 pm, Stefano Stabellini wrote:
> On Mon, 21 Oct 2024, Andrew Cooper wrote:
>> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/qubes-x86-64.sh
>> index 76fbafac84..95090eb12c 100755
>> --- a/automation/scripts/qubes-x86-64.sh
>> +++ b/automation/scripts/qubes-x86-64.sh
>> @@ -44,6 +45,11 @@ echo \"${passed}\"
>>  
>>          if [ "${test_variant}" = "dom0pvh-hvm" ]; then
>>              domU_type="hvm"
>> +        elif [ "${test_variant}" = "pvshim" ]; then
>> +            domU_type="pvh"
> This is not necessary since PVH is already the default. In theory, it is
> harmless, but it caused me to do a double-take because I initially
> thought I was missing something, given that PVH is expected to be the
> default at this point.

That was more fallout of refactoring.

My first attempt (which worked) involved writing a whole domU_config=
block, and then I decided that was a bad thing.

Selecting PVShim without also forcing type to PVH is a little fragile if
anyone changes the domU_type default.  I think it's cleaner to keep both
together, even if it happens to be re-selecting the default.

>> +            domU_extra_config='
>> +pvshim = 1
>> +'
> Is there a reason this cannot be:
>
>     domU_extra_config='pvshim = 1'
>
> ?
>
> These are just minor cosmetics.

Again, refactoring from before pulling out domU_type.

I'm not fussed - I can shrink this to one line.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 13:29:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 13:29:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824186.1238270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Ewe-0001mj-6X; Tue, 22 Oct 2024 13:29:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824186.1238270; Tue, 22 Oct 2024 13: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 1t3Ewe-0001mc-2A; Tue, 22 Oct 2024 13:29:08 +0000
Received: by outflank-mailman (input) for mailman id 824186;
 Tue, 22 Oct 2024 13:29: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Ewc-0001mW-Je
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 13:29:06 +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 9c1d1799-9079-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 15:29:05 +0200 (CEST)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2fb5014e2daso57732761fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 06:29:05 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c7255esm3281528a12.80.2024.10.22.06.29.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 22 Oct 2024 06:29:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c1d1799-9079-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729603745; x=1730208545; 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=3qEjVOX60+qJdBYtTWZetjJLLNq1d52To7SjHZciXwM=;
        b=pk7Vs6Gt72duLdlaPIJ+Imvb/7Lujhp64pc1cNXJtSfYVnDA8rJjDd2f/o0iTjZpBL
         xOvIisRa9t42CoXIP3YGvfpSTjyptmoELqnxGTMz5I3AaB4qUWgj0+Uy9DIF+8Jsa42l
         F47BK1tabYJ8ETT7WHhLqLYSE4+asbpvMGa90=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729603745; x=1730208545;
        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=3qEjVOX60+qJdBYtTWZetjJLLNq1d52To7SjHZciXwM=;
        b=bCW95XctiKYKLQRsy8C0X0QlhdfO4GWRZtkWZu/NT+0nYce1uYy2NNiukWxR0vxM3Y
         GEbT9MX8R1P+p0oVRh6zChs1NmUkmNHW5iwEyKSCmKPWTPnmHTRFbWS9R1M5utDQHZ+H
         +O9Sn6Q/8/wx5QeSywn0H31FEGI9Remyk1Go5WahOZ0KJ9RPsAuLXXP0uLDohTA9VEC2
         VOvE3SKGnoWa2ot3p26JOXDQvYqySLLOFAZqPRpyJg2vNjrlRtq5tSszTjbz8avQmatn
         sQ/e/qlGMU4q40efOamNn3CA7u4mabGXqq/Ms4vg7H6Lv59unSNScWJn7WMNuMeDIgrt
         eXMA==
X-Forwarded-Encrypted: i=1; AJvYcCUY0dN84Ou5ztHX5+wrtfYcaltV2DndOhZaPkSmbUTGd3ewzYt2rpKtItUim6aCPr/+XtT9upXBZPc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxeEMooaFZSDaIFE33SqUWom+IHMNDppXNB6ptM+SePfzI5G3cV
	eKK6I/Yt9RIXYBUDTcXvEupOdcLCX11FvBflCR5QcllAZUaSAorSyQc9epXQN1o=
X-Google-Smtp-Source: AGHT+IFLxb3qDi7JW2nj71xqVNk7OWKa3y+z6BtdcDAeFVYFOMKMkrC5Gbqd8LmLuMqxOTOSgq7/6Q==
X-Received: by 2002:a05:651c:551:b0:2fa:d4ef:f222 with SMTP id 38308e7fff4ca-2fb8320b662mr62505251fa.38.1729603745090;
        Tue, 22 Oct 2024 06:29:05 -0700 (PDT)
Message-ID: <a06b93a8-0660-4396-a248-d194c844fd30@citrix.com>
Date: Tue, 22 Oct 2024 14:29:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 02/38] x86/boot: convert consider_modules to struct
 boot_module
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: jason.andryuk@amd.com, christopher.w.clark@gmail.com,
 stefano.stabellini@amd.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20241021004613.18793-1-dpsmith@apertussolutions.com>
 <20241021004613.18793-3-dpsmith@apertussolutions.com>
 <c57b3cb6-0a3d-4930-8acd-e8bc03dc2a53@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <c57b3cb6-0a3d-4930-8acd-e8bc03dc2a53@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 10:53 am, Andrew Cooper wrote:
> On 21/10/2024 1:45 am, Daniel P. Smith wrote:
>> To start transitioning consider_modules() over to struct boot_module, begin
>> with taking the array of struct boot_modules but use the temporary struct
>> element mod.
>>
>> No functional change intended.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>> Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>
> I've taken patch 1 (currently in testing to push).
>
> However, this change breaks PV Shim (same test case that I debugged the
> OSSTest failure with on Saturday).
>
> (XEN) PVH start info: (pa 0000ffc0)
> (XEN)   version:    1
> (XEN)   flags:      0
> (XEN)   nr_modules: 2
> (XEN)   modlist_pa: 000000000000ff60
> (XEN)   cmdline_pa: 000000000000ffa0
> (XEN)   cmdline:    'pv-shim console=xen,pv'
> (XEN)   rsdp_pa:    00000000fc008000
> (XEN)     mod[0].pa:         0000000001042000
> (XEN)     mod[0].size:       0000000006907440
> (XEN)     mod[0].cmdline_pa: 0000000000000000
> (XEN)     mod[1].pa:         00000000016d9000
> (XEN)     mod[1].size:       0000000019870751
> (XEN)     mod[1].cmdline_pa: 0000000000000000
> (XEN) Bootloader: PVH Directboot
> (XEN) Command line: pv-shim console=xen,pv
> (XEN) Xen image load base address: 0
> ...
> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y ubsan=y  Not tainted ]----
> (XEN) CPU:    0
> (XEN) RIP:    e008:[<ffff82d040a51d38>]
> arch/x86/pv/dom0_build.c#dom0_construct+0x2020/0x24eb
> ...
> (XEN) Xen call trace:
> (XEN)    [<ffff82d040a51d38>] R
> arch/x86/pv/dom0_build.c#dom0_construct+0x2020/0x24eb
> (XEN)    [<ffff82d040a52222>] F dom0_construct_pv+0x1f/0xcd
> (XEN)    [<ffff82d040a7bb27>] F construct_dom0+0xad/0xc0
> (XEN)    [<ffff82d040a6eb3f>] F __start_xen+0x50f2/0x53aa
> (XEN)    [<ffff82d040206184>] F __high_start+0x94/0xa0
> ...
> (XEN) Pagetable walk from ffff8287fffffff8:
> (XEN)  L4[0x105] = 000000001fa17063 ffffffffffffffff
> (XEN)  L3[0x01f] = 0000000000000000 ffffffffffffffff
> (XEN)
> (XEN) ****************************************
> (XEN) Panic on CPU 0:
> (XEN) FATAL PAGE FAULT
> (XEN) [error_code=0000]
> (XEN) Faulting linear address: ffff8287fffffff8
> (XEN) ****************************************
>
> We've got a wild access, but it's not clear exactly what's going on here.
>
> addr2line says it's line 904 which is in the middle of the
> page_list_for_each() loop setting up the physmap.
>
> My gut feeling is that the pointer -> array conversion in
> consider_modules() isn't correct, because that's literally the only
> non-trivial change, but I can't spot anything concretely wrong...

To follow up, this isn't really the fault of this patch.

It's a hindenbug left by prior patches.  Fix at
https://lore.kernel.org/xen-devel/20241022124114.84498-1-andrew.cooper3@citrix.com/T/#u

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 13:42:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 13:42:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824194.1238278 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3F9e-0004Y0-94; Tue, 22 Oct 2024 13:42:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824194.1238278; Tue, 22 Oct 2024 13:42: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 1t3F9e-0004Xt-6O; Tue, 22 Oct 2024 13:42:34 +0000
Received: by outflank-mailman (input) for mailman id 824194;
 Tue, 22 Oct 2024 13: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=30Tg=RS=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t3F9d-0004Xn-HA
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 13:42:33 +0000
Received: from fhigh-b3-smtp.messagingengine.com
 (fhigh-b3-smtp.messagingengine.com [202.12.124.154])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7b4b8467-907b-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 15:42:30 +0200 (CEST)
Received: from phl-compute-07.internal (phl-compute-07.phl.internal
 [10.202.2.47])
 by mailfhigh.stl.internal (Postfix) with ESMTP id D65B225400C0;
 Tue, 22 Oct 2024 09:42:28 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-07.internal (MEProxy); Tue, 22 Oct 2024 09:42:29 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 22 Oct 2024 09:42:26 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7b4b8467-907b-11ef-99a3-01e77a169b0f
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=1729604548;
	 x=1729690948; bh=QsUIZSvy7iTeKwd7o6Oj4e4fh/MyY6NRmw99aN7J8lQ=; b=
	IOcSf5X/Sl3CkI6CwN204XtZbQE4BIc9SLkVa7zRCx3MA4lOsCfDgQ2u8lysIKyn
	V/TriSQUXnIumUm+WXYGXr5my7y5bRmF1gotDOPoMC8t81bpGpTkjJiXsKqxQ/pV
	qgXaLtHZq9Jcd3Twlch7WROh6uPPsCJGEjiofEFkDEUimIz4N+9YqEpZ7XOUriXE
	cGCy9/qlsvESHAnPF57DSu+zqV4EesxcDkmYSQ86WbxEoQKhf0PJvSxpuhuxv+Zt
	k61GFVTihP1419PqlHdh5QKsjVD0IsMru8HAK3K7rsFYtCPLECmhtuf6AS/LuEfL
	7W4T9nek3jw41eUVdmCB9w==
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=1729604548; x=1729690948; bh=QsUIZSvy7iTeKwd7o6Oj4e4fh/My
	Y6NRmw99aN7J8lQ=; b=e6ugWl5zT1tGEbPKW1v/YkcpWZpzcxVFmzcyP59WpBLY
	IYLhorgqDtRiDm1TkJIc27R3RkaaBWrHex1oUaePveIxMUjo6LEFVNDYqCIlrNxY
	XyIkPil6F5ALhmLPIlPUQD7ZoeFkOvNLSNE7eiUg/3pgjYZmVLywzr22a7A1eiwI
	ZEMqZb6QtusexnRG/RIuIvWjI2M8J7MDB3LQMYkZu9HQHEqGk8WBF1HI+m2JpQgd
	Sj4rb7fExpCTNys/C1P4DasWb/EnCzb8U56eyK0gmzBpD3lrqxwsl7zsCng0Klxv
	es3/L+ipOYZpqRXmMVjJEhCxmom0zb1PSbM8MlDndw==
X-ME-Sender: <xms:xKsXZ7Otuxcvo_6UhgFFZ1VMnCNxyihQe2nfsg5WpbbARxc1EyF5hg>
    <xme:xKsXZ1_j8VtEe8_GZsrNchw-SbAy0n8gLr55BEHs01lTof2t1CsfuOYSxcIw-JtKS
    JGLuvSFaJCcRg>
X-ME-Received: <xmr:xKsXZ6SBOW3GA6EOOQ7qAUYye9uIGl8LKGo40wBR2fujLJD5DZzN-FV8sM3rOr2K8nzqD7zygk4Ek67Dh0Q4bvYm3XqRUVg-xg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdeihedgieeiucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepjedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprghnughr
    vgifrdgtohhophgvrhefsegtihhtrhhigidrtghomhdprhgtphhtthhopehsshhtrggsvg
    hllhhinhhisehkvghrnhgvlhdrohhrghdprhgtphhtthhopeigvghnqdguvghvvghlsehl
    ihhsthhsrdigvghnphhrohhjvggtthdrohhrghdprhgtphhtthhopeguphhsmhhithhhse
    grphgvrhhtuhhsshholhhuthhiohhnshdrtghomhdprhgtphhtthhopegrnhhthhhonhih
    rdhpvghrrghrugesvhgrthgvshdrthgvtghhpdhrtghpthhtohepmhhitghhrghlrdhorh
    iivghlsegrmhgurdgtohhmpdhrtghpthhtoheptggrrhguohgvsegtrghrughovgdrtgho
    mh
X-ME-Proxy: <xmx:xKsXZ_v2CCz_kSuiDI-JC1gxNV2XOrD2pmiy8y_Lv9477aVVF58niw>
    <xmx:xKsXZzdvXmOSY-cx7RPvZGY12QWp7cYv9w1fImu87EedrQ2xIz-j1g>
    <xmx:xKsXZ71gu-DMX5CMwoLlVgNcKoWaEHd0sDOPqZSM6xXtYAUwXGyh9A>
    <xmx:xKsXZ_-Pi49ncnaJzClfJtQfuz4bX-qfP1uP03e7UKnwFP4ioJGbDw>
    <xmx:xKsXZ7Tli_6BICzIqNGnYUOLYSZstABQ1pqQDz90L2kUmOlq4IptRf11>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 22 Oct 2024 15:42:24 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 3/3] CI: Add {adl,zen3p}-pvshim-* tests
Message-ID: <ZxerwL4qqQwfLrzF@mail-itl>
References: <20241021143539.3898995-1-andrew.cooper3@citrix.com>
 <20241021143539.3898995-4-andrew.cooper3@citrix.com>
 <78116f34-2448-4b08-9eb3-50d70a18074e@citrix.com>
 <5d02722a-eccd-43f9-9d6e-2e845d9757d9@citrix.com>
 <alpine.DEB.2.22.394.2410211524170.3833@ubuntu-linux-20-04-desktop>
 <60833e8e-47bd-4b75-a263-f3b88ae40b6d@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="ZJ/XHJzuyQooZUc6"
Content-Disposition: inline
In-Reply-To: <60833e8e-47bd-4b75-a263-f3b88ae40b6d@citrix.com>


--ZJ/XHJzuyQooZUc6
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 22 Oct 2024 15:42:24 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [PATCH 3/3] CI: Add {adl,zen3p}-pvshim-* tests

On Tue, Oct 22, 2024 at 02:25:54PM +0100, Andrew Cooper wrote:
> On 21/10/2024 11:28 pm, Stefano Stabellini wrote:
> > On Mon, 21 Oct 2024, Andrew Cooper wrote:
> >> diff --git a/automation/scripts/qubes-x86-64.sh b/automation/scripts/q=
ubes-x86-64.sh
> >> index 76fbafac84..95090eb12c 100755
> >> --- a/automation/scripts/qubes-x86-64.sh
> >> +++ b/automation/scripts/qubes-x86-64.sh
> >> @@ -44,6 +45,11 @@ echo \"${passed}\"
> >> =20
> >>          if [ "${test_variant}" =3D "dom0pvh-hvm" ]; then
> >>              domU_type=3D"hvm"
> >> +        elif [ "${test_variant}" =3D "pvshim" ]; then
> >> +            domU_type=3D"pvh"
> > This is not necessary since PVH is already the default. In theory, it is
> > harmless, but it caused me to do a double-take because I initially
> > thought I was missing something, given that PVH is expected to be the
> > default at this point.
>=20
> That was more fallout of refactoring.
>=20
> My first attempt (which worked) involved writing a whole domU_config=3D
> block, and then I decided that was a bad thing.
>=20
> Selecting PVShim without also forcing type to PVH is a little fragile if
> anyone changes the domU_type default.=C2=A0 I think it's cleaner to keep =
both
> together, even if it happens to be re-selecting the default.

IMO it's okay to leave re-setting the default here explicitly.

> >> +            domU_extra_config=3D'
> >> +pvshim =3D 1
> >> +'
> > Is there a reason this cannot be:
> >
> >     domU_extra_config=3D'pvshim =3D 1'
> >
> > ?
> >
> > These are just minor cosmetics.
>=20
> Again, refactoring from before pulling out domU_type.
>=20
> I'm not fussed - I can shrink this to one line.

Either is fine for me. The short one is more readable now, while the
long one is easier to extend in the future.

Anyway, for the series (c80e9241209cc9ed7f66c3f45275f837ddafc21c and
previous two):
Reviewed-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.c=
om>

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcXq8AACgkQ24/THMrX
1yzGHgf7BD5dQG/Rvg2fFhlEZXdO9m51p8pblSUcrVtZNkS5On85vPPgtKITG/FU
iofwbdP2L1tN38WQukgcHJjfuaOdoIJFo6X5Akt+YXv7E6q01kEH3677stNjeRxX
7TKQpnk69y7yzxeS13s/pZ1oZfA9So654PtNmWYMkko+3GqqC1TSjMCCqR5Ysb6F
e0Tfwpw2hX8fNHs8uE2XFwL01i7P3DVoC3bK0n88N6X2X6RX8qLNhaCRU8EDf2RA
o4mkSvemnwnBlcWIyJJRZ1hJWQGvL6JIXoqLplZgaGrMoG0jPg9SMLD+wEjvGvMo
WPr6zK0StOtZrp7UnTSznI07cLtQ2A==
=ezcp
-----END PGP SIGNATURE-----

--ZJ/XHJzuyQooZUc6--


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 13:53:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 13:53:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824202.1238288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3FJl-0006Ij-4V; Tue, 22 Oct 2024 13:53:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824202.1238288; Tue, 22 Oct 2024 13:53: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 1t3FJl-0006Ic-20; Tue, 22 Oct 2024 13:53:01 +0000
Received: by outflank-mailman (input) for mailman id 824202;
 Tue, 22 Oct 2024 13:53: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=AXx/=RS=linaro.org=peter.maydell@srs-se1.protection.inumbo.net>)
 id 1t3FJk-0006IW-HV
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 13:53:00 +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 f2abff19-907c-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 15:52:59 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c99be0a4bbso7584322a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 06:52:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f2abff19-907c-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729605179; x=1730209979; 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=uSklaj1Iow3OC/fgWLoyafNoKV4KALgVR05ccdjFQ5Y=;
        b=orpuRdVAo4phS9VA8CV5aLwNPePz8DFRzgwgMYLRWQX4usRj29mpg/gSAZR5bt4v92
         jOo1He03CDJeD7z4Bim3FSzAqhazzEOOhCqaZnCu/R1QlIFDCmPNlzvpcA3sLaNbrX+y
         SySUyj8cx23RT/dLRtHEvz3glbupBixrEInIsz1EUMEdzw0elctTLBMswF3bb/KsDQH2
         kGdylQ5bY7+Nws3iiwdfWrl6i5e0pOHgcxoKTi9A7o3XeohuWC+oNoHXaXxwvEOXjeKe
         IAWu3zfoGwWtTLA7wkVMX2Xjv0SEFrCRg1kD+aZ+GhIRqBKnPVhnT/RXfe0dVXuVfDIv
         izFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729605179; x=1730209979;
        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=uSklaj1Iow3OC/fgWLoyafNoKV4KALgVR05ccdjFQ5Y=;
        b=j0sMEIJ24hebqbAjRx/05K0hVhAYytUavz4BNTtpgkMx8oyYMy0fiOkO354HF54BBx
         ieq82mnjcAGc8ymjr4wMJoyfGVdTqPcnKprAPSJMVaY4m53EebUtbrcjqgq+1i+bwwCd
         aWtLe/PHM3AX+zfpjn+X0nW5QBbJbSzjZfmMxT6Uu1aIoY4L+h0eekTpkYloOdP7fO6R
         oJuFuEZ/yBNewZPeTnKb/T7sj//kV/hPRveBHHB9n1WKjb9X/x3M2KWPaSjlU68Behfp
         qcrwhSBXGWvOO0RuQBmGJtlOOI6tGpgygpXNSzhFV40g2lDi0voafEC6eszhSnUkAgyx
         DLFw==
X-Forwarded-Encrypted: i=1; AJvYcCW2l97o0K1I9WhEjd8qaGH6o2hTyVHVkQJZ2jfTusNM1jTuBIhR7tsPl9bvEjwW3+jG9h4Sn5PqMMc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyuwikSvdMv26K55yPMC1a7PbQcqnQuzK1s6FjyW7TjGri+Cj/G
	9PooAWxrgAPuTGoY6NJM7ZcLTKwD0lhMRHrWBkiabGRO4M8ET0xBjnes2U6Tk4AKGyx4PsLR8am
	mKbJn7RTx+UtqLZfoelXuCxCsO9I9/Xoc9Z57Kg==
X-Google-Smtp-Source: AGHT+IE5idqcDxn3wPR9rUM7wB07gzbhBWxNVeTb6QnYbSe3NEms4jgZVc6CzAlgkUpwqfNlfo1Al3BdpWyeSBwHypc=
X-Received: by 2002:a05:6402:210d:b0:5cb:78b8:7056 with SMTP id
 4fb4d7f45d1cf-5cb78b87ad7mr2740671a12.33.1729605178869; Tue, 22 Oct 2024
 06:52:58 -0700 (PDT)
MIME-Version: 1.0
References: <20241021073957.1851500-1-edgar.iglesias@gmail.com>
In-Reply-To: <20241021073957.1851500-1-edgar.iglesias@gmail.com>
From: Peter Maydell <peter.maydell@linaro.org>
Date: Tue, 22 Oct 2024 14:52:47 +0100
Message-ID: <CAFEAcA_M2HsgKM2idG4030JTZWEUFfm_2Ae980zyh0DGhe-p=Q@mail.gmail.com>
Subject: Re: [PULL v1 0/1] Xen Queue
To: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: qemu-devel@nongnu.org, sstabellini@kernel.org, anthony@xenproject.org, 
	paul@xen.org, edgar.iglesias@amd.com, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

On Mon, 21 Oct 2024 at 08:40, Edgar E. Iglesias
<edgar.iglesias@gmail.com> wrote:
>
> From: "Edgar E. Iglesias" <edgar.iglesias@amd.com>
>
> The following changes since commit f1dd640896ee2b50cb34328f2568aad324702954:
>
>   Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging (2024-10-18 10:42:56 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/edgar.iglesias/qemu.git tags/edgar/xen-queue-2024-10-21.for-upstream
>
> for you to fetch changes up to 676a68fd4850924db73548c9cb20ea484709708c:
>
>   hw/xen: Avoid use of uninitialized bufioreq_evtchn (2024-10-21 07:53:21 +0200)
>
> ----------------------------------------------------------------
> Edgars Xen queue.
>


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/9.2
for any user-visible changes.

-- PMM


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 14:08:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 14:08:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824211.1238299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3FYI-0008UT-Gj; Tue, 22 Oct 2024 14:08:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824211.1238299; Tue, 22 Oct 2024 14:08: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 1t3FYI-0008UM-DW; Tue, 22 Oct 2024 14:08:02 +0000
Received: by outflank-mailman (input) for mailman id 824211;
 Tue, 22 Oct 2024 14:08: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=wmZI=RS=suse.de=tiwai@srs-se1.protection.inumbo.net>)
 id 1t3FYH-0008UG-7Y
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 14:08:01 +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 0afc72b9-907f-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 16:07:59 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 2DEB01FB4C;
 Tue, 22 Oct 2024 14:07:58 +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 783A713894;
 Tue, 22 Oct 2024 14:07:57 +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 vT/NHL2xF2f0awAAD6G6ig
 (envelope-from <tiwai@suse.de>); Tue, 22 Oct 2024 14:07: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>
X-Inumbo-ID: 0afc72b9-907f-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729606078; 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=I5YtkOoPrVW2kCBxPLqPAf7UD1c7Fz8OlNH1U+IqDi8=;
	b=nT065qt4F0yaxGQDtCajKU5QrE+p9X22fQ5X+uJrdOXhWH71O0XxqvB04DrSIvks57q6Cu
	JdoTUOrhC6F3VM2FqxvCZrrLy8dfmsvHOi34IxJPAYkskRCU+DNNNywW6lsBU0E9auNlTB
	K4vW+XGRe4RK0Vn8gIuK+2eJqjzzmJQ=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729606078;
	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=I5YtkOoPrVW2kCBxPLqPAf7UD1c7Fz8OlNH1U+IqDi8=;
	b=XB/MFvdM6NJqGNpPMiucMvrGVCv1meVqHtwqyxogJgSr9p1OCl+lie6l0tPeIfBtUWHx0K
	qJIy2sce/WWFCkBg==
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729606078; 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=I5YtkOoPrVW2kCBxPLqPAf7UD1c7Fz8OlNH1U+IqDi8=;
	b=nT065qt4F0yaxGQDtCajKU5QrE+p9X22fQ5X+uJrdOXhWH71O0XxqvB04DrSIvks57q6Cu
	JdoTUOrhC6F3VM2FqxvCZrrLy8dfmsvHOi34IxJPAYkskRCU+DNNNywW6lsBU0E9auNlTB
	K4vW+XGRe4RK0Vn8gIuK+2eJqjzzmJQ=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729606078;
	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=I5YtkOoPrVW2kCBxPLqPAf7UD1c7Fz8OlNH1U+IqDi8=;
	b=XB/MFvdM6NJqGNpPMiucMvrGVCv1meVqHtwqyxogJgSr9p1OCl+lie6l0tPeIfBtUWHx0K
	qJIy2sce/WWFCkBg==
Date: Tue, 22 Oct 2024 16:08:58 +0200
Message-ID: <87v7xk2ps5.wl-tiwai@suse.de>
From: Takashi Iwai <tiwai@suse.de>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>,	Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,	Basavaraj Natikar
 <basavaraj.natikar@amd.com>,	Jiri Kosina <jikos@kernel.org>,	Benjamin
 Tissoires <bentiss@kernel.org>,	Arnd Bergmann <arnd@arndb.de>,	Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>,	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,	Manish Chopra
 <manishc@marvell.com>,	"David S. Miller" <davem@davemloft.net>,	Eric
 Dumazet <edumazet@google.com>,	Jakub Kicinski <kuba@kernel.org>,	Paolo
 Abeni <pabeni@redhat.com>,	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,	Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>,	Jon Mason <jdmason@kudzu.us>,	Dave Jiang
 <dave.jiang@intel.com>,	Allen Hubbe <allenbh@gmail.com>,	Bjorn Helgaas
 <bhelgaas@google.com>,	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,	Stefano Stabellini
 <sstabellini@kernel.org>,	Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,	Jaroslav Kysela <perex@perex.cz>,	Takashi
 Iwai <tiwai@suse.com>,	Chen Ni <nichen@iscas.ac.cn>,	Mario Limonciello
 <mario.limonciello@amd.com>,	Ricky Wu <ricky_wu@realtek.com>,	Al Viro
 <viro@zeniv.linux.org.uk>,	Breno Leitao <leitao@debian.org>,	Kevin Tian
 <kevin.tian@intel.com>,	Thomas Gleixner <tglx@linutronix.de>,	Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,	Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>,	Mostafa Saleh
 <smostafa@google.com>,	Jason Gunthorpe <jgg@ziepe.ca>,	Yi Liu
 <yi.l.liu@intel.com>,	Christian Brauner <brauner@kernel.org>,	Ankit Agrawal
 <ankita@nvidia.com>,	Eric Auger <eric.auger@redhat.com>,	Reinette Chatre
 <reinette.chatre@intel.com>,	Ye Bin <yebin10@huawei.com>,	Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,	Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>,	Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>,	Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,	Rui Salvaterra <rsalvaterra@gmail.com>,
	linux-ide@vger.kernel.org,	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,	linux-sound@vger.kernel.org
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of pcim_intx()
In-Reply-To: <20241015185124.64726-3-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
	<20241015185124.64726-3-pstanner@redhat.com>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=US-ASCII
X-Spam-Level: 
X-Spamd-Result: default: False [-3.30 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	R_RATELIMIT(0.00)[to_ip_from(RL41ih3fejwepcmbj4wj583m3u)];
	DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	RCPT_COUNT_GT_50(0.00)[66];
	FROM_HAS_DN(0.00)[];
	FREEMAIL_CC(0.00)[kernel.org,omp.ru,amd.com,arndb.de,linuxfoundation.org,yahoo.com,marvell.com,davemloft.net,google.com,redhat.com,quantenna.com,gmail.com,kudzu.us,intel.com,suse.com,epam.com,perex.cz,iscas.ac.cn,realtek.com,zeniv.linux.org.uk,debian.org,linutronix.de,linux.intel.com,ziepe.ca,nvidia.com,huawei.com,invisiblethingslab.com,linux.dev,vger.kernel.org,lists.linux.dev,lists.xenproject.org];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_TLS_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:email,suse.de:mid,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -3.30
X-Spam-Flag: NO

On Tue, 15 Oct 2024 20:51:12 +0200,
Philipp Stanner wrote:
> 
> pci_intx() is a hybrid function which can sometimes be managed through
> devres. To remove this hybrid nature from pci_intx(), it is necessary to
> port users to either an always-managed or a never-managed version.
> 
> hda_intel enables its PCI-Device with pcim_enable_device(). Thus, it needs
> the always-managed version.
> 
> Replace pci_intx() with pcim_intx().
> 
> Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> ---
>  sound/pci/hda/hda_intel.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> index b4540c5cd2a6..b44ca7b6e54f 100644
> --- a/sound/pci/hda/hda_intel.c
> +++ b/sound/pci/hda/hda_intel.c
> @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx *chip, int do_disconnect)
>  	}
>  	bus->irq = chip->pci->irq;
>  	chip->card->sync_irq = bus->irq;
> -	pci_intx(chip->pci, !chip->msi);
> +	pcim_intx(chip->pci, !chip->msi);
>  	return 0;
>  }
>  

Hm, it's OK-ish to do this as it's practically same as what pci_intx()
currently does.  But, the current code can be a bit inconsistent about
the original intx value.  pcim_intx() always stores !enable to
res->orig_intx unconditionally, and it means that the orig_intx value
gets overridden at each time pcim_intx() gets called.

Meanwhile, HD-audio driver does release and re-acquire the interrupt
after disabling MSI when something goes wrong, and pci_intx() call
above is a part of that procedure.  So, it can rewrite the
res->orig_intx to another value by retry without MSI.  And after the
driver removal, it'll lead to another state.

In anyway, as it doesn't change the current behavior, feel free to
take my ack for now:

Acked-by: Takashi Iwai <tiwai@suse.de>


thanks,

Takashi


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 14:12:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 14:12:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824217.1238308 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Fd3-0001Xd-2L; Tue, 22 Oct 2024 14:12:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824217.1238308; Tue, 22 Oct 2024 14:12: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 1t3Fd2-0001XW-Vs; Tue, 22 Oct 2024 14:12:56 +0000
Received: by outflank-mailman (input) for mailman id 824217;
 Tue, 22 Oct 2024 14:12: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=Ufxd=RS=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t3Fd1-0001XQ-Oi
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 14:12:55 +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 bb06ed9a-907f-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 16:12:54 +0200 (CEST)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-37d4c482844so3865631f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 07:12:54 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-37ee0b9bcdesm6711471f8f.106.2024.10.22.07.12.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 07:12:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb06ed9a-907f-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729606374; x=1730211174; 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=VmhDB1rd+nQ69Tujh3EA5GQpXHWD9UZgjcUr5Y7UFoc=;
        b=nCIcT/vrdTxxaAQBg6Vo8X3Lim4qnOmcnxwKdRjagjkAan91/t/MBNVzlOXibzQznZ
         FS+mlRRoRulmWSx1TN/otO7xdPFjRSmZk2mCLZeh/H+ke9Rh4pzoIUs4yPb9WbDYmEpe
         /cxkVJRFawllUjv7lt7AY5PEAYn2o3OTkEDOg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729606374; x=1730211174;
        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=VmhDB1rd+nQ69Tujh3EA5GQpXHWD9UZgjcUr5Y7UFoc=;
        b=wYTCWgWf9hu8j5v06NZrY2ZVIgJ4keXnHudNkouUMWrPzxyUdUYcMrRoKrsJ58PzIk
         AJvZ6qE1WR3PYPZ6VshkdD6gL2L/gJ+0CrhxGUw+wyGzGzCGDtdjxCd6fs2byek06Zhw
         h3NWKaQPQhtvh/7gvYwPGveXMLe1zitAutVOhkuBMTkYjYmvL/ZOv1qP/KeXDs+DZNHi
         Xn0uXTlJOOg2QCzt56AVUMucSF50rYhdYBbQvcGXZ04ew7+WOuVH82vKdW9a+oXFM25q
         PjImRwkeRy9OciFh8bsUjsWMPEXDjNFwsPYEom9LZf9j/rvJ6b0/LHRCPEvisbt5JIQt
         +6xQ==
X-Gm-Message-State: AOJu0Yy/6KRSY6MbjLx3kfZAWw15PuP8g8h3/7la+bE4LaRnhaA3QO9Z
	rNs4NaZ9oHSoPzarVP4qoHSUtuPt2rgzm8ia84gu0TOPaerQ2AL+oX7cqQqUg8A2SfkY7EWgNXq
	G
X-Google-Smtp-Source: AGHT+IGnnj3M9teaY0emEnWAe0gyajA3/L+Jtf5pe8exTvSOKTEBhj1nELqvJ/EW+ZUmZF8yN9Sv3g==
X-Received: by 2002:a5d:6304:0:b0:37c:d558:a931 with SMTP id ffacd0b85a97d-37eb489482emr9950572f8f.31.1729606373935;
        Tue, 22 Oct 2024 07:12:53 -0700 (PDT)
Date: Tue, 22 Oct 2024 16:12:52 +0200
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH] x86/boot: Fix PVH boot during boot_info transition period
Message-ID: <Zxey5Gap8p8SiH9w@macbook.local>
References: <20241022124114.84498-1-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: <20241022124114.84498-1-andrew.cooper3@citrix.com>

On Tue, Oct 22, 2024 at 01:41:14PM +0100, Andrew Cooper wrote:
> multiboot_fill_boot_info() taking the physical address of the multiboot_info
> structure leads to a subtle use-after-free on the PVH path, with rather less
> subtle fallout.
> 
> The pointers used by __start_xen(), mbi and mod, are either:
> 
>  - MB:  Directmap pointers into the trampoline, or
>  - PVH: Xen pointers into .initdata, or
>  - EFI: Directmap pointers into Xen.
> 
> Critically, these either remain valid across move_xen() (MB, PVH), or rely on
> move_xen() being inhibited (EFI).
> 
> The conversion to multiboot_fill_boot_info(), taking only mbi_p, makes the PVH
> path use directmap pointers into Xen, as well as move_xen() which invalidates
> said pointers.
> 
> Switch multiboot_fill_boot_info() to consume the same virtual addresses that
> __start_xen() currently uses.  This keeps all the pointers valid for the
> duration of __start_xen(), for all boot protocols.
> 
> It can be safely untangled once multiboot_fill_boot_info() takes a full copy
> the multiboot info data, and __start_xen() has been moved over to using the
> new boot_info consistently.
> 
> Right now, bi->{loader,cmdline,mods} are problematic.  Nothing uses
> bi->mods[], and nothing uses bi->cmdline after move_xen().
> 
> bi->loader is used after move_xen(), although only for cmdline_cook() of
> dom0's cmdline, where it happens to be benign because PVH boot skips the
> inspection of the bootloader name.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

One nit below about dropping a const keyword.

> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
> This is more proof that Xen only boots by accident.  It certainly isn't by any
> kind of design.
> 
> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1506947472
> including the pending work to add a PVShim test
> 
> This is the least-invasive fix given the rest of the Hyperlaunch series.
> 
> A different option would to introduce EFI and PVH forms of
> multiboot_fill_boot_info(), but that would involve juggling even more moving
> parts during the transition period.
> ---
>  xen/arch/x86/setup.c | 25 ++++++++++++++++++++-----
>  1 file changed, 20 insertions(+), 5 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index db670258d650..e43b56d4e80f 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -283,11 +283,10 @@ struct boot_info __initdata xen_boot_info = {
>      .cmdline = "",
>  };
>  
> -static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
> +static struct boot_info *__init multiboot_fill_boot_info(
> +    multiboot_info_t *mbi, module_t *mods)

Shouldn't mbi keep the const keyword?  Given there are no changes on
how it's used in multiboot_fill_boot_info().

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 14:21:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 14:21:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824225.1238318 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Fkn-0003MI-Pk; Tue, 22 Oct 2024 14:20:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824225.1238318; Tue, 22 Oct 2024 14: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 1t3Fkn-0003MB-NC; Tue, 22 Oct 2024 14:20:57 +0000
Received: by outflank-mailman (input) for mailman id 824225;
 Tue, 22 Oct 2024 14:20: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Fkl-0003Ly-Th
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 14:20:55 +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 d8f86901-9080-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 16:20:54 +0200 (CEST)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2fb561f273eso56793961fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 07:20:54 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c726besm3203491a12.93.2024.10.22.07.20.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 22 Oct 2024 07:20:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8f86901-9080-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729606854; x=1730211654; 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=3f3pXqNyI+bwOtKt5dUl7KO7hRUU1R9j1/G49d53U6A=;
        b=vvKdhj//oqzVgvxLSe2sfriMMQ6G3WIXBvgQVpijpHyeZGNN18TN1iDiER1fwpQR+Q
         2zNbgEPy0HWg3/83hQ5+aShsFd4q5fcGD40RiIVGxLDTgXFhfnPoTWzrGu61P4f+qPFc
         1b6kx5A4Y3Y3lSzPmXnQ80Y/nEI3t/jvyK0Z8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729606854; x=1730211654;
        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=3f3pXqNyI+bwOtKt5dUl7KO7hRUU1R9j1/G49d53U6A=;
        b=dl7K2Fa/l0Vj7vhIf57T4eeEQ7RCZqMo+UNSlfRN2nojByYGL7NCjHrbbgT1pOUGqX
         JOMMWsNKewj/0/hA4BNGpmxO9ml44T72Nain7EYPBybLWF3QdBZVrF31hj6hCqbqhpax
         lVJAhpP1d51RqwF6uTCzW3OsTef++0cwHx98QdeUEAo5V6C5xgnTGBtEzCgUi7cjLsM7
         gxwOAEmzfhCYEi+73reuynwG4glR+M3zNoYAckBErgvAjrrNjFEMNJp5rcx9AVcHOv+A
         xrHAxRZhpkEnNCOemV8COX7YjxLtenDnotH+qzNkY60+P82EDyUr/FxZJUfqbaTSZt7I
         mSRg==
X-Gm-Message-State: AOJu0YyxWv/oHIkgesH6728ufcSF9r0rP3QGOv2+9Z2DGFy3JVaA3f3J
	S5ylEZPF1+3aU022Uq+5jy0daQEWu2WLfbRxNV/vhRK58xnX8Cu40HOhxag5vRg=
X-Google-Smtp-Source: AGHT+IEvOl91P9RM15RtFys8ueGxh/rArnfJRHUdg0YzGtzn3WMYarRUG4gApY2nf2z8vC4Av45GJQ==
X-Received: by 2002:a2e:1309:0:b0:2f3:b71a:1e91 with SMTP id 38308e7fff4ca-2fc90541af3mr17989571fa.17.1729606853595;
        Tue, 22 Oct 2024 07:20:53 -0700 (PDT)
Message-ID: <0273bc68-855d-4833-8c2f-ad9ff845c92b@citrix.com>
Date: Tue, 22 Oct 2024 15:20:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Fix PVH boot during boot_info transition period
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>
References: <20241022124114.84498-1-andrew.cooper3@citrix.com>
 <Zxey5Gap8p8SiH9w@macbook.local>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zxey5Gap8p8SiH9w@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 22/10/2024 3:12 pm, Roger Pau Monné wrote:
> On Tue, Oct 22, 2024 at 01:41:14PM +0100, Andrew Cooper wrote:
>> multiboot_fill_boot_info() taking the physical address of the multiboot_info
>> structure leads to a subtle use-after-free on the PVH path, with rather less
>> subtle fallout.
>>
>> The pointers used by __start_xen(), mbi and mod, are either:
>>
>>  - MB:  Directmap pointers into the trampoline, or
>>  - PVH: Xen pointers into .initdata, or
>>  - EFI: Directmap pointers into Xen.
>>
>> Critically, these either remain valid across move_xen() (MB, PVH), or rely on
>> move_xen() being inhibited (EFI).
>>
>> The conversion to multiboot_fill_boot_info(), taking only mbi_p, makes the PVH
>> path use directmap pointers into Xen, as well as move_xen() which invalidates
>> said pointers.
>>
>> Switch multiboot_fill_boot_info() to consume the same virtual addresses that
>> __start_xen() currently uses.  This keeps all the pointers valid for the
>> duration of __start_xen(), for all boot protocols.
>>
>> It can be safely untangled once multiboot_fill_boot_info() takes a full copy
>> the multiboot info data, and __start_xen() has been moved over to using the
>> new boot_info consistently.
>>
>> Right now, bi->{loader,cmdline,mods} are problematic.  Nothing uses
>> bi->mods[], and nothing uses bi->cmdline after move_xen().
>>
>> bi->loader is used after move_xen(), although only for cmdline_cook() of
>> dom0's cmdline, where it happens to be benign because PVH boot skips the
>> inspection of the bootloader name.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks.

>
> One nit below about dropping a const keyword.
>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
>>
>> This is more proof that Xen only boots by accident.  It certainly isn't by any
>> kind of design.
>>
>> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1506947472
>> including the pending work to add a PVShim test
>>
>> This is the least-invasive fix given the rest of the Hyperlaunch series.
>>
>> A different option would to introduce EFI and PVH forms of
>> multiboot_fill_boot_info(), but that would involve juggling even more moving
>> parts during the transition period.
>> ---
>>  xen/arch/x86/setup.c | 25 ++++++++++++++++++++-----
>>  1 file changed, 20 insertions(+), 5 deletions(-)
>>
>> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
>> index db670258d650..e43b56d4e80f 100644
>> --- a/xen/arch/x86/setup.c
>> +++ b/xen/arch/x86/setup.c
>> @@ -283,11 +283,10 @@ struct boot_info __initdata xen_boot_info = {
>>      .cmdline = "",
>>  };
>>  
>> -static struct boot_info *__init multiboot_fill_boot_info(unsigned long mbi_p)
>> +static struct boot_info *__init multiboot_fill_boot_info(
>> +    multiboot_info_t *mbi, module_t *mods)
> Shouldn't mbi keep the const keyword?  Given there are no changes on
> how it's used in multiboot_fill_boot_info().

Fine.

FWIW,
https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1507153249
is previously-crashing consider_modules() change, with this fix in
place, shown now to be functioning.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 15:49:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 15:49:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824252.1238352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3H8Y-0005w4-44; Tue, 22 Oct 2024 15:49:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824252.1238352; Tue, 22 Oct 2024 15: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 1t3H8Y-0005vx-1P; Tue, 22 Oct 2024 15:49:34 +0000
Received: by outflank-mailman (input) for mailman id 824252;
 Tue, 22 Oct 2024 15:49: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3H8W-0005vJ-T1
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 15:49:32 +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 3a08cb69-908d-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 17:49:31 +0200 (CEST)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2fb3da341c9so57694231fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 08:49:31 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b9d1sm3429967a12.70.2024.10.22.08.49.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 22 Oct 2024 08:49:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3a08cb69-908d-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729612170; x=1730216970; 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=Q8xwV/lCQyVvY1eX3W7OpM/Z2U4rcNq/T/m5KTdj6Ns=;
        b=W5QvZoK1G4Zns/XsSSvbHQUmM/YGrTjB86yPMq22XwU+4qeEEib+LsHRyVFTg2SBvj
         H/XM1e5al3klpX8E1IpbN3YMA3iB+pJtSV4qPgWWD9q0elFFch9iwhz3SPfeMlR6vXi0
         fDvRBBhcbZZQHw6TEt3wUlplATmJRoSgWxaBM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729612170; x=1730216970;
        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=Q8xwV/lCQyVvY1eX3W7OpM/Z2U4rcNq/T/m5KTdj6Ns=;
        b=nZ56yLDfLREzMk82OpFGc61M/ULJDticxNJIE6B3rd/9ErTvVtvhtXKkg9KIsNKnPi
         FlTppAAczOPJyeeULhZOvj3zriKru176boDG3wVDduYvYiivYbD7Tac19do3AqzUqhKN
         cfFJs3N0N5z9Iuvlp1FA/q9WOgHZwoxyDNZIjKRwhPtaImM2E8AirQBH98+IAzMm9B5A
         GN5b1Sc+zKxxLZ+l8KWpYBLczjYyZl9B2hRKyM2EFPrk41XE+v22wKaFOD+/pBRgG3j1
         OxlyUuOIQlrxNPe3RvW83T26XgvSjvAqgehtW97RKBnGCd1GWnCu3x9DgS3lEm3nYaUQ
         O/tw==
X-Forwarded-Encrypted: i=1; AJvYcCUWVzuCZdkar0y9ydW9FQeuWRsMrX7hVl6aAAviYxCl0Dt5u2RN1kIeJPPGhh02rvRFZECgzG+8jrw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywr92ZSJFaTTFzaybcaQVWTYbVh87psIP0vOlvCHEeSfVNK6q6U
	APxEz1cMqB32C0KcOYZq49Fk796lvKNhu0O++qZHSCoygJaR2Z6vJN5T/6NxGulByZDB7sB9m9Q
	T
X-Google-Smtp-Source: AGHT+IF876j4I0qfBvE4Fw8sc7CKnmO0qce6usOPkHPu+lIpUt53f62Q09CRwEfB3GbX3MLMBk6UAg==
X-Received: by 2002:a2e:4611:0:b0:2f7:5f6e:d894 with SMTP id 38308e7fff4ca-2fb82eb0744mr62372241fa.25.1729612170499;
        Tue, 22 Oct 2024 08:49:30 -0700 (PDT)
Message-ID: <283a0dec-bda9-4668-a11c-0480cc75c390@citrix.com>
Date: Tue, 22 Oct 2024 16:49:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v3] x86/emul: address violations of MISRA C Rule 16.3
To: Federico Serafini <federico.serafini@bugseng.com>,
 xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <63d51d39995c8dbab6f02d74982287a238ee5353.1729500464.git.federico.serafini@bugseng.com>
Content-Language: en-GB
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: <63d51d39995c8dbab6f02d74982287a238ee5353.1729500464.git.federico.serafini@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 21/10/2024 10:55 am, Federico Serafini wrote:
> Add missing break statements to address violations of MISRA C:2012
> Rule 16.3 (An unconditional `break' statement shall terminate
> every switch-clause).
>
> Make explicit unreachability of a program point with
> ASSERT_UNREACHABLE() and add defensive code.
>
> No functional change.
>
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 16:25:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 16:25:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824263.1238366 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Hgy-0002xd-VL; Tue, 22 Oct 2024 16:25:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824263.1238366; Tue, 22 Oct 2024 16: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 1t3Hgy-0002xW-Rh; Tue, 22 Oct 2024 16:25:08 +0000
Received: by outflank-mailman (input) for mailman id 824263;
 Tue, 22 Oct 2024 16:25: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Hgx-0002xQ-56
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 16:25:07 +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 31ada791-9092-11ef-99a3-01e77a169b0f;
 Tue, 22 Oct 2024 18:25:04 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso867056566b.2
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 09:25:04 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912f6520sm361919966b.73.2024.10.22.09.25.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 09:25:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 31ada791-9092-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729614303; x=1730219103; 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=c2GqfTiYEITsKI2G8oNRKcJ3hgTFn5qErcVqjd9xvQU=;
        b=flGwP1EwYypKwcQwRSyNgDey+HM9DK03BKkW7lD3GpbMoeSTXnW2wD4gh9ZffbuaoF
         u0pA/FdmikAEf+eXUG+laMjo0sLwWWV2CISQ1JBAaS3XSORybS9PVlItBiJp7pKBpVO/
         SsB/d93MqmuUVDFo3IgAHg4mEY5a2C6VpQ/rM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729614303; x=1730219103;
        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=c2GqfTiYEITsKI2G8oNRKcJ3hgTFn5qErcVqjd9xvQU=;
        b=FJmJhD4YSE/UtoGp+niZqp/DqAVfxe3lbKyxKH0/ToL04XuktKlqyVoxX+1t3q8q6E
         nnobjBjSl1r6JTTw33SwyWqd/3aeRuA/yEp9FiYJWzre//HioSarxjIBw3fh8sBhl4IV
         VZuA67Bv58Ly5vwDgwiBkAZvW4NLc1vWcxkjy9KEnbogsNduH3WCMHRYRQMt5r4VKDCF
         zZA8m6yAxSGY0KoERVRAyIXxK6p9UcvfbtiR2Qp7BSo/W7PJfKbjQtgjRZTGrt0E5SGA
         W51nglS3OrHbkAgMgqOrMYBWcplO6g1Nv0uo8Nf1LtZfkZ8Fs1u2K7MRCCoQIuClnBRI
         Ihcw==
X-Gm-Message-State: AOJu0YwuFyEKUAQa96W3JGz57KaUyqVj07UTsPxssCyminF3v/Hhhs9Z
	nKTQPz5ZMTUcirrol911MS7LD41xM7lqG4B9+hZmvRO5Rn78DsCgxP2jA3XlHBeSBAsYEnuyxGm
	H
X-Google-Smtp-Source: AGHT+IHksscOUJc5PefEfajL9dLUsn1H1OiC7NmneMuYfRFsy/NQCBLMFTCiHfF4aY/m7e1HoVnc1A==
X-Received: by 2002:a17:907:6092:b0:a9a:3e33:8d9e with SMTP id a640c23a62f3a-a9aace72be3mr316261966b.28.1729614303488;
        Tue, 22 Oct 2024 09:25:03 -0700 (PDT)
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>,
	Anthony PERARD <anthony.perard@vates.tech>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH] tools/pvhsim: Inherit the tools debug= setting
Date: Tue, 22 Oct 2024 17:25:00 +0100
Message-Id: <20241022162500.121276-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Right now, builds of pvshim are non-debug, because of pvshim_defconfig.
However, this means that Gitlab CI testing is less effective than it wants to
be.

Include Rules.mk, and feed the tools-wide debug= setting.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

I don't particualrly like this, because while it ends up getting the
appropriate choice of CONFIG_DEBUG, all other symbols with a default dependent
on CONFIG_DEBUG get their non-debug form.
---
 tools/firmware/xen-dir/Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tools/firmware/xen-dir/Makefile b/tools/firmware/xen-dir/Makefile
index 6f5e208ab413..e19916f76722 100644
--- a/tools/firmware/xen-dir/Makefile
+++ b/tools/firmware/xen-dir/Makefile
@@ -1,4 +1,5 @@
 XEN_ROOT = $(CURDIR)/../../..
+include $(XEN_ROOT)/tools/Rules.mk
 
 all: xen-shim
 
@@ -75,6 +76,8 @@ $(D): linkfarm.stamp
 
 $(D)/xen/.config: $(D)
 	$(MAKE) -C $(@D) KBUILD_DEFCONFIG=pvshim_defconfig defconfig
+	echo "CONFIG_DEBUG=$(if $(debug),y,n)" >> $@
+	$(MAKE) -C $(@D) olddefconfig
 
 xen-shim: $(D)/xen/.config
 	$(MAKE) -C $(<D) build
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 16:31:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 16:31:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824270.1238377 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3HnR-0004Yx-M5; Tue, 22 Oct 2024 16:31:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824270.1238377; Tue, 22 Oct 2024 16:31: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 1t3HnR-0004Yq-Hs; Tue, 22 Oct 2024 16:31:49 +0000
Received: by outflank-mailman (input) for mailman id 824270;
 Tue, 22 Oct 2024 16:31: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=tTvi=RS=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t3HnP-0004Yk-Qn
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 16:31:48 +0000
Received: from EUR03-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur03on20613.outbound.protection.outlook.com
 [2a01:111:f403:260c::613])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 20f60dc5-9093-11ef-a0be-8be0dac302b0;
 Tue, 22 Oct 2024 18:31:46 +0200 (CEST)
Received: from AS8PR04CA0190.eurprd04.prod.outlook.com (2603:10a6:20b:2f3::15)
 by DU2PR08MB10067.eurprd08.prod.outlook.com (2603:10a6:10:493::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.27; Tue, 22 Oct
 2024 16:31:42 +0000
Received: from AM4PEPF00025F96.EURPRD83.prod.outlook.com
 (2603:10a6:20b:2f3:cafe::f) by AS8PR04CA0190.outlook.office365.com
 (2603:10a6:20b:2f3::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16 via Frontend
 Transport; Tue, 22 Oct 2024 16:31:42 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00025F96.mail.protection.outlook.com (10.167.16.5) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.2 via
 Frontend Transport; Tue, 22 Oct 2024 16:31:41 +0000
Received: ("Tessian outbound 5c9bb61b4476:v473");
 Tue, 22 Oct 2024 16:31:41 +0000
Received: from L3f83c6971125.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 6DEA3B79-F7B3-4B3E-A151-1614BB492108.1; 
 Tue, 22 Oct 2024 16:31:35 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L3f83c6971125.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 22 Oct 2024 16:31:35 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by PAVPR08MB9236.eurprd08.prod.outlook.com (2603:10a6:102:307::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.26; Tue, 22 Oct
 2024 16:31:31 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8069.027; Tue, 22 Oct 2024
 16:31: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: 20f60dc5-9093-11ef-a0be-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=LdoxShfHIVTQbCBaj6quzf3DsqjgFNaP9lOks0FKpRPl5FJMcVdv/vUAjyxNIZM+zSnlY8C8aefiDlgidrbue+ixTZJk5X4/V1EP1+Tw8pw2sqnwi7HSggugMv7UPdmK4gkjXyRPLETljfEc7z0FFfZx+mNQyRTmg0yNn7wiu9cB0ZiQm6p0dmbfz1mufG9DtCNE3MIPQ2SRvei38r4YDGRUTk8JfxjzTOe3ptGIJ9k3JnZDbJ99XLeXPcfi7QFWUwh2ggN4DKnT2xI4quxnlV/tHGRGG9RWJXSWM/SctH+8vguv0Qkt3Jk321rQIFjLWSVoc2npPXJ/8dX7qlGcCw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=+iogjHvKULRhpoZnqEEqrhODqSBOgmiczakkfqa6Hjw=;
 b=ifMpu8iYXoyscivp4B9s3ruJsw7aWuR+4iTFrq3pi9Fd6Vbiy0JaI6k963PPM6x3ry0o01PQ7oOCf1Tc1zYEjoHJy7SLttH11723KXE6A2su6FY9gw3mbI4YEshXvbNltmqENd9eH00pKLsAsx3UJMDNvuo8xo2ve0dIxinQAHmQ1ShHNRB1C0Gy3zi6jKRn0MFHJtI9hsKDEALxne3W9ESgo6HIfc3oo6bkSTtNqrlZ65+4AVcQMAW/zUte9Soe9CbNCf4W24D3FHu9ijIx8mkKm+GrQFvQDerOGLVpvpdLfSwIJJBPkKAya0dJqFT9PeLpqEReojOYj5I73LotUg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+iogjHvKULRhpoZnqEEqrhODqSBOgmiczakkfqa6Hjw=;
 b=qv9ckgZ8oxtlv19RtxLCmnWDnw8e762od1XwTLwsqNKhKliz/cVkso6ZzFci5skEqhg4R7Kz3wh2n7TIwFOdZQyqArcDTIUTd5EhEl7+ZRvbGjWjyoO9EsyKfDJS+ApJ1HTwmfPXxv4nh9fAVTI/tdTeFUR3/yBCpTxBdepC5ZQ=
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=arm.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: fa3042f2b3df1482
X-TessianGatewayMetadata: 9jpBFulyBL56JYZAYck/+LLwKfNL9SG1VSr58BFKfby/jpW870r51PZFARMopq624+fDZVR8Zyn+VDUWN/pAp+rnp6VVR7NEDNu59Tl5PKu8uAvcDTOAHHT9WOJ6NexoSYlH796I2ocfCbzUKXVc0mLGiAAT/uBJa2ng4ztmdjI=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=YHgGAeyqubyMQDQ1VPfECAeZcXsffk6/XHzfJbz20FLXDX7WyKjocXMMVM3LE6bmcxtQVH/kfl36PJcOQH1QOVrlduMlIiHVqahOkhdrYgPOe4GJaDoZqQl+bWdjmtHH3A7VLtF1EopLpsFX1/HbXh4YU2x1tSbc3fbxhE3FTj1KrQeot4ULF3PMa0x1AVcjUMAGr13Ds0KpjzOdhj63Y9gbb46520Pml2fHfE/BZIam3w41cowyGg0ISgCCbodzd0Ud000u2UoeQpxIYHf+rJik5dYtHqbyC7f+su/84vS/+IG0ge3doS5qzo8GdnRsh1JUYyxVg1JidoEB35u0LA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=+iogjHvKULRhpoZnqEEqrhODqSBOgmiczakkfqa6Hjw=;
 b=TxQQwpEBFfqjkqO7HFNC3VOxlJmCKJk5X3OSS7F4QxPoRMnqSVeH2RZucP7dloQ9Nk+CSkMAcT5hu4zFCW2mI53bHXA52fVEmTSgoHmgFlSPQ0VhEGVROtSNCjOBevu2X8YPFDIDnC/U4hIusIbPg8jEaJctBH5JKVpG6bkd5JpOyp1h6HZJZ1ht8fKCmqWANVX3ACxSPofA1pUQoCmBxxoh/K+z429caTYvYWVpla7ZXZ2vwKEVI22QTubnd8UZjZlyH2ZmCcFsa1rPR0X4SjagkJt7SiwqVlwtj87PAyWaywaHVhGDi1c/UY6t3tpD79AwGLjyl1KQE/IWwbZ0zg==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+iogjHvKULRhpoZnqEEqrhODqSBOgmiczakkfqa6Hjw=;
 b=qv9ckgZ8oxtlv19RtxLCmnWDnw8e762od1XwTLwsqNKhKliz/cVkso6ZzFci5skEqhg4R7Kz3wh2n7TIwFOdZQyqArcDTIUTd5EhEl7+ZRvbGjWjyoO9EsyKfDJS+ApJ1HTwmfPXxv4nh9fAVTI/tdTeFUR3/yBCpTxBdepC5ZQ=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Julien Grall <julien@xen.org>
CC: Ayan Kumar Halder <ayankuma@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, "xen-devel@lists.xenproject.org"
	<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>
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Topic: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Index:
 AQHbGx2Ge9N55hTx/U2iD9lYiTVQprKNIysAgARC6gCAAA8agIAAAOKAgAEgqoCAAAHOgIAAAmiAgAA3SQCAADcxAA==
Date: Tue, 22 Oct 2024 16:31:31 +0000
Message-ID: <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
In-Reply-To: <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@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.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|PAVPR08MB9236:EE_|AM4PEPF00025F96:EE_|DU2PR08MB10067:EE_
X-MS-Office365-Filtering-Correlation-Id: d290064e-74c0-4850-0d15-08dcf2b70293
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?dkVVcjlCZ0pWOWRVdFdtYklGQitENS9XZjcxdGxONXJ0WXFINHRHdlYzTzAr?=
 =?utf-8?B?RUo1bnZpUUdUS0V4ZDdZZlZmdGY3c2RxZHlEK2pjTHEreGNCRmFRRmhlTGlV?=
 =?utf-8?B?YWU5bWt5bHVnNEZ0NEVWam4yeW05eU4zUU9NU3YwMm5LeGdOUnBxL3lrZk1T?=
 =?utf-8?B?aHk1aklrS2l4NUhwL0d1R21TU2NGVkhraCtGQ1pkYjJkckJIUi9DdjRna3J1?=
 =?utf-8?B?Q3A4RWpvZWxIc3QzVnVOYXVVR3V5M2lRL3JqZ0FyM1RIRCtTQVBhZlFSYkNa?=
 =?utf-8?B?cFAzQ0xicCszS29aN3pReStodDVEazV0WnNRR0NkcXpMZ1ZyR3hDYkpidHBQ?=
 =?utf-8?B?RHVhbnEwTC83cjlqMTJOWExoVjNpVzlBenVCRU5LeWNuWlgyTWRFUGZ5Nitx?=
 =?utf-8?B?L3lmcklJYk4wNWJVdWdpc2tRTnJ3ZHY5bnVmZUhWLzdLd1ZCUWdadDR6OVZr?=
 =?utf-8?B?NmtGcG9rRkRYMlBzVFk2T0JIcjdVSnlBUVIwVnA1disvTm1SWGYwTEY2Y3M4?=
 =?utf-8?B?MUtPdDk2Mk5iV21jV05Ob2xlYXpUZE1DZ2JhTlJ4aTVCREhYTDN6TTgwNHJQ?=
 =?utf-8?B?bEZpdjQ1ODVUd3M1RTZhSjA2dnBCKzExcHFJYStOQUUxK3dlWHBFaUlUM3RX?=
 =?utf-8?B?aUM2M2FRWXM3NW9vNVpDUHBSc0FVQzlpc0dDeFdJMUJ4bUk0V29DR1I5TkFV?=
 =?utf-8?B?elpFaHRVK29ISnBJZEVrTGFiTVlTM3RYdG5zMktiOWZlTXpNQU4rU294aVRw?=
 =?utf-8?B?bVNoRTIrOUQ5Z2RZa2lDLzZFbmNjZGFoRVFtcTZJalkzblk3QmxRQUdSeFhU?=
 =?utf-8?B?UHJ5QTZPVUExZDIvNHcxS1dWbUtBeEhqK3RocFlUak1OcGVVMmtHaHBzdUw4?=
 =?utf-8?B?R0h6Mkg3MllkMUV2L3dWL0pvTjhtUmgyeTAyaFoydjNLUkxQam4xbW9WYVNP?=
 =?utf-8?B?MFBEUUVpMU54S1U0bWsvMEFTQTM5L3hnWWgxN1J0UzFqQzhuMFNFWVNmK2JF?=
 =?utf-8?B?WncvdlVQVnZhR1JTYVd4SnZzWU5tSHlPMUN3eGh0QTB0QUhkVWE1VmZOSXFm?=
 =?utf-8?B?QnR2QUNtNXFldDJtYUw2VE1Tb21OdlRHbXEza2xXN3lCV2dNWXVRTWxUSlhw?=
 =?utf-8?B?QUNEUko1L3hkYkR2a1BnZFhPL3QrMUtjVlkzVEpGdVlnSElnWGxwcUl5Q3My?=
 =?utf-8?B?VXprbUhOeHFjb3ppZlJUQmdrdUx1S0VxVzh1VXNaaFF3RG1EemRKWlMzelJ0?=
 =?utf-8?B?NnhWWE5zbElCR3NjZG9JZU9wZEpicWhrVjd6TGJXcUUvdTBRbTlhUk1QSlNx?=
 =?utf-8?B?bi84RFVtUXdTZHZVWGNlM2RXZ3UzbWFOL201RTd3Qk5mNVl2WW1OaXA5ZWV3?=
 =?utf-8?B?K3VjRlVPUkxXaGpiVHJhSzVzRXBITmxSZjNXQjlFWGFIRDF5NlhkMWxub1Ry?=
 =?utf-8?B?UVRSYy9jRVErQVp1OWRTMXdOS0RFZ1o3TjZWVW9peHJCQ1V0Y0FFK3dleGtQ?=
 =?utf-8?B?L24yVlJjT1JmZ0EwbWpHSXFRTUVXSWNPZVVXa2hGSkZIUmlNUkV2NkUzdmY5?=
 =?utf-8?B?Qmk5b2diT0EzVHpHc3RJaWh6eGJPNzIxYTFpbFFwcDdma2xxV1F1d05YS3JQ?=
 =?utf-8?B?dUo3RnNYVHgrMWRHS2JLbkVzY3FmK3h4OTJMMXVOaTUwTE1OZjJOU2QwSkF2?=
 =?utf-8?B?QnpKSVJlUGlyaTFicWtFL2hURUpTdU5qT3Y3UDZIelBtVDJXMlp4a0pHL0Mx?=
 =?utf-8?B?RURIQWhxektjeS9ZbEdETXgzRzBTcDltcldSOWhJUkdCTWhSK0xRTHE0NjF5?=
 =?utf-8?Q?ukDytnhahvH5DKgZag+QFcBMk0GDtRk1X1Sc0=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <66DC63499E4A6544947D13A958272C5D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9236
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00025F96.EURPRD83.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	01b76001-137b-4be2-a78a-08dcf2b6fc7b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|1800799024|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VENqT0pHaHA1K2gxYTZvUXJUMXRlL0NocEtTaTVmdHlIZ3pxN0ZEbHByVEl3?=
 =?utf-8?B?NWJKVnI5M2ppQzJsVXdwNUxvWDdtNCtLazkvaGZmTUlPT3NEaFFpV1Y3L2xy?=
 =?utf-8?B?aHhmdmRqMHE3ajQ2Nncza2Y1a2JFanJJR285dmRZdllCYUhkTzl2V2JQRzhp?=
 =?utf-8?B?MTVVYUwwRjZyQlRBTHQ1OGpNTmtHR0dFb2QxRUJzUmpwc0t5WFBCdW1pVnRU?=
 =?utf-8?B?QzgvWi9MR1p5NVZ2R2Z2V2FmMU0yajBqb3pGMHA0bFVDK1dXcFdQeWxldjFz?=
 =?utf-8?B?YU5FUjQ3dnhXbTluY29tcGFObWJjVFpGdk9XYWlTL0tTTjV4OGw0eFJaTXpC?=
 =?utf-8?B?K1lFKzVRUDJ1eDJzWUIwR0U0VkNFSzVaR0ZHK2luR2xpalJjVitsMEhicjdl?=
 =?utf-8?B?dGRLdllKMzZNMGVBWDlqK3dmTTdqZU15b2krcWxuQ1ZMRGZzamxYVDBseE1n?=
 =?utf-8?B?dkRzOExYQ0I2ZEc1NEJydDg1bFgyeEhrRTZOb3JBdTQyV2lmNjZzR0d6bnZv?=
 =?utf-8?B?clZlaGcyRG9wN2svcTBETHpZQnovbGtlTlhIbUw3Uyt0QUxGNTZNRG5IYXhk?=
 =?utf-8?B?OFVjNW82Y0xiOGJONER2S0h2Y1hERGlOYzQ1VkhCNkpoS2tCUWhMQ2t0OU52?=
 =?utf-8?B?d3VLd29UdjNoT2dkK1lxQzJmNEdsVUZwQTVGUkZjY1lTYzJDSTlXQnBnaytw?=
 =?utf-8?B?M1hzc2g5T0t3cjVERVdXaFRHQ3FjZFRqWWxoRmhjRmZlTUhaQ2FUK1RHRXhB?=
 =?utf-8?B?R2JvVlFUc0RzRkFaOFE5WENnSHZmRkU5Smc2K0JGTTRuSlJEbHptc04rUVM2?=
 =?utf-8?B?OEM5SWtvWVRyeHpNQ094RkNTYVZFVmVWb3JnZjdBNk9qbFppSTRUemdUQmlD?=
 =?utf-8?B?bUo4RXFhMW1uNEZjdGI0cUFZNUxleHIzUjArM2Rqd1dWTFJzRy90UGtmYlhT?=
 =?utf-8?B?U01UZmk1djdRSFN5UlJzVktJc29uaEp4MmZGWkdud0lpcTlqbjYydnJyL2xG?=
 =?utf-8?B?N0pVRVN2N0ZpNjhjS0hsK1cydGtjK0diTjdrcFFiM2cvV1VTeHZlTG5KT1NT?=
 =?utf-8?B?SE03TWY0RmdrZXg3NHlobGpaaC9oekNFT1MvSXIwWFRHVHpSWGplYUM0MFRB?=
 =?utf-8?B?MTVaNitOc0NpL1BtVlcyNlNzK0NJUE44K01mT0I0NGpQRmFOR2F3ampYZVEv?=
 =?utf-8?B?anVLUjN4bVFpREZPL2hFV21zampNMURKNGFIRlhhZmZkbjJvSmt6R2E5TGNh?=
 =?utf-8?B?eE5rOWRmMHVVa0YyV2R5ZElvcEIzWkJWOFEvZzlPVzlPKzV0WlZNZDM1SGli?=
 =?utf-8?B?aEE2Q3ErTXA3M1RWU1NPa1VQWE5uUEFmaVBPb2JQS1dJdDQzT2J6a1JFdWZk?=
 =?utf-8?B?ajBXWlBLK0VSZml4RzdXalhVN0dzVTk1YjVGYnk3Y244ZkhZMVRhMEtWcW5D?=
 =?utf-8?B?d0tIWnFwQUJzanQ5WWZURVhYdStldC81REFDKzFvajdYZ2N5RTgzVVArMll2?=
 =?utf-8?B?RFhua3RFSk9TUUxZYkxVcGloZEZOK0w3MWJUUmNRNlIySUdYRlpqalVsdVBs?=
 =?utf-8?B?dlRZb1Boc3dkaExCaWhRa3RZZ1BLYzRXbUJMaGdHZWQyVk5JZW9peDUrUlR0?=
 =?utf-8?B?cWhNd05BWk1sRmh5ZTE1ZHpXbW9vd0VSTFpYcUZlNnBGWjVaQWlKQWozYXVW?=
 =?utf-8?B?ZnRMVGhUZ0FmTG5MU3hSb0JHbmVaQ1VBSXFpSXhUN2V4RVA0aFZPcDZSN29P?=
 =?utf-8?B?dlJJaGEzcm9SVUNqc2ZOcHFwYXo5dG00MFZUcHQ0MjR6dUhmTjJaOFBPL1Uy?=
 =?utf-8?B?alZ6N05ydkFDOGZBSHdXTFRWTlRRazdIMm1jWW1Jb2tBSk9SeXlQcGZaNGJZ?=
 =?utf-8?B?Wlc1VEVRY01iY2ZCQmY0dXQ2Q0tuSEtQTng0NmYvaWZwTEE9PQ==?=
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:(13230040)(82310400026)(35042699022)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Oct 2024 16:31:41.4958
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d290064e-74c0-4850-0d15-08dcf2b70293
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:
	AM4PEPF00025F96.EURPRD83.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB10067

SGkgSnVsaWVuLA0KDQo+IE9uIDIyIE9jdCAyMDI0LCBhdCAxNDoxMywgSnVsaWVuIEdyYWxsIDxq
dWxpZW5AeGVuLm9yZz4gd3JvdGU6DQo+IA0KPiANCj4gDQo+IE9uIDIyLzEwLzIwMjQgMTA6NTYs
IEx1Y2EgRmFuY2VsbHUgd3JvdGU6DQo+Pj4gT24gMjIgT2N0IDIwMjQsIGF0IDEwOjQ3LCBKdWxp
ZW4gR3JhbGwgPGp1bGllbkB4ZW4ub3JnPiB3cm90ZToNCj4+PiANCj4+PiBIaSBMdWNhLA0KPj4+
IA0KPj4+IE9uIDIyLzEwLzIwMjQgMTA6NDEsIEx1Y2EgRmFuY2VsbHUgd3JvdGU6DQo+Pj4+PiBP
biAyMSBPY3QgMjAyNCwgYXQgMTc6MjcsIEp1bGllbiBHcmFsbCA8anVsaWVuQHhlbi5vcmc+IHdy
b3RlOg0KPj4+PiAyKSBkc2IraXNiIGJhcnJpZXIgYWZ0ZXIgZW5hYmxpbmcgdGhlIE1QVSwgc2lu
Y2Ugd2UgYXJlIGVuYWJsaW5nIHRoZSBNUFUgYnV0IGFsc28gYmVjYXVzZSB3ZSBhcmUgZGlzYWJs
aW5nIHRoZSBiYWNrZ3JvdW5kIHJlZ2lvbg0KPj4+IA0KPj4+IFRCSCwgSSBkb24ndCB1bmRlcnN0
YW5kIHRoaXMgb25lLiBXaHkgd291bGQgZGlzYWJsaW5nIHRoZSBiYWNrZ3JvdW5kIHJlZ2lvbiBy
ZXF1aXJlcyBhIGRzYiArIGlzYj8gRG8geW91IGhhdmUgYW55IHBvaW50ZXIgaW4gdGhlIEFybXY4
LVIgc3BlY2lmaWNhdGlvbj8NCj4+IEnigJltIGFmcmFpZCB0aGlzIGlzIG9ubHkgbXkgZGVkdWN0
aW9uLCBTZWN0aW9uIEMxLjQgb2YgdGhlIEFybcKuIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFu
dWFsIFN1cHBsZW1lbnQgQXJtdjgsIGZvciBSLXByb2ZpbGUgQUFyY2g2NCBhcmNoaXRlY3R1cmUs
DQo+PiAoRERJIDA2MDBCLmEpIGV4cGxhaW5zIHdoYXQgaXMgdGhlIGJhY2tncm91bmQgcmVnaW9u
LCBpdCBzYXlzIGl0IGltcGxlbWVudHMgcGh5c2ljYWwgYWRkcmVzcyByYW5nZShzKSwgc28gd2hl
biB3ZSBkaXNhYmxlIGl0LCB3ZSB3b3VsZCBsaWtlIGFueSBkYXRhDQo+PiBhY2Nlc3MgdG8gY29t
cGxldGUgYmVmb3JlIGNoYW5naW5nIHRoaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCByYW5nZSB3
aXRoIHRoZSByYW5nZXMgZGVmaW5lZCBieSB1cyB0d2Vha2luZyBQUkJBUi9QUkxBUiwgYW0gSSBy
aWdodD8NCj4gDQo+IE15IG1lbnRhbCBtb2RlbCBmb3IgdGhlIG9yZGVyaW5nIGlzIHNpbWlsYXIg
dG8gYSBUTEIgZmx1c2ggd2hpY2ggaXM6DQo+ICAgMS8gZHNiIG5zaA0KPiAgIDIvIHRsYmkNCj4g
ICAzLyBkc2IgbnNoDQo+ICAgNC8gaXNiDQo+IA0KPiBFbmFibGluZyB0aGUgTVBVIGlzIGVmZmVj
dGl2ZWx5IDIuIEFGQUlLLCAxIGlzIG9ubHkgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGUgdXBkYXRl
IHRvIHRoZSBwYWdlLXRhYmxlcy4gQnV0IGl0IGlzIG5vdCBhIHJlcXVpcmVtZW50IHRvIGVuc3Vy
ZSBhbnkgZGF0YSBhY2Nlc3MgYXJlIGNvbXBsZXRlZCAob3RoZXJ3aXNlLCB3ZSB3b3VsZCBoYXZl
IG5lZWRlZCBhIGRzYiBzeSBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IGZhciB0aGUgYWNjZXNz
IGFyZSBnb2luZy4uLikuDQoNClVobeKApiBJ4oCZbSBub3Qgc3VyZSB3ZSBhcmUgb24gdGhlIHNh
bWUgcGFnZSwgcHJvYmFibHkgSSBleHBsYWluZWQgdGhhdCB3cm9uZ2x5LCBzbyBteSBwb2ludCBp
cyB0aGF0Og0KDQpGVU5DX0xPQ0FMKGVuYWJsZV9tcHUpDQogICAgbXJzICAgeDAsIFNDVExSX0VM
Mg0KICAgIGJpYyAgIHgwLCB4MCwgI1NDVExSX0VMeF9CUiAgICAgICAvKiBEaXNhYmxlIEJhY2tn
cm91bmQgcmVnaW9uICovDQogICAgb3JyICAgeDAsIHgwLCAjU0NUTFJfQXh4X0VMeF9NICAgIC8q
IEVuYWJsZSBNUFUgKi8NCiAgICBvcnIgICB4MCwgeDAsICNTQ1RMUl9BeHhfRUx4X0MgICAgLyog
RW5hYmxlIEQtY2FjaGUgKi8NCiAgICBvcnIgICB4MCwgeDAsICNTQ1RMUl9BeHhfRUx4X1dYTiAg
LyogRW5hYmxlIFdYTiAqLw0KICAgIGRzYiAgIHN5DQogICAgXuKAlCBUaGlzIGRhdGEgYmFycmll
ciBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgYW55IGRhdGEgYWNjZXNzLCB3aGljaCBn
dWFyYW50ZWVzIHRoYXQgYWxsIGV4cGxpY2l0IG1lbW9yeSBhY2Nlc3NlcyBiZWZvcmUNCiAgICAg
ICAgICAgdGhpcyBpbnN0cnVjdGlvbiBjb21wbGV0ZSwgc28gd2UgY2FuIHNhZmVseSB0dXJuIE9O
IHRoZSBNUFUgYW5kIGRpc2FibGUgdGhlIGJhY2tncm91bmQgcmVnaW9uLg0KICAgIG1zciAgIFND
VExSX0VMMiwgeDANCiAgICBpc2INCg0KICAgIHJldA0KRU5EKGVuYWJsZV9tcHUpDQoNCkkgZGlk
buKAmXQgdW5kZXJzdGFuZCBpZiB5b3VyIHBvaW50IGlzIHRoYXQgaXQgaXMgbm90IG5lZWRlZCBv
ciBpZiBpdCBpcyBuZWVkZWQgYnV0IGluIGEgZGlmZmVyZW50IGxvY2F0aW9uLg0KDQo+IA0KPiBD
aGVlcnMsDQo+IA0KPiAtLSANCj4gSnVsaWVuIEdyYWxsDQo+IA0KDQo=


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 20:03:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 20:03:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824285.1238386 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3L5V-0002o5-Hf; Tue, 22 Oct 2024 20:02:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824285.1238386; Tue, 22 Oct 2024 20: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 1t3L5V-0002ny-En; Tue, 22 Oct 2024 20:02:41 +0000
Received: by outflank-mailman (input) for mailman id 824285;
 Tue, 22 Oct 2024 20:02: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 1t3L5T-0002no-Nm; Tue, 22 Oct 2024 20:02: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 1t3L5T-0003Aq-Lx; Tue, 22 Oct 2024 20:02: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 1t3L5T-0003Ke-6o; Tue, 22 Oct 2024 20:02:39 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t3L5T-0003Xx-6M; Tue, 22 Oct 2024 20:02: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=daCZ+JKRF4xSL+fyZv7Z7xitI6V4ODRfnFCoCZXjBzk=; b=dbT/lbCmN4b/0LmYCnSR8ef6hv
	UHBlr9rEmTQF0Qi5EEQsyTLR7Jlhy2HTxg0GUlst1xIN12rSMgGwEillo5AfOqaBVxiilAWdAN8cS
	swNVbrhjrFlkxlHuUunc4Y1V0T64kgG1f465yPtDqcCfX1hn0zeaCh2eImiivyO4jKUk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188318-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 188318: 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=70262d59403b5cc94f076addee187f03e30a9687
X-Osstest-Versions-That:
    xen=49a068471d77820af5dac5ad062cde7129e3faae
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 22 Oct 2024 20:02:39 +0000

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

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                  70262d59403b5cc94f076addee187f03e30a9687
baseline version:
 xen                  49a068471d77820af5dac5ad062cde7129e3faae

Last test of basis   188314  2024-10-21 19:02:13 Z    1 days
Testing same since   188318  2024-10-22 16:03:53 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Federico Serafini <federico.serafini@bugseng.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
   49a068471d..70262d5940  70262d59403b5cc94f076addee187f03e30a9687 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Oct 22 22:40:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 22:40:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824296.1238396 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3NXo-0002Xc-0c; Tue, 22 Oct 2024 22:40:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824296.1238396; Tue, 22 Oct 2024 22:40: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 1t3NXn-0002Wk-Sx; Tue, 22 Oct 2024 22:40:03 +0000
Received: by outflank-mailman (input) for mailman id 824296;
 Tue, 22 Oct 2024 22:40: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3NXl-000277-Ol
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 22:40:01 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 919d20c4-90c6-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 00:39:59 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a68480164so605473966b.3
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 15:39:59 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a913076f5sm396704066b.95.2024.10.22.15.39.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 15:39:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 919d20c4-90c6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729636798; x=1730241598; 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=GXoDrdl3R364cbrAZXB/HWQMQodLF4ySjTDv8eTXJOE=;
        b=mwA2TLwks37I8Aj/GAhfSbga55L/oboEf6/G9de/nmRH9sHWwL6RRu8eoTBv1txiZ/
         CBOep70idLhF/xgPPfPbEjw91br00N+LTFjoZTI1qs9vsfLyLRcpA8qrhViwa1F4BilV
         E9Lg4Po7JSkgXdubw9dY+pzncTPnyiAnLrDkU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729636798; x=1730241598;
        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=GXoDrdl3R364cbrAZXB/HWQMQodLF4ySjTDv8eTXJOE=;
        b=S5rHX8mZa5FgEff44D+tJpZP3wkdbUkqJJT6llrFBaJTNIWCu7K/vLdBDZGBOEBhN7
         C2M5/w5msMvP755SyMLDUHRq+7oA7d3rZ/J5l09V+uzGxCFHQ5F+uOtvsAkF8JR7Nefl
         H9K/ERQH6VzTf6czs8947A2pYK66I+9+sOsoTLxbiD0k7Ib5tW065Ub+YwalnOQceoH5
         EHwlcSt+5rEEZia9LbuV4SvegiI/P6zmFMBbbU+Bor1CAyDJmTOzhpSPcCurLlNmm6hz
         KPfwCURGGnVoPTHRUxQ+TUxSneUyd0EVVBG3EoVDVb+BbtYZqGSQH3ObTWyQF3S4QhzU
         HSDA==
X-Gm-Message-State: AOJu0YwiWRpeadFHQIZuDzEZA1r3ORY5AaqcVklr3sm6s8T5hV5DXGnT
	K3Kl49djguVKish+8qwM9TfTFUGDspz0DPm+gn6hnKkU2hQXc6t1KsMuAc+S01WvodPY9xQnRbg
	A
X-Google-Smtp-Source: AGHT+IHfW4cHyOoHj0JGVIKr2XZ/kHgLKd5FBr1wc36x8UiLD+2B9V+6sGEuMJa3swgjs5bMuG6QIQ==
X-Received: by 2002:a17:906:6a24:b0:a99:e504:40c5 with SMTP id a640c23a62f3a-a9abf8ab8f2mr49266766b.39.1729636798012;
        Tue, 22 Oct 2024 15:39:58 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 0/3] x86/boot: Improvements to move_memory()
Date: Tue, 22 Oct 2024 23:39:51 +0100
Message-Id: <20241022223954.432554-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Strip module_t out of move_memory() and simplify the logic.

This is to allow yet-more cleanup with the hyperlaunch series.  See patch 1
for most of the discussion.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1507885241

Andrew Cooper (3):
  x86/boot: Convert move_memory() to use bootstrap_map_addr()
  x86/boot: Simplify address calculations in move_memory()
  x86/boot: Simplify size calculations in move_memory()

 xen/arch/x86/setup.c | 29 +++++++++++++----------------
 1 file changed, 13 insertions(+), 16 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 22:40:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 22:40:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824297.1238400 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3NXo-0002ar-71; Tue, 22 Oct 2024 22:40:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824297.1238400; Tue, 22 Oct 2024 22:40: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 1t3NXo-0002ZQ-2u; Tue, 22 Oct 2024 22:40:04 +0000
Received: by outflank-mailman (input) for mailman id 824297;
 Tue, 22 Oct 2024 22:40: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3NXl-00026E-Sc
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 22:40:01 +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 91e98bd7-90c6-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 00:40:00 +0200 (CEST)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a4031f69fso890427866b.0
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 15:39:59 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a913076f5sm396704066b.95.2024.10.22.15.39.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 15:39:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91e98bd7-90c6-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729636799; x=1730241599; 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=rdLdfba2PiBiA/2L4zZymgw8I8BN4e9PskPZBu3Nv6w=;
        b=Ihjnr8/+wom3b/zS/Ia1BfcNE8bMXF1u2KR9Ul7dX+biBWfkvuzkl12w2CoXzj4N0b
         M16uiHZU0p1hcPHchO9wJRyKfETvtANvEF4vPlpgY9squBbh6QkA4rbCQSJtnSqnpg8C
         o1y9MYMkMKekDk3K0gQy7KZA76eF4qnyCzMe8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729636799; x=1730241599;
        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=rdLdfba2PiBiA/2L4zZymgw8I8BN4e9PskPZBu3Nv6w=;
        b=sP6QrB/42gFFst3wtWfEJBFpdvaalhEx3OMf5EpGzefMiU85IapOZM2hqIrbw/FCIX
         8bdo5teOfgK7WkgcAPLpIu3Tc51FleD6gYqKeZ16gyszAnbYGbqFjb+XzzeWe/DFN/im
         MMsZCwriRs/1AevfvB1dQT5CY3AJGZ3yEqdpQaazzBqsJp9pVcqqtEn6sxUPWcAqF24W
         20A9DtES5Busj/QanReJLyYo3hvctHk97aL/WVkFvTDqZdaSplvWAxB3/F5zFXu6V2Ga
         Q0dMMR39Olhu2afYS7KTsAHD0ViU151yN/4f+K3iwgWBo0HoNVzLtbBySznx0Jn4/v+h
         /l7g==
X-Gm-Message-State: AOJu0YyYlN6p+ptvHjvkZVDLol4Ysb9iR3C/GxCISx63Q18Cl0A8Ks7P
	1mSVFo2kXC7dXnBEB3kauDlWpUeq0Vknrn+c2S+BhB2iiV8DJKskKmWir6hhmZ3SwYL0j2AVpoR
	8
X-Google-Smtp-Source: AGHT+IGVn6i0LkXUb+yXm4tFD12xZCnycC5rC6hMgzmTv7Rd+Ezlg7+7CgXEXOhLqSGyFukr8Be94g==
X-Received: by 2002:a17:907:3d92:b0:a99:fc3d:7c76 with SMTP id a640c23a62f3a-a9abf8a8f8dmr43877566b.37.1729636798692;
        Tue, 22 Oct 2024 15:39:58 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 1/3] x86/boot: Convert move_memory() to use bootstrap_map_addr()
Date: Tue, 22 Oct 2024 23:39:52 +0100
Message-Id: <20241022223954.432554-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241022223954.432554-1-andrew.cooper3@citrix.com>
References: <20241022223954.432554-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

move_memory() is very complicated, and buggy.  In order to fix the latter, we
have to address the former.

Given prior cleanup, bootstrap_map() is now implemented in terms of
bootstrap_map_addr(), meaining that it is counterproductive to plumb the
mapping through module_t.

Delete mod, and introduce two same-sized/named fields.  At this point in boot,
neither fields have their named purpose, so indicate the purpose in comments.

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: Daniel P. Smith <dpsmith@apertussolutions.com>

This is broken out both to ease review (I recommend git diff --color-words),
and for bisection purposes given how many times I've failed to edit this logic
correctly.

This does not conflict with anything in Hyperlaunch v7, but it does remove the
only callers of bootstrap_map() remaining by the end of the series, allowing
for even more cleanup.

In terms of bugs.  The ones I've spotted so far are:

 * The blksz calculation depends on the previous thing having been unmapped
   first.

 * The calculation halving blksz based on BOOTSTRAP_MAP_BASE is bogus.  It
   might plausibly be a remnent of 32bit Xen with the absence of highmem.

 * The caller of move_memory() is strictly moving modules forward in
   memory (dst > src) with a possibility of partial overlap.  The while loop
   maps dst and src, blksz chunks at a time, ascending, with s < d.  This
   results in memmove() doing an unconditional backwards copy.

   I don't see how this logic could ever have worked for an overlapping move.

 * The caller of move_memory() already has a good mapping for dst, so we don't
   even need to split BOOTSTRAP_MAP_LIMIT in half to map both parts.
---
 xen/arch/x86/setup.c | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 059b597331a7..46a0b3093c2c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -492,26 +492,29 @@ static void __init noinline move_memory(
 
     while ( size )
     {
-        module_t mod;
+        unsigned int start /* frame */;
+        unsigned int end   /* mapsz */;
         unsigned int soffs = src & mask;
         unsigned int doffs = dst & mask;
         unsigned int sz;
         void *d, *s;
 
-        mod.mod_start = (src - soffs) >> PAGE_SHIFT;
-        mod.mod_end = soffs + size;
-        if ( mod.mod_end > blksz )
-            mod.mod_end = blksz;
-        sz = mod.mod_end - soffs;
-        s = bootstrap_map(&mod);
-
-        mod.mod_start = (dst - doffs) >> PAGE_SHIFT;
-        mod.mod_end = doffs + size;
-        if ( mod.mod_end > blksz )
-            mod.mod_end = blksz;
-        if ( sz > mod.mod_end - doffs )
-            sz = mod.mod_end - doffs;
-        d = bootstrap_map(&mod);
+        start = (src - soffs) >> PAGE_SHIFT;
+        end = soffs + size;
+        if ( end > blksz )
+            end = blksz;
+        sz = end - soffs;
+        s = bootstrap_map_addr(pfn_to_paddr(start),
+                               pfn_to_paddr(start) + end);
+
+        start = (dst - doffs) >> PAGE_SHIFT;
+        end = doffs + size;
+        if ( end > blksz )
+            end = blksz;
+        if ( sz > end - doffs )
+            sz = end - doffs;
+        d = bootstrap_map_addr(pfn_to_paddr(start),
+                               pfn_to_paddr(start) + end);
 
         memmove(d + doffs, s + soffs, sz);
 
@@ -519,7 +522,7 @@ static void __init noinline move_memory(
         src += sz;
         size -= sz;
 
-        bootstrap_map(NULL);
+        bootstrap_map_addr(0, 0);
     }
 }
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 22:40:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 22:40:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824298.1238405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3NXo-0002i0-Fj; Tue, 22 Oct 2024 22:40:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824298.1238405; Tue, 22 Oct 2024 22:40: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 1t3NXo-0002fX-BB; Tue, 22 Oct 2024 22:40:04 +0000
Received: by outflank-mailman (input) for mailman id 824298;
 Tue, 22 Oct 2024 22:40: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3NXm-00026E-PT
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 22:40:02 +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 934a1319-90c6-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 00:40:02 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c9362c26d8so498724a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 15:40:02 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a913076f5sm396704066b.95.2024.10.22.15.40.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 15:40:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 934a1319-90c6-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729636801; x=1730241601; 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=WngS3EfMpOQgHq1eT2hKFkIIl1PwfdoEnZaYAyPIS0Y=;
        b=caVDELXM4yNVyesTEAxyBZrEvr80A+n5sW5OXcxsmZW3C+1iMmRa+aPPR15j0lNVcY
         Zn0fXPrS6PSlOcNcS05uhbyTdTqOSBzA75cAlfY2xz3JMzUFtBDz3RMmP976hEjSsPpx
         huXc/4wsO5YQSYYCCggkMZNPW3GckShNJrup4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729636801; x=1730241601;
        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=WngS3EfMpOQgHq1eT2hKFkIIl1PwfdoEnZaYAyPIS0Y=;
        b=TYs4+zCjCd4ZyK12fSyyZiBgZMAQUgXxcuFoAeY6HPMBNgbYezIE3uFk2JXX0b13Ve
         37S9Jhu7g5ofWatIeMa1pwwieGmYTvOm5d5RniU4WfK0WCVmZEWi4z5nKu6F4SHURHm9
         xvROIcu9EZHqPPRRbs4CMtjpd8AkWQfU53u+bMe8TL6wYo6bbwapCQ+kQHzjDtAXhxcB
         TIvtOUTFcW3E0zBYMjog/5VelE408sV1NZaDCDooU4y1XQIIj0B+hoZXnxgJIwhCNCqY
         fWQQhwNzUaAkwYjgGCrkwRY6MyHcXz4RuRxZdhNfevS+eoKS9ushoC9SUaNA6tt5CqeE
         829Q==
X-Gm-Message-State: AOJu0Yw9fyPWSDCaVHSaDE6/ieoNRtt/kRgzFzMz9/YoIzpNLalSq5rN
	oKfR0sSO61PEZYsnM3g7lEvuT+rSbufpLxummAM1LngTeBTlNBwQ/pCTV2RNzP8HMK+Fi1Jy99x
	m
X-Google-Smtp-Source: AGHT+IGYbzpAehcj4kjuhSByj7lL7Vk3fUVnYYt45ZxrfT07Vh8a70eWMMNBBW/cqUbEd6U548aJ1A==
X-Received: by 2002:a17:907:2cc5:b0:a99:5f65:fd9a with SMTP id a640c23a62f3a-a9aaa620d5cmr534730466b.21.1729636801041;
        Tue, 22 Oct 2024 15:40:01 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 3/3] x86/boot: Simplify size calculations in move_memory()
Date: Tue, 22 Oct 2024 23:39:54 +0100
Message-Id: <20241022223954.432554-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241022223954.432554-1-andrew.cooper3@citrix.com>
References: <20241022223954.432554-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

While both src and dst are similar, src is mapped only accounting for src's
size, while dst is mapped based on the minimum of both.  This means that in
some cases, an overly large mapping is requested for src.

Rework the sz calcuation to be symmetric, and leave an explanation of how
logic works.

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: Daniel P. Smith <dpsmith@apertussolutions.com>

And as if by magic, all transient fields from converting module_t are gone,
with bloat-o-meter reporting:

  add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-74 (-74)
  Function                                     old     new   delta
  move_memory                                  265     191     -74

which is all removal of logic inside the while loop.
---
 xen/arch/x86/setup.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 152cd696d6c2..bb525980cdd8 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -492,23 +492,22 @@ static void __init noinline move_memory(
 
     while ( size )
     {
-        unsigned int end   /* mapsz */;
         unsigned int soffs = src & mask;
         unsigned int doffs = dst & mask;
         unsigned int sz;
         void *d, *s;
 
-        end = soffs + size;
-        if ( end > blksz )
-            end = blksz;
-        sz = end - soffs;
-        s = bootstrap_map_addr(src, src + sz);
+        /*
+         * We're copying between two arbitrary buffers, as they fall within
+         * 2M-aligned regions with a maximum bound of blksz.
+         *
+         * For [ds]offs + size <= blksz, sz = size.
+         * For [ds]offs + size >  blksz, sz = blksz - [ds]offs.
+         */
+        sz = max(soffs, doffs);
+        sz = min(sz + size, blksz) - sz;
 
-        end = doffs + size;
-        if ( end > blksz )
-            end = blksz;
-        if ( sz > end - doffs )
-            sz = end - doffs;
+        s = bootstrap_map_addr(src, src + sz);
         d = bootstrap_map_addr(dst, dst + sz);
 
         memmove(d, s, sz);
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 22:40:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 22:40:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824299.1238415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3NXp-0002sW-0n; Tue, 22 Oct 2024 22:40:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824299.1238415; Tue, 22 Oct 2024 22:40: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 1t3NXo-0002pu-PP; Tue, 22 Oct 2024 22:40:04 +0000
Received: by outflank-mailman (input) for mailman id 824299;
 Tue, 22 Oct 2024 22:40: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=fjUh=RS=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3NXn-000277-9S
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 22:40:03 +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 92fdf875-90c6-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 00:40:01 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c903f5bd0eso3114901a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 22 Oct 2024 15:40:01 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a913076f5sm396704066b.95.2024.10.22.15.39.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 22 Oct 2024 15:39:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 92fdf875-90c6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729636800; x=1730241600; 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=C87F54BHlnewuAYUBvjYbM5M2wyL7R+xBacmzm9+EfQ=;
        b=TkcQYSG+fVoVvmvpw4y1IOjAsh6v3C8xtNs9ejvlTnJjD0BGPKvu/Xp6rp+b+mQUZa
         1yRbPX2F8ZlNav6Euz76T8iEcjYs1an49rVSj/rhD98PaObv9AcbkGBS8lQLxU6uGEWR
         +FDwsoKljC/TPZsufuyT/be7hBXMvi8K+5ADQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729636800; x=1730241600;
        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=C87F54BHlnewuAYUBvjYbM5M2wyL7R+xBacmzm9+EfQ=;
        b=EUfKxRsmPnON0T5q4dqlRBXUkHCNRczVjaeSC8EGdyBmTftw1t8/2Nc7AzP00ZEV0o
         +epR3GmBx0ldcfzCt1yUm9EiTVPqgEfvhvje/E4ntUC5Txf9g87HC/J0EWcs1wrpeuxo
         sMuUm2k6j6RXw79/HVHlGdv52skMUQBmkwDohnEm1qfbgGWJ+oMal76/xaifwW5mw7EV
         vywOhsaQQisEjOXRbK3iQa6WqsbWwm2aEH550zRj/sDpJ3tGUsC76XzmUwcdW7UhOl0r
         PGuIzn2o7vLla8lMw0OFIvPxx6JuQ2Kj0Nr0+i/VldPGpS7I+DTpevA5uH4JZGHtXLi9
         ZSvg==
X-Gm-Message-State: AOJu0YwOPkI1xB3eUVVuysig+Vi+4zLred4YYLdJ1fBM++iACIxnGeRX
	VP3VO4zHR1LVnBFADETg0CxTD1uog46IRaiqJF+BbyTBRO4d+VBKjlfyF3BF9tkpFtYZBmoieUF
	P
X-Google-Smtp-Source: AGHT+IGwkerqzCYPmxUQirCtPpPgH8/ENEiUF9o2wQYWSdRbqopzg6LlHTHKmeTfkmTH6WL+hcjxiQ==
X-Received: by 2002:a17:907:9403:b0:a99:e98f:e73d with SMTP id a640c23a62f3a-a9abf8b06f9mr43186166b.37.1729636800293;
        Tue, 22 Oct 2024 15:40:00 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 2/3] x86/boot: Simplify address calculations in move_memory()
Date: Tue, 22 Oct 2024 23:39:53 +0100
Message-Id: <20241022223954.432554-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241022223954.432554-1-andrew.cooper3@citrix.com>
References: <20241022223954.432554-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Given that soffs is the offset into the 2M superpage,

  start = (src - soffs) >> PAGE_SIFT

is a complicated expression for the frame address of the containing superpage.
Except, start is converted straight back to a byte address to use, so the
shifting is unnecessary too.

The only done with the mapped pointer is to have soffs added back on for the
memmove() call.  bootstrap_map_addr() passes through the offset, so we can
pass src directly in and simplify the memmove() call too.  For the end mapping
address, this simplifies to just src + sz too.

The same reasoning holds for dst and doffs.

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: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/setup.c | 11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 46a0b3093c2c..152cd696d6c2 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -492,31 +492,26 @@ static void __init noinline move_memory(
 
     while ( size )
     {
-        unsigned int start /* frame */;
         unsigned int end   /* mapsz */;
         unsigned int soffs = src & mask;
         unsigned int doffs = dst & mask;
         unsigned int sz;
         void *d, *s;
 
-        start = (src - soffs) >> PAGE_SHIFT;
         end = soffs + size;
         if ( end > blksz )
             end = blksz;
         sz = end - soffs;
-        s = bootstrap_map_addr(pfn_to_paddr(start),
-                               pfn_to_paddr(start) + end);
+        s = bootstrap_map_addr(src, src + sz);
 
-        start = (dst - doffs) >> PAGE_SHIFT;
         end = doffs + size;
         if ( end > blksz )
             end = blksz;
         if ( sz > end - doffs )
             sz = end - doffs;
-        d = bootstrap_map_addr(pfn_to_paddr(start),
-                               pfn_to_paddr(start) + end);
+        d = bootstrap_map_addr(dst, dst + sz);
 
-        memmove(d + doffs, s + soffs, sz);
+        memmove(d, s, sz);
 
         dst += sz;
         src += sz;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 22 23:08:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 22 Oct 2024 23:08:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824326.1238436 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Nz1-0007xx-0k; Tue, 22 Oct 2024 23:08:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824326.1238436; Tue, 22 Oct 2024 23:08: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 1t3Nz0-0007xq-U6; Tue, 22 Oct 2024 23:08:10 +0000
Received: by outflank-mailman (input) for mailman id 824326;
 Tue, 22 Oct 2024 23:08: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=30Tg=RS=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1t3Nz0-0007xk-4a
 for xen-devel@lists.xenproject.org; Tue, 22 Oct 2024 23:08:10 +0000
Received: from fhigh-a5-smtp.messagingengine.com
 (fhigh-a5-smtp.messagingengine.com [103.168.172.156])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ed6a510-90ca-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 01:08:06 +0200 (CEST)
Received: from phl-compute-11.internal (phl-compute-11.phl.internal
 [10.202.2.51])
 by mailfhigh.phl.internal (Postfix) with ESMTP id 332C811400A8;
 Tue, 22 Oct 2024 19:08:05 -0400 (EDT)
Received: from phl-mailfrontend-01 ([10.202.2.162])
 by phl-compute-11.internal (MEProxy); Tue, 22 Oct 2024 19:08:05 -0400
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 22 Oct 2024 19:08:03 -0400 (EDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ed6a510-90ca-11ef-99a3-01e77a169b0f
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=1729638485;
	 x=1729724885; bh=gLWyeo27jt32SwSzz1pf6JLWX5ghm4vG19DKUkdvu4s=; b=
	fZc6nkFMHOZNaHL/YPfkDrtr+5CccLoPqXEhDlSugLzgf+QkQoMSk4JO4iTeTDMk
	G8E5pCVXetRQogHTfjrhThP9VuRI0nSeyMfQo5zn7lXRVkAHQ/1EU3cFfOi0/hba
	IJVMAX2FxmWRhToz7JQU2KXbobGvctdejRZ7CBqYH9c2OUX6eSyvCQXKy/IPwRrZ
	toIwZc+I/Q8ITysk6s4BxNq8jqeZCGIQM99n2lfl1Q8BLhLsOiPJ9ZY7Cjt6hHFp
	JFS5JlQjZM0WwMLSkusPxD/HnTo8ORAclbis+mbg5GbKQV/ao6jsIx5oJdgdV5FC
	aOOdvkv/WEAjeLY+TtcI1Q==
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=1729638485; x=1729724885; bh=gLWyeo27jt32SwSzz1pf6JLWX5gh
	m4vG19DKUkdvu4s=; b=gYEHqVpQp6VRHnXRl6d/VVRHFuq2xElKprhzpuURT7vg
	4e3JPp0/abERTz56DH9ILe4DmJg7wfBzJRhSiv5/1yn00iBMvdTd6ugS9Cst1M/H
	2b6IAyUA3HvYh+V29hRfboNYWyGl64ZRWdVDEA1e09YGLafEu7hOCZTjDDOq01LS
	DLZACHYSxuwBV9qeh8JOFW/uW7LIBjf2CccaDmfphsst06xhp/XWnUPvNjmEMRZW
	QtX5IGrCBcSNCKiEq6aY6zcj7w2qe/AuXZgumZq3NMrWbvF+9QqgSV5h0XaubixS
	mGE8hBycfZecmyCJ3ujzto4krRsV4iju63xjhPDE3w==
X-ME-Sender: <xms:VDAYZ0ORFsmZS3oUHia_DBgNIUIJgsyc0xRCAK3BbyFgGajGXh2OVg>
    <xme:VDAYZ68n2DADqKMFxS--YK25vPiVRnjuKPMB6iR9s22B2TkhrS_jjiAwIZcp7dGaL
    dgiP4ERp5LQGg>
X-ME-Received: <xmr:VDAYZ7R3ZE58GPGHJjFZF2EOBNezujTFXbXZSW9pm06nD99sUNQwe3e05HMAHb8CpC_N57mbQY2IefpTgogSVPiwgf9laow_OA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrvdeiiedgudelucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu
    rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnh
    htshculddquddttddmnecujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeen
    ucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomh
    grrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggft
    rfgrthhtvghrnhepgfduleetfeevhfefheeiteeliefhjefhleduveetteekveettddvge
    euteefjedunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhho
    mhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomhdpnh
    gspghrtghpthhtohepkedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepjhhiqhhi
    rghnrdgthhgvnhesrghmugdrtghomhdprhgtphhtthhopehsshhtrggsvghllhhinhhise
    hkvghrnhgvlhdrohhrghdprhgtphhtthhopegrnhhthhhonhihseigvghnphhrohhjvggt
    thdrohhrghdprhgtphhtthhopehprghulhesgigvnhdrohhrghdprhgtphhtthhopegvug
    hgrghrrdhighhlvghsihgrshesghhmrghilhdrtghomhdprhgtphhtthhopehqvghmuhdq
    uggvvhgvlhesnhhonhhgnhhurdhorhhgpdhrtghpthhtohepgigvnhdquggvvhgvlheslh
    hishhtshdrgigvnhhprhhojhgvtghtrdhorhhgpdhrtghpthhtoheprhgrhidrhhhurghn
    ghesrghmugdrtghomh
X-ME-Proxy: <xmx:VDAYZ8sbJls7UmFmGjBY8wwnqIG_kc2QFUDujBzOFA4ymG0SLuUtRA>
    <xmx:VDAYZ8f7mfGghvNx4zXrTBWksMh6t9hP8VkfW39qzsaTCVvhRs2ziw>
    <xmx:VDAYZw2aH2VomF9pLbflbR4bzCU1Xy6Prfy8vl4Vin8TdQwqZ5TelA>
    <xmx:VDAYZw_XdS-GFpNDfEDvX5bjZgSe_TnQVvD3U_sbR17HOF5R8DCcpg>
    <xmx:VTAYZ6v75qRKf96NS14TSoKohg4irk9FlfPIPToQpThYNu3a34QufZXz>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 23 Oct 2024 01:07:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jiqian Chen <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>,
	Paul Durrant <paul@xen.org>,
	"Edgar E . Iglesias" <edgar.iglesias@gmail.com>,
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org,
	Huang Rui <Ray.Huang@amd.com>
Subject: Re: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0
 is PVH
Message-ID: <ZxgwUd3riLmFzFC4@mail-itl>
References: <20241016062827.2301004-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="SkGEWvdQLHgEL56A"
Content-Disposition: inline
In-Reply-To: <20241016062827.2301004-1-Jiqian.Chen@amd.com>


--SkGEWvdQLHgEL56A
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 23 Oct 2024 01:07:58 +0200
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jiqian Chen <Jiqian.Chen@amd.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony@xenproject.org>,
	Paul Durrant <paul@xen.org>,
	"Edgar E . Iglesias" <edgar.iglesias@gmail.com>,
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org,
	Huang Rui <Ray.Huang@amd.com>
Subject: Re: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0
 is PVH

On Wed, Oct 16, 2024 at 02:28:27PM +0800, Jiqian Chen wrote:
> --- a/hw/xen/xen_pt.h
> +++ b/hw/xen/xen_pt.h
> @@ -36,6 +36,7 @@ void xen_pt_log(const PCIDevice *d, const char *f, ...)=
 G_GNUC_PRINTF(2, 3);
>  #  define XEN_PT_LOG_CONFIG(d, addr, val, len)
>  #endif
> =20
> +#define DOMID_RUN_QEMU 0

Please, don't hardcode dom0 here, QEMU can be running in a stubdomain
too (in which case, this will hilariously explode, as it will check what
dom0 is, instead of where QEMU is running).=20
Stewart already provided an alternative.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

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

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

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmcYMFEACgkQ24/THMrX
1yzrtgf/RxY7ihUCUzl90Phvk7LA0aAjTgAlXY4tEH52qQTnO/A+Z2NDm4oSLjbH
GPiSPBEgeoFQCaRhSNA+jim37EFaYU70jK0KX6cLH8F47iZwmTYGvkGDRoTuEaQo
Fn/aiU8AbdMBhoW5gQMlQCr5xlHpyOwBoK7ewQXxJnQLGbGYBMNCm1HXd9SUTfTW
4PL1dFsnDuFHkYDvyoOYYlCTVa3tkI0jvROYPZknizN0LUU9FaUfNQI4jORR3x4z
2u9NJ5geSTvcU6qWFjAGUAQFC6D3R4S9VEYKxGf8AtGq1vn2S6+l6n6tXA4N7xAd
dzP9KRD7WxFiJBSLISLGfJUA7XDX8A==
=EME9
-----END PGP SIGNATURE-----

--SkGEWvdQLHgEL56A--


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 00:12:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 00:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824332.1238446 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3OzM-0000HT-I8; Wed, 23 Oct 2024 00:12:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824332.1238446; Wed, 23 Oct 2024 00:12: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 1t3OzM-0000H9-FR; Wed, 23 Oct 2024 00:12:36 +0000
Received: by outflank-mailman (input) for mailman id 824332;
 Wed, 23 Oct 2024 00:12: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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3OzK-0000H3-7a
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 00:12:34 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7df73556-90d3-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 02:12:31 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729642344178635.8682470555151;
 Tue, 22 Oct 2024 17:12:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7df73556-90d3-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729642345; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=laeEHhkjPLgJrZZhUMVzsnHW8L59Cyj23ipLefSOFQ2o1T4Sq9ndmeV4X/mbP+8xtDVdfXKlbxHsOOBTtmBVW0DGnmnxpJ72xqeX4bFyky59nLhir+gQ+vKBYQCCbvG0Hq+U0BwCj6ExDQ1xZVXl/Evy6xR/0w6t+IzNP1qwrIE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729642345; 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=Vxb4Llf6gvL7ZFvjwjCMx+vj0rU5C4YZsyTw95Kv9q8=; 
	b=QiUXRGCDiS940u3305JLcLrIE5bY5YXt/mKVLR7Lmw4jVSiPFB1J64/8C/ApbKAQos8r34nK/HN64uulaMFaALmKtoCPuyQe8HpkO3LC/DIwRukCpW2rv10Jk6hUSUE7ViARoBXIuGvBamVSdj6F6wK4oCGY2sPj0EqoJUi2yGQ=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729642345;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=Vxb4Llf6gvL7ZFvjwjCMx+vj0rU5C4YZsyTw95Kv9q8=;
	b=A2nWVjlY278mmZ0Tk8txT513p1XhU/YXPFBEL4f/oczKkT24tUrPRjgBJVe84Cv1
	Cv0kqyQG161TtKxVyGR+GDfAyUCGBz9oJ7TI35yne6lJOfUBPdjcmntu9Cycpq7il8a
	dJcHBQteHeCwrcN/57700Ridc8z3vipXyO3GWqzw=
Message-ID: <0d708e2d-ad7f-46e7-a97e-7e5e70a1d628@apertussolutions.com>
Date: Tue, 22 Oct 2024 20:12:17 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/boot: Convert move_memory() to use
 bootstrap_map_addr()
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>
References: <20241022223954.432554-1-andrew.cooper3@citrix.com>
 <20241022223954.432554-2-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241022223954.432554-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/22/24 18:39, Andrew Cooper wrote:
> move_memory() is very complicated, and buggy.  In order to fix the latter, we
> have to address the former.
> 
> Given prior cleanup, bootstrap_map() is now implemented in terms of
> bootstrap_map_addr(), meaining that it is counterproductive to plumb the
> mapping through module_t.
> 
> Delete mod, and introduce two same-sized/named fields.  At this point in boot,
> neither fields have their named purpose, so indicate the purpose in comments.
> 
> 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: Daniel P. Smith <dpsmith@apertussolutions.com>
> 

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 00:16:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 00:16:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824341.1238456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3P3T-00013L-5P; Wed, 23 Oct 2024 00:16:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824341.1238456; Wed, 23 Oct 2024 00:16: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 1t3P3T-00013E-22; Wed, 23 Oct 2024 00:16:51 +0000
Received: by outflank-mailman (input) for mailman id 824341;
 Wed, 23 Oct 2024 00: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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3P3R-000138-Se
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 00:16:49 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 177cd4a3-90d4-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 02:16:48 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172964260236081.18775636948408;
 Tue, 22 Oct 2024 17:16:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 177cd4a3-90d4-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729642604; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=G/ySipiSpB+0hsRgKZXWUgr+T0n2D1mQzUtKE6PJCBib8Htl6SrlcemUOOL4/oOLGGybgnc0sF5CDbqTrNgsdDpKgQrNlaz8rq+4fNgUUim90/0joasc6iq9DucVZQlkwzJifHCnFlhaFKZRQMOWjSE0rlusm08W0HZPcG6LLkg=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729642604; 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=Ihha2WkaDo8YK9TFfNt/9gjktJNn6lcUbCtF1XUysTY=; 
	b=NjQDmI3Kcv8igoXxBCwSPPWteL2lii3ce6W9Fc1WMSzP/gMPQYtXEb0aZ6/1UjmPijEiL+7YSpZ8LmyacCvHEt9JoDBzr60cH5c58dXZCJL0eNGLPG73a0VQmKSDjFzfHPwS+e6eipZhi0ci4I7sa5Bj805buOyDci6xBF+PN9U=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729642604;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=Ihha2WkaDo8YK9TFfNt/9gjktJNn6lcUbCtF1XUysTY=;
	b=AawezXO3wA3HFV00qaqXCWD3kh7VFxTZUMi52ak+PBUHFETPQXnFFJ+n3iBXWz6u
	rM/oqWafnuRliIuaPYMhJmdp+8pIk/G8s5Y+YPHCsF0s2qP5dWRaszXqJZf9jnDaKS+
	Ktc3pTj8zFaadlPFcR5bLQ6UAo/8PBGNMxGAwCZY=
Message-ID: <0aa6940f-5aeb-4f14-bb18-2a598b926686@apertussolutions.com>
Date: Tue, 22 Oct 2024 20:16:41 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Simplify address calculations in
 move_memory()
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>
References: <20241022223954.432554-1-andrew.cooper3@citrix.com>
 <20241022223954.432554-3-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241022223954.432554-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/22/24 18:39, Andrew Cooper wrote:
> Given that soffs is the offset into the 2M superpage,
> 
>    start = (src - soffs) >> PAGE_SIFT
> 
> is a complicated expression for the frame address of the containing superpage.
> Except, start is converted straight back to a byte address to use, so the
> shifting is unnecessary too.
> 
> The only done with the mapped pointer is to have soffs added back on for the

nit: think you dropped a word here, "The only done".

> memmove() call.  bootstrap_map_addr() passes through the offset, so we can
> pass src directly in and simplify the memmove() call too.  For the end mapping
> address, this simplifies to just src + sz too.
> 
> The same reasoning holds for dst and doffs.
> 
> 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: Daniel P. Smith <dpsmith@apertussolutions.com>

After nit,

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 00:19:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 00:19:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824346.1238465 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3P5n-0001aZ-GV; Wed, 23 Oct 2024 00:19:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824346.1238465; Wed, 23 Oct 2024 00:19: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 1t3P5n-0001aS-Do; Wed, 23 Oct 2024 00:19:15 +0000
Received: by outflank-mailman (input) for mailman id 824346;
 Wed, 23 Oct 2024 00:19: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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3P5m-0001aM-5E
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 00:19:14 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6d6ad6e6-90d4-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 02:19:13 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729642747740216.84496069926502;
 Tue, 22 Oct 2024 17:19:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6d6ad6e6-90d4-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729642748; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=jaOryYsBQvBczumxKSV6TPQpO8R8880pYClRU+cvCacvoVDe2VUXGtXdcXwGZv6/SXem9GEmzepPhMnYG7fE/zNiG0GhZPNnoLBJJriIn7ZLqdFk+hnSUAWGa1sJruK3XOc15ojidlQz+VK12/dvX7mI6Qlj9iru11RVCI9firs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729642748; 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=pSZTmUv6ej+VrvylZckjQ+3WLGWJeyGMReTfSjVMNDQ=; 
	b=W5W6AnXc6k0Vfdct85P0JpfUu+uWrRHSf3aVbzYPTAmUBKRh1crh95CwF+WJyNRNCt8CYCRF1Dou+h4XiMl+w2L1G9fjb8B1oEXqIsyz3AbXO87eXwHnyXiT54TBZNUo8UQD7cijqItMoJxr40cHGLgqXMp3ufaY9M4C1YUOsxo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729642748;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=pSZTmUv6ej+VrvylZckjQ+3WLGWJeyGMReTfSjVMNDQ=;
	b=CV9CsV/dGXHhJeEQyK7wlTFWZCS+97hs0u6ljzObCw5M1jYbX0qQmkLz9I0J/TvB
	JMuXbZaw4pSz3VB4TQI33RUhZxnRN/TiXoVcIrvtWfrp6QDBjSnQdUWV0ygX9I2VEkj
	BJxlyEkuPEb2TDQ0PD27Mxr8XY2ntrDAXZ5KvJbo=
Message-ID: <dedbfc53-6e75-444e-a10e-f41cf60cb5f9@apertussolutions.com>
Date: Tue, 22 Oct 2024 20:19:06 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] x86/boot: Simplify size calculations in move_memory()
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>
References: <20241022223954.432554-1-andrew.cooper3@citrix.com>
 <20241022223954.432554-4-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241022223954.432554-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/22/24 18:39, Andrew Cooper wrote:
> While both src and dst are similar, src is mapped only accounting for src's
> size, while dst is mapped based on the minimum of both.  This means that in
> some cases, an overly large mapping is requested for src.
> 
> Rework the sz calcuation to be symmetric, and leave an explanation of how
> logic works.
> 
> 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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 01:24:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 01:24:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824359.1238475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Q6K-00015L-1k; Wed, 23 Oct 2024 01:23:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824359.1238475; Wed, 23 Oct 2024 01:23: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 1t3Q6J-00015E-VS; Wed, 23 Oct 2024 01:23:51 +0000
Received: by outflank-mailman (input) for mailman id 824359;
 Wed, 23 Oct 2024 01:23: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=S7t1=RT=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t3Q6I-000158-UN
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 01:23:51 +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 73f86c44-90dd-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 03:23:48 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id B0C2B5C5C10;
 Wed, 23 Oct 2024 01:23:42 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6CAC3C4CEC3;
 Wed, 23 Oct 2024 01: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: 73f86c44-90dd-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729646627;
	bh=uz1jW+5+Ofi9FJaMXj4JSfMBRXP2E1lFAcoWjioSfg8=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=A3cY+EIz3qSx+Fyzyo0FIaKQYLpmUQZNafKqqLlnAra/uKRudTI+wocv8iWHRb7HN
	 eSKfproxm/eVjOwAJXtfyxqD70imuoMnD/ZZyrkc93fZWisUJ9O4MxOafzBw9YE2QH
	 P+QQ1+1uim1Zt3YoBwSmI4jrcChnB54omc/TMSznH+uUlqpTTvWMVdRe/VTif08ilp
	 DtI5rpaTldK+8okOsy2Q9wzuk+d1m8I7XAXybINzK4Ih31jIVWpCCtaAEaYvrf5aEm
	 a6mTKp5n29/oi0UHkvy6md4TFkCdpkHmNwG+KUHAYW41rjOs53ZbFrndqAkCX2eYHh
	 DEVRaFvG4TO8g==
Date: Tue, 22 Oct 2024 18:23:42 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Ryan Roberts <ryan.roberts@arm.com>
cc: Andrew Morton <akpm@linux-foundation.org>, 
    Anshuman Khandual <anshuman.khandual@arm.com>, 
    Ard Biesheuvel <ardb@kernel.org>, 
    Catalin Marinas <catalin.marinas@arm.com>, 
    David Hildenbrand <david@redhat.com>, 
    Greg Marsden <greg.marsden@oracle.com>, Ivan Ivanov <ivan.ivanov@suse.com>, 
    Kalesh Singh <kaleshsingh@google.com>, Marc Zyngier <maz@kernel.org>, 
    Mark Rutland <mark.rutland@arm.com>, Matthias Brugger <mbrugger@suse.com>, 
    Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org>, 
    Juergen Gross <jgross@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, 
    linux-mm@kvack.org, xen-devel@lists.xenproject.org, julien@xen.org
Subject: Re: [RFC PATCH v1 36/57] xen: Remove PAGE_SIZE compile-time constant
 assumption
In-Reply-To: <829b5662-13c0-4728-894c-b2d578681b11@arm.com>
Message-ID: <alpine.DEB.2.22.394.2410221808160.3833@ubuntu-linux-20-04-desktop>
References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241014105912.3207374-1-ryan.roberts@arm.com> <20241014105912.3207374-36-ryan.roberts@arm.com> <829b5662-13c0-4728-894c-b2d578681b11@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

+Julien

On Wed, 16 Oct 2024, Ryan Roberts wrote:
> + Juergen Gross, Stefano Stabellini
> 
> This was a rather tricky series to get the recipients correct for and my script
> did not realize that "supporter" was a pseudonym for "maintainer" so you were
> missed off the original post. Appologies!
> 
> More context in cover letter:
> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
> 
> 
> On 14/10/2024 11:58, Ryan Roberts wrote:
> > To prepare for supporting boot-time page size selection, refactor code
> > to remove assumptions about PAGE_SIZE being compile-time constant. Code
> > intended to be equivalent when compile-time page size is active.
> > 
> > Allocate enough "frame_list" static storage in the balloon driver for
> > the maximum supported page size. Although continue to use only the first
> > PAGE_SIZE of the buffer at run-time to maintain existing behaviour.
> > 
> > Refactor xen_biovec_phys_mergeable() to convert ifdeffery to c if/else.
> > For compile-time page size, the compiler will choose one branch and
> > strip the dead one. For boot-time, it can be evaluated at run time.
> > 
> > Refactor a BUILD_BUG_ON to evaluate the limit (when the minimum
> > supported page size is selected at boot-time).
> > 
> > Reserve enough storage for max page size in "struct remap_data" and
> > "struct xenbus_map_node".
> > 
> > Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
> > ---
> > 
> > ***NOTE***
> > Any confused maintainers may want to read the cover note here for context:
> > https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
> > 
> >  drivers/xen/balloon.c              | 11 ++++++-----
> >  drivers/xen/biomerge.c             | 12 ++++++------
> >  drivers/xen/privcmd.c              |  2 +-
> >  drivers/xen/xenbus/xenbus_client.c |  5 +++--
> >  drivers/xen/xlate_mmu.c            |  6 +++---
> >  include/xen/page.h                 |  2 ++
> >  6 files changed, 21 insertions(+), 17 deletions(-)
> > 
> > diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> > index 528395133b4f8..0ed5f6453af0e 100644
> > --- a/drivers/xen/balloon.c
> > +++ b/drivers/xen/balloon.c
> > @@ -131,7 +131,8 @@ struct balloon_stats balloon_stats;
> >  EXPORT_SYMBOL_GPL(balloon_stats);
> >  
> >  /* We increase/decrease in batches which fit in a page */
> > -static xen_pfn_t frame_list[PAGE_SIZE / sizeof(xen_pfn_t)];
> > +static xen_pfn_t frame_list[PAGE_SIZE_MAX / sizeof(xen_pfn_t)];
> > +#define FRAME_LIST_NR_ENTRIES (PAGE_SIZE / sizeof(xen_pfn_t))
> >  
> >  
> >  /* List of ballooned pages, threaded through the mem_map array. */
> > @@ -389,8 +390,8 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
> >  	unsigned long i;
> >  	struct page   *page;
> >  
> > -	if (nr_pages > ARRAY_SIZE(frame_list))
> > -		nr_pages = ARRAY_SIZE(frame_list);
> > +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
> > +		nr_pages = FRAME_LIST_NR_ENTRIES;
> >  
> >  	page = list_first_entry_or_null(&ballooned_pages, struct page, lru);
> >  	for (i = 0; i < nr_pages; i++) {
> > @@ -434,8 +435,8 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
> >  	int ret;
> >  	LIST_HEAD(pages);
> >  
> > -	if (nr_pages > ARRAY_SIZE(frame_list))
> > -		nr_pages = ARRAY_SIZE(frame_list);
> > +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
> > +		nr_pages = FRAME_LIST_NR_ENTRIES;
> >  
> >  	for (i = 0; i < nr_pages; i++) {
> >  		page = alloc_page(gfp);
> > diff --git a/drivers/xen/biomerge.c b/drivers/xen/biomerge.c
> > index 05a286d24f148..28f0887e40026 100644
> > --- a/drivers/xen/biomerge.c
> > +++ b/drivers/xen/biomerge.c
> > @@ -8,16 +8,16 @@
> >  bool xen_biovec_phys_mergeable(const struct bio_vec *vec1,
> >  			       const struct page *page)
> >  {
> > -#if XEN_PAGE_SIZE == PAGE_SIZE
> > -	unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
> > -	unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
> > +	if (XEN_PAGE_SIZE == PAGE_SIZE) {
> > +		unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
> > +		unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
> > +
> > +		return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
> > +	}
> >  
> > -	return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
> > -#else
> >  	/*
> >  	 * XXX: Add support for merging bio_vec when using different page
> >  	 * size in Xen and Linux.
> >  	 */
> >  	return false;
> > -#endif
> >  }
> > diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
> > index 9563650dfbafc..847f7b806caf7 100644
> > --- a/drivers/xen/privcmd.c
> > +++ b/drivers/xen/privcmd.c
> > @@ -557,7 +557,7 @@ static long privcmd_ioctl_mmap_batch(
> >  	state.global_error  = 0;
> >  	state.version       = version;
> >  
> > -	BUILD_BUG_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);
> > +	BUILD_BUG_ON(((PAGE_SIZE_MIN / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE_MAX) != 0);

Is there any value in keep this test? And if so, what should it look
like? I think we should turn it into a WARN_ON:

WARN_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);

It doesn't make much sense having a BUILD_BUG_ON on a variable that can
change?


> >  	/* mmap_batch_fn guarantees ret == 0 */
> >  	BUG_ON(traverse_pages_block(m.num, sizeof(xen_pfn_t),
> >  				    &pagelist, mmap_batch_fn, &state));
> > diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
> > index 51b3124b0d56c..99bde836c10c4 100644
> > --- a/drivers/xen/xenbus/xenbus_client.c
> > +++ b/drivers/xen/xenbus/xenbus_client.c
> > @@ -49,9 +49,10 @@
> >  
> >  #include "xenbus.h"
> >  
> > -#define XENBUS_PAGES(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
> > +#define XENBUS_PAGES(_grants)		(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
> > +#define XENBUS_PAGES_MAX(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE_MIN))
> >  
> > -#define XENBUS_MAX_RING_PAGES	(XENBUS_PAGES(XENBUS_MAX_RING_GRANTS))
> > +#define XENBUS_MAX_RING_PAGES		(XENBUS_PAGES_MAX(XENBUS_MAX_RING_GRANTS))
> >  
> >  struct xenbus_map_node {
> >  	struct list_head next;
> > diff --git a/drivers/xen/xlate_mmu.c b/drivers/xen/xlate_mmu.c
> > index f17c4c03db30c..a757c801a7542 100644
> > --- a/drivers/xen/xlate_mmu.c
> > +++ b/drivers/xen/xlate_mmu.c
> > @@ -74,9 +74,9 @@ struct remap_data {
> >  	int mapped;
> >  
> >  	/* Hypercall parameters */
> > -	int h_errs[XEN_PFN_PER_PAGE];
> > -	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE];
> > -	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE];
> > +	int h_errs[XEN_PFN_PER_PAGE_MAX];
> > +	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE_MAX];
> > +	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE_MAX];
> >  
> >  	int h_iter;	/* Iterator */
> >  };
> > diff --git a/include/xen/page.h b/include/xen/page.h
> > index 285677b42943a..86683a30038a3 100644
> > --- a/include/xen/page.h
> > +++ b/include/xen/page.h
> > @@ -21,6 +21,8 @@
> >  	((page_to_pfn(page)) << (PAGE_SHIFT - XEN_PAGE_SHIFT))
> >  
> >  #define XEN_PFN_PER_PAGE	(PAGE_SIZE / XEN_PAGE_SIZE)
> > +#define XEN_PFN_PER_PAGE_MIN	(PAGE_SIZE_MIN / XEN_PAGE_SIZE)
> > +#define XEN_PFN_PER_PAGE_MAX	(PAGE_SIZE_MAX / XEN_PAGE_SIZE)
> >  
> >  #define XEN_PFN_DOWN(x)	((x) >> XEN_PAGE_SHIFT)
> >  #define XEN_PFN_UP(x)	(((x) + XEN_PAGE_SIZE-1) >> XEN_PAGE_SHIFT)
> 


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 02:37:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 02:37:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824371.1238487 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3RFS-0001kM-2x; Wed, 23 Oct 2024 02:37:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824371.1238487; Wed, 23 Oct 2024 02:37: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 1t3RFR-0001kF-VE; Wed, 23 Oct 2024 02:37:21 +0000
Received: by outflank-mailman (input) for mailman id 824371;
 Wed, 23 Oct 2024 02:37: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 1t3RFR-0001k5-0Y; Wed, 23 Oct 2024 02:37: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 1t3RFQ-0001ck-Qf; Wed, 23 Oct 2024 02:37: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 1t3RFQ-0000uh-71; Wed, 23 Oct 2024 02:37:20 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1t3RFQ-0000pU-6D; Wed, 23 Oct 2024 02:37: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=aE4sRH1rasB0YEBXdQhNr7ixw8O+woTSC6uNQJKc/kU=; b=AshKIoYmbFa9XGFNw0LgBhtjGh
	JfAWmyHegM0DIofoVlLyOrns10Vcx3jz4C7OkTTLXe5QGv1pQu3h4aaZ4ZZx3k2lS9p2cXe3vyBto
	Nvw6lylYsWDdVGG0Bx9/fZyeEJckkQMs2nJzzqLgA0nuBQDV3E7HvD0w5svmybhFh+4w=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-188319-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 188319: 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-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-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-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-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-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-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qcow2: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-amd64-libvirt-raw: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-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-xl-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-raw: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-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-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=70262d59403b5cc94f076addee187f03e30a9687
X-Osstest-Versions-That:
    xen=49a068471d77820af5dac5ad062cde7129e3faae
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 23 Oct 2024 02:37:20 +0000

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

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 188317
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 188317
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 188317
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 188317
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 188317
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 188317
 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-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-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-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          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 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-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-xl-qcow2    14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-qcow2    15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-vhd 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-raw      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-raw      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-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-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                  70262d59403b5cc94f076addee187f03e30a9687
baseline version:
 xen                  49a068471d77820af5dac5ad062cde7129e3faae

Last test of basis   188317  2024-10-22 07:05:24 Z    0 days
Testing same since   188319  2024-10-22 20:07:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Federico Serafini <federico.serafini@bugseng.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-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-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-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-livepatch                                   pass    
 test-amd64-amd64-migrupgrade                                 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-amd64-amd64-xl-qcow2                                    pass    
 test-armhf-armhf-xl-qcow2                                    pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-amd64-amd64-xl-raw                                      pass    
 test-armhf-armhf-xl-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-libvirt-vhd                                 pass    
 test-armhf-armhf-libvirt-vhd                                 pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-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
   49a068471d..70262d5940  70262d59403b5cc94f076addee187f03e30a9687 -> master


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 02:54:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 02:54:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824390.1238519 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3RVi-0004gg-Ok; Wed, 23 Oct 2024 02:54:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824390.1238519; Wed, 23 Oct 2024 02:54: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 1t3RVi-0004gZ-La; Wed, 23 Oct 2024 02:54:10 +0000
Received: by outflank-mailman (input) for mailman id 824390;
 Wed, 23 Oct 2024 02:54: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=6MJf=RT=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t3RVh-0004gR-1s
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 02:54:09 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20604.outbound.protection.outlook.com
 [2a01:111:f403:2405::604])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 113cc05f-90ea-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 04:54:06 +0200 (CEST)
Received: from BN0PR02CA0038.namprd02.prod.outlook.com (2603:10b6:408:e5::13)
 by SA1PR12MB7317.namprd12.prod.outlook.com (2603:10b6:806:2ba::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Wed, 23 Oct
 2024 02:54:01 +0000
Received: from MN1PEPF0000ECDB.namprd02.prod.outlook.com
 (2603:10b6:408:e5:cafe::bf) by BN0PR02CA0038.outlook.office365.com
 (2603:10b6:408:e5::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29 via Frontend
 Transport; Wed, 23 Oct 2024 02:54:01 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MN1PEPF0000ECDB.mail.protection.outlook.com (10.167.242.139) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 02:54:00 +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.39; Tue, 22 Oct
 2024 21:54:00 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Tue, 22 Oct 2024 21:53:59 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 113cc05f-90ea-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Xmn6vsprNPQx8qmC/pIFoK4N7j5tbO8CYLCdOzXPCtVOkULdb6xJEDIfC14jw9OKX14BlcPB7FK0iMB6UiEBA9zVilqHpe0bF7kI9ERfAGwLwfDdPhapYTTKoIlUUjk9OZkN31GPjxTAHfKpQYi65NZiLIT47R1wFfDaKuOckNcIFJgZrFPUSWA8R4LU2yIwB1FTazk4n4j9r+5LYB/Op3mAQKYrzF3wOIMha9SGIgWbzm8AIp1I3MCWWcQMQcno3xID6BD41v3SenLnIKhUFGu7bb93Usok4V9KpaYNteaeR2Ul7Gll5WqRHfmffyqgFou/J4myWvQzCn74+klk6g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=+sGK78ck5V/PWYqHizZQ0QQoDxKmDUIh5FH+r9yUkao=;
 b=LT4D1blYMGEzRkzAOdn4ktUueoOywaZzfslqZodEMVK+i42v0p6A68vzxVJxQtBqZ3XZGztTtY0IyNsShJ4hSvio3o7oXKKTBSnNuVdTB2rpE88RQbDXmLjRdtygnnbMtRcEDO5GhkbP5J1qDWIYX0ibuD2w5HI4iV+agyGRfuIGss5FBEk3lu+MI+efKuR+KQCs9ztwxYynQBmiUgFOFOFgnIOa/srJN5cMh9ch0b7Na+Oq9SIpbA7rJJ1oPnFTO0TwQ4aL/UoOns96R/aDR0vLjWqBNk3uAiVoRMxBqz0q2LdQYKzGsUHYHVNMk1ZQBjlkxjaf67MXXK+OtItf8Q==
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=+sGK78ck5V/PWYqHizZQ0QQoDxKmDUIh5FH+r9yUkao=;
 b=p0Dfjl4Vc0/JbgsD0cWc5olu2bbQ8keyRfidRa82m1esyymF14TRVSWyOSF74VZLT+AMsAKZ5Pos7RA7lrPc3eiCpADR3fjoHzWknrEJuJM6AtrmIUA2GL27XMPkqQ3mTTLzB9s2qSpcvoVST8ACd7SKAs1VixfHthl8cGLn67c=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Victor Lira <victorm.lira@amd.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Doug Goldstein <cardoe@cardoe.com>
Subject: [RFC TEST_ARTIFACTS PATCH 1/2] artifacts: Initial commit
Date: Tue, 22 Oct 2024 19:53:33 -0700
Message-ID: <21a6030f352282d822c30de4a1e7ecab9a8c0a99.1729649255.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1729649255.git.victorm.lira@amd.com>
References: <cover.1729649255.git.victorm.lira@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB03.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECDB:EE_|SA1PR12MB7317:EE_
X-MS-Office365-Filtering-Correlation-Id: 2e4f408c-6c20-411b-4fb0-08dcf30df298
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eEk4a1pkMjFOL05wL3NaclhyS1dVeEU2ZUNkUmRkNTduZHI3aCsvM2hYTjBE?=
 =?utf-8?B?dFFUbUtoTFN2K3FEUGl0aFo3T0YvYTVEcHRjSUZhT3phRmtIaGpCRUc4TWx2?=
 =?utf-8?B?Z0FuaE9OL0hJYm1GMG0zTGVtTnNrUFNJbU5zQmI0aWdvd0Y4QlZ6TDFLRzk5?=
 =?utf-8?B?cG4yN0pwcE9udnNyV3pBeEZ1NFY3YU1ESnV5ejg1L1JPUFZUeGJOSlk0QjF5?=
 =?utf-8?B?dkhRMnFEZUwrZjJ6bzVNWjR5RzV2ZzJzY2czOThpaUlXRjBld2Nka3FZNEsy?=
 =?utf-8?B?VVJkRXhrWmlKb0g3ZlMvdk9uQVpJZVpHS0hhQTZnQkUvenBrVHZUWEZwMXdj?=
 =?utf-8?B?Z1h3RWU0TFErc2IxZ0haaTNsUmV5QmhOdlJJUHJEd1YxeDE0Z3VRdWxHbHpI?=
 =?utf-8?B?NE9iSXRkRXVHY1BxWGM2U1VlNnNwQWN6clc3TnJHU2o1T3JobnJvMTA5VGdC?=
 =?utf-8?B?RFpUSEZXMXF4bUpLa1VrQVJJcHBWaHgvSmRaelNCZkY0eVdPUlJ4NjVZVlJS?=
 =?utf-8?B?WVFwczRHaGdXQlhqbUZWVmx5N0VxTnhLQVhyU05NNzk0YTBqcGl4S1g4YXkr?=
 =?utf-8?B?Q3hBT2QxMTRsUm9ERm8wSmxyUlRkamVHejEzV2lNcjZGODRXK3JXSzR6MFdj?=
 =?utf-8?B?aFVBbklXSVdTa09KUUxKMXpXYy83K0dmR0tqR3AzRm9JSHk4MWJPc2tIOEt4?=
 =?utf-8?B?bzlSczVJc3NMN2ZIdDg3VmFNaEZ2ZjNzUy9DQU1kenNZTHdvYjN0R1Q1ZVdH?=
 =?utf-8?B?a0J2b1c5Y2ZwTzJqTVVEWUJkcEtDb2cxZ2tvY3VCUy9lR2oxMEN1QXU1bFlk?=
 =?utf-8?B?NlZGV2xNNXUyTXl4dk02allxN2xnUUtpN3JrVi9IQTJSRUkxazc5U0lGZ2NJ?=
 =?utf-8?B?c3pTbDZVSFlzbGtIOVZVRUlJUGxiNDRqb2d1bUNKNmtMd09YUzJ6TGlVQzhB?=
 =?utf-8?B?dTFhZkRxVjRQVkNvYzNiZ090dHVkTnBUbjNvSUZyN1d3anlpckZteGJnT1pn?=
 =?utf-8?B?WDFoMXdDYU5XSlBNRWIxVDFpVldzVldVM0RjRUJWQnQyd3lzcUNPbHo5VldC?=
 =?utf-8?B?dmdYT3FzRnlLclhjTHBrTFdjNEVydEtaRVUzT3FScTN0RlR1Yit5aStmVUhz?=
 =?utf-8?B?YzRlMC9zaXBRaUxKa3Z4YXZpMy9uVzdSVHhIV0ZLMlFYV0JLTU1UNHZXNjVW?=
 =?utf-8?B?VWlpTE5EWU43WVdic2xjMVYrS3J2WldLQ081MzE0UExkNzlrYlFCSHBDTHBV?=
 =?utf-8?B?RXFSQ0VyNnZjZHF1SXRvNzJlWWpYZUI4NXVOaTdIWHR2Ym14bFh5azBGc1JH?=
 =?utf-8?B?N3dqQml2SUowR0c3ZW1RRDVBQ2wrRTRpSUdCQUc2ZkRNMHBUUzlDNjdWelpp?=
 =?utf-8?B?RVpWUFQ0aUM5eHNaWkdTMlRoZW1waS9xQ2F3alh5S2ZNd3hBOHhEeHNkSlZW?=
 =?utf-8?B?YjQ5K2p0M0ZRTHVmSmJrMG1jcnU3WHZZanRCNjNzVytFdzBHWUtnMXpWR2Jq?=
 =?utf-8?B?SVdiU0NxWVZMelZVM0tJblF1NThCWW5nWlZtUnV1VUdDUHEzazg5R2ZaT0NV?=
 =?utf-8?B?U3VOR0VYUjh4VDhNaEN2VEZ0SDJVZUZNaXBCejZodm5HVXlWUTVFeFQvTERl?=
 =?utf-8?B?ZlZvajczSnJDU3I0K3dwR1FYSEZvb1FBK2IvN2VIWTRFd2JmN21IWkVxSVZq?=
 =?utf-8?B?UG1FZmhDeEhwb2dEeGVkKzJWQkZqbkt1Qk42N2g2TjROL2ZSODlGQ2ZDVUtp?=
 =?utf-8?B?czFDTXZ4cnF4ZHE4Slg3UXlMZE1KVnF1aGlTU2FzT2x3YWszQjRteENudkF2?=
 =?utf-8?Q?IK9QyY69q55mRxr9jZkt1yVoBhf6lXOhbGymo=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 02:54:00.9335
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2e4f408c-6c20-411b-4fb0-08dcf30df298
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:
	MN1PEPF0000ECDB.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7317

From: Stefano Stabellini <sstabellini@kernel.org>

Create new repository to produce common artifacts for Xen tests

Requested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 .gitlab-ci.yml                         | 48 ++++++++++++++++++++
 README.md                              | 10 ++++
 binaries/.gitignore                    |  3 ++
 images/Makefile                        | 20 ++++++++
 images/alpine/x86_64-build.dockerfile  | 25 ++++++++++
 images/alpine/x86_64-rootfs.dockerfile |  4 ++
 scripts/x86_64-argo-linux.sh           | 63 ++++++++++++++++++++++++++
 scripts/x86_64-kernel-linux.sh         | 31 +++++++++++++
 scripts/x86_64-rootfs-alpine.sh        | 58 ++++++++++++++++++++++++
 9 files changed, 262 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 README.md
 create mode 100644 binaries/.gitignore
 create mode 100644 images/Makefile
 create mode 100644 images/alpine/x86_64-build.dockerfile
 create mode 100644 images/alpine/x86_64-rootfs.dockerfile
 create mode 100755 scripts/x86_64-argo-linux.sh
 create mode 100755 scripts/x86_64-kernel-linux.sh
 create mode 100755 scripts/x86_64-rootfs-alpine.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..f2f7738
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,48 @@
+workflow:
+  name: "xen test artifacts"
+
+.artifacts:
+  stage: build
+  image:
+    name: registry.gitlab.com/xen-project/people/victormlira/test-artifacts/${CONTAINER}
+  artifacts:
+    name: "${CI_JOB_NAME_SLUG}"
+    paths:
+      - binaries/
+
+.x86_64-artifacts:
+  extends: .artifacts
+  image:
+    docker:
+      platform: linux/amd64
+      user: xenproject
+  variables:
+    CONTAINER: alpine:x86_64-build
+  tags:
+    - x86_64
+
+x86_64-kernel-linux-6.6.56:
+  extends: .x86_64-artifacts
+  script:
+    - . scripts/x86_64-kernel-linux.sh
+  variables:
+    LINUX_VERSION: 6.6.56
+
+x86_64-rootfs-alpine-3.18:
+  extends: .x86_64-artifacts
+  variables:
+    CONTAINER: alpine:x86_64-rootfs
+  image:
+    docker:
+      user: root
+  script:
+    - . scripts/x86_64-rootfs-alpine.sh
+
+x86_64-argo-linux-6.6.56:
+  extends: .x86_64-artifacts
+  script:
+    - . scripts/x86_64-argo-linux.sh
+  variables:
+    LINUX_VERSION: 6.6.56
+    ARGO_SHA: "705a7a8a624b42e13e655d3042059b8a85cdf6a3"
+    ARGOEXEC_SHA: "d900429f6640acc6f68a3d3a4c945d7da60625d8"
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0d72519
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+# Xen Project Test Artifacts
+
+## Overview
+
+This repository is used to produce common artifacts for Xen tests.
+
+##
+
+
+##
diff --git a/binaries/.gitignore b/binaries/.gitignore
new file mode 100644
index 0000000..95e2a2e
--- /dev/null
+++ b/binaries/.gitignore
@@ -0,0 +1,3 @@
+# Keep this directory around to be available in CI/CD jobs.
+*
+!.gitignore
diff --git a/images/Makefile b/images/Makefile
new file mode 100644
index 0000000..41638d7
--- /dev/null
+++ b/images/Makefile
@@ -0,0 +1,20 @@
+
+# The base of where these containers will appear
+REGISTRY := registry.gitlab.com/xen-project/people/victormlira/test-artifacts
+CONTAINERS = $(subst .dockerfile,,$(wildcard */*.dockerfile))
+
+help:
+	@echo "Containers to build test artifacts."
+	@echo "To build one run 'make DISTRO/TAG'."
+	@echo "Available containers:"
+	@$(foreach file,$(sort $(CONTAINERS)),echo ${file};)
+	@echo "To push container builds, set the environment variable PUSH"
+
+%: %.dockerfile ## Builds containers
+	docker build --pull -t $(REGISTRY)/$(@D):$(@F) -f $< $(<D)
+	@if [ ! -z $${PUSH+x} ]; then \
+		docker push $(REGISTRY)/$(@D):$(@F); \
+	fi
+
+.PHONY: all
+all: $(CONTAINERS)
diff --git a/images/alpine/x86_64-build.dockerfile b/images/alpine/x86_64-build.dockerfile
new file mode 100644
index 0000000..374952f
--- /dev/null
+++ b/images/alpine/x86_64-build.dockerfile
@@ -0,0 +1,25 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 alpine:3.18
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+WORKDIR /build/
+
+RUN <<EOF
+adduser -D xenproject
+apk --no-cache add \
+      musl-dev  \
+      build-base \
+      libc6-compat \
+      linux-headers \
+      bash \
+      git \
+      curl \
+      flex \
+      bison \
+      elfutils-dev \
+      autoconf \
+      automake \
+      libtool \
+      openssl-dev
+EOF
diff --git a/images/alpine/x86_64-rootfs.dockerfile b/images/alpine/x86_64-rootfs.dockerfile
new file mode 100644
index 0000000..b912e9c
--- /dev/null
+++ b/images/alpine/x86_64-rootfs.dockerfile
@@ -0,0 +1,4 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 alpine:3.18
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/scripts/x86_64-argo-linux.sh b/scripts/x86_64-argo-linux.sh
new file mode 100755
index 0000000..a110a33
--- /dev/null
+++ b/scripts/x86_64-argo-linux.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+
+if test -z "${LINUX_VERSION}"
+then
+    >&2 echo "LINUX_VERSION must be set"; exit 1
+fi
+
+set -ex -o pipefail
+
+BUILDDIR="${PWD}"
+COPYDIR="${BUILDDIR}/binaries/"
+
+# Prepare Linux sources
+curl -fsSLO \
+    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
+tar xJf linux-"${LINUX_VERSION}".tar.xz
+cd linux-"${LINUX_VERSION}"
+make ARCH=x86 defconfig
+make ARCH=x86 xen.config
+./scripts/config --enable BRIDGE
+./scripts/config --enable IGC
+./scripts/config --enable TUN
+cp .config .config.orig
+cat .config.orig \
+    | grep 'XEN' \
+    | grep '=m' \
+    | sed 's/=m/=y/g' \
+    >> .config
+make ARCH=x86 olddefconfig
+make ARCH=x86 modules_prepare
+
+# Build Linux kernel module for Xen Argo
+cd "${BUILDDIR}"
+git clone \
+    --depth=1 --branch=master \
+    https://github.com/OpenXT/linux-xen-argo.git
+git -C "${BUILDDIR}/linux-xen-argo" switch --detach "${ARGO_SHA}"
+make -C "linux-${LINUX_VERSION}" M="${BUILDDIR}/linux-xen-argo/argo-linux" \
+    CFLAGS_MODULE="-Wno-error" KBUILD_MODPOST_WARN=1
+cp "linux-xen-argo/argo-linux/xen-argo.ko" "${COPYDIR}/xen-argo.ko"
+
+# Build Linux libargo shared library, applying fixes to build in Alpine Linux
+cd "${BUILDDIR}/linux-xen-argo/libargo"
+sed -i "s|AM_INIT_AUTOMAKE|AC_CONFIG_AUX_DIR(.)\nAM_INIT_AUTOMAKE|" configure.ac
+sed -i "s/__SOCKADDR_COMMON (sxenargo_)/sa_family_t sxenargo_family/" src/libargo.h
+sed -i "s/__SOCKADDR_COMMON_SIZE/(sizeof (unsigned short int))/" src/libargo.h
+autoreconf --install
+./configure --prefix="${COPYDIR}" CPPFLAGS="-I${PWD}/../argo-linux/include"
+make
+make install
+
+# Build Linux user program, modifying for xilinx argo test
+cd "${BUILDDIR}"
+wget "https://raw.githubusercontent.com/OpenXT/xenclient-oe/${ARGOEXEC_SHA}/\
+recipes-openxt/argo-exec/argo-exec/argo-exec.c"
+sed -i "s|#include <xen/xen.h>||" argo-exec.c
+sed -i "s|ret = shuffle(s, fds\[0\], fds\[1\]);|ret = shuffle(s, 0, 1);|" \
+    argo-exec.c
+gcc -I"${BUILDDIR}/linux-xen-argo/libargo/src" \
+    -I"${BUILDDIR}/linux-xen-argo/argo-linux/include" \
+    -L"${COPYDIR}/lib/" \
+    -o argo-exec argo-exec.c -largo
+cp argo-exec "${COPYDIR}"
diff --git a/scripts/x86_64-kernel-linux.sh b/scripts/x86_64-kernel-linux.sh
new file mode 100755
index 0000000..17be36b
--- /dev/null
+++ b/scripts/x86_64-kernel-linux.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+if test -z "${LINUX_VERSION}"
+then
+    >&2 echo "LINUX_VERSION must be set"; exit 1
+fi
+
+set -ex -o pipefail
+
+WORKDIR="${PWD}"
+COPYDIR="${WORKDIR}/binaries/"
+
+# Build Linux
+curl -fsSLO \
+    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
+tar xJf linux-"${LINUX_VERSION}".tar.xz
+cd linux-"${LINUX_VERSION}"
+make ARCH=x86 defconfig
+make ARCH=x86 xen.config
+./scripts/config --enable BRIDGE
+./scripts/config --enable IGC
+./scripts/config --enable TUN
+cp .config .config.orig
+cat .config.orig \
+    | grep 'XEN' \
+    | grep '=m' \
+    | sed 's/=m/=y/g' \
+    >> .config
+make ARCH=x86 olddefconfig
+make ARCH=x86 "-j$(nproc)" --quiet
+cp arch/x86/boot/bzImage "${COPYDIR}"
diff --git a/scripts/x86_64-rootfs-alpine.sh b/scripts/x86_64-rootfs-alpine.sh
new file mode 100755
index 0000000..28d8e30
--- /dev/null
+++ b/scripts/x86_64-rootfs-alpine.sh
@@ -0,0 +1,58 @@
+WORKDIR="${PWD}"
+
+apk update
+
+# xen runtime deps
+apk add musl
+apk add libgcc
+apk add openrc
+apk add busybox
+apk add sudo
+apk add dbus
+apk add bash
+apk add python3
+apk add zlib
+apk add ncurses
+apk add yajl
+apk add libaio
+apk add xz
+apk add util-linux
+apk add argp-standalone
+apk add libfdt
+apk add glib
+apk add pixman
+apk add curl
+apk add udev
+apk add pciutils
+apk add libelf
+
+# Xen
+cd /
+# Minimal ramdisk environment in case of cpio output
+rc-update add udev
+rc-update add udev-trigger
+rc-update add udev-settle
+rc-update add loopback sysinit
+rc-update add bootmisc boot
+rc-update add devfs sysinit
+rc-update add dmesg sysinit
+rc-update add hostname boot
+rc-update add hwclock boot
+rc-update add hwdrivers sysinit
+rc-update add modules boot
+rc-update add killprocs shutdown
+rc-update add mount-ro shutdown
+rc-update add savecache shutdown
+rc-update add local default
+cp -a /sbin/init /init
+echo "ttyS0" >> /etc/securetty
+echo "hvc0" >> /etc/securetty
+echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab
+echo "hvc0::respawn:/sbin/getty -L hvc0 115200 vt100" >> /etc/inittab
+echo > /etc/modules
+passwd -d "root" root
+
+# Create rootfs
+cd /
+tar cvzf "${WORKDIR}/binaries/initrd.tar.gz" \
+    bin dev etc home init lib mnt opt root sbin usr var
--
2.25.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 02:54:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 02:54:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824394.1238529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3RWJ-00059x-0U; Wed, 23 Oct 2024 02:54:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824394.1238529; Wed, 23 Oct 2024 02:54: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 1t3RWI-00059q-Tj; Wed, 23 Oct 2024 02:54:46 +0000
Received: by outflank-mailman (input) for mailman id 824394;
 Wed, 23 Oct 2024 02:54: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=6MJf=RT=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t3RWI-00051s-Dh
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 02:54:46 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on20609.outbound.protection.outlook.com
 [2a01:111:f403:2406::609])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2821ed89-90ea-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 04:54:44 +0200 (CEST)
Received: from SJ0PR05CA0149.namprd05.prod.outlook.com (2603:10b6:a03:33d::34)
 by SJ1PR12MB6291.namprd12.prod.outlook.com (2603:10b6:a03:456::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Wed, 23 Oct
 2024 02:54:39 +0000
Received: from MWH0EPF000971E2.namprd02.prod.outlook.com
 (2603:10b6:a03:33d:cafe::a8) by SJ0PR05CA0149.outlook.office365.com
 (2603:10b6:a03:33d::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.14 via Frontend
 Transport; Wed, 23 Oct 2024 02:54:39 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MWH0EPF000971E2.mail.protection.outlook.com (10.167.243.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 02:54:38 +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.39; Tue, 22 Oct
 2024 21:54:21 -0500
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.39; Tue, 22 Oct
 2024 21:53:50 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Tue, 22 Oct 2024 21:53:49 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2821ed89-90ea-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=dJ/NCCHXeKE2+3sCKgW7BMYHnug7X7zRUYJ28xCio7FU5VKr+kMFQD6GUZcrgXANjd/it/oA+FZy35B5AG2LIDKBN+7PbzCk9J6Oa3qQPzOfQ4ldJxM8Wr1eHi8dgYgGKK/aP7Guz8Eb13+3jTIEEr3KNg/8ma24MzskWx67OhI9TkhV6NNFOkSXu+WqdboYfM2vOxmPPHzYmeZ5LCKP5sJO03b7Hd7ADpMk6GnUc5v9EtxXSdaE3oYBOpaQH8q7BNAvaQDua6wxPe1qj0XUQfKzLNKSSnMT9BeCF0fm+eU5ypd/V/xeCssg4ZUfTvrB75gqnQe2XOlwjyUIGXq7Yw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=XeVq+a/a2D6KtSOF8g9EkO6PZ2zI7kCe7cjqoeQZhAw=;
 b=uxdP3BIoXer4jd+B18n7BFcIvyFw9+0E8W+A/m0w1MZyh+m9qKDxfQDTFi0mtQqSs9nyJW8ct7NhKCWp38KoBQmn3T3ezpotjshyvWRw4lt2f/c4RlrFdqniFPLgIkIdmiWM4MUA0bhGq3mXZWpm8DiorsA6euj/OUkZ/s9ReYUhLOJHOjA/5uJhrMkxCAkqjs/pwMUt20RUIEcLrXy33mjQy1AK+vxDbGYT1UJZSovdKfXCvakKpzsjl4ramnLSJwsmuZ2KepGGn75m1UaX/bfW4Odu8w3v4aRWnkBj27hB10WnWqBgdEgfOirQGgIQYr42DnJtIOSloyySJHaCtw==
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=XeVq+a/a2D6KtSOF8g9EkO6PZ2zI7kCe7cjqoeQZhAw=;
 b=PRjjlQqQFgkH98oVpiC2ta0yUxBpCB87b/6mwyu4Nyjdaxo5NCmt2sRASOHIwUFWdK8M5HOCEgc3XGT4nR+jC+Nf6HsSwocZUy+JUtbJ6jATWIGywO9SHNW9uqdPMsUkok8DcR/1CBrdYvQgAI0h6b4GSgarEjA5miWjs8ZjDHA=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC TEST_ARTIFACTS PATCH 0/2] artifacts: Initial commit
Date: Tue, 22 Oct 2024 19:53:31 -0700
Message-ID: <cover.1729649255.git.victorm.lira@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: MWH0EPF000971E2:EE_|SJ1PR12MB6291:EE_
X-MS-Office365-Filtering-Correlation-Id: 07af8cec-8283-4fa9-a96b-08dcf30e0957
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?8nfgaR+j8ZXyieTjLaOi2jX9GnxetLJKydlhI/riOJwx5ah8PlZ369gqyFOL?=
 =?us-ascii?Q?zTscyemSgaRvlbUceowUzWVBnLo6zSTqH36eecYBjjASGY6iLQtO1vKlS3gQ?=
 =?us-ascii?Q?L1Y2qXFhIrQEjw3PY69z6cNmKj18NomM4AK8knBlfNrxQ45zLEhtNMjHRd9r?=
 =?us-ascii?Q?8AEgSLZsk3EviccEJVABTwo7YGxBdTGA7kl+/gE/DZlVvwEfacd+MF6An6VI?=
 =?us-ascii?Q?cUFNmqR5nAqTPzFRjEMBXVNfICVrFUG3mh48YGhzJ0Y8P5woszpr1vAJ7QuK?=
 =?us-ascii?Q?om1G/mAQD6SA8T21E0QOhrA8xMd0axuTofUu7Y6syFPH939JKLpNqPZ5jaak?=
 =?us-ascii?Q?L7ebtAqqjVst34zV0MTwtJANcjJEvJUCsTaLq2qG/BbJJeOInkV+M4UcZ1Aj?=
 =?us-ascii?Q?00OOoDC0YuENcQau1lzlwXZD/fVYr3JxMCTr6qetuxfkOBQ1SaYcHb5+3S4Z?=
 =?us-ascii?Q?JckYOlaRy6SMqu42+JWck8zuOSW/YUvI97+ERYwWP2DPlJHHmUeKrysa/yXB?=
 =?us-ascii?Q?hlLaBLvUmEQk5cp+gH1e4XokutgrFh+qxHidiQTShJrSmVDWvSeIqAq6Czhs?=
 =?us-ascii?Q?KG/cmOPCQT5ksxGrnsyrbt6NdnmerKqpq06tBUae2Sbtq5i6NAKkZ/YMIORn?=
 =?us-ascii?Q?BrXC47LeCNcGmdyO209Bk/PDdr7EFunxyIXGSGwc1yqEn7Ry/+IlI/UOVf8e?=
 =?us-ascii?Q?nDhYKuU4H0XAvqZKxwmhy+56li6zQnsE/wL0b9mD+IJ9VZWHd/t4nW9Eqwwv?=
 =?us-ascii?Q?3L7CtU7uJdX16UQnmh/h6PAWloav4uR+ouBeVX+juX9nBN/zvG3RY4fyNKMr?=
 =?us-ascii?Q?OzSzqrfAQN3oX6kXCBNbSlbRRXrykWFv6ziJMnaIJTlJ/4kimBs5yaxzHtTM?=
 =?us-ascii?Q?gqQFs5VvFpf5evhv+ThXotxnCLrXP3kLLU2D5h2NTxTn0mG+cV4Zujs2mLKh?=
 =?us-ascii?Q?u2s8ku6zhyVw2oqxvUW038UXSzdxgBvbRcsJcnW00QsBHDjHrtTADv0dXJRR?=
 =?us-ascii?Q?XLiJZYWUPWSM4nCZOXDpZZu12oKJ7baf+PHTUZ4Fje3oN4sEv9MWdnFq6vJ5?=
 =?us-ascii?Q?0cAJK2ydFNBvRGZZsVqPSl0Ct861MYNFR/MecaG7I2mYjzLkC5PY5xeuN+Sx?=
 =?us-ascii?Q?VFRtQhjo6Mj2pGcptaHw3G4FXIeUFzqsw8frmiu8DOYd8P09M1j/T2TpakeH?=
 =?us-ascii?Q?br+keY7LDzyi0IhB2/3XMOgsu1gW9xdT2Gg36KTbwlR0qxRgXxxsmcSe/na/?=
 =?us-ascii?Q?WToCXz7iHZeC2ZXurwIQibTcx/vTGstFbdQmaeexuJsehnjpnLaNCBUGlPy4?=
 =?us-ascii?Q?3JJn018PV8Vois4pQhl3DenahEL6TKUuH18rutIWM1YJ3aZvLqU2TgfmY4HZ?=
 =?us-ascii?Q?dahrLDvZYOcUIYVHv4Q5z6whguGCVjRe643Ag/3HqiVmuBv+hRKmWQt54sOV?=
 =?us-ascii?Q?b0CzwgOWZ64=3D?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 02:54:38.9880
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 07af8cec-8283-4fa9-a96b-08dcf30e0957
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:
	MWH0EPF000971E2.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6291

From: Victor Lira <victorm.lira@amd.com>

This patch series is a proof of concept that a separate repository can be
used to generate kernel, rootfs, and other commonly used binary artifacts,
and have Xen test jobs load these instead of generating them every run.

The current configuration of Xen CI generates these using "dummy" jobs
in every pipeline. This unecessarily uses a large amount of storage and
network traffic because artifacts are duplicated overprojects/branches.

Instead, use GitLab CI built-in functionality to retrieve them from a
separate repository using the "needs" keyword. The "needs:project" feature
is currently limited to 5 artifacts archives from external pipelines per
job, but web requests can be used if more are needed. It's preferable to
use this as opposed to just web requests since this doesn't requre modying
the any test scripts as long as the archive has the same directory
structure.

The example of a test artifacts repository:
https://gitlab.com/xen-project/people/victormlira/test-artifacts/-/pipelines/1508031895

The example of the use:
https://gitlab.com/xen-project/people/sstabellini/xen/-/pipelines/1508069266

Stefano Stabellini (1):
  Initial commit

--
2.25.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 02:54:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 02:54:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824395.1238540 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3RWK-0005Os-8P; Wed, 23 Oct 2024 02:54:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824395.1238540; Wed, 23 Oct 2024 02: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 1t3RWK-0005Oj-4q; Wed, 23 Oct 2024 02:54:48 +0000
Received: by outflank-mailman (input) for mailman id 824395;
 Wed, 23 Oct 2024 02: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=6MJf=RT=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t3RWJ-00051s-Dp
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 02:54:47 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20623.outbound.protection.outlook.com
 [2a01:111:f403:2414::623])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 27c64948-90ea-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 04:54:44 +0200 (CEST)
Received: from SJ0PR03CA0289.namprd03.prod.outlook.com (2603:10b6:a03:39e::24)
 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.8093.17; Wed, 23 Oct
 2024 02:54:40 +0000
Received: from MWH0EPF000971E4.namprd02.prod.outlook.com
 (2603:10b6:a03:39e:cafe::4d) by SJ0PR03CA0289.outlook.office365.com
 (2603:10b6:a03:39e::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29 via Frontend
 Transport; Wed, 23 Oct 2024 02:54:40 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MWH0EPF000971E4.mail.protection.outlook.com (10.167.243.72) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Wed, 23 Oct 2024 02:54:39 +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.39; Tue, 22 Oct
 2024 21:54:21 -0500
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.39; Tue, 22 Oct
 2024 21:53:54 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Tue, 22 Oct 2024 21:53:53 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 27c64948-90ea-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=XytwHAvdDHcr5eRiKnl1osTaOOwQ8Up/1c+apxrZcJzcFOKMOXjic5jQ6U1cDnu7Go65TYSwWzk2Se0SHuTTSgf+5VabhtHAzOU4s1CrqxBNsvDn5HP1GDW+lXXfjrgmCGIzNktIOLjUSZx88booIsEDikHC6OCoYQEUMWJpAzmwhVbMtkwJZ/wWp3qLhyMoLKZcP2avMI8FX795T7z/lDYJ8HflPJS39FJQ+MUgdsx38WH0bLmeczfsVPVqZJGFkvGqMo4BezaX2yLYHq8/AhFdPmqPhnhVOpVYesRU8FIwcuXmoSSN1tz20tpSNROmn7NWAeX0WcMr4WpcF4eG+g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=mF7ANZG41NOeCcW0ViemgBipnamMUigTtUgKtlTP+LU=;
 b=zEm6sGIny4LNy2UwaD38FRPDtKK+OfsaimFAwVOZFHIQ3QhQ+2p3OD9slhUHL3KeaWcoc4HquMhGWuzkPqMHrbsdTvWZh1rg6ehg3aW7hixRkSCF/3LdqhPsvq6lq7JgpdleYHCTIYuvzkUUfNSPXI93ejd1R4caxxp+Zz9SSygJ1AvuINK0aTheZJqC4xHFMxT4FvA6jwRuqT65gIHfmsUqXLqJfxGG2K+u64q7XPcLvV6Yz4bxQiYjmEXQwVvpawmZ6qC8M0fEOLhG7FWRdlGFsrEKq2bL4I0CfjTvGbi/kpSUAYXlsWGk1rvJEbeTHK4c1tVLqAi4bvQq6n1ZBQ==
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=mF7ANZG41NOeCcW0ViemgBipnamMUigTtUgKtlTP+LU=;
 b=MhkDIJ7QBikIb87bSAzCfg92+VzoU90ZMzA9xMmtScg1a+kQ35rLUTqcLEp8Xuzsgb8AuZTloMwLt8F8ik1eRRRFnqQQbVz5RWoTE7GgpctJ46kp9EURaWO3FAiZFsjNXL8JzKimiuU/Lg5/JWpi8Mjh4/ZSpab3AxoO542DQw8=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC XEN PATCH 2/2] automation: add xilinx test (linux argo)
Date: Tue, 22 Oct 2024 19:53:32 -0700
Message-ID: <17124c911858ccb2842598cd9b9b3c88c4d4dd28.1729649076.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <21a6030f352282d822c30de4a1e7ecab9a8c0a99.1729649255.git.victorm.lira@amd.com>
References: <cover.1729649255.git.victorm.lira@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB05.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000971E4:EE_|SJ0PR12MB8614:EE_
X-MS-Office365-Filtering-Correlation-Id: fc9ee032-614c-4728-7758-08dcf30e0993
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?WGJGTHp6bE84MWpEbkxrRlNxbTVjblZpUnhIQmQ3RDBiL2xndm5QZElselcv?=
 =?utf-8?B?SGNtdGFnSzc0QTQ1ZTNjdzZYWVQxSFlyZmlXRGdncDV0MCtoT2w0czY5Nk93?=
 =?utf-8?B?c25tR2lsdW9FMDhCV0VxK0VuSVQ1bHZSN3BlVmF5YUl6MERjWWZNQ2RUVzRu?=
 =?utf-8?B?NjhHTFpQVXVvVFpJTXRabm9ueW5kanhWejZNRzlOUlFlZnhjWDlLenBsaG9n?=
 =?utf-8?B?SWFzOUV1UFpuazBoTVVwYVFWMkI3YnZZRFBwQXd4QStBVkNrT3AxdFZkYm4w?=
 =?utf-8?B?WlAyU3dxRU5Da1ZEdHJsQkI1ZFJ0Z1BNMjJtRVduRGlKL2I4YTZuQXk4RzNq?=
 =?utf-8?B?MWJRUmEzdXdJOUJkbW1rUUMzNW9weXNSTWNOZWU1TGZ6TmFhbDNJVzVWcXJZ?=
 =?utf-8?B?T2p4Vi9lTi9yZkJpK2ZtK2lzN01nMEg2VUFHa2w2RnR4SGNveWtydUdVRU9v?=
 =?utf-8?B?ZjV5MTVQMXA3UEpQakxRWGxhbFpCMDZYZTFWUmdicHlUV050eExFcGJyUUVj?=
 =?utf-8?B?VGRrMnhJOGpXZDBRSXlwcTlweEM0SXErdVpVeHJ3Z0JvdTRqbTlkYkhESnR5?=
 =?utf-8?B?Uy90cUY0bXJSeWI3ZXZkeEt2anRqekZrQkN5Z2c5KzNMZUpGWmZnOUQ4SVM5?=
 =?utf-8?B?TnB5YzVLWVJqVGtkTmFrTXRzdVB5a0x3Yzd6QWNmNDIrYmNxaGxlWlVJVVJR?=
 =?utf-8?B?Q3JydGNodkVRaEpGSXBsM0xLNVdxcDlObnJJK2psUjlESXl0WlZROHUrRy9a?=
 =?utf-8?B?VWc0VGNjTCt5dnlPck1hbXc2bkdRNnMraWJWUWNtSlFDd0szSTNqY09CR1JS?=
 =?utf-8?B?NkJyZ3B3VHlab29rSCthN3BoOVJFckY4anFuYzVvckw3SGdwRm5aWVlpcEl6?=
 =?utf-8?B?NVVkMm9BamM1SzhqeDRwcWU4a1pCOURFUUlja1NDd2kxbCs1MnR0ZnhjVWto?=
 =?utf-8?B?UVlDNzkwNzBYVjhzZk9BUnNEbE9CZFFyOUM1cmxlWUlmengxS0hQTTNwUEdJ?=
 =?utf-8?B?aHc1ZkprY3RZM1VCV3JucHlxWCt5ZUhxUXIxOFlqVmtkSCtGNCswc1U5RmdL?=
 =?utf-8?B?Skl0d1RTRDc3dnNjbjd4L1EyUnZpVVlUSTBzb1h0Y2g0K1N1VlFMV1RVNzhZ?=
 =?utf-8?B?T01uQ3dvckhweXFWZjVMSHA1QTgvblJZZ3NMaGxRc3AxM0JqOS9PVjQvclM5?=
 =?utf-8?B?cTRQMFRkQSswaWZBNEhoT0hsMVoxR1VnaFhDbzN5S0pFKzNnSU5SSGx1LzRE?=
 =?utf-8?B?YmlKbWNrMUpzSUh4MnJlZ3RMU2piS1EvMk1qS251aTNNcHFUQVZDUnpUUm1r?=
 =?utf-8?B?bHFpV1h6YVhBTzJaMVNyaml3NTRlM3hjRkZlR0QrcXF5TXRhTkxFWWRwdWtU?=
 =?utf-8?B?SmlxaFoxUWd2K0daTXdnZng4TS9yblIxRmFyaWJXdnZkdnd4WDlZQ0crTGEw?=
 =?utf-8?B?ajc2cE9jbnVhRXpqRTEzcERESStDNXRjU3oranJRakdvMENHT2VxWXlNNFhJ?=
 =?utf-8?B?RVdXcGtNY2JET0hQZTJmVEQ5Z1JJMWJmM010em5EK0JiQUpOY09qV2Y5V2dS?=
 =?utf-8?B?UEpHVnFrWWc0V2F6anY4WXZlbk0vVXJUWWM1a1lpV3VsR0ZLK0tpRmlYM2dC?=
 =?utf-8?B?WXhDRTJBOG4vcENqajdZaGFObENiWUZlN2NCRVJ0SFhUTXFoM3M5QTF0VUJY?=
 =?utf-8?B?WS82aFZ1TVk4QnIzdVZRbi8yd3B4VFFiNFFRYkxoNldnTVl1QjB4bXlvaGYv?=
 =?utf-8?B?VlhPTW1JTGIyelZUNSsrUlRObEt6dDhYT0NGVUFUT284bkk3QitMeE1lbGpS?=
 =?utf-8?B?MEhQSGlOUVNTcXpLbnlqOFJITStLOUFqc0Fwem1FMGtBYU9MTGd3OVFadVI4?=
 =?utf-8?B?MnVqbWFjV1pjYTdmaXFEWFA4ZklVS2NFclRJaE82VUd5YWc9PQ==?=
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:(13230040)(82310400026)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 02:54:39.3643
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fc9ee032-614c-4728-7758-08dcf30e0993
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:
	MWH0EPF000971E4.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8614

From: Victor Lira <victorm.lira@amd.com>

Add x86_64 hardware test that creates a Xen Argo communication
connection between two PVH domains. In the test, dom0 creates a domU and
listens for messages sent by the domU through Argo.

To accomplish this, build Xen with CONFIG_ARGO=y.

Update the xilinx x86_64 test script to support the new test, and add
"sync_console" to command line to avoid an issue with console messages
being lost.

Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 automation/gitlab-ci/build.yaml               |  6 ++
 automation/gitlab-ci/test.yaml                | 16 ++++
 .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 +++++++++++++------
 3 files changed, 73 insertions(+), 25 deletions(-)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index c2db69ecf8..f425744f8b 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -340,6 +340,12 @@ alpine-3.18-gcc-debug:
   variables:
     CONTAINER: alpine:3.18
     BUILD_QEMU_XEN: y
+    EXTRA_XEN_CONFIG: |
+      CONFIG_EXPERT=y
+      CONFIG_UNSUPPORTED=y
+      CONFIG_ARGO=y

 debian-bookworm-gcc-debug:
   extends: .gcc-x86-64-build-debug
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index b27c2be174..2d4709d393 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -192,6 +192,22 @@ xilinx-smoke-dom0-x86_64-gcc-debug:
     - *x86-64-test-needs
     - alpine-3.18-gcc-debug

+xilinx-smoke-dom0-x86_64-gcc-debug-argo:
+  extends: .xilinx-x86_64
+  script:
+    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
+  needs:
+    - alpine-3.18-gcc-debug
+    - project: xen-project/people/victormlira/test-artifacts
+      job: x86_64-kernel-linux-6.6.56
+      ref: vml-tests-separate-artifacts
+    - project: xen-project/people/victormlira/test-artifacts
+      job: x86_64-rootfs-alpine-3.18
+      ref: vml-tests-separate-artifacts
+    - project: xen-project/people/victormlira/test-artifacts
+      job: x86_64-argo-linux-6.6.56
+      ref: vml-tests-separate-artifacts
+
 adl-smoke-x86-64-gcc-debug:
   extends: .adl-x86-64
   script:
diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
index 7027f083ba..f70cfdc155 100755
--- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
+++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
@@ -9,6 +9,8 @@ fatal() {
     exit 1
 }

+WORKDIR="${PWD}"
+
 # Test parameter defaults.
 TEST="$1"
 PASS_MSG="Test passed: ${TEST}"
@@ -24,9 +26,10 @@ kernel = "/boot/vmlinuz"
 ramdisk = "/boot/initrd-domU"
 extra = "root=/dev/ram0 console=hvc0"
 memory = 512
-vif = [ "bridge=xenbr0", ]
-disk = [ ]
 '
+DOMU_CFG_EXTRA=""
+copy_domU_files () { :; }
+copy_dom0_files () { :; }

 # Select test variant.
 if [ "${TEST}" = "ping" ]; then
@@ -39,6 +42,14 @@ done
 echo \"${DOMU_MSG}\"
 "
     DOM0_CMD="
+brctl addbr xenbr0
+brctl addif xenbr0 eth0
+ifconfig eth0 up
+ifconfig xenbr0 up
+ifconfig xenbr0 192.168.0.1
+# get domU console content into test log
+tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
+xl create /etc/xen/domU.cfg
 set +x
 until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
     sleep 1
@@ -46,6 +57,34 @@ done
 set -x
 echo \"${PASS_MSG}\"
 "
+    DOMU_CFG_EXTRA='
+vif = [ "bridge=xenbr0", ]
+disk = [ ]
+'
+elif [ "${TEST}" = "argo" ]
+then
+    PASS_MSG="TEST: Message from DOMU"
+    XEN_CMD_EXTRA="argo=1,mac-permissive=1"
+    DOMU_CMD="
+insmod /root/xen-argo.ko
+until false
+do
+  echo \"${PASS_MSG}\"
+  sleep 1
+done | argo-exec -p 28333 -d 0 -- /bin/echo
+"
+    DOM0_CMD="
+insmod /root/xen-argo.ko
+xl create /etc/xen/domU.cfg
+argo-exec -l -p 28333 -- /bin/echo
+"
+copy_dom0_files ()
+{
+    cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
+    cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
+    cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
+}
+copy_domU_files () { copy_dom0_files; }
 else
     fatal "Unknown test: ${TEST}"
 fi
@@ -54,18 +93,18 @@ fi
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir proc run srv sys
 rm var/run
 echo "#!/bin/sh
-
+set -x
+export LD_LIBRARY_PATH=/usr/local/lib
+PATH=/usr/local/bin:/usr/local/sbin:\$PATH
 ${DOMU_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 sed -i -e 's/^Welcome/domU \0/' etc/issue
+copy_domU_files
 find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
 cd ..
 rm -rf rootfs
@@ -74,37 +113,24 @@ rm -rf rootfs
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir boot
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir boot proc run srv sys
 rm var/run
 cp -ar ../binaries/dist/install/* .
 echo "#!/bin/bash
-
+set -x
 export LD_LIBRARY_PATH=/usr/local/lib
 bash /etc/init.d/xencommons start
-
-brctl addbr xenbr0
-brctl addif xenbr0 eth0
-ifconfig eth0 up
-ifconfig xenbr0 up
-ifconfig xenbr0 192.168.0.1
-
-# get domU console content into test log
-tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
-xl create /etc/xen/domU.cfg
 ${DOM0_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
-echo "${DOMU_CFG}" > etc/xen/domU.cfg
+echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
 echo "rc_verbose=yes" >> etc/rc.conf
 echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
 echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
 mkdir -p var/log/xen/console
 cp ../binaries/bzImage boot/vmlinuz
 cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
+copy_dom0_files
 find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
 cd ..

@@ -116,7 +142,7 @@ cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
 cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
 echo "
 net_default_server=10.0.6.1
-multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE}
+multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
 module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
 module2 (tftp)/${TEST_BOARD}/initrd-dom0
 boot
--
2.25.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 04:57:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 04:57:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824417.1238549 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3TQq-0003he-R0; Wed, 23 Oct 2024 04:57:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824417.1238549; Wed, 23 Oct 2024 04:57: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 1t3TQq-0003hX-OQ; Wed, 23 Oct 2024 04:57:16 +0000
Received: by outflank-mailman (input) for mailman id 824417;
 Wed, 23 Oct 2024 04:57: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=S7t1=RT=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t3TQq-0003hR-Cr
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 04:57: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 44302353-90fb-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 06:57:13 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 744FD5C56FA;
 Wed, 23 Oct 2024 04:57:07 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C0062C4CEC6;
 Wed, 23 Oct 2024 04:57: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: 44302353-90fb-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729659431;
	bh=+vuwRm6fl1Z40OFBw/Am53xkGUJOvzhYzdc3p6n7XU8=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=gmE7628FH4BpHzJs57gq/51Ktbc8EdH7p5JE+sfiaoC1fJruIx4rmf22ZgYt29sqI
	 vk05olThx1vFyVk8tojiAMWbKJkhKaNv0F3ONHe2UHIjLI1PEren5PCOkL9xyZIr6B
	 4gepExYwxB4Wh7lKOD83egWpAPGjycO7hRdwseW0GaBIRTzs2I0B3E6vn6HB83ptNX
	 k/y7aSBk7/7dNHqiQfgSjDLBz8TjKjbXtA8WNjEIsOf4o1U6eJ5GalLmmJNVUaMyz3
	 xbe5QhJDwR8vA6KHbI8i3zfFPrE7EmXsA9tn/oo36SyoS4V0fOB/Npvory+dmawitt
	 K7GvMFN2A/4sA==
Date: Tue, 22 Oct 2024 21:57:09 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Victor Lira <victorm.lira@amd.com>
cc: xen-devel@lists.xenproject.org, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [RFC TEST_ARTIFACTS PATCH 1/2] artifacts: Initial commit
In-Reply-To: <21a6030f352282d822c30de4a1e7ecab9a8c0a99.1729649255.git.victorm.lira@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410222154400.3833@ubuntu-linux-20-04-desktop>
References: <cover.1729649255.git.victorm.lira@amd.com> <21a6030f352282d822c30de4a1e7ecab9a8c0a99.1729649255.git.victorm.lira@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1240544370-1729659133=:3833"
Content-ID: <alpine.DEB.2.22.394.2410222152191.3833@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-1240544370-1729659133=:3833
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410222152192.3833@ubuntu-linux-20-04-desktop>

On Tue, 22 Oct 2024, victorm.lira@amd.com wrote:
> From: Stefano Stabellini <sstabellini@kernel.org>

Hi Victor, I think this was a mistake, maybe due to the fact that I
created the repository for you. The From field represent the vauthor and
in this case it should be you.


> Create new repository to produce common artifacts for Xen tests
> 
> Requested-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Victor Lira <victorm.lira@amd.com>
> ---
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>
> Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Cc: Doug Goldstein <cardoe@cardoe.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: xen-devel@lists.xenproject.org
> ---
>  .gitlab-ci.yml                         | 48 ++++++++++++++++++++
>  README.md                              | 10 ++++
>  binaries/.gitignore                    |  3 ++
>  images/Makefile                        | 20 ++++++++
>  images/alpine/x86_64-build.dockerfile  | 25 ++++++++++
>  images/alpine/x86_64-rootfs.dockerfile |  4 ++
>  scripts/x86_64-argo-linux.sh           | 63 ++++++++++++++++++++++++++
>  scripts/x86_64-kernel-linux.sh         | 31 +++++++++++++
>  scripts/x86_64-rootfs-alpine.sh        | 58 ++++++++++++++++++++++++
>  9 files changed, 262 insertions(+)
>  create mode 100644 .gitlab-ci.yml
>  create mode 100644 README.md
>  create mode 100644 binaries/.gitignore
>  create mode 100644 images/Makefile
>  create mode 100644 images/alpine/x86_64-build.dockerfile
>  create mode 100644 images/alpine/x86_64-rootfs.dockerfile
>  create mode 100755 scripts/x86_64-argo-linux.sh
>  create mode 100755 scripts/x86_64-kernel-linux.sh
>  create mode 100755 scripts/x86_64-rootfs-alpine.sh
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> new file mode 100644
> index 0000000..f2f7738
> --- /dev/null
> +++ b/.gitlab-ci.yml
> @@ -0,0 +1,48 @@
> +workflow:
> +  name: "xen test artifacts"
> +
> +.artifacts:
> +  stage: build
> +  image:
> +    name: registry.gitlab.com/xen-project/people/victormlira/test-artifacts/${CONTAINER}

This of course needs to be changed before the series is committed


> +  artifacts:
> +    name: "${CI_JOB_NAME_SLUG}"
> +    paths:
> +      - binaries/
> +
> +.x86_64-artifacts:
> +  extends: .artifacts
> +  image:
> +    docker:
> +      platform: linux/amd64
> +      user: xenproject
> +  variables:
> +    CONTAINER: alpine:x86_64-build
> +  tags:
> +    - x86_64
> +
> +x86_64-kernel-linux-6.6.56:
> +  extends: .x86_64-artifacts
> +  script:
> +    - . scripts/x86_64-kernel-linux.sh
> +  variables:
> +    LINUX_VERSION: 6.6.56
> +
> +x86_64-rootfs-alpine-3.18:
> +  extends: .x86_64-artifacts
> +  variables:
> +    CONTAINER: alpine:x86_64-rootfs
> +  image:
> +    docker:
> +      user: root
> +  script:
> +    - . scripts/x86_64-rootfs-alpine.sh
> +
> +x86_64-argo-linux-6.6.56:
> +  extends: .x86_64-artifacts
> +  script:
> +    - . scripts/x86_64-argo-linux.sh
> +  variables:
> +    LINUX_VERSION: 6.6.56
> +    ARGO_SHA: "705a7a8a624b42e13e655d3042059b8a85cdf6a3"
> +    ARGOEXEC_SHA: "d900429f6640acc6f68a3d3a4c945d7da60625d8"
> diff --git a/README.md b/README.md
> new file mode 100644
> index 0000000..0d72519
> --- /dev/null
> +++ b/README.md
> @@ -0,0 +1,10 @@
> +# Xen Project Test Artifacts
> +
> +## Overview
> +
> +This repository is used to produce common artifacts for Xen tests.
> +
> +##
> +
> +
> +##
> diff --git a/binaries/.gitignore b/binaries/.gitignore
> new file mode 100644
> index 0000000..95e2a2e
> --- /dev/null
> +++ b/binaries/.gitignore
> @@ -0,0 +1,3 @@
> +# Keep this directory around to be available in CI/CD jobs.
> +*
> +!.gitignore
> diff --git a/images/Makefile b/images/Makefile
> new file mode 100644
> index 0000000..41638d7
> --- /dev/null
> +++ b/images/Makefile
> @@ -0,0 +1,20 @@
> +
> +# The base of where these containers will appear
> +REGISTRY := registry.gitlab.com/xen-project/people/victormlira/test-artifacts

also this


> +CONTAINERS = $(subst .dockerfile,,$(wildcard */*.dockerfile))
> +
> +help:
> +	@echo "Containers to build test artifacts."
> +	@echo "To build one run 'make DISTRO/TAG'."
> +	@echo "Available containers:"
> +	@$(foreach file,$(sort $(CONTAINERS)),echo ${file};)
> +	@echo "To push container builds, set the environment variable PUSH"
> +
> +%: %.dockerfile ## Builds containers
> +	docker build --pull -t $(REGISTRY)/$(@D):$(@F) -f $< $(<D)
> +	@if [ ! -z $${PUSH+x} ]; then \
> +		docker push $(REGISTRY)/$(@D):$(@F); \
> +	fi
> +
> +.PHONY: all
> +all: $(CONTAINERS)
> diff --git a/images/alpine/x86_64-build.dockerfile b/images/alpine/x86_64-build.dockerfile
> new file mode 100644
> index 0000000..374952f
> --- /dev/null
> +++ b/images/alpine/x86_64-build.dockerfile
> @@ -0,0 +1,25 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/amd64 alpine:3.18
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"
> +
> +WORKDIR /build/
> +
> +RUN <<EOF
> +adduser -D xenproject
> +apk --no-cache add \
> +      musl-dev  \
> +      build-base \
> +      libc6-compat \
> +      linux-headers \
> +      bash \
> +      git \
> +      curl \
> +      flex \
> +      bison \
> +      elfutils-dev \
> +      autoconf \
> +      automake \
> +      libtool \
> +      openssl-dev


Use the DEPS variable like here to make it a bit more readable:
automation/build/fedora/40-x86_64.dockerfile


> +EOF
> diff --git a/images/alpine/x86_64-rootfs.dockerfile b/images/alpine/x86_64-rootfs.dockerfile
> new file mode 100644
> index 0000000..b912e9c
> --- /dev/null
> +++ b/images/alpine/x86_64-rootfs.dockerfile
> @@ -0,0 +1,4 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/amd64 alpine:3.18
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"
> diff --git a/scripts/x86_64-argo-linux.sh b/scripts/x86_64-argo-linux.sh
> new file mode 100755
> index 0000000..a110a33
> --- /dev/null
> +++ b/scripts/x86_64-argo-linux.sh
> @@ -0,0 +1,63 @@
> +#!/usr/bin/env bash
> +
> +if test -z "${LINUX_VERSION}"
> +then
> +    >&2 echo "LINUX_VERSION must be set"; exit 1
> +fi
> +
> +set -ex -o pipefail
> +
> +BUILDDIR="${PWD}"
> +COPYDIR="${BUILDDIR}/binaries/"
> +
> +# Prepare Linux sources
> +curl -fsSLO \
> +    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
> +tar xJf linux-"${LINUX_VERSION}".tar.xz
> +cd linux-"${LINUX_VERSION}"
> +make ARCH=x86 defconfig
> +make ARCH=x86 xen.config
> +./scripts/config --enable BRIDGE
> +./scripts/config --enable IGC
> +./scripts/config --enable TUN
> +cp .config .config.orig
> +cat .config.orig \
> +    | grep 'XEN' \
> +    | grep '=m' \
> +    | sed 's/=m/=y/g' \
> +    >> .config
> +make ARCH=x86 olddefconfig
> +make ARCH=x86 modules_prepare
> +
> +# Build Linux kernel module for Xen Argo
> +cd "${BUILDDIR}"
> +git clone \
> +    --depth=1 --branch=master \
> +    https://github.com/OpenXT/linux-xen-argo.git
> +git -C "${BUILDDIR}/linux-xen-argo" switch --detach "${ARGO_SHA}"
> +make -C "linux-${LINUX_VERSION}" M="${BUILDDIR}/linux-xen-argo/argo-linux" \
> +    CFLAGS_MODULE="-Wno-error" KBUILD_MODPOST_WARN=1
> +cp "linux-xen-argo/argo-linux/xen-argo.ko" "${COPYDIR}/xen-argo.ko"
> +
> +# Build Linux libargo shared library, applying fixes to build in Alpine Linux
> +cd "${BUILDDIR}/linux-xen-argo/libargo"
> +sed -i "s|AM_INIT_AUTOMAKE|AC_CONFIG_AUX_DIR(.)\nAM_INIT_AUTOMAKE|" configure.ac
> +sed -i "s/__SOCKADDR_COMMON (sxenargo_)/sa_family_t sxenargo_family/" src/libargo.h
> +sed -i "s/__SOCKADDR_COMMON_SIZE/(sizeof (unsigned short int))/" src/libargo.h
> +autoreconf --install
> +./configure --prefix="${COPYDIR}" CPPFLAGS="-I${PWD}/../argo-linux/include"
> +make
> +make install
> +
> +# Build Linux user program, modifying for xilinx argo test
> +cd "${BUILDDIR}"
> +wget "https://raw.githubusercontent.com/OpenXT/xenclient-oe/${ARGOEXEC_SHA}/\
> +recipes-openxt/argo-exec/argo-exec/argo-exec.c"
> +sed -i "s|#include <xen/xen.h>||" argo-exec.c
> +sed -i "s|ret = shuffle(s, fds\[0\], fds\[1\]);|ret = shuffle(s, 0, 1);|" \
> +    argo-exec.c
> +gcc -I"${BUILDDIR}/linux-xen-argo/libargo/src" \
> +    -I"${BUILDDIR}/linux-xen-argo/argo-linux/include" \
> +    -L"${COPYDIR}/lib/" \
> +    -o argo-exec argo-exec.c -largo
> +cp argo-exec "${COPYDIR}"
> diff --git a/scripts/x86_64-kernel-linux.sh b/scripts/x86_64-kernel-linux.sh
> new file mode 100755
> index 0000000..17be36b
> --- /dev/null
> +++ b/scripts/x86_64-kernel-linux.sh
> @@ -0,0 +1,31 @@
> +#!/usr/bin/env bash
> +
> +if test -z "${LINUX_VERSION}"
> +then
> +    >&2 echo "LINUX_VERSION must be set"; exit 1
> +fi
> +
> +set -ex -o pipefail
> +
> +WORKDIR="${PWD}"
> +COPYDIR="${WORKDIR}/binaries/"
> +
> +# Build Linux
> +curl -fsSLO \
> +    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
> +tar xJf linux-"${LINUX_VERSION}".tar.xz
> +cd linux-"${LINUX_VERSION}"
> +make ARCH=x86 defconfig
> +make ARCH=x86 xen.config
> +./scripts/config --enable BRIDGE
> +./scripts/config --enable IGC
> +./scripts/config --enable TUN
> +cp .config .config.orig
> +cat .config.orig \
> +    | grep 'XEN' \
> +    | grep '=m' \
> +    | sed 's/=m/=y/g' \
> +    >> .config
> +make ARCH=x86 olddefconfig
> +make ARCH=x86 "-j$(nproc)" --quiet
> +cp arch/x86/boot/bzImage "${COPYDIR}"
> diff --git a/scripts/x86_64-rootfs-alpine.sh b/scripts/x86_64-rootfs-alpine.sh
> new file mode 100755
> index 0000000..28d8e30
> --- /dev/null
> +++ b/scripts/x86_64-rootfs-alpine.sh
> @@ -0,0 +1,58 @@
> +WORKDIR="${PWD}"
> +
> +apk update
> +
> +# xen runtime deps
> +apk add musl
> +apk add libgcc
> +apk add openrc
> +apk add busybox
> +apk add sudo
> +apk add dbus
> +apk add bash
> +apk add python3
> +apk add zlib
> +apk add ncurses
> +apk add yajl
> +apk add libaio
> +apk add xz
> +apk add util-linux
> +apk add argp-standalone
> +apk add libfdt
> +apk add glib
> +apk add pixman
> +apk add curl
> +apk add udev
> +apk add pciutils
> +apk add libelf
> +
> +# Xen
> +cd /
> +# Minimal ramdisk environment in case of cpio output
> +rc-update add udev
> +rc-update add udev-trigger
> +rc-update add udev-settle
> +rc-update add loopback sysinit
> +rc-update add bootmisc boot
> +rc-update add devfs sysinit
> +rc-update add dmesg sysinit
> +rc-update add hostname boot
> +rc-update add hwclock boot
> +rc-update add hwdrivers sysinit
> +rc-update add modules boot
> +rc-update add killprocs shutdown
> +rc-update add mount-ro shutdown
> +rc-update add savecache shutdown
> +rc-update add local default
> +cp -a /sbin/init /init
> +echo "ttyS0" >> /etc/securetty
> +echo "hvc0" >> /etc/securetty
> +echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab
> +echo "hvc0::respawn:/sbin/getty -L hvc0 115200 vt100" >> /etc/inittab
> +echo > /etc/modules
> +passwd -d "root" root
> +
> +# Create rootfs
> +cd /
> +tar cvzf "${WORKDIR}/binaries/initrd.tar.gz" \
> +    bin dev etc home init lib mnt opt root sbin usr var
> --
> 2.25.1
> 
--8323329-1240544370-1729659133=:3833--


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 05:03:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 05:03:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824423.1238560 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3TWa-0005WO-F4; Wed, 23 Oct 2024 05:03:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824423.1238560; Wed, 23 Oct 2024 05:03: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 1t3TWa-0005WH-C9; Wed, 23 Oct 2024 05:03:12 +0000
Received: by outflank-mailman (input) for mailman id 824423;
 Wed, 23 Oct 2024 05:03: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=S7t1=RT=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t3TWZ-0005WB-IW
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 05:03:11 +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 16afb532-90fc-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 07:03:09 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 7E0B25C5A9B;
 Wed, 23 Oct 2024 05:03:00 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id BB138C4CEC6;
 Wed, 23 Oct 2024 05:03:03 +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: 16afb532-90fc-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729659784;
	bh=taAod9pduJeb4mUVl2SwKXCGjdnNQ76NhvTXaYUhAz8=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=XJ/tklTb/TPes9koVkcieUB7rNUFOh0P1ysEL7Gw1vKmGZViRrt4nmAdyJgzufVTz
	 iYWzusU7JeYA+0Gx/F9rCcQiNNsKP9lBdtBg6u5TtV2PJbRYRrSmDnp6YQM/LwLXTw
	 ay9zA/uJMpmI6nryfUgBAIJMnGHXgR71k5UaKUCcG+dnXXHw8unFL5ZgQ7VV1gC55+
	 qAWDRLQD/eMAtnc5ne5bMxNfk+D5dnah+rWkyO9YQfrnXwu0hDa+vjfE+PMI3NSwHy
	 /bxj9R+8um5aeiuNwED5eN9ti+2+0aRuP6WW4F3tfHbsZILvpsEk/lxC6e+IG0AGKb
	 Typu2VgQByq3A==
Date: Tue, 22 Oct 2024 22:03:02 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Victor Lira <victorm.lira@amd.com>
cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [RFC XEN PATCH 2/2] automation: add xilinx test (linux argo)
In-Reply-To: <17124c911858ccb2842598cd9b9b3c88c4d4dd28.1729649076.git.victorm.lira@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410222155240.3833@ubuntu-linux-20-04-desktop>
References: <cover.1729649255.git.victorm.lira@amd.com> <17124c911858ccb2842598cd9b9b3c88c4d4dd28.1729649076.git.victorm.lira@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1484776461-1729659390=:3833"
Content-ID: <alpine.DEB.2.22.394.2410222157140.3833@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-1484776461-1729659390=:3833
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410222157141.3833@ubuntu-linux-20-04-desktop>

On Tue, 22 Oct 2024, victorm.lira@amd.com wrote:
> From: Victor Lira <victorm.lira@amd.com>
> 
> Add x86_64 hardware test that creates a Xen Argo communication
> connection between two PVH domains. In the test, dom0 creates a domU and
> listens for messages sent by the domU through Argo.
> 
> To accomplish this, build Xen with CONFIG_ARGO=y.
> 
> Update the xilinx x86_64 test script to support the new test, and add
> "sync_console" to command line to avoid an issue with console messages
> being lost.
> 
> Signed-off-by: Victor Lira <victorm.lira@amd.com>
> ---
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>
> Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Cc: Doug Goldstein <cardoe@cardoe.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: xen-devel@lists.xenproject.org
> ---
>  automation/gitlab-ci/build.yaml               |  6 ++
>  automation/gitlab-ci/test.yaml                | 16 ++++
>  .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 +++++++++++++------
>  3 files changed, 73 insertions(+), 25 deletions(-)
> 
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> index c2db69ecf8..f425744f8b 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -340,6 +340,12 @@ alpine-3.18-gcc-debug:
>    variables:
>      CONTAINER: alpine:3.18
>      BUILD_QEMU_XEN: y
> +    EXTRA_XEN_CONFIG: |
> +      CONFIG_EXPERT=y
> +      CONFIG_UNSUPPORTED=y
> +      CONFIG_ARGO=y
> 
>  debian-bookworm-gcc-debug:
>    extends: .gcc-x86-64-build-debug
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index b27c2be174..2d4709d393 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -192,6 +192,22 @@ xilinx-smoke-dom0-x86_64-gcc-debug:
>      - *x86-64-test-needs
>      - alpine-3.18-gcc-debug
> 
> +xilinx-smoke-dom0-x86_64-gcc-debug-argo:
> +  extends: .xilinx-x86_64
> +  script:
> +    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
> +  needs:
> +    - alpine-3.18-gcc-debug
> +    - project: xen-project/people/victormlira/test-artifacts

This needs to be changed before commit

Overall this looks great, thank you for exploring this option! Much
better than before.

This patch does some nice refactoring and also add the argo test. I
would ask that you split it into two patches, the first one does the
refactoring, the second one add the argo test



> +      job: x86_64-kernel-linux-6.6.56
> +      ref: vml-tests-separate-artifacts
> +    - project: xen-project/people/victormlira/test-artifacts
> +      job: x86_64-rootfs-alpine-3.18
> +      ref: vml-tests-separate-artifacts
> +    - project: xen-project/people/victormlira/test-artifacts
> +      job: x86_64-argo-linux-6.6.56
> +      ref: vml-tests-separate-artifacts
> +
>  adl-smoke-x86-64-gcc-debug:
>    extends: .adl-x86-64
>    script:
> diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> index 7027f083ba..f70cfdc155 100755
> --- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> +++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> @@ -9,6 +9,8 @@ fatal() {
>      exit 1
>  }
> 
> +WORKDIR="${PWD}"
> +
>  # Test parameter defaults.
>  TEST="$1"
>  PASS_MSG="Test passed: ${TEST}"
> @@ -24,9 +26,10 @@ kernel = "/boot/vmlinuz"
>  ramdisk = "/boot/initrd-domU"
>  extra = "root=/dev/ram0 console=hvc0"
>  memory = 512
> -vif = [ "bridge=xenbr0", ]
> -disk = [ ]
>  '
> +DOMU_CFG_EXTRA=""
> +copy_domU_files () { :; }
> +copy_dom0_files () { :; }
> 
>  # Select test variant.
>  if [ "${TEST}" = "ping" ]; then
> @@ -39,6 +42,14 @@ done
>  echo \"${DOMU_MSG}\"
>  "
>      DOM0_CMD="
> +brctl addbr xenbr0
> +brctl addif xenbr0 eth0
> +ifconfig eth0 up
> +ifconfig xenbr0 up
> +ifconfig xenbr0 192.168.0.1
> +# get domU console content into test log
> +tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
> +xl create /etc/xen/domU.cfg

This is something that should go in the refactoring patch


>  set +x
>  until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
>      sleep 1
> @@ -46,6 +57,34 @@ done
>  set -x
>  echo \"${PASS_MSG}\"
>  "
> +    DOMU_CFG_EXTRA='
> +vif = [ "bridge=xenbr0", ]
> +disk = [ ]
> +'
> +elif [ "${TEST}" = "argo" ]
> +then
> +    PASS_MSG="TEST: Message from DOMU"
> +    XEN_CMD_EXTRA="argo=1,mac-permissive=1"
> +    DOMU_CMD="
> +insmod /root/xen-argo.ko
> +until false
> +do
> +  echo \"${PASS_MSG}\"
> +  sleep 1
> +done | argo-exec -p 28333 -d 0 -- /bin/echo
> +"
> +    DOM0_CMD="
> +insmod /root/xen-argo.ko
> +xl create /etc/xen/domU.cfg
> +argo-exec -l -p 28333 -- /bin/echo
> +"
> +copy_dom0_files ()
> +{
> +    cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
> +    cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
> +    cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
> +}
> +copy_domU_files () { copy_dom0_files; }
>  else
>      fatal "Unknown test: ${TEST}"
>  fi
> @@ -54,18 +93,18 @@ fi
>  mkdir -p rootfs
>  cd rootfs
>  tar xzf ../binaries/initrd.tar.gz
> -mkdir proc
> -mkdir run
> -mkdir srv
> -mkdir sys
> +mkdir proc run srv sys
>  rm var/run
>  echo "#!/bin/sh
> -
> +set -x
> +export LD_LIBRARY_PATH=/usr/local/lib
> +PATH=/usr/local/bin:/usr/local/sbin:\$PATH
>  ${DOMU_CMD}
>  " > etc/local.d/xen.start
>  chmod +x etc/local.d/xen.start
>  echo "rc_verbose=yes" >> etc/rc.conf
>  sed -i -e 's/^Welcome/domU \0/' etc/issue
> +copy_domU_files
>  find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
>  cd ..
>  rm -rf rootfs
> @@ -74,37 +113,24 @@ rm -rf rootfs
>  mkdir -p rootfs
>  cd rootfs
>  tar xzf ../binaries/initrd.tar.gz
> -mkdir boot
> -mkdir proc
> -mkdir run
> -mkdir srv
> -mkdir sys
> +mkdir boot proc run srv sys
>  rm var/run
>  cp -ar ../binaries/dist/install/* .
>  echo "#!/bin/bash
> -
> +set -x
>  export LD_LIBRARY_PATH=/usr/local/lib
>  bash /etc/init.d/xencommons start
> -
> -brctl addbr xenbr0
> -brctl addif xenbr0 eth0
> -ifconfig eth0 up
> -ifconfig xenbr0 up
> -ifconfig xenbr0 192.168.0.1
> -
> -# get domU console content into test log
> -tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
> -xl create /etc/xen/domU.cfg
>  ${DOM0_CMD}
>  " > etc/local.d/xen.start
>  chmod +x etc/local.d/xen.start
> -echo "${DOMU_CFG}" > etc/xen/domU.cfg
> +echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
>  echo "rc_verbose=yes" >> etc/rc.conf
>  echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
>  echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
>  mkdir -p var/log/xen/console
>  cp ../binaries/bzImage boot/vmlinuz
>  cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
> +copy_dom0_files
>  find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
>  cd ..
> 
> @@ -116,7 +142,7 @@ cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
>  cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
>  echo "
>  net_default_server=10.0.6.1
> -multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE}
> +multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
>  module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
>  module2 (tftp)/${TEST_BOARD}/initrd-dom0
>  boot
> --
> 2.25.1
> 
--8323329-1484776461-1729659390=:3833--


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 07:10:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 07:10:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824448.1238570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3VVn-0003XU-71; Wed, 23 Oct 2024 07:10:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824448.1238570; Wed, 23 Oct 2024 07:10: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 1t3VVn-0003XN-37; Wed, 23 Oct 2024 07:10:31 +0000
Received: by outflank-mailman (input) for mailman id 824448;
 Wed, 23 Oct 2024 07:10: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=J5Qp=RT=fujitsu.com=Alan.Robinson@srs-se1.protection.inumbo.net>)
 id 1t3VVm-0003XH-8b
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 07:10:30 +0000
Received: from mail1.bemta32.messagelabs.com (mail1.bemta32.messagelabs.com
 [195.245.230.1]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e0dddec1-910d-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 09:10:26 +0200 (CEST)
Received: (qmail 24689 invoked from network); 23 Oct 2024 07:10:23 -0000
Received: from unknown (HELO n03ukasimr02.n03.fujitsu.local) (62.60.8.146)
 by server-6.tower-591.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384
 encrypted SMTP; 23 Oct 2024 07:10:23 -0000
Received: from n03ukasimr02.n03.fujitsu.local (localhost [127.0.0.1])
 by n03ukasimr02.n03.fujitsu.local (Postfix) with ESMTP id 54D961009AC;
 Wed, 23 Oct 2024 08:10:23 +0100 (BST)
Received: from nera.osd.g02.fujitsu.local (unknown172-17-20-8 [172.17.20.8])
 by n03ukasimr02.n03.fujitsu.local (Postfix) with SMTP id 018EF1009A5;
 Wed, 23 Oct 2024 08:10:22 +0100 (BST)
Received: by nera.osd.g02.fujitsu.local (Postfix, from userid 5004)
 id AEF70174782; Wed, 23 Oct 2024 09:10:22 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e0dddec1-910d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com;
	s=170520fj; t=1729667426; i=@fujitsu.com;
	bh=iQnziBwb6xEZOb9BrlxVNpX9hvxFrIC7FIfolio811A=;
	h=Date:To:Cc:Subject:Message-ID:Reply-To:References:MIME-Version:
	 Content-Type:In-Reply-To:From;
	b=xVcsXawhBIPPlqw4U2T39NRwdNdVJtUF4fydjY5fC0SqkB/R25yZMM6TGzRGb/1gE
	 Bew9p5rrG2en/Og1KZgbeAOFBtxAWO2+loiTPIjeBXe2QOixE5L1sFALKxjEUBhrep
	 dW0o5PoRcLTkDU22kV1NsL/o7ZutbMEiQdOvBufHyGOOkV5QHeb46FQAxQGcT9vWla
	 0yoFs0EHPFkP9iPFm9GgaHaKg8pTA/hyGVCrTGApNR3PyfqpNle0mRULc2WXmYycHU
	 mrLVjg728BXkvV5u8iuaNtPLxH4K8+bYZp3uGAekndBZzf9NUdbnQOxe6Si/kWDT3i
	 junmktFWs3mIg==
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFKsWRWlGSWpSXmKPExsViZ8MxSTd+oUS
  6wdFFhhaLH+9it/g3Zxebxc89D9ksZpxfzGrxfctkJgdWjxvfu9g9Xk+ewOhx+MMVFo/1W66y
  BLBEsWbmJeVXJLBmvDl/gbmgk6ti8uopjA2MSzm6GLk4hAS2MErMv3CAtYuRg4NFwF+i658HS
  JxFYD+LxMx3+xghinYxSmx+sBDI4QQrWrhxLyOaKk6gqmqJSefOs0NMUpXYNc0OJCwioCvxbM
  EzNpB6ZoEDjBIXr7SwgiSEBfwkVi5aDLaZV8BY4uakcIgxyhJzr/4Fq+cVmMYksb55CRtEIlS
  ib90+MJtXQFDi5MwnLCA2s4CWxI1/L5lA5jALSEss/8cBEuYUCJNofDqJGcSWEJCR+L3yO1ir
  KND8dYtPMoKUswnoS7zqTYQoUZO4em4T8wRG8VlIFsxCsmAWwoIFjMyrGE2LU4vKUot0TfSSi
  jLTM0pyEzNz9BKrdBP1Ukt1y1OLS3QN9RLLi/VSi4v1iitzk3NS9PJSSzYxAqM0pZjtzg7GFX
  sa9Q8xSnIwKYnysvBKpAvxJeWnVGYkFmfEF5XmpBYfYpTh4FCS4BWZB5QTLEpNT61Iy8wBJgy
  YtAQHj5II79YJQGne4oLE3OLMdIjUKUZFKXFekTlACQGQREZpHlwbLEldYpSVEuZlZGBgEOIp
  SC3KzSxBlX/FKM7BqCTMe2Y+0BSezLwSuOmvgBYzAS1WagZbXJKIkJJqYHLXzPnl25x+eBqb+
  emNc/b5X5b9PlOeq5utYorgf5U59dXpuitSXrkoqjGstxE6VhCg03fxvfXn1etjLeZ5l7ktS1
  2pczz6wJ2Y+r0BZWcrFpyKvBfe8FZAb6PgNqPNk7WtF66bNoXDtLT4ZwmT7ulfHpvUvPrvBUi
  cCnhVoxCmF3l7RqXg5XRW+Vntr9LdKxuW34nP62N5HDLHfaJF7MocDh0fiQm3T80r7u/LXq+/
  6fiFs4Y7bn0/bTDba/5GQ/tflxnOe2q+O92edMxp5ULDt20Wpbta0ycniZ1dYNmjWhDUcmjCJ
  pYz0gEb8iYu9+J0mlr75bBcTeWZU/YJXPnLvv3ku9al6+QvKbW3QYmlOCPRUIu5qDgRACyEN7
  7NAwAA
X-Env-Sender: Alan.Robinson@fujitsu.com
X-Msg-Ref: server-6.tower-591.messagelabs.com!1729667423!7800!1
X-Originating-IP: [62.60.8.146]
X-SYMC-ESS-Client-Auth: outbound-route-from=pass
X-StarScan-Received:
X-StarScan-Version: 9.114.1; banners=-,-,-
X-VirusChecked: Checked
DKIM-Filter: OpenDKIM Filter v2.11.0 n03ukasimr02.n03.fujitsu.local 54D961009AC
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com;
	s=dspueurope; t=1729667423;
	bh=iQnziBwb6xEZOb9BrlxVNpX9hvxFrIC7FIfolio811A=;
	h=Date:To:Cc:Subject:Reply-To:References:In-Reply-To:From:From;
	b=WWyneOuMH8BjQ16TsXw1YsIh9QxaRwq9xiyF076LPbldDe7S+MWIZIjE5ePuF3Xca
	 7vL4QpQlFybapvORzrq/CstV5ZiH8CZkl/Wj5QEoo36E7A9CMpswLXiIEwgvqo0spa
	 ZX3JuzK3PySC+DYW6A6752T5I5CPwfckUZIg5txfceQcaNpQivcmBSHUrmZrgcTbNF
	 enYZ4nXiyNhkR7u6ntYXRyZVbjzo4ySXmrKhztFIzQ4fFx8inWwVn03pMbHprdsn9D
	 FdrN6EgfhVLSugjKBylxisacgYGMJkk14xle+vWMgfJsNEqb1Jk7Q1voBOisSzZOBm
	 8qJOCHYKPFYQw==
DKIM-Filter: OpenDKIM Filter v2.11.0 n03ukasimr02.n03.fujitsu.local 018EF1009A5
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com;
	s=dspueurope; t=1729667423;
	bh=iQnziBwb6xEZOb9BrlxVNpX9hvxFrIC7FIfolio811A=;
	h=Date:To:Cc:Subject:Reply-To:References:In-Reply-To:From:From;
	b=WWyneOuMH8BjQ16TsXw1YsIh9QxaRwq9xiyF076LPbldDe7S+MWIZIjE5ePuF3Xca
	 7vL4QpQlFybapvORzrq/CstV5ZiH8CZkl/Wj5QEoo36E7A9CMpswLXiIEwgvqo0spa
	 ZX3JuzK3PySC+DYW6A6752T5I5CPwfckUZIg5txfceQcaNpQivcmBSHUrmZrgcTbNF
	 enYZ4nXiyNhkR7u6ntYXRyZVbjzo4ySXmrKhztFIzQ4fFx8inWwVn03pMbHprdsn9D
	 FdrN6EgfhVLSugjKBylxisacgYGMJkk14xle+vWMgfJsNEqb1Jk7Q1voBOisSzZOBm
	 8qJOCHYKPFYQw==
Date: Wed, 23 Oct 2024 09:10:22 +0200
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Jan Beulich <JBeulich@suse.com>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: Re: [PATCH] x86/boot: Fix PVH boot during boot_info transition period
Message-ID: <20241023071022.GA30985@ts.fujitsu.com>
Reply-To: Alan.Robinson@fujitsu.com
Mail-Followup-To: Alan.Robinson@fujitsu.com,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Jan Beulich <JBeulich@suse.com>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
References: <cd8f29e7662f44999552be6e75ac6d6c@BEZP281MB2581.DEUP281.PROD.OUTLOOK.COM>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <cd8f29e7662f44999552be6e75ac6d6c@BEZP281MB2581.DEUP281.PROD.OUTLOOK.COM>
X-sent-by-me: robin@sanpedro
User-Agent: Mutt/1.9.3 (2018-01-21)
From: Alan.Robinson@fujitsu.com (Alan Robinson)
X-Virus-Scanned: ClamAV using ClamSMTP

Hi Andrew,

A small suggestion for the commit log..

On Tue, Oct 22, 2024 at 12:41:14PM +0000, Andrew Cooper wrote:
> 
> multiboot_fill_boot_info() taking the physical address of the multiboot_info
> structure leads to a subtle use-after-free on the PVH path, with rather less
> subtle fallout.
> 
> The pointers used by __start_xen(), mbi and mod, are either:
> 
>  - MB:  Directmap pointers into the trampoline, or
>  - PVH: Xen pointers into .initdata, or
>  - EFI: Directmap pointers into Xen.
> 
> Critically, these either remain valid across move_xen() (MB, PVH), or rely on
> move_xen() being inhibited (EFI).
> 
> The conversion to multiboot_fill_boot_info(), taking only mbi_p, makes the PVH
> path use directmap pointers into Xen, as well as move_xen() which invalidates
> said pointers.
> 
> Switch multiboot_fill_boot_info() to consume the same virtual addresses that
> __start_xen() currently uses.  This keeps all the pointers valid for the
> duration of __start_xen(), for all boot protocols.
> 
> It can be safely untangled once multiboot_fill_boot_info() takes a full copy
> the multiboot info data, and __start_xen() has been moved over to using the

 of the multiboot info data, and __start_xen() has been moved over to using the

> new boot_info consistently.
> 

Alan


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 08:03:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 08:03:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824465.1238580 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3WKw-0001rx-8v; Wed, 23 Oct 2024 08:03:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824465.1238580; Wed, 23 Oct 2024 08: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 1t3WKw-0001rq-4n; Wed, 23 Oct 2024 08:03:22 +0000
Received: by outflank-mailman (input) for mailman id 824465;
 Wed, 23 Oct 2024 08:03: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=KN5j=RT=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3WKu-0001rk-Cv
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 08:03:20 +0000
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 (mail-am0eur02on2060c.outbound.protection.outlook.com
 [2a01:111:f403:2606::60c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 433e47a6-9115-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 10:03:18 +0200 (CEST)
Received: from DUZPR01CA0211.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:4b4::24) by AS8PR08MB9454.eurprd08.prod.outlook.com
 (2603:10a6:20b:5ee::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Wed, 23 Oct
 2024 08:03:13 +0000
Received: from DB1PEPF00039231.eurprd03.prod.outlook.com
 (2603:10a6:10:4b4:cafe::cd) by DUZPR01CA0211.outlook.office365.com
 (2603:10a6:10:4b4::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend
 Transport; Wed, 23 Oct 2024 08:03:13 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB1PEPF00039231.mail.protection.outlook.com (10.167.8.104) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Wed, 23 Oct 2024 08:03:12 +0000
Received: ("Tessian outbound da7ba6582322:v473");
 Wed, 23 Oct 2024 08:03:11 +0000
Received: from L33bb44f6c52e.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 D9DFF895-948C-4AE3-917E-0082AECFD5BE.1; 
 Wed, 23 Oct 2024 08:03:05 +0000
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L33bb44f6c52e.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 23 Oct 2024 08:03:05 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by AS2PR08MB9341.eurprd08.prod.outlook.com (2603:10a6:20b:59a::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Wed, 23 Oct
 2024 08:03:02 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Wed, 23 Oct 2024
 08:03: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: 433e47a6-9115-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=g9SNHBlJG6XaHc3B3ftsSWD/57YHmWWD2/4m91+A6LAm+5zuKbBXvH42bsZozPExGnEgfWw71142FSxSGx6SVmoGQft6OqfoB9aT5mYUdR14GfyLoJBfeKJmuPobmeEvmktrJpjWhBtQSJ4tko3hINOFIzrUaBKMROQgH4BEGhO3SJQZMM25eFLrc/aPlDJVU7GI0id7Qp2ImTMiYbR7ExesCDAfgzMuq1lPldQpP44eCJzzoe8I+xIdZdJgLJHz++676exHeoIk6wTtDwOnrUqx4u6ovJ2r4vsGhuUR8oTJ95VeWKRTVs9yltmneerPOhxDVDIZh3R3/ZQ4uRoLpg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=pEpm6YbZpc3RjaWIDZ83ATdNfsjNoI1zdoA2KN9Yzvo=;
 b=yc9zcj0jrWiPIcMGBnT+XeiMyrG2/hnat6mdkfNxc+F0GesqbOkUdw+IxMmsPIblpqRh6d5B31sLKixC3a7uBYw3GHYa3BY+tj0SnFiiW8+5MBqKSgkEszhsgqFPn3X8umfq9W8RF4YPFd61dyzyUMJPlcvdowk8aOxTAn5Qum0zzJK1ykD+FWVLwltQHF9upIPMObhmgW9HMOTt8bkvRV6B3WBBghwu72IBx4XtzSVd4/zVGDFtiJ2QG/ennxAZQ5X6a5mhyp0wcab5Pw5LGp6jqm3RTwjkpJo1SWYhe9ysuDF5Phe9g7JMzJG5kYwn0QJbv1CEFxO5laZcPp0IQQ==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pEpm6YbZpc3RjaWIDZ83ATdNfsjNoI1zdoA2KN9Yzvo=;
 b=CtSIZnXgK9INDLE9a7tT8L2Ru7TOjnruwYxptGIaGANXU/9ivtB40MQhQ7PIIsXE5FBtW4u8iMlPVyL6sQHn2mCcUFo4kcqnBS4fGU3j2qi+n+qHV9KDwuv8KctscfTXiPF3SXCOfkkCw4BX7zhLl36ADYPU4IKNI5b90PgYNrA=
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=arm.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: 3e463957e85ed13e
X-TessianGatewayMetadata: wKvOqtqR2AGrVi70CT5vay8VCBWpzUc82FNsHhYxXMSUKgRpGFyDllbW5vkzcBKz/Lt/CHAQ///U2HeiQ3jh6xdUbn8abCxQydn4KOSmCXcP8kkJUDjNf3kGFS9ziLpz8pldhBd7z3BuuNoF1u9JTCa0SgXlcvdsTltgyk9jcr0=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=eDAFLVSrNBZHRGhpa35SveumG7oyHQjG2Dvrcgvb8bmKG/dypgx/WXqJHKVmczz+0ajiK9eE8+odjbBVTekb0iK/rlhxCVW1lK+7HvzQyW3WceAfl0dvDSUd1d6rKqxRhOPHzQWrdV+IDfh3RIbUaRvAiS8g2gT4crtO+SpheuC0ftNydCdJOENwZUpSJDE5CpD8dbxgMC0ZIsc2sT+2VjYrgiFKOXpSYBwbOkDzlBx+HsOQRtAr1t7Srq8zqS7genLC/lHSpFlhPWBziTBP2lGD3gq8z+pBadA9XoR8E4JOAPTN3qcDu7YSvB0I8jVQ6j67ZAm/QE9IvC1LVwdycw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=pEpm6YbZpc3RjaWIDZ83ATdNfsjNoI1zdoA2KN9Yzvo=;
 b=bWs3cLjR2vLBOVb/57I7uHD6AlPMia0g9CvnQWZHNYCc3PvEdHDQs4qmL6CTgs5dB4KQTcfoElnXrVNh4NOc7tH1Nx7V/oIxJYDEQfcGRj9eZ/PKi2vFzTVGOLzgbUJyQlKIHURDttQbm8MNF40nHnTa9tjQaxIiUCY3quhhG5SPYgYa2L+eciAhwUrjMHWihpsEpN0T+MpYW/jnyxNIx1HXuNHBrcbVyTSIz+3VE1zd0Kz8XWiIRPucHISL9yocqS8RQ3KBVryHQcMZXy6sw+KHgleB7GE7RuwBoY49nd2NVjzLGjs9xa3LwznI0OhFI+UVsNZLndKBLl4iwz2nXw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pEpm6YbZpc3RjaWIDZ83ATdNfsjNoI1zdoA2KN9Yzvo=;
 b=CtSIZnXgK9INDLE9a7tT8L2Ru7TOjnruwYxptGIaGANXU/9ivtB40MQhQ7PIIsXE5FBtW4u8iMlPVyL6sQHn2mCcUFo4kcqnBS4fGU3j2qi+n+qHV9KDwuv8KctscfTXiPF3SXCOfkkCw4BX7zhLl36ADYPU4IKNI5b90PgYNrA=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 01/10] xen/arm: ffa: Rework firmware discovery
Thread-Topic: [PATCH v2 01/10] xen/arm: ffa: Rework firmware discovery
Thread-Index: AQHbH6X1lwra/EHVREKaxzeIxsME2LKRdxGAgAKNjIA=
Date: Wed, 23 Oct 2024 08:03:02 +0000
Message-ID: <C0553883-A75B-45F2-AFC7-6630F2DFFFAA@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <457020b684e87ee9ad9488a4ec0d17ade90fdea1.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44FDQPepdzM1q+6QjB+fA4C+0OnC3-+Na6KMD_AVAeQadw@mail.gmail.com>
In-Reply-To:
 <CAHUa44FDQPepdzM1q+6QjB+fA4C+0OnC3-+Na6KMD_AVAeQadw@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|AS2PR08MB9341:EE_|DB1PEPF00039231:EE_|AS8PR08MB9454:EE_
X-MS-Office365-Filtering-Correlation-Id: 6ffd8ef1-9e7a-4e22-4b54-08dcf3392410
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?WElYeHlJUHJNdE5tVjFuYjlqVlFLTU5BakwzRXFkTEJGS2liTDhUSzhuUTBG?=
 =?utf-8?B?VmpZRWFQWDRqRVNOTUxmT3hzc2thRjhXdnlRWGs2QVdPYTlnRXpEUm5aekNa?=
 =?utf-8?B?NmxwWWZmTDdHYW5qbVR0WWZmN1hrbC95U2hyYkp2aEtGYnZWb2o4Mk9iSTZn?=
 =?utf-8?B?eHYyRFBUckFEOWdOaTJFY1YwQ3pKK3c3bVhlaUpMTE1Id1JocFMxdkppYVV2?=
 =?utf-8?B?aXRnNlhNb3MyVEpDTTJLNGhSeFBLbjlucm1xOFQ3TEtialB4UElBV1NpMVFy?=
 =?utf-8?B?ZG0vRWMyK3IrMVJvaW5BYUJ0ZjFLODBKUkRTL25UZ3pJNzhjV3NCazdsYk9Z?=
 =?utf-8?B?eEZHQXlyR1lZMGpkZGpGNTJIWHRMRXBoMWFWSi9YaHJkWE5IVGlXeURjK1J0?=
 =?utf-8?B?Yk1XQ01veWIydDNIL3VOczhhV21lZ0Q1Qmt2dC9oZVJCblNaUXU2WkN5KzlG?=
 =?utf-8?B?cWt2d2YxRys3MWJXWk5YUU1qTDlpQ1AzN3Q5RjlVVC9DWTVnY0Y4Y1QxRFpC?=
 =?utf-8?B?ZzJhUkp6aTN5S3p0Mm1Qa1c0ZnltcENSTUdtVmE1RXRoR0ROMFFMZHllakw0?=
 =?utf-8?B?TEVIaFJZVXI0anpoT0FnRUc3Yk5XSTBVLzB1OCt2MkFRNS9VZEluOCt0TjEv?=
 =?utf-8?B?dEpRa2s1a3ByNTl4a0krdGZyT0oyekpoZ1gyc1lTUFk0VmlqMFNNU1FRQ3ln?=
 =?utf-8?B?T0hRT1dRZnlCN0hjOWo0WlFSUGdqaklpN3dRRENrOURKdmI5Nk9sL3U2NXVv?=
 =?utf-8?B?WmZ2MlA1Ti9yb3R3ZjRvWW5UZ3g4T1p4OFVkMFJqSVNaNEkxUG1qeVhlOUpx?=
 =?utf-8?B?MkFuUkh6ZWpkdDhIVHNCd2tCSzFyeUhlOHJ0TFdhWk1OekNQZlkvcEdPd3oy?=
 =?utf-8?B?dER0M2NNS1VWZ3lubHhYUm8vZmc1OUNYaVpkZ25LWjFuL1hmVzNMU2QrTTFG?=
 =?utf-8?B?RnV0ZldOTjF0aUk0MjRydkZ2WGEvMms3YjllZG9WNHBaYmxxWVlQMW1rK3c4?=
 =?utf-8?B?MFgzbWdwampYNnRHOTBoNjZoR0FjOGV0M3R1TTRwa3NCalZiM0paR0lIckN4?=
 =?utf-8?B?V2oyK1NZVDMvNDhjUWpzV2lTRHcvS3Q0eUkvUys0M1dteVBIOFlac0FKcWpi?=
 =?utf-8?B?clcva2ZnRFJKYWZYTkphdXZIT2xnditqR3NxNDFLdENCOWNlUFVtejZaUXly?=
 =?utf-8?B?T1Y2ejViRnAwQTBCSWpJTWdmcHBaUnI4VkNUQU1wa0xqYXByb211aGsxQlJ3?=
 =?utf-8?B?amk0b1AyUGNUZFJwRXJrVkMzRU5nM3VlZXVSYU5KVno0ZkZkaFBTOGdnRnB2?=
 =?utf-8?B?eEJ5bzVESjdMNEJLMjEwRHBmSGpKQTkvVHphQUtKSHZmWWhpNGV1dlI4ZWpV?=
 =?utf-8?B?UDhVbzFkRjBqZ0xIT3VLbU5taGUxc3ordmwrbGlJbDZMaFpMbTUwbEpTd3Fz?=
 =?utf-8?B?K1lyUmVVek5zTHZHeCtYQzlCa0thaGtHVjR2SloxNXdocmZ2ejFLU09QTFhQ?=
 =?utf-8?B?WlluZkxZdi9xaisyMWFjK3o0bGkyTGhickRoQ2kwWSs3TjJZb1dwMW9MeDY0?=
 =?utf-8?B?VER6WmFad0NFMWJYVVoxVFNNanpvK3JSTXhyRkdsNGhQSFpaNW1yK0JmKzdk?=
 =?utf-8?B?bFNNTmFQSUNVK3hqa0MwUWJ6QlZTZlVzQy9rbm5naFNlR0VLRC9WQ0FxS0JR?=
 =?utf-8?B?WEJFVFY4N3doK3BpUGlMZEhCR2g4akxHbHJDa2puRGRDQnl1SUhmSE5tN1E3?=
 =?utf-8?B?Y1p2d0FGRWlKNHRSaXp6T0NKRWxERzBtSXBjYjJkekhOVUVmMHFCL3h6WWdW?=
 =?utf-8?Q?hQF4y/+IRBLlBVuXnouAuI18Hh2+6sis8PFxo=3D?=
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:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <4A22E3F24E679947A9B78A8B04855DE7@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9341
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF00039231.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	0dffac07-ada9-481f-064e-08dcf3391dfd
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?QWNDVDc4MlJ0V1paMHVlVVFtcW1XNCs3WFdYSHA0VXZnakhlYS9RQ2FFbUZh?=
 =?utf-8?B?WmFQaHgrSTZ1UXkxL1pZTFNlMS9sR0Q3Ym9TcW9qK1V1SlhKT0JBUDZBNW1z?=
 =?utf-8?B?SEFrVmtwdzZSbHk5a2M4SDRNNFF4bzVFaVNsNno1eTlwaVFuS3FGa2ovaTNS?=
 =?utf-8?B?ZHVmakNLaDVkaWdld04wOG5nSmprY1E2VWNZb0lqMFlGQmg0Zm9mRTZXNURx?=
 =?utf-8?B?cXI1aWVMVU0xTlplL0lMaGV1aFF1bTB0a0lQcGZWRkdZaVQzYWE3NFlYdWk0?=
 =?utf-8?B?UU9WdG96MDhCamZtbUUxd3M4UGltR2o4eW1FYjd4T2VOcGN3YXJlM0w0MWZY?=
 =?utf-8?B?aHhnRGE0R1M1aTlRUXFQQjhVYmpxZFhuSzduZyswQmYzeVRGeVp2d3gwWEZJ?=
 =?utf-8?B?ZnlsODF1WHpYNHU2eHdGN1B1L3BKZ3JONmMySlFBTnRGOGxTcCtweHFqMC9C?=
 =?utf-8?B?dS9yNU5ZaW5DQ3Avb25hRmtTOUNFMndONE5pZXN5cTNrb1lzMFlXcHBwUHVJ?=
 =?utf-8?B?Zmg1NUVQaENhcVN6V3B4emMzaWxLZmZRSFlpdjJsenhhN2U5Ny9VcWdRR1pS?=
 =?utf-8?B?NVRsamQzT3pkN2lNbDNrNnM5ZTRXZ3lZWjhPR21HRzZrREYwd1RjTUwwV3pJ?=
 =?utf-8?B?d2JPOXM1TlY1V09WbE9sbThZSFB2NGVUeVBNWnFvc0tJU3pxMDBia1lOQVdl?=
 =?utf-8?B?QVA5eU5iNHZzVXpLWS96cGNnbjhpZDdQWTdrY3NsUTdkV3BDRFZKT0QzdHJC?=
 =?utf-8?B?cVloRUlNUTk4K01BNzJMRytESGFmdk0vUGtnSmhENUhhbWVjM2J6a25DdFFI?=
 =?utf-8?B?ajZ1MlRtbzduaG1WY2ExZUJHaTZERkRhWGNOZlN5cnNjbjNTRTlyRjVQbnNz?=
 =?utf-8?B?d2ZhMlZxVWVDZWFEQkVXcDlucnZYempWNDlsUHhBV0lQd1FSVlVsdnpTNnkr?=
 =?utf-8?B?ZHVTUXlRWGJqbWJpK01wb0QvQUpqOXNRSzUyWjZLd29NWkx4aEl6dVlwem1E?=
 =?utf-8?B?RzJWR1ZaeUdWbFlwaE85d0VMWStjQW5JVTNQUHZoUmNXU0ZhM2Q4a1VLTjh6?=
 =?utf-8?B?Tkk5MWMzU0RzTkR3eG15SjZIaDYvRDUrUmtCZmlMRERUamZxL09sNGdsZ1hn?=
 =?utf-8?B?WEg1YTZnSndWZ3p1K0MrMXJsZXg1MTF0Y2xBZjd6N1VudHVWRHMxZG1peWE5?=
 =?utf-8?B?WDYxd1pFc0dheGFaWTRMWjdWdlkzZjFYRnBhalFDQ2NhLzJUQ2NNczdZbHBK?=
 =?utf-8?B?NTE0cTQ4VFg1VHNZNVYzMjRaK0dreG5BUlZJcDV2SGVpNE9xVUdoWEdmSmhI?=
 =?utf-8?B?UlprSGJFUVgrZjhDa1VqOWRDMy9vWWhBZnd0aHNkWmExZzg1ZmNScnViWHJr?=
 =?utf-8?B?b3U1MkNRYWVsQm9JUUdXeUNuNTJZaUErOHBQUGh4VzF4Qy82WHNOWWlVTHli?=
 =?utf-8?B?Nk9ET3dXYnNUS1E3elBMUVBNazRxRnNsWDlObnBSQnV4dlNqRGpCU0NDa0Y4?=
 =?utf-8?B?ajhCdHNGTjdCSFk5ekV5QW9QaTlld3ZWNEkxODFtWXF6YUpabDkrUGxwUE1l?=
 =?utf-8?B?ajdBWEIrMWdVQjBsSDRlTm1OZkMzcGdnYzRzaTlLU0Z2OTROM1pGQWRhRHdz?=
 =?utf-8?B?cXFjbm1LbmtLWUJ0bG1hOEU0Z2lkaXBmVytHQi9EaVhvMkFoWEphRkhpTWZ1?=
 =?utf-8?B?WDlsQnpGdEF3ZjVRNEw3YVZYeVJBMlBaUmZmZW5jaTJhMkFqQ1MrYkpBWmJ0?=
 =?utf-8?B?SUFTYU56cHF2K2x5d0pGNUhsbnFhOFpmK1JheXA1ZWtiR2FYVlpKTDQrSmxS?=
 =?utf-8?B?bFlpSksvNFBVZ2JPdzhYYlJvWmNxalVnWTBzb1VZSWloNU1KTm9aMytRNkwy?=
 =?utf-8?B?a01VRWN5L1VBYkVmbUY5UDk4WjhUdTcrVm0wR3RVbXVPcEE9PQ==?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 08:03:12.1782
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6ffd8ef1-9e7a-4e22-4b54-08dcf3392410
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:
	DB1PEPF00039231.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9454

SGkgSmVucywNCg0KPiBPbiAyMSBPY3QgMjAyNCwgYXQgMTk6MDMsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gV2VkLCBPY3QgMTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
IDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+IHdyb3RlOg0KPj4gDQo+PiBSZXdvcmsgZmlybXdh
cmUgZGlzY292ZXJ5IGR1cmluZyBwcm9iZToNCj4+IC0gbW92ZSBwcmludHMgaW50byB0aGUgcHJv
YmUNCj4+IC0gcmVuYW1lIGZmYV92ZXJzaW9uIHRvIGZmYV9md192ZXJzaW9uIGFzIHRoZSB2YXJp
YWJsZSBpZGVudGlmaWVzIHRoZQ0KPj4gIHZlcnNpb24gb2YgdGhlIGZpcm13YXJlIGFuZCBub3Qg
dGhlIG9uZSB3ZSBzdXBwb3J0DQo+PiAtIGFkZCBlcnJvciBwcmludHMgd2hlbiBhbGxvY2F0aW9u
IGZhaWwgZHVyaW5nIHByb2JlDQo+PiANCj4+IE5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4NCj4+IA0K
Pj4gU2lnbmVkLW9mZi1ieTogQmVydHJhbmQgTWFycXVpcyA8YmVydHJhbmQubWFycXVpc0Bhcm0u
Y29tPg0KPj4gLS0tDQo+PiBDaGFuZ2VzIGluIHYyOg0KPj4gLSBGaXggZXJyb3IgbWVzc2FnZSB3
aGVuIHdlIGZhaWwgdG8gcmV0cmlldmUgZmZhX3ZlcnNpb24NCj4+IC0gTW92ZSBiYWNrIHByaW50
aW5nIHRoZSBmaXJtd2FyZSB2ZXJzaW9uIGJlZm9yZSBjaGVja2luZyBzdXBwb3J0ZWQNCj4+ICBm
ZWF0dXJlcw0KPj4gLSBVc2UgV2FybmluZyBpbnN0ZWFkIG9mIEluZm8gdG8gaW5mb3JtIHVzZXIg
dGhhdCBGRi1BIGlzIG5vdCBzdXBwb3J0ZWQNCj4+ICBpbiBmaXJtd2FyZS4NCj4+IC0tLQ0KPj4g
eGVuL2FyY2gvYXJtL3RlZS9mZmEuYyB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0t
LS0tLS0tLS0tLS0tLQ0KPj4gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE3IGRl
bGV0aW9ucygtKQ0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RlZS9mZmEuYyBi
L3hlbi9hcmNoL2FybS90ZWUvZmZhLmMNCj4+IGluZGV4IDAyMjA4OTI3OGUxYy4uMWNjNDAyMzEz
NWQ1IDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9mZmEuYw0KPj4gKysrIGIveGVu
L2FyY2gvYXJtL3RlZS9mZmEuYw0KPj4gQEAgLTcxLDggKzcxLDggQEANCj4+IA0KPj4gI2luY2x1
ZGUgImZmYV9wcml2YXRlLmgiDQo+PiANCj4+IC0vKiBOZWdvdGlhdGVkIEZGLUEgdmVyc2lvbiB0
byB1c2Ugd2l0aCB0aGUgU1BNQyAqLw0KPj4gLXN0YXRpYyB1aW50MzJfdCBfX3JvX2FmdGVyX2lu
aXQgZmZhX3ZlcnNpb247DQo+PiArLyogTmVnb3RpYXRlZCBGRi1BIHZlcnNpb24gdG8gdXNlIHdp
dGggdGhlIFNQTUMsIDAgaWYgbm90IHRoZXJlIG9yIHN1cHBvcnRlZCAqLw0KPj4gK3N0YXRpYyB1
aW50MzJfdCBfX3JvX2FmdGVyX2luaXQgZmZhX2Z3X3ZlcnNpb247DQo+PiANCj4+IA0KPj4gLyoN
Cj4+IEBAIC0xMDUsMTAgKzEwNSw3IEBAIHN0YXRpYyBib29sIGZmYV9nZXRfdmVyc2lvbih1aW50
MzJfdCAqdmVycykNCj4+IA0KPj4gICAgIGFybV9zbWNjY18xXzJfc21jKCZhcmcsICZyZXNwKTsN
Cj4+ICAgICBpZiAoIHJlc3AuYTAgPT0gRkZBX1JFVF9OT1RfU1VQUE9SVEVEICkNCj4+IC0gICAg
ew0KPj4gLSAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiZmZhOiBGRkFfVkVSU0lPTiByZXR1
cm5lZCBub3Qgc3VwcG9ydGVkXG4iKTsNCj4+ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPj4gLSAg
ICB9DQo+PiANCj4+ICAgICAqdmVycyA9IHJlc3AuYTA7DQo+PiANCj4+IEBAIC0zNzIsNyArMzY5
LDcgQEAgc3RhdGljIGludCBmZmFfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCkNCj4+ICAg
ICBzdHJ1Y3QgZmZhX2N0eCAqY3R4Ow0KPj4gICAgIGludCByZXQ7DQo+PiANCj4+IC0gICAgaWYg
KCAhZmZhX3ZlcnNpb24gKQ0KPj4gKyAgICBpZiAoICFmZmFfZndfdmVyc2lvbiApDQo+PiAgICAg
ICAgIHJldHVybiAtRU5PREVWOw0KPj4gICAgICAvKg0KPj4gICAgICAgKiBXZSBjYW4ndCB1c2Ug
dGhhdCBsYXN0IHBvc3NpYmxlIGRvbWFpbiBJRCBvciBmZmFfZ2V0X3ZtX2lkKCkgd291bGQNCj4+
IEBAIC01MDUsNiArNTAyLDkgQEAgc3RhdGljIGJvb2wgZmZhX3Byb2JlKHZvaWQpDQo+PiAgICAg
ICovDQo+PiAgICAgQlVJTERfQlVHX09OKFBBR0VfU0laRSAhPSBGRkFfUEFHRV9TSVpFKTsNCj4+
IA0KPj4gKyAgICBwcmludGsoWEVOTE9HX0lORk8gIkFSTSBGRi1BIE1lZGlhdG9yIHZlcnNpb24g
JXUuJXVcbiIsDQo+PiArICAgICAgICAgICBGRkFfTVlfVkVSU0lPTl9NQUpPUiwgRkZBX01ZX1ZF
UlNJT05fTUlOT1IpOw0KPj4gKw0KPj4gICAgIC8qDQo+PiAgICAgICogcHNjaV9pbml0X3NtY2Nj
KCkgdXBkYXRlcyB0aGlzIHZhbHVlIHdpdGggd2hhdCdzIHJlcG9ydGVkIGJ5IEVMLTMNCj4+ICAg
ICAgKiBvciBzZWN1cmUgd29ybGQuDQo+PiBAQCAtNTE0LDIyICs1MTQsMjQgQEAgc3RhdGljIGJv
b2wgZmZhX3Byb2JlKHZvaWQpDQo+PiAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSDQo+PiAgICAg
ICAgICAgICAgICAiZmZhOiB1bnN1cHBvcnRlZCBTTUNDQyB2ZXJzaW9uICUjeCAobmVlZCBhdCBs
ZWFzdCAlI3gpXG4iLA0KPj4gICAgICAgICAgICAgICAgc21jY2NfdmVyLCBBUk1fU01DQ0NfVkVS
U0lPTl8xXzIpOw0KPj4gLSAgICAgICAgcmV0dXJuIGZhbHNlOw0KPj4gKyAgICAgICAgZ290byBl
cnJfbm9fZnc7DQo+PiAgICAgfQ0KPj4gDQo+PiAgICAgaWYgKCAhZmZhX2dldF92ZXJzaW9uKCZ2
ZXJzKSApDQo+PiAtICAgICAgICByZXR1cm4gZmFsc2U7DQo+PiArICAgIHsNCj4+ICsgICAgICAg
IGdwcmludGsoWEVOTE9HX0VSUiwgIkNhbm5vdCByZXRyaWV2ZSB0aGUgRkZBIHZlcnNpb25cbiIp
Ow0KPj4gKyAgICAgICAgZ290byBlcnJfbm9fZnc7DQo+PiArICAgIH0NCj4+IA0KPj4gICAgIGlm
ICggdmVycyA8IEZGQV9NSU5fU1BNQ19WRVJTSU9OIHx8IHZlcnMgPiBGRkFfTVlfVkVSU0lPTiAp
DQo+PiAgICAgew0KPj4gICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiZmZhOiBJbmNvbXBhdGli
bGUgdmVyc2lvbiAlI3ggZm91bmRcbiIsIHZlcnMpOw0KPj4gLSAgICAgICAgcmV0dXJuIGZhbHNl
Ow0KPj4gKyAgICAgICAgZ290byBlcnJfbm9fZnc7DQo+PiAgICAgfQ0KPj4gDQo+PiAtICAgIG1h
am9yX3ZlcnMgPSAodmVycyA+PiBGRkFfVkVSU0lPTl9NQUpPUl9TSElGVCkgJiBGRkFfVkVSU0lP
Tl9NQUpPUl9NQVNLOw0KPj4gKyAgICBtYWpvcl92ZXJzID0gKHZlcnMgPj4gRkZBX1ZFUlNJT05f
TUFKT1JfU0hJRlQpDQo+PiArICAgICAgICAgICAgICAgICAmIEZGQV9WRVJTSU9OX01BSk9SX01B
U0s7DQo+IA0KPiBTcHVyaW91cyBjaGFuZ2U/DQoNClllcywgSSB3aWxsIGZpeCB0aGF0IGluIG5l
eHQgdmVyc2lvbi4NCg0KPiANCj4+ICAgICBtaW5vcl92ZXJzID0gdmVycyAmIEZGQV9WRVJTSU9O
X01JTk9SX01BU0s7DQo+PiAtICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQVJNIEZGLUEgTWVkaWF0
b3IgdmVyc2lvbiAldS4ldVxuIiwNCj4+IC0gICAgICAgICAgIEZGQV9NWV9WRVJTSU9OX01BSk9S
LCBGRkFfTVlfVkVSU0lPTl9NSU5PUik7DQo+IA0KPiBJdCdzIG5vdCBhIGJpZyBkZWFsLCBidXQg
aXNuJ3QgaXQgdXNlZnVsIHRvIGtub3cgd2hpY2ggdmVyc2lvbiB3ZSdyZQ0KPiBhdD8gSWYgaXQn
cyB0b28gbXVjaCB3aXRoIGEgc2VwYXJhdGUgbGluZSwgaG93IGFib3V0IGFkZGluZyAiKG91cg0K
PiB2ZXJzaW9uICV1LnUlKSIgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBiZWxvdz8NCg0KVGhpcyB3
YXMgbW92ZWQgdXAuDQoNCj4gDQo+PiAgICAgcHJpbnRrKFhFTkxPR19JTkZPICJBUk0gRkYtQSBG
aXJtd2FyZSB2ZXJzaW9uICV1LiV1XG4iLA0KPj4gICAgICAgICAgICBtYWpvcl92ZXJzLCBtaW5v
cl92ZXJzKTsNCj4+IA0KPj4gQEAgLTU0NiwxMiArNTQ4LDE4IEBAIHN0YXRpYyBib29sIGZmYV9w
cm9iZSh2b2lkKQ0KPj4gICAgICAgICAgIWNoZWNrX21hbmRhdG9yeV9mZWF0dXJlKEZGQV9NRU1f
U0hBUkVfMzIpIHx8DQo+PiAgICAgICAgICAhY2hlY2tfbWFuZGF0b3J5X2ZlYXR1cmUoRkZBX01F
TV9SRUNMQUlNKSB8fA0KPj4gICAgICAgICAgIWNoZWNrX21hbmRhdG9yeV9mZWF0dXJlKEZGQV9N
U0dfU0VORF9ESVJFQ1RfUkVRXzMyKSApDQo+PiAtICAgICAgICByZXR1cm4gZmFsc2U7DQo+PiAr
ICAgIHsNCj4+ICsgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJmZmE6IE1hbmRhdG9yeSBmZWF0
dXJlIG5vdCBzdXBwb3J0ZWQgYnkgZndcbiIpOw0KPj4gKyAgICAgICAgZ290byBlcnJfbm9fZnc7
DQo+PiArICAgIH0NCj4+IA0KPj4gLSAgICBpZiAoICFmZmFfcnh0eF9pbml0KCkgKQ0KPj4gLSAg
ICAgICAgcmV0dXJuIGZhbHNlOw0KPj4gKyAgICBmZmFfZndfdmVyc2lvbiA9IHZlcnM7DQo+PiAN
Cj4+IC0gICAgZmZhX3ZlcnNpb24gPSB2ZXJzOw0KPj4gKyAgICBpZiAoICFmZmFfcnh0eF9pbml0
KCkgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiZmZhOiBFcnJv
ciBkdXJpbmcgUlhUWCBidWZmZXIgaW5pdFxuIik7DQo+IA0KPiBXaXRoIHRoaXMgYWRkZWQsIHdv
dWxkbid0IGl0IG1ha2Ugc2Vuc2UgdG8gcmVtb3ZlIHRoZSBlcnJvciBwcmludCBpbg0KPiBmZmFf
cnh0eF9pbml0KCk/DQoNCkRlZmluaXRlbHksIEkgbWlzc2VkIHRoYXQuDQpXaWxsIGZpeCBpbiB2
My4NCg0KQ2hlZXJzDQpCZXJ0cmFuZA0KDQo+IA0KPiBDaGVlcnMsDQo+IEplbnMNCj4gDQo+PiAr
ICAgICAgICBnb3RvIGVycl9ub19mdzsNCj4+ICsgICAgfQ0KPj4gDQo+PiAgICAgaWYgKCAhZmZh
X3BhcnRpbmZvX2luaXQoKSApDQo+PiAgICAgICAgIGdvdG8gZXJyX3J4dHhfZGVzdHJveTsNCj4+
IEBAIC01NjQsNyArNTcyLDkgQEAgc3RhdGljIGJvb2wgZmZhX3Byb2JlKHZvaWQpDQo+PiANCj4+
IGVycl9yeHR4X2Rlc3Ryb3k6DQo+PiAgICAgZmZhX3J4dHhfZGVzdHJveSgpOw0KPj4gLSAgICBm
ZmFfdmVyc2lvbiA9IDA7DQo+PiArZXJyX25vX2Z3Og0KPj4gKyAgICBmZmFfZndfdmVyc2lvbiA9
IDA7DQo+PiArICAgIHByaW50ayhYRU5MT0dfV0FSTklORyAiQVJNIEZGLUEgTm8gZmlybXdhcmUg
c3VwcG9ydFxuIik7DQo+PiANCj4+ICAgICByZXR1cm4gZmFsc2U7DQo+PiB9DQo+PiAtLQ0KPj4g
Mi40Ny4wDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 08:03:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 08:03:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824469.1238589 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3WLT-0002I8-GL; Wed, 23 Oct 2024 08:03:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824469.1238589; Wed, 23 Oct 2024 08: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 1t3WLT-0002I1-DK; Wed, 23 Oct 2024 08:03:55 +0000
Received: by outflank-mailman (input) for mailman id 824469;
 Wed, 23 Oct 2024 08:03: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=KN5j=RT=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3WLS-0002Hk-Su
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 08:03:55 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on2062a.outbound.protection.outlook.com
 [2a01:111:f403:2614::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 57f259d5-9115-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 10:03:53 +0200 (CEST)
Received: from AS9PR06CA0222.eurprd06.prod.outlook.com (2603:10a6:20b:45e::32)
 by PR3PR08MB5676.eurprd08.prod.outlook.com (2603:10a6:102:82::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Wed, 23 Oct
 2024 08:03:50 +0000
Received: from AMS0EPF000001A9.eurprd05.prod.outlook.com
 (2603:10a6:20b:45e:cafe::ad) by AS9PR06CA0222.outlook.office365.com
 (2603:10a6:20b:45e::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.29 via Frontend
 Transport; Wed, 23 Oct 2024 08:03:50 +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_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Wed, 23 Oct 2024 08:03:50 +0000
Received: ("Tessian outbound 5c9bb61b4476:v473");
 Wed, 23 Oct 2024 08:03:49 +0000
Received: from Lee6ebcd8a2fa.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 B515ECCF-ED42-4A18-B6E8-728798656714.1; 
 Wed, 23 Oct 2024 08:03:42 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lee6ebcd8a2fa.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 23 Oct 2024 08:03:42 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by AS2PR08MB9341.eurprd08.prod.outlook.com (2603:10a6:20b:59a::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Wed, 23 Oct
 2024 08:03:41 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Wed, 23 Oct 2024
 08:03: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: 57f259d5-9115-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=KDgWp1i4PhciJVxPrMuth9U/dWL0Hnix7B3wspPG2pnxatfL/BsAKyErapUCfQnjWdLhLSjMNSQcWThfsD8v2x1cMquuQjlM/QkSh9n44AdqPnhkzihmmBmmsZUH17yWSNUce4ZcgQBifMCwRQneFpplZTU4HHWI0BgmBjvCQbxSZMk7XRAgBD56EGfQbrrgXf3mCJ29LrXy5tfIwipNleN9nSS3mezRUPeCw2gp748g8MOkbys/en7nWZPvozKY87ZI/MLRFZxjLoUYR3tXQvg7aW6KvX8WWylJj9Vl3pNKiFjKkKPBOjDwkAokBmYtlJ7koo8tNrQBY69vFvTYiw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=1bAgEMeTfi8oPhogR0hpjNSHqI/H5dtGubT0r8NbpT8=;
 b=PCXz6j2K//IriLzdJ2E/wE2AC4wUterAKe8TS5pj00NlTRifmQqDrUiaJB4XH/dSWNZGGxULtcWJOPXyyNaUYOQfMNB+EjG4GoQB1P6Cy7eZbxoh/SxEDeHnyl9z1VDTIZZcalFpQthPyih+wzoXjy4cfl1mrEydqlkB5p3OxTIOcmnrOXvRiR00Mp2rb2x0PZM0XcEk2rPcY7hkF1HaTYe2ijrtTYyQRQSXaC2ijOqHQm8AFj4w9DsQdsLoZJpT0tv4oKjmy5aVnLRNw77YR4cP6+fy3Sa1IkNzQAAxVu/83NUJITtMfeFZReyHkyeXIQl8CVDQzj/OT+cek60Npg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1bAgEMeTfi8oPhogR0hpjNSHqI/H5dtGubT0r8NbpT8=;
 b=VrjCvmLcSUoJYT14H0RHD9xTFsTjOOPQUQAI7ywsbe5vqcUUYWimoy2Ozda7tsJ798hqx094sI4MsfWEqoqUUVxRcsPz+yL8sLN/xVvEu3lMcG36mT3UnE6co9+vQn8Iamr2o5CVcW9mddMm0Ls1iFTVKF/gakd+oTAv04iiaEo=
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=arm.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: af528055cd8029f7
X-TessianGatewayMetadata: 5LG6K6R89HGf8gVBF+oabmhI7lM7W74lFcqgsg9ecvi7RHfrdKlRzU1EoXRqT7UvixUHy+gsdE8CET/LXqvJoYJQA4kMekX5caIvHiB7bgXwULU9yorbf/xni1pTFFG6PKOxTa9jxKxD8ipNX9H8VzQHh2W6o4knX7Yqq8HXayM=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=gd54JUzHLqWnroeYxhiHPmWTu5ULJW+LC3NAi/SlR13/4CxDgn79LCLvcuRaDmtCQcSmg6ZW1m9V5xMEOWjzGGMLmw5YLm9/jRsZ1T8h/9EvA2uWo0hJOC5zdk5rwrYfbIIz+QJbbZAio31H9gVQwNvofV9dDETnSZgu86vfXh/+TAkqI1TrRb+03YhhHkF0ZVNnmToRChVDMZR/MzHKyueYC8SfMQqqtkyFkLOf8KLy6Wqk64MzHNgZy54ikaOjwij0EIpD3LIx3BPf6LdNJ2d3+VViMmzW6rG9hs/Thu5g1EYmAqx5Sd+1dgGkbqg0WE736duFqhxReIkf1ZhrEw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=1bAgEMeTfi8oPhogR0hpjNSHqI/H5dtGubT0r8NbpT8=;
 b=gwpOCMEb9B2ghKKOCSCQzsRCS0EMEnWDZXXJEYh5tgeOh7y/Ti5nma3o9VFMLBK21ABT8x6HOSVJ3ycjI6qVJ+pMtG+VegDKqSXsOcQR8vzHeHnT1LwiukSGyjXMYsiQdBueLE1RKRuhSixP+YbWZOZLNGivriTE5YpukgFrr39giun2KI0zSxH/vE1QoTAWhyIqQYcpR1GzyZCmb6HdCGEMM+zHBvBO1MZPeNaPMKLAEbAVomXyHaXUki9NMfDY2cESB1vRWeH+L3Tm82OuianDOz/hkosSnppl22ggvB9a5JzH9E/eBJLkuQNYfzolBpKwIfbjdSAzPXC1w/8TFA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1bAgEMeTfi8oPhogR0hpjNSHqI/H5dtGubT0r8NbpT8=;
 b=VrjCvmLcSUoJYT14H0RHD9xTFsTjOOPQUQAI7ywsbe5vqcUUYWimoy2Ozda7tsJ798hqx094sI4MsfWEqoqUUVxRcsPz+yL8sLN/xVvEu3lMcG36mT3UnE6co9+vQn8Iamr2o5CVcW9mddMm0Ls1iFTVKF/gakd+oTAv04iiaEo=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 02/10] xen/arm: ffa: Rework feature discovery
Thread-Topic: [PATCH v2 02/10] xen/arm: ffa: Rework feature discovery
Thread-Index: AQHbH6X5MdxS7WyybUSgZAd64vdid7KSWI+AgAGsPoA=
Date: Wed, 23 Oct 2024 08:03:41 +0000
Message-ID: <1402C8D3-009D-455D-AE0C-DFE245FDA746@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <8cc7abbd82b43aa595ddc2dce3495663dfc413e0.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44GUxXLmeUon5JbxcEcKqyitaC6-2FmZFAW37daqyVg-CQ@mail.gmail.com>
In-Reply-To:
 <CAHUa44GUxXLmeUon5JbxcEcKqyitaC6-2FmZFAW37daqyVg-CQ@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|AS2PR08MB9341:EE_|AMS0EPF000001A9:EE_|PR3PR08MB5676:EE_
X-MS-Office365-Filtering-Correlation-Id: bb627392-22db-4b67-3d40-08dcf3393ab1
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?THMzY3Q0TTRrQ2hoemwxTERHYkUvazVBRDRhMGp6S28xVmdRVWJzSWlEdnkw?=
 =?utf-8?B?YVU0QkZEN3Q0aTBUR3cxYTYzakczWk1na284MkU4bE1DbDIxeGpXSHYxQnNG?=
 =?utf-8?B?RXBxemM5eHpXaFhVQXRsK0xmenJuUFNuZWpsVDBYWDhtMFFLUzdUcm16THpP?=
 =?utf-8?B?TWpBeWVTcEExdDBCZW1GS1kvKytxOUt6RlJHaDh4NHNPY25lVVlqVjFIRk1r?=
 =?utf-8?B?ZzJ6Qk5adnZUVFQ0OHZXVnUvSGdnV2dKbDVsZ2pSSUg4cmh2ZFlxWXJtcUw4?=
 =?utf-8?B?eTVyWVFZZkR2dExKeEhucFRMbE9ZbndGYWliWUhObDdtdFQrY1VNZXhnNGZD?=
 =?utf-8?B?bHBGT2lJY2cwQUhDNnJWOGl1UG04ZHFZMXhPQWpQV2VSaFh1SnJGL3ZNeE5l?=
 =?utf-8?B?cXpVVkNaeGJHbElHZUNCdGNlRWJOUmM1Z2VjTTNwVStTSjFFaGJqUHpKNnhu?=
 =?utf-8?B?aUUxcitYY2FkbHJoSzMzUkhScW9xb0QzcXY2RWFHOHVqWTNnWG9kc0p0UWQ1?=
 =?utf-8?B?SmdYUjBka3F1L0tHcVJIbGdTbU9ScG5OZ1MvTFlCNm14dmxZSjBhRGt1ZjVU?=
 =?utf-8?B?LzJkcjAvQis3TE9lQ0tyOTlqYlhaS2oxZHdSQ3pEN3JtR2xDbjFiaGYxVG9v?=
 =?utf-8?B?MXd2NGx2WGN4UXB0WlBIcjRTcnJLMHE4WUEzNHlRdS9IVGZIMVhtb2gwemFH?=
 =?utf-8?B?UVNCVUNVY0lJS2lGblI0aVlvL08ydjVUTUIvbmRpOFJxTDI1WUdKazNNSUZP?=
 =?utf-8?B?cHlneGhNVzRIUWIyTFpwamxYQXlBZDJXNTF2cFpPVk1XZE55OTI4cFc1dGY1?=
 =?utf-8?B?SmpCQndkV3lFWUI1UTFGTzVYRnFsS01NV1B5RHNJOFRBVkM4TVQ4WnR1MjFl?=
 =?utf-8?B?TDNlR0o1L1cyWlFwcDhEYlA3dFQ1d21FTFgxTFd0aXRHVElNSTNqMTBQTHZ0?=
 =?utf-8?B?SW9EUFFYOXlJRG4wRndQWXhoTHVRdisvcGRlYk9VbnpxSHIyYmo4UXpZUnkw?=
 =?utf-8?B?RHh4MHBTdTkyd2tYcXQvWVBwMmoxUkEyNWF4N2xzZTl4VmRDdTQ2aXRTV005?=
 =?utf-8?B?d0RSaTQxK3NZczZvaitjNjJWbnNxMUptMFNEaTJVSkFENG1PYnRUM3E3YklG?=
 =?utf-8?B?N3dWSGJNNC82YVA3VVJTaStJdUI1aEJ1U2xHa1hKS0tTK0JPV2V0VjJZcG5L?=
 =?utf-8?B?dHM5eWdTVXlobXZxbmdWcnB4MTJkU0lVNnZQa1NLbEYwQ3JiQlB2VXdueTNF?=
 =?utf-8?B?eHJNaElKWUNCM1lPbXNMQVJlWHh6NzBTcmRETFJFZ1lZdmRqY2ZDUy8zVDdi?=
 =?utf-8?B?Rlh6djlUK09manpxNnNUTXB2N2ZsU3ZYZC9iVVNjbDNCVitubDVzWnpWK1dG?=
 =?utf-8?B?TWx5cVlpamgrblN4Rm9wd0NteTNlaUdhWEZ2ZVNhTGpVU0xpZWRGT3RCQjRR?=
 =?utf-8?B?OW5XRzNWdFkrYkFnTTYrNkJCUmVycWZXaUdldnJrTStYaE5CZDVHa1BMRnVD?=
 =?utf-8?B?T1ZkT3piTGNaSXRwc054aUJienJOV2ZtTXVDczJ0U01HNlB0YVpMbE9qOURM?=
 =?utf-8?B?S0lkNnczaFlsZUprU2EvOGlJMjl2SkpUNlhOekNQbEY4VUhoZnNUTDlrYmV6?=
 =?utf-8?B?UFJUZTc1Ukx2VHhZZXZicGVuSUozVTAwY3hJczlHaGt3TXozOCt3Y3FvVllJ?=
 =?utf-8?B?OXhWMkoySzB2QzlvdkVwclNidnM5QnhPb2VSdjVvS1dDTkZaa3NQLzhqeGdD?=
 =?utf-8?B?Y3JLQmNSdXZucnZoWU53b041ZWpPWnJyeGZPQkxsbEIzdDlkTFhYTDUvaDZi?=
 =?utf-8?Q?DPhHm1jFYhL2iJYbGOvExJxkYV4vbW8WNn4iU=3D?=
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:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <6D80ADD69973E3499F17E79920E6010E@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9341
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A9.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8d132859-e59b-4908-e405-08dcf3393553
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?NUZjYWhMbU96VmloMTAzcy92Szh3VUw4eG1LTU1KRy9uRkthSEN0VW5ibFA4?=
 =?utf-8?B?UnpFRjRmS3VUR281NEhCc3F3N0NscEdEVDVoNTkvdHkzcWdCN3RnV2FxK3Ft?=
 =?utf-8?B?NlF0OHl0UGRvbnBDSTJHODViVWEyWkVxSW5ic21xbkxZSGVXNmVzNUpOM3kw?=
 =?utf-8?B?SllpdVdacUZkcnJ4Sjl1b1N4bVY2aklhTklkMnVvUXVkendMN3dVZDVMZ2dK?=
 =?utf-8?B?UWZtS3FZQVcvczYwOWNrSmdPVzRJT1lyY1BKbmhnK2pBNTRidEh5VkpVdTAr?=
 =?utf-8?B?WlFoNERDODBzUGYrSFZlQ2kwK0pvK2hPdzdXNUZFdlpmS1NvclBkZlpJaHpq?=
 =?utf-8?B?Ykx5NURDL0VEVVcwNkdpbmVQSlJXNjJvamhjcjlPYUpuYksvelNQMHFYN3Jt?=
 =?utf-8?B?YklYYktnUjRmQ3E2VnZEN2VyZUpDMk5BbTNONnFTcFo0VmRuMWdOWlE4R1pQ?=
 =?utf-8?B?ZVJaL0ZaQUhwQUhrMWQ5WEJwWmNMcWMwMEp1dVhjYnZKS3d6NFU3SnBGQ1Fr?=
 =?utf-8?B?eFVUZXNXTitibmdDeUhzRGpLY2tiT0d6TndhelVpQm1CcVhITVh4dk1sNDM3?=
 =?utf-8?B?RXEwK0ljaUdjemcyMDZqZTRmbE9BM0w2NVJhbFZNRUI2V1VrVUJ6S0pHZ2pE?=
 =?utf-8?B?OHpVRktEL0laSUlLVSs2QWVxK1FISzlnUkxKY0VXb0JZdGkzaDAxd21LYzNH?=
 =?utf-8?B?dXFacDRoRW9vV1lCOTc4VnFNM2RBWnN4alpERzRtdTVLY2oyM1FMcUZlTHZU?=
 =?utf-8?B?SjBLUk5CWFQ1dUFpSUdtNnNGQW1meDU0QVRzMjYxclZoRVkxWC85NVI0U3lP?=
 =?utf-8?B?LytkR1VxZGNWWklIelZnZE9qREZDUzNKZHhlNGtnQ0xOckJ4YXlBY1NRTC9L?=
 =?utf-8?B?MUxzdFZhVEs3VTlYM2VJekZBMG5BM1JpQytDeWRONHhXNXc2MFhpdS9xMm5H?=
 =?utf-8?B?YWN4ODJ1K3dTdFBoMTRwMWRPSXdBai9WMnBzRlpMa1pzSmtsZmdMcjFmR1N5?=
 =?utf-8?B?eEdpZ0p5NTZUS3dEcS9XektiOTRCaG4zU3YzR0liMEkxT3ZGUWplT1hrUVNX?=
 =?utf-8?B?bnJTMU5VUjh2ZDh2cFBMRTB3MTYxTDRSdFpDZGhYRE9BM0pLY1AraGJXMXhF?=
 =?utf-8?B?cGpYdGk3SjI1dmFjWW1JSHppTDFSQy9VNXZsYlBtbktyL1BRcFpMbWViZ0JQ?=
 =?utf-8?B?S0N5K0NsdTlhRXB1Y0hoWXB0MWRsYm5ZU1p2NFREUEpWNWNyQ29OMVlqd2Q5?=
 =?utf-8?B?dFlYTVd0dFNLMDNVcXdjQXAwL2hnV3JvVkQ3WVRmZmJHM2x1b083SmdPVjhS?=
 =?utf-8?B?bk5sZHR5Uks3bDd3S0t4QlAvcHJmOU9pV2RXTWQva2ZlQy9jdmhVeGpCOE85?=
 =?utf-8?B?S0d3Rm9SeUFmTjFSb1R5Sm1MdWw5S1pmUEhmaENBN0YxdE5DWS8vYTRQUXBa?=
 =?utf-8?B?V0VVbDNDazZrWUUyaXlQZWtlNWtHM3VzQmZMS3FCOCs4MDRoRy92Q0FpcUFv?=
 =?utf-8?B?TzZaMGQ2djl0S1RBVmJXYkV2djBMYnJsZ05QY1hpNkFXNTFCcktBQVJvcUI0?=
 =?utf-8?B?WXNPVCt1ZXpsN1dSY2JKb1kzdzZpK05BQ3lYUzdJUStZcGdVYlppUnNSakJF?=
 =?utf-8?B?TjVyMEF1c0tLZmpNMkNPTk1rQW5BaDJ5dzNWWHNDcXV6UjBxdS9wOUQxMTVu?=
 =?utf-8?B?ZXVSZ3FtNDNNbTBoTS82cjdpVXFtOUVHZ3BFcVNsREZHSVhjMnFSb2ZKM1hM?=
 =?utf-8?B?a3puNmFKcm85RmZnR3REZnRlL25kSkxQN0M4bGUzS0VkV2dWMnA3NHJuNUpW?=
 =?utf-8?B?SlBtWS9ldTZwdzQrZnh3UnlXaDdBNmprRXVKc1FOSEIyaUJTdE96WUwrMEN6?=
 =?utf-8?B?S2UzUjN6cGh0MTlsSDN0dWtNTkhPSi94aG8rZ2RNeGZQR0E9PQ==?=
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:(13230040)(82310400026)(1800799024)(36860700013)(376014)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 08:03:50.2522
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bb627392-22db-4b67-3d40-08dcf3393ab1
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: PR3PR08MB5676

SGkgSmVucywNCg0KPiBPbiAyMiBPY3QgMjAyNCwgYXQgMDg6MzAsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gV2VkLCBPY3QgMTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
IDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+IHdyb3RlOg0KPj4gDQo+PiBTdG9yZSB0aGUgbGlz
dCBvZiBBQkkgd2UgbmVlZCBpbiBhIGxpc3QgYW5kIGdvIHRocm91Z2ggdGhlIGxpc3QgaW5zdGVh
ZA0KPj4gb2YgaGF2aW5nIGEgbGlzdCBvZiBjb25kaXRpb25zIGluc2lkZSB0aGUgY29kZS4NCj4+
IA0KPj4gTm8gZnVuY3Rpb25hbCBjaGFuZ2UuDQo+PiANCj4+IFNpZ25lZC1vZmYtYnk6IEJlcnRy
YW5kIE1hcnF1aXMgPGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4NCj4+IC0tLQ0KPj4gQ2hhbmdl
cyBpbiB2MjoNCj4+IC0gU3RvcmUgYSBzdHJpbmcgdmVyc2lvbiBvZiBBQkkgbmVlZGVkIGZyb20g
ZmlybXdhcmUgYW5kIHByaW50IHRoZSBuYW1lDQo+PiAgb2YgdGhlIEFCSSBub3Qgc3VwcG9ydGVk
IGluc3RlYWQgb2YgdGhlIGlkDQo+PiAtIFJlc3RvcmUgY29tbWVudCB3aXRoIFRPRE8gd2hpY2gg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gcmVtb3ZlZCBhdCB0aGlzDQo+PiAgc3RhZ2UNCj4+IC0gZml4
IHRvIHVuc2lnbmVkIGludCB0aGUgaW5kZXggaW4gdGhlIGxvb3Agb24gdGhlIGFycmF5DQo+PiAt
IHVzZSBhYmkgaW5zdGVhZCBvZiBmZWF0dXJlIGluIHRoZSBuYW1lcyBvZiB0aGUgZnVuY3Rpb25z
IGFuZCB2YXJpYWJsZXMNCj4+ICBhcyB3ZSBhcmUgbm90IGNoZWNraW5nIGZlYXR1cmVzIGJ1dCBh
YmlzDQo+PiAtLS0NCj4+IHhlbi9hcmNoL2FybS90ZWUvZmZhLmMgfCA1NyArKysrKysrKysrKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0NCj4+IDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNl
cnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkNCj4+IA0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNo
L2FybS90ZWUvZmZhLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jDQo+PiBpbmRleCAxY2M0MDIz
MTM1ZDUuLmRkZTkzMjQyMmVjZiAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZh
LmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMNCj4+IEBAIC03NCw2ICs3NCwzMSBA
QA0KPj4gLyogTmVnb3RpYXRlZCBGRi1BIHZlcnNpb24gdG8gdXNlIHdpdGggdGhlIFNQTUMsIDAg
aWYgbm90IHRoZXJlIG9yIHN1cHBvcnRlZCAqLw0KPj4gc3RhdGljIHVpbnQzMl90IF9fcm9fYWZ0
ZXJfaW5pdCBmZmFfZndfdmVyc2lvbjsNCj4+IA0KPj4gK3N0cnVjdCBmZmFfZndfYWJpIHsNCj4+
ICsgICAgY29uc3QgdWludDMyX3QgaWQ7DQo+IA0KPiBJIHByZWZlciByZW1vdmluZyB0aGUgY29u
c3QgYXR0cmlidXRlIGZvciB0aGlzIHN0cnVjdCBtZW1iZXIgc2luY2UgaXQNCj4gZG9lc24ndCBh
ZGQgYW55dGhpbmcgd2hlbiB0aGUgc3RydWN0IGl0c2VsZiBpcyBjb25zdC4NCg0KV29ya3MgZm9y
IG1lLg0KV2lsbCBmaXggaW4gdjMuDQoNCkNoZWVycw0KQmVydHJhbmQNCg0KPiANCj4gQ2hlZXJz
LA0KPiBKZW5zDQo+IA0KPj4gKyAgICBjb25zdCBjaGFyICpuYW1lOw0KPj4gK307DQo+PiArDQo+
PiArI2RlZmluZSBGV19BQkkoYWJpKSB7YWJpLCNhYml9DQo+PiArDQo+PiArLyogTGlzdCBvZiBB
Qkkgd2UgdXNlIGZyb20gdGhlIGZpcm13YXJlICovDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBm
ZmFfZndfYWJpIGZmYV9md19hYmlfbmVlZGVkW10gPSB7DQo+PiArICAgIEZXX0FCSShGRkFfVkVS
U0lPTiksDQo+PiArICAgIEZXX0FCSShGRkFfRkVBVFVSRVMpLA0KPj4gKyAgICBGV19BQkkoRkZB
X05PVElGSUNBVElPTl9CSVRNQVBfQ1JFQVRFKSwNCj4+ICsgICAgRldfQUJJKEZGQV9OT1RJRklD
QVRJT05fQklUTUFQX0RFU1RST1kpLA0KPj4gKyAgICBGV19BQkkoRkZBX1BBUlRJVElPTl9JTkZP
X0dFVCksDQo+PiArICAgIEZXX0FCSShGRkFfTk9USUZJQ0FUSU9OX0lORk9fR0VUXzY0KSwNCj4+
ICsgICAgRldfQUJJKEZGQV9OT1RJRklDQVRJT05fR0VUKSwNCj4+ICsgICAgRldfQUJJKEZGQV9S
WF9SRUxFQVNFKSwNCj4+ICsgICAgRldfQUJJKEZGQV9SWFRYX01BUF82NCksDQo+PiArICAgIEZX
X0FCSShGRkFfUlhUWF9VTk1BUCksDQo+PiArICAgIEZXX0FCSShGRkFfTUVNX1NIQVJFXzMyKSwN
Cj4+ICsgICAgRldfQUJJKEZGQV9NRU1fU0hBUkVfNjQpLA0KPj4gKyAgICBGV19BQkkoRkZBX01F
TV9SRUNMQUlNKSwNCj4+ICsgICAgRldfQUJJKEZGQV9NU0dfU0VORF9ESVJFQ1RfUkVRXzMyKSwN
Cj4+ICsgICAgRldfQUJJKEZGQV9NU0dfU0VORF9ESVJFQ1RfUkVRXzY0KSwNCj4+ICt9Ow0KPj4g
DQo+PiAvKg0KPj4gICogT3VyIHJ4L3R4IGJ1ZmZlcnMgc2hhcmVkIHdpdGggdGhlIFNQTUMuIEZG
QV9SWFRYX1BBR0VfQ09VTlQgaXMgdGhlDQo+PiBAQCAtMTEyLDIwICsxMzcsOSBAQCBzdGF0aWMg
Ym9vbCBmZmFfZ2V0X3ZlcnNpb24odWludDMyX3QgKnZlcnMpDQo+PiAgICAgcmV0dXJuIHRydWU7
DQo+PiB9DQo+PiANCj4+IC1zdGF0aWMgaW50MzJfdCBmZmFfZmVhdHVyZXModWludDMyX3QgaWQp
DQo+PiAtew0KPj4gLSAgICByZXR1cm4gZmZhX3NpbXBsZV9jYWxsKEZGQV9GRUFUVVJFUywgaWQs
IDAsIDAsIDApOw0KPj4gLX0NCj4+IC0NCj4+IC1zdGF0aWMgYm9vbCBjaGVja19tYW5kYXRvcnlf
ZmVhdHVyZSh1aW50MzJfdCBpZCkNCj4+ICtzdGF0aWMgYm9vbCBmZmFfYWJpX3N1cHBvcnRlZCh1
aW50MzJfdCBpZCkNCj4+IHsNCj4+IC0gICAgaW50MzJfdCByZXQgPSBmZmFfZmVhdHVyZXMoaWQp
Ow0KPj4gLQ0KPj4gLSAgICBpZiAoIHJldCApDQo+PiAtICAgICAgICBwcmludGsoWEVOTE9HX0VS
UiAiZmZhOiBtYW5kYXRvcnkgZmVhdHVyZSBpZCAlI3ggbWlzc2luZzogZXJyb3IgJWRcbiIsDQo+
PiAtICAgICAgICAgICAgICAgaWQsIHJldCk7DQo+PiAtDQo+PiAtICAgIHJldHVybiAhcmV0Ow0K
Pj4gKyAgICByZXR1cm4gIWZmYV9zaW1wbGVfY2FsbChGRkFfRkVBVFVSRVMsIGlkLCAwLCAwLCAw
KTsNCj4+IH0NCj4+IA0KPj4gc3RhdGljIHZvaWQgaGFuZGxlX3ZlcnNpb24oc3RydWN0IGNwdV91
c2VyX3JlZ3MgKnJlZ3MpDQo+PiBAQCAtNTQwLDE3ICs1NTQsMTQgQEAgc3RhdGljIGJvb2wgZmZh
X3Byb2JlKHZvaWQpDQo+PiAgICAgICogVE9ETzogUmV3b3JrIHRoZSBjb2RlIHRvIGFsbG93IGRv
bWFpbiB0byB1c2UgYSBzdWJzZXQgb2YgdGhlDQo+PiAgICAgICogZmVhdHVyZXMgc3VwcG9ydGVk
Lg0KPj4gICAgICAqLw0KPj4gLSAgICBpZiAoICFjaGVja19tYW5kYXRvcnlfZmVhdHVyZShGRkFf
UEFSVElUSU9OX0lORk9fR0VUKSB8fA0KPj4gLSAgICAgICAgICFjaGVja19tYW5kYXRvcnlfZmVh
dHVyZShGRkFfUlhfUkVMRUFTRSkgfHwNCj4+IC0gICAgICAgICAhY2hlY2tfbWFuZGF0b3J5X2Zl
YXR1cmUoRkZBX1JYVFhfTUFQXzY0KSB8fA0KPj4gLSAgICAgICAgICFjaGVja19tYW5kYXRvcnlf
ZmVhdHVyZShGRkFfTUVNX1NIQVJFXzY0KSB8fA0KPj4gLSAgICAgICAgICFjaGVja19tYW5kYXRv
cnlfZmVhdHVyZShGRkFfUlhUWF9VTk1BUCkgfHwNCj4+IC0gICAgICAgICAhY2hlY2tfbWFuZGF0
b3J5X2ZlYXR1cmUoRkZBX01FTV9TSEFSRV8zMikgfHwNCj4+IC0gICAgICAgICAhY2hlY2tfbWFu
ZGF0b3J5X2ZlYXR1cmUoRkZBX01FTV9SRUNMQUlNKSB8fA0KPj4gLSAgICAgICAgICFjaGVja19t
YW5kYXRvcnlfZmVhdHVyZShGRkFfTVNHX1NFTkRfRElSRUNUX1JFUV8zMikgKQ0KPj4gKyAgICBm
b3IgKCB1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZmYV9md19hYmlfbmVlZGVk
KTsgaSsrICkNCj4+ICAgICB7DQo+PiAtICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiZmZhOiBN
YW5kYXRvcnkgZmVhdHVyZSBub3Qgc3VwcG9ydGVkIGJ5IGZ3XG4iKTsNCj4+IC0gICAgICAgIGdv
dG8gZXJyX25vX2Z3Ow0KPj4gKyAgICAgICAgaWYgKCAhZmZhX2FiaV9zdXBwb3J0ZWQoZmZhX2Z3
X2FiaV9uZWVkZWRbaV0uaWQpICkNCj4+ICsgICAgICAgIHsNCj4+ICsgICAgICAgICAgICBwcmlu
dGsoWEVOTE9HX0lORk8gIkFSTSBGRi1BIEZpcm13YXJlIGRvZXMgbm90IHN1cHBvcnQgJXNcbiIs
DQo+PiArICAgICAgICAgICAgICAgICAgIGZmYV9md19hYmlfbmVlZGVkW2ldLm5hbWUpOw0KPj4g
KyAgICAgICAgICAgIGdvdG8gZXJyX25vX2Z3Ow0KPj4gKyAgICAgICAgfQ0KPj4gICAgIH0NCj4+
IA0KPj4gICAgIGZmYV9md192ZXJzaW9uID0gdmVyczsNCj4+IC0tDQo+PiAyLjQ3LjANCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 09:25:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 09:25:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824485.1238599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3XcD-0003dJ-8k; Wed, 23 Oct 2024 09:25:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824485.1238599; Wed, 23 Oct 2024 09:25: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 1t3XcD-0003dC-5L; Wed, 23 Oct 2024 09:25:17 +0000
Received: by outflank-mailman (input) for mailman id 824485;
 Wed, 23 Oct 2024 09:25: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3XcB-0003d6-Hw
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 09:25:15 +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 b495c92b-9120-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 11:25:12 +0200 (CEST)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9a0cee600aso816731166b.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 02:25:12 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d636csm446904966b.36.2024.10.23.02.25.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 23 Oct 2024 02:25:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b495c92b-9120-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729675512; x=1730280312; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=sq7WzUK3PqY+nCo3Gc/XmJGD+0wZN+s8XxCFdfzBEiA=;
        b=jLMaKjuXzcKv2iC1f6iSsD0fVH9qDdSuHv9CWees9okCLk4sXiwhEe78M26gYPPFEF
         EOMLPWTDPrjRpzusuznLT0OBJAZQU8pqcHVASbMBAXV7PL3TdLmQ/nCLpjf07szUfcHJ
         DcEJIU6QjvHhSn/iPwyvyz3s64KG5LZdDw01U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729675512; x=1730280312;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=sq7WzUK3PqY+nCo3Gc/XmJGD+0wZN+s8XxCFdfzBEiA=;
        b=VXLS1BMhN+bUESCIM7BYt+43rRil+v8Er1LplRgZYguP7IogaK5yjG5CvPRjC9Sdv1
         kPK5Lk7LvqXHgUE4DytbW25+TOn2seK4z5JwKjmmeh9n9VHx81sKsAf2OT87OpDnwjVb
         qQUxK/V6YTZ93fQ3u9Cj4nZ66yCO6nyl18Cg9I6gYHR7kz3Nj3SqyS1Fsw8NwuLU593M
         JswqcUx4SIQbm93a2/HkUQFmZ5PwAslYNCOoqpYuTP8E3t01y9S9BXUGRQ/vpSiCUAhu
         7VrG/EOKBwSDnDnxNv/eLGFp2ejJBRVSULSurhIPAuRsFc5CUzD7XCt5OUK181J2EmbA
         CwLg==
X-Forwarded-Encrypted: i=1; AJvYcCXPycHCl/GjuRccMHHVF3f6Wc0mUHaxgoLotYmtrDrBL9mG7vE5rK+z8YA5WWleW4/UP7brSl/rkXk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxIVPzh70hp95K/YxFaHzr5ot459Jz7b4rXtD3PR1E1eJFHjEyg
	fqNHKKdVVBVuZRspOjvTo/q4qKOOQgfUVgUMFsnlqhybC28k0ckCxBKljV4huGw=
X-Google-Smtp-Source: AGHT+IGR32LRauRF3sHqoMy5fZkH5ChxXRQhi8Dv51Kqo3Bw/iHkMCLRr3MqPogiYoUgOo4ToXh32w==
X-Received: by 2002:a17:906:4fce:b0:a99:ffb5:1db6 with SMTP id a640c23a62f3a-a9abf894224mr155145566b.24.1729675511995;
        Wed, 23 Oct 2024 02:25:11 -0700 (PDT)
Message-ID: <a733d521-8c08-4570-8947-99a2569dc374@citrix.com>
Date: Wed, 23 Oct 2024 10:25:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Fix PVH boot during boot_info transition period
To: Alan.Robinson@fujitsu.com, Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, "Daniel P . Smith" <dpsmith@apertussolutions.com>
References: <cd8f29e7662f44999552be6e75ac6d6c@BEZP281MB2581.DEUP281.PROD.OUTLOOK.COM>
 <20241023071022.GA30985@ts.fujitsu.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241023071022.GA30985@ts.fujitsu.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23/10/2024 8:10 am, Alan Robinson wrote:
> Hi Andrew,
>
> A small suggestion for the commit log..
>
> On Tue, Oct 22, 2024 at 12:41:14PM +0000, Andrew Cooper wrote:
>> multiboot_fill_boot_info() taking the physical address of the multiboot_info
>> structure leads to a subtle use-after-free on the PVH path, with rather less
>> subtle fallout.
>>
>> The pointers used by __start_xen(), mbi and mod, are either:
>>
>>  - MB:  Directmap pointers into the trampoline, or
>>  - PVH: Xen pointers into .initdata, or
>>  - EFI: Directmap pointers into Xen.
>>
>> Critically, these either remain valid across move_xen() (MB, PVH), or rely on
>> move_xen() being inhibited (EFI).
>>
>> The conversion to multiboot_fill_boot_info(), taking only mbi_p, makes the PVH
>> path use directmap pointers into Xen, as well as move_xen() which invalidates
>> said pointers.
>>
>> Switch multiboot_fill_boot_info() to consume the same virtual addresses that
>> __start_xen() currently uses.  This keeps all the pointers valid for the
>> duration of __start_xen(), for all boot protocols.
>>
>> It can be safely untangled once multiboot_fill_boot_info() takes a full copy
>> the multiboot info data, and __start_xen() has been moved over to using the
>  of the multiboot info data, and __start_xen() has been moved over to using the

Thanks for noticing.  Unfortunately this change was already taken to
unblock other pending work.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 09:29:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 09:29:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824491.1238610 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3XgZ-0004GQ-ND; Wed, 23 Oct 2024 09:29:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824491.1238610; Wed, 23 Oct 2024 09:29: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 1t3XgZ-0004GJ-Jp; Wed, 23 Oct 2024 09:29:47 +0000
Received: by outflank-mailman (input) for mailman id 824491;
 Wed, 23 Oct 2024 09:29: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=fvWg=RT=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1t3XgY-0004GD-J1
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 09:29:46 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20626.outbound.protection.outlook.com
 [2a01:111:f403:2409::626])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 55a1dc99-9121-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 11:29:44 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by SN7PR12MB8103.namprd12.prod.outlook.com (2603:10b6:806:355::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Wed, 23 Oct
 2024 09:29:40 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%3]) with mapi id 15.20.8069.027; Wed, 23 Oct 2024
 09:29: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>
X-Inumbo-ID: 55a1dc99-9121-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=nhHaP8Cegrx3hSogthTK3Fx8hwnOX/98E5T3uvreUgOtHkEk0imajqcPCZIMZ6eKDGRXwUOrKJS5dj5+zxyjQddEam852lrtHdf9eljK1k1Bvv8hFnZy5E7cek0rZbOoU1tx3bkzbPkBkNadjGCM5VU99dYIoDBzPpPBSqbrG6aGaQkOyliRNbApsPFGVCMbHSfRlb5ss4E0e9q9Cp74XcTOY32kEc5HnJsHy0hxaplyz1dF5eN/nVO5A2XPeYEt3UjSCjSmWqNpib/IieUX8xlN3cFZZBz3scs0yxPeLBAANRLuzElNHw6t/VbSYa3z7mhp8lnD0CLSlB7oqdgZBQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=zvw35kUVAkte2LwthYyjDvSiuNqPW1GicGkr/+EELsw=;
 b=Vienz4fL2Z10ksmhqefxSo5Z1cTIQAdsXv0MBre3HmS/uHpeHPxZZrqceoTX3qipIKkqX2PGVM+O11j8XYEY/enZ9rSXahk6WTBz/+XqJ1SMhdMq4HDA6RX8b8xF1z4o1yNHCGKR5kpzcfqQ+gChSPfd7QdJeJ/Mw+35Y39Y6lKHdHKHFl1OAfaN8bdgcckrXlLF3DAWGkE4iIu3t03PotTW3ExJkc7UPHtWK3ZNJlH2BroqmGTT4J7BQINfNgmREIqS4oVv9cwML61ZAnZjVIzKf7gsqXhyPeM3WcCH1posOjtloDmyylCAIRN/pdIMz6cr5h+XEt0x4Yr0dTcxTA==
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=zvw35kUVAkte2LwthYyjDvSiuNqPW1GicGkr/+EELsw=;
 b=DWL98DCWusDG5sjY3detUBGTWvHdduh7rbFzAA2xub2uokTtjPSNp++Ep6mZ8+I6Hp912OZ7m4deuCIBTVgyu2sFzbmmz4lxqiRozS8PP7e6YFSn4Jwer4MkDP+1G7AqFef/yS/TR92jVkWtuy7hI4L6QaMVjFf9yNR9yKL/cvU=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>
CC: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, Stefano Stabellini
	<sstabellini@kernel.org>, "Edgar E . Iglesias" <edgar.iglesias@gmail.com>,
	Paul Durrant <paul@xen.org>, Anthony PERARD <anthony@xenproject.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "Huang,
 Ray" <Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0 is
 PVH
Thread-Topic: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0
 is PVH
Thread-Index: AQHbH5SoA03nzCynnUmi2VFVuzae7rKRuBKAgALqNQA=
Date: Wed, 23 Oct 2024 09:29:39 +0000
Message-ID:
 <BL1PR12MB5849A93613726C855C612580E74D2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241016062827.2301004-1-Jiqian.Chen@amd.com>
 <83ae0df2-c255-48ca-9f50-d495d1593852@amd.com>
In-Reply-To: <83ae0df2-c255-48ca-9f50-d495d1593852@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8069.027)
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_|SN7PR12MB8103:EE_
x-ms-office365-filtering-correlation-id: 07b126e0-b987-417f-49d4-08dcf3453824
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?L1lVREJBeWtIK3RSZEk4SDBYUXRjaC80MFpVd1hudGJiYlZpNDlMd3pWTzRu?=
 =?utf-8?B?RHpKUlJNbmNmQWduYjdaRGtsN05vb0M4TTcwVXRlaTU5bHl1Y01rY0JDOEE4?=
 =?utf-8?B?bnF4aDlOTi8zTDN0NHBXQ2tZQU9DU0JUZUU0ZjY5WStic1BjZnBPRVJQTkl0?=
 =?utf-8?B?MkNEMG5Xd3hjQVRBS2JvRVNCZVMxSG00Y1B5YWtpcVd0Z1o2RzAvUkl4N29n?=
 =?utf-8?B?Nm5KUzR6VGMwQjFaNjIyVlB6OWY4bllEL0d4SjVvd2VUb3NhZ0ZVZXFoYTBK?=
 =?utf-8?B?S3BmOGxSb1ZqV0EvOC9CWWtKMDhtcEM5aFRoTUtmWUhvakhoUFhOUy8vS21O?=
 =?utf-8?B?UzNmR3NLd3lTVHFYRVpkdDdCMDMvVFlPbDNhU2E3eU9xMVMvRVJWUnlkT0JY?=
 =?utf-8?B?OTNzajUrM1A5R2lYek9wTm5NK3ZNczJHcUpuc21MdjRFUWVsVldmckpsZ1Rt?=
 =?utf-8?B?YVM5eGhseDV1UER3WFlEMDJxQ3pOcmFQRUErNmZZakhOcDVIZ1RWSEdZUUxw?=
 =?utf-8?B?ZDNSMXhZWjF4TURPZlZ6OWlHMmxoU2lxUklSc1hXVStEZHlRZTNNOEs4OEdJ?=
 =?utf-8?B?dlBpRUlxTlI0TDJXYmxFYnNEdGhWNlFEeUtqNUlBZWpnTDFETmhFMFBNU3Yy?=
 =?utf-8?B?dzZwd3VzUm5lYmNFNkd5U0FqWUxqMUpKNUJDUGl5d3hrdDNMaC9yRmVWSnJs?=
 =?utf-8?B?K2N1aEYvNXY1YUhGbHNLcEhqUlF3UThzRGw5UU9sVHpXTlJqYiszUUJYM0Zz?=
 =?utf-8?B?ZkFGTlRuUnlxbG1TbGRpQml2M295Ny9FVCtxKzJVWUE4UkorcDd1Z21qNkxu?=
 =?utf-8?B?V2swTTFlYzB1c1N0TG4wb0RCRHc2S0IzczZEYVdVTC82K3o0VEY4aHZaQitJ?=
 =?utf-8?B?UGVZS3UzemZOcTNEMjRhcExLL3Z6RFV1SmRQZmRKTlk0anpFdEdBTnFUQkE4?=
 =?utf-8?B?TVJhc0JLbnBNTXhOaVRWVC8zcUlsRFhxT0t1SFRrUHBMb2pvYnR5WFdmV0sy?=
 =?utf-8?B?T25lUW5aaEsxSTQ1azhERVp5aE5sT21tVTJwc3A5QUU5WmI3R2JNQ2NTcVNp?=
 =?utf-8?B?cDdmeDB6elVzVjBIbVhRbjlMczZPUnZ6WG8xaGJjRjhMN2ZlRnd3K2l4TlYz?=
 =?utf-8?B?K0VIcjRsNHRIczB1TUZlNjF2MVUwMk1YeTlSdk5hR1VGbjI5VEhMeDVCLzR0?=
 =?utf-8?B?d3F6a1IzWFhnWXc3WGNQZ2tqZ2E2RFM5TmI1U3NjTThMZEN2blNySjhJWnkr?=
 =?utf-8?B?bjBUZTJYbll6NUtIOEpmRGI3RXY3SVQ2N0VnbmNaVEhSamtsbDc2OU8rbkxi?=
 =?utf-8?B?cmxENHBTNXZSTnlOYWp4alRiR3N2TlljVzR1UCtZTUtIbnJ4Q05yRmFCUGRM?=
 =?utf-8?B?NHpjVG1DbXlvWjZ4VWpOOHZ6c2M0Tng2ZVd3Q3lKS3hYL0ZxWmlqRURtcXFy?=
 =?utf-8?B?eVg4MmlVa3oxdGpQVmpTNVR2dFRZVVFtZ1VHN0xEdTdZZ2srUDl4cHdGWjI2?=
 =?utf-8?B?eTFJRzdaTnByOW5wSXhxdzBCbCtzVG5QbXlYcGhzeDFRd2UyWTVUME92K0Yy?=
 =?utf-8?B?TDZ3M3pLSy9NZitxR2dvbHdpV0RhQmx2MDViUGozbHFMOWtkejdUcWp4SVoz?=
 =?utf-8?B?U3B1ai9BWXBXc0hSSlZZR3pMelZlVUR1b3hXbEdaN01HZ2lNNm5FRlFFbitq?=
 =?utf-8?B?dWRMT2pHZ3cvb0dyd3FHSHpleHpWY0dwWkxuejBZbWVnbWp4Mys0ckszdXJI?=
 =?utf-8?B?elBOUWRYL1NZTEdXelNpV3FoZHpzVENBajdEQUwzVkNLODh0QkZHZVBTRW5Q?=
 =?utf-8?Q?l7ftozsEwt27OuK0qTJEawnXOdKUO+E8iL4UA=3D?=
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:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?aVk4WlNmbTlWVzZLV3Z0V1hpWGs2QVV0WitxaGlGeWZxaHIzS2hNK1M4ZW03?=
 =?utf-8?B?MERVaHdhTm9uT1VhNlN2RDR0RVdlTUtic1BKZ2lhRHYzbndCMi9wNWVLc2dP?=
 =?utf-8?B?NEozL1FiV3RhMlR0NEhFUHE0cXhNcllMdm4ybldteUpUa1RXZGVHQTh0QzRV?=
 =?utf-8?B?Q0lkOWxyU0FKemI4Znk5OUFobmw1K1JKdFNvdjVhZFQzSThoQnFNYlAvbi9R?=
 =?utf-8?B?V3Jid3YzWDBRaVliVUJxYllPVkdvZkRwV0srNWI5UEU5SmVzSmJ0SmJjZjlL?=
 =?utf-8?B?YUxoYWQ3bjBLUTNSR2x1dGh1dytzTXZRRytKM3phbldFWTdkd3JJNWFwTkgy?=
 =?utf-8?B?Rjg0YkNGbjU2dk56ZU9tWENqMHBQTHdXVzRpd01uTkcyU3ZkVFVETWhVcGRK?=
 =?utf-8?B?QlZ0cGdtUlhVQXZ2dHVhU3NyczcvcWdoeks2ZDVJY0xCNW9wUXRpUlFBdWkr?=
 =?utf-8?B?WStSa0kvbGpPMnh2MXRlQlNrWXpHOUNvSDZrMjlLam9PaVNFQ0QrVDQwT2ky?=
 =?utf-8?B?ZlpSeWl2cmo3VGJ4MW9tb1BTVC9CSnRocTluL05ackxyYndrRXFFNFNBZjNJ?=
 =?utf-8?B?dEFoTExUdmR4ajBLUlJiMVI3UW5pV1J4TXJYNUlYQWc0cjFiR1c3ay90R21F?=
 =?utf-8?B?WmxyaFp2NmxQZThlL012Z09ub0oyQU8xUDQ5dEhZR3lmSDFkeDJJS1FMRnFD?=
 =?utf-8?B?d21ETVpwQ2dVM1gzUHVaaDNZMXVRbFhlRjhRV1NkVlorbVZlczlDdEErMHRT?=
 =?utf-8?B?SUpBbVN6cWtBdUQvTVpIcnQxV3NRc3NRaHVVVCsvWkhRcXdQQkI0MTZMTVI0?=
 =?utf-8?B?cUg0dUdQemVxdkFKaEsrMzVaemtSY0o2Mmd5a2pBeVRrazN6UnF6bWxZR0xw?=
 =?utf-8?B?VWZPK3MrL2g5dWgxMGxzZFZNZDduakpGOXBVSmxsWVVUUzFrd0FJaytvbUd3?=
 =?utf-8?B?RUZVVkJRMnZNWG5jRnAvdVpPeU1YUE9VRU52a2J1Q1VKOHdhZEd4dVF2TVE0?=
 =?utf-8?B?ek0vZzZFWWNVRExPM0NpdUIva2d5Z0ZjMVM5blU0b2hnMzNiZWpuN2Vrc3Ja?=
 =?utf-8?B?VGxXUmRrTnhjVyt3cmtsVUtyYzg0WjhnelB1TG55MFlUUGFWQ3ViVGp6Ulk4?=
 =?utf-8?B?MEZIMGJacHJBNDE1bGZibGx1VHRHeXBtZll4UWN4aVN3dDdnc3ZrUHl3ZUhT?=
 =?utf-8?B?aGlvcVA1WHcwWWVpbHcwR1Ftb1VNcUN1SlVEanhMTElxMGNTWWVZWWFkWXp5?=
 =?utf-8?B?Z04rY3dPaXpWL3hiUWc1TlVkSkhCbDJMOU45RUp0QTc5eTR3L0FWQ0dYV3hP?=
 =?utf-8?B?SDlGbjdpNkYvc2pHY3IyVk5abnNJVVBZOFlyY2pPckVnYy9GUU1VOE94VUcy?=
 =?utf-8?B?N2M4WDZSQ3R4ZmVkVDVrL045TGZlWE12UVZwMDV5emlZQWdVN3VuT1ZGdXI1?=
 =?utf-8?B?eTI3ZDlkWDVwQy9NV3dZWkFaZElOZWxHMFArRHQxY1lYMkkrQkR0eVRqek04?=
 =?utf-8?B?SjRYV1BCWHhka3ZyVThCdWhNUmZHOFhKN3RMd0Y5TU40Nk0wVkR2ZzFRdjFo?=
 =?utf-8?B?akN1T2hjWEhHckRDWG9JdUtHN3Y5OVEvSDV0dEhkeVQyTG1WWCtHckN0SW9F?=
 =?utf-8?B?ODNWSW1ZY2xqVWN2TWRHUEJCNTExMWlJZTZQQ2JDVGdmbHRsZElWWDVNZ0li?=
 =?utf-8?B?KzhReFJyWFgxb2tZUlRrNTNkUG5TTWUvMVVWbldsY253RUlEWG42S0ozR0hN?=
 =?utf-8?B?alp6WTY4MFpnc2U1OWdhaW1zZG91bmREM0N2Z3gyRVRrdnlQb1BHaHZrNmZD?=
 =?utf-8?B?MDF2bGVWRTZzTVY2blNibGNWczRSKzc5KzZMN20xOGw1SDZJSUc0Q3FXRmpE?=
 =?utf-8?B?VlVpM1BUSlVSUHBoaFdZYUpuNndGMGExUHNFZ2F2dVJYbDZMdVlzcCt2UVdF?=
 =?utf-8?B?SEpTa1VEQzBFVzZLL0VVMnJvV2JTUUtKYS9YelNwd2MwVTZmc3ZYdklhaVVn?=
 =?utf-8?B?c3JYakgxS056Z3lTTnJxV3lUcXpOTllvenFlRmhpME9uanJQR253SDVjbTlY?=
 =?utf-8?B?Ly9XS2x3OUh6UGtoQzZPcjltM3BHZkcwSWdMUk9mSGdrcDViUGVrdlRYVWNy?=
 =?utf-8?Q?ljXo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <4EB7346B7A9E7D4186789DAAEC80C1BD@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: 07b126e0-b987-417f-49d4-08dcf3453824
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Oct 2024 09:29:39.9428
 (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: XtLWSR/wPx927qcwjipSVAN6+Go+sSn3jcu3U6dRcG033TqLaHFrNIOiYES+SEsBaKP7B5/+BLBWFpZ1Ka3oZg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8103

T24gMjAyNC8xMC8yMiAwNDo1NSwgU3Rld2FydCBIaWxkZWJyYW5kIHdyb3RlOg0KPiBPbiAxMC8x
Ni8yNCAwMjoyOCwgSmlxaWFuIENoZW4gd3JvdGU6DQo+PiBJbiBQVkggZG9tMCwgd2hlbiBwYXNz
dGhyb3VnaCBhIGRldmljZSB0byBkb21VLCBRRU1VIGNvZGUNCj4+IHhlbl9wdF9yZWFsaXplLT54
Y19waHlzZGV2X21hcF9waXJxIHdhbnRzIHRvIHVzZSBnc2ksIGJ1dCBpbiBjdXJyZW50IGNvZGVz
DQo+PiB0aGUgZ3NpIG51bWJlciBpcyBnb3QgZnJvbSBmaWxlIC9zeXMvYnVzL3BjaS9kZXZpY2Vz
LzxzYmRmPi9pcnEsIHRoYXQgaXMNCj4+IHdyb25nLCBiZWNhdXNlIGlycSBpcyBub3QgZXF1YWwg
d2l0aCBnc2ksIHRoZXkgYXJlIGluIGRpZmZlcmVudCBzcGFjZXMsIHNvDQo+PiBwaXJxIG1hcHBp
bmcgZmFpbHMuDQo+Pg0KPj4gVG8gc29sdmUgYWJvdmUgcHJvYmxlbSwgdXNlIG5ldyBpbnRlcmZh
Y2Ugb2YgWGVuLCB4Y19wY2lkZXZfZ2V0X2dzaSB0byBnZXQNCj4+IGdzaSBhbmQgdXNlIHhjX3Bo
eXNkZXZfbWFwX3BpcnFfZ3NpIHRvIG1hcCBwaXJxIHdoZW4gZG9tMCBpcyBQVkguDQo+Pg0KPj4g
U2lnbmVkLW9mZi1ieTogSmlxaWFuIENoZW4gPEppcWlhbi5DaGVuQGFtZC5jb20+DQo+PiBTaWdu
ZWQtb2ZmLWJ5OiBIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29tPg0KPj4gU2lnbmVkLW9mZi1i
eTogSmlxaWFuIENoZW4gPEppcWlhbi5DaGVuQGFtZC5jb20+DQo+PiAtLS0NCj4+IEhpIEFsbCwN
Cj4+IFRoaXMgaXMgdjggdG8gc3VwcG9ydCBwYXNzdGhyb3VnaCBvbiBYZW4gd2hlbiBkb20wIGlz
IFBWSC4NCj4+IHY3LT52OCBjaGFuZ2U6DQo+PiAqIFNpbmNlIHhjX3BoeXNkZXZfZ3NpX2Zyb21f
ZGV2IHdhcyByZW5hbWVkIHRvIHhjX3BjaWRldl9nZXRfZ3NpLCBjaGFuZ2VkIGl0Lg0KPj4gKiBB
ZGRlZCB4ZW5fcnVuX3FlbXVfb25faHZtIHRvIGNoZWNrIGlmIFFlbXUgcnVuIG9uIFBWIGRvbTAs
IGlmIG5vdCB1c2UgeGNfcGh5c2Rldl9tYXBfcGlycV9nc2kgdG8gbWFwIHBpcnEuDQo+PiAqIFVz
ZWQgQ09ORklHX1hFTl9DVFJMX0lOVEVSRkFDRV9WRVJTSU9OIHRvIHdyYXAgdGhlIG5ldyBwYXJ0
IGZvciBjb21wYXRpYmlsaXR5Lg0KPj4gKiBBZGRlZCAiI2RlZmluZSBET01JRF9SVU5fUUVNVSAw
IiB0byByZXByZXNlbnQgdGhlIGlkIG9mIGRvbWFpbiB0aGF0IFFlbXUgcnVuIG9uLg0KPj4NCj4+
DQo+PiBCZXN0IHJlZ2FyZHMsDQo+PiBKaXFpYW4gQ2hlbg0KPj4NCj4+DQo+Pg0KPj4gdjYtPnY3
IGNoYW5nZXM6DQo+PiAqIEJlY2F1c2UgdGhlIGZ1bmN0aW9uIG9mIG9idGFpbmluZyBnc2kgd2Fz
IGNoYW5nZWQgb24gdGhlIGtlcm5lbCBhbmQgWGVuIHNpZGUuIENoYW5nZWQgdG8gdXNlDQo+PiAg
IHhjX3BoeXNkZXZfZ3NpX2Zyb21fZGV2LCB0aGF0IHJlcXVpcmVzIHBhc3NpbmcgaW4gc2JkZiBp
bnN0ZWFkIG9mIGlycS4NCj4+DQo+PiB2NS0+djYgY2hhbmdlczoNCj4+ICogQmVjYXVzZSB0aGUg
ZnVuY3Rpb24gb2Ygb2J0YWluaW5nIGdzaSB3YXMgY2hhbmdlZCBvbiB0aGUga2VybmVsIGFuZCBY
ZW4gc2lkZS4gQ2hhbmdlZCB0byB1c2UNCj4+ICAgeGNfcGh5c2Rldl9nc2lfZnJvbV9pcnEsIGlu
c3RlYWQgb2YgZ3NpIHN5c2ZzLg0KPj4gKiBTaW5jZSBmdW5jdGlvbiBjaGFuZ2VkLCByZW1vdmVk
IHRoZSBSZXZpZXctYnkgb2YgU3RlZmFuby4NCj4+DQo+PiB2NC0+djUgY2hhbmdlczoNCj4+ICog
QWRkZWQgUmV2aWV3LWJ5IFN0ZWZhbm8uDQo+Pg0KPj4gdjMtPnY0IGNoYW5nZXM6DQo+PiAqIEFk
ZGVkIGdzaSBpbnRvIHN0cnVjdCBYZW5Ib3N0UENJRGV2aWNlIGFuZCB1c2VkIGdzaSBudW1iZXIg
dGhhdCByZWFkIGZyb20gZ3NpIHN5c2ZzDQo+PiAgIGlmIGl0IGV4aXN0cywgaWYgdGhlcmUgaXMg
bm8gZ3NpIHN5c2ZzLCBzdGlsbCB1c2UgaXJxLg0KPj4NCj4+IHYyLT52MyBjaGFuZ2VzOg0KPj4g
KiBEdWUgdG8gY2hhbmdlcyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNlY29uZCBwYXRj
aCBvbiBrZXJuZWwgc2lkZSh0aGF0IGFkZHMNCj4+ICAgYSBuZXcgc3lzZnMgZm9yIGdzaSBpbnN0
ZWFkIG9mIGEgbmV3IHN5c2NhbGwpLCBzbyByZWFkIGdzaSBudW1iZXIgZnJvbSB0aGUgc3lzZnMg
b2YgZ3NpLg0KPj4NCj4+IHYxIGFuZCB2MjoNCj4+IFdlIGNhbiByZWNvcmQgdGhlIHJlbGF0aW9u
IGJldHdlZW4gZ3NpIGFuZCBpcnEsIHRoZW4gd2hlbiB1c2Vyc3BhY2UocWVtdSkgd2FudA0KPj4g
dG8gdXNlIGdzaSwgd2UgY2FuIGRvIGEgdHJhbnNsYXRpb24uIFRoZSB0aGlyZCBwYXRjaCBvZiBr
ZXJuZWwoeGVuL3ByaXZjbWQ6IEFkZCBuZXcgc3lzY2FsbA0KPj4gdG8gZ2V0IGdzaSBmcm9tIGly
cSkgcmVjb3JkcyBhbGwgdGhlIHJlbGF0aW9ucyBpbiBhY3BpX3JlZ2lzdGVyX2dzaV94ZW5fcHZo
KCkgd2hlbiBkb20wDQo+PiBpbml0aWFsaXplIHBjaSBkZXZpY2VzLCBhbmQgcHJvdmlkZSBhIHN5
c2NhbGwgZm9yIHVzZXJzcGFjZSB0byBnZXQgdGhlIGdzaSBmcm9tIGlycS4gVGhlDQo+PiB0aGly
ZCBwYXRjaCBvZiB4ZW4odG9vbHM6IEFkZCBuZXcgZnVuY3Rpb24gdG8gZ2V0IGdzaSBmcm9tIGly
cSkgYWRkIGEgbmV3IGZ1bmN0aW9uDQo+PiB4Y19waHlzZGV2X2dzaV9mcm9tX2lycSgpIHRvIGNh
bGwgdGhlIG5ldyBzeXNjYWxsIGFkZGVkIG9uIGtlcm5lbCBzaWRlLg0KPj4gQW5kIHRoZW4gdXNl
cnNwYWNlIGNhbiB1c2UgdGhhdCBmdW5jdGlvbiB0byBnZXQgZ3NpLiBUaGVuIHhjX3BoeXNkZXZf
bWFwX3BpcnEoKSB3aWxsIHN1Y2Nlc3MuDQo+Pg0KPj4gSXNzdWVzIHdlIGVuY291bnRlcmVkOg0K
Pj4gMS4gZmFpbGVkIHRvIG1hcCBwaXJxIGZvciBnc2kNCj4+IFByb2JsZW06IHFlbXUgd2lsbCBj
YWxsIHhjX3BoeXNkZXZfbWFwX3BpcnEoKSB0byBtYXAgYSBwYXNzdGhyb3VnaCBkZXZpY2UncyBn
c2kgdG8gcGlycSBpbg0KPj4gZnVuY3Rpb24geGVuX3B0X3JlYWxpemUoKS4gQnV0IGZhaWxlZC4N
Cj4+DQo+PiBSZWFzb246IEFjY29yZGluZyB0byB0aGUgaW1wbGVtZW50IG9mIHhjX3BoeXNkZXZf
bWFwX3BpcnEoKSwgaXQgbmVlZHMgZ3NpIGluc3RlYWQgb2YgaXJxLA0KPj4gYnV0IHFlbXUgcGFz
cyBpcnEgdG8gaXQgYW5kIHRyZWF0IGlycSBhcyBnc2ksIGl0IGlzIGdvdCBmcm9tIGZpbGUNCj4+
IC9zeXMvYnVzL3BjaS9kZXZpY2VzL3h4eHg6eHg6eHgueC9pcnEgaW4gZnVuY3Rpb24geGVuX2hv
c3RfcGNpX2RldmljZV9nZXQoKS4gQnV0IGFjdHVhbGx5DQo+PiB0aGUgZ3NpIG51bWJlciBpcyBu
b3QgZXF1YWwgd2l0aCBpcnEuIFRoZXkgYXJlIGluIGRpZmZlcmVudCBzcGFjZS4NCj4+IC0tLQ0K
Pj4gIGh3L3hlbi94ZW5fcHQuYyB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrDQo+PiAgaHcveGVuL3hlbl9wdC5oIHwgIDEgKw0KPj4gIDIgZmlsZXMgY2hh
bmdlZCwgNDUgaW5zZXJ0aW9ucygrKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9ody94ZW4veGVuX3B0
LmMgYi9ody94ZW4veGVuX3B0LmMNCj4+IGluZGV4IDM2MzVkMWIzOWY3OS4uN2Y4MTM5ZDIwOTE1
IDEwMDY0NA0KPj4gLS0tIGEvaHcveGVuL3hlbl9wdC5jDQo+PiArKysgYi9ody94ZW4veGVuX3B0
LmMNCj4+IEBAIC03NjYsNiArNzY2LDQxIEBAIHN0YXRpYyB2b2lkIHhlbl9wdF9kZXN0cm95KFBD
SURldmljZSAqZCkgew0KPj4gIH0NCj4+ICAvKiBpbml0ICovDQo+PiAgDQo+PiArI2RlZmluZSBQ
Q0lfU0JERihzZWcsIGJ1cywgZGV2LCBmdW5jKSBcDQo+PiArICAgICAgICAgICAgKCgoKHVpbnQz
Ml90KShzZWcpKSA8PCAxNikgfCBcDQo+PiArICAgICAgICAgICAgKFBDSV9CVUlMRF9CREYoYnVz
LCBQQ0lfREVWRk4oZGV2LCBmdW5jKSkpKQ0KPiANCj4gTml0OiBUaGlzIG1hY3JvIGxvb2tzIGdl
bmVyaWMgYW5kIHVzZWZ1bC4gV291bGQgaXQgYmUgYmV0dGVyIGRlZmluZWQgaW4NCj4gaW5jbHVk
ZS9ody9wY2kvcGNpLmg/DQo+IA0KPj4gKw0KPj4gKyNpZiBDT05GSUdfWEVOX0NUUkxfSU5URVJG
QUNFX1ZFUlNJT04gPj0gNDIwMDANCj4+ICtzdGF0aWMgYm9vbCB4ZW5fcnVuX3FlbXVfb25faHZt
KHZvaWQpDQo+IA0KPiBUaGlzIGZ1bmN0aW9uIG5hbWUgc2VlbXMgdG8gaW1wbHkgImlzIHFlbXUg
cnVubmluZyBvbiBIVk0/IiwgYnV0IEkgdGhpbmsNCj4gdGhlIHF1ZXN0aW9uIHdlJ3JlIHJlYWxs
eSB0cnlpbmcgdG8gYW5zd2VyIGlzIHdoZXRoZXIgdGhlIHBjaWRldiBuZWVkcw0KPiBhIEdTSSBt
YXBwZWQuIEhvdyBhYm91dCBjYWxsaW5nIHRoZSBmdW5jdGlvbiAieGVuX3B0X25lZWRzX2dzaSIg
b3INCj4gc2ltaWxhcj8NCj4gDQo+PiArew0KPj4gKyAgICB4Y19kb21haW5pbmZvX3QgaW5mbzsN
Cj4+ICsNCj4+ICsgICAgaWYgKCF4Y19kb21haW5fZ2V0aW5mb19zaW5nbGUoeGVuX3hjLCBET01J
RF9SVU5fUUVNVSwgJmluZm8pICYmDQo+PiArICAgICAgICAoaW5mby5mbGFncyAmIFhFTl9ET01J
TkZfaHZtX2d1ZXN0KSkgew0KPiANCj4gSSB0aGluayByZWFkaW5nIC9zeXMvaHlwZXJ2aXNvci9n
dWVzdF90eXBlIHdvdWxkIGFsbG93IHlvdSB0byBnZXQgdGhlDQo+IHNhbWUgaW5mb3JtYXRpb24g
d2l0aG91dCBhbm90aGVyIGh5cGVyY2FsbC4NCj4gDQo+PiArICAgICAgICByZXR1cm4gdHJ1ZTsN
Cj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICByZXR1cm4gZmFsc2U7DQo+PiArfQ0KPj4gKw0KPj4g
K3N0YXRpYyBpbnQgeGVuX21hcF9waXJxX2Zvcl9nc2koUENJRGV2aWNlICpkLCBpbnQgKnBpcnEp
DQo+IA0KPiBOaXQ6IHMveGVuXy94ZW5fcHRfLw0KPiANCj4+ICt7DQo+PiArICAgIGludCBnc2k7
DQo+PiArICAgIFhlblBDSVBhc3N0aHJvdWdoU3RhdGUgKnMgPSBYRU5fUFRfREVWSUNFKGQpOw0K
Pj4gKw0KPj4gKyAgICBnc2kgPSB4Y19wY2lkZXZfZ2V0X2dzaSh4ZW5feGMsDQo+PiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBDSV9TQkRGKHMtPnJlYWxfZGV2aWNlLmRvbWFpbiwNCj4+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cmVhbF9kZXZpY2UuYnVz
LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5yZWFsX2Rldmlj
ZS5kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnJlYWxf
ZGV2aWNlLmZ1bmMpKTsNCj4+ICsgICAgaWYgKGdzaSA+PSAwKSB7DQo+PiArICAgICAgICByZXR1
cm4geGNfcGh5c2Rldl9tYXBfcGlycV9nc2koeGVuX3hjLCB4ZW5fZG9taWQsIGdzaSwgcGlycSk7
DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgcmV0dXJuIGdzaTsNCj4+ICt9DQo+PiArI2VuZGlm
DQo+PiArDQo+PiAgc3RhdGljIHZvaWQgeGVuX3B0X3JlYWxpemUoUENJRGV2aWNlICpkLCBFcnJv
ciAqKmVycnApDQo+PiAgew0KPj4gICAgICBFUlJQX0dVQVJEKCk7DQo+PiBAQCAtODQ3LDcgKzg4
MiwxNiBAQCBzdGF0aWMgdm9pZCB4ZW5fcHRfcmVhbGl6ZShQQ0lEZXZpY2UgKmQsIEVycm9yICoq
ZXJycCkNCj4+ICAgICAgICAgIGdvdG8gb3V0Ow0KPj4gICAgICB9DQo+PiAgDQo+PiArI2lmIENP
TkZJR19YRU5fQ1RSTF9JTlRFUkZBQ0VfVkVSU0lPTiA+PSA0MjAwMA0KPj4gKyAgICBpZiAoeGVu
X3J1bl9xZW11X29uX2h2bSgpKSB7DQo+PiArICAgICAgICByYyA9IHhlbl9tYXBfcGlycV9mb3Jf
Z3NpKGQsICZwaXJxKTsNCj4+ICsgICAgfSBlbHNlIHsNCj4+ICsgICAgICAgIHJjID0geGNfcGh5
c2Rldl9tYXBfcGlycSh4ZW5feGMsIHhlbl9kb21pZCwgbWFjaGluZV9pcnEsICZwaXJxKTsNCj4+
ICsgICAgfQ0KPj4gKyNlbHNlDQo+PiAgICAgIHJjID0geGNfcGh5c2Rldl9tYXBfcGlycSh4ZW5f
eGMsIHhlbl9kb21pZCwgbWFjaGluZV9pcnEsICZwaXJxKTsNCj4+ICsjZW5kaWYNCj4+ICsNCj4+
ICAgICAgaWYgKHJjIDwgMCkgew0KPj4gICAgICAgICAgWEVOX1BUX0VSUihkLCAiTWFwcGluZyBt
YWNoaW5lIGlycSAldSB0byBwaXJxICVpIGZhaWxlZCwgKGVycjogJWQpXG4iLA0KPj4gICAgICAg
ICAgICAgICAgICAgICBtYWNoaW5lX2lycSwgcGlycSwgZXJybm8pOw0KPj4gZGlmZiAtLWdpdCBh
L2h3L3hlbi94ZW5fcHQuaCBiL2h3L3hlbi94ZW5fcHQuaA0KPj4gaW5kZXggMDk1YTBmMDM2NWQ0
Li5hMDhiNDViN2ZiYWUgMTAwNjQ0DQo+PiAtLS0gYS9ody94ZW4veGVuX3B0LmgNCj4+ICsrKyBi
L2h3L3hlbi94ZW5fcHQuaA0KPj4gQEAgLTM2LDYgKzM2LDcgQEAgdm9pZCB4ZW5fcHRfbG9nKGNv
bnN0IFBDSURldmljZSAqZCwgY29uc3QgY2hhciAqZiwgLi4uKSBHX0dOVUNfUFJJTlRGKDIsIDMp
Ow0KPj4gICMgIGRlZmluZSBYRU5fUFRfTE9HX0NPTkZJRyhkLCBhZGRyLCB2YWwsIGxlbikNCj4+
ICAjZW5kaWYNCj4+ICANCj4+ICsjZGVmaW5lIERPTUlEX1JVTl9RRU1VIDANCj4+ICANCj4+ICAv
KiBIZWxwZXIgKi8NCj4+ICAjZGVmaW5lIFhFTl9QRk4oeCkgKCh4KSA+PiBYQ19QQUdFX1NISUZU
KQ0KPiANCldoYXQgeW91IHNhaWQgbWFrZXMgbW9yZSBzZW5zZS4gSSB3aWxsIGNoYW5nZSB0aGlz
IHBhdGNoIGFjY29yZGluZyB0byB5b3VyIGNvbW1lbnRzLiBUaGFuayB5b3UgdmVyeSBtdWNoIQ0K
DQotLSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVuLg0K


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 09:31:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 09:31:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824497.1238620 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Xhm-0005hY-1H; Wed, 23 Oct 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 824497.1238620; Wed, 23 Oct 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 1t3Xhl-0005hR-Ts; Wed, 23 Oct 2024 09:31:01 +0000
Received: by outflank-mailman (input) for mailman id 824497;
 Wed, 23 Oct 2024 09:31: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=fvWg=RT=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1t3Xhk-0005hI-MJ
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 09:31:00 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20626.outbound.protection.outlook.com
 [2a01:111:f403:2413::626])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 82c4c338-9121-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 11:30:59 +0200 (CEST)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by BY5PR12MB4177.namprd12.prod.outlook.com (2603:10b6:a03:201::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20; Wed, 23 Oct
 2024 09:30:55 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::b77f:9333:3a5a:d285%3]) with mapi id 15.20.8069.027; Wed, 23 Oct 2024
 09:30: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: 82c4c338-9121-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=H5IzTFHsa3lkgH5kY4vR+e8Lpnjn31n6CB9zTxQYl8KoeG53Rgct6QjAD7pHtTtYa8Y/aCemQcQzXhae24iUVKuwt8vZHQ1wEgfpZ88ih3Yv3r9JQt/IgQ9psvT2RcWtsb/lG/fYZ90yJqRGqAKHEWCND3Peb7hPwlrMbe3sEg5K3499zaD/CQNVL1dvet4Gyz9adaGJ6FSZljU4sDMD/fhEIbRTfEVuSMLYaj2IaRQup+no6JC485fZUiImBuiprLd1ri8h0uNJlJCuVvDzWEsS4vJWIeBlEYkQ3WGa3Q7OlkxgCAieBqA08Imzj5OEcVgFKlNiZw7CtauMExyMWg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=0cluu/nLc+2Z26A8o9jU16qPh/Y22bsI0a5pU+pOdNc=;
 b=RUbAzoQe+yumdN54CkGWjG192gGy8rYjMOx1NPyStT/yxZgaJbOIZnUjc0SjSQ1MWM2WvEeYLdk/ti2R1aJ2pu361QtSxJPvl28sYWubb0qRx3KmUMpuR/dJ9LzxVkDWL2Ab2cELEQ83fF62l8SoadtFDrYRBAkcs2/iwbAGGX2nMHdYFth0HmDhRlxCkuENse6yfPw7Xg8btpZx+QhSoGrcEhPooDSh1bPXMawsfzy+wjsuU11QCQNjZQKWtQu5+yOZYaXpPKDMEIhcozL559UQRUcRr6HJHBCeOffJR5uIBEMaTPFMs75c5hq8F01Ephf9cmlYzF/Yf93gvx8FKQ==
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=0cluu/nLc+2Z26A8o9jU16qPh/Y22bsI0a5pU+pOdNc=;
 b=xKiIbIsS6C64b80Lm8dNoIQ2R0X7hW76+ULTVOpVtO2qC0n+j0ooz5iBNJaMLVhncue4lkKuLn8Y7Y6OEH/gMIF4CMk/GxNCD4MRQJOEefcxH2ZTlxjd6FsZyGLX4YeKsffPmElAyuj/xuibfzZLIzmx6ngRVqPDKmdSAhcypUg=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: =?utf-8?B?TWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tp?=
	<marmarek@invisiblethingslab.com>
CC: Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony@xenproject.org>, Paul Durrant <paul@xen.org>, "Edgar E . Iglesias"
	<edgar.iglesias@gmail.com>, "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "Huang,
 Ray" <Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0 is
 PVH
Thread-Topic: [QEMU PATCH v8] xen/passthrough: use gsi to map pirq when dom0
 is PVH
Thread-Index: AQHbH5SoA03nzCynnUmi2VFVuzae7rKTb04AgAEz3YA=
Date: Wed, 23 Oct 2024 09:30:54 +0000
Message-ID:
 <BL1PR12MB58495FAE926D2A0A793CF9A0E74D2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20241016062827.2301004-1-Jiqian.Chen@amd.com>
 <ZxgwUd3riLmFzFC4@mail-itl>
In-Reply-To: <ZxgwUd3riLmFzFC4@mail-itl>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5849.namprd12.prod.outlook.com
 (15.20.8069.027)
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_|BY5PR12MB4177:EE_
x-ms-office365-filtering-correlation-id: cb5d130d-d9dd-430e-67ef-08dcf34564a6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
x-microsoft-antispam-message-info:
 =?utf-8?B?bEVNUVdIUWcyNHF2ckF4aFZoZlgwYkcvZkU1d1oycnlpaHBSNGtadENkdzBS?=
 =?utf-8?B?ajlTbnNwdy9MSEVkTnNSZHR6YVB0NmZjR1RNZmZ0aHBhQlRNQVJBc2ROR3FT?=
 =?utf-8?B?VFZ3cCtTTkJ5REIrZlN1SkI0dENJR00rczlYVFh4NEN6V293U2E2SG9wU04z?=
 =?utf-8?B?MFk4RWlSMzNBMElVLzJWZ2x1VjJiWGJoU1FCL1pYcjlOWjI4My9VMWwrbGM3?=
 =?utf-8?B?ZkFYanFMRUkxZDlWV1RyMFhjZ0ZNKzliSWMreDkrTHJOM1M2SWRZU2lmNU5X?=
 =?utf-8?B?SEp6YkRZNWdYMk00T1JpT0Fsc2s1ZTN5RG5HVkhlUXlnWHJsZmZlRWtXZEpT?=
 =?utf-8?B?NzBNaThkMWpVZ1REaEZCaFJNM1B3bWhQV2VqTUFNeU03SFZHN0xvMzM0b21K?=
 =?utf-8?B?Y2NZRFl6b096OEVCeTFXbHZuWVFMaThzTmJmalJrcTNtbGRHcjV3Wld0a1Jw?=
 =?utf-8?B?VjhXZW1QOWV6aWZwODNkdEwrRXJOQ2RtSDdWZCtyMGlMbENFVzlKRVhyWThp?=
 =?utf-8?B?TFM4ZlBLbWtVQkhoU2tQYjNIMk5sbU50QnU4MlNjaE9HMTVEWXcxbTV0TVhF?=
 =?utf-8?B?Ym8wK3VFbEM2dFh5SmZ5c1VsVGg1dm1iUkliY2NGWnVXajk5NEZTNFlWQXJz?=
 =?utf-8?B?ZlhvVkdhRmV1NkF4WW8ycitRTjVwZXgwOUlyUXdqU0U4YzRUdVcyRUJSZTZi?=
 =?utf-8?B?T0dJQVdVYkdYdkhRMTYyY1lyczVHUmRFRkVEbWRsVTVQWmIvYmdZSURlNFIy?=
 =?utf-8?B?ZHVhQ2NqS2NKTWFCTlVYN0xwUDdtV1hJRndwSERvL1I5NnF2NGs1UEdZYzZS?=
 =?utf-8?B?bkZlcUpoNnZhcTREQWtSV0pESFU5T0RJY3VZN25lem1NZ1ltZUR0clZGc0Mw?=
 =?utf-8?B?RzVrelZ5MFlrUkRkaXFlTTNjLzBGd1A0K3NrelYzZW44NGkvcVJMU2hESjZl?=
 =?utf-8?B?VDB6NHMrU0ZqNHdRbS9VMmEyYzhsVGlIdnpuSXhEY1h6cmVrRUVySTZJOVky?=
 =?utf-8?B?d1pXQzl0RTBXa1pPUjcvVTFpS3NwZHBkSnVsWHB1dEJralNhMm9pVk1qWTZY?=
 =?utf-8?B?Ykw1LzgycVpab2M5UTR6Kzk0TlVmbjlpODh6eFRvS01MOUtSTWI2cExJaFk5?=
 =?utf-8?B?NWlIQXU2NHBVU01IUGZqSHJUL09kRmtISzRleURZcUI1NkduQkZ0bmFwdlpC?=
 =?utf-8?B?UURWeXVva09MZDRYSWV2OG9hak1CV3AyWkhCSW9wZTFOOFJjV1JrR3FuTXYx?=
 =?utf-8?B?czEwL1hGeEFoZjNkcEZPVzRLVEs2a0FDeEQ4Y0ZBQkZjUm9sU09zWW1ielZL?=
 =?utf-8?B?b1BBYjdzVDk5Z3lscXZYelRPYmZSZnNUL09qa2xVK1E2bXFqOHA4YTBFNG1Q?=
 =?utf-8?B?dTMvYWFFYjBqaUR3b0ZqVlZEeXF4dVlMWWlVcGJwRkhnTlQxNVh1em5LYkxk?=
 =?utf-8?B?dzgrYXdZNm5aa3RhYU8xTGxIK2ZrejEvVTNxL0Fsc1JIdHcxU0RQVG1GYlVF?=
 =?utf-8?B?MVd6LzdFUG9lbGxYV3pjOHJ3aVVkWGNhNzdrVEFUb0VtdTgyQVVxd2l2QjV2?=
 =?utf-8?B?RkNXaWJieDVSMlRERzhUUUJXdkN4TGxjN1F4cTZUNVVKc25IMTVHSS9heTNJ?=
 =?utf-8?B?SDNPYlAwYllIN2p5U3RydU84b255dkNrc2lkRFc1N1ZIamNXZk1mbG1CaG1y?=
 =?utf-8?B?UHRBWGVSZEVLM2N6Y3NWYjZaVUFFNXlCR2pyQjZtRnM0STdhbzBCd1BzQXRk?=
 =?utf-8?B?T3duS242dXdocVBkUmNUdGo1WklsZUtUOWZNa1JodEFwMTZLRDRMUEdidGZQ?=
 =?utf-8?Q?3CcIIDe9SvCCytVN8NvbZgy6WiFOUheePTaDc=3D?=
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:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?LzA3Y2ZWa1Z0bmdqekExZGFmN1VRRzVyU1RQNEZiTkVQa2U2ZEttMVYvYnds?=
 =?utf-8?B?Tk1xYkhNQ3VYSDZQU1k5L1RTQVo5ZE9xSlQ3N2ZFbmtMekcxMXVuUmZ3bWtY?=
 =?utf-8?B?TmF0RFFlMVRFZFhNa0JyQUpLSVJ1Z21xZkZLWURTM1Q3V1FyZndxSXIya2Ry?=
 =?utf-8?B?MDUrVWVESllqUG9veCtZQ1h5ditGYW8yL1g2VkUwOEtQcUpQMVpFeUpaZFpi?=
 =?utf-8?B?RFFTSjN4NVNKV0draFduSFNJT3loVm1EUkk3aHk4T1Q4akZRejQrTXNYNytS?=
 =?utf-8?B?SnhyR0hUbnRKNG9rdXVIb0hPc0NnTUhuQ09yOUVZR0QyZGFoRmVPdDJVTTkr?=
 =?utf-8?B?RHFmVDRQSFFqUDVsamtBQjJLTHVzUGJjbFdFeWZXL2lKU2MxSHBRWWtuVzZ5?=
 =?utf-8?B?QzFyODluMmtQVmNiUllVZVladk82aGY4QVpMMExubHUvVHdDTW91WldEbkJQ?=
 =?utf-8?B?TXNmNDF0RVlsN3hueTk3WXVKUVRBckdjaGdnM1NIVFF0QmhCWEs1ajU2K0Fw?=
 =?utf-8?B?YUU5QVk5U3U0cllqVFhUdjYvaGxZb0VHTW5NRTNianlXQTdPd1BlQm12VS9I?=
 =?utf-8?B?b3UzeW9wNmNFZ2xMb0k3UVVZMjB6RmhsRkk4T2w1Y3BPV2J2NEhZQWhQcWRp?=
 =?utf-8?B?VDZVTFkxVEJkejU1S24xeGFaOUVORDZyVHNmb2IxK1BmMmhFMys1ZmE1c2JZ?=
 =?utf-8?B?Z016c25wZlpWRThWRGFXVnBTRzA2L3lDRVZsckJqa1NHd0dqWDR3aDBqWSt2?=
 =?utf-8?B?V0o5Z3NPWWZSL3VZOHBadnZFb0NBcmxsR3BtMk1TTHJBWWRiR3hTb0taOE5j?=
 =?utf-8?B?M1pIVVB3M1BjaDNWejZxR3NZYnRCZ3hxczVTQm43Z1NuU2NhOVJpc3Q4NVND?=
 =?utf-8?B?YlVxM1h4Mi9UdC8vRk1sd29SR25QY0h2TjdZUkJQTUJoREVoU1FlY0ZpOTRG?=
 =?utf-8?B?akFBMDJJRjlBLzNCYWRacFBsUjNpclJJYkN2dks0T0tMQlhOTm52c0pOZ1Vm?=
 =?utf-8?B?U3RsemFZTFlZZ1F0ejNaNWRzZEl1Rnpad0JmSXJDellnN3BZTk93bU9tREJH?=
 =?utf-8?B?NzRKWWVuTFdpYWsvWUNMWFpDaGRXKzZCdTVOVnJzcitWMkcweTdEbXo2TXh2?=
 =?utf-8?B?aUdRa0JYSUx0L1RUK2dEMWV4dGFGSndzS2FYaDRuU1V2K0l4OGFqNW1STkhM?=
 =?utf-8?B?STgvMWFBSHRhaHNYU2FKc1JFcDc1NjVsWWs1WnNoMFpwUzYrVWJyMVRFRWNt?=
 =?utf-8?B?K2NrWldwUUdEcFRnenZFWHJnalAxTktEZXFMQUF5cWZoamlUZ0pmalVFaFp2?=
 =?utf-8?B?c3pIQytKNVlTVm1yTVNSQm9wdi8zVzV5eTd0RERSaTZveUk4NVRwaVhuVzR1?=
 =?utf-8?B?SmtqQXQxaVlKZFpRa0h6SmtmanJ1RHhHTFRueW81QVVHYnc2SkVDNVhyTHQx?=
 =?utf-8?B?T3k0aXJWamhwWXFFcWZCUkJWaVVYWDZMeDM5Mi9DUnVyMitBWk5xV3NyWTNY?=
 =?utf-8?B?RkUwNnFCUTBUZG5xcXQ4cWxsbEVlSnlaMDVoV1hOMXFDOSsrSFBTNE9sbk5l?=
 =?utf-8?B?aVhmNHpocTVPY2xCaE1DTFNzQVZPZlIxRThOSXJ1aUplR29RU3gvMm5kY2dS?=
 =?utf-8?B?T1Y2SzhCWFZLRUo2L3ZUWG9lbllEQTViL0VyeFM0aUZMRzkrdE4wM0hXWmYy?=
 =?utf-8?B?UTBEQ3RCcEFqaDV6MW5mV1ZpaWxoSDdzNTFyd3o4UUN1a2xIbFpLbU9EM1ZO?=
 =?utf-8?B?SzRHeVZ3cjBSaVo5QW81N2NUUDlwV2hHbG5GNXBTSStjaUhIeVZIWFVxalVU?=
 =?utf-8?B?SXpodXpLbTYySUJWSHR4VVppTFRHemt0UW1PTTB2elJaa0EvTnVrN1NWa2Y3?=
 =?utf-8?B?bmVabnJ5VG41NCt3Z2N0TzNiSUFqSmp1UEhPNUpIOGxZOVR0NGI4dmZXQUg1?=
 =?utf-8?B?Yk5DalhzV3d4QW9aV1JkK3JZU1pyQzhBcVNKd25HZmtTQXpueU85bUV5Sis4?=
 =?utf-8?B?S0tPdzRmN1duSWhkZXRiYkx1cEJodDVKdllCTEhDbytwNDJvNHU4QmhhVENm?=
 =?utf-8?B?Q2xFTkJwcmF4bk9tZ0h5bWtNdzM5VUtEb0FpbkxFUWdVZFZtRjEraGNKVnFn?=
 =?utf-8?Q?R5C4=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <B427FB5B0B92BE4FA09F354828F401F3@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: cb5d130d-d9dd-430e-67ef-08dcf34564a6
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Oct 2024 09:30:54.6126
 (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: uXbWmhZrsWoU2vIPinGDReFkd5UBj4aURDeU6OsBOQgrDC3a73xPTT2/tjaLCvKZv2Xl6hu1ZRmNWSGrng9yfA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4177

T24gMjAyNC8xMC8yMyAwNzowNywgTWFyZWsgTWFyY3p5a293c2tpLUfDs3JlY2tpIHdyb3RlOg0K
PiBPbiBXZWQsIE9jdCAxNiwgMjAyNCBhdCAwMjoyODoyN1BNICswODAwLCBKaXFpYW4gQ2hlbiB3
cm90ZToNCj4+IC0tLSBhL2h3L3hlbi94ZW5fcHQuaA0KPj4gKysrIGIvaHcveGVuL3hlbl9wdC5o
DQo+PiBAQCAtMzYsNiArMzYsNyBAQCB2b2lkIHhlbl9wdF9sb2coY29uc3QgUENJRGV2aWNlICpk
LCBjb25zdCBjaGFyICpmLCAuLi4pIEdfR05VQ19QUklOVEYoMiwgMyk7DQo+PiAgIyAgZGVmaW5l
IFhFTl9QVF9MT0dfQ09ORklHKGQsIGFkZHIsIHZhbCwgbGVuKQ0KPj4gICNlbmRpZg0KPj4gIA0K
Pj4gKyNkZWZpbmUgRE9NSURfUlVOX1FFTVUgMA0KPiANCj4gUGxlYXNlLCBkb24ndCBoYXJkY29k
ZSBkb20wIGhlcmUsIFFFTVUgY2FuIGJlIHJ1bm5pbmcgaW4gYSBzdHViZG9tYWluDQo+IHRvbyAo
aW4gd2hpY2ggY2FzZSwgdGhpcyB3aWxsIGhpbGFyaW91c2x5IGV4cGxvZGUsIGFzIGl0IHdpbGwg
Y2hlY2sgd2hhdA0KPiBkb20wIGlzLCBpbnN0ZWFkIG9mIHdoZXJlIFFFTVUgaXMgcnVubmluZyku
IA0KPiBTdGV3YXJ0IGFscmVhZHkgcHJvdmlkZWQgYW4gYWx0ZXJuYXRpdmUuDQpHb3QgaXQsIHdp
bGwgdXNlIFN0ZXdhcnQncyBzdWdnZXN0aW9uLCB0aGFua3MuDQoNCj4gDQoNCi0tIA0KQmVzdCBy
ZWdhcmRzLA0KSmlxaWFuIENoZW4uDQo=


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 09:59:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 09:59:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824512.1238645 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Y8p-0000oi-8p; Wed, 23 Oct 2024 09:58:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824512.1238645; Wed, 23 Oct 2024 09:58: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 1t3Y8p-0000ob-6F; Wed, 23 Oct 2024 09:58:59 +0000
Received: by outflank-mailman (input) for mailman id 824512;
 Wed, 23 Oct 2024 09:58: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=Arnv=RT=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3Y8o-0000oV-L8
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 09:58:58 +0000
Received: from mail-oa1-x32.google.com (mail-oa1-x32.google.com
 [2001:4860:4864:20::32])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6a5b016a-9125-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 11:58:56 +0200 (CEST)
Received: by mail-oa1-x32.google.com with SMTP id
 586e51a60fabf-2884a6b897cso3222507fac.3
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 02:58:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a5b016a-9125-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729677535; x=1730282335; 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=8A5/bs0inu+KQ8dOFxgi/TB7BAqWu0E6Yi3s9q8B3gE=;
        b=prvHA0yf0RfjUAPo14WI2O6q0QxtWPI2y3Hg9qNqxOfNiwA2BUOV9RtvmF81M3C2B3
         /O3L7+zvGTcAoxbksGdOC8haP8O6WNJ6dlj4LSTlcAkIwG6QYZ8/Fx8iT584g3YsNAm0
         X+xBFx8TCTwEZ/mlzBCqYakk46hu06QXe8/gJgVewRe+F/zIy2bQL4APRh2v3wac+VyR
         0X2e6HlF8kAjTMn0kwaNn4oypY282/R0UzW8LqSpwmi4ViRz35zExLGi0JEK1diKOq3o
         Ekz3AXRLGB9NGsJM5xfHNihZEV0I5R4qshl9dfACfeeMUequZUg+Sc9av6+7JYS17SVV
         zY6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729677535; x=1730282335;
        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=8A5/bs0inu+KQ8dOFxgi/TB7BAqWu0E6Yi3s9q8B3gE=;
        b=DEByYXJY/zMNiMZOsZCsXk0u9dRGL3mRf0zSd0XfhUg7eR1MX9mI6exeSYF1m/F0SR
         CsaCL2yAH45Ldvt9msFS0KeCTuhol91SESJ12o1VtfZFr1S30oMOnNNvK/YyJdWG83QV
         WRj1gUqq8cVhfRqRbbvE9tmEElxXTu6LK1RPSjPL8bQwSy6p/tmXjaNJv1TqpBJ52bEI
         rVi4EMaNjCQ2UiWb/H4UrLxekEKR4/qm850H1DqhgmdDNtYLV0eBCCHhxJ5p3xPN3xsD
         VCUC8/jUr1vte7LhPBgADxG6Su3uWYFHjQKDAWZkba7Uz6HnrGQ401rIfvbO+2+uU9+c
         kWkA==
X-Gm-Message-State: AOJu0Yzkn/ukXwTz7ouE1WshSyeY+Q/0S/EVvUcGBO8+aR0XYb6gjiUo
	I6vLFP54RcnhPzg8+UeuAbhHrlJ2zGduemX+LwhsrXED89igyvat/ZQV6CavUrq2/jbRS5aha4w
	wJ60xUDkAhOmJkJupywTQgoLgkdHW1l9FxsB+8A==
X-Google-Smtp-Source: AGHT+IGu6lWzKFaKcbRkUUbONruxT+U25Phy8XnUTPbyIJouY8sQvUiTgXYNF3JvHZIvoU2Q2cm58+yj74pO+VnMfjE=
X-Received: by 2002:a05:6870:41d5:b0:270:6dfc:b145 with SMTP id
 586e51a60fabf-28ccb411239mr2142508fac.16.1729677534949; Wed, 23 Oct 2024
 02:58:54 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <84a39fbb681c1fdc2708d385e79bef1bbc9c6ae0.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <84a39fbb681c1fdc2708d385e79bef1bbc9c6ae0.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 23 Oct 2024 11:58:43 +0200
Message-ID: <CAHUa44F1ZDuVQkHTEmHC-x+u4kuLqphcjaK5c7wDnnenWuQi1Q@mail.gmail.com>
Subject: Re: [PATCH v2 04/10] xen/arm: ffa: Fine granular call support
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Create a bitmap to store which feature is supported or not by the
> firmware and use it to filter which calls are done to the firmware.
>
> While there reoder ABI definition by numbers to easily find the min and
> max ones.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - rename fw_feat to abi and macros to FFA_ABI to be coherent with the
>   abi needed change done before
> - rework the macros to be simpler by directly defining MIN and MAX using
>   only Function ids
> - check that requested function ids do not go over the bitmap size in
>   ffa_fw_supports_fid
> - add an ASSERT to make sure that we do not try to set bits outside of
>   the bitmap
> - turn off FF-A if there is not firmware support and adapt the commit
>   message to reflect this
> - add a compile time check that FFA_ABI_MIN < FFA_ABI_MAX
> - remove spurious line removal
> - restore proper cleanup of rxtx init in case of error
> - reorder ABI by numbers
> ---
>  xen/arch/arm/tee/ffa.c          | 28 +++++++++++++++---------
>  xen/arch/arm/tee/ffa_notif.c    |  7 ++++++
>  xen/arch/arm/tee/ffa_partinfo.c | 30 +++++++++++++++++++++++++-
>  xen/arch/arm/tee/ffa_private.h  | 38 ++++++++++++++++++++++++++++-----
>  xen/arch/arm/tee/ffa_rxtx.c     |  4 ++++
>  xen/arch/arm/tee/ffa_shm.c      | 12 +++++++++++
>  6 files changed, 103 insertions(+), 16 deletions(-)

Looks good.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

Cheers,
Jens

>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 1ee6b2895e92..267d4435ac08 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -72,7 +72,10 @@
>  #include "ffa_private.h"
>
>  /* Negotiated FF-A version to use with the SPMC, 0 if not there or suppo=
rted */
> -static uint32_t __ro_after_init ffa_fw_version;
> +uint32_t __ro_after_init ffa_fw_version;
> +
> +/* Features supported by the SPMC or secure world when present */
> +DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
>
>  struct ffa_fw_abi {
>      const uint32_t id;
> @@ -177,6 +180,13 @@ static void handle_msg_send_direct_req(struct cpu_us=
er_regs *regs, uint32_t fid)
>      else
>          mask =3D GENMASK_ULL(31, 0);
>
> +    if ( !ffa_fw_supports_fid(fid) )
> +    {
> +        resp.a0 =3D FFA_ERROR;
> +        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> +        goto out;
> +    }
> +
>      src_dst =3D get_user_reg(regs, 1);
>      if ( (src_dst >> 16) !=3D ffa_get_vm_id(d) )
>      {
> @@ -577,19 +587,16 @@ static bool ffa_probe(void)
>      else
>          ffa_fw_version =3D vers;
>
> -    /*
> -     * At the moment domains must support the same features used by Xen.
> -     * TODO: Rework the code to allow domain to use a subset of the
> -     * features supported.
> -     */
>      for ( unsigned int i =3D 0; i < ARRAY_SIZE(ffa_fw_abi_needed); i++ )
>      {
> -        if ( !ffa_abi_supported(ffa_fw_abi_needed[i].id) )
> -        {
> +        ASSERT(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id) < FFA_ABI_BITMAP_=
SIZE);
> +
> +        if ( ffa_abi_supported(ffa_fw_abi_needed[i].id) )
> +            set_bit(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id),
> +                    ffa_fw_abi_supported);
> +        else
>              printk(XENLOG_INFO "ARM FF-A Firmware does not support %s\n"=
,
>                     ffa_fw_abi_needed[i].name);
> -            goto err_no_fw;
> -        }
>      }
>
>      if ( !ffa_rxtx_init() )
> @@ -611,6 +618,7 @@ err_rxtx_destroy:
>      ffa_rxtx_destroy();
>  err_no_fw:
>      ffa_fw_version =3D 0;
> +    bitmap_zero(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
>      printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
>
>      return false;
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index 541e61d2f606..4b3e46318f4b 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -377,6 +377,13 @@ void ffa_notif_init(void)
>      unsigned int irq;
>      int ret;
>
> +    /* Only enable fw notification if all ABIs we need are supported */
> +    if ( !(ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
> +           ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_DESTROY) &&
> +           ffa_fw_supports_fid(FFA_NOTIFICATION_GET) &&
> +           ffa_fw_supports_fid(FFA_NOTIFICATION_INFO_GET_64)) )
> +        return;
> +
>      arm_smccc_1_2_smc(&arg, &resp);
>      if ( resp.a0 !=3D FFA_SUCCESS_32 )
>          return;
> diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_parti=
nfo.c
> index 93a03c6bc672..99c48f0e5c05 100644
> --- a/xen/arch/arm/tee/ffa_partinfo.c
> +++ b/xen/arch/arm/tee/ffa_partinfo.c
> @@ -77,7 +77,15 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, uin=
t32_t w2, uint32_t w3,
>       */
>      if ( w5 =3D=3D FFA_PARTITION_INFO_GET_COUNT_FLAG &&
>           ctx->guest_vers =3D=3D FFA_VERSION_1_1 )
> -        return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi_siz=
e);
> +    {
> +        if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
> +            return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi=
_size);
> +        else
> +        {
> +            *count =3D 0;
> +            return FFA_RET_OK;
> +        }
> +    }
>      if ( w5 )
>          return FFA_RET_INVALID_PARAMETERS;
>
> @@ -87,6 +95,18 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, uin=
t32_t w2, uint32_t w3,
>      if ( !spin_trylock(&ctx->rx_lock) )
>          return FFA_RET_BUSY;
>
> +    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
> +    {
> +        if ( ctx->guest_vers =3D=3D FFA_VERSION_1_0 )
> +            *fpi_size =3D sizeof(struct ffa_partition_info_1_0);
> +        else
> +            *fpi_size =3D sizeof(struct ffa_partition_info_1_1);
> +
> +        *count =3D 0;
> +        ret =3D FFA_RET_OK;
> +        goto out;
> +    }
> +
>      if ( !ctx->page_count || !ctx->rx_is_free )
>          goto out;
>      spin_lock(&ffa_rx_buffer_lock);
> @@ -250,6 +270,11 @@ bool ffa_partinfo_init(void)
>      uint32_t count;
>      int e;
>
> +    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) ||
> +         !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) ||
> +         !ffa_rx || !ffa_tx )
> +        return false;
> +
>      e =3D ffa_partition_info_get(0, 0, 0, 0, 0, &count, &fpi_size);
>      if ( e )
>      {
> @@ -313,6 +338,9 @@ int ffa_partinfo_domain_init(struct domain *d)
>      unsigned int n;
>      int32_t res;
>
> +    if ( !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) )
> +        return 0;
> +
>      ctx->vm_destroy_bitmap =3D xzalloc_array(unsigned long, count);
>      if ( !ctx->vm_destroy_bitmap )
>          return -ENOMEM;
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 045d9c4a0b56..85eb61c13464 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -14,6 +14,7 @@
>  #include <xen/spinlock.h>
>  #include <xen/sched.h>
>  #include <xen/time.h>
> +#include <xen/bitmap.h>
>
>  /* Error codes */
>  #define FFA_RET_OK                      0
> @@ -201,18 +202,17 @@
>  #define FFA_INTERRUPT                   0x84000062U
>  #define FFA_VERSION                     0x84000063U
>  #define FFA_FEATURES                    0x84000064U
> -#define FFA_RX_ACQUIRE                  0x84000084U
>  #define FFA_RX_RELEASE                  0x84000065U
>  #define FFA_RXTX_MAP_32                 0x84000066U
>  #define FFA_RXTX_MAP_64                 0xC4000066U
>  #define FFA_RXTX_UNMAP                  0x84000067U
>  #define FFA_PARTITION_INFO_GET          0x84000068U
>  #define FFA_ID_GET                      0x84000069U
> -#define FFA_SPM_ID_GET                  0x84000085U
> +#define FFA_MSG_POLL                    0x8400006AU
>  #define FFA_MSG_WAIT                    0x8400006BU
>  #define FFA_MSG_YIELD                   0x8400006CU
>  #define FFA_RUN                         0x8400006DU
> -#define FFA_MSG_SEND2                   0x84000086U
> +#define FFA_MSG_SEND                    0x8400006EU
>  #define FFA_MSG_SEND_DIRECT_REQ_32      0x8400006FU
>  #define FFA_MSG_SEND_DIRECT_REQ_64      0xC400006FU
>  #define FFA_MSG_SEND_DIRECT_RESP_32     0x84000070U
> @@ -230,8 +230,6 @@
>  #define FFA_MEM_RECLAIM                 0x84000077U
>  #define FFA_MEM_FRAG_RX                 0x8400007AU
>  #define FFA_MEM_FRAG_TX                 0x8400007BU
> -#define FFA_MSG_SEND                    0x8400006EU
> -#define FFA_MSG_POLL                    0x8400006AU
>  #define FFA_NOTIFICATION_BITMAP_CREATE  0x8400007DU
>  #define FFA_NOTIFICATION_BITMAP_DESTROY 0x8400007EU
>  #define FFA_NOTIFICATION_BIND           0x8400007FU
> @@ -240,6 +238,25 @@
>  #define FFA_NOTIFICATION_GET            0x84000082U
>  #define FFA_NOTIFICATION_INFO_GET_32    0x84000083U
>  #define FFA_NOTIFICATION_INFO_GET_64    0xC4000083U
> +#define FFA_RX_ACQUIRE                  0x84000084U
> +#define FFA_SPM_ID_GET                  0x84000085U
> +#define FFA_MSG_SEND2                   0x84000086U
> +
> +/**
> + * Encoding of features supported or not by the fw in a bitmap:
> + * - Function IDs are going from 0x60 to 0xFF
> + * - A function can be supported in 32 and/or 64bit
> + * The bitmap has one bit for each function in 32 and 64 bit.
> + */
> +#define FFA_ABI_ID(id)        ((id) & ARM_SMCCC_FUNC_MASK)
> +#define FFA_ABI_CONV(id)      (((id) >> ARM_SMCCC_CONV_SHIFT) & BIT(0,U)=
)
> +
> +#define FFA_ABI_MIN           FFA_ABI_ID(FFA_ERROR)
> +#define FFA_ABI_MAX           FFA_ABI_ID(FFA_MSG_SEND2)
> +
> +#define FFA_ABI_BITMAP_SIZE   (2 * (FFA_ABI_MAX - FFA_ABI_MIN + 1))
> +#define FFA_ABI_BITNUM(id)    ((FFA_ABI_ID(id) - FFA_ABI_MIN) << 1 | \
> +                               FFA_ABI_CONV(id))
>
>  struct ffa_ctx_notif {
>      bool enabled;
> @@ -289,6 +306,8 @@ extern void *ffa_rx;
>  extern void *ffa_tx;
>  extern spinlock_t ffa_rx_buffer_lock;
>  extern spinlock_t ffa_tx_buffer_lock;
> +extern uint32_t __ro_after_init ffa_fw_version;
> +extern DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
>
>  bool ffa_shm_domain_destroy(struct domain *d);
>  void ffa_handle_mem_share(struct cpu_user_regs *regs);
> @@ -401,4 +420,13 @@ static inline int32_t ffa_rx_release(void)
>      return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
>  }
>
> +static inline bool ffa_fw_supports_fid(uint32_t fid)
> +{
> +    BUILD_BUG_ON(FFA_ABI_MIN > FFA_ABI_MAX);
> +
> +    if ( FFA_ABI_BITNUM(fid) > FFA_ABI_BITMAP_SIZE)
> +        return false;
> +    return test_bit(FFA_ABI_BITNUM(fid), ffa_fw_abi_supported);
> +}
> +
>  #endif /*__FFA_PRIVATE_H__*/
> diff --git a/xen/arch/arm/tee/ffa_rxtx.c b/xen/arch/arm/tee/ffa_rxtx.c
> index 661764052e67..b6931c855779 100644
> --- a/xen/arch/arm/tee/ffa_rxtx.c
> +++ b/xen/arch/arm/tee/ffa_rxtx.c
> @@ -193,6 +193,10 @@ bool ffa_rxtx_init(void)
>  {
>      int e;
>
> +    /* Firmware not there or not supporting */
> +    if ( !ffa_fw_supports_fid(FFA_RXTX_MAP_64) )
> +        return false;
> +
>      ffa_rx =3D alloc_xenheap_pages(get_order_from_pages(FFA_RXTX_PAGE_CO=
UNT), 0);
>      if ( !ffa_rx )
>          return false;
> diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
> index 370d83ec5cf8..efa5b67db8e1 100644
> --- a/xen/arch/arm/tee/ffa_shm.c
> +++ b/xen/arch/arm/tee/ffa_shm.c
> @@ -149,6 +149,9 @@ static int32_t ffa_mem_share(uint32_t tot_len, uint32=
_t frag_len,
>  static int32_t ffa_mem_reclaim(uint32_t handle_lo, uint32_t handle_hi,
>                                 uint32_t flags)
>  {
> +    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
> +        return FFA_RET_NOT_SUPPORTED;
> +
>      return ffa_simple_call(FFA_MEM_RECLAIM, handle_lo, handle_hi, flags,=
 0);
>  }
>
> @@ -467,6 +470,12 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs=
)
>      uint32_t range_count;
>      uint32_t region_offs;
>
> +    if ( !ffa_fw_supports_fid(FFA_MEM_SHARE_64) )
> +    {
> +        ret =3D FFA_RET_NOT_SUPPORTED;
> +        goto out_set_ret;
> +    }
> +
>      /*
>       * We're only accepting memory transaction descriptors via the rx/tx
>       * buffer.
> @@ -621,6 +630,9 @@ int ffa_handle_mem_reclaim(uint64_t handle, uint32_t =
flags)
>      register_t handle_lo;
>      int ret;
>
> +    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
> +        return FFA_RET_NOT_SUPPORTED;
> +
>      spin_lock(&ctx->lock);
>      shm =3D find_shm_mem(ctx, handle);
>      if ( shm )
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 10:58:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 10:58:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824523.1238659 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Z43-0000P9-H3; Wed, 23 Oct 2024 10:58:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824523.1238659; Wed, 23 Oct 2024 10:58: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 1t3Z43-0000P2-E9; Wed, 23 Oct 2024 10:58:07 +0000
Received: by outflank-mailman (input) for mailman id 824523;
 Wed, 23 Oct 2024 10:58: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Z42-0000Oq-04
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 10:58:06 +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 ad5886f6-912d-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 12:58:04 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9abe139088so110184266b.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 03:58:04 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571e3asm462067266b.147.2024.10.23.03.58.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 03:58:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad5886f6-912d-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729681082; x=1730285882; 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=WQPh81xtFENULW7Sdg6zMAc0S3AL4e1v95IRrppl4HM=;
        b=JkxUAWBxu2hsyvt75MsOiLfWP97KhX1oJdIcKF73gPRjn4DdeYewuBG3ebh3x8uxdq
         VKvSJ6X1qh2yvEwrdPNZA7h9p2bAT3QPVomEyVtsmJAlyU+0yrpRJ8g/JehMBWuK2Pdi
         7faWl/qbECeHDYral2kSlu2hAIe3pcdNUonDk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729681082; x=1730285882;
        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=WQPh81xtFENULW7Sdg6zMAc0S3AL4e1v95IRrppl4HM=;
        b=AXBU48W3sGAmhgabESi2+J0AWiK2XXe0eMRolxbRjBYUx6yKJF2diS4UgF9uKiWEjm
         iU3l4/z6rJP7fqplQmTxziRx/uLofisom+gcTnF000GTHH1UaXaT6LP8sSp52jACNGzI
         7tjE4hrwaX4w8VXbOG+p9UDUzRPMcM/SnAgvPJbpKWCMSeZkPB9lSDxUYwSVKbyldNeQ
         aQa4ElQGbxsFhPMH5dXojbL5k//X5GSidOYlo1ujKJtMhUWW5jAAKFcfQYZIHPyp78AE
         Gj6AHipT/Z66k1HN+Aee1R8UlRx48K2QAbpk33sFK/qvz2VgdzQHCC6L+mJ6AeGduICz
         AVww==
X-Gm-Message-State: AOJu0YwJ5d5+xje4HKb66LbUPDxXnMM9Xu5c6KDxgPKFz3ab2sWX9CtT
	0WFeoZNmtUMSAeAYZlKyzG3G5Ey0AHBESI2fW1L4kvEYi7+ul1CCPG0qnGV3evJQFuN4nq0T5c0
	h
X-Google-Smtp-Source: AGHT+IH9UbSKHDQ9RVjImqa6qbXpoZhnVDX+40rh+9cycN7R/md5b3FIPux7uuJDwtgfj+oMO76KIg==
X-Received: by 2002:a17:907:72cb:b0:a99:f466:a87a with SMTP id a640c23a62f3a-a9abf84b5f2mr218160066b.3.1729681082331;
        Wed, 23 Oct 2024 03:58:02 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 0/3] x86/boot: Yet more PVH module handling fixes
Date: Wed, 23 Oct 2024 11:57:53 +0100
Message-Id: <20241023105756.641695-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It turns out microcode and XSM module handling has been broken ever since PVH
boot was introduced.  Both appear to have have gone unnoticed because their
functionality isn't typically used in PVH guests.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1508716668

Andrew Cooper (1):
  x86/boot: Add a temporary module_map pointer to boot_image

Daniel P. Smith (2):
  x86/boot: Fix microcode module handling during PVH boot
  x86/boot: Fix XSM module handling during PVH boot

 xen/arch/x86/cpu/microcode/core.c    | 40 +++++++++++-----------------
 xen/arch/x86/include/asm/bootinfo.h  |  1 +
 xen/arch/x86/include/asm/microcode.h |  8 +++---
 xen/arch/x86/setup.c                 | 10 ++++---
 xen/include/xsm/xsm.h                | 12 ++++-----
 xen/xsm/xsm_core.c                   |  7 +++--
 xen/xsm/xsm_policy.c                 | 16 +++++------
 7 files changed, 43 insertions(+), 51 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 10:58:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 10:58:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824526.1238684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Z46-0000tz-6x; Wed, 23 Oct 2024 10:58:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824526.1238684; Wed, 23 Oct 2024 10:58: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 1t3Z46-0000tW-2T; Wed, 23 Oct 2024 10:58:10 +0000
Received: by outflank-mailman (input) for mailman id 824526;
 Wed, 23 Oct 2024 10:58: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Z44-0000Oq-5p
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 10:58:08 +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 af6f870f-912d-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 12:58:07 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c941623a5aso1312582a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 03:58:07 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571e3asm462067266b.147.2024.10.23.03.58.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 03:58:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af6f870f-912d-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729681087; x=1730285887; 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=/Lb9ytF6JB17RhAg0W0RXGmRPpE1+HnU+Z6GNFh52Qc=;
        b=vP2NaT0lmx/1QnMhlXetG0LadCFhPbs14yJ5pSx21az9GeQHdgoE9bkGb0Hp4nzEgu
         f/yzmME6kvGSzTEu6wj2V5jYjcxJAHvoiGEJMJ8EaSXnOZMEop8BqDe6wWd0woTUk/ss
         SAqeGpNADObBbp5QSeF9juU4saNtuVteCAV74=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729681087; x=1730285887;
        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=/Lb9ytF6JB17RhAg0W0RXGmRPpE1+HnU+Z6GNFh52Qc=;
        b=PELRxoMV1IDlsIVYs2yN0277dAhIMotSQ7GQ5rD2mnICXFwxHAem+iV9tLCbPY+FA6
         Kw94h4KiCwKvcB5pNVmNOujhzss2FgLUe0KM+w/l5auXNC/Ms6CiAmpWRwVXAEdspymF
         BQtz+joNVVzQJyDnzZ/dcKjyyCy/cWrYBEBYnthW4enUHVh6wqmlXUnGVU84KN9ExWeA
         lY2cdHzIHeDqbScFGCZdlPARVXrq7Pq6Gk694DcXu4OwQ/H4dL6kt+qArgD0EGFZ9bzR
         pwlSoO7WmxKi09QoCCTvu3m7l7xFKSvSlKHSaKTgfoxk08TczxTzC/E6yYoO0wZzbfri
         /edg==
X-Gm-Message-State: AOJu0YyaZS9kpoFt5CYLQny4fXJub6OXrUPYczP4yIDZs0ewokGwNH1d
	fThoGTPIGCZes7xglsCZNrgNgPw0jq03SHRsE9Atbg6PncCv/glTrwZDP+Up3dx5ErBYsi+HLmT
	h
X-Google-Smtp-Source: AGHT+IEJZI4upHZqGs4xzFVHTHSTqtsn6kBlDxFQY0Q6Ivu0fuFiQJyWFg7U8V0PMflWbAxcgL6UXw==
X-Received: by 2002:a17:907:2d8e:b0:a9a:60b0:a8e7 with SMTP id a640c23a62f3a-a9abef2b5e2mr197241266b.2.1729681086499;
        Wed, 23 Oct 2024 03:58:06 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 3/3] x86/boot: Fix XSM module handling during PVH boot
Date: Wed, 23 Oct 2024 11:57:56 +0100
Message-Id: <20241023105756.641695-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241023105756.641695-1-andrew.cooper3@citrix.com>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: "Daniel P. Smith" <dpsmith@apertussolutions.com>

As detailed in commit 0fe607b2a144 ("x86/boot: Fix PVH boot during boot_info
transition period"), the use of __va(mbi->mods_addr) constitutes a
use-after-free on the PVH boot path.

This pattern has been in use since before PVH support was added.  This has
most likely gone unnoticed because no-one's tried using a detached Flask
policy in a PVH VM before.

Plumb the boot_info pointer down, replacing module_map and mbi.  Importantly,
bi->mods[].mod is a safe way to access the module list during PVH boot.

As this is the final non-bi use of mbi in __start_xen(), make the pointer
unusable once bi has been established, to prevent new uses creeping back in.
This is a stopgap until mbi can be fully removed.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

Refectored/extracted from the hyperlaunch series.

There's no good Fixes tag for this, because it can't reasonably be "introduce
PVH", nor can the fix as-is reasonably be backported.  If we want to fix the
bug in older trees, we need to plumb the mod pointer down alongside mbi.
---
 xen/arch/x86/setup.c  |  5 ++++-
 xen/include/xsm/xsm.h | 12 +++++-------
 xen/xsm/xsm_core.c    |  7 +++----
 xen/xsm/xsm_policy.c  | 16 +++++++---------
 4 files changed, 19 insertions(+), 21 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index c75b8f15fa5d..8974b0c6ede6 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1088,6 +1088,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     bi = multiboot_fill_boot_info(mbi, mod);
     bi->module_map = module_map; /* Temporary */
 
+    /* Use bi-> instead */
+#define mbi DO_NOT_USE
+
     /* Parse the command-line options. */
     if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )
     {
@@ -1862,7 +1865,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
                                   RANGESETF_prettyprint_hex);
 
-    xsm_multiboot_init(module_map, mbi);
+    xsm_multiboot_init(bi);
 
     /*
      * IOMMU-related ACPI table parsing may require some of the system domains
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731af..4dbff9d866e0 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -17,7 +17,6 @@
 
 #include <xen/alternative-call.h>
 #include <xen/sched.h>
-#include <xen/multiboot.h>
 
 /* policy magic number (defined by XSM_MAGIC) */
 typedef uint32_t xsm_magic_t;
@@ -778,11 +777,10 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 #endif /* XSM_NO_WRAPPERS */
 
 #ifdef CONFIG_MULTIBOOT
-int xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi);
+struct boot_info;
+int xsm_multiboot_init(struct boot_info *bi);
 int xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
-    void **policy_buffer, size_t *policy_size);
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size);
 #endif
 
 #ifdef CONFIG_HAS_DEVICE_TREE
@@ -828,8 +826,8 @@ static const inline struct xsm_ops *silo_init(void)
 #include <xsm/dummy.h>
 
 #ifdef CONFIG_MULTIBOOT
-static inline int xsm_multiboot_init (
-    unsigned long *module_map, const multiboot_info_t *mbi)
+struct boot_info;
+static inline int xsm_multiboot_init(struct boot_info *bi)
 {
     return 0;
 }
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index eaa028109bde..6e3fac68c057 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -21,6 +21,7 @@
 #ifdef CONFIG_XSM
 
 #ifdef CONFIG_MULTIBOOT
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 
@@ -139,8 +140,7 @@ static int __init xsm_core_init(const void *policy_buffer, size_t policy_size)
 }
 
 #ifdef CONFIG_MULTIBOOT
-int __init xsm_multiboot_init(
-    unsigned long *module_map, const multiboot_info_t *mbi)
+int __init xsm_multiboot_init(struct boot_info *bi)
 {
     int ret = 0;
     void *policy_buffer = NULL;
@@ -150,8 +150,7 @@ int __init xsm_multiboot_init(
 
     if ( XSM_MAGIC )
     {
-        ret = xsm_multiboot_policy_init(module_map, mbi, &policy_buffer,
-                                        &policy_size);
+        ret = xsm_multiboot_policy_init(bi, &policy_buffer, &policy_size);
         if ( ret )
         {
             bootstrap_map(NULL);
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 8dafbc93810f..6f799dd28f5b 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -20,7 +20,7 @@
 
 #include <xsm/xsm.h>
 #ifdef CONFIG_MULTIBOOT
-#include <xen/multiboot.h>
+#include <asm/bootinfo.h>
 #include <asm/setup.h>
 #endif
 #include <xen/bitops.h>
@@ -31,11 +31,9 @@
 
 #ifdef CONFIG_MULTIBOOT
 int __init xsm_multiboot_policy_init(
-    unsigned long *module_map, const multiboot_info_t *mbi,
-    void **policy_buffer, size_t *policy_size)
+    struct boot_info *bi, void **policy_buffer, size_t *policy_size)
 {
     int i;
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     int rc = 0;
     u32 *_policy_start;
     unsigned long _policy_len;
@@ -44,13 +42,13 @@ int __init xsm_multiboot_policy_init(
      * Try all modules and see whichever could be the binary policy.
      * Adjust module_map for the module that is the binary policy.
      */
-    for ( i = mbi->mods_count-1; i >= 1; i-- )
+    for ( i = bi->nr_modules - 1; i >= 1; i-- )
     {
-        if ( !test_bit(i, module_map) )
+        if ( !test_bit(i, bi->module_map) )
             continue;
 
-        _policy_start = bootstrap_map(mod + i);
-        _policy_len   = mod[i].mod_end;
+        _policy_start = bootstrap_map(bi->mods[i].mod);
+        _policy_len   = bi->mods[i].mod->mod_end;
 
         if ( (xsm_magic_t)(*_policy_start) == XSM_MAGIC )
         {
@@ -60,7 +58,7 @@ int __init xsm_multiboot_policy_init(
             printk("Policy len %#lx, start at %p.\n",
                    _policy_len,_policy_start);
 
-            __clear_bit(i, module_map);
+            __clear_bit(i, bi->module_map);
             break;
 
         }
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 10:58:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 10:58:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824525.1238679 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Z45-0000rb-VM; Wed, 23 Oct 2024 10:58:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824525.1238679; Wed, 23 Oct 2024 10:58: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 1t3Z45-0000rS-Rn; Wed, 23 Oct 2024 10:58:09 +0000
Received: by outflank-mailman (input) for mailman id 824525;
 Wed, 23 Oct 2024 10:58: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Z43-0000Ow-Pw
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 10:58:07 +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 ae8928c7-912d-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 12:58:06 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c903f5bd0eso4136111a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 03:58:06 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571e3asm462067266b.147.2024.10.23.03.58.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 03:58:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae8928c7-912d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729681085; x=1730285885; 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=a8SPZF1bqa9Lk4OYKepi92x25hB7trhEWs2vbib+stU=;
        b=rKzP6aNekPT1RcD7Grp+I8wlneptF9Pvpxiqk9NDhctfpOednbGGwiGdUurbYpFujC
         DLgYAeM7t3bDNbrIk2D2vTB+zN5vqEKU7Xz1WVqzhUuZ4EOOvISYki3Byd+w/6FtdgxZ
         7RmbXkxPQKy5HujHsy8thc7dl4HBAUbWI+t4Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729681085; x=1730285885;
        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=a8SPZF1bqa9Lk4OYKepi92x25hB7trhEWs2vbib+stU=;
        b=QThtI+/Hgs0keBL/I1VMWQ20r7bMmRRPq0FGjzf2H4WcxZBFM2/Smqu1dHJzSjUXC2
         7mEJs4iAMNN3zYt67sby+C7SLYyxOIjWRzukil880JXP3UHZfdc3NvIS/EE9yLlvCp3O
         z7ecux8GI7ejV/iYG34gXTkNguzwZgSxWjd1h0CD09B8ZfN8AdgtvacKn/JsXhb+N4sj
         b0lvAQoBVVrn9Bfam5/HXpl3A6tpzowGb8QN0VV70lWTHxcCunXdjAB5soriXfqIGrcE
         A7VTiwdNZctn1/cM+1feqfXIcIqhMFZ1a/5DsRnzMtgJRWU6WEvwVvQYNHrA/UDlPA6X
         U54w==
X-Gm-Message-State: AOJu0YxqmYHqJFxyCkCHCXKOTtcFJMq1e7CeOEs0zlu7WJdJsw7Vy1NS
	hDS+Rn+WzA+tDzT+Vuzn2e8pPPKfGBIm6jX2tULDsKPHcQg5S1/eUkWGOvgGBzC0xASmyy6bYSn
	G
X-Google-Smtp-Source: AGHT+IHmTNn0JVHgpbYVl+Y31smPoUXgo9AyjVpRj/G14FOate2Tlhsisc8tNZ2unCNQ/s/U0173Tg==
X-Received: by 2002:a17:907:3dac:b0:a99:ce2f:b0ff with SMTP id a640c23a62f3a-a9abf8a4f1dmr207886566b.33.1729681085103;
        Wed, 23 Oct 2024 03:58:05 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 2/3] x86/boot: Fix microcode module handling during PVH boot
Date: Wed, 23 Oct 2024 11:57:55 +0100
Message-Id: <20241023105756.641695-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241023105756.641695-1-andrew.cooper3@citrix.com>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: "Daniel P. Smith" <dpsmith@apertussolutions.com>

As detailed in commit 0fe607b2a144 ("x86/boot: Fix PVH boot during boot_info
transition period"), the use of __va(mbi->mods_addr) constitutes a
use-after-free on the PVH boot path.

This pattern has been in use since before PVH support was added.  Inside a PVH
VM, it will go unnoticed as long as the microcode container parser doesn't
choke on the random data it finds.

The use within early_microcode_init() happens to be safe because it's prior to
move_xen().  microcode_init_cache() is after move_xen(), and therefore unsafe.

Plumb the boot_info pointer down, replacing module_map and mbi.  Importantly,
bi->mods[].mod is a safe way to access the module list during PVH boot.

Note: microcode_scan_module() is still bogusly stashing a bootstrap_map()'d
      pointer in ucode_blob.data, which constitutes a different
      use-after-free, and only works in general because of a second bug.  This
      is unrelated to PVH, and needs untangling differently.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

Refectored/extracted from the hyperlaunch series.

There's no good Fixes tag for this, because it can't reasonably be "introduce
PVH", nor can the fix as-is reasonably be backported.  If we want to fix the
bug in older trees, we need to plumb the mod pointer down alongside mbi.
---
 xen/arch/x86/cpu/microcode/core.c    | 40 +++++++++++-----------------
 xen/arch/x86/include/asm/microcode.h |  8 +++---
 xen/arch/x86/setup.c                 |  4 +--
 3 files changed, 22 insertions(+), 30 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 8564e4d2c94c..1d58cb0f3bc1 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -35,6 +35,7 @@
 #include <xen/watchdog.h>
 
 #include <asm/apic.h>
+#include <asm/bootinfo.h>
 #include <asm/cpu-policy.h>
 #include <asm/nmi.h>
 #include <asm/processor.h>
@@ -152,11 +153,8 @@ static int __init cf_check parse_ucode(const char *s)
 }
 custom_param("ucode", parse_ucode);
 
-static void __init microcode_scan_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+static void __init microcode_scan_module(struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
     uint64_t *_blob_start;
     unsigned long _blob_size;
     struct cpio_data cd;
@@ -178,13 +176,13 @@ static void __init microcode_scan_module(
     /*
      * Try all modules and see whichever could be the microcode blob.
      */
-    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
+    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
     {
-        if ( !test_bit(i, module_map) )
+        if ( !test_bit(i, bi->module_map) )
             continue;
 
-        _blob_start = bootstrap_map(&mod[i]);
-        _blob_size = mod[i].mod_end;
+        _blob_start = bootstrap_map(bi->mods[i].mod);
+        _blob_size = bi->mods[i].mod->mod_end;
         if ( !_blob_start )
         {
             printk("Could not map multiboot module #%d (size: %ld)\n",
@@ -204,21 +202,17 @@ static void __init microcode_scan_module(
     }
 }
 
-static void __init microcode_grab_module(
-    unsigned long *module_map,
-    const multiboot_info_t *mbi)
+static void __init microcode_grab_module(struct boot_info *bi)
 {
-    module_t *mod = (module_t *)__va(mbi->mods_addr);
-
     if ( ucode_mod_idx < 0 )
-        ucode_mod_idx += mbi->mods_count;
-    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= mbi->mods_count ||
-         !__test_and_clear_bit(ucode_mod_idx, module_map) )
+        ucode_mod_idx += bi->nr_modules;
+    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
+         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
         goto scan;
-    ucode_mod = mod[ucode_mod_idx];
+    ucode_mod = *bi->mods[ucode_mod_idx].mod;
 scan:
     if ( ucode_scan )
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(bi);
 }
 
 static struct microcode_ops __ro_after_init ucode_ops;
@@ -822,8 +816,7 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+int __init microcode_init_cache(struct boot_info *bi)
 {
     int rc = 0;
 
@@ -832,7 +825,7 @@ int __init microcode_init_cache(unsigned long *module_map,
 
     if ( ucode_scan )
         /* Need to rescan the modules because they might have been relocated */
-        microcode_scan_module(module_map, mbi);
+        microcode_scan_module(bi);
 
     if ( ucode_mod.mod_end )
         rc = early_update_cache(bootstrap_map(&ucode_mod),
@@ -878,8 +871,7 @@ static int __init early_microcode_update_cpu(void)
     return microcode_update_cpu(patch, 0);
 }
 
-int __init early_microcode_init(unsigned long *module_map,
-                                const struct multiboot_info *mbi)
+int __init early_microcode_init(struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
     int rc = 0;
@@ -922,7 +914,7 @@ int __init early_microcode_init(unsigned long *module_map,
         return -ENODEV;
     }
 
-    microcode_grab_module(module_map, mbi);
+    microcode_grab_module(bi);
 
     if ( ucode_mod.mod_end || ucode_blob.size )
         rc = early_microcode_update_cpu();
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index 57c08205d475..a278773f8b5d 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -24,10 +24,10 @@ DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 void microcode_set_module(unsigned int idx);
 int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
                      unsigned long len, unsigned int flags);
-int early_microcode_init(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
-int microcode_init_cache(unsigned long *module_map,
-                         const struct multiboot_info *mbi);
 int microcode_update_one(void);
 
+struct boot_info;
+int early_microcode_init(struct boot_info *bi);
+int microcode_init_cache(struct boot_info *bi);
+
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index d8001867c925..c75b8f15fa5d 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1392,7 +1392,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
      * TODO: load ucode earlier once multiboot modules become accessible
      * at an earlier stage.
      */
-    early_microcode_init(module_map, mbi);
+    early_microcode_init(bi);
 
     if ( xen_phys_start )
     {
@@ -1936,7 +1936,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     timer_init();
 
-    microcode_init_cache(module_map, mbi); /* Needs xmalloc() */
+    microcode_init_cache(bi); /* Needs xmalloc() */
 
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 10:58:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 10:58:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824524.1238665 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3Z43-0000SL-Pl; Wed, 23 Oct 2024 10:58:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824524.1238665; Wed, 23 Oct 2024 10:58: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 1t3Z43-0000RQ-Kq; Wed, 23 Oct 2024 10:58:07 +0000
Received: by outflank-mailman (input) for mailman id 824524;
 Wed, 23 Oct 2024 10:58: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3Z42-0000Ow-Np
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 10:58:06 +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 ada6390a-912d-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 12:58:04 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c9552d02e6so8441646a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 03:58:04 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91571e3asm462067266b.147.2024.10.23.03.58.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 03:58:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ada6390a-912d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729681083; x=1730285883; 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=PiZxguWTJ+3SGGRPO/U42i+dgE2giroEnnA16gZDT+E=;
        b=s4OgVZ/jlkzgse03D5AIgVo0muFxwE5V9Bm/sWLzl8UW5er4HgVbaJdPBkwj+B8meS
         y77qFkzbP6GEMpISWzzZT5yi7EtCWouPdXhvLIjVeoSs+zTu8a0w0tOVzD2Df8Igaz4p
         OGxr50OpH0Fr+qSz+6HWN7bkIX+TiwVGB51RI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729681083; x=1730285883;
        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=PiZxguWTJ+3SGGRPO/U42i+dgE2giroEnnA16gZDT+E=;
        b=pT0x9BQPEFlFLmgm1X426/GexA5yCG9GOr8HQgiL89RSajQ6AY0eBdgoPA3aJRBV6C
         A+VETYmmBwEtHbdGVl+AWPTu8DtJPxbFVVekjZAhakNXyqhA/X37nIZY5ZUL/QlG7Eor
         AIbsyWewa0Fz/0I9KJOhPKYB86w7TEaAnmxBNd7jfXhU1DnY6CRSAU+YO6yGlHpdjiEA
         OfLQ97Ag9tloRQam3mzS1TgcCDzR3qcygSCkb8RVDwXEm41VkuLdQaIpqvDvFYD1w+lj
         vjF9ZWVugu7WERHm1dzzpMKOaxC85aDN3d0I4/Hd7IwJPteDcUdZREezpMfEGsstUkMs
         IopQ==
X-Gm-Message-State: AOJu0YzYIRSuiFuNw/pB9ZZMaS0xenti2mOtcBtJeZm0t352HjNGGLyZ
	4MOa/hFKA3Nnk3DCLhYLvoJJShxODM+GcLdIOl1YNRpzoHHLM7uL3Z0vceBwzuI+riO7buLMIPV
	n
X-Google-Smtp-Source: AGHT+IFIsPAa9xnQjyqUO5z1QLm+iAT23rgeuuNu8jOjdEAWIoFppgJ0o4PiStlDqAVfIkqcIX3EZA==
X-Received: by 2002:a17:907:9811:b0:a99:eb94:3e37 with SMTP id a640c23a62f3a-a9abf964492mr168095366b.58.1729681083050;
        Wed, 23 Oct 2024 03:58:03 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 1/3] x86/boot: Add a temporary module_map pointer to boot_image
Date: Wed, 23 Oct 2024 11:57:54 +0100
Message-Id: <20241023105756.641695-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241023105756.641695-1-andrew.cooper3@citrix.com>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

... in order to untangle parameter handling independently from other other
logic changes.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/include/asm/bootinfo.h | 1 +
 xen/arch/x86/setup.c                | 1 +
 2 files changed, 2 insertions(+)

diff --git a/xen/arch/x86/include/asm/bootinfo.h b/xen/arch/x86/include/asm/bootinfo.h
index ffa443406747..6237da7e4d86 100644
--- a/xen/arch/x86/include/asm/bootinfo.h
+++ b/xen/arch/x86/include/asm/bootinfo.h
@@ -31,6 +31,7 @@ struct boot_info {
     size_t memmap_length;
 
     unsigned int nr_modules;
+    unsigned long *module_map; /* Temporary */
     struct boot_module mods[MAX_NR_BOOTMODS + 1];
 };
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index c5b37bd2112e..d8001867c925 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1086,6 +1086,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     }
 
     bi = multiboot_fill_boot_info(mbi, mod);
+    bi->module_map = module_map; /* Temporary */
 
     /* Parse the command-line options. */
     if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 11:15:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 11:15:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824553.1238698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ZKI-00053p-JM; Wed, 23 Oct 2024 11:14:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824553.1238698; Wed, 23 Oct 2024 11:14: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 1t3ZKI-00053i-Gn; Wed, 23 Oct 2024 11:14:54 +0000
Received: by outflank-mailman (input) for mailman id 824553;
 Wed, 23 Oct 2024 11:14: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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3ZKH-00053c-H5
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 11:14:53 +0000
Received: from sender3-of-o57.zoho.com (sender3-of-o57.zoho.com
 [136.143.184.57]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 049aaf42-9130-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 13:14:50 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172968208345942.37691336568332;
 Wed, 23 Oct 2024 04:14:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 049aaf42-9130-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729682086; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=jmupLRxLRbD1/UnyR2KV3qmfaocWEJWYsrhixrP6e691yUqjfHLyP0nV9f1XoPX4lBdz/tvjC25gPxpsWs6qDMLS+D1X72N1qzz5a+Bh6D1hJSJdtBfQ3mRNXnIYg/STmGWM+IwM0ILsWWSTa3mb3HEKhqoP2f5XA51vvEkgMOY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729682086; 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=IhMN/U3nPvWeA1i1OE6BARpNQkhbYcmV6s4X2ec+Ntc=; 
	b=WoThlcS7mHHyhABtJPHzbLJ66ExtBIamA5YJE8RQlchvG0iG0YBTzQtBcMcV1Htn/4tfBeA2MBSBvVkrS3h7sMVh27sz+Ri0C2f7xSm68Tim1+wiiBD1hY6MeDcC2c7VffAJckF5aM75NReCH0L4TOW2mX1jVmnEN+wPEvdZt0g=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729682086;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=IhMN/U3nPvWeA1i1OE6BARpNQkhbYcmV6s4X2ec+Ntc=;
	b=jMyWqlnsOaKAiBoDVbsIScF3zW6JoBScwE9CupI3wqTm/Woj1YPFezSwlpRn3nbg
	yuB5BMjUBklGSj1JfzFqxm/583yIM6vueXxFM5W36HUIrSbckGTJwYhwmu4HIacDqMi
	fW2WkCI4twIhilgLzR4aBkhcRq4w9NQyDDIJugkE=
Message-ID: <ab77381e-7ded-424c-9ac1-7099db7291ac@apertussolutions.com>
Date: Wed, 23 Oct 2024 07:14:36 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/boot: Add a temporary module_map pointer to
 boot_image
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>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023105756.641695-2-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241023105756.641695-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/23/24 06:57, Andrew Cooper wrote:
> ... in order to untangle parameter handling independently from other other
> logic changes.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 12:17:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 12:17:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824570.1238708 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3aIl-0005Oi-44; Wed, 23 Oct 2024 12:17:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824570.1238708; Wed, 23 Oct 2024 12: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 1t3aIl-0005Ob-1T; Wed, 23 Oct 2024 12:17:23 +0000
Received: by outflank-mailman (input) for mailman id 824570;
 Wed, 23 Oct 2024 12:17: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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3aIk-0005OV-AF
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 12:17:22 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bf78ece2-9138-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 14:17:20 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729685833812767.7603354852624;
 Wed, 23 Oct 2024 05:17:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bf78ece2-9138-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729685836; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=UdljNj+7Y/qbVoM/qSko+osKK/+7RkzDet813pKjw3VJ+lBFFwBmKAMryJmBC2nGDn7VkIoSjQGD288GcbGNIeBGPSlRJ/OcnsLPBMtYtZNiLvYGF8QfEi6p28gJ7B0eRxFOpOouAWyCVxY/t53pPaKHsMLSiOKIlG2peCs/Fhs=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729685836; 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=mtKcHRm9zMX9jcImlJ/4YOoL214/MVZzhYhb6tm+M1w=; 
	b=ZfErIBh91ltkuUXvbmUsPfECzXNqk60lkcq0laxVvC9w7mmLLbWpOoX+OWnWuSwY9N/0ZHoZ5qzjwWJLNEo/ktDte7vEk2tEiOkPL3cROVwbCDkHpALJojliDilrTa8Ty9KhHrPyEka5vgA645nx5OzOx+86oHD+2O84N14Fku8=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729685836;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=mtKcHRm9zMX9jcImlJ/4YOoL214/MVZzhYhb6tm+M1w=;
	b=WZ3tFQ7tQsYJoD8YKrYxLqnWu3bqwm1MtzU8mIMW4E2sqEii6fEcAwuPy6Ar431v
	I0orgktRDEgl+Fy05kfSYUdQd4oY7CEdAYIifQH5x8KzChWHSGT+AFacdsZz+3a167N
	98oJBnhLC7kMfNj/mSVJEM/6pFDnJx0pPlP8SDcY=
Message-ID: <20a904a2-3d33-441f-ad15-2111ec0c8064@apertussolutions.com>
Date: Wed, 23 Oct 2024 08:17:12 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Fix microcode module handling during PVH
 boot
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>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023105756.641695-3-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241023105756.641695-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/23/24 06:57, Andrew Cooper wrote:
> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
> 
> As detailed in commit 0fe607b2a144 ("x86/boot: Fix PVH boot during boot_info
> transition period"), the use of __va(mbi->mods_addr) constitutes a
> use-after-free on the PVH boot path.
> 
> This pattern has been in use since before PVH support was added.  Inside a PVH
> VM, it will go unnoticed as long as the microcode container parser doesn't
> choke on the random data it finds.
> 
> The use within early_microcode_init() happens to be safe because it's prior to
> move_xen().  microcode_init_cache() is after move_xen(), and therefore unsafe.
> 
> Plumb the boot_info pointer down, replacing module_map and mbi.  Importantly,
> bi->mods[].mod is a safe way to access the module list during PVH boot.
> 
> Note: microcode_scan_module() is still bogusly stashing a bootstrap_map()'d
>        pointer in ucode_blob.data, which constitutes a different
>        use-after-free, and only works in general because of a second bug.  This
>        is unrelated to PVH, and needs untangling differently.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 12:17:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 12:17:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824573.1238718 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3aJE-0005om-Ba; Wed, 23 Oct 2024 12:17:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824573.1238718; Wed, 23 Oct 2024 12:17: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 1t3aJE-0005of-8U; Wed, 23 Oct 2024 12:17:52 +0000
Received: by outflank-mailman (input) for mailman id 824573;
 Wed, 23 Oct 2024 12:17: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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3aJC-0005OV-On
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 12:17:50 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d12b29f1-9138-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 14:17:50 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729685863937207.6817537583679;
 Wed, 23 Oct 2024 05:17:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d12b29f1-9138-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729685866; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=lXmJwkS5saeVVXA/7500vEy+1vlwGtharkgdZrnnU5YrV+WtDFplX495+C61y+FIM6mhU6fd06iHwrgh0wGWfufLPv1WeoE5lhpepIUbC8Xk5KfbedlJFcAP0A7nBH2+Goy4qbaS+fk9RKI23hTE9Y2Svkp7PZp02F9t45oIOc8=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729685866; 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=nsYRcxEwQNvIFdBbeHj5AUDgtQYtwh7S25UWp9VhVV8=; 
	b=O4k5NFAqVcwwB9nyGMEQNK3YTyP+Fbj8fJ8+nOFwon4mVftkO5lCIX9r/lCXSlzn1ULpZ/pl95hgHfxaagBmHhVs71Q9bvcbA7CLJl3YWfjUi+GvREutfBQpFFBnzB1Pfjr9m4IMBDnpQndUXUTme6KHpS5giP3K0+KMh/n3ucs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729685866;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=nsYRcxEwQNvIFdBbeHj5AUDgtQYtwh7S25UWp9VhVV8=;
	b=J2FNvzS8HTurMcAuA0B8MjQAuWguig6q5ZDMDbUW2mHZXNdAcaPaSdRpsxQw6O6A
	W6wzDlebVEco82ExbdORFOlovLzhsokYgEqYqZGzJezSG00SKJulG8ARp35XXjybERa
	BwjojV5ydK1+AeBduQYS96+KR+yyMvd8wyzLIlL0=
Message-ID: <34241ea1-001d-40d8-98f1-babf7566d287@apertussolutions.com>
Date: Wed, 23 Oct 2024 08:17:42 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] x86/boot: Fix XSM module handling during PVH boot
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>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023105756.641695-4-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241023105756.641695-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/23/24 06:57, Andrew Cooper wrote:
> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
> 
> As detailed in commit 0fe607b2a144 ("x86/boot: Fix PVH boot during boot_info
> transition period"), the use of __va(mbi->mods_addr) constitutes a
> use-after-free on the PVH boot path.
> 
> This pattern has been in use since before PVH support was added.  This has
> most likely gone unnoticed because no-one's tried using a detached Flask
> policy in a PVH VM before.
> 
> Plumb the boot_info pointer down, replacing module_map and mbi.  Importantly,
> bi->mods[].mod is a safe way to access the module list during PVH boot.
> 
> As this is the final non-bi use of mbi in __start_xen(), make the pointer
> unusable once bi has been established, to prevent new uses creeping back in.
> This is a stopgap until mbi can be fully removed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 12:22:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 12:22:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824581.1238729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3aNi-0007Q8-Rq; Wed, 23 Oct 2024 12:22:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824581.1238729; Wed, 23 Oct 2024 12: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 1t3aNi-0007Q1-Or; Wed, 23 Oct 2024 12:22:30 +0000
Received: by outflank-mailman (input) for mailman id 824581;
 Wed, 23 Oct 2024 12:22: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=Arnv=RT=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3aNg-0007Pv-H4
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 12:22:28 +0000
Received: from mail-oo1-xc36.google.com (mail-oo1-xc36.google.com
 [2607:f8b0:4864:20::c36])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 764261f9-9139-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 14:22:26 +0200 (CEST)
Received: by mail-oo1-xc36.google.com with SMTP id
 006d021491bc7-5ebc0e13d25so1322574eaf.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 05:22:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 764261f9-9139-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729686145; x=1730290945; 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=UaobD5PlPb+io3WRJbgV7LQGBLJlP0/sGXIuWDVkATQ=;
        b=lrNjiyHNcmEG9VHOnKguVIpET5y7iPh1IE8Y/1Wcs+rEkMR7sc23QXDMVQ5Wn8Nijd
         6GmagFu1PpIdcTBzniWB+KYzZ63YNGdvKsBPR5vQUr7+uHVllWCLi98nOuQpEZbY28Pa
         SP+Uupx0iMUPKrwuuUL+A1ajyuMMBdzJwtF8k4Nsigv6ccCvNnsVvIiYKXYDIc8joe3q
         ykwLOm/o/GD0ufDJ5rmDvjSpLv9q8KrYy3r6vrqYFTs04BmgMZTCP3Ej2SfavUsTUyr9
         NTHUxiNpH3xHrOVOph9/fE8xiR7sU35Nh5KmOtrZtZ/iSHx7oJgrpgUJzDNOttxrajxh
         LNxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729686145; x=1730290945;
        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=UaobD5PlPb+io3WRJbgV7LQGBLJlP0/sGXIuWDVkATQ=;
        b=MA7m2WNjSWgT0N+Bu4a11V3R1tfE1B6Lj5XbrIgSyj9K/evmPZbZ+dsZQGT1Y7SFE9
         NYsBl5Fdp7NpacfYP54flWUCNx2X9ZcYlhJXoV56T32ekSA5LXnaPeAuyivxj5y1U1Z/
         pcq/s30WnOb4pcJjZJfTXUhsHWQ1aeH5dnGxG2OOBYy31UKmUj2FWB89RKomx2+XL8p/
         abaYEWq6UufyF+pXfM7Yqn9KluwsoE5fPHaFPtHFwL1bLdYJ4bWKgfVr9GpMHzQixkt7
         M+LqRYMSbUeYkpqSG+rEP0k1rAfQra+WXVBIyb3YrO0jEk29lNFBrT/L6Zhy3yqDqcU8
         Wu0A==
X-Gm-Message-State: AOJu0Yz3Sr/ExzpUp61lYkVOOIxVzNrKITxVlPya4FDmna13CgAICJt0
	51LJ9X2YJ2T7cuXovowhCS/cPS9lLVZhtXJ3IyHpL+UVfMM2hb9yWtgsVOkGyXiOAk4w9MawFQJ
	V4YZvqlfNZIgW4JWQ3CS48Q4cFMORc27QPC7BUA==
X-Google-Smtp-Source: AGHT+IFv3itQvfhlFsy7XVy8nP/Dgju1GAeXatQfDo0kDyQDFk8CG/vhnZASQRatqMhWm+m8Vx/C+YM5Dgl0HhFAY7I=
X-Received: by 2002:a05:6870:1590:b0:288:b902:1b6d with SMTP id
 586e51a60fabf-28ccb542943mr2027855fac.26.1729686144593; Wed, 23 Oct 2024
 05:22:24 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <f1521b297eee2648fdca73896640230c0ca4cc57.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <f1521b297eee2648fdca73896640230c0ca4cc57.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 23 Oct 2024 14:22:13 +0200
Message-ID: <CAHUa44Exc1DYUgy=K64yFcf1_yqUPZRDGe6pm4Q-RVr-Ytgk0g@mail.gmail.com>
Subject: Re: [PATCH v2 05/10] xen/arm: ffa: Rework partition info get
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Rework the partition info get implementation to use the correct size of
> structure depending on the version of the protocol and simplifies the
> structure copy to use only memcpy and prevent recreating the structure
> each time.
> The goal here is to have an implementation that will be easier to
> maintain in the long term as the specification is only adding fields to
> structure with versions to simplify support of several protocol
> versions and as such an SPMC implementation in the future could use this
> and return a size higher than the one we expect.
> The patch is fixing the part_info_get function for this and the
> subscriber discovery on probe.
>
> No functional changes expected.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - rebase
> ---
>  xen/arch/arm/tee/ffa.c          |  13 +--
>  xen/arch/arm/tee/ffa_partinfo.c | 185 ++++++++++++++++++++------------
>  xen/arch/arm/tee/ffa_private.h  |   4 +-
>  3 files changed, 118 insertions(+), 84 deletions(-)

Looks good.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

Cheers,
Jens

>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 267d4435ac08..4b55e8b48f01 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -311,8 +311,6 @@ static bool ffa_handle_call(struct cpu_user_regs *reg=
s)
>      uint32_t fid =3D get_user_reg(regs, 0);
>      struct domain *d =3D current->domain;
>      struct ffa_ctx *ctx =3D d->arch.tee;
> -    uint32_t fpi_size;
> -    uint32_t count;
>      int e;
>
>      if ( !ctx )
> @@ -338,16 +336,7 @@ static bool ffa_handle_call(struct cpu_user_regs *re=
gs)
>          e =3D ffa_handle_rxtx_unmap();
>          break;
>      case FFA_PARTITION_INFO_GET:
> -        e =3D ffa_handle_partition_info_get(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), &count,
> -                                          &fpi_size);
> -        if ( e )
> -            ffa_set_regs_error(regs, e);
> -        else
> -            ffa_set_regs_success(regs, count, fpi_size);
> +        ffa_handle_partition_info_get(regs);
>          return true;
>      case FFA_RX_RELEASE:
>          e =3D ffa_handle_rx_release();
> diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_parti=
nfo.c
> index 99c48f0e5c05..75a073d090e0 100644
> --- a/xen/arch/arm/tee/ffa_partinfo.c
> +++ b/xen/arch/arm/tee/ffa_partinfo.c
> @@ -33,21 +33,24 @@ static uint16_t subscr_vm_created_count __read_mostly=
;
>  static uint16_t *subscr_vm_destroyed __read_mostly;
>  static uint16_t subscr_vm_destroyed_count __read_mostly;
>
> -static int32_t ffa_partition_info_get(uint32_t w1, uint32_t w2, uint32_t=
 w3,
> -                                      uint32_t w4, uint32_t w5, uint32_t=
 *count,
> -                                      uint32_t *fpi_size)
> +static int32_t ffa_partition_info_get(uint32_t *uuid, uint32_t flags,
> +                                      uint32_t *count, uint32_t *fpi_siz=
e)
>  {
> -    const struct arm_smccc_1_2_regs arg =3D {
> +    struct arm_smccc_1_2_regs arg =3D {
>          .a0 =3D FFA_PARTITION_INFO_GET,
> -        .a1 =3D w1,
> -        .a2 =3D w2,
> -        .a3 =3D w3,
> -        .a4 =3D w4,
> -        .a5 =3D w5,
> +        .a5 =3D flags,
>      };
>      struct arm_smccc_1_2_regs resp;
>      uint32_t ret;
>
> +    if ( uuid )
> +    {
> +        arg.a1 =3D uuid[0];
> +        arg.a2 =3D uuid[1];
> +        arg.a3 =3D uuid[2];
> +        arg.a4 =3D uuid[3];
> +    }
> +
>      arm_smccc_1_2_smc(&arg, &resp);
>
>      ret =3D ffa_get_ret_code(&resp);
> @@ -60,13 +63,31 @@ static int32_t ffa_partition_info_get(uint32_t w1, ui=
nt32_t w2, uint32_t w3,
>      return ret;
>  }
>
> -int32_t ffa_handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t=
 w3,
> -                                      uint32_t w4, uint32_t w5, uint32_t=
 *count,
> -                                      uint32_t *fpi_size)
> +void ffa_handle_partition_info_get(struct cpu_user_regs *regs)
>  {
> -    int32_t ret =3D FFA_RET_DENIED;
> +    int32_t ret;
>      struct domain *d =3D current->domain;
>      struct ffa_ctx *ctx =3D d->arch.tee;
> +    uint32_t flags =3D get_user_reg(regs, 5);
> +    uint32_t uuid[4] =3D {
> +        get_user_reg(regs, 1),
> +        get_user_reg(regs, 2),
> +        get_user_reg(regs, 3),
> +        get_user_reg(regs, 4),
> +    };
> +    uint32_t src_size, dst_size;
> +    void *dst_buf;
> +    uint32_t ffa_sp_count =3D 0;
> +
> +    /*
> +     * If the guest is v1.0, he does not get back the entry size so we m=
ust
> +     * use the v1.0 structure size in the destination buffer.
> +     * Otherwise use the size of the highest version we support, here 1.=
1.
> +     */
> +    if ( ctx->guest_vers =3D=3D FFA_VERSION_1_0 )
> +        dst_size =3D sizeof(struct ffa_partition_info_1_0);
> +    else
> +        dst_size =3D sizeof(struct ffa_partition_info_1_1);
>
>      /*
>       * FF-A v1.0 has w5 MBZ while v1.1 allows
> @@ -75,90 +96,105 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, u=
int32_t w2, uint32_t w3,
>       * FFA_PARTITION_INFO_GET_COUNT is only using registers and not the
>       * rxtx buffer so do the partition_info_get directly.
>       */
> -    if ( w5 =3D=3D FFA_PARTITION_INFO_GET_COUNT_FLAG &&
> +    if ( flags =3D=3D FFA_PARTITION_INFO_GET_COUNT_FLAG &&
>           ctx->guest_vers =3D=3D FFA_VERSION_1_1 )
>      {
>          if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
> -            return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi=
_size);
> +            ret =3D ffa_partition_info_get(uuid, flags, &ffa_sp_count,
> +                                        &src_size);
>          else
> -        {
> -            *count =3D 0;
> -            return FFA_RET_OK;
> -        }
> -    }
> -    if ( w5 )
> -        return FFA_RET_INVALID_PARAMETERS;
> +            ret =3D FFA_RET_OK;
>
> -    if ( !ffa_rx )
> -        return FFA_RET_DENIED;
> +        goto out;
> +    }
>
> -    if ( !spin_trylock(&ctx->rx_lock) )
> -        return FFA_RET_BUSY;
> +    if ( flags )
> +    {
> +        ret =3D FFA_RET_INVALID_PARAMETERS;
> +        goto out;
> +    }
>
>      if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
>      {
> -        if ( ctx->guest_vers =3D=3D FFA_VERSION_1_0 )
> -            *fpi_size =3D sizeof(struct ffa_partition_info_1_0);
> -        else
> -            *fpi_size =3D sizeof(struct ffa_partition_info_1_1);
> -
> -        *count =3D 0;
> +        /* Just give an empty partition list to the caller */
>          ret =3D FFA_RET_OK;
>          goto out;
>      }
>
> -    if ( !ctx->page_count || !ctx->rx_is_free )
> +    if ( !spin_trylock(&ctx->rx_lock) )
> +    {
> +        ret =3D FFA_RET_BUSY;
>          goto out;
> +    }
> +
> +    dst_buf =3D ctx->rx;
> +
> +    if ( !ffa_rx )
> +    {
> +        ret =3D FFA_RET_DENIED;
> +        goto out_rx_release;
> +    }
> +
> +    if ( !ctx->page_count || !ctx->rx_is_free )
> +    {
> +        ret =3D FFA_RET_DENIED;
> +        goto out_rx_release;
> +    }
> +
>      spin_lock(&ffa_rx_buffer_lock);
> -    ret =3D ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi_size);
> +
> +    ret =3D ffa_partition_info_get(uuid, 0, &ffa_sp_count, &src_size);
> +
>      if ( ret )
>          goto out_rx_buf_unlock;
> +
>      /*
>       * ffa_partition_info_get() succeeded so we now own the RX buffer we
>       * share with the SPMC. We must give it back using ffa_rx_release()
>       * once we've copied the content.
>       */
>
> -    if ( ctx->guest_vers =3D=3D FFA_VERSION_1_0 )
> +    /* we cannot have a size smaller than 1.0 structure */
> +    if ( src_size < sizeof(struct ffa_partition_info_1_0) )
>      {
> -        size_t n;
> -        struct ffa_partition_info_1_1 *src =3D ffa_rx;
> -        struct ffa_partition_info_1_0 *dst =3D ctx->rx;
> -
> -        if ( ctx->page_count * FFA_PAGE_SIZE < *count * sizeof(*dst) )
> -        {
> -            ret =3D FFA_RET_NO_MEMORY;
> -            goto out_rx_release;
> -        }
> +        ret =3D FFA_RET_NOT_SUPPORTED;
> +        goto out_rx_hyp_release;
> +    }
>
> -        for ( n =3D 0; n < *count; n++ )
> -        {
> -            dst[n].id =3D src[n].id;
> -            dst[n].execution_context =3D src[n].execution_context;
> -            dst[n].partition_properties =3D src[n].partition_properties;
> -        }
> +    if ( ctx->page_count * FFA_PAGE_SIZE < ffa_sp_count * dst_size )
> +    {
> +        ret =3D FFA_RET_NO_MEMORY;
> +        goto out_rx_hyp_release;
>      }
> -    else
> +
> +    if ( ffa_sp_count > 0 )
>      {
> -        size_t sz =3D *count * *fpi_size;
> +        uint32_t n;
> +        void *src_buf =3D ffa_rx;
>
> -        if ( ctx->page_count * FFA_PAGE_SIZE < sz )
> +        /* copy the secure partitions info */
> +        for ( n =3D 0; n < ffa_sp_count; n++ )
>          {
> -            ret =3D FFA_RET_NO_MEMORY;
> -            goto out_rx_release;
> +            memcpy(dst_buf, src_buf, dst_size);
> +            dst_buf +=3D dst_size;
> +            src_buf +=3D src_size;
>          }
> -
> -        memcpy(ctx->rx, ffa_rx, sz);
>      }
> +
>      ctx->rx_is_free =3D false;
> -out_rx_release:
> +
> +out_rx_hyp_release:
>      ffa_rx_release();
>  out_rx_buf_unlock:
>      spin_unlock(&ffa_rx_buffer_lock);
> -out:
> +out_rx_release:
>      spin_unlock(&ctx->rx_lock);
>
> -    return ret;
> +out:
> +    if ( ret )
> +        ffa_set_regs_error(regs, ret);
> +    else
> +        ffa_set_regs_success(regs, ffa_sp_count, dst_size);
>  }
>
>  static int32_t ffa_direct_req_send_vm(uint16_t sp_id, uint16_t vm_id,
> @@ -221,19 +257,28 @@ static void uninit_subscribers(void)
>          XFREE(subscr_vm_destroyed);
>  }
>
> -static bool init_subscribers(struct ffa_partition_info_1_1 *fpi, uint16_=
t count)
> +static bool init_subscribers(uint16_t count, uint32_t fpi_size)
>  {
>      uint16_t n;
>      uint16_t c_pos;
>      uint16_t d_pos;
> +    struct ffa_partition_info_1_1 *fpi;
> +
> +    if ( fpi_size < sizeof(struct ffa_partition_info_1_1) )
> +    {
> +        printk(XENLOG_ERR "ffa: partition info size invalid: %u\n", fpi_=
size);
> +        return false;
> +    }
>
>      subscr_vm_created_count =3D 0;
>      subscr_vm_destroyed_count =3D 0;
>      for ( n =3D 0; n < count; n++ )
>      {
> -        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_CREATED )
> +        fpi =3D ffa_rx + n * fpi_size;
> +
> +        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
>              subscr_vm_created_count++;
> -        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_DESTROYED=
 )
> +        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
>              subscr_vm_destroyed_count++;
>      }
>
> @@ -252,10 +297,12 @@ static bool init_subscribers(struct ffa_partition_i=
nfo_1_1 *fpi, uint16_t count)
>
>      for ( c_pos =3D 0, d_pos =3D 0, n =3D 0; n < count; n++ )
>      {
> -        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_CREATED )
> -            subscr_vm_created[c_pos++] =3D fpi[n].id;
> -        if ( fpi[n].partition_properties & FFA_PART_PROP_NOTIF_DESTROYED=
 )
> -            subscr_vm_destroyed[d_pos++] =3D fpi[n].id;
> +        fpi =3D ffa_rx + n * fpi_size;
> +
> +        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
> +            subscr_vm_created[c_pos++] =3D fpi->id;
> +        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
> +            subscr_vm_destroyed[d_pos++] =3D fpi->id;
>      }
>
>      return true;
> @@ -275,7 +322,7 @@ bool ffa_partinfo_init(void)
>           !ffa_rx || !ffa_tx )
>          return false;
>
> -    e =3D ffa_partition_info_get(0, 0, 0, 0, 0, &count, &fpi_size);
> +    e =3D ffa_partition_info_get(NULL, 0, &count, &fpi_size);
>      if ( e )
>      {
>          printk(XENLOG_ERR "ffa: Failed to get list of SPs: %d\n", e);
> @@ -288,7 +335,7 @@ bool ffa_partinfo_init(void)
>          goto out;
>      }
>
> -    ret =3D init_subscribers(ffa_rx, count);
> +    ret =3D init_subscribers(count, fpi_size);
>
>  out:
>      ffa_rx_release();
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 85eb61c13464..e5bc73f9039e 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -316,9 +316,7 @@ int ffa_handle_mem_reclaim(uint64_t handle, uint32_t =
flags);
>  bool ffa_partinfo_init(void);
>  int ffa_partinfo_domain_init(struct domain *d);
>  bool ffa_partinfo_domain_destroy(struct domain *d);
> -int32_t ffa_handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t=
 w3,
> -                                      uint32_t w4, uint32_t w5, uint32_t=
 *count,
> -                                      uint32_t *fpi_size);
> +void ffa_handle_partition_info_get(struct cpu_user_regs *regs);
>
>  bool ffa_rxtx_init(void);
>  void ffa_rxtx_destroy(void);
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 12:28:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 12:28:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824591.1238738 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3aTD-0008Kr-E1; Wed, 23 Oct 2024 12:28:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824591.1238738; Wed, 23 Oct 2024 12:28: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 1t3aTD-0008Kk-B0; Wed, 23 Oct 2024 12:28:11 +0000
Received: by outflank-mailman (input) for mailman id 824591;
 Wed, 23 Oct 2024 12:28: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3aTB-0008KR-NI
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 12:28:09 +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 42c09a9b-913a-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 14:28:08 +0200 (CEST)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-53b13ea6b78so3183739e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 05:28:08 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91572475sm470923866b.154.2024.10.23.05.28.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 05:28:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42c09a9b-913a-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729686487; x=1730291287; 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=enwoEkHrB4PVkQyUNobQYIVu5lajkhVSiVikEltYAlI=;
        b=n5gAfo0peHssfhOOhPnV81mg6sxjCcP2yVacFIOZenyRInRXFatIYdWAjl0j4sFbkQ
         o3Eqo6bVdpX0BGVrOBvpQilie+mkgJHK13rKsx/VM9iRrJQES2yoyKNejRLifhwfDKav
         vy84Sd9Keuso3vx/Ux0ScFdkFjlPUzf3PIeeg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729686487; x=1730291287;
        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=enwoEkHrB4PVkQyUNobQYIVu5lajkhVSiVikEltYAlI=;
        b=FQkjNFwirpX/zLpNI9uDMvQYJNpLFEwbta6iF6MX5MgCHiVaS79BGq1AxG5AiDrP0k
         4XyUuYlB8FWNC8J3kqXpfqdrsICs8wO05hTIFfymujRu5Ctg+/gL81EP5oLQF5oCR8wp
         8bUctSM5CCDv57So8RMsI9VGu9tESlmZ64BdQGH1hia+8KulqUThEEpeEVb06FbhoNoj
         rVftwh/GJrCRrXexxc5VtWD7Is3CuuGoFuGOHBIWmG5OoXwMm020D3DZbr+TcFPfk6Ui
         lT5JnIiGuSTz+bm8FjynyNOWkNrjfXjFKhJBpH4AMfjb27kr8QuvM1lpzHeSclNejyY1
         cCQQ==
X-Gm-Message-State: AOJu0YzwUQ0eAhPmFTAgJLCmjl2L5s7CbbB3S+OaCvv20UbjANg+t2P1
	9dPziKDsJK21JukD/n91WPpF1RteSX3MTy8AthBq8xrqr1hAVKxrhpqNLh/HkW/mn0kISc59eTF
	l
X-Google-Smtp-Source: AGHT+IH6VStbYMME9i+lTuj6kH2ADIr0Y1tOOU6dod5lSJYRODU8UOipoqRRed20R2DSAoumAMOWgw==
X-Received: by 2002:a05:6512:23aa:b0:539:8cd1:848 with SMTP id 2adb3069b0e04-53b1a3bae89mr1802699e87.61.1729686487518;
        Wed, 23 Oct 2024 05:28:07 -0700 (PDT)
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>
Subject: [PATCH] x86/ucode: Explain what microcode_set_module() does
Date: Wed, 23 Oct 2024 13:28:03 +0100
Message-Id: <20241023122803.670943-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>

I found this hiding in other microcode changes, and decided it was high time
it got included.
---
 xen/arch/x86/cpu/microcode/core.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 8564e4d2c94c..dc2c064cf176 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -108,6 +108,10 @@ static bool ucode_in_nmi = true;
 /* Protected by microcode_mutex */
 static const struct microcode_patch *microcode_cache;
 
+/*
+ * Used by the EFI path only, when xen.cfg identifies an explicit microcode
+ * file.  Overrides ucode=<int>|scan on the regular command line.
+ */
 void __init microcode_set_module(unsigned int idx)
 {
     ucode_mod_idx = idx;

base-commit: be84e7fe58b51f6b6dd907a038f0ef998a1e281e
prerequisite-patch-id: ef20898eb25a7ca1ea2d7b1d676f00b91b46d5f6
prerequisite-patch-id: e0d0c0acbe4864a00451187ef7232dcaf10b2477
prerequisite-patch-id: f6010b4a6e0b43ac837aea470b3b5e5f390ee3b2
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:10:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:10:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824606.1238759 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3b7x-0006gY-R5; Wed, 23 Oct 2024 13:10:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824606.1238759; Wed, 23 Oct 2024 13:10: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 1t3b7x-0006gR-Nl; Wed, 23 Oct 2024 13:10:17 +0000
Received: by outflank-mailman (input) for mailman id 824606;
 Wed, 23 Oct 2024 13:10: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b7w-0006ft-4v
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10:16 +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 24630b65-9140-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 15:10:14 +0200 (CEST)
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 0E0F91FDA2;
 Wed, 23 Oct 2024 13:10: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 C0DA013A63;
 Wed, 23 Oct 2024 13:10:13 +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 7ep2LbX1GGe+dwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13:10: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: 24630b65-9140-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689014; 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=R/jCtUub5rdGQ3ibE045xPBxKzrjJrpwGC8ELjHDU+0=;
	b=hvrpHxok67YrGN7ETYvPX5Zde5uMbuVhY1TdYwk8wWkpWdkPS49o5F4gGX3QFtxU1x3Tf9
	ogp14Jhdz/tsljAUDoX6eKJt3pJ40XQsnySdG0F2BU7FDRfxgtFtxUCQxp9MmO+fMMt5tI
	YNYv1yrH3nSb/KRm+Ocv18ZUkP745iM=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=hvrpHxok
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689014; 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=R/jCtUub5rdGQ3ibE045xPBxKzrjJrpwGC8ELjHDU+0=;
	b=hvrpHxok67YrGN7ETYvPX5Zde5uMbuVhY1TdYwk8wWkpWdkPS49o5F4gGX3QFtxU1x3Tf9
	ogp14Jhdz/tsljAUDoX6eKJt3pJ40XQsnySdG0F2BU7FDRfxgtFtxUCQxp9MmO+fMMt5tI
	YNYv1yrH3nSb/KRm+Ocv18ZUkP745iM=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/6] xen: add a domain unique id to each domain
Date: Wed, 23 Oct 2024 15:10:00 +0200
Message-ID: <20241023131005.32144-2-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241023131005.32144-1-jgross@suse.com>
References: <20241023131005.32144-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 0E0F91FDA2
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

Xenstore is referencing domains by their domid, but reuse of a domid
can lead to the situation that Xenstore can't tell whether a domain
with that domid has been deleted and created again without Xenstore
noticing the domain is a new one now.

Add a global domain creation unique id which is updated when creating
a new domain, and store that value in struct domain of the new domain.
The global unique id is initialized with the system time and updates
are done via the xorshift algorithm which is used for pseudo random
number generation, too (see https://en.wikipedia.org/wiki/Xorshift).

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
V1:
- make unique_id local to function (Jan Beulich)
- add lock (Julien Grall)
- add comment (Julien Grall)
---
 xen/common/domain.c     | 20 ++++++++++++++++++++
 xen/include/xen/sched.h |  3 +++
 2 files changed, 23 insertions(+)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 92263a4fbd..3948640fb0 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -562,6 +562,25 @@ static void _domain_destroy(struct domain *d)
     free_domain_struct(d);
 }
 
+static uint64_t get_unique_id(void)
+{
+    static uint64_t unique_id;
+    static DEFINE_SPINLOCK(lock);
+    uint64_t x = unique_id ? : NOW();
+
+    spin_lock(&lock);
+
+    /* Pseudo-randomize id in order to avoid consumers relying on sequence. */
+    x ^= x << 13;
+    x ^= x >> 7;
+    x ^= x << 17;
+    unique_id = x;
+
+    spin_unlock(&lock);
+
+    return x;
+}
+
 static int sanitise_domain_config(struct xen_domctl_createdomain *config)
 {
     bool hvm = config->flags & XEN_DOMCTL_CDF_hvm;
@@ -654,6 +673,7 @@ struct domain *domain_create(domid_t domid,
 
     /* Sort out our idea of is_system_domain(). */
     d->domain_id = domid;
+    d->unique_id = get_unique_id();
 
     /* Holding CDF_* internal flags. */
     d->cdf = flags;
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 90666576c2..1dd8a425f9 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -370,6 +370,9 @@ struct domain
     domid_t          domain_id;
 
     unsigned int     max_vcpus;
+
+    uint64_t         unique_id;       /* Unique domain identifier */
+
     struct vcpu    **vcpu;
 
     shared_info_t   *shared_info;     /* shared data area */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:10:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:10:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824605.1238748 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3b7s-0006Rn-JU; Wed, 23 Oct 2024 13:10:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824605.1238748; Wed, 23 Oct 2024 13:10: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 1t3b7s-0006Rg-Gs; Wed, 23 Oct 2024 13:10:12 +0000
Received: by outflank-mailman (input) for mailman id 824605;
 Wed, 23 Oct 2024 13:10: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b7r-0006Ra-EE
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10:11 +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 20f24c40-9140-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:10:09 +0200 (CEST)
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 5D73321FAB;
 Wed, 23 Oct 2024 13:10:08 +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 14DB113A63;
 Wed, 23 Oct 2024 13:10:08 +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 i8SwA7D1GGe2dwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13:10: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>
X-Inumbo-ID: 20f24c40-9140-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689008; 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=ONHU4wsU1jK2R7fCbxvNJAdPA+MIG+vJ/cB84F1Y9cw=;
	b=uv1jYQvmRbe3SFB6YtNvc6l9/g8v+lRXXwcVx6GGeTjJEyUL1EeFpWqFIj8Ar+ZNBGqWLT
	ptIgePm2UlQyXxDSL/tjzYpIwMckX2LwugpVUhmYqw2rusBKcEiYrvvZh2P6VsW0qSbDMY
	wmUqmWE5QPNXSf+Xd7SYyGtXmfbL7bk=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=uv1jYQvm
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689008; 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=ONHU4wsU1jK2R7fCbxvNJAdPA+MIG+vJ/cB84F1Y9cw=;
	b=uv1jYQvmRbe3SFB6YtNvc6l9/g8v+lRXXwcVx6GGeTjJEyUL1EeFpWqFIj8Ar+ZNBGqWLT
	ptIgePm2UlQyXxDSL/tjzYpIwMckX2LwugpVUhmYqw2rusBKcEiYrvvZh2P6VsW0qSbDMY
	wmUqmWE5QPNXSf+Xd7SYyGtXmfbL7bk=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH 0/6] remove libxenctrl usage from xenstored
Date: Wed, 23 Oct 2024 15:09:59 +0200
Message-ID: <20241023131005.32144-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 5D73321FAB
X-Spam-Score: -3.01
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	RCVD_COUNT_TWO(0.00)[2];
	ARC_NA(0.00)[];
	MIME_TRACE(0.00)[0:+];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCPT_COUNT_SEVEN(0.00)[9];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

Xenstored is using libxenctrl for only one purpose: to get information
about state of domains.

This patch series is removing that dependency by introducing a new
stable interface which can be used by xenstored instead.

There was a RFC series sent out 3 years ago, which I have taken as a
base and by addressing all comments from back then.

The main differences since that RFC series are:

- Instead of introducing an new main hypercall for a stable management
  interface I have just added a new domctl sub-op, as requested in 2021.

- I have added a new library libxenmanage for easy use of the new
  stable hypervisor interface. Main motivation for adding the library
  was the recent attempt to decouple oxenstored from the Xen git tree.
  By using the new library, oxenstored could benefit in the same way as
  xenstored from the new interface: it would be possible to rely on
  stable libraries only.

- Mini-OS has gained some more config options recently, so it was rather
  easy to make xenstore[pvh]-stubdom independent from libxenctrl, too.

- By moving the CPU barrier definitions out of xenctrl.h into a new
  dedicated header xenstored code no longer needs to #include xenctrl.h,
  thus removing any xenctrl reference from xenstored code.

Please note that the last patch can be committed only after the related
Mini-OS patch "config: add support for libxenmanage" has gone in AND
the Mini-OS commit-id has been updated in Config.mk accordingly!

Juergen Gross (6):
  xen: add a domain unique id to each domain
  xen: add bitmap to indicate per-domain state changes
  xen: add new domctl get_changed_domain
  tools/libs: add a new libxenmanage library
  tools: add a dedicated header file for barrier definitions
  tools/xenstored: use new stable interface instead of libxenctrl

 stubdom/Makefile                    |   8 +-
 stubdom/mini-os.mk                  |   1 +
 tools/9pfsd/io.c                    |   5 +-
 tools/flask/policy/modules/dom0.te  |   2 +-
 tools/include/xen-barrier.h         |  51 +++++++++
 tools/include/xenctrl.h             |  28 +----
 tools/include/xenmanage.h           |  98 ++++++++++++++++
 tools/libs/Makefile                 |   1 +
 tools/libs/ctrl/Makefile            |   2 +-
 tools/libs/manage/Makefile          |  10 ++
 tools/libs/manage/Makefile.common   |   1 +
 tools/libs/manage/core.c            | 170 ++++++++++++++++++++++++++++
 tools/libs/manage/libxenmanage.map  |   8 ++
 tools/libs/uselibs.mk               |   2 +
 tools/xenstored/Makefile            |   2 +-
 tools/xenstored/Makefile.common     |   2 +-
 tools/xenstored/core.h              |   1 -
 tools/xenstored/domain.c            |  52 ++++-----
 tools/xenstored/lu.c                |   1 +
 tools/xenstored/lu_daemon.c         |   1 +
 xen/common/domain.c                 |  92 +++++++++++++++
 xen/common/domctl.c                 |  19 +++-
 xen/common/event_channel.c          |  11 +-
 xen/include/public/domctl.h         |  33 ++++++
 xen/include/xen/event.h             |   6 +
 xen/include/xen/sched.h             |   7 ++
 xen/include/xsm/dummy.h             |   8 ++
 xen/include/xsm/xsm.h               |   6 +
 xen/xsm/dummy.c                     |   1 +
 xen/xsm/flask/hooks.c               |   7 ++
 xen/xsm/flask/policy/access_vectors |   2 +
 31 files changed, 566 insertions(+), 72 deletions(-)
 create mode 100644 tools/include/xen-barrier.h
 create mode 100644 tools/include/xenmanage.h
 create mode 100644 tools/libs/manage/Makefile
 create mode 100644 tools/libs/manage/Makefile.common
 create mode 100644 tools/libs/manage/core.c
 create mode 100644 tools/libs/manage/libxenmanage.map

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:10:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:10:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824607.1238768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3b84-0006yZ-2e; Wed, 23 Oct 2024 13:10:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824607.1238768; Wed, 23 Oct 2024 13:10: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 1t3b83-0006yS-W0; Wed, 23 Oct 2024 13:10:23 +0000
Received: by outflank-mailman (input) for mailman id 824607;
 Wed, 23 Oct 2024 13:10: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b82-0006Ra-2K
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10:22 +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 2779cc7c-9140-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:10:20 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 A1E6D1FDA3;
 Wed, 23 Oct 2024 13:10:19 +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 6BC0613A63;
 Wed, 23 Oct 2024 13:10:19 +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 HKDkGLv1GGfGdwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13: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>
X-Inumbo-ID: 2779cc7c-9140-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689019; 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=i3xMtPXgKn6GG8oVuMqyejq+21hcqPaJBGgXHENl+cw=;
	b=PaOzNzSZcG26XL9qxihvCawE2U283fnLlqlhDp0dF1PsI/69+igiohrJUAXLahinNr43hC
	YbnnVwBxmuClh1LiFklCmovZLDe6IfTgv5r29F1ShW+ZF6cL800yYg+wA/fADwV+xwokbC
	D2+eJB+unAz2x4HiLr1jk8Z9pBuY5QE=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689019; 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=i3xMtPXgKn6GG8oVuMqyejq+21hcqPaJBGgXHENl+cw=;
	b=PaOzNzSZcG26XL9qxihvCawE2U283fnLlqlhDp0dF1PsI/69+igiohrJUAXLahinNr43hC
	YbnnVwBxmuClh1LiFklCmovZLDe6IfTgv5r29F1ShW+ZF6cL800yYg+wA/fADwV+xwokbC
	D2+eJB+unAz2x4HiLr1jk8Z9pBuY5QE=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 2/6] xen: add bitmap to indicate per-domain state changes
Date: Wed, 23 Oct 2024 15:10:01 +0200
Message-ID: <20241023131005.32144-3-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241023131005.32144-1-jgross@suse.com>
References: <20241023131005.32144-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[6];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Add a bitmap with one bit per possible domid indicating the respective
domain has changed its state (created, deleted, dying, crashed,
shutdown).

Registering the VIRQ_DOM_EXC event will result in setting the bits for
all existing domains and resetting all other bits.

Resetting a bit will be done in a future patch.

This information is needed for Xenstore to keep track of all domains.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 xen/common/domain.c        | 21 +++++++++++++++++++++
 xen/common/event_channel.c |  2 ++
 xen/include/xen/sched.h    |  2 ++
 3 files changed, 25 insertions(+)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 3948640fb0..61b7899cb8 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -138,6 +138,22 @@ bool __read_mostly vmtrace_available;
 
 bool __read_mostly vpmu_is_available;
 
+static DECLARE_BITMAP(dom_state_changed, DOMID_MASK + 1);
+
+void domain_reset_states(void)
+{
+    struct domain *d;
+
+    bitmap_zero(dom_state_changed, DOMID_MASK + 1);
+
+    rcu_read_lock(&domlist_read_lock);
+
+    for_each_domain ( d )
+        set_bit(d->domain_id, dom_state_changed);
+
+    rcu_read_unlock(&domlist_read_lock);
+}
+
 static void __domain_finalise_shutdown(struct domain *d)
 {
     struct vcpu *v;
@@ -152,6 +168,7 @@ static void __domain_finalise_shutdown(struct domain *d)
             return;
 
     d->is_shut_down = 1;
+    set_bit(d->domain_id, dom_state_changed);
     if ( (d->shutdown_code == SHUTDOWN_suspend) && d->suspend_evtchn )
         evtchn_send(d, d->suspend_evtchn);
     else
@@ -832,6 +849,7 @@ struct domain *domain_create(domid_t domid,
      */
     domlist_insert(d);
 
+    set_bit(d->domain_id, dom_state_changed);
     memcpy(d->handle, config->handle, sizeof(d->handle));
 
     return d;
@@ -1097,6 +1115,7 @@ int domain_kill(struct domain *d)
         /* Mem event cleanup has to go here because the rings 
          * have to be put before we call put_domain. */
         vm_event_cleanup(d);
+        set_bit(d->domain_id, dom_state_changed);
         put_domain(d);
         send_global_virq(VIRQ_DOM_EXC);
         /* fallthrough */
@@ -1286,6 +1305,8 @@ static void cf_check complete_domain_destroy(struct rcu_head *head)
 
     xfree(d->vcpu);
 
+    set_bit(d->domain_id, dom_state_changed);
+
     _domain_destroy(d);
 
     send_global_virq(VIRQ_DOM_EXC);
diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c
index 8db2ca4ba2..9b87d29968 100644
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -1296,6 +1296,8 @@ long do_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         rc = evtchn_bind_virq(&bind_virq, 0);
         if ( !rc && __copy_to_guest(arg, &bind_virq, 1) )
             rc = -EFAULT; /* Cleaning up here would be a mess! */
+        if ( !rc && bind_virq.virq == VIRQ_DOM_EXC )
+            domain_reset_states();
         break;
     }
 
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 1dd8a425f9..667863263d 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -800,6 +800,8 @@ void domain_resume(struct domain *d);
 
 int domain_soft_reset(struct domain *d, bool resuming);
 
+void domain_reset_states(void);
+
 int vcpu_start_shutdown_deferral(struct vcpu *v);
 void vcpu_end_shutdown_deferral(struct vcpu *v);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:10:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:10:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824608.1238779 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3b89-0007IA-Bt; Wed, 23 Oct 2024 13:10:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824608.1238779; Wed, 23 Oct 2024 13:10: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 1t3b89-0007Hx-8m; Wed, 23 Oct 2024 13:10:29 +0000
Received: by outflank-mailman (input) for mailman id 824608;
 Wed, 23 Oct 2024 13:10: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b87-0006Ra-Ps
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10:27 +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 2aefd767-9140-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:10:25 +0200 (CEST)
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 6520721F9E;
 Wed, 23 Oct 2024 13:10:25 +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 1712813A63;
 Wed, 23 Oct 2024 13:10:25 +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 EAPoA8H1GGfQdwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13: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>
X-Inumbo-ID: 2aefd767-9140-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689025; 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=rtCCiSYqzhqkGXHm58rEQmU6Y1e8RWcxAYmUU38jt1M=;
	b=RfhUd+8M3on1g0OrGEqSSrQWGl6ctFvr16HrqLVVYXFy6NLDYgVu2btE39M70kco8AfnB9
	fAId4RJyP9HHkRfTNVuqQ6Z+GfLQixkOyX59ra0pn3dk9GzYwAYhpBEGwvUTtZQ+VInW8p
	EgbpNvCLa2wKFve6adw9I+F/Wn2hgQ8=
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=RfhUd+8M
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689025; 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=rtCCiSYqzhqkGXHm58rEQmU6Y1e8RWcxAYmUU38jt1M=;
	b=RfhUd+8M3on1g0OrGEqSSrQWGl6ctFvr16HrqLVVYXFy6NLDYgVu2btE39M70kco8AfnB9
	fAId4RJyP9HHkRfTNVuqQ6Z+GfLQixkOyX59ra0pn3dk9GzYwAYhpBEGwvUTtZQ+VInW8p
	EgbpNvCLa2wKFve6adw9I+F/Wn2hgQ8=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 3/6] xen: add new domctl get_changed_domain
Date: Wed, 23 Oct 2024 15:10:02 +0200
Message-ID: <20241023131005.32144-4-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241023131005.32144-1-jgross@suse.com>
References: <20241023131005.32144-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 6520721F9E
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	ARC_NA(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	FROM_HAS_DN(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCPT_COUNT_SEVEN(0.00)[8];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCVD_COUNT_TWO(0.00)[2];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

Add a new domctl sub-function to get data of a domain having changed
state (this is needed by Xenstore).

The returned state just contains the domid, the domain unique id,
and some flags (existing, shutdown, dying).

In order to enable Xenstore stubdom being built for multiple Xen
versions, make this domctl stable.  For stable domctls the
interface_version is specific to the respective domctl op and it is an
in/out parameter: On input the caller is specifying the desired version
of the op, while on output the hypervisor will return the used version
(this will be at max the caller supplied version, but might be lower in
case the hypervisor doesn't support this version).

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V1:
- use a domctl subop for the new interface (Jan Beulich)
---
 tools/flask/policy/modules/dom0.te  |  2 +-
 xen/common/domain.c                 | 51 +++++++++++++++++++++++++++++
 xen/common/domctl.c                 | 19 ++++++++++-
 xen/common/event_channel.c          |  9 ++++-
 xen/include/public/domctl.h         | 33 +++++++++++++++++++
 xen/include/xen/event.h             |  6 ++++
 xen/include/xen/sched.h             |  2 ++
 xen/include/xsm/dummy.h             |  8 +++++
 xen/include/xsm/xsm.h               |  6 ++++
 xen/xsm/dummy.c                     |  1 +
 xen/xsm/flask/hooks.c               |  7 ++++
 xen/xsm/flask/policy/access_vectors |  2 ++
 12 files changed, 143 insertions(+), 3 deletions(-)

diff --git a/tools/flask/policy/modules/dom0.te b/tools/flask/policy/modules/dom0.te
index 16b8c9646d..6043c01b12 100644
--- a/tools/flask/policy/modules/dom0.te
+++ b/tools/flask/policy/modules/dom0.te
@@ -40,7 +40,7 @@ allow dom0_t dom0_t:domain {
 };
 allow dom0_t dom0_t:domain2 {
 	set_cpu_policy gettsc settsc setscheduler set_vnumainfo
-	get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy
+	get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy get_domain_state
 };
 allow dom0_t dom0_t:resource { add remove };
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index 61b7899cb8..e55c6f6c5e 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -154,6 +154,57 @@ void domain_reset_states(void)
     rcu_read_unlock(&domlist_read_lock);
 }
 
+static void set_domain_state_info(struct xen_domctl_get_domain_state *info,
+                                  const struct domain *d)
+{
+    info->state = XEN_DOMCTL_GETDOMSTATE_STATE_EXIST;
+    if ( d->is_shut_down )
+        info->state |= XEN_DOMCTL_GETDOMSTATE_STATE_SHUTDOWN;
+    if ( d->is_dying == DOMDYING_dead )
+        info->state |= XEN_DOMCTL_GETDOMSTATE_STATE_DYING;
+    info->unique_id = d->unique_id;
+}
+
+int get_domain_state(struct xen_domctl_get_domain_state *info, struct domain *d)
+{
+    unsigned int dom;
+
+    memset(info, 0, sizeof(*info));
+
+    if ( d )
+    {
+        set_domain_state_info(info, d);
+
+        return 0;
+    }
+
+    while ( (dom = find_first_bit(dom_state_changed, DOMID_MASK + 1)) <
+            DOMID_FIRST_RESERVED )
+    {
+        d = rcu_lock_domain_by_id(dom);
+
+        if ( test_and_clear_bit(dom, dom_state_changed) )
+        {
+            info->domid = dom;
+            if ( d )
+            {
+                set_domain_state_info(info, d);
+
+                rcu_unlock_domain(d);
+            }
+
+            return 0;
+        }
+
+        if ( d )
+        {
+            rcu_unlock_domain(d);
+        }
+    }
+
+    return -ENOENT;
+}
+
 static void __domain_finalise_shutdown(struct domain *d)
 {
     struct vcpu *v;
diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index ea16b75910..e030cce2ec 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -278,6 +278,11 @@ static struct vnuma_info *vnuma_init(const struct xen_domctl_vnuma *uinfo,
     return ERR_PTR(ret);
 }
 
+static bool is_stable_domctl(uint32_t cmd)
+{
+    return cmd == XEN_DOMCTL_get_domain_state;
+}
+
 long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
 {
     long ret = 0;
@@ -288,7 +293,8 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
     if ( copy_from_guest(op, u_domctl, 1) )
         return -EFAULT;
 
-    if ( op->interface_version != XEN_DOMCTL_INTERFACE_VERSION )
+    if ( op->interface_version != XEN_DOMCTL_INTERFACE_VERSION &&
+         !is_stable_domctl(op->cmd) )
         return -EACCES;
 
     switch ( op->cmd )
@@ -309,6 +315,7 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
         fallthrough;
     case XEN_DOMCTL_test_assign_device:
     case XEN_DOMCTL_vm_event_op:
+    case XEN_DOMCTL_get_domain_state:
         if ( op->domain == DOMID_INVALID )
         {
             d = NULL;
@@ -866,6 +873,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
                 __HYPERVISOR_domctl, "h", u_domctl);
         break;
 
+    case XEN_DOMCTL_get_domain_state:
+        ret = xsm_get_domain_state(XSM_HOOK, d);
+        if ( ret )
+            break;
+
+        copyback = 1;
+        op->interface_version = XEN_DOMCTL_GETDOMSTATE_VERS_MAX;
+        ret = get_domain_state(&op->u.get_domain_state, d);
+        break;
+
     default:
         ret = arch_do_domctl(op, d, u_domctl);
         break;
diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c
index 9b87d29968..13484b3e0d 100644
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -969,11 +969,18 @@ static struct domain *global_virq_handlers[NR_VIRQS] __read_mostly;
 
 static DEFINE_SPINLOCK(global_virq_handlers_lock);
 
+struct domain *get_global_virq_handler(uint32_t virq)
+{
+    ASSERT(virq_is_global(virq));
+
+    return global_virq_handlers[virq] ?: hardware_domain;
+}
+
 void send_global_virq(uint32_t virq)
 {
     ASSERT(virq_is_global(virq));
 
-    send_guest_global_virq(global_virq_handlers[virq] ?: hardware_domain, virq);
+    send_guest_global_virq(get_global_virq_handler(virq), virq);
 }
 
 int set_global_virq_handler(struct domain *d, uint32_t virq)
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 353f831e40..63607f7754 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -28,6 +28,7 @@
  * Pure additions (e.g. new sub-commands) or compatible interface changes
  * (e.g. adding semantics to 0-checked input fields or data to zeroed output
  * fields) don't require a change of the version.
+ * Stable ops are NOT covered by XEN_DOMCTL_INTERFACE_VERSION!
  *
  * Last version bump: Xen 4.19
  */
@@ -1236,7 +1237,37 @@ struct xen_domctl_dt_overlay {
 };
 #endif
 
+/*
+ * XEN_DOMCTL_get_domain_state (stable interface)
+ *
+ * Get state information of a domain.
+ *
+ * In case domain is DOMID_INVALID, return information about a domain having
+ * changed state and reset the state change indicator for that domain. This
+ * function is usable only by a domain having registered the VIRQ_DOM_EXC
+ * event (normally Xenstore).
+ *
+ * Supported interface versions: 0x00000000
+ */
+#define XEN_DOMCTL_GETDOMSTATE_VERS_MAX    0
+struct xen_domctl_get_domain_state {
+    domid_t domid;
+    uint16_t state;
+#define XEN_DOMCTL_GETDOMSTATE_STATE_EXIST     0x0001  /* Domain is existing. */
+#define XEN_DOMCTL_GETDOMSTATE_STATE_SHUTDOWN  0x0002  /* Shutdown finished. */
+#define XEN_DOMCTL_GETDOMSTATE_STATE_DYING     0x0004  /* Domain dying. */
+    uint32_t pad1;           /* Returned as 0. */
+    uint64_t unique_id;      /* Unique domain identifier. */
+    uint64_t pad2[6];        /* Returned as 0. */
+};
+
 struct xen_domctl {
+/*
+ * Stable domctl ops:
+ * interface_version is per cmd, hypervisor can support multiple versions
+ * and will return used version (at max caller supplied value) in
+ * interface_version on return.
+ */
     uint32_t cmd;
 #define XEN_DOMCTL_createdomain                   1
 #define XEN_DOMCTL_destroydomain                  2
@@ -1325,6 +1356,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_set_paging_mempool_size       86
 #define XEN_DOMCTL_dt_overlay                    87
 #define XEN_DOMCTL_gsi_permission                88
+#define XEN_DOMCTL_get_domain_state              89 /* stable interface */
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1391,6 +1423,7 @@ struct xen_domctl {
 #if defined(__arm__) || defined(__aarch64__)
         struct xen_domctl_dt_overlay        dt_overlay;
 #endif
+        struct xen_domctl_get_domain_state  get_domain_state;
         uint8_t                             pad[128];
     } u;
 };
diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h
index 48b79f3d62..f380668609 100644
--- a/xen/include/xen/event.h
+++ b/xen/include/xen/event.h
@@ -43,6 +43,12 @@ void send_guest_global_virq(struct domain *d, uint32_t virq);
  */
 int set_global_virq_handler(struct domain *d, uint32_t virq);
 
+/*
+ * get_global_virq_handler: Get domain handling a global virq.
+ *  @virq:     Virtual IRQ number (VIRQ_*), must be global
+ */
+struct domain *get_global_virq_handler(uint32_t virq);
+
 /*
  * send_guest_pirq:
  *  @d:        Domain to which physical IRQ should be sent
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 667863263d..eb256de9d5 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -801,6 +801,8 @@ void domain_resume(struct domain *d);
 int domain_soft_reset(struct domain *d, bool resuming);
 
 void domain_reset_states(void);
+int get_domain_state(struct xen_domctl_get_domain_state *info,
+                     struct domain *d);
 
 int vcpu_start_shutdown_deferral(struct vcpu *v);
 void vcpu_end_shutdown_deferral(struct vcpu *v);
diff --git a/xen/include/xsm/dummy.h b/xen/include/xsm/dummy.h
index 7956f27a29..eaf5b05093 100644
--- a/xen/include/xsm/dummy.h
+++ b/xen/include/xsm/dummy.h
@@ -173,6 +173,7 @@ static XSM_INLINE int cf_check xsm_domctl(
     case XEN_DOMCTL_unbind_pt_irq:
         return xsm_default_action(XSM_DM_PRIV, current->domain, d);
     case XEN_DOMCTL_getdomaininfo:
+    case XEN_DOMCTL_get_domain_state:
         return xsm_default_action(XSM_XS_PRIV, current->domain, d);
     default:
         return xsm_default_action(XSM_PRIV, current->domain, d);
@@ -815,6 +816,13 @@ static XSM_INLINE int cf_check xsm_argo_send(
 
 #endif /* CONFIG_ARGO */
 
+static XSM_INLINE int cf_check xsm_get_domain_state(
+    XSM_DEFAULT_ARG struct domain *d)
+{
+    XSM_ASSERT_ACTION(XSM_HOOK);
+    return xsm_default_action(action, current->domain, d);
+}
+
 #include <public/version.h>
 static XSM_INLINE int cf_check xsm_xen_version(XSM_DEFAULT_ARG uint32_t op)
 {
diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
index 627c0d2731..933b3889c9 100644
--- a/xen/include/xsm/xsm.h
+++ b/xen/include/xsm/xsm.h
@@ -201,6 +201,7 @@ struct xsm_ops {
     int (*argo_register_any_source)(const struct domain *d);
     int (*argo_send)(const struct domain *d, const struct domain *t);
 #endif
+    int (*get_domain_state)(struct domain *d);
 };
 
 #ifdef CONFIG_XSM
@@ -775,6 +776,11 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
 
 #endif /* CONFIG_ARGO */
 
+static inline int xsm_get_domain_state(struct domain *d)
+{
+    return alternative_call(xsm_ops.get_domain_state, d);
+}
+
 #endif /* XSM_NO_WRAPPERS */
 
 #ifdef CONFIG_MULTIBOOT
diff --git a/xen/xsm/dummy.c b/xen/xsm/dummy.c
index e6ffa948f7..ce6fbdc6c5 100644
--- a/xen/xsm/dummy.c
+++ b/xen/xsm/dummy.c
@@ -148,6 +148,7 @@ static const struct xsm_ops __initconst_cf_clobber dummy_ops = {
     .argo_register_any_source      = xsm_argo_register_any_source,
     .argo_send                     = xsm_argo_send,
 #endif
+    .get_domain_state              = xsm_get_domain_state,
 };
 
 void __init xsm_fixup_ops(struct xsm_ops *ops)
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index dfa23738cd..b1bad7e420 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -686,6 +686,7 @@ static int cf_check flask_domctl(struct domain *d, unsigned int cmd,
     case XEN_DOMCTL_memory_mapping:
     case XEN_DOMCTL_set_target:
     case XEN_DOMCTL_vm_event_op:
+    case XEN_DOMCTL_get_domain_state:
 
     /* These have individual XSM hooks (arch/../domctl.c) */
     case XEN_DOMCTL_bind_pt_irq:
@@ -1853,6 +1854,11 @@ static int cf_check flask_argo_send(
 
 #endif
 
+static int cf_check flask_get_domain_state(struct domain *d)
+{
+    return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__GET_DOMAIN_STATE);
+}
+
 static const struct xsm_ops __initconst_cf_clobber flask_ops = {
     .set_system_active = flask_set_system_active,
     .security_domaininfo = flask_security_domaininfo,
@@ -1989,6 +1995,7 @@ static const struct xsm_ops __initconst_cf_clobber flask_ops = {
     .argo_register_any_source = flask_argo_register_any_source,
     .argo_send = flask_argo_send,
 #endif
+    .get_domain_state = flask_get_domain_state,
 };
 
 const struct xsm_ops *__init flask_init(
diff --git a/xen/xsm/flask/policy/access_vectors b/xen/xsm/flask/policy/access_vectors
index a35e3d4c51..c9a8eeda4e 100644
--- a/xen/xsm/flask/policy/access_vectors
+++ b/xen/xsm/flask/policy/access_vectors
@@ -251,6 +251,8 @@ class domain2
     resource_map
 # XEN_DOMCTL_get_cpu_policy
     get_cpu_policy
+# XEN_DOMCTL_get_domain_state
+    get_domain_state
 }
 
 # Similar to class domain, but primarily contains domctls related to HVM domains
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:10:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:10:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824609.1238789 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3b8E-0007cW-P3; Wed, 23 Oct 2024 13:10:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824609.1238789; Wed, 23 Oct 2024 13: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 1t3b8E-0007cN-Lp; Wed, 23 Oct 2024 13:10:34 +0000
Received: by outflank-mailman (input) for mailman id 824609;
 Wed, 23 Oct 2024 13:10: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b8D-0006Ra-AA
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10: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 2e4a88f7-9140-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:10:31 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 ECDB321F9E;
 Wed, 23 Oct 2024 13:10:30 +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 C797213A63;
 Wed, 23 Oct 2024 13:10:30 +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 sOZNL8b1GGfcdwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13: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>
X-Inumbo-ID: 2e4a88f7-9140-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689031; 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=7x+KJfCSsvOCZOfslmW0TQxvrIiaIaj2/srt/KQEvU8=;
	b=MFOxjtTULwA6Y5YJQTM/E5+0Pzp1nGUNM83lA/Evz3H9ir7J4zu7R1DhNLukfJhXfagKtl
	UuOk9WmlQBTNGrC71OLbWW5lB0mLm6ITOO8o7j1WpjUVVU6LV5+fIZAF5FPW6YBU/WvGQy
	ECDA7BPz0mSs7dD9ENAfzx5nsZ25Kr4=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689030; 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=7x+KJfCSsvOCZOfslmW0TQxvrIiaIaj2/srt/KQEvU8=;
	b=rFiBDNcb2kc9YSQINMEr8u3HC1Dx2UjDEul1Bl71l6MsDrQZks93L8DLvzUa3jJHJfDW6F
	P98y1pTrFVY9KLxBdJ5QxihOjvmAkflZ9GpbLWJ1t+zGo8gB0w+JKD/sFeUPqlq6w/kov5
	x0n0Q1Ai8Am8XPKMRdw99ENFJ1qVm9M=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 4/6] tools/libs: add a new libxenmanage library
Date: Wed, 23 Oct 2024 15:10:03 +0200
Message-ID: <20241023131005.32144-5-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241023131005.32144-1-jgross@suse.com>
References: <20241023131005.32144-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[3];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

In order to have a stable interface in user land for using stable
domctl and possibly later sysctl interfaces, add a new library
libxenmanage.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V1:
- new patch
---
 tools/include/xenmanage.h          |  98 +++++++++++++++++
 tools/libs/Makefile                |   1 +
 tools/libs/manage/Makefile         |  10 ++
 tools/libs/manage/Makefile.common  |   1 +
 tools/libs/manage/core.c           | 170 +++++++++++++++++++++++++++++
 tools/libs/manage/libxenmanage.map |   8 ++
 tools/libs/uselibs.mk              |   2 +
 7 files changed, 290 insertions(+)
 create mode 100644 tools/include/xenmanage.h
 create mode 100644 tools/libs/manage/Makefile
 create mode 100644 tools/libs/manage/Makefile.common
 create mode 100644 tools/libs/manage/core.c
 create mode 100644 tools/libs/manage/libxenmanage.map

diff --git a/tools/include/xenmanage.h b/tools/include/xenmanage.h
new file mode 100644
index 0000000000..2e6c3dedaa
--- /dev/null
+++ b/tools/include/xenmanage.h
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2024 SUSE Software Solutions Germany GmbH
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef XENMANAGE_H
+#define XENMANAGE_H
+
+#include <stdint.h>
+
+/* Callers who don't care don't need to #include <xentoollog.h> */
+struct xentoollog_logger;
+
+typedef struct xenmanage_handle xenmanage_handle;
+
+/*
+ * Open libxenmanage.
+ *
+ * Get a handle of the xenmanage library. The handle is required for all
+ * further operations of the library.
+ * Parameters:
+ *   logger:     Logging function to use. If NULL logging is done to stderr.
+ *   open_flags: Only 0 supported.
+ * Return value: Handle or NULL if error.
+ */
+xenmanage_handle *xenmanage_open(struct xentoollog_logger *logger,
+                                 unsigned int open_flags);
+
+/*
+ * Close libxenmanage.
+ *
+ * Return a handle of the xenmanage library.
+ * Parameters:
+ *    hdl: Handle obtained by xenmanage_open().
+ * Return value: always 0.
+ */
+int xenmanage_close(xenmanage_handle *hdl);
+
+#define XENMANAGE_GETDOMSTATE_STATE_EXIST     0x0001  /* Domain is existing. */
+#define XENMANAGE_GETDOMSTATE_STATE_SHUTDOWN  0x0002  /* Shutdown finished. */
+#define XENMANAGE_GETDOMSTATE_STATE_DYING     0x0004  /* Domain dying. */
+
+/*
+ * Return state information of an existing domain.
+ *
+ * Returns the domain state and unique id of the given domain.
+ * Parameters:
+ *   hdl:       handle returned by xenmanage_open()
+ *   domid:     domain id of the domain to get the information for
+ *   state:     where to store the state (XENMANAGE_GETDOMSTATE_STATE_ flags,
+ *              nothing stored if NULL)
+ *   unique_id: where to store the unique id of the domain (nothing stored if
+ *              NULL)
+ * Return value: 0 if information was stored, -1 else (errno is set)
+ */
+int xenmanage_get_domain_info(xenmanage_handle *hdl, unsigned int domid,
+                              unsigned int *state, uint64_t *unique_id);
+
+/*
+ * Return information of a domain having changed state recently.
+ *
+ * Returns the domain id, state and unique id of a domain having changed
+ * state (any of the state bits was modified) since the last time information
+ * for that domain was returned by this function. Only usable by callers who
+ * have registered the VIRQ_DOM_EXC event (normally Xenstore).
+ * Parameters:
+ *   hdl:       handle returned by xenmanage_open()
+ *   domid:     where to store the domid of the domain (not NULL)
+ *   state:     where to store the state (XENMANAGE_GETDOMSTATE_STATE_ flags,
+ *              nothing stored if NULL)
+ *   unique_id: where to store the unique id of the domain (nothing stored if
+ *              NULL)
+ * Return value: 0 if information was stored, -1 else (errno is set)
+ */
+int xenmanage_get_changed_domain(xenmanage_handle *hdl, unsigned int *domid,
+                                 unsigned int *state, uint64_t *unique_id);
+#endif /* XENMANAGE_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/tools/libs/Makefile b/tools/libs/Makefile
index 1afcd12e2b..d39516c1b3 100644
--- a/tools/libs/Makefile
+++ b/tools/libs/Makefile
@@ -12,6 +12,7 @@ SUBDIRS-y += devicemodel
 SUBDIRS-y += ctrl
 SUBDIRS-y += guest
 SUBDIRS-y += hypfs
+SUBDIRS-y += manage
 SUBDIRS-y += store
 SUBDIRS-y += stat
 SUBDIRS-$(CONFIG_Linux) += vchan
diff --git a/tools/libs/manage/Makefile b/tools/libs/manage/Makefile
new file mode 100644
index 0000000000..dbfe70d259
--- /dev/null
+++ b/tools/libs/manage/Makefile
@@ -0,0 +1,10 @@
+XEN_ROOT = $(CURDIR)/../../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+MAJOR    = 1
+MINOR    = 0
+version-script := libxenmanage.map
+
+include Makefile.common
+
+include $(XEN_ROOT)/tools/libs/libs.mk
diff --git a/tools/libs/manage/Makefile.common b/tools/libs/manage/Makefile.common
new file mode 100644
index 0000000000..d9efe3462e
--- /dev/null
+++ b/tools/libs/manage/Makefile.common
@@ -0,0 +1 @@
+OBJS-y  += core.o
diff --git a/tools/libs/manage/core.c b/tools/libs/manage/core.c
new file mode 100644
index 0000000000..0c9199f829
--- /dev/null
+++ b/tools/libs/manage/core.c
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) 2024 SUSE Software Solutions Germany GmbH
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#define __XEN_TOOLS__ 1
+
+#define _GNU_SOURCE
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <xentoollog.h>
+#include <xenmanage.h>
+#include <xencall.h>
+#include <xentoolcore_internal.h>
+
+#include <xen/xen.h>
+#include <xen/domctl.h>
+
+struct xenmanage_handle {
+    xentoollog_logger *logger, *logger_tofree;
+    unsigned int flags;
+    xencall_handle *xcall;
+};
+
+xenmanage_handle *xenmanage_open(xentoollog_logger *logger,
+                                 unsigned open_flags)
+{
+    xenmanage_handle *hdl = calloc(1, sizeof(*hdl));
+    int saved_errno;
+
+    if ( !hdl )
+        return NULL;
+
+    if ( open_flags )
+    {
+        errno = EINVAL;
+        goto err;
+    }
+
+    hdl->flags = open_flags;
+    hdl->logger = logger;
+    hdl->logger_tofree = NULL;
+
+    if ( !hdl->logger )
+    {
+        hdl->logger = hdl->logger_tofree =
+            (xentoollog_logger *)
+            xtl_createlogger_stdiostream(stderr, XTL_PROGRESS, 0);
+        if ( !hdl->logger )
+            goto err;
+    }
+
+    hdl->xcall = xencall_open(hdl->logger, 0);
+    if ( !hdl->xcall )
+        goto err;
+
+    return hdl;
+
+err:
+    saved_errno = errno;
+    xenmanage_close(hdl);
+    errno = saved_errno;
+
+    return NULL;
+}
+
+int xenmanage_close(xenmanage_handle *hdl)
+{
+    if ( !hdl )
+        return 0;
+
+    xencall_close(hdl->xcall);
+    xtl_logger_destroy(hdl->logger_tofree);
+    free(hdl);
+    return 0;
+}
+
+static int xenmanage_do_domctl_get_domain_state(xenmanage_handle *hdl,
+                                                unsigned int domid_in,
+                                                unsigned int *domid_out,
+                                                unsigned int *state,
+                                                uint64_t *unique_id)
+{
+    struct xen_domctl *buf;
+    struct xen_domctl_get_domain_state *st;
+    int saved_errno;
+    int ret;
+
+    buf = xencall_alloc_buffer(hdl->xcall, sizeof(*buf));
+    if ( !buf )
+    {
+        errno = ENOMEM;
+        return -1;
+    }
+
+    memset(buf, 0, sizeof(*buf));
+
+    buf->cmd = XEN_DOMCTL_get_domain_state;
+    buf->interface_version = XEN_DOMCTL_GETDOMSTATE_VERS_MAX;
+    buf->domain = domid_in;
+
+    ret = xencall1(hdl->xcall, __HYPERVISOR_domctl, (unsigned long)buf);
+    saved_errno = errno;
+    if ( !ret )
+    {
+        st = &buf->u.get_domain_state;
+
+        if ( domid_out )
+            *domid_out = st->domid;
+        if ( state )
+        {
+            *state = 0;
+            if ( st->state & XEN_DOMCTL_GETDOMSTATE_STATE_EXIST )
+                *state |= XENMANAGE_GETDOMSTATE_STATE_EXIST;
+            if ( st->state & XEN_DOMCTL_GETDOMSTATE_STATE_SHUTDOWN )
+                *state |= XENMANAGE_GETDOMSTATE_STATE_SHUTDOWN;
+            if ( st->state & XEN_DOMCTL_GETDOMSTATE_STATE_DYING )
+                *state |= XENMANAGE_GETDOMSTATE_STATE_DYING;
+        }
+        if ( unique_id )
+            *unique_id = st->unique_id;
+    }
+
+    xencall_free_buffer(hdl->xcall, buf);
+
+    errno = saved_errno;
+
+    return ret;
+}
+
+int xenmanage_get_domain_info(xenmanage_handle *hdl, unsigned int domid,
+                              unsigned int *state, uint64_t *unique_id)
+{
+    if ( !hdl || domid >= DOMID_FIRST_RESERVED )
+    {
+        errno = EINVAL;
+        return -1;
+    }
+
+    return xenmanage_do_domctl_get_domain_state(hdl, domid, NULL, state,
+                                                unique_id);
+}
+
+int xenmanage_get_changed_domain(xenmanage_handle *hdl, unsigned int *domid,
+                                 unsigned int *state, uint64_t *unique_id)
+{
+    if ( !hdl || !domid )
+    {
+        errno = EINVAL;
+        return -1;
+    }
+
+    return xenmanage_do_domctl_get_domain_state(hdl, DOMID_INVALID, domid,
+                                                state, unique_id);
+}
diff --git a/tools/libs/manage/libxenmanage.map b/tools/libs/manage/libxenmanage.map
new file mode 100644
index 0000000000..65ec76f882
--- /dev/null
+++ b/tools/libs/manage/libxenmanage.map
@@ -0,0 +1,8 @@
+VERS_1.0 {
+	global:
+		xenmanage_open;
+		xenmanage_close;
+		xenmanage_get_domain_info;
+		xenmanage_get_changed_domain;
+	local: *; /* Do not expose anything by default */
+};
diff --git a/tools/libs/uselibs.mk b/tools/libs/uselibs.mk
index 7aa8d83e06..c0a234cfec 100644
--- a/tools/libs/uselibs.mk
+++ b/tools/libs/uselibs.mk
@@ -16,6 +16,8 @@ LIBS_LIBS += devicemodel
 USELIBS_devicemodel := toollog toolcore call
 LIBS_LIBS += hypfs
 USELIBS_hypfs := toollog toolcore call
+LIBS_LIBS += manage
+USELIBS_manage := toollog toolcore call
 LIBS_LIBS += ctrl
 USELIBS_ctrl := toollog call evtchn gnttab foreignmemory devicemodel
 LIBS_LIBS += guest
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:10:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:10:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824612.1238799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3b8J-00080z-0N; Wed, 23 Oct 2024 13:10:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824612.1238799; Wed, 23 Oct 2024 13:10: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 1t3b8I-00080k-TR; Wed, 23 Oct 2024 13:10:38 +0000
Received: by outflank-mailman (input) for mailman id 824612;
 Wed, 23 Oct 2024 13:10: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b8I-0006ft-0s
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10:38 +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 31a3bb0e-9140-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 15:10:37 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 8FE5921FC5;
 Wed, 23 Oct 2024 13:10:36 +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 611E613A63;
 Wed, 23 Oct 2024 13:10:36 +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 AYlGFsz1GGfwdwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13:10: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: 31a3bb0e-9140-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689036; 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=EmT6zgQqGEJfhsBPK+vPVTMx6Z6hoNe7wMeQORVuQpA=;
	b=Vi722Rtxr7buOD+/TexZ5zPitqdBE+rsc5ZVeotspxsDtU4knClg79iVkvPQuXfQYuDO40
	DuFUmaSX7sur95zY4ix4ussKfTE9iukhqqyuab3Bff0fC3Jhsf85LV9ZmV5vKE1nia+wDM
	cqUFgNiDJL+WJSjJIrmCzOmHTBgiYEs=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689036; 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=EmT6zgQqGEJfhsBPK+vPVTMx6Z6hoNe7wMeQORVuQpA=;
	b=Vi722Rtxr7buOD+/TexZ5zPitqdBE+rsc5ZVeotspxsDtU4knClg79iVkvPQuXfQYuDO40
	DuFUmaSX7sur95zY4ix4ussKfTE9iukhqqyuab3Bff0fC3Jhsf85LV9ZmV5vKE1nia+wDM
	cqUFgNiDJL+WJSjJIrmCzOmHTBgiYEs=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH 5/6] tools: add a dedicated header file for barrier definitions
Date: Wed, 23 Oct 2024 15:10:04 +0200
Message-ID: <20241023131005.32144-6-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241023131005.32144-1-jgross@suse.com>
References: <20241023131005.32144-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_THREE(0.00)[3];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -2.80
X-Spam-Flag: NO

Instead of having to include xenctrl.h for getting definitions of cpu
barriers, add a dedicated header for that purpose.

Switch the xen-9pfsd daemon to use the new header instead of xenctrl.h.

This is in preparation of making Xenstore independent from libxenctrl.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V1:
- new patch
---
 tools/9pfsd/io.c            |  5 +++-
 tools/include/xen-barrier.h | 51 +++++++++++++++++++++++++++++++++++++
 tools/include/xenctrl.h     | 28 +-------------------
 tools/libs/ctrl/Makefile    |  2 +-
 4 files changed, 57 insertions(+), 29 deletions(-)
 create mode 100644 tools/include/xen-barrier.h

diff --git a/tools/9pfsd/io.c b/tools/9pfsd/io.c
index 468e0241f5..14cfcaf568 100644
--- a/tools/9pfsd/io.c
+++ b/tools/9pfsd/io.c
@@ -13,15 +13,18 @@
 
 #include <assert.h>
 #include <errno.h>
+#include <stdarg.h>
 #include <stdbool.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <syslog.h>
+#include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <dirent.h>
 #include <fcntl.h>
-#include <xenctrl.h>           /* For cpu barriers. */
+#include <xen-barrier.h>
 #include <xen-tools/common-macros.h>
 
 #include "xen-9pfsd.h"
diff --git a/tools/include/xen-barrier.h b/tools/include/xen-barrier.h
new file mode 100644
index 0000000000..62036f528b
--- /dev/null
+++ b/tools/include/xen-barrier.h
@@ -0,0 +1,51 @@
+/******************************************************************************
+ * xen-barrier.h
+ *
+ * Definition of CPU barriers, part of libxenctrl.
+ *
+ * Copyright (c) 2003-2004, K A Fraser.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef XENBARRIER_H
+#define XENBARRIER_H
+
+/*
+ *  DEFINITIONS FOR CPU BARRIERS
+ */
+
+#define xen_barrier() asm volatile ( "" : : : "memory")
+
+#if defined(__i386__)
+#define xen_mb()  asm volatile ( "lock addl $0, -4(%%esp)" ::: "memory" )
+#define xen_rmb() xen_barrier()
+#define xen_wmb() xen_barrier()
+#elif defined(__x86_64__)
+#define xen_mb()  asm volatile ( "lock addl $0, -32(%%rsp)" ::: "memory" )
+#define xen_rmb() xen_barrier()
+#define xen_wmb() xen_barrier()
+#elif defined(__arm__)
+#define xen_mb()   asm volatile ("dmb" : : : "memory")
+#define xen_rmb()  asm volatile ("dmb" : : : "memory")
+#define xen_wmb()  asm volatile ("dmb" : : : "memory")
+#elif defined(__aarch64__)
+#define xen_mb()   asm volatile ("dmb sy" : : : "memory")
+#define xen_rmb()  asm volatile ("dmb sy" : : : "memory")
+#define xen_wmb()  asm volatile ("dmb sy" : : : "memory")
+#else
+#error "Define barriers"
+#endif
+
+#endif /* XENBARRIER_H */
diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index 29617585c5..ea57e9dbb9 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -48,6 +48,7 @@
 #include <xen/platform.h>
 
 #include "xentoollog.h"
+#include "xen-barrier.h"
 
 #if defined(__i386__) || defined(__x86_64__)
 #include <xen/foreign/x86_32.h>
@@ -61,33 +62,6 @@
 
 #define INVALID_MFN  (~0UL)
 
-/*
- *  DEFINITIONS FOR CPU BARRIERS
- */
-
-#define xen_barrier() asm volatile ( "" : : : "memory")
-
-#if defined(__i386__)
-#define xen_mb()  asm volatile ( "lock addl $0, -4(%%esp)" ::: "memory" )
-#define xen_rmb() xen_barrier()
-#define xen_wmb() xen_barrier()
-#elif defined(__x86_64__)
-#define xen_mb()  asm volatile ( "lock addl $0, -32(%%rsp)" ::: "memory" )
-#define xen_rmb() xen_barrier()
-#define xen_wmb() xen_barrier()
-#elif defined(__arm__)
-#define xen_mb()   asm volatile ("dmb" : : : "memory")
-#define xen_rmb()  asm volatile ("dmb" : : : "memory")
-#define xen_wmb()  asm volatile ("dmb" : : : "memory")
-#elif defined(__aarch64__)
-#define xen_mb()   asm volatile ("dmb sy" : : : "memory")
-#define xen_rmb()  asm volatile ("dmb sy" : : : "memory")
-#define xen_wmb()  asm volatile ("dmb sy" : : : "memory")
-#else
-#error "Define barriers"
-#endif
-
-
 #define XENCTRL_HAS_XC_INTERFACE 1
 /* In Xen 4.0 and earlier, xc_interface_open and xc_evtchn_open would
  * both return ints being the file descriptor.  In 4.1 and later, they
diff --git a/tools/libs/ctrl/Makefile b/tools/libs/ctrl/Makefile
index 5fe0bfad0c..acce8639d3 100644
--- a/tools/libs/ctrl/Makefile
+++ b/tools/libs/ctrl/Makefile
@@ -3,7 +3,7 @@ include $(XEN_ROOT)/tools/Rules.mk
 
 include Makefile.common
 
-LIBHEADER := xenctrl.h xenctrl_compat.h
+LIBHEADER := xenctrl.h xenctrl_compat.h xen-barrier.h
 PKG_CONFIG_FILE := xencontrol.pc
 PKG_CONFIG_NAME := Xencontrol
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:10:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:10:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824615.1238809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3b8Q-0000AO-8B; Wed, 23 Oct 2024 13:10:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824615.1238809; Wed, 23 Oct 2024 13: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 1t3b8Q-0000AB-5P; Wed, 23 Oct 2024 13:10:46 +0000
Received: by outflank-mailman (input) for mailman id 824615;
 Wed, 23 Oct 2024 13:10: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b8O-0006Ra-It
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10:44 +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 34f4c3fd-9140-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:10:42 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 26F581FDA3;
 Wed, 23 Oct 2024 13:10:42 +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 E969713A63;
 Wed, 23 Oct 2024 13:10:41 +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 J8SFN9H1GGf7dwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13:10: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: 34f4c3fd-9140-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689042; 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=E987LsdlIgzKQbdEFTgOeCDvrDTXQ5jG9XVD9+qlAzk=;
	b=JTVYA1wSacsKybqp0fWSSRubXG1XKGyhEDETDfw3xbdSxZXFlQ4EemOFZnEoZZHeOhwmI5
	Z4BXftGSJIGvNBwPENvX4CUv/TR3TSyVGO7qqUBtzgbsHSKA+oU+drHQm8Qb3TeiDEAC+Y
	4cpUTLm+65lTGl5F0zW27vwSvD9CXMQ=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689042; 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=E987LsdlIgzKQbdEFTgOeCDvrDTXQ5jG9XVD9+qlAzk=;
	b=JTVYA1wSacsKybqp0fWSSRubXG1XKGyhEDETDfw3xbdSxZXFlQ4EemOFZnEoZZHeOhwmI5
	Z4BXftGSJIGvNBwPENvX4CUv/TR3TSyVGO7qqUBtzgbsHSKA+oU+drHQm8Qb3TeiDEAC+Y
	4cpUTLm+65lTGl5F0zW27vwSvD9CXMQ=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Julien Grall <julien@xen.org>
Subject: [PATCH 6/6] tools/xenstored: use new stable interface instead of libxenctrl
Date: Wed, 23 Oct 2024 15:10:05 +0200
Message-ID: <20241023131005.32144-7-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241023131005.32144-1-jgross@suse.com>
References: <20241023131005.32144-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Replace the current use of the unstable xc_domain_getinfo_single()
interface with the stable domctl XEN_DOMCTL_get_domain_state call
via the new libxenmanage library.

This will remove the last usage of libxenctrl by Xenstore, so update
the library dependencies accordingly.

For now only do a direct replacement without using the functionality
of obtaining information about domains having changed the state.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V1:
- use library instead of direct hypercall, only replace current
  libxenctrl use case

Please note that this patch can be committed only after the related
Mini-OS patch "config: add support for libxenmanage" has gone in AND
the Mini-OS commit-id has been updated in Config.mk accordingly!
---
 stubdom/Makefile                |  8 ++---
 stubdom/mini-os.mk              |  1 +
 tools/xenstored/Makefile        |  2 +-
 tools/xenstored/Makefile.common |  2 +-
 tools/xenstored/core.h          |  1 -
 tools/xenstored/domain.c        | 52 ++++++++++++---------------------
 tools/xenstored/lu.c            |  1 +
 tools/xenstored/lu_daemon.c     |  1 +
 8 files changed, 28 insertions(+), 40 deletions(-)

diff --git a/stubdom/Makefile b/stubdom/Makefile
index 2a81af28a1..ca800b243c 100644
--- a/stubdom/Makefile
+++ b/stubdom/Makefile
@@ -307,7 +307,7 @@ endif
 # libraries under tools/libs
 #######
 
-STUB_LIBS := toolcore toollog evtchn gnttab call foreignmemory devicemodel ctrl guest
+STUB_LIBS := toolcore toollog evtchn gnttab call foreignmemory devicemodel ctrl guest manage
 
 LIBDEP_guest := cross-zlib
 
@@ -465,7 +465,7 @@ grub: cross-polarssl grub-upstream $(CROSS_ROOT) grub-$(XEN_TARGET_ARCH)-minios-
 # xenstore
 ##########
 
-xenstore-minios.gen.cfg: APP_LIBS = gnttab evtchn toollog ctrl
+xenstore-minios.gen.cfg: APP_LIBS = gnttab evtchn toollog manage
 xenstore-minios.gen.cfg: xenstore-minios.cfg Makefile
 	$(GEN_config) >$@
 
@@ -480,7 +480,7 @@ xenstore: $(CROSS_ROOT) xenstore-minios-config.mk
 # xenstorepvh
 #############
 
-xenstorepvh-minios.gen.cfg: APP_LIBS = gnttab evtchn toollog ctrl
+xenstorepvh-minios.gen.cfg: APP_LIBS = gnttab evtchn toollog manage
 xenstorepvh-minios.gen.cfg: xenstorepvh-minios.cfg Makefile
 	$(GEN_config) >$@
 
@@ -523,7 +523,7 @@ else
 pv-grub-if-enabled:
 endif
 
-XENSTORE_DEPS := libxenevtchn libxengnttab libxenctrl
+XENSTORE_DEPS := libxenevtchn libxengnttab libxenmanage
 
 .PHONY: xenstore-stubdom
 xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore $(XENSTORE_DEPS) xenstore
diff --git a/stubdom/mini-os.mk b/stubdom/mini-os.mk
index 7e4968e026..be32302f9e 100644
--- a/stubdom/mini-os.mk
+++ b/stubdom/mini-os.mk
@@ -13,5 +13,6 @@ GNTTAB_PATH = $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/gnttab
 CALL_PATH = $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/call
 FOREIGNMEMORY_PATH = $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/foreignmemory
 DEVICEMODEL_PATH = $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/devicemodel
+MANAGE_PATH = $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/manage
 CTRL_PATH = $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/ctrl
 GUEST_PATH = $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/guest
diff --git a/tools/xenstored/Makefile b/tools/xenstored/Makefile
index 09adfe1d50..81c42838e0 100644
--- a/tools/xenstored/Makefile
+++ b/tools/xenstored/Makefile
@@ -5,7 +5,7 @@ include Makefile.common
 
 xenstored: LDLIBS += $(LDLIBS_libxenevtchn)
 xenstored: LDLIBS += $(LDLIBS_libxengnttab)
-xenstored: LDLIBS += $(LDLIBS_libxenctrl)
+xenstored: LDLIBS += $(LDLIBS_libxenmanage)
 xenstored: LDLIBS += -lrt
 xenstored: LDLIBS += $(SOCKET_LIBS)
 
diff --git a/tools/xenstored/Makefile.common b/tools/xenstored/Makefile.common
index 27fdb3b49e..271134fcc1 100644
--- a/tools/xenstored/Makefile.common
+++ b/tools/xenstored/Makefile.common
@@ -12,7 +12,7 @@ XENSTORED_OBJS-$(CONFIG_MiniOS) += minios.o lu_minios.o
 # Include configure output (config.h)
 CFLAGS += -include $(XEN_ROOT)/tools/config.h
 CFLAGS += $(CFLAGS_libxenevtchn)
-CFLAGS += $(CFLAGS_libxenctrl)
+CFLAGS += $(CFLAGS_libxenmanage)
 CFLAGS += $(CFLAGS_libxentoolcore)
 
 $(XENSTORED_OBJS-y): CFLAGS += $(CFLAGS_libxengnttab)
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index e58779e88c..632886cecf 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -19,7 +19,6 @@
 #ifndef _XENSTORED_CORE_H
 #define _XENSTORED_CORE_H
 
-#include <xenctrl.h>
 #include <xengnttab.h>
 
 #include <sys/types.h>
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 64c8fd0cc3..c0264d9477 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -34,14 +34,15 @@
 #include "control.h"
 
 #include <xenevtchn.h>
-#include <xenctrl.h>
+#include <xenmanage.h>
+#include <xen-barrier.h>
 #include <xen/grant_table.h>
 
 #ifdef __MINIOS__
 #include <mini-os/xenbus.h>
 #endif
 
-static xc_interface **xc_handle;
+static xenmanage_handle *xm_handle;
 xengnttab_handle **xgt_handle;
 static evtchn_port_t virq_port;
 
@@ -619,32 +620,28 @@ static int destroy_domain(void *_domain)
 	return 0;
 }
 
-static bool get_domain_info(unsigned int domid, xc_domaininfo_t *dominfo)
-{
-	return xc_domain_getinfo_single(*xc_handle, domid, dominfo) == 0;
-}
-
 static int check_domain(const void *k, void *v, void *arg)
 {
-	xc_domaininfo_t dominfo;
+	unsigned int state;
 	struct connection *conn;
-	bool dom_valid;
+	int dom_invalid;
 	struct domain *domain = v;
 	bool *notify = arg;
 
-	dom_valid = get_domain_info(domain->domid, &dominfo);
+	dom_invalid = xenmanage_get_domain_info(xm_handle, domain->domid,
+						&state, NULL);
 	if (!domain->introduced) {
-		if (!dom_valid)
+		if (dom_invalid)
 			talloc_free(domain);
 		return 0;
 	}
-	if (dom_valid) {
-		if ((dominfo.flags & XEN_DOMINF_shutdown)
+	if (!dom_invalid) {
+		if ((state & XENMANAGE_GETDOMSTATE_STATE_SHUTDOWN)
 		    && !domain->shutdown) {
 			domain->shutdown = true;
 			*notify = true;
 		}
-		if (!(dominfo.flags & XEN_DOMINF_dying))
+		if (!(state & XENMANAGE_GETDOMSTATE_STATE_DYING))
 			return 0;
 	}
 	if (domain->conn) {
@@ -786,10 +783,9 @@ static struct domain *find_or_alloc_domain(const void *ctx, unsigned int domid)
 static struct domain *find_or_alloc_existing_domain(unsigned int domid)
 {
 	struct domain *domain;
-	xc_domaininfo_t dominfo;
 
 	domain = find_domain_struct(domid);
-	if (!domain && get_domain_info(domid, &dominfo))
+	if (!domain && !xenmanage_get_domain_info(xm_handle, domid, NULL, NULL))
 		domain = alloc_domain(NULL, domid);
 
 	return domain;
@@ -1187,12 +1183,6 @@ int do_reset_watches(const void *ctx, struct connection *conn,
 	return 0;
 }
 
-static int close_xc_handle(void *_handle)
-{
-	xc_interface_close(*(xc_interface**)_handle);
-	return 0;
-}
-
 static int close_xgt_handle(void *_handle)
 {
 	xengnttab_close(*(xengnttab_handle **)_handle);
@@ -1258,15 +1248,9 @@ void domain_early_init(void)
 	if (!domhash)
 		barf_perror("Failed to allocate domain hashtable");
 
-	xc_handle = talloc(talloc_autofree_context(), xc_interface*);
-	if (!xc_handle)
-		barf_perror("Failed to allocate domain handle");
-
-	*xc_handle = xc_interface_open(0,0,0);
-	if (!*xc_handle)
-		barf_perror("Failed to open connection to hypervisor");
-
-	talloc_set_destructor(xc_handle, close_xc_handle);
+	xm_handle = xenmanage_open(NULL, 0);
+	if (!xm_handle)
+		barf_perror("Failed to open connection to libxenmanage");
 
 	xgt_handle = talloc(talloc_autofree_context(), xengnttab_handle*);
 	if (!xgt_handle)
@@ -1306,6 +1290,8 @@ void domain_deinit(void)
 {
 	if (virq_port)
 		xenevtchn_unbind(xce_handle, virq_port);
+
+	xenmanage_close(xm_handle);
 }
 
 /*
@@ -1335,13 +1321,13 @@ int domain_alloc_permrefs(struct node_perms *perms)
 {
 	unsigned int i, domid;
 	struct domain *d;
-	xc_domaininfo_t dominfo;
 
 	for (i = 0; i < perms->num; i++) {
 		domid = perms->p[i].id;
 		d = find_domain_struct(domid);
 		if (!d) {
-			if (!get_domain_info(domid, &dominfo))
+			if (xenmanage_get_domain_info(xm_handle, domid,
+						      NULL, NULL))
 				perms->p[i].perms |= XS_PERM_IGNORE;
 			else if (!alloc_domain(NULL, domid))
 				return ENOMEM;
diff --git a/tools/xenstored/lu.c b/tools/xenstored/lu.c
index bec2a84e10..4fccbbc195 100644
--- a/tools/xenstored/lu.c
+++ b/tools/xenstored/lu.c
@@ -11,6 +11,7 @@
 #include <stdlib.h>
 #include <syslog.h>
 #include <time.h>
+#include <unistd.h>
 #include <sys/mman.h>
 #include <sys/stat.h>
 
diff --git a/tools/xenstored/lu_daemon.c b/tools/xenstored/lu_daemon.c
index 6df6c80a2a..88d8d9e1b3 100644
--- a/tools/xenstored/lu_daemon.c
+++ b/tools/xenstored/lu_daemon.c
@@ -6,6 +6,7 @@
  */
 
 #include <syslog.h>
+#include <unistd.h>
 #include <sys/stat.h>
 
 #include "talloc.h"
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:16:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:16:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824634.1238818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3bDd-0001rC-1h; Wed, 23 Oct 2024 13:16:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824634.1238818; Wed, 23 Oct 2024 13:16: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 1t3bDc-0001r5-VG; Wed, 23 Oct 2024 13:16:08 +0000
Received: by outflank-mailman (input) for mailman id 824634;
 Wed, 23 Oct 2024 13:16: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=Arnv=RT=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3bDc-0001qz-FG
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:16:08 +0000
Received: from mail-oa1-x2d.google.com (mail-oa1-x2d.google.com
 [2001:4860:4864:20::2d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f4fbb332-9140-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:16:05 +0200 (CEST)
Received: by mail-oa1-x2d.google.com with SMTP id
 586e51a60fabf-28cdd9d8d01so110133fac.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 06:16:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4fbb332-9140-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729689364; x=1730294164; 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=iiTzAsiwQo9rZSFwrzFSJ7VZH2hOB+SYWxOqMjEecys=;
        b=HeINMw/Hp1cSd/9sccTKnfCpbV/4ymIR5mGfRTyhZO4luKElAW7JIvXCMomy6aQ8Hb
         zFq+JhCJTjAynAhaJ0Awj7b1+aYm6GvxSynVBeC3CVH2LR0eE9UE86R171Zv7FiMEcMs
         diQf5Vhyns1Kh87fyodwxyZbqi3BKQygO3qungcHFPePasG2rfGJIBT33k1STHYQtiUD
         O+prHimBN4VPP4FMur5rBFzkmbcpH/XmCEDJbSthd4zOuWRKKNmHbPAYAxnc68GfkzVt
         7Q45ucwB+Sx+SDoD3cu2eg7NoLq+bTOatObF9n8iEpI9aT0iP9fkAdGnnRnK9QkBfXdt
         34NA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729689364; x=1730294164;
        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=iiTzAsiwQo9rZSFwrzFSJ7VZH2hOB+SYWxOqMjEecys=;
        b=P++7e4MAgpdm5x48KVwkcX9VhXO6AJQ3dklr9190hInFlgwQbQ8H7UjN6fDb0g7Ygh
         kVn8tf197o5TYEUZwp+ihQA2uI0bKICNteduRKb4ZmeQte4vlnXgn3rNbp1T04iVXBBx
         pMLR0MjQKhf8PE5mPZoUKuCG/s/WfU0pD+Q6HG52S2CYwywjPwcPFSj2sG9yRB2xGms0
         9Bolnxoh7AqoC2vlkqIUg3Tb9JISVt8A8ZYq7Si5ZUb6pDpsVXwCutpybtOIEIMbbroO
         zgcEuM/l1HjVuBTgb+Uv0iSzSkOflj6aylURV6/0ilLH+/ZB0nwFy4cRs4m4OQbEZWpV
         KRNw==
X-Gm-Message-State: AOJu0YzPRJ0Z8MrKgz2eIa1/Sd40qcKN+pQBVMy7cCnEmwK6dKQ3wQrk
	sMrw6+/hu9XC99q/cfjClQgR0L+7RWI+d54RxNRi1qOOwpYy4XG/uAbweN6BJ+D8gOGKr/KCIdC
	99JZo7UB9eJTTd2UWCF0wqY1jt0FYuMS/aoVVSQ==
X-Google-Smtp-Source: AGHT+IFTSh6KR2gAKDyqO3gkOk76jS6PP18dk06ymLAIVNQvXO4bIPn6oDOucf7RA/6rZU0UdQ5x5ceGyurRdxz+KqQ=
X-Received: by 2002:a05:6870:2046:b0:277:ef62:e6a7 with SMTP id
 586e51a60fabf-28ccb6acebfmr2655863fac.37.1729689363939; Wed, 23 Oct 2024
 06:16:03 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <dec1c02aa0142263796c53b8df917fa25e2d2675.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <dec1c02aa0142263796c53b8df917fa25e2d2675.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 23 Oct 2024 15:15:52 +0200
Message-ID: <CAHUa44Gfkt-DOv0hZv+tPypgS59dVFrvLm=X-Dn=+Xu-hS-g+A@mail.gmail.com>
Subject: Re: [PATCH v2 06/10] xen/arm: ffa: Use bit 15 convention for SPs
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Make use and required to have bit 15 convention respected by secure
> world (having bit 15 of IDs set for secure endpoints and non-set for
> non-secure ones).
> If any secure partition has an ID with bit 15 not set, it will not be
> possible to contact or detect them.
> Print an error log during probe for each secure endpoint detected with
> bit 15 not set.
>
> We are switching to this convention because Xen is currently not using
> VMIDs with bit 15 set so we are sure that no VM will have it set (this
> is ensured by BUILD_BUG_ON in case this becomes false in the future).
> It is allowing to easily distinguish between secure and non-secure
> endpoints, preventing the need to store a list of secure endpoint IDs in
> Xen.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - rebase
> ---
>  xen/arch/arm/tee/ffa.c          | 22 +++++++++++---
>  xen/arch/arm/tee/ffa_partinfo.c | 54 +++++++++++++++++++++++++--------
>  xen/arch/arm/tee/ffa_private.h  |  7 +++++
>  xen/arch/arm/tee/ffa_shm.c      | 12 +++++++-
>  4 files changed, 77 insertions(+), 18 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 4b55e8b48f01..a292003ca9fe 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -195,6 +195,14 @@ static void handle_msg_send_direct_req(struct cpu_us=
er_regs *regs, uint32_t fid)
>          goto out;
>      }
>
> +    /* we do not support direct messages to VMs */
> +    if ( !FFA_ID_IS_SECURE(src_dst & GENMASK(15,0)) )
> +    {
> +        resp.a0 =3D FFA_ERROR;
> +        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> +        goto out;
> +    }
> +
>      arg.a1 =3D src_dst;
>      arg.a2 =3D get_user_reg(regs, 2) & mask;
>      arg.a3 =3D get_user_reg(regs, 3) & mask;
> @@ -391,11 +399,15 @@ static int ffa_domain_init(struct domain *d)
>
>      if ( !ffa_fw_version )
>          return -ENODEV;
> -     /*
> -      * We can't use that last possible domain ID or ffa_get_vm_id() wou=
ld
> -      * cause an overflow.
> -      */
> -    if ( d->domain_id >=3D UINT16_MAX)
> +    /*
> +     * We are using the domain_id + 1 as the FF-A ID for VMs as FF-A ID =
0 is
> +     * reserved for the hypervisor and we only support secure endpoints =
using
> +     * FF-A IDs with BIT 15 set to 1 so make sure those are not used by =
Xen.
> +     */
> +    BUILD_BUG_ON(DOMID_FIRST_RESERVED >=3D UINT16_MAX);
> +    BUILD_BUG_ON((DOMID_MASK & BIT(15, U)) !=3D 0);
> +
> +    if ( d->domain_id >=3D DOMID_FIRST_RESERVED )
>          return -ERANGE;
>
>      ctx =3D xzalloc(struct ffa_ctx);
> diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_parti=
nfo.c
> index 75a073d090e0..3cf801523296 100644
> --- a/xen/arch/arm/tee/ffa_partinfo.c
> +++ b/xen/arch/arm/tee/ffa_partinfo.c
> @@ -169,14 +169,26 @@ void ffa_handle_partition_info_get(struct cpu_user_=
regs *regs)
>
>      if ( ffa_sp_count > 0 )
>      {
> -        uint32_t n;
> +        uint32_t n, real_num =3D ffa_sp_count;

Nit: how about n_limit instead of real_num?

>          void *src_buf =3D ffa_rx;
>
>          /* copy the secure partitions info */
> -        for ( n =3D 0; n < ffa_sp_count; n++ )
> +        for ( n =3D 0; n < real_num; n++ )
>          {
> -            memcpy(dst_buf, src_buf, dst_size);
> -            dst_buf +=3D dst_size;
> +            struct ffa_partition_info_1_1 *fpi =3D src_buf;
> +
> +            /* filter out SP not following bit 15 convention if any */
> +            if ( FFA_ID_IS_SECURE(fpi->id) )
> +            {
> +                memcpy(dst_buf, src_buf, dst_size);
> +                dst_buf +=3D dst_size;
> +            }
> +            else
> +            {
> +                printk(XENLOG_INFO "ffa: sp id 0x%04x skipped, bit 15 is=
 0\n",
> +                       fpi->id);

We have already logged this in init_subscribers() below. Is there a
risk of flooding the logs with this?

Cheers,
Jens

> +                ffa_sp_count--;
> +            }
>              src_buf +=3D src_size;
>          }
>      }
> @@ -276,10 +288,25 @@ static bool init_subscribers(uint16_t count, uint32=
_t fpi_size)
>      {
>          fpi =3D ffa_rx + n * fpi_size;
>
> -        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
> -            subscr_vm_created_count++;
> -        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
> -            subscr_vm_destroyed_count++;
> +        /*
> +         * We need to have secure partitions using bit 15 set convention=
 for
> +         * secure partition IDs.
> +         * Inform the user with a log and discard giving created or dest=
roy
> +         * event to those IDs.
> +         */
> +        if ( !FFA_ID_IS_SECURE(fpi->id) )
> +        {
> +            printk(XENLOG_ERR "ffa: Firmware is not using bit 15 convent=
ion for IDs !!\n"
> +                              "ffa: Secure partition with id 0x%04x cann=
ot be used\n",
> +                              fpi->id);
> +        }
> +        else
> +        {
> +            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED=
 )
> +                subscr_vm_created_count++;
> +            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROY=
ED )
> +                subscr_vm_destroyed_count++;
> +        }
>      }
>
>      if ( subscr_vm_created_count )
> @@ -299,10 +326,13 @@ static bool init_subscribers(uint16_t count, uint32=
_t fpi_size)
>      {
>          fpi =3D ffa_rx + n * fpi_size;
>
> -        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED )
> -            subscr_vm_created[c_pos++] =3D fpi->id;
> -        if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROYED )
> -            subscr_vm_destroyed[d_pos++] =3D fpi->id;
> +        if ( FFA_ID_IS_SECURE(fpi->id) )
> +        {
> +            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_CREATED=
 )
> +                subscr_vm_created[c_pos++] =3D fpi->id;
> +            if ( fpi->partition_properties & FFA_PART_PROP_NOTIF_DESTROY=
ED )
> +                subscr_vm_destroyed[d_pos++] =3D fpi->id;
> +        }
>      }
>
>      return true;
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index e5bc73f9039e..afe69b43dbef 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -108,6 +108,13 @@
>   */
>  #define FFA_CTX_TEARDOWN_DELAY          SECONDS(1)
>
> +/*
> + * We rely on the convention suggested but not mandated by the FF-A
> + * specification that secure world endpoint identifiers have the bit 15
> + * set and normal world have it set to 0.
> + */
> +#define FFA_ID_IS_SECURE(id)    ((id) & BIT(15, U))
> +
>  /* 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
> diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
> index efa5b67db8e1..29675f9ba3f7 100644
> --- a/xen/arch/arm/tee/ffa_shm.c
> +++ b/xen/arch/arm/tee/ffa_shm.c
> @@ -469,6 +469,7 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs)
>      int ret =3D FFA_RET_DENIED;
>      uint32_t range_count;
>      uint32_t region_offs;
> +    uint16_t dst_id;
>
>      if ( !ffa_fw_supports_fid(FFA_MEM_SHARE_64) )
>      {
> @@ -537,6 +538,15 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs=
)
>          goto out_unlock;
>
>      mem_access =3D ctx->tx + trans.mem_access_offs;
> +
> +    dst_id =3D ACCESS_ONCE(mem_access->access_perm.endpoint_id);
> +    if ( !FFA_ID_IS_SECURE(dst_id) )
> +    {
> +        /* we do not support sharing with VMs */
> +        ret =3D FFA_RET_NOT_SUPPORTED;
> +        goto out_unlock;
> +    }
> +
>      if ( ACCESS_ONCE(mem_access->access_perm.perm) !=3D FFA_MEM_ACC_RW )
>      {
>          ret =3D FFA_RET_NOT_SUPPORTED;
> @@ -567,7 +577,7 @@ void ffa_handle_mem_share(struct cpu_user_regs *regs)
>          goto out_unlock;
>      }
>      shm->sender_id =3D trans.sender_id;
> -    shm->ep_id =3D ACCESS_ONCE(mem_access->access_perm.endpoint_id);
> +    shm->ep_id =3D dst_id;
>
>      /*
>       * Check that the Composite memory region descriptor fits.
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:18:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:18:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824667.1238833 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3bFX-00030V-F1; Wed, 23 Oct 2024 13:18:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824667.1238833; Wed, 23 Oct 2024 13:18: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 1t3bFX-00030O-C7; Wed, 23 Oct 2024 13:18:07 +0000
Received: by outflank-mailman (input) for mailman id 824667;
 Wed, 23 Oct 2024 13:18: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3b8c-0006Ra-Ff
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:10: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 3a5d39e4-9140-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:10:52 +0200 (CEST)
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 4A0401FDA3;
 Wed, 23 Oct 2024 13:10: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 218B613A63;
 Wed, 23 Oct 2024 13:10:51 +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 VoOzBtv1GGcIeAAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 13:10: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: 3a5d39e4-9140-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689051; 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=LFewm/PyRpGCHNCNmkuqU9cF9n06m4bxHZhH7BxdXMU=;
	b=CnO/byiXVHpDym0EN2ob8KIWqZIg544Q0AT9OKrmSamYzGK7DbTX/pH2jGl1AZL1I/Flxy
	OmYU0k6zHJGnh+bZa/c4cd6vHDcLesqG75MFXWlbaiK7vvL4BN2gRAIeeZ9MXKsGdKBVqT
	+CTAFc6NsqdKiNP+UmH0k86AAnd0BOM=
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b="CnO/byiX"
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729689051; 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=LFewm/PyRpGCHNCNmkuqU9cF9n06m4bxHZhH7BxdXMU=;
	b=CnO/byiXVHpDym0EN2ob8KIWqZIg544Q0AT9OKrmSamYzGK7DbTX/pH2jGl1AZL1I/Flxy
	OmYU0k6zHJGnh+bZa/c4cd6vHDcLesqG75MFXWlbaiK7vvL4BN2gRAIeeZ9MXKsGdKBVqT
	+CTAFc6NsqdKiNP+UmH0k86AAnd0BOM=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>
Subject: [MINI-OS PATCH] config: add support for libxenmanage
Date: Wed, 23 Oct 2024 15:10:48 +0200
Message-ID: <20241023131048.32240-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4A0401FDA3
X-Spam-Level: 
X-Spamd-Result: default: False [-3.01 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MID_CONTAINS_FROM(1.00)[];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	MIME_TRACE(0.00)[0:+];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_TLS_ALL(0.00)[];
	FROM_EQ_ENVFROM(0.00)[];
	RCPT_COUNT_THREE(0.00)[4];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	DKIM_TRACE(0.00)[suse.com:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.01
X-Spam-Flag: NO

Add CONFIG_LIBXENMANAGE support.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
Please note that this patch should be committed only after the related
Xen patch "tools/libs: add a new libxenmanage library" has been Acked,
as otherwise it should either be dropped (in case the approach of
adding a new library is being rejected) or changed (in case the name
of the new library needs to be modified)!

 Config.mk | 2 ++
 Makefile  | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/Config.mk b/Config.mk
index f59a0cf4..e493533a 100644
--- a/Config.mk
+++ b/Config.mk
@@ -46,6 +46,7 @@ GNTTAB_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/gnttab
 CALL_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/call
 FOREIGNMEMORY_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/foreignmemory
 DEVICEMODEL_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/devicemodel
+MANAGE_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/manage
 CTRL_PATH ?= $(XEN_ROOT)/stubdom/libxc-$(MINIOS_TARGET_ARCH)
 GUEST_PATH ?= $(XEN_ROOT)/stubdom/libxc-$(MINIOS_TARGET_ARCH)
 else
@@ -202,6 +203,7 @@ CONFIG-n += CONFIG_LIBXENGNTTAB
 CONFIG-n += CONFIG_LIBXENGUEST
 CONFIG-n += CONFIG_LIBXENTOOLCORE
 CONFIG-n += CONFIG_LIBXENTOOLLOG
+CONFIG-n += CONFIG_LIBXENMANAGE
 # Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
 # console apart of standard dom0 handled console.
 CONFIG-n += CONFIG_USE_XEN_CONSOLE
diff --git a/Makefile b/Makefile
index ffa8d1a8..d094858a 100644
--- a/Makefile
+++ b/Makefile
@@ -159,6 +159,10 @@ ifeq ($(CONFIG_LIBXENCTRL),y)
 APP_LDLIBS += -L$(CTRL_PATH) -whole-archive -lxenctrl -no-whole-archive
 LIBS += $(CTRL_PATH)/libxenctrl.a
 endif
+ifeq ($(CONFIG_LIBXENMANAGE),y)
+APP_LDLIBS += -L$(MANAGE_PATH) -whole-archive -lxenmanage -no-whole-archive
+LIBS += $(MANAGE_PATH)/libxenmanage.a
+endif
 APP_LDLIBS += -lpci
 APP_LDLIBS += -lz
 APP_LDLIBS += -lm
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:50:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:50:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824683.1238843 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3bkg-0000gO-UF; Wed, 23 Oct 2024 13:50:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824683.1238843; Wed, 23 Oct 2024 13: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 1t3bkg-0000gH-Qv; Wed, 23 Oct 2024 13:50:18 +0000
Received: by outflank-mailman (input) for mailman id 824683;
 Wed, 23 Oct 2024 13:50: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=1uSz=RT=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t3bkf-0000gB-S3
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:50:17 +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 bb51b244-9145-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 15:50:16 +0200 (CEST)
Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com
 [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-481-VWU3WUWKOciiiZ9qMlobJg-1; Wed, 23 Oct 2024 09:50:13 -0400
Received: by mail-wm1-f71.google.com with SMTP id
 5b1f17b1804b1-4315e8e9b1cso5513165e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 06:50:13 -0700 (PDT)
Received: from eisenberg.fritz.box ([2001:16b8:3dac:2f00:8834:dd3a:39b8:e43b])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43186be7605sm16955265e9.19.2024.10.23.06.50.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 06:50:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb51b244-9145-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729691415;
	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=0/+dEQYx4WTT1/4z8YC1ihy31/3sJwq8UjrD+U04yBQ=;
	b=MkJqzqTMbLSoJbNMxJxMW6/vliEp7n689TifMbbNPh7UkEV98gGqZVqowSRRuP1eqKWFa6
	ddXuplVWxO+//lYZ2F4S4JjKACXxTBXBeUoBW7TLDawx20as2w5hY4aeoqhUHkxkuCPCaM
	WAeyWSXoeG65REeXmCg4XSjfvYRfXqU=
X-MC-Unique: VWU3WUWKOciiiZ9qMlobJg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729691412; x=1730296212;
        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=oO7/c3KxFQ4pCLrpHRIQyFFVX9SeNU/L27HBNV7OVps=;
        b=DTY4UJBJ+tf/evTFJ1YW6jHtd6lt3k3mTdOUV7BlZeePRww7wcrURS98Fu8LOjh4GJ
         PxJQJRjXKNSSHFVqtH5lXH88qQbQALgxJUSGLh3wC0K00AEa98ZUIrEKw6cCpPQrGkIr
         9n/oaPeQPC7OtndavPDtQN1LwmJCbxTVj8svimslA1CLqCubquG3Dy0QHUWlC4blN2FF
         vIUxPaEarOIjDRWabB63epWIVB/iPKFnRiubRlKh5KgzDxSFmQxdlpu32tRksayWRhL7
         mCONZl2RXCHBuPCq73CiRhyzgU9sctdrrADRE3bqjjZrUtW5L/p+JNJsekGgbdCOObv1
         gafQ==
X-Forwarded-Encrypted: i=1; AJvYcCWHoerYp4HpBlihXzuvpcWk1hyB88vKRRi/BwyF8dE4Ujx1xjknyb/XM2cxSYOut9xxLHOrqikWzzM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwLy9Gh13BPJdDNLXGGMhhBEifYAggSbicZDAKSBEaB6UeWKA2L
	yqvFLhn7GANbWTXeywTkJPjmU0sseetk9RlmUuNq24/OKeaqooxR9izvDqbOPuWVkPvYg3Ur8z/
	VHzXXoPlrccCTASSFmxsYe91+cJZCQ42+xxgcly0xZAJxivyK6nxrnWDllvoIRCPu
X-Received: by 2002:a05:600c:4f43:b0:42f:84ec:3e0 with SMTP id 5b1f17b1804b1-4317bd88469mr48316755e9.9.1729691412237;
        Wed, 23 Oct 2024 06:50:12 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHVbS2v+nb51IE57ofZXQEpzrUukFuey0NWkF8DOXs6/K2mGsAvF2UpvyCTTgP3Onw94z3R5g==
X-Received: by 2002:a05:600c:4f43:b0:42f:84ec:3e0 with SMTP id 5b1f17b1804b1-4317bd88469mr48316115e9.9.1729691411741;
        Wed, 23 Oct 2024 06:50:11 -0700 (PDT)
Message-ID: <6f3db65fe9a5dcd1a7a8d9bd5352ecb248ef57b1.camel@redhat.com>
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of
 pcim_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>, Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu
 <yi.l.liu@intel.com>,  Christian Brauner <brauner@kernel.org>, Ankit
 Agrawal <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>, Reinette
 Chatre <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Wed, 23 Oct 2024 15:50:09 +0200
In-Reply-To: <87v7xk2ps5.wl-tiwai@suse.de>
References: <20241015185124.64726-1-pstanner@redhat.com>
	 <20241015185124.64726-3-pstanner@redhat.com> <87v7xk2ps5.wl-tiwai@suse.de>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Tue, 2024-10-22 at 16:08 +0200, Takashi Iwai wrote:
> On Tue, 15 Oct 2024 20:51:12 +0200,
> Philipp Stanner wrote:
> >=20
> > pci_intx() is a hybrid function which can sometimes be managed
> > through
> > devres. To remove this hybrid nature from pci_intx(), it is
> > necessary to
> > port users to either an always-managed or a never-managed version.
> >=20
> > hda_intel enables its PCI-Device with pcim_enable_device(). Thus,
> > it needs
> > the always-managed version.
> >=20
> > Replace pci_intx() with pcim_intx().
> >=20
> > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > ---
> > =C2=A0sound/pci/hda/hda_intel.c | 2 +-
> > =C2=A01 file changed, 1 insertion(+), 1 deletion(-)
> >=20
> > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> > index b4540c5cd2a6..b44ca7b6e54f 100644
> > --- a/sound/pci/hda/hda_intel.c
> > +++ b/sound/pci/hda/hda_intel.c
> > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx *chip,
> > int do_disconnect)
> > =C2=A0=09}
> > =C2=A0=09bus->irq =3D chip->pci->irq;
> > =C2=A0=09chip->card->sync_irq =3D bus->irq;
> > -=09pci_intx(chip->pci, !chip->msi);
> > +=09pcim_intx(chip->pci, !chip->msi);
> > =C2=A0=09return 0;
> > =C2=A0}
> > =C2=A0
>=20
> Hm, it's OK-ish to do this as it's practically same as what
> pci_intx()
> currently does.=C2=A0 But, the current code can be a bit inconsistent
> about
> the original intx value.=C2=A0 pcim_intx() always stores !enable to
> res->orig_intx unconditionally, and it means that the orig_intx value
> gets overridden at each time pcim_intx() gets called.

Yes.

>=20
> Meanwhile, HD-audio driver does release and re-acquire the interrupt
> after disabling MSI when something goes wrong, and pci_intx() call
> above is a part of that procedure.=C2=A0 So, it can rewrite the
> res->orig_intx to another value by retry without MSI.=C2=A0 And after the
> driver removal, it'll lead to another state.

I'm not sure that I understand this paragraph completely. Still, could
a solution for the driver on the long-term just be to use pci_intx()?

>=20
> In anyway, as it doesn't change the current behavior, feel free to
> take my ack for now:
>=20
> Acked-by: Takashi Iwai <tiwai@suse.de>

Thank you,
P.

>=20
>=20
> thanks,
>=20
> Takashi
>=20



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 13:59:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 13:59:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824690.1238853 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3bti-0001T0-Q6; Wed, 23 Oct 2024 13:59:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824690.1238853; Wed, 23 Oct 2024 13:59: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 1t3bti-0001St-M2; Wed, 23 Oct 2024 13:59:38 +0000
Received: by outflank-mailman (input) for mailman id 824690;
 Wed, 23 Oct 2024 13:59: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=VMbu=RT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t3btg-0001RT-Nk
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 13:59:36 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 08c0c803-9147-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 15:59:34 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a99f3a5a44cso787975766b.3
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 06:59:34 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d63b1sm482968166b.42.2024.10.23.06.59.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 23 Oct 2024 06:59:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 08c0c803-9147-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729691974; x=1730296774; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zUbLFdU0BWI0tmmZg2AQHkhF4BGY/m2sI7zO4tAVz9I=;
        b=TStjWuECQvjBShe4MTy40S/71pgBWG7FsQJ8TnULOAG0EL/zFtkczFtMeCRIeq/Djg
         /vSpZdKHD7ZeBtdTQg1j6DanwzeiDoIRVJ4AodcsWFvlytTbchhANLkQZ4ECrLz0x4um
         v1U4pE42nu8OxdTr+rq9N7EQF4rTwrvGAgkyI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729691974; x=1730296774;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=zUbLFdU0BWI0tmmZg2AQHkhF4BGY/m2sI7zO4tAVz9I=;
        b=ML+QaafsK+UKW5cO+XnMJla/2AmJXyEbX8SR+MLMwvqYnFxfYSmzHna1q8XPgzLx6V
         pz9pOY40iJ8Kx/lSSxCAvpTRdXbsdIBVt4eZfZCEIySctT13H3YEn8o4EEoYaaMz34lX
         ZmrRLT8uqSMuHNBTKUXP0jKmwhgEmMmcbnm4UaSoFr5S055tcn6i3uucjdbjVPSOh8mj
         +bJ0IzFsGbceB2NpvDs2TzRSg5FN1V8Dn8u0Udb9az4aATd5AE/BX9Q1x3d6WTTgw2Xt
         RDceb3+UF0fz2KsgGwPwqheupUu484b12+qdWX7XOTDTt4pnGt1zijRlxiemWphZYcYB
         6TKw==
X-Forwarded-Encrypted: i=1; AJvYcCVtQ6h+KJwaJzmtlus7OWoTnwpN4Gni4/obygS7nau05oRXfJegsg4jzP6r8abDox7ULZ8ZBRO2M6s=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxacMMDh1MDZFslfMOQ1C7ZWQy/ez/dDAwTFfocHga6gbJ8Aj6E
	Q/NKUCOfZKT3EWCofz/9OYrzEphCHw8lTbXzkQmLS5z/wd2gleMWO7E7XdoPJ7k=
X-Google-Smtp-Source: AGHT+IHWHHX2hN+WLKXTIZg6y3Of++yhgWmj8yVV+wPX117m4ut+iRX2/CC/q1JwYgHaOnMwB0bDjA==
X-Received: by 2002:a17:907:980a:b0:a99:ed0c:1d6 with SMTP id a640c23a62f3a-a9abf920abamr232624266b.49.1729691974259;
        Wed, 23 Oct 2024 06:59:34 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 23 Oct 2024 14:59:31 +0100
Message-Id: <D538MPY7U10Z.2ZIEWH1RX5K4N@cloud.com>
Cc: "Jan Beulich" <JBeulich@suse.com>, =?utf-8?q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Subject: Re: [PATCH] x86/ucode: Explain what microcode_set_module() does
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241023122803.670943-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241023122803.670943-1-andrew.cooper3@citrix.com>

On Wed Oct 23, 2024 at 1:28 PM BST, Andrew Cooper wrote:
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

  Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

With a single nit that I don't care much about, but...

> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
>
> I found this hiding in other microcode changes, and decided it was high t=
ime
> it got included.
> ---
>  xen/arch/x86/cpu/microcode/core.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microco=
de/core.c
> index 8564e4d2c94c..dc2c064cf176 100644
> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c
> @@ -108,6 +108,10 @@ static bool ucode_in_nmi =3D true;
>  /* Protected by microcode_mutex */
>  static const struct microcode_patch *microcode_cache;
> =20
> +/*
> + * Used by the EFI path only, when xen.cfg identifies an explicit microc=
ode
> + * file.  Overrides ucode=3D<int>|scan on the regular command line.
> + */

... this it would be better at the interface in microcode.h, imo.

>  void __init microcode_set_module(unsigned int idx)
>  {
>      ucode_mod_idx =3D idx;
>
> base-commit: be84e7fe58b51f6b6dd907a038f0ef998a1e281e
> prerequisite-patch-id: ef20898eb25a7ca1ea2d7b1d676f00b91b46d5f6
> prerequisite-patch-id: e0d0c0acbe4864a00451187ef7232dcaf10b2477
> prerequisite-patch-id: f6010b4a6e0b43ac837aea470b3b5e5f390ee3b2

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 14:09:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 14:09:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824700.1238866 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3c2j-0003cF-P6; Wed, 23 Oct 2024 14:08:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824700.1238866; Wed, 23 Oct 2024 14:08: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 1t3c2j-0003c8-MD; Wed, 23 Oct 2024 14:08:57 +0000
Received: by outflank-mailman (input) for mailman id 824700;
 Wed, 23 Oct 2024 14:08: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=VMbu=RT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t3c2j-0003c2-7E
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 14:08:57 +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 56a70c4d-9148-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 16:08:55 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a0cee600aso849979466b.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 07:08:55 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d6545sm480034366b.31.2024.10.23.07.08.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 23 Oct 2024 07:08:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 56a70c4d-9148-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729692534; x=1730297334; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=0Qw3URcmATMuOWneLKp7CkmWtb7Zl5Gucm3oWrGNphg=;
        b=Ghj8xj+omDrZqTT5/dMIumN37vApjkRl4O4he3iB2+NxNCnivucap1ERXDgtkeHc3t
         Tq8FECLIFph3xXEFnyIte4R1/TXrUN9/gRtoSQX0gtIidBmYvXzOCm8SnSWw03oAdhJB
         jmN0DnlypimY/gSiIRzYQWdApeJ3T+KGQcwL4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729692534; x=1730297334;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=0Qw3URcmATMuOWneLKp7CkmWtb7Zl5Gucm3oWrGNphg=;
        b=vJp3An9Ljj5EjpJYEvxSoa0KhWI85diNFCUDfmtA5Xzp5XKLcuLTO5hWNTwOi3uskO
         Z4rZ76PAxksK4bkIJnAXROq3D+Q2D5l2Dr1fWtRaHm5LgKNyOmNX40iRuJA4mULsCaDF
         P+aKQwimXG1OQbXhABWGXH57gNOM31qCCmOerRhxrzsNFDzPmX88jjum4sC+vic/Ss5W
         zgj+bnyShkcY3FaSKclVMBz0ziUcLWOLmrYJGXtYuUPHEZO2SUxUy4A4MP1kkdjurs96
         G2S6GrjNnpN+9qVdAWOjvpqDFWnMuEGcBNITPQx3xEsw7oBlrVuahTFcPjATUq4rEOz9
         v2kg==
X-Forwarded-Encrypted: i=1; AJvYcCWYVSnrU0Bj2gas6UZzwTFyrSVHVAvpkSZAqeYg5uleXCZnaXer7dvjrC+mzhzV1f8mFIxQMZ4uMEA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzvcOSvcvxmr9LsXMVvdSxfECXGZZbQ6a2pLTFQc8xA81r9rZu9
	xM1mGNonDz8pbuuxTgYm/TBe+pjIoexgKtu9JRC/5M1Em6tvbkp6z2fF6u80WJw=
X-Google-Smtp-Source: AGHT+IEdzioL8U3X5IIPQMj353Sd9ESWdoHQRF+rCnrrc1SROolwkNDAPWqbkPbiZH7UOW6MI+Ncxw==
X-Received: by 2002:a17:907:9805:b0:a9a:294:cb30 with SMTP id a640c23a62f3a-a9abf890ef7mr206541366b.16.1729692534305;
        Wed, 23 Oct 2024 07:08:54 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 23 Oct 2024 15:08:51 +0100
Message-Id: <D538TV4LGFZF.J375ZVYWPIHO@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Jan Beulich"
 <jbeulich@suse.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini"
 <sstabellini@kernel.org>
Subject: Re: [PATCH 1/6] xen: add a domain unique id to each domain
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Juergen Gross" <jgross@suse.com>, <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-2-jgross@suse.com>
In-Reply-To: <20241023131005.32144-2-jgross@suse.com>

On Wed Oct 23, 2024 at 2:10 PM BST, Juergen Gross wrote:
> Xenstore is referencing domains by their domid, but reuse of a domid
> can lead to the situation that Xenstore can't tell whether a domain
> with that domid has been deleted and created again without Xenstore
> noticing the domain is a new one now.
>
> Add a global domain creation unique id which is updated when creating
> a new domain, and store that value in struct domain of the new domain.
> The global unique id is initialized with the system time and updates
> are done via the xorshift algorithm which is used for pseudo random
> number generation, too (see https://en.wikipedia.org/wiki/Xorshift).
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> ---
> V1:
> - make unique_id local to function (Jan Beulich)
> - add lock (Julien Grall)
> - add comment (Julien Grall)
> ---
>  xen/common/domain.c     | 20 ++++++++++++++++++++
>  xen/include/xen/sched.h |  3 +++
>  2 files changed, 23 insertions(+)
>
> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index 92263a4fbd..3948640fb0 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -562,6 +562,25 @@ static void _domain_destroy(struct domain *d)
>      free_domain_struct(d);
>  }
> =20
> +static uint64_t get_unique_id(void)
> +{
> +    static uint64_t unique_id;
> +    static DEFINE_SPINLOCK(lock);
> +    uint64_t x =3D unique_id ? : NOW();
> +
> +    spin_lock(&lock);
> +
> +    /* Pseudo-randomize id in order to avoid consumers relying on sequen=
ce. */
> +    x ^=3D x << 13;
> +    x ^=3D x >> 7;
> +    x ^=3D x << 17;
> +    unique_id =3D x;
> +
> +    spin_unlock(&lock);
> +
> +    return x;
> +}
> +
>  static int sanitise_domain_config(struct xen_domctl_createdomain *config=
)
>  {
>      bool hvm =3D config->flags & XEN_DOMCTL_CDF_hvm;
> @@ -654,6 +673,7 @@ struct domain *domain_create(domid_t domid,
> =20
>      /* Sort out our idea of is_system_domain(). */
>      d->domain_id =3D domid;
> +    d->unique_id =3D get_unique_id();
> =20
>      /* Holding CDF_* internal flags. */
>      d->cdf =3D flags;
> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> index 90666576c2..1dd8a425f9 100644
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -370,6 +370,9 @@ struct domain
>      domid_t          domain_id;
> =20
>      unsigned int     max_vcpus;
> +
> +    uint64_t         unique_id;       /* Unique domain identifier */
> +

Why not xen_domain_handle_t handle, defined later on? That's meant to be a
UUID, so this feels like a duplicate field.

>      struct vcpu    **vcpu;
> =20
>      shared_info_t   *shared_info;     /* shared data area */

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 14:28:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 14:28:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824711.1238882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3cL3-0006rU-CA; Wed, 23 Oct 2024 14:27:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824711.1238882; Wed, 23 Oct 2024 14: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 1t3cL3-0006rN-8P; Wed, 23 Oct 2024 14:27:53 +0000
Received: by outflank-mailman (input) for mailman id 824711;
 Wed, 23 Oct 2024 14:27: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=W0hE=RT=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3cL2-0006rH-ED
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 14:27:52 +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 fb2b412e-914a-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 16:27:50 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 536FC21F50;
 Wed, 23 Oct 2024 14:27:48 +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 13C6013AD3;
 Wed, 23 Oct 2024 14:27:48 +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 Q+YSA+QHGWe4FAAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 23 Oct 2024 14:27: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: fb2b412e-914a-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729693669; 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=axLOhtXdxWxX47nMuDldRMHrsmVJAKlDyUGIhE+tlVc=;
	b=kXTBQZLx3xFT7K9oVkPPL8zF+aRtqtv08Te15kNuYC5Jd9S8VV73K7s8yYxlz4gIkvt8x3
	APtV43XJ6TXEgCxgV0J1RNnfatQ+0qVgPCIR/Y4qiDB7Sm8lWANTf0LpWMsVCbK1YOOjWP
	YjwUl0X+3jPwSHzHoHUESlOxBYxCHRA=
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1729693668; 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=axLOhtXdxWxX47nMuDldRMHrsmVJAKlDyUGIhE+tlVc=;
	b=pPHIEdmjiZf85lHFjR7zRvSD8WxjWoGwGpDHWKxwawL6JDRFsQiN8J2+f99ZG6zk1WsUyA
	9Jp18oHs1VNfGox+FSkLCCDkPHnwSzidv7m53VsF0AahARCkTxK6pLpt+LqpwhkBB9DI/o
	OJn/i5UkPSUaxxyZpTRDmUitp4/C7/s=
Message-ID: <cc607d38-1638-4f43-b0d3-b03842e8d9b9@suse.com>
Date: Wed, 23 Oct 2024 16:27:47 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/6] xen: add a domain unique id to each domain
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-2-jgross@suse.com>
 <D538TV4LGFZF.J375ZVYWPIHO@cloud.com>
Content-Language: en-US
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: <D538TV4LGFZF.J375ZVYWPIHO@cloud.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------K4KN0K20cMAD6Istr1pO2vja"
X-Spam-Level: 
X-Spamd-Result: default: False [-5.20 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	MIME_BASE64_TEXT_BOGUS(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-0.999];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_BASE64_TEXT(0.10)[];
	MIME_UNKNOWN(0.10)[application/pgp-keys];
	RCVD_TLS_ALL(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	RCPT_COUNT_FIVE(0.00)[6];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid];
	HAS_ATTACHMENT(0.00)[]
X-Spam-Score: -5.20
X-Spam-Flag: NO

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------K4KN0K20cMAD6Istr1pO2vja
Content-Type: multipart/mixed; boundary="------------8a00VbQvOjt1W5nLB6gLJdlU";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
Message-ID: <cc607d38-1638-4f43-b0d3-b03842e8d9b9@suse.com>
Subject: Re: [PATCH 1/6] xen: add a domain unique id to each domain
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-2-jgross@suse.com>
 <D538TV4LGFZF.J375ZVYWPIHO@cloud.com>
In-Reply-To: <D538TV4LGFZF.J375ZVYWPIHO@cloud.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------8a00VbQvOjt1W5nLB6gLJdlU
Content-Type: multipart/mixed; boundary="------------nfP0Kh0o7wUhUU80OfDo220v"

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

T24gMjMuMTAuMjQgMTY6MDgsIEFsZWphbmRybyBWYWxsZWpvIHdyb3RlOg0KPiBPbiBXZWQg
T2N0IDIzLCAyMDI0IGF0IDI6MTAgUE0gQlNULCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4g
WGVuc3RvcmUgaXMgcmVmZXJlbmNpbmcgZG9tYWlucyBieSB0aGVpciBkb21pZCwgYnV0IHJl
dXNlIG9mIGEgZG9taWQNCj4+IGNhbiBsZWFkIHRvIHRoZSBzaXR1YXRpb24gdGhhdCBYZW5z
dG9yZSBjYW4ndCB0ZWxsIHdoZXRoZXIgYSBkb21haW4NCj4+IHdpdGggdGhhdCBkb21pZCBo
YXMgYmVlbiBkZWxldGVkIGFuZCBjcmVhdGVkIGFnYWluIHdpdGhvdXQgWGVuc3RvcmUNCj4+
IG5vdGljaW5nIHRoZSBkb21haW4gaXMgYSBuZXcgb25lIG5vdy4NCj4+DQo+PiBBZGQgYSBn
bG9iYWwgZG9tYWluIGNyZWF0aW9uIHVuaXF1ZSBpZCB3aGljaCBpcyB1cGRhdGVkIHdoZW4g
Y3JlYXRpbmcNCj4+IGEgbmV3IGRvbWFpbiwgYW5kIHN0b3JlIHRoYXQgdmFsdWUgaW4gc3Ry
dWN0IGRvbWFpbiBvZiB0aGUgbmV3IGRvbWFpbi4NCj4+IFRoZSBnbG9iYWwgdW5pcXVlIGlk
IGlzIGluaXRpYWxpemVkIHdpdGggdGhlIHN5c3RlbSB0aW1lIGFuZCB1cGRhdGVzDQo+PiBh
cmUgZG9uZSB2aWEgdGhlIHhvcnNoaWZ0IGFsZ29yaXRobSB3aGljaCBpcyB1c2VkIGZvciBw
c2V1ZG8gcmFuZG9tDQo+PiBudW1iZXIgZ2VuZXJhdGlvbiwgdG9vIChzZWUgaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvWG9yc2hpZnQpLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6
IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCj4+IFJldmlld2VkLWJ5OiBKYW4g
QmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+DQo+PiAtLS0NCj4+IFYxOg0KPj4gLSBtYWtl
IHVuaXF1ZV9pZCBsb2NhbCB0byBmdW5jdGlvbiAoSmFuIEJldWxpY2gpDQo+PiAtIGFkZCBs
b2NrIChKdWxpZW4gR3JhbGwpDQo+PiAtIGFkZCBjb21tZW50IChKdWxpZW4gR3JhbGwpDQo+
PiAtLS0NCj4+ICAgeGVuL2NvbW1vbi9kb21haW4uYyAgICAgfCAyMCArKysrKysrKysrKysr
KysrKysrKw0KPj4gICB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCB8ICAzICsrKw0KPj4gICAy
IGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykNCj4+DQo+PiBkaWZmIC0tZ2l0IGEv
eGVuL2NvbW1vbi9kb21haW4uYyBiL3hlbi9jb21tb24vZG9tYWluLmMNCj4+IGluZGV4IDky
MjYzYTRmYmQuLjM5NDg2NDBmYjAgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vY29tbW9uL2RvbWFp
bi5jDQo+PiArKysgYi94ZW4vY29tbW9uL2RvbWFpbi5jDQo+PiBAQCAtNTYyLDYgKzU2Miwy
NSBAQCBzdGF0aWMgdm9pZCBfZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkNCj4+
ICAgICAgIGZyZWVfZG9tYWluX3N0cnVjdChkKTsNCj4+ICAgfQ0KPj4gICANCj4+ICtzdGF0
aWMgdWludDY0X3QgZ2V0X3VuaXF1ZV9pZCh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgc3RhdGlj
IHVpbnQ2NF90IHVuaXF1ZV9pZDsNCj4+ICsgICAgc3RhdGljIERFRklORV9TUElOTE9DSyhs
b2NrKTsNCj4+ICsgICAgdWludDY0X3QgeCA9IHVuaXF1ZV9pZCA/IDogTk9XKCk7DQo+PiAr
DQo+PiArICAgIHNwaW5fbG9jaygmbG9jayk7DQo+PiArDQo+PiArICAgIC8qIFBzZXVkby1y
YW5kb21pemUgaWQgaW4gb3JkZXIgdG8gYXZvaWQgY29uc3VtZXJzIHJlbHlpbmcgb24gc2Vx
dWVuY2UuICovDQo+PiArICAgIHggXj0geCA8PCAxMzsNCj4+ICsgICAgeCBePSB4ID4+IDc7
DQo+PiArICAgIHggXj0geCA8PCAxNzsNCj4+ICsgICAgdW5pcXVlX2lkID0geDsNCj4+ICsN
Cj4+ICsgICAgc3Bpbl91bmxvY2soJmxvY2spOw0KPj4gKw0KPj4gKyAgICByZXR1cm4geDsN
Cj4+ICt9DQo+PiArDQo+PiAgIHN0YXRpYyBpbnQgc2FuaXRpc2VfZG9tYWluX2NvbmZpZyhz
dHJ1Y3QgeGVuX2RvbWN0bF9jcmVhdGVkb21haW4gKmNvbmZpZykNCj4+ICAgew0KPj4gICAg
ICAgYm9vbCBodm0gPSBjb25maWctPmZsYWdzICYgWEVOX0RPTUNUTF9DREZfaHZtOw0KPj4g
QEAgLTY1NCw2ICs2NzMsNyBAQCBzdHJ1Y3QgZG9tYWluICpkb21haW5fY3JlYXRlKGRvbWlk
X3QgZG9taWQsDQo+PiAgIA0KPj4gICAgICAgLyogU29ydCBvdXQgb3VyIGlkZWEgb2YgaXNf
c3lzdGVtX2RvbWFpbigpLiAqLw0KPj4gICAgICAgZC0+ZG9tYWluX2lkID0gZG9taWQ7DQo+
PiArICAgIGQtPnVuaXF1ZV9pZCA9IGdldF91bmlxdWVfaWQoKTsNCj4+ICAgDQo+PiAgICAg
ICAvKiBIb2xkaW5nIENERl8qIGludGVybmFsIGZsYWdzLiAqLw0KPj4gICAgICAgZC0+Y2Rm
ID0gZmxhZ3M7DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmggYi94
ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaA0KPj4gaW5kZXggOTA2NjY1NzZjMi4uMWRkOGE0MjVm
OSAxMDA2NDQNCj4+IC0tLSBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oDQo+PiArKysgYi94
ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaA0KPj4gQEAgLTM3MCw2ICszNzAsOSBAQCBzdHJ1Y3Qg
ZG9tYWluDQo+PiAgICAgICBkb21pZF90ICAgICAgICAgIGRvbWFpbl9pZDsNCj4+ICAgDQo+
PiAgICAgICB1bnNpZ25lZCBpbnQgICAgIG1heF92Y3B1czsNCj4+ICsNCj4+ICsgICAgdWlu
dDY0X3QgICAgICAgICB1bmlxdWVfaWQ7ICAgICAgIC8qIFVuaXF1ZSBkb21haW4gaWRlbnRp
ZmllciAqLw0KPj4gKw0KPiANCj4gV2h5IG5vdCB4ZW5fZG9tYWluX2hhbmRsZV90IGhhbmRs
ZSwgZGVmaW5lZCBsYXRlciBvbj8gVGhhdCdzIG1lYW50IHRvIGJlIGENCj4gVVVJRCwgc28g
dGhpcyBmZWVscyBsaWtlIGEgZHVwbGljYXRlIGZpZWxkLg0KDQpJdCBpcyBhbiBpbnB1dCB2
YWx1ZSBmb3IgY3JlYXRlIGRvbWFpbi4gU28gdGhlcmUgaXMgYWJzb2x1dGVseSBubw0KZ3Vh
cmFudGVlIHRoYXQgaXQgaXMgdW5pcXVlLg0KDQpJdCBjYW4gZXNwZWNpYWxseSBiZSBzcGVj
aWZpZWQgaW4gdGhlIHhsIGNvbmZpZyBmaWxlLCBzbyB5b3UgY291bGQgaGF2ZQ0KYSBob3N0
IHJ1bm5pbmcgbXVsdGlwbGUgZ3Vlc3RzIGFsbCB3aXRoIHRoZSBzYW1lIFVVSUQgKGV2ZW4g
aWYgdGhpcyBtaWdodA0KYmUgcmVqZWN0ZWQgYnkgbGlieGwsIGRlc3Ryb3lpbmcgYSBndWVz
dCBhbmQgdGhlbiByZWNyZWF0aW5nIGl0IHdpdGggdGhlDQpzYW1lIFVVSUQgaXMgcG9zc2li
bGUsIGJ1dCBYZW5zdG9yZSB3b3VsZCBuZWVkIHRvIHNlZSBkaWZmZXJlbnQgdW5pcXVlIElk
cw0KZm9yIHRob3NlIDIgZ3Vlc3RzKS4NCg0KDQpKdWVyZ2VuDQo=
--------------nfP0Kh0o7wUhUU80OfDo220v
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------nfP0Kh0o7wUhUU80OfDo220v--

--------------8a00VbQvOjt1W5nLB6gLJdlU--

--------------K4KN0K20cMAD6Istr1pO2vja
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/Ey8FAmcZB+MFAwAAAAAACgkQsN6d1ii/Ey8e
PAf/TSKDDoqu5eZLqWWkDOuSZ2NqEiBRj7TkKGthPU0MMsRtbFTHXn7rROoD3gNFQbdhKbY4tHyQ
UOYj18BI9Sz3YFilDrOmil/JcZYn3ZMbHRE3brGzspOKEVoQh6gQL3fXrVNwLXDW3BEjHaTGKSNR
1yYzMbgWWY14wnpkZHuVvZEJVeujetUeZbwX2asyX7nq9Iw5BRsDbJBXNdKIQP4U1EoRgqD8/AGi
AwC/yF91V5d/SOjyOKF/rXhVQUYefnrXWkXvGr08RhNJ54HF7zD88FCS6e0XP9X41uOGN6hJZ7JH
hy0QgZWXwAW2W0YtqPBiMHen1bJO/RPDs0Sx0PTr+Q==
=ItcT
-----END PGP SIGNATURE-----

--------------K4KN0K20cMAD6Istr1pO2vja--


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 14:45:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 14:45:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824718.1238892 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3cbZ-0001Pz-Mn; Wed, 23 Oct 2024 14:44:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824718.1238892; Wed, 23 Oct 2024 14:44: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 1t3cbZ-0001Ps-K2; Wed, 23 Oct 2024 14:44:57 +0000
Received: by outflank-mailman (input) for mailman id 824718;
 Wed, 23 Oct 2024 14:44: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3cbY-0001Pl-Fp
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 14:44:56 +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 5ca0e00d-914d-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 16:44:52 +0200 (CEST)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9a16b310f5so886027166b.0
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 07:44:52 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a9159a231sm485756766b.210.2024.10.23.07.44.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 07:44:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5ca0e00d-914d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729694691; x=1730299491; 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=Cv7BbkM+VyxuZiE18zNfLBSL+qc31CadlEw9GXWIkw0=;
        b=quh+bahj7UU8IoYpzZtgGJQQz1Hxc02QwujUqZmSgR8TKzJK2U7PImXejiHv0ow5z1
         mDqkSvpcs43985wmB+fLBZVB4BSDcCEBeHMlEezELjnUzDyRLSWTNc0XQTenWsRS2745
         3EnS2pOCVRMKirkc9mZGdQsFndAirKSxs2w60=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729694691; x=1730299491;
        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=Cv7BbkM+VyxuZiE18zNfLBSL+qc31CadlEw9GXWIkw0=;
        b=I3P4PrB+08fpY307KMdqFFfR9rmiUZeM9QpzvtyCachvW6f+VInGVWz1xNanC+Ku5Y
         vNpBgJFXyPE3gcRhCK1VfA+j40LND2MQtKC1xF0eO+d96iGuG93VJY801k6CFroxTlkL
         1Lr3e0HFMqNvOptlxcbaNssYWxc9fuX2CIa7YMXY5jT9Au7rtPYmhkToYS/L858daWn8
         uyi4xadNZQJxBboD5TxEHsNQUPQuopxW6BX4r1pnrp8/j//YX66TMHGDAUByRMoiOQoK
         EPTzVW8o+gDcM3GKiI8ipIBIp49afht/3OaFcU/kMSZv1uwC9rcTH+lA9oAd7Vr7Tt/m
         64vA==
X-Gm-Message-State: AOJu0Yxk3UHXf39V0Df6+/dwxMgbzb8vVR9mmCJPjYM4R5BXAPONvXVP
	qxrnVxHNAY54mOaflXPzW827gh2GPiAQafSYn3GaHD7STjHYV2sv5UiDIVNAXEIAUwe4D/jUDHm
	K
X-Google-Smtp-Source: AGHT+IGCS+qrW5WCJrlrmPw8TwvM4/GKq/U1g8u3zg/oeKOXN9F6nTzw21pt1hi0F3/5TKiboKWIlA==
X-Received: by 2002:a17:907:944c:b0:a99:f9e6:1d0 with SMTP id a640c23a62f3a-a9abf8b7bc1mr269118366b.27.1729694691431;
        Wed, 23 Oct 2024 07:44:51 -0700 (PDT)
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>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 4/3] x86/boot: Remove the mbi_p parameter from __start_xen()
Date: Wed, 23 Oct 2024 15:44:48 +0100
Message-Id: <20241023144448.731688-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241023105756.641695-1-andrew.cooper3@citrix.com>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The use of physical addresses in __start_xen() has proved to be fertile soure
of bugs.

The MB1/2 path stashes the MBI pointer in multiboot_ptr (a setup.c variable
even), then re-loads it immediately before calling __start_xen().  For this,
we can just drop the function parameter and read multiboot_ptr in the one
place it's used.

The EFI path also passes this parameter into __start_xen().  Have the EFI path
set up multiboot_ptr too, and move the explanation of phyiscal-mode pointers.

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: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1509072662
---
 xen/arch/x86/boot/x86_64.S       |  2 --
 xen/arch/x86/efi/efi-boot.h      |  9 +++++++--
 xen/arch/x86/include/asm/setup.h |  1 +
 xen/arch/x86/setup.c             | 14 +++++---------
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/xen/arch/x86/boot/x86_64.S b/xen/arch/x86/boot/x86_64.S
index 04bb62ae8680..26b9d1c2df9a 100644
--- a/xen/arch/x86/boot/x86_64.S
+++ b/xen/arch/x86/boot/x86_64.S
@@ -77,8 +77,6 @@ ENTRY(__high_start)
         tailcall start_secondary
 
 .L_bsp:
-        /* Pass off the Multiboot info structure to C land (if applicable). */
-        mov     multiboot_ptr(%rip),%edi
         tailcall __start_xen
 
         .section .data.page_aligned, "aw", @progbits
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 94f34433640f..3b26f0b0f500 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -248,6 +248,12 @@ static void __init noreturn efi_arch_post_exit_boot(void)
     efi_arch_relocate_image(__XEN_VIRT_START - xen_phys_start);
     memcpy((void *)trampoline_phys, trampoline_start, cfg.size);
 
+    /*
+     * We're in physical mode right now (i.e. identity map), so a regular
+     * pointer is also a phyiscal address to the rest of Xen.
+     */
+    multiboot_ptr = (unsigned long)&mbi;
+
     /* Set system registers and transfer control. */
     asm volatile("pushq $0\n\tpopfq");
     rdmsrl(MSR_EFER, efer);
@@ -279,8 +285,7 @@ static void __init noreturn efi_arch_post_exit_boot(void)
                      [cr4] "+&r" (cr4)
                    : [cr3] "r" (idle_pg_table),
                      [cs] "i" (__HYPERVISOR_CS),
-                     [ds] "r" (__HYPERVISOR_DS),
-                     "D" (&mbi)
+                     [ds] "r" (__HYPERVISOR_DS)
                    : "memory" );
     unreachable();
 }
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 3d189521189d..811855e57478 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -14,6 +14,7 @@ extern unsigned long xenheap_initial_phys_start;
 extern uint64_t boot_tsc_stamp;
 
 extern void *stack_start;
+extern unsigned int multiboot_ptr;
 
 void early_cpu_init(bool verbose);
 void early_time_init(void);
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index c5b37bd2112e..c9129c21787b 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -157,8 +157,8 @@ char asmlinkage __section(".init.bss.stack_aligned") __aligned(STACK_SIZE)
 /* Used by the BSP/AP paths to find the higher half stack mapping to use. */
 void *stack_start = cpu0_stack + STACK_SIZE - sizeof(struct cpu_info);
 
-/* Used by the boot asm to stash the relocated multiboot info pointer. */
-unsigned int asmlinkage __initdata multiboot_ptr;
+/* Used by the boot asm and EFI to stash the multiboot_info paddr. */
+unsigned int __initdata multiboot_ptr;
 
 struct cpuinfo_x86 __read_mostly boot_cpu_data = { 0, 0, 0, 0, -1 };
 
@@ -1014,7 +1014,7 @@ 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)
 
-void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
+void asmlinkage __init noreturn __start_xen(void)
 {
     const char *memmap_type = NULL;
     char *kextra;
@@ -1059,7 +1059,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     if ( pvh_boot )
     {
-        ASSERT(mbi_p == 0);
         pvh_init(&mbi, &mod);
         /*
          * mbi and mod are regular pointers to .initdata.  These remain valid
@@ -1068,7 +1067,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     }
     else
     {
-        mbi = __va(mbi_p);
+        mbi = __va(multiboot_ptr);
         mod = __va(mbi->mods_addr);
 
         /*
@@ -1078,11 +1077,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
          * For EFI, these are directmap pointers into the Xen image.  They do
          * not remain valid across move_xen().  EFI boot only functions
          * because a non-zero xen_phys_start inhibits move_xen().
-         *
-         * Don't be fooled by efi_arch_post_exit_boot() passing "D" (&mbi).
-         * This is a EFI physical-mode (i.e. identity map) pointer.
          */
-        ASSERT(mbi_p < MB(1) || xen_phys_start);
+        ASSERT(multiboot_ptr < MB(1) || xen_phys_start);
     }
 
     bi = multiboot_fill_boot_info(mbi, mod);

base-commit: be84e7fe58b51f6b6dd907a038f0ef998a1e281e
prerequisite-patch-id: 795f6e9425cc6a953166b530ae68df466a7a3c2b
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 14:51:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 14:51:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824728.1238902 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ci5-0003Ml-FP; Wed, 23 Oct 2024 14:51:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824728.1238902; Wed, 23 Oct 2024 14: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 1t3ci5-0003Me-C6; Wed, 23 Oct 2024 14:51:41 +0000
Received: by outflank-mailman (input) for mailman id 824728;
 Wed, 23 Oct 2024 14:51: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=Arnv=RT=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3ci4-0003MX-2M
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 14:51:40 +0000
Received: from mail-oa1-x35.google.com (mail-oa1-x35.google.com
 [2001:4860:4864:20::35])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4db18c5f-914e-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 16:51:37 +0200 (CEST)
Received: by mail-oa1-x35.google.com with SMTP id
 586e51a60fabf-288dfdaf833so3549969fac.3
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 07:51:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4db18c5f-914e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729695096; x=1730299896; 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=fHwtJJLCczjZXDvw1pA1XR81TuKkL0EsZwB9Wlh1i78=;
        b=tPzjk6jl9hMS8FR48i494WzVgwZXq9IDgVO70HKI3V73FNaY8MyHAoWa9HGQXLP+cv
         dv7IHfNkbdju/g6UezRHgal2BwJRMBiz4MvG77H9qjJFzdCTbVPkhfi+6JQn3D1YXE7H
         hGCVyNjB8zSAu/ulF2RCkgpCHvKoJnPRMpqsdx1I9B2clzvEUV2UxMN0qCrv/k1+QDeD
         uT8+LKQ2OGqQaaKNXkOmVxHIkeo9mSj16QmTBrTUdxl9Wpc+welT7SCCJQvLsmjdeAxo
         tjTk8xJGVXuh1i+5nbuXU4zK3CcVB8WNgTwENGPbvHPTT+R3aeSmgvoCcsqD2g623wpt
         oRtA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729695096; x=1730299896;
        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=fHwtJJLCczjZXDvw1pA1XR81TuKkL0EsZwB9Wlh1i78=;
        b=G1ano6LeCv7bCTUqk0hHMuuPKkc/tvK7bjjDgjDXY1KNNvbBz06A777msSwfvaUFyZ
         orQMSKSyzeUdSxWd8bMXiyW4JZSe3Vq5OfYLVD9cwdsCr2xkY3e3Wl5axza9orYmU+A7
         Mn/GVyPS7/GEaeyEF7z+duZjmGn9d7//VEfG2A+rJR85AuPkio4zMHHf+a63db3F1+5X
         IVSK7er4mHv4nXMIwxTrBYVOCtvQ9vYUmdCOGEffIvwBV3KcC/hHwm1CsXZ27ZRDmySP
         OqrN9+339zWPw8n3n6JpSKRJPOeNLwyqKTUCTx1+uvJCJDzvH4+wCsVYJR/P31AYf3R4
         ltYQ==
X-Gm-Message-State: AOJu0YwJ9bNfr8wgQHtiQV5Lk2AidxSamElpMzZ62vvlDET3jq1yTeom
	XBzp/ebFpEod5QhhwJisvRGu3At+YHC8t8tTGkSpGhzf9Aw+1RqzACyA6kggTmlarAJ34TT8hg/
	sgoP5ZshIhRHxEXTM0SnAyYFVeF0EQGmQMSbXLQ==
X-Google-Smtp-Source: AGHT+IEU0kif6tkIrrVZHHwOy4HbS3oHsO2kxD0iSkiD8OoI1Yt33Qt7IN12hbKQmLO8tzku7tS2PraMbjY80Htfwpw=
X-Received: by 2002:a05:6871:739f:b0:277:fe14:e68c with SMTP id
 586e51a60fabf-28ccb60db7dmr3087703fac.33.1729695096126; Wed, 23 Oct 2024
 07:51:36 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <f6037d0d077d793864ec10875dccf9e82a19e100.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <f6037d0d077d793864ec10875dccf9e82a19e100.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 23 Oct 2024 16:51:24 +0200
Message-ID: <CAHUa44F5yXW5yb_+RgBrof7c3yRoMp3Jh2n3OkAVV2mND7c6QA@mail.gmail.com>
Subject: Re: [PATCH v2 07/10] xen/arm: ffa: Transmit RXTX buffers to the SPMC
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> When an RXTX buffer is mapped by a VM transmit it to the SPMC when it
> supports RX_ACQUIRE.
> As a consequence of that, we must acquire the RX buffer of a VM from the
> SPMC when we want to use it:
> - create a generic acquire and release function to get the rx buffer of
>   a VM which gets it from the SPMC when supported
> - rename the rx_acquire to hyp_rx_acquire to remove confusion
> - rework the rx_lock to only lock access to rx_is_free and only allow
>   usage of the rx buffer to one who managed to acquire it, thus removing
>   the trylock and returning busy if rx_is_free is false
>
> As part of this change move some structure definition to ffa_private
> from ffa_shm as those are need for the MAP call with the SPMC.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - unmap VM rxtx buffer in SPMC on unmap call or on VM destroy
> - rework the unmap call to the SPMC to properly pass the VM ID
> ---
>  xen/arch/arm/tee/ffa.c          |   2 +-
>  xen/arch/arm/tee/ffa_partinfo.c |  29 ++----
>  xen/arch/arm/tee/ffa_private.h  |  22 ++++-
>  xen/arch/arm/tee/ffa_rxtx.c     | 158 ++++++++++++++++++++++++++------
>  xen/arch/arm/tee/ffa_shm.c      |  15 ---
>  5 files changed, 161 insertions(+), 65 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index a292003ca9fe..40ea5398fa21 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -347,7 +347,7 @@ static bool ffa_handle_call(struct cpu_user_regs *reg=
s)
>          ffa_handle_partition_info_get(regs);
>          return true;
>      case FFA_RX_RELEASE:
> -        e =3D ffa_handle_rx_release();
> +        e =3D ffa_rx_release(d);
>          break;
>      case FFA_MSG_SEND_DIRECT_REQ_32:
>      case FFA_MSG_SEND_DIRECT_REQ_64:
> diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_parti=
nfo.c
> index 3cf801523296..fde187dba4e5 100644
> --- a/xen/arch/arm/tee/ffa_partinfo.c
> +++ b/xen/arch/arm/tee/ffa_partinfo.c
> @@ -121,11 +121,9 @@ void ffa_handle_partition_info_get(struct cpu_user_r=
egs *regs)
>          goto out;
>      }
>
> -    if ( !spin_trylock(&ctx->rx_lock) )
> -    {
> -        ret =3D FFA_RET_BUSY;
> +    ret =3D ffa_rx_acquire(d);
> +    if ( ret !=3D FFA_RET_OK )
>          goto out;
> -    }
>
>      dst_buf =3D ctx->rx;
>
> @@ -135,22 +133,16 @@ void ffa_handle_partition_info_get(struct cpu_user_=
regs *regs)
>          goto out_rx_release;
>      }
>
> -    if ( !ctx->page_count || !ctx->rx_is_free )
> -    {
> -        ret =3D FFA_RET_DENIED;
> -        goto out_rx_release;
> -    }
> -
>      spin_lock(&ffa_rx_buffer_lock);
>
>      ret =3D ffa_partition_info_get(uuid, 0, &ffa_sp_count, &src_size);
>
>      if ( ret )
> -        goto out_rx_buf_unlock;
> +        goto out_rx_hyp_unlock;
>
>      /*
>       * ffa_partition_info_get() succeeded so we now own the RX buffer we
> -     * share with the SPMC. We must give it back using ffa_rx_release()
> +     * share with the SPMC. We must give it back using ffa_hyp_rx_releas=
e()
>       * once we've copied the content.
>       */
>
> @@ -193,15 +185,13 @@ void ffa_handle_partition_info_get(struct cpu_user_=
regs *regs)
>          }
>      }
>
> -    ctx->rx_is_free =3D false;
> -
>  out_rx_hyp_release:
> -    ffa_rx_release();
> -out_rx_buf_unlock:
> +    ffa_hyp_rx_release();
> +out_rx_hyp_unlock:
>      spin_unlock(&ffa_rx_buffer_lock);
>  out_rx_release:
> -    spin_unlock(&ctx->rx_lock);
> -
> +    if ( ret !=3D FFA_RET_OK )
> +        ffa_rx_release(d);

Please comment on why ffa_rx_release() must only be called on failure.

>  out:
>      if ( ret )
>          ffa_set_regs_error(regs, ret);
> @@ -368,8 +358,7 @@ bool ffa_partinfo_init(void)
>      ret =3D init_subscribers(count, fpi_size);
>
>  out:
> -    ffa_rx_release();
> -
> +    ffa_hyp_rx_release();
>      return ret;
>  }
>
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index afe69b43dbef..9adfe687c3c9 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -265,6 +265,21 @@
>  #define FFA_ABI_BITNUM(id)    ((FFA_ABI_ID(id) - FFA_ABI_MIN) << 1 | \
>                                 FFA_ABI_CONV(id))
>
> +/* Constituent memory region descriptor */
> +struct ffa_address_range {
> +    uint64_t address;
> +    uint32_t page_count;
> +    uint32_t reserved;
> +};
> +
> +/* Composite memory region descriptor */
> +struct ffa_mem_region {
> +    uint32_t total_page_count;
> +    uint32_t address_range_count;
> +    uint64_t reserved;
> +    struct ffa_address_range address_range_array[];
> +};
> +
>  struct ffa_ctx_notif {
>      bool enabled;
>
> @@ -292,7 +307,7 @@ struct ffa_ctx {
>      struct ffa_ctx_notif notif;
>      /*
>       * tx_lock is used to serialize access to tx
> -     * rx_lock is used to serialize access to rx
> +     * rx_lock is used to serialize access to rx_is_free
>       * lock is used for the rest in this struct
>       */
>      spinlock_t tx_lock;
> @@ -331,7 +346,8 @@ void ffa_rxtx_domain_destroy(struct domain *d);
>  uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
>                              register_t rx_addr, uint32_t page_count);
>  uint32_t ffa_handle_rxtx_unmap(void);
> -int32_t ffa_handle_rx_release(void);
> +int32_t ffa_rx_acquire(struct domain *d);
> +int32_t ffa_rx_release(struct domain *d);
>
>  void ffa_notif_init(void);
>  void ffa_notif_init_interrupt(void);
> @@ -420,7 +436,7 @@ static inline int32_t ffa_simple_call(uint32_t fid, r=
egister_t a1,
>      return ffa_get_ret_code(&resp);
>  }
>
> -static inline int32_t ffa_rx_release(void)
> +static inline int32_t ffa_hyp_rx_release(void)
>  {
>      return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
>  }
> diff --git a/xen/arch/arm/tee/ffa_rxtx.c b/xen/arch/arm/tee/ffa_rxtx.c
> index b6931c855779..a5d43e51f843 100644
> --- a/xen/arch/arm/tee/ffa_rxtx.c
> +++ b/xen/arch/arm/tee/ffa_rxtx.c
> @@ -30,6 +30,17 @@ struct ffa_endpoint_rxtx_descriptor_1_1 {
>      uint32_t tx_region_offs;
>  };
>
> +static int32_t ffa_rxtx_map(paddr_t tx_addr, paddr_t rx_addr,
> +                            uint32_t page_count)
> +{
> +    return ffa_simple_call(FFA_RXTX_MAP_64, tx_addr, rx_addr, page_count=
, 0);
> +}
> +
> +static int32_t ffa_rxtx_unmap(uint16_t id)
> +{
> +    return ffa_simple_call(FFA_RXTX_UNMAP, ((uint64_t)id)<<16, 0, 0, 0);
> +}
> +
>  uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
>                              register_t rx_addr, uint32_t page_count)
>  {
> @@ -42,6 +53,9 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t t=
x_addr,
>      void *rx;
>      void *tx;
>
> +    /* The code is considering that we only get one page for now */
> +    BUILD_BUG_ON(FFA_MAX_RXTX_PAGE_COUNT !=3D 1);
> +
>      if ( !smccc_is_conv_64(fid) )
>      {
>          /*
> @@ -87,6 +101,65 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t=
 tx_addr,
>      if ( !rx )
>          goto err_unmap_tx;
>
> +    /*
> +     * Transmit the RX/TX buffer information to the SPM if acquire is su=
pported
> +     * as the spec says that if not there is not need to acquire/release=
/map
> +     * rxtx buffers from the SPMC
> +     */
> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> +    {
> +        struct ffa_endpoint_rxtx_descriptor_1_1 *rxtx_desc;
> +        struct ffa_mem_region *mem_reg;
> +
> +        /* All must fit in our TX buffer */
> +        BUILD_BUG_ON((sizeof(*rxtx_desc) + sizeof(*mem_reg)*2 +
> +                      sizeof(struct ffa_address_range)*2) > FFA_PAGE_SIZ=
E);

Please add space before and after the binary operator "*".
The size of the TX buffer is FFA_RXTX_PAGE_COUNT * FFA_PAGE_SIZE.
Nit: the outer parenthesis around the left expression aren't needed.

> +
> +        spin_lock(&ffa_tx_buffer_lock);
> +        rxtx_desc =3D ffa_tx;
> +
> +        /*
> +         * We have only one page for each so we pack everything:
> +         * - rx region descriptor
> +         * - rx region range
> +         * - tx region descriptor
> +         * - tx region range
> +         */
> +        rxtx_desc->sender_id =3D ffa_get_vm_id(d);
> +        rxtx_desc->reserved =3D 0;
> +        rxtx_desc->rx_region_offs =3D sizeof(*rxtx_desc);
> +        rxtx_desc->tx_region_offs =3D sizeof(*rxtx_desc) +
> +                                    offsetof(struct ffa_mem_region,
> +                                             address_range_array[1]);
> +
> +        /* rx buffer */
> +        mem_reg =3D ffa_tx + sizeof(*rxtx_desc);
> +        mem_reg->total_page_count =3D 1;
> +        mem_reg->address_range_count =3D 1;
> +        mem_reg->reserved =3D 0;
> +
> +        mem_reg->address_range_array[0].address =3D page_to_maddr(rx_pg)=
;
> +        mem_reg->address_range_array[0].page_count =3D 1;
> +        mem_reg->address_range_array[0].reserved =3D 0;
> +
> +        /* tx buffer */
> +        mem_reg =3D ffa_tx + rxtx_desc->tx_region_offs;
> +        mem_reg->total_page_count =3D 1;
> +        mem_reg->address_range_count =3D 1;
> +        mem_reg->reserved =3D 0;
> +
> +        mem_reg->address_range_array[0].address =3D page_to_maddr(tx_pg)=
;
> +        mem_reg->address_range_array[0].page_count =3D 1;
> +        mem_reg->address_range_array[0].reserved =3D 0;
> +
> +        ret =3D ffa_rxtx_map(0, 0, 1);

The last parameter is also MBZ when forwarding on behalf of an endpoint.

Cheers,
Jens

> +
> +        spin_unlock(&ffa_tx_buffer_lock);
> +
> +        if ( ret !=3D FFA_RET_OK )
> +            goto err_unmap_rx;
> +    }
> +
>      ctx->rx =3D rx;
>      ctx->tx =3D tx;
>      ctx->rx_pg =3D rx_pg;
> @@ -95,6 +168,8 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t =
tx_addr,
>      ctx->rx_is_free =3D true;
>      return FFA_RET_OK;
>
> +err_unmap_rx:
> +    unmap_domain_page_global(rx);
>  err_unmap_tx:
>      unmap_domain_page_global(tx);
>  err_put_rx_pg:
> @@ -105,8 +180,22 @@ err_put_tx_pg:
>      return ret;
>  }
>
> -static void rxtx_unmap(struct ffa_ctx *ctx)
> +static uint32_t  rxtx_unmap(struct domain *d)
>  {
> +    struct ffa_ctx *ctx =3D d->arch.tee;
> +
> +    if ( !ctx->page_count )
> +        return FFA_RET_INVALID_PARAMETERS;
> +
> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> +    {
> +        uint32_t ret;
> +
> +        ret =3D ffa_rxtx_unmap(ffa_get_vm_id(d));
> +        if ( ret !=3D FFA_RET_OK )
> +            return ret;
> +    }
> +
>      unmap_domain_page_global(ctx->rx);
>      unmap_domain_page_global(ctx->tx);
>      put_page(ctx->rx_pg);
> @@ -117,32 +206,63 @@ static void rxtx_unmap(struct ffa_ctx *ctx)
>      ctx->tx_pg =3D NULL;
>      ctx->page_count =3D 0;
>      ctx->rx_is_free =3D false;
> +
> +    return FFA_RET_OK;
>  }
>
>  uint32_t ffa_handle_rxtx_unmap(void)
>  {
> -    struct domain *d =3D current->domain;
> +    return rxtx_unmap(current->domain);
> +}
> +
> +int32_t ffa_rx_acquire(struct domain *d)
> +{
> +    int32_t ret =3D FFA_RET_OK;
>      struct ffa_ctx *ctx =3D d->arch.tee;
>
> -    if ( !ctx->rx )
> -        return FFA_RET_INVALID_PARAMETERS;
> +    spin_lock(&ctx->rx_lock);
>
> -    rxtx_unmap(ctx);
> +    if ( !ctx->page_count )
> +    {
> +        ret =3D FFA_RET_DENIED;
> +        goto out;
> +    }
>
> -    return FFA_RET_OK;
> +    if ( !ctx->rx_is_free )
> +    {
> +        ret =3D FFA_RET_BUSY;
> +        goto out;
> +    }
> +
> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> +    {
> +        ret =3D ffa_simple_call(FFA_RX_ACQUIRE, ffa_get_vm_id(d), 0, 0, =
0);
> +        if ( ret !=3D FFA_RET_OK )
> +            goto out;
> +    }
> +    ctx->rx_is_free =3D false;
> +out:
> +    spin_unlock(&ctx->rx_lock);
> +
> +    return ret;
>  }
>
> -int32_t ffa_handle_rx_release(void)
> +int32_t ffa_rx_release(struct domain *d)
>  {
>      int32_t ret =3D FFA_RET_DENIED;
> -    struct domain *d =3D current->domain;
>      struct ffa_ctx *ctx =3D d->arch.tee;
>
> -    if ( !spin_trylock(&ctx->rx_lock) )
> -        return FFA_RET_BUSY;
> +    spin_lock(&ctx->rx_lock);
>
>      if ( !ctx->page_count || ctx->rx_is_free )
>          goto out;
> +
> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> +    {
> +        ret =3D ffa_simple_call(FFA_RX_RELEASE, ffa_get_vm_id(d), 0, 0, =
0);
> +        if ( ret !=3D FFA_RET_OK )
> +            goto out;
> +    }
>      ret =3D FFA_RET_OK;
>      ctx->rx_is_free =3D true;
>  out:
> @@ -151,23 +271,9 @@ out:
>      return ret;
>  }
>
> -static int32_t ffa_rxtx_map(paddr_t tx_addr, paddr_t rx_addr,
> -                            uint32_t page_count)
> -{
> -    return ffa_simple_call(FFA_RXTX_MAP_64, tx_addr, rx_addr, page_count=
, 0);
> -}
> -
> -static int32_t ffa_rxtx_unmap(void)
> -{
> -    return ffa_simple_call(FFA_RXTX_UNMAP, 0, 0, 0, 0);
> -}
> -
>  void ffa_rxtx_domain_destroy(struct domain *d)
>  {
> -    struct ffa_ctx *ctx =3D d->arch.tee;
> -
> -    if ( ctx->rx )
> -        rxtx_unmap(ctx);
> +    rxtx_unmap(d);
>  }
>
>  void ffa_rxtx_destroy(void)
> @@ -186,7 +292,7 @@ void ffa_rxtx_destroy(void)
>      }
>
>      if ( need_unmap )
> -        ffa_rxtx_unmap();
> +        ffa_rxtx_unmap(0);
>  }
>
>  bool ffa_rxtx_init(void)
> diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
> index 29675f9ba3f7..d628c1b70609 100644
> --- a/xen/arch/arm/tee/ffa_shm.c
> +++ b/xen/arch/arm/tee/ffa_shm.c
> @@ -16,21 +16,6 @@
>
>  #include "ffa_private.h"
>
> -/* Constituent memory region descriptor */
> -struct ffa_address_range {
> -    uint64_t address;
> -    uint32_t page_count;
> -    uint32_t reserved;
> -};
> -
> -/* Composite memory region descriptor */
> -struct ffa_mem_region {
> -    uint32_t total_page_count;
> -    uint32_t address_range_count;
> -    uint64_t reserved;
> -    struct ffa_address_range address_range_array[];
> -};
> -
>  /* Memory access permissions descriptor */
>  struct ffa_mem_access_perm {
>      uint16_t endpoint_id;
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 14:58:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 14:58:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824737.1238912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3coz-0004Kz-4E; Wed, 23 Oct 2024 14:58:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824737.1238912; Wed, 23 Oct 2024 14: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 1t3coz-0004Ks-1M; Wed, 23 Oct 2024 14:58:49 +0000
Received: by outflank-mailman (input) for mailman id 824737;
 Wed, 23 Oct 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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3cox-0004Kj-8o
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 14:58:47 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4bc7d374-914f-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 16:58:44 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729695518647177.87965042799783;
 Wed, 23 Oct 2024 07:58:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4bc7d374-914f-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729695520; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=JoOjLytBV0xD7ZnknejYKoQX+Os6TYXkWxxoO9zi+TapP0IgoN0h+P07+vqxN7BAGVEB9bmQV+4sk8A41XdJl06DD9tc8XeV1bLjSmWVT3b8Q4Niqmz4xHYnMN8evzZqbYbLJiSdc8yYrPLJ2VSq/uNV6Mi7UfwXMqG8+s74QHI=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729695520; 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=XFUZApqXLzTPG9d+X1HRSKAJr1RKWKgKuddXGS32uXs=; 
	b=isTt/VFm4RkrDm3I+wL95R4LisSErSEcYIbVd7vpJ0GNuNTmDQelk0LH6Pzb+xwJzaocjKHu4sAMwt9RxcfvviKlvmhm6Vobu+lxenhtslV+0ELI6FZS5qoGoAwQ82SUyaTbl7C55K4+L9v1vo52cQixQHCRKnmDtSbMRlZ//oY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729695520;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=XFUZApqXLzTPG9d+X1HRSKAJr1RKWKgKuddXGS32uXs=;
	b=MC84Swbw/8AVKLaGv6pPxQ82ZozGm9013EOHUjnMObIakUJfUyUivai68YEsUqZ2
	JkSJ64BDNgI/rr3dYK+qipG5bhNVgnNhahcNjJ60In6lwTnB6kcb0ho7KtHTzqGizev
	0gB9LHydEuJiZHhOgY6d3vMV4IgOWEr7zDtnzaOw=
Message-ID: <21218409-5506-4321-be8c-d044ba758b7c@apertussolutions.com>
Date: Wed, 23 Oct 2024 10:58:37 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/3] x86/boot: Remove the mbi_p parameter from
 __start_xen()
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>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023144448.731688-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241023144448.731688-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/23/24 10:44, Andrew Cooper wrote:
> The use of physical addresses in __start_xen() has proved to be fertile soure
> of bugs.
> 
> The MB1/2 path stashes the MBI pointer in multiboot_ptr (a setup.c variable
> even), then re-loads it immediately before calling __start_xen().  For this,
> we can just drop the function parameter and read multiboot_ptr in the one
> place it's used.
> 
> The EFI path also passes this parameter into __start_xen().  Have the EFI path
> set up multiboot_ptr too, and move the explanation of phyiscal-mode pointers.
> 
> 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: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> CC: Daniel P. Smith <dpsmith@apertussolutions.com>

For EFI:
Acked-by: Daniel P. Smith <dpsmith@apertussolutions.com>

For remainder:
Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 15:02:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 15:02:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824742.1238922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3csB-0005s0-HX; Wed, 23 Oct 2024 15:02:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824742.1238922; Wed, 23 Oct 2024 15:02: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 1t3csB-0005rt-En; Wed, 23 Oct 2024 15:02:07 +0000
Received: by outflank-mailman (input) for mailman id 824742;
 Wed, 23 Oct 2024 15:02: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=2CNu=RT=suse.de=tiwai@srs-se1.protection.inumbo.net>)
 id 1t3cs9-0005rf-9b
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 15:02:05 +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 c2c31074-914f-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 17:02:03 +0200 (CEST)
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 DF78A1FDB3;
 Wed, 23 Oct 2024 15: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 68CEE13A63;
 Wed, 23 Oct 2024 15:01: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 NCtrGOcPGWeBIAAAD6G6ig
 (envelope-from <tiwai@suse.de>); Wed, 23 Oct 2024 15:01: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: c2c31074-914f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729695722; 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=45xK/8+G8mZGVAAi4hFp9PxMXe5ylZqkKcyee7y5QO0=;
	b=2ItZ1jDFGk8fncyzUjOD6XP1yUrNx0clEVu6vx5PlWgY0pzhWkTG+ZtGuTuCRk8o3opkVR
	dfMKygDgm3Jq5vAgizfUaf8cKtsAeQ4XF/G6TOOvoC1PCvT0gXtIJ6o1YtCFBpqgxn1lRp
	fSH3oUU/jApkJIS3ff7Z5Hf6ZDSyVCA=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729695722;
	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=45xK/8+G8mZGVAAi4hFp9PxMXe5ylZqkKcyee7y5QO0=;
	b=yBKR04wgmFIDNWBjE5QW+Hnw1mB3+YpLhbGyrDlSE5v42/Wn0oqwJTXtDYuSVV5bI/aQHq
	NeWZpYvZRGkV4xCA==
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.de header.s=susede2_rsa header.b=fWmPOTyF;
	dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=YuZHxXn8
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729695720; 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=45xK/8+G8mZGVAAi4hFp9PxMXe5ylZqkKcyee7y5QO0=;
	b=fWmPOTyFFK+VxPBZQ27E8g8Odi0gvPqUHrkqQ2QKeK3e96V7dTVsrUlTrX8fBfFIRYP2SR
	9X8KyTWE0pPVrtX25EqinQG9f1t/MMtZPc4BYI42RYSDXTHUEdo2fpuxgIh4wXKOC6E8vP
	AtQwg7XXJKV2vlZYgc+r1cxzrlGkyFE=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729695720;
	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=45xK/8+G8mZGVAAi4hFp9PxMXe5ylZqkKcyee7y5QO0=;
	b=YuZHxXn8vf1q/VffvvFlmQV8HJADESPXQVyITePngDv64EqgM+RiZEQG2jZ271+0TbFBkM
	esX+WixusA/YvVCA==
Date: Wed, 23 Oct 2024 17:03:00 +0200
Message-ID: <87ttd2276j.wl-tiwai@suse.de>
From: Takashi Iwai <tiwai@suse.de>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Takashi Iwai <tiwai@suse.de>,	Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,	Jiri Kosina
 <jikos@kernel.org>,	Benjamin Tissoires <bentiss@kernel.org>,	Arnd Bergmann
 <arnd@arndb.de>,	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,	Alex
 Dubov <oakad@yahoo.com>,	Sudarsana Kalluru <skalluru@marvell.com>,	Manish
 Chopra <manishc@marvell.com>,	"David S. Miller" <davem@davemloft.net>,	Eric
 Dumazet <edumazet@google.com>,	Jakub Kicinski <kuba@kernel.org>,	Paolo
 Abeni <pabeni@redhat.com>,	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,	Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>,	Jon Mason <jdmason@kudzu.us>,	Dave Jiang
 <dave.jiang@intel.com>,	Allen Hubbe <allenbh@gmail.com>,	Bjorn Helgaas
 <bhelgaas@google.com>,	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,	Stefano Stabellini
 <sstabellini@kernel.org>,	Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,	Jaroslav Kysela <perex@perex.cz>,	Takashi
 Iwai <tiwai@suse.com>,	Chen Ni <nichen@iscas.ac.cn>,	Mario Limonciello
 <mario.limonciello@amd.com>,	Ricky Wu <ricky_wu@realtek.com>,	Al Viro
 <viro@zeniv.linux.org.uk>,	Breno Leitao <leitao@debian.org>,	Kevin Tian
 <kevin.tian@intel.com>,	Thomas Gleixner <tglx@linutronix.de>,	Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,	Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>,	Mostafa Saleh
 <smostafa@google.com>,	Jason Gunthorpe <jgg@ziepe.ca>,	Yi Liu
 <yi.l.liu@intel.com>,	Christian Brauner <brauner@kernel.org>,	Ankit Agrawal
 <ankita@nvidia.com>,	Eric Auger <eric.auger@redhat.com>,	Reinette Chatre
 <reinette.chatre@intel.com>,	Ye Bin <yebin10@huawei.com>,	Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,	Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>,	Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>,	Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,	Rui Salvaterra <rsalvaterra@gmail.com>,
	linux-ide@vger.kernel.org,	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,	linux-sound@vger.kernel.org
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of pcim_intx()
In-Reply-To: <6f3db65fe9a5dcd1a7a8d9bd5352ecb248ef57b1.camel@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
	<20241015185124.64726-3-pstanner@redhat.com>
	<87v7xk2ps5.wl-tiwai@suse.de>
	<6f3db65fe9a5dcd1a7a8d9bd5352ecb248ef57b1.camel@redhat.com>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: DF78A1FDB3
X-Spam-Level: 
X-Spamd-Result: default: False [-3.51 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	FREEMAIL_CC(0.00)[suse.de,kernel.org,omp.ru,amd.com,arndb.de,linuxfoundation.org,yahoo.com,marvell.com,davemloft.net,google.com,redhat.com,quantenna.com,gmail.com,kudzu.us,intel.com,suse.com,epam.com,perex.cz,iscas.ac.cn,realtek.com,zeniv.linux.org.uk,debian.org,linutronix.de,linux.intel.com,ziepe.ca,nvidia.com,huawei.com,invisiblethingslab.com,linux.dev,vger.kernel.org,lists.linux.dev,lists.xenproject.org];
	RCVD_TLS_ALL(0.00)[];
	DKIM_TRACE(0.00)[suse.de:+];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCPT_COUNT_GT_50(0.00)[67];
	R_RATELIMIT(0.00)[to_ip_from(RLrrkwc4rnabsqsjbq9gcqj97h)];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:mid,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.51
X-Spam-Flag: NO

On Wed, 23 Oct 2024 15:50:09 +0200,
Philipp Stanner wrote:
> 
> On Tue, 2024-10-22 at 16:08 +0200, Takashi Iwai wrote:
> > On Tue, 15 Oct 2024 20:51:12 +0200,
> > Philipp Stanner wrote:
> > > 
> > > pci_intx() is a hybrid function which can sometimes be managed
> > > through
> > > devres. To remove this hybrid nature from pci_intx(), it is
> > > necessary to
> > > port users to either an always-managed or a never-managed version.
> > > 
> > > hda_intel enables its PCI-Device with pcim_enable_device(). Thus,
> > > it needs
> > > the always-managed version.
> > > 
> > > Replace pci_intx() with pcim_intx().
> > > 
> > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > ---
> > > sound/pci/hda/hda_intel.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
> > > index b4540c5cd2a6..b44ca7b6e54f 100644
> > > --- a/sound/pci/hda/hda_intel.c
> > > +++ b/sound/pci/hda/hda_intel.c
> > > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx *chip,
> > > int do_disconnect)
> > > 	}
> > > 	bus->irq = chip->pci->irq;
> > > 	chip->card->sync_irq = bus->irq;
> > > -	pci_intx(chip->pci, !chip->msi);
> > > +	pcim_intx(chip->pci, !chip->msi);
> > > 	return 0;
> > > }
> > > 
> > 
> > Hm, it's OK-ish to do this as it's practically same as what
> > pci_intx()
> > currently does. But, the current code can be a bit inconsistent
> > about
> > the original intx value. pcim_intx() always stores !enable to
> > res->orig_intx unconditionally, and it means that the orig_intx value
> > gets overridden at each time pcim_intx() gets called.
> 
> Yes.
> 
> > 
> > Meanwhile, HD-audio driver does release and re-acquire the interrupt
> > after disabling MSI when something goes wrong, and pci_intx() call
> > above is a part of that procedure. So, it can rewrite the
> > res->orig_intx to another value by retry without MSI. And after the
> > driver removal, it'll lead to another state.
> 
> I'm not sure that I understand this paragraph completely. Still, could
> a solution for the driver on the long-term just be to use pci_intx()?

pci_intx() misses the restore of the original value, so it's no
long-term solution, either.

What I meant is that pcim_intx() blindly assumes the negative of the
passed argument as the original state, which isn't always true.  e.g.
when the driver calls it twice with different values, a wrong value
may be remembered.

That said, I thought of something like below.


thanks,

Takashi

-- 8< --
--- a/drivers/pci/devres.c
+++ b/drivers/pci/devres.c
@@ -438,8 +438,17 @@ static void pcim_intx_restore(struct device *dev, void *data)
 	__pcim_intx(pdev, res->orig_intx);
 }
 
-static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
+static void save_orig_intx(struct pci_dev *pdev)
 {
+	u16 pci_command;
+
+	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
+	res->orig_intx = !(pci_command & PCI_COMMAND_INTX_DISABLE);
+}
+
+static struct pcim_intx_devres *get_or_create_intx_devres(struct pci_dev *pdev)
+{
+	struct device *dev = &pdev->dev;
 	struct pcim_intx_devres *res;
 
 	res = devres_find(dev, pcim_intx_restore, NULL, NULL);
@@ -447,8 +456,10 @@ static struct pcim_intx_devres *get_or_create_intx_devres(struct device *dev)
 		return res;
 
 	res = devres_alloc(pcim_intx_restore, sizeof(*res), GFP_KERNEL);
-	if (res)
+	if (res) {
+		save_orig_intx(pdev);
 		devres_add(dev, res);
+	}
 
 	return res;
 }
@@ -467,11 +478,10 @@ int pcim_intx(struct pci_dev *pdev, int enable)
 {
 	struct pcim_intx_devres *res;
 
-	res = get_or_create_intx_devres(&pdev->dev);
+	res = get_or_create_intx_devres(pdev);
 	if (!res)
 		return -ENOMEM;
 
-	res->orig_intx = !enable;
 	__pcim_intx(pdev, enable);
 
 	return 0;


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 15:37:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 15:37:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824758.1238933 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3dQ5-0002lB-By; Wed, 23 Oct 2024 15:37:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824758.1238933; Wed, 23 Oct 2024 15: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 1t3dQ5-0002l4-7K; Wed, 23 Oct 2024 15:37:09 +0000
Received: by outflank-mailman (input) for mailman id 824758;
 Wed, 23 Oct 2024 15:37: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3dQ4-0002kx-5n
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 15:37:08 +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 a8a3a1d0-9154-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 17:37:06 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a0472306cso935783766b.3
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 08:37:06 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a9155a1c9sm491160966b.129.2024.10.23.08.37.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 23 Oct 2024 08:37:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8a3a1d0-9154-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729697826; x=1730302626; 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=/LLGF7zfAQ7nHYxoXky2IwZp9CiOwRFLNQ/OJ6fgNcE=;
        b=JF1vo3PMqUaJJwzpxODfyG+2lPAmoy1pBM0Sx9SrgRXrYbPOj7VAstmWImtkqQ8XxA
         uabubgNNH/qDaNMF3NeRpVsCw2I4nVOuk2ZIMEc943IlHjyzRe5ymdcXwGzVvPRehamK
         7D5TQYLE5ovNT9sdFtJXj94QVFfs/uCBuD51Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729697826; x=1730302626;
        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=/LLGF7zfAQ7nHYxoXky2IwZp9CiOwRFLNQ/OJ6fgNcE=;
        b=cUp7bIcjyLaehcvQHaAg80JY1k0hDI7kUNu5cbNnuZGwiu71iTma9Nge9YLwaibemb
         owVuFwoSCl2Jb98zW435bzOawRAqeQ8Ue4WEkNekKKXzKxnb+IHyFXGIoHpzcym1fCOC
         3PM0BZBM2PweczgYB0y7neKOfwLdCk2vtvETg2K383stMrd+hl1z79/Qnlavyk2zrfF7
         R56aYUrqoGe31dHfjP36f2R1ty846ha/08E3t0kA6jK9ZIdKIdg4x46BOiaqIhAecpzB
         f53W53wnSd9/lQGzMvFt2SQUarVaYOOFbgWAPT8GqkUkdxbVS6PDTyyFKMp1RcJKqPxt
         Mtpw==
X-Forwarded-Encrypted: i=1; AJvYcCUwSy/BfCpOMDgkjVXYalKow32OhxCVKbBOjnxLXV2GfcLlc37LDWYoawJVIHZHaP0vONw1AcO0r0w=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyyf/+7gMWNhrdxPILKNS2GoF54F2jXvc1XqK3yTJQ8L7yhU3Ei
	A6n4vhvaOC56rlBOZwMHusbCoE0Q765PvXHGvRUMOjqc3b4gbGdQvh9Io1VfFQw=
X-Google-Smtp-Source: AGHT+IHav3rBzqupp9YxgctInmEKUthWRSihOlGG1vNMRluZY6IO6TE8vJt2bZkUV5LNBRMJJK7CuQ==
X-Received: by 2002:a17:907:72cf:b0:a99:cedd:4612 with SMTP id a640c23a62f3a-a9abf8938ffmr255687966b.22.1729697825969;
        Wed, 23 Oct 2024 08:37:05 -0700 (PDT)
Message-ID: <e604a851-b5a1-4288-8f6e-3f4216bd132f@citrix.com>
Date: Wed, 23 Oct 2024 16:37:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/3] x86/boot: Remove the mbi_p parameter from
 __start_xen()
To: "Daniel P. Smith" <dpsmith@apertussolutions.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>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023144448.731688-1-andrew.cooper3@citrix.com>
 <21218409-5506-4321-be8c-d044ba758b7c@apertussolutions.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <21218409-5506-4321-be8c-d044ba758b7c@apertussolutions.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23/10/2024 3:58 pm, Daniel P. Smith wrote:
> On 10/23/24 10:44, Andrew Cooper wrote:
>> The use of physical addresses in __start_xen() has proved to be
>> fertile soure
>> of bugs.
>>
>> The MB1/2 path stashes the MBI pointer in multiboot_ptr (a setup.c
>> variable
>> even), then re-loads it immediately before calling __start_xen(). 
>> For this,
>> we can just drop the function parameter and read multiboot_ptr in the
>> one
>> place it's used.
>>
>> The EFI path also passes this parameter into __start_xen().  Have the
>> EFI path
>> set up multiboot_ptr too, and move the explanation of phyiscal-mode
>> pointers.
>>
>> 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: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> CC: Daniel P. Smith <dpsmith@apertussolutions.com>
>
> For EFI:
> Acked-by: Daniel P. Smith <dpsmith@apertussolutions.com>
>
> For remainder:
> Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>

Thanks.  That's usually just R-by then.

In Xen, we take A-by to mean "sure, whatever", and R-by to mean "I've
looked at this in detail and think it's good".

R-by implies A-by, and either are fine from a maintainership point of view.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 15:51:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 15:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824767.1238956 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3de5-0005q7-PR; Wed, 23 Oct 2024 15:51:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824767.1238956; Wed, 23 Oct 2024 15:51: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 1t3de5-0005q0-M6; Wed, 23 Oct 2024 15:51:37 +0000
Received: by outflank-mailman (input) for mailman id 824767;
 Wed, 23 Oct 2024 15:51: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=9cWG=RT=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t3de3-0005bd-Tc
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 15:51:36 +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 ae0d050f-9156-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 17:51:34 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a99cc265e0aso1038682766b.3
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 08:51:34 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm493214466b.79.2024.10.23.08.51.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 08:51:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae0d050f-9156-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729698694; x=1730303494; 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=UFnxFGxSNN5WN9xtFLzWvxwvab562wxEhkwPA1vRgPc=;
        b=Cddca0OlssmTmC1u+9u4GGUO/Ws8ZWKSkROiacz9FaNLccoZq01B9i+2Hhbf7XcApN
         jGILn8bcsyB9JbB9ZGXB3DkrKt1jrX7dt/taSHpsL6MNN5KKVFOMYdxV45bAq90zpRsg
         z1Te7k/hz2plPIkuqoJhDMEVdYgUA02kX2M1kLaCgaa2cOIHpYOJATW56zAnYcijnYrh
         tkwz9vplPDo9mr3HIweM+5aRAh4OCFleVTbDFMsNQSuKd02MEZmgmXrzVZTFTgZz1YOn
         zNh5f50GbFS1BiWF2LSfArfFSujFJD3lmVVKg94W/ofluiuvJTEMzsGHEGoDQA0beGqv
         HUnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729698694; x=1730303494;
        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=UFnxFGxSNN5WN9xtFLzWvxwvab562wxEhkwPA1vRgPc=;
        b=vU/yzqgt+XOCkmbQIJYf3qoNgMO4npVDwKJJQpkCwpk2Jm/XjwGjQeNsDgmNBOig22
         iEsCN8Jd2HEM0W/7CzEhDMypfBtEz7h06ZYeqWFYVo7vYs2KHesOtYRDOUDZvkE51P4g
         1YAsuz+BcW840JiWbmhCXsvHoiLcLtDF+my+CMmDv6DW6F3aEHRH1sb3MtusITghthcT
         xffSo3BnOLyUnrcN4JZmWMPn25+xbAqUDL/FaCJ+kXuoEDR1Vu8hjIdbmOPQz/ntVNja
         8gNcSqf8SnasMQm8NKdJd3e8aPD2PHFWIOLTZ8knLyXIGhS52eLIgs1IoWsV6oP0G0Fc
         jxeQ==
X-Gm-Message-State: AOJu0YyFexe1DNrS9pwNmqrCqdZSli3LNr7h9vEHrQS4vc09Dh9n3A9N
	T9tTZcqfCBoosGfnxZZ9JTWqCQqzBdVtunLn5TFDDli+SQrnVwALXQCSQA==
X-Google-Smtp-Source: AGHT+IHSvfzoyBILXwJNKpkGHqKgOB/lVo1I5P++rI4ZHP/+EkNJoMHlL/iXqbmRyez5Exw7whzKpQ==
X-Received: by 2002:a17:907:7b97:b0:a9a:26a1:1963 with SMTP id a640c23a62f3a-a9abf8491aemr318394466b.7.1729698693458;
        Wed, 23 Oct 2024 08:51:33 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 1/3] xen/riscv: introduce setup_mm()
Date: Wed, 23 Oct 2024 17:50:22 +0200
Message-ID: <28240dcfc04a11237db553c4e0ecb372aa0fe9ac.1729697111.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729697111.git.oleksii.kurochko@gmail.com>
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce the implementation of setup_mm(), which includes:
1. Adding all free regions to the boot allocator, as memory is needed
   to allocate page tables used for frame table mapping.
2. Calculating RAM size and the RAM end address.
3. Setting up direct map mappings from each RAM bank and initialize
   directmap_virt_start (also introduce XENHEAP_VIRT_START which is
   defined as directmap_virt_start) to be properly aligned with RAM
   start to use more superpages to reduce pressure on the TLB.
4. Setting up frame table mappings from physical address 0 to ram_end
   to simplify mfn_to_page() and page_to_mfn() conversions.
5. Setting up total_pages and max_page.

Update virt_to_maddr() to use introduced XENHEAP_VIRT_START.

Implement maddr_to_virt() function to convert a machine address
to a virtual address. This function is specifically designed to be used
only for the DIRECTMAP region, so a check has been added to ensure that
the address does not exceed DIRECTMAP_SIZE.

After the introduction of maddr_to_virt() the following linkage error starts
to occur and to avoid it share_xen_page_with_guest() stub is added:
  riscv64-linux-gnu-ld: prelink.o: in function `tasklet_kill':
  /build/xen/common/tasklet.c:176: undefined reference to
     `share_xen_page_with_guest'
  riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol `share_xen_page_with_guest'
    isn't defined riscv64-linux-gnu-ld: final link failed: bad value

Despite the linkger fingering tasklet.c, it's trace.o which has the undefined
refenrece:
  $ find . -name \*.o | while read F; do nm $F | grep share_xen_page_with_guest &&
    echo $F; done
                     U share_xen_page_with_guest
    ./xen/common/built_in.o
                     U share_xen_page_with_guest
    ./xen/common/trace.o
                     U share_xen_page_with_guest
    ./xen/prelink.o

Looking at trace.i, there is call of share_xen_page_with_guest() but in case of
when maddr_to_virt() is defined as "return NULL" compiler optimizes the part of
common/trace.c code where share_xen_page_with_priviliged_guest() is called
( there is no any code in dissambled common/trace.o ) so there is no real call
of share_xen_page_with_priviliged_guest().

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 Changes in V2:
  - merge patch 2 ( xen/riscv: implement maddr_to_virt() ) to the current one
    as maddr_to_virt() started to use the thing which are introduced in the
    current patch.
  - merge with patch 1 ( xen/riscv: add stub for share_xen_page_with_guest() )
    as this linkage issue happens during introduction of maddr_to_virt().
  - use mathematical range expressions for log messages.
  - calculate properly amount of mfns in setup_frametable_mapping() taking into
    account that ps and pe can be not properly aligned.
  - drop full stop at the end of debug message.
  - use PFN_DOWN(framsetable_size) instead of frametable_size >> PAGE_SHIFT.
  - round down ram_size when it is being accumulated in setup_mm() to guarantee
    that banks can never have partial pages at their start/end.
  - call setup_directmap_mappings() only for ram bank regions instead of
    mapping [0, ram_end] region.
  - drop directmap_virt_end for now as it isn't used at the moment.
  - update the commit message.
---
 xen/arch/riscv/include/asm/config.h |   1 +
 xen/arch/riscv/include/asm/mm.h     |  13 ++-
 xen/arch/riscv/include/asm/setup.h  |   2 +
 xen/arch/riscv/mm.c                 | 121 ++++++++++++++++++++++++++++
 xen/arch/riscv/setup.c              |   3 +
 xen/arch/riscv/stubs.c              |  10 +++
 6 files changed, 146 insertions(+), 4 deletions(-)

diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
index ad75871283..3aa9afa5ad 100644
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -90,6 +90,7 @@
 #define DIRECTMAP_SLOT_START    200
 #define DIRECTMAP_VIRT_START    SLOTN(DIRECTMAP_SLOT_START)
 #define DIRECTMAP_SIZE          (SLOTN(DIRECTMAP_SLOT_END) - SLOTN(DIRECTMAP_SLOT_START))
+#define XENHEAP_VIRT_START      directmap_virt_start
 
 #define FRAMETABLE_SCALE_FACTOR  (PAGE_SIZE/sizeof(struct page_info))
 #define FRAMETABLE_SIZE_IN_SLOTS (((DIRECTMAP_SIZE / SLOTN(1)) / FRAMETABLE_SCALE_FACTOR) + 1)
diff --git a/xen/arch/riscv/include/asm/mm.h b/xen/arch/riscv/include/asm/mm.h
index ebb142502e..bff4e763d9 100644
--- a/xen/arch/riscv/include/asm/mm.h
+++ b/xen/arch/riscv/include/asm/mm.h
@@ -12,6 +12,8 @@
 
 #include <asm/page-bits.h>
 
+extern vaddr_t directmap_virt_start;
+
 #define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT)
 #define paddr_to_pfn(pa)  ((unsigned long)((pa) >> PAGE_SHIFT))
 
@@ -25,8 +27,11 @@
 
 static inline void *maddr_to_virt(paddr_t ma)
 {
-    BUG_ON("unimplemented");
-    return NULL;
+    unsigned long va_offset = maddr_to_directmapoff(ma);
+
+    ASSERT(va_offset < DIRECTMAP_SIZE);
+
+    return (void *)(XENHEAP_VIRT_START + va_offset);
 }
 
 /*
@@ -37,9 +42,9 @@ static inline void *maddr_to_virt(paddr_t ma)
  */
 static inline unsigned long virt_to_maddr(unsigned long va)
 {
-    if ((va >= DIRECTMAP_VIRT_START) &&
+    if ((va >= XENHEAP_VIRT_START) &&
         (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
-        return directmapoff_to_maddr(va - DIRECTMAP_VIRT_START);
+        return directmapoff_to_maddr(va - XENHEAP_VIRT_START);
 
     BUILD_BUG_ON(XEN_VIRT_SIZE != MB(2));
     ASSERT((va >> (PAGETABLE_ORDER + PAGE_SHIFT)) ==
diff --git a/xen/arch/riscv/include/asm/setup.h b/xen/arch/riscv/include/asm/setup.h
index c0214a9bf2..844a2f0ef1 100644
--- a/xen/arch/riscv/include/asm/setup.h
+++ b/xen/arch/riscv/include/asm/setup.h
@@ -5,6 +5,8 @@
 
 #define max_init_domid (0)
 
+void setup_mm(void);
+
 #endif /* ASM__RISCV__SETUP_H */
 
 /*
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 27026d803b..5be5a7b52a 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -8,6 +8,7 @@
 #include <xen/libfdt/libfdt.h>
 #include <xen/macros.h>
 #include <xen/mm.h>
+#include <xen/pdx.h>
 #include <xen/pfn.h>
 #include <xen/sections.h>
 #include <xen/sizes.h>
@@ -423,3 +424,123 @@ void * __init early_fdt_map(paddr_t fdt_paddr)
 
     return fdt_virt;
 }
+
+#ifndef CONFIG_RISCV_32
+
+#define ROUNDDOWN(addr, size)  ((addr) & ~((size) - 1))
+
+/* Map a frame table to cover physical addresses ps through pe */
+static void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
+{
+    paddr_t aligned_ps = ROUNDDOWN(ps, PAGE_SIZE);
+    paddr_t aligned_pe = ROUNDUP(pe, PAGE_SIZE);
+    unsigned long nr_mfns = PFN_DOWN(aligned_pe - aligned_ps);
+    unsigned long frametable_size = nr_mfns * sizeof(struct page_info);
+    mfn_t base_mfn;
+
+    if ( frametable_size > FRAMETABLE_SIZE )
+        panic("The frametable cannot cover the physical region [%#"PRIpaddr" - %#"PRIpaddr")\n",
+              ps, pe);
+
+    frametable_size = ROUNDUP(frametable_size, MB(2));
+    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, PFN_DOWN(MB(2)));
+
+    if ( map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
+                          PFN_DOWN(frametable_size),
+                          PAGE_HYPERVISOR_RW) )
+        panic("Unable to setup the frametable mappings\n");
+
+    memset(&frame_table[0], 0, nr_mfns * sizeof(struct page_info));
+    memset(&frame_table[nr_mfns], -1,
+           frametable_size - (nr_mfns * sizeof(struct page_info)));
+}
+
+
+static mfn_t __ro_after_init directmap_mfn_start = INVALID_MFN_INITIALIZER;
+vaddr_t __ro_after_init directmap_virt_start;
+
+/* Map the region in the directmap area. */
+static void __init setup_directmap_mappings(unsigned long base_mfn,
+                                            unsigned long nr_mfns)
+{
+    int rc;
+
+    /* First call sets the directmap physical and virtual offset. */
+    if ( mfn_eq(directmap_mfn_start, INVALID_MFN) )
+    {
+        directmap_mfn_start = _mfn(base_mfn);
+
+        /*
+         * The base address may not be aligned to the second level
+         * size (e.g. 1GB when using 4KB pages). This would prevent
+         * superpage mappings for all the regions because the virtual
+         * address and machine address should both be suitably aligned.
+         *
+         * Prevent that by offsetting the start of the directmap virtual
+         * address.
+         */
+        directmap_virt_start = DIRECTMAP_VIRT_START + pfn_to_paddr(base_mfn);
+    }
+
+    if ( base_mfn < mfn_x(directmap_mfn_start) )
+        panic("cannot add directmap mapping at %#lx below heap start %#lx\n",
+              base_mfn, mfn_x(directmap_mfn_start));
+
+    rc = map_pages_to_xen((vaddr_t)mfn_to_virt(base_mfn),
+                          _mfn(base_mfn), nr_mfns,
+                          PAGE_HYPERVISOR_RW);
+    if ( rc )
+        panic("Unable to setup the directmap mappings.\n");
+}
+
+/*
+ * Setup memory management
+ *
+ * RISC-V 64 has a large virtual address space (the minimum supported
+ * MMU mode is Sv39, which provides TBs of VA space).
+ * In the case of RISC-V 64, the directmap and frametable are mapped
+ * starting from physical address 0 to simplify the page_to_mfn(),
+ * mfn_to_page(), and maddr_to_virt() calculations, as there is no need
+ * to account for {directmap, frametable}_base_pdx in this setup.
+ */
+void __init setup_mm(void)
+{
+    const struct membanks *banks = bootinfo_get_mem();
+    paddr_t ram_start = INVALID_PADDR;
+    paddr_t ram_end = 0;
+    paddr_t ram_size = 0;
+    unsigned int i;
+
+    /*
+     * We need some memory to allocate the page-tables used for the directmap
+     * mappings. But some regions may contain memory already allocated
+     * for other uses (e.g. modules, reserved-memory...).
+     *
+     * For simplicity, add all the free regions in the boot allocator.
+     */
+    populate_boot_allocator();
+
+    total_pages = 0;
+
+    for ( i = 0; i < banks->nr_banks; i++ )
+    {
+        const struct membank *bank = &banks->bank[i];
+        paddr_t bank_end = bank->start + bank->size;
+
+        ram_size += ROUNDDOWN(bank->size, PAGE_SIZE);
+        ram_start = min(ram_start, bank->start);
+        ram_end = max(ram_end, bank_end);
+
+        setup_directmap_mappings(PFN_DOWN(bank->start),
+                                 PFN_DOWN(bank->size));
+    }
+
+    total_pages = PFN_DOWN(ram_size);
+
+    setup_frametable_mappings(0, ram_end);
+    max_page = PFN_DOWN(ram_end);
+}
+
+#else /* CONFIG_RISCV_32 */
+#error setup_mm(), setup_{directmap,frametable}_mapping() should be implemented for RV_32
+#endif
diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index e29bd75d7c..2887a18c0c 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -12,6 +12,7 @@
 
 #include <asm/early_printk.h>
 #include <asm/sbi.h>
+#include <asm/setup.h>
 #include <asm/smp.h>
 #include <asm/traps.h>
 
@@ -59,6 +60,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
     printk("Command line: %s\n", cmdline);
     cmdline_parse(cmdline);
 
+    setup_mm();
+
     printk("All set up\n");
 
     machine_halt();
diff --git a/xen/arch/riscv/stubs.c b/xen/arch/riscv/stubs.c
index 5951b0ce91..c9a590b225 100644
--- a/xen/arch/riscv/stubs.c
+++ b/xen/arch/riscv/stubs.c
@@ -2,7 +2,9 @@
 #include <xen/cpumask.h>
 #include <xen/domain.h>
 #include <xen/irq.h>
+#include <xen/mm.h>
 #include <xen/nodemask.h>
+#include <xen/sched.h>
 #include <xen/sections.h>
 #include <xen/time.h>
 #include <public/domctl.h>
@@ -409,3 +411,11 @@ unsigned long get_upper_mfn_bound(void)
 {
     BUG_ON("unimplemented");
 }
+
+/* mm.c */
+
+void share_xen_page_with_guest(struct page_info *page, struct domain *d,
+                               enum XENSHARE_flags flags)
+{
+    BUG_ON("unimplemented");
+}
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 15:51:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 15:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824769.1238976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3de7-0006JW-Dk; Wed, 23 Oct 2024 15:51:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824769.1238976; Wed, 23 Oct 2024 15:51: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 1t3de7-0006JN-9X; Wed, 23 Oct 2024 15:51:39 +0000
Received: by outflank-mailman (input) for mailman id 824769;
 Wed, 23 Oct 2024 15:51: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=9cWG=RT=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t3de5-0005bd-UE
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 15:51:37 +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 af98d0cd-9156-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 17:51:37 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c9850ae22eso8794206a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 08:51:37 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm493214466b.79.2024.10.23.08.51.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 08:51:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af98d0cd-9156-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729698696; x=1730303496; 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=qyBwaOLFCgdNslW+ijXmTOFeKlk0y+Q5wJ9cIoxUkRA=;
        b=FOr230G5a5TK18y4jSS5vpoDrvJZEnTgwTxHA9YeuZ6AD1Piq1SVzCgWrkAfV0NjWl
         QnZhIWpeyl2lM+2RL7v2Uqev7IJ6VoM1wMda6CLdWopTITeqzMTe0g9bEqcdtc8B67u9
         fUr7+1KDt4bB0Yogqbaaajo6Syned++6ZRHIgF7FP282TvR50l28WWMu57nwc3V1kRVA
         V0xiU7zb2kUd6s3itL9CMDn+UjCovD4xAxJXd9Zj1DBAo6ziEzEE9lOJTAE/iBXO6+tQ
         +Rnzo8OI8NAXcoZGzyDcHiCWptGI0RqmrRqC532xwUyIwWl/yoZWTOeHF7gFxqN8q7uG
         jyqg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729698696; x=1730303496;
        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=qyBwaOLFCgdNslW+ijXmTOFeKlk0y+Q5wJ9cIoxUkRA=;
        b=Zd2W4xystNr+n/axFfnTiMNMadEEP6XSTgeJ5RD8z4vbKTc/7fsnXYQBm1kJ87/AoN
         dzugegsnzR/Qj/dk+Xfs3yOzFUiKUbYnHxcVZ2J2mw6T3RdbCVp0XIMrw0kfdTgUNDHH
         2O8Thwj9pU0LB0nT+A2UblZX24sOFzzl6LXfuX7oS5YMMrG1gz8iBl+tat8u4eJexNUo
         NlHez5mi2c4lLAgCK9dL8JcPP2fGTvnWQgH70rgR6Y3l92j8Hk7sQHRD+qYFLMNITHxE
         UwJYG98mazOC1XxXKqXPOYvCAi2rmPb77lDqxs385U/HiGVhxUmSSiyfY7z4SWxZeHt4
         1xkQ==
X-Gm-Message-State: AOJu0YxB/qZ00LkVwCcmCu0YH0X6jRGjMbpqsOPtXN6ZWCR3tjvhvlTe
	+/eS/rhTReZIqgElFHxHrSVioo/iSLoJ+TIWNcJYrzNUDF3NSmuQJNUiUg==
X-Google-Smtp-Source: AGHT+IFR0DKvwk+yRKTHpgDVUpZ2peg9bCMsB1UnkX8Ai+O4dSBPWaMRSby8JjufyQYx5dy5AVosIA==
X-Received: by 2002:a17:907:1ca3:b0:a9a:6477:bd03 with SMTP id a640c23a62f3a-a9abf8a5023mr230107266b.38.1729698695787;
        Wed, 23 Oct 2024 08:51:35 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 3/3] xen/riscv: finalize boot allocator and transition to boot state
Date: Wed, 23 Oct 2024 17:50:24 +0200
Message-ID: <f54c3ee4288a23cd3275e156993acd893ac38a36.1729697111.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729697111.git.oleksii.kurochko@gmail.com>
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a call to end_boot_allocator() in start_xen() to finalize the
boot memory allocator, moving free pages to the domain sub-allocator.

After initializing the memory subsystem, update `system_state` from
`SYS_STATE_early_boot` to `SYS_STATE_boot`, signifying the end of the
early boot phase.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Change in V2:
 - Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/riscv/setup.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 3652cb056d..9680332fee 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -65,6 +65,14 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
 
     vm_init();
 
+    end_boot_allocator();
+
+    /*
+     * The memory subsystem has been initialized, we can now switch from
+     * early_boot -> boot.
+     */
+    system_state = SYS_STATE_boot;
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 15:51:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 15:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824766.1238946 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3de4-0005bx-Hd; Wed, 23 Oct 2024 15:51:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824766.1238946; Wed, 23 Oct 2024 15:51: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 1t3de4-0005bq-Ex; Wed, 23 Oct 2024 15:51:36 +0000
Received: by outflank-mailman (input) for mailman id 824766;
 Wed, 23 Oct 2024 15:51: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=9cWG=RT=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t3de3-0005bd-8T
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 15:51:35 +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 ad91b7b1-9156-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 17:51:33 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a99f1fd20c4so942103866b.0
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 08:51:33 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm493214466b.79.2024.10.23.08.51.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 08:51:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad91b7b1-9156-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729698693; x=1730303493; 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=cG3Nd1yIMK8FzQpFwj6QOUTMN380D85LctnvHR1B1cw=;
        b=EFnRUHisv0UR4c1YcNXfvvA/dhiA+UXj/PTwFMY+Bb9EMW9Hhy+jupbUTMvsE3OEP7
         nHXgsamsVOA4WkrGoBzdsqgIWvcAJwIcstB13C5T3cOk9Z/ciH6s1pOmUOr56rzK9bNf
         FfV0lzkLgc3NZMl98/7di3w7+tAYLR8A3J+C1T2wKNTuphZ56yVx2EPPAtDI8LzUIJRX
         nm//7C3/6wyyscK1L0X2DcoazLuMGLoBFB/x1gzvgWG8E1Jf7SdmiYmMA/f/aiP+6f8r
         y8pRcA+aUvxUGuAnileCKqqF1WwBuurPJqofiIAep0ctmQEKhC3MgCWoHSztC9+Nx44w
         4dSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729698693; x=1730303493;
        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=cG3Nd1yIMK8FzQpFwj6QOUTMN380D85LctnvHR1B1cw=;
        b=FerdeiPwCRs36Ze92eH55MHnkmw5vEG8X7Ez3oLabmsdYh70ZddIjz0A+1AbxJkR5T
         yh036KXG5ONuTlujedTXteM6pGnENYMfgd7p8V8hdRbqOvdVJ+ilc+S0fA/Ka+ulSpEa
         sIMRuIUW1xTC88iBixqk/9trSQ1te7IbidJcByE8FI2ozqwemyL5SwYYKMLsH6iD3cfW
         sO7V7/uSSvzE/9p2OsdhJUVBbFzJP/eL7imlR/ai+nKDoC4cm7jpt2ansRhb1nkuflXS
         eIVe97zRUI4JCarwOgvXp4Xw0jrATdHkBKNvl5ig184CD4SnvZjdP84jw8nytD45BdFD
         oVtA==
X-Gm-Message-State: AOJu0Yx7EwKkQewQspPiBkQ2y+8ZOvr7qTN/g417PClhr+Vs7FUzGmDq
	Yk98AYLnB/3kQEZyAxg+LIjhXlk8CYC2WLxWFyyDqHbPNpybqgc7+m2LiQ==
X-Google-Smtp-Source: AGHT+IEXjtZEvNvhT2dC8yuE2E+E1nOG61XRGZGpg7SD6pUte/51Ch9igaAhIdIFgMwDWNI9uV3sGA==
X-Received: by 2002:a17:907:1ca3:b0:a9a:80f9:d4e0 with SMTP id a640c23a62f3a-a9abf8a3f91mr233926266b.34.1729698692517;
        Wed, 23 Oct 2024 08:51:32 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 0/3] Setup memory management for RISC-V
Date: Wed, 23 Oct 2024 17:50:21 +0200
Message-ID: <cover.1729697111.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Finish initializing the memory subsystem by mapping the direct map and
frame table.
In the case of RISC-V 64, which has a large virtual address space
(the minimum supported MMU mode is Sv39, providing TB of VA space),
so frame table is mapped starting from physical address
0 to ram_end.
This simplifies the calculations and thereby improves performance for
page_to_mfn(), mfn_to_page() as there is no frametable_base_pdx or
frametable_base_mfn ( if CONFIG_PDX_COMPRESSION=n).
XENHEAP_VIRT_START is introduced which is equal to directmap_virt_start which
is aligned with ram start to have superpages mapping and reduce pressure only
TLB.
In addition, initialize the VMAP_DEFAULT region, finalize the boot allocator,
and update the system state from early_boot to boot.

Introduce share_xen_page_with_guest() to deal with linkage error:
  riscv64-linux-gnu-ld: prelink.o: in function `tasklet_kill':
  /build/xen/common/tasklet.c:176: undefined reference to
     `share_xen_page_with_guest'
  riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol `share_xen_page_with_guest'
    isn't defined riscv64-linux-gnu-ld: final link failed: bad value

The function maddr_to_virt() is introduced as part of this patch series, as
setup_directmap_mappings() uses it indirectly through mfn_to_virt().

virt_to_maddr() is updated as it is started to use XENHEAP_VIRT_START which is
introduced in this patch series.

---
Changes in V2:
 - update the cover letter message.
 - merge first 3 patches to "introduce setup_mm()" patch as after setup_mm()
   rework all the things in first two patches of v1 started to use changes
   introduced in "introduce setup_mm()" patch.
 - add Acked-by for some patch series.
 - All other details please look at the specific patch.
---

Oleksii Kurochko (3):
  xen/riscv: introduce setup_mm()
  xen/riscv: initialize the VMAP_DEFAULT virtual range
  xen/riscv: finalize boot allocator and transition to boot state

 xen/arch/riscv/include/asm/config.h |   1 +
 xen/arch/riscv/include/asm/mm.h     |  13 ++-
 xen/arch/riscv/include/asm/setup.h  |   2 +
 xen/arch/riscv/mm.c                 | 132 ++++++++++++++++++++++++++--
 xen/arch/riscv/pt.c                 |   6 ++
 xen/arch/riscv/setup.c              |  14 +++
 xen/arch/riscv/stubs.c              |  10 +++
 7 files changed, 168 insertions(+), 10 deletions(-)

-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 15:51:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 15:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824768.1238962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3de6-0005un-63; Wed, 23 Oct 2024 15:51:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824768.1238962; Wed, 23 Oct 2024 15:51: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 1t3de6-0005tp-1m; Wed, 23 Oct 2024 15:51:38 +0000
Received: by outflank-mailman (input) for mailman id 824768;
 Wed, 23 Oct 2024 15:51: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=9cWG=RT=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t3de4-0005bd-Tv
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 15:51:36 +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 aead0d55-9156-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 17:51:35 +0200 (CEST)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9abe139088so158736266b.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 08:51:35 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm493214466b.79.2024.10.23.08.51.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 08:51:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aead0d55-9156-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729698695; x=1730303495; 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=h1/gFSOgI0n7fD5scAMG4iAUzufNhbJI1UL9lZIj5zM=;
        b=Zk71UPDrnWoY++hFGPKQBAsCVAsJlBr56+deoeKqP/M138aUtadvOhOuxDTwcAYtVf
         +I3oGbQ7MqRir6rld9u0guhcLk0je5SpYXnFmGsQKIkrjzqty4OIeoCgbuxn3vWi1SF6
         aY7/iqcWwVuOqIuZltWnlndr+HUe+0rQH0+iGmJsTG6H2QG5uKjBAl+yruJUuFrSoTDQ
         GCC5KYuKW4qmVWzeR0bjaMf+cnqVG4f/bXxyHRhHQYqhvUvMxp91N+7+XERQfUT3263B
         Q7o8fqRYHcGuS8AfYJihoHwsRUbmpIOQliPlHHkhSK92mqnCN3H0GqNdmx6i70l8zXQL
         X6Iw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729698695; x=1730303495;
        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=h1/gFSOgI0n7fD5scAMG4iAUzufNhbJI1UL9lZIj5zM=;
        b=J2ffRWD2ebAk2Yi2V4ZTw8HlvgowhWec8dwsfHQmqLjfkhF05XmB/x5Bqar1uSc6jp
         FxkVDzeL7uOyIX+ChnEyWj8JgV6lt9E270LZHF41YMp7F8UvOsrEXM0vs6TaQ9Er4Pmo
         1vJeAhLw2ia7mfk8NFeuPN58+uepr12XOvFOLtEPJNm6LG7bpwQ7XUJF4EIxBG4RxJA+
         PooG1672RMZfztlPbGL6FvZiSgCr6DRW2WVbIuaq1sM2fr+ENAetWAnWH+FnVW7Q3d+v
         G/3F62KW+QgMdPdOc5p4MwGBDsIA54wKoDMgpcCKk98VQ6nC34dwa8jA52pgtzWYHFqK
         dApA==
X-Gm-Message-State: AOJu0YyHQAdA91mJgIjH+dWqzIOZX1348CqL2EU8IEjE+7joTSY/yHC6
	QY3srC12qutkhi0KBhFB1oYk8xRetpuHZA8q9DnCzHEPOChyn4aODIyq0Q==
X-Google-Smtp-Source: AGHT+IHz/V25m9u1OlsezUz8Gn3how6y3qg3H8yFaNBhmaZQT6vgjI8xnBXhKGQmXrWyYFCGTrWPXw==
X-Received: by 2002:a17:906:6a25:b0:a9a:7899:eb87 with SMTP id a640c23a62f3a-a9abf84884amr360254966b.13.1729698694717;
        Wed, 23 Oct 2024 08:51:34 -0700 (PDT)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2 2/3] xen/riscv: initialize the VMAP_DEFAULT virtual range
Date: Wed, 23 Oct 2024 17:50:23 +0200
Message-ID: <4ae2957044e4e17be652d5fd28d54fd38110e4cf.1729697111.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <cover.1729697111.git.oleksii.kurochko@gmail.com>
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Call vm_init() to initialize the VMAP_DEFAULT virtual range.

To support this, introduce the populate_pt_range() and
arch_vmap_virt_end() functions, which are used by
vm_init()->vm_init_type().

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Change in V2:
 - Acked-by: Jan Beulich <jbeulich@suse.com>
---
 xen/arch/riscv/mm.c    | 11 +++++------
 xen/arch/riscv/pt.c    |  6 ++++++
 xen/arch/riscv/setup.c |  3 +++
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 5be5a7b52a..262cec811e 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -352,12 +352,6 @@ void arch_dump_shared_mem_info(void)
     BUG_ON("unimplemented");
 }
 
-int populate_pt_range(unsigned long virt, unsigned long nr_mfns)
-{
-    BUG_ON("unimplemented");
-    return -1;
-}
-
 int xenmem_add_to_physmap_one(struct domain *d, unsigned int space,
                               union add_to_physmap_extra extra,
                               unsigned long idx, gfn_t gfn)
@@ -544,3 +538,8 @@ void __init setup_mm(void)
 #else /* CONFIG_RISCV_32 */
 #error setup_mm(), setup_{directmap,frametable}_mapping() should be implemented for RV_32
 #endif
+
+void *__init arch_vmap_virt_end(void)
+{
+    return (void *)(VMAP_VIRT_START + VMAP_VIRT_SIZE);
+}
diff --git a/xen/arch/riscv/pt.c b/xen/arch/riscv/pt.c
index cc5e2d3266..d62aceb36c 100644
--- a/xen/arch/riscv/pt.c
+++ b/xen/arch/riscv/pt.c
@@ -1,6 +1,7 @@
 #include <xen/bug.h>
 #include <xen/domain_page.h>
 #include <xen/errno.h>
+#include <xen/init.h>
 #include <xen/lib.h>
 #include <xen/mm.h>
 #include <xen/pfn.h>
@@ -419,3 +420,8 @@ int map_pages_to_xen(unsigned long virt,
 
     return pt_update(virt, mfn, nr_mfns, flags);
 }
+
+int __init populate_pt_range(unsigned long virt, unsigned long nr_mfns)
+{
+    return pt_update(virt, INVALID_MFN, nr_mfns, PTE_POPULATE);
+}
diff --git a/xen/arch/riscv/setup.c b/xen/arch/riscv/setup.c
index 2887a18c0c..3652cb056d 100644
--- a/xen/arch/riscv/setup.c
+++ b/xen/arch/riscv/setup.c
@@ -7,6 +7,7 @@
 #include <xen/init.h>
 #include <xen/mm.h>
 #include <xen/shutdown.h>
+#include <xen/vmap.h>
 
 #include <public/version.h>
 
@@ -62,6 +63,8 @@ void __init noreturn start_xen(unsigned long bootcpu_id,
 
     setup_mm();
 
+    vm_init();
+
     printk("All set up\n");
 
     machine_halt();
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 15:55:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 15:55:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824793.1238993 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3dhe-0007uZ-Ul; Wed, 23 Oct 2024 15:55:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824793.1238993; Wed, 23 Oct 2024 15: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 1t3dhe-0007uS-S6; Wed, 23 Oct 2024 15:55:18 +0000
Received: by outflank-mailman (input) for mailman id 824793;
 Wed, 23 Oct 2024 15:55: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=fY0y=RT=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3dhd-0007pq-Kr
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 15:55:17 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 30d27ce4-9157-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 17:55:15 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729698905356654.7501812217625;
 Wed, 23 Oct 2024 08:55:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 30d27ce4-9157-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729698908; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=GUElh1m/CFBQY72N22CHjH8K/u66RhbGwkUlU84CgMGv7HlSQ6ACPEFo7rc3kpyF9heXE78HdX+LYi6MS4yy3L5/g5gt4DjUW1hAb1pC/6CcIGaLbeOo62oL9rwRA42dNqA65TT9sUEda5bi46XRDPiLGRLSAjPuncy0yMNOb7I=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729698908; 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=ByjWusVPfbnuWZSa75rUWLRBXrn6qYPhbuIkO5sd82c=; 
	b=NvDZk7LV1gNgeb75UC3JnztVGXQnPGhpT1ixITfXWZGMNp1pwpTrmdiFGa1SeBGW/RXVGxYygFbHe7xrRBEaAKXEGIfUyeDtXQ3uFsE/9lfAAZgcYAtYClmoqg83hh8Leukkcz81ILinPJ67dB/fwkuTlJ29hj3mAL1OFs5WnnE=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729698908;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=ByjWusVPfbnuWZSa75rUWLRBXrn6qYPhbuIkO5sd82c=;
	b=CeAHIp3KSaj+uexG9lUCvtJKOlYsSTed/dmWLD/cQ8HLX59nVI+DKMHvjqz7v+E9
	6ocxFqYGl+6iBKeIuo59L7GPhZqq/FCJ5O6E9W4ph2moj2MxSi11qpiYMkAvH52RKyK
	9BomY6gukiwYVPKQic8idEcxfIzmJARKD1Re7WTk=
Message-ID: <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
Date: Wed, 23 Oct 2024 11:55:03 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241023131005.32144-4-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ZohoMailClient: External

On 10/23/24 09:10, Juergen Gross wrote:
> Add a new domctl sub-function to get data of a domain having changed
> state (this is needed by Xenstore).
> 
> The returned state just contains the domid, the domain unique id,
> and some flags (existing, shutdown, dying).
> 
> In order to enable Xenstore stubdom being built for multiple Xen
> versions, make this domctl stable.  For stable domctls the
> interface_version is specific to the respective domctl op and it is an
> in/out parameter: On input the caller is specifying the desired version
> of the op, while on output the hypervisor will return the used version
> (this will be at max the caller supplied version, but might be lower in
> case the hypervisor doesn't support this version).
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V1:
> - use a domctl subop for the new interface (Jan Beulich)
> ---
>   tools/flask/policy/modules/dom0.te  |  2 +-
>   xen/common/domain.c                 | 51 +++++++++++++++++++++++++++++
>   xen/common/domctl.c                 | 19 ++++++++++-
>   xen/common/event_channel.c          |  9 ++++-
>   xen/include/public/domctl.h         | 33 +++++++++++++++++++
>   xen/include/xen/event.h             |  6 ++++
>   xen/include/xen/sched.h             |  2 ++
>   xen/include/xsm/dummy.h             |  8 +++++
>   xen/include/xsm/xsm.h               |  6 ++++
>   xen/xsm/dummy.c                     |  1 +
>   xen/xsm/flask/hooks.c               |  7 ++++
>   xen/xsm/flask/policy/access_vectors |  2 ++
>   12 files changed, 143 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/flask/policy/modules/dom0.te b/tools/flask/policy/modules/dom0.te
> index 16b8c9646d..6043c01b12 100644
> --- a/tools/flask/policy/modules/dom0.te
> +++ b/tools/flask/policy/modules/dom0.te
> @@ -40,7 +40,7 @@ allow dom0_t dom0_t:domain {
>   };
>   allow dom0_t dom0_t:domain2 {
>   	set_cpu_policy gettsc settsc setscheduler set_vnumainfo
> -	get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy
> +	get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy get_domain_state

I don't think that is where you want it, as that restricts dom0 to only 
being able to make that call against dom0. The question I have is, are 
you looking for this permission to be explicitly assigned to dom0 or to 
the domain type that was allowed to create the domain. IMHO, I think you 
would want the latter, so not only should the permission go here, but 
also added to xen.if:create_domain_common.

Additionally, I would also recommend adding the following to xenstore.te:

allow xenstore_t domain_type:domain get_domain_state

>   allow dom0_t dom0_t:resource { add remove };
>   

...

> @@ -866,6 +873,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>                   __HYPERVISOR_domctl, "h", u_domctl);
>           break;
>   
> +    case XEN_DOMCTL_get_domain_state:
> +        ret = xsm_get_domain_state(XSM_HOOK, d);

XSM_HOOK will allow any domain to make this call on any domain. What I 
think you want here is XSM_XS_PRIV. That will allow either a domain 
flagged as the xenstore domain or dom0 to make the call.

> +        if ( ret )
> +            break;
> +
> +        copyback = 1;
> +        op->interface_version = XEN_DOMCTL_GETDOMSTATE_VERS_MAX;
> +        ret = get_domain_state(&op->u.get_domain_state, d);
> +        break;
> +
>       default:
>           ret = arch_do_domctl(op, d, u_domctl);
>           break;

...

> @@ -815,6 +816,13 @@ static XSM_INLINE int cf_check xsm_argo_send(
>   
>   #endif /* CONFIG_ARGO */
>   
> +static XSM_INLINE int cf_check xsm_get_domain_state(
> +    XSM_DEFAULT_ARG struct domain *d)
> +{
> +    XSM_ASSERT_ACTION(XSM_HOOK);

Per the above, this would need changed to XSM_XS_PRIV.

> +    return xsm_default_action(action, current->domain, d);
> +}
> +
>   #include <public/version.h>
>   static XSM_INLINE int cf_check xsm_xen_version(XSM_DEFAULT_ARG uint32_t op)
>   {

...

> @@ -1853,6 +1854,11 @@ static int cf_check flask_argo_send(
>   
>   #endif
>   
> +static int cf_check flask_get_domain_state(struct domain *d)
> +{
> +    return current_has_perm(d, SECCLASS_DOMAIN, DOMAIN__GET_DOMAIN_STATE);

I believe you want SECCLASS_DOMAIN2 here.

> +}
> +
>   static const struct xsm_ops __initconst_cf_clobber flask_ops = {
>       .set_system_active = flask_set_system_active,
>       .security_domaininfo = flask_security_domaininfo,

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 16:07:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 16:07:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824813.1239007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3dtO-0002Ho-WE; Wed, 23 Oct 2024 16:07:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824813.1239007; Wed, 23 Oct 2024 16:07: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 1t3dtO-0002Hh-Tc; Wed, 23 Oct 2024 16:07:26 +0000
Received: by outflank-mailman (input) for mailman id 824813;
 Wed, 23 Oct 2024 16:07: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=gNzn=RT=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t3dtN-0002HZ-MH
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 16:07:25 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20617.outbound.protection.outlook.com
 [2a01:111:f403:2407::617])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e3ffe5c0-9158-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 18:07:24 +0200 (CEST)
Received: from MW4PR12MB7334.namprd12.prod.outlook.com (2603:10b6:303:219::21)
 by IA1PR12MB6305.namprd12.prod.outlook.com (2603:10b6:208:3e7::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Wed, 23 Oct
 2024 16:07:20 +0000
Received: from MW4PR12MB7334.namprd12.prod.outlook.com
 ([fe80::2e77:557:17d5:86f8]) by MW4PR12MB7334.namprd12.prod.outlook.com
 ([fe80::2e77:557:17d5:86f8%5]) with mapi id 15.20.8093.018; Wed, 23 Oct 2024
 16:07: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: e3ffe5c0-9158-11ef-a0be-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=uQSkzid7N+GltgSmlRZynnudVqrVlzJ4HDSzDusJjd4/GmWDfLDAkFugHfPzULYfZdCVIswtXtTwTD3xEfhjca7G4W6JaFWTnHJMExXqZrs2a74zVxBiA9/3EfIdyY1cT8BEoBTl321d3m2acWRMGUeGwfN86z8ozvotcnY/42EpFHEYXGRNvx2H30YIKRCMAPbabCahAphUoF49uNbi9Ep51dHQQ2JQfUg54cBDBqAqa+FboeZeqBAiSYq5qvF4wLSf1cYuRklL65FuysZE/QPpKlQTSXG49EcagLQxYpHmlbSdtMXLKk69vpGHRC2Mdc9GfVVgMol8QB3eY2Co1g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=6qIt4seSLEjmWBOcFg4HlqmTjv1excIUlr7bVaa8hbs=;
 b=S3HRGOtFxaG0C4M4opV6MD2ozG/fRoj5pXRx89LoFnOkNC3KWS5Kn4QLWW+koJDPyGLfHHvk6c9JnLXTtd4ez58x+olzIsTqtzYfSKOgRgc6mgp/2vPzN4upXCYoQ+AOcWS4l9y5XiqJl1Qlre6aTgdD66z//NCnqM8UN1tbaRq9GRAEjAhqVl2e18vGAFX2F+O/1J4o22FZtCz73jNaHViJfbsBgBPHx8Voq1zenziBO62CeltwSwHQMd7x/oaJ/jKTMgMb4kmxYoWmzKrAYXb5g6IeS2hoK78kIMoM+wOI5ncacTs8tH+N+mR1u4hxz/YVrbWRBu3NwI2RoWymfg==
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=6qIt4seSLEjmWBOcFg4HlqmTjv1excIUlr7bVaa8hbs=;
 b=L3mUMp3xi2lBy72BtumjU4nxMYQ4Woy+i7M6cHuRW1qWQ0Rae2Fp8Lthbu5eweqT8zWGz4sD82Xod/TrI4KWM0jSCCHMS9aqMAfHt9G9/yl2AmPh904sDHMV/y6WDq/EdqdmTH8+0n96dEsS5bVZz4JRqtvvkSUCHLFz7KIlB1A=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
Date: Wed, 23 Oct 2024 17:06:52 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>, Julien Grall <julien@xen.org>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
 <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0629.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:294::10) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW4PR12MB7334:EE_|IA1PR12MB6305:EE_
X-MS-Office365-Filtering-Correlation-Id: f5357a29-4e95-4511-9148-08dcf37cbbfe
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?aFlFSlg4VVhPV2ZxNmhNUjFmdGIvcDByYmZBS1hhRjF6dGRRYlB1UmZDalpH?=
 =?utf-8?B?MGs4SjNqL21VTk0xdjNKU2dHUUtnZ3U2ZkxkOUZSb2wvSlArMEVIbm9wVUdC?=
 =?utf-8?B?MHR0eWNxRTNkVHRNODZsNm9FZ1BvZ2t6aUJJWmxBcnlHTmxNaTU1N2NhWDRT?=
 =?utf-8?B?UGxDMUpteEtoV1JDWDRSUWc4bHpHZ1dwYjMxOTdKWWhwbWVnZ2h6ckczY0ZR?=
 =?utf-8?B?RnJ4ZmxYRGx4WG1TSFYvbVVGNjBUQlZJSVoyazVwbWo3NTFLQWc2OVlMN3Jj?=
 =?utf-8?B?cmRkU0V4MkxRVzFzamlaRzVRSDNUNnpadlI0ZUpRd3BuQ1BEcGFoOGV2RFFi?=
 =?utf-8?B?SGVWTUl0d1dmY1RCNnhLbGxPZGM2TFAvU3ZqNmIwdjVKczBUci9Va3dYalZh?=
 =?utf-8?B?Y0EzOGRwMWc3MWhFcVF2eUlDR055TC9jaUpYTmpacXYzVGprdXdHMURuUXll?=
 =?utf-8?B?NVlJUitwbnFDUGxIUVpwMzdweWdkNFR0dmFESHpIS2g1NmxFNkQzR0txSXBM?=
 =?utf-8?B?OWE3Qys5M1JpajRDTnFEdXdSaGpFUXVVdlA2OTNFVXZtYzBnR1IvbitEZDJB?=
 =?utf-8?B?ZkZtNVd0SmFESnBtLy8ycCs3YmVaL2VuaWpud3lXbFFIU0FrS3NYRjRjRkxN?=
 =?utf-8?B?d3Awb3Y0ZGh0ZkxqVCtWNUlwaHN0aUtqWGs0emxUR1BsNFFCTGIvRmJIMktD?=
 =?utf-8?B?cHQ2MTNNdnZiTmVuN2JMSjZiTjBTWjJtclI3akk1MWRZa1d5UWdRTDdZTHJo?=
 =?utf-8?B?NnBiZE5ZcUZSVW9uSkkxUWdKTFVydjkvUWVPbEdLOE9LR1JRc0c0bmJjbWNx?=
 =?utf-8?B?emNsZS9sSGtSTldlKzZ3SnJEWXArSm5rY0hvNVAxTnFjUTE0SGMvNWVoS2RV?=
 =?utf-8?B?ejJyaHJoMjZzYTRSWVBWeFJubmE2WTFtYzJiR29SZ3p0SEZtaUtYMUk5Y29T?=
 =?utf-8?B?b1F0d0hId2gxY25TbXpxK1JmQitDNXlKYUNXYzR4U1VieWNhVWlmSjRZejFS?=
 =?utf-8?B?QzJER0FjelB2bW9SWWExT3ZNZGhZTm1CWUpYYzV6UDhvWjZhZTV2L1dyYXlh?=
 =?utf-8?B?OW5NM1ZoVTBFUGg3NG1UbTN0ZzhNeDltU2xPbFJiSERDaVEyRUpnSk9wNi9Y?=
 =?utf-8?B?bjM3YWlVSzMxWkVYQ2I5QmRLa1QyMjVjSXVrVkJpcGF5VitySURWSHpocHRU?=
 =?utf-8?B?NTcyc1VHOWdJamhBKy9kZXFucXFOVzNJN2hXREVxaU0vTGFzMWFPbTk2eDBv?=
 =?utf-8?B?MURnMlNBMEloR1lXU2hadjJDZjErSlh2UnU2blNFd21WUDdtcWJLZ0EzcFg4?=
 =?utf-8?B?Q05yK25FeURQUisxNWhHK0VPcVVvb3YzcndYbFovblZKYkZobWpxSXoycU9G?=
 =?utf-8?B?NE95UVJ6OEtsV3RMcTREdkxET1NvRUszM3NGeE1VWTJZbUJlV3cwdFdKVGZU?=
 =?utf-8?B?UndqV1hCNUhXQnRxY1JwdmgrNnlWdFdmdEsxelZiMmlkMzdkL2N1MDdnVzVK?=
 =?utf-8?B?ZHlidmIxcWJ4UVoyZW82aHczaVowOWR0Yzd3dkVwRngvYXRmME5lb0JFNTZQ?=
 =?utf-8?B?MjBaZXFqWjZtSS9YMzBkdng2QnlkTXoyU1BXb2FtSGdPdUtEODR5ek9lK1hM?=
 =?utf-8?B?aFBFYlBHNjhlQnpibjJuTTB1MkZVME5SRDlaUkFsTGtiQ1lDWWU4ZVhzKzZP?=
 =?utf-8?B?YWlTeVZicjc0dmtFZTZmNjFHVjVXZkhoeVhvVGw4YXlKZG9RTVFtWFl4MHgr?=
 =?utf-8?Q?zVnXlS69usTZ2AXVBfbvbFnDqxaBCciMa9wlSU5?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR12MB7334.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?QVU5RUg1VElIaENhRXJJb1pRamZBd05RSFZRcU0rQkxnZllpSXk5aXRWTThF?=
 =?utf-8?B?Q2lKU09rbFl4elZBSTYrUms4QStsMEdyWVBjMDdRRU9BMkk5U1BsaVFIQXBv?=
 =?utf-8?B?NWd5RmNCdnNjTEJCdGN3VHRCdC9tYk1NcEkwVGNOam9WUFg3c0VpVnl5RVYw?=
 =?utf-8?B?d2VoZnp2cG1seTFoN0JNdFpyRjk1emtrbmgwcmc1RVhlOVB2dXYzei9iZkhv?=
 =?utf-8?B?eXF0Skx3Q014UlpHMy82WWdjNWRKRzZLV2NDSHpPcmlUeXBCYkZaUnlOYTVX?=
 =?utf-8?B?Mitodi9Dcjg1L29NZGVEK0gzUkdPVllnNXV6Si9kSlFlNXpXbWRNY2ttOWFC?=
 =?utf-8?B?VWVUUDE3U3BMM2ZzUllFblhRNkxDU1NmaUY3bTh5UEFyWGc1RUswY1NoQkVN?=
 =?utf-8?B?cEpjaEVJTm5rQUx4cGVoanNVT2pYWXdIb0k1VTQ3VmFWM1ZUOHdQM3dFT1R6?=
 =?utf-8?B?a3NZbHd3eklZa005ckFpQ3R4ZGV4VVdBbFRNMDhnTnduYzRPRk5tc2R6di9Q?=
 =?utf-8?B?N2tIZjBHelhobmlrZ3hRMWFjeUtOSldVV2F4Y0xySWE5OFBRNklZNnZyZWVT?=
 =?utf-8?B?bC83UFUrZmNLODhza3AzeElOZnhlWFo1WDRFWXYzblM4enZ4T21kOVpuWk83?=
 =?utf-8?B?UzNEU3hzUW1KcXVIRzFEN3NYZ0p4ekdGTkdVMUsvUU9wTm9mR01PMmJzdmF2?=
 =?utf-8?B?ZFB5dm0xOHNXVjBIZGg2R096cGVTS25ZMWlHd05XMHlwWXE5K1ZmUm1XMGJn?=
 =?utf-8?B?QmsrUmpzWFlwWXRkd01KSHlSUGh4T1dhM3lOdXBtQzd2VSsreVpXcFJNOEFK?=
 =?utf-8?B?RnVkdCs4VEhpa3EvaGJvZmtrbVk0SFA5UUtkMDUyM0g5UllLVk9OVFA5aUMr?=
 =?utf-8?B?YUU1bldVNzdLYzBKK0p2Zi9WY1hXR1NMWjF6ZTkzQTgveVdlMGdwM3djdUdR?=
 =?utf-8?B?bnBrY2Nza3dDNVhpcjNTcld4WTlKZnl3RG1ueWZFNWxISlI3d0RMdE1LdUxU?=
 =?utf-8?B?TU54bnQ4dVArL1Ayc25aRjNISG40QVlCUkhONjZObXcvdGtyYlRjYU9SRlZm?=
 =?utf-8?B?MHh5Zi9JWkNMam5OZGZTdUpTdldBTkJhVWtYdkZYam9XK1Ixc2NVeDlRV2xv?=
 =?utf-8?B?dDFJYW9LWmVIVXFzaG5LZXJoQmNZeDBIZWdKa292NFczSFRuRlRTSUVDTzU0?=
 =?utf-8?B?dG9wbm1ZcXRyOVJqb1FCNmJLUjZPWlpZcGdGUnZaTkRFdUFXZTlnYUJyMkNm?=
 =?utf-8?B?enp3Q2dnVzdKNUs0bCs5ZSthT2krOG1mWXdkQ0xIMklucUw1QWp1bjFJRUx3?=
 =?utf-8?B?dnhwS3B1Tko2Y3FkWEJsVGZ6bzh4dDZBZFIvR2ZSNVk2MUpMc2F3eGFjVUtM?=
 =?utf-8?B?OWQ2OHRGR3k4bU1YcmRDMUxZeE1NKzB5ZUdsaTRNTW1NNWRKdk1yMEZuVnRq?=
 =?utf-8?B?RG1EUnFJUVVMdDdjSHBoN2w4VWNUQWh0Yjk5R2xBZ2N6UzZxYUMvTUVFdHRr?=
 =?utf-8?B?VnZtS2pkQW1CbHZUN2VkMUFDcmo5V1d2bndVSC9NSHVzeTdidUY4TndxckRl?=
 =?utf-8?B?NStidFRLekVQNktyZC8rRmNvZ1lqNVVUZUNCL245dnZsL0dQUDBVdTJOZ2xw?=
 =?utf-8?B?WVQ2WGlWQi9WSHE0K3BkNjRWZnM3clpaaTUzQ2hINlNDRzBFaDF6d0kyZUhw?=
 =?utf-8?B?RWRJZ2hsSWVId2xqSTczRDZwZmhhVUR5dzdUbTRLaVhKYkI4QWxYR1IwenUz?=
 =?utf-8?B?aXRCUmFteFl4NjJ0Qm8wYVhBeFAwOXVYcmNjaUF2SXJETGtvV05wNXBBc28z?=
 =?utf-8?B?RmhJT1lxQlZLcDRoRWtDd1kwV3U3eDRHN01vVHZGUGY5K291d2tWVHF1Zy8z?=
 =?utf-8?B?TE5FVTJ0UEVVM1JiWmFPWDJHV3doM24yMlU4K2hmZWpIU050aS91aGM5M2xI?=
 =?utf-8?B?REYwak9qbGV0d1lNbzdHZ3pxbjFKOEU3OERpRmlpUncrcjZocVhhMzhiclFO?=
 =?utf-8?B?VkFOL2RHNzYrYXNnNk9KS1ZhaWJJK2RQZ1YvQ3BDWU1ia0NUUlh1RW9GNks5?=
 =?utf-8?B?aEQ2ZmVPNkd1UnZzWW44SWN1TmZIN1NsRFphcHZ1SFpHWVpjbUxtOWRCcEdF?=
 =?utf-8?Q?WwPFTmkIXPirpfmtfWIF/pHJQ?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f5357a29-4e95-4511-9148-08dcf37cbbfe
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2024 16:07:19.8611
 (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: eSHomGtQ/UQKglQ6pxTdg5qYeXMwdcKvTYbLFQqrkQcL15GbBs9sg+0TYg26GGI5cU3iLknZjX45Of+mt4Y3hA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6305

Hi Luca/Julien,

On 22/10/2024 17:31, Luca Fancellu wrote:
> Hi Julien,
>
>> On 22 Oct 2024, at 14:13, Julien Grall <julien@xen.org> wrote:
>>
>>
>>
>> On 22/10/2024 10:56, Luca Fancellu wrote:
>>>> On 22 Oct 2024, at 10:47, Julien Grall <julien@xen.org> wrote:
>>>>
>>>> Hi Luca,
>>>>
>>>> On 22/10/2024 10:41, Luca Fancellu wrote:
>>>>>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
>>>>> 2) dsb+isb barrier after enabling the MPU, since we are enabling the MPU but also because we are disabling the background region
>>>> TBH, I don't understand this one. Why would disabling the background region requires a dsb + isb? Do you have any pointer in the Armv8-R specification?
>>> I’m afraid this is only my deduction, Section C1.4 of the Arm® Architecture Reference Manual Supplement Armv8, for R-profile AArch64 architecture,
>>> (DDI 0600B.a) explains what is the background region, it says it implements physical address range(s), so when we disable it, we would like any data
>>> access to complete before changing this implementation defined range with the ranges defined by us tweaking PRBAR/PRLAR, am I right?
>> My mental model for the ordering is similar to a TLB flush which is:
>>    1/ dsb nsh
>>    2/ tlbi
>>    3/ dsb nsh
>>    4/ isb
>>
>> Enabling the MPU is effectively 2. AFAIK, 1 is only necessary to ensure the update to the page-tables. But it is not a requirement to ensure any data access are completed (otherwise, we would have needed a dsb sy because we don't know how far the access are going...).
> Uhm… I’m not sure we are on the same page, probably I explained that wrongly, so my point is that:
>
> FUNC_LOCAL(enable_mpu)
>      mrs   x0, SCTLR_EL2
>      bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>      orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>      orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>      orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>      dsb   sy
>      ^— This data barrier is needed in order to complete any data access, which guarantees that all explicit memory accesses before
>             this instruction complete, so we can safely turn ON the MPU and disable the background region.

I think Julien agreed to this in a previous email as long as we have an 
appropriate comment. So we will keep this as it is.

- Ayan



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 16:13:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 16:13:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824822.1239018 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3dzD-0004C7-Oc; Wed, 23 Oct 2024 16:13:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824822.1239018; Wed, 23 Oct 2024 16:13: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 1t3dzD-0004C0-LW; Wed, 23 Oct 2024 16:13:27 +0000
Received: by outflank-mailman (input) for mailman id 824822;
 Wed, 23 Oct 2024 16:13: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 1t3dzC-0004Bu-Le
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 16:13:26 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1t3dzC-000Bng-1A;
 Wed, 23 Oct 2024 16:13:26 +0000
Received: from [15.248.2.28] (helo=[10.24.67.32])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t3dzC-0007kQ-4J; Wed, 23 Oct 2024 16:13: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=392S0T7EPErckx6hjW1vTsK1PEBPvip1kCYreU6cWtg=; b=cZz+p2WNaMOgRlikjMtgLhC3rw
	1ngCRBTZcRzQ92KqppJU9JehOHnoSG42t1vHYucnHcUGpcOV3flR9FzXCGhZk0q+OPbS5a5JP3i//
	3Bm1ERKEFREKMcGZvgbm4t3de5mjEY7xC0Z3ElCtJcZGGH/8sTT69xOthLecKbndH6rc=;
Message-ID: <251fb5a2-a8d7-451b-9714-5cc984645354@xen.org>
Date: Wed, 23 Oct 2024 17:13:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
 <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
 <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 23/10/2024 17:06, Ayan Kumar Halder wrote:
> Hi Luca/Julien,
> 
> On 22/10/2024 17:31, Luca Fancellu wrote:
>> Hi Julien,
>>
>>> On 22 Oct 2024, at 14:13, Julien Grall <julien@xen.org> wrote:
>>>
>>>
>>>
>>> On 22/10/2024 10:56, Luca Fancellu wrote:
>>>>> On 22 Oct 2024, at 10:47, Julien Grall <julien@xen.org> wrote:
>>>>>
>>>>> Hi Luca,
>>>>>
>>>>> On 22/10/2024 10:41, Luca Fancellu wrote:
>>>>>>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
>>>>>> 2) dsb+isb barrier after enabling the MPU, since we are enabling 
>>>>>> the MPU but also because we are disabling the background region
>>>>> TBH, I don't understand this one. Why would disabling the 
>>>>> background region requires a dsb + isb? Do you have any pointer in 
>>>>> the Armv8-R specification?
>>>> I’m afraid this is only my deduction, Section C1.4 of the Arm® 
>>>> Architecture Reference Manual Supplement Armv8, for R-profile 
>>>> AArch64 architecture,
>>>> (DDI 0600B.a) explains what is the background region, it says it 
>>>> implements physical address range(s), so when we disable it, we 
>>>> would like any data
>>>> access to complete before changing this implementation defined range 
>>>> with the ranges defined by us tweaking PRBAR/PRLAR, am I right?
>>> My mental model for the ordering is similar to a TLB flush which is:
>>>    1/ dsb nsh
>>>    2/ tlbi
>>>    3/ dsb nsh
>>>    4/ isb
>>>
>>> Enabling the MPU is effectively 2. AFAIK, 1 is only necessary to 
>>> ensure the update to the page-tables. But it is not a requirement to 
>>> ensure any data access are completed (otherwise, we would have needed 
>>> a dsb sy because we don't know how far the access are going...).
>> Uhm… I’m not sure we are on the same page, probably I explained that 
>> wrongly, so my point is that:
>>
>> FUNC_LOCAL(enable_mpu)
>>      mrs   x0, SCTLR_EL2
>>      bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>>      orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>      orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>      orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>      dsb   sy
>>      ^— This data barrier is needed in order to complete any data 
>> access, which guarantees that all explicit memory accesses before
>>             this instruction complete, so we can safely turn ON the 
>> MPU and disable the background region.

I think

> 
> I think Julien agreed to this in a previous email as long as we have an 
> appropriate comment. So we will keep this as it is.

Sorry I didn't manage to answer yet. But yes, I am ok with the barrier 
for now, but I am not agree on the reasoning used.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 16:18:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 16:18:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824830.1239028 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3e3m-0005Ex-9i; Wed, 23 Oct 2024 16:18:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824830.1239028; Wed, 23 Oct 2024 16:18: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 1t3e3m-0005Eq-6P; Wed, 23 Oct 2024 16:18:10 +0000
Received: by outflank-mailman (input) for mailman id 824830;
 Wed, 23 Oct 2024 16:18: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 1t3e3l-0005Ej-43
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 16:18:09 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1t3e3k-000Br6-2o;
 Wed, 23 Oct 2024 16:18:08 +0000
Received: from [15.248.2.28] (helo=[10.24.67.32])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t3e3k-00085A-Ly; Wed, 23 Oct 2024 16:18: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:
	References:Cc:To:From:Subject:MIME-Version:Date:Message-ID;
	bh=OqQpWFjwYXtWDbhXdi5wjhaD5vmIC+Mez41PAZXnPUU=; b=gMk3Tho1Dm1ToO75I+xMtxCkoR
	EIW6EP7Ceb1ZYccS1epz07lTrYjLUfj2NbV4E4pk9YEAudGno/rqurzdLBmyiwDudlHq1WysE7FMU
	TPw7xGxB7EKHIYOGPmt4khXvxgos62AMjGa7DNJcKZavhywsFMJdQb2Dx7FVpIiyzLv0=;
Message-ID: <acd45c52-7675-4dee-b8f8-46429cadf9ac@xen.org>
Date: Wed, 23 Oct 2024 17:18:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
 <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
 <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
 <251fb5a2-a8d7-451b-9714-5cc984645354@xen.org>
In-Reply-To: <251fb5a2-a8d7-451b-9714-5cc984645354@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 23/10/2024 17:13, Julien Grall wrote:
> 
> 
> On 23/10/2024 17:06, Ayan Kumar Halder wrote:
>> Hi Luca/Julien,
>>
>> On 22/10/2024 17:31, Luca Fancellu wrote:
>>> Hi Julien,
>>>
>>>> On 22 Oct 2024, at 14:13, Julien Grall <julien@xen.org> wrote:
>>>>
>>>>
>>>>
>>>> On 22/10/2024 10:56, Luca Fancellu wrote:
>>>>>> On 22 Oct 2024, at 10:47, Julien Grall <julien@xen.org> wrote:
>>>>>>
>>>>>> Hi Luca,
>>>>>>
>>>>>> On 22/10/2024 10:41, Luca Fancellu wrote:
>>>>>>>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
>>>>>>> 2) dsb+isb barrier after enabling the MPU, since we are enabling 
>>>>>>> the MPU but also because we are disabling the background region
>>>>>> TBH, I don't understand this one. Why would disabling the 
>>>>>> background region requires a dsb + isb? Do you have any pointer in 
>>>>>> the Armv8-R specification?
>>>>> I’m afraid this is only my deduction, Section C1.4 of the Arm® 
>>>>> Architecture Reference Manual Supplement Armv8, for R-profile 
>>>>> AArch64 architecture,
>>>>> (DDI 0600B.a) explains what is the background region, it says it 
>>>>> implements physical address range(s), so when we disable it, we 
>>>>> would like any data
>>>>> access to complete before changing this implementation defined 
>>>>> range with the ranges defined by us tweaking PRBAR/PRLAR, am I right?
>>>> My mental model for the ordering is similar to a TLB flush which is:
>>>>    1/ dsb nsh
>>>>    2/ tlbi
>>>>    3/ dsb nsh
>>>>    4/ isb
>>>>
>>>> Enabling the MPU is effectively 2. AFAIK, 1 is only necessary to 
>>>> ensure the update to the page-tables. But it is not a requirement to 
>>>> ensure any data access are completed (otherwise, we would have 
>>>> needed a dsb sy because we don't know how far the access are going...).
>>> Uhm… I’m not sure we are on the same page, probably I explained that 
>>> wrongly, so my point is that:
>>>
>>> FUNC_LOCAL(enable_mpu)
>>>      mrs   x0, SCTLR_EL2
>>>      bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>>>      orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>>      orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>>      orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>>      dsb   sy
>>>      ^— This data barrier is needed in order to complete any data 
>>> access, which guarantees that all explicit memory accesses before
>>>             this instruction complete, so we can safely turn ON the 
>>> MPU and disable the background region.
> 
> I think

Sorry I fat fingered and pressed send too early. I think this is the 
part I disagree with. All explicit accesses don't need to be complete 
(in the sense observed by everyone in the system). They only need to 
have gone through the permissions check.

We also need the change in the MPU registers to be visible to the MPU.

For instance, for the MMU, we only need to use "dsb nsh" because the 
walker is within the non-shareable domain. Personally, I think "sy" is a 
bit excessive here, but as this is boot code, that's ok.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 16:30:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 16:30:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824838.1239037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3eFX-0008Es-9f; Wed, 23 Oct 2024 16:30:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824838.1239037; Wed, 23 Oct 2024 16: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 1t3eFX-0008El-6x; Wed, 23 Oct 2024 16:30:19 +0000
Received: by outflank-mailman (input) for mailman id 824838;
 Wed, 23 Oct 2024 16:30: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 1t3eFV-0008Ee-Gk
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 16:30:17 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1t3eFV-000C6l-0c;
 Wed, 23 Oct 2024 16:30:17 +0000
Received: from [15.248.2.28] (helo=[10.24.67.32])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t3eFV-0000uS-0N; Wed, 23 Oct 2024 16:30: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:
	References:Cc:To:From:Subject:MIME-Version:Date:Message-ID;
	bh=X1pHitE9EC0LfQyTFlEO4y8rlv6p9tsnJCBJfzDUhzE=; b=zOmQ8PRz/maB9e1dEDuBSkK4t4
	qGWMP1V862V3MljT60qECW/11dq5F5PYP7/4u7u4yhtEXcy/cYWPB477wcO/GC+G7Nyix6B74L6S0
	7Hu3UQhdTtYSxEe6+KBs2Uzg5anG0mjC4tDUItbShzgoldIomLR502+dUrYjgxkibavk=;
Message-ID: <d70dae8e-5197-48db-859b-a3cae67e4ca7@xen.org>
Date: Wed, 23 Oct 2024 17:30:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
 <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
 <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
 <251fb5a2-a8d7-451b-9714-5cc984645354@xen.org>
 <acd45c52-7675-4dee-b8f8-46429cadf9ac@xen.org>
In-Reply-To: <acd45c52-7675-4dee-b8f8-46429cadf9ac@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 23/10/2024 17:18, Julien Grall wrote:
> 
> 
> On 23/10/2024 17:13, Julien Grall wrote:
>>
>>
>> On 23/10/2024 17:06, Ayan Kumar Halder wrote:
>>> Hi Luca/Julien,
>>>
>>> On 22/10/2024 17:31, Luca Fancellu wrote:
>>>> Hi Julien,
>>>>
>>>>> On 22 Oct 2024, at 14:13, Julien Grall <julien@xen.org> wrote:
>>>>>
>>>>>
>>>>>
>>>>> On 22/10/2024 10:56, Luca Fancellu wrote:
>>>>>>> On 22 Oct 2024, at 10:47, Julien Grall <julien@xen.org> wrote:
>>>>>>>
>>>>>>> Hi Luca,
>>>>>>>
>>>>>>> On 22/10/2024 10:41, Luca Fancellu wrote:
>>>>>>>>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
>>>>>>>> 2) dsb+isb barrier after enabling the MPU, since we are enabling 
>>>>>>>> the MPU but also because we are disabling the background region
>>>>>>> TBH, I don't understand this one. Why would disabling the 
>>>>>>> background region requires a dsb + isb? Do you have any pointer 
>>>>>>> in the Armv8-R specification?
>>>>>> I’m afraid this is only my deduction, Section C1.4 of the Arm® 
>>>>>> Architecture Reference Manual Supplement Armv8, for R-profile 
>>>>>> AArch64 architecture,
>>>>>> (DDI 0600B.a) explains what is the background region, it says it 
>>>>>> implements physical address range(s), so when we disable it, we 
>>>>>> would like any data
>>>>>> access to complete before changing this implementation defined 
>>>>>> range with the ranges defined by us tweaking PRBAR/PRLAR, am I right?
>>>>> My mental model for the ordering is similar to a TLB flush which is:
>>>>>    1/ dsb nsh
>>>>>    2/ tlbi
>>>>>    3/ dsb nsh
>>>>>    4/ isb
>>>>>
>>>>> Enabling the MPU is effectively 2. AFAIK, 1 is only necessary to 
>>>>> ensure the update to the page-tables. But it is not a requirement 
>>>>> to ensure any data access are completed (otherwise, we would have 
>>>>> needed a dsb sy because we don't know how far the access are 
>>>>> going...).
>>>> Uhm… I’m not sure we are on the same page, probably I explained that 
>>>> wrongly, so my point is that:
>>>>
>>>> FUNC_LOCAL(enable_mpu)
>>>>      mrs   x0, SCTLR_EL2
>>>>      bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>>>>      orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>>>      orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>>>      orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>>>      dsb   sy
>>>>      ^— This data barrier is needed in order to complete any data 
>>>> access, which guarantees that all explicit memory accesses before
>>>>             this instruction complete, so we can safely turn ON the 
>>>> MPU and disable the background region.
>>
>> I think
> 
> Sorry I fat fingered and pressed send too early. I think this is the 
> part I disagree with. All explicit accesses don't need to be complete 
> (in the sense observed by everyone in the system). They only need to 
> have gone through the permissions check.

I think I managed to find again the wording that would justify why a 
"dsb" is not necessary for the permission checks. From ARM DDI 0487K.a 
D23-7349:

```
Direct writes using the instructions in Table D22-2 require 
synchronization before software can rely on the effects
of changes to the System registers to affect instructions appearing in 
program order after the direct write to the
System register. Direct writes to these registers are not allowed to 
affect any instructions appearing in program order
before the direct write.
```

I understand the paragraph as enabling the MPU via SCTLR_EL2 will not 
affect any instruction before hand.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Oct 23 16:48:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 16:48:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824848.1239053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3eWc-0002EM-VL; Wed, 23 Oct 2024 16:47:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824848.1239053; Wed, 23 Oct 2024 16: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 1t3eWc-0002EB-S3; Wed, 23 Oct 2024 16:47:58 +0000
Received: by outflank-mailman (input) for mailman id 824848;
 Wed, 23 Oct 2024 16: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=nlqr=RT=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1t3eWb-0002AO-Ip
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 16:47:57 +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 8d159768-915e-11ef-99a3-01e77a169b0f;
 Wed, 23 Oct 2024 18:47:55 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5cb15b84544so5155458a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 09:47:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d159768-915e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729702074; x=1730306874; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=ovZvirNUrPHAZVWGClhiwXigYSywURKiIu8D/t9Xd9A=;
        b=XRSJWS8KhkJGKwCU7iPMenBgcj7K0uAmSS4xjkUyjSY7/scni+/VQ2Qb0qXymT1pa3
         +5Q6DMR0ftQ1FpOsfGYQDRX05U6L77kUA2xkW1Ea0YZlL/c8frO5SbZwcCH/x4Pur07T
         jKV2fqdm1NCkMrK3W2bkcuhu0qG00ghe4blIc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729702074; x=1730306874;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ovZvirNUrPHAZVWGClhiwXigYSywURKiIu8D/t9Xd9A=;
        b=VtM+lL+9UOLhWMowTedU4VvrWQZufGtswglruXGlqWFcciSA+z09Iqde7JT6lzvaIx
         DlWzAICSDgcsSemWOl5GtV+GHhh62WjVGuRdEjB6Ek961rc2m8PT9kJoFDLkNUI1xRgt
         gZtWcGqoUXPpPC/cRe4nEPWc/P8QQQEYbZnBvZdHQnlGV/c6Mu4951PlU802YRd5mE6w
         /C+c8MjyHjW0FDlNT/ynU3YOpwyLzZodxy7EIoH/ZH+ll/YgnkKML7BmWD+0unDC7HEn
         xH8sFX4EOSFQtcb0cp8kaLbquFdPk2nGCnSXAYruzcTDfewyL4r/2EJVw6rGxZE2ewJQ
         tXHg==
X-Gm-Message-State: AOJu0YyjGahgf4XfU95Q36jdtKazuyH/2XmOLMSkq/p/TjNHPIb+7Onc
	H84LeGfNawnhG0zmiPpQz8cif2nq4vdyRr/XYLcsv6k5mKbtDKBQm8OeinlkhsTrkw2ycXbRxWr
	rGTjDGLlgvP73TIp3y4Yo5T4e3WKWypo/YjZdkJiQAx5vRsUq6SU=
X-Google-Smtp-Source: AGHT+IEEqLtEHDSSRj3ay93GeSWaMKSmfTGoX/ksMdojlNcK6PhE9unfCCYBCUK6i4f45WB3mpbE4jenoBjmXyWcV/o=
X-Received: by 2002:a17:907:9411:b0:a99:762f:b298 with SMTP id
 a640c23a62f3a-a9abf94de80mr329006666b.41.1729702073963; Wed, 23 Oct 2024
 09:47:53 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Wed, 23 Oct 2024 17:47:17 +0100
Message-ID: <CAO-mL=zEqsMPE85XMVF=xJagTYLdU16Uo5NPDMf5zowLOqKCjA@mail.gmail.com>
Subject: Goodbye to our Xen Project Colo
To: xen-devel <xen-devel@lists.xenproject.org>, xen-announce@lists.xenproject.org
Cc: committers@xenproject.org
Content-Type: multipart/alternative; boundary="000000000000afb588062527a5ca"

--000000000000afb588062527a5ca
Content-Type: text/plain; charset="UTF-8"

Hi all,

A while back, the Xen Project was notified by the data centre facility
hosting the physical hardware for OSSTest and some of the GitLab runners,
were due to be shut down.

Since then we have had extensive discussions and explored multiple options
to mitigate the impact of this on our project.

At the end of July, we sent out a communication explaining our decision to
best focus our efforts on GitLab, which offers a more modern and
sustainable infrastructure.  As we prepare to leave the colo by the end of
the month, the remainder servers we are saving will be shipped to AMD
to help host our future Xen Project operations.

These are listed below:

   - 1x Zen3: verdesse 1U AMD EPYC 7543P 32-Core Milan (Zen 3) 2021
   - 1x ThunderX: rochester 1U Cavium ThunderX-88XX ARMv8.1 2014
   - 1x Zen3: verdesse 1U AMD EPYC 7543P 32-Core Milan (Zen 3) 2021
   - 1x ThunderX: rochester 1U Cavium ThunderX-88XX ARMv8.1 2014
   - 1x serial port concentrator
   - 1x PDU
   - 2x Zen2 espadeiro: espadeiro 1U AMD EPYC 7502P 32-Core Rome (Zen 2)
   2019
   - 2x Zen2 rubintos: rubintos 2U AMD Ryzen 9 3900X 12-Core Matisse (Zen
   2) 2019

As we say goodbye to our colo, I'd like to reiterate that OSSTest has been
instrumental to the Xen Project for many years, and we'd like to extend our
gratitude to everyone who has contributed.

Thank you again to our community for your continued support

Kelly Choi
Community Manager
Xen Project
<https://xenproject.org/>

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

<div dir=3D"ltr">Hi all,<div><br></div><div>A while back, the Xen Project w=
as notified by the data centre facility hosting the physical hardware for O=
SSTest and some of the GitLab runners, were due to be shut down.=C2=A0</div=
><div><br></div><div>Since then we have had extensive discussions and explo=
red multiple options to mitigate the impact of this on our project.=C2=A0</=
div><div><br></div><div>At the end of July, we sent out a communication exp=
laining our decision to best focus our efforts on GitLab, which offers a mo=
re modern and sustainable infrastructure.=C2=A0 As we prepare to leave the =
colo by the end of the month, the remainder servers we are saving will be s=
hipped to AMD to=C2=A0help host our future Xen Project operations.</div><di=
v><br></div><div>These are listed below:</div><ul><li>1x Zen3: verdesse 1U =
AMD EPYC 7543P 32-Core Milan (Zen 3) 2021</li><li>1x ThunderX: rochester 1U=
 Cavium ThunderX-88XX ARMv8.1 2014</li><li>1x Zen3: verdesse 1U AMD EPYC 75=
43P 32-Core Milan (Zen 3) 2021</li><li>1x ThunderX: rochester 1U Cavium Thu=
nderX-88XX ARMv8.1 2014</li><li>1x serial port concentrator=C2=A0</li><li>1=
x PDU=C2=A0</li><li>2x Zen2 espadeiro: espadeiro 1U AMD EPYC 7502P 32-Core =
Rome (Zen 2) 2019</li><li>2x Zen2 rubintos: rubintos 2U AMD Ryzen 9 3900X 1=
2-Core Matisse (Zen 2) 2019</li></ul><div>As we say goodbye to our colo, I&=
#39;d like to reiterate that OSSTest has been instrumental to the Xen Proje=
ct for many years, and we&#39;d like to extend our gratitude to everyone wh=
o has contributed.</div><div><br></div><div>Thank you again to our communit=
y for your continued support</div><div><div dir=3D"ltr" class=3D"gmail_sign=
ature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div style=3D"te=
xt-align:left"><br></div><div>Kelly Choi<br></div><div><div style=3D"color:=
rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(136,136,13=
6)"><a href=3D"https://xenproject.org/" target=3D"_blank">Xen Project<br></=
a><br></div></div></div></div></div></div>

--000000000000afb588062527a5ca--


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 17:01:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 17:01:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824885.1239070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ek0-0005vp-Dc; Wed, 23 Oct 2024 17:01:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824885.1239070; Wed, 23 Oct 2024 17:01: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 1t3ek0-0005vi-Ap; Wed, 23 Oct 2024 17:01:48 +0000
Received: by outflank-mailman (input) for mailman id 824885;
 Wed, 23 Oct 2024 17:01: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=bQ5M=RT=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t3ejy-0005vb-S7
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 17:01:46 +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 7bbe8e31-9160-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 19:01:45 +0200 (CEST)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2fb6110c8faso71621241fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 10:01:45 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b535sm4593289a12.68.2024.10.23.10.01.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 10:01:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7bbe8e31-9160-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729702904; x=1730307704; 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=oxpaVRCQxGt2WsbSTmzTFH95eCwt6zyG1YD0NUX3Jyk=;
        b=SEdWIF4z+QqZ8+mmBPsNFCg+tbvEo4xF5TFBx0ukSdHhyLdsHr40YUkJ69WVLglIeE
         GoR4k+/bapS4Bg281PsSthY2RQcRrh4XVID9V5MIyWB1id7o/87VLN9f43qT+N6qhmK7
         ciLleUVmTPXqUHLZmuZ4uGRuNhCZlmFh+y6aM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729702904; x=1730307704;
        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=oxpaVRCQxGt2WsbSTmzTFH95eCwt6zyG1YD0NUX3Jyk=;
        b=Id8r9RtuO2VWCNx69UQdACHcwz/gK/wBh/EYtVa5TeQGq630v/KVJicUXk4VM1BYQw
         VP4uBx5xnintAqBNcaU1KdHj+PRrBJx9OfDnW8DrLXfRoQjut45oPGzHzhvmU670D4Y4
         26babAQGUvUyAs+y/emQaC5SUxMG0HL7KUL31u5/nwEuTUs0OqlYOdnjWi0CZ1n8lmDZ
         UyOsc8uxvXKNF0TW+vhY2+e+s+dea3z62J2YQHPszEbWtk51BjjwEMwNjukJxC8ApcW1
         bJx43XMIPvXLg94NOoYbhUp2lcCQhtO0IYC5omrQVE9DK0cdttsXNEcJwRpaFDCbmHSe
         JBnA==
X-Gm-Message-State: AOJu0YzcTrSSCc1F2EkuwmXDBzE2mSLWBVcnTNIo2OaBJibJs1n6BsMX
	u0/8qat+xS+uISZD15Bj3g47t53xtH9G+J0eN9wgmCRnFTjzAD7HQGMeidh2E3U=
X-Google-Smtp-Source: AGHT+IEeN/OlsMozfgz0yy1/TK3Uxg5D2ahdPyoong2nWX69MamTGAD6faTnnNsxdU748kZYGRvsZg==
X-Received: by 2002:a05:651c:2123:b0:2fb:55b2:b199 with SMTP id 38308e7fff4ca-2fc9d5e0ebcmr18911231fa.37.1729702903416;
        Wed, 23 Oct 2024 10:01:43 -0700 (PDT)
Date: Wed, 23 Oct 2024 18:01:42 +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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <JBeulich@suse.com>
Subject: Re: [PATCH 2/3] x86/boot: Fix microcode module handling during PVH
 boot
Message-ID: <Zxkr9il-X0hK2GFv@macbook.local>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023105756.641695-3-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: <20241023105756.641695-3-andrew.cooper3@citrix.com>

On Wed, Oct 23, 2024 at 11:57:55AM +0100, Andrew Cooper wrote:
> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
> 
> As detailed in commit 0fe607b2a144 ("x86/boot: Fix PVH boot during boot_info
> transition period"), the use of __va(mbi->mods_addr) constitutes a
> use-after-free on the PVH boot path.
> 
> This pattern has been in use since before PVH support was added.  Inside a PVH
> VM, it will go unnoticed as long as the microcode container parser doesn't
> choke on the random data it finds.
> 
> The use within early_microcode_init() happens to be safe because it's prior to
> move_xen().  microcode_init_cache() is after move_xen(), and therefore unsafe.
> 
> Plumb the boot_info pointer down, replacing module_map and mbi.  Importantly,
> bi->mods[].mod is a safe way to access the module list during PVH boot.
> 
> Note: microcode_scan_module() is still bogusly stashing a bootstrap_map()'d
>       pointer in ucode_blob.data, which constitutes a different
>       use-after-free, and only works in general because of a second bug.  This
>       is unrelated to PVH, and needs untangling differently.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
> Refectored/extracted from the hyperlaunch series.
> 
> There's no good Fixes tag for this, because it can't reasonably be "introduce
> PVH", nor can the fix as-is reasonably be backported.  If we want to fix the
> bug in older trees, we need to plumb the mod pointer down alongside mbi.
> ---
>  xen/arch/x86/cpu/microcode/core.c    | 40 +++++++++++-----------------
>  xen/arch/x86/include/asm/microcode.h |  8 +++---
>  xen/arch/x86/setup.c                 |  4 +--
>  3 files changed, 22 insertions(+), 30 deletions(-)
> 
> diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
> index 8564e4d2c94c..1d58cb0f3bc1 100644
> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c
> @@ -35,6 +35,7 @@
>  #include <xen/watchdog.h>
>  
>  #include <asm/apic.h>
> +#include <asm/bootinfo.h>
>  #include <asm/cpu-policy.h>
>  #include <asm/nmi.h>
>  #include <asm/processor.h>
> @@ -152,11 +153,8 @@ static int __init cf_check parse_ucode(const char *s)
>  }
>  custom_param("ucode", parse_ucode);
>  
> -static void __init microcode_scan_module(
> -    unsigned long *module_map,
> -    const multiboot_info_t *mbi)
> +static void __init microcode_scan_module(struct boot_info *bi)

Sorry to be pedantic, can't you keep bi as const?

>  {
> -    module_t *mod = (module_t *)__va(mbi->mods_addr);
>      uint64_t *_blob_start;
>      unsigned long _blob_size;
>      struct cpio_data cd;
> @@ -178,13 +176,13 @@ static void __init microcode_scan_module(
>      /*
>       * Try all modules and see whichever could be the microcode blob.
>       */
> -    for ( i = 1 /* Ignore dom0 kernel */; i < mbi->mods_count; i++ )
> +    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
>      {
> -        if ( !test_bit(i, module_map) )
> +        if ( !test_bit(i, bi->module_map) )
>              continue;
>  
> -        _blob_start = bootstrap_map(&mod[i]);
> -        _blob_size = mod[i].mod_end;
> +        _blob_start = bootstrap_map(bi->mods[i].mod);
> +        _blob_size = bi->mods[i].mod->mod_end;
>          if ( !_blob_start )
>          {
>              printk("Could not map multiboot module #%d (size: %ld)\n",
> @@ -204,21 +202,17 @@ static void __init microcode_scan_module(
>      }
>  }
>  
> -static void __init microcode_grab_module(
> -    unsigned long *module_map,
> -    const multiboot_info_t *mbi)
> +static void __init microcode_grab_module(struct boot_info *bi)

Same here re bi being const?

There are some further below, that I think all should keep the const
keywoard?

Otherwise looks good:

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 17:04:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 17:04:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824894.1239079 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3emb-0006Yq-UB; Wed, 23 Oct 2024 17:04:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824894.1239079; Wed, 23 Oct 2024 17: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 1t3emb-0006Yj-RP; Wed, 23 Oct 2024 17:04:29 +0000
Received: by outflank-mailman (input) for mailman id 824894;
 Wed, 23 Oct 2024 17:04: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=bQ5M=RT=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t3ema-0006YZ-As
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 17:04:28 +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 dc7a15a0-9160-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 19:04:27 +0200 (CEST)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fb5740a03bso79371421fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 10:04:27 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb6696b4easm4615881a12.12.2024.10.23.10.04.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 23 Oct 2024 10:04:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dc7a15a0-9160-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729703067; x=1730307867; 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=sYfJtlp/QhBe4rxr2UNwqjGS5HXn9ENDB3RWlELOULY=;
        b=ohwyVLLYc0Fv/cjUuXhgKSRrchm3Ndy75h9yIH02ziCjxMV6B1j4xt+QVyhdZ9+gqi
         cTIzscCZ3jwhjRQbgCDaoy/nsIZx5ZgILVxJjhp10O+z0asb9hz8KlPDxdKfjqujxAuj
         bRYZutk+Gi3sRNLQ7Tt4fe5H0GBT1hzVvm/tg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729703067; x=1730307867;
        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=sYfJtlp/QhBe4rxr2UNwqjGS5HXn9ENDB3RWlELOULY=;
        b=Bqx1r0lOPH1brjaVFcsKvm2T3+WsGUE9o9rkNlabBZAc1nWGiDXYOI+DJ3GPijH3cM
         EzFHhhKhHtHPH1vVrvSkx+XAeY/XVdQrhm+SGkzCnFIWLd7Pwi4VBYSWF8WgTLDjALje
         kxcWJI9K04Fry6L5gnb/3asfg0CTQZWGwU+IW/rP3X58Ps7cix4A+W2tdLxju12cplrZ
         yfPbDBBowUhA2uG5cdd6oUqudDpZlm1skJgLTrXlds1HAaW7URR3UUKHkA8ffAPg+4mJ
         NVD2cMGgs8zTajjHUjTdSFyquxY7qPV0b8YCzdlCAlRP3xV3CvaC+1i0S8gffdPaYSRr
         oy+g==
X-Gm-Message-State: AOJu0Yx68/J/AL9e0tzZXrO6P00WBqV9Y47tsyOVB4X1s2SNN56ljoWC
	Uyf5Kn+osn4V+7nLk9beTMlPu1d4QvflMCam/Y5qNntu79HhCPrOCtSZcBkELXo=
X-Google-Smtp-Source: AGHT+IGuJS999R5j+JqPc+R5WucRoXUGv9whB88gh3cegtFWqASKRO40eJNQashsQTmFA1sFhcYy3A==
X-Received: by 2002:a2e:be84:0:b0:2fb:6243:321c with SMTP id 38308e7fff4ca-2fc9d361763mr19007821fa.13.1729703066843;
        Wed, 23 Oct 2024 10:04:26 -0700 (PDT)
Date: Wed, 23 Oct 2024 18:04:26 +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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Jan Beulich <JBeulich@suse.com>
Subject: Re: [PATCH 3/3] x86/boot: Fix XSM module handling during PVH boot
Message-ID: <Zxksmm0xEv9nGYT7@macbook.local>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023105756.641695-4-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: <20241023105756.641695-4-andrew.cooper3@citrix.com>

On Wed, Oct 23, 2024 at 11:57:56AM +0100, Andrew Cooper wrote:
> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
> 
> As detailed in commit 0fe607b2a144 ("x86/boot: Fix PVH boot during boot_info
> transition period"), the use of __va(mbi->mods_addr) constitutes a
> use-after-free on the PVH boot path.
> 
> This pattern has been in use since before PVH support was added.  This has
> most likely gone unnoticed because no-one's tried using a detached Flask
> policy in a PVH VM before.
> 
> Plumb the boot_info pointer down, replacing module_map and mbi.  Importantly,
> bi->mods[].mod is a safe way to access the module list during PVH boot.
> 
> As this is the final non-bi use of mbi in __start_xen(), make the pointer
> unusable once bi has been established, to prevent new uses creeping back in.
> This is a stopgap until mbi can be fully removed.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>
> 
> Refectored/extracted from the hyperlaunch series.
> 
> There's no good Fixes tag for this, because it can't reasonably be "introduce
> PVH", nor can the fix as-is reasonably be backported.  If we want to fix the
> bug in older trees, we need to plumb the mod pointer down alongside mbi.
> ---
>  xen/arch/x86/setup.c  |  5 ++++-
>  xen/include/xsm/xsm.h | 12 +++++-------
>  xen/xsm/xsm_core.c    |  7 +++----
>  xen/xsm/xsm_policy.c  | 16 +++++++---------
>  4 files changed, 19 insertions(+), 21 deletions(-)
> 
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index c75b8f15fa5d..8974b0c6ede6 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1088,6 +1088,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>      bi = multiboot_fill_boot_info(mbi, mod);
>      bi->module_map = module_map; /* Temporary */
>  
> +    /* Use bi-> instead */
> +#define mbi DO_NOT_USE
> +
>      /* Parse the command-line options. */
>      if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )
>      {
> @@ -1862,7 +1865,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
>      mmio_ro_ranges = rangeset_new(NULL, "r/o mmio ranges",
>                                    RANGESETF_prettyprint_hex);
>  
> -    xsm_multiboot_init(module_map, mbi);
> +    xsm_multiboot_init(bi);
>  
>      /*
>       * IOMMU-related ACPI table parsing may require some of the system domains
> diff --git a/xen/include/xsm/xsm.h b/xen/include/xsm/xsm.h
> index 627c0d2731af..4dbff9d866e0 100644
> --- a/xen/include/xsm/xsm.h
> +++ b/xen/include/xsm/xsm.h
> @@ -17,7 +17,6 @@
>  
>  #include <xen/alternative-call.h>
>  #include <xen/sched.h>
> -#include <xen/multiboot.h>
>  
>  /* policy magic number (defined by XSM_MAGIC) */
>  typedef uint32_t xsm_magic_t;
> @@ -778,11 +777,10 @@ static inline int xsm_argo_send(const struct domain *d, const struct domain *t)
>  #endif /* XSM_NO_WRAPPERS */
>  
>  #ifdef CONFIG_MULTIBOOT
> -int xsm_multiboot_init(
> -    unsigned long *module_map, const multiboot_info_t *mbi);
> +struct boot_info;
> +int xsm_multiboot_init(struct boot_info *bi);

This one seems to also drop a const?

This also propagates to the functions below.

With that:

Acked-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 17:12:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 17:12:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824900.1239089 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3eu0-0008Ss-In; Wed, 23 Oct 2024 17:12:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824900.1239089; Wed, 23 Oct 2024 17: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 1t3eu0-0008Sl-GH; Wed, 23 Oct 2024 17:12:08 +0000
Received: by outflank-mailman (input) for mailman id 824900;
 Wed, 23 Oct 2024 17:12: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=jJ8W=RT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3ety-0008Sf-Kz
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 17:12:06 +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 ed68a286-9161-11ef-a0be-8be0dac302b0;
 Wed, 23 Oct 2024 19:12:05 +0200 (CEST)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a99f1fd20c4so953330666b.0
 for <xen-devel@lists.xenproject.org>; Wed, 23 Oct 2024 10:12:05 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee04asm502567966b.61.2024.10.23.10.12.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 23 Oct 2024 10:12:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ed68a286-9161-11ef-a0be-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729703525; x=1730308325; 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=NgLTIrlPF6VkOhkwfvfFxo7/JLhou5DUNGHxOwV/6zA=;
        b=eLyZ2jiKiHMjtQvCZ1khiDmLXjB+FP/UCIz/XDjOmNTnWNapbgJ7QOlDdORMq582Fw
         W/fT5rzWwy+bSTCcdIpex5Mi3aZ2qceg8nYoXfEXxpJUV/w1W2tJsLYevUFfxecil6P3
         GwI3WrkClPcbMbz00BfbnmYpiN5xuylZkjplo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729703525; x=1730308325;
        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=NgLTIrlPF6VkOhkwfvfFxo7/JLhou5DUNGHxOwV/6zA=;
        b=WnplWkeVJ48/oz1FwLnfUjcpTmlyFlP1lCucaStlhEVU/dTos9siLQJuGrgjLnk3Pm
         CpQu7NReVQdi0tFrjtJfGDeiZQIE/PCi+Z117GYjtpogNNQ1gRvqPtnfseykTkiNXiEA
         XgugRIyw/4oA1NMkLCW7OGILmanf2ph6YL/vFKXjhveu5/kHRNZEhZmQLCLivwWAPQ1f
         HJw39jr78tHhn1e3RSmxMoWcHfN/D4/d/1o3RCl/NFSUCbMTD3HCFt4+iVqpXWrIxDhK
         Nsho5w4NNyiNS4xeY1zezarqS4x8jVPCMW0pZUgNlu0Nj97XB/gtntnUzLzc8Ft3ad/8
         DZ3w==
X-Gm-Message-State: AOJu0YwkVf+WnJWgvHP4pjI69LeBjOk5tPcF81CdViiGUKiN8xwbRCKU
	1gMcydWRagje1YFGXNrCCtIUEXJvp0OPA8G/vuwocAVxDylQHmGJlbGOv1QAO7c=
X-Google-Smtp-Source: AGHT+IGcqc56ZHIMPaxD9lBo7Jewe7zsVA3dvgb0fUXRAYU2SKeamj+sH1t11GCDa09t9XdGjRzdYw==
X-Received: by 2002:a17:907:3e27:b0:a99:e82a:87ee with SMTP id a640c23a62f3a-a9abf9660a9mr251307166b.57.1729703524680;
        Wed, 23 Oct 2024 10:12:04 -0700 (PDT)
Message-ID: <55b7ebb4-9d10-45ca-b357-fd91ef169ff0@citrix.com>
Date: Wed, 23 Oct 2024 18:12:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/boot: Fix microcode module handling during PVH
 boot
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Jan Beulich <JBeulich@suse.com>
References: <20241023105756.641695-1-andrew.cooper3@citrix.com>
 <20241023105756.641695-3-andrew.cooper3@citrix.com>
 <Zxkr9il-X0hK2GFv@macbook.local>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <Zxkr9il-X0hK2GFv@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23/10/2024 6:01 pm, Roger Pau Monné wrote:
> On Wed, Oct 23, 2024 at 11:57:55AM +0100, Andrew Cooper wrote:
>> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
>>
>> As detailed in commit 0fe607b2a144 ("x86/boot: Fix PVH boot during boot_info
>> transition period"), the use of __va(mbi->mods_addr) constitutes a
>> use-after-free on the PVH boot path.
>>
>> This pattern has been in use since before PVH support was added.  Inside a PVH
>> VM, it will go unnoticed as long as the microcode container parser doesn't
>> choke on the random data it finds.
>>
>> The use within early_microcode_init() happens to be safe because it's prior to
>> move_xen().  microcode_init_cache() is after move_xen(), and therefore unsafe.
>>
>> Plumb the boot_info pointer down, replacing module_map and mbi.  Importantly,
>> bi->mods[].mod is a safe way to access the module list during PVH boot.
>>
>> Note: microcode_scan_module() is still bogusly stashing a bootstrap_map()'d
>>       pointer in ucode_blob.data, which constitutes a different
>>       use-after-free, and only works in general because of a second bug.  This
>>       is unrelated to PVH, and needs untangling differently.
>>
>> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>
>>
>> Refectored/extracted from the hyperlaunch series.
>>
>> There's no good Fixes tag for this, because it can't reasonably be "introduce
>> PVH", nor can the fix as-is reasonably be backported.  If we want to fix the
>> bug in older trees, we need to plumb the mod pointer down alongside mbi.
>> ---
>>  xen/arch/x86/cpu/microcode/core.c    | 40 +++++++++++-----------------
>>  xen/arch/x86/include/asm/microcode.h |  8 +++---
>>  xen/arch/x86/setup.c                 |  4 +--
>>  3 files changed, 22 insertions(+), 30 deletions(-)
>>
>> diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
>> index 8564e4d2c94c..1d58cb0f3bc1 100644
>> --- a/xen/arch/x86/cpu/microcode/core.c
>> +++ b/xen/arch/x86/cpu/microcode/core.c
>> @@ -35,6 +35,7 @@
>>  #include <xen/watchdog.h>
>>  
>>  #include <asm/apic.h>
>> +#include <asm/bootinfo.h>
>>  #include <asm/cpu-policy.h>
>>  #include <asm/nmi.h>
>>  #include <asm/processor.h>
>> @@ -152,11 +153,8 @@ static int __init cf_check parse_ucode(const char *s)
>>  }
>>  custom_param("ucode", parse_ucode);
>>  
>> -static void __init microcode_scan_module(
>> -    unsigned long *module_map,
>> -    const multiboot_info_t *mbi)
>> +static void __init microcode_scan_module(struct boot_info *bi)
> Sorry to be pedantic, can't you keep bi as const?

Not really, no.

Yes technically in this patch, but no by the end of the hyperlaunch series.

I'm uninterested in taking extra churn just to have a pointer be const
for a few more patches.

[For the list, I conferred with Roger IRL and he was happy.]

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 23 22:54:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 23 Oct 2024 22:54:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824933.1239136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3kEg-0006q5-E5; Wed, 23 Oct 2024 22:53:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824933.1239136; Wed, 23 Oct 2024 22:53: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 1t3kEg-0006py-BE; Wed, 23 Oct 2024 22:53:50 +0000
Received: by outflank-mailman (input) for mailman id 824933;
 Wed, 23 Oct 2024 22: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=ECK7=RT=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1t3kEf-0006o8-EW
 for xen-devel@lists.xenproject.org; Wed, 23 Oct 2024 22:53:49 +0000
Received: from sonata.ens-lyon.org (sonata.ens-lyon.org [140.77.166.138])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a83890bd-9191-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 00:53:45 +0200 (CEST)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id BD36FA1A52;
 Thu, 24 Oct 2024 00:53:44 +0200 (CEST)
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 B_3LSfr9Atij; Thu, 24 Oct 2024 00:53:44 +0200 (CEST)
Received: from begin (aamiens-653-1-40-48.w83-192.abo.wanadoo.fr
 [83.192.199.48])
 (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 859B2A1A51;
 Thu, 24 Oct 2024 00:53:44 +0200 (CEST)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1t3kEa-00000006Phr-0E4H; Thu, 24 Oct 2024 00:53:44 +0200
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a83890bd-9191-11ef-99a3-01e77a169b0f
Date: Thu, 24 Oct 2024 00:53:44 +0200
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: [MINI-OS PATCH] config: add support for libxenmanage
Message-ID: <Zxl-eAecD0tMvqCn@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
References: <20241023131048.32240-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241023131048.32240-1-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le mer. 23 oct. 2024 15:10:48 +0200, a ecrit:
> Add CONFIG_LIBXENMANAGE support.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> Please note that this patch should be committed only after the related
> Xen patch "tools/libs: add a new libxenmanage library" has been Acked,
> as otherwise it should either be dropped (in case the approach of
> adding a new library is being rejected) or changed (in case the name
> of the new library needs to be modified)!

For the positive case,

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> 
>  Config.mk | 2 ++
>  Makefile  | 4 ++++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/Config.mk b/Config.mk
> index f59a0cf4..e493533a 100644
> --- a/Config.mk
> +++ b/Config.mk
> @@ -46,6 +46,7 @@ GNTTAB_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/gnttab
>  CALL_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/call
>  FOREIGNMEMORY_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/foreignmemory
>  DEVICEMODEL_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/devicemodel
> +MANAGE_PATH ?= $(XEN_ROOT)/stubdom/libs-$(MINIOS_TARGET_ARCH)/manage
>  CTRL_PATH ?= $(XEN_ROOT)/stubdom/libxc-$(MINIOS_TARGET_ARCH)
>  GUEST_PATH ?= $(XEN_ROOT)/stubdom/libxc-$(MINIOS_TARGET_ARCH)
>  else
> @@ -202,6 +203,7 @@ CONFIG-n += CONFIG_LIBXENGNTTAB
>  CONFIG-n += CONFIG_LIBXENGUEST
>  CONFIG-n += CONFIG_LIBXENTOOLCORE
>  CONFIG-n += CONFIG_LIBXENTOOLLOG
> +CONFIG-n += CONFIG_LIBXENMANAGE
>  # Setting CONFIG_USE_XEN_CONSOLE copies all print output to the Xen emergency
>  # console apart of standard dom0 handled console.
>  CONFIG-n += CONFIG_USE_XEN_CONSOLE
> diff --git a/Makefile b/Makefile
> index ffa8d1a8..d094858a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -159,6 +159,10 @@ ifeq ($(CONFIG_LIBXENCTRL),y)
>  APP_LDLIBS += -L$(CTRL_PATH) -whole-archive -lxenctrl -no-whole-archive
>  LIBS += $(CTRL_PATH)/libxenctrl.a
>  endif
> +ifeq ($(CONFIG_LIBXENMANAGE),y)
> +APP_LDLIBS += -L$(MANAGE_PATH) -whole-archive -lxenmanage -no-whole-archive
> +LIBS += $(MANAGE_PATH)/libxenmanage.a
> +endif
>  APP_LDLIBS += -lpci
>  APP_LDLIBS += -lz
>  APP_LDLIBS += -lm
> -- 
> 2.43.0
> 

-- 
Samuel
 tohi.cybercable.fr (212.198.0.3) si une personne se reconnait derriere
 cette adresse que ce soit un pirate ou une victime qu'il se manifeste,
 cette personne pourrait bien etre un petit malin
 -+- Fred in NPC : Mamaaaaan, y a le routeur qui veut me hacker -+-


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 07:20:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 07:20:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824962.1239146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3s8Y-0001Zn-Jc; Thu, 24 Oct 2024 07:20:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824962.1239146; Thu, 24 Oct 2024 07:20: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 1t3s8Y-0001ZF-GD; Thu, 24 Oct 2024 07:20:02 +0000
Received: by outflank-mailman (input) for mailman id 824962;
 Thu, 24 Oct 2024 07:20: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3s8X-0001R0-TV
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 07:20:01 +0000
Received: from mail-oa1-x36.google.com (mail-oa1-x36.google.com
 [2001:4860:4864:20::36])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 60ccddbc-91d8-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 09:20:00 +0200 (CEST)
Received: by mail-oa1-x36.google.com with SMTP id
 586e51a60fabf-288dfdaf833so378417fac.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 00:20:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 60ccddbc-91d8-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729754399; x=1730359199; 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=fnNNvsuppKcrMhRZk0Kb4Fps3uqPJtWHaa/AeNk8XTk=;
        b=FucSqbdJeooFyNrkPD8eNbUU3DcuJ4cDS5IwQJxs0f78IaF8VFF6pYKZmVpd0pKf/V
         +SctxCFDOOp7UHFK9L8lYTshs8l/PXHJWOpT1bBn+MDgMYCxY5gSTOdW1RMxIjMFK79c
         Z8LMiJiIr29ym/agxX+DbxvdsUruOK1RGIu5z6M1pmqGmGKR6RiOK4x0sPlp8E6p8fPz
         vsRphBkVc9ZM9D2mvRwgz+x7rG8KhSnQ3h53J/cefbZ6gspCvvzbmJ6mtX101WVRilvh
         cp7uYuuQxlcFfCeE6drGysLXQ+4SeUy69e1QVoNC+SljqGq9xHJ8sypyofAjjBUn6AGJ
         FzjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729754399; x=1730359199;
        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=fnNNvsuppKcrMhRZk0Kb4Fps3uqPJtWHaa/AeNk8XTk=;
        b=xJu1pJwb+5WmTjDTCn32K2aybCT0xeqeY9m1bG5vXFXvq9S/cNo3SdPOBV3mQncLTt
         2hgLrfYLBHnkshvLxQWeURftKVMxQXpsTpkO82B9AF9mA393h9iS9osz9JdV7iu91kO4
         h8Wefrs1sgoqO/lFwpUkwUkFMlFCm4J1nkFKVZqBVO/RfKcYoDtxH1TUDkdU5U6VJ1mF
         ITQco/fwOc2dtCDgLJbDFT8vpppxXyiF/HEcMUAkMnY0qWk7ar3mYLAeqiSXkw+qKm2r
         WFxzsKgcfab4cuuQjWi8byL8qryyNWHQc9Kj2h8vlUQX89D0vLhxmawUT8K9EnoDaK83
         yh1w==
X-Gm-Message-State: AOJu0YwOnDssQrPTsbmhFeNs/aeEndIiVSeh7Wfqk6UNhQAm+RdG0vo1
	uTwsFMQLCwEEX/ctk95Th3/moU8Eg4hiAd02SCAQ/GP8CPYJp9TFcpxuBpdtsl2T4OVoXU1UIKV
	I5mbkh9S+kKe4nm6aXIdPGpPt8ZJNOtis8sOFrA==
X-Google-Smtp-Source: AGHT+IEHU+wApZCOzY9rLjf+aXX4Dm0JrXCwL2ve4XknIwLyf6CZl5lA8Z/qkWvWXVlf9NAvqpYwNTfyWr+pNhAQyRY=
X-Received: by 2002:a05:6870:c154:b0:270:205a:4070 with SMTP id
 586e51a60fabf-28ced2988f8mr991967fac.14.1729754398877; Thu, 24 Oct 2024
 00:19:58 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <480245789e126e5ee0d6d21b5946cdf2efb873ea.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <480245789e126e5ee0d6d21b5946cdf2efb873ea.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 09:19:47 +0200
Message-ID: <CAHUa44HRA+1e8nZQ-Xq3kP9qhTh1Ytk_nLtRqNDUnkvrVcuWnQ@mail.gmail.com>
Subject: Re: [PATCH v2 08/10] xen/arm: ffa: move message function into ffa_msg.c
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Move the direct message handling function in its own source file and
> rename it to have a ffa_ prefix.
> This is a preparation to add support for indirect messages which will
> go into this newly created source file.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - rebase
> ---
>  xen/arch/arm/tee/Makefile      |  1 +
>  xen/arch/arm/tee/ffa.c         | 69 +----------------------------
>  xen/arch/arm/tee/ffa_msg.c     | 80 ++++++++++++++++++++++++++++++++++
>  xen/arch/arm/tee/ffa_private.h |  2 +
>  4 files changed, 84 insertions(+), 68 deletions(-)
>  create mode 100644 xen/arch/arm/tee/ffa_msg.c

Looks good.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

Cheers,
Jens

>
> diff --git a/xen/arch/arm/tee/Makefile b/xen/arch/arm/tee/Makefile
> index 7c0f46f7f446..0848c833fec3 100644
> --- a/xen/arch/arm/tee/Makefile
> +++ b/xen/arch/arm/tee/Makefile
> @@ -3,5 +3,6 @@ obj-$(CONFIG_FFA) +=3D ffa_shm.o
>  obj-$(CONFIG_FFA) +=3D ffa_partinfo.o
>  obj-$(CONFIG_FFA) +=3D ffa_rxtx.o
>  obj-$(CONFIG_FFA) +=3D ffa_notif.o
> +obj-$(CONFIG_FFA) +=3D ffa_msg.o
>  obj-y +=3D tee.o
>  obj-$(CONFIG_OPTEE) +=3D optee.o
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 40ea5398fa21..72826b49d2aa 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -167,73 +167,6 @@ static void handle_version(struct cpu_user_regs *reg=
s)
>      ffa_set_regs(regs, FFA_MY_VERSION, 0, 0, 0, 0, 0, 0, 0);
>  }
>
> -static void handle_msg_send_direct_req(struct cpu_user_regs *regs, uint3=
2_t fid)
> -{
> -    struct arm_smccc_1_2_regs arg =3D { .a0 =3D fid, };
> -    struct arm_smccc_1_2_regs resp =3D { };
> -    struct domain *d =3D current->domain;
> -    uint32_t src_dst;
> -    uint64_t mask;
> -
> -    if ( smccc_is_conv_64(fid) )
> -        mask =3D GENMASK_ULL(63, 0);
> -    else
> -        mask =3D GENMASK_ULL(31, 0);
> -
> -    if ( !ffa_fw_supports_fid(fid) )
> -    {
> -        resp.a0 =3D FFA_ERROR;
> -        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> -        goto out;
> -    }
> -
> -    src_dst =3D get_user_reg(regs, 1);
> -    if ( (src_dst >> 16) !=3D ffa_get_vm_id(d) )
> -    {
> -        resp.a0 =3D FFA_ERROR;
> -        resp.a2 =3D FFA_RET_INVALID_PARAMETERS;
> -        goto out;
> -    }
> -
> -    /* we do not support direct messages to VMs */
> -    if ( !FFA_ID_IS_SECURE(src_dst & GENMASK(15,0)) )
> -    {
> -        resp.a0 =3D FFA_ERROR;
> -        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> -        goto out;
> -    }
> -
> -    arg.a1 =3D src_dst;
> -    arg.a2 =3D get_user_reg(regs, 2) & mask;
> -    arg.a3 =3D get_user_reg(regs, 3) & mask;
> -    arg.a4 =3D get_user_reg(regs, 4) & mask;
> -    arg.a5 =3D get_user_reg(regs, 5) & mask;
> -    arg.a6 =3D get_user_reg(regs, 6) & mask;
> -    arg.a7 =3D get_user_reg(regs, 7) & mask;
> -
> -    arm_smccc_1_2_smc(&arg, &resp);
> -    switch ( resp.a0 )
> -    {
> -    case FFA_ERROR:
> -    case FFA_SUCCESS_32:
> -    case FFA_SUCCESS_64:
> -    case FFA_MSG_SEND_DIRECT_RESP_32:
> -    case FFA_MSG_SEND_DIRECT_RESP_64:
> -        break;
> -    default:
> -        /* Bad fid, report back to the caller. */
> -        memset(&resp, 0, sizeof(resp));
> -        resp.a0 =3D FFA_ERROR;
> -        resp.a1 =3D src_dst;
> -        resp.a2 =3D FFA_RET_ABORTED;
> -    }
> -
> -out:
> -    ffa_set_regs(regs, resp.a0, resp.a1 & mask, resp.a2 & mask, resp.a3 =
& mask,
> -                 resp.a4 & mask, resp.a5 & mask, resp.a6 & mask,
> -                 resp.a7 & mask);
> -}
> -
>  static void handle_features(struct cpu_user_regs *regs)
>  {
>      struct domain *d =3D current->domain;
> @@ -351,7 +284,7 @@ static bool ffa_handle_call(struct cpu_user_regs *reg=
s)
>          break;
>      case FFA_MSG_SEND_DIRECT_REQ_32:
>      case FFA_MSG_SEND_DIRECT_REQ_64:
> -        handle_msg_send_direct_req(regs, fid);
> +        ffa_handle_msg_send_direct_req(regs, fid);
>          return true;
>      case FFA_MEM_SHARE_32:
>      case FFA_MEM_SHARE_64:
> diff --git a/xen/arch/arm/tee/ffa_msg.c b/xen/arch/arm/tee/ffa_msg.c
> new file mode 100644
> index 000000000000..ae263e54890e
> --- /dev/null
> +++ b/xen/arch/arm/tee/ffa_msg.c
> @@ -0,0 +1,80 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Copyright (C) 2024  Linaro Limited
> + */
> +
> +#include <xen/const.h>
> +#include <xen/sizes.h>
> +#include <xen/types.h>
> +
> +#include <asm/smccc.h>
> +#include <asm/regs.h>
> +
> +#include "ffa_private.h"
> +
> +void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t=
 fid)
> +{
> +    struct arm_smccc_1_2_regs arg =3D { .a0 =3D fid, };
> +    struct arm_smccc_1_2_regs resp =3D { };
> +    struct domain *d =3D current->domain;
> +    uint32_t src_dst;
> +    uint64_t mask;
> +
> +    if ( smccc_is_conv_64(fid) )
> +        mask =3D GENMASK_ULL(63, 0);
> +    else
> +        mask =3D GENMASK_ULL(31, 0);
> +
> +    if ( !ffa_fw_supports_fid(fid) )
> +    {
> +        resp.a0 =3D FFA_ERROR;
> +        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> +        goto out;
> +    }
> +
> +    src_dst =3D get_user_reg(regs, 1);
> +    if ( (src_dst >> 16) !=3D ffa_get_vm_id(d) )
> +    {
> +        resp.a0 =3D FFA_ERROR;
> +        resp.a2 =3D FFA_RET_INVALID_PARAMETERS;
> +        goto out;
> +    }
> +
> +    /* we do not support direct messages to VMs */
> +    if ( !FFA_ID_IS_SECURE(src_dst & GENMASK(15,0)) )
> +    {
> +        resp.a0 =3D FFA_ERROR;
> +        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> +        goto out;
> +    }
> +
> +    arg.a1 =3D src_dst;
> +    arg.a2 =3D get_user_reg(regs, 2) & mask;
> +    arg.a3 =3D get_user_reg(regs, 3) & mask;
> +    arg.a4 =3D get_user_reg(regs, 4) & mask;
> +    arg.a5 =3D get_user_reg(regs, 5) & mask;
> +    arg.a6 =3D get_user_reg(regs, 6) & mask;
> +    arg.a7 =3D get_user_reg(regs, 7) & mask;
> +
> +    arm_smccc_1_2_smc(&arg, &resp);
> +    switch ( resp.a0 )
> +    {
> +    case FFA_ERROR:
> +    case FFA_SUCCESS_32:
> +    case FFA_SUCCESS_64:
> +    case FFA_MSG_SEND_DIRECT_RESP_32:
> +    case FFA_MSG_SEND_DIRECT_RESP_64:
> +        break;
> +    default:
> +        /* Bad fid, report back to the caller. */
> +        memset(&resp, 0, sizeof(resp));
> +        resp.a0 =3D FFA_ERROR;
> +        resp.a1 =3D src_dst;
> +        resp.a2 =3D FFA_RET_ABORTED;
> +    }
> +
> +out:
> +    ffa_set_regs(regs, resp.a0, resp.a1 & mask, resp.a2 & mask, resp.a3 =
& mask,
> +                 resp.a4 & mask, resp.a5 & mask, resp.a6 & mask,
> +                 resp.a7 & mask);
> +}
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 9adfe687c3c9..02162e0ee4c7 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -360,6 +360,8 @@ void ffa_handle_notification_info_get(struct cpu_user=
_regs *regs);
>  void ffa_handle_notification_get(struct cpu_user_regs *regs);
>  int ffa_handle_notification_set(struct cpu_user_regs *regs);
>
> +void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t=
 fid);
> +
>  static inline uint16_t ffa_get_vm_id(const struct domain *d)
>  {
>      /* +1 since 0 is reserved for the hypervisor in FF-A */
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 07:41:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 07:41:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824973.1239155 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3sT6-0005Ag-Ay; Thu, 24 Oct 2024 07:41:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824973.1239155; Thu, 24 Oct 2024 07:41: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 1t3sT6-0005AZ-8S; Thu, 24 Oct 2024 07:41:16 +0000
Received: by outflank-mailman (input) for mailman id 824973;
 Thu, 24 Oct 2024 07:41: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3sT5-0005AT-BJ
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 07:41:15 +0000
Received: from mail-oo1-xc36.google.com (mail-oo1-xc36.google.com
 [2607:f8b0:4864:20::c36])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5822b2d8-91db-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 09:41:14 +0200 (CEST)
Received: by mail-oo1-xc36.google.com with SMTP id
 006d021491bc7-5ebc05007daso316952eaf.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 00:41:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5822b2d8-91db-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729755673; x=1730360473; 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=wTrkY3A15zDXnu3stRPPm+suRoYJsAdR2j9uXgLP8SM=;
        b=Gq0asSfslfV5fAUvM5s/Nz6Vqt5rbFqbm6V0hiJ1c0pxg8Ozf7mui9ptJNAGv33N5x
         rHzp5PZ9Usa289VFb7iWVzoQY+7Vhv/tmW6x/o92M8qc5nXiHCC4VzSZy0vYpzHzCWFI
         8x/Is9Za5JzqT290jWQLTBUCiY1rnkItBg5jXPH1lreyHcX5coqge2SBIvo0qWMjH2++
         kfanyY6op/ZPhdUmfSCs1d2khXWAL0255Z7ljZs4Rrp3JsTcfUwNuYkXSikjjU8cQRfo
         4OK+LT++TzzGXOcTqpwwWipRmLu8DNb/yhw3SoQ03ZbnU7qengcuLGomnpNO8RE0mFlb
         Z6iw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729755673; x=1730360473;
        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=wTrkY3A15zDXnu3stRPPm+suRoYJsAdR2j9uXgLP8SM=;
        b=e3JCx93bZENh+7pTi6mups9NwsIruvuHoaUEw/rkolNutkTRRyJYzIzeyQmo4boipj
         UD4+xF5gLTr4LQ/jLZTk2QVVTlYhjKOM3uSsQOsQuNdfgMZo80R5piCRHyBQLgXYmE6s
         2T4jJyd6B7ZXmjL4yL/vGiOh5b85IYfUzClpPVC9QMn1bIsWcG0Dn+5pF0JKXQdWKKzr
         D9AHLc0/B0JKre8frjThhVH8JNujsmhT+4g/UojeG+VFctUv3OaSBFiM5KloFCcvZmMo
         OhuzhCbw4Ag9xEnLkHPXpUikCkBLxrmpQZvsoeYKIyY4ynaInsUKa5uX1RUjzeLhNuSx
         a+Sg==
X-Gm-Message-State: AOJu0YykwgJwTf1TAbI3994oyx7Xy/wsl7GJ1JqpiB4mYHvHDBLr4aLR
	1TXsQg4kiUCfO1hTvGN7DVo139XzSNq40LlfB1skg5hMKe4yEvDwu3+j6lP/eHU4BUFdu+5zTef
	WpEHACA+uoVycils9OIaFWV3IbPwVXtmyCw8jTQ==
X-Google-Smtp-Source: AGHT+IGa6Xphtw1uI64xvNs2v9me+rPJrbVI88BSSpQi30bXD048FR2jf0evEU2AXosVCU8V5gYGQrXZ2XWTUKgJCjE=
X-Received: by 2002:a05:6870:9f14:b0:27b:2e84:fedc with SMTP id
 586e51a60fabf-28ccb4f6e4dmr5944318fac.21.1729755672745; Thu, 24 Oct 2024
 00:41:12 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <b23ad93b876267fb48a5a398e394e60fdf52d33d.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <b23ad93b876267fb48a5a398e394e60fdf52d33d.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 09:41:01 +0200
Message-ID: <CAHUa44ESfSimrf6coDmurQSfuCQyytsi2gJh_kePer2p3zotug@mail.gmail.com>
Subject: Re: [PATCH v2 09/10] xen/arm: ffa: Remove per VM notif_enabled
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Remove the per VM flag to store if notifications are enabled or not as
> the only case where they are not, if notifications are enabled globally,
> will make the VM creation fail.
> Also use the opportunity to always give the notifications interrupts IDs
> to VM. If the firmware does not support notifications, there won't be
> any generated and setting one will give back a NOT_SUPPORTED.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - rebase
> ---
>  xen/arch/arm/tee/ffa.c         | 17 +++--------------
>  xen/arch/arm/tee/ffa_notif.c   | 10 +---------
>  xen/arch/arm/tee/ffa_private.h |  2 --
>  3 files changed, 4 insertions(+), 25 deletions(-)
>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 72826b49d2aa..3a9525aa4598 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -169,8 +169,6 @@ static void handle_version(struct cpu_user_regs *regs=
)
>
>  static void handle_features(struct cpu_user_regs *regs)
>  {
> -    struct domain *d =3D current->domain;
> -    struct ffa_ctx *ctx =3D d->arch.tee;
>      uint32_t a1 =3D get_user_reg(regs, 1);
>      unsigned int n;
>
> @@ -218,16 +216,10 @@ static void handle_features(struct cpu_user_regs *r=
egs)
>          ffa_set_regs_success(regs, 0, 0);
>          break;
>      case FFA_FEATURE_NOTIF_PEND_INTR:
> -        if ( ctx->notif.enabled )
> -            ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
> -        else
> -            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> +        ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
>          break;
>      case FFA_FEATURE_SCHEDULE_RECV_INTR:
> -        if ( ctx->notif.enabled )
> -            ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, =
0);
> -        else
> -            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> +        ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0);
>          break;
>
>      case FFA_NOTIFICATION_BIND:
> @@ -236,10 +228,7 @@ static void handle_features(struct cpu_user_regs *re=
gs)
>      case FFA_NOTIFICATION_SET:
>      case FFA_NOTIFICATION_INFO_GET_32:
>      case FFA_NOTIFICATION_INFO_GET_64:
> -        if ( ctx->notif.enabled )
> -            ffa_set_regs_success(regs, 0, 0);
> -        else
> -            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> +        ffa_set_regs_success(regs, 0, 0);
>          break;
>      default:
>          ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.c
> index 4b3e46318f4b..3c6418e62e2b 100644
> --- a/xen/arch/arm/tee/ffa_notif.c
> +++ b/xen/arch/arm/tee/ffa_notif.c
> @@ -405,7 +405,6 @@ void ffa_notif_init(void)
>
>  int ffa_notif_domain_init(struct domain *d)
>  {
> -    struct ffa_ctx *ctx =3D d->arch.tee;
>      int32_t res;
>
>      if ( !notif_enabled )
> @@ -415,18 +414,11 @@ int ffa_notif_domain_init(struct domain *d)
>      if ( res )
>          return -ENOMEM;
>
> -    ctx->notif.enabled =3D true;
> -
>      return 0;
>  }
>
>  void ffa_notif_domain_destroy(struct domain *d)
>  {
> -    struct ffa_ctx *ctx =3D d->arch.tee;
> -
> -    if ( ctx->notif.enabled )
> -    {
> +    if ( notif_enabled )
>          ffa_notification_bitmap_destroy(ffa_get_vm_id(d));

This call may now be done even if there hasn't been a successful call
to ffa_notification_bitmap_create().
A comment mentioning this and that it's harmless (if we can be sure it
is) would be nice.

Cheers,
Jens

> -        ctx->notif.enabled =3D false;
> -    }
>  }
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 02162e0ee4c7..973ee55be09b 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -281,8 +281,6 @@ struct ffa_mem_region {
>  };
>
>  struct ffa_ctx_notif {
> -    bool enabled;
> -
>      /*
>       * True if domain is reported by FFA_NOTIFICATION_INFO_GET to have
>       * pending global notifications.
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 07:56:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 07:56:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824980.1239166 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3si7-0006yz-JY; Thu, 24 Oct 2024 07:56:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824980.1239166; Thu, 24 Oct 2024 07:56: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 1t3si7-0006ys-GX; Thu, 24 Oct 2024 07:56:47 +0000
Received: by outflank-mailman (input) for mailman id 824980;
 Thu, 24 Oct 2024 07:56: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=sutq=RU=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3si5-0006ym-PH
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 07:56:46 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on20610.outbound.protection.outlook.com
 [2a01:111:f403:2614::610])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 82cbc704-91dd-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 09:56:44 +0200 (CEST)
Received: from DU6P191CA0037.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53f::16)
 by PAVPR08MB9676.eurprd08.prod.outlook.com (2603:10a6:102:31f::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Thu, 24 Oct
 2024 07:56:37 +0000
Received: from DB1PEPF0003922E.eurprd03.prod.outlook.com
 (2603:10a6:10:53f:cafe::c1) by DU6P191CA0037.outlook.office365.com
 (2603:10a6:10:53f::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18 via Frontend
 Transport; Thu, 24 Oct 2024 07:56:36 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB1PEPF0003922E.mail.protection.outlook.com (10.167.8.101) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Thu, 24 Oct 2024 07:56:35 +0000
Received: ("Tessian outbound 60a4253641a2:v473");
 Thu, 24 Oct 2024 07:56:34 +0000
Received: from L9308e4ef1f61.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 F688755B-616D-4797-B613-18E218751942.1; 
 Thu, 24 Oct 2024 07:56:25 +0000
Received: from EUR03-DBA-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L9308e4ef1f61.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 24 Oct 2024 07:56:25 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by PA4PR08MB6158.eurprd08.prod.outlook.com (2603:10a6:102:e2::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20; Thu, 24 Oct
 2024 07:56:21 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Thu, 24 Oct 2024
 07:56: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: 82cbc704-91dd-11ef-a0bf-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=NE89wSw/8/kSFcL8bH0oH/1UAC5/RVzoF7ss0iEHiO3xZ38F/jCXILlr7wVA33D/v5rWYbDjfc1JmaBgusLI99OFub3xIV7uMbryuDAL4ZBjmGvXnxaN8yDUSbW+acyRvGIkFMSMf7eBqAXHcNUud8+eK6EsESZ2gHk259Biyi50V6xzIaa5v8YxPM70Kg87bJoe5dPsoouR/D2DHbhEyn/CZ+DhcqovGkBOwDqllwyJkbDJYKxZjLSYmOZG2cS37tbsrr+FVlrtKzO4H9/ZvNZTmH81F/Y4hbKVpYdLu8FcL4q/dDuoGxSZJP8P/z7oBkMnpozN9ts5ZGmSe0qgHg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=JnqOQXUyg5uSf4gYTBlGLyNmtlBemF3lVNNNgo8RtPk=;
 b=ne2V6zXf/YOH6VA1M+tRO0G6Wcmw9JhSUPtsjjC5rdAmc7pJe8mtuTVrIOYmPBEJyUNuo+PbXWNUTOrMUUYGyeA/yWD3D6Bwjg/UVMCVlgvT7F2mrWonYmFa34RaWmyStpFWa/WzWSF/4wf6No45ba3s/GvtQr0lD0BJgMPy/VQD/aQh8h21Jx1ttXNz980FDwAI1Sc5j3jEixdvc9viwq8PArvv+lF5mU5ccAAlBbp4BDJF2VtY+cLLzxnXNddg0eFuzuWKanv93i38cNOQnyb6SZJgUbYxeg1cw6+sL0Ez/lXijdqv91tGDcKcaoafKK73JMLcBXkXegT5w9OtIw==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JnqOQXUyg5uSf4gYTBlGLyNmtlBemF3lVNNNgo8RtPk=;
 b=UQIdU5+TsNtLeoePGww29JlV2BTJCOuRd8AOZmpy17aLDNle945okGqO7I73r4h47g93bdsjjdk2FVALIEpMQY5Q/VSvbo4/axlPE3H+6cBwEav9LEnq11tZsxumInnVg+ZLz0Tdh9/VsZnxpGn/BP4fE+G+gcEHshzz1y1XvYg=
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=arm.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: 0802c2103a81fee6
X-TessianGatewayMetadata: 5PdNQEjnFTuR0u8XqtrYgUu1yilupx51OPCFe8MdIgUbXNLYCozrKfa3iuMzvtYF3zQNPnI05ir5MuyI5u53eJy+mv6WOPpVss01/W4IROBfto29tL9UHL4qVvJtvUfa3S3Ti5XrUDuERH+MgCKlD+sRVJ5c9n3JYwR/WeoUbbc=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=aQSOGVmO4xkz/MA+8bXRKhyzT4HuB5EzCA35UfUzq5pqaCVnige21U1lTR2jSRPLilfJHvbwqBGl8SpvUvpbZAWkUzpX3kXIomwU/jUbCT+7QKZrkUOjmiLziWxUyiJt0DWOL/K+lElwGCUuDjRRzjMSCfiJETu/TpSanoQMkLs6bVvG3DPYFYQT4LfKhbTNBld9LjVAuhGlSjuueJ8XR1/ztoD8EJI25iP9M1N1F/Ar5Bctt6ZFvd451CrOupmZIcMY13BXs+0quCPhA9pTpOOTlTlzo6T5xjvNrUemnXay53sNbe0l0k9G01GXcms7juMk+zSpVgj+QY/uGQxr9g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=JnqOQXUyg5uSf4gYTBlGLyNmtlBemF3lVNNNgo8RtPk=;
 b=DIrqZR/B0+WoPK1k51G0IsnqzUsqNjp33UCxtYcXhG3b3hA/q7ZhruHyu5oklHiXWVxuXlJw9BowHcjNbHcWQ2dWp+Dw1mYSj7vhvbg/AQLHaD6qr42GjJUOKkuz65dVumGQpq+pkk/yp9YVjVmvaH4cnrpTzX9sx1FaZNrSyEKHtUjYEGfJlIdS3pHvcKKl+BDurddj5UcrmVAXggQnS1fBS51clNHvayd31UaZtK96w6R/bo0Ioja0g2qFbxIDIi5KKLkLFbHZiZoapinltFVwnf+3ydL8ylSz0eBIimVh+ve5QpXiQ/Y8JZfqTtuj1/00vlBE/4CDIhX1SYunuA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JnqOQXUyg5uSf4gYTBlGLyNmtlBemF3lVNNNgo8RtPk=;
 b=UQIdU5+TsNtLeoePGww29JlV2BTJCOuRd8AOZmpy17aLDNle945okGqO7I73r4h47g93bdsjjdk2FVALIEpMQY5Q/VSvbo4/axlPE3H+6cBwEav9LEnq11tZsxumInnVg+ZLz0Tdh9/VsZnxpGn/BP4fE+G+gcEHshzz1y1XvYg=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 06/10] xen/arm: ffa: Use bit 15 convention for SPs
Thread-Topic: [PATCH v2 06/10] xen/arm: ffa: Use bit 15 convention for SPs
Thread-Index: AQHbH6X4Kzq6WyYLgEicHYTh9yXtYLKUXBIAgAE5AgA=
Date: Thu, 24 Oct 2024 07:56:21 +0000
Message-ID: <F164CCF2-E7FA-4444-BC1D-0D720AB2154D@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <dec1c02aa0142263796c53b8df917fa25e2d2675.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44Gfkt-DOv0hZv+tPypgS59dVFrvLm=X-Dn=+Xu-hS-g+A@mail.gmail.com>
In-Reply-To:
 <CAHUa44Gfkt-DOv0hZv+tPypgS59dVFrvLm=X-Dn=+Xu-hS-g+A@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|PA4PR08MB6158:EE_|DB1PEPF0003922E:EE_|PAVPR08MB9676:EE_
X-MS-Office365-Filtering-Correlation-Id: b9e29ea6-586f-47af-bee3-08dcf40161ca
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?N01idE1HcmJGUVc2RnVwcFhERndZOU9vMm9sSmFIcm01QlpJYmRHN0FFSUJq?=
 =?utf-8?B?UCtxaG5wVjlCTVNpakNBWDBIYWJiYytONS9aQU81azZvTUlxMFlCNkRFQyt6?=
 =?utf-8?B?cGoxVWE4VlMyOTg3aFpSeVNTR2pLVlQwc1R2NlRHWTdBQ1VwczdURlNMN0pJ?=
 =?utf-8?B?aE5zcEJMNDFRRUhXYTA2eUduSDdKRTRVanRRWS8rTkxpdUQ5N3JPTVRsNE9n?=
 =?utf-8?B?U2xRVU1RZFdsVkpLS3RHVEtCMmlua2ZNSXFQRzZqNmRxZmtXbG8wVzF3MitY?=
 =?utf-8?B?Y0pzUDdycGI5K0M1M0JlVXVzaUloRXgxMFpQMkVpVFJyWDFJSzBCdkhZUk10?=
 =?utf-8?B?Z28wVEdCZkljOUdmZnAvYzBYcHJjc0lDYjJIbWwvcEtPR0NqL0dpREd4Qi8y?=
 =?utf-8?B?SWVHelhQaU5pK21EUFY4VnpWdlU3OTRjekoxWFF1MndEVnN3SGtlL3NaaDZl?=
 =?utf-8?B?bmhRdlc2NDVxdzRCRGhFcFpoMnJmT1FVcWdKTVNWWUJWck5zSEI1dlcwMFpa?=
 =?utf-8?B?S29VRU5nOFo2ay9saE5BUkRJbjJtRWtobm00SUJsQlYwc3FxWWhIZVpwdjY4?=
 =?utf-8?B?VWRqTUUxZTNWK0xqaHFhV28xODhGU1NSb3IwdEhxSG1sbW1pNEp3VWI1d0Rs?=
 =?utf-8?B?YVhvZ3FGV1o5bkp0azNycHBTWnVMVDR6ZG4ycWV3NTk3SGU4VVI5Z0JHZG43?=
 =?utf-8?B?b1p3NWxWS2cwVlJPTTVSdGw5VCs1TjR5TFRwN0FGaWNYbktCb2syMHVlTnlz?=
 =?utf-8?B?aXhVT1NuKzRtdG1LT05wQmIxVmEwSHFjSkltdXZwV2VscGxTWmRzYjdibklw?=
 =?utf-8?B?bzhZRUdMNlIrdXNHS24vMzhLdXJLUlZQNXliSWoxdHAvdW9HM283bDJIdFkv?=
 =?utf-8?B?Yi83eENvMU1jSEJ5M004bDRRQzlHYUt1QU1oNU9xMHlUZS91UUZFUTBTSmZZ?=
 =?utf-8?B?SWNRVm8vdEVjSWcvY3JCd3huc3NsWno4Y0E5K1JVSjlqMktaQUphczdWVm1z?=
 =?utf-8?B?RkJWemJ1WHNDK3JlVW14NkRkTE05NXdxYWQ0QW10UldmNjF0QjIyMHlXK2NN?=
 =?utf-8?B?bTdqU25sM3lBQ2ZxZ0pGN2tVaTVvRVVRWm15elNaN3VkSFBOaUJBOGlNdzFz?=
 =?utf-8?B?VTZFNjBzRmFaWjlJRDhlTGhXZE5WbUJuM1dXeURQTzdYMmNFR3ovMEszSUNS?=
 =?utf-8?B?aWpkck13OTltMGJJVW10a2I4eDAxeVcwV1BCTkpvYlh6blBtMHg0cFJLREEw?=
 =?utf-8?B?WGtqTzBGZ2gwZ1dmcnkwTmNJdVJyT25WQ0F4N2JFMnJtdGFUR1lMQnA4UWY2?=
 =?utf-8?B?cDBnbTdoT0g1SFNBZDkrRERvQ2xVUkpaUG02eHVHUXFDeUtxSEdZWFVwOGRF?=
 =?utf-8?B?UDNuZ1Y2Um1CWEQyTTZWdFpUd05HcDJiL1dOTlpYUzY4akRzQWJzNWlnREhT?=
 =?utf-8?B?ZDIrdDVFQ0d4OGw3Q1oxUitPOHE3Z0NBUEhqbXYzU2R2UElzeCtodU9VbDg2?=
 =?utf-8?B?cmtkT0cxNlFXdjcxQWpJV2c4NDBNcG5ubStKNS9qdlZzc29jbUl6dlhwU0VV?=
 =?utf-8?B?eS90a2JDN2VhZ3dWNSt5SzJkUTY3ZnFPYWV2YkY2MDBNMk5BNG5nU2w5dHZj?=
 =?utf-8?B?bFZ3bC95dHYwaDI1cmRvYkpiZ0cxb3BITFdKV3NGb2JkZWhZdDZNWnNGbElD?=
 =?utf-8?B?SlNkSSt3SE8waW9BVnlGNFZSL04wcHZYSGRzUCtWVFpSeXNqNysvSE8rdjRs?=
 =?utf-8?B?VTU1VjBuVGFoVzhhNjlxblY3R2dMbUJNR25iTDFETlhQMFR6N0RkcHZnME1z?=
 =?utf-8?Q?fGvv/cw+nAnv4xXvKHgMOWzOPfOvrgkR19hB8=3D?=
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:(13230040)(10070799003)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <48390B08532DF54BBFE1BEEBC3B881D1@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6158
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF0003922E.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	531267f5-3120-4b2f-94f0-08dcf4015968
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|1800799024|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MXBCTzl0NzZaVHpHQ3hONEtpRlE1ZDVjTEpFQjgxNkd5cDFrVnRiZVhjN200?=
 =?utf-8?B?QmU3L0I0RkdILzlxR0t6K1JkWFRmQXhhOGYwMW9vaWdXSnM0SGRGM1RCMDJ5?=
 =?utf-8?B?TFRDOHpZTEwvdHNCL1ZZd1NvbjMyUWFjWGRrWEJNZGVSb3BRekN6SUh1d1ZP?=
 =?utf-8?B?ekJhdmdGN2R3bnQ3UHRURERCREwxbHNxSmRidjV2UFNtVlBrNEZpTnRkendK?=
 =?utf-8?B?K1pnYVZYU21vV0VwaEM4UithVWJLZmhwdzlHNGp6YVBvcEJDQ3hua0tmWkla?=
 =?utf-8?B?UlVLQ2JzQVdxeTdoSnZycWFIeHVkVHF1VkdPVU9MYmVGa0pNblNZSzZ4T3hi?=
 =?utf-8?B?dUhVdHVLM3lWcHYrYURMU1VTK1hiUmY0OU5qQ0lpV0kvUW42NUJLdCtqbHdS?=
 =?utf-8?B?b3dUNG9ZYXNmY0ZBSU9uOS9rZERUT0cvV011SC9pa0lBNFo3TjlsMHFwK3Rv?=
 =?utf-8?B?eFFPYk5TeXdKR2Nlczd0aTZHeitPdWpyZmFSRnJpcGpxaWFSWXRkM25QbWhy?=
 =?utf-8?B?a1ZuaGQ1Zlpjd0J5Z0hQM2ZtOE5oQnlrekdWdFZuV2Y5aE95NzdBa3VvdGtS?=
 =?utf-8?B?TlNZT1RjMmU5QnVuUWxSZUpqWlNzZlUwWE5uMlQ3SDZmajBCOUxKcXFiMlBP?=
 =?utf-8?B?Z2luam9WL1dNenpoTWVIS2J1OWJPQ1I3RXE1SjJmUzJuU1MzZ1lJd3F6V1M5?=
 =?utf-8?B?M2hFSWgvZ2hzUXc4eE43THlUNFhXVy9GM2tycERLOERzU3lNd1Q1djgvTy83?=
 =?utf-8?B?Vk1qOHFiOEkwZ014dk53WTFPK29FSE1kS3F6dkpZVXNtRWZoSlQ5QkhNRWIz?=
 =?utf-8?B?UWVQNktOaHFBMEVsUDFoYWt1UzZLNnpWSldLdjBVN2EwTElSMTVBM3dFUEVG?=
 =?utf-8?B?Vm9FRUVCdCtIeWRoaFN6eDVEMEprb0hvWGdZNUJ0a0dmUEIxQzBIV2JUbkxT?=
 =?utf-8?B?bEp6ek9aazdDSHNXa3l0WnhiRnREQ05XUWYzNWNQR0lVcFM0K290bmtvdXpO?=
 =?utf-8?B?Q2J5ZG03eXhFaTFpOVdkMjl3T2Z4NlJhWmFvK2RUaUNsWnVUV3VJUGprWUJs?=
 =?utf-8?B?TnR4Y2VVbHAvL1dUZ0c4TVpHWVN2T29LZjlFVG9yUlJodUo3eXB6Q3F3b2VF?=
 =?utf-8?B?bzRPQkYvOGg0QnpmckU1TWxKQUptanBtMDVLZ1VmVWM3OGQ1cTVRdVEvOXFu?=
 =?utf-8?B?NkZmRWxvQU5OUC9ET3BoV05oSWc3OTV2UXUvYWZ2OHFLNmVHeXhzZi9jRE5I?=
 =?utf-8?B?dkxNWVB1T0xQWlpjZi9UaG5FYVZGbmZwSWd1RXhla0cveGFzdjJsbXlFMk44?=
 =?utf-8?B?ekhWdEF3MkhHZUVCblR0TGVxYjVNbU1zcXk5WjR2WGk5R1hteTZRY0VNTHpQ?=
 =?utf-8?B?NmVreFZ4bGFyVEljMzArTkJ6R0JUL01pdTRJZHdBQnJDNDRKK0ZzakREdUZ6?=
 =?utf-8?B?SVV1a0IvaXRlSUhVTFVveFYzY2VrNFk1STZPRDFZYXdRMGZSaC9CcEZkNFIx?=
 =?utf-8?B?OUZFSEN5WGlEKzBLYVl5S28wWThPWTBpeDYvS0twUkNCL25Pa3gzZVhoNXR5?=
 =?utf-8?B?TW1RNm9yenZZNFYweFNabXdJTXZBaWxNSmFWcUMxK2JTaXFXRlFsdDNpRUJx?=
 =?utf-8?B?Nm11NUlnRlUrdXA3S1ZyUUFkcElzRno3REZNek9tdHluZFZDNUp4ODZCN3h1?=
 =?utf-8?B?NUdhaWlhM3BXRkpTSldJckRNLzVnZ0oxc0duQXdJOStYVDd4b0k0TGxlYU5O?=
 =?utf-8?B?UFNuVzhSUFcvUGtlcXZVcGxnMDB1cjlvblJ0Ylp4UTBzZU5aUHczVm5DeUNF?=
 =?utf-8?B?a1lLWVgwcmdTSFJ4cEc0RlNoQy9sV3F6MXJ2enBXdHpKcit5MFdwZytTUzRx?=
 =?utf-8?B?SnZwbnBoVXQ0YzV1WUttZXFIUWV3b3RMYTBLKzNLV3BuSlE9PQ==?=
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:(13230040)(376014)(35042699022)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 07:56:35.2589
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b9e29ea6-586f-47af-bee3-08dcf40161ca
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:
	DB1PEPF0003922E.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9676

SGkgSmVucywNCg0KPiBPbiAyMyBPY3QgMjAyNCwgYXQgMTU6MTUsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gV2VkLCBPY3QgMTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
IDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+IHdyb3RlOg0KPj4gDQo+PiBNYWtlIHVzZSBhbmQg
cmVxdWlyZWQgdG8gaGF2ZSBiaXQgMTUgY29udmVudGlvbiByZXNwZWN0ZWQgYnkgc2VjdXJlDQo+
PiB3b3JsZCAoaGF2aW5nIGJpdCAxNSBvZiBJRHMgc2V0IGZvciBzZWN1cmUgZW5kcG9pbnRzIGFu
ZCBub24tc2V0IGZvcg0KPj4gbm9uLXNlY3VyZSBvbmVzKS4NCj4+IElmIGFueSBzZWN1cmUgcGFy
dGl0aW9uIGhhcyBhbiBJRCB3aXRoIGJpdCAxNSBub3Qgc2V0LCBpdCB3aWxsIG5vdCBiZQ0KPj4g
cG9zc2libGUgdG8gY29udGFjdCBvciBkZXRlY3QgdGhlbS4NCj4+IFByaW50IGFuIGVycm9yIGxv
ZyBkdXJpbmcgcHJvYmUgZm9yIGVhY2ggc2VjdXJlIGVuZHBvaW50IGRldGVjdGVkIHdpdGgNCj4+
IGJpdCAxNSBub3Qgc2V0Lg0KPj4gDQo+PiBXZSBhcmUgc3dpdGNoaW5nIHRvIHRoaXMgY29udmVu
dGlvbiBiZWNhdXNlIFhlbiBpcyBjdXJyZW50bHkgbm90IHVzaW5nDQo+PiBWTUlEcyB3aXRoIGJp
dCAxNSBzZXQgc28gd2UgYXJlIHN1cmUgdGhhdCBubyBWTSB3aWxsIGhhdmUgaXQgc2V0ICh0aGlz
DQo+PiBpcyBlbnN1cmVkIGJ5IEJVSUxEX0JVR19PTiBpbiBjYXNlIHRoaXMgYmVjb21lcyBmYWxz
ZSBpbiB0aGUgZnV0dXJlKS4NCj4+IEl0IGlzIGFsbG93aW5nIHRvIGVhc2lseSBkaXN0aW5ndWlz
aCBiZXR3ZWVuIHNlY3VyZSBhbmQgbm9uLXNlY3VyZQ0KPj4gZW5kcG9pbnRzLCBwcmV2ZW50aW5n
IHRoZSBuZWVkIHRvIHN0b3JlIGEgbGlzdCBvZiBzZWN1cmUgZW5kcG9pbnQgSURzIGluDQo+PiBY
ZW4uDQo+PiANCj4+IFNpZ25lZC1vZmYtYnk6IEJlcnRyYW5kIE1hcnF1aXMgPGJlcnRyYW5kLm1h
cnF1aXNAYXJtLmNvbT4NCj4+IC0tLQ0KPj4gQ2hhbmdlcyBpbiB2MjoNCj4+IC0gcmViYXNlDQo+
PiAtLS0NCj4+IHhlbi9hcmNoL2FybS90ZWUvZmZhLmMgICAgICAgICAgfCAyMiArKysrKysrKysr
Ky0tLQ0KPj4geGVuL2FyY2gvYXJtL3RlZS9mZmFfcGFydGluZm8uYyB8IDU0ICsrKysrKysrKysr
KysrKysrKysrKysrKystLS0tLS0tLQ0KPj4geGVuL2FyY2gvYXJtL3RlZS9mZmFfcHJpdmF0ZS5o
ICB8ICA3ICsrKysrDQo+PiB4ZW4vYXJjaC9hcm0vdGVlL2ZmYV9zaG0uYyAgICAgIHwgMTIgKysr
KysrKy0NCj4+IDQgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25z
KC0pDQo+PiANCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jIGIveGVuL2Fy
Y2gvYXJtL3RlZS9mZmEuYw0KPj4gaW5kZXggNGI1NWU4YjQ4ZjAxLi5hMjkyMDAzY2E5ZmUgMTAw
NjQ0DQo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jDQo+PiArKysgYi94ZW4vYXJjaC9h
cm0vdGVlL2ZmYS5jDQo+PiBAQCAtMTk1LDYgKzE5NSwxNCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVf
bXNnX3NlbmRfZGlyZWN0X3JlcShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgdWludDMyX3Qg
ZmlkKQ0KPj4gICAgICAgICBnb3RvIG91dDsNCj4+ICAgICB9DQo+PiANCj4+ICsgICAgLyogd2Ug
ZG8gbm90IHN1cHBvcnQgZGlyZWN0IG1lc3NhZ2VzIHRvIFZNcyAqLw0KPj4gKyAgICBpZiAoICFG
RkFfSURfSVNfU0VDVVJFKHNyY19kc3QgJiBHRU5NQVNLKDE1LDApKSApDQo+PiArICAgIHsNCj4+
ICsgICAgICAgIHJlc3AuYTAgPSBGRkFfRVJST1I7DQo+PiArICAgICAgICByZXNwLmEyID0gRkZB
X1JFVF9OT1RfU1VQUE9SVEVEOw0KPj4gKyAgICAgICAgZ290byBvdXQ7DQo+PiArICAgIH0NCj4+
ICsNCj4+ICAgICBhcmcuYTEgPSBzcmNfZHN0Ow0KPj4gICAgIGFyZy5hMiA9IGdldF91c2VyX3Jl
ZyhyZWdzLCAyKSAmIG1hc2s7DQo+PiAgICAgYXJnLmEzID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIDMp
ICYgbWFzazsNCj4+IEBAIC0zOTEsMTEgKzM5OSwxNSBAQCBzdGF0aWMgaW50IGZmYV9kb21haW5f
aW5pdChzdHJ1Y3QgZG9tYWluICpkKQ0KPj4gDQo+PiAgICAgaWYgKCAhZmZhX2Z3X3ZlcnNpb24g
KQ0KPj4gICAgICAgICByZXR1cm4gLUVOT0RFVjsNCj4+IC0gICAgIC8qDQo+PiAtICAgICAgKiBX
ZSBjYW4ndCB1c2UgdGhhdCBsYXN0IHBvc3NpYmxlIGRvbWFpbiBJRCBvciBmZmFfZ2V0X3ZtX2lk
KCkgd291bGQNCj4+IC0gICAgICAqIGNhdXNlIGFuIG92ZXJmbG93Lg0KPj4gLSAgICAgICovDQo+
PiAtICAgIGlmICggZC0+ZG9tYWluX2lkID49IFVJTlQxNl9NQVgpDQo+PiArICAgIC8qDQo+PiAr
ICAgICAqIFdlIGFyZSB1c2luZyB0aGUgZG9tYWluX2lkICsgMSBhcyB0aGUgRkYtQSBJRCBmb3Ig
Vk1zIGFzIEZGLUEgSUQgMCBpcw0KPj4gKyAgICAgKiByZXNlcnZlZCBmb3IgdGhlIGh5cGVydmlz
b3IgYW5kIHdlIG9ubHkgc3VwcG9ydCBzZWN1cmUgZW5kcG9pbnRzIHVzaW5nDQo+PiArICAgICAq
IEZGLUEgSURzIHdpdGggQklUIDE1IHNldCB0byAxIHNvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgbm90
IHVzZWQgYnkgWGVuLg0KPj4gKyAgICAgKi8NCj4+ICsgICAgQlVJTERfQlVHX09OKERPTUlEX0ZJ
UlNUX1JFU0VSVkVEID49IFVJTlQxNl9NQVgpOw0KPj4gKyAgICBCVUlMRF9CVUdfT04oKERPTUlE
X01BU0sgJiBCSVQoMTUsIFUpKSAhPSAwKTsNCj4+ICsNCj4+ICsgICAgaWYgKCBkLT5kb21haW5f
aWQgPj0gRE9NSURfRklSU1RfUkVTRVJWRUQgKQ0KPj4gICAgICAgICByZXR1cm4gLUVSQU5HRTsN
Cj4+IA0KPj4gICAgIGN0eCA9IHh6YWxsb2Moc3RydWN0IGZmYV9jdHgpOw0KPj4gZGlmZiAtLWdp
dCBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX3BhcnRpbmZvLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2Zm
YV9wYXJ0aW5mby5jDQo+PiBpbmRleCA3NWEwNzNkMDkwZTAuLjNjZjgwMTUyMzI5NiAxMDA2NDQN
Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX3BhcnRpbmZvLmMNCj4+ICsrKyBiL3hlbi9h
cmNoL2FybS90ZWUvZmZhX3BhcnRpbmZvLmMNCj4+IEBAIC0xNjksMTQgKzE2OSwyNiBAQCB2b2lk
IGZmYV9oYW5kbGVfcGFydGl0aW9uX2luZm9fZ2V0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdz
KQ0KPj4gDQo+PiAgICAgaWYgKCBmZmFfc3BfY291bnQgPiAwICkNCj4+ICAgICB7DQo+PiAtICAg
ICAgICB1aW50MzJfdCBuOw0KPj4gKyAgICAgICAgdWludDMyX3QgbiwgcmVhbF9udW0gPSBmZmFf
c3BfY291bnQ7DQo+IA0KPiBOaXQ6IGhvdyBhYm91dCBuX2xpbWl0IGluc3RlYWQgb2YgcmVhbF9u
dW0/DQoNClN1cmUgaSB3aWxsIGNoYW5nZSB0aGF0IGluIHYzLg0KDQo+IA0KPj4gICAgICAgICB2
b2lkICpzcmNfYnVmID0gZmZhX3J4Ow0KPj4gDQo+PiAgICAgICAgIC8qIGNvcHkgdGhlIHNlY3Vy
ZSBwYXJ0aXRpb25zIGluZm8gKi8NCj4+IC0gICAgICAgIGZvciAoIG4gPSAwOyBuIDwgZmZhX3Nw
X2NvdW50OyBuKysgKQ0KPj4gKyAgICAgICAgZm9yICggbiA9IDA7IG4gPCByZWFsX251bTsgbisr
ICkNCj4+ICAgICAgICAgew0KPj4gLSAgICAgICAgICAgIG1lbWNweShkc3RfYnVmLCBzcmNfYnVm
LCBkc3Rfc2l6ZSk7DQo+PiAtICAgICAgICAgICAgZHN0X2J1ZiArPSBkc3Rfc2l6ZTsNCj4+ICsg
ICAgICAgICAgICBzdHJ1Y3QgZmZhX3BhcnRpdGlvbl9pbmZvXzFfMSAqZnBpID0gc3JjX2J1ZjsN
Cj4+ICsNCj4+ICsgICAgICAgICAgICAvKiBmaWx0ZXIgb3V0IFNQIG5vdCBmb2xsb3dpbmcgYml0
IDE1IGNvbnZlbnRpb24gaWYgYW55ICovDQo+PiArICAgICAgICAgICAgaWYgKCBGRkFfSURfSVNf
U0VDVVJFKGZwaS0+aWQpICkNCj4+ICsgICAgICAgICAgICB7DQo+PiArICAgICAgICAgICAgICAg
IG1lbWNweShkc3RfYnVmLCBzcmNfYnVmLCBkc3Rfc2l6ZSk7DQo+PiArICAgICAgICAgICAgICAg
IGRzdF9idWYgKz0gZHN0X3NpemU7DQo+PiArICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAg
IGVsc2UNCj4+ICsgICAgICAgICAgICB7DQo+PiArICAgICAgICAgICAgICAgIHByaW50ayhYRU5M
T0dfSU5GTyAiZmZhOiBzcCBpZCAweCUwNHggc2tpcHBlZCwgYml0IDE1IGlzIDBcbiIsDQo+PiAr
ICAgICAgICAgICAgICAgICAgICAgICBmcGktPmlkKTsNCj4gDQo+IFdlIGhhdmUgYWxyZWFkeSBs
b2dnZWQgdGhpcyBpbiBpbml0X3N1YnNjcmliZXJzKCkgYmVsb3cuIElzIHRoZXJlIGENCj4gcmlz
ayBvZiBmbG9vZGluZyB0aGUgbG9ncyB3aXRoIHRoaXM/DQoNCllvdSBhcmUgcmlnaHQsIGhhdmlu
ZyBpdCBwcmludGVkIG9uY2UgaXMgZW5vdWdoLg0KSSB3aWxsIHJlbW92ZSB0aGlzIExPRy4NCg0K
Q2hlZXJzDQpCZXJ0cmFuZA0KDQo+IA0KPiBDaGVlcnMsDQo+IEplbnMNCj4gDQo+PiArICAgICAg
ICAgICAgICAgIGZmYV9zcF9jb3VudC0tOw0KPj4gKyAgICAgICAgICAgIH0NCj4+ICAgICAgICAg
ICAgIHNyY19idWYgKz0gc3JjX3NpemU7DQo+PiAgICAgICAgIH0NCj4+ICAgICB9DQo+PiBAQCAt
Mjc2LDEwICsyODgsMjUgQEAgc3RhdGljIGJvb2wgaW5pdF9zdWJzY3JpYmVycyh1aW50MTZfdCBj
b3VudCwgdWludDMyX3QgZnBpX3NpemUpDQo+PiAgICAgew0KPj4gICAgICAgICBmcGkgPSBmZmFf
cnggKyBuICogZnBpX3NpemU7DQo+PiANCj4+IC0gICAgICAgIGlmICggZnBpLT5wYXJ0aXRpb25f
cHJvcGVydGllcyAmIEZGQV9QQVJUX1BST1BfTk9USUZfQ1JFQVRFRCApDQo+PiAtICAgICAgICAg
ICAgc3Vic2NyX3ZtX2NyZWF0ZWRfY291bnQrKzsNCj4+IC0gICAgICAgIGlmICggZnBpLT5wYXJ0
aXRpb25fcHJvcGVydGllcyAmIEZGQV9QQVJUX1BST1BfTk9USUZfREVTVFJPWUVEICkNCj4+IC0g
ICAgICAgICAgICBzdWJzY3Jfdm1fZGVzdHJveWVkX2NvdW50Kys7DQo+PiArICAgICAgICAvKg0K
Pj4gKyAgICAgICAgICogV2UgbmVlZCB0byBoYXZlIHNlY3VyZSBwYXJ0aXRpb25zIHVzaW5nIGJp
dCAxNSBzZXQgY29udmVudGlvbiBmb3INCj4+ICsgICAgICAgICAqIHNlY3VyZSBwYXJ0aXRpb24g
SURzLg0KPj4gKyAgICAgICAgICogSW5mb3JtIHRoZSB1c2VyIHdpdGggYSBsb2cgYW5kIGRpc2Nh
cmQgZ2l2aW5nIGNyZWF0ZWQgb3IgZGVzdHJveQ0KPj4gKyAgICAgICAgICogZXZlbnQgdG8gdGhv
c2UgSURzLg0KPj4gKyAgICAgICAgICovDQo+PiArICAgICAgICBpZiAoICFGRkFfSURfSVNfU0VD
VVJFKGZwaS0+aWQpICkNCj4+ICsgICAgICAgIHsNCj4+ICsgICAgICAgICAgICBwcmludGsoWEVO
TE9HX0VSUiAiZmZhOiBGaXJtd2FyZSBpcyBub3QgdXNpbmcgYml0IDE1IGNvbnZlbnRpb24gZm9y
IElEcyAhIVxuIg0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZmE6IFNlY3Vy
ZSBwYXJ0aXRpb24gd2l0aCBpZCAweCUwNHggY2Fubm90IGJlIHVzZWRcbiIsDQo+PiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnBpLT5pZCk7DQo+PiArICAgICAgICB9DQo+PiArICAg
ICAgICBlbHNlDQo+PiArICAgICAgICB7DQo+PiArICAgICAgICAgICAgaWYgKCBmcGktPnBhcnRp
dGlvbl9wcm9wZXJ0aWVzICYgRkZBX1BBUlRfUFJPUF9OT1RJRl9DUkVBVEVEICkNCj4+ICsgICAg
ICAgICAgICAgICAgc3Vic2NyX3ZtX2NyZWF0ZWRfY291bnQrKzsNCj4+ICsgICAgICAgICAgICBp
ZiAoIGZwaS0+cGFydGl0aW9uX3Byb3BlcnRpZXMgJiBGRkFfUEFSVF9QUk9QX05PVElGX0RFU1RS
T1lFRCApDQo+PiArICAgICAgICAgICAgICAgIHN1YnNjcl92bV9kZXN0cm95ZWRfY291bnQrKzsN
Cj4+ICsgICAgICAgIH0NCj4+ICAgICB9DQo+PiANCj4+ICAgICBpZiAoIHN1YnNjcl92bV9jcmVh
dGVkX2NvdW50ICkNCj4+IEBAIC0yOTksMTAgKzMyNiwxMyBAQCBzdGF0aWMgYm9vbCBpbml0X3N1
YnNjcmliZXJzKHVpbnQxNl90IGNvdW50LCB1aW50MzJfdCBmcGlfc2l6ZSkNCj4+ICAgICB7DQo+
PiAgICAgICAgIGZwaSA9IGZmYV9yeCArIG4gKiBmcGlfc2l6ZTsNCj4+IA0KPj4gLSAgICAgICAg
aWYgKCBmcGktPnBhcnRpdGlvbl9wcm9wZXJ0aWVzICYgRkZBX1BBUlRfUFJPUF9OT1RJRl9DUkVB
VEVEICkNCj4+IC0gICAgICAgICAgICBzdWJzY3Jfdm1fY3JlYXRlZFtjX3BvcysrXSA9IGZwaS0+
aWQ7DQo+PiAtICAgICAgICBpZiAoIGZwaS0+cGFydGl0aW9uX3Byb3BlcnRpZXMgJiBGRkFfUEFS
VF9QUk9QX05PVElGX0RFU1RST1lFRCApDQo+PiAtICAgICAgICAgICAgc3Vic2NyX3ZtX2Rlc3Ry
b3llZFtkX3BvcysrXSA9IGZwaS0+aWQ7DQo+PiArICAgICAgICBpZiAoIEZGQV9JRF9JU19TRUNV
UkUoZnBpLT5pZCkgKQ0KPj4gKyAgICAgICAgew0KPj4gKyAgICAgICAgICAgIGlmICggZnBpLT5w
YXJ0aXRpb25fcHJvcGVydGllcyAmIEZGQV9QQVJUX1BST1BfTk9USUZfQ1JFQVRFRCApDQo+PiAr
ICAgICAgICAgICAgICAgIHN1YnNjcl92bV9jcmVhdGVkW2NfcG9zKytdID0gZnBpLT5pZDsNCj4+
ICsgICAgICAgICAgICBpZiAoIGZwaS0+cGFydGl0aW9uX3Byb3BlcnRpZXMgJiBGRkFfUEFSVF9Q
Uk9QX05PVElGX0RFU1RST1lFRCApDQo+PiArICAgICAgICAgICAgICAgIHN1YnNjcl92bV9kZXN0
cm95ZWRbZF9wb3MrK10gPSBmcGktPmlkOw0KPj4gKyAgICAgICAgfQ0KPj4gICAgIH0NCj4+IA0K
Pj4gICAgIHJldHVybiB0cnVlOw0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZh
X3ByaXZhdGUuaCBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX3ByaXZhdGUuaA0KPj4gaW5kZXggZTVi
YzczZjkwMzllLi5hZmU2OWI0M2RiZWYgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdGVl
L2ZmYV9wcml2YXRlLmgNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX3ByaXZhdGUuaA0K
Pj4gQEAgLTEwOCw2ICsxMDgsMTMgQEANCj4+ICAqLw0KPj4gI2RlZmluZSBGRkFfQ1RYX1RFQVJE
T1dOX0RFTEFZICAgICAgICAgIFNFQ09ORFMoMSkNCj4+IA0KPj4gKy8qDQo+PiArICogV2UgcmVs
eSBvbiB0aGUgY29udmVudGlvbiBzdWdnZXN0ZWQgYnV0IG5vdCBtYW5kYXRlZCBieSB0aGUgRkYt
QQ0KPj4gKyAqIHNwZWNpZmljYXRpb24gdGhhdCBzZWN1cmUgd29ybGQgZW5kcG9pbnQgaWRlbnRp
ZmllcnMgaGF2ZSB0aGUgYml0IDE1DQo+PiArICogc2V0IGFuZCBub3JtYWwgd29ybGQgaGF2ZSBp
dCBzZXQgdG8gMC4NCj4+ICsgKi8NCj4+ICsjZGVmaW5lIEZGQV9JRF9JU19TRUNVUkUoaWQpICAg
ICgoaWQpICYgQklUKDE1LCBVKSkNCj4+ICsNCj4+IC8qIEZGLUEtMS4xLVJFTDAgc2VjdGlvbiAx
MC45LjIgTWVtb3J5IHJlZ2lvbiBoYW5kbGUsIHBhZ2UgMTY3ICovDQo+PiAjZGVmaW5lIEZGQV9I
QU5ETEVfSFlQX0ZMQUcgICAgICAgICAgICAgQklUKDYzLCBVTEwpDQo+PiAjZGVmaW5lIEZGQV9I
QU5ETEVfSU5WQUxJRCAgICAgICAgICAgICAgMHhmZmZmZmZmZmZmZmZmZmZmVUxMDQo+PiBkaWZm
IC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RlZS9mZmFfc2htLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2Zm
YV9zaG0uYw0KPj4gaW5kZXggZWZhNWI2N2RiOGUxLi4yOTY3NWY5YmEzZjcgMTAwNjQ0DQo+PiAt
LS0gYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9zaG0uYw0KPj4gKysrIGIveGVuL2FyY2gvYXJtL3Rl
ZS9mZmFfc2htLmMNCj4+IEBAIC00NjksNiArNDY5LDcgQEAgdm9pZCBmZmFfaGFuZGxlX21lbV9z
aGFyZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCj4+ICAgICBpbnQgcmV0ID0gRkZBX1JF
VF9ERU5JRUQ7DQo+PiAgICAgdWludDMyX3QgcmFuZ2VfY291bnQ7DQo+PiAgICAgdWludDMyX3Qg
cmVnaW9uX29mZnM7DQo+PiArICAgIHVpbnQxNl90IGRzdF9pZDsNCj4+IA0KPj4gICAgIGlmICgg
IWZmYV9md19zdXBwb3J0c19maWQoRkZBX01FTV9TSEFSRV82NCkgKQ0KPj4gICAgIHsNCj4+IEBA
IC01MzcsNiArNTM4LDE1IEBAIHZvaWQgZmZhX2hhbmRsZV9tZW1fc2hhcmUoc3RydWN0IGNwdV91
c2VyX3JlZ3MgKnJlZ3MpDQo+PiAgICAgICAgIGdvdG8gb3V0X3VubG9jazsNCj4+IA0KPj4gICAg
IG1lbV9hY2Nlc3MgPSBjdHgtPnR4ICsgdHJhbnMubWVtX2FjY2Vzc19vZmZzOw0KPj4gKw0KPj4g
KyAgICBkc3RfaWQgPSBBQ0NFU1NfT05DRShtZW1fYWNjZXNzLT5hY2Nlc3NfcGVybS5lbmRwb2lu
dF9pZCk7DQo+PiArICAgIGlmICggIUZGQV9JRF9JU19TRUNVUkUoZHN0X2lkKSApDQo+PiArICAg
IHsNCj4+ICsgICAgICAgIC8qIHdlIGRvIG5vdCBzdXBwb3J0IHNoYXJpbmcgd2l0aCBWTXMgKi8N
Cj4+ICsgICAgICAgIHJldCA9IEZGQV9SRVRfTk9UX1NVUFBPUlRFRDsNCj4+ICsgICAgICAgIGdv
dG8gb3V0X3VubG9jazsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gICAgIGlmICggQUNDRVNTX09OQ0Uo
bWVtX2FjY2Vzcy0+YWNjZXNzX3Blcm0ucGVybSkgIT0gRkZBX01FTV9BQ0NfUlcgKQ0KPj4gICAg
IHsNCj4+ICAgICAgICAgcmV0ID0gRkZBX1JFVF9OT1RfU1VQUE9SVEVEOw0KPj4gQEAgLTU2Nyw3
ICs1NzcsNyBAQCB2b2lkIGZmYV9oYW5kbGVfbWVtX3NoYXJlKHN0cnVjdCBjcHVfdXNlcl9yZWdz
ICpyZWdzKQ0KPj4gICAgICAgICBnb3RvIG91dF91bmxvY2s7DQo+PiAgICAgfQ0KPj4gICAgIHNo
bS0+c2VuZGVyX2lkID0gdHJhbnMuc2VuZGVyX2lkOw0KPj4gLSAgICBzaG0tPmVwX2lkID0gQUND
RVNTX09OQ0UobWVtX2FjY2Vzcy0+YWNjZXNzX3Blcm0uZW5kcG9pbnRfaWQpOw0KPj4gKyAgICBz
aG0tPmVwX2lkID0gZHN0X2lkOw0KPj4gDQo+PiAgICAgLyoNCj4+ICAgICAgKiBDaGVjayB0aGF0
IHRoZSBDb21wb3NpdGUgbWVtb3J5IHJlZ2lvbiBkZXNjcmlwdG9yIGZpdHMuDQo+PiAtLQ0KPj4g
Mi40Ny4wDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 08:03:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 08:03:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824990.1239175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3soG-0000fg-Cs; Thu, 24 Oct 2024 08:03:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824990.1239175; Thu, 24 Oct 2024 08:03: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 1t3soG-0000fZ-A8; Thu, 24 Oct 2024 08:03:08 +0000
Received: by outflank-mailman (input) for mailman id 824990;
 Thu, 24 Oct 2024 08:03: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=Y0ej=RU=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t3soE-0000fT-Rv
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 08:03:06 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20606.outbound.protection.outlook.com
 [2a01:111:f403:2418::606])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 64d73674-91de-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 10:03:04 +0200 (CEST)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by DM4PR12MB7621.namprd12.prod.outlook.com (2603:10b6:8:10a::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18; Thu, 24 Oct
 2024 08:03:00 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8069.027; Thu, 24 Oct 2024
 08:03: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: 64d73674-91de-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=G6bBl+RPe4g2HALkqnmUn9KH9fl5Om4pLJKC7vVKKYUOEdp0urN39eIdkAxvhij6pnpe62DF4Rpi2Lc+EGxTKbTbOxyxMVsf+ZxjzsbBLM/xXtRZUqonVz7vCqkpf3wB/mAQIbufe4bRLK4pLOAp/ZBuZC8g3Kmj9DU9q2t3YR11f/UQeH1D7nxsGvnXn2EutQCRTKbuRG5AcIKByCsyIQX47fCKz9AxSlLjb4uFQBpgTorgeea9uHtbkBsqKu3MekYamyJzSyirk0CiAUZf0h1WEBbTdutFwboAS2ek0vzssXzrt2BSIbAEUF1oAvNln4o+Tpr59uChwBPq8Mi/Nw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=37IvVf8TaXXmk8HFUT8C60fmf9SPECPq7fxHBgT1+5g=;
 b=MZ2ki5MmPRC1TeApRR9B8v8oxmhwvLagEZIdnpuAhYWojL6nDysT4zEv9YDBqIs9C8RBFA/NCPK2j2Vttz//zXDYp8NBGaOiUmXXX3n5zAKBNT2eEC2Xzb+Q8o6GQv8ifeM1rm6II7FdW0//z/yDtWnUkpfeJvK8AEYs0HMGlJVBmsbMAT/8kTVAFraudEcgxPCN1Id23ZPqT4Wt0vNqcBpXJD4GAN5cPuc1gSGy9QH0Xk5uxuSNq/MEuoYjTybiuDt2dm/eP7V3YsJhHd/2YpgWabmOIP8x4433Qgy51fpJZdkUrGdW5jK63MEZjIP6w8CIoR1dsxXg6lAkUFQefA==
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=37IvVf8TaXXmk8HFUT8C60fmf9SPECPq7fxHBgT1+5g=;
 b=KhgR3w4zvAsXBKilzUddFdDXLPYo5dw1TrQmhTmWW4qO8b7lPrjlr70IwCuhtyPlFLyC2yWIup11LCMQKtFIE2dlxiRK2ReYyYfXu5y5LvXolBnH2EbdwpEkfpGuPLm9hq1AvCMRcEkxKE/6aN5ofXq7ozXRHiFG4JIvfmui/pQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <6dad812c-b1dc-49e4-aa08-aac5647ca37d@amd.com>
Date: Thu, 24 Oct 2024 09:02:54 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Julien Grall <julien@xen.org>, Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
 <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
 <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
 <251fb5a2-a8d7-451b-9714-5cc984645354@xen.org>
 <acd45c52-7675-4dee-b8f8-46429cadf9ac@xen.org>
 <d70dae8e-5197-48db-859b-a3cae67e4ca7@xen.org>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <d70dae8e-5197-48db-859b-a3cae67e4ca7@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: PA7P264CA0283.FRAP264.PROD.OUTLOOK.COM
 (2603:10a6:102:373::7) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|DM4PR12MB7621:EE_
X-MS-Office365-Filtering-Correlation-Id: 2f9a7f39-3e94-4837-a9be-08dcf4024736
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?UE1DalQ2a3NxRWRPS3BkUTdkK1E5UVN0WFdvTkw1WDBIb25WbTE3N3RLNjNU?=
 =?utf-8?B?TFRLQWFDUmlzSXprN0w2c0NBWGRpMG1QbDlHSG9MaWFLYkpkTmhBSlZOakp6?=
 =?utf-8?B?SmlVWkFYdjlVR2V4N3E3VjhqcTcrelhUc2p4VSt0OUdlcHJ4eEJLbkplZlJT?=
 =?utf-8?B?WEUwdDlNb1VtNHJ6SDNMTHVJNDBKYzRFUXJTcUNiUkpRZlZLSGQ3N044bVk2?=
 =?utf-8?B?aXpsOFZXUzJtRXZMRHM4dTlXK3J0NVB5c0gzSUpFRTJJRVVtVTJ4TS91aEtq?=
 =?utf-8?B?YllmUEpSeStyK0hxMzEzY1lHZ295MnJRQnVhVDNLVGtXTzRTR0pHL2Vtalgw?=
 =?utf-8?B?TE5kaTlvNlRkdmNyMFNON3NrNkwwOGpISlIwaHhPbGtqbUZiS2FCdVAxQVgx?=
 =?utf-8?B?QzcyMzZHZmg3UEZBN2NtUTg5clNoT2FoejdPY1JhY0ZHV29pMEoxeXdzdUl6?=
 =?utf-8?B?cUkyQk4wK0JETnhuVEJSRWFjVlY4VWprUnlxaW9xMXEzR3N0V2lUeXd4akRJ?=
 =?utf-8?B?bndzTjRTZzBDbG1BSEhHRUlINUNIbXhuWjdUK3NWWDl4eXB2U2RDdVlXanpF?=
 =?utf-8?B?M1Y2YUtscXZzbGc3RVVFM0hHYXZ0L3dOcWZYRjZHV2lsbGNmbjQrWStHTFJM?=
 =?utf-8?B?ak12QXdCenJQRC9yUnl2RlNtc2JsMUxBMWQzZnRIWjlrbEZITHVoYTNRRzdY?=
 =?utf-8?B?Q0xzakptb042cXYxeXM4QXVXdFRrS1RyYnVOV2pGVVhRRUsyNXM1YW5obHUx?=
 =?utf-8?B?d25RamVSSXBVeTBQRnRqOHYrWXdraWJRbzUraWJ4dnJibG0yWVY5Z2tFNzQ0?=
 =?utf-8?B?b2pnODQrRnVFelpEUkx6TXdxMTZFanBpZGlXWVB6MG44Q3NZODYwME5haGEw?=
 =?utf-8?B?WkN0blZWMjljTS9tNjAvMllUREZxaklvaWhIQVpnNmtERW4xQjdobkNmaTZv?=
 =?utf-8?B?S3NCU3d1NU5oRHlHOFd1NGVQcm9hWi9NdFRuV2JiRWdqaXJWVzdpUng3L2Ri?=
 =?utf-8?B?dm1KMmVoZ3NSS1plNHpVSXQvY0NqZnJVb0pyWlN0WVRMc1E4MEQzc2NCWXc0?=
 =?utf-8?B?L3ZvbXJPeUtxQzNrcjNjQktHT0lwdGVjdUZyNktremZPMld0bUVvSFhMWmVG?=
 =?utf-8?B?Rm4yOEhlMm9CSnlETUQzUGdJaDdWWVA3RnNjem1OQWdLZUhXbXVXRGJ3V3ZI?=
 =?utf-8?B?V0tvaDhOdlM3SE9DRUhCeWo4WUh3eW5VMzYyMW92VVdTWXpETzRESzN2ZFc3?=
 =?utf-8?B?QkFRVE05MHRsN2VibzJrNjIyQzg3M3EySE9VMzhSQ3B3T0pCdGQxZlorQ0tE?=
 =?utf-8?B?Y2ROb01CbHpBTXEyaktEUTRSVDhOMWUzUHA0bnEzZCtUVnNXUm5GUWhYRm1o?=
 =?utf-8?B?R25wcEU5VDB6N2h2L0dYSlFQWmkzTXB2UENlVkNCU2x6cXU3WSs1WnVsaTlu?=
 =?utf-8?B?U1FtNFZIc256Z2VRTS84Tk83N3FuNmhGMWVxM29Hd1hlaDlJTlR3ZjRiYU1L?=
 =?utf-8?B?WFVaRjdITEZhcmJqZ2lUVVBZMDZUT3QyTTdhYUZqM21GZ1dqcDRZSUZwUUVP?=
 =?utf-8?B?a3ZvVHIra0krRXNNMUlEWTVFRjRYSCtaN1FPbW5JenhYd2ZuNHdJUjVrRGpY?=
 =?utf-8?B?TWhGZ0MrSWVaQy9hc0pQdk54TWE2UVBnWXpHeHFiUzZ2MWFCKzJVWU1hWWlE?=
 =?utf-8?Q?oDNVUhsqLyVsxKeZFtJI?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?Mkl0b1RET2w2eE5NQVRGNjFPcEphRUpLRFBZclBxcXFiL3FsWkVVWWFHL3BZ?=
 =?utf-8?B?ZnZJSFBDQVplbFlXNUw5Zk5VYS9SNm5FU2lyMG1zOFJnb0hYWjA5alIwa1lC?=
 =?utf-8?B?eG9Wak5OazJlZjdTVDBVdHVVRkdWM1VWVHlsRU9TTkFwUzNxYkYrNEllWG5K?=
 =?utf-8?B?UHh3dHBha1hzNUJibGFmQTJlWHZUZm9qUDQxaXNEQ3hUZ1VGNG9idjl6M1ZV?=
 =?utf-8?B?VVNWd0VZaW1acWIwZ2V4TG1CVXNDSnhEUDBJd0JWcW5xZGg4N2I1Rmg4eTJO?=
 =?utf-8?B?NGlLY2dSamlDMFZOYTdjZkxFZm1JRzFjOGswQ0xYMmI0U0tKY1J5bzBNNUZq?=
 =?utf-8?B?dnNMaWJQWDkvTmttdmtpakJDaE16RU5UMzFZbUUvSmUxVFpNVGFqOHo3a2w1?=
 =?utf-8?B?cVFBZElZeGZxT0JHMmw5ejI0eXpxV3JtelU5TWhXSXByWTFmRWI4UEc3S0w3?=
 =?utf-8?B?NzY5akdndVd0MHFUSkZ6aTc3QWpUSXd3S1ZTK0NmTEJ0dnFjSWh3aVY0cFJD?=
 =?utf-8?B?ZXgrMGpEdHV2OWpIMWNLWS96c0NCbnRTU2FxancwUHhuWW1Ud1JkL2ZqQXlB?=
 =?utf-8?B?WW03UG5KaUo5bXl1djM4cTFxQ1E5a1l5UnVQNzNnc0VKb1l6QlR6ZXFFRW5R?=
 =?utf-8?B?aXdoZ05GZzVCR1NOY1VndzRqeWtrbDFxL2NIQTlLbGJSbEUzVTREeS8wWmh4?=
 =?utf-8?B?TTV0YlA3d0gvTzVsTlZ2WjlUK29YOE9QQnNYRHMrMHd0WWQzZHlRdGtWN2Ew?=
 =?utf-8?B?WHRkUm1FTURiR3g5TkUvRHJWNU9QWENXeXR3WDVZU3l5ck50ak0vME05UW1F?=
 =?utf-8?B?ajNTcjh6VEwyMlNUdmRxVmZReHZNc3BKUW01YWpyVTRFaWttVWJYZHBKVkxp?=
 =?utf-8?B?eU9ISjhyTHdpUTlpRHFucG9rNTlZZXpKMXVlVUVqVzBobk5KSWdaRW85N0Ro?=
 =?utf-8?B?TTY3TFdJZEtiVHV0bk5PaVdoakxRcHREYnAzSnU1aGV0QVdEc2phUTJTYmtX?=
 =?utf-8?B?WU5NR3cyTlorVGk5cVlKY2dtNnZjUWRic3ZvMWliNzZUWk1hdXNRNXUxWmpZ?=
 =?utf-8?B?NldMaVpacnUyYTNKK2U4NlVPTVRhcnMyOEpTbWF3bnhOMzF5eVEvYjYwMGlB?=
 =?utf-8?B?WWxhaDFmUnRFdWtKSWZvVFFtR1NoR0svL1N3eVN3K1g5RWtPVzRYM29oY2pH?=
 =?utf-8?B?UlloRmxnWUZ3UVNTMEErV0xXaHRBNko2MXRaeGZGTy82SFhteENOMktGYWxj?=
 =?utf-8?B?SkhWckV5RzM2R0szeWtGRm5nU2dDWVF5Q0RvT2dFNHROOTl3QkhyRXRxaExR?=
 =?utf-8?B?R240dDdJOFBpWTJqWVhxdWtzOVFXaWpxOUovZGZtbUtuQ0llc25RSFJIeGpO?=
 =?utf-8?B?Y2t0eHBCVk45alFGQUI1RzA1aGd4cit5Y1RwenpIb0Z0Q0tPT2huR1V2K1Nw?=
 =?utf-8?B?V1JyWjBlTjBEM0x4V0d3Rnd0eVRJMzBRUkN4VjRyODlPSHpXdS9FN0VGQzM2?=
 =?utf-8?B?K1BrSlJKcU1RNE1FejZYQURtY29tQWszVUp1SEZGdElCY1RiOGc0Vk94bUZo?=
 =?utf-8?B?UEZlMTMwSzB4L2RrTndrL0ovLzNyNC9wRUsySDBENXgrV0ExQWJINVhsSU9s?=
 =?utf-8?B?Vk9nYVZTOXlsSFZudmgwdVQ0ams4ZG56aVdhSFd6VkRiNTZsVDZ3elMrNmRl?=
 =?utf-8?B?NStiUVRUdzBzM2dlcmtrVXROQmN1WWpvSTZGb04yU0xqK0gyQkwxeXAwWkdX?=
 =?utf-8?B?V2ZXYXpIbGRTeXZaTmZGdStLU203aVV3amtWd2NPdVY1R21ORks2R0tDQ2sv?=
 =?utf-8?B?QWNaa1BYdFpFSFhwZGVVTEt1N3ZRZ2ZYdzhnOWEwM1huSmVidHRNTWkrRkJV?=
 =?utf-8?B?bitGNUVhbEExN3phTmh3S0V0MndjMXNKT0R5WTRETWhZNnBtQjEwUHNxNWdW?=
 =?utf-8?B?Yk9PTEhmTzFlcm5yWWRvLzNkMGZLRkhIb1lhSnVGSEdIS3NOOFhzaVdKdEhL?=
 =?utf-8?B?Zk5jQkhPdlVYVWlUOWN4bkNNU2NMSWZxNXA1bmNvZVA4b2FxdEN4U0hhMkd0?=
 =?utf-8?B?bWFBN05iZWZ1d1htRjcyRytYM0VodERNVGlVb2hRdStUd1VaVzVURURyR2hl?=
 =?utf-8?Q?LE9GvdUaUOsgKMVMhcmDstIou?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2f9a7f39-3e94-4837-a9be-08dcf4024736
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 08:03:00.3229
 (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: q5RDWrDddKdIUwrfs/MkV/n4aGjVw/cgSjwd/YcMrbSc+Xc61MvyV6HUJF+rP1+7IXxqK3z8KV1QHUt+40HjAg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7621

Hi Julien,

On 23/10/2024 17:30, Julien Grall wrote:
>
>
> On 23/10/2024 17:18, Julien Grall wrote:
>>
>>
>> On 23/10/2024 17:13, Julien Grall wrote:
>>>
>>>
>>> On 23/10/2024 17:06, Ayan Kumar Halder wrote:
>>>> Hi Luca/Julien,
>>>>
>>>> On 22/10/2024 17:31, Luca Fancellu wrote:
>>>>> Hi Julien,
>>>>>
>>>>>> On 22 Oct 2024, at 14:13, Julien Grall <julien@xen.org> wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> On 22/10/2024 10:56, Luca Fancellu wrote:
>>>>>>>> On 22 Oct 2024, at 10:47, Julien Grall <julien@xen.org> wrote:
>>>>>>>>
>>>>>>>> Hi Luca,
>>>>>>>>
>>>>>>>> On 22/10/2024 10:41, Luca Fancellu wrote:
>>>>>>>>>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
>>>>>>>>> 2) dsb+isb barrier after enabling the MPU, since we are 
>>>>>>>>> enabling the MPU but also because we are disabling the 
>>>>>>>>> background region
>>>>>>>> TBH, I don't understand this one. Why would disabling the 
>>>>>>>> background region requires a dsb + isb? Do you have any pointer 
>>>>>>>> in the Armv8-R specification?
>>>>>>> I’m afraid this is only my deduction, Section C1.4 of the Arm® 
>>>>>>> Architecture Reference Manual Supplement Armv8, for R-profile 
>>>>>>> AArch64 architecture,
>>>>>>> (DDI 0600B.a) explains what is the background region, it says it 
>>>>>>> implements physical address range(s), so when we disable it, we 
>>>>>>> would like any data
>>>>>>> access to complete before changing this implementation defined 
>>>>>>> range with the ranges defined by us tweaking PRBAR/PRLAR, am I 
>>>>>>> right?
>>>>>> My mental model for the ordering is similar to a TLB flush which is:
>>>>>>    1/ dsb nsh
>>>>>>    2/ tlbi
>>>>>>    3/ dsb nsh
>>>>>>    4/ isb
>>>>>>
>>>>>> Enabling the MPU is effectively 2. AFAIK, 1 is only necessary to 
>>>>>> ensure the update to the page-tables. But it is not a requirement 
>>>>>> to ensure any data access are completed (otherwise, we would have 
>>>>>> needed a dsb sy because we don't know how far the access are 
>>>>>> going...).
>>>>> Uhm… I’m not sure we are on the same page, probably I explained 
>>>>> that wrongly, so my point is that:
>>>>>
>>>>> FUNC_LOCAL(enable_mpu)
>>>>>      mrs   x0, SCTLR_EL2
>>>>>      bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background 
>>>>> region */
>>>>>      orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>>>>      orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>>>>      orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>>>>      dsb   sy
>>>>>      ^— This data barrier is needed in order to complete any data 
>>>>> access, which guarantees that all explicit memory accesses before
>>>>>             this instruction complete, so we can safely turn ON 
>>>>> the MPU and disable the background region.
>>>
>>> I think
>>
>> Sorry I fat fingered and pressed send too early. I think this is the 
>> part I disagree with. All explicit accesses don't need to be complete 
>> (in the sense observed by everyone in the system). They only need to 
>> have gone through the permissions check.
>
> I think I managed to find again the wording that would justify why a 
> "dsb" is not necessary for the permission checks. From ARM DDI 0487K.a 
> D23-7349:
>
> ```
> Direct writes using the instructions in Table D22-2 require 
> synchronization before software can rely on the effects
> of changes to the System registers to affect instructions appearing in 
> program order after the direct write to the
> System register. Direct writes to these registers are not allowed to 
> affect any instructions appearing in program order
> before the direct write.
> ```
>
> I understand the paragraph as enabling the MPU via SCTLR_EL2 will not 
> affect any instruction before hand.

Yes, I agree.

However, as the line states

"Direct writes using the instructions in Table D22-2 require 
synchronization before software can rely on the effects"

This means synchronization is required after the write to SCTLR_EL2.

However, this synchronization seems to imply dsb sy + isb.

FromARM DDI 0487K.a ID032224 B2-274

"A DSB instruction ordered after a direct write to a System PMU register 
does not complete until all observers observe the direct write"

So, a write to SCTLR_EL2 needs to be followed by a dsb to ensure the 
write is observed on all the processors (as SCTLR_EL2 and PMU registers 
belong to Table D22-2, so the behavior should be same).

And then it needs to be followed by an ISB to ensure any instruction 
fetch observes that MPU is enabled.

So the code needs to be

FUNC_LOCAL(enable_mpu)
     mrs   x0, SCTLR_EL2
     bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
     orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
     orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
     orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
     msr   SCTLR_EL2, x0
     dsb   sy			      /* ensure the writes to SCTLR_EL2 are observed on all the processors */
     isb                               /* any instruction fetch observes that MPU is enabled. So force flush the pre-existing instruction pipeline */

     ret
END(enable_mpu)

This will be similar to what Zephyr  does 
https://github.com/zephyrproject-rtos/zephyr/blob/a30270668d4b90bac932794ef75df12a2b6f6f78/arch/arm/core/mpu/arm_mpu.c#L258 
.

Let me know if you are ok with the rationale.

Also, I would prefer to have 3 orr instructions instead of one for the 
sake of readability. However, this is not a strong preference so if you 
feel otherwise, I can change to have a single orr instruction.

- Ayan



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 08:03:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 08:03:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.824991.1239186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3soO-0000w7-Jr; Thu, 24 Oct 2024 08:03:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 824991.1239186; Thu, 24 Oct 2024 08:03: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 1t3soO-0000w0-HF; Thu, 24 Oct 2024 08:03:16 +0000
Received: by outflank-mailman (input) for mailman id 824991;
 Thu, 24 Oct 2024 08:03: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=wGbj=RU=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t3soN-0000fT-Kh
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 08:03:15 +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 6a61f3b3-91de-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 10:03:13 +0200 (CEST)
Received: from mail-ot1-f70.google.com (mail-ot1-f70.google.com
 [209.85.210.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-634-0KzXQyXYM_2yhyO5s1F4dA-1; Thu, 24 Oct 2024 04:03:10 -0400
Received: by mail-ot1-f70.google.com with SMTP id
 46e09a7af769-7181c09565eso625949a34.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 01:03:10 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 6a1803df08f44-6ce0099a79fsm47100376d6.90.2024.10.24.01.03.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 01:03:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a61f3b3-91de-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729756992;
	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=OTycrCncHkEXGfL2p1SBTSSa5aZhWjbXFaDOrvd1RvI=;
	b=Je2GElwfatJtiCt1Yh9Kjl3x5jqEbZnjQ99SKFrlc+wrE7W4cJd6iE7Yut4hhJFLiBJycK
	9jARZ0xmuI4C9y4C4R3BvTQiTAkYI93/DN/Ppnz8NZll9y5jijsRpfvNe7adLlhYVmUYUd
	dOQDHXf2rSC1H7QRrY2Jcke/ncfReiI=
X-MC-Unique: 0KzXQyXYM_2yhyO5s1F4dA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729756989; x=1730361789;
        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=eCHAxEtiIjB9/eMXdwm4L84xFlQFaCf3ZNV6cwdqU9g=;
        b=ki79BlwNLM5S1uiKF39qvDERvbPkMerFJHCheOI98k4xXRx95GI01jd+bFz4DxRKgR
         08LxR6C6aLWjm3NbsePVioWh2e6V1VX8SmsWgT0nrIXEZdYZ3aPTxKND4Z4v3gGYwBZS
         RFvs9NkNZkKBxVWEzccP17UFnrdbu/RY+e/rV7ZD/m3VgOR3Dt37mzC91mL+gijTmFK5
         ZQYc8I2DN/PWOSr01m/0OoW1kHVBR0r903DpyKwmHkg7QgJXHGtjSZsE4cR6jsI7rrpm
         7JYPuPz3wxObwVCmAXzoKp9w/RJJYBLbAhBWoPUXxl+KwQ9cd1h6mDcFWNDeZ1JbYLhg
         csVw==
X-Forwarded-Encrypted: i=1; AJvYcCXjBnAAsH7GUfkyznqdDkqjHGjNE6HobYEB3YOK/KOH1KAN8/JeL/ZbUAeX5Nv3s7VfT3WjK7ogPCE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxu7Md7eq4tPds8EeyNZ7bATSdUzs3/gcS4E48lUx/n8m7rvE33
	tXNEG8hjqmyFaadCYHfl9m5aWzVioLQ2nxz1iyxXxrF3OjEzjOSz/PQQXQizs6W9sqqRAyM4K97
	dIaAMshZ2csFavphc6dZ9cNmITcKxQsLOYqId+QeLzzMJUKFr3DJurUos2hwTF1K5
X-Received: by 2002:a05:6830:6dc7:b0:718:c0d:6bdb with SMTP id 46e09a7af769-718598599b9mr736333a34.20.1729756989520;
        Thu, 24 Oct 2024 01:03:09 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHVwKg5C+Tp+G04yjB73N1UyaDqsdgqmmyDICp7Nqm80mYC6tnNIzWvedx2PALg7dJ9abA7Jw==
X-Received: by 2002:a05:6830:6dc7:b0:718:c0d:6bdb with SMTP id 46e09a7af769-718598599b9mr736305a34.20.1729756989132;
        Thu, 24 Oct 2024 01:03:09 -0700 (PDT)
Message-ID: <aec23bb79b9ff7dd7f13eb67460e0605eac22912.camel@redhat.com>
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of
 pcim_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>, Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu
 <yi.l.liu@intel.com>,  Christian Brauner <brauner@kernel.org>, Ankit
 Agrawal <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>, Reinette
 Chatre <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Thu, 24 Oct 2024 10:02:59 +0200
In-Reply-To: <87ttd2276j.wl-tiwai@suse.de>
References: <20241015185124.64726-1-pstanner@redhat.com>
	 <20241015185124.64726-3-pstanner@redhat.com> <87v7xk2ps5.wl-tiwai@suse.de>
	 <6f3db65fe9a5dcd1a7a8d9bd5352ecb248ef57b1.camel@redhat.com>
	 <87ttd2276j.wl-tiwai@suse.de>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Wed, 2024-10-23 at 17:03 +0200, Takashi Iwai wrote:
> On Wed, 23 Oct 2024 15:50:09 +0200,
> Philipp Stanner wrote:
> >=20
> > On Tue, 2024-10-22 at 16:08 +0200, Takashi Iwai wrote:
> > > On Tue, 15 Oct 2024 20:51:12 +0200,
> > > Philipp Stanner wrote:
> > > >=20
> > > > pci_intx() is a hybrid function which can sometimes be managed
> > > > through
> > > > devres. To remove this hybrid nature from pci_intx(), it is
> > > > necessary to
> > > > port users to either an always-managed or a never-managed
> > > > version.
> > > >=20
> > > > hda_intel enables its PCI-Device with pcim_enable_device().
> > > > Thus,
> > > > it needs
> > > > the always-managed version.
> > > >=20
> > > > Replace pci_intx() with pcim_intx().
> > > >=20
> > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > ---
> > > > =C2=A0sound/pci/hda/hda_intel.c | 2 +-
> > > > =C2=A01 file changed, 1 insertion(+), 1 deletion(-)
> > > >=20
> > > > diff --git a/sound/pci/hda/hda_intel.c
> > > > b/sound/pci/hda/hda_intel.c
> > > > index b4540c5cd2a6..b44ca7b6e54f 100644
> > > > --- a/sound/pci/hda/hda_intel.c
> > > > +++ b/sound/pci/hda/hda_intel.c
> > > > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx
> > > > *chip,
> > > > int do_disconnect)
> > > > =C2=A0=09}
> > > > =C2=A0=09bus->irq =3D chip->pci->irq;
> > > > =C2=A0=09chip->card->sync_irq =3D bus->irq;
> > > > -=09pci_intx(chip->pci, !chip->msi);
> > > > +=09pcim_intx(chip->pci, !chip->msi);
> > > > =C2=A0=09return 0;
> > > > =C2=A0}
> > > > =C2=A0
> > >=20
> > > Hm, it's OK-ish to do this as it's practically same as what
> > > pci_intx()
> > > currently does.=C2=A0 But, the current code can be a bit inconsistent
> > > about
> > > the original intx value.=C2=A0 pcim_intx() always stores !enable to
> > > res->orig_intx unconditionally, and it means that the orig_intx
> > > value
> > > gets overridden at each time pcim_intx() gets called.
> >=20
> > Yes.
> >=20
> > >=20
> > > Meanwhile, HD-audio driver does release and re-acquire the
> > > interrupt
> > > after disabling MSI when something goes wrong, and pci_intx()
> > > call
> > > above is a part of that procedure.=C2=A0 So, it can rewrite the
> > > res->orig_intx to another value by retry without MSI.=C2=A0 And after
> > > the
> > > driver removal, it'll lead to another state.
> >=20
> > I'm not sure that I understand this paragraph completely. Still,
> > could
> > a solution for the driver on the long-term just be to use
> > pci_intx()?
>=20
> pci_intx() misses the restore of the original value, so it's no
> long-term solution, either.

Sure that is missing =E2=80=93 I was basically asking whether the driver co=
uld
live without that feature.

Consider that point obsolete, see below

>=20
> What I meant is that pcim_intx() blindly assumes the negative of the
> passed argument as the original state, which isn't always true.=C2=A0 e.g=
.
> when the driver calls it twice with different values, a wrong value
> may be remembered.

Ah, I see =E2=80=93 thoguh the issue is when it's called several times with=
 the
*same* value, isn't it?

E.g.

pcim_intx(pdev, 1); // 0 is remembered as the old value
pcim_intx(pdev, 1); // 0 is falsely remembered as the old value

Also, it would seem that calling the function for the first time like
that:

pcim_intx(pdev, 0); // old value: 1

is at least incorrect, because INTx should be 0 per default, shouldn't
it? Could then even be a 1st class bug, because INTx would end up being
enabled despite having been disabled all the time.

>=20
> That said, I thought of something like below.

At first glance that looks like a good idea to me, thanks for working
this out!

IMO you can submit that as a patch so we can discuss it separately.

Greetings,
Philipp

>=20
>=20
> thanks,
>=20
> Takashi
>=20
> -- 8< --
> --- a/drivers/pci/devres.c
> +++ b/drivers/pci/devres.c
> @@ -438,8 +438,17 @@ static void pcim_intx_restore(struct device
> *dev, void *data)
> =C2=A0=09__pcim_intx(pdev, res->orig_intx);
> =C2=A0}
> =C2=A0
> -static struct pcim_intx_devres *get_or_create_intx_devres(struct
> device *dev)
> +static void save_orig_intx(struct pci_dev *pdev)
> =C2=A0{
> +=09u16 pci_command;
> +
> +=09pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> +=09res->orig_intx =3D !(pci_command & PCI_COMMAND_INTX_DISABLE);
> +}
> +
> +static struct pcim_intx_devres *get_or_create_intx_devres(struct
> pci_dev *pdev)
> +{
> +=09struct device *dev =3D &pdev->dev;
> =C2=A0=09struct pcim_intx_devres *res;
> =C2=A0
> =C2=A0=09res =3D devres_find(dev, pcim_intx_restore, NULL, NULL);
> @@ -447,8 +456,10 @@ static struct pcim_intx_devres
> *get_or_create_intx_devres(struct device *dev)
> =C2=A0=09=09return res;
> =C2=A0
> =C2=A0=09res =3D devres_alloc(pcim_intx_restore, sizeof(*res),
> GFP_KERNEL);
> -=09if (res)
> +=09if (res) {
> +=09=09save_orig_intx(pdev);
> =C2=A0=09=09devres_add(dev, res);
> +=09}
> =C2=A0
> =C2=A0=09return res;
> =C2=A0}
> @@ -467,11 +478,10 @@ int pcim_intx(struct pci_dev *pdev, int enable)
> =C2=A0{
> =C2=A0=09struct pcim_intx_devres *res;
> =C2=A0
> -=09res =3D get_or_create_intx_devres(&pdev->dev);
> +=09res =3D get_or_create_intx_devres(pdev);
> =C2=A0=09if (!res)
> =C2=A0=09=09return -ENOMEM;
> =C2=A0
> -=09res->orig_intx =3D !enable;
> =C2=A0=09__pcim_intx(pdev, enable);
> =C2=A0
> =C2=A0=09return 0;
>=20



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 08:15:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 08:15:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825006.1239196 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3t09-00032O-MR; Thu, 24 Oct 2024 08:15:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825006.1239196; Thu, 24 Oct 2024 08:15: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 1t3t09-00032G-JF; Thu, 24 Oct 2024 08:15:25 +0000
Received: by outflank-mailman (input) for mailman id 825006;
 Thu, 24 Oct 2024 08:15: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3t08-00032A-7F
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 08:15:24 +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 1d1d8b87-91e0-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 10:15:22 +0200 (CEST)
Received: by mail-oo1-xc2c.google.com with SMTP id
 006d021491bc7-5ebc349204cso289252eaf.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 01:15:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d1d8b87-91e0-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729757721; x=1730362521; 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=8FETjNQYbPtBe1EMw66LkSIIgOJbcbsRpBpacljB0Lk=;
        b=jucLyNIZX7wEmg8FtDZn9K77B5BEwYwWopFyQX/ebQMIV+Oao2lsiKmk6S2YdYpiQ1
         vJEv3dTfIh+Yd7KaEsxZSD5uEosFhpeo0VKRJYe6MErOsvoRBaibeIwaroJu4QmPycXA
         QlFJHEBkB8LL20BO1AB++koyoMkwWXIBlJ043TW/jfG4q9jSKAjp75h7GYE/mpCmyIFm
         m73LgDblumjTzxk7RQr1+sTCr1+KngOHGK0+2EOqLqros+pQxhNDXiFksoj41xeoLdZI
         EQIzUIt/A9D3zm6sT1nRy2cnhLkvP1zZYf3d5T00lYb8RfQW6qI+5xbiqYpUuAVPfIBA
         vPGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729757721; x=1730362521;
        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=8FETjNQYbPtBe1EMw66LkSIIgOJbcbsRpBpacljB0Lk=;
        b=fwhpQ/vyL58qNLWYyvvwV5lKEZtgywl6/OCLnAFt9Qc+ZdiHf0p4fn+hON1Ma22VSu
         5WmjjmYflJtcZDubGywoXwQ6Dy/lf0eP9T3Zg7gqNALb9qsOQ7Xlaqs/77oQhlqKsDAj
         Z8wuf+xSwZhabj3uioBLjBp1KkUY3Za9ylcJNxKF92s9hx6p4f0PPF7vLFA483H1B95P
         iOSwOev0l9zK/A46Txpw4vwHivwIA3qk3h04hPQAb+zRV5GrA8GQBo7Yl7pn0YEkEitO
         jjXpABTWo9oFVVt/HkMnDEe24lo3rDaZ4i731fqf4Omzidhn+dNDhjtHhq+fNI27Rz9m
         j/qA==
X-Gm-Message-State: AOJu0YwKAsW+UDURYqux7gyAmeMeGfwyNc9Xck7Y9G/edHVIstb6MJpx
	O4GQAbEV90KjOmsSrZJGOIp2cRiQ7oOopVEvtgsaG3GcRzaAsnQTcci2KkzB+EwvyaACVGmBT7o
	597smwr4QKUHIKY5OVMPcbWndqBUQpcDOsHj+IA==
X-Google-Smtp-Source: AGHT+IFvSmcfYQE2QdutftT6jOlMMYjIHsSljiJ3wW8Po/MqPAwikEsiiH7AmRZHL4eGbTIQUsW4uOZhavCrlfwcvsA=
X-Received: by 2002:a05:6870:702b:b0:287:af33:9686 with SMTP id
 586e51a60fabf-28ccb83e597mr5207405fac.28.1729757721172; Thu, 24 Oct 2024
 01:15:21 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <84a39fbb681c1fdc2708d385e79bef1bbc9c6ae0.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44F1ZDuVQkHTEmHC-x+u4kuLqphcjaK5c7wDnnenWuQi1Q@mail.gmail.com>
In-Reply-To: <CAHUa44F1ZDuVQkHTEmHC-x+u4kuLqphcjaK5c7wDnnenWuQi1Q@mail.gmail.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 10:15:09 +0200
Message-ID: <CAHUa44EtL_hLqCD15jcvMEUxxt-289yXDaMDEs=h7EXUQxj8og@mail.gmail.com>
Subject: Re: [PATCH v2 04/10] xen/arm: ffa: Fine granular call support
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 23, 2024 at 11:58=E2=80=AFAM Jens Wiklander
<jens.wiklander@linaro.org> wrote:
>
> Hi Bertrand,
>
> On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
> <bertrand.marquis@arm.com> wrote:
> >
> > Create a bitmap to store which feature is supported or not by the
> > firmware and use it to filter which calls are done to the firmware.
> >
> > While there reoder ABI definition by numbers to easily find the min and
> > max ones.
> >
> > Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> > ---
> > Changes in v2:
> > - rename fw_feat to abi and macros to FFA_ABI to be coherent with the
> >   abi needed change done before
> > - rework the macros to be simpler by directly defining MIN and MAX usin=
g
> >   only Function ids
> > - check that requested function ids do not go over the bitmap size in
> >   ffa_fw_supports_fid
> > - add an ASSERT to make sure that we do not try to set bits outside of
> >   the bitmap
> > - turn off FF-A if there is not firmware support and adapt the commit
> >   message to reflect this
> > - add a compile time check that FFA_ABI_MIN < FFA_ABI_MAX
> > - remove spurious line removal
> > - restore proper cleanup of rxtx init in case of error
> > - reorder ABI by numbers
> > ---
> >  xen/arch/arm/tee/ffa.c          | 28 +++++++++++++++---------
> >  xen/arch/arm/tee/ffa_notif.c    |  7 ++++++
> >  xen/arch/arm/tee/ffa_partinfo.c | 30 +++++++++++++++++++++++++-
> >  xen/arch/arm/tee/ffa_private.h  | 38 ++++++++++++++++++++++++++++-----
> >  xen/arch/arm/tee/ffa_rxtx.c     |  4 ++++
> >  xen/arch/arm/tee/ffa_shm.c      | 12 +++++++++++
> >  6 files changed, 103 insertions(+), 16 deletions(-)
>
> Looks good.
> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

I'm sorry, I'm having second thoughts about this patch. I have two concerns=
:
1. Xen will complain at boot with XENLOG_INFO if an ABI function
listed in ffa_fw_abi_needed is missing. With the current list of ABI
functions that's somewhat OK since it was a cause of disabling FF-A
support before. But as the list grows it may become annoying or even
confusing since when Xen supports more features it may complain more
even if there is no regression compared to previous versions. If we
need to print anything perhaps XENLOG_DEBUG is better.
2. FFA_FEATURES may return success for features not supported by the
SPMC. How about only returning success for features in the
ffa_fw_abi_needed bitmap?

Cheers,
Jens

>
> Cheers,
> Jens
>
> >
> > diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> > index 1ee6b2895e92..267d4435ac08 100644
> > --- a/xen/arch/arm/tee/ffa.c
> > +++ b/xen/arch/arm/tee/ffa.c
> > @@ -72,7 +72,10 @@
> >  #include "ffa_private.h"
> >
> >  /* Negotiated FF-A version to use with the SPMC, 0 if not there or sup=
ported */
> > -static uint32_t __ro_after_init ffa_fw_version;
> > +uint32_t __ro_after_init ffa_fw_version;
> > +
> > +/* Features supported by the SPMC or secure world when present */
> > +DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
> >
> >  struct ffa_fw_abi {
> >      const uint32_t id;
> > @@ -177,6 +180,13 @@ static void handle_msg_send_direct_req(struct cpu_=
user_regs *regs, uint32_t fid)
> >      else
> >          mask =3D GENMASK_ULL(31, 0);
> >
> > +    if ( !ffa_fw_supports_fid(fid) )
> > +    {
> > +        resp.a0 =3D FFA_ERROR;
> > +        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> > +        goto out;
> > +    }
> > +
> >      src_dst =3D get_user_reg(regs, 1);
> >      if ( (src_dst >> 16) !=3D ffa_get_vm_id(d) )
> >      {
> > @@ -577,19 +587,16 @@ static bool ffa_probe(void)
> >      else
> >          ffa_fw_version =3D vers;
> >
> > -    /*
> > -     * At the moment domains must support the same features used by Xe=
n.
> > -     * TODO: Rework the code to allow domain to use a subset of the
> > -     * features supported.
> > -     */
> >      for ( unsigned int i =3D 0; i < ARRAY_SIZE(ffa_fw_abi_needed); i++=
 )
> >      {
> > -        if ( !ffa_abi_supported(ffa_fw_abi_needed[i].id) )
> > -        {
> > +        ASSERT(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id) < FFA_ABI_BITMA=
P_SIZE);
> > +
> > +        if ( ffa_abi_supported(ffa_fw_abi_needed[i].id) )
> > +            set_bit(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id),
> > +                    ffa_fw_abi_supported);
> > +        else
> >              printk(XENLOG_INFO "ARM FF-A Firmware does not support %s\=
n",
> >                     ffa_fw_abi_needed[i].name);
> > -            goto err_no_fw;
> > -        }
> >      }
> >
> >      if ( !ffa_rxtx_init() )
> > @@ -611,6 +618,7 @@ err_rxtx_destroy:
> >      ffa_rxtx_destroy();
> >  err_no_fw:
> >      ffa_fw_version =3D 0;
> > +    bitmap_zero(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
> >      printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
> >
> >      return false;
> > diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif.=
c
> > index 541e61d2f606..4b3e46318f4b 100644
> > --- a/xen/arch/arm/tee/ffa_notif.c
> > +++ b/xen/arch/arm/tee/ffa_notif.c
> > @@ -377,6 +377,13 @@ void ffa_notif_init(void)
> >      unsigned int irq;
> >      int ret;
> >
> > +    /* Only enable fw notification if all ABIs we need are supported *=
/
> > +    if ( !(ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
> > +           ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_DESTROY) &&
> > +           ffa_fw_supports_fid(FFA_NOTIFICATION_GET) &&
> > +           ffa_fw_supports_fid(FFA_NOTIFICATION_INFO_GET_64)) )
> > +        return;
> > +
> >      arm_smccc_1_2_smc(&arg, &resp);
> >      if ( resp.a0 !=3D FFA_SUCCESS_32 )
> >          return;
> > diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_par=
tinfo.c
> > index 93a03c6bc672..99c48f0e5c05 100644
> > --- a/xen/arch/arm/tee/ffa_partinfo.c
> > +++ b/xen/arch/arm/tee/ffa_partinfo.c
> > @@ -77,7 +77,15 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, u=
int32_t w2, uint32_t w3,
> >       */
> >      if ( w5 =3D=3D FFA_PARTITION_INFO_GET_COUNT_FLAG &&
> >           ctx->guest_vers =3D=3D FFA_VERSION_1_1 )
> > -        return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi_s=
ize);
> > +    {
> > +        if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
> > +            return ffa_partition_info_get(w1, w2, w3, w4, w5, count, f=
pi_size);
> > +        else
> > +        {
> > +            *count =3D 0;
> > +            return FFA_RET_OK;
> > +        }
> > +    }
> >      if ( w5 )
> >          return FFA_RET_INVALID_PARAMETERS;
> >
> > @@ -87,6 +95,18 @@ int32_t ffa_handle_partition_info_get(uint32_t w1, u=
int32_t w2, uint32_t w3,
> >      if ( !spin_trylock(&ctx->rx_lock) )
> >          return FFA_RET_BUSY;
> >
> > +    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
> > +    {
> > +        if ( ctx->guest_vers =3D=3D FFA_VERSION_1_0 )
> > +            *fpi_size =3D sizeof(struct ffa_partition_info_1_0);
> > +        else
> > +            *fpi_size =3D sizeof(struct ffa_partition_info_1_1);
> > +
> > +        *count =3D 0;
> > +        ret =3D FFA_RET_OK;
> > +        goto out;
> > +    }
> > +
> >      if ( !ctx->page_count || !ctx->rx_is_free )
> >          goto out;
> >      spin_lock(&ffa_rx_buffer_lock);
> > @@ -250,6 +270,11 @@ bool ffa_partinfo_init(void)
> >      uint32_t count;
> >      int e;
> >
> > +    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) ||
> > +         !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) ||
> > +         !ffa_rx || !ffa_tx )
> > +        return false;
> > +
> >      e =3D ffa_partition_info_get(0, 0, 0, 0, 0, &count, &fpi_size);
> >      if ( e )
> >      {
> > @@ -313,6 +338,9 @@ int ffa_partinfo_domain_init(struct domain *d)
> >      unsigned int n;
> >      int32_t res;
> >
> > +    if ( !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) )
> > +        return 0;
> > +
> >      ctx->vm_destroy_bitmap =3D xzalloc_array(unsigned long, count);
> >      if ( !ctx->vm_destroy_bitmap )
> >          return -ENOMEM;
> > diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_priv=
ate.h
> > index 045d9c4a0b56..85eb61c13464 100644
> > --- a/xen/arch/arm/tee/ffa_private.h
> > +++ b/xen/arch/arm/tee/ffa_private.h
> > @@ -14,6 +14,7 @@
> >  #include <xen/spinlock.h>
> >  #include <xen/sched.h>
> >  #include <xen/time.h>
> > +#include <xen/bitmap.h>
> >
> >  /* Error codes */
> >  #define FFA_RET_OK                      0
> > @@ -201,18 +202,17 @@
> >  #define FFA_INTERRUPT                   0x84000062U
> >  #define FFA_VERSION                     0x84000063U
> >  #define FFA_FEATURES                    0x84000064U
> > -#define FFA_RX_ACQUIRE                  0x84000084U
> >  #define FFA_RX_RELEASE                  0x84000065U
> >  #define FFA_RXTX_MAP_32                 0x84000066U
> >  #define FFA_RXTX_MAP_64                 0xC4000066U
> >  #define FFA_RXTX_UNMAP                  0x84000067U
> >  #define FFA_PARTITION_INFO_GET          0x84000068U
> >  #define FFA_ID_GET                      0x84000069U
> > -#define FFA_SPM_ID_GET                  0x84000085U
> > +#define FFA_MSG_POLL                    0x8400006AU
> >  #define FFA_MSG_WAIT                    0x8400006BU
> >  #define FFA_MSG_YIELD                   0x8400006CU
> >  #define FFA_RUN                         0x8400006DU
> > -#define FFA_MSG_SEND2                   0x84000086U
> > +#define FFA_MSG_SEND                    0x8400006EU
> >  #define FFA_MSG_SEND_DIRECT_REQ_32      0x8400006FU
> >  #define FFA_MSG_SEND_DIRECT_REQ_64      0xC400006FU
> >  #define FFA_MSG_SEND_DIRECT_RESP_32     0x84000070U
> > @@ -230,8 +230,6 @@
> >  #define FFA_MEM_RECLAIM                 0x84000077U
> >  #define FFA_MEM_FRAG_RX                 0x8400007AU
> >  #define FFA_MEM_FRAG_TX                 0x8400007BU
> > -#define FFA_MSG_SEND                    0x8400006EU
> > -#define FFA_MSG_POLL                    0x8400006AU
> >  #define FFA_NOTIFICATION_BITMAP_CREATE  0x8400007DU
> >  #define FFA_NOTIFICATION_BITMAP_DESTROY 0x8400007EU
> >  #define FFA_NOTIFICATION_BIND           0x8400007FU
> > @@ -240,6 +238,25 @@
> >  #define FFA_NOTIFICATION_GET            0x84000082U
> >  #define FFA_NOTIFICATION_INFO_GET_32    0x84000083U
> >  #define FFA_NOTIFICATION_INFO_GET_64    0xC4000083U
> > +#define FFA_RX_ACQUIRE                  0x84000084U
> > +#define FFA_SPM_ID_GET                  0x84000085U
> > +#define FFA_MSG_SEND2                   0x84000086U
> > +
> > +/**
> > + * Encoding of features supported or not by the fw in a bitmap:
> > + * - Function IDs are going from 0x60 to 0xFF
> > + * - A function can be supported in 32 and/or 64bit
> > + * The bitmap has one bit for each function in 32 and 64 bit.
> > + */
> > +#define FFA_ABI_ID(id)        ((id) & ARM_SMCCC_FUNC_MASK)
> > +#define FFA_ABI_CONV(id)      (((id) >> ARM_SMCCC_CONV_SHIFT) & BIT(0,=
U))
> > +
> > +#define FFA_ABI_MIN           FFA_ABI_ID(FFA_ERROR)
> > +#define FFA_ABI_MAX           FFA_ABI_ID(FFA_MSG_SEND2)
> > +
> > +#define FFA_ABI_BITMAP_SIZE   (2 * (FFA_ABI_MAX - FFA_ABI_MIN + 1))
> > +#define FFA_ABI_BITNUM(id)    ((FFA_ABI_ID(id) - FFA_ABI_MIN) << 1 | \
> > +                               FFA_ABI_CONV(id))
> >
> >  struct ffa_ctx_notif {
> >      bool enabled;
> > @@ -289,6 +306,8 @@ extern void *ffa_rx;
> >  extern void *ffa_tx;
> >  extern spinlock_t ffa_rx_buffer_lock;
> >  extern spinlock_t ffa_tx_buffer_lock;
> > +extern uint32_t __ro_after_init ffa_fw_version;
> > +extern DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
> >
> >  bool ffa_shm_domain_destroy(struct domain *d);
> >  void ffa_handle_mem_share(struct cpu_user_regs *regs);
> > @@ -401,4 +420,13 @@ static inline int32_t ffa_rx_release(void)
> >      return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
> >  }
> >
> > +static inline bool ffa_fw_supports_fid(uint32_t fid)
> > +{
> > +    BUILD_BUG_ON(FFA_ABI_MIN > FFA_ABI_MAX);
> > +
> > +    if ( FFA_ABI_BITNUM(fid) > FFA_ABI_BITMAP_SIZE)
> > +        return false;
> > +    return test_bit(FFA_ABI_BITNUM(fid), ffa_fw_abi_supported);
> > +}
> > +
> >  #endif /*__FFA_PRIVATE_H__*/
> > diff --git a/xen/arch/arm/tee/ffa_rxtx.c b/xen/arch/arm/tee/ffa_rxtx.c
> > index 661764052e67..b6931c855779 100644
> > --- a/xen/arch/arm/tee/ffa_rxtx.c
> > +++ b/xen/arch/arm/tee/ffa_rxtx.c
> > @@ -193,6 +193,10 @@ bool ffa_rxtx_init(void)
> >  {
> >      int e;
> >
> > +    /* Firmware not there or not supporting */
> > +    if ( !ffa_fw_supports_fid(FFA_RXTX_MAP_64) )
> > +        return false;
> > +
> >      ffa_rx =3D alloc_xenheap_pages(get_order_from_pages(FFA_RXTX_PAGE_=
COUNT), 0);
> >      if ( !ffa_rx )
> >          return false;
> > diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
> > index 370d83ec5cf8..efa5b67db8e1 100644
> > --- a/xen/arch/arm/tee/ffa_shm.c
> > +++ b/xen/arch/arm/tee/ffa_shm.c
> > @@ -149,6 +149,9 @@ static int32_t ffa_mem_share(uint32_t tot_len, uint=
32_t frag_len,
> >  static int32_t ffa_mem_reclaim(uint32_t handle_lo, uint32_t handle_hi,
> >                                 uint32_t flags)
> >  {
> > +    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
> > +        return FFA_RET_NOT_SUPPORTED;
> > +
> >      return ffa_simple_call(FFA_MEM_RECLAIM, handle_lo, handle_hi, flag=
s, 0);
> >  }
> >
> > @@ -467,6 +470,12 @@ void ffa_handle_mem_share(struct cpu_user_regs *re=
gs)
> >      uint32_t range_count;
> >      uint32_t region_offs;
> >
> > +    if ( !ffa_fw_supports_fid(FFA_MEM_SHARE_64) )
> > +    {
> > +        ret =3D FFA_RET_NOT_SUPPORTED;
> > +        goto out_set_ret;
> > +    }
> > +
> >      /*
> >       * We're only accepting memory transaction descriptors via the rx/=
tx
> >       * buffer.
> > @@ -621,6 +630,9 @@ int ffa_handle_mem_reclaim(uint64_t handle, uint32_=
t flags)
> >      register_t handle_lo;
> >      int ret;
> >
> > +    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
> > +        return FFA_RET_NOT_SUPPORTED;
> > +
> >      spin_lock(&ctx->lock);
> >      shm =3D find_shm_mem(ctx, handle);
> >      if ( shm )
> > --
> > 2.47.0
> >


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 08:35:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 08:35:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825017.1239206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3tIr-00063V-6R; Thu, 24 Oct 2024 08:34:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825017.1239206; Thu, 24 Oct 2024 08:34: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 1t3tIr-00063O-3e; Thu, 24 Oct 2024 08:34:45 +0000
Received: by outflank-mailman (input) for mailman id 825017;
 Thu, 24 Oct 2024 08:34: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=O3x2=RU=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t3tIp-00063I-Ih
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 08:34:43 +0000
Received: from EUR03-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur03on20611.outbound.protection.outlook.com
 [2a01:111:f403:260c::611])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cfae707c-91e2-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 10:34:40 +0200 (CEST)
Received: from DU2PR04CA0039.eurprd04.prod.outlook.com (2603:10a6:10:234::14)
 by DBBPR08MB10841.eurprd08.prod.outlook.com (2603:10a6:10:533::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18; Thu, 24 Oct
 2024 08:34:35 +0000
Received: from DU6PEPF0000A7E0.eurprd02.prod.outlook.com
 (2603:10a6:10:234:cafe::31) by DU2PR04CA0039.outlook.office365.com
 (2603:10a6:10:234::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend
 Transport; Thu, 24 Oct 2024 08:34:35 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU6PEPF0000A7E0.mail.protection.outlook.com (10.167.8.39) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14 via
 Frontend Transport; Thu, 24 Oct 2024 08:34:34 +0000
Received: ("Tessian outbound cd6aa7fa963a:v473");
 Thu, 24 Oct 2024 08:34:33 +0000
Received: from L19b5ae54414d.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 C3F18274-C588-4FF6-AE40-69FEFB2CDD35.1; 
 Thu, 24 Oct 2024 08:34:23 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L19b5ae54414d.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 24 Oct 2024 08:34:23 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by AM0PR08MB5459.eurprd08.prod.outlook.com (2603:10a6:208:186::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Thu, 24 Oct
 2024 08:34:20 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.014; Thu, 24 Oct 2024
 08: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>
X-Inumbo-ID: cfae707c-91e2-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=MdRI7bzbNI/5V7jarYF1YrGIGW6DRA7GaqKg0L9XJ46DMknVcgz7TaaDDYUqDF3b+NxMWPUfrhCSIMYyVzkm6JtdKgweT6nqgOHWelcZCP0rheiXaJAzTiXJ1CJWGu93tQKVd7oB37Zx3oBGj7w6xx8JkH2vobP4cxiE573xmwmjKkEx/WQaQxMFO4TkOEIkI+mJcAhLBBjpHZhHX/iVI+0W9aqCXiALdkIet9t9fEDzn23Pe98fWpP0j1CprQPKuGi2GpUArUTrpMC2rTCAD33/ONEMPoFtTkC7fURpMF2+MtrbBfLpLEWM0Gdm0mVCUAqYWn0AHiHAIyvFnfbgxg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=kKGalIxB4zMKgUIqNKlSfKXHEHEYooS/pk7SbzcmLM0=;
 b=G1aYGK6F5lzBvdIuAWHvfMQ7Wp13GkD3mG5/BTuq1e21cU3/gloAgWEOuc/pyTgxYE99XgSOjk5OC/Ub7YjLJNunETnbLtOPpj0dzWvJh9LWNlkyV4ZB0t8vFTtThPOqnma7n/Ub91P+86mJVuPRqMbQKvWjmR+sgw4h6uP7641oUZhT7JC76fQz0/mHt7i/9+PctGyvlr+866tssHEUgbNIbE5Qtas59ua65AR+pUxeqWYxRpEW4O6ji9J3WTfeSpspwlGoi/zuSzf36I/PpFSnmIs3mwt/+UFoJdWvc4H44ajJhzzgrQcsLPU0BoZQV3moB/u7LLe7AvZ/6LmqlA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kKGalIxB4zMKgUIqNKlSfKXHEHEYooS/pk7SbzcmLM0=;
 b=KAVRZG4hWYgQXsPCaWsImi6cvq1/obO5IySKqaWFwLxKmv/fvecpCxD2IWBf5tse2qYzxFE1SWU31+YPQUQNm4ino/3rRyGWjbWXKf0kumyCjT/FvGiUSGuYC+XaXzbbzMQyMfRlHi9k5Cx3YcapSlT//mUE2tBvAmPyHBWeG4U=
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=arm.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: d2118c7788d7996d
X-TessianGatewayMetadata: JryMY8c4J3WEGLRldBdjEEahESs5uVxG1W0UqQ98CXVEtfrLnDi/epN32JQhu0WfMepnC3+W5psU+4XMBZi93Wo/sdKcEl0NVFZD7J4GO5vJ8AmigtIsytOBS2qtiwzrkg9TZM9KMsoULxF8h+2WAOSfZpPosm5tzqGm1gTUPUQ=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ppwPGVpVqvTkNqxoEsyvUekL/EtF1Lhm3E6658TDV0MV8fw48fnLiJttnhT0+v3Buw/6E3zCZXWIaqMy3N8+a6u+XYmOVQLDc/HDxbHNcBnZk7xUYyP1bMwUGsfVd8FNICHoeCiLgxHDcAD83Wl0LVp/v0py1OrwtfGd5Cdb3LG3CNmcRyvL4RkU2j2e5YcXNkUmwMeZIofHjC2EhthYmh6ZYkRG4iIjrID5jzeVkVbueXH/ceDE2p8uT5cYjYR2C9m+WPwzqGtvqXFtwb1uMs4Hbj5vFcslJYKJE68SAPcX9H8kYqgyTpc7nW+C8JrLa73ABgDb5q1EZVPLmVbO2w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=kKGalIxB4zMKgUIqNKlSfKXHEHEYooS/pk7SbzcmLM0=;
 b=KisBmlBZxyJUxiE1p+RWgaAAW3umwW58eg65/++8PAjxveZcTgzb3X/rtHRCgy3TmSWwuAsotYKVjuB68dUy1mGrsOGDjWSVOaXhDcIVk/c8JitDvqVqC055a5YBOP5G5mbe1+QzHQw0QyfFwDD26M1aD8n5kEuV9fzhHi2glqrsHsnVevdoaraAw31FJx/1SpuK7Y+NzdxrVzoAh2gCnp9c+BWVmPmewywMvyn8JO+krA80NjUdzS1FoZoF4Njq8J+dVVsYvBzVP8ZCsnNc4mKHJhi9WIGr3HuWPDoI8r2sISdbzbtT/GtyOENQ5Rr6exR67/a1t79PXc62Hna1aw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kKGalIxB4zMKgUIqNKlSfKXHEHEYooS/pk7SbzcmLM0=;
 b=KAVRZG4hWYgQXsPCaWsImi6cvq1/obO5IySKqaWFwLxKmv/fvecpCxD2IWBf5tse2qYzxFE1SWU31+YPQUQNm4ino/3rRyGWjbWXKf0kumyCjT/FvGiUSGuYC+XaXzbbzMQyMfRlHi9k5Cx3YcapSlT//mUE2tBvAmPyHBWeG4U=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayankuma@amd.com>
CC: Julien Grall <julien@xen.org>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, "xen-devel@lists.xenproject.org"
	<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>
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Topic: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Thread-Index:
 AQHbGx2Ge9N55hTx/U2iD9lYiTVQprKNIysAgARC6gCAAA8agIAAAOKAgAEgqoCAAAHOgIAAAmiAgAA3SQCAADcxAIABi38AgAAB0oCAAAFRAIAAA2QAgAEElgCAAAi6AA==
Date: Thu, 24 Oct 2024 08:34:20 +0000
Message-ID: <616EC2B4-3281-4C24-A0AB-BD850C56F4DB@arm.com>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
 <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
 <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
 <251fb5a2-a8d7-451b-9714-5cc984645354@xen.org>
 <acd45c52-7675-4dee-b8f8-46429cadf9ac@xen.org>
 <d70dae8e-5197-48db-859b-a3cae67e4ca7@xen.org>
 <6dad812c-b1dc-49e4-aa08-aac5647ca37d@amd.com>
In-Reply-To: <6dad812c-b1dc-49e4-aa08-aac5647ca37d@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|AM0PR08MB5459:EE_|DU6PEPF0000A7E0:EE_|DBBPR08MB10841:EE_
X-MS-Office365-Filtering-Correlation-Id: 80cc577c-eda0-4617-d3df-08dcf406b023
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?YWpBeUk1UTA0RTI4SkJWa0ZBdjVGOW45Qmh6S3JGVXlnelRFdGlrdXppZFlo?=
 =?utf-8?B?RWRheEpidzM3V1o4Ly9BUllZVENINnV4eTVVelRTYVFCWHkrbnRHMkFPQzAr?=
 =?utf-8?B?V3N4NWFCd0VjTmh2R01ZTGh2QmxwYXc0dUdoNkk2Y0xZL3ZwK0lsajB4NlZU?=
 =?utf-8?B?dldOR2tSWHE2U1JvY3JIT2JFK1BZWEdCTmRZVUE1YmxZL2pJZ0VZV1hMNy9Q?=
 =?utf-8?B?RkhDendsNFJMdGh5aytRYjlJS01ZaFd6eE8zb20zM1RGem1ieGdZWGxRc0pD?=
 =?utf-8?B?Rmw1azF3QTIvaDV1VzhDeDR6bE13SzNLSkt3VTgvUEdEMWlWUXMxRFI1a1pN?=
 =?utf-8?B?ZUZ0Ny9Ybm9EKzhlK1YzTXRvbWJid0pVT1pUZ2pNS2tCNldib1JVNVJ4NzBl?=
 =?utf-8?B?UVd6Q2VuRG5UK2NpTFVsclBpSi9peFBqRHpadVRCbnRKVi9BbFVHZkY5M01y?=
 =?utf-8?B?VSs5N3VicXJaeDZyWEtwcDNYcU9vanI4RXQ2NzNmR3lyVWh3RHlwTVJvaHZk?=
 =?utf-8?B?eFU0b0JoVzhBUU5tS3BnaS9YQnNBSHJQbTJOSW9yRVVMb2x5WFRXRUFBTkxW?=
 =?utf-8?B?bGJXYU1tS0ZtRFZsa0g3V1R0MTFsZUZhMVRsVEpaSWJsN0w5RU0wWUxmOHVI?=
 =?utf-8?B?UW5Wcnk5UTREZ1hxSEF3SlVxcWpYejk1dHZqbUFtUjJEMmdSSU9GdmhYblgv?=
 =?utf-8?B?SlQ0b3pES3JsdUZJeWtQditrNzhMWUVvb3lFeno4SjVjVzBvNit1MnB1NUxj?=
 =?utf-8?B?cWNJdjFxd3dBMUk2NDJ2WjJDNFM0R1d1T3l6Uzk5aDQzS3ZRMlJSYWppMUJT?=
 =?utf-8?B?dks1RWtQTjVmbm9nWERhTzBGWUdoTUxOdXRDalArcUJZSW5TcitvRWZncnp4?=
 =?utf-8?B?bmhhRGhORWRtR3JjazA5S0xYMzh2L0d3T09EZHp1R0tDQWx2eHNZd1RKOVVW?=
 =?utf-8?B?bktiZzN6QzdieGZMNFE4QVBDRFpqREZXWkU4THUyVE42K1JjL0Z6NGdZOGpF?=
 =?utf-8?B?WGR4RFREUEJvV0w0emR3SVYrNGVrV2pkN01vZDNUWmxHTUVYTHlCcDI1Y1lT?=
 =?utf-8?B?NDdlNFhYUzhMKzJmbTQ5UEowemxSRnUyc0thS2IzQVVLb29EL3RqOFJWbjI4?=
 =?utf-8?B?ZERpUzdkT1ZYZzJ6cUFqMTBXUDV5eGZMQzB0dXdZbGJja29vdmNCd3lDNUVl?=
 =?utf-8?B?akdDLzhMbmhmbVhuR1VoVU11SjIvRE9vNFdZR201MCsvbTVOQWg4c0h6clJW?=
 =?utf-8?B?RDhoazQyQzEvK0ZZaTQyVXRZVjFyQjc2WUtmM3B1Q21yYlk3Rk44SHllbE5v?=
 =?utf-8?B?MHFvbUVvUlZZeVhnbDJub2xLVlZGUHVZbkRtUE84ZHNjOXZnbVUwei9DZGMw?=
 =?utf-8?B?WllGcFNDZDBzSEZLVG9PTzN0QzFlUU5GZG5UbGgzYmpVZXhNN2hGQTJkVm1N?=
 =?utf-8?B?VW5CVGxlaHlFSHJYOXJ5ZUUvSUJXV0dzQTI2Q3VIQlBTR0hJdFY2NlhhRGVV?=
 =?utf-8?B?Q2FoZi95UlZ1V2J3TnpHR1o3TGxOUUhya2JWMVEwc3prUGJCdGs5Y0MwQWNn?=
 =?utf-8?B?UEVhRzIzb1dmbXByQU5XZXNybnJ5Ni9hL3M2Y3RGNWtNSlF2V0F0bmt0NU5Z?=
 =?utf-8?B?SnI3YWlVdW9XNUU5cmFmQzkycWF5b0t5V1BaRWp3WHJVZXZNZGN6L21FckQ3?=
 =?utf-8?B?S25kRkJxa3E3elpnMWkrU0p0TC9vdjU0TTVtbnZ6dGsySkpDZEVqWmhmTDVj?=
 =?utf-8?B?NTc1REdMSndQamFsQUtSb3VkN2NWbkFnbFZzMC9UUU8yclI4bzZRcUowRXR4?=
 =?utf-8?Q?ABOjJe76PWmBGAEer089ns8XGmbdPZDZrmXSE=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <8350231E8DF66441AB26A403FF788D95@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5459
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7E0.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	7f79b3af-b2d3-4680-4932-08dcf406a7cc
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZW9IMVlsMFFuYVVMeDd4dEE4RnNiQU8xd0lRRnNqYW8ybHZRaTJTaUl3Y1lY?=
 =?utf-8?B?MlczRmpsTFNyMTl3TkpEb2JacjlkVUIxWjVzd3paUkF5TWU4bEF3eWxCNVlZ?=
 =?utf-8?B?NlVmcTAwcENIZ1ZueTJPWUFncEYvempmejJQc0Z2SFhYbUhMYWJyL1Y1cEE2?=
 =?utf-8?B?bzBNMDBxN21DRlBONVJxMVBqczMwanJRcU9XRXhBUGZ3V05Rb29PZm9jTWpW?=
 =?utf-8?B?V1dnenByck9wTVJ1T3JscTZEQVVSN0VSUVloZ2NpcStFZFlobERleTg0aXNR?=
 =?utf-8?B?cjF4cVJYZy9UUVBFeitqMU5mUXJqck1jYkZrZFh6dWI5V2hZcW9ZWDFTRHpV?=
 =?utf-8?B?SVNQNWYyb3BqZTFQbWZTbHU2NndCNGdRNGxOSWxSVHkzQm1va2I5SHFCenJN?=
 =?utf-8?B?VnZBTVJsdldROTJuUGZUaVZkN3VJdzErTERxcndUaytlZkd1VnI3a2E0Mkh4?=
 =?utf-8?B?bERjOW5vZS9lQkdFcXhlMk1XQkRyNUd4elNYQkgrTHhWbFhSMnI2Wmh2WE5D?=
 =?utf-8?B?azNlVGRxK0R6TFJpZDM4cDZyTFN4Um9pWlBSRk10dGh1eEJhUk8zSnArK0J5?=
 =?utf-8?B?ZWF0L2lYNVRjZHlsNzl4a3F4TmZmTFJvUGg3SGFmdkUyVzNNODZxV0UyNG9q?=
 =?utf-8?B?NFZYTm9GR2M3ZCtsZjVIMTAwVUx1SUhCWHJSYXE2NFN1cEttWEhSNEp4bFBR?=
 =?utf-8?B?MEIvdG1EaVdsci9vemhnMDFuYkViVUw3VWlvd0E5c2VVQnBpTzE0SG1FZll4?=
 =?utf-8?B?VnFGZFlURXc5dG5zWGJ1cER2K1RiaHN3bzAzS0w3YmZBVmwrS01sNTU4QW8v?=
 =?utf-8?B?cnUwU3RJOXp2SnRxV1lRajcyZ3NYOXA4NzFNU2lMQ3BSb3h5V0R6TUVtS0hX?=
 =?utf-8?B?dmlhLzk0eWs2TWxvTEgreWtGdWN6czNqWllQN1V5cDFOSWQvc2M3bDFIdFdu?=
 =?utf-8?B?MGYxVzRQQkpGRjFmZ0dia0crR3hVS2lTOWkzOFZlSm9RT3k3bVhxRSt0TVNI?=
 =?utf-8?B?S2Urejd1bnk4YTNUbkVWUzNvVVp2ZHdiVTZvQXp3UTlYZm95RnQ4cDJLN2pW?=
 =?utf-8?B?RTlZbFQ5RGliU0FNTkEyRitNMmZKTDAwZndTUDRDRkZtVGZBZ0JwckRPS09y?=
 =?utf-8?B?WGpNZkNSbkxyTVRQMGFuVmQyVjhnUnhXZFRGTCtnQ2MyOFdNaDI1L2hITkI2?=
 =?utf-8?B?V3FNeGduaERpYkh3akRIakJwNlQxYkhzWnplSjBsK0FaTHFUVWlBTW9GaG9Q?=
 =?utf-8?B?dythZzZpeHFXUTdIcHQwN2M3cG9aMGZiZU1kcWxTQXl0aDMxM05ac2I0L3JS?=
 =?utf-8?B?RDNYRy9XRUlFaU1YaEJ1Vkc0amdVRTZQenVEYWErSW5FaUs0Rm1RREF0ZlBG?=
 =?utf-8?B?WTlkQ1J6VTV3bkNsS3Nrc3Qwd2x3aVE5am9FaVU4QnJEaVA4UjhjTFdpaDVp?=
 =?utf-8?B?MjdJR0ZLYldLOWNZUWRhd2ZQNTdRV2dlME9TM25scjZkWlFuYStXZlpWQUZh?=
 =?utf-8?B?dVBhN3A4Tlc2T1FNOTA0N0xnS3B6VWdYbnpLNGlTT2szM3lseWFHL0RuS2Ry?=
 =?utf-8?B?VnpVRzU2cGJ5Sm9SYVVyV0F6VUxpelJ4VlYwVXdERThjem54V3VKV2hxWVNh?=
 =?utf-8?B?RnozSmMrVENrNUppUzNGYnVWek9iaVZxcmcwbUVUOWJZTk9DTk9Ed1lXTGgy?=
 =?utf-8?B?aTFYeFA5dTVrMUoxbThJQkxpTmVtY05wcjVOMUV1ZUFnYWVQT21IbHlZeno1?=
 =?utf-8?B?QVJxbWFRRllKUFhScWdFV2dRWUwvOHVOM3k1MDROUHlXYXVBREoxQngyWTJB?=
 =?utf-8?B?ZVdONDFTWVllN3NFSU5MeGoyMHhSKzBmZjRYU3BnMExYaWw0aUd1bkZhQWdG?=
 =?utf-8?B?VUVFSld6dGRqZ0pvMDN6U3hZakVUSkhLL3FNbnpjUXdFTXc9PQ==?=
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:(13230040)(36860700013)(82310400026)(1800799024)(376014)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 08:34:34.1730
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 80cc577c-eda0-4617-d3df-08dcf406b023
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:
	DU6PEPF0000A7E0.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10841

SGkgQXlhbiwNCg0KPiBPbiAyNCBPY3QgMjAyNCwgYXQgMDk6MDIsIEF5YW4gS3VtYXIgSGFsZGVy
IDxheWFua3VtYUBhbWQuY29tPiB3cm90ZToNCj4gDQo+IEhpIEp1bGllbiwNCj4gDQo+IE9uIDIz
LzEwLzIwMjQgMTc6MzAsIEp1bGllbiBHcmFsbCB3cm90ZToNCj4+IA0KPj4gDQo+PiBPbiAyMy8x
MC8yMDI0IDE3OjE4LCBKdWxpZW4gR3JhbGwgd3JvdGU6DQo+Pj4gDQo+Pj4gDQo+Pj4gT24gMjMv
MTAvMjAyNCAxNzoxMywgSnVsaWVuIEdyYWxsIHdyb3RlOg0KPj4+PiANCj4+Pj4gDQo+Pj4+IE9u
IDIzLzEwLzIwMjQgMTc6MDYsIEF5YW4gS3VtYXIgSGFsZGVyIHdyb3RlOg0KPj4+Pj4gSGkgTHVj
YS9KdWxpZW4sDQo+Pj4+PiANCj4+Pj4+IE9uIDIyLzEwLzIwMjQgMTc6MzEsIEx1Y2EgRmFuY2Vs
bHUgd3JvdGU6DQo+Pj4+Pj4gSGkgSnVsaWVuLA0KPj4+Pj4+IA0KPj4+Pj4+PiBPbiAyMiBPY3Qg
MjAyNCwgYXQgMTQ6MTMsIEp1bGllbiBHcmFsbCA8anVsaWVuQHhlbi5vcmc+IHdyb3RlOg0KPj4+
Pj4+PiANCj4+Pj4+Pj4gDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBPbiAyMi8xMC8yMDI0IDEwOjU2LCBM
dWNhIEZhbmNlbGx1IHdyb3RlOg0KPj4+Pj4+Pj4+IE9uIDIyIE9jdCAyMDI0LCBhdCAxMDo0Nywg
SnVsaWVuIEdyYWxsIDxqdWxpZW5AeGVuLm9yZz4gd3JvdGU6DQo+Pj4+Pj4+Pj4gDQo+Pj4+Pj4+
Pj4gSGkgTHVjYSwNCj4+Pj4+Pj4+PiANCj4+Pj4+Pj4+PiBPbiAyMi8xMC8yMDI0IDEwOjQxLCBM
dWNhIEZhbmNlbGx1IHdyb3RlOg0KPj4+Pj4+Pj4+Pj4gT24gMjEgT2N0IDIwMjQsIGF0IDE3OjI3
LCBKdWxpZW4gR3JhbGwgPGp1bGllbkB4ZW4ub3JnPiB3cm90ZToNCj4+Pj4+Pj4+Pj4gMikgZHNi
K2lzYiBiYXJyaWVyIGFmdGVyIGVuYWJsaW5nIHRoZSBNUFUsIHNpbmNlIHdlIGFyZSBlbmFibGlu
ZyB0aGUgTVBVIGJ1dCBhbHNvIGJlY2F1c2Ugd2UgYXJlIGRpc2FibGluZyB0aGUgYmFja2dyb3Vu
ZCByZWdpb24NCj4+Pj4+Pj4+PiBUQkgsIEkgZG9uJ3QgdW5kZXJzdGFuZCB0aGlzIG9uZS4gV2h5
IHdvdWxkIGRpc2FibGluZyB0aGUgYmFja2dyb3VuZCByZWdpb24gcmVxdWlyZXMgYSBkc2IgKyBp
c2I/IERvIHlvdSBoYXZlIGFueSBwb2ludGVyIGluIHRoZSBBcm12OC1SIHNwZWNpZmljYXRpb24/
DQo+Pj4+Pj4+PiBJ4oCZbSBhZnJhaWQgdGhpcyBpcyBvbmx5IG15IGRlZHVjdGlvbiwgU2VjdGlv
biBDMS40IG9mIHRoZSBBcm3CriBBcmNoaXRlY3R1cmUgUmVmZXJlbmNlIE1hbnVhbCBTdXBwbGVt
ZW50IEFybXY4LCBmb3IgUi1wcm9maWxlIEFBcmNoNjQgYXJjaGl0ZWN0dXJlLA0KPj4+Pj4+Pj4g
KERESSAwNjAwQi5hKSBleHBsYWlucyB3aGF0IGlzIHRoZSBiYWNrZ3JvdW5kIHJlZ2lvbiwgaXQg
c2F5cyBpdCBpbXBsZW1lbnRzIHBoeXNpY2FsIGFkZHJlc3MgcmFuZ2UocyksIHNvIHdoZW4gd2Ug
ZGlzYWJsZSBpdCwgd2Ugd291bGQgbGlrZSBhbnkgZGF0YQ0KPj4+Pj4+Pj4gYWNjZXNzIHRvIGNv
bXBsZXRlIGJlZm9yZSBjaGFuZ2luZyB0aGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQgcmFuZ2Ug
d2l0aCB0aGUgcmFuZ2VzIGRlZmluZWQgYnkgdXMgdHdlYWtpbmcgUFJCQVIvUFJMQVIsIGFtIEkg
cmlnaHQ/DQo+Pj4+Pj4+IE15IG1lbnRhbCBtb2RlbCBmb3IgdGhlIG9yZGVyaW5nIGlzIHNpbWls
YXIgdG8gYSBUTEIgZmx1c2ggd2hpY2ggaXM6DQo+Pj4+Pj4+ICAgIDEvIGRzYiBuc2gNCj4+Pj4+
Pj4gICAgMi8gdGxiaQ0KPj4+Pj4+PiAgICAzLyBkc2IgbnNoDQo+Pj4+Pj4+ICAgIDQvIGlzYg0K
Pj4+Pj4+PiANCj4+Pj4+Pj4gRW5hYmxpbmcgdGhlIE1QVSBpcyBlZmZlY3RpdmVseSAyLiBBRkFJ
SywgMSBpcyBvbmx5IG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhlIHVwZGF0ZSB0byB0aGUgcGFnZS10
YWJsZXMuIEJ1dCBpdCBpcyBub3QgYSByZXF1aXJlbWVudCB0byBlbnN1cmUgYW55IGRhdGEgYWNj
ZXNzIGFyZSBjb21wbGV0ZWQgKG90aGVyd2lzZSwgd2Ugd291bGQgaGF2ZSBuZWVkZWQgYSBkc2Ig
c3kgYmVjYXVzZSB3ZSBkb24ndCBrbm93IGhvdyBmYXIgdGhlIGFjY2VzcyBhcmUgZ29pbmcuLi4p
Lg0KPj4+Pj4+IFVobeKApiBJ4oCZbSBub3Qgc3VyZSB3ZSBhcmUgb24gdGhlIHNhbWUgcGFnZSwg
cHJvYmFibHkgSSBleHBsYWluZWQgdGhhdCB3cm9uZ2x5LCBzbyBteSBwb2ludCBpcyB0aGF0Og0K
Pj4+Pj4+IA0KPj4+Pj4+IEZVTkNfTE9DQUwoZW5hYmxlX21wdSkNCj4+Pj4+PiAgICAgIG1ycyAg
IHgwLCBTQ1RMUl9FTDINCj4+Pj4+PiAgICAgIGJpYyAgIHgwLCB4MCwgI1NDVExSX0VMeF9CUiAg
ICAgICAvKiBEaXNhYmxlIEJhY2tncm91bmQgcmVnaW9uICovDQo+Pj4+Pj4gICAgICBvcnIgICB4
MCwgeDAsICNTQ1RMUl9BeHhfRUx4X00gICAgLyogRW5hYmxlIE1QVSAqLw0KPj4+Pj4+ICAgICAg
b3JyICAgeDAsIHgwLCAjU0NUTFJfQXh4X0VMeF9DICAgIC8qIEVuYWJsZSBELWNhY2hlICovDQo+
Pj4+Pj4gICAgICBvcnIgICB4MCwgeDAsICNTQ1RMUl9BeHhfRUx4X1dYTiAgLyogRW5hYmxlIFdY
TiAqLw0KPj4+Pj4+ICAgICAgZHNiICAgc3kNCj4+Pj4+PiAgICAgIF7igJQgVGhpcyBkYXRhIGJh
cnJpZXIgaXMgbmVlZGVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIGFueSBkYXRhIGFjY2Vzcywgd2hp
Y2ggZ3VhcmFudGVlcyB0aGF0IGFsbCBleHBsaWNpdCBtZW1vcnkgYWNjZXNzZXMgYmVmb3JlDQo+
Pj4+Pj4gICAgICAgICAgICAgdGhpcyBpbnN0cnVjdGlvbiBjb21wbGV0ZSwgc28gd2UgY2FuIHNh
ZmVseSB0dXJuIE9OIHRoZSBNUFUgYW5kIGRpc2FibGUgdGhlIGJhY2tncm91bmQgcmVnaW9uLg0K
Pj4+PiANCj4+Pj4gSSB0aGluaw0KPj4+IA0KPj4+IFNvcnJ5IEkgZmF0IGZpbmdlcmVkIGFuZCBw
cmVzc2VkIHNlbmQgdG9vIGVhcmx5LiBJIHRoaW5rIHRoaXMgaXMgdGhlIHBhcnQgSSBkaXNhZ3Jl
ZSB3aXRoLiBBbGwgZXhwbGljaXQgYWNjZXNzZXMgZG9uJ3QgbmVlZCB0byBiZSBjb21wbGV0ZSAo
aW4gdGhlIHNlbnNlIG9ic2VydmVkIGJ5IGV2ZXJ5b25lIGluIHRoZSBzeXN0ZW0pLiBUaGV5IG9u
bHkgbmVlZCB0byBoYXZlIGdvbmUgdGhyb3VnaCB0aGUgcGVybWlzc2lvbnMgY2hlY2suDQo+PiAN
Cj4+IEkgdGhpbmsgSSBtYW5hZ2VkIHRvIGZpbmQgYWdhaW4gdGhlIHdvcmRpbmcgdGhhdCB3b3Vs
ZCBqdXN0aWZ5IHdoeSBhICJkc2IiIGlzIG5vdCBuZWNlc3NhcnkgZm9yIHRoZSBwZXJtaXNzaW9u
IGNoZWNrcy4gRnJvbSBBUk0gRERJIDA0ODdLLmEgRDIzLTczNDk6DQo+PiANCj4+IGBgYA0KPj4g
RGlyZWN0IHdyaXRlcyB1c2luZyB0aGUgaW5zdHJ1Y3Rpb25zIGluIFRhYmxlIEQyMi0yIHJlcXVp
cmUgc3luY2hyb25pemF0aW9uIGJlZm9yZSBzb2Z0d2FyZSBjYW4gcmVseSBvbiB0aGUgZWZmZWN0
cw0KPj4gb2YgY2hhbmdlcyB0byB0aGUgU3lzdGVtIHJlZ2lzdGVycyB0byBhZmZlY3QgaW5zdHJ1
Y3Rpb25zIGFwcGVhcmluZyBpbiBwcm9ncmFtIG9yZGVyIGFmdGVyIHRoZSBkaXJlY3Qgd3JpdGUg
dG8gdGhlDQo+PiBTeXN0ZW0gcmVnaXN0ZXIuIERpcmVjdCB3cml0ZXMgdG8gdGhlc2UgcmVnaXN0
ZXJzIGFyZSBub3QgYWxsb3dlZCB0byBhZmZlY3QgYW55IGluc3RydWN0aW9ucyBhcHBlYXJpbmcg
aW4gcHJvZ3JhbSBvcmRlcg0KPj4gYmVmb3JlIHRoZSBkaXJlY3Qgd3JpdGUuDQo+PiBgYGANCj4+
IA0KPj4gSSB1bmRlcnN0YW5kIHRoZSBwYXJhZ3JhcGggYXMgZW5hYmxpbmcgdGhlIE1QVSB2aWEg
U0NUTFJfRUwyIHdpbGwgbm90IGFmZmVjdCBhbnkgaW5zdHJ1Y3Rpb24gYmVmb3JlIGhhbmQuDQo+
IA0KPiBZZXMsIEkgYWdyZWUuDQo+IA0KPiBIb3dldmVyLCBhcyB0aGUgbGluZSBzdGF0ZXMNCj4g
DQo+ICJEaXJlY3Qgd3JpdGVzIHVzaW5nIHRoZSBpbnN0cnVjdGlvbnMgaW4gVGFibGUgRDIyLTIg
cmVxdWlyZSBzeW5jaHJvbml6YXRpb24gYmVmb3JlIHNvZnR3YXJlIGNhbiByZWx5IG9uIHRoZSBl
ZmZlY3RzIg0KPiANCj4gVGhpcyBtZWFucyBzeW5jaHJvbml6YXRpb24gaXMgcmVxdWlyZWQgYWZ0
ZXIgdGhlIHdyaXRlIHRvIFNDVExSX0VMMi4NCj4gDQo+IEhvd2V2ZXIsIHRoaXMgc3luY2hyb25p
emF0aW9uIHNlZW1zIHRvIGltcGx5IGRzYiBzeSArIGlzYi4NCj4gDQo+IEZyb21BUk0gRERJIDA0
ODdLLmEgSUQwMzIyMjQgQjItMjc0DQo+IA0KPiAiQSBEU0IgaW5zdHJ1Y3Rpb24gb3JkZXJlZCBh
ZnRlciBhIGRpcmVjdCB3cml0ZSB0byBhIFN5c3RlbSBQTVUgcmVnaXN0ZXIgZG9lcyBub3QgY29t
cGxldGUgdW50aWwgYWxsIG9ic2VydmVycyBvYnNlcnZlIHRoZSBkaXJlY3Qgd3JpdGUiDQoNCkkg
dGhpbmsgdGhpcyBpcyByZWxhdGVkIG9ubHkgdG8gdGhlIFN5c3RlbSBQTVUgcmVnaXN0ZXIsIG5v
dCB0byB0aGUgcmVnaXN0ZXJzIGluIHRhYmxlIEQyMi0yICh3aGljaCBTQ1RMUl9FTHggYXJlIHBh
cnQpDQoNCkFueXdheSB3ZSBjb3VsZCBkaXNjdXNzIHRoaXMgaW4gcGVyc29uIGF0IHRoZSBYZW4g
bWVldC11cCBhbmQgd3JpdGUgYSBzdW1tYXJ5IGluIHRoZSB0aHJlYWQgbGF0ZXIuDQoNCkNoZWVy
cywNCkx1Y2ENCg0K


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 08:50:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 08:50:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825024.1239215 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3tYK-0000bK-Cv; Thu, 24 Oct 2024 08:50:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825024.1239215; Thu, 24 Oct 2024 08:50: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 1t3tYK-0000bD-AS; Thu, 24 Oct 2024 08:50:44 +0000
Received: by outflank-mailman (input) for mailman id 825024;
 Thu, 24 Oct 2024 08:50: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3tYI-0000b5-WC
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 08:50:43 +0000
Received: from mail-ot1-x333.google.com (mail-ot1-x333.google.com
 [2607:f8b0:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0b8e5a25-91e5-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 10:50:40 +0200 (CEST)
Received: by mail-ot1-x333.google.com with SMTP id
 46e09a7af769-7181eb9ad46so401868a34.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 01:50:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b8e5a25-91e5-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729759839; x=1730364639; 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=CgmH6EiWua9oEqrpdsm7WLZY3Ofnp+yCU+rsbTq1OqI=;
        b=buUHVaHI9uN6sfYG1nWZzijwCPCNjEAIPaeREctg4z3QmthoyzOJjdN8Uz0BTU2YTk
         HoPxOIZbzuKrm2PiAXHjhN/5rm3w/fjiO9SPxuyAz9Ntf3awDf8hGrfqfGyxrLIvpH8a
         MGZTGtn/tm8X29j/BZPdIAbs1ov3pnPxVGjuf7kHI25ex70EwU3XTNX/FO99Csb01oS0
         eISnWP6GHsZHmg3GQHRD+NFZ5Pm5YN6JDV9gEan56yB4KHbI6PpzQjjEu7UXv8pIRxck
         eI2LI5sSZRIFcZX3SilPIecQc5cX3V3NMrT6hT1oI/G486+yWP2B5JX8T/n5f6gyQD/R
         bctg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729759839; x=1730364639;
        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=CgmH6EiWua9oEqrpdsm7WLZY3Ofnp+yCU+rsbTq1OqI=;
        b=dtGQerXRFYeOcs3KdrwkJV2+4qfYgnj+Sv9mldtANq6rjnPNne1pSVmzJ7RwP1y3Xg
         Q/4GeDRb1uBLuCwlBtIphviok+16YXd0diUPHShWRD1PtHrx2iXvH/cJNJr4SG98U7M4
         rfJNroPD3kKVbCFB7DelxEMcVSVHA8p+S5k3eimE5loZEn46wk/N6nKP9yW6PSujM8Ar
         X6R2uy6F44v333mRVafcdXn/dyHOaMMRo0zVmz8L0djP/tN7pn6DxMAiIBge/cslenEw
         Zcky1/EQoV7wfjuh+fQEmm5cfxWINxd1yZ9sDE/HXR18VIHxPXe58jaKMAHEaxtCaCAZ
         hhoA==
X-Gm-Message-State: AOJu0YzYjcgTn6MkkYCKrCgWY1tfGySyMPMF35j5NSImS0GvJ+trvb+K
	OgDRnJ6f+PVeOlV3XjFNq+8cgbMpfT211nFsi0psEGtD0QjmkC/BfBBrg73bsfXysTJql8sF9/y
	iGHjbW/pbSNScY0a2yTwP6Zr1BdRNgIZ4qZOs8w==
X-Google-Smtp-Source: AGHT+IHTWtgC5XjPdmPJWLLGEBpAgHp8F8asWqaXLSh+0BQnzTEDaYNBLvOROvnD3ZwtLW8WUG86hbprKENrG0j9raY=
X-Received: by 2002:a05:6870:1688:b0:287:8706:ae3 with SMTP id
 586e51a60fabf-28ced26c6admr1193030fac.11.1729759839310; Thu, 24 Oct 2024
 01:50:39 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com> <9464941b06e82763ebe79e3f2adb4ca2497cf298.1729066788.git.bertrand.marquis@arm.com>
In-Reply-To: <9464941b06e82763ebe79e3f2adb4ca2497cf298.1729066788.git.bertrand.marquis@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 10:50:27 +0200
Message-ID: <CAHUa44H+EipP-F_12tWidOxfFPf-jVcSs4XjLjBv5t05-Kw59g@mail.gmail.com>
Subject: Re: [PATCH v2 10/10] xen/arm: ffa: Add indirect message support
To: Bertrand Marquis <bertrand.marquis@arm.com>
Cc: xen-devel@lists.xenproject.org, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
<bertrand.marquis@arm.com> wrote:
>
> Add support for FFA_MSG_SEND2 to send indirect messages from a VM to a
> secure partition.
>
> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> ---
> Changes in v2:
> - rebase
> ---
>  xen/arch/arm/tee/ffa.c         |  5 ++++
>  xen/arch/arm/tee/ffa_msg.c     | 49 ++++++++++++++++++++++++++++++++++
>  xen/arch/arm/tee/ffa_private.h |  1 +
>  3 files changed, 55 insertions(+)
>
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 3a9525aa4598..21d41b452dc9 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -101,6 +101,7 @@ static const struct ffa_fw_abi ffa_fw_abi_needed[] =
=3D {
>      FW_ABI(FFA_MEM_RECLAIM),
>      FW_ABI(FFA_MSG_SEND_DIRECT_REQ_32),
>      FW_ABI(FFA_MSG_SEND_DIRECT_REQ_64),
> +    FW_ABI(FFA_MSG_SEND2),
>  };
>
>  /*
> @@ -195,6 +196,7 @@ static void handle_features(struct cpu_user_regs *reg=
s)
>      case FFA_PARTITION_INFO_GET:
>      case FFA_MSG_SEND_DIRECT_REQ_32:
>      case FFA_MSG_SEND_DIRECT_REQ_64:
> +    case FFA_MSG_SEND2:
>          ffa_set_regs_success(regs, 0, 0);
>          break;
>      case FFA_MEM_SHARE_64:
> @@ -275,6 +277,9 @@ static bool ffa_handle_call(struct cpu_user_regs *reg=
s)
>      case FFA_MSG_SEND_DIRECT_REQ_64:
>          ffa_handle_msg_send_direct_req(regs, fid);
>          return true;
> +    case FFA_MSG_SEND2:
> +        e =3D ffa_handle_msg_send2(regs);
> +        break;
>      case FFA_MEM_SHARE_32:
>      case FFA_MEM_SHARE_64:
>          ffa_handle_mem_share(regs);
> diff --git a/xen/arch/arm/tee/ffa_msg.c b/xen/arch/arm/tee/ffa_msg.c
> index ae263e54890e..335f246ba657 100644
> --- a/xen/arch/arm/tee/ffa_msg.c
> +++ b/xen/arch/arm/tee/ffa_msg.c
> @@ -12,6 +12,15 @@
>
>  #include "ffa_private.h"
>
> +/* Encoding of partition message in RX/TX buffer */
> +struct ffa_part_msg_rxtx {
> +    uint32_t flags;
> +    uint32_t reserved;
> +    uint32_t msg_offset;
> +    uint32_t send_recv_id;
> +    uint32_t msg_size;
> +};
> +
>  void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t=
 fid)
>  {
>      struct arm_smccc_1_2_regs arg =3D { .a0 =3D fid, };
> @@ -78,3 +87,43 @@ out:
>                   resp.a4 & mask, resp.a5 & mask, resp.a6 & mask,
>                   resp.a7 & mask);
>  }
> +
> +int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs)
> +{
> +    struct domain *src_d =3D current->domain;
> +    struct ffa_ctx *src_ctx =3D src_d->arch.tee;
> +    const struct ffa_part_msg_rxtx *src_msg;
> +    uint16_t dst_id, src_id;
> +    int32_t ret;
> +
> +    if ( !ffa_fw_supports_fid(FFA_MSG_SEND2) )
> +        return FFA_RET_NOT_SUPPORTED;
> +
> +    if ( !spin_trylock(&src_ctx->tx_lock) )
> +        return FFA_RET_BUSY;
> +
> +    src_msg =3D src_ctx->tx;
> +    src_id =3D src_msg->send_recv_id >> 16;
> +    dst_id =3D src_msg->send_recv_id & GENMASK(15,0);
> +
> +    if ( src_id !=3D ffa_get_vm_id(src_d) || !FFA_ID_IS_SECURE(dst_id) )
> +    {
> +        ret =3D FFA_RET_INVALID_PARAMETERS;
> +        goto out_unlock_tx;
> +    }
> +
> +    /* check source message fits in buffer */
> +    if ( src_ctx->page_count * FFA_PAGE_SIZE <
> +         src_msg->msg_offset + src_msg->msg_size ||
> +         src_msg->msg_offset < sizeof(struct ffa_part_msg_rxtx) )
> +    {
> +        ret =3D FFA_RET_INVALID_PARAMETERS;
> +        goto out_unlock_tx;
> +    }

The guest can change src_mst at any moment with another CPU so these
tests are only sanity checks. The SPMC will also have to lock and do
the same tests again. So the tests here will only in the best case (in
case the guest is misbehaving) save us from entering the SPMC only to
get an error back. The lock makes sense since we could have concurrent
calls to FFA_MEM_SHARE. How about removing the tests?

> +
> +    ret =3D ffa_simple_call(FFA_MSG_SEND2, ((uint32_t)src_id) << 16, 0, =
0, 0);

I'd rather use ffa_get_vm_id(src_d) instead of src_id.

Cheers,
Jens

> +
> +out_unlock_tx:
> +    spin_unlock(&src_ctx->tx_lock);
> +    return ret;
> +}
> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_privat=
e.h
> index 973ee55be09b..d441c0ca5598 100644
> --- a/xen/arch/arm/tee/ffa_private.h
> +++ b/xen/arch/arm/tee/ffa_private.h
> @@ -359,6 +359,7 @@ void ffa_handle_notification_get(struct cpu_user_regs=
 *regs);
>  int ffa_handle_notification_set(struct cpu_user_regs *regs);
>
>  void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32_t=
 fid);
> +int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs);
>
>  static inline uint16_t ffa_get_vm_id(const struct domain *d)
>  {
> --
> 2.47.0
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 09:06:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 09:06:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825035.1239226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3tnv-0002aV-OS; Thu, 24 Oct 2024 09:06:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825035.1239226; Thu, 24 Oct 2024 09: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 1t3tnv-0002aO-Kp; Thu, 24 Oct 2024 09:06:51 +0000
Received: by outflank-mailman (input) for mailman id 825035;
 Thu, 24 Oct 2024 09:06: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=spah=RU=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1t3tnu-0002aI-Rg
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 09:06:50 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20626.outbound.protection.outlook.com
 [2a01:111:f403:2009::626])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4cda584d-91e7-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 11:06:49 +0200 (CEST)
Received: from CH5P222CA0009.NAMP222.PROD.OUTLOOK.COM (2603:10b6:610:1ee::25)
 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.8093.17; Thu, 24 Oct
 2024 09:06:45 +0000
Received: from CH3PEPF00000015.namprd21.prod.outlook.com
 (2603:10b6:610:1ee:cafe::49) by CH5P222CA0009.outlook.office365.com
 (2603:10b6:610:1ee::25) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18 via Frontend
 Transport; Thu, 24 Oct 2024 09:06:45 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CH3PEPF00000015.mail.protection.outlook.com (10.167.244.120) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8114.2 via Frontend Transport; Thu, 24 Oct 2024 09:06:44 +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.39; Thu, 24 Oct
 2024 04:06:41 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4cda584d-91e7-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Fgpr/OBiDIe+0KVRf/zqO5HlkDeMtYbtzMaMOa7+Xg1CzY1dGGocCfyw/Yv1PT0b/1dTzTuJODgfU8p260jyGXCHYsKzYmIjes1iT2cV8zUm1wbIOQjTa8j6Pdm8y1D4qw8+0txJnemS3kidDYBKUZeYo88w0cfHH6kQaOVQ4uVeR2nU44A8pK/MKhg8F2kxyVW6XWkZBHJkOlTvowV81ZriVoOB4SjYKNefs73zdR9z5D2K3j3ow1c6iP0qp66DZnXb8+9aWDVd+Qk6l8d+JRpoY6q7w2EkTsJyRxwxI2uVpwM4WkZ0Axlc+M7MvuaXwjHXJRGayVapMgazFw4qNg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=2gbYu2XjGHbSV+SaOmQmDxswd2t/pv2OR5bJk+IJ4Ts=;
 b=F/07GKuAudz6PFhJd+eK4w84JFXnSuDL4DlOVpvtZ77bGZGfuDkuq5oVNTABwCsAVouA8AELv0fNQA67+w/O81aLbWx87LzQJbHgDnf5LpMLWyy5N0+6UWGgA+bnv6cvnGrjVnShkzwgJvC2ZOZYtzOZpUs5hlO7k8fFrRym78h6OXpcrhu5rfGpCZi8GVq9w2UnI02yEmEUwjl1ryIn7Sbit7ihXS3dSbRxEigo+M2VT0j9VbC2oU/8IuBD21oCZqpb1reVMskD85bxxkV2yZiP5vUOS3pZFgmUG4Pkz6q2VypRYMPvapgqOLBHXTXWf1gizkb8lliSoeMV35Kwig==
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=2gbYu2XjGHbSV+SaOmQmDxswd2t/pv2OR5bJk+IJ4Ts=;
 b=N+m6FWreWMmRMHBTTDC7fl4DYdgtjqAzpBOwzN1qJJ8h/ZGCMCi+P8y3gWj3c6goEWivAL+HF8QdN8CAW/GcFZ/1Itwzs6aZGrmHwPRZ3XdQcV4ZMUrIBgf78VE5NnstvtdiaOQE8KV69ylQ/rf/8cvNME5iszLuMFyI0P+yosI=
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: Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony@xenproject.org>, Paul Durrant <paul@xen.org>, "Edgar E . Iglesias"
	<edgar.iglesias@gmail.com>, "Michael S . Tsirkin" <mst@redhat.com>, "Marcel
 Apfelbaum" <marcel.apfelbaum@gmail.com>
CC: <qemu-devel@nongnu.org>, <xen-devel@lists.xenproject.org>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [QEMU PATCH v9] xen/passthrough: use gsi to map pirq when dom0 is PVH
Date: Thu, 24 Oct 2024 17:06:29 +0800
Message-ID: <20241024090629.1944820-1-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
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: CH3PEPF00000015:EE_|CY8PR12MB7338:EE_
X-MS-Office365-Filtering-Correlation-Id: cd0ab48c-55b2-4176-d515-08dcf40b2f0b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?eTxMlpZhSY8gCKqANwH7iMMv00dbXew0/LUc1wj87edygN1YDa9IwZ8OUHO1?=
 =?us-ascii?Q?pkC16Q3wRlw+3oOPPlQ49eIcsCJPImPTRTQLrsXRNJxxQUIhISpWVkWrGeTr?=
 =?us-ascii?Q?klWXLV7/SHHC+FahLIVwFz3kltebwHMSVvyUGu+GbiacAWUmlSlDNl7MAJTh?=
 =?us-ascii?Q?Ho1tejDUu+RVdYd9WhhC3LTYhVQxIIYI6cotGzcPMhxThUAYNLfZ2UWUFQxX?=
 =?us-ascii?Q?r5otjDZYwsc+QHnErvVkvUufoOX+jDs8duBGiKU372jjgBMwrTsMaJ1mvpSE?=
 =?us-ascii?Q?NIq1vZ8xGclTQTKxda5Crz4Vs3LaR9wTdygRE2JOE6LHl0RH0Gb2rKu+DfgK?=
 =?us-ascii?Q?RGQuVlyG+cQoqB+Ug+LluSk/5DtcXsfQQmgibn8s5HeOqUIVOk2xfu5Z1nJ4?=
 =?us-ascii?Q?uA/q1nqZF+YMiagOEZ0Ri0N8m9P35IVIuMbgn61Ib/FpBLPL1S7SOHjYWve7?=
 =?us-ascii?Q?6QINu2FKdMl/bynj0UGlUJtfdq1eNbBv/wvpLUBYMHddEPuydoxTPAu615RD?=
 =?us-ascii?Q?3EK46bcQGpZedjLPD5u/0PbVe5mn5Ae3EcqulfMjGGZ/VvOvF+vK0SKGvk6U?=
 =?us-ascii?Q?4lJKBeHH9YDDmCsFh9hes10hPgv+SM0K1cj4WUX1rVE5hvODbPaZ5bZT6QT+?=
 =?us-ascii?Q?U8tV9EQ8uZqt/gs4UQkDuuK3YpwCIgx4Ueb4+8vuHd8sBnkPJ90QeodvYjci?=
 =?us-ascii?Q?p23T2E/K0asXoJY8ZJjQoErOPcglrVA/8V6/Jv9BCHP0M4tBO0OMpwg6S7Sq?=
 =?us-ascii?Q?QTw7Y2fLQNQqm1MHBt6ZFzo18h1Lwx1VOW4lcTzACivvg4qNR7SpRXtA2D0c?=
 =?us-ascii?Q?+kovzhtuq//lyQ+9Mu+og7F6Z2pk4nGltZ0UDDZcSnKhqkW4vPhqfRPtgOVM?=
 =?us-ascii?Q?6sxms1lYKCqwIqwAYcgIGRxc+JgnEifpcjPJLNx2FhyG8cOzT3I/+le1srpo?=
 =?us-ascii?Q?7JYOCuMiqmCCsi81Zkl9HVuZB1ZidxNervLvpi9Ld7sCuhg3e1YGxTF2gV7X?=
 =?us-ascii?Q?VMgnYRHyg4Q+xIvXibLsfUzeCiZ4t6r9KfvvIA6d0yQVK5d0OLuJQyaRYQ7+?=
 =?us-ascii?Q?A/95inv6+CZ+gFIEc284hhu6zXmPqrfH5i1MvJomHjgWityIa4VHP9lz2Z+s?=
 =?us-ascii?Q?UKbViw3NBY829HTdCc5KsrCMsEQ9fecwNMJQURzjI6Lu7r7PRGBc3xZjua1K?=
 =?us-ascii?Q?2P0yRZ8QPMohK4rUySdiR7SWURhcvsCOdZ+YsaAFfJJfvDL/r9qLaC0j1a2n?=
 =?us-ascii?Q?kaosCmL9vA9+GSFq6/ZuW5AWS9B7knS4/h4Pj63ZPrXarFLrgPaX8w4z3E/c?=
 =?us-ascii?Q?tSnrEnZBqYcnTcexqYjr6OPfiZwOwmhCcs5BBbeIgNONYdptjTQTqstVUrqj?=
 =?us-ascii?Q?GEWR6F0VDHc1cGTvUBF4s8yq1yEcib6mxxKUOSy+oV+hGluECw=3D=3D?=
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:(13230040)(1800799024)(376014)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 09:06:44.9952
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cd0ab48c-55b2-4176-d515-08dcf40b2f0b
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:
	CH3PEPF00000015.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7338

In PVH dom0, when passthrough a device to domU, QEMU code
xen_pt_realize->xc_physdev_map_pirq wants to use gsi, but in current codes
the gsi number is got from file /sys/bus/pci/devices/<sbdf>/irq, that is
wrong, because irq is not equal with gsi, they are in different spaces, so
pirq mapping fails.

To solve above problem, use new interface of Xen, xc_pcidev_get_gsi to get
gsi and use xc_physdev_map_pirq_gsi to map pirq when dom0 is PVH.

Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
Signed-off-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
Hi All,
This is v9 to support passthrough on Xen when dom0 is PVH.
v8->v9 changes:
* Moved the definition of PCI_SBDF from /hw/xen/xen_pt.c to /include/hw/pci/pci.h.
* Renamed xen_run_qemu_on_hvm to xen_pt_need_gsi.
* Renamed xen_map_pirq_for_gsi to xen_pt_map_pirq_for_gsi.
* Through reading /sys/hypervisor/guest_type to get dom type instead of using xc_domain_getinfo_single.

Best regards,
Jiqian Chen

v7->v8 changes:
* Since xc_physdev_gsi_from_dev was renamed to xc_pcidev_get_gsi, changed it.
* Added xen_run_qemu_on_hvm to check if Qemu run on PV dom0, if not use xc_physdev_map_pirq_gsi to map pirq.
* Used CONFIG_XEN_CTRL_INTERFACE_VERSION to wrap the new part for compatibility.
* Added "#define DOMID_RUN_QEMU 0" to represent the id of domain that Qemu run on.

v6->v7 changes:
* Because the function of obtaining gsi was changed on the kernel and Xen side. Changed to use
  xc_physdev_gsi_from_dev, that requires passing in sbdf instead of irq.

v5->v6 changes:
* Because the function of obtaining gsi was changed on the kernel and Xen side. Changed to use
  xc_physdev_gsi_from_irq, instead of gsi sysfs.
* Since function changed, removed the Review-by of Stefano.

v4->v5 changes:
* Added Review-by Stefano.

v3->v4 changes:
* Added gsi into struct XenHostPCIDevice and used gsi number that read from gsi sysfs
  if it exists, if there is no gsi sysfs, still use irq.

v2->v3 changes:
* Due 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.

v1 and v2:
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.

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. They are in different space.
---
 hw/xen/xen_pt.c      | 53 ++++++++++++++++++++++++++++++++++++++++++++
 include/hw/pci/pci.h |  4 ++++
 2 files changed, 57 insertions(+)

diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 3635d1b39f79..5b10d501d566 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -766,6 +766,50 @@ static void xen_pt_destroy(PCIDevice *d) {
 }
 /* init */
 
+#if CONFIG_XEN_CTRL_INTERFACE_VERSION >= 42000
+static bool xen_pt_need_gsi(void)
+{
+    FILE *fp;
+    int len;
+    char type[10];
+    const char *guest_type = "/sys/hypervisor/guest_type";
+
+    fp = fopen(guest_type, "r");
+    if (fp == NULL) {
+        error_report("Cannot open %s: %s", guest_type, strerror(errno));
+        return false;
+    }
+    fgets(type, sizeof(type), fp);
+    fclose(fp);
+
+    len = strlen(type);
+    if (len) {
+        type[len - 1] = '\0';
+        if (!strcmp(type, "PVH")) {
+            return true;
+        }
+    }
+    return false;
+}
+
+static int xen_pt_map_pirq_for_gsi(PCIDevice *d, int *pirq)
+{
+    int gsi;
+    XenPCIPassthroughState *s = XEN_PT_DEVICE(d);
+
+    gsi = xc_pcidev_get_gsi(xen_xc,
+                            PCI_SBDF(s->real_device.domain,
+                                     s->real_device.bus,
+                                     s->real_device.dev,
+                                     s->real_device.func));
+    if (gsi >= 0) {
+        return xc_physdev_map_pirq_gsi(xen_xc, xen_domid, gsi, pirq);
+    }
+
+    return gsi;
+}
+#endif
+
 static void xen_pt_realize(PCIDevice *d, Error **errp)
 {
     ERRP_GUARD();
@@ -847,7 +891,16 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
         goto out;
     }
 
+#if CONFIG_XEN_CTRL_INTERFACE_VERSION >= 42000
+    if (xen_pt_need_gsi()) {
+        rc = xen_pt_map_pirq_for_gsi(d, &pirq);
+    } else {
+        rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq);
+    }
+#else
     rc = xc_physdev_map_pirq(xen_xc, xen_domid, machine_irq, &pirq);
+#endif
+
     if (rc < 0) {
         XEN_PT_ERR(d, "Mapping machine irq %u to pirq %i failed, (err: %d)\n",
                    machine_irq, pirq, errno);
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index eb26cac81098..07805aa8a5f3 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -23,6 +23,10 @@ extern bool pci_available;
 #define PCI_SLOT_MAX            32
 #define PCI_FUNC_MAX            8
 
+#define PCI_SBDF(seg, bus, dev, func) \
+            ((((uint32_t)(seg)) << 16) | \
+            (PCI_BUILD_BDF(bus, PCI_DEVFN(dev, func))))
+
 /* Class, Vendor and Device IDs from Linux's pci_ids.h */
 #include "hw/pci/pci_ids.h"
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 09:10:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 09:10:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825042.1239236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3trL-00046W-6P; Thu, 24 Oct 2024 09:10:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825042.1239236; Thu, 24 Oct 2024 09: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 1t3trL-00046P-3Y; Thu, 24 Oct 2024 09:10:23 +0000
Received: by outflank-mailman (input) for mailman id 825042;
 Thu, 24 Oct 2024 09:10: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 1t3trJ-00046J-Jg
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 09:10:21 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.96)
 (envelope-from <julien@xen.org>) id 1t3trJ-001hAR-1D;
 Thu, 24 Oct 2024 09:10:21 +0000
Received: from [15.248.2.239] (helo=[10.24.67.19])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1t3trJ-0001Ao-2n; Thu, 24 Oct 2024 09:10: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=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=PaUXcKI62J1/qUAooyCOnoJyMbWTPZj8jOHGWBTJAVo=; b=PzcmMBGL3b4lJz0fml3tBLtsIW
	/FcipPPAZu+U/+zL9Z55eyLe+pfJtqCNoEqhWbxu+wxsIDVXXP8CJRaHCfQ8VnaFcrrq8qB6/Oq6d
	tOxjBmH/CywWc8nFLUMgCBq9mJnGfKTad6DOqz0QQn56HvK9PhmlAY4MoQJGLSj6hwhU=;
Message-ID: <1e7fd245-2e67-4ff8-b75a-bb3845213101@xen.org>
Date: Thu, 24 Oct 2024 10:10:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/6] xen/arm: mpu: Enable MPU
Content-Language: en-GB
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241010140351.309922-1-ayan.kumar.halder@amd.com>
 <20241010140351.309922-6-ayan.kumar.halder@amd.com>
 <a6a66bd1-45dc-46d2-9e45-8fef8b45e003@xen.org>
 <23b86010-d467-42fd-bba0-65b58e05beaf@amd.com>
 <DEE00B97-ADA5-4229-9B41-571C38F7A6C5@arm.com>
 <f444f549-6f4e-494b-af85-aeec127722c4@xen.org>
 <A302D615-E25E-46DE-A4CA-4FF911293D83@arm.com>
 <d1e8decf-3c63-41fe-a6e3-f880b984dda4@xen.org>
 <61C13F4F-24D2-4B6D-9216-813EDEED4865@arm.com>
 <5b8d5c3e-3c52-4b3b-b63f-c89a58f40f10@xen.org>
 <4E7C8350-D6DE-43D3-B269-185FFEE62B96@arm.com>
 <8991e9da-5abd-4fd7-919b-fbe87d747838@amd.com>
 <251fb5a2-a8d7-451b-9714-5cc984645354@xen.org>
 <acd45c52-7675-4dee-b8f8-46429cadf9ac@xen.org>
 <d70dae8e-5197-48db-859b-a3cae67e4ca7@xen.org>
 <6dad812c-b1dc-49e4-aa08-aac5647ca37d@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <6dad812c-b1dc-49e4-aa08-aac5647ca37d@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

On 24/10/2024 09:02, Ayan Kumar Halder wrote:
> On 23/10/2024 17:30, Julien Grall wrote:
>>
>>
>> On 23/10/2024 17:18, Julien Grall wrote:
>>>
>>>
>>> On 23/10/2024 17:13, Julien Grall wrote:
>>>>
>>>>
>>>> On 23/10/2024 17:06, Ayan Kumar Halder wrote:
>>>>> Hi Luca/Julien,
>>>>>
>>>>> On 22/10/2024 17:31, Luca Fancellu wrote:
>>>>>> Hi Julien,
>>>>>>
>>>>>>> On 22 Oct 2024, at 14:13, Julien Grall <julien@xen.org> wrote:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 22/10/2024 10:56, Luca Fancellu wrote:
>>>>>>>>> On 22 Oct 2024, at 10:47, Julien Grall <julien@xen.org> wrote:
>>>>>>>>>
>>>>>>>>> Hi Luca,
>>>>>>>>>
>>>>>>>>> On 22/10/2024 10:41, Luca Fancellu wrote:
>>>>>>>>>>> On 21 Oct 2024, at 17:27, Julien Grall <julien@xen.org> wrote:
>>>>>>>>>> 2) dsb+isb barrier after enabling the MPU, since we are 
>>>>>>>>>> enabling the MPU but also because we are disabling the 
>>>>>>>>>> background region
>>>>>>>>> TBH, I don't understand this one. Why would disabling the 
>>>>>>>>> background region requires a dsb + isb? Do you have any pointer 
>>>>>>>>> in the Armv8-R specification?
>>>>>>>> I’m afraid this is only my deduction, Section C1.4 of the Arm® 
>>>>>>>> Architecture Reference Manual Supplement Armv8, for R-profile 
>>>>>>>> AArch64 architecture,
>>>>>>>> (DDI 0600B.a) explains what is the background region, it says it 
>>>>>>>> implements physical address range(s), so when we disable it, we 
>>>>>>>> would like any data
>>>>>>>> access to complete before changing this implementation defined 
>>>>>>>> range with the ranges defined by us tweaking PRBAR/PRLAR, am I 
>>>>>>>> right?
>>>>>>> My mental model for the ordering is similar to a TLB flush which is:
>>>>>>>    1/ dsb nsh
>>>>>>>    2/ tlbi
>>>>>>>    3/ dsb nsh
>>>>>>>    4/ isb
>>>>>>>
>>>>>>> Enabling the MPU is effectively 2. AFAIK, 1 is only necessary to 
>>>>>>> ensure the update to the page-tables. But it is not a requirement 
>>>>>>> to ensure any data access are completed (otherwise, we would have 
>>>>>>> needed a dsb sy because we don't know how far the access are 
>>>>>>> going...).
>>>>>> Uhm… I’m not sure we are on the same page, probably I explained 
>>>>>> that wrongly, so my point is that:
>>>>>>
>>>>>> FUNC_LOCAL(enable_mpu)
>>>>>>      mrs   x0, SCTLR_EL2
>>>>>>      bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background 
>>>>>> region */
>>>>>>      orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>>>>>>      orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>>>>>>      orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>>>>>>      dsb   sy
>>>>>>      ^— This data barrier is needed in order to complete any data 
>>>>>> access, which guarantees that all explicit memory accesses before
>>>>>>             this instruction complete, so we can safely turn ON 
>>>>>> the MPU and disable the background region.
>>>>
>>>> I think
>>>
>>> Sorry I fat fingered and pressed send too early. I think this is the 
>>> part I disagree with. All explicit accesses don't need to be complete 
>>> (in the sense observed by everyone in the system). They only need to 
>>> have gone through the permissions check.
>>
>> I think I managed to find again the wording that would justify why a 
>> "dsb" is not necessary for the permission checks. From ARM DDI 0487K.a 
>> D23-7349:
>>
>> ```
>> Direct writes using the instructions in Table D22-2 require 
>> synchronization before software can rely on the effects
>> of changes to the System registers to affect instructions appearing in 
>> program order after the direct write to the
>> System register. Direct writes to these registers are not allowed to 
>> affect any instructions appearing in program order
>> before the direct write.
>> ```
>>
>> I understand the paragraph as enabling the MPU via SCTLR_EL2 will not 
>> affect any instruction before hand.
> 
> Yes, I agree.
> 
> However, as the line states
> 
> "Direct writes using the instructions in Table D22-2 require 
> synchronization before software can rely on the effects"
> 
> This means synchronization is required after the write to SCTLR_EL2.
> 
> However, this synchronization seems to imply dsb sy + isb.
> 
> FromARM DDI 0487K.a ID032224 B2-274
> 
> "A DSB instruction ordered after a direct write to a System PMU register 
> does not complete until all observers observe the direct write"
> 
> So, a write to SCTLR_EL2 needs to be followed by a dsb to ensure the 
> write is observed on all the processors (as SCTLR_EL2 and PMU registers 
> belong to Table D22-2, so the behavior should be same).

Aside what Luca already said, I don't understand why the write to 
SCTLR_EL2 needs to be seen by all the processors (which BTW would imply 
"ish" rather than "sy"). The MPU and SCTLR are per-processor.

> 
> And then it needs to be followed by an ISB to ensure any instruction 
> fetch observes that MPU is enabled.
> 
> So the code needs to be
> 
> FUNC_LOCAL(enable_mpu)
>      mrs   x0, SCTLR_EL2
>      bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
>      orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
>      orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
>      orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
>      msr   SCTLR_EL2, x0
>      dsb   sy                  /* ensure the writes to SCTLR_EL2 are 
> observed on all the processors */
>      isb                               /* any instruction fetch observes 
> that MPU is enabled. So force flush the pre-existing instruction 
> pipeline */
> 
>      ret
> END(enable_mpu)
> 
> This will be similar to what Zephyr  does https://github.com/ 
> zephyrproject-rtos/zephyr/blob/a30270668d4b90bac932794ef75df12a2b6f6f78/ 
> arch/arm/core/mpu/arm_mpu.c#L258 .

I guess you mean 
https://github.com/zephyrproject-rtos/zephyr/blob/a30270668d4b90bac932794ef75df12a2b6f6f78/arch/arm/core/mpu/arm_mpu.c#L223? 
But the reasoning there is seem quite different. AFAIU The "dsb" is to 
ensure that the changes to the MPU registers are visible. That said, I 
am not convinced that the "dsb" belongs after. Even if "SCTLR_EL2" may 
not be fully synchronized until the next "isb", it may happen before and 
therefore you want the MPU registers to be visible before SCTLR_EL2 is 
visible.

> Let me know if you are ok with the rationale.

See above.

 > > Also, I would prefer to have 3 orr instructions instead of one for the
> sake of readability. However, this is not a strong preference so if you 
> feel otherwise, I can change to have a single orr instruction.

I am ok with that.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 09:13:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 09:13:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825048.1239246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3tuD-0004eT-Je; Thu, 24 Oct 2024 09:13:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825048.1239246; Thu, 24 Oct 2024 09:13: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 1t3tuD-0004eM-Ga; Thu, 24 Oct 2024 09:13:21 +0000
Received: by outflank-mailman (input) for mailman id 825048;
 Thu, 24 Oct 2024 09:13: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=MNKq=RU=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3tuC-0004eG-C8
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 09:13: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 3510206d-91e8-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 11:13:18 +0200 (CEST)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2fb51f39394so6563491fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 02:13:18 -0700 (PDT)
Received: from ?IPV6:2003:e5:8714:8700:db3b:60ed:e8b9:cd28?
 (p200300e587148700db3b60ede8b9cd28.dip0.t-ipconnect.de.
 [2003:e5:8714:8700:db3b:60ed:e8b9:cd28])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b16esm5436786a12.60.2024.10.24.02.13.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 24 Oct 2024 02:13:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3510206d-91e8-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729761197; x=1730365997; darn=lists.xenproject.org;
        h=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=PC40bluxgxNoJ/QlQ+VZUbt0hlUDMFgeadCh/QTj7Bc=;
        b=VuCeAVGBewpRChumqdJsvrVH/kTzDKPV3q8xfpm4DBjOfQeCyrnTIUyIZsbKjijeXE
         7ZNMfmqwrh70/RdaqkLA4ZKFYqw2u0ERNLu2gMMRrARWMhUofjYJSJEvy4BP11o1sW7m
         /HIwC8DHsPzpGbHo213OnYg3pNEVVCj1RLtamk2A6HJrQ42dEw/0J0eSoc3a+3jNcjRA
         dgMOcmO+vWJt8Yy4ZtzfQGV5Y4ZifigDMTcbIsh58ACuhVem+X+7wTCbDamsFQ+Xp5lj
         gz6ZQHV/wLm6CRENuSnBV/cWJQNVq9t3tDnrgVMsgtPfPgXXAoCVM3Ss4DSA/eMAYYVO
         QRhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729761197; x=1730365997;
        h=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=PC40bluxgxNoJ/QlQ+VZUbt0hlUDMFgeadCh/QTj7Bc=;
        b=qKrCDRx6Cd0FijBc7TxXClAD7YxSokCdvLxlR6DwdSI9qerkFDWSfhMvC1EZ1QfcPZ
         QMj94SGj6zK6/zUZbOB45UEuSyGLoSmpIpkELLi2nEPrCxM0tZX2XWbmNyybo/yzA9lT
         kwaoUZf8iobze0IAwVsogTlazju56viX/tq3qDU7iKkDpYR7QoEjEVOkvfj1HcJ1roRb
         u4zdiSxwwRz2MUU4M+fje5b3iKmTj+MHA3Jd616YXoyLbWBuBPUbLe85xO8IGkfAmZSV
         ffyDehEkguLe5JB5XFlWOUXRmmYBwJGso4ivXiDMXN+PWbehhhn9cep7ZUU/qB/lA+Zu
         XmFg==
X-Forwarded-Encrypted: i=1; AJvYcCXLu9BKVZLBQVvBNxzE2PIViERBdHCiuWi4XgEZNDKfW+a3BDRE8shWmeyEVM+oyEjOwNRpSciDQVg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzkC2H7BhrxszLqdPOBN9SqRX6zMD8701UXh2MjRDWneNmeheGr
	hy9CHPVEfKf4oL//8JmpUVQUhk3J3XZhikd3Aru68mkMpDN/Nhdf2UOtW82Cj2w=
X-Google-Smtp-Source: AGHT+IEss0UCO9QMpkpGYQJZjuTkGW5F5JfgHF6fLhHWS84eBWsayqlhZ6EjfrG47HlRyHt1gx22ZQ==
X-Received: by 2002:a2e:b8c9:0:b0:2fb:b8a:7abb with SMTP id 38308e7fff4ca-2fca8225499mr8441451fa.21.1729761197326;
        Thu, 24 Oct 2024 02:13:17 -0700 (PDT)
Message-ID: <9a049e23-471f-4987-9993-e5f2db60ac1f@suse.com>
Date: Thu, 24 Oct 2024 11:13:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
 <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------iajCeEtt9l1v7lszBCoE7rrA"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------iajCeEtt9l1v7lszBCoE7rrA
Content-Type: multipart/mixed; boundary="------------0eUmDybNHL2hbxJ0Ojj0CbjI";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Message-ID: <9a049e23-471f-4987-9993-e5f2db60ac1f@suse.com>
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
 <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
In-Reply-To: <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------0eUmDybNHL2hbxJ0Ojj0CbjI
Content-Type: multipart/mixed; boundary="------------oy0ClXDl1vdSOAqwHGgC60Ou"

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

T24gMjMuMTAuMjQgMTc6NTUsIERhbmllbCBQLiBTbWl0aCB3cm90ZToNCj4gT24gMTAvMjMv
MjQgMDk6MTAsIEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6DQo+PiBBZGQgYSBuZXcgZG9tY3RsIHN1
Yi1mdW5jdGlvbiB0byBnZXQgZGF0YSBvZiBhIGRvbWFpbiBoYXZpbmcgY2hhbmdlZA0KPj4g
c3RhdGUgKHRoaXMgaXMgbmVlZGVkIGJ5IFhlbnN0b3JlKS4NCj4+DQo+PiBUaGUgcmV0dXJu
ZWQgc3RhdGUganVzdCBjb250YWlucyB0aGUgZG9taWQsIHRoZSBkb21haW4gdW5pcXVlIGlk
LA0KPj4gYW5kIHNvbWUgZmxhZ3MgKGV4aXN0aW5nLCBzaHV0ZG93biwgZHlpbmcpLg0KPj4N
Cj4+IEluIG9yZGVyIHRvIGVuYWJsZSBYZW5zdG9yZSBzdHViZG9tIGJlaW5nIGJ1aWx0IGZv
ciBtdWx0aXBsZSBYZW4NCj4+IHZlcnNpb25zLCBtYWtlIHRoaXMgZG9tY3RsIHN0YWJsZS7C
oCBGb3Igc3RhYmxlIGRvbWN0bHMgdGhlDQo+PiBpbnRlcmZhY2VfdmVyc2lvbiBpcyBzcGVj
aWZpYyB0byB0aGUgcmVzcGVjdGl2ZSBkb21jdGwgb3AgYW5kIGl0IGlzIGFuDQo+PiBpbi9v
dXQgcGFyYW1ldGVyOiBPbiBpbnB1dCB0aGUgY2FsbGVyIGlzIHNwZWNpZnlpbmcgdGhlIGRl
c2lyZWQgdmVyc2lvbg0KPj4gb2YgdGhlIG9wLCB3aGlsZSBvbiBvdXRwdXQgdGhlIGh5cGVy
dmlzb3Igd2lsbCByZXR1cm4gdGhlIHVzZWQgdmVyc2lvbg0KPj4gKHRoaXMgd2lsbCBiZSBh
dCBtYXggdGhlIGNhbGxlciBzdXBwbGllZCB2ZXJzaW9uLCBidXQgbWlnaHQgYmUgbG93ZXIg
aW4NCj4+IGNhc2UgdGhlIGh5cGVydmlzb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgdmVyc2lv
bikuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2Uu
Y29tPg0KPj4gLS0tDQo+PiBWMToNCj4+IC0gdXNlIGEgZG9tY3RsIHN1Ym9wIGZvciB0aGUg
bmV3IGludGVyZmFjZSAoSmFuIEJldWxpY2gpDQo+PiAtLS0NCj4+IMKgIHRvb2xzL2ZsYXNr
L3BvbGljeS9tb2R1bGVzL2RvbTAudGXCoCB8wqAgMiArLQ0KPj4gwqAgeGVuL2NvbW1vbi9k
b21haW4uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgNTEgKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysNCj4+IMKgIHhlbi9jb21tb24vZG9tY3RsLmPCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDE5ICsrKysrKysrKystDQo+PiDCoCB4ZW4v
Y29tbW9uL2V2ZW50X2NoYW5uZWwuY8KgwqDCoMKgwqDCoMKgwqDCoCB8wqAgOSArKysrLQ0K
Pj4gwqAgeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5owqDCoMKgwqDCoMKgwqDCoCB8IDMz
ICsrKysrKysrKysrKysrKysrKysNCj4+IMKgIHhlbi9pbmNsdWRlL3hlbi9ldmVudC5owqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA2ICsrKysNCj4+IMKgIHhlbi9pbmNsdWRlL3hl
bi9zY2hlZC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAyICsrDQo+PiDCoCB4ZW4v
aW5jbHVkZS94c20vZHVtbXkuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgOCArKysr
Kw0KPj4gwqAgeGVuL2luY2x1ZGUveHNtL3hzbS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCB8wqAgNiArKysrDQo+PiDCoCB4ZW4veHNtL2R1bW15LmPCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxICsNCj4+IMKgIHhlbi94c20vZmxhc2sv
aG9va3MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDcgKysrKw0KPj4gwqAg
eGVuL3hzbS9mbGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgfMKgIDIgKysNCj4+IMKgIDEy
IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KPj4N
Cj4+IGRpZmYgLS1naXQgYS90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy9kb20wLnRlIA0K
Pj4gYi90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy9kb20wLnRlDQo+PiBpbmRleCAxNmI4
Yzk2NDZkLi42MDQzYzAxYjEyIDEwMDY0NA0KPj4gLS0tIGEvdG9vbHMvZmxhc2svcG9saWN5
L21vZHVsZXMvZG9tMC50ZQ0KPj4gKysrIGIvdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMv
ZG9tMC50ZQ0KPj4gQEAgLTQwLDcgKzQwLDcgQEAgYWxsb3cgZG9tMF90IGRvbTBfdDpkb21h
aW4gew0KPj4gwqAgfTsNCj4+IMKgIGFsbG93IGRvbTBfdCBkb20wX3Q6ZG9tYWluMiB7DQo+
PiDCoMKgwqDCoMKgIHNldF9jcHVfcG9saWN5IGdldHRzYyBzZXR0c2Mgc2V0c2NoZWR1bGVy
IHNldF92bnVtYWluZm8NCj4+IC3CoMKgwqAgZ2V0X3ZudW1haW5mbyBwc3JfY210X29wIHBz
cl9hbGxvYyBnZXRfY3B1X3BvbGljeQ0KPj4gK8KgwqDCoCBnZXRfdm51bWFpbmZvIHBzcl9j
bXRfb3AgcHNyX2FsbG9jIGdldF9jcHVfcG9saWN5IGdldF9kb21haW5fc3RhdGUNCj4gDQo+
IEkgZG9uJ3QgdGhpbmsgdGhhdCBpcyB3aGVyZSB5b3Ugd2FudCBpdCwgYXMgdGhhdCByZXN0
cmljdHMgZG9tMCB0byBvbmx5IGJlaW5nIA0KPiBhYmxlIHRvIG1ha2UgdGhhdCBjYWxsIGFn
YWluc3QgZG9tMC4gVGhlIHF1ZXN0aW9uIEkgaGF2ZSBpcywgYXJlIHlvdSBsb29raW5nIGZv
ciANCj4gdGhpcyBwZXJtaXNzaW9uIHRvIGJlIGV4cGxpY2l0bHkgYXNzaWduZWQgdG8gZG9t
MCBvciB0byB0aGUgZG9tYWluIHR5cGUgdGhhdCB3YXMgDQo+IGFsbG93ZWQgdG8gY3JlYXRl
IHRoZSBkb21haW4uIElNSE8sIEkgdGhpbmsgeW91IHdvdWxkIHdhbnQgdGhlIGxhdHRlciwg
c28gbm90IA0KPiBvbmx5IHNob3VsZCB0aGUgcGVybWlzc2lvbiBnbyBoZXJlLCBidXQgYWxz
byBhZGRlZCB0byB4ZW4uaWY6Y3JlYXRlX2RvbWFpbl9jb21tb24uDQo+IA0KPiBBZGRpdGlv
bmFsbHksIEkgd291bGQgYWxzbyByZWNvbW1lbmQgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8g
eGVuc3RvcmUudGU6DQo+IA0KPiBhbGxvdyB4ZW5zdG9yZV90IGRvbWFpbl90eXBlOmRvbWFp
biBnZXRfZG9tYWluX3N0YXRlDQoNCk9rYXksIGJ1dCBzaG91bGRuJ3QgdGhpcyBiZToNCg0K
YWxsb3cgeGVuc3RvcmVfdCBkb21haW5fdHlwZTpkb21haW4yIGdldF9kb21haW5fc3RhdGU7
DQoNCj4gDQo+PiDCoCBhbGxvdyBkb20wX3QgZG9tMF90OnJlc291cmNlIHsgYWRkIHJlbW92
ZSB9Ow0KPiANCj4gLi4uDQo+IA0KPj4gQEAgLTg2Niw2ICs4NzMsMTYgQEAgbG9uZyBkb19k
b21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIA0KPj4gdV9kb21j
dGwpDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9fSFlQRVJWSVNP
Ul9kb21jdGwsICJoIiwgdV9kb21jdGwpOw0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFr
Ow0KPj4gK8KgwqDCoCBjYXNlIFhFTl9ET01DVExfZ2V0X2RvbWFpbl9zdGF0ZToNCj4+ICvC
oMKgwqDCoMKgwqDCoCByZXQgPSB4c21fZ2V0X2RvbWFpbl9zdGF0ZShYU01fSE9PSywgZCk7
DQo+IA0KPiBYU01fSE9PSyB3aWxsIGFsbG93IGFueSBkb21haW4gdG8gbWFrZSB0aGlzIGNh
bGwgb24gYW55IGRvbWFpbi4gV2hhdCBJIHRoaW5rIHlvdSANCj4gd2FudCBoZXJlIGlzIFhT
TV9YU19QUklWLiBUaGF0IHdpbGwgYWxsb3cgZWl0aGVyIGEgZG9tYWluIGZsYWdnZWQgYXMg
dGhlIA0KPiB4ZW5zdG9yZSBkb21haW4gb3IgZG9tMCB0byBtYWtlIHRoZSBjYWxsLg0KDQpJ
IHRob3VnaHQgc28sIHRvbywgYnV0IGxvb2tpbmcgYXQgdGhlICJnZXRkb21haW5pbmZvIiBl
eGFtcGxlIGl0IHNlZW1zDQp0byBiZSBva2F5IHRoaXMgd2F5LCB0b28uIEVzcGVjaWFsbHkg
d2l0aCB0aGUgYWRkaXRpb24gdG8geHNtX2RvbWN0bCgpDQpjaGVja2luZyBmb3IgWFNNX1hT
X1BSSVYuDQoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKCByZXQgKQ0KPj4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArDQo+PiArwqDCoMKgwqDCoMKgwqAgY29w
eWJhY2sgPSAxOw0KPj4gK8KgwqDCoMKgwqDCoMKgIG9wLT5pbnRlcmZhY2VfdmVyc2lvbiA9
IFhFTl9ET01DVExfR0VURE9NU1RBVEVfVkVSU19NQVg7DQo+PiArwqDCoMKgwqDCoMKgwqAg
cmV0ID0gZ2V0X2RvbWFpbl9zdGF0ZSgmb3AtPnUuZ2V0X2RvbWFpbl9zdGF0ZSwgZCk7DQo+
PiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+PiArDQo+PiDCoMKgwqDCoMKgIGRlZmF1bHQ6
DQo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0ID0gYXJjaF9kb19kb21jdGwob3AsIGQsIHVf
ZG9tY3RsKTsNCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+IC4uLg0KPiAN
Cj4+IEBAIC04MTUsNiArODE2LDEzIEBAIHN0YXRpYyBYU01fSU5MSU5FIGludCBjZl9jaGVj
ayB4c21fYXJnb19zZW5kKA0KPj4gwqAgI2VuZGlmIC8qIENPTkZJR19BUkdPICovDQo+PiAr
c3RhdGljIFhTTV9JTkxJTkUgaW50IGNmX2NoZWNrIHhzbV9nZXRfZG9tYWluX3N0YXRlKA0K
Pj4gK8KgwqDCoCBYU01fREVGQVVMVF9BUkcgc3RydWN0IGRvbWFpbiAqZCkNCj4+ICt7DQo+
PiArwqDCoMKgIFhTTV9BU1NFUlRfQUNUSU9OKFhTTV9IT09LKTsNCj4gDQo+IFBlciB0aGUg
YWJvdmUsIHRoaXMgd291bGQgbmVlZCBjaGFuZ2VkIHRvIFhTTV9YU19QUklWLg0KPiANCj4+
ICvCoMKgwqAgcmV0dXJuIHhzbV9kZWZhdWx0X2FjdGlvbihhY3Rpb24sIGN1cnJlbnQtPmRv
bWFpbiwgZCk7DQo+PiArfQ0KPj4gKw0KPj4gwqAgI2luY2x1ZGUgPHB1YmxpYy92ZXJzaW9u
Lmg+DQo+PiDCoCBzdGF0aWMgWFNNX0lOTElORSBpbnQgY2ZfY2hlY2sgeHNtX3hlbl92ZXJz
aW9uKFhTTV9ERUZBVUxUX0FSRyB1aW50MzJfdCBvcCkNCj4+IMKgIHsNCj4gDQo+IC4uLg0K
PiANCj4+IEBAIC0xODUzLDYgKzE4NTQsMTEgQEAgc3RhdGljIGludCBjZl9jaGVjayBmbGFz
a19hcmdvX3NlbmQoDQo+PiDCoCAjZW5kaWYNCj4+ICtzdGF0aWMgaW50IGNmX2NoZWNrIGZs
YXNrX2dldF9kb21haW5fc3RhdGUoc3RydWN0IGRvbWFpbiAqZCkNCj4+ICt7DQo+PiArwqDC
oMKgIHJldHVybiBjdXJyZW50X2hhc19wZXJtKGQsIFNFQ0NMQVNTX0RPTUFJTiwgRE9NQUlO
X19HRVRfRE9NQUlOX1NUQVRFKTsNCj4gDQo+IEkgYmVsaWV2ZSB5b3Ugd2FudCBTRUNDTEFT
U19ET01BSU4yIGhlcmUuDQoNCk9oLCBpbmRlZWQuIEFuZCBwcm9iYWJseSBET01BSU4yX19H
RVRfRE9NQUlOX1NUQVRFDQoNCg0KVGhhbmtzLA0KDQpKdWVyZ2VuDQo=
--------------oy0ClXDl1vdSOAqwHGgC60Ou
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------oy0ClXDl1vdSOAqwHGgC60Ou--

--------------0eUmDybNHL2hbxJ0Ojj0CbjI--

--------------iajCeEtt9l1v7lszBCoE7rrA
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/Ey8FAmcaD6wFAwAAAAAACgkQsN6d1ii/Ey9G
2Qf9HOkgcXofqQJ69oUazxKFvgzPLUnAWwlrIh3R3D1P6m9mYbxpzsdD4DdQcn78l92PJCjsxzib
yfwqojbriVGj+6w5jQ6TbzfbsmzILGDjpUpHi6Lq2RS9vn37bb1pUPI2mz2cz/0ueENCYsi7UfIw
e8gkudNYQTU1WxrnsexRJGtRmLo1yDknQlnlzippmrinEKUyBPBdDvSEIWEaIoXM912zjHEO15mg
CE5QuDOrdaBGG8x05mwC91ximJRtwtPVk6A+DqS6E18eavAkS3cuABViHje0sIaQ+z5p+57zoEbY
5xB63aUxPMAcwBN0M+4KJEXaBefSS6LrFGkGBPIVWA==
=seby
-----END PGP SIGNATURE-----

--------------iajCeEtt9l1v7lszBCoE7rrA--


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 09:46:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 09:46:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825062.1239256 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uQ0-0000lH-53; Thu, 24 Oct 2024 09:46:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825062.1239256; Thu, 24 Oct 2024 09: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 1t3uQ0-0000lA-1x; Thu, 24 Oct 2024 09:46:12 +0000
Received: by outflank-mailman (input) for mailman id 825062;
 Thu, 24 Oct 2024 09: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=sutq=RU=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3uPx-0000l4-Va
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 09:46:10 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on2060b.outbound.protection.outlook.com
 [2a01:111:f403:2612::60b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cb1eca25-91ec-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 11:46:08 +0200 (CEST)
Received: from DB9PR05CA0016.eurprd05.prod.outlook.com (2603:10a6:10:1da::21)
 by AS8PR08MB8085.eurprd08.prod.outlook.com (2603:10a6:20b:54a::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Thu, 24 Oct
 2024 09:46:04 +0000
Received: from DU6PEPF0000B621.eurprd02.prod.outlook.com
 (2603:10a6:10:1da:cafe::30) by DB9PR05CA0016.outlook.office365.com
 (2603:10a6:10:1da::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18 via Frontend
 Transport; Thu, 24 Oct 2024 09:46:04 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU6PEPF0000B621.mail.protection.outlook.com (10.167.8.138) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Thu, 24 Oct 2024 09:46:04 +0000
Received: ("Tessian outbound 4a86a9c66651:v490");
 Thu, 24 Oct 2024 09:46:03 +0000
Received: from L231e3a137189.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 16C46FA7-6C10-48D8-889A-5E5699B2F6CE.1; 
 Thu, 24 Oct 2024 09:45:56 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L231e3a137189.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 24 Oct 2024 09:45:56 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by DB9PR08MB7844.eurprd08.prod.outlook.com (2603:10a6:10:39f::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Thu, 24 Oct
 2024 09:45:53 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Thu, 24 Oct 2024
 09:45: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: cb1eca25-91ec-11ef-a0bf-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=kaxLyZCi+cPfOaJHkQ8+hnaBEv+tyENBl5JpAaoJHBoWRl/9U9wLlIjiVYKnBUujnu6zs4pJYljTa7VD/07XmkGl7OHT9MNF9G+A8lB8g9QaNTN0cYqKGA5SUkheMc5IFJuXnNX06XHLb8rbZ4WNdXOk4hbGctFCxwy7fkNAwjQb1aIZ2gqDse7h4FuxIniZ2SNcHHbtOsCokvPGzZw9R0XE02WAqKzkRg0gTlxGUNrJNbU+v/FXZDOZKHSIIdYSYJcqudZeE/iADcbRBwjPaNuwXAGF2/3NIhpR+e9G0L0L25vKaGkHJzL/tVpESUcvjb5FG/p6sWYQM4dSzsWtvg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jvpmb4XSfDT2J8qMyivqRYObXU0qaaetStJJKvGOazw=;
 b=xtAxTsfk0HGBySv2OjoEbBXOxImWLOiHWoHz37S+B7b678BQoR/qg1icKKHLDhQMH82AdFpN2xgai8am8OpYX0WktoeZugiHyXhMK0xn7qcBPI5+o2Lv2syDHNrrPeH4QaQY6ku1DnSeDSbvsj4BEpSimbCY7wrcKzefmk6YlHHa/YfEOwh0eAp9EZnrnKdLa/zve7jpUaIitsRdZ0a/33ClZyqtr98+TT0rHF63F/eVdGzB6BPdiV3eQqZqc7uCP4sAM55jpFtt3DJaTo5lX4RSnzXRllyQ755enqzKlNgJv3Wk1sm0/+MSn54+Ldk9mTJpcxEJpoqYYPaouXD3Zg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jvpmb4XSfDT2J8qMyivqRYObXU0qaaetStJJKvGOazw=;
 b=Id+GuCKh+Rdbe+/OwjQ+hdEdlAACHcB0dXi3gCgdsCvLcV5jZxgvG5574r0O65UBPkdAVi3NydbdasZhBtJszlsgsvwX6ndNBN3ca/iLLg8/BZZpnZDqQWo39e1MbBKsvnhFCFDuBUsqXJR28hW25qUz/JtU5Pw7Ag4qKwWy7t4=
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=arm.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: a42372db3c062180
X-TessianGatewayMetadata: OuGdYVsPRxZOJlL614OvKUYTzFIq6oV7VCB0/IAPHM0Q0QOzjIPiukjGLE3fNgsziRCxefCADeKJ+1jtwo4JITUPGUhF6XyQin2OkaU8UafxTdIiuDOlGlXWcwbwP6OkRJmd0rvAK2pkhg4R49V5MfhXfqqrwe6i5GuHpnIiqWM=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=PcqEcqG6fAIp8hFL1zClFhvuLG7bSUB5XYYGmQGBFlTS8e5BNOY8H2g9E1WX5t+dU8Tj0G8biyUCCYUw5iLhxgnjVmAYoTFak112uCuwwntBnPPMVl09Zv7wl1pP5UOg0W+1iKCm8PK+eTz2Cj62+WUKKmWOyJtQj2OKm/t8QVJEMz1KMTt5luI0Bh8GME7VByCTzC4EPmOPfaGYQqqTxhweXy+QnQck24yNzrw5Akgy1Mz5gq4JYOv54Ep2XdNHgfZmJyHi1u85OnJYqTmGtgYH/3XRyNZ5iLPcmN/aBvmWeqxPFmvMxpLtfSdcBpO/UOgYjNYk8sbgY1FguBRzFg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jvpmb4XSfDT2J8qMyivqRYObXU0qaaetStJJKvGOazw=;
 b=h3pFos1VqdYUKNUF5nTS+Y3Dq9GrrIzuzjRk3z0M4XOGKUe5K25w/YkPdI4z18XMZrozC4qfG0KPI5T62m/Pa5HiHO0y205YLcVc1svRhzBn9szPCQ24hrpaubdz7Sq8/HvY05XCi/VUpIrMGJLqTmWiG+U7RipTC/NtJELc/k/IXJnas9WMJ43m++DuwMBb5F2e57Myrc2od9j3Qr2AuX3R5vHua5b3wj7QD1c2FuLG+EONYdU28IlHb9cDk0ZeTBvx/qZQdaWGX0xykvfBDvpNuNZqcVzRh5u0WN5bz+dORQVvC1C7IB56HEKyqfaJtaSWeZjz10mGIPSb7n/jQg==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jvpmb4XSfDT2J8qMyivqRYObXU0qaaetStJJKvGOazw=;
 b=Id+GuCKh+Rdbe+/OwjQ+hdEdlAACHcB0dXi3gCgdsCvLcV5jZxgvG5574r0O65UBPkdAVi3NydbdasZhBtJszlsgsvwX6ndNBN3ca/iLLg8/BZZpnZDqQWo39e1MbBKsvnhFCFDuBUsqXJR28hW25qUz/JtU5Pw7Ag4qKwWy7t4=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 07/10] xen/arm: ffa: Transmit RXTX buffers to the SPMC
Thread-Topic: [PATCH v2 07/10] xen/arm: ffa: Transmit RXTX buffers to the SPMC
Thread-Index: AQHbH6X5dqMp+H3mmUmu98Cla1V2hLKUdsMAgAE86oA=
Date: Thu, 24 Oct 2024 09:45:51 +0000
Message-ID: <CDDAEF0D-92C4-45A4-95C1-E775A26DB03A@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <f6037d0d077d793864ec10875dccf9e82a19e100.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44F5yXW5yb_+RgBrof7c3yRoMp3Jh2n3OkAVV2mND7c6QA@mail.gmail.com>
In-Reply-To:
 <CAHUa44F5yXW5yb_+RgBrof7c3yRoMp3Jh2n3OkAVV2mND7c6QA@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|DB9PR08MB7844:EE_|DU6PEPF0000B621:EE_|AS8PR08MB8085:EE_
X-MS-Office365-Filtering-Correlation-Id: 3b0b04df-af29-4270-5a82-08dcf410ad26
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|10070799003|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?SE44SmtvMFVOYXlMSFllblYyOWVoQU02VWxhdXh6ZzVvbHhuUWhqd3dMNlF2?=
 =?utf-8?B?OGFnTlV0ckRzLzRGMS9nUG16T3hrS2Q3NVZIUzFIWVJFNk4xTVNEMGhnUEdF?=
 =?utf-8?B?YVFacEU2MTNybnNjMzdWOU9XWEFHNUYxV0Rpby9mSGowTVRvRWxBa0VnYXVa?=
 =?utf-8?B?TzBKOHIyWXZERFR4eXQ3clFiRWhqT2IzS2JLWTRDUHFNTXRSMElza0lUVElt?=
 =?utf-8?B?Kzh3RklKNEhDQ2htcCtKQ1M2dll2QnVWbWtXRytMTEhGeXZrRW9adnQyOWxL?=
 =?utf-8?B?Vzh6TUtxWEs0amp1WFR0Q2ZSL3k0TjFXRnQ3Q1ZtcDFKVmJMRFlWaGJrQzhL?=
 =?utf-8?B?ZE14bkZJb0Zmdlc4ajZ6cjk5STE3MzFHZ2FaVXZSRkRUNDVwemdxOGREbEs1?=
 =?utf-8?B?cmRKMUtWMkZBQXc4QTJGVGQreTJhTnFaTXJLNDB3Y0xDbElOL0lmblIvbUFn?=
 =?utf-8?B?ZWFnYW51a1ZpRmR5MWFPSWdIU3h5Slplb3ZUTnB0ajlVSFJ1WXN1aTlxZzE1?=
 =?utf-8?B?RVZDbDdiWk1wekV4MWZMSGI4MzZNTDFLblIrOWJGekFjWHNNaG9IWmFLajA5?=
 =?utf-8?B?T0ZkVXI1dHdmb0tObU90TnB1Vi9tV3JRQmVaOS9CYUEwbThHSmxOekdReVps?=
 =?utf-8?B?dVo5RFhmNS9va1E0Y0R5eXkyUVhtdmtuUWNRVW9adFRPTzVtNm1oZkJRZmI5?=
 =?utf-8?B?dnU0cVM5WVNGKzVhWTRDcDh4RTB0c2tLQkhSNzJVRC9xWVBlSytBcitaZTJQ?=
 =?utf-8?B?TE9xYmJmalRieU03YkhXaGlTY3FxSW5CTFdzck96ZS9VRWpKa1ozWWxjaDh3?=
 =?utf-8?B?d0NlR1pNTjJJdENOeEl1aEl0NEhGME1XYm14dFl5UVlzMzYvQmJmTENSZ3NU?=
 =?utf-8?B?VGdJYkxkTlBTVXZ2bDY2ckVudytQUFh6ZHZ3c1dhdVZwcGQ4MDh2UTNzelBt?=
 =?utf-8?B?bXYwOFBrNzVIdForMGYxYWQvZXgxQ25NcjNybFhDcU5pa2U5akR1MGZlMlhC?=
 =?utf-8?B?cWM2Q2tUZzlrVVgzY2dCOHQvN2preHJMNERucHNWaTdaQWtWd0VjMlNxU2pS?=
 =?utf-8?B?OHNEcDZVQVo3ZWovMFRKYTVqYlBoaEVCK2V5TWFZaTNrRitzZ3NjeFRjTWlX?=
 =?utf-8?B?cGlhUFhXeEpGSEpPNGxWbnZZLzV5SUNTa1JCU2NXc0R6ZlpiWHZzMExwdkxX?=
 =?utf-8?B?ZjZIYlJTVjdzQ2dKR3luS3pkak5rZXRZN1JFTmZMcW1CQ0g5d1MvclRCd3NC?=
 =?utf-8?B?T1llMSs2Q25mVXRPdVQ1SnMxcjI2aHhIZ3pmQTI2Ym03cW9RR0RvZElkcmkz?=
 =?utf-8?B?anVMNm0weWQ1MnFBUnFRNjAyVVIrK1VleUQ3WmltZm1CNlc0dWdrRVVpQWl6?=
 =?utf-8?B?RHZGUWZSN0orZmVkK1IyYTE4UXlLNDlDQ3R0RngwaTQ5Yk5aaVBHaHNnWGFG?=
 =?utf-8?B?c1VJWXBkNjc0Rm5qSGVaaTdKOC9TSWZCK3dYYkhaNU5tT2Z3SVEycnJJK21I?=
 =?utf-8?B?bVZJRFQxQ25BNGlCVllVaEJMVXk3V0dhNkY4L21xS2NkZ0QvelpKVDYxYkZO?=
 =?utf-8?B?ZGtZRTZSdHpYckNYclpsMCtsc0NBbXRpQ2M0WjBaTUFuekoxZS95czhpUlRi?=
 =?utf-8?B?NEs3bjBEMnFrNmU0MEZlTXlIdmlFdTB1dkZXOUsvb1R5a29EWXFzdXBEUWE0?=
 =?utf-8?B?WDhkbUNiSEgweWRTTm5KSTFVbDhsREJlNzBIWTR6OXBhQVhlMWR0YzhSLzhR?=
 =?utf-8?B?a2Q0VlROZ2VKSXBEOGFRWGdZZ2ozUTZhSW4wbVRWTngxZjBkVEp5QTlDcmdk?=
 =?utf-8?Q?7bp8ooxaU3MNVUU4ZGBaldzZe1qHMBlsvYiGU=3D?=
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:(13230040)(366016)(1800799024)(10070799003)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <C6E8A21A72AE71469FDF75B4ECA422F6@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7844
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000B621.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	dd6e9604-4a0b-4114-6d07-08dcf410a5c4
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?YXQ2ZFM4S2RhRkk1RElTeUxXQ3NTUzJRUDNYSXNHYVBvTE9lcU5mb0xhRTEy?=
 =?utf-8?B?RGRGcGdyeC9DRFhnL2Juc2VGWWNvZ1BORGhJOHBIK3lHMmVwd2ZhNTN6SVFk?=
 =?utf-8?B?a0xpbVN2QmNNTnVMSmNNY1ExZkNLT2lzdnFub25XSUN0ejc2Z1JxY3pmRnZz?=
 =?utf-8?B?RjB2VUt6ckNCK2g0c1ZHdmpyZCtLeklKRnNJL1dPYWovbGlaQVBhOGVjdWpp?=
 =?utf-8?B?RTkxaDJqdUlPYnJlTjVYcjNLVFl5RjExUXBPakdrbDc4NXhSK1hOSDdOUG1x?=
 =?utf-8?B?b1hFbEpBTHNzc3p5Qm5XMG1GQy9wUWlaZWlhOE14R3k3cnpxN1JTSzc4bDdO?=
 =?utf-8?B?NEVFdVlOV0hyclZ3QUtPL1dMN2ozZUp4ZUFKbG1OcDRoTmhIQkxENi8yMU5U?=
 =?utf-8?B?eURaT2Nob1lRbm85THU3cTZQQ0R0OHFGMStlelFTZXBWQlJJY0tkeGZDK3Z5?=
 =?utf-8?B?M0t5NDIyeTY1K21BODJUdGF2S2w1R29TNDhEMDFWQUtMeElMcFpjTXJXTlIz?=
 =?utf-8?B?UUY3Uzh1cUtaV2RUYnJWTTUyREVzYm80Yjc5YW4wcUR3QUx5bC9IR1pUYTZZ?=
 =?utf-8?B?MnlNV2xJRTJpOGJFSHJHQ0h5NjVXTWpDYnNNS2RDd0dKQll5QmFsT0I5NUR2?=
 =?utf-8?B?a1UrYmxBM0d6Ym5GejR6dk05TFhvbzNLaWd3ZkVmV2NNbzBJdllyMFNGYm5I?=
 =?utf-8?B?ZFZJZk9sUmx5SXZyai8yMHB3WVlrRGk0cVJ4MndBajZKd3Y2ZlR0bzcwZGRW?=
 =?utf-8?B?OWl1cjlJaElmUmpnSzF1RUdoM2w5MUZyNERsbEJvZXZFWWdPVEdsSFBNUC9z?=
 =?utf-8?B?a0xLOG1DblZqZG45THRqOVM1bzFhQnNtOXJ3NHFzR1Y2eThJOVNlK0RReHpN?=
 =?utf-8?B?ZSt4R3N6NE9pSlpwVjlxQ3g2U2N1UGpXeXJmREhnV1dxT0UzM3ZNOUYwSHRL?=
 =?utf-8?B?MktTKzdxZ3IyNHJwTXlRZHRtek8rVzdGQ2pJNUpXc3k3Y1JmNnVJUkhYOVdB?=
 =?utf-8?B?NVZqSG9uaHNoYXM3M3NOS2VnVVp5d2RXenBuSHMyMHd1OURvY0VtcUY3YVpB?=
 =?utf-8?B?a01BOXQ2NUVzTVR6TTVNSWN0dDNqN1ZxZG9ybkpnMWxNT2hwWkhBOWd4NGxF?=
 =?utf-8?B?Mm9ENFYxZzJFMzJyc0tEYUV5U1JSeTZjVE5ZUGJrd2FaY1czd1NtVU9WTUE5?=
 =?utf-8?B?N1hXeGtSa2w0RUQrbkZ5RTJ4TE9KcXV5a0FvUEFRcHJsZWx6Q0ZMOVdDK3Jp?=
 =?utf-8?B?QUh2S1JjOUY1UDNLSFVsd3dhZU5oRDZjWXg3ZkI1MjhIeGE0akNVcXRtRldq?=
 =?utf-8?B?U0FKaEpibXlib3pxUTZoZEU1SkM1aGV5Y0l5SDQ0b2FhbnhreGxwbGloWDNL?=
 =?utf-8?B?WTByZUpWVFdpcERZb2xvZnhRRUptNWpudVNzdkdYMFFPTENVSW5HazdGYS9Y?=
 =?utf-8?B?V0gxeHptdEhpdnY4V2dQczBwUHhBVnpQR25XVVV5SzJkcWdZaTVZczAzMDFY?=
 =?utf-8?B?Y3BPNjRVQ0xYTHEyUmNEV1dGTnVKbUFCY0JHODJkVHNjRkozT2Y4WXNydHNp?=
 =?utf-8?B?bVFLbi92dTFNendTRTdZdVFCY0ExL3pCRlhld2FqdXdPWUt3RjBmalRXbi9H?=
 =?utf-8?B?SUY2Q2M1dkdXS1NCRm5qN3kyZHlIT2kzcU1ab0Vwb0F5WnVqdzNuMmZ4elpB?=
 =?utf-8?B?czZHU1JCbDZXL3daYW9jbFhLYjV2akNiaFpsL1FMS2pJNW8zUVNKOTRKeHhZ?=
 =?utf-8?B?bHJKMDVSM1FPaFFiMEJ6ZVcyZEtpc05EQjd6SmE0aGRQdFdNSmRmOFR3RTVE?=
 =?utf-8?B?Y1lxZk5hRGZyd0VYUndqRzVBbWhLMEk4aktNVWFiWmhrV0grc25VOUJZb05h?=
 =?utf-8?B?b2RSQzhDUHRFMGNkM29NUXVScTl0cUpyUmNsZFR0ZkFQSmc9PQ==?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 09:46:04.1237
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3b0b04df-af29-4270-5a82-08dcf410ad26
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:
	DU6PEPF0000B621.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8085

SGkgSmVucywNCg0KPiBPbiAyMyBPY3QgMjAyNCwgYXQgMTY6NTEsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gV2VkLCBPY3QgMTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
IDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+IHdyb3RlOg0KPj4gDQo+PiBXaGVuIGFuIFJYVFgg
YnVmZmVyIGlzIG1hcHBlZCBieSBhIFZNIHRyYW5zbWl0IGl0IHRvIHRoZSBTUE1DIHdoZW4gaXQN
Cj4+IHN1cHBvcnRzIFJYX0FDUVVJUkUuDQo+PiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoYXQsIHdl
IG11c3QgYWNxdWlyZSB0aGUgUlggYnVmZmVyIG9mIGEgVk0gZnJvbSB0aGUNCj4+IFNQTUMgd2hl
biB3ZSB3YW50IHRvIHVzZSBpdDoNCj4+IC0gY3JlYXRlIGEgZ2VuZXJpYyBhY3F1aXJlIGFuZCBy
ZWxlYXNlIGZ1bmN0aW9uIHRvIGdldCB0aGUgcnggYnVmZmVyIG9mDQo+PiAgYSBWTSB3aGljaCBn
ZXRzIGl0IGZyb20gdGhlIFNQTUMgd2hlbiBzdXBwb3J0ZWQNCj4+IC0gcmVuYW1lIHRoZSByeF9h
Y3F1aXJlIHRvIGh5cF9yeF9hY3F1aXJlIHRvIHJlbW92ZSBjb25mdXNpb24NCj4+IC0gcmV3b3Jr
IHRoZSByeF9sb2NrIHRvIG9ubHkgbG9jayBhY2Nlc3MgdG8gcnhfaXNfZnJlZSBhbmQgb25seSBh
bGxvdw0KPj4gIHVzYWdlIG9mIHRoZSByeCBidWZmZXIgdG8gb25lIHdobyBtYW5hZ2VkIHRvIGFj
cXVpcmUgaXQsIHRodXMgcmVtb3ZpbmcNCj4+ICB0aGUgdHJ5bG9jayBhbmQgcmV0dXJuaW5nIGJ1
c3kgaWYgcnhfaXNfZnJlZSBpcyBmYWxzZQ0KPj4gDQo+PiBBcyBwYXJ0IG9mIHRoaXMgY2hhbmdl
IG1vdmUgc29tZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiB0byBmZmFfcHJpdmF0ZQ0KPj4gZnJvbSBm
ZmFfc2htIGFzIHRob3NlIGFyZSBuZWVkIGZvciB0aGUgTUFQIGNhbGwgd2l0aCB0aGUgU1BNQy4N
Cj4+IA0KPj4gU2lnbmVkLW9mZi1ieTogQmVydHJhbmQgTWFycXVpcyA8YmVydHJhbmQubWFycXVp
c0Bhcm0uY29tPg0KPj4gLS0tDQo+PiBDaGFuZ2VzIGluIHYyOg0KPj4gLSB1bm1hcCBWTSByeHR4
IGJ1ZmZlciBpbiBTUE1DIG9uIHVubWFwIGNhbGwgb3Igb24gVk0gZGVzdHJveQ0KPj4gLSByZXdv
cmsgdGhlIHVubWFwIGNhbGwgdG8gdGhlIFNQTUMgdG8gcHJvcGVybHkgcGFzcyB0aGUgVk0gSUQN
Cj4+IC0tLQ0KPj4geGVuL2FyY2gvYXJtL3RlZS9mZmEuYyAgICAgICAgICB8ICAgMiArLQ0KPj4g
eGVuL2FyY2gvYXJtL3RlZS9mZmFfcGFydGluZm8uYyB8ICAyOSArKy0tLS0NCj4+IHhlbi9hcmNo
L2FybS90ZWUvZmZhX3ByaXZhdGUuaCAgfCAgMjIgKysrKy0NCj4+IHhlbi9hcmNoL2FybS90ZWUv
ZmZhX3J4dHguYyAgICAgfCAxNTggKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0NCj4+
IHhlbi9hcmNoL2FybS90ZWUvZmZhX3NobS5jICAgICAgfCAgMTUgLS0tDQo+PiA1IGZpbGVzIGNo
YW5nZWQsIDE2MSBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkNCj4+IA0KPj4gZGlmZiAt
LWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jDQo+
PiBpbmRleCBhMjkyMDAzY2E5ZmUuLjQwZWE1Mzk4ZmEyMSAxMDA2NDQNCj4+IC0tLSBhL3hlbi9h
cmNoL2FybS90ZWUvZmZhLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMNCj4+IEBA
IC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgZmZhX2hhbmRsZV9jYWxsKHN0cnVjdCBjcHVf
dXNlcl9yZWdzICpyZWdzKQ0KPj4gICAgICAgICBmZmFfaGFuZGxlX3BhcnRpdGlvbl9pbmZvX2dl
dChyZWdzKTsNCj4+ICAgICAgICAgcmV0dXJuIHRydWU7DQo+PiAgICAgY2FzZSBGRkFfUlhfUkVM
RUFTRToNCj4+IC0gICAgICAgIGUgPSBmZmFfaGFuZGxlX3J4X3JlbGVhc2UoKTsNCj4+ICsgICAg
ICAgIGUgPSBmZmFfcnhfcmVsZWFzZShkKTsNCj4+ICAgICAgICAgYnJlYWs7DQo+PiAgICAgY2Fz
ZSBGRkFfTVNHX1NFTkRfRElSRUNUX1JFUV8zMjoNCj4+ICAgICBjYXNlIEZGQV9NU0dfU0VORF9E
SVJFQ1RfUkVRXzY0Og0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX3BhcnRp
bmZvLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wYXJ0aW5mby5jDQo+PiBpbmRleCAzY2Y4MDE1
MjMyOTYuLmZkZTE4N2RiYTRlNSAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZh
X3BhcnRpbmZvLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX3BhcnRpbmZvLmMNCj4+
IEBAIC0xMjEsMTEgKzEyMSw5IEBAIHZvaWQgZmZhX2hhbmRsZV9wYXJ0aXRpb25faW5mb19nZXQo
c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiAgICAgICAgIGdvdG8gb3V0Ow0KPj4gICAg
IH0NCj4+IA0KPj4gLSAgICBpZiAoICFzcGluX3RyeWxvY2soJmN0eC0+cnhfbG9jaykgKQ0KPj4g
LSAgICB7DQo+PiAtICAgICAgICByZXQgPSBGRkFfUkVUX0JVU1k7DQo+PiArICAgIHJldCA9IGZm
YV9yeF9hY3F1aXJlKGQpOw0KPj4gKyAgICBpZiAoIHJldCAhPSBGRkFfUkVUX09LICkNCj4+ICAg
ICAgICAgZ290byBvdXQ7DQo+PiAtICAgIH0NCj4+IA0KPj4gICAgIGRzdF9idWYgPSBjdHgtPnJ4
Ow0KPj4gDQo+PiBAQCAtMTM1LDIyICsxMzMsMTYgQEAgdm9pZCBmZmFfaGFuZGxlX3BhcnRpdGlv
bl9pbmZvX2dldChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCj4+ICAgICAgICAgZ290byBv
dXRfcnhfcmVsZWFzZTsNCj4+ICAgICB9DQo+PiANCj4+IC0gICAgaWYgKCAhY3R4LT5wYWdlX2Nv
dW50IHx8ICFjdHgtPnJ4X2lzX2ZyZWUgKQ0KPj4gLSAgICB7DQo+PiAtICAgICAgICByZXQgPSBG
RkFfUkVUX0RFTklFRDsNCj4+IC0gICAgICAgIGdvdG8gb3V0X3J4X3JlbGVhc2U7DQo+PiAtICAg
IH0NCj4+IC0NCj4+ICAgICBzcGluX2xvY2soJmZmYV9yeF9idWZmZXJfbG9jayk7DQo+PiANCj4+
ICAgICByZXQgPSBmZmFfcGFydGl0aW9uX2luZm9fZ2V0KHV1aWQsIDAsICZmZmFfc3BfY291bnQs
ICZzcmNfc2l6ZSk7DQo+PiANCj4+ICAgICBpZiAoIHJldCApDQo+PiAtICAgICAgICBnb3RvIG91
dF9yeF9idWZfdW5sb2NrOw0KPj4gKyAgICAgICAgZ290byBvdXRfcnhfaHlwX3VubG9jazsNCj4+
IA0KPj4gICAgIC8qDQo+PiAgICAgICogZmZhX3BhcnRpdGlvbl9pbmZvX2dldCgpIHN1Y2NlZWRl
ZCBzbyB3ZSBub3cgb3duIHRoZSBSWCBidWZmZXIgd2UNCj4+IC0gICAgICogc2hhcmUgd2l0aCB0
aGUgU1BNQy4gV2UgbXVzdCBnaXZlIGl0IGJhY2sgdXNpbmcgZmZhX3J4X3JlbGVhc2UoKQ0KPj4g
KyAgICAgKiBzaGFyZSB3aXRoIHRoZSBTUE1DLiBXZSBtdXN0IGdpdmUgaXQgYmFjayB1c2luZyBm
ZmFfaHlwX3J4X3JlbGVhc2UoKQ0KPj4gICAgICAqIG9uY2Ugd2UndmUgY29waWVkIHRoZSBjb250
ZW50Lg0KPj4gICAgICAqLw0KPj4gDQo+PiBAQCAtMTkzLDE1ICsxODUsMTMgQEAgdm9pZCBmZmFf
aGFuZGxlX3BhcnRpdGlvbl9pbmZvX2dldChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCj4+
ICAgICAgICAgfQ0KPj4gICAgIH0NCj4+IA0KPj4gLSAgICBjdHgtPnJ4X2lzX2ZyZWUgPSBmYWxz
ZTsNCj4+IC0NCj4+IG91dF9yeF9oeXBfcmVsZWFzZToNCj4+IC0gICAgZmZhX3J4X3JlbGVhc2Uo
KTsNCj4+IC1vdXRfcnhfYnVmX3VubG9jazoNCj4+ICsgICAgZmZhX2h5cF9yeF9yZWxlYXNlKCk7
DQo+PiArb3V0X3J4X2h5cF91bmxvY2s6DQo+PiAgICAgc3Bpbl91bmxvY2soJmZmYV9yeF9idWZm
ZXJfbG9jayk7DQo+PiBvdXRfcnhfcmVsZWFzZToNCj4+IC0gICAgc3Bpbl91bmxvY2soJmN0eC0+
cnhfbG9jayk7DQo+PiAtDQo+PiArICAgIGlmICggcmV0ICE9IEZGQV9SRVRfT0sgKQ0KPj4gKyAg
ICAgICAgZmZhX3J4X3JlbGVhc2UoZCk7DQo+IA0KPiBQbGVhc2UgY29tbWVudCBvbiB3aHkgZmZh
X3J4X3JlbGVhc2UoKSBtdXN0IG9ubHkgYmUgY2FsbGVkIG9uIGZhaWx1cmUuDQoNCkl0IGlzIGJl
Y2F1c2UgdGhlIGJ1ZmZlciBjb250YWlucyBkYXRhIGZvciB0aGUgY2FsbGVyIGluIGNhc2Ugb2Yg
c3VjY2VzcyBzbw0KaXQgbXVzdCBiZSByZWxlYXNlZCBieSB0aGUgY2FsbGVyLg0KDQpEbyBpIGdl
dCBpdCByaWdodCB0aGF0IHlvdSB3YW50IG1lIHRvIGFkZCBhIGNvbW1lbnQgc2F5aW5nIHRoYXQg
aW4gdGhlIGNvZGUNCmFuZCBub3Qgb25seSB0ZWxsIHlvdSBoZXJlID8NCg0KPiANCj4+IG91dDoN
Cj4+ICAgICBpZiAoIHJldCApDQo+PiAgICAgICAgIGZmYV9zZXRfcmVnc19lcnJvcihyZWdzLCBy
ZXQpOw0KPj4gQEAgLTM2OCw4ICszNTgsNyBAQCBib29sIGZmYV9wYXJ0aW5mb19pbml0KHZvaWQp
DQo+PiAgICAgcmV0ID0gaW5pdF9zdWJzY3JpYmVycyhjb3VudCwgZnBpX3NpemUpOw0KPj4gDQo+
PiBvdXQ6DQo+PiAtICAgIGZmYV9yeF9yZWxlYXNlKCk7DQo+PiAtDQo+PiArICAgIGZmYV9oeXBf
cnhfcmVsZWFzZSgpOw0KPj4gICAgIHJldHVybiByZXQ7DQo+PiB9DQo+PiANCj4+IGRpZmYgLS1n
aXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmggYi94ZW4vYXJjaC9hcm0vdGVlL2Zm
YV9wcml2YXRlLmgNCj4+IGluZGV4IGFmZTY5YjQzZGJlZi4uOWFkZmU2ODdjM2M5IDEwMDY0NA0K
Pj4gLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9mZmFfcHJpdmF0ZS5oDQo+PiArKysgYi94ZW4vYXJj
aC9hcm0vdGVlL2ZmYV9wcml2YXRlLmgNCj4+IEBAIC0yNjUsNiArMjY1LDIxIEBADQo+PiAjZGVm
aW5lIEZGQV9BQklfQklUTlVNKGlkKSAgICAoKEZGQV9BQklfSUQoaWQpIC0gRkZBX0FCSV9NSU4p
IDw8IDEgfCBcDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkZBX0FCSV9DT05W
KGlkKSkNCj4+IA0KPj4gKy8qIENvbnN0aXR1ZW50IG1lbW9yeSByZWdpb24gZGVzY3JpcHRvciAq
Lw0KPj4gK3N0cnVjdCBmZmFfYWRkcmVzc19yYW5nZSB7DQo+PiArICAgIHVpbnQ2NF90IGFkZHJl
c3M7DQo+PiArICAgIHVpbnQzMl90IHBhZ2VfY291bnQ7DQo+PiArICAgIHVpbnQzMl90IHJlc2Vy
dmVkOw0KPj4gK307DQo+PiArDQo+PiArLyogQ29tcG9zaXRlIG1lbW9yeSByZWdpb24gZGVzY3Jp
cHRvciAqLw0KPj4gK3N0cnVjdCBmZmFfbWVtX3JlZ2lvbiB7DQo+PiArICAgIHVpbnQzMl90IHRv
dGFsX3BhZ2VfY291bnQ7DQo+PiArICAgIHVpbnQzMl90IGFkZHJlc3NfcmFuZ2VfY291bnQ7DQo+
PiArICAgIHVpbnQ2NF90IHJlc2VydmVkOw0KPj4gKyAgICBzdHJ1Y3QgZmZhX2FkZHJlc3NfcmFu
Z2UgYWRkcmVzc19yYW5nZV9hcnJheVtdOw0KPj4gK307DQo+PiArDQo+PiBzdHJ1Y3QgZmZhX2N0
eF9ub3RpZiB7DQo+PiAgICAgYm9vbCBlbmFibGVkOw0KPj4gDQo+PiBAQCAtMjkyLDcgKzMwNyw3
IEBAIHN0cnVjdCBmZmFfY3R4IHsNCj4+ICAgICBzdHJ1Y3QgZmZhX2N0eF9ub3RpZiBub3RpZjsN
Cj4+ICAgICAvKg0KPj4gICAgICAqIHR4X2xvY2sgaXMgdXNlZCB0byBzZXJpYWxpemUgYWNjZXNz
IHRvIHR4DQo+PiAtICAgICAqIHJ4X2xvY2sgaXMgdXNlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRv
IHJ4DQo+PiArICAgICAqIHJ4X2xvY2sgaXMgdXNlZCB0byBzZXJpYWxpemUgYWNjZXNzIHRvIHJ4
X2lzX2ZyZWUNCj4+ICAgICAgKiBsb2NrIGlzIHVzZWQgZm9yIHRoZSByZXN0IGluIHRoaXMgc3Ry
dWN0DQo+PiAgICAgICovDQo+PiAgICAgc3BpbmxvY2tfdCB0eF9sb2NrOw0KPj4gQEAgLTMzMSw3
ICszNDYsOCBAQCB2b2lkIGZmYV9yeHR4X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQp
Ow0KPj4gdWludDMyX3QgZmZhX2hhbmRsZV9yeHR4X21hcCh1aW50MzJfdCBmaWQsIHJlZ2lzdGVy
X3QgdHhfYWRkciwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl90IHJ4
X2FkZHIsIHVpbnQzMl90IHBhZ2VfY291bnQpOw0KPj4gdWludDMyX3QgZmZhX2hhbmRsZV9yeHR4
X3VubWFwKHZvaWQpOw0KPj4gLWludDMyX3QgZmZhX2hhbmRsZV9yeF9yZWxlYXNlKHZvaWQpOw0K
Pj4gK2ludDMyX3QgZmZhX3J4X2FjcXVpcmUoc3RydWN0IGRvbWFpbiAqZCk7DQo+PiAraW50MzJf
dCBmZmFfcnhfcmVsZWFzZShzdHJ1Y3QgZG9tYWluICpkKTsNCj4+IA0KPj4gdm9pZCBmZmFfbm90
aWZfaW5pdCh2b2lkKTsNCj4+IHZvaWQgZmZhX25vdGlmX2luaXRfaW50ZXJydXB0KHZvaWQpOw0K
Pj4gQEAgLTQyMCw3ICs0MzYsNyBAQCBzdGF0aWMgaW5saW5lIGludDMyX3QgZmZhX3NpbXBsZV9j
YWxsKHVpbnQzMl90IGZpZCwgcmVnaXN0ZXJfdCBhMSwNCj4+ICAgICByZXR1cm4gZmZhX2dldF9y
ZXRfY29kZSgmcmVzcCk7DQo+PiB9DQo+PiANCj4+IC1zdGF0aWMgaW5saW5lIGludDMyX3QgZmZh
X3J4X3JlbGVhc2Uodm9pZCkNCj4+ICtzdGF0aWMgaW5saW5lIGludDMyX3QgZmZhX2h5cF9yeF9y
ZWxlYXNlKHZvaWQpDQo+PiB7DQo+PiAgICAgcmV0dXJuIGZmYV9zaW1wbGVfY2FsbChGRkFfUlhf
UkVMRUFTRSwgMCwgMCwgMCwgMCk7DQo+PiB9DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJt
L3RlZS9mZmFfcnh0eC5jIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfcnh0eC5jDQo+PiBpbmRleCBi
NjkzMWM4NTU3NzkuLmE1ZDQzZTUxZjg0MyAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90
ZWUvZmZhX3J4dHguYw0KPj4gKysrIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfcnh0eC5jDQo+PiBA
QCAtMzAsNiArMzAsMTcgQEAgc3RydWN0IGZmYV9lbmRwb2ludF9yeHR4X2Rlc2NyaXB0b3JfMV8x
IHsNCj4+ICAgICB1aW50MzJfdCB0eF9yZWdpb25fb2ZmczsNCj4+IH07DQo+PiANCj4+ICtzdGF0
aWMgaW50MzJfdCBmZmFfcnh0eF9tYXAocGFkZHJfdCB0eF9hZGRyLCBwYWRkcl90IHJ4X2FkZHIs
DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHBhZ2VfY291bnQpDQo+
PiArew0KPj4gKyAgICByZXR1cm4gZmZhX3NpbXBsZV9jYWxsKEZGQV9SWFRYX01BUF82NCwgdHhf
YWRkciwgcnhfYWRkciwgcGFnZV9jb3VudCwgMCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp
bnQzMl90IGZmYV9yeHR4X3VubWFwKHVpbnQxNl90IGlkKQ0KPj4gK3sNCj4+ICsgICAgcmV0dXJu
IGZmYV9zaW1wbGVfY2FsbChGRkFfUlhUWF9VTk1BUCwgKCh1aW50NjRfdClpZCk8PDE2LCAwLCAw
LCAwKTsNCj4+ICt9DQo+PiArDQo+PiB1aW50MzJfdCBmZmFfaGFuZGxlX3J4dHhfbWFwKHVpbnQz
Ml90IGZpZCwgcmVnaXN0ZXJfdCB0eF9hZGRyLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyX3QgcnhfYWRkciwgdWludDMyX3QgcGFnZV9jb3VudCkNCj4+IHsNCj4+IEBA
IC00Miw2ICs1Myw5IEBAIHVpbnQzMl90IGZmYV9oYW5kbGVfcnh0eF9tYXAodWludDMyX3QgZmlk
LCByZWdpc3Rlcl90IHR4X2FkZHIsDQo+PiAgICAgdm9pZCAqcng7DQo+PiAgICAgdm9pZCAqdHg7
DQo+PiANCj4+ICsgICAgLyogVGhlIGNvZGUgaXMgY29uc2lkZXJpbmcgdGhhdCB3ZSBvbmx5IGdl
dCBvbmUgcGFnZSBmb3Igbm93ICovDQo+PiArICAgIEJVSUxEX0JVR19PTihGRkFfTUFYX1JYVFhf
UEFHRV9DT1VOVCAhPSAxKTsNCj4+ICsNCj4+ICAgICBpZiAoICFzbWNjY19pc19jb252XzY0KGZp
ZCkgKQ0KPj4gICAgIHsNCj4+ICAgICAgICAgLyoNCj4+IEBAIC04Nyw2ICsxMDEsNjUgQEAgdWlu
dDMyX3QgZmZhX2hhbmRsZV9yeHR4X21hcCh1aW50MzJfdCBmaWQsIHJlZ2lzdGVyX3QgdHhfYWRk
ciwNCj4+ICAgICBpZiAoICFyeCApDQo+PiAgICAgICAgIGdvdG8gZXJyX3VubWFwX3R4Ow0KPj4g
DQo+PiArICAgIC8qDQo+PiArICAgICAqIFRyYW5zbWl0IHRoZSBSWC9UWCBidWZmZXIgaW5mb3Jt
YXRpb24gdG8gdGhlIFNQTSBpZiBhY3F1aXJlIGlzIHN1cHBvcnRlZA0KPj4gKyAgICAgKiBhcyB0
aGUgc3BlYyBzYXlzIHRoYXQgaWYgbm90IHRoZXJlIGlzIG5vdCBuZWVkIHRvIGFjcXVpcmUvcmVs
ZWFzZS9tYXANCj4+ICsgICAgICogcnh0eCBidWZmZXJzIGZyb20gdGhlIFNQTUMNCj4+ICsgICAg
ICovDQo+PiArICAgIGlmICggZmZhX2Z3X3N1cHBvcnRzX2ZpZChGRkFfUlhfQUNRVUlSRSkgKQ0K
Pj4gKyAgICB7DQo+PiArICAgICAgICBzdHJ1Y3QgZmZhX2VuZHBvaW50X3J4dHhfZGVzY3JpcHRv
cl8xXzEgKnJ4dHhfZGVzYzsNCj4+ICsgICAgICAgIHN0cnVjdCBmZmFfbWVtX3JlZ2lvbiAqbWVt
X3JlZzsNCj4+ICsNCj4+ICsgICAgICAgIC8qIEFsbCBtdXN0IGZpdCBpbiBvdXIgVFggYnVmZmVy
ICovDQo+PiArICAgICAgICBCVUlMRF9CVUdfT04oKHNpemVvZigqcnh0eF9kZXNjKSArIHNpemVv
ZigqbWVtX3JlZykqMiArDQo+PiArICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qg
ZmZhX2FkZHJlc3NfcmFuZ2UpKjIpID4gRkZBX1BBR0VfU0laRSk7DQo+IA0KPiBQbGVhc2UgYWRk
IHNwYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGJpbmFyeSBvcGVyYXRvciAiKiIuDQpBY2sNCg0K
PiBUaGUgc2l6ZSBvZiB0aGUgVFggYnVmZmVyIGlzIEZGQV9SWFRYX1BBR0VfQ09VTlQgKiBGRkFf
UEFHRV9TSVpFLg0KVmVyeSByaWdodCwgSSB3aWxsIGZpeCB0aGF0IGluIHYzLg0KDQo+IE5pdDog
dGhlIG91dGVyIHBhcmVudGhlc2lzIGFyb3VuZCB0aGUgbGVmdCBleHByZXNzaW9uIGFyZW4ndCBu
ZWVkZWQuDQpBY2sNCg0KPiANCj4+ICsNCj4+ICsgICAgICAgIHNwaW5fbG9jaygmZmZhX3R4X2J1
ZmZlcl9sb2NrKTsNCj4+ICsgICAgICAgIHJ4dHhfZGVzYyA9IGZmYV90eDsNCj4+ICsNCj4+ICsg
ICAgICAgIC8qDQo+PiArICAgICAgICAgKiBXZSBoYXZlIG9ubHkgb25lIHBhZ2UgZm9yIGVhY2gg
c28gd2UgcGFjayBldmVyeXRoaW5nOg0KPj4gKyAgICAgICAgICogLSByeCByZWdpb24gZGVzY3Jp
cHRvcg0KPj4gKyAgICAgICAgICogLSByeCByZWdpb24gcmFuZ2UNCj4+ICsgICAgICAgICAqIC0g
dHggcmVnaW9uIGRlc2NyaXB0b3INCj4+ICsgICAgICAgICAqIC0gdHggcmVnaW9uIHJhbmdlDQo+
PiArICAgICAgICAgKi8NCj4+ICsgICAgICAgIHJ4dHhfZGVzYy0+c2VuZGVyX2lkID0gZmZhX2dl
dF92bV9pZChkKTsNCj4+ICsgICAgICAgIHJ4dHhfZGVzYy0+cmVzZXJ2ZWQgPSAwOw0KPj4gKyAg
ICAgICAgcnh0eF9kZXNjLT5yeF9yZWdpb25fb2ZmcyA9IHNpemVvZigqcnh0eF9kZXNjKTsNCj4+
ICsgICAgICAgIHJ4dHhfZGVzYy0+dHhfcmVnaW9uX29mZnMgPSBzaXplb2YoKnJ4dHhfZGVzYykg
Kw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHN0cnVj
dCBmZmFfbWVtX3JlZ2lvbiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRyZXNzX3JhbmdlX2FycmF5WzFdKTsNCj4+ICsNCj4+ICsgICAgICAgIC8q
IHJ4IGJ1ZmZlciAqLw0KPj4gKyAgICAgICAgbWVtX3JlZyA9IGZmYV90eCArIHNpemVvZigqcnh0
eF9kZXNjKTsNCj4+ICsgICAgICAgIG1lbV9yZWctPnRvdGFsX3BhZ2VfY291bnQgPSAxOw0KPj4g
KyAgICAgICAgbWVtX3JlZy0+YWRkcmVzc19yYW5nZV9jb3VudCA9IDE7DQo+PiArICAgICAgICBt
ZW1fcmVnLT5yZXNlcnZlZCA9IDA7DQo+PiArDQo+PiArICAgICAgICBtZW1fcmVnLT5hZGRyZXNz
X3JhbmdlX2FycmF5WzBdLmFkZHJlc3MgPSBwYWdlX3RvX21hZGRyKHJ4X3BnKTsNCj4+ICsgICAg
ICAgIG1lbV9yZWctPmFkZHJlc3NfcmFuZ2VfYXJyYXlbMF0ucGFnZV9jb3VudCA9IDE7DQo+PiAr
ICAgICAgICBtZW1fcmVnLT5hZGRyZXNzX3JhbmdlX2FycmF5WzBdLnJlc2VydmVkID0gMDsNCj4+
ICsNCj4+ICsgICAgICAgIC8qIHR4IGJ1ZmZlciAqLw0KPj4gKyAgICAgICAgbWVtX3JlZyA9IGZm
YV90eCArIHJ4dHhfZGVzYy0+dHhfcmVnaW9uX29mZnM7DQo+PiArICAgICAgICBtZW1fcmVnLT50
b3RhbF9wYWdlX2NvdW50ID0gMTsNCj4+ICsgICAgICAgIG1lbV9yZWctPmFkZHJlc3NfcmFuZ2Vf
Y291bnQgPSAxOw0KPj4gKyAgICAgICAgbWVtX3JlZy0+cmVzZXJ2ZWQgPSAwOw0KPj4gKw0KPj4g
KyAgICAgICAgbWVtX3JlZy0+YWRkcmVzc19yYW5nZV9hcnJheVswXS5hZGRyZXNzID0gcGFnZV90
b19tYWRkcih0eF9wZyk7DQo+PiArICAgICAgICBtZW1fcmVnLT5hZGRyZXNzX3JhbmdlX2FycmF5
WzBdLnBhZ2VfY291bnQgPSAxOw0KPj4gKyAgICAgICAgbWVtX3JlZy0+YWRkcmVzc19yYW5nZV9h
cnJheVswXS5yZXNlcnZlZCA9IDA7DQo+PiArDQo+PiArICAgICAgICByZXQgPSBmZmFfcnh0eF9t
YXAoMCwgMCwgMSk7DQo+IA0KPiBUaGUgbGFzdCBwYXJhbWV0ZXIgaXMgYWxzbyBNQlogd2hlbiBm
b3J3YXJkaW5nIG9uIGJlaGFsZiBvZiBhbiBlbmRwb2ludC4NCg0KQWNrLCB3aWxsIGZpeCBpbiB2
My4NCg0KQ2hlZXJzDQpCZXJ0cmFuZA0KDQo+IA0KPiBDaGVlcnMsDQo+IEplbnMNCj4gDQo+PiAr
DQo+PiArICAgICAgICBzcGluX3VubG9jaygmZmZhX3R4X2J1ZmZlcl9sb2NrKTsNCj4+ICsNCj4+
ICsgICAgICAgIGlmICggcmV0ICE9IEZGQV9SRVRfT0sgKQ0KPj4gKyAgICAgICAgICAgIGdvdG8g
ZXJyX3VubWFwX3J4Ow0KPj4gKyAgICB9DQo+PiArDQo+PiAgICAgY3R4LT5yeCA9IHJ4Ow0KPj4g
ICAgIGN0eC0+dHggPSB0eDsNCj4+ICAgICBjdHgtPnJ4X3BnID0gcnhfcGc7DQo+PiBAQCAtOTUs
NiArMTY4LDggQEAgdWludDMyX3QgZmZhX2hhbmRsZV9yeHR4X21hcCh1aW50MzJfdCBmaWQsIHJl
Z2lzdGVyX3QgdHhfYWRkciwNCj4+ICAgICBjdHgtPnJ4X2lzX2ZyZWUgPSB0cnVlOw0KPj4gICAg
IHJldHVybiBGRkFfUkVUX09LOw0KPj4gDQo+PiArZXJyX3VubWFwX3J4Og0KPj4gKyAgICB1bm1h
cF9kb21haW5fcGFnZV9nbG9iYWwocngpOw0KPj4gZXJyX3VubWFwX3R4Og0KPj4gICAgIHVubWFw
X2RvbWFpbl9wYWdlX2dsb2JhbCh0eCk7DQo+PiBlcnJfcHV0X3J4X3BnOg0KPj4gQEAgLTEwNSw4
ICsxODAsMjIgQEAgZXJyX3B1dF90eF9wZzoNCj4+ICAgICByZXR1cm4gcmV0Ow0KPj4gfQ0KPj4g
DQo+PiAtc3RhdGljIHZvaWQgcnh0eF91bm1hcChzdHJ1Y3QgZmZhX2N0eCAqY3R4KQ0KPj4gK3N0
YXRpYyB1aW50MzJfdCAgcnh0eF91bm1hcChzdHJ1Y3QgZG9tYWluICpkKQ0KPj4gew0KPj4gKyAg
ICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+PiArDQo+PiArICAgIGlmICgg
IWN0eC0+cGFnZV9jb3VudCApDQo+PiArICAgICAgICByZXR1cm4gRkZBX1JFVF9JTlZBTElEX1BB
UkFNRVRFUlM7DQo+PiArDQo+PiArICAgIGlmICggZmZhX2Z3X3N1cHBvcnRzX2ZpZChGRkFfUlhf
QUNRVUlSRSkgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICB1aW50MzJfdCByZXQ7DQo+PiArDQo+
PiArICAgICAgICByZXQgPSBmZmFfcnh0eF91bm1hcChmZmFfZ2V0X3ZtX2lkKGQpKTsNCj4+ICsg
ICAgICAgIGlmICggcmV0ICE9IEZGQV9SRVRfT0sgKQ0KPj4gKyAgICAgICAgICAgIHJldHVybiBy
ZXQ7DQo+PiArICAgIH0NCj4+ICsNCj4+ICAgICB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoY3R4
LT5yeCk7DQo+PiAgICAgdW5tYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKGN0eC0+dHgpOw0KPj4gICAg
IHB1dF9wYWdlKGN0eC0+cnhfcGcpOw0KPj4gQEAgLTExNywzMiArMjA2LDYzIEBAIHN0YXRpYyB2
b2lkIHJ4dHhfdW5tYXAoc3RydWN0IGZmYV9jdHggKmN0eCkNCj4+ICAgICBjdHgtPnR4X3BnID0g
TlVMTDsNCj4+ICAgICBjdHgtPnBhZ2VfY291bnQgPSAwOw0KPj4gICAgIGN0eC0+cnhfaXNfZnJl
ZSA9IGZhbHNlOw0KPj4gKw0KPj4gKyAgICByZXR1cm4gRkZBX1JFVF9PSzsNCj4+IH0NCj4+IA0K
Pj4gdWludDMyX3QgZmZhX2hhbmRsZV9yeHR4X3VubWFwKHZvaWQpDQo+PiB7DQo+PiAtICAgIHN0
cnVjdCBkb21haW4gKmQgPSBjdXJyZW50LT5kb21haW47DQo+PiArICAgIHJldHVybiByeHR4X3Vu
bWFwKGN1cnJlbnQtPmRvbWFpbik7DQo+PiArfQ0KPj4gKw0KPj4gK2ludDMyX3QgZmZhX3J4X2Fj
cXVpcmUoc3RydWN0IGRvbWFpbiAqZCkNCj4+ICt7DQo+PiArICAgIGludDMyX3QgcmV0ID0gRkZB
X1JFVF9PSzsNCj4+ICAgICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+PiAN
Cj4+IC0gICAgaWYgKCAhY3R4LT5yeCApDQo+PiAtICAgICAgICByZXR1cm4gRkZBX1JFVF9JTlZB
TElEX1BBUkFNRVRFUlM7DQo+PiArICAgIHNwaW5fbG9jaygmY3R4LT5yeF9sb2NrKTsNCj4+IA0K
Pj4gLSAgICByeHR4X3VubWFwKGN0eCk7DQo+PiArICAgIGlmICggIWN0eC0+cGFnZV9jb3VudCAp
DQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJldCA9IEZGQV9SRVRfREVOSUVEOw0KPj4gKyAgICAg
ICAgZ290byBvdXQ7DQo+PiArICAgIH0NCj4+IA0KPj4gLSAgICByZXR1cm4gRkZBX1JFVF9PSzsN
Cj4+ICsgICAgaWYgKCAhY3R4LT5yeF9pc19mcmVlICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAg
cmV0ID0gRkZBX1JFVF9CVVNZOw0KPj4gKyAgICAgICAgZ290byBvdXQ7DQo+PiArICAgIH0NCj4+
ICsNCj4+ICsgICAgaWYgKCBmZmFfZndfc3VwcG9ydHNfZmlkKEZGQV9SWF9BQ1FVSVJFKSApDQo+
PiArICAgIHsNCj4+ICsgICAgICAgIHJldCA9IGZmYV9zaW1wbGVfY2FsbChGRkFfUlhfQUNRVUlS
RSwgZmZhX2dldF92bV9pZChkKSwgMCwgMCwgMCk7DQo+PiArICAgICAgICBpZiAoIHJldCAhPSBG
RkFfUkVUX09LICkNCj4+ICsgICAgICAgICAgICBnb3RvIG91dDsNCj4+ICsgICAgfQ0KPj4gKyAg
ICBjdHgtPnJ4X2lzX2ZyZWUgPSBmYWxzZTsNCj4+ICtvdXQ6DQo+PiArICAgIHNwaW5fdW5sb2Nr
KCZjdHgtPnJ4X2xvY2spOw0KPj4gKw0KPj4gKyAgICByZXR1cm4gcmV0Ow0KPj4gfQ0KPj4gDQo+
PiAtaW50MzJfdCBmZmFfaGFuZGxlX3J4X3JlbGVhc2Uodm9pZCkNCj4+ICtpbnQzMl90IGZmYV9y
eF9yZWxlYXNlKHN0cnVjdCBkb21haW4gKmQpDQo+PiB7DQo+PiAgICAgaW50MzJfdCByZXQgPSBG
RkFfUkVUX0RFTklFRDsNCj4+IC0gICAgc3RydWN0IGRvbWFpbiAqZCA9IGN1cnJlbnQtPmRvbWFp
bjsNCj4+ICAgICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+PiANCj4+IC0g
ICAgaWYgKCAhc3Bpbl90cnlsb2NrKCZjdHgtPnJ4X2xvY2spICkNCj4+IC0gICAgICAgIHJldHVy
biBGRkFfUkVUX0JVU1k7DQo+PiArICAgIHNwaW5fbG9jaygmY3R4LT5yeF9sb2NrKTsNCj4+IA0K
Pj4gICAgIGlmICggIWN0eC0+cGFnZV9jb3VudCB8fCBjdHgtPnJ4X2lzX2ZyZWUgKQ0KPj4gICAg
ICAgICBnb3RvIG91dDsNCj4+ICsNCj4+ICsgICAgaWYgKCBmZmFfZndfc3VwcG9ydHNfZmlkKEZG
QV9SWF9BQ1FVSVJFKSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJldCA9IGZmYV9zaW1wbGVf
Y2FsbChGRkFfUlhfUkVMRUFTRSwgZmZhX2dldF92bV9pZChkKSwgMCwgMCwgMCk7DQo+PiArICAg
ICAgICBpZiAoIHJldCAhPSBGRkFfUkVUX09LICkNCj4+ICsgICAgICAgICAgICBnb3RvIG91dDsN
Cj4+ICsgICAgfQ0KPj4gICAgIHJldCA9IEZGQV9SRVRfT0s7DQo+PiAgICAgY3R4LT5yeF9pc19m
cmVlID0gdHJ1ZTsNCj4+IG91dDoNCj4+IEBAIC0xNTEsMjMgKzI3MSw5IEBAIG91dDoNCj4+ICAg
ICByZXR1cm4gcmV0Ow0KPj4gfQ0KPj4gDQo+PiAtc3RhdGljIGludDMyX3QgZmZhX3J4dHhfbWFw
KHBhZGRyX3QgdHhfYWRkciwgcGFkZHJfdCByeF9hZGRyLA0KPj4gLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1aW50MzJfdCBwYWdlX2NvdW50KQ0KPj4gLXsNCj4+IC0gICAgcmV0dXJuIGZm
YV9zaW1wbGVfY2FsbChGRkFfUlhUWF9NQVBfNjQsIHR4X2FkZHIsIHJ4X2FkZHIsIHBhZ2VfY291
bnQsIDApOw0KPj4gLX0NCj4+IC0NCj4+IC1zdGF0aWMgaW50MzJfdCBmZmFfcnh0eF91bm1hcCh2
b2lkKQ0KPj4gLXsNCj4+IC0gICAgcmV0dXJuIGZmYV9zaW1wbGVfY2FsbChGRkFfUlhUWF9VTk1B
UCwgMCwgMCwgMCwgMCk7DQo+PiAtfQ0KPj4gLQ0KPj4gdm9pZCBmZmFfcnh0eF9kb21haW5fZGVz
dHJveShzdHJ1Y3QgZG9tYWluICpkKQ0KPj4gew0KPj4gLSAgICBzdHJ1Y3QgZmZhX2N0eCAqY3R4
ID0gZC0+YXJjaC50ZWU7DQo+PiAtDQo+PiAtICAgIGlmICggY3R4LT5yeCApDQo+PiAtICAgICAg
ICByeHR4X3VubWFwKGN0eCk7DQo+PiArICAgIHJ4dHhfdW5tYXAoZCk7DQo+PiB9DQo+PiANCj4+
IHZvaWQgZmZhX3J4dHhfZGVzdHJveSh2b2lkKQ0KPj4gQEAgLTE4Niw3ICsyOTIsNyBAQCB2b2lk
IGZmYV9yeHR4X2Rlc3Ryb3kodm9pZCkNCj4+ICAgICB9DQo+PiANCj4+ICAgICBpZiAoIG5lZWRf
dW5tYXAgKQ0KPj4gLSAgICAgICAgZmZhX3J4dHhfdW5tYXAoKTsNCj4+ICsgICAgICAgIGZmYV9y
eHR4X3VubWFwKDApOw0KPj4gfQ0KPj4gDQo+PiBib29sIGZmYV9yeHR4X2luaXQodm9pZCkNCj4+
IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9zaG0uYyBiL3hlbi9hcmNoL2FybS90
ZWUvZmZhX3NobS5jDQo+PiBpbmRleCAyOTY3NWY5YmEzZjcuLmQ2MjhjMWI3MDYwOSAxMDA2NDQN
Cj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX3NobS5jDQo+PiArKysgYi94ZW4vYXJjaC9h
cm0vdGVlL2ZmYV9zaG0uYw0KPj4gQEAgLTE2LDIxICsxNiw2IEBADQo+PiANCj4+ICNpbmNsdWRl
ICJmZmFfcHJpdmF0ZS5oIg0KPj4gDQo+PiAtLyogQ29uc3RpdHVlbnQgbWVtb3J5IHJlZ2lvbiBk
ZXNjcmlwdG9yICovDQo+PiAtc3RydWN0IGZmYV9hZGRyZXNzX3JhbmdlIHsNCj4+IC0gICAgdWlu
dDY0X3QgYWRkcmVzczsNCj4+IC0gICAgdWludDMyX3QgcGFnZV9jb3VudDsNCj4+IC0gICAgdWlu
dDMyX3QgcmVzZXJ2ZWQ7DQo+PiAtfTsNCj4+IC0NCj4+IC0vKiBDb21wb3NpdGUgbWVtb3J5IHJl
Z2lvbiBkZXNjcmlwdG9yICovDQo+PiAtc3RydWN0IGZmYV9tZW1fcmVnaW9uIHsNCj4+IC0gICAg
dWludDMyX3QgdG90YWxfcGFnZV9jb3VudDsNCj4+IC0gICAgdWludDMyX3QgYWRkcmVzc19yYW5n
ZV9jb3VudDsNCj4+IC0gICAgdWludDY0X3QgcmVzZXJ2ZWQ7DQo+PiAtICAgIHN0cnVjdCBmZmFf
YWRkcmVzc19yYW5nZSBhZGRyZXNzX3JhbmdlX2FycmF5W107DQo+PiAtfTsNCj4+IC0NCj4+IC8q
IE1lbW9yeSBhY2Nlc3MgcGVybWlzc2lvbnMgZGVzY3JpcHRvciAqLw0KPj4gc3RydWN0IGZmYV9t
ZW1fYWNjZXNzX3Blcm0gew0KPj4gICAgIHVpbnQxNl90IGVuZHBvaW50X2lkOw0KPj4gLS0NCj4+
IDIuNDcuMA0KDQoNCg==


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 09:50:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 09:50:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825071.1239266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uU1-0002YE-NG; Thu, 24 Oct 2024 09:50:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825071.1239266; Thu, 24 Oct 2024 09:50: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 1t3uU1-0002Y7-Jr; Thu, 24 Oct 2024 09:50:21 +0000
Received: by outflank-mailman (input) for mailman id 825071;
 Thu, 24 Oct 2024 09:50: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=sutq=RU=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3uU0-0002Y1-KN
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 09:50:20 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on20619.outbound.protection.outlook.com
 [2a01:111:f403:2612::619])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6039b2f0-91ed-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 11:50:18 +0200 (CEST)
Received: from DU2PR04CA0083.eurprd04.prod.outlook.com (2603:10a6:10:232::28)
 by GVXPR08MB10938.eurprd08.prod.outlook.com (2603:10a6:150:1f8::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Thu, 24 Oct
 2024 09:50:14 +0000
Received: from DU6PEPF0000A7DE.eurprd02.prod.outlook.com
 (2603:10a6:10:232:cafe::e9) by DU2PR04CA0083.outlook.office365.com
 (2603:10a6:10:232::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend
 Transport; Thu, 24 Oct 2024 09:50:14 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU6PEPF0000A7DE.mail.protection.outlook.com (10.167.8.38) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14 via
 Frontend Transport; Thu, 24 Oct 2024 09:50:13 +0000
Received: ("Tessian outbound 0fe1877cedb7:v490");
 Thu, 24 Oct 2024 09:50:13 +0000
Received: from La831237157ba.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 028D6688-2177-43F2-A9EE-186CF672DB4B.1; 
 Thu, 24 Oct 2024 09:50:06 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 La831237157ba.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 24 Oct 2024 09:50:06 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by DBBPR08MB10627.eurprd08.prod.outlook.com (2603:10a6:10:52e::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Thu, 24 Oct
 2024 09:50:00 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Thu, 24 Oct 2024
 09:50: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: 6039b2f0-91ed-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=kdK8+CXUNd3aSnL1nWkkO5GP4JJKfuTu8zb+YnFrH5Ps7ziDA83ZTJL4egyfcy/tGty2Z6Fn+xNqS4nSZKcUoUboW7FQ6IdhSOTZCG6h6cUHroWhIg386LhC+oN6Yh/SA71K9uduRoqpJlihuCvbFviW9mRyAiyGfhDsL5RfNEasRvujcC6CZ47f2scW1NGIaHkFEjRuLXqE1K179PKAFKeWgRbwz/95nsxyiIFuPXT5eDCJqE+e4gR8rFHtNf7SnC9w/xYTizwJwR0xuqlJGmkzI9WeMIWdhedHYCtatqLRs4kDpTDTsgMID7i/JplV5LUK/nBcf3qtNCJPIxDLJw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=TlRGwJT+rD7l7665ekGMvaU8C2r/qkHRox7JWDXLyHM=;
 b=Qr9S5x0+7SFl3IKXzZyLLCCxheOpQGk8Ql6R1fotUq1q59P0v7RxUI3HMwJDGKm1orJNE03AaT7F2nAFAUylp0CTjSGRDj2cGfmtiJywnHbX/Mhqope0uWwsGw+dzcgJZXtQt/xlZdkidRBfuiFKMD7lx4pZbe4KhERu0CiScrjz7IYc6EKH8Ma1Sp9llKjMCLq64VNtOhK/435MPfX/oYAaBWxcZABuF9I2ahy7/Jl94w2045xFCxvXUzsTP6sxJAwYztgxtnLTwa4S7HbcVSAegHBqYjY8q3y1YOT5Q0nido442KBfcEZXqy+T4hivx9UQqtYIQoJw2l9TXf+hsw==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TlRGwJT+rD7l7665ekGMvaU8C2r/qkHRox7JWDXLyHM=;
 b=mKCosUUXW+bFr9qrsc/WNjB7HYlq6VpTCBLYsQaWkMlCwfn0V/uIjKA2uS2WucWNjr6EndHRSeLTTYzhjr9Vks9EhTDmiZy/5iUHrCWOVWI3PZoq/v5rUZmcvlbKvKNoFo/eL4q0Dwbh3rODrCk/aagQEV94zw1PR6Wi4j0rifk=
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=arm.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: 9df1945686708875
X-TessianGatewayMetadata: SwkzCCUnhY15m7Monoy2SgjsaI1Co7dC28n25TJTngtgIab95EP9g0YcpPKEmTtoj6Y+CZH0NZijDAapX9pKfSW9Pa6QnHn9gPx6O7TA38UD3ecsUOYNH4X2hNuJSY6f1KhPAfhHDOHOPNeSWGTfMt4zicuy7SWMdT0bwdgpxAs=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=sOOurbgPCGOcZY1w3iFXg0+/s+4k/4xWVO0fdyZLwCY2LupfAfWjJ2G+TWT+1DKSeY3dh3lQa+i+Q07pG6gjdZdpFlZkuqXAsHk7c1ITsnuF2SO/9g4usD7AG9BFJYHP0tCQGVSz4QT/81cYwghcS2S1tX7OyNIAchw50D7yRkm9OYTarvykYc0zaROACWquRq6aB2kygbwwpgHQOYOI61nqIhANdKFcX7oMBRkqMhqaeyaAqdk3qvxyKK7iRcjEE/HlZ6iQ1MSeRzd0RpFEM52YSbL+3vt7b8Glr3Vgtn5elVehpY6lcYz/ToNgZt2qdL6NyBpB4LKp5q0pBZ8UKw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=TlRGwJT+rD7l7665ekGMvaU8C2r/qkHRox7JWDXLyHM=;
 b=afuIkLnNrwjzRbxaibGcNWT1dlWUdSUTwm4nbuI1zgYJSjY7bDUGIrkap9dhBK2wZ7f3TovqNLV1UpFRdvt9sD3D89a2wb2HmgOR51WJ0RCW1mGrx6C9n5YKb/xnRkNKjqYjioqoL/Jyrk2pD/nFtcILFp9q1p60l0QXZhcAo6s+pgowmn/bp9WMltPWQc2eVOhJPv9RzrIJVvP8emrXqZ7tiXTB6fSFRR57qzcpq3LsxSB2ppBZqZ4xI4UVgWpDnMCnreLQa6r4Wtj63OkV10JQcZ/U2cw3c1t8t97Avo5rk5VYkpWIaN8Ss8FPWMpI4sqEuJGK6Ve92NHspogOUA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TlRGwJT+rD7l7665ekGMvaU8C2r/qkHRox7JWDXLyHM=;
 b=mKCosUUXW+bFr9qrsc/WNjB7HYlq6VpTCBLYsQaWkMlCwfn0V/uIjKA2uS2WucWNjr6EndHRSeLTTYzhjr9Vks9EhTDmiZy/5iUHrCWOVWI3PZoq/v5rUZmcvlbKvKNoFo/eL4q0Dwbh3rODrCk/aagQEV94zw1PR6Wi4j0rifk=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 09/10] xen/arm: ffa: Remove per VM notif_enabled
Thread-Topic: [PATCH v2 09/10] xen/arm: ffa: Remove per VM notif_enabled
Thread-Index: AQHbH6X8AtOvQ/RSPk6sVqh3nksYqrKVkNiAgAAj/YA=
Date: Thu, 24 Oct 2024 09:50:00 +0000
Message-ID: <678C4205-89C3-48D6-B5EF-9A16624B9E9D@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <b23ad93b876267fb48a5a398e394e60fdf52d33d.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44ESfSimrf6coDmurQSfuCQyytsi2gJh_kePer2p3zotug@mail.gmail.com>
In-Reply-To:
 <CAHUa44ESfSimrf6coDmurQSfuCQyytsi2gJh_kePer2p3zotug@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|DBBPR08MB10627:EE_|DU6PEPF0000A7DE:EE_|GVXPR08MB10938:EE_
X-MS-Office365-Filtering-Correlation-Id: 8e591ae8-09f2-4828-9032-08dcf41141ca
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|10070799003|1800799024|376014|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?Y0FKUnEzM3ZsZVhabDJWWC9LOUVQY1JRZjNFVFZuQ1NKL1NFdUIvTzlNcWVV?=
 =?utf-8?B?RHhmSWdGTzdkUTFqZldIYnhNbUtRZENiUjVMeDAvbDJaVzIxVlJta0FFczZS?=
 =?utf-8?B?eW9uV0dGZmhIeFVib3JBcmQ3UDNqZy9PVG1NYTZEMHBJd1BicGM3dUZZUUdh?=
 =?utf-8?B?NXZtY0ttVktMQ0tmSU85TjZHRzh5ckZmSmgvak04S0t1Q3BNRFM3eGVORGZk?=
 =?utf-8?B?ZzREUmRhOVdlREJHSi85RXliTThFUzMvaVI3YVRFcHJTVjlFaHFMTFMwdGtJ?=
 =?utf-8?B?V1RjMHZsSUJLanpOdDEyRkJNR0Jwcy91bnFrWEFPYzBXTi9iRmZhSmRrMDhp?=
 =?utf-8?B?MnZ5QU9Eby9XbWxRc0k2L3hUWFBaMjF4aU1PMjBreWpXNGNQWDRSM1BZd3Aw?=
 =?utf-8?B?QU1sUlNjbk1wMXk5NkpZNmFwblBqOGpJU2JlbUoyQnVwSS9RRnpreG13MzJI?=
 =?utf-8?B?bE9UOFgrRE8ramJGdVpzczg1bWRmazJXd0wwSzNZcUt5alhHd2xJVWFVSFRJ?=
 =?utf-8?B?a3YzRG0xVHZwdWtETjRWUjRmZWlrMmE0bTlENWJ2eCs0VGFISVFZVmNleU1Q?=
 =?utf-8?B?Zk1HVittakUrTmJHOHZGc1A0Zk1IeUxOU1JUVWVXb3ErYjlKZ0pRWk1iZWZ2?=
 =?utf-8?B?aDFuTlRPc1JVbG4wNUdZbno1UURleENwZVBSU2x1OVFqRXVYYnlLRk5YS0ZU?=
 =?utf-8?B?TG11TUUzQWxYb3dpdmE1NGJlRG5xLzlKTy90RUNBMjlQWVBqSzlHS243bFZD?=
 =?utf-8?B?aWtUWENzQmVoU3ppWFQ4a1ZPYXAzSlBIVnlPVUJmWldNSjU2T2o0Tkh3MW44?=
 =?utf-8?B?UXkvL2pmT0pScTNiTlpIL012czR2YnIvNkQya25KYWg4bWd5S0kzdVpxQWpp?=
 =?utf-8?B?Rk13NXkvSnB1bm8vVU02akFabkR6Nlo3c0Z1U1pDNVlJKzF3aWMyMWR1N2ds?=
 =?utf-8?B?d09VUWtIZCtsTklCUlUzRFRkamFSZkZIWGVKLzk2K2dZMGszL3ZsZWtIWStw?=
 =?utf-8?B?K2NqWEh0VlJGYXVKcW1GL01xUmdDcGprcUhvcUxqcUtWNVZWVkdSeW5wakNF?=
 =?utf-8?B?eE5kbEJKQnBqQkd4RVhHT0hmd3Z5Y3pjSmMrNCswR1NHc2VVOHRqYlBIOHFP?=
 =?utf-8?B?b010S3BJL3NtUm1RM1BYcHlVekNJNzllZUxJbi9FeUw1a0NPZ2NiOFY4UFhE?=
 =?utf-8?B?bUk4dHlDOEU5YUMyVmMvNUNCQm1NdnlTMFpLWkRBNHJKeUdCbTRZSkJnZDRT?=
 =?utf-8?B?RmNXd01selNqdDhpbDh2Ujkvd0Zka0pnZGp5Smk3eHpkWVpCNkFRV1BNaWZN?=
 =?utf-8?B?MmNqQ3Y0RituU0hCWGtrRkxiMXF4OHBna2NUYitYMi94eEZQQzVRTUtLalow?=
 =?utf-8?B?dmJUYXNRMldyQ09mMnQ5eis4bVJNYXVHbjhpVDRZQzQzRWpvNjZ2eGpWYTF2?=
 =?utf-8?B?ZnloL21TK0dKdHNRZjJuU2ZkcFpuU2p5ZDc2VHJvMjUvVmZhdXFabmFlTDNm?=
 =?utf-8?B?MmV6WGlFK3k2ZDh2WC9IRnFhc2tvYWJ5TmN5ZzdwenZlVFkyZ2RJNC9NTWNl?=
 =?utf-8?B?WExySWdkdWZNM1ZDRXo2eHRlbEpOUmZGRFVDUEhET0hDTDBSN2ZUdXc4OWR5?=
 =?utf-8?B?VEZpa09ZUnpETlFEazJGaHBZd3lMaE5GY3VBSGJPcUxBYWtaUDJRZ0d6bC9O?=
 =?utf-8?B?cFRIMFRsaWZVLyt2U294L0t0dFRvRlI3a0xWRk9oODU3Y0ZyVzRnci9nd29j?=
 =?utf-8?B?QmplWkUzRzRKby8vVk5JTU5sM1Z4Y1hWd0gvMExYM3k5OWNLM1RneFhWT05p?=
 =?utf-8?Q?LkWqNFgRAPdfmo5yPJkMDdFMkGlt5P/tWCPug=3D?=
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:(13230040)(10070799003)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <FEB3FDEEFBAEF747BC6F46049A989AD8@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB10627
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU6PEPF0000A7DE.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	aa877fcb-64f5-48a2-0ecf-08dcf41139c4
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|35042699022|376014|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?QXdzbk9JeWxaVlphODdkZnNOUnBhNXFidmI4TEZBSmpSclNMWlg0T1kvOGFo?=
 =?utf-8?B?b2drajZ6YmduUTBOUVozeGoyRG9vMjRVOGtrelJPN1psM2RpQjAya1FDTXhV?=
 =?utf-8?B?V3FVRHlIbTYzb25sNWk3bWlNMlBNeHF0MVRNK3hJK2lFVE9qSVV6cm1OZGVu?=
 =?utf-8?B?VDFsbVBqSkdDOGZwNVAvdmlBVmNnMmo1T3pnR2dMOEt2YXhzUlZ6UUw0ZjVo?=
 =?utf-8?B?ZEZVdStUK2JVNEdVK0o4MStRYUxLM2xWYmZuRkpTYUdOdlA4aWkvd0ljYXZB?=
 =?utf-8?B?eDVRWDFtaUVGVHFEck5LZFZNTUVKTDk1SE1lRGdtWnFmSXZzOENlLzVyaThP?=
 =?utf-8?B?L3pNdWRvdWFTaGNHR0l6OEU0VVJKNytwUVZleGo4a2Z2VmFxb1UrbmtUajBr?=
 =?utf-8?B?OU91ZzZkQ1BILzIwVWd1aGpkd3JMRktZcmFnY2NtdlhxRVNDNnJoREE1RVgw?=
 =?utf-8?B?NkhNcGlnenptOTIvaEd5bnN3YlYzT09LaUhZK21iZU1TeG1IUmIzaWJid3dp?=
 =?utf-8?B?NnFyYkMzK3ZTamRwTkgva2EyV2NTWUVCSkd0dkVHVU5nSi9RWDBkSkRSVjFa?=
 =?utf-8?B?Z2cydFFza3ljaTlMOTZzNmZnMTQrenhxakhCa25WV2RyS1pYOXBpU2kraWg3?=
 =?utf-8?B?US9EWWFXenV5K3FRMU1Sbzh6ank2akVNSlZMN0ExNlZ4ZFI0R3l1N2lWejRE?=
 =?utf-8?B?WHhwZjZRWVgvSWU3ZkhhK1p6K0pCbnU0RmJWRzNENHpPWndpZ21ialdJem96?=
 =?utf-8?B?RW9rY2VFNThYZnFNZ0VldGNUY1JvcVF1YjJDelgzS0U2aGtIWjJlOEJ2Ykk5?=
 =?utf-8?B?V2pSKzFwK2gxNmpmWHlZOEtoSUJET3BhblJLVUtzdUxxRWh1R0lhSzJnOVV0?=
 =?utf-8?B?ZzdDeGozQTNYN3pHTktyeWtnWFFPZCtEcHk1b2c5YXRSNHI4amppREovS2ht?=
 =?utf-8?B?U2tJdUIzVks5NXdmN05pd2tiOHJmdldYU3lhODNwQkFSQzNEQ2dmTkdMQmpQ?=
 =?utf-8?B?aGFiNngzOFZvRDNxTjdVQktDamRuaWEwbjdvVmxoSDA1ZWdsbkJwdjl3QjZv?=
 =?utf-8?B?Rm9veW9wMlVrV0xaNnBjWDZubU5JNngyU1V5YVhPZmtMbW1VcmNBc1NKRVp2?=
 =?utf-8?B?ZXppWHFSeVRiSHBMekd5Z1VqUXZwUXQ0S21mZjZ2dDlqdW5hWUxPZm1jZE9U?=
 =?utf-8?B?b2l5SG9ldnRibnd4TlZwNS9DbitnaHBuQVpNbFQzNE9TeWxaYWZKODlDRVJB?=
 =?utf-8?B?bXREUUtOM0FwUFg5RnMxMmF6bHU0MEZYRFUxY2Y4bkowTEVnMWFvR2dMZWJ0?=
 =?utf-8?B?enpOOEI1V05RVGkzL1hGQnQzMHY5L1NLMmR0aTdQMHJGYUcxOWFFWk1EM0R3?=
 =?utf-8?B?aVlMTXV0NWRuaThjWUMrcjR2WVBMU1ZCWGxLWEZISE1RV2J1Yk1vT1NpMzVw?=
 =?utf-8?B?bUliK3NQK29EczBFdHdvYTFOdHlPbHVXR2xpbWExV2FuRWlnQTlIOThyNUFT?=
 =?utf-8?B?MGlqdndtMUR5NVBwZXd3eXcvK3lGekNIY2duUkhha0k4MDdXL1BwSXBEZnhY?=
 =?utf-8?B?M2UrZS8zTzJsSDc4UXhTbnNQNlR5VUlvcUYxRGlsZm9BazBENklUK2JDQnFh?=
 =?utf-8?B?SFJKR2FPb0lJYzBUSC90TnhFZ3ZsMDRGQTlhUStCRDV0Z2NpVTkxd1pKRGNU?=
 =?utf-8?B?QWZuN05GZXViVzA5T3d6Z3c2aUNiaWxFY1UwdnI4dmxFMjR0M0k2NXNuTkxq?=
 =?utf-8?B?a1gxZlR6UU9EbHBNd0lPbWdYYTNFd2dFeE91MGZZa09XOUFJQnNVMEc3cDcv?=
 =?utf-8?B?a1pZSUxYdmFpa1gvZ1pMTmk5b0p0UDRZbEF3dXlIN3dRU2lMampmdlhTRnEv?=
 =?utf-8?B?cUkxV1EyL2FqeG9Mak50cXk4SU5zcDZRSkVsNzNzazJlcFE9PQ==?=
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:(13230040)(36860700013)(1800799024)(35042699022)(376014)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 09:50:13.4402
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8e591ae8-09f2-4828-9032-08dcf41141ca
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:
	DU6PEPF0000A7DE.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10938

SGkgSmVucywNCg0KPiBPbiAyNCBPY3QgMjAyNCwgYXQgMDk6NDEsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gV2VkLCBPY3QgMTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
IDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+IHdyb3RlOg0KPj4gDQo+PiBSZW1vdmUgdGhlIHBl
ciBWTSBmbGFnIHRvIHN0b3JlIGlmIG5vdGlmaWNhdGlvbnMgYXJlIGVuYWJsZWQgb3Igbm90IGFz
DQo+PiB0aGUgb25seSBjYXNlIHdoZXJlIHRoZXkgYXJlIG5vdCwgaWYgbm90aWZpY2F0aW9ucyBh
cmUgZW5hYmxlZCBnbG9iYWxseSwNCj4+IHdpbGwgbWFrZSB0aGUgVk0gY3JlYXRpb24gZmFpbC4N
Cj4+IEFsc28gdXNlIHRoZSBvcHBvcnR1bml0eSB0byBhbHdheXMgZ2l2ZSB0aGUgbm90aWZpY2F0
aW9ucyBpbnRlcnJ1cHRzIElEcw0KPj4gdG8gVk0uIElmIHRoZSBmaXJtd2FyZSBkb2VzIG5vdCBz
dXBwb3J0IG5vdGlmaWNhdGlvbnMsIHRoZXJlIHdvbid0IGJlDQo+PiBhbnkgZ2VuZXJhdGVkIGFu
ZCBzZXR0aW5nIG9uZSB3aWxsIGdpdmUgYmFjayBhIE5PVF9TVVBQT1JURUQuDQo+PiANCj4+IFNp
Z25lZC1vZmYtYnk6IEJlcnRyYW5kIE1hcnF1aXMgPGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4N
Cj4+IC0tLQ0KPj4gQ2hhbmdlcyBpbiB2MjoNCj4+IC0gcmViYXNlDQo+PiAtLS0NCj4+IHhlbi9h
cmNoL2FybS90ZWUvZmZhLmMgICAgICAgICB8IDE3ICsrKy0tLS0tLS0tLS0tLS0tDQo+PiB4ZW4v
YXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jICAgfCAxMCArLS0tLS0tLS0tDQo+PiB4ZW4vYXJjaC9h
cm0vdGVlL2ZmYV9wcml2YXRlLmggfCAgMiAtLQ0KPj4gMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2Vy
dGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQ0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gv
YXJtL3RlZS9mZmEuYyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMNCj4+IGluZGV4IDcyODI2YjQ5
ZDJhYS4uM2E5NTI1YWE0NTk4IDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9mZmEu
Yw0KPj4gKysrIGIveGVuL2FyY2gvYXJtL3RlZS9mZmEuYw0KPj4gQEAgLTE2OSw4ICsxNjksNiBA
QCBzdGF0aWMgdm9pZCBoYW5kbGVfdmVyc2lvbihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykN
Cj4+IA0KPj4gc3RhdGljIHZvaWQgaGFuZGxlX2ZlYXR1cmVzKHN0cnVjdCBjcHVfdXNlcl9yZWdz
ICpyZWdzKQ0KPj4gew0KPj4gLSAgICBzdHJ1Y3QgZG9tYWluICpkID0gY3VycmVudC0+ZG9tYWlu
Ow0KPj4gLSAgICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+PiAgICAgdWlu
dDMyX3QgYTEgPSBnZXRfdXNlcl9yZWcocmVncywgMSk7DQo+PiAgICAgdW5zaWduZWQgaW50IG47
DQo+PiANCj4+IEBAIC0yMTgsMTYgKzIxNiwxMCBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZmVhdHVy
ZXMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiAgICAgICAgIGZmYV9zZXRfcmVnc19z
dWNjZXNzKHJlZ3MsIDAsIDApOw0KPj4gICAgICAgICBicmVhazsNCj4+ICAgICBjYXNlIEZGQV9G
RUFUVVJFX05PVElGX1BFTkRfSU5UUjoNCj4+IC0gICAgICAgIGlmICggY3R4LT5ub3RpZi5lbmFi
bGVkICkNCj4+IC0gICAgICAgICAgICBmZmFfc2V0X3JlZ3Nfc3VjY2VzcyhyZWdzLCBHVUVTVF9G
RkFfTk9USUZfUEVORF9JTlRSX0lELCAwKTsNCj4+IC0gICAgICAgIGVsc2UNCj4+IC0gICAgICAg
ICAgICBmZmFfc2V0X3JlZ3NfZXJyb3IocmVncywgRkZBX1JFVF9OT1RfU1VQUE9SVEVEKTsNCj4+
ICsgICAgICAgIGZmYV9zZXRfcmVnc19zdWNjZXNzKHJlZ3MsIEdVRVNUX0ZGQV9OT1RJRl9QRU5E
X0lOVFJfSUQsIDApOw0KPj4gICAgICAgICBicmVhazsNCj4+ICAgICBjYXNlIEZGQV9GRUFUVVJF
X1NDSEVEVUxFX1JFQ1ZfSU5UUjoNCj4+IC0gICAgICAgIGlmICggY3R4LT5ub3RpZi5lbmFibGVk
ICkNCj4+IC0gICAgICAgICAgICBmZmFfc2V0X3JlZ3Nfc3VjY2VzcyhyZWdzLCBHVUVTVF9GRkFf
U0NIRURVTEVfUkVDVl9JTlRSX0lELCAwKTsNCj4+IC0gICAgICAgIGVsc2UNCj4+IC0gICAgICAg
ICAgICBmZmFfc2V0X3JlZ3NfZXJyb3IocmVncywgRkZBX1JFVF9OT1RfU1VQUE9SVEVEKTsNCj4+
ICsgICAgICAgIGZmYV9zZXRfcmVnc19zdWNjZXNzKHJlZ3MsIEdVRVNUX0ZGQV9TQ0hFRFVMRV9S
RUNWX0lOVFJfSUQsIDApOw0KPj4gICAgICAgICBicmVhazsNCj4+IA0KPj4gICAgIGNhc2UgRkZB
X05PVElGSUNBVElPTl9CSU5EOg0KPj4gQEAgLTIzNiwxMCArMjI4LDcgQEAgc3RhdGljIHZvaWQg
aGFuZGxlX2ZlYXR1cmVzKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQ0KPj4gICAgIGNhc2Ug
RkZBX05PVElGSUNBVElPTl9TRVQ6DQo+PiAgICAgY2FzZSBGRkFfTk9USUZJQ0FUSU9OX0lORk9f
R0VUXzMyOg0KPj4gICAgIGNhc2UgRkZBX05PVElGSUNBVElPTl9JTkZPX0dFVF82NDoNCj4+IC0g
ICAgICAgIGlmICggY3R4LT5ub3RpZi5lbmFibGVkICkNCj4+IC0gICAgICAgICAgICBmZmFfc2V0
X3JlZ3Nfc3VjY2VzcyhyZWdzLCAwLCAwKTsNCj4+IC0gICAgICAgIGVsc2UNCj4+IC0gICAgICAg
ICAgICBmZmFfc2V0X3JlZ3NfZXJyb3IocmVncywgRkZBX1JFVF9OT1RfU1VQUE9SVEVEKTsNCj4+
ICsgICAgICAgIGZmYV9zZXRfcmVnc19zdWNjZXNzKHJlZ3MsIDAsIDApOw0KPj4gICAgICAgICBi
cmVhazsNCj4+ICAgICBkZWZhdWx0Og0KPj4gICAgICAgICBmZmFfc2V0X3JlZ3NfZXJyb3IocmVn
cywgRkZBX1JFVF9OT1RfU1VQUE9SVEVEKTsNCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v
dGVlL2ZmYV9ub3RpZi5jIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfbm90aWYuYw0KPj4gaW5kZXgg
NGIzZTQ2MzE4ZjRiLi4zYzY0MThlNjJlMmIgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vYXJjaC9hcm0v
dGVlL2ZmYV9ub3RpZi5jDQo+PiArKysgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+
PiBAQCAtNDA1LDcgKzQwNSw2IEBAIHZvaWQgZmZhX25vdGlmX2luaXQodm9pZCkNCj4+IA0KPj4g
aW50IGZmYV9ub3RpZl9kb21haW5faW5pdChzdHJ1Y3QgZG9tYWluICpkKQ0KPj4gew0KPj4gLSAg
ICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+PiAgICAgaW50MzJfdCByZXM7
DQo+PiANCj4+ICAgICBpZiAoICFub3RpZl9lbmFibGVkICkNCj4+IEBAIC00MTUsMTggKzQxNCwx
MSBAQCBpbnQgZmZhX25vdGlmX2RvbWFpbl9pbml0KHN0cnVjdCBkb21haW4gKmQpDQo+PiAgICAg
aWYgKCByZXMgKQ0KPj4gICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+IA0KPj4gLSAgICBjdHgt
Pm5vdGlmLmVuYWJsZWQgPSB0cnVlOw0KPj4gLQ0KPj4gICAgIHJldHVybiAwOw0KPj4gfQ0KPj4g
DQo+PiB2b2lkIGZmYV9ub3RpZl9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQ0KPj4g
ew0KPj4gLSAgICBzdHJ1Y3QgZmZhX2N0eCAqY3R4ID0gZC0+YXJjaC50ZWU7DQo+PiAtDQo+PiAt
ICAgIGlmICggY3R4LT5ub3RpZi5lbmFibGVkICkNCj4+IC0gICAgew0KPj4gKyAgICBpZiAoIG5v
dGlmX2VuYWJsZWQgKQ0KPj4gICAgICAgICBmZmFfbm90aWZpY2F0aW9uX2JpdG1hcF9kZXN0cm95
KGZmYV9nZXRfdm1faWQoZCkpOw0KPiANCj4gVGhpcyBjYWxsIG1heSBub3cgYmUgZG9uZSBldmVu
IGlmIHRoZXJlIGhhc24ndCBiZWVuIGEgc3VjY2Vzc2Z1bCBjYWxsDQo+IHRvIGZmYV9ub3RpZmlj
YXRpb25fYml0bWFwX2NyZWF0ZSgpLg0KPiBBIGNvbW1lbnQgbWVudGlvbmluZyB0aGlzIGFuZCB0
aGF0IGl0J3MgaGFybWxlc3MgKGlmIHdlIGNhbiBiZSBzdXJlIGl0DQo+IGlzKSB3b3VsZCBiZSBu
aWNlLg0KPiANCg0KWW91IG1lYW4gaW4gdGhlIGNhc2Ugd2hlcmUgaXQgZmFpbGVkIGR1cmluZyBk
b21haW5faW5pdCA/DQoNCkkgY2FuIGFkZCB0aGUgZm9sbG93aW5nIGNvbW1lbnQ6DQogQ2FsbCBi
aXRtYXBfZGVzdHJveSBldmVuIGlmIGJpdG1hcCBjcmVhdGUgZmFpbGVkIGFzIHRoZSBTUE1DIHNo
b3VsZCByZXR1cm4gYW4gZXJyb3IgdGhhdCB3ZSB3aWxsIGlnbm9yZQ0KDQpXb3VsZCB0aGF0IGJl
IG9rID8NCg0KQ2hlZXJzDQpCZXJ0cmFuZA0KDQoNCj4gQ2hlZXJzLA0KPiBKZW5zDQo+IA0KPj4g
LSAgICAgICAgY3R4LT5ub3RpZi5lbmFibGVkID0gZmFsc2U7DQo+PiAtICAgIH0NCj4+IH0NCj4+
IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmggYi94ZW4vYXJjaC9h
cm0vdGVlL2ZmYV9wcml2YXRlLmgNCj4+IGluZGV4IDAyMTYyZTBlZTRjNy4uOTczZWU1NWJlMDli
IDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9mZmFfcHJpdmF0ZS5oDQo+PiArKysg
Yi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmgNCj4+IEBAIC0yODEsOCArMjgxLDYgQEAg
c3RydWN0IGZmYV9tZW1fcmVnaW9uIHsNCj4+IH07DQo+PiANCj4+IHN0cnVjdCBmZmFfY3R4X25v
dGlmIHsNCj4+IC0gICAgYm9vbCBlbmFibGVkOw0KPj4gLQ0KPj4gICAgIC8qDQo+PiAgICAgICog
VHJ1ZSBpZiBkb21haW4gaXMgcmVwb3J0ZWQgYnkgRkZBX05PVElGSUNBVElPTl9JTkZPX0dFVCB0
byBoYXZlDQo+PiAgICAgICogcGVuZGluZyBnbG9iYWwgbm90aWZpY2F0aW9ucy4NCj4+IC0tDQo+
PiAyLjQ3LjANCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 09:57:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 09:57:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825081.1239275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uaf-0003W5-Bj; Thu, 24 Oct 2024 09:57:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825081.1239275; Thu, 24 Oct 2024 09: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 1t3uaf-0003Vy-9J; Thu, 24 Oct 2024 09:57:13 +0000
Received: by outflank-mailman (input) for mailman id 825081;
 Thu, 24 Oct 2024 09:57: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=UfPV=RU=bounce.vates.tech=bounce-md_30504962.671a19f5.v1-db67610ea81e43c4bb8a19255a9af5bc@srs-se1.protection.inumbo.net>)
 id 1t3uae-0003Vl-5C
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 09:57:12 +0000
Received: from mail186-28.suw21.mandrillapp.com
 (mail186-28.suw21.mandrillapp.com [198.2.186.28])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 55c3f445-91ee-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 11:57:10 +0200 (CEST)
Received: from pmta10.mandrill.prod.suw01.rsglab.com (localhost [127.0.0.1])
 by mail186-28.suw21.mandrillapp.com (Mailchimp) with ESMTP id
 4XZ1Y12JLCzMQxZ9F
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 09:57:09 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 db67610ea81e43c4bb8a19255a9af5bc; Thu, 24 Oct 2024 09:57: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: 55c3f445-91ee-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729763829; x=1730024329;
	bh=BANLhm+gEpY1Ue77VOp2HhdcA4V8mb1aY9+sHxDCH2Y=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=eq1hT/xlZ0ER/mKIHj1dwejXWreh0Mo46pFzzCQsJoZMjXLIMoj+ASX/Kn2qmOWJP
	 XrsFFEQNdl4CHgCdptmYCHP0/zVsH5U7QbnkUsKUqLaPMWB18a4AY8CUEuTd8L85Up
	 70bZikAZfaccg44iGFEevckzu0nMY1NCvJfvAaqkhrbjRPwxXxxuAvdQFDtrwXeO22
	 Se9qJAj+yhjfp0AfFKwDHoH4c8D3WSmb+zSrZRrCpaviME48cumUy/+eDIysp0asp4
	 7KDBPHMluAW1rONL0UE5DKGK707MQgM0I9R3LwwAhYbWElMigMu7LUvzUqGJwAT4fU
	 uBBdwI2dj4buQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729763829; x=1730024329; i=anthony.perard@vates.tech;
	bh=BANLhm+gEpY1Ue77VOp2HhdcA4V8mb1aY9+sHxDCH2Y=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=Ld8EHKEREzpk4obad4FC6rTEN0zpXkLSw7bL1JSMbCRCvoc7fCErsMPjXtEJempJx
	 H+mmal/8m6fD0k0Tpm5JJDBt8oUfQtgvy5+7zyXuw4tGWUSI8pN8fe+nf5JATrXeYb
	 l43lTp7tZ2cBiiF3nmeOwHo4sv8jesVt6xbTMNxRCjKboi9vKxb75AoBW/CDNpd7Bt
	 kHPdKFdUebJuvcqDzU9F55pFI0RmoNorJjMHAQNCKvfCexmfAhpDJMPK0VFfAjM0jj
	 aE6TTeZMid+H7SJaxxaoRnSFPit4oaHwBnl8I+j5R0Snr8XGnscJuzIvGN/t9SFxMQ
	 kPbzbYnHa7Yaw==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[PATCH]=20tools/pvhsim:=20Inherit=20the=20tools=20debug=3D=20setting?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729763828146
To: "Andrew Cooper" <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, "Jan Beulich" <JBeulich@suse.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, =?utf-8?Q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Message-Id: <ZxoZ86BWqenxR5q0@l14>
References: <20241022162500.121276-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241022162500.121276-1-andrew.cooper3@citrix.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.db67610ea81e43c4bb8a19255a9af5bc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241024:md
Date: Thu, 24 Oct 2024 09:57:09 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Tue, Oct 22, 2024 at 05:25:00PM +0100, Andrew Cooper wrote:
> diff --git a/tools/firmware/xen-dir/Makefile b/tools/firmware/xen-dir/Makefile
> index 6f5e208ab413..e19916f76722 100644
> --- a/tools/firmware/xen-dir/Makefile
> +++ b/tools/firmware/xen-dir/Makefile
> @@ -1,4 +1,5 @@
>  XEN_ROOT = $(CURDIR)/../../..
> +include $(XEN_ROOT)/tools/Rules.mk
>  
>  all: xen-shim
>  
> @@ -75,6 +76,8 @@ $(D): linkfarm.stamp
>  
>  $(D)/xen/.config: $(D)
>  	$(MAKE) -C $(@D) KBUILD_DEFCONFIG=pvshim_defconfig defconfig
> +	echo "CONFIG_DEBUG=$(if $(debug),y,n)" >> $@

I don't think this does what you think it does ;-).

In the GitLab CI, we have both "export debug=y" and "export debug=n", in
both case that $(if ) will return 'y' because $(debug) is non-empty.

For one-liner to do this, there's a few option in Make and shell:
    $(if $(filter y,$(debug)),y,n)
    $$([ "$(debug)" = y ] && echo y || echo n)
    $$(case "$(debug)" in y) echo y;; *) echo n;; esac)

For the $(filter ) option, if one does `debug='y no' make` the $(if )
will expand to 'y', but it's probably good enough.

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:01:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:01:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825090.1239286 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ueO-000553-Rg; Thu, 24 Oct 2024 10:01:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825090.1239286; Thu, 24 Oct 2024 10:01: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 1t3ueO-00054w-OX; Thu, 24 Oct 2024 10:01:04 +0000
Received: by outflank-mailman (input) for mailman id 825090;
 Thu, 24 Oct 2024 10:01: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=sutq=RU=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3ueN-00054Y-9Y
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:01:03 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on20603.outbound.protection.outlook.com
 [2a01:111:f403:2614::603])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e0348872-91ee-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 12:01:02 +0200 (CEST)
Received: from DB8P191CA0002.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:130::12)
 by PR3PR08MB5705.eurprd08.prod.outlook.com (2603:10a6:102:93::23) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Thu, 24 Oct
 2024 10:00:58 +0000
Received: from DB5PEPF00014B99.eurprd02.prod.outlook.com
 (2603:10a6:10:130:cafe::ec) by DB8P191CA0002.outlook.office365.com
 (2603:10a6:10:130::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend
 Transport; Thu, 24 Oct 2024 10:00:58 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5PEPF00014B99.mail.protection.outlook.com (10.167.8.166) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Thu, 24 Oct 2024 10:00:57 +0000
Received: ("Tessian outbound 373849c2df5a:v490");
 Thu, 24 Oct 2024 10:00:57 +0000
Received: from L708b75fcc779.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 ECD13F3B-7710-40B8-B7D5-74090FA50803.1; 
 Thu, 24 Oct 2024 10:00:51 +0000
Received: from EUR02-DB5-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L708b75fcc779.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 24 Oct 2024 10:00:51 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by DU0PR08MB9002.eurprd08.prod.outlook.com (2603:10a6:10:467::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Thu, 24 Oct
 2024 10:00:49 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Thu, 24 Oct 2024
 10:00: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: e0348872-91ee-11ef-a0bf-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=yhv65RIcE5/ZuSjqCt99J8FvRCOr/D3OpguZ5fZr8WdTg0eM1cShJRfKww/2kEwUxAw/aBtLqSPwR2PdnPbe/asVj0nK5FIjD1lbDvlWNeBpXZptG+WbmZ9qSQ2m3MEME2lbZBOR1Xn0d/h9hIVLqQCKYraK6MmRdrNl7mCCR1BQvrQzAlcJXAibUPfIhzPL4+2Lb7OF++2titYtFv1FHRuxWdC1uXcQGJqP0fcg/w8agbeZTklwq+M/2u0CQNkIi9sx9HF1HWARElB/RwYu/xWAXD5AKOp12DWsojsmbZu+fiYhOfpeWG73B5Fmwd6qbXxVDklcnGFyXlhY4PciRg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=GnmstD/hgAp/Uiv7oK65KRUjRCYHHauNvIaE8dGkKQk=;
 b=MXZu9KJ5uIIgEyv/Qun/ktThH2BaPnyoDUZWE5xNnsN3GfpOLPcue2opR8RtFFOtzYjtnzPHoOlDsoudrAfYptBA6nfyoXJq6RGNC9Oke7+ic1lke6Mtmfp2vrZLyOdWHL25651EFjKWDUdRb5gGwBBVpnEZ6I+10BqhQNLXOeBdjKdY24NSu3GLbG74ZU2CuH1zmK+zVBzjYSbPb689Iv6NQZZ2etqyyli2r6xFXV1nU0mJR3/Qxlne/UXaPjlrBUxu1o7KQOxvMec1R7NFmWw3/XgDrF+lujxHLek1Ds/gMIRvxA9qBlB7++j2ipI5bmYtVG+bwDpDiOZiNdnoJA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GnmstD/hgAp/Uiv7oK65KRUjRCYHHauNvIaE8dGkKQk=;
 b=iYkJdx12ooszDKno/UySiajXrf8ERvuQLIUZNcyB6TUtrbbUzoHeFrrnRNtsM2WaGu+tQtUMnt6ZLZ9WH1FA4BufmcqTTfmREfIxvOWBpjyTURz2Mqhx/teHCXg+glSjJN8v9TKXGhu8FOKe8wi/zztpmzXK6UDMhL+xUHn7wRo=
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=arm.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: c40e26ae052afa22
X-TessianGatewayMetadata: 0WeBuq8Mh7MgUvXouzEZxr5Jg/geIPSCgArxsLIV/65WpHjEJEwGTodJaX0Gs3jPTTRmt5/Ws40/IvDRA3i8/6zPV+hgABE5kdNNThNjSjIqh3Lqm+KMVVqY05cfcx9dMcBe/krtMyZgUoCn9ZvFEqRuzA8qrX1dBZwFl+7GDm8=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=B4kQe+VktGXlMqGBIw6ALmtEf1GlIpflTWRUcdF7cBnQKh+YxNwl0OOTjKF719tSUsrSlflbEgTur1X08q+3lBtzmD37ZUm9uYkSfKepA60OFmBmrUsFUkmT2Wk87hSPGBcqivj+cPPLB1bXh051YdqzmFHEsXhLeMCWsXrTNh1rzzNJ+SCbFABT7oen/EwpQ+jgDI8prv69sOCIlcM/+oyerfjXH2Xh3AoK1/nd+ZdvePi01YGAXppHqKPm/2GdI9cPa8TU7Ii6r2ozwQWm9eJzfAIZJXlmwnVyFMHi6n7q566rMYLUX8idgVRxeRFxpZxFonm3ME0A+OAdCAA4+A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=GnmstD/hgAp/Uiv7oK65KRUjRCYHHauNvIaE8dGkKQk=;
 b=SdOUoBBTxY7BPFN7iW2M21rXaJBAJkW11U454grwrnhB+TRhY8Niz1S7IPThieQlFPT/22967+pm09i7CYY0fRgeAwPXAKHPy18emViiV7l0duSDXxCnjv1elCStdUOPxiOSYJW0QL2c42+xNzHo1Ki+HUvOrnLQ8ZJSa60HfpKpH0TjX4wsWGP3pb06UkLAQv0qVNdYwW3PyJDXAIjRAsoW9M6D+dJxWs7NtA8GRox0jtUrOcXPV2u5UoqINMKJdHOLUFM7Fny/X3/Ur3OJQWjT/OC/D16VhyEGDzWutATlxRbZigWSP+cfXNS4CFwa1Sz+DNOIuh8ZE/ncbni/8Q==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GnmstD/hgAp/Uiv7oK65KRUjRCYHHauNvIaE8dGkKQk=;
 b=iYkJdx12ooszDKno/UySiajXrf8ERvuQLIUZNcyB6TUtrbbUzoHeFrrnRNtsM2WaGu+tQtUMnt6ZLZ9WH1FA4BufmcqTTfmREfIxvOWBpjyTURz2Mqhx/teHCXg+glSjJN8v9TKXGhu8FOKe8wi/zztpmzXK6UDMhL+xUHn7wRo=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 04/10] xen/arm: ffa: Fine granular call support
Thread-Topic: [PATCH v2 04/10] xen/arm: ffa: Fine granular call support
Thread-Index: AQHbH6X6DgTlgbJ1hkeaet/uwiCV8bKUJP2AgAF1ZYCAAB15AA==
Date: Thu, 24 Oct 2024 10:00:48 +0000
Message-ID: <E9F7F794-8E9B-4997-9461-19B3145D7A09@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <84a39fbb681c1fdc2708d385e79bef1bbc9c6ae0.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44F1ZDuVQkHTEmHC-x+u4kuLqphcjaK5c7wDnnenWuQi1Q@mail.gmail.com>
 <CAHUa44EtL_hLqCD15jcvMEUxxt-289yXDaMDEs=h7EXUQxj8og@mail.gmail.com>
In-Reply-To:
 <CAHUa44EtL_hLqCD15jcvMEUxxt-289yXDaMDEs=h7EXUQxj8og@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|DU0PR08MB9002:EE_|DB5PEPF00014B99:EE_|PR3PR08MB5705:EE_
X-MS-Office365-Filtering-Correlation-Id: 3e13558b-2832-4a18-4f6a-08dcf412c1cd
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|10070799003|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?aElCbVJvanJJQmN0bWRtY1A2VzBkZ21URDNNK200Y0FNS1FJeEQzUGFXS0ti?=
 =?utf-8?B?d1N5Z2JQY1dVWlVFRWpleENvQmVGTFNYUGJEZEZlK2tiNUFhSUNUelJsdXFL?=
 =?utf-8?B?cllYdFhCMGpEL1hPRXJNdlUyYnc2SFozU09vUUlMTVFkbm9vYWR5RVFLOUhl?=
 =?utf-8?B?TU4wckNJSDBKVXd5bGorbW9LeHdtWFk4bC9FeG16c3kyR1UrOERydWlyODdD?=
 =?utf-8?B?K2dWbVZ4c2krd3poSXZvMFQwU0Z5RXZobWhYQjJkSTl2SzF1YjNjRkp3TG1v?=
 =?utf-8?B?RWJVU28rUE9SMTZleDRUY0ljOGg3bUlpRjdkdEp6bVc5cmdvV2NoV1NGQU9Q?=
 =?utf-8?B?TlJkREdSdkVaT09ZbWwyd2lVUFVNUXdoZ1V3UVJ0bWJZeEl4T3NXQnNmSE1s?=
 =?utf-8?B?eHYySFRRK1lHOXV3eHJvbnpHVHphdndFOVFKMFdLeHY5VkRuT0FGR3hOVklu?=
 =?utf-8?B?bWNXaklMSFM5L2E3US9SczNJTG5uWk5xT3dmVURJNGFmalFDZ1VTWlUxNkNY?=
 =?utf-8?B?bUw3YWVveHc1Ni9YZzdNZkdhWll4RDRUQkkyQ1Vib3VCSHFaTExXTDdnVVgv?=
 =?utf-8?B?VEpLb3MxZWY1UVZLRlhFYkw4blBuUHlpcDVSSlh5TStUMmNzbFh6TzVqWHNh?=
 =?utf-8?B?dVBYN2Ivb2FWUmgwR1NoUlR5RWdXYVpCeWZjMkd0ek1XYkJ6RWxJVDE3MDRM?=
 =?utf-8?B?ZGdhbm9GT0RZVkdLK1Y5aXhpTyt2Z2FCSUJ5cWZPZ1FVSmVTekRGUUhqQkor?=
 =?utf-8?B?b2pCY3hPT0xlUURHcXdHK1VNWnQ2emc1WXFyclJtZ01ISGkxYUFtdlVTMEpC?=
 =?utf-8?B?cHJTdm1zZjVvQWR4UTVqMjNwU0dDejJYajVpQy9VZzNPR253bW5MNzI2ZTFn?=
 =?utf-8?B?TmprTXVRTzIwazIrTk1KZkdhMjJPZG5yaDVJck1Bd3UrN3BqcXY3aS9JWEgr?=
 =?utf-8?B?Ri9aZ25nNVFMVVFxQktYeVhrUUh2amxOWmZZZmJLbG13VUVXUmpteVM4VmdC?=
 =?utf-8?B?QzhGa3VCYUI5NmJhaVEvRWVrK2xNUEN5YVZrZ2FIOG5ncUZVdzBDTm9LYVlB?=
 =?utf-8?B?cWYwYmdxRE00UjgyTW05TFl6Q3JDNEtOK1hKUG02MnpBbTJlMldNRG5mbFVL?=
 =?utf-8?B?M1JnZWF1WjV4aDhKS1lWdFNBWkYwbU5jdXVUeFdFbHZGZUp5R0c1RklBa3d3?=
 =?utf-8?B?OUpxWXBPTno5Wnlqd29rcWVhZG1nWHdlTEs4R1Fxb2xNbFhWZ1hySmY5eSsx?=
 =?utf-8?B?T09Nck9tdGJuTTU1amJiNnBSNTcra2tULzBWRDVuYzZ5cGN5QThaai82bWVX?=
 =?utf-8?B?cy9jOTJ3MVN1YkFLWHBhOG5EelN5OFE1WG5JNmp4QjBMRnZpNEVLTk9PZ2Ji?=
 =?utf-8?B?UmZaY1F2RHlmbVJGazNOM3lGQ0RNcHd4K1dnVGhFL0psUHRTUWpNZkNaUFE4?=
 =?utf-8?B?UGEvekk0aklsMm5xTDhVcVVSZFpBbkZQNEVSSm5uVUFYZFpoWDRsOEFIcFpL?=
 =?utf-8?B?SXdpTUhvd0dkcTNxcWdyMWJMQXduRjh3NEhyNE5vTWl5N1g0dG9aV0N4a2gy?=
 =?utf-8?B?cUJrRUVFaGRMQmhYM0xxQXNaOTM2Q3VkYmI5cEt6dmY2bVJxQTNmY3JDOXN3?=
 =?utf-8?B?Rm1PT3diaER6SmhpUjVvb0VNNGlYY296Q2NjUUVhd1JSUlladzY5T04yWUdT?=
 =?utf-8?B?djE0SW1HT2xGZktoNUhweUVDanNIUEJKaVFUL1FRWnpsdGthRG9PdUh4UDVo?=
 =?utf-8?B?MXl4dzJuc21ndmV6ZkVPK1czNkw2M2NOeHZub1V6N3doWWpDSHU0US9oblB2?=
 =?utf-8?Q?Knmuj6TSd9CNH6wHo9Seuev2sdUkraWi0vQOo=3D?=
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:(13230040)(366016)(1800799024)(10070799003)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <09E1CF432129494DBCC9E0BC9CEE8485@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9002
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B99.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	fe2e6b23-3ad3-4ef9-5a72-08dcf412bc83
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cGZTMVg2YUJzYW54RldoOFV3VndCN1lUdW1NODhJeDNoMVJqU0NFOFY5OThu?=
 =?utf-8?B?M3BDVDhSV1RrN1E4c3JONS9wNTI3VURkUmJ3QnBxeVlHMi9UZ3NwV0tEbUJJ?=
 =?utf-8?B?dkxVTkV1WEpXbHAyNS8yVXdZd1NqVStIZWxXYkRMYytUSXdCakhNVFlpd3pi?=
 =?utf-8?B?azM5RnVFa0tmMDNTU2MxRjZvOEtpVXJWZWZScFh0cS9uZnZTa3Z5aENWb3RC?=
 =?utf-8?B?WllzaUVwWU5YOGpTZmlkTzdUMEplbk5xei96QU9wY3htQ3VqdmoxNjlZQ3FO?=
 =?utf-8?B?TXZnUVhUSGJtdGFlUWlXRFJFOCtjM1VwT2t2RE5lSTZueFdRbmJFNkpucDA4?=
 =?utf-8?B?M2pxVHFqWnZVWHl2ODN6cWxyUTI1b2JlNzJUaTNsaFBES29NNmdyREFiOHN5?=
 =?utf-8?B?aG9rdmRSOU1SK0kwc3M3U0lEZVV0RjZyZllnRWF0MHd5a1cyZEhJbUo0bmht?=
 =?utf-8?B?Y09aUDkvc2RYbERiV0RpUGszS21PdldvcUxXMENiMGI0aDFhTFZWY0Rva3Bt?=
 =?utf-8?B?N2h0VE5pSHpUU2dITnBVRmhFTDkvTVV6WnRvTlFUcUZOT2pxUHY0YU45R3R0?=
 =?utf-8?B?ckN1MGVTRFBQRS95SEhFVVlUUDZWKzNzcTFiZGJ3MnpTTnJGRGErT3RwK0dl?=
 =?utf-8?B?TURDZzhlUVRIQzgxaEt5enJWcU5SeGJMTS9TZGR3N09DMFRSbXlWS1NMRzRM?=
 =?utf-8?B?eU52azNIZVh5UDQ3aytMcDVsRlYxU0lqY2VpaG4wSVZhSE1NTHRsRkV4ZmtC?=
 =?utf-8?B?WTB3VnNoRlQyazlscEwrdVozbDR2cEZhQVlEUUI3OXFRNUJxQXZHQTE0bUNs?=
 =?utf-8?B?NmRKV2RRTEZJRTBGVVNOSVhFaWNDRjk5VlVWWjRZcE9OZ2RhZ0ltSU1WVTNm?=
 =?utf-8?B?SDZBZDg1NHV1OC9od0xyb2QrWnFTRzRZc2ErcDRGZmt5NXZKa1hpMU5EVzRo?=
 =?utf-8?B?TUpFUUtYdVNWL2N0SWsyYkk4c1ZpWlZBV09EQUlHVnVEbElZdGpDeGZMUjhT?=
 =?utf-8?B?b0FjRStMYnliUkJFQUpCRlU0dEQza0lXZkdreVRBVEZiQXdGbUZwVEpmSEVs?=
 =?utf-8?B?bzhrRzl0TE5reElDdHZrZU5ESVJNZGJ5OTduREhKTmhyNGsxMFRLY2k1QzV3?=
 =?utf-8?B?dTJWUlhLdTZmWWw0VW9aZFdzajJxbkhuYUpsMzNMQm92UG1NVm5PMkl3V0FN?=
 =?utf-8?B?SE5McVN5RTdaNXBZbDFLQ0NWbVpER2picXU3OFVHSkQwRVV4dGNkNDNQQmdQ?=
 =?utf-8?B?cE1xTnRyNFFIOWR2Y21mNmlqSTFMSzNkK092elc3d1pTNlhtQ013R0FTNUs5?=
 =?utf-8?B?UnJ4dEVXSkJCdzVVS1IzTlM4VHNpeG90cmd1dEtxU2dMVVJqdzFrZHJsS3c5?=
 =?utf-8?B?T0pNNXZFWlRBVHNxZzNpUzJOVWJPSzBjUnA5SXoxNnFtS042Qzl1OWxOZXZi?=
 =?utf-8?B?RTVkSmVHZWpSeGhjVzBNb0JFdUZPMkpHbWNlNTd4V3UzRHZib3BkeFBtWGlM?=
 =?utf-8?B?dnI3TFUzdzRCL2FGQXBTTTAxMmlnWGpJMWpZTk1HR1RiL0FIQXNNRHBZTU40?=
 =?utf-8?B?V2VDcFg0Q1FSKzhlVEFxenBHYS9WeWlFc1dLME5ycWJlWmxNaXFBM20rWW5q?=
 =?utf-8?B?Q1NGSGk4MlBqUXVacXJBSFRvSzh2MkZrWlVlRUorbm9ONzEyekljVDFaVFdS?=
 =?utf-8?B?ZjNHZzhMZXBySDU4dk9WTkIzalNZRWd1bHZrQ2lpL0h1eWRGL3VBMUJOWkxk?=
 =?utf-8?B?UHZpVFp4NEpld200Tmo4L3pkUTFaam00WlA4UFBXWFYzRGd1T2V5aDFUUzhW?=
 =?utf-8?B?czQzK1hYOSt3VEs4WVU5MThoR0Rya0plaUNYeStzM0xMRlkzdTRUMHhzbEtP?=
 =?utf-8?B?NFZZcFRXU3BERjV1dWljLzYrZDJsVEtnczNJS1pwOE5NSGc9PQ==?=
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:(13230040)(376014)(36860700013)(82310400026)(1800799024)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 10:00:57.7658
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3e13558b-2832-4a18-4f6a-08dcf412c1cd
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:
	DB5PEPF00014B99.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5705

SGkgSmVucywNCg0KPiBPbiAyNCBPY3QgMjAyNCwgYXQgMTA6MTUsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IE9uIFdlZCwgT2N0IDIzLCAy
MDI0IGF0IDExOjU44oCvQU0gSmVucyBXaWtsYW5kZXINCj4gPGplbnMud2lrbGFuZGVyQGxpbmFy
by5vcmc+IHdyb3RlOg0KPj4gDQo+PiBIaSBCZXJ0cmFuZCwNCj4+IA0KPj4gT24gV2VkLCBPY3Qg
MTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+PiA8YmVydHJhbmQubWFy
cXVpc0Bhcm0uY29tPiB3cm90ZToNCj4+PiANCj4+PiBDcmVhdGUgYSBiaXRtYXAgdG8gc3RvcmUg
d2hpY2ggZmVhdHVyZSBpcyBzdXBwb3J0ZWQgb3Igbm90IGJ5IHRoZQ0KPj4+IGZpcm13YXJlIGFu
ZCB1c2UgaXQgdG8gZmlsdGVyIHdoaWNoIGNhbGxzIGFyZSBkb25lIHRvIHRoZSBmaXJtd2FyZS4N
Cj4+PiANCj4+PiBXaGlsZSB0aGVyZSByZW9kZXIgQUJJIGRlZmluaXRpb24gYnkgbnVtYmVycyB0
byBlYXNpbHkgZmluZCB0aGUgbWluIGFuZA0KPj4+IG1heCBvbmVzLg0KPj4+IA0KPj4+IFNpZ25l
ZC1vZmYtYnk6IEJlcnRyYW5kIE1hcnF1aXMgPGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4NCj4+
PiAtLS0NCj4+PiBDaGFuZ2VzIGluIHYyOg0KPj4+IC0gcmVuYW1lIGZ3X2ZlYXQgdG8gYWJpIGFu
ZCBtYWNyb3MgdG8gRkZBX0FCSSB0byBiZSBjb2hlcmVudCB3aXRoIHRoZQ0KPj4+ICBhYmkgbmVl
ZGVkIGNoYW5nZSBkb25lIGJlZm9yZQ0KPj4+IC0gcmV3b3JrIHRoZSBtYWNyb3MgdG8gYmUgc2lt
cGxlciBieSBkaXJlY3RseSBkZWZpbmluZyBNSU4gYW5kIE1BWCB1c2luZw0KPj4+ICBvbmx5IEZ1
bmN0aW9uIGlkcw0KPj4+IC0gY2hlY2sgdGhhdCByZXF1ZXN0ZWQgZnVuY3Rpb24gaWRzIGRvIG5v
dCBnbyBvdmVyIHRoZSBiaXRtYXAgc2l6ZSBpbg0KPj4+ICBmZmFfZndfc3VwcG9ydHNfZmlkDQo+
Pj4gLSBhZGQgYW4gQVNTRVJUIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvIG5vdCB0cnkgdG8gc2V0
IGJpdHMgb3V0c2lkZSBvZg0KPj4+ICB0aGUgYml0bWFwDQo+Pj4gLSB0dXJuIG9mZiBGRi1BIGlm
IHRoZXJlIGlzIG5vdCBmaXJtd2FyZSBzdXBwb3J0IGFuZCBhZGFwdCB0aGUgY29tbWl0DQo+Pj4g
IG1lc3NhZ2UgdG8gcmVmbGVjdCB0aGlzDQo+Pj4gLSBhZGQgYSBjb21waWxlIHRpbWUgY2hlY2sg
dGhhdCBGRkFfQUJJX01JTiA8IEZGQV9BQklfTUFYDQo+Pj4gLSByZW1vdmUgc3B1cmlvdXMgbGlu
ZSByZW1vdmFsDQo+Pj4gLSByZXN0b3JlIHByb3BlciBjbGVhbnVwIG9mIHJ4dHggaW5pdCBpbiBj
YXNlIG9mIGVycm9yDQo+Pj4gLSByZW9yZGVyIEFCSSBieSBudW1iZXJzDQo+Pj4gLS0tDQo+Pj4g
eGVuL2FyY2gvYXJtL3RlZS9mZmEuYyAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKy0tLS0t
LS0tLQ0KPj4+IHhlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMgICAgfCAgNyArKysrKysNCj4+
PiB4ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wYXJ0aW5mby5jIHwgMzAgKysrKysrKysrKysrKysrKysr
KysrKysrKy0NCj4+PiB4ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmggIHwgMzggKysrKysr
KysrKysrKysrKysrKysrKysrKysrKy0tLS0tDQo+Pj4geGVuL2FyY2gvYXJtL3RlZS9mZmFfcnh0
eC5jICAgICB8ICA0ICsrKysNCj4+PiB4ZW4vYXJjaC9hcm0vdGVlL2ZmYV9zaG0uYyAgICAgIHwg
MTIgKysrKysrKysrKysNCj4+PiA2IGZpbGVzIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCAx
NiBkZWxldGlvbnMoLSkNCj4+IA0KPj4gTG9va3MgZ29vZC4NCj4+IFJldmlld2VkLWJ5OiBKZW5z
IFdpa2xhbmRlciA8amVucy53aWtsYW5kZXJAbGluYXJvLm9yZz4NCj4gDQo+IEknbSBzb3JyeSwg
SSdtIGhhdmluZyBzZWNvbmQgdGhvdWdodHMgYWJvdXQgdGhpcyBwYXRjaC4gSSBoYXZlIHR3byBj
b25jZXJuczoNCj4gMS4gWGVuIHdpbGwgY29tcGxhaW4gYXQgYm9vdCB3aXRoIFhFTkxPR19JTkZP
IGlmIGFuIEFCSSBmdW5jdGlvbg0KPiBsaXN0ZWQgaW4gZmZhX2Z3X2FiaV9uZWVkZWQgaXMgbWlz
c2luZy4gV2l0aCB0aGUgY3VycmVudCBsaXN0IG9mIEFCSQ0KPiBmdW5jdGlvbnMgdGhhdCdzIHNv
bWV3aGF0IE9LIHNpbmNlIGl0IHdhcyBhIGNhdXNlIG9mIGRpc2FibGluZyBGRi1BDQo+IHN1cHBv
cnQgYmVmb3JlLiBCdXQgYXMgdGhlIGxpc3QgZ3Jvd3MgaXQgbWF5IGJlY29tZSBhbm5veWluZyBv
ciBldmVuDQo+IGNvbmZ1c2luZyBzaW5jZSB3aGVuIFhlbiBzdXBwb3J0cyBtb3JlIGZlYXR1cmVz
IGl0IG1heSBjb21wbGFpbiBtb3JlDQo+IGV2ZW4gaWYgdGhlcmUgaXMgbm8gcmVncmVzc2lvbiBj
b21wYXJlZCB0byBwcmV2aW91cyB2ZXJzaW9ucy4gSWYgd2UNCj4gbmVlZCB0byBwcmludCBhbnl0
aGluZyBwZXJoYXBzIFhFTkxPR19ERUJVRyBpcyBiZXR0ZXIuDQoNClRoaXMgaXMgb25seSBwcmlu
dGVkIGF0IGJvb3QgYW5kIGluIHRoZSB3b3JzdCBjYXNlIGl0IHdvdWxkIGxpc3QgYWxsIG5lZWRl
ZCBBQkkuDQpJZiB0aGUgbGlzdCBwcmludGVkIGJlY29tZXMgYmlnLCBpdCBwcm9iYWJseSBtZWFu
cyB0aGF0IGFsbW9zdCBub3RoaW5nIGlzDQpwb3NzaWJsZSB0byBkbyB3aGljaCBtaWdodCBiZSBp
bnRlcmVzdGluZyBmb3IgdGhlIHVzZXIuDQpPbmx5IHNlZWluZyB0aGlzIGluZm9ybWF0aW9uIHdp
dGggZGVidWcgcHJpbnRzIG1pZ2h0IGxlYWQgaW50byBub3JtYWwgdXNlcnMNCm5vdCB1bmRlcnN0
YW5kaW5nIHdoeSBjb21tdW5pY2F0aW9uIHdpdGggc2VjdXJlIHdvcmxkIGFyZSBub3Qgd29ya2lu
Zw0Kd2l0aG91dCBoYXZpbmcgYSByZWFzb24uDQpJIHdvdWxkIGV4cGVjdCB0aGF0IHRoZSBtb3N0
IGNvbW1vbiBjYXNlIHdpbGwgYmUgZm9yIHRoZSBsaXN0IG9mIHByaW50ZWQNCmVudHJpZXMgdG8g
YmUgbGltaXRlZCAocmlnaHQgbm93IGl0IG9ubHkgcHJpbnRzIHNvbWV0aGluZyBmb3IgNjRiaXQg
c2hhcmluZyB3aGljaA0Kc2hvdWxkIGJlIHNvbHZlZCBpbiBIYWZuaXVtKS4NCkFzIFhlbiBpcyBh
bHJlYWR5IHF1aXRlIHZlcmJvc2UgaW4gSU5GTyBtb2RlIGR1cmluZyBib290IGFuZCB0aGlzIGlz
IG5vdA0KYSBydW50aW1lIHByaW50LCBJIHRoaW5rIGl0IGlzIG9rLg0KDQo+IDIuIEZGQV9GRUFU
VVJFUyBtYXkgcmV0dXJuIHN1Y2Nlc3MgZm9yIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgYnkgdGhl
DQo+IFNQTUMuIEhvdyBhYm91dCBvbmx5IHJldHVybmluZyBzdWNjZXNzIGZvciBmZWF0dXJlcyBp
biB0aGUNCj4gZmZhX2Z3X2FiaV9uZWVkZWQgYml0bWFwPw0KDQpUaGlzIHdvdWxkIGJlIGEgcmVp
bnRlcnByZXRhdGlvbiBvZiB0aGUgc3BlY2lmaWNhdGlvbiBhbmQgY291bGQgY3JlYXRlDQppc3N1
ZXMgaW4gc29tZSBjYXNlcyAoc29tZSBBQklzIG1pZ2h0IGJlIHN1cHBvcnRlZCBieSBYZW4gYnV0
IG5vdA0KYnkgdGhlIFNQTUMgYW5kIHN0aWxsIHdvcmsgY29ycmVjdGx5IHRoaXMgd2F5KSBhbmQg
ZXZlbiBtb3JlIHdoZW4NCndlIHdpbGwgaGF2ZSBWTSB0byBWTS4NClRoZSBzcGVjaWZpY2F0aW9u
IGlzIHNheWluZyB0aGF0IHdlIHNob3VsZCByZXR1cm4gd2hhdCB3ZSBzdXBwb3J0IGFuZA0Kbm90
IHdoYXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBTUE1DLiBGaWx0ZXJpbmcgYmFzZWQgb24gd2hhdCBp
cyBzdXBwb3J0ZWQNCmJ5IHRoZSBTUE1DIGFuZCB3aGF0IHdpbGwgc3RpbGwgd29yayBpZiBub3Qg
c3VwcG9ydGVkIGJ5IHRoZSBTUE1DIGFuZA0Kd2hhdCB3ZSBkbyBub3Qgc3VwcG9ydCBldmVuIGlm
IGl0IGlzIHN1cHBvcnRlZCBieSB0aGUgU1BNQyBtaWdodCBiZWNvbWUNCnF1aWNrbHkgdmVyeSBj
b21wbGV4Lg0KDQpXaGF0IGRvIHlvdSB0aGluayB3ZSB3b3VsZCBnYWluIGZyb20gZG9pbmcgd2hh
dCB5b3Ugc3VnZ2VzdCBpbnN0ZWFkIG9mDQp3aGF0IHdlIGhhdmUgcmlnaHQgbm93ID8NCg0KQ2hl
ZXJzDQpCZXJ0cmFuZA0KDQo+IA0KPiBDaGVlcnMsDQo+IEplbnMNCj4gDQo+PiANCj4+IENoZWVy
cywNCj4+IEplbnMNCj4+IA0KPj4+IA0KPj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVl
L2ZmYS5jIGIveGVuL2FyY2gvYXJtL3RlZS9mZmEuYw0KPj4+IGluZGV4IDFlZTZiMjg5NWU5Mi4u
MjY3ZDQ0MzVhYzA4IDEwMDY0NA0KPj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMNCj4+
PiArKysgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jDQo+Pj4gQEAgLTcyLDcgKzcyLDEwIEBADQo+
Pj4gI2luY2x1ZGUgImZmYV9wcml2YXRlLmgiDQo+Pj4gDQo+Pj4gLyogTmVnb3RpYXRlZCBGRi1B
IHZlcnNpb24gdG8gdXNlIHdpdGggdGhlIFNQTUMsIDAgaWYgbm90IHRoZXJlIG9yIHN1cHBvcnRl
ZCAqLw0KPj4+IC1zdGF0aWMgdWludDMyX3QgX19yb19hZnRlcl9pbml0IGZmYV9md192ZXJzaW9u
Ow0KPj4+ICt1aW50MzJfdCBfX3JvX2FmdGVyX2luaXQgZmZhX2Z3X3ZlcnNpb247DQo+Pj4gKw0K
Pj4+ICsvKiBGZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhlIFNQTUMgb3Igc2VjdXJlIHdvcmxkIHdo
ZW4gcHJlc2VudCAqLw0KPj4+ICtERUNMQVJFX0JJVE1BUChmZmFfZndfYWJpX3N1cHBvcnRlZCwg
RkZBX0FCSV9CSVRNQVBfU0laRSk7DQo+Pj4gDQo+Pj4gc3RydWN0IGZmYV9md19hYmkgew0KPj4+
ICAgICBjb25zdCB1aW50MzJfdCBpZDsNCj4+PiBAQCAtMTc3LDYgKzE4MCwxMyBAQCBzdGF0aWMg
dm9pZCBoYW5kbGVfbXNnX3NlbmRfZGlyZWN0X3JlcShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn
cywgdWludDMyX3QgZmlkKQ0KPj4+ICAgICBlbHNlDQo+Pj4gICAgICAgICBtYXNrID0gR0VOTUFT
S19VTEwoMzEsIDApOw0KPj4+IA0KPj4+ICsgICAgaWYgKCAhZmZhX2Z3X3N1cHBvcnRzX2ZpZChm
aWQpICkNCj4+PiArICAgIHsNCj4+PiArICAgICAgICByZXNwLmEwID0gRkZBX0VSUk9SOw0KPj4+
ICsgICAgICAgIHJlc3AuYTIgPSBGRkFfUkVUX05PVF9TVVBQT1JURUQ7DQo+Pj4gKyAgICAgICAg
Z290byBvdXQ7DQo+Pj4gKyAgICB9DQo+Pj4gKw0KPj4+ICAgICBzcmNfZHN0ID0gZ2V0X3VzZXJf
cmVnKHJlZ3MsIDEpOw0KPj4+ICAgICBpZiAoIChzcmNfZHN0ID4+IDE2KSAhPSBmZmFfZ2V0X3Zt
X2lkKGQpICkNCj4+PiAgICAgew0KPj4+IEBAIC01NzcsMTkgKzU4NywxNiBAQCBzdGF0aWMgYm9v
bCBmZmFfcHJvYmUodm9pZCkNCj4+PiAgICAgZWxzZQ0KPj4+ICAgICAgICAgZmZhX2Z3X3ZlcnNp
b24gPSB2ZXJzOw0KPj4+IA0KPj4+IC0gICAgLyoNCj4+PiAtICAgICAqIEF0IHRoZSBtb21lbnQg
ZG9tYWlucyBtdXN0IHN1cHBvcnQgdGhlIHNhbWUgZmVhdHVyZXMgdXNlZCBieSBYZW4uDQo+Pj4g
LSAgICAgKiBUT0RPOiBSZXdvcmsgdGhlIGNvZGUgdG8gYWxsb3cgZG9tYWluIHRvIHVzZSBhIHN1
YnNldCBvZiB0aGUNCj4+PiAtICAgICAqIGZlYXR1cmVzIHN1cHBvcnRlZC4NCj4+PiAtICAgICAq
Lw0KPj4+ICAgICBmb3IgKCB1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZmYV9m
d19hYmlfbmVlZGVkKTsgaSsrICkNCj4+PiAgICAgew0KPj4+IC0gICAgICAgIGlmICggIWZmYV9h
Ymlfc3VwcG9ydGVkKGZmYV9md19hYmlfbmVlZGVkW2ldLmlkKSApDQo+Pj4gLSAgICAgICAgew0K
Pj4+ICsgICAgICAgIEFTU0VSVChGRkFfQUJJX0JJVE5VTShmZmFfZndfYWJpX25lZWRlZFtpXS5p
ZCkgPCBGRkFfQUJJX0JJVE1BUF9TSVpFKTsNCj4+PiArDQo+Pj4gKyAgICAgICAgaWYgKCBmZmFf
YWJpX3N1cHBvcnRlZChmZmFfZndfYWJpX25lZWRlZFtpXS5pZCkgKQ0KPj4+ICsgICAgICAgICAg
ICBzZXRfYml0KEZGQV9BQklfQklUTlVNKGZmYV9md19hYmlfbmVlZGVkW2ldLmlkKSwNCj4+PiAr
ICAgICAgICAgICAgICAgICAgICBmZmFfZndfYWJpX3N1cHBvcnRlZCk7DQo+Pj4gKyAgICAgICAg
ZWxzZQ0KPj4+ICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQVJNIEZGLUEgRmlybXdh
cmUgZG9lcyBub3Qgc3VwcG9ydCAlc1xuIiwNCj4+PiAgICAgICAgICAgICAgICAgICAgZmZhX2Z3
X2FiaV9uZWVkZWRbaV0ubmFtZSk7DQo+Pj4gLSAgICAgICAgICAgIGdvdG8gZXJyX25vX2Z3Ow0K
Pj4+IC0gICAgICAgIH0NCj4+PiAgICAgfQ0KPj4+IA0KPj4+ICAgICBpZiAoICFmZmFfcnh0eF9p
bml0KCkgKQ0KPj4+IEBAIC02MTEsNiArNjE4LDcgQEAgZXJyX3J4dHhfZGVzdHJveToNCj4+PiAg
ICAgZmZhX3J4dHhfZGVzdHJveSgpOw0KPj4+IGVycl9ub19mdzoNCj4+PiAgICAgZmZhX2Z3X3Zl
cnNpb24gPSAwOw0KPj4+ICsgICAgYml0bWFwX3plcm8oZmZhX2Z3X2FiaV9zdXBwb3J0ZWQsIEZG
QV9BQklfQklUTUFQX1NJWkUpOw0KPj4+ICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgIkFSTSBG
Ri1BIE5vIGZpcm13YXJlIHN1cHBvcnRcbiIpOw0KPj4+IA0KPj4+ICAgICByZXR1cm4gZmFsc2U7
DQo+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMgYi94ZW4vYXJj
aC9hcm0vdGVlL2ZmYV9ub3RpZi5jDQo+Pj4gaW5kZXggNTQxZTYxZDJmNjA2Li40YjNlNDYzMThm
NGIgMTAwNjQ0DQo+Pj4gLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9mZmFfbm90aWYuYw0KPj4+ICsr
KyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX25vdGlmLmMNCj4+PiBAQCAtMzc3LDYgKzM3NywxMyBA
QCB2b2lkIGZmYV9ub3RpZl9pbml0KHZvaWQpDQo+Pj4gICAgIHVuc2lnbmVkIGludCBpcnE7DQo+
Pj4gICAgIGludCByZXQ7DQo+Pj4gDQo+Pj4gKyAgICAvKiBPbmx5IGVuYWJsZSBmdyBub3RpZmlj
YXRpb24gaWYgYWxsIEFCSXMgd2UgbmVlZCBhcmUgc3VwcG9ydGVkICovDQo+Pj4gKyAgICBpZiAo
ICEoZmZhX2Z3X3N1cHBvcnRzX2ZpZChGRkFfTk9USUZJQ0FUSU9OX0JJVE1BUF9DUkVBVEUpICYm
DQo+Pj4gKyAgICAgICAgICAgZmZhX2Z3X3N1cHBvcnRzX2ZpZChGRkFfTk9USUZJQ0FUSU9OX0JJ
VE1BUF9ERVNUUk9ZKSAmJg0KPj4+ICsgICAgICAgICAgIGZmYV9md19zdXBwb3J0c19maWQoRkZB
X05PVElGSUNBVElPTl9HRVQpICYmDQo+Pj4gKyAgICAgICAgICAgZmZhX2Z3X3N1cHBvcnRzX2Zp
ZChGRkFfTk9USUZJQ0FUSU9OX0lORk9fR0VUXzY0KSkgKQ0KPj4+ICsgICAgICAgIHJldHVybjsN
Cj4+PiArDQo+Pj4gICAgIGFybV9zbWNjY18xXzJfc21jKCZhcmcsICZyZXNwKTsNCj4+PiAgICAg
aWYgKCByZXNwLmEwICE9IEZGQV9TVUNDRVNTXzMyICkNCj4+PiAgICAgICAgIHJldHVybjsNCj4+
PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RlZS9mZmFfcGFydGluZm8uYyBiL3hlbi9hcmNo
L2FybS90ZWUvZmZhX3BhcnRpbmZvLmMNCj4+PiBpbmRleCA5M2EwM2M2YmM2NzIuLjk5YzQ4ZjBl
NWMwNSAxMDA2NDQNCj4+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wYXJ0aW5mby5jDQo+
Pj4gKysrIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfcGFydGluZm8uYw0KPj4+IEBAIC03Nyw3ICs3
NywxNSBAQCBpbnQzMl90IGZmYV9oYW5kbGVfcGFydGl0aW9uX2luZm9fZ2V0KHVpbnQzMl90IHcx
LCB1aW50MzJfdCB3MiwgdWludDMyX3QgdzMsDQo+Pj4gICAgICAqLw0KPj4+ICAgICBpZiAoIHc1
ID09IEZGQV9QQVJUSVRJT05fSU5GT19HRVRfQ09VTlRfRkxBRyAmJg0KPj4+ICAgICAgICAgIGN0
eC0+Z3Vlc3RfdmVycyA9PSBGRkFfVkVSU0lPTl8xXzEgKQ0KPj4+IC0gICAgICAgIHJldHVybiBm
ZmFfcGFydGl0aW9uX2luZm9fZ2V0KHcxLCB3MiwgdzMsIHc0LCB3NSwgY291bnQsIGZwaV9zaXpl
KTsNCj4+PiArICAgIHsNCj4+PiArICAgICAgICBpZiAoIGZmYV9md19zdXBwb3J0c19maWQoRkZB
X1BBUlRJVElPTl9JTkZPX0dFVCkgKQ0KPj4+ICsgICAgICAgICAgICByZXR1cm4gZmZhX3BhcnRp
dGlvbl9pbmZvX2dldCh3MSwgdzIsIHczLCB3NCwgdzUsIGNvdW50LCBmcGlfc2l6ZSk7DQo+Pj4g
KyAgICAgICAgZWxzZQ0KPj4+ICsgICAgICAgIHsNCj4+PiArICAgICAgICAgICAgKmNvdW50ID0g
MDsNCj4+PiArICAgICAgICAgICAgcmV0dXJuIEZGQV9SRVRfT0s7DQo+Pj4gKyAgICAgICAgfQ0K
Pj4+ICsgICAgfQ0KPj4+ICAgICBpZiAoIHc1ICkNCj4+PiAgICAgICAgIHJldHVybiBGRkFfUkVU
X0lOVkFMSURfUEFSQU1FVEVSUzsNCj4+PiANCj4+PiBAQCAtODcsNiArOTUsMTggQEAgaW50MzJf
dCBmZmFfaGFuZGxlX3BhcnRpdGlvbl9pbmZvX2dldCh1aW50MzJfdCB3MSwgdWludDMyX3QgdzIs
IHVpbnQzMl90IHczLA0KPj4+ICAgICBpZiAoICFzcGluX3RyeWxvY2soJmN0eC0+cnhfbG9jaykg
KQ0KPj4+ICAgICAgICAgcmV0dXJuIEZGQV9SRVRfQlVTWTsNCj4+PiANCj4+PiArICAgIGlmICgg
IWZmYV9md19zdXBwb3J0c19maWQoRkZBX1BBUlRJVElPTl9JTkZPX0dFVCkgKQ0KPj4+ICsgICAg
ew0KPj4+ICsgICAgICAgIGlmICggY3R4LT5ndWVzdF92ZXJzID09IEZGQV9WRVJTSU9OXzFfMCAp
DQo+Pj4gKyAgICAgICAgICAgICpmcGlfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZmZhX3BhcnRpdGlv
bl9pbmZvXzFfMCk7DQo+Pj4gKyAgICAgICAgZWxzZQ0KPj4+ICsgICAgICAgICAgICAqZnBpX3Np
emUgPSBzaXplb2Yoc3RydWN0IGZmYV9wYXJ0aXRpb25faW5mb18xXzEpOw0KPj4+ICsNCj4+PiAr
ICAgICAgICAqY291bnQgPSAwOw0KPj4+ICsgICAgICAgIHJldCA9IEZGQV9SRVRfT0s7DQo+Pj4g
KyAgICAgICAgZ290byBvdXQ7DQo+Pj4gKyAgICB9DQo+Pj4gKw0KPj4+ICAgICBpZiAoICFjdHgt
PnBhZ2VfY291bnQgfHwgIWN0eC0+cnhfaXNfZnJlZSApDQo+Pj4gICAgICAgICBnb3RvIG91dDsN
Cj4+PiAgICAgc3Bpbl9sb2NrKCZmZmFfcnhfYnVmZmVyX2xvY2spOw0KPj4+IEBAIC0yNTAsNiAr
MjcwLDExIEBAIGJvb2wgZmZhX3BhcnRpbmZvX2luaXQodm9pZCkNCj4+PiAgICAgdWludDMyX3Qg
Y291bnQ7DQo+Pj4gICAgIGludCBlOw0KPj4+IA0KPj4+ICsgICAgaWYgKCAhZmZhX2Z3X3N1cHBv
cnRzX2ZpZChGRkFfUEFSVElUSU9OX0lORk9fR0VUKSB8fA0KPj4+ICsgICAgICAgICAhZmZhX2Z3
X3N1cHBvcnRzX2ZpZChGRkFfTVNHX1NFTkRfRElSRUNUX1JFUV8zMikgfHwNCj4+PiArICAgICAg
ICAgIWZmYV9yeCB8fCAhZmZhX3R4ICkNCj4+PiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+Pj4g
Kw0KPj4+ICAgICBlID0gZmZhX3BhcnRpdGlvbl9pbmZvX2dldCgwLCAwLCAwLCAwLCAwLCAmY291
bnQsICZmcGlfc2l6ZSk7DQo+Pj4gICAgIGlmICggZSApDQo+Pj4gICAgIHsNCj4+PiBAQCAtMzEz
LDYgKzMzOCw5IEBAIGludCBmZmFfcGFydGluZm9fZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAq
ZCkNCj4+PiAgICAgdW5zaWduZWQgaW50IG47DQo+Pj4gICAgIGludDMyX3QgcmVzOw0KPj4+IA0K
Pj4+ICsgICAgaWYgKCAhZmZhX2Z3X3N1cHBvcnRzX2ZpZChGRkFfTVNHX1NFTkRfRElSRUNUX1JF
UV8zMikgKQ0KPj4+ICsgICAgICAgIHJldHVybiAwOw0KPj4+ICsNCj4+PiAgICAgY3R4LT52bV9k
ZXN0cm95X2JpdG1hcCA9IHh6YWxsb2NfYXJyYXkodW5zaWduZWQgbG9uZywgY291bnQpOw0KPj4+
ICAgICBpZiAoICFjdHgtPnZtX2Rlc3Ryb3lfYml0bWFwICkNCj4+PiAgICAgICAgIHJldHVybiAt
RU5PTUVNOw0KPj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmgg
Yi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmgNCj4+PiBpbmRleCAwNDVkOWM0YTBiNTYu
Ljg1ZWI2MWMxMzQ2NCAxMDA2NDQNCj4+PiAtLS0gYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2
YXRlLmgNCj4+PiArKysgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9wcml2YXRlLmgNCj4+PiBAQCAt
MTQsNiArMTQsNyBAQA0KPj4+ICNpbmNsdWRlIDx4ZW4vc3BpbmxvY2suaD4NCj4+PiAjaW5jbHVk
ZSA8eGVuL3NjaGVkLmg+DQo+Pj4gI2luY2x1ZGUgPHhlbi90aW1lLmg+DQo+Pj4gKyNpbmNsdWRl
IDx4ZW4vYml0bWFwLmg+DQo+Pj4gDQo+Pj4gLyogRXJyb3IgY29kZXMgKi8NCj4+PiAjZGVmaW5l
IEZGQV9SRVRfT0sgICAgICAgICAgICAgICAgICAgICAgMA0KPj4+IEBAIC0yMDEsMTggKzIwMiwx
NyBAQA0KPj4+ICNkZWZpbmUgRkZBX0lOVEVSUlVQVCAgICAgICAgICAgICAgICAgICAweDg0MDAw
MDYyVQ0KPj4+ICNkZWZpbmUgRkZBX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAweDg0MDAw
MDYzVQ0KPj4+ICNkZWZpbmUgRkZBX0ZFQVRVUkVTICAgICAgICAgICAgICAgICAgICAweDg0MDAw
MDY0VQ0KPj4+IC0jZGVmaW5lIEZGQV9SWF9BQ1FVSVJFICAgICAgICAgICAgICAgICAgMHg4NDAw
MDA4NFUNCj4+PiAjZGVmaW5lIEZGQV9SWF9SRUxFQVNFICAgICAgICAgICAgICAgICAgMHg4NDAw
MDA2NVUNCj4+PiAjZGVmaW5lIEZGQV9SWFRYX01BUF8zMiAgICAgICAgICAgICAgICAgMHg4NDAw
MDA2NlUNCj4+PiAjZGVmaW5lIEZGQV9SWFRYX01BUF82NCAgICAgICAgICAgICAgICAgMHhDNDAw
MDA2NlUNCj4+PiAjZGVmaW5lIEZGQV9SWFRYX1VOTUFQICAgICAgICAgICAgICAgICAgMHg4NDAw
MDA2N1UNCj4+PiAjZGVmaW5lIEZGQV9QQVJUSVRJT05fSU5GT19HRVQgICAgICAgICAgMHg4NDAw
MDA2OFUNCj4+PiAjZGVmaW5lIEZGQV9JRF9HRVQgICAgICAgICAgICAgICAgICAgICAgMHg4NDAw
MDA2OVUNCj4+PiAtI2RlZmluZSBGRkFfU1BNX0lEX0dFVCAgICAgICAgICAgICAgICAgIDB4ODQw
MDAwODVVDQo+Pj4gKyNkZWZpbmUgRkZBX01TR19QT0xMICAgICAgICAgICAgICAgICAgICAweDg0
MDAwMDZBVQ0KPj4+ICNkZWZpbmUgRkZBX01TR19XQUlUICAgICAgICAgICAgICAgICAgICAweDg0
MDAwMDZCVQ0KPj4+ICNkZWZpbmUgRkZBX01TR19ZSUVMRCAgICAgICAgICAgICAgICAgICAweDg0
MDAwMDZDVQ0KPj4+ICNkZWZpbmUgRkZBX1JVTiAgICAgICAgICAgICAgICAgICAgICAgICAweDg0
MDAwMDZEVQ0KPj4+IC0jZGVmaW5lIEZGQV9NU0dfU0VORDIgICAgICAgICAgICAgICAgICAgMHg4
NDAwMDA4NlUNCj4+PiArI2RlZmluZSBGRkFfTVNHX1NFTkQgICAgICAgICAgICAgICAgICAgIDB4
ODQwMDAwNkVVDQo+Pj4gI2RlZmluZSBGRkFfTVNHX1NFTkRfRElSRUNUX1JFUV8zMiAgICAgIDB4
ODQwMDAwNkZVDQo+Pj4gI2RlZmluZSBGRkFfTVNHX1NFTkRfRElSRUNUX1JFUV82NCAgICAgIDB4
QzQwMDAwNkZVDQo+Pj4gI2RlZmluZSBGRkFfTVNHX1NFTkRfRElSRUNUX1JFU1BfMzIgICAgIDB4
ODQwMDAwNzBVDQo+Pj4gQEAgLTIzMCw4ICsyMzAsNiBAQA0KPj4+ICNkZWZpbmUgRkZBX01FTV9S
RUNMQUlNICAgICAgICAgICAgICAgICAweDg0MDAwMDc3VQ0KPj4+ICNkZWZpbmUgRkZBX01FTV9G
UkFHX1JYICAgICAgICAgICAgICAgICAweDg0MDAwMDdBVQ0KPj4+ICNkZWZpbmUgRkZBX01FTV9G
UkFHX1RYICAgICAgICAgICAgICAgICAweDg0MDAwMDdCVQ0KPj4+IC0jZGVmaW5lIEZGQV9NU0df
U0VORCAgICAgICAgICAgICAgICAgICAgMHg4NDAwMDA2RVUNCj4+PiAtI2RlZmluZSBGRkFfTVNH
X1BPTEwgICAgICAgICAgICAgICAgICAgIDB4ODQwMDAwNkFVDQo+Pj4gI2RlZmluZSBGRkFfTk9U
SUZJQ0FUSU9OX0JJVE1BUF9DUkVBVEUgIDB4ODQwMDAwN0RVDQo+Pj4gI2RlZmluZSBGRkFfTk9U
SUZJQ0FUSU9OX0JJVE1BUF9ERVNUUk9ZIDB4ODQwMDAwN0VVDQo+Pj4gI2RlZmluZSBGRkFfTk9U
SUZJQ0FUSU9OX0JJTkQgICAgICAgICAgIDB4ODQwMDAwN0ZVDQo+Pj4gQEAgLTI0MCw2ICsyMzgs
MjUgQEANCj4+PiAjZGVmaW5lIEZGQV9OT1RJRklDQVRJT05fR0VUICAgICAgICAgICAgMHg4NDAw
MDA4MlUNCj4+PiAjZGVmaW5lIEZGQV9OT1RJRklDQVRJT05fSU5GT19HRVRfMzIgICAgMHg4NDAw
MDA4M1UNCj4+PiAjZGVmaW5lIEZGQV9OT1RJRklDQVRJT05fSU5GT19HRVRfNjQgICAgMHhDNDAw
MDA4M1UNCj4+PiArI2RlZmluZSBGRkFfUlhfQUNRVUlSRSAgICAgICAgICAgICAgICAgIDB4ODQw
MDAwODRVDQo+Pj4gKyNkZWZpbmUgRkZBX1NQTV9JRF9HRVQgICAgICAgICAgICAgICAgICAweDg0
MDAwMDg1VQ0KPj4+ICsjZGVmaW5lIEZGQV9NU0dfU0VORDIgICAgICAgICAgICAgICAgICAgMHg4
NDAwMDA4NlUNCj4+PiArDQo+Pj4gKy8qKg0KPj4+ICsgKiBFbmNvZGluZyBvZiBmZWF0dXJlcyBz
dXBwb3J0ZWQgb3Igbm90IGJ5IHRoZSBmdyBpbiBhIGJpdG1hcDoNCj4+PiArICogLSBGdW5jdGlv
biBJRHMgYXJlIGdvaW5nIGZyb20gMHg2MCB0byAweEZGDQo+Pj4gKyAqIC0gQSBmdW5jdGlvbiBj
YW4gYmUgc3VwcG9ydGVkIGluIDMyIGFuZC9vciA2NGJpdA0KPj4+ICsgKiBUaGUgYml0bWFwIGhh
cyBvbmUgYml0IGZvciBlYWNoIGZ1bmN0aW9uIGluIDMyIGFuZCA2NCBiaXQuDQo+Pj4gKyAqLw0K
Pj4+ICsjZGVmaW5lIEZGQV9BQklfSUQoaWQpICAgICAgICAoKGlkKSAmIEFSTV9TTUNDQ19GVU5D
X01BU0spDQo+Pj4gKyNkZWZpbmUgRkZBX0FCSV9DT05WKGlkKSAgICAgICgoKGlkKSA+PiBBUk1f
U01DQ0NfQ09OVl9TSElGVCkgJiBCSVQoMCxVKSkNCj4+PiArDQo+Pj4gKyNkZWZpbmUgRkZBX0FC
SV9NSU4gICAgICAgICAgIEZGQV9BQklfSUQoRkZBX0VSUk9SKQ0KPj4+ICsjZGVmaW5lIEZGQV9B
QklfTUFYICAgICAgICAgICBGRkFfQUJJX0lEKEZGQV9NU0dfU0VORDIpDQo+Pj4gKw0KPj4+ICsj
ZGVmaW5lIEZGQV9BQklfQklUTUFQX1NJWkUgICAoMiAqIChGRkFfQUJJX01BWCAtIEZGQV9BQklf
TUlOICsgMSkpDQo+Pj4gKyNkZWZpbmUgRkZBX0FCSV9CSVROVU0oaWQpICAgICgoRkZBX0FCSV9J
RChpZCkgLSBGRkFfQUJJX01JTikgPDwgMSB8IFwNCj4+PiArICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZGQV9BQklfQ09OVihpZCkpDQo+Pj4gDQo+Pj4gc3RydWN0IGZmYV9jdHhfbm90
aWYgew0KPj4+ICAgICBib29sIGVuYWJsZWQ7DQo+Pj4gQEAgLTI4OSw2ICszMDYsOCBAQCBleHRl
cm4gdm9pZCAqZmZhX3J4Ow0KPj4+IGV4dGVybiB2b2lkICpmZmFfdHg7DQo+Pj4gZXh0ZXJuIHNw
aW5sb2NrX3QgZmZhX3J4X2J1ZmZlcl9sb2NrOw0KPj4+IGV4dGVybiBzcGlubG9ja190IGZmYV90
eF9idWZmZXJfbG9jazsNCj4+PiArZXh0ZXJuIHVpbnQzMl90IF9fcm9fYWZ0ZXJfaW5pdCBmZmFf
ZndfdmVyc2lvbjsNCj4+PiArZXh0ZXJuIERFQ0xBUkVfQklUTUFQKGZmYV9md19hYmlfc3VwcG9y
dGVkLCBGRkFfQUJJX0JJVE1BUF9TSVpFKTsNCj4+PiANCj4+PiBib29sIGZmYV9zaG1fZG9tYWlu
X2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCk7DQo+Pj4gdm9pZCBmZmFfaGFuZGxlX21lbV9zaGFy
ZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7DQo+Pj4gQEAgLTQwMSw0ICs0MjAsMTMgQEAg
c3RhdGljIGlubGluZSBpbnQzMl90IGZmYV9yeF9yZWxlYXNlKHZvaWQpDQo+Pj4gICAgIHJldHVy
biBmZmFfc2ltcGxlX2NhbGwoRkZBX1JYX1JFTEVBU0UsIDAsIDAsIDAsIDApOw0KPj4+IH0NCj4+
PiANCj4+PiArc3RhdGljIGlubGluZSBib29sIGZmYV9md19zdXBwb3J0c19maWQodWludDMyX3Qg
ZmlkKQ0KPj4+ICt7DQo+Pj4gKyAgICBCVUlMRF9CVUdfT04oRkZBX0FCSV9NSU4gPiBGRkFfQUJJ
X01BWCk7DQo+Pj4gKw0KPj4+ICsgICAgaWYgKCBGRkFfQUJJX0JJVE5VTShmaWQpID4gRkZBX0FC
SV9CSVRNQVBfU0laRSkNCj4+PiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+Pj4gKyAgICByZXR1
cm4gdGVzdF9iaXQoRkZBX0FCSV9CSVROVU0oZmlkKSwgZmZhX2Z3X2FiaV9zdXBwb3J0ZWQpOw0K
Pj4+ICt9DQo+Pj4gKw0KPj4+ICNlbmRpZiAvKl9fRkZBX1BSSVZBVEVfSF9fKi8NCj4+PiBkaWZm
IC0tZ2l0IGEveGVuL2FyY2gvYXJtL3RlZS9mZmFfcnh0eC5jIGIveGVuL2FyY2gvYXJtL3RlZS9m
ZmFfcnh0eC5jDQo+Pj4gaW5kZXggNjYxNzY0MDUyZTY3Li5iNjkzMWM4NTU3NzkgMTAwNjQ0DQo+
Pj4gLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9mZmFfcnh0eC5jDQo+Pj4gKysrIGIveGVuL2FyY2gv
YXJtL3RlZS9mZmFfcnh0eC5jDQo+Pj4gQEAgLTE5Myw2ICsxOTMsMTAgQEAgYm9vbCBmZmFfcnh0
eF9pbml0KHZvaWQpDQo+Pj4gew0KPj4+ICAgICBpbnQgZTsNCj4+PiANCj4+PiArICAgIC8qIEZp
cm13YXJlIG5vdCB0aGVyZSBvciBub3Qgc3VwcG9ydGluZyAqLw0KPj4+ICsgICAgaWYgKCAhZmZh
X2Z3X3N1cHBvcnRzX2ZpZChGRkFfUlhUWF9NQVBfNjQpICkNCj4+PiArICAgICAgICByZXR1cm4g
ZmFsc2U7DQo+Pj4gKw0KPj4+ICAgICBmZmFfcnggPSBhbGxvY194ZW5oZWFwX3BhZ2VzKGdldF9v
cmRlcl9mcm9tX3BhZ2VzKEZGQV9SWFRYX1BBR0VfQ09VTlQpLCAwKTsNCj4+PiAgICAgaWYgKCAh
ZmZhX3J4ICkNCj4+PiAgICAgICAgIHJldHVybiBmYWxzZTsNCj4+PiBkaWZmIC0tZ2l0IGEveGVu
L2FyY2gvYXJtL3RlZS9mZmFfc2htLmMgYi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9zaG0uYw0KPj4+
IGluZGV4IDM3MGQ4M2VjNWNmOC4uZWZhNWI2N2RiOGUxIDEwMDY0NA0KPj4+IC0tLSBhL3hlbi9h
cmNoL2FybS90ZWUvZmZhX3NobS5jDQo+Pj4gKysrIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfc2ht
LmMNCj4+PiBAQCAtMTQ5LDYgKzE0OSw5IEBAIHN0YXRpYyBpbnQzMl90IGZmYV9tZW1fc2hhcmUo
dWludDMyX3QgdG90X2xlbiwgdWludDMyX3QgZnJhZ19sZW4sDQo+Pj4gc3RhdGljIGludDMyX3Qg
ZmZhX21lbV9yZWNsYWltKHVpbnQzMl90IGhhbmRsZV9sbywgdWludDMyX3QgaGFuZGxlX2hpLA0K
Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykNCj4+PiB7
DQo+Pj4gKyAgICBpZiAoICFmZmFfZndfc3VwcG9ydHNfZmlkKEZGQV9NRU1fUkVDTEFJTSkgKQ0K
Pj4+ICsgICAgICAgIHJldHVybiBGRkFfUkVUX05PVF9TVVBQT1JURUQ7DQo+Pj4gKw0KPj4+ICAg
ICByZXR1cm4gZmZhX3NpbXBsZV9jYWxsKEZGQV9NRU1fUkVDTEFJTSwgaGFuZGxlX2xvLCBoYW5k
bGVfaGksIGZsYWdzLCAwKTsNCj4+PiB9DQo+Pj4gDQo+Pj4gQEAgLTQ2Nyw2ICs0NzAsMTIgQEAg
dm9pZCBmZmFfaGFuZGxlX21lbV9zaGFyZShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCj4+
PiAgICAgdWludDMyX3QgcmFuZ2VfY291bnQ7DQo+Pj4gICAgIHVpbnQzMl90IHJlZ2lvbl9vZmZz
Ow0KPj4+IA0KPj4+ICsgICAgaWYgKCAhZmZhX2Z3X3N1cHBvcnRzX2ZpZChGRkFfTUVNX1NIQVJF
XzY0KSApDQo+Pj4gKyAgICB7DQo+Pj4gKyAgICAgICAgcmV0ID0gRkZBX1JFVF9OT1RfU1VQUE9S
VEVEOw0KPj4+ICsgICAgICAgIGdvdG8gb3V0X3NldF9yZXQ7DQo+Pj4gKyAgICB9DQo+Pj4gKw0K
Pj4+ICAgICAvKg0KPj4+ICAgICAgKiBXZSdyZSBvbmx5IGFjY2VwdGluZyBtZW1vcnkgdHJhbnNh
Y3Rpb24gZGVzY3JpcHRvcnMgdmlhIHRoZSByeC90eA0KPj4+ICAgICAgKiBidWZmZXIuDQo+Pj4g
QEAgLTYyMSw2ICs2MzAsOSBAQCBpbnQgZmZhX2hhbmRsZV9tZW1fcmVjbGFpbSh1aW50NjRfdCBo
YW5kbGUsIHVpbnQzMl90IGZsYWdzKQ0KPj4+ICAgICByZWdpc3Rlcl90IGhhbmRsZV9sbzsNCj4+
PiAgICAgaW50IHJldDsNCj4+PiANCj4+PiArICAgIGlmICggIWZmYV9md19zdXBwb3J0c19maWQo
RkZBX01FTV9SRUNMQUlNKSApDQo+Pj4gKyAgICAgICAgcmV0dXJuIEZGQV9SRVRfTk9UX1NVUFBP
UlRFRDsNCj4+PiArDQo+Pj4gICAgIHNwaW5fbG9jaygmY3R4LT5sb2NrKTsNCj4+PiAgICAgc2ht
ID0gZmluZF9zaG1fbWVtKGN0eCwgaGFuZGxlKTsNCj4+PiAgICAgaWYgKCBzaG0gKQ0KPj4+IC0t
DQo+Pj4gMi40Ny4wDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825101.1239313 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uht-0005zM-8x; Thu, 24 Oct 2024 10:04:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825101.1239313; Thu, 24 Oct 2024 10:04: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 1t3uht-0005xE-4Y; Thu, 24 Oct 2024 10:04:41 +0000
Received: by outflank-mailman (input) for mailman id 825101;
 Thu, 24 Oct 2024 10:04: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3uhr-0005hv-OL
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:04:39 +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 61683d3f-91ef-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 12:04:39 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c96b2a10e1so993732a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 03:04:39 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72866sm5482506a12.95.2024.10.24.03.04.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 03:04:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 61683d3f-91ef-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729764278; x=1730369078; 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=QzmWp98zY9Vb786BtlEJUzc3WOUq+fnBSycqJrqunEI=;
        b=Ac4uP4/bxh+PiYgiOzZa8gcANWMDqvKJE5Q1c7ydavSC6R8Kg2rqE9Z1p0xl3ZSduu
         0rxkiX0XKGDdGf51oakkgVu/hv7/XuT45HJXY7k+kP0EEqd72nzKPBUKBFzuTpvKSnPy
         fjK0YHAqIPXY/qqqvC+C0aA2lkYXwmStldsbw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729764278; x=1730369078;
        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=QzmWp98zY9Vb786BtlEJUzc3WOUq+fnBSycqJrqunEI=;
        b=BgxCeKLhyZbN0u6Iq2pN7R0imQN9kdHRqR5T0nVzby6hflPRklEz51W7aYeRDYRv0q
         tiiWE2cCft3km/OjBbh7mCoXZW5rzM5J1cPm6AWrN5d13Vp+TAl784leV+gngFI3z5o8
         lKFiu0CSD38n0goEdQCioPkKYNscBUSXqNE7GzuKKeDDlXoZ9CAlwxZn8tInT4MZzYM/
         VLNV2KEVkmjGpHot/tk888C4Bj6OPxdqh5gn2bYe6ebQeogs3sBIvAvPtyAjknFWjRiZ
         0iCu4QH2JKl0z4jF4DmDiKhaFg/crjvdJml4uAPnmDgxZNko4Rfy+V8A+BaVYxqmYvdP
         upGQ==
X-Gm-Message-State: AOJu0YyNT4bNe3bthJRp5mr1cGbecIkCPMe6ZmLj6UdoE9KjcaXpcccU
	3OtZUFJjKtjzPphgNYaNHbCso+TT7WVt6Icy4bY+0r01C/0OHmKxhwpMoEiqBZKc2VD1luoHC01
	Iy2w=
X-Google-Smtp-Source: AGHT+IHgyBo2myOsidtWER+08bvZ/I7fAnSKP3nFVhSk75cnlOePjSojeVmJFomuIK/kaA7p7rWTzw==
X-Received: by 2002:a05:6402:1cc1:b0:5c9:5bcf:db95 with SMTP id 4fb4d7f45d1cf-5cba246719cmr1093552a12.16.1729764278201;
        Thu, 24 Oct 2024 03:04:38 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 4/6] CI: Refresh the Debian 12 arm32 cross compile container
Date: Thu, 24 Oct 2024 11:04:19 +0100
Message-ID: <762312efd58aa1b41cfcb5439f2fd35580b8bba6.1729760501.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1729760501.git.javi.merino@cloud.com>
References: <cover.1729760501.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rework the container to run as non-root, use heredocs for readability and use apt-get
--no-install-recommends to keep the size down.  Rename the CI jobs to
debian-12-arm32-<variant> to follow the naming scheme of all the other
CI jobs.

Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
 .../debian/12-arm64v8-arm32-gcc.dockerfile    | 28 +++++++++++++++++++
 .../bookworm-arm64v8-arm32-gcc.dockerfile     | 24 ----------------
 automation/gitlab-ci/build.yaml               | 20 ++++++-------
 automation/gitlab-ci/test.yaml                | 14 +++++-----
 automation/scripts/containerize               |  2 +-
 5 files changed, 46 insertions(+), 42 deletions(-)
 create mode 100644 automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
 delete mode 100644 automation/build/debian/bookworm-arm64v8-arm32-gcc.dockerfile

diff --git a/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile b/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
new file mode 100644
index 000000000000..bdc935706bfa
--- /dev/null
+++ b/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
@@ -0,0 +1,28 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/arm64/v8 debian:bookworm
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV CROSS_COMPILE /usr/bin/arm-linux-gnueabihf-
+
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    useradd --create-home user
+
+    apt-get update
+    DEPS=(
+        bison
+        build-essential
+        flex
+        gcc-arm-linux-gnueabihf
+    )
+    apt-get --yes --no-install-recommends install "${DEPS[@]}"
+
+    rm -rf /var/lib/apt/lists*
+EOF
+
+USER user
+WORKDIR /build
diff --git a/automation/build/debian/bookworm-arm64v8-arm32-gcc.dockerfile b/automation/build/debian/bookworm-arm64v8-arm32-gcc.dockerfile
deleted file mode 100644
index 95b3f0428372..000000000000
--- a/automation/build/debian/bookworm-arm64v8-arm32-gcc.dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# syntax=docker/dockerfile:1
-FROM --platform=linux/arm64/v8 debian:bookworm
-LABEL maintainer.name="The Xen Project" \
-      maintainer.email="xen-devel@lists.xenproject.org"
-
-ENV DEBIAN_FRONTEND=noninteractive
-ENV USER root
-ENV CROSS_COMPILE /usr/bin/arm-linux-gnueabihf-
-
-RUN mkdir /build
-WORKDIR /build
-
-# build depends
-RUN apt-get update && \
-    apt-get --quiet --yes install \
-        build-essential \
-        flex \
-        bison \
-        git \
-        gcc-arm-linux-gnueabihf \
-        && \
-        apt-get autoremove -y && \
-        apt-get clean && \
-        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index c687298cc924..380021d49f12 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -367,39 +367,39 @@ debian-12-riscv64-gcc-debug:
 
 # Arm32 cross-build
 
-debian-bookworm-gcc-arm32:
+debian-12-arm32-gcc:
   extends: .gcc-arm32-cross-build
   variables:
-    CONTAINER: debian:bookworm-arm64v8-arm32-gcc
+    CONTAINER: debian:12-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
 
-debian-bookworm-gcc-arm32-debug:
+debian-12-arm32-gcc-debug:
   extends: .gcc-arm32-cross-build-debug
   variables:
-    CONTAINER: debian:bookworm-arm64v8-arm32-gcc
+    CONTAINER: debian:12-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
 
-debian-bookworm-gcc-arm32-randconfig:
+debian-12-arm32-gcc-randconfig:
   extends: .gcc-arm32-cross-build
   variables:
-    CONTAINER: debian:bookworm-arm64v8-arm32-gcc
+    CONTAINER: debian:12-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
     RANDCONFIG: y
 
-debian-bookworm-gcc-arm32-debug-staticmem:
+debian-12-arm32-gcc-debug-staticmem:
   extends: .gcc-arm32-cross-build-debug
   variables:
-    CONTAINER: debian:bookworm-arm64v8-arm32-gcc
+    CONTAINER: debian:12-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
     EXTRA_XEN_CONFIG: |
       CONFIG_EXPERT=y
       CONFIG_UNSUPPORTED=y
       CONFIG_STATIC_MEMORY=y
 
-debian-bookworm-gcc-arm32-debug-earlyprintk:
+debian-12-arm32-gcc-debug-earlyprintk:
   extends: .gcc-arm32-cross-build-debug
   variables:
-    CONTAINER: debian:bookworm-arm64v8-arm32-gcc
+    CONTAINER: debian:12-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
     EXTRA_XEN_CONFIG: |
       CONFIG_EARLY_UART_CHOICE_PL011=y
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 248281f47942..42baa82fe36f 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -398,7 +398,7 @@ qemu-smoke-dom0less-arm32-gcc:
     - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-bookworm-gcc-arm32
+    - debian-12-arm32-gcc
 
 qemu-smoke-dom0less-arm32-gcc-debug:
   extends: .qemu-arm32
@@ -406,7 +406,7 @@ qemu-smoke-dom0less-arm32-gcc-debug:
     - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-bookworm-gcc-arm32-debug
+    - debian-12-arm32-gcc-debug
 
 qemu-smoke-dom0less-arm32-gcc-debug-staticmem:
   extends: .qemu-arm32
@@ -414,7 +414,7 @@ qemu-smoke-dom0less-arm32-gcc-debug-staticmem:
     - ./automation/scripts/qemu-smoke-dom0less-arm32.sh static-mem 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-bookworm-gcc-arm32-debug-staticmem
+    - debian-12-arm32-gcc-debug-staticmem
 
 qemu-smoke-dom0less-arm32-gcc-debug-gzip:
   extends: .qemu-arm32
@@ -422,7 +422,7 @@ qemu-smoke-dom0less-arm32-gcc-debug-gzip:
     - ./automation/scripts/qemu-smoke-dom0less-arm32.sh gzip 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-bookworm-gcc-arm32-debug
+    - debian-12-arm32-gcc-debug
 
 qemu-smoke-dom0less-arm32-gcc-without-dom0:
   extends: .qemu-arm32
@@ -430,7 +430,7 @@ qemu-smoke-dom0less-arm32-gcc-without-dom0:
     - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-bookworm-gcc-arm32
+    - debian-12-arm32-gcc
 
 qemu-smoke-dom0less-arm32-gcc-debug-without-dom0:
   extends: .qemu-arm32
@@ -438,7 +438,7 @@ qemu-smoke-dom0less-arm32-gcc-debug-without-dom0:
     - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-bookworm-gcc-arm32-debug
+    - debian-12-arm32-gcc-debug
 
 qemu-smoke-dom0less-arm32-gcc-debug-earlyprintk:
   extends: .qemu-arm32
@@ -446,7 +446,7 @@ qemu-smoke-dom0less-arm32-gcc-debug-earlyprintk:
     - ./automation/scripts/qemu-smoke-dom0less-arm32.sh earlyprintk 2>&1 | tee ${LOGFILE}
   needs:
     - *arm32-test-needs
-    - debian-bookworm-gcc-arm32-debug-earlyprintk
+    - debian-12-arm32-gcc-debug-earlyprintk
 
 qemu-alpine-x86_64-gcc:
   extends: .qemu-x86-64
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index 1b75c8d93724..c9988bfe927d 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -36,7 +36,7 @@ case "_${CONTAINER}" in
     _bookworm-x86_64-gcc-ibt) CONTAINER="${BASE}/debian:12-x86_64-gcc-ibt" ;;
     _bookworm|_bookworm-x86_64|_) CONTAINER="${BASE}/debian:12-x86_64" ;;
     _bookworm-i386|_bookworm-x86_32) CONTAINER="${BASE}/debian:12-x86_32" ;;
-    _bookworm-arm64v8-arm32-gcc) CONTAINER="${BASE}/debian:bookworm-arm64v8-arm32-gcc" ;;
+    _bookworm-arm64v8-arm32-gcc) CONTAINER="${BASE}/debian:12-arm64v8-arm32-gcc" ;;
     _bookworm-arm64v8) CONTAINER="${BASE}/debian:12-arm64v8" ;;
     _bookworm-cppcheck) CONTAINER="${BASE}/debian:bookworm-cppcheck" ;;
     _opensuse-leap|_leap) CONTAINER="${BASE}/opensuse:leap-15.6-x86_64" ;;
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825099.1239303 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uhs-0005lV-PL; Thu, 24 Oct 2024 10:04:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825099.1239303; Thu, 24 Oct 2024 10:04: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 1t3uhs-0005kj-I2; Thu, 24 Oct 2024 10:04:40 +0000
Received: by outflank-mailman (input) for mailman id 825099;
 Thu, 24 Oct 2024 10:04: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3uhr-0005hp-0O
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:04:39 +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 604ba3ba-91ef-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 12:04:37 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c9693dc739so886931a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 03:04:37 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72866sm5482506a12.95.2024.10.24.03.04.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 03:04:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 604ba3ba-91ef-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729764276; x=1730369076; 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=cByNa6/hk0GoMLekCJ3KNnYw1LRCV4BYv94ebYfTHDY=;
        b=ibczguIw69WCyAJSY+G1QOiFFQ3ly8++IN72YDPCSW8yfc230QwIS2ax9fhrU3ElBq
         Id6t9tHVZtm3cw47k/qAjB5eLY7wxHMMKJfnL5lgl03G3MsiaG7sR0sA8LtFpCDpxoeL
         JauiBbJcQQWu2iUTEgx2WEAvSteoZftACaonU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729764276; x=1730369076;
        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=cByNa6/hk0GoMLekCJ3KNnYw1LRCV4BYv94ebYfTHDY=;
        b=FstbKCx6yjivL/xqaqRo4BzqRoQyuZeO0prR0kjyi0pwukzuxsv7tiJ4waLC6enlMs
         3JyL6pq6BL71cHUarU34U0ruL/4Wkw6/xIlhhGJx/SDLol9a77Nf9x6eyek9OAgAz7pE
         vcCbUDyaYNGPdo7K2ENep5k4eMGNaAsMBi+Gb7L9ojwC4YWi7AynaSrgi335z8+jIkUl
         vqMYxL7UPEjsMcBkQEBnbiZbchj0zEvAHfa7p+TJBHmCbgL26MnBFVGTFxFbWsL3iCUg
         BUKLCAfRl4EVTdvHorcE0qRR/QGFV5geeI8RYsfChMF5SXcj9uSvcqAgX5LZimg8aILy
         INqQ==
X-Gm-Message-State: AOJu0YzxXFUmiGv4Ufq77DxBLkH9BjuwmaKAgkWFvb+Sq1IK1/8ORMfC
	dmnapTCN6yc5Ib0VAEA0oQ8lGd8Y9m5AbsIgjqSd8q2NPwDOAL7xqP6E30kGGqKzocY41OKLi1S
	408E=
X-Google-Smtp-Source: AGHT+IFQc//FcRKMsdqTdoMjpQ/Mmo7CnGs5JPPRiH32Z17oE4kXL6W/C3ADvghplQLCCgUMn+hxvw==
X-Received: by 2002:a05:6402:40d2:b0:5cb:68cf:c730 with SMTP id 4fb4d7f45d1cf-5cb8af7dde3mr4781805a12.5.1729764276275;
        Thu, 24 Oct 2024 03:04:36 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 1/6] CI: Refresh the Debian 12 x86_64 container
Date: Thu, 24 Oct 2024 11:04:16 +0100
Message-ID: <288fcc10dbcbdab1c33ebfb95bedf2366ba64122.1729760501.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1729760501.git.javi.merino@cloud.com>
References: <cover.1729760501.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rework the container to use heredocs for readability, and use
apt-get --no-install-recommends to keep the size down.

This reduces the size of the (uncompressed) container from 3.44GB to 1.67GB.

Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
 automation/build/debian/12-x86_64.dockerfile | 68 ++++++++++++++++++++
 automation/build/debian/bookworm.dockerfile  | 57 ----------------
 automation/gitlab-ci/build.yaml              | 20 +++---
 automation/gitlab-ci/test.yaml               | 14 ++--
 automation/scripts/containerize              |  2 +-
 5 files changed, 86 insertions(+), 75 deletions(-)
 create mode 100644 automation/build/debian/12-x86_64.dockerfile
 delete mode 100644 automation/build/debian/bookworm.dockerfile

diff --git a/automation/build/debian/12-x86_64.dockerfile b/automation/build/debian/12-x86_64.dockerfile
new file mode 100644
index 000000000000..e0ca8b7e9c91
--- /dev/null
+++ b/automation/build/debian/12-x86_64.dockerfile
@@ -0,0 +1,68 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 debian:bookworm
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+# build depends
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    apt-get update
+    DEPS=(
+        # Xen
+        bison
+        build-essential
+        checkpolicy
+        clang
+        flex
+
+        # Tools (general)
+        ca-certificates
+        expect
+        git-core
+        libnl-3-dev
+        pkg-config
+        wget
+        # libxenguest dombuilder
+        liblzma-dev
+        zlib1g-dev
+        # libacpi
+        acpica-tools
+        # libxl
+        uuid-dev
+        libyajl-dev
+        # RomBIOS
+        bcc
+        bin86
+        # xentop
+        libncurses5-dev
+        # Python bindings
+        python3-dev
+        python3-setuptools
+        # Ocaml bindings/oxenstored
+        ocaml-nox
+        ocaml-findlib
+        # To build the documentation
+        pandoc
+
+        # for test phase, qemu-smoke-* jobs
+        qemu-system-x86
+
+        # for qemu-alpine-x86_64-gcc
+        busybox-static
+        cpio
+
+        # For *-efi jobs
+        ovmf
+    )
+
+    apt-get -y --no-install-recommends install "${DEPS[@]}"
+
+    rm -rf /var/lib/apt/lists*
+EOF
+
+USER root
+WORKDIR /build
diff --git a/automation/build/debian/bookworm.dockerfile b/automation/build/debian/bookworm.dockerfile
deleted file mode 100644
index 72e01aa58b55..000000000000
--- a/automation/build/debian/bookworm.dockerfile
+++ /dev/null
@@ -1,57 +0,0 @@
-# syntax=docker/dockerfile:1
-FROM --platform=linux/amd64 debian:bookworm
-LABEL maintainer.name="The Xen Project" \
-      maintainer.email="xen-devel@lists.xenproject.org"
-
-ENV DEBIAN_FRONTEND=noninteractive
-ENV USER root
-
-RUN mkdir /build
-WORKDIR /build
-
-# build depends
-RUN apt-get update && \
-    apt-get --quiet --yes install \
-        build-essential \
-        zlib1g-dev \
-        libncurses5-dev \
-        python3-dev \
-        python3-setuptools \
-        uuid-dev \
-        libyajl-dev \
-        libaio-dev \
-        libglib2.0-dev \
-        clang \
-        libpixman-1-dev \
-        pkg-config \
-        flex \
-        bison \
-        acpica-tools \
-        bin86 \
-        bcc \
-        liblzma-dev \
-        libnl-3-dev \
-        ocaml-nox \
-        libfindlib-ocaml-dev \
-        markdown \
-        transfig \
-        pandoc \
-        checkpolicy \
-        wget \
-        git \
-        nasm \
-        gnupg \
-        apt-transport-https \
-        golang \
-        # for test phase, qemu-smoke-* jobs
-        qemu-system-x86 \
-        expect \
-        # For *-efi jobs
-        ovmf \
-        # for test phase, qemu-alpine-* jobs
-        cpio \
-        busybox-static \
-        && \
-        apt-get autoremove -y && \
-        apt-get clean && \
-        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 09dd9e6ccbd0..eb2c23619a2c 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -341,15 +341,15 @@ alpine-3.18-gcc-debug:
     CONTAINER: alpine:3.18
     BUILD_QEMU_XEN: y
 
-debian-bookworm-gcc-debug:
+debian-12-x86_64-gcc-debug:
   extends: .gcc-x86-64-build-debug
   variables:
-    CONTAINER: debian:bookworm
+    CONTAINER: debian:12-x86_64
 
-debian-bookworm-clang-debug:
+debian-12-x86_64-clang-debug:
   extends: .clang-x86-64-build-debug
   variables:
-    CONTAINER: debian:bookworm
+    CONTAINER: debian:12-x86_64
 
 debian-12-ppc64le-gcc-debug:
   extends: .gcc-ppc64le-cross-build-debug
@@ -553,20 +553,20 @@ debian-12-x86_64-gcc-ibt:
     EXTRA_FIXED_RANDCONFIG: |
       CONFIG_XEN_IBT=y
 
-debian-bookworm-clang:
+debian-12-x86_64-clang:
   extends: .clang-x86-64-build
   variables:
-    CONTAINER: debian:bookworm
+    CONTAINER: debian:12-x86_64
 
-debian-bookworm-gcc:
+debian-12-x86_64-gcc:
   extends: .gcc-x86-64-build
   variables:
-    CONTAINER: debian:bookworm
+    CONTAINER: debian:12-x86_64
 
-debian-bookworm-gcc-randconfig:
+debian-12-x86_64-gcc-randconfig:
   extends: .gcc-x86-64-build
   variables:
-    CONTAINER: debian:bookworm
+    CONTAINER: debian:12-x86_64
     RANDCONFIG: y
 
 debian-bookworm-32-clang-debug:
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index e76a37bef32d..0812ddb42d9b 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -43,7 +43,7 @@
 .qemu-x86-64:
   extends: .test-jobs-common
   variables:
-    CONTAINER: debian:bookworm
+    CONTAINER: debian:12-x86_64
     LOGFILE: qemu-smoke-x86-64.log
   artifacts:
     paths:
@@ -155,7 +155,7 @@
 build-each-commit-gcc:
   extends: .test-jobs-common
   variables:
-    CONTAINER: debian:bookworm
+    CONTAINER: debian:12-x86_64
     XEN_TARGET_ARCH: x86_64
     CC: gcc
   script:
@@ -461,35 +461,35 @@ qemu-smoke-x86-64-gcc:
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pv 2>&1 | tee ${LOGFILE}
   needs:
-    - debian-bookworm-gcc-debug
+    - debian-12-x86_64-gcc-debug
 
 qemu-smoke-x86-64-clang:
   extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pv 2>&1 | tee ${LOGFILE}
   needs:
-    - debian-bookworm-clang-debug
+    - debian-12-x86_64-clang-debug
 
 qemu-smoke-x86-64-gcc-pvh:
   extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pvh 2>&1 | tee ${LOGFILE}
   needs:
-    - debian-bookworm-gcc-debug
+    - debian-12-x86_64-gcc-debug
 
 qemu-smoke-x86-64-clang-pvh:
   extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64.sh pvh 2>&1 | tee ${LOGFILE}
   needs:
-    - debian-bookworm-clang-debug
+    - debian-12-x86_64-clang-debug
 
 qemu-smoke-x86-64-gcc-efi:
   extends: .qemu-smoke-x86-64
   script:
     - ./automation/scripts/qemu-smoke-x86-64-efi.sh pv 2>&1 | tee ${LOGFILE}
   needs:
-    - debian-bookworm-gcc-debug
+    - debian-12-x86_64-gcc-debug
 
 qemu-smoke-riscv64-gcc:
   extends: .qemu-riscv64
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index 6ac02c42d124..ea6e1a9b18f4 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -34,7 +34,7 @@ case "_${CONTAINER}" in
     _bullseye-riscv64) CONTAINER="${BASE}/debian:11-riscv64" ;;
     _bookworm-riscv64) CONTAINER="${BASE}/debian:12-riscv64" ;;
     _bookworm-x86_64-gcc-ibt) CONTAINER="${BASE}/debian:12-x86_64-gcc-ibt" ;;
-    _bookworm|_) CONTAINER="${BASE}/debian:bookworm" ;;
+    _bookworm|_bookworm-x86_64|_) CONTAINER="${BASE}/debian:12-x86_64" ;;
     _bookworm-i386) CONTAINER="${BASE}/debian:bookworm-i386" ;;
     _bookworm-arm64v8-arm32-gcc) CONTAINER="${BASE}/debian:bookworm-arm64v8-arm32-gcc" ;;
     _bookworm-arm64v8) CONTAINER="${BASE}/debian:bookworm-arm64v8" ;;
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825100.1239308 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uht-0005q2-0r; Thu, 24 Oct 2024 10:04:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825100.1239308; Thu, 24 Oct 2024 10:04: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 1t3uhs-0005nS-Qr; Thu, 24 Oct 2024 10:04:40 +0000
Received: by outflank-mailman (input) for mailman id 825100;
 Thu, 24 Oct 2024 10:04: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3uhr-0005hv-2V
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:04:39 +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 60db4d1f-91ef-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 12:04:38 +0200 (CEST)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-53a007743e7so850546e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 03:04:38 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72866sm5482506a12.95.2024.10.24.03.04.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 03:04:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 60db4d1f-91ef-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729764277; x=1730369077; 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=MpCJXGcVny4qY37VLhg54wKOfSqt3MWgG1985f7jSN8=;
        b=PkLWyoz+k38ypMH0sm8zNCIbVrB1kxCg1/4MQIrPFJPHeAVGnBdEkKk5MO6J8WbjCq
         iymmPPOoCAC1hFizLEkQESNulnLpV7K4kMTPe5GG1YvkWxxuT73rpPR6trYLzeUVW9D6
         wrxH5gGYCVfy7HngK+TvIXAfgcnEAGq7CsmoA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729764277; x=1730369077;
        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=MpCJXGcVny4qY37VLhg54wKOfSqt3MWgG1985f7jSN8=;
        b=qW2HPSo9CztD0BHf5iTWSuMb80819LZL40uTiI8huJLUmsAKCQe1qmGganWsDJEbFT
         5/nXULbmG4Ngw/Y4KvCNnsFwKgD3uSRUnHC71TiO3WUvXGPCNyWmXHQFGQRyCDEj41SB
         HwEMbeh16j9JaR8bQTynfKUcLpHxqFOroT0Fx96qdL2vovdt98Io8bouscWoik+iFJZW
         ydOew3HvpeeDxWe+eZF33hdi7jtcS1Q6eG+/XBoO1TOB0l7I2zCTo+/0pKjB0F5HbLnr
         UutpmMLYlZ8wCXlW63jApiGt2ZPYoCRu1f+46Ldvvd7Br6GaX90Qw9fZ3ZnCQ0JdZSei
         hYlw==
X-Gm-Message-State: AOJu0Yy+pC6b6dbDiXLs+bdxNZEvI5FFZoCp6slev4Vmbf5rQeJPfc2W
	pl24r1vrEUqYQ0ggBVhyXyKY47oInrdXZ/JMVD8QrRW9aeQK/R3UEe2rBT+Ym+I2lYyqP1HnjpI
	fzUg=
X-Google-Smtp-Source: AGHT+IGnKFsjEXeSsDFmCi7N84r6N86DDLlEJWdL3RWtQ8Mkd+KE+dji58Ba50xXb7lDdIyZR1gahw==
X-Received: by 2002:a05:6512:1246:b0:536:9f72:c427 with SMTP id 2adb3069b0e04-53b1a343cfamr2894874e87.28.1729764277339;
        Thu, 24 Oct 2024 03:04:37 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 3/6] CI: Refresh the Debian 12 arm64 container
Date: Thu, 24 Oct 2024 11:04:18 +0100
Message-ID: <50c1ec986787c8fe3bf975b0003069b67e885032.1729760501.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1729760501.git.javi.merino@cloud.com>
References: <cover.1729760501.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rework the container to use heredocs for readability and use apt-get
--no-install-recommends to keep the size down.  Rename the job to
debian-12-arm64-* to follow the naming scheme of all the other CI jobs.

This reduces the size of the debian:12-arm64v8 from 2.25GB down to 1.62GB.

Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
 automation/build/debian/12-arm64v8.dockerfile | 68 +++++++++++++++++++
 .../build/debian/bookworm-arm64v8.dockerfile  | 55 ---------------
 automation/gitlab-ci/build.yaml               |  8 +--
 automation/gitlab-ci/test.yaml                |  4 +-
 automation/scripts/containerize               |  2 +-
 5 files changed, 75 insertions(+), 62 deletions(-)
 create mode 100644 automation/build/debian/12-arm64v8.dockerfile
 delete mode 100644 automation/build/debian/bookworm-arm64v8.dockerfile

diff --git a/automation/build/debian/12-arm64v8.dockerfile b/automation/build/debian/12-arm64v8.dockerfile
new file mode 100644
index 000000000000..4da1b074aedb
--- /dev/null
+++ b/automation/build/debian/12-arm64v8.dockerfile
@@ -0,0 +1,68 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/arm64/v8 debian:bookworm
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+
+# build depends
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    apt-get update
+    DEPS=(
+        # Xen
+        bison
+        build-essential
+        flex
+        # Flask
+        checkpolicy
+
+        # Tools (general)
+        git-core
+        libext2fs-dev
+        libfdt-dev
+        libglib2.0-dev
+        libpixman-1-dev
+        pkg-config
+        wget
+        # libxenguest dombuilder
+        libbz2-dev
+        liblzma-dev
+        liblzo2-dev
+        libzstd-dev
+        # libacpi
+        acpica-tools
+        # libxl
+        uuid-dev
+        libyajl-dev
+        # Python bindings
+        python3-dev
+        python3-setuptools
+        # Golang bindings
+        golang-go
+        # Ocaml bindings/oxenstored
+        ocaml-nox
+        ocaml-findlib
+
+        # for test phase, qemu-smoke-* jobs
+        busybox-static
+        ca-certificates
+        cpio
+        curl
+        device-tree-compiler
+        expect
+        u-boot-qemu
+        # for imagebuilder
+        file
+        u-boot-tools
+    )
+
+    apt-get -y --no-install-recommends install "${DEPS[@]}"
+
+    rm -rf /var/lib/apt/lists*
+EOF
+
+USER root
+WORKDIR /build
diff --git a/automation/build/debian/bookworm-arm64v8.dockerfile b/automation/build/debian/bookworm-arm64v8.dockerfile
deleted file mode 100644
index da8ae7512589..000000000000
--- a/automation/build/debian/bookworm-arm64v8.dockerfile
+++ /dev/null
@@ -1,55 +0,0 @@
-# syntax=docker/dockerfile:1
-FROM --platform=linux/arm64/v8 debian:bookworm
-LABEL maintainer.name="The Xen Project" \
-      maintainer.email="xen-devel@lists.xenproject.org"
-
-ENV DEBIAN_FRONTEND=noninteractive
-ENV USER root
-
-RUN mkdir /build
-WORKDIR /build
-
-# build depends
-RUN apt-get update && \
-    apt-get --quiet --yes install \
-        build-essential \
-        zlib1g-dev \
-        libncurses5-dev \
-        python3-dev \
-        python3-setuptools \
-        uuid-dev \
-        libyajl-dev \
-        libaio-dev \
-        libglib2.0-dev \
-        clang \
-        libpixman-1-dev \
-        pkg-config \
-        flex \
-        bison \
-        acpica-tools \
-        libfdt-dev \
-        bin86 \
-        bcc \
-        liblzma-dev \
-        libnl-3-dev \
-        ocaml-nox \
-        libfindlib-ocaml-dev \
-        markdown \
-        transfig \
-        pandoc \
-        checkpolicy \
-        wget \
-        git \
-        nasm \
-        # for test phase, qemu-smoke-* jobs
-        u-boot-qemu \
-        u-boot-tools \
-        device-tree-compiler \
-        curl \
-        cpio \
-        busybox-static \
-        expect \
-        && \
-        apt-get autoremove -y && \
-        apt-get clean && \
-        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 1b322044ab19..c687298cc924 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -407,15 +407,15 @@ debian-bookworm-gcc-arm32-debug-earlyprintk:
 
 # Arm builds
 
-debian-bookworm-gcc-arm64:
+debian-12-arm64-gcc:
   extends: .gcc-arm64-build
   variables:
-    CONTAINER: debian:bookworm-arm64v8
+    CONTAINER: debian:12-arm64v8
 
-debian-bookworm-gcc-debug-arm64:
+debian-12-arm64-gcc-debug:
   extends: .gcc-arm64-build-debug
   variables:
-    CONTAINER: debian:bookworm-arm64v8
+    CONTAINER: debian:12-arm64v8
 
 alpine-3.18-gcc-arm64:
   extends: .gcc-arm64-build
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 0812ddb42d9b..248281f47942 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -17,7 +17,7 @@
 .qemu-arm64:
   extends: .test-jobs-common
   variables:
-    CONTAINER: debian:bookworm-arm64v8
+    CONTAINER: debian:12-arm64v8
     LOGFILE: qemu-smoke-arm64.log
   artifacts:
     paths:
@@ -30,7 +30,7 @@
 .qemu-arm32:
   extends: .test-jobs-common
   variables:
-    CONTAINER: debian:bookworm-arm64v8
+    CONTAINER: debian:12-arm64v8
     LOGFILE: qemu-smoke-arm32.log
   artifacts:
     paths:
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index d72c22c103ff..1b75c8d93724 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -37,7 +37,7 @@ case "_${CONTAINER}" in
     _bookworm|_bookworm-x86_64|_) CONTAINER="${BASE}/debian:12-x86_64" ;;
     _bookworm-i386|_bookworm-x86_32) CONTAINER="${BASE}/debian:12-x86_32" ;;
     _bookworm-arm64v8-arm32-gcc) CONTAINER="${BASE}/debian:bookworm-arm64v8-arm32-gcc" ;;
-    _bookworm-arm64v8) CONTAINER="${BASE}/debian:bookworm-arm64v8" ;;
+    _bookworm-arm64v8) CONTAINER="${BASE}/debian:12-arm64v8" ;;
     _bookworm-cppcheck) CONTAINER="${BASE}/debian:bookworm-cppcheck" ;;
     _opensuse-leap|_leap) CONTAINER="${BASE}/opensuse:leap-15.6-x86_64" ;;
     _opensuse-tumbleweed|_tumbleweed) CONTAINER="${BASE}/opensuse:tumbleweed-x86_64" ;;
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825102.1239322 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uht-00066T-QO; Thu, 24 Oct 2024 10:04:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825102.1239322; Thu, 24 Oct 2024 10:04: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 1t3uht-00064G-Ed; Thu, 24 Oct 2024 10:04:41 +0000
Received: by outflank-mailman (input) for mailman id 825102;
 Thu, 24 Oct 2024 10:04: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3uhs-0005hp-0X
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:04:40 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 609a36d6-91ef-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 12:04:37 +0200 (CEST)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-539e690479cso754391e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 03:04:37 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72866sm5482506a12.95.2024.10.24.03.04.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 03:04:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 609a36d6-91ef-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729764277; x=1730369077; 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=LQWmvDlLDweK6ujseIAxFWUbMQufNhICWPD0ghEGPJ8=;
        b=Tg+eaA9o6JthTTtnFFmyxTKIDNtk4tdOVpM6vncyP41BCqTdJNx0FD0vafZDlHf6/q
         PMilH1m666sckCvwmy8F9Xh8NWE2Hdx7kivVbmK4kor35ArdbVNFKc5twliNubLcYPIf
         dFHEocGoLtY//fX7h0zFpGc97q5gmvqyZZIPo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729764277; x=1730369077;
        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=LQWmvDlLDweK6ujseIAxFWUbMQufNhICWPD0ghEGPJ8=;
        b=qHTc82W4qSXbYLBagCtQXJ+BXSGBUbMqGeBpBZGAXVNsB86rKhTz8ncUfsn8ZyFIoG
         nJZBnQhG3UOyEj53pt9YqIpa7s2wArQVkY7GK56vUlHxBWqMEEcOTKNQCf63Vo2603nC
         YLajIMoLhT2flSh024u796f/K5BYQ6NPdr/xMT/Y5z/R60QZkxNBAyMZYLWXAjfBiHyk
         ikRT54PHKZJIwTFqSBhD5MYJV7KqMk5qvPDTp9dV2m6EYULp3IUxoIwCwQcU5y7eaYdp
         2zhhz2HFRyFOj3+vjqI4ivZxfz9PBKMiwRe2DKE3kl8VPR0+gkjpCsGMr+dxyV8P7xb+
         lJcA==
X-Gm-Message-State: AOJu0Yzi4p4DP5zGBGROkyy59caVTvltxLdclp/W63Fju2X/RoZGh+ks
	DSXwi/ZvKDaJ4GAk/ImZ0wwm7/0fSU0Rque0IdO91lcJUzGK1F46OnRfvycwiuOMahlBS0ltiaH
	7T1E=
X-Google-Smtp-Source: AGHT+IHivd6x7FEdY3knn+Ey/pTnjQIOBE6BovxR+ERumwEH7ARZ/OZwbEEuuJNPlrNoyrODUcZZcA==
X-Received: by 2002:a05:6512:400d:b0:539:964c:16d4 with SMTP id 2adb3069b0e04-53b1a347b64mr3085470e87.36.1729764276837;
        Thu, 24 Oct 2024 03:04:36 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 2/6] CI: Refresh the Debian 12 x86_32 container
Date: Thu, 24 Oct 2024 11:04:17 +0100
Message-ID: <f542e8157d7fe419d7b274d749bffde086a28f32.1729760501.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1729760501.git.javi.merino@cloud.com>
References: <cover.1729760501.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rework the container to be non-root, use heredocs for readability, and
use apt-get --no-install-recommends to keep the size down.  Rename the
job to x86_32, to be consistent with XEN_TARGET_ARCH and the
naming scheme of all the other CI jobs:
${VERSION}-${ARCH}-${BUILD_NAME}

Remove build dependencies for building QEMU, as we don't do it since
e305256e69b1 ("CI: Stop building QEMU in general").

Remove build dependencies for the documentation as we don't have to
build it for every single arch.

This reduces the size of the container from 2.22GB to 1.32Gb.

Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
 automation/build/debian/12-x86_32.dockerfile  | 51 +++++++++++++++++++
 .../build/debian/bookworm-i386.dockerfile     | 50 ------------------
 automation/gitlab-ci/build.yaml               |  8 +--
 automation/scripts/containerize               |  2 +-
 4 files changed, 56 insertions(+), 55 deletions(-)
 create mode 100644 automation/build/debian/12-x86_32.dockerfile
 delete mode 100644 automation/build/debian/bookworm-i386.dockerfile

diff --git a/automation/build/debian/12-x86_32.dockerfile b/automation/build/debian/12-x86_32.dockerfile
new file mode 100644
index 000000000000..d3c67a256212
--- /dev/null
+++ b/automation/build/debian/12-x86_32.dockerfile
@@ -0,0 +1,51 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/i386 debian:bookworm
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV USER root
+
+# build depends
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    useradd --create-home user
+
+    apt-get update
+    DEPS=(
+        # Xen
+        bison
+        build-essential
+        checkpolicy
+        clang
+        flex
+
+        # Tools (general)
+        ca-certificates
+        git-core
+        pkg-config
+        wget
+        # libacpi
+        acpica-tools
+        # libxl
+        uuid-dev
+        libyajl-dev
+        # xentop
+        libncurses5-dev
+        # Python bindings
+        python3-dev
+        python3-setuptools
+        # Ocaml bindings/oxenstored
+        ocaml-nox
+        ocaml-findlib
+    )
+    apt-get -y --no-install-recommends install "${DEPS[@]}"
+
+    rm -rf /var/lib/apt/lists*
+EOF
+
+USER user
+WORKDIR /build
+ENTRYPOINT ["linux32"]
diff --git a/automation/build/debian/bookworm-i386.dockerfile b/automation/build/debian/bookworm-i386.dockerfile
deleted file mode 100644
index 66fa3121c54e..000000000000
--- a/automation/build/debian/bookworm-i386.dockerfile
+++ /dev/null
@@ -1,50 +0,0 @@
-# syntax=docker/dockerfile:1
-FROM --platform=linux/i386 debian:bookworm
-LABEL maintainer.name="The Xen Project" \
-      maintainer.email="xen-devel@lists.xenproject.org"
-
-ENV DEBIAN_FRONTEND=noninteractive
-ENV USER root
-
-RUN mkdir /build
-WORKDIR /build
-
-ENTRYPOINT ["linux32"]
-
-# build depends
-RUN apt-get update && \
-    apt-get --quiet --yes install \
-        build-essential \
-        zlib1g-dev \
-        libncurses5-dev \
-        python3-dev \
-        python3-setuptools \
-        uuid-dev \
-        libyajl-dev \
-        libaio-dev \
-        libglib2.0-dev \
-        clang \
-        libpixman-1-dev \
-        pkg-config \
-        flex \
-        bison \
-        acpica-tools \
-        bin86 \
-        bcc \
-        liblzma-dev \
-        libc6-dev \
-        libnl-3-dev \
-        ocaml-nox \
-        libfindlib-ocaml-dev \
-        markdown \
-        transfig \
-        pandoc \
-        checkpolicy \
-        wget \
-        git \
-        nasm \
-        apt-transport-https \
-        && \
-        apt-get autoremove -y && \
-        apt-get clean && \
-        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index eb2c23619a2c..1b322044ab19 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -569,15 +569,15 @@ debian-12-x86_64-gcc-randconfig:
     CONTAINER: debian:12-x86_64
     RANDCONFIG: y
 
-debian-bookworm-32-clang-debug:
+debian-12-x86_32-clang-debug:
   extends: .clang-x86-32-build-debug
   variables:
-    CONTAINER: debian:bookworm-i386
+    CONTAINER: debian:12-x86_32
 
-debian-bookworm-32-gcc-debug:
+debian-12-x86_32-gcc-debug:
   extends: .gcc-x86-32-build-debug
   variables:
-    CONTAINER: debian:bookworm-i386
+    CONTAINER: debian:12-x86_32
 
 fedora-40-x86_64-gcc:
   extends: .gcc-x86-64-build
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index ea6e1a9b18f4..d72c22c103ff 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -35,7 +35,7 @@ case "_${CONTAINER}" in
     _bookworm-riscv64) CONTAINER="${BASE}/debian:12-riscv64" ;;
     _bookworm-x86_64-gcc-ibt) CONTAINER="${BASE}/debian:12-x86_64-gcc-ibt" ;;
     _bookworm|_bookworm-x86_64|_) CONTAINER="${BASE}/debian:12-x86_64" ;;
-    _bookworm-i386) CONTAINER="${BASE}/debian:bookworm-i386" ;;
+    _bookworm-i386|_bookworm-x86_32) CONTAINER="${BASE}/debian:12-x86_32" ;;
     _bookworm-arm64v8-arm32-gcc) CONTAINER="${BASE}/debian:bookworm-arm64v8-arm32-gcc" ;;
     _bookworm-arm64v8) CONTAINER="${BASE}/debian:bookworm-arm64v8" ;;
     _bookworm-cppcheck) CONTAINER="${BASE}/debian:bookworm-cppcheck" ;;
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825103.1239346 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uhw-0006wB-9H; Thu, 24 Oct 2024 10:04:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825103.1239346; Thu, 24 Oct 2024 10:04: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 1t3uhw-0006vv-5Z; Thu, 24 Oct 2024 10:04:44 +0000
Received: by outflank-mailman (input) for mailman id 825103;
 Thu, 24 Oct 2024 10:04: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3uht-0005hp-BS
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:04:41 +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 61c814fe-91ef-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 12:04:39 +0200 (CEST)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-539ee1acb86so800338e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 03:04:39 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72866sm5482506a12.95.2024.10.24.03.04.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 03:04:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 61c814fe-91ef-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729764279; x=1730369079; 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=pcIExxCBgl8rLcW0jJPs5XFDwtrNHzge9tk1pTltCDM=;
        b=ZTIL3peis0GHN2Yz6R0KDc5EhRSbV91sMTQiNDTcQXjkKo+lJMvlYcDrX/bwPj+/RA
         tn938GBMkFOoS1j5eO+5Sr3uSS5b+nH2cB11fpMGZWtHVfjQaRmASe3xaGnUuegiR8C/
         wWA72KoGmxvqLuTNXNcFOfqWOSVzQpLqpHZnk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729764279; x=1730369079;
        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=pcIExxCBgl8rLcW0jJPs5XFDwtrNHzge9tk1pTltCDM=;
        b=QqCk46VZEIb6mUcDbePOtFd2rBw9Xl47rEqRARyyVVpjEq/dPyOuGYNe9rxd5eryaU
         uFaXyHK/oXMOZeQcqp02mlv5SfIoa6ENMc/NOQnnKQJYGpw8/6XLbYYEe2DHf/Zcg9W5
         ehKOhyc2ej/zYK+wNHd0YEKhNR1FJf+VyoCFhxYRCuo90/orq0TYnI4u3lpcUTYB5KFf
         S5GC0hZIDncee25TGMCsBazZcAJzpmj2Mmr6aXkGgBpDPqfGsSbAwTi+nvjXtBp9glO1
         z8e4ycOPwslrX7VXD1Ne2pN1+tZAItnuVb3cAFlZG+WWOg48cVrhVYIrvOEjwWI9GZA8
         CEkA==
X-Gm-Message-State: AOJu0YyygXLr9JNt8vi0lLY9jVX5hzVzqMRJ4gqOmZ0yKYjmm5vjOERH
	eNt9TIOTTWy+HzuiVWhFAjxyg2M8FY+OOI3LZYBnBazD8YowVprQfulEmNhSlC0B5wJtJGZAwr+
	+uWU=
X-Google-Smtp-Source: AGHT+IHQijJSkYV+57Obt0d79pCzGC1jykeNC/JeuQYqLbS7uBPgBSPhvEinZde7rrhzZq+N3C0KQA==
X-Received: by 2002:a05:6512:104a:b0:530:aa09:b6bf with SMTP id 2adb3069b0e04-53b1a303108mr3646425e87.24.1729764278793;
        Thu, 24 Oct 2024 03:04:38 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>
Subject: [XEN PATCH v1 5/6] CI: Refresh the Debian 12 cppcheck container
Date: Thu, 24 Oct 2024 11:04:20 +0100
Message-ID: <a34d46bde06bab872c19119a7466ac8942a0c137.1729760501.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1729760501.git.javi.merino@cloud.com>
References: <cover.1729760501.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Rework the container to build and run cppcheck as a normal user.  Use
heredocs for readability and use apt-get --no-install-recommends to
keep the size down.

Changed the libpcre3-dev dependency to libpcre3, as the -dev package
is only needed for building, not for running.

With the cleanups, the size of the container is reduced from 882MB to
782MB.

Signed-off-by: Javi Merino <javi.merino@cloud.com>
---

I tried updating cppcheck to the latest upstream version (2.15.0) but
it reports misra errors like:

    xen/common/sched/cpupool.c(0,0):internalError:error:Bailing out from analysis: Checking file failed: Failed to execute addon 'misra' - exitcode is 1
    [...]
    xen/arch/arm/decode.c(220,10):misra-config:error:Because of missing configuration, misra checking is incomplete. There can be false negatives! Variable 'type' is unknown

The output log xen-cppcheck.txt from job #8164274901 which uses
cppcheck 2.15.0 can be found at:
https://gitlab.com/xen-project/people/javimerino/xen/-/jobs/8164274901/artifacts/browse

Therefore, I'm keeping cppcheck at 2.7, which aligns with what
docs/misra/cppcheck.txt says is the last tested version.

 .../debian/12-arm64v8-cppcheck.dockerfile     | 80 +++++++++++++++++++
 .../build/debian/bookworm-cppcheck.dockerfile | 54 -------------
 automation/gitlab-ci/build.yaml               | 12 +--
 automation/scripts/containerize               |  2 +-
 4 files changed, 87 insertions(+), 61 deletions(-)
 create mode 100644 automation/build/debian/12-arm64v8-cppcheck.dockerfile
 delete mode 100644 automation/build/debian/bookworm-cppcheck.dockerfile

diff --git a/automation/build/debian/12-arm64v8-cppcheck.dockerfile b/automation/build/debian/12-arm64v8-cppcheck.dockerfile
new file mode 100644
index 000000000000..a839d4c57bda
--- /dev/null
+++ b/automation/build/debian/12-arm64v8-cppcheck.dockerfile
@@ -0,0 +1,80 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/arm64/v8 debian:bookworm AS builder
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV CPPCHECK_VERSION=2.7
+
+# dependencies for cppcheck build
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    apt-get update
+    DEPS=(
+        build-essential
+        ca-certificates
+        curl
+        libpcre3-dev
+        python-is-python3
+    )
+
+    apt-get -y --no-install-recommends install "${DEPS[@]}"
+
+    rm -rf /var/lib/apt/lists*
+EOF
+
+RUN useradd --home /build --create-home user
+
+WORKDIR /build
+USER user
+
+# cppcheck release build (see cppcheck readme.md)
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    curl -fsSL https://github.com/danmar/cppcheck/archive/"$CPPCHECK_VERSION".tar.gz | tar xvz
+    cd cppcheck-"$CPPCHECK_VERSION"
+
+    MAKE_OPTS=(
+        MATCHCOMPILER=yes
+        DESTDIR=/build/out
+        FILESDIR="/usr/share/cppcheck"
+        HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
+    )
+    make install -j$(nproc) "${MAKE_OPTS[@]}"
+EOF
+
+FROM --platform=linux/arm64/v8 debian:bookworm
+COPY --from=builder /build/out/usr/bin/cppcheck /usr/bin/cppcheck
+COPY --from=builder /build/out/usr/share/cppcheck /usr/share/cppcheck
+
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+ENV DEBIAN_FRONTEND=noninteractive
+ENV USER root
+
+# dependencies for cppcheck analysis including Xen-only build/cross-build
+RUN <<EOF
+#!/bin/bash
+    set -eu
+
+    useradd --create-home user
+
+    apt-get update
+    DEPS=(
+        bison
+        build-essential
+        python-is-python3
+        libpcre3
+        flex
+        gcc-arm-linux-gnueabihf
+        gcc-x86-64-linux-gnu
+    )
+    apt-get --yes --no-install-recommends install "${DEPS[@]}"
+    rm -rf /var/lib/apt/lists*
+EOF
+
+USER user
+WORKDIR /build
diff --git a/automation/build/debian/bookworm-cppcheck.dockerfile b/automation/build/debian/bookworm-cppcheck.dockerfile
deleted file mode 100644
index fe4cd4a1aaab..000000000000
--- a/automation/build/debian/bookworm-cppcheck.dockerfile
+++ /dev/null
@@ -1,54 +0,0 @@
-# syntax=docker/dockerfile:1
-FROM --platform=linux/arm64/v8 debian:bookworm AS builder
-
-ENV DEBIAN_FRONTEND=noninteractive
-ENV CPPCHECK_VERSION=2.7
-ENV USER root
-
-# dependencies for cppcheck build
-RUN apt-get update && \
-    apt-get --quiet --yes install \
-        curl \
-        build-essential \
-        python-is-python3 \
-        libpcre3-dev
-
-RUN mkdir /build
-WORKDIR /build
-
-# cppcheck release build (see cppcheck readme.md)
-RUN curl -fsSLO https://github.com/danmar/cppcheck/archive/"$CPPCHECK_VERSION".tar.gz && \
-    tar xvzf "$CPPCHECK_VERSION".tar.gz && \
-    cd cppcheck-"$CPPCHECK_VERSION" && \
-    make install -j$(nproc) \
-        MATCHCOMPILER=yes \
-        FILESDIR=/usr/share/cppcheck \
-        HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
-
-FROM --platform=linux/arm64/v8 debian:bookworm
-COPY --from=builder /usr/bin/cppcheck /usr/bin/cppcheck
-COPY --from=builder /usr/share/cppcheck /usr/share/cppcheck
-
-LABEL maintainer.name="The Xen Project" \
-      maintainer.email="xen-devel@lists.xenproject.org"
-
-ENV DEBIAN_FRONTEND=noninteractive
-ENV USER root
-
-RUN mkdir /build
-WORKDIR /build
-
-# dependencies for cppcheck analysis including Xen-only build/cross-build
-RUN apt-get update && \
-    apt-get --quiet --yes install \
-        build-essential \
-        python-is-python3 \
-        libpcre3-dev \
-        flex \
-        bison \
-        gcc-arm-linux-gnueabihf \
-        gcc-x86-64-linux-gnu \
-        && \
-        apt-get autoremove -y && \
-        apt-get clean && \
-        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 380021d49f12..c57882b8846e 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -488,26 +488,26 @@ yocto-qemux86-64:
 
 # Cppcheck analysis jobs
 
-debian-bookworm-gcc-cppcheck:
+debian-12-x86_64-gcc-cppcheck:
   extends: .gcc-x86-64-cross-build
   variables:
-    CONTAINER: debian:bookworm-cppcheck
+    CONTAINER: debian:12-arm64v8-cppcheck
     CROSS_COMPILE: /usr/bin/x86_64-linux-gnu-
     CPPCHECK: y
     HYPERVISOR_ONLY: y
 
-debian-bookworm-gcc-arm32-cppcheck:
+debian-12-arm32-gcc-cppcheck:
   extends: .gcc-arm32-cross-build
   variables:
-    CONTAINER: debian:bookworm-cppcheck
+    CONTAINER: debian:12-arm64v8-cppcheck
     CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf-
     CPPCHECK: y
     HYPERVISOR_ONLY: y
 
-debian-bookworm-gcc-arm64-cppcheck:
+debian-12-arm64-gcc-cppcheck:
   extends: .gcc-arm64-build
   variables:
-    CONTAINER: debian:bookworm-cppcheck
+    CONTAINER: debian:12-arm64v8-cppcheck
     CPPCHECK: y
     HYPERVISOR_ONLY: y
 
diff --git a/automation/scripts/containerize b/automation/scripts/containerize
index c9988bfe927d..e5502c81a759 100755
--- a/automation/scripts/containerize
+++ b/automation/scripts/containerize
@@ -38,7 +38,7 @@ case "_${CONTAINER}" in
     _bookworm-i386|_bookworm-x86_32) CONTAINER="${BASE}/debian:12-x86_32" ;;
     _bookworm-arm64v8-arm32-gcc) CONTAINER="${BASE}/debian:12-arm64v8-arm32-gcc" ;;
     _bookworm-arm64v8) CONTAINER="${BASE}/debian:12-arm64v8" ;;
-    _bookworm-cppcheck) CONTAINER="${BASE}/debian:bookworm-cppcheck" ;;
+    _bookworm-cppcheck) CONTAINER="${BASE}/debian:12-arm64v8-cppcheck" ;;
     _opensuse-leap|_leap) CONTAINER="${BASE}/opensuse:leap-15.6-x86_64" ;;
     _opensuse-tumbleweed|_tumbleweed) CONTAINER="${BASE}/opensuse:tumbleweed-x86_64" ;;
     _xenial) CONTAINER="${BASE}/ubuntu:16.04-x86_64" ;;
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825098.1239295 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uhs-0005iN-D9; Thu, 24 Oct 2024 10:04:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825098.1239295; Thu, 24 Oct 2024 10:04: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 1t3uhs-0005iG-Ad; Thu, 24 Oct 2024 10:04:40 +0000
Received: by outflank-mailman (input) for mailman id 825098;
 Thu, 24 Oct 2024 10:04: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3uhq-0005hp-AQ
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:04:38 +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 5fcd3d10-91ef-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 12:04:36 +0200 (CEST)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2fb4af0b6beso10158351fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 03:04:36 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72866sm5482506a12.95.2024.10.24.03.04.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 03:04:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5fcd3d10-91ef-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729764275; x=1730369075; 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=jNqbImwZxs4xFzcEhVZHP0Hlanuz5ZfZG5QPVUx0lBc=;
        b=ZNKc4Jq/NMNcCm/vPBbm22Jn6V6beYeQazdgJoiN3GQu7RQzlaSMbhG2nACxPcn73G
         qU4fSWKBFzgf8QyxjReWqADnamFPCAm9mxOvhLTB7m3oDoXpJYKmsx+13pAdUouRhJvg
         8HmOh2TRiXpmIEYZ6UCst+wXTsFI2kPe0o9RM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729764275; x=1730369075;
        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=jNqbImwZxs4xFzcEhVZHP0Hlanuz5ZfZG5QPVUx0lBc=;
        b=MoT4/nBAKTFZwTQptoCFzxoTGEQZ0UHvqhByBhlandtfpJ0EPU2vGWSt7PEKjgG8eB
         o4BacUWdVDlrjYeqsk8bRyvHUuflACtG7phSt8W/mo2d6k8SrqB9Kah6gLx9oumMaSoH
         Z3w04f79+k0Ge1tiVnb8qYKZwz4wvwS38hFi3RfkPlgf9X8g3yt+4NVXVjwLMTT4YXUT
         3/m7ipVJY4JRwC540VS8FhVqHNzCBKvzWTNsdsWwwmAXo8gDCYjY2SXRPeTeU0O0oA7e
         xlyFdPQqih3Uy1+IVeVlvc98LILmuepkxiebzjnWPwDxlepzhNDB8OkZ+dYkw2eMXxgt
         5DCA==
X-Gm-Message-State: AOJu0YxTtMiZsc8yHlvgpwXETsSjUM049GdUdDvqmPNuVUyaqW1xM7SH
	XdAKOWB4yYtEdRre3PA78CKrh4eunsye2TfquCHz6Gg2hSiXUPd8bUBjiwD+69pmV0MPRpmOAYF
	QrWY=
X-Google-Smtp-Source: AGHT+IH3943bW0nY8yaRYdy9TzXpNfHF87hgoEt7ylU1CKOVRt7vMr1oYtHQhBIHYagVhWtyJ8RkOg==
X-Received: by 2002:a2e:f11:0:b0:2fb:5c84:929b with SMTP id 38308e7fff4ca-2fc9d39399dmr35341901fa.36.1729764275404;
        Thu, 24 Oct 2024 03:04:35 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [XEN PATCH v1 0/6] automation: Refresh the remaining Debian containers
Date: Thu, 24 Oct 2024 11:04:15 +0100
Message-ID: <cover.1729760501.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.45.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Hi,

These series continues the refresh of the CI containers after[0], focusing on the
remaining Debian 12 containers. The containers now build and run as a
non-root user, use heredocs for readability, and use
apt-get --no-install-recommends to minimize the installation of unnecessary packages.

The Debian 12 x86_64 and arm64v8 containers required additional
modifications to the test scripts to enable test execution as a
non-root user, so I did them in their own patch at the end of the
series.

The updated containers have been tested in
https://gitlab.com/xen-project/people/javimerino/xen/-/pipelines/1509304440

[0] https://lore.kernel.org/xen-devel/cover.1729170005.git.javi.merino@cloud.com/T/#t

Javi Merino (6):
  CI: Refresh the Debian 12 x86_64 container
  CI: Refresh the Debian 12 x86_32 container
  CI: Refresh the Debian 12 arm64 container
  CI: Refresh the Debian 12 arm32 cross compile container
  CI: Refresh the Debian 12 cppcheck container
  CI: Run the builds and tests that use the Debian 12 containers as a
    normal user

 .../debian/12-arm64v8-arm32-gcc.dockerfile    | 28 +++++++
 .../debian/12-arm64v8-cppcheck.dockerfile     | 80 +++++++++++++++++++
 automation/build/debian/12-arm64v8.dockerfile | 71 ++++++++++++++++
 automation/build/debian/12-x86_32.dockerfile  | 51 ++++++++++++
 automation/build/debian/12-x86_64.dockerfile  | 71 ++++++++++++++++
 .../bookworm-arm64v8-arm32-gcc.dockerfile     | 24 ------
 .../build/debian/bookworm-arm64v8.dockerfile  | 55 -------------
 .../build/debian/bookworm-cppcheck.dockerfile | 54 -------------
 .../build/debian/bookworm-i386.dockerfile     | 50 ------------
 automation/build/debian/bookworm.dockerfile   | 57 -------------
 automation/gitlab-ci/build.yaml               | 68 ++++++++--------
 automation/gitlab-ci/test.yaml                | 36 +++++----
 automation/scripts/containerize               | 10 +--
 automation/scripts/qemu-alpine-x86_64.sh      |  4 +-
 automation/scripts/qemu-smoke-dom0-arm64.sh   |  7 +-
 .../scripts/qemu-smoke-dom0less-arm64.sh      |  5 +-
 16 files changed, 371 insertions(+), 300 deletions(-)
 create mode 100644 automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
 create mode 100644 automation/build/debian/12-arm64v8-cppcheck.dockerfile
 create mode 100644 automation/build/debian/12-arm64v8.dockerfile
 create mode 100644 automation/build/debian/12-x86_32.dockerfile
 create mode 100644 automation/build/debian/12-x86_64.dockerfile
 delete mode 100644 automation/build/debian/bookworm-arm64v8-arm32-gcc.dockerfile
 delete mode 100644 automation/build/debian/bookworm-arm64v8.dockerfile
 delete mode 100644 automation/build/debian/bookworm-cppcheck.dockerfile
 delete mode 100644 automation/build/debian/bookworm-i386.dockerfile
 delete mode 100644 automation/build/debian/bookworm.dockerfile

-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:04:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:04:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825104.1239349 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3uhw-00070N-LO; Thu, 24 Oct 2024 10:04:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825104.1239349; Thu, 24 Oct 2024 10:04: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 1t3uhw-0006zs-Hb; Thu, 24 Oct 2024 10:04:44 +0000
Received: by outflank-mailman (input) for mailman id 825104;
 Thu, 24 Oct 2024 10: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3uhu-0005hp-0w
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:04:42 +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 620d4fbc-91ef-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 12:04:40 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c96df52c52so839244a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 03:04:40 -0700 (PDT)
Received: from localhost.localdomain ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c72866sm5482506a12.95.2024.10.24.03.04.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 03:04:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 620d4fbc-91ef-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729764279; x=1730369079; 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=sVlXuuK1xEQOAVzZHIn4SmM6Td3cV8czZgbgjjn4N1k=;
        b=Q8nrdOzGkK55Zmt2DPH5sQg8CdUGmhdInXPJyzy1C1oMbIqcZWnMLllmYCS/58tl3q
         XssAsKAqcHjJQVgorXXl/6NRQi1dVJnQjl2GOUU5sFv7J38pcsAlVmD24CSpJKnAunoH
         Xs3FHZQBj1+ZxXWxhWuCJmV69HYiaD+gFt8NM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729764279; x=1730369079;
        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=sVlXuuK1xEQOAVzZHIn4SmM6Td3cV8czZgbgjjn4N1k=;
        b=gwLdybB/2NbnMaHoCV1YsbL2ZtRpu//Y7x30WOzjISaZBcwJ4dtHHSufyRUHE0mK4c
         ikw4ELglDhYSSKkBqjnlOXCFaAZpf0tlpT7lnnCQoQ9c4VQsY4RmISpSrxsGq7Pw3DYX
         e4UTrcA+kEbPAIyeZ+atGv/95rCKirIvM0viFbMhdG3qleRsst7+eRCUQ5t16hg5ta83
         JdT6ptxjFAY9bNde4gQ8RdjbzDCSGtfiwLAVaRBb+dasFN8qXQTNpqQape6QVJg8cGI2
         n/XFFLJcDxGryDquO+7/VWj9YwQs7id+UHgCQ+3p6hCn/fjz7GZRE9uf+09LvBzch7XR
         SDug==
X-Gm-Message-State: AOJu0Yyvpkl+beRaAlzKUbsklazZdxOsAO1kq7DtjPEn3682Sg7amTAj
	1eRpBIa8G5S3vWVkCdPT9mnr9Ti3GYm8bQxSwnYH9R9mbGPok851JGcWU3yEyxNISdsY55tdowg
	hETc=
X-Google-Smtp-Source: AGHT+IFRyLmoJZ+UKlceAWsFPEGXV05Q3R+N3UCSgoAj/TGPHmJLMNKyBsWpxxsHg+yLoujSrU3D1A==
X-Received: by 2002:a05:6402:280e:b0:5cb:7318:800d with SMTP id 4fb4d7f45d1cf-5cb8b26d8f1mr4678502a12.32.1729764279375;
        Thu, 24 Oct 2024 03:04:39 -0700 (PDT)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [XEN PATCH v1 6/6] CI: Run the builds and tests that use the Debian 12 containers as a normal user
Date: Thu, 24 Oct 2024 11:04:21 +0100
Message-ID: <c6d8547d500ac419ee4590decb9392f32f1f0d02.1729760501.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.45.2
In-Reply-To: <cover.1729760501.git.javi.merino@cloud.com>
References: <cover.1729760501.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Use FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR so that GitLab CI clones xen
using the user in the image, instead of as root[0].

In qemu-smoke-dom0*.sh and qemu-alpine-x86_64.sh, use fakeroot to
create the rootfs images that untar a tarball that create character
devices.  cpio replicates the block and character devices, as well as
preserving the uid and gid it sees in the current directory.  fakeroot
lets tar think that it is creating block and character devices, and
all files are owned by root, but it is all smokes and mirrors for
cpio.

[0] https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1736

Signed-off-by: Javi Merino <javi.merino@cloud.com>
---

Regarding building the rootfs, I have chosen to use a fakeroot
subshell for the entire process.  automation/scripts/qubes-x86-64.sh
takes a different approach, it just uses fakeroot for the tar/cpio
commands.  I prefer to do it this way but I am happy to be overridden
if `fakeroot -s ../save tar` and `fakeroot -i ../save cpio` are
preferred.

 automation/build/debian/12-arm64v8.dockerfile   | 5 ++++-
 automation/build/debian/12-x86_64.dockerfile    | 5 ++++-
 automation/gitlab-ci/test.yaml                  | 4 ++++
 automation/scripts/qemu-alpine-x86_64.sh        | 4 +++-
 automation/scripts/qemu-smoke-dom0-arm64.sh     | 7 +++++--
 automation/scripts/qemu-smoke-dom0less-arm64.sh | 5 +++--
 6 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/automation/build/debian/12-arm64v8.dockerfile b/automation/build/debian/12-arm64v8.dockerfile
index 4da1b074aedb..c2617956ed77 100644
--- a/automation/build/debian/12-arm64v8.dockerfile
+++ b/automation/build/debian/12-arm64v8.dockerfile
@@ -10,6 +10,8 @@ RUN <<EOF
 #!/bin/bash
     set -eu
 
+    useradd --create-home user
+
     apt-get update
     DEPS=(
         # Xen
@@ -53,6 +55,7 @@ RUN <<EOF
         curl
         device-tree-compiler
         expect
+        fakeroot
         u-boot-qemu
         # for imagebuilder
         file
@@ -64,5 +67,5 @@ RUN <<EOF
     rm -rf /var/lib/apt/lists*
 EOF
 
-USER root
+USER user
 WORKDIR /build
diff --git a/automation/build/debian/12-x86_64.dockerfile b/automation/build/debian/12-x86_64.dockerfile
index e0ca8b7e9c91..98b23ea3eaa4 100644
--- a/automation/build/debian/12-x86_64.dockerfile
+++ b/automation/build/debian/12-x86_64.dockerfile
@@ -10,6 +10,8 @@ RUN <<EOF
 #!/bin/bash
     set -eu
 
+    useradd --create-home user
+
     apt-get update
     DEPS=(
         # Xen
@@ -54,6 +56,7 @@ RUN <<EOF
         # for qemu-alpine-x86_64-gcc
         busybox-static
         cpio
+        fakeroot
 
         # For *-efi jobs
         ovmf
@@ -64,5 +67,5 @@ RUN <<EOF
     rm -rf /var/lib/apt/lists*
 EOF
 
-USER root
+USER user
 WORKDIR /build
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index 42baa82fe36f..71f2beb68c4f 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -1,6 +1,10 @@
 .test-jobs-common:
   stage: test
   image: registry.gitlab.com/xen-project/xen/${CONTAINER}
+  variables:
+    # Clone xen as the user in the docker images, not root
+    # See https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1736
+    FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: true
 
 .arm64-test-needs: &arm64-test-needs
   - alpine-3.18-arm64-rootfs-export
diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh
index 1ff689b577e3..2660403ab2b8 100755
--- a/automation/scripts/qemu-alpine-x86_64.sh
+++ b/automation/scripts/qemu-alpine-x86_64.sh
@@ -29,6 +29,7 @@ find . | cpio --create --format='newc' | gzip > ../initrd.cpio.gz
 cd ..
 
 # initrd.tar.gz is Dom0 rootfs
+fakeroot <<EOF
 mkdir -p rootfs
 cd rootfs
 tar xvzf ../initrd.tar.gz
@@ -63,7 +64,8 @@ chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 # rebuild Dom0 rootfs
 find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz
-cd ../..
+EOF
+cd ..
 
 cat >> binaries/pxelinux.0 << EOF
 #!ipxe
diff --git a/automation/scripts/qemu-smoke-dom0-arm64.sh b/automation/scripts/qemu-smoke-dom0-arm64.sh
index 4d22a124df11..8f9bfd620ee3 100755
--- a/automation/scripts/qemu-smoke-dom0-arm64.sh
+++ b/automation/scripts/qemu-smoke-dom0-arm64.sh
@@ -27,8 +27,10 @@ cd initrd
 find . | cpio --create --format='newc' | gzip > ../initrd.cpio.gz
 cd ..
 
-mkdir -p rootfs
+fakeroot <<EOF
+mkdir rootfs
 cd rootfs
+
 tar xvzf ../initrd.tar.gz
 mkdir proc
 mkdir run
@@ -58,7 +60,8 @@ xl create -c /root/test.cfg
 chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz
-cd ../..
+EOF
+cd ..
 
 # XXX QEMU looks for "efi-virtio.rom" even if it is unneeded
 curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
diff --git a/automation/scripts/qemu-smoke-dom0less-arm64.sh b/automation/scripts/qemu-smoke-dom0less-arm64.sh
index 83e1866ca6c5..2d60f22d68b7 100755
--- a/automation/scripts/qemu-smoke-dom0less-arm64.sh
+++ b/automation/scripts/qemu-smoke-dom0less-arm64.sh
@@ -112,7 +112,8 @@ find . | cpio --create --format='newc' | gzip > ../binaries/initrd
 cd ..
 
 # DOM0 rootfs
-mkdir -p rootfs
+fakeroot <<EOF
+mkdir rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
 mkdir proc
@@ -141,7 +142,7 @@ ${dom0_check}
 chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
-cd ..
+EOF
 
 # ImageBuilder
 echo 'MEMORY_START="0x40000000"
-- 
2.45.2



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:07:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:07:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825140.1239367 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ukX-0001Vh-6F; Thu, 24 Oct 2024 10:07:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825140.1239367; Thu, 24 Oct 2024 10:07: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 1t3ukX-0001Va-1J; Thu, 24 Oct 2024 10:07:25 +0000
Received: by outflank-mailman (input) for mailman id 825140;
 Thu, 24 Oct 2024 10:07: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=sutq=RU=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3uiq-0005hp-2W
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:05:40 +0000
Received: from EUR03-AM7-obe.outbound.protection.outlook.com
 (mail-am7eur03on20620.outbound.protection.outlook.com
 [2a01:111:f403:260e::620])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8466c389-91ef-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 12:05:38 +0200 (CEST)
Received: from AM0PR02CA0028.eurprd02.prod.outlook.com (2603:10a6:208:3e::41)
 by GVXPR08MB11057.eurprd08.prod.outlook.com (2603:10a6:150:1f8::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Thu, 24 Oct
 2024 10:05:33 +0000
Received: from AM4PEPF00027A6B.eurprd04.prod.outlook.com
 (2603:10a6:208:3e:cafe::73) by AM0PR02CA0028.outlook.office365.com
 (2603:10a6:208:3e::41) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20 via Frontend
 Transport; Thu, 24 Oct 2024 10:05:33 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00027A6B.mail.protection.outlook.com (10.167.16.89) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Thu, 24 Oct 2024 10:05:32 +0000
Received: ("Tessian outbound 57fa7becdebd:v490");
 Thu, 24 Oct 2024 10:05:32 +0000
Received: from Le97da073b730.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 F037C093-6781-472B-8AC9-F2AD64195CD0.1; 
 Thu, 24 Oct 2024 10:05:25 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Le97da073b730.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 24 Oct 2024 10:05:25 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by AM8PR08MB6419.eurprd08.prod.outlook.com (2603:10a6:20b:316::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Thu, 24 Oct
 2024 10:05:22 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Thu, 24 Oct 2024
 10:05: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: 8466c389-91ef-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=DADGkOHPSOC14fMMGc8KKsDMSfR1xb/QSq6mpItS9RczDPTLtckF/rUZhJ/TUFcUMXm9iP0PXhMm/IX/a3VnMdRJ9Xo0RjPgU8q/fE7saL/Y7kNqenbyM5CnpDKq2DA/Ry5+kTXfrAiP6iqe1uvejKfOBr/a5J5CtWa63P9xgKatJ/dvgzElGAUB+lh2CoHuQlKPz8CDrgPC3tiI2CmiR0O6sZI28E0tedFufEqgAr+8zFEUhnzQVJke4UtY5NDXBmlTWxDWHwuAQIkRjjHNu+N9YdeG+tvDFB70rwt92auvx8VToB6bKzf7IGe4FKY8vGYox0GTmiWIGNq7+HX04Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=rzVcn8qpvldPKrdGQcDtdcF9/RxDkXjuqpbYCo6Eikc=;
 b=p04O0mXmCptWv6PMyOcpF0ZcCmRDhmwAKAQxtina0sy9CB6tdG3Du6gOsZS6FAGXTYfoO5UFfBEhbb5hTbl1UWzuZqNT+Afo/ywk5HHDzmA0fHqW38ZLg4jEZV3b1HJ9K0xzKcQ5bNuQef1bCpc3Az/0o+P4xE6mpDNy+8qR7qtcjL8+YLvapy9qOrrVYX8pf6WEljp+VrVKy1lgsguAZ3msC+poqzT6HFxWwlrCzUXvwci67zIER+J8JpW3i6V1BchkJPnvuZ31UcCxQ0f/iC5rz12laFHN3/5fXnF8+Xq8C3n6b4kHUnFFhokZ7S08vTqkzlA81i+6ca6ia95EUw==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rzVcn8qpvldPKrdGQcDtdcF9/RxDkXjuqpbYCo6Eikc=;
 b=Io04Y5Ug0FQjTl7koLZ5l6MzBu/jNXQ9KLlthRD/TChOr2x0RdCZ3jutWf192+X3Gek1vwi4ME9rs6Ma1Cgv87HtBRg0iysWvMg7tyEnlhMDbLRtUDuksXNST+AeK4t48mYza7vavO9C9Q+loSlrqoa9nJoA6Je7dRDz7rqo1Js=
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=arm.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: cfec53548f50be92
X-TessianGatewayMetadata: gFPrxMtDqJ77uMxGMzKhnODJw7wbqm2ypbFb8D9Cv88yFoy9hDudffUhXKiDme0tS4A6UDuRhC2RncLKUEYOpNJp9CG/YTYGU14Z5ZVTZOvIgp7IPhXxNIJlFOXCtzw4PxE25Xvy2GSdMy/63or25y2O/Kp7FWg0iRG47L2AECo=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=P+DpsuQCDA2rMfOargvvJALHBBseszsye+Wqu8mOWQL+9YydU/tl+pNE/f42LlkKmuQoIH0vV0At1eoktR4gUckgQNjdxk7baM+QrPsxZPZqzYnRTeh5Z/4SEVcKusEVJK0MVTyT0+svu7BD42F+PB+ABKOLIyGnd0pkwrqZhdaA7ay/U7RNmynztGmk8VCHOJg+7AnT4EP84uwFMa6FBfksPMkilZAVSZ+KmH/9GyY8Sr6998dThMpWKiAjcSH1r+KLjDO14BgjdunhOXnusOLmE0+shJwyFMaOhGawrjicrugPVCqu4NqmWmbWu/uA6znZoTa5W0dK8wKDhXtMLQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=rzVcn8qpvldPKrdGQcDtdcF9/RxDkXjuqpbYCo6Eikc=;
 b=mbk2GzL6s424WC1WBLbHfCT1FOCC5h2pw3VQpQhnOf45C4BvIZnc/Fa6WwjAeSSswNeWCSP6wabuvu1c78fYh42ZWwOmZbrvM//lzPO0di8evPJiSoc6CfnM4dze8w4FLPK7r8QZ4Z+qNs+VgfYjHERBkN7XU5eBsBJ93HLwFror9KMcjldpzL1aecJmczr4yvak/FjKL6Mb8fJ/4sJVAX553BWjqn3N5p1DSfhYtdgpul3SPe4vDxIGfYyDli35jDceQPy5R+evDKBsERKryySHpJ3SaVSGdigEDAXtjX8YhD4RVQ+T3hh0QXzC5QrFOkCULh39tl8xwuJwaVt4FQ==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rzVcn8qpvldPKrdGQcDtdcF9/RxDkXjuqpbYCo6Eikc=;
 b=Io04Y5Ug0FQjTl7koLZ5l6MzBu/jNXQ9KLlthRD/TChOr2x0RdCZ3jutWf192+X3Gek1vwi4ME9rs6Ma1Cgv87HtBRg0iysWvMg7tyEnlhMDbLRtUDuksXNST+AeK4t48mYza7vavO9C9Q+loSlrqoa9nJoA6Je7dRDz7rqo1Js=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 10/10] xen/arm: ffa: Add indirect message support
Thread-Topic: [PATCH v2 10/10] xen/arm: ffa: Add indirect message support
Thread-Index: AQHbH6X9IBo7HgFtxUejZCumPUt4kbKVpD+AgAAU4gA=
Date: Thu, 24 Oct 2024 10:05:22 +0000
Message-ID: <5497A12A-B077-44B4-AB66-1D22D62681D0@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <9464941b06e82763ebe79e3f2adb4ca2497cf298.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44H+EipP-F_12tWidOxfFPf-jVcSs4XjLjBv5t05-Kw59g@mail.gmail.com>
In-Reply-To:
 <CAHUa44H+EipP-F_12tWidOxfFPf-jVcSs4XjLjBv5t05-Kw59g@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|AM8PR08MB6419:EE_|AM4PEPF00027A6B:EE_|GVXPR08MB11057:EE_
X-MS-Office365-Filtering-Correlation-Id: fdd57522-b476-4c01-189f-08dcf41365d7
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|10070799003|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?R3Z1ZFkxZVBpeEdBTWZvc3dXakNENmVISVl6Wmg4RjlkNzM0WXYzb0p1SU1p?=
 =?utf-8?B?ZDhWR2xEek5HbzMzdG9Hc21vak9IZ2ZPV1hXNVlqTm9SZjd3dDFPd3M3SDhF?=
 =?utf-8?B?ZUFtZG1Vc1ZGU05TdFBETmdNNzlnYjNiYW9wSWF2NmNQUGRpL1BvOVhxT2V3?=
 =?utf-8?B?MzlMVURCdW9LL2xOZVFKcHpJc0xIbkx2YVNSdHZCdHVmZjRsWjFzdmlncklS?=
 =?utf-8?B?Q1JScUYrVmZIR0gzSjE2Qm9lREFQWUNKRlNhUFEwV0k5bGcwSndBVWtwWHda?=
 =?utf-8?B?aDlPb1RzK0VjQUxGZFVCMTcxa2dSZVFjdFFqY0Y2SzJ6cDhRV2o5RjRScmQ1?=
 =?utf-8?B?YzY4MnhTUFhTU0ZoNDBUNzRWRS9yQ1FhcUxBSVZyR0ZkNWtJamR2Y1Y3NDdo?=
 =?utf-8?B?QlpBQ3oyNWhzZW1TNisydEtyN1NQQVdLWXJUNml4T1IxVkRLY2JVR0FHb090?=
 =?utf-8?B?ZDZMaDNFRW9HcWJCMGVTMU4xWXpEbUEvL0VBTU9SLzU5a3BIZDBvMmR4QTBV?=
 =?utf-8?B?dS92UEs4bDFQZTNMTmFucTNWWUhDNS85M0FyV054cHMwTUlsUEh1cDBxMXVs?=
 =?utf-8?B?WFUyZ1BPYiszMG1SaWZ0K3NjYkpBMlBiekswUDZVT213U3o0bjNvRmd4ZHBk?=
 =?utf-8?B?TzhuT3A5VXZlQ1NxR2IxQzNUN2dHWkR6TDl0T3k4UU44NVIzQlgwbVJYTG9j?=
 =?utf-8?B?Vk9weERRWlpob2RTUlc1eTNTQW90em16YTBDcnVwc3NlaVFaWVlrMVNsNXUy?=
 =?utf-8?B?OGdneVNOa1NDMDJuWjh0UlhRSktGVlg0WVBibitUMnduV3VPN0lndVlMVHpX?=
 =?utf-8?B?TW9CZi9kbGFsM2tnL2YxT3krRGM1TU5zVTJ3YXdnOFk4d1hzd1dxSzJWM3A1?=
 =?utf-8?B?ZmdPRHpoRE0zYk5mQ05VT21DUEdxYWdjMEpNRmpsQlFoTkU5Vyt6SUtMR24v?=
 =?utf-8?B?NGlZYVUxUnNsbzRpY0pvbnJ0NzEyN28wb0RjSjZ0SkdjTTZMbWxVdzQzR2RB?=
 =?utf-8?B?eVhwbS93czhlN3lFZnNZNDBFT3ZaTHF3NTVGaGxqcVZWNExMK1JIQUIxOWts?=
 =?utf-8?B?eUZ0VHM5cHdLOUF0S2VFeXhyRFZwMmcvd1JMU2lqZzNPcXRsUTVGL2xGYnRy?=
 =?utf-8?B?S1JlV1NTd2hXbXhVNmxKcHlnVGJqNUY5WTRlREFLQU5PTDM0dFNFa1lIWnB6?=
 =?utf-8?B?eGNGbGk5ekNOUlloSDhTelNLd1FDd0xuVEZNeHV4RXExMk55ZVE2Z0ZlSEpO?=
 =?utf-8?B?bXAySkxpd0NHSnQ4bUdsQUo0ODhRVUFYMHlBc0htTWhELzc3Z1JJekREeTVF?=
 =?utf-8?B?UkdHTDJuSlJWRlNZelJDWE5RNG1CblJyYjJjM3AxZE15Tk9NeEZWaTNIeitu?=
 =?utf-8?B?R2lGZzFzMHBZNXcrb1RiTFJvcmttR2U2YVNNejlpeTA2TmY2RGcvdURvOXZj?=
 =?utf-8?B?dEtpbGplcEJYUWRHdStZa3pOaFJuV3EyTUFKRG5tOXd4ZjFhSFE4cEpNNERL?=
 =?utf-8?B?U1MrdTc5UXlhNi94TU5XVlc1U0RXQ3pPS0g3VUlSWHRFR0p3Y2VydGwzK0xO?=
 =?utf-8?B?VmwvYVhxQXhwckZnN2F0cHJONUVXa3lBV1drZlZGLzVyNGR2Kzk2SHlBME9n?=
 =?utf-8?B?MEVPSHQ0MUZpM2h0QVh2eHdLRDQ5K2pSOStYSXBjemJ3NVp5bHhtTlJPUEMr?=
 =?utf-8?B?YmhWdTVMdytvWTdSejRpclBEUzJtdXduTW1hckd4bzVSWXBTbFNud0tZc1Jv?=
 =?utf-8?B?VDJFSFY4WkNJc2R5WkRYMW1SSkFoeUtDalUrNEpQR09rcVR2Y3dveFZ6Qzla?=
 =?utf-8?Q?BW474raoQA5J2OV+KGwyG0w0wJoyx/Tm/hJF8=3D?=
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:(13230040)(1800799024)(376014)(10070799003)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <A190E605B14EE44C8FC2F23F0B822C08@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6419
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A6B.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	69cb3790-caad-4ddd-83f4-08dcf4135fa0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|35042699022|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?cWhVSkJCRXROM1UwcVM2VkFUOXN0emNnNTRYbmt3THNBZzRPZ0V4M3ZCdHRI?=
 =?utf-8?B?L1V6RlhabjhQdWdEbVRpRndaVnZ2anB6NXY3ME5uanhuZ2dBb0k5WFhwaERi?=
 =?utf-8?B?OVFHSG4wVjh4dTJpVDJiNDNDZUxLMVNPVmRXdmJjb3ZHVHhCK3JnbFdMT2U5?=
 =?utf-8?B?QkJ1TkxEWVhlVjVkYm9WcWVxWnBVMDBxNW9zWjhWeHFZV3pPRTZ1b2Zpd3FL?=
 =?utf-8?B?OHJRanlPSm96cFBFd1I4MytWbk9YWHRGQ1FpR0Z6TzhGdm1jbGFuNmh6WjU5?=
 =?utf-8?B?RDIzdnVWOW1tdGxaQWs1UE9ZZ0FOcjZWVWVuOWY5MzBkcEVRcWR0TFR0QnZN?=
 =?utf-8?B?VWQrUmtITjdmWU1SRHdpdXNCMVA3R0FXUmpFMzFkZkJIeW1uN0UrQXVyZFhC?=
 =?utf-8?B?VExUZ0NTSFBLcUxtUms5NGN4QVNwSFBsWkUvS2FQdEF4WldXSnIxN3JZZGdk?=
 =?utf-8?B?NmYvOFFsWm14UFZWMGZjaVhqaTlyNSttRHVXd0VuNlZNdnJrazJBSTNMVXpZ?=
 =?utf-8?B?R045YkxuVHBMS0FneWtGZmVVYU90UksxcXkzS0d2c1V3eTlUSDBSWmpzcGtR?=
 =?utf-8?B?S3RTYTF3U3hDb3Q3YS9pZGdNSi9kaUhNTitVQmU2ZmN3RUY4VDAvN3ArL1h5?=
 =?utf-8?B?b242aUJtTzBvOWs3bmJvclFKelRTVTNzRE8yQ0VwWHUyaFozMnBLWVYxS2Vq?=
 =?utf-8?B?eXlQQ0dEU1FPNExuVzRRRW9DVHFkeU9mNG05SU1qeVBCR2dpbnJHUnB2cUFY?=
 =?utf-8?B?R2orZExnMWNXU3QyNGlCQ3BjcFNkbWZsb3A4VDdzMTdPV0xpMHVKV0EwQzFS?=
 =?utf-8?B?T1BhMUsxNTZ3RjgrMEo1K0J3RnBJa1R2N1VqTVdIN2FLRHBzWStCZHdJaUtS?=
 =?utf-8?B?UHROTzFVSTVYQW00QjlhZDFBK3dMbzEyWUwrekFualdKVEZ5WDI3VUNHZnNa?=
 =?utf-8?B?T2ZkelVKYW1scVVVUldRQWU1ZDh5Zm50U05kWHhFSnc5Vk52UUVMazRHc3pl?=
 =?utf-8?B?TVkrZTRNRlliRmd1WUxMNVJreWx1Q2t2T1VpSFNBZ1lremY0eTJrWXFxS0tK?=
 =?utf-8?B?THMrdld0SjI4VGQ2Q3FLQktkTGRvRlVYRmdKVWd6cmZWaGFHbjdsd0R4YUtK?=
 =?utf-8?B?WEowazFmL2cya1hVR0xLWWE4V05GT3dxK09udHFFZmF3ZDlKdGNsRE9Qck1W?=
 =?utf-8?B?b1pKMzNOQmo5NXhQN1BPTGo0Nzk3QmFkcjZoSHVVTnlwZDZSVXduSEdkVHNm?=
 =?utf-8?B?L21nZXZwYjJzdTJPd3dPQzdLT0c1OHRCRERJcEZuN2hUakxOa3huTEhGaWJK?=
 =?utf-8?B?TFd6eWVoMzVRRzBpSGQ3dEpiRGtaTVp5OGxzU1hTb1U1SHlYMVk0aS9CaGRH?=
 =?utf-8?B?RlY5bWcrSm9ySEduK0xWT2RBR0Jxc2UzekY0ckFOTzZVK1BqWGE0Y0M5RFFK?=
 =?utf-8?B?dDZzTkEvZTZyblo1eCtTa21tSUJzUFRQRFhCNmdxNTJaekQvM0NpNjZwOWZS?=
 =?utf-8?B?UDJwcEQ1bVpsYXpkdW9VNEpRRnZGL0t0ckRlN0x0SE9uK0FhNkQyemRIMDNr?=
 =?utf-8?B?UnNOemNRVXQwd2QwbFpyS3B5MnRMZEJscU1DVFJ1Lyt4bFgrWmIvQVRLcFJS?=
 =?utf-8?B?U1BDdFExb3hUYUN0YWZkR3R3ZnhsOUVHTi9sQ1E3WlI1RU9yeHRpWEpKTjlJ?=
 =?utf-8?B?NFpXa252enNCcjNOUDBzNGpIM0cwZVNWek1VOGtFdnFFTzA4OWQycmpqNDhz?=
 =?utf-8?B?RFQ3Z3hNeFlZZmM1RDgzV3dpUWJ2M1FMMTMvUmtFU3R5QkdzQVgvbFAzNWJy?=
 =?utf-8?B?cjVZaXY4MjNDeENyME9IQmNUYUVUOEpWdWNsaVdnd1Z1b01rZUhJNk44SWwz?=
 =?utf-8?B?NUJveWY2WnhYd2MrQ1ZPNTVGaVNud2FKNkJTOVBWQWVjZUE9PQ==?=
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:(13230040)(1800799024)(82310400026)(35042699022)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 10:05:32.9137
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fdd57522-b476-4c01-189f-08dcf41365d7
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:
	AM4PEPF00027A6B.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11057

SGkgSmVucywNCg0KPiBPbiAyNCBPY3QgMjAyNCwgYXQgMTA6NTAsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gV2VkLCBPY3QgMTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
IDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+IHdyb3RlOg0KPj4gDQo+PiBBZGQgc3VwcG9ydCBm
b3IgRkZBX01TR19TRU5EMiB0byBzZW5kIGluZGlyZWN0IG1lc3NhZ2VzIGZyb20gYSBWTSB0byBh
DQo+PiBzZWN1cmUgcGFydGl0aW9uLg0KPj4gDQo+PiBTaWduZWQtb2ZmLWJ5OiBCZXJ0cmFuZCBN
YXJxdWlzIDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+DQo+PiAtLS0NCj4+IENoYW5nZXMgaW4g
djI6DQo+PiAtIHJlYmFzZQ0KPj4gLS0tDQo+PiB4ZW4vYXJjaC9hcm0vdGVlL2ZmYS5jICAgICAg
ICAgfCAgNSArKysrDQo+PiB4ZW4vYXJjaC9hcm0vdGVlL2ZmYV9tc2cuYyAgICAgfCA0OSArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiB4ZW4vYXJjaC9hcm0vdGVlL2ZmYV9w
cml2YXRlLmggfCAgMSArDQo+PiAzIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKykNCj4+
IA0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMgYi94ZW4vYXJjaC9hcm0v
dGVlL2ZmYS5jDQo+PiBpbmRleCAzYTk1MjVhYTQ1OTguLjIxZDQxYjQ1MmRjOSAxMDA2NDQNCj4+
IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUv
ZmZhLmMNCj4+IEBAIC0xMDEsNiArMTAxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZmFfZndf
YWJpIGZmYV9md19hYmlfbmVlZGVkW10gPSB7DQo+PiAgICAgRldfQUJJKEZGQV9NRU1fUkVDTEFJ
TSksDQo+PiAgICAgRldfQUJJKEZGQV9NU0dfU0VORF9ESVJFQ1RfUkVRXzMyKSwNCj4+ICAgICBG
V19BQkkoRkZBX01TR19TRU5EX0RJUkVDVF9SRVFfNjQpLA0KPj4gKyAgICBGV19BQkkoRkZBX01T
R19TRU5EMiksDQo+PiB9Ow0KPj4gDQo+PiAvKg0KPj4gQEAgLTE5NSw2ICsxOTYsNyBAQCBzdGF0
aWMgdm9pZCBoYW5kbGVfZmVhdHVyZXMoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiAg
ICAgY2FzZSBGRkFfUEFSVElUSU9OX0lORk9fR0VUOg0KPj4gICAgIGNhc2UgRkZBX01TR19TRU5E
X0RJUkVDVF9SRVFfMzI6DQo+PiAgICAgY2FzZSBGRkFfTVNHX1NFTkRfRElSRUNUX1JFUV82NDoN
Cj4+ICsgICAgY2FzZSBGRkFfTVNHX1NFTkQyOg0KPj4gICAgICAgICBmZmFfc2V0X3JlZ3Nfc3Vj
Y2VzcyhyZWdzLCAwLCAwKTsNCj4+ICAgICAgICAgYnJlYWs7DQo+PiAgICAgY2FzZSBGRkFfTUVN
X1NIQVJFXzY0Og0KPj4gQEAgLTI3NSw2ICsyNzcsOSBAQCBzdGF0aWMgYm9vbCBmZmFfaGFuZGxl
X2NhbGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+PiAgICAgY2FzZSBGRkFfTVNHX1NF
TkRfRElSRUNUX1JFUV82NDoNCj4+ICAgICAgICAgZmZhX2hhbmRsZV9tc2dfc2VuZF9kaXJlY3Rf
cmVxKHJlZ3MsIGZpZCk7DQo+PiAgICAgICAgIHJldHVybiB0cnVlOw0KPj4gKyAgICBjYXNlIEZG
QV9NU0dfU0VORDI6DQo+PiArICAgICAgICBlID0gZmZhX2hhbmRsZV9tc2dfc2VuZDIocmVncyk7
DQo+PiArICAgICAgICBicmVhazsNCj4+ICAgICBjYXNlIEZGQV9NRU1fU0hBUkVfMzI6DQo+PiAg
ICAgY2FzZSBGRkFfTUVNX1NIQVJFXzY0Og0KPj4gICAgICAgICBmZmFfaGFuZGxlX21lbV9zaGFy
ZShyZWdzKTsNCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9tc2cuYyBiL3hl
bi9hcmNoL2FybS90ZWUvZmZhX21zZy5jDQo+PiBpbmRleCBhZTI2M2U1NDg5MGUuLjMzNWYyNDZi
YTY1NyAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS90ZWUvZmZhX21zZy5jDQo+PiArKysg
Yi94ZW4vYXJjaC9hcm0vdGVlL2ZmYV9tc2cuYw0KPj4gQEAgLTEyLDYgKzEyLDE1IEBADQo+PiAN
Cj4+ICNpbmNsdWRlICJmZmFfcHJpdmF0ZS5oIg0KPj4gDQo+PiArLyogRW5jb2Rpbmcgb2YgcGFy
dGl0aW9uIG1lc3NhZ2UgaW4gUlgvVFggYnVmZmVyICovDQo+PiArc3RydWN0IGZmYV9wYXJ0X21z
Z19yeHR4IHsNCj4+ICsgICAgdWludDMyX3QgZmxhZ3M7DQo+PiArICAgIHVpbnQzMl90IHJlc2Vy
dmVkOw0KPj4gKyAgICB1aW50MzJfdCBtc2dfb2Zmc2V0Ow0KPj4gKyAgICB1aW50MzJfdCBzZW5k
X3JlY3ZfaWQ7DQo+PiArICAgIHVpbnQzMl90IG1zZ19zaXplOw0KPj4gK307DQo+PiArDQo+PiB2
b2lkIGZmYV9oYW5kbGVfbXNnX3NlbmRfZGlyZWN0X3JlcShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq
cmVncywgdWludDMyX3QgZmlkKQ0KPj4gew0KPj4gICAgIHN0cnVjdCBhcm1fc21jY2NfMV8yX3Jl
Z3MgYXJnID0geyAuYTAgPSBmaWQsIH07DQo+PiBAQCAtNzgsMyArODcsNDMgQEAgb3V0Og0KPj4g
ICAgICAgICAgICAgICAgICByZXNwLmE0ICYgbWFzaywgcmVzcC5hNSAmIG1hc2ssIHJlc3AuYTYg
JiBtYXNrLA0KPj4gICAgICAgICAgICAgICAgICByZXNwLmE3ICYgbWFzayk7DQo+PiB9DQo+PiAr
DQo+PiAraW50MzJfdCBmZmFfaGFuZGxlX21zZ19zZW5kMihzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq
cmVncykNCj4+ICt7DQo+PiArICAgIHN0cnVjdCBkb21haW4gKnNyY19kID0gY3VycmVudC0+ZG9t
YWluOw0KPj4gKyAgICBzdHJ1Y3QgZmZhX2N0eCAqc3JjX2N0eCA9IHNyY19kLT5hcmNoLnRlZTsN
Cj4+ICsgICAgY29uc3Qgc3RydWN0IGZmYV9wYXJ0X21zZ19yeHR4ICpzcmNfbXNnOw0KPj4gKyAg
ICB1aW50MTZfdCBkc3RfaWQsIHNyY19pZDsNCj4+ICsgICAgaW50MzJfdCByZXQ7DQo+PiArDQo+
PiArICAgIGlmICggIWZmYV9md19zdXBwb3J0c19maWQoRkZBX01TR19TRU5EMikgKQ0KPj4gKyAg
ICAgICAgcmV0dXJuIEZGQV9SRVRfTk9UX1NVUFBPUlRFRDsNCj4+ICsNCj4+ICsgICAgaWYgKCAh
c3Bpbl90cnlsb2NrKCZzcmNfY3R4LT50eF9sb2NrKSApDQo+PiArICAgICAgICByZXR1cm4gRkZB
X1JFVF9CVVNZOw0KPj4gKw0KPj4gKyAgICBzcmNfbXNnID0gc3JjX2N0eC0+dHg7DQo+PiArICAg
IHNyY19pZCA9IHNyY19tc2ctPnNlbmRfcmVjdl9pZCA+PiAxNjsNCj4+ICsgICAgZHN0X2lkID0g
c3JjX21zZy0+c2VuZF9yZWN2X2lkICYgR0VOTUFTSygxNSwwKTsNCj4+ICsNCj4+ICsgICAgaWYg
KCBzcmNfaWQgIT0gZmZhX2dldF92bV9pZChzcmNfZCkgfHwgIUZGQV9JRF9JU19TRUNVUkUoZHN0
X2lkKSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJldCA9IEZGQV9SRVRfSU5WQUxJRF9QQVJB
TUVURVJTOw0KPj4gKyAgICAgICAgZ290byBvdXRfdW5sb2NrX3R4Ow0KPj4gKyAgICB9DQo+PiAr
DQo+PiArICAgIC8qIGNoZWNrIHNvdXJjZSBtZXNzYWdlIGZpdHMgaW4gYnVmZmVyICovDQo+PiAr
ICAgIGlmICggc3JjX2N0eC0+cGFnZV9jb3VudCAqIEZGQV9QQUdFX1NJWkUgPA0KPj4gKyAgICAg
ICAgIHNyY19tc2ctPm1zZ19vZmZzZXQgKyBzcmNfbXNnLT5tc2dfc2l6ZSB8fA0KPj4gKyAgICAg
ICAgIHNyY19tc2ctPm1zZ19vZmZzZXQgPCBzaXplb2Yoc3RydWN0IGZmYV9wYXJ0X21zZ19yeHR4
KSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJldCA9IEZGQV9SRVRfSU5WQUxJRF9QQVJBTUVU
RVJTOw0KPj4gKyAgICAgICAgZ290byBvdXRfdW5sb2NrX3R4Ow0KPj4gKyAgICB9DQo+IA0KPiBU
aGUgZ3Vlc3QgY2FuIGNoYW5nZSBzcmNfbXN0IGF0IGFueSBtb21lbnQgd2l0aCBhbm90aGVyIENQ
VSBzbyB0aGVzZQ0KPiB0ZXN0cyBhcmUgb25seSBzYW5pdHkgY2hlY2tzLiBUaGUgU1BNQyB3aWxs
IGFsc28gaGF2ZSB0byBsb2NrIGFuZCBkbw0KPiB0aGUgc2FtZSB0ZXN0cyBhZ2Fpbi4gU28gdGhl
IHRlc3RzIGhlcmUgd2lsbCBvbmx5IGluIHRoZSBiZXN0IGNhc2UgKGluDQo+IGNhc2UgdGhlIGd1
ZXN0IGlzIG1pc2JlaGF2aW5nKSBzYXZlIHVzIGZyb20gZW50ZXJpbmcgdGhlIFNQTUMgb25seSB0
bw0KPiBnZXQgYW4gZXJyb3IgYmFjay4gVGhlIGxvY2sgbWFrZXMgc2Vuc2Ugc2luY2Ugd2UgY291
bGQgaGF2ZSBjb25jdXJyZW50DQo+IGNhbGxzIHRvIEZGQV9NRU1fU0hBUkUuIEhvdyBhYm91dCBy
ZW1vdmluZyB0aGUgdGVzdHM/DQoNCkkgdGhpbmsgd2Ugc2hvdWxkIHN0aWxsIHByZXZlbnQgdG8g
Zm9yd2FyZCBpbnZhbGlkIHJlcXVlc3RzIHRvIHRoZSBTUE1DIGFzDQptdWNoIGFzIHdlIGNhbiB0
byBwcmV2ZW50IGEgbWFsaWNpb3VzIGd1ZXN0IGZyb20gc3RpbGxpbmcgQ1BVIGN5Y2xlcyBieQ0K
ZG9pbmcgaW52YWxpZCBjYWxscyB0byB0aGUgc2VjdXJlIHdvcmxkLg0KDQpJIGNvdWxkIHB1dCBh
IGNvbW1lbnQgaW4gdGhlcmUgc2F5aW5nIHRoYXQgdGhpcyBpcyBqdXN0IHByb3RlY3Rpb24gYnV0
IHRvIGJlDQpmYXJlIHRoZSBTUE1DIGluIHNlY3VyZSB3aWxsIGhhdmUgdGhlIHNhbWUgaXNzdWVz
OiB0aGlzIGNhbiBiZSBjaGFuZ2VkDQphdCBhbnkgdGltZSBieSB0aGUgY2FsbGVyIG9uIGFub3Ro
ZXIgY29yZS4NCg0KPiANCj4+ICsNCj4+ICsgICAgcmV0ID0gZmZhX3NpbXBsZV9jYWxsKEZGQV9N
U0dfU0VORDIsICgodWludDMyX3Qpc3JjX2lkKSA8PCAxNiwgMCwgMCwgMCk7DQo+IA0KPiBJJ2Qg
cmF0aGVyIHVzZSBmZmFfZ2V0X3ZtX2lkKHNyY19kKSBpbnN0ZWFkIG9mIHNyY19pZC4NCg0Kc3Jj
X2lkIGlzIGEgbG9jYWwgdmFyaWFibGUgYW5kIHdhcyBjaGVja2VkIHRvIGJlIGVxdWFsIHRvICBm
ZmFfZ2V0X3ZtX2lkKHNyY19kKQ0KdXBwZXIgc28gdGhvc2UgMiB2YWx1ZXMgYXJlIHRoZSBzYW1l
Lg0KV2h5IHdvdWxkIHlvdSByYXRoZXIgcmVjYWxsIGZmYV9nZXRfdm1faWQgaGVyZSA/DQoNCkNo
ZWVycw0KQmVydHJhbmQNCg0KPiANCj4gQ2hlZXJzLA0KPiBKZW5zDQo+IA0KPj4gKw0KPj4gK291
dF91bmxvY2tfdHg6DQo+PiArICAgIHNwaW5fdW5sb2NrKCZzcmNfY3R4LT50eF9sb2NrKTsNCj4+
ICsgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3Rl
ZS9mZmFfcHJpdmF0ZS5oIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfcHJpdmF0ZS5oDQo+PiBpbmRl
eCA5NzNlZTU1YmUwOWIuLmQ0NDFjMGNhNTU5OCAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2Fy
bS90ZWUvZmZhX3ByaXZhdGUuaA0KPj4gKysrIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfcHJpdmF0
ZS5oDQo+PiBAQCAtMzU5LDYgKzM1OSw3IEBAIHZvaWQgZmZhX2hhbmRsZV9ub3RpZmljYXRpb25f
Z2V0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKTsNCj4+IGludCBmZmFfaGFuZGxlX25vdGlm
aWNhdGlvbl9zZXQoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOw0KPj4gDQo+PiB2b2lkIGZm
YV9oYW5kbGVfbXNnX3NlbmRfZGlyZWN0X3JlcShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywg
dWludDMyX3QgZmlkKTsNCj4+ICtpbnQzMl90IGZmYV9oYW5kbGVfbXNnX3NlbmQyKHN0cnVjdCBj
cHVfdXNlcl9yZWdzICpyZWdzKTsNCj4+IA0KPj4gc3RhdGljIGlubGluZSB1aW50MTZfdCBmZmFf
Z2V0X3ZtX2lkKGNvbnN0IHN0cnVjdCBkb21haW4gKmQpDQo+PiB7DQo+PiAtLQ0KPj4gMi40Ny4w
DQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 10:32:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 10:32:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825166.1239376 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3v8c-00074l-5x; Thu, 24 Oct 2024 10:32:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825166.1239376; Thu, 24 Oct 2024 10:32: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 1t3v8c-00074e-2R; Thu, 24 Oct 2024 10:32:18 +0000
Received: by outflank-mailman (input) for mailman id 825166;
 Thu, 24 Oct 2024 10:32: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=wszh=RU=arm.com=ryan.roberts@srs-se1.protection.inumbo.net>)
 id 1t3v8b-00074Y-1P
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 10:32:17 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 3c0bcf87-91f3-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 12:32:14 +0200 (CEST)
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 8DCCC339;
 Thu, 24 Oct 2024 03:32:43 -0700 (PDT)
Received: from [10.57.88.37] (unknown [10.57.88.37])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4B2C33F71E;
 Thu, 24 Oct 2024 03:32:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3c0bcf87-91f3-11ef-a0bf-8be0dac302b0
Message-ID: <3027c366-2cb0-4984-8ee7-aae92fb51512@arm.com>
Date: Thu, 24 Oct 2024 11:32:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH v1 36/57] xen: Remove PAGE_SIZE compile-time constant
 assumption
Content-Language: en-GB
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
 Anshuman Khandual <anshuman.khandual@arm.com>,
 Ard Biesheuvel <ardb@kernel.org>, Catalin Marinas <catalin.marinas@arm.com>,
 David Hildenbrand <david@redhat.com>, Greg Marsden
 <greg.marsden@oracle.com>, Ivan Ivanov <ivan.ivanov@suse.com>,
 Kalesh Singh <kaleshsingh@google.com>, Marc Zyngier <maz@kernel.org>,
 Mark Rutland <mark.rutland@arm.com>, Matthias Brugger <mbrugger@suse.com>,
 Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org>,
 Juergen Gross <jgross@suse.com>, linux-arm-kernel@lists.infradead.org,
 linux-kernel@vger.kernel.org, linux-mm@kvack.org,
 xen-devel@lists.xenproject.org, julien@xen.org
References: <20241014105514.3206191-1-ryan.roberts@arm.com>
 <20241014105912.3207374-1-ryan.roberts@arm.com>
 <20241014105912.3207374-36-ryan.roberts@arm.com>
 <829b5662-13c0-4728-894c-b2d578681b11@arm.com>
 <alpine.DEB.2.22.394.2410221808160.3833@ubuntu-linux-20-04-desktop>
From: Ryan Roberts <ryan.roberts@arm.com>
In-Reply-To: <alpine.DEB.2.22.394.2410221808160.3833@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23/10/2024 02:23, Stefano Stabellini wrote:
> +Julien
> 
> On Wed, 16 Oct 2024, Ryan Roberts wrote:
>> + Juergen Gross, Stefano Stabellini
>>
>> This was a rather tricky series to get the recipients correct for and my script
>> did not realize that "supporter" was a pseudonym for "maintainer" so you were
>> missed off the original post. Appologies!
>>
>> More context in cover letter:
>> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
>>
>>
>> On 14/10/2024 11:58, Ryan Roberts wrote:
>>> To prepare for supporting boot-time page size selection, refactor code
>>> to remove assumptions about PAGE_SIZE being compile-time constant. Code
>>> intended to be equivalent when compile-time page size is active.
>>>
>>> Allocate enough "frame_list" static storage in the balloon driver for
>>> the maximum supported page size. Although continue to use only the first
>>> PAGE_SIZE of the buffer at run-time to maintain existing behaviour.
>>>
>>> Refactor xen_biovec_phys_mergeable() to convert ifdeffery to c if/else.
>>> For compile-time page size, the compiler will choose one branch and
>>> strip the dead one. For boot-time, it can be evaluated at run time.
>>>
>>> Refactor a BUILD_BUG_ON to evaluate the limit (when the minimum
>>> supported page size is selected at boot-time).
>>>
>>> Reserve enough storage for max page size in "struct remap_data" and
>>> "struct xenbus_map_node".
>>>
>>> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
>>> ---
>>>
>>> ***NOTE***
>>> Any confused maintainers may want to read the cover note here for context:
>>> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
>>>
>>>  drivers/xen/balloon.c              | 11 ++++++-----
>>>  drivers/xen/biomerge.c             | 12 ++++++------
>>>  drivers/xen/privcmd.c              |  2 +-
>>>  drivers/xen/xenbus/xenbus_client.c |  5 +++--
>>>  drivers/xen/xlate_mmu.c            |  6 +++---
>>>  include/xen/page.h                 |  2 ++
>>>  6 files changed, 21 insertions(+), 17 deletions(-)
>>>
>>> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
>>> index 528395133b4f8..0ed5f6453af0e 100644
>>> --- a/drivers/xen/balloon.c
>>> +++ b/drivers/xen/balloon.c
>>> @@ -131,7 +131,8 @@ struct balloon_stats balloon_stats;
>>>  EXPORT_SYMBOL_GPL(balloon_stats);
>>>  
>>>  /* We increase/decrease in batches which fit in a page */
>>> -static xen_pfn_t frame_list[PAGE_SIZE / sizeof(xen_pfn_t)];
>>> +static xen_pfn_t frame_list[PAGE_SIZE_MAX / sizeof(xen_pfn_t)];
>>> +#define FRAME_LIST_NR_ENTRIES (PAGE_SIZE / sizeof(xen_pfn_t))
>>>  
>>>  
>>>  /* List of ballooned pages, threaded through the mem_map array. */
>>> @@ -389,8 +390,8 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
>>>  	unsigned long i;
>>>  	struct page   *page;
>>>  
>>> -	if (nr_pages > ARRAY_SIZE(frame_list))
>>> -		nr_pages = ARRAY_SIZE(frame_list);
>>> +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
>>> +		nr_pages = FRAME_LIST_NR_ENTRIES;
>>>  
>>>  	page = list_first_entry_or_null(&ballooned_pages, struct page, lru);
>>>  	for (i = 0; i < nr_pages; i++) {
>>> @@ -434,8 +435,8 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
>>>  	int ret;
>>>  	LIST_HEAD(pages);
>>>  
>>> -	if (nr_pages > ARRAY_SIZE(frame_list))
>>> -		nr_pages = ARRAY_SIZE(frame_list);
>>> +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
>>> +		nr_pages = FRAME_LIST_NR_ENTRIES;
>>>  
>>>  	for (i = 0; i < nr_pages; i++) {
>>>  		page = alloc_page(gfp);
>>> diff --git a/drivers/xen/biomerge.c b/drivers/xen/biomerge.c
>>> index 05a286d24f148..28f0887e40026 100644
>>> --- a/drivers/xen/biomerge.c
>>> +++ b/drivers/xen/biomerge.c
>>> @@ -8,16 +8,16 @@
>>>  bool xen_biovec_phys_mergeable(const struct bio_vec *vec1,
>>>  			       const struct page *page)
>>>  {
>>> -#if XEN_PAGE_SIZE == PAGE_SIZE
>>> -	unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
>>> -	unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
>>> +	if (XEN_PAGE_SIZE == PAGE_SIZE) {
>>> +		unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
>>> +		unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
>>> +
>>> +		return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
>>> +	}
>>>  
>>> -	return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
>>> -#else
>>>  	/*
>>>  	 * XXX: Add support for merging bio_vec when using different page
>>>  	 * size in Xen and Linux.
>>>  	 */
>>>  	return false;
>>> -#endif
>>>  }
>>> diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
>>> index 9563650dfbafc..847f7b806caf7 100644
>>> --- a/drivers/xen/privcmd.c
>>> +++ b/drivers/xen/privcmd.c
>>> @@ -557,7 +557,7 @@ static long privcmd_ioctl_mmap_batch(
>>>  	state.global_error  = 0;
>>>  	state.version       = version;
>>>  
>>> -	BUILD_BUG_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);
>>> +	BUILD_BUG_ON(((PAGE_SIZE_MIN / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE_MAX) != 0);
> 
> Is there any value in keep this test? And if so, what should it look
> like? I think we should turn it into a WARN_ON:
> 
> WARN_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);
> 
> It doesn't make much sense having a BUILD_BUG_ON on a variable that can
> change?

I believe that as long as we assume sizeof(xen_pfn_t), PAGE_SIZE and
XEN_PAGE_SIZE are all power-of-two sizes, then this single build-time test
should cover all possible boot-time PAGE_SIZEs.

Logic:

If PAGE_SIZE and XEN_PAGE_SIZE are power-of-two, then XEN_PFN_PER_PAGE must also
be power-of-two. XEN_PFN_PER_PAGE_MAX is just the worst case limit.

(PAGE_SIZE_MIN / sizeof(xen_pfn_t)) is the number of xen_pfn_t that fit on
smallest page.

If you can get an integer multiple number of XEN_PFN_PER_PAGE_MAX on the
smallest page, then it remains an integer multiple as PAGE_SIZE gets bigger,
assuming it is restricted to power-of-two sizes.

Perhaps there is a floor in my logic?

I'd prefer to keep BUILD_BUG_ON where possible to avoid the additional image
size bloat and runtime costs.

Thanks,
Ryan

> 
> 
>>>  	/* mmap_batch_fn guarantees ret == 0 */
>>>  	BUG_ON(traverse_pages_block(m.num, sizeof(xen_pfn_t),
>>>  				    &pagelist, mmap_batch_fn, &state));
>>> diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
>>> index 51b3124b0d56c..99bde836c10c4 100644
>>> --- a/drivers/xen/xenbus/xenbus_client.c
>>> +++ b/drivers/xen/xenbus/xenbus_client.c
>>> @@ -49,9 +49,10 @@
>>>  
>>>  #include "xenbus.h"
>>>  
>>> -#define XENBUS_PAGES(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
>>> +#define XENBUS_PAGES(_grants)		(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
>>> +#define XENBUS_PAGES_MAX(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE_MIN))
>>>  
>>> -#define XENBUS_MAX_RING_PAGES	(XENBUS_PAGES(XENBUS_MAX_RING_GRANTS))
>>> +#define XENBUS_MAX_RING_PAGES		(XENBUS_PAGES_MAX(XENBUS_MAX_RING_GRANTS))
>>>  
>>>  struct xenbus_map_node {
>>>  	struct list_head next;
>>> diff --git a/drivers/xen/xlate_mmu.c b/drivers/xen/xlate_mmu.c
>>> index f17c4c03db30c..a757c801a7542 100644
>>> --- a/drivers/xen/xlate_mmu.c
>>> +++ b/drivers/xen/xlate_mmu.c
>>> @@ -74,9 +74,9 @@ struct remap_data {
>>>  	int mapped;
>>>  
>>>  	/* Hypercall parameters */
>>> -	int h_errs[XEN_PFN_PER_PAGE];
>>> -	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE];
>>> -	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE];
>>> +	int h_errs[XEN_PFN_PER_PAGE_MAX];
>>> +	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE_MAX];
>>> +	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE_MAX];
>>>  
>>>  	int h_iter;	/* Iterator */
>>>  };
>>> diff --git a/include/xen/page.h b/include/xen/page.h
>>> index 285677b42943a..86683a30038a3 100644
>>> --- a/include/xen/page.h
>>> +++ b/include/xen/page.h
>>> @@ -21,6 +21,8 @@
>>>  	((page_to_pfn(page)) << (PAGE_SHIFT - XEN_PAGE_SHIFT))
>>>  
>>>  #define XEN_PFN_PER_PAGE	(PAGE_SIZE / XEN_PAGE_SIZE)
>>> +#define XEN_PFN_PER_PAGE_MIN	(PAGE_SIZE_MIN / XEN_PAGE_SIZE)
>>> +#define XEN_PFN_PER_PAGE_MAX	(PAGE_SIZE_MAX / XEN_PAGE_SIZE)
>>>  
>>>  #define XEN_PFN_DOWN(x)	((x) >> XEN_PAGE_SHIFT)
>>>  #define XEN_PFN_UP(x)	(((x) + XEN_PAGE_SIZE-1) >> XEN_PAGE_SHIFT)
>>



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 11:51:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 11:51:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825181.1239386 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3wN8-0000qs-Oj; Thu, 24 Oct 2024 11:51:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825181.1239386; Thu, 24 Oct 2024 11:51: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 1t3wN8-0000ql-Lx; Thu, 24 Oct 2024 11:51:22 +0000
Received: by outflank-mailman (input) for mailman id 825181;
 Thu, 24 Oct 2024 11:51: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=aCB4=RU=bounce.vates.tech=bounce-md_30504962.671a34b5.v1-c128b213f31e4ca293d34ba5c95fea13@srs-se1.protection.inumbo.net>)
 id 1t3wN7-0000qf-77
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 11:51:21 +0000
Received: from mail145-12.atl61.mandrillapp.com
 (mail145-12.atl61.mandrillapp.com [198.2.145.12])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4780bc80-91fe-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 13:51:18 +0200 (CEST)
Received: from pmta06.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail145-12.atl61.mandrillapp.com (Mailchimp) with ESMTP id
 4XZ44j205fz5QkVf4
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 11:51:17 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 c128b213f31e4ca293d34ba5c95fea13; Thu, 24 Oct 2024 11: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: 4780bc80-91fe-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1729770677; x=1730031177;
	bh=z9qElPwe4uoWv7PM3kvrnkibV09fOfsmAffGehTewU0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=RyQVMCOuwJsQqYPWv0lFD6oRd7bjoLYdYs9waagSnjad9p16eK1bENGZWowX4GxBj
	 pNZSIlalBwHRg/4uIzcRp+UUS73ILz+Y6gobq4B9li4mofmUripXMCjcYTOAQWYlPO
	 sVBjPBI0j5bxI41m0jfxJo1TAmA1x2bdC3IsHolh77WBxqRnbDBr6HYTMEyVMSb4D9
	 pV3dzOqESLWKAWXFVWxJwqok+9Moq9mt2kdYvCKhtHriv+/8A+VnkxUmeuRj61AV2v
	 ++TJSacKB2tWQzfzsKohUyw5CcYwIlzAYUue5XP+evzaeX2y2LiicgTaFAV8Di/r12
	 BXNewcu47LubQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1729770677; x=1730031177; i=anthony.perard@vates.tech;
	bh=z9qElPwe4uoWv7PM3kvrnkibV09fOfsmAffGehTewU0=;
	h=From:Subject:To:Cc:Message-Id:References:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=hzQYIfuwOU9WFH7EFAPUZy2oJR5ey2OEM99+xcGJ4l561+VXkZIk3AKDQDFWXkQOo
	 ilkdLMYdCfDAY1aAW2gDmwG9pkdvKC4g0WO0S9WbpgJSfltgskAzpY67BiUfeJLHWh
	 CvosF8rEwuBayCMKKA+DeKs+NXYu2NAvg3m/G7l1KkB19YlfKua6LBFu6E/k52Det6
	 h5jvPp1c6OWqBdk5xjqiF0QHMx7HGEXQBDEg28lVeeYyMbCKSNggPWH/Tq8NnSXLfQ
	 JFeFkFcGv0WRQZ12LPD0Tc3RxxkGrVWQutF5K1mXkUhT1pJ7ESb6nmbcM9PkS6dwSL
	 WcPfm6QQXgyTA==
From: "Anthony PERARD" <anthony.perard@vates.tech>
Subject: =?utf-8?Q?Re:=20[XEN=20PATCH=20v1=204/6]=20CI:=20Refresh=20the=20Debian=2012=20arm32=20cross=20compile=20container?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1729770675886
To: "Javi Merino" <javi.merino@cloud.com>
Cc: xen-devel@lists.xenproject.org, "Doug Goldstein" <cardoe@cardoe.com>, "Stefano Stabellini" <sstabellini@kernel.org>
Message-Id: <Zxo0s72TBQtuWTXS@l14>
References: <cover.1729760501.git.javi.merino@cloud.com> <762312efd58aa1b41cfcb5439f2fd35580b8bba6.1729760501.git.javi.merino@cloud.com>
In-Reply-To: <762312efd58aa1b41cfcb5439f2fd35580b8bba6.1729760501.git.javi.merino@cloud.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.c128b213f31e4ca293d34ba5c95fea13?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241024:md
Date: Thu, 24 Oct 2024 11:51:17 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On Thu, Oct 24, 2024 at 11:04:19AM +0100, Javi Merino wrote:
> diff --git a/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile b/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
> new file mode 100644
> index 000000000000..bdc935706bfa
> --- /dev/null
> +++ b/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
> @@ -0,0 +1,28 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/arm64/v8 debian:bookworm
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"

Recent update of other dockerfile was repeating the "LABEL" intruction
for each label, maybe we should continue to do that (which avoid the
backslash at the end of lines).

> +
> +ENV DEBIAN_FRONTEND=noninteractive
> +ENV CROSS_COMPILE /usr/bin/arm-linux-gnueabihf-

While the syntax "ENV VAR value" is supported, it's been discouraged by
docker's doc (https://docs.docker.com/reference/dockerfile/#env). Also,
here we have two ENV instructions with two different syntax, could you
use the = for declaring CROSS_COMPILE as well?

Thanks,

-- 

Anthony Perard | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 12:59:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 12:59:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825215.1239395 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xR8-0008JL-UC; Thu, 24 Oct 2024 12:59:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825215.1239395; Thu, 24 Oct 2024 12:59: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 1t3xR8-0008JE-RK; Thu, 24 Oct 2024 12:59:34 +0000
Received: by outflank-mailman (input) for mailman id 825215;
 Thu, 24 Oct 2024 12:59: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3xR7-0008J8-Qm
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 12:59:33 +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 cfab66d6-9207-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 14:59:31 +0200 (CEST)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-539e6c754bdso780305e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 05:59:31 -0700 (PDT)
Received: from premium-test ([185.25.67.249]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b4d9sm5650793a12.65.2024.10.24.05.59.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 05:59:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cfab66d6-9207-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729774771; x=1730379571; 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=ixXW3PLR//Gz4PUYGLxickYN42Ir9FIiRkOqEjBxNQE=;
        b=JKpJvp7MRNOJions7esfT+8A9x2XJ4Y52huQUX890nLHWk2gwkSVYikSmULwXIvwd2
         jxPquJfywhiwuTG/ayTwIQ2RiDkSG7e16FYrNHDaBgXiN962siSaEMJztLix3fD2sSOs
         +N9nYpCDICeXX2uKDeJGwecK3fHrhS+xoMAD4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729774771; x=1730379571;
        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=ixXW3PLR//Gz4PUYGLxickYN42Ir9FIiRkOqEjBxNQE=;
        b=Br8hUP8z3ZSOeqpxdgf2/KRcKiXAzeHwcWIPfEd3+CnEyHmv9HSNYxJS3JmN5SShHp
         zaaVsXKgWe2XQmQItvczbhFZIKAsckAPmT/6Fnt82PAx4A+n071EBqs4G/INVPRYFCSK
         bRb05Ut9tk+2wl5NKoXTh8j1oRTohuz9YzYFtvtE16fZG/RhOhMW5SdIZ9g+A41zXLHw
         yiP/bQpvmMWCjzgJeixniXVmKwo3I+cEBhSrDf9ms531jlvujuQdfUcl8k8hYgCwm2cz
         lhTsF6pgaj4ye8BPn3JkRXUX+VsTSSxLnDMxK/ACiudkE/6GKbusi1mgSZ0GJJ9/PODc
         I+zQ==
X-Gm-Message-State: AOJu0YygFoFH/0gMBPED2fgA/zRiXDMdOBPul04A5c33awLDTzQJdjBo
	lbHsnPBPQWZCqT+Yoj88+BOvAFBdp+7l07xwNuDJefAvHE8vNBhQbG1c0EE+ec0=
X-Google-Smtp-Source: AGHT+IEL2/2WFhAWQolmDwxuV3fhBtcMI8LRQ/ivzZIIDRZPPt4axjxYmfxEHW5pYu7tvJztCS4YPg==
X-Received: by 2002:a05:6512:1246:b0:536:9f72:c427 with SMTP id 2adb3069b0e04-53b1a343cfamr3234459e87.28.1729774771217;
        Thu, 24 Oct 2024 05:59:31 -0700 (PDT)
Date: Thu, 24 Oct 2024 13:59:29 +0100
From: Javi Merino <javi.merino@cloud.com>
To: Anthony PERARD <anthony.perard@vates.tech>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, 
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v1 4/6] CI: Refresh the Debian 12 arm32 cross compile
 container
Message-ID: <lbwnnoofdxpjigteesd4bn7tdtmint7wh2rpu6e4zmpkqpzcwi@y6ycrhnpomjh>
References: <cover.1729760501.git.javi.merino@cloud.com>
 <762312efd58aa1b41cfcb5439f2fd35580b8bba6.1729760501.git.javi.merino@cloud.com>
 <Zxo0s72TBQtuWTXS@l14>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <Zxo0s72TBQtuWTXS@l14>

On Thu, Oct 24, 2024 at 11:51:16AM +0000, Anthony PERARD wrote:
> On Thu, Oct 24, 2024 at 11:04:19AM +0100, Javi Merino wrote:
> > diff --git a/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile b/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
> > new file mode 100644
> > index 000000000000..bdc935706bfa
> > --- /dev/null
> > +++ b/automation/build/debian/12-arm64v8-arm32-gcc.dockerfile
> > @@ -0,0 +1,28 @@
> > +# syntax=docker/dockerfile:1
> > +FROM --platform=linux/arm64/v8 debian:bookworm
> > +LABEL maintainer.name="The Xen Project" \
> > +      maintainer.email="xen-devel@lists.xenproject.org"
> 
> Recent update of other dockerfile was repeating the "LABEL" intruction
> for each label, maybe we should continue to do that (which avoid the
> backslash at the end of lines).

Sure. I  will do that if there's a v2 (or for other dockerfiles).

> > +ENV DEBIAN_FRONTEND=noninteractive
> > +ENV CROSS_COMPILE /usr/bin/arm-linux-gnueabihf-
> 
> While the syntax "ENV VAR value" is supported, it's been discouraged by
> docker's doc (https://docs.docker.com/reference/dockerfile/#env). Also,
> here we have two ENV instructions with two different syntax, could you
> use the = for declaring CROSS_COMPILE as well?

I hadn't even noticed that they were using different syntax.  I'll use
ENV VAR=value from now on.

Thanks,
Javi


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:04:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:04:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825221.1239406 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xW8-0001O1-FA; Thu, 24 Oct 2024 13:04:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825221.1239406; Thu, 24 Oct 2024 13:04: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 1t3xW8-0001Nu-CS; Thu, 24 Oct 2024 13:04:44 +0000
Received: by outflank-mailman (input) for mailman id 825221;
 Thu, 24 Oct 2024 13:04: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3xW7-0001No-As
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:04:43 +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 88bd249b-9208-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 15:04:42 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a99cc265e0aso118193666b.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:04:42 -0700 (PDT)
Received: from premium-test ([185.25.67.249]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912f660dsm615303066b.80.2024.10.24.06.04.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 06:04:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 88bd249b-9208-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729775082; x=1730379882; 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=7+6iW4O4E0YZl1jSwsSwmH2ZP34PDf0XgLs00HCSduc=;
        b=JFde8Lfnx3jZA7EgK1vNN01UrwFZQQPAmSp7Ixmd+jyygD+DpJk2IRC8cAEnO5I2P3
         IDUDfYbdVf7WWiqqHs6nCHNZi7oEdGGYartYMdK6eU3XnpHbVN+krdImteRuQZ2gr7ZK
         DYEQzTDPrpvUpqqnRk528pXtgn0Y+XmiMryFI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729775082; x=1730379882;
        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=7+6iW4O4E0YZl1jSwsSwmH2ZP34PDf0XgLs00HCSduc=;
        b=g5L8cerdJ+N4vj0QweewnPh61zEa85foNSUeNS6kh6hJVaTdfRQNnMVfPIVXc3/xLV
         H19mqP3yxnmG87oZvvdR4+Romt1NusudUGCjon3s+OUWcZuMtARsfnelv0Jj5t9Hnung
         kCFbG1SKTxNgFCeK2mUfHTDiv2md/aPD2ZonjfbzoOcf3317WSJ1dO0l2cpCq/d6p3cj
         iRvEDibqXxXtOxYaj2fNGPJkwCGUXmH00C2GXn9NJyYVessqT+LMpiJjJY71RLjqnwQ5
         Dtz9atEdtVAhvY9xmvbCpiJiK83p4I8MV7ClYWZ+7l4cNxRgL1FTK1kEQwVRgnUvHbL2
         gU5w==
X-Gm-Message-State: AOJu0Yz84gAUwbzRLzJ00uEVmvGS5451mr2WKpnp9qX3ZfbVzalDgGzQ
	VjNZ6mPnaZeUz/7KYM0dTx3W/bl05SIevA0e0ZfdqXsZMB0ii9hOv5QeJ4DkYxKT90F8E/vLIY1
	OuKI=
X-Google-Smtp-Source: AGHT+IFVqwhcUsc0UxY3X4eVoYgMHa1m9vy3+XbOIuxDRKWOKj9DTGlTVnM2b+peQad1SapCJOfnvw==
X-Received: by 2002:a17:907:7d92:b0:a9a:c691:dca0 with SMTP id a640c23a62f3a-a9ad2730557mr164772666b.23.1729775081147;
        Thu, 24 Oct 2024 06:04:41 -0700 (PDT)
Date: Thu, 24 Oct 2024 14:04:39 +0100
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>, 
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v1 2/6] CI: Refresh the Debian 12 x86_32 container
Message-ID: <3etcrrkyddpkeacuz5swu5s3ohytqwqf437y3evkg7t7neq3hz@nhgvjqvkeqnf>
References: <cover.1729760501.git.javi.merino@cloud.com>
 <f542e8157d7fe419d7b274d749bffde086a28f32.1729760501.git.javi.merino@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <f542e8157d7fe419d7b274d749bffde086a28f32.1729760501.git.javi.merino@cloud.com>

On Thu, Oct 24, 2024 at 11:04:17AM +0100, Javi Merino wrote:
> Rework the container to be non-root, use heredocs for readability, and
> use apt-get --no-install-recommends to keep the size down.  Rename the
> job to x86_32, to be consistent with XEN_TARGET_ARCH and the
> naming scheme of all the other CI jobs:
> ${VERSION}-${ARCH}-${BUILD_NAME}
> 
> Remove build dependencies for building QEMU, as we don't do it since
> e305256e69b1 ("CI: Stop building QEMU in general").
> 
> Remove build dependencies for the documentation as we don't have to
> build it for every single arch.
> 
> This reduces the size of the container from 2.22GB to 1.32Gb.
> 
> Signed-off-by: Javi Merino <javi.merino@cloud.com>
> ---
>  automation/build/debian/12-x86_32.dockerfile  | 51 +++++++++++++++++++
>  .../build/debian/bookworm-i386.dockerfile     | 50 ------------------
>  automation/gitlab-ci/build.yaml               |  8 +--
>  automation/scripts/containerize               |  2 +-
>  4 files changed, 56 insertions(+), 55 deletions(-)
>  create mode 100644 automation/build/debian/12-x86_32.dockerfile
>  delete mode 100644 automation/build/debian/bookworm-i386.dockerfile
> 
> diff --git a/automation/build/debian/12-x86_32.dockerfile b/automation/build/debian/12-x86_32.dockerfile
> new file mode 100644
> index 000000000000..d3c67a256212
> --- /dev/null
> +++ b/automation/build/debian/12-x86_32.dockerfile
> @@ -0,0 +1,51 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/i386 debian:bookworm
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"
> +
> +ENV DEBIAN_FRONTEND=noninteractive
> +ENV USER root

This line shouldn't be here.  I forgot to remove it.  The container
has a USER line at the end to set it.

Cheers,
Javi


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:22:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825238.1239441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xn7-0004pb-N7; Thu, 24 Oct 2024 13:22:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825238.1239441; Thu, 24 Oct 2024 13:22: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 1t3xn7-0004p4-Ga; Thu, 24 Oct 2024 13:22:17 +0000
Received: by outflank-mailman (input) for mailman id 825238;
 Thu, 24 Oct 2024 13:22: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3xn6-0004KA-Gz
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:22:16 +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 fc07d42f-920a-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 15:22:14 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so118895566b.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:22:14 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm618574766b.79.2024.10.24.06.22.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 06:22:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc07d42f-920a-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729776133; x=1730380933; 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=vje9cjl7S3MEL0v41NICuEDrNpFT2GOVFHe2wP6D174=;
        b=MXhSz/AgaUTb1+YOyikG/qnyiGBComM/0+9LBZy/bdTjMPfQxNtnFMCpaU0nErfP1f
         YzAL+afDDYjz4BGriFJzxfwUYgkicL3g+6gpjzEkOxoacP0dWlFlWhm/r4+cJkXUNLuR
         /mQdldKTrIqExclRjxWKwhBQC9BjS/tEdHlrY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776133; x=1730380933;
        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=vje9cjl7S3MEL0v41NICuEDrNpFT2GOVFHe2wP6D174=;
        b=tSH+PBaulgyhXJ8p2IfeW11ctEgspbr7gz/TAVI2F+Qk+3Vs7WGsGCdRkd69sMdSTY
         VqGCz+8dByBTFnke0jiXaBoe3R/z5XULebS594XfaVOdVdEzZ8Ffc9DNNioZWmFR68ZY
         yA4dKiVK4iWvbGj4X5MrFlYZqVMF8BpDIXEShr5VKJmpQrmg26+/pf/xhZ3aHk9Vhk6y
         bckHQ4T6NbDgUbd76fBcGQ1ECBojCM84lFrFlHZlyrL2/+WItUX+jNiRE4iig2YdrXcb
         KpPK/qYgZLOPnkriFlgGIhaa0vZcfc6ABOqLHB8sDf+Q7qX8km8rTSyT0rfH1dpVQNTy
         SSkA==
X-Gm-Message-State: AOJu0YzLwEuEd9pX8FzmdzzOREOGwlr7bM9bAq6HVBDV3Icf3/g1T/Nd
	xWO3VROug9bgykYARHIInkbrliRv67Dc/S616AaemgumFco0KQ5hE4LL5JtTzKkgNQErHw462pY
	U
X-Google-Smtp-Source: AGHT+IHOOtGnTEQAVB2sdCQ4P24Dc8w6u4STtsxpipSi9dy2lm9XP0oMoJtBQDdXW4FOf+OM7Hg54A==
X-Received: by 2002:a17:907:6e8c:b0:a9a:46f5:d6d7 with SMTP id a640c23a62f3a-a9abf8459d0mr589610666b.5.1729776133455;
        Thu, 24 Oct 2024 06:22:13 -0700 (PDT)
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>
Subject: [PATCH 2/5] x86/ucode: Drop the parse_blob() wrapper
Date: Thu, 24 Oct 2024 14:22:02 +0100
Message-Id: <20241024132205.987042-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024132205.987042-1-andrew.cooper3@citrix.com>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This separates the collect_cpu_info() and cpu_request_microcode() calls for
later cleanup, and frees up the name to be reused a little differently.

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>
---
 xen/arch/x86/cpu/microcode/core.c | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 21077b449c38..cad38d859eee 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -237,19 +237,6 @@ static struct patch_with_flags nmi_patch =
     .patch  = ZERO_BLOCK_PTR,
 };
 
-/*
- * Return a patch that covers current CPU. If there are multiple patches,
- * return the one with the highest revision number. Return error If no
- * patch is found and an error occurs during the parsing process. Otherwise
- * return NULL.
- */
-static struct microcode_patch *parse_blob(const char *buf, size_t len)
-{
-    alternative_vcall(ucode_ops.collect_cpu_info);
-
-    return alternative_call(ucode_ops.cpu_request_microcode, buf, len, true);
-}
-
 static void microcode_free_patch(const struct microcode_patch *patch)
 {
     xfree((struct microcode_patch *)patch);
@@ -616,7 +603,10 @@ static long cf_check ucode_update_hcall_cont(void *data)
         goto put;
     }
 
-    patch_with_flags.patch = parse_blob(buffer->buffer, buffer->len);
+    alternative_vcall(ucode_ops.collect_cpu_info);
+    patch_with_flags.patch = alternative_call(ucode_ops.cpu_request_microcode,
+                                              (const void *)buffer->buffer,
+                                              buffer->len, true);
     patch_with_flags.flags = buffer->flags;
     xfree(buffer);
     if ( IS_ERR(patch_with_flags.patch) )
@@ -797,7 +787,8 @@ static int __init early_update_cache(const void *data, size_t len)
     if ( !data )
         return -ENOMEM;
 
-    patch = parse_blob(data, len);
+    alternative_vcall(ucode_ops.collect_cpu_info);
+    patch = alternative_call(ucode_ops.cpu_request_microcode, data, len, true);
     if ( IS_ERR(patch) )
     {
         printk(XENLOG_WARNING "Parsing microcode blob error %ld\n",
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:22:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825237.1239435 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xn7-0004ml-BT; Thu, 24 Oct 2024 13:22:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825237.1239435; Thu, 24 Oct 2024 13:22: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 1t3xn7-0004me-8n; Thu, 24 Oct 2024 13:22:17 +0000
Received: by outflank-mailman (input) for mailman id 825237;
 Thu, 24 Oct 2024 13: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3xn6-0004K5-1y
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:22:16 +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 fc598d78-920a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 15:22:15 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a26a5d6bfso116892066b.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:22:15 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm618574766b.79.2024.10.24.06.22.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 06:22:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc598d78-920a-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729776134; x=1730380934; 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=XEK8lPkq2pM0BIHJkdhJ3DO8laaRlVDZkwJP1Ftbg9E=;
        b=o4KPqv5Fn5t/pYZmo/MWrtbkcsoifJMy2fPde2f3O7me/TsYV13iIXcmkn4ALS8NZD
         kE3nkla79mkqGTwffRSoE0CJcAdCuL9LB9AYWPWl9k+FPaZEW7gdxBPTyKJ7zu/HHGSs
         dS+9mo9JOEGKf+QrP0ZOMXeCDGbZTfY7+a6FI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776134; x=1730380934;
        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=XEK8lPkq2pM0BIHJkdhJ3DO8laaRlVDZkwJP1Ftbg9E=;
        b=Y5efT7blj0P3Ig9iPLvNKyNvEJYQUMNONdIepv5Z5d8fhgWhIWCuQJ7Ne2h4NveRGf
         Bmu3QFVJ+4efqq9ynUv7V6VY31735ItGpYuvLa8/zhhDXMOSHwLwLtSHWoHWnuP4wtoE
         8ZEb+B+HUDlYN0yowTeHGNIOfKbE36YJZY5F/CIiu21I4iXVU8jF3Fyqdp5Jcbs9JtY7
         IeYU+b+yzthiPu7E8gCHcwcqhD2jM97+bnXt8l3pC2YTtwFuq3NEVANxk4ALnet/D95r
         9ebc6VTafLuipXODByTuyGYFJynYMyEaN2uFUt7uNHUIJmMDopPLcQKoRJvCZ6xSSDyh
         LerA==
X-Gm-Message-State: AOJu0YxicycdizUkyPO09hSpOC0OoudTfXGEmgBmkc1SjgKR6zqWlBQK
	11lBChRXb547nRvx91GQlJdrVMYhUXdE6ownFzZpsJ1FmHBV8ZaG1cHHbeF32TqZc6cgzZzQjlj
	u
X-Google-Smtp-Source: AGHT+IFGHdvyoTwoaTjUB6lqWKhS3LAmydk5HgOI4qdq1YnBqpDv7EOvvHeclwZXEUaaSPgOAUHlIw==
X-Received: by 2002:a17:907:3fa6:b0:a99:c0be:a8ac with SMTP id a640c23a62f3a-a9abf8b233amr554772866b.37.1729776134279;
        Thu, 24 Oct 2024 06:22:14 -0700 (PDT)
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>
Subject: [PATCH 3/5] x86/ucode: Rename the cpu_request_microcode() hook to parse()
Date: Thu, 24 Oct 2024 14:22:03 +0100
Message-Id: <20241024132205.987042-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024132205.987042-1-andrew.cooper3@citrix.com>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

cpu_request_microcode() was never a good name, and the microcode suffix is
redundant.  Rename it to simply parse().

Introduce ucode_parse() and ucode_parse_dup() wrappers around the parse()
hook, also abstracting away the make_copy parameter and associated
const-correctness.

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>
---
 xen/arch/x86/cpu/microcode/amd.c     |  4 ++--
 xen/arch/x86/cpu/microcode/core.c    | 22 ++++++++++++++++------
 xen/arch/x86/cpu/microcode/intel.c   |  4 ++--
 xen/arch/x86/cpu/microcode/private.h |  2 +-
 4 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/amd.c
index 0fe869eff119..3f147c10ca67 100644
--- a/xen/arch/x86/cpu/microcode/amd.c
+++ b/xen/arch/x86/cpu/microcode/amd.c
@@ -311,7 +311,7 @@ static int scan_equiv_cpu_table(const struct container_equiv_table *et)
     return -ESRCH;
 }
 
-static struct microcode_patch *cf_check cpu_request_microcode(
+static struct microcode_patch *cf_check amd_ucode_parse(
     const void *buf, size_t size, bool make_copy)
 {
     const struct microcode_patch *saved = NULL;
@@ -444,7 +444,7 @@ static struct microcode_patch *cf_check cpu_request_microcode(
 }
 
 static const struct microcode_ops __initconst_cf_clobber amd_ucode_ops = {
-    .cpu_request_microcode            = cpu_request_microcode,
+    .parse                            = amd_ucode_parse,
     .collect_cpu_info                 = collect_cpu_info,
     .apply_microcode                  = apply_microcode,
     .compare_patch                    = compare_patch,
diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index cad38d859eee..29655a44ae62 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -217,6 +217,18 @@ static void __init microcode_grab_module(struct boot_info *bi)
 
 static struct microcode_ops __ro_after_init ucode_ops;
 
+/* Parse a ucode blob.  Returns a pointer to a heap-allocated copy, or PTR_ERR. */
+static struct microcode_patch *ucode_parse_dup(const char *buf, size_t len)
+{
+    return alternative_call(ucode_ops.parse, buf, len, true);
+}
+
+/* Parse a ucode blob.  Returns a pointer into @buf, or PTR_ERR. */
+static const struct microcode_patch *ucode_parse(const char *buf, size_t len)
+{
+    return alternative_call(ucode_ops.parse, buf, len, false);
+}
+
 static DEFINE_SPINLOCK(microcode_mutex);
 
 DEFINE_PER_CPU(struct cpu_signature, cpu_sig);
@@ -604,9 +616,7 @@ static long cf_check ucode_update_hcall_cont(void *data)
     }
 
     alternative_vcall(ucode_ops.collect_cpu_info);
-    patch_with_flags.patch = alternative_call(ucode_ops.cpu_request_microcode,
-                                              (const void *)buffer->buffer,
-                                              buffer->len, true);
+    patch_with_flags.patch = ucode_parse_dup(buffer->buffer, buffer->len);
     patch_with_flags.flags = buffer->flags;
     xfree(buffer);
     if ( IS_ERR(patch_with_flags.patch) )
@@ -788,7 +798,7 @@ static int __init early_update_cache(const void *data, size_t len)
         return -ENOMEM;
 
     alternative_vcall(ucode_ops.collect_cpu_info);
-    patch = alternative_call(ucode_ops.cpu_request_microcode, data, len, true);
+    patch = ucode_parse_dup(data, len);
     if ( IS_ERR(patch) )
     {
         printk(XENLOG_WARNING "Parsing microcode blob error %ld\n",
@@ -832,7 +842,7 @@ static int __init early_microcode_update_cpu(void)
 {
     const void *data = NULL;
     size_t len;
-    struct microcode_patch *patch;
+    const struct microcode_patch *patch;
 
     if ( ucode_blob.size )
     {
@@ -848,7 +858,7 @@ static int __init early_microcode_update_cpu(void)
     if ( !data )
         return -ENOMEM;
 
-    patch = ucode_ops.cpu_request_microcode(data, len, false);
+    patch = ucode_parse(data, len);
     if ( IS_ERR(patch) )
     {
         printk(XENLOG_WARNING "Parsing microcode blob error %ld\n",
diff --git a/xen/arch/x86/cpu/microcode/intel.c b/xen/arch/x86/cpu/microcode/intel.c
index bad51f64724a..3d3f7e57db80 100644
--- a/xen/arch/x86/cpu/microcode/intel.c
+++ b/xen/arch/x86/cpu/microcode/intel.c
@@ -334,7 +334,7 @@ static int cf_check apply_microcode(const struct microcode_patch *patch,
     return 0;
 }
 
-static struct microcode_patch *cf_check cpu_request_microcode(
+static struct microcode_patch *cf_check intel_ucode_parse(
     const void *buf, size_t size, bool make_copy)
 {
     int error = 0;
@@ -406,7 +406,7 @@ static bool __init can_load_microcode(void)
 }
 
 static const struct microcode_ops __initconst_cf_clobber intel_ucode_ops = {
-    .cpu_request_microcode            = cpu_request_microcode,
+    .parse                            = intel_ucode_parse,
     .collect_cpu_info                 = collect_cpu_info,
     .apply_microcode                  = apply_microcode,
     .compare_patch                    = compare_patch,
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index c72f060ac394..e30acee1536b 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -37,7 +37,7 @@ struct microcode_ops {
      * If one is not found, (nothing matches the current CPU), return NULL.
      * Also may return ERR_PTR(-err), e.g. bad container, out of memory.
      */
-    struct microcode_patch *(*cpu_request_microcode)(
+    struct microcode_patch *(*parse)(
         const void *buf, size_t size, bool make_copy);
 
     /*
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:22:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825236.1239422 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xn6-0004Nf-6U; Thu, 24 Oct 2024 13:22:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825236.1239422; Thu, 24 Oct 2024 13: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 1t3xn6-0004NE-0y; Thu, 24 Oct 2024 13:22:16 +0000
Received: by outflank-mailman (input) for mailman id 825236;
 Thu, 24 Oct 2024 13:22: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3xn4-0004KA-Qf
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:22:14 +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 fa885b71-920a-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 15:22:12 +0200 (CEST)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c9709c9b0cso1187339a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:22:12 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm618574766b.79.2024.10.24.06.22.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 06:22:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa885b71-920a-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729776130; x=1730380930; 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=Ykr42/7dHtTL2o2rYQkH4Jz9cqJm/SLAhBttv+V4jsg=;
        b=RgrdLOZfViECYrXlqNPIgVTOOJ8V6Mr8iXm0GQki9tXb3MB4fGMRcAgI7OhMpp9LMm
         r8tnm8J/n7POpLt5BxVMRm+V508R7gDEB2LTKGmsWbRthIYm7KOruMTqsBwV28I1j05s
         RKuY8mYOSLq44+aIuVwP9Uh+UOcUpo+62NczU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776130; x=1730380930;
        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=Ykr42/7dHtTL2o2rYQkH4Jz9cqJm/SLAhBttv+V4jsg=;
        b=scnhcbGP9zd/Gmf3t77d/nVzZgcEdyPX5jSpBfrjb3YFoScGOwTbXWgQrC3pOvoCKj
         wMO+9uAMatdOw2KKzyalAVvkU6lfzsbGdArG7nOeuvqie+Nf8zSaQKN+0UgLOhqKcvA9
         g+4BJ5GpL6WER3+fRdfbGOoeXtA8lq1hWP2NcDuJsfLKnezV/fZ53IBbOL0Lb1SVN3lZ
         ZtHB5OdEQXNdaeY+FT0/hhiRe6AC0Uazv9EYArswyllFCbtlFmi7vfAlG2W7bA30QsVo
         8sJJ93HOlylH/lsHp7hpVlA+1n4F+ch/1Jue95BZM9a0B6lTqIAmFA52RDPx8b+IiDQB
         8Rrw==
X-Gm-Message-State: AOJu0Yx+dROZU0nw2MagYIgHZSM7/wof+sWZFJ5WCznoywKx4govF0/K
	FVCWEol/gaDrK5Y0zsDx4n7sH2lyoYS+C7O7gSms4sHJJVTjmBI6rB5C/I9E2lLRDGAhznEqH5c
	n
X-Google-Smtp-Source: AGHT+IEim2obKtTdkCnQF382TRS8GO1stC987JUn64dkgTVy8taPpJ3AarX5JK733jdbSEGrrMAC4g==
X-Received: by 2002:a17:907:ea0:b0:a99:4162:4e42 with SMTP id a640c23a62f3a-a9abf8ac2acmr487415566b.37.1729776130372;
        Thu, 24 Oct 2024 06:22:10 -0700 (PDT)
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>
Subject: [PATCH 0/5] x86/ucode: Minor cleanup
Date: Thu, 24 Oct 2024 14:22:00 +0100
Message-Id: <20241024132205.987042-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Misc cleanup without functional change.  Mostly to improve clarity.

Andrew Cooper (5):
  x86/ucode: Rename hypercall-context functions
  x86/ucode: Drop the parse_blob() wrapper
  x86/ucode: Rename the cpu_request_microcode() hook to parse()
  x86/ucode: Rename the apply_microcode() hook to load()
  x86/ucode: Drop the match_reg[] field from AMD's microcode_patch

 xen/arch/x86/cpu/microcode/amd.c     | 11 ++---
 xen/arch/x86/cpu/microcode/core.c    | 72 +++++++++++++++-------------
 xen/arch/x86/cpu/microcode/intel.c   | 12 ++---
 xen/arch/x86/cpu/microcode/private.h |  9 ++--
 xen/arch/x86/include/asm/microcode.h |  4 +-
 xen/arch/x86/platform_hypercall.c    |  6 +--
 6 files changed, 59 insertions(+), 55 deletions(-)


base-commit: a974725a87a1afc8056b41c56dfe7fe272a7169c
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:22:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825235.1239415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xn5-0004KO-T4; Thu, 24 Oct 2024 13:22:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825235.1239415; Thu, 24 Oct 2024 13:22: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 1t3xn5-0004KH-QL; Thu, 24 Oct 2024 13:22:15 +0000
Received: by outflank-mailman (input) for mailman id 825235;
 Thu, 24 Oct 2024 13: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3xn4-0004K5-9X
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:22:14 +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 fad52a42-920a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 15:22:12 +0200 (CEST)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-539eb97f26aso905363e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:22:12 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm618574766b.79.2024.10.24.06.22.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 06:22:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fad52a42-920a-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729776131; x=1730380931; 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=xI3YWCuDWA5ZJYhHfqCN+eAld5aMRSkjdw5nOvKgkSM=;
        b=CSsiSgPx6hp3rFeqxVWW3bepQruJrVa2TIhNJo+GMDh98eovRg9dFs63O/yh2Cgv+m
         DZgiBxXyZdO1E+0cLujA+jUl+1G98bFdNTsYzjPOEF1gKEtQwppCDwTCQetJEBIuDrOa
         hh8EslyCpsSC2nI1wHyb1mSSu26aiwKnIWBj0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776131; x=1730380931;
        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=xI3YWCuDWA5ZJYhHfqCN+eAld5aMRSkjdw5nOvKgkSM=;
        b=upr1ylu1NHsSyVakFoaYzfk+0Ywzs0J0ce3IIuKlfkh3BYI0pJU4kl443yZYUitBJe
         jJOcx3WOMwomju4rvoIYnTt4j0O+OEHcaHbh5Op1i6VdlkkDxxc1+VchzFF9PcIOhP0e
         npF7vKssOk6t5snM6Zu1+Y2sRuyuraR0hM5CvRmyE7FOT/MSX+lUbx1X184YfXMS92fr
         ZWu4qjqG0duFZxb6IctsEOr/XsusPWoLQVPvgRAopwUBl6KZUQ3Y9sVG/fvihnWpjhzc
         UutgmqpAMBvSgvQz2XyOt+906KTCcpBH7wawd9LRWqbLt0P4If4SCpEm3/jyfGP+WShY
         7dKg==
X-Gm-Message-State: AOJu0Yw2Lj8nAXa0XB+2s+K3pkFokZdrqGAu12h/m/pQmbZmMHN7OVHK
	QJxlN7bDmMAHz8Fd+fMWJlKN8+WS02+de4+8mNXHlG1CkeBzdppLMJALKyvUtgL1gXA4MnyCMwG
	q
X-Google-Smtp-Source: AGHT+IGMqcL+fx6Snhrn5yxbpjO1LwkkVZDl2+dmTre9UqLBmLZFLFZuDvVKXxiaFY5tSmBazckizw==
X-Received: by 2002:a05:6512:b02:b0:539:e3d8:fa33 with SMTP id 2adb3069b0e04-53b1a38d08cmr3893206e87.54.1729776131251;
        Thu, 24 Oct 2024 06:22:11 -0700 (PDT)
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>
Subject: [PATCH 1/5] x86/ucode: Rename hypercall-context functions
Date: Thu, 24 Oct 2024 14:22:01 +0100
Message-Id: <20241024132205.987042-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024132205.987042-1-andrew.cooper3@citrix.com>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

microcode_update{,_helper}() are overly generic names in a file that has
multiple update routines and helper functions contexts.

Rename microcode_update() to ucode_update_hcall() so it explicitly identifies
itself as hypercall context, and rename microcode_update_helper() to
ucode_update_hcall_cont() to make it clear it is in continuation context.

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>
---
 xen/arch/x86/cpu/microcode/core.c    | 10 +++++-----
 xen/arch/x86/include/asm/microcode.h |  4 ++--
 xen/arch/x86/platform_hypercall.c    |  6 +++---
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 1d58cb0f3bc1..21077b449c38 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -586,7 +586,7 @@ struct ucode_buf {
     char buffer[];
 };
 
-static long cf_check microcode_update_helper(void *data)
+static long cf_check ucode_update_hcall_cont(void *data)
 {
     int ret;
     struct ucode_buf *buffer = data;
@@ -722,8 +722,8 @@ static long cf_check microcode_update_helper(void *data)
     return ret;
 }
 
-int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
-                     unsigned long len, unsigned int flags)
+int ucode_update_hcall(XEN_GUEST_HANDLE(const_void) buf,
+                       unsigned long len, unsigned int flags)
 {
     int ret;
     struct ucode_buf *buffer;
@@ -748,11 +748,11 @@ int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
     buffer->flags = flags;
 
     /*
-     * Always queue microcode_update_helper() on CPU0.  Most of the logic
+     * Always queue ucode_update_hcall_cont() 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);
+    return continue_hypercall_on_cpu(0, ucode_update_hcall_cont, buffer);
 }
 
 static int __init cf_check microcode_init(void)
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index a278773f8b5d..dd20cdb9ebb6 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -22,8 +22,8 @@ struct cpu_signature {
 DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
 
 void microcode_set_module(unsigned int idx);
-int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
-                     unsigned long len, unsigned int flags);
+int ucode_update_hcall(XEN_GUEST_HANDLE(const_void) buf,
+                       unsigned long len, unsigned int flags);
 int microcode_update_one(void);
 
 struct boot_info;
diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c
index 67f851237def..90abd3197fc9 100644
--- a/xen/arch/x86/platform_hypercall.c
+++ b/xen/arch/x86/platform_hypercall.c
@@ -313,7 +313,7 @@ ret_t do_platform_op(
 
         guest_from_compat_handle(data, op->u.microcode.data);
 
-        ret = microcode_update(data, op->u.microcode.length, 0);
+        ret = ucode_update_hcall(data, op->u.microcode.length, 0);
         break;
     }
 
@@ -323,8 +323,8 @@ ret_t do_platform_op(
 
         guest_from_compat_handle(data, op->u.microcode2.data);
 
-        ret = microcode_update(data, op->u.microcode2.length,
-                               op->u.microcode2.flags);
+        ret = ucode_update_hcall(data, op->u.microcode2.length,
+                                 op->u.microcode2.flags);
         break;
     }
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:22:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825239.1239456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xnA-0005IA-2p; Thu, 24 Oct 2024 13:22:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825239.1239456; Thu, 24 Oct 2024 13:22: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 1t3xn9-0005Hz-Vs; Thu, 24 Oct 2024 13:22:19 +0000
Received: by outflank-mailman (input) for mailman id 825239;
 Thu, 24 Oct 2024 13:22: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3xn8-0004K5-8i
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:22:18 +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 fd91717d-920a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 15:22:17 +0200 (CEST)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-5c948c41edeso1032331a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:22:17 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm618574766b.79.2024.10.24.06.22.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 06:22:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd91717d-920a-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729776136; x=1730380936; 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=Df5ZhRz35AbRcfDDCuCuW3JIPnNenLDg73Ag7Qq+uQc=;
        b=OBeX4gqY7QspMNt5M42vV28J4pvcj6MR52E3TeXyZUTNShUxo4b7lMBvlJvCkb3jvT
         wOtrudYRifqjYnH7pcYb6LedYkjoud/ijKiC+cKywtzs2+4SlDJFSjUtj2TyQMkOHLuh
         s0EWG8HLWsE/ZQtBkwVsmEyvXPvyi5lJLVs2I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776136; x=1730380936;
        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=Df5ZhRz35AbRcfDDCuCuW3JIPnNenLDg73Ag7Qq+uQc=;
        b=ms56cUH04Fq9FY7W+HG6FL4xdDowi9HNiteoj2e5G064lL5caT1HB5In+9o2WjxpZW
         iSl+lCBJUK61Mcn6Ax5ffSKQngM/hlhM9oTEK4xh9yGlFe9rVH4EuSa6voFOktTaDE3F
         RtdP+nGEFlLP6/1rdHAS/yn4CG+dN4ddGL+YnmwRVGG6dR1jylxMGVHnkcJjfYf4lZlM
         M527m+OOsFYwFNCGHBVctwZrZ8tHvGjAbxnGKVhQag9tC4Z36erobfFqdDfMdg7sOVJ+
         8jdc5Eokym/4yKbeUp6RUVXLj01WN58n6oV/USONoRlY2JV44D5uENAN2jY1i5WuLBxE
         KrBQ==
X-Gm-Message-State: AOJu0YxG5ppIQ6DZBbCvCtGUQZe6Ne/c1oXef1ffVoYOeYhA1bLG4dAB
	mf9ajC0giO5pmDosXf6rZJN41KbvxTz2oJUs/bUoAXNNOyP5ccf5Lely2qx+OLRQaYZj4jN+8XG
	8
X-Google-Smtp-Source: AGHT+IHTUnP+Aq6o8B4fU0w9na2iXanTiNixUKKg99rw6/LW1fGByVVfMqw13Yi4nOF6XBc/BuDTgw==
X-Received: by 2002:a17:906:7309:b0:a99:dde6:9f42 with SMTP id a640c23a62f3a-a9abf96ce04mr630900766b.47.1729776135978;
        Thu, 24 Oct 2024 06:22:15 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH 4/5] x86/ucode: Rename the apply_microcode() hook to load()
Date: Thu, 24 Oct 2024 14:22:04 +0100
Message-Id: <20241024132205.987042-5-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024132205.987042-1-andrew.cooper3@citrix.com>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The microcode suffix is redundant, and "microcode loading" is the more common
term
---
 xen/arch/x86/cpu/microcode/amd.c     |  6 +++---
 xen/arch/x86/cpu/microcode/core.c    | 27 ++++++++++++++++-----------
 xen/arch/x86/cpu/microcode/intel.c   |  8 ++++----
 xen/arch/x86/cpu/microcode/private.h |  7 +++----
 4 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/amd.c
index 3f147c10ca67..1845f51ba330 100644
--- a/xen/arch/x86/cpu/microcode/amd.c
+++ b/xen/arch/x86/cpu/microcode/amd.c
@@ -214,8 +214,8 @@ static enum microcode_match_result cf_check compare_patch(
     return compare_header(new, old);
 }
 
-static int cf_check apply_microcode(const struct microcode_patch *patch,
-                                    unsigned int flags)
+static int cf_check amd_ucode_load(const struct microcode_patch *patch,
+                                   unsigned int flags)
 {
     int hw_err;
     unsigned int cpu = smp_processor_id();
@@ -446,7 +446,7 @@ static struct microcode_patch *cf_check amd_ucode_parse(
 static const struct microcode_ops __initconst_cf_clobber amd_ucode_ops = {
     .parse                            = amd_ucode_parse,
     .collect_cpu_info                 = collect_cpu_info,
-    .apply_microcode                  = apply_microcode,
+    .load                             = amd_ucode_load,
     .compare_patch                    = compare_patch,
 };
 
diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 29655a44ae62..f320ea87c1dc 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -229,6 +229,12 @@ static const struct microcode_patch *ucode_parse(const char *buf, size_t len)
     return alternative_call(ucode_ops.parse, buf, len, false);
 }
 
+/* Load a ucode blob.  Returns -errno. */
+static int ucode_load(const struct microcode_patch *patch, unsigned int flags)
+{
+    return alternative_call(ucode_ops.load, patch, flags);
+}
+
 static DEFINE_SPINLOCK(microcode_mutex);
 
 DEFINE_PER_CPU(struct cpu_signature, cpu_sig);
@@ -333,11 +339,10 @@ static int microcode_update_cpu(const struct microcode_patch *patch,
 
     spin_lock(&microcode_mutex);
     if ( patch )
-        err = alternative_call(ucode_ops.apply_microcode, patch, flags);
+        err = ucode_load(patch, flags);
     else if ( microcode_cache )
     {
-        err = alternative_call(ucode_ops.apply_microcode, microcode_cache,
-                               flags);
+        err = ucode_load(microcode_cache, flags);
         if ( err == -EIO )
         {
             microcode_free_patch(microcode_cache);
@@ -388,7 +393,7 @@ static int primary_thread_work(const struct microcode_patch *patch,
     if ( !wait_for_state(LOADING_ENTER) )
         return -EBUSY;
 
-    ret = alternative_call(ucode_ops.apply_microcode, patch, flags);
+    ret = ucode_load(patch, flags);
     if ( !ret )
         atomic_inc(&cpu_updated);
     atomic_inc(&cpu_out);
@@ -502,7 +507,7 @@ static int control_thread_fn(const struct microcode_patch *patch,
         goto out;
 
     /* Control thread loads ucode first while others are in NMI handler. */
-    ret = alternative_call(ucode_ops.apply_microcode, patch, flags);
+    ret = ucode_load(patch, flags);
     if ( !ret )
         atomic_inc(&cpu_updated);
     atomic_inc(&cpu_out);
@@ -731,7 +736,7 @@ int ucode_update_hcall(XEN_GUEST_HANDLE(const_void) buf,
     if ( flags & ~XENPF_UCODE_FORCE )
         return -EINVAL;
 
-    if ( !ucode_ops.apply_microcode )
+    if ( !ucode_ops.load )
         return -EINVAL;
 
     buffer = xmalloc_flex_struct(struct ucode_buf, buffer, len);
@@ -783,7 +788,7 @@ int microcode_update_one(void)
     if ( ucode_ops.collect_cpu_info )
         alternative_vcall(ucode_ops.collect_cpu_info);
 
-    if ( !ucode_ops.apply_microcode )
+    if ( !ucode_ops.load )
         return -EOPNOTSUPP;
 
     return microcode_update_cpu(NULL, 0);
@@ -821,7 +826,7 @@ int __init microcode_init_cache(struct boot_info *bi)
 {
     int rc = 0;
 
-    if ( !ucode_ops.apply_microcode )
+    if ( !ucode_ops.load )
         return -ENODEV;
 
     if ( ucode_scan )
@@ -907,11 +912,11 @@ int __init early_microcode_init(struct boot_info *bi)
      *
      * Take the hint in either case and ignore the microcode interface.
      */
-    if ( !ucode_ops.apply_microcode || this_cpu(cpu_sig).rev == ~0 )
+    if ( !ucode_ops.load || this_cpu(cpu_sig).rev == ~0 )
     {
         printk(XENLOG_INFO "Microcode loading disabled due to: %s\n",
-               ucode_ops.apply_microcode ? "rev = ~0" : "HW toggle");
-        ucode_ops.apply_microcode = NULL;
+               ucode_ops.load ? "rev = ~0" : "HW toggle");
+        ucode_ops.load = NULL;
         return -ENODEV;
     }
 
diff --git a/xen/arch/x86/cpu/microcode/intel.c b/xen/arch/x86/cpu/microcode/intel.c
index 3d3f7e57db80..5e6863fd8c9f 100644
--- a/xen/arch/x86/cpu/microcode/intel.c
+++ b/xen/arch/x86/cpu/microcode/intel.c
@@ -287,8 +287,8 @@ static enum microcode_match_result cf_check compare_patch(
     return compare_revisions(old->rev, new->rev);
 }
 
-static int cf_check apply_microcode(const struct microcode_patch *patch,
-                                    unsigned int flags)
+static int cf_check intel_ucode_load(const struct microcode_patch *patch,
+                                     unsigned int flags)
 {
     uint64_t msr_content;
     unsigned int cpu = smp_processor_id();
@@ -408,7 +408,7 @@ static bool __init can_load_microcode(void)
 static const struct microcode_ops __initconst_cf_clobber intel_ucode_ops = {
     .parse                            = intel_ucode_parse,
     .collect_cpu_info                 = collect_cpu_info,
-    .apply_microcode                  = apply_microcode,
+    .load                             = intel_ucode_load,
     .compare_patch                    = compare_patch,
 };
 
@@ -417,5 +417,5 @@ void __init ucode_probe_intel(struct microcode_ops *ops)
     *ops = intel_ucode_ops;
 
     if ( !can_load_microcode() )
-        ops->apply_microcode = NULL;
+        ops->load = NULL;
 }
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index e30acee1536b..9611efaa979c 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -50,8 +50,7 @@ struct microcode_ops {
      * Attempt to load the provided patch into the CPU.  Returns an error if
      * anything didn't go as expected.
      */
-    int (*apply_microcode)(const struct microcode_patch *patch,
-                           unsigned int flags);
+    int (*load)(const struct microcode_patch *patch, unsigned int flags);
 
     /*
      * Given two patches, are they both applicable to the current CPU, and is
@@ -68,8 +67,8 @@ struct microcode_ops {
  *   - Loading available
  *
  * These are encoded by (not) filling in ops->collect_cpu_info (i.e. no
- * support available) and (not) ops->apply_microcode (i.e. read only).
- * Otherwise, all hooks must be filled in.
+ * support available) and (not) ops->load (i.e. read only).  Otherwise, all
+ * hooks must be filled in.
  */
 #ifdef CONFIG_AMD
 void ucode_probe_amd(struct microcode_ops *ops);
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:22:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825240.1239466 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xnB-0005ZI-BC; Thu, 24 Oct 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 825240.1239466; Thu, 24 Oct 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 1t3xnB-0005Z3-7O; Thu, 24 Oct 2024 13:22:21 +0000
Received: by outflank-mailman (input) for mailman id 825240;
 Thu, 24 Oct 2024 13:22: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3xn9-0004K5-8r
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:22:19 +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 fddcedac-920a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 15:22:17 +0200 (CEST)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c9388a00cfso939419a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:22:17 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee592sm618574766b.79.2024.10.24.06.22.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 06:22:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fddcedac-920a-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729776137; x=1730380937; 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=4+Vu4sa4HxAQKCzqJBSz5wGkRTNCR1UROUB1VCBQ9dk=;
        b=vdk772wloLjmp6vG6mwCcBDim4POV6xDwwb/1VIE1F89sEAkyCxl9yqxxyV1w5htOa
         wnWae8+73GH08WoLGG1wGAqVATfsv1fP7QFt6vtAASRypAO8j/FC5KISSSLc6XQR2cBc
         fjjWrQEQB5slrqLTVe9FE820PwSokpg9CL5nQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776137; x=1730380937;
        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=4+Vu4sa4HxAQKCzqJBSz5wGkRTNCR1UROUB1VCBQ9dk=;
        b=BV3pvY2MiSRIbMfJPn0q1uDc0X5Hg11TxLU59EprsThvwzTEeCulsqP9FKoCBE/7mf
         ssO6FZ/KeyjetjvkyLMcm1X9U2wHYSYb4j94zxtYkQeFdR+wyeH89qC/HGwr4BYu7KFu
         Jag+HfCnw06mCs7fQG7rxcDAtrYPUdfU69nVUsQeRziUaApCWU+QU6uYsTbcT4bShvYb
         ECbfLioZzvLNCfnpXPkhDKT54daUz7ajLFpZ4KdT8A6YoEBgcTAEzxdNpFNnl/2s+4ty
         MFg602pNjNJBO38HxouyGHvQJn/VD4QqRHgEc6YdSNHGnevBH1YSK+UD3evdCVzdMM+Q
         /oDA==
X-Gm-Message-State: AOJu0YyzvHw3utbdlU+XNAiww4DS2qHAXfQMPgPWoe5xtTjFXYEIG7th
	QNAz8XLri4noSW2Zqitg71M7sIytFNm3hRRQG5UXxGMMd4Q5+D3VOCIYTBjNcB6HcV7EewOtHqQ
	d
X-Google-Smtp-Source: AGHT+IG5UiRpv59wek7ARqF1JmC/N1DSP8R4HlnvXFJTMftXoiNvYECFNOZrMesXeC1zgylbgJaWxg==
X-Received: by 2002:a17:907:97cd:b0:a9a:13dd:2734 with SMTP id a640c23a62f3a-a9ad27600cbmr160663366b.36.1729776136782;
        Thu, 24 Oct 2024 06:22:16 -0700 (PDT)
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>
Subject: [PATCH 5/5] x86/ucode: Drop the match_reg[] field from AMD's microcode_patch
Date: Thu, 24 Oct 2024 14:22:05 +0100
Message-Id: <20241024132205.987042-6-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024132205.987042-1-andrew.cooper3@citrix.com>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This was true in the K10 days, but even back then the match registers were
really payload data rather than header data.

But, it's really model specific data, and these days typically part of the
signature, so is random data for all intents and purposes.

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>

The single difference from this is:

  @@ -207587,7 +207587,7 @@
   ffff82d0402ad261:	4c 89 ce             	mov    %r9,%rsi
   ffff82d0402ad264:	4c 39 c8             	cmp    %r9,%rax
   ffff82d0402ad267:	0f 82 c2 11 f6 ff    	jb     ffff82d04020e42f <amd_ucode_parse.cold+0x55>
  -ffff82d0402ad26d:	41 83 f9 3f          	cmp    $0x3f,%r9d
  +ffff82d0402ad26d:	41 83 f9 1f          	cmp    $0x1f,%r9d
   ffff82d0402ad271:	0f 86 b8 11 f6 ff    	jbe    ffff82d04020e42f <amd_ucode_parse.cold+0x55>
   ffff82d0402ad277:	85 ed                	test   %ebp,%ebp
   ffff82d0402ad279:	75 55                	jne    ffff82d0402ad2d0 <amd_ucode_parse+0x170>

which is "mc->len < sizeof(struct microcode_patch)" expression in
amd_ucode_parse().
---
 xen/arch/x86/cpu/microcode/amd.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/amd.c
index 1845f51ba330..54acd6928781 100644
--- a/xen/arch/x86/cpu/microcode/amd.c
+++ b/xen/arch/x86/cpu/microcode/amd.c
@@ -48,7 +48,6 @@ struct microcode_patch {
     uint8_t  sb_rev_id;
     uint8_t  bios_api_rev;
     uint8_t  reserved1[3];
-    uint32_t match_reg[8];
 };
 
 #define UCODE_MAGIC                0x00414d44
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:26:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:26:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825274.1239475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xrN-0007nd-SR; Thu, 24 Oct 2024 13:26:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825274.1239475; Thu, 24 Oct 2024 13: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 1t3xrN-0007nW-Pq; Thu, 24 Oct 2024 13:26:41 +0000
Received: by outflank-mailman (input) for mailman id 825274;
 Thu, 24 Oct 2024 13:26: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3xrM-0007Zn-M7
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:26:40 +0000
Received: from mail-oo1-xc29.google.com (mail-oo1-xc29.google.com
 [2607:f8b0:4864:20::c29])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9973f986-920b-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 15:26:39 +0200 (CEST)
Received: by mail-oo1-xc29.google.com with SMTP id
 006d021491bc7-5eba450531eso979613eaf.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:26:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9973f986-920b-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729776398; x=1730381198; 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=zDK1Kthmkq11fZLtTYuTWFAp0QcFOp3jEPfJ6MKxJw4=;
        b=pUz8TS1ZIJSp3DsNcUTXqy7GOhTnCJ6uGk9JvQH5dHpQa6hlR2ed5n5157UdFH9wRt
         X4LEix3kjMSzmkpUj+sEEQsYZqLqigrqTxoW/tk9s+vjAbFeMJ8BGBHOuG6W4jZTOcre
         kh8RT6tkKjMUhfyGDRRn/PLIYwGHVgTbHh+yVPzuwFomcC8JGpPtGVH/fD7jByYSL3HK
         s7tsVO1MRpbiZSCZE/T3ylaNC19w6pgJ1uq+f7LPbLAP1nll8Ysxg6kHBa3uvkDmdkNV
         WAFcCtIbVtXnAr+7jIQ82DAkIU0zficM2M3kQChQ2O5pbXGKYSjavI1GZNMqhQ78cLwY
         MX/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776398; x=1730381198;
        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=zDK1Kthmkq11fZLtTYuTWFAp0QcFOp3jEPfJ6MKxJw4=;
        b=NSyE+E62zrEYRvVtq+Vm1tCObf+LN2JLVWcN0beTLHO4ucKn5B/44EGt1H21qnCZUb
         pZ8b+WjCWd8ASD8u5w8uKBeLkVgDEL8aMovDeVz4Sird7CEU37NVnz44vy6r+DS3+Vvt
         UZKGZu/j5fX81EY3EpXj90R7Phv6LW+WuzQuHLZSDbLwpPrSF8Muuh4SIKTT+jfrJhFD
         s3y6gZ6SgHZFGSvAZLNvD4zc5FJUCSWJUHY+7Tsaqv8g4QJe6S0UNqtEIc5XdGWS9Dch
         bUwS4j329WWioCj+6ejWpALi/bD0Z+V5MJQkLj0SeapHrJxFmLfEknlGU7uOY76UI37k
         wYNA==
X-Gm-Message-State: AOJu0YzZKQ0XX1O5KlYV9s0w255K+ttCHLggrB6+JmDUS+h3mfqakaZE
	OTem23yzEM4IE8HtW/EAck/k9ieWYr8hh9B6Z4BISsEPgSq+Tt3C91SyS+PANwwh3OpgTHEb5Sk
	Gr0nYCoSOpog4Rq8DTn7dZ3qumYwS63xiSS5WzphcmSPYW6RPtqI=
X-Google-Smtp-Source: AGHT+IH8xeg5Af5e53X3ZhkOZzJKpDa9Yj1w79p8sOzPxHV22/WeZ/vMMI7UsaNvYsOkrcwfuFxlDuZ1LdHkvACKfo0=
X-Received: by 2002:a05:6870:2194:b0:286:ee46:f194 with SMTP id
 586e51a60fabf-28cebb3b41fmr981646fac.17.1729776398120; Thu, 24 Oct 2024
 06:26:38 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <84a39fbb681c1fdc2708d385e79bef1bbc9c6ae0.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44F1ZDuVQkHTEmHC-x+u4kuLqphcjaK5c7wDnnenWuQi1Q@mail.gmail.com>
 <CAHUa44EtL_hLqCD15jcvMEUxxt-289yXDaMDEs=h7EXUQxj8og@mail.gmail.com> <E9F7F794-8E9B-4997-9461-19B3145D7A09@arm.com>
In-Reply-To: <E9F7F794-8E9B-4997-9461-19B3145D7A09@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 15:26:25 +0200
Message-ID: <CAHUa44Hkc4fWH4-HVFEyia_dcrpP1sQTaH4KxOv0v+1DjF4Dmw@mail.gmail.com>
Subject: Re: [PATCH v2 04/10] xen/arm: ffa: Fine granular call support
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Thu, Oct 24, 2024 at 12:01=E2=80=AFPM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jens,
>
> > On 24 Oct 2024, at 10:15, Jens Wiklander <jens.wiklander@linaro.org> wr=
ote:
> >
> > On Wed, Oct 23, 2024 at 11:58=E2=80=AFAM Jens Wiklander
> > <jens.wiklander@linaro.org> wrote:
> >>
> >> Hi Bertrand,
> >>
> >> On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
> >> <bertrand.marquis@arm.com> wrote:
> >>>
> >>> Create a bitmap to store which feature is supported or not by the
> >>> firmware and use it to filter which calls are done to the firmware.
> >>>
> >>> While there reoder ABI definition by numbers to easily find the min a=
nd
> >>> max ones.
> >>>
> >>> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >>> ---
> >>> Changes in v2:
> >>> - rename fw_feat to abi and macros to FFA_ABI to be coherent with the
> >>>  abi needed change done before
> >>> - rework the macros to be simpler by directly defining MIN and MAX us=
ing
> >>>  only Function ids
> >>> - check that requested function ids do not go over the bitmap size in
> >>>  ffa_fw_supports_fid
> >>> - add an ASSERT to make sure that we do not try to set bits outside o=
f
> >>>  the bitmap
> >>> - turn off FF-A if there is not firmware support and adapt the commit
> >>>  message to reflect this
> >>> - add a compile time check that FFA_ABI_MIN < FFA_ABI_MAX
> >>> - remove spurious line removal
> >>> - restore proper cleanup of rxtx init in case of error
> >>> - reorder ABI by numbers
> >>> ---
> >>> xen/arch/arm/tee/ffa.c          | 28 +++++++++++++++---------
> >>> xen/arch/arm/tee/ffa_notif.c    |  7 ++++++
> >>> xen/arch/arm/tee/ffa_partinfo.c | 30 +++++++++++++++++++++++++-
> >>> xen/arch/arm/tee/ffa_private.h  | 38 ++++++++++++++++++++++++++++----=
-
> >>> xen/arch/arm/tee/ffa_rxtx.c     |  4 ++++
> >>> xen/arch/arm/tee/ffa_shm.c      | 12 +++++++++++
> >>> 6 files changed, 103 insertions(+), 16 deletions(-)
> >>
> >> Looks good.
> >> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
> >
> > I'm sorry, I'm having second thoughts about this patch. I have two conc=
erns:
> > 1. Xen will complain at boot with XENLOG_INFO if an ABI function
> > listed in ffa_fw_abi_needed is missing. With the current list of ABI
> > functions that's somewhat OK since it was a cause of disabling FF-A
> > support before. But as the list grows it may become annoying or even
> > confusing since when Xen supports more features it may complain more
> > even if there is no regression compared to previous versions. If we
> > need to print anything perhaps XENLOG_DEBUG is better.
>
> This is only printed at boot and in the worst case it would list all need=
ed ABI.
> If the list printed becomes big, it probably means that almost nothing is
> possible to do which might be interesting for the user.
> Only seeing this information with debug prints might lead into normal use=
rs
> not understanding why communication with secure world are not working
> without having a reason.
> I would expect that the most common case will be for the list of printed
> entries to be limited (right now it only prints something for 64bit shari=
ng which
> should be solved in Hafnium).
> As Xen is already quite verbose in INFO mode during boot and this is not
> a runtime print, I think it is ok.

With added support for FFA_MSG_SEND2 xen will start to complain that
OP-TEE doesn't support that function, even if it's not needed. It
should be harmless as long as it's not interpreted as an error.

>
> > 2. FFA_FEATURES may return success for features not supported by the
> > SPMC. How about only returning success for features in the
> > ffa_fw_abi_needed bitmap?
>
> This would be a reinterpretation of the specification and could create
> issues in some cases (some ABIs might be supported by Xen but not
> by the SPMC and still work correctly this way) and even more when
> we will have VM to VM.
> The specification is saying that we should return what we support and
> not what is supported by the SPMC. Filtering based on what is supported
> by the SPMC and what will still work if not supported by the SPMC and
> what we do not support even if it is supported by the SPMC might become
> quickly very complex.
>
> What do you think we would gain from doing what you suggest instead of
> what we have right now ?

Yes, you're right I mistook FFA_FEATURE to cover the Framework, but
it's only the interface. So returning success for all functions xen
might be able to support is within specification.

Cheers,
Jens

>
> Cheers
> Bertrand
>
> >
> > Cheers,
> > Jens
> >
> >>
> >> Cheers,
> >> Jens
> >>
> >>>
> >>> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> >>> index 1ee6b2895e92..267d4435ac08 100644
> >>> --- a/xen/arch/arm/tee/ffa.c
> >>> +++ b/xen/arch/arm/tee/ffa.c
> >>> @@ -72,7 +72,10 @@
> >>> #include "ffa_private.h"
> >>>
> >>> /* Negotiated FF-A version to use with the SPMC, 0 if not there or su=
pported */
> >>> -static uint32_t __ro_after_init ffa_fw_version;
> >>> +uint32_t __ro_after_init ffa_fw_version;
> >>> +
> >>> +/* Features supported by the SPMC or secure world when present */
> >>> +DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
> >>>
> >>> struct ffa_fw_abi {
> >>>     const uint32_t id;
> >>> @@ -177,6 +180,13 @@ static void handle_msg_send_direct_req(struct cp=
u_user_regs *regs, uint32_t fid)
> >>>     else
> >>>         mask =3D GENMASK_ULL(31, 0);
> >>>
> >>> +    if ( !ffa_fw_supports_fid(fid) )
> >>> +    {
> >>> +        resp.a0 =3D FFA_ERROR;
> >>> +        resp.a2 =3D FFA_RET_NOT_SUPPORTED;
> >>> +        goto out;
> >>> +    }
> >>> +
> >>>     src_dst =3D get_user_reg(regs, 1);
> >>>     if ( (src_dst >> 16) !=3D ffa_get_vm_id(d) )
> >>>     {
> >>> @@ -577,19 +587,16 @@ static bool ffa_probe(void)
> >>>     else
> >>>         ffa_fw_version =3D vers;
> >>>
> >>> -    /*
> >>> -     * At the moment domains must support the same features used by =
Xen.
> >>> -     * TODO: Rework the code to allow domain to use a subset of the
> >>> -     * features supported.
> >>> -     */
> >>>     for ( unsigned int i =3D 0; i < ARRAY_SIZE(ffa_fw_abi_needed); i+=
+ )
> >>>     {
> >>> -        if ( !ffa_abi_supported(ffa_fw_abi_needed[i].id) )
> >>> -        {
> >>> +        ASSERT(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id) < FFA_ABI_BIT=
MAP_SIZE);
> >>> +
> >>> +        if ( ffa_abi_supported(ffa_fw_abi_needed[i].id) )
> >>> +            set_bit(FFA_ABI_BITNUM(ffa_fw_abi_needed[i].id),
> >>> +                    ffa_fw_abi_supported);
> >>> +        else
> >>>             printk(XENLOG_INFO "ARM FF-A Firmware does not support %s=
\n",
> >>>                    ffa_fw_abi_needed[i].name);
> >>> -            goto err_no_fw;
> >>> -        }
> >>>     }
> >>>
> >>>     if ( !ffa_rxtx_init() )
> >>> @@ -611,6 +618,7 @@ err_rxtx_destroy:
> >>>     ffa_rxtx_destroy();
> >>> err_no_fw:
> >>>     ffa_fw_version =3D 0;
> >>> +    bitmap_zero(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
> >>>     printk(XENLOG_WARNING "ARM FF-A No firmware support\n");
> >>>
> >>>     return false;
> >>> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_noti=
f.c
> >>> index 541e61d2f606..4b3e46318f4b 100644
> >>> --- a/xen/arch/arm/tee/ffa_notif.c
> >>> +++ b/xen/arch/arm/tee/ffa_notif.c
> >>> @@ -377,6 +377,13 @@ void ffa_notif_init(void)
> >>>     unsigned int irq;
> >>>     int ret;
> >>>
> >>> +    /* Only enable fw notification if all ABIs we need are supported=
 */
> >>> +    if ( !(ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_CREATE) &&
> >>> +           ffa_fw_supports_fid(FFA_NOTIFICATION_BITMAP_DESTROY) &&
> >>> +           ffa_fw_supports_fid(FFA_NOTIFICATION_GET) &&
> >>> +           ffa_fw_supports_fid(FFA_NOTIFICATION_INFO_GET_64)) )
> >>> +        return;
> >>> +
> >>>     arm_smccc_1_2_smc(&arg, &resp);
> >>>     if ( resp.a0 !=3D FFA_SUCCESS_32 )
> >>>         return;
> >>> diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_p=
artinfo.c
> >>> index 93a03c6bc672..99c48f0e5c05 100644
> >>> --- a/xen/arch/arm/tee/ffa_partinfo.c
> >>> +++ b/xen/arch/arm/tee/ffa_partinfo.c
> >>> @@ -77,7 +77,15 @@ int32_t ffa_handle_partition_info_get(uint32_t w1,=
 uint32_t w2, uint32_t w3,
> >>>      */
> >>>     if ( w5 =3D=3D FFA_PARTITION_INFO_GET_COUNT_FLAG &&
> >>>          ctx->guest_vers =3D=3D FFA_VERSION_1_1 )
> >>> -        return ffa_partition_info_get(w1, w2, w3, w4, w5, count, fpi=
_size);
> >>> +    {
> >>> +        if ( ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
> >>> +            return ffa_partition_info_get(w1, w2, w3, w4, w5, count,=
 fpi_size);
> >>> +        else
> >>> +        {
> >>> +            *count =3D 0;
> >>> +            return FFA_RET_OK;
> >>> +        }
> >>> +    }
> >>>     if ( w5 )
> >>>         return FFA_RET_INVALID_PARAMETERS;
> >>>
> >>> @@ -87,6 +95,18 @@ int32_t ffa_handle_partition_info_get(uint32_t w1,=
 uint32_t w2, uint32_t w3,
> >>>     if ( !spin_trylock(&ctx->rx_lock) )
> >>>         return FFA_RET_BUSY;
> >>>
> >>> +    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) )
> >>> +    {
> >>> +        if ( ctx->guest_vers =3D=3D FFA_VERSION_1_0 )
> >>> +            *fpi_size =3D sizeof(struct ffa_partition_info_1_0);
> >>> +        else
> >>> +            *fpi_size =3D sizeof(struct ffa_partition_info_1_1);
> >>> +
> >>> +        *count =3D 0;
> >>> +        ret =3D FFA_RET_OK;
> >>> +        goto out;
> >>> +    }
> >>> +
> >>>     if ( !ctx->page_count || !ctx->rx_is_free )
> >>>         goto out;
> >>>     spin_lock(&ffa_rx_buffer_lock);
> >>> @@ -250,6 +270,11 @@ bool ffa_partinfo_init(void)
> >>>     uint32_t count;
> >>>     int e;
> >>>
> >>> +    if ( !ffa_fw_supports_fid(FFA_PARTITION_INFO_GET) ||
> >>> +         !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) ||
> >>> +         !ffa_rx || !ffa_tx )
> >>> +        return false;
> >>> +
> >>>     e =3D ffa_partition_info_get(0, 0, 0, 0, 0, &count, &fpi_size);
> >>>     if ( e )
> >>>     {
> >>> @@ -313,6 +338,9 @@ int ffa_partinfo_domain_init(struct domain *d)
> >>>     unsigned int n;
> >>>     int32_t res;
> >>>
> >>> +    if ( !ffa_fw_supports_fid(FFA_MSG_SEND_DIRECT_REQ_32) )
> >>> +        return 0;
> >>> +
> >>>     ctx->vm_destroy_bitmap =3D xzalloc_array(unsigned long, count);
> >>>     if ( !ctx->vm_destroy_bitmap )
> >>>         return -ENOMEM;
> >>> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_pr=
ivate.h
> >>> index 045d9c4a0b56..85eb61c13464 100644
> >>> --- a/xen/arch/arm/tee/ffa_private.h
> >>> +++ b/xen/arch/arm/tee/ffa_private.h
> >>> @@ -14,6 +14,7 @@
> >>> #include <xen/spinlock.h>
> >>> #include <xen/sched.h>
> >>> #include <xen/time.h>
> >>> +#include <xen/bitmap.h>
> >>>
> >>> /* Error codes */
> >>> #define FFA_RET_OK                      0
> >>> @@ -201,18 +202,17 @@
> >>> #define FFA_INTERRUPT                   0x84000062U
> >>> #define FFA_VERSION                     0x84000063U
> >>> #define FFA_FEATURES                    0x84000064U
> >>> -#define FFA_RX_ACQUIRE                  0x84000084U
> >>> #define FFA_RX_RELEASE                  0x84000065U
> >>> #define FFA_RXTX_MAP_32                 0x84000066U
> >>> #define FFA_RXTX_MAP_64                 0xC4000066U
> >>> #define FFA_RXTX_UNMAP                  0x84000067U
> >>> #define FFA_PARTITION_INFO_GET          0x84000068U
> >>> #define FFA_ID_GET                      0x84000069U
> >>> -#define FFA_SPM_ID_GET                  0x84000085U
> >>> +#define FFA_MSG_POLL                    0x8400006AU
> >>> #define FFA_MSG_WAIT                    0x8400006BU
> >>> #define FFA_MSG_YIELD                   0x8400006CU
> >>> #define FFA_RUN                         0x8400006DU
> >>> -#define FFA_MSG_SEND2                   0x84000086U
> >>> +#define FFA_MSG_SEND                    0x8400006EU
> >>> #define FFA_MSG_SEND_DIRECT_REQ_32      0x8400006FU
> >>> #define FFA_MSG_SEND_DIRECT_REQ_64      0xC400006FU
> >>> #define FFA_MSG_SEND_DIRECT_RESP_32     0x84000070U
> >>> @@ -230,8 +230,6 @@
> >>> #define FFA_MEM_RECLAIM                 0x84000077U
> >>> #define FFA_MEM_FRAG_RX                 0x8400007AU
> >>> #define FFA_MEM_FRAG_TX                 0x8400007BU
> >>> -#define FFA_MSG_SEND                    0x8400006EU
> >>> -#define FFA_MSG_POLL                    0x8400006AU
> >>> #define FFA_NOTIFICATION_BITMAP_CREATE  0x8400007DU
> >>> #define FFA_NOTIFICATION_BITMAP_DESTROY 0x8400007EU
> >>> #define FFA_NOTIFICATION_BIND           0x8400007FU
> >>> @@ -240,6 +238,25 @@
> >>> #define FFA_NOTIFICATION_GET            0x84000082U
> >>> #define FFA_NOTIFICATION_INFO_GET_32    0x84000083U
> >>> #define FFA_NOTIFICATION_INFO_GET_64    0xC4000083U
> >>> +#define FFA_RX_ACQUIRE                  0x84000084U
> >>> +#define FFA_SPM_ID_GET                  0x84000085U
> >>> +#define FFA_MSG_SEND2                   0x84000086U
> >>> +
> >>> +/**
> >>> + * Encoding of features supported or not by the fw in a bitmap:
> >>> + * - Function IDs are going from 0x60 to 0xFF
> >>> + * - A function can be supported in 32 and/or 64bit
> >>> + * The bitmap has one bit for each function in 32 and 64 bit.
> >>> + */
> >>> +#define FFA_ABI_ID(id)        ((id) & ARM_SMCCC_FUNC_MASK)
> >>> +#define FFA_ABI_CONV(id)      (((id) >> ARM_SMCCC_CONV_SHIFT) & BIT(=
0,U))
> >>> +
> >>> +#define FFA_ABI_MIN           FFA_ABI_ID(FFA_ERROR)
> >>> +#define FFA_ABI_MAX           FFA_ABI_ID(FFA_MSG_SEND2)
> >>> +
> >>> +#define FFA_ABI_BITMAP_SIZE   (2 * (FFA_ABI_MAX - FFA_ABI_MIN + 1))
> >>> +#define FFA_ABI_BITNUM(id)    ((FFA_ABI_ID(id) - FFA_ABI_MIN) << 1 |=
 \
> >>> +                               FFA_ABI_CONV(id))
> >>>
> >>> struct ffa_ctx_notif {
> >>>     bool enabled;
> >>> @@ -289,6 +306,8 @@ extern void *ffa_rx;
> >>> extern void *ffa_tx;
> >>> extern spinlock_t ffa_rx_buffer_lock;
> >>> extern spinlock_t ffa_tx_buffer_lock;
> >>> +extern uint32_t __ro_after_init ffa_fw_version;
> >>> +extern DECLARE_BITMAP(ffa_fw_abi_supported, FFA_ABI_BITMAP_SIZE);
> >>>
> >>> bool ffa_shm_domain_destroy(struct domain *d);
> >>> void ffa_handle_mem_share(struct cpu_user_regs *regs);
> >>> @@ -401,4 +420,13 @@ static inline int32_t ffa_rx_release(void)
> >>>     return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
> >>> }
> >>>
> >>> +static inline bool ffa_fw_supports_fid(uint32_t fid)
> >>> +{
> >>> +    BUILD_BUG_ON(FFA_ABI_MIN > FFA_ABI_MAX);
> >>> +
> >>> +    if ( FFA_ABI_BITNUM(fid) > FFA_ABI_BITMAP_SIZE)
> >>> +        return false;
> >>> +    return test_bit(FFA_ABI_BITNUM(fid), ffa_fw_abi_supported);
> >>> +}
> >>> +
> >>> #endif /*__FFA_PRIVATE_H__*/
> >>> diff --git a/xen/arch/arm/tee/ffa_rxtx.c b/xen/arch/arm/tee/ffa_rxtx.=
c
> >>> index 661764052e67..b6931c855779 100644
> >>> --- a/xen/arch/arm/tee/ffa_rxtx.c
> >>> +++ b/xen/arch/arm/tee/ffa_rxtx.c
> >>> @@ -193,6 +193,10 @@ bool ffa_rxtx_init(void)
> >>> {
> >>>     int e;
> >>>
> >>> +    /* Firmware not there or not supporting */
> >>> +    if ( !ffa_fw_supports_fid(FFA_RXTX_MAP_64) )
> >>> +        return false;
> >>> +
> >>>     ffa_rx =3D alloc_xenheap_pages(get_order_from_pages(FFA_RXTX_PAGE=
_COUNT), 0);
> >>>     if ( !ffa_rx )
> >>>         return false;
> >>> diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
> >>> index 370d83ec5cf8..efa5b67db8e1 100644
> >>> --- a/xen/arch/arm/tee/ffa_shm.c
> >>> +++ b/xen/arch/arm/tee/ffa_shm.c
> >>> @@ -149,6 +149,9 @@ static int32_t ffa_mem_share(uint32_t tot_len, ui=
nt32_t frag_len,
> >>> static int32_t ffa_mem_reclaim(uint32_t handle_lo, uint32_t handle_hi=
,
> >>>                                uint32_t flags)
> >>> {
> >>> +    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
> >>> +        return FFA_RET_NOT_SUPPORTED;
> >>> +
> >>>     return ffa_simple_call(FFA_MEM_RECLAIM, handle_lo, handle_hi, fla=
gs, 0);
> >>> }
> >>>
> >>> @@ -467,6 +470,12 @@ void ffa_handle_mem_share(struct cpu_user_regs *=
regs)
> >>>     uint32_t range_count;
> >>>     uint32_t region_offs;
> >>>
> >>> +    if ( !ffa_fw_supports_fid(FFA_MEM_SHARE_64) )
> >>> +    {
> >>> +        ret =3D FFA_RET_NOT_SUPPORTED;
> >>> +        goto out_set_ret;
> >>> +    }
> >>> +
> >>>     /*
> >>>      * We're only accepting memory transaction descriptors via the rx=
/tx
> >>>      * buffer.
> >>> @@ -621,6 +630,9 @@ int ffa_handle_mem_reclaim(uint64_t handle, uint3=
2_t flags)
> >>>     register_t handle_lo;
> >>>     int ret;
> >>>
> >>> +    if ( !ffa_fw_supports_fid(FFA_MEM_RECLAIM) )
> >>> +        return FFA_RET_NOT_SUPPORTED;
> >>> +
> >>>     spin_lock(&ctx->lock);
> >>>     shm =3D find_shm_mem(ctx, handle);
> >>>     if ( shm )
> >>> --
> >>> 2.47.0
>
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:33:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:33:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825290.1239486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xyJ-0001CJ-Lp; Thu, 24 Oct 2024 13:33:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825290.1239486; Thu, 24 Oct 2024 13:33: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 1t3xyJ-0001CC-JG; Thu, 24 Oct 2024 13:33:51 +0000
Received: by outflank-mailman (input) for mailman id 825290;
 Thu, 24 Oct 2024 13:33: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3xyH-0001C6-TJ
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:33:50 +0000
Received: from mail-oa1-x2a.google.com (mail-oa1-x2a.google.com
 [2001:4860:4864:20::2a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9824e9b7-920c-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 15:33:47 +0200 (CEST)
Received: by mail-oa1-x2a.google.com with SMTP id
 586e51a60fabf-288642376bcso535220fac.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:33:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9824e9b7-920c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729776825; x=1730381625; 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=Rf2tjYYfu3xXp401bkdojDqHVKOHtRtGUAa4VDrVDUI=;
        b=eZMxEzgLx4Ud0cIKSa8rXA767+gNLlDlQX8BKV/t3TUR/4fbXIM2ojLoIDKfOkaVKO
         GasFK3EJdIJeWp7LfteQSz45svFBY1/5xDxwxB0T4Ii3QjoWwNzpQbQxJbzefE9r2KSa
         nGgCIdRkswwUUYv4PLlsOk0LmEqJAVTj1bxNwL1zXlkA/lB5RFKGVAR3Yqnlb0g677yN
         t2V5CuGAZunD4dmIMSVYuJnmK2M47+dir7MJ2o26Ag0rZ0B3Bei+IK7OlLRfl28gX3x4
         MxCJjD6Eu+EPULabC7rn8UKzcpMax6u5lOCt0UE70bBgj2W+df6Z+ISoS2wshOhlHQYF
         Bdow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776825; x=1730381625;
        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=Rf2tjYYfu3xXp401bkdojDqHVKOHtRtGUAa4VDrVDUI=;
        b=rp0gdiGXnqFY56c2atjNHj8hN6LOa2n6XT5xE2+bxWAYOW0AKo+ywkze9T4QO2Hhal
         giJ47A8Zdne3K8EdfWwN7S+PtCfwP08kxIjBObijRLPQ2bUTXoBwsr87qrthQVeDocDF
         IOVQ9pG09Pl7swNGV9CMrIv7RUbtH2LwAVqEeY69Tjm3WvtE7D1gidEX15QgiOlkuAVB
         wUpVJhqPLYsbn2MJN425dGygbI05JZdkWUkt20zsT629JOBuZ1NS6NObdKA6y+a4Q+BE
         VyEODZuKGngREL5hklbBtswQbeL52h/DMUwByMfJDcbjY1/W/JmY+9Lb1zCpPDZ0ygdz
         XknQ==
X-Gm-Message-State: AOJu0Yxhbb5kkzXL2IlV53xFWF93/KZheu9c5eXZ8tAMhGYh9e+IT3i6
	N7nwBSVhErT5/DOveJs/vKEhZAtvkhsSty5GFyGHcjW821CINXXBRHJMWsMtQQ62r0ifWCNTNqb
	SaQyuYdoyFTdqvy0K0D85hx8J28UyAQsKUSSRQQ==
X-Google-Smtp-Source: AGHT+IFaIhY8HOteS9yCNprlOB+pSJcx/hDiSbyxoG7L6yprxhGK6Hr4pjO6iE6eZIaSwLnff5qdKy2LepxZ370VTy8=
X-Received: by 2002:a05:6870:2045:b0:261:f8e:a37a with SMTP id
 586e51a60fabf-28ccb7f3a34mr6463366fac.14.1729776825478; Thu, 24 Oct 2024
 06:33:45 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <f6037d0d077d793864ec10875dccf9e82a19e100.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44F5yXW5yb_+RgBrof7c3yRoMp3Jh2n3OkAVV2mND7c6QA@mail.gmail.com> <CDDAEF0D-92C4-45A4-95C1-E775A26DB03A@arm.com>
In-Reply-To: <CDDAEF0D-92C4-45A4-95C1-E775A26DB03A@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 15:33:34 +0200
Message-ID: <CAHUa44Fa_ajsvPwPrzH9G1DTkpA-G5zD0RzJJ5-ZnD7oqHJ76Q@mail.gmail.com>
Subject: Re: [PATCH v2 07/10] xen/arm: ffa: Transmit RXTX buffers to the SPMC
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Thu, Oct 24, 2024 at 11:46=E2=80=AFAM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jens,
>
> > On 23 Oct 2024, at 16:51, Jens Wiklander <jens.wiklander@linaro.org> wr=
ote:
> >
> > Hi Bertrand,
> >
> > On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
> > <bertrand.marquis@arm.com> wrote:
> >>
> >> When an RXTX buffer is mapped by a VM transmit it to the SPMC when it
> >> supports RX_ACQUIRE.
> >> As a consequence of that, we must acquire the RX buffer of a VM from t=
he
> >> SPMC when we want to use it:
> >> - create a generic acquire and release function to get the rx buffer o=
f
> >>  a VM which gets it from the SPMC when supported
> >> - rename the rx_acquire to hyp_rx_acquire to remove confusion
> >> - rework the rx_lock to only lock access to rx_is_free and only allow
> >>  usage of the rx buffer to one who managed to acquire it, thus removin=
g
> >>  the trylock and returning busy if rx_is_free is false
> >>
> >> As part of this change move some structure definition to ffa_private
> >> from ffa_shm as those are need for the MAP call with the SPMC.
> >>
> >> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >> ---
> >> Changes in v2:
> >> - unmap VM rxtx buffer in SPMC on unmap call or on VM destroy
> >> - rework the unmap call to the SPMC to properly pass the VM ID
> >> ---
> >> xen/arch/arm/tee/ffa.c          |   2 +-
> >> xen/arch/arm/tee/ffa_partinfo.c |  29 ++----
> >> xen/arch/arm/tee/ffa_private.h  |  22 ++++-
> >> xen/arch/arm/tee/ffa_rxtx.c     | 158 ++++++++++++++++++++++++++------
> >> xen/arch/arm/tee/ffa_shm.c      |  15 ---
> >> 5 files changed, 161 insertions(+), 65 deletions(-)
> >>
> >> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> >> index a292003ca9fe..40ea5398fa21 100644
> >> --- a/xen/arch/arm/tee/ffa.c
> >> +++ b/xen/arch/arm/tee/ffa.c
> >> @@ -347,7 +347,7 @@ static bool ffa_handle_call(struct cpu_user_regs *=
regs)
> >>         ffa_handle_partition_info_get(regs);
> >>         return true;
> >>     case FFA_RX_RELEASE:
> >> -        e =3D ffa_handle_rx_release();
> >> +        e =3D ffa_rx_release(d);
> >>         break;
> >>     case FFA_MSG_SEND_DIRECT_REQ_32:
> >>     case FFA_MSG_SEND_DIRECT_REQ_64:
> >> diff --git a/xen/arch/arm/tee/ffa_partinfo.c b/xen/arch/arm/tee/ffa_pa=
rtinfo.c
> >> index 3cf801523296..fde187dba4e5 100644
> >> --- a/xen/arch/arm/tee/ffa_partinfo.c
> >> +++ b/xen/arch/arm/tee/ffa_partinfo.c
> >> @@ -121,11 +121,9 @@ void ffa_handle_partition_info_get(struct cpu_use=
r_regs *regs)
> >>         goto out;
> >>     }
> >>
> >> -    if ( !spin_trylock(&ctx->rx_lock) )
> >> -    {
> >> -        ret =3D FFA_RET_BUSY;
> >> +    ret =3D ffa_rx_acquire(d);
> >> +    if ( ret !=3D FFA_RET_OK )
> >>         goto out;
> >> -    }
> >>
> >>     dst_buf =3D ctx->rx;
> >>
> >> @@ -135,22 +133,16 @@ void ffa_handle_partition_info_get(struct cpu_us=
er_regs *regs)
> >>         goto out_rx_release;
> >>     }
> >>
> >> -    if ( !ctx->page_count || !ctx->rx_is_free )
> >> -    {
> >> -        ret =3D FFA_RET_DENIED;
> >> -        goto out_rx_release;
> >> -    }
> >> -
> >>     spin_lock(&ffa_rx_buffer_lock);
> >>
> >>     ret =3D ffa_partition_info_get(uuid, 0, &ffa_sp_count, &src_size);
> >>
> >>     if ( ret )
> >> -        goto out_rx_buf_unlock;
> >> +        goto out_rx_hyp_unlock;
> >>
> >>     /*
> >>      * ffa_partition_info_get() succeeded so we now own the RX buffer =
we
> >> -     * share with the SPMC. We must give it back using ffa_rx_release=
()
> >> +     * share with the SPMC. We must give it back using ffa_hyp_rx_rel=
ease()
> >>      * once we've copied the content.
> >>      */
> >>
> >> @@ -193,15 +185,13 @@ void ffa_handle_partition_info_get(struct cpu_us=
er_regs *regs)
> >>         }
> >>     }
> >>
> >> -    ctx->rx_is_free =3D false;
> >> -
> >> out_rx_hyp_release:
> >> -    ffa_rx_release();
> >> -out_rx_buf_unlock:
> >> +    ffa_hyp_rx_release();
> >> +out_rx_hyp_unlock:
> >>     spin_unlock(&ffa_rx_buffer_lock);
> >> out_rx_release:
> >> -    spin_unlock(&ctx->rx_lock);
> >> -
> >> +    if ( ret !=3D FFA_RET_OK )
> >> +        ffa_rx_release(d);
> >
> > Please comment on why ffa_rx_release() must only be called on failure.
>
> It is because the buffer contains data for the caller in case of success =
so
> it must be released by the caller.

Please mention the transfer of buffer ownership since that might be
easy to miss if only skimming the spec.

>
> Do i get it right that you want me to add a comment saying that in the co=
de
> and not only tell you here ?

Yes. :-)

Cheers,
Jens

>
> >
> >> out:
> >>     if ( ret )
> >>         ffa_set_regs_error(regs, ret);
> >> @@ -368,8 +358,7 @@ bool ffa_partinfo_init(void)
> >>     ret =3D init_subscribers(count, fpi_size);
> >>
> >> out:
> >> -    ffa_rx_release();
> >> -
> >> +    ffa_hyp_rx_release();
> >>     return ret;
> >> }
> >>
> >> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_pri=
vate.h
> >> index afe69b43dbef..9adfe687c3c9 100644
> >> --- a/xen/arch/arm/tee/ffa_private.h
> >> +++ b/xen/arch/arm/tee/ffa_private.h
> >> @@ -265,6 +265,21 @@
> >> #define FFA_ABI_BITNUM(id)    ((FFA_ABI_ID(id) - FFA_ABI_MIN) << 1 | \
> >>                                FFA_ABI_CONV(id))
> >>
> >> +/* Constituent memory region descriptor */
> >> +struct ffa_address_range {
> >> +    uint64_t address;
> >> +    uint32_t page_count;
> >> +    uint32_t reserved;
> >> +};
> >> +
> >> +/* Composite memory region descriptor */
> >> +struct ffa_mem_region {
> >> +    uint32_t total_page_count;
> >> +    uint32_t address_range_count;
> >> +    uint64_t reserved;
> >> +    struct ffa_address_range address_range_array[];
> >> +};
> >> +
> >> struct ffa_ctx_notif {
> >>     bool enabled;
> >>
> >> @@ -292,7 +307,7 @@ struct ffa_ctx {
> >>     struct ffa_ctx_notif notif;
> >>     /*
> >>      * tx_lock is used to serialize access to tx
> >> -     * rx_lock is used to serialize access to rx
> >> +     * rx_lock is used to serialize access to rx_is_free
> >>      * lock is used for the rest in this struct
> >>      */
> >>     spinlock_t tx_lock;
> >> @@ -331,7 +346,8 @@ void ffa_rxtx_domain_destroy(struct domain *d);
> >> uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
> >>                             register_t rx_addr, uint32_t page_count);
> >> uint32_t ffa_handle_rxtx_unmap(void);
> >> -int32_t ffa_handle_rx_release(void);
> >> +int32_t ffa_rx_acquire(struct domain *d);
> >> +int32_t ffa_rx_release(struct domain *d);
> >>
> >> void ffa_notif_init(void);
> >> void ffa_notif_init_interrupt(void);
> >> @@ -420,7 +436,7 @@ static inline int32_t ffa_simple_call(uint32_t fid=
, register_t a1,
> >>     return ffa_get_ret_code(&resp);
> >> }
> >>
> >> -static inline int32_t ffa_rx_release(void)
> >> +static inline int32_t ffa_hyp_rx_release(void)
> >> {
> >>     return ffa_simple_call(FFA_RX_RELEASE, 0, 0, 0, 0);
> >> }
> >> diff --git a/xen/arch/arm/tee/ffa_rxtx.c b/xen/arch/arm/tee/ffa_rxtx.c
> >> index b6931c855779..a5d43e51f843 100644
> >> --- a/xen/arch/arm/tee/ffa_rxtx.c
> >> +++ b/xen/arch/arm/tee/ffa_rxtx.c
> >> @@ -30,6 +30,17 @@ struct ffa_endpoint_rxtx_descriptor_1_1 {
> >>     uint32_t tx_region_offs;
> >> };
> >>
> >> +static int32_t ffa_rxtx_map(paddr_t tx_addr, paddr_t rx_addr,
> >> +                            uint32_t page_count)
> >> +{
> >> +    return ffa_simple_call(FFA_RXTX_MAP_64, tx_addr, rx_addr, page_co=
unt, 0);
> >> +}
> >> +
> >> +static int32_t ffa_rxtx_unmap(uint16_t id)
> >> +{
> >> +    return ffa_simple_call(FFA_RXTX_UNMAP, ((uint64_t)id)<<16, 0, 0, =
0);
> >> +}
> >> +
> >> uint32_t ffa_handle_rxtx_map(uint32_t fid, register_t tx_addr,
> >>                             register_t rx_addr, uint32_t page_count)
> >> {
> >> @@ -42,6 +53,9 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register_=
t tx_addr,
> >>     void *rx;
> >>     void *tx;
> >>
> >> +    /* The code is considering that we only get one page for now */
> >> +    BUILD_BUG_ON(FFA_MAX_RXTX_PAGE_COUNT !=3D 1);
> >> +
> >>     if ( !smccc_is_conv_64(fid) )
> >>     {
> >>         /*
> >> @@ -87,6 +101,65 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, registe=
r_t tx_addr,
> >>     if ( !rx )
> >>         goto err_unmap_tx;
> >>
> >> +    /*
> >> +     * Transmit the RX/TX buffer information to the SPM if acquire is=
 supported
> >> +     * as the spec says that if not there is not need to acquire/rele=
ase/map
> >> +     * rxtx buffers from the SPMC
> >> +     */
> >> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> >> +    {
> >> +        struct ffa_endpoint_rxtx_descriptor_1_1 *rxtx_desc;
> >> +        struct ffa_mem_region *mem_reg;
> >> +
> >> +        /* All must fit in our TX buffer */
> >> +        BUILD_BUG_ON((sizeof(*rxtx_desc) + sizeof(*mem_reg)*2 +
> >> +                      sizeof(struct ffa_address_range)*2) > FFA_PAGE_=
SIZE);
> >
> > Please add space before and after the binary operator "*".
> Ack
>
> > The size of the TX buffer is FFA_RXTX_PAGE_COUNT * FFA_PAGE_SIZE.
> Very right, I will fix that in v3.
>
> > Nit: the outer parenthesis around the left expression aren't needed.
> Ack
>
> >
> >> +
> >> +        spin_lock(&ffa_tx_buffer_lock);
> >> +        rxtx_desc =3D ffa_tx;
> >> +
> >> +        /*
> >> +         * We have only one page for each so we pack everything:
> >> +         * - rx region descriptor
> >> +         * - rx region range
> >> +         * - tx region descriptor
> >> +         * - tx region range
> >> +         */
> >> +        rxtx_desc->sender_id =3D ffa_get_vm_id(d);
> >> +        rxtx_desc->reserved =3D 0;
> >> +        rxtx_desc->rx_region_offs =3D sizeof(*rxtx_desc);
> >> +        rxtx_desc->tx_region_offs =3D sizeof(*rxtx_desc) +
> >> +                                    offsetof(struct ffa_mem_region,
> >> +                                             address_range_array[1]);
> >> +
> >> +        /* rx buffer */
> >> +        mem_reg =3D ffa_tx + sizeof(*rxtx_desc);
> >> +        mem_reg->total_page_count =3D 1;
> >> +        mem_reg->address_range_count =3D 1;
> >> +        mem_reg->reserved =3D 0;
> >> +
> >> +        mem_reg->address_range_array[0].address =3D page_to_maddr(rx_=
pg);
> >> +        mem_reg->address_range_array[0].page_count =3D 1;
> >> +        mem_reg->address_range_array[0].reserved =3D 0;
> >> +
> >> +        /* tx buffer */
> >> +        mem_reg =3D ffa_tx + rxtx_desc->tx_region_offs;
> >> +        mem_reg->total_page_count =3D 1;
> >> +        mem_reg->address_range_count =3D 1;
> >> +        mem_reg->reserved =3D 0;
> >> +
> >> +        mem_reg->address_range_array[0].address =3D page_to_maddr(tx_=
pg);
> >> +        mem_reg->address_range_array[0].page_count =3D 1;
> >> +        mem_reg->address_range_array[0].reserved =3D 0;
> >> +
> >> +        ret =3D ffa_rxtx_map(0, 0, 1);
> >
> > The last parameter is also MBZ when forwarding on behalf of an endpoint=
.
>
> Ack, will fix in v3.
>
> Cheers
> Bertrand
>
> >
> > Cheers,
> > Jens
> >
> >> +
> >> +        spin_unlock(&ffa_tx_buffer_lock);
> >> +
> >> +        if ( ret !=3D FFA_RET_OK )
> >> +            goto err_unmap_rx;
> >> +    }
> >> +
> >>     ctx->rx =3D rx;
> >>     ctx->tx =3D tx;
> >>     ctx->rx_pg =3D rx_pg;
> >> @@ -95,6 +168,8 @@ uint32_t ffa_handle_rxtx_map(uint32_t fid, register=
_t tx_addr,
> >>     ctx->rx_is_free =3D true;
> >>     return FFA_RET_OK;
> >>
> >> +err_unmap_rx:
> >> +    unmap_domain_page_global(rx);
> >> err_unmap_tx:
> >>     unmap_domain_page_global(tx);
> >> err_put_rx_pg:
> >> @@ -105,8 +180,22 @@ err_put_tx_pg:
> >>     return ret;
> >> }
> >>
> >> -static void rxtx_unmap(struct ffa_ctx *ctx)
> >> +static uint32_t  rxtx_unmap(struct domain *d)
> >> {
> >> +    struct ffa_ctx *ctx =3D d->arch.tee;
> >> +
> >> +    if ( !ctx->page_count )
> >> +        return FFA_RET_INVALID_PARAMETERS;
> >> +
> >> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> >> +    {
> >> +        uint32_t ret;
> >> +
> >> +        ret =3D ffa_rxtx_unmap(ffa_get_vm_id(d));
> >> +        if ( ret !=3D FFA_RET_OK )
> >> +            return ret;
> >> +    }
> >> +
> >>     unmap_domain_page_global(ctx->rx);
> >>     unmap_domain_page_global(ctx->tx);
> >>     put_page(ctx->rx_pg);
> >> @@ -117,32 +206,63 @@ static void rxtx_unmap(struct ffa_ctx *ctx)
> >>     ctx->tx_pg =3D NULL;
> >>     ctx->page_count =3D 0;
> >>     ctx->rx_is_free =3D false;
> >> +
> >> +    return FFA_RET_OK;
> >> }
> >>
> >> uint32_t ffa_handle_rxtx_unmap(void)
> >> {
> >> -    struct domain *d =3D current->domain;
> >> +    return rxtx_unmap(current->domain);
> >> +}
> >> +
> >> +int32_t ffa_rx_acquire(struct domain *d)
> >> +{
> >> +    int32_t ret =3D FFA_RET_OK;
> >>     struct ffa_ctx *ctx =3D d->arch.tee;
> >>
> >> -    if ( !ctx->rx )
> >> -        return FFA_RET_INVALID_PARAMETERS;
> >> +    spin_lock(&ctx->rx_lock);
> >>
> >> -    rxtx_unmap(ctx);
> >> +    if ( !ctx->page_count )
> >> +    {
> >> +        ret =3D FFA_RET_DENIED;
> >> +        goto out;
> >> +    }
> >>
> >> -    return FFA_RET_OK;
> >> +    if ( !ctx->rx_is_free )
> >> +    {
> >> +        ret =3D FFA_RET_BUSY;
> >> +        goto out;
> >> +    }
> >> +
> >> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> >> +    {
> >> +        ret =3D ffa_simple_call(FFA_RX_ACQUIRE, ffa_get_vm_id(d), 0, =
0, 0);
> >> +        if ( ret !=3D FFA_RET_OK )
> >> +            goto out;
> >> +    }
> >> +    ctx->rx_is_free =3D false;
> >> +out:
> >> +    spin_unlock(&ctx->rx_lock);
> >> +
> >> +    return ret;
> >> }
> >>
> >> -int32_t ffa_handle_rx_release(void)
> >> +int32_t ffa_rx_release(struct domain *d)
> >> {
> >>     int32_t ret =3D FFA_RET_DENIED;
> >> -    struct domain *d =3D current->domain;
> >>     struct ffa_ctx *ctx =3D d->arch.tee;
> >>
> >> -    if ( !spin_trylock(&ctx->rx_lock) )
> >> -        return FFA_RET_BUSY;
> >> +    spin_lock(&ctx->rx_lock);
> >>
> >>     if ( !ctx->page_count || ctx->rx_is_free )
> >>         goto out;
> >> +
> >> +    if ( ffa_fw_supports_fid(FFA_RX_ACQUIRE) )
> >> +    {
> >> +        ret =3D ffa_simple_call(FFA_RX_RELEASE, ffa_get_vm_id(d), 0, =
0, 0);
> >> +        if ( ret !=3D FFA_RET_OK )
> >> +            goto out;
> >> +    }
> >>     ret =3D FFA_RET_OK;
> >>     ctx->rx_is_free =3D true;
> >> out:
> >> @@ -151,23 +271,9 @@ out:
> >>     return ret;
> >> }
> >>
> >> -static int32_t ffa_rxtx_map(paddr_t tx_addr, paddr_t rx_addr,
> >> -                            uint32_t page_count)
> >> -{
> >> -    return ffa_simple_call(FFA_RXTX_MAP_64, tx_addr, rx_addr, page_co=
unt, 0);
> >> -}
> >> -
> >> -static int32_t ffa_rxtx_unmap(void)
> >> -{
> >> -    return ffa_simple_call(FFA_RXTX_UNMAP, 0, 0, 0, 0);
> >> -}
> >> -
> >> void ffa_rxtx_domain_destroy(struct domain *d)
> >> {
> >> -    struct ffa_ctx *ctx =3D d->arch.tee;
> >> -
> >> -    if ( ctx->rx )
> >> -        rxtx_unmap(ctx);
> >> +    rxtx_unmap(d);
> >> }
> >>
> >> void ffa_rxtx_destroy(void)
> >> @@ -186,7 +292,7 @@ void ffa_rxtx_destroy(void)
> >>     }
> >>
> >>     if ( need_unmap )
> >> -        ffa_rxtx_unmap();
> >> +        ffa_rxtx_unmap(0);
> >> }
> >>
> >> bool ffa_rxtx_init(void)
> >> diff --git a/xen/arch/arm/tee/ffa_shm.c b/xen/arch/arm/tee/ffa_shm.c
> >> index 29675f9ba3f7..d628c1b70609 100644
> >> --- a/xen/arch/arm/tee/ffa_shm.c
> >> +++ b/xen/arch/arm/tee/ffa_shm.c
> >> @@ -16,21 +16,6 @@
> >>
> >> #include "ffa_private.h"
> >>
> >> -/* Constituent memory region descriptor */
> >> -struct ffa_address_range {
> >> -    uint64_t address;
> >> -    uint32_t page_count;
> >> -    uint32_t reserved;
> >> -};
> >> -
> >> -/* Composite memory region descriptor */
> >> -struct ffa_mem_region {
> >> -    uint32_t total_page_count;
> >> -    uint32_t address_range_count;
> >> -    uint64_t reserved;
> >> -    struct ffa_address_range address_range_array[];
> >> -};
> >> -
> >> /* Memory access permissions descriptor */
> >> struct ffa_mem_access_perm {
> >>     uint16_t endpoint_id;
> >> --
> >> 2.47.0
>
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:35:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:35:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825296.1239496 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3xzV-0001jH-Vw; Thu, 24 Oct 2024 13:35:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825296.1239496; Thu, 24 Oct 2024 13:35: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 1t3xzV-0001jA-S3; Thu, 24 Oct 2024 13:35:05 +0000
Received: by outflank-mailman (input) for mailman id 825296;
 Thu, 24 Oct 2024 13:35: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3xzV-0001j2-09
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:35:05 +0000
Received: from mail-oa1-x2b.google.com (mail-oa1-x2b.google.com
 [2001:4860:4864:20::2b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c615ac5f-920c-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 15:35:04 +0200 (CEST)
Received: by mail-oa1-x2b.google.com with SMTP id
 586e51a60fabf-2884e6ed0daso421416fac.0
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:35:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c615ac5f-920c-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729776903; x=1730381703; 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=vDtXTfbOZVyjo3+y1ruFHvhtZYsO4iWO/DfOD9Ju6q4=;
        b=phXd0TV4ImiKe3n4to4hjztOR+nMTRfgLdHfcqI4Xgk+rPfsW1qp5gBkDW3fnz0n50
         0p2PJnrkJKLr4vHH8Z9I9DVQ5hy9GO28MVFdtWpnQXON0rUU8zaEuIusEnSdR5xG7gPA
         AWKh1dtjR6mOGR5zpmG/0DwmYC8lOBlgtYXzW7pfd7Ia1Os+u3xWbjEsgh5ksPLZtcUR
         4bl61Rw1qP69z031kTL+5MoEOVUT1prn7cqZWUVMBKgIW+AdU0o7xBangyPi6istZzZP
         hFbm0KC5QGGfjf7zk2ub8i27Lp6FQtrl79lix9kmEbGY3nhlj2UHwo2CboTdPBNHUW1R
         KB+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729776903; x=1730381703;
        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=vDtXTfbOZVyjo3+y1ruFHvhtZYsO4iWO/DfOD9Ju6q4=;
        b=JepUKRtLOT34FTHTNG/UndQfct84497Nt+3y3BW6rvUxTlEzgJawy2PvIrbvR3Piua
         ebEaP3AXozMWNtRsWXopGAUy4/7FcnifvEYvnOr36ZaaahntYGa9TMe+z93YTqPzhS8n
         Ou0Wtfl4j+x0MNryfnAcozv4COWixufU5L1VC3NTyoE8tM0YcPc9stpnsAJk/i3LYp0k
         SyJSGDoNaSl+xlUn3jpqDYjyZTyX3i5u09JcMHsobw9pf+/nhieTxQmJydj6dB6D2i+T
         EDIQxZI2jHfk5NBgCWqLcwVGk6MFqGKwuIXA6p06Cj1xTRQdrBh6MFd5Xu+aeyJUJeWR
         AtPg==
X-Gm-Message-State: AOJu0Yy/nKPNwvNVU2NsbY/xpHvRXz3mgY1euifUE1+Ly7xVbJXXUvUy
	/i91rggRM1qsdYWRUs+7CkRRsqku/A5JDJ9efUUXSWCcBI4NUc6Q1pX7G+Ixf/W89K5b4UqFimA
	2Xl4gHrlX2SUW1YzR9Kuz29GO+PuChqFcpUDNtw==
X-Google-Smtp-Source: AGHT+IHY5vN02x66hzNYZXtpjGzPrzbvTGJZVvc8GjJZKmC1WsYri0Rfr3xeYd+zjwT/dmXN2x3s7IyGmXgaRjLJtHk=
X-Received: by 2002:a05:6870:f10f:b0:288:6a16:fe1 with SMTP id
 586e51a60fabf-28ced294ac0mr1986474fac.18.1729776902671; Thu, 24 Oct 2024
 06:35:02 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <b23ad93b876267fb48a5a398e394e60fdf52d33d.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44ESfSimrf6coDmurQSfuCQyytsi2gJh_kePer2p3zotug@mail.gmail.com> <678C4205-89C3-48D6-B5EF-9A16624B9E9D@arm.com>
In-Reply-To: <678C4205-89C3-48D6-B5EF-9A16624B9E9D@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 15:34:51 +0200
Message-ID: <CAHUa44FJXrnfJUiLtBK2ZFp9L9908Nt74LiE8TRCzqJ8i=yRTg@mail.gmail.com>
Subject: Re: [PATCH v2 09/10] xen/arm: ffa: Remove per VM notif_enabled
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Thu, Oct 24, 2024 at 11:50=E2=80=AFAM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jens,
>
> > On 24 Oct 2024, at 09:41, Jens Wiklander <jens.wiklander@linaro.org> wr=
ote:
> >
> > Hi Bertrand,
> >
> > On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
> > <bertrand.marquis@arm.com> wrote:
> >>
> >> Remove the per VM flag to store if notifications are enabled or not as
> >> the only case where they are not, if notifications are enabled globall=
y,
> >> will make the VM creation fail.
> >> Also use the opportunity to always give the notifications interrupts I=
Ds
> >> to VM. If the firmware does not support notifications, there won't be
> >> any generated and setting one will give back a NOT_SUPPORTED.
> >>
> >> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >> ---
> >> Changes in v2:
> >> - rebase
> >> ---
> >> xen/arch/arm/tee/ffa.c         | 17 +++--------------
> >> xen/arch/arm/tee/ffa_notif.c   | 10 +---------
> >> xen/arch/arm/tee/ffa_private.h |  2 --
> >> 3 files changed, 4 insertions(+), 25 deletions(-)
> >>
> >> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> >> index 72826b49d2aa..3a9525aa4598 100644
> >> --- a/xen/arch/arm/tee/ffa.c
> >> +++ b/xen/arch/arm/tee/ffa.c
> >> @@ -169,8 +169,6 @@ static void handle_version(struct cpu_user_regs *r=
egs)
> >>
> >> static void handle_features(struct cpu_user_regs *regs)
> >> {
> >> -    struct domain *d =3D current->domain;
> >> -    struct ffa_ctx *ctx =3D d->arch.tee;
> >>     uint32_t a1 =3D get_user_reg(regs, 1);
> >>     unsigned int n;
> >>
> >> @@ -218,16 +216,10 @@ static void handle_features(struct cpu_user_regs=
 *regs)
> >>         ffa_set_regs_success(regs, 0, 0);
> >>         break;
> >>     case FFA_FEATURE_NOTIF_PEND_INTR:
> >> -        if ( ctx->notif.enabled )
> >> -            ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, =
0);
> >> -        else
> >> -            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >> +        ffa_set_regs_success(regs, GUEST_FFA_NOTIF_PEND_INTR_ID, 0);
> >>         break;
> >>     case FFA_FEATURE_SCHEDULE_RECV_INTR:
> >> -        if ( ctx->notif.enabled )
> >> -            ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_I=
D, 0);
> >> -        else
> >> -            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >> +        ffa_set_regs_success(regs, GUEST_FFA_SCHEDULE_RECV_INTR_ID, 0=
);
> >>         break;
> >>
> >>     case FFA_NOTIFICATION_BIND:
> >> @@ -236,10 +228,7 @@ static void handle_features(struct cpu_user_regs =
*regs)
> >>     case FFA_NOTIFICATION_SET:
> >>     case FFA_NOTIFICATION_INFO_GET_32:
> >>     case FFA_NOTIFICATION_INFO_GET_64:
> >> -        if ( ctx->notif.enabled )
> >> -            ffa_set_regs_success(regs, 0, 0);
> >> -        else
> >> -            ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >> +        ffa_set_regs_success(regs, 0, 0);
> >>         break;
> >>     default:
> >>         ffa_set_regs_error(regs, FFA_RET_NOT_SUPPORTED);
> >> diff --git a/xen/arch/arm/tee/ffa_notif.c b/xen/arch/arm/tee/ffa_notif=
.c
> >> index 4b3e46318f4b..3c6418e62e2b 100644
> >> --- a/xen/arch/arm/tee/ffa_notif.c
> >> +++ b/xen/arch/arm/tee/ffa_notif.c
> >> @@ -405,7 +405,6 @@ void ffa_notif_init(void)
> >>
> >> int ffa_notif_domain_init(struct domain *d)
> >> {
> >> -    struct ffa_ctx *ctx =3D d->arch.tee;
> >>     int32_t res;
> >>
> >>     if ( !notif_enabled )
> >> @@ -415,18 +414,11 @@ int ffa_notif_domain_init(struct domain *d)
> >>     if ( res )
> >>         return -ENOMEM;
> >>
> >> -    ctx->notif.enabled =3D true;
> >> -
> >>     return 0;
> >> }
> >>
> >> void ffa_notif_domain_destroy(struct domain *d)
> >> {
> >> -    struct ffa_ctx *ctx =3D d->arch.tee;
> >> -
> >> -    if ( ctx->notif.enabled )
> >> -    {
> >> +    if ( notif_enabled )
> >>         ffa_notification_bitmap_destroy(ffa_get_vm_id(d));
> >
> > This call may now be done even if there hasn't been a successful call
> > to ffa_notification_bitmap_create().
> > A comment mentioning this and that it's harmless (if we can be sure it
> > is) would be nice.
> >
>
> You mean in the case where it failed during domain_init ?
>
> I can add the following comment:
>  Call bitmap_destroy even if bitmap create failed as the SPMC should retu=
rn an error that we will ignore
>
> Would that be ok ?

Yes, that's fine.

Cheers,
Jens

>
> Cheers
> Bertrand
>
>
> > Cheers,
> > Jens
> >
> >> -        ctx->notif.enabled =3D false;
> >> -    }
> >> }
> >> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_pri=
vate.h
> >> index 02162e0ee4c7..973ee55be09b 100644
> >> --- a/xen/arch/arm/tee/ffa_private.h
> >> +++ b/xen/arch/arm/tee/ffa_private.h
> >> @@ -281,8 +281,6 @@ struct ffa_mem_region {
> >> };
> >>
> >> struct ffa_ctx_notif {
> >> -    bool enabled;
> >> -
> >>     /*
> >>      * True if domain is reported by FFA_NOTIFICATION_INFO_GET to have
> >>      * pending global notifications.
> >> --
> >> 2.47.0
>
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:36:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:36:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825302.1239506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3y0R-0002EW-8G; Thu, 24 Oct 2024 13:36:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825302.1239506; Thu, 24 Oct 2024 13:36: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 1t3y0R-0002EP-5F; Thu, 24 Oct 2024 13:36:03 +0000
Received: by outflank-mailman (input) for mailman id 825302;
 Thu, 24 Oct 2024 13:36: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=sQmA=RU=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3y0Q-00026Y-0H
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:36:02 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e6ce4549-920c-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 15:35:59 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729776952321838.7940254939241;
 Thu, 24 Oct 2024 06:35:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e6ce4549-920c-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; t=1729776953; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=UaXSxpwC1k26BOTtQJSWUq9axliSvZLB0/HQKTd1nUI+55lteEim473p7FbG5veahiQhy+JsdYZdOgvoRQsd2FhWosqYmh/NmppJyXUyFKIfyaLIRH0S223uzfBnws8owrWIyy2c9z2nZy77H/RkkXUVYQoc6K7Q6N2LspLb7X4=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729776953; 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=qGiioBmR5484I0N5GeYQgR4+MzUnJP6y3FYcSCS+ulo=; 
	b=oIZwmB2SkCdSgKRNbJQex0YGJczsX55iuuYqlimhnzWJg2HbgSeNOs4149zbw5NRXps4Z6kFEWj/j97Z/9rqJj5BbYQ5mQAkm16HClDqAjFFkmno2SILaXs4d5pYd97u+o7R6bS23dqN3AC3xQXNc60F0LTrL+cbs6fCf5KE948=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729776953;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=qGiioBmR5484I0N5GeYQgR4+MzUnJP6y3FYcSCS+ulo=;
	b=moSZxhMSOyBZ6KsKEdyDpAvTL7f1OlCCw0xeD6lYlZFXuLREY2ONe6wabrYNCea4
	b0R1K2H3sywSiV4MzRvOnZYdHLMI0Ccw/QRS61SHo7BK+XPjuMk0BWlg5qANGDXyLDB
	OJIRQyzjUvpKxw65JxjFjMSDBDzZMVRrakOLtEUg=
Message-ID: <fa78a4f7-4b2e-46e2-8110-868735892fae@apertussolutions.com>
Date: Thu, 24 Oct 2024 09:35:13 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
 <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
 <9a049e23-471f-4987-9993-e5f2db60ac1f@suse.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <9a049e23-471f-4987-9993-e5f2db60ac1f@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/24/24 05:13, Jürgen Groß wrote:
> On 23.10.24 17:55, Daniel P. Smith wrote:
>> On 10/23/24 09:10, Juergen Gross wrote:
>>> Add a new domctl sub-function to get data of a domain having changed
>>> state (this is needed by Xenstore).
>>>
>>> The returned state just contains the domid, the domain unique id,
>>> and some flags (existing, shutdown, dying).
>>>
>>> In order to enable Xenstore stubdom being built for multiple Xen
>>> versions, make this domctl stable.  For stable domctls the
>>> interface_version is specific to the respective domctl op and it is an
>>> in/out parameter: On input the caller is specifying the desired version
>>> of the op, while on output the hypervisor will return the used version
>>> (this will be at max the caller supplied version, but might be lower in
>>> case the hypervisor doesn't support this version).
>>>
>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>> ---
>>> V1:
>>> - use a domctl subop for the new interface (Jan Beulich)
>>> ---
>>>   tools/flask/policy/modules/dom0.te  |  2 +-
>>>   xen/common/domain.c                 | 51 +++++++++++++++++++++++++++++
>>>   xen/common/domctl.c                 | 19 ++++++++++-
>>>   xen/common/event_channel.c          |  9 ++++-
>>>   xen/include/public/domctl.h         | 33 +++++++++++++++++++
>>>   xen/include/xen/event.h             |  6 ++++
>>>   xen/include/xen/sched.h             |  2 ++
>>>   xen/include/xsm/dummy.h             |  8 +++++
>>>   xen/include/xsm/xsm.h               |  6 ++++
>>>   xen/xsm/dummy.c                     |  1 +
>>>   xen/xsm/flask/hooks.c               |  7 ++++
>>>   xen/xsm/flask/policy/access_vectors |  2 ++
>>>   12 files changed, 143 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/tools/flask/policy/modules/dom0.te 
>>> b/tools/flask/policy/modules/dom0.te
>>> index 16b8c9646d..6043c01b12 100644
>>> --- a/tools/flask/policy/modules/dom0.te
>>> +++ b/tools/flask/policy/modules/dom0.te
>>> @@ -40,7 +40,7 @@ allow dom0_t dom0_t:domain {
>>>   };
>>>   allow dom0_t dom0_t:domain2 {
>>>       set_cpu_policy gettsc settsc setscheduler set_vnumainfo
>>> -    get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy
>>> +    get_vnumainfo psr_cmt_op psr_alloc get_cpu_policy get_domain_state
>>
>> I don't think that is where you want it, as that restricts dom0 to 
>> only being able to make that call against dom0. The question I have 
>> is, are you looking for this permission to be explicitly assigned to 
>> dom0 or to the domain type that was allowed to create the domain. 
>> IMHO, I think you would want the latter, so not only should the 
>> permission go here, but also added to xen.if:create_domain_common.
>>
>> Additionally, I would also recommend adding the following to xenstore.te:
>>
>> allow xenstore_t domain_type:domain get_domain_state
> 
> Okay, but shouldn't this be:
> 
> allow xenstore_t domain_type:domain2 get_domain_state;

Apologies, yes that was a typo on my part.

>>
>>>   allow dom0_t dom0_t:resource { add remove };
>>
>> ...
>>
>>> @@ -866,6 +873,16 @@ long 
>>> do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>>>                   __HYPERVISOR_domctl, "h", u_domctl);
>>>           break;
>>> +    case XEN_DOMCTL_get_domain_state:
>>> +        ret = xsm_get_domain_state(XSM_HOOK, d);
>>
>> XSM_HOOK will allow any domain to make this call on any domain. What I 
>> think you want here is XSM_XS_PRIV. That will allow either a domain 
>> flagged as the xenstore domain or dom0 to make the call.
> 
> I thought so, too, but looking at the "getdomaininfo" example it seems
> to be okay this way, too. Especially with the addition to xsm_domctl()
> checking for XSM_XS_PRIV.

I know this has been done in the past, but imho it is not a very good 
practice. Access checks really should always restrict equal or down. 
There should be a strong reason, which probably would deserves a code 
comment, to allow a check to relax up. Restricting equal should not 
reduce access, and if it does, then it means there is an unintended 
access path which is now exposed.

>>
>>> +        if ( ret )
>>> +            break;
>>> +
>>> +        copyback = 1;
>>> +        op->interface_version = XEN_DOMCTL_GETDOMSTATE_VERS_MAX;
>>> +        ret = get_domain_state(&op->u.get_domain_state, d);
>>> +        break;
>>> +
>>>       default:
>>>           ret = arch_do_domctl(op, d, u_domctl);
>>>           break;
>>
>> ...
>>
>>> @@ -815,6 +816,13 @@ static XSM_INLINE int cf_check xsm_argo_send(
>>>   #endif /* CONFIG_ARGO */
>>> +static XSM_INLINE int cf_check xsm_get_domain_state(
>>> +    XSM_DEFAULT_ARG struct domain *d)
>>> +{
>>> +    XSM_ASSERT_ACTION(XSM_HOOK);
>>
>> Per the above, this would need changed to XSM_XS_PRIV.
>>
>>> +    return xsm_default_action(action, current->domain, d);
>>> +}
>>> +
>>>   #include <public/version.h>
>>>   static XSM_INLINE int cf_check xsm_xen_version(XSM_DEFAULT_ARG 
>>> uint32_t op)
>>>   {
>>
>> ...
>>
>>> @@ -1853,6 +1854,11 @@ static int cf_check flask_argo_send(
>>>   #endif
>>> +static int cf_check flask_get_domain_state(struct domain *d)
>>> +{
>>> +    return current_has_perm(d, SECCLASS_DOMAIN, 
>>> DOMAIN__GET_DOMAIN_STATE);
>>
>> I believe you want SECCLASS_DOMAIN2 here.
> 
> Oh, indeed. And probably DOMAIN2__GET_DOMAIN_STATE
> 
> 
> Thanks,

No problem.

v/r,
dps


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:44:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:44:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825315.1239516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3y86-0004Wm-Vd; Thu, 24 Oct 2024 13:43:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825315.1239516; Thu, 24 Oct 2024 13:43: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 1t3y86-0004Wf-Sd; Thu, 24 Oct 2024 13:43:58 +0000
Received: by outflank-mailman (input) for mailman id 825315;
 Thu, 24 Oct 2024 13:43: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=fqEU=RU=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1t3y84-0004WX-W6
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:43:57 +0000
Received: from mail-oa1-x35.google.com (mail-oa1-x35.google.com
 [2001:4860:4864:20::35])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 01aaab59-920e-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 15:43:53 +0200 (CEST)
Received: by mail-oa1-x35.google.com with SMTP id
 586e51a60fabf-2890f273296so444202fac.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:43:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 01aaab59-920e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729777432; x=1730382232; 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=E9fy8r7KYr8yxhD2HttBnWpxy8mdNYxFzDinnO6yq6c=;
        b=LQGmgBl9gmwYjrtSYCHEMTRi6mE/HbDpTH7VaXfp5u7W51jh1ceeOJ3IIgAVW+ZxEW
         D1pbtZIcTzjfwS9Y7qPWyVqraxK3XvUI845qtrzqvVpzdDrrjEaxCrDIContqVnwfwwC
         X/aN2Sv+EChQoUOxfVCo54+HuYypOlH7xoN5+dxuCQj/vQOshOdntyf0o+GPA94yF9V/
         3FBv3IidhvnmjlgcXQZ9WNQJa/Or67Fw/w/96TLlxKPyPMK4dGdxXkm69xQJZAKKNMMl
         y6f4X50XBVwEs2JnE2ouMbwJzplJQ0u03BzpIA7qwSaVWk5U0mydDoZ2nzrqi0lrsWiH
         tMIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729777432; x=1730382232;
        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=E9fy8r7KYr8yxhD2HttBnWpxy8mdNYxFzDinnO6yq6c=;
        b=PSMUNdDubriIDtd634/KkQmgY/h4W9d7NmFu0BUaj40S4gSPPzFtGGGz/Qz0Q06kKk
         bGtfAyDGzpdje5+Ai0Y0VrUDnOkTM2L2jr4XaLuWtH29z/bY0tTmIii9iMObHxvCPhdL
         UOepVyIlvCYXnPOC4DBzsDKa/bsrLynMsaz7IaBsc5H/mhg5+P5Fu12ffrrgnFYtCAmV
         IsMYUcxczupqeRCprGB9OcRDDTvUahDKkG3um2YKLf1PzxUhUL2+EBVnWvOItGeAMNaN
         TBlRa1dm07mNMGCCmcMzo/9Rq7tCWAC7xS4F3cDhuMTKWV3gdpGgTO0pMhYBUyvf5zGw
         zrFw==
X-Gm-Message-State: AOJu0YzAmBWcBFol/Xe7Oy/l0R9/QD32CXdUe1He5IpFjXK/0zBu1GS1
	vF0r7HOspRWXi4DWvZokJAcE5Ev7QcB5fPwi0tvSgbv9XzsgMTWU5iXBWT6tagu11posUv33uFL
	IP3KDBz/cv/Z0vN+M/1SQA948EWjl2tTHXNWwJA==
X-Google-Smtp-Source: AGHT+IG7qlGjdLzXUKnCLzuVQWtRJL5EIcswOHGfQeb/QSL96xyWeXOlEP5Xhl/GsPYyUoENUjHbqgExyhCLoM6FrRA=
X-Received: by 2002:a05:6870:5686:b0:260:ee13:e665 with SMTP id
 586e51a60fabf-28ced44b3fdmr1894595fac.37.1729777432069; Thu, 24 Oct 2024
 06:43:52 -0700 (PDT)
MIME-Version: 1.0
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <9464941b06e82763ebe79e3f2adb4ca2497cf298.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44H+EipP-F_12tWidOxfFPf-jVcSs4XjLjBv5t05-Kw59g@mail.gmail.com> <5497A12A-B077-44B4-AB66-1D22D62681D0@arm.com>
In-Reply-To: <5497A12A-B077-44B4-AB66-1D22D62681D0@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Thu, 24 Oct 2024 15:43:40 +0200
Message-ID: <CAHUa44Fca04p-L7K_OkZm2CVMFgWZxAmryOrU=GwwCHL+N4-3g@mail.gmail.com>
Subject: Re: [PATCH v2 10/10] xen/arm: ffa: Add indirect message support
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Thu, Oct 24, 2024 at 12:05=E2=80=AFPM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jens,
>
> > On 24 Oct 2024, at 10:50, Jens Wiklander <jens.wiklander@linaro.org> wr=
ote:
> >
> > Hi Bertrand,
> >
> > On Wed, Oct 16, 2024 at 10:32=E2=80=AFAM Bertrand Marquis
> > <bertrand.marquis@arm.com> wrote:
> >>
> >> Add support for FFA_MSG_SEND2 to send indirect messages from a VM to a
> >> secure partition.
> >>
> >> Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
> >> ---
> >> Changes in v2:
> >> - rebase
> >> ---
> >> xen/arch/arm/tee/ffa.c         |  5 ++++
> >> xen/arch/arm/tee/ffa_msg.c     | 49 ++++++++++++++++++++++++++++++++++
> >> xen/arch/arm/tee/ffa_private.h |  1 +
> >> 3 files changed, 55 insertions(+)
> >>
> >> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> >> index 3a9525aa4598..21d41b452dc9 100644
> >> --- a/xen/arch/arm/tee/ffa.c
> >> +++ b/xen/arch/arm/tee/ffa.c
> >> @@ -101,6 +101,7 @@ static const struct ffa_fw_abi ffa_fw_abi_needed[]=
 =3D {
> >>     FW_ABI(FFA_MEM_RECLAIM),
> >>     FW_ABI(FFA_MSG_SEND_DIRECT_REQ_32),
> >>     FW_ABI(FFA_MSG_SEND_DIRECT_REQ_64),
> >> +    FW_ABI(FFA_MSG_SEND2),
> >> };
> >>
> >> /*
> >> @@ -195,6 +196,7 @@ static void handle_features(struct cpu_user_regs *=
regs)
> >>     case FFA_PARTITION_INFO_GET:
> >>     case FFA_MSG_SEND_DIRECT_REQ_32:
> >>     case FFA_MSG_SEND_DIRECT_REQ_64:
> >> +    case FFA_MSG_SEND2:
> >>         ffa_set_regs_success(regs, 0, 0);
> >>         break;
> >>     case FFA_MEM_SHARE_64:
> >> @@ -275,6 +277,9 @@ static bool ffa_handle_call(struct cpu_user_regs *=
regs)
> >>     case FFA_MSG_SEND_DIRECT_REQ_64:
> >>         ffa_handle_msg_send_direct_req(regs, fid);
> >>         return true;
> >> +    case FFA_MSG_SEND2:
> >> +        e =3D ffa_handle_msg_send2(regs);
> >> +        break;
> >>     case FFA_MEM_SHARE_32:
> >>     case FFA_MEM_SHARE_64:
> >>         ffa_handle_mem_share(regs);
> >> diff --git a/xen/arch/arm/tee/ffa_msg.c b/xen/arch/arm/tee/ffa_msg.c
> >> index ae263e54890e..335f246ba657 100644
> >> --- a/xen/arch/arm/tee/ffa_msg.c
> >> +++ b/xen/arch/arm/tee/ffa_msg.c
> >> @@ -12,6 +12,15 @@
> >>
> >> #include "ffa_private.h"
> >>
> >> +/* Encoding of partition message in RX/TX buffer */
> >> +struct ffa_part_msg_rxtx {
> >> +    uint32_t flags;
> >> +    uint32_t reserved;
> >> +    uint32_t msg_offset;
> >> +    uint32_t send_recv_id;
> >> +    uint32_t msg_size;
> >> +};
> >> +
> >> void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32=
_t fid)
> >> {
> >>     struct arm_smccc_1_2_regs arg =3D { .a0 =3D fid, };
> >> @@ -78,3 +87,43 @@ out:
> >>                  resp.a4 & mask, resp.a5 & mask, resp.a6 & mask,
> >>                  resp.a7 & mask);
> >> }
> >> +
> >> +int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs)
> >> +{
> >> +    struct domain *src_d =3D current->domain;
> >> +    struct ffa_ctx *src_ctx =3D src_d->arch.tee;
> >> +    const struct ffa_part_msg_rxtx *src_msg;
> >> +    uint16_t dst_id, src_id;
> >> +    int32_t ret;
> >> +
> >> +    if ( !ffa_fw_supports_fid(FFA_MSG_SEND2) )
> >> +        return FFA_RET_NOT_SUPPORTED;
> >> +
> >> +    if ( !spin_trylock(&src_ctx->tx_lock) )
> >> +        return FFA_RET_BUSY;
> >> +
> >> +    src_msg =3D src_ctx->tx;
> >> +    src_id =3D src_msg->send_recv_id >> 16;
> >> +    dst_id =3D src_msg->send_recv_id & GENMASK(15,0);
> >> +
> >> +    if ( src_id !=3D ffa_get_vm_id(src_d) || !FFA_ID_IS_SECURE(dst_id=
) )
> >> +    {
> >> +        ret =3D FFA_RET_INVALID_PARAMETERS;
> >> +        goto out_unlock_tx;
> >> +    }
> >> +
> >> +    /* check source message fits in buffer */
> >> +    if ( src_ctx->page_count * FFA_PAGE_SIZE <
> >> +         src_msg->msg_offset + src_msg->msg_size ||
> >> +         src_msg->msg_offset < sizeof(struct ffa_part_msg_rxtx) )
> >> +    {
> >> +        ret =3D FFA_RET_INVALID_PARAMETERS;
> >> +        goto out_unlock_tx;
> >> +    }
> >
> > The guest can change src_mst at any moment with another CPU so these
> > tests are only sanity checks. The SPMC will also have to lock and do
> > the same tests again. So the tests here will only in the best case (in
> > case the guest is misbehaving) save us from entering the SPMC only to
> > get an error back. The lock makes sense since we could have concurrent
> > calls to FFA_MEM_SHARE. How about removing the tests?
>
> I think we should still prevent to forward invalid requests to the SPMC a=
s
> much as we can to prevent a malicious guest from stilling CPU cycles by
> doing invalid calls to the secure world.
>
> I could put a comment in there saying that this is just protection but to=
 be
> fare the SPMC in secure will have the same issues: this can be changed
> at any time by the caller on another core.

Fair enough.

>
> >
> >> +
> >> +    ret =3D ffa_simple_call(FFA_MSG_SEND2, ((uint32_t)src_id) << 16, =
0, 0, 0);
> >
> > I'd rather use ffa_get_vm_id(src_d) instead of src_id.
>
> src_id is a local variable and was checked to be equal to  ffa_get_vm_id(=
src_d)
> upper so those 2 values are the same.
> Why would you rather recall ffa_get_vm_id here ?

I don't think that check is enough to prevent the compiler from
loading that value from memory again, potentially opening a
time-of-check to time-of-use window. Using ACCESS_ONCE() when reading
send_recv_id above should also take care of that, but it seems more
direct to use ffa_get_vm_id().

Cheers,
Jens

>
> Cheers
> Bertrand
>
> >
> > Cheers,
> > Jens
> >
> >> +
> >> +out_unlock_tx:
> >> +    spin_unlock(&src_ctx->tx_lock);
> >> +    return ret;
> >> +}
> >> diff --git a/xen/arch/arm/tee/ffa_private.h b/xen/arch/arm/tee/ffa_pri=
vate.h
> >> index 973ee55be09b..d441c0ca5598 100644
> >> --- a/xen/arch/arm/tee/ffa_private.h
> >> +++ b/xen/arch/arm/tee/ffa_private.h
> >> @@ -359,6 +359,7 @@ void ffa_handle_notification_get(struct cpu_user_r=
egs *regs);
> >> int ffa_handle_notification_set(struct cpu_user_regs *regs);
> >>
> >> void ffa_handle_msg_send_direct_req(struct cpu_user_regs *regs, uint32=
_t fid);
> >> +int32_t ffa_handle_msg_send2(struct cpu_user_regs *regs);
> >>
> >> static inline uint16_t ffa_get_vm_id(const struct domain *d)
> >> {
> >> --
> >> 2.47.0
>
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 13:59:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 13:59:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825325.1239526 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3yMk-0007EE-5p; Thu, 24 Oct 2024 13:59:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825325.1239526; Thu, 24 Oct 2024 13: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 1t3yMk-0007E7-2y; Thu, 24 Oct 2024 13:59:06 +0000
Received: by outflank-mailman (input) for mailman id 825325;
 Thu, 24 Oct 2024 13:59: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=MNKq=RU=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t3yMi-0007Dz-Qa
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 13:59:04 +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 1ffc0816-9210-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 15:59:02 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c99be0a4bbso1202348a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 06:59:02 -0700 (PDT)
Received: from ?IPV6:2a00:20:700c:1cc7:2574:2fb8:b074:8405?
 ([2a00:20:700c:1cc7:2574:2fb8:b074:8405])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912d623fsm622998066b.9.2024.10.24.06.59.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 24 Oct 2024 06:59:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ffc0816-9210-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1729778342; x=1730383142; darn=lists.xenproject.org;
        h=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=AszfcqI1NSStMYVMcgHs2bTARDH+mBR1aaXUhjQr/pU=;
        b=AlQoqQr45Vl0otS4Ym7CyDAITWC5PMXC+Oyhp3LZfTSTIMmS4tGAHEIJsuxnQ82p5J
         8i1NdtJ7qnXjVcHv6xpdP97iR7ECXYA9t1Vof+VAvfLGRDFlu4SwIeza4y28Ctc6nXEZ
         lgpFcz/LkyTMPLsNcg4liu82F42bw4IUAhK/4dj4QStjW2m2WNKKCfTCqQ0r2wfEizR4
         lwwel4cEONE1WK64wy6mEcNdykq0FajG0bGwZN+hRd5sALiuqV6vJ4GOM5RcVHKYqwfx
         54fnOsx5jvgWgtoOS4NtOl3+1ct7IgIzBBOtFZUtpfqI13kgB8jHy6ElOt0W5MGKmS49
         DPeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729778342; x=1730383142;
        h=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=AszfcqI1NSStMYVMcgHs2bTARDH+mBR1aaXUhjQr/pU=;
        b=b/mtU4VetvPD2cJIMWENNm+gPpC4tg3hX0DsLCjcp7fouKPIYJrJXJeaOILXsEhXN9
         ufViMmWWmgnRn0K3q4qfqIbPwfQY2opVvvC5PU/qFiAS2FZIhdfE6VKb7wll5l6GlxlO
         EM6fiZDnSTFoZrFdYxUIxczgetJj2Q01JClkREvcbjt9dEMC0LTHIPdPRM1Iuhd9mbsX
         OwsSvWdIh5bgTTDXgklEp/vzbczhIxpqS+DG0byy1hfD7vooOW4eHhJMF4YT/GViHK3v
         zbN/FeR5/h1NzLxq+RA/M8/tX6txyM3ttjeyzPiPgv64JXkcprbzF+Ay9XraKREssy6K
         QvOw==
X-Forwarded-Encrypted: i=1; AJvYcCXA8hyGlywNHEzerEjjGRhZSJxq0v7G5UbeJLxKttlygHbh7qHv0jp8bTZaLm3waOG5ja0NnxFBaiQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyNUl6nAlUn37QYJQvt5IcspfetCUJtPiCTy0c/xJfMYf6FJUhG
	2x0aNxAniumnStHr1VoAuPso6fB4GiU/QXsYzOPXc7zM27uyfzRQ/rouSqVoKDg=
X-Google-Smtp-Source: AGHT+IHySpb/oatk/vzI3+c2XdsFX6d7szWwRP0HxuAtZhC4FVWJdX8MxH3ltiqDimZ9ME+GpQZwgA==
X-Received: by 2002:a17:907:7205:b0:a9a:3dc0:8911 with SMTP id a640c23a62f3a-a9abf875a83mr685193566b.16.1729778341884;
        Thu, 24 Oct 2024 06:59:01 -0700 (PDT)
Message-ID: <9fe53856-725c-4f7b-88a7-9e564bf7b997@suse.com>
Date: Thu, 24 Oct 2024 15:59:00 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
 <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
 <9a049e23-471f-4987-9993-e5f2db60ac1f@suse.com>
 <fa78a4f7-4b2e-46e2-8110-868735892fae@apertussolutions.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <fa78a4f7-4b2e-46e2-8110-868735892fae@apertussolutions.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------GXI0HAWFsCssZxiwUSqGWVHF"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------GXI0HAWFsCssZxiwUSqGWVHF
Content-Type: multipart/mixed; boundary="------------MfGaL0YybK0Ya05ivLVuDFy8";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
Message-ID: <9fe53856-725c-4f7b-88a7-9e564bf7b997@suse.com>
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
 <ea2aeed1-91b7-47db-9354-d0634d0db9e8@apertussolutions.com>
 <9a049e23-471f-4987-9993-e5f2db60ac1f@suse.com>
 <fa78a4f7-4b2e-46e2-8110-868735892fae@apertussolutions.com>
In-Reply-To: <fa78a4f7-4b2e-46e2-8110-868735892fae@apertussolutions.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------MfGaL0YybK0Ya05ivLVuDFy8
Content-Type: multipart/mixed; boundary="------------oHqYx0i4GsPK5GKmJcR2miZT"

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

T24gMjQuMTAuMjQgMTU6MzUsIERhbmllbCBQLiBTbWl0aCB3cm90ZToNCj4gT24gMTAvMjQv
MjQgMDU6MTMsIErDvHJnZW4gR3Jvw58gd3JvdGU6DQo+PiBPbiAyMy4xMC4yNCAxNzo1NSwg
RGFuaWVsIFAuIFNtaXRoIHdyb3RlOg0KPj4+IE9uIDEwLzIzLzI0IDA5OjEwLCBKdWVyZ2Vu
IEdyb3NzIHdyb3RlOg0KPj4+PiBBZGQgYSBuZXcgZG9tY3RsIHN1Yi1mdW5jdGlvbiB0byBn
ZXQgZGF0YSBvZiBhIGRvbWFpbiBoYXZpbmcgY2hhbmdlZA0KPj4+PiBzdGF0ZSAodGhpcyBp
cyBuZWVkZWQgYnkgWGVuc3RvcmUpLg0KPj4+Pg0KPj4+PiBUaGUgcmV0dXJuZWQgc3RhdGUg
anVzdCBjb250YWlucyB0aGUgZG9taWQsIHRoZSBkb21haW4gdW5pcXVlIGlkLA0KPj4+PiBh
bmQgc29tZSBmbGFncyAoZXhpc3RpbmcsIHNodXRkb3duLCBkeWluZykuDQo+Pj4+DQo+Pj4+
IEluIG9yZGVyIHRvIGVuYWJsZSBYZW5zdG9yZSBzdHViZG9tIGJlaW5nIGJ1aWx0IGZvciBt
dWx0aXBsZSBYZW4NCj4+Pj4gdmVyc2lvbnMsIG1ha2UgdGhpcyBkb21jdGwgc3RhYmxlLsKg
IEZvciBzdGFibGUgZG9tY3RscyB0aGUNCj4+Pj4gaW50ZXJmYWNlX3ZlcnNpb24gaXMgc3Bl
Y2lmaWMgdG8gdGhlIHJlc3BlY3RpdmUgZG9tY3RsIG9wIGFuZCBpdCBpcyBhbg0KPj4+PiBp
bi9vdXQgcGFyYW1ldGVyOiBPbiBpbnB1dCB0aGUgY2FsbGVyIGlzIHNwZWNpZnlpbmcgdGhl
IGRlc2lyZWQgdmVyc2lvbg0KPj4+PiBvZiB0aGUgb3AsIHdoaWxlIG9uIG91dHB1dCB0aGUg
aHlwZXJ2aXNvciB3aWxsIHJldHVybiB0aGUgdXNlZCB2ZXJzaW9uDQo+Pj4+ICh0aGlzIHdp
bGwgYmUgYXQgbWF4IHRoZSBjYWxsZXIgc3VwcGxpZWQgdmVyc2lvbiwgYnV0IG1pZ2h0IGJl
IGxvd2VyIGluDQo+Pj4+IGNhc2UgdGhlIGh5cGVydmlzb3IgZG9lc24ndCBzdXBwb3J0IHRo
aXMgdmVyc2lvbikuDQo+Pj4+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gR3Jvc3Mg
PGpncm9zc0BzdXNlLmNvbT4NCj4+Pj4gLS0tDQo+Pj4+IFYxOg0KPj4+PiAtIHVzZSBhIGRv
bWN0bCBzdWJvcCBmb3IgdGhlIG5ldyBpbnRlcmZhY2UgKEphbiBCZXVsaWNoKQ0KPj4+PiAt
LS0NCj4+Pj4gwqAgdG9vbHMvZmxhc2svcG9saWN5L21vZHVsZXMvZG9tMC50ZcKgIHzCoCAy
ICstDQo+Pj4+IMKgIHhlbi9jb21tb24vZG9tYWluLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+Pj4+IMKg
IHhlbi9jb21tb24vZG9tY3RsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8
IDE5ICsrKysrKysrKystDQo+Pj4+IMKgIHhlbi9jb21tb24vZXZlbnRfY2hhbm5lbC5jwqDC
oMKgwqDCoMKgwqDCoMKgIHzCoCA5ICsrKystDQo+Pj4+IMKgIHhlbi9pbmNsdWRlL3B1Ymxp
Yy9kb21jdGwuaMKgwqDCoMKgwqDCoMKgwqAgfCAzMyArKysrKysrKysrKysrKysrKysrDQo+
Pj4+IMKgIHhlbi9pbmNsdWRlL3hlbi9ldmVudC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IHzCoCA2ICsrKysNCj4+Pj4gwqAgeGVuL2luY2x1ZGUveGVuL3NjaGVkLmjCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgfMKgIDIgKysNCj4+Pj4gwqAgeGVuL2luY2x1ZGUveHNtL2R1bW15
LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDggKysrKysNCj4+Pj4gwqAgeGVuL2lu
Y2x1ZGUveHNtL3hzbS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNiArKysr
DQo+Pj4+IMKgIHhlbi94c20vZHVtbXkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgfMKgIDEgKw0KPj4+PiDCoCB4ZW4veHNtL2ZsYXNrL2hvb2tzLmPCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCA3ICsrKysNCj4+Pj4gwqAgeGVuL3hzbS9m
bGFzay9wb2xpY3kvYWNjZXNzX3ZlY3RvcnMgfMKgIDIgKysNCj4+Pj4gwqAgMTIgZmlsZXMg
Y2hhbmdlZCwgMTQzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pDQo+Pj4+DQo+Pj4+
IGRpZmYgLS1naXQgYS90b29scy9mbGFzay9wb2xpY3kvbW9kdWxlcy9kb20wLnRlIA0KPj4+
PiBiL3Rvb2xzL2ZsYXNrL3BvbGljeS9tb2R1bGVzL2RvbTAudGUNCj4+Pj4gaW5kZXggMTZi
OGM5NjQ2ZC4uNjA0M2MwMWIxMiAxMDA2NDQNCj4+Pj4gLS0tIGEvdG9vbHMvZmxhc2svcG9s
aWN5L21vZHVsZXMvZG9tMC50ZQ0KPj4+PiArKysgYi90b29scy9mbGFzay9wb2xpY3kvbW9k
dWxlcy9kb20wLnRlDQo+Pj4+IEBAIC00MCw3ICs0MCw3IEBAIGFsbG93IGRvbTBfdCBkb20w
X3Q6ZG9tYWluIHsNCj4+Pj4gwqAgfTsNCj4+Pj4gwqAgYWxsb3cgZG9tMF90IGRvbTBfdDpk
b21haW4yIHsNCj4+Pj4gwqDCoMKgwqDCoCBzZXRfY3B1X3BvbGljeSBnZXR0c2Mgc2V0dHNj
IHNldHNjaGVkdWxlciBzZXRfdm51bWFpbmZvDQo+Pj4+IC3CoMKgwqAgZ2V0X3ZudW1haW5m
byBwc3JfY210X29wIHBzcl9hbGxvYyBnZXRfY3B1X3BvbGljeQ0KPj4+PiArwqDCoMKgIGdl
dF92bnVtYWluZm8gcHNyX2NtdF9vcCBwc3JfYWxsb2MgZ2V0X2NwdV9wb2xpY3kgZ2V0X2Rv
bWFpbl9zdGF0ZQ0KPj4+DQo+Pj4gSSBkb24ndCB0aGluayB0aGF0IGlzIHdoZXJlIHlvdSB3
YW50IGl0LCBhcyB0aGF0IHJlc3RyaWN0cyBkb20wIHRvIG9ubHkgYmVpbmcgDQo+Pj4gYWJs
ZSB0byBtYWtlIHRoYXQgY2FsbCBhZ2FpbnN0IGRvbTAuIFRoZSBxdWVzdGlvbiBJIGhhdmUg
aXMsIGFyZSB5b3UgbG9va2luZyANCj4+PiBmb3IgdGhpcyBwZXJtaXNzaW9uIHRvIGJlIGV4
cGxpY2l0bHkgYXNzaWduZWQgdG8gZG9tMCBvciB0byB0aGUgZG9tYWluIHR5cGUgDQo+Pj4g
dGhhdCB3YXMgYWxsb3dlZCB0byBjcmVhdGUgdGhlIGRvbWFpbi4gSU1ITywgSSB0aGluayB5
b3Ugd291bGQgd2FudCB0aGUgDQo+Pj4gbGF0dGVyLCBzbyBub3Qgb25seSBzaG91bGQgdGhl
IHBlcm1pc3Npb24gZ28gaGVyZSwgYnV0IGFsc28gYWRkZWQgdG8gDQo+Pj4geGVuLmlmOmNy
ZWF0ZV9kb21haW5fY29tbW9uLg0KPj4+DQo+Pj4gQWRkaXRpb25hbGx5LCBJIHdvdWxkIGFs
c28gcmVjb21tZW5kIGFkZGluZyB0aGUgZm9sbG93aW5nIHRvIHhlbnN0b3JlLnRlOg0KPj4+
DQo+Pj4gYWxsb3cgeGVuc3RvcmVfdCBkb21haW5fdHlwZTpkb21haW4gZ2V0X2RvbWFpbl9z
dGF0ZQ0KPj4NCj4+IE9rYXksIGJ1dCBzaG91bGRuJ3QgdGhpcyBiZToNCj4+DQo+PiBhbGxv
dyB4ZW5zdG9yZV90IGRvbWFpbl90eXBlOmRvbWFpbjIgZ2V0X2RvbWFpbl9zdGF0ZTsNCj4g
DQo+IEFwb2xvZ2llcywgeWVzIHRoYXQgd2FzIGEgdHlwbyBvbiBteSBwYXJ0Lg0KPiANCj4+
Pg0KPj4+PiDCoCBhbGxvdyBkb20wX3QgZG9tMF90OnJlc291cmNlIHsgYWRkIHJlbW92ZSB9
Ow0KPj4+DQo+Pj4gLi4uDQo+Pj4NCj4+Pj4gQEAgLTg2Niw2ICs4NzMsMTYgQEAgbG9uZyBk
b19kb21jdGwoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fZG9tY3RsX3QpIA0KPj4+PiB1
X2RvbWN0bCkNCj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX0hZ
UEVSVklTT1JfZG9tY3RsLCAiaCIsIHVfZG9tY3RsKTsNCj4+Pj4gwqDCoMKgwqDCoMKgwqDC
oMKgIGJyZWFrOw0KPj4+PiArwqDCoMKgIGNhc2UgWEVOX0RPTUNUTF9nZXRfZG9tYWluX3N0
YXRlOg0KPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0geHNtX2dldF9kb21haW5fc3RhdGUo
WFNNX0hPT0ssIGQpOw0KPj4+DQo+Pj4gWFNNX0hPT0sgd2lsbCBhbGxvdyBhbnkgZG9tYWlu
IHRvIG1ha2UgdGhpcyBjYWxsIG9uIGFueSBkb21haW4uIFdoYXQgSSB0aGluayANCj4+PiB5
b3Ugd2FudCBoZXJlIGlzIFhTTV9YU19QUklWLiBUaGF0IHdpbGwgYWxsb3cgZWl0aGVyIGEg
ZG9tYWluIGZsYWdnZWQgYXMgdGhlIA0KPj4+IHhlbnN0b3JlIGRvbWFpbiBvciBkb20wIHRv
IG1ha2UgdGhlIGNhbGwuDQo+Pg0KPj4gSSB0aG91Z2h0IHNvLCB0b28sIGJ1dCBsb29raW5n
IGF0IHRoZSAiZ2V0ZG9tYWluaW5mbyIgZXhhbXBsZSBpdCBzZWVtcw0KPj4gdG8gYmUgb2th
eSB0aGlzIHdheSwgdG9vLiBFc3BlY2lhbGx5IHdpdGggdGhlIGFkZGl0aW9uIHRvIHhzbV9k
b21jdGwoKQ0KPj4gY2hlY2tpbmcgZm9yIFhTTV9YU19QUklWLg0KPiANCj4gSSBrbm93IHRo
aXMgaGFzIGJlZW4gZG9uZSBpbiB0aGUgcGFzdCwgYnV0IGltaG8gaXQgaXMgbm90IGEgdmVy
eSBnb29kIHByYWN0aWNlLiANCj4gQWNjZXNzIGNoZWNrcyByZWFsbHkgc2hvdWxkIGFsd2F5
cyByZXN0cmljdCBlcXVhbCBvciBkb3duLiBUaGVyZSBzaG91bGQgYmUgYSANCj4gc3Ryb25n
IHJlYXNvbiwgd2hpY2ggcHJvYmFibHkgd291bGQgZGVzZXJ2ZXMgYSBjb2RlIGNvbW1lbnQs
IHRvIGFsbG93IGEgY2hlY2sgdG8gDQo+IHJlbGF4IHVwLiBSZXN0cmljdGluZyBlcXVhbCBz
aG91bGQgbm90IHJlZHVjZSBhY2Nlc3MsIGFuZCBpZiBpdCBkb2VzLCB0aGVuIGl0IA0KPiBt
ZWFucyB0aGVyZSBpcyBhbiB1bmludGVuZGVkIGFjY2VzcyBwYXRoIHdoaWNoIGlzIG5vdyBl
eHBvc2VkLg0KDQpTb3VuZHMgbG9naWNhbC4NCg0KSSdsbCBjaGVjayBpZiBpdCB3b3JrcyB0
aGUgd2F5IHlvdSBhcmUgc3VnZ2VzdGluZy4gSWYgc28sIEknbGwgc2VuZCBhIHBhdGNoDQpm
aXhpbmcgdGhlIGdldGRvbWFpbmluZm8gY2FzZS4NCg0KDQpKdWVyZ2VuDQo=
--------------oHqYx0i4GsPK5GKmJcR2miZT
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------oHqYx0i4GsPK5GKmJcR2miZT--

--------------MfGaL0YybK0Ya05ivLVuDFy8--

--------------GXI0HAWFsCssZxiwUSqGWVHF
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/Ey8FAmcaUqQFAwAAAAAACgkQsN6d1ii/Ey/7
pQf+MIKIwAnwdseh20ygkXZPk4NWSbNfByiWZo6Mtkw1FUKQ/vgHKKSWPpnOHS/UD03Qo2j4gK7X
YXVl4g8WOGHowgbdmTnCa9+Cl2tsdi8wW3yEV9SJoge2QWuhV4Dcp/Zgmr4iQDPNEl0gNKjR6Z/g
DUDRvShvN16WxsZmu5ZzB3DnsZi4ofRBdfJeiYfovoTYSu6qmDQhc0B+G8wraMcEhJq/rUlrKK/0
UXosg0kHTIfRblVV2KpEGgT9dxvbtgKQvmwAfqNWIbnW102Exgg7haG8+S9hMK7q4vwTjoFJ2Eqr
3bFxL7IfTL53mQr/ihzAWKwNrMdoBHtmPHiwVSZSIg==
=0+Sl
-----END PGP SIGNATURE-----

--------------GXI0HAWFsCssZxiwUSqGWVHF--


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 14:04:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 14:04:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825334.1239536 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3yRk-0000Z1-Qu; Thu, 24 Oct 2024 14:04:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825334.1239536; Thu, 24 Oct 2024 14: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 1t3yRk-0000Yu-OF; Thu, 24 Oct 2024 14:04:16 +0000
Received: by outflank-mailman (input) for mailman id 825334;
 Thu, 24 Oct 2024 14: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3yRk-0000Yo-08
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 14:04:16 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d95be973-9210-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 16:04:13 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9a6acac4c3so139088866b.0
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 07:04:13 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a912ee100sm625582466b.62.2024.10.24.07.04.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 24 Oct 2024 07:04:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d95be973-9210-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729778653; x=1730383453; 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=Rv81b7pTqWmZCoPXe+GeBoWK/2gTppDUb1Xdf0RRWxI=;
        b=XxqwDew6q+iO7uJJ9gciIvrXkmK4YSL/3W1Acha+TY6nqmXhoeV9uNz0rUSJ4X0tvW
         3RP90NcPwpnVUWecfvEqrtRa5uQtwqD4L6FEldnAWpw2FoJVxj3MZAtxLw4zqLO9tnw2
         1FiOM7uXIAL7vETUcVJihtd9vG34RnDcnu7Og=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729778653; x=1730383453;
        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=Rv81b7pTqWmZCoPXe+GeBoWK/2gTppDUb1Xdf0RRWxI=;
        b=dM5jJjKRjyGLpfBNHx3ul0OWVSEke9x+Eedm90HLfz/nNXNKBQXLnCk3aFtyvDA8/1
         4jHIkYvo2tgtpg1Fp++GQz/Pa0fLdMGqROktm7JNqTMAKJmAyvOR6eGTQS87ymrN6ilA
         xFlOxSaYyQT+M4O2OG7EiiZw1cMNnTmchaRzxClFIBp75cuNZOFiKQT9Lakg8u/xnD1C
         6DkhKFVAMvKvpfR/hqcI6vUDKz4Dc6AWPkihZkqnKfwy0xskbbiFnIBWrBJNoZiUXmoq
         Ey2qoNCkwdrRYBs20BFdvrJSqU/xGHFFCwrqYYfWPc4KbZHTv0Dq4+5AmTSlMgOfLpFn
         WPhQ==
X-Forwarded-Encrypted: i=1; AJvYcCUlyQGBKDxDzFV5h88ov/Ywbiqu9wCahN7YGIdnYkqDcpVtJSnCkdwj9ik3dqZYAhs6KPos+6/Yu1I=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx5tEQ8L5QbXx2bjhATq6cmVI8DWIhT+IakEdNmcKo1pzSf6pak
	IKf2RbUbHU03c+NMLjHerJ1yUkRfa8FfN9b9OL1M4lpPe2KzYvMnPTkJU4aRYJM=
X-Google-Smtp-Source: AGHT+IHaa65aS5SSpOSVjuHlSQNsX6RqIc72yZOPbholahHEPPGbcegCXOSsVzjXVxa3yjqssQvJ8Q==
X-Received: by 2002:a17:907:3d91:b0:a99:e4a2:1cda with SMTP id a640c23a62f3a-a9ad285ee55mr189928866b.56.1729778652522;
        Thu, 24 Oct 2024 07:04:12 -0700 (PDT)
Message-ID: <f8452748-067d-48d3-8ed3-3adc98566aa3@citrix.com>
Date: Thu, 24 Oct 2024 15:04:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 1/6] CI: Refresh the Debian 12 x86_64 container
To: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
Cc: Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1729760501.git.javi.merino@cloud.com>
 <288fcc10dbcbdab1c33ebfb95bedf2366ba64122.1729760501.git.javi.merino@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <288fcc10dbcbdab1c33ebfb95bedf2366ba64122.1729760501.git.javi.merino@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24/10/2024 11:04 am, Javi Merino wrote:
> Rework the container to use heredocs for readability, and use
> apt-get --no-install-recommends to keep the size down.
>
> This reduces the size of the (uncompressed) container from 3.44GB to 1.67GB.

!!

>
> Signed-off-by: Javi Merino <javi.merino@cloud.com>
> ---
>  automation/build/debian/12-x86_64.dockerfile | 68 ++++++++++++++++++++
>  automation/build/debian/bookworm.dockerfile  | 57 ----------------
>  automation/gitlab-ci/build.yaml              | 20 +++---
>  automation/gitlab-ci/test.yaml               | 14 ++--
>  automation/scripts/containerize              |  2 +-
>  5 files changed, 86 insertions(+), 75 deletions(-)
>  create mode 100644 automation/build/debian/12-x86_64.dockerfile
>  delete mode 100644 automation/build/debian/bookworm.dockerfile
>
> diff --git a/automation/build/debian/12-x86_64.dockerfile b/automation/build/debian/12-x86_64.dockerfile
> new file mode 100644
> index 000000000000..e0ca8b7e9c91
> --- /dev/null
> +++ b/automation/build/debian/12-x86_64.dockerfile
> @@ -0,0 +1,68 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/amd64 debian:bookworm
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"

This wants to become two LABEL lines.

> +
> +ENV DEBIAN_FRONTEND=noninteractive
> +
> +# build depends
> +RUN <<EOF
> +#!/bin/bash
> +    set -eu

Doesn't this need a `useradd --create-home user` here?

[Edit] Oh, no, because of the script change.  In which case can you note
this in the commit message and says a root container for now, until some
other CI scripts can be adjusted.

> +
> +    apt-get update

apt-get -y


> +    DEPS=(
> +        # Xen
> +        bison
> +        build-essential
> +        checkpolicy
> +        clang
> +        flex
> +
> +        # Tools (general)
> +        ca-certificates

Interestingly, we've gained ca-certificates and dropped apt-transport-https.

ca-certificates is a side effect of --no-install-recommends, so is
fine.  I recall there being a specific reason why we needed
apt-transport-https, but I can't recall why exactly.  Something about
the LetsEncrypt Cert used by xenbits IIRC.

Anthony - do you remember?


> +        expect

Expect is only for the test phase, so should move later.

> +        git-core
> +        libnl-3-dev

libnl-3-dev should be down in the #libxl section.  It's only for COLO
support.

> +        pkg-config
> +        wget
> +        # libxenguest dombuilder
> +        liblzma-dev
> +        zlib1g-dev

This is also fun.  In Ubuntu, I've got:

    libbz2-dev
    libzstd-dev
    liblzo2-dev
    liblzma-dev
    zlib1g-dev

which I think is all the algorithms we support in libxenguest.

Any decompressor which we don't find a suitable devel package gets the
hypervisor form instead.

> +        # To build the documentation
> +        pandoc

I know we had pandoc before, but I'd like to drop it.

I'm intending to turn off docs generally, and do them separately in a
single job that has *all* the docs build dependencies, not a misc subset
that the build system happens not to complain at.


I'm on the fence about the Qemu build things.  It's off by default now,
but the container never previously had meson/ninja so it wouldn't have
built either.  Perhaps leave them out until someone complains.


One thing you did drop which probably wants to stay is golang.  We have
golang bindings for libxl which (like Ocaml) are built conditionally on
finding the toolchain.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 14:27:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 14:27:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825348.1239566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ynn-0004b6-Vj; Thu, 24 Oct 2024 14:27:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825348.1239566; Thu, 24 Oct 2024 14:27: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 1t3ynn-0004az-RF; Thu, 24 Oct 2024 14:27:03 +0000
Received: by outflank-mailman (input) for mailman id 825348;
 Thu, 24 Oct 2024 14:27: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3ynl-00048L-UH
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 14:27:01 +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 0890c943-9214-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 16:27:01 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c9709c9b0cso1290425a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 07:27:01 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b4e4sm5707409a12.61.2024.10.24.07.26.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 07:26:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0890c943-9214-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729780020; x=1730384820; 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=nlxvwzJVPPnRSm1WJDmkyMNWEmqNga8e4AWKAxVxRWA=;
        b=HRCg04WwAOI2f0GqWFgij3bAYN3/FPkao2mC6HtcA5YbFMzjsQFMUDnVBBPFE3gFUO
         KrCO/NkaDkYmE07bYUB8zf5kZktKDN7jSTAFUaCnslgcVx1hT9IIAalsctT+LeY20tXm
         1mZEUC+jYh9+Tj/GrhlgBZO2q+IFHssubHh2E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729780020; x=1730384820;
        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=nlxvwzJVPPnRSm1WJDmkyMNWEmqNga8e4AWKAxVxRWA=;
        b=l98oc41f4kldqQJHaaFP08vXNwH9oYwmab5yzH15o9nAmUAg6j34RbmolBe1vnR6LL
         IGTTQ74w42Uz5CyUIsHlqbkSzYauOaQnSofN5F1Y+rfNvqGidZ51wT1tcccVxSrTazWu
         32mpE8IgMJOfz+gXPr49dMwzt0kRjREsjDRLBkhHFxCZ6aynJQ4dE71uAbZ1UQBFiunx
         HpwCHS6eU5h5uC8eJiLCx7yzJ7GXzDVX3tfRdS0ddcZlxcbnry6QRxoKjY0/O4KKxr/1
         C4cOj/dHeX+pHziwWD6MHSwgm0GZfpkQ7OdhOCgaxPFZHuubOJj2OapROii0DnJNQoBo
         gM3w==
X-Gm-Message-State: AOJu0YzZWnUj39BwdlYJBFzi1l5jPURzeFrXlVQKyzraHny0V7GPMDZO
	vS/nXUszinkbEwVjr9O5//FRQ2jgjmE7TO37EWTfbQQiiA2O9Oryzb7ywqdVX4ry3M66/ZHYHB7
	s
X-Google-Smtp-Source: AGHT+IF9HdVMlJ7LWUwQaPIk62zIToVeIBN+RTzdkSEC2LQrfp3ljwUPiPjrJjR6BLnJNygnDlM/qA==
X-Received: by 2002:a05:6402:3510:b0:5c9:8ac6:5f11 with SMTP id 4fb4d7f45d1cf-5cb8b1cefcamr5190098a12.36.1729780020357;
        Thu, 24 Oct 2024 07:27:00 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 2/5] x86/boot: Introduce bootstrap_unmap()
Date: Thu, 24 Oct 2024 15:26:51 +0100
Message-Id: <20241024142654.989980-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024142654.989980-1-andrew.cooper3@citrix.com>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We're about to introduce alternative mapping functions, and passing NULL was
always a slightly weird way to express unmap.  Make an explicit unmap
function, to avoid having two different valid ways of unmapping.

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: Daniel P. Smith <dpsmith@apertussolutions.com>

v7.5:
 * New
---
 xen/arch/x86/cpu/microcode/core.c |  6 +++---
 xen/arch/x86/include/asm/setup.h  |  2 ++
 xen/arch/x86/pv/dom0_build.c      |  2 +-
 xen/arch/x86/setup.c              | 10 ++++++----
 xen/xsm/xsm_core.c                |  4 ++--
 xen/xsm/xsm_policy.c              |  2 +-
 6 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 1d58cb0f3bc1..cf6517293375 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -198,7 +198,7 @@ static void __init microcode_scan_module(struct boot_info *bi)
             ucode_blob.data = cd.data;
             break;
         }
-        bootstrap_map(NULL);
+        bootstrap_unmap();
     }
 }
 
@@ -763,13 +763,13 @@ static int __init cf_check microcode_init(void)
      */
     if ( ucode_blob.size )
     {
-        bootstrap_map(NULL);
+        bootstrap_unmap();
         ucode_blob.size = 0;
         ucode_blob.data = NULL;
     }
     else if ( ucode_mod.mod_end )
     {
-        bootstrap_map(NULL);
+        bootstrap_unmap();
         ucode_mod.mod_end = 0;
     }
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 811855e57478..8b7843104ff7 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -37,7 +37,9 @@ extern struct boot_info xen_boot_info;
 
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
+
 void *bootstrap_map(const module_t *mod);
+void bootstrap_unmap(void);
 
 int remove_xen_ranges(struct rangeset *r);
 
diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index ee9ecdc2abbf..cdae17b27654 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -830,7 +830,7 @@ static int __init dom0_construct(struct domain *d,
         printk("Failed to load the kernel binary\n");
         goto out;
     }
-    bootstrap_map(NULL);
+    bootstrap_unmap();
 
     if ( UNSET_ADDR != parms.virt_hypercall )
     {
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 8c10fe51dfad..8e32d6c49c54 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -471,13 +471,15 @@ static void *__init bootstrap_map_addr(paddr_t start, paddr_t end)
 
 void *__init bootstrap_map(const module_t *mod)
 {
-    if ( !mod )
-        return bootstrap_map_addr(0, 0);
-
     return bootstrap_map_addr(pfn_to_paddr(mod->mod_start),
                               pfn_to_paddr(mod->mod_start) + mod->mod_end);
 }
 
+void __init bootstrap_unmap(void)
+{
+    bootstrap_map_addr(0, 0);
+}
+
 static void __init move_memory(
     uint64_t dst, uint64_t src, unsigned int size)
 {
@@ -1402,7 +1404,7 @@ void asmlinkage __init noreturn __start_xen(void)
     }
 
     modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
-    bootstrap_map(NULL);
+    bootstrap_unmap();
 
 #ifndef highmem_start
     /* Don't allow split below 4Gb. */
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c
index 6e3fac68c057..f255fb63bf6f 100644
--- a/xen/xsm/xsm_core.c
+++ b/xen/xsm/xsm_core.c
@@ -153,14 +153,14 @@ int __init xsm_multiboot_init(struct boot_info *bi)
         ret = xsm_multiboot_policy_init(bi, &policy_buffer, &policy_size);
         if ( ret )
         {
-            bootstrap_map(NULL);
+            bootstrap_unmap();
             printk(XENLOG_ERR "Error %d initializing XSM policy\n", ret);
             return -EINVAL;
         }
     }
 
     ret = xsm_core_init(policy_buffer, policy_size);
-    bootstrap_map(NULL);
+    bootstrap_unmap();
 
     return 0;
 }
diff --git a/xen/xsm/xsm_policy.c b/xen/xsm/xsm_policy.c
index 6f799dd28f5b..35f36c6f2359 100644
--- a/xen/xsm/xsm_policy.c
+++ b/xen/xsm/xsm_policy.c
@@ -63,7 +63,7 @@ int __init xsm_multiboot_policy_init(
 
         }
 
-        bootstrap_map(NULL);
+        bootstrap_unmap();
     }
 
     return rc;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 14:27:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 14:27:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825349.1239576 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ynq-0004rW-A8; Thu, 24 Oct 2024 14:27:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825349.1239576; Thu, 24 Oct 2024 14:27: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 1t3ynq-0004rL-7Y; Thu, 24 Oct 2024 14:27:06 +0000
Received: by outflank-mailman (input) for mailman id 825349;
 Thu, 24 Oct 2024 14:27: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3yno-00048O-Th
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 14:27:04 +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 09bc6782-9214-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 16:27:03 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c948c41edeso1127887a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 07:27:03 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b4e4sm5707409a12.61.2024.10.24.07.27.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 07:27:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 09bc6782-9214-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729780022; x=1730384822; 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=k/1V36zu8pl8T7xYRf9La+mccrttDt5v1Zny77BeDlA=;
        b=oLJXcoQ2tWqUqHnNg+vTYDB7AFRbqlJHm0KRL/prGZ71CjRDGlpbhv9jXIRYnmv4OC
         UUr7wpjePTYUoEg7p+0REsrFv1WlcMwFSvg5DgZx9SIqdxayY/L3lj30pFt1zmWtAA4B
         4baywjGUwXtAKogEvcGJ2ljfkphOhC5pU5vSA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729780022; x=1730384822;
        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=k/1V36zu8pl8T7xYRf9La+mccrttDt5v1Zny77BeDlA=;
        b=UZCl0vN4CjEAPsHHRwy3izVJbS7/FwXeTsuY3PGkFV56eSSgKVCbyE8Yez8NsaMW9n
         2axhFktbQARLQ7tsvY0DxNA7jBSSIvg2onxhSK45ASgsPpjTKC6LKJc1HcqRJjwbPqkJ
         +wjI+QbB2oyMZDDli0F4Og1dkLIHTxM2QU9dEXsjOA+zbMszECceSRLAYM6Gf2elL4EA
         UGzsF4/FMvt2vr/55EkJ60PgknIv7bU096NHqiCzPCGsObtal4QC8WVsXUUgrcy1Jzbn
         iDDUaEjvaR+LFsz6MgGLg2JItOqJev8McFk/DIle0Q76GBjBaEK2UPH+XqrO2WhGAk8u
         pwEA==
X-Gm-Message-State: AOJu0YwnLaVWKU/WhSr82VXShwK9vKcToHETQiCf7rEyoD4uEcGuLZAE
	zN4Y8dqivOwCt18PB0aFoXkdTpiJwPS1i7wM6T9QZuWYQ79Bl7OzDmsKU93kZy02T62QLwFMLEL
	l
X-Google-Smtp-Source: AGHT+IH6p9gdO0AX6mLGCwEkRJD/oDfxz+x/AJPocHh/3hD6qDzdaNJNyDPqbrO7R32Qwdz4y9sHdg==
X-Received: by 2002:a05:6402:254b:b0:5ca:da2:b2ca with SMTP id 4fb4d7f45d1cf-5cb8acba591mr6178431a12.19.1729780021899;
        Thu, 24 Oct 2024 07:27:01 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 3/5] x86/boot: Introduce bootstrap_map_bm() to map boot_module's
Date: Thu, 24 Oct 2024 15:26:52 +0100
Message-Id: <20241024142654.989980-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024142654.989980-1-andrew.cooper3@citrix.com>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: "Daniel P. Smith" <dpsmith@apertussolutions.com>

Convert converting the call to bzimage_headroom(), as well as using
bi->mod[0].  It will be used externally by later changes.

No functional change.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

v7.5:
 * Refectored/extracted from later in the series.
---
 xen/arch/x86/include/asm/setup.h | 2 ++
 xen/arch/x86/setup.c             | 9 ++++++++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 8b7843104ff7..4874ee8936fc 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -38,6 +38,8 @@ extern struct boot_info xen_boot_info;
 unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
 
+struct boot_module;
+void *bootstrap_map_bm(const struct boot_module *bm);
 void *bootstrap_map(const module_t *mod);
 void bootstrap_unmap(void);
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 8e32d6c49c54..ee03725af380 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -475,6 +475,11 @@ void *__init bootstrap_map(const module_t *mod)
                               pfn_to_paddr(mod->mod_start) + mod->mod_end);
 }
 
+void *__init bootstrap_map_bm(const struct boot_module *bm)
+{
+    return bootstrap_map(bm->mod);
+}
+
 void __init bootstrap_unmap(void)
 {
     bootstrap_map_addr(0, 0);
@@ -1403,7 +1408,9 @@ void asmlinkage __init noreturn __start_xen(void)
         mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
     }
 
-    modules_headroom = bzimage_headroom(bootstrap_map(mod), mod->mod_end);
+    modules_headroom =
+        bzimage_headroom(bootstrap_map_bm(&bi->mods[0]),
+                         bi->mods[0].mod->mod_end);
     bootstrap_unmap();
 
 #ifndef highmem_start
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 14:27:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 14:27:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825350.1239586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ynr-00057U-JU; Thu, 24 Oct 2024 14:27:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825350.1239586; Thu, 24 Oct 2024 14:27: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 1t3ynr-00057H-Eb; Thu, 24 Oct 2024 14:27:07 +0000
Received: by outflank-mailman (input) for mailman id 825350;
 Thu, 24 Oct 2024 14:27: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3ynq-00048L-FE
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 14:27:06 +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 0b4e705e-9214-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 16:27:06 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5cb72918bddso1308115a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 07:27:05 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b4e4sm5707409a12.61.2024.10.24.07.27.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 07:27:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b4e705e-9214-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729780025; x=1730384825; 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=26Kd1CZ5EW/rvd6sicVOHZnpVwSK6DqF92g9LkP2sKY=;
        b=LN+agBkzDbFDIvYPJbL2oCjm+JIKTvqpG7orGYGYkm67zySfejSgGW632EavNqqYkt
         Ytk9NBc8n6/aFFwBFlcOa3n8GFcQW9JfzkAPDnWpDkmc8xFcXzyKd0xs+50+1p5CQXaQ
         Cj5jOhqRIbo4izFyf2QTm1f4AuA3sCRI7mD8U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729780025; x=1730384825;
        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=26Kd1CZ5EW/rvd6sicVOHZnpVwSK6DqF92g9LkP2sKY=;
        b=EaPW3NBA7lrBk80fh2Tt/ywLThLahF0ip5ue1a2f0NSb2kXMIZwbqO35gEw9bZBAlv
         +eXexfpMEfaeK5o9JuBFndlvWfXbH9cBor3BFJCR2JxTbfFAfT0zmeoakp4lqebnb7hc
         Ue9y5Z0t4OXkuYuvQ4uwcKMSsvL2rSr79iUH2enOfBFpkj2k1UF3fCJ8OPDuQrf8Cin8
         cYDkNgdQvv85jxzh4YkuKKvGvlzuuf6EJhhDz6WK8ZGbSO2hd8pOAkhGmsILfTQYePfu
         IcRa91VuEGwUHphGjvQbthSVovrDOLvHiOQejPto+/fI0NaoREtWaYsr19MwmwNRX5P9
         mdDg==
X-Gm-Message-State: AOJu0YxKGDBx8GKnn9EPVcfdbbR0LfPLDVoqo4B0MyGogqPiWdTo/rRj
	NSHmmBFXKct/ogG4hJxGhbfRdyke+eyZCHR8lCLQuxFdXw2BiWeVjeP+DodhzUn+s1KmL8VBBMR
	J
X-Google-Smtp-Source: AGHT+IHeJl50mZDISF1NQ6MLFe8fQzTOtXWRCvcbgTukvJ7hfs09TarAKjqp3QVYBzCgBU1kJbcCyw==
X-Received: by 2002:a05:6402:254d:b0:5c9:4281:4515 with SMTP id 4fb4d7f45d1cf-5cb8acb7b0amr5833462a12.17.1729780024768;
        Thu, 24 Oct 2024 07:27:04 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 5/5] x86/boot: Drop the mbi and mod pointers in __start_xen()
Date: Thu, 24 Oct 2024 15:26:54 +0100
Message-Id: <20241024142654.989980-6-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024142654.989980-1-andrew.cooper3@citrix.com>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We can't drop them fully yet, but we can limit their scope to almost nothing,
which serves the same purpose.

This removes the ability to accidentally reintroduce buggy uses of
__va(mbi->mods_addr).

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: Daniel P. Smith <dpsmith@apertussolutions.com>

v7.5:
 * New
---
 xen/arch/x86/setup.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 5413e1c71be6..511cf5b97909 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1026,8 +1026,6 @@ void asmlinkage __init noreturn __start_xen(void)
     struct cpu_info *info = get_cpu_info(), *bsp_info;
     unsigned int initrdidx, num_parked = 0;
     struct boot_info *bi;
-    multiboot_info_t *mbi;
-    module_t *mod;
     unsigned long nr_pages, raw_max_page, modules_headroom, module_map[1];
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
@@ -1063,16 +1061,22 @@ void asmlinkage __init noreturn __start_xen(void)
 
     if ( pvh_boot )
     {
+        multiboot_info_t *mbi;
+        module_t *mod;
+
         pvh_init(&mbi, &mod);
         /*
          * mbi and mod are regular pointers to .initdata.  These remain valid
          * across move_xen().
          */
+
+        bi = multiboot_fill_boot_info(mbi, mod);
     }
     else
     {
-        mbi = __va(multiboot_ptr);
-        mod = __va(mbi->mods_addr);
+        multiboot_info_t *mbi = __va(multiboot_ptr);
+
+        bi = multiboot_fill_boot_info(mbi, __va(mbi->mods_addr));
 
         /*
          * For MB1/2, mbi and mod are directmap pointers into the trampoline.
@@ -1085,12 +1089,8 @@ void asmlinkage __init noreturn __start_xen(void)
         ASSERT(multiboot_ptr < MB(1) || xen_phys_start);
     }
 
-    bi = multiboot_fill_boot_info(mbi, mod);
     bi->module_map = module_map; /* Temporary */
 
-    /* Use bi-> instead */
-#define mbi DO_NOT_USE
-
     /* Parse the command-line options. */
     if ( (kextra = strstr(bi->cmdline, " -- ")) != NULL )
     {
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 14:27:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 14:27:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825346.1239545 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ynm-00048t-H6; Thu, 24 Oct 2024 14:27:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825346.1239545; Thu, 24 Oct 2024 14:27: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 1t3ynm-00048m-EX; Thu, 24 Oct 2024 14:27:02 +0000
Received: by outflank-mailman (input) for mailman id 825346;
 Thu, 24 Oct 2024 14:27: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3ynl-00048L-6M
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 14:27:01 +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 07b73ecc-9214-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 16:27:00 +0200 (CEST)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5c9362c26d8so3732613a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 07:27:00 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b4e4sm5707409a12.61.2024.10.24.07.26.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 07:26:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 07b73ecc-9214-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729780019; x=1730384819; 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=dVXd7SoQfi1YRwuP/bchb8oFe7nMu7FPsr69BeMQRRM=;
        b=h/zWW9hfot0jC6bq1GDu4wIZadz8TduqHvPgF9xie0DvIp+FPMlG1oh9qJfmRkqNkx
         NG2znVzaCjZpfLy5QUysl2SPcp0pJ9QnN4mH4U+SAVNys3mtYmt41X9BAs1znEvQmjYj
         wAcfDIHmR7ItKlNeX75M50WCBeoWJsyAvGIsk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729780019; x=1730384819;
        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=dVXd7SoQfi1YRwuP/bchb8oFe7nMu7FPsr69BeMQRRM=;
        b=ho+VXHkrhCsD0JE+40wtqz+gDAEAqGAI4zSU/aT/qaNUIrWSB4piCro2kndT2kf7jf
         N5TOJenNubGKhhXxRAx61R7LZ5jtYQHWqx7lqRNZUhtnxuf4gdkR6fTsnmmbFCtoeSJy
         q/SrzT50sVsBvWtNiHgcPCOS8ZxYFv36qWIrXa2Jgjb7nfsfb9N3RCHXGNFx23qpE/Yr
         zXQZ/Yzv+NHFj9Ucg1jHsOKpz4wKSSFdi1bhMW+3UymQhvZBBoc1TZE7oT8z/31XaYks
         iSj5RkkbKZQLXtjmfH9TIbPayJlmrf+jIMWQ+wpGMEE2aPZjJY6nHWigOIJ+zFQJMh2M
         jLvA==
X-Gm-Message-State: AOJu0Yxb85EVYcKTG6u7TmdhJ2aPZ0tmkh6OLeVQ+XxGA5SusJ8dHfBa
	YoCJtRQJ7jL1Rxr+7/Eb7OA6vPJ46qBW99PCY6LwRu3OFefv2XJoirT3/Es5JajGI1BS/qrP9cK
	d
X-Google-Smtp-Source: AGHT+IFdW0kax42rLgItyEEOWYAkOto/YtbLa80UVJKfCn0MH9m2V6QJhdd1EQujAwwV3XZEmg7iFA==
X-Received: by 2002:a05:6402:538d:b0:5c5:c2a7:d535 with SMTP id 4fb4d7f45d1cf-5cba208256bmr2588565a12.16.1729780018684;
        Thu, 24 Oct 2024 07:26:58 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 1/5] x86/boot: Drop initial_images pointer
Date: Thu, 24 Oct 2024 15:26:50 +0100
Message-Id: <20241024142654.989980-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024142654.989980-1-andrew.cooper3@citrix.com>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: "Daniel P. Smith" <dpsmith@apertussolutions.com>

Now that the module list is encapsulated inside boot_info, we can do away with
the initial_images pointer.

No functional change.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

v7.5:
 * Rearranged from several later patches
---
 xen/arch/x86/setup.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index fc18ba3e35b5..8c10fe51dfad 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -276,8 +276,6 @@ custom_param("acpi", parse_acpi_param);
 
 static const char *cmdline_cook(const char *p, const char *loader_name);
 
-static const module_t *__initdata initial_images;
-
 struct boot_info __initdata xen_boot_info = {
     .loader = "unknown",
     .cmdline = "",
@@ -332,8 +330,8 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
 
     for ( nr = i = 0; i < bi->nr_modules; ++i )
     {
-        unsigned long start = initial_images[i].mod_start;
-        unsigned long end = start + PFN_UP(initial_images[i].mod_end);
+        unsigned long start = bi->mods[i].mod->mod_start;
+        unsigned long end   = start + PFN_UP(bi->mods[i].mod->mod_end);
 
         if ( end > node_start && node_end > start )
             nr += min(node_end, end) - max(node_start, start);
@@ -349,14 +347,13 @@ void __init discard_initial_images(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t start = (uint64_t)initial_images[i].mod_start << PAGE_SHIFT;
+        uint64_t start = pfn_to_paddr(bi->mods[i].mod->mod_start);
 
         init_domheap_pages(start,
-                           start + PAGE_ALIGN(initial_images[i].mod_end));
+                           start + PAGE_ALIGN(bi->mods[i].mod->mod_end));
     }
 
     bi->nr_modules = 0;
-    initial_images = NULL;
 }
 
 static void __init init_idle_domain(void)
@@ -1376,8 +1373,6 @@ void asmlinkage __init noreturn __start_xen(void)
     set_kexec_crash_area_size((u64)nr_pages << PAGE_SHIFT);
     kexec_reserve_area();
 
-    initial_images = mod;
-
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
         if ( mod[i].mod_start & (PAGE_SIZE - 1) )
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 14:27:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 14:27:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825347.1239552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3ynm-0004B0-R1; Thu, 24 Oct 2024 14:27:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825347.1239552; Thu, 24 Oct 2024 14:27: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 1t3ynm-0004Ae-KT; Thu, 24 Oct 2024 14:27:02 +0000
Received: by outflank-mailman (input) for mailman id 825347;
 Thu, 24 Oct 2024 14:27: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3ynl-00048O-Dd
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 14:27:01 +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 076dc871-9214-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 16:26:59 +0200 (CEST)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2fb443746b8so10147081fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 07:26:59 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b4e4sm5707409a12.61.2024.10.24.07.26.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 07:26:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 076dc871-9214-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729780018; x=1730384818; 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=HQn6if9ekWW0MVda6U/yRZVQvqrGPOmcVRtM007BrxE=;
        b=I7t/9tgenlDr70MzA7dTdG4e6az5wofLwV5r1s8a+5hd4fmeGf68M4TvCuCnbhzwXQ
         JJIoDrjBk3gCXrkwCWlXhuALBDFcznCVISXLToLwQrN9dKAuPyD5shCQVrxDxBzx2jyS
         4Pq8USgzt2fiLG4hri5HwxELg18N+kmvSESaI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729780018; x=1730384818;
        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=HQn6if9ekWW0MVda6U/yRZVQvqrGPOmcVRtM007BrxE=;
        b=CSSpiy6KyemJtx7cYPumwQOKEEHayvKueRJOnLuLqTkFb1RJ7sG8Zk6PWgSawsYpGu
         bhKsZuNMGNs8jodUXA4msKKzJAA/k1PaaruIpF2+45RP5PZdzg1VbW+3AeMtSVk8OI7s
         LVwDZcmkKpYTbM7SFA4M0eT5Ma51HAzP+VRMjfnC+LfK5nJiTyBN5NhHxID0BgRdp8wJ
         f/HPdR/Fzguk0FJ4RXPEJxggfGC2ihxiHLUBHJQ63mfqnf6ci+aP4xj5jBndvbxAZq8s
         9rK7AEXUSuDHMnsyFDv31MAbrOs6jf+Q61VILOzl9Ftw1xL6Tf4FJY2JYvEo28RkELET
         co/Q==
X-Gm-Message-State: AOJu0Yy3Y0nXM1Ep0yjgAQ6v9oV1B49603QAChATwk6TmXlEMC7LEcRN
	zlGo4WXBP8juj+pm3GrnkLknDmI4wcifb7JOwUnq0V7JMVKksPmbC9Agf4QbVE2j4+Cp/+39q5m
	r
X-Google-Smtp-Source: AGHT+IGBaIg5dld97J2YFf12AVU4jvb0j6B5FH9DyyEl5ZFJuk5cn/12xzqmIzCmUoXr2nmVXJWfww==
X-Received: by 2002:a2e:4a12:0:b0:2fb:599a:a8e9 with SMTP id 38308e7fff4ca-2fca820a0fbmr11626381fa.15.1729780017912;
        Thu, 24 Oct 2024 07:26:57 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH 0/5] x86/boot: Remove the mbi/mod pointers
Date: Thu, 24 Oct 2024 15:26:49 +0100
Message-Id: <20241024142654.989980-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This prevents the reintroduction of patterns which turn out to be unsafe for
PVH boots.  Various bits extracted/rearranged from the Hyperlaunch v7 series.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1509397930

Andrew Cooper (2):
  x86/boot: Introduce bootstrap_unmap()
  x86/boot: Drop the mbi and mod pointers in __start_xen()

Daniel P. Smith (3):
  x86/boot: Drop initial_images pointer
  x86/boot: Introduce bootstrap_map_bm() to map boot_module's
  x86/boot: Convert mod[] to bi->mods[] in __start_xen()

 xen/arch/x86/cpu/microcode/core.c |   6 +-
 xen/arch/x86/include/asm/setup.h  |   4 ++
 xen/arch/x86/pv/dom0_build.c      |   2 +-
 xen/arch/x86/setup.c              | 107 ++++++++++++++++--------------
 xen/xsm/xsm_core.c                |   4 +-
 xen/xsm/xsm_policy.c              |   2 +-
 6 files changed, 70 insertions(+), 55 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 14:27:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 14:27:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825351.1239596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3yns-0005Oy-QR; Thu, 24 Oct 2024 14:27:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825351.1239596; Thu, 24 Oct 2024 14:27: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 1t3yns-0005O8-Ne; Thu, 24 Oct 2024 14:27:08 +0000
Received: by outflank-mailman (input) for mailman id 825351;
 Thu, 24 Oct 2024 14:27: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t3ynr-00048O-4m
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 14:27:07 +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 0afba90a-9214-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 16:27:05 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c957d8bce2so510635a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 07:27:05 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b4e4sm5707409a12.61.2024.10.24.07.27.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 07:27:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0afba90a-9214-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729780024; x=1730384824; 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=hkGTFmIsU8uVl1vUxZAmxH9TN/jWgRT2CVKi7nypqKo=;
        b=kgCXbykcUw0gGRmGf6wSTmo6C8NZE0lXcwCsNn152Yv73OQOZPXePPzrhWNZ+VwzSu
         NPaM8x9oZeJj8Y5CPul11qgxwuEXzn3SKMq9POt8PD6ZhoRGN+OPRqakBw1iIxlGdiID
         jtM1jHs28nZv8Wu5AzLqgCsqTSlnxc9IX61fE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729780024; x=1730384824;
        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=hkGTFmIsU8uVl1vUxZAmxH9TN/jWgRT2CVKi7nypqKo=;
        b=xVZD//rXhOc5H6Cu2Rfe+fujad2e2VGSjGe9hhpUct9RTytClrOOYhY1gOmgCjM8tP
         1WW/ai3nUQcHHsBPMyQMeNMIJD+3K3i7pl4KZsip8KNBAUJfsEEvqnP+vh5qe5AJbQ9q
         fBpGdZu7kuNmRKqGbioIn/MDrDMe2B/l6B2GPxczKxNaIhkyPoB1RUy84TUBtH3JB9Iq
         VGfRLpkGbECV0hYwUWVOhFsRw1bcm603ynZf9OtV8bPmZS5Aj07BFecl0U/59SPCWn1c
         ebncySXJBxmA2b/Z4wW8BAzWSxGbnhICmMwI47bxCQXWJILHoJ+kAtl+Ua0FaSrcFh0o
         D10A==
X-Gm-Message-State: AOJu0YyEeSaPXcSnBIqAlnOiUiIjqJsLnqv6Ggn2CcJRPO+IkgQvuXrY
	HXh+tI7roz+ch8srdJ3M8BXaIKXEH435ZVTEbhgoablU/0JIz/3qQ/6PMfnHX8w8LIAHRnHAePq
	a
X-Google-Smtp-Source: AGHT+IGFmhwnmNKSrxMQ2nLtOFpPT2TfElRIUQMDZRSNandfpDYCYSVT9qRaApu/eTcVnyxk677kEQ==
X-Received: by 2002:a05:6402:3489:b0:5c9:48df:713c with SMTP id 4fb4d7f45d1cf-5cb8af7defbmr6676395a12.2.1729780023866;
        Thu, 24 Oct 2024 07:27:03 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 4/5] x86/boot: Convert mod[] to bi->mods[] in __start_xen()
Date: Thu, 24 Oct 2024 15:26:53 +0100
Message-Id: <20241024142654.989980-5-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024142654.989980-1-andrew.cooper3@citrix.com>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: "Daniel P. Smith" <dpsmith@apertussolutions.com>

The former is about to disappear.

In some cases, introduce a local struct boot_module pointer.  Judgement on
where to do this, and on constness, is based on what creates least churn
overall.

No functional change.

Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

v7.5:
 * Rearranged from several later patches
---
 xen/arch/x86/setup.c | 59 +++++++++++++++++++++++++-------------------
 1 file changed, 33 insertions(+), 26 deletions(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index ee03725af380..5413e1c71be6 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1382,11 +1382,11 @@ void asmlinkage __init noreturn __start_xen(void)
 
     for ( i = 0; !efi_enabled(EFI_LOADER) && i < bi->nr_modules; i++ )
     {
-        if ( mod[i].mod_start & (PAGE_SIZE - 1) )
+        if ( bi->mods[i].mod->mod_start & (PAGE_SIZE - 1) )
             panic("Bootloader didn't honor module alignment request\n");
-        mod[i].mod_end -= mod[i].mod_start;
-        mod[i].mod_start >>= PAGE_SHIFT;
-        mod[i].reserved = 0;
+        bi->mods[i].mod->mod_end -= bi->mods[i].mod->mod_start;
+        bi->mods[i].mod->mod_start >>= PAGE_SHIFT;
+        bi->mods[i].mod->reserved = 0;
     }
 
     /*
@@ -1397,6 +1397,8 @@ void asmlinkage __init noreturn __start_xen(void)
 
     if ( xen_phys_start )
     {
+        struct boot_module *xen = &bi->mods[bi->nr_modules];
+
         relocated = true;
 
         /*
@@ -1404,8 +1406,8 @@ void asmlinkage __init noreturn __start_xen(void)
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
-        mod[bi->nr_modules].mod_start = virt_to_mfn(_stext);
-        mod[bi->nr_modules].mod_end = __2M_rwdata_end - _stext;
+        xen->mod->mod_start = virt_to_mfn(_stext);
+        xen->mod->mod_end   = __2M_rwdata_end - _stext;
     }
 
     modules_headroom =
@@ -1490,15 +1492,17 @@ void asmlinkage __init noreturn __start_xen(void)
         /* Is the region suitable for relocating the multiboot modules? */
         for ( j = bi->nr_modules - 1; j >= 0; j-- )
         {
+            struct boot_module *bm = &bi->mods[j];
+
             /*
              * 'headroom' is a guess for the decompressed size and
              * decompressor overheads of mod[0] (the dom0 kernel).  When we
              * move mod[0], we incorporate this as extra space at the start.
              */
             unsigned long headroom = j ? 0 : modules_headroom;
-            unsigned long size = PAGE_ALIGN(headroom + mod[j].mod_end);
+            unsigned long size = PAGE_ALIGN(headroom + bm->mod->mod_end);
 
-            if ( mod[j].reserved )
+            if ( bm->mod->reserved )
                 continue;
 
             /* Don't overlap with other modules (or Xen itself). */
@@ -1510,14 +1514,13 @@ void asmlinkage __init noreturn __start_xen(void)
 
             if ( s < end &&
                  (headroom ||
-                  ((end - size) >> PAGE_SHIFT) > mod[j].mod_start) )
+                  ((end - size) >> PAGE_SHIFT) > bm->mod->mod_start) )
             {
                 move_memory(end - size + headroom,
-                            (uint64_t)mod[j].mod_start << PAGE_SHIFT,
-                            mod[j].mod_end);
-                mod[j].mod_start = (end - size) >> PAGE_SHIFT;
-                mod[j].mod_end += headroom;
-                mod[j].reserved = 1;
+                            pfn_to_paddr(bm->mod->mod_start), bm->mod->mod_end);
+                bm->mod->mod_start = (end - size) >> PAGE_SHIFT;
+                bm->mod->mod_end += headroom;
+                bm->mod->reserved = 1;
             }
         }
 
@@ -1543,13 +1546,14 @@ void asmlinkage __init noreturn __start_xen(void)
 #endif
     }
 
-    if ( modules_headroom && !mod->reserved )
+    if ( modules_headroom && !bi->mods[0].mod->reserved )
         panic("Not enough memory to relocate the dom0 kernel image\n");
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        uint64_t s = (uint64_t)mod[i].mod_start << PAGE_SHIFT;
+        const struct boot_module *bm = &bi->mods[i];
+        uint64_t s = pfn_to_paddr(bm->mod->mod_start);
 
-        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(mod[i].mod_end));
+        reserve_e820_ram(&boot_e820, s, s + PAGE_ALIGN(bm->mod->mod_end));
     }
 
     if ( !xen_phys_start )
@@ -1627,8 +1631,8 @@ void asmlinkage __init noreturn __start_xen(void)
                 map_e = boot_e820.map[j].addr + boot_e820.map[j].size;
                 for ( j = 0; j < bi->nr_modules; ++j )
                 {
-                    uint64_t end = pfn_to_paddr(mod[j].mod_start) +
-                                   mod[j].mod_end;
+                    uint64_t end = pfn_to_paddr(bi->mods[j].mod->mod_start) +
+                                   bi->mods[j].mod->mod_end;
 
                     if ( map_e < end )
                         map_e = end;
@@ -1702,11 +1706,13 @@ void asmlinkage __init noreturn __start_xen(void)
 
     for ( i = 0; i < bi->nr_modules; ++i )
     {
-        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),
-                         _mfn(mod[i].mod_start),
-                         PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
+        const struct boot_module *bm = &bi->mods[i];
+
+        set_pdx_range(bm->mod->mod_start,
+                      bm->mod->mod_start + PFN_UP(bm->mod->mod_end));
+        map_pages_to_xen((unsigned long)mfn_to_virt(bm->mod->mod_start),
+                         _mfn(bm->mod->mod_start),
+                         PFN_UP(bm->mod->mod_end), PAGE_HYPERVISOR);
     }
 
 #ifdef CONFIG_KEXEC
@@ -2095,8 +2101,9 @@ void asmlinkage __init noreturn __start_xen(void)
      * We're going to setup domain0 using the module(s) that we stashed safely
      * above our heap. The second module, if present, is an initrd ramdisk.
      */
-    dom0 = create_dom0(mod, modules_headroom,
-                       initrdidx < bi->nr_modules ? mod + initrdidx : NULL,
+    dom0 = create_dom0(bi->mods[0].mod, modules_headroom,
+                       initrdidx < bi->nr_modules ? bi->mods[initrdidx].mod
+                                                  : NULL,
                        kextra, bi->loader);
     if ( !dom0 )
         panic("Could not set up DOM0 guest OS\n");
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:10:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:10:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825396.1239606 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zT1-0005F1-1r; Thu, 24 Oct 2024 15:09:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825396.1239606; Thu, 24 Oct 2024 15: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 1t3zT0-0005Eu-UR; Thu, 24 Oct 2024 15:09:38 +0000
Received: by outflank-mailman (input) for mailman id 825396;
 Thu, 24 Oct 2024 15:09: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=sQmA=RU=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3zSz-0005Eo-Kg
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:09:37 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fa418e8a-9219-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 17:09:35 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729782569100520.8284390440086;
 Thu, 24 Oct 2024 08:09:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa418e8a-9219-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729782570; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=KEqHjUROvZSoXGFSMgzZtw27qDNwHvspLxo8bo5nt0AurXlZkzRYWOEIf4658XGT0BBa0WE5Je4UwhPBDHHqqyQa/BbfH9omHvR7fOZcOKVm3HSP030I/VUgcWWIwbNlcLv/OSAEI2Q1vGB8ULzV8JX52uRGbq5a2djOnbDEGj0=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729782570; 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=SuHlAeyInqvMrMbZWA26jNsE0/fD6TA4egxUAF7gkd4=; 
	b=YqcaWopHYbJW9j4Cgbm0bj9kDFnTEawWZ6hHsI6G6OGe8qMln7717ta1WQHLCViGklJZOCq1quF214wSMu6KGHiq7Bm5oZDH4I/RhzrUJicr/HvJuIb1DZroAxLuZ1Vik972GnVqQiYwGqYSypyz2sPm1hHXxR5Z43MnuDEMQFY=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729782570;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=SuHlAeyInqvMrMbZWA26jNsE0/fD6TA4egxUAF7gkd4=;
	b=jp+r/A5cMOq4CyM4eGbvWUC4T0QQWD1qYxz+3pnC+c0BDiwZZZVcpLbbTMsyNE0f
	B2uxAipNPrdlgsk/814iTmpK00yfbujp4OfeBQucMjHXzBt75ZqTPOT8rpOzqlhQoGg
	v8asRo66bIK7xvkuzHZD01D9EaFNUIdWj8TQV6fs=
Message-ID: <3e26a4ae-0dfc-4580-a5be-0923ef338a79@apertussolutions.com>
Date: Thu, 24 Oct 2024 11:09:27 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/5] x86/boot: Drop initial_images pointer
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>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
 <20241024142654.989980-2-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241024142654.989980-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/24/24 10:26, Andrew Cooper wrote:
> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
> 
> Now that the module list is encapsulated inside boot_info, we can do away with
> the initial_images pointer.
> 
> No functional change.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:10:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:10:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825401.1239616 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zTf-0006e0-8z; Thu, 24 Oct 2024 15:10:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825401.1239616; Thu, 24 Oct 2024 15: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 1t3zTf-0006dt-6N; Thu, 24 Oct 2024 15:10:19 +0000
Received: by outflank-mailman (input) for mailman id 825401;
 Thu, 24 Oct 2024 15: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=sQmA=RU=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3zTe-0005Eo-5I
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:10:18 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 131d92d2-921a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 17:10:17 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729782610624950.495973368562;
 Thu, 24 Oct 2024 08:10:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 131d92d2-921a-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729782612; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=QgJa2RusdGoPNNsn1m+pnaYG6PBS3v+6ovj95AjNg9HLYBaTYPfQngbJ42Th+kWCST+6upeX2bnnGICD2jv9+dM47sVULjPnhV6hF0afetRXj+oqGsej4J68xmG4DrsgvGe2NlHWchn28qub/YXIdl09lGYYiJhl1a3GxjIFd1U=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729782612; 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=Pyo69ORJ440As5EWbOfx2/6qDjh5nZirj38C/FfCvAI=; 
	b=ef4Q377SCJpXQ8OYrPiQPF4h3aEVp/TDMbhX9rGOGTWVzniYiEWKGsk/VyjLx/6XUd4gbUgaG0aoptNo74AoQ7JpJHG8c+f5p5AqyaWDcwVyT7J1Je9jtpvryNGJMkbdxgG6Lmt+ubhyZVXzW0jz23+d67A/OTUMlI8+4/bSMNs=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729782612;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=Pyo69ORJ440As5EWbOfx2/6qDjh5nZirj38C/FfCvAI=;
	b=MZPriIRglCsnyLRJu59I3ARV5zHZdNLtzKvsXmc11RQ0BL3hhVYDQhJZ4HbmzMb+
	qYKrhOny4RvYQvjgJZ6qjfJrwByn5dUwvMUOTZMVcq1y6cPmAtoHaS7rkVoYyZ+KrRF
	lo1CdSqvJQZudUivYWuxVxXJaysEw/c6YooFNsrg=
Message-ID: <74f65fc9-be43-499c-b22c-d5364b887208@apertussolutions.com>
Date: Thu, 24 Oct 2024 11:10:09 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/5] x86/boot: Introduce bootstrap_unmap()
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>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
 <20241024142654.989980-3-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241024142654.989980-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/24/24 10:26, Andrew Cooper wrote:
> We're about to introduce alternative mapping functions, and passing NULL was
> always a slightly weird way to express unmap.  Make an explicit unmap
> function, to avoid having two different valid ways of unmapping.
> 
> 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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:10:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:10:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825406.1239627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zU7-00079d-KT; Thu, 24 Oct 2024 15:10:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825406.1239627; Thu, 24 Oct 2024 15: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 1t3zU7-00079V-GR; Thu, 24 Oct 2024 15:10:47 +0000
Received: by outflank-mailman (input) for mailman id 825406;
 Thu, 24 Oct 2024 15:10: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=dalx=RU=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t3zU6-0006cH-9R
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:10:46 +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 2417972b-921a-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 17:10:44 +0200 (CEST)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-539f2b95775so1200456e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 08:10:44 -0700 (PDT)
Received: from premium-test ([185.25.67.249]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91572c37sm639201966b.172.2024.10.24.08.10.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 08:10:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2417972b-921a-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729782644; x=1730387444; 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=6U6qVw/7irrWEc1i5grqs5ziA+o+lodPJTJABdVRrJ4=;
        b=FsNDsJlPLjp67SDfCi3QjFfqPkueJ4C108Ln72bLAlx3/g3EM11+HAXHWnU6ze/uZs
         q+Ljd8wnaFj9IOZlHYy69nyZRDGFSWjZX9jJM6VuToDFxbNcftTVhBD75WTMhVnalfEu
         p5MZhstAyAm77Ce8XF2ugIrz4NWtooFiJs9aE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729782644; x=1730387444;
        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=6U6qVw/7irrWEc1i5grqs5ziA+o+lodPJTJABdVRrJ4=;
        b=eJzb2yjifz4VlGVgdMoNbtXwb12WmYJMkdKkcftWERqFxpPlX0fqzEUnbojL0pe4ba
         fhe4VJJKuciCokGNbAC8cy+Jdpr5F/A+wbysNjS2phQbJuRdaj7Q8iSD47zZ65d9gber
         Wbqh+umkHyO9rd42pBvwhkXLglDRe7VbRAmeIihasS10ZUZPn5nnZfPahtnmCsBjiKRs
         ZvM30qdxhFM3gZbPjKfNcoV5XyCabv7JG+jpf9ZoAh+ZWW1uy+SYq4WCjkKmjEgqVD+A
         gY4HVcd4JFwE5CjBHwsu60JoYpkvg6FHEne2WOpQK1o7PGqw0wavarG69bAlJT4CN5CV
         hFMA==
X-Gm-Message-State: AOJu0YxlF2Hq534jEMVVrhfpCgsgYlxuC+PQETrHcZ5+5tCdnyw6KwQg
	CYDLailiX2rN8/Dyx35D5mlllmL0EnImD6olYfdDab7ezpoUxPJiXKTL4/CjarjTma72l9A040m
	og2c=
X-Google-Smtp-Source: AGHT+IGgKWTSPBoH0sbQaL7/zc7PTTTQyYzshtDwS3MpJu8eMCM6UCMlXMW87prnSKWkn80/lUuqfg==
X-Received: by 2002:a05:6512:10d0:b0:538:9e1e:b06f with SMTP id 2adb3069b0e04-53b1a34414emr6196205e87.27.1729782643808;
        Thu, 24 Oct 2024 08:10:43 -0700 (PDT)
Date: Thu, 24 Oct 2024 16:10:42 +0100
From: Javi Merino <javi.merino@cloud.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, 
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v1 1/6] CI: Refresh the Debian 12 x86_64 container
Message-ID: <opwqn4ewu3pvrmhoikglwzfzu7pwkiht7en4vtnmc755nxphvr@ilgcrk3bo2sa>
References: <cover.1729760501.git.javi.merino@cloud.com>
 <288fcc10dbcbdab1c33ebfb95bedf2366ba64122.1729760501.git.javi.merino@cloud.com>
 <f8452748-067d-48d3-8ed3-3adc98566aa3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f8452748-067d-48d3-8ed3-3adc98566aa3@citrix.com>

On Thu, Oct 24, 2024 at 03:04:10PM +0100, Andrew Cooper wrote:
> On 24/10/2024 11:04 am, Javi Merino wrote:
> > Rework the container to use heredocs for readability, and use
> > apt-get --no-install-recommends to keep the size down.
> >
> > This reduces the size of the (uncompressed) container from 3.44GB to 1.67GB.
> 
> !!
> 
> >
> > Signed-off-by: Javi Merino <javi.merino@cloud.com>
> > ---
> >  automation/build/debian/12-x86_64.dockerfile | 68 ++++++++++++++++++++
> >  automation/build/debian/bookworm.dockerfile  | 57 ----------------
> >  automation/gitlab-ci/build.yaml              | 20 +++---
> >  automation/gitlab-ci/test.yaml               | 14 ++--
> >  automation/scripts/containerize              |  2 +-
> >  5 files changed, 86 insertions(+), 75 deletions(-)
> >  create mode 100644 automation/build/debian/12-x86_64.dockerfile
> >  delete mode 100644 automation/build/debian/bookworm.dockerfile
> >
> > diff --git a/automation/build/debian/12-x86_64.dockerfile b/automation/build/debian/12-x86_64.dockerfile
> > new file mode 100644
> > index 000000000000..e0ca8b7e9c91
> > --- /dev/null
> > +++ b/automation/build/debian/12-x86_64.dockerfile
> > @@ -0,0 +1,68 @@
> > +# syntax=docker/dockerfile:1
> > +FROM --platform=linux/amd64 debian:bookworm
> > +LABEL maintainer.name="The Xen Project" \
> > +      maintainer.email="xen-devel@lists.xenproject.org"
> 
> This wants to become two LABEL lines.

Yes, Anthony pointed it out in another patch.  I have fixed all the
dockerfiles in these series.

> > +
> > +ENV DEBIAN_FRONTEND=noninteractive
> > +
> > +# build depends
> > +RUN <<EOF
> > +#!/bin/bash
> > +    set -eu
> 
> Doesn't this need a `useradd --create-home user` here?
> 
> [Edit] Oh, no, because of the script change.  In which case can you note
> this in the commit message and says a root container for now, until some
> other CI scripts can be adjusted.

I put it in the cover letter. I'll add it to the commit message as
well.

> > +
> > +    apt-get update
> 
> apt-get -y

apt-get update refreshes the package lists.  -y doesn't do anything
here.  It is needed for "apt-get install" below but not for
apt-get update.  It would be needed for "apt-get upgrade", but
we don't.

> > +    DEPS=(
> > +        # Xen
> > +        bison
> > +        build-essential
> > +        checkpolicy
> > +        clang
> > +        flex
> > +
> > +        # Tools (general)
> > +        ca-certificates
> 
> Interestingly, we've gained ca-certificates and dropped apt-transport-https.

ca-certificates is needed for curl, wget or anything that tries to
validate tls certificates.  It is a Recommends of libcurl, as
curl by default validates the ca certificate of https servers.

> ca-certificates is a side effect of --no-install-recommends, so is
> fine.  I recall there being a specific reason why we needed
> apt-transport-https, but I can't recall why exactly.  Something about
> the LetsEncrypt Cert used by xenbits IIRC.

I dropped apt-transport-https because it doesn't make sense to have
it.  apt-transport-https allows apt to access package repositories over https,
but we were installing alongside all the other packages.  apt is never
used again, so giving it the ability to install packages over https is
pointless.

> Anthony - do you remember?
> 
> 
> > +        expect
> 
> Expect is only for the test phase, so should move later.

I put it here because ./configure checks for it.

> > +        git-core
> > +        libnl-3-dev
> 
> libnl-3-dev should be down in the #libxl section.  It's only for COLO
> support.

Moved.

> > +        pkg-config
> > +        wget
> > +        # libxenguest dombuilder
> > +        liblzma-dev
> > +        zlib1g-dev
> 
> This is also fun.  In Ubuntu, I've got:
> 
>     libbz2-dev
>     libzstd-dev
>     liblzo2-dev
>     liblzma-dev
>     zlib1g-dev
> 
> which I think is all the algorithms we support in libxenguest.

I did this in the arm64v8 container and forgot to do it here.  Fixed now.

> Any decompressor which we don't find a suitable devel package gets the
> hypervisor form instead.
> 
> > +        # To build the documentation
> > +        pandoc
> 
> I know we had pandoc before, but I'd like to drop it.
> 
> I'm intending to turn off docs generally, and do them separately in a
> single job that has *all* the docs build dependencies, not a misc subset
> that the build system happens not to complain at.

I had the "build the docs as its own job" in my TODO list and was
going to drop pandoc from this dockerfile then.  I can remove pandoc
in this commit if you prefer.

> I'm on the fence about the Qemu build things.  It's off by default now,
> but the container never previously had meson/ninja so it wouldn't have
> built either.  Perhaps leave them out until someone complains.

I thought I had removed them.  Is there anything else that needs to
go?

> One thing you did drop which probably wants to stay is golang.  We have
> golang bindings for libxl which (like Ocaml) are built conditionally on
> finding the toolchain.

Gah.  Another one that I did in the arm64 container that I forgot to
move here.  I will add golang-go in the next version of the series.

Thanks,
Javi


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:12:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:12:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825414.1239636 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zVR-0007oE-T0; Thu, 24 Oct 2024 15:12:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825414.1239636; Thu, 24 Oct 2024 15: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 1t3zVR-0007o7-QK; Thu, 24 Oct 2024 15:12:09 +0000
Received: by outflank-mailman (input) for mailman id 825414;
 Thu, 24 Oct 2024 15: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=sQmA=RU=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3zVQ-0007nq-F0
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:12:08 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 54c6ec02-921a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 17:12:07 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 172978272180525.09226088286664;
 Thu, 24 Oct 2024 08:12:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 54c6ec02-921a-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729782722; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=B3pQjV9Yaq0S9fQgbXqf4/x+b+nBHnYS0P0erR1Wgb1czr4TVbYSjAoBeG3G89JcpAw97n8j5eCNiIkfd8viB2eWnCUEtZX1aFrE3XoCHTh+5yg5AK/5puFDMtM0JJ0PaNiUbVVHUefW7QITxqVpkhxaZGmWh5uc9jOQ11QsoyE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729782722; 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=j6N9NOYOwBqmSEKJCC4oKh7dEB1KMeWpiyhMYwHhbSg=; 
	b=TvjywW+JbBG24m7+5Pdsn9G9zusvZcRuSdyccv4sNIu/6oFjqTtr47ILjQbu2f8gD9xhFwo8Xhk8Ef3JZIzDsZGWBZLFSP3IAyZsA+5ipfSUD2i54oxsgOmYlpMkavp9NjJgbChdMC5ERCO9VsZlJKmVjydnBUdn34A2WtJIlNA=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729782722;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=j6N9NOYOwBqmSEKJCC4oKh7dEB1KMeWpiyhMYwHhbSg=;
	b=OrDTcvm4+FLSU5Z1CJBFPoqEEMROTMubL7gXlQ5Ty18yePeSOBed3Mt7Ooxeggfs
	EDmOgEI9Tk3YPFoqXEmXMgZPdy1mYaUEC45nB4+BTr+Fcb8H90hCZDx9f+BE7eZ7ryy
	n8fW6pWB4vZdn5/p+kKvHYGWavjB0uB9W58//zSU=
Message-ID: <16e0efe6-4228-41e8-818c-bd8f367051e7@apertussolutions.com>
Date: Thu, 24 Oct 2024 11:12:00 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/5] x86/boot: Introduce bootstrap_map_bm() to map
 boot_module's
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>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
 <20241024142654.989980-4-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241024142654.989980-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/24/24 10:26, Andrew Cooper wrote:
> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
> 
> Convert converting the call to bzimage_headroom(), as well as using
> bi->mod[0].  It will be used externally by later changes.
> 
> No functional change.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:12:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:12:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825419.1239646 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zWC-0008Kl-4P; Thu, 24 Oct 2024 15:12:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825419.1239646; Thu, 24 Oct 2024 15:12: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 1t3zWC-0008Ke-1r; Thu, 24 Oct 2024 15:12:56 +0000
Received: by outflank-mailman (input) for mailman id 825419;
 Thu, 24 Oct 2024 15: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=sQmA=RU=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3zWA-0008KQ-LQ
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:12:54 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 70583a29-921a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 17:12:53 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729782768129726.9905603692962;
 Thu, 24 Oct 2024 08:12:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 70583a29-921a-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729782768; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=JcP9BZQp8Mo7jy7hfc6kFIA3vH0T5mqXh0llJ3P0GlgVM4RtxxXwixxQwjAmNzX7K01fnXfIjnnDdVd9e3i00RFC+mFsethxISS4hyBd8Brjnpp5SNtaT/hq8c+3bczxDf4VgxT6EA5dEtmJuAJni0GLl/ZcYIUVhb/b9YiaAvE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729782768; 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=vJd5uLLnrl8e9OMld2Ym+yz694J+b9nwIxowrs6Pbjk=; 
	b=WTu4TF1THfXA6o8W1uUadoW3rUWVZ63Vcg2xJCQWn9b3sWYgd3Nhn7a5edCogeyHuTIGzVWI6LNBqLC5tCQAuqAX+z6H3fUNF3hvLlmMEILgZHrH2Y5Ae1ViJGk8ZPL6x9MLyUkz8ldiyb9cf1JeiNSnp1ymw7DTwQ+CYuHcYSI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729782768;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=vJd5uLLnrl8e9OMld2Ym+yz694J+b9nwIxowrs6Pbjk=;
	b=fkZxrtHXXAWrzfIgIXxV/rWxda0500V5V/kD117Q0V9swRbX2+Sb2Zy2RtxOwpNp
	NrBXdzSvYBDRCQQvvEgUVVscZ9PYUVDljzMX66MqLAELpF8lVVjcM7ZjB3t041sw7pe
	cKUVsO3GjcuQ0E1uKYIqLmjmEtUn5b9IDXYnujQE=
Message-ID: <ed4758ba-f0ef-493d-9838-7483b2b5aaf5@apertussolutions.com>
Date: Thu, 24 Oct 2024 11:12:46 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/5] x86/boot: Convert mod[] to bi->mods[] in
 __start_xen()
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>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
 <20241024142654.989980-5-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241024142654.989980-5-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/24/24 10:26, Andrew Cooper wrote:
> From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
> 
> The former is about to disappear.
> 
> In some cases, introduce a local struct boot_module pointer.  Judgement on
> where to do this, and on constness, is based on what creates least churn
> overall.
> 
> No functional change.
> 
> Signed-off-by: Daniel P. Smith <dpsmith@apertussolutions.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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:13:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:13:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825425.1239655 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zWl-0000OA-Cg; Thu, 24 Oct 2024 15:13:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825425.1239655; Thu, 24 Oct 2024 15: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 1t3zWl-0000O3-9v; Thu, 24 Oct 2024 15:13:31 +0000
Received: by outflank-mailman (input) for mailman id 825425;
 Thu, 24 Oct 2024 15: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=sQmA=RU=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t3zWj-0000Nl-O9
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:13:29 +0000
Received: from sender3-of-o59.zoho.com (sender3-of-o59.zoho.com
 [136.143.184.59]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8535d19f-921a-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 17:13:28 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729782800246265.8491526642981;
 Thu, 24 Oct 2024 08:13:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8535d19f-921a-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729782803; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=KVCaGVM6gfAtFJGk6o341+111LSkp6pVnGkGQ3G2txzd5hZPfP51MYXDqojMEf3cVf/+X3cmugzP963f2YQbjN2yti4kWvvDbPLEFfpispvoF+HK6D2yvPFknFD5Ubw7wbSGgQ+o2Uo/roTSgMDKNOuHse8Zu2PgZ4A+c4qAc+I=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729782803; 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=jMvXaUmT6cXQJX+jRN5BKMVFAuxlVwX/7AevePB+Hbk=; 
	b=ESbQmVOoAIMpjIH/fCJ08q7h2ZRI9dhAcZqfCYeoGqI3A+Hk2Dk2R9sQkma1IDm9geIHjy0FtlchEp/tGSS2jKvGxIPiwIGdegACqyItLdAuT4zks6R/RKgQKjWeCDZgoyeCdB4I3Ug7SE4NDo91UDHAHhmL0vS7hmbkfhfPC6g=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729782803;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=jMvXaUmT6cXQJX+jRN5BKMVFAuxlVwX/7AevePB+Hbk=;
	b=tX/5nNaJRyoRZw2GO09JMEvHPwoRSnkb1EX5J8er8PAYwcjFhGheJtNPKPp2g/yt
	RC3DuSO6XAWhcVt5HpGc1rxZ2iOTg6e699GU9JuF92UMdWTF191ar9w4OYY5mX4eyA/
	tLIvAcnijUP0k9w2DfCF/GkyvXWEH2Qf6ATOAojg=
Message-ID: <1cdb4d71-a664-4fc0-a6b1-dd80ced2ba7f@apertussolutions.com>
Date: Thu, 24 Oct 2024 11:13:18 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/5] x86/boot: Drop the mbi and mod pointers in
 __start_xen()
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>
References: <20241024142654.989980-1-andrew.cooper3@citrix.com>
 <20241024142654.989980-6-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241024142654.989980-6-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/24/24 10:26, Andrew Cooper wrote:
> We can't drop them fully yet, but we can limit their scope to almost nothing,
> which serves the same purpose.
> 
> This removes the ability to accidentally reintroduce buggy uses of
> __va(mbi->mods_addr).
> 
> 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: Daniel P. Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:22:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:22:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825436.1239666 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zfg-0002XZ-8y; Thu, 24 Oct 2024 15:22:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825436.1239666; Thu, 24 Oct 2024 15: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 1t3zfg-0002XS-5D; Thu, 24 Oct 2024 15:22:44 +0000
Received: by outflank-mailman (input) for mailman id 825436;
 Thu, 24 Oct 2024 15: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=sutq=RU=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1t3zfe-0002XM-Si
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:22:43 +0000
Received: from EUR03-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur03on2062a.outbound.protection.outlook.com
 [2a01:111:f403:260c::62a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cf323eb0-921b-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 17:22:41 +0200 (CEST)
Received: from AS9PR06CA0248.eurprd06.prod.outlook.com (2603:10a6:20b:45f::18)
 by DBBPR08MB6284.eurprd08.prod.outlook.com (2603:10a6:10:20e::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Thu, 24 Oct
 2024 15:22:36 +0000
Received: from AM2PEPF0001C708.eurprd05.prod.outlook.com
 (2603:10a6:20b:45f:cafe::37) by AS9PR06CA0248.outlook.office365.com
 (2603:10a6:20b:45f::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20 via Frontend
 Transport; Thu, 24 Oct 2024 15:22:36 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM2PEPF0001C708.mail.protection.outlook.com (10.167.16.196) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8093.14
 via Frontend Transport; Thu, 24 Oct 2024 15:22:36 +0000
Received: ("Tessian outbound 72f4d55e3d4f:v490");
 Thu, 24 Oct 2024 15:22:35 +0000
Received: from L582c1e044b54.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 C565EE7D-2007-4B10-9B5F-BD2FADE2677B.1; 
 Thu, 24 Oct 2024 15:22:29 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L582c1e044b54.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 24 Oct 2024 15:22:29 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by DU0PR08MB9393.eurprd08.prod.outlook.com (2603:10a6:10:420::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Thu, 24 Oct
 2024 15:22:27 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a8fc:ea0d:baf1:23a%4]) with mapi id 15.20.8093.018; Thu, 24 Oct 2024
 15:22: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: cf323eb0-921b-11ef-a0bf-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=e7X/RkhcpgML1QrewMvgobY9ZmkO1WaRsoul3LsHC4DWr9ayZNzhB3GIS26AcLbrZols20Fcf6dhaswj21w9QbcEzhOUi3R3juEPduDYAuLUj0IACoHFgbKqOebN/JyWKGn2ohbXWapdddBRm8qD7oE+PcqP2m0ozODpk005kuUwEBtxFZdI/YZVi7O9l2T9BMfUfX6KTU/6hVm067ijVMKEg/OJHo8p+Ab5BO1xhCb7QhDWiQiHh1BoBQ5oV6aYigEQ4og/Mit7TBpbQLqQawoRmjPw5dmdtzO6U+NCvwkiSMbp6fDEXMhR62x6wSegg9SzQ76CBXvyW4wK/1NzdA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=hbn9Z4iPvJ/timuYHBf+wC4GNiL5vMGGNDjITu5TMn0=;
 b=FBJGnaOnHA8X2iRNrxbenWDNn6cjowOfxPLkWxXuBjaWGitkX1yqV/B6ydmm5I/QDtnyexKjXwJ1jabpZcGcnP2T+kJOFdudVgyZDkcPwvj7nWr872sSGRmAtdFa2fYJ0HNHR0H4WZQQWomWxJzIptTNtHVhxM8e0E9LvwoWsF4WAVJlnXsOxnB49E+os32EsUuzi0CVgKliDv1wUjcgmjKaNDRSIO9T3zjSUwlJQwECS9DhBXzVzQhw6fyLFbvJ2OX3IXZXr3rgza4iZBD+eYqZHj1MUHCbP35Ss6x+S76x8ewrAXP8RD8nphGNDKeKl30MZkxIp4e243tFbdKqNA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=hbn9Z4iPvJ/timuYHBf+wC4GNiL5vMGGNDjITu5TMn0=;
 b=aEXGHbZx2VyXrMFmJ3S7cE88OnNFvemPREEmvWzHnJMls6bAyq7Om+15BQ52YN6jjjd6G7XsHChN4L4a50uWWwawrOaW3iQGpizMY7aypBcq57tWKzawMq+vGiOHPyfNCFBBdAergIGcN/ovRZ12YMzbZW5nHCMtFWU57PlAraQ=
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=arm.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: d0afff34ad2e0a08
X-TessianGatewayMetadata: PlQMfI/zZJPGOGjD5ZFq6RhoJP1fQ70LIvYBkx/OW5cZxl4CrmzA985NHIIJt98j2+asmttpfT3Nmy4HXYQQouJkx50rXJ1PQnmYAeixg18brKTQH6ybBx3ycNDcD1lXn06Fl+65qAWLPg/1hlS0FGJYQZGmvOSaywhw3MdX+ms=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=S3tlak3ti3RKCGfhJwE7f2t1qUrE4SG032W8s/dAB0PdAHr7pyn1fboe7UEcdlQcV+JP6rXLbp+wT0JTTkRCZoMLCv5vEyaj3UKCaOuoe0EEcg7MaBSMeCV894LDkcvUvli8VEL9m+BHVQPMvVkBmjLrePbrJZmy8ATMLJ3Mg5XBKFoyGBrojWVMoEX33HKQhYhw453XRcrVa6CvRDBaVyVionZFauP2QhVhZ5il9E5IjvESM7/+FqX9Q/KkrDeyGr7qgG+RmjxvGTaEZ4B9FheEjx5X16HA4SAQ+ba1WKbgdCaxSuD7xmTTGBIpJFyzxGXaaD0YtenvzzDFv5KlPA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=hbn9Z4iPvJ/timuYHBf+wC4GNiL5vMGGNDjITu5TMn0=;
 b=GX56Yrn/GY4HmkqU8e1E/KUCK70iSo3wCiWCLiCVVSKNEdKur1Q9XfF1NQPwItmfoNBv0bW76Bco3z6ng0lPt87wjvUoJvM3CH3nzqGHjVODjFIlvBlNQjEIbVvcZhuoB+hvfnHJycCPo7KyfhxPA+eOrw/aXjRSWSqOAu3hk8t+LGK9LUo04HoL/UIW2Gjzx6eE9wM0fbdJ0sAWmxqLtCZwejuDoa9Z/0ETK/2W+7M7MInojdhHIZXHMO5FypT17YWNEOSeFQrUKbbCo9GuxSO1tb4El3iCgMo85tZkvGYskyxURTYG3X3lenq4wloTgGAA7ySoTAYJICjBzgkbVw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=hbn9Z4iPvJ/timuYHBf+wC4GNiL5vMGGNDjITu5TMn0=;
 b=aEXGHbZx2VyXrMFmJ3S7cE88OnNFvemPREEmvWzHnJMls6bAyq7Om+15BQ52YN6jjjd6G7XsHChN4L4a50uWWwawrOaW3iQGpizMY7aypBcq57tWKzawMq+vGiOHPyfNCFBBdAergIGcN/ovRZ12YMzbZW5nHCMtFWU57PlAraQ=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 10/10] xen/arm: ffa: Add indirect message support
Thread-Topic: [PATCH v2 10/10] xen/arm: ffa: Add indirect message support
Thread-Index: AQHbH6X9IBo7HgFtxUejZCumPUt4kbKVpD+AgAAU4gCAAD0KAIAAG40A
Date: Thu, 24 Oct 2024 15:22:26 +0000
Message-ID: <F60CF149-0FDE-43A6-8000-D7C6125121B9@arm.com>
References: <cover.1729066788.git.bertrand.marquis@arm.com>
 <9464941b06e82763ebe79e3f2adb4ca2497cf298.1729066788.git.bertrand.marquis@arm.com>
 <CAHUa44H+EipP-F_12tWidOxfFPf-jVcSs4XjLjBv5t05-Kw59g@mail.gmail.com>
 <5497A12A-B077-44B4-AB66-1D22D62681D0@arm.com>
 <CAHUa44Fca04p-L7K_OkZm2CVMFgWZxAmryOrU=GwwCHL+N4-3g@mail.gmail.com>
In-Reply-To:
 <CAHUa44Fca04p-L7K_OkZm2CVMFgWZxAmryOrU=GwwCHL+N4-3g@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.3776.700.51)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|DU0PR08MB9393:EE_|AM2PEPF0001C708:EE_|DBBPR08MB6284:EE_
X-MS-Office365-Filtering-Correlation-Id: 32a7ae4d-dbd2-4c42-d04b-08dcf43fb0a0
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|10070799003|376014|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?d1kwMGZJUnlSVzhJcGo3emZKYTFWNmNWbjk5aGpVeWpLcnc0ZjVNT05FVGsr?=
 =?utf-8?B?Q3hoVS90Mkw1Nk4va0FDQnJ4cVVvTG0vMXNGUlJSRXVEMEV2QkZ0VUVacFNQ?=
 =?utf-8?B?cnZzOW9UcTJHdmNHMGcyWVFDTkNaa0lyR0xNM08veEgyNjYvYkZhK0dxWW1M?=
 =?utf-8?B?MWFjS0FwbmJzNTA3Zkp0OG52R2FaZ3BhWXZnRGg3QXl5bHRTVUFTZnplb0Nk?=
 =?utf-8?B?STU0N0ZFdERUVHZQQjJFUUwrMi9EUERBY0JielE2UXdrQ20xVFFIYlRJZmJk?=
 =?utf-8?B?Ny9JcjBhbTJ0S3A2NTJEdEtsVGN4OFQrckZLeHRScHdURnhjZzFKL00xYWFX?=
 =?utf-8?B?cjFmbkVUU3BOczBTTnVZaGM3QXk5T2VOWi8yWEx2a0hjWFd1VmRoeXNoUXNV?=
 =?utf-8?B?RUJyYTY4KzVJT04xZDRsWnFsYUxwOWRDVUw3bllrSC80QmptaXlHK0pzM2lF?=
 =?utf-8?B?bERZbW1kVDAwSWkwNlNWTnhjeUIyZUV6T1phVjNjK2NyYVZVdTBwYTRwVllv?=
 =?utf-8?B?SDhXZEFGK1h2K1l3T0ZIUkJUQmgxR2JPZ3NGVFVWOUQydkNoY0dsQXBhV01I?=
 =?utf-8?B?N0ovODdzQjVYbFBOSCtHZDNtNi9oTlhTaFJmYmZSbUp0TWo3MGF6ZTU3MDNH?=
 =?utf-8?B?MFVPd1FFVnBqZ3h3a1l1aitkQlRCNDFOWTYvOWZybkl6RkxEOC82MlhSZWZV?=
 =?utf-8?B?QzBnc2Nvc3lUZVhJaC9aL01ZVXJENC93S0dheDcrL3IxYzhCQkQ3WTAvQVYw?=
 =?utf-8?B?U0RBN2NrS1RHVk1EUVhxT1BYK1FqajczYVRCbGNaTC9Sa3YyK1ovK0NSY0tW?=
 =?utf-8?B?VkQzY2ZqemtCWmMwdFExNzdqR0N6TDF6WU1Kam5DeXVpRjZQM1Azc1BaMmRq?=
 =?utf-8?B?QnhYMGk3bEQ1SDgwRmVuZFFLQmFqOW9jei9Sdm8za0VrNGU4Ui9tdVkyVGpm?=
 =?utf-8?B?dk4yVzhvV3lIMDZKTFN2RmFKejJtOFZ4WFB0eGNmOHRUdmNFbDIrbDVrcHNU?=
 =?utf-8?B?MFo4UkhDWE5BQ3VFUUJuYllHd1lWNFV2NDZyTjVDT213c0NNdFhrRkMwQlRv?=
 =?utf-8?B?clNpanY4YTZ3eHZERVpKMC9mMFpRaGIrb2hLem9NS1hYcmp5Z0pBeTdJN3oz?=
 =?utf-8?B?b3ZMT29wWXFuWUx6aWhhZnI4Y09XaFNnZU5lS1RTcTJ4WmFTbXJvZUMremVK?=
 =?utf-8?B?RzlqSHlTVVMxa0FwWUtITy9aTDQwZ2xvM0JMeElvUjQ2NHc2WUg3b1RVRmkv?=
 =?utf-8?B?UDA4aFRpZHlnWUtpUGowdnpkM20xcmtycFQ3VWJyODV1TkhQNU0rU0RMMHc5?=
 =?utf-8?B?TC9aWHZxVERjOVBENXJmOEE2QWpvTEp0OEVJRE5PSUhhUzdUS3IrNXZMYU16?=
 =?utf-8?B?RHV0MThqZVFlaUoxekhocSt0QTE4ZktHc3lGbmlENHlrK1NkNERYMjcxVm9t?=
 =?utf-8?B?YU1OYVBrK092U2ovd1NSY1E4T0dkZXc3ekNaRC9zRWQyN0UrTzJ3enhac2dy?=
 =?utf-8?B?amIvNm1nVHNsc2o0UlNTaXk4Tnp4VjZXYlpLMzJKcXVraW9CTXRyNDFSZ2g0?=
 =?utf-8?B?UVhHZU1LYU5EMkRhN3BNRWk1emtSdDVBb3lHRVhxV2x2S08reXdrd0laZllU?=
 =?utf-8?B?RkxRU2sza3M3ZDlCKy9yTnpUUUVjV3d1TjFGTWFML2FFVlBCM29LcnRkTmxy?=
 =?utf-8?B?a2VtTHRtZW1iRENWanNXYkNwTVJPUGdweTZ2bFB5YkhlandMQXM3b1F5Y3k0?=
 =?utf-8?B?bDcwK3BURGpER3N3VUNBTkVrQ014bzRQUHhYUDlNcFAvdG5BVVo5WVpLeHBD?=
 =?utf-8?Q?/rNiJ1oBIzuhpDEgobglu4xjAiYXIBylbvqis=3D?=
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:(13230040)(1800799024)(10070799003)(376014)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <F7D2EC639C296641956B2200CDD64D31@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB9393
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-SkipListedInternetSender:
 ip=[2603:10a6:10:25a::24];domain=DB9PR08MB6588.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM2PEPF0001C708.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e612781a-cb30-4a51-1352-08dcf43fab0b
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|1800799024|376014|82310400026|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?ZDc4Z0hNVHdSa2hYaWxOUCthTDlnK09EK1dLMkttRUFoSjd5cUh3V2hiSTdo?=
 =?utf-8?B?Z1Z0cVd0Y1ZRZFp1aThXMDB4S1FvckpLZEZuUU1ia3dTTTNLT0lweE1GNUxt?=
 =?utf-8?B?TnA5cWtVSGhmWW9Pa2NBTHdCTThGcDNRTTIwV0F3WnhubTBOT1NyV3BnMmhS?=
 =?utf-8?B?OENnTmJCcmpUVi9KV0FtRjVCaVdIODdXL1pwc2lmaDR4VDBWRGdmNk9CTjBU?=
 =?utf-8?B?M2x5c1RLS3JOVnJpTFg4THMrK0JJWVhLWUkyS01CMWV0OFRpR29BV2QrNzFl?=
 =?utf-8?B?RFg5Z1ZhYVRUdm1UOFMzMFpmcTFMRnVnQ1pteVVaSlNiOXZCRDlSdlB4dTNM?=
 =?utf-8?B?Ykt6SUE0RTVRNWd0ZVJIN0hMakpBaWxObVRta3ExamprUkIxWjUxSEowQTcv?=
 =?utf-8?B?V1dmdmJFdWZQQkZ5U1M5Sy96SVJ5YUo2ZlFDZzdHeisvU3hoNUpia1V6ZnQy?=
 =?utf-8?B?S2FleDdZWnJ5SFA5RzVQb2EzSnpSRXdYOE1XRzJNUTFpVFo3ZWI5S0cybHo3?=
 =?utf-8?B?MDAvZ0lYbVpqSFV5NjFFZUFQbkNLWFZHL0JkeVgxcHdTVXR3cEdUbnVVNXRm?=
 =?utf-8?B?RUdnWTUwTHdKVk1ET1doYzRDajJpSXFacWJvVGNoYTFtMzN3QTNoYkFlc1VF?=
 =?utf-8?B?dFlWbWVxdmRIcFBDTzdEWXA3NG5JWGxiMkNDTmFSL2JBeTliT3NveDBhT3BN?=
 =?utf-8?B?MlUzTXh4WWJTRWlKQVpHdG1FUFJaSjd3dnBoUjBPSDdrT2t0RitpRzlGN21X?=
 =?utf-8?B?eTVrMU5FcVJXWmk1ZUEwdU5YU2NuNDZ5NE9SNWRBWFhYaVN3QlYwdkxSdlhH?=
 =?utf-8?B?QVk3TkZUWDQxSDFBWnI5SENJS2JSZ3M2OU5SeDB5azQ3bWpQR29pd3Z5Z0VX?=
 =?utf-8?B?WDUrYVNhZFdMT1FmdktFWk5yMjBrT1NWd21hZTdXcXdIZitWWFJjN2dMN2R1?=
 =?utf-8?B?N0FudkovWlozakVzQjNpVzRBeG9hR21BWjNGUW1MTzV1N01nYUk0OUkxOTUz?=
 =?utf-8?B?Y3NYM2FoOEdJTjlBU0J0OVNBbEdEZmtUbW5hZ01ZUlNmWGJsNlhkWk1IakRK?=
 =?utf-8?B?cHlWUU9qb2FaTHBVUDV0V1lwL2lZRXdqQmRUVWJrQnRCT3dPd0J4eXIvZnhN?=
 =?utf-8?B?RnFZQlBzSVhhclNkRTFWS1dSMDJ6WWlEMzhhSlBnSXZta0FsWExTR2FXTDJ6?=
 =?utf-8?B?cjZlREMzN0YxM2s3Vm42TThPZk1uVVRVN3dydGgyeVhXQUNMdCtyem1USnhq?=
 =?utf-8?B?UmpuV1BwWlp2TUc5RHE2TUwzWk94YmJjMkRQWVZpUGFtVndaZCtnMjlYbnQz?=
 =?utf-8?B?OG1aeTErWEFHRGx2YmhFL1JZR2x6bG01ZWdlUVlZYWJDUDhMbDc5NXRnMVEr?=
 =?utf-8?B?aURRNnB0SC8yUHJRaloybENUeXh1ZDAydXpjbGdWVHYvU1BNRHcvbUJUUUM3?=
 =?utf-8?B?SFZlck9jdGhiV1BWSGFtTFdvcmJyZHhKSmw4WnVNSGgrUTl2QTNqc2dRUVR5?=
 =?utf-8?B?bm16QlczaHBzaXdiOC9CdXZWVkZEN0lwUHB1VHRES1VXTnpZcVJMVVN6MFJr?=
 =?utf-8?B?blBpZ2xPOVJUVjFwZGJJNm5oNmdrL0l0NjVkM3VnRkVQa21ySE1kbEpEUXI3?=
 =?utf-8?B?bjlmbTJwUjZKVk5RZmNxTU1UWUZxeTRScXBNTTdidXdFOE9nVmREVnhtRXhs?=
 =?utf-8?B?UlZFajFmSm9yaGtmdUVhc3YzN1Z2aHhmSmlYZGM5eUNoelEybFhSOVc3bnFB?=
 =?utf-8?B?UStXQk1veXVkZTZab2l0M2tKTkFpSkJoaWZwMUQwN0xEbTFPb3dwN3Y2eTJX?=
 =?utf-8?B?ZUljNDhVNXBWRmdMWFd4TjA1QkZFbkVLSStpcTZxNUhJZmpsdUZJWExaNG5F?=
 =?utf-8?B?bythZmFEU3dQb2xrUlZicktaaGVDOGlZVENHUS9NV1hWb0E9PQ==?=
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:(13230040)(36860700013)(1800799024)(376014)(82310400026)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 15:22:36.2588
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 32a7ae4d-dbd2-4c42-d04b-08dcf43fb0a0
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:
	AM2PEPF0001C708.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6284

SGkgSmVucywNCg0KPiBPbiAyNCBPY3QgMjAyNCwgYXQgMTU6NDMsIEplbnMgV2lrbGFuZGVyIDxq
ZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPiB3cm90ZToNCj4gDQo+IEhpIEJlcnRyYW5kLA0KPiAN
Cj4gT24gVGh1LCBPY3QgMjQsIDIwMjQgYXQgMTI6MDXigK9QTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
IDxCZXJ0cmFuZC5NYXJxdWlzQGFybS5jb20+IHdyb3RlOg0KPj4gDQo+PiBIaSBKZW5zLA0KPj4g
DQo+Pj4gT24gMjQgT2N0IDIwMjQsIGF0IDEwOjUwLCBKZW5zIFdpa2xhbmRlciA8amVucy53aWts
YW5kZXJAbGluYXJvLm9yZz4gd3JvdGU6DQo+Pj4gDQo+Pj4gSGkgQmVydHJhbmQsDQo+Pj4gDQo+
Pj4gT24gV2VkLCBPY3QgMTYsIDIwMjQgYXQgMTA6MzLigK9BTSBCZXJ0cmFuZCBNYXJxdWlzDQo+
Pj4gPGJlcnRyYW5kLm1hcnF1aXNAYXJtLmNvbT4gd3JvdGU6DQo+Pj4+IA0KPj4+PiBBZGQgc3Vw
cG9ydCBmb3IgRkZBX01TR19TRU5EMiB0byBzZW5kIGluZGlyZWN0IG1lc3NhZ2VzIGZyb20gYSBW
TSB0byBhDQo+Pj4+IHNlY3VyZSBwYXJ0aXRpb24uDQo+Pj4+IA0KPj4+PiBTaWduZWQtb2ZmLWJ5
OiBCZXJ0cmFuZCBNYXJxdWlzIDxiZXJ0cmFuZC5tYXJxdWlzQGFybS5jb20+DQo+Pj4+IC0tLQ0K
Pj4+PiBDaGFuZ2VzIGluIHYyOg0KPj4+PiAtIHJlYmFzZQ0KPj4+PiAtLS0NCj4+Pj4geGVuL2Fy
Y2gvYXJtL3RlZS9mZmEuYyAgICAgICAgIHwgIDUgKysrKw0KPj4+PiB4ZW4vYXJjaC9hcm0vdGVl
L2ZmYV9tc2cuYyAgICAgfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+
Pj4+IHhlbi9hcmNoL2FybS90ZWUvZmZhX3ByaXZhdGUuaCB8ICAxICsNCj4+Pj4gMyBmaWxlcyBj
aGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspDQo+Pj4+IA0KPj4+PiBkaWZmIC0tZ2l0IGEveGVuL2Fy
Y2gvYXJtL3RlZS9mZmEuYyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhLmMNCj4+Pj4gaW5kZXggM2E5
NTI1YWE0NTk4Li4yMWQ0MWI0NTJkYzkgMTAwNjQ0DQo+Pj4+IC0tLSBhL3hlbi9hcmNoL2FybS90
ZWUvZmZhLmMNCj4+Pj4gKysrIGIveGVuL2FyY2gvYXJtL3RlZS9mZmEuYw0KPj4+PiBAQCAtMTAx
LDYgKzEwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmZhX2Z3X2FiaSBmZmFfZndfYWJpX25l
ZWRlZFtdID0gew0KPj4+PiAgICBGV19BQkkoRkZBX01FTV9SRUNMQUlNKSwNCj4+Pj4gICAgRldf
QUJJKEZGQV9NU0dfU0VORF9ESVJFQ1RfUkVRXzMyKSwNCj4+Pj4gICAgRldfQUJJKEZGQV9NU0df
U0VORF9ESVJFQ1RfUkVRXzY0KSwNCj4+Pj4gKyAgICBGV19BQkkoRkZBX01TR19TRU5EMiksDQo+
Pj4+IH07DQo+Pj4+IA0KPj4+PiAvKg0KPj4+PiBAQCAtMTk1LDYgKzE5Niw3IEBAIHN0YXRpYyB2
b2lkIGhhbmRsZV9mZWF0dXJlcyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykNCj4+Pj4gICAg
Y2FzZSBGRkFfUEFSVElUSU9OX0lORk9fR0VUOg0KPj4+PiAgICBjYXNlIEZGQV9NU0dfU0VORF9E
SVJFQ1RfUkVRXzMyOg0KPj4+PiAgICBjYXNlIEZGQV9NU0dfU0VORF9ESVJFQ1RfUkVRXzY0Og0K
Pj4+PiArICAgIGNhc2UgRkZBX01TR19TRU5EMjoNCj4+Pj4gICAgICAgIGZmYV9zZXRfcmVnc19z
dWNjZXNzKHJlZ3MsIDAsIDApOw0KPj4+PiAgICAgICAgYnJlYWs7DQo+Pj4+ICAgIGNhc2UgRkZB
X01FTV9TSEFSRV82NDoNCj4+Pj4gQEAgLTI3NSw2ICsyNzcsOSBAQCBzdGF0aWMgYm9vbCBmZmFf
aGFuZGxlX2NhbGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQo+Pj4+ICAgIGNhc2UgRkZB
X01TR19TRU5EX0RJUkVDVF9SRVFfNjQ6DQo+Pj4+ICAgICAgICBmZmFfaGFuZGxlX21zZ19zZW5k
X2RpcmVjdF9yZXEocmVncywgZmlkKTsNCj4+Pj4gICAgICAgIHJldHVybiB0cnVlOw0KPj4+PiAr
ICAgIGNhc2UgRkZBX01TR19TRU5EMjoNCj4+Pj4gKyAgICAgICAgZSA9IGZmYV9oYW5kbGVfbXNn
X3NlbmQyKHJlZ3MpOw0KPj4+PiArICAgICAgICBicmVhazsNCj4+Pj4gICAgY2FzZSBGRkFfTUVN
X1NIQVJFXzMyOg0KPj4+PiAgICBjYXNlIEZGQV9NRU1fU0hBUkVfNjQ6DQo+Pj4+ICAgICAgICBm
ZmFfaGFuZGxlX21lbV9zaGFyZShyZWdzKTsNCj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2Fy
bS90ZWUvZmZhX21zZy5jIGIveGVuL2FyY2gvYXJtL3RlZS9mZmFfbXNnLmMNCj4+Pj4gaW5kZXgg
YWUyNjNlNTQ4OTBlLi4zMzVmMjQ2YmE2NTcgMTAwNjQ0DQo+Pj4+IC0tLSBhL3hlbi9hcmNoL2Fy
bS90ZWUvZmZhX21zZy5jDQo+Pj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX21zZy5jDQo+
Pj4+IEBAIC0xMiw2ICsxMiwxNSBAQA0KPj4+PiANCj4+Pj4gI2luY2x1ZGUgImZmYV9wcml2YXRl
LmgiDQo+Pj4+IA0KPj4+PiArLyogRW5jb2Rpbmcgb2YgcGFydGl0aW9uIG1lc3NhZ2UgaW4gUlgv
VFggYnVmZmVyICovDQo+Pj4+ICtzdHJ1Y3QgZmZhX3BhcnRfbXNnX3J4dHggew0KPj4+PiArICAg
IHVpbnQzMl90IGZsYWdzOw0KPj4+PiArICAgIHVpbnQzMl90IHJlc2VydmVkOw0KPj4+PiArICAg
IHVpbnQzMl90IG1zZ19vZmZzZXQ7DQo+Pj4+ICsgICAgdWludDMyX3Qgc2VuZF9yZWN2X2lkOw0K
Pj4+PiArICAgIHVpbnQzMl90IG1zZ19zaXplOw0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+PiB2b2lk
IGZmYV9oYW5kbGVfbXNnX3NlbmRfZGlyZWN0X3JlcShzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVn
cywgdWludDMyX3QgZmlkKQ0KPj4+PiB7DQo+Pj4+ICAgIHN0cnVjdCBhcm1fc21jY2NfMV8yX3Jl
Z3MgYXJnID0geyAuYTAgPSBmaWQsIH07DQo+Pj4+IEBAIC03OCwzICs4Nyw0MyBAQCBvdXQ6DQo+
Pj4+ICAgICAgICAgICAgICAgICByZXNwLmE0ICYgbWFzaywgcmVzcC5hNSAmIG1hc2ssIHJlc3Au
YTYgJiBtYXNrLA0KPj4+PiAgICAgICAgICAgICAgICAgcmVzcC5hNyAmIG1hc2spOw0KPj4+PiB9
DQo+Pj4+ICsNCj4+Pj4gK2ludDMyX3QgZmZhX2hhbmRsZV9tc2dfc2VuZDIoc3RydWN0IGNwdV91
c2VyX3JlZ3MgKnJlZ3MpDQo+Pj4+ICt7DQo+Pj4+ICsgICAgc3RydWN0IGRvbWFpbiAqc3JjX2Qg
PSBjdXJyZW50LT5kb21haW47DQo+Pj4+ICsgICAgc3RydWN0IGZmYV9jdHggKnNyY19jdHggPSBz
cmNfZC0+YXJjaC50ZWU7DQo+Pj4+ICsgICAgY29uc3Qgc3RydWN0IGZmYV9wYXJ0X21zZ19yeHR4
ICpzcmNfbXNnOw0KPj4+PiArICAgIHVpbnQxNl90IGRzdF9pZCwgc3JjX2lkOw0KPj4+PiArICAg
IGludDMyX3QgcmV0Ow0KPj4+PiArDQo+Pj4+ICsgICAgaWYgKCAhZmZhX2Z3X3N1cHBvcnRzX2Zp
ZChGRkFfTVNHX1NFTkQyKSApDQo+Pj4+ICsgICAgICAgIHJldHVybiBGRkFfUkVUX05PVF9TVVBQ
T1JURUQ7DQo+Pj4+ICsNCj4+Pj4gKyAgICBpZiAoICFzcGluX3RyeWxvY2soJnNyY19jdHgtPnR4
X2xvY2spICkNCj4+Pj4gKyAgICAgICAgcmV0dXJuIEZGQV9SRVRfQlVTWTsNCj4+Pj4gKw0KPj4+
PiArICAgIHNyY19tc2cgPSBzcmNfY3R4LT50eDsNCj4+Pj4gKyAgICBzcmNfaWQgPSBzcmNfbXNn
LT5zZW5kX3JlY3ZfaWQgPj4gMTY7DQo+Pj4+ICsgICAgZHN0X2lkID0gc3JjX21zZy0+c2VuZF9y
ZWN2X2lkICYgR0VOTUFTSygxNSwwKTsNCj4+Pj4gKw0KPj4+PiArICAgIGlmICggc3JjX2lkICE9
IGZmYV9nZXRfdm1faWQoc3JjX2QpIHx8ICFGRkFfSURfSVNfU0VDVVJFKGRzdF9pZCkgKQ0KPj4+
PiArICAgIHsNCj4+Pj4gKyAgICAgICAgcmV0ID0gRkZBX1JFVF9JTlZBTElEX1BBUkFNRVRFUlM7
DQo+Pj4+ICsgICAgICAgIGdvdG8gb3V0X3VubG9ja190eDsNCj4+Pj4gKyAgICB9DQo+Pj4+ICsN
Cj4+Pj4gKyAgICAvKiBjaGVjayBzb3VyY2UgbWVzc2FnZSBmaXRzIGluIGJ1ZmZlciAqLw0KPj4+
PiArICAgIGlmICggc3JjX2N0eC0+cGFnZV9jb3VudCAqIEZGQV9QQUdFX1NJWkUgPA0KPj4+PiAr
ICAgICAgICAgc3JjX21zZy0+bXNnX29mZnNldCArIHNyY19tc2ctPm1zZ19zaXplIHx8DQo+Pj4+
ICsgICAgICAgICBzcmNfbXNnLT5tc2dfb2Zmc2V0IDwgc2l6ZW9mKHN0cnVjdCBmZmFfcGFydF9t
c2dfcnh0eCkgKQ0KPj4+PiArICAgIHsNCj4+Pj4gKyAgICAgICAgcmV0ID0gRkZBX1JFVF9JTlZB
TElEX1BBUkFNRVRFUlM7DQo+Pj4+ICsgICAgICAgIGdvdG8gb3V0X3VubG9ja190eDsNCj4+Pj4g
KyAgICB9DQo+Pj4gDQo+Pj4gVGhlIGd1ZXN0IGNhbiBjaGFuZ2Ugc3JjX21zdCBhdCBhbnkgbW9t
ZW50IHdpdGggYW5vdGhlciBDUFUgc28gdGhlc2UNCj4+PiB0ZXN0cyBhcmUgb25seSBzYW5pdHkg
Y2hlY2tzLiBUaGUgU1BNQyB3aWxsIGFsc28gaGF2ZSB0byBsb2NrIGFuZCBkbw0KPj4+IHRoZSBz
YW1lIHRlc3RzIGFnYWluLiBTbyB0aGUgdGVzdHMgaGVyZSB3aWxsIG9ubHkgaW4gdGhlIGJlc3Qg
Y2FzZSAoaW4NCj4+PiBjYXNlIHRoZSBndWVzdCBpcyBtaXNiZWhhdmluZykgc2F2ZSB1cyBmcm9t
IGVudGVyaW5nIHRoZSBTUE1DIG9ubHkgdG8NCj4+PiBnZXQgYW4gZXJyb3IgYmFjay4gVGhlIGxv
Y2sgbWFrZXMgc2Vuc2Ugc2luY2Ugd2UgY291bGQgaGF2ZSBjb25jdXJyZW50DQo+Pj4gY2FsbHMg
dG8gRkZBX01FTV9TSEFSRS4gSG93IGFib3V0IHJlbW92aW5nIHRoZSB0ZXN0cz8NCj4+IA0KPj4g
SSB0aGluayB3ZSBzaG91bGQgc3RpbGwgcHJldmVudCB0byBmb3J3YXJkIGludmFsaWQgcmVxdWVz
dHMgdG8gdGhlIFNQTUMgYXMNCj4+IG11Y2ggYXMgd2UgY2FuIHRvIHByZXZlbnQgYSBtYWxpY2lv
dXMgZ3Vlc3QgZnJvbSBzdGlsbGluZyBDUFUgY3ljbGVzIGJ5DQo+PiBkb2luZyBpbnZhbGlkIGNh
bGxzIHRvIHRoZSBzZWN1cmUgd29ybGQuDQo+PiANCj4+IEkgY291bGQgcHV0IGEgY29tbWVudCBp
biB0aGVyZSBzYXlpbmcgdGhhdCB0aGlzIGlzIGp1c3QgcHJvdGVjdGlvbiBidXQgdG8gYmUNCj4+
IGZhcmUgdGhlIFNQTUMgaW4gc2VjdXJlIHdpbGwgaGF2ZSB0aGUgc2FtZSBpc3N1ZXM6IHRoaXMg
Y2FuIGJlIGNoYW5nZWQNCj4+IGF0IGFueSB0aW1lIGJ5IHRoZSBjYWxsZXIgb24gYW5vdGhlciBj
b3JlLg0KPiANCj4gRmFpciBlbm91Z2guDQo+IA0KPj4gDQo+Pj4gDQo+Pj4+ICsNCj4+Pj4gKyAg
ICByZXQgPSBmZmFfc2ltcGxlX2NhbGwoRkZBX01TR19TRU5EMiwgKCh1aW50MzJfdClzcmNfaWQp
IDw8IDE2LCAwLCAwLCAwKTsNCj4+PiANCj4+PiBJJ2QgcmF0aGVyIHVzZSBmZmFfZ2V0X3ZtX2lk
KHNyY19kKSBpbnN0ZWFkIG9mIHNyY19pZC4NCj4+IA0KPj4gc3JjX2lkIGlzIGEgbG9jYWwgdmFy
aWFibGUgYW5kIHdhcyBjaGVja2VkIHRvIGJlIGVxdWFsIHRvICBmZmFfZ2V0X3ZtX2lkKHNyY19k
KQ0KPj4gdXBwZXIgc28gdGhvc2UgMiB2YWx1ZXMgYXJlIHRoZSBzYW1lLg0KPj4gV2h5IHdvdWxk
IHlvdSByYXRoZXIgcmVjYWxsIGZmYV9nZXRfdm1faWQgaGVyZSA/DQo+IA0KPiBJIGRvbid0IHRo
aW5rIHRoYXQgY2hlY2sgaXMgZW5vdWdoIHRvIHByZXZlbnQgdGhlIGNvbXBpbGVyIGZyb20NCj4g
bG9hZGluZyB0aGF0IHZhbHVlIGZyb20gbWVtb3J5IGFnYWluLCBwb3RlbnRpYWxseSBvcGVuaW5n
IGENCj4gdGltZS1vZi1jaGVjayB0byB0aW1lLW9mLXVzZSB3aW5kb3cuIFVzaW5nIEFDQ0VTU19P
TkNFKCkgd2hlbiByZWFkaW5nDQo+IHNlbmRfcmVjdl9pZCBhYm92ZSBzaG91bGQgYWxzbyB0YWtl
IGNhcmUgb2YgdGhhdCwgYnV0IGl0IHNlZW1zIG1vcmUNCj4gZGlyZWN0IHRvIHVzZSBmZmFfZ2V0
X3ZtX2lkKCkuDQoNCk9rIEkgd2lsbCB1c2UgZmZhX2dldF92bV9pZCBpbiB2My4NCg0KVGhhbmtz
IGEgbG90IGZvciB0aGUgcmV2aWV3Lg0KDQpDaGVlcnMNCkJlcnRyYW5kDQoNCj4gDQo+IENoZWVy
cywNCj4gSmVucw0KPiANCj4+IA0KPj4gQ2hlZXJzDQo+PiBCZXJ0cmFuZA0KPj4gDQo+Pj4gDQo+
Pj4gQ2hlZXJzLA0KPj4+IEplbnMNCj4+PiANCj4+Pj4gKw0KPj4+PiArb3V0X3VubG9ja190eDoN
Cj4+Pj4gKyAgICBzcGluX3VubG9jaygmc3JjX2N0eC0+dHhfbG9jayk7DQo+Pj4+ICsgICAgcmV0
dXJuIHJldDsNCj4+Pj4gK30NCj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvZmZh
X3ByaXZhdGUuaCBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX3ByaXZhdGUuaA0KPj4+PiBpbmRleCA5
NzNlZTU1YmUwOWIuLmQ0NDFjMGNhNTU5OCAxMDA2NDQNCj4+Pj4gLS0tIGEveGVuL2FyY2gvYXJt
L3RlZS9mZmFfcHJpdmF0ZS5oDQo+Pj4+ICsrKyBiL3hlbi9hcmNoL2FybS90ZWUvZmZhX3ByaXZh
dGUuaA0KPj4+PiBAQCAtMzU5LDYgKzM1OSw3IEBAIHZvaWQgZmZhX2hhbmRsZV9ub3RpZmljYXRp
b25fZ2V0KHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKTsNCj4+Pj4gaW50IGZmYV9oYW5kbGVf
bm90aWZpY2F0aW9uX3NldChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyk7DQo+Pj4+IA0KPj4+
PiB2b2lkIGZmYV9oYW5kbGVfbXNnX3NlbmRfZGlyZWN0X3JlcShzdHJ1Y3QgY3B1X3VzZXJfcmVn
cyAqcmVncywgdWludDMyX3QgZmlkKTsNCj4+Pj4gK2ludDMyX3QgZmZhX2hhbmRsZV9tc2dfc2Vu
ZDIoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOw0KPj4+PiANCj4+Pj4gc3RhdGljIGlubGlu
ZSB1aW50MTZfdCBmZmFfZ2V0X3ZtX2lkKGNvbnN0IHN0cnVjdCBkb21haW4gKmQpDQo+Pj4+IHsN
Cj4+Pj4gLS0NCj4+Pj4gMi40Ny4wDQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:42:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:42:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825451.1239676 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t3zyc-0006H5-Qg; Thu, 24 Oct 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 825451.1239676; Thu, 24 Oct 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 1t3zyc-0006Gy-Nw; Thu, 24 Oct 2024 15:42:18 +0000
Received: by outflank-mailman (input) for mailman id 825451;
 Thu, 24 Oct 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=9w0c=RU=suse.de=tiwai@srs-se1.protection.inumbo.net>)
 id 1t3zyb-0006Gs-2U
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:42:17 +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 8a39781f-921e-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 17:42:14 +0200 (CEST)
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 27CC922125;
 Thu, 24 Oct 2024 15:42:13 +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 A023D1368E;
 Thu, 24 Oct 2024 15:42: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 g9J2JdNqGmebSAAAD6G6ig
 (envelope-from <tiwai@suse.de>); Thu, 24 Oct 2024 15:42: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: 8a39781f-921e-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729784533; 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=e/3cTOJeo8U10J73FzqEOoczI8O2ncrtc0XB23zkv5s=;
	b=nf7+XH/LuqrxkP91/yVelJSCFw67hxyf6AXFWk3zyABwq4t50EjV4OpunUzQwKh4O0X2HJ
	4nMIH+IkWiV+OyB9+2lpXXEkxEb6F9xe7EmRT51s93pHP7VGseNAqLpWkAnTMF4e/9a33H
	jIwPZWttZWt/MbrLD+5eKYCd75VNgto=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729784533;
	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=e/3cTOJeo8U10J73FzqEOoczI8O2ncrtc0XB23zkv5s=;
	b=bUCNy+kHeragGzzLpfz4PtWaPc3dFKTrYqlZNmv+RbyR7CQspcjxEUACIPOU4RaAWi7ash
	i5YJ2tGAyzT1zcBg==
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.de header.s=susede2_rsa header.b="nf7+XH/L";
	dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=bUCNy+kH
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729784533; 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=e/3cTOJeo8U10J73FzqEOoczI8O2ncrtc0XB23zkv5s=;
	b=nf7+XH/LuqrxkP91/yVelJSCFw67hxyf6AXFWk3zyABwq4t50EjV4OpunUzQwKh4O0X2HJ
	4nMIH+IkWiV+OyB9+2lpXXEkxEb6F9xe7EmRT51s93pHP7VGseNAqLpWkAnTMF4e/9a33H
	jIwPZWttZWt/MbrLD+5eKYCd75VNgto=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729784533;
	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=e/3cTOJeo8U10J73FzqEOoczI8O2ncrtc0XB23zkv5s=;
	b=bUCNy+kHeragGzzLpfz4PtWaPc3dFKTrYqlZNmv+RbyR7CQspcjxEUACIPOU4RaAWi7ash
	i5YJ2tGAyzT1zcBg==
Date: Thu, 24 Oct 2024 17:43:12 +0200
Message-ID: <875xphzeun.wl-tiwai@suse.de>
From: Takashi Iwai <tiwai@suse.de>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Takashi Iwai <tiwai@suse.de>,	Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,	Jiri Kosina
 <jikos@kernel.org>,	Benjamin Tissoires <bentiss@kernel.org>,	Arnd Bergmann
 <arnd@arndb.de>,	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,	Alex
 Dubov <oakad@yahoo.com>,	Sudarsana Kalluru <skalluru@marvell.com>,	Manish
 Chopra <manishc@marvell.com>,	"David S. Miller" <davem@davemloft.net>,	Eric
 Dumazet <edumazet@google.com>,	Jakub Kicinski <kuba@kernel.org>,	Paolo
 Abeni <pabeni@redhat.com>,	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,	Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>,	Jon Mason <jdmason@kudzu.us>,	Dave Jiang
 <dave.jiang@intel.com>,	Allen Hubbe <allenbh@gmail.com>,	Bjorn Helgaas
 <bhelgaas@google.com>,	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,	Stefano Stabellini
 <sstabellini@kernel.org>,	Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,	Jaroslav Kysela <perex@perex.cz>,	Takashi
 Iwai <tiwai@suse.com>,	Chen Ni <nichen@iscas.ac.cn>,	Mario Limonciello
 <mario.limonciello@amd.com>,	Ricky Wu <ricky_wu@realtek.com>,	Al Viro
 <viro@zeniv.linux.org.uk>,	Breno Leitao <leitao@debian.org>,	Kevin Tian
 <kevin.tian@intel.com>,	Thomas Gleixner <tglx@linutronix.de>,	Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,	Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>,	Mostafa Saleh
 <smostafa@google.com>,	Jason Gunthorpe <jgg@ziepe.ca>,	Yi Liu
 <yi.l.liu@intel.com>,	Christian Brauner <brauner@kernel.org>,	Ankit Agrawal
 <ankita@nvidia.com>,	Eric Auger <eric.auger@redhat.com>,	Reinette Chatre
 <reinette.chatre@intel.com>,	Ye Bin <yebin10@huawei.com>,	Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,	Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>,	Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>,	Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,	Rui Salvaterra <rsalvaterra@gmail.com>,
	linux-ide@vger.kernel.org,	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,	linux-sound@vger.kernel.org
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of pcim_intx()
In-Reply-To: <aec23bb79b9ff7dd7f13eb67460e0605eac22912.camel@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
	<20241015185124.64726-3-pstanner@redhat.com>
	<87v7xk2ps5.wl-tiwai@suse.de>
	<6f3db65fe9a5dcd1a7a8d9bd5352ecb248ef57b1.camel@redhat.com>
	<87ttd2276j.wl-tiwai@suse.de>
	<aec23bb79b9ff7dd7f13eb67460e0605eac22912.camel@redhat.com>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 27CC922125
X-Spam-Level: 
X-Spamd-Result: default: False [-3.51 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	TO_DN_SOME(0.00)[];
	MIME_TRACE(0.00)[0:+];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	ARC_NA(0.00)[];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	FREEMAIL_CC(0.00)[suse.de,kernel.org,omp.ru,amd.com,arndb.de,linuxfoundation.org,yahoo.com,marvell.com,davemloft.net,google.com,redhat.com,quantenna.com,gmail.com,kudzu.us,intel.com,suse.com,epam.com,perex.cz,iscas.ac.cn,realtek.com,zeniv.linux.org.uk,debian.org,linutronix.de,linux.intel.com,ziepe.ca,nvidia.com,huawei.com,invisiblethingslab.com,linux.dev,vger.kernel.org,lists.linux.dev,lists.xenproject.org];
	R_RATELIMIT(0.00)[to_ip_from(RLrrkwc4rnabsqsjbq9gcqj97h)];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_TLS_ALL(0.00)[];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RCPT_COUNT_GT_50(0.00)[67];
	DKIM_TRACE(0.00)[suse.de:+]
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Rspamd-Action: no action
X-Spam-Score: -3.51
X-Spam-Flag: NO

On Thu, 24 Oct 2024 10:02:59 +0200,
Philipp Stanner wrote:
> 
> On Wed, 2024-10-23 at 17:03 +0200, Takashi Iwai wrote:
> > On Wed, 23 Oct 2024 15:50:09 +0200,
> > Philipp Stanner wrote:
> > > 
> > > On Tue, 2024-10-22 at 16:08 +0200, Takashi Iwai wrote:
> > > > On Tue, 15 Oct 2024 20:51:12 +0200,
> > > > Philipp Stanner wrote:
> > > > > 
> > > > > pci_intx() is a hybrid function which can sometimes be managed
> > > > > through
> > > > > devres. To remove this hybrid nature from pci_intx(), it is
> > > > > necessary to
> > > > > port users to either an always-managed or a never-managed
> > > > > version.
> > > > > 
> > > > > hda_intel enables its PCI-Device with pcim_enable_device().
> > > > > Thus,
> > > > > it needs
> > > > > the always-managed version.
> > > > > 
> > > > > Replace pci_intx() with pcim_intx().
> > > > > 
> > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > > ---
> > > > >  sound/pci/hda/hda_intel.c | 2 +-
> > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/sound/pci/hda/hda_intel.c
> > > > > b/sound/pci/hda/hda_intel.c
> > > > > index b4540c5cd2a6..b44ca7b6e54f 100644
> > > > > --- a/sound/pci/hda/hda_intel.c
> > > > > +++ b/sound/pci/hda/hda_intel.c
> > > > > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx
> > > > > *chip,
> > > > > int do_disconnect)
> > > > >  	}
> > > > >  	bus->irq = chip->pci->irq;
> > > > >  	chip->card->sync_irq = bus->irq;
> > > > > -	pci_intx(chip->pci, !chip->msi);
> > > > > +	pcim_intx(chip->pci, !chip->msi);
> > > > >  	return 0;
> > > > >  }
> > > > >  
> > > > 
> > > > Hm, it's OK-ish to do this as it's practically same as what
> > > > pci_intx()
> > > > currently does.  But, the current code can be a bit inconsistent
> > > > about
> > > > the original intx value.  pcim_intx() always stores !enable to
> > > > res->orig_intx unconditionally, and it means that the orig_intx
> > > > value
> > > > gets overridden at each time pcim_intx() gets called.
> > > 
> > > Yes.
> > > 
> > > > 
> > > > Meanwhile, HD-audio driver does release and re-acquire the
> > > > interrupt
> > > > after disabling MSI when something goes wrong, and pci_intx()
> > > > call
> > > > above is a part of that procedure.  So, it can rewrite the
> > > > res->orig_intx to another value by retry without MSI.  And after
> > > > the
> > > > driver removal, it'll lead to another state.
> > > 
> > > I'm not sure that I understand this paragraph completely. Still,
> > > could
> > > a solution for the driver on the long-term just be to use
> > > pci_intx()?
> > 
> > pci_intx() misses the restore of the original value, so it's no
> > long-term solution, either.
> 
> Sure that is missing – I was basically asking whether the driver could
> live without that feature.
> 
> Consider that point obsolete, see below
> 
> > 
> > What I meant is that pcim_intx() blindly assumes the negative of the
> > passed argument as the original state, which isn't always true.  e.g.
> > when the driver calls it twice with different values, a wrong value
> > may be remembered.
> 
> Ah, I see – thoguh the issue is when it's called several times with the
> *same* value, isn't it?
> 
> E.g.
> 
> pcim_intx(pdev, 1); // 0 is remembered as the old value
> pcim_intx(pdev, 1); // 0 is falsely remembered as the old value
> 
> Also, it would seem that calling the function for the first time like
> that:
> 
> pcim_intx(pdev, 0); // old value: 1
> 
> is at least incorrect, because INTx should be 0 per default, shouldn't
> it? Could then even be a 1st class bug, because INTx would end up being
> enabled despite having been disabled all the time.

Yeah, and the unexpected restore can happen even with a single call of
pcim_intx(), if the driver calls it unnecessarily.

> > That said, I thought of something like below.
> 
> At first glance that looks like a good idea to me, thanks for working
> this out!
> 
> IMO you can submit that as a patch so we can discuss it separately.

Sure, I'm going to submit later.


thanks,

Takashi


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 15:49:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 15:49:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825460.1239687 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4055-0007IE-Gz; Thu, 24 Oct 2024 15:48:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825460.1239687; Thu, 24 Oct 2024 15:48: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 1t4055-0007I7-D1; Thu, 24 Oct 2024 15:48:59 +0000
Received: by outflank-mailman (input) for mailman id 825460;
 Thu, 24 Oct 2024 15:48: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=LAxk=RU=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t4054-0007Hz-2m
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 15:48:58 +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 79cdbc6b-921f-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 17:48:56 +0200 (CEST)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a2209bd7fso131438766b.2
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 08:48:56 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91598f11sm632275766b.193.2024.10.24.08.48.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 08:48:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79cdbc6b-921f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729784935; x=1730389735; 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=zlP7lw2ONsl7bRLNlv3YWePSjv/4K3vFG/1/1cHtx+s=;
        b=fZTdUC9CQ1WVklXGb4NqGvQLVcKl3dU0vdH0pExS2UjyCL0bcD6VsnGLVTjyKhRuHU
         ujbsVBwng4/A6urNzyHcWeX5PetuM3dWoyixk6c0CNE/dOP03sfinZKaRoqq2lllybkU
         amy8SXqxL5yGGiN5emzQ+c+CLLLoqZm5FR388=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729784935; x=1730389735;
        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=zlP7lw2ONsl7bRLNlv3YWePSjv/4K3vFG/1/1cHtx+s=;
        b=BOBSnktFwYZsgTQnrBPFCAThhLpl4/tCtaZk7aRTTqdlG4fr1azBB1zUOUl6EKc8CT
         oObeFiYAZZsDOo5MgP61S6iHOERGp7vWjBEjyPTiSSmoW3pHssRThukY8QKPW1PQ1NWf
         jJ9pdW0INsbCmRzkO01ySjVuB0zo+KyuPdjwGohH45iRecvOJli9dYTPgwBVeK/ctZa6
         gIbrz3Ch/uUyJnSHQwZnaPs8XdlPx/NU5sgcuPAwDkekkRf3Y6cTrPX9UtVKXmJPYPUh
         xZ6z0LpyTPEZJH5euKw2Ny+D5/RINRmYuBiMuKBjwIaCcYcuesEy5gJ3X/0uRvtuSwgY
         f/KQ==
X-Gm-Message-State: AOJu0YwbL2/a7eIaL7X4BK3Pqx67wuJS5h9T+iGGlbE4sCUC6nT5/J+K
	NVYUnZRlyRV0N5wiZDGPwBDPKsZ3FqHYosJSgb4ZfoUeIrOKCFoc253v2sSAQzUyGH1RCwaduWy
	J
X-Google-Smtp-Source: AGHT+IHID7dLKQqhXr2eMpBAMzkmGLcY1ZYpk9S1NupJKVozmgu04MsJiLxgAuJ4E9PhYYc+8zdH0Q==
X-Received: by 2002:a17:906:f592:b0:a9a:a891:b43e with SMTP id a640c23a62f3a-a9ad28158e1mr243753466b.50.1729784934884;
        Thu, 24 Oct 2024 08:48:54 -0700 (PDT)
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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v2] x86/io-apic: fix directed EOI when using AMD-Vi interrupt remapping
Date: Thu, 24 Oct 2024 16:48:44 +0100
Message-ID: <20241024154844.8652-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
repurposed to contain part of the offset into the remapping table.  Previous to
2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
table would match the vector.  Such logic was mandatory for end of interrupt to
work, since the vector field (even when not containing a vector) is used by the
IO-APIC to find for which pin the EOI must be performed.

Introduce a table to store the EOI handlers when using interrupt remapping, so
that the IO-APIC driver can translate pins into EOI handlers without having to
read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
unconditionally when interrupt remapping is enabled, even if strictly it would
only be required for AMD-Vi.

Reported-by: Willi Junga <xenproject@ymy.be>
Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v1:
 - s/apic_pin_eoi/io_apic_pin_eoi/.
 - Expand comment about io_apic_pin_eoi usage and layout.
 - Use uint8_t instead of unsigned int as array type.
 - Do not use a sentinel value.
---
 xen/arch/x86/io_apic.c | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index e40d2f7dbd75..e3cdfab6359a 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -71,6 +71,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
 
 static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
 
+/*
+ * Store the EOI handle when using interrupt remapping.
+ *
+ * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
+ * format repurposes the vector field to store the offset into the Interrupt
+ * Remap table.  This causes directed EOI to longer work, as the CPU vector no
+ * longer matches the contents of the RTE vector field.  Add a translation
+ * table so that directed EOI uses the value in the RTE vector field when
+ * interrupt remapping is enabled.
+ *
+ * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
+ * when using the remapped format, but use the translation table uniformly in
+ * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
+ *
+ * The matrix is accessed as [#io-apic][#pin].
+ */
+static uint8_t **io_apic_pin_eoi;
+
 static void share_vector_maps(unsigned int src, unsigned int dst)
 {
     unsigned int pin;
@@ -273,6 +291,13 @@ void __ioapic_write_entry(
     {
         __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
         __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
+        /*
+         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
+         * Entry will be updated once the array is allocated and there's a
+         * write against the pin.
+         */
+        if ( io_apic_pin_eoi )
+            io_apic_pin_eoi[apic][pin] = e.vector;
     }
     else
         iommu_update_ire_from_apic(apic, pin, e.raw);
@@ -298,6 +323,9 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
     /* Prefer the use of the EOI register if available */
     if ( ioapic_has_eoi_reg(apic) )
     {
+        if ( io_apic_pin_eoi )
+            vector = io_apic_pin_eoi[apic][pin];
+
         /* If vector is unknown, read it from the IO-APIC */
         if ( vector == IRQ_VECTOR_UNASSIGNED )
             vector = __ioapic_read_entry(apic, pin, true).vector;
@@ -1022,7 +1050,20 @@ static void __init setup_IO_APIC_irqs(void)
 
     apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
 
+    if ( iommu_intremap )
+    {
+        io_apic_pin_eoi = xzalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
+        BUG_ON(!io_apic_pin_eoi);
+    }
+
     for (apic = 0; apic < nr_ioapics; apic++) {
+        if ( iommu_intremap )
+        {
+            io_apic_pin_eoi[apic] = xzalloc_array(typeof(**io_apic_pin_eoi),
+                                                  nr_ioapic_entries[apic]);
+            BUG_ON(!io_apic_pin_eoi[apic]);
+        }
+
         for (pin = 0; pin < nr_ioapic_entries[apic]; pin++) {
             /*
              * add it to the IO-APIC irq-routing table:
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 16:03:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 16:03:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825473.1239696 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t40JR-0002HE-Nv; Thu, 24 Oct 2024 16:03:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825473.1239696; Thu, 24 Oct 2024 16:03: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 1t40JR-0002H7-JX; Thu, 24 Oct 2024 16:03:49 +0000
Received: by outflank-mailman (input) for mailman id 825473;
 Thu, 24 Oct 2024 16:03: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t40JQ-0002H1-I9
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 16:03:48 +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 8ca395d4-9221-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 18:03:46 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c948c41edeso1262634a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 09:03:46 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cb66c6b556sm5798272a12.63.2024.10.24.09.03.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 09:03:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ca395d4-9221-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729785825; x=1730390625; 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=zuxl7jxCk5QM8CKCwRksMZpOaH7+YC5gUlRNgdUxg10=;
        b=goiecl08eEjVOCCWMQpPXfLAXN88RagxW8JDTRdUGisvZHi3qu6Lq38y3JrZyOJQbN
         cKObCGsMNrSmdAdasaZFhjjObcMBGZU4iA+NtckvLXsp04lr2yE+sdixryAFX712EKrI
         KymOmNtPotYacQ5x2AIgc/PIjJ83Ix18T7Mws=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729785825; x=1730390625;
        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=zuxl7jxCk5QM8CKCwRksMZpOaH7+YC5gUlRNgdUxg10=;
        b=I+tyA+Eu66Xt2QWypHarDkWTXu5XdnFG+PcB3CDKyLr/D25vL18vKPbH111CNfIH2j
         3OPppLytYLY4ii9BwiExexrob5cvQ4hj5R2eorB0HGXGBQvjzpljl2Ur4hglsFWUHXVp
         1WirMRF/jK6l1+WTv+uci2rSyfCJRlJhHtbQdY7ZWEGmrBKLKJPrVbBQ6ygFOBi+kU0S
         h39uTKTHFVVycl3E+X19qsuoMaSgseG0LAuT9MSieyIzc9hH8+SlGTfdiD0BUH6J4l5/
         peiwUBOd3PpHGQMlxwxPifRESDItsWxz/NVweJQUHj4fXwHTNc1Gx2N2JZDVGGePdT+c
         aUOg==
X-Gm-Message-State: AOJu0YxzcQCqOIPCCkvIgOMmtETCklnylgJrleBeUjdeUbfnW5GVqgNh
	VMqkQ1XRJq7iAo5gMyk8NKYS6my1eo+JDoiiVw4yDhUBIkLRFNQ+TipaV57pBA+FAUDA5UP2ZR8
	c
X-Google-Smtp-Source: AGHT+IHCgF/nPE9D7yDs0f7pz8AQrQVLrHgM/Yne//sILKSy2RO44NSGqrrG19IS9W49sS9ETwqyNA==
X-Received: by 2002:a05:6402:5191:b0:5c9:5584:ddb8 with SMTP id 4fb4d7f45d1cf-5cb8ac6e363mr5620883a12.12.1729785823836;
        Thu, 24 Oct 2024 09:03:43 -0700 (PDT)
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>,
	Daniel Smith <dpsmith@apertussolutions.com>
Subject: [PATCH v2] x86/boot: Explain how discard_initial_images() works
Date: Thu, 24 Oct 2024 17:03:40 +0100
Message-Id: <20241024160340.1012474-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

discard_initial_images() only works because init_domheap_pages() with ps==pe
is a no-op.

In dom0_construct(), explaining the significance of setting the initrd length
to 0, and put an explicit check in discard_initial_images().

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: Daniel Smith <dpsmith@apertussolutions.com>

v2:
 * Strip down to just the explanation, and merge into HL series.
---
 xen/arch/x86/pv/dom0_build.c |  9 +++++++++
 xen/arch/x86/setup.c         | 13 ++++++++++---
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index cdae17b27654..cc882bee61c3 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -641,6 +641,15 @@ static int __init dom0_construct(struct domain *d,
                 if ( assign_pages(mfn_to_page(_mfn(mfn++)), 1, d, 0) )
                     BUG();
         }
+
+        /*
+         * We have either:
+         * - Mapped the initrd directly into dom0, or
+         * - Copied it and freed the module.
+         *
+         * Either way, tell discard_initial_images() to not free it a second
+         * time.
+         */
         initrd->mod_end = 0;
 
         iommu_memory_setup(d, "initrd", mfn_to_page(_mfn(initrd_mfn)),
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 511cf5b97909..177f4024abca 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -340,7 +340,7 @@ unsigned long __init initial_images_nrpages(nodeid_t node)
     return nr;
 }
 
-void __init discard_initial_images(void)
+void __init discard_initial_images(void) /* a.k.a. Free boot modules */
 {
     struct boot_info *bi = &xen_boot_info;
     unsigned int i;
@@ -348,9 +348,16 @@ void __init discard_initial_images(void)
     for ( i = 0; i < bi->nr_modules; ++i )
     {
         uint64_t start = pfn_to_paddr(bi->mods[i].mod->mod_start);
+        uint64_t size  = bi->mods[i].mod->mod_end;
 
-        init_domheap_pages(start,
-                           start + PAGE_ALIGN(bi->mods[i].mod->mod_end));
+        /*
+         * Sometimes the initrd is mapped, rather than copied, into dom0.
+         * Size being 0 is how we're instructed to leave the module alone.
+         */
+        if ( size == 0 )
+            continue;
+
+        init_domheap_pages(start, start + PAGE_ALIGN(size));
     }
 
     bi->nr_modules = 0;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 16:23:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 16:23:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825481.1239706 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t40bu-0005Q2-5u; Thu, 24 Oct 2024 16:22:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825481.1239706; Thu, 24 Oct 2024 16:22: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 1t40bu-0005Pv-2R; Thu, 24 Oct 2024 16:22:54 +0000
Received: by outflank-mailman (input) for mailman id 825481;
 Thu, 24 Oct 2024 16:22: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=tIMX=RU=intel.com=jani.nikula@srs-se1.protection.inumbo.net>)
 id 1t40bs-0005Pp-GV
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 16:22:52 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3517bb4e-9224-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 18:22:49 +0200 (CEST)
Received: from fmviesa003.fm.intel.com ([10.60.135.143])
 by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 24 Oct 2024 09:22:47 -0700
Received: from unknown (HELO localhost) ([10.237.66.160])
 by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 24 Oct 2024 09:22:44 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3517bb4e-9224-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729786970; x=1761322970;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=uBlUnvzp1AbBOJrFVlJAunOvF7oh9ITKUSDVP8d4eOo=;
  b=JTuVMvWp3f7ELb3Jz4XuPDbmnUGhGpMGmqxBU+lVT89DMKkeyveHTYLB
   lAuXBZtwinXspYSNvf7RI+m+VFZ2nmRrlCx9iqxJDIQRqal9EsKnr/+yS
   7/f/MohVX5dm4vpcChovfRRlStMlSpkE6foM19Txnfi07WhClqatyuvbH
   LJo922z5aDTKCd5opQ0QIgn21Dd8WQu1qq+QACURRUwL4MsHbHYvbPnQp
   AxCoOUrECdzxkGDAqwo6nKgwB0ffQULByGpYtRVVm4QmK8GvfOpLY9nJU
   EDdhtUJal25yaWRyDku41oPbOVeEZCzW+592GqhHEYNlkfJVijyYK65GZ
   g==;
X-CSE-ConnectionGUID: DAMky7wBQ2+7OkdFFZRP2g==
X-CSE-MsgGUID: N7g7R6+FQpGdkGxV5lZzFQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11235"; a="33232058"
X-IronPort-AV: E=Sophos;i="6.11,229,1725346800"; 
   d="scan'208";a="33232058"
X-CSE-ConnectionGUID: s8OL97kCQLuUn7GPZIxirw==
X-CSE-MsgGUID: tIMidi+FRlWuj/N1Wqaq+Q==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,229,1725346800"; 
   d="scan'208";a="84615714"
From: Jani Nikula <jani.nikula@intel.com>
To: dri-devel@lists.freedesktop.org
Cc: jani.nikula@intel.com,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>,
	Simona Vetter <simona@ffwll.ch>,
	xen-devel@lists.xenproject.org
Subject: [PATCH 1/2] drm/xen: remove redundant initialization info print
Date: Thu, 24 Oct 2024 19:22:39 +0300
Message-Id: <20241024162240.2398664-1-jani.nikula@intel.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
Content-Transfer-Encoding: 8bit

drm_dev_register() already prints the same information on successful
init. Remove the redundant prints.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Note: I prefer to merge this together with the next patch via
drm-misc-next.

Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org
Cc: xen-devel@lists.xenproject.org
---
 drivers/gpu/drm/xen/xen_drm_front.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index aab79c5e34c2..931d855bfbe8 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -525,11 +525,6 @@ static int xen_drm_drv_init(struct xen_drm_front_info *front_info)
 	if (ret)
 		goto fail_register;
 
-	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
-		 xen_drm_driver.name, xen_drm_driver.major,
-		 xen_drm_driver.minor, xen_drm_driver.patchlevel,
-		 xen_drm_driver.date, drm_dev->primary->index);
-
 	return 0;
 
 fail_register:
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 16:23:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 16:23:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825482.1239716 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t40bz-0005fW-FO; Thu, 24 Oct 2024 16:22:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825482.1239716; Thu, 24 Oct 2024 16: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 1t40bz-0005fN-CM; Thu, 24 Oct 2024 16:22:59 +0000
Received: by outflank-mailman (input) for mailman id 825482;
 Thu, 24 Oct 2024 16: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=tIMX=RU=intel.com=jani.nikula@srs-se1.protection.inumbo.net>)
 id 1t40by-0005Pp-Cn
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 16:22:58 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 38f18553-9224-11ef-99a3-01e77a169b0f;
 Thu, 24 Oct 2024 18:22:54 +0200 (CEST)
Received: from fmviesa003.fm.intel.com ([10.60.135.143])
 by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 24 Oct 2024 09:22:54 -0700
Received: from unknown (HELO localhost) ([10.237.66.160])
 by fmviesa003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 24 Oct 2024 09:22:49 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38f18553-9224-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729786975; x=1761322975;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=kt099z37RB8+WZFPqDAbJyMsCHLgCnM3YmGhv34Jtdo=;
  b=KmzbRXjBR3SnV+cnv2scq+asLvgSYCR0HysB+7QjByl+8uyxObK5OOdW
   TY5UAknfIaBdLWtN/ShEHG3WZdDbF4szBnXSBXYG3Rnq4fBtGAignBqoD
   ezqZei0tipZ65PZ0Fw6BL8BAqPXNOIAU4ihtiRcoiBDS8iwJ7NOCQOFTj
   1OJz67673VHCiOIUdYnzPPoCDYTMoku5xUBW9IJmzcy4hYvvwwZD4TujO
   n8wPpYC3xFAZND+9XCi61bFsgKzPvNoFwTCITB77SwLepsSgqoIpg9bYe
   PZHBoym0ES6d8+DQN30Q9T+z/+8zZsB1P508l5nJFIHTPiwGKnz0V8R+H
   w==;
X-CSE-ConnectionGUID: vSCn1NpcRTyXsynZVwhYUw==
X-CSE-MsgGUID: qw1U1g6DTl2R/1rM2aEncA==
X-IronPort-AV: E=McAfee;i="6700,10204,11235"; a="33232069"
X-IronPort-AV: E=Sophos;i="6.11,229,1725346800"; 
   d="scan'208";a="33232069"
X-CSE-ConnectionGUID: oCGLUuNlQ9WdV/UBRAg5Kw==
X-CSE-MsgGUID: WObJiSQMRkG1lBVZog8Gzg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,229,1725346800"; 
   d="scan'208";a="84615739"
From: Jani Nikula <jani.nikula@intel.com>
To: dri-devel@lists.freedesktop.org
Cc: jani.nikula@intel.com,
	David Airlie <airlied@gmail.com>,
	Hamza Mahfooz <hamza.mahfooz@amd.com>,
	Javier Martinez Canillas <javierm@redhat.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Simon Ser <contact@emersion.fr>,
	Simona Vetter <simona@ffwll.ch>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	=?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>,
	amd-gfx@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org,
	nouveau@lists.freedesktop.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH 2/2] drm: remove driver date from struct drm_driver and all drivers
Date: Thu, 24 Oct 2024 19:22:40 +0300
Message-Id: <20241024162240.2398664-2-jani.nikula@intel.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241024162240.2398664-1-jani.nikula@intel.com>
References: <20241024162240.2398664-1-jani.nikula@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
Content-Transfer-Encoding: 8bit

We stopped using the driver initialized date in commit 7fb8af6798e8
("drm: deprecate driver date") and (eventually) started returning "0"
for drm_version ioctl instead.

Finish the job, and remove the unused date member from struct
drm_driver, its initialization from drivers, along with the common
DRIVER_DATE macros.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: David Airlie <airlied@gmail.com>
Cc: Hamza Mahfooz <hamza.mahfooz@amd.com>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Simon Ser <contact@emersion.fr>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: nouveau@lists.freedesktop.org
Cc: xen-devel@lists.xenproject.org
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c          | 2 --
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h          | 1 -
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 1 -
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 1 -
 drivers/gpu/drm/arm/malidp_drv.c                 | 1 -
 drivers/gpu/drm/armada/armada_drv.c              | 1 -
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 1 -
 drivers/gpu/drm/ast/ast_drv.c                    | 1 -
 drivers/gpu/drm/ast/ast_drv.h                    | 1 -
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 1 -
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 1 -
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 --
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 1 -
 drivers/gpu/drm/gma500/psb_drv.c                 | 1 -
 drivers/gpu/drm/gma500/psb_drv.h                 | 1 -
 drivers/gpu/drm/gud/gud_drv.c                    | 1 -
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 1 -
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 1 -
 drivers/gpu/drm/hyperv/hyperv_drm_drv.c          | 2 --
 drivers/gpu/drm/i915/i915_driver.c               | 1 -
 drivers/gpu/drm/i915/i915_driver.h               | 1 -
 drivers/gpu/drm/i915/i915_gpu_error.c            | 1 -
 drivers/gpu/drm/imagination/pvr_drv.c            | 1 -
 drivers/gpu/drm/imagination/pvr_drv.h            | 1 -
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 1 -
 drivers/gpu/drm/imx/ipuv3/imx-drm-core.c         | 1 -
 drivers/gpu/drm/imx/lcdc/imx-lcdc.c              | 1 -
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 1 -
 drivers/gpu/drm/kmb/kmb_drv.c                    | 1 -
 drivers/gpu/drm/kmb/kmb_drv.h                    | 1 -
 drivers/gpu/drm/lima/lima_drv.c                  | 1 -
 drivers/gpu/drm/logicvc/logicvc_drm.c            | 1 -
 drivers/gpu/drm/loongson/lsdc_drv.c              | 2 --
 drivers/gpu/drm/mcde/mcde_drv.c                  | 1 -
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 --
 drivers/gpu/drm/meson/meson_drv.c                | 1 -
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 1 -
 drivers/gpu/drm/mgag200/mgag200_drv.h            | 1 -
 drivers/gpu/drm/msm/msm_drv.c                    | 1 -
 drivers/gpu/drm/mxsfb/lcdif_drv.c                | 1 -
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 1 -
 drivers/gpu/drm/nouveau/nouveau_drm.c            | 5 -----
 drivers/gpu/drm/nouveau/nouveau_drv.h            | 1 -
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 --
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 1 -
 drivers/gpu/drm/panthor/panthor_drv.c            | 1 -
 drivers/gpu/drm/pl111/pl111_drv.c                | 1 -
 drivers/gpu/drm/qxl/qxl_drv.c                    | 1 -
 drivers/gpu/drm/qxl/qxl_drv.h                    | 1 -
 drivers/gpu/drm/radeon/radeon_drv.c              | 1 -
 drivers/gpu/drm/radeon/radeon_drv.h              | 1 -
 drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c    | 1 -
 drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c     | 1 -
 drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c | 1 -
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 2 --
 drivers/gpu/drm/solomon/ssd130x.c                | 2 --
 drivers/gpu/drm/sprd/sprd_drm.c                  | 2 --
 drivers/gpu/drm/sti/sti_drv.c                    | 2 --
 drivers/gpu/drm/stm/drv.c                        | 1 -
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 1 -
 drivers/gpu/drm/tegra/drm.c                      | 2 --
 drivers/gpu/drm/tidss/tidss_drv.c                | 1 -
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 1 -
 drivers/gpu/drm/tiny/arcpgu.c                    | 1 -
 drivers/gpu/drm/tiny/bochs.c                     | 1 -
 drivers/gpu/drm/tiny/cirrus.c                    | 2 --
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 --
 drivers/gpu/drm/tiny/hx8357d.c                   | 1 -
 drivers/gpu/drm/tiny/ili9163.c                   | 1 -
 drivers/gpu/drm/tiny/ili9225.c                   | 1 -
 drivers/gpu/drm/tiny/ili9341.c                   | 1 -
 drivers/gpu/drm/tiny/ili9486.c                   | 1 -
 drivers/gpu/drm/tiny/mi0283qt.c                  | 1 -
 drivers/gpu/drm/tiny/ofdrm.c                     | 2 --
 drivers/gpu/drm/tiny/panel-mipi-dbi.c            | 1 -
 drivers/gpu/drm/tiny/repaper.c                   | 1 -
 drivers/gpu/drm/tiny/sharp-memory.c              | 1 -
 drivers/gpu/drm/tiny/simpledrm.c                 | 2 --
 drivers/gpu/drm/tiny/st7586.c                    | 1 -
 drivers/gpu/drm/tiny/st7735r.c                   | 1 -
 drivers/gpu/drm/tve200/tve200_drv.c              | 1 -
 drivers/gpu/drm/udl/udl_drv.c                    | 1 -
 drivers/gpu/drm/udl/udl_drv.h                    | 1 -
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 --
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 1 -
 drivers/gpu/drm/vboxvideo/vbox_drv.h             | 1 -
 drivers/gpu/drm/vc4/vc4_drv.c                    | 3 ---
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 --
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 1 -
 drivers/gpu/drm/virtio/virtgpu_drv.h             | 1 -
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 --
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 1 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h              | 1 -
 drivers/gpu/drm/xe/xe_device.c                   | 1 -
 drivers/gpu/drm/xe/xe_drv.h                      | 1 -
 drivers/gpu/drm/xen/xen_drm_front.c              | 1 -
 drivers/gpu/drm/xlnx/zynqmp_kms.c                | 1 -
 include/drm/drm_drv.h                            | 2 --
 98 files changed, 123 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 7273c98c3963..c5cd30797285 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -2998,7 +2998,6 @@ static const struct drm_driver amdgpu_kms_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = KMS_DRIVER_MAJOR,
 	.minor = KMS_DRIVER_MINOR,
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
@@ -3022,7 +3021,6 @@ const struct drm_driver amdgpu_partition_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = KMS_DRIVER_MAJOR,
 	.minor = KMS_DRIVER_MINOR,
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
index 5bc2cb661af7..2d86cc6f7f4d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
@@ -40,7 +40,6 @@
 
 #define DRIVER_NAME		"amdgpu"
 #define DRIVER_DESC		"AMD GPU"
-#define DRIVER_DATE		"20150101"
 
 extern const struct drm_driver amdgpu_partition_driver;
 
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index 1e7b1fcb2848..6ed504099188 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -63,7 +63,6 @@ static const struct drm_driver komeda_kms_driver = {
 	.fops = &komeda_cma_fops,
 	.name = "komeda",
 	.desc = "Arm Komeda Display Processor driver",
-	.date = "20181101",
 	.major = 0,
 	.minor = 1,
 };
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index cd4389809d42..4e2d6890fb19 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -233,7 +233,6 @@ static const struct drm_driver hdlcd_driver = {
 	.fops = &fops,
 	.name = "hdlcd",
 	.desc = "ARM HDLCD Controller DRM",
-	.date = "20151021",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 4cb25004b84f..cbdf2b273e75 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -570,7 +570,6 @@ static const struct drm_driver malidp_driver = {
 	.fops = &fops,
 	.name = "mali-dp",
 	.desc = "ARM Mali Display Processor driver",
-	.date = "20160106",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 5c26f0409478..f0ae46d27c2c 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -45,7 +45,6 @@ static const struct drm_driver armada_drm_driver = {
 	.minor			= 0,
 	.name			= "armada-drm",
 	.desc			= "Armada SoC DRM",
-	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
 	.num_ioctls = ARRAY_SIZE(armada_ioctls),
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 109023815fa2..4dea5b1791b1 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -252,7 +252,6 @@ static const struct drm_driver aspeed_gfx_driver = {
 	.fops = &fops,
 	.name = "aspeed-gfx-drm",
 	.desc = "ASPEED GFX DRM",
-	.date = "20180319",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index 4afe4be072ef..4c8198b76b06 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -60,7 +60,6 @@ static const struct drm_driver ast_driver = {
 	.fops = &ast_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 21ce3769bf0d..6b4305ac07d4 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -43,7 +43,6 @@
 
 #define DRIVER_NAME		"ast"
 #define DRIVER_DESC		"AST"
-#define DRIVER_DATE		"20120228"
 
 #define DRIVER_MAJOR		0
 #define DRIVER_MINOR		1
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 792dcc19e8e7..b6859b39e0e7 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -846,7 +846,6 @@ static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.fops = &fops,
 	.name = "atmel-hlcdc",
 	.desc = "Atmel HLCD Controller DRM",
-	.date = "20141504",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index 6500f3999c5f..1d057432bf1d 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -503,7 +503,6 @@ static const struct drm_driver etnaviv_drm_driver = {
 	.fops               = &fops,
 	.name               = "etnaviv",
 	.desc               = "etnaviv DRM",
-	.date               = "20151214",
 	.major              = 1,
 	.minor              = 4,
 };
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 2a466d8179f4..8c3133959147 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -35,7 +35,6 @@
 
 #define DRIVER_NAME	"exynos"
 #define DRIVER_DESC	"Samsung SoC DRM"
-#define DRIVER_DATE	"20180330"
 
 /*
  * Interface history:
@@ -118,7 +117,6 @@ static const struct drm_driver exynos_drm_driver = {
 	.fops			= &exynos_drm_driver_fops,
 	.name	= DRIVER_NAME,
 	.desc	= DRIVER_DESC,
-	.date	= DRIVER_DATE,
 	.major	= DRIVER_MAJOR,
 	.minor	= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index 91a48d774cf7..9353c35c2b1f 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -174,7 +174,6 @@ static const struct drm_driver fsl_dcu_drm_driver = {
 	.fops			= &fsl_dcu_drm_fops,
 	.name			= "fsl-dcu-drm",
 	.desc			= "Freescale DCU DRM",
-	.date			= "20160425",
 	.major			= 1,
 	.minor			= 1,
 };
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index c419ebbc49ec..c49153d31c34 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -513,7 +513,6 @@ static const struct drm_driver driver = {
 	.fops = &psb_gem_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL
diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
index de62cbfcdc72..7f77cb2b2751 100644
--- a/drivers/gpu/drm/gma500/psb_drv.h
+++ b/drivers/gpu/drm/gma500/psb_drv.h
@@ -26,7 +26,6 @@
 
 #define DRIVER_NAME "gma500"
 #define DRIVER_DESC "DRM driver for the Intel GMA500, GMA600, GMA3600, GMA3650"
-#define DRIVER_DATE "20140314"
 
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
index 09ccdc1dc1a2..f5b205776e3d 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -381,7 +381,6 @@ static const struct drm_driver gud_drm_driver = {
 
 	.name			= "gud",
 	.desc			= "Generic USB Display",
-	.date			= "20200422",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index 8c488c98ac97..f4bcfbb07788 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -57,7 +57,6 @@ static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
-	.date			= "20160828",
 	.desc			= "hibmc drm driver",
 	.major			= 1,
 	.minor			= 0,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index 5616c3917c03..2eb49177ac42 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -929,7 +929,6 @@ static const struct drm_driver ade_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name = "kirin",
 	.desc = "Hisilicon Kirin620 SoC DRM Driver",
-	.date = "20150718",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
index e0953777a206..ea5e19aecff6 100644
--- a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
+++ b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
@@ -20,7 +20,6 @@
 
 #define DRIVER_NAME "hyperv_drm"
 #define DRIVER_DESC "DRM driver for Hyper-V synthetic video device"
-#define DRIVER_DATE "2020"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 
@@ -31,7 +30,6 @@ static struct drm_driver hyperv_driver = {
 
 	.name		 = DRIVER_NAME,
 	.desc		 = DRIVER_DESC,
-	.date		 = DRIVER_DATE,
 	.major		 = DRIVER_MAJOR,
 	.minor		 = DRIVER_MINOR,
 
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index 365329ff8a07..1bafefb726f5 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -1785,7 +1785,6 @@ static const struct drm_driver i915_drm_driver = {
 	.fops = &i915_driver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/i915/i915_driver.h b/drivers/gpu/drm/i915/i915_driver.h
index 94a70d8ec5d5..4b67ad9a61cd 100644
--- a/drivers/gpu/drm/i915/i915_driver.h
+++ b/drivers/gpu/drm/i915/i915_driver.h
@@ -15,7 +15,6 @@ struct drm_printer;
 
 #define DRIVER_NAME		"i915"
 #define DRIVER_DESC		"Intel Graphics"
-#define DRIVER_DATE		"20230929"
 #define DRIVER_TIMESTAMP	1695980603
 
 extern const struct dev_pm_ops i915_pm_ops;
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 135ded17334e..aa3fdc231c47 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -841,7 +841,6 @@ static void __err_print_to_sgl(struct drm_i915_error_state_buf *m,
 	err_printf(m, "Kernel: %s %s\n",
 		   init_utsname()->release,
 		   init_utsname()->machine);
-	err_printf(m, "Driver: %s\n", DRIVER_DATE);
 	ts = ktime_to_timespec64(error->time);
 	err_printf(m, "Time: %lld s %ld us\n",
 		   (s64)ts.tv_sec, ts.tv_nsec / NSEC_PER_USEC);
diff --git a/drivers/gpu/drm/imagination/pvr_drv.c b/drivers/gpu/drm/imagination/pvr_drv.c
index 684a9b9a2247..fad7735865d3 100644
--- a/drivers/gpu/drm/imagination/pvr_drv.c
+++ b/drivers/gpu/drm/imagination/pvr_drv.c
@@ -1384,7 +1384,6 @@ static struct drm_driver pvr_drm_driver = {
 
 	.name = PVR_DRIVER_NAME,
 	.desc = PVR_DRIVER_DESC,
-	.date = PVR_DRIVER_DATE,
 	.major = PVR_DRIVER_MAJOR,
 	.minor = PVR_DRIVER_MINOR,
 	.patchlevel = PVR_DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/imagination/pvr_drv.h b/drivers/gpu/drm/imagination/pvr_drv.h
index 378fe477b759..7fa147312dd1 100644
--- a/drivers/gpu/drm/imagination/pvr_drv.h
+++ b/drivers/gpu/drm/imagination/pvr_drv.h
@@ -9,7 +9,6 @@
 
 #define PVR_DRIVER_NAME "powervr"
 #define PVR_DRIVER_DESC "Imagination PowerVR (Series 6 and later) & IMG Graphics"
-#define PVR_DRIVER_DATE "20230904"
 
 /*
  * Driver interface version:
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index 3ec721afc30c..f1e8aea40bdd 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -33,7 +33,6 @@ static const struct drm_driver dcss_kms_driver = {
 	.fops			= &dcss_cma_fops,
 	.name			= "imx-dcss",
 	.desc			= "i.MX8MQ Display Subsystem",
-	.date			= "20190917",
 	.major			= 1,
 	.minor			= 0,
 	.patchlevel		= 0,
diff --git a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c b/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
index ced06bd8eae8..87d917ae651b 100644
--- a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
@@ -163,7 +163,6 @@ static const struct drm_driver imx_drm_driver = {
 	.fops			= &imx_drm_driver_fops,
 	.name			= "imx-drm",
 	.desc			= "i.MX DRM graphics",
-	.date			= "20120507",
 	.major			= 1,
 	.minor			= 0,
 	.patchlevel		= 0,
diff --git a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c b/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
index 3215c4acd675..714ca9587ec7 100644
--- a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
+++ b/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
@@ -352,7 +352,6 @@ static struct drm_driver imx_lcdc_drm_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name = "imx-lcdc",
 	.desc = "i.MX LCDC driver",
-	.date = "20200716",
 };
 
 static const struct of_device_id imx_lcdc_of_dev_id[] = {
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 056b70b63554..c5e76e527ef9 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -953,7 +953,6 @@ static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
-	.date			= "20200716",
 	.major			= 1,
 	.minor			= 1,
 	.patchlevel		= 0,
diff --git a/drivers/gpu/drm/kmb/kmb_drv.c b/drivers/gpu/drm/kmb/kmb_drv.c
index 0274ab9caa85..192d9f293514 100644
--- a/drivers/gpu/drm/kmb/kmb_drv.c
+++ b/drivers/gpu/drm/kmb/kmb_drv.c
@@ -445,7 +445,6 @@ static const struct drm_driver kmb_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name = "kmb-drm",
 	.desc = "KEEMBAY DISPLAY DRIVER",
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/kmb/kmb_drv.h b/drivers/gpu/drm/kmb/kmb_drv.h
index bf085e95b28f..1f0c10d317fe 100644
--- a/drivers/gpu/drm/kmb/kmb_drv.h
+++ b/drivers/gpu/drm/kmb/kmb_drv.h
@@ -16,7 +16,6 @@
 #define KMB_MIN_WIDTH                   1920 /*Max width in pixels */
 #define KMB_MIN_HEIGHT                  1080 /*Max height in pixels */
 
-#define DRIVER_DATE			"20210223"
 #define DRIVER_MAJOR			1
 #define DRIVER_MINOR			1
 
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index 10bce18b7c31..4b70c5189f7c 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -271,7 +271,6 @@ static const struct drm_driver lima_drm_driver = {
 	.fops               = &lima_drm_driver_fops,
 	.name               = "lima",
 	.desc               = "lima DRM",
-	.date               = "20191231",
 	.major              = 1,
 	.minor              = 1,
 	.patchlevel         = 0,
diff --git a/drivers/gpu/drm/logicvc/logicvc_drm.c b/drivers/gpu/drm/logicvc/logicvc_drm.c
index e4d90701b29d..0cd5512e7dd1 100644
--- a/drivers/gpu/drm/logicvc/logicvc_drm.c
+++ b/drivers/gpu/drm/logicvc/logicvc_drm.c
@@ -52,7 +52,6 @@ static struct drm_driver logicvc_drm_driver = {
 	.fops				= &logicvc_drm_fops,
 	.name				= "logicvc-drm",
 	.desc				= "Xylon LogiCVC DRM driver",
-	.date				= "20200403",
 	.major				= 1,
 	.minor				= 0,
 
diff --git a/drivers/gpu/drm/loongson/lsdc_drv.c b/drivers/gpu/drm/loongson/lsdc_drv.c
index b350bdcf1645..0dc6afad8e54 100644
--- a/drivers/gpu/drm/loongson/lsdc_drv.c
+++ b/drivers/gpu/drm/loongson/lsdc_drv.c
@@ -26,7 +26,6 @@
 #define DRIVER_AUTHOR               "Sui Jingfeng <suijingfeng@loongson.cn>"
 #define DRIVER_NAME                 "loongson"
 #define DRIVER_DESC                 "drm driver for loongson graphics"
-#define DRIVER_DATE                 "20220701"
 #define DRIVER_MAJOR                1
 #define DRIVER_MINOR                0
 #define DRIVER_PATCHLEVEL           0
@@ -39,7 +38,6 @@ static const struct drm_driver lsdc_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f60bdd7b6c13..ba6b0a09f133 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -208,7 +208,6 @@ static const struct drm_driver mcde_drm_driver = {
 	.fops = &drm_fops,
 	.name = "mcde",
 	.desc = DRIVER_DESC,
-	.date = "20180529",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index a4594f8873d5..d12c924661d1 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -32,7 +32,6 @@
 
 #define DRIVER_NAME "mediatek"
 #define DRIVER_DESC "Mediatek SoC DRM"
-#define DRIVER_DATE "20150513"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 
@@ -615,7 +614,6 @@ static const struct drm_driver mtk_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 7cace75a38af..e035fb7ddb83 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -105,7 +105,6 @@ static const struct drm_driver meson_driver = {
 	.fops			= &fops,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= "20161109",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 97fd7eb765b4..ab46ae004a92 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -97,7 +97,6 @@ static const struct drm_driver mgag200_driver = {
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h
index 988967eafbf2..0608fc63e588 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.h
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
@@ -25,7 +25,6 @@
 
 #define DRIVER_NAME		"mgag200"
 #define DRIVER_DESC		"MGA G200 SE"
-#define DRIVER_DATE		"20110418"
 
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		0
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index edbc1ab0fbc8..d03726fefa5e 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -910,7 +910,6 @@ static const struct drm_driver msm_driver = {
 	.fops               = &fops,
 	.name               = "msm",
 	.desc               = "MSM Snapdragon DRM",
-	.date               = "20130625",
 	.major              = MSM_VERSION_MAJOR,
 	.minor              = MSM_VERSION_MINOR,
 	.patchlevel         = MSM_VERSION_PATCHLEVEL,
diff --git a/drivers/gpu/drm/mxsfb/lcdif_drv.c b/drivers/gpu/drm/mxsfb/lcdif_drv.c
index 58ccad9c425d..c27d5583fdf8 100644
--- a/drivers/gpu/drm/mxsfb/lcdif_drv.c
+++ b/drivers/gpu/drm/mxsfb/lcdif_drv.c
@@ -248,7 +248,6 @@ static const struct drm_driver lcdif_driver = {
 	.fops	= &fops,
 	.name	= "imx-lcdif",
 	.desc	= "i.MX LCDIF Controller DRM",
-	.date	= "20220417",
 	.major	= 1,
 	.minor	= 0,
 };
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 34a98717b72c..0e0d3a0962f8 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -336,7 +336,6 @@ static const struct drm_driver mxsfb_driver = {
 	.fops	= &fops,
 	.name	= "mxsfb-drm",
 	.desc	= "MXSFB Controller DRM",
-	.date	= "20160824",
 	.major	= 1,
 	.minor	= 0,
 };
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 107f63f08bd9..fdf90d48d5ea 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -1326,11 +1326,6 @@ driver_stub = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-#ifdef GIT_REVISION
-	.date = GIT_REVISION,
-#else
-	.date = DRIVER_DATE,
-#endif
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 685d6ca3d8aa..55abc510067b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -7,7 +7,6 @@
 
 #define DRIVER_NAME		"nouveau"
 #define DRIVER_DESC		"nVidia Riva/TNT/GeForce/Quadro/Tesla/Tegra K1+"
-#define DRIVER_DATE		"20120801"
 
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		4
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 1796cd20a877..a80e0f375a0e 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -28,7 +28,6 @@
 
 #define DRIVER_NAME		MODULE_NAME
 #define DRIVER_DESC		"OMAP DRM"
-#define DRIVER_DATE		"20110917"
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		0
 #define DRIVER_PATCHLEVEL	0
@@ -653,7 +652,6 @@ static const struct drm_driver omap_drm_driver = {
 	.fops = &omapdriver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 04d615df5259..fbaef3afcd66 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -636,7 +636,6 @@ static const struct drm_driver panfrost_drm_driver = {
 	.fops			= &panfrost_drm_driver_fops,
 	.name			= "panfrost",
 	.desc			= "panfrost DRM",
-	.date			= "20180908",
 	.major			= 1,
 	.minor			= 3,
 
diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/panthor/panthor_drv.c
index ac7e53f6e3f0..ad46a40ed9e1 100644
--- a/drivers/gpu/drm/panthor/panthor_drv.c
+++ b/drivers/gpu/drm/panthor/panthor_drv.c
@@ -1505,7 +1505,6 @@ static const struct drm_driver panthor_drm_driver = {
 	.fops = &panthor_drm_driver_fops,
 	.name = "panthor",
 	.desc = "Panthor DRM driver",
-	.date = "20230801",
 	.major = 1,
 	.minor = 2,
 
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 13362150b9c6..cc505790eaf3 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -220,7 +220,6 @@ static const struct drm_driver pl111_drm_driver = {
 	.fops = &drm_fops,
 	.name = "pl111",
 	.desc = DRIVER_DESC,
-	.date = "20170317",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
index 21f752644242..80118bcfd402 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.c
+++ b/drivers/gpu/drm/qxl/qxl_drv.c
@@ -300,7 +300,6 @@ static struct drm_driver qxl_driver = {
 	.num_ioctls = ARRAY_SIZE(qxl_ioctls),
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = 0,
 	.minor = 1,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
index 32069acd93f8..24874ff9efc9 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
@@ -54,7 +54,6 @@ struct iosys_map;
 
 #define DRIVER_NAME		"qxl"
 #define DRIVER_DESC		"RH QXL"
-#define DRIVER_DATE		"20120117"
 
 #define DRIVER_MAJOR 0
 #define DRIVER_MINOR 1
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 23d6d1a2586d..60e1a783a476 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -604,7 +604,6 @@ static const struct drm_driver kms_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = KMS_DRIVER_MAJOR,
 	.minor = KMS_DRIVER_MINOR,
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
index 02a65971d140..0f3dbffc492d 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.h
+++ b/drivers/gpu/drm/radeon/radeon_drv.h
@@ -43,7 +43,6 @@
 
 #define DRIVER_NAME		"radeon"
 #define DRIVER_DESC		"ATI Radeon"
-#define DRIVER_DATE		"20080528"
 
 /* Interface history:
  *
diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
index 4e0bafc86f50..6cf28032fc3f 100644
--- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
@@ -611,7 +611,6 @@ static const struct drm_driver rcar_du_driver = {
 	.fops			= &rcar_du_fops,
 	.name			= "rcar-du",
 	.desc			= "Renesas R-Car Display Unit",
-	.date			= "20130110",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
index bbd7003335da..55ba426d9462 100644
--- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
+++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
@@ -84,7 +84,6 @@ static const struct drm_driver rzg2l_du_driver = {
 	.fops			= &rzg2l_du_fops,
 	.name			= "rzg2l-du",
 	.desc			= "Renesas RZ/G2L Display Unit",
-	.date			= "20230410",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
index 8d3effe3f598..8d58547a6fc1 100644
--- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
@@ -107,7 +107,6 @@ static const struct drm_driver shmob_drm_driver = {
 	.fops			= &shmob_drm_fops,
 	.name			= "shmob-drm",
 	.desc			= "Renesas SH Mobile DRM",
-	.date			= "20120424",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 585355de696b..768517cf3c6b 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -39,7 +39,6 @@
 
 #define DRIVER_NAME	"rockchip"
 #define DRIVER_DESC	"RockChip Soc DRM"
-#define DRIVER_DATE	"20140818"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -235,7 +234,6 @@ static const struct drm_driver rockchip_drm_driver = {
 	.fops			= &rockchip_drm_driver_fops,
 	.name	= DRIVER_NAME,
 	.desc	= DRIVER_DESC,
-	.date	= DRIVER_DATE,
 	.major	= DRIVER_MAJOR,
 	.minor	= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ssd130x.c
index 29b2f82d81f8..dd78138605ca 100644
--- a/drivers/gpu/drm/solomon/ssd130x.c
+++ b/drivers/gpu/drm/solomon/ssd130x.c
@@ -39,7 +39,6 @@
 
 #define DRIVER_NAME	"ssd130x"
 #define DRIVER_DESC	"DRM driver for Solomon SSD13xx OLED displays"
-#define DRIVER_DATE	"20220131"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -1784,7 +1783,6 @@ static const struct drm_driver ssd130x_drm_driver = {
 	DRM_FBDEV_SHMEM_DRIVER_OPS,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 	.driver_features	= DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
diff --git a/drivers/gpu/drm/sprd/sprd_drm.c b/drivers/gpu/drm/sprd/sprd_drm.c
index a74cd0caf645..867ee2d8997f 100644
--- a/drivers/gpu/drm/sprd/sprd_drm.c
+++ b/drivers/gpu/drm/sprd/sprd_drm.c
@@ -23,7 +23,6 @@
 
 #define DRIVER_NAME	"sprd"
 #define DRIVER_DESC	"Spreadtrum SoCs' DRM Driver"
-#define DRIVER_DATE	"20200201"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -59,7 +58,6 @@ static struct drm_driver sprd_drm_drv = {
 
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 65f180c8e8e2..78213d205b02 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -29,7 +29,6 @@
 
 #define DRIVER_NAME	"sti"
 #define DRIVER_DESC	"STMicroelectronics SoC DRM"
-#define DRIVER_DATE	"20140601"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -143,7 +142,6 @@ static const struct drm_driver sti_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 478dc129d5c2..450ba6daabb3 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -62,7 +62,6 @@ static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
-	.date = "20170330",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 3f880d8a5666..dc17fe51f959 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -50,7 +50,6 @@ static const struct drm_driver sun4i_drv_driver = {
 	.fops			= &sun4i_drv_fops,
 	.name			= "sun4i-drm",
 	.desc			= "Allwinner sun4i Display Engine",
-	.date			= "20150629",
 	.major			= 1,
 	.minor			= 0,
 
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index babcb3958f86..05f866e46bb4 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -35,7 +35,6 @@
 
 #define DRIVER_NAME "tegra"
 #define DRIVER_DESC "NVIDIA Tegra graphics"
-#define DRIVER_DATE "20120330"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 #define DRIVER_PATCHLEVEL 0
@@ -901,7 +900,6 @@ static const struct drm_driver tegra_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 2428b9aaa003..f165513342a1 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -113,7 +113,6 @@ static const struct drm_driver tidss_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "tidss",
 	.desc			= "TI Keystone DSS",
-	.date			= "20180215",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 8c9f3705aa6c..541076167923 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -481,7 +481,6 @@ static const struct drm_driver tilcdc_driver = {
 	.fops               = &fops,
 	.name               = "tilcdc",
 	.desc               = "TI LCD Controller DRM",
-	.date               = "20121205",
 	.major              = 1,
 	.minor              = 0,
 };
diff --git a/drivers/gpu/drm/tiny/arcpgu.c b/drivers/gpu/drm/tiny/arcpgu.c
index 81abedec435d..70947571483e 100644
--- a/drivers/gpu/drm/tiny/arcpgu.c
+++ b/drivers/gpu/drm/tiny/arcpgu.c
@@ -366,7 +366,6 @@ static const struct drm_driver arcpgu_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "arcpgu",
 	.desc = "ARC PGU Controller",
-	.date = "20160219",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index 447989bb8201..2b0af6a64dc2 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -671,7 +671,6 @@ static const struct drm_driver bochs_driver = {
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
 	.desc			= "bochs dispi vga interface (qemu stdvga)",
-	.date			= "20130925",
 	.major			= 1,
 	.minor			= 0,
 	DRM_GEM_SHMEM_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index f06a2be71f60..3354bd3e3611 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -48,7 +48,6 @@
 
 #define DRIVER_NAME "cirrus"
 #define DRIVER_DESC "qemu cirrus vga"
-#define DRIVER_DATE "2019"
 #define DRIVER_MAJOR 2
 #define DRIVER_MINOR 0
 
@@ -657,7 +656,6 @@ static const struct drm_driver cirrus_driver = {
 
 	.name		 = DRIVER_NAME,
 	.desc		 = DRIVER_DESC,
-	.date		 = DRIVER_DATE,
 	.major		 = DRIVER_MAJOR,
 	.minor		 = DRIVER_MINOR,
 
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index 0c17ae532fb4..c8b2be766a47 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -34,7 +34,6 @@ MODULE_PARM_DESC(eco_mode, "Turn on Eco mode (less bright, more silent)");
 
 #define DRIVER_NAME		"gm12u320"
 #define DRIVER_DESC		"Grain Media GM12U320 USB projector display"
-#define DRIVER_DATE		"2019"
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		0
 
@@ -626,7 +625,6 @@ static const struct drm_driver gm12u320_drm_driver = {
 
 	.name		 = DRIVER_NAME,
 	.desc		 = DRIVER_DESC,
-	.date		 = DRIVER_DATE,
 	.major		 = DRIVER_MAJOR,
 	.minor		 = DRIVER_MINOR,
 
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 6b0d1846cfcf..d0e6cd13a8d2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -199,7 +199,6 @@ static const struct drm_driver hx8357d_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "hx8357d",
 	.desc			= "HX8357D",
-	.date			= "20181023",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9163.c b/drivers/gpu/drm/tiny/ili9163.c
index 5eb39ca1a855..863565989204 100644
--- a/drivers/gpu/drm/tiny/ili9163.c
+++ b/drivers/gpu/drm/tiny/ili9163.c
@@ -118,7 +118,6 @@ static struct drm_driver ili9163_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "ili9163",
 	.desc			= "Ilitek ILI9163",
-	.date			= "20210208",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 875e2d09729a..43faacb254c7 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -364,7 +364,6 @@ static const struct drm_driver ili9225_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "ili9225",
 	.desc			= "Ilitek ILI9225",
-	.date			= "20171106",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index c1dfdfbbd30c..914beb3a85c3 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -155,7 +155,6 @@ static const struct drm_driver ili9341_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "ili9341",
 	.desc			= "Ilitek ILI9341",
-	.date			= "20180514",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 7e46a720d5e2..509a412e562c 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -177,7 +177,6 @@ static const struct drm_driver ili9486_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "ili9486",
 	.desc			= "Ilitek ILI9486",
-	.date			= "20200118",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index f1461c55dba6..5afe1ba89ffa 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -159,7 +159,6 @@ static const struct drm_driver mi0283qt_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "mi0283qt",
 	.desc			= "Multi-Inno MI0283QT",
-	.date			= "20160614",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ofdrm.c b/drivers/gpu/drm/tiny/ofdrm.c
index 220c1244b3c0..a964754d4f86 100644
--- a/drivers/gpu/drm/tiny/ofdrm.c
+++ b/drivers/gpu/drm/tiny/ofdrm.c
@@ -25,7 +25,6 @@
 
 #define DRIVER_NAME	"ofdrm"
 #define DRIVER_DESC	"DRM driver for OF platform devices"
-#define DRIVER_DATE	"20220501"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -1348,7 +1347,6 @@ static struct drm_driver ofdrm_driver = {
 	DRM_FBDEV_SHMEM_DRIVER_OPS,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 	.driver_features	= DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
diff --git a/drivers/gpu/drm/tiny/panel-mipi-dbi.c b/drivers/gpu/drm/tiny/panel-mipi-dbi.c
index e66729b31bd6..12bbeec80fbf 100644
--- a/drivers/gpu/drm/tiny/panel-mipi-dbi.c
+++ b/drivers/gpu/drm/tiny/panel-mipi-dbi.c
@@ -269,7 +269,6 @@ static const struct drm_driver panel_mipi_dbi_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "panel-mipi-dbi",
 	.desc			= "MIPI DBI compatible display panel",
-	.date			= "20220103",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 77944eb17b3c..031c1bcdc947 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -917,7 +917,6 @@ static const struct drm_driver repaper_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "repaper",
 	.desc			= "Pervasive Displays RePaper e-ink panels",
-	.date			= "20170405",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/sharp-memory.c b/drivers/gpu/drm/tiny/sharp-memory.c
index 2d2315bd6aef..5bc7339a54ac 100644
--- a/drivers/gpu/drm/tiny/sharp-memory.c
+++ b/drivers/gpu/drm/tiny/sharp-memory.c
@@ -107,7 +107,6 @@ static const struct drm_driver sharp_memory_drm_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "sharp_memory_display",
 	.desc			= "Sharp Display Memory LCD",
-	.date			= "20231129",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c
index 3182d32f1b8f..9efa66800ca8 100644
--- a/drivers/gpu/drm/tiny/simpledrm.c
+++ b/drivers/gpu/drm/tiny/simpledrm.c
@@ -31,7 +31,6 @@
 
 #define DRIVER_NAME	"simpledrm"
 #define DRIVER_DESC	"DRM driver for simple-framebuffer platform devices"
-#define DRIVER_DATE	"20200625"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -1015,7 +1014,6 @@ static struct drm_driver simpledrm_driver = {
 	DRM_FBDEV_SHMEM_DRIVER_OPS,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 	.driver_features	= DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index 97013685c62f..c2ad886d9898 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -295,7 +295,6 @@ static const struct drm_driver st7586_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "st7586",
 	.desc			= "Sitronix ST7586",
-	.date			= "20170801",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index 0747ebd999cc..6b36f36b8d84 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -160,7 +160,6 @@ static const struct drm_driver st7735r_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "st7735r",
 	.desc			= "Sitronix ST7735R",
-	.date			= "20171128",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b30340a2141d..d18289638679 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -146,7 +146,6 @@ static const struct drm_driver tve200_drm_driver = {
 	.fops = &drm_fops,
 	.name = "tve200",
 	.desc = DRIVER_DESC,
-	.date = "20170703",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 8d8ae40f945c..8d5240ae9fa3 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -78,7 +78,6 @@ static const struct drm_driver driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 1eb716d9dad5..be00dc1d87a1 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -26,7 +26,6 @@ struct drm_mode_create_dumb;
 
 #define DRIVER_NAME		"udl"
 #define DRIVER_DESC		"DisplayLink"
-#define DRIVER_DATE		"20120220"
 
 #define DRIVER_MAJOR		0
 #define DRIVER_MINOR		0
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index fb35c5c3f1a7..9d8de9146cb0 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -31,7 +31,6 @@
 
 #define DRIVER_NAME "v3d"
 #define DRIVER_DESC "Broadcom V3D graphics"
-#define DRIVER_DATE "20180419"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 #define DRIVER_PATCHLEVEL 0
@@ -248,7 +247,6 @@ static const struct drm_driver v3d_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index a536c467e2b2..f3800d47473b 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -189,7 +189,6 @@ static const struct drm_driver driver = {
 	.fops = &vbox_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.h b/drivers/gpu/drm/vboxvideo/vbox_drv.h
index e77bd6512eb1..dfa935f381a6 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.h
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.h
@@ -25,7 +25,6 @@
 
 #define DRIVER_NAME         "vboxvideo"
 #define DRIVER_DESC         "Oracle VM VirtualBox Graphics Card"
-#define DRIVER_DATE         "20130823"
 
 #define DRIVER_MAJOR        1
 #define DRIVER_MINOR        0
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
index d47e5967592f..5ecf28f013fd 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -47,7 +47,6 @@
 
 #define DRIVER_NAME "vc4"
 #define DRIVER_DESC "Broadcom VC4 graphics"
-#define DRIVER_DATE "20140616"
 #define DRIVER_MAJOR 0
 #define DRIVER_MINOR 0
 #define DRIVER_PATCHLEVEL 0
@@ -222,7 +221,6 @@ const struct drm_driver vc4_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
@@ -244,7 +242,6 @@ const struct drm_driver vc5_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index c5e3e5457737..2752ab4f1c97 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -47,7 +47,6 @@
 
 #define DRIVER_NAME	"vgem"
 #define DRIVER_DESC	"Virtual GEM provider"
-#define DRIVER_DATE	"20120112"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -121,7 +120,6 @@ static const struct drm_driver vgem_driver = {
 
 	.name	= DRIVER_NAME,
 	.desc	= DRIVER_DESC,
-	.date	= DRIVER_DATE,
 	.major	= DRIVER_MAJOR,
 	.minor	= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index ffca6e2e1c9a..933e22b7dada 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -202,7 +202,6 @@ static const struct drm_driver driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
index 64c236169db8..ccd2c8a1060b 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -45,7 +45,6 @@
 
 #define DRIVER_NAME "virtio_gpu"
 #define DRIVER_DESC "virtio GPU"
-#define DRIVER_DATE "0"
 
 #define DRIVER_MAJOR 0
 #define DRIVER_MINOR 1
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 2d1e95cb66e5..576d2208b548 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -34,7 +34,6 @@
 
 #define DRIVER_NAME	"vkms"
 #define DRIVER_DESC	"Virtual Kernel Mode Setting"
-#define DRIVER_DATE	"20180514"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -117,7 +116,6 @@ static const struct drm_driver vkms_driver = {
 
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 2c46897876dd..b81179545cb9 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1634,7 +1634,6 @@ static const struct drm_driver driver = {
 	.fops = &vmwgfx_driver_fops,
 	.name = VMWGFX_DRIVER_NAME,
 	.desc = VMWGFX_DRIVER_DESC,
-	.date = VMWGFX_DRIVER_DATE,
 	.major = VMWGFX_DRIVER_MAJOR,
 	.minor = VMWGFX_DRIVER_MINOR,
 	.patchlevel = VMWGFX_DRIVER_PATCHLEVEL
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index b21831ef214a..5275ef632d4b 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -57,7 +57,6 @@
 
 
 #define VMWGFX_DRIVER_NAME "vmwgfx"
-#define VMWGFX_DRIVER_DATE "20211206"
 #define VMWGFX_DRIVER_MAJOR 2
 #define VMWGFX_DRIVER_MINOR 20
 #define VMWGFX_DRIVER_PATCHLEVEL 0
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 51bb9d875268..8b30e73db8de 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -278,7 +278,6 @@ static struct drm_driver driver = {
 	.fops = &xe_driver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/xe/xe_drv.h b/drivers/gpu/drm/xe/xe_drv.h
index d45b71426cc8..d61650d4aa0b 100644
--- a/drivers/gpu/drm/xe/xe_drv.h
+++ b/drivers/gpu/drm/xe/xe_drv.h
@@ -10,7 +10,6 @@
 
 #define DRIVER_NAME		"xe"
 #define DRIVER_DESC		"Intel Xe Graphics"
-#define DRIVER_DATE		"20201103"
 
 /* Interface history:
  *
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 931d855bfbe8..1bda7ef606cc 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -478,7 +478,6 @@ static const struct drm_driver xen_drm_driver = {
 	.fops                      = &xen_drm_dev_fops,
 	.name                      = "xendrm-du",
 	.desc                      = "Xen PV DRM Display Unit",
-	.date                      = "20180221",
 	.major                     = 1,
 	.minor                     = 0,
 
diff --git a/drivers/gpu/drm/xlnx/zynqmp_kms.c b/drivers/gpu/drm/xlnx/zynqmp_kms.c
index 2452c2f09161..736df17dfc26 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_kms.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_kms.c
@@ -409,7 +409,6 @@ static const struct drm_driver zynqmp_dpsub_drm_driver = {
 
 	.name				= "zynqmp-dpsub",
 	.desc				= "Xilinx DisplayPort Subsystem Driver",
-	.date				= "20130509",
 	.major				= 1,
 	.minor				= 0,
 };
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 1bbbcb8e2d23..1b6e59139e6c 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -401,8 +401,6 @@ struct drm_driver {
 	char *name;
 	/** @desc: driver description */
 	char *desc;
-	/** @date: driver date, unused, to be removed */
-	char *date;
 
 	/**
 	 * @driver_features:
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 16:29:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 16:29:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825501.1239725 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t40ih-0007D2-8p; Thu, 24 Oct 2024 16:29:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825501.1239725; Thu, 24 Oct 2024 16:29: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 1t40ih-0007Cv-68; Thu, 24 Oct 2024 16:29:55 +0000
Received: by outflank-mailman (input) for mailman id 825501;
 Thu, 24 Oct 2024 16:29: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=IFxE=RU=redhat.com=fmartine@srs-se1.protection.inumbo.net>)
 id 1t40ig-0007Cp-CX
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 16:29:54 +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 31de9dec-9225-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 18:29:53 +0200 (CEST)
Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com
 [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-187-rDSr2h8YMselVBO7YedLNA-1; Thu, 24 Oct 2024 12:29:50 -0400
Received: by mail-wm1-f69.google.com with SMTP id
 5b1f17b1804b1-431604a3b47so8192325e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 09:29:50 -0700 (PDT)
Received: from localhost (62-151-111-63.jazzfree.ya.com. [62.151.111.63])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43186c1e911sm50457715e9.45.2024.10.24.09.29.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 24 Oct 2024 09:29:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 31de9dec-9225-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729787391;
	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=JZXCwg6hYJwlV3dQoijUPbMEIAM4RESJSpWVfasu2GA=;
	b=fdGRwmWsqj+lueErmglc1O03FFyhlr7+9pEdARz3JBGWrD4TSCEIh3blrr6F2eMu+UWGQT
	uBNPQmfBsE2nkHNLJJD2W+1nhZsw1pNIaVohT2YFi7dYo7Fr78sTVT7Rx+3SxiYF2Z/kJK
	E2EIcadfe7Ubo1M0WucEfEqaeG3vcDA=
X-MC-Unique: rDSr2h8YMselVBO7YedLNA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729787389; x=1730392189;
        h=mime-version:message-id:date:references:in-reply-to:subject:cc:to
         :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=JZXCwg6hYJwlV3dQoijUPbMEIAM4RESJSpWVfasu2GA=;
        b=IbEIm/wSThKtTrajGHI5pl7r//JJ8gMhRHNdvGLyDpKw0BBHh/qRpbrnZhm7OFSCuB
         SG+s/cRn0EdvLesLap0G5Sox4hG0MvbL+GwrsVRI0Ia4KslxcxFIEVmWRw84pitBfSE+
         10jir5yRoQGpfdu3HXheU2xyemSDxIwdU0PZLaU6KVnwhGRGpJ9DWCof//jF+I3dk8I1
         7vBG3rIL4v8G7759h6ysl1QH2UpyvOvemKl8K1bErYR0B4MeljebCH77pvCVDEK2TI3J
         VZrDOBHvfzDlsPcD2Iimm6kD5A5o9z6ctcF02Gkso6NF5Jo9FAzSRVwxxJ+YsNUf/XaY
         diXg==
X-Forwarded-Encrypted: i=1; AJvYcCUucrrh2bVr0ixEG15+jMVnm6okx23j3/BSR7iMnmwoPBgd+Gfr5o/v3uIt+1Mr948oWetM00yoQnk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywfb0mYbURoRz2N09+2BMRJV/gF4qbh2qNlqb8GbS1Wl3pwbDfJ
	qOuw3j4pnX5K/qHrdnFttCZVlSj0offD6AN2BSkP6oJWiDlD6S4byjbp/vFYlNOGvEWrumIWIEs
	/hHPPjNRmRYYmyzugNJVpFlbo2VbeHjUso8Gy12iyzxJtS47ZPPrEXNCZ9/bXQ6H9
X-Received: by 2002:a05:600c:1e16:b0:431:561b:b32a with SMTP id 5b1f17b1804b1-4318c6f505cmr23112415e9.19.1729787389134;
        Thu, 24 Oct 2024 09:29:49 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IET7dTcaOAuam5O1YOxfn6XKm0SifRdkj3JgT8AA6xwQNV6mNJK26LyEtPp9s4XkYUWZXGjDQ==
X-Received: by 2002:a05:600c:1e16:b0:431:561b:b32a with SMTP id 5b1f17b1804b1-4318c6f505cmr23112135e9.19.1729787388661;
        Thu, 24 Oct 2024 09:29:48 -0700 (PDT)
From: Javier Martinez Canillas <javierm@redhat.com>
To: Jani Nikula <jani.nikula@intel.com>, dri-devel@lists.freedesktop.org
Cc: jani.nikula@intel.com, David Airlie <airlied@gmail.com>, Hamza Mahfooz
 <hamza.mahfooz@amd.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Simon Ser
 <contact@emersion.fr>, Simona Vetter <simona@ffwll.ch>, Thomas Zimmermann
 <tzimmermann@suse.de>, Ville =?utf-8?B?U3lyasOkbMOk?=
 <ville.syrjala@linux.intel.com>,
 amd-gfx@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org,
 nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: remove driver date from struct drm_driver and
 all drivers
In-Reply-To: <20241024162240.2398664-2-jani.nikula@intel.com>
References: <20241024162240.2398664-1-jani.nikula@intel.com>
 <20241024162240.2398664-2-jani.nikula@intel.com>
Date: Thu, 24 Oct 2024 18:29:47 +0200
Message-ID: <875xph1n2c.fsf@minerva.mail-host-address-is-not-set>
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain

Jani Nikula <jani.nikula@intel.com> writes:

Hello Jani,

> We stopped using the driver initialized date in commit 7fb8af6798e8
> ("drm: deprecate driver date") and (eventually) started returning "0"
> for drm_version ioctl instead.
>
> Finish the job, and remove the unused date member from struct
> drm_driver, its initialization from drivers, along with the common
> DRIVER_DATE macros.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>

-- 
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 16:42:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 16:42:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825507.1239735 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t40v5-0001hu-As; Thu, 24 Oct 2024 16:42:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825507.1239735; Thu, 24 Oct 2024 16:42: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 1t40v5-0001hn-8O; Thu, 24 Oct 2024 16:42:43 +0000
Received: by outflank-mailman (input) for mailman id 825507;
 Thu, 24 Oct 2024 16:42: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=sQmA=RU=apertussolutions.com=dpsmith@srs-se1.protection.inumbo.net>)
 id 1t40v3-0001hh-IC
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 16:42:41 +0000
Received: from sender4-of-o51.zoho.com (sender4-of-o51.zoho.com
 [136.143.188.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fadf7ecd-9226-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 18:42:40 +0200 (CEST)
Received: by mx.zohomail.com with SMTPS id 1729788153638363.1295203280963;
 Thu, 24 Oct 2024 09:42:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fadf7ecd-9226-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; t=1729788154; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=W/bLTcUwFh7F83ztvf7NyyesSa0xzdByH6ErcUj9cKuOzWXt5yrhCmD0rtCWn74/8YyZMzFpnlYzUYHuZCqz4o8KM5/B61Dqvcx8gMuAjA0dSFJ4HaNVxALuMtK8SOcasMoT2094MAgHI4dkg8T5xN3uJboCd5qwehN22wTdgSE=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1729788154; 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=x4/TnSsW7+E4msXP5ig1Bx7CXFMPKNACg6DP3jRDBzQ=; 
	b=emoyXk+oh/n+bl27CMVS92p3f0/yJGMGdT4BIsB1gR7mE+jVrzcehcycXSavb3BLCv/0vVRaKa2ZsBizLZk0Xoit0W68DYCHQLzKsoQlNCYb4Pp5koslzg5P7FT5cWPSzW72k3Q/d2O010FpL1PyRThCeITMBlQowMPlpNvxml0=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=apertussolutions.com;
	spf=pass  smtp.mailfrom=dpsmith@apertussolutions.com;
	dmarc=pass header.from=<dpsmith@apertussolutions.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1729788154;
	s=zoho; d=apertussolutions.com; i=dpsmith@apertussolutions.com;
	h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=x4/TnSsW7+E4msXP5ig1Bx7CXFMPKNACg6DP3jRDBzQ=;
	b=tsL6ZdmKQgxfwJ4ODu2JlpoLh9512kw6OpieYhMyQcA1hOVFx2bjP7tbVCihSIm8
	xdR1O/V6mDaxnq4q6s4C+Ylbo+DQ4oWKhOaDRTjunciemIOnJej4i//QcU6q4ytT91n
	6ubr6s9punSg7L4PuZr3esmXWc6ad9QXrsHVtAw8=
Message-ID: <b4cfd5b2-eaaa-49d2-acc6-8729c752709f@apertussolutions.com>
Date: Thu, 24 Oct 2024 12:42:06 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/boot: Explain how discard_initial_images() works
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>
References: <20241024160340.1012474-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: "Daniel P. Smith" <dpsmith@apertussolutions.com>
In-Reply-To: <20241024160340.1012474-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External

On 10/24/24 12:03, Andrew Cooper wrote:
> discard_initial_images() only works because init_domheap_pages() with ps==pe
> is a no-op.
> 
> In dom0_construct(), explaining the significance of setting the initrd length
> to 0, and put an explicit check in discard_initial_images().
> 
> 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: Daniel Smith <dpsmith@apertussolutions.com>

Reviewed-by: Daniel P. Smith <dpsmith@apertussolutions.com>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 16:51:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 16:51:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825514.1239747 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t413H-0003el-4e; Thu, 24 Oct 2024 16:51:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825514.1239747; Thu, 24 Oct 2024 16: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 1t413H-0003ed-0c; Thu, 24 Oct 2024 16:51:11 +0000
Received: by outflank-mailman (input) for mailman id 825514;
 Thu, 24 Oct 2024 16: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=jd6X=RU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t413F-0003eX-92
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 16:51:09 +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 298cf1f3-9228-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 18:51:06 +0200 (CEST)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9a6acac4c3so169459666b.0
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 09:51:06 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9a91370631sm638672466b.104.2024.10.24.09.51.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 24 Oct 2024 09:51:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 298cf1f3-9228-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729788666; x=1730393466; 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=YIh+dXGoPdzm07OqJgOz2HoIGVQbxiDlqgXo5P32/2s=;
        b=aAC3jSZyBUy58MjWP4XWxZ3/Gi9xVWDcV5M6ELRODLMsWeVj8qCknorFgqQMpmGiG1
         bS9KkFuWqdqBrFFhXcoDHCetL1VbpOyxhWdaYEm7zM61oiu5iKuuwP+8am/yfGOgaNHu
         l3TdjGnuwvp0+xl2dsgGdd7okcMLWVpPw7IJE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729788666; x=1730393466;
        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=YIh+dXGoPdzm07OqJgOz2HoIGVQbxiDlqgXo5P32/2s=;
        b=mmuCUGEn2oleOlin8HKM80VkagwVDg/nZPVpTffArcU613J1zrtbnVzlHf5RNi4L62
         gEKRoY9g5RDUVfHi3rysARpbCkaBObLC+MD3Xz6+xmzXVWbN55RW+K3mrANLj7NgAym8
         ryWJOzyrakzRV2G5dV6hIEddXOhJsQE9J0OdnxzsAjeDC1fNuAmzWim5FC1det5g58x8
         plUrMw9XvRrIlYfGLpHz6eyeyLHCAh7tWSi0Nn/IzdPCb8FBl7tSmQAyGai01iwespcf
         rqBvhYwfIz9ERrUCK6g5WGQ4Z5oiTqR4K8nllwnK9XA73jeq0zgZjeuTbll14aTpSzHe
         A1Dg==
X-Forwarded-Encrypted: i=1; AJvYcCXeAP+XLFJECMB7S+Rvrv/jymwDZ1yqwq3IUBVcMU3BHgnWRghGUmmj7m6ttXEAZscGG0SpYEGO4SM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxOK5+s+KROXHJP4glj7Y5ee/nW0cAXv1S+FgkX2WvbD6gqYv1u
	kqff+8nF8A0Kks67+uEMH8MtCqUvkbhi5mz0K+yYsodvBA3VRCGZpPmn1T2VYU0=
X-Google-Smtp-Source: AGHT+IHjMfdXLrv2QjI4dGsCystzvqV+z0amooKETmX5GLht/SKwCp1Q5lp7JHP7EMJUmH7p0KFl0g==
X-Received: by 2002:a17:907:3e90:b0:a9a:634:dd2 with SMTP id a640c23a62f3a-a9ad281453bmr271367566b.43.1729788666019;
        Thu, 24 Oct 2024 09:51:06 -0700 (PDT)
Message-ID: <25ca9f8f-0c34-4dc5-92cc-f54309a87ce4@citrix.com>
Date: Thu, 24 Oct 2024 17:51:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Willi Junga <xenproject@ymy.be>,
 David Woodhouse <dwmw@amazon.co.uk>
References: <20241024154844.8652-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241024154844.8652-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24/10/2024 4:48 pm, Roger Pau Monne wrote:
> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
> repurposed to contain part of the offset into the remapping table.  Previous to
> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> table would match the vector.  Such logic was mandatory for end of interrupt to
> work, since the vector field (even when not containing a vector) is used by the
> IO-APIC to find for which pin the EOI must be performed.
>
> Introduce a table to store the EOI handlers when using interrupt remapping, so
> that the IO-APIC driver can translate pins into EOI handlers without having to
> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> unconditionally when interrupt remapping is enabled, even if strictly it would
> only be required for AMD-Vi.
>
> Reported-by: Willi Junga <xenproject@ymy.be>
> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> Changes since v1:
>  - s/apic_pin_eoi/io_apic_pin_eoi/.
>  - Expand comment about io_apic_pin_eoi usage and layout.
>  - Use uint8_t instead of unsigned int as array type.
>  - Do not use a sentinel value.
> ---
>  xen/arch/x86/io_apic.c | 41 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 41 insertions(+)
>
> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> index e40d2f7dbd75..e3cdfab6359a 100644
> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -71,6 +71,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>  
>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>  
> +/*
> + * Store the EOI handle when using interrupt remapping.
> + *
> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> + * format repurposes the vector field to store the offset into the Interrupt
> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> + * longer matches the contents of the RTE vector field.  Add a translation
> + * table so that directed EOI uses the value in the RTE vector field when
> + * interrupt remapping is enabled.
> + *
> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> + * when using the remapped format, but use the translation table uniformly in
> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> + *
> + * The matrix is accessed as [#io-apic][#pin].
> + */
> +static uint8_t **io_apic_pin_eoi;
> +
>  static void share_vector_maps(unsigned int src, unsigned int dst)
>  {
>      unsigned int pin;
> @@ -273,6 +291,13 @@ void __ioapic_write_entry(
>      {
>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> +        /*
> +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
> +         * Entry will be updated once the array is allocated and there's a
> +         * write against the pin.
> +         */
> +        if ( io_apic_pin_eoi )
> +            io_apic_pin_eoi[apic][pin] = e.vector;
>      }
>      else
>          iommu_update_ire_from_apic(apic, pin, e.raw);
> @@ -298,6 +323,9 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>      /* Prefer the use of the EOI register if available */
>      if ( ioapic_has_eoi_reg(apic) )
>      {
> +        if ( io_apic_pin_eoi )
> +            vector = io_apic_pin_eoi[apic][pin];
> +
>          /* If vector is unknown, read it from the IO-APIC */
>          if ( vector == IRQ_VECTOR_UNASSIGNED )

I'm not sure this works.

https://godbolt.org/z/1a55PnKGq

io_apic_pin_eoi[apic][pin] gets zero extended when assigning to vector,
which can then never match IRQ_VECTOR_UNASSIGNED.

Or doesn't this no longer matter in v2?

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 20:48:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 20:48:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825553.1239820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t44kI-0005z1-Mq; Thu, 24 Oct 2024 20:47:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825553.1239820; Thu, 24 Oct 2024 20:47: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 1t44kI-0005yu-Iy; Thu, 24 Oct 2024 20:47:50 +0000
Received: by outflank-mailman (input) for mailman id 825553;
 Thu, 24 Oct 2024 20:47: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=2xYl=RU=gmail.com=alexdeucher@srs-se1.protection.inumbo.net>)
 id 1t44kG-0005yo-GM
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 20:47:48 +0000
Received: from mail-pg1-x536.google.com (mail-pg1-x536.google.com
 [2607:f8b0:4864:20::536])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 37fecd67-9249-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 22:47:45 +0200 (CEST)
Received: by mail-pg1-x536.google.com with SMTP id
 41be03b00d2f7-7c3d415f85eso150796a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 24 Oct 2024 13:47:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 37fecd67-9249-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1729802863; x=1730407663; 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=X/RaMP1a25SiD6/PgeZb3OYWG0X09tt/78Fw3tyAIdQ=;
        b=PXuqwptdrA1fbFLDWDjewauvkiEbMLJp286+L5gU838wccstzVrNuRWHgOzMDXDpYE
         Q2tEAkuCnC+GEcP+5Ws/NyqY/7TjFIbi1NxnzRSmPdLHP7Du05E3Nug52oY/cKHL68o/
         Nz8E3LG04yq/g1zrykDXm04h0/YCyYdTML98vzhW680G6MDi+G6G4kE5sbxNRgLwZuQl
         m2GSODpXCrelxl2383bNHJoAPpoOI7+eMTGTPbCMkEe5Xv+6EF3n2zLCQ0jmMYGtB7Qm
         bXXvVMmtkX8VudodaKQejHLnUP1nyzuQLuYjAa96ZUH7e0U63Y0hLVujCxk4XwJ7A9wl
         gflQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729802863; x=1730407663;
        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=X/RaMP1a25SiD6/PgeZb3OYWG0X09tt/78Fw3tyAIdQ=;
        b=pcZHlsp9eSHg1HtJieWbIYRFn6QAw4o0htPbHGszDtHVVGZBNJlKawvpTBfHaTd8/l
         wENiInZWM2q0NKuI41DbSdZxi4YGGF6I+GQTvBmX0MJgn1XZdouZgJiaA2CR9wZvnrqk
         ZhkKRoZSIbQSbur6Pp646lXD+FboWMw/rmq9X4fSFtgCw2oEuCF2AF8c+e2SvrWsNu6w
         z0Lh/XAj+Wbt20Q7HMoYODt7Y0BqS5IT7cQBqZctdKHejWEbofng+FVp4w+b4Zp26Kpd
         6G33+PcMzqzRmO6BV5qWlBHmorcCZq2ja4xKZT+G0GOJCQ1qtFMhTvEQ8mPpP+hfhHAh
         vysA==
X-Forwarded-Encrypted: i=1; AJvYcCUCcyWE+dklBc+IUkclIjQ9qDLao8LSXLj6ZBbbj61W+vPtA+1bzIE58i/+FvS6ufA8JvYsuVCZlWQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzHP0AYz3iFVT896QhofP3YLAY/3jDUjCK7MJRzxBC/Gy4fYSfi
	BBUjV+u2SzmhdDKx8/Uihoh4Eza2X+/g2BcWYLhJMGpttxEi9Wr5iOAkP12YMWnv3KayrnEqb5t
	QbEEy6rYcbAA1v4x8f8IAeVHqYr0=
X-Google-Smtp-Source: AGHT+IHMp+plbZRqycGetRwCBLNSkhK3COtBm9zIrIcXNpCKJDsVVAgJtBgU0tKze3Xfsc6S+j87upTInjr/G7l/Utk=
X-Received: by 2002:a05:6a00:2d90:b0:71e:6650:60f7 with SMTP id
 d2e1a72fcca58-72030b6c3f1mr4524506b3a.5.1729802863037; Thu, 24 Oct 2024
 13:47:43 -0700 (PDT)
MIME-Version: 1.0
References: <20241024162240.2398664-1-jani.nikula@intel.com> <20241024162240.2398664-2-jani.nikula@intel.com>
In-Reply-To: <20241024162240.2398664-2-jani.nikula@intel.com>
From: Alex Deucher <alexdeucher@gmail.com>
Date: Thu, 24 Oct 2024 16:47:31 -0400
Message-ID: <CADnq5_NuO1+BbNiQuOxWRhvbiVFptV5bcbQEAR1snS3F1JS7CQ@mail.gmail.com>
Subject: Re: [PATCH 2/2] drm: remove driver date from struct drm_driver and
 all drivers
To: Jani Nikula <jani.nikula@intel.com>
Cc: dri-devel@lists.freedesktop.org, David Airlie <airlied@gmail.com>, 
	Hamza Mahfooz <hamza.mahfooz@amd.com>, Javier Martinez Canillas <javierm@redhat.com>, 
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, 
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Simon Ser <contact@emersion.fr>, 
	Simona Vetter <simona@ffwll.ch>, Thomas Zimmermann <tzimmermann@suse.de>, 
	=?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= <ville.syrjala@linux.intel.com>, 
	amd-gfx@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, 
	nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Oct 24, 2024 at 12:33=E2=80=AFPM Jani Nikula <jani.nikula@intel.com=
> wrote:
>
> We stopped using the driver initialized date in commit 7fb8af6798e8
> ("drm: deprecate driver date") and (eventually) started returning "0"
> for drm_version ioctl instead.
>
> Finish the job, and remove the unused date member from struct
> drm_driver, its initialization from drivers, along with the common
> DRIVER_DATE macros.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Acked-by: Alex Deucher <alexander.deucher@amd.com>

>
> ---
>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Hamza Mahfooz <hamza.mahfooz@amd.com>
> Cc: Javier Martinez Canillas <javierm@redhat.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Cc: Simon Ser <contact@emersion.fr>
> Cc: Simona Vetter <simona@ffwll.ch>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Ville Syrj=C3=A4l=C3=A4 <ville.syrjala@linux.intel.com>
> Cc: amd-gfx@lists.freedesktop.org
> Cc: dri-devel@lists.freedesktop.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: nouveau@lists.freedesktop.org
> Cc: xen-devel@lists.xenproject.org
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c          | 2 --
>  drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h          | 1 -
>  drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 1 -
>  drivers/gpu/drm/arm/hdlcd_drv.c                  | 1 -
>  drivers/gpu/drm/arm/malidp_drv.c                 | 1 -
>  drivers/gpu/drm/armada/armada_drv.c              | 1 -
>  drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 1 -
>  drivers/gpu/drm/ast/ast_drv.c                    | 1 -
>  drivers/gpu/drm/ast/ast_drv.h                    | 1 -
>  drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 1 -
>  drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 1 -
>  drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 --
>  drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 1 -
>  drivers/gpu/drm/gma500/psb_drv.c                 | 1 -
>  drivers/gpu/drm/gma500/psb_drv.h                 | 1 -
>  drivers/gpu/drm/gud/gud_drv.c                    | 1 -
>  drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 1 -
>  drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 1 -
>  drivers/gpu/drm/hyperv/hyperv_drm_drv.c          | 2 --
>  drivers/gpu/drm/i915/i915_driver.c               | 1 -
>  drivers/gpu/drm/i915/i915_driver.h               | 1 -
>  drivers/gpu/drm/i915/i915_gpu_error.c            | 1 -
>  drivers/gpu/drm/imagination/pvr_drv.c            | 1 -
>  drivers/gpu/drm/imagination/pvr_drv.h            | 1 -
>  drivers/gpu/drm/imx/dcss/dcss-kms.c              | 1 -
>  drivers/gpu/drm/imx/ipuv3/imx-drm-core.c         | 1 -
>  drivers/gpu/drm/imx/lcdc/imx-lcdc.c              | 1 -
>  drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 1 -
>  drivers/gpu/drm/kmb/kmb_drv.c                    | 1 -
>  drivers/gpu/drm/kmb/kmb_drv.h                    | 1 -
>  drivers/gpu/drm/lima/lima_drv.c                  | 1 -
>  drivers/gpu/drm/logicvc/logicvc_drm.c            | 1 -
>  drivers/gpu/drm/loongson/lsdc_drv.c              | 2 --
>  drivers/gpu/drm/mcde/mcde_drv.c                  | 1 -
>  drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 --
>  drivers/gpu/drm/meson/meson_drv.c                | 1 -
>  drivers/gpu/drm/mgag200/mgag200_drv.c            | 1 -
>  drivers/gpu/drm/mgag200/mgag200_drv.h            | 1 -
>  drivers/gpu/drm/msm/msm_drv.c                    | 1 -
>  drivers/gpu/drm/mxsfb/lcdif_drv.c                | 1 -
>  drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 1 -
>  drivers/gpu/drm/nouveau/nouveau_drm.c            | 5 -----
>  drivers/gpu/drm/nouveau/nouveau_drv.h            | 1 -
>  drivers/gpu/drm/omapdrm/omap_drv.c               | 2 --
>  drivers/gpu/drm/panfrost/panfrost_drv.c          | 1 -
>  drivers/gpu/drm/panthor/panthor_drv.c            | 1 -
>  drivers/gpu/drm/pl111/pl111_drv.c                | 1 -
>  drivers/gpu/drm/qxl/qxl_drv.c                    | 1 -
>  drivers/gpu/drm/qxl/qxl_drv.h                    | 1 -
>  drivers/gpu/drm/radeon/radeon_drv.c              | 1 -
>  drivers/gpu/drm/radeon/radeon_drv.h              | 1 -
>  drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c    | 1 -
>  drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c     | 1 -
>  drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c | 1 -
>  drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 2 --
>  drivers/gpu/drm/solomon/ssd130x.c                | 2 --
>  drivers/gpu/drm/sprd/sprd_drm.c                  | 2 --
>  drivers/gpu/drm/sti/sti_drv.c                    | 2 --
>  drivers/gpu/drm/stm/drv.c                        | 1 -
>  drivers/gpu/drm/sun4i/sun4i_drv.c                | 1 -
>  drivers/gpu/drm/tegra/drm.c                      | 2 --
>  drivers/gpu/drm/tidss/tidss_drv.c                | 1 -
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 1 -
>  drivers/gpu/drm/tiny/arcpgu.c                    | 1 -
>  drivers/gpu/drm/tiny/bochs.c                     | 1 -
>  drivers/gpu/drm/tiny/cirrus.c                    | 2 --
>  drivers/gpu/drm/tiny/gm12u320.c                  | 2 --
>  drivers/gpu/drm/tiny/hx8357d.c                   | 1 -
>  drivers/gpu/drm/tiny/ili9163.c                   | 1 -
>  drivers/gpu/drm/tiny/ili9225.c                   | 1 -
>  drivers/gpu/drm/tiny/ili9341.c                   | 1 -
>  drivers/gpu/drm/tiny/ili9486.c                   | 1 -
>  drivers/gpu/drm/tiny/mi0283qt.c                  | 1 -
>  drivers/gpu/drm/tiny/ofdrm.c                     | 2 --
>  drivers/gpu/drm/tiny/panel-mipi-dbi.c            | 1 -
>  drivers/gpu/drm/tiny/repaper.c                   | 1 -
>  drivers/gpu/drm/tiny/sharp-memory.c              | 1 -
>  drivers/gpu/drm/tiny/simpledrm.c                 | 2 --
>  drivers/gpu/drm/tiny/st7586.c                    | 1 -
>  drivers/gpu/drm/tiny/st7735r.c                   | 1 -
>  drivers/gpu/drm/tve200/tve200_drv.c              | 1 -
>  drivers/gpu/drm/udl/udl_drv.c                    | 1 -
>  drivers/gpu/drm/udl/udl_drv.h                    | 1 -
>  drivers/gpu/drm/v3d/v3d_drv.c                    | 2 --
>  drivers/gpu/drm/vboxvideo/vbox_drv.c             | 1 -
>  drivers/gpu/drm/vboxvideo/vbox_drv.h             | 1 -
>  drivers/gpu/drm/vc4/vc4_drv.c                    | 3 ---
>  drivers/gpu/drm/vgem/vgem_drv.c                  | 2 --
>  drivers/gpu/drm/virtio/virtgpu_drv.c             | 1 -
>  drivers/gpu/drm/virtio/virtgpu_drv.h             | 1 -
>  drivers/gpu/drm/vkms/vkms_drv.c                  | 2 --
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 1 -
>  drivers/gpu/drm/vmwgfx/vmwgfx_drv.h              | 1 -
>  drivers/gpu/drm/xe/xe_device.c                   | 1 -
>  drivers/gpu/drm/xe/xe_drv.h                      | 1 -
>  drivers/gpu/drm/xen/xen_drm_front.c              | 1 -
>  drivers/gpu/drm/xlnx/zynqmp_kms.c                | 1 -
>  include/drm/drm_drv.h                            | 2 --
>  98 files changed, 123 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/am=
d/amdgpu/amdgpu_drv.c
> index 7273c98c3963..c5cd30797285 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
> @@ -2998,7 +2998,6 @@ static const struct drm_driver amdgpu_kms_driver =
=3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D KMS_DRIVER_MAJOR,
>         .minor =3D KMS_DRIVER_MINOR,
>         .patchlevel =3D KMS_DRIVER_PATCHLEVEL,
> @@ -3022,7 +3021,6 @@ const struct drm_driver amdgpu_partition_driver =3D=
 {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D KMS_DRIVER_MAJOR,
>         .minor =3D KMS_DRIVER_MINOR,
>         .patchlevel =3D KMS_DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h b/drivers/gpu/drm/am=
d/amdgpu/amdgpu_drv.h
> index 5bc2cb661af7..2d86cc6f7f4d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
> @@ -40,7 +40,6 @@
>
>  #define DRIVER_NAME            "amdgpu"
>  #define DRIVER_DESC            "AMD GPU"
> -#define DRIVER_DATE            "20150101"
>
>  extern const struct drm_driver amdgpu_partition_driver;
>
> diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gp=
u/drm/arm/display/komeda/komeda_kms.c
> index 1e7b1fcb2848..6ed504099188 100644
> --- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> +++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
> @@ -63,7 +63,6 @@ static const struct drm_driver komeda_kms_driver =3D {
>         .fops =3D &komeda_cma_fops,
>         .name =3D "komeda",
>         .desc =3D "Arm Komeda Display Processor driver",
> -       .date =3D "20181101",
>         .major =3D 0,
>         .minor =3D 1,
>  };
> diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_=
drv.c
> index cd4389809d42..4e2d6890fb19 100644
> --- a/drivers/gpu/drm/arm/hdlcd_drv.c
> +++ b/drivers/gpu/drm/arm/hdlcd_drv.c
> @@ -233,7 +233,6 @@ static const struct drm_driver hdlcd_driver =3D {
>         .fops =3D &fops,
>         .name =3D "hdlcd",
>         .desc =3D "ARM HDLCD Controller DRM",
> -       .date =3D "20151021",
>         .major =3D 1,
>         .minor =3D 0,
>  };
> diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malid=
p_drv.c
> index 4cb25004b84f..cbdf2b273e75 100644
> --- a/drivers/gpu/drm/arm/malidp_drv.c
> +++ b/drivers/gpu/drm/arm/malidp_drv.c
> @@ -570,7 +570,6 @@ static const struct drm_driver malidp_driver =3D {
>         .fops =3D &fops,
>         .name =3D "mali-dp",
>         .desc =3D "ARM Mali Display Processor driver",
> -       .date =3D "20160106",
>         .major =3D 1,
>         .minor =3D 0,
>  };
> diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada=
/armada_drv.c
> index 5c26f0409478..f0ae46d27c2c 100644
> --- a/drivers/gpu/drm/armada/armada_drv.c
> +++ b/drivers/gpu/drm/armada/armada_drv.c
> @@ -45,7 +45,6 @@ static const struct drm_driver armada_drm_driver =3D {
>         .minor                  =3D 0,
>         .name                   =3D "armada-drm",
>         .desc                   =3D "Armada SoC DRM",
> -       .date                   =3D "20120730",
>         .driver_features        =3D DRIVER_GEM | DRIVER_MODESET | DRIVER_=
ATOMIC,
>         .ioctls                 =3D armada_ioctls,
>         .num_ioctls =3D ARRAY_SIZE(armada_ioctls),
> diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/as=
peed/aspeed_gfx_drv.c
> index 109023815fa2..4dea5b1791b1 100644
> --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
> @@ -252,7 +252,6 @@ static const struct drm_driver aspeed_gfx_driver =3D =
{
>         .fops =3D &fops,
>         .name =3D "aspeed-gfx-drm",
>         .desc =3D "ASPEED GFX DRM",
> -       .date =3D "20180319",
>         .major =3D 1,
>         .minor =3D 0,
>  };
> diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.=
c
> index 4afe4be072ef..4c8198b76b06 100644
> --- a/drivers/gpu/drm/ast/ast_drv.c
> +++ b/drivers/gpu/drm/ast/ast_drv.c
> @@ -60,7 +60,6 @@ static const struct drm_driver ast_driver =3D {
>         .fops =3D &ast_fops,
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.=
h
> index 21ce3769bf0d..6b4305ac07d4 100644
> --- a/drivers/gpu/drm/ast/ast_drv.h
> +++ b/drivers/gpu/drm/ast/ast_drv.h
> @@ -43,7 +43,6 @@
>
>  #define DRIVER_NAME            "ast"
>  #define DRIVER_DESC            "AST"
> -#define DRIVER_DATE            "20120228"
>
>  #define DRIVER_MAJOR           0
>  #define DRIVER_MINOR           1
> diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/d=
rm/atmel-hlcdc/atmel_hlcdc_dc.c
> index 792dcc19e8e7..b6859b39e0e7 100644
> --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
> @@ -846,7 +846,6 @@ static const struct drm_driver atmel_hlcdc_dc_driver =
=3D {
>         .fops =3D &fops,
>         .name =3D "atmel-hlcdc",
>         .desc =3D "Atmel HLCD Controller DRM",
> -       .date =3D "20141504",
>         .major =3D 1,
>         .minor =3D 0,
>  };
> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etna=
viv/etnaviv_drv.c
> index 6500f3999c5f..1d057432bf1d 100644
> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
> @@ -503,7 +503,6 @@ static const struct drm_driver etnaviv_drm_driver =3D=
 {
>         .fops               =3D &fops,
>         .name               =3D "etnaviv",
>         .desc               =3D "etnaviv DRM",
> -       .date               =3D "20151214",
>         .major              =3D 1,
>         .minor              =3D 4,
>  };
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/ex=
ynos/exynos_drm_drv.c
> index 2a466d8179f4..8c3133959147 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -35,7 +35,6 @@
>
>  #define DRIVER_NAME    "exynos"
>  #define DRIVER_DESC    "Samsung SoC DRM"
> -#define DRIVER_DATE    "20180330"
>
>  /*
>   * Interface history:
> @@ -118,7 +117,6 @@ static const struct drm_driver exynos_drm_driver =3D =
{
>         .fops                   =3D &exynos_drm_driver_fops,
>         .name   =3D DRIVER_NAME,
>         .desc   =3D DRIVER_DESC,
> -       .date   =3D DRIVER_DATE,
>         .major  =3D DRIVER_MAJOR,
>         .minor  =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/=
fsl-dcu/fsl_dcu_drm_drv.c
> index 91a48d774cf7..9353c35c2b1f 100644
> --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
> @@ -174,7 +174,6 @@ static const struct drm_driver fsl_dcu_drm_driver =3D=
 {
>         .fops                   =3D &fsl_dcu_drm_fops,
>         .name                   =3D "fsl-dcu-drm",
>         .desc                   =3D "Freescale DCU DRM",
> -       .date                   =3D "20160425",
>         .major                  =3D 1,
>         .minor                  =3D 1,
>  };
> diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/ps=
b_drv.c
> index c419ebbc49ec..c49153d31c34 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.c
> +++ b/drivers/gpu/drm/gma500/psb_drv.c
> @@ -513,7 +513,6 @@ static const struct drm_driver driver =3D {
>         .fops =3D &psb_gem_fops,
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL
> diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/ps=
b_drv.h
> index de62cbfcdc72..7f77cb2b2751 100644
> --- a/drivers/gpu/drm/gma500/psb_drv.h
> +++ b/drivers/gpu/drm/gma500/psb_drv.h
> @@ -26,7 +26,6 @@
>
>  #define DRIVER_NAME "gma500"
>  #define DRIVER_DESC "DRM driver for the Intel GMA500, GMA600, GMA3600, G=
MA3650"
> -#define DRIVER_DATE "20140314"
>
>  #define DRIVER_MAJOR 1
>  #define DRIVER_MINOR 0
> diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.=
c
> index 09ccdc1dc1a2..f5b205776e3d 100644
> --- a/drivers/gpu/drm/gud/gud_drv.c
> +++ b/drivers/gpu/drm/gud/gud_drv.c
> @@ -381,7 +381,6 @@ static const struct drm_driver gud_drm_driver =3D {
>
>         .name                   =3D "gud",
>         .desc                   =3D "Generic USB Display",
> -       .date                   =3D "20200422",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gp=
u/drm/hisilicon/hibmc/hibmc_drm_drv.c
> index 8c488c98ac97..f4bcfbb07788 100644
> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
> @@ -57,7 +57,6 @@ static const struct drm_driver hibmc_driver =3D {
>         .driver_features        =3D DRIVER_GEM | DRIVER_MODESET | DRIVER_=
ATOMIC,
>         .fops                   =3D &hibmc_fops,
>         .name                   =3D "hibmc",
> -       .date                   =3D "20160828",
>         .desc                   =3D "hibmc drm driver",
>         .major                  =3D 1,
>         .minor                  =3D 0,
> diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gp=
u/drm/hisilicon/kirin/kirin_drm_ade.c
> index 5616c3917c03..2eb49177ac42 100644
> --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
> @@ -929,7 +929,6 @@ static const struct drm_driver ade_driver =3D {
>         DRM_FBDEV_DMA_DRIVER_OPS,
>         .name =3D "kirin",
>         .desc =3D "Hisilicon Kirin620 SoC DRM Driver",
> -       .date =3D "20150718",
>         .major =3D 1,
>         .minor =3D 0,
>  };
> diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c b/drivers/gpu/drm/hy=
perv/hyperv_drm_drv.c
> index e0953777a206..ea5e19aecff6 100644
> --- a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
> +++ b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
> @@ -20,7 +20,6 @@
>
>  #define DRIVER_NAME "hyperv_drm"
>  #define DRIVER_DESC "DRM driver for Hyper-V synthetic video device"
> -#define DRIVER_DATE "2020"
>  #define DRIVER_MAJOR 1
>  #define DRIVER_MINOR 0
>
> @@ -31,7 +30,6 @@ static struct drm_driver hyperv_driver =3D {
>
>         .name            =3D DRIVER_NAME,
>         .desc            =3D DRIVER_DESC,
> -       .date            =3D DRIVER_DATE,
>         .major           =3D DRIVER_MAJOR,
>         .minor           =3D DRIVER_MINOR,
>
> diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i9=
15_driver.c
> index 365329ff8a07..1bafefb726f5 100644
> --- a/drivers/gpu/drm/i915/i915_driver.c
> +++ b/drivers/gpu/drm/i915/i915_driver.c
> @@ -1785,7 +1785,6 @@ static const struct drm_driver i915_drm_driver =3D =
{
>         .fops =3D &i915_driver_fops,
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/i915/i915_driver.h b/drivers/gpu/drm/i915/i9=
15_driver.h
> index 94a70d8ec5d5..4b67ad9a61cd 100644
> --- a/drivers/gpu/drm/i915/i915_driver.h
> +++ b/drivers/gpu/drm/i915/i915_driver.h
> @@ -15,7 +15,6 @@ struct drm_printer;
>
>  #define DRIVER_NAME            "i915"
>  #define DRIVER_DESC            "Intel Graphics"
> -#define DRIVER_DATE            "20230929"
>  #define DRIVER_TIMESTAMP       1695980603
>
>  extern const struct dev_pm_ops i915_pm_ops;
> diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915=
/i915_gpu_error.c
> index 135ded17334e..aa3fdc231c47 100644
> --- a/drivers/gpu/drm/i915/i915_gpu_error.c
> +++ b/drivers/gpu/drm/i915/i915_gpu_error.c
> @@ -841,7 +841,6 @@ static void __err_print_to_sgl(struct drm_i915_error_=
state_buf *m,
>         err_printf(m, "Kernel: %s %s\n",
>                    init_utsname()->release,
>                    init_utsname()->machine);
> -       err_printf(m, "Driver: %s\n", DRIVER_DATE);
>         ts =3D ktime_to_timespec64(error->time);
>         err_printf(m, "Time: %lld s %ld us\n",
>                    (s64)ts.tv_sec, ts.tv_nsec / NSEC_PER_USEC);
> diff --git a/drivers/gpu/drm/imagination/pvr_drv.c b/drivers/gpu/drm/imag=
ination/pvr_drv.c
> index 684a9b9a2247..fad7735865d3 100644
> --- a/drivers/gpu/drm/imagination/pvr_drv.c
> +++ b/drivers/gpu/drm/imagination/pvr_drv.c
> @@ -1384,7 +1384,6 @@ static struct drm_driver pvr_drm_driver =3D {
>
>         .name =3D PVR_DRIVER_NAME,
>         .desc =3D PVR_DRIVER_DESC,
> -       .date =3D PVR_DRIVER_DATE,
>         .major =3D PVR_DRIVER_MAJOR,
>         .minor =3D PVR_DRIVER_MINOR,
>         .patchlevel =3D PVR_DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/imagination/pvr_drv.h b/drivers/gpu/drm/imag=
ination/pvr_drv.h
> index 378fe477b759..7fa147312dd1 100644
> --- a/drivers/gpu/drm/imagination/pvr_drv.h
> +++ b/drivers/gpu/drm/imagination/pvr_drv.h
> @@ -9,7 +9,6 @@
>
>  #define PVR_DRIVER_NAME "powervr"
>  #define PVR_DRIVER_DESC "Imagination PowerVR (Series 6 and later) & IMG =
Graphics"
> -#define PVR_DRIVER_DATE "20230904"
>
>  /*
>   * Driver interface version:
> diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dc=
ss/dcss-kms.c
> index 3ec721afc30c..f1e8aea40bdd 100644
> --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
> +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
> @@ -33,7 +33,6 @@ static const struct drm_driver dcss_kms_driver =3D {
>         .fops                   =3D &dcss_cma_fops,
>         .name                   =3D "imx-dcss",
>         .desc                   =3D "i.MX8MQ Display Subsystem",
> -       .date                   =3D "20190917",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>         .patchlevel             =3D 0,
> diff --git a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c b/drivers/gpu/drm/i=
mx/ipuv3/imx-drm-core.c
> index ced06bd8eae8..87d917ae651b 100644
> --- a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
> +++ b/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
> @@ -163,7 +163,6 @@ static const struct drm_driver imx_drm_driver =3D {
>         .fops                   =3D &imx_drm_driver_fops,
>         .name                   =3D "imx-drm",
>         .desc                   =3D "i.MX DRM graphics",
> -       .date                   =3D "20120507",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>         .patchlevel             =3D 0,
> diff --git a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c b/drivers/gpu/drm/imx/lc=
dc/imx-lcdc.c
> index 3215c4acd675..714ca9587ec7 100644
> --- a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
> +++ b/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
> @@ -352,7 +352,6 @@ static struct drm_driver imx_lcdc_drm_driver =3D {
>         DRM_FBDEV_DMA_DRIVER_OPS,
>         .name =3D "imx-lcdc",
>         .desc =3D "i.MX LCDC driver",
> -       .date =3D "20200716",
>  };
>
>  static const struct of_device_id imx_lcdc_of_dev_id[] =3D {
> diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/=
ingenic/ingenic-drm-drv.c
> index 056b70b63554..c5e76e527ef9 100644
> --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
> @@ -953,7 +953,6 @@ static const struct drm_driver ingenic_drm_driver_dat=
a =3D {
>         .driver_features        =3D DRIVER_MODESET | DRIVER_GEM | DRIVER_=
ATOMIC,
>         .name                   =3D "ingenic-drm",
>         .desc                   =3D "DRM module for Ingenic SoCs",
> -       .date                   =3D "20200716",
>         .major                  =3D 1,
>         .minor                  =3D 1,
>         .patchlevel             =3D 0,
> diff --git a/drivers/gpu/drm/kmb/kmb_drv.c b/drivers/gpu/drm/kmb/kmb_drv.=
c
> index 0274ab9caa85..192d9f293514 100644
> --- a/drivers/gpu/drm/kmb/kmb_drv.c
> +++ b/drivers/gpu/drm/kmb/kmb_drv.c
> @@ -445,7 +445,6 @@ static const struct drm_driver kmb_driver =3D {
>         DRM_FBDEV_DMA_DRIVER_OPS,
>         .name =3D "kmb-drm",
>         .desc =3D "KEEMBAY DISPLAY DRIVER",
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/kmb/kmb_drv.h b/drivers/gpu/drm/kmb/kmb_drv.=
h
> index bf085e95b28f..1f0c10d317fe 100644
> --- a/drivers/gpu/drm/kmb/kmb_drv.h
> +++ b/drivers/gpu/drm/kmb/kmb_drv.h
> @@ -16,7 +16,6 @@
>  #define KMB_MIN_WIDTH                   1920 /*Max width in pixels */
>  #define KMB_MIN_HEIGHT                  1080 /*Max height in pixels */
>
> -#define DRIVER_DATE                    "20210223"
>  #define DRIVER_MAJOR                   1
>  #define DRIVER_MINOR                   1
>
> diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_=
drv.c
> index 10bce18b7c31..4b70c5189f7c 100644
> --- a/drivers/gpu/drm/lima/lima_drv.c
> +++ b/drivers/gpu/drm/lima/lima_drv.c
> @@ -271,7 +271,6 @@ static const struct drm_driver lima_drm_driver =3D {
>         .fops               =3D &lima_drm_driver_fops,
>         .name               =3D "lima",
>         .desc               =3D "lima DRM",
> -       .date               =3D "20191231",
>         .major              =3D 1,
>         .minor              =3D 1,
>         .patchlevel         =3D 0,
> diff --git a/drivers/gpu/drm/logicvc/logicvc_drm.c b/drivers/gpu/drm/logi=
cvc/logicvc_drm.c
> index e4d90701b29d..0cd5512e7dd1 100644
> --- a/drivers/gpu/drm/logicvc/logicvc_drm.c
> +++ b/drivers/gpu/drm/logicvc/logicvc_drm.c
> @@ -52,7 +52,6 @@ static struct drm_driver logicvc_drm_driver =3D {
>         .fops                           =3D &logicvc_drm_fops,
>         .name                           =3D "logicvc-drm",
>         .desc                           =3D "Xylon LogiCVC DRM driver",
> -       .date                           =3D "20200403",
>         .major                          =3D 1,
>         .minor                          =3D 0,
>
> diff --git a/drivers/gpu/drm/loongson/lsdc_drv.c b/drivers/gpu/drm/loongs=
on/lsdc_drv.c
> index b350bdcf1645..0dc6afad8e54 100644
> --- a/drivers/gpu/drm/loongson/lsdc_drv.c
> +++ b/drivers/gpu/drm/loongson/lsdc_drv.c
> @@ -26,7 +26,6 @@
>  #define DRIVER_AUTHOR               "Sui Jingfeng <suijingfeng@loongson.=
cn>"
>  #define DRIVER_NAME                 "loongson"
>  #define DRIVER_DESC                 "drm driver for loongson graphics"
> -#define DRIVER_DATE                 "20220701"
>  #define DRIVER_MAJOR                1
>  #define DRIVER_MINOR                0
>  #define DRIVER_PATCHLEVEL           0
> @@ -39,7 +38,6 @@ static const struct drm_driver lsdc_drm_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_=
drv.c
> index f60bdd7b6c13..ba6b0a09f133 100644
> --- a/drivers/gpu/drm/mcde/mcde_drv.c
> +++ b/drivers/gpu/drm/mcde/mcde_drv.c
> @@ -208,7 +208,6 @@ static const struct drm_driver mcde_drm_driver =3D {
>         .fops =3D &drm_fops,
>         .name =3D "mcde",
>         .desc =3D DRIVER_DESC,
> -       .date =3D "20180529",
>         .major =3D 1,
>         .minor =3D 0,
>         .patchlevel =3D 0,
> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/med=
iatek/mtk_drm_drv.c
> index a4594f8873d5..d12c924661d1 100644
> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> @@ -32,7 +32,6 @@
>
>  #define DRIVER_NAME "mediatek"
>  #define DRIVER_DESC "Mediatek SoC DRM"
> -#define DRIVER_DATE "20150513"
>  #define DRIVER_MAJOR 1
>  #define DRIVER_MINOR 0
>
> @@ -615,7 +614,6 @@ static const struct drm_driver mtk_drm_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/me=
son_drv.c
> index 7cace75a38af..e035fb7ddb83 100644
> --- a/drivers/gpu/drm/meson/meson_drv.c
> +++ b/drivers/gpu/drm/meson/meson_drv.c
> @@ -105,7 +105,6 @@ static const struct drm_driver meson_driver =3D {
>         .fops                   =3D &fops,
>         .name                   =3D DRIVER_NAME,
>         .desc                   =3D DRIVER_DESC,
> -       .date                   =3D "20161109",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag=
200/mgag200_drv.c
> index 97fd7eb765b4..ab46ae004a92 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.c
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
> @@ -97,7 +97,6 @@ static const struct drm_driver mgag200_driver =3D {
>         .fops =3D &mgag200_driver_fops,
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag=
200/mgag200_drv.h
> index 988967eafbf2..0608fc63e588 100644
> --- a/drivers/gpu/drm/mgag200/mgag200_drv.h
> +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
> @@ -25,7 +25,6 @@
>
>  #define DRIVER_NAME            "mgag200"
>  #define DRIVER_DESC            "MGA G200 SE"
> -#define DRIVER_DATE            "20110418"
>
>  #define DRIVER_MAJOR           1
>  #define DRIVER_MINOR           0
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.=
c
> index edbc1ab0fbc8..d03726fefa5e 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -910,7 +910,6 @@ static const struct drm_driver msm_driver =3D {
>         .fops               =3D &fops,
>         .name               =3D "msm",
>         .desc               =3D "MSM Snapdragon DRM",
> -       .date               =3D "20130625",
>         .major              =3D MSM_VERSION_MAJOR,
>         .minor              =3D MSM_VERSION_MINOR,
>         .patchlevel         =3D MSM_VERSION_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/mxsfb/lcdif_drv.c b/drivers/gpu/drm/mxsfb/lc=
dif_drv.c
> index 58ccad9c425d..c27d5583fdf8 100644
> --- a/drivers/gpu/drm/mxsfb/lcdif_drv.c
> +++ b/drivers/gpu/drm/mxsfb/lcdif_drv.c
> @@ -248,7 +248,6 @@ static const struct drm_driver lcdif_driver =3D {
>         .fops   =3D &fops,
>         .name   =3D "imx-lcdif",
>         .desc   =3D "i.MX LCDIF Controller DRM",
> -       .date   =3D "20220417",
>         .major  =3D 1,
>         .minor  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mx=
sfb_drv.c
> index 34a98717b72c..0e0d3a0962f8 100644
> --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
> @@ -336,7 +336,6 @@ static const struct drm_driver mxsfb_driver =3D {
>         .fops   =3D &fops,
>         .name   =3D "mxsfb-drm",
>         .desc   =3D "MXSFB Controller DRM",
> -       .date   =3D "20160824",
>         .major  =3D 1,
>         .minor  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouv=
eau/nouveau_drm.c
> index 107f63f08bd9..fdf90d48d5ea 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -1326,11 +1326,6 @@ driver_stub =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -#ifdef GIT_REVISION
> -       .date =3D GIT_REVISION,
> -#else
> -       .date =3D DRIVER_DATE,
> -#endif
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouv=
eau/nouveau_drv.h
> index 685d6ca3d8aa..55abc510067b 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drv.h
> +++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
> @@ -7,7 +7,6 @@
>
>  #define DRIVER_NAME            "nouveau"
>  #define DRIVER_DESC            "nVidia Riva/TNT/GeForce/Quadro/Tesla/Teg=
ra K1+"
> -#define DRIVER_DATE            "20120801"
>
>  #define DRIVER_MAJOR           1
>  #define DRIVER_MINOR           4
> diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm=
/omap_drv.c
> index 1796cd20a877..a80e0f375a0e 100644
> --- a/drivers/gpu/drm/omapdrm/omap_drv.c
> +++ b/drivers/gpu/drm/omapdrm/omap_drv.c
> @@ -28,7 +28,6 @@
>
>  #define DRIVER_NAME            MODULE_NAME
>  #define DRIVER_DESC            "OMAP DRM"
> -#define DRIVER_DATE            "20110917"
>  #define DRIVER_MAJOR           1
>  #define DRIVER_MINOR           0
>  #define DRIVER_PATCHLEVEL      0
> @@ -653,7 +652,6 @@ static const struct drm_driver omap_drm_driver =3D {
>         .fops =3D &omapdriver_fops,
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/pa=
nfrost/panfrost_drv.c
> index 04d615df5259..fbaef3afcd66 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
> @@ -636,7 +636,6 @@ static const struct drm_driver panfrost_drm_driver =
=3D {
>         .fops                   =3D &panfrost_drm_driver_fops,
>         .name                   =3D "panfrost",
>         .desc                   =3D "panfrost DRM",
> -       .date                   =3D "20180908",
>         .major                  =3D 1,
>         .minor                  =3D 3,
>
> diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/pant=
hor/panthor_drv.c
> index ac7e53f6e3f0..ad46a40ed9e1 100644
> --- a/drivers/gpu/drm/panthor/panthor_drv.c
> +++ b/drivers/gpu/drm/panthor/panthor_drv.c
> @@ -1505,7 +1505,6 @@ static const struct drm_driver panthor_drm_driver =
=3D {
>         .fops =3D &panthor_drm_driver_fops,
>         .name =3D "panthor",
>         .desc =3D "Panthor DRM driver",
> -       .date =3D "20230801",
>         .major =3D 1,
>         .minor =3D 2,
>
> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl=
111_drv.c
> index 13362150b9c6..cc505790eaf3 100644
> --- a/drivers/gpu/drm/pl111/pl111_drv.c
> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
> @@ -220,7 +220,6 @@ static const struct drm_driver pl111_drm_driver =3D {
>         .fops =3D &drm_fops,
>         .name =3D "pl111",
>         .desc =3D DRIVER_DESC,
> -       .date =3D "20170317",
>         .major =3D 1,
>         .minor =3D 0,
>         .patchlevel =3D 0,
> diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.=
c
> index 21f752644242..80118bcfd402 100644
> --- a/drivers/gpu/drm/qxl/qxl_drv.c
> +++ b/drivers/gpu/drm/qxl/qxl_drv.c
> @@ -300,7 +300,6 @@ static struct drm_driver qxl_driver =3D {
>         .num_ioctls =3D ARRAY_SIZE(qxl_ioctls),
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D 0,
>         .minor =3D 1,
>         .patchlevel =3D 0,
> diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.=
h
> index 32069acd93f8..24874ff9efc9 100644
> --- a/drivers/gpu/drm/qxl/qxl_drv.h
> +++ b/drivers/gpu/drm/qxl/qxl_drv.h
> @@ -54,7 +54,6 @@ struct iosys_map;
>
>  #define DRIVER_NAME            "qxl"
>  #define DRIVER_DESC            "RH QXL"
> -#define DRIVER_DATE            "20120117"
>
>  #define DRIVER_MAJOR 0
>  #define DRIVER_MINOR 1
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon=
/radeon_drv.c
> index 23d6d1a2586d..60e1a783a476 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.c
> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
> @@ -604,7 +604,6 @@ static const struct drm_driver kms_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D KMS_DRIVER_MAJOR,
>         .minor =3D KMS_DRIVER_MINOR,
>         .patchlevel =3D KMS_DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon=
/radeon_drv.h
> index 02a65971d140..0f3dbffc492d 100644
> --- a/drivers/gpu/drm/radeon/radeon_drv.h
> +++ b/drivers/gpu/drm/radeon/radeon_drv.h
> @@ -43,7 +43,6 @@
>
>  #define DRIVER_NAME            "radeon"
>  #define DRIVER_DESC            "ATI Radeon"
> -#define DRIVER_DATE            "20080528"
>
>  /* Interface history:
>   *
> diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c b/drivers/gpu/=
drm/renesas/rcar-du/rcar_du_drv.c
> index 4e0bafc86f50..6cf28032fc3f 100644
> --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
> +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
> @@ -611,7 +611,6 @@ static const struct drm_driver rcar_du_driver =3D {
>         .fops                   =3D &rcar_du_fops,
>         .name                   =3D "rcar-du",
>         .desc                   =3D "Renesas R-Car Display Unit",
> -       .date                   =3D "20130110",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c b/drivers/gpu/d=
rm/renesas/rz-du/rzg2l_du_drv.c
> index bbd7003335da..55ba426d9462 100644
> --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
> +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
> @@ -84,7 +84,6 @@ static const struct drm_driver rzg2l_du_driver =3D {
>         .fops                   =3D &rzg2l_du_fops,
>         .name                   =3D "rzg2l-du",
>         .desc                   =3D "Renesas RZ/G2L Display Unit",
> -       .date                   =3D "20230410",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c b/drivers/g=
pu/drm/renesas/shmobile/shmob_drm_drv.c
> index 8d3effe3f598..8d58547a6fc1 100644
> --- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
> +++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
> @@ -107,7 +107,6 @@ static const struct drm_driver shmob_drm_driver =3D {
>         .fops                   =3D &shmob_drm_fops,
>         .name                   =3D "shmob-drm",
>         .desc                   =3D "Renesas SH Mobile DRM",
> -       .date                   =3D "20120424",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/dr=
m/rockchip/rockchip_drm_drv.c
> index 585355de696b..768517cf3c6b 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
> @@ -39,7 +39,6 @@
>
>  #define DRIVER_NAME    "rockchip"
>  #define DRIVER_DESC    "RockChip Soc DRM"
> -#define DRIVER_DATE    "20140818"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -235,7 +234,6 @@ static const struct drm_driver rockchip_drm_driver =
=3D {
>         .fops                   =3D &rockchip_drm_driver_fops,
>         .name   =3D DRIVER_NAME,
>         .desc   =3D DRIVER_DESC,
> -       .date   =3D DRIVER_DATE,
>         .major  =3D DRIVER_MAJOR,
>         .minor  =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/=
ssd130x.c
> index 29b2f82d81f8..dd78138605ca 100644
> --- a/drivers/gpu/drm/solomon/ssd130x.c
> +++ b/drivers/gpu/drm/solomon/ssd130x.c
> @@ -39,7 +39,6 @@
>
>  #define DRIVER_NAME    "ssd130x"
>  #define DRIVER_DESC    "DRM driver for Solomon SSD13xx OLED displays"
> -#define DRIVER_DATE    "20220131"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -1784,7 +1783,6 @@ static const struct drm_driver ssd130x_drm_driver =
=3D {
>         DRM_FBDEV_SHMEM_DRIVER_OPS,
>         .name                   =3D DRIVER_NAME,
>         .desc                   =3D DRIVER_DESC,
> -       .date                   =3D DRIVER_DATE,
>         .major                  =3D DRIVER_MAJOR,
>         .minor                  =3D DRIVER_MINOR,
>         .driver_features        =3D DRIVER_ATOMIC | DRIVER_GEM | DRIVER_M=
ODESET,
> diff --git a/drivers/gpu/drm/sprd/sprd_drm.c b/drivers/gpu/drm/sprd/sprd_=
drm.c
> index a74cd0caf645..867ee2d8997f 100644
> --- a/drivers/gpu/drm/sprd/sprd_drm.c
> +++ b/drivers/gpu/drm/sprd/sprd_drm.c
> @@ -23,7 +23,6 @@
>
>  #define DRIVER_NAME    "sprd"
>  #define DRIVER_DESC    "Spreadtrum SoCs' DRM Driver"
> -#define DRIVER_DATE    "20200201"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -59,7 +58,6 @@ static struct drm_driver sprd_drm_drv =3D {
>
>         .name                   =3D DRIVER_NAME,
>         .desc                   =3D DRIVER_DESC,
> -       .date                   =3D DRIVER_DATE,
>         .major                  =3D DRIVER_MAJOR,
>         .minor                  =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.=
c
> index 65f180c8e8e2..78213d205b02 100644
> --- a/drivers/gpu/drm/sti/sti_drv.c
> +++ b/drivers/gpu/drm/sti/sti_drv.c
> @@ -29,7 +29,6 @@
>
>  #define DRIVER_NAME    "sti"
>  #define DRIVER_DESC    "STMicroelectronics SoC DRM"
> -#define DRIVER_DATE    "20140601"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -143,7 +142,6 @@ static const struct drm_driver sti_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
> index 478dc129d5c2..450ba6daabb3 100644
> --- a/drivers/gpu/drm/stm/drv.c
> +++ b/drivers/gpu/drm/stm/drv.c
> @@ -62,7 +62,6 @@ static const struct drm_driver drv_driver =3D {
>         .driver_features =3D DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>         .name =3D "stm",
>         .desc =3D "STMicroelectronics SoC DRM",
> -       .date =3D "20170330",
>         .major =3D 1,
>         .minor =3D 0,
>         .patchlevel =3D 0,
> diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/su=
n4i_drv.c
> index 3f880d8a5666..dc17fe51f959 100644
> --- a/drivers/gpu/drm/sun4i/sun4i_drv.c
> +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
> @@ -50,7 +50,6 @@ static const struct drm_driver sun4i_drv_driver =3D {
>         .fops                   =3D &sun4i_drv_fops,
>         .name                   =3D "sun4i-drm",
>         .desc                   =3D "Allwinner sun4i Display Engine",
> -       .date                   =3D "20150629",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>
> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
> index babcb3958f86..05f866e46bb4 100644
> --- a/drivers/gpu/drm/tegra/drm.c
> +++ b/drivers/gpu/drm/tegra/drm.c
> @@ -35,7 +35,6 @@
>
>  #define DRIVER_NAME "tegra"
>  #define DRIVER_DESC "NVIDIA Tegra graphics"
> -#define DRIVER_DATE "20120330"
>  #define DRIVER_MAJOR 1
>  #define DRIVER_MINOR 0
>  #define DRIVER_PATCHLEVEL 0
> @@ -901,7 +900,6 @@ static const struct drm_driver tegra_drm_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/ti=
dss_drv.c
> index 2428b9aaa003..f165513342a1 100644
> --- a/drivers/gpu/drm/tidss/tidss_drv.c
> +++ b/drivers/gpu/drm/tidss/tidss_drv.c
> @@ -113,7 +113,6 @@ static const struct drm_driver tidss_driver =3D {
>         DRM_FBDEV_DMA_DRIVER_OPS,
>         .name                   =3D "tidss",
>         .desc                   =3D "TI Keystone DSS",
> -       .date                   =3D "20180215",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc=
/tilcdc_drv.c
> index 8c9f3705aa6c..541076167923 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -481,7 +481,6 @@ static const struct drm_driver tilcdc_driver =3D {
>         .fops               =3D &fops,
>         .name               =3D "tilcdc",
>         .desc               =3D "TI LCD Controller DRM",
> -       .date               =3D "20121205",
>         .major              =3D 1,
>         .minor              =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/arcpgu.c b/drivers/gpu/drm/tiny/arcpgu.=
c
> index 81abedec435d..70947571483e 100644
> --- a/drivers/gpu/drm/tiny/arcpgu.c
> +++ b/drivers/gpu/drm/tiny/arcpgu.c
> @@ -366,7 +366,6 @@ static const struct drm_driver arcpgu_drm_driver =3D =
{
>         .driver_features =3D DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
>         .name =3D "arcpgu",
>         .desc =3D "ARC PGU Controller",
> -       .date =3D "20160219",
>         .major =3D 1,
>         .minor =3D 0,
>         .patchlevel =3D 0,
> diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
> index 447989bb8201..2b0af6a64dc2 100644
> --- a/drivers/gpu/drm/tiny/bochs.c
> +++ b/drivers/gpu/drm/tiny/bochs.c
> @@ -671,7 +671,6 @@ static const struct drm_driver bochs_driver =3D {
>         .fops                   =3D &bochs_fops,
>         .name                   =3D "bochs-drm",
>         .desc                   =3D "bochs dispi vga interface (qemu stdv=
ga)",
> -       .date                   =3D "20130925",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>         DRM_GEM_SHMEM_DRIVER_OPS,
> diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.=
c
> index f06a2be71f60..3354bd3e3611 100644
> --- a/drivers/gpu/drm/tiny/cirrus.c
> +++ b/drivers/gpu/drm/tiny/cirrus.c
> @@ -48,7 +48,6 @@
>
>  #define DRIVER_NAME "cirrus"
>  #define DRIVER_DESC "qemu cirrus vga"
> -#define DRIVER_DATE "2019"
>  #define DRIVER_MAJOR 2
>  #define DRIVER_MINOR 0
>
> @@ -657,7 +656,6 @@ static const struct drm_driver cirrus_driver =3D {
>
>         .name            =3D DRIVER_NAME,
>         .desc            =3D DRIVER_DESC,
> -       .date            =3D DRIVER_DATE,
>         .major           =3D DRIVER_MAJOR,
>         .minor           =3D DRIVER_MINOR,
>
> diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u=
320.c
> index 0c17ae532fb4..c8b2be766a47 100644
> --- a/drivers/gpu/drm/tiny/gm12u320.c
> +++ b/drivers/gpu/drm/tiny/gm12u320.c
> @@ -34,7 +34,6 @@ MODULE_PARM_DESC(eco_mode, "Turn on Eco mode (less brig=
ht, more silent)");
>
>  #define DRIVER_NAME            "gm12u320"
>  #define DRIVER_DESC            "Grain Media GM12U320 USB projector displ=
ay"
> -#define DRIVER_DATE            "2019"
>  #define DRIVER_MAJOR           1
>  #define DRIVER_MINOR           0
>
> @@ -626,7 +625,6 @@ static const struct drm_driver gm12u320_drm_driver =
=3D {
>
>         .name            =3D DRIVER_NAME,
>         .desc            =3D DRIVER_DESC,
> -       .date            =3D DRIVER_DATE,
>         .major           =3D DRIVER_MAJOR,
>         .minor           =3D DRIVER_MINOR,
>
> diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357=
d.c
> index 6b0d1846cfcf..d0e6cd13a8d2 100644
> --- a/drivers/gpu/drm/tiny/hx8357d.c
> +++ b/drivers/gpu/drm/tiny/hx8357d.c
> @@ -199,7 +199,6 @@ static const struct drm_driver hx8357d_driver =3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "hx8357d",
>         .desc                   =3D "HX8357D",
> -       .date                   =3D "20181023",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/ili9163.c b/drivers/gpu/drm/tiny/ili916=
3.c
> index 5eb39ca1a855..863565989204 100644
> --- a/drivers/gpu/drm/tiny/ili9163.c
> +++ b/drivers/gpu/drm/tiny/ili9163.c
> @@ -118,7 +118,6 @@ static struct drm_driver ili9163_driver =3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "ili9163",
>         .desc                   =3D "Ilitek ILI9163",
> -       .date                   =3D "20210208",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili922=
5.c
> index 875e2d09729a..43faacb254c7 100644
> --- a/drivers/gpu/drm/tiny/ili9225.c
> +++ b/drivers/gpu/drm/tiny/ili9225.c
> @@ -364,7 +364,6 @@ static const struct drm_driver ili9225_driver =3D {
>         DRM_FBDEV_DMA_DRIVER_OPS,
>         .name                   =3D "ili9225",
>         .desc                   =3D "Ilitek ILI9225",
> -       .date                   =3D "20171106",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili934=
1.c
> index c1dfdfbbd30c..914beb3a85c3 100644
> --- a/drivers/gpu/drm/tiny/ili9341.c
> +++ b/drivers/gpu/drm/tiny/ili9341.c
> @@ -155,7 +155,6 @@ static const struct drm_driver ili9341_driver =3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "ili9341",
>         .desc                   =3D "Ilitek ILI9341",
> -       .date                   =3D "20180514",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili948=
6.c
> index 7e46a720d5e2..509a412e562c 100644
> --- a/drivers/gpu/drm/tiny/ili9486.c
> +++ b/drivers/gpu/drm/tiny/ili9486.c
> @@ -177,7 +177,6 @@ static const struct drm_driver ili9486_driver =3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "ili9486",
>         .desc                   =3D "Ilitek ILI9486",
> -       .date                   =3D "20200118",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi028=
3qt.c
> index f1461c55dba6..5afe1ba89ffa 100644
> --- a/drivers/gpu/drm/tiny/mi0283qt.c
> +++ b/drivers/gpu/drm/tiny/mi0283qt.c
> @@ -159,7 +159,6 @@ static const struct drm_driver mi0283qt_driver =3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "mi0283qt",
>         .desc                   =3D "Multi-Inno MI0283QT",
> -       .date                   =3D "20160614",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/ofdrm.c b/drivers/gpu/drm/tiny/ofdrm.c
> index 220c1244b3c0..a964754d4f86 100644
> --- a/drivers/gpu/drm/tiny/ofdrm.c
> +++ b/drivers/gpu/drm/tiny/ofdrm.c
> @@ -25,7 +25,6 @@
>
>  #define DRIVER_NAME    "ofdrm"
>  #define DRIVER_DESC    "DRM driver for OF platform devices"
> -#define DRIVER_DATE    "20220501"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -1348,7 +1347,6 @@ static struct drm_driver ofdrm_driver =3D {
>         DRM_FBDEV_SHMEM_DRIVER_OPS,
>         .name                   =3D DRIVER_NAME,
>         .desc                   =3D DRIVER_DESC,
> -       .date                   =3D DRIVER_DATE,
>         .major                  =3D DRIVER_MAJOR,
>         .minor                  =3D DRIVER_MINOR,
>         .driver_features        =3D DRIVER_ATOMIC | DRIVER_GEM | DRIVER_M=
ODESET,
> diff --git a/drivers/gpu/drm/tiny/panel-mipi-dbi.c b/drivers/gpu/drm/tiny=
/panel-mipi-dbi.c
> index e66729b31bd6..12bbeec80fbf 100644
> --- a/drivers/gpu/drm/tiny/panel-mipi-dbi.c
> +++ b/drivers/gpu/drm/tiny/panel-mipi-dbi.c
> @@ -269,7 +269,6 @@ static const struct drm_driver panel_mipi_dbi_driver =
=3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "panel-mipi-dbi",
>         .desc                   =3D "MIPI DBI compatible display panel",
> -       .date                   =3D "20220103",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repape=
r.c
> index 77944eb17b3c..031c1bcdc947 100644
> --- a/drivers/gpu/drm/tiny/repaper.c
> +++ b/drivers/gpu/drm/tiny/repaper.c
> @@ -917,7 +917,6 @@ static const struct drm_driver repaper_driver =3D {
>         DRM_FBDEV_DMA_DRIVER_OPS,
>         .name                   =3D "repaper",
>         .desc                   =3D "Pervasive Displays RePaper e-ink pan=
els",
> -       .date                   =3D "20170405",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/sharp-memory.c b/drivers/gpu/drm/tiny/s=
harp-memory.c
> index 2d2315bd6aef..5bc7339a54ac 100644
> --- a/drivers/gpu/drm/tiny/sharp-memory.c
> +++ b/drivers/gpu/drm/tiny/sharp-memory.c
> @@ -107,7 +107,6 @@ static const struct drm_driver sharp_memory_drm_drive=
r =3D {
>         DRM_FBDEV_DMA_DRIVER_OPS,
>         .name                   =3D "sharp_memory_display",
>         .desc                   =3D "Sharp Display Memory LCD",
> -       .date                   =3D "20231129",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simp=
ledrm.c
> index 3182d32f1b8f..9efa66800ca8 100644
> --- a/drivers/gpu/drm/tiny/simpledrm.c
> +++ b/drivers/gpu/drm/tiny/simpledrm.c
> @@ -31,7 +31,6 @@
>
>  #define DRIVER_NAME    "simpledrm"
>  #define DRIVER_DESC    "DRM driver for simple-framebuffer platform devic=
es"
> -#define DRIVER_DATE    "20200625"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -1015,7 +1014,6 @@ static struct drm_driver simpledrm_driver =3D {
>         DRM_FBDEV_SHMEM_DRIVER_OPS,
>         .name                   =3D DRIVER_NAME,
>         .desc                   =3D DRIVER_DESC,
> -       .date                   =3D DRIVER_DATE,
>         .major                  =3D DRIVER_MAJOR,
>         .minor                  =3D DRIVER_MINOR,
>         .driver_features        =3D DRIVER_ATOMIC | DRIVER_GEM | DRIVER_M=
ODESET,
> diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.=
c
> index 97013685c62f..c2ad886d9898 100644
> --- a/drivers/gpu/drm/tiny/st7586.c
> +++ b/drivers/gpu/drm/tiny/st7586.c
> @@ -295,7 +295,6 @@ static const struct drm_driver st7586_driver =3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "st7586",
>         .desc                   =3D "Sitronix ST7586",
> -       .date                   =3D "20170801",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735=
r.c
> index 0747ebd999cc..6b36f36b8d84 100644
> --- a/drivers/gpu/drm/tiny/st7735r.c
> +++ b/drivers/gpu/drm/tiny/st7735r.c
> @@ -160,7 +160,6 @@ static const struct drm_driver st7735r_driver =3D {
>         .debugfs_init           =3D mipi_dbi_debugfs_init,
>         .name                   =3D "st7735r",
>         .desc                   =3D "Sitronix ST7735R",
> -       .date                   =3D "20171128",
>         .major                  =3D 1,
>         .minor                  =3D 0,
>  };
> diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200=
/tve200_drv.c
> index b30340a2141d..d18289638679 100644
> --- a/drivers/gpu/drm/tve200/tve200_drv.c
> +++ b/drivers/gpu/drm/tve200/tve200_drv.c
> @@ -146,7 +146,6 @@ static const struct drm_driver tve200_drm_driver =3D =
{
>         .fops =3D &drm_fops,
>         .name =3D "tve200",
>         .desc =3D DRIVER_DESC,
> -       .date =3D "20170703",
>         .major =3D 1,
>         .minor =3D 0,
>         .patchlevel =3D 0,
> diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.=
c
> index 8d8ae40f945c..8d5240ae9fa3 100644
> --- a/drivers/gpu/drm/udl/udl_drv.c
> +++ b/drivers/gpu/drm/udl/udl_drv.c
> @@ -78,7 +78,6 @@ static const struct drm_driver driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.=
h
> index 1eb716d9dad5..be00dc1d87a1 100644
> --- a/drivers/gpu/drm/udl/udl_drv.h
> +++ b/drivers/gpu/drm/udl/udl_drv.h
> @@ -26,7 +26,6 @@ struct drm_mode_create_dumb;
>
>  #define DRIVER_NAME            "udl"
>  #define DRIVER_DESC            "DisplayLink"
> -#define DRIVER_DATE            "20120220"
>
>  #define DRIVER_MAJOR           0
>  #define DRIVER_MINOR           0
> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.=
c
> index fb35c5c3f1a7..9d8de9146cb0 100644
> --- a/drivers/gpu/drm/v3d/v3d_drv.c
> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
> @@ -31,7 +31,6 @@
>
>  #define DRIVER_NAME "v3d"
>  #define DRIVER_DESC "Broadcom V3D graphics"
> -#define DRIVER_DATE "20180419"
>  #define DRIVER_MAJOR 1
>  #define DRIVER_MINOR 0
>  #define DRIVER_PATCHLEVEL 0
> @@ -248,7 +247,6 @@ static const struct drm_driver v3d_drm_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxv=
ideo/vbox_drv.c
> index a536c467e2b2..f3800d47473b 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
> @@ -189,7 +189,6 @@ static const struct drm_driver driver =3D {
>         .fops =3D &vbox_fops,
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.h b/drivers/gpu/drm/vboxv=
ideo/vbox_drv.h
> index e77bd6512eb1..dfa935f381a6 100644
> --- a/drivers/gpu/drm/vboxvideo/vbox_drv.h
> +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.h
> @@ -25,7 +25,6 @@
>
>  #define DRIVER_NAME         "vboxvideo"
>  #define DRIVER_DESC         "Oracle VM VirtualBox Graphics Card"
> -#define DRIVER_DATE         "20130823"
>
>  #define DRIVER_MAJOR        1
>  #define DRIVER_MINOR        0
> diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.=
c
> index d47e5967592f..5ecf28f013fd 100644
> --- a/drivers/gpu/drm/vc4/vc4_drv.c
> +++ b/drivers/gpu/drm/vc4/vc4_drv.c
> @@ -47,7 +47,6 @@
>
>  #define DRIVER_NAME "vc4"
>  #define DRIVER_DESC "Broadcom VC4 graphics"
> -#define DRIVER_DATE "20140616"
>  #define DRIVER_MAJOR 0
>  #define DRIVER_MINOR 0
>  #define DRIVER_PATCHLEVEL 0
> @@ -222,7 +221,6 @@ const struct drm_driver vc4_drm_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> @@ -244,7 +242,6 @@ const struct drm_driver vc5_drm_driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_=
drv.c
> index c5e3e5457737..2752ab4f1c97 100644
> --- a/drivers/gpu/drm/vgem/vgem_drv.c
> +++ b/drivers/gpu/drm/vgem/vgem_drv.c
> @@ -47,7 +47,6 @@
>
>  #define DRIVER_NAME    "vgem"
>  #define DRIVER_DESC    "Virtual GEM provider"
> -#define DRIVER_DATE    "20120112"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -121,7 +120,6 @@ static const struct drm_driver vgem_driver =3D {
>
>         .name   =3D DRIVER_NAME,
>         .desc   =3D DRIVER_DESC,
> -       .date   =3D DRIVER_DATE,
>         .major  =3D DRIVER_MAJOR,
>         .minor  =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virti=
o/virtgpu_drv.c
> index ffca6e2e1c9a..933e22b7dada 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
> @@ -202,7 +202,6 @@ static const struct drm_driver driver =3D {
>
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virti=
o/virtgpu_drv.h
> index 64c236169db8..ccd2c8a1060b 100644
> --- a/drivers/gpu/drm/virtio/virtgpu_drv.h
> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
> @@ -45,7 +45,6 @@
>
>  #define DRIVER_NAME "virtio_gpu"
>  #define DRIVER_DESC "virtio GPU"
> -#define DRIVER_DATE "0"
>
>  #define DRIVER_MAJOR 0
>  #define DRIVER_MINOR 1
> diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_=
drv.c
> index 2d1e95cb66e5..576d2208b548 100644
> --- a/drivers/gpu/drm/vkms/vkms_drv.c
> +++ b/drivers/gpu/drm/vkms/vkms_drv.c
> @@ -34,7 +34,6 @@
>
>  #define DRIVER_NAME    "vkms"
>  #define DRIVER_DESC    "Virtual Kernel Mode Setting"
> -#define DRIVER_DATE    "20180514"
>  #define DRIVER_MAJOR   1
>  #define DRIVER_MINOR   0
>
> @@ -117,7 +116,6 @@ static const struct drm_driver vkms_driver =3D {
>
>         .name                   =3D DRIVER_NAME,
>         .desc                   =3D DRIVER_DESC,
> -       .date                   =3D DRIVER_DATE,
>         .major                  =3D DRIVER_MAJOR,
>         .minor                  =3D DRIVER_MINOR,
>  };
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx=
/vmwgfx_drv.c
> index 2c46897876dd..b81179545cb9 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1634,7 +1634,6 @@ static const struct drm_driver driver =3D {
>         .fops =3D &vmwgfx_driver_fops,
>         .name =3D VMWGFX_DRIVER_NAME,
>         .desc =3D VMWGFX_DRIVER_DESC,
> -       .date =3D VMWGFX_DRIVER_DATE,
>         .major =3D VMWGFX_DRIVER_MAJOR,
>         .minor =3D VMWGFX_DRIVER_MINOR,
>         .patchlevel =3D VMWGFX_DRIVER_PATCHLEVEL
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx=
/vmwgfx_drv.h
> index b21831ef214a..5275ef632d4b 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> @@ -57,7 +57,6 @@
>
>
>  #define VMWGFX_DRIVER_NAME "vmwgfx"
> -#define VMWGFX_DRIVER_DATE "20211206"
>  #define VMWGFX_DRIVER_MAJOR 2
>  #define VMWGFX_DRIVER_MINOR 20
>  #define VMWGFX_DRIVER_PATCHLEVEL 0
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_devic=
e.c
> index 51bb9d875268..8b30e73db8de 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -278,7 +278,6 @@ static struct drm_driver driver =3D {
>         .fops =3D &xe_driver_fops,
>         .name =3D DRIVER_NAME,
>         .desc =3D DRIVER_DESC,
> -       .date =3D DRIVER_DATE,
>         .major =3D DRIVER_MAJOR,
>         .minor =3D DRIVER_MINOR,
>         .patchlevel =3D DRIVER_PATCHLEVEL,
> diff --git a/drivers/gpu/drm/xe/xe_drv.h b/drivers/gpu/drm/xe/xe_drv.h
> index d45b71426cc8..d61650d4aa0b 100644
> --- a/drivers/gpu/drm/xe/xe_drv.h
> +++ b/drivers/gpu/drm/xe/xe_drv.h
> @@ -10,7 +10,6 @@
>
>  #define DRIVER_NAME            "xe"
>  #define DRIVER_DESC            "Intel Xe Graphics"
> -#define DRIVER_DATE            "20201103"
>
>  /* Interface history:
>   *
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xe=
n_drm_front.c
> index 931d855bfbe8..1bda7ef606cc 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -478,7 +478,6 @@ static const struct drm_driver xen_drm_driver =3D {
>         .fops                      =3D &xen_drm_dev_fops,
>         .name                      =3D "xendrm-du",
>         .desc                      =3D "Xen PV DRM Display Unit",
> -       .date                      =3D "20180221",
>         .major                     =3D 1,
>         .minor                     =3D 0,
>
> diff --git a/drivers/gpu/drm/xlnx/zynqmp_kms.c b/drivers/gpu/drm/xlnx/zyn=
qmp_kms.c
> index 2452c2f09161..736df17dfc26 100644
> --- a/drivers/gpu/drm/xlnx/zynqmp_kms.c
> +++ b/drivers/gpu/drm/xlnx/zynqmp_kms.c
> @@ -409,7 +409,6 @@ static const struct drm_driver zynqmp_dpsub_drm_drive=
r =3D {
>
>         .name                           =3D "zynqmp-dpsub",
>         .desc                           =3D "Xilinx DisplayPort Subsystem=
 Driver",
> -       .date                           =3D "20130509",
>         .major                          =3D 1,
>         .minor                          =3D 0,
>  };
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 1bbbcb8e2d23..1b6e59139e6c 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -401,8 +401,6 @@ struct drm_driver {
>         char *name;
>         /** @desc: driver description */
>         char *desc;
> -       /** @date: driver date, unused, to be removed */
> -       char *date;
>
>         /**
>          * @driver_features:
> --
> 2.39.5
>


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 23:04:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 23:04:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825569.1239830 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t46s7-0004ff-3e; Thu, 24 Oct 2024 23:04:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825569.1239830; Thu, 24 Oct 2024 23:04: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 1t46s7-0004fY-0e; Thu, 24 Oct 2024 23:04:03 +0000
Received: by outflank-mailman (input) for mailman id 825569;
 Thu, 24 Oct 2024 23:04: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=V9Wq=RU=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t46s6-0004fS-Bc
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 23:04:02 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 40f568d4-925c-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 01:04:00 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 529CAA42A8E;
 Thu, 24 Oct 2024 23:02:02 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id DD184C4CEC7;
 Thu, 24 Oct 2024 23:03: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: 40f568d4-925c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729811038;
	bh=69xkGBy86Y1KNVknzhmmc/TThQsTDEvn9KVscxFXZ68=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=sRx4bDrg6jXwEz4tp+mbUcWp0HWjXpAZ9dwQ6A1+9c23tPlAUEFDfjLbnxyQx8yNv
	 AxdOFhGd1e+YNnqGs1xykggHd1qCBQe7wXyvvlw0ewvrmVjw0bpSf5cT4hNR548S8J
	 MIfKmeQ34ibpbLQTgsUtZV/DxCmCpbPtjibPeHTrhBqYSh9u+WL3Sxe0a/9s46AP2Q
	 7i6rRNEdIaba4O8JTW2xYmk8yTzIVbzBzcVA7+/AoDcmrYRV1JLUi/qvc1WVgn9aK4
	 jlNOeTizk1hR5lRT9AMvNrBZydvsDwz7J8mWaesAub8inGTFUvmA4U8AbLkiS/Zhrp
	 D5vN/sdMHXnsQ==
Date: Thu, 24 Oct 2024 16:03:56 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Javi Merino <javi.merino@cloud.com>
cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v1 3/6] CI: Refresh the Debian 12 arm64 container
In-Reply-To: <50c1ec986787c8fe3bf975b0003069b67e885032.1729760501.git.javi.merino@cloud.com>
Message-ID: <alpine.DEB.2.22.394.2410241601480.3833@ubuntu-linux-20-04-desktop>
References: <cover.1729760501.git.javi.merino@cloud.com> <50c1ec986787c8fe3bf975b0003069b67e885032.1729760501.git.javi.merino@cloud.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 24 Oct 2024, Javi Merino wrote:
> Rework the container to use heredocs for readability and use apt-get
> --no-install-recommends to keep the size down.  Rename the job to
> debian-12-arm64-* to follow the naming scheme of all the other CI jobs.
> 
> This reduces the size of the debian:12-arm64v8 from 2.25GB down to 1.62GB.

Hi Javi, I am a bit confused by the new list of packages. I diff'ed the
old list with the new list, and I appended the difference below. Maybe I
ask how did you manage to make the new list? As an example, are bcc and
bin86 necessary?

 acpica-tools
+bcc
+bin86
 bison
 build-essential
 busybox-static
-ca-certificates
 checkpolicy
+clang
 cpio
 curl
 device-tree-compiler
 expect
-file
 flex
-git-core
-golang-go
-libbz2-dev
-libext2fs-dev
+git
+libaio-dev
 libfdt-dev
+libfindlib-ocaml-dev
 libglib2.0-dev
 liblzma-dev
-liblzo2-dev
+libncurses5-dev
+libnl-3-dev
 libpixman-1-dev
 libyajl-dev
-libzstd-dev
-ocaml-findlib
+markdown
+nasm
 ocaml-nox
+pandoc
 pkg-config
 python3-dev
 python3-setuptools
+transfig
 u-boot-qemu
 u-boot-tools
 uuid-dev
 wget
+zlib1g-dev


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 23:11:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 23:11:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825576.1239839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t46zX-0006HA-QQ; Thu, 24 Oct 2024 23:11:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825576.1239839; Thu, 24 Oct 2024 23:11: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 1t46zX-0006H3-Nd; Thu, 24 Oct 2024 23:11:43 +0000
Received: by outflank-mailman (input) for mailman id 825576;
 Thu, 24 Oct 2024 23: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=V9Wq=RU=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t46zX-0006Gm-0R
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 23:11:43 +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 53533190-925d-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 01:11:40 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 1420E5C4D95;
 Thu, 24 Oct 2024 23:10:54 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 74EB6C4CEC7;
 Thu, 24 Oct 2024 23:11: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: 53533190-925d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729811498;
	bh=B4N5fOAjcnNfHi8pCEsYXHDBtP66zuk4hiJVUUz5q1Q=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=OGUmJ2Xl+v3767F443G1C+jTvE4b5n8Oc4lcvKd2a5DkAKwHVe0lvZO6qYjojvTz8
	 vsjl6OW2U7L0D9CsRtDgrmX8l+r/FVBGQfcmvuOyhMDSTcSEjdWUlOdICBbe/x0HHw
	 PKT9/pLRY4vgwSnr87+VxchbeyedMCs6f2PXytXsdCbOng5IeHUShSqSSewJPDZpTz
	 d9oimS5J7HmBfdQrPLxSVAaZsP/BBHozHjzD6apbI1jhkVXPDlxKbSY/RrjMYV2Vy4
	 Go6rjvDBHPc6M0zHIG5pjuvEj+VVrbKXqdwE8pp13dY6jg0FdTR2RLKjHBeJXgvROj
	 Sf7CtMFOBoWag==
Date: Thu, 24 Oct 2024 16:11:36 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Javi Merino <javi.merino@cloud.com>
cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Michal Orzel <michal.orzel@amd.com>
Subject: Re: [XEN PATCH v1 5/6] CI: Refresh the Debian 12 cppcheck
 container
In-Reply-To: <a34d46bde06bab872c19119a7466ac8942a0c137.1729760501.git.javi.merino@cloud.com>
Message-ID: <alpine.DEB.2.22.394.2410241610590.3833@ubuntu-linux-20-04-desktop>
References: <cover.1729760501.git.javi.merino@cloud.com> <a34d46bde06bab872c19119a7466ac8942a0c137.1729760501.git.javi.merino@cloud.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII


> heredocs for readability and use apt-get --no-install-recommends to
> keep the size down.
> 
> Changed the libpcre3-dev dependency to libpcre3, as the -dev package
> is only needed for building, not for running.
> 
> With the cleanups, the size of the container is reduced from 882MB to
> 782MB.
> 
> Signed-off-by: Javi Merino <javi.merino@cloud.com>

Assuming everything works as expected:
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> 
> I tried updating cppcheck to the latest upstream version (2.15.0) but
> it reports misra errors like:
> 
>     xen/common/sched/cpupool.c(0,0):internalError:error:Bailing out from analysis: Checking file failed: Failed to execute addon 'misra' - exitcode is 1
>     [...]
>     xen/arch/arm/decode.c(220,10):misra-config:error:Because of missing configuration, misra checking is incomplete. There can be false negatives! Variable 'type' is unknown
> 
> The output log xen-cppcheck.txt from job #8164274901 which uses
> cppcheck 2.15.0 can be found at:
> https://gitlab.com/xen-project/people/javimerino/xen/-/jobs/8164274901/artifacts/browse
> 
> Therefore, I'm keeping cppcheck at 2.7, which aligns with what
> docs/misra/cppcheck.txt says is the last tested version.

Yes, better to do the upgrade separately


>  .../debian/12-arm64v8-cppcheck.dockerfile     | 80 +++++++++++++++++++
>  .../build/debian/bookworm-cppcheck.dockerfile | 54 -------------
>  automation/gitlab-ci/build.yaml               | 12 +--
>  automation/scripts/containerize               |  2 +-
>  4 files changed, 87 insertions(+), 61 deletions(-)
>  create mode 100644 automation/build/debian/12-arm64v8-cppcheck.dockerfile
>  delete mode 100644 automation/build/debian/bookworm-cppcheck.dockerfile
> 
> diff --git a/automation/build/debian/12-arm64v8-cppcheck.dockerfile b/automation/build/debian/12-arm64v8-cppcheck.dockerfile
> new file mode 100644
> index 000000000000..a839d4c57bda
> --- /dev/null
> +++ b/automation/build/debian/12-arm64v8-cppcheck.dockerfile
> @@ -0,0 +1,80 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/arm64/v8 debian:bookworm AS builder
> +
> +ENV DEBIAN_FRONTEND=noninteractive
> +ENV CPPCHECK_VERSION=2.7
> +
> +# dependencies for cppcheck build
> +RUN <<EOF
> +#!/bin/bash
> +    set -eu
> +
> +    apt-get update
> +    DEPS=(
> +        build-essential
> +        ca-certificates
> +        curl
> +        libpcre3-dev
> +        python-is-python3
> +    )
> +
> +    apt-get -y --no-install-recommends install "${DEPS[@]}"
> +
> +    rm -rf /var/lib/apt/lists*
> +EOF
> +
> +RUN useradd --home /build --create-home user
> +
> +WORKDIR /build
> +USER user
> +
> +# cppcheck release build (see cppcheck readme.md)
> +RUN <<EOF
> +#!/bin/bash
> +    set -eu
> +
> +    curl -fsSL https://github.com/danmar/cppcheck/archive/"$CPPCHECK_VERSION".tar.gz | tar xvz
> +    cd cppcheck-"$CPPCHECK_VERSION"
> +
> +    MAKE_OPTS=(
> +        MATCHCOMPILER=yes
> +        DESTDIR=/build/out
> +        FILESDIR="/usr/share/cppcheck"
> +        HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
> +    )
> +    make install -j$(nproc) "${MAKE_OPTS[@]}"
> +EOF
> +
> +FROM --platform=linux/arm64/v8 debian:bookworm
> +COPY --from=builder /build/out/usr/bin/cppcheck /usr/bin/cppcheck
> +COPY --from=builder /build/out/usr/share/cppcheck /usr/share/cppcheck
> +
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"
> +
> +ENV DEBIAN_FRONTEND=noninteractive
> +ENV USER root
> +
> +# dependencies for cppcheck analysis including Xen-only build/cross-build
> +RUN <<EOF
> +#!/bin/bash
> +    set -eu
> +
> +    useradd --create-home user
> +
> +    apt-get update
> +    DEPS=(
> +        bison
> +        build-essential
> +        python-is-python3
> +        libpcre3
> +        flex
> +        gcc-arm-linux-gnueabihf
> +        gcc-x86-64-linux-gnu
> +    )
> +    apt-get --yes --no-install-recommends install "${DEPS[@]}"
> +    rm -rf /var/lib/apt/lists*
> +EOF
> +
> +USER user
> +WORKDIR /build
> diff --git a/automation/build/debian/bookworm-cppcheck.dockerfile b/automation/build/debian/bookworm-cppcheck.dockerfile
> deleted file mode 100644
> index fe4cd4a1aaab..000000000000
> --- a/automation/build/debian/bookworm-cppcheck.dockerfile
> +++ /dev/null
> @@ -1,54 +0,0 @@
> -# syntax=docker/dockerfile:1
> -FROM --platform=linux/arm64/v8 debian:bookworm AS builder
> -
> -ENV DEBIAN_FRONTEND=noninteractive
> -ENV CPPCHECK_VERSION=2.7
> -ENV USER root
> -
> -# dependencies for cppcheck build
> -RUN apt-get update && \
> -    apt-get --quiet --yes install \
> -        curl \
> -        build-essential \
> -        python-is-python3 \
> -        libpcre3-dev
> -
> -RUN mkdir /build
> -WORKDIR /build
> -
> -# cppcheck release build (see cppcheck readme.md)
> -RUN curl -fsSLO https://github.com/danmar/cppcheck/archive/"$CPPCHECK_VERSION".tar.gz && \
> -    tar xvzf "$CPPCHECK_VERSION".tar.gz && \
> -    cd cppcheck-"$CPPCHECK_VERSION" && \
> -    make install -j$(nproc) \
> -        MATCHCOMPILER=yes \
> -        FILESDIR=/usr/share/cppcheck \
> -        HAVE_RULES=yes CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
> -
> -FROM --platform=linux/arm64/v8 debian:bookworm
> -COPY --from=builder /usr/bin/cppcheck /usr/bin/cppcheck
> -COPY --from=builder /usr/share/cppcheck /usr/share/cppcheck
> -
> -LABEL maintainer.name="The Xen Project" \
> -      maintainer.email="xen-devel@lists.xenproject.org"
> -
> -ENV DEBIAN_FRONTEND=noninteractive
> -ENV USER root
> -
> -RUN mkdir /build
> -WORKDIR /build
> -
> -# dependencies for cppcheck analysis including Xen-only build/cross-build
> -RUN apt-get update && \
> -    apt-get --quiet --yes install \
> -        build-essential \
> -        python-is-python3 \
> -        libpcre3-dev \
> -        flex \
> -        bison \
> -        gcc-arm-linux-gnueabihf \
> -        gcc-x86-64-linux-gnu \
> -        && \
> -        apt-get autoremove -y && \
> -        apt-get clean && \
> -        rm -rf /var/lib/apt/lists* /tmp/* /var/tmp/*
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> index 380021d49f12..c57882b8846e 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -488,26 +488,26 @@ yocto-qemux86-64:
>  
>  # Cppcheck analysis jobs
>  
> -debian-bookworm-gcc-cppcheck:
> +debian-12-x86_64-gcc-cppcheck:
>    extends: .gcc-x86-64-cross-build
>    variables:
> -    CONTAINER: debian:bookworm-cppcheck
> +    CONTAINER: debian:12-arm64v8-cppcheck
>      CROSS_COMPILE: /usr/bin/x86_64-linux-gnu-
>      CPPCHECK: y
>      HYPERVISOR_ONLY: y
>  
> -debian-bookworm-gcc-arm32-cppcheck:
> +debian-12-arm32-gcc-cppcheck:
>    extends: .gcc-arm32-cross-build
>    variables:
> -    CONTAINER: debian:bookworm-cppcheck
> +    CONTAINER: debian:12-arm64v8-cppcheck
>      CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf-
>      CPPCHECK: y
>      HYPERVISOR_ONLY: y
>  
> -debian-bookworm-gcc-arm64-cppcheck:
> +debian-12-arm64-gcc-cppcheck:
>    extends: .gcc-arm64-build
>    variables:
> -    CONTAINER: debian:bookworm-cppcheck
> +    CONTAINER: debian:12-arm64v8-cppcheck
>      CPPCHECK: y
>      HYPERVISOR_ONLY: y
>  
> diff --git a/automation/scripts/containerize b/automation/scripts/containerize
> index c9988bfe927d..e5502c81a759 100755
> --- a/automation/scripts/containerize
> +++ b/automation/scripts/containerize
> @@ -38,7 +38,7 @@ case "_${CONTAINER}" in
>      _bookworm-i386|_bookworm-x86_32) CONTAINER="${BASE}/debian:12-x86_32" ;;
>      _bookworm-arm64v8-arm32-gcc) CONTAINER="${BASE}/debian:12-arm64v8-arm32-gcc" ;;
>      _bookworm-arm64v8) CONTAINER="${BASE}/debian:12-arm64v8" ;;
> -    _bookworm-cppcheck) CONTAINER="${BASE}/debian:bookworm-cppcheck" ;;
> +    _bookworm-cppcheck) CONTAINER="${BASE}/debian:12-arm64v8-cppcheck" ;;
>      _opensuse-leap|_leap) CONTAINER="${BASE}/opensuse:leap-15.6-x86_64" ;;
>      _opensuse-tumbleweed|_tumbleweed) CONTAINER="${BASE}/opensuse:tumbleweed-x86_64" ;;
>      _xenial) CONTAINER="${BASE}/ubuntu:16.04-x86_64" ;;
> -- 
> 2.45.2
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 24 23:27:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 23:27:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825584.1239859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t47Ed-0008R8-9a; Thu, 24 Oct 2024 23:27:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825584.1239859; Thu, 24 Oct 2024 23: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 1t47Ed-0008R1-6M; Thu, 24 Oct 2024 23:27:19 +0000
Received: by outflank-mailman (input) for mailman id 825584;
 Thu, 24 Oct 2024 23:27: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=QKxT=RU=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t47Eb-0008CW-UF
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 23:27:18 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20623.outbound.protection.outlook.com
 [2a01:111:f403:2409::623])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 80f8d9dc-925f-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 01:27:16 +0200 (CEST)
Received: from CH5PR02CA0007.namprd02.prod.outlook.com (2603:10b6:610:1ed::29)
 by CY5PR12MB9054.namprd12.prod.outlook.com (2603:10b6:930:36::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Thu, 24 Oct
 2024 23:27:11 +0000
Received: from CH1PEPF0000A34B.namprd04.prod.outlook.com
 (2603:10b6:610:1ed:cafe::87) by CH5PR02CA0007.outlook.office365.com
 (2603:10b6:610:1ed::29) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17 via Frontend
 Transport; Thu, 24 Oct 2024 23:27:10 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000A34B.mail.protection.outlook.com (10.167.244.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Thu, 24 Oct 2024 23:27:10 +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.39; Thu, 24 Oct
 2024 18:27:09 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Thu, 24 Oct 2024 18:27:09 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 80f8d9dc-925f-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=sQeZtL3r9EWdz9KiUOXlB9VZ5O7a9YFC44zMiL8Ks0DFQPoNKQ61kSejsQhmYbDb1c9lO3j4IGYnwtPQf+4Vhpg2BA04CwCh9QTPg9WC4+Zdb5YQyoB1vDaAHYLnQuw+VWp9coRz19kRarbWmDZA5fth2P6RDfqjRzGRhnhqvgTKB/k9VyfKsMOA1MpIqAXjDPRt8LvMmICUO1NIN/bO2k8DHX9SwDldo9+Ytgd7o9DQ6EXU1p95wzUri3xxYbodp9zZtBrEi7Ri6oiBPjCoBjJrjrxoSCiktUyFw0Z6BNownByql5HYY7tOeHzVPYVkw0lKa1oErosGDoU7xns8Bw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Q0LUaJFjT8XwdIp5i3PMV+jsR+6lpYkPiBuKahmzJMs=;
 b=p6bXEjCvSMdF642puMkQMWi9x0ZplPsMcFYrt8jH6SPwPjJtq89nceucljEFzk9xN1VvF7iVPHis5aoKlVdmesqqQ3QX/QLWrut39ZOnEeHc0Yc9zvlqh11wRMpyIG7RNCpp/RofYYhLxaw66Vn1WvphxbtPcyKA7LAyBLo/PdXdCGUJKIVM6fPxbuZaoIxU8xuLsf3fSFdnSlkj44KhazNC01/6QyjDu7/jDV/SBX1I9GWJUr+OqsOJu655R9cK8U7/pqM30pzBSBjahjPQ8FKQX7/Tic7Af4yKkebiJZ8W6ZaR1h0Z0J4omKpiTxKnldCwtcNjBjWkXiMmm/nBHg==
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=Q0LUaJFjT8XwdIp5i3PMV+jsR+6lpYkPiBuKahmzJMs=;
 b=MpdiylOvuwAzQLonqq+UCOehqMcQ1rxLlSdQnrZvJ2YCp1B2Y0zMtuon+f6u0ecGKtcet+XDSsH7bKOpuS0wJkE72BOCsXvq1z9NnHAZ8o99TKtUimydNN13ZLRCazlidGg1IDTQ49t4PnhlIJVuf1ImuiEUExlUdDhgJyqrAYQ=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [TEST_ARTIFACTS PATCH v1 1/1] build: add x86_64 xen artifacts (argo)
Date: Thu, 24 Oct 2024 16:26:49 -0700
Message-ID: <3161fa3f955cda2d3c968d18c8afcc38316323bf.1729809799.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <cover.1729809799.git.victorm.lira@amd.com>
References: <cover.1729809799.git.victorm.lira@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB03.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000A34B:EE_|CY5PR12MB9054:EE_
X-MS-Office365-Filtering-Correlation-Id: 20744b89-a4aa-4fc0-6366-08dcf4836254
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|36860700013|82310400026|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eXoyZlNkMEE0eXZETnJsbTl4aHVlNjQvYTB2bWdsNlM2SlJ2N2JSTnUxWWh3?=
 =?utf-8?B?NHAwVmpUcjNhVzMzVXVGdk13dmQwNVU0Q3BJVy9tVFB1cFNjc3AxaGIvbDla?=
 =?utf-8?B?V2ZOOVgxSE12L3VsU3NWQTE0VnVkMGI1RXRjWm1saXZ5ZmJEbmlpUXp6QXNR?=
 =?utf-8?B?RTBvOGUwVm9wcDN6RUJHamcrdVorQUdzdmFXOWxsbVhYOWZxenIvaDZNZCtG?=
 =?utf-8?B?Q0MweUNCUENDUmwzbFZNQWZ6UzZoS1UzOW41Q3M4WUdKMkltYk41OFlxN1Bq?=
 =?utf-8?B?YzBmeTRxamYyRllpdWhRSnRFbFd5QWxReU5jckRobjBXV2pvaUVQVnM0Yzd1?=
 =?utf-8?B?ZFIrSjJjcVdHMTd1ZUY1dGpJclk4MEIxZ0EycU1wQ0JkN1A1Q1IvY1BBcjg4?=
 =?utf-8?B?Z3dxeU5BaUZSUzlXeFdCWGhMRTU5YVhqejUzWHdRR1ZTSE03YlVLcHNmRnhu?=
 =?utf-8?B?L3NHL0xFYlE4NUg4RmRRNXVWd2NiL2hlc3ZPWDdhNGV4UVRQYnlnWWlLS1lj?=
 =?utf-8?B?WGxiR05LbittOXk0M2pGWENkY0x3SlhJWFhUNUdBOG16TlMxMFBDK2JjbmZp?=
 =?utf-8?B?ejNycjc1THJxeGl1d0ZFT2laM0RDRmZ0d3JDRUJYeElOL04yOGJLMit0RHFu?=
 =?utf-8?B?NDcvL2hEZllZa0ZqMlVKKzc3UUZnMjY2ZVNScjB2TEM0Wjg5Rnl0ZFFjTTBN?=
 =?utf-8?B?bDZNeFcxcFlweUVEUnVEKzhNYmoxR3hQcm02eXpKYUJRcG02K3FKcFRNUkU4?=
 =?utf-8?B?WFRaakF6cUpsU1ZIVWRqK3VqdHp5QUFOOTVXRS9CWWxlaDFHcWVZTEhVaTFI?=
 =?utf-8?B?dFhnSXZFSkxJR0RkZU1iV1hFVElyVWpPNHBkenNKcGFlampqVytwNTFKWkEz?=
 =?utf-8?B?RFprb2t6NE9BTW9vdWFvMFI5RTVFMzFNTVlPaGxQT0hNTWNjYWJvckc0bDVu?=
 =?utf-8?B?VnN1eXFudzVSVzRINzg3UWlQQ1hFdVpHNC9PUi96cW1zS1Q3RVVjb2pVQVpE?=
 =?utf-8?B?VHZXYXNiTTVkaVY1SDdlcGRGeXpxZlBUbi9UcW5iMGI4WkVPckpkQ3FiSUlp?=
 =?utf-8?B?ZmFGbmJNc2h6WUdnOVR3N2cyeDZ1N2JRdHZuRGI2TE5ncTV2MjYxbjRXTUJ0?=
 =?utf-8?B?TGM0M3JONlhLb0Q0WmYxdzUwVlQxZURNTis4cmxib0NwOFpaeTQxemJhdmkx?=
 =?utf-8?B?Q1NRZys3eVdwYmpERnJWUnFpU3l2NFJxR3k1dllURm1rTUlmWnZ1bW9na3d6?=
 =?utf-8?B?ZUtzRXB4NnROZS83VW5tTHV2ZS9YZ2NXS1VKdmlMbUFDRFhlYVhCWTh3OFhP?=
 =?utf-8?B?bVNBUUhuUy93NS9sd3hxeTByTEtRVE40QzVxbTI2TGt5bVJnV0lKSDAxK2Rh?=
 =?utf-8?B?ekdnTDFkUVRYNW8yT0tWQ3pldUgyZ2pLZGY4MjIrMzJaWUNmYitHaENQY25N?=
 =?utf-8?B?ZkNJU3BlRDJua1NNU2RqcjE3cHozNkhOOTdRWVRQd1RUbHFtOCtOaEM2M1pB?=
 =?utf-8?B?ZmpxK1dqM0NTRlg4eDhadWFGMlloQXFzSkVVb1BKQmptemFObE42SHExV0Vv?=
 =?utf-8?B?T0hxTmRUeU9DYnI4NHpoVmhDL3J6MlV1Y0Nma3BJU0IvbFZ5cXBUdUVrWWxw?=
 =?utf-8?B?QjhpNHdkVlhJaDNBWmdpVVBUcmp4bGhWSUl1bldlM2dhZ1BoejBnL2tVKzc5?=
 =?utf-8?B?aHF3QUlJdmEySjdQaHNnK2dmc3J5cFpZdlNkenRBbFVkZWZaR21meTlyaDNR?=
 =?utf-8?B?QlZWTkZBN0xkbS9vckwrMUpzZU8vYkxZem96a21Kd3FqbmxYNWtXQkZOV0Zo?=
 =?utf-8?Q?py9NseH7ei2/wdxg8M34r8KZMLVmXt6rhyceo=3D?=
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:(13230040)(1800799024)(36860700013)(82310400026)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 23:27:10.6421
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 20744b89-a4aa-4fc0-6366-08dcf4836254
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:
	CH1PEPF0000A34B.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB9054

From: Victor Lira <victorm.lira@amd.com>

Add container image build files:
- alpine/x86_64-build
- alpine/x86_64-rootfs
- Makefile

Add CI configuration and jobs to produce binaries for xen tests:
- xen-argo          Linux Xen Argo kernel module
- bzImage           Linux kernel
- libargo           Linux Argo shared library
- argo-exec         Linux Argo test program
- initrd.tar.gz     Alpine Linux rootfs

Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Changes v1:
- Update dockerfile format to group dependencies
- add user to build container
---
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 .gitlab-ci.yml                         | 50 ++++++++++++++++++++
 binaries/.gitignore                    |  3 ++
 images/Makefile                        | 20 ++++++++
 images/alpine/x86_64-build.dockerfile  | 31 +++++++++++++
 images/alpine/x86_64-rootfs.dockerfile |  4 ++
 scripts/x86_64-argo-linux.sh           | 63 ++++++++++++++++++++++++++
 scripts/x86_64-kernel-linux.sh         | 31 +++++++++++++
 scripts/x86_64-rootfs-alpine.sh        | 58 ++++++++++++++++++++++++
 8 files changed, 260 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 binaries/.gitignore
 create mode 100644 images/Makefile
 create mode 100644 images/alpine/x86_64-build.dockerfile
 create mode 100644 images/alpine/x86_64-rootfs.dockerfile
 create mode 100755 scripts/x86_64-argo-linux.sh
 create mode 100755 scripts/x86_64-kernel-linux.sh
 create mode 100755 scripts/x86_64-rootfs-alpine.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..7e18a87
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,50 @@
+workflow:
+  name: "xen test artifacts"
+
+.artifacts:
+  stage: build
+  image:
+    name: registry.gitlab.com/xen-project/hardware/test-artifacts/${CONTAINER}
+  artifacts:
+    name: "${CI_JOB_NAME_SLUG}"
+    paths:
+      - binaries/
+    exclude:
+      - binaries/.gitignore
+
+.x86_64-artifacts:
+  extends: .artifacts
+  image:
+    docker:
+      platform: linux/amd64
+      user: xenproject
+  tags:
+    - x86_64
+  variables:
+    CONTAINER: alpine:x86_64-build
+
+x86_64-kernel-linux-6.6.56:
+  extends: .x86_64-artifacts
+  script:
+    - . scripts/x86_64-kernel-linux.sh
+  variables:
+    LINUX_VERSION: 6.6.56
+
+x86_64-rootfs-alpine-3.18:
+  extends: .x86_64-artifacts
+  image:
+    docker:
+      user: root
+  script:
+    - . scripts/x86_64-rootfs-alpine.sh
+  variables:
+    CONTAINER: alpine:x86_64-rootfs
+
+x86_64-argo-linux-6.6.56:
+  extends: .x86_64-artifacts
+  script:
+    - . scripts/x86_64-argo-linux.sh
+  variables:
+    LINUX_VERSION: 6.6.56
+    ARGO_SHA: "705a7a8a624b42e13e655d3042059b8a85cdf6a3"
+    ARGOEXEC_SHA: "d900429f6640acc6f68a3d3a4c945d7da60625d8"
diff --git a/binaries/.gitignore b/binaries/.gitignore
new file mode 100644
index 0000000..95e2a2e
--- /dev/null
+++ b/binaries/.gitignore
@@ -0,0 +1,3 @@
+# Keep this directory around to be available in CI/CD jobs.
+*
+!.gitignore
diff --git a/images/Makefile b/images/Makefile
new file mode 100644
index 0000000..42f231b
--- /dev/null
+++ b/images/Makefile
@@ -0,0 +1,20 @@
+
+# The base of where these containers will appear
+REGISTRY := registry.gitlab.com/xen-project/hardware/test-artifacts
+CONTAINERS = $(subst .dockerfile,,$(wildcard */*.dockerfile))
+
+help:
+	@echo "Containers to build test artifacts."
+	@echo "To build one run 'make DISTRO/TAG'."
+	@echo "Available containers:"
+	@$(foreach file,$(sort $(CONTAINERS)),echo ${file};)
+	@echo "To push container builds, set the environment variable PUSH"
+
+%: %.dockerfile ## Builds containers
+	docker build --pull -t $(REGISTRY)/$(@D):$(@F) -f $< $(<D)
+	@if [ ! -z $${PUSH+x} ]; then \
+		docker push $(REGISTRY)/$(@D):$(@F); \
+	fi
+
+.PHONY: all
+all: $(CONTAINERS)
diff --git a/images/alpine/x86_64-build.dockerfile b/images/alpine/x86_64-build.dockerfile
new file mode 100644
index 0000000..3bfd172
--- /dev/null
+++ b/images/alpine/x86_64-build.dockerfile
@@ -0,0 +1,31 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 alpine:3.18
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
+
+WORKDIR /build/
+
+RUN apk --no-cache add bash
+
+RUN bash -ex <<EOF
+      adduser -D xenproject --shell bash
+
+      DEPS=(
+            musl-dev
+            build-base
+            libc6-compat
+            linux-headers
+            bash
+            git
+            curl
+            flex
+            bison
+            elfutils-dev
+            autoconf
+            automake
+            libtool
+            openssl-dev
+      )
+
+      apk add --no-cache "\${DEPS[@]}"
+EOF
diff --git a/images/alpine/x86_64-rootfs.dockerfile b/images/alpine/x86_64-rootfs.dockerfile
new file mode 100644
index 0000000..b912e9c
--- /dev/null
+++ b/images/alpine/x86_64-rootfs.dockerfile
@@ -0,0 +1,4 @@
+# syntax=docker/dockerfile:1
+FROM --platform=linux/amd64 alpine:3.18
+LABEL maintainer.name="The Xen Project" \
+      maintainer.email="xen-devel@lists.xenproject.org"
diff --git a/scripts/x86_64-argo-linux.sh b/scripts/x86_64-argo-linux.sh
new file mode 100755
index 0000000..a110a33
--- /dev/null
+++ b/scripts/x86_64-argo-linux.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+
+if test -z "${LINUX_VERSION}"
+then
+    >&2 echo "LINUX_VERSION must be set"; exit 1
+fi
+
+set -ex -o pipefail
+
+BUILDDIR="${PWD}"
+COPYDIR="${BUILDDIR}/binaries/"
+
+# Prepare Linux sources
+curl -fsSLO \
+    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
+tar xJf linux-"${LINUX_VERSION}".tar.xz
+cd linux-"${LINUX_VERSION}"
+make ARCH=x86 defconfig
+make ARCH=x86 xen.config
+./scripts/config --enable BRIDGE
+./scripts/config --enable IGC
+./scripts/config --enable TUN
+cp .config .config.orig
+cat .config.orig \
+    | grep 'XEN' \
+    | grep '=m' \
+    | sed 's/=m/=y/g' \
+    >> .config
+make ARCH=x86 olddefconfig
+make ARCH=x86 modules_prepare
+
+# Build Linux kernel module for Xen Argo
+cd "${BUILDDIR}"
+git clone \
+    --depth=1 --branch=master \
+    https://github.com/OpenXT/linux-xen-argo.git
+git -C "${BUILDDIR}/linux-xen-argo" switch --detach "${ARGO_SHA}"
+make -C "linux-${LINUX_VERSION}" M="${BUILDDIR}/linux-xen-argo/argo-linux" \
+    CFLAGS_MODULE="-Wno-error" KBUILD_MODPOST_WARN=1
+cp "linux-xen-argo/argo-linux/xen-argo.ko" "${COPYDIR}/xen-argo.ko"
+
+# Build Linux libargo shared library, applying fixes to build in Alpine Linux
+cd "${BUILDDIR}/linux-xen-argo/libargo"
+sed -i "s|AM_INIT_AUTOMAKE|AC_CONFIG_AUX_DIR(.)\nAM_INIT_AUTOMAKE|" configure.ac
+sed -i "s/__SOCKADDR_COMMON (sxenargo_)/sa_family_t sxenargo_family/" src/libargo.h
+sed -i "s/__SOCKADDR_COMMON_SIZE/(sizeof (unsigned short int))/" src/libargo.h
+autoreconf --install
+./configure --prefix="${COPYDIR}" CPPFLAGS="-I${PWD}/../argo-linux/include"
+make
+make install
+
+# Build Linux user program, modifying for xilinx argo test
+cd "${BUILDDIR}"
+wget "https://raw.githubusercontent.com/OpenXT/xenclient-oe/${ARGOEXEC_SHA}/\
+recipes-openxt/argo-exec/argo-exec/argo-exec.c"
+sed -i "s|#include <xen/xen.h>||" argo-exec.c
+sed -i "s|ret = shuffle(s, fds\[0\], fds\[1\]);|ret = shuffle(s, 0, 1);|" \
+    argo-exec.c
+gcc -I"${BUILDDIR}/linux-xen-argo/libargo/src" \
+    -I"${BUILDDIR}/linux-xen-argo/argo-linux/include" \
+    -L"${COPYDIR}/lib/" \
+    -o argo-exec argo-exec.c -largo
+cp argo-exec "${COPYDIR}"
diff --git a/scripts/x86_64-kernel-linux.sh b/scripts/x86_64-kernel-linux.sh
new file mode 100755
index 0000000..2a816f0
--- /dev/null
+++ b/scripts/x86_64-kernel-linux.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+
+if test -z "${LINUX_VERSION}"
+then
+    >&2 echo "LINUX_VERSION must be set"; exit 1
+fi
+
+set -ex -o pipefail
+
+WORKDIR="${PWD}"
+COPYDIR="${WORKDIR}/binaries/"
+
+# Build Linux
+curl -fsSLO \
+    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
+tar xJf linux-"${LINUX_VERSION}".tar.xz
+cd linux-"${LINUX_VERSION}"
+make ARCH=x86 defconfig
+make ARCH=x86 xen.config
+./scripts/config --enable BRIDGE
+./scripts/config --enable IGC
+./scripts/config --enable TUN
+cp .config .config.orig
+cat .config.orig \
+    | grep 'XEN' \
+    | grep '=m' \
+    | sed 's/=m/=y/g' \
+    >> .config
+make ARCH=x86 olddefconfig
+make -s -j "$(nproc)" ARCH=x86
+cp arch/x86/boot/bzImage "${COPYDIR}"
diff --git a/scripts/x86_64-rootfs-alpine.sh b/scripts/x86_64-rootfs-alpine.sh
new file mode 100755
index 0000000..28d8e30
--- /dev/null
+++ b/scripts/x86_64-rootfs-alpine.sh
@@ -0,0 +1,58 @@
+WORKDIR="${PWD}"
+
+apk update
+
+# xen runtime deps
+apk add musl
+apk add libgcc
+apk add openrc
+apk add busybox
+apk add sudo
+apk add dbus
+apk add bash
+apk add python3
+apk add zlib
+apk add ncurses
+apk add yajl
+apk add libaio
+apk add xz
+apk add util-linux
+apk add argp-standalone
+apk add libfdt
+apk add glib
+apk add pixman
+apk add curl
+apk add udev
+apk add pciutils
+apk add libelf
+
+# Xen
+cd /
+# Minimal ramdisk environment in case of cpio output
+rc-update add udev
+rc-update add udev-trigger
+rc-update add udev-settle
+rc-update add loopback sysinit
+rc-update add bootmisc boot
+rc-update add devfs sysinit
+rc-update add dmesg sysinit
+rc-update add hostname boot
+rc-update add hwclock boot
+rc-update add hwdrivers sysinit
+rc-update add modules boot
+rc-update add killprocs shutdown
+rc-update add mount-ro shutdown
+rc-update add savecache shutdown
+rc-update add local default
+cp -a /sbin/init /init
+echo "ttyS0" >> /etc/securetty
+echo "hvc0" >> /etc/securetty
+echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab
+echo "hvc0::respawn:/sbin/getty -L hvc0 115200 vt100" >> /etc/inittab
+echo > /etc/modules
+passwd -d "root" root
+
+# Create rootfs
+cd /
+tar cvzf "${WORKDIR}/binaries/initrd.tar.gz" \
+    bin dev etc home init lib mnt opt root sbin usr var
--
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 23:27:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 23:27:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825583.1239851 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t47Ea-0008Cj-3l; Thu, 24 Oct 2024 23:27:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825583.1239851; Thu, 24 Oct 2024 23: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 1t47EZ-0008Cc-Vh; Thu, 24 Oct 2024 23:27:15 +0000
Received: by outflank-mailman (input) for mailman id 825583;
 Thu, 24 Oct 2024 23: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=QKxT=RU=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t47EY-0008CW-H8
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 23:27:14 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2062f.outbound.protection.outlook.com
 [2a01:111:f403:2415::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7f5d8c4d-925f-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 01:27:13 +0200 (CEST)
Received: from CH5PR02CA0023.namprd02.prod.outlook.com (2603:10b6:610:1ed::24)
 by MW4PR12MB6684.namprd12.prod.outlook.com (2603:10b6:303:1ee::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.17; Thu, 24 Oct
 2024 23:27:08 +0000
Received: from CH1PEPF0000A34B.namprd04.prod.outlook.com
 (2603:10b6:610:1ed:cafe::fc) by CH5PR02CA0023.outlook.office365.com
 (2603:10b6:610:1ed::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18 via Frontend
 Transport; Thu, 24 Oct 2024 23:27:07 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CH1PEPF0000A34B.mail.protection.outlook.com (10.167.244.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Thu, 24 Oct 2024 23:27:06 +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.39; Thu, 24 Oct
 2024 18:27:06 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Thu, 24 Oct 2024 18:27:05 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f5d8c4d-925f-11ef-a0bf-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=fjQJC1JkY52kppIFxrjVg2RomsEUeJnmPt+arrI75x4zWRAdPLOhyQ3r+vbrFF6UYbqmhYViX43C4VJGNcLnXK5rJFwPnci0ZA6fn62+XfLUSz5lMbpUAv1oaQWnwBYSzV1ISRwHTIcv8/tlIaQ26qL44KwUkfDdgax3VrRXSsFzBRdwTPfV32GzZ2e2lOALx4Ycbo91jdauR22fFu8pyBVo5IVj1v149VHKziQPBM6cFKJx651Fuc/sdfl1tk0uW4nI27D5UZGHw04a+n3omm72U+PQpYUaBpE+CVMYRs+nMaGGnPLKxedrOoTzv+D5uq1RAxNtzIqXj2uwp24m0Q==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=6HuKqe4464Z1xh2mUL7kdN2VW0A0xjkcziv4tR7GBCo=;
 b=P/dmnnLldLzXFQoAm79/s86MNYCKwnkAPn6iSk93zADZAJ0NAbp6O5RXJdlWwjEVjXY+mQEsxE8RhFYLJMk/fQSYKihA/kZsy4CUp9tDGwjWj7Upn+5iyBH4Bq45lO86hwCzt2bDaHbfGbbK17EXtuQ9ErM+68gPhwdRBrT9i2wdVeVnPJrZC9AaSwZ+Xbjvth38dlPEhlrI1boNcmXh5wlUqSfwLOWVUpXmDegTRArbUXFX0+l/Xu0TLncHXc8aK57DTVTJhmhI8b7DsBll3L+H+wxxoG05NfZthumzh7ZJujqs4xJNMUwyWnX1LAzl3d1RAOAJXd3K0V37NWeJtQ==
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=6HuKqe4464Z1xh2mUL7kdN2VW0A0xjkcziv4tR7GBCo=;
 b=G2/M5g8JZk8iJUsqiJAeLgB3SwU8A0fFycCMf6VWDdiPaYYNbPoVoMLPlZaQnQTnchRkKI9DIgY0G4SJJW4svapzuFjngr56jyIy88kRHgkEBO0mGVJBiBFi3Nxe8cJYr4GOUomAPWDi9E3lrTA6hYxX1ZsDf9NZ6ljfrnEqEvw=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [TEST_ARTIFACTS PATCH v1 0/1] build: add x86_64 xen artifacts (argo)
Date: Thu, 24 Oct 2024 16:26:48 -0700
Message-ID: <cover.1729809799.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH1PEPF0000A34B:EE_|MW4PR12MB6684:EE_
X-MS-Office365-Filtering-Correlation-Id: 92ab2637-1728-45a5-07a9-08dcf4836011
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|1800799024|376014|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?JYkkhuFBeQ1w0cNghQ9xqKwO82jUQWEyZNE2tY2a0osw0/XnRXfLZsyYKIhA?=
 =?us-ascii?Q?by7PdMiDSVhz0pq9rwqzr98FdhCMnCHI0OLWVB5evZ51xZ6vD349MWXql5sH?=
 =?us-ascii?Q?HkTAYkY9nWNLaHZfeL1Q5l5h4cKS5IjiqrF00Ee0M3tldeTVNjoZOGbL2iZl?=
 =?us-ascii?Q?xIOonN9iYJot5O9nFKk5wUZJ2wjQOuTmHognubBiWNvSjpEuVtQljwFH9dBN?=
 =?us-ascii?Q?bwA+IzHGNLoUpy9xqFkIpwfrtXzsaqTWa3fLbvxzBXfqLhbVA6rOsJTVEXeU?=
 =?us-ascii?Q?b2VQsZYF08Z4LXDjVZiWUOkoT6rGGEV885Qp/RkMG35CjDB5BHWBLFST0lN4?=
 =?us-ascii?Q?u9/Q87/lLXYsWIi2+MI3YLy8SCTkEi3Y1hqINwJ0x0ZOKu3Y7JFQLH/fizec?=
 =?us-ascii?Q?gQzOxG/ah7Lx6JRpVjbjH+w5ZvT+DnfqZs7IzNIFdWTTKPCqa04tdzvO/qiB?=
 =?us-ascii?Q?BvTkJZWEDy0BfxkENdp48W5EKTu6AlE8KIy9k9hLg5xbCbPMyQnxW3e5tyvE?=
 =?us-ascii?Q?+E2/l2pbm5v3rR++WlzeKCM3bqAo4ea5d3skS82BiOehNLvvBkzfZX77tWhl?=
 =?us-ascii?Q?EO8vhUCECJHegfA4/0sSO36EzsFXhVI+cTjAxPhIUQZbh8XR5Vdx4wFZT1SX?=
 =?us-ascii?Q?GmvvrbKrMiU+CMIrHSJXcqEOTlFNsL3o0fPurVrtnCvF907Jptd4TV90sMTj?=
 =?us-ascii?Q?VdCChvF/vDOZD3N3ywvNG2eibtF+jVfScRNno3IDa4AhIlYcZTPWYLh1QCDY?=
 =?us-ascii?Q?xDKktjyND6guacbM86uYaYt1B+H0lP4QF6/OriwyXkGqIL6s8LKWIxmijQK4?=
 =?us-ascii?Q?iojG/q59ZtGYkwVyg8/smQCfxkWZhQkpJi5epajPjnAnV1B5zTNXBh8rhAxD?=
 =?us-ascii?Q?3isqQm97RrVZJZADXhe8Ao0hp0M084XP6S+B/DBywhMwuBG7+EXXZRDG0+4a?=
 =?us-ascii?Q?WLDdvy9oiKFsUmxCHXB7PqaF4pLxElM2FnhlfsmoJ0oD1zf3Gm8Xa6hPpwWj?=
 =?us-ascii?Q?j6OXzF0Q7xMkQFynCvOv7jmPseapsl7tP+CNFtWycZS4PRvLygQheK7xLm8K?=
 =?us-ascii?Q?79LKtWnBqNWWmv1kdyrgTukMJAv3rnfFv14ehFZKtRF0fIIO3cdvrA8Un1uW?=
 =?us-ascii?Q?6vGis4MZ7ZrPSRv8fhsxVUc8Wpzp+KE0BNZfFXxI5skTjHDjRKM5QDzlHIf3?=
 =?us-ascii?Q?ULr1JFoid5zllDRhqDU6/sPlXkIqkeirYkUtyCTwRcyqlEvTbNpMyppmXODL?=
 =?us-ascii?Q?KFBmhsOXHG8cgzpFvmnoi5e14SXizMnmGeung+JUDYsgZizxV35duMzQmSk5?=
 =?us-ascii?Q?wYZtlXbyOHviA5wm4+EwpPgiLJVFl/nq5KZYYpBaNESEATN1SKCYhd7VEIuN?=
 =?us-ascii?Q?gTGcJY97aYZvFugkiF243wcKjSEd+zajI4hHbSxWIf1oYmGwGQ=3D=3D?=
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:(13230040)(82310400026)(1800799024)(376014)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2024 23:27:06.8608
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 92ab2637-1728-45a5-07a9-08dcf4836011
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:
	CH1PEPF0000A34B.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6684

From: Victor Lira <victorm.lira@amd.com>

The current configuration of Xen CI generates test binaries using "export"
jobs in every pipeline. This unecessarily uses a large amount of storage
and network traffic because artifacts are duplicated over each project and
branch that uses this configuration.

Instead, use a separate repository to store test binaries, then they can be
retrieved using GitLab CI built-in functionality. A test job can pull
binaries from another project job using the "needs" syntax. This will pull
from the most recent successful job on the specified branch. However, it
will not wait for a currently running job to finish and will instead pull
from previous jobs. This should not be a problem as we expect to change the
binaries only rarely.

Victor Lira (1):
  build: add x86_64 xen artifacts (argo)

 .gitlab-ci.yml                         | 50 ++++++++++++++++++++
 binaries/.gitignore                    |  3 ++
 images/Makefile                        | 20 ++++++++
 images/alpine/x86_64-build.dockerfile  | 31 +++++++++++++
 images/alpine/x86_64-rootfs.dockerfile |  4 ++
 scripts/x86_64-argo-linux.sh           | 63 ++++++++++++++++++++++++++
 scripts/x86_64-kernel-linux.sh         | 31 +++++++++++++
 scripts/x86_64-rootfs-alpine.sh        | 58 ++++++++++++++++++++++++
 8 files changed, 260 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 binaries/.gitignore
 create mode 100644 images/Makefile
 create mode 100644 images/alpine/x86_64-build.dockerfile
 create mode 100644 images/alpine/x86_64-rootfs.dockerfile
 create mode 100755 scripts/x86_64-argo-linux.sh
 create mode 100755 scripts/x86_64-kernel-linux.sh
 create mode 100755 scripts/x86_64-rootfs-alpine.sh

--
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Oct 24 23:47:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 24 Oct 2024 23:47:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825600.1239871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t47YH-0003PD-1l; Thu, 24 Oct 2024 23:47:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825600.1239871; Thu, 24 Oct 2024 23:47: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 1t47YG-0003P6-T7; Thu, 24 Oct 2024 23:47:36 +0000
Received: by outflank-mailman (input) for mailman id 825600;
 Thu, 24 Oct 2024 23:47: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=V9Wq=RU=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t47YF-0003P0-5G
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 23:47:35 +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 55c4beb8-9262-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 01:47:32 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 9F48A5C4B47;
 Thu, 24 Oct 2024 23:46:45 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7B5C7C4CEC7;
 Thu, 24 Oct 2024 23:47: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: 55c4beb8-9262-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729813650;
	bh=ki5lJlSSikUVgMuaB9x7iJUB/P/ayoizS1rLBj7VnUo=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=awGxn6HS/CTG+R/CqqQ5neRiaUCKoXG8mjQu/gzoUQdd9dJpqeqy9SoUNyBPPOja+
	 YA5MA7OwKqdG4kPuCRNN5qT1962kNGOzaUdY1ye0NG5ePf9/6F6uuNf2Sd0gc6UQEZ
	 QrwSVR2ZgrS8aJJ9ebld8VedfL+w76+vetL5Hk9j/bqZb/29gspIGQFWX9dZsN/jSX
	 zIGS9ChBmIXXeckqcoH4R735zp5+KklxPksiL0aMwgK7suE0Qvz52SaRgEuLsvht1Z
	 1iHx4/9uqG5R0UM/Z1d/0B5cQzBFBXSE051kWK3kepvZ2Lq8F6jdC2Y1wEEHSabg+t
	 2o+bAvlTsxg2Q==
Date: Thu, 24 Oct 2024 16:47:28 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Javi Merino <javi.merino@cloud.com>
cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH v1 6/6] CI: Run the builds and tests that use the
 Debian 12 containers as a normal user
In-Reply-To: <c6d8547d500ac419ee4590decb9392f32f1f0d02.1729760501.git.javi.merino@cloud.com>
Message-ID: <alpine.DEB.2.22.394.2410241631250.3833@ubuntu-linux-20-04-desktop>
References: <cover.1729760501.git.javi.merino@cloud.com> <c6d8547d500ac419ee4590decb9392f32f1f0d02.1729760501.git.javi.merino@cloud.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 24 Oct 2024, Javi Merino wrote:
> Use FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR so that GitLab CI clones xen
> using the user in the image, instead of as root[0].
> 
> In qemu-smoke-dom0*.sh and qemu-alpine-x86_64.sh, use fakeroot to
> create the rootfs images that untar a tarball that create character
> devices.  cpio replicates the block and character devices, as well as
> preserving the uid and gid it sees in the current directory.  fakeroot
> lets tar think that it is creating block and character devices, and
> all files are owned by root, but it is all smokes and mirrors for
> cpio.
> 
> [0] https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1736
> 
> Signed-off-by: Javi Merino <javi.merino@cloud.com>
> ---
> 
> Regarding building the rootfs, I have chosen to use a fakeroot
> subshell for the entire process.  automation/scripts/qubes-x86-64.sh
> takes a different approach, it just uses fakeroot for the tar/cpio
> commands.  I prefer to do it this way but I am happy to be overridden
> if `fakeroot -s ../save tar` and `fakeroot -i ../save cpio` are
> preferred.
> 
>  automation/build/debian/12-arm64v8.dockerfile   | 5 ++++-
>  automation/build/debian/12-x86_64.dockerfile    | 5 ++++-
>  automation/gitlab-ci/test.yaml                  | 4 ++++
>  automation/scripts/qemu-alpine-x86_64.sh        | 4 +++-
>  automation/scripts/qemu-smoke-dom0-arm64.sh     | 7 +++++--
>  automation/scripts/qemu-smoke-dom0less-arm64.sh | 5 +++--
>  6 files changed, 23 insertions(+), 7 deletions(-)
> 
> diff --git a/automation/build/debian/12-arm64v8.dockerfile b/automation/build/debian/12-arm64v8.dockerfile
> index 4da1b074aedb..c2617956ed77 100644
> --- a/automation/build/debian/12-arm64v8.dockerfile
> +++ b/automation/build/debian/12-arm64v8.dockerfile
> @@ -10,6 +10,8 @@ RUN <<EOF
>  #!/bin/bash
>      set -eu
>  
> +    useradd --create-home user
> +
>      apt-get update
>      DEPS=(
>          # Xen
> @@ -53,6 +55,7 @@ RUN <<EOF
>          curl
>          device-tree-compiler
>          expect
> +        fakeroot
>          u-boot-qemu
>          # for imagebuilder
>          file
> @@ -64,5 +67,5 @@ RUN <<EOF
>      rm -rf /var/lib/apt/lists*
>  EOF
>  
> -USER root
> +USER user
>  WORKDIR /build
> diff --git a/automation/build/debian/12-x86_64.dockerfile b/automation/build/debian/12-x86_64.dockerfile
> index e0ca8b7e9c91..98b23ea3eaa4 100644
> --- a/automation/build/debian/12-x86_64.dockerfile
> +++ b/automation/build/debian/12-x86_64.dockerfile
> @@ -10,6 +10,8 @@ RUN <<EOF
>  #!/bin/bash
>      set -eu
>  
> +    useradd --create-home user
> +
>      apt-get update
>      DEPS=(
>          # Xen
> @@ -54,6 +56,7 @@ RUN <<EOF
>          # for qemu-alpine-x86_64-gcc
>          busybox-static
>          cpio
> +        fakeroot
>  
>          # For *-efi jobs
>          ovmf
> @@ -64,5 +67,5 @@ RUN <<EOF
>      rm -rf /var/lib/apt/lists*
>  EOF
>  
> -USER root
> +USER user
>  WORKDIR /build

This breaks the xilinx hardware jobs both arm and x86 as they
require root inside the container at the moment


> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index 42baa82fe36f..71f2beb68c4f 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -1,6 +1,10 @@
>  .test-jobs-common:
>    stage: test
>    image: registry.gitlab.com/xen-project/xen/${CONTAINER}
> +  variables:
> +    # Clone xen as the user in the docker images, not root
> +    # See https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1736
> +    FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: true
>  
>  .arm64-test-needs: &arm64-test-needs
>    - alpine-3.18-arm64-rootfs-export
> diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh
> index 1ff689b577e3..2660403ab2b8 100755
> --- a/automation/scripts/qemu-alpine-x86_64.sh
> +++ b/automation/scripts/qemu-alpine-x86_64.sh
> @@ -29,6 +29,7 @@ find . | cpio --create --format='newc' | gzip > ../initrd.cpio.gz
>  cd ..
>  
>  # initrd.tar.gz is Dom0 rootfs
> +fakeroot <<EOF
>  mkdir -p rootfs
>  cd rootfs
>  tar xvzf ../initrd.tar.gz
> @@ -63,7 +64,8 @@ chmod +x etc/local.d/xen.start
>  echo "rc_verbose=yes" >> etc/rc.conf
>  # rebuild Dom0 rootfs
>  find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz
> -cd ../..
> +EOF
> +cd ..

I admit I am not a fan of this as it makes the script harder to read.
Given that almost everything on this script and similar scripts is
better run as root because it is all about repackaging cpio archivies,
instead I would do this:

diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh
index 2660403ab2..7c0ec01e05 100755
--- a/automation/scripts/qemu-alpine-x86_64.sh
+++ b/automation/scripts/qemu-alpine-x86_64.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/fakeroot
 
 set -ex -o pipefail
 

Keeping in mind that anyone could push a branch without fakeroot to
their personal tree triggering a gitlab-ci pipeline, the advantage of
using fakeroot would be if we force the container execution envinronment
(gitlab runner) to run containers as user. This is not currently the
configuration we have. As of now, it doesn't bring an advantage.

Given that the gitlab runners are in flux at the moment, and that this
patch cannot work with the xilinx runners, I would ask you to please
hold on on this patch until the gitlab runners are settled (~1 month).



>  cat >> binaries/pxelinux.0 << EOF
>  #!ipxe
> diff --git a/automation/scripts/qemu-smoke-dom0-arm64.sh b/automation/scripts/qemu-smoke-dom0-arm64.sh
> index 4d22a124df11..8f9bfd620ee3 100755
> --- a/automation/scripts/qemu-smoke-dom0-arm64.sh
> +++ b/automation/scripts/qemu-smoke-dom0-arm64.sh
> @@ -27,8 +27,10 @@ cd initrd
>  find . | cpio --create --format='newc' | gzip > ../initrd.cpio.gz
>  cd ..
>  
> -mkdir -p rootfs
> +fakeroot <<EOF
> +mkdir rootfs
>  cd rootfs
> +
>  tar xvzf ../initrd.tar.gz
>  mkdir proc
>  mkdir run
> @@ -58,7 +60,8 @@ xl create -c /root/test.cfg
>  chmod +x etc/local.d/xen.start
>  echo "rc_verbose=yes" >> etc/rc.conf
>  find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz
> -cd ../..
> +EOF
> +cd ..
>  
>  # XXX QEMU looks for "efi-virtio.rom" even if it is unneeded
>  curl -fsSLO https://github.com/qemu/qemu/raw/v5.2.0/pc-bios/efi-virtio.rom
> diff --git a/automation/scripts/qemu-smoke-dom0less-arm64.sh b/automation/scripts/qemu-smoke-dom0less-arm64.sh
> index 83e1866ca6c5..2d60f22d68b7 100755
> --- a/automation/scripts/qemu-smoke-dom0less-arm64.sh
> +++ b/automation/scripts/qemu-smoke-dom0less-arm64.sh
> @@ -112,7 +112,8 @@ find . | cpio --create --format='newc' | gzip > ../binaries/initrd
>  cd ..
>  
>  # DOM0 rootfs
> -mkdir -p rootfs
> +fakeroot <<EOF
> +mkdir rootfs
>  cd rootfs
>  tar xzf ../binaries/initrd.tar.gz
>  mkdir proc
> @@ -141,7 +142,7 @@ ${dom0_check}
>  chmod +x etc/local.d/xen.start
>  echo "rc_verbose=yes" >> etc/rc.conf
>  find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
> -cd ..
> +EOF
>  
>  # ImageBuilder
>  echo 'MEMORY_START="0x40000000"
> -- 
> 2.45.2
> 


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 01:10:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 01:10:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825609.1239880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t48pn-0004d8-OV; Fri, 25 Oct 2024 01:09:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825609.1239880; Fri, 25 Oct 2024 01: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 1t48pn-0004d0-KP; Fri, 25 Oct 2024 01:09:47 +0000
Received: by outflank-mailman (input) for mailman id 825609;
 Fri, 25 Oct 2024 01: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=daqB=RV=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t48pm-0004cu-2I
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 01:09:46 +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 d15b8350-926d-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 03:09:44 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 44BEE5C4D36;
 Fri, 25 Oct 2024 01:08:57 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F655C4CEC7;
 Fri, 25 Oct 2024 01:09: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: d15b8350-926d-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729818582;
	bh=XMD6Ta3t2xnLpwhbrhrvJFF2hfUvFl1uw+ZejnvQoaY=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=g0P5QlnG0+ZGKluKugLh8C1uvhAudKLIwDcS5c7h/na6QC3trhMhHAr5UMqCxtNG8
	 AubO2N5AG1jQLWDyeUbAsUTdeznsAZqZbXDkZG9U+9IDQAgK14JpUHwIM5xYz/wjjc
	 YzBlMEw57gBzB5Kgxy5B/dGGdO/QcxgH0aK22K9H+qNvxTLgXBh7TM4DAptm50PMMP
	 oVFxeLGsIWQE67u4+sD85mx5DEvlmMefQzreN/40aTqX5yDQKIQdKIhn34VONaOhcM
	 Dz4Gh5eTmnPoREBSGiREU6E7K58E3hcS+5Qi5W5fDAnIxoBoDP8z6hNwvlzdanikmT
	 kFpl6FoK3lJbw==
Date: Thu, 24 Oct 2024 18:09:35 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Victor Lira <victorm.lira@amd.com>
cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [TEST_ARTIFACTS PATCH v1 1/1] build: add x86_64 xen artifacts
 (argo)
In-Reply-To: <3161fa3f955cda2d3c968d18c8afcc38316323bf.1729809799.git.victorm.lira@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410241808120.2264989@ubuntu-linux-20-04-desktop>
References: <cover.1729809799.git.victorm.lira@amd.com> <3161fa3f955cda2d3c968d18c8afcc38316323bf.1729809799.git.victorm.lira@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-2027405872-1729818582=:2264989"

  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-2027405872-1729818582=:2264989
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Thu, 24 Oct 2024, victorm.lira@amd.com wrote:
> From: Victor Lira <victorm.lira@amd.com>
> 
> Add container image build files:
> - alpine/x86_64-build
> - alpine/x86_64-rootfs
> - Makefile
> 
> Add CI configuration and jobs to produce binaries for xen tests:
> - xen-argo          Linux Xen Argo kernel module
> - bzImage           Linux kernel
> - libargo           Linux Argo shared library
> - argo-exec         Linux Argo test program
> - initrd.tar.gz     Alpine Linux rootfs
> 
> Signed-off-by: Victor Lira <victorm.lira@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

One comment below

> ---
> Changes v1:
> - Update dockerfile format to group dependencies
> - add user to build container
> ---
> Cc: Andrew Cooper <andrew.cooper3@citrix.com>
> Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> Cc: Doug Goldstein <cardoe@cardoe.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: xen-devel@lists.xenproject.org
> ---
>  .gitlab-ci.yml                         | 50 ++++++++++++++++++++
>  binaries/.gitignore                    |  3 ++
>  images/Makefile                        | 20 ++++++++
>  images/alpine/x86_64-build.dockerfile  | 31 +++++++++++++
>  images/alpine/x86_64-rootfs.dockerfile |  4 ++
>  scripts/x86_64-argo-linux.sh           | 63 ++++++++++++++++++++++++++
>  scripts/x86_64-kernel-linux.sh         | 31 +++++++++++++
>  scripts/x86_64-rootfs-alpine.sh        | 58 ++++++++++++++++++++++++
>  8 files changed, 260 insertions(+)
>  create mode 100644 .gitlab-ci.yml
>  create mode 100644 binaries/.gitignore
>  create mode 100644 images/Makefile
>  create mode 100644 images/alpine/x86_64-build.dockerfile
>  create mode 100644 images/alpine/x86_64-rootfs.dockerfile
>  create mode 100755 scripts/x86_64-argo-linux.sh
>  create mode 100755 scripts/x86_64-kernel-linux.sh
>  create mode 100755 scripts/x86_64-rootfs-alpine.sh
> 
> diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
> new file mode 100644
> index 0000000..7e18a87
> --- /dev/null
> +++ b/.gitlab-ci.yml
> @@ -0,0 +1,50 @@
> +workflow:
> +  name: "xen test artifacts"
> +
> +.artifacts:
> +  stage: build
> +  image:
> +    name: registry.gitlab.com/xen-project/hardware/test-artifacts/${CONTAINER}
> +  artifacts:
> +    name: "${CI_JOB_NAME_SLUG}"
> +    paths:
> +      - binaries/
> +    exclude:
> +      - binaries/.gitignore
> +
> +.x86_64-artifacts:
> +  extends: .artifacts
> +  image:
> +    docker:
> +      platform: linux/amd64
> +      user: xenproject
> +  tags:
> +    - x86_64
> +  variables:
> +    CONTAINER: alpine:x86_64-build
> +
> +x86_64-kernel-linux-6.6.56:
> +  extends: .x86_64-artifacts
> +  script:
> +    - . scripts/x86_64-kernel-linux.sh
> +  variables:
> +    LINUX_VERSION: 6.6.56
> +
> +x86_64-rootfs-alpine-3.18:
> +  extends: .x86_64-artifacts
> +  image:
> +    docker:
> +      user: root
> +  script:
> +    - . scripts/x86_64-rootfs-alpine.sh
> +  variables:
> +    CONTAINER: alpine:x86_64-rootfs
> +
> +x86_64-argo-linux-6.6.56:
> +  extends: .x86_64-artifacts
> +  script:
> +    - . scripts/x86_64-argo-linux.sh
> +  variables:
> +    LINUX_VERSION: 6.6.56
> +    ARGO_SHA: "705a7a8a624b42e13e655d3042059b8a85cdf6a3"
> +    ARGOEXEC_SHA: "d900429f6640acc6f68a3d3a4c945d7da60625d8"
> diff --git a/binaries/.gitignore b/binaries/.gitignore
> new file mode 100644
> index 0000000..95e2a2e
> --- /dev/null
> +++ b/binaries/.gitignore
> @@ -0,0 +1,3 @@
> +# Keep this directory around to be available in CI/CD jobs.
> +*
> +!.gitignore
> diff --git a/images/Makefile b/images/Makefile
> new file mode 100644
> index 0000000..42f231b
> --- /dev/null
> +++ b/images/Makefile
> @@ -0,0 +1,20 @@
> +
> +# The base of where these containers will appear
> +REGISTRY := registry.gitlab.com/xen-project/hardware/test-artifacts
> +CONTAINERS = $(subst .dockerfile,,$(wildcard */*.dockerfile))
> +
> +help:
> +	@echo "Containers to build test artifacts."
> +	@echo "To build one run 'make DISTRO/TAG'."
> +	@echo "Available containers:"
> +	@$(foreach file,$(sort $(CONTAINERS)),echo ${file};)
> +	@echo "To push container builds, set the environment variable PUSH"
> +
> +%: %.dockerfile ## Builds containers
> +	docker build --pull -t $(REGISTRY)/$(@D):$(@F) -f $< $(<D)
> +	@if [ ! -z $${PUSH+x} ]; then \
> +		docker push $(REGISTRY)/$(@D):$(@F); \
> +	fi
> +
> +.PHONY: all
> +all: $(CONTAINERS)
> diff --git a/images/alpine/x86_64-build.dockerfile b/images/alpine/x86_64-build.dockerfile
> new file mode 100644
> index 0000000..3bfd172
> --- /dev/null
> +++ b/images/alpine/x86_64-build.dockerfile
> @@ -0,0 +1,31 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/amd64 alpine:3.18
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"
> +
> +WORKDIR /build/
> +
> +RUN apk --no-cache add bash
> +
> +RUN bash -ex <<EOF
> +      adduser -D xenproject --shell bash
> +
> +      DEPS=(
> +            musl-dev
> +            build-base
> +            libc6-compat
> +            linux-headers
> +            bash
> +            git
> +            curl
> +            flex
> +            bison
> +            elfutils-dev
> +            autoconf
> +            automake
> +            libtool
> +            openssl-dev
> +      )
> +
> +      apk add --no-cache "\${DEPS[@]}"
> +EOF
> diff --git a/images/alpine/x86_64-rootfs.dockerfile b/images/alpine/x86_64-rootfs.dockerfile
> new file mode 100644
> index 0000000..b912e9c
> --- /dev/null
> +++ b/images/alpine/x86_64-rootfs.dockerfile
> @@ -0,0 +1,4 @@
> +# syntax=docker/dockerfile:1
> +FROM --platform=linux/amd64 alpine:3.18
> +LABEL maintainer.name="The Xen Project" \
> +      maintainer.email="xen-devel@lists.xenproject.org"
> diff --git a/scripts/x86_64-argo-linux.sh b/scripts/x86_64-argo-linux.sh
> new file mode 100755
> index 0000000..a110a33
> --- /dev/null
> +++ b/scripts/x86_64-argo-linux.sh
> @@ -0,0 +1,63 @@
> +#!/usr/bin/env bash
> +
> +if test -z "${LINUX_VERSION}"
> +then
> +    >&2 echo "LINUX_VERSION must be set"; exit 1
> +fi
> +
> +set -ex -o pipefail
> +
> +BUILDDIR="${PWD}"
> +COPYDIR="${BUILDDIR}/binaries/"
> +
> +# Prepare Linux sources
> +curl -fsSLO \
> +    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
> +tar xJf linux-"${LINUX_VERSION}".tar.xz
> +cd linux-"${LINUX_VERSION}"
> +make ARCH=x86 defconfig
> +make ARCH=x86 xen.config
> +./scripts/config --enable BRIDGE
> +./scripts/config --enable IGC
> +./scripts/config --enable TUN
> +cp .config .config.orig
> +cat .config.orig \
> +    | grep 'XEN' \
> +    | grep '=m' \
> +    | sed 's/=m/=y/g' \
> +    >> .config
> +make ARCH=x86 olddefconfig
> +make ARCH=x86 modules_prepare
> +
> +# Build Linux kernel module for Xen Argo
> +cd "${BUILDDIR}"
> +git clone \
> +    --depth=1 --branch=master \
> +    https://github.com/OpenXT/linux-xen-argo.git
> +git -C "${BUILDDIR}/linux-xen-argo" switch --detach "${ARGO_SHA}"
> +make -C "linux-${LINUX_VERSION}" M="${BUILDDIR}/linux-xen-argo/argo-linux" \
> +    CFLAGS_MODULE="-Wno-error" KBUILD_MODPOST_WARN=1
> +cp "linux-xen-argo/argo-linux/xen-argo.ko" "${COPYDIR}/xen-argo.ko"
> +
> +# Build Linux libargo shared library, applying fixes to build in Alpine Linux
> +cd "${BUILDDIR}/linux-xen-argo/libargo"
> +sed -i "s|AM_INIT_AUTOMAKE|AC_CONFIG_AUX_DIR(.)\nAM_INIT_AUTOMAKE|" configure.ac
> +sed -i "s/__SOCKADDR_COMMON (sxenargo_)/sa_family_t sxenargo_family/" src/libargo.h
> +sed -i "s/__SOCKADDR_COMMON_SIZE/(sizeof (unsigned short int))/" src/libargo.h
> +autoreconf --install
> +./configure --prefix="${COPYDIR}" CPPFLAGS="-I${PWD}/../argo-linux/include"
> +make
> +make install
> +
> +# Build Linux user program, modifying for xilinx argo test
> +cd "${BUILDDIR}"
> +wget "https://raw.githubusercontent.com/OpenXT/xenclient-oe/${ARGOEXEC_SHA}/\
> +recipes-openxt/argo-exec/argo-exec/argo-exec.c"
> +sed -i "s|#include <xen/xen.h>||" argo-exec.c
> +sed -i "s|ret = shuffle(s, fds\[0\], fds\[1\]);|ret = shuffle(s, 0, 1);|" \
> +    argo-exec.c

Normally I would suggest to handle this as a patch file but given it is
just 2 changes, and it is nice to have everything contained within this
file, I think it is OK. In the future if we grow more changes, I'd
suggest to move it out.


> +gcc -I"${BUILDDIR}/linux-xen-argo/libargo/src" \
> +    -I"${BUILDDIR}/linux-xen-argo/argo-linux/include" \
> +    -L"${COPYDIR}/lib/" \
> +    -o argo-exec argo-exec.c -largo
> +cp argo-exec "${COPYDIR}"
> diff --git a/scripts/x86_64-kernel-linux.sh b/scripts/x86_64-kernel-linux.sh
> new file mode 100755
> index 0000000..2a816f0
> --- /dev/null
> +++ b/scripts/x86_64-kernel-linux.sh
> @@ -0,0 +1,31 @@
> +#!/usr/bin/env bash
> +
> +if test -z "${LINUX_VERSION}"
> +then
> +    >&2 echo "LINUX_VERSION must be set"; exit 1
> +fi
> +
> +set -ex -o pipefail
> +
> +WORKDIR="${PWD}"
> +COPYDIR="${WORKDIR}/binaries/"
> +
> +# Build Linux
> +curl -fsSLO \
> +    https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-"${LINUX_VERSION}".tar.xz
> +tar xJf linux-"${LINUX_VERSION}".tar.xz
> +cd linux-"${LINUX_VERSION}"
> +make ARCH=x86 defconfig
> +make ARCH=x86 xen.config
> +./scripts/config --enable BRIDGE
> +./scripts/config --enable IGC
> +./scripts/config --enable TUN
> +cp .config .config.orig
> +cat .config.orig \
> +    | grep 'XEN' \
> +    | grep '=m' \
> +    | sed 's/=m/=y/g' \
> +    >> .config
> +make ARCH=x86 olddefconfig
> +make -s -j "$(nproc)" ARCH=x86
> +cp arch/x86/boot/bzImage "${COPYDIR}"
> diff --git a/scripts/x86_64-rootfs-alpine.sh b/scripts/x86_64-rootfs-alpine.sh
> new file mode 100755
> index 0000000..28d8e30
> --- /dev/null
> +++ b/scripts/x86_64-rootfs-alpine.sh
> @@ -0,0 +1,58 @@
> +WORKDIR="${PWD}"
> +
> +apk update
> +
> +# xen runtime deps
> +apk add musl
> +apk add libgcc
> +apk add openrc
> +apk add busybox
> +apk add sudo
> +apk add dbus
> +apk add bash
> +apk add python3
> +apk add zlib
> +apk add ncurses
> +apk add yajl
> +apk add libaio
> +apk add xz
> +apk add util-linux
> +apk add argp-standalone
> +apk add libfdt
> +apk add glib
> +apk add pixman
> +apk add curl
> +apk add udev
> +apk add pciutils
> +apk add libelf
> +
> +# Xen
> +cd /
> +# Minimal ramdisk environment in case of cpio output
> +rc-update add udev
> +rc-update add udev-trigger
> +rc-update add udev-settle
> +rc-update add loopback sysinit
> +rc-update add bootmisc boot
> +rc-update add devfs sysinit
> +rc-update add dmesg sysinit
> +rc-update add hostname boot
> +rc-update add hwclock boot
> +rc-update add hwdrivers sysinit
> +rc-update add modules boot
> +rc-update add killprocs shutdown
> +rc-update add mount-ro shutdown
> +rc-update add savecache shutdown
> +rc-update add local default
> +cp -a /sbin/init /init
> +echo "ttyS0" >> /etc/securetty
> +echo "hvc0" >> /etc/securetty
> +echo "ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100" >> /etc/inittab
> +echo "hvc0::respawn:/sbin/getty -L hvc0 115200 vt100" >> /etc/inittab
> +echo > /etc/modules
> +passwd -d "root" root
> +
> +# Create rootfs
> +cd /
> +tar cvzf "${WORKDIR}/binaries/initrd.tar.gz" \
> +    bin dev etc home init lib mnt opt root sbin usr var
> --
> 2.25.1
> 
--8323329-2027405872-1729818582=:2264989--


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 01:19:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 01:19:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825616.1239891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t48yq-0006FB-Jl; Fri, 25 Oct 2024 01:19:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825616.1239891; Fri, 25 Oct 2024 01:19: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 1t48yq-0006F4-FL; Fri, 25 Oct 2024 01:19:08 +0000
Received: by outflank-mailman (input) for mailman id 825616;
 Fri, 25 Oct 2024 01:19: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=daqB=RV=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t48yp-0006Ey-Ii
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 01:19:07 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1fe0e9a1-926f-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 03:19:05 +0200 (CEST)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 51759A42AFB;
 Fri, 25 Oct 2024 01:17:06 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C460BC4CEC7;
 Fri, 25 Oct 2024 01:18:59 +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: 1fe0e9a1-926f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1729819142;
	bh=2WUpQv5xSA9L8ZAC0Pr5lb+6yWaR3j3uJ/oUJRsB1Ag=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=h9Y3BuEI4nVw2E1L41bOtoCSSTfgH4eThsND/kUt5A53DGtmVSQx90e6fn6GWwt5s
	 k16QNWI9fV/+Q/0n5QZl9cXCAOsFVIkelUmwWS8JmZWRNWgmhnSpBNvry5jGYjqCL+
	 kJp11khPimcEpfZUxjly/gy/UnS87UAeFC6b4N6MpR4dXAKpCPNbzvrKcftZvdRijf
	 cD4wMEkVslnWLWxj4CXx9BDuG7dBTdkvWtEjtqraeC7HpliUrwoCkqdsWAdxUbgdrp
	 gJ/lqIKoeSXV0mnoIsma+YwNrNu6cG8g5HKKaf9e4bOBvB6F6j2KR1WnUHfEpQZtQ1
	 Z0D3+QUL7elTA==
Date: Thu, 24 Oct 2024 18:18:58 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Ryan Roberts <ryan.roberts@arm.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    Andrew Morton <akpm@linux-foundation.org>, 
    Anshuman Khandual <anshuman.khandual@arm.com>, 
    Ard Biesheuvel <ardb@kernel.org>, 
    Catalin Marinas <catalin.marinas@arm.com>, 
    David Hildenbrand <david@redhat.com>, 
    Greg Marsden <greg.marsden@oracle.com>, Ivan Ivanov <ivan.ivanov@suse.com>, 
    Kalesh Singh <kaleshsingh@google.com>, Marc Zyngier <maz@kernel.org>, 
    Mark Rutland <mark.rutland@arm.com>, Matthias Brugger <mbrugger@suse.com>, 
    Miroslav Benes <mbenes@suse.cz>, Will Deacon <will@kernel.org>, 
    Juergen Gross <jgross@suse.com>, linux-arm-kernel@lists.infradead.org, 
    linux-kernel@vger.kernel.org, linux-mm@kvack.org, 
    xen-devel@lists.xenproject.org, julien@xen.org
Subject: Re: [RFC PATCH v1 36/57] xen: Remove PAGE_SIZE compile-time constant
 assumption
In-Reply-To: <3027c366-2cb0-4984-8ee7-aae92fb51512@arm.com>
Message-ID: <alpine.DEB.2.22.394.2410241810320.2264989@ubuntu-linux-20-04-desktop>
References: <20241014105514.3206191-1-ryan.roberts@arm.com> <20241014105912.3207374-1-ryan.roberts@arm.com> <20241014105912.3207374-36-ryan.roberts@arm.com> <829b5662-13c0-4728-894c-b2d578681b11@arm.com> <alpine.DEB.2.22.394.2410221808160.3833@ubuntu-linux-20-04-desktop>
 <3027c366-2cb0-4984-8ee7-aae92fb51512@arm.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 24 Oct 2024, Ryan Roberts wrote:
> On 23/10/2024 02:23, Stefano Stabellini wrote:
> > +Julien
> > 
> > On Wed, 16 Oct 2024, Ryan Roberts wrote:
> >> + Juergen Gross, Stefano Stabellini
> >>
> >> This was a rather tricky series to get the recipients correct for and my script
> >> did not realize that "supporter" was a pseudonym for "maintainer" so you were
> >> missed off the original post. Appologies!
> >>
> >> More context in cover letter:
> >> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
> >>
> >>
> >> On 14/10/2024 11:58, Ryan Roberts wrote:
> >>> To prepare for supporting boot-time page size selection, refactor code
> >>> to remove assumptions about PAGE_SIZE being compile-time constant. Code
> >>> intended to be equivalent when compile-time page size is active.
> >>>
> >>> Allocate enough "frame_list" static storage in the balloon driver for
> >>> the maximum supported page size. Although continue to use only the first
> >>> PAGE_SIZE of the buffer at run-time to maintain existing behaviour.
> >>>
> >>> Refactor xen_biovec_phys_mergeable() to convert ifdeffery to c if/else.
> >>> For compile-time page size, the compiler will choose one branch and
> >>> strip the dead one. For boot-time, it can be evaluated at run time.
> >>>
> >>> Refactor a BUILD_BUG_ON to evaluate the limit (when the minimum
> >>> supported page size is selected at boot-time).
> >>>
> >>> Reserve enough storage for max page size in "struct remap_data" and
> >>> "struct xenbus_map_node".
> >>>
> >>> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
> >>> ---
> >>>
> >>> ***NOTE***
> >>> Any confused maintainers may want to read the cover note here for context:
> >>> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
> >>>
> >>>  drivers/xen/balloon.c              | 11 ++++++-----
> >>>  drivers/xen/biomerge.c             | 12 ++++++------
> >>>  drivers/xen/privcmd.c              |  2 +-
> >>>  drivers/xen/xenbus/xenbus_client.c |  5 +++--
> >>>  drivers/xen/xlate_mmu.c            |  6 +++---
> >>>  include/xen/page.h                 |  2 ++
> >>>  6 files changed, 21 insertions(+), 17 deletions(-)
> >>>
> >>> diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
> >>> index 528395133b4f8..0ed5f6453af0e 100644
> >>> --- a/drivers/xen/balloon.c
> >>> +++ b/drivers/xen/balloon.c
> >>> @@ -131,7 +131,8 @@ struct balloon_stats balloon_stats;
> >>>  EXPORT_SYMBOL_GPL(balloon_stats);
> >>>  
> >>>  /* We increase/decrease in batches which fit in a page */
> >>> -static xen_pfn_t frame_list[PAGE_SIZE / sizeof(xen_pfn_t)];
> >>> +static xen_pfn_t frame_list[PAGE_SIZE_MAX / sizeof(xen_pfn_t)];
> >>> +#define FRAME_LIST_NR_ENTRIES (PAGE_SIZE / sizeof(xen_pfn_t))
> >>>  
> >>>  
> >>>  /* List of ballooned pages, threaded through the mem_map array. */
> >>> @@ -389,8 +390,8 @@ static enum bp_state increase_reservation(unsigned long nr_pages)
> >>>  	unsigned long i;
> >>>  	struct page   *page;
> >>>  
> >>> -	if (nr_pages > ARRAY_SIZE(frame_list))
> >>> -		nr_pages = ARRAY_SIZE(frame_list);
> >>> +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
> >>> +		nr_pages = FRAME_LIST_NR_ENTRIES;
> >>>  
> >>>  	page = list_first_entry_or_null(&ballooned_pages, struct page, lru);
> >>>  	for (i = 0; i < nr_pages; i++) {
> >>> @@ -434,8 +435,8 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp)
> >>>  	int ret;
> >>>  	LIST_HEAD(pages);
> >>>  
> >>> -	if (nr_pages > ARRAY_SIZE(frame_list))
> >>> -		nr_pages = ARRAY_SIZE(frame_list);
> >>> +	if (nr_pages > FRAME_LIST_NR_ENTRIES)
> >>> +		nr_pages = FRAME_LIST_NR_ENTRIES;
> >>>  
> >>>  	for (i = 0; i < nr_pages; i++) {
> >>>  		page = alloc_page(gfp);
> >>> diff --git a/drivers/xen/biomerge.c b/drivers/xen/biomerge.c
> >>> index 05a286d24f148..28f0887e40026 100644
> >>> --- a/drivers/xen/biomerge.c
> >>> +++ b/drivers/xen/biomerge.c
> >>> @@ -8,16 +8,16 @@
> >>>  bool xen_biovec_phys_mergeable(const struct bio_vec *vec1,
> >>>  			       const struct page *page)
> >>>  {
> >>> -#if XEN_PAGE_SIZE == PAGE_SIZE
> >>> -	unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
> >>> -	unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
> >>> +	if (XEN_PAGE_SIZE == PAGE_SIZE) {
> >>> +		unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
> >>> +		unsigned long bfn2 = pfn_to_bfn(page_to_pfn(page));
> >>> +
> >>> +		return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
> >>> +	}
> >>>  
> >>> -	return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
> >>> -#else
> >>>  	/*
> >>>  	 * XXX: Add support for merging bio_vec when using different page
> >>>  	 * size in Xen and Linux.
> >>>  	 */
> >>>  	return false;
> >>> -#endif
> >>>  }
> >>> diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
> >>> index 9563650dfbafc..847f7b806caf7 100644
> >>> --- a/drivers/xen/privcmd.c
> >>> +++ b/drivers/xen/privcmd.c
> >>> @@ -557,7 +557,7 @@ static long privcmd_ioctl_mmap_batch(
> >>>  	state.global_error  = 0;
> >>>  	state.version       = version;
> >>>  
> >>> -	BUILD_BUG_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);
> >>> +	BUILD_BUG_ON(((PAGE_SIZE_MIN / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE_MAX) != 0);
> > 
> > Is there any value in keep this test? And if so, what should it look
> > like? I think we should turn it into a WARN_ON:
> > 
> > WARN_ON(((PAGE_SIZE / sizeof(xen_pfn_t)) % XEN_PFN_PER_PAGE) != 0);
> > 
> > It doesn't make much sense having a BUILD_BUG_ON on a variable that can
> > change?
> 
> I believe that as long as we assume sizeof(xen_pfn_t), PAGE_SIZE and
> XEN_PAGE_SIZE are all power-of-two sizes, then this single build-time test
> should cover all possible boot-time PAGE_SIZEs.
> 
> Logic:
> 
> If PAGE_SIZE and XEN_PAGE_SIZE are power-of-two, then XEN_PFN_PER_PAGE must also
> be power-of-two. XEN_PFN_PER_PAGE_MAX is just the worst case limit.
> 
> (PAGE_SIZE_MIN / sizeof(xen_pfn_t)) is the number of xen_pfn_t that fit on
> smallest page.
> 
> If you can get an integer multiple number of XEN_PFN_PER_PAGE_MAX on the
> smallest page, then it remains an integer multiple as PAGE_SIZE gets bigger,
> assuming it is restricted to power-of-two sizes.
> 
> Perhaps there is a floor in my logic?
> 
> I'd prefer to keep BUILD_BUG_ON where possible to avoid the additional image
> size bloat and runtime costs.

You are right. It would be nice to add a in-code comment to explain
this.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> >>>  	/* mmap_batch_fn guarantees ret == 0 */
> >>>  	BUG_ON(traverse_pages_block(m.num, sizeof(xen_pfn_t),
> >>>  				    &pagelist, mmap_batch_fn, &state));
> >>> diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
> >>> index 51b3124b0d56c..99bde836c10c4 100644
> >>> --- a/drivers/xen/xenbus/xenbus_client.c
> >>> +++ b/drivers/xen/xenbus/xenbus_client.c
> >>> @@ -49,9 +49,10 @@
> >>>  
> >>>  #include "xenbus.h"
> >>>  
> >>> -#define XENBUS_PAGES(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
> >>> +#define XENBUS_PAGES(_grants)		(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE))
> >>> +#define XENBUS_PAGES_MAX(_grants)	(DIV_ROUND_UP(_grants, XEN_PFN_PER_PAGE_MIN))
> >>>  
> >>> -#define XENBUS_MAX_RING_PAGES	(XENBUS_PAGES(XENBUS_MAX_RING_GRANTS))
> >>> +#define XENBUS_MAX_RING_PAGES		(XENBUS_PAGES_MAX(XENBUS_MAX_RING_GRANTS))
> >>>  
> >>>  struct xenbus_map_node {
> >>>  	struct list_head next;
> >>> diff --git a/drivers/xen/xlate_mmu.c b/drivers/xen/xlate_mmu.c
> >>> index f17c4c03db30c..a757c801a7542 100644
> >>> --- a/drivers/xen/xlate_mmu.c
> >>> +++ b/drivers/xen/xlate_mmu.c
> >>> @@ -74,9 +74,9 @@ struct remap_data {
> >>>  	int mapped;
> >>>  
> >>>  	/* Hypercall parameters */
> >>> -	int h_errs[XEN_PFN_PER_PAGE];
> >>> -	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE];
> >>> -	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE];
> >>> +	int h_errs[XEN_PFN_PER_PAGE_MAX];
> >>> +	xen_ulong_t h_idxs[XEN_PFN_PER_PAGE_MAX];
> >>> +	xen_pfn_t h_gpfns[XEN_PFN_PER_PAGE_MAX];
> >>>  
> >>>  	int h_iter;	/* Iterator */
> >>>  };
> >>> diff --git a/include/xen/page.h b/include/xen/page.h
> >>> index 285677b42943a..86683a30038a3 100644
> >>> --- a/include/xen/page.h
> >>> +++ b/include/xen/page.h
> >>> @@ -21,6 +21,8 @@
> >>>  	((page_to_pfn(page)) << (PAGE_SHIFT - XEN_PAGE_SHIFT))
> >>>  
> >>>  #define XEN_PFN_PER_PAGE	(PAGE_SIZE / XEN_PAGE_SIZE)
> >>> +#define XEN_PFN_PER_PAGE_MIN	(PAGE_SIZE_MIN / XEN_PAGE_SIZE)
> >>> +#define XEN_PFN_PER_PAGE_MAX	(PAGE_SIZE_MAX / XEN_PAGE_SIZE)
> >>>  
> >>>  #define XEN_PFN_DOWN(x)	((x) >> XEN_PAGE_SHIFT)
> >>>  #define XEN_PFN_UP(x)	(((x) + XEN_PAGE_SIZE-1) >> XEN_PAGE_SHIFT)
> >>
> 


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 05:46:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 05:46:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825630.1239899 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4D90-0003CO-VW; Fri, 25 Oct 2024 05:45:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825630.1239899; Fri, 25 Oct 2024 05: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 1t4D90-0003CH-SW; Fri, 25 Oct 2024 05:45:54 +0000
Received: by outflank-mailman (input) for mailman id 825630;
 Fri, 25 Oct 2024 05:45: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=acHf=RV=intel.com=lkp@srs-se1.protection.inumbo.net>)
 id 1t4D90-0003CB-6u
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 05:45:54 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 63410fb1-9294-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 07:45:50 +0200 (CEST)
Received: from fmviesa002.fm.intel.com ([10.60.135.142])
 by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 24 Oct 2024 22:45:47 -0700
Received: from lkp-server01.sh.intel.com (HELO a48cf1aa22e8) ([10.239.97.150])
 by fmviesa002.fm.intel.com with ESMTP; 24 Oct 2024 22:45:43 -0700
Received: from kbuild by a48cf1aa22e8 with local (Exim 4.96)
 (envelope-from <lkp@intel.com>) id 1t4D8m-000Xds-1o;
 Fri, 25 Oct 2024 05:45: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>
X-Inumbo-ID: 63410fb1-9294-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729835151; x=1761371151;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=+8YdKGr5Fv9UWaGPtsTURl32RwtbX08N+XEK40AZcHw=;
  b=Hwkb95E0yOgy+mM0Odb0HN3BZKxRQnbiB6MyaWoXhKl68ajrYSDSJu+l
   DeWuU+8VRwMgGuYwHEhaOB/HhcWPMBiziWSR2xEV1VEvYXViTAoS7m4BA
   ScRneD4eDTiqHIClUFBV1woLOnYLDPvV9ZMenKvjeJJLfhPFLy2Y/DxUi
   OAGyer3PY8wApCpaC4tvtx9VmbiEZfNP2PLiUGateGp9sayemJVryQEDQ
   ff5jtrUswsfEYG+Z0cou45l5+jaZ7pFMzSsfs1QlFprVN6vwcYsRDo3Ma
   FvmstzIKzKgUkZAGPSChyIco7yXuV4UGr82l6AvqYO+SxWvTe0JkT5zkF
   Q==;
X-CSE-ConnectionGUID: MToiyWwUSZ+iF4TGYmV7ZA==
X-CSE-MsgGUID: 7HfyCPooRmyao6jEFATAxw==
X-IronPort-AV: E=McAfee;i="6700,10204,11235"; a="40868330"
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="40868330"
X-CSE-ConnectionGUID: U+IhO4ZdSmukpojzOgMEog==
X-CSE-MsgGUID: 57T+eSsTSUawMXHuyqKwcg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="104136410"
Date: Fri, 25 Oct 2024 13:44:59 +0800
From: kernel test robot <lkp@intel.com>
To: Jani Nikula <jani.nikula@intel.com>, dri-devel@lists.freedesktop.org
Cc: oe-kbuild-all@lists.linux.dev, jani.nikula@intel.com,
	David Airlie <airlied@gmail.com>,
	Hamza Mahfooz <hamza.mahfooz@amd.com>,
	Javier Martinez Canillas <javierm@redhat.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Simon Ser <contact@emersion.fr>, Simona Vetter <simona@ffwll.ch>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>,
	amd-gfx@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org,
	nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: remove driver date from struct drm_driver and
 all drivers
Message-ID: <202410251306.cOs7w98U-lkp@intel.com>
References: <20241024162240.2398664-2-jani.nikula@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241024162240.2398664-2-jani.nikula@intel.com>

Hi Jani,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on next-20241024]
[cannot apply to drm-exynos/exynos-drm-next shawnguo/for-next drm-xe/drm-xe-next linus/master v6.12-rc4]
[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/Jani-Nikula/drm-remove-driver-date-from-struct-drm_driver-and-all-drivers/20241025-002344
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20241024162240.2398664-2-jani.nikula%40intel.com
patch subject: [PATCH 2/2] drm: remove driver date from struct drm_driver and all drivers
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20241025/202410251306.cOs7w98U-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241025/202410251306.cOs7w98U-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/202410251306.cOs7w98U-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/accel/qaic/qaic_drv.c:211:10: error: 'const struct drm_driver' has no member named 'date'
     211 |         .date                   = "20190618",
         |          ^~~~
>> drivers/accel/qaic/qaic_drv.c:211:35: error: initialization of 'unsigned int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
     211 |         .date                   = "20190618",
         |                                   ^~~~~~~~~~
   drivers/accel/qaic/qaic_drv.c:211:35: note: (near initialization for 'qaic_accel_driver.driver_features')
>> drivers/accel/qaic/qaic_drv.c:211:35: error: initializer element is not computable at load time
   drivers/accel/qaic/qaic_drv.c:211:35: note: (near initialization for 'qaic_accel_driver.driver_features')


vim +211 drivers/accel/qaic/qaic_drv.c

c501ca23a6a306 Jeffrey Hugo 2023-03-27  205  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  206  static const struct drm_driver qaic_accel_driver = {
c501ca23a6a306 Jeffrey Hugo 2023-03-27  207  	.driver_features	= DRIVER_GEM | DRIVER_COMPUTE_ACCEL,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  208  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  209  	.name			= QAIC_NAME,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  210  	.desc			= QAIC_DESC,
c501ca23a6a306 Jeffrey Hugo 2023-03-27 @211  	.date			= "20190618",
c501ca23a6a306 Jeffrey Hugo 2023-03-27  212  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  213  	.fops			= &qaic_accel_fops,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  214  	.open			= qaic_open,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  215  	.postclose		= qaic_postclose,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  216  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  217  	.ioctls			= qaic_drm_ioctls,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  218  	.num_ioctls		= ARRAY_SIZE(qaic_drm_ioctls),
c501ca23a6a306 Jeffrey Hugo 2023-03-27  219  	.gem_prime_import	= qaic_gem_prime_import,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  220  };
c501ca23a6a306 Jeffrey Hugo 2023-03-27  221  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 05:46:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 05:46:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825631.1239910 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4D93-0003Qa-51; Fri, 25 Oct 2024 05:45:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825631.1239910; Fri, 25 Oct 2024 05:45: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 1t4D93-0003QT-2H; Fri, 25 Oct 2024 05:45:57 +0000
Received: by outflank-mailman (input) for mailman id 825631;
 Fri, 25 Oct 2024 05:45: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=acHf=RV=intel.com=lkp@srs-se1.protection.inumbo.net>)
 id 1t4D91-0003CB-Ve
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 05:45:55 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6616a646-9294-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 07:45:54 +0200 (CEST)
Received: from fmviesa002.fm.intel.com ([10.60.135.142])
 by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 24 Oct 2024 22:45:47 -0700
Received: from lkp-server01.sh.intel.com (HELO a48cf1aa22e8) ([10.239.97.150])
 by fmviesa002.fm.intel.com with ESMTP; 24 Oct 2024 22:45:43 -0700
Received: from kbuild by a48cf1aa22e8 with local (Exim 4.96)
 (envelope-from <lkp@intel.com>) id 1t4D8m-000Xdu-1s;
 Fri, 25 Oct 2024 05:45: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>
X-Inumbo-ID: 6616a646-9294-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729835154; x=1761371154;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=d6JyXPx+kHE4nYoocbnftXCWw7YO4qfXOoYUCXuMLxA=;
  b=ZZAqGYmig0kuInJ/9/n53SufkcN8cf+ObHkAFKRPV+Cu5mZ1IabML/WZ
   Gf8kk1x9M/hwEMRzPkoVbxSZZrVVFTObMDkOJ55iBZP709loA0tw7C+UU
   3wOKTC3Hg/UeIkoZHx58JU58xcKluAUqr6OiNwu4Ou7WzG/5iQLcA2LTS
   vofkkKg0RZrRAGFR5fWwNs9USPhnEZ/d5PnTU0bu6Lbp68xJHoZEQtm5S
   GjPZsBOctf2ablvucc6EHO6bUtrb0/oRY3hVOnTQbeKYBDPj8BA9ZJ4A1
   ecRC2CEaNqNYPNtznbXygZ1kUH/K0wi1+zhRDd5eOQOV43QHkdQ84icEK
   A==;
X-CSE-ConnectionGUID: 3eg+RdTnR5iZBLdBXqCjlQ==
X-CSE-MsgGUID: 1jUsnonqQKG+FR+FUzyQhg==
X-IronPort-AV: E=McAfee;i="6700,10204,11235"; a="40868318"
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="40868318"
X-CSE-ConnectionGUID: 8RRHYjSZR/mmg5cNN9rESg==
X-CSE-MsgGUID: j9kwpRVPQfu+hTcVUF9OoQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="104136408"
Date: Fri, 25 Oct 2024 13:44:57 +0800
From: kernel test robot <lkp@intel.com>
To: Jani Nikula <jani.nikula@intel.com>, dri-devel@lists.freedesktop.org
Cc: oe-kbuild-all@lists.linux.dev, jani.nikula@intel.com,
	David Airlie <airlied@gmail.com>,
	Hamza Mahfooz <hamza.mahfooz@amd.com>,
	Javier Martinez Canillas <javierm@redhat.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Simon Ser <contact@emersion.fr>, Simona Vetter <simona@ffwll.ch>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>,
	amd-gfx@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org,
	nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: remove driver date from struct drm_driver and
 all drivers
Message-ID: <202410251351.r16zfufe-lkp@intel.com>
References: <20241024162240.2398664-2-jani.nikula@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241024162240.2398664-2-jani.nikula@intel.com>

Hi Jani,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on next-20241024]
[cannot apply to drm-exynos/exynos-drm-next shawnguo/for-next drm-xe/drm-xe-next linus/master v6.12-rc4]
[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/Jani-Nikula/drm-remove-driver-date-from-struct-drm_driver-and-all-drivers/20241025-002344
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20241024162240.2398664-2-jani.nikula%40intel.com
patch subject: [PATCH 2/2] drm: remove driver date from struct drm_driver and all drivers
config: i386-buildonly-randconfig-004-20241025 (https://download.01.org/0day-ci/archive/20241025/202410251351.r16zfufe-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241025/202410251351.r16zfufe-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/202410251351.r16zfufe-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/accel/qaic/qaic_drv.c:211:10: error: 'const struct drm_driver' has no member named 'date'
     211 |         .date                   = "20190618",
         |          ^~~~
>> drivers/accel/qaic/qaic_drv.c:211:35: warning: initialization of 'unsigned int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
     211 |         .date                   = "20190618",
         |                                   ^~~~~~~~~~
   drivers/accel/qaic/qaic_drv.c:211:35: note: (near initialization for 'qaic_accel_driver.driver_features')
   drivers/accel/qaic/qaic_drv.c:211:35: warning: initialized field overwritten [-Woverride-init]
   drivers/accel/qaic/qaic_drv.c:211:35: note: (near initialization for 'qaic_accel_driver.driver_features')


vim +211 drivers/accel/qaic/qaic_drv.c

c501ca23a6a306 Jeffrey Hugo 2023-03-27  205  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  206  static const struct drm_driver qaic_accel_driver = {
c501ca23a6a306 Jeffrey Hugo 2023-03-27  207  	.driver_features	= DRIVER_GEM | DRIVER_COMPUTE_ACCEL,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  208  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  209  	.name			= QAIC_NAME,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  210  	.desc			= QAIC_DESC,
c501ca23a6a306 Jeffrey Hugo 2023-03-27 @211  	.date			= "20190618",
c501ca23a6a306 Jeffrey Hugo 2023-03-27  212  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  213  	.fops			= &qaic_accel_fops,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  214  	.open			= qaic_open,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  215  	.postclose		= qaic_postclose,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  216  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  217  	.ioctls			= qaic_drm_ioctls,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  218  	.num_ioctls		= ARRAY_SIZE(qaic_drm_ioctls),
c501ca23a6a306 Jeffrey Hugo 2023-03-27  219  	.gem_prime_import	= qaic_gem_prime_import,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  220  };
c501ca23a6a306 Jeffrey Hugo 2023-03-27  221  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 06:17:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 06:17:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825644.1239920 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Dd2-0008OW-L4; Fri, 25 Oct 2024 06:16:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825644.1239920; Fri, 25 Oct 2024 06:16: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 1t4Dd2-0008OP-Gu; Fri, 25 Oct 2024 06:16:56 +0000
Received: by outflank-mailman (input) for mailman id 825644;
 Fri, 25 Oct 2024 06:16: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=acHf=RV=intel.com=lkp@srs-se1.protection.inumbo.net>)
 id 1t4Dd0-0008OJ-L0
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 06:16:54 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.20])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b8250258-9298-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 08:16:52 +0200 (CEST)
Received: from orviesa001.jf.intel.com ([10.64.159.141])
 by orvoesa112.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 24 Oct 2024 23:16:49 -0700
Received: from lkp-server01.sh.intel.com (HELO a48cf1aa22e8) ([10.239.97.150])
 by orviesa001.jf.intel.com with ESMTP; 24 Oct 2024 23:16:44 -0700
Received: from kbuild by a48cf1aa22e8 with local (Exim 4.96)
 (envelope-from <lkp@intel.com>) id 1t4Dcn-000Xg8-1z;
 Fri, 25 Oct 2024 06:16: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: b8250258-9298-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729837013; x=1761373013;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=c6V1Mv+taW3ICFO5XNnbFK4fCJZFIwQpzeF7YcNeRNs=;
  b=Z5ZcRy/4EGGqeIzGYan4gahkB1pF2FZCeqiJH7VzY/N8u/mrCtd7YbrF
   bHD+GR7QqlD6g6w2m7Eu8hjLqtSoJP+Mw6k9d5rEoYd/hpa62hhSavD/O
   VzIUoPo3eRHUSCNRtzsHX3ytp2UKXjUBmE7CiADDyoLwtUAzl9hz3YCGm
   V9bdJ4bKGqz9mBGh785bHfOkF+tNklG+5lUxqcJLI2Ld5PU2Gj0Y65r7b
   q9Bxz4XRx/xbm1ldU0c7Vkd3JI55lYr3e9Dsi5H8VE7J8RQSiCT6O+YD8
   K+OL7AXoO9wp6KAjOMxgmOOiRthEtus7xHDobtLjByjPfLKTSY92z9tOB
   Q==;
X-CSE-ConnectionGUID: N9/VjQBBQRuOqeEAGhHfhw==
X-CSE-MsgGUID: 4vdZ5kLLT5W7SlwjCbNy4g==
X-IronPort-AV: E=McAfee;i="6700,10204,11222"; a="29274982"
X-IronPort-AV: E=Sophos;i="6.11,199,1725346800"; 
   d="scan'208";a="29274982"
X-CSE-ConnectionGUID: PKYOkV+QSeWAVUQvMAg3ZA==
X-CSE-MsgGUID: q+TANJcEReWiNuhgN2CKuw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="118287858"
Date: Fri, 25 Oct 2024 14:16:09 +0800
From: kernel test robot <lkp@intel.com>
To: Jani Nikula <jani.nikula@intel.com>, dri-devel@lists.freedesktop.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	jani.nikula@intel.com, David Airlie <airlied@gmail.com>,
	Hamza Mahfooz <hamza.mahfooz@amd.com>,
	Javier Martinez Canillas <javierm@redhat.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Simon Ser <contact@emersion.fr>, Simona Vetter <simona@ffwll.ch>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>,
	amd-gfx@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org,
	nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: remove driver date from struct drm_driver and
 all drivers
Message-ID: <202410251345.nA1iHU0x-lkp@intel.com>
References: <20241024162240.2398664-2-jani.nikula@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241024162240.2398664-2-jani.nikula@intel.com>

Hi Jani,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on next-20241024]
[cannot apply to drm-exynos/exynos-drm-next shawnguo/for-next drm-xe/drm-xe-next linus/master v6.12-rc4]
[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/Jani-Nikula/drm-remove-driver-date-from-struct-drm_driver-and-all-drivers/20241025-002344
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20241024162240.2398664-2-jani.nikula%40intel.com
patch subject: [PATCH 2/2] drm: remove driver date from struct drm_driver and all drivers
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20241025/202410251345.nA1iHU0x-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 5886454669c3c9026f7f27eab13509dd0241f2d6)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241025/202410251345.nA1iHU0x-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/202410251345.nA1iHU0x-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/accel/qaic/qaic_drv.c:7:
   In file included from include/linux/dma-mapping.h:8:
   In file included from include/linux/device.h:32:
   In file included from include/linux/device/driver.h:21:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/s390/include/asm/elf.h:181:
   In file included from arch/s390/include/asm/mmu_context.h:11:
   In file included from arch/s390/include/asm/pgalloc.h:18:
   In file included from include/linux/mm.h:2213:
   include/linux/vmstat.h:504:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     504 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     505 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:511:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     511 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     512 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:518:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     518 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:524:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     524 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     525 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/accel/qaic/qaic_drv.c:7:
   In file included from include/linux/dma-mapping.h:11:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:93:
   include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     548 |         val = __raw_readb(PCI_IOBASE + addr);
         |                           ~~~~~~~~~~ ^
   include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     561 |         val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
      37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
         |                                                           ^
   include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
     102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
         |                                                      ^
   In file included from drivers/accel/qaic/qaic_drv.c:7:
   In file included from include/linux/dma-mapping.h:11:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:93:
   include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     574 |         val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
      35 | #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
         |                                                           ^
   include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
     115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
         |                                                      ^
   In file included from drivers/accel/qaic/qaic_drv.c:7:
   In file included from include/linux/dma-mapping.h:11:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/s390/include/asm/io.h:93:
   include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     585 |         __raw_writeb(value, PCI_IOBASE + addr);
         |                             ~~~~~~~~~~ ^
   include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     595 |         __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     605 |         __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:693:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     693 |         readsb(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:701:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     701 |         readsw(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:709:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     709 |         readsl(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:718:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     718 |         writesb(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:727:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     727 |         writesw(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:736:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
     736 |         writesl(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
>> drivers/accel/qaic/qaic_drv.c:211:3: error: field designator 'date' does not refer to any field in type 'const struct drm_driver'
     211 |         .date                   = "20190618",
         |         ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/accel/qaic/qaic_drv.c:448:46: warning: shift count >= width of type [-Wshift-count-overflow]
     448 |         ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
         |                                                     ^~~~~~~~~~~~~~~~
   include/linux/dma-mapping.h:77:54: note: expanded from macro 'DMA_BIT_MASK'
      77 | #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
         |                                                      ^ ~~~
   17 warnings and 1 error generated.


vim +211 drivers/accel/qaic/qaic_drv.c

c501ca23a6a306 Jeffrey Hugo 2023-03-27  205  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  206  static const struct drm_driver qaic_accel_driver = {
c501ca23a6a306 Jeffrey Hugo 2023-03-27  207  	.driver_features	= DRIVER_GEM | DRIVER_COMPUTE_ACCEL,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  208  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  209  	.name			= QAIC_NAME,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  210  	.desc			= QAIC_DESC,
c501ca23a6a306 Jeffrey Hugo 2023-03-27 @211  	.date			= "20190618",
c501ca23a6a306 Jeffrey Hugo 2023-03-27  212  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  213  	.fops			= &qaic_accel_fops,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  214  	.open			= qaic_open,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  215  	.postclose		= qaic_postclose,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  216  
c501ca23a6a306 Jeffrey Hugo 2023-03-27  217  	.ioctls			= qaic_drm_ioctls,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  218  	.num_ioctls		= ARRAY_SIZE(qaic_drm_ioctls),
c501ca23a6a306 Jeffrey Hugo 2023-03-27  219  	.gem_prime_import	= qaic_gem_prime_import,
c501ca23a6a306 Jeffrey Hugo 2023-03-27  220  };
c501ca23a6a306 Jeffrey Hugo 2023-03-27  221  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 07:32:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 07:32:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825564.1239930 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Enb-0001WU-SK; Fri, 25 Oct 2024 07:31:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825564.1239930; Fri, 25 Oct 2024 07: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 1t4Enb-0001WN-Nx; Fri, 25 Oct 2024 07:31:55 +0000
Received: by outflank-mailman (input) for mailman id 825564;
 Thu, 24 Oct 2024 21:35: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=hbll=RU=emersion.fr=contact@srs-se1.protection.inumbo.net>)
 id 1t45Ty-0003Z0-HK
 for xen-devel@lists.xenproject.org; Thu, 24 Oct 2024 21:35:03 +0000
Received: from mail-4317.proton.ch (mail-4317.proton.ch [185.70.43.17])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d206b37b-924f-11ef-a0bf-8be0dac302b0;
 Thu, 24 Oct 2024 23:35:00 +0200 (CEST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d206b37b-924f-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emersion.fr;
	s=protonmail; t=1729805698; x=1730064898;
	bh=U0MZUFxkg3+UOPqNFrbWaEyCbKpVVLhO0H5Klvvg8Vk=;
	h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References:
	 Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
	 Message-ID:BIMI-Selector;
	b=GchmDkiwzjHUzphRTZ7mqVaLX2rZofgM4AeXNI1oLuZBQlf6NiAkhwO71L7ZqlXw/
	 Z88fUiHzB4reDhzc5BLtCRTrWUdeZqFf66kACHNnSXaqgQi7HFFDbaKXtDPCI0lwvQ
	 /xYfCYTEs5rqpCsP8XHu0Odx7iqSfJC3vAaYm8XhI/K/7f+I+GiorF/ipKppCXwiyA
	 XMuMoPP/6Fu3JAfGd/63W6CNXBijFN6BkAFXgu5r4W6EkWgqy1uOa6cwu1xh9PgXWk
	 B3aIk07fwbgTww5H7lkC3sqYqqagIcF+hOR1IQ6Vlhq6qUeyvdDsdSCQv/IJZB+fsI
	 /06b1a3z3rctQ==
Date: Thu, 24 Oct 2024 21:34:52 +0000
To: Jani Nikula <jani.nikula@intel.com>
From: Simon Ser <contact@emersion.fr>
Cc: dri-devel@lists.freedesktop.org, David Airlie <airlied@gmail.com>, Hamza Mahfooz <hamza.mahfooz@amd.com>, Javier Martinez Canillas <javierm@redhat.com>, Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Simona Vetter <simona@ffwll.ch>, Thomas Zimmermann <tzimmermann@suse.de>, =?utf-8?Q?Ville_Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>, amd-gfx@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: remove driver date from struct drm_driver and all drivers
Message-ID: <QMi2RXA05r08zucgpXkakwSfIm28vqmqYoOP-Da66Gq4jQWGZA8PfpAGd4z1VYfU4ao-2sj4u5qO6n5OpQv-ccu8Rwtm5Y1MNpQ-rpTo0tY=@emersion.fr>
In-Reply-To: <20241024162240.2398664-2-jani.nikula@intel.com>
References: <20241024162240.2398664-1-jani.nikula@intel.com> <20241024162240.2398664-2-jani.nikula@intel.com>
Feedback-ID: 1358184:user:proton
X-Pm-Message-ID: ff36b191848725b70c63fcfb4b045f3132e16d83
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Acked-by: Simon Ser <contact@emersion.fr>


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 07:46:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 07:46:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825663.1239939 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4F1t-0003Rj-7q; Fri, 25 Oct 2024 07:46:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825663.1239939; Fri, 25 Oct 2024 07:46: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 1t4F1t-0003Rc-55; Fri, 25 Oct 2024 07:46:41 +0000
Received: by outflank-mailman (input) for mailman id 825663;
 Fri, 25 Oct 2024 07:46: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=woHg=RV=linux.intel.com=ville.syrjala@srs-se1.protection.inumbo.net>)
 id 1t4F1s-0003RW-3K
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 07:46:40 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 42524174-92a5-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 09:46:36 +0200 (CEST)
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
 by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 25 Oct 2024 00:46:34 -0700
Received: from stinkpipe.fi.intel.com (HELO stinkbox) ([10.237.72.74])
 by fmviesa008.fm.intel.com with SMTP; 25 Oct 2024 00:46:24 -0700
Received: by stinkbox (sSMTP sendmail emulation);
 Fri, 25 Oct 2024 10:46:23 +0300
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42524174-92a5-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729842397; x=1761378397;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:content-transfer-encoding:in-reply-to;
  bh=Mzm/p9vp/1SxZYyxLUIAr3dK4m/QwRpy+mAy/vi+65A=;
  b=LYivEDIEWQiqAnUHNrZ9TFEZ34ZEfufYxRzKeBkINNV0Obu+vR7m7psb
   9Mh5hVbbsuSRaU2fZLeBGSHCs6BZ01yvdwJkbzYGdNTaIyZOhlbRMCUCf
   MczcTKAocY6zMCA32VyzVA8+AAoeElp242BrYU5RK5uWIy8Jo/ojz4Jeg
   6f6SU7ViUqHkfTRbz/dcsLc1a40BmETd1Cc98BuwPwmEB9YX8W6hRJDwQ
   /CypW4u/M90IP4dxo+3f0Yw8qXnOOkz+KrGqCcSURdhF2MWp5vYxRcFOa
   oJa+2faga/ZblpeGGQfAeJfI7077dgbBOL7FZlIHTZc9VmmON2BQja+gh
   Q==;
X-CSE-ConnectionGUID: StwnbtfiT8KTl7s+Md3p2A==
X-CSE-MsgGUID: +V6MyHwFRjSkPTy+Gbejrw==
X-IronPort-AV: E=McAfee;i="6700,10204,11222"; a="29446877"
X-IronPort-AV: E=Sophos;i="6.11,199,1725346800"; 
   d="scan'208";a="29446877"
X-CSE-ConnectionGUID: 4NLKVHg9T6yFez9/u+3hfQ==
X-CSE-MsgGUID: 8E8OB6zhRpuvXvELpRP+eg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="80948136"
Date: Fri, 25 Oct 2024 10:46:23 +0300
From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@linux.intel.com>
To: dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org,
	Abhinav Kumar <quic_abhinavk@quicinc.com>,
	Alain Volmat <alain.volmat@foss.st.com>,
	Alex Deucher <alexander.deucher@amd.com>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	amd-gfx@lists.freedesktop.org, Andy Yan <andy.yan@rock-chips.com>,
	Christian =?iso-8859-1?Q?K=F6nig?= <christian.koenig@amd.com>,
	Danilo Krummrich <dakr@redhat.com>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	freedreno@lists.freedesktop.org,
	Hans de Goede <hdegoede@redhat.com>,
	Heiko =?iso-8859-1?Q?St=FCbner?= <heiko@sntech.de>,
	Inki Dae <inki.dae@samsung.com>, Jyri Sarha <jyri.sarha@iki.fi>,
	Karol Herbst <kherbst@redhat.com>,
	linux-amlogic@lists.infradead.org, linux-arm-msm@vger.kernel.org,
	linux-arm-msm@vger.kernel.orga, linux-mediatek@lists.infradead.org,
	linux-renesas-soc@vger.kernel.org,
	Liviu Dudau <liviu.dudau@arm.com>, Lyude Paul <lyude@redhat.com>,
	=?iso-8859-1?Q?Ma=EDra?= Canal <mairacanal@riseup.net>,
	Marijn Suijten <marijn.suijten@somainline.org>,
	nouveau@lists.freedesktop.org, nouveau@lists.freedesktop.orga,
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>,
	Rob Clark <robdclark@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	Sandy Huang <hjc@rock-chips.com>, Sean Paul <sean@poorly.run>,
	spice-devel@lists.freedesktop.org, virtualization@lists.linux.dev,
	xen-devel@lists.xenproject.org, Xinhui Pan <Xinhui.Pan@amd.com>,
	Zack Rusin <zack.rusin@broadcom.com>
Subject: Re: [PATCH 0/2] drm: Treewide plane/crtc legacy state sweeping
Message-ID: <ZxtMz8JP3DbzpMew@intel.com>
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
X-Patchwork-Hint: comment

On Wed, Oct 02, 2024 at 09:21:58PM +0300, Ville Syrjala wrote:
> From: Ville Syrjl <ville.syrjala@linux.intel.com>
> 
> An attempt to hide the drm_plane/crtc legacy state better.
> 
> This also highlights the fact that a lot of supposedly
> atomic drivers are poking around in the legacy crtc state,
> which is rather questionable. For planes we did force the
> legacy state to NULL already to force drivers to behave.
> But even then it seems capable of confusing people with
> its high profile location directly under drm_plane.
> 
> This might end up as some kind of conflict
> galore, but the alternative would involve trying
> to wean the atomic drivers off one by one,
> which would probably take forever. At least with
> this the issue becomes visible and shouldn't be
> forgotten as easily.

Ping, anyone have thoughts on this? I'd like to get something
like this in at some point to make the legacy state (ab)users
easily visible...

> 
> The cc list was getting way out of hand, so I had
> to trim it a bit. Hopefully I didn't chop off too
> many names...
> 
> Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
> Cc: Alain Volmat <alain.volmat@foss.st.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>
> Cc: Alexey Brodkin <abrodkin@synopsys.com>
> Cc: amd-gfx@lists.freedesktop.org
> Cc: Andy Yan <andy.yan@rock-chips.com>
> Cc: "Christian Knig" <christian.koenig@amd.com>
> Cc: Danilo Krummrich <dakr@redhat.com>
> Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Cc: freedreno@lists.freedesktop.org
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: "Heiko Stbner" <heiko@sntech.de>
> Cc: Inki Dae <inki.dae@samsung.com>
> Cc: Jyri Sarha <jyri.sarha@iki.fi>
> Cc: Karol Herbst <kherbst@redhat.com>
> Cc: linux-amlogic@lists.infradead.org
> Cc: linux-arm-msm@vger.kernel.org
> Cc: linux-arm-msm@vger.kernel.orga
> Cc: linux-mediatek@lists.infradead.org
> Cc: linux-renesas-soc@vger.kernel.org
> Cc: Liviu Dudau <liviu.dudau@arm.com>
> Cc: Lyude Paul <lyude@redhat.com>
> Cc: "Mara Canal" <mairacanal@riseup.net>
> Cc: Marijn Suijten <marijn.suijten@somainline.org>
> Cc: nouveau@lists.freedesktop.org
> Cc: nouveau@lists.freedesktop.orga
> Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
> Cc: Rob Clark <robdclark@gmail.com>
> Cc: Russell King <linux@armlinux.org.uk>
> Cc: Sandy Huang <hjc@rock-chips.com>
> Cc: Sean Paul <sean@poorly.run>
> Cc: spice-devel@lists.freedesktop.org
> Cc: virtualization@lists.linux.dev
> Cc: xen-devel@lists.xenproject.org
> Cc: Xinhui Pan <Xinhui.Pan@amd.com>
> Cc: Zack Rusin <zack.rusin@broadcom.com>
> 
> Ville Syrjl (2):
>   drm: Move plane->{fb,old_fb,crtc} to legacy sub-structure
>   drm: Move crtc->{x,y,mode,enabled} to legacy sub-structure
> 
>  .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    |  7 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   | 20 ++---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c       |  2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c      |  2 +-
>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c        | 35 ++++----
>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c        | 35 ++++----
>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c         | 37 ++++-----
>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c         | 35 ++++----
>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++--
>  .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c    |  2 +-
>  drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c  |  4 +-
>  drivers/gpu/drm/arm/hdlcd_drv.c               |  2 +-
>  drivers/gpu/drm/arm/malidp_hw.c               |  2 +-
>  drivers/gpu/drm/armada/armada_crtc.c          | 12 ++-
>  drivers/gpu/drm/ast/ast_dp.c                  |  8 +-
>  drivers/gpu/drm/drm_atomic.c                  |  6 +-
>  drivers/gpu/drm/drm_atomic_helper.c           |  8 +-
>  drivers/gpu/drm/drm_client_modeset.c          | 10 +--
>  drivers/gpu/drm/drm_crtc.c                    | 31 +++----
>  drivers/gpu/drm/drm_crtc_helper.c             | 80 ++++++++++---------
>  drivers/gpu/drm/drm_fb_helper.c               | 12 +--
>  drivers/gpu/drm/drm_framebuffer.c             |  4 +-
>  drivers/gpu/drm/drm_plane.c                   | 69 ++++++++--------
>  drivers/gpu/drm/drm_plane_helper.c            |  6 +-
>  drivers/gpu/drm/drm_vblank.c                  |  2 +-
>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c |  4 +-
>  drivers/gpu/drm/gma500/cdv_intel_display.c    |  2 +-
>  drivers/gpu/drm/gma500/cdv_intel_dp.c         |  6 +-
>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c       |  3 +-
>  drivers/gpu/drm/gma500/cdv_intel_lvds.c       |  6 +-
>  drivers/gpu/drm/gma500/gma_display.c          | 22 ++---
>  drivers/gpu/drm/gma500/oaktrail_crtc.c        |  2 +-
>  drivers/gpu/drm/gma500/psb_intel_display.c    |  2 +-
>  drivers/gpu/drm/gma500/psb_intel_lvds.c       |  6 +-
>  drivers/gpu/drm/gma500/psb_intel_sdvo.c       |  8 +-
>  drivers/gpu/drm/i2c/ch7006_drv.c              |  7 +-
>  drivers/gpu/drm/i2c/sil164_drv.c              |  2 +-
>  .../drm/i915/display/intel_modeset_setup.c    |  4 +-
>  drivers/gpu/drm/imx/lcdc/imx-lcdc.c           | 31 ++++---
>  drivers/gpu/drm/mediatek/mtk_crtc.c           |  6 +-
>  drivers/gpu/drm/meson/meson_overlay.c         |  2 +-
>  drivers/gpu/drm/meson/meson_plane.c           |  8 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 18 +++--
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c       |  6 +-
>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c     | 16 ++--
>  drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c     |  4 +-
>  drivers/gpu/drm/nouveau/dispnv04/crtc.c       | 25 +++---
>  drivers/gpu/drm/nouveau/dispnv04/cursor.c     |  2 +-
>  drivers/gpu/drm/nouveau/dispnv04/dfp.c        |  2 +-
>  drivers/gpu/drm/nouveau/dispnv04/disp.c       |  4 +-
>  .../gpu/drm/nouveau/dispnv04/tvmodesnv17.c    |  4 +-
>  drivers/gpu/drm/nouveau/dispnv04/tvnv17.c     |  7 +-
>  drivers/gpu/drm/nouveau/nouveau_connector.c   |  6 +-
>  drivers/gpu/drm/qxl/qxl_display.c             |  6 +-
>  drivers/gpu/drm/radeon/atombios_crtc.c        | 28 +++----
>  drivers/gpu/drm/radeon/cik.c                  | 12 +--
>  drivers/gpu/drm/radeon/evergreen.c            | 16 ++--
>  drivers/gpu/drm/radeon/r100.c                 | 16 ++--
>  drivers/gpu/drm/radeon/r600_cs.c              |  2 +-
>  drivers/gpu/drm/radeon/r600_dpm.c             |  4 +-
>  drivers/gpu/drm/radeon/radeon_connectors.c    |  7 +-
>  drivers/gpu/drm/radeon/radeon_cursor.c        | 29 +++----
>  drivers/gpu/drm/radeon/radeon_device.c        |  2 +-
>  drivers/gpu/drm/radeon/radeon_display.c       | 26 +++---
>  drivers/gpu/drm/radeon/radeon_drv.c           |  2 +-
>  drivers/gpu/drm/radeon/radeon_legacy_crtc.c   | 16 ++--
>  .../gpu/drm/radeon/radeon_legacy_encoders.c   |  2 +-
>  drivers/gpu/drm/radeon/radeon_pm.c            |  2 +-
>  drivers/gpu/drm/radeon/rs600.c                | 10 +--
>  drivers/gpu/drm/radeon/rs690.c                | 22 ++---
>  drivers/gpu/drm/radeon/rs780_dpm.c            |  6 +-
>  drivers/gpu/drm/radeon/rv515.c                | 30 +++----
>  drivers/gpu/drm/radeon/rv770.c                |  2 +-
>  drivers/gpu/drm/radeon/si.c                   | 14 ++--
>  .../gpu/drm/renesas/rcar-du/rcar_du_crtc.c    |  2 +-
>  .../gpu/drm/renesas/shmobile/shmob_drm_crtc.c |  2 +-
>  drivers/gpu/drm/rockchip/rockchip_drm_vop.c   |  6 +-
>  drivers/gpu/drm/sti/sti_crtc.c                |  4 +-
>  drivers/gpu/drm/sti/sti_cursor.c              |  2 +-
>  drivers/gpu/drm/sti/sti_gdp.c                 |  2 +-
>  drivers/gpu/drm/sti/sti_hqvdp.c               |  2 +-
>  drivers/gpu/drm/sti/sti_tvout.c               |  6 +-
>  drivers/gpu/drm/sti/sti_vid.c                 |  2 +-
>  drivers/gpu/drm/tilcdc/tilcdc_crtc.c          | 10 +--
>  drivers/gpu/drm/tiny/arcpgu.c                 |  2 +-
>  drivers/gpu/drm/vboxvideo/vbox_mode.c         |  2 +-
>  drivers/gpu/drm/vc4/vc4_dpi.c                 |  2 +-
>  drivers/gpu/drm/vc4/vc4_plane.c               |  4 +-
>  drivers/gpu/drm/virtio/virtgpu_display.c      |  4 +-
>  drivers/gpu/drm/vkms/vkms_composer.c          |  4 +-
>  drivers/gpu/drm/vkms/vkms_crtc.c              |  2 +-
>  drivers/gpu/drm/vkms/vkms_writeback.c         |  4 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_kms.c           |  8 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c           | 18 +++--
>  drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c          |  9 ++-
>  drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c          |  4 +-
>  drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c          |  2 +-
>  drivers/gpu/drm/xen/xen_drm_front_kms.c       |  2 +-
>  include/drm/drm_crtc.h                        | 75 ++++++++---------
>  include/drm/drm_plane.h                       | 52 ++++++------
>  100 files changed, 599 insertions(+), 547 deletions(-)
> 
> -- 
> 2.45.2

-- 
Ville Syrjl
Intel


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 08:38:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 08:38:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825675.1239949 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Fpk-0002E6-0g; Fri, 25 Oct 2024 08:38:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825675.1239949; Fri, 25 Oct 2024 08: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 1t4Fpj-0002Dz-UJ; Fri, 25 Oct 2024 08:38:11 +0000
Received: by outflank-mailman (input) for mailman id 825675;
 Fri, 25 Oct 2024 08: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=/DtA=RV=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t4Fpi-0002Dr-F5
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 08:38:10 +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 75009ec8-92ac-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 10:38:07 +0200 (CEST)
Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com
 [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-114-M_eoI-kMNI2jFpS_NdFO3A-1; Fri, 25 Oct 2024 04:38:02 -0400
Received: by mail-wr1-f70.google.com with SMTP id
 ffacd0b85a97d-37d5a3afa84so1054149f8f.3
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 01:38:02 -0700 (PDT)
Received: from ?IPv6:2001:16b8:2de5:ba00:738a:c8da:daac:7543?
 (200116b82de5ba00738ac8dadaac7543.dip.versatel-1u1.de.
 [2001:16b8:2de5:ba00:738a:c8da:daac:7543])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b70c44sm932452f8f.80.2024.10.25.01.37.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 01:38:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 75009ec8-92ac-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1729845486;
	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=+CU0p5rXSrPP3uBwt5801R3G6t7PRg+8+rdxS6Av4Qw=;
	b=ItN5n2bvmMWT3zaOVF1BxaKMzv6b1yx6hUH3iAc4Ce/zU+C+N/O2FO/yFOnr1UxDg8Y5g2
	X63PWexd5bizFkToP+mfjPXCN50xycUaB2y25h4xIm+FOjsU3dcJokU6WkYrsfm3q9B9rk
	5nsw1Si7iUEIoJwTFHHJsEF3E1N1sJM=
X-MC-Unique: M_eoI-kMNI2jFpS_NdFO3A-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729845481; x=1730450281;
        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=t5SfsCaa6OQtbrocW2yvj8So2+UMhrgJURtFbTDl4+U=;
        b=OHBzUGGWM1ALK9eOihNsID9JH//B05vmBrZK+LWka2hew4iA+fzvj8DbgF+oHxKLbU
         raeUzW6WUU42OWMox5zaqms2wMDAgp5dBQlSoUAiL5qeyRlPi4DTBikABgqg7k17qoYc
         CQARB0Im71W0QYjgdwj4Y3YXtkkW5ZaGUoNuHOyh2BacG6Ar51S8b3M+xL22lJuEXZPc
         pc0KGsacjDFpcZ0iCT/TjBzT6snMZm7KFr49OAnhHP0CKFVINSSITvP727RLt61gEaY7
         TOTXWE13mk4Bf7xlVTEHHwv4XpnYFY5NcwIRqow7YzWdxvNFnJuqv1eUvwDJ/v2/cSsq
         XV6w==
X-Forwarded-Encrypted: i=1; AJvYcCULunVcsPv7Ch9+PdkVFU9b/4V+DW55/hyb8L+PmVBN/TusU03BjZcRANLCL81eLFw7V/pIuL3DboE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxkvlULB6Pfke7uCIixZhRLn4YiICHx9wfxje55RwJnz9LqY6TM
	+PpW1FzE3DgFbzvabMpxrFvmQCLtB1VBA+8YK0K7NYVLcdaRH5vwZxupuoBDuZAlgD5WBmiv8ij
	eSdA5pc8ZpELqcXSQXHGptqPABZeOZhVM4aKDQTAz/FD+YH0fT1d34SX2qHFcizd2
X-Received: by 2002:a5d:45d2:0:b0:37d:5103:8894 with SMTP id ffacd0b85a97d-37efcf78dadmr5976824f8f.42.1729845481104;
        Fri, 25 Oct 2024 01:38:01 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGcYWpz+kQZdr3vU0ccyDv2e4lUiNEwepdTyBtEeS9wkTJkf/x/0hfBIa/kJv59+/PzqJJV1A==
X-Received: by 2002:a5d:45d2:0:b0:37d:5103:8894 with SMTP id ffacd0b85a97d-37efcf78dadmr5976745f8f.42.1729845480512;
        Fri, 25 Oct 2024 01:38:00 -0700 (PDT)
Message-ID: <ae081c36c49733b007a8946dceeec0af94fc449a.camel@redhat.com>
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of
 pcim_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>, Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu
 <yi.l.liu@intel.com>,  Christian Brauner <brauner@kernel.org>, Ankit
 Agrawal <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>, Reinette
 Chatre <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Fri, 25 Oct 2024 10:37:57 +0200
In-Reply-To: <875xphzeun.wl-tiwai@suse.de>
References: <20241015185124.64726-1-pstanner@redhat.com>
	 <20241015185124.64726-3-pstanner@redhat.com> <87v7xk2ps5.wl-tiwai@suse.de>
	 <6f3db65fe9a5dcd1a7a8d9bd5352ecb248ef57b1.camel@redhat.com>
	 <87ttd2276j.wl-tiwai@suse.de>
	 <aec23bb79b9ff7dd7f13eb67460e0605eac22912.camel@redhat.com>
	 <875xphzeun.wl-tiwai@suse.de>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-24 at 17:43 +0200, Takashi Iwai wrote:
> On Thu, 24 Oct 2024 10:02:59 +0200,
> Philipp Stanner wrote:
> >=20
> > On Wed, 2024-10-23 at 17:03 +0200, Takashi Iwai wrote:
> > > On Wed, 23 Oct 2024 15:50:09 +0200,
> > > Philipp Stanner wrote:
> > > >=20
> > > > On Tue, 2024-10-22 at 16:08 +0200, Takashi Iwai wrote:
> > > > > On Tue, 15 Oct 2024 20:51:12 +0200,
> > > > > Philipp Stanner wrote:
> > > > > >=20
> > > > > > pci_intx() is a hybrid function which can sometimes be
> > > > > > managed
> > > > > > through
> > > > > > devres. To remove this hybrid nature from pci_intx(), it is
> > > > > > necessary to
> > > > > > port users to either an always-managed or a never-managed
> > > > > > version.
> > > > > >=20
> > > > > > hda_intel enables its PCI-Device with pcim_enable_device().
> > > > > > Thus,
> > > > > > it needs
> > > > > > the always-managed version.
> > > > > >=20
> > > > > > Replace pci_intx() with pcim_intx().
> > > > > >=20
> > > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > > > ---
> > > > > > =C2=A0sound/pci/hda/hda_intel.c | 2 +-
> > > > > > =C2=A01 file changed, 1 insertion(+), 1 deletion(-)
> > > > > >=20
> > > > > > diff --git a/sound/pci/hda/hda_intel.c
> > > > > > b/sound/pci/hda/hda_intel.c
> > > > > > index b4540c5cd2a6..b44ca7b6e54f 100644
> > > > > > --- a/sound/pci/hda/hda_intel.c
> > > > > > +++ b/sound/pci/hda/hda_intel.c
> > > > > > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx
> > > > > > *chip,
> > > > > > int do_disconnect)
> > > > > > =C2=A0=09}
> > > > > > =C2=A0=09bus->irq =3D chip->pci->irq;
> > > > > > =C2=A0=09chip->card->sync_irq =3D bus->irq;
> > > > > > -=09pci_intx(chip->pci, !chip->msi);
> > > > > > +=09pcim_intx(chip->pci, !chip->msi);
> > > > > > =C2=A0=09return 0;
> > > > > > =C2=A0}
> > > > > > =C2=A0
> > > > >=20
> > > > > Hm, it's OK-ish to do this as it's practically same as what
> > > > > pci_intx()
> > > > > currently does.=C2=A0 But, the current code can be a bit
> > > > > inconsistent
> > > > > about
> > > > > the original intx value.=C2=A0 pcim_intx() always stores !enable
> > > > > to
> > > > > res->orig_intx unconditionally, and it means that the
> > > > > orig_intx
> > > > > value
> > > > > gets overridden at each time pcim_intx() gets called.
> > > >=20
> > > > Yes.
> > > >=20
> > > > >=20
> > > > > Meanwhile, HD-audio driver does release and re-acquire the
> > > > > interrupt
> > > > > after disabling MSI when something goes wrong, and pci_intx()
> > > > > call
> > > > > above is a part of that procedure.=C2=A0 So, it can rewrite the
> > > > > res->orig_intx to another value by retry without MSI.=C2=A0 And
> > > > > after
> > > > > the
> > > > > driver removal, it'll lead to another state.
> > > >=20
> > > > I'm not sure that I understand this paragraph completely.
> > > > Still,
> > > > could
> > > > a solution for the driver on the long-term just be to use
> > > > pci_intx()?
> > >=20
> > > pci_intx() misses the restore of the original value, so it's no
> > > long-term solution, either.
> >=20
> > Sure that is missing =E2=80=93 I was basically asking whether the drive=
r
> > could
> > live without that feature.
> >=20
> > Consider that point obsolete, see below
> >=20
> > >=20
> > > What I meant is that pcim_intx() blindly assumes the negative of
> > > the
> > > passed argument as the original state, which isn't always true.=C2=A0
> > > e.g.
> > > when the driver calls it twice with different values, a wrong
> > > value
> > > may be remembered.
> >=20
> > Ah, I see =E2=80=93 thoguh the issue is when it's called several times =
with
> > the
> > *same* value, isn't it?
> >=20
> > E.g.
> >=20
> > pcim_intx(pdev, 1); // 0 is remembered as the old value
> > pcim_intx(pdev, 1); // 0 is falsely remembered as the old value
> >=20
> > Also, it would seem that calling the function for the first time
> > like
> > that:
> >=20
> > pcim_intx(pdev, 0); // old value: 1
> >=20
> > is at least incorrect, because INTx should be 0 per default,
> > shouldn't
> > it? Could then even be a 1st class bug, because INTx would end up
> > being
> > enabled despite having been disabled all the time.
>=20
> Yeah, and the unexpected restore can happen even with a single call
> of
> pcim_intx(), if the driver calls it unnecessarily.
>=20
> > > That said, I thought of something like below.
> >=20
> > At first glance that looks like a good idea to me, thanks for
> > working
> > this out!
> >=20
> > IMO you can submit that as a patch so we can discuss it separately.
>=20
> Sure, I'm going to submit later.

I just took a look into the old implementation of pci_intx() (there was
no pcim_intx() back then), before I started cleaning up PCI's devres.
This what it looked like before
25216afc9db53d85dc648aba8fb7f6d31f2c8731:

void pci_intx(struct pci_dev *pdev, int enable)
{
=09u16 pci_command, new;

=09pci_read_config_word(pdev, PCI_COMMAND, &pci_command);

=09if (enable)
=09=09new =3D pci_command & ~PCI_COMMAND_INTX_DISABLE;
=09else
=09=09new =3D pci_command | PCI_COMMAND_INTX_DISABLE;

=09if (new !=3D pci_command) {
=09=09struct pci_devres *dr;

=09=09pci_write_config_word(pdev, PCI_COMMAND, new);

=09=09dr =3D find_pci_dr(pdev);
=09=09if (dr && !dr->restore_intx) {
=09=09=09dr->restore_intx =3D 1;
=09=09=09dr->orig_intx =3D !enable;
=09=09}
=09}
}
EXPORT_SYMBOL_GPL(pci_intx);

If I'm not mistaken the old version did not have the problem because
the value to be restored only changed if new !=3D pci_command.

That should always be correct, what do you think?

If so, only my commit 25216afc9db53d85dc648aba8fb7f6d31f2c8731 needs to
be fixed.

Thanks,
P.


>=20
>=20
> thanks,
>=20
> Takashi
>=20



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 08:45:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 08:45:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825681.1239959 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Fx9-0003kk-O4; Fri, 25 Oct 2024 08:45:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825681.1239959; Fri, 25 Oct 2024 08: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 1t4Fx9-0003kd-LR; Fri, 25 Oct 2024 08:45:51 +0000
Received: by outflank-mailman (input) for mailman id 825681;
 Fri, 25 Oct 2024 08:45: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=/Dxc=RV=suse.de=tiwai@srs-se1.protection.inumbo.net>)
 id 1t4Fx8-0003kX-BO
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 08:45: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 87d9b4ee-92ad-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 10:45:48 +0200 (CEST)
Received: from imap1.dmz-prg2.suse.org (unknown [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 A7CB321E9E;
 Fri, 25 Oct 2024 08:45:46 +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 3B42513B18;
 Fri, 25 Oct 2024 08:45: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 0kI8DblaG2dPaAAAD6G6ig
 (envelope-from <tiwai@suse.de>); Fri, 25 Oct 2024 08:45: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: 87d9b4ee-92ad-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729845946; 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=fLLgMgD1WuFn/eZRfUUwEempoL5IxybItGs0mIW5a9c=;
	b=clx2zOsiRnAuc/eTROpKVLO0ZG2bWwOUHl34fY82qjlAR59nmmv9gR3LTJjwI7qQYdy+Va
	+L4ZLvLaaLX3fgCTVEAvLvlG8BUUEfsdsnwqtRtQXjsQzc/CTJMC5EoXs1I0X1WuxtBHMj
	SGDUlg6cg2a43qISAqaOgFi37jxdQE4=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729845946;
	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=fLLgMgD1WuFn/eZRfUUwEempoL5IxybItGs0mIW5a9c=;
	b=g3bikHGiSMvF/vrKNbyrTxKTQLKBT4FQ0i45X842GsWYwukqgd4FAz50GQEct1VSruaxQ8
	VZrEyDx/K8YlfIAA==
Authentication-Results: smtp-out1.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1729845946; 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=fLLgMgD1WuFn/eZRfUUwEempoL5IxybItGs0mIW5a9c=;
	b=clx2zOsiRnAuc/eTROpKVLO0ZG2bWwOUHl34fY82qjlAR59nmmv9gR3LTJjwI7qQYdy+Va
	+L4ZLvLaaLX3fgCTVEAvLvlG8BUUEfsdsnwqtRtQXjsQzc/CTJMC5EoXs1I0X1WuxtBHMj
	SGDUlg6cg2a43qISAqaOgFi37jxdQE4=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1729845946;
	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=fLLgMgD1WuFn/eZRfUUwEempoL5IxybItGs0mIW5a9c=;
	b=g3bikHGiSMvF/vrKNbyrTxKTQLKBT4FQ0i45X842GsWYwukqgd4FAz50GQEct1VSruaxQ8
	VZrEyDx/K8YlfIAA==
Date: Fri, 25 Oct 2024 10:46:46 +0200
Message-ID: <878quctvrd.wl-tiwai@suse.de>
From: Takashi Iwai <tiwai@suse.de>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Takashi Iwai <tiwai@suse.de>,	Damien Le Moal <dlemoal@kernel.org>,
	Niklas Cassel <cassel@kernel.org>,	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,	Jiri Kosina
 <jikos@kernel.org>,	Benjamin Tissoires <bentiss@kernel.org>,	Arnd Bergmann
 <arnd@arndb.de>,	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,	Alex
 Dubov <oakad@yahoo.com>,	Sudarsana Kalluru <skalluru@marvell.com>,	Manish
 Chopra <manishc@marvell.com>,	"David S. Miller" <davem@davemloft.net>,	Eric
 Dumazet <edumazet@google.com>,	Jakub Kicinski <kuba@kernel.org>,	Paolo
 Abeni <pabeni@redhat.com>,	Rasesh Mody <rmody@marvell.com>,
	GR-Linux-NIC-Dev@marvell.com,	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,	Kalle Valo <kvalo@kernel.org>,
	Sanjay R Mehta <sanju.mehta@amd.com>,	Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>,	Jon Mason <jdmason@kudzu.us>,	Dave Jiang
 <dave.jiang@intel.com>,	Allen Hubbe <allenbh@gmail.com>,	Bjorn Helgaas
 <bhelgaas@google.com>,	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,	Stefano Stabellini
 <sstabellini@kernel.org>,	Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,	Jaroslav Kysela <perex@perex.cz>,	Takashi
 Iwai <tiwai@suse.com>,	Chen Ni <nichen@iscas.ac.cn>,	Mario Limonciello
 <mario.limonciello@amd.com>,	Ricky Wu <ricky_wu@realtek.com>,	Al Viro
 <viro@zeniv.linux.org.uk>,	Breno Leitao <leitao@debian.org>,	Kevin Tian
 <kevin.tian@intel.com>,	Thomas Gleixner <tglx@linutronix.de>,	Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,	Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>,	Mostafa Saleh
 <smostafa@google.com>,	Jason Gunthorpe <jgg@ziepe.ca>,	Yi Liu
 <yi.l.liu@intel.com>,	Christian Brauner <brauner@kernel.org>,	Ankit Agrawal
 <ankita@nvidia.com>,	Eric Auger <eric.auger@redhat.com>,	Reinette Chatre
 <reinette.chatre@intel.com>,	Ye Bin <yebin10@huawei.com>,	Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,	Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>,	Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>,	Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,	Rui Salvaterra <rsalvaterra@gmail.com>,
	linux-ide@vger.kernel.org,	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,	linux-sound@vger.kernel.org
Subject: Re: [PATCH 02/13] ALSA: hda_intel: Use always-managed version of pcim_intx()
In-Reply-To: <ae081c36c49733b007a8946dceeec0af94fc449a.camel@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
	<20241015185124.64726-3-pstanner@redhat.com>
	<87v7xk2ps5.wl-tiwai@suse.de>
	<6f3db65fe9a5dcd1a7a8d9bd5352ecb248ef57b1.camel@redhat.com>
	<87ttd2276j.wl-tiwai@suse.de>
	<aec23bb79b9ff7dd7f13eb67460e0605eac22912.camel@redhat.com>
	<875xphzeun.wl-tiwai@suse.de>
	<ae081c36c49733b007a8946dceeec0af94fc449a.camel@redhat.com>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spamd-Result: default: False [-3.30 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	R_RATELIMIT(0.00)[to_ip_from(RL41ih3fejwepcmbj4wj583m3u)];
	DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	RCPT_COUNT_GT_50(0.00)[67];
	FROM_HAS_DN(0.00)[];
	FREEMAIL_CC(0.00)[suse.de,kernel.org,omp.ru,amd.com,arndb.de,linuxfoundation.org,yahoo.com,marvell.com,davemloft.net,google.com,redhat.com,quantenna.com,gmail.com,kudzu.us,intel.com,suse.com,epam.com,perex.cz,iscas.ac.cn,realtek.com,zeniv.linux.org.uk,debian.org,linutronix.de,linux.intel.com,ziepe.ca,nvidia.com,huawei.com,invisiblethingslab.com,linux.dev,vger.kernel.org,lists.linux.dev,lists.xenproject.org];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_TLS_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid,imap1.dmz-prg2.suse.org:helo]
X-Spam-Score: -3.30
X-Spam-Flag: NO

On Fri, 25 Oct 2024 10:37:57 +0200,
Philipp Stanner wrote:
> 
> On Thu, 2024-10-24 at 17:43 +0200, Takashi Iwai wrote:
> > On Thu, 24 Oct 2024 10:02:59 +0200,
> > Philipp Stanner wrote:
> > > 
> > > On Wed, 2024-10-23 at 17:03 +0200, Takashi Iwai wrote:
> > > > On Wed, 23 Oct 2024 15:50:09 +0200,
> > > > Philipp Stanner wrote:
> > > > > 
> > > > > On Tue, 2024-10-22 at 16:08 +0200, Takashi Iwai wrote:
> > > > > > On Tue, 15 Oct 2024 20:51:12 +0200,
> > > > > > Philipp Stanner wrote:
> > > > > > > 
> > > > > > > pci_intx() is a hybrid function which can sometimes be
> > > > > > > managed
> > > > > > > through
> > > > > > > devres. To remove this hybrid nature from pci_intx(), it is
> > > > > > > necessary to
> > > > > > > port users to either an always-managed or a never-managed
> > > > > > > version.
> > > > > > > 
> > > > > > > hda_intel enables its PCI-Device with pcim_enable_device().
> > > > > > > Thus,
> > > > > > > it needs
> > > > > > > the always-managed version.
> > > > > > > 
> > > > > > > Replace pci_intx() with pcim_intx().
> > > > > > > 
> > > > > > > Signed-off-by: Philipp Stanner <pstanner@redhat.com>
> > > > > > > ---
> > > > > > >  sound/pci/hda/hda_intel.c | 2 +-
> > > > > > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > > > > > 
> > > > > > > diff --git a/sound/pci/hda/hda_intel.c
> > > > > > > b/sound/pci/hda/hda_intel.c
> > > > > > > index b4540c5cd2a6..b44ca7b6e54f 100644
> > > > > > > --- a/sound/pci/hda/hda_intel.c
> > > > > > > +++ b/sound/pci/hda/hda_intel.c
> > > > > > > @@ -786,7 +786,7 @@ static int azx_acquire_irq(struct azx
> > > > > > > *chip,
> > > > > > > int do_disconnect)
> > > > > > >  	}
> > > > > > >  	bus->irq = chip->pci->irq;
> > > > > > >  	chip->card->sync_irq = bus->irq;
> > > > > > > -	pci_intx(chip->pci, !chip->msi);
> > > > > > > +	pcim_intx(chip->pci, !chip->msi);
> > > > > > >  	return 0;
> > > > > > >  }
> > > > > > >  
> > > > > > 
> > > > > > Hm, it's OK-ish to do this as it's practically same as what
> > > > > > pci_intx()
> > > > > > currently does.  But, the current code can be a bit
> > > > > > inconsistent
> > > > > > about
> > > > > > the original intx value.  pcim_intx() always stores !enable
> > > > > > to
> > > > > > res->orig_intx unconditionally, and it means that the
> > > > > > orig_intx
> > > > > > value
> > > > > > gets overridden at each time pcim_intx() gets called.
> > > > > 
> > > > > Yes.
> > > > > 
> > > > > > 
> > > > > > Meanwhile, HD-audio driver does release and re-acquire the
> > > > > > interrupt
> > > > > > after disabling MSI when something goes wrong, and pci_intx()
> > > > > > call
> > > > > > above is a part of that procedure.  So, it can rewrite the
> > > > > > res->orig_intx to another value by retry without MSI.  And
> > > > > > after
> > > > > > the
> > > > > > driver removal, it'll lead to another state.
> > > > > 
> > > > > I'm not sure that I understand this paragraph completely.
> > > > > Still,
> > > > > could
> > > > > a solution for the driver on the long-term just be to use
> > > > > pci_intx()?
> > > > 
> > > > pci_intx() misses the restore of the original value, so it's no
> > > > long-term solution, either.
> > > 
> > > Sure that is missing – I was basically asking whether the driver
> > > could
> > > live without that feature.
> > > 
> > > Consider that point obsolete, see below
> > > 
> > > > 
> > > > What I meant is that pcim_intx() blindly assumes the negative of
> > > > the
> > > > passed argument as the original state, which isn't always true. 
> > > > e.g.
> > > > when the driver calls it twice with different values, a wrong
> > > > value
> > > > may be remembered.
> > > 
> > > Ah, I see – thoguh the issue is when it's called several times with
> > > the
> > > *same* value, isn't it?
> > > 
> > > E.g.
> > > 
> > > pcim_intx(pdev, 1); // 0 is remembered as the old value
> > > pcim_intx(pdev, 1); // 0 is falsely remembered as the old value
> > > 
> > > Also, it would seem that calling the function for the first time
> > > like
> > > that:
> > > 
> > > pcim_intx(pdev, 0); // old value: 1
> > > 
> > > is at least incorrect, because INTx should be 0 per default,
> > > shouldn't
> > > it? Could then even be a 1st class bug, because INTx would end up
> > > being
> > > enabled despite having been disabled all the time.
> > 
> > Yeah, and the unexpected restore can happen even with a single call
> > of
> > pcim_intx(), if the driver calls it unnecessarily.
> > 
> > > > That said, I thought of something like below.
> > > 
> > > At first glance that looks like a good idea to me, thanks for
> > > working
> > > this out!
> > > 
> > > IMO you can submit that as a patch so we can discuss it separately.
> > 
> > Sure, I'm going to submit later.
> 
> I just took a look into the old implementation of pci_intx() (there was
> no pcim_intx() back then), before I started cleaning up PCI's devres.
> This what it looked like before
> 25216afc9db53d85dc648aba8fb7f6d31f2c8731:
> 
> void pci_intx(struct pci_dev *pdev, int enable)
> {
> 	u16 pci_command, new;
> 
> 	pci_read_config_word(pdev, PCI_COMMAND, &pci_command);
> 
> 	if (enable)
> 		new = pci_command & ~PCI_COMMAND_INTX_DISABLE;
> 	else
> 		new = pci_command | PCI_COMMAND_INTX_DISABLE;
> 
> 	if (new != pci_command) {
> 		struct pci_devres *dr;
> 
> 		pci_write_config_word(pdev, PCI_COMMAND, new);
> 
> 		dr = find_pci_dr(pdev);
> 		if (dr && !dr->restore_intx) {
> 			dr->restore_intx = 1;
> 			dr->orig_intx = !enable;
> 		}
> 	}
> }
> EXPORT_SYMBOL_GPL(pci_intx);
> 
> If I'm not mistaken the old version did not have the problem because
> the value to be restored only changed if new != pci_command.
> 
> That should always be correct, what do you think?
> 
> If so, only my commit 25216afc9db53d85dc648aba8fb7f6d31f2c8731 needs to
> be fixed.

Yes, it looks so.  Fortunately my submitted patch pointed to the right
Fixes tag :)


thanks,

Takashi


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:28:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:28:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825692.1239969 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GcP-0001BP-V4; Fri, 25 Oct 2024 09:28:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825692.1239969; Fri, 25 Oct 2024 09:28: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 1t4GcP-0001BI-SO; Fri, 25 Oct 2024 09:28:29 +0000
Received: by outflank-mailman (input) for mailman id 825692;
 Fri, 25 Oct 2024 09:28: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=Zran=RV=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t4GcN-0001BC-U4
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:28:27 +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 7d16a5bc-92b3-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:28:26 +0200 (CEST)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9a977d6cc7so124361666b.3
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:28:26 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f29830esm47711466b.108.2024.10.25.02.28.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:28:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d16a5bc-92b3-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729848506; x=1730453306; 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=vIQ9z32lCDQ89ttrJpbt5YIpjXlndBpOXBMh88sptDw=;
        b=LZLY7RRfUllkZhU/rSE4a1pmWyV1mJfE2VZDuXoXLvo4maXRyxx1BYwr8r2AgZSBxL
         UBZhDxAof5kg/tQClP9VSO2tNl4dEUuFlf1cBUXy9b52sUbONwghgqFI/GPK/TvC/FVN
         hMdJ1xaHaENZJu+WM/HkHhM0UVyfdz7BSrWh4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729848506; x=1730453306;
        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=vIQ9z32lCDQ89ttrJpbt5YIpjXlndBpOXBMh88sptDw=;
        b=vyl8fi8wNO2pQ7mIopOCmsu+CZlQNRbGTyM5VPIjZohsq1ih6mfwgCMsZP7BUEkkdS
         e+E3Q5sIcQezo/ouvfwGW5hLaOu3ZbNzlCzfRPSrBcU+JQ3QkdA/48w3j9KRschvGMov
         tBE+H3UEzZS4V1JImk/8s2sbuPKwyEUqoUF44StWi0QsTbu2T8hqEQXDMocV5wEy955C
         ZD1Dn+6IeGQTMXg0sN1+InqgFV9dbfc5waomPtj1QzmRELs5safqfPRj5WBTJOv7pHun
         Sg+vtfOzIXGYn/o7wnNsj3/RKYHbLNOv5rMoedpY5l9s6ORADhqc4mQ1oDz5ML5hdFjF
         x9Kg==
X-Gm-Message-State: AOJu0Yw7tBUUQ7QQtIDyvBJ1yW0SmyXOGk+7zniKIL4kkz7lijQOTQax
	7YA/RrdhZJlFflFS6LKbFcWlKqzWiahXqbK5ilGUTkDO233CP7pcEd4shYvWnEPu8FyX3MyJ9+b
	c
X-Google-Smtp-Source: AGHT+IGcEux7qbzxu8DVdJTrMqb09ps2lsNzSPC4X7DdtIqrZlLHUdB+061k35Z2bCJke9RFik8cOA==
X-Received: by 2002:a05:6402:e85:b0:5ca:ef8:bff8 with SMTP id 4fb4d7f45d1cf-5cb8b28ecf9mr9338060a12.33.1729848506039;
        Fri, 25 Oct 2024 02:28:26 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <jgrall@amazon.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>
Subject: [PATCH v3] MAINTAINERS: minor file line update
Date: Fri, 25 Oct 2024 10:28:15 +0100
Message-Id: <20241025092815.524810-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

"xen/arch/arm/include/asm/tee" is a directory and should be terminated
by a slash ("/").

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Acked-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Acked-by: Bertrand Marquis <bertrand.marquis@arm.com>
---
Changes since v1:
- removed second change, it was intentional.

Changes since v2:
- rebase on master;
- update list of Acked-by.
---
 MAINTAINERS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 3bba2c8c31..17fc5f9eec 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -518,7 +518,7 @@ TEE MEDIATORS
 M:	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
 M:	Bertrand Marquis <bertrand.marquis@arm.com>
 S:	Supported
-F:	xen/arch/arm/include/asm/tee
+F:	xen/arch/arm/include/asm/tee/
 F:	xen/arch/arm/tee/
 
 TOOLSTACK
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:48:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:48:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825698.1239980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GvE-00044l-FA; Fri, 25 Oct 2024 09:47:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825698.1239980; Fri, 25 Oct 2024 09: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 1t4GvE-00044e-CL; Fri, 25 Oct 2024 09:47:56 +0000
Received: by outflank-mailman (input) for mailman id 825698;
 Fri, 25 Oct 2024 09:47: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=YVVt=RV=intel.com=jani.nikula@srs-se1.protection.inumbo.net>)
 id 1t4GvD-00044Y-KF
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:47:55 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2fa311ba-92b6-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:47:47 +0200 (CEST)
Received: from orviesa006.jf.intel.com ([10.64.159.146])
 by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 25 Oct 2024 02:47:45 -0700
Received: from zzombora-mobl1.ti.intel.com (HELO localhost) ([10.245.246.193])
 by orviesa006-auth.jf.intel.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Oct 2024 02:47:39 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2fa311ba-92b6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729849668; x=1761385668;
  h=from:to:cc:subject:in-reply-to:references:date:
   message-id:mime-version;
  bh=6rbifKS/b/8sjhIHVhRdr8q9RaoX7LEiMZO8Aw36+T4=;
  b=EhFlpJUwma2PzJ7T3JOl/pvB31nNnAa+aC5WCK5rF/40nA79CteOai6T
   hHS8pD30qi9wp6Sn2ranB0Dd7UkBWQPs6mOcj3AuH43R5k9QNB9xlQYyL
   sIGi/0IphOeMqcRXEACAhT/km15466tJyq+/8Osf6ip0mgT8J3GtYh1Ca
   hlR+61bUsq2sGQp9bmZhObTIyIBBJ+IwdO3hplxp+HeDQcX/fkzqLeTG3
   0XX7LODMNj4nVr8B2LtiCeaayErYOcoV4Tq/P/NeYhPp4Vqz133ZbcjoP
   cp62ffzN9W1gvuATVmKQB1z5CzW+F8tjOEWwWi8G7Fz2ukWGvZfUr11h+
   g==;
X-CSE-ConnectionGUID: o++IDQXBTvaq1JxmjdeAgA==
X-CSE-MsgGUID: 4kEC+YW7Tqyivp1I9OmezA==
X-IronPort-AV: E=McAfee;i="6700,10204,11235"; a="46996331"
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="46996331"
X-CSE-ConnectionGUID: KEo2T9dkTJus/LCCLp7lIw==
X-CSE-MsgGUID: stIku8ljRxKprzLmkTjRng==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="81038257"
From: Jani Nikula <jani.nikula@intel.com>
To: kernel test robot <lkp@intel.com>, dri-devel@lists.freedesktop.org
Cc: oe-kbuild-all@lists.linux.dev, David Airlie <airlied@gmail.com>, Hamza
 Mahfooz <hamza.mahfooz@amd.com>, Javier Martinez
 Canillas <javierm@redhat.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Simon Ser
 <contact@emersion.fr>, Simona Vetter <simona@ffwll.ch>, Thomas Zimmermann
 <tzimmermann@suse.de>, Ville =?utf-8?B?U3lyasOkbMOk?=
 <ville.syrjala@linux.intel.com>,
 amd-gfx@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org,
 nouveau@lists.freedesktop.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH 2/2] drm: remove driver date from struct drm_driver and
 all drivers
In-Reply-To: <202410251351.r16zfufe-lkp@intel.com>
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
References: <20241024162240.2398664-2-jani.nikula@intel.com>
 <202410251351.r16zfufe-lkp@intel.com>
Date: Fri, 25 Oct 2024 12:47:35 +0300
Message-ID: <878qucqzt4.fsf@intel.com>
MIME-Version: 1.0
Content-Type: text/plain

On Fri, 25 Oct 2024, kernel test robot <lkp@intel.com> wrote:
> Hi Jani,
>
> kernel test robot noticed the following build warnings:
>
> [auto build test WARNING on drm-misc/drm-misc-next]
> [also build test WARNING on next-20241024]
> [cannot apply to drm-exynos/exynos-drm-next shawnguo/for-next drm-xe/drm-xe-next linus/master v6.12-rc4]
> [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/Jani-Nikula/drm-remove-driver-date-from-struct-drm_driver-and-all-drivers/20241025-002344
> base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
> patch link:    https://lore.kernel.org/r/20241024162240.2398664-2-jani.nikula%40intel.com
> patch subject: [PATCH 2/2] drm: remove driver date from struct drm_driver and all drivers
> config: i386-buildonly-randconfig-004-20241025 (https://download.01.org/0day-ci/archive/20241025/202410251351.r16zfufe-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241025/202410251351.r16zfufe-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/202410251351.r16zfufe-lkp@intel.com/
>
> All warnings (new ones prefixed by >>):
>
>    drivers/accel/qaic/qaic_drv.c:211:10: error: 'const struct drm_driver' has no member named 'date'
>      211 |         .date                   = "20190618",
>          |          ^~~~
>>> drivers/accel/qaic/qaic_drv.c:211:35: warning: initialization of 'unsigned int' from 'char *' makes integer from pointer without a cast [-Wint-conversion]
>      211 |         .date                   = "20190618",
>          |                                   ^~~~~~~~~~
>    drivers/accel/qaic/qaic_drv.c:211:35: note: (near initialization for 'qaic_accel_driver.driver_features')
>    drivers/accel/qaic/qaic_drv.c:211:35: warning: initialized field overwritten [-Woverride-init]
>    drivers/accel/qaic/qaic_drv.c:211:35: note: (near initialization for 'qaic_accel_driver.driver_features')

Hrmh, looks like I missed all of drivers/accel, I'll send an update
later.

BR,
Jani.


>
>
> vim +211 drivers/accel/qaic/qaic_drv.c
>
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  205  
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  206  static const struct drm_driver qaic_accel_driver = {
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  207  	.driver_features	= DRIVER_GEM | DRIVER_COMPUTE_ACCEL,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  208  
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  209  	.name			= QAIC_NAME,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  210  	.desc			= QAIC_DESC,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27 @211  	.date			= "20190618",
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  212  
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  213  	.fops			= &qaic_accel_fops,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  214  	.open			= qaic_open,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  215  	.postclose		= qaic_postclose,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  216  
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  217  	.ioctls			= qaic_drm_ioctls,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  218  	.num_ioctls		= ARRAY_SIZE(qaic_drm_ioctls),
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  219  	.gem_prime_import	= qaic_gem_prime_import,
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  220  };
> c501ca23a6a306 Jeffrey Hugo 2023-03-27  221  

-- 
Jani Nikula, Intel


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825704.1239989 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gxy-0005WZ-RD; Fri, 25 Oct 2024 09:50:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825704.1239989; Fri, 25 Oct 2024 09: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 1t4Gxy-0005WS-Oh; Fri, 25 Oct 2024 09:50:46 +0000
Received: by outflank-mailman (input) for mailman id 825704;
 Fri, 25 Oct 2024 09:50: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gxx-0005WM-PJ
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:46 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9a6f3f57-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:50:44 +0200 (CEST)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c9709c9b0cso2486630a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:44 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9a6f3f57-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849844; x=1730454644; 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=ke/yS6So1QM0AcCFZ2Tb1fxlmH3VGK/VDCVyweqhKNE=;
        b=S+JKHbVzszPHV8rYhZAjF1tNLuTvZ5lGap7E9x9OVghqHd6t0mICGCJVcfwYEAg+D4
         dio8X3RmsuYEr1U54vdIsW7uwmaB+ZJQRRnOFKgTqdZfUx62Q7Ttu6SaeGLWaFEcH688
         1GXygYbUAcd8a0RgyrC5B6cpcfMk81L175hDxU+DKFHBuVM2duYjAcEoprpukTWv1uDk
         R0GFeyu2U7glJTxSrkGzHyZ/D2EDShLCZQpZ7xWHD0AWj0tHGhYjutPqC4mWQ3QNNg2J
         DHSu5A75yE3w6N5mVRGqbonUKnXZvrzC/5ljia8ET7dtiE1wex1cw4qmhrjMab6WMnSz
         /5qg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849844; x=1730454644;
        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=ke/yS6So1QM0AcCFZ2Tb1fxlmH3VGK/VDCVyweqhKNE=;
        b=BKong60wetRz6RsTG7kGB5P05g8FD1Di2YFRCbNBQRKgWcQxIWn/R43DgWP1y2GBbb
         HfMpsF2eTNhQpRsa3Rw1DYVpn7ryWrCbINDKRNqEf9dNmJayCxH8l4/QsaD8U+wGVZrv
         EWsbdLP7nN9E20WL6mJEDAKPAKeCTfzaNelf2ypBCFREbvMY0Xsq4lPegRJ1WmMOexiq
         TuSRQdEJ6ldjamTyiXqtBHbqS06dCchI6ssiO2JZsjerRkdqEwS/cj0GgoIj7/bBR4Zb
         iuRW3h7jGKRvk+Yr6qAUr7uBDUhP5f8a/+mL429Qpje5M45EWYGppk8v7XoLQy0g0w0c
         anXQ==
X-Gm-Message-State: AOJu0Yw5PxQPijJM2hdXF/kyGuAGu57bmhDCnISYHYrza1mNCo2gXI9t
	KeiBMsAaGMoEc4pH2N02kq1LdIIhDl9Q9n4L5SAgdxXyTLOnDiHs5vx1jkkE0+5Kv/H7s420aj3
	RbeQ=
X-Google-Smtp-Source: AGHT+IHRJzha8WgD21edp2ffGdFT4OLhu6dKa7F32lU1cjOanpF+c0FLTWyH5RUZP75xSmySbWe1jw==
X-Received: by 2002:a05:6402:26d4:b0:5c5:c4b9:e68f with SMTP id 4fb4d7f45d1cf-5cb8ac36d9cmr7784490a12.5.1729849843544;
        Fri, 25 Oct 2024 02:50:43 -0700 (PDT)
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>,
	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>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v9 00/13] Arm cache coloring
Date: Fri, 25 Oct 2024 11:50:01 +0200
Message-ID: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
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.

Carlo Nonato (12):
  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 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

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

 SUPPORT.md                              |   7 +
 docs/man/xl.cfg.5.pod.in                |   6 +
 docs/misc/arm/device-tree/booting.txt   |   4 +
 docs/misc/cache-coloring.rst            | 246 +++++++++++++++
 docs/misc/xen-command-line.pandoc       |  70 +++++
 tools/include/libxl.h                   |   5 +
 tools/include/xenctrl.h                 |   9 +
 tools/libs/ctrl/xc_domain.c             |  35 +++
 tools/libs/light/libxl_create.c         |  18 ++
 tools/libs/light/libxl_types.idl        |   1 +
 tools/xl/xl_parse.c                     |  38 ++-
 xen/arch/arm/Kconfig                    |   1 +
 xen/arch/arm/Makefile                   |   1 +
 xen/arch/arm/alternative.c              |  30 +-
 xen/arch/arm/arm32/mmu/mm.c             |  95 +-----
 xen/arch/arm/arm64/mmu/head.S           |  58 +++-
 xen/arch/arm/arm64/mmu/mm.c             |  28 +-
 xen/arch/arm/dom0less-build.c           |  60 +---
 xen/arch/arm/domain_build.c             | 106 ++++++-
 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             | 140 +++++++++
 xen/arch/arm/mmu/p2m.c                  |   4 +-
 xen/arch/arm/mmu/setup.c                | 195 +++++++++++-
 xen/arch/arm/setup.c                    |  13 +-
 xen/common/Kconfig                      |  30 ++
 xen/common/Makefile                     |   1 +
 xen/common/domain.c                     |   3 +
 xen/common/domctl.c                     |  10 +
 xen/common/keyhandler.c                 |   3 +
 xen/common/llc-coloring.c               | 378 ++++++++++++++++++++++++
 xen/common/page_alloc.c                 | 208 ++++++++++++-
 xen/include/public/domctl.h             |   9 +
 xen/include/xen/llc-coloring.h          |  63 ++++
 xen/include/xen/sched.h                 |   5 +
 xen/include/xen/xmalloc.h               |  12 +
 39 files changed, 1746 insertions(+), 174 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.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825705.1240000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gy0-0005l3-2o; Fri, 25 Oct 2024 09:50:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825705.1240000; Fri, 25 Oct 2024 09:50: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 1t4Gxz-0005kq-VI; Fri, 25 Oct 2024 09:50:47 +0000
Received: by outflank-mailman (input) for mailman id 825705;
 Fri, 25 Oct 2024 09:50: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gxy-0005WM-Of
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:46 +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 9b2778aa-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:50:45 +0200 (CEST)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c96936065dso2020466a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:45 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b2778aa-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849845; x=1730454645; 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=0Jyq85Xdby+Cv5/okCw/qX7m591SXUjy9tbXBZdjiRo=;
        b=h1E1wlmy2l1RvvDt0Dpt7cj+qxzXSsAOXuhnvgJx5p6T3cgSkiuwgjwLspnufou49u
         C4wScRbMB7WJaC9mc1QuuYNnUSaUq+EAifziTKr72x6V+7W4Yjz+mR4VLyIu5b4P5owI
         lmsSELch/DudLvykB/85+rZjM7NBMwo6AlyL2NfjFHzalyOU+X3+reHXepFU23qp83vd
         kWCbvs7G/NkGMDGsEgUv7FcPC2DPa7dEtPpctNZInVc83Toco3ewrkgFFSAB5Pn15PUO
         +MVCTLgaOeJ3nv7fuHxvg0+0zQiH0rLo5R9G/8l5vUkFj1+wpScoVbri6iZAgWnJFPyG
         S6iQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849845; x=1730454645;
        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=0Jyq85Xdby+Cv5/okCw/qX7m591SXUjy9tbXBZdjiRo=;
        b=GTjPMexZBPmRGX3GYi2ggVRjVotxu+aKkylVlde0mJTYzEH5J1/eX8HlXyP88dSbTo
         foUfFnyVWjwQGuPhpO9jlZKfJjTMwZ1+urUW4nhtVL03mhWNererooC3Xom0pT2bNPXQ
         CRW7Zzgu/8yfgCvxwNSXK9RjzmToraGvm82bDA/chYlkxfRzZ7XmjDm66VQMBpsV/5Io
         px4QRVIH87FAj/o24vNvA5vPQt3Svxqr/5EfHcRciMLvKr0VrVRg2lfwaqcCgGRCoUwP
         o3C1N1R7cu453hNy3Aa9GeoL9RxiVqakOWu72AKLGpBAYlmtH271OK+B/ffds3fzfb59
         e/Fw==
X-Gm-Message-State: AOJu0YxN91KniYdU266ZlVtBEHGBV8/yhlbL9+abWRQ9fiS5eFxEZxcO
	vOLEYvvHDA28yey0DihrJghnMC8CiC8w6MRQsqy50gbCgZJab7nttJGIpXBqH+uIlWhj/Gendlq
	NVP8=
X-Google-Smtp-Source: AGHT+IG97+eFGWzxNxekxnKaPSI+oZT+PMCB4TOyNQlsco5fcHxXCdfQuJN+UmQal7uv2Q+zojoAzw==
X-Received: by 2002:a05:6402:1e91:b0:5c9:85e8:e981 with SMTP id 4fb4d7f45d1cf-5cb8ac845damr7109942a12.9.1729849844696;
        Fri, 25 Oct 2024 02:50:44 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 01/13] xen/common: add cache coloring common code
Date: Fri, 25 Oct 2024 11:50:02 +0200
Message-ID: <20241025095014.42376-2-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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 option.
MAX_LLC_COLORS_ORDER Kconfig option has a range maximum of 10 (2^10 = 1024)
because that's the number of colors that fit in a 4 KiB page when integers
are 4 bytes long.

LLC colors are a property of the domain, so struct domain 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>
---
v9:
- dropped _MAX_ from CONFIG_MAX_LLC_COLORS_ORDER
v8:
- minor documentation fixes
- "llc-coloring=on" is inferred from "llc-nr-ways" and "llc-size" usage
- turned CONFIG_NR_LLC_COLORS to CONFIG_MAX_LLC_COLORS_ORDER, base-2 exponent
- moved Kconfig options to common/Kconfig
- don't crash if computed max_nr_colors is too large
v7:
- SUPPORT.md changes added to this patch
- extended documentation to better address applicability of cache coloring
- "llc-nr-ways" and "llc-size" params introduced in favor of "llc-way-size"
- moved dump_llc_coloring_info() call in 'm' keyhandler (pagealloc_info())
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
---
 SUPPORT.md                        |   7 ++
 docs/misc/cache-coloring.rst      | 116 ++++++++++++++++++++++++++++++
 docs/misc/xen-command-line.pandoc |  37 ++++++++++
 xen/common/Kconfig                |  22 ++++++
 xen/common/Makefile               |   1 +
 xen/common/keyhandler.c           |   3 +
 xen/common/llc-coloring.c         | 111 ++++++++++++++++++++++++++++
 xen/common/page_alloc.c           |   3 +
 xen/include/xen/llc-coloring.h    |  36 ++++++++++
 xen/include/xen/sched.h           |   5 ++
 10 files changed, 341 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/SUPPORT.md b/SUPPORT.md
index 23dd7e6424..9e8db7566f 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -400,6 +400,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
diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
new file mode 100644
index 0000000000..0fe3830c40
--- /dev/null
+++ b/docs/misc/cache-coloring.rst
@@ -0,0 +1,116 @@
+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.
+Cache coloring realizes per-set cache partitioning in software and is applicable
+to shared LLCs as implemented in Cortex-A53, Cortex-A72 and similar CPUs.
+
+To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
+
+If needed, change the maximum number of colors with
+``CONFIG_LLC_COLORS_ORDER=<n>``.
+
+Runtime configuration is done 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 realizes per-set cache-partitioning
+in software and mitigates this, guaranteeing more predictable performances for
+memory accesses.
+Software-based cache coloring is particularly useful in those situations where
+no hardware mechanisms (e.g., DSU-based way partitioning) are available to
+partition caches. This is the case for e.g., Cortex-A53, A57 and A72 CPUs that
+feature a L2 LLC cache shared among all cores.
+
+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
+                    :...........................         ... .
+                                                :
+          . . ..................................:
+
+How colors are actually defined depends on the function that maps memory to
+cache lines. In case of physically-indexed, physically-tagged caches with linear
+mapping, the set index is found by extracting some contiguous bits from the
+physical address. This allows colors to be defined as shown in figure: they
+appear in memory as subsequent blocks of equal size and repeats themselves after
+``n`` different colors, where ``n`` is the total number of colors.
+
+If some kind of bit shuffling appears in the mapping function, then colors
+assume a different layout in memory. Those kind of caches aren't supported by
+the current implementation.
+
+**Note**: Finding the exact cache mapping function can be a really difficult
+task since it's not always documented in the CPU manual. As said Cortex-A53, A57
+and A72 are known to work with the current implementation.
+
+How to compute the number of colors
+###################################
+
+Given the linear mapping from physical memory to cache lines for granted, the
+number of available colors for a specific platform is computed using three
+parameters:
+
+- the size of the LLC.
+- the number of the LLC ways.
+- the page size used by Xen.
+
+The first two parameters can be found in the processor manual, while the third
+one is the minimum mapping granularity. Dividing the cache size by the number of
+its ways we obtain the size of a way. Dividing this number by the page size,
+the number of total cache colors 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.
+
+Effective colors assignment
+###########################
+
+When assigning colors, if one wants to avoid cache interference between two
+domains, different colors needs to be used for their memory.
+
+Command line parameters
+***********************
+
+Specific documentation is available at `docs/misc/xen-command-line.pandoc`.
+
++----------------------+-------------------------------+
+| **Parameter**        | **Description**               |
++----------------------+-------------------------------+
+| ``llc-coloring``     | Enable coloring at runtime    |
++----------------------+-------------------------------+
+| ``llc-size``         | Set the LLC size              |
++----------------------+-------------------------------+
+| ``llc-nr-ways``      | Set the LLC number of ways    |
++----------------------+-------------------------------+
+
+Auto-probing of LLC specs
+#########################
+
+LLC size and number of ways are probed automatically by default.
+
+LLC specs can be manually set via the above command line parameters. This
+bypasses any auto-probing and it's used to overcome failing situations, such as
+flawed probing logic, or for debugging/testing purposes.
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 293dbc1a95..fbd8302db8 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1708,6 +1708,43 @@ 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 option is
+available only when `CONFIG_LLC_COLORING` is enabled. See the general
+cache coloring documentation for more info.
+
+### llc-nr-ways (arm64)
+> `= <integer>`
+
+> Default: `Obtained from hardware`
+
+Specify the number of ways of the Last Level Cache. This option is available
+only when `CONFIG_LLC_COLORING` is enabled. LLC size and number of ways are used
+to find the number of supported cache colors. 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 possible to emulate platforms with different number of
+supported colors. If set, also "llc-size" must be set, otherwise the default
+will be used. Note that using these two options implies "llc-coloring=on".
+
+### llc-size (arm64)
+> `= <size>`
+
+> Default: `Obtained from hardware`
+
+Specify the size of the Last Level Cache. This option is available only when
+`CONFIG_LLC_COLORING` is enabled. LLC size and number of ways are used to find
+the number of supported cache colors. 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 possible to emulate platforms with different number of supported
+colors. If set, also "llc-nr-ways" must be set, otherwise the default will be
+used. Note that using these two options implies "llc-coloring=on".
+
 ### lock-depth-size
 > `= <integer>`
 
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 90268d9249..244dd035ca 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_PIRQ
 	bool
 
@@ -516,4 +519,23 @@ config TRACEBUFFER
 	  to be collected at run time for debugging or performance analysis.
 	  Memory and execution overhead when not active is minimal.
 
+config LLC_COLORING
+	bool "Last Level Cache (LLC) coloring" if EXPERT
+	depends on HAS_LLC_COLORING
+	depends on !NUMA
+
+config LLC_COLORS_ORDER
+	int "Maximum number of LLC colors (base-2 exponent)"
+	range 1 10
+	default 7
+	depends on LLC_COLORING
+	help
+	  Controls the build-time size of various arrays associated with LLC
+	  coloring. The value is a base-2 exponent. 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 parameters.
+	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
+	  more than what's needed in the general case.
+
 endmenu
diff --git a/xen/common/Makefile b/xen/common/Makefile
index b279b09bfb..cba3b32733 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -25,6 +25,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 6da291b34e..6ea54838d4 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -5,6 +5,7 @@
 #include <asm/regs.h>
 #include <xen/delay.h>
 #include <xen/keyhandler.h>
+#include <xen/llc-coloring.h>
 #include <xen/param.h>
 #include <xen/sections.h>
 #include <xen/shutdown.h>
@@ -304,6 +305,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..29d93875e0
--- /dev/null
+++ b/xen/common/llc-coloring.c
@@ -0,0 +1,111 @@
+/* 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>
+
+#define NR_LLC_COLORS          (1U << CONFIG_LLC_COLORS_ORDER)
+
+static bool __ro_after_init llc_coloring_enabled;
+boolean_param("llc-coloring", llc_coloring_enabled);
+
+static unsigned int __initdata llc_size;
+size_param("llc-size", llc_size);
+static unsigned int __initdata llc_nr_ways;
+integer_param("llc-nr-ways", llc_nr_ways);
+/* Number of colors available in the LLC */
+static unsigned int __ro_after_init max_nr_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 = start;
+
+        printk("%u", start);
+
+        for ( ; i < num_colors - 1 && end + 1 == colors[i + 1]; i++, end++ )
+            ;
+
+        if ( start != end )
+            printk("-%u", end);
+
+        if ( i < num_colors - 1 )
+            printk(", ");
+    }
+    printk(" }\n");
+}
+
+void __init llc_coloring_init(void)
+{
+    unsigned int way_size;
+
+    if ( llc_size && llc_nr_ways )
+    {
+        llc_coloring_enabled = true;
+        way_size = llc_size / llc_nr_ways;
+    }
+    else if ( !llc_coloring_enabled )
+        return;
+    else
+    {
+        way_size = get_llc_way_size();
+        if ( !way_size )
+            panic("LLC probing failed and 'llc-size' or 'llc-nr-ways' missing\n");
+    }
+
+    /*
+     * The maximum number of colors must be a power of 2 in order to correctly
+     * map them to bits of an address.
+     */
+    max_nr_colors = way_size >> PAGE_SHIFT;
+
+    if ( max_nr_colors & (max_nr_colors - 1) )
+        panic("Number of LLC colors (%u) isn't a power of 2\n", max_nr_colors);
+
+    if ( max_nr_colors > NR_LLC_COLORS )
+    {
+        printk(XENLOG_WARNING
+               "Number of LLC colors (%u) too big. Using configured max %u\n",
+               max_nr_colors, NR_LLC_COLORS);
+        max_nr_colors = NR_LLC_COLORS;
+    } else if ( max_nr_colors < 2 )
+        panic("Number of LLC colors %u < 2\n", max_nr_colors);
+
+    arch_llc_coloring_init();
+}
+
+void dump_llc_coloring_info(void)
+{
+    if ( !llc_coloring_enabled )
+        return;
+
+    printk("LLC coloring info:\n");
+    printk("    Number of LLC colors supported: %u\n", max_nr_colors);
+}
+
+void domain_dump_llc_colors(const struct domain *d)
+{
+    if ( !llc_coloring_enabled )
+        return;
+
+    printk("%u LLC colors: ", 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/common/page_alloc.c b/xen/common/page_alloc.c
index 33c8c917d9..7b911b5ed9 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>
@@ -2626,6 +2627,8 @@ static void cf_check pagealloc_info(unsigned char key)
     }
 
     printk("    Dom heap: %lukB free\n", total << (PAGE_SHIFT-10));
+
+    dump_llc_coloring_info();
 }
 
 static __init int cf_check pagealloc_keyhandler_init(void)
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
new file mode 100644
index 0000000000..c60c8050c5
--- /dev/null
+++ b/xen/include/xen/llc-coloring.h
@@ -0,0 +1,36 @@
+/* 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
+void llc_coloring_init(void);
+void dump_llc_coloring_info(void);
+void domain_dump_llc_colors(const struct domain *d);
+#else
+static inline void llc_coloring_init(void) {}
+static inline void dump_llc_coloring_info(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 90666576c2..c0e49cd1e7 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -637,6 +637,11 @@ struct domain
 
     /* Holding CDF_* constant. Internal flags for domain creation. */
     unsigned int cdf;
+
+#ifdef CONFIG_LLC_COLORING
+    unsigned int num_llc_colors;
+    const unsigned int *llc_colors;
+#endif
 };
 
 static inline struct page_list_head *page_to_list(
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825706.1240009 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gy1-00060g-EO; Fri, 25 Oct 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 825706.1240009; Fri, 25 Oct 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 1t4Gy1-00060Z-Au; Fri, 25 Oct 2024 09:50:49 +0000
Received: by outflank-mailman (input) for mailman id 825706;
 Fri, 25 Oct 2024 09:50: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gxz-0005WM-KT
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:47 +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 9bd01d27-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:50:46 +0200 (CEST)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c9428152c0so2082657a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:46 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9bd01d27-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849846; x=1730454646; 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=UndYW8iqmn2W8QpCWU7tkcyqlmLYw2985XBBtaE3i3A=;
        b=Ob8MEUVnhcAsz3OemPs06k42gXVMmPZlODs8BV4FBDn1R7W0P5YBCy2ah/5sRbC/UA
         e27MV98HU9PPIzc1LnVLDLyKjk+3CZBup9CCHUV4Pz4r7cRfVW4Rzw3J6P6nIHfN8CXY
         IEq71ELmpnms2IP8J92pK7vdBiqvYCWHOQV2sXD6kXfAcYYGB977pDHpRV9cNVZsE48v
         EMUtSnZL3UghXXs4qhbi5UjUkq1luApTaGYIQh6WvK58nLqqfH012QqH/lO7OsWV9/Si
         tJ0Bcw23x1P4lfO+5rmaQOfDEL07Y1fs5pOZbt8OZvfq0XzmMLdU+lSfcF3S+rTyqezE
         ZNjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849846; x=1730454646;
        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=UndYW8iqmn2W8QpCWU7tkcyqlmLYw2985XBBtaE3i3A=;
        b=ltP972FwPw8qP8EiZ7v7nBy2ApkP+K6ld7Vz8u12CcyV8ypcoRjpGH1LOawD/469FL
         eUSQXs/5BdXfSjAtQgg13OgyGg79WSKz9Br98jmBWrW4r/f+IAHZsZVANzdZMgMXF0Oj
         Mi4IgoQLGcORN97mF3lI1qyr2DmsdvHQ3esQiBgc2SuDY8XgCqxlVBt9qq6LLfy30tTr
         nUr49YD5UYqejoBPkX76XslIz/W76kLLBtYNBwgz6XKbUVNNiSMklvGjgUiYYzohBIxR
         luaNVUvZcAY+DHHFyHYccDYPvuQdiEYijCcY3cUp8ejt4CE5xuu5+wFU9kXa5KXxSUNg
         SkVw==
X-Gm-Message-State: AOJu0YysZKp2ktRa0UsHEVm0kr+wpJNqr+pnogqSKer1RsNOeLcFLjxQ
	Ltgw0/UwbnMHMnarVJ3dO7Psf+NAojCIP6dXq32saN+sS1a5O2nHRDCFlzuMCPu/oMBs1F720Eb
	7ivI=
X-Google-Smtp-Source: AGHT+IHqi+//BDDbhU1jARlo/s4VHAi1n58wU/rBWtQrj+SuaZJan5FrGecESRyTgFWytR4gl5hcJQ==
X-Received: by 2002:a05:6402:2790:b0:5c8:8e9b:17b3 with SMTP id 4fb4d7f45d1cf-5cba2508433mr3576164a12.31.1729849845908;
        Fri, 25 Oct 2024 02:50:45 -0700 (PDT)
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>,
	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>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 02/13] xen/arm: add initial support for LLC coloring on arm64
Date: Fri, 25 Oct 2024 11:50:03 +0200
Message-ID: <20241025095014.42376-3-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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>
---
v9:
- no changes
v8:
- no changes
v7:
- only minor changes
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         | 14 +++++
 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          | 77 ++++++++++++++++++++++++++++
 xen/arch/arm/setup.c                 |  3 ++
 xen/common/llc-coloring.c            |  2 +-
 xen/include/xen/llc-coloring.h       |  4 ++
 9 files changed, 123 insertions(+), 1 deletion(-)
 create mode 100644 xen/arch/arm/llc-coloring.c

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index 0fe3830c40..b608284e9b 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -111,6 +111,20 @@ Auto-probing of LLC specs
 
 LLC size and number of ways are probed automatically by default.
 
+In the Arm implementation, this is done by inspecting the CLIDR_EL1 register.
+This means that other system caches that aren't visible there are ignored.
+
 LLC specs can be manually set via the above command line parameters. This
 bypasses any auto-probing and it's used to overcome failing situations, such as
 flawed probing logic, or for debugging/testing purposes.
+
+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 323c967361..6fe6024efc 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 e4ad1ce851..ccbfc61f88 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -35,6 +35,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-$(CONFIG_MEM_ACCESS) += 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 f328a044e9..d93a85434e 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>
@@ -890,7 +891,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..ef33ea198c 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, UL)
+#define CCSIDR_NUMSETS_SHIFT            13
+#define CCSIDR_NUMSETS_MASK             _AC(0x3fff, UL)
+#define CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX 32
+#define CCSIDR_NUMSETS_MASK_FEAT_CCIDX  _AC(0xffffff, UL)
+
+/* 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..66c8db2baf
--- /dev/null
+++ b/xen/arch/arm/llc-coloring.c
@@ -0,0 +1,77 @@
+/* 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;
+
+        /* Unified cache (see Arm ARM DDI 0487J.a D19.2.27) */
+        if ( ctype_n == 0b100 )
+            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 71ebaa77ca..84fecaabea 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>
@@ -326,6 +327,8 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
     printk("Command line: %s\n", cmdline);
     cmdline_parse(cmdline);
 
+    llc_coloring_init();
+
     setup_mm();
 
     vm_init();
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index 29d93875e0..3c98c86a56 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -10,7 +10,7 @@
 
 #define NR_LLC_COLORS          (1U << CONFIG_LLC_COLORS_ORDER)
 
-static bool __ro_after_init llc_coloring_enabled;
+bool __ro_after_init llc_coloring_enabled;
 boolean_param("llc-coloring", llc_coloring_enabled);
 
 static unsigned int __initdata llc_size;
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index c60c8050c5..67b27c995b 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -11,10 +11,14 @@
 #include <public/domctl.h>
 
 #ifdef CONFIG_LLC_COLORING
+extern bool llc_coloring_enabled;
+
 void llc_coloring_init(void);
 void dump_llc_coloring_info(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 dump_llc_coloring_info(void) {}
 static inline void domain_dump_llc_colors(const struct domain *d) {}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825707.1240020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gy3-0006Ho-NC; Fri, 25 Oct 2024 09:50:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825707.1240020; Fri, 25 Oct 2024 09: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 1t4Gy3-0006Hd-Jp; Fri, 25 Oct 2024 09:50:51 +0000
Received: by outflank-mailman (input) for mailman id 825707;
 Fri, 25 Oct 2024 09:50: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gy1-0005WM-Ex
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:49 +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 9cfd4f0c-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:50:48 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c9454f3bfaso2075309a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:48 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9cfd4f0c-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849848; x=1730454648; 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=wlFDDa4ZrFLlxW+3Ne0OFz0TY2bWLtIk8s4XXnwOgUE=;
        b=fgFqoLUhH7yKwSUqTsOMknfrgXaogXC/UWRQioCPMlZL/U/8lN4WDW4qBj6ppIQ9zl
         /ThWqtSzrr4/auKETCcwgqnXALHzxYcq495kQbKZMWT0qd6s2cir1oCDq2H1ig9vnOjw
         Baj+mhThfzhf92SstMGCk3awzrvJVFYMyHr/4oitS7IHf3OByWdWc8WO0Defqv+2jJLP
         z7QW98DELl3MyOFYbpFfQdIqVSsyapxWGY9eyRGxu99/wJ+e8/S9M3jY+SE9KIWrqoO0
         9EXIhrPAdJyy5Bh8UMJvQIU7YV9jtHKqLG2NBtfmeT3wQJJk0qoDDnIqg9bVyLQ+bRzx
         0Tvw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849848; x=1730454648;
        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=wlFDDa4ZrFLlxW+3Ne0OFz0TY2bWLtIk8s4XXnwOgUE=;
        b=pEkkyyLTvrJCCrgbmJYSqzGKMkQ3dBrOv5MT0mEa9RFW69q4yhQdAqL45tjY5e5Ar7
         vBXgyd3H+PfGHpRG+xj+KSx+S0BmEulk3GTGKamDh1kbXoFmdhXaUfOQKx+3BEHZQng5
         79UnAmtwwCp4yWywGWXCHkvsFMvSoOenM7tOIquTsK5SCQbxZR60/vnMu6pZfgzm9MCm
         CUohe+Q+ScWB0aA6KxIhJs6lE8XbkYHcaH48cfDHRMB6xykwdyILbzth7tGNOnhB00wa
         hDkHh90jJOLnZQHcN6t8opR3N/5Sm8tnN/CYLTyS8LfNi/O+OrluoYvYP875xy80Jko2
         h5NA==
X-Gm-Message-State: AOJu0YzXBoKOT4Woqv24pchLqFmrrjpwghwDTKnSMOXyp8fSHMD68lMx
	g0Xm6+s5dyBfgtn8WQiJJNxu8OZR7rS3CVNa2RISAzDW2U5SVqwkRd9z8OZhdkIO0DhX0l+JjxY
	v9aY=
X-Google-Smtp-Source: AGHT+IGxAYmK0QJKqvmeb5tU723EYBX93t201MQkqBzPZDKjqdVKEpylh1KM7X9tWhPVW5XHS5R85w==
X-Received: by 2002:a05:6402:3906:b0:5c9:813a:b1b3 with SMTP id 4fb4d7f45d1cf-5cb8b2a94f7mr8445936a12.35.1729849847920;
        Fri, 25 Oct 2024 02:50:47 -0700 (PDT)
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 v9 03/13] xen/arm: permit non direct-mapped Dom0 construction
Date: Fri, 25 Oct 2024 11:50:04 +0200
Message-ID: <20241025095014.42376-4-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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.

Take the opportunity to adapt the implementation of allocate_memory() so
that it uses the host layout when called on the hwdom, via
find_unallocated_memory().

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v9:
- no changes
v8:
- patch adapted to new changes to allocate_memory()
v7:
- allocate_memory() now uses the host layout when called on the hwdom
v6:
- new patch
---
 xen/arch/arm/dom0less-build.c           | 44 ------------
 xen/arch/arm/domain_build.c             | 96 ++++++++++++++++++++++++-
 xen/arch/arm/include/asm/domain_build.h |  1 +
 3 files changed, 94 insertions(+), 47 deletions(-)

diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index d93a85434e..67b1503647 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -49,50 +49,6 @@ bool __init is_dom0less_mode(void)
     return ( !dom0found && domUfound );
 }
 
-static void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
-{
-    struct membanks *mem = kernel_info_get_mem(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);
-
-    mem->nr_banks = 0;
-    bank_size = MIN(GUEST_RAM0_SIZE, kinfo->unassigned_mem);
-    if ( !allocate_bank_memory(kinfo, gaddr_to_gfn(GUEST_RAM0_BASE),
-                               bank_size) )
-        goto fail;
-
-    bank_size = MIN(GUEST_RAM1_SIZE, kinfo->unassigned_mem);
-    if ( !allocate_bank_memory(kinfo, gaddr_to_gfn(GUEST_RAM1_BASE),
-                               bank_size) )
-        goto fail;
-
-    if ( kinfo->unassigned_mem )
-        goto fail;
-
-    for( i = 0; i < mem->nr_banks; i++ )
-    {
-        printk(XENLOG_INFO "%pd BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB)\n",
-               d,
-               i,
-               mem->bank[i].start,
-               mem->bank[i].start + mem->bank[i].size,
-               /* Don't want format this as PRIpaddr (16 digit hex) */
-               (unsigned long)(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 2c30792de8..71bdc2b89c 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -456,6 +456,7 @@ bool __init allocate_domheap_memory(struct domain *d, paddr_t tot_size,
 
     return true;
 }
+#endif
 
 static bool __init guest_map_pages(struct domain *d, struct page_info *pg,
                                    unsigned int order, void *extra)
@@ -508,7 +509,6 @@ bool __init allocate_bank_memory(struct kernel_info *kinfo, gfn_t sgfn,
 
     return true;
 }
-#endif
 
 /*
  * When PCI passthrough is available we want to keep the
@@ -1003,6 +1003,93 @@ out:
     return res;
 }
 
+void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
+{
+    struct membanks *mem = kernel_info_get_mem(kinfo);
+    unsigned int i, nr_banks = 2;
+    paddr_t bank_start, bank_size;
+    struct membanks *hwdom_ext_regions = NULL;
+
+    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);
+
+    mem->nr_banks = 0;
+    /*
+     * Use host memory layout for hwdom. Only case for this is when LLC coloring
+     * is enabled.
+     */
+    if ( is_hardware_domain(d) )
+    {
+        ASSERT(llc_coloring_enabled);
+
+        hwdom_ext_regions = xzalloc_flex_struct(struct membanks, bank,
+                                                NR_MEM_BANKS);
+        if ( !hwdom_ext_regions )
+            goto fail;
+        hwdom_ext_regions->max_banks = NR_MEM_BANKS;
+
+        if ( find_unallocated_memory(kinfo, hwdom_ext_regions) )
+            goto fail;
+
+        nr_banks = hwdom_ext_regions->nr_banks;
+    }
+
+    for ( i = 0; kinfo->unassigned_mem > 0 && nr_banks > 0; i++, nr_banks-- )
+    {
+        if ( is_hardware_domain(d) )
+        {
+            bank_start = hwdom_ext_regions->bank[i].start;
+            bank_size = hwdom_ext_regions->bank[i].size;
+
+            if ( bank_size < min_t(paddr_t, kinfo->unassigned_mem, MB(128)) )
+                continue;
+        }
+        else
+        {
+            if ( i == 0 )
+            {
+                bank_start = GUEST_RAM0_BASE;
+                bank_size = GUEST_RAM0_SIZE;
+            }
+            else if ( i == 1 )
+            {
+                bank_start = GUEST_RAM1_BASE;
+                bank_size = GUEST_RAM1_SIZE;
+            }
+            else
+                goto fail;
+        }
+
+        bank_size = MIN(bank_size, kinfo->unassigned_mem);
+        if ( !allocate_bank_memory(kinfo, gaddr_to_gfn(bank_start), bank_size) )
+            goto fail;
+    }
+
+    if ( kinfo->unassigned_mem )
+        goto fail;
+
+    for( i = 0; i < mem->nr_banks; i++ )
+    {
+        printk(XENLOG_INFO "%pd BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB)\n",
+               d,
+               i,
+               mem->bank[i].start,
+               mem->bank[i].start + mem->bank[i].size,
+               /* Don't want format this as PRIpaddr (16 digit hex) */
+               (unsigned long)(mem->bank[i].size >> 20));
+    }
+
+    xfree(hwdom_ext_regions);
+    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);
+}
+
 static int __init handle_pci_range(const struct dt_device_node *dev,
                                    uint64_t addr, uint64_t len, void *data)
 {
@@ -1223,7 +1310,7 @@ int __init make_hypervisor_node(struct domain *d,
 
         ext_regions->max_banks = NR_MEM_BANKS;
 
-        if ( is_domain_direct_mapped(d) )
+        if ( domain_use_host_layout(d) )
         {
             if ( !is_iommu_enabled(d) )
                 res = find_unallocated_memory(kinfo, ext_regions);
@@ -2152,7 +2239,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 e712afbc7f..5d77af2e8b 100644
--- a/xen/arch/arm/include/asm/domain_build.h
+++ b/xen/arch/arm/include/asm/domain_build.h
@@ -11,6 +11,7 @@ bool allocate_domheap_memory(struct domain *d, paddr_t tot_size,
                              alloc_domheap_mem_cb cb, void *extra);
 bool allocate_bank_memory(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.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825708.1240030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gy5-0006ah-Vu; Fri, 25 Oct 2024 09:50:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825708.1240030; Fri, 25 Oct 2024 09:50: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 1t4Gy5-0006aU-Sb; Fri, 25 Oct 2024 09:50:53 +0000
Received: by outflank-mailman (input) for mailman id 825708;
 Fri, 25 Oct 2024 09:50: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gy5-0006YL-1m
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:53 +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 9e28dcd7-92b6-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:50:50 +0200 (CEST)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c9428152c0so2082726a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:50 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e28dcd7-92b6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849850; x=1730454650; 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=UyA/ZuJvaOJFoZeIKYOus0QAol5WmNmc0X1awq7lIS8=;
        b=f3hwz61GNXHYpeBNM+XVqhxu3eLF7yWD2ohyiYic4dPjpPx0+TCvI70G4ua++g4Rbu
         bn9UL6AUWps1Sw65GIhK33hRyBaZ3FA+GbDYdFtufKGlJZhvxgoHh7OfuYAUfvNaRNu2
         uMMZgD2NbtmWsgG9/wGlwj6YrdmU1u6StRYJm9S/l0UogDTvMRpM1feSurIwLEATM2y4
         OE1042E+Uo8SYCbJSRuZzZVVO5Jhl1dLNWEJdahlY40sOWiXrcvGi9EsVaiAAB9Zl42Q
         2ZH9SLNKJq45sWx6ibfmql2Lk3ft0UqpTwXudePRY32vjWNUY8Cl32oAfukwrr3uZ0rv
         E9hQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849850; x=1730454650;
        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=UyA/ZuJvaOJFoZeIKYOus0QAol5WmNmc0X1awq7lIS8=;
        b=xCfHz4jKY4f9dOYrU6jyX/+eWYVVbuOwMPtNU5JQgH3qG8fecdKQgK3/JNg6LrSDAq
         ZRs3oZxFABZI38TrPkuTfT9Lm3fjCVbamwXdDA1m/foNmM6SAVz1sI9GcTlxH9CK2sLD
         R6z/QFDkqRPNFZzU7ugDFcbCyQuxXWgRJTmjgHtOftfvHAvUdd4IvzuB60wy9w/xqnKO
         rfAxblYLTbzVm4pPPUAvHQl1AF8j9NmIOmRGtLBa2Hylf+Aks3yoK8wryZPGNV9VtFGa
         awIJ5nLTdht6ZBccwJgyiKQXxOtmX3zN/EU95XiSEFOL0ClaPUllH5RtdgFDDpcsSGTW
         iNKg==
X-Gm-Message-State: AOJu0YyJxbyiBvSA3rFtj/7vNn7hJaYKPEg7RcmOLUAgRwTO8qPkIhs3
	MyFGJzBivxgOOVx3j47ebqijec3HagrwfGFZRZgRMl2bIwlQHrqyi4XkhcB7sEidvSTathinRAt
	bPPk=
X-Google-Smtp-Source: AGHT+IGqR3a3QXX9MTAk32ZydfxkeSnAtCXUGA/TocU89J5ZaHCCHnlCtR24uCc6UNfO9nMObutc3w==
X-Received: by 2002:a05:6402:2792:b0:5c9:893e:30d2 with SMTP id 4fb4d7f45d1cf-5cba244dce8mr3671251a12.8.1729849849887;
        Fri, 25 Oct 2024 02:50:49 -0700 (PDT)
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>,
	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>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 04/13] xen/arm: add Dom0 cache coloring support
Date: Fri, 25 Oct 2024 11:50:05 +0200
Message-ID: <20241025095014.42376-5-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
v9:
- moved domain_llc_coloring_free() in next patch cause it's never used for dom0
v8:
- added bound check on dom0_num_colors
- default colors array set just once
v7:
- parse_color_config() doesn't accept leading/trailing commas anymore
- removed alloc_colors() helper
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/llc-coloring.c         | 119 +++++++++++++++++++++++++++++-
 xen/include/xen/llc-coloring.h    |   1 +
 5 files changed, 166 insertions(+), 2 deletions(-)

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index b608284e9b..c5fb33996c 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -105,6 +105,35 @@ Specific documentation is available at `docs/misc/xen-command-line.pandoc`.
 +----------------------+-------------------------------+
 | ``llc-nr-ways``      | Set the LLC number of ways    |
 +----------------------+-------------------------------+
+| ``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]                         |
++-------------------+-----------------------------+
 
 Auto-probing of LLC specs
 #########################
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index fbd8302db8..18973df075 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 option 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 71bdc2b89c..d9500e47d4 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>
@@ -2286,6 +2287,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 */
@@ -2313,10 +2315,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/llc-coloring.c b/xen/common/llc-coloring.c
index 3c98c86a56..35c6c36280 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -19,6 +19,66 @@ static unsigned int __initdata llc_nr_ways;
 integer_param("llc-nr-ways", llc_nr_ways);
 /* Number of colors available in the LLC */
 static unsigned int __ro_after_init max_nr_colors;
+/* Default coloring configuration */
+static unsigned int __ro_after_init default_colors[NR_LLC_COLORS];
+
+static unsigned int __initdata dom0_colors[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 __init parse_color_config(const char *buf, unsigned int *colors,
+                                     unsigned int max_num_colors,
+                                     unsigned int *num_colors)
+{
+    const char *s = buf;
+
+    *num_colors = 0;
+
+    while ( *s != '\0' )
+    {
+        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)) >= max_num_colors )
+            return -EINVAL;
+
+        /* Colors are range checked in check_colors() */
+        for ( color = start; color <= end; color++ )
+            colors[(*num_colors)++] = color;
+
+        if ( *s == ',' )
+            s++;
+        else if ( *s != '\0' )
+            break;
+    }
+
+    return *s ? -EINVAL : 0;
+}
+
+static int __init parse_dom0_colors(const char *s)
+{
+    return parse_color_config(s, dom0_colors, ARRAY_SIZE(dom0_colors),
+                              &dom0_num_colors);
+}
+custom_param("dom0-llc-colors", parse_dom0_colors);
 
 static void print_colors(const unsigned int *colors, unsigned int num_colors)
 {
@@ -43,9 +103,26 @@ static void print_colors(const unsigned int *colors, unsigned int num_colors)
     printk(" }\n");
 }
 
+static bool __init check_colors(const unsigned int *colors,
+                                unsigned int num_colors)
+{
+    unsigned int i;
+
+    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)
 {
-    unsigned int way_size;
+    unsigned int way_size, i;
 
     if ( llc_size && llc_nr_ways )
     {
@@ -79,6 +156,9 @@ void __init llc_coloring_init(void)
     } else if ( max_nr_colors < 2 )
         panic("Number of LLC colors %u < 2\n", max_nr_colors);
 
+    for ( i = 0; i < max_nr_colors; i++ )
+        default_colors[i] = i;
+
     arch_llc_coloring_init();
 }
 
@@ -100,6 +180,43 @@ void domain_dump_llc_colors(const struct domain *d)
     print_colors(d->llc_colors, d->num_llc_colors);
 }
 
+static void __init domain_set_default_colors(struct domain *d)
+{
+    printk(XENLOG_WARNING
+           "LLC color config not found for %pd, using all colors\n", d);
+
+    d->llc_colors = default_colors;
+    d->num_llc_colors = max_nr_colors;
+}
+
+int __init dom0_set_llc_colors(struct domain *d)
+{
+    typeof(*dom0_colors) *colors;
+
+    if ( !dom0_num_colors )
+    {
+        domain_set_default_colors(d);
+        return 0;
+    }
+
+    if ( dom0_num_colors > max_nr_colors ||
+         !check_colors(dom0_colors, dom0_num_colors) )
+    {
+        printk(XENLOG_ERR "%pd:  bad LLC color config\n", d);
+        return -EINVAL;
+    }
+
+    colors = xmalloc_array(typeof(*dom0_colors), dom0_num_colors);
+    if ( !colors )
+        return -ENOMEM;
+
+    memcpy(colors, dom0_colors, sizeof(*colors) * dom0_num_colors);
+    d->llc_colors = colors;
+    d->num_llc_colors = dom0_num_colors;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index 67b27c995b..baf6d4add1 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -26,6 +26,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);
 
 #endif /* __COLORING_H__ */
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825709.1240040 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gy7-0006rs-CT; Fri, 25 Oct 2024 09:50:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825709.1240040; Fri, 25 Oct 2024 09:50: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 1t4Gy7-0006rh-9T; Fri, 25 Oct 2024 09:50:55 +0000
Received: by outflank-mailman (input) for mailman id 825709;
 Fri, 25 Oct 2024 09:50: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gy5-0006YL-Ra
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:53 +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 9ee8349c-92b6-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:50:52 +0200 (CEST)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5c96df52c52so2405614a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:52 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9ee8349c-92b6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849851; x=1730454651; 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=uTdYd5K2CTjFCeSluro77ToeU6d5yg4QCK/iJOgalpA=;
        b=Llm0q+RDYM++Lw99V+I4ejs/nfJPA/9f8AP0t3rzH0ZC426uIw69Yw5YR8oSgoZKWb
         uMDjvP+xjNAHDHcP0HdFJSoPgKtuVFz9oGDhVl6uGPprlrRTDRf3nudbItNL6OUXphxh
         8BD4R+u6qlA0H4Tj54UnYDBPItFhmMYMVg0Z2zXF64aZ2bQEOH3gPaDKs0zMFXZ0cpaH
         7SOKuOevuhkBaD0hEaNQNKSFWptKEZ+VvQ3Smc0FNgY7rshEwNWzpz+3mASH7tSsriyD
         w7fp6m3dHuVwEE9jSzGAUnuxt9wBxR+IJeof+lHKnHYkWwT8CoieVHqFpgP38fGpp9nK
         41MA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849851; x=1730454651;
        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=uTdYd5K2CTjFCeSluro77ToeU6d5yg4QCK/iJOgalpA=;
        b=cUBihtziQvcaISiI0VLgDC/WfiEaLT+aqN4rcdmtv2K9oq3BLdeFsYXHASLL34qsXj
         ywrXblYs/UWTvIjI5xpeJcwxL4B9s6JWlLNE5GVX/tKyqTYxQt5r243jjBu/BOYaINUo
         KC9TJ4Yf/N0wC6YBU41/fuFIVeCd6OgOzJ1a8WIaCdF7anTb84fHMZJG8mG/eRpoog0Z
         /qoSugE1FNjYn5UHQjZTvC4BVAMExQS4EerNtizGUp2OlA6s7I7MCvOL7fLzB2lXbvNE
         7irXVskLjpR761zaI1LSGhO/4wMcO99dTuElOHPKzomoTu27iJxfsfXfuJQH0UXBm7no
         3tIA==
X-Gm-Message-State: AOJu0Yx1T0Jh6IO5EMa9MTPCCoKkFfZ+6x5Kt91EZm8wP6ykcc5Imp2C
	XFNUPiZIiympX/uCHj5vTGCFYoUfaWcgkJbSgZnOGMlZnhiFT7oDwF34S5Oth2rHB5OZ+xai8R2
	ZGXw=
X-Google-Smtp-Source: AGHT+IEmCBs2qBB8c5FwlYPtMWhhk9p/JN0qNrprgQm1RFKjE9KbnkVFpYdlviBCfm8v+pWRtROdjw==
X-Received: by 2002:a05:6402:3888:b0:5c9:36c4:cead with SMTP id 4fb4d7f45d1cf-5cb8b26f218mr5771064a12.34.1729849851098;
        Fri, 25 Oct 2024 02:50:51 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 05/13] xen: extend domctl interface for cache coloring
Date: Fri, 25 Oct 2024 11:50:06 +0200
Message-ID: <20241025095014.42376-6-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a new domctl hypercall to allow the user to set LLC coloring
configurations. Colors can be set only once, just after domain creation,
since recoloring isn't supported.

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>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
v9:
- minor printk message changes
- moved domain_llc_coloring_free() in this patch
v8:
- fixed memory leak on error path of domain_set_llc_colors()
v7:
- -EOPNOTSUPP returned in case of hypercall called without llc_coloring_enabled
- domain_set_llc_colors_domctl() renamed to domain_set_llc_colors()
- added padding and input bound checks to domain_set_llc_colors()
- removed alloc_colors() helper usage from domain_set_llc_colors()
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/domain.c            |  3 ++
 xen/common/domctl.c            | 10 +++++++
 xen/common/llc-coloring.c      | 55 ++++++++++++++++++++++++++++++++--
 xen/include/public/domctl.h    |  9 ++++++
 xen/include/xen/llc-coloring.h |  4 +++
 5 files changed, 78 insertions(+), 3 deletions(-)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 92263a4fbd..842a23751a 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -34,6 +34,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>
@@ -1276,6 +1277,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/domctl.c b/xen/common/domctl.c
index ea16b75910..6387dddbcd 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>
@@ -866,6 +867,15 @@ 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 ( op->u.set_llc_colors.pad )
+            ret = -EINVAL;
+        else if ( llc_coloring_enabled )
+            ret = domain_set_llc_colors(d, &op->u.set_llc_colors);
+        else
+            ret = -EOPNOTSUPP;
+        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 35c6c36280..2ab0bb10a3 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>
@@ -103,8 +104,7 @@ static void print_colors(const unsigned int *colors, unsigned int num_colors)
     printk(" }\n");
 }
 
-static bool __init check_colors(const unsigned int *colors,
-                                unsigned int num_colors)
+static bool check_colors(const unsigned int *colors, unsigned int num_colors)
 {
     unsigned int i;
 
@@ -180,7 +180,7 @@ void domain_dump_llc_colors(const struct domain *d)
     print_colors(d->llc_colors, d->num_llc_colors);
 }
 
-static void __init domain_set_default_colors(struct domain *d)
+static void domain_set_default_colors(struct domain *d)
 {
     printk(XENLOG_WARNING
            "LLC color config not found for %pd, using all colors\n", d);
@@ -217,6 +217,55 @@ int __init dom0_set_llc_colors(struct domain *d)
     return 0;
 }
 
+int domain_set_llc_colors(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 )
+    {
+        domain_set_default_colors(d);
+        return 0;
+    }
+
+    if ( config->num_llc_colors > max_nr_colors )
+        return -EINVAL;
+
+    colors = xmalloc_array(unsigned int, config->num_llc_colors);
+    if ( !colors )
+        return -ENOMEM;
+
+    if ( copy_from_guest(colors, config->llc_colors, config->num_llc_colors) )
+    {
+        xfree(colors);
+        return -EFAULT;
+    }
+
+    if ( !check_colors(colors, config->num_llc_colors) )
+    {
+        printk(XENLOG_ERR "%pd: bad LLC color config\n", d);
+        xfree(colors);
+        return -EINVAL;
+    }
+
+    d->llc_colors = colors;
+    d->num_llc_colors = config->num_llc_colors;
+
+    return 0;
+}
+
+void domain_llc_coloring_free(struct domain *d)
+{
+    if ( !llc_coloring_enabled || d->llc_colors == default_colors )
+        return;
+
+    /* free pointer-to-const using __va(__pa()) */
+    xfree(__va(__pa(d->llc_colors)));
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 353f831e40..e2d392d1e5 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -1236,6 +1236,13 @@ struct xen_domctl_dt_overlay {
 };
 #endif
 
+struct xen_domctl_set_llc_colors {
+    /* IN LLC coloring parameters */
+    uint32_t num_llc_colors;
+    uint32_t pad;
+    XEN_GUEST_HANDLE_64(uint32) llc_colors;
+};
+
 struct xen_domctl {
     uint32_t cmd;
 #define XEN_DOMCTL_createdomain                   1
@@ -1325,6 +1332,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_set_paging_mempool_size       86
 #define XEN_DOMCTL_dt_overlay                    87
 #define XEN_DOMCTL_gsi_permission                88
+#define XEN_DOMCTL_set_llc_colors                89
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1391,6 +1399,7 @@ struct xen_domctl {
 #if defined(__arm__) || defined(__aarch64__)
         struct xen_domctl_dt_overlay        dt_overlay;
 #endif
+        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 baf6d4add1..b3801fca00 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -16,17 +16,21 @@ extern bool llc_coloring_enabled;
 void llc_coloring_init(void);
 void dump_llc_coloring_info(void);
 void domain_dump_llc_colors(const struct domain *d);
+void domain_llc_coloring_free(struct domain *d);
 #else
 #define llc_coloring_enabled false
 
 static inline void llc_coloring_init(void) {}
 static inline void dump_llc_coloring_info(void) {}
 static inline void domain_dump_llc_colors(const struct domain *d) {}
+static inline void domain_llc_coloring_free(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);
+int domain_set_llc_colors(struct domain *d,
+                          const struct xen_domctl_set_llc_colors *config);
 
 #endif /* __COLORING_H__ */
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825710.1240042 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gy7-0006vt-Ni; Fri, 25 Oct 2024 09:50:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825710.1240042; Fri, 25 Oct 2024 09:50: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 1t4Gy7-0006vh-KB; Fri, 25 Oct 2024 09:50:55 +0000
Received: by outflank-mailman (input) for mailman id 825710;
 Fri, 25 Oct 2024 09: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gy6-0005WM-Ep
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:54 +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 9fe98e11-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:50:53 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5cb15b84544so2303205a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:53 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9fe98e11-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849853; x=1730454653; 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=1hChW1WByTE0S7v65A3IF1Wpf4beUOHE+Ux/hoP7V1E=;
        b=SPoyuTjfUt4YLpJGK4auCqGEIwcO6lxMSn81w3Md0CLLwGBJoKi/qYn7X/34jV051P
         YbIi4v/XUsqHmvLaoJcrmSHpq7F1LUenD33Y0PQ187kNAJfzJiZQpOdevC62KWu9Ls3d
         LzfUQWW7+MswU2y+xdwfduTKPvPFvcaC4H8Sg6S3DCBddjGoZgYfyWpWGwNtzWgYfsMq
         pAdSiCLTYPsF60ZG+rs6hCO/SORUNYCuwaDXyLRxct35qEUO+3byMX4XkjLnmP23Tifa
         bHbqgUz8H5J4Me5PlTnQvJo8/o8MXyBExGLCr83dGxU6mQ+Cr/Hd+Xw9peUjYKQOgPWX
         Hcig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849853; x=1730454653;
        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=1hChW1WByTE0S7v65A3IF1Wpf4beUOHE+Ux/hoP7V1E=;
        b=vSvyxMzt2XgOMxWzUbNLwH+szprnXRcfJkUDiWtMq9CB4o8IeK4mpiQwkggIq75mqY
         YrDUdhFstS1BpMfPKcTj0dTIzBUbP+Zo501QoI4BHQ66CTDKIN2yeV7dkgljvEcCgvlX
         OOVao6/lU10UXvRVA9xWYCU5YXugnHy1lQqgUjEUIpNBu3GAO2q4K3g/rmoKUxUeRWpH
         0/i/MI8sgBfcSksupJD6AFzxCNT7btNKERtnstls2u8sjiQbL7yw3vsToPuIwB5xL6HS
         /6+YbRm9pfBTJ9P/M+G/SIZfg5+k0bARTObb1DaS1PWTQmICFnN1bUkYSDyMQhmK+3Pi
         WBuw==
X-Gm-Message-State: AOJu0YwcORhL1QRvBwHjkuOOYftRdYbRBk7kvMqwYrtJ4iDAd9b6E56N
	QEXj/FyopQbxu0+KIJnQTGQ01n2dIW/pZxD99YefKcmy4+jtcAuof2QGC/ZXFvX2UjVnqEXjd2o
	hnEQ=
X-Google-Smtp-Source: AGHT+IF3pLLLkAll6z5J5J/UKEtgW/qIsQikS8BrYgvTms937aRmbhvhbk5vJxG5SCXXl7sMUyo6Vg==
X-Received: by 2002:a05:6402:510c:b0:5c9:7d96:772d with SMTP id 4fb4d7f45d1cf-5cb8b24657cmr7603270a12.22.1729849852997;
        Fri, 25 Oct 2024 02:50:52 -0700 (PDT)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 06/13] tools: add support for cache coloring configuration
Date: Fri, 25 Oct 2024 11:50:07 +0200
Message-ID: <20241025095014.42376-7-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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>
---
v9:
- turned warning into error in case of coloring not enabled
v8:
- warn the user in case of coloring not supported at hypervisor level
v7:
- removed unneeded NULL check before xc_hypercall_buffer_free() in
  xc_domain_set_llc_colors()
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         |  6 +++++
 tools/include/libxl.h            |  5 +++++
 tools/include/xenctrl.h          |  9 ++++++++
 tools/libs/ctrl/xc_domain.c      | 35 +++++++++++++++++++++++++++++
 tools/libs/light/libxl_create.c  | 18 +++++++++++++++
 tools/libs/light/libxl_types.idl |  1 +
 tools/xl/xl_parse.c              | 38 +++++++++++++++++++++++++++++++-
 7 files changed, 111 insertions(+), 1 deletion(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index ac3f88fd57..8e1422104e 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -3074,6 +3074,12 @@ raised.
 
 =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").
+
 =item B<nr_spis="NR_SPIS">
 
 An optional integer parameter specifying the number of SPIs (Shared
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 8d32428ea9..f8fe4afd7d 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -1379,6 +1379,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 29617585c5..aa2b4b04f3 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -2667,6 +2667,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.
+ * 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 e3538ec0ba..4ed339e6e4 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -2195,6 +2195,41 @@ 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");
+            ret = -ENOMEM;
+            goto out;
+        }
+        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);
+
+out:
+    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 edeadd57ef..e03599ea99 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -747,6 +747,24 @@ 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) {
+                if (errno == EOPNOTSUPP) {
+                    if (b_info->num_llc_colors > 0) {
+                        LOGED(ERROR, local_domid,
+                            "LLC coloring not enabled in the hypervisor");
+                        rc = ERROR_FAIL;
+                        goto out;
+                    }
+                } else {
+                    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 4e65e6fda5..bd4b8721ff 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -616,6 +616,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 e3a4800f6e..3d85be7dd4 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1296,7 +1296,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;
@@ -1304,6 +1304,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;
@@ -1447,6 +1448,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.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:50:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:50:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825711.1240058 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Gy9-0007KM-57; Fri, 25 Oct 2024 09:50:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825711.1240058; Fri, 25 Oct 2024 09:50: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 1t4Gy8-0007JT-W0; Fri, 25 Oct 2024 09:50:56 +0000
Received: by outflank-mailman (input) for mailman id 825711;
 Fri, 25 Oct 2024 09:50: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4Gy7-0005WM-Lp
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:55 +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 a0af0c54-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:50:55 +0200 (CEST)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5cacb76e924so2386283a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:55 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a0af0c54-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849854; x=1730454654; 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=q3YSYZZGzDA1A2+rRg1kiZQBh+Nb+gR1I0/CKDqg1TA=;
        b=U8gMB2jyEPEw74/Vt/K+ObRgYvZhzA1jxjG7bcf/QvwJ7p98fZPrHx23iyxZfrT1SO
         ImlV1NOE9X5xRErz5SgTcM299XCAUMTp08jENvl+koWN3Rx5/pgOoQ87opxO7JxekGZa
         GM0qFzosGAdljQWCXHloOgcBpoGMeAlPkmjas4cVXfydK02ncvNTaSSWQijwa+EPncwR
         LPvHoFKrKSipg3sjEnlwvRyAW3PU7agvQAA0xUxfuXjJtvOjVQus560LKHdnn0cEJYGP
         NeD7bZpNSZS2S3/vfayQgzYJ5M8ioLArxydsKECKsfMQvHSMHRPiScFr35/ozgAMfDlb
         aVYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849854; x=1730454654;
        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=q3YSYZZGzDA1A2+rRg1kiZQBh+Nb+gR1I0/CKDqg1TA=;
        b=fSJYDOJCAV4pcZx7wEBDXnp1l4Cbih3NEGLIPe6qykRlRF7KtPHBd3oM29LehWAXN+
         sPnl0NCTMKMBXwQBlZEGGbJVYraMazskKKpcIlugkSaJzfthP6pG5Gh3Vb2muOeCwdis
         xVYS4tCF1ApXgLYMerJGjpXH9TdnYJBcBp3vozTETCFnOcl8RcMxNbrf9rFhWWsu1XCf
         ESCnmGBKn9YVtZgZkCiinikgbofPbYAnRWz8kmvVf0MkYt5c5DW5C3xpeWYvYCHJCeKW
         4q6EYSbj3uS8tYhMGkU1WPpAszP34MxjCOYUGLZL5NDmmPeZjfp9eLGN0lRagRyHbUrq
         ebyw==
X-Gm-Message-State: AOJu0YwaJ7JNrJ3XKdLNcgh0OxU7IDcCdkz4/ZMF270aOSaKbqhqA8cF
	BIPgyWxEW4I+ttAuIr+puVJgF9tNTw0+duBBbcMGNCTxjUdeumejkj4FFUvPSBmi4zlc42AuSZV
	+Oro=
X-Google-Smtp-Source: AGHT+IFAsBC48HB8S0chYmKLi82qaDD2YqIVbVwlPylhFyTCBL/R6Ga8rwtQEytxqdB5SptWR5aPbg==
X-Received: by 2002:a05:6402:2106:b0:5c3:cd88:a0a with SMTP id 4fb4d7f45d1cf-5cb8b1ac807mr6980556a12.18.1729849854078;
        Fri, 25 Oct 2024 02:50:54 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 07/13] xen/arm: add support for cache coloring configuration via device-tree
Date: Fri, 25 Oct 2024 11:50:08 +0200
Message-ID: <20241025095014.42376-8-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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>
---
v9:
- use best-effort allocation in domain_set_llc_colors_from_str()
v8:
- fixed memory leak on error path of domain_set_llc_colors_from_str()
- realloc colors array after parsing from string to reduce memory usage
v7:
- removed alloc_colors() helper usage from domain_set_llc_colors_from_str()
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         | 10 ++++++
 xen/common/llc-coloring.c             | 41 +++++++++++++++++++++++
 xen/include/xen/llc-coloring.h        |  1 +
 xen/include/xen/xmalloc.h             | 12 +++++++
 6 files changed, 116 insertions(+)

diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt
index 3a04f5c57f..9085645433 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 c5fb33996c..c14b6ee2f4 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -12,6 +12,7 @@ If needed, change the maximum number of colors with
 ``CONFIG_LLC_COLORS_ORDER=<n>``.
 
 Runtime configuration is done via `Command line parameters`_.
+For DomUs follow `DomUs configuration`_.
 
 Background
 **********
@@ -147,6 +148,53 @@ LLC specs can be manually set via the above command line parameters. This
 bypasses any auto-probing and it's used to overcome failing situations, such as
 flawed probing logic, or for debugging/testing purposes.
 
+DomUs configuration
+*******************
+
+DomUs colors can be set either in the ``xl`` configuration file (documentation
+at `docs/man/xl.cfg.pod.5.in`) or 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 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 67b1503647..49d1f14d65 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -817,6 +817,7 @@ void __init create_domUs(void)
     bool iommu = false;
     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)
@@ -965,6 +966,10 @@ 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' 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
@@ -975,6 +980,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 2ab0bb10a3..03d6c7054c 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -4,6 +4,7 @@
  *
  * Copyright (C) 2022 Xilinx Inc.
  */
+#include "xen/xmalloc.h"
 #include <xen/guest_access.h>
 #include <xen/keyhandler.h>
 #include <xen/llc-coloring.h>
@@ -266,6 +267,46 @@ void domain_llc_coloring_free(struct domain *d)
     xfree(__va(__pa(d->llc_colors)));
 }
 
+int __init domain_set_llc_colors_from_str(struct domain *d, const char *str)
+{
+    int err;
+    unsigned int *colors, num_colors;
+
+    if ( !str )
+    {
+        domain_set_default_colors(d);
+        return 0;
+    }
+
+    colors = xmalloc_array(unsigned int, max_nr_colors);
+    if ( !colors )
+        return -ENOMEM;
+
+    err = parse_color_config(str, colors, max_nr_colors, &num_colors);
+    if ( err )
+    {
+        printk(XENLOG_ERR "Error parsing LLC color configuration");
+        xfree(colors);
+        return err;
+    }
+
+    if ( !check_colors(colors, num_colors) )
+    {
+        printk(XENLOG_ERR "%pd: bad LLC color config\n", d);
+        xfree(colors);
+        return -EINVAL;
+    }
+
+    /* Adjust the size cause it was initially set to max_nr_colors */
+    d->llc_colors = xrealloc_array(colors, num_colors);
+    if ( !d->llc_colors )
+        d->llc_colors = colors;
+
+    d->num_llc_colors = num_colors;
+
+    return 0;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index b3801fca00..49ebd1e712 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -31,6 +31,7 @@ void arch_llc_coloring_init(void);
 int dom0_set_llc_colors(struct domain *d);
 int domain_set_llc_colors(struct domain *d,
                           const struct xen_domctl_set_llc_colors *config);
+int domain_set_llc_colors_from_str(struct domain *d, const char *str);
 
 #endif /* __COLORING_H__ */
 
diff --git a/xen/include/xen/xmalloc.h b/xen/include/xen/xmalloc.h
index b903fa2e26..f0412fb4e0 100644
--- a/xen/include/xen/xmalloc.h
+++ b/xen/include/xen/xmalloc.h
@@ -37,6 +37,9 @@
     ((_type *)_xmalloc_array(sizeof(_type), __alignof__(_type), _num))
 #define xzalloc_array(_type, _num) \
     ((_type *)_xzalloc_array(sizeof(_type), __alignof__(_type), _num))
+#define xrealloc_array(_ptr, _num)                                  \
+    ((typeof(_ptr))_xrealloc_array(_ptr, sizeof(typeof(*(_ptr))),   \
+                                   __alignof__(typeof(*(_ptr))), _num))
 
 /* Allocate space for a structure with a flexible array of typed objects. */
 #define xzalloc_flex_struct(type, field, nr) \
@@ -98,6 +101,15 @@ static inline void *_xzalloc_array(
     return _xzalloc(size * num, align);
 }
 
+static inline void *_xrealloc_array(
+    void *ptr, unsigned long size, unsigned long align, unsigned long num)
+{
+    /* Check for overflow. */
+    if ( size && num > UINT_MAX / size )
+        return NULL;
+    return _xrealloc(ptr, size * num, align);
+}
+
 /*
  * Pooled allocator interface.
  */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:51:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:51:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825712.1240070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GyC-0007qO-PK; Fri, 25 Oct 2024 09:51:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825712.1240070; Fri, 25 Oct 2024 09: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 1t4GyC-0007q3-L4; Fri, 25 Oct 2024 09:51:00 +0000
Received: by outflank-mailman (input) for mailman id 825712;
 Fri, 25 Oct 2024 09: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4GyB-0006YL-Eb
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:50:59 +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 a25e8879-92b6-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:50:57 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c9709c9b0cso2486869a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:57 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a25e8879-92b6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849857; x=1730454657; 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=OlOKRb79JOR8Iox1AMMS2Z+x3IHOPW+Lic0/pCOh5GY=;
        b=atH/LTHlQY7V30MGxu5y7uVPsh0mQ2Oj9nEgLqXqDMwTVzysU4+pDDkVZOmlf0hyP+
         eFmgb0Lyssi23qPgsu/sA4fjQBQHlOeGWwzO2E8eHbmn49mUNRKYy09noYstUqeCYz1w
         Gjo7kNt/PMnPu0uit9ono6rVfVxGyFA1IjWuwRK/EbJgr7WVlM8AI8aO/z9Ap5ogDdND
         7ncS+XqOyf6B2/++As7p7wl6ZwEBNfTLm3otSEY9juSIbWR82Uzjsbpol4nlM8RKqK4U
         88E6+saf4p4J+Nz5bZenI8kkq91XQYNvESyw5E+PEZQhBngQ1mOqDDflN2W48jggBUUe
         v/RA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849857; x=1730454657;
        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=OlOKRb79JOR8Iox1AMMS2Z+x3IHOPW+Lic0/pCOh5GY=;
        b=NcJZ82KzK28uPsOc+HKD7bzFfliows0npp7ftFmI2uMNQCaKRg9can1yFWl2QcFOU3
         42Y6nZSIXi8XASCq77j0Abc9jitOzEYduwybgul9LyTiSGiwtHhQzSwcqz+U1MqSlkgQ
         cjrM5v5NuJFopVJvq5JBRcbPxiWUiMv9wX4jnKeXFLAZItl5QZrJSK9tZJMabx8OXjLL
         Gk1cSZeXkqgjTGPjNufp+GR8RJ8jbXjnPX7xcYxlAav0nPTCbyFk5lLqsiYqdiV3LJGJ
         XJ6zvjPW/gOxru6qnBPjJFSB5Wmxg+dx0hRcKXnmje59qM0A0jDWSzc3LlozOJY9+aW9
         uVwg==
X-Gm-Message-State: AOJu0YyNq+usEdasAmP2RcTBBTKg8biKvWO1sSkHl6I37LVDg3Qgss7A
	WkQL/j7d8inoSkH1qrfysR6WPHyCqFFaaFH1Z7vERoJ++GcQuyZBW5e8WLRqpvR9nVLSkKxjd+x
	1q+s=
X-Google-Smtp-Source: AGHT+IEjqy/lb5M+WgV6jHA4Q8noP62nrv1a7Mfyl0L/WVNWjwfPd7CThK7DV+GuDPNtkHq6pm4Kpg==
X-Received: by 2002:a05:6402:34cc:b0:5cb:6c39:2306 with SMTP id 4fb4d7f45d1cf-5cb8ac3494cmr6440132a12.4.1729849856976;
        Fri, 25 Oct 2024 02:50:56 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v9 08/13] xen/page_alloc: introduce preserved page flags macro
Date: Fri, 25 Oct 2024 11:50:09 +0200
Message-ID: <20241025095014.42376-9-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

PGC_static and PGC_extra 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.

To make preserved flags even more meaningful, they are kept also when
switching state in mark_page_free().
Enforce the removal of PGC_extra before freeing new pages as this is
considered an error and can cause ASSERT violations.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v9:
- add PGC_broken to PGC_preserved
- clear PGC_extra in alloc_domheap_pages() only if MEMF_no_refcount is set
v8:
- fixed PGC_extra ASSERT fail in alloc_domheap_pages() by removing PGC_extra
  before freeing
v7:
- PGC_preserved used also in mark_page_free()
v6:
- preserved_flags renamed to PGC_preserved
- PGC_preserved is used only in assign_pages()
v5:
- new patch
---
 xen/common/page_alloc.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 7b911b5ed9..34cd473150 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -160,6 +160,7 @@
 #endif
 
 #define PGC_no_buddy_merge PGC_static
+#define PGC_preserved (PGC_extra | PGC_static | PGC_broken)
 
 #ifndef PGT_TYPE_INFO_INITIALIZER
 #define PGT_TYPE_INFO_INITIALIZER 0
@@ -1427,12 +1428,11 @@ static bool mark_page_free(struct page_info *pg, mfn_t mfn)
     {
     case PGC_state_inuse:
         BUG_ON(pg->count_info & PGC_broken);
-        pg->count_info = PGC_state_free;
+        pg->count_info = PGC_state_free | (pg->count_info & PGC_preserved);
         break;
 
     case PGC_state_offlining:
-        pg->count_info = (pg->count_info & PGC_broken) |
-                         PGC_state_offlined;
+        pg->count_info = (pg->count_info & PGC_preserved) | PGC_state_offlined;
         pg_offlined = true;
         break;
 
@@ -2366,7 +2366,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++;
         }
@@ -2426,7 +2426,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]));
     }
@@ -2485,6 +2485,14 @@ struct page_info *alloc_domheap_pages(
         }
         if ( assign_page(pg, order, d, memflags) )
         {
+            if ( memflags & MEMF_no_refcount )
+            {
+                unsigned long i;
+
+                for ( i = 0; i < (1UL << order); i++ )
+                    pg[i].count_info &= ~PGC_extra;
+            }
+
             free_heap_pages(pg, order, memflags & MEMF_no_scrub);
             return NULL;
         }
@@ -2539,6 +2547,7 @@ void free_domheap_pages(struct page_info *pg, unsigned int order)
                 {
                     ASSERT(d->extra_pages);
                     d->extra_pages--;
+                    pg[i].count_info &= ~PGC_extra;
                 }
             }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:51:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:51:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825713.1240075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GyD-0007vW-BN; Fri, 25 Oct 2024 09:51:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825713.1240075; Fri, 25 Oct 2024 09:51: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 1t4GyD-0007ty-2k; Fri, 25 Oct 2024 09:51:01 +0000
Received: by outflank-mailman (input) for mailman id 825713;
 Fri, 25 Oct 2024 09: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4GyC-0005WM-At
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:51:00 +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 a32f541d-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:50:59 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c984352742so2074817a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:50:59 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a32f541d-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849858; x=1730454658; 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=H90ZwO8KNs9XQ2sTliCCG60vkX5rBbDqbnCK0ko/U38=;
        b=C4dlYXkfLHH90NlmJrRkwkLmR5pSKQW5iEchrV1HM6xRmWIw718EElC69PpBA0bc8P
         wvBrJG3iLZVT2j1sHSx2RujcmkXp9m4e0Cb9ZvJVTP23ejqN7e4ynJRB5ggw0uYY3lCa
         BeBXrVVp9MDWcgiW+sK2MQPqHNxbdoP5TiAYoXtl56/qZOYSVXRUbr1FfgNGD3Q96pOh
         bSCSWEOAxqjLRhTzEpwERJO7ndQWu8180HmV0exdSvD+MDvFpQli+fQp4YpkBaKpDJzV
         zAjVIAAR3bmGmgk19ZKgEG0Txfaid3BuNTURtdTSYEpm4aCSfyYRB39F8UfVOJkZgwGF
         yrcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849858; x=1730454658;
        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=H90ZwO8KNs9XQ2sTliCCG60vkX5rBbDqbnCK0ko/U38=;
        b=sQOyCkRHnlybFgds8A77yhX0ADWm63UUSl+c/Oqa0axn22XdqqIpRSbxkJYalGijCQ
         uQJArthkQxxqBimezPpSCWD9l863UvQ3IoIfUNi8Pb2kIdvDhHISTWW8Y6Y69UTJIcRe
         wVGtBnOod+kYyWCTEDsSHJJUIXyyliGUQMmY20D/WICIp9iC4laIpXmEbNVZLCs0kD5S
         +XVpgU80pRLVtbnDUVU9zz0yYVTNsSIusxmDJRt2vTQpvjYuh83CrBG+pX5cPYYOS8fn
         os6fpzJj9BQ6R4ji7omssztcaTtBUbHwJYFh7YU9AUMCqd+S00aBX+ZpTgPTWOHd1Ksc
         B2aQ==
X-Gm-Message-State: AOJu0YydUp1paLMwuUJLQw1Dus074h1JLlhmHLhoqUAQwtJwvBaNo3C+
	Kp871q8UAfdUm2L592wcktx7XkbCt99InncQfqojYQuXwPJgDsubGf2hUMI9CYUlUlMZTnrWKpY
	VQYw=
X-Google-Smtp-Source: AGHT+IFfuxp5mAz6/PYzAQa0fhL9kbKgA/iDx9y5XEzKv4LEtklEDtQYsn4djW7XgqEtIUd2AOesQA==
X-Received: by 2002:a05:6402:40ca:b0:5cb:acfa:621d with SMTP id 4fb4d7f45d1cf-5cbacfa695dmr2010836a12.3.1729849858187;
        Fri, 25 Oct 2024 02:50:58 -0700 (PDT)
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>,
	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>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 09/13] xen: add cache coloring allocator for domains
Date: Fri, 25 Oct 2024 11:50:10 +0200
Message-ID: <20241025095014.42376-10-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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 extracts the page from the list
with the maximum number of free pages among 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>
---
v9:
- added ASSERT(order == 0) when freeing a colored page
- moved buddy_alloc_size initialization logic in Kconfig
v8:
- requests that uses MEMF_* flags that can't be served are now going to fail
- free_color_heap_page() is called directly from free_heap_pages()
v7:
- requests to alloc_color_heap_page() now fail if MEMF_bits is used
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/arm/include/asm/mm.h     |   5 +
 xen/common/Kconfig                |   8 ++
 xen/common/llc-coloring.c         |  13 +++
 xen/common/page_alloc.c           | 188 +++++++++++++++++++++++++++++-
 xen/include/xen/llc-coloring.h    |   4 +
 7 files changed, 265 insertions(+), 4 deletions(-)

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index c14b6ee2f4..25f015c2de 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -11,6 +11,9 @@ To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
 If needed, change the maximum number of colors with
 ``CONFIG_LLC_COLORS_ORDER=<n>``.
 
+If needed, change the buddy allocator reserved size with
+``CONFIG_BUDDY_ALLOCATOR_SIZE=<n>``.
+
 Runtime configuration is done via `Command line parameters`_.
 For DomUs follow `DomUs configuration`_.
 
@@ -108,6 +111,8 @@ 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
 ***********************
@@ -195,6 +200,17 @@ the ``llc-colors`` option. For example:
 **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
 ****************************
 
@@ -205,3 +221,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
+mapping granularity to achieve the maximum number of colors (cache partitions)
+possible. This granularity 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 18973df075..21a7c48ad1 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 available 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/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 5abd4b0d1c..c1a5ac7bee 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/Kconfig b/xen/common/Kconfig
index 244dd035ca..a6159f458d 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -538,4 +538,12 @@ config LLC_COLORS_ORDER
 	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
 	  more than what's needed in the general case.
 
+config BUDDY_ALLOCATOR_SIZE
+	int "Buddy allocator reserved memory size (MiB)" if LLC_COLORING
+	default "0" if !LLC_COLORING
+	default "64"
+	help
+	  Amount of memory reserved for the buddy allocator to serve Xen heap,
+	  working alongside the colored one.
+
 endmenu
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index 03d6c7054c..c7f5378bbb 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -27,6 +27,9 @@ static unsigned int __ro_after_init default_colors[NR_LLC_COLORS];
 static unsigned int __initdata dom0_colors[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.
@@ -307,6 +310,16 @@ int __init domain_set_llc_colors_from_str(struct domain *d, const char *str)
     return 0;
 }
 
+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 34cd473150..032b0e9adc 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -159,8 +159,12 @@
 #define PGC_static 0
 #endif
 
-#define PGC_no_buddy_merge PGC_static
-#define PGC_preserved (PGC_extra | PGC_static | PGC_broken)
+#ifndef PGC_colored
+#define PGC_colored 0
+#endif
+
+#define PGC_no_buddy_merge (PGC_static | PGC_colored)
+#define PGC_preserved (PGC_extra | PGC_static | PGC_broken | PGC_colored)
 
 #ifndef PGT_TYPE_INFO_INITIALIZER
 #define PGT_TYPE_INFO_INITIALIZER 0
@@ -1457,6 +1461,8 @@ static bool mark_page_free(struct page_info *pg, mfn_t mfn)
     return pg_offlined;
 }
 
+static void free_color_heap_page(struct page_info *pg, bool need_scrub);
+
 /* Free 2^@order set of pages. */
 static void free_heap_pages(
     struct page_info *pg, unsigned int order, bool need_scrub)
@@ -1481,6 +1487,15 @@ static void free_heap_pages(
             pg[i].count_info |= PGC_need_scrub;
             poison_one_page(&pg[i]);
         }
+
+        if ( pg->count_info & PGC_colored )
+        {
+            ASSERT(order == 0);
+
+            free_color_heap_page(pg, need_scrub);
+            spin_unlock(&heap_lock);
+            return;
+        }
     }
 
     avail[node][zone] += 1 << order;
@@ -1945,6 +1960,155 @@ 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;
+#define color_heap(color) (&_color_heap[color])
+
+static unsigned long *__ro_after_init free_colored_pages;
+
+static unsigned long __initdata buddy_alloc_size =
+    MB(CONFIG_BUDDY_ALLOCATOR_SIZE);
+size_param("buddy-alloc-size", buddy_alloc_size);
+
+/* Memory required for buddy allocator to work with colored one */
+#ifdef CONFIG_LLC_COLORING
+#define domain_num_llc_colors(d) (d)->num_llc_colors
+#define domain_llc_color(d, i)   (d)->llc_colors[i]
+#else
+#define domain_num_llc_colors(d) 0
+#define domain_llc_color(d, i)   0
+#endif
+
+static void free_color_heap_page(struct page_info *pg, bool need_scrub)
+{
+    unsigned int color;
+
+    color = page_to_llc_color(pg);
+    free_colored_pages[color]++;
+    /*
+     * Head insertion allows re-using cache-hot pages in configurations without
+     * sharing of colors.
+     */
+    page_list_add(pg, color_heap(color));
+}
+
+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 need_scrub;
+
+    if ( memflags & ~(MEMF_no_refcount | MEMF_no_owner | MEMF_no_tlbflush |
+                      MEMF_no_icache_flush | MEMF_no_scrub) )
+        return NULL;
+
+    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;
+    }
+
+    need_scrub = pg->count_info & PGC_need_scrub;
+    pg->count_info = PGC_state_inuse | (pg->count_info & PGC_preserved);
+    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 ( !(memflags & MEMF_no_scrub) )
+    {
+        if ( need_scrub )
+            scrub_one_page(pg);
+        else
+            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 >= PAGE_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));
+    }
+
+    for ( i = 0; i < nr_pages; i++ )
+    {
+        pg[i].count_info = PGC_colored;
+        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;
@@ -1964,7 +2128,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;
@@ -2460,7 +2630,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);
@@ -2686,6 +2863,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 49ebd1e712..7f8218bfb2 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -33,6 +33,10 @@ int domain_set_llc_colors(struct domain *d,
                           const struct xen_domctl_set_llc_colors *config);
 int domain_set_llc_colors_from_str(struct domain *d, const char *str);
 
+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.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:51:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:51:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825714.1240090 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GyF-00005w-Nm; Fri, 25 Oct 2024 09:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825714.1240090; Fri, 25 Oct 2024 09: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 1t4GyF-00005W-IC; Fri, 25 Oct 2024 09:51:03 +0000
Received: by outflank-mailman (input) for mailman id 825714;
 Fri, 25 Oct 2024 09: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4GyD-0005WM-Fw
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:51:01 +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 a4454743-92b6-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 11:51:01 +0200 (CEST)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c96b2a10e1so2717593a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:51:01 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.50.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:50:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a4454743-92b6-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849860; x=1730454660; 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=+ToXNTbIaUJzIwxTCo6A+h1xsfFwkQlv3v3omXflCTA=;
        b=tS1aVwmeCiGEp9AydUAN4Fkeqwo88Fm7NBz3EGHao149kaSLUJbDzM6abxhEB1C8oo
         vn13ZmbKfB9tiUTR9UsFc8BCoWQq36UXyMNd6Oc3o/QTATeFDCGyMm9P9SyLxeUYs4w5
         dPM/qkFXMwL5gNBFev/8/CdgjTBwckY0Nrn3cDPFFy98Fkt8HX2uy94IgyjHldgax/nq
         i7MnI4W04gyjiy9GRhgCJmkcWK6knlLy4qGKNdEONDcSrl2IUaPM6WZIDpPKjgGwWCC4
         joqj5xEXHebvXizC4udIpn/nPLgOv0SxOnplub6EseWPlAQQ00Tzxe/Cws+kDVSgQnPt
         mR1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849860; x=1730454660;
        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=+ToXNTbIaUJzIwxTCo6A+h1xsfFwkQlv3v3omXflCTA=;
        b=TWEkcc8P9JmfJ+eUJxXf7hGlYJ6oY9NFSY69Z0QJNqajUJoIY9zu11z83XGVP6X6uC
         94LpUIwjUQQKwJF/kCy4PZLM8efNySfduATkY1+ywkGfPuPbYyCs/FN+IKv72cZRHOFZ
         eHXCuH+otMtVCEr7ZrC9dApRC6noJTxwlrbN1OWFsHXUQ6J+epIVTKFkeR76mzp7GL5z
         +X/cPqZdPXY5Gdow3i5ZLuPp1Tq5MHaqYj9RqvxmV6dWdjkRKxaRUC6R9LkQcqdtjnDk
         hMKwWOnp0LjMEFugu6Tc0IWTlb3nmH+br8LFe3LaQD0rxwwX+TWOrpQC4kxCAabb5LXw
         y8aQ==
X-Gm-Message-State: AOJu0YwNNwMD7Wt8p0Q/+zjSIm40K7ypS+w+RkcsQ0RwjgL9NHWIXFpd
	n6evZCMZtNPbXcQfSgpmPM83JDNuIkkaIVPN/bqlWGxbx58h+1j51wS98WBhNknm07qZTqFpOL0
	ko3E=
X-Google-Smtp-Source: AGHT+IF28WcoBdGSRbtpHgskkYDgOiXbKRkaAukRB+pzaXLBSwK3hQ0jkJjBMRw4wbspjvXdMd3cVQ==
X-Received: by 2002:a05:6402:2743:b0:5c9:863d:844a with SMTP id 4fb4d7f45d1cf-5cba245b13amr3632189a12.12.1729849860285;
        Fri, 25 Oct 2024 02:51:00 -0700 (PDT)
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 v9 10/13] xen/arm: use domain memory to allocate p2m page tables
Date: Fri, 25 Oct 2024 11:50:11 +0200
Message-ID: <20241025095014.42376-11-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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>
---
v9:
- no changes
v8:
- no changes
v7:
- no changes
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 bfa312cc8a..28df6e5d03 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.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:51:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:51:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825716.1240101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GyI-0000XQ-0U; Fri, 25 Oct 2024 09:51:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825716.1240101; Fri, 25 Oct 2024 09: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 1t4GyH-0000VD-Bg; Fri, 25 Oct 2024 09:51:05 +0000
Received: by outflank-mailman (input) for mailman id 825716;
 Fri, 25 Oct 2024 09: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4GyF-0006YL-Qb
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:51:03 +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 a4eaf4e4-92b6-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:51:02 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5cbb0900c86so666255a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:51:02 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.51.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:51:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a4eaf4e4-92b6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849861; x=1730454661; 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=QFXHxRV0utQpqNK90yX6wgQYF4czrji82Ch4kfIut88=;
        b=1WgujvS+QY5zbx/rlD22qvGmcXIotsXnZfp/23ldmZXTIIdNgsXtNLCHvhhp9qeXi6
         dH76F2kKP3s27Bi+brn09D9c1pWv7bTSakdnAiwBSQwu8zrFdTnw3ZBSfh7Y9d/YK6kA
         jyPEOEx7+GL64qSpuTe+lDzUKLbVDugZKdBMU32DrT/VRWvyM8tsPfCLOuhraDP7585J
         LIYtMtV0WaV8grJ/eA0VWVEA4jXgENBoNXPm+GsUUyGADumd1eLAjgVwvMETF4r2vwH1
         9c09X3SKlqjae/YljEyEhkaF96cN69EEwWMif3BGIlgs79XhmhuIoNv6DIxEgD4Hc09S
         l5vg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849861; x=1730454661;
        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=QFXHxRV0utQpqNK90yX6wgQYF4czrji82Ch4kfIut88=;
        b=aEyEkq/AoJY2o/CqxQ5IrBUCvmWbgg1vVCnRfQm//nLzE3PwhOcSlGS8vfq3vdwBDr
         5hJShfzBl7YfEiJzfD1cjUIjeeFDEEKm5EIoVG+Qj5ZJZbPvdHJ6u4e2MiPVKMHm69Dz
         a9yVLrxCCe2aLTGAgm+fNjb2ks4TW3xmiZg7WyXZvzUeleZaRG7nzmLOSGOs9PhJTdrV
         NembayN6FYUuvyRcfzjA8nfhxZmcwoyiYUdDcTcLA4yVzMoDG0A6ZgsIMsxtcx93kgQd
         U4WDnVptj5MCNWAoqri4FvNlTPXd/dUra8hPMmMbeqPo3dutQ9SEyfHDUiz+PCFmbKoX
         cuvg==
X-Gm-Message-State: AOJu0YxTPzsYpXrhfk0NPE71V/3hGN9yPCx5wMcKXh6y63YW6cJV0SCU
	P13HpIgfunmadfAg/KlKqEprGtbsTRQWtij6/u5vWhz+KwBFEq3iQ7awYqxQ3Cz9chZBWxpeedq
	S0E0=
X-Google-Smtp-Source: AGHT+IEf5Dy9LuV7O8Nwt4q7bRLq+NfUTkCA2fnl7SCGvjA/9wPdpBM8RxZi80aIV1XDcgOFBdtavA==
X-Received: by 2002:a05:6402:3513:b0:5c5:b90a:5b78 with SMTP id 4fb4d7f45d1cf-5cba242810dmr4539027a12.5.1729849861367;
        Fri, 25 Oct 2024 02:51:01 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Marco Solieri <marco.solieri@minervasys.tech>,
	Carlo Nonato <carlo.nonato@minervasys.tech>
Subject: [PATCH v9 11/13] xen/arm: add Xen cache colors command line parameter
Date: Fri, 25 Oct 2024 11:50:12 +0200
Message-ID: <20241025095014.42376-12-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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 are dumped together with other coloring info.

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

Since this is the most common target for Arm cache coloring, the default
amount of Xen colors is set to one.

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.

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>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
v9:
- no changes
v8:
- added bound check on xen_colors in llc_coloring_init()
v7:
- removed XEN_DEFAULT_COLOR
- XEN_DEFAULT_NUM_COLORS is now used in a for loop to set xen default colors
---
 docs/misc/cache-coloring.rst      |  2 ++
 docs/misc/xen-command-line.pandoc | 10 ++++++++++
 xen/common/llc-coloring.c         | 29 +++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+)

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index 25f015c2de..f967df7360 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -113,6 +113,8 @@ Specific documentation is available at `docs/misc/xen-command-line.pandoc`.
 +----------------------+-------------------------------+
 | ``buddy-alloc-size`` | Buddy allocator reserved size |
 +----------------------+-------------------------------+
+| ``xen-llc-colors``   | Xen color configuration       |
++----------------------+-------------------------------+
 
 Colors selection format
 ***********************
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 21a7c48ad1..02ed2e0aea 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -2923,6 +2923,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 c7f5378bbb..3b4b1a8a4f 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -11,6 +11,7 @@
 #include <xen/param.h>
 
 #define NR_LLC_COLORS          (1U << CONFIG_LLC_COLORS_ORDER)
+#define XEN_DEFAULT_NUM_COLORS 1
 
 bool __ro_after_init llc_coloring_enabled;
 boolean_param("llc-coloring", llc_coloring_enabled);
@@ -27,6 +28,9 @@ static unsigned int __ro_after_init default_colors[NR_LLC_COLORS];
 static unsigned int __initdata dom0_colors[NR_LLC_COLORS];
 static unsigned int __initdata dom0_num_colors;
 
+static unsigned int __ro_after_init xen_colors[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)
 
@@ -85,6 +89,13 @@ 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, ARRAY_SIZE(xen_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;
@@ -163,6 +174,22 @@ void __init llc_coloring_init(void)
     for ( i = 0; i < max_nr_colors; i++ )
         default_colors[i] = i;
 
+    if ( !xen_num_colors )
+    {
+        unsigned int i;
+
+        xen_num_colors = MIN(XEN_DEFAULT_NUM_COLORS, max_nr_colors);
+
+        printk(XENLOG_WARNING
+               "Xen LLC color config not found. Using first %u colors\n",
+               xen_num_colors);
+        for ( i = 0; i < xen_num_colors; i++ )
+            xen_colors[i] = i;
+    }
+    else if ( xen_num_colors > max_nr_colors ||
+              !check_colors(xen_colors, xen_num_colors) )
+        panic("Bad LLC color config for Xen\n");
+
     arch_llc_coloring_init();
 }
 
@@ -173,6 +200,8 @@ void dump_llc_coloring_info(void)
 
     printk("LLC coloring info:\n");
     printk("    Number of LLC colors supported: %u\n", max_nr_colors);
+    printk("    Xen LLC colors (%u): ", xen_num_colors);
+    print_colors(xen_colors, xen_num_colors);
 }
 
 void domain_dump_llc_colors(const struct domain *d)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:51:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:51:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825720.1240110 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GyK-000132-59; Fri, 25 Oct 2024 09:51:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825720.1240110; Fri, 25 Oct 2024 09: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 1t4GyJ-00012W-Uj; Fri, 25 Oct 2024 09:51:07 +0000
Received: by outflank-mailman (input) for mailman id 825720;
 Fri, 25 Oct 2024 09: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4GyI-0006YL-5v
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:51:06 +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 a6435bd3-92b6-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:51:04 +0200 (CEST)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c96936065dso2020749a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:51:04 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.51.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:51:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a6435bd3-92b6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849863; x=1730454663; 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=toVf4KyxnPp4I0KVV2BzelFhOJn1fnz1pf3z2+XUHUg=;
        b=w6M+a5XImTiGIwFz2XvO1ypyB7bCo3wlK69zHVSarc4SPrfBy3Stt2tlwkDMVBElpF
         nZlES3p+TxW0ZpZq44oXrHAXbU4DpnXZwF2RPyNYMa4b7Hz8DWmf0wMF3cF8MYyCIAsf
         ahHyTGy0P+4b0UdwzdiXSjXar2MkJOBRmOJ0Lbsdx/FjM+NM07hr0F5Bc9CU9WeySLkG
         ByBMSKnLGlL7wGb1R/elJ5oq91Wf0PacQvY9FjFNyEWaGfsGTg14F4V/Gvj1mh4PFNbK
         +gTZ6OpKfgpDa+XUSCieiP7HViHNtgI8rubmqZJF6wvqSYF9OxQpG0eAfIza3kZq/lVP
         NbNg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849863; x=1730454663;
        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=toVf4KyxnPp4I0KVV2BzelFhOJn1fnz1pf3z2+XUHUg=;
        b=rr0pGNLuNup/pT1BR04YFsQUBBHgkg4/KISLLB/X3QDbX0a0dIDN5JFPHCmso0L+8D
         T4AypT29n4sVm2b843D1o6gRjWBT5vcoiyWadAubu7onBoLL9Q8NK+siO1pfElx1hxa+
         0k+MGhM2k8hZUXbAyWIMr+vhPBulgFEs1FbUgW/KfklbdtrK/+g+b4zRo6QjmYHG+X7f
         fWKhrrYDBJRVFAJNi/vFCAjA/tqoZLnLBvM8vhLwIoehHr1Mc4I6j3BpVzhTfQgA/63X
         pA8XQgFCa11Wzmqv1w5IeBapzc2C3IUwkwCHA7UGH1EJ8829cUKSqBhDEB+JlNx2t3tk
         tYsw==
X-Gm-Message-State: AOJu0YzrAkISF79KiyMBbCim+H0ESAuoEWGErSgJYLUXqDXqQL8lJg28
	Fs5vc6SFQSvMac6SD+z5Zah0QsuRiW5tKa3v7hAX6SxUCrmZqhdOB6kOBfA0a11z4hD0L+GVMzA
	PbZU=
X-Google-Smtp-Source: AGHT+IEv/1ADfL9tXdzn9+EzoF/Kf/RBlXUk3bkSOjvUqhG6oc2zB/euhgD8ddJwwIQGP0lvjsLV/w==
X-Received: by 2002:a17:907:7251:b0:a9a:26a5:d508 with SMTP id a640c23a62f3a-a9abf84b05bmr759593266b.9.1729849863396;
        Fri, 25 Oct 2024 02:51:03 -0700 (PDT)
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 v9 12/13] xen/arm: make consider_modules() available for xen relocation
Date: Fri, 25 Oct 2024 11:50:13 +0200
Message-ID: <20241025095014.42376-13-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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 to mmu/setup.c and make it
non-static so that it can be used outside.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v9:
- no changes
v8:
- patch adapted to new changes to consider_modules()
v7:
- moved consider_modules() to arm/mmu/setup.c
v6:
- new patch
---
 xen/arch/arm/arm32/mmu/mm.c      | 95 +------------------------------
 xen/arch/arm/include/asm/setup.h |  3 +
 xen/arch/arm/mmu/setup.c         | 97 ++++++++++++++++++++++++++++++++
 3 files changed, 101 insertions(+), 94 deletions(-)

diff --git a/xen/arch/arm/arm32/mmu/mm.c b/xen/arch/arm/arm32/mmu/mm.c
index 063611412b..c5fcd19291 100644
--- a/xen/arch/arm/arm32/mmu/mm.c
+++ b/xen/arch/arm/arm32/mmu/mm.c
@@ -9,6 +9,7 @@
 #include <asm/fixmap.h>
 #include <asm/static-memory.h>
 #include <asm/static-shmem.h>
+#include <asm/setup.h>
 
 static unsigned long opt_xenheap_megabytes __initdata;
 integer_param("xenheap_megabytes", opt_xenheap_megabytes);
@@ -31,100 +32,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 membanks *reserved_mem = bootinfo_get_reserved_mem();
-#ifdef CONFIG_STATIC_SHM
-    const struct membanks *shmem = bootinfo_get_shmem();
-#endif
-    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);
-        }
-    }
-
-    /*
-     * 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 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 < reserved_mem->nr_banks; i++ )
-    {
-        paddr_t r_s = reserved_mem->bank[i - nr].start;
-        paddr_t r_e = r_s + 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);
-        }
-    }
-
-#ifdef CONFIG_STATIC_SHM
-    nr += reserved_mem->nr_banks;
-    for ( ; i - nr < shmem->nr_banks; i++ )
-    {
-        paddr_t r_s, r_e;
-
-        r_s = shmem->bank[i - nr].start;
-
-        /* Shared memory banks can contain INVALID_PADDR as start */
-        if ( INVALID_PADDR == r_s )
-            continue;
-
-        r_e = r_s + shmem->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);
-        }
-    }
-#endif
-
-    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 64c227d171..0c560d141f 100644
--- a/xen/arch/arm/include/asm/setup.h
+++ b/xen/arch/arm/include/asm/setup.h
@@ -89,6 +89,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/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 9664e85ee6..1cf62390e3 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -6,7 +6,10 @@
  */
 
 #include <xen/init.h>
+#include <xen/lib.h>
 #include <xen/libfdt/libfdt.h>
+#include <xen/libfdt/libfdt-xen.h>
+#include <xen/llc-coloring.h>
 #include <xen/sections.h>
 #include <xen/sizes.h>
 #include <xen/vmap.h>
@@ -222,6 +225,100 @@ static void xen_pt_enforce_wnx(void)
     flush_xen_tlb_local();
 }
 
+/*
+ * 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 membanks *reserved_mem = bootinfo_get_reserved_mem();
+#ifdef CONFIG_STATIC_SHM
+    const struct membanks *shmem = bootinfo_get_shmem();
+#endif
+    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);
+        }
+    }
+
+    /*
+     * 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 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 < reserved_mem->nr_banks; i++ )
+    {
+        paddr_t r_s = reserved_mem->bank[i - nr].start;
+        paddr_t r_e = r_s + 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);
+        }
+    }
+
+#ifdef CONFIG_STATIC_SHM
+    nr += reserved_mem->nr_banks;
+    for ( ; i - nr < shmem->nr_banks; i++ )
+    {
+        paddr_t r_s, r_e;
+
+        r_s = shmem->bank[i - nr].start;
+
+        /* Shared memory banks can contain INVALID_PADDR as start */
+        if ( INVALID_PADDR == r_s )
+            continue;
+
+        r_e = r_s + shmem->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);
+        }
+    }
+#endif
+
+    return e;
+}
+
 /*
  * Boot-time pagetable setup.
  * Changes here may need matching changes in head.S
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:51:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:51:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825726.1240119 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4GyM-0001UT-HW; Fri, 25 Oct 2024 09:51:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825726.1240119; Fri, 25 Oct 2024 09: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 1t4GyM-0001TO-AR; Fri, 25 Oct 2024 09:51:10 +0000
Received: by outflank-mailman (input) for mailman id 825726;
 Fri, 25 Oct 2024 09:51: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=r3YV=RV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1t4GyK-0006YL-Kg
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:51:08 +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 a77a2ccf-92b6-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:51:06 +0200 (CEST)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5cb72918bddso2421644a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:51:06 -0700 (PDT)
Received: from carlo-ubuntu.home
 (dynamic-adsl-94-34-131-227.clienti.tiscali.it. [94.34.131.227])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629e17dsm446938a12.34.2024.10.25.02.51.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 25 Oct 2024 02:51:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a77a2ccf-92b6-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1729849866; x=1730454666; 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=WiSL170JfR6Y/eDgJSxNioGpc+dkFG7rOoI+XnYxhkM=;
        b=MMy25DZHUFhcwPVc2+jwJucn7fQKbPyIAuFbGxbhYWVaqTDCXiGvWxTvNpxBFdvnTU
         zvAAQVI0fonZT0/AdQNhwxhzfRWgJHkrMOXB5+vHj59pWSWZqcH48/o7eN6Lop/OzmrA
         KRF6jPNOT8CMBXYnaqWsOP0jY2I1MwNRpD8syEKFb/i6Jlp6v0ct1YaND0GzJk41z/X6
         x6peRN7fgTxgJwnhj8aKufJLW7wkLOMvjou8KB3XB2MWib2wG6DRnOW+2tm+JDBjqEJY
         R5z3spQ3SVLVqTRwqIkjZ/2pmjotz5Fn8SQ4e7GSBfCzTkqz99VoCoFY6wARTX+SFgv6
         eqFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729849866; x=1730454666;
        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=WiSL170JfR6Y/eDgJSxNioGpc+dkFG7rOoI+XnYxhkM=;
        b=N+NiM/2PDa2uJsYTAs8Ul/CVi5h18KjFXW2fu4Cle2+bubl293nXWQmFyjbwY9jj2u
         qFv5kVw2nrE7zboxhj9xIV+sIDtQ7Ipguws0XQh2TcPtbmoLKbfoEocdK2KyQIUefUHi
         mCHhDs9jm+y0TH3vnBUMbwCiKN2WqkUFxn/WwpUBs1FbDjW/+2ZDK0eYMLikKdFJOrg5
         rq6adIL/t3y7hu3OeQE3+tLwPteqFQ+D7TJrBuP5/0S8MoHYAgOCszXh5rXE1NrVyJMi
         l2FnZ6c4aIK2lxuTSt1Btmiwf2CGgwR+6iSjyPvXBD5r5ZZIGHMsRvvqTnwu8VWHQek/
         he6w==
X-Gm-Message-State: AOJu0YzQog44uvDp63ka6oCuGuve/2C7fU8/53JOsgCWoeAAZctLxuOa
	9SgRPhl32UOKWxJV1Elszh6YIV1eX72aQDiAA7ekhgKGpKAN+MgGFZ8Pjvx9nr6TQLIMbOizUoF
	FlHw=
X-Google-Smtp-Source: AGHT+IGcul3nfXDRg8HYBhZ4gdG1shgentisa4n1ytBAya43PDjvcv0ZF6ZI3bZ1ttxYfiCWCOW17Q==
X-Received: by 2002:a05:6402:254d:b0:5c9:4281:4515 with SMTP id 4fb4d7f45d1cf-5cb8acb7b0amr8362175a12.17.1729849865561;
        Fri, 25 Oct 2024 02:51:05 -0700 (PDT)
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>,
	Jan Beulich <jbeulich@suse.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v9 13/13] xen/arm: add cache coloring support for Xen
Date: Fri, 25 Oct 2024 11:50:14 +0200
Message-ID: <20241025095014.42376-14-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
References: <20241025095014.42376-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>
---
v9:
- patch adapted to changes to setup_pagetables()
v8:
- moved xen_colored_map_size() to arm/llc-coloring.c
v7:
- added BUG_ON() checks to arch_llc_coloring_init() and
  create_llc_coloring_mappings()
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         | 58 +++++++++++++++-
 xen/arch/arm/arm64/mmu/mm.c           | 28 ++++++--
 xen/arch/arm/include/asm/mmu/layout.h |  3 +
 xen/arch/arm/llc-coloring.c           | 63 +++++++++++++++++
 xen/arch/arm/mmu/setup.c              | 98 +++++++++++++++++++++++----
 xen/arch/arm/setup.c                  | 10 ++-
 xen/common/llc-coloring.c             | 18 +++++
 xen/include/xen/llc-coloring.h        | 13 ++++
 9 files changed, 300 insertions(+), 21 deletions(-)

diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
index d99b507093..0fcf4e451d 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, mfn;
+
+    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, mfn, i )
+    {
+        xen_colored_mfns[i] = 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 665a51a337..a1fc9a82f1 100644
--- a/xen/arch/arm/arm64/mmu/head.S
+++ b/xen/arch/arm/arm64/mmu/head.S
@@ -428,6 +428,61 @@ FUNC_LOCAL(fail)
         b     1b
 END(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
+
+        /* No need for dsb/isb because they are alredy done in switch_ttbr_id */
+        b switch_ttbr_id
+
 /*
  * Switch TTBR
  *
@@ -453,7 +508,8 @@ FUNC(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 code is relocated in that case.
          */
         ic     iallu
         isb
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index 671eaadbc1..3732d5897e 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-only */
 
 #include <xen/init.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/pfn.h>
 
@@ -138,27 +139,46 @@ void update_boot_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..19c0ec63a5 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 -  24M   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 66c8db2baf..c8b183da84 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,8 +63,70 @@ unsigned int __init get_llc_way_size(void)
     return line_size * num_sets;
 }
 
+/**
+ * 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(paddr_t xen_size)
+{
+    const struct membanks *mem = bootinfo_get_mem();
+    paddr_t min_size, paddr = 0;
+    unsigned 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 < mem->nr_banks; i++ )
+    {
+        const struct membank *bank = &mem->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 > GB(4) )
+                e = GB(4);
+            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;
+}
+
+static paddr_t __init xen_colored_map_size(void)
+{
+    return ROUNDUP((_end - _start) * get_max_nr_llc_colors(), XEN_PADDR_ALIGN);
+}
+
 void __init arch_llc_coloring_init(void)
 {
+    struct bootmodule *xen_bootmodule = boot_module_find_by_kind(BOOTMOD_XEN);
+
+    BUG_ON(!xen_bootmodule);
+
+    xen_bootmodule->size = xen_colored_map_size();
+    xen_bootmodule->start = get_xen_paddr(xen_bootmodule->size);
 }
 
 /*
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 1cf62390e3..bf6334dbd4 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -23,6 +23,9 @@
 #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 */
 
 /*
@@ -72,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);
@@ -141,6 +145,9 @@ static void __init __maybe_unused build_assertions(void)
 
 lpae_t __init pte_of_xenaddr(vaddr_t va)
 {
+    if ( llc_coloring_enabled )
+        va = virt_to_reloc_virt(va);
+
     return mfn_to_xen_entry(virt_to_mfn(va), MT_NORMAL);
 }
 
@@ -319,9 +326,44 @@ paddr_t __init consider_modules(paddr_t s, paddr_t e,
     return e;
 }
 
+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 start_mfn = maddr_to_mfn(xen_bootmodule->start), mfn;
+
+    for_each_xen_colored_mfn ( start_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(void)
 {
@@ -329,6 +371,9 @@ void __init setup_pagetables(void)
     lpae_t pte, *p;
     int i;
 
+    if ( llc_coloring_enabled )
+        create_llc_coloring_mappings();
+
     arch_setup_page_tables();
 
 #ifdef CONFIG_ARM_64
@@ -356,13 +401,7 @@ void __init setup_pagetables(void)
             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;
     }
 
@@ -388,13 +427,48 @@ void __init setup_pagetables(void)
     ttbr = virt_to_maddr(cpu0_pgtable);
 #endif
 
-    switch_ttbr(ttbr);
-
-    xen_pt_enforce_wnx();
-
 #ifdef CONFIG_ARM_32
     per_cpu(xen_pgtable, 0) = cpu0_pgtable;
 #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 TLBs are invalidated
+     * before setting enforcing the WnX permissions.
+     */
+    flush_xen_tlb_local();
+
+    xen_pt_enforce_wnx();
 }
 
 void *__init arch_vmap_virt_end(void)
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 84fecaabea..3b3fb49fbd 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -304,8 +304,6 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
     /* Initialize traps early allow us to get backtrace when an error occurred */
     init_traps();
 
-    setup_pagetables();
-
     smp_clear_cpu_maps();
 
     device_tree_flattened = early_fdt_map(fdt_paddr);
@@ -329,6 +327,14 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
 
     llc_coloring_init();
 
+    /*
+     * Page tables must be setup after LLC coloring initialization because
+     * coloring info are required in order to create colored mappings
+     */
+    setup_pagetables();
+    /* Device-tree was mapped in boot page tables, remap it in the new tables */
+    device_tree_flattened = early_fdt_map(fdt_paddr);
+
     setup_mm();
 
     vm_init();
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index 3b4b1a8a4f..65c40af351 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -33,6 +33,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 get_mfn_with_color(mfn, color) \
+    (_mfn((mfn_x(mfn) & ~mfn_color_mask) | (color)))
 
 /*
  * Parse the coloring configuration given in the buf string, following the
@@ -349,6 +351,22 @@ unsigned int get_max_nr_llc_colors(void)
     return max_nr_colors;
 }
 
+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 get_mfn_with_color(mfn, xen_colors[i]);
+    }
+
+    /* Jump to next color space (max_nr_colors mfns) and use the first color */
+    return get_mfn_with_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 7f8218bfb2..859ed2da4e 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -26,6 +26,17 @@ static inline void domain_dump_llc_colors(const struct domain *d) {}
 static inline void domain_llc_coloring_free(struct domain *d) {}
 #endif
 
+/**
+ * Iterate over each Xen mfn in the colored space.
+ * @start_mfn:  the first mfn that needs to be colored.
+ * @mfn:        the current mfn.
+ * @i:          loop index.
+ */
+#define for_each_xen_colored_mfn(start_mfn, mfn, i) \
+    for ( i = 0, mfn = xen_colored_mfn(start_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);
@@ -37,6 +48,8 @@ struct page_info;
 unsigned int page_to_llc_color(const struct page_info *pg);
 unsigned int get_max_nr_llc_colors(void);
 
+mfn_t xen_colored_mfn(mfn_t mfn);
+
 #endif /* __COLORING_H__ */
 
 /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:57:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:57:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825744.1240130 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4H4C-0005R2-EW; Fri, 25 Oct 2024 09:57:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825744.1240130; Fri, 25 Oct 2024 09:57: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 1t4H4C-0005Qv-BS; Fri, 25 Oct 2024 09:57:12 +0000
Received: by outflank-mailman (input) for mailman id 825744;
 Fri, 25 Oct 2024 09:54: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=oVQX=RV=linaro.org=dmitry.baryshkov@srs-se1.protection.inumbo.net>)
 id 1t4H20-0004iH-2M
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:54:56 +0000
Received: from mail-yw1-x1129.google.com (mail-yw1-x1129.google.com
 [2607:f8b0:4864:20::1129])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2ed85774-92b7-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:54:54 +0200 (CEST)
Received: by mail-yw1-x1129.google.com with SMTP id
 00721157ae682-6e35f08e23eso18031147b3.2
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 02:54:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2ed85774-92b7-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1729850093; x=1730454893; 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=ovzUCbOnf8ad3/AG/s6edyQx3Y96JvN5zzmYGNZvn88=;
        b=kzm7FWGFCr5xszHTwyrl3hngXTVg1+wS8+78itGhYATKT47/IoAGIH+mOfHQ4bcnUw
         0qcT9u/6L6EM69LUHOuQeEBeIgRl0I7Qn+RRzmkv8DoCak1+mubH1FjN01ey2hWWZfdv
         +mrNmrdqePVzqqNXW2Yg2A+VDAIoPxd8NOFYG6+agBO1xlC+jvbpG9xO6vPWFMhO5ZQS
         Pe5/H7k5KMIDNZdiVFirzcmrxt0Bo2IGHqZXwRg5u0hsNCC8Z9iBjoKIpylaWnnPRdCG
         gaGcG8ukoi9nRvrXqOgWie/VIVweMtAVng3rsFkCwWsjO0Y/vL5kIZjhaqT0Qyox07xH
         uE1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729850093; x=1730454893;
        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=ovzUCbOnf8ad3/AG/s6edyQx3Y96JvN5zzmYGNZvn88=;
        b=FNMpmw0ZcwUl9UXhsG+X9c0FPbOY8Iast99/emGxjK0m6cnmbjPFjy72Sx7Lhnvi6b
         5vcX5MjVYWdq7uWxmjNE+DkpvM2IVwPBrbpoJsANvJVsVICcl2CzSB5dY2ufxDtfYVng
         upHLsxjDVVuCQJ+DUjNb36yOA0TuoULkH3ue4IcmWJKKrANRXJi4lih7uqkc1aD0r3ui
         XFuXj+4ze6F005sw6pDnqr/kDCMb9SkGEHXg0qS5+cUnaC1J2VfpLLJanN+JlAD4i5Vr
         0PYbOCgMG6RkMg9kDuTLvAfcE6bt/xVEC7GAPtMxuLdS5nSjMXK+Jd72Fad+5Yrzy0gw
         x12w==
X-Forwarded-Encrypted: i=1; AJvYcCU9W+rJdFxJvjJgTFB4vUtTZUNPsZA6h7DRWf4BqJFpzCW/F8eKCMAJHcrjn96CGKJuZWmzEjA2Q38=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxsmatVnn22zP19yNbdTqLwasPqFpUkzvklbqjoDSPktHzzTiDZ
	SA+PdqppbWEeK5UmZjQH655WZ8WtDHjD7PbjulbALMkwSh0rRqVNd7JqlTBj8xNcqCgOcADyHc9
	JrpSMBoKrLe5RGW0bonIWjti00Nv4POHck6BhVA==
X-Google-Smtp-Source: AGHT+IFZu/LyAjfpwX5MrN+JVkr0x0xSzSrKk0A5Mdi5tj38z9PJE4G47Yh4NVVkEqgziX0kL7VNUYJrsxipC6JS6p4=
X-Received: by 2002:a05:690c:fc7:b0:6e7:fb87:7094 with SMTP id
 00721157ae682-6e85814d77fmr57343097b3.6.1729850092872; Fri, 25 Oct 2024
 02:54:52 -0700 (PDT)
MIME-Version: 1.0
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com> <ZxtMz8JP3DbzpMew@intel.com>
In-Reply-To: <ZxtMz8JP3DbzpMew@intel.com>
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date: Fri, 25 Oct 2024 12:54:42 +0300
Message-ID: <CAA8EJprT=BGyMnvkjS4BkRqar1hHn_hpXFaz9gstPL_9u1rAsQ@mail.gmail.com>
Subject: Re: [PATCH 0/2] drm: Treewide plane/crtc legacy state sweeping
To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= <ville.syrjala@linux.intel.com>
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, 
	Abhinav Kumar <quic_abhinavk@quicinc.com>, Alain Volmat <alain.volmat@foss.st.com>, 
	Alex Deucher <alexander.deucher@amd.com>, Alexey Brodkin <abrodkin@synopsys.com>, 
	amd-gfx@lists.freedesktop.org, Andy Yan <andy.yan@rock-chips.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Danilo Krummrich <dakr@redhat.com>, freedreno@lists.freedesktop.org, 
	Hans de Goede <hdegoede@redhat.com>, =?UTF-8?Q?Heiko_St=C3=BCbner?= <heiko@sntech.de>, 
	Inki Dae <inki.dae@samsung.com>, Jyri Sarha <jyri.sarha@iki.fi>, 
	Karol Herbst <kherbst@redhat.com>, linux-amlogic@lists.infradead.org, 
	linux-arm-msm@vger.kernel.org, linux-arm-msm@vger.kernel.orga, 
	linux-mediatek@lists.infradead.org, linux-renesas-soc@vger.kernel.org, 
	Liviu Dudau <liviu.dudau@arm.com>, Lyude Paul <lyude@redhat.com>, 
	=?UTF-8?B?TWHDrXJhIENhbmFs?= <mairacanal@riseup.net>, 
	Marijn Suijten <marijn.suijten@somainline.org>, nouveau@lists.freedesktop.org, 
	nouveau@lists.freedesktop.orga, 
	Patrik Jakobsson <patrik.r.jakobsson@gmail.com>, Rob Clark <robdclark@gmail.com>, 
	Russell King <linux@armlinux.org.uk>, Sandy Huang <hjc@rock-chips.com>, Sean Paul <sean@poorly.run>, 
	spice-devel@lists.freedesktop.org, virtualization@lists.linux.dev, 
	xen-devel@lists.xenproject.org, Xinhui Pan <Xinhui.Pan@amd.com>, 
	Zack Rusin <zack.rusin@broadcom.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 25 Oct 2024 at 10:46, Ville Syrj=C3=A4l=C3=A4
<ville.syrjala@linux.intel.com> wrote:
>
> On Wed, Oct 02, 2024 at 09:21:58PM +0300, Ville Syrjala wrote:
> > From: Ville Syrj=C3=A4l=C3=A4 <ville.syrjala@linux.intel.com>
> >
> > An attempt to hide the drm_plane/crtc legacy state better.
> >
> > This also highlights the fact that a lot of supposedly
> > atomic drivers are poking around in the legacy crtc state,
> > which is rather questionable. For planes we did force the
> > legacy state to NULL already to force drivers to behave.
> > But even then it seems capable of confusing people with
> > its high profile location directly under drm_plane.
> >
> > This might end up as some kind of conflict
> > galore, but the alternative would involve trying
> > to wean the atomic drivers off one by one,
> > which would probably take forever. At least with
> > this the issue becomes visible and shouldn't be
> > forgotten as easily.
>
> Ping, anyone have thoughts on this? I'd like to get something
> like this in at some point to make the legacy state (ab)users
> easily visible...

I think that's a good idea. I hope to find a time slot and check the
(ab)using of legacy state in drm/msm driver.

>
> >
> > The cc list was getting way out of hand, so I had
> > to trim it a bit. Hopefully I didn't chop off too
> > many names...



--=20
With best wishes
Dmitry


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 09:59:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 09:59:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825826.1240139 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4H6O-0007IW-Q4; Fri, 25 Oct 2024 09:59:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825826.1240139; Fri, 25 Oct 2024 09:59: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 1t4H6O-0007IP-NV; Fri, 25 Oct 2024 09:59:28 +0000
Received: by outflank-mailman (input) for mailman id 825826;
 Fri, 25 Oct 2024 09:59: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=YVVt=RV=intel.com=jani.nikula@srs-se1.protection.inumbo.net>)
 id 1t4H6N-0007IF-09
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 09:59:27 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cf2c9e5f-92b7-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 11:59:24 +0200 (CEST)
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
 by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 25 Oct 2024 02:59:21 -0700
Received: from zzombora-mobl1.ti.intel.com (HELO localhost) ([10.245.246.193])
 by fmviesa008-auth.fm.intel.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Oct 2024 02:59:09 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf2c9e5f-92b7-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1729850364; x=1761386364;
  h=from:to:cc:subject:in-reply-to:references:date:
   message-id:mime-version:content-transfer-encoding;
  bh=A0tbIubMUPu1KmNaFfOkWkedtaj9BPGHl5YSsFJzW4A=;
  b=fEWAHoUr3txqCT6u4+1VfPa7pW75PouEo/X1qUMkeJiTHFIqEpO20Att
   xNyNMt4yfpXXQCoODH7b9MOfJdyVr5sP6A6pFfsu44zw6fcHu+Pa1Ev7/
   UFN6ogPIhgI7IEW9eCAMtqEj3BysRkKqQ1gfzcRO0ar7xgxjYCKtge7eV
   Sm2zXg/nLKJRdVYjC9+Mf8B7aOsqwRl6q/Vk9SElX70LaQCpAha9TSv3u
   Jcdd2FSVjx7hbDbpIBd5LSDLaDYGeQuOCn2e06EpGsgjhIeCW8xetkWtO
   2DxW4EKA+xXTnzBnW7T/O1svOEyif8RX6xEnlWvrEPriCPJftniakzMq0
   A==;
X-CSE-ConnectionGUID: UH9/7uU9S52VG/oDRyX0jQ==
X-CSE-MsgGUID: 0YKTgCNiQRiGfAY05B/z1g==
X-IronPort-AV: E=McAfee;i="6700,10204,11235"; a="17145366"
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="17145366"
X-CSE-ConnectionGUID: J/nzwOZxRuCCiipRaURsrA==
X-CSE-MsgGUID: 0oumuCcWRtKOGTxyvWihhg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,231,1725346800"; 
   d="scan'208";a="80980898"
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville =?utf-8?B?U3lyasOkbMOk?= <ville.syrjala@linux.intel.com>,
 dri-devel@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org, Abhinav Kumar
 <quic_abhinavk@quicinc.com>, Alain Volmat <alain.volmat@foss.st.com>, Alex
 Deucher <alexander.deucher@amd.com>, Alexey Brodkin
 <abrodkin@synopsys.com>, amd-gfx@lists.freedesktop.org, Andy Yan
 <andy.yan@rock-chips.com>, Christian =?utf-8?Q?K=C3=B6nig?=
 <christian.koenig@amd.com>,
 Danilo Krummrich <dakr@redhat.com>, Dmitry Baryshkov
 <dmitry.baryshkov@linaro.org>, freedreno@lists.freedesktop.org, Hans de
 Goede <hdegoede@redhat.com>, Heiko =?utf-8?Q?St=C3=BCbner?=
 <heiko@sntech.de>, Inki Dae
 <inki.dae@samsung.com>, Jyri Sarha <jyri.sarha@iki.fi>, Karol Herbst
 <kherbst@redhat.com>, linux-amlogic@lists.infradead.org,
 linux-arm-msm@vger.kernel.org, linux-arm-msm@vger.kernel.orga,
 linux-mediatek@lists.infradead.org, linux-renesas-soc@vger.kernel.org,
 Liviu Dudau <liviu.dudau@arm.com>, Lyude Paul <lyude@redhat.com>,
 =?utf-8?Q?Ma=C3=ADra?=
 Canal <mairacanal@riseup.net>, Marijn Suijten
 <marijn.suijten@somainline.org>, nouveau@lists.freedesktop.org,
 nouveau@lists.freedesktop.orga, Patrik Jakobsson
 <patrik.r.jakobsson@gmail.com>, Rob Clark <robdclark@gmail.com>, Russell
 King <linux@armlinux.org.uk>, Sandy Huang <hjc@rock-chips.com>, Sean Paul
 <sean@poorly.run>, spice-devel@lists.freedesktop.org,
 virtualization@lists.linux.dev, xen-devel@lists.xenproject.org, Xinhui Pan
 <Xinhui.Pan@amd.com>, Zack Rusin <zack.rusin@broadcom.com>
Subject: Re: [PATCH 0/2] drm: Treewide plane/crtc legacy state sweeping
In-Reply-To: <ZxtMz8JP3DbzpMew@intel.com>
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
References: <20241002182200.15363-1-ville.syrjala@linux.intel.com>
 <ZxtMz8JP3DbzpMew@intel.com>
Date: Fri, 25 Oct 2024 12:59:05 +0300
Message-ID: <8734kkqz9y.fsf@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On Fri, 25 Oct 2024, Ville Syrj=C3=A4l=C3=A4 <ville.syrjala@linux.intel.com=
> wrote:
> On Wed, Oct 02, 2024 at 09:21:58PM +0300, Ville Syrjala wrote:
>> From: Ville Syrj=C3=A4l=C3=A4 <ville.syrjala@linux.intel.com>
>>=20
>> An attempt to hide the drm_plane/crtc legacy state better.
>>=20
>> This also highlights the fact that a lot of supposedly
>> atomic drivers are poking around in the legacy crtc state,
>> which is rather questionable. For planes we did force the
>> legacy state to NULL already to force drivers to behave.
>> But even then it seems capable of confusing people with
>> its high profile location directly under drm_plane.
>>=20
>> This might end up as some kind of conflict
>> galore, but the alternative would involve trying
>> to wean the atomic drivers off one by one,
>> which would probably take forever. At least with
>> this the issue becomes visible and shouldn't be
>> forgotten as easily.
>
> Ping, anyone have thoughts on this? I'd like to get something
> like this in at some point to make the legacy state (ab)users
> easily visible...

On the approach,

Acked-by: Jani Nikula <jani.nikula@intel.com>

with or without converting legacy into a pointer, up to you.

>
>>=20
>> The cc list was getting way out of hand, so I had
>> to trim it a bit. Hopefully I didn't chop off too
>> many names...
>>=20
>> Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
>> Cc: Alain Volmat <alain.volmat@foss.st.com>
>> Cc: Alex Deucher <alexander.deucher@amd.com>
>> Cc: Alexey Brodkin <abrodkin@synopsys.com>
>> Cc: amd-gfx@lists.freedesktop.org
>> Cc: Andy Yan <andy.yan@rock-chips.com>
>> Cc: "Christian K=C3=B6nig" <christian.koenig@amd.com>
>> Cc: Danilo Krummrich <dakr@redhat.com>
>> Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> Cc: freedreno@lists.freedesktop.org
>> Cc: Hans de Goede <hdegoede@redhat.com>
>> Cc: "Heiko St=C3=BCbner" <heiko@sntech.de>
>> Cc: Inki Dae <inki.dae@samsung.com>
>> Cc: Jyri Sarha <jyri.sarha@iki.fi>
>> Cc: Karol Herbst <kherbst@redhat.com>
>> Cc: linux-amlogic@lists.infradead.org
>> Cc: linux-arm-msm@vger.kernel.org
>> Cc: linux-arm-msm@vger.kernel.orga
>> Cc: linux-mediatek@lists.infradead.org
>> Cc: linux-renesas-soc@vger.kernel.org
>> Cc: Liviu Dudau <liviu.dudau@arm.com>
>> Cc: Lyude Paul <lyude@redhat.com>
>> Cc: "Ma=C3=ADra Canal" <mairacanal@riseup.net>
>> Cc: Marijn Suijten <marijn.suijten@somainline.org>
>> Cc: nouveau@lists.freedesktop.org
>> Cc: nouveau@lists.freedesktop.orga
>> Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
>> Cc: Rob Clark <robdclark@gmail.com>
>> Cc: Russell King <linux@armlinux.org.uk>
>> Cc: Sandy Huang <hjc@rock-chips.com>
>> Cc: Sean Paul <sean@poorly.run>
>> Cc: spice-devel@lists.freedesktop.org
>> Cc: virtualization@lists.linux.dev
>> Cc: xen-devel@lists.xenproject.org
>> Cc: Xinhui Pan <Xinhui.Pan@amd.com>
>> Cc: Zack Rusin <zack.rusin@broadcom.com>
>>=20
>> Ville Syrj=C3=A4l=C3=A4 (2):
>>   drm: Move plane->{fb,old_fb,crtc} to legacy sub-structure
>>   drm: Move crtc->{x,y,mode,enabled} to legacy sub-structure
>>=20
>>  .../gpu/drm/amd/amdgpu/amdgpu_connectors.c    |  7 +-
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_display.c   | 20 ++---
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_pll.c       |  2 +-
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c      |  2 +-
>>  drivers/gpu/drm/amd/amdgpu/dce_v10_0.c        | 35 ++++----
>>  drivers/gpu/drm/amd/amdgpu/dce_v11_0.c        | 35 ++++----
>>  drivers/gpu/drm/amd/amdgpu/dce_v6_0.c         | 37 ++++-----
>>  drivers/gpu/drm/amd/amdgpu/dce_v8_0.c         | 35 ++++----
>>  .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++--
>>  .../amd/display/amdgpu_dm/amdgpu_dm_crtc.c    |  2 +-
>>  drivers/gpu/drm/amd/pm/amdgpu_dpm_internal.c  |  4 +-
>>  drivers/gpu/drm/arm/hdlcd_drv.c               |  2 +-
>>  drivers/gpu/drm/arm/malidp_hw.c               |  2 +-
>>  drivers/gpu/drm/armada/armada_crtc.c          | 12 ++-
>>  drivers/gpu/drm/ast/ast_dp.c                  |  8 +-
>>  drivers/gpu/drm/drm_atomic.c                  |  6 +-
>>  drivers/gpu/drm/drm_atomic_helper.c           |  8 +-
>>  drivers/gpu/drm/drm_client_modeset.c          | 10 +--
>>  drivers/gpu/drm/drm_crtc.c                    | 31 +++----
>>  drivers/gpu/drm/drm_crtc_helper.c             | 80 ++++++++++---------
>>  drivers/gpu/drm/drm_fb_helper.c               | 12 +--
>>  drivers/gpu/drm/drm_framebuffer.c             |  4 +-
>>  drivers/gpu/drm/drm_plane.c                   | 69 ++++++++--------
>>  drivers/gpu/drm/drm_plane_helper.c            |  6 +-
>>  drivers/gpu/drm/drm_vblank.c                  |  2 +-
>>  drivers/gpu/drm/exynos/exynos5433_drm_decon.c |  4 +-
>>  drivers/gpu/drm/gma500/cdv_intel_display.c    |  2 +-
>>  drivers/gpu/drm/gma500/cdv_intel_dp.c         |  6 +-
>>  drivers/gpu/drm/gma500/cdv_intel_hdmi.c       |  3 +-
>>  drivers/gpu/drm/gma500/cdv_intel_lvds.c       |  6 +-
>>  drivers/gpu/drm/gma500/gma_display.c          | 22 ++---
>>  drivers/gpu/drm/gma500/oaktrail_crtc.c        |  2 +-
>>  drivers/gpu/drm/gma500/psb_intel_display.c    |  2 +-
>>  drivers/gpu/drm/gma500/psb_intel_lvds.c       |  6 +-
>>  drivers/gpu/drm/gma500/psb_intel_sdvo.c       |  8 +-
>>  drivers/gpu/drm/i2c/ch7006_drv.c              |  7 +-
>>  drivers/gpu/drm/i2c/sil164_drv.c              |  2 +-
>>  .../drm/i915/display/intel_modeset_setup.c    |  4 +-
>>  drivers/gpu/drm/imx/lcdc/imx-lcdc.c           | 31 ++++---
>>  drivers/gpu/drm/mediatek/mtk_crtc.c           |  6 +-
>>  drivers/gpu/drm/meson/meson_overlay.c         |  2 +-
>>  drivers/gpu/drm/meson/meson_plane.c           |  8 +-
>>  drivers/gpu/drm/msm/disp/dpu1/dpu_core_perf.c | 18 +++--
>>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c       |  6 +-
>>  drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c     | 16 ++--
>>  drivers/gpu/drm/msm/disp/mdp5/mdp5_crtc.c     |  4 +-
>>  drivers/gpu/drm/nouveau/dispnv04/crtc.c       | 25 +++---
>>  drivers/gpu/drm/nouveau/dispnv04/cursor.c     |  2 +-
>>  drivers/gpu/drm/nouveau/dispnv04/dfp.c        |  2 +-
>>  drivers/gpu/drm/nouveau/dispnv04/disp.c       |  4 +-
>>  .../gpu/drm/nouveau/dispnv04/tvmodesnv17.c    |  4 +-
>>  drivers/gpu/drm/nouveau/dispnv04/tvnv17.c     |  7 +-
>>  drivers/gpu/drm/nouveau/nouveau_connector.c   |  6 +-
>>  drivers/gpu/drm/qxl/qxl_display.c             |  6 +-
>>  drivers/gpu/drm/radeon/atombios_crtc.c        | 28 +++----
>>  drivers/gpu/drm/radeon/cik.c                  | 12 +--
>>  drivers/gpu/drm/radeon/evergreen.c            | 16 ++--
>>  drivers/gpu/drm/radeon/r100.c                 | 16 ++--
>>  drivers/gpu/drm/radeon/r600_cs.c              |  2 +-
>>  drivers/gpu/drm/radeon/r600_dpm.c             |  4 +-
>>  drivers/gpu/drm/radeon/radeon_connectors.c    |  7 +-
>>  drivers/gpu/drm/radeon/radeon_cursor.c        | 29 +++----
>>  drivers/gpu/drm/radeon/radeon_device.c        |  2 +-
>>  drivers/gpu/drm/radeon/radeon_display.c       | 26 +++---
>>  drivers/gpu/drm/radeon/radeon_drv.c           |  2 +-
>>  drivers/gpu/drm/radeon/radeon_legacy_crtc.c   | 16 ++--
>>  .../gpu/drm/radeon/radeon_legacy_encoders.c   |  2 +-
>>  drivers/gpu/drm/radeon/radeon_pm.c            |  2 +-
>>  drivers/gpu/drm/radeon/rs600.c                | 10 +--
>>  drivers/gpu/drm/radeon/rs690.c                | 22 ++---
>>  drivers/gpu/drm/radeon/rs780_dpm.c            |  6 +-
>>  drivers/gpu/drm/radeon/rv515.c                | 30 +++----
>>  drivers/gpu/drm/radeon/rv770.c                |  2 +-
>>  drivers/gpu/drm/radeon/si.c                   | 14 ++--
>>  .../gpu/drm/renesas/rcar-du/rcar_du_crtc.c    |  2 +-
>>  .../gpu/drm/renesas/shmobile/shmob_drm_crtc.c |  2 +-
>>  drivers/gpu/drm/rockchip/rockchip_drm_vop.c   |  6 +-
>>  drivers/gpu/drm/sti/sti_crtc.c                |  4 +-
>>  drivers/gpu/drm/sti/sti_cursor.c              |  2 +-
>>  drivers/gpu/drm/sti/sti_gdp.c                 |  2 +-
>>  drivers/gpu/drm/sti/sti_hqvdp.c               |  2 +-
>>  drivers/gpu/drm/sti/sti_tvout.c               |  6 +-
>>  drivers/gpu/drm/sti/sti_vid.c                 |  2 +-
>>  drivers/gpu/drm/tilcdc/tilcdc_crtc.c          | 10 +--
>>  drivers/gpu/drm/tiny/arcpgu.c                 |  2 +-
>>  drivers/gpu/drm/vboxvideo/vbox_mode.c         |  2 +-
>>  drivers/gpu/drm/vc4/vc4_dpi.c                 |  2 +-
>>  drivers/gpu/drm/vc4/vc4_plane.c               |  4 +-
>>  drivers/gpu/drm/virtio/virtgpu_display.c      |  4 +-
>>  drivers/gpu/drm/vkms/vkms_composer.c          |  4 +-
>>  drivers/gpu/drm/vkms/vkms_crtc.c              |  2 +-
>>  drivers/gpu/drm/vkms/vkms_writeback.c         |  4 +-
>>  drivers/gpu/drm/vmwgfx/vmwgfx_kms.c           |  8 +-
>>  drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c           | 18 +++--
>>  drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c          |  9 ++-
>>  drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c          |  4 +-
>>  drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c          |  2 +-
>>  drivers/gpu/drm/xen/xen_drm_front_kms.c       |  2 +-
>>  include/drm/drm_crtc.h                        | 75 ++++++++---------
>>  include/drm/drm_plane.h                       | 52 ++++++------
>>  100 files changed, 599 insertions(+), 547 deletions(-)
>>=20
>> --=20
>> 2.45.2

--=20
Jani Nikula, Intel


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825840.1240161 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFQ-00013N-6n; Fri, 25 Oct 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 825840.1240161; Fri, 25 Oct 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 1t4HFQ-00012d-14; Fri, 25 Oct 2024 10:08:48 +0000
Received: by outflank-mailman (input) for mailman id 825840;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFP-0000tn-FC
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:47 +0000
Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1c286c7a-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:44 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.163])
 by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XZdkB3WLkz1jvxM;
 Fri, 25 Oct 2024 18:07:14 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id F313F180043;
 Fri, 25 Oct 2024 18:08:39 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:38 +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: 1c286c7a-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 05/19] arm64: entry: Remove __exit_to_kernel_mode()
Date: Fri, 25 Oct 2024 18:06:46 +0800
Message-ID: <20241025100700.3714552-6-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

__exit_to_kernel_mode() is only called by exit_to_kernel_mode(),
remove it.

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index a7fd4d6c7650..137481a3f0fa 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -69,9 +69,11 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
  * This is intended to match the logic in irqentry_exit(), handling the kernel
  * mode transitions only, and with preemption handled elsewhere.
  */
-static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs,
-						  irqentry_state_t state)
+static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
+					irqentry_state_t state)
 {
+	mte_check_tfsr_exit();
+
 	lockdep_assert_irqs_disabled();
 
 	if (!regs_irqs_disabled(regs)) {
@@ -90,13 +92,6 @@ static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs,
 	}
 }
 
-static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
-					irqentry_state_t state)
-{
-	mte_check_tfsr_exit();
-	__exit_to_kernel_mode(regs, state);
-}
-
 /*
  * Handle IRQ/context state management when entering from user mode.
  * Before this function is called it is not safe to call regular kernel code,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825841.1240180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFS-0001cw-Jc; Fri, 25 Oct 2024 10:08:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825841.1240180; Fri, 25 Oct 2024 10:08: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 1t4HFS-0001cn-FT; Fri, 25 Oct 2024 10:08:50 +0000
Received: by outflank-mailman (input) for mailman id 825841;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFQ-00014t-FW
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:48 +0000
Received: from szxga07-in.huawei.com (szxga07-in.huawei.com [45.249.212.35])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1cf8b35f-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:08:45 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.214])
 by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4XZdkC0sXgz1SDJF;
 Fri, 25 Oct 2024 18:07:15 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 5F07C1A016C;
 Fri, 25 Oct 2024 18:08:41 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:39 +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: 1cf8b35f-92b9-11ef-a0bf-8be0dac302b0
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 06/19] arm64: entry: Move arm64_preempt_schedule_irq() into exit_to_kernel_mode()
Date: Fri, 25 Oct 2024 18:06:47 +0800
Message-ID: <20241025100700.3714552-7-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Move arm64_preempt_schedule_irq() into exit_to_kernel_mode(), so not
only __el1_irq() but also every time when kernel mode irq return,
there is a chance to reschedule.

As Mark pointed out, this change will have the following key impact:

    "We'll preempt even without taking a "real" interrupt. That
    shouldn't result in preemption that wasn't possible before,
    but it does change the probability of preempting at certain points,
    and might have a performance impact, so probably warrants a
    benchmark."

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 88 ++++++++++++++++----------------
 1 file changed, 44 insertions(+), 44 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 137481a3f0fa..e0380812d71e 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -61,6 +61,48 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 	return ret;
 }
 
+#ifdef CONFIG_PREEMPT_DYNAMIC
+DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
+#define need_irq_preemption() \
+	(static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
+#else
+#define need_irq_preemption()	(IS_ENABLED(CONFIG_PREEMPTION))
+#endif
+
+static void __sched arm64_preempt_schedule_irq(void)
+{
+	if (!need_irq_preemption())
+		return;
+
+	/*
+	 * Note: thread_info::preempt_count includes both thread_info::count
+	 * and thread_info::need_resched, and is not equivalent to
+	 * preempt_count().
+	 */
+	if (READ_ONCE(current_thread_info()->preempt_count) != 0)
+		return;
+
+	/*
+	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
+	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
+	 * using gic_arch_enable_irqs() for normal IRQs. If anything is set in
+	 * DAIF we must have handled an NMI, so skip preemption.
+	 */
+	if (system_uses_irq_prio_masking() && read_sysreg(daif))
+		return;
+
+	/*
+	 * Preempting a task from an IRQ means we leave copies of PSTATE
+	 * on the stack. cpufeature's enable calls may modify PSTATE, but
+	 * resuming one of these preempted tasks would undo those changes.
+	 *
+	 * Only allow a task to be preempted once cpufeatures have been
+	 * enabled.
+	 */
+	if (system_capabilities_finalized())
+		preempt_schedule_irq();
+}
+
 /*
  * Handle IRQ/context state management when exiting to kernel mode.
  * After this function returns it is not safe to call regular kernel code,
@@ -72,6 +114,8 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 					irqentry_state_t state)
 {
+	arm64_preempt_schedule_irq();
+
 	mte_check_tfsr_exit();
 
 	lockdep_assert_irqs_disabled();
@@ -257,48 +301,6 @@ static void noinstr arm64_exit_el1_dbg(struct pt_regs *regs,
 		lockdep_hardirqs_on(CALLER_ADDR0);
 }
 
-#ifdef CONFIG_PREEMPT_DYNAMIC
-DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
-#define need_irq_preemption() \
-	(static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
-#else
-#define need_irq_preemption()	(IS_ENABLED(CONFIG_PREEMPTION))
-#endif
-
-static void __sched arm64_preempt_schedule_irq(void)
-{
-	if (!need_irq_preemption())
-		return;
-
-	/*
-	 * Note: thread_info::preempt_count includes both thread_info::count
-	 * and thread_info::need_resched, and is not equivalent to
-	 * preempt_count().
-	 */
-	if (READ_ONCE(current_thread_info()->preempt_count) != 0)
-		return;
-
-	/*
-	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
-	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
-	 * using gic_arch_enable_irqs() for normal IRQs. If anything is set in
-	 * DAIF we must have handled an NMI, so skip preemption.
-	 */
-	if (system_uses_irq_prio_masking() && read_sysreg(daif))
-		return;
-
-	/*
-	 * Preempting a task from an IRQ means we leave copies of PSTATE
-	 * on the stack. cpufeature's enable calls may modify PSTATE, but
-	 * resuming one of these preempted tasks would undo those changes.
-	 *
-	 * Only allow a task to be preempted once cpufeatures have been
-	 * enabled.
-	 */
-	if (system_capabilities_finalized())
-		preempt_schedule_irq();
-}
-
 static void do_interrupt_handler(struct pt_regs *regs,
 				 void (*handler)(struct pt_regs *))
 {
@@ -567,8 +569,6 @@ static __always_inline void __el1_irq(struct pt_regs *regs,
 	do_interrupt_handler(regs, handler);
 	irq_exit_rcu();
 
-	arm64_preempt_schedule_irq();
-
 	exit_to_kernel_mode(regs, state);
 }
 static void noinstr el1_interrupt(struct pt_regs *regs,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825838.1240150 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFP-0000u9-Lg; Fri, 25 Oct 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 825838.1240150; Fri, 25 Oct 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 1t4HFP-0000u2-H0; Fri, 25 Oct 2024 10:08:47 +0000
Received: by outflank-mailman (input) for mailman id 825838;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFN-0000tn-Pi
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:45 +0000
Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1a81b42d-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:42 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.44])
 by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4XZdlw6k9cz1yng3;
 Fri, 25 Oct 2024 18:08:44 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 41002140360;
 Fri, 25 Oct 2024 18:08:37 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:35 +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: 1a81b42d-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 03/19] arm64: entry: Remove __enter_from_user_mode()
Date: Fri, 25 Oct 2024 18:06:44 +0800
Message-ID: <20241025100700.3714552-4-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

The __enter_from_user_mode() is only called by enter_from_user_mode(),
so replaced it with enter_from_user_mode().

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 68a9aecacdb9..ccf59b44464d 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -109,7 +109,7 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
  * Before this function is called it is not safe to call regular kernel code,
  * instrumentable code, or any code which may trigger an exception.
  */
-static __always_inline void __enter_from_user_mode(void)
+static __always_inline void enter_from_user_mode(struct pt_regs *regs)
 {
 	lockdep_hardirqs_off(CALLER_ADDR0);
 	CT_WARN_ON(ct_state() != CT_STATE_USER);
@@ -118,11 +118,6 @@ static __always_inline void __enter_from_user_mode(void)
 	mte_disable_tco_entry(current);
 }
 
-static __always_inline void enter_from_user_mode(struct pt_regs *regs)
-{
-	__enter_from_user_mode();
-}
-
 /*
  * Handle IRQ/context state management when exiting to user mode.
  * After this function returns it is not safe to call regular kernel code,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825839.1240155 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFP-0000xM-SE; Fri, 25 Oct 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 825839.1240155; Fri, 25 Oct 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 1t4HFP-0000vj-O8; Fri, 25 Oct 2024 10:08:47 +0000
Received: by outflank-mailman (input) for mailman id 825839;
 Fri, 25 Oct 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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFO-0000tn-FB
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:46 +0000
Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 189920a6-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:42 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.44])
 by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4XZdlr5qryz1yndH;
 Fri, 25 Oct 2024 18:08:40 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 21B291402E1;
 Fri, 25 Oct 2024 18:08:33 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:31 +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: 189920a6-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 00/19] arm64: entry: Convert to generic entry
Date: Fri, 25 Oct 2024 18:06:41 +0800
Message-ID: <20241025100700.3714552-1-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Currently, x86, Riscv, Loongarch use the generic entry. Convert arm64
to use the generic entry infrastructure from kernel/entry/*. The generic
entry makes maintainers' work easier and codes more elegant, which aslo
removed a lot of duplicate code.

The patch 1 ~ 5 try to make arm64 easier to use irqentry_enter/exit().
The patch 6 ~ 13 and patch 15 try to make it closer to the PREEMPT_DYNAMIC
code of generic entry. And the patch 16 split the generic entry into
generic irq entry and generic syscall to make the single patch more
concentrated in switching to one thing.

Changes in v4:
- Rework/cleanup split into a few patches as Mark suggested.
- Replace interrupts_enabled() macro with regs_irqs_disabled(), instead
  of left it here.
- Remove rcu and lockdep state in pt_regs by using temporary
  irqentry_state_t as Mark suggested.
- Remove some unnecessary intermediate functions to make it clear.
- Rework preempt irq and PREEMPT_DYNAMIC code
  to make the switch more clear.
- arch_prepare_*_entry/exit() -> arch_pre_*_entry/exit().
- Expand the arch functions comment.
- Make arch functions closer to its caller.
- Declare saved_reg in for block.
- Remove arch_exit_to_kernel_mode_prepare(), arch_enter_from_kernel_mode().
- Adjust "Add few arch functions to use generic entry" patch to be
  the penultimate.
- Update the commit message.
- Add suggested-by.

Changes in v3:
- Test the MTE test cases.
- Handle forget_syscall() in arch_post_report_syscall_entry()
- Make the arch funcs not use __weak as Thomas suggested, so move
  the arch funcs to entry-common.h, and make arch_forget_syscall() folded
  in arch_post_report_syscall_entry() as suggested.
- Move report_single_step() to thread_info.h for arm64
- Change __always_inline() to inline, add inline for the other arch funcs.
- Remove unused signal.h for entry-common.h.
- Add Suggested-by.
- Update the commit message.

Changes in v2:
- Add tested-by.
- Fix a bug that not call arch_post_report_syscall_entry() in
  syscall_trace_enter() if ptrace_report_syscall_entry() return not zero.
- Refactor report_syscall().
- Add comment for arch_prepare_report_syscall_exit().
- Adjust entry-common.h header file inclusion to alphabetical order.
- Update the commit message.

Jinjie Ruan (19):
  arm64: ptrace: Replace interrupts_enabled() with regs_irqs_disabled()
  arm64: entry: Refactor the entry and exit for exceptions from EL1
  arm64: entry: Remove __enter_from_user_mode()
  arm64: entry: Remove __enter_from_kernel_mode()
  arm64: entry: Remove __exit_to_kernel_mode()
  arm64: entry: Move arm64_preempt_schedule_irq() into
    exit_to_kernel_mode()
  arm64: entry: Call arm64_preempt_schedule_irq() only if irqs enabled
  arm64: entry: Rework arm64_preempt_schedule_irq()
  arm64: entry: Use preempt_count() and need_resched() helper
  arm64: entry: preempt_schedule_irq() only if PREEMPTION enabled
  arm64: entry: Extract raw_irqentry_exit_cond_resched() function
  arm64: entry: Check dynamic key ahead
  arm64: entry: Check dynamic resched when PREEMPT_DYNAMIC enabled
  entry: Split into irq entry and syscall
  entry: Add arch irqentry_exit_need_resched() for arm64
  arm64: entry: Switch to generic IRQ entry
  entry: Add syscall arch functions to use generic syscall for arm64
  arm64/ptrace: Split report_syscall() into separate enter and exit
    functions
  arm64: entry: Convert to generic entry

 MAINTAINERS                           |   1 +
 arch/Kconfig                          |   8 +
 arch/arm/include/asm/ptrace.h         |   4 +-
 arch/arm/kernel/hw_breakpoint.c       |   2 +-
 arch/arm/kernel/process.c             |   2 +-
 arch/arm/mm/alignment.c               |   2 +-
 arch/arm/mm/fault.c                   |   2 +-
 arch/arm64/Kconfig                    |   1 +
 arch/arm64/include/asm/daifflags.h    |   2 +-
 arch/arm64/include/asm/entry-common.h | 149 ++++++++++
 arch/arm64/include/asm/preempt.h      |   2 -
 arch/arm64/include/asm/ptrace.h       |   8 +-
 arch/arm64/include/asm/syscall.h      |   6 +-
 arch/arm64/include/asm/thread_info.h  |  23 +-
 arch/arm64/include/asm/xen/events.h   |   2 +-
 arch/arm64/kernel/acpi.c              |   2 +-
 arch/arm64/kernel/debug-monitors.c    |   2 +-
 arch/arm64/kernel/entry-common.c      | 381 +++++++------------------
 arch/arm64/kernel/ptrace.c            |  90 ------
 arch/arm64/kernel/sdei.c              |   2 +-
 arch/arm64/kernel/signal.c            |   3 +-
 arch/arm64/kernel/syscall.c           |  18 +-
 drivers/irqchip/irq-gic-v3.c          |   2 +-
 include/linux/entry-common.h          | 377 +-----------------------
 include/linux/irq-entry-common.h      | 393 ++++++++++++++++++++++++++
 include/linux/thread_info.h           |  13 +
 kernel/entry/Makefile                 |   3 +-
 kernel/entry/common.c                 | 175 ++----------
 kernel/entry/syscall-common.c         | 237 ++++++++++++++++
 29 files changed, 962 insertions(+), 950 deletions(-)
 create mode 100644 arch/arm64/include/asm/entry-common.h
 create mode 100644 include/linux/irq-entry-common.h
 create mode 100644 kernel/entry/syscall-common.c

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825842.1240185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFS-0001fq-Uk; Fri, 25 Oct 2024 10:08:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825842.1240185; Fri, 25 Oct 2024 10:08: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 1t4HFS-0001ea-O5; Fri, 25 Oct 2024 10:08:50 +0000
Received: by outflank-mailman (input) for mailman id 825842;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFQ-0000tn-FM
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:48 +0000
Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 19c37b21-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:45 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.234])
 by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XZdk639hWz1jvxH;
 Fri, 25 Oct 2024 18:07:10 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id DC0FB1401F1;
 Fri, 25 Oct 2024 18:08:35 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:34 +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: 19c37b21-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 02/19] arm64: entry: Refactor the entry and exit for exceptions from EL1
Date: Fri, 25 Oct 2024 18:06:43 +0800
Message-ID: <20241025100700.3714552-3-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

These changes refactor the entry and exit routines for the exceptions
from EL1. They store the RCU and lockdep state in a struct
irqentry_state variable on the stack, rather than recording them
in the fields of pt_regs, since it is safe enough for these context.

Before:
	struct pt_regs {
		...
		u64 lockdep_hardirqs;
		u64 exit_rcu;
	}

	enter_from_kernel_mode(regs);
	...
	exit_to_kernel_mode(regs);

After:
	typedef struct irqentry_state {
		union {
			bool    exit_rcu;
			bool    lockdep;
		};
	} irqentry_state_t;

	irqentry_state_t state = enter_from_kernel_mode(regs);
	...
	exit_to_kernel_mode(regs, state);

No functional changes.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/include/asm/ptrace.h  |  11 ++-
 arch/arm64/kernel/entry-common.c | 129 +++++++++++++++++++------------
 2 files changed, 85 insertions(+), 55 deletions(-)

diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
index 3e5372a98da4..5156c0d5fa20 100644
--- a/arch/arm64/include/asm/ptrace.h
+++ b/arch/arm64/include/asm/ptrace.h
@@ -149,6 +149,13 @@ static inline unsigned long pstate_to_compat_psr(const unsigned long pstate)
 	return psr;
 }
 
+typedef struct irqentry_state {
+	union {
+		bool	exit_rcu;
+		bool	lockdep;
+	};
+} irqentry_state_t;
+
 /*
  * This struct defines the way the registers are stored on the stack during an
  * exception. struct user_pt_regs must form a prefix of struct pt_regs.
@@ -169,10 +176,6 @@ struct pt_regs {
 
 	u64 sdei_ttbr1;
 	struct frame_record_meta stackframe;
-
-	/* Only valid for some EL1 exceptions. */
-	u64 lockdep_hardirqs;
-	u64 exit_rcu;
 };
 
 /* For correct stack alignment, pt_regs has to be a multiple of 16 bytes. */
diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index c547e70428d3..68a9aecacdb9 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -36,29 +36,36 @@
  * This is intended to match the logic in irqentry_enter(), handling the kernel
  * mode transitions only.
  */
-static __always_inline void __enter_from_kernel_mode(struct pt_regs *regs)
+static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
 {
-	regs->exit_rcu = false;
+	irqentry_state_t ret = {
+		.exit_rcu = false,
+	};
 
 	if (!IS_ENABLED(CONFIG_TINY_RCU) && is_idle_task(current)) {
 		lockdep_hardirqs_off(CALLER_ADDR0);
 		ct_irq_enter();
 		trace_hardirqs_off_finish();
 
-		regs->exit_rcu = true;
-		return;
+		ret.exit_rcu = true;
+		return ret;
 	}
 
 	lockdep_hardirqs_off(CALLER_ADDR0);
 	rcu_irq_enter_check_tick();
 	trace_hardirqs_off_finish();
+
+	return ret;
 }
 
-static void noinstr enter_from_kernel_mode(struct pt_regs *regs)
+static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 {
-	__enter_from_kernel_mode(regs);
+	irqentry_state_t ret = __enter_from_kernel_mode(regs);
+
 	mte_check_tfsr_entry();
 	mte_disable_tco_entry(current);
+
+	return ret;
 }
 
 /*
@@ -69,12 +76,13 @@ static void noinstr enter_from_kernel_mode(struct pt_regs *regs)
  * This is intended to match the logic in irqentry_exit(), handling the kernel
  * mode transitions only, and with preemption handled elsewhere.
  */
-static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)
+static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs,
+						  irqentry_state_t state)
 {
 	lockdep_assert_irqs_disabled();
 
 	if (!regs_irqs_disabled(regs)) {
-		if (regs->exit_rcu) {
+		if (state.exit_rcu) {
 			trace_hardirqs_on_prepare();
 			lockdep_hardirqs_on_prepare();
 			ct_irq_exit();
@@ -84,15 +92,16 @@ static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)
 
 		trace_hardirqs_on();
 	} else {
-		if (regs->exit_rcu)
+		if (state.exit_rcu)
 			ct_irq_exit();
 	}
 }
 
-static void noinstr exit_to_kernel_mode(struct pt_regs *regs)
+static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
+					irqentry_state_t state)
 {
 	mte_check_tfsr_exit();
-	__exit_to_kernel_mode(regs);
+	__exit_to_kernel_mode(regs, state);
 }
 
 /*
@@ -190,9 +199,11 @@ asmlinkage void noinstr asm_exit_to_user_mode(struct pt_regs *regs)
  * mode. Before this function is called it is not safe to call regular kernel
  * code, instrumentable code, or any code which may trigger an exception.
  */
-static void noinstr arm64_enter_nmi(struct pt_regs *regs)
+static noinstr irqentry_state_t arm64_enter_nmi(struct pt_regs *regs)
 {
-	regs->lockdep_hardirqs = lockdep_hardirqs_enabled();
+	irqentry_state_t irq_state;
+
+	irq_state.lockdep = lockdep_hardirqs_enabled();
 
 	__nmi_enter();
 	lockdep_hardirqs_off(CALLER_ADDR0);
@@ -201,6 +212,8 @@ static void noinstr arm64_enter_nmi(struct pt_regs *regs)
 
 	trace_hardirqs_off_finish();
 	ftrace_nmi_enter();
+
+	return irq_state;
 }
 
 /*
@@ -208,19 +221,18 @@ static void noinstr arm64_enter_nmi(struct pt_regs *regs)
  * mode. After this function returns it is not safe to call regular kernel
  * code, instrumentable code, or any code which may trigger an exception.
  */
-static void noinstr arm64_exit_nmi(struct pt_regs *regs)
+static void noinstr arm64_exit_nmi(struct pt_regs *regs,
+				   irqentry_state_t irq_state)
 {
-	bool restore = regs->lockdep_hardirqs;
-
 	ftrace_nmi_exit();
-	if (restore) {
+	if (irq_state.lockdep) {
 		trace_hardirqs_on_prepare();
 		lockdep_hardirqs_on_prepare();
 	}
 
 	ct_nmi_exit();
 	lockdep_hardirq_exit();
-	if (restore)
+	if (irq_state.lockdep)
 		lockdep_hardirqs_on(CALLER_ADDR0);
 	__nmi_exit();
 }
@@ -230,14 +242,18 @@ static void noinstr arm64_exit_nmi(struct pt_regs *regs)
  * kernel mode. Before this function is called it is not safe to call regular
  * kernel code, instrumentable code, or any code which may trigger an exception.
  */
-static void noinstr arm64_enter_el1_dbg(struct pt_regs *regs)
+static noinstr irqentry_state_t arm64_enter_el1_dbg(struct pt_regs *regs)
 {
-	regs->lockdep_hardirqs = lockdep_hardirqs_enabled();
+	irqentry_state_t state;
+
+	state.lockdep = lockdep_hardirqs_enabled();
 
 	lockdep_hardirqs_off(CALLER_ADDR0);
 	ct_nmi_enter();
 
 	trace_hardirqs_off_finish();
+
+	return state;
 }
 
 /*
@@ -245,17 +261,16 @@ static void noinstr arm64_enter_el1_dbg(struct pt_regs *regs)
  * kernel mode. After this function returns it is not safe to call regular
  * kernel code, instrumentable code, or any code which may trigger an exception.
  */
-static void noinstr arm64_exit_el1_dbg(struct pt_regs *regs)
+static void noinstr arm64_exit_el1_dbg(struct pt_regs *regs,
+				       irqentry_state_t state)
 {
-	bool restore = regs->lockdep_hardirqs;
-
-	if (restore) {
+	if (state.lockdep) {
 		trace_hardirqs_on_prepare();
 		lockdep_hardirqs_on_prepare();
 	}
 
 	ct_nmi_exit();
-	if (restore)
+	if (state.lockdep)
 		lockdep_hardirqs_on(CALLER_ADDR0);
 }
 
@@ -426,78 +441,86 @@ UNHANDLED(el1t, 64, error)
 static void noinstr el1_abort(struct pt_regs *regs, unsigned long esr)
 {
 	unsigned long far = read_sysreg(far_el1);
+	irqentry_state_t state;
 
-	enter_from_kernel_mode(regs);
+	state = enter_from_kernel_mode(regs);
 	local_daif_inherit(regs);
 	do_mem_abort(far, esr, regs);
 	local_daif_mask();
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 
 static void noinstr el1_pc(struct pt_regs *regs, unsigned long esr)
 {
 	unsigned long far = read_sysreg(far_el1);
+	irqentry_state_t state;
 
-	enter_from_kernel_mode(regs);
+	state = enter_from_kernel_mode(regs);
 	local_daif_inherit(regs);
 	do_sp_pc_abort(far, esr, regs);
 	local_daif_mask();
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 
 static void noinstr el1_undef(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_kernel_mode(regs);
+	irqentry_state_t state = enter_from_kernel_mode(regs);
+
 	local_daif_inherit(regs);
 	do_el1_undef(regs, esr);
 	local_daif_mask();
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 
 static void noinstr el1_bti(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_kernel_mode(regs);
+	irqentry_state_t state = enter_from_kernel_mode(regs);
+
 	local_daif_inherit(regs);
 	do_el1_bti(regs, esr);
 	local_daif_mask();
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 
 static void noinstr el1_gcs(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_kernel_mode(regs);
+	irqentry_state_t state = enter_from_kernel_mode(regs);
+
 	local_daif_inherit(regs);
 	do_el1_gcs(regs, esr);
 	local_daif_mask();
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 
 static void noinstr el1_mops(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_kernel_mode(regs);
+	irqentry_state_t state = enter_from_kernel_mode(regs);
+
 	local_daif_inherit(regs);
 	do_el1_mops(regs, esr);
 	local_daif_mask();
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 
 static void noinstr el1_dbg(struct pt_regs *regs, unsigned long esr)
 {
 	unsigned long far = read_sysreg(far_el1);
+	irqentry_state_t state;
 
-	arm64_enter_el1_dbg(regs);
+	state = arm64_enter_el1_dbg(regs);
 	if (!cortex_a76_erratum_1463225_debug_handler(regs))
 		do_debug_exception(far, esr, regs);
-	arm64_exit_el1_dbg(regs);
+	arm64_exit_el1_dbg(regs, state);
 }
 
 static void noinstr el1_fpac(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_kernel_mode(regs);
+	irqentry_state_t state = enter_from_kernel_mode(regs);
+
 	local_daif_inherit(regs);
 	do_el1_fpac(regs, esr);
 	local_daif_mask();
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 
 asmlinkage void noinstr el1h_64_sync_handler(struct pt_regs *regs)
@@ -546,15 +569,16 @@ asmlinkage void noinstr el1h_64_sync_handler(struct pt_regs *regs)
 static __always_inline void __el1_pnmi(struct pt_regs *regs,
 				       void (*handler)(struct pt_regs *))
 {
-	arm64_enter_nmi(regs);
+	irqentry_state_t state = arm64_enter_nmi(regs);
+
 	do_interrupt_handler(regs, handler);
-	arm64_exit_nmi(regs);
+	arm64_exit_nmi(regs, state);
 }
 
 static __always_inline void __el1_irq(struct pt_regs *regs,
 				      void (*handler)(struct pt_regs *))
 {
-	enter_from_kernel_mode(regs);
+	irqentry_state_t state = enter_from_kernel_mode(regs);
 
 	irq_enter_rcu();
 	do_interrupt_handler(regs, handler);
@@ -562,7 +586,7 @@ static __always_inline void __el1_irq(struct pt_regs *regs,
 
 	arm64_preempt_schedule_irq();
 
-	exit_to_kernel_mode(regs);
+	exit_to_kernel_mode(regs, state);
 }
 static void noinstr el1_interrupt(struct pt_regs *regs,
 				  void (*handler)(struct pt_regs *))
@@ -588,11 +612,12 @@ asmlinkage void noinstr el1h_64_fiq_handler(struct pt_regs *regs)
 asmlinkage void noinstr el1h_64_error_handler(struct pt_regs *regs)
 {
 	unsigned long esr = read_sysreg(esr_el1);
+	irqentry_state_t state;
 
 	local_daif_restore(DAIF_ERRCTX);
-	arm64_enter_nmi(regs);
+	state = arm64_enter_nmi(regs);
 	do_serror(regs, esr);
-	arm64_exit_nmi(regs);
+	arm64_exit_nmi(regs, state);
 }
 
 static void noinstr el0_da(struct pt_regs *regs, unsigned long esr)
@@ -855,12 +880,13 @@ asmlinkage void noinstr el0t_64_fiq_handler(struct pt_regs *regs)
 static void noinstr __el0_error_handler_common(struct pt_regs *regs)
 {
 	unsigned long esr = read_sysreg(esr_el1);
+	irqentry_state_t state;
 
 	enter_from_user_mode(regs);
 	local_daif_restore(DAIF_ERRCTX);
-	arm64_enter_nmi(regs);
+	state = arm64_enter_nmi(regs);
 	do_serror(regs, esr);
-	arm64_exit_nmi(regs);
+	arm64_exit_nmi(regs, state);
 	local_daif_restore(DAIF_PROCCTX);
 	exit_to_user_mode(regs);
 }
@@ -968,6 +994,7 @@ asmlinkage void noinstr __noreturn handle_bad_stack(struct pt_regs *regs)
 asmlinkage noinstr unsigned long
 __sdei_handler(struct pt_regs *regs, struct sdei_registered_event *arg)
 {
+	irqentry_state_t state;
 	unsigned long ret;
 
 	/*
@@ -992,9 +1019,9 @@ __sdei_handler(struct pt_regs *regs, struct sdei_registered_event *arg)
 	else if (cpu_has_pan())
 		set_pstate_pan(0);
 
-	arm64_enter_nmi(regs);
+	state = arm64_enter_nmi(regs);
 	ret = do_sdei_event(regs, arg);
-	arm64_exit_nmi(regs);
+	arm64_exit_nmi(regs, state);
 
 	return ret;
 }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825843.1240190 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFT-0001lo-A6; Fri, 25 Oct 2024 10:08:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825843.1240190; Fri, 25 Oct 2024 10:08: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 1t4HFT-0001kX-2N; Fri, 25 Oct 2024 10:08:51 +0000
Received: by outflank-mailman (input) for mailman id 825843;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFR-00014t-4N
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:49 +0000
Received: from szxga07-in.huawei.com (szxga07-in.huawei.com [45.249.212.35])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1bd04400-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:08:47 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.234])
 by szxga07-in.huawei.com (SkyGuard) with ESMTP id 4XZdk82QfKz1SDBV;
 Fri, 25 Oct 2024 18:07:12 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 94CA51401F1;
 Fri, 25 Oct 2024 18:08:38 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:37 +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: 1bd04400-92b9-11ef-a0bf-8be0dac302b0
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 04/19] arm64: entry: Remove __enter_from_kernel_mode()
Date: Fri, 25 Oct 2024 18:06:45 +0800
Message-ID: <20241025100700.3714552-5-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

The __enter_from_kernel_mode() is only called by enter_from_kernel_mode(),
remove it.

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index ccf59b44464d..a7fd4d6c7650 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -36,7 +36,7 @@
  * This is intended to match the logic in irqentry_enter(), handling the kernel
  * mode transitions only.
  */
-static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
+static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 {
 	irqentry_state_t ret = {
 		.exit_rcu = false,
@@ -55,13 +55,6 @@ static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs
 	rcu_irq_enter_check_tick();
 	trace_hardirqs_off_finish();
 
-	return ret;
-}
-
-static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
-{
-	irqentry_state_t ret = __enter_from_kernel_mode(regs);
-
 	mte_check_tfsr_entry();
 	mte_disable_tco_entry(current);
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825844.1240199 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFT-0001vV-Vw; Fri, 25 Oct 2024 10:08:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825844.1240199; Fri, 25 Oct 2024 10:08: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 1t4HFT-0001tK-KE; Fri, 25 Oct 2024 10:08:51 +0000
Received: by outflank-mailman (input) for mailman id 825844;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFS-00014t-4g
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:50 +0000
Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1ea77fac-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:08:47 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.252])
 by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4XZdjW6PJ5z1T95x;
 Fri, 25 Oct 2024 18:06:39 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 1E0281800E2;
 Fri, 25 Oct 2024 18:08:44 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:42 +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: 1ea77fac-92b9-11ef-a0bf-8be0dac302b0
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 08/19] arm64: entry: Rework arm64_preempt_schedule_irq()
Date: Fri, 25 Oct 2024 18:06:49 +0800
Message-ID: <20241025100700.3714552-9-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Rework arm64_preempt_schedule_irq() to check whether it need
resched in a check function arm64_irqentry_exit_need_resched().

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index b57f6dc66115..a3414fb599fa 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -69,10 +69,10 @@ DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
 #define need_irq_preemption()	(IS_ENABLED(CONFIG_PREEMPTION))
 #endif
 
-static void __sched arm64_preempt_schedule_irq(void)
+static inline bool arm64_irqentry_exit_need_resched(void)
 {
 	if (!need_irq_preemption())
-		return;
+		return false;
 
 	/*
 	 * Note: thread_info::preempt_count includes both thread_info::count
@@ -80,7 +80,7 @@ static void __sched arm64_preempt_schedule_irq(void)
 	 * preempt_count().
 	 */
 	if (READ_ONCE(current_thread_info()->preempt_count) != 0)
-		return;
+		return false;
 
 	/*
 	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
@@ -89,7 +89,7 @@ static void __sched arm64_preempt_schedule_irq(void)
 	 * DAIF we must have handled an NMI, so skip preemption.
 	 */
 	if (system_uses_irq_prio_masking() && read_sysreg(daif))
-		return;
+		return false;
 
 	/*
 	 * Preempting a task from an IRQ means we leave copies of PSTATE
@@ -99,8 +99,10 @@ static void __sched arm64_preempt_schedule_irq(void)
 	 * Only allow a task to be preempted once cpufeatures have been
 	 * enabled.
 	 */
-	if (system_capabilities_finalized())
-		preempt_schedule_irq();
+	if (!system_capabilities_finalized())
+		return false;
+
+	return true;
 }
 
 /*
@@ -127,7 +129,8 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 			return;
 		}
 
-		arm64_preempt_schedule_irq();
+		if (arm64_irqentry_exit_need_resched())
+			preempt_schedule_irq();
 
 		trace_hardirqs_on();
 	} else {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825845.1240220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFW-0002gX-2h; Fri, 25 Oct 2024 10:08:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825845.1240220; Fri, 25 Oct 2024 10: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 1t4HFV-0002gI-VZ; Fri, 25 Oct 2024 10:08:53 +0000
Received: by outflank-mailman (input) for mailman id 825845;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFU-0000tn-Hi
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:52 +0000
Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 199213b7-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:49 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.252])
 by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4XZdjL03xBz10My6;
 Fri, 25 Oct 2024 18:06:30 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 7AEEB1800A5;
 Fri, 25 Oct 2024 18:08:34 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:32 +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: 199213b7-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 01/19] arm64: ptrace: Replace interrupts_enabled() with regs_irqs_disabled()
Date: Fri, 25 Oct 2024 18:06:42 +0800
Message-ID: <20241025100700.3714552-2-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Implement regs_irqs_disabled(), and replace interrupts_enabled() macro
with regs_irqs_disabled() all over the place.

No functional changes.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm/include/asm/ptrace.h       | 4 ++--
 arch/arm/kernel/hw_breakpoint.c     | 2 +-
 arch/arm/kernel/process.c           | 2 +-
 arch/arm/mm/alignment.c             | 2 +-
 arch/arm/mm/fault.c                 | 2 +-
 arch/arm64/include/asm/daifflags.h  | 2 +-
 arch/arm64/include/asm/ptrace.h     | 4 ++--
 arch/arm64/include/asm/xen/events.h | 2 +-
 arch/arm64/kernel/acpi.c            | 2 +-
 arch/arm64/kernel/debug-monitors.c  | 2 +-
 arch/arm64/kernel/entry-common.c    | 4 ++--
 arch/arm64/kernel/sdei.c            | 2 +-
 drivers/irqchip/irq-gic-v3.c        | 2 +-
 13 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h
index 6eb311fb2da0..2054b17b3a69 100644
--- a/arch/arm/include/asm/ptrace.h
+++ b/arch/arm/include/asm/ptrace.h
@@ -46,8 +46,8 @@ struct svc_pt_regs {
 #define processor_mode(regs) \
 	((regs)->ARM_cpsr & MODE_MASK)
 
-#define interrupts_enabled(regs) \
-	(!((regs)->ARM_cpsr & PSR_I_BIT))
+#define regs_irqs_disabled(regs) \
+	((regs)->ARM_cpsr & PSR_I_BIT)
 
 #define fast_interrupts_enabled(regs) \
 	(!((regs)->ARM_cpsr & PSR_F_BIT))
diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c
index a12efd0f43e8..bc7c9f5a2767 100644
--- a/arch/arm/kernel/hw_breakpoint.c
+++ b/arch/arm/kernel/hw_breakpoint.c
@@ -947,7 +947,7 @@ static int hw_breakpoint_pending(unsigned long addr, unsigned int fsr,
 
 	preempt_disable();
 
-	if (interrupts_enabled(regs))
+	if (!regs_irqs_disabled(regs))
 		local_irq_enable();
 
 	/* We only handle watchpoints and hardware breakpoints. */
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index e16ed102960c..5979a5cec2d0 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -167,7 +167,7 @@ void __show_regs(struct pt_regs *regs)
 			segment = "user";
 
 		printk("Flags: %s  IRQs o%s  FIQs o%s  Mode %s  ISA %s  Segment %s\n",
-			buf, interrupts_enabled(regs) ? "n" : "ff",
+			buf, !regs_irqs_disabled(regs) ? "n" : "ff",
 			fast_interrupts_enabled(regs) ? "n" : "ff",
 			processor_modes[processor_mode(regs)],
 			isa_modes[isa_mode(regs)], segment);
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c
index 3c6ddb1afdc4..642aae48a09e 100644
--- a/arch/arm/mm/alignment.c
+++ b/arch/arm/mm/alignment.c
@@ -809,7 +809,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 	int thumb2_32b = 0;
 	int fault;
 
-	if (interrupts_enabled(regs))
+	if (!regs_irqs_disabled(regs))
 		local_irq_enable();
 
 	instrptr = instruction_pointer(regs);
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index ab01b51de559..dd8e95fcce10 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -275,7 +275,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 
 
 	/* Enable interrupts if they were enabled in the parent context. */
-	if (interrupts_enabled(regs))
+	if (!regs_irqs_disabled(regs))
 		local_irq_enable();
 
 	/*
diff --git a/arch/arm64/include/asm/daifflags.h b/arch/arm64/include/asm/daifflags.h
index fbb5c99eb2f9..5fca48009043 100644
--- a/arch/arm64/include/asm/daifflags.h
+++ b/arch/arm64/include/asm/daifflags.h
@@ -128,7 +128,7 @@ static inline void local_daif_inherit(struct pt_regs *regs)
 {
 	unsigned long flags = regs->pstate & DAIF_MASK;
 
-	if (interrupts_enabled(regs))
+	if (!regs_irqs_disabled(regs))
 		trace_hardirqs_on();
 
 	if (system_uses_irq_prio_masking())
diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
index 47ff8654c5ec..3e5372a98da4 100644
--- a/arch/arm64/include/asm/ptrace.h
+++ b/arch/arm64/include/asm/ptrace.h
@@ -214,8 +214,8 @@ static inline void forget_syscall(struct pt_regs *regs)
 		(regs)->pmr == GIC_PRIO_IRQON :				\
 		true)
 
-#define interrupts_enabled(regs)			\
-	(!((regs)->pstate & PSR_I_BIT) && irqs_priority_unmasked(regs))
+#define regs_irqs_disabled(regs)			\
+	(((regs)->pstate & PSR_I_BIT) || (!irqs_priority_unmasked(regs)))
 
 #define fast_interrupts_enabled(regs) \
 	(!((regs)->pstate & PSR_F_BIT))
diff --git a/arch/arm64/include/asm/xen/events.h b/arch/arm64/include/asm/xen/events.h
index 2788e95d0ff0..2977b5fe068d 100644
--- a/arch/arm64/include/asm/xen/events.h
+++ b/arch/arm64/include/asm/xen/events.h
@@ -14,7 +14,7 @@ enum ipi_vector {
 
 static inline int xen_irqs_disabled(struct pt_regs *regs)
 {
-	return !interrupts_enabled(regs);
+	return regs_irqs_disabled(regs);
 }
 
 #define xchg_xen_ulong(ptr, val) xchg((ptr), (val))
diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c
index e6f66491fbe9..732f89daae23 100644
--- a/arch/arm64/kernel/acpi.c
+++ b/arch/arm64/kernel/acpi.c
@@ -403,7 +403,7 @@ int apei_claim_sea(struct pt_regs *regs)
 	return_to_irqs_enabled = !irqs_disabled_flags(arch_local_save_flags());
 
 	if (regs)
-		return_to_irqs_enabled = interrupts_enabled(regs);
+		return_to_irqs_enabled = !regs_irqs_disabled(regs);
 
 	/*
 	 * SEA can interrupt SError, mask it and describe this as an NMI so
diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c
index c60a4a90c6a5..5497df05dd1a 100644
--- a/arch/arm64/kernel/debug-monitors.c
+++ b/arch/arm64/kernel/debug-monitors.c
@@ -231,7 +231,7 @@ static void send_user_sigtrap(int si_code)
 	if (WARN_ON(!user_mode(regs)))
 		return;
 
-	if (interrupts_enabled(regs))
+	if (!regs_irqs_disabled(regs))
 		local_irq_enable();
 
 	arm64_force_sig_fault(SIGTRAP, si_code, instruction_pointer(regs),
diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index b260ddc4d3e9..c547e70428d3 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -73,7 +73,7 @@ static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)
 {
 	lockdep_assert_irqs_disabled();
 
-	if (interrupts_enabled(regs)) {
+	if (!regs_irqs_disabled(regs)) {
 		if (regs->exit_rcu) {
 			trace_hardirqs_on_prepare();
 			lockdep_hardirqs_on_prepare();
@@ -569,7 +569,7 @@ static void noinstr el1_interrupt(struct pt_regs *regs,
 {
 	write_sysreg(DAIF_PROCCTX_NOIRQ, daif);
 
-	if (IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) && !interrupts_enabled(regs))
+	if (IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) && regs_irqs_disabled(regs))
 		__el1_pnmi(regs, handler);
 	else
 		__el1_irq(regs, handler);
diff --git a/arch/arm64/kernel/sdei.c b/arch/arm64/kernel/sdei.c
index 255d12f881c2..27a17da635d8 100644
--- a/arch/arm64/kernel/sdei.c
+++ b/arch/arm64/kernel/sdei.c
@@ -247,7 +247,7 @@ unsigned long __kprobes do_sdei_event(struct pt_regs *regs,
 	 * If we interrupted the kernel with interrupts masked, we always go
 	 * back to wherever we came from.
 	 */
-	if (mode == kernel_mode && !interrupts_enabled(regs))
+	if (mode == kernel_mode && regs_irqs_disabled(regs))
 		return SDEI_EV_HANDLED;
 
 	/*
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index ce87205e3e82..5c832c436bd8 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -932,7 +932,7 @@ static void __gic_handle_irq_from_irqsoff(struct pt_regs *regs)
 
 static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 {
-	if (unlikely(gic_supports_nmi() && !interrupts_enabled(regs)))
+	if (unlikely(gic_supports_nmi() && regs_irqs_disabled(regs)))
 		__gic_handle_irq_from_irqsoff(regs);
 	else
 		__gic_handle_irq_from_irqson(regs);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825846.1240231 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFX-0002wo-H4; Fri, 25 Oct 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 825846.1240231; Fri, 25 Oct 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 1t4HFX-0002w2-9I; Fri, 25 Oct 2024 10:08:55 +0000
Received: by outflank-mailman (input) for mailman id 825846;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFW-0000tn-Bo
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:54 +0000
Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1e522168-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:48 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.17])
 by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XZdkr6FBHz20qdN;
 Fri, 25 Oct 2024 18:07:48 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id B7E6D1A0188;
 Fri, 25 Oct 2024 18:08:42 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:41 +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: 1e522168-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 07/19] arm64: entry: Call arm64_preempt_schedule_irq() only if irqs enabled
Date: Fri, 25 Oct 2024 18:06:48 +0800
Message-ID: <20241025100700.3714552-8-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Only if irqs are enabled when the interrupt trapped, there may be
a chance to reschedule after the interrupt has been handled, so move
arm64_preempt_schedule_irq() into regs_irqs_disabled() check false
if block.

As Mark pointed out, this change will have the following key impact:

    "We will not preempt when taking interrupts from a region of kernel
    code where IRQs are enabled but RCU is not watching, matching the
    behaviour of the generic entry code.

    This has the potential to introduce livelock if we can ever have a
    screaming interrupt in such a region, so we'll need to go figure out
    whether that's actually a problem.

    Having this as a separate patch will make it easier to test/bisect
    for that specifically."

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index e0380812d71e..b57f6dc66115 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -114,8 +114,6 @@ static void __sched arm64_preempt_schedule_irq(void)
 static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 					irqentry_state_t state)
 {
-	arm64_preempt_schedule_irq();
-
 	mte_check_tfsr_exit();
 
 	lockdep_assert_irqs_disabled();
@@ -129,6 +127,8 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 			return;
 		}
 
+		arm64_preempt_schedule_irq();
+
 		trace_hardirqs_on();
 	} else {
 		if (state.exit_rcu)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825847.1240238 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFY-0003FH-Sh; Fri, 25 Oct 2024 10:08:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825847.1240238; Fri, 25 Oct 2024 10:08: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 1t4HFY-0003Eb-LS; Fri, 25 Oct 2024 10:08:56 +0000
Received: by outflank-mailman (input) for mailman id 825847;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFW-0000tn-VE
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:54 +0000
Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 218dac39-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:52 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.17])
 by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4XZdfx13mZz1HLR8;
 Fri, 25 Oct 2024 18:04:25 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 357351A0188;
 Fri, 25 Oct 2024 18:08:48 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:46 +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: 218dac39-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 11/19] arm64: entry: Extract raw_irqentry_exit_cond_resched() function
Date: Fri, 25 Oct 2024 18:06:52 +0800
Message-ID: <20241025100700.3714552-12-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Extract the arm64 resched logic code to
raw_irqentry_exit_cond_resched() function, which makes the
code more clear when switch to generic entry.

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/include/asm/preempt.h |  1 +
 arch/arm64/kernel/entry-common.c | 17 ++++++++++-------
 2 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/arch/arm64/include/asm/preempt.h b/arch/arm64/include/asm/preempt.h
index 0159b625cc7f..d0f93385bd85 100644
--- a/arch/arm64/include/asm/preempt.h
+++ b/arch/arm64/include/asm/preempt.h
@@ -85,6 +85,7 @@ static inline bool should_resched(int preempt_offset)
 void preempt_schedule(void);
 void preempt_schedule_notrace(void);
 
+void raw_irqentry_exit_cond_resched(void);
 #ifdef CONFIG_PREEMPT_DYNAMIC
 
 DECLARE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 58d660878c09..5b7df53cfcf6 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -95,6 +95,14 @@ static inline bool arm64_irqentry_exit_need_resched(void)
 	return true;
 }
 
+void raw_irqentry_exit_cond_resched(void)
+{
+	if (!preempt_count()) {
+		if (need_resched() && arm64_irqentry_exit_need_resched())
+			preempt_schedule_irq();
+	}
+}
+
 /*
  * Handle IRQ/context state management when exiting to kernel mode.
  * After this function returns it is not safe to call regular kernel code,
@@ -119,13 +127,8 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 			return;
 		}
 
-		if (IS_ENABLED(CONFIG_PREEMPTION)) {
-			if (!preempt_count()) {
-				if (need_resched() &&
-				    arm64_irqentry_exit_need_resched())
-					preempt_schedule_irq();
-			}
-		}
+		if (IS_ENABLED(CONFIG_PREEMPTION))
+			raw_irqentry_exit_cond_resched();
 
 		trace_hardirqs_on();
 	} else {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825848.1240245 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFZ-0003Lg-I2; Fri, 25 Oct 2024 10:08:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825848.1240245; Fri, 25 Oct 2024 10:08: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 1t4HFZ-0003KH-4a; Fri, 25 Oct 2024 10:08:57 +0000
Received: by outflank-mailman (input) for mailman id 825848;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFX-0000tn-Hr
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:55 +0000
Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1f83c448-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:52 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.105])
 by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4XZdjh6T3TzpX51;
 Fri, 25 Oct 2024 18:06:48 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 74D8E14011B;
 Fri, 25 Oct 2024 18:08:45 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:43 +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: 1f83c448-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 09/19] arm64: entry: Use preempt_count() and need_resched() helper
Date: Fri, 25 Oct 2024 18:06:50 +0800
Message-ID: <20241025100700.3714552-10-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

The "READ_ONCE(current_thread_info()->preempt_count = 0" is equivalent
to "preempt_count() == 0 && need_resched()", so use these helpers to
replace it, which will make it more clear when switch to generic entry.

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index a3414fb599fa..3ea3ab32d232 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -74,14 +74,6 @@ static inline bool arm64_irqentry_exit_need_resched(void)
 	if (!need_irq_preemption())
 		return false;
 
-	/*
-	 * Note: thread_info::preempt_count includes both thread_info::count
-	 * and thread_info::need_resched, and is not equivalent to
-	 * preempt_count().
-	 */
-	if (READ_ONCE(current_thread_info()->preempt_count) != 0)
-		return false;
-
 	/*
 	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
 	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
@@ -129,8 +121,10 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 			return;
 		}
 
-		if (arm64_irqentry_exit_need_resched())
-			preempt_schedule_irq();
+		if (!preempt_count()) {
+			if (need_resched() && arm64_irqentry_exit_need_resched())
+				preempt_schedule_irq();
+		}
 
 		trace_hardirqs_on();
 	} else {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:08:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:08:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825849.1240253 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFa-0003cP-OI; Fri, 25 Oct 2024 10:08:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825849.1240253; Fri, 25 Oct 2024 10:08: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 1t4HFa-0003ZK-AA; Fri, 25 Oct 2024 10:08:58 +0000
Received: by outflank-mailman (input) for mailman id 825849;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFY-0000tn-IK
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:56 +0000
Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 20c9c2bd-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:54 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.234])
 by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4XZdkw6p65z20qy6;
 Fri, 25 Oct 2024 18:07:52 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id CD2451401F1;
 Fri, 25 Oct 2024 18:08:46 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:45 +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: 20c9c2bd-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 10/19] arm64: entry: preempt_schedule_irq() only if PREEMPTION enabled
Date: Fri, 25 Oct 2024 18:06:51 +0800
Message-ID: <20241025100700.3714552-11-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Whether PREEMPT_DYNAMIC enabled or not, PREEMPTION should
be enabled to allow reschedule after an interrupt.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 3ea3ab32d232..58d660878c09 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -65,8 +65,6 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
 #define need_irq_preemption() \
 	(static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
-#else
-#define need_irq_preemption()	(IS_ENABLED(CONFIG_PREEMPTION))
 #endif
 
 static inline bool arm64_irqentry_exit_need_resched(void)
@@ -121,9 +119,12 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 			return;
 		}
 
-		if (!preempt_count()) {
-			if (need_resched() && arm64_irqentry_exit_need_resched())
-				preempt_schedule_irq();
+		if (IS_ENABLED(CONFIG_PREEMPTION)) {
+			if (!preempt_count()) {
+				if (need_resched() &&
+				    arm64_irqentry_exit_need_resched())
+					preempt_schedule_irq();
+			}
 		}
 
 		trace_hardirqs_on();
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:09:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:09:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825850.1240269 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFd-0004Hq-CT; Fri, 25 Oct 2024 10:09:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825850.1240269; Fri, 25 Oct 2024 10: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 1t4HFc-0004Em-Ow; Fri, 25 Oct 2024 10:09:00 +0000
Received: by outflank-mailman (input) for mailman id 825850;
 Fri, 25 Oct 2024 10:08: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFb-00014t-BY
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:08:59 +0000
Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 244f98a3-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:08:56 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.162.254])
 by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4XZdkJ0VWlzyTRq;
 Fri, 25 Oct 2024 18:07:20 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id AB3BF18010F;
 Fri, 25 Oct 2024 18:08:53 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:52 +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: 244f98a3-92b9-11ef-a0bf-8be0dac302b0
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 15/19] entry: Add arch irqentry_exit_need_resched() for arm64
Date: Fri, 25 Oct 2024 18:06:56 +0800
Message-ID: <20241025100700.3714552-16-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

As the front patch 6 ~ 13 did, the arm64_preempt_schedule_irq() is
same with the irq preempt schedule code of generic entry besides those
architecture-related logic called arm64_irqentry_exit_need_resched().

So add arch irqentry_exit_need_resched() to support architecture-related
need_resched() check logic, which do not affect existing architectures
that use generic entry, but support arm64 to use generic irq entry.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Suggested-by: Kevin Brodsky <kevin.brodsky@arm.com>
Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 kernel/entry/common.c | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/kernel/entry/common.c b/kernel/entry/common.c
index 2ad132c7be05..0cc117b658b8 100644
--- a/kernel/entry/common.c
+++ b/kernel/entry/common.c
@@ -143,6 +143,20 @@ noinstr irqentry_state_t irqentry_enter(struct pt_regs *regs)
 	return ret;
 }
 
+/**
+ * arch_irqentry_exit_need_resched - Architecture specific need resched function
+ *
+ * Invoked from raw_irqentry_exit_cond_resched() to check if need resched.
+ * Defaults return true.
+ *
+ * The main purpose is to permit arch to skip preempt a task from an IRQ.
+ */
+static inline bool arch_irqentry_exit_need_resched(void);
+
+#ifndef arch_irqentry_exit_need_resched
+static inline bool arch_irqentry_exit_need_resched(void) { return true; }
+#endif
+
 void raw_irqentry_exit_cond_resched(void)
 {
 	if (!preempt_count()) {
@@ -150,7 +164,7 @@ void raw_irqentry_exit_cond_resched(void)
 		rcu_irq_exit_check_preempt();
 		if (IS_ENABLED(CONFIG_DEBUG_ENTRY))
 			WARN_ON_ONCE(!on_thread_stack());
-		if (need_resched())
+		if (need_resched() && arch_irqentry_exit_need_resched())
 			preempt_schedule_irq();
 	}
 }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:09:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:09:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825851.1240276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFe-0004dX-Fd; Fri, 25 Oct 2024 10:09:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825851.1240276; Fri, 25 Oct 2024 10:09: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 1t4HFe-0004cA-7Y; Fri, 25 Oct 2024 10:09:02 +0000
Received: by outflank-mailman (input) for mailman id 825851;
 Fri, 25 Oct 2024 10:09: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFc-0000tn-EL
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:09:00 +0000
Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21cdbb47-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:57 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.162.254])
 by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4XZdjd2lHyz1T7q6;
 Fri, 25 Oct 2024 18:06:45 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 9417D18010F;
 Fri, 25 Oct 2024 18:08:49 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08: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: 21cdbb47-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 12/19] arm64: entry: Check dynamic key ahead
Date: Fri, 25 Oct 2024 18:06:53 +0800
Message-ID: <20241025100700.3714552-13-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Check dynamic key ahead in raw_irqentry_exit_cond_resched(), which
will make arm64_irqentry_exit_need_resched() all about arch-specific.

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/entry-common.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 5b7df53cfcf6..3b110dcf4fa3 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -63,15 +63,10 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 
 #ifdef CONFIG_PREEMPT_DYNAMIC
 DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
-#define need_irq_preemption() \
-	(static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
 #endif
 
 static inline bool arm64_irqentry_exit_need_resched(void)
 {
-	if (!need_irq_preemption())
-		return false;
-
 	/*
 	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
 	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
@@ -97,6 +92,11 @@ static inline bool arm64_irqentry_exit_need_resched(void)
 
 void raw_irqentry_exit_cond_resched(void)
 {
+#ifdef CONFIG_PREEMPT_DYNAMIC
+	if (!static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
+		return;
+#endif
+
 	if (!preempt_count()) {
 		if (need_resched() && arm64_irqentry_exit_need_resched())
 			preempt_schedule_irq();
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:09:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:09:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825852.1240280 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFf-0004kI-2k; Fri, 25 Oct 2024 10:09:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825852.1240280; Fri, 25 Oct 2024 10:09: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 1t4HFe-0004ig-P2; Fri, 25 Oct 2024 10:09:02 +0000
Received: by outflank-mailman (input) for mailman id 825852;
 Fri, 25 Oct 2024 10:09: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFc-00014t-LX
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:09:00 +0000
Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 228fd744-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:08:58 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.194])
 by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4XZdjf346yz10McY;
 Fri, 25 Oct 2024 18:06:46 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id E7F3D1400E3;
 Fri, 25 Oct 2024 18:08:50 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:49 +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: 228fd744-92b9-11ef-a0bf-8be0dac302b0
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 13/19] arm64: entry: Check dynamic resched when PREEMPT_DYNAMIC enabled
Date: Fri, 25 Oct 2024 18:06:54 +0800
Message-ID: <20241025100700.3714552-14-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Check dynamic resched alone when PREEMPT_DYNAMIC enabled.

No functional changes.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/include/asm/preempt.h |  3 +++
 arch/arm64/kernel/entry-common.c | 21 +++++++++++----------
 2 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/include/asm/preempt.h b/arch/arm64/include/asm/preempt.h
index d0f93385bd85..0f0ba250efe8 100644
--- a/arch/arm64/include/asm/preempt.h
+++ b/arch/arm64/include/asm/preempt.h
@@ -93,11 +93,14 @@ void dynamic_preempt_schedule(void);
 #define __preempt_schedule()		dynamic_preempt_schedule()
 void dynamic_preempt_schedule_notrace(void);
 #define __preempt_schedule_notrace()	dynamic_preempt_schedule_notrace()
+void dynamic_irqentry_exit_cond_resched(void);
+#define irqentry_exit_cond_resched()	dynamic_irqentry_exit_cond_resched()
 
 #else /* CONFIG_PREEMPT_DYNAMIC */
 
 #define __preempt_schedule()		preempt_schedule()
 #define __preempt_schedule_notrace()	preempt_schedule_notrace()
+#define irqentry_exit_cond_resched()	raw_irqentry_exit_cond_resched()
 
 #endif /* CONFIG_PREEMPT_DYNAMIC */
 #endif /* CONFIG_PREEMPTION */
diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 3b110dcf4fa3..152216201f84 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -61,10 +61,6 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 	return ret;
 }
 
-#ifdef CONFIG_PREEMPT_DYNAMIC
-DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
-#endif
-
 static inline bool arm64_irqentry_exit_need_resched(void)
 {
 	/*
@@ -92,17 +88,22 @@ static inline bool arm64_irqentry_exit_need_resched(void)
 
 void raw_irqentry_exit_cond_resched(void)
 {
-#ifdef CONFIG_PREEMPT_DYNAMIC
-	if (!static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
-		return;
-#endif
-
 	if (!preempt_count()) {
 		if (need_resched() && arm64_irqentry_exit_need_resched())
 			preempt_schedule_irq();
 	}
 }
 
+#ifdef CONFIG_PREEMPT_DYNAMIC
+DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
+void dynamic_irqentry_exit_cond_resched(void)
+{
+	if (!static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
+		return;
+	raw_irqentry_exit_cond_resched();
+}
+#endif
+
 /*
  * Handle IRQ/context state management when exiting to kernel mode.
  * After this function returns it is not safe to call regular kernel code,
@@ -128,7 +129,7 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 		}
 
 		if (IS_ENABLED(CONFIG_PREEMPTION))
-			raw_irqentry_exit_cond_resched();
+			irqentry_exit_cond_resched();
 
 		trace_hardirqs_on();
 	} else {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:09:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:09:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825856.1240293 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFg-0005FY-Qx; Fri, 25 Oct 2024 10:09:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825856.1240293; Fri, 25 Oct 2024 10:09: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 1t4HFg-0005Bv-DM; Fri, 25 Oct 2024 10:09:04 +0000
Received: by outflank-mailman (input) for mailman id 825856;
 Fri, 25 Oct 2024 10:09: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFe-00014t-Fx
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:09:02 +0000
Received: from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 26ba9bc5-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:09:01 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.163])
 by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4XZdmK4NFSz1ynJN;
 Fri, 25 Oct 2024 18:09:05 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id E3CE1180043;
 Fri, 25 Oct 2024 18:08:57 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08: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: 26ba9bc5-92b9-11ef-a0bf-8be0dac302b0
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 18/19] arm64/ptrace: Split report_syscall() into separate enter and exit functions
Date: Fri, 25 Oct 2024 18:06:59 +0800
Message-ID: <20241025100700.3714552-19-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Split report_syscall() to two separate enter and exit
functions. So it will be more clear when arm64 switch to
generic entry.

No functional changes.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/kernel/ptrace.c | 29 ++++++++++++++++++++---------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index 6c1dcfe6d25a..6ea303ab9e22 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -2290,7 +2290,7 @@ enum ptrace_syscall_dir {
 	PTRACE_SYSCALL_EXIT,
 };
 
-static void report_syscall(struct pt_regs *regs, enum ptrace_syscall_dir dir)
+static void report_syscall_enter(struct pt_regs *regs)
 {
 	int regno;
 	unsigned long saved_reg;
@@ -2313,13 +2313,24 @@ static void report_syscall(struct pt_regs *regs, enum ptrace_syscall_dir dir)
 	 */
 	regno = (is_compat_task() ? 12 : 7);
 	saved_reg = regs->regs[regno];
-	regs->regs[regno] = dir;
+	regs->regs[regno] = PTRACE_SYSCALL_ENTER;
 
-	if (dir == PTRACE_SYSCALL_ENTER) {
-		if (ptrace_report_syscall_entry(regs))
-			forget_syscall(regs);
-		regs->regs[regno] = saved_reg;
-	} else if (!test_thread_flag(TIF_SINGLESTEP)) {
+	if (ptrace_report_syscall_entry(regs))
+		forget_syscall(regs);
+	regs->regs[regno] = saved_reg;
+}
+
+static void report_syscall_exit(struct pt_regs *regs)
+{
+	int regno;
+	unsigned long saved_reg;
+
+	/* See comment for report_syscall_enter() */
+	regno = (is_compat_task() ? 12 : 7);
+	saved_reg = regs->regs[regno];
+	regs->regs[regno] = PTRACE_SYSCALL_EXIT;
+
+	if (!test_thread_flag(TIF_SINGLESTEP)) {
 		ptrace_report_syscall_exit(regs, 0);
 		regs->regs[regno] = saved_reg;
 	} else {
@@ -2339,7 +2350,7 @@ int syscall_trace_enter(struct pt_regs *regs)
 	unsigned long flags = read_thread_flags();
 
 	if (flags & (_TIF_SYSCALL_EMU | _TIF_SYSCALL_TRACE)) {
-		report_syscall(regs, PTRACE_SYSCALL_ENTER);
+		report_syscall_enter(regs);
 		if (flags & _TIF_SYSCALL_EMU)
 			return NO_SYSCALL;
 	}
@@ -2367,7 +2378,7 @@ void syscall_trace_exit(struct pt_regs *regs)
 		trace_sys_exit(regs, syscall_get_return_value(current, regs));
 
 	if (flags & (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP))
-		report_syscall(regs, PTRACE_SYSCALL_EXIT);
+		report_syscall_exit(regs);
 
 	rseq_syscall(regs);
 }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:09:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:09:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825862.1240310 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HFk-0006Cs-1R; Fri, 25 Oct 2024 10:09:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825862.1240310; Fri, 25 Oct 2024 10: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 1t4HFj-0006CH-Rr; Fri, 25 Oct 2024 10:09:07 +0000
Received: by outflank-mailman (input) for mailman id 825862;
 Fri, 25 Oct 2024 10:09: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFi-00014t-EZ
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:09:06 +0000
Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 268e3d55-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:09:03 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.252])
 by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4XZdjm2S6Hz1T8p8;
 Fri, 25 Oct 2024 18:06:52 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 8ADF81800A5;
 Fri, 25 Oct 2024 18:08:56 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:54 +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: 268e3d55-92b9-11ef-a0bf-8be0dac302b0
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 17/19] entry: Add syscall arch functions to use generic syscall for arm64
Date: Fri, 25 Oct 2024 18:06:58 +0800
Message-ID: <20241025100700.3714552-18-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Add some syscall arch functions to support arm64 to use generic syscall
code, which do not affect existing architectures that use generic entry:

 - arch_pre/post_report_syscall_entry/exit().

Also make syscall_exit_work() not static and move report_single_step() to
thread_info.h, which can be used by arm64 later.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Suggested-by: Kevin Brodsky <kevin.brodsky@arm.com>
Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 include/linux/entry-common.h  |   1 +
 include/linux/thread_info.h   |  13 +++++
 kernel/entry/syscall-common.c | 100 ++++++++++++++++++++++++++++++----
 3 files changed, 103 insertions(+), 11 deletions(-)

diff --git a/include/linux/entry-common.h b/include/linux/entry-common.h
index 1ae3143d4b12..39a2d41af05e 100644
--- a/include/linux/entry-common.h
+++ b/include/linux/entry-common.h
@@ -178,4 +178,5 @@ void syscall_exit_to_user_mode_work(struct pt_regs *regs);
  */
 void syscall_exit_to_user_mode(struct pt_regs *regs);
 
+void syscall_exit_work(struct pt_regs *regs, unsigned long work);
 #endif
diff --git a/include/linux/thread_info.h b/include/linux/thread_info.h
index 9ea0b28068f4..062de9666ef3 100644
--- a/include/linux/thread_info.h
+++ b/include/linux/thread_info.h
@@ -55,6 +55,19 @@ enum syscall_work_bit {
 #define SYSCALL_WORK_SYSCALL_AUDIT	BIT(SYSCALL_WORK_BIT_SYSCALL_AUDIT)
 #define SYSCALL_WORK_SYSCALL_USER_DISPATCH BIT(SYSCALL_WORK_BIT_SYSCALL_USER_DISPATCH)
 #define SYSCALL_WORK_SYSCALL_EXIT_TRAP	BIT(SYSCALL_WORK_BIT_SYSCALL_EXIT_TRAP)
+
+/*
+ * If SYSCALL_EMU is set, then the only reason to report is when
+ * SINGLESTEP is set (i.e. PTRACE_SYSEMU_SINGLESTEP).  This syscall
+ * instruction has been already reported in syscall_enter_from_user_mode().
+ */
+static inline bool report_single_step(unsigned long work)
+{
+	if (work & SYSCALL_WORK_SYSCALL_EMU)
+		return false;
+
+	return work & SYSCALL_WORK_SYSCALL_EXIT_TRAP;
+}
 #endif
 
 #include <asm/thread_info.h>
diff --git a/kernel/entry/syscall-common.c b/kernel/entry/syscall-common.c
index 0eb036986ad4..73f87d09e04e 100644
--- a/kernel/entry/syscall-common.c
+++ b/kernel/entry/syscall-common.c
@@ -17,6 +17,49 @@ static inline void syscall_enter_audit(struct pt_regs *regs, long syscall)
 	}
 }
 
+/**
+ * arch_pre_report_syscall_entry - Architecture specific work before
+ *				   report_syscall_entry().
+ *
+ * Invoked from syscall_trace_enter() to prepare for ptrace_report_syscall_entry().
+ * Defaults to NOP.
+ *
+ * The main purpose is for saving a general purpose register clobbered
+ * in the tracee.
+ */
+static inline unsigned long arch_pre_report_syscall_entry(struct pt_regs *regs);
+
+#ifndef arch_pre_report_syscall_entry
+static inline unsigned long arch_pre_report_syscall_entry(struct pt_regs *regs)
+{
+	return 0;
+}
+#endif
+
+/**
+ * arch_post_report_syscall_entry - Architecture specific work after
+ *			            report_syscall_entry().
+ *
+ * Invoked from syscall_trace_enter() after calling ptrace_report_syscall_entry().
+ * Defaults to NOP.
+ *
+ * The main purpose is for restoring a general purpose register clobbered
+ * in the trace saved in arch_pre_report_syscall_entry(), also it can
+ * do something arch-specific according to the return value of
+ * ptrace_report_syscall_entry().
+ */
+static inline void arch_post_report_syscall_entry(struct pt_regs *regs,
+						  unsigned long saved_reg,
+						  long ret);
+
+#ifndef arch_post_report_syscall_entry
+static inline void arch_post_report_syscall_entry(struct pt_regs *regs,
+						  unsigned long saved_reg,
+						  long ret)
+{
+}
+#endif
+
 long syscall_trace_enter(struct pt_regs *regs, long syscall,
 				unsigned long work)
 {
@@ -34,7 +77,9 @@ long syscall_trace_enter(struct pt_regs *regs, long syscall,
 
 	/* Handle ptrace */
 	if (work & (SYSCALL_WORK_SYSCALL_TRACE | SYSCALL_WORK_SYSCALL_EMU)) {
+		unsigned long saved_reg = arch_pre_report_syscall_entry(regs);
 		ret = ptrace_report_syscall_entry(regs);
+		arch_post_report_syscall_entry(regs, saved_reg, ret);
 		if (ret || (work & SYSCALL_WORK_SYSCALL_EMU))
 			return -1L;
 	}
@@ -71,20 +116,50 @@ noinstr void syscall_enter_from_user_mode_prepare(struct pt_regs *regs)
 	instrumentation_end();
 }
 
-/*
- * If SYSCALL_EMU is set, then the only reason to report is when
- * SINGLESTEP is set (i.e. PTRACE_SYSEMU_SINGLESTEP).  This syscall
- * instruction has been already reported in syscall_enter_from_user_mode().
+/**
+ * arch_pre_report_syscall_exit - Architecture specific work before
+ *				  report_syscall_exit().
+ *
+ * Invoked from syscall_exit_work() to prepare for ptrace_report_syscall_exit().
+ * Defaults to NOP.
+ *
+ * The main purpose is for saving a general purpose register clobbered
+ * in the trace.
  */
-static inline bool report_single_step(unsigned long work)
-{
-	if (work & SYSCALL_WORK_SYSCALL_EMU)
-		return false;
+static inline unsigned long arch_pre_report_syscall_exit(struct pt_regs *regs,
+							     unsigned long work);
 
-	return work & SYSCALL_WORK_SYSCALL_EXIT_TRAP;
+#ifndef arch_pre_report_syscall_exit
+static inline unsigned long arch_pre_report_syscall_exit(struct pt_regs *regs,
+							     unsigned long work)
+{
+	return 0;
 }
+#endif
+
+/**
+ * arch_post_report_syscall_exit - Architecture specific work after
+ *			           report_syscall_exit().
+ *
+ * Invoked from syscall_exit_work() after calling ptrace_report_syscall_exit().
+ * Defaults to NOP.
+ *
+ * The main purpose is for restoring a general purpose register clobbered
+ * in the trace saved in arch_pre_report_syscall_exit().
+ */
+static inline void arch_post_report_syscall_exit(struct pt_regs *regs,
+						 unsigned long saved_reg,
+						 unsigned long work);
+
+#ifndef arch_post_report_syscall_exit
+static inline void arch_post_report_syscall_exit(struct pt_regs *regs,
+						 unsigned long saved_reg,
+						 unsigned long work)
+{
+}
+#endif
 
-static void syscall_exit_work(struct pt_regs *regs, unsigned long work)
+void syscall_exit_work(struct pt_regs *regs, unsigned long work)
 {
 	bool step;
 
@@ -107,8 +182,11 @@ static void syscall_exit_work(struct pt_regs *regs, unsigned long work)
 		trace_sys_exit(regs, syscall_get_return_value(current, regs));
 
 	step = report_single_step(work);
-	if (step || work & SYSCALL_WORK_SYSCALL_TRACE)
+	if (step || work & SYSCALL_WORK_SYSCALL_TRACE) {
+		unsigned long saved_reg = arch_pre_report_syscall_exit(regs, work);
 		ptrace_report_syscall_exit(regs, step);
+		arch_post_report_syscall_exit(regs, saved_reg, work);
+	}
 }
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:13:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:13:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825898.1240320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HJq-0003TX-1x; Fri, 25 Oct 2024 10:13:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825898.1240320; Fri, 25 Oct 2024 10: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 1t4HJp-0003TQ-Vi; Fri, 25 Oct 2024 10:13:21 +0000
Received: by outflank-mailman (input) for mailman id 825898;
 Fri, 25 Oct 2024 10:13: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=Y8QR=RV=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t4HJo-0003Rh-Ar
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:13:20 +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 c204acd4-92b9-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 12:13:19 +0200 (CEST)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a99f3a5a44cso210312966b.3
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 03:13:19 -0700 (PDT)
Received: from localhost (0545937c.skybroadband.com. [5.69.147.124])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a085504sm52026566b.202.2024.10.25.03.13.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 25 Oct 2024 03:13:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c204acd4-92b9-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729851199; x=1730455999; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=KeVTMQsHMEwhgjJxC66PEy7GBuNP7yDgTFYVXaPQAWU=;
        b=VnuHh4PA/92J+gWyrPWvEveD0+L7XofylW8Pko4Oqt0Dj9bGfbFDgyykRgwplabxnx
         CLafSSKKPnvGqFGqT1ntjViCyVJ0V0J3NiEeypTlVXX2MBU2HUiGmUvFOtIW0ISeRhMJ
         bfqB1Ezcer1ZvredNIOrxnBVT9MJ6hCQmkQQQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729851199; x=1730455999;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=KeVTMQsHMEwhgjJxC66PEy7GBuNP7yDgTFYVXaPQAWU=;
        b=vdFayvMifJAfyPl5maVaNljYL1ykeeypSwp60S5GXUikhJtneljtxm9MWuRuW0WRIA
         UPkWllc7NEItFzu78vSznKvV/Tg5jmczcVVkBBys6htiCKz+TCv5f53Z8geJCsFl6lPw
         JJ73Bh1IOBi3tQNsDfGP6bwVUPywRdal02vleMRw2nJ0IM+8kXe80YSX+kybN5XhYhSJ
         uDYukVoZ3X727e1YNvgKZ0TaMn9tpYQFP05y4mLMr+h6xgUOCpuTGB9cx3yzPsS35yYi
         xIYEuEOHOCWrXFOeNesEWXH9anSdwfidx/9Qo/qx36qMItBsv32DsES+ZXmsomU77glb
         +r9g==
X-Forwarded-Encrypted: i=1; AJvYcCUq89LXNO/3QWY0RkoTwrhkfVTs6m2mgQLNlaAAQnzXWYAV8H3FQd9sLwd0Ty9UXk9rJE5h607Govg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxrJ5eKbkMFEYNh4WUDTFEUZDKY34zt7P04BEH9ZukRNte0TGls
	cFQFg6hyXB/O1zfYKdUV5/UxP0LskSte34904jwtnMbjf5jSFCnngL4gsOQadcg=
X-Google-Smtp-Source: AGHT+IEw1plwCaPHDa2NG+j0GOFWn7wHxfcJqj6KaGebr/J7vAAkHBzp0mM1vBoYA0PbWaV76EqRyA==
X-Received: by 2002:a17:907:6e8f:b0:a99:e67a:d12d with SMTP id a640c23a62f3a-a9ad2814c0cmr458055666b.48.1729851198643;
        Fri, 25 Oct 2024 03:13:18 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Fri, 25 Oct 2024 11:13:16 +0100
Message-Id: <D54T2KXTWQ2O.9S4HEKD2X948@cloud.com>
Cc: "Jan Beulich" <JBeulich@suse.com>, =?utf-8?q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Subject: Re: [PATCH 0/5] x86/ucode: Minor cleanup
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241024132205.987042-1-andrew.cooper3@citrix.com>

On Thu Oct 24, 2024 at 2:22 PM BST, Andrew Cooper wrote:
> Misc cleanup without functional change.  Mostly to improve clarity.
>
> Andrew Cooper (5):
>   x86/ucode: Rename hypercall-context functions
>   x86/ucode: Drop the parse_blob() wrapper
>   x86/ucode: Rename the cpu_request_microcode() hook to parse()
>   x86/ucode: Rename the apply_microcode() hook to load()
>   x86/ucode: Drop the match_reg[] field from AMD's microcode_patch
>
>  xen/arch/x86/cpu/microcode/amd.c     | 11 ++---
>  xen/arch/x86/cpu/microcode/core.c    | 72 +++++++++++++++-------------
>  xen/arch/x86/cpu/microcode/intel.c   | 12 ++---
>  xen/arch/x86/cpu/microcode/private.h |  9 ++--
>  xen/arch/x86/include/asm/microcode.h |  4 +-
>  xen/arch/x86/platform_hypercall.c    |  6 +--
>  6 files changed, 59 insertions(+), 55 deletions(-)
>
>
> base-commit: a974725a87a1afc8056b41c56dfe7fe272a7169c

IMO, this change warrants renaming the parent directory to ucode and
microcode.h to ucode.h.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:17:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:17:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825929.1240342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HO8-0005fb-1F; Fri, 25 Oct 2024 10:17:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825929.1240342; Fri, 25 Oct 2024 10:17: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 1t4HO7-0005fU-U9; Fri, 25 Oct 2024 10:17:47 +0000
Received: by outflank-mailman (input) for mailman id 825929;
 Fri, 25 Oct 2024 10:17: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFg-0000tn-Bu
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:09:04 +0000
Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 25deb8f1-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:09:01 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.252])
 by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4XZdjC6xFvzdkNq;
 Fri, 25 Oct 2024 18:06:23 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 2F0251800A5;
 Fri, 25 Oct 2024 18:08:55 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:53 +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: 25deb8f1-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 16/19] arm64: entry: Switch to generic IRQ entry
Date: Fri, 25 Oct 2024 18:06:57 +0800
Message-ID: <20241025100700.3714552-17-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Currently, x86, Riscv, Loongarch use the generic entry. Convert arm64
to use the generic entry infrastructure from kernel/entry/*.
The generic entry makes maintainers' work easier and codes
more elegant.

Switch arm64 to generic IRQ entry first, which removed duplicate 100+ LOC,
the next patch will switch arm64 to generic entry completely. Switch to
generic entry in two steps according to Mark's suggestion will make it
easier to review.

The changes are below:
 - Remove *enter_from/exit_to_kernel_mode(), and wrap with generic
   irqentry_enter/exit(). Also remove *enter_from/exit_to_user_mode(),
   and wrap with generic enter_from/exit_to_user_mode(). The front
   patch 1 ~ 5 try to make it easier to make this switch. And the patch
   14 split the generic irq entry and generic syscall to make this patch
   more single and concentrated in switching to generic IRQ entry.

 - Remove arm64_enter/exit_nmi() and use generic irqentry_nmi_enter/exit().

 - Remove PREEMPT_DYNAMIC code, as generic entry do the same thing
   if arm64 implement arch_irqentry_exit_need_resched(). The front patch
   6 ~ 13 and patch 15 try to make it closer to the generic implementation.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/Kconfig                    |   1 +
 arch/arm64/include/asm/entry-common.h |  64 ++++++
 arch/arm64/include/asm/preempt.h      |   6 -
 arch/arm64/include/asm/ptrace.h       |   7 -
 arch/arm64/kernel/entry-common.c      | 303 ++++++--------------------
 arch/arm64/kernel/signal.c            |   3 +-
 6 files changed, 130 insertions(+), 254 deletions(-)
 create mode 100644 arch/arm64/include/asm/entry-common.h

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 232dcade2783..4545017cfd01 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -146,6 +146,7 @@ config ARM64
 	select GENERIC_CPU_DEVICES
 	select GENERIC_CPU_VULNERABILITIES
 	select GENERIC_EARLY_IOREMAP
+	select GENERIC_IRQ_ENTRY
 	select GENERIC_IDLE_POLL_SETUP
 	select GENERIC_IOREMAP
 	select GENERIC_IRQ_IPI
diff --git a/arch/arm64/include/asm/entry-common.h b/arch/arm64/include/asm/entry-common.h
new file mode 100644
index 000000000000..1cc9d966a6c3
--- /dev/null
+++ b/arch/arm64/include/asm/entry-common.h
@@ -0,0 +1,64 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef _ASM_ARM64_ENTRY_COMMON_H
+#define _ASM_ARM64_ENTRY_COMMON_H
+
+#include <linux/thread_info.h>
+
+#include <asm/daifflags.h>
+#include <asm/fpsimd.h>
+#include <asm/mte.h>
+#include <asm/stacktrace.h>
+
+#define ARCH_EXIT_TO_USER_MODE_WORK (_TIF_MTE_ASYNC_FAULT | _TIF_FOREIGN_FPSTATE)
+
+static __always_inline void arch_exit_to_user_mode_work(struct pt_regs *regs,
+							unsigned long ti_work)
+{
+	if (ti_work & _TIF_MTE_ASYNC_FAULT) {
+		clear_thread_flag(TIF_MTE_ASYNC_FAULT);
+		send_sig_fault(SIGSEGV, SEGV_MTEAERR, (void __user *)NULL, current);
+	}
+
+	if (ti_work & _TIF_FOREIGN_FPSTATE)
+		fpsimd_restore_current_state();
+}
+
+#define arch_exit_to_user_mode_work arch_exit_to_user_mode_work
+
+static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
+						  unsigned long ti_work)
+{
+	local_daif_mask();
+}
+
+#define arch_exit_to_user_mode_prepare arch_exit_to_user_mode_prepare
+
+static inline bool arch_irqentry_exit_need_resched(void)
+{
+	/*
+	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
+	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
+	 * using gic_arch_enable_irqs() for normal IRQs. If anything is set in
+	 * DAIF we must have handled an NMI, so skip preemption.
+	 */
+	if (system_uses_irq_prio_masking() && read_sysreg(daif))
+		return false;
+
+	/*
+	 * Preempting a task from an IRQ means we leave copies of PSTATE
+	 * on the stack. cpufeature's enable calls may modify PSTATE, but
+	 * resuming one of these preempted tasks would undo those changes.
+	 *
+	 * Only allow a task to be preempted once cpufeatures have been
+	 * enabled.
+	 */
+	if (!system_capabilities_finalized())
+		return false;
+
+	return true;
+}
+
+#define arch_irqentry_exit_need_resched arch_irqentry_exit_need_resched
+
+#endif /* _ASM_ARM64_ENTRY_COMMON_H */
diff --git a/arch/arm64/include/asm/preempt.h b/arch/arm64/include/asm/preempt.h
index 0f0ba250efe8..932ea4b62042 100644
--- a/arch/arm64/include/asm/preempt.h
+++ b/arch/arm64/include/asm/preempt.h
@@ -2,7 +2,6 @@
 #ifndef __ASM_PREEMPT_H
 #define __ASM_PREEMPT_H
 
-#include <linux/jump_label.h>
 #include <linux/thread_info.h>
 
 #define PREEMPT_NEED_RESCHED	BIT(32)
@@ -85,22 +84,17 @@ static inline bool should_resched(int preempt_offset)
 void preempt_schedule(void);
 void preempt_schedule_notrace(void);
 
-void raw_irqentry_exit_cond_resched(void);
 #ifdef CONFIG_PREEMPT_DYNAMIC
 
-DECLARE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
 void dynamic_preempt_schedule(void);
 #define __preempt_schedule()		dynamic_preempt_schedule()
 void dynamic_preempt_schedule_notrace(void);
 #define __preempt_schedule_notrace()	dynamic_preempt_schedule_notrace()
-void dynamic_irqentry_exit_cond_resched(void);
-#define irqentry_exit_cond_resched()	dynamic_irqentry_exit_cond_resched()
 
 #else /* CONFIG_PREEMPT_DYNAMIC */
 
 #define __preempt_schedule()		preempt_schedule()
 #define __preempt_schedule_notrace()	preempt_schedule_notrace()
-#define irqentry_exit_cond_resched()	raw_irqentry_exit_cond_resched()
 
 #endif /* CONFIG_PREEMPT_DYNAMIC */
 #endif /* CONFIG_PREEMPTION */
diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
index 5156c0d5fa20..f14c2adc239a 100644
--- a/arch/arm64/include/asm/ptrace.h
+++ b/arch/arm64/include/asm/ptrace.h
@@ -149,13 +149,6 @@ static inline unsigned long pstate_to_compat_psr(const unsigned long pstate)
 	return psr;
 }
 
-typedef struct irqentry_state {
-	union {
-		bool	exit_rcu;
-		bool	lockdep;
-	};
-} irqentry_state_t;
-
 /*
  * This struct defines the way the registers are stored on the stack during an
  * exception. struct user_pt_regs must form a prefix of struct pt_regs.
diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
index 152216201f84..55fee0960fca 100644
--- a/arch/arm64/kernel/entry-common.c
+++ b/arch/arm64/kernel/entry-common.c
@@ -6,6 +6,7 @@
  */
 
 #include <linux/context_tracking.h>
+#include <linux/irq-entry-common.h>
 #include <linux/kasan.h>
 #include <linux/linkage.h>
 #include <linux/lockdep.h>
@@ -38,71 +39,13 @@
  */
 static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
 {
-	irqentry_state_t ret = {
-		.exit_rcu = false,
-	};
-
-	if (!IS_ENABLED(CONFIG_TINY_RCU) && is_idle_task(current)) {
-		lockdep_hardirqs_off(CALLER_ADDR0);
-		ct_irq_enter();
-		trace_hardirqs_off_finish();
-
-		ret.exit_rcu = true;
-		return ret;
-	}
-
-	lockdep_hardirqs_off(CALLER_ADDR0);
-	rcu_irq_enter_check_tick();
-	trace_hardirqs_off_finish();
+	irqentry_state_t state = irqentry_enter(regs);
 
 	mte_check_tfsr_entry();
 	mte_disable_tco_entry(current);
 
-	return ret;
-}
-
-static inline bool arm64_irqentry_exit_need_resched(void)
-{
-	/*
-	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
-	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
-	 * using gic_arch_enable_irqs() for normal IRQs. If anything is set in
-	 * DAIF we must have handled an NMI, so skip preemption.
-	 */
-	if (system_uses_irq_prio_masking() && read_sysreg(daif))
-		return false;
-
-	/*
-	 * Preempting a task from an IRQ means we leave copies of PSTATE
-	 * on the stack. cpufeature's enable calls may modify PSTATE, but
-	 * resuming one of these preempted tasks would undo those changes.
-	 *
-	 * Only allow a task to be preempted once cpufeatures have been
-	 * enabled.
-	 */
-	if (!system_capabilities_finalized())
-		return false;
-
-	return true;
-}
-
-void raw_irqentry_exit_cond_resched(void)
-{
-	if (!preempt_count()) {
-		if (need_resched() && arm64_irqentry_exit_need_resched())
-			preempt_schedule_irq();
-	}
-}
-
-#ifdef CONFIG_PREEMPT_DYNAMIC
-DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
-void dynamic_irqentry_exit_cond_resched(void)
-{
-	if (!static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
-		return;
-	raw_irqentry_exit_cond_resched();
+	return state;
 }
-#endif
 
 /*
  * Handle IRQ/context state management when exiting to kernel mode.
@@ -116,26 +59,7 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
 					irqentry_state_t state)
 {
 	mte_check_tfsr_exit();
-
-	lockdep_assert_irqs_disabled();
-
-	if (!regs_irqs_disabled(regs)) {
-		if (state.exit_rcu) {
-			trace_hardirqs_on_prepare();
-			lockdep_hardirqs_on_prepare();
-			ct_irq_exit();
-			lockdep_hardirqs_on(CALLER_ADDR0);
-			return;
-		}
-
-		if (IS_ENABLED(CONFIG_PREEMPTION))
-			irqentry_exit_cond_resched();
-
-		trace_hardirqs_on();
-	} else {
-		if (state.exit_rcu)
-			ct_irq_exit();
-	}
+	irqentry_exit(regs, state);
 }
 
 /*
@@ -143,127 +67,26 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
  * Before this function is called it is not safe to call regular kernel code,
  * instrumentable code, or any code which may trigger an exception.
  */
-static __always_inline void enter_from_user_mode(struct pt_regs *regs)
+static __always_inline void arm64_enter_from_user_mode(struct pt_regs *regs)
 {
-	lockdep_hardirqs_off(CALLER_ADDR0);
-	CT_WARN_ON(ct_state() != CT_STATE_USER);
-	user_exit_irqoff();
-	trace_hardirqs_off_finish();
+	enter_from_user_mode(regs);
 	mte_disable_tco_entry(current);
 }
 
-/*
- * Handle IRQ/context state management when exiting to user mode.
- * After this function returns it is not safe to call regular kernel code,
- * instrumentable code, or any code which may trigger an exception.
- */
-static __always_inline void __exit_to_user_mode(void)
-{
-	trace_hardirqs_on_prepare();
-	lockdep_hardirqs_on_prepare();
-	user_enter_irqoff();
-	lockdep_hardirqs_on(CALLER_ADDR0);
-}
-
-static void do_notify_resume(struct pt_regs *regs, unsigned long thread_flags)
+static __always_inline void arm64_exit_to_user_mode(struct pt_regs *regs)
 {
-	do {
-		local_irq_enable();
-
-		if (thread_flags & _TIF_NEED_RESCHED)
-			schedule();
-
-		if (thread_flags & _TIF_UPROBE)
-			uprobe_notify_resume(regs);
-
-		if (thread_flags & _TIF_MTE_ASYNC_FAULT) {
-			clear_thread_flag(TIF_MTE_ASYNC_FAULT);
-			send_sig_fault(SIGSEGV, SEGV_MTEAERR,
-				       (void __user *)NULL, current);
-		}
-
-		if (thread_flags & (_TIF_SIGPENDING | _TIF_NOTIFY_SIGNAL))
-			do_signal(regs);
-
-		if (thread_flags & _TIF_NOTIFY_RESUME)
-			resume_user_mode_work(regs);
-
-		if (thread_flags & _TIF_FOREIGN_FPSTATE)
-			fpsimd_restore_current_state();
-
-		local_irq_disable();
-		thread_flags = read_thread_flags();
-	} while (thread_flags & _TIF_WORK_MASK);
-}
-
-static __always_inline void exit_to_user_mode_prepare(struct pt_regs *regs)
-{
-	unsigned long flags;
-
 	local_irq_disable();
 
-	flags = read_thread_flags();
-	if (unlikely(flags & _TIF_WORK_MASK))
-		do_notify_resume(regs, flags);
-
-	local_daif_mask();
-
-	lockdep_sys_exit();
-}
-
-static __always_inline void exit_to_user_mode(struct pt_regs *regs)
-{
+	instrumentation_begin();
 	exit_to_user_mode_prepare(regs);
+	instrumentation_end();
 	mte_check_tfsr_exit();
-	__exit_to_user_mode();
+	exit_to_user_mode();
 }
 
 asmlinkage void noinstr asm_exit_to_user_mode(struct pt_regs *regs)
 {
-	exit_to_user_mode(regs);
-}
-
-/*
- * Handle IRQ/context state management when entering an NMI from user/kernel
- * mode. Before this function is called it is not safe to call regular kernel
- * code, instrumentable code, or any code which may trigger an exception.
- */
-static noinstr irqentry_state_t arm64_enter_nmi(struct pt_regs *regs)
-{
-	irqentry_state_t irq_state;
-
-	irq_state.lockdep = lockdep_hardirqs_enabled();
-
-	__nmi_enter();
-	lockdep_hardirqs_off(CALLER_ADDR0);
-	lockdep_hardirq_enter();
-	ct_nmi_enter();
-
-	trace_hardirqs_off_finish();
-	ftrace_nmi_enter();
-
-	return irq_state;
-}
-
-/*
- * Handle IRQ/context state management when exiting an NMI from user/kernel
- * mode. After this function returns it is not safe to call regular kernel
- * code, instrumentable code, or any code which may trigger an exception.
- */
-static void noinstr arm64_exit_nmi(struct pt_regs *regs,
-				   irqentry_state_t irq_state)
-{
-	ftrace_nmi_exit();
-	if (irq_state.lockdep) {
-		trace_hardirqs_on_prepare();
-		lockdep_hardirqs_on_prepare();
-	}
-
-	ct_nmi_exit();
-	lockdep_hardirq_exit();
-	if (irq_state.lockdep)
-		lockdep_hardirqs_on(CALLER_ADDR0);
-	__nmi_exit();
+	arm64_exit_to_user_mode(regs);
 }
 
 /*
@@ -322,7 +145,7 @@ extern void (*handle_arch_fiq)(struct pt_regs *);
 static void noinstr __panic_unhandled(struct pt_regs *regs, const char *vector,
 				      unsigned long esr)
 {
-	arm64_enter_nmi(regs);
+	irqentry_nmi_enter(regs);
 
 	console_verbose();
 
@@ -556,10 +379,10 @@ asmlinkage void noinstr el1h_64_sync_handler(struct pt_regs *regs)
 static __always_inline void __el1_pnmi(struct pt_regs *regs,
 				       void (*handler)(struct pt_regs *))
 {
-	irqentry_state_t state = arm64_enter_nmi(regs);
+	irqentry_state_t state = irqentry_nmi_enter(regs);
 
 	do_interrupt_handler(regs, handler);
-	arm64_exit_nmi(regs, state);
+	irqentry_nmi_exit(regs, state);
 }
 
 static __always_inline void __el1_irq(struct pt_regs *regs,
@@ -600,19 +423,19 @@ asmlinkage void noinstr el1h_64_error_handler(struct pt_regs *regs)
 	irqentry_state_t state;
 
 	local_daif_restore(DAIF_ERRCTX);
-	state = arm64_enter_nmi(regs);
+	state = irqentry_nmi_enter(regs);
 	do_serror(regs, esr);
-	arm64_exit_nmi(regs, state);
+	irqentry_nmi_exit(regs, state);
 }
 
 static void noinstr el0_da(struct pt_regs *regs, unsigned long esr)
 {
 	unsigned long far = read_sysreg(far_el1);
 
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_mem_abort(far, esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_ia(struct pt_regs *regs, unsigned long esr)
@@ -627,50 +450,50 @@ static void noinstr el0_ia(struct pt_regs *regs, unsigned long esr)
 	if (!is_ttbr0_addr(far))
 		arm64_apply_bp_hardening();
 
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_mem_abort(far, esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_fpsimd_acc(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_fpsimd_acc(esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_sve_acc(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_sve_acc(esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_sme_acc(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_sme_acc(esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_fpsimd_exc(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_fpsimd_exc(esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_sys(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_sys(esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_pc(struct pt_regs *regs, unsigned long esr)
@@ -680,58 +503,58 @@ static void noinstr el0_pc(struct pt_regs *regs, unsigned long esr)
 	if (!is_ttbr0_addr(instruction_pointer(regs)))
 		arm64_apply_bp_hardening();
 
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_sp_pc_abort(far, esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_sp(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_sp_pc_abort(regs->sp, esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_undef(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_undef(regs, esr);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_bti(struct pt_regs *regs)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_bti(regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_mops(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_mops(regs, esr);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_gcs(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_gcs(regs, esr);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_inv(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	bad_el0_sync(regs, 0, esr);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_dbg(struct pt_regs *regs, unsigned long esr)
@@ -739,28 +562,28 @@ static void noinstr el0_dbg(struct pt_regs *regs, unsigned long esr)
 	/* Only watchpoints write FAR_EL1, otherwise its UNKNOWN */
 	unsigned long far = read_sysreg(far_el1);
 
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	do_debug_exception(far, esr, regs);
 	local_daif_restore(DAIF_PROCCTX);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_svc(struct pt_regs *regs)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	cortex_a76_erratum_1463225_svc_handler();
 	fp_user_discard();
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_svc(regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_fpac(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_fpac(regs, esr);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 asmlinkage void noinstr el0t_64_sync_handler(struct pt_regs *regs)
@@ -828,7 +651,7 @@ asmlinkage void noinstr el0t_64_sync_handler(struct pt_regs *regs)
 static void noinstr el0_interrupt(struct pt_regs *regs,
 				  void (*handler)(struct pt_regs *))
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 
 	write_sysreg(DAIF_PROCCTX_NOIRQ, daif);
 
@@ -839,7 +662,7 @@ static void noinstr el0_interrupt(struct pt_regs *regs,
 	do_interrupt_handler(regs, handler);
 	irq_exit_rcu();
 
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr __el0_irq_handler_common(struct pt_regs *regs)
@@ -867,13 +690,13 @@ static void noinstr __el0_error_handler_common(struct pt_regs *regs)
 	unsigned long esr = read_sysreg(esr_el1);
 	irqentry_state_t state;
 
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_ERRCTX);
-	state = arm64_enter_nmi(regs);
+	state = irqentry_nmi_enter(regs);
 	do_serror(regs, esr);
-	arm64_exit_nmi(regs, state);
+	irqentry_nmi_exit(regs, state);
 	local_daif_restore(DAIF_PROCCTX);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 asmlinkage void noinstr el0t_64_error_handler(struct pt_regs *regs)
@@ -884,19 +707,19 @@ asmlinkage void noinstr el0t_64_error_handler(struct pt_regs *regs)
 #ifdef CONFIG_COMPAT
 static void noinstr el0_cp15(struct pt_regs *regs, unsigned long esr)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_cp15(esr, regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 static void noinstr el0_svc_compat(struct pt_regs *regs)
 {
-	enter_from_user_mode(regs);
+	arm64_enter_from_user_mode(regs);
 	cortex_a76_erratum_1463225_svc_handler();
 	local_daif_restore(DAIF_PROCCTX);
 	do_el0_svc_compat(regs);
-	exit_to_user_mode(regs);
+	arm64_exit_to_user_mode(regs);
 }
 
 asmlinkage void noinstr el0t_32_sync_handler(struct pt_regs *regs)
@@ -970,7 +793,7 @@ asmlinkage void noinstr __noreturn handle_bad_stack(struct pt_regs *regs)
 	unsigned long esr = read_sysreg(esr_el1);
 	unsigned long far = read_sysreg(far_el1);
 
-	arm64_enter_nmi(regs);
+	irqentry_nmi_enter(regs);
 	panic_bad_stack(regs, esr, far);
 }
 #endif /* CONFIG_VMAP_STACK */
@@ -1004,9 +827,9 @@ __sdei_handler(struct pt_regs *regs, struct sdei_registered_event *arg)
 	else if (cpu_has_pan())
 		set_pstate_pan(0);
 
-	state = arm64_enter_nmi(regs);
+	state = irqentry_nmi_enter(regs);
 	ret = do_sdei_event(regs, arg);
-	arm64_exit_nmi(regs, state);
+	irqentry_nmi_exit(regs, state);
 
 	return ret;
 }
diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c
index 2eb2e97a934f..04b20c2f6cda 100644
--- a/arch/arm64/kernel/signal.c
+++ b/arch/arm64/kernel/signal.c
@@ -9,6 +9,7 @@
 #include <linux/cache.h>
 #include <linux/compat.h>
 #include <linux/errno.h>
+#include <linux/irq-entry-common.h>
 #include <linux/kernel.h>
 #include <linux/signal.h>
 #include <linux/freezer.h>
@@ -1540,7 +1541,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs)
  * the kernel can handle, and then we build all the user-level signal handling
  * stack-frames in one go after that.
  */
-void do_signal(struct pt_regs *regs)
+void arch_do_signal_or_restart(struct pt_regs *regs)
 {
 	unsigned long continue_addr = 0, restart_addr = 0;
 	int retval = 0;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:19:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:19:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825950.1240352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HQ1-0007BU-F1; Fri, 25 Oct 2024 10:19:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825950.1240352; Fri, 25 Oct 2024 10:19: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 1t4HQ1-0007BL-CI; Fri, 25 Oct 2024 10:19:45 +0000
Received: by outflank-mailman (input) for mailman id 825950;
 Fri, 25 Oct 2024 10:19: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFo-0000tn-1s
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:09:12 +0000
Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2391d488-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:08:57 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.163.252])
 by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4XZdl229wbzQsFJ;
 Fri, 25 Oct 2024 18:07:58 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 5BF2B1800A5;
 Fri, 25 Oct 2024 18:08:52 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:50 +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: 2391d488-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 14/19] entry: Split into irq entry and syscall
Date: Fri, 25 Oct 2024 18:06:55 +0800
Message-ID: <20241025100700.3714552-15-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

As Mark pointed out, do not try to switch to *all* the
generic entry code in one go. The regular entry state management
(e.g. enter_from_user_mode() and exit_to_user_mode()) is largely
separate from the syscall state management. Move arm64 over to
enter_from_user_mode() and exit_to_user_mode() without needing to use
any of the generic syscall logic. Doing that first, *then* moving over
to the generic syscall handling would be much easier to
review/test/bisect, and if there are any ABI issues with the syscall
handling in particular, it will be easier to handle those in isolation.

So split generic entry into irq entry and syscall code, which will
make review work easier and switch to generic entry clear.

Introdue two configs called GENERIC_SYSCALL and GENERIC_IRQ_ENTRY,
which control the irq entry and syscall parts of the generic code
respectively. And split the header file irq-entry-common.h from
entry-common.h for GENERIC_IRQ_ENTRY.

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 MAINTAINERS                      |   1 +
 arch/Kconfig                     |   8 +
 include/linux/entry-common.h     | 376 +----------------------------
 include/linux/irq-entry-common.h | 393 +++++++++++++++++++++++++++++++
 kernel/entry/Makefile            |   3 +-
 kernel/entry/common.c            | 159 +------------
 kernel/entry/syscall-common.c    | 159 +++++++++++++
 7 files changed, 565 insertions(+), 534 deletions(-)
 create mode 100644 include/linux/irq-entry-common.h
 create mode 100644 kernel/entry/syscall-common.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 72dce03be648..468d6e1a3228 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -9531,6 +9531,7 @@ S:	Maintained
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/entry
 F:	include/linux/entry-common.h
 F:	include/linux/entry-kvm.h
+F:	include/linux/irq-entry-common.h
 F:	kernel/entry/
 
 GENERIC GPIO I2C DRIVER
diff --git a/arch/Kconfig b/arch/Kconfig
index feb50cfc4bdb..8e9c6f85960e 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -64,8 +64,16 @@ config HOTPLUG_PARALLEL
 	bool
 	select HOTPLUG_SPLIT_STARTUP
 
+config GENERIC_IRQ_ENTRY
+	bool
+
+config GENERIC_SYSCALL
+	bool
+
 config GENERIC_ENTRY
 	bool
+	select GENERIC_IRQ_ENTRY
+	select GENERIC_SYSCALL
 
 config KPROBES
 	bool "Kprobes"
diff --git a/include/linux/entry-common.h b/include/linux/entry-common.h
index 1e50cdb83ae5..1ae3143d4b12 100644
--- a/include/linux/entry-common.h
+++ b/include/linux/entry-common.h
@@ -2,6 +2,7 @@
 #ifndef __LINUX_ENTRYCOMMON_H
 #define __LINUX_ENTRYCOMMON_H
 
+#include <linux/irq-entry-common.h>
 #include <linux/static_call_types.h>
 #include <linux/ptrace.h>
 #include <linux/syscalls.h>
@@ -15,14 +16,6 @@
 
 #include <asm/entry-common.h>
 
-/*
- * Define dummy _TIF work flags if not defined by the architecture or for
- * disabled functionality.
- */
-#ifndef _TIF_PATCH_PENDING
-# define _TIF_PATCH_PENDING		(0)
-#endif
-
 #ifndef _TIF_UPROBE
 # define _TIF_UPROBE			(0)
 #endif
@@ -55,68 +48,6 @@
 				 SYSCALL_WORK_SYSCALL_EXIT_TRAP	|	\
 				 ARCH_SYSCALL_WORK_EXIT)
 
-/*
- * TIF flags handled in exit_to_user_mode_loop()
- */
-#ifndef ARCH_EXIT_TO_USER_MODE_WORK
-# define ARCH_EXIT_TO_USER_MODE_WORK		(0)
-#endif
-
-#define EXIT_TO_USER_MODE_WORK						\
-	(_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_UPROBE |		\
-	 _TIF_NEED_RESCHED | _TIF_PATCH_PENDING | _TIF_NOTIFY_SIGNAL |	\
-	 ARCH_EXIT_TO_USER_MODE_WORK)
-
-/**
- * arch_enter_from_user_mode - Architecture specific sanity check for user mode regs
- * @regs:	Pointer to currents pt_regs
- *
- * Defaults to an empty implementation. Can be replaced by architecture
- * specific code.
- *
- * Invoked from syscall_enter_from_user_mode() in the non-instrumentable
- * section. Use __always_inline so the compiler cannot push it out of line
- * and make it instrumentable.
- */
-static __always_inline void arch_enter_from_user_mode(struct pt_regs *regs);
-
-#ifndef arch_enter_from_user_mode
-static __always_inline void arch_enter_from_user_mode(struct pt_regs *regs) {}
-#endif
-
-/**
- * enter_from_user_mode - Establish state when coming from user mode
- *
- * Syscall/interrupt entry disables interrupts, but user mode is traced as
- * interrupts enabled. Also with NO_HZ_FULL RCU might be idle.
- *
- * 1) Tell lockdep that interrupts are disabled
- * 2) Invoke context tracking if enabled to reactivate RCU
- * 3) Trace interrupts off state
- *
- * Invoked from architecture specific syscall entry code with interrupts
- * disabled. The calling code has to be non-instrumentable. When the
- * function returns all state is correct and interrupts are still
- * disabled. The subsequent functions can be instrumented.
- *
- * This is invoked when there is architecture specific functionality to be
- * done between establishing state and enabling interrupts. The caller must
- * enable interrupts before invoking syscall_enter_from_user_mode_work().
- */
-static __always_inline void enter_from_user_mode(struct pt_regs *regs)
-{
-	arch_enter_from_user_mode(regs);
-	lockdep_hardirqs_off(CALLER_ADDR0);
-
-	CT_WARN_ON(__ct_state() != CT_STATE_USER);
-	user_exit_irqoff();
-
-	instrumentation_begin();
-	kmsan_unpoison_entry_regs(regs);
-	trace_hardirqs_off_finish();
-	instrumentation_end();
-}
-
 /**
  * syscall_enter_from_user_mode_prepare - Establish state and enable interrupts
  * @regs:	Pointer to currents pt_regs
@@ -201,170 +132,6 @@ static __always_inline long syscall_enter_from_user_mode(struct pt_regs *regs, l
 	return ret;
 }
 
-/**
- * local_irq_enable_exit_to_user - Exit to user variant of local_irq_enable()
- * @ti_work:	Cached TIF flags gathered with interrupts disabled
- *
- * Defaults to local_irq_enable(). Can be supplied by architecture specific
- * code.
- */
-static inline void local_irq_enable_exit_to_user(unsigned long ti_work);
-
-#ifndef local_irq_enable_exit_to_user
-static inline void local_irq_enable_exit_to_user(unsigned long ti_work)
-{
-	local_irq_enable();
-}
-#endif
-
-/**
- * local_irq_disable_exit_to_user - Exit to user variant of local_irq_disable()
- *
- * Defaults to local_irq_disable(). Can be supplied by architecture specific
- * code.
- */
-static inline void local_irq_disable_exit_to_user(void);
-
-#ifndef local_irq_disable_exit_to_user
-static inline void local_irq_disable_exit_to_user(void)
-{
-	local_irq_disable();
-}
-#endif
-
-/**
- * arch_exit_to_user_mode_work - Architecture specific TIF work for exit
- *				 to user mode.
- * @regs:	Pointer to currents pt_regs
- * @ti_work:	Cached TIF flags gathered with interrupts disabled
- *
- * Invoked from exit_to_user_mode_loop() with interrupt enabled
- *
- * Defaults to NOOP. Can be supplied by architecture specific code.
- */
-static inline void arch_exit_to_user_mode_work(struct pt_regs *regs,
-					       unsigned long ti_work);
-
-#ifndef arch_exit_to_user_mode_work
-static inline void arch_exit_to_user_mode_work(struct pt_regs *regs,
-					       unsigned long ti_work)
-{
-}
-#endif
-
-/**
- * arch_exit_to_user_mode_prepare - Architecture specific preparation for
- *				    exit to user mode.
- * @regs:	Pointer to currents pt_regs
- * @ti_work:	Cached TIF flags gathered with interrupts disabled
- *
- * Invoked from exit_to_user_mode_prepare() with interrupt disabled as the last
- * function before return. Defaults to NOOP.
- */
-static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
-						  unsigned long ti_work);
-
-#ifndef arch_exit_to_user_mode_prepare
-static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
-						  unsigned long ti_work)
-{
-}
-#endif
-
-/**
- * arch_exit_to_user_mode - Architecture specific final work before
- *			    exit to user mode.
- *
- * Invoked from exit_to_user_mode() with interrupt disabled as the last
- * function before return. Defaults to NOOP.
- *
- * This needs to be __always_inline because it is non-instrumentable code
- * invoked after context tracking switched to user mode.
- *
- * An architecture implementation must not do anything complex, no locking
- * etc. The main purpose is for speculation mitigations.
- */
-static __always_inline void arch_exit_to_user_mode(void);
-
-#ifndef arch_exit_to_user_mode
-static __always_inline void arch_exit_to_user_mode(void) { }
-#endif
-
-/**
- * arch_do_signal_or_restart -  Architecture specific signal delivery function
- * @regs:	Pointer to currents pt_regs
- *
- * Invoked from exit_to_user_mode_loop().
- */
-void arch_do_signal_or_restart(struct pt_regs *regs);
-
-/**
- * exit_to_user_mode_loop - do any pending work before leaving to user space
- */
-unsigned long exit_to_user_mode_loop(struct pt_regs *regs,
-				     unsigned long ti_work);
-
-/**
- * exit_to_user_mode_prepare - call exit_to_user_mode_loop() if required
- * @regs:	Pointer to pt_regs on entry stack
- *
- * 1) check that interrupts are disabled
- * 2) call tick_nohz_user_enter_prepare()
- * 3) call exit_to_user_mode_loop() if any flags from
- *    EXIT_TO_USER_MODE_WORK are set
- * 4) check that interrupts are still disabled
- */
-static __always_inline void exit_to_user_mode_prepare(struct pt_regs *regs)
-{
-	unsigned long ti_work;
-
-	lockdep_assert_irqs_disabled();
-
-	/* Flush pending rcuog wakeup before the last need_resched() check */
-	tick_nohz_user_enter_prepare();
-
-	ti_work = read_thread_flags();
-	if (unlikely(ti_work & EXIT_TO_USER_MODE_WORK))
-		ti_work = exit_to_user_mode_loop(regs, ti_work);
-
-	arch_exit_to_user_mode_prepare(regs, ti_work);
-
-	/* Ensure that kernel state is sane for a return to userspace */
-	kmap_assert_nomap();
-	lockdep_assert_irqs_disabled();
-	lockdep_sys_exit();
-}
-
-/**
- * exit_to_user_mode - Fixup state when exiting to user mode
- *
- * Syscall/interrupt exit enables interrupts, but the kernel state is
- * interrupts disabled when this is invoked. Also tell RCU about it.
- *
- * 1) Trace interrupts on state
- * 2) Invoke context tracking if enabled to adjust RCU state
- * 3) Invoke architecture specific last minute exit code, e.g. speculation
- *    mitigations, etc.: arch_exit_to_user_mode()
- * 4) Tell lockdep that interrupts are enabled
- *
- * Invoked from architecture specific code when syscall_exit_to_user_mode()
- * is not suitable as the last step before returning to userspace. Must be
- * invoked with interrupts disabled and the caller must be
- * non-instrumentable.
- * The caller has to invoke syscall_exit_to_user_mode_work() before this.
- */
-static __always_inline void exit_to_user_mode(void)
-{
-	instrumentation_begin();
-	trace_hardirqs_on_prepare();
-	lockdep_hardirqs_on_prepare();
-	instrumentation_end();
-
-	user_enter_irqoff();
-	arch_exit_to_user_mode();
-	lockdep_hardirqs_on(CALLER_ADDR0);
-}
-
 /**
  * syscall_exit_to_user_mode_work - Handle work before returning to user mode
  * @regs:	Pointer to currents pt_regs
@@ -411,145 +178,4 @@ void syscall_exit_to_user_mode_work(struct pt_regs *regs);
  */
 void syscall_exit_to_user_mode(struct pt_regs *regs);
 
-/**
- * irqentry_enter_from_user_mode - Establish state before invoking the irq handler
- * @regs:	Pointer to currents pt_regs
- *
- * Invoked from architecture specific entry code with interrupts disabled.
- * Can only be called when the interrupt entry came from user mode. The
- * calling code must be non-instrumentable.  When the function returns all
- * state is correct and the subsequent functions can be instrumented.
- *
- * The function establishes state (lockdep, RCU (context tracking), tracing)
- */
-void irqentry_enter_from_user_mode(struct pt_regs *regs);
-
-/**
- * irqentry_exit_to_user_mode - Interrupt exit work
- * @regs:	Pointer to current's pt_regs
- *
- * Invoked with interrupts disabled and fully valid regs. Returns with all
- * work handled, interrupts disabled such that the caller can immediately
- * switch to user mode. Called from architecture specific interrupt
- * handling code.
- *
- * The call order is #2 and #3 as described in syscall_exit_to_user_mode().
- * Interrupt exit is not invoking #1 which is the syscall specific one time
- * work.
- */
-void irqentry_exit_to_user_mode(struct pt_regs *regs);
-
-#ifndef irqentry_state
-/**
- * struct irqentry_state - Opaque object for exception state storage
- * @exit_rcu: Used exclusively in the irqentry_*() calls; signals whether the
- *            exit path has to invoke ct_irq_exit().
- * @lockdep: Used exclusively in the irqentry_nmi_*() calls; ensures that
- *           lockdep state is restored correctly on exit from nmi.
- *
- * This opaque object is filled in by the irqentry_*_enter() functions and
- * must be passed back into the corresponding irqentry_*_exit() functions
- * when the exception is complete.
- *
- * Callers of irqentry_*_[enter|exit]() must consider this structure opaque
- * and all members private.  Descriptions of the members are provided to aid in
- * the maintenance of the irqentry_*() functions.
- */
-typedef struct irqentry_state {
-	union {
-		bool	exit_rcu;
-		bool	lockdep;
-	};
-} irqentry_state_t;
-#endif
-
-/**
- * irqentry_enter - Handle state tracking on ordinary interrupt entries
- * @regs:	Pointer to pt_regs of interrupted context
- *
- * Invokes:
- *  - lockdep irqflag state tracking as low level ASM entry disabled
- *    interrupts.
- *
- *  - Context tracking if the exception hit user mode.
- *
- *  - The hardirq tracer to keep the state consistent as low level ASM
- *    entry disabled interrupts.
- *
- * As a precondition, this requires that the entry came from user mode,
- * idle, or a kernel context in which RCU is watching.
- *
- * For kernel mode entries RCU handling is done conditional. If RCU is
- * watching then the only RCU requirement is to check whether the tick has
- * to be restarted. If RCU is not watching then ct_irq_enter() has to be
- * invoked on entry and ct_irq_exit() on exit.
- *
- * Avoiding the ct_irq_enter/exit() calls is an optimization but also
- * solves the problem of kernel mode pagefaults which can schedule, which
- * is not possible after invoking ct_irq_enter() without undoing it.
- *
- * For user mode entries irqentry_enter_from_user_mode() is invoked to
- * establish the proper context for NOHZ_FULL. Otherwise scheduling on exit
- * would not be possible.
- *
- * Returns: An opaque object that must be passed to idtentry_exit()
- */
-irqentry_state_t noinstr irqentry_enter(struct pt_regs *regs);
-
-/**
- * irqentry_exit_cond_resched - Conditionally reschedule on return from interrupt
- *
- * Conditional reschedule with additional sanity checks.
- */
-void raw_irqentry_exit_cond_resched(void);
-#ifdef CONFIG_PREEMPT_DYNAMIC
-#if defined(CONFIG_HAVE_PREEMPT_DYNAMIC_CALL)
-#define irqentry_exit_cond_resched_dynamic_enabled	raw_irqentry_exit_cond_resched
-#define irqentry_exit_cond_resched_dynamic_disabled	NULL
-DECLARE_STATIC_CALL(irqentry_exit_cond_resched, raw_irqentry_exit_cond_resched);
-#define irqentry_exit_cond_resched()	static_call(irqentry_exit_cond_resched)()
-#elif defined(CONFIG_HAVE_PREEMPT_DYNAMIC_KEY)
-DECLARE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
-void dynamic_irqentry_exit_cond_resched(void);
-#define irqentry_exit_cond_resched()	dynamic_irqentry_exit_cond_resched()
-#endif
-#else /* CONFIG_PREEMPT_DYNAMIC */
-#define irqentry_exit_cond_resched()	raw_irqentry_exit_cond_resched()
-#endif /* CONFIG_PREEMPT_DYNAMIC */
-
-/**
- * irqentry_exit - Handle return from exception that used irqentry_enter()
- * @regs:	Pointer to pt_regs (exception entry regs)
- * @state:	Return value from matching call to irqentry_enter()
- *
- * Depending on the return target (kernel/user) this runs the necessary
- * preemption and work checks if possible and required and returns to
- * the caller with interrupts disabled and no further work pending.
- *
- * This is the last action before returning to the low level ASM code which
- * just needs to return to the appropriate context.
- *
- * Counterpart to irqentry_enter().
- */
-void noinstr irqentry_exit(struct pt_regs *regs, irqentry_state_t state);
-
-/**
- * irqentry_nmi_enter - Handle NMI entry
- * @regs:	Pointer to currents pt_regs
- *
- * Similar to irqentry_enter() but taking care of the NMI constraints.
- */
-irqentry_state_t noinstr irqentry_nmi_enter(struct pt_regs *regs);
-
-/**
- * irqentry_nmi_exit - Handle return from NMI handling
- * @regs:	Pointer to pt_regs (NMI entry regs)
- * @irq_state:	Return value from matching call to irqentry_nmi_enter()
- *
- * Last action before returning to the low level assembly code.
- *
- * Counterpart to irqentry_nmi_enter().
- */
-void noinstr irqentry_nmi_exit(struct pt_regs *regs, irqentry_state_t irq_state);
-
 #endif
diff --git a/include/linux/irq-entry-common.h b/include/linux/irq-entry-common.h
new file mode 100644
index 000000000000..b7d60a18f1a2
--- /dev/null
+++ b/include/linux/irq-entry-common.h
@@ -0,0 +1,393 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef __LINUX_IRQENTRYCOMMON_H
+#define __LINUX_IRQENTRYCOMMON_H
+
+#include <linux/static_call_types.h>
+#include <linux/ptrace.h>
+#include <linux/syscalls.h>
+#include <linux/seccomp.h>
+#include <linux/sched.h>
+#include <linux/context_tracking.h>
+#include <linux/livepatch.h>
+#include <linux/resume_user_mode.h>
+#include <linux/tick.h>
+#include <linux/kmsan.h>
+
+#include <asm/entry-common.h>
+
+/*
+ * Define dummy _TIF work flags if not defined by the architecture or for
+ * disabled functionality.
+ */
+#ifndef _TIF_PATCH_PENDING
+# define _TIF_PATCH_PENDING		(0)
+#endif
+
+/*
+ * TIF flags handled in exit_to_user_mode_loop()
+ */
+#ifndef ARCH_EXIT_TO_USER_MODE_WORK
+# define ARCH_EXIT_TO_USER_MODE_WORK		(0)
+#endif
+
+#define EXIT_TO_USER_MODE_WORK						\
+	(_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_UPROBE |		\
+	 _TIF_NEED_RESCHED | _TIF_PATCH_PENDING | _TIF_NOTIFY_SIGNAL |	\
+	 ARCH_EXIT_TO_USER_MODE_WORK)
+
+/**
+ * arch_enter_from_user_mode - Architecture specific sanity check for user mode regs
+ * @regs:	Pointer to currents pt_regs
+ *
+ * Defaults to an empty implementation. Can be replaced by architecture
+ * specific code.
+ *
+ * Invoked from syscall_enter_from_user_mode() in the non-instrumentable
+ * section. Use __always_inline so the compiler cannot push it out of line
+ * and make it instrumentable.
+ */
+static __always_inline void arch_enter_from_user_mode(struct pt_regs *regs);
+
+#ifndef arch_enter_from_user_mode
+static __always_inline void arch_enter_from_user_mode(struct pt_regs *regs) {}
+#endif
+
+/**
+ * enter_from_user_mode - Establish state when coming from user mode
+ *
+ * Syscall/interrupt entry disables interrupts, but user mode is traced as
+ * interrupts enabled. Also with NO_HZ_FULL RCU might be idle.
+ *
+ * 1) Tell lockdep that interrupts are disabled
+ * 2) Invoke context tracking if enabled to reactivate RCU
+ * 3) Trace interrupts off state
+ *
+ * Invoked from architecture specific syscall entry code with interrupts
+ * disabled. The calling code has to be non-instrumentable. When the
+ * function returns all state is correct and interrupts are still
+ * disabled. The subsequent functions can be instrumented.
+ *
+ * This is invoked when there is architecture specific functionality to be
+ * done between establishing state and enabling interrupts. The caller must
+ * enable interrupts before invoking syscall_enter_from_user_mode_work().
+ */
+static __always_inline void enter_from_user_mode(struct pt_regs *regs)
+{
+	arch_enter_from_user_mode(regs);
+	lockdep_hardirqs_off(CALLER_ADDR0);
+
+	CT_WARN_ON(__ct_state() != CT_STATE_USER);
+	user_exit_irqoff();
+
+	instrumentation_begin();
+	kmsan_unpoison_entry_regs(regs);
+	trace_hardirqs_off_finish();
+	instrumentation_end();
+}
+
+/**
+ * local_irq_enable_exit_to_user - Exit to user variant of local_irq_enable()
+ * @ti_work:	Cached TIF flags gathered with interrupts disabled
+ *
+ * Defaults to local_irq_enable(). Can be supplied by architecture specific
+ * code.
+ */
+static inline void local_irq_enable_exit_to_user(unsigned long ti_work);
+
+#ifndef local_irq_enable_exit_to_user
+static inline void local_irq_enable_exit_to_user(unsigned long ti_work)
+{
+	local_irq_enable();
+}
+#endif
+
+/**
+ * local_irq_disable_exit_to_user - Exit to user variant of local_irq_disable()
+ *
+ * Defaults to local_irq_disable(). Can be supplied by architecture specific
+ * code.
+ */
+static inline void local_irq_disable_exit_to_user(void);
+
+#ifndef local_irq_disable_exit_to_user
+static inline void local_irq_disable_exit_to_user(void)
+{
+	local_irq_disable();
+}
+#endif
+
+/**
+ * arch_exit_to_user_mode_work - Architecture specific TIF work for exit
+ *				 to user mode.
+ * @regs:	Pointer to currents pt_regs
+ * @ti_work:	Cached TIF flags gathered with interrupts disabled
+ *
+ * Invoked from exit_to_user_mode_loop() with interrupt enabled
+ *
+ * Defaults to NOOP. Can be supplied by architecture specific code.
+ */
+static inline void arch_exit_to_user_mode_work(struct pt_regs *regs,
+					       unsigned long ti_work);
+
+#ifndef arch_exit_to_user_mode_work
+static inline void arch_exit_to_user_mode_work(struct pt_regs *regs,
+					       unsigned long ti_work)
+{
+}
+#endif
+
+/**
+ * arch_exit_to_user_mode_prepare - Architecture specific preparation for
+ *				    exit to user mode.
+ * @regs:	Pointer to currents pt_regs
+ * @ti_work:	Cached TIF flags gathered with interrupts disabled
+ *
+ * Invoked from exit_to_user_mode_prepare() with interrupt disabled as the last
+ * function before return. Defaults to NOOP.
+ */
+static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
+						  unsigned long ti_work);
+
+#ifndef arch_exit_to_user_mode_prepare
+static inline void arch_exit_to_user_mode_prepare(struct pt_regs *regs,
+						  unsigned long ti_work)
+{
+}
+#endif
+
+/**
+ * arch_exit_to_user_mode - Architecture specific final work before
+ *			    exit to user mode.
+ *
+ * Invoked from exit_to_user_mode() with interrupt disabled as the last
+ * function before return. Defaults to NOOP.
+ *
+ * This needs to be __always_inline because it is non-instrumentable code
+ * invoked after context tracking switched to user mode.
+ *
+ * An architecture implementation must not do anything complex, no locking
+ * etc. The main purpose is for speculation mitigations.
+ */
+static __always_inline void arch_exit_to_user_mode(void);
+
+#ifndef arch_exit_to_user_mode
+static __always_inline void arch_exit_to_user_mode(void) { }
+#endif
+
+/**
+ * arch_do_signal_or_restart -  Architecture specific signal delivery function
+ * @regs:	Pointer to currents pt_regs
+ *
+ * Invoked from exit_to_user_mode_loop().
+ */
+void arch_do_signal_or_restart(struct pt_regs *regs);
+
+/**
+ * exit_to_user_mode_loop - do any pending work before leaving to user space
+ */
+unsigned long exit_to_user_mode_loop(struct pt_regs *regs,
+				     unsigned long ti_work);
+
+/**
+ * exit_to_user_mode_prepare - call exit_to_user_mode_loop() if required
+ * @regs:	Pointer to pt_regs on entry stack
+ *
+ * 1) check that interrupts are disabled
+ * 2) call tick_nohz_user_enter_prepare()
+ * 3) call exit_to_user_mode_loop() if any flags from
+ *    EXIT_TO_USER_MODE_WORK are set
+ * 4) check that interrupts are still disabled
+ */
+static __always_inline void exit_to_user_mode_prepare(struct pt_regs *regs)
+{
+	unsigned long ti_work;
+
+	lockdep_assert_irqs_disabled();
+
+	/* Flush pending rcuog wakeup before the last need_resched() check */
+	tick_nohz_user_enter_prepare();
+
+	ti_work = read_thread_flags();
+	if (unlikely(ti_work & EXIT_TO_USER_MODE_WORK))
+		ti_work = exit_to_user_mode_loop(regs, ti_work);
+
+	arch_exit_to_user_mode_prepare(regs, ti_work);
+
+	/* Ensure that kernel state is sane for a return to userspace */
+	kmap_assert_nomap();
+	lockdep_assert_irqs_disabled();
+	lockdep_sys_exit();
+}
+
+/**
+ * exit_to_user_mode - Fixup state when exiting to user mode
+ *
+ * Syscall/interrupt exit enables interrupts, but the kernel state is
+ * interrupts disabled when this is invoked. Also tell RCU about it.
+ *
+ * 1) Trace interrupts on state
+ * 2) Invoke context tracking if enabled to adjust RCU state
+ * 3) Invoke architecture specific last minute exit code, e.g. speculation
+ *    mitigations, etc.: arch_exit_to_user_mode()
+ * 4) Tell lockdep that interrupts are enabled
+ *
+ * Invoked from architecture specific code when syscall_exit_to_user_mode()
+ * is not suitable as the last step before returning to userspace. Must be
+ * invoked with interrupts disabled and the caller must be
+ * non-instrumentable.
+ * The caller has to invoke syscall_exit_to_user_mode_work() before this.
+ */
+static __always_inline void exit_to_user_mode(void)
+{
+	instrumentation_begin();
+	trace_hardirqs_on_prepare();
+	lockdep_hardirqs_on_prepare();
+	instrumentation_end();
+
+	user_enter_irqoff();
+	arch_exit_to_user_mode();
+	lockdep_hardirqs_on(CALLER_ADDR0);
+}
+
+/**
+ * irqentry_enter_from_user_mode - Establish state before invoking the irq handler
+ * @regs:	Pointer to currents pt_regs
+ *
+ * Invoked from architecture specific entry code with interrupts disabled.
+ * Can only be called when the interrupt entry came from user mode. The
+ * calling code must be non-instrumentable.  When the function returns all
+ * state is correct and the subsequent functions can be instrumented.
+ *
+ * The function establishes state (lockdep, RCU (context tracking), tracing)
+ */
+void irqentry_enter_from_user_mode(struct pt_regs *regs);
+
+/**
+ * irqentry_exit_to_user_mode - Interrupt exit work
+ * @regs:	Pointer to current's pt_regs
+ *
+ * Invoked with interrupts disabled and fully valid regs. Returns with all
+ * work handled, interrupts disabled such that the caller can immediately
+ * switch to user mode. Called from architecture specific interrupt
+ * handling code.
+ *
+ * The call order is #2 and #3 as described in syscall_exit_to_user_mode().
+ * Interrupt exit is not invoking #1 which is the syscall specific one time
+ * work.
+ */
+void irqentry_exit_to_user_mode(struct pt_regs *regs);
+
+#ifndef irqentry_state
+/**
+ * struct irqentry_state - Opaque object for exception state storage
+ * @exit_rcu: Used exclusively in the irqentry_*() calls; signals whether the
+ *            exit path has to invoke ct_irq_exit().
+ * @lockdep: Used exclusively in the irqentry_nmi_*() calls; ensures that
+ *           lockdep state is restored correctly on exit from nmi.
+ *
+ * This opaque object is filled in by the irqentry_*_enter() functions and
+ * must be passed back into the corresponding irqentry_*_exit() functions
+ * when the exception is complete.
+ *
+ * Callers of irqentry_*_[enter|exit]() must consider this structure opaque
+ * and all members private.  Descriptions of the members are provided to aid in
+ * the maintenance of the irqentry_*() functions.
+ */
+typedef struct irqentry_state {
+	union {
+		bool	exit_rcu;
+		bool	lockdep;
+	};
+} irqentry_state_t;
+#endif
+
+/**
+ * irqentry_enter - Handle state tracking on ordinary interrupt entries
+ * @regs:	Pointer to pt_regs of interrupted context
+ *
+ * Invokes:
+ *  - lockdep irqflag state tracking as low level ASM entry disabled
+ *    interrupts.
+ *
+ *  - Context tracking if the exception hit user mode.
+ *
+ *  - The hardirq tracer to keep the state consistent as low level ASM
+ *    entry disabled interrupts.
+ *
+ * As a precondition, this requires that the entry came from user mode,
+ * idle, or a kernel context in which RCU is watching.
+ *
+ * For kernel mode entries RCU handling is done conditional. If RCU is
+ * watching then the only RCU requirement is to check whether the tick has
+ * to be restarted. If RCU is not watching then ct_irq_enter() has to be
+ * invoked on entry and ct_irq_exit() on exit.
+ *
+ * Avoiding the ct_irq_enter/exit() calls is an optimization but also
+ * solves the problem of kernel mode pagefaults which can schedule, which
+ * is not possible after invoking ct_irq_enter() without undoing it.
+ *
+ * For user mode entries irqentry_enter_from_user_mode() is invoked to
+ * establish the proper context for NOHZ_FULL. Otherwise scheduling on exit
+ * would not be possible.
+ *
+ * Returns: An opaque object that must be passed to idtentry_exit()
+ */
+irqentry_state_t noinstr irqentry_enter(struct pt_regs *regs);
+
+/**
+ * irqentry_exit_cond_resched - Conditionally reschedule on return from interrupt
+ *
+ * Conditional reschedule with additional sanity checks.
+ */
+void raw_irqentry_exit_cond_resched(void);
+#ifdef CONFIG_PREEMPT_DYNAMIC
+#if defined(CONFIG_HAVE_PREEMPT_DYNAMIC_CALL)
+#define irqentry_exit_cond_resched_dynamic_enabled	raw_irqentry_exit_cond_resched
+#define irqentry_exit_cond_resched_dynamic_disabled	NULL
+DECLARE_STATIC_CALL(irqentry_exit_cond_resched, raw_irqentry_exit_cond_resched);
+#define irqentry_exit_cond_resched()	static_call(irqentry_exit_cond_resched)()
+#elif defined(CONFIG_HAVE_PREEMPT_DYNAMIC_KEY)
+DECLARE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
+void dynamic_irqentry_exit_cond_resched(void);
+#define irqentry_exit_cond_resched()	dynamic_irqentry_exit_cond_resched()
+#endif
+#else /* CONFIG_PREEMPT_DYNAMIC */
+#define irqentry_exit_cond_resched()	raw_irqentry_exit_cond_resched()
+#endif /* CONFIG_PREEMPT_DYNAMIC */
+
+/**
+ * irqentry_exit - Handle return from exception that used irqentry_enter()
+ * @regs:	Pointer to pt_regs (exception entry regs)
+ * @state:	Return value from matching call to irqentry_enter()
+ *
+ * Depending on the return target (kernel/user) this runs the necessary
+ * preemption and work checks if possible and required and returns to
+ * the caller with interrupts disabled and no further work pending.
+ *
+ * This is the last action before returning to the low level ASM code which
+ * just needs to return to the appropriate context.
+ *
+ * Counterpart to irqentry_enter().
+ */
+void noinstr irqentry_exit(struct pt_regs *regs, irqentry_state_t state);
+
+/**
+ * irqentry_nmi_enter - Handle NMI entry
+ * @regs:	Pointer to currents pt_regs
+ *
+ * Similar to irqentry_enter() but taking care of the NMI constraints.
+ */
+irqentry_state_t noinstr irqentry_nmi_enter(struct pt_regs *regs);
+
+/**
+ * irqentry_nmi_exit - Handle return from NMI handling
+ * @regs:	Pointer to pt_regs (NMI entry regs)
+ * @irq_state:	Return value from matching call to irqentry_nmi_enter()
+ *
+ * Last action before returning to the low level assembly code.
+ *
+ * Counterpart to irqentry_nmi_enter().
+ */
+void noinstr irqentry_nmi_exit(struct pt_regs *regs, irqentry_state_t irq_state);
+
+#endif
diff --git a/kernel/entry/Makefile b/kernel/entry/Makefile
index 095c775e001e..d38f3a7e7396 100644
--- a/kernel/entry/Makefile
+++ b/kernel/entry/Makefile
@@ -9,5 +9,6 @@ KCOV_INSTRUMENT := n
 CFLAGS_REMOVE_common.o	 = -fstack-protector -fstack-protector-strong
 CFLAGS_common.o		+= -fno-stack-protector
 
-obj-$(CONFIG_GENERIC_ENTRY) 		+= common.o syscall_user_dispatch.o
+obj-$(CONFIG_GENERIC_IRQ_ENTRY) 	+= common.o
+obj-$(CONFIG_GENERIC_SYSCALL) 		+= syscall-common.o syscall_user_dispatch.o
 obj-$(CONFIG_KVM_XFER_TO_GUEST_WORK)	+= kvm.o
diff --git a/kernel/entry/common.c b/kernel/entry/common.c
index 5b6934e23c21..2ad132c7be05 100644
--- a/kernel/entry/common.c
+++ b/kernel/entry/common.c
@@ -1,84 +1,14 @@
 // SPDX-License-Identifier: GPL-2.0
 
 #include <linux/context_tracking.h>
-#include <linux/entry-common.h>
+#include <linux/irq-entry-common.h>
 #include <linux/resume_user_mode.h>
 #include <linux/highmem.h>
 #include <linux/jump_label.h>
 #include <linux/kmsan.h>
 #include <linux/livepatch.h>
-#include <linux/audit.h>
 #include <linux/tick.h>
 
-#include "common.h"
-
-#define CREATE_TRACE_POINTS
-#include <trace/events/syscalls.h>
-
-static inline void syscall_enter_audit(struct pt_regs *regs, long syscall)
-{
-	if (unlikely(audit_context())) {
-		unsigned long args[6];
-
-		syscall_get_arguments(current, regs, args);
-		audit_syscall_entry(syscall, args[0], args[1], args[2], args[3]);
-	}
-}
-
-long syscall_trace_enter(struct pt_regs *regs, long syscall,
-				unsigned long work)
-{
-	long ret = 0;
-
-	/*
-	 * Handle Syscall User Dispatch.  This must comes first, since
-	 * the ABI here can be something that doesn't make sense for
-	 * other syscall_work features.
-	 */
-	if (work & SYSCALL_WORK_SYSCALL_USER_DISPATCH) {
-		if (syscall_user_dispatch(regs))
-			return -1L;
-	}
-
-	/* Handle ptrace */
-	if (work & (SYSCALL_WORK_SYSCALL_TRACE | SYSCALL_WORK_SYSCALL_EMU)) {
-		ret = ptrace_report_syscall_entry(regs);
-		if (ret || (work & SYSCALL_WORK_SYSCALL_EMU))
-			return -1L;
-	}
-
-	/* Do seccomp after ptrace, to catch any tracer changes. */
-	if (work & SYSCALL_WORK_SECCOMP) {
-		ret = __secure_computing(NULL);
-		if (ret == -1L)
-			return ret;
-	}
-
-	/* Either of the above might have changed the syscall number */
-	syscall = syscall_get_nr(current, regs);
-
-	if (unlikely(work & SYSCALL_WORK_SYSCALL_TRACEPOINT)) {
-		trace_sys_enter(regs, syscall);
-		/*
-		 * Probes or BPF hooks in the tracepoint may have changed the
-		 * system call number as well.
-		 */
-		syscall = syscall_get_nr(current, regs);
-	}
-
-	syscall_enter_audit(regs, syscall);
-
-	return ret ? : syscall;
-}
-
-noinstr void syscall_enter_from_user_mode_prepare(struct pt_regs *regs)
-{
-	enter_from_user_mode(regs);
-	instrumentation_begin();
-	local_irq_enable();
-	instrumentation_end();
-}
-
 /* Workaround to allow gradual conversion of architecture code */
 void __weak arch_do_signal_or_restart(struct pt_regs *regs) { }
 
@@ -133,93 +63,6 @@ __always_inline unsigned long exit_to_user_mode_loop(struct pt_regs *regs,
 	return ti_work;
 }
 
-/*
- * If SYSCALL_EMU is set, then the only reason to report is when
- * SINGLESTEP is set (i.e. PTRACE_SYSEMU_SINGLESTEP).  This syscall
- * instruction has been already reported in syscall_enter_from_user_mode().
- */
-static inline bool report_single_step(unsigned long work)
-{
-	if (work & SYSCALL_WORK_SYSCALL_EMU)
-		return false;
-
-	return work & SYSCALL_WORK_SYSCALL_EXIT_TRAP;
-}
-
-static void syscall_exit_work(struct pt_regs *regs, unsigned long work)
-{
-	bool step;
-
-	/*
-	 * If the syscall was rolled back due to syscall user dispatching,
-	 * then the tracers below are not invoked for the same reason as
-	 * the entry side was not invoked in syscall_trace_enter(): The ABI
-	 * of these syscalls is unknown.
-	 */
-	if (work & SYSCALL_WORK_SYSCALL_USER_DISPATCH) {
-		if (unlikely(current->syscall_dispatch.on_dispatch)) {
-			current->syscall_dispatch.on_dispatch = false;
-			return;
-		}
-	}
-
-	audit_syscall_exit(regs);
-
-	if (work & SYSCALL_WORK_SYSCALL_TRACEPOINT)
-		trace_sys_exit(regs, syscall_get_return_value(current, regs));
-
-	step = report_single_step(work);
-	if (step || work & SYSCALL_WORK_SYSCALL_TRACE)
-		ptrace_report_syscall_exit(regs, step);
-}
-
-/*
- * Syscall specific exit to user mode preparation. Runs with interrupts
- * enabled.
- */
-static void syscall_exit_to_user_mode_prepare(struct pt_regs *regs)
-{
-	unsigned long work = READ_ONCE(current_thread_info()->syscall_work);
-	unsigned long nr = syscall_get_nr(current, regs);
-
-	CT_WARN_ON(ct_state() != CT_STATE_KERNEL);
-
-	if (IS_ENABLED(CONFIG_PROVE_LOCKING)) {
-		if (WARN(irqs_disabled(), "syscall %lu left IRQs disabled", nr))
-			local_irq_enable();
-	}
-
-	rseq_syscall(regs);
-
-	/*
-	 * Do one-time syscall specific work. If these work items are
-	 * enabled, we want to run them exactly once per syscall exit with
-	 * interrupts enabled.
-	 */
-	if (unlikely(work & SYSCALL_WORK_EXIT))
-		syscall_exit_work(regs, work);
-}
-
-static __always_inline void __syscall_exit_to_user_mode_work(struct pt_regs *regs)
-{
-	syscall_exit_to_user_mode_prepare(regs);
-	local_irq_disable_exit_to_user();
-	exit_to_user_mode_prepare(regs);
-}
-
-void syscall_exit_to_user_mode_work(struct pt_regs *regs)
-{
-	__syscall_exit_to_user_mode_work(regs);
-}
-
-__visible noinstr void syscall_exit_to_user_mode(struct pt_regs *regs)
-{
-	instrumentation_begin();
-	__syscall_exit_to_user_mode_work(regs);
-	instrumentation_end();
-	exit_to_user_mode();
-}
-
 noinstr void irqentry_enter_from_user_mode(struct pt_regs *regs)
 {
 	enter_from_user_mode(regs);
diff --git a/kernel/entry/syscall-common.c b/kernel/entry/syscall-common.c
new file mode 100644
index 000000000000..0eb036986ad4
--- /dev/null
+++ b/kernel/entry/syscall-common.c
@@ -0,0 +1,159 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <linux/audit.h>
+#include <linux/entry-common.h>
+#include "common.h"
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/syscalls.h>
+
+static inline void syscall_enter_audit(struct pt_regs *regs, long syscall)
+{
+	if (unlikely(audit_context())) {
+		unsigned long args[6];
+
+		syscall_get_arguments(current, regs, args);
+		audit_syscall_entry(syscall, args[0], args[1], args[2], args[3]);
+	}
+}
+
+long syscall_trace_enter(struct pt_regs *regs, long syscall,
+				unsigned long work)
+{
+	long ret = 0;
+
+	/*
+	 * Handle Syscall User Dispatch.  This must comes first, since
+	 * the ABI here can be something that doesn't make sense for
+	 * other syscall_work features.
+	 */
+	if (work & SYSCALL_WORK_SYSCALL_USER_DISPATCH) {
+		if (syscall_user_dispatch(regs))
+			return -1L;
+	}
+
+	/* Handle ptrace */
+	if (work & (SYSCALL_WORK_SYSCALL_TRACE | SYSCALL_WORK_SYSCALL_EMU)) {
+		ret = ptrace_report_syscall_entry(regs);
+		if (ret || (work & SYSCALL_WORK_SYSCALL_EMU))
+			return -1L;
+	}
+
+	/* Do seccomp after ptrace, to catch any tracer changes. */
+	if (work & SYSCALL_WORK_SECCOMP) {
+		ret = __secure_computing(NULL);
+		if (ret == -1L)
+			return ret;
+	}
+
+	/* Either of the above might have changed the syscall number */
+	syscall = syscall_get_nr(current, regs);
+
+	if (unlikely(work & SYSCALL_WORK_SYSCALL_TRACEPOINT)) {
+		trace_sys_enter(regs, syscall);
+		/*
+		 * Probes or BPF hooks in the tracepoint may have changed the
+		 * system call number as well.
+		 */
+		syscall = syscall_get_nr(current, regs);
+	}
+
+	syscall_enter_audit(regs, syscall);
+
+	return ret ? : syscall;
+}
+
+noinstr void syscall_enter_from_user_mode_prepare(struct pt_regs *regs)
+{
+	enter_from_user_mode(regs);
+	instrumentation_begin();
+	local_irq_enable();
+	instrumentation_end();
+}
+
+/*
+ * If SYSCALL_EMU is set, then the only reason to report is when
+ * SINGLESTEP is set (i.e. PTRACE_SYSEMU_SINGLESTEP).  This syscall
+ * instruction has been already reported in syscall_enter_from_user_mode().
+ */
+static inline bool report_single_step(unsigned long work)
+{
+	if (work & SYSCALL_WORK_SYSCALL_EMU)
+		return false;
+
+	return work & SYSCALL_WORK_SYSCALL_EXIT_TRAP;
+}
+
+static void syscall_exit_work(struct pt_regs *regs, unsigned long work)
+{
+	bool step;
+
+	/*
+	 * If the syscall was rolled back due to syscall user dispatching,
+	 * then the tracers below are not invoked for the same reason as
+	 * the entry side was not invoked in syscall_trace_enter(): The ABI
+	 * of these syscalls is unknown.
+	 */
+	if (work & SYSCALL_WORK_SYSCALL_USER_DISPATCH) {
+		if (unlikely(current->syscall_dispatch.on_dispatch)) {
+			current->syscall_dispatch.on_dispatch = false;
+			return;
+		}
+	}
+
+	audit_syscall_exit(regs);
+
+	if (work & SYSCALL_WORK_SYSCALL_TRACEPOINT)
+		trace_sys_exit(regs, syscall_get_return_value(current, regs));
+
+	step = report_single_step(work);
+	if (step || work & SYSCALL_WORK_SYSCALL_TRACE)
+		ptrace_report_syscall_exit(regs, step);
+}
+
+/*
+ * Syscall specific exit to user mode preparation. Runs with interrupts
+ * enabled.
+ */
+static void syscall_exit_to_user_mode_prepare(struct pt_regs *regs)
+{
+	unsigned long work = READ_ONCE(current_thread_info()->syscall_work);
+	unsigned long nr = syscall_get_nr(current, regs);
+
+	CT_WARN_ON(ct_state() != CT_STATE_KERNEL);
+
+	if (IS_ENABLED(CONFIG_PROVE_LOCKING)) {
+		if (WARN(irqs_disabled(), "syscall %lu left IRQs disabled", nr))
+			local_irq_enable();
+	}
+
+	rseq_syscall(regs);
+
+	/*
+	 * Do one-time syscall specific work. If these work items are
+	 * enabled, we want to run them exactly once per syscall exit with
+	 * interrupts enabled.
+	 */
+	if (unlikely(work & SYSCALL_WORK_EXIT))
+		syscall_exit_work(regs, work);
+}
+
+static __always_inline void __syscall_exit_to_user_mode_work(struct pt_regs *regs)
+{
+	syscall_exit_to_user_mode_prepare(regs);
+	local_irq_disable_exit_to_user();
+	exit_to_user_mode_prepare(regs);
+}
+
+void syscall_exit_to_user_mode_work(struct pt_regs *regs)
+{
+	__syscall_exit_to_user_mode_work(regs);
+}
+
+__visible noinstr void syscall_exit_to_user_mode(struct pt_regs *regs)
+{
+	instrumentation_begin();
+	__syscall_exit_to_user_mode_work(regs);
+	instrumentation_end();
+	exit_to_user_mode();
+}
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:20:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:20:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825966.1240362 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4HRB-0000cD-TB; Fri, 25 Oct 2024 10:20:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825966.1240362; Fri, 25 Oct 2024 10: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 1t4HRB-0000c6-Q8; Fri, 25 Oct 2024 10:20:57 +0000
Received: by outflank-mailman (input) for mailman id 825966;
 Fri, 25 Oct 2024 10: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=h5hx=RV=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t4HFj-0000tn-A3
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:09:07 +0000
Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2837f172-92b9-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:09:04 +0200 (CEST)
Received: from mail.maildlp.com (unknown [172.19.88.194])
 by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4XZdjq0g7Xz1T91t;
 Fri, 25 Oct 2024 18:06:55 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 495EF1400E3;
 Fri, 25 Oct 2024 18:08:59 +0800 (CST)
Received: from huawei.com (10.90.53.73) by kwepemg200008.china.huawei.com
 (7.202.181.35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.11; Fri, 25 Oct
 2024 18:08:57 +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: 2837f172-92b9-11ef-99a3-01e77a169b0f
From: Jinjie Ruan <ruanjinjie@huawei.com>
To: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<mark.rutland@arm.com>, <catalin.marinas@arm.com>, <sstabellini@kernel.org>,
	<maz@kernel.org>, <tglx@linutronix.de>, <peterz@infradead.org>,
	<luto@kernel.org>, <kees@kernel.org>, <wad@chromium.org>,
	<akpm@linux-foundation.org>, <samitolvanen@google.com>, <arnd@arndb.de>,
	<ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <ruanjinjie@huawei.com>,
	<viro@zeniv.linux.org.uk>, <rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
Subject: [PATCH -next v4 19/19] arm64: entry: Convert to generic entry
Date: Fri, 25 Oct 2024 18:07:00 +0800
Message-ID: <20241025100700.3714552-20-ruanjinjie@huawei.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241025100700.3714552-1-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.90.53.73]
X-ClientProxiedBy: dggems701-chm.china.huawei.com (10.3.19.178) To
 kwepemg200008.china.huawei.com (7.202.181.35)

Currently, x86, Riscv, Loongarch use the generic entry. Convert arm64
to use the generic entry infrastructure from kernel/entry/*.
The generic entry makes maintainers' work easier and codes more elegant.

The changes are below:
 - Remove TIF_SYSCALL_* flag, _TIF_WORK_MASK, _TIF_SYSCALL_WORK
 - Remove syscall_trace_enter/exit() and use generic identical functions.

Tested ok with following test cases on Qemu cortex-a53 and HiSilicon
Kunpeng-920:
 - Perf tests.
 - Different `dynamic preempt` mode switch.
 - Pseudo NMI tests.
 - Stress-ng CPU stress test.
 - MTE test case in Documentation/arch/arm64/memory-tagging-extension.rst
   and all test cases in tools/testing/selftests/arm64/mte/* (Only Qemu).

Suggested-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 arch/arm64/Kconfig                    |   2 +-
 arch/arm64/include/asm/entry-common.h |  85 ++++++++++++++++++++++
 arch/arm64/include/asm/syscall.h      |   6 +-
 arch/arm64/include/asm/thread_info.h  |  23 +-----
 arch/arm64/kernel/ptrace.c            | 101 --------------------------
 arch/arm64/kernel/signal.c            |   2 +-
 arch/arm64/kernel/syscall.c           |  18 +++--
 7 files changed, 103 insertions(+), 134 deletions(-)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 4545017cfd01..89d46d0fb18b 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -146,7 +146,7 @@ config ARM64
 	select GENERIC_CPU_DEVICES
 	select GENERIC_CPU_VULNERABILITIES
 	select GENERIC_EARLY_IOREMAP
-	select GENERIC_IRQ_ENTRY
+	select GENERIC_ENTRY
 	select GENERIC_IDLE_POLL_SETUP
 	select GENERIC_IOREMAP
 	select GENERIC_IRQ_IPI
diff --git a/arch/arm64/include/asm/entry-common.h b/arch/arm64/include/asm/entry-common.h
index 1cc9d966a6c3..04a31b4fc4fd 100644
--- a/arch/arm64/include/asm/entry-common.h
+++ b/arch/arm64/include/asm/entry-common.h
@@ -10,6 +10,11 @@
 #include <asm/mte.h>
 #include <asm/stacktrace.h>
 
+enum ptrace_syscall_dir {
+	PTRACE_SYSCALL_ENTER = 0,
+	PTRACE_SYSCALL_EXIT,
+};
+
 #define ARCH_EXIT_TO_USER_MODE_WORK (_TIF_MTE_ASYNC_FAULT | _TIF_FOREIGN_FPSTATE)
 
 static __always_inline void arch_exit_to_user_mode_work(struct pt_regs *regs,
@@ -61,4 +66,84 @@ static inline bool arch_irqentry_exit_need_resched(void)
 
 #define arch_irqentry_exit_need_resched arch_irqentry_exit_need_resched
 
+static inline unsigned long arch_pre_report_syscall_entry(struct pt_regs *regs)
+{
+	unsigned long saved_reg;
+	int regno;
+
+	/*
+	 * We have some ABI weirdness here in the way that we handle syscall
+	 * exit stops because we indicate whether or not the stop has been
+	 * signalled from syscall entry or syscall exit by clobbering a general
+	 * purpose register (ip/r12 for AArch32, x7 for AArch64) in the tracee
+	 * and restoring its old value after the stop. This means that:
+	 *
+	 * - Any writes by the tracer to this register during the stop are
+	 *   ignored/discarded.
+	 *
+	 * - The actual value of the register is not available during the stop,
+	 *   so the tracer cannot save it and restore it later.
+	 *
+	 * - Syscall stops behave differently to seccomp and pseudo-step traps
+	 *   (the latter do not nobble any registers).
+	 */
+	regno = (is_compat_task() ? 12 : 7);
+	saved_reg = regs->regs[regno];
+	regs->regs[regno] = PTRACE_SYSCALL_ENTER;
+
+	return saved_reg;
+}
+
+#define arch_pre_report_syscall_entry arch_pre_report_syscall_entry
+
+static inline void arch_post_report_syscall_entry(struct pt_regs *regs,
+						  unsigned long saved_reg, long ret)
+{
+	int regno = (is_compat_task() ? 12 : 7);
+
+	if (ret)
+		forget_syscall(regs);
+
+	regs->regs[regno] = saved_reg;
+}
+
+#define arch_post_report_syscall_entry arch_post_report_syscall_entry
+
+static inline unsigned long arch_pre_report_syscall_exit(struct pt_regs *regs,
+							 unsigned long work)
+{
+	unsigned long saved_reg;
+	int regno;
+
+	/* See comment for arch_pre_report_syscall_entry() */
+	regno = (is_compat_task() ? 12 : 7);
+	saved_reg = regs->regs[regno];
+	regs->regs[regno] = PTRACE_SYSCALL_EXIT;
+
+	if (report_single_step(work)) {
+		/*
+		 * Signal a pseudo-step exception since we are stepping but
+		 * tracer modifications to the registers may have rewound the
+		 * state machine.
+		 */
+		regs->regs[regno] = saved_reg;
+	}
+
+	return saved_reg;
+}
+
+#define arch_pre_report_syscall_exit arch_pre_report_syscall_exit
+
+static inline void arch_post_report_syscall_exit(struct pt_regs *regs,
+						 unsigned long saved_reg,
+						 unsigned long work)
+{
+	int regno = (is_compat_task() ? 12 : 7);
+
+	if (!report_single_step(work))
+		regs->regs[regno] = saved_reg;
+}
+
+#define arch_post_report_syscall_exit arch_post_report_syscall_exit
+
 #endif /* _ASM_ARM64_ENTRY_COMMON_H */
diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/syscall.h
index ab8e14b96f68..9891b15da4c3 100644
--- a/arch/arm64/include/asm/syscall.h
+++ b/arch/arm64/include/asm/syscall.h
@@ -85,7 +85,9 @@ static inline int syscall_get_arch(struct task_struct *task)
 	return AUDIT_ARCH_AARCH64;
 }
 
-int syscall_trace_enter(struct pt_regs *regs);
-void syscall_trace_exit(struct pt_regs *regs);
+static inline bool arch_syscall_is_vdso_sigreturn(struct pt_regs *regs)
+{
+	return false;
+}
 
 #endif	/* __ASM_SYSCALL_H */
diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h
index 1114c1c3300a..543fdb00d713 100644
--- a/arch/arm64/include/asm/thread_info.h
+++ b/arch/arm64/include/asm/thread_info.h
@@ -43,6 +43,7 @@ struct thread_info {
 	void			*scs_sp;
 #endif
 	u32			cpu;
+	unsigned long		syscall_work;   /* SYSCALL_WORK_ flags */
 };
 
 #define thread_saved_pc(tsk)	\
@@ -64,11 +65,6 @@ void arch_setup_new_exec(void);
 #define TIF_UPROBE		4	/* uprobe breakpoint or singlestep */
 #define TIF_MTE_ASYNC_FAULT	5	/* MTE Asynchronous Tag Check Fault */
 #define TIF_NOTIFY_SIGNAL	6	/* signal notifications exist */
-#define TIF_SYSCALL_TRACE	8	/* syscall trace active */
-#define TIF_SYSCALL_AUDIT	9	/* syscall auditing */
-#define TIF_SYSCALL_TRACEPOINT	10	/* syscall tracepoint for ftrace */
-#define TIF_SECCOMP		11	/* syscall secure computing */
-#define TIF_SYSCALL_EMU		12	/* syscall emulation active */
 #define TIF_MEMDIE		18	/* is terminating due to OOM killer */
 #define TIF_FREEZE		19
 #define TIF_RESTORE_SIGMASK	20
@@ -87,28 +83,13 @@ void arch_setup_new_exec(void);
 #define _TIF_NEED_RESCHED	(1 << TIF_NEED_RESCHED)
 #define _TIF_NOTIFY_RESUME	(1 << TIF_NOTIFY_RESUME)
 #define _TIF_FOREIGN_FPSTATE	(1 << TIF_FOREIGN_FPSTATE)
-#define _TIF_SYSCALL_TRACE	(1 << TIF_SYSCALL_TRACE)
-#define _TIF_SYSCALL_AUDIT	(1 << TIF_SYSCALL_AUDIT)
-#define _TIF_SYSCALL_TRACEPOINT	(1 << TIF_SYSCALL_TRACEPOINT)
-#define _TIF_SECCOMP		(1 << TIF_SECCOMP)
-#define _TIF_SYSCALL_EMU	(1 << TIF_SYSCALL_EMU)
-#define _TIF_UPROBE		(1 << TIF_UPROBE)
-#define _TIF_SINGLESTEP		(1 << TIF_SINGLESTEP)
+#define _TIF_UPROBE            (1 << TIF_UPROBE)
 #define _TIF_32BIT		(1 << TIF_32BIT)
 #define _TIF_SVE		(1 << TIF_SVE)
 #define _TIF_MTE_ASYNC_FAULT	(1 << TIF_MTE_ASYNC_FAULT)
 #define _TIF_NOTIFY_SIGNAL	(1 << TIF_NOTIFY_SIGNAL)
 #define _TIF_TSC_SIGSEGV	(1 << TIF_TSC_SIGSEGV)
 
-#define _TIF_WORK_MASK		(_TIF_NEED_RESCHED | _TIF_SIGPENDING | \
-				 _TIF_NOTIFY_RESUME | _TIF_FOREIGN_FPSTATE | \
-				 _TIF_UPROBE | _TIF_MTE_ASYNC_FAULT | \
-				 _TIF_NOTIFY_SIGNAL)
-
-#define _TIF_SYSCALL_WORK	(_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \
-				 _TIF_SYSCALL_TRACEPOINT | _TIF_SECCOMP | \
-				 _TIF_SYSCALL_EMU)
-
 #ifdef CONFIG_SHADOW_CALL_STACK
 #define INIT_SCS							\
 	.scs_base	= init_shadow_call_stack,			\
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index 6ea303ab9e22..0f642ed4dbe4 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -42,9 +42,6 @@
 #include <asm/traps.h>
 #include <asm/system_misc.h>
 
-#define CREATE_TRACE_POINTS
-#include <trace/events/syscalls.h>
-
 struct pt_regs_offset {
 	const char *name;
 	int offset;
@@ -2285,104 +2282,6 @@ long arch_ptrace(struct task_struct *child, long request,
 	return ptrace_request(child, request, addr, data);
 }
 
-enum ptrace_syscall_dir {
-	PTRACE_SYSCALL_ENTER = 0,
-	PTRACE_SYSCALL_EXIT,
-};
-
-static void report_syscall_enter(struct pt_regs *regs)
-{
-	int regno;
-	unsigned long saved_reg;
-
-	/*
-	 * We have some ABI weirdness here in the way that we handle syscall
-	 * exit stops because we indicate whether or not the stop has been
-	 * signalled from syscall entry or syscall exit by clobbering a general
-	 * purpose register (ip/r12 for AArch32, x7 for AArch64) in the tracee
-	 * and restoring its old value after the stop. This means that:
-	 *
-	 * - Any writes by the tracer to this register during the stop are
-	 *   ignored/discarded.
-	 *
-	 * - The actual value of the register is not available during the stop,
-	 *   so the tracer cannot save it and restore it later.
-	 *
-	 * - Syscall stops behave differently to seccomp and pseudo-step traps
-	 *   (the latter do not nobble any registers).
-	 */
-	regno = (is_compat_task() ? 12 : 7);
-	saved_reg = regs->regs[regno];
-	regs->regs[regno] = PTRACE_SYSCALL_ENTER;
-
-	if (ptrace_report_syscall_entry(regs))
-		forget_syscall(regs);
-	regs->regs[regno] = saved_reg;
-}
-
-static void report_syscall_exit(struct pt_regs *regs)
-{
-	int regno;
-	unsigned long saved_reg;
-
-	/* See comment for report_syscall_enter() */
-	regno = (is_compat_task() ? 12 : 7);
-	saved_reg = regs->regs[regno];
-	regs->regs[regno] = PTRACE_SYSCALL_EXIT;
-
-	if (!test_thread_flag(TIF_SINGLESTEP)) {
-		ptrace_report_syscall_exit(regs, 0);
-		regs->regs[regno] = saved_reg;
-	} else {
-		regs->regs[regno] = saved_reg;
-
-		/*
-		 * Signal a pseudo-step exception since we are stepping but
-		 * tracer modifications to the registers may have rewound the
-		 * state machine.
-		 */
-		ptrace_report_syscall_exit(regs, 1);
-	}
-}
-
-int syscall_trace_enter(struct pt_regs *regs)
-{
-	unsigned long flags = read_thread_flags();
-
-	if (flags & (_TIF_SYSCALL_EMU | _TIF_SYSCALL_TRACE)) {
-		report_syscall_enter(regs);
-		if (flags & _TIF_SYSCALL_EMU)
-			return NO_SYSCALL;
-	}
-
-	/* Do the secure computing after ptrace; failures should be fast. */
-	if (secure_computing() == -1)
-		return NO_SYSCALL;
-
-	if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
-		trace_sys_enter(regs, regs->syscallno);
-
-	audit_syscall_entry(regs->syscallno, regs->orig_x0, regs->regs[1],
-			    regs->regs[2], regs->regs[3]);
-
-	return regs->syscallno;
-}
-
-void syscall_trace_exit(struct pt_regs *regs)
-{
-	unsigned long flags = read_thread_flags();
-
-	audit_syscall_exit(regs);
-
-	if (flags & _TIF_SYSCALL_TRACEPOINT)
-		trace_sys_exit(regs, syscall_get_return_value(current, regs));
-
-	if (flags & (_TIF_SYSCALL_TRACE | _TIF_SINGLESTEP))
-		report_syscall_exit(regs);
-
-	rseq_syscall(regs);
-}
-
 /*
  * SPSR_ELx bits which are always architecturally RES0 per ARM DDI 0487D.a.
  * We permit userspace to set SSBS (AArch64 bit 12, AArch32 bit 23) which is
diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c
index 04b20c2f6cda..4965cb80e67e 100644
--- a/arch/arm64/kernel/signal.c
+++ b/arch/arm64/kernel/signal.c
@@ -8,8 +8,8 @@
 
 #include <linux/cache.h>
 #include <linux/compat.h>
+#include <linux/entry-common.h>
 #include <linux/errno.h>
-#include <linux/irq-entry-common.h>
 #include <linux/kernel.h>
 #include <linux/signal.h>
 #include <linux/freezer.h>
diff --git a/arch/arm64/kernel/syscall.c b/arch/arm64/kernel/syscall.c
index c442fcec6b9e..ea818e3d597b 100644
--- a/arch/arm64/kernel/syscall.c
+++ b/arch/arm64/kernel/syscall.c
@@ -2,6 +2,7 @@
 
 #include <linux/compiler.h>
 #include <linux/context_tracking.h>
+#include <linux/entry-common.h>
 #include <linux/errno.h>
 #include <linux/nospec.h>
 #include <linux/ptrace.h>
@@ -65,14 +66,15 @@ static void invoke_syscall(struct pt_regs *regs, unsigned int scno,
 	choose_random_kstack_offset(get_random_u16());
 }
 
-static inline bool has_syscall_work(unsigned long flags)
+static inline bool has_syscall_work(unsigned long work)
 {
-	return unlikely(flags & _TIF_SYSCALL_WORK);
+	return unlikely(work & SYSCALL_WORK_ENTER);
 }
 
 static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
 			   const syscall_fn_t syscall_table[])
 {
+	unsigned long work = READ_ONCE(current_thread_info()->syscall_work);
 	unsigned long flags = read_thread_flags();
 
 	regs->orig_x0 = regs->regs[0];
@@ -106,7 +108,7 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
 		return;
 	}
 
-	if (has_syscall_work(flags)) {
+	if (has_syscall_work(work)) {
 		/*
 		 * The de-facto standard way to skip a system call using ptrace
 		 * is to set the system call to -1 (NO_SYSCALL) and set x0 to a
@@ -124,7 +126,7 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
 		 */
 		if (scno == NO_SYSCALL)
 			syscall_set_return_value(current, regs, -ENOSYS, 0);
-		scno = syscall_trace_enter(regs);
+		scno = syscall_trace_enter(regs, regs->syscallno, work);
 		if (scno == NO_SYSCALL)
 			goto trace_exit;
 	}
@@ -136,14 +138,14 @@ static void el0_svc_common(struct pt_regs *regs, int scno, int sc_nr,
 	 * check again. However, if we were tracing entry, then we always trace
 	 * exit regardless, as the old entry assembly did.
 	 */
-	if (!has_syscall_work(flags) && !IS_ENABLED(CONFIG_DEBUG_RSEQ)) {
-		flags = read_thread_flags();
-		if (!has_syscall_work(flags) && !(flags & _TIF_SINGLESTEP))
+	if (!has_syscall_work(work) && !IS_ENABLED(CONFIG_DEBUG_RSEQ)) {
+		work = READ_ONCE(current_thread_info()->syscall_work);
+		if (!has_syscall_work(work) && !report_single_step(work))
 			return;
 	}
 
 trace_exit:
-	syscall_trace_exit(regs);
+	syscall_exit_work(regs, work);
 }
 
 void do_el0_svc(struct pt_regs *regs)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Oct 25 10:31:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 10:31:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.825999.1240375 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Haw-0005Dy-TK; Fri, 25 Oct 2024 10:31:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 825999.1240375; Fri, 25 Oct 2024 10: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 1t4Haw-0005Dr-QF; Fri, 25 Oct 2024 10:31:02 +0000
Received: by outflank-mailman (input) for mailman id 825999;
 Fri, 25 Oct 2024 10:31: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=hagD=RV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t4Hav-0005BE-7O
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 10:31:01 +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 397e7792-92bc-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 12:30:58 +0200 (CEST)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2fabb837ddbso29237541fa.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 03:30:59 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f02989bsm54774866b.80.2024.10.25.03.30.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 25 Oct 2024 03:30:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 397e7792-92bc-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729852258; x=1730457058; 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=C5CkQd0BCM/pGul5I9/iyw5Q1vTMTxTJgG7VAFArIRE=;
        b=mGz0Egw7B43jsXezb1TPDWXcWBAyXjzcOHimZwvce6Iq7GZomrzm3alP0oO4A/0L06
         FzdWWsIPx/F404XUwen5Qj4w8EO3x7daArNHmZXTtEK9RKwQjUEN5hYhte2gkNKWniMm
         doHME2w4B1/NVr+l+oc9rd7ZF2C0kVRhl0mjw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729852258; x=1730457058;
        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=C5CkQd0BCM/pGul5I9/iyw5Q1vTMTxTJgG7VAFArIRE=;
        b=FP1cA0gDw4iVIO58rOU6GHF4Cx7P3Swt+soVQM92BdAFuIcXo15dTpeQ518LJ876kf
         igytiv4eTttscu8Xg6NlimF1jir7pNl/Dl3FOHxxNSJBy9MG9VbvhMByv+Mdkqw+7y8z
         SGVYsJTexij5ANO2Nsn0NySWhfjDbB8Y1XHjPe/BingJOOi43v/o/G6XCP9i+GrfFRKA
         nzKZeH1Yz75SdLrkdccIvvzGA4nCyvNEAbvFM5VkIX/1RiDbhqPm1p8V0cHS30RaSC7a
         OPxr06eOGkEYA7ZNAckaeeeTrj58xPFeFeDZFVLuTDJW18FrMA5iBetL95DqAWmDgVcc
         DjHQ==
X-Forwarded-Encrypted: i=1; AJvYcCWAILX8Cq3UcOXMML5v+SYLUqGuI8QqCGHuXonwazM70b9ELaKNKnz/dMjdAKNP0O7g8Go3HWSeyOA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwYFh9TfQBM8iEjJSc/vm1GzR5ds95+bNdbIEnSI9vpMuWNofAY
	Vss++WUylpmKXxwMS789tOgPHOuxmas9qPSJLrQC8XaT+pNsLYStoh7WpIgzzxw=
X-Google-Smtp-Source: AGHT+IEAfPMf9p0bUmi+Xjiu7iOoy/yAN+Thgvmcq3WEobywbEfihu8PrkPyq3pyYSNWmAhedF/UjA==
X-Received: by 2002:a05:6512:1282:b0:533:4785:82ab with SMTP id 2adb3069b0e04-53b1a315e50mr9246019e87.1.1729852258350;
        Fri, 25 Oct 2024 03:30:58 -0700 (PDT)
Message-ID: <8243b5b3-1615-4b46-80be-e1e0e8540be7@citrix.com>
Date: Fri, 25 Oct 2024 11:30:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v9 01/13] xen/common: add cache coloring common code
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20241025095014.42376-1-carlo.nonato@minervasys.tech>
 <20241025095014.42376-2-carlo.nonato@minervasys.tech>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241025095014.42376-2-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25/10/2024 10:50 am, Carlo Nonato wrote:
>  SUPPORT.md                        |   7 ++
>  docs/misc/cache-coloring.rst      | 116 ++++++++++++++++++++++++++++++
>  docs/misc/xen-command-line.pandoc |  37 ++++++++++
>  xen/common/Kconfig                |  22 ++++++
>  xen/common/Makefile               |   1 +
>  xen/common/keyhandler.c           |   3 +
>  xen/common/llc-coloring.c         | 111 ++++++++++++++++++++++++++++
>  xen/common/page_alloc.c           |   3 +
>  xen/include/xen/llc-coloring.h    |  36 ++++++++++
>  xen/include/xen/sched.h           |   5 ++
>  10 files changed, 341 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

I see you've got cache-coloring.rst which is great, but it's not wired
into the toctree.

We do have real Sphinx docs, https://xenbits.xen.org/docs/latest/
rendered from the tree.  For now, feel free to put it in Unsorted Documents.

Per the root COPYING file, Sphinx docs are licensed CC-BY-4.0.  Please
include an SPDX tag, as you don't have one currently (see other rst
files for how.)

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 11:16:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 11:16:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826013.1240385 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4IIw-00016m-8B; Fri, 25 Oct 2024 11:16:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826013.1240385; Fri, 25 Oct 2024 11:16: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 1t4IIv-00016f-Ul; Fri, 25 Oct 2024 11:16:30 +0000
Received: by outflank-mailman (input) for mailman id 826013;
 Fri, 25 Oct 2024 11:10: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=seBE=RV=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1t4ID5-0000Tb-1C
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 11:10:29 +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 bbf202a3-92c1-11ef-a0bf-8be0dac302b0;
 Fri, 25 Oct 2024 13:10:25 +0200 (CEST)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so254955666b.0
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 04:10:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bbf202a3-92c1-11ef-a0bf-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1729854624; x=1730459424; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=IBc/KFVuGMsZ6cjyfmH0KbTcO0pZQvUrXTp69CZdDzk=;
        b=ZJQIORKJLrnbOAW/YQ1xqXRtwbPKRMb2bPu/QCE0ULpza5MQ2m0XzNdWf+IBHTVOGt
         7aQQQLGTd17NIe0/ecdcQOqb6dWAsrzwmyv2krrkB1IrFfBnb/5bUEcaIkTEIEFAyeV/
         BwnaDguAWcmhzLv+EnGMSPDxZdA0OK6ApSLqE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729854624; x=1730459424;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IBc/KFVuGMsZ6cjyfmH0KbTcO0pZQvUrXTp69CZdDzk=;
        b=RjewGr2+e8fjAS5k93Md+JhSx+ONdbhyMS39LulzBnk5enVMlpxEJ+EgpAsqfR17xW
         rSI8ooLPEo7DJV/zQLhZGtFT4J5QuI7vmjzC6X6MA/QnWSuJry8xoS/s8PV5mWL+9Hmt
         ujNvGbYl2DfkMLfV/qRiOnrpaL2qfTgDrMkbLWk6CCHii/qc6Px7qiPA29X+t0R92xkm
         9s3lvYRLWkG7Yy9NSXDMCbrGk8Glfw8sKUNpd9ydw2JkN4jLu3BBxDV6D8k8iK3Hvy2R
         roICdWekohdi5+FwPt9jOZu3KF1tVetNhtNZPqFePBlac16wxGTudbUIBd47zl1v8LSg
         Z+Wg==
X-Gm-Message-State: AOJu0Yy7KtWlXZLRs7SxZgXLqWSrpxkGY3QVkqcJ2ik8e79EI55Y44Z3
	HrWriV51YvESDSvzjwlAvX0nSum0N3mQ54Dbw9QgK1x1Wlh81YZgqVZvwfcaUfB3KFQ4Og4G+yS
	p51huZ/qCXpNrmhx16Z77uPicQmBlqqqQAQhZBrCqVhdJ/U1K/DygwQ==
X-Google-Smtp-Source: AGHT+IETVUDmaN1G2OS6sDF6wmcW9acwo4wi0H46CjvO7lAVDBSWfiRIIIloeDdcKgUaT1YUVQeFawvJ6U6mag6Q+MA=
X-Received: by 2002:a17:906:f594:b0:a9a:bbcf:a39f with SMTP id
 a640c23a62f3a-a9abf92cc25mr818695166b.43.1729854622320; Fri, 25 Oct 2024
 04:10:22 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Fri, 25 Oct 2024 12:09:45 +0100
Message-ID: <CAO-mL=xfA=s2zVNJ=MM6dmwUmXnm1R7-AQP_PPOJARb=S3sjfg@mail.gmail.com>
Subject: Xen Project meetup slides - Embedded systems and Xen on Arm
To: xen-devel <xen-devel@lists.xenproject.org>
Cc: =?UTF-8?B?4oCL4oCL4oCL4oCL4oCL4oCL4oCLTHVjYSBGYW5jZWxsdQ==?= <luca.fancellu@arm.com>, 
	Julien Grall <julien@xen.org>
Content-Type: multipart/mixed; boundary="0000000000004741af06254b2a39"

--0000000000004741af06254b2a39
Content-Type: multipart/alternative; boundary="0000000000004741ae06254b2a37"

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

Hi all,

Thank you to those who attended the Xen Project meetup last night in
Cambridge.

I have attached the speaker slides in this email for any community members
who are interested in the talks given by Julien and Luca.

*Talk: The journey towards using Xen in embedded systems*
Speaker: Julien Grall
About: Julien Grall is a kernel/hypervisor engineer in the Amazon EC2 team.
Julien has been involved in Xen community since 2012. Today he is a Xen
Project committer, and he maintains Xen on Arm.

*Talk: Xen on the Arm=C2=AE RD-1-AE*
Speaker: Luca Fancellu
About: Luca Fancellu is a Staff Software Engineer in the software division
at Arm, working on the latest designed Automotive platforms, contributing
on the Xen Hypervisor from a couple of years. Luca has experience in
safety-critical and embedded software for the Automotive sector, you will
probably find most of the products he worked on running on wheels right now=
.

Thanks,
Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>

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

<div dir=3D"ltr">Hi all,<div><br></div><div>Thank you to those who attended=
 the Xen Project meetup last night in Cambridge.=C2=A0</div><div><br></div>=
<div>I have attached the speaker slides in this email for any community mem=
bers who are interested in the talks given by Julien and Luca.=C2=A0</div><=
div><br></div><b>Talk: The journey towards using Xen in embedded systems</b=
><br>Speaker: Julien Grall<br>About: Julien Grall is a kernel/hypervisor en=
gineer in the Amazon EC2 team. Julien has been involved in Xen community si=
nce 2012. Today he is a Xen Project committer, and he maintains Xen on Arm.=
<br><b><br>Talk: Xen on the Arm=C2=AE RD-1-AE</b><br>Speaker: Luca Fancellu=
<br><div>About: Luca Fancellu is a Staff Software Engineer in the software =
division at Arm, working on the latest designed Automotive platforms, contr=
ibuting on the Xen Hypervisor from a couple of years. Luca has experience i=
n safety-critical and embedded software for the Automotive sector, you will=
 probably find most of the products he worked on running on wheels right no=
w.</div><div><br></div><div>Thanks,</div><div><div dir=3D"ltr" class=3D"gma=
il_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div>Kell=
y Choi<br></div><div><div style=3D"color:rgb(136,136,136)">Community Manage=
r</div><div style=3D"color:rgb(136,136,136)"><a href=3D"https://xenproject.=
org/" target=3D"_blank">Xen Project</a><br></div></div></div></div></div></=
div>

--0000000000004741ae06254b2a37--
--0000000000004741af06254b2a39
Content-Type: application/pdf; name="=?UTF-8?B?WGVuIG9uIHRoZSBBcm3CriBSRC0xLUFFLnBwdA==?=
	=?UTF-8?B?eC5wZGY=?="
Content-Disposition: attachment; 
	filename="=?UTF-8?B?WGVuIG9uIHRoZSBBcm3CriBSRC0xLUFFLnBwdHgucGRm?="
Content-Transfer-Encoding: base64
Content-ID: <f_m2om705c0>
X-Attachment-Id: f_m2om705c0

JVBERi0xLjQKJSDi48/TCjMKMApvYmoKPDwKL1R5cGUKL0NhdGFsb2cKL05hbWVzCjw8Cj4+Ci9Q
YWdlTGFiZWxzCjw8Ci9OdW1zClsKMAo8PAovUwovRAovU3QKMQo+PgpdCj4+Ci9PdXRsaW5lcwoy
CjAKUgovUGFnZXMKMQowClIKPj4KZW5kb2JqCjQKMApvYmoKPDwKL0NyZWF0b3IKKP7/AEcAbwBv
AGcAbABlKQovVGl0bGUKKP7/AFgAZQBuACAAbwBuACAAdABoAGUAIABBAHIAbQCuACAAUgBEAC0A
MQAtAEEARQAuAHAAcAB0AHgpCj4+CmVuZG9iago1CjAKb2JqCjw8Ci9UeXBlCi9QYWdlCi9QYXJl
bnQKMQowClIKL01lZGlhQm94ClsKMAowCjk2MAo1NDAKXQovQ29udGVudHMKNgowClIKL1Jlc291
cmNlcwo3CjAKUgovQW5ub3RzCjkKMApSCi9Hcm91cAo8PAovUwovVHJhbnNwYXJlbmN5Ci9DUwov
RGV2aWNlUkdCCj4+Cj4+CmVuZG9iago2CjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9M
ZW5ndGgKOAowClIKPj4Kc3RyZWFtCnictVZNTxRBEO0ETnUxXjx7ZElouqu/Ey8akSyJH+gmBjd7
MKIQWBTQxB/DwT+hP0CN/8vXM/vRsywwuOtOZqbnTXdVddV7NXtGWirKx0Y9cFbh/u6EzggDpZOP
TtlqxuwzJuXbCdkYfFTV8uH0gYM1nAdDmnnI10N6TR/h5Iw2Hw5PD98qOvhce6Hzg3+ye0gf1mkX
x1lhVjfMbljpLW1wvhbma2DGhU4yBYD1mhIpHC3L4Ov1KhnVfLzmuiLV5mDq0hJkfrN78vbgPdPj
T1Uo1+2aTbJWJk/svOMgtUesrJLVMFuAwwL0rDxAzuBkeQFOcpAdmzgm0XRUMWj8kO+eZbTBYx8+
GMkJBidzxieCfdTD/N45bT759PGLIW2kqX7U+zBLVa2l0wk/6tVM7O3TmvguVsRv8RPnH4xWxYF4
06HeEW31/tlV3jRyP9/h2PgNybiuQNr7FGRgYoYfJ9mgQFPQ2pS4Tvso6YVknIpw8hWGdnAeUVSZ
b0+pP1C0X4k2OB89B49hDMrFyJZebt/C6auW7FIRSsTaE0o6OSNtnGLDKWZZWS9Ng1oFVqhr+aZH
OoMokTY3lplmdpn0l5ZMdGZvpzPoyKmcPGQ0WacdqF+gwxI1HBB8U2hTbBGduYBmwbqVztgCviwx
NlKZGcb3IbL74lhsdShTb008gM7uddAeRk99sSW6Yg/HcYcG1Nu5WXtz3WtOMgRj7dwwliG8IuPG
QANGNys2QRsVs87EJH1qlKwAF+qNmqV1Ni25ZmtVO7wQv9AYL8btsV1bnF+anArkw///0gR2SGz+
vHIIIYFyZoINC0wH55zPBSrKUoKLlEUnhXZhTCsteS99/tk5xXFWVtmKM4KKHfio9NOFflbEoLoe
iRd4Hn3FxA+MpLgjvqGMK22VdV0w6Ht1NLZBlVVxtx01rrYdtARFdLrCxTL5oYPXNsrkKoZo79DY
S3RYoOjrjM4emt22ABfhiMUQDYO5DUcMz9Wuqb5oTWpI9No+jl2cz0GB66myJx50qH59hIlqNPGw
k/+9VOiET/l+nGfV0weABni9K07HULc9z67YUFDSI/HNHe03ohTP8O1QoxDquLZzxAjkuegv5B+l
xT9NH+PlONpzMB9/AVyle/MKZW5kc3RyZWFtCmVuZG9iago4CjAKb2JqCjg1MAplbmRvYmoKOQow
Cm9iagpbCl0KZW5kb2JqCjEwCjAKb2JqCjw8Ci9DQQoxLjAKL2NhCjEuMAo+PgplbmRvYmoKMTEK
MApvYmoKPDwKL0NBCjAKL2NhCjAKPj4KZW5kb2JqCjEyCjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFn
ZQovSW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMTI4MAovSGVpZ2h0CjcyMAovQ29sb3JTcGFjZQov
RGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5ndGgK
MTUKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcHBggK
EAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcH
CggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKP/AABEIAtAFAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/
xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKC
CQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaH
iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp
6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAME
BwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYn
KCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeY
mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/
2gAMAwEAAhEDEQA/APlSiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRS0AJS0
UUwCiiigAooooAKKKKACiiigAooooAKWkpaBiUUtFACUUtFACUUtFACUUtFACUtFFABRRSgc0AFF
FFAxKKKKADFGKKKBBRS0UDEooooAKKKKACiiigAooooEFLRRQMKSiloASilpKACilooASilooASi
iigAooooAKKWkoAKKWigBKKKWgBKKKKACiiigAooooAKKKWgBKWiigAooooASilooASiiigAoooo
AKKKKACilooASlopKAPSPC5H/Cn/ABKM8/aBwGJP/LP+Ht9e/wCFeb16R4XI/wCFP+JRkZ+0DjcS
f+Wf8Pb69/wrzeuiv8MPQ83AfxK/+P8ARBRRRXOekJRilooFYTFLRS0DCkpaKAE+tBPpRiigBKKK
KCQpKKKQBRS0UWASiiigAooooAKKdkDpSUwEpRRiigAz6UUZpKAFopKKQBRRS0AJRS0UAJRSgZPF
LtOMnpQA2inoueTwKd8q01G4rkeDQAScUrHJoDYHFGgxxUKMk0ygknrSgetD12EIODSliaDjtTaW
wwpQPU0lFIBxx2ptFFABRRRQAUUUUAFFFFABRRRTAKKKKACiiloASiiigAopaKYCUUtFIBKKWimA
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
AAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8t
MC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAA4ALMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAA
AAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB
kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT
1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI
CQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6
goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5Ur3D4O/s+6341jt9V8QPLovh6VEmhk2q092h
bkIpPyAqCQ7DuhCuCSD9lz4Yp418UPrWs28U3h7SXG+GeJmS7mKkrGDwpC/K7Ak9UBUhzj7koA81
8M/A74eeH/LeDw5bXtwIRC8uok3XmdMuUcmMMSM5VRjJAwDitu7+GPgW6tZreXwd4fWOZGjYxafF
G4BGDtdVDKfQggjqDV/xj4y8O+DLBbzxPq1tp8T58tZCWklwVB2RqCz43LnaDgHJwK8ltP2pvAs9
1DFLZeILaOR1RppbaIpGCcFmCylsDqcAn0BoA5/4o/swadcWtzqHw+nltLtELrpVw/mRTEBQFjkY
7kJw5+csCzAZQcju9J/Z/wDhg+lWb/8ACP3M+6FD5t1dXUUz/KPmdNy7WPUrtXByMDpXf+DvGXh3
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
NTYxCmVuZG9iago3CjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250MwoxMwowClIKPj4KL1BhdHRlcm4K
PDwKPj4KL1hPYmplY3QKPDwKL0ltYWdlMgoxMgowClIKL0ltYWdlNAoxNAowClIKPj4KL0V4dEdT
dGF0ZQo8PAovQWxwaGEwCjEwCjAKUgovQWxwaGExCjExCjAKUgo+PgovUHJvY1NldApbCi9QREYK
L1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKMTkKMApvYmoKPDwKL1R5
cGUKL1BhZ2UKL1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKOTYwCjU0MApdCi9Db250ZW50
cwoyMAowClIKL1Jlc291cmNlcwoyMQowClIKL0Fubm90cwoyMwowClIKL0dyb3VwCjw8Ci9TCi9U
cmFuc3BhcmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjIwCjAKb2JqCjw8Ci9GaWx0
ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMjIKMApSCj4+CnN0cmVhbQp4nL1Yy24bNxQlkKy4Kbpq
s2uKLqIYpfl+AN60qFq4iyQCBOThehHUjQRLTiKn/5Bt/iCL/kJ/oA36Ff2ZnsvRSJQ0ciObygxG
Q16JvMNzDg85mnElJKfz26bgrMT91ws+4yhIlXx00uZfrNfxI7pdcBuDjzI3ny4rOlijqTDlaxX6
HPPH/CWSzPjhd9PX4+eSj97kZ2mvy9G1eh/zF/f5AOes6FxR580w0a3SQQWRPNfOW+1E0MiindZB
2FgEp0XQq+SkoNiy9TK2SEppTWwhXZYynm2F7sYIE6UNlvtghDTGtpjbFKVJWm8p4vm/H6KT4SU/
/PHVy98NV+gqH3z4Yp1NpYRTCQcfNmQNz/g99qHHh+e8P6ybzYvgnAo6dGdtc/4PTFcRp02ydk6c
AzHKE3EyWWVFGZwWQa+lRzCzuWheBHenzmsRbfC+oU4ndLigjuaHjCg67VAjLF0TNVWY+5PdYh/Y
X7j+Qek2G7FnJZe10hM4mFJ7I9JC75gBkWabM8mL5Gii++gNZrEpotMy6j1lyDOz6KGIFpN/fyke
38/GZYCMJ7U1qMkUrQi+sxXQODy+eD76zfEfXi1w22pPSYVAJpikI0/LT+2kKULTZcg6Dce2ZEzz
dsvI7tpG71kRmrvlMkAqAkI6OJSCVSp41yEnG9FiU8gmAaS4ouJv2ISds6dswE7Y8UK/N0mjMLE1
OLAd6SrodQGtj0hkbcnJIlaQoq2JtiGqbVqEbkKL0hqaVTrtxo3RXdwI6bXjUD40WvLzx9JTyELw
6MoE7akYtXE6fXQK4+ljLcEJUtxhJz2e8OU9KGHU48rn8in7CdroIzZA+QQed97+7JQq7BE7xl2w
z9h79ne2wM/xeQYxHS37e9DjeTdAjbJDnvLhz1XG47CoWBM6QNtVxlcxAsEosl23T1a6khAzhwDt
AUCc9cj+CcSjTJDJZUK/qdtc74ORAZGk5Px7Im9StqgIv8HOyynndTdENTlQ2mAV3ScBGxkI/Qjc
0hxJkn8zCVb0XhFPbYIwWc+bw90NTNp+Ybu1MV+wwgYjFRJ4JdIqnm+r4Rmk8BKH30xDoH5JInSN
ORRKLW3nYY/HBezHCEzYGHCXNrXaUjfR9+xgpZ8+vh3jJOO5xX65ROEZzgl6HbB+m6Twquxz16NU
e+Hzsbl/iwGbcUyTTdQr06ollia1vk3dB7NdmYjcrwtyybTa1WLEnqwuH2e4nhLV7E1tvI20Im4B
o6YpaYuXrA20K/tSVxICOr9tAFJaXe18IhRCXvH8PHkG2btWHK2mdyUtrDN4ietEZWedq2aLZbvE
jjgpMCRBL0Ph5lrfLqVC8B3piIcv4Eowltd4BXyX14R/cR1Q6E7eCh2RAS0Wb9oylQY1gf4fVde/
M7AZT3+UdGG0By4MhvcJuehKR1zcZQc9HhrR32Z3a+OqrBFWJryhd453H7gi46fEtSNd3oT2eCNY
f939zhWgYhmP0rnQPdiafm1iyttUv9fXq44khKHEbqPd05R+QLb8sKIRK0ANaLaOtyag1rj8j9Re
Ae1KQoB+laF70i5545oY0s4hbBnfR/+BQed/oLR8qAplbmRzdHJlYW0KZW5kb2JqCjIyCjAKb2Jq
CjExODcKZW5kb2JqCjIzCjAKb2JqClsKXQplbmRvYmoKMjQKMApvYmoKPDwKL1N1YnR5cGUKL0lt
YWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAoxNDQKL0hlaWdodAo0NQovQ29sb3JTcGFjZQov
RGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL1NNYXNrCjI2CjAKUgovRmlsdGVyCi9EQ1RE
ZWNvZGUKL0xlbmd0aAoyNwowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAG
BAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAt
KDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgALQCQAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAA
AAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh
CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV
1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK
C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy
0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKD
hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+W7K0nvruK2tImlnkO1UXv8A59a9R0T4eWFtHu1Z
2vJiOUVika9OmOSevPHXpR8K9JS20h9ScKZrolUPXainGOmQSQc844Wus1W/g0vTp727LCGEZbaM
k5IAA+pIH417uCwVONP2tXW+uuyR8fm2bVp1nhsM7WdtN2/60If7C0f/AKBOn/8AgOn+FYPiHwLp
uoxSSaei2V5jK7OImPGAV7Dj+HHXPNc1c/ErUmmY21nZxxfwrJudh9SCM/lWx4W8fC/u47PVYFim
mkCRSQKdmTwAwJJHPf37YzWjxODrP2bW/kYLA5nhV7eLennf8OptHwR4dz/yD/ynk/8Aiq87+Iml
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
7brD8mnRKlVwlS8ei6qF5WkcTF3/22C//gxV/yK7dteucRaKLhtUweFN+jw2kw+eKmwfA/u6H7I3
ge3cbkNgE3Wkc5K36fPU+vvgWYnt78Aux/ZCsDOdS7NDHtzmPb6Mhv9+Ls8BTgvDk4zt1WAXYDsV
7PmErITBTl6y3y1dnvU+eLpHYzsH+jKwTR9fviJkJ78GVKnLs9QHjzUS2wugz4zteFhWnDwWOJU4
bnShLk+2D562T7GdBX0TsD2uB/HA3t8Wxo2Gc+LyzOH2UJ5WI7YzZdv+hSYPbApNIdzoDME8cH2a
FU//Xs0WzGOR/+6M4kYvFcwD95fDTHgqFcxDt69CbnSNYJ5EWJ8v8JKD4HVFEA/dvzpHcpLpkiGI
h5yD8H3qYAN9tBbFswrCXzKrplt5cFAYTwR9fK5TLkHxT8XzkJ/onJdCWZx/6CFxPGNf0klrE2mZ
YRl9shbJQ/agWbsOJvV3m2GLrkiMxPGEPsDzOu6f+bHccqVFUkgcD0lTvx2rJZCHrP3IeMi3WhTN
sBoI5SFrFF8PvHpkvvNheEjKXQ7OjTii//3w/fGQ4K30XdQj645A0k//+2oWnwe+r3Yyz/PzoC8B
25+DncukDFt/C91o9eWudyf/0soKtyoX08Loo7LGE64yj3mPVwRiO0FuOxKF7cgq2Vd+KzGMXbbn
t9/raq+dKkkP5k/1AWRQf1cQprdS52IbCmVuZHN0cmVhbQplbmRvYmoKMjcKMApvYmoKMjg1NApl
bmRvYmoKMjgKMApvYmoKMTE0MgplbmRvYmoKMjEKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQzCjEz
CjAKUgovRm9udDYKMjUKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUK
MjQKMApSCj4+Ci9FeHRHU3RhdGUKPDwKL0FscGhhMAoxMAowClIKL0FscGhhMQoxMQowClIKPj4K
L1Byb2NTZXQKWwovUERGCi9UZXh0Ci9JbWFnZUIKL0ltYWdlQwovSW1hZ2VJCl0KPj4KZW5kb2Jq
CjI5CjAKb2JqCjw8Ci9UeXBlCi9QYWdlCi9QYXJlbnQKMQowClIKL01lZGlhQm94ClsKMAowCjk2
MAo1NDAKXQovQ29udGVudHMKMzAKMApSCi9SZXNvdXJjZXMKMzEKMApSCi9Bbm5vdHMKMzMKMApS
Ci9Hcm91cAo8PAovUwovVHJhbnNwYXJlbmN5Ci9DUwovRGV2aWNlUkdCCj4+Cj4+CmVuZG9iagoz
MAowCm9iago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjMyCjAKUgo+PgpzdHJlYW0K
eJy9WMtuGzcUJWCvuAmyCZpluooSZMw3h4A2LeIa6SKJAQGB7WoRVI0ER3nYyT90VcT7LLwoki9o
P6Ct2yL9qp7LedGjsRNbI2ugGc6dIS91zzmXlzrgMhOcjntFwxqB648v+AFHQ8jgcitMfKN9j5fo
8oKb3LtcxO7z5kZ5oxU15rx1Q+cZf8JfwskB3/hm/nr2VPDpmziX6ns4vdToM/7sDt/GcZAMLmnw
4mdiWKm89FlwXFlnlM28ghdllfKZyRPjPDE6GazIyNb0bmy1U3Kr8yqkTSvGs7qhq9aZzoXxhjuv
M6G1qWJuQi50UOqMJub/7QiDjA75xnevXr7VXGKo+OGjZ200pcysDPjwUQHWaMJvs5MBH+3zzVG/
3lzmrZVe+W6vlc/PhOk84JQOxpTAWQAjHQEngpEmS43zxOiUcDBGNOvuifHi0DmV5cY7V0CnAgas
oSN9iBxNqyzuKJa2sOpekPuNrbG/2B/4/o3WOpuy3RTLvtxTcCCplQFpwHcoICe1WR1cFiwJ3eVO
Q8U6sc5Tq3PkISozGSGxJuJfnYsnd2Li0oiMI7YVURMhN5l3nb0QjY0HL55Of7L8/qs6bmempyC9
pyQYhKWcFmdthU5M88ZkrELGNpSYyn6N5eLcxuiREYrbZhkgFiFCylu0vJHSO9tBJ5OjxyKRdUCQ
8oRAe+DxTbY34AHPb7N9Nh1w6WJ7zLbYc7YJ2zbae6D4fvXamG7YY/YA14xdY8fsz6iA6wM+5qPv
owKWmajVSOrSCLc44T4YX4PjcuQgY1JUa1sCqzI6NwXUVdfEtAywUimwXqpwMXS16kI3E05ZDu2A
5Wme+rXJSpSEMHWpvXLUzJW2KnyxC03MaDsgComSDDEJEinAIh+p8mDA89h4OEDQClMkmS7be6AY
db2G8wxUewRLzSf2C65jDNriGc7b57OWBltLnQ540TiAebOa1Lh0P6me7rN3CYeXjVdQhGcXKDUk
X4Q4VklZUMYsasXRE0jF6YxWB6yAKfg/XwZ85TIXPwvevMgc3IVOb8SEuwBrGxwYEib3iqC+Qch/
OESwd9kE4CCNSFGBcplYnz095USWe2m7g3GxoGPFRfIJxYrb8gNtB+8FZhB0ZjResctLLjJ1gUIB
41PAuxxRwL+KmnkMbUxIWZHyoiT3NAJRKawQ5+9ofY37cUX515WMCl0Wsp1dGpvyR4gSIl/8lOaW
FmSrTTAca3RH6AS71VvwjLWZkKDDWcFbY46dlAllHQGcsB2Es04PwybDVGvg3VO5psgzMwp1Ero1
9qEqB8s3X7P/2BEKxWPYPy4X2NM8BN9BUewBO3nYPwtpwVJmxZlMWp1dTRZreyJObBDstr1mVab9
mM1uAuWdKK2t3lOYQL1vlPSLYVhF/pI5FmKz6uS14IUCfUIrMcL4nM0GtLuJ4W3WhpakxuzhqRwW
F5Tp6cVEFhgd4oVjFAyfoLhC24t6/BTfoAHXo6MC5k0k0n+xnetTo07Fykx3hLr/QCvEMUce6CyZ
e5Qo5hq5lV+JTLu8EYMycGcvzdG7caHbwHkTj6gSKfR6HUp9RCVjfP4h1qdFAbqBZ5dF+8yJ02ZW
mRy7/844rULHyisEqw3ICqTc5YiwOE+PAyqAqXXMbrF/cHQr8gjlPb3Rp/o0dnPW++55X0qAnZV+
/BVaxv+xlkD63I0dalq72p1d2wPhug6wbkA6AFG5MjNvxcJpm+CGzIbI4VQY7aT1UrsMJcRvoNNd
9jFu3iilDxv06ww8xDNaWe/jTFodxjcntJ/AqNUyUP/5sNw+86jPvV6eZz640IHTCvIvZZiryb1t
T8SJxzXONW77zR56xt6x9zi2mk13ssfYAYSTEhtRMOQooruLa7Ix340jYJeiy237Xuw6hHGGR8fs
PQYoy/TY+5iyftN/Vj9+UznvLjPQM+HOvSodNT+n79XBa5/lxqCMXkCxv3QtsckiBhnlzijYP/sH
Gh3/A0rs7qwKZW5kc3RyZWFtCmVuZG9iagozMgowCm9iagoxNDkwCmVuZG9iagozMwowCm9iagpb
Cl0KZW5kb2JqCjMxCjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250MwoxMwowClIKL0ZvbnQ2CjI1CjAK
Ugo+PgovUGF0dGVybgo8PAo+PgovWE9iamVjdAo8PAovSW1hZ2U1CjI0CjAKUgo+PgovRXh0R1N0
YXRlCjw8Ci9BbHBoYTAKMTAKMApSCi9BbHBoYTEKMTEKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgov
VGV4dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagozNAowCm9iago8PAovVHlw
ZQovUGFnZQovUGFyZW50CjEKMApSCi9NZWRpYUJveApbCjAKMAo5NjAKNTQwCl0KL0NvbnRlbnRz
CjM1CjAKUgovUmVzb3VyY2VzCjM2CjAKUgovQW5ub3RzCjM4CjAKUgovR3JvdXAKPDwKL1MKL1Ry
YW5zcGFyZW5jeQovQ1MKL0RldmljZVJHQgo+Pgo+PgplbmRvYmoKMzUKMApvYmoKPDwKL0ZpbHRl
cgovRmxhdGVEZWNvZGUKL0xlbmd0aAozNwowClIKPj4Kc3RyZWFtCniczVZdbhMxELZUniyeOQOp
hGOPx2Nb4gVEQeUBESlSaas+VJQmatOWFMQVOAhX4AII9V7MeJNdK0mhP6nErnZ3POuZ8c73zXin
2hmr5XzWCAEtPz+e6almwbpMKVgsMxbHPEkeZxpTpGSL+aQbQEQPIkz0wkDuY72jzznIVPdfTD6P
D60efSlrmV+Xozt5H+vjTT3gc1o5d+K8+Ux26yC6aDJpCIQQTASOAgEgGkyVclIpyeVgjeg6607X
BpWwPs1T2kkln/OBPL03PlmMqCl6Y73Hec4xJ+szwDUir//lkJ0ML3X/9cX5V68duyqHHh4voumc
CS7zoYcNWMMj/VRd9fTwRG8N1xuNTAzBRYiro85j/iNNfwMOfEacARcYGEcCnM3o0NTKSaUksMTK
gmZrXilvDx2BSRiJGuggs8MWOqkPm1gMEHgkuQyN1q8FuZ9qQ/1Wv/i6YumRGqm9Gst1hZfkcEk9
GJDIfOcKSFJtwWcyOUihUyLPVewr7aTWEkmEUpmVh0pbFf/DhdjZLI3Lc2ZI2NZkzeaEJtJKK85G
f/vscPQp6FcXbd6ubU/ZxShNMNsgPa2sOlhfqSadCgNwx0ZpTDO7TnN7brP3wgjQodsGhEWcIYiB
pYjORQor6ISJLZaJ7DMnKVUE2mce99WBeqdO1LQnHLOsea5GPWGkyNvM7WaMZbyl3quBOuGxnb3f
YtvT2qKnD/TwbamD+ywXAQxEj7i87HXwvoWIEncijlJh2+oqcAF9wgbwuWmlug+8jj80Bwf5dhh7
WIWxsQRBcwUx1+tu9aPrTdKKeOnORyARE/gA+cYhPMltIYAQyTI1hC79no6FCZEH45ZVwhmY8WtL
feB3A7WnjtQuG+3xtd/TuZmoxoV0G+rxAhX3hFxhydtumb6v3szMiD2PCivl3UB947nUzO1iDJj2
+03jviO575vIHLKJmfIyWi1WN6ICb6Ku4RIuxQgkbyxp8kY2D94ga1Z8vwsrgAyVYylatIY4XF4Z
TSjypE3kAaf2tADdwHAyI8//h931n8u/ZoZ3K4LV2V3P5pxAyBG55aTm7xgRIUfDVd4qJ5Wyakqt
9apGNX0Q57MNGa3NjEvws2QREjlO8gqrdkOO3YYs5x9RaW9oCmVuZHN0cmVhbQplbmRvYmoKMzcK
MApvYmoKODUxCmVuZG9iagozOAowCm9iagpbCl0KZW5kb2JqCjM5CjAKb2JqCjw8Ci9TdWJ0eXBl
Ci9JbWFnZQovSW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMTY4MAovSGVpZ2h0CjY5MAovQ29sb3JT
cGFjZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL1NNYXNrCjQwCjAKUgovRmlsdGVy
Ci9EQ1REZWNvZGUKL0xlbmd0aAo0MQowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA
/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykq
KRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgCsgaQAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEB
AAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQci
cRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpj
ZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfI
ycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME
BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkj
M1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2
d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ
2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+VKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorUh8O61PCksOj6jJFI
oZHS2cqwPIIIHIp//CM69/0BNU/8BJP8Ky9vSX2l95ssPVf2X9zMiitf/hGde/6Amqf+Akn+FH/C
M69/0BNU/wDAST/Cl9YpfzL70H1er/I/uZkUVr/8Izr3/QE1T/wEk/wo/wCEZ17/AKAmqf8AgJJ/
hR9YpfzL70H1er/I/uZkUVr/APCM69/0BNU/8BJP8KP+EZ17/oCap/4CSf4UfWKX8y+9B9Xq/wAj
+5mRRWv/AMIzr3/QE1T/AMBJP8KP+EZ17/oCap/4CSf4UfWKX8y+9B9Xq/yP7mZFFa//AAjOvf8A
QE1T/wABJP8ACj/hGde/6Amqf+Akn+FH1il/MvvQfV6v8j+5mRRWv/wjOvf9ATVP/AST/Cj/AIRn
Xv8AoCap/wCAkn+FH1il/MvvQfV6v8j+5mRRWv8A8Izr3/QE1T/wEk/wo/4RnXv+gJqn/gJJ/hR9
YpfzL70H1er/ACP7mZFFa/8AwjOvf9ATVP8AwEk/wrS0zwJr1/aX0/2KW2+ypv8ALuYpEebgnEY2
/Mfl6e49ameKowV5TX3lQwleb5Ywd/Q5aiiiug5wooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKAPXfF3iTVfD/hLwd/ZF19n8+xHmfu0fdtjix94HHU1yH/Cx/Ff/AEFf/JeL/wCJ
rX+Jv/IpeBv+vE/+i4a86rxsuweHqYdTnTTd5atL+Znt5ljMRSxDhCpJJKOibX2Udd/wsfxX/wBB
X/yXi/8AiaP+Fj+K/wDoK/8AkvF/8TXI0V3fUML/AM+o/wDgK/yOD+0MX/z9l/4E/wDM67/hY/iv
/oK/+S8X/wATR/wsfxX/ANBX/wAl4v8A4muRoo+oYX/n1H/wFf5B/aGL/wCfsv8AwJ/5nXf8LH8V
/wDQV/8AJeL/AOJo/wCFj+K/+gr/AOS8X/xNcjRR9Qwv/PqP/gK/yD+0MX/z9l/4E/8AM67/AIWP
4r/6Cv8A5Lxf/E0f8LH8V/8AQV/8l4v/AImuRoo+oYX/AJ9R/wDAV/kH9oYv/n7L/wACf+Z13/Cx
/Ff/AEFf/JeL/wCJo/4WP4r/AOgr/wCS8X/xNcjRR9Qwv/PqP/gK/wAg/tDF/wDP2X/gT/zOu/4W
P4r/AOgr/wCS8X/xNH/Cx/Ff/QV/8l4v/ia5Gij6hhf+fUf/AAFf5B/aGL/5+y/8Cf8Amdd/wsfx
X/0Ff/JeL/4mj/hY/iv/AKCv/kvF/wDE1yNFH1DC/wDPqP8A4Cv8g/tDF/8AP2X/AIE/8zrv+Fj+
K/8AoK/+S8X/AMTXaeBfFmt6p4d8VXV9e+bPY2vmW7eUi7G2SHOAoB5Udc9K8dr0X4Zf8il45/68
R/6LmrgzLBYeGHco04p3j0X8yO/LMbiZ4lRnUk1aXV/ys86ooor2jxAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKAPRfib/yKXgb/rxP/ouGvOq9F+Jv/IpeBv8ArxP/AKLhrzqv
Oyr/AHZesv8A0pnpZt/vT9I/+koKKKK9E80KKKKACiiigAooooAKKKKACiiigAooooAK9F+GX/Ip
eOf+vEf+i5q86r0X4Zf8il45/wCvEf8AouavOzX/AHZ+sf8A0pHpZT/vS9Jf+ks86ooor0TzQooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACivV11vUNB+DuhXWk3HkTvdPGzbFfKlpjjDAjqBXL/wDCx/Ff/QV/8l4v/ia8+liq9bmd
OCsm1rJrZ2/lZ6NXC0KKiqk3dpPSKe6v/MvyOQorr/8AhY/iv/oK/wDkvF/8TR/wsfxX/wBBX/yX
i/8Aia158V/JH/wJ/wDyBlyYT+eX/gK/+TOQorr/APhY/iv/AKCv/kvF/wDE0f8ACx/Ff/QV/wDJ
eL/4mjnxX8kf/An/APIByYT+eX/gK/8AkzkKK6//AIWP4r/6Cv8A5Lxf/E0f8LH8V/8AQV/8l4v/
AImjnxX8kf8AwJ//ACAcmE/nl/4Cv/kzkKK6/wD4WP4r/wCgr/5Lxf8AxNH/AAsfxX/0Ff8AyXi/
+Jo58V/JH/wJ/wDyAcmE/nl/4Cv/AJM5Ciuv/wCFj+K/+gr/AOS8X/xNH/Cx/Ff/AEFf/JeL/wCJ
o58V/JH/AMCf/wAgHJhP55f+Ar/5M5Ciuv8A+Fj+K/8AoK/+S8X/AMTR/wALH8V/9BX/AMl4v/ia
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
AMTR/wALH8V/9BX/AMl4v/iaObH/AMsPvl/kHLl/80/uj/mZH/CM69/0BNU/8BJP8KP+EZ17/oCa
p/4CSf4Vr/8ACx/Ff/QV/wDJeL/4mj/hY/iv/oK/+S8X/wATRzY/+WH3y/yDly/+af3R/wAzI/4R
nXv+gJqn/gJJ/hR/wjOvf9ATVP8AwEk/wrX/AOFj+K/+gr/5Lxf/ABNH/Cx/Ff8A0Ff/ACXi/wDi
aObH/wAsPvl/kHLl/wDNP7o/5mR/wjOvf9ATVP8AwEk/wo/4RnXv+gJqn/gJJ/hWv/wsfxX/ANBX
/wAl4v8A4mj/AIWP4r/6Cv8A5Lxf/E0c2P8A5YffL/IOXL/5p/dH/MyP+EZ17/oCap/4CSf4VlzR
SQTPFMjRyxsVdHGGUjggg9DXp3w88a+INX8YafY6hqHnWsvmb08mNc4jYjkKD1ArhfGH/I263/1/
T/8AoxqeHxFd13RrJJpJ6N92uqXYWIw9BUFXoNtNtapLZJ9G+5kUUUV6B5x6L8Tf+RS8Df8AXif/
AEXDXnVei/E3/kUvA3/Xif8A0XDXnVedlX+7L1l/6Uz0s2/3p+kf/SUFFFFeieaFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFei/DL/kUvHP/AF4j/wBFzV51Xovwy/5FLxz/ANeI/wDRc1edmv8Auz9Y
/wDpSPSyn/el6S/9JZ51RRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAei63/yRLw//wBfzf8AoU9edV6Lrf8AyRLw/wD9
fzf+hT151XnZd8NT/HL8z0sz+Kn/AIIfkFFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAei/
DL/kUvHP/XiP/Rc1edV6L8Mv+RS8c/8AXiP/AEXNXnVedhf95r+sf/SUeli/91w/pL/0phXovwL/
AORtu/8Arxf/ANGR151XovwL/wCRtu/+vF//AEZHRm3+51PQMo/32l6nnVFFFeieaFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHovxN/5FLwN/14n/0XDXnVei/E3/kUvA3/
AF4n/wBFw151XnZV/uy9Zf8ApTPSzb/en6R/9JQVr+D/APkbdE/6/oP/AEYtZFa/g/8A5G3RP+v6
D/0YtdeI/hS9H+Rx4f8Aiw9V+Zr/ABZ/5KBqv/bL/wBFJXI113xZ/wCSgar/ANsv/RSVyNZYD/da
X+GP5I2zD/e6v+KX5sKKKK6zjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOu+
E3/JQNK/7a/+inrI8Yf8jbrf/X9P/wCjGrX+E3/JQNK/7a/+inrI8Yf8jbrf/X9P/wCjGrzo/wC/
y/wL/wBKZ6Uv+RfH/G//AElGRRRRXonmnovxN/5FLwN/14n/ANFw151XovxN/wCRS8Df9eJ/9Fw1
51XnZV/uy9Zf+lM9LNv96fpH/wBJQUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV6L8Mv+
RS8c/wDXiP8A0XNXnVei/DL/AJFLxz/14j/0XNXnZr/uz9Y/+lI9LKf96XpL/wBJZ51RRRXonmhR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAerromoa98HdCtdJt/PnS6eRl3qmFDTDOWIHUiuX/wCFceK/+gV/5MRf/FVhWmhaveW6
T2el388D52yRW7srYODggY6g1L/wjOvf9ATVP/AST/CvKpwnQclCrGzbeq1V3t8S/I9apOGIUJTo
yuopaPR2Vr/A/wAzY/4Vx4r/AOgV/wCTEX/xVH/CuPFf/QK/8mIv/iqx/wDhGde/6Amqf+Akn+FH
/CM69/0BNU/8BJP8K09rV/5/Q/8AAX/8mZ+ypf8APmf/AIEv/kDY/wCFceK/+gV/5MRf/FUf8K48
V/8AQK/8mIv/AIqsf/hGde/6Amqf+Akn+FH/AAjOvf8AQE1T/wABJP8ACj2tX/n9D/wF/wDyYeyp
f8+Z/wDgS/8AkDY/4Vx4r/6BX/kxF/8AFUf8K48V/wDQK/8AJiL/AOKrH/4RnXv+gJqn/gJJ/hR/
wjOvf9ATVP8AwEk/wo9rV/5/Q/8AAX/8mHsqX/Pmf/gS/wDkDY/4Vx4r/wCgV/5MRf8AxVH/AArj
xX/0Cv8AyYi/+KrH/wCEZ17/AKAmqf8AgJJ/hR/wjOvf9ATVP/AST/Cj2tX/AJ/Q/wDAX/8AJh7K
l/z5n/4Ev/kDY/4Vx4r/AOgV/wCTEX/xVH/CuPFf/QK/8mIv/iqx/wDhGde/6Amqf+Akn+FH/CM6
9/0BNU/8BJP8KPa1f+f0P/AX/wDJh7Kl/wA+Z/8AgS/+QNj/AIVx4r/6BX/kxF/8VR/wrjxX/wBA
r/yYi/8Aiqx/+EZ17/oCap/4CSf4Uf8ACM69/wBATVP/AAEk/wAKPa1f+f0P/AX/APJh7Kl/z5n/
AOBL/wCQNj/hXHiv/oFf+TEX/wAVR/wrjxX/ANAr/wAmIv8A4qsf/hGde/6Amqf+Akn+FH/CM69/
0BNU/wDAST/Cj2tX/n9D/wABf/yYeypf8+Z/+BL/AOQPRvCPhvVfD/hLxj/a9r9n8+xPl/vEfdtj
lz90nHUV5FWpN4d1qCF5ZtH1GOKNSzu9s4VQOSSSOBWXV4SlyznUc1Jya2VkrK3dmeMq80KdNQcV
FPd3bu79kFei/Av/AJG27/68X/8ARkdedV6L8C/+Rtu/+vF//RkdRm3+51PQ0yj/AH2l6nnVFFFe
ieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHovxN/5FLwN/14n/ANFw
151XovxN/wCRS8Df9eJ/9Fw151XnZV/uy9Zf+lM9LNv96fpH/wBJQVr+D/8AkbdE/wCv6D/0YtZF
a/g//kbdE/6/oP8A0YtdeI/hS9H+Rx4f+LD1X5mv8Wf+Sgar/wBsv/RSVyNdd8Wf+Sgar/2y/wDR
SVyNZYD/AHWl/hj+SNsw/wB7q/4pfmwooorrOMKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooA674Tf8lA0r/tr/AOinrI8Yf8jbrf8A1/T/APoxq1/hN/yUDSv+2v8A6Kesjxh/yNut
/wDX9P8A+jGrzo/7/L/Av/SmelL/AJF8f8b/APSUZFFFFeieaei/E3/kUvA3/Xif/RcNedV6L8Tf
+RS8Df8AXif/AEXDXnVedlX+7L1l/wClM9LNv96fpH/0lBRRRXonmhRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABXovwy/5FLxz/14j/0XNXnVei/DL/kUvHP/AF4j/wBFzV52a/7s/WP/AKUj0sp/3pek
v/SWedUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFAHq663qGg/B3QrrSrj7PO908bNsVsqWmOMMCOoFct/wALH8V/9BX/
AMl4v/ia19b/AOSJeH/+v5v/AEKevOq8fBYShVVSVSCb55bpPqe1jsXXpOnGnUaXJHZtdDrv+Fj+
K/8AoK/+S8X/AMTR/wALH8V/9BX/AMl4v/ia5Giu36hhf+fUf/AV/kcP9oYv/n7L/wACf+Z13/Cx
/Ff/AEFf/JeL/wCJo/4WP4r/AOgr/wCS8X/xNcjRR9Qwv/PqP/gK/wAg/tDF/wDP2X/gT/zOu/4W
P4r/AOgr/wCS8X/xNH/Cx/Ff/QV/8l4v/ia5Gij6hhf+fUf/AAFf5B/aGL/5+y/8Cf8Amdd/wsfx
X/0Ff/JeL/4mj/hY/iv/AKCv/kvF/wDE1yNFH1DC/wDPqP8A4Cv8g/tDF/8AP2X/AIE/8zrv+Fj+
K/8AoK/+S8X/AMTR/wALH8V/9BX/AMl4v/ia5Gij6hhf+fUf/AV/kH9oYv8A5+y/8Cf+Z13/AAsf
xX/0Ff8AyXi/+Jo/4WP4r/6Cv/kvF/8AE1yNFH1DC/8APqP/AICv8g/tDF/8/Zf+BP8AzOu/4WP4
r/6Cv/kvF/8AE0f8LH8V/wDQV/8AJeL/AOJrkaKPqGF/59R/8BX+Qf2hi/8An7L/AMCf+Z674R8S
ar4g8JeMf7XuvtHkWJ8v92ibd0cufugZ6CvIq9F+GX/IpeOf+vEf+i5q86rmwNOFPEV4QVleOi/w
o6cfUnVw9Cc227S1ev2mFei/Av8A5G27/wCvF/8A0ZHXnVei/Av/AJG27/68X/8ARkdXm3+51PQj
KP8AfaXqedUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAei/E3
/kUvA3/Xif8A0XDXnVei/E3/AJFLwN/14n/0XDXnVedlX+7L1l/6Uz0s2/3p+kf/AElBWv4P/wCR
t0T/AK/oP/Ri1kVr+D/+Rt0T/r+g/wDRi114j+FL0f5HHh/4sPVfma/xZ/5KBqv/AGy/9FJXI113
xZ/5KBqv/bL/ANFJXI1lgP8AdaX+GP5I2zD/AHur/il+bCiiius4wooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigDrvhN/yUDSv+2v8A6Kesjxh/yNut/wDX9P8A+jGrX+E3/JQNK/7a
/wDop6yPGH/I263/ANf0/wD6MavOj/v8v8C/9KZ6Uv8AkXx/xv8A9JRkUUUV6J5p6L8Tf+RS8Df9
eJ/9Fw151XovxN/5FLwN/wBeJ/8ARcNedV52Vf7svWX/AKUz0s2/3p+kf/SUFFFFeieaFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFei/DL/kUvHP/XiP/Rc1edV6L8Mv+RS8c/8AXiP/AEXNXnZr/uz9
Y/8ApSPSyn/el6S/9JZ51RRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAei63/AMkS8P8A/X83/oU9edV6Lrf/ACRLw/8A
9fzf+hT151XnZd8NT/HL8z0sz+Kn/gh+QUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB6L8
Mv8AkUvHP/XiP/Rc1edV6L8Mv+RS8c/9eI/9FzV51XnYX/ea/rH/ANJR6WL/AN1w/pL/ANKYV6L8
C/8Akbbv/rxf/wBGR151XovwL/5G27/68X/9GR0Zt/udT0DKP99pep51RRRXonmhRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB6L8Tf8AkUvA3/Xif/RcNedV6L8Tf+RS8Df9
eJ/9Fw151XnZV/uy9Zf+lM9LNv8Aen6R/wDSUFa/g/8A5G3RP+v6D/0YtZFa/g//AJG3RP8Ar+g/
9GLXXiP4UvR/kceH/iw9V+Zr/Fn/AJKBqv8A2y/9FJXI113xZ/5KBqv/AGy/9FJXI1lgP91pf4Y/
kjbMP97q/wCKX5sKKKK6zjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOu+E3/
ACUDSv8Atr/6Kesjxh/yNut/9f0//oxq1/hN/wAlA0r/ALa/+inrI8Yf8jbrf/X9P/6MavOj/v8A
L/Av/SmelL/kXx/xv/0lGRRRRXonmnovxN/5FLwN/wBeJ/8ARcNedV6L8Tf+RS8Df9eJ/wDRcNed
V52Vf7svWX/pTPSzb/en6R/9JQUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV6L8Mv+RS8
c/8AXiP/AEXNXnVei/DL/kUvHP8A14j/ANFzV52a/wC7P1j/AOlI9LKf96XpL/0lnnVFFFeieaFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQB6Lrf/JEvD//AF/N/wChT151Xout/wDJEvD/AP1/N/6FPXnVedl3w1P8cvzPSzP4qf8A
gh+QUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB6L8Mv+RS8c/9eI/9FzV51Xovwy/5FLxz
/wBeI/8ARc1edV52F/3mv6x/9JR6WL/3XD+kv/SmFei/Av8A5G27/wCvF/8A0ZHXnVei/Av/AJG2
7/68X/8ARkdGbf7nU9Ayj/faXqedUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAei/E3/kUvA3/Xif/RcNedV6L8Tf+RS8Df8AXif/AEXDXnVedlX+7L1l/wClM9LN
v96fpH/0lBWv4P8A+Rt0T/r+g/8ARi1kVr+D/wDkbdE/6/oP/Ri114j+FL0f5HHh/wCLD1X5mv8A
Fn/koGq/9sv/AEUlcjXXfFn/AJKBqv8A2y/9FJXI1lgP91pf4Y/kjbMP97q/4pfmwooorrOMKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA674Tf8lA0r/tr/6Kesjxh/yNut/9f0//
AKMatf4Tf8lA0r/tr/6Kesjxh/yNut/9f0//AKMavOj/AL/L/Av/AEpnpS/5F8f8b/8ASUZFFFFe
ieaei/E3/kUvA3/Xif8A0XDXnVei/E3/AJFLwN/14n/0XDXnVedlX+7L1l/6Uz0s2/3p+kf/AElB
RRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXovwy/5FLxz/ANeI/wDRc1edV6L8Mv8AkUvH
P/XiP/Rc1edmv+7P1j/6Uj0sp/3pekv/AElnnVFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB6Lrf/JEvD/8A1/N/6FPX
nVei63/yRLw//wBfzf8AoU9edV52XfDU/wAcvzPSzP4qf+CH5BRRRXonmhRRRQAUUUUAFFFFABRR
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
n/8ARjUsPOvHEujVkpe6ntbq13fYeJp0JYaNejBx95re+yT7LuZFFFFekeYei/E3/kUvA3/Xif8A
0XDXnVei/E3/AJFLwN/14n/0XDXnVedlX+7L1l/6Uz0s2/3p+kf/AElBRRRXonmhRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABXovwy/5FLxz/ANeI/wDRc1edV6L8Mv8AkUvHP/XiP/Rc1edmv+7P1j/6
Uj0sp/3pekv/AElnnVFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB6Lrf/JEvD/8A1/N/6FPXnVei63/yRLw//wBfzf8A
oU9edV52XfDU/wAcvzPSzP4qf+CH5BRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHovwy/5
FLxz/wBeI/8ARc1edV6L8Mv+RS8c/wDXiP8A0XNXnVedhf8Aea/rH/0lHpYv/dcP6S/9KYV6L8C/
+Rtu/wDrxf8A9GR151XovwL/AORtu/8Arxf/ANGR0Zt/udT0DKP99pep51RRRXonmhRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB6L8Tf+RS8Df8AXif/AEXDXnVei/E3/kUv
A3/Xif8A0XDXnVedlX+7L1l/6Uz0s2/3p+kf/SUFa/g//kbdE/6/oP8A0YtZFa/g/wD5G3RP+v6D
/wBGLXXiP4UvR/kceH/iw9V+Zr/Fn/koGq/9sv8A0UlcjXXfFn/koGq/9sv/AEUlcjWWA/3Wl/hj
+SNsw/3ur/il+bCiiius4wooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDrvhN/y
UDSv+2v/AKKesjxh/wAjbrf/AF/T/wDoxq1/hN/yUDSv+2v/AKKesjxh/wAjbrf/AF/T/wDoxq86
P+/y/wAC/wDSmelL/kXx/wAb/wDSUZFFFFeieaei/E3/AJFLwN/14n/0XDXnVei/E3/kUvA3/Xif
/RcNedV52Vf7svWX/pTPSzb/AHp+kf8A0lBRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABX
ovwy/wCRS8c/9eI/9FzV51Xovwy/5FLxz/14j/0XNXnZr/uz9Y/+lI9LKf8Ael6S/wDSWedUUUV6
J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFAHp0UNprfwr0bS49Z0mzvIbl5nS7uhGQN0o6cnPzA9OlYH/CEf8AUz+F/wDwP/8A
sa5CiuCnhKlJy9nUsm29l1dz0KmMp1VH2lO7SS3fRWOv/wCEI/6mfwv/AOB//wBjR/whH/Uz+F//
AAP/APsa5CitPY1/+fn4Iz9th/8An1/5Mzr/APhCP+pn8L/+B/8A9jR/whH/AFM/hf8A8D//ALGu
Qoo9jX/5+fgg9th/+fX/AJMzr/8AhCP+pn8L/wDgf/8AY0f8IR/1M/hf/wAD/wD7GuQoo9jX/wCf
n4IPbYf/AJ9f+TM6/wD4Qj/qZ/C//gf/APY0f8IR/wBTP4X/APA//wCxrkKKPY1/+fn4IPbYf/n1
/wCTM6//AIQj/qZ/C/8A4H//AGNH/CEf9TP4X/8AA/8A+xrkKKPY1/8An5+CD22H/wCfX/kzOv8A
+EI/6mfwv/4H/wD2NH/CEf8AUz+F/wDwP/8Asa5Cij2Nf/n5+CD22H/59f8AkzOv/wCEI/6mfwv/
AOB//wBjR/whH/Uz+F//AAP/APsa5Cij2Nf/AJ+fgg9th/8An1/5Mz1Tw3ZWnhzwv4qiutd0S4lv
bMrClreB2JCSDGDjk7hjGa8roop4fDOjKc5Su5W8tlYWJxKrRhCMbKN7dd3cK7T4Ua3p+g+Iri61
W48iB7Vo1bYz5YuhxhQT0Bri6K0xFCOIpSpT2Znhq8sNVjVhuu56L/ZPw2/6GDVP+/bf/GaP7J+G
3/Qwap/37b/4zXnVFcn1CX/P6f3r/wCROv8AtCP/AD4h9z/+SPRf7J+G3/Qwap/37b/4zR/ZPw2/
6GDVP+/bf/Ga86oo+oS/5/T+9f8AyIf2hH/nxD7n/wDJHov9k/Db/oYNU/79t/8AGaP7J+G3/Qwa
p/37b/4zXnVFH1CX/P6f3r/5EP7Qj/z4h9z/APkj0X+yfht/0MGqf9+2/wDjNH9k/Db/AKGDVP8A
v23/AMZrzqij6hL/AJ/T+9f/ACIf2hH/AJ8Q+5//ACR6L/ZPw2/6GDVP+/bf/GaP7J+G3/Qwap/3
7b/4zXnVFH1CX/P6f3r/AORD+0I/8+Ifc/8A5I9F/sn4bf8AQwap/wB+2/8AjNH9k/Db/oYNU/79
t/8AGa86oo+oS/5/T+9f/Ih/aEf+fEPuf/yR6L/ZPw2/6GDVP+/bf/GaP7J+G3/Qwap/37b/AOM1
51RR9Ql/z+n96/8AkQ/tCP8Az4h9z/8Akj0X+yfht/0MGqf9+2/+M0f2T8Nv+hg1T/v23/xmvOqK
PqEv+f0/vX/yIf2hH/nxD7n/APJHov8AZPw2/wChg1T/AL9t/wDGaP7J+G3/AEMGqf8Aftv/AIzX
nVFH1CX/AD+n96/+RD+0I/8APiH3P/5I9F/sn4bf9DBqn/ftv/jNH9k/Db/oYNU/79t/8Zrzqij6
hL/n9P71/wDIh/aEf+fEPuf/AMkei/2T8Nv+hg1T/v23/wAZo/sn4bf9DBqn/ftv/jNedUUfUJf8
/p/ev/kQ/tCP/PiH3P8A+SO9+JmsaNqGneH7LQrx7qLT4nhJeNlYDEYXOVGSdp6VwVFFdWGw8cNT
VKLbSvvvq7nLisRLE1XVkkm7bbaK36BWl4buYrPxFpd1cvsgguopJGwTtVXBJwOegrNorWcVOLi+
pjCbhJSXQ9X8Qn4fa9rFxqV5rt+k8+3csUTBRhQoxmInoB3rN/sn4bf9DBqn/ftv/jNedUV50Mtc
IqEa00l5r/5E9KeZqpJzlRg29dn/APJHov8AZPw2/wChg1T/AL9t/wDGaP7J+G3/AEMGqf8Aftv/
AIzXnVFV9Ql/z+n96/8AkSf7Qj/z4h9z/wDkj0X+yfht/wBDBqn/AH7b/wCM0f2T8Nv+hg1T/v23
/wAZrzqij6hL/n9P71/8iH9oR/58Q+5//JHov9k/Db/oYNU/79t/8Zo/sn4bf9DBqn/ftv8A4zXn
VFH1CX/P6f3r/wCRD+0I/wDPiH3P/wCSPRf7J+G3/Qwap/37b/4zR/ZPw2/6GDVP+/bf/Ga86oo+
oS/5/T+9f/Ih/aEf+fEPuf8A8kei/wBk/Db/AKGDVP8Av23/AMZo/sn4bf8AQwap/wB+2/8AjNed
UUfUJf8AP6f3r/5EP7Qj/wA+Ifc//kj0X+yfht/0MGqf9+2/+M0f2T8Nv+hg1T/v23/xmvOqKPqE
v+f0/vX/AMiH9oR/58Q+5/8AyR6L/ZPw2/6GDVP+/bf/ABmj+yfht/0MGqf9+2/+M151RR9Ql/z+
n96/+RD+0I/8+Ifc/wD5I9F/sn4bf9DBqn/ftv8A4zR/ZPw2/wChg1T/AL9t/wDGa86oo+oS/wCf
0/vX/wAiH9oR/wCfEPuf/wAkei/2T8Nv+hg1T/v23/xmj+yfht/0MGqf9+2/+M151RR9Ql/z+n96
/wDkQ/tCP/PiH3P/AOSPRf7J+G3/AEMGqf8Aftv/AIzR/ZPw2/6GDVP+/bf/ABmvOqKPqEv+f0/v
X/yIf2hH/nxD7n/8ker+Hj8PtB1i31Kz12/eeDdtWWJipypU5xED0J71514kuYrzxFql1bPvgnup
ZI2wRuVnJBweehrNorTD4JUajqubk2ra22+SRliMc69NUlCMUnfS++3VsKKKK7TiPRfib/yKXgb/
AK8T/wCi4a86r0X4m/8AIpeBv+vE/wDouGvOq87Kv92XrL/0pnpZt/vT9I/+koKKKK9E80KKKKAC
iiigAooooAKKKKACiiigAooooAK9F+GX/IpeOf8ArxH/AKLmrzqvRfhl/wAil45/68R/6Lmrzs1/
3Z+sf/SkellP+9L0l/6SzzqiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAqzY2N3qExisLWe6lC7ikMZdgOmcDtyPzqtXo3wL/
AORtu/8Arxf/ANGR1zYyu8PQlVSvZHVgsOsTXhRbtdnIf8Izr3/QE1T/AMBJP8KP+EZ17/oCap/4
CSf4Vr/8LH8V/wDQV/8AJeL/AOJo/wCFj+K/+gr/AOS8X/xNc/Nj/wCWH3y/yOjly/8Amn90f8zI
/wCEZ17/AKAmqf8AgJJ/hR/wjOvf9ATVP/AST/Ctf/hY/iv/AKCv/kvF/wDE0f8ACx/Ff/QV/wDJ
eL/4mjmx/wDLD75f5By5f/NP7o/5mR/wjOvf9ATVP/AST/Cj/hGde/6Amqf+Akn+Fa//AAsfxX/0
Ff8AyXi/+Jo/4WP4r/6Cv/kvF/8AE0c2P/lh98v8g5cv/mn90f8AMyP+EZ17/oCap/4CSf4Uf8Iz
r3/QE1T/AMBJP8K1/wDhY/iv/oK/+S8X/wATR/wsfxX/ANBX/wAl4v8A4mjmx/8ALD75f5By5f8A
zT+6P+Zkf8Izr3/QE1T/AMBJP8KP+EZ17/oCap/4CSf4Vr/8LH8V/wDQV/8AJeL/AOJo/wCFj+K/
+gr/AOS8X/xNHNj/AOWH3y/yDly/+af3R/zMj/hGde/6Amqf+Akn+FH/AAjOvf8AQE1T/wABJP8A
Ctf/AIWP4r/6Cv8A5Lxf/E0f8LH8V/8AQV/8l4v/AImjmx/8sPvl/kHLl/8ANP7o/wCZkf8ACM69
/wBATVP/AAEk/wAKP+EZ17/oCap/4CSf4Vr/APCx/Ff/AEFf/JeL/wCJo/4WP4r/AOgr/wCS8X/x
NHNj/wCWH3y/yDly/wDmn90f8zI/4RnXv+gJqn/gJJ/hR/wjOvf9ATVP/AST/Ctf/hY/iv8A6Cv/
AJLxf/E0f8LH8V/9BX/yXi/+Jo5sf/LD75f5By5f/NP7o/5mR/wjOvf9ATVP/AST/Cj/AIRnXv8A
oCap/wCAkn+Fa/8AwsfxX/0Ff/JeL/4mj/hY/iv/AKCv/kvF/wDE0c2P/lh98v8AIOXL/wCaf3R/
zMj/AIRnXv8AoCap/wCAkn+FH/CM69/0BNU/8BJP8K1/+Fj+K/8AoK/+S8X/AMTR/wALH8V/9BX/
AMl4v/iaObH/AMsPvl/kHLl/80/uj/mZH/CM69/0BNU/8BJP8KP+EZ17/oCap/4CSf4Vr/8ACx/F
f/QV/wDJeL/4mj/hY/iv/oK/+S8X/wATRzY/+WH3y/yDly/+af3R/wAzI/4RnXv+gJqn/gJJ/hR/
wjOvf9ATVP8AwEk/wrX/AOFj+K/+gr/5Lxf/ABNH/Cx/Ff8A0Ff/ACXi/wDiaObH/wAsPvl/kHLl
/wDNP7o/5mR/wjOvf9ATVP8AwEk/wo/4RnXv+gJqn/gJJ/hWv/wsfxX/ANBX/wAl4v8A4mj/AIWP
4r/6Cv8A5Lxf/E0c2P8A5YffL/IOXL/5p/dH/MyP+EZ17/oCap/4CSf4Uf8ACM69/wBATVP/AAEk
/wAK1/8AhY/iv/oK/wDkvF/8TR/wsfxX/wBBX/yXi/8AiaObH/yw++X+QcuX/wA0/uj/AJmR/wAI
zr3/AEBNU/8AAST/AAo/4RnXv+gJqn/gJJ/hWv8A8LH8V/8AQV/8l4v/AImj/hY/iv8A6Cv/AJLx
f/E0c2P/AJYffL/IOXL/AOaf3R/zMj/hGde/6Amqf+Akn+FH/CM69/0BNU/8BJP8K1/+Fj+K/wDo
K/8AkvF/8TR/wsfxX/0Ff/JeL/4mjmx/8sPvl/kHLl/80/uj/mZH/CM69/0BNU/8BJP8KP8AhGde
/wCgJqn/AICSf4Vr/wDCx/Ff/QV/8l4v/iaP+Fj+K/8AoK/+S8X/AMTRzY/+WH3y/wAg5cv/AJp/
dH/MyP8AhGde/wCgJqn/AICSf4Uf8Izr3/QE1T/wEk/wrX/4WP4r/wCgr/5Lxf8AxNH/AAsfxX/0
Ff8AyXi/+Jo5sf8Ayw++X+QcuX/zT+6P+Zkf8Izr3/QE1T/wEk/wo/4RnXv+gJqn/gJJ/hWv/wAL
H8V/9BX/AMl4v/iaP+Fj+K/+gr/5Lxf/ABNHNj/5YffL/IOXL/5p/dH/ADMj/hGde/6Amqf+Akn+
FH/CM69/0BNU/wDAST/Ctf8A4WP4r/6Cv/kvF/8AE0f8LH8V/wDQV/8AJeL/AOJo5sf/ACw++X+Q
cuX/AM0/uj/mZH/CM69/0BNU/wDAST/Cj/hGde/6Amqf+Akn+Fa//Cx/Ff8A0Ff/ACXi/wDiaP8A
hY/iv/oK/wDkvF/8TRzY/wDlh98v8g5cv/mn90f8zI/4RnXv+gJqn/gJJ/hR/wAIzr3/AEBNU/8A
AST/AArX/wCFj+K/+gr/AOS8X/xNH/Cx/Ff/AEFf/JeL/wCJo5sf/LD75f5By5f/ADT+6P8AmZH/
AAjOvf8AQE1T/wABJP8ACj/hGde/6Amqf+Akn+Fa/wDwsfxX/wBBX/yXi/8AiaP+Fj+K/wDoK/8A
kvF/8TRzY/8Alh98v8g5cv8A5p/dH/MyP+EZ17/oCap/4CSf4Uf8Izr3/QE1T/wEk/wrX/4WP4r/
AOgr/wCS8X/xNH/Cx/Ff/QV/8l4v/iaObH/yw++X+QcuX/zT+6P+Zkf8Izr3/QE1T/wEk/wo/wCE
Z17/AKAmqf8AgJJ/hWv/AMLH8V/9BX/yXi/+Jo/4WP4r/wCgr/5Lxf8AxNHNj/5YffL/ACDly/8A
mn90f8zI/wCEZ17/AKAmqf8AgJJ/hR/wjOvf9ATVP/AST/Ctf/hY/iv/AKCv/kvF/wDE0f8ACx/F
f/QV/wDJeL/4mjmx/wDLD75f5By5f/NP7o/5mR/wjOvf9ATVP/AST/Cj/hGde/6Amqf+Akn+Fa//
AAsfxX/0Ff8AyXi/+Jo/4WP4r/6Cv/kvF/8AE0c2P/lh98v8g5cv/mn90f8AMyP+EZ17/oCap/4C
Sf4Uf8Izr3/QE1T/AMBJP8K1/wDhY/iv/oK/+S8X/wATR/wsfxX/ANBX/wAl4v8A4mjmx/8ALD75
f5By5f8AzT+6P+Zkf8Izr3/QE1T/AMBJP8KP+EZ17/oCap/4CSf4Vr/8LH8V/wDQV/8AJeL/AOJo
/wCFj+K/+gr/AOS8X/xNHNj/AOWH3y/yDly/+af3R/zMj/hGde/6Amqf+Akn+FH/AAjOvf8AQE1T
/wABJP8ACtf/AIWP4r/6Cv8A5Lxf/E0f8LH8V/8AQV/8l4v/AImjmx/8sPvl/kHLl/8ANP7o/wCZ
kf8ACM69/wBATVP/AAEk/wAKP+EZ17/oCap/4CSf4Vr/APCx/Ff/AEFf/JeL/wCJo/4WP4r/AOgr
/wCS8X/xNHNj/wCWH3y/yDly/wDmn90f8zI/4RnXv+gJqn/gJJ/hR/wjOvf9ATVP/AST/Ctf/hY/
iv8A6Cv/AJLxf/E0f8LH8V/9BX/yXi/+Jo5sf/LD75f5By5f/NP7o/5mR/wjOvf9ATVP/AST/Cj/
AIRnXv8AoCap/wCAkn+Fa/8AwsfxX/0Ff/JeL/4mj/hY/iv/AKCv/kvF/wDE0c2P/lh98v8AIOXL
/wCaf3R/zMj/AIRnXv8AoCap/wCAkn+FH/CM69/0BNU/8BJP8K1/+Fj+K/8AoK/+S8X/AMTR/wAL
H8V/9BX/AMl4v/iaObH/AMsPvl/kHLl/80/uj/mZH/CM69/0BNU/8BJP8KP+EZ17/oCap/4CSf4V
r/8ACx/Ff/QV/wDJeL/4muj+HnjXxBq/jDT7HUNQ861l8zenkxrnEbEchQeoFZ1q2Oo05VJRhZJv
d9PkaUaGArVI0oyneTS2j1+Z5jNFJBM8UyNHLGxV0cYZSOCCD0NMrX8Yf8jbrf8A1/T/APoxqyK9
KnLngpd0eZVhyTcezPRfib/yKXgb/rxP/ouGvOq9F+Jv/IpeBv8ArxP/AKLhrzquHKv92XrL/wBK
Z35t/vT9I/8ApKCiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKACvRfhl/wAil45/68R/6Lmr
zqvRfhl/yKXjn/rxH/ouavOzX/dn6x/9KR6WU/70vSX/AKSzzqiiivRPNCiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr0X4F/wDI23f/
AF4v/wCjI686r0X4F/8AI23f/Xi//oyOvOzb/c6noellH++0vU86ooor0TzQooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigArrvhN/yUDSv+2v8A6KeuRrrvhN/yUDSv+2v/AKKeuTH/AO61f8MvyZ2Zf/vdL/FH80ZH
jD/kbdb/AOv6f/0Y1ZFa/jD/AJG3W/8Ar+n/APRjVkVrh/4UfRfkY4j+LP1f5novxN/5FLwN/wBe
J/8ARcNedV6L8Tf+RS8Df9eJ/wDRcNedVyZV/uy9Zf8ApTOzNv8Aen6R/wDSUFFFFeieaFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFei/DL/AJFLxz/14j/0XNXnVei/DL/kUvHP/XiP/Rc1edmv+7P1
j/6Uj0sp/wB6XpL/ANJZ51RRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV6L8C/wDkbbv/AK8X/wDRkdedVZsLG71CYxWFrPdS
hdxSGMuwHTOB25H51zYyiq9CVJu11udWCrOhXhVUb2e3c7z/AIVFr3/P3pf/AH9k/wDiKP8AhUWv
f8/el/8Af2T/AOIrkf8AhGNe/wCgJqn/AICSf4Uf8Ixr3/QE1T/wEk/wri/f/wDQRH/wFf8AyR3f
7P8A9A0v/An/APInXf8ACote/wCfvS/+/sn/AMRR/wAKi17/AJ+9L/7+yf8AxFcj/wAIxr3/AEBN
U/8AAST/AAo/4RjXv+gJqn/gJJ/hR+//AOgiP/gK/wDkg/2f/oGl/wCBP/5E67/hUWvf8/el/wDf
2T/4ij/hUWvf8/el/wDf2T/4iuR/4RjXv+gJqn/gJJ/hR/wjGvf9ATVP/AST/Cj9/wD9BEf/AAFf
/JB/s/8A0DS/8Cf/AMidd/wqLXv+fvS/+/sn/wARR/wqLXv+fvS/+/sn/wARXI/8Ixr3/QE1T/wE
k/wo/wCEY17/AKAmqf8AgJJ/hR+//wCgiP8A4Cv/AJIP9n/6Bpf+BP8A+ROu/wCFRa9/z96X/wB/
ZP8A4ij/AIVFr3/P3pf/AH9k/wDiK5H/AIRjXv8AoCap/wCAkn+FH/CMa9/0BNU/8BJP8KP3/wD0
ER/8BX/yQf7P/wBA0v8AwJ//ACJ13/Cote/5+9L/AO/sn/xFH/Cote/5+9L/AO/sn/xFcj/wjGvf
9ATVP/AST/Cj/hGNe/6Amqf+Akn+FH7/AP6CI/8AgK/+SD/Z/wDoGl/4E/8A5E67/hUWvf8AP3pf
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
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr0b4F/8jbd/9eL/APoyOvOa
9F+Bf/I23f8A14v/AOjI687Nv9zqeh6WUf77S9Tkf+En17/oN6p/4Fyf40f8JPr3/Qb1T/wLk/xr
Iorr+r0v5V9yOP6xV/nf3s1/+En17/oN6p/4Fyf40f8ACT69/wBBvVP/AALk/wAayKKPq9L+Vfcg
+sVf5397Nf8A4SfXv+g3qn/gXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/wCEn17/
AKDeqf8AgXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/4SfXv+g3qn/gXJ/jR/wk+v
f9BvVP8AwLk/xrIoo+r0v5V9yD6xV/nf3s1/+En17/oN6p/4Fyf40f8ACT69/wBBvVP/AALk/wAa
yKKPq9L+Vfcg+sVf5397Nf8A4SfXv+g3qn/gXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d
/ezX/wCEn17/AKDeqf8AgXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/4SfXv+g3qn
/gXJ/jR/wk+vf9BvVP8AwLk/xrIoo+r0v5V9yD6xV/nf3s1/+En17/oN6p/4Fyf40f8ACT69/wBB
vVP/AALk/wAayKKPq9L+Vfcg+sVf5397Nf8A4SfXv+g3qn/gXJ/jR/wk+vf9BvVP/AuT/Gsiij6v
S/lX3IPrFX+d/ezX/wCEn17/AKDeqf8AgXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ez
X/4SfXv+g3qn/gXJ/jR/wk+vf9BvVP8AwLk/xrIoo+r0v5V9yD6xV/nf3s1/+En17/oN6p/4Fyf4
0f8ACT69/wBBvVP/AALk/wAayKKPq9L+Vfcg+sVf5397Nf8A4SfXv+g3qn/gXJ/jR/wk+vf9BvVP
/AuT/Gsiij6vS/lX3IPrFX+d/ezX/wCEn17/AKDeqf8AgXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/l
X3IPrFX+d/ezX/4SfXv+g3qn/gXJ/jR/wk+vf9BvVP8AwLk/xrIoo+r0v5V9yD6xV/nf3s1/+En1
7/oN6p/4Fyf40f8ACT69/wBBvVP/AALk/wAayKKPq9L+Vfcg+sVf5397Nf8A4SfXv+g3qn/gXJ/j
R/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/wCEn17/AKDeqf8AgXJ/jR/wk+vf9BvVP/Au
T/Gsiij6vS/lX3IPrFX+d/ezX/4SfXv+g3qn/gXJ/jR/wk+vf9BvVP8AwLk/xrIoo+r0v5V9yD6x
V/nf3s1/+En17/oN6p/4Fyf40f8ACT69/wBBvVP/AALk/wAayKKPq9L+Vfcg+sVf5397Nf8A4SfX
v+g3qn/gXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/wCEn17/AKDeqf8AgXJ/jR/w
k+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/4SfXv+g3qn/gXJ/jR/wk+vf9BvVP8AwLk/xrIo
o+r0v5V9yD6xV/nf3s1/+En17/oN6p/4Fyf40f8ACT69/wBBvVP/AALk/wAayKKPq9L+Vfcg+sVf
5397Nf8A4SfXv+g3qn/gXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/wCEn17/AKDe
qf8AgXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/4SfXv+g3qn/gXJ/jR/wk+vf9Bv
VP8AwLk/xrIoo+r0v5V9yD6xV/nf3s1/+En17/oN6p/4Fyf40f8ACT69/wBBvVP/AALk/wAayKKP
q9L+Vfcg+sVf5397Nf8A4SfXv+g3qn/gXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX
/wCEn17/AKDeqf8AgXJ/jR/wk+vf9BvVP/AuT/Gsiij6vS/lX3IPrFX+d/ezX/4SfXv+g3qn/gXJ
/jR/wk+vf9BvVP8AwLk/xrIoo+r0v5V9yD6xV/nf3s1/+En17/oN6p/4Fyf40f8ACT69/wBBvVP/
AALk/wAayKKPq9L+Vfcg+sVf5397Nf8A4SfXv+g3qn/gXJ/jXU/DHXdXvPHGmwXmqX88D+bujluH
ZWxE5GQTjqBXn9dd8Jv+SgaV/wBtf/RT1y4+hTWFqtRXwvp5M68BXqvFUk5P4o9fNGR4w/5G3W/+
v6f/ANGNWRWv4w/5G3W/+v6f/wBGNWRXVh/4UfRfkcmI/iz9X+Z6L8Tf+RS8Df8AXif/AEXDXnVe
i/E3/kUvA3/Xif8A0XDXnVcmVf7svWX/AKUzszb/AHp+kf8A0lBRRRXonmhRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABXovwy/wCRS8c/9eI/9FzV51Xovwy/5FLxz/14j/0XNXnZr/uz9Y/+lI9LKf8A
el6S/wDSWedUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFei/Av8A5G27/wCvF/8A0ZHXnVd78Gr600/xRdS391BaxNZuoeaQ
IpO9DjJ78H8q8/NU5YOol2PRymSjjKbfc4Kiuv8A+EI/6mfwv/4H/wD2NH/CEf8AUz+F/wDwP/8A
sa1+vUP5vwZl9QxH8v4r/M5Ciuv/AOEI/wCpn8L/APgf/wDY0f8ACEf9TP4X/wDA/wD+xo+vUP5v
wYfUMR/L+K/zOQorr/8AhCP+pn8L/wDgf/8AY0f8IR/1M/hf/wAD/wD7Gj69Q/m/Bh9QxH8v4r/M
5Ciuv/4Qj/qZ/C//AIH/AP2NH/CEf9TP4X/8D/8A7Gj69Q/m/Bh9QxH8v4r/ADOQorr/APhCP+pn
8L/+B/8A9jR/whH/AFM/hf8A8D//ALGj69Q/m/Bh9QxH8v4r/M5Ciuv/AOEI/wCpn8L/APgf/wDY
0f8ACEf9TP4X/wDA/wD+xo+vUP5vwYfUMR/L+K/zOQorr/8AhCP+pn8L/wDgf/8AY0f8IR/1M/hf
/wAD/wD7Gj69Q/m/Bh9QxH8v4r/M5Ciuv/4Qj/qZ/C//AIH/AP2NH/CEf9TP4X/8D/8A7Gj69Q/m
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
ACIHww/7Bh/9FW9eRjv99wvrL/0hnVR/hVPRfmhfDP8AybP4s/7Caf8AoVtXj1ew+Gf+TZ/Fn/YT
T/0K2rx6jKvjxP8A18f/AKTEWJ2p/wCH9WFFFFeucwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQB0Hw8/5H/wz/wBhO2/9GrXQfHv/AJKzrv8A2w/9ER1z/wAPP+R/8M/9hO2/9GrX
QfHv/krOu/8AbD/0RHXkS/5Gsf8Ar3L/ANKidS/3Z/4l+TPP6KKK9c5QooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAK9F+Bf/ACNt3/14v/6MjrzqvRfgX/yNt3/14v8A+jI687Nv9zqeh6WU
f77S9TzqiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAr0X4Zf8il45/wCvEf8AouavOq9F+GX/ACKXjn/rxH/ouavOzX/dn6x/9KR6
WU/70vSX/pLOa+Hn/I/+Gf8AsJ23/o1a6D49/wDJWdd/7Yf+iI65/wCHn/I/+Gf+wnbf+jVroPj3
/wAlZ13/ALYf+iI6xl/yNY/9e5f+lROZf7s/8S/Jnn9FFFeucwUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAV7B4Z/5Nn8W/8AYTT/ANCtq8fr2Dwz/wAmz+Lf+wmn/oVtXkZx8FH/
AK+Q/wDSkdWF3l/hf5C/svf8j/qH/YMk/wDRsVePV7D+y9/yP+of9gyT/wBGxV49Rhf+RjiPSn/7
cFT+BD1f6BRRRXrnKFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFewfGz/AJED
4Yf9gw/+irevH69g+Nn/ACIHww/7Bh/9FW9eRjv99wvrL/0hnVR/hVPRfmhfDP8AybP4s/7Caf8A
oVtXj1ew+Gf+TZ/Fn/YTT/0K2rx6jKvjxP8A18f/AKTEWJ2p/wCH9WFFFFeucwUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB0Hw8/5H/wz/wBhO2/9GrXQfHv/AJKzrv8A2w/9ER1z
/wAPP+R/8M/9hO2/9GrXQfHv/krOu/8AbD/0RHXkS/5Gsf8Ar3L/ANKidS/3Z/4l+TPP6KKK9c5Q
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK9F+Bf/ACNt3/14v/6MjrzqvRfgX/yNt3/1
4v8A+jI687Nv9zqeh6WUf77S9TzqiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAr0X4Zf8il45/wCvEf8AouavOq9F+GX/ACKXjn/r
xH/ouavOzX/dn6x/9KR6WU/70vSX/pLOa+Hn/I/+Gf8AsJ23/o1a6D49/wDJWdd/7Yf+iI65/wCH
n/I/+Gf+wnbf+jVroPj3/wAlZ13/ALYf+iI6xl/yNY/9e5f+lROZf7s/8S/Jnn9FFFeucwUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV7B4Z/5Nn8W/8AYTT/ANCtq8fr2Dwz/wAm
z+Lf+wmn/oVtXkZx8FH/AK+Q/wDSkdWF3l/hf5C/svf8j/qH/YMk/wDRsVePV7D+y9/yP+of9gyT
/wBGxV49Rhf+RjiPSn/7cFT+BD1f6BRRRXrnKFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFewfGz/AJED4Yf9gw/+irevH69g+Nn/ACIHww/7Bh/9FW9eRjv99wvrL/0hnVR/hVPR
fmhfDP8AybP4s/7Caf8AoVtXj1ew+Gf+TZ/Fn/YTT/0K2rx6jKvjxP8A18f/AKTEWJ2p/wCH9WFF
FFeucwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB0Hw8/5H/wz/wBhO2/9GrXQ
fHv/AJKzrv8A2w/9ER1z/wAPP+R/8M/9hO2/9GrXQfHv/krOu/8AbD/0RHXkS/5Gsf8Ar3L/ANKi
dS/3Z/4l+TPP6KKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK9F+Bf/ACNt3/14
v/6MjrzqvRfgX/yNt3/14v8A+jI687Nv9zqeh6WUf77S9TzqiiivRPNCiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr0X4Zf8il45/wCvEf8A
ouavOq9F+GX/ACKXjn/rxH/ouavOzX/dn6x/9KR6WU/70vSX/pLOa+Hn/I/+Gf8AsJ23/o1a6D49
/wDJWdd/7Yf+iI65/wCHn/I/+Gf+wnbf+jVroPj3/wAlZ13/ALYf+iI6xl/yNY/9e5f+lROZf7s/
8S/Jnn9FFFeucwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV7B4Z/5Nn8W/8A
YTT/ANCtq8fr2Dwz/wAmz+Lf+wmn/oVtXkZx8FH/AK+Q/wDSkdWF3l/hf5C/svf8j/qH/YMk/wDR
sVePV7D+y9/yP+of9gyT/wBGxV49Rhf+RjiPSn/7cFT+BD1f6BRRRXrnKFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFewfGz/AJED4Yf9gw/+irevH69g+Nn/ACIHww/7Bh/9FW9e
Rjv99wvrL/0hnVR/hVPRfmhfDP8AybP4s/7Caf8AoVtXj1ew+Gf+TZ/Fn/YTT/0K2rx6jKvjxP8A
18f/AKTEWJ2p/wCH9WFFFFeucwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB0H
w8/5H/wz/wBhO2/9GrXQfHv/AJKzrv8A2w/9ER1z/wAPP+R/8M/9hO2/9GrXQfHv/krOu/8AbD/0
RHXkS/5Gsf8Ar3L/ANKidS/3Z/4l+TPP6KKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAK9F+Bf/ACNt3/14v/6MjrzqvRfgX/yNt3/14v8A+jI687Nv9zqeh6WUf77S9TzqiiivRPNC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
Ar0X4Zf8il45/wCvEf8AouavOq9F+GX/ACKXjn/rxH/ouavOzX/dn6x/9KR6WU/70vSX/pLOa+Hn
/I/+Gf8AsJ23/o1a6D49/wDJWdd/7Yf+iI65/wCHn/I/+Gf+wnbf+jVroPj3/wAlZ13/ALYf+iI6
xl/yNY/9e5f+lROdf7s/8S/Jnn9FFFeucoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAV7B4Z/5Nn8W/8AYTT/ANCtq8fr2Dwz/wAmz+Lf+wmn/oVtXkZx8FH/AK+Q/wDSkdWF3l/h
f5B+y9/yP+of9gyT/wBGxV4/XsH7L3/I/wCof9gyT/0bFXj9GF/5GOI9Kf8A7cFT+BD1f6BRRRXr
nKFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFewfGz/kQPhh/2DD/6Kt68fr2D
42f8iB8MP+wYf/RVvXkY7/fcL6y/9IZ1Uf4VT0X5oPDP/Js/i3/sJp/6FbV4/XsHhn/k2fxb/wBh
NP8A0K2rx+jKvjxP/Xx/+kxDE7U/8P6sKKKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigDoPh5/wAj/wCGf+wnbf8Ao1a6D49/8lZ13/th/wCiI65/4ef8j/4Z/wCwnbf+jVro
Pj3/AMlZ13/th/6IjryJf8jWP/XuX/pUTqX+7P8AxL8mef0UUV65yhRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAV6L8C/wDkbbv/AK8X/wDRkdedV6L8C/8Akbbv/rxf/wBGR152bf7nU9D0
so/32l6nnVFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABXovwy/wCRS8c/9eI/9FzV51Xovwy/5FLxz/14j/0XNXnZr/uz9Y/+lI9L
Kf8Ael6S/wDSWc18PP8Akf8Awz/2E7b/ANGrXQfHv/krOu/9sP8A0RHXP/Dz/kf/AAz/ANhO2/8A
Rq10Hx7/AOSs67/2w/8AREdYy/5Gsf8Ar3L/ANKic6/3Z/4l+TPP6KKK9c5QooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAr2Dwz/ybP4t/7Caf+hW1eP17B4Z/5Nn8W/8AYTT/ANCt
q8jOPgo/9fIf+lI6sLvL/C/yD9l7/kf9Q/7Bkn/o2KvH69g/Ze/5H/UP+wZJ/wCjYq8fowv/ACMc
R6U//bgqfwIer/QKKKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr2D42
f8iB8MP+wYf/AEVb14/XsHxs/wCRA+GH/YMP/oq3ryMd/vuF9Zf+kM6qP8Kp6L80Hhn/AJNn8W/9
hNP/AEK2rx+vYPDP/Js/i3/sJp/6FbV4/RlXx4n/AK+P/wBJiGJ2p/4f1YUUUV65yhRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHQfDz/kf/DP/YTtv/Rq10Hx7/5Kzrv/AGw/9ER1
z/w8/wCR/wDDP/YTtv8A0atdB8e/+Ss67/2w/wDREdeRL/kax/69y/8ASonUv92f+Jfkzz+iiivX
OUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvRfgX/yNt3/14v8A+jI686r0X4F/8jbd
/wDXi/8A6Mjrzs2/3Op6HpZR/vtL1POqKKK9E80KKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvRfhl/yKXjn/rxH/ouavOq9F+GX/IpeOf8A
rxH/AKLmrzs1/wB2frH/ANKR6WU/70vSX/pLOa+Hn/I/+Gf+wnbf+jVroPj3/wAlZ13/ALYf+iI6
5/4ef8j/AOGf+wnbf+jVroPj3/yVnXf+2H/oiOsZf8jWP/XuX/pUTnX+7P8AxL8mef0UUV65yhRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXsHhn/AJNn8W/9hNP/AEK2rx+vYPDP
/Js/i3/sJp/6FbV5GcfBR/6+Q/8ASkdWF3l/hf5B+y9/yP8AqH/YMk/9GxV4/XsH7L3/ACP+of8A
YMk/9GxV4/Rhf+RjiPSn/wC3BU/gQ9X+gUUUV65yhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABXsHxs/5ED4Yf9gw/wDoq3rx+vYPjZ/yIHww/wCwYf8A0Vb15GO/33C+sv8A0hnV
R/hVPRfmg8M/8mz+Lf8AsJp/6FbV4/XsHhn/AJNn8W/9hNP/AEK2rx+jKvjxP/Xx/wDpMQxO1P8A
w/qwooor1zlCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOg+Hn/I/+Gf8AsJ23
/o1a6D49/wDJWdd/7Yf+iI65/wCHn/I/+Gf+wnbf+jVroPj3/wAlZ13/ALYf+iI68iX/ACNY/wDX
uX/pUTqX+7P/ABL8mef0V6Pc/D/RdN0PRdR1zxZ9g/tS3W4ij/s15cZVWIyrdt45IGao/wDCN+C/
+h+/8o0/+NdEczoTV48zXlCbWmm6icfOjhqK7n/hG/Bf/Q/f+Uaf/Gj/AIRvwX/0P3/lGn/xp/2h
S7S/8An/APIhzr+kcNRXc/8ACN+C/wDofv8AyjT/AONH/CN+C/8Aofv/ACjT/wCNH9oUu0v/AACf
/wAiHOv6Rw1Fdz/wjfgv/ofv/KNP/jR/wjfgv/ofv/KNP/jR/aFLtL/wCf8A8iHOv6Rw1Fdz/wAI
34L/AOh+/wDKNP8A40f8I34L/wCh+/8AKNP/AI0f2hS7S/8AAJ//ACIc6/pHDUV3P/CN+C/+h+/8
o0/+NH/CN+C/+h+/8o0/+NH9oUu0v/AJ/wDyIc6/pHDUV3P/AAjfgv8A6H7/AMo0/wDjR/wjfgv/
AKH7/wAo0/8AjR/aFLtL/wAAn/8AIhzr+kcNRXc/8I34L/6H7/yjT/40f8I34L/6H7/yjT/40f2h
S7S/8An/APIhzr+kcNRXc/8ACN+C/wDofv8AyjT/AONH/CN+C/8Aofv/ACjT/wCNH9oUu0v/AACf
/wAiHOv6Rw1Fdz/wjfgv/ofv/KNP/jR/wjfgv/ofv/KNP/jR/aFLtL/wCf8A8iHOv6Rw1Fdl4+8G
QeFrHRby01X+0rbVI2lif7MYcKAhBwWJ5D98YxVHQ/Dtvf6Fcare6l9it4JfKb9wZP7uDwc9WA6V
14SccZBToarXy20e9jOriKdKPPN6bbN6+i1OborpP7I8Pf8AQz/+U+T/ABo/sjw9/wBDP/5T5P8A
Gur6vLuv/Ao/5mX12n2l/wCAS/yOborpP7I8Pf8AQz/+U+T/ABo/sjw9/wBDP/5T5P8AGj6vLuv/
AAKP+YfXafaX/gEv8jm6K6T+yPD3/Qz/APlPk/xo/sjw9/0M/wD5T5P8aPq8u6/8Cj/mH12n2l/4
BL/I5uiuk/sjw9/0M/8A5T5P8aP7I8Pf9DP/AOU+T/Gj6vLuv/Ao/wCYfXafaX/gEv8AI5uiuk/s
jw9/0M//AJT5P8aP7I8Pf9DP/wCU+T/Gj6vLuv8AwKP+YfXafaX/AIBL/I5uiuk/sjw9/wBDP/5T
5P8AGj+yPD3/AEM//lPk/wAaPq8u6/8AAo/5h9dp9pf+AS/yOborpP7I8Pf9DP8A+U+T/Gj+yPD3
/Qz/APlPk/xo+ry7r/wKP+YfXafaX/gEv8jm6K6T+yPD3/Qz/wDlPk/xo/sjw9/0M/8A5T5P8aPq
8u6/8Cj/AJh9dp9pf+AS/wAjm6K6T+yPD3/Qz/8AlPk/xqzF4X06707ULvTdc+1fY4jK6fZGTsSB
knvtPrQsNN6Kz+a/zFLH0Y6yul5xkv0OSooorA7AooooAKKKKACvRfgX/wAjbd/9eL/+jI686r0X
4F/8jbd/9eL/APoyOvOzb/c6noellH++0vU86ooor0TzQooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK9F+GX/IpeOf8ArxH/AKLmrzqvRfhl
/wAil45/68R/6Lmrzs1/3Z+sf/SkellP+9L0l/6Szmvh5/yP/hn/ALCdt/6NWug+Pf8AyVnXf+2H
/oiOuf8Ah5/yP/hn/sJ23/o1a6D49/8AJWdd/wC2H/oiOsZf8jWP/XuX/pUTnX+7P/EvyZ5/RRRX
rnKFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFeweGf+TZ/Fv/AGE0/wDQravH
69g8M/8AJs/i3/sJp/6FbV5GcfBR/wCvkP8A0pHVhd5f4X+Qfsvf8j/qH/YMk/8ARsVeP17B+y9/
yP8AqH/YMk/9GxV4/Rhf+RjiPSn/AO3BU/gQ9X+gUUUV65yhRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABXsHxs/5ED4Yf9gw/+irevH69g+Nn/IgfDD/sGH/0Vb15GO/33C+sv/SG
dVH+FU9F+aDwz/ybP4t/7Caf+hW1eP17B4Z/5Nn8W/8AYTT/ANCtq8foyr48T/18f/pMQxO1P/D+
rCiiivXOUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA6D4ef8AI/8Ahn/sJ23/
AKNWug+Pf/JWdd/7Yf8AoiOuf+Hn/I/+Gf8AsJ23/o1a6D49/wDJWdd/7Yf+iI68iX/I1j/17l/6
VE6l/uz/AMS/Jmr8X/8AkSPh1/2Dj/6KgryqvVfi/wD8iR8Ov+wcf/RUFeVVeTf7pH1l/wClSOKn
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
+FUeNP8AoC/+TUH/AMXR/aeC/wCf0f8AwJf5hzx7nDUV3P8Awqjxp/0Bf/JqD/4uj/hVHjT/AKAv
/k1B/wDF0f2ngv8An9H/AMCX+Yc8e5w1FbvifwnrXhj7N/bll9l+07vK/eo+7bjP3ScfeHX1qHSf
Duq6vbNPp1r50SuULeYi4bAOOSPUV20JLEJSovmT7a/kTOrTpx55ySXdsyKK6T/hCPEP/QP/API0
f/xVH/CEeIf+gf8A+Ro//iq6Pq1b+R/czD6/hf8An7H71/mc3RXSf8IR4h/6B/8A5Gj/APiqP+EI
8Q/9A/8A8jR//FUfVq38j+5h9fwv/P2P3r/M5uiuk/4QjxD/ANA//wAjR/8AxVH/AAhHiH/oH/8A
kaP/AOKo+rVv5H9zD6/hf+fsfvX+ZzdFdJ/whHiH/oH/APkaP/4qj/hCPEP/AED/APyNH/8AFUfV
q38j+5h9fwv/AD9j96/zOborpP8AhCPEP/QP/wDI0f8A8VR/whHiH/oH/wDkaP8A+Ko+rVv5H9zD
6/hf+fsfvX+ZzdFdJ/whHiH/AKB//kaP/wCKo/4QjxD/ANA//wAjR/8AxVH1at/I/uYfX8L/AM/Y
/ev8zm6K6T/hCPEP/QP/API0f/xVH/CEeIf+gf8A+Ro//iqPq1b+R/cw+v4X/n7H71/mc3RXSf8A
CEeIf+gf/wCRo/8A4qj/AIQjxD/0D/8AyNH/APFUfVq38j+5h9fwv/P2P3r/ADOborpP+EI8Q/8A
QP8A/I0f/wAVUVz4P121tpbiex2xRIXdvOjOFAyTw1J4astXB/cxrHYZuyqR+9GBRRRWJ1BRRRQA
UUUUAFei/Av/AJG27/68X/8ARkdedV6L8C/+Rtu/+vF//Rkdedm3+51PQ9LKP99pep51RRRXonmh
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AV6L8C/+Rtu/+vF//RkdedV6L8C/+Rtu/wDrxf8A9GR152bf7nU9D0so/wB9pepzXw8/5H/wz/2E
7b/0atdD8fP+Ss67/wBsP/REdc98PP8Akf8Awz/2E7b/ANGrXQ/Hz/krOu/9sP8A0RHWMv8Akax/
69y/9Kic6/3Z/wCJfkzz6iiivXOUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
K9g8M/8AJs/i3/sJp/6FbV4/XsHhn/k2fxb/ANhNP/QravIzj4KP/XyH/pSOrC7y/wAL/IX9l7/k
f7//ALBkn/o2KvHq9h/Ze/5H/UP+wZJ/6Nirx6jC/wDIxxHpT/8AbhVP4EPV/oFFFFeucwUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV7B8bP+RA+GH/YMP8A6Kt68fr2D42f8iB8
MP8AsGH/ANFW9eRjv99wvrL/ANIZ1Uf4VT0X5oXwz/ybP4t/7Caf+hW1ePV7D4Z/5Nn8W/8AYTT/
ANCtq8eoyr48T/18f/pMQxO1P/D+rCiiivXOUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooA6D4ef8AI/8Ahn/sJ23/AKNWug+Pf/JWdd/7Yf8AoiOuf+Hn/I/+Gf8AsJ23/o1a6D49
/wDJWdd/7Yf+iI68iX/I1j/17l/6VE6l/uz/AMS/Jmr8X/8AkR/h1/2Dj/6KgryqvVfi/wD8iP8A
Dr/sHH/0VBXlVVkv+6R9Zf8ApUjip/CFFFFeqWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQB6r8X/8AkSPh1/2Dj/6Kgrn9K/5JXrP/AF9r/OKug+L/APyJHw6/7Bx/9FQVz+lf8kr1n/r7
X+cVcnDf+6v0qf8ApUjzMb/Dp/44/wDpRxVFFFdZ6YUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFdr4E/wCRc8V/9en/ALJJXFV2vgT/AJFzxX/16f8AskldWD/jL0f5M8/NP92frH/0pHFUUUVy
noBRRRQAUUUUAFei/Av/AJG27/68X/8ARkdedV6L8C/+Rtu/+vF//Rkdedm3+51PQ9LKP99pep51
RRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAV6L8C/+Rtu/+vF//RkdedV6L8C/+Rtu/wDrxf8A9GR152bf7nU9D0so/wB9pepzXw8/
5H/wz/2E7b/0atdD8fP+Ss67/wBsP/REdc98PP8Akf8Awz/2E7b/ANGrXQ/Hz/krOu/9sP8A0RHW
Mv8Akax/69y/9Kic6/3Z/wCJfkzz6iiivXOUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAK9g8M/8AJs/i3/sJp/6FbV4/XsHhn/k2fxb/ANhNP/QravIzj4KP/XyH/pSOrC7y/wAL
/IX9l7/kf9Q/7Bkn/o2KvHq9h/Ze/wCR/wBQ/wCwZJ/6Nirx6jC/8jHEelP/ANuFU/gQ9X+gUUUV
65zBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXsHxs/5ED4Yf9gw/+irevH69
g+Nn/IgfDD/sGH/0Vb15GO/33C+sv/SGdVH+FU9F+aF8M/8AJs/i3/sJp/6FbV49XsPhn/k2fxb/
ANhNP/QravHqMq+PE/8AXx/+kxDE7U/8P6sKKKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigDoPh5/yP8A4Z/7Cdt/6NWug+Pf/JWdd/7Yf+iI65/4ef8AI/8Ahn/sJ23/AKNW
ug+Pf/JWdd/7Yf8AoiOvIl/yNY/9e5f+lROpf7s/8S/Jmr8X/wDkR/h1/wBg4/8AoqCvKq9V+L//
ACI/w6/7Bx/9FQV5VVZL/ukfWX/pUjip/CFFFFeqWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQB6r8X/wDkSPh1/wBg4/8AoqCuf0r/AJJXrP8A19r/ADiroPi//wAiR8Ov+wcf/RUFc/pX
/JK9Z/6+1/nFXJw3/ur9Kn/pUjzMb/Dp/wCOP/pRxVFFFdZ6YUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFdr4E/5FzxX/16f+ySVxVdr4E/5FzxX/16f+ySV1YP+MvR/kzz80/3Z+sf/SkcVRRR
XKegFFFFABRRRQAV6L8C/wDkbbv/AK8X/wDRkdedV6L8C/8Akbbv/rxf/wBGR152bf7nU9D0so/3
2l6nnVFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABXovwL/wCRtu/+vF//AEZHXnVei/Av/kbbv/rxf/0ZHXnZt/udT0PSyj/faXqc
18PP+R/8M/8AYTtv/Rq10Hx7/wCSs67/ANsP/REdc/8ADz/kf/DP/YTtv/Rq10Hx7/5Kzrv/AGw/
9ER1jL/kax/69y/9Kic6/wB2f+Jfkzz+iiivXOUKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAK9g8M/wDJs/i3/sJp/wChW1eP17B4Z/5Nn8W/9hNP/QravIzj4KP/AF8h/wClI6sL
vL/C/wAg/Ze/5H/UP+wZJ/6Nirx+vYP2Xv8Akf8AUP8AsGSf+jYq8fowv/IxxHpT/wDbgqfwIer/
AECiiivXOUKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK9g+Nn/IgfDD/sGH/0
Vb14/XsHxs/5ED4Yf9gw/wDoq3ryMd/vuF9Zf+kM6qP8Kp6L80Hhn/k2fxb/ANhNP/QravH69g8M
/wDJs/i3/sJp/wChW1eP0ZV8eJ/6+P8A9JiGJ2p/4f1YUUUV65yhRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFAHQfDz/kf/AAz/ANhO2/8ARq10Hx7/AOSs67/2w/8AREdc/wDDz/kf
/DP/AGE7b/0atdB8e/8AkrOu/wDbD/0RHXkS/wCRrH/r3L/0qJ1L/dn/AIl+TNX4v/8AIkfDr/sH
H/0VBXlVeq/F/wD5Ej4df9g4/wDoqCvKqvJv90j6y/8ASpHFT+EKKKK9QsKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigD1X4v/8AIkfDr/sHH/0VBXP6V/ySzWf+vtf5xV0Hxf8A+RI+HX/Y
OP8A6Kgrn9K/5JZrP/X2v84q5OG/91fpU/8ASpHmY3+HT/xx/wDSjiqKKK6z0wooooAKKKKACiii
gAooooAKKKKACiiigAooooAK7XwJ/wAi54r/AOvT/wBkkriq7XwJ/wAi54r/AOvT/wBkkrqwf8Ze
j/Jnn5p/uz9Y/wDpSOKooorlPQCiiigAooooAK9F+Bf/ACNt3/14v/6Mjrzquj8C+Jv+EV1ea++y
fa/MgMOzzPLxllOc4P8Ad/WuLMaU62GnTpq7aO3Lq0KGKhUqOyTOcor0X/hPtB/6EbS/zj/+NUf8
J9oP/QjaX+cf/wAarP61if8Anw//AAKP+Zr9Uwv/AEEL/wABl/kedUV6L/wn2g/9CNpf5x//ABqj
/hPtB/6EbS/zj/8AjVH1rE/8+H/4FH/MPqmF/wCghf8AgMv8jzqivRf+E+0H/oRtL/OP/wCNUf8A
CfaD/wBCNpf5x/8Axqj61if+fD/8Cj/mH1TC/wDQQv8AwGX+R51RXov/AAn2g/8AQjaX+cf/AMao
/wCE+0H/AKEbS/zj/wDjVH1rE/8APh/+BR/zD6phf+ghf+Ay/wAjzqivRf8AhPtB/wChG0v84/8A
41R/wn2g/wDQjaX+cf8A8ao+tYn/AJ8P/wACj/mH1TC/9BC/8Bl/kedUV6L/AMJ9oP8A0I2l/nH/
APGqP+E+0H/oRtL/ADj/APjVH1rE/wDPh/8AgUf8w+qYX/oIX/gMv8jzqivRf+E+0H/oRtL/ADj/
APjVH/CfaD/0I2l/nH/8ao+tYn/nw/8AwKP+YfVML/0EL/wGX+R51RXov/CfaD/0I2l/nH/8ao/4
T7Qf+hG0v84//jVH1rE/8+H/AOBR/wAw+qYX/oIX/gMv8jzqivRf+E+0H/oRtL/OP/41R/wn2g/9
CNpf5x//ABqj61if+fD/APAo/wCYfVML/wBBC/8AAZf5HnVFei/8J9oP/QjaX+cf/wAao/4T7Qf+
hG0v84//AI1R9axP/Ph/+BR/zD6phf8AoIX/AIDL/I86or0X/hPtB/6EbS/zj/8AjVH/AAn2g/8A
QjaX+cf/AMao+tYn/nw//Ao/5h9Uwv8A0EL/AMBl/kedUV6L/wAJ9oP/AEI2l/nH/wDGqP8AhPtB
/wChG0v84/8A41R9axP/AD4f/gUf8w+qYX/oIX/gMv8AI86or0X/AIT7Qf8AoRtL/OP/AONUf8J9
oP8A0I2l/nH/APGqPrWJ/wCfD/8AAo/5h9Uwv/QQv/AZf5HnVFei/wDCfaD/ANCNpf5x/wDxqj/h
PtB/6EbS/wA4/wD41R9axP8Az4f/AIFH/MPqmF/6CF/4DL/I86or0X/hPtB/6EbS/wA4/wD41R/w
n2g/9CNpf5x//GqPrWJ/58P/AMCj/mH1TC/9BC/8Bl/kedUV6L/wn2g/9CNpf5x//GqP+E+0H/oR
tL/OP/41R9axP/Ph/wDgUf8AMPqmF/6CF/4DL/I86or0X/hPtB/6EbS/zj/+NUf8J9oP/QjaX+cf
/wAao+tYn/nw/wDwKP8AmH1TC/8AQQv/AAGX+R51RXov/CfaD/0I2l/nH/8AGqP+E+0H/oRtL/OP
/wCNUfWsT/z4f/gUf8w+qYX/AKCF/wCAy/yPOqK9F/4T7Qf+hG0v84//AI1R/wAJ9oP/AEI2l/nH
/wDGqPrWJ/58P/wKP+YfVML/ANBC/wDAZf5HnVFei/8ACfaD/wBCNpf5x/8Axqj/AIT7Qf8AoRtL
/OP/AONUfWsT/wA+H/4FH/MPqmF/6CF/4DL/ACPOqK9F/wCE+0H/AKEbS/zj/wDjVH/CfaD/ANCN
pf5x/wDxqj61if8Anw//AAKP+YfVML/0EL/wGX+R51RXov8Awn2g/wDQjaX+cf8A8ao/4T7Qf+hG
0v8AOP8A+NUfWsT/AM+H/wCBR/zD6phf+ghf+Ay/yPOqK9F/4T7Qf+hG0v8AOP8A+NUf8J9oP/Qj
aX+cf/xqj61if+fD/wDAo/5h9Uwv/QQv/AZf5HnVFei/8J9oP/QjaX+cf/xqj/hPtB/6EbS/zj/+
NUfWsT/z4f8A4FH/ADD6phf+ghf+Ay/yPOqK9F/4T7Qf+hG0v84//jVH/CfaD/0I2l/nH/8AGqPr
WJ/58P8A8Cj/AJh9Uwv/AEEL/wABl/kedUV6L/wn2g/9CNpf5x//ABqj/hPtB/6EbS/zj/8AjVH1
rE/8+H/4FH/MPqmF/wCghf8AgMv8jzqivRf+E+0H/oRtL/OP/wCNUf8ACfaD/wBCNpf5x/8Axqj6
1if+fD/8Cj/mH1TC/wDQQv8AwGX+R51RXov/AAn2g/8AQjaX+cf/AMao/wCE+0H/AKEbS/zj/wDj
VH1rE/8APh/+BR/zD6phf+ghf+Ay/wAjzqivRf8AhPtB/wChG0v84/8A41R/wn2g/wDQjaX+cf8A
8ao+tYn/AJ8P/wACj/mH1TC/9BC/8Bl/kedUV6L/AMJ9oP8A0I2l/nH/APGqP+E+0H/oRtL/ADj/
APjVH1rE/wDPh/8AgUf8w+qYX/oIX/gMv8jzqivRf+E+0H/oRtL/ADj/APjVH/CfaD/0I2l/nH/8
ao+tYn/nw/8AwKP+YfVML/0EL/wGX+R51RXov/CfaD/0I2l/nH/8ao/4T7Qf+hG0v84//jVH1rE/
8+H/AOBR/wAw+qYX/oIX/gMv8jzqivRf+E+0H/oRtL/OP/41R/wn2g/9CNpf5x//ABqj61if+fD/
APAo/wCYfVML/wBBC/8AAZf5HnVFei/8J9oP/QjaX+cf/wAao/4T7Qf+hG0v84//AI1R9axP/Ph/
+BR/zD6phf8AoIX/AIDL/I86or0X/hPtB/6EbS/zj/8AjVH/AAn2g/8AQjaX+cf/AMao+tYn/nw/
/Ao/5h9Uwv8A0EL/AMBl/kedUV6L/wAJ9oP/AEI2l/nH/wDGqP8AhPtB/wChG0v84/8A41R9axP/
AD4f/gUf8w+qYX/oIX/gMv8AI86or0X/AIT7Qf8AoRtL/OP/AONUf8J9oP8A0I2l/nH/APGqPrWJ
/wCfD/8AAo/5h9Uwv/QQv/AZf5HnVFei/wDCfaD/ANCNpf5x/wDxqj/hPtB/6EbS/wA4/wD41R9a
xP8Az4f/AIFH/MPqmF/6CF/4DL/I86or0X/hPtB/6EbS/wA4/wD41R/wn2g/9CNpf5x//GqPrWJ/
58P/AMCj/mH1TC/9BC/8Bl/kedUV6L/wn2g/9CNpf5x//GqP+E+0H/oRtL/OP/41R9axP/Ph/wDg
Uf8AMPqmF/6CF/4DL/I86or0X/hPtB/6EbS/zj/+NUf8J9oP/QjaX+cf/wAao+tYn/nw/wDwKP8A
mH1TC/8AQQv/AAGX+R51RXov/CfaD/0I2l/nH/8AGqP+E+0H/oRtL/OP/wCNUfWsT/z4f/gUf8w+
qYX/AKCF/wCAy/yPOqK9F/4T7Qf+hG0v84//AI1R/wAJ9oP/AEI2l/nH/wDGqPrWJ/58P/wKP+Yf
VML/ANBC/wDAZf5HnVFei/8ACfaD/wBCNpf5x/8Axqj/AIT7Qf8AoRtL/OP/AONUfWsT/wA+H/4F
H/MPqmF/6CF/4DL/ACPOq9F+Bf8AyNt3/wBeL/8AoyOj/hPtB/6EbS/zj/8AjVWbH4maZp8xlsPC
NnayldpeGVUYjrjIj6cD8q5sZPFYihKkqDV1/NH/ADOrBQwmGrwrOunZ/wAsv8jkfh5/yP8A4Z/7
Cdt/6NWug+Pf/JWdd/7Yf+iI64/w9qP9j6/pmp+V532K6iufL3bd+xw23ODjOMZwa9B1/wCIXhLx
Bq0+p6v4A+0X0+3zJP7ZmTdtUKOFUAcADpV4iFanjo4iFNzjyOOjju2n9prsebBxlRcHKzvfr28k
zy6ivQf+Ep8Cf9E5/wDK5P8A4Uf8JT4E/wCic/8Alcn/AMK3+uVv+gef30//AJMz9lH+dfj/AJHn
1Feg/wDCU+BP+ic/+Vyf/Cj/AISnwJ/0Tn/yuT/4UfXK3/QPP76f/wAmHso/zr8f8jz6ivQf+Ep8
Cf8AROf/ACuT/wCFH/CU+BP+ic/+Vyf/AAo+uVv+gef30/8A5MPZR/nX4/5Hn1Feg/8ACU+BP+ic
/wDlcn/wo/4SnwJ/0Tn/AMrk/wDhR9crf9A8/vp//Jh7KP8AOvx/yPPqK9B/4SnwJ/0Tn/yuT/4U
f8JT4E/6Jz/5XJ/8KPrlb/oHn99P/wCTD2Uf51+P+R59RXoP/CU+BP8AonP/AJXJ/wDCj/hKfAn/
AETn/wArk/8AhR9crf8AQPP76f8A8mHso/zr8f8AI8+or0H/AISnwJ/0Tn/yuT/4Uf8ACU+BP+ic
/wDlcn/wo+uVv+gef30//kw9lH+dfj/kefUV6D/wlPgT/onP/lcn/wAKP+Ep8Cf9E5/8rk/+FH1y
t/0Dz++n/wDJh7KP86/H/I8+or0H/hKfAn/ROf8AyuT/AOFH/CU+BP8AonP/AJXJ/wDCj65W/wCg
ef30/wD5MPZR/nX4/wCR59RXoP8AwlPgT/onP/lcn/wo/wCEp8Cf9E5/8rk/+FH1yt/0Dz++n/8A
Jh7KP86/H/I8+r2Dwz/ybP4t/wCwmn/oVtWB/wAJT4E/6Jz/AOVyf/CrGrfETSX8B6l4X0Hwr/ZN
rfSpMz/2i8+HDIScMueRGB1HrXHjXiMX7OEaMlacW23C1k7vaTf4GtLkp8zc07prr29DX/Ze/wCR
/wBQ/wCwZJ/6Nirx+uw+F3jT/hBfEFxqf2D7f5tq1t5fneVjLo27O1v7mMY71o/8JT4E/wCic/8A
lcn/AMKtKvh8bVqqk5Rko2s49L33ku4rwnSjHmSavvfrbsmefUV6D/wlPgT/AKJz/wCVyf8Awo/4
SnwJ/wBE5/8AK5P/AIV0/XK3/QPP76f/AMmZ+yj/ADr8f8jz6ivQf+Ep8Cf9E5/8rk/+FH/CU+BP
+ic/+Vyf/Cj65W/6B5/fT/8Akw9lH+dfj/kefUV6D/wlPgT/AKJz/wCVyf8Awo/4SnwJ/wBE5/8A
K5P/AIUfXK3/AEDz++n/APJh7KP86/H/ACPPqK9B/wCEp8Cf9E5/8rk/+FH/AAlPgT/onP8A5XJ/
8KPrlb/oHn99P/5MPZR/nX4/5Hn1Feg/8JT4E/6Jz/5XJ/8ACj/hKfAn/ROf/K5P/hR9crf9A8/v
p/8AyYeyj/Ovx/yPPqK9B/4SnwJ/0Tn/AMrk/wDhR/wlPgT/AKJz/wCVyf8Awo+uVv8AoHn99P8A
+TD2Uf51+P8AkefUV6D/AMJT4E/6Jz/5XJ/8KP8AhKfAn/ROf/K5P/hR9crf9A8/vp//ACYeyj/O
vx/yPPqK9B/4SnwJ/wBE5/8AK5P/AIUf8JT4E/6Jz/5XJ/8ACj65W/6B5/fT/wDkw9lH+dfj/kef
UV6D/wAJT4E/6Jz/AOVyf/Cj/hKfAn/ROf8AyuT/AOFH1yt/0Dz++n/8mHso/wA6/H/I8+or0H/h
KfAn/ROf/K5P/hR/wlPgT/onP/lcn/wo+uVv+gef30//AJMPZR/nX4/5Hn1ewfGz/kQPhh/2DD/6
Kt6wP+Ep8Cf9E5/8rk/+FVviP45g8XafoNlZ6P8A2Xa6RE8MSfajPlCECjJUHgRjrnOa5air4nF0
J+ylGMHJttx6xa6Sb3NY8lOnNcybdu/fzR1Hhn/k2fxb/wBhNP8A0K2rx+vQfBvj+w0TwTf+GdX8
Pf2vY3l19pk/01rftHhflUngxg5yKP8AhKfAn/ROf/K5P/hSw3t8LUrXoykpTck04bWS6yT6dgqc
lSMPeSsrdfPyPPqK9B/4SnwJ/wBE5/8AK5P/AIUf8JT4E/6Jz/5XJ/8ACuv65W/6B5/fT/8AkzL2
Uf51+P8AkefUV6D/AMJT4E/6Jz/5XJ/8KP8AhKfAn/ROf/K5P/hR9crf9A8/vp//ACYeyj/Ovx/y
PPqK9B/4SnwJ/wBE5/8AK5P/AIUf8JT4E/6Jz/5XJ/8ACj65W/6B5/fT/wDkw9lH+dfj/kefUV6D
/wAJT4E/6Jz/AOVyf/Cj/hKfAn/ROf8AyuT/AOFH1yt/0Dz++n/8mHso/wA6/H/I8+or0H/hKfAn
/ROf/K5P/hR/wlPgT/onP/lcn/wo+uVv+gef30//AJMPZR/nX4/5Hn1Feg/8JT4E/wCic/8Alcn/
AMKP+Ep8Cf8AROf/ACuT/wCFH1yt/wBA8/vp/wDyYeyj/Ovx/wAjz6ivQf8AhKfAn/ROf/K5P/hR
/wAJT4E/6Jz/AOVyf/Cj65W/6B5/fT/+TD2Uf51+P+R59RXoP/CU+BP+ic/+Vyf/AAo/4SnwJ/0T
n/yuT/4UfXK3/QPP76f/AMmHso/zr8f8jz6ivQf+Ep8Cf9E5/wDK5P8A4Uf8JT4E/wCic/8Alcn/
AMKPrlb/AKB5/fT/APkw9lH+dfj/AJHn1Feg/wDCU+BP+ic/+Vyf/Cj/AISnwJ/0Tn/yuT/4UfXK
3/QPP76f/wAmHso/zr8f8jnvh5/yP/hn/sJ23/o1a6D49/8AJWdd/wC2H/oiOrOneNfBenahbXtn
8PfLuraVZon/ALbmO11IKnBXB5A61y3j7xH/AMJb4tv9b+y/ZPtXl/ufM8zbtjVPvYGc7c9O9c9K
Narj1iJU3GKg1q47uSf2ZPsaScI0eRSu7369n3SO1+L/APyJHw6/7Bx/9FQV5VXo9z8QNF1LQ9F0
7XPCf2/+y7dbeKT+0nizhVUnCr32Dgk4qj/wkngv/oQf/KzP/hU4CVfC0VSlRk2nLZwtrJvrJdzh
jeKtY4aiu5/4STwX/wBCD/5WZ/8ACj/hJPBf/Qg/+Vmf/Cuz63V/58S++H/yZXM+xw1Fdz/wkngv
/oQf/KzP/hR/wkngv/oQf/KzP/hR9bq/8+JffD/5MOZ9jhqK7n/hJPBf/Qg/+Vmf/Cj/AISTwX/0
IP8A5WZ/8KPrdX/nxL74f/JhzPscNRXc/wDCSeC/+hB/8rM/+FH/AAkngv8A6EH/AMrM/wDhR9bq
/wDPiX3w/wDkw5n2OGoruf8AhJPBf/Qg/wDlZn/wo/4STwX/ANCD/wCVmf8Awo+t1f8AnxL74f8A
yYcz7HDUV3P/AAkngv8A6EH/AMrM/wDhR/wkngv/AKEH/wArM/8AhR9bq/8APiX3w/8Akw5n2OGo
ruf+Ek8F/wDQg/8AlZn/AMKP+Ek8F/8AQg/+Vmf/AAo+t1f+fEvvh/8AJhzPscNRXc/8JJ4L/wCh
B/8AKzP/AIUf8JJ4L/6EH/ysz/4UfW6v/PiX3w/+TDmfY4aiu5/4STwX/wBCD/5WZ/8ACj/hJPBf
/Qg/+Vmf/Cj63V/58S++H/yYcz7G58X/APkSPh1/2Dj/AOioK5/Sv+SWaz/19r/OKmePvGcHimx0
WztNK/s220uNook+0mbKkIAMlQeAnfOc1R0PxFb2GhXGlXum/bbeeXzW/fmP+7gcDPVQetbZFCWH
w/JX91vn8922tr9zhxdKpKnDkjdqSdtNk79XY5uiuk/tfw9/0LH/AJUJP8KP7X8Pf9Cx/wCVCT/C
u/2Uf51/5N/ka/Wan/PmX3x/+SOborpP7X8Pf9Cx/wCVCT/Cj+1/D3/Qsf8AlQk/wo9lH+df+Tf5
B9Zqf8+ZffH/AOSOborpP7X8Pf8AQsf+VCT/AAo/tfw9/wBCx/5UJP8ACj2Uf51/5N/kH1mp/wA+
ZffH/wCSOborpP7X8Pf9Cx/5UJP8KP7X8Pf9Cx/5UJP8KPZR/nX/AJN/kH1mp/z5l98f/kjm6K6T
+1/D3/Qsf+VCT/Cj+1/D3/Qsf+VCT/Cj2Uf51/5N/kH1mp/z5l98f/kjm6K6T+1/D3/Qsf8AlQk/
wo/tfw9/0LH/AJUJP8KPZR/nX/k3+QfWan/PmX3x/wDkjm6K6T+1/D3/AELH/lQk/wAKP7X8Pf8A
Qsf+VCT/AAo9lH+df+Tf5B9Zqf8APmX3x/8Akjm6K6T+1/D3/Qsf+VCT/Cj+1/D3/Qsf+VCT/Cj2
Uf51/wCTf5B9Zqf8+ZffH/5I5uu18Cf8i54r/wCvT/2SSs7+1/D3/Qsf+VCT/CrMXijTrTTtQtNN
0P7L9siMTv8Aa2fsQDgjtuPpWtBQpT53Nde/b0ObGOtiKXs40mm2t3Ho0/5jkqKKK4z1AooooAKK
KKACuj8C+Gf+Eq1eax+1/ZPLgM2/y/MzhlGMZH979K5yvRfgX/yNt3/14v8A+jI64sxqzo4adSm7
NI7cuowr4qFOorpsyf7B8Kf9Dl/5S5f8aP7B8Kf9Dl/5S5f8a5Ciq+rVP+f0vuh/8iL6zT/58x++
f/yR1/8AYPhT/ocv/KXL/jR/YPhT/ocv/KXL/jXIUUfVqn/P6X3Q/wDkQ+s0/wDnzH75/wDyR1/9
g+FP+hy/8pcv+NH9g+FP+hy/8pcv+NchRR9Wqf8AP6X3Q/8AkQ+s0/8AnzH75/8AyR1/9g+FP+hy
/wDKXL/jR/YPhT/ocv8Ayly/41yFFH1ap/z+l90P/kQ+s0/+fMfvn/8AJHX/ANg+FP8Aocv/ACly
/wCNH9g+FP8Aocv/ACly/wCNchRR9Wqf8/pfdD/5EPrNP/nzH75//JHX/wBg+FP+hy/8pcv+NH9g
+FP+hy/8pcv+NchRR9Wqf8/pfdD/AORD6zT/AOfMfvn/APJHX/2D4U/6HL/yly/40f2D4U/6HL/y
ly/41yFFH1ap/wA/pfdD/wCRD6zT/wCfMfvn/wDJHX/2D4U/6HL/AMpcv+NH9g+FP+hy/wDKXL/j
XIUUfVqn/P6X3Q/+RD6zT/58x++f/wAkdf8A2D4U/wChy/8AKXL/AI0f2D4U/wChy/8AKXL/AI1y
FFH1ap/z+l90P/kQ+s0/+fMfvn/8kdf/AGD4U/6HL/yly/40f2D4U/6HL/yly/41yFFH1ap/z+l9
0P8A5EPrNP8A58x++f8A8kdf/YPhT/ocv/KXL/jR/YPhT/ocv/KXL/jXIUUfVqn/AD+l90P/AJEP
rNP/AJ8x++f/AMkdf/YPhT/ocv8Ayly/40f2D4U/6HL/AMpcv+NchRR9Wqf8/pfdD/5EPrNP/nzH
75//ACR1/wDYPhT/AKHL/wApcv8AjR/YPhT/AKHL/wApcv8AjXIUUfVqn/P6X3Q/+RD6zT/58x++
f/yR1/8AYPhT/ocv/KXL/jR/YPhT/ocv/KXL/jXIUUfVqn/P6X3Q/wDkQ+s0/wDnzH75/wDyR1/9
g+FP+hy/8pcv+NH9g+FP+hy/8pcv+NchRR9Wqf8AP6X3Q/8AkQ+s0/8AnzH75/8AyR1/9g+FP+hy
/wDKXL/jR/YPhT/ocv8Ayly/41yFFH1ap/z+l90P/kQ+s0/+fMfvn/8AJHX/ANg+FP8Aocv/ACly
/wCNH9g+FP8Aocv/ACly/wCNchRR9Wqf8/pfdD/5EPrNP/nzH75//JHX/wBg+FP+hy/8pcv+NH9g
+FP+hy/8pcv+NchRR9Wqf8/pfdD/AORD6zT/AOfMfvn/APJHX/2D4U/6HL/yly/40f2D4U/6HL/y
ly/41yFFH1ap/wA/pfdD/wCRD6zT/wCfMfvn/wDJHX/2D4U/6HL/AMpcv+NH9g+FP+hy/wDKXL/j
XIUUfVqn/P6X3Q/+RD6zT/58x++f/wAkdf8A2D4U/wChy/8AKXL/AI0f2D4U/wChy/8AKXL/AI1y
FFH1ap/z+l90P/kQ+s0/+fMfvn/8kdf/AGD4U/6HL/yly/40f2D4U/6HL/yly/41yFFH1ap/z+l9
0P8A5EPrNP8A58x++f8A8kdf/YPhT/ocv/KXL/jR/YPhT/ocv/KXL/jXIUUfVqn/AD+l90P/AJEP
rNP/AJ8x++f/AMkdf/YPhT/ocv8Ayly/40f2D4U/6HL/AMpcv+NchRR9Wqf8/pfdD/5EPrNP/nzH
75//ACR1/wDYPhT/AKHL/wApcv8AjR/YPhT/AKHL/wApcv8AjXIUUfVqn/P6X3Q/+RD6zT/58x++
f/yR1/8AYPhT/ocv/KXL/jR/YPhT/ocv/KXL/jXIUUfVqn/P6X3Q/wDkQ+s0/wDnzH75/wDyR1/9
g+FP+hy/8pcv+NH9g+FP+hy/8pcv+NchRR9Wqf8AP6X3Q/8AkQ+s0/8AnzH75/8AyR1/9g+FP+hy
/wDKXL/jR/YPhT/ocv8Ayly/41yFFH1ap/z+l90P/kQ+s0/+fMfvn/8AJHX/ANg+FP8Aocv/ACly
/wCNH9g+FP8Aocv/ACly/wCNchRR9Wqf8/pfdD/5EPrNP/nzH75//JHX/wBg+FP+hy/8pcv+NH9g
+FP+hy/8pcv+NchRR9Wqf8/pfdD/AORD6zT/AOfMfvn/APJHX/2D4U/6HL/yly/40f2D4U/6HL/y
ly/41yFFH1ap/wA/pfdD/wCRD6zT/wCfMfvn/wDJHX/2D4U/6HL/AMpcv+NH9g+FP+hy/wDKXL/j
XIUUfVqn/P6X3Q/+RD6zT/58x++f/wAkdf8A2D4U/wChy/8AKXL/AI0f2D4U/wChy/8AKXL/AI1y
FFH1ap/z+l90P/kQ+s0/+fMfvn/8kdf/AGD4U/6HL/yly/40f2D4U/6HL/yly/41yFFH1ap/z+l9
0P8A5EPrNP8A58x++f8A8kdf/YPhT/ocv/KXL/jR/YPhT/ocv/KXL/jXIUUfVqn/AD+l90P/AJEP
rNP/AJ8x++f/AMkdf/YPhT/ocv8Ayly/40f2D4U/6HL/AMpcv+NchRR9Wqf8/pfdD/5EPrNP/nzH
75//ACR1/wDYPhT/AKHL/wApcv8AjR/YPhT/AKHL/wApcv8AjXIUUfVqn/P6X3Q/+RD6zT/58x++
f/yR1/8AYPhT/ocv/KXL/jR/YPhT/ocv/KXL/jXIUUfVqn/P6X3Q/wDkQ+s0/wDnzH75/wDyR1/9
g+FP+hy/8pcv+NH9g+FP+hy/8pcv+NchRR9Wqf8AP6X3Q/8AkQ+s0/8AnzH75/8AyR1/9g+FP+hy
/wDKXL/jR/YPhT/ocv8Ayly/41yFFH1ap/z+l90P/kQ+s0/+fMfvn/8AJHX/ANg+FP8Aocv/ACly
/wCNH9g+FP8Aocv/ACly/wCNchRR9Wqf8/pfdD/5EPrNP/nzH75//JHX/wBg+FP+hy/8pcv+NH9g
+FP+hy/8pcv+NchRR9Wqf8/pfdD/AORD6zT/AOfMfvn/APJHX/2D4U/6HL/yly/40f2D4U/6HL/y
ly/41yFFH1ap/wA/pfdD/wCRD6zT/wCfMfvn/wDJHX/2D4U/6HL/AMpcv+NH9g+FP+hy/wDKXL/j
XIUUfVqn/P6X3Q/+RD6zT/58x++f/wAkdf8A2D4U/wChy/8AKXL/AI1o6F4H0TXrt7XSvFf2idIz
Iy/2c6YUEDOWYDqRXn9ei/Av/kbbv/rxf/0ZHXJjo1sPh51YVZXS7R/+ROvASoYnEQpToxs30c//
AJI4rw9p39sa/pmmeb5P226itvM27tm9wu7GRnGc4yK9B1/4e+EvD+rT6Zq/j/7PfQbfMj/saZ9u
5Qw5ViDwQetcd8PP+R/8M/8AYTtv/Rq10Px8/wCSs67/ANsP/REdLETrVMdHDwqOEeRy0Ud00vtJ
9zigoxoubjd3t17eTQf8It4E/wCijf8AlDn/AMaP+EW8Cf8ARRv/AChz/wCNefUVv9Trf9BE/up/
/IGftY/yL8f8z0H/AIRbwJ/0Ub/yhz/40f8ACLeBP+ijf+UOf/GvPqKPqdb/AKCJ/dT/APkA9rH+
Rfj/AJnoP/CLeBP+ijf+UOf/ABo/4RbwJ/0Ub/yhz/4159RR9Trf9BE/up//ACAe1j/Ivx/zPQf+
EW8Cf9FG/wDKHP8A40f8It4E/wCijf8AlDn/AMa8+oo+p1v+gif3U/8A5APax/kX4/5noP8Awi3g
T/oo3/lDn/xo/wCEW8Cf9FG/8oc/+NefUUfU63/QRP7qf/yAe1j/ACL8f8z0H/hFvAn/AEUb/wAo
c/8AjR/wi3gT/oo3/lDn/wAa8+oo+p1v+gif3U//AJAPax/kX4/5noP/AAi3gT/oo3/lDn/xo/4R
bwJ/0Ub/AMoc/wDjXn1FH1Ot/wBBE/up/wDyAe1j/Ivx/wAz0H/hFvAn/RRv/KHP/jR/wi3gT/oo
3/lDn/xrz6ij6nW/6CJ/dT/+QD2sf5F+P+Z6D/wi3gT/AKKN/wCUOf8Axo/4RbwJ/wBFG/8AKHP/
AI159RR9Trf9BE/up/8AyAe1j/Ivx/zPQf8AhFvAn/RRv/KHP/jR/wAIt4E/6KN/5Q5/8a8+oo+p
1v8AoIn91P8A+QD2sf5F+P8Ameg/8It4E/6KN/5Q5/8AGrGrfDvSU8B6l4o0HxV/a1rYypCyf2c8
GXLICMs2eBID0PpXm1eweGf+TZ/Fv/YTT/0K2rjxqxGE9nONaTvOKaahazdntFP8TWlyVOZOCVk3
17epyHwu8F/8J34guNM+3/YPKtWufM8nzc4dF243L/fznPatD/hFvAn/AEUb/wAoc/8AjXQfsvf8
j/qH/YMk/wDRsVePVadfEY2rRVVxjBRtZR63vvF9hWhClGXKm3fe/S3Zo9B/4RbwJ/0Ub/yhz/40
f8It4E/6KN/5Q5/8a8+orp+p1v8AoIn91P8A+QM/ax/kX4/5noP/AAi3gT/oo3/lDn/xo/4RbwJ/
0Ub/AMoc/wDjXn1FH1Ot/wBBE/up/wDyAe1j/Ivx/wAz0H/hFvAn/RRv/KHP/jR/wi3gT/oo3/lD
n/xrz6ij6nW/6CJ/dT/+QD2sf5F+P+Z6D/wi3gT/AKKN/wCUOf8Axo/4RbwJ/wBFG/8AKHP/AI15
9RR9Trf9BE/up/8AyAe1j/Ivx/zPQf8AhFvAn/RRv/KHP/jR/wAIt4E/6KN/5Q5/8a8+oo+p1v8A
oIn91P8A+QD2sf5F+P8Ameg/8It4E/6KN/5Q5/8AGj/hFvAn/RRv/KHP/jXn1FH1Ot/0ET+6n/8A
IB7WP8i/H/M9B/4RbwJ/0Ub/AMoc/wDjR/wi3gT/AKKN/wCUOf8Axrz6ij6nW/6CJ/dT/wDkA9rH
+Rfj/meg/wDCLeBP+ijf+UOf/Gj/AIRbwJ/0Ub/yhz/4159RR9Trf9BE/up//IB7WP8AIvx/zPQf
+EW8Cf8ARRv/AChz/wCNH/CLeBP+ijf+UOf/ABrz6ij6nW/6CJ/dT/8AkA9rH+Rfj/meg/8ACLeB
P+ijf+UOf/Gj/hFvAn/RRv8Ayhz/AONefUUfU63/AEET+6n/APIB7WP8i/H/ADPQf+EW8Cf9FG/8
oc/+NVviP4Gg8I6foN7Z6x/alrq8TzRP9lMGEAQqcFieRIOuMYrh69g+Nn/IgfDD/sGH/wBFW9ct
R18Ni6EPaylGbkmmo9It9Ip7mseSpTm+VJq3fv5swPBvgCw1vwTf+JtX8Q/2RY2d19mk/wBCa47R
4b5WB5MgGMGj/hFvAn/RRv8Ayhz/AONdB4Z/5Nn8W/8AYTT/ANCtq8epYb2+KqVr1pRUZuKSUNrJ
9Yt9e4VOSnGHup3V+vn5noP/AAi3gT/oo3/lDn/xo/4RbwJ/0Ub/AMoc/wDjXn1Fdf1Ot/0ET+6n
/wDIGXtY/wAi/H/M9B/4RbwJ/wBFG/8AKHP/AI0f8It4E/6KN/5Q5/8AGvPqKPqdb/oIn91P/wCQ
D2sf5F+P+Z6D/wAIt4E/6KN/5Q5/8aP+EW8Cf9FG/wDKHP8A4159RR9Trf8AQRP7qf8A8gHtY/yL
8f8AM9B/4RbwJ/0Ub/yhz/40f8It4E/6KN/5Q5/8a8+oo+p1v+gif3U//kA9rH+Rfj/meg/8It4E
/wCijf8AlDn/AMaP+EW8Cf8ARRv/AChz/wCNefUUfU63/QRP7qf/AMgHtY/yL8f8z0H/AIRbwJ/0
Ub/yhz/40f8ACLeBP+ijf+UOf/GvPqKPqdb/AKCJ/dT/APkA9rH+Rfj/AJnoP/CLeBP+ijf+UOf/
ABo/4RbwJ/0Ub/yhz/4159RR9Trf9BE/up//ACAe1j/Ivx/zPQf+EW8Cf9FG/wDKHP8A40f8It4E
/wCijf8AlDn/AMa8+oo+p1v+gif3U/8A5APax/kX4/5noP8Awi3gT/oo3/lDn/xo/wCEW8Cf9FG/
8oc/+NefUUfU63/QRP7qf/yAe1j/ACL8f8z0H/hFvAn/AEUb/wAoc/8AjR/wi3gT/oo3/lDn/wAa
8+oo+p1v+gif3U//AJAPax/kX4/5npOneCvBeo6hbWVn8QvMurmVYYk/sSYbnYgKMlsDkjrXLePv
Dn/CJeLb/RPtX2v7L5f77y/L3bo1f7uTjG7HXtR8PP8Akf8Awz/2E7b/ANGrXQfHv/krOu/9sP8A
0RHXPSlWpY9YeVRyi4N6qO6kl9mK7mklCVHnUbO9uvZ92ye5+H+i6boei6jrniz7B/alutxFH/Zr
y4yqsRlW7bxyQM1R/wCEb8F/9D9/5Rp/8a3Pi/8A8iP8Ov8AsHH/ANFQV5VU4CNfFUVVlWkm3LZQ
tpJrrF9jhjeSvc7n/hG/Bf8A0P3/AJRp/wDGj/hG/Bf/AEP3/lGn/wAa4aiuz6pV/wCf8vuh/wDI
Fcr7nc/8I34L/wCh+/8AKNP/AI0f8I34L/6H7/yjT/41w1FH1Sr/AM/5fdD/AOQDlfc7n/hG/Bf/
AEP3/lGn/wAaP+Eb8F/9D9/5Rp/8a4aij6pV/wCf8vuh/wDIByvudz/wjfgv/ofv/KNP/jR/wjfg
v/ofv/KNP/jXDUUfVKv/AD/l90P/AJAOV9zuf+Eb8F/9D9/5Rp/8aP8AhG/Bf/Q/f+Uaf/GuGoo+
qVf+f8vuh/8AIByvudz/AMI34L/6H7/yjT/40f8ACN+C/wDofv8AyjT/AONcNRR9Uq/8/wCX3Q/+
QDlfc7n/AIRvwX/0P3/lGn/xo/4RvwX/AND9/wCUaf8AxrhqKPqlX/n/AC+6H/yAcr7nc/8ACN+C
/wDofv8AyjT/AONH/CN+C/8Aofv/ACjT/wCNcNRR9Uq/8/5fdD/5AOV9zuf+Eb8F/wDQ/f8AlGn/
AMaP+Eb8F/8AQ/f+Uaf/ABrhqKPqlX/n/L7of/IByvudl4+8GQeFrHRby01X+0rbVI2lif7MYcKA
hBwWJ5D98YxVHQ/Dlvf6Dcare6l9it4JfKb9wZP7uDwc9WA6V2Pxf/5Ej4df9g4/+ioK5/Sv+SV6
z/19r/OKtsinLEYfnr+81z+WzaW1uxw4urUjThySs3JK+mzduqsZ39keHv8AoZ//ACnyf40f2R4e
/wChn/8AKfJ/jXN0V3+1j/Iv/Jv8zX6tU/5/S+6P/wAidJ/ZHh7/AKGf/wAp8n+NH9keHv8AoZ//
ACnyf41zdFHtY/yL/wAm/wAw+rVP+f0vuj/8idJ/ZHh7/oZ//KfJ/jR/ZHh7/oZ//KfJ/jXN0Ue1
j/Iv/Jv8w+rVP+f0vuj/APInSf2R4e/6Gf8A8p8n+NH9keHv+hn/APKfJ/jXN0Ue1j/Iv/Jv8w+r
VP8An9L7o/8AyJ0n9keHv+hn/wDKfJ/jR/ZHh7/oZ/8Aynyf41zdFHtY/wAi/wDJv8w+rVP+f0vu
j/8AInSf2R4e/wChn/8AKfJ/jR/ZHh7/AKGf/wAp8n+Nc3RR7WP8i/8AJv8AMPq1T/n9L7o//InS
f2R4e/6Gf/ynyf40f2R4e/6Gf/ynyf41zdFHtY/yL/yb/MPq1T/n9L7o/wDyJ0n9keHv+hn/APKf
J/jR/ZHh7/oZ/wDynyf41zdFHtY/yL/yb/MPq1T/AJ/S+6P/AMidJ/ZHh7/oZ/8Aynyf41Zi8L6d
d6dqF3puufavscRldPsjJ2JAyT32n1rkq7XwJ/yLniv/AK9P/ZJK1oOFWfI4Lr37epzYxVsPS9pG
q201uo9Wl/KcVRRRXGeoFFFFABRRRQAV6L8C/wDkbbv/AK8X/wDRkdedV6L8C/8Akbbv/rxf/wBG
R152bf7nU9D0so/32l6nnVFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABXovwL/wCRtu/+vF//AEZHXnVei/Av/kbbv/rxf/0ZHXnZ
t/udT0PSyj/faXqc18PP+R/8M/8AYTtv/Rq10Px8/wCSs67/ANsP/REdc98PP+R/8M/9hO2/9GrX
Q/Hz/krOu/8AbD/0RHWMv+RrH/r3L/0qJzr/AHZ/4l+TPPqKKK9c5QooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAr2Dwz/AMmz+Lf+wmn/AKFbV4/XsHhn/k2fxb/2E0/9Ctq8jOPg
o/8AXyH/AKUjqwu8v8L/ACF/Ze/5H/UP+wZJ/wCjYq8er2H9l7/kf9Q/7Bkn/o2KvHqML/yMcR6U
/wD24VT+BD1f6BRRRXrnMFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFewfGz/
AJED4Yf9gw/+irevH69g+Nn/ACIHww/7Bh/9FW9eRjv99wvrL/0hnVR/hVPRfmhfDP8AybP4t/7C
af8AoVtXj1ew+Gf+TZ/Fv/YTT/0K2rx6jKvjxP8A18f/AKTEMTtT/wAP6sKKKK9c5QooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigDoPh5/yP/hn/sJ23/o1a6D49/8AJWdd/wC2H/oi
Ouf+Hn/I/wDhn/sJ23/o1a6D49/8lZ13/th/6IjryJf8jWP/AF7l/wClROpf7s/8S/Jmr8X/APkR
/h1/2Dj/AOioK8qr1X4v/wDIj/Dr/sHH/wBFQV5VVZL/ALpH1l/6VI4qfwhRRRXqlhRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAeq/F/wD5Ej4df9g4/wDoqCuf0r/kles/9fa/ziroPi//
AMiR8Ov+wcf/AEVBXP6V/wAkr1n/AK+1/nFXJw3/ALq/Sp/6VI8zG/w6f+OP/pRxVFFFdZ6YUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFdr4E/5FzxX/wBen/sklcVXa+BP+Rc8V/8AXp/7JJXV
g/4y9H+TPPzT/dn6x/8ASkcVRRRXKegFFFFABRRRQAV6L8C/+Rtu/wDrxf8A9GR151XovwL/AORt
u/8Arxf/ANGR152bf7nU9D0so/32l6nnVFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXovwL/AORtu/8Arxf/ANGR151XovwL/wCR
tu/+vF//AEZHXnZt/udT0PSyj/faXqc18PP+R/8ADP8A2E7b/wBGrXQ/Hz/krOu/9sP/AERHXPfD
z/kf/DP/AGE7b/0atdB8e/8AkrOu/wDbD/0RHWMv+RrH/r3L/wBKic6/3Z/4l+TPP6KKK9c5Qooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr2Dwz/ybP4t/wCwmn/oVtXj9eweGf8A
k2fxb/2E0/8AQravIzj4KP8A18h/6Ujqwu8v8L/IX9l7/kf9Q/7Bkn/o2KvHq9g/Ze/5H/UP+wZJ
/wCjYq8fowv/ACMcR6U//bgqfwIer/QKKKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAr2D42f8iB8MP+wYf/AEVb14/XsHxs/wCRA+GH/YMP/oq3ryMd/vuF9Zf+kM6qP8Kp
6L80L4Z/5Nn8W/8AYTT/ANCtq8er2Dwz/wAmz+Lf+wmn/oVtXj9GVfHif+vj/wDSYhidqf8Ah/Vh
RRRXrnKFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAdB8PP+R/8M/8AYTtv/Rq1
0Hx7/wCSs67/ANsP/REdc/8ADz/kf/DP/YTtv/Rq10Hx7/5Kzrv/AGw/9ER15Ev+RrH/AK9y/wDS
onUv92f+JfkzV+L/APyI/wAOv+wcf/RUFeVV6r8X/wDkSPh1/wBg4/8AoqCvKqvJf90j6y/9KkcV
P4Qooor1CwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPVfi/wD8iR8Ov+wcf/RUFc/p
X/JK9Z/6+1/nFXQfF/8A5Ej4df8AYOP/AKKgrn9K/wCSWaz/ANfa/wA4q5OG/wDdX6VP/SpHmY3+
HT/xx/8ASjiqKKK6z0wooooAKKKKACiiigAooooAKKKKACiiigAooooAK7XwJ/yLniv/AK9P/ZJK
4qu18Cf8i54r/wCvT/2SSurB/wAZej/Jnn5p/uz9Y/8ApSOKooorlPQCiiigAooooAK9F+Bf/I23
f/Xi/wD6MjrzqvRfgX/yNt3/ANeL/wDoyOvOzb/c6noellH++0vU86ooor0TzQooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK9F+Bf/I23f8A
14v/AOjI686r0X4F/wDI23f/AF4v/wCjI687Nv8Ac6noellH++0vU5r4ef8AI/8Ahn/sJ23/AKNW
ug+Pf/JWdd/7Yf8AoiOuf+Hn/I/+Gf8AsJ23/o1a6D49/wDJWdd/7Yf+iI6xl/yNY/8AXuX/AKVE
51/uz/xL8mef0UUV65yhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXsHhn/k2
fxb/ANhNP/QravH69g8M/wDJs/i3/sJp/wChW1eRnHwUf+vkP/SkdWF3l/hf5B+y9/yP+of9gyT/
ANGxV4/XsH7L3/I/6h/2DJP/AEbFXj9GF/5GOI9Kf/twVP4EPV/oFFFFeucoUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV7B8bP8AkQPhh/2DD/6Kt68fr2D42f8AIgfDD/sGH/0V
b15GO/33C+sv/SGdVH+FU9F+aDwz/wAmz+Lf+wmn/oVtXj9eweGf+TZ/Fv8A2E0/9Ctq8foyr48T
/wBfH/6TEMTtT/w/qwooor1zlCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOg+
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
v8g5I9jd8T+LNa8T/Zv7cvftX2bd5X7pE27sZ+6Bn7o6+lQ6T4i1XSLZoNOuvJiZy5Xy0bLYAzyD
6Csiiu2hFYdKNFcqXbT8iZ0qdSPJOKa7NHSf8Jv4h/6CH/kGP/4mj/hN/EP/AEEP/IMf/wATXN0V
0fWa387+9mH1DC/8+o/cv8jpP+E38Q/9BD/yDH/8TR/wm/iH/oIf+QY//ia5uij6zW/nf3sPqGF/
59R+5f5HSf8ACb+If+gh/wCQY/8A4mj/AITfxD/0EP8AyDH/APE1zdFH1mt/O/vYfUML/wA+o/cv
8jpP+E38Q/8AQQ/8gx//ABNH/Cb+If8AoIf+QY//AImuboo+s1v5397D6hhf+fUfuX+R0n/Cb+If
+gh/5Bj/APiaP+E38Q/9BD/yDH/8TXN0UfWa387+9h9Qwv8Az6j9y/yOk/4TfxD/ANBD/wAgx/8A
xNH/AAm/iH/oIf8AkGP/AOJrm6KPrNb+d/ew+oYX/n1H7l/kdJ/wm/iH/oIf+QY//iaP+E38Q/8A
QQ/8gx//ABNc3RR9Zrfzv72H1DC/8+o/cv8AI6T/AITfxD/0EP8AyDH/APE0f8Jv4h/6CH/kGP8A
+Jrm6KPrNb+d/ew+oYX/AJ9R+5f5HSf8Jv4h/wCgh/5Bj/8AiaiufGGu3VtLbz326KVCjr5MYypG
COFrAopPE1no5v72NYHDJ3VOP3IKKKKxOoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9kKZW5kc3RyZWFtCmVuZG9iago0
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
qsbEM4Q2Yhr+kSscRKsD8/A/vq7H54s+8/kQ93KtR9LbrKn39sw116qXVaU3LJtrYvDgu1WNiWcI
bcQ0/CNXOIhWB+bhvx5VvLMXVfWVWa71SHqbdcP8RBq0yX5ZdTv8I3Mw6H7YkEZM++cf1ZiRm7fr
RUfJT07YX4A6wGVVicVqomW293bUeZbhmedy/1vFL9M6XioqOpBSynsbDL4f1vxodWAefuvRbQc2
H6Uvn/WRW471SHmb9VOLiGLE6uplVeiRSfDwfAa9EdP+6dGnn8dS88Nd7DOPXa8mLIddVuWPHr27
u0PVa5es8Mu0jtkUlTgjp+SQO56ez2BItDowD7/16M82ZKM6iGdgpEs/TZsW0dC8vKH2t1m/OovN
O52oXlYtD3p0n3CLmXZoE7LnqZaA3ohp/8br1kleQcNYapO6e8fdNP9iRrerV2ektqP5l7ZPY+5D
zTO1SdajirN32+ZWZtpjmbzHNjOa8p9dnj2a6NV9aWNkPbr8nBQWGTe4gnrHTv4LK209Uzauq+qS
GrFr94YmUuGO8iKrxpOyrRZpEzfsvHPBjo/tw9Mu9pVsfagwJFodmIffesSUyEak8bPL52IRq0c/
S7fs9cyiKvHxVexvs35qCVGsGKdeVi0PevSRONRMO7ThQY/04p8eJR8aKvf/f/anvhlEBQm05Rlq
c6Bi7SK68Z9o6i+H1DA96rXCEjXpNqZH3XfEVNrWh/ImUINzsf/Kj7fMkU/eB/aqq1WHlvNepkFn
E+nXPs5U7eNxNOB5qYyiR8+tVbfVvLgdfflXTOVT9dThaRf7SraeX6BHXOG3Hq1+JspG/Vb5yC1X
etT7wG0Vb8yQ7yN3vM06oSCRhqy1X1bd2qWUVYQv8I+Mxs94hu7zC3Jfs1JlK9U7L+lRw8Ioos13
Mj2ivzvTgoFSGaZH7XO7xshjc5aqRNNGU14rouONBy8k6iyLS/+N6mrVoeW8ZtRhJ9H0Yc5U5fzB
qpuh6FGPbeq2mh8lGv8J0a5W6vC0q33QI1B2/Naja7YUFhekXu0jt1zpEQ3KOrf3FYuctL/Nmnpt
z1rZxH5Z9fUTQ0w2MWjw3aoRrEdEUbdnvkJ91m1MLZb0qHWxzWY72kvSo9dnxRbUlEpI1496rSr4
NJbpUZ2ZmzYeHkt5icT+R88kaiOLy/32m3TUoWXna76dqVbf5q9oLJVR9Oj55eq2mtuYYZOIMlqr
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
Z2U3CjM5CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBoYTAKMTAKMApSCi9BbHBoYTEKMTEKMApS
Cj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVu
ZG9iago0MwowCm9iago8PAovVHlwZQovUGFnZQovUGFyZW50CjEKMApSCi9NZWRpYUJveApbCjAK
MAo5NjAKNTQwCl0KL0NvbnRlbnRzCjQ0CjAKUgovUmVzb3VyY2VzCjQ1CjAKUgovQW5ub3RzCjQ3
CjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQovQ1MKL0RldmljZVJHQgo+Pgo+PgplbmRv
YmoKNDQKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAo0NgowClIKPj4Kc3Ry
ZWFtCnic7VzdimXFFd4wXm0C4k1CrhJCLmyDe+r/B+ZG0QwjRGNsMDrMhRxjN5Pd6oyBPEXAN/Ai
mOQB8gJqYsgz5CaPkm9V7V216vQ+3X3+oAM9w/Sc8/Wpv/W/Vq19nvVyED39fTW/sEbg/9VF/6zH
CyGjC1aY9In19/gQ/XfRm+BdEGn4WN8ob7SiF2O/9oZ+nvfv959ikWf9/dfGz88/Ev3ZF2kv87/n
ZzvNft5/8kr/Lv4+Y5NLmjwfE9NK5aUfouuVdUbZwSusoqxSfjCBgSMDnYxWDITV0RUri9KyOswk
ra8SPec39L/Wgw7CeNM7rwehtZlpbmIQOiq14SX2//opJjl93t//5Wef/kH3ElOlP/3pJ+vclHKw
MuJPf5qZdfpx/3L3/Ul/+rR/8/Swq7nBWyu98surzmteQ6arGKd0NGZinAVjpCPGiWikGTg4MtAp
4QAmbpbhDNyedU4NwXjnMutUxISFdaQfIuClVRbviJY2o/ognPt7d6/7rvsG//6JVy90Z92HnJeH
Wp6IA5U6GiMN5B0aEEjbrI5uiJYU3QWnocWaoSNHnaMVkmayGRjKlP94S7z/SjJcGpRxJG2ZaiIG
M3i3OArUuP/o4qOz39n+jc8K3Taapyi9JyMYhSWblnZthWbQWCFjFSy2IcM0javI9rKN2ZNEqN5W
N0BSBAopb/HKGym9swviZAJGXBZkHUGkwAToMeQ4nGC7+PXL3aPuMST5Sfo5dC92X3XfJsl+6aR/
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
JT25rhsmBuv14DizJ4TL94w14l2GFulGbkNJtmXSna4dSwfdJN0yIuuheIbLZ6TvnXCqxaZjNOKt
LD07kxL0Bg3UFya5fCu48qljZj5Jgbh8F7CR7zq6krCuwrFpPweyWXccvVUc3clkeYMIxO7Sn6Tp
SRC6adposd7pztJDtQexVRT9U/X6eLbKiNQtQbmG9slfXFAp3mo3NVNM6MhRLagwlwqjdQIGbv+Y
fED6YgwSspSF4KDXXLxt+80cbecYe3ggPXP+dnkO7vwGTa9XfSuHF5Ki5yN9LYfWNjj61hTIhAyK
tOZiCRw5CAEyVNrWUEp63JLuSJD05T7ASCaFkpEZokubIOj5gYqlKxvhLFX46lgvBBUFCclLAfHC
DJ5uZijOkDnwkUaIlFJoZKs2jZQeYRaNJCrlDuwCzWdYMdCm57ZlzFI4g5rSf7rTEVKncgJyV6+Q
sjt2hgKt+GkLOnKy1OGFemWRisx72cuf3PHxVvFxGy8SzEA3PHBTiHytlc7saqoUDiGslrlXHu7Y
26s7v3YwSXSD4KeW1ksr7D4vcnhp4AbBcpknNmvWdvnLBv7T3dvHwlJbh/JUVzE+L7u26mKn1l42
nbTF+Li04AFNOtVKnXDSYx/VFjToyFEbLBXbZBF7Smeg3KmtcVYQjhV7QM3hBa0WgQ/PFoHqzNar
SI9UzjYhRSI+XQpaZhRIgAOG59FJsdNo5M45YC1QOc2Ko94aRHTWVruQUG/pu4HcbBk0du5TSI2T
sdMUbMVPXtCR06iOr7Ss6zBs3tH+Vv6OtbeYtTsY/j59cV3Q4eh2/5oesTu7f+vtPv39H1Xey8QK
ZW5kc3RyZWFtCmVuZG9iago0NgowCm9iagozOTI4CmVuZG9iago0NwowCm9iagpbCl0KZW5kb2Jq
CjQ4CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovSW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKNDQK
L0hlaWdodAozNTcKL0NvbG9yU3BhY2UKL0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9T
TWFzawo1MQowClIKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5ndGgKNTIKMApSCj4+CnN0cmVhbQr/
2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQW
FhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAWUALAMBIgAC
EQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAA
AX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4
OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD
AQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEG
EkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpT
VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4
ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APlSiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9kKZW5kc3RyZWFt
CmVuZG9iago0OQowCm9iago8PAovU3VidHlwZQovSW1hZ2UKL0ludGVycG9sYXRlCnRydWUKL1dp
ZHRoCjU3NAovSGVpZ2h0CjE5OAovQ29sb3JTcGFjZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9u
ZW50CjgKL1NNYXNrCjUzCjAKUgovRmlsdGVyCi9EQ1REZWNvZGUKL0xlbmd0aAo1NAowClIKPj4K
c3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8M
EBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoW
GigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgA
xgI+AwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMC
BAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYn
KCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeY
mZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5
+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwAB
AgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpD
REVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ip
qrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMR
AD8A+VKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//2Qpl
bmRzdHJlYW0KZW5kb2JqCjUwCjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovSW50ZXJwb2xhdGUK
dHJ1ZQovV2lkdGgKNDY2Ci9IZWlnaHQKMjAyCi9Db2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQ
ZXJDb21wb25lbnQKOAovU01hc2sKNTUKMApSCi9GaWx0ZXIKL0RDVERlY29kZQovTGVuZ3RoCjU2
CjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAK
CgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoI
ChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCj/wAARCADKAdIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QA
tRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJ
ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx
8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcF
BAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygp
KjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJma
oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oA
DAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//ZCmVuZHN0cmVhbQplbmRvYmoKNTEK
MApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0aAo0NAovSGVpZ2h0CjM1NwovQ29sb3JTcGFj
ZQovRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVudAo4Ci9MZW5ndGgKNTcKMApSCi9GaWx0ZXIK
L0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2baVMiyxKGjzMiiuz7vjaILbLvq6yy7yIgIKDj//8J
N7O6gRaYmfPlxo240fXVJ9I3M6uyK4nKf/7hF7/+N+vi4uLfcrv1d/LHbv2FJuRPshj6z+jPn5fM
Qvz3MKBACgRXuASCyz/AiF5eXl0Jr3EJrwRg+3cwogIgb0S4boAm8Hn0B6BAisUSiUR8K7pB+MdZ
GM0CeiuRyuRyuUwquUX4rGGCCm/EUrlCqVKplAoZwoKzMLAC4c2tVK5Ua7U6rVatlEtur88aRrVX
1yKJXKXVG4wmo0GvUcklIoBPQ8GYFQNqMFmsNqvFpNcqZeKbK8Gp4Qs0eytVagxmm8PpcjpsZr1G
Ib0lhk89Q7NqvdnucnvuPG4nwGo5GD5RjBLQrNZkc3nu6Qf63uOyGbVKqej6RARKQLMGq/OOfgwE
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
gWJbEU7fy/ROv2O/N3A8y7M8y7M8y7M8y7M8y7M8y7M8y7M8y7M8y7M8y7M8y7M8y7M8y7M8y7M8
y7M8y7M8y7M8+99jk/nyM7DP5XzyD6wC2RCyjWYD2RCyinOsWEGmCRL7OYlEiHaZdceDHSyrNTvp
YDxbrD7Xn6vFbDxIc4cDvrFy8oo9limUa7VauZDBZ1cmrfwMy04/PEZT+WKlUinmU/ig+Wj8gmHJ
Y36jzeMLJTL5YqmYzyRC+AKbfWnPZXfjDxTOoWRy+VwG51BOR0BgsQMFWnyCFowmUulUIhrEx2da
dqDigP5z8ZM4p8HH1r5gJBaLRYI+r8tqZB7w/7zgsj/I03+VzmynvD5/MBj0+7yUHd+An0wQsa+/
5GoDwHdkJugOUINaLjkamyEsigDFBrPNSbk9bsppMxtA7emwEZnjEuJDOI3eZLHa7XYceNLg8zeh
4HieixnkEklkSvVujkqrVsrIINXpXBIZEBOJcT5LrdFq1GqlXComL+WOx8QumMGzaxEZEVMoFGRI
jKCns2oXuyk10S0zeyYGUngWZWFCX+Ozv5s/TsCR93hI7xYhfzMsxw72XV5yBvb+MITHDgyyY4B/
GRskM4g77F9NL/7bGUd+/f+t/wCOFY86CmVuZHN0cmVhbQplbmRvYmoKNTIKMApvYmoKOTAzCmVu
ZG9iago1MwowCm9iago8PAovU3VidHlwZQovSW1hZ2UKL1dpZHRoCjU3NAovSGVpZ2h0CjE5OAov
Q29sb3JTcGFjZQovRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVudAo4Ci9MZW5ndGgKNTgKMApS
Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2dZ1ciSxeFX2ZMIEkySM5JkogkQUFQ
EXPOOuH+/5/wVuhuaIEGBEbtPs9a9350nFl77VNVu3fV//4HAAAAAAAAAAAAAMB3Qdbhs38V4JuB
NPODAxQEjAGVzs+fP+fm5tD/QUHAyBDtYOHMIxbQf1hDjII++3cDvjoyop35hYXFJcLiwsLCPDYh
EBAwDCKeeSQduWKZoFDIl5aIgMCCAGHQ3Po5h7SjWFaq1RqNVqNRq5TKZaSgRbAgQBhGPPJllVqr
0xswet2KVqMiAgILAoRAcwuLR4m0YzBZrFabzWoxm4x6nRZ7EFgQIASynnnkPOoVg8m66nC63G6X
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
b21wb25lbnQKOAovTGVuZ3RoCjU5CjAKUgovRmlsdGVyCi9GbGF0ZURlY29kZQo+PgpzdHJlYW0K
eJztnWV/IksTxW9uBHcN7h4sBAkaPECI+0b23rvP9/8IT3XPDBIXYJbZ+r/aNyThd7bO1FSf7v7r
LwRBEARBEARBEARBEARBEGQ2rMwOvr8KQtX8e3agrDzDqLkKrH0f8mNYVfn+Xn8qVE8q5vr6xvdZ
X18nulJN+f5qfyZEUJATxBSJxGKx5FvADxCLRCAr1RTLlA8YQdc3RGKJVCqTExRfhXxYJpOCsCLQ
FMwXFV08jKCgJ6ipUKrUag1B+2noxzRqtVqlVMrlUqIpKVOUdOEwgoolMrlSrdHq9Qaj0Wj6GvBJ
o0Gv02rUKoVcSiQlxsv3F/zTgBIlFSqRKdRavdG0abHabPYvYrPZrJZNs8mg16qVRNJ1LNLFAyW6
tg6CKtU6o9lic7jcHq/X9yW8Xo/H7XLYbRaTQUcl3VjHIl04tETFUgUIarE5Pb5AMByJRL9CJBIJ
h4IBn8flsJqNIKlMAkWKii4aUBRKVK7SGi12ty8YicUTyVQ6nd7+OGmGVCqZiMei4YDPDZIatCpS
pMR2+f6KfxgrYLpQohq92e72h2OJdCabyxd2P0uhkM/nsjuZdHIrEgJJLVCkClSUB6AxAtOVKbVG
q8sX3krt5HdLlWqttvc5arVatVIu7eazmVQ8EvQ6rSY9KsoLjKJylc5s9wRjqZ1CuVZvttud7qfo
dNrtVrO+Vy3t5jLJWMjnsplRUX6gikrkav2mwxdOZAqVeqvT6w8Ohp/iYDDo97qdVr1WLmTTW2E/
KsobI0UtTn80lS3ttfYHw6Pjk9OzD3N6enJyfHQ4HPS6rXpllyjqc1lNOrVcir0uDzCuC4q6ArF0
vtLoDg5Pzi4urz7B5cXF+dnJ0XCw3yaKpmIhL3RGWqVcQt5HccKwYKYULVSbveHJ+eX1ze2Pj3J7
e3MNop4dHw72W3vlfCYR8bvRdPmDvI+KZSr9ptNPFG31Dk8vrm9/3N8/fIj7+/u7H7c3V6DosN9p
VEmJBj2OTYMWBww8QScMUqXW7PBF0/lqq390dnVzd//4+PPnz3/e4Cfl8fHxASQFRU+PDvZbtVIu
vRXyOa1GnQqeoliifLCysrq2IVVoTTZvOJmrNHug6O39I6j577sQYR8f7+9ury+hRHtt8NztONsW
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
YSMPT85tN8bl+eQ3MjcRgKTw/2bTYrGYRxdDYE/0Xb4S6BtHTIjbZhi39bod77ntxG9lJSVTRb3B
oKefkknwtIzv8sVA35TbJsFtA9RtiZxjt117wW3Hv5gchwOSyuiVW+TSLIUML+P5Nl8N9HVec1uN
msr5uttO/O6/meM2yK145G479n8BCvp1vhHoI70tEzGhi57uiTH8e2478euhStfIfyWJhNxSyOqJ
gn6R7wb6uIgJdVvLyG0l77rt5J9AZ0f0PlLRxgZeO/kdZhDoG7mt9ZNuO/1XMPc/rzO3OGOBfo2Z
BPq+7rZP/xJ6rffq6mc+h0wwq0AfFzEhbjsh52dvYGb+nL/xgvWvMqtAn+9bbvvkT+KYyzcWNLMN
9H3HbZEZMOtA3xO3RTkXzBwCfc8WPfn+jn8Q8wn0YXnyxNwCfSgnH8w10Iduu3DmHOjD8lws8w/0
oZwLZP6BPpRzkSwq0IcshEUG+pC5s+hAHzJfFh/oQ+YIP4E+ZE7wFuhD5gKfgT5k5vAc6ENmy28Q
6ENmyO8R6ENmxO8T6ENmwG8W6EO+yW8Y6EO+Dgb6BAUG+oQFBvoEBQb6BAUG+gQFBvqEBQb6BAUG
+gQFBvqEBQb6BAUG+gQFBvqEBQb6BAUG+gQFBvqEBQb6BAUG+gQFBvqEBQb6BAUG+gQFBvqEBQb6
BAUG+gQFBvqEBQb6BAUG+gQFBvoEBQb6hAUG+gQFBvoEBQb6hAUG+gQFBvoEBQb6hAUG+gQFBvoE
BQb6hAUG+gQFBvoEBQb6hAUG+gQFBvoEBQb6hAUG+gQFBvoEBQb6hAUG+gQFBvoEBQb6BAUG+oQF
BvoEBQb6BAUG+oQFBvoEBQb6hAUG+oQFqycG+gTC6F0FA33CgArKLqtgoE8AjPUk5YmBvqWHFZTq
iYE+AQCWu7q2IZLIoD7Jsgrb22Kgb2nhBFWqdUaz1eGmmQQM9C0v4Llr60RQjd5kAT2DpDwx0LfE
0BIVQ4XqzVanNwB6bpPeFgN9ywo8RaFEpXK1zmR1+UIxoidXnhjoW0aI6ZIS1RotTi8ImsmXKtAM
YaBvaaGmK5GD59o9wVhyp1Cq1Vu0PDHQt5yAomC6Cg2UqC+SgAqtNejjEwN9ywpRVCxVak02dyCW
yharUKE0loCBviWFNEbwGNWZbJ7QVjrHlmgPA31LC6coPEYZRest6HI7bQz0LStj14XGKJ3dJS8u
zWajjhGTZYXpjODlxeoKROHdpViu1mq1CsiJEZPlhCoqUWgMFgd9Hc0VdovFXZATA31LCjNhkKt0
ZpvLH44l05mdnZ1MmgyG0G2XkxWiqFSpMWza3f5QdCueSMSJnOi2ywqx3Q2JXKU1Wuwurz8YCodC
QT8ZDGGgbzlh1l6kCrXOSPaEuj0ej9vlZB6eGOhbStjlNIVaazBtWmyA1bJpQrddXpglb7GMZjoN
RpPJaCTViYG+5YUU6ToNAirVGo1Wq1GzcqLbLik0OrZOD1mQKwhyOb6qLDdU0jWyP0IikUqlEokY
3XbJYTL1ZNPLhkgk2tjg5ES3XVq4baMcq+i2yw6zdZSoSsVEOQXAygqnKv0X338OMhtQSwRBEARB
EARBEGSO/B/0UUVyCmVuZHN0cmVhbQplbmRvYmoKNTYKMApvYmoKMjE4NwplbmRvYmoKNTcKMApv
YmoKMjYyMwplbmRvYmoKNTgKMApvYmoKNDY5MAplbmRvYmoKNTkKMApvYmoKMzg4OAplbmRvYmoK
NDUKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQzCjEzCjAKUgovRm9udDYKMjUKMApSCj4+Ci9QYXR0
ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUKMjQKMApSCi9JbWFnZTgKNDgKMApSCi9JbWFn
ZTkKNDkKMApSCi9JbWFnZTEwCjUwCjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBoYTAKMTAKMApS
Ci9BbHBoYTEKMTEKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VCCi9JbWFnZUMK
L0ltYWdlSQpdCj4+CmVuZG9iago2MAowCm9iago8PAovVHlwZQovUGFnZQovUGFyZW50CjEKMApS
Ci9NZWRpYUJveApbCjAKMAo5NjAKNTQwCl0KL0NvbnRlbnRzCjYxCjAKUgovUmVzb3VyY2VzCjYy
CjAKUgovQW5ub3RzCjY0CjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQovQ1MKL0Rldmlj
ZVJHQgo+Pgo+PgplbmRvYmoKNjEKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0
aAo2MwowClIKPj4Kc3RyZWFtCnictVbLbhNLEG0prGqD7g52LBkQnX4/JDYX3YDMAhRkCRSTBeJh
CxzAvvwHn5AFv8APAEL8Fqd6MjMt2wGSmBl5pvp4uqqnzqnqWZCWivi81RreKdyfH9GCYCidQ/LK
lSdWx3iIb0fkUgxJlenzYWCis4aNOa0M+Dqjx/QWQRa0++/8/eyZoun/ZS3dbzk9l/cZvbpB+zgX
lXPNztvXhFttoo4yBzI+OONlNIhivDFRulSB8woMOnslGRtmD1gflMPa1KV0sEo+uwHfrZU2KRcd
hWilstZ1OXc5KZuNOcXE+u+M4WS8pN27795+sKThqhw0frXKptbS64yDxi1Z4xd0XfxoaPya9sbb
jRZk9F5HEzdH7WL+Jk2/Is7Y7NwJcR7E6MDEqey0kzU4r8BgVABY2OynV+DZqQtGJhdDaKkzGQ57
6rg+VILpjceIc+lb1G6Fuc9iR3wTX/D7DuuSmIqDmstthefkoKT+GpEOekcFJK42b3OQ2XOhhxQs
qthW6LxGQ+AIpTIrDxVaFf/fC/H4RmlcFpkJrLY2ayonJ2PYOAvZ2B0dPZu+9PTfuz5vp7anrGPk
JpiV555WVu2VraD5ADlv0LEdN6aTeQNydm3De1GEIT9sA6wiZMhEDys6rWPwG+TkEmasC9lmJClV
AppAx6nBcvH3dTESEyj5sFyluCyOxdei7H9wPcbvirgqboqny4YOaXy/CP0i63Hgmfvu+rK2oeuB
AuRQYps8qok6wSryjEvKG1RrRV+NXYRArZOEJm04G4vWbGJRqmA8IXdQc92PPg3dh5uNcVbbaAKb
yVhv8h+HsIEvKwFYKk+X4o2YNdyLWC+vG2qFcygOII9rYh/SeSOWsO+hHe6L990DIwx3xIOGypcB
T5gWPY0a8p0rrbpHYYeTxx42lHptjgAgPmZeFZPO9cpM06LHEGrtZw//znC2gfEevOQDeJtgmXtd
kNu9U6BtHayu+XKZ+UV8rIrgovnWWmnpQOs6qz2nfyQZrcnoVnRuLYrXUueYnadgJW8k2Cxr/Tw6
j35MkKEca+GikkHhCBvDsZraVOrSZG4j2ff69GpsqjuF6lGh+2ZDrnAQMJhUqhGLQYJT8WSj8KCC
WOzZ+Sg7/RWxbXFKT8vo1uqxqBi7mtT8AeC33Ci9TtlI9N+YMwq7NErrY4pYZ4/NK4y7Il6YwX5u
hVUb//Zddxt+sinzN2Wbo5C0N0Xiq3P67R4fmP1+z+dPebmDfgplbmRzdHJlYW0KZW5kb2JqCjYz
CjAKb2JqCjkzMAplbmRvYmoKNjQKMApvYmoKWwpdCmVuZG9iago2NgowCm9iago8PAovU3VidHlw
ZQovSW1hZ2UKL0ludGVycG9sYXRlCnRydWUKL1dpZHRoCjE1ODQKL0hlaWdodAo2OTQKL0NvbG9y
U3BhY2UKL0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawo2NwowClIKL0ZpbHRl
cgovRENURGVjb2RlCi9MZW5ndGgKNjgKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEA
AP/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicp
KikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIArYGMAMBIgACEQEDEQH/xAAfAAABBQEBAQEB
AQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEH
InEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFla
Y2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbH
yMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQID
BAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJ
IzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1
dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY
2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APlSiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAv2Oj6nqEJlsNOvLqINtLwwM6g9cZA68j86
sf8ACM69/wBATVP/AAEk/wAK7rwdqV3pHwi1u+0+XybqK+Gx9obGfJB4II6E1zn/AAsfxX/0Ff8A
yXi/+Jry44jF1ZzVGMbRdtW77J9E+56ssNhKMIOtKV5K+iVt2urXYyP+EZ17/oCap/4CSf4Uf8Iz
r3/QE1T/AMBJP8K1/wDhY/iv/oK/+S8X/wATR/wsfxX/ANBX/wAl4v8A4mr5sf8Ayw++X+RHLl/8
0/uj/mZH/CM69/0BNU/8BJP8KP8AhGde/wCgJqn/AICSf4Vr/wDCx/Ff/QV/8l4v/iaP+Fj+K/8A
oK/+S8X/AMTRzY/+WH3y/wAg5cv/AJp/dH/MyP8AhGde/wCgJqn/AICSf4Uf8Izr3/QE1T/wEk/w
rX/4WP4r/wCgr/5Lxf8AxNH/AAsfxX/0Ff8AyXi/+Jo5sf8Ayw++X+QcuX/zT+6P+Zkf8Izr3/QE
1T/wEk/wo/4RnXv+gJqn/gJJ/hWv/wALH8V/9BX/AMl4v/iaP+Fj+K/+gr/5Lxf/ABNHNj/5YffL
/IOXL/5p/dH/ADMj/hGde/6Amqf+Akn+FH/CM69/0BNU/wDAST/Ctf8A4WP4r/6Cv/kvF/8AE0f8
LH8V/wDQV/8AJeL/AOJo5sf/ACw++X+QcuX/AM0/uj/mZH/CM69/0BNU/wDAST/Cj/hGde/6Amqf
+Akn+Fa//Cx/Ff8A0Ff/ACXi/wDiaP8AhY/iv/oK/wDkvF/8TRzY/wDlh98v8g5cv/mn90f8zI/4
RnXv+gJqn/gJJ/hR/wAIzr3/AEBNU/8AAST/AArX/wCFj+K/+gr/AOS8X/xNH/Cx/Ff/AEFf/JeL
/wCJo5sf/LD75f5By5f/ADT+6P8AmZH/AAjOvf8AQE1T/wABJP8ACj/hGde/6Amqf+Akn+Fa/wDw
sfxX/wBBX/yXi/8AiaP+Fj+K/wDoK/8AkvF/8TRzY/8Alh98v8g5cv8A5p/dH/MyP+EZ17/oCap/
4CSf4Uf8Izr3/QE1T/wEk/wrX/4WP4r/AOgr/wCS8X/xNH/Cx/Ff/QV/8l4v/iaObH/yw++X+Qcu
X/zT+6P+Zkf8Izr3/QE1T/wEk/wo/wCEZ17/AKAmqf8AgJJ/hWv/AMLH8V/9BX/yXi/+Jo/4WP4r
/wCgr/5Lxf8AxNHNj/5YffL/ACDly/8Amn90f8zI/wCEZ17/AKAmqf8AgJJ/hR/wjOvf9ATVP/AS
T/Ctf/hY/iv/AKCv/kvF/wDE0f8ACx/Ff/QV/wDJeL/4mjmx/wDLD75f5By5f/NP7o/5mR/wjOvf
9ATVP/AST/Cj/hGde/6Amqf+Akn+Fa//AAsfxX/0Ff8AyXi/+Jo/4WP4r/6Cv/kvF/8AE0c2P/lh
98v8g5cv/mn90f8AMyP+EZ17/oCap/4CSf4Uf8Izr3/QE1T/AMBJP8K1/wDhY/iv/oK/+S8X/wAT
R/wsfxX/ANBX/wAl4v8A4mjmx/8ALD75f5By5f8AzT+6P+Zkf8Izr3/QE1T/AMBJP8KP+EZ17/oC
ap/4CSf4Vr/8LH8V/wDQV/8AJeL/AOJo/wCFj+K/+gr/AOS8X/xNHNj/AOWH3y/yDly/+af3R/zM
j/hGde/6Amqf+Akn+FH/AAjOvf8AQE1T/wABJP8ACtf/AIWP4r/6Cv8A5Lxf/E0f8LH8V/8AQV/8
l4v/AImjmx/8sPvl/kHLl/8ANP7o/wCZkf8ACM69/wBATVP/AAEk/wAKP+EZ17/oCap/4CSf4Vr/
APCx/Ff/AEFf/JeL/wCJo/4WP4r/AOgr/wCS8X/xNHNj/wCWH3y/yDly/wDmn90f8zI/4RnXv+gJ
qn/gJJ/hR/wjOvf9ATVP/AST/Ctf/hY/iv8A6Cv/AJLxf/E0f8LH8V/9BX/yXi/+Jo5sf/LD75f5
By5f/NP7o/5mR/wjOvf9ATVP/AST/Cj/AIRnXv8AoCap/wCAkn+Fa/8AwsfxX/0Ff/JeL/4mj/hY
/iv/AKCv/kvF/wDE0c2P/lh98v8AIOXL/wCaf3R/zMj/AIRnXv8AoCap/wCAkn+FH/CM69/0BNU/
8BJP8K1/+Fj+K/8AoK/+S8X/AMTR/wALH8V/9BX/AMl4v/iaObH/AMsPvl/kHLl/80/uj/mZH/CM
69/0BNU/8BJP8KP+EZ17/oCap/4CSf4Vr/8ACx/Ff/QV/wDJeL/4mj/hY/iv/oK/+S8X/wATRzY/
+WH3y/yDly/+af3R/wAzI/4RnXv+gJqn/gJJ/hR/wjOvf9ATVP8AwEk/wrX/AOFj+K/+gr/5Lxf/
ABNH/Cx/Ff8A0Ff/ACXi/wDiaObH/wAsPvl/kHLl/wDNP7o/5mR/wjOvf9ATVP8AwEk/wo/4RnXv
+gJqn/gJJ/hWv/wsfxX/ANBX/wAl4v8A4mj/AIWP4r/6Cv8A5Lxf/E0c2P8A5YffL/IOXL/5p/dH
/MyP+EZ17/oCap/4CSf4Uf8ACM69/wBATVP/AAEk/wAK1/8AhY/iv/oK/wDkvF/8TR/wsfxX/wBB
X/yXi/8AiaObH/yw++X+QcuX/wA0/uj/AJmR/wAIzr3/AEBNU/8AAST/AAo/4RnXv+gJqn/gJJ/h
Wv8A8LH8V/8AQV/8l4v/AImj/hY/iv8A6Cv/AJLxf/E0c2P/AJYffL/IOXL/AOaf3R/zMj/hGde/
6Amqf+Akn+FH/CM69/0BNU/8BJP8K1/+Fj+K/wDoK/8AkvF/8TR/wsfxX/0Ff/JeL/4mjmx/8sPv
l/kHLl/80/uj/mZH/CM69/0BNU/8BJP8KP8AhGde/wCgJqn/AICSf4Vr/wDCx/Ff/QV/8l4v/iaP
+Fj+K/8AoK/+S8X/AMTRzY/+WH3y/wAg5cv/AJp/dH/MyP8AhGde/wCgJqn/AICSf4Uf8Izr3/QE
1T/wEk/wrX/4WP4r/wCgr/5Lxf8AxNH/AAsfxX/0Ff8AyXi/+Jo5sf8Ayw++X+QcuX/zT+6P+Zkf
8Izr3/QE1T/wEk/wo/4RnXv+gJqn/gJJ/hWv/wALH8V/9BX/AMl4v/iaP+Fj+K/+gr/5Lxf/ABNH
Nj/5YffL/IOXL/5p/dH/ADMj/hGde/6Amqf+Akn+FH/CM69/0BNU/wDAST/Ctf8A4WP4r/6Cv/kv
F/8AE0f8LH8V/wDQV/8AJeL/AOJo5sf/ACw++X+QcuX/AM0/uj/mZH/CM69/0BNU/wDAST/Cj/hG
de/6Amqf+Akn+Fa//Cx/Ff8A0Ff/ACXi/wDiaP8AhY/iv/oK/wDkvF/8TRzY/wDlh98v8g5cv/mn
90f8zI/4RnXv+gJqn/gJJ/hR/wAIzr3/AEBNU/8AAST/AArX/wCFj+K/+gr/AOS8X/xNH/Cx/Ff/
AEFf/JeL/wCJo5sf/LD75f5By5f/ADT+6P8AmZH/AAjOvf8AQE1T/wABJP8ACj/hGde/6Amqf+Ak
n+Fa/wDwsfxX/wBBX/yXi/8AiaP+Fj+K/wDoK/8AkvF/8TRzY/8Alh98v8g5cv8A5p/dH/MyP+EZ
17/oCap/4CSf4Uf8Izr3/QE1T/wEk/wrX/4WP4r/AOgr/wCS8X/xNH/Cx/Ff/QV/8l4v/iaObH/y
w++X+QcuX/zT+6P+Zkf8Izr3/QE1T/wEk/wo/wCEZ17/AKAmqf8AgJJ/hWv/AMLH8V/9BX/yXi/+
Jo/4WP4r/wCgr/5Lxf8AxNHNj/5YffL/ACDly/8Amn90f8zI/wCEZ17/AKAmqf8AgJJ/hR/wjOvf
9ATVP/AST/Ctf/hY/iv/AKCv/kvF/wDE0f8ACx/Ff/QV/wDJeL/4mjmx/wDLD75f5By5f/NP7o/5
mR/wjOvf9ATVP/AST/Cj/hGde/6Amqf+Akn+Fa//AAsfxX/0Ff8AyXi/+Jo/4WP4r/6Cv/kvF/8A
E0c2P/lh98v8g5cv/mn90f8AMyP+EZ17/oCap/4CSf4Uf8Izr3/QE1T/AMBJP8K1/wDhY/iv/oK/
+S8X/wATR/wsfxX/ANBX/wAl4v8A4mjmx/8ALD75f5By5f8AzT+6P+Zkf8Izr3/QE1T/AMBJP8KP
+EZ17/oCap/4CSf4Vr/8LH8V/wDQV/8AJeL/AOJo/wCFj+K/+gr/AOS8X/xNHNj/AOWH3y/yDly/
+af3R/zMj/hGde/6Amqf+Akn+FH/AAjOvf8AQE1T/wABJP8ACtf/AIWP4r/6Cv8A5Lxf/E0f8LH8
V/8AQV/8l4v/AImjmx/8sPvl/kHLl/8ANP7o/wCZkf8ACM69/wBATVP/AAEk/wAKP+EZ17/oCap/
4CSf4Vr/APCx/Ff/AEFf/JeL/wCJo/4WP4r/AOgr/wCS8X/xNHNj/wCWH3y/yDly/wDmn90f8zI/
4RnXv+gJqn/gJJ/hR/wjOvf9ATVP/AST/Ctf/hY/iv8A6Cv/AJLxf/E0f8LH8V/9BX/yXi/+Jo5s
f/LD75f5By5f/NP7o/5mR/wjOvf9ATVP/AST/Cj/AIRnXv8AoCap/wCAkn+Fa/8AwsfxX/0Ff/Je
L/4mj/hY/iv/AKCv/kvF/wDE0c2P/lh98v8AIOXL/wCaf3R/zMj/AIRnXv8AoCap/wCAkn+FH/CM
69/0BNU/8BJP8K1/+Fj+K/8AoK/+S8X/AMTR/wALH8V/9BX/AMl4v/iaObH/AMsPvl/kHLl/80/u
j/mZH/CM69/0BNU/8BJP8KP+EZ17/oCap/4CSf4Vr/8ACx/Ff/QV/wDJeL/4mj/hY/iv/oK/+S8X
/wATRzY/+WH3y/yDly/+af3R/wAzI/4RnXv+gJqn/gJJ/hR/wjOvf9ATVP8AwEk/wrX/AOFj+K/+
gr/5Lxf/ABNH/Cx/Ff8A0Ff/ACXi/wDiaObH/wAsPvl/kHLl/wDNP7o/5mR/wjOvf9ATVP8AwEk/
wo/4RnXv+gJqn/gJJ/hWv/wsfxX/ANBX/wAl4v8A4mj/AIWP4r/6Cv8A5Lxf/E0c2P8A5YffL/IO
XL/5p/dH/MyP+EZ17/oCap/4CSf4VnXdrcWdw8F5BLBOmN0cqFWXIyMg89CK7rw34+8S3niLS7W5
1LfBPdRRyL5EQ3KzgEZC56Gs34s/8lA1X/tl/wCikoo4jEfWPYV0tm9G+6XVLuFfDYf6v7eg5P3k
tUlum+jfY5GiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA9F0T/kiXiD/AK/l/wDQ
oK86r0XRP+SJeIP+v5f/AEKCvOq87AfFW/xv8onpZh8ND/AvzkFFFFeieaFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAa/g/8A
5G3RP+v6D/0Yta/xZ/5KBqv/AGy/9FJWR4P/AORt0T/r+g/9GLWv8Wf+Sgar/wBsv/RSV50v9/j/
AIH/AOlI9KP/ACL5f41/6SzkaKKK9E80KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD0XRP+
SJeIP+v5f/QoK86r0XRP+SJeIP8Ar+X/ANCgrzqvOwHxVv8AG/yielmHw0P8C/OQUUUV6J5oUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQBr+D/APkbdE/6/oP/AEYta/xZ/wCSgar/ANsv/RSVkeD/APkbdE/6/oP/AEYta/xZ/wCS
gar/ANsv/RSV50v9/j/gf/pSPSj/AMi+X+Nf+ks5GiiivRPNCiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooA9F0T/AJIl4g/6/l/9CgrzqvRdE/5Il4g/6/l/9CgrzqvOwHxVv8b/ACielmHw0P8A
AvzkFFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAa/g//kbdE/6/oP8A0Yta/wAWf+Sgar/2y/8ARSVkeD/+Rt0T/r+g
/wDRi1r/ABZ/5KBqv/bL/wBFJXnS/wB/j/gf/pSPSj/yL5f41/6SzkaKKK9E80KKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigD0XRP+SJeIP+v5f/AEKCvOq9F0T/AJIl4g/6/l/9CgrzqvOwHxVv
8b/KJ6WYfDQ/wL85BRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
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
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBr+D/APkbdE/6/oP/AEYta/xZ
/wCSgar/ANsv/RSVkeD/APkbdE/6/oP/AEYta/xZ/wCSgar/ANsv/RSV50v9/j/gf/pSPSj/AMi+
X+Nf+ks5GiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvYf2Xv+R/1D/sGSf+jYq8er
2H9l7/kf9Q/7Bkn/AKNiryM//wCRdW9DqwX8ePqePUUUV65yhRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQB7B8bP+RA+GH/YMP/oq3rx+vYPjZ/yIHww/7Bh/9FW9eP15GRf7lH1n/wClyOrG
fxX6L8kFFFFeucoUUUUAFFFFABRRRQB6Lon/ACRLxB/1/L/6FBXnVei6J/yRLxB/1/L/AOhQV51X
nYD4q3+N/lE9LMPhof4F+cgooor0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDX8H/8jbon/X9B/wCjFrX+LP8AyUDVf+2X
/opKyPB//I26J/1/Qf8Aoxa1/iz/AMlA1X/tl/6KSvOl/v8AH/A//SkelH/kXy/xr/0lnI0UUV6J
5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV7D+y9/wAj/qH/AGDJP/RsVePV7D+y9/yP+of9
gyT/ANGxV5Gf/wDIureh04L+PH1PHqKKK9c5gooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oA9g+Nn/ACIHww/7Bh/9FW9eP17B8bP+RA+GH/YMP/oq3rx+vIyL/co+s/8A0uR1Yz+K/Rfkgooo
r1zlCiiigAooooAKKKKAPRdE/wCSJeIP+v5f/QoK86r0XRP+SJeIP+v5f/QoK86rzsB8Vb/G/wAo
npZh8ND/AAL85BRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGv4P/5G3RP+v6D/ANGLWv8AFn/koGq/9sv/AEUlZHg/
/kbdE/6/oP8A0Yta/wAWf+Sgar/2y/8ARSV50v8Af4/4H/6Uj0o/8i+X+Nf+ks5GiiivRPNCiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACvYf2Xv8Akf8AUP8AsGSf+jYq8er2H9l7/kf9Q/7Bkn/o
2KvIz/8A5F1b0OrBfx4+p49RRRXrnKFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHsHxs
/wCRA+GH/YMP/oq3rx+vYPjZ/wAiB8MP+wYf/RVvXj9eRkX+5R9Z/wDpcjqxn8V+i/JBRRRXrnKF
FFFABRRRQAUUUUAei6J/yRLxB/1/L/6FBXnVei6J/wAkS8Qf9fy/+hQV51XnYD4q3+N/lE9LMPho
f4F+cgooor0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigDX8H/8AI26J/wBf0H/oxa1/iz/yUDVf+2X/AKKSsjwf/wAjbon/
AF/Qf+jFrX+LP/JQNV/7Zf8AopK86X+/x/wP/wBKR6Uf+RfL/Gv/AElnI0UUV6J5oUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAV7D+y9/yP8AqH/YMk/9GxV49XsP7L3/ACP+of8AYMk/9GxV5Gf/
APIureh1YL+PH1PHqKKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA9g+Nn/IgfDD
/sGH/wBFW9eP17B8bP8AkQPhh/2DD/6Kt68fryMi/wByj6z/APS5HVjP4r9F+SCiiivXOUKKKKAC
iiigAooooA9F0T/kiXiD/r+X/wBCgrzqvRdE/wCSJeIP+v5f/QoK86rzsB8Vb/G/yielmHw0P8C/
OQUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQBr+D/8AkbdE/wCv6D/0Yta/xZ/5KBqv/bL/ANFJWR4P/wCRt0T/AK/o
P/Ri1r/Fn/koGq/9sv8A0UledL/f4/4H/wClI9KP/Ivl/jX/AKSzkaKKK9E80KKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAK9h/Ze/5H/UP+wZJ/6Nirx6vYf2Xv8Akf8AUP8AsGSf+jYq8jP/APkX
VvQ6sF/Hj6nj1FFFeucoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAewfGz/kQPhh/wBg
w/8Aoq3rx+vYPjZ/yIHww/7Bh/8ARVvXj9eRkX+5R9Z/+lyOrGfxX6L8kFFFFeucoUUUUAFFFFAB
RRRQB6Lon/JEvEH/AF/L/wChQV51Xouif8kS8Qf9fy/+hQV51XnYD4q3+N/lE9LMPhof4F+cgooo
r0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigDX8H/wDI26J/1/Qf+jFrX+LP/JQNV/7Zf+ikrI8H/wDI26J/1/Qf+jFrX+LP
/JQNV/7Zf+ikrzpf7/H/AAP/ANKR6Uf+RfL/ABr/ANJZyNFFFeieaFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFew/svf8j/qH/YMk/8ARsVePV7D+y9/yP8AqH/YMk/9GxV5Gf8A/Iureh1YL+PH
1PHqKKK9c5QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA9g+Nn/IgfDD/ALBh/wDRVvXj
9ewfGz/kQPhh/wBgw/8Aoq3rx+vIyL/co+s//S5HVjP4r9F+SCiiivXOUKKKKACiiigAooooA9F0
T/kiXiD/AK/l/wDQoK86r0XRP+SJeIP+v5f/AEKCvOq87AfFW/xv8onpZh8ND/AvzkFFFFeieaFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAa/g/8A5G3RP+v6D/0Yta/xZ/5KBqv/AGy/9FJWR4P/AORt0T/r+g/9GLWv8Wf+Sgar
/wBsv/RSV50v9/j/AIH/AOlI9KP/ACL5f41/6SzkaKKK9E80KKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAK9T/AGeNSh0fxTrWoXSSvBb6RLI6xJucgSxdB3ryyvYf2Xv+R/1D/sGSf+jYq8nPGll9
VyV1Y6cHf20bHj1FFFescwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAep/FbUodT+Hnw
5e3WVRBaS2zeYm3LIkCkj1GRwa8sr2D42f8AIgfDD/sGH/0Vb14/Xk5I08GnFWV5/wDpcjpxd/au
/Zfkgooor1jmCiiigAooooAKKKKAPRdE/wCSJeIP+v5f/QoK86r0XRP+SJeIP+v5f/QoK86rzsB8
Vb/G/wAonpZh8ND/AAL85BRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGv4P/5G3RP+v6D/ANGLWv8AFn/koGq/9sv/
AEUlZHg//kbdE/6/oP8A0Yta/wAWf+Sgar/2y/8ARSV50v8Af4/4H/6Uj0o/8i+X+Nf+ks5Giiiv
RPNCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvYf2Xv8Akf8AUP8AsGSf+jYq8er2H9l7/kf9
Q/7Bkn/o2KvIz/8A5F1b0OnBfx4+p49RRRXrnMFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFAHsHxs/wCRA+GH/YMP/oq3rx+vYPjZ/wAiB8MP+wYf/RVvXj9eRkX+5R9Z/wDpcjqxn8V+i/JB
RRRXrnKFFFFABRRRQAUUUUAei6J/yRLxB/1/L/6FBXnVei6J/wAkS8Qf9fy/+hQV51XnYD4q3+N/
lE9LMPhof4F+cgooor0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigDX8H/8AI26J/wBf0H/oxa1/iz/yUDVf+2X/AKKSsjwf
/wAjbon/AF/Qf+jFrX+LP/JQNV/7Zf8AopK86X+/x/wP/wBKR6Uf+RfL/Gv/AElnI0UUV6J5oUUU
UAFFFFABXUeG/C0Or6RNqFzqcdjFFKYmMiAr0U5LFhj72K5eu10r/kles/8AX2v84q6cNGMpPnV0
k39xw4+pUhCPs5WblFX0e7t1D/hD9I/6GvT/APxz/wCOUf8ACH6R/wBDXp//AI5/8criqKftqX/P
tfe/8yfquJ/5/v8A8Bj/AJHa/wDCH6R/0Nen/wDjn/xyj/hD9I/6GvT/APxz/wCOVxVFHtqX/Ptf
e/8AMPquJ/5/v/wGP+R2v/CH6R/0Nen/APjn/wAco/4Q/SP+hr0//wAc/wDjlcVRR7al/wA+197/
AMw+q4n/AJ/v/wABj/kdr/wh+kf9DXp//jn/AMco/wCEP0j/AKGvT/8Axz/45XFUUe2pf8+197/z
D6rif+f7/wDAY/5Ha/8ACH6R/wBDXp//AI5/8co/4Q/SP+hr0/8A8c/+OVxVFHtqX/Ptfe/8w+q4
n/n+/wDwGP8Akdr/AMIfpH/Q16f/AOOf/HKP+EP0j/oa9P8A/HP/AI5XFUUe2pf8+197/wAw+q4n
/n+//AY/5Ha/8IfpH/Q16f8A+Of/AByj/hD9I/6GvT//ABz/AOOVxVFHtqX/AD7X3v8AzD6rif8A
n+//AAGP+R2v/CH6R/0Nen/+Of8Axyj/AIQ/SP8Aoa9P/wDHP/jlcVRR7al/z7X3v/MPquJ/5/v/
AMBj/kdr/wAIfpH/AENen/8Ajn/xyj/hD9I/6GvT/wDxz/45XFUUe2pf8+197/zD6rif+f7/APAY
/wCR2v8Awh+kf9DXp/8A45/8co/4Q/SP+hr0/wD8c/8AjlcVRR7al/z7X3v/ADD6rif+f7/8Bj/k
dr/wh+kf9DXp/wD45/8AHKP+EP0j/oa9P/8AHP8A45XFUUe2pf8APtfe/wDMPquJ/wCf7/8AAY/5
Ha/8IfpH/Q16f/45/wDHKP8AhD9I/wChr0//AMc/+OVxVFHtqX/Ptfe/8w+q4n/n+/8AwGP+R2v/
AAh+kf8AQ16f/wCOf/HKP+EP0j/oa9P/APHP/jlcVRR7al/z7X3v/MPquJ/5/v8A8Bj/AJHa/wDC
H6R/0Nen/wDjn/xyj/hD9I/6GvT/APxz/wCOVxVFHtqX/Ptfe/8AMPquJ/5/v/wGP+R2v/CH6R/0
Nen/APjn/wAcqHV/CFvZ6Fc6naazDfRwlVIiQEElgMbgxx94GuQrtdK/5JZrP/X2v84q0pulV5ly
Wsm930RhXjicO4SdZtOUVa0dm/Q4qiiiuE9cKKKKACiiigAr2H9l7/kf9Q/7Bkn/AKNirx6vYf2X
v+R/1D/sGSf+jYq8jP8A/kXVvQ6cH/Hj6nj1FFFeucwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAewfGz/kQPhh/2DD/AOirevH69g+Nn/IgfDD/ALBh/wDRVvXj9eRkX+5R9Z/+lyOrGfxX
6L8kFFFFeucoUUUUAFFFFABRRRQB6Lon/JEvEH/X8v8A6FBXnVei6J/yRLxB/wBfy/8AoUFedV52
A+Kt/jf5RPSzD4aH+BfnIKKKK9E80KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooA1/B/wDyNuif9f0H/oxa1/iz/wAlA1X/ALZf
+ikrI8H/API26J/1/Qf+jFrX+LP/ACUDVf8Atl/6KSvOl/v8f8D/APSkelH/AJF8v8a/9JZyNFFF
eieaFFFFABRRRQAV2ulf8ks1n/r7X+cVcVXa6V/ySzWf+vtf5xV1YXeX+F/kefmPw0/8cfzOKooo
rlPQCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArt
dK/5JZrP/X2v84q4qu10r/klms/9fa/zirqwu8v8L/I8/Mfhp/44/mcVRRRXKegFFFFABRRRQAV7
D+y9/wAj/qH/AGDJP/RsVePV7D+y9/yP+of9gyT/ANGxV5Gf/wDIureh1YL+PH1PHqKKK9c5Qooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooA9g+Nn/ACIHww/7Bh/9FW9eP17B8bP+RA+GH/YM
P/oq3rx+vIyL/co+s/8A0uR1Yz+K/Rfkgooor1zlCiiigAooooAKKKKAPRdE/wCSJeIP+v5f/QoK
86r0XRP+SJeIP+v5f/QoK86rzsB8Vb/G/wAonpZh8ND/AAL85BRRRXonmhRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGv4P/5G
3RP+v6D/ANGLWv8AFn/koGq/9sv/AEUlZHg//kbdE/6/oP8A0Yta/wAWf+Sgar/2y/8ARSV50v8A
f4/4H/6Uj0o/8i+X+Nf+ks5GiiivRPNCiiigAooooAK7XSv+SWaz/wBfa/ziriq7XSv+SWaz/wBf
a/zirqwu8v8AC/yPPzH4af8Ajj+ZxVFFFcp6AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFdrpX/ACSzWf8Ar7X+cVcVXa6V/wAks1n/AK+1/nFXVhd5
f4X+R5+Y/DT/AMcfzOKooorlPQCiiigAooooAK9h/Ze/5H/UP+wZJ/6Nirx6vYf2Xv8Akf8AUP8A
sGSf+jYq8jP/APkXVvQ6cF/Hj6nj1FFFeucwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AewfGz/kQPhh/wBgw/8Aoq3rx+vYPjZ/yIHww/7Bh/8ARVvXj9eRkX+5R9Z/+lyOrGfxX6L8kFFF
FeucoUUUUAFFFFABRRRQB6Lon/JEvEH/AF/L/wChQV51Xouif8kS8Qf9fy/+hQV51XnYD4q3+N/l
E9LMPhof4F+cgooor0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigDX8H/wDI26J/1/Qf+jFrX+LP/JQNV/7Zf+ikrI8H/wDI
26J/1/Qf+jFrX+LP/JQNV/7Zf+ikrzpf7/H/AAP/ANKR6Uf+RfL/ABr/ANJZyNFFFeieaFFFFABR
RRQAV2ulf8ks1n/r7X+cVcVXa6V/ySzWf+vtf5xV1YXeX+F/kefmPw0/8cfzOKooorlPQCiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArtdK/5JZrP/X2
v84q4qu10r/klms/9fa/zirqwu8v8L/I8/Mfhp/44/mcVRRRXKegFFFFABRRRQAV7D+y9/yP+of9
gyT/ANGxV49XsP7L3/I/6h/2DJP/AEbFXkZ//wAi6t6HTg/48fU8eooor1zmCiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigD2D42f8iB8MP+wYf/RVvXj9ewfGz/kQPhh/2DD/AOirevH68jIv
9yj6z/8AS5HVjP4r9F+SCiiivXOUKKKKACiiigAooooA9F0T/kiXiD/r+X/0KCvOq9F0T/kiXiD/
AK/l/wDQoK86rzsB8Vb/ABv8onpZh8ND/AvzkFFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAa/g/wD5G3RP+v6D/wBG
LWv8Wf8AkoGq/wDbL/0UlZHg/wD5G3RP+v6D/wBGLWv8Wf8AkoGq/wDbL/0UledL/f4/4H/6Uj0o
/wDIvl/jX/pLORooor0TzQooooAKKKKACu10r/klms/9fa/ziriq7XSv+SWaz/19r/OKurC7y/wv
8jz8x+Gn/jj+ZxVFFFcp6AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFdrpX/JLNZ/6+1/nFXFV2ulf8ks1n/r7X+cVdWF3l/hf5Hn5j8NP/ABx/M4qi
iiuU9AKKKKACiiigAr2H9l7/AJH/AFD/ALBkn/o2KvHq9h/Ze/5H/UP+wZJ/6NiryM//AORdW9Dq
wX8ePqePUUUV65yhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB7B8bP8AkQPhh/2DD/6K
t68fr2D42f8AIgfDD/sGH/0Vb14/XkZF/uUfWf8A6XI6sZ/FfovyQUUUV65yhRRRQAUUUUAFFFFA
Houif8kS8Qf9fy/+hQV51Xouif8AJEvEH/X8v/oUFedV52A+Kt/jf5RPSzD4aH+BfnIKKKK9E80K
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooA1/B//ACNuif8AX9B/6MWtf4s/8lA1X/tl/wCikrI8H/8AI26J/wBf0H/oxa1/iz/y
UDVf+2X/AKKSvOl/v8f8D/8ASkelH/kXy/xr/wBJZyNFFFeieaFFFFABRRRQAV2ulf8AJLNZ/wCv
tf5xVxVdrpX/ACSzWf8Ar7X+cVdWF3l/hf5Hn5j8NP8Axx/M4qiiiuU9AKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACu10r/AJJZrP8A19r/ADiriq7X
Sv8Aklms/wDX2v8AOKurC7y/wv8AI8/Mfhp/44/mcVRRRXKegFFFFABRRRQAV7B+y9/yP+of9gyT
/wBGxV4/XsH7L3/I/wCof9gyT/0bFXkZ9/yLq3odWC/jx9Tx+iiivXOUKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKAPYPjZ/yIHww/wCwYf8A0Vb14/XsHxs/5ED4Yf8AYMP/AKKt68fryMi/
3KPrP/0uR1Yz+K/Rfkgooor1zlCiiigAooooAKKKKAPRdE/5Il4g/wCv5f8A0KCvOq9F0T/kiXiD
/r+X/wBCgrzqvOwHxVv8b/KJ6WYfDQ/wL85BRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGv4P/AORt0T/r+g/9GLWv
8Wf+Sgar/wBsv/RSVkeD/wDkbdE/6/oP/Ri1r/Fn/koGq/8AbL/0UledL/f4/wCB/wDpSPSj/wAi
+X+Nf+ks5GiiivRPNCiiigAooooAK7XSv+SV6z/19r/OKuKrtdK/5JXrP/X2v84q6sLvL/C/yPPz
H4af+OP5nFUUUVynoBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAV2ulf8ks1n/r7X+cVcVXa6V/ySzWf+vtf5xV1YXeX+F/kefmPw0/8cfzOKooorlPQ
CiiigAooooAK9g/Ze/5H/UP+wZJ/6Nirx+vYP2Xv+R/1D/sGSf8Ao2KvIz7/AJF1b0OrBfx4+p4/
RRRXrnKFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHsHxs/5ED4Yf9gw/+irevH69g+Nn
/IgfDD/sGH/0Vb14/XkZF/uUfWf/AKXI6sZ/FfovyQUUUV65yhRRRQAUUUUAFFFFAHouif8AJEvE
H/X8v/oUFedV6Lon/JEvEH/X8v8A6FBXnVedgPirf43+UT0sw+Gh/gX5yCiiivRPNCiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ANfwf/yNuif9f0H/AKMWtf4s/wDJQNV/7Zf+ikrI8H/8jbon/X9B/wCjFrX+LP8AyUDVf+2X/opK
86X+/wAf8D/9KR6Uf+RfL/Gv/SWcjRRRXonmhRRRQAUUUUAFdrpX/JK9Z/6+1/nFXFV2ulf8kr1n
/r7X+cVdWF3l/hf5Hn5j8NP/ABx/M4qiiiuU9AKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACu10r/klms/8AX2v84q4qu10r/klms/8AX2v84q6sLvL/
AAv8jz8x+Gn/AI4/mcVRRRXKegFFFFABRRRQAV7B+y9/yP8AqH/YMk/9GxV4/XsH7L3/ACP+of8A
YMk/9GxV5Gff8i6t6HVgv48fU8fooor1zlCiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD
2D42f8iB8MP+wYf/AEVb14/XsHxs/wCRA+GH/YMP/oq3rx+vIyL/AHKPrP8A9LkdWM/iv0X5IKKK
K9c5QooooAKKKKACiiigD0XRP+SJeIP+v5f/AEKCvOq9F0T/AJIl4g/6/l/9CgrzqvOwHxVv8b/K
J6WYfDQ/wL85BRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGv4P/wCRt0T/AK/oP/Ri1r/Fn/koGq/9sv8A0UlZHg//
AJG3RP8Ar+g/9GLWv8Wf+Sgar/2y/wDRSV50v9/j/gf/AKUj0o/8i+X+Nf8ApLORooor0TzQoooo
AKKKKACu10r/AJJZrP8A19r/ADiriq7XSv8Aklms/wDX2v8AOKurC7y/wv8AI8/Mfhp/44/mcVRR
RXKegFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABX
a6V/ySzWf+vtf5xVxVdrpX/JLNZ/6+1/nFXVhd5f4X+R5+Y/DT/xx/M4qiiiuU9AKKKKACiiigAr
2D9l7/kf9Q/7Bkn/AKNirx+vYP2Xv+R/1D/sGSf+jYq8jPv+RdW9DqwX8ePqeP0UUV65yhRRRQAU
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
/wDAuD/4uj+1MD/z/h/4HH/MPq9b+R/czz2ivQv+FN+O/wDoBj/wLg/+Lo/4U347/wCgGP8AwLg/
+Lo/tTA/8/4f+Bx/zD6vW/kf3M89r2D9l7/kf9Q/7Bkn/o2KsH/hTfjv/oBj/wAC4P8A4uu8+DXg
vxX4J8T3Wpar4euZoJbNrdVtrm2ZtxdGyd0oGMKe/pXmZzjsLXwNWnTrQcmtFzx/zOjC0akK0ZSi
7ejPAaK9C/4U347/AOgGP/AuD/4uj/hTfjv/AKAY/wDAuD/4uvT/ALUwP/P+H/gcf8zn+r1v5H9z
OauPDN/F4VtPECRmTTppGhZ1/wCWbqejfUdD9awq+vvhR4SudO+HB0LxTYIrSySebbu6uCrEY5Uk
frkV8/fFj4f3XgnWCYw82kXDE20+On+w3ow/UcjuBw5fntHGYqphbrmi3ytbSXl5r8Vr3N6+DlSp
xqdHv5M4KiiivcOIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD2D42f8iB8MP8AsGH/ANFW9eP17B8b
P+RA+GH/AGDD/wCirevH68jIv9yj6z/9LkdWM/iv0X5IKKKK9c5QooooAKKKKACiiigD0XRP+SJe
IP8Ar+X/ANCgrzqvRdE/5Il4g/6/l/8AQoK86rzsB8Vb/G/yielmHw0P8C/OQUUUV6J5oUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB7t8F7bSE0B57BvM1FjtumcYdPRQOy98
9/wwPRK+XPDGvXfh3VY72ybkcOh+7IvdTX0Z4d1+z8QaQt/YPkYw8Z+9G2OVNfCZ5gKtGs67d4y6
9vL/ACPvshzClWoqglyyj07+f+Zr0V4U3xb14MR9m07g/wDPN/8A4qj/AIW5r3/Ptpv/AH7f/wCL
qf8AV7Gdl95f+seC7v7j3WivCv8Ahbmvf8+2m/8Aft//AIuj/hbmvf8APtpv/ft//i6P9XsZ2X3h
/rHgu7+491orwr/hbmvf8+um/wDft/8A4uj/AIW5r3/Prpv/AH7f/wCLo/1exnZfeH+seC7v7j3W
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
/wDQP0T/AL8y/wDxyj/hoLxT/wBA/RP+/Mv/AMcqP9UMx/u/f/wDT+06HmfUFFfL/wDw0F4p/wCg
fon/AH5l/wDjlH/DQXin/oH6J/35l/8AjlH+qGY/3fv/AOAH9p0PM+oKK+X/APhoLxT/ANA/RP8A
vzL/APHKP+GgvFP/AED9E/78y/8Axyj/AFQzH+79/wDwA/tOh5n1BRXy/wD8NBeKf+gfon/fmX/4
5XYfC74m+KfHWv3GmY0Sw8q1a58z7HLLnDou3HnL/fznPascRwvjcNTdWq4qK31/yRcMwpVJKMb3
Z7hRXy//AMNBeKf+gfon/fmX/wCOUf8ADQXin/oH6J/35l/+OVt/qhmP937/APgEf2nQ8z6grH8X
WWk3/h2+g8QiP+zPLLStIcbAP4gexHasP4W+LLnxT4KGtawtpbOJJA5iBSNVXudxOOOpzXgvxp+J
cviu/bTNJkaPQ7duMcG4Yfxn29B+J54GOV5Fia+OdG/L7N+9JdLdvPt95eIxdOFLn35tkebaqlrH
qVymnyvLaLIwid12sy54JGTg4qpRRX60fNBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAewfGz/kQPhh
/wBgw/8Aoq3rx+vYPjZ/yIHww/7Bh/8ARVvXj9eRkX+5R9Z/+lyOrGfxX6L8kFFFFeucoUUUUAFF
FFABRRRQB6Lon/JEvEH/AF/L/wChQV51Xouif8kS8Qf9fy/+hQV51XnYD4q3+N/lE9LMPhof4F+c
gooor0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArd8IeI7rw1qYubY
loXGyeEniRf8R2P/ANesKioq041YOE1dM0pVZ0pqpB2aJLiMxXEsbFSyMVJRgwyD2IyCPccVHRRV
IzYUUUUwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKANfwf/wAjbon/AF/Qf+jFrX+LP/JQNV/7Zf8AopKyPB//ACNu
if8AX9B/6MWtf4s/8lA1X/tl/wCikrzpf7/H/A//AEpHpR/5F8v8a/8ASWcjRRRXonmhRRRQAUUU
UAFdrpX/ACSzWf8Ar7X+cVcVXa6V/wAks1n/AK+1/nFXVhd5f4X+R5+Y/DT/AMcfzOKooorlPQCi
iigAooooA3fDXiO58PQaj9hG25uoxEsn/PMZySPf0rEdmdyzksxOST3ptFZxpQjJzS1e5pKrOUYw
b0W3zCiiitDMKKKKACiiigAooooAKKKKACiiigDU8N65feHdYg1LS5jFcwtkEdCO4I7g9MVN4x1n
/hIfEt9q3leUbtxIyA5CnAyB7ZrFoqPZw5/aW961r9bXvb7yuZ8vLfQKKKKskKKKKACiiigArtdK
/wCSWaz/ANfa/wA4q4qu10r/AJJZrP8A19r/ADirqwu8v8L/ACPPzH4af+OP5nFUUUVynoBRRRQA
UUUUAFewfsvf8j/qH/YMk/8ARsVeP17B+y9/yP8AqH/YMk/9GxV5Gff8i6t6HVgv48fU8fooor1z
lOtfxrfReA7fwvZEw2vmPLcOp5lJPC/7owD7n6VyVFFRCnCnfkVrtt+be7KlJytd7BRRRVkhRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAewfGz/AJED4Yf9gw/+irevH69g+Nn/ACIHww/7Bh/9FW9eP15G
Rf7lH1n/AOlyOrGfxX6L8kFFFFeucoUUUUAFFFFABRRRQB6Lon/JEvEH/X8v/oUFedV6Lon/ACRL
xB/1/L/6FBXnVedgPirf43+UT0sw+Gh/gX5yCiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKANfwf/wAjbon/AF/Qf+jF
rX+LP/JQNV/7Zf8AopKyPB//ACNuif8AX9B/6MWtf4s/8lA1X/tl/wCikrzpf7/H/A//AEpHpR/5
F8v8a/8ASWcjRRRXonmhRRRQAUUUUAFdrpX/ACSzWf8Ar7X+cVcVXa6V/wAks1n/AK+1/nFXVhd5
f4X+R5+Y/DT/AMcfzOKooorlPQCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigArtdK/wCSWaz/ANfa/wA4q4qu10r/AJJZrP8A19r/ADirqwu8v8L/ACPP
zH4af+OP5nFUUUVynoBRRRQAUUUUAFewfsvf8j/qH/YMk/8ARsVeP17B+y9/yP8AqH/YMk/9GxV5
Gff8i6t6HVgv48fU8fooor1zlCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD2D42f8iB8
MP8AsGH/ANFW9eP17B8bP+RA+GH/AGDD/wCirevH68jIv9yj6z/9LkdWM/iv0X5IKKKK9c5Qoooo
AKKKKACiiigD0XRP+SJeIP8Ar+X/ANCgrzqvRdE/5Il4g/6/l/8AQoK86rzsB8Vb/G/yielmHw0P
8C/OQUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQBr+D/wDkbdE/6/oP/Ri1r/Fn/koGq/8AbL/0UlZHg/8A5G3RP+v6
D/0Yta/xZ/5KBqv/AGy/9FJXnS/3+P8Agf8A6Uj0o/8AIvl/jX/pLORooor0TzQooooAKKKKACu1
0r/klms/9fa/ziriq7XSv+SWaz/19r/OKurC7y/wv8jz8x+Gn/jj+ZxVFFFcp6AUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFdrpX/JLNZ/6+1/nFXFV
2ulf8ks1n/r7X+cVdWF3l/hf5Hn5j8NP/HH8ziqKKK5T0AooooAKKKKACvYP2Xv+R/1D/sGSf+jY
q8fr2D9l7/kf9Q/7Bkn/AKNiryM+/wCRdW9DqwX8ePqeP0UUV65yhRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQB7B8bP+RA+GH/YMP/oq3rx+vYPjZ/yIHww/7Bh/9FW9eP15GRf7lH1n/wCl
yOrGfxX6L8kFFFFeucoUUUUAFFFFABRRRQB6Lon/ACRLxB/1/L/6FBXnVei6J/yRLxB/1/L/AOhQ
V51XnYD4q3+N/lE9LMPhof4F+cgooor0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDX8H/8jbon/X9B/wCjFrX+LP8AyUDV
f+2X/opKyPB//I26J/1/Qf8Aoxa1/iz/AMlA1X/tl/6KSvOl/v8AH/A//SkelH/kXy/xr/0lnI0U
UV6J5oUUUUAFFFFABXa6V/ySzWf+vtf5xVxVdrpX/JLNZ/6+1/nFXVhd5f4X+R5+Y/DT/wAcfzOK
ooorlPQCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
ArtdK/5JZrP/AF9r/OKuKrtdK/5JZrP/AF9r/OKurC7y/wAL/I8/Mfhp/wCOP5nFUUUVynoBRRRQ
AUUUUAFewfsvf8j/AKh/2DJP/RsVeP17B+y9/wAj/qH/AGDJP/RsVeRn3/Iureh1YL+PH1PH6KKK
9c5QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA9g+Nn/IgfDD/sGH/wBFW9eP17B8bP8A
kQPhh/2DD/6Kt68fryMi/wByj6z/APS5HVjP4r9F+SCiiivXOUKKKKACiiigAooooA9F0T/kiXiD
/r+X/wBCgrzqvRdE/wCSJeIP+v5f/QoK86rzsB8Vb/G/yielmHw0P8C/OQUUUV6J5oUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QBr+D/8AkbdE/wCv6D/0Yta/xZ/5KBqv/bL/ANFJWR4P/wCRt0T/AK/oP/Ri1r/Fn/koGq/9sv8A
0UledL/f4/4H/wClI9KP/Ivl/jX/AKSzkaKKK9E80KKKKACiiigArtdK/wCSWaz/ANfa/wA4q4qu
10r/AJJZrP8A19r/ADirqwu8v8L/ACPPzH4af+OP5nFUUUVynoBRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV2ulf8ks1n/r7X+cVcVXa6V/ySzWf+vt
f5xV1YXeX+F/kefmPw0/8cfzOKooorlPQCiiigAooooAK9g/Ze/5H/UP+wZJ/wCjYq8fr2D9l7/k
f9Q/7Bkn/o2KvIz7/kXVvQ6sF/Hj6nj9FFFeucoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAewfGz/kQPhh/2DD/AOirevH69g+Nn/IgfDD/ALBh/wDRVvXj9eRkX+5R9Z/+lyOrGfxX6L8k
FFFFeucoUUUUAFFFFABRRRQB6Lon/JEvEH/X8v8A6FBXnVei6J/yRLxB/wBfy/8AoUFedV52A+Kt
/jf5RPSzD4aH+BfnIKKKK9E80KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooA1/B/wDyNuif9f0H/oxa1/iz/wAlA1X/ALZf+ikr
I8H/API26J/1/Qf+jFrX+LP/ACUDVf8Atl/6KSvOl/v8f8D/APSkelH/AJF8v8a/9JZyNFFFeiea
FFFFABRRRQAV2vhbUNF/4RO90rWbyS38+43/ALtGLbQEIIIUjqtcVRWtGq6UuZK/TU58Tho4iChJ
tWad1vdfedr/AGd4H/6DN/8A98H/AON0f2d4H/6DN/8A98H/AON1xVFa/WV/z7j+P+Zz/UJf8/p/
ev8A5E7X+zvA/wD0Gb//AL4P/wAbo/s7wP8A9Bm//wC+D/8AG64qij6yv+fcfx/zD6hL/n9P71/8
idr/AGd4H/6DN/8A98H/AON0f2d4H/6DN/8A98H/AON1xVFH1lf8+4/j/mH1CX/P6f3r/wCRO1/s
7wP/ANBm/wD++D/8bo/s7wP/ANBm/wD++D/8briqKPrK/wCfcfx/zD6hL/n9P71/8idr/Z3gf/oM
3/8A3wf/AI3R/Z3gf/oM3/8A3wf/AI3XFUUfWV/z7j+P+YfUJf8AP6f3r/5E7X+zvA//AEGb/wD7
4P8A8bo/s7wP/wBBm/8A++D/APG64qij6yv+fcfx/wAw+oS/5/T+9f8AyJ2v9neB/wDoM3//AHwf
/jdH9neB/wDoM3//AHwf/jdcVRR9ZX/PuP4/5h9Ql/z+n96/+RO1/s7wP/0Gb/8A74P/AMbo/s7w
P/0Gb/8A74P/AMbriqKPrK/59x/H/MPqEv8An9P71/8AIna/2d4H/wCgzf8A/fB/+N0f2d4H/wCg
zf8A/fB/+N1xVFH1lf8APuP4/wCYfUJf8/p/ev8A5E7X+zvA/wD0Gb//AL4P/wAbo/s7wP8A9Bm/
/wC+D/8AG64qij6yv+fcfx/zD6hL/n9P71/8idr/AGd4H/6DN/8A98H/AON0f2d4H/6DN/8A98H/
AON1xVFH1lf8+4/j/mH1CX/P6f3r/wCRO1/s7wP/ANBm/wD++D/8bo/s7wP/ANBm/wD++D/8briq
KPrK/wCfcfx/zD6hL/n9P71/8idr/Z3gf/oM3/8A3wf/AI3R/Z3gf/oM3/8A3wf/AI3XFUUfWV/z
7j+P+YfUJf8AP6f3r/5E7X+zvA//AEGb/wD74P8A8bo/s7wP/wBBm/8A++D/APG64qij6yv+fcfx
/wAw+oS/5/T+9f8AyJ2v9neB/wDoM3//AHwf/jdT6lfeHrPwbf6Xo9/NcSTyLIFljYEncmedoHRa
4Oij61ZNRgldW69fmL+zruLnVk7NOza6fIKKKK5T0QooooAKKKKACvYP2Xv+R/1D/sGSf+jYq8fr
2D9l7/kf9Q/7Bkn/AKNiryM+/wCRdW9DqwX8ePqeP0UUV65yhRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQB7B8bP+RA+GH/YMP/oq3rx+vYPjZ/yIHww/7Bh/9FW9eP15GRf7lH1n/wClyOrG
fxX6L8kFFFFeucoUUUUAFFFFABRRRQB6Lon/ACRLxB/1/L/6FBXnVei6J/yRLxB/1/L/AOhQV51X
nYD4q3+N/lE9LMPhof4F+cgooor0TzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDX8H/8jbon/X9B/wCjFrX+LP8AyUDVf+2X
/opKyPB//I26J/1/Qf8Aoxa1/iz/AMlA1X/tl/6KSvOl/v8AH/A//SkelH/kXy/xr/0lnI0UUV6J
5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV7B+y9/wAj/qH/AGDJP/RsVeP17B+y9/yP+of9
gyT/ANGxV5Gff8i6t6HVgv48fU8fooor1zlCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
D2D42f8AIgfDD/sGH/0Vb14/XsHxs/5ED4Yf9gw/+irevH68jIv9yj6z/wDS5HVjP4r9F+SCiiiv
XOUKKKKACiiigAooooA9F0T/AJIl4g/6/l/9CgrzqvRdE/5Il4g/6/l/9CgrzqvOwHxVv8b/ACie
lmHw0P8AAvzkFFFFeieaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAa/g//kbdE/6/oP8A0Yta/wAWf+Sgar/2y/8ARSVkeD/+
Rt0T/r+g/wDRi1r/ABZ/5KBqv/bL/wBFJXnS/wB/j/gf/pSPSj/yL5f41/6SzkaKKK9E80KKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAK9I+A3iXSfC3i+8vdeu/strJYvCr+W75cyRkDCgnop/KvN
6K5sXhYYujKhNtKStpuaUqjpTU1uj2D+wfg1/wBDbrn/AH6b/wCR6P7B+DX/AENuuf8Afpv/AJHr
x+iuH+yp/wDQTU++P/yJt9ZX/PuP4/5nsH9g/Br/AKG3XP8Av03/AMj0f2D8Gv8Aobdc/wC/Tf8A
yPXj9FH9lT/6Can3x/8AkQ+sr/n3H8f8z2D+wfg1/wBDbrn/AH6b/wCR6P7B+DX/AENuuf8Afpv/
AJHrx+ij+yp/9BNT74//ACIfWV/z7j+P+Z7B/YPwa/6G3XP+/Tf/ACPR/YPwa/6G3XP+/Tf/ACPX
j9FH9lT/AOgmp98f/kQ+sr/n3H8f8z2D+wfg1/0Nuuf9+m/+R6P7B+DX/Q265/36b/5Hrx+ij+yp
/wDQTU++P/yIfWV/z7j+P+Z7B/YPwa/6G3XP+/Tf/I9H9g/Br/obdc/79N/8j14/RR/ZU/8AoJqf
fH/5EPrK/wCfcfx/zPYP7B+DX/Q265/36b/5Ho/sH4Nf9Dbrn/fpv/kevH6KP7Kn/wBBNT74/wDy
IfWV/wA+4/j/AJnsH9g/Br/obdc/79N/8j0f2D8Gv+ht1z/v03/yPXj9FH9lT/6Can3x/wDkQ+sr
/n3H8f8AM9g/sH4Nf9Dbrn/fpv8A5Ho/sH4Nf9Dbrn/fpv8A5Hrx+ij+yp/9BNT74/8AyIfWV/z7
j+P+Z7B/YPwa/wCht1z/AL9N/wDI9H9g/Br/AKG3XP8Av03/AMj14/RR/ZU/+gmp98f/AJEPrK/5
9x/H/M9g/sH4Nf8AQ265/wB+m/8Akej+wfg1/wBDbrn/AH6b/wCR68foo/sqf/QTU++P/wAiH1lf
8+4/j/mewf2D8Gv+ht1z/v03/wAj0v8AYPwa/wCht1z/AL9N/wDI9ePUUf2VP/oJqffH/wCRD6yv
+fcfx/zPYf7B+DX/AENuuf8Afpv/AJHo/sH4Nf8AQ265/wB+m/8AkevHqKP7Kn/0E1Pvj/8AIh9Z
X/PuP4/5nsP9g/Br/obdc/79N/8AI9H9g/Br/obdc/79N/8AI9ePUUf2VP8A6Can3x/+RD6yv+fc
fx/zPYf7B+DX/Q265/36b/5Ho/sH4Nf9Dbrn/fpv/kevHqKP7Kn/ANBNT74//Ih9ZX/PuP4/5nsP
9g/Br/obdc/79N/8j0f2D8Gv+ht1z/v03/yPXj1FH9lT/wCgmp98f/kQ+sr/AJ9x/H/M9h/sH4Nf
9Dbrn/fpv/kej+wfg1/0Nuuf9+m/+R68eoo/sqf/AEE1Pvj/APIi+sr/AJ9x/H/M9h/sH4Nf9Dbr
n/fpv/kej+wfg1/0Nuuf9+m/+R68eoo/sqf/AEE1Pvj/APIj+sr/AJ9x/H/M9h/sH4Nf9Dbrn/fp
v/kej+wfg1/0Nuuf9+m/+R68eoo/sqf/AEE1Pvj/APIi+sr/AJ9x/H/M9h/sH4Nf9Dbrn/fpv/ke
j+wfg1/0Nuuf9+m/+R68eoo/sqf/AEE1Pvj/APIh9ZX/AD7j+P8Amew/2D8Gv+ht1z/v03/yPR/Y
Pwa/6G3XP+/Tf/I9ePUUf2VP/oJqffH/AORD6yv+fcfx/wAz2H+wfg1/0Nuuf9+m/wDkej+wfg1/
0Nuuf9+m/wDkevHqKP7Kn/0E1Pvj/wDIj+sr/n3H8f8AM9h/sH4Nf9Dbrn/fpv8A5Ho/sH4Nf9Db
rn/fpv8A5Hrx6ij+yp/9BNT74/8AyIfWV/z7j+P+Z6r8avEPhzVtH8Jab4W1B76DSYJLdmkidGC7
YlQncqgkhD0HbtXlVFFduCwkcHRVCDbSvq99W30t3MatV1ZubCiiiuozCiiigAooooAKKKKAPRdE
/wCSJeIP+v5f/QoK86r0XRP+SJeIP+v5f/QoK86rzsB8Vb/G/wAonpZh8ND/AAL85BRRRXonmhRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFAGv4P/5G3RP+v6D/ANGLWv8AFn/koGq/9sv/AEUlZHg//kbdE/6/oP8A0Yta/wAWf+Sg
ar/2y/8ARSV50v8Af4/4H/6Uj0o/8i+X+Nf+ks5GiiivRPNCiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooA9F0T/kiXiD/r+X/wBCgrzqvRdE/wCSJeIP+v5f/QoK86rzsB8Vb/G/yielmHw0P8C/
OQUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQBr+D/8AkbdE/wCv6D/0Yta/xZ/5KBqv/bL/ANFJWR4P/wCRt0T/AK/o
P/Ri1r/Fn/koGq/9sv8A0UledL/f4/4H/wClI9KP/Ivl/jX/AKSzkaKKK9E80KKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigD0XRP+SJeIP8Ar+X/ANCgrzqvRdE/5Il4g/6/l/8AQoK86rzsB8Vb
/G/yielmHw0P8C/OQUUUV6J5oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBr+D/wDkbdE/6/oP/Ri1r/Fn/koGq/8AbL/0UlZH
g/8A5G3RP+v6D/0Yta/xZ/5KBqv/AGy/9FJXnS/3+P8Agf8A6Uj0o/8AIvl/jX/pLORooor0TzQo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKAPRdE/5Il4g/6/l/9CgrzqvRdE/5Il4g/wCv5f8A
0KCvOq87AfFW/wAb/KJ6WYfDQ/wL85BRRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGv4P8A+Rt0T/r+g/8ARi1r/Fn/
AJKBqv8A2y/9FJWR4P8A+Rt0T/r+g/8ARi1r/Fn/AJKBqv8A2y/9FJXnS/3+P+B/+lI9KP8AyL5f
41/6SzkaKKK9E80KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD0XRP8AkiXiD/r+X/0KCvOq
9X8B6Rca98KtY02zeJJ5775WlJCjb5LHOAT0B7Vm/wDCote/5+9L/wC/sn/xFeJh8dh8PUrQqzSf
O/yR7uJwGIxNOjOlBtciX4s86or0X/hUWvf8/el/9/ZP/iKP+FRa9/z96X/39k/+Irq/tbB/8/Ec
n9kY3/n0zzqivRf+FRa9/wA/el/9/ZP/AIij/hUWvf8AP3pf/f2T/wCIo/tbB/8APxB/ZGN/59M8
6or0X/hUWvf8/el/9/ZP/iKP+FRa9/z96X/39k/+Io/tbB/8/EH9kY3/AJ9M86or0X/hUWvf8/el
/wDf2T/4ij/hUWvf8/el/wDf2T/4ij+1sH/z8Qf2Rjf+fTPOqK9F/wCFRa9/z96X/wB/ZP8A4ij/
AIVFr3/P3pf/AH9k/wDiKP7Wwf8Az8Qf2Rjf+fTPOqK9F/4VFr3/AD96X/39k/8AiKP+FRa9/wA/
el/9/ZP/AIij+1sH/wA/EH9kY3/n0zzqivRf+FRa9/z96X/39k/+Io/4VFr3/P3pf/f2T/4ij+1s
H/z8Qf2Rjf8An0zzqivRf+FRa9/z96X/AN/ZP/iKP+FRa9/z96X/AN/ZP/iKP7Wwf/PxB/ZGN/59
M86or0X/AIVFr3/P3pf/AH9k/wDiKP8AhUWvf8/el/8Af2T/AOIo/tbB/wDPxB/ZGN/59M86or0X
/hUWvf8AP3pf/f2T/wCIo/4VFr3/AD96X/39k/8AiKP7Wwf/AD8Qf2Rjf+fTPOqK9F/4VFr3/P3p
f/f2T/4ij/hUWvf8/el/9/ZP/iKP7Wwf/PxB/ZGN/wCfTPOqK9F/4VFr3/P3pf8A39k/+Io/4VFr
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
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//ZCmVuZHN0cmVhbQplbmRvYmoKNjcKMApvYmoK
PDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0aAoxNTg0Ci9IZWlnaHQKNjk0Ci9Db2xvclNwYWNlCi9E
ZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50CjgKL0xlbmd0aAo2OQowClIKL0ZpbHRlcgovRmxh
dGVEZWNvZGUKPj4Kc3RyZWFtCnic7J0JfBNF28CftIUWqMhNERSEggV9EbVcUj5Abigip8ghgoAF
CyJW5KYiCPriCQgqIoggICivAnIXCiLIXSogFGkpR7CFXknT9MjzzewmaXrkaJpkN8nz50eT7M7u
zE4289/ZeXYXgCAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAI
giAIgvB04hFnlH8ttRCxnZPzcDSDEXPsXMbWDXL4hherZ3s2gSAId+B59mPHR8u82MdsqesKJ5RH
wPYmrflHf97P09zaNzWw5Dzn+OJ7xHP6t/nCKsaxbKoJ0wWyLn7RXD+/etSeWxrNjV/HVjS3stfY
Ak8WrviOr+x8YcP+Qb4gCC9hE28PZpd1KZ9bfLEOpc+sm48hdpZmBW7iLyOnTg21KX1Uvr6Vxn8a
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
vC9gxFlt6q+toWGs5v6HJSrX4oZDqftHoS+g8Yor2Vnn5j8I5nxhqGeAntuVuXcOjfYrvhxU/Pi2
9vZWKLb/FPoCar53XqW6vLyZ5eojCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIg
CIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIg
CIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIg
CIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCMINiCYkY/78aOGfQLQt
H2xKZPIh2uSfHR+iLXywOL+8GZexOspcN9FS/+wIwi2JRoLwNqKl/tkRhFsSjVIfZROEiyFfEIRd
0G+H8DZonycI+4jG+VIXgSBcCvmCIOyDfEF4G+QLgrAP+u0Q3gbt8wRhH/TbIbwN2ucJwj7ot0N4
G7TPE4R90G+H8DZonycI+6DfjoMIRcS8iyPEDxEYZnWBgCWJ2uTPAq2vuemkchaNKArt8wRhH/Tb
cRCheDBqboKuLX/v03hwzVIT+Zq8347Hl2zDvdbXvDTeEeUjjNA+TxD2Qb8dBxGKSwC6YHRLXHB1
DutftMRZx7OX9rtzsyP4LU9NX+8P93/YvXdfZkXojG+y9E/hfh+A2T9Vg1EXVWf7gEn6Kfj29fuL
WLpxEILRq1nHJaDJ3qxrvaXeRE+B9nmCsA/67TgIwRdP49IQVE4PZb4Iwet9z+h+7J99CCbhtEkY
Ccr0leFjsDu8r3uYpY/E4eKCXXFTj5jcpibpIzCm+UZ8Vu+LhhcTQn3OJrVek15F0g30HGifJwj7
oOv1HEQormzUfCsODMF1wvhFCC6DmdgXDt+GKrV8AnEVKBMBqmo+g1N/8PRzsKu44HqsDR1whkn6
CBwM7XCu3hdwKp69LIbmbCrhCMgXBGEf5AsHESrc+HSjIoRXqOCLOawPEQo7UiH0T3UOrgZlDEu2
LaGmbhpPPxFHsb9+ADFagMb4uUn6COwITfFTE190Qq1KhW9Ju4UeA/mCIOyDfjsOIhS3vdCvBQBv
94v54o/UOnW5L/azZIPwHXyEp2+BMb4ACy814v2L/8PpRXzxEnTB2e1xGnQXfdEMlwUHB9eQeBM9
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
kBcAikNeQEhCXgAoDnkBIQl5AaA45AWEJOQFgOKQFxCSkBcAikNeQEhCXgAoDnkBIQl5AaA45AWE
JOQFgOKQFxCSkBcAikNeQEhCXgAoDnkBIQl5AaA45AWEJOQFgOL858U5AJNDXgAoze+xUwPA9ILb
5wGgSDh2INxgnweQBscOhBvs8wDS4NiBcIN9HkAaHDsQbrDPA0iDYwfCDfZ5AGlw7EC4wT4PIA2O
HQg32OcBpMGxA+EG+zyANDh2INxgnweQBscOhBvs8wDS4NiBcIN9HkAaHDsQbrDPA0iDYwfCDfZ5
AGlw7EC4wT4PIA2OHQg32OcBpMGxA+EG+zyANDh2INxgnweQBscOhBvs8wDS4NiBcIN9HkAa4dgB
CC/ICwBJJjJAuJmo92EHYEp6v9QLZ/GOf67f8Z6/3WZN9DMr3mdWQUt5zppYyKzAlspf7cT8+46b
8QXPmuh5v5AC/JcVX/Bq3G/6FuD7AL0POwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh1/w8u84lwCmVuZHN0cmVhbQplbmRvYmoKNjgK
MApvYmoKNDEyNjAKZW5kb2JqCjY5CjAKb2JqCjM2MzgzCmVuZG9iago2MgowCm9iago8PAovRm9u
dAo8PAovRm9udDMKMTMKMApSCi9Gb250MTEKNjUKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2Jq
ZWN0Cjw8Ci9JbWFnZTUKMjQKMApSCi9JbWFnZTEyCjY2CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9B
bHBoYTAKMTAKMApSCi9BbHBoYTEKMTEKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1h
Z2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iago3MAowCm9iago8PAovVHlwZQovUGFnZQov
UGFyZW50CjEKMApSCi9NZWRpYUJveApbCjAKMAo5NjAKNTQwCl0KL0NvbnRlbnRzCjcxCjAKUgov
UmVzb3VyY2VzCjcyCjAKUgovQW5ub3RzCjc0CjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5j
eQovQ1MKL0RldmljZVJHQgo+Pgo+PgplbmRvYmoKNzEKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVE
ZWNvZGUKL0xlbmd0aAo3MwowClIKPj4Kc3RyZWFtCnicvVjLbiNFFC0prGozmuXs0IhFPFIq9X5I
2YBiIrOYSZClIQlZjAhjK3Fm4oR/YIX4hEHiF/gBQEj8BXwK51a73eV2J+Rhj61uV1931b19zrm3
b/eUKyE5fbeqgbMSv99d8CnHQKrko5M2n9E+xkn0c8FtDD7KPH3SHOhgjabBhLcOaD/mr/k7OJny
7c8nl+M3ko+ucyz1djV60Opj/vYFP8B3WiyuaPHqMrGs0kEFkTzXzlvtRNDwop3WQdhYGCeF0avk
pCBbM7uxzZ2SWxNrSJtRxrM+oF9jhInSBst9MEIaY2vMbYrSJK1vGCL+L4ZYZHjFt798/+4HwxWW
yh8+fNtmUynhVMKHDyuyhqd8k/3d48Mz3h+u1psXwTkVdOj2Wvv8H5huI06bZO2MOAdilCfiZLLK
itI4KYxeSw9jZnM+vTDenzqvRbTB+4o6nbDgnDrKDxkxdNrhiLB0ldWshLnf2Ab7k/2O7S+MPmEj
dlRyuSr3BA5Sam1EWugdGRAp25xJXiRHie6jN8hiU1gnpdV78pAzs1ihsBbJvz4Xr1/kwmWAjCe1
VajJFK0IvnMW0NgeXLwZfe/47vs5bjeWp6RCoCKYpKOalqN20hSmSWOyTqNiWypMs3mN5f7axupZ
EZq75jZAKgJCOjiMglUqeNchJxsxY1nIJgGkWAjoGDqOPYSLvzfZgB1DySd5L9gT9oH9kZX9FPtf
sD1ngx53+dQzNu3xatYJlP8N/pU9HuPMcortENsrdt3jJ3z4Vc6KxwQfpIb+nV++hlUkQcMXABe4
p1ItQ2HRJJ65cVIYtY3SISRdsF3aHsO3UlFAwsbfj3Sju0gX0mvHkVIQf1m+fm2KFdUmbY0yQXsa
Rm2cTnd2YTztWg5IWU+ggCNUyA0o5ByqGmP0GbRR6eySbUMxWTBTdsDOIEOdj/psn/1cyObR8QUt
rFYgbQmFOQZ3glgprlVFkl3y4pRQKSTruDeC6jTuRSXeXz8Eb+2Fz5+OfBBe4uM73RH6t2frLn4P
2B57VXMwYOOHYX5zjNom4ZKGojshWQv4yVWePg72Hd4Ies8+Rdl8DpjP2KjHczu8yXZqOl7WZLwE
Bf1Vo44mQeiATqILitUCAVoDeXDUid/i7K4Ed6bvFho7aRSKmEKPpxar2I+rrWJLHojN7QXmtK3S
pcmta/D8DMXtkO2gsO3h6NsrHJxTQilVnYSRnKUZBKFCHlM93KfFlc/Hl7UuBmxjlfWPVtd1/9i6
uD1IsNFjc3k5TFO3BfUJZ4i4EfczVPgHFo3OQKFakfLtqiva9dQLjceQ8PEKRpc7ouFpIxVIYgxS
/mGR/QuQa00VgtvP99SdBYo2MnlyXuMfKKA7XUPwot1E7lF8tq3iw9wKHrUVdIrcGOUecZwjp47z
cKFTXEnExkNEzuC5vh3xeqRkZFz0sj4ZtV3NJKRNmwFIZKuihapU1ZApjPr1bX8n92KlknZyA7bR
Sejicv3bq1ys9PrTOrVo8HjVBmIXQZHMoMlZs0lF7hgPI/XDDaUQCe88C/BDiUalyIO8wCJIa7wI
NKjLFzFo8VLgnHu3/gLeeytv3mRAQngXlsJbyesjJaPVwiduVQxWGJ/fLjpkID3Hz42TwqhdMNHQ
nEkxv7QW7xzW5WD2xkEHi7ohbKgA08o5mYRRnfPm7xyUaV460Pc/7HcRXwplbmRzdHJlYW0KZW5k
b2JqCjczCjAKb2JqCjEyNjYKZW5kb2JqCjc0CjAKb2JqClsKXQplbmRvYmoKNzUKMApvYmoKPDwK
L1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAoxMTYwCi9IZWlnaHQKOTEx
Ci9Db2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQZXJDb21wb25lbnQKOAovU01hc2sKNzYKMApS
Ci9GaWx0ZXIKL0RDVERlY29kZQovTGVuZ3RoCjc3CjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgAB
AgAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYW
ICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAOPBIgDASIAAhEBAxEB/8QAHwAA
AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh
MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpT
VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5
usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAA
AAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEI
FEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVm
Z2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK
0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
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
XutPuIwI3kP908BAN2xT0BDDjK7q8YrXBYqdZypVo2nDe22uzXk/80OMm9HuFFFFdxQUUUUAFFFF
AGv4P/5G3RP+v6D/ANGLWv8AFn/koGq/9sv/AEUlZHg//kbdE/6/oP8A0Yta/wAWf+Sgar/2y/8A
RSV50v8Af4/4H/6Uj0o/8i+X+Nf+ks5GiiivRPNCiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigDX8H/wDI26J/1/Qf+jFrX+LP/JQNV/7Zf+ikrI8H
/wDI26J/1/Qf+jFrX+LP/JQNV/7Zf+ikrzpf7/H/AAP/ANKR6Uf+RfL/ABr/ANJZyNFFFeieaFFF
FABRRRQAV7D+y9/yP+of9gyT/wBGxV49XsP7L3/I/wCof9gyT/0bFXkZ/wD8i6t6HTg/48fU8eoo
or1zmCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvYPgn/AMiB8T/+wYP/
AEVcV4/XsHwT/wCRA+J//YMH/oq4ryM9/wByl6w/9LidWD/ir0f5M8fooor1zlCiiigAooooAK9g
+JEt3qPwj8GXGmh5tIghVbt1ThJkRYlzkZADeauehJHqteP16d8DrjxBNrE+l6bDDc6HPg6jFdqW
hSM8MR/tsoKgchu4IXI8rNYckYYpW/du9ns1az+fbzIn/N2PMaK9K+LN94HlneDwtp6G/LZlvLVz
HAhU7dix42sCATlQoztILZIrzWuzCYh4mkqrg436Pf8Ar7vQqLurhRRRXSMKKKKACiiigD134K2k
+gaXr3jO9TZYwWTxW6ykRrctuDEKx6fMioODktgcgivIq9O+H/xK+xWtvoHiyCHUPDx/d7povNeE
ZBXIOQ6KR0xkdvuhayvix4RtvDGsW0+kSebouoxme1feHC9MqGySygMpDHqGAySCa8TC1J0sdUhi
FaVT4Wtmo9PXdv8AysZxdpO/U4aiiivbNAooooAKKKKANfwf/wAjbon/AF/Qf+jFrX+LP/JQNV/7
Zf8AopKyPB//ACNuif8AX9B/6MWtf4s/8lA1X/tl/wCikrzpf7/H/A//AEpHpR/5F8v8a/8ASWcj
RRRXonmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQBr+D/wDkbdE/6/oP/Ri1r/Fn/koGq/8AbL/0UlZHg/8A5G3RP+v6D/0Yta/xZ/5KBqv/AGy/
9FJXnS/3+P8Agf8A6Uj0o/8AIvl/jX/pLORooor0TzQooooAKKKKACvYf2Xv+R/1D/sGSf8Ao2Kv
Hq9h/Ze/5H/UP+wZJ/6NiryM/wD+RdW9Dpwf8ePqePUUUV65zBRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABXsHwT/AORA+J//AGDB/wCirivH69g+Cf8AyIHxP/7Bg/8ARVxX
kZ7/ALlL1h/6XE6sH/FXo/yZ4/RRRXrnKFFFFABRRRQAV6z8CTaX1p4q0Ce8S2u9WtBFBuGSw2Sh
iBwCQHB25yRnsCR5NUkE0tvPHNbyPFNGwdJEYqysDkEEdCD3rkx2F+t0JUU7N2s/NNNfiiZR5lYn
1XTrvSdRnsNRge3u4G2SRv1B/qCMEEcEEEVUr1WH4o6frtjBY+PvD8OpRpkfa7c7JVGF5A4wzMo3
FWUYPTjBkg8TfC6wc3Nl4Tv5rqNWMcdyd8bNggBg0rDHPXacdQMiuRY/EwXLVw8nL+7ZxfzbTXzW
guZrdHk1Fes+M/BcHii0TxT8PoknsplxcadEiRvbOiDIVBjnAGVGSSQV3BuPKp4ZbeeSG4jeKaNi
jxupVlYHBBB6EHtXXhMZTxUbx0kt11T7NDjJSI6KKK6ygoroPCng/W/FM4TSLJ3hDbXuX+WGPkZy
x6kBgdoy2OgNej3knhj4ZaXbaRqOlWHiXX5G8+78yNNtuGUYUOyMccDCkZOSx25APn4nMYUpqjSX
PUf2U1f1fRfMhztotzyPStOu9W1GCw06B7i7nbZHGnUn+QAHJJ4ABJr0745IunaV4M0SaVHv9PsC
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
5s6sTtT/AMK/NhRRRXAcoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVqeFv8AkZ9I/wCvyH/0MVl1
qeFv+Rn0j/r8h/8AQxTW5rh/4sfVfmanxM/5HfUv+2f/AKLSuXrqPiZ/yO+pf9s//RaVy9OfxM2x
/wDvVX/E/wA2FFFFScgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBr+D/+Rt0T/r+g/wDRi1r/ABZ/5KBqv/bL/wBF
JWR4P/5G3RP+v6D/ANGLWv8AFn/koGq/9sv/AEUledL/AH+P+B/+lI9KP/Ivl/jX/pLORooor0Tz
QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA1/
B/8AyNuif9f0H/oxa1/iz/yUDVf+2X/opKyPB/8AyNuif9f0H/oxa1/iz/yUDVf+2X/opK86X+/x
/wAD/wDSkelH/kXy/wAa/wDSWcjRRRXonmhRRRQAUUUUAFFFFABRRRQB6r8X/wDkSPh1/wBg4/8A
oqCvKq9V+L//ACJHw6/7Bx/9FQV5VXl5N/ukfWX/AKVIin8IVpeGv+Rj0r/r7i/9DFZtaXhr/kY9
K/6+4v8A0MV69L416k4j+FL0f5Gl8Rf+Rx1D/tn/AOi1rm66T4i/8jjqH/bP/wBFrXN1pif40/V/
mY4D/daX+FfkgooorA6wooooAKKKKACiiigAooooA63Tf+Scar/18r/OOuSrrdN/5Jxqv/Xyv846
5Ku/HfDR/wAC/NnVidqf+FfmwooorgOUKKKKACiiigAooooAKKKKACiiigAooooAK1PC3/Iz6R/1
+Q/+hisutTwt/wAjPpH/AF+Q/wDoYprc1w/8WPqvzNT4mf8AI76l/wBs/wD0WlcvXUfEz/kd9S/7
Z/8AotK5enP4mbY//eqv+J/mwoooqTkCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKANfwf/AMjbon/X9B/6MWtf4s/8
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
5D/6GKy61PC3/Iz6R/1+Q/8AoYprc1w/8WPqvzNT4mf8jvqX/bP/ANFpXL11HxM/5HfUv+2f/otK
5enP4mbY/wD3qr/if5sKKKKk5AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDX8H/8AI26J/wBf0H/oxa1/iz/yUDVf
+2X/AKKSsjwf/wAjbon/AF/Qf+jFrX+LP/JQNV/7Zf8AopK86X+/x/wP/wBKR6Uf+RfL/Gv/AEln
I12uq/8AJK9G/wCvtv5y1xVdrqv/ACSvRv8Ar7b+cte3htqn+H9UfO4/4qP+NfkziqKKK5T0Aooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAO10r/AJJZrP8A19r/
ADiriq7XSv8Aklms/wDX2v8AOKuKrqxO1P8Aw/qzz8B8Vb/G/wAomv4P/wCRt0T/AK/oP/Ri1r/F
n/koGq/9sv8A0UlZHg//AJG3RP8Ar+g/9GLWv8Wf+Sgar/2y/wDRSV4kv9/j/gf/AKUj6KP/ACL5
f41/6SzkaKKK9E80KKKKACiiigAooooAKKKKAPVfi/8A8iR8Ov8AsHH/ANFQV5VXqvxf/wCRI+HX
/YOP/oqCvKq8vJv90j6y/wDSpEU/hCtLw1/yMelf9fcX/oYrNrS8Nf8AIx6V/wBfcX/oYr16Xxr1
JxH8KXo/yNL4i/8AI46h/wBs/wD0Wtc3XSfEX/kcdQ/7Z/8Aota5utMT/Gn6v8zHAf7rS/wr8kFF
FFYHWFFFFABRRRQAUUUUAFFFFAHW6b/yTjVf+vlf5x1yVdbpv/JONV/6+V/nHXJV3474aP8AgX5s
6sTtT/wr82FFFFcByhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWp4W/5GfSP+vyH/wBDFZdanhb/
AJGfSP8Ar8h/9DFNbmuH/ix9V+ZqfEz/AJHfUv8Atn/6LSuXrqPiZ/yO+pf9s/8A0WlcvTn8TNsf
/vVX/E/zYUUUVJyBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
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
Kul8a9TKv/Cl6P8AI0viL/yOOof9s/8A0Wtc3XSfEX/kcdQ/7Z/+i1rm60xP8afq/wAzHAf7rS/w
x/JBRRRWB1hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVo+HGC+IdLY5wLqI8DJ+
+O1Z1aXhr/kY9K/6+4v/AEMVdP416mVf+FL0Zo/EJg3jDUCM9UHIx0jWucrpPiL/AMjjqH/bP/0W
tc3V4n+NP1f5mOA/3Wl/hX5IKKKKxOsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAK0PDzBNf0xzkhbqInaCT98dAOTWfWl4b/AORi
0r/r7i/9DFXT+NeplX/hS9GaPxEOfGOof9s//Ra1zldJ8Rf+Rx1D/tn/AOi1rm60xP8AGn6v8zHA
f7rS/wAMfyQUUUVgdYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFaXhr/kY9K/6+
4v8A0MVm1LaTyWt1DcQkCWJ1kQkZwQciqg+WSbIqxc4SiuqN/wCIv/I46h/2z/8ARa1zdW9Uv59U
v5by7YNPLjcQMDgADj6AVUqq01OpKS6tmeFpulRhTlukl9yCiiiszcKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK0vDf/ACMWlf8A
X3F/6GKzaltZ5LW6huITiWJxIhIzgg5FVB8sk2RVi5wcV1Rv/EX/AJHHUP8Atn/6LWubq3quoT6p
fy3l2VM8mNxUYHAAHH0FVKqtNTqSkurZnhabpUIU5bpJfcgooorM3CiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2QplbmRzdHJlYW0KZW5kb2JqCjc2
CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovV2lkdGgKMTE2MAovSGVpZ2h0CjkxMQovQ29sb3JT
cGFjZQovRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVudAo4Ci9MZW5ndGgKNzgKMApSCi9GaWx0
ZXIKL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nOydB3wURfvHn1RCk94UpCq+/H0pClIEiYBgfCO8
QngFAekKCBp86YIJTUFRqkIA6QgEeKmGDqGKgAoSqaETCC2EkHKpz39m93r27nb39m53k/l9lOzu
zTzzzN7M96buAjAxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTEx6UxxiGPct1IeEZt5OA0FNA9xpzaNmRWGaJAZR6xDyjtu+wXLyQKT99SRVFasKTnaHyTWMuW9
MUo8I9ot+zslJzV+Q1ff/J95hkO3idX/8IfxzuyLlkAN3IvWGuSeMemqSxL9zHg8gBz/Q3McKpdF
3OrjPAzjkJ60lpb0L6TGeonGSgkS/rArJsr15gdcS//0DA9vLCZ44DpzZd1VJN+nDjgkMQ17UQ5d
CeQOBTkUJ4kboEUOwUnE/cbDbYh/QJ3w8KE2ASrl4EsubBgrfnB4+L+dhjOWFpfhbDSI3pc9zsPY
csiUBRGF01hAmLyokumYi/i31GiTkUbrKvzhRtkc8kuUVgQiSWk8/f2XPyaQv1/l+1SYQ1LTsBfl
EA7nDoU49LI0boAgOiZuJvqTpPMLPejgnjEZ+gwxuyx3VCwD8b/5AwxDsRxyKVml5TAtfzmVnYYR
bvC6Ts7dAsIkQx8ixtxAbCgx2hXE+YibBT8rmSGbQ+1QWhG4ibiG/i12DPGxn/2nwhySmoa9OA49
Kk0PhTg0RQkOcaI9otJSvVOGQxVzEHtxR++RCv9s/gBHFOOQrNJSPQ+T1yCGOw0kyCERyblbQJhk
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
IACAbsQ1e3GBAAC6EdfsxQUCAOhGXLMXFwgAoBtxzZ6vAABkGeI8dDcAIOuw7R0AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAEC4/H9kn5qOCmVuZHN0cmVhbQplbmRvYmoKNzcKMApvYmoKODc5NDMKZW5kb2JqCjc4
CjAKb2JqCjM5MDkxCmVuZG9iago3MgowCm9iago8PAovRm9udAo8PAovRm9udDMKMTMKMApSCi9G
b250MTEKNjUKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUKMjQKMApS
Ci9JbWFnZTEzCjc1CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBoYTAKMTAKMApSCi9BbHBoYTEK
MTEKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpd
Cj4+CmVuZG9iago3OQowCm9iago8PAovVHlwZQovUGFnZQovUGFyZW50CjEKMApSCi9NZWRpYUJv
eApbCjAKMAo5NjAKNTQwCl0KL0NvbnRlbnRzCjgwCjAKUgovUmVzb3VyY2VzCjgxCjAKUgovQW5u
b3RzCjgzCjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQovQ1MKL0RldmljZVJHQgo+Pgo+
PgplbmRvYmoKODAKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAo4MgowClIK
Pj4Kc3RyZWFtCnic1VnLbhRHFG1pWNUmYpWwg6wYEOV6PyRvEuEgIwVwMhIBxwsUB4/MGDBEyidk
FSn7LKPwBfmBGKKIP4iUn8m5Vf2omWkbjKctZUbTU32nq271OefeutVzyCQXjN43csMage/vDtgh
Q0PI6IIVJl2xeI6L6OuAmeBdEKn7rDtR3mhFjRlbOKHjlN1nT+HkkK19Nns+fSTY3ss0l+bzYu+D
Rp+yx9fYFt6HxeCSBs+3iWGl8tLz6JiyzijLvYIXZZXy3ITCOCuMTkYrONm63p2tdUpudWgg7VoJ
z+aEvrXmOgjjDXNec6G1aTA3MQgdlTqmifl/PsEgkxds7YtnT3/QTGKo9GKTx4tsSsmtjHixSSZr
ssuuVm/HbLLPNiar9ea4t1Z65fu9Nj7fAdNJxCkdjamJsyBGOiJORCMNL42zwuiUcDAmNtvuhfH0
1DnFg/HOZepUxIAtdRQfIqBplcUZYWmzVa+EuT+qUfW6+hOfv9C6UO1VD0suV+WewEFIDUakgd4R
AYGizeroeLQU6C44jSjWhXVWWp0jDykyixEKaxH8w7m4fy0lLg1kHKktoyZiMNy73l5AY23z4NHe
95bdfNbidmx6itJ7SoJRWMppadZW6MI060zGKmRsQ4mp7tdZTq9tjJ4UoZjtlgFSERBS3qLljZTe
2R45mYAey0LWESCFQkDb0HFSLhR8Z8yUwWVXq81qfcxiau5XT6q9Mckz/zDFhVvVNo4B1lhbt8ds
h01uJ+mfZYYavDkf/fJEV6H0lhQXkHuMKdlsbQWdymA+meKma2E6C6FSKahdqng6VrXqY5ULpyxD
zEDdZX76rctGlHwwdam9ctQMSlsV39uFdnRYcEDSuVJdHzOftXGhulKo4KwupdLc9N9Ye1vvhRpW
GJlhN0tOrKNfhGNOc8qsWD1KAH/6EACV4y69lrx5wR3cxV5vhOb1FGkuobkzZjkWnyPcbiHERotg
wzJFcO7ivYMI3q8jWOTusIxgu5d6rmFYlewvm7iejmlBSRGOlqjjmNLA5Wqz9d1cvVk9wC/fvqjW
q416zN9x4ZvqFVq7sJL/rfTZQXKgBHH3w8RwAnzRc+1DP3xDiCLa7OdcNNHjjCTxEfB8iBpjBNTX
U/L9B5+d6k7B7norGvAlM3Pr4OABjjdxTAqoLrc0g8ZRK5pM2HTVZFmaB3YCvhfFAcjCTuAc2erz
1tElqyOiBbjewndje12QeFT9Wr3F9/zKuovjRuJkLvBe/i8YD1jSpAn92AzCuKObOxe2FzylXD2m
OWbg55PfNHFfMrucmG+lXFvz0ORh6lNfVZRfeVCiD4VYInGahiTrA8rnKw5cZ3mwtgfeocCN6hg/
KyiKlE47ywGroiUPJI6Pq0sUc8+xMfwl5YJ/8blOpkvUKKQznRPAvbIAAN93q3srLKm0t1zaflgG
iE/laeNzHvG56GkxEzdZd71k4UL1SdNEeeRzVYVGSC3Rti6kFL6FAb7JmTe2VZNpW6qmMxdHlPX3
mwt30oZpf+Vx6rFbEdb34DwQylqoY/ysYvdiPLfDbl8WPZBKwHyONlddxJI8d/p6lbsZJ7kUUYee
Gx0g9HQQPJxL6C16IlBFXaV8iuNOz1aCclyOtyltNc4cF6Ju+zy/7lTJwEO0BqT4RUAE7VZXCYky
ikijZxc9mIwgqTfIJRdT5qE92wNkhY0xC8et93ObQSQWKhCnVD4U6I1SXhqdLGP83vlJm7VcIv5c
jVa/RYPMtXbLGAyVlAxS7yLW3Z6pKcGbuvku1tTNuRV3Oo8OAf+kLrDeBerWYvWGnhvD1ddOI+6d
MUu3PEQCMcacUwJZ9JSfKrXx8AJwPgSw9GCiSCEb5fpKBTUJOj1zkLatpZroOAJdtNm6mYp0enJx
VP1N501uQhF9o1vLm2chr1a+ZGMdMs4hHS3Bu4KHm9o45RQm6rQRmsq7A2as9LRqm844K4xS2IDl
ypK17V4ap+xxM6FBRs//OsJmDMGboTLIpBGVRk+f9tm9NM3D++IPy0MoW2vu2I9MsdsYap8FQWx+
ybZ3BNutsfrqFobWPj1IcyJilxbz3SB5S+5UZ5wVRikwB8m9TndTdy+NU/Y180gG6n3c2yggE+Am
cjlA7hVuk/72aI2zwiiFkyEAYpv81/3nrDSBk//M0C7Sg226Gx0C7kuEORo76xyPmEQqcGflAJ2x
EMlA42eZBCUj1vM6nrTEVhkc9XTpVGLPphLnhTR54s4ISf8jlTrprHNCscYKmf6JLgbojKfRiYvS
ZPp1sNrSn9+lUjrrnFSsgmPuMp7NAJ3xPXSi8Nb01F0GZaLBqpJvHNmLl8ZZYYyICpG9dt07Y6GS
QUavUwlkgVRhGpWg5Maibfo6dSpxZ1OJEh7p3AJjXCEsFul0O9Al2qGwzkprtFFGHtINtQN0xtOo
RKngKQkQdJAERwma8AyUmkJhnZXWqH1wXMY0g3aEwtrohN7/AUG6a74KZW5kc3RyZWFtCmVuZG9i
ago4MgowCm9iagoxODU1CmVuZG9iago4MwowCm9iagpbCl0KZW5kb2JqCjg0CjAKb2JqCjw8Ci9T
dWJ0eXBlCi9JbWFnZQovSW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMzMzCi9IZWlnaHQKMTM0Ci9D
b2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQZXJDb21wb25lbnQKOAovRmlsdGVyCi9EQ1REZWNv
ZGUKL0xlbmd0aAo4NwowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAGBAUG
BQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAl
KCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgo/8AAEQgAhgFNAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAAB
AgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNC
scEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0
dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY
2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//E
ALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoW
JDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp
6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+dfCvhS98SQajPaXFlbW9gqPcS3c3lqisSAc4Pp9fTNb
ifC/WPtUlvLfaRA/2o2dv51yVF3KACVi+Xn7wGTgZOK5vS9b+w+Htb0vyN/9peR+9348vy3LdMc5
6dRit/wx42s9M0rTLTVtF/tKTSbprzT5FuTD5bsVJVxtO5dyqe3TFADLb4b63NZpI0ljBeyxyyw6
dLPtupkjJDFUxj+FupBODirrfDWZ7LwzJBqumGbVmCOpvYm2s0/lr5YDZfjBOM4OR2qxF8Tw8ttq
d9oy3HiWzhmgtr8XBSNVkLnLRbTuK+Y2PmHX2rGsfF9rBoOj28umSPqujOz2F4lztRCZfNBePad2
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
ZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5n
dGgKODgKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcH
BggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMB
BwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKP/AABEIACIA1QMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJ
Cgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQz
YnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm
5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIE
BAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZ
GiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SV
lpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4
+fr/2gAMAwEAAhEDEQA/APAPCngXUfEmmm/trvTrW0F0tmXu5zH+9YAqAACTnIHFWovhtrMlsGFx
pq3ciSyW9k1xie5SMsGeNccj5WxkgkA4FYX9t/8AFH/2F5H/AC//AG3z9/8A0z2bduPxzn8K6jSP
iHBY2emTS6KJ9e0q0eysr77SVRI23AFo9vzFd7Y5HWgCjL8OtXi05rhrjTftMdul3NY/aQLiCF8Y
kdSMBfmBPPAPOK2/+FWt/wAJHotgNUspIby1juJfJu4pJh+5Mr7EDZZcKQrdDkHNUr/4hwXVjfzJ
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
FFFAH//ZCmVuZHN0cmVhbQplbmRvYmoKODYKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRl
cnBvbGF0ZQp0cnVlCi9XaWR0aAo0MDgKL0hlaWdodAozNAovQ29sb3JTcGFjZQovRGV2aWNlUkdC
Ci9CaXRzUGVyQ29tcG9uZW50CjgKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5ndGgKODkKMApSCj4+
CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4P
DBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEyga
FhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEI
ACIBmAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMD
AgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUm
JygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX
mJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4
+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncA
AQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo
qaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhED
EQA/APmbQND1LxBetaaNaSXdysZlMceM7QQCefqK2o/h54pkv5rNNKJnhjSVz58WwK/3Pn3bcnBw
M5NVPBuux6DJrEknnh7vTZ7OJocZV3xgk5GBwenNa3h7xLpk/hi60DxXLqv2VriG5guLTbI6eWpT
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
qdxp+pQ+TeW7bJI9wbafqCQfwraudE04+Aotds7m7a7S9SyuIZY1VAWjd8owJJHyjqB1ptnYadq0
P23WPFcFtfSk+Ylxb3E0nHAJZVIOR71bttT0WLwZq2gXVxeyTfb/ALXaXFtApjlKRui7t7Kyg7ge
hIHagCgfBviAaImrHTZRYOquHLLu2sdqtszuCk9Gxj3qbWPAnibRrdZtR0ieFGmFuAGV23kkKNqk
nnBwcYPbNdhffEezvdDgTz7+1vBYxWM1tFY2xjkCY584/vAp2g7ex6GpfDvju2m8b61dR28876rr
Frd2yXDogEcTudrMzYVtrALyRkdRQBzNp8MvFEuq6fZ3GmvB9rnEBcMsnldNxdVJK7QQTnHFT2Pw
01qW51myuLO7iv7S3E9tEY9v2kecsZIz0XBJz7V1fi280vwnYeHfsq3TXcOvNq0sN1NG80gGw7mE
bMEBxgZOTgnvXLXPiLQLBfE40KXV3bWbVowZ4kj8tmnVyp2ucrsDAnvnpigDkdc0e/0LUXsdVtzb
3SqrFSwYFSMgggkEEdwaKv8Ai/WbfWptKe2SVBaabbWb+YAMvGm0kYJ49P5UUAQ+FPD9z4m1iPTr
Oezt5Hx+8u5xEgyQoGTySSwAABPPSrmmeEbi6l1Rry+stPsdMl8i4vLguY/MLEBVCqWYnaTgDoMn
FM8AtYQ+K9OvNV1KHT7azniuS8kUkm/ZIp2AIrHJGevHHWvQdF8Tadpw8UadpviiztZL+6TULPUj
aSlUO598ZDJuVtpGCBjkjPNAHkl/AlrezwRXEV0kblVmhzskA7jIBx9QKr10PxB1Gw1bxlql9pCB
bKaQFCI/LDkKAz7e25gWx71z1ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/ZCmVuZHN0
cmVhbQplbmRvYmoKODcKMApvYmoKODk5NgplbmRvYmoKODgKMApvYmoKMzU3NwplbmRvYmoKODkK
MApvYmoKNDMxOAplbmRvYmoKODEKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQzCjEzCjAKUgovRm9u
dDYKMjUKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUKMjQKMApSCi9J
bWFnZTE0Cjg0CjAKUgovSW1hZ2UxNQo4NQowClIKL0ltYWdlMTYKODYKMApSCj4+Ci9FeHRHU3Rh
dGUKPDwKL0FscGhhMAoxMAowClIKL0FscGhhMQoxMQowClIKPj4KL1Byb2NTZXQKWwovUERGCi9U
ZXh0Ci9JbWFnZUIKL0ltYWdlQwovSW1hZ2VJCl0KPj4KZW5kb2JqCjkwCjAKb2JqCjw8Ci9UeXBl
Ci9QYWdlCi9QYXJlbnQKMQowClIKL01lZGlhQm94ClsKMAowCjk2MAo1NDAKXQovQ29udGVudHMK
OTEKMApSCi9SZXNvdXJjZXMKOTIKMApSCi9Bbm5vdHMKOTQKMApSCi9Hcm91cAo8PAovUwovVHJh
bnNwYXJlbmN5Ci9DUwovRGV2aWNlUkdCCj4+Cj4+CmVuZG9iago5MQowCm9iago8PAovRmlsdGVy
Ci9GbGF0ZURlY29kZQovTGVuZ3RoCjkzCjAKUgo+PgpzdHJlYW0KeJy9WM2O2zYQJuA9EQGKXlrk
1gI9xFlEy39KgC8p4i7SQ7ILGEi82z0ETWNh10n2p+gr9BQ09x5yKNon6AukRS59ifZR+pGSKFqS
N9msZAu2qRE5Q84333CoM8oTRt11p2hoxfD//XN6RtFgPDOpZsr3aN6jk/t7TlVqTcr88GV9I6yS
wjWWtHHjfnP6iL6AkTO6c3d5mj9hdHHh51J9zxcfpT2nz27TfVxnkXLulBfLhFouLLdJZqjQRgmd
WAErQgthE5VGwmUkNDzTLHGyenQtC0adWZlWLq1b3p/VjfuXMpEpU1ZRY2XCpFSVz1WWMpkJsaaJ
+X89g5LZOd355uWLHyXlUOU/dPasiSbnieYZPnRWgDV7Sm+Rf8Z0dkyns36tmcRqza2w3VYrm+9x
02XACZkpVQKnAQw3DjiWKa6SWLiMhEYwA6FHMwyPhFeHzogkVdaYAjqRQWGAzvGDpWhqoXHnfKkL
qewFuT/JiPxN3uL7Dq0tsiAHMZZ9mXfOAaUGA1Ih3sGA1LFNy8wkmXZEN6mRYLGMpMtYaoyz4JkZ
aYikEfmHM/Hotk9cEp4xLtoKr7EsVYk1naPgjZ37z58sftD03svgt7XpKePWuiSYMe1ymp+1ZjIS
LWuR0gIZW7nEVI6rJVePbWj3ESGorrcBF0XwkLAaLas4t0Z3hJNKMaIdyDKDk9IogA4Rx2xMU9f9
FrlP8rGLM9c+JvvkkDwc0yM6+9bH9HVMcwl4VKpUewp9xHBwt4GJBFYinIIsAkoomaoCvGpoJLoO
VFwIxDEX2dXwkqILr4QZoSnYgLiNM89vdZ5xaQVT59IK45qpkFpkH2wCsLCWAR8UZA/hMCI7Y2p9
PFjcRNGBlvCtCZmSx3i2T3L83iMnaM0RPSO08iKG0M6gRvn+R+iP0VlxAzVF6L1Cp+PSplPO1gVk
MPUUTxfkwZgKVipGAoZs9wNN49FX5FOo1/7+DtmKYv26fuXI89iC29gF5D4oMLA98iKyVMuENu4J
M9TIxG0L2PriGPn5Y2JEmMT4T8uaZYmBuazTmguYG4iEvHT/EVw/Ittjeqfw7QVaqgRxr3x6gt99
D7UKEdUB+sdhsn4dUgnszbLbaQOAk+nCzkaw6TDmoNkOHOliTH4J4/IAZsXNz4gh2559czKpuHTc
VNo3akqBTSnnstOfA8CGg8UGceuy5oDjnlF5waUKwpCxzn0KnPpcOweX7pFF6DVx7ZJzFwXAddpD
ZgzIRcDHowutZ46hAL6Gf7OwGyYSy4Rdg8fVcL98k+U4PvBBd9mWhffWXvB3hHbYKicgrcPBRcYv
Pe5ZwriiWRvR4YwBKIZjHwrjTdCraekyx4/IFE9KP+dFOYLYj2IePTwZUPZUQsfQT0CBA5wGR653
WQsd4Tpusi/3o+e4Xq2tYvKIcnPIHvqAGEHxYahvisRwjufRnF2yzvE790P/RWc3q/+ac1iX70d9
M7jGQKYtDFqOrZZc+JL7BSIrcVlOdVK6Pl/JSK6HKZcGZoypCgorf1Wda9+/7j1XYZaa4azRWuog
5LFsU+RpWBqEPNvku3Nys9zneFAQ695bwfkElNgLR4GzOrYXOIxUyTNixWIljtzuNndVqeXh8NF9
tllEuTgEUcjEF2ENK4MrZh14xWHBK4pWfFLF+18DElBiL12NGAfQKpd2vT/dae53+CcHt6aQ/OFm
1WdsiRRbWspAldakBqAKHm6IKk1Lg1Dlc/AEZDkl78hrFzBofQH+3Czha4a5r/bIo/Juv6zm+6PN
3G9yj6OzeVxb1jvOr41EPYVkXR2K6yTO43n/tOBcuXfOUneCtrodD8hJ0y5MDj1Eb8hPmIOoK/Pg
uBH5kuwA7jckhQtveujfXlLUt5zZ+9mM8QRfjGouZxA2Z+mm2Jy1K5brsLmu2W5U4i1QqRjFKoB2
Ssa6c3fNvV2PZKOIOw3vTib+/Lcb2YsiwAUMtlVbaNrC3Wq9OKbFAeMBVDzELKNjYD391cQxAZmf
epvx+5663q3KrkmtezUmR95S613DYERTsl3EuOk7oquQ3S7Cxj8tC+gDv5SJew1ewe5eMdZM67+O
xOjEWI3NsTnpW72dR30yUVYnuvOQ994X8e76H/Fpek4KZW5kc3RyZWFtCmVuZG9iago5MwowCm9i
agoxNTg5CmVuZG9iago5NAowCm9iagpbCl0KZW5kb2JqCjkyCjAKb2JqCjw8Ci9Gb250Cjw8Ci9G
b250MwoxMwowClIKL0ZvbnQ2CjI1CjAKUgo+PgovUGF0dGVybgo8PAo+PgovWE9iamVjdAo8PAov
SW1hZ2U1CjI0CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBoYTAKMTAKMApSCi9BbHBoYTEKMTEK
MApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+
CmVuZG9iago5NQowCm9iago8PAovVHlwZQovUGFnZQovUGFyZW50CjEKMApSCi9NZWRpYUJveApb
CjAKMAo5NjAKNTQwCl0KL0NvbnRlbnRzCjk2CjAKUgovUmVzb3VyY2VzCjk3CjAKUgovQW5ub3Rz
Cjk5CjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQovQ1MKL0RldmljZVJHQgo+Pgo+Pgpl
bmRvYmoKOTYKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAo5OAowClIKPj4K
c3RyZWFtCnictVfNbttGEF6gPe1T9GgFKL3/P0AuLewa7iGNAAH5EXQImkaCTSdR2nfoMbnn4ENf
oS+QFn2vfrMklxuRsi1bkiBy9+PODHfmm5nVmstKcPp+3wysEbj/esXXHAMhowtWmLRic45FdLvi
JngXRBKv+4nyRisa1HxjQtcVf8bfwsiaH/9Qv1+9Enz5e3qX7vdheS/tK/7mEZ/iuy6US1LebBNq
pfLSV9FxZZ1RtvIKVpRVylcmFGBdgE5GKyrCeukey0bJrA6dS/tR8mc3obvWlQ7CeMOd15XQ2nQ+
NzEIHZXaMsT7/ziDktkHfvzTu7d/aC6hKn347M1mNKWsrIz48FkTrNlrfsT+YV8mfHbBT2f7tYcn
Vgpt7LjdzuYtjropdEpHY9rQWYRGOgqdiEaaqgTrAnRKOIApnlm8AHcPnlNVMN65JngqQmEOHmWI
CBhaZTEjX9oG1XuJ3d/sG/Yv+4Lffxh9y5bsZRnLfZkn5yCpDhZIA8YjBwLlm9XRVdFSqrvgNPJY
F2hdos6RhZSbhYYCLdL/cCaePUqlS8MzjtjWeE3EYCrvRqXgjePzq1fL3yw/eZf9trVARek95VMU
lqpaemsrdAHVPWSsQs02VJpauR7ZndvQnhihuO0bAbEIHlLeYuSNlN7ZETqZAIkhkXWEk0JBoDl4
/B2bsjl7PuERa47YasIXfPZzovFDrCEg1ik7tLkP0mb/uoAyYkwZmIwVkVFGB9NEqxMtoIfERioF
4koVdwuQVmMBqkTymCCilqXmr76wUB3Bq0vtlaNhUNqqeGcT2tFlwwCxQLCn7Bx17HjCfeKBxwRc
kDLNLjBSafSYnbLneHY64aEF5pieJOkTtsRCl/DFhOs0WHcrV1hzhlWPO65dsI8F2x66N+PkFgdm
990pOmhKsgmvGdiwjp4Ix52uqBij4ZSB+rOzNE5bLyoH8chBUCF8kOBtdK7yNMxY3WMeSWS8DMCy
7BhWyILM4DHt1DdbJVcGL2wIyoy4UrnKpc9gr1n72F6JM09zHBF000b09YSbNtof2Wf2GY8aQv2C
OnPBXoAvJ+wTruiXuGcaLTClxR2pLklrzI8WkJ2y9x10zq4T8c5wn6b7ZclWKJ/i+YuvNJLB603N
13jPBRZeJv0LqFoloVwMTcfhdKw9ggBRvGH2effyTybkx+bx1qTpqf41OxA6HPCkdbHjyZATd+fJ
jdiQJzsk3XamZP2jWVFm3xZO9lTDeT8dg4oNZ6zYiAuVbLFedgzrZWnD+9mu1a2haJvt3r/W3NwJ
pJF0Mj5gKxhYuFcvOEPinCKFXkJsXhaFdllf75sU29I9nuQkW0DZ/JC9wmmcBiMybujiAzQLHOBx
CLxPo5AWkshY5INNbQ3/HjJWF1jA+RnZ7kvyj4O99AFaxeZOd2kTO9fpTy3xVjf0k7uW3KF3d/D4
LeDA43uqQp3+TXbtUnBB6raYlfvNYLkNHyq7WV+3gL34/qoueounYmtRJNz4hm/9R0Hf/wERjqj8
CmVuZHN0cmVhbQplbmRvYmoKOTgKMApvYmoKMTEzMwplbmRvYmoKOTkKMApvYmoKWwo8PAovVHlw
ZQovQW5ub3QKL1N1YnR5cGUKL0xpbmsKL1JlY3QKWwo5MC43MjUwNDQKMzk0Ljk4NjU0Cjc2Mi44
MzM1Ngo0MTguOTg2NTQKXQovQm9yZGVyClsKMAowCjAKXQovQQo8PAovVHlwZQovQWN0aW9uCi9T
Ci9VUkkKL1VSSQooaHR0cHM6Ly9naXRsYWIuYXJtLmNvbS9hdXRvbW90aXZlLWFuZC1pbmR1c3Ry
aWFsL2FybS1hdXRvLXNvbHV0aW9ucy9zdy1yZWYtc3RhY2spCj4+Cj4+Cjw8Ci9UeXBlCi9Bbm5v
dAovU3VidHlwZQovTGluawovUmVjdApbCjkwLjcyNTA0NAozMTIuMTg2NTUKNDM1Ljc5NDc0CjMz
Ni4xODY1NQpdCi9Cb3JkZXIKWwowCjAKMApdCi9BCjw8Ci9UeXBlCi9BY3Rpb24KL1MKL1VSSQov
VVJJCihodHRwczovL2FybS1hdXRvLXNvbHV0aW9ucy5kb2NzLmFybS5jb20vKQo+Pgo+PgpdCmVu
ZG9iago5NwowCm9iago8PAovRm9udAo8PAovRm9udDMKMTMKMApSCi9Gb250NgoyNQowClIKPj4K
L1BhdHRlcm4KPDwKPj4KL1hPYmplY3QKPDwKL0ltYWdlNQoyNAowClIKPj4KL0V4dEdTdGF0ZQo8
PAovQWxwaGEwCjEwCjAKUgovQWxwaGExCjExCjAKUgo+PgovUHJvY1NldApbCi9QREYKL1RleHQK
L0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKMTAwCjAKb2JqCjw8Ci9UeXBlCi9Q
YWdlCi9QYXJlbnQKMQowClIKL01lZGlhQm94ClsKMAowCjk2MAo1NDAKXQovQ29udGVudHMKMTAx
CjAKUgovUmVzb3VyY2VzCjEwMgowClIKL0Fubm90cwoxMDQKMApSCi9Hcm91cAo8PAovUwovVHJh
bnNwYXJlbmN5Ci9DUwovRGV2aWNlUkdCCj4+Cj4+CmVuZG9iagoxMDEKMApvYmoKPDwKL0ZpbHRl
cgovRmxhdGVEZWNvZGUKL0xlbmd0aAoxMDMKMApSCj4+CnN0cmVhbQp4nK1Xv48bRRQe26F5DaIC
ISEUhcKOxNz8fDODaDglRkfFSQs5EUUoAs7W4Uu4gPgvKKCjCAgBJR0SEh1C/AMUNKHgX6CjoOCb
9fl2vd44y3l3Ze/s0+z75nu/5s0Zaako3y8vB94pPN87pTPCQOnE0StXzmi+Y1J+nJKLgaMqP19U
LyY4a/JgQY2X/D+nW3QPIGe099rio/ldRbOPSwzNkTGbMTTlyBt6MLsU0pyOr9Mh7rMakD4Hwg21
WjFHTNbaKyuNyxghKG3qskUlM+x14FL76tOaqAbYt+Jb10tzOWbr3MplxlsORoaw+Q2cs3dwenf2
gQ504365qG12MDZBbWIyKsJ6wWC9SSdvpYuVbFHJnFGOpc2yi29rspol+ld9bgs4X0WJ8FjaQhvj
Jbd8cmEK18kSMCSWZMg4xwYxmD3nrTJBck24qAsZQRpLR1VfV7ILW2RYG1cJV43KbFu95GdQSlrt
PbGTRnkkw8WU1Q8r3S8wvXhAe9P79z6xZJ3kfEUqjtez2lovnQ9YtQ157cUycYv36TaNhRJvilfF
bXEkRiJNKOToGos74sMJ3aHiDbpZVMZZg2TScQnJG5AuJBmsxcqbkOMJFSdZ6aXZJI2AMS5QiDI2
2Ty95DIha0oeBxWLywJWXJqAu3MJQWrrPUyJqAFQQuCuE3pWzCZUFrQxqN0Uh/if90eqHbgXJymt
wQvporL6rbQ+Ba0ePdWK2omTjtvUa5jKqGSxcCt5LRL2j/aPdjXaavlt+jstPj2hCHiPiut8IyGn
v7/+/PTP6T/TP3oksIGyc0RFK7VPIBB5M+2viHlO/AmlMqJOJtgRm/l/+SpmN0F7yBDABhQyVKqY
t711QlfFQc4QvazGSPt+eGxgdeJh1DYiirG7mJw5ATbHpmzq+l+4of+aPrz270vP9RddrUCdiOht
RLDb5s0WrYPWkpv6xRfikfhSPBxeFZ/3R6UVamf1Ck2h0d7mJgV5qJRthNeLKLiHOU3S+W4/7ye+
2vA60eFtdIyVnhPquksOaahwAFmjM/psgpkmzx0P/0bWLIejH0aPRj/12QC04XcLPLO1tBnpXIye
0M8jPRv6B4PBcPD14KnBMwPRV+C1I+3sqLxB2hADebRKyFBd1z78bvjt8Pvhz31x4FaUTt5AQefH
BbNFtCVWKRDnkxmutc5IvCXeHpwMXhHHokCn+ZV4V3yzwtwlc1rBVoqfcHrodrLz7HFeQU92iv4i
OWwtdeGiJmSjGMK1E1hd+P9PNOjHogvMjjigQuRus8ORRltpy2vDbvkQLb1OjRZP/IhDzK/iF/x+
w+iKmIl3uoXb46Ey6QAHtQJ2dlC+/wNvBlpvCmVuZHN0cmVhbQplbmRvYmoKMTAzCjAKb2JqCjEw
MTIKZW5kb2JqCjEwNAowCm9iagpbCl0KZW5kb2JqCjEwNQowCm9iago8PAovU3VidHlwZQovSW1h
Z2UKL0ludGVycG9sYXRlCnRydWUKL1dpZHRoCjEyMjQKL0hlaWdodAo2NjYKL0NvbG9yU3BhY2UK
L0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawoxMTIKMApSCi9GaWx0ZXIKL0RD
VERlY29kZQovTGVuZ3RoCjExMwowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sA
QwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkf
LTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgCmgTIAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAA
AAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQy
gZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVm
Z2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS
09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYH
CAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw
FWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5
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
82LGPMbG7bv98Z968V1Txr4q1ewlsdV8S63fWUuPMt7m/lljfBBGVZiDggH6gUAc/RRRQAUUUUAF
FFFABRRRQAV1fgX4feJ/Hf27/hFNM+3/AGLZ9o/0iKLZv3bfvsuc7G6Z6Vyla2heI9c8P+f/AGDr
OpaZ5+3zfsV08Pmbc7d20jOMnGemTQB9NeI/ht4qv/2c/C/gqz02KXxRpmoG9u9PF5AHhhd7vY5J
fbg7hjB5wf7px83+NfB2u+CNVi03xPY/Yb2WEXCR+dHLmMsyg5RiOqtxnPFe1eJviPff8M0eE/sX
jK5/4Sz+03+2eTqjfbfK3XOPMw3mbceX14+77V4Lret6rr10l1rmp32pXKII1lvLh5nVASQoLEnG
STj3NAGfRRRQAUUUUAFFFFABRRRQAV7X8J/g747/AOEq8G+JP7C/4kv22y1D7R9sg/1G9JN+3fu+
7zjGfbNeKV6L8MvH3iOz8aeE7W88WavBokGoWkcsUupSLbx26yICrAttEYUEEHjHtQB6X8b/AITe
NPG3xO1bxH4V0mLUtE1BLaS1u4r63CTILeNdy5kBxkHB79RxRXNfHv4j65/wtjXf+EU8Zal/Yv7j
7P8A2bqj/Z/9RHu2bG2/e3Zx3z3ooA8UooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiug8BeFL7xv4ssfD2lS20N7eeZ5b3LMsY2Rs5yVBPRT264rP8Q6VPoOv6npF48T3On3UtpK0R
JRnjcqSpIBxkHGQKAM+iiigAooooAKKKKACiiigAooooAKK7DTPh/quo/DTVvHEFxYrpOmXS2k0T
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
HGcYzg49K1fil4u/4Tvx3qfiT7D9g+2+V/o/m+bs2RJH97auc7M9B1oA5SiiigAooooAKKKKACii
igAroPAVr4dvfFljb+NL+50/QH8z7Tc2ylpExGxTACP1cKPungnp1rn6KAPsr4WaR8MrLwf46h8F
+IdS1HRbmy2a9cXYeOSztvJuMPCPs43ty3GDwM9QFbwX4oaN8K9O0C3l+HniXV9V1ZrpUlhvI2VF
h2OSwJhTncEHXuePTP8Ahx8Rf+EL8K+NNG/sv7b/AMJHZCz877R5f2f5JU3bdp3/AOtzjI+71548
/oAKKKKACiiigAooooAKKKKACvUPhfo3wr1HQLiX4h+JdX0rVlumSKGzjZkaHYhDEiF+dxcdew49
fL6KAPsr4p6R8Mr3wf4Fh8aeIdS07Rbay2aDcWgeSS8tvJt8vMPs52NwvGBwc9SVX5V8e2vh2y8W
X1v4Lv7nUNATy/s1zcqVkfMal8gonRyw+6OAOvWug+I/xF/4TTwr4L0b+y/sX/COWRs/O+0eZ9o+
SJN23aNn+qzjJ+91458/oAKKKKACiiigAooooAKKKKACvrD4SaH8IbDx/pt14A8UavqviiNLg2Nl
fK8UEz+RICHf7MNo27jntjoeh+T66v4W+Lv+EE8d6Z4k+w/b/sXm/wCj+b5W/fE8f3trYxvz0PSg
D1/4saD8Gv7V8ZXf/CWa3/wlnnXsv2Lym8n7buc+Xn7Pjb5nGd/T+LvXzrWt4s1f/hIPFWs6z5H2
f+0b2a88nfv8vzHL7d2BnGcZwM+lZNABRRRQAUUUUAFFFFABRRRQB2HwvsPBuo6/cRfEPVr7StJW
1Z4prNCztNvQBSBG/G0uenYc+v01oWkfDKP4GeIbDTfEOpTeAZb3fqOpyBxcwXIe12IifZ/mU4TJ
28Z75JT41r0DRviL/Zvwa13wF/Zfm/2perefbvtG3ysGE7fL28/6nruH3unHIAfFfS/h5pv9l/8A
Cttd1LV/M837b9tjK+VjZ5e3MUfXL569B07+f0UUAFFFFABRRRQAUUUUAFFFFAHsHgLQfg1e+E7G
48aeLNb0/X38z7TbW0TNGmJGCYIt36oFP3jyT06V7V8fNI+GWp+MLSb4m+IdS0bWlstkNvp4eWNr
YTS+W5P2dsMfmyM8HjkDcfjWvQPjX8Rf+Fm+KrXWf7L/ALM8iySz8n7R527a8j7t21cffxjHbrQB
x/iGLToNf1OLQ55bnSY7qVLOaUYeSEOQjMMDkrgngfQVn0UUAFFFFABRRRQAUUUUAFaHh6LTp9f0
yLXJ5bbSZLqJLyaIZeOEuA7KMHkLkjg/Q1n0UAfZXwD0j4ZaZ4wu5vhl4h1LWdaay2TW+oB4o1tj
NF5jg/Z1yw+XAzyeOAdw8V8e6D8GrLwnfXHgvxZreoa+nl/Zra5iZY3zIofJNunRCx+8OQOvSuf+
CnxF/wCFZeKrrWf7L/tPz7J7PyftHk7dzxvu3bWz9zGMd+tef0AFFFFABRRRQAUUUUAFFFFABXoH
wo0v4eal/an/AAsnXdS0jy/K+xfYoy3m53+ZuxFJ0wmOnU9e3n9FAH2VrukfDKT4GeHrDUvEOpQ+
AYr3fp2pxhzcz3Je63o6fZ/lUZfB2847YBf5l+KFh4N07X7eL4eatfarpLWqvLNeIVdZt7gqAY04
2hD07nn00NZ+Iv8AaXwa0LwF/Zflf2XetefbvtG7zcmY7fL28f67ruP3enPHn9ABRRRQAUUUUAFF
FFABRRRQAV9FfCfQfg1/avg27/4SzW/+Es86yl+xeU3k/bdyHy8/Z8bfM4zv6fxd6+da1vCer/8A
CP8AirRtZ8j7R/Z17DeeTv2eZ5bh9u7BxnGM4OPSgD6a+Leh/CG/8f6ldeP/ABRq+leKJEtzfWVi
rywQv5EYAR/sx3DbtOe+eg6Ar56+KXi7/hO/Hep+JPsP2D7b5X+j+b5uzZEkf3tq5zsz0HWigDlK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAor0D4CeHtL8VfFjQtG161+16bc+f5s
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
YAAHxrWhret6rr10l1rmp32pXKII1lvLh5nVASQoLEnGSTj3NAB4h1WfXtf1PV7xIkudQupbuVYg
QivI5YhQSTjJOMk1n0UUAFFFFABRRRQAUUUUAFaHh7VZ9B1/TNXs0ie50+6iu4llBKM8bhgGAIOM
gZwRWfRQB9lfAP4x+IPih4wu9E8QWmm21pb2X25H08TQyGSOaLaC3mnK/Mcr0YcHIJB8V8e/tAeK
vG/hO+8Parp+iQ2V55fmPbQyrINkiuMFpCOqjt0zXl+ia3qug3T3Wh6nfabcuhjaWzuHhdkJBKkq
QcZAOPYVn0AFFFFABRRRQAUUUUAFFFFABXoHwo+KuufDL+1P7BtdNuP7R8rzftsbvt8vft27XXH3
znOe1ef0UAfZWu/GPxBpnwM8PfEC3tNNbWtWvfsM8EgmNssaPdYKR+b8rfIMtnJ75AXHzL8UPiBq
vxI1+31fXLexguYLVbRVs0dUKK7sCQzMc5c9/Sufm1vVZ9Gg0ifU76TSbdzJDZPcOYI3O7LLGTtB
+ZuQP4j6ms+gAooooAKKKKACiiigAooooAK+ivhP+0B4q/tXwb4Q/s/RP7N86y0rzfJl87ytyRbs
+Zjdt5zjGe3avnWprS5ns7qG6s5pYLmB1kilicq8bqchlI5BBAIIoA+qvi38efE/w+8f6l4W0Wx0
ifTtNS3jhkvlnmnYNBG53uZQWOWPJ5Pck5NFfLWqalfavfy32q3tzfXsuPMuLmVpZHwABlmJJwAB
9AKKAKlFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBb0vTb7V7+Kx0qyub69lz5dv
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
OR2rz+igAooooAKKKKACiiigAooooAKKKKAPYPgp4x0Lw14B+J2m61ffZr3WdMFvYx+TI/nSeVcL
jKqQvMicsQOfY14/RRQAUUUUAFFFFABRRRQAUUUUAFFFFAHsHxr8Y6F4l8A/DHTdFvvtN7o2mG3v
o/JkTyZPKt1xllAbmN+VJHHuK8foooAKKKKACiiigAooooAKKKKACvQPgJ4h0vwr8WNC1nXrr7Jp
tt5/mzeW0m3dBIi/KoJPzMBwO9ef0UAdB8QtQtdX8f8AiXUtPl86yvNTubiCTaV3xvKzKcEAjII4
IzXP0UUAFFFFABRRRQAUUUUAFFFFABXsHhnxjoVl+zR4s8KXN9s1++1NLi3tfJkO+MNbEneF2j/V
vwSDx7ivH6KACiiigAooooAKKKKACiiigAooooAK9g/ag8Y6F438f6fqXhi++3WUWmR27yeTJFiQ
SysRh1B6MvOMc14/RQAUUUUAFFFFABRRRQAUUUUAFFFFAHsH7L/jHQvBHj/UNS8T332Gyl0yS3ST
yZJcyGWJgMIpPRW5xjivH6KKACiiigAooooAKKKKACiiigAooooA9g8TeMdCvf2aPCfhS2vt+v2O
pvcXFr5Mg2Rlrkg7yu0/6xOASefY14/RRQAUUUUAFFFFABRRRQAUUUUAFdB8PdQtdI8f+GtS1CXy
bKz1O2uJ5NpbZGkqsxwAScAHgDNc/RQB6B8e/EOl+Kvixrus6Ddfa9NufI8qby2j3bYI0b5WAI+Z
SOR2orz+igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOr+FvhH/hO/HemeG/t3
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
6j8NNJ8Dz29iuk6ZdNdwyojidnJlJDEttI/fN0UdB754+igAooooAKKKKACiiigAooooAKKKKAND
w9qs+g6/pmr2aRPc6fdRXcSyglGeNwwDAEHGQM4IrQ8e+K77xv4svvEOqxW0N7eeX5iWyssY2Rqg
wGJPRR365rn6KACiiigAooooAKKKKACiiigAooooA7DwV8QNV8H6B4n0jTLexltvENr9kumuEdnR
Nki5jIYAHErdQeg/Hj6KKACiiigAooooAKKKKACiiigAooooA7Dxt8QNV8YaB4Y0jU7exitvD1r9
ktWt0dXdNka5kJYgnES9AOp/Dj6KKACiiigAooooAKKKKACiiigAroPAXiu+8EeLLHxDpUVtNe2f
meWlyrNGd8bIchSD0Y9+uK5+igDQ8Q6rPr2v6nq94kSXOoXUt3KsQIRXkcsQoJJxknGSaz6KKACi
iigAooooAKKKKACiiigArsNM+IGq6d8NNW8DwW9i2k6ndLdzSujmdXBiICkNtA/cr1U9T7Y4+igA
ooooAKKKKACiiigAooooAKKKKACuw+KHxA1X4ka/b6vrlvYwXMFqtoq2aOqFFd2BIZmOcue/pXH0
UAFFFFABRRRQAUUUUAFFFFABRRRQB2Hwv+IGq/DfX7jV9Dt7Ge5ntWtGW8R2QIzoxICspzlB39a4
+iigAooooAKKKKACiiigAooooAKKKKAOw1P4garqPw00nwPPb2K6Tpl013DKiOJ2cmUkMS20j983
RR0Hvnj6KKACiiigAooooAKKKKACiiigArQ8ParPoOv6Zq9mkT3On3UV3EsoJRnjcMAwBBxkDOCK
z6KAOg8e+K77xv4svvEOqxW0N7eeX5iWyssY2RqgwGJPRR365orn6KACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
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
Pxi8d+KtCutG17Xftem3O3zYfscEe7awdfmVAR8yg8HtQB5/RRRQAUUUUAFFFFABRRRQAVraF4c1
zxB5/wDYOjalqfkbfN+xWrzeXuzt3bQcZwcZ64NZNdX4F+IPifwJ9u/4RTU/sH23Z9o/0eKXfs3b
fvq2Mb26Y60Aev8Aib4cX3/DNHhP7F4Nuf8AhLP7Tf7Z5Olt9t8rdc48zC+Ztx5fXj7vtXgut6Jq
ug3SWuuaZfabcugkWK8t3hdkJIDAMAcZBGfY19QeI/iT4qsP2c/C/jWz1KKLxRqeoGyu9QFnAXmh
R7vYhBTbgbRjA4yf7xz83+NfGOu+N9Vi1LxPffbr2KEW6SeTHFiMMzAYRQOrNzjPNAHP0UUUAFFF
FABRRRQAUUUUAFei/DLwD4jvPGnhO6vPCerz6JPqFpJLLLpsjW8lu0iEsxK7TGVJJJ4x7V51Xtfw
n+MXjv8A4Srwb4b/ALd/4kv22y0/7P8AY4P9RvSPZu2bvu8Zzn3zQAfHv4ca5/wtjXf+EU8G6l/Y
v7j7P/Zulv8AZ/8AUR7tmxdv3t2cd896K6X43/Fnxp4J+J2reHPCurRabomnpbR2tpFY25SFDbxt
tXMZOMk4HboOKKAPm+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK1vC3h7VPFW
u2ujaDa/a9Sud3lQ+Yse7apdvmYgD5VJ5PaqmrafdaRqt7puoReTe2cz288e4NskRirDIJBwQeQc
UAVKKKKACiiigAooooAKKKKACiiigAoroLLwdrt74Nv/ABXbWO/QLGYW9xdedGNkhKADYW3H/WJy
ARz7GufoAKKKKACiiigAooooAKKKKACiiigAoroPGvg7XfBGqxab4nsfsN7LCLhI/OjlzGWZQcox
HVW4zniufoAKKKKACiiigAooooAKKKKACiiug8FeDtd8b6rLpvhix+3XsUJuHj86OLEYZVJy7AdW
XjOeaAOfooooAKKKKACiiigAooooAKKKKACiiugvfB2u2Xg2w8V3Njs0C+mNvb3XnRnfIC4I2Btw
/wBW/JAHHuKAOfooooAKKKKACiiigAooooAKKKKACirek6fdavqtnpunxede3kyW8Ee4LvkdgqjJ
IAySOScVb8U+HtU8K67daNr1r9k1K22+bD5iybdyh1+ZSQflYHg96AMmiiigAooooAKKKKACiiig
AooooAKK6Dw34O13xLpWtalotj9pstGh+0X0nnRp5Me12zhmBbiN+FBPHuK5+gAooooAKKKKACii
igAooooAKKKKACiug8SeDtd8NaVoupa1Y/ZrLWYftFjJ50b+dHtRs4ViV4kThgDz7GufoAKKKKAC
iiigAooooAKKKKACiitbwt4e1TxVrtro2g2v2vUrnd5UPmLHu2qXb5mIA+VSeT2oAyaKt6tp91pG
q3um6hF5N7ZzPbzx7g2yRGKsMgkHBB5BxVSgAooooAKKKKACiiigAooooAKKK6Cy8Ha7e+Db/wAV
21jv0CxmFvcXXnRjZISgA2Ftx/1icgEc+xoA5+iiigAooooAKKKKACiiigAooooAKKK6Dxr4O13w
RqsWm+J7H7Deywi4SPzo5cxlmUHKMR1VuM54oA5+iiigAooooAKKKKACiiigAooooAKK6DwV4O13
xvqsum+GLH7dexQm4ePzo4sRhlUnLsB1ZeM55rn6ACiiigAooooAKKKKACiiigAooooAKK6C98Ha
7ZeDbDxXc2OzQL6Y29vdedGd8gLgjYG3D/VvyQBx7iufoAKKKKACiiigAooooAKKKKACiirek6fd
avqtnpunxede3kyW8Ee4LvkdgqjJIAySOScUAVKK1vFPh7VPCuu3Wja9a/ZNSttvmw+Ysm3codfm
UkH5WB4PeigD6a+Enwu8MeE/H+m63ovxH0jxLqNmlw8Ok2PkCe6JgkUqhNwRnBJ5445IGSOZ+LHw
p8K/2r4y1/8A4Wdon9pede339kYi87zdzv8AZ/8AX53bvk+7nPbtXlXwZ8V2Pgj4laP4h1WK5msr
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
p6WjLeIiuXWSRiQFZhjDjv60Aef+IbGDS9f1PT7O9iv7a1upYIruLGy4RXKiRcEjDAAjBPXqaz6K
KACiiigAooooAKKKKACtDw9Ywapr+mafeXsVhbXV1FBLdy42W6M4UyNkgYUEk5I6dRWfRQB9lfAP
4e+H/BPjC71Lw/4603xbdy2X2V7HT/JEkcbzRbpj+/b5VwM8ZweMnCnxXx78KfCvhrwnfatpXxO0
TXb238vy9PthF5k26RVONs7HgMW+6eFP1rP/AGeviBpXw38aXur65b309tPp72irZojOHaSNgSGZ
RjCHv6V5fQAUUUUAFFFFABRRRQAUUUUAFegfCjwNofjT+1P7e8aab4X+yeV5X20IftG/fu27pE+7
tGcZ+8Onfz+igD7K134e+H734GeHvClx460200WwvftUHiKTyfs15Iz3WYUHn/eXcc8444ydwX5l
+KHhTSvB+v2+n6H4nsfEttJarO13ZhNiOXdTGdruMgKD1/iHHr0Gv/EDStR+APhrwPBb3y6tpmoP
dzSuiCBkLXBAUhtxP75eqjofbPl9ABRRRQAUUUUAFFFFABRRRQAV9FfCf4U+Ff7V8G6//wALO0T+
0vOsr7+yMRed5u5H+z/6/O7d8n3c57dq+da2/BGqwaD400DV7xJXttP1C3u5ViALskcisQoJAzgH
GSKAPpX4t/C7wx4s8f6lretfEfSPDWo3iW7zaTfeQZ7UiCNQrkXAGcAHjjngkYJK8E+M3iux8b/E
rWPEOlRXMNleeT5aXKqsg2QohyFJHVT36YooA4qiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
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
jC703w/4F03wldxWX2p77T/JMkkaTRboT+4X5WyM85wOMHDDxXx78VvCviXwnfaTpXwx0TQr248v
y9QtjF5kO2RWONsCnkKV+8OGP0roP2Kf+Sp6r/2BZf8A0fBXz/QAUUUUAFFFFABRRRQAUUUUAFeg
fCjxzofgv+1P7e8F6b4o+1+V5X20oPs+zfu27o3+9uGcY+6Ovbz+igD7K134heH7L4GeHvFdx4F0
270W/vfssHh2Tyfs1nIr3WZkPkfebac8Y54wdxb5l+KHivSvGGv2+oaH4YsfDVtHarA1pZlNjuHd
jIdqIMkMB0/hHPp6h4y/5M28Cf8AYak/9DvK+f6ACiiigAooooAKKKKACiiigAr6K+E/xW8K/wBq
+DdA/wCFY6J/aXnWVj/a+YvO83cifaP9Rndu+f72c9+9fOtdX8J/+Sp+Df8AsNWX/o9KAPoX4t/F
Hwx4T8f6lomtfDjSPEuo2aW6TatfeQJ7omCNgzgW5GcEDjjjgAYAK8k/aj/5Lt4m/wC3X/0liooA
/9kKZW5kc3RyZWFtCmVuZG9iagoxMTIKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0aAox
MjI0Ci9IZWlnaHQKNjY2Ci9Db2xvclNwYWNlCi9EZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50
CjgKL0xlbmd0aAoxMTQKMApSCi9GaWx0ZXIKL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO3cTW/b
SrYFUPFLPbuWSMq5s5tuhJTd//8HPlukHlpBAdGA2wCNtSacbVZOHR3HRVqHw6f6tTrEVJc6F94m
w6tkWerkyptLkwuvL3vtluZHmwuPbmj1I7qhwbJEN7R6fQhv52BnNlOwSsdkeDMHm6edguHd1OXC
2ynYmXVyQ7v3Yy482ufNW3RDg2Wpk61YzQ81b6fkHPu12zmWHDXRcHOsqHuLzrFkt1zNsYJqMsf+
zBwrMseKzLEic+wZ5liROVZkjhV9nzl2Tc6xOTnHkuHNNdmZycO3bk62/ZycY8kNzZ6PJTe0eY9u
aHKOJVuxuq7dUt8043LdeJpVa3ibC2/HJhdeZ8sSXHmbrHm0W+poWS7RsiRbMbvyYHh0Q+/h9c/p
w9wfhuvH9dpve68l9HQY5uUm24bfQs+H8+0m5x2F30P7202GbcPHNbS/3eSybfh9xadEt/Rr6FL7
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
NAowCm9iago0ODY2CmVuZG9iagoxMDIKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQzCjEzCjAKUgov
Rm9udDYKMjUKMApSCi9Gb250MTgKMTA2CjAKUgovRm9udDE5CjEwNwowClIKL0ZvbnQyMAoxMDgK
MApSCi9Gb250MjEKMTA5CjAKUgovRm9udDIyCjExMAowClIKL0ZvbnQyMwoxMTEKMApSCj4+Ci9Q
YXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTE3CjEwNQowClIKL0ltYWdlNAoxNAowClIK
Pj4KL0V4dEdTdGF0ZQo8PAovQWxwaGEwCjEwCjAKUgovQWxwaGExCjExCjAKUgo+PgovUHJvY1Nl
dApbCi9QREYKL1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKMTE1CjAK
b2JqCjw8Ci9UeXBlCi9QYWdlCi9QYXJlbnQKMQowClIKL01lZGlhQm94ClsKMAowCjk2MAo1NDAK
XQovQ29udGVudHMKMTE2CjAKUgovUmVzb3VyY2VzCjExNwowClIKL0Fubm90cwoxMTkKMApSCi9H
cm91cAo8PAovUwovVHJhbnNwYXJlbmN5Ci9DUwovRGV2aWNlUkdCCj4+Cj4+CmVuZG9iagoxMTYK
MApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAoxMTgKMApSCj4+CnN0cmVhbQp4
nK1WS08bMRC2RE/zK3okSDh+PyQuraAoPQArrURJlANqSiIaHoH+EO6c21/QP1BV/V8de1/eDaXL
I9bG9nhe/mZszwo4ZRDadjHQimH/+QJWgAPGvXGaqcjRnSNT6C5AOWsci+LLZiKskiIMltCZhP8F
HMMlGlnB8N3yenHKYH4bbXDjDHIbHIo40gJu5s+ytICzLciwrRJDvDSEDdVyZoxDZs41k1SoYMNa
xkVKWzY0YTS3JmqvRBNSYvC1FR9vRbiUMVKpKmRCS2MFtXZdBoMzHF2czr9wC7tX0anHcBBOcm2p
BcEcomdF8FcL5Ty1uiEuE6JxTkrqHBJr6YRWYxHMSlelWTOKOVZNQo+Bo5hfmILUKKtNw1F96Oj7
HLnzGxh+uLr8JoGHveZn7SxGX7nn3AjgnkoDeZGo+QwmsEkYOSIjskHekDkZY39O5gOIGbNJdsg+
ro2xn5NPA/CRuECmA2RRcTYiO9XCOfkaZLksF/aRMSOTqPMIR0Fw1uJY4DepxXFBFGYbjRmZRg07
LbmN1uww6MY5r9WwcqXjzQCmkH+EvfxZKCoqOJ5D6ajuYtgLsykSesI7JQdJRN7i/sb4pTsL2H4v
VeJKlFog/rsDUKWaDJmyqDuLUP+owvEiGKSmghnrLIQMN4wxsQZGkVCcDGPgJujHPbpuo1+FyyNy
EoJfObuKImm07pApIHCCbSNu4ZAcNWmx6KTAohDfLtavK8aAU1vTtHQvOLEO/IuQsZJ6r50GvHB8
N0N6H5hxWOYuUm5xvhuxfELWFPvL4g7bEM3wfy+eqQQgFBuALKMwKaNgS513DSD11diCwgRXTfyt
4aEwVZTCe2cNkM0B5OfPRLnR6g3l2vtX08ylpwYV8vAgURlUd4K4wgwroUpHphjdxYiMsd8bgCuT
fRxTv5i1yLNwMpJI3yNliimaYYiK83rfI+qvE5+H9lsj+Z8369FXVHp8nDFAySvqudeSKpc+ojVN
CaYMlYFWyya0pJ54fdVlRYElFMMbXpQVBRdCU/OASF1QqF71RO2uNlpYrOrQX8G84oqmxGVCNOGe
pbzlcUp8ekVhBHXKGqPA4GUlwtHpU1NIKuNvLYNC6UY1953MIT/xVvlNfuH3p3rGep7Lf5oKm8aC
6GGDvVM1tL9bwh8pCmVuZHN0cmVhbQplbmRvYmoKMTE4CjAKb2JqCjg2OAplbmRvYmoKMTE5CjAK
b2JqClsKXQplbmRvYmoKMTE3CjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250MwoxMwowClIKL0ZvbnQ2
CjI1CjAKUgo+PgovUGF0dGVybgo8PAo+PgovWE9iamVjdAo8PAovSW1hZ2UxNwoxMDUKMApSCi9J
bWFnZTQKMTQKMApSCj4+Ci9FeHRHU3RhdGUKPDwKL0FscGhhMAoxMAowClIKL0FscGhhMQoxMQow
ClIKPj4KL1Byb2NTZXQKWwovUERGCi9UZXh0Ci9JbWFnZUIKL0ltYWdlQwovSW1hZ2VJCl0KPj4K
ZW5kb2JqCjEzCjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9UeXBlMAovQmFzZUZvbnQK
L01VRlVaWStDYWxpYnJpCi9FbmNvZGluZwovSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzClsK
MTIwCjAKUgpdCi9Ub1VuaWNvZGUKMTIxCjAKUgo+PgplbmRvYmoKMjUKMApvYmoKPDwKL1R5cGUK
L0ZvbnQKL1N1YnR5cGUKL1R5cGUwCi9CYXNlRm9udAovTVVGVVpZK0FyaWFsTVQKL0VuY29kaW5n
Ci9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMKWwoxMjQKMApSCl0KL1RvVW5pY29kZQoxMjUK
MApSCj4+CmVuZG9iago2NQowCm9iago8PAovVHlwZQovRm9udAovU3VidHlwZQovVHlwZTAKL0Jh
c2VGb250Ci9NVUZVWlkrQ291cmllck5ldwovRW5jb2RpbmcKL0lkZW50aXR5LUgKL0Rlc2NlbmRh
bnRGb250cwpbCjEyOAowClIKXQovVG9Vbmljb2RlCjEyOQowClIKPj4KZW5kb2JqCjEwNgowCm9i
ago8PAovVHlwZQovRm9udAovU3VidHlwZQovVHlwZTAKL0Jhc2VGb250Ci9NVUZVWlkrU2ltSGVp
Ci9FbmNvZGluZwovSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzClsKMTMyCjAKUgpdCi9Ub1Vu
aWNvZGUKMTMzCjAKUgo+PgplbmRvYmoKMTA3CjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBl
Ci9UeXBlMAovQmFzZUZvbnQKL01VRlVaWStNUy1QR290aGljCi9FbmNvZGluZwovSWRlbnRpdHkt
SAovRGVzY2VuZGFudEZvbnRzClsKMTM2CjAKUgpdCi9Ub1VuaWNvZGUKMTM3CjAKUgo+PgplbmRv
YmoKMTA4CjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9UeXBlMAovQmFzZUZvbnQKL01V
RlVaWStHdWxpbQovRW5jb2RpbmcKL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cwpbCjE0MAow
ClIKXQovVG9Vbmljb2RlCjE0MQowClIKPj4KZW5kb2JqCjEwOQowCm9iago8PAovVHlwZQovRm9u
dAovU3VidHlwZQovVHlwZTAKL0Jhc2VGb250Ci9NVUZVWlkrTWFuZ2FsCi9FbmNvZGluZwovSWRl
bnRpdHktSAovRGVzY2VuZGFudEZvbnRzClsKMTQ0CjAKUgpdCi9Ub1VuaWNvZGUKMTQ1CjAKUgo+
PgplbmRvYmoKMTEwCjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9UeXBlMAovQmFzZUZv
bnQKL01VRlVaWStWcmluZGEKL0VuY29kaW5nCi9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMK
WwoxNDgKMApSCl0KL1RvVW5pY29kZQoxNDkKMApSCj4+CmVuZG9iagoxMTEKMApvYmoKPDwKL1R5
cGUKL0ZvbnQKL1N1YnR5cGUKL1R5cGUwCi9CYXNlRm9udAovTVVGVVpZK0dhdXRhbWkKL0VuY29k
aW5nCi9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMKWwoxNTIKMApSCl0KL1RvVW5pY29kZQox
NTMKMApSCj4+CmVuZG9iagoxMjEKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0
aAoxNTYKMApSCj4+CnN0cmVhbQp4nIVUy6rbMBTc+yu0vF1crIcfCQRDuaWQRR807QfI0nFqaGyj
OIv8feUzTlrngmNI8FhzzoxG4qRv+0/7rh1F+j307kCjaNrOBzr3l+BI1HRsu0Rp4Vs3zoj/3ckO
SRqLD9fzSKd91/TJbifSH3HxPIarePno+5o+JOm34Cm03VG8/Ho7RHy4DMMfOlE3CplUlfDUxEZf
7PDVnkikXPa693G9Ha+vseYf4+d1IKEZK5hxvafzYB0F2x0p2cn4VGL3OT5VQp1/WJeoqhvASLi9
6tuK+20D9zGxj5RaVowyRpmqUMQstew20RzTpAdbV+sSDWgZSygFlP8vod9JqIJpagt2gVp00hof
63VdPW+m4VpdM8rluq7Gngxc5oprDcwYmMmLha561DVIp3gSYpbdgmD2kxCzEjSEmMFJ8STEjG67
YDZCzNEpRx6FXdfNkUeBEAt4Lhchmne6xWx2A7ZGrcVH6JbYSCmBcAvLZbKbRzMlzqG0XLuBNe2A
cDcM1rboqwkImhqb2M63yDOyE1NLZYAMI63Xz87i0Cz86M3CdvZo294TZ4RUcsjXSNRugea+tC7v
cKAOiRq5Lu8hWCMnP2cBM35ODWuE1MxCfhov0xS8zy53CSGOLR6VPK+mSdV2dJ+mQz9MVfz7C39R
iq4KZW5kc3RyZWFtCmVuZG9iagoxMjMKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xl
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
BHFybJbi468EXPpDswEs3AifTSxx07+/6v/rH/z/9gP8//9zGJH/dHfKGLcXLeWuhXANhKsh7IGw
G8IuCFdB2AlhB4TtEK6EsA3CVghbIGyG8H+qta+3occAjOPvXUZJGoq3RDsaRhnJqrel0iAXaejt
4m2QrPoDnFRktGgPmqgoKyMNLTKjUGhYGRUaChkf/RNdPdf1+R08R7+T+3v0DGMo93Ev93A3Q7iL
wdzJHQxiIAPoTwm3cxv/v1joRzF9uZU+9KYXPbmFHtzMTUdfOJSUupHu3MD1dKMrXejMdXSiIx24
lva0oy1taE0RrWjJNVzNVVzJFbTgcppzGZdyCRfTjKZcxIVcwPk0oTGNaMh5nEsD6lOPutShNrWo
yTmcTQ3OojrVKORMzqAqVTidylSiIhU4jfKcSjlOoSxlOJmTOJETiv71LU0pQkFBSdzlH/7mCH/x
J39wmEP8zkEOsJ99/Mav/MJe9rCbn/mJH/mBXXzPd3zLN3zNTnawnW18xZd8wVa28Dmf8Smb2cQn
fMxGPuJDPuB93uNdNvAOb7OedaxlDat5i1WsZAXLeZNlvMHrvMarLOUVXuYlXuQFlrCY53mORSxk
Ac/yDE8zn3nMZQ6zmcVTPMlMZjCdaUxlCpOZxEQm8ASPM55xjGUMo3mMR3mEhxnFQzzISEYwvKCk
6IHYf+w/9h/7j/3H/mP/sf/Yf+w/9h/7j/3H/mP/sf/Yf+w/96MB0YBoQDQgGhANiAZEA6IB0YBo
QDQgGhANiAZEA6IB0YBoQDQgGhANiAZEA6IB0YBoQDQgGhANiAZEA2L/sf/Yf2w/th/bj+3H9mP7
sf3Yfmw/tn+sO3ycn57H+geO81NY3Pc/+UiY5gplbmRzdHJlYW0KZW5kb2JqCjEyMAowCm9iago8
PAovVHlwZQovRm9udAovU3VidHlwZQovQ0lERm9udFR5cGUyCi9CYXNlRm9udAovTVVGVVpZK0Nh
bGlicmkKL0NJRFN5c3RlbUluZm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVyaW5nCihVQ1Mp
Ci9TdXBwbGVtZW50CjAKPj4KL0ZvbnREZXNjcmlwdG9yCjEyMgowClIKL0NJRFRvR0lETWFwCi9J
ZGVudGl0eQovRFcKNTQ5Ci9XClsKMApbCjUwNgowCjAKMjI2CjU3OApdCjUKMTEKMAoxMgpbCjU0
Mwo1MzMKMAo2MTUKMAo0ODgKXQoxOAoyMQowCjIyClsKNDU5CjYzMAo2MjMKMjUxCl0KMjYKMzAK
MAozMQpbCjUxOQo0MjAKODU0CjY0NQowCjY2MgpdCjM3CjQyCjAKNDMKWwo1MTYKMAo2NzIKNTQy
CjQ1OQo0ODcKNjQxCl0KNTAKNTMKMAo1NApbCjU2Nwo4ODkKNTE5CjQ4NwowCjAKNDc5Cl0KNjEK
NjcKMAo2OApbCjUyNQo0MjIKMAo1MjUKMAo0OTcKXQo3NAo3NwowCjc4ClsKMzA1CjQ3MAo1MjUK
MjI5Cl0KODIKODYKMAo4NwpbCjIzOQo0NTQKMjI5Cjc5OAo1MjUKMAo1MjcKXQo5NAo5OQowCjEw
MApbCjUyNQowCjAKMzQ4CjM5MQowCjMzNAo1MjUKXQoxMDgKMTExCjAKMTEyClsKNDUxCjcxNAo0
MzMKNDUyCjAKMAozOTUKXQoxMTkKMTQwCjAKMTQxClsKMjQ5CjAKMjY3CjI1MgpdCjE0NQoxNTQK
MAoxNTUKWwozODYKXQoxNTYKMTU4CjAKMTU5ClsKMzA2CjQ5OAowCjAKNDk4CjAKMzAzCjMwMwoz
MDYKMzA2Cl0KMTY5CjE3OQowCjE4MApbCjgzNAo1MDYKXQoxODIKMTkwCjAKMTkxCjIwMgo1MDYK
MjAzCjIwOQowCjIxMApbCjI0NAowCjAKMjg2CjMzNgowCjYzNgowCjAKNDk4Cl0KMjIwCjIyMgow
CjIyMwoyMjQKNDk4Cl0KPj4KZW5kb2JqCjEyMgowCm9iago8PAovVHlwZQovRm9udERlc2NyaXB0
b3IKL0ZvbnROYW1lCi9NVUZVWlkrQ2FsaWJyaQovRmxhZ3MKNAovRm9udEJCb3gKWwotOTcKLTE5
Mwo4NTkKODQ2Cl0KL0FzY2VudAo3NTAKL0Rlc2NlbnQKLTI1MAovSXRhbGljQW5nbGUKMAovQ2Fw
SGVpZ2h0CjYzMQovU3RlbVYKODAKL0ZvbnRGaWxlMgoxMjMKMApSCj4+CmVuZG9iagoxMjUKMApv
YmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAoxNTgKMApSCj4+CnN0cmVhbQp4nF2R
y26EMAxF9/mKLKeLESR0HgsUqZqqEos+VNoPyMPQSCVEISz4+zqhM51OJHAO19cydnFqHhtnIy3e
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
L1R5cGUKL0ZvbnQKL1N1YnR5cGUKL0NJREZvbnRUeXBlMgovQmFzZUZvbnQKL01VRlVaWStBcmlh
bE1UCi9DSURTeXN0ZW1JbmZvCjw8Ci9SZWdpc3RyeQooQWRvYmUpCi9PcmRlcmluZwooVUNTKQov
U3VwcGxlbWVudAowCj4+Ci9Gb250RGVzY3JpcHRvcgoxMjYKMApSCi9DSURUb0dJRE1hcAovSWRl
bnRpdHkKL0RXCjU1NgovVwpbCjAKWwo3NTAKXQoxCjEzNAowCjEzNQpbCjM1MApdCjEzNgo2NzQK
MAo2NzUKWwo1MDgKNjAyCjI0NgpdCjY3OAo2OTcKMAo2OTgKWwo2NDIKXQo2OTkKODE0CjAKODE1
ClsKMzk0Cl0KODE2CjkwOAowCjkwOQpbCjIwNwpdCjkxMAo5NDAKMAo5NDEKWwo0ODgKXQo5NDIK
OTUwCjAKOTUxClsKNTMwCl0KOTUyCjk4NgowCjk4NwpbCjM5NApdCl0KPj4KZW5kb2JqCjEyNgow
Cm9iago8PAovVHlwZQovRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lCi9NVUZVWlkrQXJpYWxNVAov
RmxhZ3MKNAovRm9udEJCb3gKWwotNjY0Ci0zMjQKMjAwMAoxMDA1Cl0KL0FzY2VudAo3MjgKL0Rl
c2NlbnQKLTIxMAovSXRhbGljQW5nbGUKMAovQ2FwSGVpZ2h0CjcxNgovU3RlbVYKODAKL0ZvbnRG
aWxlMgoxMjcKMApSCj4+CmVuZG9iagoxMjkKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUK
L0xlbmd0aAoxNjAKMApSCj4+CnN0cmVhbQp4nF1Qy2rDMBC86yv2mB6CFEEfByMIKQEf+qBuP0CW
1q4gloQsH/z3XclNCl2Q2GF2hmH4qX1uvcvA31MwHWYYnLcJ57Akg9Dj6Dw7SLDO5F9UfzPpyDiJ
u3XOOLV+CKxpgH8QOee0wu5oQ493jL8li8n5EXZfp45wt8R4wQl9BsGUAosDGb3o+KonBF5l+9YS
7/K6J83fxecaEWTFhy2MCRbnqA0m7UdkjaBR0JxpFENv//FiU/XDBungusorY751Kj73knyEeBhU
QU+PhKSQUm2ielX8Sw238GZJiXLXrmrgEtV5vNUZQyyq+n4Alv57XwplbmRzdHJlYW0KZW5kb2Jq
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
mNE8yZ2yJfWIRvwDivEG9VhPse4AKFZuUW6RYuEtU6xB6j8KIqyULZPcqUf4BxGWE+R4TzGllC0v
xV9zc6TxT/41NzevW9S8qFnV5l/zuvUAtU3UTM3rCCsoijU/3zJwGquzuR2wzTyjZXNzcF3fz1fN
60lpW6fQV8qvttZDMzdfGwTU/NePigwv9QHUNa9nr/ptDI1I2DQzmFBDysiIFqL/BYkkJZgKZW5k
c3RyZWFtCmVuZG9iagoxMjgKMApvYmoKPDwKL1R5cGUKL0ZvbnQKL1N1YnR5cGUKL0NJREZvbnRU
eXBlMgovQmFzZUZvbnQKL01VRlVaWStDb3VyaWVyTmV3Ci9DSURTeXN0ZW1JbmZvCjw8Ci9SZWdp
c3RyeQooQWRvYmUpCi9PcmRlcmluZwooVUNTKQovU3VwcGxlbWVudAowCj4+Ci9Gb250RGVzY3Jp
cHRvcgoxMzAKMApSCi9DSURUb0dJRE1hcAovSWRlbnRpdHkKL0RXCjYwMAovVwpbCjAKWwo2MDAK
MAo2MDAKXQpdCj4+CmVuZG9iagoxMzAKMApvYmoKPDwKL1R5cGUKL0ZvbnREZXNjcmlwdG9yCi9G
b250TmFtZQovTVVGVVpZK0NvdXJpZXJOZXcKL0ZsYWdzCjUKL0ZvbnRCQm94ClsKLTIxCi0zMDAK
NjIyCjk1MQpdCi9Bc2NlbnQKNjEyCi9EZXNjZW50Ci0xODgKL0l0YWxpY0FuZ2xlCjAKL0NhcEhl
aWdodAo1NzEKL1N0ZW1WCjgwCi9Gb250RmlsZTIKMTMxCjAKUgo+PgplbmRvYmoKMTMzCjAKb2Jq
Cjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMTYyCjAKUgo+PgpzdHJlYW0KeJxdUMtq
xDAMvPsrdNweFiemhT2YQNlSyKEPmvYDHFvJGhrbKM4hf1/F6W6hAhuNZ0aMJc/tUxt8BvlO0XaY
YfDBEc5xIYvQ4+iDqBU4b/MvKredTBKSzd06Z5zaMEShNcgPJudMKxweXezxTsg3ckg+jHD4OneM
uyWlb5wwZKhE04DDgQe9mPRqJgRZbMfWMe/zemTPn+JzTQiq4HoPY6PDORmLZMKIQldcDehnrkZg
cP/4anf1ww5ZcG3rK2MvhoS+Vw8nnnOySjW7rLxvE7eP3+LahYiTlu2UiFs4H/C2wBTT5irnB5PL
eLoKZW5kc3RyZWFtCmVuZG9iagoxMzUKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xl
bmd0aAoxNjMKMApSCj4+CnN0cmVhbQp4nO19a6hv23XX2Oeevdf79X/tfZ73/Upy703uyb23sTdN
k+YmaR5NE5u+SG1DmjRCYmKJaVKlraCgiA8CFkGx9Isg/RJqWwKVotIPFUSKnypE7QcFKQhSKQjS
XuccY/zmGHP9/yc90YqCcy/G/q/HXPMx5phjjteci86IqKGfo4do/uSXvvhI9exD/zXc+QdE137j
01/4ic+9/xe/+p+JHvp4uDf8xGe/8ulnn9v9drj+LNHZxz/zqU/8+L//H6/9DtH13wrPX/5MuHH2
R9ffSnQeLumJz3zui1/+S5/8L38jXD9B9J/+zWc//8lP0Hve/9eIfu+/09lvfPBzn/jyF/7891z7
Drr2j98d0j/yhZ/81BfOv/HhfxWufzxc//Lr5e//6z/6JbpGXwhw/fU/ev0/hOsLqqmlnkaaaUM7
OtAV3aTbdDfeue/zkOIByrobjn8ZqO52OK69/nv0MbpH30b/POT3nfQKvZ1epFfpG6//O/oB+hB1
9DDDV8OTnw41/Cx9nh4Jx81QYqxDhInoa8+86QMf/cHX3n3r0Ud/6Lk4Iq6Fmvw3+t2Q60NUEV0+
/tK96vH9vd/9zd+sf/VXh39d/bPw3vj6f6Tfp9+mJ0KZH6Xvpz9Dn6I/S58jeuXexX6/u6ieevrF
l1966fGLePbyy688/lj10uHeS299+t7LrxwuD0+HVC++sn/qcUvKCarwckwgr+nNy5ce3z91yXfi
o/D7ytPhVrz9lafOlumhi6W+qG7uz8f9jXpa5qY+W6rzi+H9Z7trddvW4/7axdTd6vtbf+/sorp+
0W6v103bjN306adf2XbX+6Wufn7ozutpfOzpp5/+2nj5t4aLa013vXpufnJzcTHemc+Ws9eu5uby
+vWm798Srv7KdP5QX1+rfiacj/P+1aapq/6yri8u6h89m8/efnn5F29X1w/b6+dfvLq4vr1RP7nf
P77fU+Rj59f+9o+8/Xd/7UenV/+AuniD6J++5yN/EH//xd/95X/4+h++/jv0On0jXPahLyRB/P+N
179BT5zR638Yzl/X++nvoR84i1QR/34uwZsDPBLgPMAQ4ELhTQH+lJ6fK+z1dxfgeoA6wKX+tsx5
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
UKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBA
gQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIF
ChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQo
UKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIF/qTh7OMF
ChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQo
UKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBA
gQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIF
ChQoUKBAgQIFChQoUKBAgQIFChQoUKBAgQIFChT4vwxnRJ//avh9C8W/cEUv0LPh5BP0y/HGO2+e
LWczvUjPnM1nIz0Tfif97c8Gek/4HfR6DNdXcv+fvOeZ7z37+tnrf/Vv0p2vvfiBj/7g137uzg99
/ezitc+Ef4+/++tn1+PZ9Xh2zmev/Vg4i5fX0uW1ePlQvLwWLx+Kl5SeUrw8i5cUL88ef/fZG+WP
6H8Cu4aoogplbmRzdHJlYW0KZW5kb2JqCjEzMgowCm9iago8PAovVHlwZQovRm9udAovU3VidHlw
ZQovQ0lERm9udFR5cGUyCi9CYXNlRm9udAovTVVGVVpZK1NpbUhlaQovQ0lEU3lzdGVtSW5mbwo8
PAovUmVnaXN0cnkKKEFkb2JlKQovT3JkZXJpbmcKKFVDUykKL1N1cHBsZW1lbnQKMAo+PgovRm9u
dERlc2NyaXB0b3IKMTM0CjAKUgovQ0lEVG9HSURNYXAKL0lkZW50aXR5Ci9EVwoxMDAwCi9XClsK
MApbCjEwMDAKXQoxCjg1MwowCjg1NApbCjEwMDAKXQpdCj4+CmVuZG9iagoxMzQKMApvYmoKPDwK
L1R5cGUKL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZQovTVVGVVpZK1NpbUhlaQovRmxhZ3MKNAov
Rm9udEJCb3gKWwotMTEKLTE1Ngo5OTYKODU5Cl0KL0FzY2VudAo4NTkKL0Rlc2NlbnQKLTE0MAov
SXRhbGljQW5nbGUKMAovQ2FwSGVpZ2h0CjY4NwovU3RlbVYKODAKL0ZvbnRGaWxlMgoxMzUKMApS
Cj4+CmVuZG9iagoxMzcKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAoxNjQK
MApSCj4+CnN0cmVhbQp4nF2Qz2rEIBDG7z7FHLeHxSTdpjkEoWwp5NA/NO0DGJ2kQqNizCFvXzN2
t1BB8cc338fM8HP32FkTgb8Fp3qMMBqrAy5uDQphwMlYVlagjYq/RK+apWc8mfttiTh3dnSsbYG/
J3GJYYPDg3YD3jD+GjQGYyc4fJ77xP3q/TfOaCMUTAjQOKagZ+lf5IzAyXbsdNJN3I7J81fxsXmE
irjMzSincfFSYZB2QtYW6Qhon9IRDK3+pxfZNYwZU8Hle3dR1JcMrD3Vuko5t8WpEkR1pjqTyqSI
xoaobna6LyVRI0WOp7y9k31h1zHVGkKakLZKo+1DGYvXxXvndxfdHy10hPsKZW5kc3RyZWFtCmVu
ZG9iagoxMzkKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAoxNjUKMApSCj4+
CnN0cmVhbQp4nO19eZhlx1Xfre7Xb99fv9fLbN2z9Oya0ewz2kbSSCONFtsxEhJybMngBYNBdoww
mEXeWGwssxjLkvEiI+wwwvHYQbFCwEJgs+QDHGFIQoxZQxwSviTmS0wS8n3KOfXOb+7vnb4tjWxh
+KP6+35d99atOnXq1KlTp86t914WsiyrZfdm01n3G+953VL259kfS85PCR5++d2vePUnrv/s7VkW
TmbZ1Le84lu/6+Vz72m2smz65wSnXvmyu77pz1/xx2/KsvL/kPJHXikZ4Y++/gezrLJD7re+8tWv
e33viU/vkfsbs3DH7Ld++zfelV179uey8NI75X7+1Xe9/u47Dk7PZ1O/9Hopv3T3a192979+7aH/
IvfvkTalTPaV/Q2yWfk/mw3l/yibk/9z2bz872Y9+d/L+vK/mUk/snbWkf+VrBqlUD//nyg89VSk
2ZAads3/z2V7lpeuObd058uXzmVfd9vyuSvWnQt33f6yU3vPhT2PZVPXbLn2zuv2npuS6+lrju09
Ny0XVcssyXVNM2fkYsYyy3Jd1syKXDQssyrXTc2sycWcZdblel4zG3Ixa5lNuR5qZksuFi2zLdfr
NLMjF23L7Mp1RzN7ctGzzL5c9zVzsOdcGPUO7z03uyd0f3nvueGeTJPRnrDU27LUv3bLtbfcdnzd
8u17z83tyXzW/J6la1Uk55buEpoL47tXjO8W9yydm999bknaWCeXC7sfe+pP5Hr9nqXseDi+99yG
Pct7z23c8/Gw/ppTH5/aIP+mN8q/0ib5N7Mk/8rL8q+yWf5Vt8i/2lb5V98m/xor8q+5Xf61dsi/
9k7519kl/7q75V9vj/zr75V/g4vk3+w++TfcL/9GF8u/uQPyb/6g/Fs4JP8WD8u/dUeukVHcJKwc
VVaOKSvHlZUTysolysqlysplysrlysoVyspJZeVKZeUqZeVqZeWUsnKNsnKtsnJaWblOWbleWTmj
rNygrNyorNykrNysrDxPWXm+svICYUWmYLb81P/L/iT7VzJbK9mmcxt3h5P1qZnpmZLclmZ2ZSfr
WWm6VA6VUAq7jg4PHt5+cLjl8P2PPP74P33ggcHjqrDT2exTf5n9UfbZ7Gh2dXZ9NqNUsiNHjxw+
tH1le7kyV9le3rJ5+8rhQ0ePXBEq248eOXpwVClXjhydK3eCZM2NOmE0NxrOSub2lUp5ODs3Onjg
6Mr20dyRo5srH203Gq257mx5MLPYb9Ybc+3O1K7SvjA1qFenwv7NpV17p9oL04NaJWzqDXr9Xa0r
6/3yVLkzqE8Na91KvzPdbsyOGq2pQ8NWuzGqNwab59rVlalRmBtOlfu96fJoZmppJnSnp8qV6d5g
4/pevzJ6fr2/oVqekrvu/Gh5RmXVlH4+lP22zP0Nk71UxuXy4AH0Qpg/Opp78dygXmuvP9RYWe7V
Ru3uuvmd3RfuOF4+tqM2N1js12thurdYqZba3Y3b18035h4uNRdaJZVpKes99b+z/5v9XjaT7csO
Z5dYe0K0ojJVgR5VIcXmt2weMyD/JOfoXJRuZGZcfi5y89jOzqi/udmrtwaDVrc6U2qUp2u17nDD
3IbRaDjVX6qVh81WudxstSvNY/1Rc9QfzHWb/dEHd11Su3Lpe3v1Ub9bahxYX56eOnO4uve66anR
9KalykxpOD9Vae56S73f7DUODerNuppDsbVD6cMns9/INmazkftHB73Z3tT0rp8fzorsd6kazOkY
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
wr+OzYdFnx6VPms7fxn704ztPTp57lhozUndMZSvPzP8tdADtK3/KTJVfDHGllvZ/xU8FvlsST3l
r5X9m8iPvqdtiuybsf+PRzl2s/8gevoF2e9/WuTzpWgL4/lwqduVfJXDnNRpZb8uff5LwZelrb+R
MfyrGOPYFfv5uNR9PM7tS+M5lM8Ifl1o/LjQ/Xl5rnr9cenzo6IPnxM+lB/t9yfk+qdEBz4n5R+T
dh6P7T/b/crXCnxOFD6DQm282nycGezb/McZuWWzUTh/1wiTv+vEn/FYDnlcsiNj14z24HMyV74s
MlYboPr6N9GujHXsi3HOt2M51avfjOdIcj9P3z/fF+/z9+pno18X17Hs2zM9n6O+vJZX+6fz7u7g
zt5l4zNg58/dme1E2orv/z8m9x8THj8mPIzvBw56vuCQIhScu5MZPS16MyfztC1zeC77F4IPCb1f
E1qfketrRffeK7qi8/kh0Zv/LnmfifOjI2UX4zz5FSmv71reL7T02SdlDfhbwUekix+O71p0PdgT
xj5vtPMhi772KMYZHxTaPyr0HhRZaXpjjJFqPHwonuxsdvKp/6OxcLkeZv9Dyn5A8F4p+15JHxQZ
3iXpjwudW6X9D8R1SPs0nb1V8P3Cw5ti+yr7e1TeYRxnHJ+He43QeU22TdC0653Zj0iqZ0NeK/bq
DZK+Pp4lKEteOb53vtti6A/Ls/fHd4uN7IPS7gOS6nu3HxV8RK7fJviA0dL47v3xeSP7GcF9gh8U
PEi4R+Spz5TOuwQfFhl8n9F8i/Rd+Xqftfve+H6ikf2snRv6KWtDn71V8M54JmuY/VMpr2d43inX
90c5N0SO5eySOL/8ubvxmbt0ri6dq0vn6tK5unSuLp2rS+fq0rm6dK4unatL5+rSubp0rq4c0rm6
dK4unatL5+rSubp0ri6dq0vn6tZ2GdK5ur9bXIis0rm6LJ2r4+u14Mqkc3XpXF06V5fO1aVzdelc
XTpXp3tVPbfwpNT9WbGnT4oN1fjkA2J7HxL/4TeF1s8K/SfjGbpW9vuCJ6TcbwveKNcPCbTu7ws+
LvvyzwiQ/kuhrfgDqT9GK+JxoftbkfYYvypt/WZsryap8tK0tBHzfknwebHZehbnDyT9c7nXZ58X
noAnhf7vG54U2RXh87IOAU9EOk3Jb8d+/arkfVzu/8D6+3k78/GEXH9cxuAhkavyqW3/quR/XNI/
iHzVBVUp1xU6tXiu7uck/Wi0J09/ru7dUu6J+D55RuRUk/t29ilp74GY3xY+KtmnZW3+pLT725HX
rvRP+WyIfBtxbJ6MZ8H0PE/n/Pg8mS1Kuih1m1GW+bi1hU5bytelPZV9O0LP42jM97fjOcZOlOWj
2aVS5qTk1WW8qnI9ltXP2hjqOPy+8PkRGfdHRRd+SdKPSt4T1g7kOpZ918alG+Wp76ufjHw05b4e
z7k8GeVej+kbJX0o9qspMpmNcn0i6tJs9pPS1hOio09a3x8Vmo8Lvd8Uuu+KZ2Zahefqnozl8nN1
74q61creK2Xele2P8cRHYpxpIXubnVP5mDz/SHxf0MzeKu2O15dFSXUup3N1OFf3eZHTvxP5fFjS
/yhj9HsyHr8rMvtjkflnRc7/VvI/K+X+UNLfjWfLLpWyja/iXJ3asnSuLp2r+wdzri6Mv0NQ8au2
xt9t+Low9hu/LuTfE/7dgfbMBcDzZyr3ldb/WBh/VyJ/Z6viyjC5f0H+TQVl+fu2Ffr9iO8QvN3K
vTKM/UCND+gZgmsNOi/1fckJe6bv4C8J47MPt5l8+f24Pj9tZS63MjcZrctN5vj+RaX5BuuH1tPv
dNR36viOykuszTvD2D/V74BUP0h9XnwXLb5rU20i9ij4fTl8HzowsnI6rscsT683hvx7KPEdnq2Q
//aG2lV8T2kl5HtFlecOoonvidd2VkL+3cHYs+A7ezeF/PdYdof8t+XwPdLLVB7fAT1H/V4xOtjz
4ftYeS+4PeTfR4z96H6qh/4eDZPrzkr4yr5/VvUB318KWr9r0PG/PeS6pzo9Q+lLqc6Xwvj7S78h
jHXGz9N3Gx/Qz3/I8/arnbvvsPQ6G4czluqcOmT930QpvlMee8vLrZ3tNI6KPQacy+Hf+l4Ik7/H
ibmjdgC/q4gy2LMiRlH4GZqQ79H870QVfoYm5PMR+rzD+qLjqjajSrI4Yn3cbOVUn7eaHGCnwK/a
qZMht1uLluqz643eNcaD0tF5i70j/94o5gDmAfaRnZDvxfn7pQckc8hzweqrrVw2gM+7wnhOqT1Y
ZxgZHyyzE4TdhOEaWLCyfZPXvMmoT/KFbm01Wale4OzYTdZXHWPdM+8yvmHbXxXGc1Vtq9rrr9bO
w1biczmwt7Cz+E57vYe9g2z+LuzYhX63sspJv1v59vC1+y5l9Pvv43uUky2/cFuufdptqY6f+l1X
2P0OSrcaELO60YA5ftzhOgNijLBbuww4i7DPoOOicwMxQsUxg5bTvWf8HGfIbSuwQti0BjgGudfy
tlmfdC6cMf5uNf50ruhaojp3jfG43vKutetlo7PP6p62fhTZd9U5nWMvofSA5Ss/zzdakCd4PWBA
XzHnMB4XG1Ae+XhXi+c7DS8K+TqJsfhGwza732fXOGOE2O/V1iecFYZdhRwhZ4zjRSa7bSbjndZP
LftCS7855GeCYW9OGW1dd7B+brXroyaPF9tYeRv/QpOp6vobBS8IYz3U/t0R8jO0N1nZV9jzV9vz
r9bGY45gbhyn8cQ4YvwuMr60H/84JBv/XNl4/P4FYvf8O0C85wLwGwz+t1Hwmy34rRD+XQb81gL2
XfjNrrq1Cx5QDr8fgTawR+Tfi2pSOx16puWgd1pujsqCHvrPNHCP84T47TDw638TBu8VWlSXf5OG
f+eHU7TH5z2YB/7NlibRx++1YayQX3ft4ncvZii/kY3/TiUkJCQkJCQkJCQkJCQkJCQkJCQkJCQk
JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk
JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk
JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk
JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk
JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkFCHscXhPMaZe9DXG7/3DwPSphISEhISEhISE
hISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhIRnhZBl
t34m/Ofspkz/Qvy/lGWlLOyL1zc8lp18wW3yv/eC2x4LT731XPaOdTEN77h93bnsrbff8FjIXnjb
uXAu3Hf7Jw4fynZ/4sDF8m/fRfJvz275t3OH/FvZJv+2bJZ/S5vk34b12e5fyDZmG7L112y55s5T
v5AtS6ub7HprtiXbbNfbs5Vsm13vynZmO+x6b7Yn223X+7N92UV2fTA7kF1s10eyw9mheP2J5z9P
Wr3pRvl35nr5d/pa+Xfqavl35Un5d/ll8u+SE/Lv2FFl7Hh2LDtqRC7NLslO2PUV2eXZZXZ9VXZl
dtKur8lOZVfb9XXZ6exau74hO5Ndb9c3i4hvtOsXZM/Pnhev/z90SWNiCmVuZHN0cmVhbQplbmRv
YmoKMTM2CjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9DSURGb250VHlwZTIKL0Jhc2VG
b250Ci9NVUZVWlkrTVMtUEdvdGhpYwovQ0lEU3lzdGVtSW5mbwo8PAovUmVnaXN0cnkKKEFkb2Jl
KQovT3JkZXJpbmcKKFVDUykKL1N1cHBsZW1lbnQKMAo+PgovRm9udERlc2NyaXB0b3IKMTM4CjAK
UgovQ0lEVG9HSURNYXAKL0lkZW50aXR5Ci9EVwoxMDAwCi9XClsKMApbCjEwMDAKXQoxCjE4MTI5
CjAKMTgxMzAKWwo5NDEKXQoxODEzMQoxODEzMwowCjE4MTM0ClsKNzA3Cl0KMTgxMzUKMTgxMzkK
MAoxODE0MApbCjEwMDAKXQoxODE0MQoxODE2NwowCjE4MTY4ClsKNzY1Cl0KMTgxNjkKMTgyMDEK
MAoxODIwMgpbCjc0NgpdCl0KPj4KZW5kb2JqCjEzOAowCm9iago8PAovVHlwZQovRm9udERlc2Ny
aXB0b3IKL0ZvbnROYW1lCi9NVUZVWlkrTVMtUEdvdGhpYwovRmxhZ3MKNAovRm9udEJCb3gKWwot
MTIxCi0xMzYKOTk2Cjg1OQpdCi9Bc2NlbnQKODU5Ci9EZXNjZW50Ci0xNDAKL0l0YWxpY0FuZ2xl
CjAKL0NhcEhlaWdodAo2NzkKL1N0ZW1WCjgwCi9Gb250RmlsZTIKMTM5CjAKUgo+PgplbmRvYmoK
MTQxCjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMTY2CjAKUgo+PgpzdHJl
YW0KeJxdkM9qwzAMxu9+Ch27Q0mcpqUFEygdgxz2h2V7AEdWMsPiGMc95O2nOGsHE9j4h/R9lpRd
6sfa2QjZWxixoQiddSbQNF4DErTUWydkAcZi/KV046C9yFjczFOkoXbdKJSC7J2TUwwzbM5mbOlB
ZK/BULCuh83npWFurt5/00AuQi6qCgx1bPSs/YseCLIk29aG8zbOW9b8VXzMnqBILNdmcDQ0eY0U
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+C8Myc/J9Fvmw9esZ5JZrvMpyd10kmmGzz+uFrlc5KL5
2Jw3Z82H5rQ5aY6bo+Z9827M2zGHzUHzpnnd7Dd7zW7zqnnZ7DQvmu1mq9lsnjcbzbNm1qw3a81q
87RZaZ40j5vl5lGzNObhmAdjpmMmY4Z5Ms/t8PvX8P3m/B/7u/QHYy0bjwplbmRzdHJlYW0KZW5k
b2JqCjE0MAowCm9iago8PAovVHlwZQovRm9udAovU3VidHlwZQovQ0lERm9udFR5cGUyCi9CYXNl
Rm9udAovTVVGVVpZK0d1bGltCi9DSURTeXN0ZW1JbmZvCjw8Ci9SZWdpc3RyeQooQWRvYmUpCi9P
cmRlcmluZwooVUNTKQovU3VwcGxlbWVudAowCj4+Ci9Gb250RGVzY3JpcHRvcgoxNDIKMApSCi9D
SURUb0dJRE1hcAovSWRlbnRpdHkKL0RXCjEwMDAKL1cKWwowClsKMTAwMApdCjEKNTU4NAowCjU1
ODUKWwoxMDAwCl0KNTU4Ngo1NjQ0CjAKNTY0NQpbCjEwMDAKXQo1NjQ2CjU2ODQKMAo1Njg1ClsK
MTAwMApdCjU2ODYKNTkwMAowCjU5MDEKWwoxMDAwCl0KNTkwMgo2MjY4CjAKNjI2OQpbCjEwMDAK
XQo2MjcwCjYyODQKMAo2Mjg1ClsKMTAwMApdCjYyODYKNjI5MAowCjYyOTEKWwoxMDAwCl0KNjI5
Mgo2OTE3CjAKNjkxOApbCjEwMDAKXQo2OTE5CjcyNDQKMAo3MjQ1ClsKMTAwMApdCjcyNDYKNzI1
NgowCjcyNTcKWwoxMDAwCl0KNzI1OAo3NDkxCjAKNzQ5MgpbCjEwMDAKXQo3NDkzCjkyMTEKMAo5
MjEyClsKMTAwMApdCjkyMTMKOTIzOQowCjkyNDAKWwoxMDAwCl0KOTI0MQoxMjc2NwowCjEyNzY4
ClsKMTAwMApdCjEyNzY5CjE4MDc2CjAKMTgwNzcKWwoxMDAwCl0KXQo+PgplbmRvYmoKMTQyCjAK
b2JqCjw8Ci9UeXBlCi9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUKL01VRlVaWStHdWxpbQovRmxh
Z3MKNAovRm9udEJCb3gKWwowCi0xNTAKMTAwMAo4NjMKXQovQXNjZW50Cjg1OAovRGVzY2VudAot
MTQxCi9JdGFsaWNBbmdsZQowCi9DYXBIZWlnaHQKMAovU3RlbVYKODAKL0ZvbnRGaWxlMgoxNDMK
MApSCj4+CmVuZG9iagoxNDUKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAox
NjgKMApSCj4+CnN0cmVhbQp4nF1Ry27DIBC88xUc00OEIW1VSxZSlaqSD32obj/AhrWLVAPC5OC/
7wJJmmYlWEY7M4KB7dun1ppI2XtwqoNIR2N1gMUdggI6wGQs4YJqo+IR5V3NvScMxd26RJhbOzrS
NJR94HCJYaWbR+0GuCHsLWgIxk5087XvEHcH739gBhtpRaSkGkY0eun9az8DZVm2bTXOTVy3qPlj
fK4eqMiYl8sop2HxvYLQ2wlIU2FJ2jxjSQJWX82rohrGApFwOvL/EzSqORphE6nV4l5e0ncnuvru
Q2bXhTbKjHRGu7uEhOAFwdEia/i1gx6Kw0NV3+pLZnpGSvuckTqEgPHkL8m5pESMhfOveeeTKq9f
WsCYewplbmRzdHJlYW0KZW5kb2JqCjE0NwowCm9iago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQov
TGVuZ3RoCjE2OQowClIKPj4Kc3RyZWFtCnic7VgLcFPXmf7PfUiyMPaVLNvCQvaVL/IDP2ThFwYH
C1syxobgB8QSREE2tjEDbBwgxEmaxqWBNTKkcZNSZsIQht3ubjavazbTmp00y4CbTFtIp7udLOkY
QkonpUuVzU5Jtw1I2v/ce2VsiCntZHa7M9yrz+ec///Pf/7XOfdeAwGAJBgCFoRNu3eJGZ9aXUg5
gjjcN7B5+4X93/lHAFIBwD+6edvjfesuPBsF0L2KYPp7u3o+PBP4CCBZRvmqfiSktDJLcXwFxwv6
t+8aLP3R7uMAc5MR57c9vKkr15nza4CsX+L8T7Z3DQ7wAd0rAI6fobw4sKN3IN/zh+/h+BqOo3wB
3woQPw8yHINn4Aq0wtNwjhSTTIW6n/9EZ+Caub74x7H62HruClsDN69z8AZ8B0ZhD+yEj+BLvTxL
2lrX3L96VUvzyqYVjT5vQ/1yT92y+2qXLqlZXF1V6SotKS7Icy6QcnOsFpOQOneOMcmg1/EcyxAo
9kmNIVHOC8lcntTUVELHUhcSuqYRQrKIpMaZMrIYUsTEmZIelOy7RdKjSnqmJIkg1kJtSbHok0T5
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
U8y+zqzrBxEHEaMUqj+qLYirUzV6WD3TbjvPDyf26Z34an/2HN4l/y724s19lcjrzL0GEJ9EOHk9
9Nx8T6J5i4qJeqTvMl+0x/4kvAht/HA8zg/Dy/wN6EG8rPQFeFm3Ux0z98MPOCcspXTuCNJ/rciq
/OGbctjfiPNcWj9Z/2+QhW2SAgHy2STUcwTaEaOorxlbBajfpPVHyWWK+HeRr/RxrVFFXuMr8qeV
+R6ctwDHI9i345pJ2Aq0jyhCv4B5Cs5i62X3wHFsOyhYEZoMK2AeP4Tv6FHoMaxE29E21NlJwX4b
DrFN0MS/DBXKGlE4iH40U53UD3zX/j7qoe/g5VwU1uH6hFkHP1Pe1ePQqcvCc7sNXMh7iT8Cv6Nj
7ivx31K9/H14/kXBjligxWKU2xWPM0dhL9IOIQbZRkXvS7qrsEdDJcr1qTm6HWg/KHkb1vKmAWOz
RUX8EiKOMiSRsy9Ah5Kz6VDzRutgVMvZbdBvxHZaHhPA/P0n5u4r2L6CODM9d7NgZAZoDtUasfN/
C5M0dvhceS1pP9bfYXWPK+8pL2h7uVvdR1/0bKGgz0rdL26h/z1cpfuH8cIk5q4KN5zl3v1H7ldI
aPrNJK5d/4f3D+/d9+6/jJsl9+579/+HW/1fJ7sbtkAShCEZ8MsNPNCO5M38o/ihRzyrFnC1OTnc
wpxsRCpnzdFzjhwekZHuyDEJjpw0syOHZRw5lrmOnBQEAUeOK5O40onLQlxziYshLoG4zMQFZIyB
+hOZJjIsyrltYWlQ9rQPjhnF4XEB1g2OMaReZuc7HEQ2t0DL2no5jWDbUS8zDX5okWvbW+Sk1g3+
MUKeDdhaxslz0wkBmRkeJ7BW5obHGWzMDes3+MfJPMrcazsJhIDcEtp7MCC32uWelg6/PGQPyIto
5zl7AHZqV9H0C8PzP6gzYNoKZW5kc3RyZWFtCmVuZG9iagoxNDQKMApvYmoKPDwKL1R5cGUKL0Zv
bnQKL1N1YnR5cGUKL0NJREZvbnRUeXBlMgovQmFzZUZvbnQKL01VRlVaWStNYW5nYWwKL0NJRFN5
c3RlbUluZm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVyaW5nCihVQ1MpCi9TdXBwbGVtZW50
CjAKPj4KL0ZvbnREZXNjcmlwdG9yCjE0NgowClIKL0NJRFRvR0lETWFwCi9JZGVudGl0eQovRFcK
NTc1Ci9XClsKMApbCjUwMApdCjEKMTQ0CjAKMTQ1ClsKNTc0CjcwNApdCjE0NwoxNTIKMAoxNTMK
Wwo2NzcKXQoxNTQKMTU2CjAKMTU3ClsKNTk5Cl0KMTU4CjIxOAowCjIxOQpbCjUyMQpdCjIyMAo1
NDQKMAo1NDUKWwoyNjAKXQpdCj4+CmVuZG9iagoxNDYKMApvYmoKPDwKL1R5cGUKL0ZvbnREZXNj
cmlwdG9yCi9Gb250TmFtZQovTVVGVVpZK01hbmdhbAovRmxhZ3MKNAovRm9udEJCb3gKWwotNjcz
Ci00OTYKMTIyMAoxMzM5Cl0KL0FzY2VudAoxMjQxCi9EZXNjZW50Ci00MzgKL0l0YWxpY0FuZ2xl
CjAKL0NhcEhlaWdodAo3NDEKL1N0ZW1WCjgwCi9Gb250RmlsZTIKMTQ3CjAKUgo+PgplbmRvYmoK
MTQ5CjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMTcwCjAKUgo+PgpzdHJl
YW0KeJxdUMtqwzAQvOsr9pgcgixDCwUjKCkBH/qgbj9AltaOoJaELB/8913JSfoQSKthZpad5cf2
qXU2AX+LXneYYLDORJz9EjVCj6N1TNRgrE4XVF49qcA4mbt1Tji1bvCsaYC/EzmnuMLu0fge94y/
RoPRuhF2n8eOcLeE8IUTugQVkxIMDtToWYUXNSHwYju0hnib1gN5fhQfa0CoCxbbMNobnIPSGJUb
kTUVHQnNiY5k6Mw/vtpc/bBBEly/4i/TVKI0olLn8qDu5W95fZXrs4pFfbfJtMxIiIJ6vJiKKo+T
t3bLqpcYKWZZbcmXk1mHt+0HH7Kr3G8UL4l0CmVuZHN0cmVhbQplbmRvYmoKMTUxCjAKb2JqCjw8
Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMTcxCjAKUgo+PgpzdHJlYW0KeJztWWt0VFWW
3ue+qhJCpZLKo0gRcyvXJIQkBJJKQoWYlEkqFARJQohUwUASSTDQIjg8WhjRuBrbWAQHB0ZW07ag
2NK+b4mPoG2L3ahtI+q0jo9uH/Ro91o9Gh3twVEhqfnOvTcx+Fiunukfs9Zwk6/O3vucve85397n
3FsJMSJKoH4Sybly80bVc7jwCVhuIRLUVesvXbvhZU2H/HMim3zpZVtWfVByzcNwOEYk39nX293z
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
bUluZm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVyaW5nCihVQ1MpCi9TdXBwbGVtZW50CjAK
Pj4KL0ZvbnREZXNjcmlwdG9yCjE1MAowClIKL0NJRFRvR0lETWFwCi9JZGVudGl0eQovRFcKMTAz
MwovVwpbCjAKWwo2ODAKXQoxCjI1NQowCjI1NgpbCjUyMAo1ODcKNTg3CjAKMAo1ODcKXQoyNjIK
MjcyCjAKMjczClsKMjU3Cl0KMjc0CjQxNAowCjQxNQpbCjI2NQpdCl0KPj4KZW5kb2JqCjE1MAow
Cm9iago8PAovVHlwZQovRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lCi9NVUZVWlkrVnJpbmRhCi9G
bGFncwo0Ci9Gb250QkJveApbCi01NjIKLTM3OQoxMzI4Cjk4NApdCi9Bc2NlbnQKOTg0Ci9EZXNj
ZW50Ci0zNzkKL0l0YWxpY0FuZ2xlCjAKL0NhcEhlaWdodAo2NDIKL1N0ZW1WCjgwCi9Gb250Rmls
ZTIKMTUxCjAKUgo+PgplbmRvYmoKMTUzCjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9M
ZW5ndGgKMTcyCjAKUgo+PgpzdHJlYW0KeJyNks1qxCAUhfc+hcvpYnBMMoFCCJQphSz6Q9M+gNGb
VGhUjFnk7XujM9PpLIYKRg/3O0fJlR2ax8boQNmbt7KFQHttlIfJzl4C7WDQhvCMKi3DUcWvHIUj
DM3tMgUYG9NbUlWUvWNxCn6hmwdlO7gj7NUr8NoMdPN5aFG3s3PfMIIJdEfqmiroMehZuBcxAmXR
tm0U1nVYtuj5JT4WBzSLmqfLSKtgckKCF2YAUu1w1LR6wlETMOqqvkuurk8SgdOW/61g0L7AIFzK
dZFZWV/i+QmXX8JHuksY1FH1UeVZVGWKyOEYET38OuEeIlXwm5Tg/6B4LtKJ+5tUmahC4b37S3L9
cWt/z12Rs/fYkPgIYifWHmgD53firFtdcf4Afma8DQplbmRzdHJlYW0KZW5kb2JqCjE1NQowCm9i
ago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjE3MwowClIKPj4Kc3RyZWFtCnic7VkL
WFTXtV57n3NmBhAYYHgIKGc48n4MzPBwEGF4DIKooKIOIDoYQEg0EnxEozFo1JrRJNYYkjZGiTEP
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
TVVGVVpZK0dhdXRhbWkKL0NJRFN5c3RlbUluZm8KPDwKL1JlZ2lzdHJ5CihBZG9iZSkKL09yZGVy
aW5nCihVQ1MpCi9TdXBwbGVtZW50CjAKPj4KL0ZvbnREZXNjcmlwdG9yCjE1NAowClIKL0NJRFRv
R0lETWFwCi9JZGVudGl0eQovRFcKNTE5Ci9XClsKMApbCjUwMApdCjEKODMKMAo4NAo4Ngo2OTAK
ODcKOTAKMAo5MQpbCjEwNTMKXQo5Mgo5NAowCjk1ClsKNjkwCl0KOTYKMTAxCjAKMTAyClsKMzAy
CjAKMAozNzAKXQoxMDYKMTU3CjAKMTU4ClsKMzY4CjAKMAozNTMKXQoxNjIKMzEzCjAKMzE0ClsK
NjkwCl0KMzE1CjM2MQowCjM2MgpbCjMxMwpdCl0KPj4KZW5kb2JqCjE1NAowCm9iago8PAovVHlw
ZQovRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lCi9NVUZVWlkrR2F1dGFtaQovRmxhZ3MKNAovRm9u
dEJCb3gKWwotMTQ2MQotODEyCjE3MjIKMTEzNApdCi9Bc2NlbnQKOTIzCi9EZXNjZW50Ci04MTIK
L0l0YWxpY0FuZ2xlCjAKL0NhcEhlaWdodAo2NjAKL1N0ZW1WCjgwCi9Gb250RmlsZTIKMTU1CjAK
Ugo+PgplbmRvYmoKMTU2CjAKb2JqCjQ5NQplbmRvYmoKMTU3CjAKb2JqCjE5Nzg0CmVuZG9iagox
NTgKMApvYmoKMjk0CmVuZG9iagoxNTkKMApvYmoKMTE1MTQKZW5kb2JqCjE2MAowCm9iagoyNDIK
ZW5kb2JqCjE2MQowCm9iago1NTc4CmVuZG9iagoxNjIKMApvYmoKMjM2CmVuZG9iagoxNjMKMApv
YmoKMTc4MjUKZW5kb2JqCjE2NAowCm9iagoyNTgKZW5kb2JqCjE2NQowCm9iagoyMDU1NAplbmRv
YmoKMTY2CjAKb2JqCjI3MAplbmRvYmoKMTY3CjAKb2JqCjI2NDI1CmVuZG9iagoxNjgKMApvYmoK
MjcyCmVuZG9iagoxNjkKMApvYmoKMzg2OAplbmRvYmoKMTcwCjAKb2JqCjI1MgplbmRvYmoKMTcx
CjAKb2JqCjQ2NDAKZW5kb2JqCjE3MgowCm9iagoyOTIKZW5kb2JqCjE3MwowCm9iago1NDU3CmVu
ZG9iagoxCjAKb2JqCjw8Ci9UeXBlCi9QYWdlcwovS2lkcwpbCjUKMApSCjE5CjAKUgoyOQowClIK
MzQKMApSCjQzCjAKUgo2MAowClIKNzAKMApSCjc5CjAKUgo5MAowClIKOTUKMApSCjEwMAowClIK
MTE1CjAKUgpdCi9Db3VudAoxMgo+PgplbmRvYmoKeHJlZgowIDE3NAowMDAwMDAwMDAyIDY1NTM1
IGYgCjAwMDA2NjMwMjkgMDAwMDAgbiAKMDAwMDAwMDAwMCAwMDAwMCBmIAowMDAwMDAwMDE2IDAw
MDAwIG4gCjAwMDAwMDAxNDIgMDAwMDAgbiAKMDAwMDAwMDI1NyAwMDAwMCBuIAowMDAwMDAwNDIy
IDAwMDAwIG4gCjAwMDAxMTQwMTEgMDAwMDAgbiAKMDAwMDAwMTM0NiAwMDAwMCBuIAowMDAwMDAx
MzY1IDAwMDAwIG4gCjAwMDAwMDEzODQgMDAwMDAgbiAKMDAwMDAwMTQyMiAwMDAwMCBuIAowMDAw
MDAxNDU2IDAwMDAwIG4gCjAwMDA1MzYxNDkgMDAwMDAgbiAKMDAwMDEwODMzNSAwMDAwMCBuIAow
MDAwMTEyMjI3IDAwMDAwIG4gCjAwMDAxMTIyNTAgMDAwMDAgbiAKMDAwMDExMzk2OSAwMDAwMCBu
IAowMDAwMTEzOTkwIDAwMDAwIG4gCjAwMDAxMTQyMTMgMDAwMDAgbiAKMDAwMDExNDM4MiAwMDAw
MCBuIAowMDAwMTIwMDY5IDAwMDAwIG4gCjAwMDAxMTU2NDUgMDAwMDAgbiAKMDAwMDExNTY2NiAw
MDAwMCBuIAowMDAwMTE1Njg2IDAwMDAwIG4gCjAwMDA1MzYyOTUgMDAwMDAgbiAKMDAwMDExODcy
NyAwMDAwMCBuIAowMDAwMTIwMDI3IDAwMDAwIG4gCjAwMDAxMjAwNDggMDAwMDAgbiAKMDAwMDEy
MDI3MSAwMDAwMCBuIAowMDAwMTIwNDQwIDAwMDAwIG4gCjAwMDAxMjIwNDcgMDAwMDAgbiAKMDAw
MDEyMjAwNiAwMDAwMCBuIAowMDAwMTIyMDI3IDAwMDAwIG4gCjAwMDAxMjIyNDkgMDAwMDAgbiAK
MDAwMDEyMjQxOCAwMDAwMCBuIAowMDAwMjM3MDIyIDAwMDAwIG4gCjAwMDAxMjMzNDUgMDAwMDAg
biAKMDAwMDEyMzM2NSAwMDAwMCBuIAowMDAwMTIzMzg1IDAwMDAwIG4gCjAwMDAyMDQyODcgMDAw
MDAgbiAKMDAwMDIzNjk3OCAwMDAwMCBuIAowMDAwMjM3MDAwIDAwMDAwIG4gCjAwMDAyMzcyMzkg
MDAwMDAgbiAKMDAwMDIzNzQwOCAwMDAwMCBuIAowMDAwMjU5NDA3IDAwMDAwIG4gCjAwMDAyNDE0
MTIgMDAwMDAgbiAKMDAwMDI0MTQzMyAwMDAwMCBuIAowMDAwMjQxNDUzIDAwMDAwIG4gCjAwMDAy
NDI1NDMgMDAwMDAgbiAKMDAwMDI0NTIzMCAwMDAwMCBuIAowMDAwMjQ3NjA1IDAwMDAwIG4gCjAw
MDAyNTAzODYgMDAwMDAgbiAKMDAwMDI1MDQwNiAwMDAwMCBuIAowMDAwMjU1MjU1IDAwMDAwIG4g
CjAwMDAyNTUyNzYgMDAwMDAgbiAKMDAwMDI1OTMyMyAwMDAwMCBuIAowMDAwMjU5MzQ0IDAwMDAw
IG4gCjAwMDAyNTkzNjUgMDAwMDAgbiAKMDAwMDI1OTM4NiAwMDAwMCBuIAowMDAwMjU5NjU1IDAw
MDAwIG4gCjAwMDAyNTk4MjQgMDAwMDAgbiAKMDAwMDMzODkwNiAwMDAwMCBuIAowMDAwMjYwODMw
IDAwMDAwIG4gCjAwMDAyNjA4NTAgMDAwMDAgbiAKMDAwMDUzNjQ0MSAwMDAwMCBuIAowMDAwMjYw
ODcwIDAwMDAwIG4gCjAwMDAzMDIzMTkgMDAwMDAgbiAKMDAwMDMzODg2MiAwMDAwMCBuIAowMDAw
MzM4ODg0IDAwMDAwIG4gCjAwMDAzMzkxMjUgMDAwMDAgbiAKMDAwMDMzOTI5NCAwMDAwMCBuIAow
MDAwNDY4MTA0IDAwMDAwIG4gCjAwMDAzNDA2MzYgMDAwMDAgbiAKMDAwMDM0MDY1NyAwMDAwMCBu
IAowMDAwMzQwNjc3IDAwMDAwIG4gCjAwMDA0Mjg4MDkgMDAwMDAgbiAKMDAwMDQ2ODA2MCAwMDAw
MCBuIAowMDAwNDY4MDgyIDAwMDAwIG4gCjAwMDA0NjgzMjMgMDAwMDAgbiAKMDAwMDQ2ODQ5MiAw
MDAwMCBuIAowMDAwNDg3OTM4IDAwMDAwIG4gCjAwMDA0NzA0MjMgMDAwMDAgbiAKMDAwMDQ3MDQ0
NCAwMDAwMCBuIAowMDAwNDcwNDY0IDAwMDAwIG4gCjAwMDA0Nzk2MzQgMDAwMDAgbiAKMDAwMDQ4
MzM4NCAwMDAwMCBuIAowMDAwNDg3ODc1IDAwMDAwIG4gCjAwMDA0ODc4OTYgMDAwMDAgbiAKMDAw
MDQ4NzkxNyAwMDAwMCBuIAowMDAwNDg4MTg4IDAwMDAwIG4gCjAwMDA0ODgzNTcgMDAwMDAgbiAK
MDAwMDQ5MDA2MyAwMDAwMCBuIAowMDAwNDkwMDIyIDAwMDAwIG4gCjAwMDA0OTAwNDMgMDAwMDAg
biAKMDAwMDQ5MDI2NSAwMDAwMCBuIAowMDAwNDkwNDM0IDAwMDAwIG4gCjAwMDA0OTIwODYgMDAw
MDAgbiAKMDAwMDQ5MTY0MyAwMDAwMCBuIAowMDAwNDkxNjY0IDAwMDAwIG4gCjAwMDA0OTIyODgg
MDAwMDAgbiAKMDAwMDQ5MjQ2MSAwMDAwMCBuIAowMDAwNTM0NDUyIDAwMDAwIG4gCjAwMDA0OTM1
NTEgMDAwMDAgbiAKMDAwMDQ5MzU3MyAwMDAwMCBuIAowMDAwNDkzNTk0IDAwMDAwIG4gCjAwMDA1
MzY1OTAgMDAwMDAgbiAKMDAwMDUzNjczNiAwMDAwMCBuIAowMDAwNTM2ODg2IDAwMDAwIG4gCjAw
MDA1MzcwMzEgMDAwMDAgbiAKMDAwMDUzNzE3NyAwMDAwMCBuIAowMDAwNTM3MzIzIDAwMDAwIG4g
CjAwMDA1MjkzNzkgMDAwMDAgbiAKMDAwMDUzNDQwNyAwMDAwMCBuIAowMDAwNTM0NDMwIDAwMDAw
IG4gCjAwMDA1MzQ3NjggMDAwMDAgbiAKMDAwMDUzNDk0MSAwMDAwMCBuIAowMDAwNTM1OTI5IDAw
MDAwIG4gCjAwMDA1MzU4ODcgMDAwMDAgbiAKMDAwMDUzNTkwOCAwMDAwMCBuIAowMDAwNTU3OTA1
IDAwMDAwIG4gCjAwMDA1Mzc0NzAgMDAwMDAgbiAKMDAwMDU1ODczOSAwMDAwMCBuIAowMDAwNTM4
MDQzIDAwMDAwIG4gCjAwMDA1NzA4OTkgMDAwMDAgbiAKMDAwMDU1ODkzNSAwMDAwMCBuIAowMDAw
NTcxMzA2IDAwMDAwIG4gCjAwMDA1NTkzMDcgMDAwMDAgbiAKMDAwMDU3NzQ4MSAwMDAwMCBuIAow
MDAwNTcxNTA1IDAwMDAwIG4gCjAwMDA1Nzc3MTUgMDAwMDAgbiAKMDAwMDU3MTgyNSAwMDAwMCBu
IAowMDAwNTk2MTMxIDAwMDAwIG4gCjAwMDA1Nzc5MTQgMDAwMDAgbiAKMDAwMDU5NjM3OCAwMDAw
MCBuIAowMDAwNTc4MjI4IDAwMDAwIG4gCjAwMDA2MTc1NDEgMDAwMDAgbiAKMDAwMDU5NjU3MyAw
MDAwMCBuIAowMDAwNjE3OTA4IDAwMDAwIG4gCjAwMDA1OTY5MDkgMDAwMDAgbiAKMDAwMDY0NDk1
OSAwMDAwMCBuIAowMDAwNjE4MTA4IDAwMDAwIG4gCjAwMDA2NDU1NzYgMDAwMDAgbiAKMDAwMDYx
ODQ1NiAwMDAwMCBuIAowMDAwNjUwMDYzIDAwMDAwIG4gCjAwMDA2NDU3NjcgMDAwMDAgbiAKMDAw
MDY1MDM5OSAwMDAwMCBuIAowMDAwNjQ2MTE3IDAwMDAwIG4gCjAwMDA2NTU2NDYgMDAwMDAgbiAK
MDAwMDY1MDU5OCAwMDAwMCBuIAowMDAwNjU1OTUxIDAwMDAwIG4gCjAwMDA2NTA5MjggMDAwMDAg
biAKMDAwMDY2MjA1MyAwMDAwMCBuIAowMDAwNjU2MTQ4IDAwMDAwIG4gCjAwMDA2NjI0MzcgMDAw
MDAgbiAKMDAwMDY1NjUxOCAwMDAwMCBuIAowMDAwNjYyNjM3IDAwMDAwIG4gCjAwMDA2NjI2NTgg
MDAwMDAgbiAKMDAwMDY2MjY4MSAwMDAwMCBuIAowMDAwNjYyNzAyIDAwMDAwIG4gCjAwMDA2NjI3
MjUgMDAwMDAgbiAKMDAwMDY2Mjc0NiAwMDAwMCBuIAowMDAwNjYyNzY4IDAwMDAwIG4gCjAwMDA2
NjI3ODkgMDAwMDAgbiAKMDAwMDY2MjgxMiAwMDAwMCBuIAowMDAwNjYyODMzIDAwMDAwIG4gCjAw
MDA2NjI4NTYgMDAwMDAgbiAKMDAwMDY2Mjg3NyAwMDAwMCBuIAowMDAwNjYyOTAwIDAwMDAwIG4g
CjAwMDA2NjI5MjEgMDAwMDAgbiAKMDAwMDY2Mjk0MyAwMDAwMCBuIAowMDAwNjYyOTY0IDAwMDAw
IG4gCjAwMDA2NjI5ODYgMDAwMDAgbiAKMDAwMDY2MzAwNyAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9T
aXplCjE3NAovUm9vdAozCjAKUgovSW5mbwo0CjAKUgo+PgpzdGFydHhyZWYKNjYzMTY4CiUlRU9G
Cg==
--0000000000004741af06254b2a39
Content-Type: application/pdf; 
	name="The journey towards using Xen in Embedded systems.pptx.pdf"
Content-Disposition: attachment; 
	filename="The journey towards using Xen in Embedded systems.pptx.pdf"
Content-Transfer-Encoding: base64
Content-ID: <f_m2om73bz1>
X-Attachment-Id: f_m2om73bz1

JVBERi0xLjQKJSDi48/TCjMKMApvYmoKPDwKL1R5cGUKL0NhdGFsb2cKL05hbWVzCjw8Cj4+Ci9Q
YWdlTGFiZWxzCjw8Ci9OdW1zClsKMAo8PAovUwovRAovU3QKMQo+PgpdCj4+Ci9PdXRsaW5lcwoy
CjAKUgovUGFnZXMKMQowClIKPj4KZW5kb2JqCjQKMApvYmoKPDwKL0NyZWF0b3IKKP7/AEcAbwBv
AGcAbABlKQovVGl0bGUKKP7/AFQAaABlACAAagBvAHUAcgBuAGUAeQAgAHQAbwB3AGEAcgBkAHMA
IAB1AHMAaQBuAGcAIABYAGUAbgAgAGkAbgAgAEUAbQBiAGUAZABkAGUAZAAgAHMAeQBzAHQAZQBt
AHMALgBwAHAAdAB4KQo+PgplbmRvYmoKNQowCm9iago8PAovVHlwZQovUGFnZQovUGFyZW50CjEK
MApSCi9NZWRpYUJveApbCjAKMAo3MjAKNDA1Cl0KL0NvbnRlbnRzCjYKMApSCi9SZXNvdXJjZXMK
NwowClIKL0Fubm90cwo5CjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQovQ1MKL0Rldmlj
ZVJHQgo+Pgo+PgplbmRvYmoKNgowCm9iago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQovTGVuZ3Ro
CjgKMApSCj4+CnN0cmVhbQp4nJ1S204bMRC1lLf5EhoJZ+z1VX1qFQrlIrpoSVCVF9SWRNUGGuj/
q8e73awTQYji0Xo8s2OfuZwVKcmU5Lg9GLbQP5a0IpbMKrpg2TQR2zaCklpS4ax33Fyve0Oz9SYd
atoy0r6gKT0CJMnoU/1ncc80f2lx6Hl+0MsLehhSCVkdeH06bHLKrqEv64gsGKWPvi7v578UjZ8a
yDKrRKdKUju7L9Uj0TXvtbEyBKSmOQRrpA69s86ciq21UXqdkkxXc0dWZxG6+fWnZnid0WgMjhWb
GFzwANHSG8vx/5S7jn+uoKtnGn15evxbkHbSNYuqh02SWJ+aGKWNWIGqlgbVTzoSXlyIMzEQV+JG
3IlbUcKazeCYwvFdjOE6FRPYd9gv8fsc548IKqGTPfhA1W86qQ5NyynpNjKaHYlv4gQIp5C0D4CM
lCZI6Qy/JrsBzQ7Agr0sPPq4Ddo9We4eUrmD/ipqdpJBBOW8C+m05syGt869hfbetd7+gcy5Js7e
1LEsDUcUX+A1433sQzJy792y+CZzjkGJa1CgpcIQRBnDvn5vOiq8BaWMlgWWeh1w7xkl+QfkevOp
CmVuZHN0cmVhbQplbmRvYmoKOAowCm9iago0MzkKZW5kb2JqCjkKMApvYmoKWwpdCmVuZG9iagox
MAowCm9iago8PAovQ0EKMAovY2EKMAo+PgplbmRvYmoKMTEKMApvYmoKPDwKL1N1YnR5cGUKL0lt
YWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAoyNTAwCi9IZWlnaHQKMTQwNgovQ29sb3JTcGFj
ZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5n
dGgKMTUKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcH
BggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMB
BwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKP/AABEIBX4JxAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJ
Cgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQz
YnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm
5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIE
BAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZ
GiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SV
lpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4
+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
88/3R+dNOSERfYx7fnQLMei/nUn2n2H50omP92i8gCK32EYxjOasMMqR61CJjkDb1qYnAJ9Kl36g
QCJx0YD8aXy5P74/OgTMR939aPNb+5+tPULi+XJ/eH50hjcjBYY+tL5rf3f1o81v7v60tQuR/ZR6
LR9l9lqTzW/u/rR5rf3P1p3Yrkf2X2Wj7L7LUvmt/c/WjzW/ufrRdhci+y+y05IGQ/KVGfSn+a39
39aPNb+7+tF2Fw8uX++Pzo8uT+8Pzpwkc9E/WjfJ/c/Wp1Ab5cn94fnR5cn94fnTt8n9z9aN8n9z
9aA1E8uT+8Pzo8uT++Pzp2+T+5+tG6T+5+tACeXJ/eH50eXJ/eH507fJ/c/WjfJ/c/WgNRvlyf3h
+dR/Zc9lqTzW/ufrR5rf3P1o1C5H9l9kpfso9Fp/mt/c/Wl81v7v607sLkf2X2Wj7L7JUnmt/c/W
l81v7n60ryC5GLYqcrtB9qf5cn98fnS+a39z9aPNb+5+tGoXDy5P74/Ojy5P74/OjzW/u/rR5zf3
P1o1FcdHGyvuYg8U+VS6EDrTI5Cz7SuOM0922qT6UgIvLk/vLR5UnqtL5rf3P1o81v7n609QARSe
q0eU/qtAmb+5+tL5zf3P1pahoJ5T+q0eU/qtL5zf3P1o85v7n60ahoHlv6rR5T+q0ea39z9aXzm/
ufrRqGgnlP6rR5T+q0vnN/c/Wjzm/ufrRqGgoSUDAZaXbL/eWkEjnon60u+T/nn+tIAxL/eWlxL/
AHlpN8n/ADz/AFo3yf8APP8AWgBcS/3loxL/AHlpN8n/ADz/AFo3yf8APP8AWkAuJPVaCsh4ytG5
/wC5+tG9/wC5+tADfKf1Wjyn9VpfOb+6Pzo81v7o/OnqLQTyn9VpfKf1WjzW/uj86Xzm/uD86NQ0
E8p/7y0eU/qtL5zf3B+dHnN/c/WjUNBPKf1Wjyn9VpfOb+5+tHnN/c/WjUNBPKf1Wl8t/wC8tHnN
/d/WjzW/ufrRqGhJChQHOOT2pJoy5BBAx60sTl85GMUSybMcZzS6gRmKQ9XH50eS/wDeH50vnN/c
o85v7lGoxPJf+8KPJf8AvCl85v7lHnN/co1FqAikHRh+dL5cv98fnSec39yl85v7lGoah5cv98fn
R5cn98fnR5zf3KPOb+5RqPUXy5P74/Ojy5P74/Ojzm/uUec39ykLUPLk/vj86PLk/vj86POb+5TW
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
q2ybmyegqe4fA2jv1qo6akT1dkRsxdyTVm0Xq34Cqi8kAVfGI4voK0p73ZFR2VkRXD7pMdhxS2q5
lHtzUPfJq3Zr8pb1OK1p+9ImXuxC8PKj0qKFd0qj3pZ23Sn8qdajM6+1bbzJ2iWbz/VL/vVUXqKs
XjfdX8agT7w+tazfvEw+E0bn/j3b8P51Qq9df8e7fh/OqNbVviIpbGnLh7Vie65rOrQgG60APdSK
zq2q68rJpaXRqj99a+5X9azhV3T2zEV9DVWddkzDtmtanvRjMmnpJxNKEie1we4wfrWbgqcHgirO
nSbXKH+LkUX8ZWXeOjfzrWf7ymp9UTH3ZuJbt2FxbbXOT0as+RTG5U9jT7KXy5hk4VuDVq/i3J5g
6rwfpWr/AH1Lm6ole5O3Rk1rKLiAq+M9CPaqE8RhkKnPsfWm28xhkDDp3+laU6LcwgqcnqprVP6z
T/vIl/u5eTCznE0ex+WHBz3FUruAwPxkoehqIM8UmR8rrWojx3UPI47g9jVRksTDkl8SE17KXMtm
Ms7kSrsk++P1qte2vlkvGPk7j0qCaN4JMHr1Bq/a3ImXa/38c+9JTVZeyq/Etga5Hzw2IrS7ziOU
89movLXdl4h83cetQ3lqYyXj+56elOtLvGElPHZqz5/+XNf5MfL9umNtrsx/JLyvr3FT3MCTruUg
Njg+tJd2wlG5MB/51Thne3co4O3PI9Kzk3D3Kuq7jS5vehuCSyWr7HBKen+FW/3dzGO4/UUrCO5j
9R69xVGSOW1fch+X1rOTdNd4lK0/JitHLatujO5aniuElGOjehpYblJeD8relRXFqCd0Xyn0rLWK
5qeq7D30noxtzZpIrbQOeqnoa5HVfDSli1p+6fujfdP09K6uO5aNtk4P19KsMI507MvrWLtLWGjN
oVZ0n5Hkd5aSQuY7iNkYeo/lVJ4mXpyPavVdQ0yO5jKSxiWPrg9R+NcjqHh6aMlrM+amfuE4Yf41
dPEuDtLQyxeX4XMVzSXLLuv17nORz9n/ADqcc1FJCMkY2sOopsJZG2P0PSuxSjLY+Ox+UYjBazV4
91t8+xYqOdN0Z9RyKkooWh5RRRC5wBViOADl+TSvNHHwSMjsKkQ7lBxjPNU5MYkrbE9+got7YY3S
jJPOKiDh7lAT8oPH1q/UybirDSEZlQZYgChWVxlSD9KpX5PmqO22mWrFTIR/cJpcmlxlzmQseiLw
Pc0rbSi4UZ+nSnQjbEoPpSqmGz27VNwGoSkhRuVPKn+lOeRE+8wBps38Df3WBrOuCTPJn+8RTjHm
HsaqsGGVOR7UVUsiBEckD5vWik42dguefHA5NNMg/hBJpFUty5/CnEhR2FeudgBnP8Ioy/oKTzV9
6erBhkUgIzu3gE9fSpaZ/wAtR7Cn0MBRRSAj1H50tIAooooAbKuVz3FRr9xvwqc8jFQ4wHFNPQAi
GWz2FTimRDC59aeKUmC2FooopAFFISB1IFLQAxywYYPWlzJ6Ckl/hPvUhOBmmAzc/dRQJP7wIo8x
acGVuho+QgBDDjmh2wAB1NNZB1Xg0JkyfN1FAMciY5PJpZPuGhjtXNMYMVJY49qQE1VW+8frVqqr
feP1prcBynIINKVYpknikAwvuaXLbdvGKYg5wAOtGGQg4pACCCO1P3FjyOlAA3OC35U3K9O1LGu9
snoKklxsOaXkBERnG0daXYVIzSdFX1p24see1MQ1utJUka7iSelSFQRgilew0V6WhhgkUVQmFFFF
ACilpBS0gClU4NJRQA48HIqZHDfWoVbsaUqD0qWgTsT0jyKvuag2n1pcAdaVguLy5y3SlztYGmlu
OKUfMtMRYoqBJCvBHFP81cd6jlZQ8nAyahj5kH1ody3A6UIMSLTtZAieT7h+lQxNh+e9TSfcP0qu
RxmhC6FqioUm4w3504yr25pWYCythfrUe3jFJku2TQTg8VSQmORyvDdKnVgw4NVwwPWjb6Gk1cLl
moZXB+Vaj2n1pQAtCVguOHyrUdKxzSVSEFKKSlFAwooooQBSikpRQAtFSQrk5PQVKyhhgipcrBYr
j7ppCSRyTin4xuWlZ1KYxzRcQhwtAK59DS8eYuelTMoYYpN2BIgYEnk5p7p5YBBPWmr3BpME+tAD
sjcpPSlYqzjb0Apm00AEGgBGOTU1v/FUTjBqW3/ipS2Gth8/+rpyfdH0ps/+rqkGmhJIDbevTIpJ
XQGhVa+cCMJnknP4VD9rlPQL+VEVu8r7pMgd89TVKPLqwLFkuIAfU5qwKQDAwOlKKhu7uA2Rtqk1
UdgoyafcygH6dBUKQyTNk/KPU1pFWV2IhZixyaWONnOFBNX47WNME/MffpUw46UOp2GUVtHJ+YhR
+dW4IfKH3ixqSlrOUmwIbpmEeE6niqPlP6D8603UMuDVUggkHrVQlZCZWEL+g/OpvNUcZ/Sn1Ub7
x+taLXcW5Y81PX9KtW8okU47e1ZyKWYKOpOK1IkEaBRUTSSHYbJCrvu/iximmJu2DU1FZqTArMpX
qKaQCMGrgpjRKenBqlIVjMkQo3t2NaVvIJIge44NRSREDBGR7VHATBLgn5G7+lVL3kMviq96m6Ak
dV5qwOlBAIIPQ1inZ3GVbBwYimeQentVqs+W3kifdFkjtjqKX7XKOoX8q0cebVCLz/cP0ptv90/W
qRaeVgWDbevTAq7b/dP1pNWAd/y1/wCA/wBadTCQJhnuKfUMBRS0gpaQhCcAmsqQ5yfWtVhlSPUV
lSD9K1pgNQZNPwKjU4NOL+grUBp60CkpRQA4EipFy2MDk1FVq0GZV9hUvRCIWXnng0AAdK1GUMOQ
DUTW8Z7EfQ1CqBYgtv4/pUIq55Sxk7c8qetKLaPA+9+dLmVx2KBUU8KduQOK0FhjXkKM+/NEy7om
Ao9oKxmMxBxTKe46GmVqAU9BTKcpxQBIQCKjBwacX44po60AX7E8uv41bqnYj5nPoMVcrnnuNBRR
RUADfcP0oX7o+lI5CxsT0pV+6PpTAiChpnU9CMVmyoY5GU9jWju2zsT06UXECzgMDhuxq4y5dwZm
UqqWYKoyT0qz9ikz1XHrViC3WAFmOW9a0c0thAwMaIgOMDnHrTjsnTbIPmpEHmS5I4p7wg8rxWQi
jNayRkkDcvqKgrTDOnBHHvS+aO61amxlKC2eUgkYTuauyMFUInQcUhkZuFFPiiwct1qZO+rAfEu1
BnqeafRRWQBRRRTABS0gpaQBRRSMcKT6CgBajn/1ZqlJcHzD+tWY5PNhI74zV8rWorkqBSilgv40
2Qt5gVTjIqGSBpkTawGM9akVSkkYJzgAZ/CiyAd5cmOGpFwkmXQbv72Ko3G8TtuJBzx9Ku20nnw4
b744P+NNqyuAya5ZJ9gUFf51I4EcgI6U6Jxs+bHHSlMy9gTS8kgIFhmF1vJ+Tdnr2qaEBnZjyaUT
KeuRSRsFlIBG1qHdgLN99Kmf7jfSoZv9YtTP9xvpUDIrflWzQQFnAA4Ycii26NSBw0xZjgAcU0Jj
I7mHzCiLj3A60qFVUyydM+lIohSUyKp3H8hT5GSVCj5APpVeggfy7mHO4hQetJEGCBIhhR3NN2Ki
rHGcgnNNvpPLURpxkc0JdEMm8uT++M00TeWrtISccVWsA5myM7e9WFCOJPMxsPqcUNW0Yh3nLNCS
uQQeQanT7i/QVA0axxKsfc/nRcy+WuB0HFTa+iDqWaKz7adi57VoUpRsMKKKKQAKWkFLSEFFFFAy
KdcrkdRSJtmiKPU1QvEQdyflVJ9BMz5oHiPzDK+oqMcnA5rUEzDhxmgzDstaKb7AVILN3YGT5V/W
rbMsabIhjtSZkk46D8qljhC8nk1EpX3AgdDNbsufmByM1n1pKfKlORxST2gkO+NgCevpVRlbcDOq
W2j82ZVPTqalFjITyVAq5DElvGRnrySacpq2gCr/AMfDfSnzf6tqiibdOT7VLN/q2rIOpHLCJUGO
GA4NUCMHB61qJ90fSqd8uJQ3qKqnLoJlaiiithC0qgsQB1NJU9uvJY9qluwFhRgADtTZP9W30NNe
ZV6c/SoHlZ+DwPaoUWIsW2Y7eSQdf8KqVbiINm4HUZzVSnHdjCiiirABV2HCWbN/ez/hVNAWYAdT
Vu8IREiXtUS1dgQRZks3UdR/+uqlWbJ9suw9GqKdDHKQfqKS0dgI6KKK0AKtrh7I55K1Uq3EMWUh
JHNRMAtv9X+NS1TR2T7p/CpknB4bj3qXFkkMq7XI7UyrM67k3Lg49KhjjeQgKp+vaqT0uzSnTlUk
owV2NFPjjaQ4QZq3HZqvLnd9OKdNdQW64LLkfwg81lKt0hqfTYDhitWadd8q7LV/5L8RsVmBzKcn
0HSppZo4FyxA9hWXPqUknEY2L+tVNxbliSfeo9nKes2fbYHJqOEjaEbfm/VmjNfM3EYwPU1X3FuW
JJ96bBC8mMAgepq9HAkYBcgkevSh8sNEepaFNWRFFEz9Bx61bSNIhljn61E9wBwgz71EWLHLHJrN
qUtyXzS3LZn7J09aaCTjPNNhiZu2B6mrcaLGM/qazk1HYltR0QkcRPLcCrIwgqAzdl/OhST7msmm
9yGm9ybcT9KegJpqJ61NkCsn5EPyHqMCniog2fpUiVmybEgp4NRjpUi1kyWPUZqVeBUYpc5rNkkm
c/SnIM0xBn6VMMAVnIhjxgCmlsmmk5pyLk+1Ra2rJtYkjXJyelTFtopmQq0wnJyaya5mRuO6mrFu
mBuNQxruPPSp2favuaiT1siZdkLM/wDCPxpijJAFR55q1bJ/EaLCfuosxgRpjsOark7iSe9Onf8A
hH1NRrTv0M4rqWbVcvnsKluW4C/jSwKET9TUDtucn1rW/LEy+KVwrQjASIZ7DJqlCu6RRVu4bER9
+K1paJsmpq0ip3yatWQ+dj6cVVFW7L7rH1Na0viCppES7P778KjT76/UU65OZjTY/wDWJ9RWj+Il
fCX7o/6O/wCH86oirt1/qG/D+dUhW9Z+8Z0vhNKyOYB7cVSmG2VwOxqzYN8rL6HNQ3YxO3vzW0ne
mmTHSbRJp7YmI9RUmoLhkb1GDVSFtkqt6GtG7XfA3qOa1p+9ScexM/dmmUYnKOrDqDmtS5QTQHHb
5gayBWnYSBodvda0w0k7wfUVZWtJdDPFatpL5sIyOnBrPuk8uZgBhTyKW0l8qUE/dPBp0Kjo1LMK
keeN0FxH5UpU9Oo+lWbCfB8tjwfu1JeR+bFkdV5+tZoOCCDzVybw9W62JX7yFmX9Qh/5ar9G/wAa
rW8xhk3DkdCK0LWYTRfNyRwaz7mEwyYGSp6GrrqzVamTTd/ckaUyJcQjHflTWUwaKTB4ZTU9lceW
2xj8h/SrV3CJkyPvDofWqqWxEeePxIUb03yvYW2uBOmDjcOoqleW/lkun3D+lQKzRuCMhh61pQTr
PHzjPdahTVePLPdDcXTfNHYq2l1s+SQ/L6+lWLqBZlz0YDg1Uu7byvmTJT+VJa3Pl/I/Kk9fSslU
5f3dUtxv78CJWktpT2I6jsavxSpOmeM9waJo0nQdD6MKznR7eTqQR0I71m3Ki+8R6VPJk1xalfmi
5Hp6UlvdYAWXp2apoLpZPlbCt+hptxbB8snyt+hrOS+3SC/2ahJLGkyYPQ9CKoukls25Tlc0kcsk
DFWBx3Bq5HIsq5BH0rJuNTyZVnDzRHDcLJgHh/SkngSTnofUVHPajkxcH0qKO4eP5ZASB+dZSlb3
ZlKN9YGXqukQ3QAmXa2eJE61yWo6XcWJLON0WeHX+vpXpQZZF4IYGqs1sDkp+RqVOVP4dUdFOvb3
ZHmQPrVS7uDuKJxjqe9dnqGgRSEtb5hcnJU8rXM3tjJEdlzEyEHg44P0Peu7D4uE2eLjuHqNe9TC
vll26f8AA/IyoUMkoX16mtGTIjwg9qbBEsQ4JJPXNS11uak7o+PxOGq4afJVjZlDofQirK3jhcFV
J9afJGrjnr61VkQo2D+dVpLcxTEd2dizHJqzboVt5XPdeKggj82QLnA71pOgMRQcDGBUzlbQY5fu
8enFZVpJKbpRuY5PzAntWnASYlz1xT8D0qFLluhjJ/8AVH3wKpX0e2TcOjfzq5MeYx6tTpUEkZU9
+9EXygZQJA4JopXUoxU9RRW5BxORjPaoiQFMj8+gpxjHYkUkibkCs2K71Y7xkE7PJtIGD6dqmi/i
+tRqqR5EfLHjNSoNq4olboAg/wBafpRK21aI+cse9RXbYXFCWoECyMZB6E9KvocqM1mxkKcnr2qT
z27dKuUbgX6KigcuvNS1k1YB1ROOW98fzqWo36n6D+dCAeOBSiigUhi0U1ztUkVSad93BpqNxCzu
2/rU9tJuGDVR3DjkYNSWzbXrRrQC3L9ynt9xvpTXG5TSxncgz9Ky6ARPJ5UKkAEnikicTAggBxTi
AMo4yp6URwqkgZGyMdDV6WAkjJI56il+XcGzzTRHycng+lOEa46VOggk5TI7HNDnMZI9KQxjtkUw
5VSp6HpQBYqtj5jmrNViCScZ60kApf0owxGcGkQZcCrNNuwrFYEilDVYwBTJFBBPejmCwxGKg4FJ
8zHLUIe1Cn5hu6UwHK4Dc9KUsCSwpsm0kbP0pQMkKKXmIkjGFFPFJSipKGGMEknNRum0+1WKimPQ
U4t3EyKiiirEKKWkFLSAKKKKACgHFFFAC5PrSUUUAApwODTRS0AScNSbRTKKVhEnApU/1i0wcmpM
YlUelSxolk+4fpUAOODU8n3D9KhYfu1NJB0DCmgKBUdKKuwh5IA4ptFFIAoBxRRTAXcfWkFFAoAW
iiigApRSUopAFFFFCAKmSLKgk1DVpCGUEUpMARQucU6iis2NEUgw4PqKake4nJxipJRlM9xzUeTj
KnBqlsJ7isOqk8ihXdeOooiUOSSTmgZDkZ4FPyEJn5icUFiaFG98VZAAGAKTdgsVQGbpk0pLKeas
gAdBTZl3J7ilzDsQ5DDFSQdWqEAnoDU0HVs0S2BD5/8AV0RHKiif/V1HC2GIPeptoBP3ooopAFI+
7bhBkmm+YvmbAct3x2qQUbAQx26g7n+Zv5VPRRQ22AUUUUAFLSUtJgFRTL/EPxqWkIyCDQnYGVaq
N94/WrhGCRVTG58DucVvElFuxj4Mh+gq3SIoRAq9BS1lJ3dygoooqQFFLSCloAKjkiVwR0qSihOw
hsWQmG6jjPrT6BTPNXzPLJw3v3pbjH0d896KKAGSnCGi3+6frUczZbHpUlv90/WqtoIhvG2PG2cY
I/rVoEEAjoap6h0X/PrTrGXcnlnqOn0ptXjcC2KWkFI7qi5YgCoEOqpcw8l0HB6ipIp/OchB8o6k
1PTTcWBkFPSkCmtJ7eNu2PpSC2jB7n6mtfaICiFAHvUeMHmtVokZduMD2qu1q+eMEUKaYFRBk1oW
aYUsRyen0pkVqc5kPHoKtjgcVM5X0QBRRRWQEcnX/gJqUdBUUnX/AICalHQUMYUUUUhGbPHscr+V
QVrSxLIOeCOhqqbV/wDZreM1bURWQc80pT0q7Da4OZDn2FTPCj9VGfUUnUVwMvaakjjJOFGTV0Ws
fq351MiKg+VQKTqdhjYYxEm3qe5qSkbO07cbu2ahiuUc7W+V+mD61nq9QJ6KKRiFBJOAKQFe9cCM
J3Y1ZX7o+lZUsplm3HpnA+laq/dH0qpKyQEJUNMwP4UbXQ4XOPamucTE+hqyDkAii9hMg8x/T9KN
ryHnOKnopcwWERQowKfTadUgFNKKf4RTqKAEAA6DFKKKBSAWiiigAooopgApaQUtICOaURj3qsbs
HIJ4PtUt3GXXPbGKznjZOo/GtYRTQh8wUtuU5z1qxYsBgH6VSFSwNtkHvWklpYDQjby94IzgZqKK
VrgE7cMvTFSPyBIPxpzFY4GeJB0zgCsQEPlyjEoGR60sEUcbsY2JyOmelRW0hnVzIo47jiprdeC3
rQ9NAFWJV5Y5p42AEjbgd6pyt5sj7mPlqcYqIKjg7CR6inyt7sC8JIXIAZCT2oeEHJXj2qo6DaSo
wRyCKuQvugV2I5HJpNcuwbkZYsyhuoqy/wBxvpVd3R5BsYH1xVh/uN9KhjKqliCijrUyQqvLc0yB
0XIZlBPqaW8kKw/KeWO3NVrshPccJYQcB0z0609gn8W2qPlLtxgdOtMIjDYclm9TT5Owrl7yRuBU
4HWmSQxPKWkbJ9M1HbOUlEZOUI4z2NSyqBIpPQ9aWqYAWVV2Qjr6U2e3Z4lVCMg5Oe9PnRhEfJGG
9utJEXjgHmkl89zmhPqhiQoUKRk5296q3jZf261bHyxFjnc3FZ0jbnJq4au4iS3KqCzEDParIvBn
qPyqhT0iZu2B61TinuM1o33rmn1Fbrsj5qWsHuAClpBS1IgooooGFKKSlFAAQD1ANIFUdAKWigQo
paQUtIBksYceh9agHmR8YOKtUU07AV/MkPAH6UCN3PzHH1qxTXbapJp37CIogBMQOgFSzf6tqht/
9Z+FTTf6tqHuMVPuj6VUvmzIq+gqyXCRhm6AVnO5dizdTVU1rcTG0UUVsIWnbjjGePSm0tIAoooo
AMkdDRRRQAUUU6NijhhgketIC1ax+UDLJxxwDUQBmlLngZpkkzy/e6egqzCcxggYqNVqwZFOpVt6
1M6i5hDr98f5xSsQASelVEkaNsoce1JXYkxpBBwRg0lPllMrAsAMelMrRDClHSkpRQIKfHG0hwgz
UttbmX5m4T9TU9xdQWShW4J6Ko5rGdSz5Y6s+gyrIKuNSqT0i/vf/A8xYLXZku27PbtSXN7BbLgs
Cw6KOtY91qs82QmI0/2ev51QJLEkkknuaFQlN3qM/QsDk1DCRtCNvz+bNG51SWbiP92vscmqgJJy
TkmmwxtK2EGa0ILRVwX+ZvTtWj5Kasj1UoU1ZEEMTyY2Dj17VfhtUTJf5jTXuI4RtUZI7CqzzySH
k4HoKyfNPyQvekXnuUTATDfToKgaRpPvHNV4wSQByavw23GZPyFS1GArRgMiRnPyjNXIoAv3vmNL
lIk7KKhedmyF4H61i25bGTblsWmlVPc+lRl2fqePSq65J96uRQ93/KoaURNKIRqWxjp61bjUKPf1
powo9AKZ5mSQOBWTbZm22T7wOlAOTzUS88CrCLjr1rN6Ceg9F9akFMBwKUHJrJkbkq1IKjWnCs2S
yQVIgzUaVIOKzkSyQcUZzTM5NOUZNZ2JHoM1OMAe1MUY6UjNngdKyepD1HFs/SlQZOKYKsRrtHvU
ydkJ6EqgKvoKiZtxzQ7Z4porNR6shLqSRrvYCruQiewqC3XC5PU0Tvk7e1K5Evedhu4scnrU1uNz
jjgdagFXbZdqZ7nmnHcU3ZE0zbYz6niqwp1w2XAHamCqb1M4qyLVoMsT6U+6blV/GltxtjHvzUMz
bpD7cVunaNjJazuNFX7YYhHvzVCtGLiNR7VtR3FV2KchzI31p0X+sT6io2OWJ96fF/rE+opp6jto
X7n/AFDfh/OqIq9c/wCoaqFdFV+8ZUti7p5+Z/oKW+HzofUYqKxbE2PUVNfD5Eb0OK2i70iHpUKl
a0J8yBSe45rJq/YPmMr3U1eGlaVgrLS5TcbXZfQ4qexkCTc9G4pL5ds2ezDNQA4II7Uk3Tn6D+OJ
p36botw6rWfmtOJhNACRkMORWbINkjL6GujEK7U11M6T+y+hp2cvmRYY5YcVTu4vKl4GEPSmWsvl
Sg9jwa0LmLzYyP4hyPrWqftqVuqIf7ufkyhbzGGTd1HcVozIJotueDyDWQcg4PWrthOT+6b8KnD1
bfu5bMqrD7SKjKVYhhgirtjPnEbnkfdP9KL6HcvmL1HX3rPDEEEHBFRd4eY7KrE0L6DcPMQfMOo9
aoxyNG4ZTgitG1n85MH7461WvYNuZEGF7j0qq0U/3sBU5W9yRbilWaPI78EGqF3B5Z3J9w/pUUUr
RNlfyrSR0ljyOVPBBqedV42e4NOk7rYo21yYjtblP5VdZUljGcMp5qjdQeUdy/cP6UyC4aI46p3F
YRquD5J7Fygp+9ESaFoW55HZsVNBdZwsp5/vVZJWVOzKaz7iAxHI5T1qJp03zQ2HFqfuy3Lk8ayq
c9ex9KoOjwPnJHoR3p8FyUIVzlP1FXGCyJyAVNZy5auq3BXp6PYghuQ/D8N/OlmiWQc9fWq1xAY/
mXlf5UQ3JXh+V9e9ZOf2Zl8n2oDHV7duDx6+tTRXCvw3yn+dS5V17FTVWa35zH+VZSTjrHYpNS0l
uTyRq4+YfjWbfWKSx7ZkEsfXkdKnjuGXhuR+tWFYOuRyKxbUtVuUuamcPqOiSRFntT5iE/cxyB/W
sg5ViGGCDgivR5oFYErwaxtR0uGc/vE2P13JgE/WuiljZU9Kn3l1aVHGQ9nXjdHJU2RA64NWr2xm
s+ZMFCcBhVYH1r1qdaM1dM+RzDhyrQvUw3vR7df+CFim1XJ65xVmqwYxMT1Q9QPWrKkMAQcg1ct7
nzpHCSHkQjocj6GpqhkysiOOn3WqVjgEntSY0R53XGMcIM/ialqKAHZub7zcmnSOsa5Y8UPewFS9
A84e60UrqZW3Px6AelFbJ2ViGzgKZKMrn0p9I33T9K9FHeCAAZUYzSSHPyr1NIgzGADijyx2JzR1
AeBgYFU7kMTkjpVkEocNyPWnsoYc007MDNHWpo4cnkg/SlmhIOVFNgJD4FaXutALsabBTqB0orFg
OqN+p+g/nUlRv1P0H86EBJQKKBSGDDcCKpywYOfWrtU7tmyaqDdxFdl2nBI/CnxAlwR2pI4yxHpV
6KMKOnNXKVgHJnaM0n+rf/ZNDsQcLyaPLJ+8xNZ+oEhAI55FRqo8w4HApyJt/iOPShOr/WgB1LSU
tIGLTZPuGnU2T7hoEPqKH7z/AFqWoFDEttOOaAJ6KiDspw4/GpQcjik0AUjfdOKWkYhRk0AQL94U
EDdzQvLUHkmrJHAgdKUdcqeaVnGzGOfT0pigkZApATK4PB4NPFQfeHvT0kH8VJoaZIwJUgHBqtU7
OoHXNQ5zzTiDEoooqhCilpBS0gCigDJwKmSMKMtSbsBGqFugp4i/vH8qGl7L+dRliepNLVgS+Wn+
TSNCRypz7VFUkTkMATwaLNAMFFSTDBBHeo6adwJlAkXJ+9600xN2waIThsetT1LbTAiiXk56ilP+
uWmv8smRTj/rlpPuNEkn3D9KbHygzTpPuH6VGW2xDHU0gGeWSxC8gd6kWH+8fyp0IwmfWnk4BNNy
ewrEEuAdq9BTKD1oqkIVVLHAqURAfeNKDsiBxUJJPU5pasCbykPQ00wkdCDUVPWRgeufrRZgIQR1
FJU6srjBHPpUcke3kcihPuFhlKKSlFMAooooQBUkIJbio6kibaeehoewFiim719RUTOXOBwKztcd
xzOTwvT1poIXvTWPYdKkQJs5xmq2J3GHByRQv3TT4nCqcg01ec0ALFneMVZqtEQrc1ZFTLcaCiim
u4Qc9fSpGOpkf33pn7x+fuinQ8M+eTQ0A6f/AFdV1BLADrVif/V02BerGmnZCI7idoSqgAnGSTVW
SeSQYZuPQUXDb5mOcjPFRjqK1jFJAXrGMLHu7t/KrQpAAoAHQUorFu7uAkjiNSzHgVQeaWZtqZAP
YU+/c7lTsBmrNvGI4gO/c1StFXAqCzkP9wfU0nkzQ8jOP9k1o0Ue0YFFLp1OHGR9OatxTJKPlPPo
aHjRx8yg+9VJrZo/mjJIH5ij3ZeQF+iqlvdZ+WT8Gq3UNNbgQTDDZ9ags1DTkn+Hmrc4ymfSmWag
RFu7E1afuiJ6KKqXF1jKx/8AfXpUpN7DLEsqRDLH8B1qo927HEYwPpk0kNs0h3SEgH8zV2ONIx8i
gU/dj5gURDPNy2cf7RpTZSDoUP0NaApaPaMRnJNLA218kDsavo4dQyng0y4jEkTcDIGQar6e3zMn
tmh2krjLwqvfR74tw6rz+FWBSMAykHoeKhOzuBmR3EkYwrceh5q1b3DSsVIAOM5FUCMMR6Gpbd9k
yntnBraUU0ItEYJBqe3+6frTZx0NOt/un61m3dAQ3oztzTbSLL7+gHSn3gyyj1qVv3MBx2FF9LCK
c08u5gGwM44qsSSck5PrUtIiZlQdiwBrVWQGjapshXjk8mpqKK527gFFFFIApaSloAKKKKACiiig
COTr/wABNSjoKik6/wDATUo6ChjCiiikIKUUlKKAFooooAWiiihAFZt/GEl3Do3P41pVV1BN0QIH
INXB2YFKKR0PyMR7VdiJniZJDz61TVcD3qzaNtlx/eq5LS4iEptfBHINaa/dH0qrdpyrj6GrS/dH
0qJu6TArS/6xvrUsLYQ7ug71HIMykD1qSXCxBaXSwMDMOwNIhaRuegqGrMIwmfWhpJCH0vQc0lRz
tgAfjUpXGDTdlH403zH/AMipI0CqMjmpKd0gIBMR94VKjq3Q/nSlQeoBqJoe6n8KWjAnoqukhQ7X
qcEEZHIpNWAWiiigAFLSClpAFZ9xNhvlAzWhVGa1ZnyM1cLX1BlQbpH9zV2CAKu5uB3PrT4LcIMs
KdjzHyeEFXKd9hChmbiMYX3oCOnIIpLneYR5B7/w+lN2u9ntkOHPr9agLEztmEk9adDxEtV7eIpA
ykgknPFTRfNDjPqKTWgymMO8uAdjHg0scYTJzmjmH5JBjHQ9jTJH3kIh69TWpIrOzkrH+JpkUatn
f1HHWlCtHIFT5i1WUt40O6bDMecdqG7DILP7x+orTf7jfSqo2bhsQKM9qtP9xvpWU3djM2Tb5w3e
lR7N0h8rGBzVtfL/AOWiBvcih7cYL2xx6rVqVhPchST5tj8NStEpfcc1GsYdSzMc/wAqdFKNnznB
FU12ESxMBdLu4GMD61ZuBlM+hqqimdlCj5AclqtXByFUdzWct0HQdlvLBUc1F5bsc7lJ+tT5CgAn
FVbO3aKQsWUjGOKlbDJSx+7KOPUVXuLf+Jcc9DVtpIy3lsw3HtTV/dtsblTTTsIzFLRtxwauWsoZ
hkc96fPbbunNJb2xRsmrck0BcooorEYClpBS0hBRRSMwUZNAxaa0qrx1PtUDO0hwvT0qWOEDlufa
qtbcQ0zMfujFJ5sn+RVgADoAKKV12AijmBIDDBqeoJkBUsByKdA25Oe3FDS3QElVy7RNtzkVZqC5
Awp79KI72AcJ17gimXDE4H8PWoas48yHjqKppLURHbf6z8Knm/1bVBb/AOs/Cp5v9W1S9xla8bEa
L681XijaRtq1LedY/wDdq3bx+VGB3PWr5uWIupXa0IQkNkgdMVUrRupRGhAPzHpWdVQba1ExaWko
qgFooooAKKKKACiiigAFWLZuSv41XFOQ7WB96l6iLFy2E29zVapJ23P7DpUdEVYAoooqhhT4k3yK
o7mmU6Nijhh1FJ7aF0uVTjz7XV/TqXr+b7HZFo8ZGFXNczI5kdnY5Zjk1093CLyzKqQCwBUnsaxY
7LY377qP4aww8oxTvuftGBlTVO8f6XQpIjOQFBOauQ2YAzKcn0B4qd3jhXBIUdgKpzXbvwnyD9a2
5pT20Oy8pbF5544VAP4AVUluXkyOinsKqDrViCF5T8o49aFBR1YKKjqwWrcFs8mCflX361Pb26R8
/eb1NSyzpEOTlvSsZVL6RIc76RJIo0iUhePUmmyXIXKpyw79qpSzvKeThfQUICSABk1Hs+shKn1k
TFizEtyalhjZ+nT1NPgt+hk6+lWhgD0ArOU+iIlO2iFijVBx19akeQJ7mqsk+eE/OmrWfK3qyOVv
VkxcscmpYlLH2pIYu7/lVkcdKzk+iJk+iHKAOlPLAVEXxwKQc1k0RYlBzUyCo419alFZyJbHinr1
qMU8VmybEop2eajBp4rNoTHjrUyDFRrTi2OlZPUhj2btSCminoMmpegtiWId6kZsD3NNzimE5Oax
tzO5nuOFSRDLewqIVZjXavvSm7IUtCYttUmq+ckn1olbJA9KSs0tCUrEkY3OB61f3BFJ7AVWtV4L
evFPuGwoX1qloZS1dhgOSaegywHqcVEpqxbDMmfShahLRF3IVfYCqdWJziI+/FVga2k9bGUFpceg
ywHrWiTtQn0FUIP9av1q3Mf3LVvSdk2RU1aRUFPi/wBYn1FR0+P/AFifUURepb2NCf8A1D/SqAq/
NzC/0qhXRUepjS2JrY7Z0Pvirt3zAfY1nwnEiH3FaMo3RMPatqLvBoippJMz+lWrF8Skf3hVQGnx
NslVvQ1FOXLJMuaumi9fLuiDf3TVGtSRd8bL6isquivpK5nReli9p8nDJ6cil1BD8sg6dDVS3fy5
lY9M81pyIJIyvY1tTftKfKRP3J8xlZrTsZQ8W3nK1mHgkVJby+XKDnA6H6VnRqcki6kOaJPfR7ZN
46N1+tVQcHPcVqyKssZUng96yWBUkNwRVV48srrqKlK6szXt5hLEG79/rVC8i8t8r91v0pltN5Ug
P8J4NaMirLGQTlSK15vbws90Z29lLyMuNzG4ZeorUjkE0YYdD2NZUiGNyrdRT7eYxPn+E9RXPSqu
m7PY1qQ51dC3UHlPlfuHpTYJTE+R0PX6VpNtkTB+ZTWXPGYn29uxpVoum+aIqcudcsjSVllTI5Uj
oaz7mExHK/cP6U2CYxN/snqKvgrImRypoclWjruKzpPyM6GZomyOR3FaCsroCOQao3MBiORkoe9R
xStE2R07j1rCNR03yyNJQU1dEtzb7Msn3e49KhhmaI8cqeorQSRZFypqpc2/8UY+oqKkbe9AISv7
siwkgkXK1WntwTuj69xVZHZGypxVyKYSD0b0rPnU1ZlOLg7opxyNETj8QatxyrIOOvoaJ4lk9iO9
UXVo254PY1g24ehelT1Lc0SycnhvWqTh4X9/UdKsRXAPEnB9akcBgQRkVnJKWqGm46MgjnVsBuG/
SnSAMMEZFQTwEcpyPT0qFJ2ThuR/Ks3JrRlqCesQnt+Ds5XHINYF/pKud1thHzyrHiumDq4ypzUc
sav16+tFOrKk7wZrCbW5wbo8LlXUqR2NMUEEtGdrd/Q1195arIu2VA6+vpWBe6ZJD80WZE6+4r2M
Pjoz0lozgzDJ8Pj/AHvhn3X69ymriRTHKMEjHsaTcZgsTcMD8/4Uw4IIbkUm4t8h6/xMO47V6MWn
sfEY7LK+Bf71adGtv+ATPMWJEXbqx6fhUYUBtx5Y9zUTzqvCjNMNw3ZRVqPY853ZZoqt57+35UUc
rFY4ao5ThcdzTtx/ummAEtllJ9K9NHeOVmx8q8D1pVY7sMMGl3H+6aa+WIIU5FIB7DIwabGSMqeo
pcn+6aawJIIUg0ICQgEcikEYBzQGP900bj/dNIB1FN3H+6aXcf7poAfUb9T9B/Ol3H+6aQgnJwaA
JKBTdx/umjcf7poGPproG69aNx/uNRuP9xqQgVAvTrSudqk0m4/3TTTuLDKnaO1P1AWNcDJ6mnO2
0e/akyf7ppDkuGKnAo9QF3P/AHaRG/eHtmn7j/dNMcbv4Tmi4ElLTFLY5Uk07cf7ppADttHvUDPk
8nr2p7hmOQpqHyJN+41SsIu1FD95/rUtQgOpOB1qQJWAYYNMiOCVPajMnpTcPu3Y5oCxKwypx1qv
nPWpcyelMCMP4aFoFhVGBk0m7HQUpVz1FJsb0p3QWAHPBpyvsBGM0gRvSlKMe1F0FhoODmlcc5pz
B2GCtIFfGMcUXFYZS07y29KNjelHMgsNop2xvSl8tvQ0cyCw0Uo5PFL5bf3TTlV1OQtFwsPUBFye
tRsxb6elKyux5FJsb0qU0FhtFO8tvQ0eW3900+ZBYbSoMsBS+W392nKrKcheaLhYdOegqMAnpT2D
sclc0o8wdFx+FJOyCwLEcZJwfajc6H5uaXMnpS5k/u0r9wsIzB19DSIculIVY/w0saMHBI4o0Amk
+4fpUHUgdhVhxlSBUHlt/doQD2lA4QUKHf7xIFIodeiilzJ/dov2Cwx4yvuKbUuZP7tIQ56pQpCs
OfmEYqGpQHC4xxTfLb0oTsFhlAp/lt/dNHlt/dNPmQWG1LHJ/C350zy2/umjy2/u0m0wsOlTHI6U
wVKPMAximeW3pQmFhtFP8tvSjy3/ALtPmQWGUop3lt6Uvlt6UcyCw2ndF96Ajf3aUo5PK0risLG4
VTmmqBye1OYOwwVpNj4xt4pXBoTeaVWBPoaPLb+6aPLb+6aLoOUGGDSw5LgZOKNr4xtpVV1OQtFw
sWKhQb3LHkDpQTKR0pFEijAFShk9Mj++9NzL/dp0QYFiwxmkAs/+rpjhvJCoMlhj6VJKCyYHWox5
ooQhkdoi4LncfTtUhdE/1ajPsMU0o7Hnmjy29Kq99wsPSXs3HvUoOelV/Lb0pQjg8Ck7BYhv1IdW
7EYq3C++JW9RUUkbyKA4yBzSxo8a7VGBQ3dWCxPRUX72j97U2Alpah/e0v72iwyG5tsjdGOe4FFn
Pn92557Gpv3tRNb7mLFeT71Sd1ZiLTDcpFCLtQAdqiHm0ESkYqQsRXc/WNDz3NLa22AHkHPYUi2+
1gQvI561N+9qm9LILEtFRfvv84pf3tRYCUUtQ/vaP3tFgHTNsidvaqunr87N2AxU0kcki4cZFEcb
xghBgGqTsrAWMgDmo3lHRefemGNz15pPKb0pJIQ8Oj/6xVz7jNMltEbJjO0+nal8pvSlCODxTvbY
BUDeQVcYYDH1p9v90/WmkSkYNPhUqpBpMYjrumXPYZplwryMFX7o6k1K2Q+QM8YpGaTHyqM+5pJi
GR26Ly3zfWmzSxpxGqlvXHSmvHM/DEY9KZ9mk9qpW6sRNBcrJgN8r/oas1nfY5PapY4riMYVhj0P
NElHoxlyio1aTHzKM+xpct/c/WoAfS0zLf3P1pdzf3P1pAOopu5v7v60Zb+5+tMB1FNy39z9aMt/
c/WgBsnX/gJqUdBUTBmP3ccU4M2PufrSAfRTdzf3P1oy39z9aAHUopmW/ufrShm/ufrQA+imbm/u
frRlv7n60gJKKZub+4fzqOQ3DH5Aqj8zQkBK7qi5YgCqhu90hAUFB696Y9rM7ZZgT7mhLSRfStEo
rcRaUQyrwF/AYNRvbFeYycjtTBbyA5GAfrUyeep52sPeltsxD3HmQHPB/rUi/dH0ppLFSNv605eF
A9qgZEBm4PtzSshkfJ4FIyuJCy96GEp607g0LiNBzyaEmHQjA9qZ5T+lHlP6U9OorFgEHoaiuB8y
n2xTBG4OQMU5lkYANSWjCxOpyoIpagUSKMDpS/vaTQyagVD+9pf31KwEjoHHPX1qBWaJsN0p/wC+
/wA4prLI33hTXmKxYByMiioFEqjA6Uv72gCYUtQ/vqP33+cUrBYmoqH99/nFH77/ADiiwxZm4Cr1
NNmi3QeWGCt169aQJJu3Y5pskDSNudcn601oKw63jaCFt55z09Kcke4bnJ5oZZWGDSgSgYFDYWAx
Y5QkGkiJjfa3GaX99/nFDLI33hRfowsTEAjBAINZgjDszZ2nJ6dqvASgADpUP2Xr8p596cHygJZA
iNpW5PQZokfGWY1KI3EYQD5R2prQFhhlyPrT5le4rEVvJvbpjBrQf7jfSqsVuUPyrj8atMMqR7VE
mm9BmdJJscAjipon2sGB4oa2LnLL+tKsDKMAcfWr5lYTRHdxgTK+cK/WmwqgulXAKkdDzViSFpFV
XGQOnNMS22MGVcEdOaFJWsFi5wB6Cqx3SSZXPHSnMJGGD0pVEqjAHFQtAsKIR1YkmmuvlEMpOM07
99SMJWGD0ouFhGt1kmE249jipZVDocYJFRbJNhT+GkiieLIjGM0XCxNC+5eeoqSq4SQNuA5p376k
wJqKh/fUfvqQEwpah/fUfvqLASswUZNV/mmf2/lTmWRh81KqyKMAcU1oFiVVCjApwqH99R++qQJq
Kh/fUv72iwWHynEbe/FNthhSfU0xlkcYNKFlC4HSn0sKxMzBRknFQtMC2NoK+9NMTk5I5+tHkv6U
1ZBYk2RycqcfSljVo2I6qe9ReU/pTwJgKGwsEQ2zsKlm/wBW1MiV/MLP6VJKCyEDrUh1K0xXzYt2
cAZxjNNluXYEIpUevepQJQeMZpf3/t+lVdBYoHJOTkmpYrd3xxtX1NWx53t+lH76m6j6ByixwIg6
An1NSEAjBAx6VF++o/fVG4WEmtlflMK36VSZSrEMMEVf/fUx4nkILAEiqjK24NFKirX2Y/3f1o+z
H+7+tXzoVirRVr7Mf7v60v2b/Z/WjnQWKgpatfZj/d/Wj7Mf7v60udBYq0Va+zH+7+tH2Y/3f1o5
0FirRVv7N/s/rR9m/wBn9aftEFipSirX2b/Z/Wj7Mf7v60vaIVhLSfyztb7hPX0qzd2wnQ7Tsfs2
KhSBkYMq8iplMwI4BHpWE1d80T6XJ89lg0qVbWPR9V/mjm7q2ngY+erf73UH8aiRGdsICTXXECRC
rrkHgg1UewRR+4AUelaLE6WktT9EwuZ0sRBSg013Rk29mBhpeT/d7VdJWNcnCqKgu5jbHayHeemR
xVB5HkbLnNVyupq9jsSc9WXZbsnKxcD+9UGSTkkk+9RICxwoJPtWjb2gHMvJ9Kb5YIp2gRwQvKQQ
ML3NaMMSxDgZPqaVeBxUEtyF+WPlvXtXNJym7Ixbc9EWXkWMfMefSq7zNIeeB6Cq+4sck5JqeGNp
DxwPWjkUdWNRUdWOQFjhRk1dgiCcnlqSNAgwtSFgoyelYylfRGUpX0RLnjJqN5c8L09ageQufb0p
0YLHAqOW2rFy23Jk5xirMa469ajjUKPepRWUmRJjxS7uwqMv2FKvUVm0TYmSpRUSjFSCs2Sx4qRa
jWpAaykSyQHAoBpgPNOFRYkevPFTrxUSDFPLYHvWctSHqOds8CkFNFOXk4qbWAliGTntUxbC+9MX
AAxTXbJ9hWLXMzPdhT154qMVPbj5s+lEtAehbQBVAHSq8jbnJ7dqkd9qH34quKgyiupIOtXbQYQn
1qivNaEY2qB6VcNyamw25blRUYNJM2ZT+VIDTb1ElZFm1GZM+gqxcHER96gtP4vwp90fkA966IO0
DCWsyAU+P/WL9RUYp8f+sX6iiLNGaEv+qf6GqIq9J/q2+lUK6aj1RjS2HA85rVU5A96yRWlAcwp9
K0oS1ZNZaIoHgkUoNLONszj3zTKjZ2NFqrmtA26JD7VQuF2TMO3Wp7FsxsvoaS+XlX9eDXXN81NM
54+7NorVp2su+Ieo4rLqzYyFZNh6N/OpoVOWXqVVjeIt6m2XcBgMP1qtWjdJviPqvNZ2aKy5ZBTd
4mjZSbotpIyvH4VHfx9JB9DVWGXypA3bvWmcMpB5BreEvaw5WZyXJK6Mmr1lNkeWx5HSqcimNyp7
U1WKsCOCK5oVHTlc2lFTRo3cXmJlR8w/Ws7NacUgkQMPxFVLyLa29eh6+1a14qS54mdKVvdYWk+w
7H+6eh9KtTRiRCp69j6VlE1etJi67WPzD9ailVuuSQ6kLe8inIpRirdRUltP5TYP3DVq5iEqcfeH
Ss4ggkHqKxmnTldGkWpqzNQ4dexBrPuITG3HKnoaW3nMZ2tyn8quNhlIPINVJqovMhXpvyM6ORo2
yv5etXo5FkXKn8KpXERjORyp/So0dkbKnmudTcHZmripq6LVxDuyyD5vT1qlkqe4IrQilWRcjr3F
RzxCQZ6N61FRc2sRQny6SGwzhuG4b+dPdQ4wwqg4KnBGDU0Nxj5X6djWPtL6SLdO2sSKaJoz6r60
kU5ThuV/lVw89ap3EOAWTp6VnKPLqi4yUtJE+4MuVOQagmhVxkcGqyuyHIP4VYSYSD0PpUOVyuVx
1RTbfE3cGpknDcNwamcBhgjIqnNEV5Xlak0TUtyw1VpIwSSvB9KakpXg8ipAwYZFS7x1KScTJvdP
jmOQPLk9QOv1rDuLeWA4lUrnv2NdgwDcEcVVmhDKVIDKeoNd+HxkoaMpqNSLhNXTOMeEr93JFRVv
3enbctByP7h61lvECx3LgjrXuUcVGaPlcx4aTvUwn/gL/R/5/eVqKtCAEcAfnRXR7SJ8pLCVoNxl
F3Xkzz3zF96USL71UAJ6ZNSLC38RwK9Nxsb3LHmL70eavvTFCqMLz7mnYpWC6HeYvvR5i+9QTNgY
HWn264Xce9FtLgSeYvvS+avvSgD0FLgegqRjfNX3o81fenYHpRgelAhvmr70vmr707A9KMD0oAb5
q+9Hmr707A9KUAegoGN81fejzl96dgegowPQUhDfNX3o81fenYHoKCoI6CgBPNX3o81feqpzHJz0
qfiqcRXHiVfel81femDHcAio2hJOYzkehNKwXuT+avvR5q+9UzuU4OQaTJ9TVcgXL3mr6GjzV9DV
HJ9TT4icmk42Av0zzVzjmnDoKrE4Yjuc4qUBP5q+ho81fQ1R3huvyn26U8KxGRyPY1XIFy35q+hp
fNX3qmFb0NTRJt5PWk42Fcm81fejzV96bijFKwXQ7zV96USr70zFFFguP81fejzV96ZxigEEZFFg
uSeavvR5q+9VZzhgB6UwE+tNQuFy75q+9L5y+9Ucn1pecZ5xRyBcu+cvoaPNX0NUcn1oyfWjkC5f
81fejzV96rW/O7NSMQoyalxs7Bcl85fejzl9DTAKXFFhXHecvoaXzV96ZijFKwXH+avvS+cvoaYB
UcqEkFfyp2C5P5y+9Hmr71U2t6GhgyrljgfWnyDuW/NX3pyyqSAM81Q8wA/LyferKHMg9jik42As
k4BPpUfmr709/uN9KgXpUoRL5q+9HnL71Himu6J94ina4XJvOX0NHnL6GqMs27heBT7RC77iTtWn
yWV2MueavoaPNX0NULiTfKdvAHAxUWT6mmoAagmX0NL5y+hrMyfU1dtYtq725JHH0pSjYNCbzl96
POX3p2B6CjA9BWYDfNX3o81fenYHoKUAegoAaJV96POX3p2B6CjA9BQAnmr70eavvS4HoKUAegoA
b5q+9HnL70/A9BRgegoEM85fel85felZFZSCODWdKjRybST7c9qqKuBoecvvS+cvoay8n1NGT6mq
9mBqecvoaPOX0NQD/SLfjAcelVFdkbPcdjUqFwNLzl96POX3qsk6NjPBqYYPSk42JuSCZfenI4c8
ZqHFOh++1Jod7krMFGTTPOX3pZ/9XUdJINiTzV96POX0NVrlCybl4K9fcVFby4bax4NUoXVwuXvO
X0NL5y+9C4I6DNOAHoKgBvmr70vnL6GnYHoKMD0FADfOX0NHnL6GnYHoKMD0FADfOX3pfOX0NLge
gpcD0FADfOX0NHnL6GnYHoKMD0FFwG+cvoaPOX3p+B6CjA9BQAzzl96UTL707A9BRgegoAb5y+9H
nL707A9BS4HoKQDPOX3pfOX3pwA9BS4HoKAGeevoaXzl96dgegowPQUAN85fegTL708Aegpr4A6D
JoEHnL6Gjzl9DWdcS7nwvAFWYI9iZbO5vX0qnCyAsecvoaejBhkVCKfB90/Wk1YSdxzuEODmm+cv
vUd3/wCy1n7j6n86cY3GannL70vnr6GsrcfU0bj6mq9mBq+cvvR5y+9UbUFpeScAVcwKlxsK4/zl
96PPX0NNUfMKlwPQVL0DcZ56+9L5y+9MuSFiOByeKpZPrTjG4XNDzl96PPX0NUMn1oyfU0/Zhcv+
evoaXzl9DWfk+poyfU0+QV0aHnL6Gjzl96z8n1NKCfWlyDui/wCcvvS+evoaz8n1oyfU0cgXNDzl
9DR5y+9Z+T6mjJ9TR7MLmh5y+9L5y+hqpaHM2D6d6vYHoKiSs7AM89fQ0eevoaWRRtzgVHihK4m7
D/OX3o85feoZx+6bA5xVDcfU1ShcLmt5y+9HnL71k7j6mjcfU0/ZjNfz19DUgORmsmAkyDk1qr90
fSolGwDWlVWwc5FHnr6GmLj7Q2acdjHBGGqbAL56+ho89fQ0x4SPu8/Wo1UscAVVkK5P56+ho85f
Q0iwgfeOaSfACgDFKyAd5y+9L5y+hpY1AQZAzTsD0FJjGeevoaPPX0NPwPQUoA9BSER+cvvR5y+9
SYHoKryNvYKo4oSuBL5y+ho85felRAq4xk07A9BRoA3z19DR56e9PAHoKXA9BQGhH5y+9HnL71Jg
egowPQUgIxOvoaXz19DUbjy3DD7ppZLdJWD7mHHY1VkA/wA9fQ0ecvvSSgMp24yPSljwyDgZ70gD
z096Xz19DSnaoyQMVCT5jhVAAoSuDJfPX0NHnr6GnKgAAxWaiFyx3EAHFOMUwNDz19DS+cvvUEGH
tiv8ScGopVLJx1pqAi6JlzjmpCcAmsy0zuOc9R1rSf7jfSpkrOwxnnL70ecvvWfOGMgC56VLGCFA
6mq5NBPQt+cvvR5y+9Vr3CiJM4OecUyKPFxGASe5BNJR0uBc85fel85fQ0roGXHSoUfadrgcVKVw
0JfPX0NHnr6GnAKRkAYqOcgLgAZNCDQd56+ho89fQ0yQxxwhZTjdxx1pYokhQsCWB5yeaLBoP89f
Q0eevoaZEu4l2/AVNgegpNJAM89fQ0eevoafgegowPQUAM89fQ0ecvvUgA9BRgegoAZ56+hpfPX0
NJLHuXgcio4XAO1gKdrq4Evnr6Gjz19DTsD0FKAPQVIDPOT3o85fepMD0FGB6CgQwTL70ecvvSTr
lMgdKIQrx4IHHFO2lwF85fejzl96a8A/hPPvUOxg+3HNNRTAsecvvSidPRqYkHHzH8qcuzdtUZNK
yAekqucDNK7hBk5/Cokx9obHpS3X+rH1oS1ExfPT0b8qPPT0b8qaSQ4VQpyM80jSOp+ZFH4U7ICQ
Tp6N+VHnp6N+VRCY/wB1fyqRJEbjABoat0AXz09G/Kjz09G/Kn4HoKMD0FToAzz09G/KlFwno35U
rbVGSBj6VWdtxzjAppJgWPtCejflR56ejflVWlFPlQrlrz09G/Kjz09G/KqtFHKguWvPT0b8qPPT
0b8qq0UciC5a89PRvyo89PRvyqrRRyIC15y+9Hnp71Woo5EK5a89PRvyo89PRvyqrRRyIZa89PRv
ypftCejflVeNtrZxkd6tLtZcgDH0qWkgG/aE9G/Kl+0J6N+VOwPQUYHoKlqL3R0YfFVsNLnoysxr
eVcIUcBgf4WFZ9xpCs26B9g/unmrzyIp4GSPSm/aGz0FJRnHWB9Zl/Fbh7uIVvNbfNf5FSO2+zjG
3B9fWntIsa5c4FXklWTjv6Gq9zYRzncGZW9un5VHNr759dhcwo4pc0ZXXl/WhmTXLSfKvyr6etMW
ppLCeNuAHHqKsW1uI+W5f+VbOUYrQ9JThb3Qt7ckBpOB6VdUADAGBTRUcs4TKry38q5m3NmLbmya
SVYxzyfSqxcu2WNQ7iTknmp4Iy59F9arlUUUoqKJYlLnj8auRqEGBTYwFUAdKfnFc83cylK5IKaz
5OB0qF5N3A6U5eelTy9xKPclXnpVhBj61FGMD3qUVlJkSY8U8VHux9aVTWbRNiYU4GmCnCs2hMkF
SKKiXmpVrORLJAeKTOTTSeaUVFibDxUsY71CnJxVhelZzIY4ttX3pgNNJyaBUpWFaxIKsxcKBVeM
ZYVYzgZrGp2Il2EmbJx6UwUzOTk06iwWsTQjMgH41e3bQT6VUtR1b8KmmbEZ9+Ka0MZ6uxEDnrTg
aiU08GgpovWv+rz6mkuTytOt+Il/Oork/vAPQVte0TnWsxlSRf6xfrUYNPi/1i/WiL1LexoP9xvp
VAVeJ+U/SqFdM3sY0+o6tC1OYV9uKzs1cs2+Qj0NXRlaQVVoMu/9b9RUNWLz+FvwqtmnN+8whrFF
mzfEuPUVauV3wn1HIrPjbbIrehrSPIIrejK8XEyqK0kzNzSqxUgjqKRxtcqexpKxvY2tc11YMoIO
Qazp18uUqBgdqnsnGwr3BzS3qbkDD+HrXVN88LnPH3JWKmavWcu5NhPzD+VZ1PicxyBhWNOpySua
zhzKxdvY9ybx1Xr9Ko5rUyCPUGs2dPLkI7dRV11rzIik/ssfbTeW/P3T1q+wDqQ3INZOauWku5dh
6jpSpVPssKsPtIrTIY3Kn8KYGIII4I5q/cReYnH3h0rPNZVI8rNIS5kaMEolT/aHUVFdQ7/mQfN3
HrVSOQxuGH5VfVw6hl71ampqzM5RcHdGbmp7efbhHPHY+lLdRY+dRx3AqrXM24M3Vpo02AZSCMg1
QniMZ9V7GpLeb+B/wNTuAwIYcGnJqaM1em7GerFWBU4NXI5RIP8Aa9KqzRmM+qnpUQYqcg4Nc3O4
OzNnFTV0XpoxIvPB7GqEilGw1XIphIuOjUSIHXDUSSlqiYNxdmVIpynDcr/KrG4MuVORVKZDGcNT
I5TGcjkelY8zWhs4KWqLE8IfJXhv51SYFTg8EVeWQOuRTJUEg5/OpY4ya0ZDHPxh/wA6kJqpKhQ4
PT1pEkKcdRQ1fY05VuiSWMNyvBqucofQ1ZDBhkU1wGGDShJrRjTtuRLKDw3BpxNQyIV9xTQ5H0rX
kT1RfLfVD3QN7GqN3aJNneMN2YVeDAjimmtITlB3Q07HPSWMythV3D1BorcKDPFFdqxci9DxbcTR
UTybTgCmh3bpn8K+wsflRMTjrTHlA4Xk00RSOeePrUqQKpyx3UtEFiOJDI2Wzj19atUdKKlu4xRR
QKCcAn0pAMkkWNcseew9ahEs0h/drgeppsS+fIzv930q2OMVWkQK5t5G5eTNAtB3c1aopczAqfZS
DlZMU4/aIx/fH51ZoFHM+oEUM6yHB+VvQ96mqvcxAqXXhhzx3qS3fzIgT1HBpNaXQElFFFICOaPe
Mj7wqCN9nysOP5VbpksSyex9apS6MTQ0EHoc04VAYpEPy5PuKQSsvB5+tO19hWLOT35ppjQ/w4+l
RiYd1qRSGAIpWsIimjCAFc4PrTYupqaYZgPsRUMXU1V9BovDoKpzfe/Grg6Cqc33vxNRHcZDIu08
dDyKRGKHKmrCp5kOO4PFV2UqcMMVonfQRcjcOuaeKr2ufm9KsCoasxC0UUjMFGTSAWiojN6CmZaQ
4p2AkZt52L+JqUcCmxqFHvTqTArzHMh9qYKVzlyfekFWgHxLubnoKsVDB1NTVMtxEEy4bjvTKln6
CoqpbASQH5yPUVORkEGq0RxIKtVMtwI422na3bvUtRugce9RbnQ4P60rXAs0VCJvVf1qUEEZHSk1
YBwooFFADJZBGue56VUZixyetSXed6+lRohc4UfjVxVlcaFjHOT0FWbb7w+tI6hIgo9aW2+8PrSk
7oEW3+430qBelTv9xvpVfO1CfSs0HQrSkvKQuTzgCnpayN1wo96bagm4X86dcTOZGCsQucYrXW9k
CJBbxR/61wT6dKZNcArsjGF6VXoo5e4wooqWGFpTxwvrTbsA+0i8x8n7q1oU2NAiBV6CnVhKV2IK
KKKkYUCigUALRRRSQBSikpRTEFFFFJggqK5i8xOPvDpUtFCdhmVRVy4t9xLx9e4qmQQcHg10JpiH
xSNG25asloLjl/kb61ToocbiLRs2xlHU1C8ckXLAj3BpquyfdYj6VZkJls1bOSp5qdVuA63bdECT
k96mh++1VLRuWX8atw/faomrCQ+b7lQRSrIMZw3oe9TzfcrPliaPnqPWlBXGXRwaozJ5cpXt1H0p
0dw69fmHoabPJ5r7sY4xjNaRTTEi5auWUE9ehqyKo2XQ/WrwrKaswQtFFFSMKKKKAClpKa5ydooA
UuAeOaQFj7U5VApaQhu1v71G1v71Pop3CwzLj3pQ4PXinUjKDQAtFNQ9jTqQCilpBS0DCiiigBRV
S7k2qcdTwKtis+86L9TTgtRMitkDygN0HJq/yTVCGUxMSACSMc0rzO4IJwD2FatNsTLE06oMKdze
3QVZt/uH61QigL8n5V/nV+D7p+tRNJbDRHd/+y1nVo3f/stZ1VT2AKKKK0EWrLq/4VaqpZn5mHqM
1brKW4mOj+9UtRxdTUlZPcaK94fkUepzVSrF4fnUe1V61hsJhRRRVAwooooEFKKSlFABRRRQAUUU
UAPhOJUPvWnWWhw6n3rUrKoNCOPkNQ1O33D9KgqYikD/AHG+lZlaUpxEx9qza1gCCiiiqGSwf60V
rL90fSsmD/WitZfuj6VjU3GQMds+fenTjOGFRy/6xvrUiZeIr3HSl2YmRq7L0NWI23IDVcow6g1J
A3VT+FEldXEiaobgfMp9qmodQ64qU7MYqnKgilqsC8Z5HFP8/wD2f1puL6ATUhYKOTUBkduFGPpS
rEWOWOKXLbcBGdpDhRxU0cYT3PrTlUKMAUtJvogCiiigAFLSClpAFRPOqnH9alPSsq5Uh8kcdKuE
VLcGaQZZVIB5psTYzGeCOlZ0EpQ8nj+VXwRMAQcP/Om42ENtbYwuWLA5GOlK3l+bsWQBj2p6y44c
YPrULRRifzQ5PO7bjvRq3qBN5QAJYk0sCgLu9aWQ5iJHeljGYQPUVLegED3DsxEIGB/Ee9VZAyyZ
LY3dSOBUseVJjI5XjNOdQ64NaKyAYji2cFeQ3UVZ2LIN8TAiqKqEk/eDjsaepYyt5LbR3IoceqAs
qCGGQRzVt/uN9KowvI0hEhyQavP9xvpWUtwKgVm+6Cak+SAbpCM9hVZ5HDhEbaD6UxjslDSMXyOp
7Vok2D3Dcszu8mAT0GelFuGVi6EccDIpu3zZCRwvrVgAKABVPTQRLFcncFlUAn+IdKfOAGUnoetV
QDJMsYGMHcTVy4+5+NZtWaAilCR4zJtz0okKwKrtlyTxii5iEkaMWKkD0zT28lowrYKjoDSuA1o1
u40cErTj8xWND8qjGaA2V2QrgUjOsKEA89zRrsBK8ixjHXHakjmVzx/OsyWUyH2qayVt4PYkYqnB
JDNKiiisgAUtIKWkIKjlj3cj7386kooTsMrpIU+VxVhGDDIOaa6BuoqIxshyhz9KrRiLFFVxKy8M
M0vn/wCz+tLlYEspAjbPcYplsPlJ9TTAHlIz0qyoCqAO1D0VgFqOZygBGMk1JVWdt0mB0FEVdgNZ
mbqamiGyMse9RCNz2p87EBU9uap66ISC35lP0p91/qx9ajtv9Z+FSXX+rH1pfaGyOYkSKR1AFWQQ
656g1Wn+8PpRDJsOD93+VDV0IdLFtGV6elRVaaRdp5BqrTi31Ex6yMowDx704zN6CoqKdkArMWOS
aSiimAUopKUUgCiiigAoAycUU+Mc5oAaRg4pKfIOc0ygBaKKKBBRRRQMKcrFTlTTaKAJvPb0FI0j
MME8e1RU6lZCCpIo93J4H86jq1Gw8scjilJ2QIcAFHHAqGKRmkYk8YziiaQEbV6etNg+830qeXTU
0p1Z0pKVN2fkWYn3pk8GhgrHBxn9aZbf6r8aivSQAQSD6is3TTdke/hOJMTS0q+8vuY+aBmXEbBf
qKotBKhOUJA7jkVLHdSL1O4e9Tx3kbcP8h+vFHJOHS59TguJsLV91y5X2en47fiQQQluXyB6etXV
wBgdKVSjjKkEeopdtYSbe57axEai5k9BQQAcnAqJ5d5wOgqObzCeVIUU1MkgDk0KPU3ila5MmScD
mrcS7R71HCmwe9TCspO5EnceKcWx9ajLADNNBycmsrEpEoPNTJUMYz9KmFRIlskFOHWoxTxWbJJV
p+ajU0oNZNCY+nimCnp1qWSyZBgU5mwPemA0hOTWVrsgcKdTBTk5OKTBliIYXPrTpG+XFIOlRuct
WNru5nuxRTgaYKcoywFDBl2AbUHqeabcNyBTl4qCRsyNUJmSV3cUGnqaiBqROWA96CmaScKB6VWm
bMrflU4NVZD+8b61rJ6HPBajgakiP7xfrUINSQ/61frSi9SpbGjniqHc1dzVE9TXRN7GVPqLmrVl
/H+FVM1YszhyPUVVOXvIdRe6ye6/1X41Uq5MMxMPaqOa0qPUinsOzWlC++NWrMq5Zv8AuyvoaujO
zsKrG6uNu1xLu7NUFWrsbogR2NU80p6SHT1iT2z7JR6Hir7AMpB6GsrPvWjC5eNWPXvWtGf2TOrH
qUXGxyvoabVi8Qhg46Hg1WrKWjsaxd1cvWkmU2HqOn0p1ynmRnA+YciqMb7HDDtWiDkAjoa2hNSj
ysxmuWV0ZtKjlGDL1FPuk2SZA+U1DXO3ys3VpI045BIoYfjVa8j53qPrUVtL5b4J+U1dOCCD0Nbc
3tI6mNnTkZlSwTeWcH7pps8fluf7p6VFmua7izeykjUJyPaqFxFsOR90/pT7abHyMfoanYBgQeQa
uTU0ZK8GZ9WYJs/K557GoJUMbY7dqiJrl5nFm7ipI0WAZSG6GqM8ZjPqvrU8E24bW+9/OnuAwwwy
KcrTVzON4OzM/cQQQcEVZinD8NgN/Oq86GM+oPQ1Du5yDWN3E6OVSRfkAZcMMiqM0ZQ+q+tTxTB+
G4b+dPfBBB5FJu5MbxdigHKtletWI5Q4x0PpUM0Wwkjlf5VBnnIpWNrKSLr4IwaqSx7eV5FSJLnh
uvrTjU3cWCvEqBipyOtSLIG68GiWPPK/lUB4rZJTNLJk7GoXTPIoWT+9+dMmuYYjiSRVPpmnGMr2
QJNDDkH0NOEmevHvWdcaopyIo93ozHH6VQeeaYkFiQew4Fd0MLOXxaDlKMVzS0RtNdwKcGVPzorD
ELEdhRW/1KPdnnyzfBRdnUR5go3TYPrVsVWtly+70qzX1Utz8+QtNkkWMZY0yeYRjA5Y9KjjhLnf
LzntSS6sBPOkkbES8eppdlx/fH51ZHA4oo5uyAginYPslGD0Bqdvun6VDdIGi3d1p8Db4lP4UPug
I7JvkK9wc1YqrKDDN5g+6x5FSm4jGMEsfQChq+qAnpCwBqA3GQdsb59xim+Y/wDzyP50uVgy1QKr
LMy/eibHtTxcoPvK6+5FDiwJJzthc+1R2akQ5Pc1FK/nyqinC+tWwAqgDoBQ9FYCKeYR8Dlj2pg+
0OMghfam2w82RpG59Kt0P3dAKpkmj++oI9animWTpwfQ0+oZrcN80fyt1ounuBPSFQ3UA/WoIZju
2S8N0zVipasBBcRqE3KACD2pIDlMehqdxlCPaq1ueSPWrWqJZPjIIPQiq0XU1ZHBqN0xIWHQ0rgi
yOgqnN9786uDoKgH3j9aS3GEa7UAPWnEAjBANLRQSIAAMAYFKKKa7bFLHtQA+kZQwwaqi4fPOCPS
rMbhxkflTaaCw3yl96eAB0GKWilcBRTZDhCacKhnbkChAQ0opKUVoMkhOH+oqeqqnBBq0DkZ7VMi
SGc/MB7VHSscsTSVSGFW1OVBFVKmgbgr+NTJCJhQVDdQDQKWoAj8lfenqAowKWmSSCMc8n0o1YEg
oqp9ofPbHpVpTuUH1ptWAUgEYIBoAAGAMCiipYDZQWTj6022+8PrUlC/6xaL6WGid/uN9KoTufud
utX3+430qp5BkfcSAlEGluHQLMbFeRvu4qqx3MSepOas3EqhPKj+6OtVq0j3AAMnA61YW0kOM4FR
26lplx2Oa0qmcrbDII7VFwW+Y+/SrAAAwAAPakp1ZNtiYUUUUgCiiigYUCigUALQOelRXEwiX/aP
SqttPsYhvuk5+hqlFtXAv0opKUVIgooopMEFFFFAxRTJIkk+8vPqOtPFLRewilJaHP7tuPQ1BLE8
RG8dehrUqvfKTCCOxzWkZu9mIoVbsyGjkjPU81Up0TmNwy1pJXQAC0b+jCtC2bcS3qKikjS5XfGc
P3zUlqpX5W4IFZzaaAln/wBXSbAyj6Us/wDq6VPuj6VmBWktlPbB9ulRi255bj6VfoqlNiIYY9gA
GcVOKSlqG7jFppcCmkljgdKcFApiEBY9BQGOfmFPpCMii4C00f6yhO4okHQjtSDoPopFORS0hikg
DkgUAg9Dmsu4cvM27sSBUlkxWbA6GtOTS4GhRRSM2B71Aho/1hp54pqDA96R+WC0CF3k/dFG5h1F
PUYGBS0rjsNVgadTWUH600MVOGoD1JRUE0IfqOOvFTjpRSTsBQNqM8MfyqWO3UHOM/WrVFXzsVhh
UBD64ot/un60r/cP0pLf7p+tSPoR3f8A7LWeFY9FJ+grSm/1i/SirjKyE2Z/lSY+4fyppVh1Uj6i
tIUtVziuUbY4mWr1NKKTkgZ9adUt3Bj4+pqSok+8KlqGNFO7/wBYPpUFWLwfOp9qr1rHYQUUUUwY
UUUUCClFJSigAooooAKKKKAFX7w+tatZcfMi/UVqVnUGhH+4ahqWT7lRVERSI7ptsJ9+Ko4PpWky
q2NwBxSgY6VopWC5nCJz0RvypTFIOqN+VaFFHOFyjAP3orVX7o+lV3+7Vhfuj6VnN3GndFaX/Wn6
1YjXaoFRAZuD7c09pVBxyaW6sDJKaUBORwfWo/PPoPzpyygnBGKLNBckp1Np1SAlJsX+6Pyp1FAC
AY6UoooFIBaKKKACiiimAClpBS0gGSyBB71ny3AYnABzVu8jLjj0xVDyHz2/OtoJWuIYTkk4A+lS
wM24AHimPHsxkgk+lTWabmz6nFW2rAXGOIxuALHpmmOyQAeYCWPalLr5hdzhRTpFimjDt8wHTBrE
B4IkiyvQjiiA5jx3FMQOygL8qjgU+KMoxyQaTtYCrz5kwJ+bdTIkZCSxGPrVyWBJTuBIYdxUZsww
O52J7H0q1NBYjkxsJIzgU6G1BhVldlYjPtQLaRiBK6lO4HereQi+gFKUuiAqpCYpPmbcSauP9xvp
VYuXcHGBnirL/cb6VEr9RlL7OZm3BtuKS5txGituZjuAJPpU0Umw8jg1OwWSMr1BFVzNMTKYwBxw
KiljZ3BB4xU32WbG3zF2dM45xT/sgH3JGUelVzJdRWGQ/wDH0mOwOfpVif5iqjvSxRJCML1PUnqa
Ro2ZywYVDabAhu7honCKoIx3HWpZYgPmUdO1ISyEbwGA74qO4nkWYLHypx2ppXtYCUtmEFOPUCs6
VmZiGPStEALIydmFULldsn86qG4IjVtpzgH61ahucHpg9KgSIuuVI+hpRA+e1W7PcDVjYOuRTqht
lKx81NXO9xgKWkFLUiCiiigYUopKUUABAPUZpNi/3R+VLRQIUUtIKWkAlIqKvQc+tKTgZNRNOP4Q
TTSb2AmqOZNycDkUwT+q/rT0lVjjofenZoCK2/1n4VJdf6sfWmxDbORTrr/Vj601uDCVNyAjqKrV
eXtVSZQrkDpRB9BDRS0gpasQUUUUAFFFFABSikpRSAKKKcjbGyKAG1KgwtOZRIu5Oo601Gz160r3
Bg4ytRVK7Y6daeiiNd79aV7CRBRTnYu2TTaoAooooGFFFFABTqbTqBMKKKKACrES7YznqahiUM4B
6VaPQ1E30Ghtt/qvxqK+6D6f1qW2/wBV+NQ6h9w/SkviBGezc4FNpBS10jLOn/8AHyo7EGrU935M
pTZnA65qrp//AB9L9DRf/wDH030FYyipT1N6OKrUHelNr0ZaS+jI+YMp/Op4njf5oypPt1rFoxUS
w8Xse5h+JsTT/iJS/B/18jfDGn7x71iR3MsYwGyPfmp47/A/epn3WsJYZ9D3sPxNhqllO8X57fej
R3Fjk1JGMmqUV1FJ0O0+jcVZSQjhSDWE6bWh7lHHUa8eanJP0ZcHHSniqqz/AN4flUqTIfb61hKD
NuZMnBp61ArZ7jNSqaykiiQGng1GKeKzaIJBUi8ColqQGspEseTxSCm55pRU2FYkFSxdM1CKnXgY
rORLHlsAmowaHPIFJUpaEpDxUsI+bPpUINTw8L9aieiJlsT7sKTVfrT5DhTUQNZxWhKQ8GprfmUV
BU9r98n0FMUti6Diqm7JJqd2wjH2qqDTbM4IlBqWA/vV+tVwamgP71aaeoSWhoA1SJ+Y/WrYNUif
mP1rWcjGmtx1TWxxKKrg1JC2JF+tKMtS5LQ0Ccgis/pV8GqMnEjD3reo9jKn1DNT2jYkI9RVbNPj
OHUj1pRnZ3LkrqxoSLuRl9RWeeDWhmqMy7ZGz35rao+plS7Das2b4LKT7iqtORtrhvQ1nGVnc0lG
6saEq+ZGVrOrRDAgEdDVK5XbJkDg81rV11MqT6EdW7STIKE9OlU6VH2OGHasoz5Xc1lHmVjQmUSI
R37VnnIODWgGBAIPBqrdpht46HrWlXXUzpOzsQVbtpS67SckVSpUcq4YdqxjU5WayjzIvzIJEI79
jVBgVYg9RV5GDqCOhqG6TPzjqODTqa6ozpuzsyrVyCXeuD94frVImkVirAjqKwU+VmsocyNCVQ6k
Gs+QFGKnqKuRyB0z+dMnQSL7jpTmubVEQfK7Mp5OcjirMM28Yb7386qNwSDxTNxByKyUrG7hzI0J
AHBB6VQmQxt7HpVmKXeuD94daVwGUg9KHqTG8XYzycVPFNu+Vuvr61DKhRsHketRk1KRtZSRePTm
qs0eMlenpTVukUbZJFGPU1TuNZto32rvk90AxVRp1JP3VcIppkxp6y44Y8etYdzq8kjkwosa+/Jq
lNLPcHMhZh6dBXdDAzkve0LlKMVebsdJdX1vb8PIC391eTWZd6srcW6c/wB5v8KyxC3sKZL8jYHp
1NddHL4R31PHr57gqG0uZ+X9WLE17PJyXKgdl4qsWHc0zvRXoQoRjseFiOKK89KMVH11f6fqPRwG
G4AirigYG3GKoVbtiTFz2NVKKWqPBrYuviHerNsloooqDA8vgXan15pZX8tCe/an1VP765A/hWva
WruzrHW8e4+ZJyT0zVmiipbuAUUhbFRyTbTtUFnPQUkrgSSMoQ7yADxVW3Mhj2oABn7x7VKkJLb5
Tk+nYUx4Ailt5Aq1bYBZY1RSZGZ2PQE0tmjKCW4z0FQxwvKu4tx2zUoSdBwwb2pva1wLdNKjNVxc
spxKhH0qwrqy7gRios0Ao46U2ZWeIhTg1C9yMkRqWPr2oxcSDsgos1qAyBY3GxxtkB4PenyLLEjY
fcmMHPUUxreQAvuBYc8UQx+cpy7ZHUGq8wJbN18sLkbueKsVD9nXywuTkdG70gdoiFl5XswqWr7A
T0tMDA/Sn1IEU8QkXj7w6Gm20hOUf761PVa5Uo4lXj1qlroBZqo/7uY8cZz+FWlIZQR0NMnj3qCO
opRdmJgORmkfpUMcm3hulSscjim1YS3LA6CoB95vrU46CoB95vrUoY+iiimSFNddyketJvG/bzmn
ijYDPIIJB6inxsUcEValiWTrwfWq7xMnbI9q05kx3LgORkUVDbNlNvcVNWbVhMCwVSTVUkk5PWny
vuOB0FR1SQIKUUlKKoYtO8z5dlMJwKjzzmi1xEtFIDkUtABSqSpyKSgUAXFORkdKWoIXwcHoanrJ
qwhGIVST0FUXYuxJqe6bgIOp5qOOFn56D3q46K40MVSzADqavqNqgelNijVBx19afUydxNhRTRIN
23mnVLAKF/1i0UL/AKxaQ0Tv9xvpWfO7Z25O30rQf7jfSs2b/WGqp7h0GUUU+GIyvgcDua1bsBZs
UwrP68CrVIoCgAdBS1zt3dxiMcKT6DNUw8hyQzH8aunkYNUUJjkwfoaqImSpcMPvDNWUdXHymoGR
W/8ArU224mYexoaTVxJluiiisygqOaURJk9T0FLI4jQs3Ss6VzI5Y1cY3ARmLsWY5JoZSuMjGRmn
28Jlb/ZHU1buYfMUMn3l4xWjkk7CIrSfaQjnjsavCser1pPnCP17GpnHqgLVFFFYsEFQyXCrwvzU
+f8A1LZ9KrQoGGT61cUt2Ddg8yVycEj6cVLaOzFgxJ9M02ZtqYHen2akKzHvTewkWKR1DoVPQjFL
S1mMyHUqxU9QcUlXryHcN6jkdfeqNbxd0IVWKnKkg+1aFqxf5m6kVnVoWX3fwqamwE0/+rpU+6Pp
ST/6ulT7o+lY9AHUUUUAFM++cDpSucD605BgUxCgYGBS0U13VFLMcCkMdRUEdzHI20ZB96noatuA
z+OpKYVJORTeScZzRa4thR9/5elSVGAy9AKUP6ih6hsMmtlkbdnae+B1pYLdYiSCSfWpQQRxQWA6
07u1gFqMff8Ampd5PQUEM3XFITH0xf8AWGkG7OM4pyqQTk0bBuPFLSCoHu41bbyfcdKSTexRYpCA
RzSKwdQynINOoEMQ7TtNSU11yvuKEOV96TAdRRRQMa/3D9KS3+6frSv9w/Skt/un60w6DZv9Yv0o
pZf9atS4HpRexLRCKdg+hqUUtHMKxBRU1GB6UcwWIh1FTUwoKcOlJu40QXg+VT74qpV26GYT7HNU
q1hsJhRRRVAwooooEFKKSlFABRRRQAUUUUASQDdKo960qoWY/ffQVfrKpuUhkvao6mKBjkmlCgdq
hMTVyGlwfQ1NRT5g5SHafSjGKmopcwuUrv8Adqwv3R9KZMB5Z4p6/dH0pN3GlZFdwTKQO9S7EjUl
8fU0if8AHw30qjdzGSQgH5BwPerim9Bsu/aYOm4flSlVkXdGR+HesqpbeYwvnnaeoqnTtsIvwsc7
T+FTMwUZJxVeTAYMp680qIz/ADMcCoaW4h7Tf3R+dJukPQH8qjkuYoiVRdzDv2qL7c/9xaai+iGW
RKwOGFTIwYcGqsVyk2FkG1jx7U9gYmBHSpcegFmikU7lBHelqACiiimAClpBS0gCmSKNjYAzin0U
AZEoPmng89KuWi7ELHsKnMKk55FEoCxECtHO+giPyRLDgkjnOaRYlQpEM46k+tMnWUxx+VnHfHXN
SjKuhc87Rn60AV7q5YuUjO1RxkdTUtgp2vI5PPHNEkELuW3EZ5IFSbgVCRjao4yaHa1kAkaEqSpw
aeDKOwNRXEEjBfKbgDkZxn3qUMyKiH5mwMmluAHzT2xTNhaTaST6mmIk/wBqJOdueeeMVPB1cnrQ
9ACUAOgHAqZ/uN9Khm/1i1M/3G+lQMhhUOjA0xFYOyg4I/WpLbo1D8XC49KpPoJ7igyjqoNIfNbj
GKRblHkMa53ds9DT0kJjY4yw7UtV0AjZdkiljn3qC/BjlV1JG4djT4ZXuCVZQMcg1IxDoY5gfrVq
6eoiK0uC7eVL82eh71NE4jVt5wF70yGGGJ9wfJ7Z7UojEwcEkAnPFJ2bAe8isFdGzg44qC9jySR1
6ipfJEMOAc85yan2ho1B9BSTtqgM21B3nFam0dcDNMSJVOep96kpSlcYUUUVIAKWkFLSEFFFFAwp
rOEHPX0okbYuaijTflmPFNLqxMXzXb7o/Lmk3yL1H5io5bxUysS5x3PSoxfvnlFq+V9gLaTjPzDF
TKQwyDkVVimhnO3G1qVlaE5B4qXHoAsrGR9i9BTz5UCguQPcio42EaPI3as+WRpXLOef5VSjfQDS
+0wNwWH4inPErDKYH8qyat2ExD+Wx+U9M9qcoWV0BZgz5pz1xT7r/Vj60L/x8t9KLr/Vj61C3Bkq
9BVa5/1n4VOWCrk1VZizEmiC1uIQUtIKWrEFOUBh702lQ4ahgBUikqamuBjNK4hfLHk7ieajFTnm
247VAKSGFFFFMCSF9r89DxSzLskyOh5qKp5PnhVvSpejAbCu+TJ6Dmkmfc/sOKfH8kDN61BQtXcB
aKKKoQVJ5YMW4dajqccW/NJjIKcFJp6AYBp1DYrjGAVfU02hzk0U0AUUUUASW/3/AMKsHoaqKxVg
RVoMGTI6VnNa3GhLb/VfjUOofcP0qa2/1X41DqH3D9KF8Q0ZgpaQUtdIFnT/APj6X6Gi/wD+Ppvo
KNP/AOPpfoaL/wD4+m+grP7YFanRozthRk02tG3jEcY9TyacnYTdhiWqL97LGnNbxn+HH0NTVDcS
iNOPvHpWd22TqUZFCyMqnIBxXnfivxHcvqXk6bcyQw25I3wuVLt3z9ORXeXk0MFtJJcyCOID5mJx
ivMNb1C3vpBBptikMPmZVgv7yQ+/1NezldJTm5Sjf8jtwianzLodf8O9du7p7q3vLqaeVQHUytu+
XoQPxx+dd0t1nqmPoa4vwRoUmlQSXF0cXFwqjZ/zzUZ4+pzz9BXVrX0EspwlaN6lNX8tPyPThmeK
ou0Ju3nr+ZfWZeoOKmSd+quT+OazlqVCQeDivKr8L0ZL91Np+dn/AJHpUeI6qf7yKa8tP8zTW7YD
lQamju0P3gVrLVj6/nTg31ryK/C1eL/d2l87fmenR4hw8l791+P5G0lxETgSL+PFTbs9OawaeGcD
5WYfQ15FbI8VS1lB/df8j0KeZYar8M1+X5m5TgaxVupYiAXPPQN3qcahIDyi/rXmzwtSLsdimnqj
Xj61KDWXHqcYHzRuD7YNTrqFu4xvwf8AaGK5p0JroJ6lrOTTgahSWNhlXU/jUgNZtWAeOtWV4Aqs
nJFWAaxmRISVskCm0jHLGgGklZBYcDVm24BNVaswcJUy0IlsTyn921VQalmb93j1NQA1JMVoSA1N
bn96tVwaltz+8FNBJaGiDVIn5j9asg1TJ+Y/WrkzKCJAacpwQaiBpc1JVjUzVSfiU+/NWFbKg+oq
C6+8p9RW83oYQ0ZHRTc0uaz5jU0IW3RKfaorsH5W7dKbavlCvpUk3zRkd66ObmiYW5ZFTNGaTNFZ
cxvYvWz7osenFFwu+PjqOar2z7ZMdjVvIreMuaNjnkuWVzPzRmllXY5FNzWDZutS1aycFD9RUzrv
UqehqgrlWBHarytuUMDwa0hO6szGcbO6KLDaxB7UmanulyN47daq5rGWjsbRd1csW8u1tp6H9KtE
1mE1bgk3pg/eFVCfRkVIdSGdNjZH3TUJNXZimwiQgD3OKyZ7y3gJEk8YI9DUuDb91GlN8yLUchjb
PbuKt7wwyDwa5yXW7VT8vmSf7q/41AfEbICIYAR/tt/hWsMPWf2S5Um9UdHcR7xuH3h+tUiawbjX
7yVcIEi90GT+tZ73Fy5LPLLk9fmIrVYCct3YLxpK9SSS82dPLeQ27fPMisO2cn8qZPr1qiApukY9
lGMfnXLKrOf6mpBCO5P4V0wy6K+Jtnn1c4wFPepf01NSbxBI6FVgRfQls1mteXUh5mk/4CcD9KAi
joKdXVDC04bI8ytxPTjdUad/Ug8t2bLdT3JzTxCO5NSUVuopHkV+IcbV+FqPov8AO40Io7CqV3Kx
lKgkAccHrV+suYHznHU5rWmlc8erWqVXepJv1dy1YyMwZWJOORmpblcqGHam2kRjQlvvGpyMgg9D
SbtK6MyjRSsNrEelJWogAycDrV5F2oB6VWtlzJn05q3WU30KRnTzuZW2sQBxgGipprUvIWQgA+tF
aKUbE6nnp4FQWY4Zu5NWKqo3kSlX+6ea9NbWO4t0UAgjI5FMlcRoWP4VAEczlTtXljSwR7OTyx6m
lhjIy0nLnrUtU30QrCiqs2ZphGD8o61ZY7UJ9BmoLReGkPVjQtNRlhQFAAGAKKjklWPg8t6Cmjzn
IyRGPbk0rATOFKkPjHvWc+3e2zhM1YnhVY2ZmZm7ZNOghRoVJXJI61UWkrgPtxGEHl4yRzzzU4qj
bRK+/dnIPBFT+XIo/dyE47NSktdwJ6qSjyZ1kX7p61Is+07Zl2H17U+dd8LAc8ZFJaPUCTr0pkih
lwRkUy0bdCOc44qap2YFQEwttblD0PpVwdKYyKykEcGo4GKOYnPI5U+oqnqJE9MnAaFs+mafVa5l
BHlock8HFKKuxj7T/UD6mp6jhTy4wvepKT3ERywh+Rw3rUCoyMQwOP0q5Uc33R9ad+gEg6CoB95v
rU46CoB95vrSQD6QnAJpajmbC49aaJI4+ZB+dWBUcK4GT1NSCnJgLRRQTgc0gEwM5xzUUr54H40S
SZ4XpTYsFsEZBqkrasBlFWTEp7YpphHYmi6AgpRUhhPYg1E4YHFNDGscn2ptO2n0pNp9KoBVODUl
R7T6U6MHIFAh1AqQQt3Ip4hHcmpckIhqaKT+FvwpyxKOvNRzABgAOlTdPQCfAznHPrS1DHL2b86m
qWrAKKKBRQBXPyv9DVgciopk/iH406I5T6U5aq4D6F/1i0UL/rFqBonf7jfSs2b/AFhrSf7jfSoI
4VZt7c+1OLtqPoVoIGlOei+tX40WNdqjAp1FKUmwCiiipAKguoiSGUE9iAKnp1NOwmUt0igZU49x
TUfbLuHrzV+oZIFbp8p9qpSXUViWhiFBJOAKjgDqNrjgdDVe8ly3lqeB1qVG7sURXEplfP8ACOgp
IYjK+0dO59KaiF2CqMk1oIqwptXr3NaSfKrIBcCNAicAUK2DTaKzRFyO6hyPMT8RVQVpIcfSq1zD
s+dPunr7VcZdGMsWs3mLhvvD9amrLRyjBlODWkjh4wy9+1RONhkV2+FCDvyagR2A2oOamWEuxaXj
PYVOqqowoxTukrBa5T2ySOMqR2zirqqFUAdBSilqXK4WClpKWpAKq3FqG+aPg9x61aopptbAZDAq
cMCD6Gr9l938KlliWQYYfQ+lMt12ErnOKqUuZCJJ/wDV0qfdH0pJ/wDV0qfdH0rPoA6iiigBh5kF
SCo24YGpFORTYhap6hnCelXKa6q4wwBFEXZ3GZP061rjoKjSGNGyq81LTnLmAaxwKVBgZ7mmnl8e
lSVLBBR1oopAMYbSMUqAHk9aF5cn0o+7JVEj6KKKkoa47jqKVTkZpaYnDEUCFlz5L7euDismtkVE
beInOwVcJKIyLT8+W2fu54q3SKoVQFGAO1LUyd3cBRTE4dhTiQBk02PkljUiY+iiigY1/uH6Ulv9
0/Wlf7h+lJb/AHT9aYdBJf8AWrUtQXBwwI64qozM33iTTUbiZo+Yg/jX86aZ4x/GKzqKrkQrmkJo
z/GKXzE/vr+dZ1FHs0FzTBDdCD9KWssHByODTxNIOjmh0wuX2GVIPcVnVOty4HIBqFiCxIGAe1EE
1uJiUUUVYMKKKKBBSikpRQAUUUUAFFFFAFyxX5Wb3xVqs+OdkTaoH1pDNIerGs3Bt3Hc0SwUfMQP
rTTLGOrr+dZp5OTRSVMLl83MY7k/QUn2mP8A2vyqjS0+RBcvieM/xY+tPDoejL+dZtFHs0FzRm/1
Rp6/dH0rPjZs7cnHpWgv3R9KzkrD6FadthlOcHbgVn1fnUO7BiQM9qj+zxEffcH3FaQaSBlSipza
t/Ayt+hqOSGSP76kD1q7oRetWWSAb/4OM+1QXNyX+WM4T+dQLIyxMg6Mcmm0lDW4BRRRVAFakJMt
qCeTj9ay61LEYtRn3rOpsA63PykVNUFv95qnrGW4IKKKKAAUtIKWkAUUUUAFR3H+r/GpKiuD8oHq
aa3BiSyiCJSRnPFOjKzRh9vWmOfMABj3D3pylwoVUAA6VVtBFeOVWufL8v5ckdTmp7uEyRAJgYOf
SjY+7cFUN68UMB/y0k/AUX1ugCJjHEqfeYelIAVkUv35pGmSPoAPc9aVGEyYzk9QaduoDLiWdZws
YO3/AHc5qdkYMWTr3FLHJn5W+9UKLcfaskny8+vGKQD2Ysy7hg1Yf7jfSqvnCWXCg4U4z61af7jf
SpYyvGzKCEXJPenxjEmZGG89Bnmo4JQsojIOW5BpJLVmuRJuG3OT60/UT3JUt4o5DIAQfrwKYu7l
09elSSPuOxOc9ajklEIABxjr7mhXYiVJFPopqvG0z3G2RSUyeq9Pxp4kjkHIx7inAHH7uT8DRsBH
dssJUKgOc9Samb5IWeNfmK5xTWR2GHRW+tOLyf3KOwyCCSSWJ/M5A6HGKuJyi/SoWkYqQy4zUkBz
GPalIXUkoooqRhRRRQAClpBS0hBRRRQMguOXAFNvWMduFXjJwac/+vGfao9S/wBUn+9/StFukIz6
KKK3AKvWtzu/dTcg8A/41RopSipAaGoEIixqMZOao055GkVA3O0YBpyQSuMqhx6nipiuVagR0AkH
I6irC2p/jdV9hzT/ALPEP4nP4CjmQFqJt024dCoP6U66/wBWPrUdqArgDOAO9SXP3B9ax6gyB3Ln
np6U2iirEKKWkFLQIKKKkj8sD5+tDdgAOMc0MQVPNOzCR6UGEFcoc1F0FgtyCGQ96iIwSD2pfmjc
EjkVLMAyhxT2YENFFFMAqeI5hdT2qCprb7zD2pS2BCy/LCi+tQVNc/eX6VDRHYGLRRRTEKoyQB3q
W4IG1R0FLCoVS7VH80jcDJqd2McCAo5oZhjinCAAZdsUuYR7/nSuhWK9Op8vlkfJ1plWncGFFFFA
BTkcr06HtTaKALVt/qvxqHUPuH6VPbf6r8ag1D7h+lZr4ikZgpaQUtdIFnT/APj6X6Gi/wD+Ppvo
KNP/AOPpfoaL/wD4+m+grP7YFcdRWoOlZVT/AGl9gUYGBjNElcTVy3NKsa88n0rJ1C8jtoJLm7cL
GgyT/QVKxLHJOTXm3jjVXvNSezRv9Gt2xgfxNjkn6ciuvBYX29Tl6dTWjS55WKms6reeIb9Y4kkM
WcQwKMn6nHf37V2vhjw3BpaLNOFlvT1cjhPZf8a5HwrrNlpMxNzbEs/BuAclB6Y9OK9NQhlBHQ8i
vtMLRpwilHods/dXKtETCpFqIVItdhkSpUi9aiWpV60hki08Uxar6nqNrpdlJd38ywwJ1Zu57Aep
PpUsaLkkiRRtJK6pGo3MzHAA9Sa888XfEmK18200BRNcg7TcsAYl9do/iPp2789DxnjDxpe+IGe3
jzbabnAhGMyDOQXPr04HH1rlc1zTrX0idMKNtZGjf6zqWoXP2i9v7mWb+9v24+gXAH4Crll4r16z
AFtqtyqjoHxIPyYGsLNKDXJOnCp8aT9dTqhOVP4Hb00O2sPiPr9vgXD212vcyxBW/NcD9K9J8DeJ
4vFFvOPK+z3dvgyRZ3DDZwQeM9DXgQNb3gvVzoviSzvGmaKDd5c5AzujOMg/iAfwrknleEqP3ofd
p+R0xzHFU17s/v1/M+hjA46YNCtNGflMgPtmrMbB0VlOQRkGnd6xq8N4efwSa/E0p5/Xj8cU/wAC
Jb+6TpKfxUf4VYj1idfvpG36U360nlIeqL+VebW4ST+CSfqrflc64cQwf8SDXo7/AORYGrp/FE+f
Yipk1S3b729fwqgbeM9sfQ0w2i9mb9K8+pwnXj8KT9H/AJnXDPMLLe6+X+RtR3lu4yJkH1OP51ci
uISAFmiJ9A4rlzaN/C4P1GKYbWX0U/Q15tbhrFR0cH+f5HRHMcJU2qL56fmddM2QuKZXKCGdPugj
/dNSrPexDAeUfXmuOeR4mmtYv5po3hXoy+GafzR04NS25/eCuT+3Xo/5ayf98/8A1qemq3kZz5gz
7rXLLLqsd7GtuZaHag1TJ+Y/WudXxBdjqYj/AMBoGtz55jjP51DwVV7WJjTaOjBpwNc3/bk3/PGP
8zS/27N/zxj/ADNL6lW7D5GdjC2Yl+lMuvuqfQ1y8fiSZFx5EZ/E0r+JJXXBt4/zNV9Uq22MvYyU
rm/mlzXN/wBvzf8APCP8zSf2/P8A88YvzNT9Tq9i/Zs6u2fEmPWrea4pPEU6sGEMXHuakPie67RQ
j861hhaqVmjKdCTeh0b/ACuQaTNcrL4gu3bP7pT/ALtQtrV43SVR9FFR9TqX3RqqUrHYZ96vKwZQ
R3rz46pfdfPfH0H+FV5vEksQKS6kqAHkFgMVvDA1UyJUebqeiXS5UMO1UpJo4/8AWSIv+8wFcHb3
51EEw3TXC7tpPmFhnrU32WX+6Pzrpp5NXre9BN+iZEp0qPu1JpfM7I3tr/z8wf8AfwUxddsYQVab
d6bVJrkls5D1Kj9aetn/AHnP4DFdtHhnFSd+V/Oy/M5qmYYOOjnf0udJJ4ntBwsMzj8BVCbxCMfu
YDn/AG2/wrNFpGOpY/U08W8Q/gB+vNehDhOtP47L1f8Akc7zjCQ+FN/15j5dcvH+75afRc/zqjd6
9LAu661FIF6ZZ1jH9K8l+IV5rGm+KpUa6nS0yJLZA+FKYGcgYzyD1zXMytd67qHCh5MEhegUV1U+
GKcFepJK3ZfqzOWdpu1Knf1f6a/mey33inSocefqcUrNwFjk8wn8BmoJPEloihljlK+4C4/OuAj0
VdPj3xDzXA5bHP8A+qltpHmYfaydn8I/xrN5fQj8LbOqONrNapI7C98TzEAWNunP8Upzj8B/jWPf
6xq9xAyxX5t3PeONcfqCf1qPaAo29McUxlq4UKdN3UV89fzM516k1Zyfy0/I5yHX9c0jVftD3c0k
g4ZZSWSQenP8x0r1fw54ks/ENrutj5c6nEkLkbh05A7jnrXAXtpFdReXMuR2PcH2rm2W90K/S4tJ
mikXPlzL6ehzx+Fd9TD0cdGySjNbdj5zH4Fy9+9/P/M+gVAAwKWuZ8FeKofENu0ciiK/iGZIxnDD
syn8Onaumr5ytSnRm4VFZo8KUXB2YUUUVmSRzZC7lOCKYtxx8w/KpZBmNvpVOrik1qJk5uPRfzpY
FVmMhUb89ar06J9jZ7d6bjpoK5copFYMMqcikdwg5PPpWVhlaf8A1pxTKVjuYk96GRlAJGAa3Wgi
xaD5WPvU9U4JNjc9D1q2pDDI5FZTWpSFoprOqnBIBoqbAea010VxhhVdRNIMlto7Up8+M5zuFe1b
zOwGt2U5jc/jUTGQ5LNnYanNwrRNjhsdKbIFjtQp4Y84ppvqBNG+YQ7kD1qJrgswWFcn3qOGJpQC
x+QdBVxVCDCjApOyAqvHMVZnbgDOM1HF5hOIyc45FW53IARPvt0qGMm3kKv9096aegBbOqOVcYcn
qauVDPGJUyPvY4NJayFl2t95al66gPuRmFvzpLcj7Op9BUrDcpB7jFUA5iSSNuvShK6sBNZHPmH3
q0Kitk2Qr6nk0+VxHGWP4UpavQZHcyoilSAxI6VWKSrFuOQn1qe1jz+9fljyKLqTd+6TknriqWmi
EQwxyMm6Nsc+tS+dJEwEqgj1FCZt3Csco3f0NWiMjB5FJsBsbrIMqaqbpZSWyPk5qSWAqd8JwR2p
LJgCwJwx6UKyV0AJHJKAzPwfep4oUj5HJ9TUSsIJJAeFPIFJ5k0p/djavrQ7v0AtUtVWS4UZD7va
pIJt52sMOP1qeUCeo5vuj61JUc33R9aQiQdBUA+831qcdBUGQGbPrQgB3C8dT6U1EJO5+vpTgUB6
gGgyKO/5VXoSPoFRGb0FRs7HqeKOVgTvIq8dTULuWPNMpapKwBTkOHBptFMZcFFIvSmSybRgdf5V
mIJX2jA61AKCcnJoFWlYBaKQ8Co8nOaoCWikByKWkBPE+eD1qWqdTxSbhg9aiUREoqtJzI31qzVQ
8k0RAKkRyv0qOlqhlpHDdOvpTqp09XYdDxUuIizUbKVbcn5Ugm9RTxIp7/nU6oAVw3TrTl/1i03K
E5yCacpzIuKTGid/uN9KZF9wU9/uN9KZF9wVIySiiikAUUUUAFOptOoYmFFIzBRljgVSnuSxxHwv
r601FsCxPMsYIz82OBWd9aAM8CrdtbsGDvxjtWiSggJLaPyo8kfMalCE8mo551j4HLenpVKSRpPv
nPtUqLlqFi8zwr1fn2pPOhP8WKoClquRAaShWGUbNOA42sMg1ljg5HWrMF0V4k+YevpUuDERzxGJ
8djyKfaTCMkOflNWpoxNGApHqDVCSN4zhhj3ppqSsxmoCCAQcg0VlxyNGcqfwq/BOsvHRvSolBoC
YUtIKWoAKWkpaACiiigAqOP/AFr1JUcf+tegB0/+rpU+6PpST/6ulT7o+lLoIdRRTCxP3RRYQ8jI
pu0g/KaTLjtTlYH2NPYAy47UIxJOafUQzk7aNwHlgOtIGY9BSqoHXk06kBGM7j604Pg4YUjcNmn8
MKGCFopinadpp9JjGp940N/rKD8rg9qE5YmqJH0UUw/M2O1IYbiThRSfNv8AennCikQZJJoEAYjq
KeCD0oFNKenBpDBmIOBRlz2ApoJ3jdUtN6CWowIT941IOKYXxwOTSZf0pBsSUUwPzhuKfQMa/wBw
/Skt/un60r/cP0pLf7p+tA+gy5+8PpVKrtz94fSqVaQJYUUUVQh1FFFMAooopgLRRRUiCiijpQMK
KTI9aWgQ+SNoyN3eleNkVS3erMP76Eb+cGobl90pGeBxUJtuwyGiijI9RViCiiigBRS0gpaACiii
kAUtJS0AFFFFADo/vitJfuj6Vmx/fFaS/dH0rKpuPoQMSsrkU9AHQllFMO7zm2dadmUHkE/hS6Ax
EVXJAyDRsdehzQsiqfuYNLtDSbgw9femIidY5f8AWLtPqvFQy2rqNyfOvqKuzFRgMMmmBWTDIcg0
KTQzNorRkjS4B/hk9aoyxtE2HGPQ+taKVwGVrRgx2wB6haz7SMyTL6KcmtGYMVAUZHeoqPVIBLYf
KTU1VlZ4x049xUqTBjg8Vm09xIkooopDAUtIKWkAUUUUAFFFFABRRRQBVu5ivA+lU2kZupwPatCe
ESf4VA0IhXOBnBraLVhFOpYZdh5PFRVJJHtVT2xzWjA0RiUZ6MPSgO0fDjI9ap2bkNjsK0hyKwku
XQCuwTzAyDG7rVl/uN9KruoWQY6GrD/cb6VDGV4ii5dgN3QU7LzdBhaSBA2SecVOxwpPtTuJkMjL
ChC9ccms6R9757dqdcsTIQegpAn7osevatoq2ohlPWVx3z9aapwwI7Vb+ziTkD9acmluMmtJd4wa
sVFBEIxUtc8rX0AUdKKBS1IgooopjCiiigAFLSClpCCiionmAOFGfehK4xlxw6mi9Tfb5HVeaRi8
g6HH0qaJSYtrjrx+FXtZiMeinyoY5GQ84NPggeY8cL/eNb3VrgRAEkADJNWo7M43THavoOtWVEcA
xGMueM0FDjfJn6Vm5t7ANQInywpk+p5JqQROxy5p8RVkO0baZGBExLMD2wKi4hCEV9pBNPlPl42q
Oe+KaZAzZVPm9aMzHpkUeoCxHMxJGOKdc/cH1psWfPO7k4p1z9wfWktxsrUUUVYhRS0gpaBBRRRQ
AUqsVOQcUlFDAnWUMMSD8akRdnA5Q1Up8chT3HpUOPYdxZE2N7dqZVr5ZU/zxVZxsJ3cY704u+gm
JUtuf3n1FVHnA4UZ96jE8gOVbB9qrlbQF+4OZKiqr58hOWbJ96kScEgMMe9HK0gJ6fEm9vYdaag3
kbec96s5WJOf/wBdRJ20EgdS5weFFMaUKMRgVHJIX+npTKFHuMUksck5pKKKoAp1Np1AmFFFFABR
RRQBbtv9V+NQah9w/Sp7b/VfjUGofcP0rNfEUjMFLSClrpAs6f8A8fS/Q0X/APx9N9BRp/8Ax9L9
DS3q5um9MCs/tgVgCelKVIFSjiiqFcgOcHHXtXJT+FtMtIZr3VLieUAl5CDtXk+g5/Wuwde4rzPx
nqzalqItLYlreFtqhefMf1/oK9DL41ak+Wm7Lqb0FKTtF2MiO3Gp6oLewhESyuVjTJO1fUkk9uTX
r8K7I0T+6AKwPCuirpVrvkAN3KMu2OVH92uhWvs6FP2cdTpqS5nZEq9KkWolqRa2IJVqQVEtOllj
hiaWZ1jjQZZmOAB6k1IyPVdStdJ0+W8vpPLgj6nGST2AHc14T4s8SXXiG8+0XZ8q2j/1UAPyoPU+
re/5Vc8ceIpNe1VyjMLGAlIUzw2Cf3n1Ix9B+Ncnp1lL4g1RLWKWOC2UhpZ5WCpEmeXJJHT61x1a
nM7I7KVPlV3uVjdy3E6Q2UTSyOdqqqlmYnoABXUWfw58aXkQl/s94VI3ASyKhP4ZyPxxXo2jeLPh
/wCBbP7HpkzXdyoCTT20JdpSO+84BH0OKtxfGzw0z4e21RF/vGFD/J6lQj9plOcvso8U1vSNf8OS
KutWE0CsQFd1yhPXAccZ9s1Da3KTj5eGHUGvo6x+IXg/W7eWBtVtlR0xJFeKYgQeMfMAD+BNeVfF
nwHHoeNf8PEHS5GAkjjwVgJwAQc8qSfwP1FKULK8XccZ3dpKxx4pWICMW+7jmoLSYTxBxwehHvXa
/Dbw5LrmuRzSIv8AZ9oyvMZAcP1wg9Txz6fiKmKu7Ipuyuz2/wAOCUaDpwuP9cLdN+fXaM1pd6Yg
AGAMAcYp/wDOu1HELThSEEDJBH4UKaAHClpBS0ALSimiqetalBo+lXWoXZIht4y7AdWx0A9yeKTG
hdY1Sy0exe71GdIIEHVjyfYDufYV5V4k+Lk5lMfhy1jWIcefdoSW91QEY/H8q898S69feI9Ta+1J
8tyIogflhX+6v9T3rKJrnlVb2OiNJLc39Q8ZeIb9ibnVrnBOdkZCKPoBVW28R61bSb4NVvUb180n
+dZNFZPXc0Wmx6BovxV1uzkiTUo7fULZfv5TZMRjswO335HPqK9a8MeJ9G8TROdOlUyocPDIu1xw
OcHqOeo4r5lqW0uZ7O6iubSV4biJg0ciHBU/57dDTtF/EkwfN9ltH1j5EX/PNPyo8iL+4tcL8OfH
0Ovomn6myQ6qqgBiQq3J5zsHqAMkV31WsLh5a8i+5GbxFeOnO/vZF9ni/uCj7PF/cH51LRS+pYb/
AJ9x+5B9br/zv72RfZ4v7gpfIi/uLUlFP6nh/wDn3H7kH1qv/O/vZH5EX/PNPypwjQdEX8qdRVLD
UY7QX3Ih16r3k/vYgUDoBS4oorVRitkQ5yfUZKu+NlHcV5p4js1TVpSg/wBYA59ia9Ori/Elti5j
fHYqfwr57Oo8lWnUXVNfk1+p9HkFRuM6b8n/AJ/oJ4HPlNOh6b1IH1BH+FdrXD+H8xXjAcbl/lXb
qdygjuM1WR1Lyq0/R/hb9CM/p2cJ+q/r7xaKKK+hPnQooooA86+M2nSTaZZahGq7LVmSU98OVC/q
P1rlfCEscekSsQN6ynOBzyBivXPE9k+peHdRs4cebPA6Jn+8RxXh3hJca01vN8oKsCp7sD0/nXn5
hT5qbZ24KfLUVzr7VZDGWlJJY5A9Kr3dkHy0fDenrWqVqNlr5657phwzNC2yTO0Hn1FXuGUMpyD0
NS3Nusy88N2NZv720kwR8p7djT3EWWWq9zAk0TRyqGRuoq1G6ypuX8R6UMtJNp3QNX0ZxtzDc6Lf
xXFtKyMrbopB1BHY16p4K8Ywa5GlreFIdSAwV6LLx1X/AArlZ4VljZJFDIwwQa5bVtIe3JkgDPDn
PHVP8+tdc40sdFQq6SWz/r8jxcbl6fvR2/I+gahNzED97P0FeY+HPHjmOO0112fni5wPw3AD9a7u
NllVWjYOrdCpyDXh18FUw8rVP+AfP1KcqbszSedHjYK3PpUFTWkPlrub7x/SpZIlcccH1rmuk7Gd
ipRSsCpIPUU+BQzkMMjFU3ZXJIwSOhoq00KEcDFVnUqxBpKSY7D7dNz89BVtgGUg9DVW3ba+D0NW
icAk9BUTvcaKDDBI9KASOhpWOWJ9afDFv5JwBWl7LUBlFWxEmPu0VHOgseb0UUV6h2lW5QGRRGPm
PPFCwu+5pc5xwDUkfN1IT2AFT1Tk1oBBZn91j3qeqsH7u4ZD0PSpbk4hb34pNagNtxvdpTzzhfpU
0kayLhvzpIhtjVTgECn0m9QKv72A/wB5BTFkUTh1GAeoq7UF2i+WWAAYd6pSvuBYBBGQQR61QlYN
KzqoKgj8aaVUhNhJY9RUwt5lUqGUA9aaSiBajYOgYdDVW6kDOqg5UcnFReXslCSnA9RUtpGHdiRl
R60WS1AXzZJRthXao4qaCAR8nlvX0qais3LogGTIJIyD17U23fdGM/eHBqTI9RUKfLdOP7wyKFtY
CWRtsbH2qrFDvh3rw4PHvUl4wEYXuaniXZGq+gpp2QFMo4KvNyM45q8AAAB0FR3AzC+fSnRHMaE9
cChu6AdVe6QqVlTgjrViklXfGy+opJ2YMVG3IG9RTZvuj61FZEmIj0NSzfdH1oasxEg6Cqc3X8au
DoKpzdfxojuBHSikpRWogooopAFLSUtAgoopjNnp0oGWTLhBt64qI801Pu0tK1gA9KZT6ay9xTQC
g5BHemUvSjHNMBwOFHrTck0Hk0qrnr0oAevQU4UlApCJll+QhuuOtRUjdDTFbH0pJASUtJS0AFKK
SlFAC0UUUAFTW/3l+tQ1Nb/eX61MtgRbf7jfSmRfcFPf7jfSmRfcFZDJKKKKQBRRRQAUksixLlj9
B61HPMsQx1bsKz3dnYsxyaqMLgPllaVst07D0pI0Z2woyadBE0p44A6mryhYl2oKtytohDYoUiH9
5vWlnl8qP/bPQU5RlqpXb7piM8LwKlK71BEJOSSetWoLXcA0mQPSm2cW99x+6v8AOrzMEUlulOcu
iGIsaL91VH4U4qD1ANVHncnjgU0TOD97P1qeRiuTyWyOPlG0+1U5EaNsMP8A69XoZRJweGp08Xmx
4/i7UKTTswKtpNsbax+U/pVtwD8rjINZlaETGS3UnqKc11ArXFuU+ZMlf5VADg5FaKtj6VFPb7vn
j/EU1Loxbjre4zhZOvr61arIqzbXGzCv93sfSlKHVDL1LTadWQBRRRQAVHH/AK16kqOP/WvQA6f/
AFdKn3R9KSf/AFdKn3R9KXQQOew70qjApo5k+lPpsQUhUH60tKKQyP5j8tKvDkVJTH4YGncQ+iii
kMQ803BQ8cin0tFwsRsQRnvT1OQDQVBqMA8kHGKNxbD5MYHrSx/dpgyeetHI56Zpiv1JGOFNMVgo
9TSY5HOc1IFA6Ug3GgFjlulPoopDFFLSCg9KBjCNzmj5vu0sfc0+ncmwiqAPenUCipGNdcj3oQ5F
Opg4c+9NbAK/3D9KS3+6frSv9w/Skt/un60D6DLn7w+lUqu3P3h9KpVpAlhRRRVCHUUUUwCiiimA
tFFFSIKa/wB2nUhGRTGR09D1ppUihTg0xl6yPDD8ark5JPrT4JfKJJGcioWOFqEtRDScmkHWgAnp
T1U5yaoB1FFFIQopaQUtABRRRSAKWkpaACiiigB0f3xWkv3R9KzY/vitJfuj6VlU3H0IGYpMSKnU
hhkVWl/1jfWlSQqpApWugbLDBT94Co2h7qcVFuJYEnmrWeM0neIblfODiQZqV32xgpjHSnHDAjrU
RVomyvSnuINhZQ68H0FL8sybJBzTnkJQFfxpjKSgfoe9AylIsltIQrEZ6Ed6FuZVOd5P15q8yi4i
Kt94dPrWY6lHKt1FaRalowNCC8WQ7ZAFPr2NSyxDGV4PpWTWpZSGSH5jkjg1E48uqAkgfcuD1FSV
Xi+WYirFQ9wQClpBS1IBRRRQAUUUUAFFFFAC1DdKSnHuKmpaE7O4GTHCxcbhxV8wAoAetTAAdABS
1bm2FivFbhDngVYFFAqW7gRTf6xamf7jfSoZv9YtTP8Acb6UgIrbo1THkYqG26NU1D3BlZ7UFs4B
9zSvABHgc1Yop8zFYyDE27GOPWtOAYT680/aM5wM/SlpynzAFFFFQAopaQUtIQUUUUxhRRRQAClp
BS0hEM7nO0U6OMKMt1/lUY+a4pmoSbUVAfvdfpV2vaKAbNe4JEQB/wBo1XNxMT/rGH0qGpIYzLIF
H4/StlGMUBJBE9zJlySB1NXWYIAkQx9KVyIoxGlJtMaZH3j+lZN3ACvlKG4Le/apN4MQMnftTRLi
PJ+8elIkZc7n6Gp9RDQWfiMbVqRIFHLcmpeBx0pHOEJpXfQYqgAfLjHtSOwRcmqqsVPBpZH34J60
+UVx8BLTEnqRT7n7g+tR23+s/CpLn7g+tHUbK1FFFWIUUtIKWgQroUODSVOrLIu1+tRvGy+49aSf
RgMooopgFKKSlFIBQ+w7s4qtczmZvRR0FOuWwoUd6rVUY9RoKKciM7hVGSavxWKBf3hJPtVSko7g
Z1FaMtipX90SG9+lUHRkYqwwRRGSlsBLa3DQt6qeoq0XL/NnNZ1WbVsqVPbpSlFbiZPRRRUAFFFF
ABUiIXPFCRM3PQe9SswjXanWk30QEFFFFMQUUUUAW7b/AFX41BqH3D9Kntv9V+NQah9w/Ss18RSM
wUtIKWukCa0cRzhj0ANPdi7Fm6mo0GKmhiMrccAdTUOy1ER0VYe1kXJXDD261AQR1BFCaewjE8Ya
mdL0SWRP9dKfJj+pB5/AAn8K888Nz2Vndm8vnYmH/VxqMlmPf8K6b4mF2TTYkBbcznaBkk4H+JrP
0LwdPcKlzqrC3t8FjHn5yPfsvr3/AAr6HL6lPC4dVZvc76LjCleT3Oh0fxLY6lciCPzIpT91ZB97
6YrfWvJ9DjWfxJbrabhD55aPPUICSM++K9XWvpKM3ON2OpFRehKlSColqUVqSSrXA/FPXHghh0q1
kX98rG5x1C8bV/HJP4V3TOscbO5wqgsT7CvB9bvRqerXd6qlVnfeAeoHasK8rK3c2oRu79jNYVlP
ph8w7JAE9xyK1yKYRXEdpRSwhQfMC59SaebWAjHlrVk0mKAKMmnxN9wsv6irum61rGhW8tvbXHm6
fKCsltKPMicHPVT06k8UuK2fCmg3HiLV0srf5UA3zSkHCIP6noKaWugm9NSn8PfC9/4m1KVLUfZ7
Nf8AWzlSVT2Gepx2/OvpLRdLtNG06Ky0+Ly4I+g6lj3JPcmm6Lplpo2nRWVhEIoI84Hck8kk9yTX
pXgjw9t2ajfRkPkNAhyCv+0R/KuiMVSV3uc7k6jstiXwl4Vi8kXeqxLI7gGOFugBHVh6119vY2lu
gWG2hQDsqCpRTxWEpNs2jFRWgeTERzFGf+Aiqs+jabcEmaxt2J77Bmrop1K7KsjkdU8C20259Nma
B8f6t/mUn69R+tcRqmmXelzCO9hMZP3W6q30Ne0KaZd20V5ay29wgeKRdrD2rSNVrczlST2PDhXE
/GRZG8CXPlZ4miLY/u7ua9V8WeH30W6DxZazlJ8tsklcY4auW1Sxg1TTLqxu1LQXEZjcA4OCOxrf
4o6GK92Wp8pmmmreqafdaTfzWOoJsuYG2Pjo3+0PUHqKy4Le81rUI9N0q3e4uJDtCJ1Y/XoB7muM
6yOe9AfZCvmOeBj1rfsfAvjLUbeO4g0q4WKTO0uyxn0+6xB/SvYPCXh7w38N7IXmrajarqjxmOW4
eTqM5KovXsOgycU+f4x+FI5mRJL6ZQeHS3+Vvpkg/mK0VNL4mZuo38KPE9X8K+KdBtzc6lplwluv
3pOJFA9SVJwPrisqC+SQ4kGw/pX0Ha/GHwnPMEknvLdT/HLbkqP++cn9Kr+J/DHhLx9FPeaXf2f9
qmPCTwzDGRyN6fjzkZxQ6afwsFUa+JHittPLbTxT28jRzRsHR16qR0Ir6F+Gvi1fE2kmO5+XU7UK
s47Pno49jjp2P4E/O/iDQ9U8I6kbPUow0fBWaMExSAjPyMQM/wD1qv8AhjXLjRdUt9U08qZEyCrD
h1P3lPp0/OlCTi9RzipLQ+qaKp6PqNvq+l21/ZPut7hA65GCM9iOxHQirldRyhRRRQAUUUUAFFFF
ABWF4iiBXgfxBvp1FbtZ+rx74/qK8XPYXw3P/K0/0/U9jI58uK5e6f8Amc5Ypsu4z05rr7c5gT6Y
rmETawPoc10dkcw49DXk5HVtinHuvyPXz6nfDqXZliiiivsD5AKpa5enTNE1G/VBI1rbSThCcBiq
lsZ7dKu10HhnQ7fX7DWbS4jVy9vsjLEjaxBHbtUydlccVd2PBfC/xY1bTdUnOrRw3ek3Y2XEMcI8
2NcHBhYkYIJ/iznFcrr91b23jK9u9Jk8y0+0ma3fbt3RtyMjtwelVvFWkvoXiXU9KkGGtJ2jxzwO
o6+xFZjKVJUjBHauaWujNlpqj11l5qNlpulTi6022mBzuQZ+uOanZa+aa5XZn0Sd1dFZlqGaJZUK
uOP5VcZaiZaQzBYPaznHb9RV5GEiBl6GpNQh3wlgPmXkVQtZhEWDH5Tz+NPcRZZaqzypGwV8889K
hvrtLdBcXRIUH93GOrGsGfX7x5CY/LVM8KVz+db0sNOrrHYwq4iFJ2luWtS0hJQZrLAOPuDofp71
ofD3xHLpmpw2N226ymbywHOPJYnqOPwx7+1O0547iLzoGPlNxtI5BrE8TQFLpJf4ZBj8R/8Arrem
/bp4at/wxxY3DQnDnjt/Wp77RWJ4LuVufCekPv3OLZEc/wC0o2t+oNbDyKg5PPoK+VqQcJuHZ2Pl
5LlbRDc48zjrjmmRNscE9KRmLMSeppKtLSxBeByMjpUF0OFP4VACQeCRUyS7vlk6HjNRyuLuFyGr
E7ZiX/a5qKVCh9j0pZHVo0AzkVT1sxkdXYl2xqPaoIkCjzH6dqa8zMeDge1KXvaINi3kDrRVGip5
A5jgqaxx0p1NYZ6V6qO1kMLfv5Ce/FWarQj9/ID2Oas05bgV7pOBIvVaiklaYqowBn9akuWLusS/
U024hEe1kJHOKqPS4Dhak8s/P0zQLeRD8j0L9pHGAR74o23Dnk7R9f8ACi77gHnyRtiUZ+lI0rzk
qgwvfNSJbKDlyWNNnhVFLoSpHYUXVwFs1XaWx8wOKl3H1qvayhRsbgMeDVkqaUt9RMZMFaJiw5Xp
UETvEm4coTU08gRCnVmFRW8QlzuY4HahbajHtdFsCNcE+tKYppBl3x7VJJbI2MDb9KiMU6f6tyR6
ZpJroAfY/R+fpTWDwSIzENin5ucfdH6UzY7SosrE55xnpTTfVgPizPNvYfKvSrdUz/o845Ow1cqZ
ARzn92w9qS3Y+WmfSlnHyMfakt1Plpn0o6C1JacKbThUjZWtOHlX0NSzfdH1qKz5MjepqWb7o+tO
W4iQdBVObr+NXB0FU5uv40R3AIkDcnpU4AHQVDC4XIPSphz0qpXJAgHqKaYlPTin00yKO9SrgQtE
w9/pTCwFSPKT04qNlz9a0XmAwkmkpSMdaSmUPTpTqanSnUmIYTmkp5ANIQB9adwEHJ55p4AxTM0u
ccdqAA8HgYpOtGcUowfagABxUg6U0KBThSYgb7pqOpG+6ajpoABI6VKGBqIDPSpFXHXrSYEqxs3s
PepViUdeTUaSsvXmpVkU98H3qHcQ4ADoBSkA9RRRUAQyoF5HSnW/3l+tNlcEYHNOt/vL9ap7ajRb
f7jfSmRfcFPf7jfSmRfcFZjJKKKKQBUFxcCMELy38qnqC4gEg3Lw386cbX1AosSzEk5JqaG2dyNw
2r6moWBViCMEVNDcMhwxLL71s720AuZCqFTgCm07AZQycg02skQx6nAY+grMJyc1pqMhh6iswjBx
Vw6lI0LNcQD3OaZdNlgvpzT7NswD24pl0uGDdjxUr4gZDRRRWghUO1wfQ1ojpWcg3Oo9TWiOlZTB
GZOMTOPfNWLE/K6/jVec5mc++KsWI+V2/Cql8IyWnKcU2nKM1BBHPAJAWThu/vVNlZThgQauTziM
FU+939qpsxY5Ykn3q4XLJrecx8Nyn8q0FYMuVIIrOt4DKcnhPWtFVCjCgAegqJ2uAtFFFQAVHH/r
XqSo4/8AWvQA6f8A1dKn3R9KSf8A1dKn3R9KXQQJ1anU1OrU6hiQ2RxGhY9BVQXj7s7V2+lWLmMy
REDr1FZ4Rt23ad3pitIJNajNWNxIgZehoYZFMt0McSqetSMcCoe+ghgfAx3pRuPXikCEjOeaUFh1
FAgww70u4j7wpNx9KXax6mj1H6AXGOKaBluacU9DzTVOG+aheQn5kE9yVfZFwF4PFOtpzI2yTkno
ajuLdt5dAWU88U61hZX3yAqAOM1fu8oyxjDcc4p+8Ypmct8ven7BiofmJeQmWPQcUu1vWkww6HNG
5v7tL0D1F+Ye9BbcMCjLMOBigrtAIoAeBgYpssgiQsefanA5Gaiu4zJFheSDkChb6jK63r7vmUbf
QVdRg6Bl6GslUZm2hST6VqwIY4lU9QKqokthj6Y33xT6Y33xUITFf7h+lJb/AHT9aV/uH6Ulv90/
WgfQZc/eH0qlV25+8PpVKtIEsKKKKoQ6iiimAUUUUwFoooqREsHlHIk4PY5p7WrdVYEdqbAYhkyc
nsMU5ro4wqgVLvfQYwwSD+GopEIOGGDUvnyf3v0qKRyTljk01fqAg44NAGeTQOeTQDjg/nVASrE5
UFVOKettIeoA+tNWZ1UBWOKctzIOpB+oqHzdAJBCkYJlYH2FVmxk46dqsiaOQESqB79arNjJwcjt
RG/UAFLSClqhBRRRSAKWkpaACiiigB0f3xWkv3R9KzY/vitJfuj6VlU3H0IGXdK4HUc1HU6f8fDf
SopPvt9aIvoEhtOLE9TQEYjIFIQQcEYpkj4Dh8etWeoxVRW2sD6U/wA5z6VLjdjTHEGJ8j7ppZJC
Mbeh5py/PEN3emRnY+1ulLcYhzGysOAe1RX0W9BKg6dandwzFMe2feki5DRv37U02tQMur2m5AkP
biqcq7JGX0OKv2v7u0yRy1aTfuiHw/NIWqxUVuMKT61LWMtxoBS0gpakAooooAKKKKACiiigBaWk
paTAKKKKACgUUCmBFN/rFqZ/uN9Khm/1i1M/3G+lAEVt0apqhtujVNQ9wYUUUUhBRRRQAUUUUAKK
WkFLSEFFFFMYUUUUAApaQUtIRXPy3FVtR/4+B/u/41anGGDVDfjfEjgd61i9UwKNaVqnkQlm++1U
raMSTKp6dTV+T53CjoKqb6ACg4aQ8ntT1l/dlm9cURyAnbjA7Uz/AFsmOiis/UQ6JC7b35qxUUrF
EBXjmohO/fBqWnLUY2Zt0h9uKTe2MZ4pGOWJ9TmlVWY/KM1ohCUoGTgdaVkZeop0H+sFDelxD4l2
zEe1OufuD60L/wAfLfSi5+4PrWa3KZWpQCelJSgkdK0EOCHvTwoFMDnvTwwNS7kiMueR1pVlZMA8
ikZsdOtKsbNyeB70eo0OLxv94Yo8uNvuvg0bI0+82aDJGPuoD74pegw8g9mFJ5Lj0pftB/uik85z
6Cj3g0KV0CsxB64qGprolpiT1xUNbLYEaGmINrvjnOM+1Xqo6Y42umfmznHtV6uefxDCqWpRgoJO
44/CrtUtSkAjEf8AEefwohfm0AzqmtAWmAHoahqa0JWYEehrplsIviF/al8g/wB4Ugmb2pfPP90V
h7whfLjX7z5pQ8afdXPvQJIz95APwo8uNz8jYpeoxjSu+QOB7UKuPrQ0TpyOR7UK2evWn00JYpUG
mlD2pxYCmlz2oVxDSMdaKCc9aKoZbtv9V+NQah9w/Sp7b/VfjUGofcP0rNfEUjMHWpFXHJqMdakR
uxroYmW4LcuoZjhf1q18qLtjGBVW3uNihGGVq18rrvjORWEr31EIGI6GnFlcYdc00KT0FOKqgy7A
Ck7CVyrNp1vNPHOFHnRAhCeducZx+QrmvHl3/Z+hzxE/vJ/3S4Pr1/Suqe5Rf9WNx9eleafFG683
ULKLOCsbOyjpyQAf/HTXfl1OVWvGMtl+mpvQjzzSZD8PrAPNPfOOU/dx+xI5P5cfnXdrWL4Vtha6
HarjDOvmN9TzWytffU48sUjpnK8iValFQipVNWSZ/ikkeF9XIOCLOUg/8ANeIMK9z16B7rQdRt4h
mSW2kRR6kqQK8O4IBHQ1yYjdHXh9mQkU0ipiKYRXOdBERSYqQikxQA6ztZby7htrZDJPM4RFHcmv
oPwh4fg8OaTHbRBWnYBp5Vz+8f157e1cf8JfDqx2x1q7jBkl4tdyg7V5BcemeR9PrXt/g7Qv7Rn+
03af6HH0B6SN6fT1ropxUVzM56knJ8qL/hDw19o2Xuoxjyf+WcTA5boQx9q9DU5qBMAAAAAcYFSq
aylJyeprCKirIlFPFRing1BZIDThTBTgaQx4NSCohT1NAEGq2EOp6fLaXGdkg6jsRyD+deO6pp8+
l3z2t0u115B7MueCPY4r2wVj+J9Ch1qyIAVLpBmOXHP+6T6VpTnyuz2M6kOZeZ8p/Gfwi+q6edY0
5Aby3iKzgAlpIxjGB/s/MfU14Zo2oaro63H9mMIJJ12GdAN4X0VuoB46V9i3VvJbzSW91GUlQ7XR
ucV88fFXwwPD+ui4tUA06+JeMKoVYnzzGAOAMYI/H0qqsPtImlL7LPOvsTyytLczM7uSzHOSxPUk
mpvsUH9z9TVnFFY2NrlY2MH9w/marvpv/POT8GFaNKBRYLkEt9rH9mf2bJcPcWAxtic7lQjptz93
8KTToGgiO/qxzj0qzTgKAPS/g34n+w6gdEvHVbS5Ja3J42yk/d/4F/Me9e118mwu8UqSRMVkRgys
OxByDX0v4M1yPxD4etb5SPNK7J1GfkkA+Yc10UpdDnqxtqbdFFFamQUUUUAFFFFABVa/GYR9as1F
drut39ua4syhz4Wol2f4anXgJ8mJpy80Yfl1raaf3bDvwao7eat2BxKV9Vr4vKKvLjaf3fej7HN4
c+En9/4l6iiun1HwrLZeHE1Bnb7QAGlhOMKCe35j9a/QG0tz4RJvYt+C/DVtqlhPdX6uVZikQBIx
jq3B554/CrPgSM6Xf6vFfEQeQitI0hACqMnJPTGOa7DRLZLPSbSGNdoWNcj3Iyf1ryz9pzSLy7+H
c95ppkRbeVZL4Qvs86DBBD8jeg3Z2nP0rmdRu6OlQUUmeb/tT6PZQ67ouvac0LLqkUiyNG24SNHt
w2enRsceleWXumrc6Db6paY/dRrFcJjkuOC/455/Co7bVfN8L3ukahPPKIjFNpnmOXS2ZSRKig/d
V0I4GBlFrpPh5Kk2l3Vo6q22TcVIzkMB/hXLiJunFTXQ2oRjUm4vr+Za8D5Ph2Enn53H/jxrcIqt
ommjSrV7WNmaFXLIW64POPzq6y+leNWkpVHJdT1qMXGmovdIrstRstWSKjZazNCncMsSFn6enrXN
3t1HZEyXEfG7Kp3YVuao0Vsr3V5Ji3jAwuM5J4Ax9a8/1G7l1S+aVxjPCpnhR6V14TDOtLXY5cTi
FSVluMuZ59RujLKct09lHpUjWy+Xgfe9akijEa4H4mn19NToRhG1jxZScndlaxu5LOUg7thPzLn9
a2/EQFzpcU0OGQOGJHpgj/Csa6h3jco+YfrTrG9KWVzaSHKSIfLz/C1ebicNy1FUjuvxR00a3uOn
LZnoHwquHl0e6gc5SGb5B6ZGT+tdvXlfwv1BbfWJbR24uk+Qf7S5P8s/lXqlfMZnT5MTLz1PBxMe
WoyaKHcAW6elSeSnp+tRRS7QFbpU3nJ/e/SvMlzGJC8DD7vIpvlP/dNOeZj93gUze/8Aeb86pcwh
GJ6HtSUrKwwW70lUA5QzjaMkDtS+U/8AdNINyAMMgHvR5j/3m/Olr0GSi3OOWAooWc45AJoqPeDQ
88opFYMMqcigkKMsQB716h2kSfLdSA9wDU4IPQ8VSmkEko2cdsmg77fcp5Ujg1TjcB9qC0jyGpbl
d0Le3NNtP9T+NT0m9QEibdEp9RTqr252O0R45yv0p88wj4HLHtSa10AkZgoyxAqrPOHTYoPJ605I
GkIeYn6U2NVe4wq/ItUkkAnlyvGo2ABRx6mowWZWYyEFexPWtKs+42/aD6Z5pxdwHRJLxKBuz60Q
SeS53KcEdKuJjaNv3ccVXvExtk/A0lK+jAsRyo4+U/hT6qtArqrwnaetLDOwbZLw3qalx7AWagT5
rpz/AHRgVJK4jQkn6U22XbGCfvNyaS0VwEu1zCT3HNPt33xKT16GnOMow9RVKN3MflIDknk00rqw
Fu4YeQxzwRinRDEaD2FU5EaIhWOUJzgVcjdXGVI+npQ1ZAOpszbYmI64p1VZ386RY4zx3Pakldgy
SzXbFk9zmpJvuj609RtUAdAMUyb7o+tJu7ESDoKpzdfxq4OgqnN1/GnHcCOlBIHBpKUVqICSepoo
opAFLSUtAgIzTGXH0p9FAxE+7S1KYvkBX06VFSvcANMp9AUU0A1R39KbUpHGBUVMBxGQDTakUfLR
tFAhRyBSikpwpAI3Q0xVz9KsLFlCW9OlR0kwADHSlpKWgApRSUooAXJ9aMnuTRRQAVNb/eX61DU1
v95frUy2BFt/uN9KZF9wU9/uN9KZF9wVkMkooopAFFFFAEU8CyjPRvWs90ZGKsMGtWmyxLKuGH0P
pVxnbcCjBM0R45XuKuqVlXch+oqhLE0TYbp2PrSRu0bZU4NU431QjRU4aqV2myY+h5FWopUmH91v
Slni82PH8Y6GpTs9QRWs5djFW+6f0NXmUOpBrJIIODwatwXW0BZOR605x6oYrwOvT5h7U1YXJ+6R
9auLIjfdZT+NKSAMkgCp52KxHDCI+SctTp5fKjz/ABHpTJblEHBDH2NUpJGkbLH/AOtQotu7Ab1P
vWhEpjgCnqarWkO9tzD5R+pq6+B8zkBR605voA1Vz16VDPcAfJF19ajuLgv8qcJ/Oq4GTxTUerFs
LVm3ti+GfhfT1p9tbgYaQc9h6VbpSn0QxAMDA6U6kpayAKKKKACo4/8AWvUlRx/616AHT/6ulT7o
+lJP/q6VPuj6UughBxJ9afTZB3HalU5FNiFpRSUhYD60hj6jflgKMsOT0oXl807WESUUUUhhS02k
yWOBwKLBccWA71GOh4zmhlAHvUijAAo2FuMUsOOlBJPHXFOk6A96WMcZpit0GZ5HGMVICD0ocZWm
KoYccGkGxJRTAxBw1PpWHcUUHkUCloGMj7in1GTtc0Zb71OxNyQUtIrAilqRhTBzJ9KcxwKSMYGa
a2AH+4fpSW/3T9aV/uH6Ulv90/WgfQZc/eH0qlV25+8PpVKtIEsKKKKoQ6iiimAUUUUwFoooqRBS
E4FLTX+7TGNLE0KMmkp6DrTGTwReaSCcYFQsMirdkOHP4VXIwSD2qE9WIhBIp6sc4NMIwaB1qgJa
KKKQhRS0gpaACiiikAUtJS0AFFFFADo/vitJfuj6Vmx/fFaS/dH0rKpuPoRp/wAfDfSnCMbyx5ya
an/Hw30omfHyjrUjY8yKDyaUgMOelVKcrsowDxT5exNxCMEj0NApKUVYizDjYBnmknXI3DqKgBIO
R1qzG29OfoazatqUNQqV3kDI60xyNwdaFGGZG71J5YEbDqaNEBVuojLPGVGA461PMcsEXoKWNwse
TyR0ogUlixp379BEyjaoHpS0x5VX3PtUfmO/3Qce1TZsZPkDqcUb1/vCoBCx+8ead5A/vUWXcCUE
HoRS1A0JHKnNOikydrdaLdguS0UUVIBRRRQAtLSUtJgFFFFABQKKazhBk/lTAZN/rFqZ/uN9Kq7i
zgn1q0/3G+lDVgIrbo1TVURyh9u4q0jB1yKGuomLRRRSAKKKKACiiigBRS0gpaQgooqCSQltqfp3
qkrjJiwHUikDKe4qFYCfvGnGD0NOyETDnpS1X8t15U/lQJXU4cZ/Sly9gJZV3IR+NQqPMiaI8ehq
dHVuh59KhkBjlDAcUR7ARWa+XHI5HzZ21NCQo3MeTRMd20L35qRogwHbHFNu+4DZdqL8oGWp8S7U
9zzUQG+XA+6tSTOVUY6mk+wCXGNo55BqvRRVpWEPiXe4HarXCjsBVMEg5HWlZ2fG40nG7AtK6twC
DSCPbJuHT0qrVqF9689RUtW2C4i/8fLfSi5+4PrQv/Hy30oufuD60luNlaiiitBCilpBS0CJ1VY1
3PyajeVm9h7U13LnJpKSXVgFFFFMApRSUopAQ3K5UMO1Vq0Am87cZzVa5gMLeqnoaqMug0Rxu0bh
lOCKupfrtG9Du/2elZ9FU4qW4Gg9+u35EO7/AGulUZHaRyzHJNNoojFR2AKtWq4Use/SmW1uZm9F
HU1aKbPlxjFKUlsJiUUUVABRRRQBIkrL7j3qVlEi7k4NVqkRyh+Wk11QDaKKKYgooooAt23+q/Go
NQ+4fpU9t/qvxqDUPuH6VmviKRmClpBS10gSoc1NDM0R45HcVFaIJJgp7g091KMVbqKh2egiZ7p2
GFAUe3WoCS3Uk/WkooSS2EFeX/EIlvEjA/wwoB+p/rXqFecfEiDZrFvODxLDtx7qf/sh+VellTSr
2fZnThH+8GaF4lvGvrS1kWIwHbFtC8gYxnNd+K8x8G2/n6/CSuViDSH2wMD9SK9NWvs6DbjdnRVS
T0JVNSKaiU1Ip5rUzJRXkvjjSn07WpJNqiC5Jki29sYyP1/WvWQapa5pNvrFg1vcKNwyY37o2MZr
OrDnRrTnySPECtMK1uazoF/pVxJHNBJJEp4njjYow7c9AfasyO2mmcJDDJI56KiEk/gK4WmtGdqa
eqKhWur8B+FZNbvFurkPHp8DglsY81gc7RkYI45/LrWh4W8C3N88Vzqwa3tQ3zW7qVkkH6becfhX
q+n2ixpBaWcQVRiOONe3oK2p0r6yMalW2kTY8N6M2qXawRYjt48FyBjavoPf0r1e0hjtoI4YVCxo
MACsvw9pqaVpyQDBlPzSOP4m/wA8VrqaVSV2EI8qJRUimoRUimszUmU08VEpqQGkMkBp4qMGnipG
SClBpgNOoGSA08GogaeDQBzvjHw6urwfaLbC3sQ47CQeh9/SvGfFmhprWjXul3I8qR1KqzLzG46H
kcc19FCsDxB4Xs9W8yZR5N62P3ozg/Ud60hUsuWWxnOnfWO5+e17bSWd7cWtwNs0EjROB0ypIOPb
iocV65+0P4IvvDniKPVJYwbG8Cw+ciNtMoBPJ6ZKjp/smvJMVDVmWndCYop2KMUgAClFAFOApgAF
eh/BnWhp+vTabKW8rUAuwZ4WRQece4OD/uj0rz4Cp7Wea0uYrm1fZPEweNsZww6U4uzuKSurH1VR
VLQ9QTVtGsdQiGEuYUl2kglcjJBx3B4PuKu11nIFFFFABRRRQAUEZBBoq3pVoL7Ura1LbBK4Ut6U
pbMcdGiHStFj1DSxMkzJPkqQcFeP16VXbT5LLVYbaUqzSYAKe9b/AIcT7PJqVrziG4IGfTp/7LRd
wmXxdoyqpYu44AzwDz+lfl+BlKnjKcX0kvzR9ziqjnSqRe3K/wAjbvPCAstZ037NI0trJKofzMEg
jLHoOhArvpo0mieOQAo4KkHuKcVBIJHI6UtfokpOW58lGKjscx8RfGVj4E8MyaxqEE9wgkSGOCDb
vkdjwBkgepPsDXE2nj7T/ir8NPGVjpNrPa6mumXETWtxg4LxOEYFc5BP48dKk/ahtkm+El5M337a
7tpEPoTKqH9HNfMnw78U3nhDxdp+pWdw0VuZo4r1AoYS2xdTIuD32g4IwQe/JykhOTTOaGccgg9w
Rgiun+HbsPEDJnCtAxI9SCv/ANesnWo0m8SaounH7RBLeztb+V826MyMUxj/AGSKseEJjb+JrEsd
qs5jbPHUEfzxUV1zU5LyCi+WpF+Z6uy1GRVgimMK+fPfK7CsuVvtUh+bZbx8luma0nlX7QIRySDn
B6VxHjTV0TOl2J2opzMykEHP8P8AjWtGk6suVGVaqqUeZmT4j1l9WudkIItUPyDoW9zVWCIRL6se
tR2kO0b26np7VZr6nDUFSirHgVKjnK7CiiiuogKp3cODvUcdxVyggEEHkGonBTVgTH+DbhLXxbpE
0v3ROE/77BQfq1e9vGrDGMfSvnKVGglDxnBB3IfQjpXufhDXoNe0pZYtwmixHMrYzuwOfoa+Pz7D
yTjV7aP9DkxkG7SL7qVYg9qSpbnHmcdcc02Jd7gHp3rwk9LnANVS3QE1KsWwbpO3arAGBgVBdH7o
/Go5nJ2C1iORy59AOlLIirGhHU1HVidcRL/s1T0shoZE4I8t/u+vpQ8DL05FRVdiO6NT7Upe7qgR
TII6jFFX6KnnDlPK/IZP9U+PrR9nZjmRyfpViopphHx1avXTbO0WSJfKZVXB6j61HI++0z1PAP1p
MXEgznaPTpUbQlZFV24bvTS7sBYxJGgdOVPUVYinSTAzhvQ0+NdiBRzimSQI5z0PqKltPcAnQlQ6
nDJzUdsvmO0j4J7U14ZURsNlMcjNMSJ2TcvT61SWm4E883/LOPljwakgj8tMdz1qO1Ef8Od/fNWK
l6aAEh2ox9BmqkUe+CRjyT0qe6OIGpbb/UJ9KE7IBtm+6LB6rxUzKGUqehqtZf8ALT61aFKW4yrG
5t3KSfd7GpLlA8W9eoGQakmVGQ+Z0Hf0qmsbOG8snZ7nFNa6iJYt05Uv91f1NTySLH944qnCkrod
jYXPrU6WyjBclj+lEkr6gMLSXBwvypTrH+OrI46VSlg2EBWyWOAKE76ATxgSyu55UfKKGtxnMbFT
TFinjHyMCPTNPiny22QbWod+gDfKmbhpOKniiWMfL1Pc06lqW2wFqOb7o+tSVHN90fWkIkHQVBgF
mz61OOgqAfeb60IA2oew4oMantQ6BuRwfWmo5B2v19ar0JAw+h/Oo2Rl6irNAo5mBUpasPGrc9DU
LKV61SdwG0UU5BlgKYyyvSmSx7uR1qQUVmIp0oqeWPPI61AKtO4C0m0Z6UtFMAooooAKnijxy3X0
pIY/4j17VNUSl0EFVDwSKtiq0n32+tEQG0tJUiIW6dPWqGMp6xs3IHFTIir7mn1LkIjEQ7mnCNR2
p1RsxZtqfnU6sB2EBxgZpy/6xaaqBenX1py/6xaTGid/uN9KZF9wU9/uN9KZF9wVIySiiikAUUUU
AFOptOoYmIyhhhhkVSntivMeSvp6VeopqTQGQDg5FW7e4YuqOQQe9TTwLIpOMNjgis6tFaaA0J4F
l5HDetUpI2jPzDHvV22k82PB4Zak3Y4IqVJx0C5lilrQaOFjkpz6jikEMI7E/jVc6Aojk4HWrUNq
TzJwPSrC7VGEUD8KcDxuY4AqXNiGzOIIhtA9AKoySNIfmP4UtxKZXz2HAp9rCJCSwO0U0lFXYyKO
NpDhBn3q/DAsXPVvWpQAowAAPaiolNsBRS0gpagApaSloAKKKKACo4/9a9SVHH/rXoAdP/q6VPuj
6Uk/+rpU+6PpS6CHUwqR900+ii4hmHpyoB15NKeKbvJPyimBJUQzk7e1O+c+goRSCc0bAKrA/WnU
1lBpAGHTmkANy2KfwoqMZ3HjmnBST8xoYIFG45NPoopMY0/M4HahOGIoT7xNB4kqifMfTD8jZ7Gn
0EZHNIYhwwpEPJBpNpB+U0nO/pzQIlFNZ/Tk0gVj1NOCgdKQxgB3jd3qWmMpJyKPnHoab1EtBSnd
Tg0fPQr9mGKfSGMCknLU+iigBr/cP0pLf7p+tK/3D9KS3+6frQPoMufvD6VSq7c/eH0qlWkCWFFF
FUIdRRRTAKKKKYC0UUVIgoIz1oooGJgelLRRQIuw/uoRv4yahuU2yZxweajkkaQjd29KV5GdVDc4
qEmncYykwPSloq0IKKKKAFFLSCloAKKKKQBS0lLQAUUUUAOj++K0l+6PpWbH98VpL90fSsqm4+hG
n/Hw30qJzlyakX/Xv9KiNKISAcmpVh/vHH0pYFGN3epaHLsJIj8lfekaHHKnPsalpRU8zHYqVZiX
an15pk6cbh+NNgbDbexqnqgHTcOrUbXMm4H5frTphlD7UwSFY12/SktgGSDDsPenBmb5UGBUhVXQ
O/Bx2qMJuyYyePWncQMI4QDK3J7VA943IjUKPXvVgu6nDgEe9MMEMp+UFG9qat1GU2mkbq7fnSLL
Iv3XYfjUstrJGCR8yj0qvWis9hGha3e5gkuMnoalnG1gw61lVpo/m2oY9RwazlGzugLCHcoPrS1W
XzGGFzinCFu5AqLBcnoqAwt2Io3PGcHpRbsO5YpaYjBhkU+pYBRRRSAa7BVzUKKZWy3ShiZJAB0q
wowMCr+FC3IpQA6AdKmf7jfSoZv9YtTP9xvpUjIYVDIwNN+aF/Y0+26NUkih1wfwp3sxMVSGAI6U
tV4W2ttbvVik1YAooopAFFNkcIOetQ/vJfp+lNILloUVXELY5Io8lx0I/Oiy7iJZm2offimQLhdx
71G5fAV/rSXTmO1VR1biqS6ARXF4SSsXA/vVXMshOS7fnUdLWyikMlW4lXo5qwl7u4mQEeopkVm7
YL/KP1qdYoIjwN7e/NRJxEOVFkXfC2RSMzY2uKcGkf7owPakKKp/eE59qj1AIBmQe1PUMgYseMet
KwESZQdaY7lohn1pbgSW64Un1ouFyoPpUiDagFV5mJcjsOKS1YDACSAOtTrAMfMTn2p0CbVyepqS
iUuwEZgTHeo3gI5XkVZopKTAo1JAcSD3p1wuGBHeo4/vr9avdCJ1/wCPlvpRc/cH1oX/AI+W+lFz
9wfWoW42VqKKK0EKKWkFLQIKKKKACiigAscAZNABT4oy/sPWpFhCjMhqRG3nI4QVDl2HYDtiTI//
AF1Wc7yd3OadI+9vbtTKcVYTIXgB5U4pi28jHCgE/WrNS24/efhVczSAotbyKcMAD9aekAH3jmrd
wMSVFRzNoB0Z2Y28Y7VZ+WVOf/1VVp8T7G9j1qJK+qEgkjKfT1plWnbacnlTTGiDDMZoUu4yCilI
IOCMGkqgCnU2nUCYUUUUAFFFFAFu2/1X41BqH3D9Kntv9V+NQah9w/Ss18RSMwUtIKWukCzp/wDx
9L9DS3rYum9MCk0//j6X6Gi//wCPpvoKz+2A0c0VCCR0pSxIqhWFduwrlvH/AJKaOHeNWnLeXGxH
TPJx+VdNXEfEqVt2nw/wne5+owB/M12YCPNiIo2oK9RCfD6BRBd3GPnLiMfQDP8AX9K7Fa5XwRdW
7ad9mjY+ehLuCPU9vWuoU191SS5FY6KnxMmU1ItRCpAaskmU09TUSGpBQMlWnRoicoiqf9kYpi1I
ppDJVNdh4C00TXD38v3YjsjH+1jk/gK41TXrWgWy2ek2sSD+AMfqeTWVR2RpTV2aympFNQKalU1z
nQidTT1NRKaeKkpEympFNQKakU0ikTA08GogaeDUjJAaeDUYNOBpDHing1GKcDQBKDThUYNOBpAc
b8X/AAjD408DXthJgXMAN1aOTwkyowUn2IYg+xNfCYt0niSWI7Q6hgCOxFfo86rIjI4yrAgj1FfD
fxU8PxeGfiDrOlWqhbaKUPCoOdqOocD8N1A9zgJbZ41LHBA7iocVtbahazjZs8j2FCYWM3FKBWql
tEo+4D7nmmSWStyhKn07U7isZ4FOAq/DYjH70nPsak+wJnh2A9KLhY9d+C17JeeG5LMgsbWcogHJ
Ib5sfmTXfEEEgggjqDWD+ye4t9a1+0AyjwRSjPUEMwP6Y/KvcPFPhpNXltpoAkcwkCzPnG6PnPbk
9MfjW0Kq2ZjOk90eaWVncX04htIXlk9FHT6+lWdS0XUNNjEl5bOkf9/qB9SK9b0rTbbS7RLe0Tai
9WPLMfUnvVt1V1KuAynqCMg0nW10Q1R01Z494c0SbW7toonWONADI5GcDPb1NXfEnhW40hPPif7R
a5wWC4ZPqPT3r0XRNKh0i3mhgZikkrS89s44/Srd1BHdW0sEwzHIpRh7Gk6z5tNhqiuXXc5jw34a
0yXQLaS5t1mlnQSM7dRkdAe2KxtJ0BrDxxDbB/MiiQ3CseCV6DPvkiu9022FlYW9spysKBAT6AYq
TyI/tJuNg83Zs3d8Zzip9o9SvZqyPMItsfirX4lGB5wI/X/GhW2eNdBb/bI/MEf1pblfL8dawv8A
eAb+VR3B2+LNAb/puo/8eFfnTXLmH/b36n1i1p+sf/bT1aiisfxlrK+HfCWs6yy7xYWctyF/vFEJ
A/EgCv0E+XML406amq/C3xJbuoZltGmjz0EifOh/BlBr4hgtpZ7eeeJS0cAUyEfwhjgH9K6Kx8fe
JbXU9QvpNSlupNQjljuYbiSR4SJOu1N3GP4ew96sfDe1S8OsWTkiO4tRExHUA7hn9aVSfs4OXYiE
fazUTD8LNs8R6c3pMP61d8V2R0fxSzRkbHZblNoxgFjx+YP51Dp1nJp/jCCzmwZIbkKSO/cH8iK7
34g6X9u0Zp4ot9zbEMpHXbn5h71z1KqjWj2aN6dJyoy7pnQuvJqvcbkhcxrlwOBVt+NxPQVmNfrH
b3N1cEJaRDO7HOK8ZK+iPXemrMLxDqI0TTWYMDqFx9wEZxzyfw/nXncEZmkaSQk5OST3NWdY1CbW
NVlnkY7WYiNf7qdh9cdfenooRQq9BX0eAwqpxuzw8VXdWWmwtFFFeqcoUUUUAFFFFADZYxIhU/n6
VN4Z1mfw9rC3MQBRv3cqnoyZ/mOoqOoLqLeu4feH8q5sTQjWg4tXCyasz3O0u4b+2juraQSQyjcr
DvVqBgjkt0xXk/w88RDT7gabdsfs07gQ8Z2SMcY+hJ/OvVK+CxmFeGqOD26Hk1qTpSsWWnUDjJNV
3YsxJ60lU7/UrSxXNzMqkjIUcsfwrmhTu7RWpnuaNsu58ntVojIINcVdeL1jO3ToTI7DrIMAfgOt
JBp3irxQgkRPs9qRlS7GGNvoOWP16VrLCSiueq1FeZpCEpaRVzZ1DVbKwYrPOu4H7q/MfyFYU3jC
dpvI0y13M2du4Fmb6KP/AK9dPpPw0tEiD6vdSzTEcrCdqg/Xqa7TTNLsNKtxDp9rDboMZ2ryxxjJ
PUn3NYVMfhKOkE5v7kdlPATesnY8xt9I8bXkfnKWhDHhXdUP5UV6dJqdqjbTJk/7IzRWP9o4l6ql
G3+E2+r4ZaOX4o8SPAqvaruZpDyc8VYIyMVBZkAMncHNeytmc5ZpkqCRCp/On0VIEUEhI2vw4657
1LUEyFjuXhhSwSbuDw3cVTXVBcnxkYPQ1WtTtd4z25FWRVa5UqwlX8aI9gJZIlfno3qKaPOjPI8x
f1qSNw6Bh3p1K9tGBXlmV42V1ZWx3pIZ1WAgn5lHA9amlmjUEEgn0qmUeTLqmF9BVJJoCS2lWNWL
HJJ6AVMJZHHyREe5NNhmjxggIasjpSlvsBCsGTulbefTsKW6YJCQOCeAKmJwMnpVQZuJ84+RaS11
YE9upSFQevWpKKbIwVck4FTuwBmCqSx4FRwKXYyuOT90egqIZmbJyEHb1q4OlN6CCobpA0ZbHzDv
U1RXRxC3vxRHcYtuxeIE9elS1DbKVhXPfmpqT3ELUc33R9aJJFQc9fSoPNMjc8D0ppdQLY6CoB95
vrU46CoB95vrSQD6jmXK59KkpCMgimiSOFsjB6ipRVePiQflVgU5bgLQeRzRRSAhkjxyvT0pIR8+
ewqbIzjPPpUUqY5HTuKpPoBJ5ijuKaZh2BNQUUWCxMZvRf1qGRiTkYFFKOlNKwyPcfWjcfWhhg0l
UA7cfWnxscgnnFRqMmpKGImE3qv604TA9QRUFAqeVCLQkX1qKfG4EdxUdTRR/wATfgKm1tQCOLu3
5VNSZGcZ59KWpbuAoooFFAEUz/wj8adEuEz61Efmf6mrA4FOWisAUL/rFooX/WLUDRO/3G+lQRzK
rbG496nf7jfSs2b/AFhpxV9BmnRWfDcNHwfmX0q9G6uuVORSlFxAdRRRUgFOptQXUpBCqcdyaaVx
Ms1DJOq9PmPtUG2RgMsSPc01E3SbR681SiuorlqAuwLMevQVXvYiG8wDg9audOlDAMCCMg1KlZ3K
MtGKMGU4IrQRhNGGXr3FUZ4jE+Ox6UQymJ8jp3HrWklzK6EXaKfxIodOQaRVyazRNhUGfpVa6m3H
Yh+UdfenXUwA8tPxNVBVxj1YxyIXYKoyTWmiBIwinoOtR2sPlrlvvH9KmqJyuMrrMUYpJzjvU6sr
D5SDUN0mQHHbg1CiMRlTinZNXC9i8KWqO+RHG5ice/WrqkMoI6GocbALS0lLSAKKKq3FyE+WPBbu
fSmk3sBPLIsa5Y89h60y2beS2MZrOZixyxJPvV+y+7+FVKPKhE0/+rpU+6PpST/6ulT7o+lZ9AHU
UUUAMblgO1SAY6VGf9ZUgpsQtFFVb2VkCqpIJ7ihK7sMtUVlpM6MCGJ9ietaY5ApyjygNPD/AFqS
mMMilQ5HuKliQ6iiikMavDketHWSkY5Ix1pUIHXrVEj6KKKkoKYnLE0rnsOppVGBQIcKWmO2yNm9
BmswyyE5Ltn61UY8wzWoqvZSmSMhuSvf1qxUtWdgAgEc02PIJB7U8UxDlmNIQ+iiigY1/uH6Ulv9
0/Wlf7h+lJb/AHT9aYdBlx94fSqVX5f9atSMit95QfqKpSsJmZRWgbeNv4cfSmm0TsWqudCKdFXP
sqeppRbRjqCfqaOdAUqACTwCa0BDGP4F/KngADAAFL2gWKKwyH+Ej602RCjlTjI9K0azpG3Ozepo
jJsQ2iiirBhRRRQIKUUlKKACiiigAooooAngh81SQ2CD0xQ1vIvbP0pbJsSEeoq9WcpNMdjNZGX7
ykU2tWmmND1RT+FJVAsZlLWgYYz/AAL+VHkR/wBwU+dBYz6K0RDGP4F/KlVFX7qgfQUvaBYoojA7
ipA9a0F+6PpTJv8AVGnr90fSok7j6Eaf8fDfSo5Btc1In/Hw30p7oHGO/rQnZiY2A5THpUlVgWjf
mp1cN0PPpRJdQRXv5WRQq8FupqjGzIwZTg1qTwrMmDwex9KrfYiEY7stjgCrhKKVmBZhlWeP0buK
dFHtJJ61lIzI2VJBFWhfMBygJ+tEoPoBeYZUj1FQhJEHynj2qVCWRSepGaXcB1IFZJ20AhLsBh1y
KdE6DpwfepuopjRKR0x9Kd0Axd5lzzt/SiRUBA6GkKOh+Qkik3B2G/5SKoQoZ4zzyKSWGO4GV+V/
WpJX2gcA5pmw7Q6ce1JPqBnSxtE21xj+tXrGRUtzvYKN3epPknTZIOaz54mhfaeR2PrV359GBckv
lBwilvfOKrvdyt0IX6VXFLVKCQEouZgfvmrdvdCUhJAAT37Gs+gHByOtDimBpkGKQEdKsA5GRUDf
NArHk4HNSQ/6pawltcCSmSttQ460+obg9BSjuNiwLgbvWpRTUGEA9qcKG7gRTf6xamf7jfSoZv8A
WLUz/cb6UARW3RqmqG26NU1D3BkFwuGDDrUyHcoNNmGYz7c0lucofY090SSUjttUn0paiuT8gHvS
SuxjI08xizdKinvMErEB/vVLKdlmSpwcVm1rCKlqwRL9pm/56GpEvZF+9hh71Woq+VdgNKK9Rzhx
sP5iotRYMsZUgg5ORVKp7WAzNySEHWp5VF3AbBA0zccL3ar6JHbjgZf170rMIwEiAFIV2rucZPoa
hyuIU7pMk8JTolQjjkj1pykPGc8ColbYSI/mJ71O+gD03q+XPHqaSVoyemT7UCJm5cmpFjVeg/E0
XQEe+Rh8i4FKI3YguenrU3QelCkHoQfpSv2AWoni3Pnt3pZ3McRcAHHaqb3zlcKoU+vWiMW9gLF3
cCJCqn5z+nvWYWJbcSd3XNKA0kgGSWY96unT+RiTjvxWq5YbgT2Uplh+bqOM+tWKjhjWKMKvbqfW
h5FT3PpWL1egDLk9B+NNt1y+ewpFDSvn8zVhVCjApt2VhDF/4+W+lFz9wfWhf+PlvpRdf6sfWktx
srUU50KHnp602tBCilpBS0CCpI/LK4fr61HRQ1cCfES+9IZsDCLimhBgZoIAU8VFkFxo3SMATk1L
MwVQgpLcABnPaoiSSSe9G7AKKKKoAqa2+830qGp4RiF29c0pbAhLr7y/Soanl+aFG9KgojsDFooo
piJ4WDKUNRndGxAODTVO1gR2qW4AO1h3qdmMUTgjDrkUuIW9B+lMABUcUFRg4pWQrhL5YUBOvrTK
bTqtKwMKKKKACiinIhbOOg70AWbb/VfjUGofcP0qa2/1X41DqH3D9KzXxFIzBS0gpa6QLOn/APH0
v0NF/wD8fTfQUaf/AMfS/Q0X/wDx9N9BWf2wK1OKMFDFTg96QcmtRQAoGOMU5SsJuxlV518Q5d2u
RR9kgX8yW/8ArV6jPbA/NGMH0rznXNNk1HxBrEzD93ZwDHu3lggfqTXo5ZOKqucui/yR0YZpSuzO
8CAnW5D2Fu2f++lr0BTXnvgZwutMp/jgYD65U/0Negqa+0w/wHRW+ImU1IpqFTUimtjImU1KDUAN
SqaQyVTXn8vxTsLPUbq0v9Ou42glaItEyuDgkZ5213wNeG/Ee0isvHV15alVuIllIPTceuPyrGtK
UVdG1GKk7M9U0vx94avgCupxQkYJW4zGR+fB/CvomxuYLq2jmtZY5YWUFWRgwIx7V8ANbxPndGvP
tXSeCPFmu+CLyO80K7lktFfNxYSNmOVe4x2PJ5HI965nWctzpVFLY+5lNSKa5H4d+NtL8caFHqGl
yBZAMT2zMPMgbJ4b8sg+ldYppi2J1NSKagU1KppMZKDUgNQg09TUlE6mng1CpqRTSGSg04GowacD
SGSA08VGDTgaQx4NPBqOlBoAlBr5n/ao8PJaa7pWvwIAt+rW1wc9ZEAKfmgb/vkV9Kg15P8AtLaH
Nq/gGG6gyRpd0Lxx6rsZD+W/P4UmCPlDbShak20oWkURhaeFpwWnhaAGKtSKtOC1teFPDmo+KNah
0zSITJM5y74+WJe7Mew/nQB7J+yvpbebr2qt9wiO1XI7jLE/qPyr6CrC8EeGrTwl4as9IsfmEK5l
lIw00h+85+p/IYHat2gAooooAKKKKACiiigDy+9O7x5qpHZQP0FQX3HiPQmPQXK8/wDAhUjHd411
xvRtv8qi1H/kPaH/ANfK/wDoQr8+qO+Pb/vfqfUwXuJf3f0PWK84/aHuI4PhDrwkkCNKIokz/ETK
nH5A16PXzv8AtbeIEFpo3h6GY+c8hvLiMHjywCqZ+rZI/wB01+hLc+Uk7I+d0sp302W+VCbaOVYW
b/aIJ/w/76Fdh8JxnVL/AP64r/M1f0jw9LJ8NbuFtyT3TfawpH93btH4hB+dU/hEN1/qZ/6ZR/za
uStVVSlUt0/4BtRpOFWnfr/wTW8T6SqeLdEv4IiPNm2TMo4yB8pP15H4V2BFSSRq4AdQcEMM9iOh
qG6lWCJpG5A7epryp1HNJPoepCmoNtdSC7gaaHYj7OefcelecfEHWN9wulWjsIYOJsHhm7D8P5n2
rs9Q1BNF0aW9vHbzJDtjXuzEHAH5E/hXkUXmXVw0tw5kcnc7N1Y13Zfh+eXOzjx1blj7NdSa1i2J
uPVqnoor6WMVFWR5AUUUVQBRRRQAUUUUAFFFFAFK8gHLYyrcEYrtNB8a3X2GCwaISXSjYsrEkv6D
HrXMEAjB6VHPptzDbi8iRhEDkMp5X39fxrzsbgoV17yuRUhGouWR6nBoXi/WPkkV7WE8/vW8tf05
re0n4YWkDh9TvXuQOfLhTy1/E5JP4Yrn/hz8TiIBpviabfIvEF45A3Dsr+4/vdx15GT6JcatO6Hy
1Ea/3uv618HjJ5hSqOikoLuuvz3F7PDUdZasuado+laQC1lZ29ue7hRn86fcatbxfdYyN/s9Pzrn
ZrmSU5kdmPuc1XaWuKOAc3zVZNsyqZjyq1NWNi51mZxiICMfmazJ7l5WzK5Y+5qo8vvULzV30sLC
Hwo82tjJT+Jloy80VmSXcaNh5EU+hbFFdSovscn1g5Sq02YphIBwetTRNuQH8KV1DqVPerWjPaHA
ggEdDS1VjdoH2Sfd7GrQIIyORSasAhXNRyQ7vmU4cdDUtFJOwEKTYbZKMN69jTFeaQNtClelTzBT
ExcZAFV4BIse6Mggn7tWrWuBGRJB7ZqUQPJgvICPzp0sqlSsiMDjpRZA7TyMelNt2uBIlvGhBxkj
1qaim7hWd2wGyRJIcsOfWoTakHMb4PvVmmzBjEdhwaabAqEyuxi3bu1PAnhjOAoUcnpRbyxxocg7
v50+QyyqQF2oR36mqfYBUuAIQz8sewoEbTENLwvZRSWaIU3Y+bOM1ZqW7PQBoWn0lLUgFVZczzhB
91etOuJf+WcfLHipII/LTn7x61S01AkqOeXYuB941Iap/wCtlJ7GlFXExY4yxy3SpSAqgCnDgUj9
KbdxLcnHQVAPvN9anHQVAPvN9alDH0UUUyRmwbt3eniimu21SfQUbgJLKsY55PpVZ5WfqcD0FRkk
kk9TT40LsAK0UUh2LFsuE3dzU1AGBgdKKzbuJkEqbTkdDUdWyoZSDVUjBwetUmCEpRSUoqhgRkVH
jnFS0vl8b6LiGqMCloooAKBRSoCxwKGBLCmTk9BU9IowMClrJu4ivdrwG/Co0mZeOo96tsAykHvV
F1KMVPUVcdVYaLsUiuOPyp9Z6sVYEdRV9TuUH1qZKwmhBGA26nUUVLAKF/1i0UL/AKxaQ0Tv9xvp
WbN/rDWk/wBxvpWfOjZ34+X1qqe4dCKnwymJ8jp3FMorVq4GsCCAR0NFVbF8qUPbkVarnas7DDp1
qigLyZP1NXWGVI9RVQRygHCkZqoiZKzhepptsQZmPsaEt2P3jirCRqg+UUNpKwkh9FFFZlDZEEiF
W6GsyRDG5Vu1atRzRCVMHgjoauMrAUbeUxPn+E9at3M3lqFThjzVFlKMVYYIoZi2MnOBitHFN3EJ
V6zgwBI/XtUdpBuIdx8vYetXhUzl0QBRRRWLBDJ/9S2fSq0LhRg+tXKgktwfuHFXFrZg1cbMNyZH
bmnWbEqy9hUXlSqTgVNaxshYsMdKbtYSLFLSUjsEQsegGazGV7ybaNink9faqNK7FmLHqTmkreKs
hBWhZfd/CqCqWOFBJrQtVK/K3UCpqbASz/6ulT7o+lJP/q6VPuj6Vj0AdRRRQA1xxn0pyHIopn3D
7U9xEtQ3EPmpgHDDpUoORxS0k7DKKWbbh5hXb7GrtLRTcm9wGs2DgU3JznGKX+OpKWwtyMFj0pdh
J+Y0i/e+XpUlD0DcFAA4oKg9aR5EQDewFKjq4ypBFGu4DdhHQ0EsOtPqPq/zUCYDIOcZpytnOadT
V++aNw2HEBlIPQ8VRayfPyspHvV8UtCk1sURW8Qhj29T1JqWikJwMmk3cQOcL9aEGFpqjcdx6VJQ
wCiiikMa/wBw/Skt/un60r/cP0pLf7p+tMOgkv8ArVqWoZv9Yv0ootclsnFLUAY+tO3t60WC5LSZ
qLcfWko5RXJSwHelByM1DUw4FJqw0xJDtRj6Cs6rt2cQ/U4qlWlNaCYUUUVYMKKKKBBSikpRQAUU
UUAFFFFAElu22ZT74rSrLQ4dT6HNalZVNxoRmC4zQHB70ko+UGoqhK4N2LGR60VBS5p8ocxNRUOT
60lLlFzEkxHlkZ5p6/dH0qu/3asL90fSk1Yad0Rp/wAfDfSpag582THXFJ5r+tO1wbJ3UMMGqpGD
inGRiME0yqirCY4Ow6E1ZQkR7nPvUMcZJy3T0pmosQiL680buyBFe6mWVvlUAepHJqAgjGR1qe2t
2lIJGE9fWrV1beYFKcFRjHtV8yjoMdaSeZBtz8yjFI0TKM9fpVBWaJ8qcMK07aYTKT0YdRUSTjqg
I0kKAgUea+etSzR7uV6/zqvSVmItRPvX3HWldA3XrVVGKk4p/mv6/pRyu+gXFw0Z5AK1I8hKApSx
/Onzc5pjKYm3L92lu9QAoXQNjDUjAXERRvvDoae8hKAp+PtTHVgBJjB70AZzoUcq3UUlXbtBLGJV
xlfvVSraLugCj6UVbsYSWEjfdHT3obsrgWX+WFF74FSxDEag1CT5kox0qzXPLawBUNwOhqamuu5c
UouzGwQ5QGnCq4ZozgjineeMcDmqcewrizf6xamf7jfSq25mZS34VZf7jfSpasMitujVNVRHZOR0
71L54x905puLE3qPmOIz78UluMIfc1F88p9v5VZUBQAO1D0VhBUdwMpn0NSUjDKketStBleT57Ng
OSBWdWlEdkhU96p3MJhfgfIehreDs7AiGiiirAkgiMsgUdO59q0GIRRFH24qOBPs8Of435+lSBWR
N+PmP6VlJ3YmG0xICBlj+lPEmI8v19KQSkR5b73b3pEQudz1HqAKrSnJ4AqZFCjimTMygFTiovNf
1/SizYEs0m3hetRCV89aazFmyaQDJwKpRSQrjnYu1SRxNkHgc1JHGEHvUV1ceSNq/fI/KpvfRDsN
1CUBPLB5PX6Vn4OM44pyhppMdWY960YrVVgMb87jkkVpdQVgK9lOqMFZQM8bh/WrsxYKCp471lzw
PCfmHHYjpV+xbzLbDdjtqZpfEgGM7N1JoRdzAU6SIpyOVqMULyEXlUKMDpS1VErjvQZXPQgfhUcr
C5Kv/Hy30ouv9WPrQn/HwfpRdf6sfWktxseVDLg9KqMpViD1q6vQVWuf9Z+FOD1sIjFLSClqxBSo
MtSU5SFHvQwJKa5G3HemFiaSlYRYPFtx3qAVJ5gMO09ajFJDCiiimAVPJ8kKrTIE3vz0FLM2+TA6
DiperAdH88DL6VBUsLbJME8GkmTY/saFowGUUUVQgqcc29QVLvAi2jrSYwQjbinVBTg5H0oaFYHG
GopzEMPQ02mgCiiigBVUswAq0FCpgdKgt/v/AIVYPQ1nN62Ghtt/qvxqHUPuH6VNbf6r8ah1D7h+
lC+IaMwUtIKWukCzp/8Ax9L9DRf/APH030FGn/8AH0v0NF//AMfTfQVn9sCtWnE2+NT6isypreby
ic8qaclcTRoVQnsY1NxKqgtM26X/AGuAo/QAVdR1f7pBpTwOelZqTjsSnY8Rt2OheIMSK223lZDn
qU5GfyOa9It5UmiWSJg8bDKsO9UPF3hxNU3T2pC3aDAPZx6H/GuQ0DVptGvDa3YYQF9roT/qznk/
419xluPjWhbr1PRTVaN1ueiqakBqvE6uiuhBRgCCO4qZTXrmZMpqRTUKmpAaQycGvOvjPpgl0qz1
SKN2mtZQjlegjOeT/wACx+Zr0JTTLy2jvLOa2nVWilQowYZGCPSonHmi0XCXLJM+dkYMoYdCMip7
Z9kg9DwajvrGfRdXudKvARJC5CMf406gj6jmkrzmujPRT6o3fDevan4L1+PXNCblSBc2xPyTp3B/
x7da9o1D9pG08rGkeGb+WYgY+0yKi57/AHc/nXhVrJvjwT8w4NWVoUmtAcU9T0m++PvjS6cHTtI0
yyXuJcyf1FUbr4x/EW5A2XelW3b91Af65rh1qRaXMx8qO4tfjP8AEe0i2mbSLs+skBz/ADArq9E/
aPvLcpH4l8LynAw0tjJkk+u08evGa8hWpko5mHKj6Y8MfHnwJrsgifUJ9LmJICalEIv/AB4FkH4t
XqFneW13GslpcRTxsAwaNwwIPIPFfBerRacls0t/FGRjAJGCT6AjmvoT9lvwJNoGgzeItSjaG51Z
Fe2hEu5Ut2AZTjPVsg85OMdDmqTuS1Y96Bp4NQqaeDTESg08GogacDSGSA04GowacDSGSA1T1uxG
qaJf2BKj7VbyQ5YZALKQD+GatA0tAHwdqWnT6Xqd7p14u25s53t5OCAWRiu4Z52nGQe4INQBa+r/
AIq/C+28Zlb6wmSy1eNdu8plJhkcPjnIGcGvELz4R+Nre78mPRTcpn/XQzx7Ov8AtMD+lTYdzgQt
ORSzKqgszEAADJJ9AK9f0D4Da/eFH1i9tNPiyMomZXx39AD+deyeCPhj4b8IyLc2dq1zqW3a15cs
Xb/gK/dT/gIGe5OKLAeFeA/g3r/iMwXepBdK0pjljMD57j/ZjxxnnliMehr6V8KeGNJ8KaaLLRLR
YIjgu3V5D6sx5JrYBpc07BcWikzS5pDCijNGaACijNGaACijNcz8RfGNj4G8My6xqKSyqHWKKGIA
vJI3QDJA7E8noKAOTUf8Vdr5/wCmwFYfj+/m0qyTULXb9otUeePeMjcoyMj0yKZ4C1i41jTp9Z1U
xJc3Ucc8/ljCKxBJx7VB4ouLbWs2wjMlttaOQngODwR64xX57JN42TX8z/M+qinyL/D+h4/Y/GDx
7Z6mupPrUtxHIxPkTwL5DgHlRgAjHTg5HfNZHiDUrr4ifEW4vpEEMmpSqFjLkrDGiAYB/wB1Cfck
+teieONAhvvCskFrCkbWg86BUG0KQDkY6cjIrA+E+hmOB9ZnUEzLst/ULn5j+JGPwr7j65F0nUWj
/qx808LJVFTeq/q530cSxwpEoyiqFGfQDFeffDizlsvEXiCGYANGVQ46feY/yIr0Yisy109YNZ1C
7VNv2lYyx/vMAQf0C15dOpywlF9f8z0p0+acZLp/kXGGaqyxw3QKsdwRsHB6GpNQnEEBwcSNwv1r
nvE+qf8ACPeH2kjZft0x/dhueT1OO+KiEHOSit2XOShFyfQ4f4h61/aWrfZbeUPaW5xgdDJyCffH
T86xII/LjAxz3qpZQgkZHyKMCr9fV4SiqcND56rUdSTkwooorsMwooooAKKKKACiilAJIA5JoASn
xRvK4SNSzHsK0rLRp5iDP+6T35Jrfs7OG1XbAmCep6k1LZDkkZ2m6MsJEl1h5ByFHQf412vhzw9P
q8gkkPlWYPzOereyj+tXNB8NGRlm1JSqdRFnk/X2rurfbGiogCoBgADAFawpN6yOSpX6I8j+I/wz
a1RtS8NxF4FX9/aZLPnuyevuvHTj0rC8GeNntlhsNVdpLbASGfOTGOwYk/d/lX0MhyK8r+JHw1W+
afVPDkQW8Yl5rUNhZj6pnhW/IE/UmuLG5fCvHb+vIIVVUj7Op95qGdWUMrBlIyCDwahknAGScCvK
tB8SXmi77G5BaFGKbH6wsDgj6e1bcuoy3iKxl3oeRjgV8vLL5QlZ7Hk4ynUoSs9ujOmvNYghyATI
3ovT86xbvWLibIU7FPZev51lk5orohQhA4HJscXJOc0U2itibly1PDD8anqpC2yTk8dDVkMp6MPz
rxpLU+pQsiCRcN+fpVbMluefmTtVugjPWpUraAMSVH+6fwp9QNbITlSVPtTPsz5/1nFOy7gOuJd3
7pOSetTxrsjA9BzTIoVj55LepqR/uN9KTfRAVh+/nJz8i9qlaBGOQNp9RTbMDyiR1zzU9NuzsgIT
AQMiV/xNM8uTtIfyq3Tdoo5gZAkLEcytj2p4t1P32ZvqalpRScmBVuIvLKyRDGOtWUbfGG9RTbj/
AFL59KZZ58nnpmjdXAijP2edlY/KauUyWNZBhvzFQfZ3B+WTijRgWWYIMscCq7zNKSkIP1oW1z99
yfpVlEVBhQAKNEBHBCIxk8t61LRRUt3AjnbbGfU8VFbjgmnXTcBffNLGMIKtbEseBk1Gz7nKj7op
7HbGzfhVeLqaVtLgi8OgqAfeNTjoKpzfe/E0luMsUUyNtyAmnEgdTigkWmuu9Sp70oOelKKAKot3
zg4A9asRoEGB+dPpGYKMmm22FxaKjEo7gingg9DmlYBwqGdeQfWphTZBlCKEBVpRSUorQYoGSAKs
gDbjt0qGEZf6VPUyZJWYYJFJUk4+YH2qOqQwqaBeC1Q1bUYUCpkxCilpBQWA6nFQAtMkjEg54PrT
TMvYGpFO4AijVAVvs75xxj1q0o2qAO1KKKbdwCigkDqQKAc9OalgFC/6xabK21OKbbfeH1otpcaL
b/cb6VUE5jfawBSrb/cb6VQnQ/f7dKIJPcOg64iXb5sX3T6dqr1aszvR4m+7iqrDaxB6g4rSPYCS
3YrMuO5xWlWSDg5HWrC3cg6hT+FTON9hl6nVWjukY4bKn3qwCCMg5FZNNCYtFFFIAooooGFAooFA
EVxCJV4+8OlVraDzGy33QcfjV+gDHSqUmlYApRSUoqRBRRRSYIKKKKBiilpBTJJUjHzEZ9O9G4iS
oL1isIA7nFRPeH+BR+NQSyvLjeRx0ArSMHe7ER0+JDI4VaZVuzAVJJD1HFaSdkA55Etl2RgF++ak
tWLfM3UiqA3SP6kmtC2XaSvoKzkrICSf/V0qfdH0pJ/9XQGAUfSswH0VWluFXjOfpUf2oeh/OmoM
RdpeoqCCXzACOnTmpxSasMZgoeOlOVgadTCgPTg0biH0hOBTcMO9AU5+Y0gFTuaJD2HenU0cyUB0
HKMCloopDMy4YtO+7scCpLIkTYHQjmrU1ukp3EkH2pYYFiyVySe5rXnXLYCWkdcj3paKzEIhyPem
vwwNC8OaeRkc0bAKORS1GFI+6aXDHqaVguKzAfWmgFjk9KcFA68mnUAKOlFAqCeXZknoOwpJXAno
rPN36L+tSx3ILY5H1q+Rhcsv9w/Skt/un60hfch+lLB90/WpDoNm/wBYv0opt3/7LVFZHXoxq4xu
hNGgKWqH2iT+9+lNaV26sarkYrGgSB1OKWqEI3yqCav1LVgFX7wqaok+8KlqGCK95/qwPeqlWr37
qfjVWtIbA9woooqgYUUUUCClFJSigAooooAKKKKAFFacZyin1ArMFaMH+pT6VnUGh7jKGoanPSoK
iIpAzBRljgUoII4OajuBmFvzqgCR0Jq0rhY06KzhI46Mfzo82Q/xt+dPkFY0H+7Vhfuj6VlQkmQZ
JrVX7o+lZzVikrIjT/j4b6VE4w5HoafuCzMT6VGxyxPrREJE4iU8jOKeqKvQCki4jGadUtsAoKq2
NwBx6iimTPgBR1NCAR5ccL+dOhJK5JzzVeprc8EfjVSVkBmSo0blXGDV7TkZVdmGA2MfrVogHqAf
wpRRKpdWAWqkg2uQKt1UkO5yamImNpRUkcO5ck9elNdChwa0ugJYnUKBnmpuCPUVSqW3GWJ54qJR
6jDmGT/ZNPkkw23AIIp8i71xUcLDaQ38PNLfUQ0Dy5CpHyn1qhOnlysvYHj6VoOwkUkcFarXa7kS
T/gJrSD1AbbW5lIZshPX1q3K235FGAKzkkdPusRVlLxukihh6jrRKLbuBahKjv8AManqsqpKm6M0
6JyrbGrNq4E9FFN3jJB4PvUoYpAPUZoCr/dH5UtIWCqSaAIpTmUe1Tv9xvpVRTlgT61bf7jfSnJW
EQ25HzKam2r/AHV/KqiNtcH0q4DkAiiSsADjpRRTQ4LbRz71IDqKKrsxlbavSmlcAnKsflPPelUi
ZCkgz70jiOBd0nJ9PWqz3jnIQKo/WrSb2EMuIGhPqnY0WcfmTDI+VeTUbyO/3mJ+pq3bjZbc9XP6
Vo7pDJh87lj0WpI5dwYkYxSIyx4Q5yetJMdzhF4rLcQiAyuWbpU5IA5pFG1QBUEww/fHWluw2HzO
rLgHnNQ0U+OMv7Cq2QhlSQDMn0oljCAEHj3ogOJPrQ3daAWaoaijeYr4+XGM1fowCOeazjLldyjL
s0Z51KjIU5PtWhOxXbg4qUADoAKr3By+PQVTlzMQ+OQP8rgc/kamVVUYUAD2FUatwvvT3HWlJW2A
kphjQ9h+FPoqEBBJGqqTzTIRmQVLcA7PxqGNtjgmtFqhEy/8fLfSi6/1Y+tJGQ05I6Ypbr/Vj61K
3GyVe1VJmDOSOlTSvtQY6mq1OC6iFFLSClqxBRRRQAUUUUAFKKSlFIApyLvbFNooAsMwjXavU1Gi
45PWo6lQ5UVNrAxHXPI61IjCVdr8NTHOFqIdaLXEh7qUbBptLSVQBRRRQMKKKKACnU2nUCYUUUUA
PiYK4J6VZPQ1TqzE+6M56iomuo0Lbf6r8ah1D7h+lTW3+q/Gor77o+lJfECMsUtOZccim10jLOn/
APH0v0NF/wD8fTfQUaf/AMfS/Q1bns/OlL7yM9sVlJpT1Ay6K0P7PH/PQ/8AfNH9nj/nof8Avmn7
SIFAcdKCSeuTU2oLa6fbtNeXSRRgE/NgZ9hzzXmWv+LLjUC8FgHgtGAGSMSse/IOAPpz/KuvC4We
KfubdzSnSlU2Oh8QeK7fTy8Fni4uwcH+6n1Pc+wrz25lmu5pbiZmd2OWYmnxWxb5pCQDzjvVvaNu
3HGMV9Xg8ujQjpv3O+nTjT2Ol8E6n59sbKTAkhGU/wBpf/rf4V1SmvJreaTTr+OeLlom3DPcelep
20yTwpLGwZXGQQc16NGTa5XujOrGzui0pqRTVd5BFG0jfdUEmpY3DKGUhlIyCDwa1MidTUgNQKak
U0hnL/ELwoviLTvOtVxqdupMBBC7/wDYJP6e/wCNeNZkhuZLS8QxXcTFHQ+or6RBrnvFnhDTvEyR
tdeZDdRA7JoSAfo2QcjP4+9c9Wjzarc6KVbl0ex41bPslHoeDWktWNZ8C+INIWM20Y1WIkLi3RjJ
k9tvU/rVDUZL3SDGNY0nUrAv937TbtHn6bsZrjlFx3OyMk9i2tSLWUmtWWOZGH/ATTo9agkmSG2i
nuJXO1UjTJJ9AO9SUbC0y8vYLGISXD7QTgDGSTWt4e8HeM/Eepx2lhoN3p8B+/dahA0SoMHBGcZ6
ds9R0r2v4f8AwI0bQ72HVPEdxJrWqRsxVXwLZTnIYIRksPckc5xnGKUWyXJI4b4L/Cy88V31v4k8
VwTWukxMk1lbb1xM6PzvjIJ28d8Z9wa+p41WNFSNVRFAVVUYAA6ACo0wAAAAB0Ap4NWlYhu5MDT1
NQg08GgCYGng1CDXn/g7x8t78RvE/g3Uji/sJzNaOcDzIGVW2/Vd/wCWPSkM9IBpwNRA04GkMkBp
wNRg07NIZJmjNMBpQaAJAaUGmZooAkzSg1HmlBoAkzS5qPNLuoAfmjNMzS5FIB2aM03IoyKAHZr5
O/as1O5uPiFZaY7E2tpYJNEgJxvkZwTjpnCAZ9zX1fkV8WfGbVV1v4y6m6lTDb3MVghU5yIyA2fc
Ozj8Ke2pMtrHoXhy2lt9Csrd2ZVWFFYA8MQPStUKAMAcU4LtAUdBxRXysKUYNyW7PpJ1JSSXREUi
K6MjjKsCCPUU+HT/ALPp0bwRIlsn7tVQYCge3pSkV1OmLHNpUSFQUK7WB/WtlroZN21MCDSbieFZ
I2i2sMjJP+FP/sK4/ikhA+p/wresLdrWAxMcqGO0+xqHV3lW38qCMu0p2ZAztB707E8zuYFnpcV5
JIDKCIjjds/kT9K8E+IWpDVPFV0IGLW9sTbQkEkMAxy2OxJ/kK9c+LGvDw14TXS7cH7dqUbxLIhx
5a8bm4IIOG+U+orwizjyTIT7V6uXYe752edjq1/3aLMSCNAop1FFfQpW0R5gUUU5EeQ4jRnP+yCa
YDaKtQ2F1K2FgkHuw2j9avpoMxxvljX1AyaVxXSManxxvK+2NS7egGa6SHRLWMguZJD6MeP0rSjj
SMARoqgccDFLmJc+xztpocztm5IiT0BBb/CtqzsYLVQI0BYfxsMn86tUVLdyHJsKKKKQjV0XWZ9O
nUMzSW5wGRiTtGeSB616PaTpPCksTB42GVYdxXkdd54JuWl0to26ROVH0xn+tdNCbvys5q8FbmR1
8TVNVOJqtqcitmjnOB+JPgCLxFG1/poEOrRoQFG1UuDnPznHXrg57814daXNxpd3Jb3MboUbbJE+
QUP0r6wrxz4+W9hG+mzpbouoylg0o4LRr2Prya4MXQjKLkdNKSqL2NRXTOVinjliWWNgyN0NHmFn
CxqWY9ABkn8Kv+AfCi6lpiXtxPJHDKWGxRhvlYjjIxzjNejabpdpp0IjtYQvcseWJ9Sa+RxeYU6E
nCOrRwPBU6c2tzz+LwzrE0YkFvtDcgNIoP5Zor06ivNeaVuy/r5m3Kux5UYgeQaaYj2INTqMj5SD
RXTc6iANInripY5wcB+PenUySIEfLwaNHuO5YoqrBIVO1un8qtVDVhiig8jBoFFICoM20hyCUNWk
dX5Ug0MoYYYAioTbAHMbFTVXT3As0VVC3IPDA/U0u65/urS5fMCzQWCjLEAe9VSLlu4H0NOFsW5l
cn6UWXVgNlkMzeXF07n1qzGoRAo7ChEVBhRinUm+iAKKKKQBTZJVTryfQUyeTYML94/pUMce/ls4
/nVKPVibHNcMfujFNPmv13H9KmVQvQU4U7pbCuQCE9yBU4GBilAJ6UEY6kD60m7iIrk4RV9eaji6
mluGDMMHIAxSRdTVfZGXh0FU5vvfiauDoKpzfe/GojuMVXEcOT1zwKrsxY5Y5pZGycDoOBSIpc4W
tEraiJ7XPzelWBTI0CKB+dPFQ3diFpGUMMGlopAQmH0NNw8ZzViinzAJGwYcdadUTLsO9encVLSY
FVxhyPekFPmGJD70wVaAlg6n6VNUERw/Pfip6mW4iKfoKip8zZbA7UyqWwDohmQVaqvAPnJ9BU5O
Bk1MtwEdwg96h2u5yfzNSRru+Z+p7VLSvYCEQ+pqUAAYHSlopN3AUUUCigCtd53r6VEjshyp/Crc
sYkXHcdKpspVsN1q46qw0WnYPEGHrS233h9arRnnaeh/nVm2+8PrSkrIEW3+430quRujIqw/3G+l
QL0rNB0K1qSLhffg0txEwlYhTtJznFNlBSUkZHOQaet1IPQ/UVrre6BEFFWlnik/1qAH1ps1uAu+
I5XrRzdxlepYJ2iPHK9xUVFNq4Gsjh1DKcg06s61l8twD91utaNYSjZiCiiipGFAooFAC0UUUkAU
opKUUxBRRRSYIKKKiuZfLTj7x6UJX0GR3FxtJWPr3NUySTk8miiuhJIQUU+JDI+1etWSsEHDZZve
hysIqqjN91SfoKsyAx2SqRgseaabxv4FUCopJZJeGOe+BU6vcCS0Xlm/CrcP32qG3XbEARg96mh+
+1RN3Eh83+rqhLOX4XhavzfcqvFCqAFhub36ClBpDKyQyPghcD1PAomjMTYJB4zxV7knFUrhxJKS
Og4FaRk2xEtkTlh9Kviqlom1Rkcnk1bFZzeoIWiiioGFFFFABTW+Vtwp1LQAgIPSlphT+7xR8496
VguSUUze3pRub0p2FcfSMwFN+c+1KEHfmgAQdz1p1FFIBRS0gpaBhRRRQAoqhe54+pq+KrXUe5T6
9RTg7MTKUMfmvtzjjOafJbunIG4eopkD+VKGI46GtDkGtZNpiZSimaP3X0rQg+6frUEsKyAnGG9R
3+tT2/3D9aibTGiO7/8AZazq0bv/ANlrOqqewBRRRWgie0GZfoKu1Us/vt9Kt1lLcTHR/e/CpaiT
7wqWs2NFe8HyKfeqlXLsfuvoap1pDYTCiiiqBhRRRQIKUUlKKACiiigAooooAUVpxjEaj2FZqDLg
epxWpWdQaFqvU5OFNQVERSBxlSPUVmVqVmHqa1gCEoooqhksH+tFay/dH0rJg/1orWX7o+lY1Nxl
eQEysAM09IT1b8qVP+PhvpUtTzdAaCiioXmwcLj60kriJqry/wCsNKJm9AaY53PkVUVZiuPjj3g9
qTmN/ep4f9WKV0Djn86ObUYKwYZFOFVTuRsdDS+a+OtLk7BcmlfYOPvVWoJJOTRVJWJJYHIYL2NS
zf6s1HBHzuP4Us7cbR+NJ76DIakjk2DGKjoqmrgWkkD9M5qNxtmB7HrT4F2pz1NJcD5QfSs1uA4K
i/jVaRd0cidSOR+FSmMuFbPahvlnHuKa0AzKKMY4orcCxYuVnUZ4bgirtwuCGFUrFC84OOF5Jq7c
HLBRWUviDoTKcqDUU68BvwqVRhQPSkcblIrJPUZXDsOh4qQ5kiz3FRsjL1FPt2wSPWtH3RIxPvD6
1bf7jfSqzLtlx2zVl/uN9KiW4ynU7ExRqAeTTIFy+ewonbdJx24qt9AY1nZupJqeBcJn1qFY2Pb8
6tAYAApSfQSGynEZxTLcYUn1p8ozGaZbn5SPSl0GZ1w5klYk8ZwPpUdSXCGOZlPrkfSo66FtoAde
laajLoh6KAPyqjagG4QHpmr8S7y56ZrObEyRlUnf1IpkA3MzGmspjQ5PXipoRiMVnsgEeUKcYJNR
SPv7Yp9wvAb04qGnFLcGFW4xiNfpVSrMD7lx3FE9hEMrlm9h2pgJByOtSTJtOR0NR01awFtHDjIp
4qiCQcg4qTzXxjNS4dh3LEjhB79hVdELt/WhVMjfzNWVUKMCl8IitKmxvan2x+Yj1FOuPuD61FG+
wk9TinugLlFVfPf2qSKbccMMGp5WhkpAIwelV2hYfd5FWaKE7AV7cES4IwcU+6/1Y+tC/wDHy30o
uv8AVj601uDI5/vD6U6CLPzN07CkkXdKo9qsEhVyeAKG9LIQyVV8s8AYqtUksu/gfd/nUdVFWQmF
FPWNmGQOKXyW9qLoCOilZSpwRSUwClFJSikAUUUUAFPjPOKZQDg5oAfIecUylJyc0lAC0UUUCCii
igYUUU5VLHCigBtOqQQN6ikaNlGSOKV0JjKtLGm0cA1VqaKXA2t07GlJPoCGzR7TkdP5UQfeb6VY
IDLg9DVeEYdgeuDSTuhk1t/qvxqK+6D6f1qW2/1X41FfdB9P60l8QIpUmB6UtFbiGtwMjg+1N3t/
eb86cwyKwtZ8RWOll45H8y5C5WJc8nsCe1aU6cqj5YK7KhFy0Rt72/vN+dc7rniy204+Xbv9qn5B
CScIR/eP9K4/VPFGo6j8istvGcjZDn5gfUnr+lZcVqT/AKzgegr2sJk7k71fu/zZ2U8NbWZJe3t7
q04kvJnmdeATwFHsO1PhgWPk8t61IqhRhQAPalr6SlQjTVkjq8kFFFFbgV7xNybh/DXU+A7sNZzW
jPl43LqD2U46fjn865113IVPcYqXwpcpa63H5rEK4Mf4npWEvdqKXcmavFo9HYb43U9wRWT4Lull
0KC2Lf6RZj7PMhPzKy8ZI7ZxkexrWGa4TSNQbS/iXqlhMg2akUdCOxCkj88t+lazfK0zCC5k0eiq
akBqEGnqasknU08GoFNJdXUNnayXF1KsUEYyzucACkM6PwjCJ9ettwyEzJ+Q4/XFelyJHNG0cyJJ
G3DK4BB+oNeB+Evid4Vtdfh87UvLRsxl3icKM9ycYx717rYXcF9aRXVnMk1tKoeORDlWB7g1zzkp
PQ3hFxWqMqXwP4UnkLy+G9HZz1P2RB/IVsaPo2l6OjLpOnWdkrYDfZ4Vj3Y9cDmrCmpFNZtGiZOG
qRTVdTUimkMnU1IDUANPU1IycGng1CDTwaRRKDXxj8YtduvCn7S9/rVixiltZrWTO3O5TbRhx9Cp
YfjX2WOTx1r4W/aN1Ky1X4uaxPp1wtxEqxRM6crvSNVYA98EY+uaiRUT7tsrqK8tIbm3YPDMgkRh
3UjIqcGvP/gZeyXvwo8NyTEl1tVjySSTt4ya70NTAlBpwNRA04GkMkBp2ajBpQaAJM0oNRg0uaQy
TNLUeaXNAD6M03NGaAH5ozTc0ZoAdmjNNzQDnpQBHd3kFjay3V5KkNtCpkkkc4CqOSTXwt4Btpte
8X2sl/8AvZXd726Zh95s7mJ+rsPzr6Y/aS18aR8N57OOby7zUpUto0wfnTOZOnT5AeT3xXivwc0f
atzrEmdzA20XPG3ILH8wB+FY4ifs6TZdGHPVjE9MNJinUleAe2AUlS2OBwa3PDcpKSwnoPmFZ+lK
stw0D9JVK/Q9RUujh7fVhCwwx3Iw+gz/AEpoT1OjbABJOAOpNZcWqR/Zbu8utsFlbqztKx4VVGWJ
9gBmreqRTzWpjtsBmODk44ryz43eIF0fRYPDunThLi7XN0mPmMBDA89PmII9xmtqVN1JqKMKk1Tg
5M8y8YazN4w8YTzRyyG2aTy7VZAP3cY+nqQW555rWi0SzSJEKsSoAJ3daz/CWnmONruZVzIB5R7g
c5P4/wBK6Ovp6FNQjofPVajlK5QGkWQ/5ZZ/4Ead/Zdl/wA+6/mf8au0VvczuyomnWaHIt4/xGf5
1aVQoAUAAdABilopCuFFFFABRRRQAUUUUAFFFFABXa+CFZNOmYjAeXI/ICuOgieeZIoxl3OBXoem
QJaWscEZJVBjJ6mujDxvK5hXl7tjYiarsTVmRNzVyJq6ZI5EXK8I+PNw0niqytyflhtQwHpuY5/9
Br3ZTkV4Z8e7Yx+JNPuMnE1sVx6bW/8Asq5MV/DZ04b+IjrfAyCPwhpOBjdbo5+pGTW7WD4EkEng
/ScfwwKn5cf0rer8uxP8ad+7/MyqfEwooorAk8kqRJWXjqPerHlr70CNfevbcrnXYapDjK/iDTqX
y196PLX3qbhYgmX+IVNA+5Oeop3lr70eWvvQ3dWAeKM0zy1pREvvUgOopvlL70eUvvQA/NGaZ5S+
9L5S+9ADs0opnlL70eUvvQMkzRmmCJfejyV96Qh+aR2CqSe1J5S+9HlL70AVVBkclvxqxTvKX3o8
pfeqcrisNHQknAFMabH+rH4mpvKX3o8pfelcLFRpHbqT9KbV7y196PLX3qucLFCpIupq35S+9HlL
70nK4Dx0FVyMsSOozirNM8tc96lAUdgHU5PtTw5AwvA9queUvvR5S+9VzhYp729TU0T7uD1qbyl9
6PKX3pOSYrDaKd5S+9HlL70rhYbRTvLX3pREvvRcLDe1IoAAAp/lL70eUvvRcLFaf7w+lRir3lL7
0eUvvTUwsUqXc2MZOKu+UvvQIl96OcLFGir/AJS+9HlL70c4WKtv/FUrAMMGpfKX3o8pfepcru4W
GClpwiX3pfJX3ouKwyin+SvvR5S+9K4WGio5XKkAdam8pfel8pfemmFipvb1NIzFlw3Iq55S+9Hl
L70+ddgsUfLBPynB96tIMSj3Oak8pfenLGoORmk5XGOf7jfSoF6VYIyCPWmeUvvUpiGUx41f7w/G
pvKX3pfKX3p3sFihNCU5XlafaSFH2n7rVc8lfejyl96fPdWYFC5j2SkDoeRUWK1PKX3o8pfempjM
zFXrSXcuxuqj9KlES+9L5K+9KUrgOzRTfJX3o8pfeswHUopnlL70eUvvQBJmimCJfejyV96AH0op
nlL70eUvvQIfmjNMES+9L5K+9ACswVSzHgVnTOZZNx+grQ8pfejyl96qL5QMzFFagiX3o8pfeq9o
BAP9Ht88FzVRVZ2wOp9a0vKX3o8pfepU7AVkgRcbuTUwwOmKf5S+9HlL70nK5NhlOh++1OEK+9OR
Ap4pNjtYSf8A1dMqVlDDBpnlL70kxbkNw+yPAzubp7VXt497ZYfKKv8AlL70vlL71SnZDsCDA96e
KZ5K+9HlL71AD80ZpnlL70vkr70AOzRmm+SvvR5K+9ADqdmo/KX3pfJX3oAfmimeSvvR5K+9FgJM
0ZqPyl96PKX3oAkzRUflL70ohX3oAfRTPJT3o8lfekBIKM0zyV96BCvvQA/NGab5Ke9Hkr70APBp
GAI96b5K+9AhX3oAo3MW1tyjg/zqa2k3JsOdy/yqz5K+9HlL71XPdWEMFPg+6frR5K+9PRQowKlu
4loQXf8A7LWdg+la7IGOTSeUvvVRlYZk4PpRg+lawiX3/OjyV9/zqvaAULXImHvV2n+UvvR5K+9S
5XFYap5FS0zyV96XyU96l6hsEq7o2HtWfWh5Ke9Hkr704ysFjPoxWh5K+9L5K+9V7QLGdijFaPkr
70eSvvRzisjOxSitDyV96PJX3pc4WM+lrQEK+9Hkr7/nR7QdjPxRitHyV96PJX3o9oFilbLumXPb
mtDNM8lfel8lPeolLmBCyH5KiqTyU96PJT3pJ2E1chlOI2I9Kz8H0rW8lPejyV9/zq1OwWMnB9KM
H0rW8pff86PKX3p+0GZ0A/eCtVfuj6UzyV9/zqQDAxUSlzARJ/x8N9KlzTGiVmyc5NHkJ71ICyNh
CRVZRuYD1qx5Ke9Hkr7007CsJ5S46mmmE9iDT/IT3o8lfejmCyHR5CAHtTs0zyV96PJT3pPUBzBW
GDUZh9G/On+SnvR5Ke9CdgIxD6sKkWNFOep96PJT3o8lPei4aDz9aZ5S+p/OjyV96PJX3ouAxov7
p/Oojweas+SnvR5Ke9NSAhjkKH29Knch4mI9KTyU96PJT3pNpgRhm8obfXmkkz8hPXFTCFPejyU9
6OYRnSRO0zhFJ5NSxWRzmQgD0FXPJT3o8lPeqdRjABIUwowKjj+eTcx4HNSeSnvS+SnvUXBiNKo6
cmonct1qfyV96PJX3oTSERpKR97kU8bHOQcNS+SvvR5K+9DaAbL/AKxamf7jfSmCFc96kIyCKQyC
D7rc4NODRx9OTS+SnvR5Ke9O6AieUtkDgUiSFOOoqbyV96PJX3ouhWBZVPt9ai/1UnH3f6VL5K+9
KIU96LoBJEjnQbuR2PcVSks3GdhDD64NXvJT3o8lPehScdgM+BGSYblIxnrVxCwibb61J5Ke9Hkp
703O4EbljGobrnipmYIg/IUnkJ70eSnvU3QFd3LnJoAJOBVnyU96PJT3quYVhiQj+I/lTxEgOQSD
9aPJT3o8lPepuGhJxUTRIenFO8hPejyE96Sdh6ERhPZhTlhH8TflT/IT3o8lPenzMVkPUKowMAUu
aj8lPejyV96kAmBYALjrTFg/vMPwqQQp70eSnvT5rANMK44PNQDIP0qz5Ke9Hkp701KwWJFOVB9a
M1H5Ke9KIU96kBF/4+W+lF1/qx9aekaocjOaV0DjBpp2YmRMrF9yEDjHNNaJyeWB+pqTyE96PIT3
p3sBGIW9V/OpUiVTknJoECe9HkJ70m79QJM0ZqPyE96PIT3paDHsAwwelVZF2NjtU/kJ70ogT3pp
pCKtKKs+Qnv+dL5Ce9PmQrFWirXkJ70eQnvRzILFWirXkJ70eQnvRzoLFWirXkJ70eQnvRzoCtRV
nyU96XyU96OdCsVaKteQnvR5Ce9HOhkEaF2x0HerSgKMDpTPIT3pfIT3qW0wJM0ZqP7OnvR5Ce9L
QYPErcjg1EYW7EVL5Ce9HkJ7007dRWGJG6nhgKVVYOWbHIxxTvIT3o8hPei6AW2/1X41FfdB9Kso
oRcDp15rl/EXjDS9ORlicXl0pKiKJ+AQedzYOKulSnVnamrsqEXJ2RpVi6z4k0/Sn8uV2knxny4x
kjjjJ7VwmseKNT1V2UObeBuPJiPGPc9TWTDaHA3YQegFfQ4XJpS1qv5L/M6oYTrNmtrPijUNTR4c
rDbk52x5DEehOeayY7ZmOZOB9eatpGqD5QBTq+go4OFJWSOqKUVaKGxxrGMKKdRRXWlbRDCiiimA
UUUUAFZ7r5lxthUlmbAA6k1dnfZExzg9q6L4X6cZtYl1GaMNa2qEbmHHmHGMe4H864sZVVOF30Na
NN1JKK6mJf6Zq/hy5tpryF4HJDId4ZSf7pIP6VmeNrhteTTJrYCK8gDCVvu5ztxtP4H8699tbOK/
0x4r+JZ4pScrIMgiuW1P4ZWEzvJp93PbE5IjcB0B7e+PxNeXRzFOPLU0OyrgJRlzU9TM8H6yNR02
KG4kBv4I1WYZ5Y4xu/HH866EGvEtYs7mCeWOJmhv7SVkDIcEMpIIB/Cnt/wneowtCft7Iev3Uz+P
FexCvptc8uVDW97HpHizxlp/h6Mxu3nXzJujhTp7bj2FeK+IvEOoeILvz7+QcKFWOPIRR7DNdHpH
w01e8UPevFYqez/O35D/ABrpLL4UWKg/bdTuZj28qNY/57qiaq1elkaQdKn1uzyGun8D+ONa8F6k
bzR5wwZDG9vOWaJx2yoIyRkkeldlqnwniKM2lalIGA4juEB3H/eGMflXneuaBqehyBdStXhViQr9
VbHoRWMqc4as2jUhPRH2b8NviLo3jmyJsJGiv4VUz2si4ZSR1B6EZz09K7hTX53adfXWm30N5YTy
W91C2+OWM4ZTX1b8Gfi/D4qh/s7xHJbWmsoypG24Kt3uzjavZhjkfQ+wuFS+jM507ao9oBqRTVdT
UgNW0QmTg1IDVcGng0iiwpolnjgheWd1jiQFmdjgADua5/xZ4q0jwnpcl9rd7FbxqpKIzDfKQM7V
HUmvkT4h/EnxH8U9Yg0mwt5ILCaVUttNhfcZH4ALtxuOeewH4ZqJOxcVc9F+I/xU1D4jarD4L+G4
Zra+xHLeNvhdvmBODkFUABzkEkHGPXxLx1oMGl/EC/0DSGkmS3nSzVn5aSQBVY8er7j+NfWXwU+G
9n8ONAl1DUNsut3EPmXUpA/cqBkxJ7ep7kewA5n4GfDKaHxHfeN/EULpc3E8sljazx/Miu24TNnk
Ng4A4I5z7Q02WpJbHtPg3Rl8OeFdJ0dG3CytkhLZzkgcnP1zW2DUINOBqiLkwNODVCDTgaB3Jgac
DUINODUhkuaXNRhqUGgCTNLmo80uaVh3JM0ZpmaM0BckzRmuW8d+NdJ8F6S95qswMpB8m1RlEs59
EBI/yK4n4b/Gq28Y+JV0a40aTTppg7QSC5EyvtGcN8qlWIzwMjjrQFz18sAMk4HvXyT8bvibc+Kd
Zl0vRrxk0C0f93JA7xm6bbhi2CNyAkgAjsTzkV6J+0Z8QX0izHhjR5ymoXUYe8YLkJbsGG3PTc2M
Y/u88ZFfPFzpE1noNrqFwuxbuTbbjPVADkke+Vx9DSbS3E7vYr6lq19e2NnBf3c9zDYI6W4lcuY1
YglRntwOPw6Yr3/wvo66JoVrYrjei7pCDkFzy2PbNeQfDPSBqviiFpoy9taqZnyMruH3Qfx5/Cvd
q8zMKl2qaO/AU95sjq9Z2i3NlcsmfOjwwGeCO9VCK1PDTYvnQ9GQ/oa85bnovYzrFil7Aw/vj+da
+uBbG8h1DkKGAf8Al/LiqmpW32TVE2jEbMHX8+a2dZsF1OzNsZjGuQTgZ9xTSJbKttfeRp13qGoS
bLdN0nP8KgV8v6nfXXi7xZPfXOWNxIMgZASJcAAA5x8o6epPrXpn7QPiIpFa+GbYIY2VLi5YNkja
fkTHbkBs+wriPCdl9nsmuHUiSbpn+72r2cuoWXM+v5Hj46vd8q6G1FGsUSRxjCKAAKfRRXsnlhRR
RQAUUUUAFFFFABRRRQAUUUUAFFFKDggkZHpQB0/hy0EEAncESyDoew7V0ETVk2d3DNGpjkXp0zyK
vLMi/edR9TXfTslZHFO7d2akTVcibiseC8ty20TxE+m8VpRN0rTcyasaUTV5b8frTdpmlXgH+rma
Nj7EZH6ivTImrkPjNZy3ngK5khGfsssc7j1UHBP4Bs/QGubERvBm1B2mjB+Fj58F2gLZZZZgeen7
xiP0Irrcj1rzD4PTBn1OzYcfJOMev3T/AOy/lXpfkJ71+Y5lT9nipp9Xf79R11aoyTI9aKj8lPei
uEyPMtz+tKGf1p4AI4pQBmvZOu7GjzD3o/eetSUVNxkf7z1o/eetSUUXC4zEnrR+89akFFAEf7z1
o/eetSUUCGYk9aX956052CKWboKpm5kYkoMD6ZppNjLX7z1oxJ6023nEvBGGH61MKT0Aj/e+tH73
1qWilcRH+89aP3nrUlFFwI/3nrS4k9afS0XAjxJ60hMmetS0EZoAi3P60u5/Wn7RSHA6CmK7GgyH
oaCzgfepSc0j/dAoBMnHSoNzknBqYdBVVm2SA9s0lqA5pmU4JI/Cjzz6n8qsEBhyMioWgXtTTQXG
+efU/lTklZjwf0pvlL6mnqAowKbsK4u5/Wjc/rS0VIXDc/rRuf1ooosFw3P60Zf1pGbauaVc7Ru6
07BcRpWU8tSeef736VHP98fSoxTUUFyx55/vfpR55/vfpUKgsQB1NT/Zjj7wz9KGorcLieef736U
vnn+8fyqBlKsQetJT5UFy0krNnB6Uu5/Wobfq1SvnadvWoa1FccGf1o3SetIh3DIp1KwXE3SetLu
f1ooosFw3P601pWU4J/SnikZQwwaEkFxnnt6n8qPPPqfyo8kepqRYF703yhcasrMeCfyp6O28Ang
1Jwo44AqvC26TJ9ancZaY4UkelVmmIOCT+VWX+430qhKfmNOKuBKbgjufyoFySQATz7VVJzUtom6
YHHA5q3FJXC5Zkd4wCxpn2hvU/lReNyF9Bmqqsc1MY3QF6N3cZU8USO8a7mJx7UWg/dH3NTkZGD0
qHowuV4pWkzsbp61J+99apSoYJQV4HVTVmC5V8K/DevY1Tj1QXJP3vrR+99akByMikdgilmOAKgC
B5yj7STn2FSEyBSc8Dmqtv8AvbksRx1q+CPUfnVSVgKyzMzAAnJ9qkYyKpLNgCpAig5CgGql7ISw
jHQdfrSXvPQCSOdpGwhJP0FLLK0ZG4nn2qSCIRJjqe5p7oJEKt0NF1cCNGd1DK2RTv3vrVRWe2lI
PI/nV2N1dQVORRJWAb+99aP3vrUlFTcBn731qOWV4sbyefSrAqK7UNC3tzQt9RCb5MAjLAjORioj
ckdSw/CpLI5g+hNTuiyLhxkU9E7MCp9q9z+VKLkscDcT7Cka1RJMu4Efp3p5uIohtjGfpVWXRASK
ZT2I+uKfEzFiGPSobd3kzJIQFHQU+2beS3rzUNASyMVXIqLzm9qkn/1dVqIq4iXzm9qXzm9qiVSe
gzUgjPfAp2QXF85valErk4AGaQIo+8c/SnA4GF4FKyFcN7jsKPMf0FJTWOB70WC47znzjjP0p+6X
+6KbAv8AEfwqak9B3I90voKXdL6Cn0tK4yPdL6CjdL6CpKaXUdSKBDcy/wB0UZl/uil81fel81fe
nZhcbmX+6KXdL/dFPDqehFLSAj3S/wB0Ubpf7oqSilcBmZf7oppldTggZqYVHOmRuHWmgE8yT0FH
mSegpiHjFOptE8wplcHBAzSec3tTsgjDDIpvlg/dYfQ0aDuL5ze35Uec3tTCjDqDSU+VCuSec3tU
sTFlJNVqsW/3T9aUlYYk0hQ8YxjNR/afcflS3XX8Kp0RjcC39p9x+VH2k+o/Kq6RO/3VNSC2fHJU
fjTtEVyX7SfUflTkld/ugH8KasMa/eJY/lUmeMDgegpNLoFxPMf0FBlcDJAxRUE8mflX8aFG7Fcm
SZnOFwTUmZf7opttHsQE/eNT1LtfQoizL/dFLul/uipKKQEe6X+6KN0v90U8kDqQPrUb3ES9XH4c
0bgLul/uijMv90VH9si/2vypVu4j3I+op8r7ASZl/uijdL6CnLIjfdYH8adUgR7pf7oozL/dFSUo
oAizL/dFMFwScAjP0qzVK6QpJvHQ/wA6cbPQTJvMk9BSh5D0AqON965796fTsLmG/aT6j8qPtJ9R
+VOdEk5cHPqKiNs38JDU0ohcf9pPqPyo+0n1H5VXKODgqfyptPkQXLYuCTgEZ+lWhyAazI/vitJf
uj6VE1YZGXfzCqgHFLum/uikT/j4b6VLUgRF5QCSBgVD9rH94fkaffSbYdoPLcfhWbWkI3V2Bpxz
PICUwQKfmX+6Kg08bYiSQMnirRkRerD86hqzsgG5l/uijdL/AHRSG5jHfP0FN+1J6NRZ9hXH7pfQ
Ubpf7oqM3S9lagXa/wB00csuwXJcy/3RRmX+6Kat1Gxwcj3NT1LutwIsy/3RRmX+6KlooGRbpv7o
pd0390VIKWi4iLdL/dFGZf7oqWii4EWZf7opd0v90U17hEYrySPSm/a1/umnZ9guSbpf7oo3S/3R
UYul7q1L9qT0ajlfYLj90v8AdFLum/uimrcxnuR9RUgkRujD86TT7BcjkleNcvgDOKj+1j+8PyNO
vSGtmwQcEHis2rhBSV2BqJJI6hlAIPQ04GX+6KhsJN0ZQ9V/lVsVElZ2Ai8yRWAYAZqZuFJHpUM3
+sWpn+430pAU3uShwWP5Cm/bP9pvyFQXP3x9KhrZQTQF77Z7n8hR9s9z+Qql1qeODu/5UOEUK5OL
ok4G4/gKeJnI6kfgKYAAMDpRUtIVyTzX/vfpR5r/AN79KjopcqC5J5r/AN79KXzX/vfpUYoo5UFy
TzX/AL36Uea/979Kjoo5UFyTzX/vfpS+a/8AeqKnUcqC4/zX/vfpR5r/AN79KZRRyoLknmv/AHv0
o81/736VHRRyoLknmv8A3v0o81/736VHSilyoLj/ADX/AL36Uvmv/e/So6KOVBck81/736UjTuP7
x+gFMoo5UFw+2f7TfkKPtn+0fyFNdA/UVXkjKe49apRiwuWvtnufyFH2z/aP5VSop+zQGpbSmQ5z
kYqeQlUJHWqmn9F+h/nVqb/VtWLVmBW+1H2/Kj7Ufb8qqnrU6W/yBpJFUHmtHGK3FckF2fb8qPtZ
9vyqIm1Qcszn2pGvFQYgj2+5pcqeyGWvMk2FiAo96i+2j1H5VSlleU5c5pgGTgdaaprqFzQF5kgD
kn2qwWlAyQtQWVuU/eP97sPSpnbJ9qzaV7ITYeZJ/s0eZJ/s02iiwuYd5kn+zR5kntTaWiwczHK8
jHgCnZl9Fp6DaKdUtlEWZfRaQtKBkhamopXAg8x/ajzH9qHXafakqkkRzMXzJPajzJPakoFOyDmH
h5D0C1HLctE218A/Sng4OaLqETxcfeHIpK19Sk7kP273H5VMkzyJuTaw9qymUqxDDBHanRyNG25D
g1o6a6DL/wBqPt+VH2o+35VELpJBidMn1WneXFIMxSgezVPKluIf9qPt+VL9qPt+VRm2fGVKsPY1
TvJBa280sh2iNCxJ7YFVGCk7IDz7xxrl9ea3PZ211MLVMRiKJioc4Gc4+9z61zq2Mo/1qMh9COau
eHFku9cSZ/vAtK/1P/667mvusHhoUqailsenf2aUUcEkax/dUA+venV3DRRt96ND9VFRNZWzdYIz
/wABrvTSDnOMorsDptmf+XeP8qadLs/+eC0+YOdHI0Ve1iOKK9McCBVUDOPWqNMoKKKKYwoopGO1
ST0AzQBTvpBnHZeTXs3g3w//AGZ4ZW1lfE1w/wBokI5wSAAPyUV5X4SsP7X8T2Vu8fmRmTzJR/sL
yf6D8a9stj5+ps6DEcSbBXzmZ1uZqC/rsepl9LebNGNFRQqgBRwAKeKBS15J6Z5h8VvDYBOt2iqM
7UnjVMZPPz8dT2JPoKzPBetedGLC5djMgJjdmzvGen4V6hqS/abmG0/gbl/p/nNeHeKbS00rxJc2
+lSOYYHG0tzsYc4B749a9nLcU/gfT8jyMwwy+NdT04GpAa57w1riapbhJSFu0GHH9/3FbwNfQJqS
ujxGmnZlq1hkuZ44YV3SOcAV3lr4W0r7C1vqVnbagHxvFzEsi/gCCBXKeErmK31hGnIUMpRWPQE1
6KrVnPsXDueIeP8A4C2l1FcXvg+U290TuFlM37puuQrdVPpnjtx1rwTxB4f1nwvqH2fWbG4sblCC
pboe+VYcH6g193q1V9V0yx1ixks9Ttorm2kUqySLng9celc0qSex0xqtbnzd8M/jtqOipFp/ioS6
nZbgFui2ZoUC4x0+fnHJOevJr6K8M+N/DfiUAaJrNncykFvI37ZQB1JRsNjnrjFeOeMf2e7K6fz/
AAnfmybndbXRMie21/vDv1z9RXi+v/DrxXod41vd6JeSYziS2iMyMB3yoPH1xUXlHc0tCex9w6pr
WmaPaNdarqFpZ2wODJPMqLn0yTyfavH/AIgftB6Rpcf2fwjGurXToc3DhkiiOODggFucccfWvmq0
8La/eMotdE1OXJC5W1cjPucYFeqeDf2e9e1NrefxDcw6VaFgZIh+8nK+gH3Qe3J464PQrmlLZD5Y
x3Z55JL4r+JXiMLm+1jUZCdiFyyxKSTgZO1E/IV9WfBv4Taf4FtI7y/WC98QOoZ7goCLc4IKxEjI
GCQW4J+nA6vwZ4S0XwdppstAsxbxM252LFnkPqzHk9PpWtquqWekafNe6jcR29tCpd3c44Azx6n2
pqFtWJzvoi/MYzC4n2GLHzb8bce+e1eJeNvjo1nqE9l4Ts7a6ijG0X1wW2Fu+2MYLL2zkVxPxS+K
F14uSXTdOR7TQt3zK/ElyB3f+6v+z+fcV5XcXGfljOB3NDfYSTZ9AeHf2gJ449niPRllcDiawfaG
Pujngf8AAjW+Pj/oW3P9laln0yn+NfLi3EigANx7infapPb8qRXIz6Wuf2hdPCkWmgXzN6yyoFP5
EmsK8/aG1d4ZUtPD1jBIQQkr3TybT2JTYM/TIrwX7TL6j8q9QstFtNP8I6bcXlvH9ukQzzSMvzAH
LbT9AQPwrlxWKjh1G6u27HVhsHPESaTskaenfHjxfZ3QnvodO1G3wS1sIjCW4ONrgnHODyDnpx1r
6g0q+i1LTLS9t2Dw3ESyow6EMM18K6nd/brhnUBYhkIAMYWu7tvjJ4ts9Pt7Kwk0+3tYIhCii2yQ
oGByTXRBtq8lZnLKyk1F3R9clgBkkAe9OVwRkEEe1fEOta/4o8RRPc6rqGpXNsASSWKQ4+gwp6e9
b/wj+IkvgnVZ/wC0ZL660aWEhrWIhyJB90oHYKvVs4IzxQpJ7Bqt0fYO6sLxd4u0Xwlp4utcvY4N
+RFFnMkzAZwijk9vYd68G8TftAardFo/DemRafFnia7IlkI91Hyr+Zrx3VdRvdX1GW/1S6lu72XG
+aU5YgdB7D2HFMXMexRfHnxDe+L7E2thax6TJMsP2I/NJIGbaGMnZuQcAY4Iyc5Ha/EX446Voyi1
8KNb61eMSskyS4hhGCMhgCHbOOBx15r5eC7ztAzu4x610GhaKs0ksl7/AKuI42g8E+59K0pUpVXa
JnOqoK7Kd1d6j4i1Rr3Wr65u7hz+9upcuVHsBwB6AYA9Kd4d1h/DviO21SzUTPaSlowzbQ3UDNbE
riDRr66i2x+cSkYHGFztwP1rka0r0lStHruRTm5tvsdf4S0q48beK7q71W5eX5xdXTuxZpMtwmSc
4wNvXgAAVN8UL2B9St7CzjSO3tlyiRrtVQeAABwBxXc/CfTPsfhIzXUYikvJXYFuGKfdGfyJH1Fd
HqHh3S9Qs/s19ZxzoM4Zh8wz3BHINeFUxKVe71SPZp4duhZbs5z4TaQ2n+GBdTKvnXz+eCByI8AI
CfwLf8CrtSKSCGO3gjhhUJFGoVVHQAdBTiK4as3Um5PqdlOCpwUV0ERGdtqKWb0AzV3QjjVIvcMP
0NT+HU3ahu/uoTU0dv8AZ/EiAD5XLOv4qalLqU30J/EyqNOMxxvhO5ff2/z6VRm1CHw/4cvdb1N3
2KnmsMEk9lA9ySB+NbUyWt+WiciQxMCVB6GvE/2gfFKT3UPhu0Y4tys12QeNxGUT6gEN+I9a3o0v
a1EjCtV9nC55g80/iHxFLc3jSNJdztK4Zy5RSxO0E9gOB7Cu7AwAB0Fcz4Qstu+5bGR8oH4V0NxP
FbpvmcIvTmvp6cOVHz1SXMyWikBBAI6GlrQzCiiigAooooAKKKKACiiigAooooAKKKKACjJ9aKKA
CtHTdYvLCRCkzvEvBidiVI9B6fhWdRTTa1Qmk9GepaHqkOp2wkiOHXAkTuprRv7aPUNMu7OdBJDc
RPE6EZ3AggivLvD1+dP1SGQsREx2SD2NeqQtXXCXPHU46kOSWh83/Du8udK8Tw286mOWUNbzoeqs
OSD9CDXsH23/AGz+VeXfE+BtG+IVzPaKUL7LpCRwSRzj2yD+td1p9yt7YW10gISeJZVB6gMAf618
LnmFUaqn8vuNsTraoupsfbP9s/lRVCivE9mjluccpxT845PSmCnlQy4PINegzrRE1ygPGW+lMa5b
qEwPerCoq9FA/CnUXXYZS+1Sei/lTluj/Ev5VZZFbqoP4VXlte8Z/A004sCWO4RuCdp96mrLKlWw
RgirNtMQQjHg9KJQ6oC3RRRUAVr5vur261YiQRxhfzqrfD94p9RVwHIBHfmqeyApSfubkEcDr+FX
xVG7+adVHoBV4US2QBRRUVxL5acfePSoSuA6SRI/vHB9Kha7H8Kn8TVMkk5Jyanit2fBPC1pypbg
Kbp+wUU5bmQ/wg/QVOkKIOBn3NSjjpUuS7AVxdD+JSKmR1cZU5pxAPUA/WmqiqxKgAmk7AKx7Uyn
N1pACaCWAGTTX5qXGFqJ+lAE46Cqc33vxNXB0FU5vvfiaI7jLFu26MZ61LVaD7n41MH9aUlqK4OM
GmilY5pBQJi0UU2QkKcdaYDqY0ijvn6VD8zepp6Rc5b8qqyW4CoC7bm6dhU1A6UE4BNS9QK0pzIa
aKCckmgVaAntBlyfQVbqraH52HtVqs57jRWuxyp/Cq9WLw/dH41Xq4bCZJAf3n1FWKqIdrA1bpS3
ERHMTZH3T2p6yK3fBp2MjBqF4iD8vIpaPcCeiquWB71YQkqCetDVgHiigUUgHoO9PqNWx1pS/pUs
Yy4bCECo7b7w+tLP9z8aS2+8PrVfZBFt/uN9KzZv9Ya0n+430qBY48bnAz70ouw+hUijaRsKPqfS
ryKtvF/P3NNadEGE5PoOlVnlLtljVayENkk3MSec0ADqKQrk0jHAwKoC3FcKqBdvT0qwkiv908+l
ZVSQuQ4welS4JgXrpA8ROORyKqQRCVWAOGH8q0ao22FunXtyB+dTF6MAEU8ZwhOPY0GGeVh5hwPU
mr1UpJH8wnJGD0oTbDYsxRiKPavXufeqyxv5gwCCD1q4pyoPtQzBFLMcAVKk0Ak0gjQsfw96q2cZ
dzI3QH9aYzNczYHCj9BVqWRbeMBQM9hTtZW6gSswUZYgD3pElRjhXUn0zWcxaQ5cmjbjkHpT5Aua
UkayLhhVJo5bdtyHI9RVm0kMkfzdV4zU1Tdx0ArR3akYf5T69qsKysMqQR7VFJbo5zjafaoTaOpy
jA/oaLRYF0VUu5lK7EOc9aZ9nmbgnj3ap4bZUILHcf0oSUdQH2yGOIA9TyampKGYKpJ6CoerApX7
ZdVz0HNVRycVaFvJM5dvlB55qZLSNTk5P1rVSUVYQ2YiC2CDqRj/ABp1l90fSoL1GEm4nKnp7VPZ
fd/CpfwgTT/6uq1WZ/8AV1X70ogSr8sY9+aKVuAF9BTG6UIljqTcB3pFRmGe1SLD6n8qNEFiMv6U
5Iyxy3SpVRV7fnT6Tl2HYTpS0hIHcUA56VIxaR3CDmlqI/PNg9BQkAYeTqcCnLEoHPNSUUXCwgRf
7ooMan+EU6ii4iMxKenFN+eP3WpqKLhYRWDDIpahjG2Vl7VNSasAopaToOaAQehoGQSRlTlen8qQ
N61ZpjRqfb6VSl3JaIwc0CgxN2waaVdeoNGgrEgJHQ0uSysDzxUatnrUi/eFOwENWLf7p+tQMMEi
p7f7p+tEilsR3XX8Kp1cuuv4VXgXdKoPTNEdhMudAo9BSUHljVa4Y78AkYFJK4iwSB1IFMMqAdc0
wW0hPOB7k1KtqvdiTT91BYheVmOFBGalgt8HdIOewqdI1T7qgU+pc+iHYKWo/MQHBdfzqSoAKguZ
/L+VRlz+lT1Ts03yySNzg4GaqKW7AQW8spBnfHtUwtYQPu59yTU9FDkwIxBEP+Wa/lQbeE9UH4cV
JSildgVZLNDzGSp/OmrLLbuFm+ZDwDVymTIHjYMOMU1LowHKQygqcg04VU09sxFT/Cf51bFS1Z2A
WmuodSp6GlJA6kD6mgEHoc0AUXR4Wz27H1p6zKevFXCARgjIqB7VGJKkr/KrUk9xNCggjIINFQG2
lU/Lz7g03Mqdcj607J7CsWwxHQ1FcjdFu7g0sTb0yetOcZice2anZiKkf3xWkv3R9KzY/vitJfuj
6UVNyuhGn/Hw30pstzHH33N6Cq1994/WqtOME9WNjpZGkcs55pEUuwVRkmhQWIAGSa0bW38oZblz
+lXKSihEItpAAMfrTTDIBkocVoU6sudgZNKK0JoFkHofUVUa3kXPGR7VakmIjopwRicBTn6VPDbE
nMnA9BVOSQDLeEyHJ+4Kv0gAUAAYApawlK4wooqlPeclYun96hJvYC6KWslLmVWzvJ9jQ1zKWzvI
+lV7Nga1FUoL3JxLge4q7UOLW4FK5hKsXXlT19qgrUIyMHpVWa2OSY/yq4z6MTRVop5jcHBU/lTl
gkb+HH1q7oRFUiwyMMhDircMCpyfmb3qeodTsOxQ+zSEdB+dVZEaNirjBrZqC5gEy+jjoaI1NdR2
M1HKOGU4IrRgu43GGOxvfpWa6lGKsMEUlaSipCNaX76VM/3G+lZll94/UVpv9xvpWElZ2GZVz98f
SogCTgdalufvj6U+3THzHqelbJ2QmOijCDJ5apKKUAnpUtkiUU8J604KBSuBFRU2B6UtLmFchFFS
4HpSFRRcCOinFSKbTGFOptOpgFFFFABRRRQAUopQhNOCAVLYDKKlwPSlwPSlcVyGipiAe1N2CncC
OinFD25pvemhleaLb8y/d/lUVXqqTJsf2PSqTBMu6f0X6H+dWpv9W1VdP6L9D/OrU3+rasZfEMzD
1qTUTh0QdFFLbrvnUenNQXUnmTsw6dBWu8hIYkbv9xWb6CpRaTE/cx9TVnTFIjduxOKstIQSAKmU
2nZDuVEsG43OPwqzHBFDggfN6nrQXJ70neobb3JuPZ88CmUUUCCiiigAqSNe5pEXcfapamTGkKKW
kFLUFBRRRQA113D3qGrFRyL3H41UWQ0R0CigVZItORtv0ptFIY+WGOcfMOfUdRVOSykXlCG9ulWQ
cdKeJCPehNrYdzMeGVPvIwHr1qOtkSDvxTZY1eJ8KuSDzirVTuhmXFI0bggkAHkA9axfiXcm20Z4
0OGuHWP8Op/lj8a164f4n3/2jUbS2HSKHzG+rH/61d+Bpe0xMfLX7jahHmmit4KhxBczFfvMEB+g
yf5iulrP0C3NtpNvG33iNx+pOa0K+2grRR1yd2FFFFUIKKKDQBx2puJNQuGXoX/+tVWtnX4VghtE
Xtvycck8VjVotjZaoKKKKYwqC8fbFgfxcVPVG+f5zngKKyqytEEelfB/TXitr7UpVAWYrFGSOy5J
IPuTj/gNehWluturhSTuYtk1gaZbvp3hHTbJ/wDWmJQR9eSP1xXSRjCKD1AAr5DEVPaVHI+ioQ9n
TUR9AoplzJ5NvJIOqjNZGpXuZ7SCK5vZXVBbo3mSHPygcmvnWIyXdw0txzJITJIfVicn9TXrfxBu
HtPAzpvAku5lUjPLLnJ/l+teU2KcM/4V7WVUrpy7/oeTmE/fUewzEtnOk0LsjIcq69Qa7fQfFMN0
qQ37CG44Ac8K5/oa5UgEYIyKzr5Vt9rEHy24z6GvXcXS1jsea4qejPY1Oa29J8Q3ljtRm8+ADGx+
o+h614jpHiC908DyZvNh/wCech3D8PSus03xjZzKFvUe3k9QCyn8uR+NXGtCW5i6co7Htlj4nsJx
+9drd/Rxx+YrdgmSVA8Tq6HoVIIrxm0u4LpA9tNHKvqjZq/b3M1ucwTSRnvsYjNU4J7CU2tz15TU
ivXm1n4o1G3ADukyjtIOfzFa1r4y/wCfm0/GN/6H/GocGWpo7hCB90AfSpA1cjJ420e2gaa8mkto
1GSZE/wzXmfjX4zS3Uc1n4VikgiYbft0y7XPTlEPTjP3hn2rKXu7lx12PUfG/j7SPCMDLdyefqBU
PHZxn52BOMnsB9fSvmnxp4y1bxXeG41m5/cI5aC1TiOEegHc/wC0eevQcDnr29aSeWaeR5rmVtzu
7FmY+pNZ8jtI2WNZOVzeMCSecycDhf51DRRSNUrBRRRQMuaLA1zrOnwou8vcRjb6jcCf0Br3DXcy
XpT+CMAKPwrzT4T20dx4v3Srn7PbSTp/vBkUfoxr0u4zLM8hH3jmvm82qXxEY/yr8/8Ahj6HKadq
Tl3f5FCHT9Mitr3UdSsraWG2iaRvMiVugJPUV4tcz+bcTOo2I7syoOigkkAfTpXsHjwm1+H+oYcq
88kSKB1YGRcj8ga8kh02R0LznyowMknrXbksJVIzqXvrb7l/wThzicYTjFJbX/r7j0dLG61D4faB
bQSpDAyF5CRkucnjFZ1r4RLSos11kMQPkXH867yS0Sy0fTLKMYEEKr+gH86htYnNzH5YUvnIDHAz
715UMfUgpezdk23+J6f9n0Z8sqiu0kt32OB8Z6dZ6JrIs7GNiohRy0jbjuJbP8hWbZaVdXiNIiHY
pwSSAT9M12V3ZRxapqN3eyG6nVyDK44ACjIUdgDkD6VWjJt9AaQn946lifVmr7XAYRyoU5VZX91P
8D43GYhKtONONvet+JTsf7Mt7YhrR13D/WSLu3Ee/wDhU9hOkGhEK6NIAflByck8DH41LfD7NokU
BHzMFTA7nqaTOlXbbRsRx04KEV6ajy6Ky09DhbUldp2v67GXq0RlWw0uH76YaQ9lJ9fzJrLsNLk1
fWU06xBYyyGMEdlHVvy5rS1mS2tQ6W97LJcd1+9gkY5btxXSfBfR5LjWJtWPFvaq0K4PJkYD9Ap/
UV5GY1FSTl1/qyPQwdP2jUej/pnp98gMtnZqudu0nHA2jj+lahqJY4nuDOp3MF2cHgf5zUxr5M+m
GEU2pQpY4UFj6AZpmMnA6nimI3fDMREc8pHBIUH6df6VLrZNvJb3ajLJuQD3KnFaFhB9ms4oiMMo
5+veo47mG6nmgCFvKPJZeM+1XbSxnfW5hajqFv4U8LXeqX7BWRN53fxOeFX6kkD8a+U57i41XVLi
9vXMtzcSNNKxPVic/l2HsK9R/aF8Steavb+H7c/6PZ4nnIP3pSCAPoATx6n2rz7w7aiS9hDLkffb
8On64r2suw9lzPqeTjK3NK3Y6m0jjsbBAxCqq5Yn171zt3cvqN/GDkIXCIvoCcVa1++85/s8TZjU
/MfVqqaNAZ9Rix0Q7z+H/wBfFewl1OBK2rOtUbVCjoBilooqDMKKKKACilAycCpVUAU0riIaKldB
jIqKhoAooopDCiiigAooooAKKKKACiiigBG+6fpXr9tIJI0cdGAIryBvun6V61b4VVUcADArpw/U
5sR0POvj1YK+naTqaIxkjmNs7AcBGUsCfoy4H+9VL4c3DajoAjYgNaN5GcdRjI/TivQ/Gli+qeEd
Vs4YxJNJA3lqf745FeLfDDVJLTxAtg2fKvAw2+jqpbP5KR+VeHn2Hc6blHda/dv+BS/eUGux6f8A
ZH9RRV2ivh+dnFdnnaOHGV6ZxTqZCAIlA9KfXos7xaKa7BFLN0FRxXCu+3BHpQk3qBNRRRSAR41d
cMPxqJLZVbOScdBU4op3aAKKKKQEN6uYge4NOtWDQjnkcGpHXchX1GKz1dohIhHJGPpVpXVgJIsS
XZbtnNXhVayQqhY9+lWRUzeoxajmiEoGSQR3qSipTsIhit0jOfvH3qaiihu4BS0lNmlES5PJ7Cjc
B9FRQzLLxjB9KloasAUkbq4yvalqvG2y6dOzHNNK4Ms1C/FT1HN0FIRIOgqq6F2OO1Wh0FQD7zfW
mgHKAoAFLRRQSFAopV60AGKKkFNZe4pXHYbRRRTJFFMmbCY9aeKrStubjoKaGhlKKSlFWMlt22yj
34q7WdVwSjyN/Ugc/Ws5oEQXLbpOO3FRUE5OaK0SshBVmJtyD16VWqSFsNg9DSkroRYFLSClrMAo
op6L3NJsENAOOlFTVEepoTuNqwlFFFDEIwDDBpsKlXAPrT6F/wBYtF9Bonf7jfSs+Y4atB/uN9Kp
PGztwpIohuHQhU5NG2rCWrd8LUEgKkj0OK0TT2AGbHSmUU5OtMBtWLaMO+M+9RPj8altCRIuKT2A
0Kow/wDH631arpIAJPQVTtMtcO2OuT+ZrKOzAsXEhiTcBnnFQC5QkM0fzeoq2cYOelVpYEkXdFgH
26GiNuoxDeDHyoc+5qMLLctk8L+lJbFFk2yqPqe1T3kjoqhOAe4qtnZADSJbJsTBfv8A/Xqty7bn
JJNIi9zzT6pKxLYU1jxSkE9DimgFSDjNAF6zQrFk/wARzU9QQXKyHaw2t+hqesZXvqNBRRTWdV+8
wH1NSMeKWo1kRjgOpP1qSgQUtJUNxOIhgYLnt6UJXAnorPEc8/LH5ffpTvssqcow/A4q+VdxFqdB
JEwxk4yPrUdl90fSoVnlib96CR78VYtiCSV+6elJppWAkn/1dQxDL57Dmpp/9XTBgKAO/WktgAnJ
zTG60+mqNziqRKJ1GFApwpKa77Rx1NZ7lCu4T6+lMw8nXgUsceTufk1LT22ERCFe5NIyFPmQnjtU
1FF2A1G3LmmN8kobsaSL5ZGWnzFSuCeaOoySioEkYALjn3p4Eh6sB9KVguPZ8cChWzUTKwPLUqKx
PDY/CnZE31JqCcdaj2yDowP1qN3Zhtx9cUWuMfFlnZzT5H2jjqaSNlwAppp+ab6UbsBVj3cuTz2p
TCP4SRUgpaV2FiHc8fB5X1qRWDDil61E6FTuT8qNwJxRTY2DL7+lOqWBVHD1JTZhtk+vNLWhLElH
OfWpbf7p+tMPKEHt0p9v90/Wk9ilsR3XX8KZargM5+gqS4GXA9RS8ABV6DpQnpYTAVXHz3Ixz8wq
ZztUmmWS5kLHsKa0VxIu0UVUuZ2LeXDy3qKzSuMdPchDtj+Z/aoxDLOQ0rbR6VNb26xDJwX9anqr
pbAVvsUfq351GyvaMGU7kPBzV2mzLviZcZ4oUn1AcjB1DDoRmqdsTFcPGwwGORT7ByYiD0U0y8aN
irI2ZB6c00tXEC7RVOO4llG2NV3DqSak8qc/emA9gKnltuBKX9BT1ORVMxSg/wCtP/fNPSGbGRMR
/wABpuK7iLVR3EgjiJPfgVE32iIFi6Oo9eKrSSGZ1aQERj0GaIwGWrFNsGe7HNJczNvEUP3j1I7V
MkkbD5GBAHbtVexUO8kp6549qOrkwFSyUj94zFvahrMjmJyMetXKKnnYFNbmSJts6nHrVxWDDKkE
e1I6LIu1xkVSIezfIy0Zp6S23Av1HON0LgemadG6yKGU5Bp1TswKNseWH41ZU4YVVjOyYjtnFWKu
RDK+3ZMVq+v3R9KryqGw+eV4+tWF+6PpUydyuhVniM0pUEDHPNRtZ7EZnfOOwq0n/Hw30pLv/Un6
ihSew2QWKgSNx2q7VKzP70+4q7RPcQU6m06oAKKKa7qg+ZgPqaAHUCovPi/56L+dSqQRkEEUWaAW
iiikBSv5iP3anqPmqjUtyc3En+8airqirIAooooEFaGnylgY2PTkVn1NaEi5jx64qZK6A1qKKK5x
hRQxCjLEAe9R+fF/z0X86LAS0tRpIj/cYH6GpKGAUUUUgKl8AQmR61GlmJI1ZHwe+akvWyyr6c1J
ZHMRHoa1u1G6ERRQGBxlgc+lXX+430qGb/WLUz/cb6Vm3fVjMyVd0yjtjmphSEfNmlFarYl7i1Ig
4qOpRwKTJEZgvLHFRm4HYGmXB+cD0FRU1FAS+e/oKPPf2/KoqKqyGTCdu4FSLMpODx9arCilyoC6
DnpQVBqorlehqxHMG4PBqXFoQMpFFS00r6UrgmMoowc4p6r607jGqpNSBQKUVHJMF4HJqdWIkJx1
qNplXpz9Kru7P1PHpTapR7gTGc54Ao89/RfyqGlqrIZOLj1X8qesynrxVWilyoReHI4qN/vUsJzG
PbilkHQ1C0YkMpkq70I79qfRVDQ7T+i/Q/zq1N/q2qvaDa+B05qxN/qmrOW5RUQ+RA0pHzHhaoVN
dTGVx2UcAUyBPMlVfU1tHRXYGparstk+mabUr4VMCoqwWupLCgUUCmIWilAJ6CnLGT14ouFhlSKm
evFPCgUtS5DSAcUUUVBQopaQUE4GT0oAWio4JVmTcvripKbVgCiiikIjZO6/lTOnWp6QqD1qlITR
DRTzGexppBHUGncmwlFFFMQVLEeMVFT4jg49aTGjLnASVxnABPJryS4nbWvEBlAJE0o2j0QdP0Fe
jfEG8/s7S5GjYLLcfu1Gefcj8K4jwbZlriS7YfIi7E47nqfy4/Gvpslo3TqPrp/md+GjaLmdaAAA
B0FFFFfSlhRRRQAUUUUAYXijpa/8D/pWDXVa9b+fYlh96I7x9O4rlauOxrHYKKKKooKTQIDfeJtO
hCh99yhZSMgqGBYfkDSSttjY+grpPhJZpc+Ip7hzzbQ7lGO7HGf5/nXDjqnJTbNaEOeaietzQJNL
EWbmM7gPWrNZ1uDJq07luI1CgfX/ACa0a+TPogFRzvFlYpefM4A9alrPO641ZQD8kH86APL/AIv3
pfXLWwQjybaANhT0ZieD7gAfnXKQLsiUfjT/ABDO1/4o1ObzPMEl3IFf1QMQv/joFLX1mBpckEj5
6vPnm5BUdxCs8Lxv0YVJRXbuYnN27m0u9so+UHa4Pp61tLarJOiLIqJJ0ZjwPxqlrlt0uEHs/wDQ
0/TJftNqYCcSR8qf5VzqKUuWSLequaUul3dud0DFwR96M4NPg1DW7YYimvVA7FSw/UGrumhriBpI
pXhw23b1wR1qSG4ufs3mlVdcHnOCK2+rx3i2jO/cqr4l14D/AI+nOPWBP/iagn8R6w6Zl1CZUPcB
UH6AVf8AP8uxZSjo7DIbHDe9ZM8EYZrYkSIy7wew9vwqJUWvtArdjPub8y8zTvMevLFqpS3LPkL8
q/rVeWN4JSjjDClrkatudEEgooooNAoopCcUALSE4ppb0q1bafNPhmHlx4zub/CqUW9iHNI9R+EW
nJb6Fd6qeZrpzEvsqkjH55/SutMftVbwlpi6V4VsLQNuJXzSfdvmP861UjG9eO9fC4ut7TEVJ3vr
+C0R9lhKfs6EI+Rx3xH+0OmmWtvbPIgVpCwUkKeBz+dc7oGiw382b1nkHmrEF+6ASRnj8a6jxTqF
1HqMziKOS1hGAQ+CPX9f5VW8PQMj2gAxJLOspB7HIOPyFfeZZh1hsBFz0tFyfzuz4vMcQ8RjJKGt
5JL8jrNTG+5+gApmmx/6YpPYE1YukzO5pbNNsjMeymvzrmap2XY+86nn2t34lFzEUkiaSdgfMXGV
Lk5B9KdeyRTzWVtC6PHv3NsYHAUcZ/z2qrea/BvmiktGkkViNgIYZz3PauZ1LUYhKW+WLjAghPP4
mv1jnjSgop3SSX3H5oqcqkm2rbv7zotY1WJL+1MGLkRZYiNgQD9awNZ1s3OBO6FAciKDH6t3rEmv
ZZT5cA8pDwETqaltdKkkG6Y+Wvpjk/4VzTxE6jaibwoxglfoSx3DTRliipEPuqB/WvoPwHpSeHPC
EZLbprgC5kP+0wGB+WBXiPhvSV1bX7DS422Rzy7CeuFALMfrgGvpOWG38lLNsKm0KiA4OB0x+VeB
mNR6QuergIXbmQ6LDJ9kHykvIxYKBz/niums9Cd1V7l9gPVAOateHLJY7YTsvzNwmeyitk15sY9z
0JT7FS0s4bRNsKY9SeSaqz6ZHLqMdwQNgGWXHUjpWmaaauxFyrqEkkVpI8KM8mMKFGTmud1vVIPB
/g+71a7BZ0UNszhndiAqjPfJ/nW/He+bqElskeVjHzPnoa8J/aG8TfatVt/D9pMGhtQJbpVOR5h+
6p9wOcf7QrShT9rNIzrVPZwbPKDLPqF9LdXshluJXMsrn+Jicn/9VbNlObS1mkQ4lk+RPb1NZdug
jhy3BPJp8EvnQq/Y5wPTmvqKUOWJ4ctSQ8nJ61t+GEPmTvjjAGa5954kbDSKD6E11fhsD+ztwxhn
JyO9XLYmWxqUUUVBkFFFA60APUYFSCmClFWSx4qJoyDxyKlFLRa4FcgjqCKSrY5pQinqopco7lOi
roij/uilNtG3Yj6UcrFco0VbayODsf8AAiq0kbRnDgg0mmhp3G0UUUhhRRRQBb0m3+06jBERlS2W
+g5r0qNq43wlb8y3LD/YU/z/AKV1kLV20I2jfucdd3lY0om6GvnPxfZ3XhrxxfyBXT/SnurdwMBk
diwC/QMV/CvoaJq82+OGjy3FlZavGQY7XMMqgc4cjDZ9iMfjWONpKdP0Lws7T5XszoYbrMELthhI
gdSpzwRRXC+B9dQ6GIb64jV4JGjQyPyU4YfluI/CivzethJ05uFtjKdJxk1YE+4uOmBTqjt23RL7
cVJW7OkZOhkjIHXqKrwwOJAWGAD61copqTSsAU0t6UhOTQFzSsK4bj60BjTgopdooug1ED+tOFMK
kUA4osFyQnAJPQVnTMHkZgOKsXcvyhFB56mnwQhYiG6sOaqPuq7GLbOHiGOo4NTCqK5t58YJH8xV
tmzwOlKS7BccWApu401QSeKkCetTohasbuPrS7jS7RQV9KNA1FBzUd1EZFG3qKWpFOR70baoEyvb
Qsjbn49BVmiihu4wqrIcXq/gKtVQzuuQR/eH86cEBo1HN90fWpKjm+6PrUiJB0FQD7zfWpx0FQD7
zfWhAPooopkhQKhDkydeM4qYUNWAkU5p1RU4MRU2HcQjBxSU5iD0pjMFGTTQmNlfauB1NV6ViWOT
SVolYYUopKUUwFqwsJ8j/aPIFMt49z5PQVcqJS6IEjOoqa5j2ncOh/nUNUndCClFJQKYFqJty+/e
n1VRirZFWVIYZFZtWEOUZNTVEpAoLk1DVxp2Hs2OnWo6BRTSsJu4UVCHPmdeM4qam1YAoX/WLRQv
+sWpGid/uN9KZF9wU9/uN9KouzRSh17/AK0JX0GX6p3aYbI71PDOsvThvQ1IyhlIbpQvdYGVg5xT
inpV/wCzx+/51IFAXbjj0q3MRmbT3q7awlfmYY9BUwVQchQD9KUuqkAsAT71Mp30QEN5Jtj292qG
1ljiU7s5J9KtSxJJjf26c1H9li9/zpJq1mAsx82LMZyM84ptqrBiTkLUEkb27BlPHr/jVuCUSR7u
hHWm9FoBDexDHmDqOtKpE9oQeXUVJ5yP8pzg8VXtT5dwUPfihXt6DIozkYp9JKuy4YDpmlrQlhQK
YWIOKUN7UrADjHIrQgffCrN6c1QRWlYBRU90wSNYV9OamSvoNCS3DyPsiyAemOppyWhPMjc+1SRq
LeHJHzHrVd3ZzljSX90CY2Yx8rHPuKjIngwckr+YqOp4rhlwH5H609fUVySK5VlO75WAzUNupnnL
ScgcmnXEAK+ZFz6gUq5itMEYZjU6W0AfLcbTiMDjuaYLlwecH8KgoquVCuX/AJJ4+Rkfyptuuwlc
5xVe3fZIPQ8Vaj/1r1nJW0GOn/1dR1JP/q6hLelKImKxxxUkK8bqZHGWOW6VPQ30CwjHapNMiXcd
7fhSS/MwWplGBilsgFooprtgcUgHU12CjmozIRwOTTkTB3Ny1O1twIs5kycjNPDRqOBk+9SMF6sB
xUaKHYnGFp3uAR4Ztztz6VPUflL703ymU5Q0nZjJ+ooqJZcHDjFBkZjhB+NFhXJagYhHyhB9qcIi
TlzmnCJfSjRANZo26jn1xTUJDMV5FG0JJyMqamAA6ChuwCowYcU6o3T+JeGFNEhPXg0rX2C9iaim
ocj3p1ICFgY2DL0PapgQRkdKCNykVHATyp7UPVAE65XPcUxT2qxUEiFTkdKqL6CaDsakt/un61EG
4Oalt/un60MENm/1i/SiknOHBPpVd5S3C9KIq4MWd8nav41bt4/LjAP3j1qK2g2nc/XsKtUpPogR
Bdy+VHxwzdKS0h8tdzcuf0qIDzr055VKu0PRWAKKKjZsHAqQJKimnWM7R8znoKhaV5G8uLGe7HtU
8EKQj5ep6mna24FCIp8yys6jPRameeJExAuGPGcVNcCKNGcopY9Pc1FbWwdC8g69BV3T1YD7NUUZ
DguevNWqrNZxEcbh+NR+TPBkxMGX0/8ArVLtLqBdpRVRLxdv7wEMPQU0STXBIi+VfWlyPqBblClC
JCAp9TiqMcohkKbt8VSpZL1kYk+1PNpFtIAOfXNNOK0Agla2YEqGVscYGKLSUwoSy5jJ5I7Gltwq
SmKZVJ7HFXkUKuFAA9KcmloAI6uoZTkU6qksRhYyQceq+tPim3jIP1HpUcvVBcs0jKGUhhkGhTkA
0tSgKMZNtceWTmNumavVXvow8JbuvIp1o/mQKe44NW9VcCG7QrIHHQ/zp8bb1B796nkQOpVqosrw
v/Xsaad1YlosP92rC/dH0qoJA6+h9Ktr90fSokNbEaf8fDfSmXpxGB6mnp/x8N9KivTyg/GnHcbK
ysVYEdRWkjBlDDoazKtWT4LIe/Iq5q6uItU6m1FdymKHI6ngVklfQBLyYxR/L94/pWazFjliSfek
oreMeUAp8cjxnKMRTKKoDWtZvOjyeGHUVNWXZSCOYlmwpFaKSo/3XU/jXPONnoBSv4dr+Yo4PX2N
VKnu5fNkIH3V4FQVvG9tQCiiigQVc0+LLeY3QcD61TqxZzGKQA/dbg+1TK9tANSobqbyY8jBY9Ke
8qJ951H41n3rrJMChyMVlCN3qMikkeQ5diabRRW4hVJUgqSD6itS0l82IbiN44NZVLUyjzAbdIxC
gk9BUVrJ5sIJ+8ODUd4/AT15NYKOthleRy7lj3qzYdH/AAqpVmxPzsPatZfCSTTf6xamf7jfSoZv
9YtTP9xvpWJRSNAoNArVbEvccvUVJTE+9UlSySm53OTTaD1NFajCiipSi0m7ARiipNgPQ0hQj3ou
AyiiimBLHKy8HkVZRgwyKo04Eqcjg1Mo3EXaRmCjJ6VCJ/l5HzVEzFjk1CiA+SVm4HAqOiirtYYU
UU4Rsfb60wG0tSCIdzTXULjFK4DaKKKYFi1PysPepXHy1Da9Wqc9DWT3J6kVFFFMZLbf6z8Knm/1
bVBbf6z8Knm/1TVm9yjFPU1pWVv5Q3vw54x6CnwW6RHd1b1NPd88DpVynfRC2Edtx9qbRRUkhUkQ
BBJFR1MgwopMaHUopKUVBQUUUUgCiiigBRVK+ucZij+jGnXtx5Y2IfnPX2FZtbU4dWBPazmF/VD1
FaykMoIOQawqs2Vx5TbW+4T+tVUhfVCNWikpa5wCgUUCgBaKKKAYx1G08c1FVg8gisXXdZtNEtfO
vGJJICxJje3PYEjp1rWnCVR8sVdi5W3ZGlWbq+u6fo2w304V26Io3N9cCvN9X8X6pqiy28OIYH/h
iU79voTVDTvDd1MisVjt4ieQRhseoGK9zDZJKWtV/Jf5nVDCW1myz4z1/wDt/UkaBWFrCNkSkfMx
OMk/XArptMtFsbKKBeqjLH1Peq1hotnZSLJGheVR95znn1xWnX0uGw8aEFCOyOhtJKMdgoooroJC
iiigAooPHWsu+1iG3LJEDJIB1GNoNOwJXNQgEYPINc9rWmLCpuLcYTq69h9Paq761eMOGRfotRf2
pe5/4+G/If4U0mi1FopUVm3VxPbzFQQVPIyKSLUWB/eqGHqOKo1sXbw4hI9TivRfg3ZgWGoXpXl5
RCp9lAJ/9CFeYTXK3AGwMAOua9n8AI1v8P7PzB95ZXH0aRiP0Irxs1naFvRfqduAjer6HUQWyQyS
yKWLSHJyanFZULzJaWcduVDOGJ3DsKtrPPFGTPErY7xHP6HFfPnslpmCIzNwqjJrD8UXq2vhTU76
0IjlMLbXxglugrQvrgf2fuVWBlG0BhzzXnnxeuJIdO0Sw42uZJnx1yoUD8PnP5Vvh4e0qqJjiJ+z
pOR53ZKTIWPOBV2obRcQgnuc1NX19KNoo+eYUUUVoA2VFljZHGVYYNc6rNp98e+w4PuK6SszXIN8
KzL1Tg/Ssqsbq66Di+hpw3LWxZlb91KuMf7R6Gta8UxwRW8WPnO3muS0eZZYGtZAe5H0rpLGaW92
+YwWaEckDqfWtqU+ZEyVi4JJo1xPCCo7pz+lU7xbW6iIhKxTqdynG3n0q4DdpywjkUdl4NNkuo2B
WaJxx/EvArV9mSclqkAuIBcxL8w+99BWSp7V1c0DQqsj48mf5cejf4YFcze25trhlx8ucr9K4K0L
am8JDKQnFNLelT21nNcE7FwP7zcCsFFs1c0iAt6VZtbGa5UMgATP3jWvp+mASxrDE9xOe4Hyg/0r
VtLJSZTqUUs0aNt/cfdyPXpmumnh29znnWSMzTNLWWdorOPz5lAJZ/up+Pat+38O3bz24cwzMxCm
I52ZPHI71dRNKvlUBFjYcBfuGtvwzYNHrFu1tcMYI9zNGx3DG0jg9utb11HDYedbflTf3IxoylXr
QpbXaWx2YhWNEjjACIoVQOwFGFjDO33VBY1Z21U1JxDYzs3ZDX5RRTrVI01vJpfefotSSpwc+yv9
x5rraTyPIEnLreTFhG45GW3YB7AVteFRdtq0Md1DGERGbejZGRgAY/Gua16/WDULfyXLSIp+4A2C
a2Ph9f3l9rkouJItkcJOxBzyRgn8q/T82nClgq0U38LX4HwGWwnUxNKTS3ud065Yn1NVdUnWy0XU
LhukcLE/ka0ilYPjkAeE9QQnAlQRE+zHH9a/NcMva1YU11a/M+9ry5Kcp9kzweTUJnUKm2JSeiDB
P41YtdKkkYNcHYh5wD81a1taxWwIiXBPUnk1NX6Yqd9ZHwfN2ILa0htwPLQbh/Eep/GpJm2xMfan
1Wvj+7Uepq5vli7E7nZ/BfTYrzxPNdyH5rGLeg/2nyufyz+deuuwn1tQBkQoc/5+pFcl8FdNFt4Y
k1ByubyVipz0VCU5/ENXe2NrE0xNuMmZuSDmvlcXLnqvy0PdwkeSkvM7u3QJBGqjACinEUoXaoHo
MUGoKGGmvnadvXHFPNZ2p3kkEtvDAAZZG7jPFJjWplXt4PDfhjUtXvgS8MTTuOvQcD86+SZ7ifVN
UuL28bfcXMrzyntuYknHtk4A9K9n/aT19l/s3w/A6lJFN3cr34YCIfmHP4CvGrRNsWT1bmvXy6hp
d9TzMZV5pW7EOqTFIginBfr9KopdSpCIlICjuOtJeyebcuw6DgVDXsnKloBPUmuk0yeeyhiETsuM
ErngnryK5o9K6NfuigUjqNM1VLorHKAk57DofpWnXCV0Oi6mHC29wcOBhW7EDsfepaMZR6o2qB1o
oqSB4pRTAaduFXcRIKcKiDgetIZD2ouKxOKeDVQux702jmCxdMqDq1AuYx6/lVEkAZJAHvTDNEHC
eYm49Bnk0uZj5TXhnRzhTz6GkvVDW5J6ryKz4wTIoHXIrQu2xbNnvxVJ3TJaszNooorMsKAMkAdT
RVvSYjLfxDsp3H8KaV3YTdlc6zTIhb2cUQwCo5+vetKJqoxmrMbV3x00OGWupoxNUHiHS49d0G70
2ZmRZ0A3L1BBDD9QKdC1W4mqpJNWZCdndHyvNFJbzywTYEsLtG4U5AZSQf1Borufib4Ya18USPpy
4huUFwRgthiW3dvUZ/GivDnSlGTVj2Y1FJJjrSTa209Gq7WZyOO4q/BJ5ic9Rwa+SmupxktNenUx
utZoGCjJp9IvSormTYmB1bpT3dgQS3CocD5m7+1Rfanz91cVW70taqCAvwziTjGG9KWV1QjJwTVB
WKsGHUHNTRo08hZs7f8APFS4pagWeDgkZxzUoORTWXHSmg4zUbi2FfBYHHI70zeoYBjjNOAyaZcw
7huQfMO1NW2DcnZgikngCqcly7H5flFRvKzoqn+H9aZVRjbcZKlxIp5O4ehq5DKJRxwe4rOp8b7H
DDtRKKYGiwyKapwRTwcjI6VHWaJZLRRR060iiK5k2R8dTxVW3GZ0+tJNJ5jlu3ap7KPq5HsK0tyx
At1HN90fWpKjm+6PrWYiQdBUA+831qcdBUA+831oQD6a5whNOqGQ72CrzVIkbCMvn0qwKai7VxTh
Q3cBaKKY8gX3NIBzMFGTUB3SE+3amsxY5NOi/wBYKq1gEKMOoNNq4KQgHqAaXMFypT4kLtgVOypj
JAxUay7MhAMU79gLaKFUAdBTqq/aW/uij7S390VHIx3LLAMCD0NUpYzG2O3Y1J9pP90U1pi+AwGK
cU0DIqBVlVQjIAxTgAOgA/Cq5iSuEY9AacC0RGeh7VOKgnOX+lJO4E6kMMilqqjFTxVhHDfX0pNW
AeKKBRSAryDDn86nU5UGkkXcPemRNj5W603qgJaF/wBYtFC/6xagaJ3+430qNUDxbWHFSP8Acb6U
yL7gpDM+RDHIVPbvUwkni5bJX35FTXqZjDAcjr9KW2kBgyxxt4Nac11cRF9sP9wfnS/bD/c/WpVa
F2xtGfdetSBI88ImfoKm67DKZlnlPyAge1ROjJIA/XrV2ScI21RnHWobsbtsq9DxVJiLFyuYs+nN
VkkdejH6VaidZovXsRVWRCjEHp2NTHsxFqN1mUgjnuKqxDy7gxE/KeDUlqDvJ7YqO4/4+xj1FNLV
oZMLc7uWGKhufkug/wBDVt5kVsHOfaoL7BSNhzzSi3fUBL5cOrjuKiq2qCa1UHrjg1TZXjOGU1UH
pYGI/Y1pIqsillBOPSqMUTSuCRhe9aI6VM30AAMdKpSDdfAe4q7VJztvgfcVMAJLw/Mo7YqvVi7H
Kn8Kr1cdhMKKKKoCSGUxn1HcU+5cO4wcgCoBz0qURNjLYUepqWle4iOins0K9Czn8hSq7sMRwr9c
Zp3CxHV6BtzE+oqqUnB5ITPT5gKs2wIJDHLY5qJ6oZJP/q6SNAAD1PWln/1dKn3R9Kz6AOooopAR
H/X1MKjkUnBXqKElH8fBpvURLUUx6AdTTy64zkU2MZO89TQtNQGrGe/51NRSFgOpFDdwI5TkhR3q
VRtUAVArKZiSeO1StJ2X5jQ10Gh9MMijvSBC3Lk/QU8Ko6AUtAIZG3kYBwKWN9mQQadCPmc+9I3E
4qvIkkEinvTqQqp6gUzYV5Qn6Gp0GOkXchHekhbK4PUULIOjfKaYrASk54NO2lgJ8ZGKhaMntzUq
kEcEU6pTsFiOI8EH7w61JUcowQ46j9advXGcim9dQHiok5mbHShpc8JyfWnRJtHPU0tgH0UUUhkU
kYwSOKdb/dP1pX+4fpSW/wB0/WqvoAy4GXA9RUkcSxj5Rz696ZN/rFqak2IUUtIKWpEU7HiWYHrn
/GrlU50aGXzoxkHqKkju42HzHafQ1clfVAWKqTkvJ5cXX+I+lSTzhY/3ZDM3AxTrePy4+eWPJPvQ
tNQCGLYAAMAVNSUySZEByw3Y4FTqwKr/AOkXYXHyJwavdOlUbGRF3b2AYnv3qV52dtluu492PQVc
k72AsMwUZYgD3qFrqJejZ+gpFtgSDM5c+h6Us6rHA5RQDjHAxSSQFKQtM7PtY+mBmrNvdqsarJnI
4yBT7EYt/qTTbMATTKBxVNpprsBOk0bnCuM+lSVG8EbjBQD3HFRbJYDmMmRP7pPSs7J7AF7HlBIv
3l71PA/mRK3c9frUQuInjIZtuRgg9ahsJURGV2AJPGaqzcQLrjIqrLEynzIxyOo9atgg9CD9KWpT
sFhlvIskQK/j7VJVRsW8+8H92/3h6GpnuIk+84/DmhrsA6YgRPnpg1X03PlvnpmmSyvcHy4Qdvc1
bhjEcYUduvvTeisA+kYBhhgCPeloqAKrwBDvU8elWl+6PpTJv9Uaev3R9KG77h0I0/4+G+lQXv8A
rR/u1On/AB8N9Kgvf9aP92rhuDK9S23+uXFRVbs06uR9KuTsiSzVTUidsY7ZNW6r6gpaEEDoeayh
uMzqKKK6ACiiigAp8K75VHvTKsWX+tP+7SbshFiSBHHTafUVTkRo2w1aNNlQSIQfwNZxlYSZm0U5
1KMVYYIoRS7BV6mtBixxtI2FH41digRByNx9TT4kEaBRT6zcriuZsy7ZWAGBmm1PeDEv1FQVotUM
KKKKAClpKWgDQ07/AFT/AO9Tb3/Wj/dqSwUrDk/xHNLdx7l3jqP5Vjf3wKdT2f8ArvwNQVNaf68f
Q1cthFmb/WLUz/cb6VDN/rFqZ/uN9KwKKRoFBoFarYl7jl+8KkqIdalqWSymeppKknGJM+tR1ohh
T5+YgfxplSL80ZFDArAkdDipEmZTycj3qOiqKLKyo/3uDStHjpzVWnxysnuPQ0rdhWJKWnBlkHvS
MpX6UriEoopVUt0oASnrGT14pSVjHJ5qB5S/HQUbgTNIidOTUTTM3Tge1R0U7DJIyWkXJJ5qaX7w
+lMtl5LelKxyxNJ7iEooooAsWo+VjUrfdpIl2oB370SHoKy3ZPUZRRRTGS23+s/Cp5v9W1QW3+s/
Cp5v9W1ZvcrqRZJ60UUUyAooooAVRlgKnpka4GfWn1LKQUopKUVIwooopAFQ3U4hTj756VLI4RCz
dBWPLIZZCzd+3pWkI3YDSSSSTkmkoorpEFFFFAF6wuMEROeD90/0rQrBrVsp/Nj2t99evv71hUh1
QFmgUUCsQFopGYKpZiAB1JOK878U+O2EslrohVkHBucHOehCgj9fyrpw2FqYmXLTRpCnKbsjo/FX
im10OJo0Kz3xHywhvu5HBb2rya4nu9XvTNdSNNMxxuPb2A9Paogk11M0s8kkjuctJIxZm7ck8ngA
fhXUeHdOCgXLrgDhAR196+wy/LYYaN+vf+uh3QpxpLzLuiaXHYQhioNww5bHI9q06KK9W1iG7hVL
VblrSGGVeR5oDD1GDV2qGuQNPp7hBlkIcD1x1/QmmhrcuxSJLGrxsGRuQRTq5fSNSNofLlyYWOc8
nb9BXRwTxToGhkV1PpQ1YGrEtFFFIRheIruRGS3Q7VZdzY789P0rBrsL6whvAPNBDjgMOoFZd3oi
RW8kkUrFkBbDAcgVaaNIyVjDoooqiyC9gE8JH8Q5FYZIXqcfWu+8O+HbvWZlKo0dpnDTED8gO5/S
vVPC3w80+0hwbSN3zuM0yKzk+vt+FeJmWe4bAe7J80uy/r/gnpYPLauIXM/dj3Z4Tpvh7WLy3L2u
m3Lg8gsuwH/vrFe721rDb6Fb2fmCNIYVTIHTArubPQ9OhUCZlZvVuaw/Ei2Ml8lpYxr5cGHlkUY3
N/c9xjBr5eWc18fUUVBJev8Awf0PWp4Kjhk2m239xlWUZC+a2QWACqf4VHb+tF7+9At0bEj9cdl7
mpriVYYi7dug9T6VBZOFYvMQ0jc7scgeg9q2nVhTspPc0hTlNPlWxbd4XnWBwGcDeAR0rxb4om8b
xVM95DJHBgJbM33XUAZI/E817JdWnnSebHK0cmMAqajks4bqyKaxbwXCpn/WIHx7+x+ldeGrKjPm
aucmIourDlTsfPsFwu0K3y4GM1ZHPSu38Q/DuKaKe78NztLIXLC0cqoAJ6KTjGPeuCv7HUNHuPJ1
C2mt3HG2QfKfoRwfwNfRYfHQqLf/ADPEq4edJ+8iaioIrlGHzfKanHPSu6MlLYxChgGBDDIPUUUV
QHN3CPY3p2HBHzKfUVvQTrvjuY8+Www5BwQPX8KravbedBvRcyJ6dSKq6LOpD28hGG+6D39RWEfc
lYp6q51imZLUXAnLAru2sM0lzcTNBteEoHwNwbP6VWsrgzRx2TrjaQuc/eUDg1dunc3caRoH2DeV
Jx7V2XutDMh1B4riCOFW25YA5GNvvWBqFubi3dcbriE4yO//AOvrXTtNCf8Aj4hKN/tJn9aztRih
j23NsV8vpKAenocVFSPMhxdjldMCm7EbwiV2+VVJxz+NdhY2NvuVtTmaLHW3KlR+feuU1a3a3uVl
i3Kr/OGHGGz2/Q12uj65BqFijXsI3J8rtt3jd+XfrWeGUVJxluRXcrXiWmtYbe1eXT7toYVG4ohy
M0qE2egEniSQE/i3/wBaq999hnVUsyFlkcKwUFeO+Qav34E1xaWq4K7t7Af3VrvXVr+rnI+ifrr5
EN/bRrZ2lptXzHYICRyO5P8An1rsPBmn28DXEkMYRmIUkdMfSuK1S/ij1KIkNJ5CFgqAnLHoM9B+
NeieB1ll0S2uJ41jkmBl2g5wpPy8/wC7ivneKMRClgZQW8ml92v6WPa4fozniozeyTf36G7trg/i
xfmy0e3CzNGJZ9jKpwXGxjj88V6Ey8GvGPiu8mp69bWYJSC0jLMc/eZ8Hp7Adfevichpyq4yLitt
f6+dj6nNZqGFlfrocBNfyPhLdfJX+6nU16f8FrB4rXVLmaPbI8qxgnrgLk/+hCuJtrOG3UbUBYfx
Ec16l8LFP9j3WR1umI9/3aV9Xn6cMFJt9V+Z4GUWeKj8/wAjsClcr8RnCeHHjPWSVAPwOf6V2G2u
B+KUuLaxgzgtKz49Qq4/9mr5LJo+0xtNed/u1PosylyYWo/K336HntFT2ltJdTiKIZPU89B61r6h
plva6Y7DJkBHznqeelfplz4duxg1SuQ8tyscSl5GIRFHUseAPxNbGnWb3c4ABES8u3oKb4QtH1rx
lp0caFA1wszBf4FU7vy4ArnxM1GJcFzSsj3LStOGh+C7PT+A8UKq2BjLk7mP4ksa67wha4lgKr8q
R7icdyP/AK9UbyBGWEXKDbKSYw38WK6vw9bNBY7nXaZDuA9u1fKq8pXZ9A7RjZGkabTzTDWhmNNZ
jWztrgndT5KRcN23f5NalZA1ES2WoSy7YoYQ2Hz2weallI+UfiJqR1vx7rN1vLobgxR5OcKny4Ht
waybl/JtnYdhgfyqnprSTeXJMS0rLvcnqWPUn8afq0mESMdzk19RhocsTwpPmlczKKKK6BiHpXRL
90fSuerasZvOt1yfmXg0EyLFFFFMk6HRdT80iC5b5+qux+97VtVwoJBBBwRyDXV6TfLdWw3sBKnD
Z7+9Q0Zyj1RfoqrPf2sHEsyg+g5P5CqNzrsKcW6GX3PyilZk2bNimySJEu6R1VfUnFczdazczDCY
iHfb1/Os+SWSXHmyO+Om5iafKUoHTXOsWsS5jbzW9FrNuNcnkXEKLF6nO4/yrIrRsNKmuWVnUxwn
+I9T9BTskPlSIPMu75hFvkmPXbmt3S9JS1bzZSHl7ccL9Ku2tpDaoFhQA92xyfxq1Em9vbvSvfRE
uXYmtI+d57dKW9kztQdByae8giXA69hVMkkknqab0VjNau4lFFFQUFbHh9OZpCPRQax639GXbZqf
7xJrSn8RFR6GvG1WYzVJDVmM11pnK0X4m6VcjbpWbG1XIWrRGbLpSOTBdFY9MkUUxW4opWFc8Yng
3HcmM9x60WsbISW4zxirFFfmnM7WO0Wmv1p1Iw4qUDETpVe+6p6c1ODg0ksYkTHfsapOzuJGeKWn
PG0Zwwx6U2tRhWlEAI1x6Cs4AnpV0TxqoG7JAxwKiauBYppQVVe7JHyLg+9QmaQkEueKSgwNEADp
SiqUd0w++NwqdLmMj5sqfzqXFgVbgYmf61HUtyQ0pZDkGoa1WwC0uM8CkAycDrVy3gKsGfqOgpN2
AsDhRnsKYOtOY9qEGTWSJerH02Rd8bKDjNOopFFKO2ct83Aq8oAUAdBSUtNybAWo5vuj61JUc33R
9aQiQdBUA+831qcdBVZn2E8Z5oQCsGbI4C/zpyKFGBUZm9FpplY9OKuzJLFMaRV75+lQFi3U5pKO
UCR5S3A4FMpKWqAKUHBBpKKBlwdKDx1pAQFyelQSybuB0rNIQSvuOB0pgoAJIA6mp/s7Beoz6Vd0
hkNSCFym7H4UiJ+9CsMc81eqZStsCRnUVJOuJiB3py27EckD2quZWuIZG+w+1WAcjIqqylWIPUU6
Nyv0pNX1QiyKrPy5+tWARtJHSqtKIBS0lLVDJUlI68ipVkVu+PrVWlFJoRbproG69fWoAzDoacJW
HXBqeV9AJV3A4OCPWnL/AKxai871FPjbc6nGOaTTGiy/3G+lMi+4Ke/3G+lVjcLGAuCTUJX2GS3X
+oeobVd8Dr6mo2aS5bCj5R+lTu3kIqJ16k1drK3UQkduQ4LEYB7VCreTdnJ4zzVq3kLghuoqpcAt
csFHJOKFduzGWZIA7blbGal8tRFsP3e+aqwXHl/JLnA7+lTXOXiBTlc9qlp3sxFdkeBt0ZyvqOfz
qVbtSAHU59qdaBhuJGBT5Y4QCzIPwptq9mAz7XGBwDUAcS3asMgZHWpYlhZsbMH3NTLBGpBC4I96
LqIDJICXJUjB9aZdptt0GehqczIGxn8cUy9GYM+hpJu6uA+2/wCPdPpUtQWZzAPY1PUvdjClFJTJ
pViXnknoKSVxElUrvAlWRCpPse4poE1zyT8ufwqT7IqjLycVokovVgTSfvbfcB2yKp1bSSJEChuB
7GqzAFyE5B6UR00ExtTRwFhlztX3p6okK75evYVEzPcHJIWMHueKd77AOMwX5bdTn160GByDJOxw
BnA61JJEY4sQA7u5HWgShIds5y/93rU37ALaeU2diYI9eaYRMLnJOFz1PTFMR3bIt49o7n/9dO+y
yPzI/P50bPUB12qSMreaowMcmpbbGTtORjrTFtIx94k0+327js+72qW1ayAkn/1dKn3R9KSf/V0q
fdH0qOgDqCQOppHYKMmo1Qv8zmmkIk3D1FKVDdRmmGJSOOKaC0Z55Wi3YYGMGTavAHWkiIUtk9KV
XCqWPLE02Nd7nP1qvUQ/c8hwvApVhH8XJqQDAwKbI21eOp4FTfsBCV/eFRTyjR8oc0GMhQR96nxy
A8Hg02+wDkcOM06oGHlyAgfKanqWhkUZxKw9aB805I7UsoKsHFLAOCx6mq8xElMkfaMDqaeTgEnt
UMQ3MXNJdwARFuXPNNRQXweafJJn5U5J4pRH8n+1Tv3ADEOqnBoEjKcOOPWnxtuXnqOtOIDDBFTf
uBC+HlUZ4I7UoQB9rDOelMP7uXjnFPdlIDA/MKr0ESqAo4GKXcPUfnUIDydThaeIVx3qGl1GSA56
UVAQ0RyDlamUgjIosAj/AHD9KS3+6frSv9w/Skt/un60D6DZv9YtTVDN/rFqakxCimtIi/eYA+5q
G6mMYCJ99untTIrQH5piSx7ZqlFWuxFpZEb7rKfxpjwRucsvPtxUMlmp5jJU1G000Kskg5I4NNL+
VgN8lHWV1BCL933qWCdIrZcnJ54H1pjyLHbiJPmJHJFFjEjguwyQcAVT21AcBPcjk7E7VILONUOc
lsdSasiq9y5ZhDGfmPX2FQpN6LQCpbQ+c+CcAdfWpsSWjZB3Rk80TRNA4ki6DrVhJI7hCvcjkVTf
XoBIjB0DL0NEq742X1FVLZjDO0Lng9PrV2oaswKtgR5TDuDmk0/LGRj3IqCcGGV1U/K4/Sr1tGY4
Qp69TVS0V+4EtVbidi/lw5LdyKluZPKiJB+Y8Co7VBHH5knDNySfSpirK7Aie02xMzP8459qLKKO
VW3jLA+tLNKbhvLhzt7mnyxeSqyxYyg5HrV3drPcBGtXjbdA5+hp0N0dwSYbW9asowdAy9DTZoll
XDDnsfSo5r6SAqJCs9zLk8A9qdawxsGWRfnU8jNQ203kSHIyp4NSzTKlx5kZDbl6VbvsBdG2NccK
v5UeYn99fzqmttLMQ07Ee1StZxFcDIPrmosurAs0VRjd7aURyHKHoavVMlYQyb/VGnr90fSmTf6o
09fuj6Uug+hGn/Hw30qG9X5lbtjFTJ/x8N9KkZQwwwyKadncGUoITIcnhe5q8AAAB0FAGBgcCiiU
riClIBUg9CMUlOqQMy4tmjOUBZT0x1FQEEdQR9a2qo6kp/dt25FbRnd2YFKigDPTmneW+M7Gx9K0
AbU9mcTY9RioSCOoxQh2sCOxoauhGpRQpDAEdDRWBJWvUGA469DRZJ1c/QVNOMwtn0pLb/UrVX90
fQlFLSChiFUk9BzUiKV22Zj7DFQ0rtvdm9TSVslYoKKXacZwcUlAAASeATVm3tnkbLAqo6571Lpq
8O30FXqynNrRDEUBVAHAFLRRWIFG4hKHKjK/yp1kuZC3oKt9etCKq52gD6VbnpYViOb/AFi1M/3G
+lQzf6xamf7jfSpGUjQKDQK1WxL3FqRDkVHSqcGkxCzLuTjqKq1eqpMmxvY9KcX0EMp0Zw31ptFW
MSdcPnsajqyw8yL3FVqENBRRRTGFWI5+z8+9V6Whq4mW9inkHimSTBRtTr61AGIXAJx6UlTYAJJO
T1oFFAqgFpRycCkqa3TJLHoKTdgJf9XGB3qOldtze1JUoQVJAm589hUYGSAOpq5GmxQO/elJ2EPq
Fjls0+Q4GKjqIoELRRRTAltv9Z+FTzf6tqgtv9Z+FTzf6tqze5XUiooopkBT0XPJ6UKnc1LSbGkF
FFFSUFKKSlFIAprusa5cgCori5SHjq/pWbJI0jZc5NXGDerAumRboY2kIpz16mmtbRkcAg+uaZZM
MMvfrVmrfu6IhsoSwtH15HqKirVxngjOahuLI5LQ4x/dqlUWzGtShTkUu2FGTU8NnJIct8q+9XfK
WIAIMD+dOVRLRAytHaqPvncfapFjWE7415A6Z61LTJWCRsTWd2ybslhuI5eAcN6GpHdY1LyMqoOS
zHAFYo4NcX4+8Q3Msn9lwSlYlUi4wB+8zjC+2Oc+ua6MPg5YiooRNqdN1JWRB438VvqzyWFluSxU
lJN2P3xDcEY/h4BHrXN29uBhnHPYUWsG0B269varNfb4PBwoQUYo9KMVBcsSxY2zXVzHGoJUkbiO
w712SKERVUYVRgCszQbTyLXzXBEknUHsO1aldbZnJ3YUUUVJIUHkYNFFAHL6xpzWspkiUmBueOdv
1rNVipypKn1BxXdEZGDyKy7zRreYEw/uX9uR+VWpdy1PuYkWpXkQws7Ef7XNTprd4v3jG/1X/Cnz
aFcL/q3jk/8AHTVV9MvUGTbt+BB/kaNCvdZdGvzfxQRn6EioLvV7i4jaPCRowwQvUj61ReCVPvxO
v1U0w8deKdkFkJWx4Y0ZtZ1ERNuW3T5pXA7Z+6D6msevX/hppSwaRbScF7kCdz7EZUfgMV5Od5h9
QwrnH4nov8z0sswixVdRlstWddo2nwWNqjsioiDCqOAB6Umoa7sRtrrHCvVmICj8aq61fKWaMNth
iG5j7V4X4w8QTeI7mSGJnXTBjy4umcD7zf4H271+f5XlNTMqrnN6dX/XU+rx2Lp4GCbV5PZHpsPj
6zvNeg0qzlmnmlcp5kajYpGe569O2a3bJwFMTnEwYlgepyc5rx34QWC3XxB0uKRsKBIxx7Rsa9+0
7QbO8a5mmEmN+EYPggjv/KvoJ5fSwcuWkt0eRTxs8TFyn0ZzV0fPvghdI1jOAW9T1Nes6Bomiy6V
5MMEcnmDLux3Fjgd+30FcLc+EJfNlkjuRNGxyUZQGPtnp/KrHhrU5NG1H7PMxWBj0x0PTP6V5WOi
6b9rJc0eq8vLzOqLdWn7ODs1r6kes6XLomofZ3LPC/Mb4x+H1quo45r1Dxpo8Oq+HJJ4xmeCMzRs
OpIGcfjXlls++JTnJ7110qc8PL2M3dWun3Rmqirw9p1WjK1xpyOS8BMUvXI6UmoW1vPpbQ6vEl3E
fvKUyPr/APXrQFOAyMHpXSnZ3Rm9dGeU638NI590/hq6XYQT9mnckg+it1x/vZ+tee3lte6VcmC9
t5reTJAWVCobHBK56j3FfRc2moXD2zGCQHOR0pmu21ld2CwarardwMRuDDoR39vwrvo4+cPj1/M4
quBhLWGh88xXKtgN8p/SpwcjIru9d+Gkd00tz4avEC4yLSbPX0DdvxH44rz/AFLTtT0ScQ6lay2s
h6LJgg/RgSD+Br2aGOhU6/5nm1cPOn8SJa52+hNleAxDC/eQ+ntW1HdKfvgr71HqduLm1JTl0+Zc
d/auqVqivExWjJrS5GILwAsUGWVe+eorZhMtxI1xA6BTwNw6iuQ0W48qYwsOJDx7Gui0wymQ2ts0
nnk5RQMqVJ/TFa0p3WopKxqefMmBLAzEnA8v5s/hWzY6PZzWcs93GPtGBsgYFSMkDJH49K1NO0iX
SJIZb5IruRmCoFONrfy/GtO9vFkvLUXULwKjF2Lrnp0xjqM1pOV1Ywc+xyGraOJYJ9MvkXeoDRMO
Mr1U59iMH6VyHh1bfTtet0vY2EBmVJhuIxg8H8D+ma9Q8RIL+5jubErK1vEWODyVzyPyrgvFdirh
NQtxlHwJCPpwf6VyVU4vmj0LpyuuV9Tstbt9Ej1GJXtjcqqHKQuWJJ98/wA6wL57Oyd5XEdtFjas
ETFnI9CTz/Subi1q6hso7e22xFerqAWb0qWx0G9vW8ybMKNzvk5J/DrRKvKb0BU1FWb0FvtbllX7
Np0Yt4X+QKANzE8fzr3Tw5Ziy0i2tkzshiSIZ/2VxXnfhrRLO11C22xCSQNku/J/+tXqtqmIE9xm
vjOKa0k4Un6/19x9Rw/TXLOovQZcHZEx/AV4j4unFz4kvnXGA4QEf7IA/pXtGsNss3OcYBOfoDXz
+HaQB3OXb5ifc1pwjRvKpW7K33/8MVn9W0YU+9393/DhXr/w/tRB4ftCBzKnnH/gX+RXn2h2MUlq
Zp4ldi3y7vT6V6/o8QjtVAHCqFH5V28V1uXDxh3f5f8ADnLkEVKtOXZfn/wxa215j8VCDd6Z/uzf
zjr1FhhSfQV4/wDEeYya+keeI4VGPckn/CvB4Zi545S7J/lb9T1c6lbCSXdr87/oZ3hlM3Mz/wB1
Mfmf/rVe1uOS5+z20I5dizHsAPX8/wBKg8MJ+6nf1YCtoKAxbHJ4Jr9Fb1PiW9TL1FE03QbhYeDs
27u5J4z+tb37OWkPqHijUrgr/o9tbKrsR3dwQAfXCGuT8Z3G22gtx/G24/Qf/rr3f9nfTorD4bRX
jReXPezyzTOf41DFUP02Ba83Hz91o7MFG80zf1aD7d4iSBCB5fyp6KNvP9a6uNBGiovRQFH4VnWE
NvcanNeQRjYAAH5+ZjyTg/WtQ14kV1PYk+g00004001Qho615V8T72TSvhzq0Dho5ZV2H1+dgg/9
Cz+FeoXUy21vLNJwkalj+FeEfGHUpr/wV58ww095GpA6YG5h/wCgiimk6kV5iqNqnJ+R41Yjlz6D
FU9TfdckdlGKvWI+Rj6nFZNwd1xKeuWP86+ppaQR4i3GUUUVoUFOjdo23IxB9qbRQBaW/nHUqfqK
U6hOf7g/CqlFArIsNe3BH38fQAUyO4kSUOWZsdQT1qKigdjoI3Dxqy9CM06s3SpsExN35WtNQWYK
oJJ4AHemZtWEqa2tpbmTZChY9z2H1NalhojsVe7+Rf7g6n8e1bsEMcEYSFAiDsKlyIcrbGfp2kRW
+HmxJKDkegrUooqdzNu45FLHipi6xrtXrUJfjC8Cm0XsIUksST1pKKKQwooooAK6DTDizi+n9a5+
tzTWBtEA7cVpT3M6mxpoasRtVNDVhDXSmYMuxmrUTVQjarUbVpFmbRoK3FFQo3y0VZB5XRVTzZwO
U/8AHTSrdf3l/KvzPlZ2luio0mR+jc+hp5IAySAPeosA1hikLFVO0ZPaoZbntGM+5qVNxUFhg+lV
a24ivHG8z7nztzz/APWq4EUAAKPypqtj6VIDmiTbGRzELC/QZGKpwx+Y+0HFT3rcKvfrVVWKHKnB
q4rQB0qGNyrYzTK1FwVB68U14Y2YEqM/zpKfcDNFWTb7YS5bnGcVcAAGAABVO7c+Ztz8uOlHNd6A
PsSMup781a2r/dH5Vn27bZlJOB0rRqJ7gVri33HdH19KLaRypDDgdDU7N6U3rRfSzE2HWpQMCqjT
PHJ8yYFWI5FkGVP4UmmCQ+ikZlUfMQPrUD3SgkKCfehJsZYpapi4lY/KoP0GaDPMv3kwPcU+RiLt
RzfdH1psM6yHHRvT1p033R9am1gJB0FU5uv41cHQVTm6/jTjuBHSikALHABJqdbdiOSBWjaQiGip
jbsOhBqNkZeqkUk0wG0tJS0xBTkQucLT4oS3J4H86tKoVcDpUylYZUmyrbM8Co6luf8AW/hUVC2A
VTtYEdq0FIZQR0NVI4GYZPFTRxvH0YEehqZWYDpVyA46qc1KORmmhgB83y/WmeZjKjG7OB9KnVjC
NcuznvwKlPA5pu4Y+X5u3HNMkR5BjIUelG+4FWVg0jEdKaKma3YDIO72qIVqmraEj4slgueG4okj
MZwfwNLB/rVq4wDDBGRUt2YWM+lqWWAryuSKiqk7gFKKSnKjN91SaACiphbsepAoNuwHBBpcyAhq
a3+8v1qJgVOCCDUtv95frSlsCLb/AHG+lQxxITvYZPvUz/cb6VWjkYSheqms1foMlklSI7cc+gFK
Qk6A/rTJoC77lOM9c05QtvH8zf8A16NLabiFIWCIkfr3qtaqZJy7dufxpHZ7mQBRhR+lPncQxCJM
EnrVWtp1GSPHHPkg/MOMiq5SaA5Gce3Sogp6g4NTLcypw3zD3p2a2ESR3n/PRfxFSNNFKpUtj61E
ZoZP9ZHj3FKIIZP9W5z9alpegD4YlDBt6nHTFWap/Yznhx+VIbRuzik7PqA8277u2PWprgZt3Htm
qv2aZfusPwNIRchSDvIIx609+oWJrA/u2HoatVTsQUZwwKkgYyMVcqZbjCqTgzXW1umccelXap2/
/H22feiPViZakYRR8D2Aqm7FzljmpLo5kx6CoauK0uIKtRqsKF360y2QffboOlMdjcS4ztjXv2pP
XQAX98++VtqVNcQ+YieWQAtEsKyRrsYKq9+1QlmkCwxn5RwT60t9UMUzMVWKHJ4xu71LDagYaU5b
07VLDEsS4Xk9zUclz5cpUjIHpSvfSIE7EIhOMADPFRRXKOAGO1veo57hJICFPJ4wapU4wutRFy9m
I/dqfrUll938Kz60LP7v4USVo2Amn/1dKn3R9KSf/V0qfdH0rLoBHJ88oXsKmqKPmVjUtN9gCmyn
92fenUx+WUe9C3AFiAIJ59qQnbP9amqKYdGHUUJ3eoiWo/vS+y05WBXNRRuqqc9c0JAT014w3PQ0
0SqfWpAwPQg0tUMgdXC4PIp0cgCgN1FTHpVYcblAyT0NNaieg928xgoPFLG+3Kt0FAiUKNx5oaMY
ynNPTYQSyBhhaQI7AD7opAcuvAGKsUN2GhqIE6U6kLKOpApvmr71GrAPuy+zVLUEjqyjB5BqSRtq
k02gGR/NIzdulO8oZJz+FEAwmfWpKG9dAGw/6se1PqOLgsvvUlS9wEIBGDUcJwSpqWojxP8AWqW1
gHv9w/Skt/un60r/AHD9KS3+6frSH0Gzf6xamqGb/WLT522Qu3cCjcRWtgZbp5G5C9KvVU04YhJ9
TVunPcQVVuR5s8cXb7xq1VYHdfZHZMUo9wHQWyxZydxPciorH5HlQ9QauVSm/cXayfwt1ppuV0Bc
6c1BaAuWmbqxwPpTrp9tuxB6jA/Go47iKKNUBJwOwoSdtALdVZrUElojtb07U9LqJv4sfWplZWGV
II9jS1iBmzCZSpkHK9Gq2l5GR82VP0p9zjyH3Y6cfWqKBplWNEGR1bFWrSWoCvuuHZsgYHAJqxBd
p5QEhO4e1H2SIdS2frUc0Hksrou9O4PNF4y0Abcy+fIoRTgdvWpBbyynMzbV9BRZ7Wnd+B6LV2lK
XLogGxxrGoVRT8ZGD0qJ54l6uv0HNMF5F/tflUWb1AS1/dySQnsdw+lTyttidh2BNVjKjXcTowII
2/Slvn+URryzHkVVrtAJZQh4H3jIY/ypstqIomcMWYHPpxVyFNkSr6ClkAaNgehBFLndwBG3oreo
zTqgsjm2XPbip6lqzsBDdx+ZCfVeRSWT77dcnJHBqcjIIPQ1SsAVklTsKe8WBam/1Rp6/dH0pk3+
qNPX7o+lT0DoRp/x8N9KlqJP+PhvpUtDBhRRVC8uCSY04A4J9acY8zEWJbqOMkDLMOwqIX3IzHx/
vVRpa1VNAaq3EbRlw3A61VkuhIwUoPLz361UooVNIDTAA6AD6U4VVtZsjYx5HT3q0KzasSBAPUA1
BJbK3K/Kf0qeihNoRWgcxt5cnHoas0yaMSLg9exqsk7xHa/IHFVbm1Q9yxOcQt9KLf8A1KVFOWmj
Xy0cg98UQF4o28xHCjpxRbQLFoVVuJDIwij59aZLcNJ8qDAP51ZgiES+rHqaLcurDYjitVABfk+n
apwqjoAKdRUttiCmlVPUA06qt1NwUX8TQlcAguRE5UKPLJ7dautPGsYctwelZFLVummUXTfc8R8e
5qWK7jfhsqfes2ij2cQNugVn2dwVIjflTwD6VoCsZR5RkU3+sWpn+430qGb/AFi1M/3G+lICkaBQ
aBWq2Je4tFFFAiRDmiVN6Y79qYDg5qUHIzUvQRRIwcHrRU9xH/GPxqCtE7jHxtg+1MuE2tuHQ0oq
RcOpVqNtQKtFK6lGINJVFBS0lLQDCiiigQUCigdaAHopZgBVhyFUKKSNRGmT1NMJycmpeogpaSpI
k3t7d6AJLdP4j+FTk4FFMds8Cst2IaTk5pKKKpDFooopCJbb/WfhU83+raoLb/WfhU83+qas3uV1
I1Ut0qVVC0L0FOpNiSCiiikMKKKQkAZJAHqaAFqrdXXl5SPBfufSmXV3jKQnPqwqhWsKfViFJJOS
cmikpa1AdG5Rww7VpRneoK9DWXVywm2t5bdGPHsaia0uhWuWJH8kAkAk9BVeSd5OpwPQUXUm+U46
LxUVTFdWA5HZDlSRVmO4MhCuACehFVKUEggjqOabimBfKkdRVG7l3PsXoOvuatT3IW3BX7zjA9qz
e9FOPVgkVdUvY9PsJrmY4VF4HcnsB+NeTxGS5uWlmYu5O52Pc11fxB1LMkWnIOFxK59+cCubtE2x
ZI5avq8nw3LHnfX8j0MPDlhzdyarmk2v2u8Vc4Vfnb6A1TrqdCtfIsw7piWTk5647V77djWTsjSo
oorMyCio5p4oBmaREH+0cVm3GuW6HEKtJ79BTsNJs1qK5p9XvbhiluoUnoEXc1W7LTrqR1lvriXj
nZvJNFh8ttzaooopEhRUU88Vum6aRUHuev0rFvNdY5W0Tb/tMP5CmlcaTZuSypEhaVwi+pNY95rF
sARBCJX9WXAFYUsskzlpXZ2PcnNMqlEtQLslzLfzxwtsRZHVMIoHUgV7xoaLb2r7FCrGgVQOgAFe
A2ZKXdvJtJEcqOcD0YH+lfRPhq1+3iWIsVUrkkV8TxnPkp03L4df0PpuH3CCqSfl+p5t8R76WDw2
RFw13cCBmB5C4Zj+e3H415i6iG3bHXHWvVvi1pb2WmxQ58xbe7Vy2MYUq4B/NhXk982FVfXmvU4d
dP6h7SHVs5s9qOeLfayt6HofwA0o3fii/v2yI7O1MYP+3IcAj6KrfmK92RPsMFvbRkszvtBI98n9
K8t+D+nSWvg6LOVfU7sz++wAIv4HbmvTbeTz9alTrHbRhVP+0cZ/wrlxc+aq/LQeFhy0l56msvSs
TxVZRy2DXAX96mBkdxmtsdKzvEknlaNMcdcL+ZrjrpeylfsdlBtVI27nX+EtSS98Pp5xwdhzn09K
8smgW21K9gT7iSYArt/CINvogV+CE5riruRZtWv5EOVaTIryMPiJVJ0Kb+zGX3dPwRsqfI6ttnb8
xBThTRThXsmA4U7AIwRke9NFPFMCodPh89ZkLRsCCQpwDUerm3dFhv7Rbi1cHdvUMB+BrQpQAeDy
KFpsG+55hrXwysL5XuPDt40EhOfs8p3Rj2B+8v45H0rznXNE1Pw5OsepwmHecI4O5HPoD3NfR0Vl
BFcedGpVsYwDx+VQ39wFLw3doJrRxtO5QykHqCDx+FdtLHVKfxanHVwUJ/Doz5XntTJMZFfaWOT7
fSvQNCMT6dbT2gAniYM+erEfe/A13Or/AA40LV45JtIf7DO3IEfMan3Tt9BivPNc8DeIdCuC0VtL
dwA/LcWYLfmo+YdPce9enQxsJPc86thKkVqj0m1u4dU1GKSB98EcW9f94/4UwXX/ABMrqV4JJYk/
dZUZ2468fWvNfDni670WR45rdJ0J+YNlXX/Ppiun0PxnZkP5jxRPIxdhMdnJ/wBo/L+eK9ONaMup
50qUkdMW0q9Yj5Uk6dNhrmdU0xbOeWybLWVwpMTE84P3lz7HkV0qanY3kSm4h/dt91iu5T7giszW
tPtrhYF0xw9wX3IA+4KQM1ckmiY6M8vYSaNq/Kh/KbjcPvLXeQypNCksZyjgMD7VheJLM3tgtykb
LcQZDJjnHcH6VW8IahgmxkI5y0ZJ/Mf1/OuWPuS5Td+8rnoHhmAzX5I/hGPxPA/rXoVwqJM6xjCK
do/CuQ+H0W7U1ZhuVpEXBHpk/wBa9YFvADkQxA/7gr8+4lqOpjZR7WX4f5n12UNUcLF23u/xt+SP
J/iBeiz0S6OcM6eUhH95q8ar1r45SKyQqMDbcouB7Rv/AIivJa+p4YpKGC5urZ5edVXPEJPol/md
lpcWLC3QdSg/X/8AXXqmjQvLCEjUs2en4CvONDizLZRnsFB/AV7d4ch8nR4iB80mX/OvK4tq3dOn
6v8Ar7joyH3IVKndpf195nXloljYSPPh7h0IVR0XjrXz940l83xNe/7BCfkBX0XrlusWnXNzOfMm
YBR2AyQOBXzd4qYN4k1EqQQZeo+grHhGP7+b8v1RvnU74eOvX9GaXhwAaeT3LmtSs/QwI9LiLEDO
W5PvU0moWcZxJd26n0Mgz/OvuW9T5N6s5TxNIbzW1t0baFKxA9QCxGT+o/KvrpbKLw74StNLtuUg
iS2QgdcDk/oa+VPh/p6+IvibotrLnyp77z3x/djDSkfQ7Nv419h3Qtp5kgnZTID5ipnByO9eLjpc
zsetgo2TYzTbf7LYQxdwMn6nk/zqc09qaa4TtGmmmnU00hnPeM5yukyW8QJllHQeleI/F6X7P4R0
yzdcPLcbz7bVb/4qvV/FV+VnmlAVvLIjUZ68/wD668W+N1z5lzo0XrE8pHoSRTwy5qyJxL5aDOAt
flti31NYh5raPy2JP+waxa+qgrRR4qCiiiqKCiiigAooooAKKVEZ22opY+grSttPVcNN8x/u9qBN
2GaJaSXN/CF+VS20sa9CsbCCzX92Nz93brXPaHCZNQiKqdiHcSBwOOK6ypkY1JXYUUUVJmFFOC+t
IRg07AJRRRSAKKKKACiiigArR0mXBeMn3FZ1Ojcxurr1BzVRdncTV0dMhqdDWfaXCzoCp+buPSrq
GulM52rFuM1ZjNUkNWYzWiZm0XVbiioVPFFXcg83pjoh5cD61W33B7MPwxS+TK+N7ce5zX5ry26n
WRyqin922f6U1ndlAYkjtmriWyL1+Y+/SpGjRlwVGO3tT50BFbJGFypDN61PVOSF4jujJx7danUs
VG/GfapavqA44zxTo+9NAJqQDApMSKFyf37ZqKrV6oBVu54qrWsdhmhaEmEZ9ePpU1NQBUUDoBS5
HrWL1YC1mMSWJbrnmtOqF0AJjjuM1cAIq0lJMSk9cCqEKh5VB6Z5rSomwIqkAGOKay46UgOKjcnY
c6qy/OBj3qg2Ek/dMT71NIJZJNvb26VPFAkfOMt6mqT5dyilku37xj9euKtwxxFflwx9TUjxI/Ve
fUVA1swOY2/OjmTAtdOlL2qkftCf3j+tLm4fj5h+GKXL5iGygJcDyz37dqtzdB9aigt9jbnOW7VL
N90fWiTAkHQVTm6/jVwdBVObr+NKO4EtoBtY96sVQjdozlasLcKRyCKcou9wJ6KhNwvYE1E07npg
VKiwJZY48ZJCn1ohjjJzu3H6YqsSSckkn3pQSDkHBq+V23EX6Kginzw/X1qesmmhlW6/1g+lRDg1
Lcn97+FQ1qthF9JFccEZ9KUso6kVn1bhhAUMwyTUOKQEpORgDIPr0qqYjvPPyg4Jx0q2TtUk9qAv
y4IHPX60k7AIuVABUY9RSh1PRhQjBhx24NMliDgkDDetLrqMezqo5IqkzbmY4xk00ggkHqKBWqjY
lsmtv9ctXKpQf61au1E9xoKhuI48ZztP86SWcDhOT61XJLHJJJ96Ixe4NlmGKMjqHNT9KzwSDkEg
1Kk7jg4P1olFsLlyioBcL3BFBuF7Amp5WAt0BsB75qO3+8v1qOSRnPPT0qS3+8v1q7WiCLb/AHG+
lRxBQNxAz61I/wBxvpVF98j+Wp49KiKuBNLdKvEfzH17VCkUs7bnJA9TViK2RBlhub36VJM4jjLe
nQU7paRAjdkto8KPmP8AnNUxlm3McmjJkbc5zTqtKwmFFFB6UxBtHpSFccqeaFb1pSQKALdpMZAV
b7w7+tWKpWAO9m7YxV2sZqzKCgUUCpAWiiikgCqX3L3njLVdqpfJ91wPY1cd7CFuhiTPqKiUbmAH
eppSJIEcckcGi2GNznooq07IQXT7EEKdxTvs/wDo+wH5icnNRwKZpXlPUdPrSoZogzSkkdME5yaW
2iGNcsiCBTliece/arESpboAzAM3U+tR2cecyvyT0zSah/yz/H+lJ6vlAsiRTwGBP1rMJLEk9TSU
qgsQAMk1cY8ohKKux2Yx+8Jz7USWYx+7Jz6GlzoCvbx+ZKB2HJq/H/rGqtYqVlcMMECrMf8ArXqJ
u7AdP/q6VPuj6Uk/+rpU+6PpWfQBkPV/rUtRRcSOKlpvcBHOFqH+IVORkYNRMuHX0NOLEyVDlRSn
GDnpQBgVHMxC4Hep3YEJJAIBO3NSxKhUZwTTwgCYxUccYZc5Oc1d7gSFEHUAVE4VTlG5p4iHck1I
sajoPzqb2GQMWI+YnBp0eBL8pyMVMQCORkVXXILMvQU07iZK3U5pY/vUgZGXLHBoZ1Vfk5JoFYY4
Bd9xx6UgZ9vBOKUAiRd/OasUN2GiCMIeWbn0NShFPQCho1PbH0pvlDsTSvcAkVAvGAajU5KhicU+
SMKuRnOafIgKYHUUJiJKa5wtJE25OeopxGRg1OwyAfeNWFOVBNRIgLN6CphxRISQVC/+uX8KmqI8
zinEbHv9w/Skt/un60r/AHD9KS3+6frSH0Gzf6xaLv8A49n/AA/nRN/rFp867oXHtQt0IjsP+Pcf
U1Zqpp5zCR6GrdEt2IjkPSq0ZxcyY9BVtl3VWRcXjA91zTi9ALdQXYUwNu7dPrU9Urk+dcpECcDr
SitQKpZm2hySB0z6VopDAw+VVIpl5Got8gD5cflSC0RlBVmGRVuSa7APkitwMMFX8apsRHJ+4dj+
FWxZx9yxqZIo0+6gB9e9JSSAzyWeULcMyj6VPp/WXHTjH61NdKphcsASBwapRGSBRIPuNwRVX5og
XKfk+U+PSozNBwd/WmTTbiIoCPm6mos2KxVXaE3biHB4ApzySlQHZgpqW0jXznWQAsvSrzKGGGAI
9DVSnZjKcEdvgZcMT68VZEEOM7FxTHtImOcEfSm/Yl/vtj0qW0+oEN2sSFTEQGB5ANLaYectKcv2
z3NOaBEuIlXJzyc069TYVlQcg81V9LAXaimPbtT423xq3qM0OoKnNZLRgyrZnEK/WrlVrFR5Cn3N
Wac9wQVVtsfa58VaqnZHdPM3Y/40LZgWZv8AVGnr90fSmTf6o09fuj6VPQOhGn/Hw30qWok/4+G+
lS0MGI5wjEdhWN1rZc4RiewrGrWl1EFLSUtaAFFFFAAODkVahucYEnPvVWgAk4HJpNJ7gzUV1YfK
QaWqSW0hwc7amED95nrJpdySfp1qAxLcS/K4wB81Mkt5D/Hu+pp9jGySuWGBjH1p7K6Y0XUUIAqj
AFK6h1KsMg0ClrEZn+UtvOu5wQRkcVZBDDIIIqvqCM06bRnK4qNLaQH7wX6Gtt1dsll2mNIqfeYC
oTBJj/Wt+JqF7eRRnGfpQku4D5rktwnA9ar0UVolYYUtJS0AFFFFABWxAS0SE9SBWOOD0zWzC26N
WAwCOlZVdgGTf6xamf7jfSoZv9YtTP8Acb6VkMpGgUGgVqtiXuLRRRQIKfGecUypUXAz3pMBetVJ
V2PgVadgikmqbEsck5NEBAKUHByKQU5F3H2rQYsq703DqKrVPcPj5FP1qChDQUtJS0xsKKKKBBT4
mCuCelMoFAFuUZAI6VHSwPn5W59KHXaajbQQlWrdhsx0NVacrFTkdaGrgXT0qE1KjBlyKSRe4rNC
I6KKKoYtFFFIRLbf6z8Knm/1TVBbf6z8Knm/1TVm9yhy9BS0i9BS1IBRRRQAUyWJJBhxmn0UAZdz
bNDyuWT1x0qvW4QCMEZFZ11aFMvGMr3HpW0Kl9GIqUtJS1owCrFnD5koJ+6vJqBQWYAdTWlAPKjC
jHvUTdloF7FaZDHIw7dRTKuToZsFfvD+VVGUqcMCD70ou4hKKKsQQtuV3BCjmm3YAubbFsrAfMoy
3vVEda2DIT2GKzLiLy5O209KVOT2YXPINdjuotYuP7Q5nZtxI6Edse2KkUhgCvQ11XxA0+N7FL5U
/fRsEZgOqnPX6H+dcdZNlCv92vtssxCq007eX3HqU588EzQsLf7Vdxwk4DHk46ACuyUBVAHAAwKx
PD0aRW0tzLtUZwGPYd6qajq0s7FLdjHD6jhj/wDWr0nqxNczNm91O3tQRu8yQfwKf5+lYt1rNzMf
3ZEK+i8n86zKKaSKUUhzszsWdizHuTk1e07TJbwhmzHD/ex1+lWtI0rzQs90P3fVUPf6+1dAoCqA
oAA4AFDYpStsQ2trDapthQL6nufrU9FIxCqSxwByTUGYtZGo6wkBMdtiSTu2eF/xqjqmqtcExWxK
w45OOW/+tUdjpM9wFd8RxHu3Uj2FUl3LUbasozzSTyF5nLse5qxbaddXGCkZCH+JuBXRW2mWtvgr
GGb+8/Jq7Rzdgc+xiwaDGvM8xf2UYFaEWn2sWCkCZHcjNWSQoJYgAdzWDqPiS3iR0tP3sw4BI+X6
+9TKdtxK8jeUBRhQAPQV6X8PNQRWiV3wHj8tiT/EOmfr/Wvn1bvWtZuFhs47qZ3O0RWkbEfp/Wuj
uvh3460fThqa6dfiPAc/ZWdpF75Kjn8s14OeYCGaYf2Ddn3PRwGIeFlJtXTVme3fEXTILm1Vp8bL
j9wwI74JB/SvmjxDp9zp+qyWMylplwqbR/rM9CPrW5B498RwRpbancyX0KsDtvFJkUd9rcHP1zXY
aPrWi+Ibm2mmgjku7ORJolmUb1IIPHPIyBnHHSvEyuhi8jpeyre/Duunb/gnsShRzOnGMJWqLo+q
8u56vpemRaPpWn7iFFjarGUA4yF5/XNT+GYybOS4b788hb8Acf41gjU45tLu4nYmaZw4I5HUE1No
esCxRop9zQ9VA6g/4U/rVKTu5G31WrFcvKdkOlcxrl3/AGlepZW7gwJy5HdvSq15rd3fM0NsPKib
jgfNj3NaWi2MdnH50/X36mvKzDMIuPs6b+Z2UMI6X7ypv0Rr6hcjTdDk+YLIVIXPc44rn/DenxXd
pcCThztIfuOtVdX1BtVuVCn9xHzgjGTXU6JbiCwjwuGcbm4rTK6Db9q1psvQwxMuSPJ1erMG9024
tWbKl4x0dR/nFUxXdCqlxpdpOcmPY3qnGa9jl7HGp9zkxThWvPoMoc/Z5FZc8BuCKpT6fdW5O+Fi
o/iUZFDTKumVFfdIyj+EDP1NSL1qppzGWF5sH95Ix6dgdo/QVbUHPQ/lUlC07AKkEAg9Qamgs7mc
gRwyEHvtIH51sWOhck3jDHZUP9atJslySMTT9N8yZvskPzN94joK2LJH0iVmvrbzPmO2ZegHYYro
LeGO3QJCiovoB1qUgEYIBHoa0ULGbnc5bWfBvhXxakk17pltNOw2G4Rdkq/8CHNeV69+z/co8sug
a5HImSUtryDa2PTzFOD/AN8ive4YYokZYUWMN12DH41Rk0yZebS9nTvhmJFdEK1SGzOeVGnPdHyx
dfDrxzocshi0m7KLy0lpIrIfwByfyrDm1jX9FuBLem7s5Bx/pcBj/wDQgK+z7BLqOFhdyLJJn5SB
jjFUJ5dTUnzbOCZTx8q5yK6I46Ud0c8sFF7M+O18T3ss805eCRpTl8LwTjGeKy1lZJxLH8jhtw29
jmvs9PDega0rNq3hfS3dT/y82MbZPqNy1kt4b8CBmR/BuiDBI/5BkP8A8TWjxyerIWBa2Zwfwclf
UbWC7kRUbMjkL04O0f0r1aue8MW9jb3upLpVnBZ2SsqxQwxiNUHOQAOB610DEKpY9AMmvz/MK3ts
TOfds+jp0/Z040+yR88fGfUSuqw2oG4iSWUkn3wK85W8dWDBV4Oa+jrXR9E1mRpNU0mxvbvli9zb
JJgE9AWBrpdO8L+BYrKNLjwlokkwzuY6XCc8nvtr7PLMWqGFhTXb89TycfhpVK8p3/pHzz4K1y6v
fFNlbzGIRt5hIVeeEY/0r6ZsI/KsrdP7qAfpWL4jsvDllpAj0TQtPsJ2kAV4LOOIgd8FRxW/CMQx
j0Ufyr57iCuq2ITXRfqztwFF0cPZ9W3+CMbxhIU0oKOrSDj6Amvmw+FPFOq38zWujX8ryys6jAUn
JJ/iIr6R8UgubBOzS/4VLpZ1BtaQWscRRQWBf6VvkNV0YyklvYMfRVWEE3tc+ebX4VeN7shX0KeH
08+VAP0JrdsfgT4tnIFzJplqPVpy/wD6CK+mLQ6iZh9rFuIsHOzOc1HfJqTTn7JJCsWOMjn+VfQv
Fz7HlLCQvqzzL4VfCSfwd4hbWNS1O2vJhA0MUUMLKELEZbcTycDHQdTXoVsVn8Q3L7ciOPaD6Hgf
41PaQaitwj3V0rxjOUCjnj6Vcit4oXkeJArSHLEdzXPOcqjvI6IQjTVoj2pppzU01JQ2qWq3At7G
V921iCq/Wrtc14luRJOkC/8ALPlvqaiTsioq7OV1xWksGCgs24Hjk1418ZpCfFUEHaK0Qj8S3+Fe
1ajdfZIA+3cScYrxH4y/8jv/ANucX/oT1rgV+9+Rnjv4XzOUmGLBh/sVi1uzLm2df9msKvqUrI8a
IUUUUygoopUUuwVRkk4oASrFtaPPz9xP7xFXLawVfmmwzenarwAAwBgCgly7EcEEcIxGv49zWxp+
jy3ADzExR9enJ/wqzoNhFJF9plAc5IVT0GO9b1JsylIhtreK2j2QqFHf3qaiioMwpwptKDTQDhQR
milqhDdp9KQgjtUoNOFKwXK9FWcA9QKAin+EUcoXK1FWvJQ+o/Gl+zp6mjlYXKlFWTaN/Cw/Gmta
yhc4B+lLlYXRFHI8bbkYg1rWupoxAmGw+o5FY5BBwRiimpOOwnFPc62CZJRmN1Yexq1Ga4pHZG3I
xVvUHFaFpq88TKJT5iDrn7351tGquplKk+h1qniiqNrqFvPFvWQLzjDkA0VupIxcWcTRRRX5sdAt
FFIxwKQMRj2prBtp29e1AGaV3WNcn/8AXTFuQQ3BDbZfz9Ktg5GRWdLJ5jZ2gUCR1GAzAfWrcLjL
tyu6FvUc1VtnWNyzZ6cUzzXIwXYg+9WfsqsAVYgGi3KrMCKW4ZnOwkLUJOTk8mpntpF6DcPaoSCD
ggg+9UrdAHpK68KxxU8k6PBtIO7+tQpDI2CF49TU62nHzNz7ClLlASxXLM3pxVys+UmKQrGzAfWm
+bJ/fb86lx5tQLk84jGBy38qZAZHBLdOxqoD82Tz9avQTCTjGG9KGrIBwODUoORTGHehDzioepK0
0H0UUUigpaSloBi1HN90fWpKjm+6PrQIkHQVTm6/jVwdBVWRSxOPWnHcCGlFOMTelGxgOhrS6ENo
oooAKWkpaBBUsUpTg8rUVFDVxkk5zISOhxio6s7AyAGoHUocGpTAEIDgnpmr25cZyPzrPpRQ43As
GTzJVUfdzVqs4HBBHarqzIVyWA9RUyj2BEbyeXO3oetTK6kZDCqUjb3J9abT5LhcfOQZWxTBRTkU
scCq2Qh0RxIpPQGnzTF+F4X+dPCBUIFVqlWbuFwpaSlqgClFJSigBaKKcEY9jQA2prf7y/WmeU3t
UsKlWUH1qZPQEWX+430qOFl6Ajd3FSP9xvpVKWNxiRP07VmlcZeqpfk/IO1SW0/mDa33/wCdSTRi
VNp49D6UL3XqBQHSkc4GKeYJgcBcj61LBa87pfyrRtIRXQ5FOpHXypSp6dqWmJhCgeXa2cH0q0to
gPLEiobNS02R0FX6znJp6DGooRQqjAFOopsjhEZj2rPcYksixrlj+FVzec4RPzNRxRtcOWcnb/ni
rn7uIdFX8KuyWm4FcXjA/Mg/OpFu4yeQw+opWnjPBXI+lNZbeQdlPtxRZdhFhWDfdIP0okTfGy+o
qm1s8fzRMT9ODTorpl+WUZx1Pejl6oBLQ4Z4m7/zp1xmK3VMjJPNMudpIljIxnBx60gbzrgMeAoy
fbFVa+oDi7wBEUdsnjrS3BM0yRr6fkamS4R1Y/3eeaisl3M8h65xSv1aAskrFHzwAKp3Myy7cKRj
uaffE7lHbFVaIR6gFTWjKswLdxgVEAScAEn2pSjgZKMB7ireugi7c3IT5UwW9fSo4bs5xKMj1FVK
KnkVrAawClt4xnGM02P/AFr1BYSEqUPbkVPH/rXrJq2gDp/9XSp90fSkn/1dKn3R9KnoBG/ySg9j
U1NkXcvv2piPj5X4xT3QiWmS/dz6GlMi+tMJaThRxQkBIsiscCmH5pwPSkWPdGCOGFJE2HO4807d
gLFRx/K7L+IqSo5RjDjqKSAkpHcKOaY74UEdT0oSPPzPyT2pW6sY1pWPQYFEcW4ZJwKWQ73CL0FT
dKbdloIgZQjjPK0sce/JPA7U6Y52qKWA/LjuKd9BEbxlOQeKcspH3xxUrDcpHrUUR6o1F7oZKrBh
kGlqJ0KHcn5U9XBXP51LXYBH+Z1Xt1NS1HEM5Y9T0p9JgRxfK7LThIu7H61C53SnYetPdAsfvVW7
iHwj5M+pqSoEcphWHFS+Yn94VLTuMdUUWWctSSPv+VOalRdq4p7IBH+4fpSW/wB0/Wlf7h+lJb/d
P1pD6DZv9YtTVDN/rFqakxFO1JjuXjPQ9KvVUu4i2JI/vrSxXaMv7w7Wq2ubVCLVVZSEvEZuFK4z
Tnu4lXKncfQVVmMsy+YVwg6URi+oF2GdJQduQR2NQWeHmlk75ps8IVRLAcDHb0pdPdQGUnDE/nRZ
WbQFt1DIynoRiorJswAH7ynBqeqz/uLnf/BJwfY1K1VgLVQzXCRcfeb0FRXMzF/Ki+8epFPht0iG
58FuuT2ppJasCrNNLINrDCk8DFTR2XeRvwFJCPtF0ZD91en9Ku1UpW0QGUyiJ3WRcnHBBqxDaB4Q
zEqT0qK7bzJ2K8hRjNX4JPMiVqcpNK4FF0e2kUggnsanju8fLMpB9RUt3H5kRwMsORTLcpPCFcAs
vFTdNXYFkEMMg5FKKoMHtHBUlozVmaYJBuU5Lfd96hx7AMjPmXjOPuoNtTTruhceopLaPyogDyx5
P1p8jqi5c4FDeugFewkHkEMcbT3pZLpHgk2ZDYxg1UgjaZ2VSQnU1LcwKJUSEfNjp/WrcVzAXLdd
kKL7VJVSK7wds42sO+Km+0Q4z5gqGncBbhxHCxPpgVFYJtg3d2NQktdzADIjWrwAAAAwBQ9FYQ2b
/VGnr90fSmTf6o09fuj6VPQfQjT/AI+G+lS1En/Hw30qWhgwYZBHrWM6lHKnqOK2agubcTDI4cd/
WqhKz1EZlLSyRvGcOMUlbgFFSrBIyFwpx/Oo8EnAHPpRcB0UZkbC/nV6GJYxx17miGMRpgde5qQV
lKVyWwoooqBBVGWUmbcpxt4FSyyGU+XF+JqWKFY+2W9TVr3dxrQel0gjUyHa3cYoe6UxMYjl+wxU
F4uUDY6GizTCFvWlyq1x3IYpSJ97knPWtCopIVkHIwfUVFDIYm8uXj0NN67C3LVFFFQIjliWQc/e
9aouhRiGrSqOaMSIR/F2NXGVhpmfS0mCDjvUz28ioHK8d/atLpDIqKKfHG8hwik0AJGhkdVHc1sI
oVQo6AYqK2gWEerHqamFYTlcZFN/rFqZ/uN9Khm/1i1M/wBxvpUAUjQKDQK1WxL3FooooEOQZPtU
tNAxUVw+BtHU9andiI5n3t7DpUdFFarQYo5qR2EScfeoiGBuPSq8r73J7dqW4IaeTRRRVFBS0lLQ
DCiiigQUCigUAOBwcirIIljz3FVakhfa/seKTQDqWnSrhs+tNpCJYH2tg9DVqqFWoH3Jg9RUSXUQ
jDBpKlcZFRUkwFooooAltv8AWfhU83+raoLb/WfhU83+ras3uV1GI+OvSpQQelQUoJB4oaJuT0Ux
HzwetPqSgooooAKUUlKKQFK7tN2Xi69SPX6VRxjg8GtuoZ7dJhzw394VpGpbRgUrJMlnPbgVbqGN
Gt9wkwFJ4b1qRpEUZLD86p6shj1OGBouriNAVI3t6elU5rgtxHkD1qtTVO+rGtC5aXMaEh1wSfvD
tV2Rg2MEEdaxqkhlaI8cj0pyp31QM0qjnTfER36ikjnjcD5gD6GnMwIKoQzkcAGs0mmScz4pZV8O
6hv6GIgfU8D9cV5pY/x/hXoPxIQW2gRI7/vJZlAUdCACT/SuAslxGzepr63I4/u+ZdWz0sMrQuac
t/5tlFaxkgRj94PU9qqVjpMYr92ydpc59xWxX0CN7WCtzRdL3bbi5Hy9UQ9/c1Foum+eyzzj90Dl
R/eIP8q6Sk2Zyl0QUUUVBAjMFUsxAUdSa567uJ9Xm8i1UiAHOWGB9T/hWtqFo95tjMpjhHLBerGr
MMMcCbIUVF9AKa0GnYpafpkVoFY/PMP4/T6VoUVXvb23sow9zIEB6DufoKTfVi1ZY6VkarrtrYgq
p86bH3VIwD2ya5vVPEFzfTx21qGTzHEaRxn5pCxwB+OenvXongL4MXN/af2r42M9hZlla2sYnUvc
gH5ldlJ2A4HIOeT3rnnXS2NoUr7nnif214pufIsLW4uiDjbEh2L35PTP1Ne0+A/gKo/4mHjO8iNk
o/49oS6E4wcluD6jGPzr1vw34Z0bwrpzTpp9pYwu29LSCJVVjgAEgDlsAcn0qW7uJ9Rk8+9YxW4I
KQ54/KuV1GzoUEivYTWWi2SWPhTTksbVARkIMsKqXKvPbtdPKZJm5Jb9RV1p8FI7eMbW4VjwKrmF
IZyLohlYbhnpnvxWZRzfivwzpHiqCKG7sjM6HKyglWUem4c14f44+GmseF2+2WpN7YB9ySwA+ZDj
BBYY4+oz0zxX0x5jthbWIGPpuPAH4VWkjj3ESu1zIeAnbJ9qpSaJaTPnXwp46t2dLfxIhZGICXcS
j5B/tj09x+Ves2thpzxpNHMkkbDKspyDVPxj8Em1iI3ei2iabeLGSUUKkUzZzlx/CevIH1rxSK81
3wRrJsLtWgeFsyWTyK0bg85BUkc9cj8e4rwswyNYj38NLlfbp/wPyPcwee1qK5K7bXfr/wAE+hhd
Wdkv7sbmHpzWLq+u+a2xydhx8q4JrI8I+IdO8SRwwQCNdRkXLWhOW464J+8K6qHwXHct5kzNbc/6
tQDn39q8WjkqozvV1Z6MswjNc1P7x3hcW1/KHVwkcZBKPwSc9K7cVwdxol3ZK2IQYUGd0fQD6daL
PVry2ddk7ui/wOcjFexFqCtY4Zpzd7nfCnCudsfEkMrbbuPyf9oHIrctLmG6TfbyLIoODjtWiaZk
01uWBVTWbj7Lpk8nfbtH1PFWxXP65ObvUrSwhIYBw8gH8j+FNvQIq7NrSovs+nW0XQqgz9epq4DT
B7U4dapCY8Uopop1MQ8U4UwU4VQhwpwpgp9MQ6nCmilFMQ8Uk0ohgklc4RFLE+wGaBWP4xufs/hy
7OcGRREP+BcH9M1FSfJBy7IqnDnko9zm/CSEaWZWOXlcsx9+lXtZlMOlXTjrsI/Pj+tLo8PkaZbx
4wdgJ+p5qv4lcJo0+f4sL+tfD7yPafvVPmZ+jRlbCFe7c/ma9JtE8m1ij/uKF/SvP9N6Wg7/ACf0
r0SvtcNHlgl5Hk4h80mzjfHzedqOj2p6GQsfzAqzVfxUA/ivSAe0Tn8smrFfM5q74mXy/I76WlKC
/rc57xHLnUdOiHZt/wCtbnhld2pFv7qE1z2qHzPEsY7Rx5/Q/wCNdP4UX97cv6Ko/PP+FenlEbU7
+ZljHZJeR0ZpppTTTXtHniGm0ppDSAQ0xqcaaaQyK4lWCCSVuiqT9fauInleeV5ZDl2OTWz4nuv3
kdqO3znn9P61hGsZu7sawVlcytdRpUgRVJy/YV4X8Srg3HjvVM8rE6RL9Ain+ZNe/XN0IbmCHbky
Z5z0r5w8Vy+f4t1h+v8Apsq/98uV/pXZl699s5cwfuRXmNxkY7Vz8qGOV0PYkV0FMeKNzl41Y+pG
a+mPITsc/TwjnojH8K3ljRfuoo+gpSQq5JAA7miw+YyILGWTlvkX361qQQRwAiMYz1NRtewKD+8z
7AVWbUufkj49zQLVmjRWPJfzv0IQewqI3Mx/5av+dFw5TqrPUri0QJGVMec7SK0F8QH+O2/J/wD6
1cJ9om/56v8A99UhmkPWR/zpWQvZpnpthqMN6SqbkcfwtjJ+lXcV5TbTSpcRssjg59a3/Ol/56P/
AN9GlykOnY7eiuI86X/nq/8A30aX7RMP+Wsn/fRo5Rch21FcWLu4HSeUf8CNKL66/wCfmb/vs0co
ch2eaXcfWuRim1GbmJ7px6gnH51OIdYPINx/38H+NFhcp1PmN60olYelc0kWs/3pB/vMDVqGLWM/
PPFj0YA/yFHzFym6JyOq08XK91NZka3o+/Lbn6IR/Wp18zHzlT9KLsmyL63Sdw1WIp43OAwz71lj
3opqbFyo15oVnXDdex9KyKv/AGjyrdecyFelUKJtMIhRRRUFBRRRQBVmmEfA5b0pLebzCQRgj0qk
SSST1NXbWPYmT1NfENJIyJ6a/anUxutZoGKnrVW8YmQL2Aq2vSql4uHDdjVx3BFcUtIKWtQCtOP7
i/QVmgEkAdScVYt5TG2x+B79qiauBdppK55wSPakc9hTazSE2SA5pRUanBpJ5hGnGCx6UrDTKc/+
uf60ylYNwzZ+bnJ70lbIAp6MVcMOoNMp8S75Ao70MDR6imDgipKjrFEslpHYIhY9BS0MAwIPQ0ii
tHdZbDgAeoq0OlZjoUYqeoq3ZyblKE9On0q5RVroCzUc33R9akqOb7o+tQIkHQVAPvN9anHQVAPv
N9aEAhcqfmHHqKeCCMiioWBibI6Gq3JJiAeoFMMQPQ4p6kMARSilewFZkZeopKt1E8Q6rx7VSkBD
S9aDx1p0Yy4qhlkdKRlDDBpRRWYiq6lTg0gq06hhg1X2MCcAn6CqTASil2N/db8qd5T/AN01V0Ay
inbH/ut+VGxs8qR9RRcBFUscCrKKFGBQi7VxTqzbuIBVVhhiKtCq8oxIfzoiAyloAJOAKnSMDluT
VN2GRqjN0FSrCB15qQUVLYgAA6ACkYhRkmhmCjJqNB5h3N09KVuoD1YseB8vqacv+sWihf8AWLSY
0Tv9xvpTIvuCnv8Acb6UyL7gqRla5iMbiSPgZ7dqswSCVM9x1p7KGUqwyDVGImC4Kk/LnBql7yEX
6KKKgZHNCso+bgjuKg+xnPLjH0q3VKaVp32R52/zq4t9AJkkhgBUHJ7470n2xP7jUJbRoP3pBP1x
UgEA4wlGnqIat3Geu5fqKiu5ldFCHIPJqYwwueAufY1G9nz8jYHvQuW4yVMQ24Ptn6mqzMWOSeal
ueNi9gKhqorqSwoqWKBn5PyintJDD90bm9jmhy6ILDIllGCuQPfpUspiK4mK7j3Woczz/wCyn5Cl
t4oWJUks35VL7sZARyQm4r9Ks2sewM0nygjHPelkMkcoWJcJx0Wn3SK4ALqpHPJobvoBFcIkUJCc
7z19qsW6bIlHfqapvhjFGrbscZH1rQAwMClLRWAqXjqcKOWHf0pltAZDluFH602RSbhl7lv51fG2
OMDoqim3yqyAVVVRhQB9KfVYXK56HHrVgEEZByKzaa3Ailt0kHTB9RWfIhRirDkVrVS1ADKHvyKu
EnewiKzOJ19+KvR/616o2gJnXHbmr0f+telU3AdP/q6VPuj6Uk/+rpU+6PpWfQB1IyhuopaKAGiN
QelOGAOwpkj7RgdTSLEW5c0/UAVlR25+U02NQ7NmnvEu35RzSxbduQMHvTvpoIZl4+CMipBIrcZ/
On0wxqTyKV09wIhtEvJ+UVI8meE5NMVV80qelPwYySBlTTdgHRJsHPWn01WDDg06oYyJMtMSe1Kv
yzEetEP3nHvSN/rxirETVHKhPzL1qSkZgo5NShjFlB4fg0wAFyM/LTtpkbJGF/U0gQGUjsKpWJJD
Kqjjn6UzDydeFqRUUcgU+pvbYZXIEcq+gFOLB3XngU6bbtyRk9qFiG0butO/UCTgjsaYYl96YUZP
mU8VLG25c96nbYBVUL0FLRRQMa/3D9KS3+6frSv9w/Skt/un60B0Gzf6xamqGb/WLU1JiFFRyW8c
n3lGfUcVIKWhOwiFLeJOi5+vNPdkCkOQB0OTVe4mcyeVDnd3NEdmvWU7j7VVusmBFHMq2zxseeQP
elitxJbqynD88/jTri3SPa6KSoPzDParUW3y12DC44qnKyugKqTyQkLMpIHepnlhljYbgeO9TEAj
BGRUL2sRUlVwfY1N0wK1m8aMzSH5uxxmpJJWuD5cQIXuaZawpKj7s7hxUqO1t8kgynZgKt2vpuBY
ijESBR+frSyNsRm9BmlVlYZUg/Q1HdAm3fHpWW71AhsUBidiMljil08kCRD/AAmnWP8Ax7/iabac
3ExHT/69W+oFuqU0bwy+bF07irtRSzpHwPmbptFRFu+gEZuIpYWDHBI6GobPZnfK4AToDT0t9+6S
YbQRnaOMU2yhjlVmcE4PTNaaJMCaS8XpEC7fSmJBJM2+ckDsKsxxJH9xQKkqOZLYCjDIkFxKG4Xo
Kfbuslw8jMB2UZ7Ul3GjOqoo81jknPSpWs4iuACD65p3VrgSvGkg+ZQfeohZxA5wfpmoP3toRzuj
PWryMHQMOhGaTutmAKoUYUAD0FLRRUAMm/1Rp6/dH0pk3+qNPX7o+lHQOhGn/Hw30pt1KUAVeCec
05P+PhvpUF7/AK0f7tVFXYMlgnD/ACvw3r61PWXV+3k8xOfvDrTnG2qESkAjBAI96QRp/cX8qWnV
mAVUvNkW1wo35qeWVIh87fh3rPu5hMy7QQB61cE2wJEuh/GpH0qQXMeOp/KqFFa8iFYuPdr/AAKS
feoJJnkPJwPQVFUtsm+UDsOTRypagXLePy0H949akoorJu5JHcf6l/pRb/6hPpTbtsRY9TRaNuix
3FO3uj6E4qO4jEiH+8OlSClpJ2EZ0Uzx8A5HoasJdL/GpH0qC4XbM3vzUda2T1KL32iL+8fypj3Q
/gUn61UopciFYv2IWTe5Ubs1drLtJxCW3AkHHStCKVJRlD+HesqidyhfLT+4v5U4AKMKAB7UtRzy
eWhI69qhXYDJ5xHwvLfypLSVnLBzk9RVM8nmprP/AF4+hrVxSQrlmb/WLUz/AHG+lQzf6xamf7jf
SshlI0Cg0CtVsS9xacg702pVGBSYgJCjJ6CqbEsxJ6mprhuAv41BVRQgpQMnFJUkQ6mqYxJ22oFH
eq9Okbc5NNoSsUgooqWOEty3ApgRqpY4UZqykSoMvyaXKxjCimEknmpbuK490WQZHBqu6MhwRUoO
DxUgYMNrUXsIqUCppISOU5HpUWMHmqTuMKKKKALUZ3xY6kUym27YfHrUjjDVGzENp8TbHB7d6ZRT
Av1E4w1LA26Me3FLIOBWS0ZIyiiimMltv9Z+FTzf6tqgtv8AWfhU83+ras3uV1IqKKKZAVLG2eD1
qKik1cE7FiikU7hmlqSwpRSUopAFFFFICO4j82Ir37fWshlKsVYYI4NbdVb233jeg+YDkDvWtOVt
GBm0UUV0CCiiigArQ06EqDIw6/d+lQWcHnPlvuDr71qAY4FY1J9EB5b8VLt5Nbt7Tjy4YQ4wepYn
r/3z+tc3CPLgGewzU/im8/tDxNfzKdyecY0Psvy8exxn8aguzi2kI/u19zldL2VGK7I9SEeWCRhM
ckn1Oa6/RLI3joWyIlALH19q5FEaRwifePAr07RPLGmQiFSqgYIJzz3r0W7FVHZF1VVFCoAqjoAM
ClooqDAKKKKACimySJEheV1RB1ZjgVxmueI3uP3NluSNvlxj53z0A/zmplNR3HGLlsbOteIIbHMc
GJZx1/ur+Pf8KxNG0HXfGFy5sIyY85a4nYrGuTzg9/oK6fwF8NpdWWLUfEqSQ2RLbbIh4pGxwC3Q
qM84HPTnnFfSvgjwrDDaW0ksPl2cKBYIORwAACfUY/OuSdVyOqFJI5b4afDDR/C2n/2jeQiaRf3g
muAGkkYdB04X0Ax6+teg6fF5rtq+oqI7dBuhiB4UAY4H4cU6ctrWsNDvAsLUhj8vBI68/n+FVtWu
RqV+IEK/Y7Yjhf4z7Y/Kudu5qVrg3OrXRuJVxEMrGrcAD6Usdv5sMm8sZRkAE9DV0CV1AjHloOPm
HNRhFguAd2d3BBPOfWiwEDJ51oCBiROgHGCKiutslmsp27lwefXuKtTMtpM8j/ccfqKNJ0xb+WS7
vQY7IEsFYld3vn0oAjsrG61VgUHkWYPLk4JHt/nFX0ntdPZLTR7cXd4Gw0jLnB92/wAOKWW4uNcm
NrYZgsFGHkK4DYPQH+leefF34m2XgC0k0LwyN+vTR7jMu2RbU5xmQE/eIyQuD74BFNK+wXsdP4q1
fTPD1g19421s2cbyBFgh3SsSe2xASfwFc5/wkPwo8fQNoC3sclzOhSOWe1lgkU9ikkiAbgecfpXz
BKt/4g1S51G/mea7nZnluZeSxJJwPQZPAHA7Ypt7os0cDsAs6d0A5I+nf6VaikTdvod18SPhXrPg
eWbV9KuJLvQInX7PfwTf6RFkYy+wLtIbPzLxjGcc16b8HfGU3inRriHUjGNRs3CHYD+8i2rtc++d
w/4DnvXgGleKdb0nRtR0Sx1CaHTr+AwXNnIoZfLYEYCsCY8gnlcGun+B2pwaZ42Zr27gtLSS0kDy
TyKi5BUgZPHrWOJpqdNt7o1w9TkqJLZn00KqXemWt2hWSJVb++oAIq0D0I6GnCvHPV2OXvvDcqYa
ycSr3VyA3+FZUkF3YysGWWJwOWUkcfUV34pcAjBAI9DS5EUpvqcN/a995PlfaH29M9/zre8L6c8Z
a8uQ3mvkJu64PU/WtCPSbGO4E6W6iQHOcnGfpnFaFEY9wlJbIcKcKYKcK0Mx4p1MFOFMBwpwpg60
8UxDqcKaKUUxDwaWm04GmA4Vy3j+YtZ2dmnLzzDj6f8A1zXUVx+v/wCk+MbOIkFLeHzMehJP+C1x
ZjU9nh5eeh0YON6qfbU0cAcDgCsHxc/+hwQg/NJJ0rernvESh9U01T/tH8sH+lfKUY89RR7nowdn
fsX9Hj36jbIBkBh+QrtZpPLhkf8AuqW/IVyvhgA6kxPaIkfmB/Wui1E4066Ocfun/ka+2hojyJ6s
5LWZvtHjeFV5EERH5qf8RWlWHYN5/ibUJj1CIB/3yP8ACtyvj8bPnryfmerbljFeSOXly3iS9Y/w
qFH4gV1nhP7t19U/rXKbg2u6kVIIyo4+mK7Hwwu3T3b+9If5CvoMsX7mJy4x+9byRsGmmgmkr0zh
EpCaU02kMQ1BdTpbQPNIcKvtUxrmvEl4XlFvG4KLywH96pk7IqKuzndSuW+0wSuSTJLtJJz1qY1n
60QqWrHoJ0J/OrlxPFbxl7iWOJP7zsFH61gbmfdqX1q14JUDOcfWvm+9fztau5Dz5lzI/wCbk19F
P4l0eK5Eb6lZY27i4nQge3WvmcSOkYk/5aYyc+teplsWpO/kebmEk+VLzNYkDqQPrVaW/hTIUlmH
YCsqWV5WzIxY0yvoTzeUuSahK64UKnuKqs7v952b6nNNooKsFFFFABRRRQAUVYgs5Ze2werDFadh
o32iRY8NIx6kZCj60CbSM7TYWmul2qWC8nAro7fT7qcExwtgd2+X+ddJpenQadbiOBACeWbrk1cq
eYxlUvsc3b6FcOQZmSNe4Byf8KuroNuDzLKfbj/CteildkczKkOnWsIG2FSfVuTU6wQqcrFGD7KK
kopCuFFFFABRRRQAUUUUAFFFFABRRRQAUUU9Y5G+6jt9FJoAZRUy2s7DIif8RiinZiujGto975I+
UdavCorZNsQ9TzUtfDSd2Zi016dQRmoBjVPNEiB1KtTTxTg3rTEmU3t3U5A3D1FMVGY4CnP0rSBG
KCQO9VzsZXt4Ch3P17D0p08SuwPQ9/epC/pTRzSu73FcAOgqUDAqrdB1CsDwP51NDKJI9xxkdaGt
LgkKwwaiaJXcFj9ajZ2mnAQ4A6VZZcfSnsGws0QkTHQjofSqLwunVePUVdViKkDCkm4hczkhd/uq
fx4q7BCIxknLGpc0hYUnJsYMcCmgZIpCc09Bjk0tid2OooopFEF1HuTco+YfyqvbHE61fqgBsuQB
2bH61cXdWA0ajm+6PrUlRzfdH1qBEg6CoB95vrU46CoB95vrQgH0yQZQ0+imSQQthsdjU4quoIlw
OxqwKcgFoopQCelIBjoG+tQqfLY7hzVlhimSLuHvTTAjMx7ACm+Y3qaaeDSVVhikk9STUsEmw4P3
ahpRRa4GiOlLVa2k/gP4VZrFqzGFU55d5wv3R+tSXUmBsHU9arVpCPUTAEjoSKeHb1NMoFWxEqyk
deaGJlYYGKYoyQBVlFCjAqHZCBECjjr606lC5FBUjrUXABRQKKYEErZbHYVMgwoFQAEy496sU5dg
Chf9YtFC/wCsWoGid/uN9KZF9wU9/uN9KZF9wUhklVL9Puv+FW6hvP8Aj3b8P504uzAfC2+JW9qf
UFif3P0Jqek1ZgQXj7YsDq3FJbqIYPMYcmmX/wDB+NSXBzbIR04/lVdEhMgZi5yx5ptFFaCCpUnd
Tycj3qKik1cCWV/NYEA5xjFSpGsS75SP8KEVYU3ydag5nfdK21P89KnfRbDsPeaSdisIIXuacYPK
iLAb3+nSnzQlo1WHGB79aj8/yYggIZx1PYUlr8IElvKTCWl6Due9QrJFE5MQLE9M9qckEkrbpiQP
SrKJHCmeAO5NDsgK+LmXqdoP4U5bMA/MxP0GKmSaNzhWGaZPcCNtoGWpXlsgHpBGhBVeR3qSq8N0
HYKy4J6Yp9z/AKr3zUtO9mA5hGrb3ADDvVaeXzDgcKKiJJ6mp4YCxDN93r9auyjqxEFX7YFYgGGD
Q7xI3zlQfpTDdRDuT+FS25dALFZ13IJJPl6Dj60TXLyAj7q+gqe1t9uHfr2FNLl1YDrOExqWbhm7
elSR/wCtepKjj/1r1Dd9QHT/AOrpYyCox6Uk/wDq6g5U5FCV0BaoqOOTdwetSVLVgI+s9SioX+WQ
N2qYU2AtRP8AI24dD1FS1HL2oQmKrg0+q33fpVhSCMjpQ1YERyjawcVKDkAikI3Aio4zsYo1G6GP
aNT04PqKTEg6EN9acXUdSKYZR/CMmkrgxuWR9xGM0q7ixcLmlCM5y/Aow8eccrVEjsSHqwX6Uqxq
OTyfU0izKRzxTwynoRSdxg7bVJpkIOCT3prHzXCj7oqbGKWyAUU0yAUrHCEmoPvdelCVxNkiDe28
9OwqWmR9KfSY0KOlRRDEjgdKkJwpPpUcAJ3Me9C2YEtFFMkcLwOtCVwFf7hpLf7p+tQks/Jqa3+6
frTasFxs5w6k9MVMpDDIORUFwMsB7VXDPC39OxoUboGaApaiglEg46jqKlqWrCKVgd0kjHrxV2qU
H7q8dOzVdqp7gIQCCCMg1VDfZZCrcxscqfSrdQTKGyG6GlF9GBKrBulPqjG5gcLJ9zsavUNWApDN
vdnccI9XSAQQeQahuofNj4HzjpTLWfcuyQgMvr6U3qrgK1sAd0TGNvbpSFbhQR8sgPrwake4iXq4
P05qF7sswWFdx96a5mBFHK9tuR19wM9KfarNGhKRj5u5NKtoz5aZjuPTFIrzWwAcBk9aptPYCbyp
nH7yXAPUKKkihSL7o59aYt3E2Mkg+4qTzo9pYOpA96zfNsBFey7IsDq3FS20flxBe/U1VgU3Exlc
YUHirwolorABOBzUUs6xrk5z2HrRcyCNOep6D1qCKMs3mS/e7D0ojHqxNk1tEQTJJy7fpVikT7op
alu7GR3AzA4PpUOnkmEg9jxT71wkBB6twKWzTZbr781X2QJqKKrTXO3iPk+tQk29BMmmIEZGeTT1
+6PpVBAzHe3T3q+v3R9KclYfQjT/AI+G+lQXv+tH+7U6f8fDfSob0fOp9RThuDK1TWrYmA9eKhqe
0XdLnsK0lsSXabNIIoix/CnVV1E/ukHvWUVd2GUXYuxZjkmkooroAKKKKACrFl/rT/u1XqeyOJj7
ilLYTL1FFVrmbGUTr3NYpXJIrmTfJwflHSi2kCSc9DxUNFa20sUaopaq20+QEc89jVqsmrElO9H7
xT7VXqa8bMuPQVDWsdikFFFFMApysVYMpwRTaWgDXgk82JW9eoqten96B2xS6cf3bj3ovQd6t2xi
sErSsDK9TWf+vH0NQ1Ysh+9PsKuWwieb/WLUz/cb6VDN/rFqZ/uN9KxKKRoFBoFarYl7jh1FSVGv
3hUlSyWVZTukP5UylPU0laoYVITthJqOpdy7QDzSYFUDPSpFhY9eBU+9QOBTS5PtRdjuKqJH15NI
zk9OKZRRYQU6m09ELnAoYCUU+SMp7j1plADlcj6U4hJOo5qOikAjQsPu81GQQcHipw5FPDqR8wp3
YFZDh1PvVmUcg0m2I9hSyEEDBpN3YEdFFFMCe1PJH41O3Q1Wtv8AWH6VZPQ1nLclkVFFFAyW2/1n
4VPN/q2qC2/1n4VPN/qmrN7ldSKipF2yKCpyPUUxlKnmi5DQlFFFMB0Zw31qaq9TqcgGpY0LSikp
RUlBRRRSAKKKKAKF7bYzJGOP4h/WqVbvUHNZl7b+U25fuH9K3pzvoxFWpbeFppNo4Hc+lNijaWQI
vU1rwxLCm1fxPrVTnygORQiBVGAKcOoooHUVzAfP0Qzd/wDAjVq7Ba2kA5JWq8sbW2pTRP8Afime
NvqGIP8AKrtfpWGacT12UNMg2r5rryfu/Sum0G98mXyJWxE/3fZqyKUEggg4I5BrosS9TuqKr2E5
ubOKUjBYc/XpViszEKgvbqKzt2mnbag/Mn0FSyyLFE8khwiAsT6AVwep3lzr2rwWdmoZ5X8u3jJx
knuffv8ASonPlRUI8zHXl7f+ItSSx0+F5ZHP7u3THGO5P9eler+A/h3baHsvdX8q81TIdSAdkB9F
z1P+1gfStLwB4Sg8L6b8zGXUJwGuJTggHH3U4+7+pr0TwxpB1S6LS5W1j5cjueyiuGU3JnZCCiaX
hPQfthW8vB/owPyIR/rPf6D9a6nxBfm0s/LgbFzKQsYHbnk/0q/GFRQqAKo4AA4FYlkW1HXJLt8f
Z7UmNB1yeRn+v5VDLG3b/wBk6RDYQsGurgkN6jPU/wBKisoUs08orukHcDrTIN99qE2oMq+WDtTH
oOM1dmddyMnJHX6UkIayyv38senU1BMkEaMAMvjOanlDkAyHanfaao6gpe5isrXIkmwpx2U9TTAX
Trd9ZuwZMCzgILZ/jPpVy7L6vcf2dYHyrKD5ZHxkHHQCn6o/2G1t9JsMNNMNhLHBAPfjuf6Vk+Of
Eln8N/A81+6pLd48u3ibI8+cjgHHO3ufQCklfQDnPjN8S7TwDpg0XQsNr88e6NQMraoc/vXz1JI4
Xvyegr5YsrabUrqW7vJGkMkhklkbrK5OSfzpbi6v/EesXF9qty9xdTN5k0rH1PQDsPQdq2olWNFV
BhQMAVrtoSlzaslRQiBUGFAwAKdk0wNRupGhDd2kF3sNxGHKZ2k9Vz6VzOueHrqWykjtJFmJcFVb
5SB9eh/SurLU0mgVrnPeBPif4l8Bz22nTkzaTC2XspUAIUtltjdQevXIr6I8BfF7w14wmS0jlk0/
Um6W11gb/wDcYcN9OD7V4ZqWn22owNFdRhgQQGwNy+4PrXF6t4TntWM2myNLGvzBT98Y9Mda56mH
hU12ZtCtKGh92inCvkf4cfG/WvDXkabrqf2npivtLyk/aIV4GA3cDk4Iz7ivp/wp4l0rxXpK6loV
0Lm0LlCdpVlYdmU8g/XtXn1KMqe+x2QqRnsbYpwpgp4rM0HClFNFOFMBwpwpgpwpiH0opopRTEPB
p1MFOFMQ4GnCmU4GmA8c1xFk32zxNql51VW8pT7Dj+ldlNIIYZJD0RS35VxnhUZsJZcYMsrN+H+c
14ucztTjE7sGrKUvkbVc1rDeZ4ihUdIo8/nn/EV0tcmWM3iC9kP8B2D8OP6V5GBjzV4nTe0ZPyOo
8Kpm6nfsqbfzP/1q2dZbbpN2f+mZFUfDCbbOR8cs/X6VY8QtjRbr/d/qK+vWkTynrI5Af8SrXInn
ZVt72BGViemFHX8f51a1LWre3jKQSCW4YYVU5wT3z0/CuijsrXU9GtY7uFZE8pOvBGAOhHIrJvvD
UFqFk0yDoMMpYs31BNeLXylzqucX7rO6GKhZcy1X3HP6dbmCItLzM5y5rutBQppcOerZb8zWLYaN
PNIrXCmOLqc9T7V06KqKFUAKBgAdq9ahTVOKitkclao6jux1IaCabz6VsZATSE1BPd28BIlmRSOx
PP5VSfWrJSfndvotJtIdmWtQuRaWrzHBI6DPU14p8WPE0+iaOgsLgxaldzDa6gEooOWbBBHbH/Aq
9G1jUvtxRY1Kxrzz1Jr5x+LWtQ6v4n8q2IaOxQ25b1fd8w/A8VeHh7Wqr7IzxE/Z03bdmTdeLfEl
/F5dxqtxLHnoERf1Cg1jTQzXMplnBklPV5Dk/mauxKEjVRTq+hhhYRWmnoeRKpKW7uUls27lRRJZ
F0I8wD8Ku0VqqUVqTcyn06UfcZW/SojZXA/5Z5+hFbVT2lrLdSbIF3EdT2H1rQOY5loZF+9Gw/Co
zwcHr6V6Ha6Cm0G5kYt/dTgfnWpDaW8K7YoY1H0pXJdVHl8dtNJ92M49+KlXT5j12L9TXpUllbSf
fgjPvtqrLo1m/RXjPqjf45oug9qcGNNbvKv5VZsLBY5szSKB2bBOPwrrjoNtjiScH3I/wqJ9AH8F
wf8AgS0XQe0KtrYWkjqWvo2XuoG0/qa37WGCBNtuFUHk4Oc1gy6Fcr9x43/HFMGj3ycrtH+69D16
kPXqdRRXLfZdThOVE31DZ/rS/b9RtuZDIB/00Tj86XKLl7HUUVzI1+5zylvj6H/GrEfiD/npAPqr
UcrDkZvUVlprdoVy3mKfTbmpo9Vs3/5bBf8AeBFKzFZl6imRTRy/6qRX/wB05p+KQgooooAKKKKA
Hxx7+4FSi39W/Sq9SLM698/WmrdRFlLePuCfxqZYIv7gqqlzj7y/lU6XMZPUj6itE4ku5ZijROUU
CrKGq0bBhlSCPaplNaIzZZDcUUwHiimTY5NBhFHsKdTIjmNPoKfX52aDZXEaFjz6VBFclnAcDB9K
nlQSIVP51DFbbXDMQcdAKa5bagWCM00qafRU3CxHg+lLg+lSCincVhgQ96eBiiilcYrAMpB6Gs59
0TOgPB4PvWix2qSegGazjulZ3x05NXAC3ax7I8nq3NTioLR90eD1XipxUy3GNKelIVPpUlFTcmxF
g+lOwafRTuFhAuKZcS+UowMk1JUc8XmqOcEULfUY23nMjbWAB7YqeoIIPLbcTk1PRK19ACqkq/6Y
uPUGrdVlBe8J7LREC3Uc33R9akqOb7o+tIRIOgqAfeb61OOgqAfeb60IB9FFFMkKBRSr1oAeq+tO
pBSOewqdythrHJpKKKokjmTI3DqKgq4KrSLtbHaqTBDKUUlKKoYo4ORVsTDyd38Q4x71UqyIv9H/
ANo81MrdRIrE5JJ70UUVQBQKKfEu5uegoYE0K7Rk9TUlIKWshCqcGpqgqRGyMHrUsaYMvcUypqiP
U0Jg0JRRRTYgoX/WLRQv+sWkNE7/AHG+lRxOuAuRu9Kkf7jfSqjW5k+ZWGfShWe4y5VO8lDYRDn1
xTfJnxtycfWpoLYIQzHJ9PSmko6gSwJ5cSr36mn0UVG4EF4u6EnHIOabB+9tthPK1ZIyMHpVFSbW
fB5H9KtaqwDaKsTx5HmJyDyar1adyQqeBQqmV+AOlRIpZgB3p8x8yVYY+FFJ9gQ3/XybpCFQcZ/p
ViaJZY12sFVe/bFEkCvEqqQMd/Wq5LNtgiOQOpHep32KHb2dRDFyBwT61NFHHBgsw3+pNSQxLEuB
17n1qC/HCH60k7uyEWPNj/vr+dUrmQvKR2XgVBSirULagLU0EDS/MThfX1ptvH5koXt1NaQAAwOB
SnK2iAiSKOH5vTuarzSeY3sOlOuXJkK9hTYArSAMM0krasQeWxi3gcUkUhjOR0PUVdLIgCsQM8AV
DJbZOUOPakpX3AW5TzYgyckcj3qhWnChSPa1Rz2qv8yfK36GiMraAVIHWOQMwJArQWeMgYdfxNUG
glXOUP4UzY/dWH4VTSkBpNNGOrr9M0R/616z7dd8yD3zWhH/AK16zlGwDp/9XUdST/6umY4B9aSE
xjDByKnjbcue9RHkUsB+bFN6oEyV13LjvTYW/hPUU+mSJn5l6ipXYCWkpkcm7g8GpKWwCBQOgphQ
qdyflUlFFwK5+eT5uKeYRjg801QHkY9qewaMZDZHoapvsAyMKThgQanAA6DFQKfm3uDiphIp70pX
AfRTDIO2KFkB64FKwXHMobqKgZQW2oKmMi+tQg7WLKCR71SuA/yR6mkQ7GYAE04KzjJbAPYUijbL
jsaAHKhbl/yqQqCckUClqLgFFFRSP/CvWhK4BId5CLUqjaAB2psSbRnuafQ30AZI+1eOtQgZ5NEp
3Px24p1WtES2HY1Jb/dP1pmPlNPt/un61LGths3+sX6UjAMCD0pZv9Yv0oIwcUIGVuYZQRWgrBlD
DoapzrlM9xUlk+Y9v92nLVXBCXsRZQ6/eX0qS2mEqZ6MOCKmqlPE0L+bD07j0pLVWAu0hAPWo4Jl
lXI4PcelS1OwDSispUgEGoNklv8A6vLx/wB3uKs0kjbY2PoKEwM+CNZ3bc2CTkD1p89psTchLEdR
S2sAkiJbIOeCKWV5bc7d4fcOM9RWt3fRgFrHDIM7TuHUE1cUBRhQAPaqNsywMfNDKx45HFWhcRH/
AJaCpkncCWlFQ+ep6FfzpRPHjlwPxqLMAlhiYFnUD1PSqUcImlIjBEY7nmrUs8LIVLZB9KqxSyQ/
KBw3TcKuN7ATSWaKjNvPAzTbWWQRlIkJbPU9BUv2dnwZpC3sOlJp52+ZGfvA0X07gSxW+1i8h3SH
vUwUA9KWis22wFoJABJ6CkJAGScAVSmla4fy4R8vc+tEVcAH+l3Gf+WaVepkMaxIFX8T608nAyab
d9gK13Lj5F69zUcMWMM3X0pq/vJiT65qxVbKxDYj/dqwv3R9KgcfJkn6e9Tr90fSoZS2I0/4+G+l
R3o+VT71In/Hw30pLv8A1P4iiO6GyjWhbx+WnP3j1qrbKGlGeg5q9V1H0EFVdRH7pD6GrVDoHQq3
Q1nF2dwMaipZ4HhPPK9jUVdKd9gCiiigBVVnOFBJ9qnht5t4YLjH97ipdOjJZpOw4q/WU52dkBlz
TOxZcbR0IqCrl/GqkOCAx6j1qnWkbNaAFFFFAgqxBO4KpjcCcAVXq9p0anLkgsOg9Pepk0lqBHPb
y+YzbMgntzUDqyHDAg+hrZqhqCHeH7YxUwnd2YypRRRWggpaSp4IGm5GAoPJobtuBZ04fu3Pqasz
J5iFc4oiQRxhV6Cn1zN3dxmWQQcEYNWrEffP0qO7XbLn+9UtiPlc+pxWkneJJJN/rFqZ/uN9Khm/
1i1M/wBxvpWRRSNAoJ5oFaol7jh1FSVFUo5FSyWVJBh2HvTaluB8+fUVFWi2GFFFFMBRRQKKACin
ohfoOPWrEcSrz1PrSbsIijhJ5fgelWAABgdKWmM3pWbbYD6hkh7p+VPVsdaeDnpRqgKRBBweDRVx
0VxyOfWq8kTL05HrVKVxkdFFFUAUtJS0AFFFFAE9qPvH8KnboajgXEY9+adJ0rJ6snqMooopjJbb
/WfhU83+raoLU5fj0NTzf6tqze5RkRyNFIWQ81qwyLPFuHHt6VkyKUchhg1Pp8myfaejcfjWs43V
xF0jBxSU+Ucg0ys0SwqWI/LUVKpI6UmrgnYnpRUQf1FPVwe9S0VcdRRRUjCiiigBRQwDKVPQjFVL
rUbO0OLi4jRvQnn8qxLzxdBGSLSBpf8Aac7R/jW9PD1anwoDoLSDyUIJySaLm7t7UZuJ44h/tsBX
Htf67qfzQK0UR6eWNo/M8mnReG5ZT5l7dfOeoX5j+ZrqWC1vVl9xEqkY7s1LzxXZRHFukk59QNo/
Ws1td1e+3Cyt9iHuqZI/E8VpW+k2FsBthDsP4pPmNWzIFGFAAHYVvGlRh8Mb+phLELojx3W4poNa
u47kkziTL5OTkgN1/Gpqm8Zf8jPeN/eKH/xxahr67BO9NPyR7lN81OL8kFFFFdpZv6LqUMdutvOR
GUzhieDk5/DrWwk0TjKyIR7MK4imTMI4y2AT2qJJLUhwuaHjHVhg2kRVkADOwPf0r0D4V+FBpFkN
Vvk/4mN2nCsuDDGedv1PGfwrz/4eaF/b/iWN543On2Z86Qj7rOCCqH69foMd697DV51SfMzopwsi
/plnLqF5HbwfebqT0Udya9S0+1isbVLe3GI09ep9zWB4P00WVj9olH7+cA8j7q9h/WujDVkalXXL
v7Lp0hDYkf5F/Gs67A0/QY7SPIubjGR35xn/AAqS9xea9bQbQ0cA3vn3/wAimkvf66zqP3VoCvI6
t/8Ar/lSEW7S0EFqkTMQqjke/epSV2lI1znjjpUoQMu6Rsj07Um7tEuR69qYyrLKkVrIbg4VOtQa
KBb2lxq92W8wqwQMcZHYD6kYqLU4pLu+gsEfHmDc7Y6D/Iq3q2bu/tdKiUeSu2SQg9FHb8v50hBp
Gy3gu9c1SWKJGQyM7cLGg6nP4V8j/FzxrP4/8YNPFtOm2jPBpyBNp8skZdvUsVB9gAPXPrf7Tfjd
rDT7fwlo88aNdxsdRCcskOAFjx0AfLZ74XHfI8B0i32qZmHLfd+laRVlcl6uyL9pCttCI157k+pq
eowfWnA+lBpYfmjNNzRmgB2aQmm5NITQApOaaTQTTScUAZWtaHa6oN8gKTgYEi/19a53QtW1v4e+
I47/AE6TZIBtOcmOdD/Cw7/TsRXak1Vv7SC+t2huUDoeRnsfUUmk1ZjTtqj6O+F/xD0zx5pAmtit
vqUQAubNmyyH1X1U9j+ddwK+BrS51bwR4hg1DS7hoZ4mJilHR17qw7g9xX2N8LPHdn488OLfW6+T
eQkR3duTkxvjqPVT1B/DqDXm16Hs/ejsdtKrz6Pc7QU6milFcxuOBpwpgpwpiHg0tMFOBpgOBp4p
lKDTEPBpaYDTgaYjK8V3Bt/D94w6soT/AL6OP61n6LD5GlWsfQ7Ax+p5P86d49kI0aOJf+W0yofy
J/oKsoMIo9AK+bzid6qj2R6WHVqPqx1cnbMHv9QYdDMf5murJ2gn0Ga47SuVnc/xSGscsX74uf8A
Dl8jvfDn/ILT/eb+dS65GZdIulHXYT+XNN0VPL0yAHgkbvzq3NGJYZI2OFdSpx7jFfVLY8vrcy/C
t15+mCMjDQnZ9R1rZzXnkVxcaTfyiF8NGxQgjhgPUVrDxXJt5tE3evmHH5YqIzSVmXKDbujrM0ma
4yXxReN9yOBB/ukn+dU5dd1GT/l5Zf8AcAFHtECps7HV737FaF1wZG+VQf51xc065LyyLk8ks1cx
req3d7dEPcyuifKMt+dch4v1caXpTsr/AOlSgpDnrnufwzUpupJRiU0qcXKR3y+KNBad4V1exM6M
UaMTLuBBwRjrUkmvWI/1btL/ALq/418zLE824/e55z3qRPtUQxG8yD/Zcj+Rr0XlresX+B58cw7x
PdfFPjePStJnlgjQXRG2ASNkFvcDsOteFoXuruWeYlnkdpHY92JyT+ZprQzysWfczertk1AyXked
oYD/AGTXdg8H7Lc5sRXdZ9jVorDNzcA4Mjg+ho+1T/8APV/zr07nNym5RWH9qn/56t+dOF5OP+Wn
5ii4cp0mmwR3N4kcrbUPvjPtXXxxrFGqRqFVRgAV5euoTj+6fwq7F4hvY1ADtgejUmrkyg2ei0Vw
0Hiq5QjzBuHuAf8ACtnT/FFpcOEuCICejE8H/CpsZuDR0FFRxTRzDMUiv9DmpKRIUUUUAFFFFABR
RRTAKie3hf78MbfVQalooApvptm4OYEH04qH+xbP+7J/31WlS09R3ZkvoVqfumRfxzUf9hhDmC6k
Q+v/AOqtqjFGoczMqOyvovu3+7HZ0zn9aeV1QH5XtWHuCK0sUu33o1C5nCfUF+/Zo/8AuSD+tKL2
YH95Y3C/7uGrQ2H1pfLNIV0VFu4z95Jk/wB6Nh/Sn/aIc481M+man2N6U1h2YfnQGggYHoQfoaWm
7F7KB9BTqQBUsc8sZ+Vz9DzUVFO9hFwahOP7v5UVTop8z7i5UV4k8tduSRmn1GGNPzxk8V8IyB1F
HXpRUgFFFQy3CpwPmPt0oSbAmJAGSQBTEnR22gnPvVGSRpD8x/CpLaMu4J+6OavkstQL1FFFQBFe
NthxnknFJaxgQ8jO7rUd8fnUe2atqNqgegxVPSIFO3/d3JTPHIq6Ko3XyXAYexq+KJ9wCmySLGuW
NOqC7jLoCvVe1St9QJI5UkHyn8KfWUCQcjgircVz2k/MVTh2AtUtNVgwypBp1QAUUUZGcZGaACmx
RiMHkkk5JNDE5oDHvTE2SVBIc1NnI4qF+lJATjoKrM+1jkdTVkdBVOb734mnHcCccjilqOD/AFf4
1KFJoehIlApSMUgoAdk0lFNkJC5XrQA6iq/mMO9SJIDweDTswJRUc65XI7VIKGGQR60kBTpRQeDQ
K0GPiXdIoPSr9VbT75+lWqym9QRSnXbIfQ81HVi8HKn8Kr1pF3QmFWIVwnueagUZIFW6UmIBS0gq
N5QMheT61CVwJaKreY571PGSUBbrTasBIGOOtJQKKkAopyrmgqRQA0kAZNNibe4OO9JN9z8aS2+8
PrTtpcaLb/cb6VXgfE7KehGasP8Acb6VnSMVmyOopRV9BmlRTEkVo1c/KD61HJdRr0yx9qlJgT0V
DbO8uXbhegAqSV9kbN6Ci2tgGTzrFx1b0qqfOuSPl4HfGKdbReaTJJyM/malnnwdsfbqataaIQsC
mBWErjB6DOailKE5TIqOimlrcRKh8uJpD1PyrSwQlrdiCNz9DTJQS8cI6Dr9al3SLchAD5Y46cYp
MaIzut4ihb52PGOwqxaxeWmSPnPWoI/39yWYZVavCpk+gyrLdhSQqncPWq8s7yLhsY+lOvEKzFuz
c1BVxirXQgpavWsIRQzD5z+lR3pUsoH3h1o5ruwC2AG9z3xVys+zcJNz0IxWhWdTcEQzQ7zuXANE
EOw7mIz2xU1FTzO1gsU745kUegplvOYzhiSn8qZM++Rm7GmVslpZga1OqtZPuiwTypx+FWaxas7A
FVr9iIgAepqzVe9QvECoyVOaI7iIbADzWPoKtR/616zUdkbcpwav2rFvmbqRVzXUCWf/AFdRxHIK
n6ipJ/8AV1Ahw4+tQtgJKaDtcGntwxqNutUiSzSioRN6j8qesinvj61FmUDxhuRwaaHZDhxketS0
tF+4iMSoe+PwprybhtTOTTzGp7UqqF6CjQBI02r796a/zyBew61LUQ4nOe9C7jJqTav90flS0VIE
TIAelKiAnkcVLRVXFYTav90flSkAjB6UUUhkUJwSh7U6VSQCOopkfMzEdKmoejEMSUYw3BpTKo75
+lKUVuooEag9KNAI9zyHC8CpEQL9fWn0UXAUUhOATSbgOpFMeRSpA5zUpXAiXls0+mp0NSL1z6c1
oyRshxhR261Jb/dP1qAnJJqe3+6frSlsUtiO66/hRC2+Ieq8Gi66/hUVq3zMvqKFsJkxGVI9qisj
iUj1FTCqpPlT5A6GmtVYSNKiqwul7qRUqSow4YfjUOLQyGW2IbfAdrenSmpdMhKzqcjuKuUjKGGG
AI96fN3AhF3DjO4/TBqGSVrlgkQITuTU32WEnOz9anRVQYUAD2ovFbAIihECjoBVSAGe5Z35Ven9
KunkVUsGADxn7wOfrQtmwLZAIwRke9RmGMjHlr+VSUVNwKpgTPKVLHBGBkoPxqWlFNyYWGrGinKo
oPsKjuovMiOPvDkVNTZWCxsWOBipTdwI7N98AyckcGorhGhlE0Q4707TwRCSe5q0Kpu0mBAl3Ew5
bafcUj3cYztyx+lOa1iY5K/kcU6OCOM5VRn1NHugVgs10ct8kf8AOrkUaxLhBj39afRScr6AFRXJ
xC3vxTmlRerCq1zMsgAXOKIp3BiW68FvWp1GTio4RiMU9ztic+2Kp6sjqQO++b2HAq8v3R9KzY/v
itJfuj6UpqxXQgMixzsXOAeKdM6SQNtZT361VvvvfjVWnGF9RsvWX+sb6VcrKt5zE+cZHQitON1k
QMp4NKone4h1OptOrMBksayoVboaoPZyjO3DD681okgDJOBUDXSA4AJq4uS2ApC2mJ+4fxNTRWTF
v3pAHoKlF3zynHsamimSTocH0NVKUwHooRQqjAFOoorEDLvHLzsD0XgCoKnvEKTsezcioK6o7AFF
FFAgqezkKTqOzcGoKsWUZedT2Xk0pbAalIyh1wwBHvS0yWVYx8x59K5kMqS2Rz+6Ix6GojaTZ+5n
8RVo3Yzwmfqacl0pwGBFa800IrJZSEjcQo+vNX4o1jQKo4pVIPIII9qdWcpN7jCiimuwRSzHAFSg
K970T8afbskcALsBnnk1SubgzEYGFHT1qCt1C6sxGm0qSSDY2cdasv8Acb6VmWX3j9RWm/3G+lZS
VnYZmyNtmX0IwalFV7n74+lSQPuXB6itbaCe5LUifdqOlVsVLJHOgfGaia3P8JH41MHFOyPWldoR
VMLjtn6Gk8p/7pq5RT52FysIG74FSrEo68n3p9IWApczYDqQsB9aYWJptFgsOLE0U2nUxhQDjpRR
TAkVx3p1Q0oYjpUtCHNEjdsfSoWgYfdIIqcOO/FOzmi7QFMowPKmgKx/hP5Vcp1PmAqCFz2x9akW
D+8fyqekLAd6XMwADAAHbimSH5qUv6CmZyc0ktQSCmyNsUmnVVnfc2B0FUlcEXNP6D6H+dWpv9W1
VdP6L9D/ADq1N/q2rOXxFFG6AlgEoHzKdpqpG2x1Ydjmr1rhi8TdGFUK1j2BG0+GjyPrUVOtvmtU
x/dxWXr+pDTLcYAad/uKeg9zWdODnLkjuS0aJIHUgfWlFYWjeDdY8R2pv5rmOBWYhBPuy3uABwKb
qmieIfC4MhP2i0HJkjy6D6jqK29nRc/ZRqLn7GjoVFHntodBRXPw+KLU24aWKQS9CijOfcGqr+IL
69kKabaNwf4VMjD644FUsJVb1VjKx1YcqOuB71Tu9dsLXiSYM/8AcjG4/wCFYb6Brd/CZr+QQx9l
kbrn/ZFWLXwzaRDNy7zN6D5R+nP61pHDUd5Sv6f5ilNU/iIrvxW7kpYW5J/vPz+gqsU1/VPmZ5IY
z0G7y1/Icn9a6S3t7e0XFvEkf0HNPaWto8kP4cfvMJYh9EYNp4ZjX5r2dpGPUJwPzrTt9OsbUDyr
ePcOjMNx/M1K81QvL71blOW7MJVZPdll5aheaqry1C8vvTjTMnItPNULze9VXm96geato0xXOE8U
vv8AEV2fQqP/AB0UlVdQl+1apcSLyHlOPpnAq1X02DVoW9D6qnHlpxi+iQUUUV1lhWbqtwEVjnhR
Wi52ozegzU/gXTl1fxdbJMheCAGeTjjI6Z/HFc+InZWKirs9Z8A6J/YHhyC3kwbqX99ORz8x7A9w
BgV3Xhix/tDVEDDMMXzyZ6Edh+JrDBr0DwbaC20sTH/WXB3E+w6CvObOg6dTgcdKcXCqWPQDNQK1
VNZmMdgyr96QhB+NICLTJ2jtL3UHGWc5XPt/9c/pV3w/C8NoGlzvnPmc1nXsbJaWenxdZDyf5/zr
oY0xFGiLtVAAM+woQhu1VkYP0HIzSSShUZhhUQbiT2FPkQLhs5YHnPes/wAQzmOzVIwTJPmNce/W
mMg0No1F5qdySSGIUkdF9vzxVOTVINA8M6z4n1Hc5t4ZZsFgC4UZCLnuxAUD1wKtatlLG00yBP3k
oHHpj/6+fyrx/wDae8UwwWNl4Ot4j5jrHezP2VAWCAe5ZW/KiKu7Et2R4bqupXnifxFearqZQ3d5
J5s/ljCjgAAD0AAFXkwoAUYA4AFUdNiEcO89X5/CrtaMcVZEgNLUeaUGkUSZNGTUe6l3UAPyaSmZ
pM0AOLU0mkzSE0AKaaTmgnNNJoAq6nZRX9o8EyjB+62OVPqKyfhh4nuPAPj23uJXK2rP9nu1ydrR
E/ewOuPvDrW8TXIeN7bElvcqBhgY2Pv1H9aUoqSsxptO6PvGN1kRXQhkYZBHcU8V5v8As+6s+q/C
nRjNIZJrXfaMSAMBHOwceiFB+FejivGlHlk4npRd0mOFOFMpwpFDhTgawfFfirR/CmnNe65ex20Y
GVUnLyeyr1Jrw/xD+0vErbPDmgO4wD51/KFwecjYmfbnd+FaQpSn8KM5VIx3Z9Hg06vjm4/aG8by
Slom0yFT0RbXIH5kmoB8ffHYk8z7XZ49Pso21t9VmZ/WIH2aDTga+YvBf7Sc8KND4x0s3PJK3NgA
rdsKY2IB78hh9O9eweGPix4M8RbEs9ahhuHIUQXX7l8nsN3X8MiolRnDdFxqRlszo/GFm95or+Up
aWFhKoHtwf0Jqvpd9FfWqSRn5gMMp6g1t2t3b3ak2s8M4HUxOHx+VY+oeGLS4mae1kktJyckx8g/
h/hXi5hgJV3zw3O/D14qPJP7xb+dLezmkkOAFP41y2lKVswWGNxLVLd6RPDNjUJZZdp+UnO0/Q1a
tbd53WKBCe3HQVjgMFOjJynua1asOTli7na2X/Hnb/8AXNf5VNmq5kis7WP7RNHGiKF3uwUcD3+l
ZGq+MvDmlLnUNb0+H0BmUk/TFe6k3sea2luWda0aPUP3kbCOcDGccN9ax4/C9yT+8niUe2TXN6p8
cfCdmWFr/aGoMpwRb2+38jIVB/A1zOq/tBDpo/h1yCPv3tyEI/4CgbP/AH0Kv6rOT2I+tQitz1SL
wtGP9bcuf91cUX+h2FnZSSnzWYDA+bvXz/qHxw8WyuWik02zQ8bVg3fqxNYuo6/488SBRcS65NAx
ynlQPHF+DKoH61osDLrYyeOXS57a9tpdpGZJvIRV6tK/A/M14J8QNbTW/EUz2oQWNuTFBsUAEd24
9SOvoBWx4e+EnivxHd/LZwwSEbmku5QGwMc8ZJ612Xhz9nvUdUeU3mv2ltHE+xhFbtI36lRXRQw0
aL5r3ZhXxM6y5bWR42lwkcYVVJPemNdv22ivpaT9nfRNPtPNF3qGqSKMuksgiz/uCMA/gSfrUWl+
E9C0lgbPS7dJBxvddz/iTzXc60rWRzKmz5xguSWxIeD0NW69G+JngFSJ9Z0ONt/37i0RS27tuQDv
6gdevXOfLYJyh2SZx057VtSrdJESjYtOiOMOqt9RmoJLGB+ilT7GrSAuyqoyWOAPU1LPbTwH99Ey
+5HFdJNzHfTHJ/csG9iKryWN1H96CQj1C5rq9J1FbIsJItysc7l+8P8A61dFa3sFyP3MgJ/ung/l
SbsJzaPKyjKcMrA+hFJXq89rBcDE0St7kc1mXXh2zmH7sGM+/wAwpXBVV1PO6mt7d53AUEL3b0rr
JfDbxfNEkMn04P61Ult5YM+ZE6Aeq8VRXOnsRJlMbSQR3q5BqV3CflmZx6Od386p0UEm/a66pGLm
Mg/3k/wrXt54riMPC4ZT6VxNSQTSQSB4WKsO4pOJLguh29FZ2k6iL1SjgLOoyQOhHrWjUGbVgooo
oAKKKKACiiigBc0ZpKKdwHZpQRTKKLgSAj1p4I9agop8wrFgEetLuX+Iiq1FHMFh8m3PyfjTKKKk
YUUUUAFFFFAFYDNPKhhgjINIMDvSg18MzJELW7KP3UjD2zUe256Zb86uUUc7AomKdvvBj9WpBbyk
/dx+NX6KfOwK8dqBguc+1WQABgAAe1AoqW29wCiiikBVvl+ZW9sVaRt6Bh3pJoxIhU/hVMLPH8oB
wfSq3QC3H7y5CjtxV8VVtoSrb369hVkUpPoAtFFFSBFLAknP3T6iq72zj7uGq7RTUmgKAgmByFIP
sRUgS5HdvxardLT52BVSKZvvyEfjU8USxjjknqTT6KTk2A1h3ptSZFNK+lCJaBTg0x6WiToDQCJh
0FU5vvfiauDoKqSKWcAepojuMmtlwgJ+tTUnAHsKY8qjuKW7AVzzimimeYpPWnjnpTtYkWiiigBC
oPUA0xogenFSUUXAjjYg7H69qlpjruXjr2pynKg0MCvLxIaaKkn+/wDhUYq0BYtD87D2q1VCNyjh
hVrz48ZyfyqJp3Ghl4fuj8arU+V/MfP5UyrirIQ+H/WCrNQW4+YmpXOFJHWpluIY5Lnav405YgOv
NOjXauO/enUr9gEAA6ACloopAKKKBQSB1oAeh7U+q3mqD1qVJVbuKlpjQy5X5MjpmmW33h9assAy
kHoarQDD4PrTT0sNFt/uN9KoiPzLjHbqavP9xvpUEQCb5D9BSi7AQ3rDeqDGFFV/pVgQyTMXb5Qf
WnNFDDgsxJHatE0lYRbjUKiqOgFQ3v8AqPxFSRSpIPlPPpROu+JhjJxWa0eoxlr/AMe6496qVPYu
NpQ9c5pJ4ShJUErVLRsTIqdGNzqPem1JCdpZvRSap7CEikHmySsM4HFStPvtnONp6U22KRwFpOjH
FNuivloIwAp54qXqxk9mm2HJ/i5qC6eRZCu87e2OKuIMIo9BVW7eNxgN849qmLvIZVySeaKQU4KT
0BP0FbCNXOVyp69Ky2yGO7rnmrVpIy4R1bHY4qS4t9/zJw3p61kvddmBRq5BdDGJTgjv61VdGQkM
pFNq2lIDSM8QGd61VuLjf8qcL6+tQKpY/KCfpVy2t9p3SdewqOWMdQFtYNo3OPm7A9qjvkCurD+L
rV0VVv8A7qeuTUxk3IBthne/pirhdAcFlB9M1lKWHCk8+lBVgOVIHuKtwu7iNeis61mKOFJ+U8c9
q0aylGwyKS3jfquD6jiiBQjFR0FS1HH/AK16LuwDp/8AV1X71Yn/ANXVanERO3OD6ikpqyEADANO
Dqeox9KLMloTA9KTbT8Kfun86MEdaLgMBZOhIqaOQNweDTKYwwcii1wuWqKZG25c9+9PqCgpsqbx
x1FOpaNgIVkKnDj8akDqehFKQD1FMMSk9xRowJaKi8kdmNL5I7k09BDjIo71GWaThRgetPWJR7/W
ngY6UXSAaihBgU6iipGKKWkFMlfaOOpoWogkkCnA5NRFmbuaRVzyafV6IlsaFpQopQCelO246kCl
cBAMdKXojH8KNyepNNdwVwBjnNPcBlWLf7p+tV6sW/3T9aJFLYjuuv4VXgOJk+uKsXXX8KqDg5oj
sDL3c0hUHqAfqKh+0t3VTT1njP3gVP50rNE2FaJD2x9KjaDj5T+dTqQ33WBopqTArq8kLc5x6HpV
uKRZFyOvcVGyhhgiq/zQyZH/AOuhpS9QTNClpqMGUEdDTqyGFVbiBg/mw8N3A71aopp2Aqx3ak4l
G01OkqP91gaHjR87lBqA2UZPVh7VXusC1QWVR8zAfU1V+xj/AJ6NSiyTu7k0rR7gPe6iUHDbj6Co
MSXTAt8sdWY7eNOi5PqealoulsAiKEUKowBThSUoqAFooqrdS/wKfrTSuAst1g4jwfeoP3snUsR7
mnwxYGW6+lTVpotiWyFbfjk/lT1hUdcmpQCelISq/eYD9aV2IBwMUy64iQeppTNEOm4/hUE0nmEY
GABxQk7jsNj++K0l+6PpWbH98VpL90fSlU3H0K0kQmlZSSMc8VDNZuvMfzD071bT/j4b6VLSUmhs
xaltpjFJnnaeoqe/hC4kXjsRVOtk1JCNT7THjOT+VNa7A+6pP1qK1iWWLJJyODTzaH+F/wAxWVop
gQyytIfmPHpTBUxtZB0wfxo+zyD+H9atNCIqAcHI60/yZP7ho8mT+4ad0Batp94CN97sfWrFUFt5
CRxj8av1jNK+g0Q3MImjxxuHQ1lspVirAgjtW1UcsSSjDj8e9OE7aAZFFaIsY8j5mNKbGMkkFh7Z
q/aIRnKpYgKCSe1atrD5MeDjcepp0MKRD5Rz6nrUlZznfRDIbibYNq/e/lVIkk5JyanlgkLswGQT
61H5Mn9w1cbJCZHRUnkyf3DThbyH+H9ad0IZHI0Zyp/CrKXY/iXH0qIW0hPQD8aetof4nH4CpfK9
x6kv2mPHf8qpXU5lfjIQdBU9xAscLMCSRVGnCK3QBVmC0eTBb5V/nS2MIdi7Dhenua0RROdtEBVW
AQuACTn1q2/3G+lQzf6xamf7jfSsW77jMq5++PpUSsVIIqW5++PpUNdEdgZcjcOOOvcU+qKsVOQa
sxzBuDwaTjYloloooqRACR0NLk+ppKKQC0UCimAUUUUAFOptOoAKKKKACiiigApRSUopALk+poyf
U0lFIAJJ6miiigAopCQBknFQSTZ4Xp600rgOnl6qv4moKKKtKwzQ0/ov0P8AOrU3+raqun9F+h/n
U9zLGkZDyIp/2mArBq8gKdu22dfc4qG7TZcOB0zkVRm1izhkx525hz8oJ/Wqt1rz305TTbCWWQDJ
4Ltj/dXp9a644eo3e2gka4vGtoSxYCNRk5HSs3w1ZSeI/EEl1dhmtITuIPIzkbUwfbk/T3qtJp2v
X1uzyWzww8fLIPLzn2PNdn4Jt47LSWhQqZt5MpB/i6fpjFXUtQpSlFpyemnQqNudRZ3Wl4+yADAw
SMCmavcrBasCeWHP071SsbwW5cOCVbnj1rO1y5aW3mkbjoAPQZFfN08I54i8trnqVMUoUPd3sZFn
oWkzyvdvYW5ZyRsKAoP+A9M1sQQw20Qjt4o4Yx0SNQoH4CszRruJ7V8SIcOR19hTr3VIoVYIweTs
B0H1r16kKk5uOrPLhVjGmpSGazcqZEjVvu5LfWslparzXBd2Zjlicmq7S+9ejSockVE8yrV55ORa
eX3qF5aqvN71C81dMaZjctPL71A83vVV5qgeb3rWNMVy283vUDze9VJJwO9VpLkc45rRQCMZS+FF
15veqd9eCC3kkJ+6OPrS29teXjqsMLkN0bBA/OqPi3T5tN06L7U6eZM+FQHJwOSc/l+dVCUHNQvq
zsoYNzmlNnM2i7psntzV6q9kuELdyasV9HRjaJ9EwooorUCtfvsi/U16F8IrBrbRrq9miVZLubKN
3MYAAH/fW4/jXmeol5JhDEMu5EaAdyeg/M17xpUAs9NtbYKF8qJUIHQEDmvOxEryNaaNa3UzTxxL
952CD6k4r1a3VYYkjjGEQBQPpXlmjui6paNK21BKpJ9OeP1r05JAQCCCD6VzM0LqtVC8P2jUreH+
FPnarCtVOzfff3M/ZRtH+fwpAXbNTca88pyY7dQB9T/k1vYZv9kfrWP4ZiZrS4nb700nH0H/AOs1
sDc45OB7VSGhpCJweT+ZrEm8y712KLBEVqQ5579R/StuSRYYnbGdqljiuesJJFtr7UHIDy5Zc9O+
P14oYMsWLG81ua6YgQ24MYJ/H/69fGvjXWrvxT421PUr1izyzmNFDErHEhKqq57ADPuST3r6S+K+
p3Hh74Savc28hS7uykQIbay+a6oSvuASfwr5Y05D5jOegGKqG1yHq7GmMAYHSlFMBpQaZoPzS5FM
zS5oAfRTKM0APpMim0ZoAXNJSZpCaAFJppNITTSaAFJrE8WoH0WRj1RlYfnj+tbBPrWT4ny2i3AH
+yf/AB4UAevfspapFD4Z1e0uJiuLxWQNnAygB+nIr39TkDFfKP7NsxMuuQfwhY3/ABJI/pX0h4au
S3mW7vnGGQH9f6V4+IdqrR6VFXppnQCvMPjF8WbLwLA1hYqt14gkQMkLK2yIHo7nGCOD8oOeOcZz
WX8Z/jFb+E0bSfDzQ3euOPnfO6O1UjqcdXPYdup7A/NWk6Re+ILxr3U553Rzl5pWLSS/ieT9a3oY
fm96WxjVrcvux3HTvrfjfWJr7Ubqa4ZnO+WWQsIgSTtUE5C+gHSuq0zwzptkPmhW4fpumAb9OlaV
pBFawJDAgSNAAAKsA16KVtjj3I4LGztzugtLeI+qRqv8hVrCkEEAg9QRTAadQBjan4Y0y+APkLbu
BgNAAv6Dg1z9/wCBmABsLoMe6zDH6iu5pCaAPN7XR/E2lyM2ntc27A5321yEJ9+GBqzL4x8eQnEv
iPxPHj+9fTj/ANmruyaax4pNJ7ju0ZGifHTxzpUfly38OooD0vovMP5gg/rXT6b+0p4ghGL3RtLm
/wCuO6IfqWrHeCE9YoyfdRVPULe3aMI0ERB5+4Kh0YPoUqkl1Nnxt8XLj4jaPDps2jRWEdtcrdGR
LgybiEdNuCo4+cn8K3vh38GNR8W+GYPEC6lZWGlymUhRG0krCN2RhjgKcocHJ7cdq8weCG3YrBEs
a9SFGM19q/DDTT4f+CujW0qGOU2HnSo3VZJiZGH/AH05rSKUI2iYyfPK8jy62+Amkporancaxqcm
0gCHEYVgWA6hc9/WtTSPhz4V0oMlzo0N7K3KG8UTg/g3Ar1PWT5Hhawt1/5ahT+mf61lIFuYvKlU
pIvbv9RUOTCyMTSfDGh6Mz3dto+mWczck29pHHt9MbRWnFEZm86cBYhyiHp9TT0Qi4C3jcIMp6H3
omcTyKHDLbZ+8B94/wCFIZoeE5UOvExrhWjYDjGehz+la/hxfK1bWIs8CRSB9d1Y2iRrbeIrUJ9x
93H1U1sad+58WX8Z/wCWibv5f/XpoEdDXM+KfDq3yNdWShbpeWUDAk/+vXTZozVlHjTKyMVYFWBw
QRgivMfiT4AW+jfUvD9sovtwMlrEqIJsn5n5wN3OffB6nFfRXi3QBeI15ZqBcqMugH+sH+NcA25W
IYEEHBB7UbCaTR8r28728u1sqUbHurA/0Nd9ZzJe2SSFVKuOV6j6V0fxK8C/2sTqmkALeogWSAYC
yqMnIGPv8/jjFeXaLqUuk3LQXcciRkgOkisrR987TyOvTFdNOr0ZzVIM6O70a3mfdGfJOOigY/Ks
46Hdq4KPHx0O4g/yroYJo54lkiYMjDIIqSulSMeZojtkeOCNJX3uqgM3qakoopEhQRkYPNFNdwmC
2cHvigCvLYWkikNbxDPdVAP51Ql0GI5McrqccAjIrXV1YkKykjsDTqd2O7Ry02jXaH5FWQeqsB/O
qc1vNAxWaJ0PuOPzrtaCARgjIp8xXOzh4pXikDxOVYdwcVvWmuo3y3SbD/eXkVqSWsEi7XhjI/3R
VOTRbN/uq6H/AGWoumDknuWre9trg4hmVj6dD+RqxWP/AGBb9pZs/Uf4U3+yLlGBhv346Bs/40rI
Vl3NqistY9Vi/wCWsEo96eJdUB5t7cj2fH9aLCsaNFVVnuMZktCP9yQN/hThdAffhmX/AIBn+VIV
ixRVX7dFnBWYf9sm/wAKmWaNujfoaAsSUUZ4zSblHVl/OgBaKTcv94fnS0AFFFFABRS4PoaMH0NA
CUUUUAFFFFAFTJ/umgE+hqTevrSh19a+GuZWGhzjlTRvP9007evrRvX1pDE3n+6aN5/umnb19aN6
+tIBvmH+6aXzD/dNLvX1pQ6+tADfMP8AdNHmH+6ad5i+tHmL60CE8w/3TR5h/uml3r607zF9aBjP
MP8AdNHmH+6af5i+tHmL60AN8w/3TR5h/umnCRfWl8xfWgQzzD/dNHmH+6af5i+tHmL60gGeYf7p
pfMP9007evrRvX1oAb5h/umkLEn7pqQOvrR5i+tAEeT6UZPoak3r60u9fWncViPce6k0jEkYCkVL
5i+tKHUnrSAcOgquMhicHrVim719aAK7h36nj0pnlNVzzF9aPMX1p8zCxU8pqfGGTrkj6VY8xfWj
zF9aOZhYiyf7ppcn+6ak3r60b19aVwsR5PoaMn0NSb19aUOvrSuFiPJ9DRk/3TUnmL60eYvrRcLE
EiFyDgim+Uff8qteYvrR5i+tPmYWKvlH3/Kjyj7/AJVb8xfWgSL60czCxU8o+/5UeUff8queYvrR
5i+tHMxFaNCmeCc1Jk+hqXzF9aPMX1pXbCxECf7poyf7pqUSL60vmL60rhYhyf7ppcn+6al8xfWj
evrRcLEeT/dNRyKzkdcVZ8xfWjzF9aE2Fip5bf5FHlN/kVb8xfWjzF9afMwIEDp0Jx6Yp65MinBq
TzF9acrqTgHmk2Ar/cb6VErFVxtzUxIAyelN8xfWkIru0zdDtHsKh8hieTz9KveYvrS+YvrTUmth
lAQMDkEg/Sp0aZTydw9xVjzF9aPMX1ocmwKjxMZd6ZU9asCRsDK8+1P8xfWjzF9aTdwIWCt1jIPt
UZjOGC55GORVsSL60eYvrRzNAVfLzCqEHIOcgUPET5YAOE9R1q15i+tHmL60czAhmLyLtX5QevFV
/s7ev6Vf8xfWjzF9aFJrYClHBhsuCw9BVpX2jCpge1PEi+tL5i+tDbe4DPMP900vmH+6ad5i+tHm
L61IDPMP9w007D1hH/fNSiRfWl8xPWmBGHwMBMD2pfMP900/zF9aPMX1pAN8w/3TTJNshBdCcVMJ
F9aPMX1o2ERIQgwseKV33KVKHBqTzF9aPMX1oAofZ2/yKuCRsDKnNP8AMX1o8xfWm23uA3zT/dNL
FkuxIIzThIvrTlYN0NSwGz/6uq9WzjvSZHqKE7CKuKWrOR7UuV9qfMBVp6ORw3IqfK+opcj1FHMB
BuFISCKsZHtS5X2pXFZFaNtje1SecPQ1Llfaj5fahu4yLzR6Gl84ehqTj2pcr7UgIvOHoaPOHoal
yvtRlfagCPzh6Gjzh/dNSZX2oyvqKAI/OH900ecP7pqTK+opQV9qAIvOH900vmj0NSZX2oyvqKQE
fnD+6aiZtzZNWcr6ilBX1FNOwFfcKXcPep8r6ilyvqKLisiu0h6LwKZVvK+ooBX1FF7AVMUtW8r7
UZX2o52BUqxb/dP1p+V9qUY7UOVwILkZIHtVbyz61oHHfFJke1ClYCh5Z9aPLPrWgCPajK+1PnYF
DyyOhqdHbbh/mPY1YyvtRlfUUnK4EG4UyXDr79qtgr6ilyvtS5haFWBzGuDyO1Sicf3TUuV9qMr6
ihu4yPzh/dNHnD0NSZX1FLlfUUgIvOHoaPOHoalyvqKMr6igLkXnD0NL5w9DUmV9qMr6igCPzh6G
jzh6GpQV9RRlfakBH5w9DR5w9DUmV9qMr7UARmbg4HNVkQ79zHPeruV9qdlfamnbYW5W3ClDgHkE
1YyvtRlfai4WRSkaR+M4X0FM8s1oZX2oyvtTU2Bn+WaPLNaGV9qMr6ijnYFFEIbJq+v3R9KMr7Ut
TJ3AgLbJmOM9qd5w9DUmRntS5X1FICvLIJI2XHUVS8hvUVq5X1FGV9RVKTWwFO1/cqwPOTnirHnD
0NSZX1FGV9qlu+oEfnD0NHnD0NSZX2pQV9RQBH5w9DR5w9DUuV9qMr7UgIvPHoaPPH901LlfajK+
1AiPzh6Gjzh6GpMr7UZX2ouFyPzh6Gl88f3TUmV9qPl9qAI/PHoaPPHoakyvtRlfagCPzx6Gjzh6
GpQV9qMr7UARecPQ0ecPQ1LlfajK+1AyLzh6Gl84ehqTK+1OyvqKQipct5sW1RjnPNVfIb1FauV9
RRlfUVSm1ogK0DiOJVI5HWpBMPQ1LlfUUZX2qW7gQM+91wMVYf7p+lINvtTqAM6WFnYEZH4Uz7M3
+RWnkeopcj1H51Sm0Bl/ZX9f0oFq/r+lamR6ijI9RT9pIDOWGVejcemKlCtjkHP0q5keoo3D1FJz
YintPofyo2n0P5Vd3D1FG4eopczDQp7T6H8qNp9DVzI9RRkeoo5mGhU2t6H8qNp9D+VXNw9RRuHq
KXMwKe0+h/KlwfQ/lVvcPUUbh6inzMCptPofyo2t6H8qt5HqPzoyPUfnS5mLQqbT6H8qNp9D+VXN
w9RRuHqKOZgU9p9D+VLtPofyq3uHqKXI9R+dHMwKe0+h/KjafQ/lVzI9R+dGR6ijmYFPafQ/lTXS
Q/d4/CrwI9RVHVtVt9NiBlO6VgSkY/i/HtThzSfLFXYEZt5GOWJP4Ux4CilnYKo6luBWdbX+t6+x
j0WzYKpwzoc7fqx4rSh8BeIdTl26teR28Y5DFvN5/wB0ED9a3ko0f49RR8t39xpClOp8MblG4vrK
BCxuonP92M7ifyrNfXVPywwOznoCetd7o/w00+1lWTUbqS9ZT9wII4z9Rkn9a6zT9C0rTpPMsdPt
oJP7yIAa5amaYSlpBOf4L/P8DqhgKkvi0PH7K28VXsqx2tlexK/AZrcxoAe+5h/WtyH4ZajclZb/
AFSFZG5dQjOf++iR/KvVqK4qmeVn/BioeiudUMvpr4tTkbH4e6BbwhJ7eS6k7vJKw/RSK6TT7C00
63EFhbxW8Q52xrjmlmvYIjh5Bn0HNU5tYjU4ijLj1JxXFKWKxPxtteb0/wAjbmoUdrIi8SRGSAFR
yVIz+o/rXmlrqMmkavKzZMLsSy+oJzmu+vNQkuBhsKg5wK4PxhZmJFulOUL4PtmvfyqHLD2NXqeF
j5KdT2kDrY9RtpolkSeLaRn74qjrV/D/AGfMsciSSFflVWB5rjNIuswtETyhyPoatvNXdHAxhO99
jini5NOLRm6deiGZlkOFfqT2Nary+9YmqRwrEZFG1ye3eorXUhsCTHkcBvX616Lhze8jma5lzI2n
m96heaqUlyqrktxVSW+GflGR65xQoExhOfwo0Xm96ryXAHVgPqaZa2WoX43W8R2f3iQB+ZrTtfCc
sih7q7SNj1RV3H881E69Kn8UjojhJP4mYsl2M8ZNEcV5c4MFvMyk4BVCR+fSu2s9B062QAwpKw53
ycmtUBQABtAHQCuOpmSWkEdEcPTj0ucVbeGJpFVrm4WMnqoXcR+NbcGh6ZAFIg8x153SEn9OlbXy
+ooyvqK4amLq1N2bWRX3DGO1ea/FG4WTVrKEc+TCzZ/32/8AsBXqWV9RXkPxIbPiucdhFGB+VduU
LmxF+yf+X6nRhYrnuZUC7IlHfHNPoHSivu0rKx3BQTgE+lFR3DbImP4UN2VwI/D1vJqHirTIo9x8
u4SdyBnaEYOc+g4Az6kV7irV5Z8LlVtX1GUrkpEiqfTJOf5CvTFavJm9TeOxbVq6zwvrvl7LO8cB
OkbnAC+xrjVapVaoLPXhIApY9AM1SgfytMlbuxx/SuX0TxDi3+y3rc4wkpP6H/GumYf6LBGf4nGa
TEdXo0XkabboAc7cke55/rVzb82D0PNKoCqFQcAYoZTjJNWMzdeuPsunyKoO6X5Fx71jXaOmn2Vo
DgyEK355/maveJJg9xZWy8tv8w+w6f41TbNzrCLj5IOfx61LEzxD9qHUZ/7T8P6SrkWsVs9wy9nc
sFU/gFb/AL6ryCzUrAM9TzXRfF3XX8Q+P9UlDl4LaU2kI9AhwR/31urAU4ArXZWJjq2yUGnA1EDT
s0jQkzS5qPJo3UASZozTN1G6gQ/NIzBRliAPc1DLOE46t6VTd2c5Y5oGW3ulBwAT71E105+6AKr5
pM0AT/aZO+PypwuR3X8qqk00mgDQEit0INUNcG7Sbof7BNIGIOQcGmajLv0u6U/e8pvx4oA6r9m3
/kIa7/1yi/8AQmro/iz8Sv7BRtL8PXONXOC9xEVYW4zyOc/MemOwP0rx3wb4vuvCltqy6fEDc3sS
xpMW/wBTgn5gMcnmovD2jyancG9vmZoSxYljlpWzzk/Xqa5Hhueq5y2OlV+WmoR3H+HtDk1OVr3U
TI0TMWO8ndKTyTnrjnrXeRqqIqooVVGAoGABUagKoCjAAwBT1NdZzEoNPBqIGnA0ASA04NUeaXIo
AfupCabkUhNACk00mgn1ppOaAEJrPvH3SkdhxV5jgVlyNuYn1OaAG6Yiz+I9KhkGY5b63iYeqtKq
n9DX3T4rIt9GitoRhXZYwB6AdP0r4j8EWZ1Hx1oNqv3n1CFh/wABcN/7LX274nIaTTEPe6Xj2ons
Zx1uZ3icNHHpVuBuZE6fgB/SqbKlxH5inZKnc9VrQ8UtjVrJsbsITj8TVFYRdTeYF2x9D/tVm9yi
ERyXqr5g2xj26mnQMpBt5drAcA9j7VZfMp8qD5UHDMO3sKbNGm0W8SAsOf8Ad96AILZGttZsMtlP
MAU+gJxj9a27s+T4vtn6CWLH8x/SsK7d4p7XzeWjkBDeozW7rpWPW9IkP95gf0/xpoDoM0maZupN
1WMkzXH+LvD4kD31jGfM6yRIpJck/eFdZmkzQB48eDz1rg/iF4Gh1yOS/wBMVIdUGWc4P+kYXAU8
4B4AzXsfjDRBasb20UCFiA6AfdPr9DXLZNCBq+5806bqF1ol1LbXUUqKjESW7LtZW49eRXawTxXE
QkgkWSM9GU5Fdb4/8FQ+I4ftVoUg1SMfK+0YlH91v6Ht714/aXd54f1GS1vI3Xy2KyQMcYPqK6Kd
S2jOapTO3oqG0uYruBZoH3xt0NTV0nOFFFFAFeazhlk8wqVlAwHRip/SqUy6na/OkoukB5TYAcfh
1rVopjuY/wDbiowWe2ljbuD2/A1di1G0kQMLiJc9nYKf1qW4tobgDzo1fHTPase70Ijc1tJn0Rh/
WnoPRm6pDDKkEeopa5B1vNObBZ4gemDwf6VNb6xdRH52Eo/2h/hRyhydjqaKwk8QDjfbH3If/wCt
VxdZsiBmRlPoUNKzFys0aKghvLefiKZGPpnmp6QgooooAKWkop3AXFJtHpRRmgBQopQopuaXJp3Q
Dwo9KcAB2qLJ9aQknrRdCsWN6gdRTGl4wBUVQXN1BbDM8gX27/lRdhYnorGuddiQ4t4zL/tE7R/K
sq51O6nLZlKIf4V4FCiy1FnTNe2qsVa5hBHUbxRXGUU+UrkOw2j0pQme1PU5+tOr4O5zDfLWjy19
KfSEgdSBUjE2LRsWl3L/AHh+dL16UAN8taXy1pwooEN8tfSjy19KdRQAnlrSbEzjv9aju5di7V+8
f5VCtqzJuzgnsRVJaXYFvy1pfLX0qtaSMG8pu3T2q2KTVhjfKX0o8pafRUiGeWtHlr6U+igBnlr6
Uvlr6UpZR1I/OnAg9CKAG+WvpTTGB9KkooAi2il2VITimE5pkvQTavuaMAFMdzSikP31+tA0yeqE
zsr8HFX6zrj74+lOO4Cea/8Ae/SjzX/vfpTKK0sgH+a/979Kt2674gW6mqIGSAOprURQqhR0AxUT
0AQRr6UeUtOFLWYDfLX0o8tfSnUUgG+WvpQI19KdSimA3y19KPLX0p9FIBojX0o8pfSnCloAZ5a0
eWtPooAZ5a+lKI19KdSikAzyl9KPKX0p9FADPKX0pfKWnU6gCPyl9Kr3eY9uw4B61cqveIWiyP4T
mnF66gU/Nf8AvfpS+a/979Kjpa2shD/Nf+9+lWrQliCevNUquWX8P41M0rAWpf8AVmofkEe5s+mR
2qaX/VmoYG3F4zWSBA8JK5ik/PHNVpDLGcMcfgKQl4JWCnp+tSpcGQhJQpUmtEmvMLjYhLL908ep
FWBFtXMjk45OBU44FQXjbYcD+I4qb3YEMRaaUhThPpVl1jRctmm2oEduCe/zGqzuXbLdadrsTZI8
i/wL+JpjO2xiDgjFNp8a7g6+qmnZILsRnYRRsB1zkmnkkSxBuFYDIpbeYR22SMkHGKZcSeYqSAYx
xStrawyxNE23MRwR29ap+bIO/wCgrSU5UH1GapXrguFAHHU0oPoAyOYhvn+YVZWSBu+PrVAUtW4p
iuaIaEsFDAk+lSeWvpUdvEIkyfvHqarXE5kJVeE/nWXLd6AWJHhQ4JyfQc0zzofRqqUAEnAGTVqC
C5ejeFzgZB96l8tfSs5o3UZZCB9KntrjbhXPy9j6UpQ6oLlsRr6VBO3lSDKgoenPNWhVTUOsf4/0
qI6uwCrNAeu4USyQhDsOW7VXjhaRGKckHpR5Mv8Acb8qvljcBY3d5FXPU+lX/KX3qK1t9hDv97sP
SrNRNq+gDPKWkg/i+tSVHB/F9akBZ/uj61Q85var8/3R9azAM1cFdCJVmYntQZmB4xTB8o96ZWnK
guTrKxznFTRncCOjVVVgBipFbBBFJxQrskZmU4OKTzD7VK7DaNwyDTcRdc1Kt2C7AH92WP4VGZG7
YpZJA3yjgColU7qaQXZYiLOe2B1pHkw2F6U5v3cW3+I1XyKEkwuyXzD7UeYfamDpRTsgux/mH2o8
w+1MopcqC5JvPtTDKwPagUEZFFkFxwkJ9KXzG9qh5U08EGjlQakm8+1G8+1MFLRZCux28+1IZWB5
xikpknUUWQ0yUyN2xTTM47CgdKKLIVw89/QflThK/wDs1FkKcAUZJo5UO5OkhLY4q9D/AKsVnLwV
HvWjD/qxWc1YOhDcHDE+1V/Mbtiprz+L6Cqj+opwV0A8yuOy0nnt6LTA5705cHnFXZCuPEjnstKZ
WA7UlNfpSsguPWViOcU7zD7VGv3RS0cqC4/efal8w+1MopWQrsf5h9qa0pHpmmM2OlIq55NPlQ7k
qyMRzil8w+1MopWQrsf5re1L5h9qjpRRZBdj/MPtR5h9qZQSBRZBdliM71OPvVE0jg4AFNRsMCKl
mXIDr0PWlZJhdiJISwDYwfSnSMVcjtVdd26rIdXAEnBHehpILsj8w+1Sxbm5ONtNPlJyPmNPmfCA
dCaVhXZG8nzfL0qIzMCeBQSBUbHJzVKKHcmWViD0zTfPf0X8qYhwaVl7jpRyoLk0UjO2DitMdBWT
b/6z8K1h0FZVFZjKFy5RuMck9ah89/Rfyp95978TVerik0DJfPf0X8qPPf0X8qioquVBcl89/Rfy
pRO5wAFqEAnpzVq3gOdzjGOgpNJCbLAXjnrS7BSilrIm7FSJSOc07yV96eowMUoqGyiJoP7rY+tQ
SRyopJCkD0q7Ve8fCBB1Y/pTi9bAVfNb2o81varUkKiAbuCq9RVNlZDhgRWqsxXY/wAxvajzG9qZ
SgE5wOB1PpTsgux3mH2qdIpWwSFUe9OkgUQHZyeuaktn3xDPUcVm2rXQxFgA+8c/SneSvvUlFRcC
F4wDxmm7BU7jIqKmhNsjkG1CV6iqvnv6LV6qU0BU5UEr/KtI26gmJ57+i/lR57+i/lUVFXyodyXz
39F/Kj7Q/ov5VFRRyoLl+0cuVJxnNXX+430qhY/w/Wr7/cb6Vzz3AzpHYNgHim+Y3rRL981LEyxW
5kZAxLYGa16E63Ig7nof0qZI52Gen14qM3sv8IVR9Kikmkk++xI9O1HK30GXGMcP+scu3oKqNM5O
RhR6Co6kjhkkxtU4PftTUUtwBZJWYKpyT7CtERKqDd8x9fWm29usPJOW9aczZPtWUmm9AbsM2j0p
do9KWigi7E2j0oCj0paUUBdgsYJ6cVJ5Sf3f1pyjAxS1LLQwRJ/d/Wjyk9P1p4pam4FcoBwRRtHp
Uzrke9RVS1JdxNo9KNo9KWimK7M/WL6PT7UuQDKwIjBBIJ9/aqvh/wAHav4gg+3yzi2t5SShdiWb
3A7D/Cq+nWjeKvFUdvtaTT0OZCDtCx9zn3PFe1JPbxoqCVQFAA57CjGYuWBiqdJe+9X1sjuwmHjU
vKo9DxXVND1/wsguJ9j27Ns3o5dcnpkHBB4rX8F+DJdaZdU1zd9kfDxx7uZee/ov869VmnWKBpQc
gDjB61FDfQyJlnCN3DGuKeb4ipSfLBKWzkv8v1OpYSjCpq/kTxRRwxrHCiRooACqMAAdBT6oT6nE
hIjUufXoKoy6nM2QCqg+gry4YSrPVr7zpliacNLm4zBQSxAA9apyajboSAxb6CsCSUs2WJJ9TUTy
gDJIA967KeXr7Tuck8e/so1pdWkyfLVQPfk1QmupZWy8jH8ayLjVbeIH5959F5rMuNcc8RRhfdjm
vTo5fb4Y2PNrY++kpHQtJVK61GCA7Xf5vRRk1y93fS3BzK+R6dvyqm81ejTwP8zOCeLb+FG/c622
4iBF2+rd657XbuW4tWMrk/MDjPA5qvNeRpnc4z6Cs+7u/tCGNFPJ613UqEabukZR9pUd3sR2t15E
27+E8GtGW8jWMPuyp6Y71SttKu52G2IqD3fgU3VNNnsXCzqcMMq+ODW3PTlLlvqbyw3Nq2Vbq5ae
TLdBwBUGcnFBRh2qxZ20k86RRLukc4ArVtRRtGCjojT8P6WNSmcSOVhiA3YPJznGPyNdfY6Za2Sb
YYhnuzcsfxo0mxTT7NYVwX6uw7tVyvAxOJlVk0noVcQIo6ClwPSinIu4+1coXY6OJSMsKd5Sf3f1
NPFBrO5ZH5Sf3f1pGiXHA/WpKWi4FbaPSvOPifYeVe2t8gOyVfKf2Ycj8xn8q9LkXBz2NYfjDT21
Lw/dQRnEigSLx1KnOPxxXfgK3sa8ZdNn8yqM+SabPK7dy8QJ69KkqnZN85X1GauV9/TlzRuemwrO
1yZoLeJ1/wCegBHqMGtGsnxJ/wAecX/XUfyNVP4WOO5JpGpz6ddx39gxxn54zwHXuDXsOj6nBqlj
HdWrZRhyO6nuDXz9aztbvkDIP3h6iun8P61Nolybm1Hm28g/eRZxn6ehrzqlPqjX4T2tWqVWrK0z
ULfUbRLm0lWSJu47HuD6GryvWBZZdspXU+GNc2XdlaXzZgDgK/JI5HB9q5HdkVb0/wCa/gz/AHqA
PogNuGUwR60YHVjmvOvD3iGbTFEEi+Za5J2j7y/T/Cu+s7mC9t1ntZBIp7g9D6H0NUM5+/AbxBKc
8IgI9uB/jVFb2Ozj1PUJziCBGkY+iqCf5Cnyzedf303TqB/n8K5r4gSpb/CzxMzf8tdOnjH+86FF
/Uio3Yj5YurgXus3t2BgXNzLcAem92bH61MDWfG+xs4zVtJFccGtmKGxMDSg1GDS5pFkmaXdUeaX
NAD81HNLsXj7x6UMwVST0FUnYsxJ70AKSScnrSZpuaKAHZpM0lJmgBaSkzSE0AKTWdrV2sFo6Hl5
AVUfzNW55lhheSQ4VRk1zUKTaxqiqONx/wC+VFAE3h7STqVwWkJW3Q/OR1PsK9BiVY0VEUKqjAA6
Cqtlbx2dskEIxGnTJ981aBoAkBpwqMGnA4oAkBp4NRA0oNAEuaM1GGpd1AEmaTNM3UbqAHE00mmk
0maAGXDYhb6YrNJq3et8qqOhNUycCgDsPgZaG8+LOg458iVrg/RVP+Ir6314+ZrOlRej7z+BH+Ff
Mf7L8PmfFZn/AOeOlXD/APkSFf8A2avpe5YyeLYF7RJn9D/jRMzitCPxGyPrVosn3RGc4/GopYfL
BaIsI2+8B6e1LqTCTxKqvjCpjn6Gpwptz6xH9KgoiDqEWO25JH5ClwtugCgtI36mnSDyX3RYO7qt
CxMQJkbdIevp9KBmbqAHlhnz5okGc+ntWx4qIEdlcD/lnMD+B5/pWfrO2Sw8wDDIwyPStDXR53h9
W9AjUdxG4GyAfWjNVrKTzbK3kP8AFGrfmKlzVjJM0maZupN1AxZFWSNkdQyMMEHoRXm/iTR20q5B
Q5tpCfLJOW4AzmvR81WvraO9tJLecZRxj3HuPekB5TXMeNfCVp4ltMnEN9GD5UwH/jreorr9XspN
OvpLeTJA5RiMbl7GqeaYmrnzfHLfeHNVmtbhAskbbJYs5U+4P9a7Oyu4r23WaBtyH8wa7rxj4XtP
E1qomYxXcSsIJxk7M46jPI46V4rPBqXhbVnhuojHICQQfuSqD1B7j0+tb06ttGc9SmdvRVTTb+HU
LcSwnn+JD1U+9W66k7nNsFFFFABRRRTAQgEYIBHvWdc6NbTMzLujY/3en5VpUUAnY5a50e6hDMoW
RR/dPOPpWb9a7uoriCK4TbMgYe/UU+YtT7nFdOlOEsgOQ7g/7xroZ9CgcfuHaM+/zCs640W6i5QL
Kv8Asnn8qq6KUkyCHUbuI/LO5HoxyKsjXLvHSE/8BP8AjVCW2ni/1kMi/Vahosh2TNhNenH34o2+
mRUy6/8A3rfH0asGiiyFyo6Ndegx80cg+lP/ALdtv7sn5VzNFLlQcqOm/ty19JPyo/ty1/uyflXM
0UcqFyI6CbXkH+phLf7xxVV9duSfljiA9wT/AFrJop2Q+VFu51C5uCfMlYL/AHV4FVSSTkkk+9JR
TGFFFNkkWMZY/hSbtqxjqKpNdOT8oAFFZe3iOx344pzkhcqu4+lAWnV8OziRX2TyHLNtHoKQ2pP8
dWqKOZ9AKL2zr0Ab6VEGZTwSDWnTJI0f7w59aan3AqxXLrw3zCrqOHXKnIqjLbsnI5WnWm4S4AOD
1pySaugLtFFFZgVbkZuowenH86uVSu8rOjegH86uA5AI6GqlsgKbfLe8etXRVJPnvT3wTV0UT6AL
SMwVSWOAKWql8WyoGdvepSu7AJLdE5EfA9ahZ2bqxP40sULyHgYHqauxQpH0GT6mtG1ECokEjfw4
HvUotCP4xn2q1S1DmwK3lTJjZJnHapomdh867T/On0Um7gMbrSU8rmlCjvRcmwgGATUf8a/WpW+6
ai/jX60AtyxWdcffH0rRrOn++PpThuMjopyxsxwqk1ahtsHMmCewFW5JANtIv+WjfhVugcDiisW7
sAFLSClpAFFFFIApRSUjMEGW6VQD6KrG5OeF4pTPuUhQdxHFHKwI7i4OdsZwB3HeoBK4OQ7fnTSp
U4IxSVsopIRoW03mghvvD9anrNgDCQMoPFWmuR/Cp/Gs5R10C5YpRVZLkZ+YY+lWR0qGmtxhRRRS
AKdTadQwCkIyMHpS0UgM2eIxP/snoajrUdQ64YZFVJbVgSU5Hp3raM77iK1XLL+H8aqFSOoI/Crd
l/D+NE9gLUv+rNUN5jn3D8avy/6s1SWPzLjHYcmoh5gOukLsJIwWUjqKrdD71rAADAGBTXjRx8yg
+9NTtoARsHQMO9QX4+RT6GpYo/KJCn5Dzj0NOkQOhU96lOzAZF89sAD2xVOnxu1tIUcZX2qd0SYb
o2G6q2YmVqfE22QHt3pGRlOCDTarcRJboBM8TjIPY1LMqeS0aY3DnFRTEho5h0PX61LFCPO80NlT
yB9al9xjrN90WD/CcVHLasxLB9zH1po/0e5OfuNV0dKlvld0My3Ro2w4waQdRnpTp2DTuQcjNMrV
bCNWQFkYA4JGKzCCpIIwRVmC6AULJn60y5kWRgUHTv61EU07ARIpdgqjJNaUUSxLgDn19arWC/Mz
enFXKmb6AFVbmAY3oMY6gVaoqE7DKdtcbQFk+72PpUVxJ5kpI6dBSTKElZR0Bpg56VsktxF2wGI2
Pqat1FAnlxhe/U1LWMndgFI7BFLMcAUtU9QY/IvbrRFXdgB7w5OxRjsTU9scqT64NUbaLzXIJwBy
av24wCB2qppLRCFn+6PrWbu9BWlP90fWs3aadPYBCc9aSlIwaStQCpI+9R1LH92kxEx5gHsahCtn
ODj1qd/lhUe9MjmIwO1SvIQwJluOanRRGNz9ewpzMdm5MYqq7szcmlqw3HSOWYmo6KKsY9KdTUI6
U6kIKKKKAFFLSClpCEIz1ppUjpT6KBjA5HWnBxS4B6ik2CgALgdOaQZY80uwU6gAoopCM0CIzyac
vWnBQKWgdxFOZF+tacP+rFZijEi/WtOH/Vis6g+hXvP4vpVReVxVu8/i+lVEHGacNgYynIe1PpCv
cVdxD6QjIpaKSERqdvBp24etKQD1pNopjAuB0pMljxTgop1IQ0LjrTqKKAYUUUUhBSikpRQAVG3U
1IeKjYgnihDEBx0q1BKMbW6H17VVoHFNq4FqSIqcrytQsCTxUkEjnAFTySBB6tUXaEQAHcAafcf6
z8KYXLEMe1SXA+YH1FHUCq3U5pKc/wB6m1QwpysR9KbTgpIyKAJoCC/TtWoOgrKgBD9O1ao6Csam
4zNvPvfiar1YvPvfiar1pDYGFPhTfIFPTvSxQtJyMAepqxFAY5AwYH8KbaJbJlVVHygD6U4AnpRU
yDAHrWLYkrkYQ+lSKuPrTqSobHYWgVC9xGpxyfpTGuSR+7Q/U0+VjLDuqLljgVWhUzS+Y4+UdKVY
XlbdMePSpnYRgKgyx6AU9tEAPl3CDoOW/pTbtA0Zb+Id6a0qQL8x3OeTjuapTXDy8E4X0FVGLb0A
Wr9tGoh5AJYc1mlvkz3qSC5eLjOV9DVSTa0EjQhJwUb7y/qKg5tpv+mbU8SLNhoyBIPWpBtmQgj2
weorPbcZICGAI5BoqrslhJMZ3J6U5boAfOpB9qXL2C5YprID04piTo5wCQfepaWqDci2H0pKnpsg
yM96aZLRA0auMMBWew2sR6GtMVVa2ZmJLjk+laRdtxJlWinyxtGcNj6imVoUXbH+H61ff7jfSqFj
/D9avv8Acb6Vzz3GZkv3zUl3hLeKPv8AepAm+cL60y9cPPheijbWi3QupHbx+bKEzj1NXUsUH3mZ
v0qLTR+8c+gq3ITuNKcneyBuwCGFMfIv4808uB0qKlrNruTcUsTSUUUCCiiimAVJGvGTSInc1LSb
GkFFFFSUApaQUtIQVE64PtUtIRkYNCdgauQ1U1aYQabcOTj5Co+pGBV1lINZniGFptJmCdV+c/Qd
a3pJOaT7kln4aWbwWV1eMSBcFUUeoXPP5k12JauT8BalBLpAtA22eE8qeMgngj1rpWkrPGKUq8nI
6YySikWHudlsY3YBNwbJPSoTICMggj2qrdYmheM/xDFcs9zLESgkddpxgMRRQwqmnbRmFfFODV1d
HWTXMcQzI6r9TWfcavBGPkJkPtXMyTEkliST1JqF5veu+GBitzinjJPY2rnWpnGIwsfv1NZk95LK
MSSMw9zWZcX0Uf3nyfQc1Rk1F5G2wRsT9Mn8hXZDDxjsjK1Wqa7ze9VZryNDhnGfSoLXTNT1A5H7
tT3c7R+Q5rVh8LwwxhrqVpXPZeAKU69Kno3qaxwn8zMKXUsnCJn3JpyWmoXJGVdFPBLfKB+HWuu0
+0trRGmjhjUp0OOc/WoKxljb6QR0QowjsjP0/wALxyoJLidjzyqrwfxrdtdHsbYgxwruAxk9atWo
CWqY9M00knqa8+piKlR6yNG7EirEhO1VB9hUV1FDdRGKeJZEPZhS0Cslo7iuc/N4Wt2kJinkjT+6
Rux+Na2n6dbWCYt48Mernlj+NW6K2nXqTXLJ6CCiilAyeKxAAMnFTKNoxSIu3606obuUkKKSiipG
FLSUtACMMjFZ2qahbaXatPeyLHGOOerH0HrUfiLXLXQ7PzrklpG4jiX7zn+g968i1nVbzXb4zXLZ
xwkYPyxj2H9a9TL8vniXzPSP5+hrSoOpq9jPD4m3rwN2RWlVC4h8oKQc561atm3QqT16V9tRvFuL
PRZLVLWIDPYOFGWX5h+FXaZP/qJP90/yroeqEtGcVVi0uTA2DzGeoquOlFcrVzoOw8Pa5PolwJYS
01k/34Q2Bzj5h7gV6ppep2upW4ms5lkTvg8qfQjtXgVtcvAeOUPVTW1peoTWk4udMnaKTjcmeGx0
DDv1P51zzp9RbHukbZOKu6c22+gJ7OBXBeGvGFvfNHb3w+z3nqeEc+x7H2rtYm2Tq2eMhs1jaxVz
sh16dauabqV1ps260mZMnJXqrfUd6pA71DDoRkUucgetMZbsPEltMt0LrFvKWbnqp57Vyvxr1q3g
+HDWsU8bNeSpH8rg8Bg5/lVKU/NMP9s/zrg/i4c6XpS9jOf/AEGlFakvY88J6UqsVOQcGmscHFJm
tHuOOxajuOgf86sKwIyDkVnZpysy/dJFIo0M0uaprcH+IZ+lK9xkfKMe9AD7iTJ2g8d6gzTM0ZoA
fmjNMzRmgB2aTNJmkoAXNGaTNQXdwtvbvI54A4+tAGP4gu9zi3jb5V5fHr6VveGdPFnaebIo8+UZ
J7hewrndCtGv9SDyruiU75Ce59Pzrt146UATA08GoQaeDQBMDTgahBp4NAEgNLmowadmgB+RS5qP
NLmgB+aTNNzSZoAfmmk0maQmgCpeN+8A9BVZjwakuGzM35VA3Q0Aer/ss8fE+8/7A0//AKPt6+ko
Ru8V3JP8Ma/+givmv9ls4+J15/2Bp/8A0fb19KWx/wCKlvD/ANM1/kKUtyI7IpzKsviWcN02/wBB
V0s0eY3G/P3feqLc+IbrGd2BjH0FaMZCFjLnzPf0qChscawJuflv88CmqrxZk2gKeq+lTqmT5kvb
oPSgL5py3EY6D1pgUdXiWSwmkjPYE478ip5G8zwzk8nyaZfIXtbgRZ2bDn0zin2JEugqv/TIrQBb
0eTfpdqfSML+XH9Kt7qx/DsmdMRf7jMP6/1rS3U1sCJd1JuqLdSbqYyXdSFqjzSZoAzfEelpqlmd
iqLpOY3PX/d/GvNmyrFWBDA4IPUGvWt1cf400oY/tC3X2lVR/wCPf40AcnurE8VeHbPxFYGG6QJO
o/dXAUF4+QTj2OORWxmkzTFufPl7a6j4W1gw3CmOQc8fdlTPUe38q6rStRh1G3DxkCQD5488qa9F
8QaJZa9ZG3vogxGTHIPvRn1B/p3rxPVtM1Pwpqu2XjB/dyrkxyr/AJ6g9D+dbU6ljnqUztKKz9I1
OHUodyfLKvDoev1HtWhXUnfVHM1YKKKazqpAZgCfU0wHUUUUAFFFFMAooopAFQy20Ev+thjf/eUG
pqKAK32C0/59Yf8AvgU06dZn/l2j/AYq3R0607hdlB9MsFUs8KqoGSdxGP1rFvZNORyttbl/9rzG
Ap2s6g1xK0UZIhUkcH7/AL1l1SRpFPqFFFFUWFFFFABTGmjXqwzTblC0Z2k5Hp3qlDH5j7c44zWM
6kovlSGkTSXRIIQY96jSKSVsnOD/ABGraW8adsn3qWl7KUtZsL9iFLdFXBAY+poqaitVCK6CudnE
SY1LHJIzT6Slr4I4xaKgupGRAF4z3qK1kbzNpJIPrTUbq4FyiiipAUUUm4etKCD3oAKKKKAIbxcx
ZxyDTYpQLU88qMVZYZBB6EYrNkUo7JnoauOqsBPZLlmc9uKuCmRJsjVaeKmTuxi0UUhIFSIWik3D
1paAClpKrXcrKwVSRxnIoSvoBaoqtZyM24MScc81Zoas7AB6HHWmW8hkQ7vvLwafVaFtt249SaaV
0DLdQsMOv1qao5Pvp9aQiWooQOeO9S1HD0b60ASUUUVIBRRRQAClpBS0AFFIrqxwGBNLQAVFcqWQ
Edqlopp2Az6kh++KSVdsjCkU4INa7iLDoHXBqvHETIQ3QdferVFSnYm4dF46AVVqxIcIar04gAGT
gda0UGEA9BVW0TLFvTirYqJvoUgoooqBhTqjDqTgMCakoYBRRRSAKKKKBBUa8T8VJUa/6+mBJL/q
zUdugBZu5NSS/wCrNUz5zsQm7aPQ4ppXAvUVR+zzjkHn2anQXDK2yX6ZPany9gLlFFFQA2SNZBhx
ms+eMRSbVbNX5X8uMt6VWs49zGR+QPX1q4uyuBNBujhJlP0B61BLJvbOMDtSzSeY2ew6VHVJdWST
RjzI2jP1X602NnaBohww6Dv70xSVYEdqkuAcrPH+ND3GhRA72/z/AHwcrk9qktJd67G+8PXvTJZX
eNWizj+LHY0ksL7VlUYccsB/Op3VmMsPbxuclcH1HFVbmJItoUsSfU1YtpxKMHhx29aivEd5BtUk
AdQKUbp2YipSinLE7HAQ5+lJWoFuwYYde/WrdZkMhjkDD6GtJGDqGU5BrGa1uCK08rbyoOAPSnW0
jFtrHPpTbmIhi45B6+1RxSeW2cZqrJx0ELdIzT/KpOQOgqa2t9h3Py3YelSmRRHvzx296qPM7HOS
B6A0ldqwy/S1Eh2QgyHoOSaqTXLPwuVX261Ki2IvF0BwWUH61VvSjoGVgSD61Tp6RO4yqkirULa3
An08/O49qtQfxfWqUSyRTIWUjJxV2D+L61M97h0FuPuj61SdSpwauz/dH1qvE28bW5+tENEJlZxn
kUgUn2q0YlJO1ufSm+S3qKvmC5X2mpUAyAeBUnlqvLtRMAMY44ovcQ9wj4G7pULx+Xz29ajDEdas
QtvUqemOKLNANt5Pm29jTJ02vRjaxxUtwMoGo6gVqKKVRk1QxKlHSkCilpAFFFFAhRS0gpaQgooo
oABS0qIzdBUnkn+8KV0MioqQwsOmDTGUqcEYouISgc9KAMnAqwAsS5PWhuwEQic9qDG47flTjMx6
YFAnbuAaWoEYHzL7GtGH/Viq4KSDI6irEP8AqxUTdylsV7z+L6Cq6qT0BNW5gGkwelRvKqcKAaIv
SwmRiFz2pGjZeoNOMz54wKck/OHHHrVaiIqKlmjAG5eneoqpO4BRTljZugp4gPdhQ2kBHRUhhYdM
GmEEHB60r3EJRRRQNhRRRQIKUUlKKAGv0plS03aKExjKKKVfvCqAtQAJGXP0FRPl+vWpp+IVQd6Z
bJyS3as/MQ6OHC5c4FPk2mLAbOOlQTSZbP5CmKSTTs3qwsKy56U0Iat7UMS7vlJ70GH+6wIpcwXK
e056VKowMVMID3IFPjRATznHrQ5BcZGhA3HpWgOgqhv3ufTFXx0FZT3H0M28+9+JqvVq6Us+FBPJ
pIbc5zJ+VaRaSGyeBdsSjv3qSkFTKMCs2yLXIsH0NTjpSU6pbuUlYKqSM08vlqcKOtWXO1GPoM1B
ZfcY9yetNaK4EixRR8kD6sad5iDoQfZeaaoDu5YZwdoBqUUm+4Ee6Rx8g2e7f4VDcuIFwmd7dSeT
VuqWoqcK3bpThq7AUiSTk1Zt4FZNzjOenNVavWrBogO68VtN2WgmH2dNx/u+lR3MKom5BjHXmrVQ
XbYi292qE3cRTBIOQa0bdzOhbOJR3rNrQ05SEZj0NOe1xljey4DqT7rzS+Yh6kfjxT6CARyAfrWI
yF4I3GVwD6im27lXMT9RwKkC7JRt4VgeO2aiujtmjb86pa6CLVI/3TS0tQMgAPoaKnprjI96akS4
lO8XMWfQ1SrTIBBB6GqktswPyfMP5VtF9BJktj/D9avv9xvpVGyBG0EEHPerz/cb6VlPcsqZEMby
nG88LVAnJJPU1JcEmTBPAHFNiQySBR3rWKsriNCwQLBu7sc04nJJqQgJGFXpjAqKsr3dyWLS0lKB
k4FDEFFPCeppwUD3qbjsRhSelSKgHXk04dKWlcaQUUUUDCiikPAyelACilqlb3ANy+T8r4C1dokr
CCiiikMCM9aieIMpGAVIwQalpRQnYTRyl94c2yebp8hjYchGJ4PsetNTXtd0/wCW6jMsa8Zkj4/7
6FdaQD1FMMYP09K7I4ttWqLmFYxLPxLcXUJJWFXHUAE4/WsLVbiaO6adJG/enLemaTVbF9Hvw0YZ
rd/ut/7LUU0qTxEZ+U16tGFP46a0Zw104Su9iA6ncYwWU++Ksafa3mryOqSAKmNxY4Az9PpWSUIc
g4wD19a7LwfC0VlLK6lfMf5c9wB/9c08VU9lTco7nRTpxjrYr/8ACORW2z7TIZWPUL8o/wAa0dOi
gspVMUaqO+BzWrep5luSBkryKy68h1p1V7zNzViUJOQOhGRTrkZUD1NQWBJAyc4GKmujhARXK9GH
UqXjBEWBOg5J96rRrvkVR3OKaTk5PWrenRFpPMI+Ven1rf4UBfYBYwo+lRU+U5OPSmVgiGFAopyq
W6UwEoqQJ6mnqoHalcdiNUJ9qkVQvSloqG7jSCiiikMKKKhupRFCTn5iMCmld2AmrC8U+I7bQrYg
kSXjj93CD+p9BWb4j8WxaPZi3tsS6gRgKeiD1P8AQV5kxmvrmSe4keSRzl3Y5JNezl+VSrvnqfD+
f/AOmjQ5velsPvLq61a9e5u5DJM3VsYAHoB2qaKNY1wv4n1pyKEUBRgUtfZ0aMaSsjs8kRXS7oTj
qOahsW++ufcVbPIrPT91cAE8A0qnuzUho0Kydfu/LgEEbfvHPzD0WtK4do4WeNDIw6KO9YqaVc3U
zS3j+XuOcZ3H6VpK+yHG27MWrFvaT3BHlRMQf4iMD866GGxs7QcqrN6uMmpHuu0a8e9ZNRj8TLc+
xmwaGeDcSgDuF/xq7HBZWufKjBbpnOT+dIzSSAk7mA9KqvNg4UfnUqTl8CJu3uSTRpLkFeK3dB8W
ahpBjjuCbuxXjafvr9G/of0rmGdm6mlRynTp6VLw7aGtD6S8F+IbLXtOBtJwzx8NGxw6j3FdF0Nf
KVvK8NwlxZTyW1yn3Xicow+hFeoeFvis0QitfFERwBt+2wqT0HVkHPP+z69K5pQcdGWpdzsbpTHc
zK3Xca4H4sH/AIl+le1wf/Qa9AvbmC+ZL2ymjntZ1DJLG2VbHB5rjPiRpzXvh9p0PzWRM5HqoHzf
kMn8KhaMb2PLpPvU3NKx3IrA8Y5puatjjsOzS5plGaRRJmjNMzRmgCTNGaZmjNADs0ZpuaTNAD80
mabmkzQA7NYXiC4LSJAOi/MfrW07BEZmOABkk1zmnxPqGqLu5Bbe2eeB2/pQB0/h+1+y6emfvy/O
349BWoDUQNPBoAlBpwNRA04GgCUGnA+lRA04GgCUNSg1EGpcigCXNLmos+9Lk0ASZpM0zJpM0ASE
00tTM0jNhSfQUAUWOST6801jwaQmmk0Aer/svnHxNu/+wPP/AOj7evpGBseI7r3jX+Qr5p/ZmlEf
xPmU9ZNJnUf9/YD/AEr6PLbPEh/20H8v/rUp7kR2QDP/AAkku3qVyPyrWwJV9GH6Gspsp4jiZRnc
h4/4Ca2SocB0PzCpGiEAu+2Tt29aV23sEBwvc+tPIM2MDAHelQKymNgMigZE6+WjKeYyD+FUvD77
tMRT2JFaYyMpJyDwD61i6EdkVxH/AHJT/n9KOoDvD5KR3MZ/hkrV3VkaW2L2/T/poT+prS3U1sCJ
N1JuqMtSbqYEm6jdUW6k3UAS7qa+GUqwypGCKj3Um6gDzjXrBtMv2iwfKb5o2Pdf/rVnbq9D8R6e
NS09lVczx/NGff0/GvODkEg8EcEUAP3Vn65pVprWnvZ3yFo25DLwyHsQfWrmaN1AHhOv6Pf+FdUU
FztOTDOq/K49PTPqK6HRdVj1KE8bJ1+8mf1HtXpWqWNtqlk9rexLLC/UHsexHvXi/ibQbzwxqSOr
E27NmCcHGe+0j14+hH4gbU6nKYVKdzsKrX1nFeRbJRgjow6iqWh6xHqCbHwlyo5X+97itautO+qO
ZppnONc3+lyBJT5kXYsMg/Q+tallqlvdcbvLf+6/f6VcliSZCkqKynsRmuc1LSJLfMkGZIep9V/x
q9GNWludNRXJ2OqT2uFJ8yP+6x6fQ10FlqNvd8Rttk7o3B/+vSasJxaLlFFFIQUUU13VBl2Cj1Jx
QA6s/XLjyLBgBzIdg9uOtNudZtYgfLYyv6KOPzrnr27kvJt8px6KDwKpIqMSvRRRVmoUUVFJOkZw
Tk+gpNpasCWiqhuz2UU37U/oKy9vAdi7WdF8s647NinNcSMMZx9KktYTuDuMAdKzlL2klyhsW6KK
K6hBRRRQB2oOQCKWorZ98Q9RxUtfANWOMSRA6lW6U2KFYySuSfepKRjgUXewMQt6U3rQBk08DFGw
txuD6UmDUo6UgYE4BFFwsMDEU9TmgqD04pvSjcNgnk8uMnuelU1iZo2f0/WppYmllU546fSrSqFU
ADgdqq/KhkFpLvTaeo/UVOWAHNVTCUn3IcL1/wDrVN1NJpPYGxSxNFOVPWlLovBZR9TU37CsMwfS
lpyujHCspPsacRmi4WGhvWiWJZQN2fqKQjFOQ9qPNAn0EiiWIELnnuafRRSGFU0/4/P+BGrUjhEL
GqVt/r0+tXFaNgzRqOT76fWpKjk++n1qBEtRw9G+tSVHD0b60ASUUUVIBRRVeS6VThRu9+1NJvYC
wKguXOQoPHeoxeHPKD86JFJO/seatRs9RMYCQcjrV2N96g9+9UafE5jbPbuKco3Au0opqMHGVNOF
ZjK12PmU+oqAVYuxwpquK0jsJliJsrjuKfVZG2tmp2cBc/lSa1JGTtyBUVBOTk0VaVhlu1GIs+pq
cVHAMRL9KkFYS3KCobmTau0dT+lOllCDA5b0qmxLEk8k1UI9RNiVet33x4J5FUamRjCpcjOeMVUl
dCRdoql9sb+4PzqeGdZTjo3pWbi0MmoooqQCo1/19SVGv+vpgSS/6s0kX3BSy/6s0kX3BQA+ql+n
CuPoat1WvjiJR6mnDcCaBt8St3xT6ithtgQe2alpPcCrfvwqfiadIPKtlQHk9ahvwfNU9ttWLwZR
SPWr7CZVoooqxBU1u4GUbG0+tQ0UmrgSOGtpNycoaknldghhztPp1zSxSBl2Scj3qNke2fenKd6n
rruMfLbsQHTh+4H9KdFc87ZvlYd8UyZzcIvl9R1XNSyRIYgZjhgMbqXS0gJwQRkHIqjcwsHLKCVP
p2oXzIgGjbfH7VPFdI3DfKffpSScdUBUWJ2OAp/EUqO8L8cEdQa0VYMMqQR7U14kc5ZQTT5+4EUF
yJGCsuGPp0qO4j2NkdDVlIkQ5RQDTbhWdVCjPNSmr6AyoWJUL2FT28GcM3TsPWonideqnHrSwSFH
HPynrVvVaCJL0uSEVSR1OBVMgg4Iwa0BcJuxyB61Myq64YAipUuXRoDPtWRZfnA56E9q0hjHHSqd
xa4BaP8A75pttcFDskPy9j6USXNqgL1RwfxfWpKjg/i+tZjFn+6PrVJThgfSrs/3R9arLERy5AFX
DYTEnABDetNQM+cH9aJ23nA6Clthhj9KvoSRscdanXEsYx94UksW75l59hUednI7Ub7ANdCD0qS3
GHFOSfK/MuaUTrnAWht7ARSglzipTzbj2NQu3zdOtTLzbt9aGBAV9KUDFLRTGKKKBRQIKKKKAFFL
SClpCCnxJuOT0FMqdz5cQHfpUsAeUIMLjioTMSfvGo3PamVSiNIsLOR3z9amWRX4YAGqNPVsfSk4
oLFxYwr5HSoZ3+Y+3SnRy4XHX0qu55pJa6iSEJJpwOKbS1ZRNEfmGK0If9WKzYT84FaUP+rFY1A6
ENycM2PSqTNjgVcuurfSqBOTVU9gCnK2PpTaK0EXoG3oVPQUqxrGMsarwPsPrRLJubJ/Ks7O4iZ5
8fdAx71CZierGoic9aSqUUh2LKTEd8/Wp/lmX0NZ9TwuQQc/Wk49hNCkEEg9aSp7gdGFQUJ3EFFF
FABSikpRQAUUUUANKc8U5F5A7minR8yL9aGA+7O1hj0pYDmJ/XFJckeZz2FJFIFyRzmp6ARMuTkV
JFET247mpDcLnleabJMxBxx9Kd2GoXL8gL0FJCGfgcUyMM/AGauRIEGM/NSbsrAU2dg+2rBO23A9
ars2DyOanjIkiCk4PbNDBjYvvH6VpDoKoLGyMc9PWr46Csp7j6Fb+N/rS0n8b/WnAE9KBPcVBkip
qai7R706pbBBTGmjXqw/CoHZp5Ci8IOpqZbeMLyM+5p2S3GI08bqy7sZGORTbH/Vt9ak8iL+6Pzp
URIgccA9SaG1ayAIxhpB/tZ/OpBUcRLbmIIB6Z9KkyACT0FS9wFpk0YkQqfwqhLdyFzsOBU1ncmR
tj9exquRpXApOpRipHIpY3MbBh+VW9QQcOB7GqNbxfMgLpuU2ZGd3pVSRy7FmptFJJIVh8SGRwqj
JrXjQRoFHaqunxgIXPXOKLu5ZH2IcEdTWcrydkMuUVnQXb7x5hyK0QcjIqJRcdwGE5mVfQE1Bd4M
kYJ471M+ElDnoRtPtSvEkjBmGTQnbUBpuIwep/KnrKjdGFN8mL+6PzpHtkYfL8po90NSeiq0Dsj+
VJ17GrNS1ZgQHilFPdc8imCruQ1YRf8AXLVh/uN9Krr/AK5asP8Acb6VDKMuSNpJsICavW0CwLkn
LHqaWJgsfvQzFutW23oDYO24+1NoopEC0+Mc5plSoMLSY0OoooqShRS0gpaQgooopjCs67uPM+RD
8nr60+/n/wCWSH/eP9KpVrCHVgFaFlc7gI5D83RT61n0VcoqSEblFVrO481drffH61Zrnas7MYUo
pKUUgCiiigRBe2kV7bPBOuUbuOoPqPeuXl8LSCUiO5Xy8/xDmuwFRSDDfWt6OIqUtIsTMSw8P2lq
weQtPIP7+No+grYAwMDgUtFKdSVR3k7kkkbcYNUrq1KsWjBKnt6VZqRX7N+dQm4u6GmVtP8A8anu
/wDV0IAJztAwRninXHRfrUt3dyupnW9q8pBIKr6mtIBYowq9B0oL46VGTk8023Lcm4UUUUCCpox8
oqIDJAqepY0FKKSlFSUFFFFIAoopGYIpZjgCmA2WRYkLMfpXEeLvEosQ0UBVr1x93tGMdfr7Vb8W
6+unW4fAaZztijzyOD8xHpx+orzFRJdztLM7OzHLu3VjXu5Xl3tX7Sa0/M6aFHm96WwIklzK0kzM
xY5ZmOSauKoUYAwKFAUAAYApa+xp01BWR2NhRRRWgBVK9XEgb+8Ku02SNZFw1Z1Ic8bAisLoLGoA
JYDvUbTSy9M49FFWVtox1y31qVVCjCgAVnyTl8THdFJLaRuW4+tWEto15OWPvU1IWAHJAq40oxFc
UAAcVXu7VZ0JAw46EU/7RD/z1j/76FRz3kUaEq6u3YKc1oCuYxGCQeoooYkkk9TzRQaBUiSE4Vxu
FR0q/eH1qZRUlqBqabqOoaTIH065kVAcmJiTGfXK9Ofz967fRvHFpeRLb6zGLadvkLBSYnz19cD6
/nXKeH1R7iZJAGVkxg9+amu9GjnnkWAqmBkK3I6evavGnXhGfJLQ6IUJyhzx1M/XbJNO1aWKOWGW
1mJliaNgQFJ6cdMdPyrLYhX2Ejd1xntWk2g3YYhbdiP9llwf1rH8UWt9YMrtauipj/SF5HPbP9DW
ntIPRSRKpzW8XYmzS5rGtdWB2rcDB/vjpWpHIsi7kYMvqDmqGS5ozTM0uaAH5ozTM0ZoAfmkzTc0
maAH5pM03NGaAKOtzbLPYDgucY9qd4Wt9qy3BPLfIo9u5rN1t992qA5Cr09D/nFb2mILaCOP25+t
AGoDTgaiBpwNAEoNOBqIGnA0ASg0oNRg0oNAEgNLmo80uaAJM0uajzRmgCTNJmmZozQA/NRzH903
0ozUc5/dNQBVpCaTNNJoA9B+BF59j+J+mHOPPSS3/wC+gD/7LX1He/JrVo/94Yr5D+GM4tviH4dm
Y4Vbtc/iCP619daocXdm3o+P1FEzOOxYYgeILNj/AHG/ka19od/kyFPWsUkf25Z5OAVYZ/A1usrR
j5D8p/SoLA/3Ix9T6U10UKFXJf1qQYRQE5JoAEYy3LGmAwsCpWQfN7d6wNPUxX1+h6hxx+ddAq78
lj83b2rngSmtXqt1bml1AbbnZrNyOzKD/KtHdWUTt1gH+8n+f5Vf3U0BLupN1RF6TdQBLupN3vUR
b3pN1AEu4etJuFRbqbvoAm31wfi6wFrf+fGD5U5LH0Dd/wDGu1LVm+ILb7bpU8agGQDen1HP68j8
aAPPs0m6o91JupgSbqq6lZ2+o2U1pdJuilQofUZHUHsfept1Ju96APG/E/hu78O3omt/NktMkxTg
ZK4x98gYB5/GtPQdZS+jWKdgt0OMf3/cf4V6XdQw3dtJb3KCSGRSroehHpXkXjDw5Pol61xbKxsH
O5JF/wCWRJ4UnP0571rTqOLMalO51dFYOg64t0Fgu2C3GOGOAH9vrW9XYpKSujlaa3MrUtIjnDSQ
fJL6fwtXPTQy28m2VGRh07fka7Ce5ggx50qITyAx5NU57nTbxNks0Zx0LZGPxq02VGTMyw1mWHal
wPMj9f4h/jU99rbK4FoEKEZ3MDnP0qheWBhXzIHE8H99OcfWqNOyKsnqW5tRu5fvztj0HFVndn++
zN9Tmm0UxhRRRTGFFFFAEN1IUTC9TxVeCAyfMxIX+dOvvvJ9KsW/+oT6Vz256jT6D2QiwRr/AA5+
tPCKP4R+VOorZRS2QhNoHYUtFFUAUU6NGkcIilmPAA6muj0zSUgVZLlQ8pAIBHC8dPek3Yluxixa
fdSpuSFse/H86K7Cip5iedmXbyeW4z909avis1lKsQeoq5aMWjwexxXw011OcnpjdafTD1NQgYqj
iiRwiFj2pV6VUvWy6r6CmldgMkmdz1wvoKjpBS1rawFq2nO4K5yD0NDTFpgEGR0+tVavW0XljJ+8
aiSS1AfyPrTw3HvQwyPeo6jcWwp5NRNK0U2COMdKnQdzRLGJUweD2NO66gkR3M+1QE6sM59KpE5O
T1pWBViD1HFJVpWGA4PFXLaYsdjnnsfWqdPQ7XUjsaGroDRYZFNX7wp5qMdRWSJZLRRTJ38uMsOv
QUlqUVruTc2wdB/OlskzIW7Cq4GTgVowR+XGB36mtJe6rASVHJ99PrUlRyffT61mIlqOHo31qSo4
ejfWgCSiiipAiumKwnHU8Vn1pSp5kZX1rNIIOCMGtaYBWgvKj6VTWB2GcAfWrMKsq4bHtTnqJjZI
+6/lUVW6glXByOhpJiGqxU5U4NW4ZBJ2wR2qlTlYqwI6iiSuMuzLujYd+1URV+Ng6giqs6bZD6Hm
pg+gMjpSMKp9c0lSyriKI+1W2IipUXc6r6mkqzapj5z36USdkBYAwMCoJpsZVOvrS3EmxcD7xqqK
zjG+rG2B5PNAGTgdaKnhTA3Hqatuwh0cYUZPJplyf3ePU1NUM0byHjG0VK3EVadGdsikdjSvGydR
x6inW6F5Vx0ByatvQo0qKKK5wCo1/wBfUlRr/r6YEkv+rNJF9wUsv+rNJF9wUAPqjdN5s4Re3FWp
5PKjJ79qr2SEsZG/CqjouYC4BgAelFFFQBDdx+ZHkD5hzUdrIJI/Kfr2q1Va4tiSXi6+lUmtmA14
XXtkeoqPafQ/lT0unXiRc/oam+1x+jflV3kugrESwue2PrUqWwGC5z7CmPef3F596haeXcrEke3Y
0veYWJZ1CyYAwMU+KfA2ycj1ouhyrDoRUFNK61ETvbZO+A4PYVG8pZfLmypz97H9KRHZDlTUxljk
XbKtKzW47jocR25KHeBk+lRwBbgvvQA9crSNbkENA360q3EkZxKn9KVuwDTEY5NsUvznt0p/mXEX
313Cmr5Tz795Xvg+tS3ZkwvlE7f9mjrZgENz5kgQpjPvViqUxZJYnb72BmroqJJboZEs6tMY8e2f
WoriHb8y/d7j0qtzHJ/tKa043DoGHeqfu6oRnVowqVjUN1oCKpyFAP0p9TKVxBWdeIElyP4ua0az
71w0uB/CMU6e4E1jIWUof4ehqaD+L61TsT+/x7Vcg/i+tKasw6Cz/dH1qizFh1zV6f7o+tUY0J4F
OGwMauec1YUeUhZupoAWLBblqglkLGr3J3FSYqfapd8bj5hiqlKKbiOxbESn7rU37OQcgioAxFSA
5GaVmgHmBj1A/OpVUrE4NQBmHRj+dOErDvn60mmIZRRRVAKKKBRQAUUUUAKKWkFLSEKn31+oqW4/
h/GoVOGB9DU1x0U9ql7gVD1NJTnHNNrQoKdTadSYxVOPpSU5ULdKnS35+ak2kK5WpwUnoKtfukOO
p/OlkkK/w4+tLmFcgjjcODtOK0Yf9WKrguRk4xViH/Vis5u41sQXQJLBRk4qmYnHVavTZ8w7etRu
7oRuwc0QdkJlMgikq/vBXLocfSm+VFIPlNXzdxXKqnGabU8kDKMjkVCQR1qk7jEooopgFSR96jqW
MfLSYMtP/wAe4+gqvVib5YgtV6iJIUUUUwClFJSigAooooAKkg/1q1HTkYocjrQwJJYndmOOKRYG
A7U0yOerGkJJ6k0tQJPs+TkkCl2Rr95s/SoGbFMJJoswsWmnVciMY96ZDL+8yfxqvSg4NFkOxZmj
wc9VNQlsNgCpoZRtw3IpzRZ5jORSvbRiEjck7SSeK0R0FZkS4kJ9q0x0FZ1Nx9CGIAyPn1qYADpU
MJ/eOPepqhjYUyYlYmI64p9QXjYjC9zQtWIW0XbFn15p0YEoLvyD0HYUq/JAM9lp0S7Y1HoKbfUB
PKQdFA+lHlKfvZb6mpKazBVyxwKV2A6myLujZR1IqEXUROMmrCkEZByKVmgMZwVcg9c0+2cJMrHp
V65thL8y8NVB4XjOGFbqSkhFq9mR0Cqc1SooqoqysMKKKKBF+znRYtrHBzVS4YPMzDoTUdSxQvIc
KKlJJ3AbEpZwB1rYQbUVfQYqG2txEMnlqlkkWMZY1nOXM7IY4jIwelM8tegLAegNMS5jZsA4+tTV
GqAZ5UZ6oDQf3brjO1uMelSUycfID/dINFwIbwEFHHbirI5AqK6GYD3xzS2774ge44NPeIEtGAeo
ooFSBERidQKmf7jfSoW/4+FqZ/uN9KGBXT7tLSJ92lqiHuFFFFAhVGTip6bGuBk9adUtlJBRRRSG
KKWkFLSEFVryfyl2r99h+VTuwRGY9hmsiQvI5dgcnnpWkI3d2MZS0lLW4MKKKKBDkYowZTgita3l
E0e4cHuPSsep7V2hlBIIU8HionG6A1aUUlKK5xhRRRQIUU2QZX3FOFLSAr0U6RcH2NNq0QFFFFMB
Yf8AXfhTrjov1psP+u/CnXHRfrU9S0NooopkBRRSgZOBQA+Ic5qSkAwMClqGUgpRSUopDCiiikAV
mXtyHJAOI16nPB96tX0hWPYvLN/KuO8bXa2uiSROGD3H7tf5n+VdWGourNR7jjHmkonEa7qUmsao
0nHlKSkQH93PB/HrSRoEQKOgqtYr95/wq3X6BhaMacEonqWSVkFFFFdIBRRVXUZWigGw4LHGaAJZ
p44f9Y2D6d6rSaii/wCrQv8AXisuikVyl59SkP3EVfrzUDXk7HPmEfTioKKB2RI08rfekY/jUZJP
U5+tABJwASfar0GnuxBlIVfQdaA2KFTxWs0oyqcep4rRP2SxiLyOiKOrMeaov4ksFztMrY6YTrUu
UY7sNXsiRNOkP32Vf1qT+zP+m3/jv/16zJvFUY/1Ns5/3mxRH4pjIG+3ZT7HIqfbQ7hyyLz6dKD8
hVh+VVHRo2KuCGFXLTWYrhNwU49jyKuK8F7Gy/oeDWis9UK7W5HpkpivIGHQkA/jxXUKjC63j7pH
NciEa3kAzypyp/lXUx3ReC3lGPnxu/rXzuY07ST+R6eAno4miDRIiTRtHMivGwwysMgj0pimng15
Z6Jy2ueCLS9czac4tJMcx7cox7f7v6/SuJ1PS9S8PyoLgbFf7rIcq3tXsamlkRJo2jlRXjYYZWGQ
R6EV1UsXOGktUc9TDQnqtGeQWuqRyYWYbG6Z6g/4VoVqeIvAqhPO0U4KgloZGzn/AHT6+xrjrS7l
s5PJnVgoPKsOVr06dWNVXiefUpSpu0jezRmo1cMoZTkEZFLmtCLD80lNzRmgB2aM0zNRXUhjt5GX
qFOKAMYobjVGUH70h59s10gNYGiLuu2cjIVevuf8mt2gC3DLuAB61ODWcDU8c2PvUAXAaUGq6zIe
+Kf5qf3qAJwaUGq3noO5/Kl89fegCzmlzVX7QOwNKLgehoAs5pc1Asqt0P50/dQBJmkzTM0ZoAfm
o5z+6alzUcx/dtQBWozTc00mgDY8MytD4k0eROovYB+cij+tfZ2qEb7Y+kor4r8Pn/ieaQT0F7b/
APo1a+zdVb92jDs+aJ7GcepYkI/texJ6Ftv610oyvytyD0NcndP+/tJPRwf5V1m75cOM5HGKhFoa
R5TZAyD+lLhsh+vtTlTaNzdf5Ui5XnHyGmAEbvmQ81zd+dmvyHGNyD+VdMVIO5fxFc3rxA1iFh0a
P+ppMGVJj/xMoD7H+Rq3vqhO3+lwH61YLUIRMXpN9QlqaXFMZOXpu+oS9IXoAm3UFqrl6QvQBPup
Cwxg1XL0hcAZPAoEee6pF9m1G4hHRXOPpVTdVjWLlbnU7iVOULcH1AqluoGSbqN1RFqTdTAl3VFc
RxXELRToskbDDKwyDRupN1IDyvxZ4Wl0RvtdmzSWO4YJOWjPOM+3HX6VY0DXBc+Xa3fE/wB1X67/
AK+hr0psMpVhkEYIPevM/F/hZtPZrzTVJs+rRjrEfb/Z/lW1Oo4sxnTTM6/keS9nMhJIdgM9hnpV
eqttcZwrnnsatV3wkpK6M7WJIpZIWzE7IfY0kj7znaAe+OM0yirEFFFFAwooooAKKKKAK96MxqfQ
0tm2YsehqSZd0Tg+lVbJsSFfUVg/dqJ9x9C7RRRW4gp8UbSyLHGNzscAUsELzyrHEMsxwK6rTdPj
so8/elYfM3+FJuxLdiPStNWzXe+GnPU9l9hWjRRWZk3cKKKKAK8kayfeFLGixjC06ivhbmQtNbrT
qRhkUkDEQ9qrXikMG7HipxxTm2sp3AEd81SdncSM0UtOcL5mI8kVKLaQ9cD8a1uhkFag4AFVDb+W
N7MDt5xTHuJG6HaPaoa5tgL7MFGWIAqL7RHuxu/GqDMWOWJP1NJQodwNRWVhlSCPanCspSVOQSD7
VMlxIvU7h70nDsA2f/XP9aZU6xGfdICASeRR9lk/2fzqrpaAQVLbpvlHHA5NM27X2yZHrWhEEVAU
6evrSlKyAcx4pqjJoJyacgwM1nsid2OpHUOpVhkUtFIojjhSM5UHPqalpKWi9wFqOT76fWpKjk++
n1oES1HD0b61JUcPRvrQBJRRRUgFVGkUzbwue1S3RIQAdzVWtIrqItK6t0NOqnTwzDuafKIs0jDc
pFQeY3rQZGPejlYWGUU5cE/Nn604wtjK/MPUU2xjrZ9r7ezVZkQOuD+FUeQe4NX0JKqT1xzUS0dw
KaxsZApGDVuVMxFQOnSnilqXK4WKUURdsdAOtXOFX2ApahuSRHx0PWm3zMNiq7b3LHvSClVWY/KC
akERUZkO0fqa0ukIbGu5wKtVUDEfd4p3mv61LVxFmiqxlf1pCxPUmlygWGkUD1PpSWrqMrgAk5qv
SjrT5dLDNGimRNujUnrT6xGFRr/r6kqNf9fTAkl/1ZpgcRxBmOKfL/qzVIxvLJgZ2j8hTir7gHzX
U3PCj9KvKAqgDoKSKNY12qPx9ahvJSgCrwT39Kb952QFjIzjIz6UVl7SeSeakjnePIPzDtk9Kbh2
AnuLgo2yPr3NQCaYHO40xeSWPJp1UopCuXIHE6fOoyOtO8iLP3BVayOJWHbFXqzlo9AGLGi/dUCo
L5CVVh24NWqa6h1Kt0NSnZ3GRxFZoAPwNQSRshORx60zMltJ6qfyNWUuomX5jt9iKvVbbCaK1Kql
vugmrDTW/op/4DUTXZ6IgA96q7eyFYckJA3O2wClluVC7UG73NRiKaYjzCQvv/hVmG3SPtuPqal2
6jKTowXcwxnoPWprSTZHJxnA3UjE3NxgfdH8qVgIrvAHytxj2NN6qzAJX8+AuRgof51Zt33xKfwN
NcwqDGdq56gCorNtrtEfXNS9UAl6V3AAfN3NRQzNEeOQeoqW9jIbeOh4NVquKTiBopcxsMltp9DT
vPiA++KzKVQWICjJNT7NCLU12TkRjA9aqUpBUkEYIpBycCrSS2AtWAzIx9BVqD+L60ltH5cQBHzH
k0sH8X1rGTuxi3H3R9aqvLjhOAKtT/dH1qjTghMa5x9TUdSOMjimBT6VqhCUooIwaBTGLipFGAKU
dKKm4gooooEFFFFACiigUUAFFFFACilpBVhFCLubrUt2ERrEx68fWpmX92QT2qJ5SenAqJpSeMk/
jSs2AjjjNR0/fx0oRc/SrKEVSfpViKHPJ4FPjjCrufj2pX3OuRwPT1qHK4ri7tq/u1yPWmIwc/vD
9BSxO2NoXOKUIicuc0thDNv7zMYyBUrq0gAICj86YZscKvFRmRz/ABGnZgWArBcb+PpViH/Vis9W
+YZ6k1oQ/wCrFRNWGtiKYZkPOKY8RfkuD+FLdnBY+1VlYjoTRFaAyd9+zbt/EGmxKmDv4YetNWVl
75+tSCRH++ADT1QhEkbdgfMKeVWT/ZagJsO5PmB7VES0knHBo9AI5IipqPpV7/Ykwc9DUE0W0+3Y
1Sl3C5AKsQrlwPSoB8p5FOEhzTYMuSxl8YPSoGRl6jikWVs/eOamSXccMBzU6oRBRUkybTkdDUdM
ApRSUooAKKKKACiiigBRS0gpaAGOO9Mqamv0ouO5HRRTgpIzQAgODmp0YrypqEKc9KlAwMUMGTq4
ccjDCrw6Cs2L7x+laQ6CsJqzDoVlbbcD3JFWaozHbJkdQ2alNzk4jQk0OLew3uWHYIuWOBVaINNL
5jcKOgpVheQ5mJ+lTOwQBUGW7KKNthCSfMwjxweSfSpqpTTeSCAcyHkn0qAXUo/ipqDaA1Ko6iTl
R2xmnw3ascSYU+tTTRLMmD+BpL3XqBk1Zs5zG+0n5TT2sSASGB9qqdDWt1JWA26YXHpkU22fzIFP
tg02sLaibEkt45ASOD7VRmiaJsHp2NaCnBp00YljIP4GrjJrcEzIqa3haZsDgdzTFQmTb3zitWNB
DHgdv1qpytsAxIIogOMn3qVXBOMYqPOeTSqMsKzeu4rj5XEaFj2rJlcyOWJq3qL/AHUH1NVoIjK+
0VcFZXYyOta2JMCE9cVXWyAOWfI9hVpmWNBkgKOBUzknohj6CMgg9DxVCW8J4jGPemLdSBgS2R6U
vZsLl+L7pQ9V4+tV8tbSHuhqRW81RLH98cEevtUgKSoQRn1HoaW24DwQwyDkUoqoY5YTmMll9Ket
0BnepBocewriht1x9DirD/cb6VStfvL9auv9xvpSkrMZXT7tLSJ92nAE9KZD3EqRE7mnKgHXk06p
bGkFFFFIYUUUUAKKhuLlIePvN6ZqG6ugoKRHnuw7VQJJJJOSa0hTvqwLkMrzS5c8AcCrIrNgfy5A
e3Q1ojpTkrEyI5YFk56N61TkjaM/MOPWtGnyGMLtkxj0PNCk0ETIqWKBpMHGF9aliWASktkr2B/r
V4lWj+TBA6YpynbYZDFGsY+UfjT6BSSMEQse1RuSVVuHhkYA7lz0NXoJkmXKnnuPSsljkk+pzSo7
I2VJB9q0lBMo2qKr21yJflbAf09asVg01owFFLSClqQEIyMGoWUqeanpCARzTTsJq5BRTmQj6U2r
JFh/134U646L9abD/rvwp1x0X61PUtDaKKcqE9eBTIEAJPFSou0e9KAAOKWpbKSCiiikMKUUlI7r
GpZyABSAcSACScAVSuL3B2w/99VXurppThcqnp6/Wq9bQp9WBoWzFo9zEkk8muA+Kj5u9NQHokhI
/Fcf1rubN+qH6ivNviPKz+JGQn5Y4lx+PNellcL4lPsn/ka4ZfvDHt12xL781JTY/wDVr9BTq+4i
rJI9AKKKKoAqnqjKLfafvE8VNdTi3i3EZPQCsiR5bmTOGY9gOcUhpEVFWo7GZ2wy7B6k1O8FpZJ5
l3KoXtv4/TvS2KuUI4nkP7tC30q39jjhjEl3MsadweP1rNvvEiRb4tPiXHQSHgfUCsiODUtWO799
Mmc7nbCj6Z4/KsZ4iMdtSlFs3LnXrOxcx2cPnHuwbA/PnNZcms6lfMYoMjceFjXnH1rUs/DMCFGu
ZWkI5KjhT/Wt62t4LcHyIY4s9digZrmlWnLqaKCRx1n4dvrhz54EC92fkn8q1rXwnAkmbi5aVf7o
Tb+uTXRUoOKyKMweHNL/AOfdv+/jf41HceGNPkhZYUaGQ9H3FsfgTWyDTgaAPOb6zutFvMN0Odj4
4cVpaffrOVIOyYHgZ/lXXXlrBeQmK5jV1PqOR7j0NcRrOh3GlsZ4GZ7cf8tBwVzxzWtOq4ehLjc6
Z5PPtklxhs4NaulyefYtFj54unuK4vRdaREeC9bAYcP15rptCulWddhDJNwGB/KscdFVYOUS8NJ0
6qvszp04VfpUqmqltKZFbdjIOKsA4rwGj2ScGnqahU08GkUTg1ynjbwympwyXtouL5Rlgoz5oHGO
vX39q6hWp4NXTqOnLmRM4Ka5ZHiGnXZgbyZeEz1PG01sBgwBByD3rpfF3g9L7zLzS0CXZ5aEYCyH
PJ9jXAs13ply1vco6Ohw0T8Yr2aVaNVXR5VWlKm7M2aKoQ6lE4/eZQ/nVhbmFvuyp+JxWpkT1S1a
TZbbR1c4/Cp2niAyZEH41mapPHN5YjfdjOf0oAt6KoW3Zu7NWiDVHShts19yTVwGgCQGlzTAaUGg
CQGlBqOlzQBJmlzUeaXNAD80uaZmlzQA7NKGI6HFMzRmgCYTOO9KJ2HXBqDNGaALH2g/3f1pHn3K
Rtxn3qDNJmgB2aTNNzSZoAu2UvkywzDrHIrj8Dn+lfZdvci+0O1uRjEsSSDHuBXxfBzHX1n8PLo3
fw70F2OXNjErH/aCgH9RRLYzW7Ohujm1iP8Adwf0rtICDEjP97aP5VxErZtAPYV3EIDW8ZHUKP5V
CLQ/G7lug6Cg/Px/D/OjJY4PGOtBPO0cUwGnjhfu/wAq5/xOoW7smH91h+RH+NdEPl4PT1rnvFo2
vZEdMv8A+y0mDMadv30R9DUpf3qrK2Sp96cWoET76aXqHfSb6Bkxek31CXqrd6hbWg/0idIz2BPP
5UCL++kL+9cxfeKIo322sfnD+8TtFc/eave3TMXuHVTxsRtq4+lMDsNQ1+0tEOxxPJnGxD/M9q5v
Utfur1XjBEUDcFF5OPrWJupC1AEpak3VFupN9AE26k3VDupN1AEpajdUO6k3UAS7qQtkEHkHjFR7
qTdQBwfivwp9nD3mlqTF1eAZJX1I9vbtXL29x0Vzx2Nexlsgg9K4XxX4YC7rzS4vl6vAgACgDkj/
AArWnUcWRKPYwaKpW1xtwrn5ex9Ku16EJqaujFoKKKKsAooooAKKKKACqEHy3IA7EirzuEUljgVU
sYpLm8VYkLuSTgCsKvxRGi5VmyspbuQCNSEzhnxwK07HRCwD3ZK8/wCrH9TW5FGkSbYkVF9FGBWr
kZuXYgsLKOyj2x8ucbm9f8KtUUVBmFFFFABRRRQBDuHqPzpRVT7KezD8qQxyxHK5P05r4ey6MyLt
FVI7kjiQZ9xUklyqj5PmNLlYEj4HJIGaZIu9SMkVAqSTtuY8epq1swABk4p7CaG28SoAerdzU1RD
g1IpyKlgmQXrYRR6morZ0UsHxz0yKS6bdMRngcVDWiWlhlprUkkqVAzwKjNvIG24z79qvqcqCDnI
pajnaApC0f8AvLTrpowmxQN2fSrdZsjb3ZvU04tyeoFixbll9eat1mwNslUnp3rRJwM1M1qAyaNZ
F+br2NRwpsXk89+eKeST1pwXPWi9kS9QXBPUfSpKpSwvG2+Mk/TqKkhuQRiTg+tDjfVDWhZoqtJd
DkIM+5qPbNL1zj34FHK+oy5uX+8PzpQw9R+dVBaHuw/Kg2jAZVgaLLuBdqOT76fWoLaZt/lyfQZ7
VPJ99PrSasxEtRw9G+tSVHD0b60gJKKKKkBkiB1wePeoPs7eq1aoqlJoCqbdwOMH6VGQR1GKvChl
DDDDIpqfcVihRVprdT90kUz7O394VXOgIKkhkMbf7PcU77O/t+dKLY/3hQ2gLQIYAjkUtNRdqBfS
ortysWAcEnFZJXdhjZboLxGMn17VELqTPOD+FMgj3kk9BU5hj/u/rWtorQTZLBOsvGMN6VNWWwMU
nuORWkjb0VvUZqJRtqhiSOI1z+QqmzFzljzVqaLzMYOCKi+zN2INOLSEyGiphbv7fnThbHuwquZC
sV6eiM/3QTVlYEHUZPvUwGBxUufYdir9mf1WlW2bPzEY9qtUVHOwsIAAAB0FLRRUgFRr/r6kqNf9
fTAkl/1ZqOCRTlQfmHapJf8AVmqckLj94mTz0HWnFJgXqp36ncrdsYpYrvHEo/GrDBJoyMgqfQ00
nF6gUAcikcZFK6NE+1unr60taCEAwBS0UHkUCEikaMkrjJqUXUoPzYI+lMAAHFB6c0NJhcvxSCRN
y/rT6p2Gcv6cVcrGSs7FCEAjBAI96i+zRE52n8DU1ApXaAhFrED90/nUqoq/dUD8KdRSu2AVDdSb
Isd24FTVSuCZbgIO3FVFXYh8A8qAuR8zcCkmUyWyv1ZetOujjag6AdKLUjLIejCq/vCCKJJgsjE7
u9NugUlEsePfHrTUBjkeHdgN0NSw2xVHVyMN6UPR3GWEIdAeoIqneIiOu0YJ5NPtJCjmJ+PTPrS3
yMzJtUng5wM0oq0gKdWLJgs3PcYFRCKQ/wADD6jFMrR6qwjTlhSXlhz6ikigjjOQMn1NVEupF4JD
D3pslxJICCcD0FZ8stgL8cqyOyr0XvRB/F9araefmce1WYP4vrUyVtBiz/dH1qjV6f7o+tUacNhP
YKKKK0JEIB60BQKWloGFFFFAgooooAKKKKAFFFAooAKKKKAHxjLr9akuCcgdutRxffX60+4++PpU
PcRXc5OKbRSitChUXJ9qtxIFG5qjgTPXoOtSuDJ90jaP1rOT6CYjgyLuzx2FEQZlxnC0kQZhjPy9
6JX/AIV6UvIQrSBRtQVESSck5pDwKjDEVSQ7DmOKA3rTWOTRTCw5OZF+takP+rFZcYzIv1rUh/1Y
rOoPoV7z+L6VTVsdauXgzu+lUadPYGOLmnjmoqcGwMCrsInR2Q8H8KmBWT5l4aqikluaeCQcg4NS
4iJCHeQKx5qUcfJIc56GkU+YuRw4qPa8j4Y8ip3AbNHg4/KoOhq9jeu1vvCqsi4PTnvVRYIZUiHI
96jpU+9TAuH54Mnriq9WF4t/wNV6mIgpRSUopgFFFFABRRRQAopaQUtABSHmlopAN2injpSUtABR
RRQA+L7x+laQ6Cs2L7x+laQ6Csqm5XQoXH3j9TT7aZUBDdOuaZcfeP1NRVaV1YT3NDMjgbRsHq3W
kcrBGzD73qe9QRXBUYf5hUN3MZG4+6OlQoO9gIHYsxJ70Yx1qxZopyxGSOlWiARgjIrRytoJszam
iuJI+Acj3pbiHZ8yfd9PSoKekkMtteMVIAAqoeTRRQklsBdsJsfIx47VdZc9OtYoODkVoW92CAsh
59aznB7oRMQR1p8Z4xTgQw4IIoCgHIrO4WIFjH21jjoM1LKecU4KN+7vjFLtGcnmi4ESgnpUnEak
nt1oeRIx8zAe1Z11cmU4XhaaTkFrEc8nmSs3aiGUxPuWoxS1vboBbN62OAAfpVaSRpDliTTaKSil
sAUuDVqC3AG6QZPYVYwMdKTmK5UtJfLkGc7T1rRZAx3AkN6isy4UJJ8vHfFWra5Hl4kzkdDUTV/e
QyfeyD94uf8AaWq1zKrkBBx3OOtE1wzjC/Kv86hojHqxNli0+8v1q6/3G+lUrT7y/Wrr/cb6VnLc
ohhTK5PSpwMdKjg/1dSUmxBRRRSAKKKRyVUkAsR2FACnjrWfdXRf5YyQvr6026uHclMFF7g9TVet
oQtqwCiiitACrti+75GPTpVKlVirBl4IORSkroDTuSI4uOGPAqmSSck5p9xIZCpZSvHQ1HURVkSL
SgkdCRTaKoDSQK6Bhxms+7k3SFAQVX9aeszpbuFBI9fSqgqYRs7jFoozRmtAFBwcjg1ftLrd8kp+
bsaz80VMoqQG6KWs+0uZD8pRpB0yO1X81zSi4sBaKTNGaQC0xkB6cGnZpaYWIYhiYg+lLcdF+tA/
4+D9KWf+D60wHIgHXk0+kFLUgFFFFABRRUNxK0Q+WNm9x0FCVwHzSrEm5z+A61kzzNM2W6dh6Uks
jSvuc5NMrohDlAKWkpasTFUlSCOorg/iRGBq9vOCCZoecdivFbHiPxJDp6yW9qRJeYxkYKxn3/wr
jbW1vtbu2kkd3JOXmccD+n4CvZyzCVFNVXovzOvD02nzvYWEFkQKCSQMAU4jBweDXV6ZpcFgi7cv
KFwXJ/lWJrsHk6g5C4SQbh9e/wCv86+rizpUrszqKKKooRgGGGAI96T5Ixn5UHr0qnqeqW+npmVt
0h6Rqfm//VXIXl9e6vNsAZlzlYkHA+v+JrGpWjDTqXGDkbWp+JY0BSwBd843sPl/CsWG31DWJd7M
zL/fkOFH0/LtWtp3h+KP5rwiVv7oJCj/ABreUBVAUAAdAK4p1JT3NoxUdjK07Qra3VGnHnTDk5+6
D7D/ABrZQKi4UBR6AYpuaUGoKJKUGmA0tAEgNOqLNOBoAfTgaYDmloAkBpSAykMAQeoIqMGnA0AY
Os+GobrMtlthmJyVP3W/wrnGj1PRrkHEi+UQwIyU/wAK9DBpSAwIYAg9QaAOS07xlPC5+126SKx5
KHafyroLLxhpdxIEdpYM8AyqAPzBOPxqGfQdMmdne1AZupViv6A4rKvPCMbNm0uCg/uyDP61zTwt
OXSxvHEzj5nexTJJ/q3V+/ynNTqa8ik07VtIn8yJZVxz5kOSOPXH9a1dI8a3kEpXUh9piPdVCsv5
YBrkqYKS1i7nTDFxektD0sGpFNYekeINP1NV8mdElPHlSEK2fYd/wrYBrklFxdpI6oyUldE4NV73
T7O+jZLy2ilDDBLLz+dSKakBqU2thtJ6M4/U/h/YzAtp88ls+OFf51/xH61iN8PNUC5W5smPpuYf
+y16aDTwa6I4urFWuYyw1N9Dy2P4eauzYaWzQepdj/Ss3xP4YuPD8Fo9xMkrTlgfLB2rjGOT1zk9
u1ezg1ieM9MXVdAnjEbyTRDzYVTqXAPGO/U1rTxk3Nc2xnPCwUXy7nl2lvm0UehIq4DWNYzm3kaK
YFRnBBGNp961VbIyDkV6h5xLSg0wGlzQBIDS5qOlzQBJmlzUeaXNAD80uaZmjNAD80ZpuaM0AOzR
mm5ozQA7NJmm5ozQA7NJmm5pM0AW7Y5Vh719N/Bid5vhnpRkOSDcIPos8ij9AK+YLQ/Ow9q99+Eu
vpYeBrK0khZxHJP8yn+9M7f+zUPYz+0eqFsw4rvLE77K3cd0B/SvHv8AhKYMY+zS/mK7HSPGdv8A
2dbqLWfhADyKhFI7Y/N93j3oABGO4rlj40tQMC0nz/vCop/GcaoDBZuX/wBtwP5UxnXj0auf8XqR
BbN6OQD+H/1qw5vGN66nZBBH9QW/qK57xL4i1aezQvchQHB2rEvofahgzXLZqJ7qFc7poxjrlhXn
suo3dyx864kbPbOB+Q4qkWycnk0hHeXPiKwhyFkaU+kYz+p4rNu/FRPFpBgf3pOv5CuV3Um6mBqX
WtX1zw87KPRPl/lVCSV5GLO7Mx7scmod1IWoAl3Um6ot1IWoAlz70m6ot1IWoAl3Um6ot1IXoAl3
Um6oi9NLUATbqTdUO+kLUATb6QvUO6o5p44ULzSJGg6s7AD9aALJekLVz9/4m0+0yqSG4f0i5H59
KwNR8XXUpK2KLbp/eYBm/wAKai2JyRf8WaBG8b3tkERxzImcBh7ds1yNvcFOHJK/ypuoapNcsWvb
ppG9CR+ijj9KzJNQUA+WhJ9TW0OaOqM3qdGDkZFFZOjX3mlopSA+cr2z7VrV3xlzK5m1YKKKGIUE
noKoBksqxjLfkKqPcSOcLwPamnM83XqeM9quxRLGPlHPc1z3lVemiHsJZaTfX6q8aYjJ4dzgeldb
oulx6bBjhp2++/8AQe1ReGndrSRWzsVvl/HrWvQqaizKcm9AoooqyAooooAKKKKACiiigCsZox/E
PwqN7lR9wZ+tAtU7lqekCKc4yfevh/dMisRJO2QBSyW7oMjDD27Veoo530ArRXIPEnB9asE4qGaF
GOeh9qdwq+gFJpPYTYpOTUiDApse1huBBp9JgjPnXbKw7VHVq9UfK3fpUUMTScjGB61qnpcZehXZ
Gqin1E00a5BbkcYqM3a7sAHb61lZsCwRkEHvWYQQSD1HFXhcREZ3Y+oqC5iZWLnGCaqOmjAhjXe4
X1NaZHy4FU7JMuW9Ku0pvUCKpAc/WkcDBJOPemKwYZU5FTuTsJNcKnC8tVdInmO7gD1qZIE35OT7
VZp3UdityiY5ITuxnHfrUqXQP3xj3FWajeFH6jn1FHMnuACeM/xD8eKGuI1H3s/SmG1TsWoFoncs
aPdAihzLc78YAOatSffT605VCDCjApsn30+tJu7ES1HD0b61JUcPRvrSAkoooqQCikJAGScCmecn
r+lO1wJBS1CbhBnGTUTzM3A4HtTUWwuWmYL94gUzzo/736VUpKpQQrlvz09/ypwmjz979KpU5VLM
ABzRyoC+DkZHSq98P3an0NTxrtQL6UMoZSp6GoTsxlO1YcqfqKsVVkgdD8oLDsRTMSHjDH2xWlk9
US0LOweTjoOKvwLshRT1xVa3tjuDSDAHIFXamb6IaGu6oMscU3z48dT+VNuIy65HUdqqilGKaBsu
faE9/wAqUTxk/e/SqVFVyILmiCCMjmnVmgkdCRVhLgj74z71Lg+gXLVFQi4j9T+VOEyE43VFmBJR
RRSAKjX/AF9SVGv+vpgSS/6s1FDIC2zHNSy/6s1FDHht5P0oVrAPlhSQcjB9RVRkkt23A/Lnr2/G
rU8vlgYGSaWGTzUO4DjrVJtLyERqyXMZUjDCqhBjcq1SzxGFw6Z25qRwLiEMPvr2FUtNthkFISBS
pFJIOBge/FTfZ4ox+9fn0Bp3SFYr7/SnpFJL0GB6mpvtESLiOOmi4mYfIgx7KTRd9EBbijEaBR+d
Pqhm5b+9/Kl8q4bqT+LVny92MvUhZVHJA/GqP2ab1H50SWzJGXZhx2o5V3AupIjkhGzjrin1V09c
IzepxVqpas7AFU7Ub7lmPbJq4ehqpYnEjg9SKcdmJjZzmVvrTQcEEdRUt0uJM9jUNaLYRYuUEsIk
XqB0pnmPNCAmdwPOOtLbybG2n7p/SkmRoJPMj+6anbQY6SFjCr/8tF6+tS2s3mLtb7w/WoppXYKY
c7e+Bzn3olgcBZE4fqwH9KW6swLZ5FZRBUkHqKvQXAkGGwH/AJ1L5Kby5XLH1pRfLuIzMHGe3Skr
QvUBhyONpzVFVZzhQT9BWkZXVwHQSeVIG7dD9K0Lc5DEdDWbIhRyrdRWja/c/AVFTa4Dp/uj61Rq
9P8AdH1qjShsD2CiiitCQpaSloAKKKKACiiigAooooAUUUCigAooooAcpwQfSp5xlQ1VxViM74yD
9Kh9xMpng06MZNEgINTWy85Paqb0G3oS4KoFX7xpiF1OwUeYRISOR0qRDwZG4qNhCSHYoVetVi2D
0p7EsSTUTfeNUkNCs2RTaKVVz1pj2EpakxSEZoFcdCOQa0Yf9WKz4uorQh/1YrKoPoQ3P3m+lUH+
9V+5+830qkRlvaqp7AxlFSgAUhANXcQ0dadvFNIwaSgCaNyDkVZYkqHT0qmnSrEDYbaehqZLqJgm
8tvAzTp1BUOO9DMY8qBwelLAcqUNT5iKZGDT4xk/pRKMNg/SpbZPmz2FW3oMln+WMKKr1JO2Xx2F
R1K2EFKKSlFMAooooAKKKKAFFLSCloAKKKKQBS0lLQAUUUUAPi+8fpWkOgrNi+8fpWkOgrKpuV0K
Fx94/U1FUtx94/U0xFZzhRk1cdhPcTrTXO0kEc+lX4BGvC/e/wBrg1HfQ7l3qOR1pKetgILRdzF+
mOMDvVus+GVoiccg9RUxuuPlXn3pyi2yWiadwkZzgk8AGqFOdy7ZY802qirFJWCilwfSkpgFPija
RsIM0sERlfArVVViXC1E58uwivDalR8zsCewNTxpsP32b6mkZiadGOprJtvcLjwRnHeomh3MT5jj
2BpFb/S2H+zgU6QYbPrS2AqzWj5JVt1UyCDg1rq5HXmo7mFZkLL94frWkZtbgZgpaMYJBorQApUb
awOAcdjSYPpRQBpIwdQy9DTqzopWjPy9PQ1Y+1DH3Tn61m4sViKcbJT3zzzTolaQHapOKZlppPUn
0rUhjEaBR+NOUuVDsZ1FXJxG/AyWH90Z/OqjKVOGBBoTuJk9p95frV1/uN9KpWn3l+tXX+430rGW
5QyD/V1JUUBGzHepaliCiiigAooooAjmiWVcN17H0rLljaJtrjmtimSxrKm1x/8AWq4T5QMelqWe
BoTzyvY1FW6d9gCp7OISS5Y8Lz9ahUFmAHU1oRoEQKKmTshN2Fvo8qHHbiqdXjyMHkHqKZJa8ZjP
4GojK2jFuVKKkWF2cqAMjrzVhbVVXLkk+1U5JASwxbYNrd+tZk8flSsmcgdDWkST1NQ3EfmJx94d
KiDs9R3KFFFFbDCp7a3aY5PCDqafbWpkwz8J/OtEAAYAwKznO2iAI1VFCqMAU6gUVgAUUUUAFKKS
lFAEY/4+D9KJ/wCD60gObg49KWfov1pgS0tNBB6U6pYgooooAKKKTNAFS7td/wA8Yw3p61nVuVVu
rYSgsnD/AM60hO2jAzKzfEeoNpukyzoMyH5E9iehrTdGRirAgiuV+IE23TbeIH78mSPoK7sLBVK0
Yva5dKPNNJnM+G9NS/unMwYwxAE8/eOeAf1rt4o0ijVI1CoowAOgrmNB1K3stLVCjNKWJbA9+Oav
LrjSOFitWdj0APP8q+3pwtG53zu2bdZuv25nstyDLRnd+HerVvJcSAGWFYwe2/J/lU7qHRlYZVhg
j2rTYhaM4WsnXtWTT4vLjw1yw+Ueg9TV7xRcDQw6t80p4hDD73v9BXGabZTaxfNJKW8vOZH/AKCs
61bl0W5004c2rGWFjPqlwZZWbZn55GPJ+ldVZ2sVpEEgUAdz3P1p0cSwIIo1CqnAAp4NcJ0DwacD
TBz0qVIXbtj60AIDThknip0tlH3iSfarCBVGFAFAFZIHbGRge9WUt0X72Wp9KD60ARSW4PKH8DVd
lKHDDBq/QQGGGGRQBQBpwNTSW3eM/gagIKnDAg0APoBxTAaeDmgB4NOBqKnA0ASZpaYDTgaAHCqG
o6TZ6ghE8QV+zoMMKvUZoA4nU/C11bsZLJvPjHIGcOP8afovi2+0xvJvA9zEDyJCd6/if612oOKz
tW0a11NcyrsmAwsi9R9fWonTjNWkioTlB3izoNJ1S11S386zk3r0IIwVPoRV9TXjrC/8Namro21h
yrD7sg9xXqWjajHqmnQ3cXAccr/dI6ivKxGH9lqtj0qFf2mj3NQGng1ADTw1cx0EwNPBqEGnA0gO
P8X+DF1GSS90val2xy8RwFc55Oex5rzp/tWmXDQXEbxuvWNxivdwaqappllqtv5N/AsqZyD0IPqC
Oa7KOMcPdlqjlq4VT1jozx6K/hcDcSjehqcXEX/PRPzrqtQ+HMLHOn3roP7sy7v1GKyG+HmrhiEl
tCvYlyP6V3RxVKXU45Yeouhmm7gHWVfzpn9oW4/5afoa3Lf4c6g/+vu7eP8A3ct/hV+D4aD/AJb6
ln/cj/xNDxVJdRrDVH0OV/tC2/56f+OmgX9sT/rP0Ndn/wAK0s/+gjcf98Cq0/wyyf3GpAf78f8A
gaSxdJ9RvC1OxzaXET/dkQ/jUoOelXrj4casjnyJ7WRPUsVP5YrGu/DWv2D4axumAPDQguPr8uf1
rSNanLZmcqU47ot5ozWIL+6hYpJyw4IdeRU0eq/89I/xU1qZmrmjNUV1KAjksPwqVbyBukqj68UA
Wc0ZqETxE8SIfowp+4EUAOozTN1BagC1Zn96f93+or1H4cTltIuIT0il4/EZryqybE/PcYr0X4by
4a+iz12t/MU3sZv4jvieVrpdCcmxx6OR/KuXkP7tDXTeHj/oL57yH+QrMo1OgpOnJo+6aPc9KYw6
81Q1wFrBj6MP51f9xVPVxu0+X2wf1oA5KM/vSPrUW6ljb/SmHuarbqQifdSFqg3Um6mBNvpC9Q7q
QtQBNupC1Q7qTfSAm3Um6oS9JvoAm3Uhaq0syRLuldUX1Y4FZt14g063OGuA59IxupgbRekLVxt7
4vbkWVuP96U/0H+NYt7ruoXYIkuCiH+GP5R/jTUWyeZHod3f29opa5mSMf7R5/KsO88XWcXFskk7
euNq/rz+lcM8hZssxY+pOaYXPatY0WyXM6G88U6hOuIykA/2Bk/ma5+7v975ubh5XHTcxYj/AAph
JNVrm2EnzJw/861VGxN77iSah/zzT8WqrJcSyHlyB6Dio3VkbDAg02lZIoKKKKYDo3Mbq6nDKciu
qsbkXNurj72PmHvXJ1f0i58i42kna3WtKcrOwpK50tR3BxC/0qSobv8A1JrefwszRb8O6Z9uEzmT
YEIH3c5rfj0GBSC8kje3AFUvBX/Htdf74/lXSVlTdooznJ3GQxJDGEiUKg6AU+iiqICiiigAoooo
AKKKKACiiigCKiiivhTIWg8UU1z2pAxp5oeMOhDUqjmorqYr8iHB7mqV27ISIQWt5MAgj+dWRcxk
ckj2xVDvS1o4p7jLszxyREKwz2FVVd4+FJWmqcMD6HNaTKrcMAfrUv3dAM0nJyetJV+S2Runyn2q
E2jbuGG31pqaAripGkdxtYkj0qylqinLEtU6Iq/dUD6Ck5oCvbMkUZ3sAxPSpPtMX979DVOc5mc+
9Mo5U9WBNJK07hRwvYVaihEa46t3NZ9W7WUltjEnPSiS00Am6VIpyKaw70Ieaz3J2Y+iiikUFLSU
tAMWo5Pvp9akqOT76fWgRLUcPRvrUlRw9G+tAElFFFSBBdZ2D0zVarzqHUg1UMbB9uOa0g9BDKWp
Vh/vH8KkCKOwquYRWoq1gelBC4yQMUuYLldVLew9TUqyJFwoLHuelQmkptXGTm4fPAAq0pyoPqM1
RhTfIB271eJAGTwBWcrbIYoparLcEyAEDaankbYhb0qWmgHVHO5RMqOTUcU+5sPgZ6VNIu5CPana
z1ArrcsPvAGkYpJkj5G9D0NQkYJB60CtOVbokUgjrRT4iNwDDIqwFA6AUN2EVKWrRUHqBTTGp7Y+
lLmAr0oqRoj/AAnNLBEXOT90GndDLMOTEueuKfSUtYsYVGv+vqSo1/19AEkv+rNVVudhKlcgHqDV
qX/Vmo1jR1G5QT601bqAjeXcKNrYYfnUkMYjXAOSetU54TAQ6McevcVZE2bfzAOf602tNNhErqGU
qehFUrZvKnZW6HipoJmZ9rc5qtcDdcMB1JxTit0xk09ySdsX5+tNjtXf5pDj69alijSBAz/eNWEc
OuV6UnK2wiofLjfAjBx3NW0O5QR0IqvPGiksz4z2xmm/awoComQOMk4oa5loAs8jiQgEgCrETFo1
J61Ta5VjkxKT9amhuQ7qgTGfeiUXbYBZpir7VxxTbl91sDjGTUskKuc5INQ3oCxIB0BoVtAJrMYt
19+amqK2/wCPeP6VLUPdjCqUmYLjfjIPIq7TZI1kTDD/AOtRF2EJlJ4+Dkfyqu8LqeBuHqKDbyxk
mJuPrim/aJozhwP+BCrS7ANII6g1YhkDDZJz9alD/ug7DHGcVSY5JJ70fELYeQ9tJkcof1qSaR5A
pgJxjkDsfekimBXZKMg96R4miPmQtletHXUY+e3Vl3ZCt39DTUuJIuJQSOxpskguFVc7Wz0PQ1YK
rFbYkG8L60tlZgPEkcy7QwOR0709VCjCgAVRihWYMyEoR2607bcoTht2O2c0nHpcRJdQeYNyD5h1
96ktfufgKgN1In+sj/pVi2OVJ9eaTulqAs/3R9az1bP1rQn+6PrWcy45FVTBj6Kapz9adViClpKW
gQUUUUAFFFFABQBk4FFTW69W/Ck3YByxBRlzRujHGAfwqOR9xz2qIv6UrX3AtAxH0oMKtypxVQMa
eshHQkUcr6BYkaNl7ZHqKIm2tz0p0c+R83PvTyiSDK8fSlfuIbcJ/FSn5IcdzT1B24fmkYB32nsK
VwE3K6BV6/yonPAUUsaASNg8CoXbcxNNbgRu2DgU0nPWh/vGjrVlIKVWwKXYaNhpANJzTgab0paY
E0f3hWhD/qxWdCckVow/6sVjUDoQ3P3m+lVCcCrdz95vpVFzzThsDEJJ60qtjrTaUAnpWghScnNJ
TthoKkUAICRUinPI61FT06GgC2x3xq2M460PKpZSvY9aS3OQVoSJSDuPI/Ss9iRLhfmBx1qT/VRe
9LHhkX2pHQyNzwoov0ArgEnjk1IsLHrxUhZI+AOahknJ6HH0p3b2Al8uNfvEfiaXdEOgH5VTLmlD
mjlHYuDym9Kjli28jkVCrZ+tWYX3AqeaWqEV6KdIu1yKbVAKKWkFLQAUUUUgClpKWgAooqNm3HAo
AlhbL4HpWoOgrMgXDH1xWmOgrKpuV0KFx94/U0+GUQjDIcnnNDLunUHpuNW2VWGGAI96G1azB7jf
3co7N/SmklOH+ZD39PrUbwFDuhJHtUkMomUgjnuKVuwihcxGNyR908g1FWntG7y3+ZTyvt7ULaRA
5wT9atVLbgZ8UTSNhRV+G1RB8w3Gp1VVGFAH0qtfSsgCLxnnNS5OTsgJZI4thyFHFZbdTijcT1Jp
YkLuFHetIx5d2BoWCBYd2OTUhOTk1Ii7UC+gxTdhrG93cTGgZOKkYhEJPQUhKxrljVC6uTJ8q5C/
zppczBKw1Zj9o8w+taZxImVOQehrFq3aXOz5XyV/lVzjfVAW6VDhqd8sg3KaAhzzWVxWKF8m2bPZ
uaSzCGX58Yx3q3ex74sjqtZvINaxfNEZr+VGf4VqrPadWj/KqiuykEMa1YX3xK3qKhpw1AySpU4I
xRWs8SP95QaatrErZwT7Gq9qgIbKMIplfj0zVgbpOTlE9O5oxvfH/LNeMepptxNsOxOW/lUNtsB7
PHCuOB7Cq0z+cPlQ8d6ljtxndKdzelWFAAwAMUrpAU7T7y/Wrr/cb6VUgXZLtPZqtv8Acb6UpbjK
6fdqVXI681En3aWmQ9ywDkcUZqBWI6VKpyKlqxSdxaUUlKKQwooooEIyhlIYZB7VQuLRlJaP5l9O
4rQoqoycQMyzA8wk9QKu0skS8ui4cDt3ql9rP9wfnV/FqiWi2SFGScCoJrw7dsXH+1VWWZ5DyePS
mVSh3GkOV2V9wJDetXYrsOoWTg+vrWfRVOKYzXorOiuHTgncPQ1PHctI4VUGT05rNwZFmQSAmZgv
JJPSrlraY+aUAnstTxxJGcgfMepqTNTKo3oix1FNzRmswHiimg0ZoAdRTc01nx9aAJCQOtRtITwO
BUZYnrRmqSJbHRf638KdcdF+tRxH99+FOuDwv1pdRigkdKkWTPXg1DmjNNq5JZzRUKORwelSZqWr
FDqTNJmkzSsAuaAabmquo39vp1nJc3cgSJBknqT7AdzVRi5Oy3GlfQlu0iaJmlIUKM7ycbRXk3jD
VoNSukjtCXhhyPMxgMfYelSeKPFFzrUxt7bfFZcqIweZc45b8uBVrRfDywETXwWSTtHjKj3+tfT5
Zlsqf7ypv27HZSpKn70tynoujzTxI04MUXXkcn8K6e1tobVNsKBfU9z9amor6NaKxTk2FVdTvoNN
sZbq5dVjjUnk43HsB7mrJIAJPAHJryDx14hbW9QFtaNusYWHl4H33xyf1IH/ANeoqT5FcqnDndjO
1C8u/E+tmV/lLfdXORGorq7K2itLdYYVAUfqfWqWi2AsLbDYMzcuw/lWiDXE3fVnclbRCSRb2yDj
1pUgUfeyacDTgaQx6AL90AU8GogacDQBKDTgaiBzTgaAJQaXNRg04GgCQHFKDTAaUUAPBpSAwwwB
HvTQaWgCJ7bPMZ/A1CY5F6qauA08GgClscLkqcU2tCmPCj9BtPtQBTBxTgadJA6AnqPaohQBKDS1
GDTgaAH0tNBpaAMjxbAs+hzNs3PEQ6n05Gf0zVf4Z3J23tsfujbIPr0/wrZvYhPZzxHo6FT+Vcn4
BnaLVZoB8rSx4B9CDnFYYlXpM2w7tUR6cDTwazxcPEQJ1/4EKuK2QCK8a1j1SdWp4NVwaeGpDJwa
cDUIanA0ATA04GoQacGpATA04GoQ1ODUDJg1ODVCDS5oAmBpQaiDUoagBl3ZWl6pW7toZgRj50Br
Hu/Bug3KgGwSPHeJiv8AKt3dSg1UZyjsyXCMt0cLefDSwkBNpe3ELHpvAcD+R/Ws24+GNwqZttTh
kf0kiKD8wTXpuaXNbLFVV1Mnhqb6Hj0/w71yP7n2Wb/clx/6EBWfL4O8QQsR/Z0re6MD/I17jmlz
Wix1Rb2IeDg9jwp/DviCFdzWN2B9M1Va11iPIa1uxj1hP+Fe/wCaXOapY+XVEvBR6M+f7Ka6iv4V
uA6gsAQy4r1P4eHF9ef9cl/nXTXMEcsEimNSWUjoK4CK21fTWYwxXUTEYZolJz+VdlDEqsmnoceI
w7pNNanrJbNpn+6a6jw6wNnIp7Pn9B/hXgP9vaxbqVe8nUHqJB/iK0dP8f67ZgrBdwOD2eFT0+mK
6ORnLzpH0EBxzQDj6V4fH8UvESkb49LkHfdA4P6PVxPixqgGJNOsW/3Wdf6mjlZXOj2Tp06VV1Tm
wnx/drytfi3egc6Nbt/28sP/AGWkn+LFxNA8R0OFQ4xu+2E4/Dy6OVhzo3oz/p7D3NVXbDMPQ1yI
8cSi5Mw09M5zt88//E1Xk8YTuzMLOMZOf9YT/SlysXMjtC1NLVw7+Lbwj5ILcfUMf61A/ijUm6NC
n+6n+JNHKw5kd8WpC1ecy67qUn3rth/ugL/Kqs+p3Uo/e3crf8DNNU2w5z0ie+toBma4ij/3mArP
uvEenQZAmMreka5/Xp+tedtOpOSSTTDP6L+ZrRUJPoLmZ2c/i4YIgtDnsXf+grKufEWozHImES+i
KP61zxlc98fSmliepJrWOG7iuy9LM9w++WRpW/vM2TU0VtvUNvGD6VmwvtbHY1p2cmH2HoelNU1G
dpbEsgukMUmAflI4qCtaeITR7Twex9KynUo5VuordxUdiUxKKKKQwooooAZLEsow4/GqE1q6cr8y
+3WtKkyPWk4pjTMaitWSGOT7wGfUdarPZH+Bs/Ws3BjuU6UEqQRwRUr28qDJXP05qE8HnilsM6rT
5vMgALZI/lUl5/qfxrK0STbtzyCSorUvf9UPrWzlem2Z21N7wV/x7XX++P5V0lcx4LlRUuIiwDsw
IHrxXT1NP4UYz+IAM9KUqw6qR+FamnIot1YAbjnJ/GrnXrzW6p3Ri52Zz1FbctnDKPu7T6rxVZtL
P8Mo/EUnTY1NGbRWkulNn5pQB7Crdvp0EfL5kb/a6flQqbYOaRk21rNcMBGvH949BWtb6PEozMxc
+g4FXkwoAUAAdhUgNaxppbmcpt7GbNoqM+YZCi+hGaK0HmjjOHcA9eTRT5IC55Hn00pkP+z2FT2f
+rPpmqsal2CjvWiihVAHQV8BLRWLHUxutPpjdazQMcvSqN1/rmzV5elVruMk7wPrVReoFUUtIKWt
QCtKNxIoZapQR+Y+D0HWnpvgmwBuB7etRJX0Auk4FM3GkJzShcjNZiHKc04sFUknAFRA4NQTs8kg
jA47CjluNMgc7nJHQmkqa4h8raQcg/zqGtU7gFPiz5qY65FMqzaRktvPQdPehuyAuHpTB1FOPApo
6isUSySornPktt/H6VLRSWhRnRSGNsj8a0UYMoYdDWfPH5b4HQ9Knsn+8h+orSSuroRbqOT76fWp
Kjk++n1rMCWo4ejfWpKjh6N9aAJKKKKkBCQASeg5rPMzGTf36Yq3d/6hse1UK1ggLS3K4+YHPtUq
OHztzgVQq/GAqKB6USSQmOqKZuNo/GnSPtHvUBOTk9aIoQlFFWYIsHc457Cm3YZJbx7E56nrUVy+
TtHQVYdtqFvSqOckk9TURV3cGFWJn/cRj1HNV6cxyiD0zVtaoQ2rlvJvTB+8OtU6fC+yQeh4NKSu
gRJdR4O8dO9QCtEjIwelU5YjGcjlfWlGXQbRHVqNty5796q05GKnIptXJLVRvMqMQwOaeCGGR0qK
6GUB9DUrcBr3HGEH4mltJtr7WPDH9arUq53DHXPFXyq1ijWooornAKjX/X1JUa/6+mBJL/qzSRfc
FLL/AKs0kX3BQAy7IEDZ7020UNAQw4JqO8ffII1GcfzqZZI4kClhkDmqtaIh6RKmSvX3qC2hYSl5
ByOn1pxu4x0yfwpVuoz1yPwo94YXMbOQy88YxTQTbxEt95ugqZJUc4VgT6VVuvnuQv0FC10Yghha
Zt7/AHT1PrVjEMAxjn8zUjkRxHA6DgVRJJJJ6mmry9ALylJBkAH6iqoAW/wAAP8A61PtB87HtimH
5r/g9/6UkrNoCw0yK2OT9Khvz8ifXNOeBi5IIwahu+ZEjX+EAURSurAXLcYhQe1DzRocMwBqO6kM
UaqvUjGfSqYX1pRjfVhc01ZWGVII9qcKzImMUoIPHQ/StMdKUo2AKpTfPeAdeQKu1Sg5vGz7049W
BNdNhAvrVWp7s/Ov0qCqjsJhT45GjOVNMoqgJm8qY85R/XtSFZoVI4ZD6cioqkBeJuCQfSpsFySG
4iRduwr645ot4x55kDoV5PB5phcN/rEVvfoaYUjY8bk/WlYLk9wZvOHlk7e2On41PB/Fn1qmI1H3
JsfUYq3bfdPeplsA6f7o+tUavT/dH1qjRDYHsRsMHIp4ORQRkU1DzitBD6WkpaBBT0jLewoiTc3P
QU+WTbwvapb6IBfKQDk/rRti9R+dVi/PrRv9qLMLFryUI4NKw2QkVVDehxTzIzLgnIoswI2Pam0H
qaUAmrGApQCaljiLdPzqYKkfXlqlyC5CkJap1jCcs3NIshdsD5RTJV2t1z9anVkkplUdiajKFwX4
55xT33SKAFI+tARguC+B9KWwAvyQE9zUJ4FSykCMKDmoSMg1SAjJLGpAMCmovOTSs2OBVMY6imBj
nmn0gEIyKZUlMbrQA+D71aUP+rFZ0I5FaMP+rFZ1B9CG5+830qg33jV+5+830qg/3qdPYAUZPtUl
NToadVMQ6ikY4FM3GhAK47ihG7U4HcKYo+b6UwJ4m2uDUkqFpeO4qEVaOHwVbBFQ9CSNSYThhkH0
p+9XGDkZpkkbk5zupZmJXBUiluA14M/dPFQvGVPpViNcR7gxBoWUNw4ppsLlMgilFW2iVhlD+FV2
jI7YPpVKVx3GVPA3zKfwqA8U+M0MC48W9s5wKTy4x1P61A8rH7zVGXHaoUWIthYj0I/OhoQR8hqp
v9qkjkKnjj2oswsKylTg0lWOJk9CP0quRg4NCYBS0lL0FMBkh7ClRcD3pqjc2TUlMY+L7x+laQ6C
s2L7x+laQ6Csam4+hBEuZ2Ppmp6ih/1kn1qWoYMKqzr5UyyL3PNWqjuRmFvbmnF2YhZPmi3L1GGF
SA5AI6VFAd0C/TFOtzmFc9RxSaAkqvdwGUAr94VYooTtqgMkW8hbG05q/a24iyW5ap6RmCqWPQU3
Ny0AbLKsQyx/CqUl67E7OBUE0hkkJNJCnmSBfWtIwSV2IGYscsc02rNzb+UoIOR9KrVaaa0GFFFF
AhyOyHKnBq1FesCBIMiktrUSoWLY5x0qvKnlyFT2qdJaAa0UiyrlTn2qpc2p3FoxkelVreQxyAj8
q1lO5QR0IzWbTg9BmYlvIzY24+taUa7EVR2FOoqZScgFpJDtjYjrjj60tRz5zGB3YVK3AUnyYPXa
KitE4Mh6k8Ut42IsepqaMBUUDoBVdAHUCigVIERGLgVM/wBxvpULf8fC1M/3G+lDArp92lNIv3aK
sh7i0oODmkopCJgcjIp3aokbBx2NSVDRd7hRRSUALmgGkooAWs++h2t5i9D19jV/NNYBlKnoeDVR
fK7gY+aKkuoTC/H3T0NRV0LXUBaKTNGaYC1o2EWxfMbq3T2FV7ODed7/AHR09zWhmsqkuiGPzRTM
0oNYgOopuaM0CHilpgNBbAzRYAdscDrUWaQnJzSVSViHqOzRmm0UxD4j++/CnXHRfrUcR/e/hTrg
8L9anqaIXNJmm5ozVWIHZp0b4OD0qPNJmiwFrNJmo0fI965fxX4sj0vdbWWye95DZPER9/U+1VRo
TrT5IK7NYRc3ZGvr2uWmi24kumLSNwkSY3N/9b3ryfV9UvNbvfNunzjhEAwsY9v8ahnluNSu3uLm
RpJHPzOf5VYjjWNcKPxr63LsrjQXM9X3/wAjup0lT9S34es86hEQASvzMTXZVieGI8RXEn95gv5D
/wCvW3XsWS0Qpu7Ciis7X9Vi0fTJbuXazKPkjLY3n0zRsSlfRHNfErXWsbJNPtXKz3HLuP4U7j2J
4/DNcP4fs/nW5lAwThB/WqYaXWNWlmnb5pGMjn0Gen9K6OIBNgUYUYAFcNSfM7nfThyKxog04Gow
aUGoLJAacDUYNOBoAkBpwNRA04GgCQGng1EDTgaAJAaeDUQNOBoAlBpQajBpwNAiSlBqMGnA0DJK
UGowacDmgCQGnVFmnA0ASA+tNkiWTkjn1oBzTgcUAUpYWj68j1FMBrR4IqrcQ7fmTp3HpQBGDSg1
GDinA0ASda83t38rX89MTMB7ckV6MDXnOrII9enUdBN/WmtWI72z1iWPC3A8xPUfe/8Ar1sR3Ed5
Fm3lwQfofxrzuC6kiwAcqP4TWhbXqMQ27ynHv/Ws8RlyesdDWli5w0lqjuY5pEcJKuc8Blq0GrmL
bWZo+JlEg9ehH+Nasdzb3hj8ubbJ2XvXk1cNUp7rQ9CliYVNnqagNPDVn+e1uGNyyiFesjHAA96x
NX8ZWFkqi0xeSHqEbCgfXFZRpym7RVzWU4wV5M60NTLi7t7aNpLiaOJF6s7AAV5beeMdXvZWS1Kw
K/CpEuW/PrmqUeh6ne3G+6DKW5aSVsmuuGBk/idjmljIr4Vc7268daRbyMkZnn2/xRp8pP1JH8qx
r74iSFSLCyVD2aVs4/AVnweFIFYGa5kcd1VQv681ox6Fpsb7ltlJ/wBpiw/ImumODpLpc55Yqo/I
zv8AhYGsf3LT/v2f8aB4+1peStrz6xn/ABrfitreEYigiQf7KgVLsjIwUUj6Vp9Xpfyke3qdzCtf
iJqSSg3NvbSx91UFT+eTXVaN440vUZ0gk8y1lYdZcBM+mc9ax7jSbC5/1trHk91G0/mKwtT8LAK8
mnuxOciJv6GonhKctlYuGJqR63PX1YEZBBHqKUGvGdH8Sar4cdbRlDQIcm3kHQE5OCOlej6B4nsN
YjiWOVY7txzbsfmBAyceo9686rhp09d0d1LERqabM6DdS7qi3YGTUUgFxGNkmFzzjvXOblhp0UgM
6gn3pJ5xCASrHPoK5++1ewsgBbqLmX0DcD6ms658UXkmBBHHAP8Avs/meP0rphhKs9UtDmni6UHZ
s6xbuRyNkDY9TU07ShB5IBb3rg21vU5ulww/3FApo1PVEOftM3481usuqNXuYvMKfZncLNdAjfED
9KnmnWFQWDEE9hXEweJdQjcGQxyr0KsuP1Fall4ohmfZdw+QDwCG3D8eBWM8HVjra/oawxtKWl7G
5BNJPPvU4iXjHrXM+LNX85msbcgxL/rG9WB6CrWt67FFaCLTpFaR/wCNP4B/jXGXEpyecs3JNdWB
wjlLnkvQ58ZiU17OD9SOaQlsKcAelMDOeFLH6VLZRxyzhZTgdh6n0rYiiSIYjULX0EYJKx5jdjNh
tLhwCzbB79avR2qIBuJY+9T0VXJHsTcj8iP+4KPJj/uCpKKOWPYQ0RoP4F/KnAAdBiiimklsBDNb
RTHLrz6jg1Um045zCwx6NWjRTC5hS28sTYZD9RyDUVdFUEtpDIcsmD6jilYrmMSir8unMqkxvuPo
RiqcsUkWPMQrn1oKvcZVuByQCD8wqpTo3KNnt3rOpDmWm4G9E4kQMKjuYBMuejjoapwTFOUOQeoq
2l0hHzZU0o1U1aW5FihJDJG2GU/UdKasbscKrE/StI3MY6En8KjN56J+ZocoLqGpCllIfvFVH51Y
WziAGck/WoWupCeMD8KTfO/ILY9hU+1j0QWZcWGNPuoo/Cn7h6iqBjmI5DfnVbzE/vCj2r6RCxsb
h6iomhifqq/hWdF+9bEYLGpvIlHRTR7WX8oWJnskI+QlT+dV3tJV6AN9DT/36c/MBSpdOD82GFHt
Y9VYNRttbSearOpUKc81Yvv9Wv1p8U6SDrhvQ1Xu33yBRyB6U6klyaB1J9PLRKJEOGDZBHbFdrpd
4Ly2D4IdflbPriuNhG2JBjBxWnolz9mvQGPySDYf6H/PrVxjaKRE1c7fT5tj+Wx4bp9a0wawAcHI
61s20nmwqx6960hLoc011LANPBqIGnA1qZkoNKDTAacDQIkBz9aXcAMk4AqMGs/WLnCeQuMtyx9K
HKyuCV3Yo31y1xcM/wDCOFx6UVWormbvqdCVilaJhNxHJ6VYpFG1QPQYpa+FbuzMWmuKdSAg9CDU
gxqnBp/Ue1MIxQCRTFsMe2VjkHb7Cmi0HdjU2/2oLntTuwuKqqi4AwKRsEg46dKQkmnKvrSDcjMi
q4VjyasVWu4srvUcjr9KYlxiAg/fHA96drq6GSvIgk255pynDZxzUFpHuYyNz6Z71aKZ5FDstBWF
+V1wQCPQ1A1opPDEU8ZBpwY0tVsFyNLVQQWJPtVgAAYAwPamb/agkmk7vcLisfShBzmkAzUnCj0F
DEtdQooByOKKRRHcR+ZHx1HIqpanE6471fqlGNt2AOgJq4vRoC/Ucn30+tSVHJ99PrUCJajh6N9a
kqOHo31oAkoooqQEZQykEZBqjJbupOAWX1FX6KpSaAzBG5OApz9KtNJgADr39qsiqtwu2TPrzVqX
M9RMjJyeaACxwBk0lW4I9q5P3jTbsAkUIXluTU460lKKybuMhu2wgHrVUVPeHlRUArSGwmKAScDr
Urx4XjqP1pYV43VJQ3qSVaKfKu1uOhplUMvxHMak9xTsAjBGRUVscxD2qYVg9GUVZoNvzJyO49Kg
rRqrcx7TuUcHrVxlfRiaIkYqeKkkJliIUEt1IFQ1btFwpb14FOWmoikI3J4Vvyqzb2zBt0gxjoKu
UVDm2MKKKKgAqNf9fUlRr/r6YEkv+rNQSTCOIAfePap5f9WaqpAZJCz8L/OnG3UCCNHkb5ASe5zV
lLMY+djn0FWVUKMKABTJpRGPUntVObewhBbxAfdz9TSNbREfdx9DUS3R3c4I9KmNwgUHkk9qVpIZ
C9nx8jc+hqJI5FnTcpLZB9atC4QnkEfWpwcjijma3FciuVdwAoyO/NRpbk/fOPYU64nMTKAucjPN
RNdseFUA/nQua2gE8rLBFxwe1QWigZlc8dATSJFJM+6TIHvU08R2rsHyr2o0WgEysGGVORVIfvb3
K9A2fyqVC0MLsRgnAAptmu1XlbpihK12Ay5bdckHoOKSmKSzsx6mnVolZWExpI3jJwPWrwuoh3P5
VSCDvShR6VLSYGhHKkn3GyfSqpPl3v1P86gOUIKnFWrlPMjWVRzjn6VNkmMW7HzKfaq9TwSrLH5c
n3v50j27D7uCKE7aMTIaKlWBz2x9alCRwjc5BYdqbkgEhiCjfLgD0NJdD94G7EVDNK0xOAQg7VNG
PMtMDllNKzWrAgoooqyRyDc6j1NXYP4vrUNpH/GenapoP4vrWU3croLP90fWqNXp/uj61RohsD2C
o24apKY/UVohD6WkpaBE8fyw5qrIe1WlG6Cqr9aUQQ2gUUCqKFoBxRSqM0CFVc/SrEcWBluB6Usa
BF3PSsGdd2cD0qG7iFZmZf3Y49abC4UndnJoiLkYXAHrTiyR8AZal5CARksWPy/SlLovTk1Czs3U
0wtjpRa4WJmlY9OKYST1JNRh6buJqkh2JRQWAODSISetMc/NRYBzP6U0AmkqVQMcUx7DApzzUlNL
YOMU0saQtx7Nj600DJpFGakoAdH94VoQ/wCrFZ8f3hWhD/qxWUx9CG5+830qmwyKuXP3m+lVKcNh
MjB2mpAc0jDP1pnINabgSsMimbTQHPenKc0AMBwaeGHekfH40ygCYHIpabH92mktnmkImDsOjGpB
N2YZFVlb1o3+1KwFvCOMI2PYUiDyixYceoqurZ6VMkpHDcipaYhFLGQ7OM84qbh/lcYakCg/NGQD
UeGeTB4NLcBssZU89OxqHkcVdzjCSYOehqGaLafbtVRYIr0UHiirGFKKSloGWbdvmHvS3A/efhTL
YfOv50+4+/8AhWfUkjpH+7S02T7tMBY/u06mp90U6gB8X3j9K0h0FZsX3j9K0h0FZVNyuhXVisj4
9alWT1qH+N/rS0rEt6likZQylT0NMjPapKnYZWtW2M0bdc8VPsIYlGxnselNmhEnPRuxqPFwgwDu
H51W+oE2JD1YD6Cja6gkPuPoRUAa59MfUCpLR2dWLnPPFJppASxuHXI47EehpWXcjKe4pqfffHt+
dPFS9wMeWNkcgirFhExl3kYUVoFQeoBoJCKTwAK0dS6sBV1BsRqvrzWfUk8hlkLHp2qOtIqyAKKl
8h9m7H4d6ip3EaensDCR3BqtfRMJSwHymo7aUxSA9u9avDAHgg1k/clcZkwRtI4AFayjaoA7DFKA
B0AFFTKXMA2RtuABlj0FJsc8+YR7ACk5+089NnH51HcPIsihDgGkl0Amw/8AeX8qVUIYszZP6Cqx
a59P0FLsnlGHIUUW8xBKfOnVR0HWrdRxRrGuB17mpKTfRDEJx1pu/wBKYxyfagU7EtgDmZc1O/3G
+lV1/wBctWH+430qWMrqpKAiio0uRE+xx8vYjtVllDruUiq1W4NEdFFBoIEqcHKg1BUkZyDSY0Po
pKQmpKFzRTc0ZpgLRmkpM0xiSIJEKt0NZU0bROVb8D61q5pk0ayrtb8DVxlygZWamtYTM/P3B1NN
igZ5zGT06kVpooRQq8AVc5W2AeMAYAwKXNNzRmsAHZozTc0A0AOzRmkzSZoAcDTJW6ClzULNljTS
Ex2aM03NGaokdmjNIvPSnNIkKksQP50DSuEeRNg+lOuDwv1qCCXzZdwBAxT7piEBHalbUoe2R1pu
ajt7pZcK3DfzqRxjkdKeq0ZLQZpM03dSFqYjjfGHiea2ml0+w3RuBiSYZVgfRf8AGuKhgaUl5CcE
5yTkk113xE04fudRiB3H91Lj0/hP8x+Irl7N90WD1XivrsphSdJOK9fU9KjZQTiTqAowAAPaiiiv
cNDX0K/itUljuGKqSGU4J579PwrTk1myVSVkZz6BD/UVytFTYlxTNS81qeWMqgEI7sp5xXm3ijVp
dRuvLM0jxREgbmJz781u+I777NatHG2JGHP0xXLaVAZ7rzGwVQ5Oe5rmxE7LlRvSglqaulW/2e2B
P33+Y/4VezTAaUGuQ2L8bbkBp4NVLd8Hae/SrINAEgNKDUYNOBoAkBpwNRg04GgCQGlBqMGnA0AS
A04GowaUGgCUGnA4qIGnA0ASg07NRA+lOBoAkBp1Rg04GgB4PrTqjBpwOKAHg04GoxSg0AS07ORg
1EDTwaAIJbfvH+VVyCpweDWgDSkBuoBoAzwa4HxCNniGb/fU/oK9K+zxHsQfrXnPjBPL8QXABJwE
6/7ooWgC0UMQoySAPeqc16ACIhz6npXpynGG5mlc0o7t7cFi2UHUMaZPrwUL5EeX7k8AfSqFnY3e
pSfKDs7u3Ciuh0/w/bQKGuf30vXrhR+H+NcVSopvRFcq6mCH1TWCyeZcTrndtaQ7B9MnFa1j4ZTY
rXkjb85KoeMema6JAqLhAFHoBinZrBK2xV7kVvaW1vjyIIkIGMqoB/OrGaZS0wH7qXIqPNLmgCSi
mZpd1ADqXNNzS0AV76xtb1CLiFGYjAfHzD6GuS1HQbvT5TPZF3iT5g6th1/r+VdrRQBz2geN7qyj
+zakHuoyf9azZdRj9fxrq59Ytrzw67adchyXCNjKkevXnpWHqej2t+CzpslxgOvGPw6Vy19pF9pp
DxlnQ/xRZ4+tc7w0HJTRssRPkcDqraESgkkgD0pJL2yhJUkFl7BSf1rlotduPs7QzYKkg7lGG+lP
SaN1DB1x7nFerScLabnHyPqdEdZgB4jkx+FPj1e2b7xdPquf5VznmJ/fX86Qyxjq6/nW3MLkR10M
kFym+Pa49cc017VCSVJHtXHm/jiOUdt3T5Kt2/iR4yocM6DqCBn86zlOm9w5H0N/7NJuxgY9c1Qn
gliOZFIz361PZa9ZXThNzROegkGP16Vpq8coO1kcd8EGqpxgvhJ1W5gAkEEEgjuK07K9DAJMcNwA
fWnXFgjgmL5G/Ss6eCSFiHXj1HStB6M3qKxra8khIDHcncHrWrBOkygoefQ9aCWrElFFFMQUUUUA
FFFFABRRRQAUjKGGGAI9CM0tFAFSawikOVyh9B0rPmtJogSy5UfxA1t0UhpnPKxX7pxUnnn+6K1Z
7SKbkja3qKzLm2kgPzcqe4qZQi90UmmEcwLgP8q55I7Vqx28YAP3vrWHWrptxvj8tj8y9PpSVOK6
CZbCIDwij8KdRRV2sSFZ1/ZnJkhH1UcVo0UwTsV7CIR2yHA3MMk1Yro5tKjurOGSHEcxReex4Has
K5tpbaQpKhGDjOOD9DSTFzXIaY8SODlRz3xzT6KGk9xlKS1YH5PmH1p0FuwcNIMY7dat0VkqMU7j
uFKpKsGHUHIpKK2EdtazCe2jlU8MM1p6a/Lp+IrA8PsG0uMD+FmB/PP9a17Rttwh9eKhaM55Loa4
NOBplKDW5iSA08GogacDTEOkkEcbO3RRk1z8rmSV3PViTWlqshWFUB+8efpWVWNR62NYLS4UUUVm
WRUUyJt0anOeKfXwpkQXhYIMZwetQ2hIlAHQ9avEAjBGRSKqr90AU1KysAtIVFLRUgN2e9KE9TTh
RRcLAAB0ooooAU+9Zsm3zG2fdzxV65fZCxHU8VVSHNuznr1FXDTUC7HjYu3pjinCq1k5KFT26VZF
RJWYwIB60hT0p1FK4hmz3pQop1FFwsFVL0tuUfw4q3QyhhhgCPemnZ3ArWJPzDtVqkACjgAfSlob
u7gFVIxm8PsSatngZqG1BO+Qj7x4oWiYMsVHJ99PrUlROcuv1pCJqjh6N9akqOHo31oAkoooqQCi
iigAFI6BxhqUUtMCFbcBsk5FTUUUm29wClFJTJn2JnuelMCvcNulPtxUYpKkiGXFarQRYAwMCiio
o5Q0jD16VFiR0wyn0qCrR+6fpVWqiBZtGGGXv1qyKz43KOGFX1OQCO9RNWZSFpGAZSD0NLRUIZXW
2GeWyKsgAAADAFJTqbbYBRRRUgFFFFAgqNf9fUlRr/r6YEkv+rNNiI2jmnS/6s1QfhjTiriNGs+5
cs7fXFIkrA8MaawLHPerjGzAZSkk9KSnIQDzVsYnKmrlnISSvbGRVRyDVmyX58+gqZbCJbxA0W7u
vNJZEGM8DIPXFWCAQQehqlZZWZl9qzWsWgFaZ95+bHtVwH5QTxxzUcpjjwzgZPtVSe4MmQvC/wA6
dubYBbhzPKFTJA6f41LckRW6xqetQ2sqRk7gcnvU0sS3A3xt83oab0dugyugwtOpmWRirjkU+rJC
jOOtNYE9DSKBuAfOO+KQDlBlcKorSUBVAHQU2JERRsAwR19afWMpXGitPa7jujwD6VEGuV4wxx7Z
q9RQpvqBS3XLHADjPtinJaMxzI319auClp8/YBixoqFQoCnqKpxE205D9Dwf8av0yWJZVw35ikpd
wGtFHKNynr3FNS2UHLHNQG2lUkIcj2OKPs854JOP96q+Yiee4SNdqEFvbtT7U5TJ68VElskYLudx
Az7VLbHKk+uKl2toA6f7o+tZ4YVoT/dH1rPwCM1UNgYFgKaPmOTTtgp1WIKWkpaBE0ByCpqGZMEi
lU7TkVO6+YgI69qnZgUqBT3QgmmCrGKKswRjG5ug9aihTc2KsSAt8iYwOtTJ9BMGBlG4HA9KSEMw
xn5f502MNkpnA706V8fIvHrU+QhZJcDanbvVctzS0xutUlYaHbuKZRRVDFAyaeFApEHGacaliYjN
jgdaYBk8UlSR9DT2HsI645FCnBp2/BING0HmkIGXPIplS0hUGgExitinbqTZ6GgjFAEkTZcVow/6
sVmw/erSh/1YrOoPoQXXVvpVPeKu3P3m+lUG+8adPYGOL+gphOTTgpIpQnqavQQgGTxTz8q8UoGO
lBGaAI+tOK8e9LwtCnOaAGAkGpQQwqJvvGnR/eoYCsvpTalqNhg0kIFODTt/tTKKdhksbkHK8VaV
hIuRw4qmn3akUlSCOtRJEseVd5NrHmpR/wA83OTigHzEyvDiolV3YnuKncCOZCpqKrzjzI+eGHaq
RGDVxdxoSnAZpoGTgVYhi3fTuabdgJbZcAsR9KidtzE1NM21QoqCoXcQUEZXFFLTAjVtpwafuHrQ
QD1puwe9MZJC2Xx7VqDoKzIcB8D0rTHQVjU3H0Kckixud2eSaerBhlSCKrXn3vxNQI5RsrVKN0Jr
U0x2qaoFIKgjoaer44NZtEpklOqPeKeOlSUNl/1b464NQ2P+qb61YPIxVW2by5Gib14qlswJ4c/v
M/3zUgqNlYMWjxk9QaFeT+KP8jmpeuoEtVNQfCKo6k5qwsiscA/N6Gq2oISFYduKqC97UChVq0jB
+dh9Kq1ftSDCuO3Brab0EyWql3GB86jr1q3nnHeobsgQkHqelZx3JRRrS0990RU9Qaza0dPjKoWP
fpVVNii3RTDKobaMlvQCkLSfwxj8WrGwxzf6xPxqveffjx1qdFO7e5+bGMDoKgJ826UD7q1UdwLf
elpKGOBmswFpCcDNN3ims2fpTSE2NprSKg+ZgPakmfZGW79qz2JYkk5NaxjclI0YJBJIrLnGcc1a
f7jfSqFj/D9avv8Acb6VnLRlmRc/60/SprCba/lsflPT2NF1D+7Eq9uGqqDggjqOa2VpRsBryDnP
rUZqQMJIQw7jNR1iiJbgadGcGmGjtTAmJB6GkqEnFMMpXvRyjuWM0maqm5Hfijzx60crKSLWaTNV
vO96QzU+UdizmjNVDP70efRyjsWVCqzMOrYzTt1VPP8Aejz/AHp8rFYuZozVPz6PPpcrHYt5FLuq
n59IZwBkmjlYWLm6jdVE3XpTDcH1p8jEX2kAB5Gah31SaemG4q1AVrmgHpd2azhP71LFPlqOUXKX
3kEMRZu361lyzNIxZjn09qbf3OWVM9OTVQSliAOSauELK5VjYsG4H41Pdt8lUYHETBQc4HNOuJwQ
o96zcbu47FbdWnaz+dF8xBYcGsSdvKkK546in2dzsnHowxWs4XVwsbDNgkU0tVWWfnNRmes1EnlJ
NRt0vbGe2cAiRSvPY9jXk0IaC5McgKsCUYHsR/8AXr1Mz1wHi638nWXmH3ZwHH1HB/l+te1lFVwm
4fM6sM7NxIaKbG25FPqKdX1idzpCo7iZIIWkc4AH5n0qSuf1i786Xy42zEn6mhuw0rswNZunnmxI
ct1J/lWjpkIhtUx95xuJrHiP2i/Qt0Zulb4NeZUlzSbOlKyJKXNMBpwNSA8GrMUu4YPX+dVKUGgZ
oA04Gqkc3ZvzqwDkZHSgCQGnA1GDTgaAJAacDUQNOBoAkBpwNRg04GgCQGlBqMGnA0ASA08HNRA0
oNAEoNPBqIGlBoAlBpwNRg04GgQ8U4GowadQMfmnA1GDTqAJAaUHFRg1S1XV7bS4g1w2XYEpGOrU
AaeRjJOBXmfi6aOfXriSGRJEIUBkII+6O9O1PW77WJFhjBRGOBFET8319a0dK8LjCyag5zkERp9e
5oAwLe3vNSlCwxvJzgkD5Vz6ntXV6d4WtoVJvG89z0AyoFbsMccMYSJFRB0CjAp+abberAqtbtGA
EAI9AKjIK9QR9av5peD1waQGfmjNXmjRuqiozbIehYfQ0AVs0uanNsP4WP4iozbuOmD+NADc0ZoZ
HXqppoNAD6M03NLmgB2aM03NLQA4NTt1R0ZoAlzRUeaUGgDM1PQrS8Dsi+VO3O9fX3FYz+FLgH5L
iMj3BFdaGpcigDj/APhFbr/nvD+tSJ4TlP37qNfopNdbRQBzEXhICQGW73J3Cpgn9a0G8M6cVICy
A+u+telzQBys3hFssYbpcfwqyf1rKk03VNNuN0cUuV58yIFl/P8Axr0ANSg0bAcRY+JLqGTF4POT
vwFYVu2WtWV6hDOsTdCkpAz9PWr1/ptpfRlZ4lz2dRhh+Nc5qHhSRCGsZfMXusnBH4962jXlHfUh
00zan09W5hIX2PIqgySQOCQyMDwcVhW2oX+kzeVJuwvBilzj8P8A61dFp+uWl8qxz4ilbjY3IP0N
dMK0Z+Rm4uJPbagQAs4J/wBoVoo6uMowYeoOaz7jTurQHn+6f6VSDSQScZRh1FbE2T2N6iqFvqAb
iYBfcdKvKQygqcg96ZLVhaKKKACiiigAooooAKKKKACkZQylWGQRgilooAxb23MEnH3G6e1QIxRg
ynDDoa35Y1ljZG6GsO4iMEpQ/UH1FItO5o2l8r4WbCt/e6A1drnasW13JBx95fQ/0oE49jaoqG3u
I5x8h57g1NTJOy0xt2n25/2AKmmijnjMcqhkPUGq2j/8gy3/AN3+pq5WZg9zCvdDyzNasFGPuN/j
WNNbzQH99E6e5GAa7kxsBnFRsoYYYAj0Ip3aKUzhaK6m50a1mbcoaI/7HQ1nXGhTp/qJFkHoflNO
6LUkzHoqzcWNzb5MsTBR3HIqtkeoqhnR+GTm1lX0fP6VsqcMD6Gsvw/A0NiWcENI2cH0rTrN7mUt
zaU5ANOqJD8o+lPBrcwHg04GmUoNMRmakxNyQeigYqrVi/8A+PpvoP5VXrCW5stgoooqRkII7UtR
CnuxVchdx9K+GsZJj6KhS4Q9flPvTvOj/vilZgSUVXe6QfdBb9KryTPJnJwPQU1BsCzLcqownJ9e
1JBOzyBWAwfSqqKzHCgmr1vD5YyeWNU0kgJaKKKzAq3rEuqD61aRQqBfQYqrcf8AH1H+H86uVT2Q
FKABLor25FXRVJ/+P3j1FXRRMBar3UzRlQuOR3qxUc0QlXHQ9jUxtfUCGK6zxIMe4qyCCMggj1FZ
skbRn5h+NOjkaM/Kfwq3BPYDRpaqpdKfvKR7jmphNGf4xUOLAkoqJriNe+fpTonLgkqVHbPelZgP
JApQR2qNutA4p2JuSMcA1D/Gv1qTO5TUf8a/WgfUsVSeV42wuMHnkVdrOuPvj6U46sCVLts/OAR7
VYjlST7p59DWdQCVOQcEVTgmBq0VDbS+YuD94dfepqyasAClpBS0gCiiikAUyaPzF46jpT6UVQFE
xv8A3G/KnojRguw4HbvVykIyMU+cVjPkmZ+OgqKpJojE2DyOxqOtlboBYjmJ+VhnPANOaF1/hz9O
aLOLLb2HA6VdrOUrPQLFFYXY/dI+vFXkG1QB2opRUSlcdgoooqQCnU2nUMAooopAFQyXCIcfePtU
N1OclEP1NVa0jC+rEWDdSdgoqa1cuwZuvNUauWX8P405pJaAWpf9WapPGxJIUkH0FXZf9WarC5CH
aUzjvmpjfoIrbSp5pCxzWgGinHYn9RVaaDyznqPWrUr7gRkZHvUZGKezYOKCNwyKoBg4NT28hVwf
wNQhTVi3hLMD/D1zSla2oMv1St/+PuT8f51bkbYjN6CqtiuXdz9Kyjs2A+5aNiFfJwe1SRRxbQVU
H3I5pksG5ywYAH1qQLiHahyccGh7aAMaKGQ4+XP+yearyRPA29MlQev+NOjR/MHBGDV3GQQeQabf
KBWVkuk2tw4qu6tE21hT54zBKHToTx7Va+S4iGeR/I0721WwFKhulOeCSM/KNw9RQsUrkDaR7mqu
hWLVkxMWD2OKnpsSCNAookkWMZYgVi9XoMdRVN7tm4jXH6mkC3L9d2PfinyPqFy8KWqPl3Ccgk/Q
5p0Nyytsl/M9qXJ2AuUMwVcnpRQQGUg8g1IACCMggj2pazCzwSMqsQAanjvCSAyg54yDVuD6CH3s
m2PaDy38qktfufgKpXasJiW5B6Grtr9z8BRJWiA6f7o+tZ6HjFaE/wB0fWsxevFOnsDJaKaWwelN
LE1dhD6eAScDrTAMCrFuOppN2EOCrGMt1pjz46AfjUcr5JP5VCeaFHuFh7SZJPem9TSU6MbnApjL
UI2RlvWmB3QkkdfUVJK2zYB0HOKFYSsOOBzUeYhWOxMn7xquc4qSZsufQVESB3pxQIZknrRR34pQ
MmrGAUmkqXOBUZOTSAen3adTEPan0mJibQaUcCgUjtgY70ARnkmnKcH2poUkcUtMZLRSLyBS0iQp
jdafTWGaBj4TyK0Yf9WKy0++v1rUh/1YrOoPoQ3P3m+lUH61dvP4voKpAE06ewDk6U6gDAoqiR1I
TgUtMc9qEA0nNOTvTQM9KBwaYyQqD1pQABxQDkUtIQUx+tPPFRE5NCAUAmkII605DjinMMincLkd
PQk8UynoQOtDGyaNtjZ7d6lkJT5lxg1XBBqxH88RU8kVm+5I2IsHywOG71FcptbPY1K02VwBg0s6
74Q3ejZgVFbFTRzFeneoKWrauOxdSZW4YUkkXG5OnpVVTg+1Wrduqn61DVthPQhpaWVdrkDpUbjg
EdqYD6KjDnvzTt25TimA6E5l/CtUdBWTb/6z8K1h0FY1NyjNvPvfiar1YvPvfiar1pDYGXLWRTGF
JAI7VPkeorMqa1/1wz6UnHqS0XqnHSoKej4GDWTQkyWoZ4RJyOGFSbh606ldooqh54+Cu4fTNOFz
g4kRlNWKQqGGGAIo5k90A0GOZex9u4puTHw+Wj9e4+tRywFTvhJB9BUkEolXBxu7inbS6AhntAeY
vyqoRJE38SmtKM7G8snjqv09KLhEaM7+w61Sm1owMzLAbsnPrSqskzd2NPxxitGBEWMeX0I6+tVK
XKJFeG0VBulI/Pip8GXrlY/ToTQf3shHBRevuabcSlcIn3z+lZ3bYx7SRxDGQPYVGbgk/u42aiK3
A+aX5mParAAAwBgUtEBVPnyjGNo/Kp4YxGuB1PU0+ik30AWkf7ppNw9aY77uB0oSE2IKQEHoRSis
2TG9sdM1pFXJtcnu5AwCqQecnFVqKK0SsUXbH+H61ff7jfSqFj/D9avv9xvpWE9xlSIhpGib7ris
9xtcr6HFW92ycN6VHfoFuCR0YZrSOjEXLFg1sB6ZFB4NV9PlVC6uwAOMZq7hHGVIP0qJaNiauQmj
tTzH6GmlSByKVxWGP0qpMTVxhkVA8eatMaM5y3NM8xlPtV14etQPAea1TRaZGJsjigyGm+WQc08R
56U3YtNDd59aTeamWE07yDSuh3IA7UbzU/kH0pfINK6Fcr72pdxqx5FI8WOB1ouguis0hHTrUZdj
VnyaTyapNEt3K25qXc1WPJo8mndBcqkmmnNWzDSG3PYUcyHcqbjT43IyalNue9IYiqHHYUXQ0Ztx
KWmcj1xUtoSN0rHheBUIjq60Wy2Re7cmtXa1hjbd2LZJ5OafcOdop1rFzUlzF8orNtXHcozOZLcP
/EpxVZJCsit6HNX7eLcHjPRhVLy61i1sK5fkclc1CXNTRbGjUFlzjkZpxgHas7paAysXNc94uj3w
QTY5VtpP1/8A1V07QEVj+J4f+JNOccqVI/76A/rXThJ8taLXcum7SRy1kcw49Dip6q2J++v41PNK
kMTSSHCqM19nSd4I63uVdUuxbQYU/vXBC/41zTHgmp7y4a5naRsgdh6CoT0pt3NYqxnaQoN0Seyk
j9K2qwbBzFdqCMZ+U1uA15hsPBpwNMBooAkBpaYDSg0gHg09HKnINRg0tMC0k/8AeH5VMrqehFUA
acDQBoA04GqCyMOhNWIJC2Q3UUAWQaUGowacDQBIDTgajBpQaAJAacDURcKMscCoHnLcLwKALbSo
nU8+gqM3J/hAx71UpQaALP2hz3A+gpwuJB3B+oqsDSg0AXY7r++PyqxHIrj5Tn2rMpysVOQcGgDV
BpQcVWgnD8Hhv51k+Jda+wReRbEG5cdc/cHr9aAH+IPEEenqYbYrJddweQg9/f2rl7DTrvWbgzTO
2wn5pX5z9KdoekvqEvn3BIgBySeS5z0/+vXZxIkUaxxqERRgAdBQBFp2n22nxlbdOT95jyxq7mos
0oNAEganZqPNGRQBLmjNR0uaAJM0uaj3UoNAiTNGaZmlzQMfQQCMEAj3FNzS5oAaYYz/AA4+lJ9n
j9W/On5paAITajsxpptm7EGrGaXNAFb7PJ/s/nSGCT+7n8at5paAKXlSf3DTCCDg8GtDNVpoXaRm
XGD70AQZpc07yZB/DR5Un9w0AJmlDUeU4/hNJsf+6fyoAdmlzTdrf3W/Kja390/lQA6ikAb+6fyp
wVv7p/KgAzShqBG5/hP5UvlSf3DQBDdW8F3EY7iNZEPY9vpXL6p4XdDv09t64JKOefw9a7AQSH+H
9aSSJ4wCw49qAOAsNWvdLkMMysyZ5jlyCv09K6i1vbLVEKxuGYc7G4Ye9WdQsLa/iK3EYLYwHH3l
+hrjtR0e70uRZoWMka8iVBgqfcdq2p1pQ0eqIlBM6O5sHTLRfMvp3qtHLJA+VJUjqD/hUvhPxBZy
zpba3uUn7s+4Knc/N6V6KdL0+aMEW8ZBAIcdcfWuyNSMldGEpOGjOItLp5cB4mBJxuA4retdHmnC
t5kPlnurbv5VLeaHLGC1s3mL/dPBH+NZ6Pc2MpwXifuPWr32JbvsaFzoUysPs7q6453HBzVN9NvE
627n/dwf5VpWmu8BbqP/AIGn+Fa8FzBOP3UqN7A1N2iLtbnFsCrEMCCOoIwRSV0ur6V9pJmgwsvd
f7//ANeudljeJykqFGHYiqTuUncZRRRTKCiiigAqG6gE8eOAw6GpqdHG8jbY1Zm9AM0Ac46sjFXB
BHY0ldRc+Hbu6jMgRY3X++eSPSsVtNkA4dSfQjFIpSTKIJByCQfUVoW2oEcT8j+8BVOWCSL/AFiE
D17UW8TTSBVHHc+goG7M9N0dlbTLfYwYbByDmrgODmuLtLmW0fdA231HY10en6rFdfLJiKX0J4P0
NS0c8om2jhhxSsiv1HNVASDkVMkvZvzpp9yLCNCw+7yKjII6gj61cBz0peCMGjlFco0mB6D8qumJ
D2x9KYbdexNLlY7lalAJIA6mrItl/vGpY4kQ5A59TQosGydeABTgaYDS1qZkgNOqMGnA0xGdqAIu
ST3ANVqt6l/rU/3f61UrGW5qtgoooqRldR3p9M3GlDetfDGINGjfeUGozaoehIqeikm0Mr/ZV/vG
nLbxjqCfqamoo5mAKqqPlAH0paBRSAKKKWgCreKQyyDtxUi3KFMscH0qZgGBB6GoDapnqwHpVJpq
zAit8yXBfHA5q6KaiKi4UYFPFKTuMKKKKkQhAIwQCPeo2t42/hx9KlooTsBX+yr/AHjSi1TuWNT0
tPmYDFhjXoo/Hmn0UhaluAMM0ynbjQSD1HNMliA4NIeHX60uPTmkP3kNAInrOuPvj6Vo1nXH3x9K
cNxkdFFFaAOicxuGFaY5HFZVaFscwL+VRNdQJRS0gpayAKKKKQBSikpRTAWiiikAhVWGGAI96YLe
IHOwVIKWndgA4GBRRRSAKUUlKKACiiigAp1Np1DAKiuJPLjJ7ngVLVS/PCD6mnFXYFOlpKWtxBVy
y/h/GqdXLL+H8aiewFqX/Vms2X77fWtKX/VmqD/eNTTF0IlJU5UkH1FaELieIhhz0NUGGDUtm2Jx
78VcldXBCSx7XIPakBHQVYvF+YH1GKqhTmhO6AvxRoY1O0cjvzU1Q2pzF9DinzSiJMt9BWLvewEN
7JgBB35NV43fbsjBBJySOtLFG07ljwO5q9HGsa4UVbairAVPs0rnLsPxOaR4pYBuVuPUVfpCMgg9
DU87GR28vmpnow61BMzeaeSMHjmmQHy7oqeByKvNgKWYdOaH7rExgXzIAH6kd6rWrmOUxtwCcfjV
lJ1dgACCfWob2LP7wfQ0R7MC3SioLabzVwfvjrRczeWuF+8f0qbO9gC4uBH8q8t/KoIoHm+eRjg9
z1p1rBu/eSfUD196uVTfLogGRxJGBtAz696fRRWe4xRVa+jBQOMZHX3qyKrX7YVV9eTVQ3ES2zF4
VJ69KmqGACOFVYgHrTJbpFyE+Y/pRa70Ajv0O9WAPTk4qoOCDU6XMgfcTkHqKsCSG4GGGD71pdxW
ogmAntQ46gZ/xqS1+5+ApIYtm4BgYz0FOtxhSPTis29LALP90fWs5BgZrRn+6PrWeQcYFVT2BjDy
aVOtOwBSF/StBD6sQfdNVQwNTwNhsdjUyWgiGQYGPQ0yrMyYbPY1AV9Kaeg0Nqa1GZM+lQ1Zsx1N
EtgZJ8pkbfjjpmiPCh2HTPFNEe5S+eTzStxbioEQ9qiIwakJwKYTmrGhBThwaQU7aaYDiMrUdSKC
BzQVBpCuR08N60hU0m0+lAx2/wBBSKCx5pVT1qQDHSgAHFRsME1JUbcmkJDlYBRRvFNCmgqRQMko
piHtT6BDo/vCtCH/AFYrPj+8K0If9WKymPoQ3X3m+lVKt3P3m+lVKcNhMKQkDrS1EeTVpAS7xTXO
TxRsNIVIpgOQcUrDP1oTpTqBEYJU04P7UpUH603YRQAEk0lLtPpShPWkAijJp7HApQMDimspJ7UA
MpRQVIoFMY5BzmrEBxJj1qurY+lSIfmBFS0SycBBK+7HtmljAaN1HTPFJKm6ReccU6Jdjlc5yM1H
QCieCaKWXiQ0AE1oUgFWbf75+lQquPrVqMeWhLdamTJZHP8A601H1FBOSSaaX9KEBHT4zzShgeGo
2jqp5pjHwjEv4VqjoKzIh8+fatMdBWNTcfQzbz734mq9WLz734mq9aQ2BhSqSrAjgikoqhFpbr+8
v5VPHIsgyprOp8TlHBH41LiugmjRFPVsdelMFLWLJJ6BTYzlacKgsWqky+TKJF4U8GrdQXTIYiCw
z1FVHcGPm5TevJXkVWuZw4Cp93vTGnYxBBwAMH3qKtIxtuK4tWIJyiFTyf4ar0VTVxGkMRRZPbk/
WobRdxMr8nPFV2mZo9h5FXYXTywFYYA71m00hklFFFZjA8ComYn6U6Q8YplUkS2FRySrH16+gpzt
tUn0FZ7EsST1NaRjcEid7okEKMe9V6KKtJIYUUUUwLtj/D9avv8Acb6VQsf4frV9/uN9K557jMyX
75qS8jZ1idFLfLg4Gajl++ackzoMK3Hoa010aEVKVSVOVJB9qui5Y8SKrCk220h6NGT+VVzd0BAl
zKp+8WHo3NWorxW4kG337VWltnjG4EOvqKgpcsZAazKCMrioyKrWc5RhGx+Q9Parki96za5XZiaI
SKYyZqU0lNCK5ipY48HBqYikxTuO4ojFLsp6nI96WpuXcj2UmypaQ0rgRsNoqIipHO40w1aJbG7a
QinGmmmITFKFz0FHfAomkEMe48+3rQUkDlIl3NgVVkvFz8iZHvVWSRpG3McmmgEnABJrVU11KJJL
iRu+0e1QszkYLsfqasLatgGRlUfrSkW6nozH1qrpbDKiplgB3OKtXQAcKOwxS+ei/wCrjA96gdy7
EnqaNWwLFr1p9190VDatz+dOun+UVDXvDIbYgTDPfiq88ZR2+Uhc8HFMMuDwcGg3rj+L8xW3K73Q
IYSKBKy/dZh9DStdq/8ArVB9xUL+XIP3bYPoapLuVYsLeOow3zUzUHS8065hH3njIAPrjiqErMhw
351C0vvVRhZqSKSsctZH979RWXrFw0t20ef3cZwB7961F+S7I7BiKw75GjvZ1brvJ/AnNfY0HeB3
R3IKKKK1LM3UIykolXgHuPWr9lOJoQcncvDfWiaMSxlW7/pWWrSWk/0/IiuOtDldy0zdBpwNV4JV
mQMh+o9KlBrEokpQaYDTs0APBpwNR0oNICSlBpgNLTEPBqSN9rZqHNOBoGXwaeDVKKXbwelWlIIy
KAJAaHkCLk/hTN2Bk9qrO5ZsmgB7uXOSaAaYDS0APBpwNRg04GgB9KDTAadQA8GlzUYNDusaM7HC
qCSfagCDU79bCDeT+8bIQeprndLspdXvXluGYpndI/qfSo7uaXVtRCxZwx2ordhXXafapZWqQxgc
D5mH8R7mgC1EqRoqRqFRRgADAFPzTM0ZoAkzS5qPNLmgB+aXNMzS5oAfmlzUeaXNAEmaWo80uaAJ
M0oao80uaAJAaXNR0uTQBJmjNRhqcDQIfmlzTM0ZoGSZopmaXNAD80uaZmlzQA+imUuaAHZpQaZm
lzQA/NKGplGaAJMilqPNLmgCTNGaYGpc0APzQeRg8j0ptGaAKk8RjOR90/pUJAIIIyD1BrROCCGG
QaozIY2x1XsaAOY1rw6sm6awAV+pi4AP09Kj8L+LbzRJvs94ZJ7MHDRMfmjPT5c9Pp0rqM1mazpE
WpRlhhLgDCv/AI04ycXdClFSVmeh6df22pWq3FlKssTcZXsfQ+hqWaGKZds0auPRhmvF9G1a/wDC
2pMu35GI82NujrnqPf3r1/R9TttWsY7q0bKMOVbG5fYgGuynUU/U4qlNwfkVbnQ4XYtA7Rf7PUVm
T6TeQfMqhwO6HmuqorXmZKkzjRd3cR2ieZcdix4/CrMeqGQBL6JLhPUjDCunkRJFxIqsPRhmuS1W
0Npdso/1bfMn09KpO5SaZqLpFpdRiW1ldUbt1qJ9Akz8k6ke61T0i++xznfnyn4b2966tWDKGUgg
9CKTbQm2jnRoM/eWMfgamj0Af8tLg/8AAVrdopczFzMzYNGtIsF1aU/7Z4/Kr8UUcS7YkVB6KMU+
ii5LbYVga7p2C11COOsg/qK36DyMHpQnYadjhCMjnpSKqr90AfQVqazp/wBlk82IHyWP/fJ9KzKv
c1TuFFXNLto7u5MMrshKkqR6iprzSLi3BZcSp6r1/Ki4XRLpusPDiO5zJH/e6sv+NdDFIksavGwZ
GGQRXEdDzVmwvZbKQtHyp+8p6Gk0S432OzVyvQ1PHKG4PBqhaXMd1CJIjkdCD1BqapTaMmi8KdVN
JWX3FTpKr98H0NWmJol6UtJR0qhDwacDUdOBoEPpwNMBpk8ojTP8XYU72FYqXrbrhuc44qCgnJye
tFYt3NEFFFFIZV8r3pRF/tUbm9BShmPQCvhjO4eX/tGjy/8AaNMlmMZAYdfSm/ax/dNFmwJvL/2q
PL/2qh+1j+6amV2ZQQBg0mmgDy/9qlEX+0aXL+goBf0FIBPK/wBo0eV/tGly/oKXL+goAb5X+0aX
yv8AaNLl/QUF2GcgdKAE8r/aNHlf7Rp2X9BRl/QUAJ5X+0aPJ/2jS5f0FLl/QUAJ5X+0aPK/2jS5
f0FGX9BSATyv9o0eV/tGo3udjFSvI9Kb9rH9007MROIv9o0eT/tH8qhF0M/dqfL+i0NNAJ5X+1R5
X+1Rvb0FG9vQUtRXF8r/AGqURYIO7pUH2sf3aUXeSBtp8rGWqiMIJ5P6VKOlQNPtODgUkId9nX2/
Kj7Ovt+VM+0j1FH2keop2kMf9nX/ACKUQ46NimfaR6ij7UvqKVmBJ5X+0aPK/wBo0wT5HAFL5x9B
RZgO8v8A2jSiL/aNN80+go80+gpWYDvK/wBo0eV/tGm+cfQUvnH0FFmA7yv9o/lR5X+0fypvnH0F
L5x9BRZiF8r/AGjS+V/tGm+cfQUecfQUWYDvK/2jR5X+1TfOPoKXzT6CjUB3lf7Ro8r/AGjTfOPo
KPOPoKWoDvK/2jR5P+0ab5x9BS+cfQUagL5P+0aXyv8AaNN84+go84+goswHeV/tGgwA9Tn8KaZ9
vUCm/ah7UWYD/s6+v6Uv2df8imfah7UfaR6inaQh/wBnX/Ip8cQQ5BqH7SPUU+KbeQBjGaTTAmYb
lIqLyB6/pUrHCk+gqA3ABwcZpK/QQ77Ovr+lKLdR0P6VH9qHqKX7UPanaQyQwA9W/Sk8gev6Uz7U
Paj7UPalaQEghx0b9KDCD1OfwpBMfQUecfQUahqOEIAwGx+FL5P+0aZ5x9BS+cfQUahqO8n/AGjR
5P8AtGm+cfQUecfQUrMBfIBOSefpS+T/ALR/Kk84+go84+gp6gKIB6/pS+T/ALRpvnH0FHnH0FLU
BwgAPBx+FIYFJyTn8KPOPoKPOPoKNRDhD/tGl8n/AGjTPOPoKXzj6CjUB3k/7Ro8n/aNN84+go84
+goswHeT/tGg24J5OfwpPOPoKPOPoKNQFMAPU5/Ck+zr7flTWudvXApPtQ9qLSAk+zr/AJFH2df8
imfah7Ufal9qLSAkEAA4OPwqSNNmec5qv9rHtU0UnmemKTT6gLKpcACoTbZ9KnkfYAcZqPz/AGH5
0lfoIj+yD0H5ml+yD0H5mn+f7D86Xz/YfnTvIZH9kHoPzNKLUDoP1p/nj0H50CfPYfnReQC+UxGC
RTfs/sKd5x/u0ef7CldiG/ZvYUqwFQduBml8/wBhS+cf7tO7AaICBjjFKYCQAcYpfO9qXzj/AHaW
oERtAew/M0fZB6D8zUn2j2H50faPYfnTvIY0WwHQCj7N9Kf5/sKPP9qV2Ib9n+lH2f6U7z/ajz/a
i7Ab9m+lL9m+lL5/tS+f7UXYDfs/0o+z/Snef7Uvn+1F2Az7Mfal+zewp3n+1L5/tRdgM+z+woNt
nggU/wA/2o8/2H50XYEYtADwB+dO+zewp3n+w/Ol8/2FK8gGC3x0AqeNSq4NR+f7CpEbcuaTv1EM
liLsTxio/s/0qV5NrYxTfP8AammwGfZs+lJ9jHoPzqTz/aj7R7D86LsBPs30o+zfSnef7Cjz/ald
gN+zfSj7N9Kd5/tS+f7U7sBn2b6Uv2b6U7z/AGoE/tSuwG/ZvpR9m+lP8/2o8/2ouwGfZvpS/ZvY
U7z/AGo8/wBqLsNRv2b2FIbQE8gfnUnn+wpPP9h+dF2Az7GPQfmaVbXb0x+dP+0ew/Oj7R7D86Ly
ADCxxnHFAhYHIIzS+cf7tHnH0pXYDDbZOSFzS/ZvpTvP9h+dL5/tRdgNFuQcjGaVoWYYYjFL5/8A
s0eef7tF2KxH9jHt+ZpPsY9B+ZqT7R7D86PtHsPzp3kAz7GvoPzNAtAOgH5mpBcD0H50eePQfnSv
IBBbkdMVZHSoPP8Aapx0qXfqBXkt97ZODzTPsa+g/M1KZsMRt6Gl8/8A2ad2BD9jX0H5mj7GvoPz
NTef/s0ef/s07yAh+xr6D8zS/Y19B+ZqXz/9mjzz6Ci8gAROBgEUvlv6ik84/wB2l88/3anULChJ
B0YUbJP71J5/+zR5/wDs0AI0DN95s/iab9l+lP8AP/2aPP8A9mi7EM+y/T86Psv0/On+f7Cjzj/d
p3kFhv2X6fnR9l+n50/zz/d/Wjzz/dovILDPsv0/Oj7L9Kf5/wDs0ef/ALNK7AEhdfutj8TT9kn9
6mif/ZpfP/2aWoAY5D1YUeU/qKPP/wBmjz/9mjUdhGgZ1wxBBpn2NfQfmak8/wD2aXz/APZp3aAi
+xr6D8zR9jX0H5mpfP8A9mjz/wDZo5pCIvsa+g/M0fY19B+ZqXz/APZo8/2o5pAEMHlkYxgGrDDK
ke1QpKWYDHWpicAn0qXfqBVa2JOTik+yfT86kNxjsPzpPtPsPzqryAZ9l+n50v2X6fnT/tHsPzo+
0ew/Oi8gESJkHyEComtASSQMmpTP7D86XziRwtF2BB9jX0H5mpikp/iH5Uecf7tJ5x/u0XbDUTy5
PUUnlP6inecf7tHnH+7SuwsN8p/UUnlP6ineef7tHnE/w07sLDRG4OQRSlZP7wo84/3aDKf7tAxN
sv8AeFIVkIxuFL5x/u00zEfw0wEMb+oppjf1FOMxx92mmY/3aeoWEMb+opvlv6ilMx/u00zH+7T1
HYTY4PUVHLCZCC5zjpzTjOf7tNM5/u01cdiL7KvoPzNOSJos7CBmgzn+7TGuPUVWrGDwljljk/Wm
GD6fnSm59h+dMa59qauFgMA9vzpph+n51G93jtUTXnt+tWlIdiZf3Z68VBcSbuAaiNzvbFV5pSKt
RLSBl96jZajM/wDnNNM/sK1SZVh5SmmP/Oab5/0pDNT1HYcwYrtJBFRmEen60vmH+7SeafSmrjsc
xqSeTfyAcc7hUUrxT4E8Kt7966eQI5y8SMfcA1Sm0+2kJKoUJ/umvXoZioJRZqprqYBsbBxxvj+j
H+uaaNHiblLhsfQGtebShgeTIc+j/wD1qqmwuVJwgOO4YV3wzCnLqvyLU/Mz5NFYD93KD9Riqdzo
U8y4IQkdCG6Vti1uz/A/4ml+xXf90/8AfQrSWLpPRtfeNTt1OHmhutLuNsqFSemeQwq/bXCTrleG
7r6V0N5o0l3HsmiB9DuGRXLapo95pTCV1PlbsLIpB/OuV1KbdotfeaxqJ6F8HFOBrOtb5X+WbCt2
PY1eqjQkBpaYDTgaAHg0oNMpQaAJAaWmA0oNIB4NPVyvQ1HQDTAnMjMuCabTAacDQA4GnA0ylBoA
kzS0wGlBoAeDTgajpQaAJAaxfEd55cYtkyGcbmPt6VrSSrFG0khwijJNctbpJqeqDcdwLbmyei5o
A2fDViIYftMg/eSD5fYf/XrczUagKoVQABwAKXNAEmaXNR5pc0APzS5pmaXNAD80uajzS5oAkzRm
mZpc0APzS5pmaM0ASZpc1HmlzQA/NLmmZpc0ASZoyKjzS5oAkzS5qPNLmgCTdS5qPIpaAJM0uajz
ShqBEmaM0wGlzQMfmlpmaM0APzS5pmaXNAD8ilpmaKAH5pc0zNLmgB2aduplFAEm6myKsi7TTc0u
aAKDqUcqeopM1buU3pkfeFU6AKeq6dDqMOyXKuv3XHUf/WrmdK1G/wDC+qkr0482PPyyr9cfrXZV
R1fT49RttjcSLyjeh/wpp21Qmk1Znd6FqkOsabFdwFeQBIoOdj4BK59s1oV4noOr3fhfVX3Kzx/d
kh3kK3uPf0NeyWN5Bf2kdzaSCSCQZVhXZTqc68ziqU+R+RYrP1q0+02hKLmWPlff1FaFFaGadjhK
09J1NrRhHKS0B/8AHfpUWsWv2W9ZVGI3+Zf61RrTc23R3MbrIgeNgynoRTq4+wvpbJyY/mQ9UJ4N
dRZXkN5HuhbkdVPBFQ1YycbFiiiikIKKUUuM07ARSxrLG0cg3IwwRXKanYtZTYGWib7rH+VdeRUN
zAlxC0coBUj8vehOw4uxxsErQTJLGcOpyK7O2mWeBJUOQwzXJahZyWcxR+UP3W9RWh4cu9kjWzfd
f5l9j6VT11Lkrq5p32mW93lmGyT++v8AUd6wr7S57UswXzIRzvHYe4rq6KlOxCk0cbYXclnOJI+Q
eGU9CK7CKRJY1eM7kYZBqndaXbXHJTY3qnFWLO3W1t1hRmZVzy3Wm3ccmmTUUUVJI9ZXXoePepRc
eq/rVeindoVi2LhPel+0IOmap0U+ZhYsNdNj5VA96gZixyxyaSqt/exWUYaTJLcKo6mldsaXYtUV
gDX23c242+m7mrMWu2zcSLJH74yP0osx8rNais/+2LH/AJ7H/vhv8KKLMLMmFSKMCmKM09mCqSe1
fCswRTujmYj04qaOJVUcAnvVRiWYk9TU6XACgMDkVo07WQ2MnQK429DV5BhQPQVRLGaZR0FX6ifQ
BRRQKKgAooooAdUT/eP0/rUtRP8AeP0/rQhokpRSUopALRRRQIKKKKAKV0v7/wCuKmWJAMbRTL1T
lWH0pBcDHIOa01aVhMimUI+B0rQjO5FPqM1nOxdsmrdm+Y9pPI/lRNaDJCMGkp7DvTKghlOZCjn0
PSmx/fH1q6yhhhhkVF5ADZB6VopaDTLg6CqNz94fjV4dBVG5+8PxrOO4yGiipI488t09K1ARIy3P
QVMqKvQU4dKWpbEFFFFIAoFFAoAWiiigApaSloEwooooAUUtIKWkAUUUUAFFFFABRRRQACmtGrds
GnCloArOhX3HrTat1BIm3kdKpMCOrVn1H1qrVqz6j60p7DLr/cb6Vmzf6w1pP9xvpWbN/rDUU9xd
BlFFTxRheT1rVuwDI4ieW4HpUyqF6CnUVm3cTCiiigAoFFAoAWiiigApRSUopAFFFFCAKUUlKKAF
ooooAKKKKBMKKKKBC1G8QPTg1JRSuMqMpU4NJVtgGGDVeRCh9qtO4xlaFl938Kz60LL7v4VNTYCW
f7o+tZ5PGeorQn+6PrWevK4qYbAw+U00qaQ05DzWghQo781NCgLdOBUdWLf7pqW9BDZn52joKgZ/
SlkPBPrUdNIaAknvVmzP3hVaprQ4kx60pbAyUOqoVIORxSv/AMe60oVTI+7HtQgDK6DpnipEViuf
rTCMVKOlRk5OasaBSR0p26mCnDk0wJFJP0oLYpCcLUdKwh5c9qTcfWm04KTQMcr+tPzURQ9uaEbH
B6UWAlphJB60+o2OTSEhQ570jNnjtShcqKNnvQPQEHOafmgDHSigQ+P7wq/D/qxWfH94VoQ/6sVl
MfQhufvN9KqVbufvN9KqU4bCYVF0NS0hUGrQAHNIXNLs96Rhg09AHJnGSadTU6UpOBQApbA5pm8n
pxTeWNPCH1oEJuPrTg/rTCCOtFICXOe9IWIPOaYpwaewyKAGlz2pOvWkpRTGKFz9KlQYIA9ajQ9q
ngGZPpzUtkksjhXXNLGweQkDoMU3CtK27Bx0pYsKjkdM8VHQCpKT5h5pAxHekY5YmitCiVWz04NW
lIljw3WqIODVq3Pzn6VMkSyEqM8imsmORU04xKab2oTAjCd2pcqOAM0wknrToxzTGTxH5se1aQ6C
suE5kP0rUHQVjU3H0Kjf6w/WpPKyMqeD61G/32+tWYv9WKG7IT3I1h5+Y8e1PEaHoAfxqOW5jjk2
NknvjtShMjdE/Bpa9QImGGIHrQKVlZfvCkFUSLRRRTGFFFFABRRRg+hpCClFG0+hpyr60XAMfLTa
kx/F2PFNK+lK4DaKXafQ0YPpTASiiigBaKKKACiiigCWJQzc9KlMSdOh+tRIrk5Xj3pxxF88r1D3
0GhDCw6YNBj2rliPpT4ZkmB2Z46g0lx/D6UXd7MGhkP+sX61af7jfSqsP+sX61af7jfSpluMzZvv
Co6km+8KZWy2Je4lTQwNJz0X1NS29vkBpBx2FW6iU7aIaRFHBGmCBk+pqXHHFFKKybuMTFJgU6ko
EJigUuOKAKAEIpCKdRQAzFJinEUlMY3FIRTqaaYDSOKYakPSompoY01GxFOc4FVJpMd6tK5SJGcV
G0gqm859ahaY+prRQKUS60oqJ5Qc55qm0p9ajaQ+tWoFcpNMFP3Dg1SlkKnDZFPMhqKQhxhua1jp
uHKQPKT3NRFz60kqlGwenaoya3SHYswNyOe1LOeBUUB5H0p0x4FRbUtFNjzTSaD1ppNbALmnQjdK
o/Goiaktv9b+FD2GXSaQmkprng1mAwmkJ4oprHiqJG0UUmaoYUlFFAwpHRZEKuoZTwQRkGlopgcl
rfhRSDLpmEIXJiJJ3H2JrmEmuLKXy50dcdUcYI/OvVKo6ppVpqSH7RGPM27VkH3lFddLFOOk9TeF
ZrSRxMN3FKudwU+jHFTqwIyCCPapr3wfcRxlrWdZmz9wjacfXNZR0TVYn4tJg3qvP6iu2NaEtmdC
qRfU0gacDWcNN1kf8u1z+VV3e8sLgJdLIrcEo/cVSlF7MpST2ZtUoNRROJI1cdGGafVDJAaXNRg0
4GkA+lBpoNLTEPBp2ajBpQaBj6cDTAaWgCQGlqMGnA0AZXiG52Qrbjq/zE+2ak8N2ypbmcr+8ckA
n0rIvnkvdRZVBJ3bFHoBXWRqEjVFACqAAB2oAlzS5qPNLmgB+aXNMzS5oAfmlzUeaXNAEmaM0zNL
mgB+aXNMzRmgCTNLmo80uaAH5pc0zNLmgB+aXNR5pc0ASZozTM0uaAH5pc0zNGaAJM0uajzS5oAk
zS5qPNLmgCTNGajzTs0APDU4Go80uaAJM0ZqPNLmgCTNLmow1KDQIkzRmmZpc0DH0uTTM0uaAHZp
cimZpaAH1TuY9jbgPlNWc0jgOhU9DQBRzS5prAqxB4IpM0AUNa0uPUIsqFW4AwrnPT0rN8GeIp9C
v/s915hspDh4zxsY/wAXPT3ros1heJdLNyn2m3UmZeGUD7w/+tTjJxd0KUVJWZ63G6Sxq8bK6MMq
ynII9RTq81+HXifymTStQlOxiBbux4X/AGPx7fl6V6VXdCSkro4JwcHZlDWbX7VZnb99PmX+ork6
7uuS1i1+y3rBVxG/zL/hWkWOD6FGnxSvC4eNirA5BFMoqyzotO1lZNkV18rnjfwAfr6VsKQygqQQ
eQR3rhau2GozWZCg74v7h6VLj2JcOx11KDVCz1O3uVHziOQnGxjz/wDXq9U7GdrD6QikBxSg5p7g
QXVvHcxGOZcqfwrlr6zm0+cEElR8yyAcD/69dhUc0SSoUlUMh6g0bDjKxHZzi6to5V/iHI9DU1R2
sEdumyFdqZzip3HelYTGUVSv9RhsmVXDM7c4HpS2+pWk+Akyhjxtbg0WCzLlFFFIAooooAKKKRiF
UknAHUmgBa5PW51nv2KHKoAoOeDWpqWsRxqY7Vg8hH31PC/41zlXFFxXUKKKKo0CiiigDtQMCqtz
JvOxenf60s855VOOxNVq+EjHqcZcWNVGMZ9zUE6BGGOhp6Tjb8wOfao5XMj+3QUK9xISN2jbcoHp
zUyXRz86jHtUqKFUAUOisPmFJtPcLkkUqScKefQ0+qEsXl4ZTxVuBy8QJ69KmUbaoZJRRRUgOqJ/
vH6f1qWon+8fp/WhDRJSikpRSAWiig9KBCMwUEscCq73Sj7gyfeoHYzy+g7e1WEhRe2T71fKluJu
xBJO8i7SF/AVGoywHqcVfqpOuyTI781UX0C5YWNVGMA/WoWPkzZT06GnrONo3A59qhkfe2aEtdRI
0EYOoZeQaRl7iqMUrRtkcjuK0EYMoI6Goa5RsjoPQ1KVBpjrhSaVxWJB0FUbn7w/Grw6CqNz94fj
RHcY2JMnJ6CpqRQFGBS1bdxC5wOaYZVHfNNnPAFQ00gJTMc8AfjSGRj3x9KYil2wMZqdbc92H4U3
ZDIdzeppRIw71P8AZh/eNNa3P8LfnSuhXQ0THuB+FSq6t0NV3Uo2DjPtTRRYC5S1WSQr7irCMGXI
pNWBi0UUUhCilpBS0gCkZgoyTULynOF4qI89apRAmab+6PzpplY+gqOpVt2ODkYp2SAZ5j+tOEre
xqT7Mf7w/KkMDDuKV0wBZv7w/KniRT3/ADqsRg4oosMuUVHAcpj0qSpEV5U2tx0NT2fUfWh13KRR
Z9R9aG7oaLr/AHG+lZs3+sNaT/cb6VnuN02KmnuLoLCvG4/hUopKUVT1EBIHU4phlUdMmopzmT6U
ymkOxKZm7AUwyOe9LHGX6EfjUq2395vyo0QaEIZvU04SMO+frU32Zf7xprW57MPxpXTFcRZv7w/K
pVYMMiqhGDRTsFi5Siq6Sno3NWBUtWAKKKKSAKUUlBO1cmgB1NZ1XqaheUtwOBUdNRAlaY5+UD8a
b5rHvimKNxAHep1t27sBTdkBH5jetOErD0NP+zn+8PyprQsoJyMCi6DQcsw/iGKerq3Q1VopcoFy
kYBhg0iHKL9KdUgVGUqxBq/Zfd/Cq065XPpVmy+7+FE3eIEs/wB0fWsxTzxWnP8AdH1rOQcZpU9g
YFcnNNwVNS0VdxCDmrFueCKr9KerFWBFJq4hJFwSKiq8Qsqg1BJFjk4oUhpkFOiOHBoKkU0daoC5
Ou4qR34pUQxsMkYPFEZ3w47ioWZm6npWaXQQ6VdrkDpUZUGrD/vIww6iq7HAqkwQzvxSr1popaoZ
KRkYqM8GlDEUh5pAKgyc1JTU+7TqTEwFNdeMinCloAiDECikPWnKMmmMevAFLRRSJCkY4paY3WgY
qH51+takP+rFZ0I+YGtGH/Vis6g+hXvP4voKpBiKv3XVvpVBhg06ewEgORRTU6U6qJHUx+tPpGGR
QgIwcUck0lPQc5pjHqMClooqSQIyKiPBqWmP1poYiDJzT2OAaYrYoJzTASnIAabTkODQxseABVmE
BYyxqFBuYD1qWc4AQdqzeuhI14iF3E/WnzHZAF702Is5AJ4HNMumy2PSjrZgV6WgDJp6p61YxqjJ
q3bqclu3Skjh/vHj2p8r7BtXg1Dd9BN3IpjukJFROeMetOoA70wIwhNOwVU4p9FMAtvvn6VqjoKy
4BiQ/StQdBWNTcroVcZmwe5qeRimMDioCcSk+hp8kgZcAGlbYTK97CS3moMqRzSWEu2TYejVdhOY
x7U17eNnD4wwOcinzacrAdN/qzVcVLcdqiFEdhMWiiiqAKci5600DJqVRgUmxMXGKKKOSQB1NSIC
QOtOVCeW4FPRAvPU+tEn3cepxSuUkMHPzEfK3GKGQr7rUhGQRRGSUGevSlcLEQ5HFLT2jBORwajH
fPamncTVgIBqN1wfapaRhkYpoRFRRRVDCiiigC4hGwHtisq4lMshJ6dAK0lXfBtJwDxxRFBHF90c
+pqItRuUQ2sZgjZ36t2qwP3kfIwTTLjotKJgE6HOKTu9REcP+sX61af7jfSqsP8ArF+tWn+430pS
3GZs33hU1nEHO9ug6fWo3XfIqjvxWgqhVAHQVcpWVhdRaSlqlfHMijsBWcVd2C5YeaNDgtz7VE92
o+4pP1qnRWqgguWftb/3V/I0fa5PRPyNRJEzLkEU7yG9Vp8sRXJFu2z8yjHtU6XEbEDOD71QZSpw
aSk4JiuatJWdFK0f3Tx6GrsMwlGMEMOtZyi0Vckppp1NPWpAaaaacaQ1QxhqNqWZxGpY5x7VnXFw
zgjovoKuMWxklzOsfBPPtWPdXhJ+QfnTrh+KoPljgV1U6aRaB7mQnqB+FMM756/pQYiTyRTWiPqK
3SRYfaG7gUonU/eBFQuhUc4php8qYy2HDdDmkqkasxHMYNJxsUhXAZSDVJ1KsQaumoLgApnuKcWA
2DtTpjwKZD2p03QUPcZSPWmk04glsCni3cjqtbAQmnwHEq/lTXUqcHFIv3hQxl8mmN0p1NPSskAw
01qdTWqxDKKKKYBRRRQMKKKKACiiigAooooAK5vxvYNc2EdzH963JLD1U4z/ACH610lV9Rt/tVjP
BnHmIVz6VpTlySTKg+WSZ57pEmYmQnoeK0QaxLDMd6E47qf8/hWwDivZPQJM0tMBpQaAHg04Go6c
DQA+lzTAadmgQ8GlBplKDQMkqC+k8qymbOCFIBHqeBUoNZniBiLeNQeC3NAFfw9EXu2l7IOc+pro
81k+H1K2TE/xOT+grTzQBJmjNMBpc0APzS5pmaAaAJM0uajzS5oAfmlzTM0uaAH5pc1HmlzQBJmj
NMBpc0APzS5pmaM0ASZpc1HmlBoAkzRmmZpc0APzS5qMGlzQA/NLmmZpc0APzS5pmaM0ASZpc1Hm
lBoAfmlzTM0uaAH5pc1HmlzQBJmlqMGlzQBJmlDVHmlzQBIDS5qOlzQBJmjNRg07NAh+aXNMBpc0
DILtRw/4Gq1Xz8ykeorPYFWIPUUAOzRmm5pc0Acr4i042032y3JCM2TjjY3tXf8Aw/8AEX9q2Is7
pl+2W6gDk5kQADcc9/WsiWNZYmjkGUYYIrjWabQtcSa3Yb4X3pyenofw4NXTnyO5FSHOrHu9Z2uW
3n2LMAS8fzDH6/pUukX6anpsF5GrKsq5w3UVcruT6nDszhKKt6pb/Zr2RAQVJ3D6GqlamoUUUUDF
6dKu2eqXNsCAwkU9pMnH0qjRSFa51tjqcF2VQHbKR90/0NXq4StfS9WkiKxT5ePoD1YVLiQ4djpQ
fWnUylBpJkDx7UHpSUtUIw/EdsHt1nGdycH6GucrumAIKnkHg1x2oW32S6eEHIHIPtRFmsH0H2mo
XNqT5b7gf4XyRWpba8jcXMZQ+qcg/hXP0U7IbimdT/bVl/ff/vg02TW7VV+Te59NuK5iilyoXIjZ
l1+Yn91DGo/2st/hWdcXc9wxMsjHPYHA/Kq9FOxSSQUUU2Rwi7jnHtQMdRVCW4d8gcD2pbe2e4zs
Kj/eNc8sSojsXqKzZYzG5VsZ9qKX1nyCx//ZCmVuZHN0cmVhbQplbmRvYmoKMTIKMApvYmoKPDwK
L0NBCjEuMAovY2EKMS4wCj4+CmVuZG9iagoxNQowCm9iagozMDgzMjAKZW5kb2JqCjcKMApvYmoK
PDwKL0ZvbnQKPDwKL0ZvbnQzCjEzCjAKUgovRm9udDQKMTQKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+
Ci9YT2JqZWN0Cjw8Ci9JbWFnZTEKMTEKMApSCj4+Ci9FeHRHU3RhdGUKPDwKL0FscGhhMAoxMAow
ClIKL0FscGhhMgoxMgowClIKPj4KL1Byb2NTZXQKWwovUERGCi9UZXh0Ci9JbWFnZUIKL0ltYWdl
QwovSW1hZ2VJCl0KPj4KZW5kb2JqCjE2CjAKb2JqCjw8Ci9UeXBlCi9QYWdlCi9QYXJlbnQKMQow
ClIKL01lZGlhQm94ClsKMAowCjcyMAo0MDUKXQovQ29udGVudHMKMTcKMApSCi9SZXNvdXJjZXMK
MTgKMApSCi9Bbm5vdHMKMjAKMApSCi9Hcm91cAo8PAovUwovVHJhbnNwYXJlbmN5Ci9DUwovRGV2
aWNlUkdCCj4+Cj4+CmVuZG9iagoxNwowCm9iago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQovTGVu
Z3RoCjE5CjAKUgo+PgpzdHJlYW0KeJy1Vl1P2zAUtcTbfZq08Q8mRJFm/P3B2yZghU0ahUCZBg9o
G6CphcH2H/a3d+y0TdIG2EobK7F94nttHx/7+o4kF5TSm7JghEX+dUh3JLgQMrpghcktputolLIh
aWe9E9l8UFWUsN6kwoCmKul7TX26QScpbb4d/Ly+EHT1q+yH7q/m8nxNlxvUQ7qb07y/kcdUMwMv
kxa1xpj65t7w4uq7pe3b3GUv24VY2UmvgvJcOhSdKDsOyjXMXWlep0ElGtJajN9MhnZSKh5MfVIT
7H+o6T3CuQzCB47VtdI4y3NnxgdvuNATbFDDZNA+xAxObGtYo1MdxkqrSllm40rKjefGhKgsSQ0d
+ujjWIvWK2uisCgGaV1wGiUtNWCbBv+ugI/injZ3b29+G9Ke6/QoKi6bGpeG2xiki6QjDzrG6Kgo
pVx8o3X2p0PFD9opKl6mXCvMfcYrfIkHHGq2zY5Zn62wQ7aHb599YF3ku6gfIJ2yHvsI9OwM4AmK
PfxKDVbZS/aKrT41noenqqPlEiS2D2zidxncRsWlcG5h1Lb4+wKPa+DwBTjczrT1R3l69yumO2TT
obbOXmMdDoAfwQor0qFzKvbnpBa/gjC+daJLZVYaw7XPbRZDbbvDtZE6kzL7YPF4fhlKE7nzMoT2
rpbLVnTcQfp+YWy1OCyVeApNHYOppMNP5W7ugsAjVA5TtcveA9rJf2qSTOI9R4sefm51cH5mvIuG
K8wl4tlnLEI6EU6eI1irHPcuWt1OyVyEILy5/JDSLm8D3ebziRDwTyEpxVaTCkOS3lpneKiwQYVZ
qxEIXSMk1bDnhCTQFhD77CgitRKFo1a1EJWDg+G+ucW2cDwdYvWxyR6n/wGvUmtuNAY043oBzCuv
o4BkbPM24GAP5TRuAyNMJiWUYGVcA2vXs2U4H13evPbecjViSVpVXr1mbSaXsFDd4VL6C6hTE30K
ZW5kc3RyZWFtCmVuZG9iagoxOQowCm9iago3MTkKZW5kb2JqCjIwCjAKb2JqClsKXQplbmRvYmoK
MjEKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAoyNTAw
Ci9IZWlnaHQKMTQwNgovQ29sb3JTcGFjZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgK
L0ZpbHRlcgovRENURGVjb2RlCi9MZW5ndGgKMjUKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAEC
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
v2q/9/I//jdVHEwRnPDzk7ngF2/mXMje9RxNslRh2INe9yfBnQHdmN/q4JOcCSL/AON03/hS+gf9
BDWP+/sX/wAbqPbxvcr2EzwzWJ3u/F2n2aBtlvbPdH03Mdqn6gBv++q1EgnPrXsVn8HNCtdTlvl1
HWJJpIlhIkliICgkjH7vOeTWl/wrPSP+fvUf++4//iK+czShXxOIdSCujKWGqaJI8QW1nPc0v2Wb
+8a9v/4VppH/AD96j/33H/8AEUf8K10j/n71H/vuP/4ivN/s7Ffyr70R9Vq9jxEWcx6saabCQ969
w/4VrpH/AD96j/33H/8AEUf8K00j/n71H/vuP/4ij+zsV2X3oPqtU+frrS5ElwmcEZ6UV73N8LdG
lYM17qgwMcSR/wDxFFbLA4q2q/EPqtXsd9RRRX0R6oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9kKZW5kc3RyZWFt
CmVuZG9iagoyMgowCm9iago8PAovU3VidHlwZQovSW1hZ2UKL0ludGVycG9sYXRlCnRydWUKL1dp
ZHRoCjEwMDAKL0hlaWdodAo0NjkKL0NvbG9yU3BhY2UKL0RldmljZVJHQgovQml0c1BlckNvbXBv
bmVudAo4Ci9TTWFzawoyNgowClIKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5ndGgKMjcKMApSCj4+
CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4P
DBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEyga
FhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEI
AdUD6AMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMD
AgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUm
JygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaX
mJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4
+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncA
AQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6
Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeo
qaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhED
EQA/APlSiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9kKZW5kc3RyZWFtCmVu
ZG9iagoyNAowCm9iago8PAovU3VidHlwZQovSW1hZ2UKL0ludGVycG9sYXRlCnRydWUKL1dpZHRo
CjE2MDEKL0hlaWdodAoyNTAwCi9Db2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQZXJDb21wb25l
bnQKOAovU01hc2sKMjgKMApSCi9GaWx0ZXIKL0RDVERlY29kZQovTGVuZ3RoCjI5CjAKUgo+Pgpz
dHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQ
FxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYa
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAnE
BkEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIE
AwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJico
KSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ
mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6
/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC
AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNE
RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq
srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEA
PwD5UooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoora8P+Ftc8
ROo0bTLm6QsU81UxErAbiDIcKDjHBPceoqZzjBc0nZDjFydoq5i0V0PiDwX4j8PI0mr6RcwQqodp
lAkiUE7Rl0JUHPGCc8j1Fc9ShUjUXNB3XkOUJQdpKwUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUVp+H9C1LxFqK2GjWj3V0VL7FIAVR1JYkADoMk9SB1IpSko
rmk7IaTk7IzK6Hwn4O1zxVOE0eyd4Q217l/khj5GcseCQGB2jLY5ANe1eA/gvZaXILvxRJDqVyMF
LaMN5EZDZyScGTIA4IA5YENwa9bt4YreCOC3jSKGNQiRooVUUDAAA4AA7V4GLz2ELxw6u+/T/gnq
4fK5S96q7eXU860X4NeFLKxSLULebUrngvPLM8fOACFVCAFyCQDk89TXoNjZ2un2qW1hbQ21smdk
UKBEXJycAcDkk/jVirdpp891yq7U/vN0r5qtiatb+LJs9iFOlRXupIoXEMVxBJBcRpLDIpR43UMr
qRggg8EEdq8k+IXwb0+/tbi+8Kx/Y9SHzi0D4gm5JIGfuMcjGCFGAMDOR7PfWklpLtflT91h0NV6
eHxVXDS5qTt+TFUo068bSVz4Vor6h+Knwyg8Xbb/AEtobTWlwrPJkRzp0w+ASGA6Ng8DB4wV+bda
0jUNEvns9Ws5rS5XPySrjcMkblPRlyDgjIOODX22CzCljI3jo+qPnMThJ4eVnqu5QoooruOUKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACrFjZ3WoXSW1hbTXNy+dkUKF3bAycAcngE/
hXqHgP4N6pqt0JvE8c2mab5YdVV08+UsOABzsx1O4Z7Y6ke+eHfDmkeHLU2+iWENpG33ygy78kjc
5yzY3HGScZwK8bGZzRoe7T95/h956OHy6pV96fur8TyfwH8E4I4xdeMW86U4KWUEpCKCvIkYYJYE
9FOBt6sDgex6bptjpcDQaZZW1nCzbzHbxLGpbAGcKAM4A59qt1JBBJO22JCx/QV8ticZWxMr1JfL
p9x7dHD06CtFEdWbSxmuiCi4T+8ela1jpMcQD3GHf07CtQcDpgelclyZ4i2kSla6bbwINyCR+7MM
8+1XR6dhSE/nQeFA7mkcrk5asbJGkqbZFVlPYisLUtMMOZIAWi6kd1rfJxtoPdT0NCLhUcHocbXP
eMPCWleKNOuob6ztjdyQGKK8aENLCeSpDcHAY525APIPBNdxqOmYzJbDjqU/wrIrWnUlTkpQdmjs
9yrGz1R8dePPB+oeDdYNnfjzIJMtbXSrhJkHcejDIyvb3BBPNV9v6tp1nq+nXFhqVulxaTrskjfo
R/MEHBBHIIBHNfMXxK+GWoeEPMvrZvtmimTaso/1kIONolGMDk43Dgkc7SQK+vy3No4i1OrpL8/+
D5fceFjMA6Pvw1j+R57RRRXtHmhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUV2fhf4aeJ/EUcM9rYfZ
rOX7tzdt5aY27gwH3mU5GCqkc9eDj3nwL8LtD8LpHPPGmp6ojFhdzx4CcgrsQkhSNo+bls55AOB5
uLzWhhla/NLsv17HZQwNWtray7s8c+G/wr1DxR/pmqGbTdKG1ldo/wB5cA4P7sHou0/f5GSMBuce
+eDPBWi+EbXy9Kt9053b7uYK07gkHaWAHy8LwMDjOM5J6WlRGkbailm9AM18rjMyrYptSdo9v63P
cw+Dp0FdK77iU+KJ5n2xKWb0FaFjpUkh3XAKL/d7n/CtuGCKBNqKFHoK89s0qV1HRambY6Qq/Pc4
Zv7vYfWtVVVBiNQPoKXlunAoJC8L19am5yynKb1A8e7UdOT1pBgDJ/CmkkmgkegycmkY5NOPyx+5
qKgEPbov0peqZ9KR/ur9KIzyR60B0F+8uR1HWqGoWCXMZZAFlHQ+vsauKSrc/jTmG07h0NA4ycXd
HISI0blHUqw6g02upvbKK7j9HHRh1Fc7dWsts5EqnHZuxqkztp1VP1PA/ih8H/8Aj81jwmv/AE0f
TET67jF+hEePXB+6teFV91V5P8YPhomu2q6l4asIV1lZP3yRssQuEYkljnALhjnJIyN2STtFfSZZ
nDTVHEPTo+3r/meZjcvTvUpL5f5HzbRVvVtOvNI1G4sNSt3t7uBtkkb9Qf5EEYII4III4qpX06ak
ro8Vpp2YUUUUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRWnomharrs/k6Pp9zeOGVGMUZKoWOBuboo4PJIHB9K9i+H3wV+5e+M
v9sDTo3/AADPIjfU7V/2cnqtcmJx1HCq9SWvbr9xvRw1Ss7QXz6HkHh3w5q/iO6NvolhNdyL98oM
InBI3OcKudpxkjOMCvoPwZ8G9F0K6+1arN/bM43BEmhVYACAMmMltzD5uScc9MgGvRtN02x0uBoN
MsrazhZt5jt4ljUtgDOFAGcAc+1W6+Xxuc1a/u0/dj+L+f8Ake5hsup0tZ6sKKtW1hPOVOwqh/ib
/Ctuz06KDBVdz/32/pXjXOydWMTKstMkmIabMcf6mt22tY4ExGoUevc1L8qe5phYsf6VO5yTqSmO
LAcL+dCrnk8ChV28v+VNdy30oM/QV27DgUqKMbm6UiLnk9BSO248dKA8gZtxzSxDLZ7CmDk4FWFA
VefxoB6EUpy2PSmUM2STSZoGiWT7i0xThhT5P9WtRUAiWYYINJG2cqehp/34veoAcH3FAlqPBMb+
1LcQx3MJVwCppxxImR1qONtjYbgd6A81uc7f2D2rEjLR+vp9ap12ciq6EMAVIrn9S0xom3wKWQ9Q
O1NM66Vfm0kcB488CaR4xtT9uj8rUEjMcF5H9+PnIyM4dc9j6tggnNfMXjTwhqvg/UUtNXjQiRd8
U8JLRSjjO0kDkE4IIB6diCfsmsLxd4U0jxZYrbazbeZ5e4wyo22SIkYypH4HByCQMg4r2MuzSeFa
hN3h+XoYYzAxrrmjpL+tz4yorsPG/wAPtc8JTzPc2z3GmKxCX0S5QrkAFgMlDlgMN3yAT1rj6+xp
VYVo89N3R89OEqb5ZKzCiiitCAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAoor0nwZ8Idd8QR/aL9v7HtlkaN1uoJBPwoIZYyACpJAzuHQ+nONbEU6Eea
q7I0p0p1XywVzzavavB/wPlvbS1vfEWovbJKokNpbxkSqrICAzOPlYE8rtPTrzx6p4P+H/h7wptk
06z828H/AC+XJEkv8XQ4AXhiPlAyMZzXWV81jc8lP3cPou/9bHs4bLIx96tr5FDRdI0/RLFLPSbO
G0tlx8kS43HAG5j1ZsAZJyTjk1fqSCGSdtsSFj+grVtNKVSGuDuP90dK+flJyd5PU9NyjTVjMt7a
W4OIlyO5PQVt2emxQkEjzJPUjj8qvRw7VAACqOwp5dUGFqbnLOs5aIFQKMsaa0hPA4FMZi3WnIhb
noKRj6iKCxwKl+WMeppGZUGF61CSScmgNxzMWPNLGpY+1JGm4+1PkcKNq0D8kNlbPyjoKZSZoHJw
KB2JYV53U6ZsLj1p6LtUCq8rbnPoKCVqxtGaTNGaCieT/Ur+FQ1NL/qR+FV6BRJ7duo/Gmzja+ex
pkTbXB7VPOuUJ9KA2ZFE+1uehqSdMjcOoqtmrED7htPWgHpqNik2nB6VKwAHPKn9KgmQocj7pp0M
mPlbp2oBrqjO1PTA+ZIcBv0NYbKUYqwIYdQa7E5jzxlPT0rP1LT1uV8yLhgODTTN6Va2kjmbiGK4
gkguI0lhkUo8bqGV1IwQQeCCO1fNXxY+GE/hqS41bRl8zQeGcNIN9qSwUKcnLKSwwRk+vTcfp2eF
4H2yLg9j2NR13YLHVMHPmhqnuu5WIw0MTGz+TPhWivoD4h/BiK8eXUPCJSC4dmkksZGCxHjOIjj5
TkfdJ2/N1UDFeB3EMtvPJBcRvFNGxR43UqyMDggg8gg9q+0wmNpYuPNTfquqPnK+GnQlaaI6KKK6
zAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK6HwX4Q1XxhqL2mkRoBG
u+WeYlYohzjcQDySMAAE9ewJEVKkacXObskVGLm+WKuznq7D4f8AgHVfGk8jWZS2sIWCzXcoO0HI
yqgfebBzjgdMkZGfYvDXwQ0HT/MbW7ibV5DkKvNvGo4wcK24twed2MHpxmvVLeGK3gjgt40ihjUI
kaKFVFAwAAOAAO1eBjM9gly4bV93serh8rk3ett2OM+Hvw50rwdB5gCX+qFixvZIgGQYICxjJ2DB
IODk5OTjAHb0Dk4HWtC20yWQBpT5Y9COa+arVp1pOdR3bPYjGFGPLHRFBVLMAoJJ7CtS00vID3Jx
/sD+taNraRwDESc92PU1cWIDluaxbMKlfpEhhhCqFjUKo9KnAWMZPWmtKBwozURYk5NI59XuPeQt
04FMoUFjgVMiBBluvrQPRCRx92/Kkkl7L+dNkl3cL0qPNAJX3FzTkUucdqail2wKnYrEuB1oBvoJ
IwjUKvWoM0MSTk9aTNA0rC5qW3XJ3H8KiUbmAHeragKoA7UCkxJW2oTVSpblvmC+nNQ0BFaC0maK
Sgotzf6k/hVWrc/+qaqeaCY7C1cjO+MfSqVWLVuq/jQEloQuNrEHtSK21gR2qa6Xo4+hqvmgpaov
cSJ7GqkilGINPt5dp2noamnj8xeOooJ+FjIJc/Kx+hpWzC2VHyHqPSqnQ1bglDja3X+dANW1Irq1
juougOa5u8tntpNrZK9jiuoZWhJZOU7imzQx3cRyBzwQaEzSnVcPQ5KvNvip8MoPF22/0tobTWlw
rPJkRzp0w+ASGA6Ng8DB4wV9XvdOktyxX5lHbuBVGuihiJ4eaqU3ZnTOEK8OWWqPiDVtOvNI1G4s
NSt3t7uBtkkb9Qf5EEYII4III4qpX2F408C6H4wRDq0DrdRrsjuoG2SouQcZ5BHXhgcZOME5r5i8
eeD9Q8G6wbO/HmQSZa2ulXCTIO49GGRle3uCCfs8BmlPFrleku3+R89isFPD+9vH+tzmqKKK9M4g
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooqS3hluJ44LeN5ZpGCJGilmdicAADkkntQBHV/Q
9Jvdd1SDTtKg8+8m3eXHvVc4UseWIHQHvXsXgX4JNIkd54wleIhif7PgYEkAjG+QE8EBuF5wQdwO
QPX/AAz4X0bwxBNDoVilqkzB5CGZ2YgYGWYk4HOBnAyfU14mLzujSvGl70vw/r0+89KhllSdnU0X
4nlfgz4HR2119o8WXUN3Gu4LaWrOEbgYZpPlbjn5QB0Bz1Fe1W8MVvBHBbxpFDGoRI0UKqKBgAAc
AAdqkqe1tZLlvkGF7selfMYnGVcVLmqu/wCR7VKhTw8fcViCrVpZSXPI+RP7x/pWlBp0ERDNmRh/
e6flWjHGW9lrkuKde3wlS1tIrcfIuX/vHrV1IieW4HpUioqc/qaY83OE/Okcrk5MkJWNfT2qu8hY
+3pTCSTknmjNA1GwZp8aFz6D1p8cORluPapJHEa4HXsKBN9EKAsa+gqvI5c89PSmu7Ocmm0DSsLS
qCzYFIqlmAHerSqsSk/maAbsHEUef8mqrMWbJpZZC59uwpmaASFopM0INzBR3oGWLZeC34VPSKoV
QB0FR3L7Y8DqeKRnuys7bnJpKbmima2FpR1FNpU++v1oAvTf6pvpVCr8n+rb6Vn5oJgLUkBxKvvx
UWaASCCOooKZouu5SD3rPPBIPUVoI25Qw7iqt2m1gw6GgiD1sQZq7bSb0weoqjmnxSGN8jp3oKkr
onuov41/GqwODkda0QQy5HINUbmPy2GM7TQKL6FqCUSDB+8KilVoX3p93uKrKxUgrwRV6CQSpzjP
cUCa5dQBS4T3/UVhalpzI7PGPcr6/SteWIxHfETgdRUkbpcJtYfN3FBUJuGq2OQqpq2nWer6dcWG
pW6XFpOuySN+hH8wQcEEcggEc11OoaYrEumQfX/GsJ1ZGKsMEdquMmndbnbGcaiPlb4lfDLUPCHm
X1s32zRTJtWUf6yEHG0SjGBycbhwSOdpIFee191V4N8SPg0sEE+p+EA5SNQW03l2IAO4xsSST0Ow
5J5wei19Vl2dKdqeIdn0ff17fl6HjYvLnH36O3Y8Oooor6E8gKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
u3+Hvw51XxjP5gD2GlhSxvZIiVc5ICxjI3nIIODgYOTnAPuvh/4S+E9GdZGsn1GZWLK98/mAAjG3
YAEI6nlScnrwMebi81oYV8jd5dkdlDA1ay5lovM8Z8I/CPxHrk8TajA+kWDqzGe4QFwQcBfKyGyT
64GOcngH6D8J+DtD8KwBNHskSYrte5f55pOBnLHkAlQdowueQBXQ0qKzsFQEsegFfK4zMq+L0k7L
sv17nuYfB0qGq1fdiU+KN5XCRqSxrSttMHDXBz/sg/1rQhhSIBYkAHtXn3NZVktila6YiYac72/u
jpWkiZwqDgdh2qWODu/5VL8sa9gKm5yyqOQ1IQvLcmlkkCD39KhknJ4XgVETk5NBPK3uOeRnPPT0
ptJmnxxmQ8cD1oK2GgEnA61ZiiC8t97+VPSNU6Dn1qGafB2p+dBF76IkllCcDlqqliSSetNJzSZo
LUbDs0AEnA6mkGScCrkUQjHq3rQDdgijEa5PXuagnl3nA+6KdcS9UXp3NV80CiurFzSUmaM0FC1a
tUwNx79KrxKXcDt3q+BgADoKCZvoFU7l90hHYcValfZGWrPzQKC6hmikzRmg0Fp0f+sX6io80+Hm
VPrQDNB/uN9Kzc1pnoayqCIDs0ZptFBoXrNsx49DTrld0LY6jmqto+2UDs3FX6DGWjMrNFPnTy5S
vbqKjzQbLUt2cuPkP4VZlQSIVNZYJBBB5FaNvJ5seT1HBoM5xtqig6lGKt1FCOUYMvWr1zCJFyPv
jpWceDQVF8yNSKRZUyPxFVLiJon3p93OeO1QRyNG2VNaUbLLGCOQRyKCWuR3I7ecSDa3DfzqnqNg
sikgcDoR1FS3Nvs+eLOB1HpUltc7/lk+92PrQNXj70Tl54Xhba4+h9ajrqryyjmQ4Xn09a526tWg
JPJT19PrVJnXTqqZ5H8XPhnb69ZPqXh6zSPW0bLRxBI1ugzfMWyQAwyW3dTyDnjHzbcQy288kFxG
8U0bFHjdSrIwOCCDyCD2r7mrjPG3w50HxX9puLm3+z6rLGEW9iJ3KR90sudr+hyM44BGAR72W5w6
C9lX1j0fVf8AAODGZf7V89PRnyRRXQ+NPCGq+D9RS01eNCJF3xTwktFKOM7SQOQTgggHp2IJ56vq
4VI1IqcHdM8KUXB8slZhRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRV/RdI1DW75LPSbOa7uWx8kS52jIG5j0VckZJwBnk17r4P
+B1la7Z/FN19ul/59bZmSIfeHL8M38J424II5FceKx1HCr949e3U6KGFqV37i07nivhnwvrPieea
HQrF7p4VDyEMqKoJwMsxAyecDOTg+hr3j4ffB3T9F2XniTydT1Abx5GN9sgPAO1hl2xnk8DPTIDV
6hY2drp9qltYW0NtbJnZFCgRFycnAHA5JP41Yr5jGZzWr3jD3Y/j957eHy6nS96Wr/AKKt2tjJNh
j8iep71pwWcMIG1AWH8TcmvGudkqsYmfa6dJLhpfkT9TWrBBHAuI1A9T3NTIjOePzqxHCq9eTUtn
LOq3uQxxM/sPWrKRqnTr60rsqDLHFVZJ2bheBQZayJ5JlTgcmqruXOWNMooLUbC0ZpAMnA5NW4YA
oy4BPp6UA2kRRQl+W4X+dWgAi8YAFDsEXLHAqlLKZD6L6UEayJJp92VTgevrUFJRQaJWFopKt28I
UBmHzfyoBuwtvFsG5vvfypLmXaNq9e/tTp5RGvH3j0qiSSck0ERV9WLRTc0ZoNLC0ZpM0+FDJIB2
70AWbRMKXPU9KsUAADA6UUjFu7Kt633V/GquadPJvkJ7dqZmmbRVkGaKTNFAxakt/wDXJ9aiqW1/
16UCexonpWU33jWrWS/Dt9TQiKYZopuaM0Go4HaQR1HNaqtuUEdxWRmr9i+6IqeqmhmdRaXC+TKB
x1HWqOa1mAZSD0NZMilHKnsaApu6sJmprWby5Ofung1BRmmaNX0NmqN9EQ3mDoetPsZtw8tjyOlW
2AYEEZBpbGGsGY1S28xhfPVT1FF1CYpOPunpUNBvpJGyrB1BU5BrPu4DESy8of0qO3uGhbqSncVq
cOvYqRRsZawZTtbrokh+hqW6tlmUkYDfz+tV7u22fPH93uPSktrsodspyvr6UDtf3omPfWbQksoI
A6r6VSrspoknTnHI4IrBv9PKMdoAPbHQ00zopVr6M5HxZ4a03xVpR0/WIneEN5iMjlGjfaVDjHBI
DHggj1Br5b8eeBNX8HXR+3R+bp7yGOC8j+5JxkZGco2Ox9GwSBmvr5gVJBGCO1V76ztdQtXtr+2h
ubZ8b4pkDo2DkZB4PIB/CvUwGZVMG7bx7f5GeKwcMQr7PufDtFesfGD4ZQeF7VdY0Jpn01pNk0Em
XNuWJKkNj7nRfm5B28tu48nr7LDYmniaaqU3ofO1qMqMuSe4UUUVuZBRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRXpPgP4Sav4mtRe30v8AZWnyRiSCWSPz
HmyeMJuBC4GcnGcrgEHIxr4inh489V2RpSpTqy5YK7OB03Tb7VJ2g0yyubyZV3mO3iaRguQM4UE4
yRz716b4L+C+r6r5Vz4gk/sqzOG8rG64cfKcY6JkEj5uQRyte4+C/CGleD9Oe00iNyZG3yzzENLK
ecbiAOADgAADr3JJ6GvmsXntSTcaCsu/U9mhlcUk6ru+xk+HfDmkeHLU2+iWENpG33ygy78kjc5y
zY3HGScZwK1qfDE8zbY1JNadtpyJhpjvb07CvAnNzfNJ3Z6bcaasjOgt5JziNTj1PQVqW1hHFhpP
3j+/SrYwBgcD2qaOBn5PAqLmE6rfkRjJ6Cp47cnl+ParCIEGFFJJIqDLGkc7lfYcAAMDgVDLOq5C
8tVeWZpOvA9BUdAKHcczFjljk03NJRmg0FzTkRpGwtPhhMnJ4X+dXFUKMKMCgiUrDIoljHHJ9aWW
RYxk9ewpk84j4Xlv5VSZixyTk0CUb6sfJIXbLH8KZmm5ooNLDs0maSrdrDwHb8BQDdgtoejuPoKn
lkEaZPXsKc7BFLMcAVmyyGRyxoM0uZ3YO5dizHk02kzRQa2FopKSgB2avWkeyPcerVUtkEkwB6Dk
1pUGc30Corp9kJ9TwKlrPvZN0u0dFoJgrshpM0maSmb2HZozTaKQWFzU1nzcLUFT2P8Ax8D6GgUt
jSrJm/1r/Wtasm5/18n1oRnT3GUUlFM2FzViwbE+OzCquafE+yRW9DSE1dWNiqGoph1Yd+DV8cio
rqPzIWHccikYRdmZVJSUVR02HK5Vgy8EVrwyCWMMO9Y1WbGfy5NjH5W/Q0mZ1I3VzQmjEsZVvwPp
WQ6lWKnqDitqqt9B5ib1++P1FCIpys7Mzat2dx5Z2OfkPQ+lU80maZs0mrM3uCPUGsy7tzEdyjKH
9KWxudjCN/unp7VpUtjHWmzLtLkxNtY/uz+laTKkqYOGU1nX1t5f7yP7ncelQ21w0DccqeooKceb
3ojNTsCBkfg39DWM6sjEMMGuyjdJo8ryprOv7AFSyDKdx3H0ppmlKtb3ZHO14d8VPhGrpPq/hGBE
KLul06JDmQ5Ys8fJ5wVAjAAwOOcA+6zwmI88qehqOuvC4uphZ89N/wDBNa1CGIjyyPh2+s7rT7p7
a/tpra5TG+KZCjrkZGQeRwQfxqvX1Z8VPh5F42gtp7e5S01O1V1SRowVlUjIRyOQA3Q84y3BzXy9
q2nXmkajcWGpW7293A2ySN+oP8iCMEEcEEEcV9ngMfDGQutJLdHzmKwksPLXboypRRRXecoUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVu+EfCmr+LL5rbRrbzPL2maV22xxAnG
WJ/E4GSQDgHFTOcacXKbskVGLm+WKuzCrqPD3gLxLr08CWWk3McMqrILm4jMUOwkfPuYYYYIOFyS
OQDXuPw9+EWn+HLq31LVZ/7Q1SL50ULiCF8DkA8syndhjjqDtBANeo18/i8+UXy4dX83/ketQyty
V6rt5HA+BfhdofhdI55401PVEYsLuePATkFdiEkKRtHzctnPIBwO+oq7b2DyYaQ7F/U181Wr1K0u
eo7s9eEIUY2irIpojOcIpY+gGavW2ns2GmO0f3R1rQhhjhXEYx6+9SgFjgDJrG5nKs3sMijSJdsa
hR7VKkbP90H61Yht8cycn0qwOOlI5nMiigVOTy1SkgDJ4FRyzLH15b0qlLM0h56elBKi5almW5A4
j5PrVUsWOScmmZooNFFIdmkzSU5FLsFUc0FCDJOAMmrUFuchpB+FTQwrGPVvWpCQASTgCgylO+iC
q1xcADbGcnuRUVxcF/lThf51XoHGHVi0UlJQaC5ozSZqxaQ+YdzfdHb1oBuyuLbQFzucEL/OrpIU
ZJAApaz7ybe5Rfuj9aDLWbEuZvMbA+6OlQ5pM0lBslYdmkzSUUBYXNGaSprSPzJRn7q8mgHorlyz
i2R5I+ZqnoopHM3d3GyOERmPYVksckk9TzV3UWxGq55JzVCmjamtLi5pM0maM0zQXNFJSUBYdViw
/wCPj8DVWrenf68/SgU9maNZN3xcP9a1qyr7i5f8P5UkZUtyCijNJmmbi0UmaTNAGxZvvt155HBq
as7TJMSMh7jNaNJnNNWZk3kflTkD7p5FQZrU1CPfBuHVeayc00bwd0LmjNJSUFmvYz+bHtY/Ov61
ZrCikMUgdeorcRg6Kw6EZpM56keV3M6/tyjeYg+U9cdqpZrfIBBBGQaxLmIwSlT07H1FCNKcr6Mi
rSsbsMBHKcN2J71m5pM0y5RUlZnQkBgQRkGsq8tWiYsgJj/lU+n3XmYik+8Oh9avUtjnTdN2MS2n
MEm4cg8EVsQzJMuUYH1HcVm6ha+V+8j+4TyPSqkUrROGQ4NPc1cVNXRoahZCRS0aA5+8vr9KwLi3
aJjgEj6ciuotLlbhMjhh1FJd2qzjI+WTsaSYU6rg7SORrmvGfgrRfF1r5eq2+2cbdl3CFWdACTtD
EH5eW4ORznGcEdje2jRuflww6j1qnWtOpKnJTg7M6mo1Y2auj4v8U+GdV8L6i9nrFq8RDFY5gCYp
gMfMjY+YYI9xnBAPFYtfb+radZ6vp1xYalbpcWk67JI36EfzBBwQRyCARzXzN8TvhjeeD0F/ZSvf
aOzENIUw9uSflD44IIwN4wCeMDIz9fl+bwxNqdXSX4P+ux4GLy+VH34ax/I85ooor2jzgooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooqS3hluJ44LeN5ZpGCJGilmdicAADkkntQBHV/RdI1DW75LPSb
Oa7uWx8kS52jIG5j0VckZJwBnk16T4L+C+r6r5Vz4gk/sqzOG8rG64cfKcY6JkEj5uQRytfQei6R
p+iWKWek2cNpbLj5IlxuOANzHqzYAyTknHJrxcbnVKh7tL3pfgj0sNl06us9F+J4l4D+Cc8kguvG
LeTEMFLKCUF2IbkSMMgKQOinJ3dVIwfdLGztdPtUtrC2htrZM7IoUCIuTk4A4HJJ/GrFSQwSTHCL
x6npXzGKxtXFSvUfy6HtUcPTw6tFfMjqxDZzS4O3ap7tV+2skiIZvncd+wq1XHccqv8AKQW1pHBz
95/7xqxT4omkPHT1q7FCsfTk+ppHPKfcrRW7McsNoq3HGqDCinVDNcLHx1b0pGTbkSswQZYgCq01
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
abIiyIyOMqRg0GMJ8rObzSZqW6ga3mKN06g+oqGmdqs9USwTNBKHTr39xW7a3CXEe5eCOoPaudqS
CdoJA6HnuPWhozqU+ZabnRsoZSrAEHqDWNfWLQZePmP9RWtbzpcRB0P1HpUhGRg9KRzxk4M5gEqQ
QcEd61bLUQ21J+G6buxqtqVp5D74wfLP6GqGae50tRqK51LKHUqwBU9Qax77TCFZovmT+73FP02/
ChYZjgdFb+hrWpbGF5UmcZJGU9xTK6PUdP37pYB8x5ZfX6VgyxFScD6j0qkzsp1FNHnnxC+GOleM
J/tolew1TaENxGgZZACMeYnG4gAgEEHkZyABXzb4p8M6r4X1F7PWLV4iGKxzAExTAY+ZGx8wwR7j
OCAeK+0KyfFHh/T/ABNo82m6tD5kEnKsOHjcdHQ9mGf5g5BIr2MvzaphmoVNYfivT/I48XgIVryj
pL8z4rorqPHXgnVfB+oyQ3sTy2JYCG9RCIpQckDPRWwDlSc8HqME8vX2NOpCrFTg7pnz04Sg+WSs
woooqyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAoqxY2d1qF0ltYW01zcvnZFChd2wMnAHJ4BP4V7F8P/gtczzyXPjNHtoY2AjtIplLS4IJL
MpIC44wDuPPK4GebE4ulho81R/Lr9xtRw9Ss7QR5R4f0LUvEWorYaNaPdXRUvsUgBVHUliQAOgyT
1IHUivePC/wO0i0jhl8Q3U2oXI5eGJvKg5XG3I+c4OSGBXPHHXPq9jZ2un2qW1hbQ21smdkUKBEX
JycAcDkk/jVivlsXnVatpS91fj9/+R7mHy2nT1n7z/Ajt4YreCOC3jSKGNQiRooVUUDAAA4AA7VJ
UsNvJMflGF9T0rSt7dIRkDL/AN414rZ3SmolKCyeQZf5B79a0IIEhXCjnux6mn5pyI0hwoJNIxlN
vcM1LDbvLz0X1NWIbRVwZPmPp2q1SMJT7EMNukfP3m9TU1FVJ7wL8sXJ9e1IzScmWJZViXLH6D1q
jNdPIMD5R7VXZ2ZiWOSe9JTNowSFozSUlMsXNGaTNKAWOAMk0AFWoLQuA0hKj071Na22wbpBl+w9
KtUrmUqnRCIoRQqjAFKSACScAU2R1jUs5wKzLm4aY46J2FBEYuRJc3bPlY+F9fWqtN3D1FG9fUfn
TOhRtsLRTDIo/iX86Qyx93X86CrElGaiM0Y/jX86BNESB5iDPcmgLMsQxtLIFX8T6VqwQrCmF5Pc
+tVYLqyhTatxHnuc9ak/tC0/5+I/zpGE+aWyLLsEQsxwBWRc3BncHGFHQU291COZtquNg6e9VvPj
/vrQkXTpNaslzRmofPj/AL4o86P++v50zXlZLmjNR+dH/fX86PNj/vr+dAWJM0UzzE/vD86N6+o/
OgLDxknA5NbkEQhiCDt39azdNRXl3sRtXpz3rVBB6EUmc9V62CiiikZFTU5NsAXuxrJzVjUZfMuS
B0XiquapHVTjaI7NJmkzRmgsXNGabRQAuaM0lFAxc1qaP/q5D7isrNauj/6hz/t/0FDM6vwl+s3W
BzCfr/StKs7WfuRH3NJGFL4kZlGabmjNM7B2aTNNzRmgB2aAcHIpuaSgLHSW0nnQI/qKkrO0aTMb
xnqpyK0ak4px5ZNFbUIfOtzj7y8isHNdPXPX0QhunUdDyPoaaNqEvskFFGaTNM6BadHIY5FdDhlO
RTM0maAsdJaTrcQh14PQj0NTVgabc+RcAH7j8EVv0mcVSHKyvfW4uISowHHKmueYFWIYEEHBFdTW
Zq9puBnjHI+8PX3oRpRnZ8rMjNGabRVHVYtWV21rISBuVuCK34ZFljDocqa5arVhdm1k5yY2+8P6
0mjGrS5tVudC6h1KsAVPBBrE1CwMA8yMlo+/qtbaMroGQgqRkEUpGRg8ikc8JuDOTrQsdRaEBJRu
j7HuKZqdmbeQug/ct6fw1RzTOy0akTrEYOoZTlSMg1UvbBLk7gdknqB1+tZen37WxCPloj29PpW9
G6yIGQhlPQilsckoypO6OTuLdopGVgVYdjVeuvvLWO6TDjDDow6iucvbSS3fbIPow6GmmddKsp6P
cyNW06z1fTriw1K3S4tJ12SRv0I/mCDggjkEAjmvnj4qfClPC2lrq2iXE1xp8WFuUuWXzIyWwrAg
AFSSBjGQcHkE7fpIjB5oruweOq4SV4PTqu5OIwsMRG0t+58K0V7j8UfhDL59zq/hKJDCVMs2nKCG
DZ58kAYIIydnGMYXOQo8Or7bC4unioc9N/8AAPmq9CdCXLNBRRRXSYhRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRXYeCPh9rni2eF7a2e30xmAe+lXCBckEqDgu
cqRhe+ASOtZ1asKUeeo7IuFOVR8sFdnH1638Ovg9eayjXnihLnTrFlZY4VPl3BcEYYqyEBcbuuDw
DjByfX/BHw+0PwlBC9tbJcamqgPfSrly2CCVByEGGIwvbAJPWuwr5rG5653hh1bz/wAj2cNlaj71
bXyOa8GeCtF8I2vl6Vb7pzu33cwVp3BIO0sAPl4XgYHGcZyT0tKqljhQSfQVdt7L+Kb/AL5FfP1K
kqknObu2eolGlGy0RUiheU4QZ9+1X4bJEwXO9v0qyoCjCgADsKWs7mcqjewvAFA5OAMmnxxFuWIR
O7McVMt5Y2ox5ys3cqNx/SkZN9lcdDZlhmUlfYdauRosa7VGBWZJrcA+5HI314qrJrkh/wBXEoHu
c0WZPsqkuhv1FPcJEOTlvQVzr6tdt0dV/wB1apvNI5JaRiT707FRwz+0b092zjDEKvoOKqtPEOrr
+dZFFOxuqKRpm8iH8RP0FMN8nZWNZ9FFivZoum+9I/zNMN9J2VP1qrRRYfJEtfbZf7qfkf8AGnR6
jcR5KbAfXbmqdNLqOrKPxosHJHsX21S8brNj6KBUbX92etxJ+dZ73dsn354l+rils7qC+t0nspo7
iB87ZImDK2Dg4I9wRT5Xa9hcsE7WRaeeaT78rt9TTNzf3j+dSJbTv9yGRvopqVdOu26QN+JA/nSH
eKKuT60VeGk3Z6qi/VqeNHuO7RD8T/hRcXtIdzOoq/NpksUbOXQhRk9awdQvntXVUhEm4ZyXxj9K
2oUKmImqdJXZM69OnHnk9C/RWMNWm2nMMYPbkmhdWl43Rp74Jr0VkWOf/Lv8V/mc39p4b+b8H/kb
NFZB1Z9w2xLt75PNL/azf88h+dV/YOO/k/Ff5i/tTDfzfgzWorJ/tZv+eQ/Oj+1m/wCeQ/Oj+wMd
/J+K/wAxf2phv5vwZrUVk/2s3/PIfnR/ax/55frQ8hx38n4r/Mf9p4b+b8Ga1FZQ1b1i/WlGrL3i
P51LyPHL/l3+K/zH/aWG/m/B/wCRqUVmDVk7xN+dKNWi7xvUPJccv+Xb/D/MpZjhn9v8zS+lKHcd
GYfjWcNVg7q/5U4apb+rj/gNZvKsYv8Al0/uKWNw7+2jRE0o6Sv/AN9GpBd3A6Tyf99VljUrXu5H
/ATTxf2p/wCWo/EEVlLL8VHelL/wF/5FLE4eX2196L3nSZyXJJoE8n979KqC7tz0mj/76p4miPSR
D9GrKWHqx+KDXyZoqlOWzRaFxJ7H8KX7S/ov5VXDA9CKKyaa3LsmWPtL+i0ouj3UfnVeikHKiyLk
d1NKLhPQiqtFAuVFwToe9a2k3MC27K0qBi5OCcdhXO0UWJnSUlY7RZEf7jq30Oao60P3EZ/2v6Vz
NO3vjG9semaVjKOH5Xe5coqmJHH8Rpwmf2pm3Ky1Rmq4nPcClE47g0C5WT5ozUQmU98fhSh1PQig
LF3TpvKu09G+U1v1ygPpXT28nnQJJ/eHNSzmrx2ZJWZrUPyLMvUfK30rTpk0YlidG6MMUjGEuV3O
XzRmldSjsrdVODTc1R3i0lGaTNAxa3tLu/Pj2OR5i/qPWsDNSW8zQTLInUH8xQzOpDnVjqaKZDIs
0SyIcqwzT6k4djB1S0FsweP/AFbHGPQ+lUM11NxCs8LRuOD+lcxcRPBM0bjkfrVI7KM+ZWe43NJm
kpKZsaOmX/2dvLk5iJ6/3a3wQQCDkGuPrU0m/wDKIhmP7s/dJ7UmjCtSv7yNt1V1KsAVPBBrC1LT
zbjzIctF3B6r/wDWreoIBGCMikjnhNwehx9WrO9ltCdmGQ9VNSapZNbSGRBmFjxj+H2qhmq3O5cs
0dbBMk8QeM5U/pRcQpcRGOQZB/MVzFndSWsu6M8Hqp6GultLmO6j3xn6g9RUtWOOpTdN3Rgajp72
xyMtF2b0+tZ5GK7RlDKVYAg8EGsHVNN8kGWHmLuvdaaZvSr30kZFec/EP4WaV4oSW8sFTT9Y2sVk
jULFM5O7MoAySTn5hz82TuwBXo5GKSt6FepQnz03Zm1SlCrHlmro+INW0680jUbiw1K3e3u4G2SR
v1B/kQRggjgggjiqlfYXjrwTpXjDTpIb2JIr4KBDeogMsRGSBnqy5JypOOT0OCPlrxd4U1fwnfLb
azbeX5m4wyo26OUA4ypH4HBwQCMgZr7PL8zp4tcr0l2/yPnMXgp4d3Wse/8AmYVFFFemcQUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVYsbO61C6S2sLaa5uXzsihQu7YGTgDk8An8K
TaSuwSvoivW74R8Kav4svmttGtvM8vaZpXbbHECcZYn8TgZJAOAcV6/4D+CcEcYuvGLedKcFLKCU
hFBXkSMMEsCeinA29WBwPZrGztdPtUtrC2htrZM7IoUCIuTk4A4HJJ/GvBxmeU6d4UFzPv0/4J6u
HyyU/eq6Lt1POvC3wa8OaQiSaoH1e7Vg++bKRAgkjEYOCCMAhiwOOwJFek28MVvBHBbxpFDGoRI0
UKqKBgAAcAAdqkor5mtiatd81WTZ7VOjCkrQVgAycDk1bgtCfmmO1fTNV0lZPuYU+uOaazs5+Zif
qawLd2aKy28AwhH4cmo3vx/AhPuTVGiixPs11LDXkxPBUfQUx7iV+rn8OKiqGW5hi/1kqL7E807F
cqROxLfeJP1NJWfJq9qn3Sz/AEX/ABqnLrh/5ZQj6saaiw5kjcormZdXu2+6yp9F/wAapy3dxITv
nkPtuOPyqlTZLqI695ET77qv1OKrSalaR9Z1J9ua5EnPWmmq9mT7Q6eTXLRfu+Y/0X/Gq0niED/V
2xP+8+P6VgGmmmoIl1GbEniC5P3Iol+uT/WoG1y+J4kQe2wVmmm1XKuwuZ9zRfWr5hjzgPooFV31
K8frcyY+tVaSnyoTkyR7mdz800h/4EagYlvvEn60pqjrGow6XZPcTnpwqDq59BWkIOclGK1ZEpKK
cpPQxPGmsvYQpaW3E8yks391en5mvV/g+gXwx4eHUGEt+J3H+Zr5v1C8mv7uS4uGy7np2A7AV9Jf
CBs+GfD2D/y74P4Bq9bNcKsLgoQ6319bM83B13Xrzl05Xb8D0s0006mmvmTpGmmmnGmmgop6mcWM
v0xXA6wc3YHog/ma7vWTiwf3IH61wWqnN6/sAP0r6DhqN8Zfsn+i/UwzB2wvqymaSlNJX3x88FFF
FABRRRQAUUUUAFIaWkNABRRRQAUUUUABpKU0lABRRRQAA46cU4SyDpI4+jGm0UnFPdAm1sSi6nXp
K/51INQuR/y1J+oqqaSsJYShP4oJ/JGqxFWO0n95d/tO6/vj/vkUn9pXWf8AWD6bRVOisXluDf8A
y6j9yLWMxC+2/vLw1a7HB8lh7oc/zp661P0a2iPuJSP021mmisJ5JgZb0/xf+ZrHMsTH7f5Gwutp
/FbTD1OVI/nUyaxatjPmr9UPFYNBrlnw3g5bXXz/AM0bRzjELez+R0iajZuRtuE/Hip45opDiOVH
PorA1ydIQCOQK5J8LQ+xUa9Vf9UdEc7l9qH4nY0VySTSx/6uWRfYMQKnj1K6T/lruH+0M1xz4YxC
+Caf3r/M3jnVJ/FFo6aisFNZmH340b6ZFTprSf8ALSJh9DmuKpkONh9i/o0dMc0w0vtW+Rr1Yhvb
iFdscrBfTtWOmr2rfeZl+q1YjvbaT7k8efQnB/WuGpgMTS+Om18mdMcTQqaKSfzNf+17z/nov/fA
qaPW7hfvxxv+YNZIYHoQaWuRq25p7KD6Fy7u0uJvMEZQkfMM559ah8wHvUNFFilFJWRPuB6GjNQU
ZPqaAsT5oqIOaXf7UBY1tFuWScQsfkfpnsa3a41ZMEEEgjkGun068W6t1JYCQcMM/rUtHJXp2fMi
3VTUbNbqLjiVR8p/pVuikc6bi7o49gVYqwwRwQaTNbGvWuMXCL7Pj9DWLVnoQlzq47NJmkzRmgs2
9I1DO23nPPRGP8q2K4zNb+kah5yiGY/vR0J/i/8Ar0mjkrUre9E03VXUq4BU8EGsDVNO+z/vYQTF
3H93/wCtXQUEAgggEHqDSRjCo4PQ4zNSW9xJbyiSJsH9DVnVLFrRy65MLHg+nsaoZqj0E1NXOrsL
2O7jyvyyD7y+lWiARg8iuMileKQPGxVh0IrpdN1BLtdrYWYDlfX3FS0cdWi46rYrahpKspe1G1up
TsfpWCylWIYEEcEHtXa1n6rp63Sb4wFmHf8AvexpplUq9tJHM1heLvCmkeLLFbbWbbzPL3GGVG2y
REjGVI/A4OQSBkHFb8iNG5SRSrDqDTa0hOVOSlB2aOuUYzVpK6PlP4kfDXUvCM893bo93oQYbLrg
tHuJwsgHIIPG7G05HQnaOBr7muIYriCSC4jSWGRSjxuoZXUjBBB4II7V84/Fb4Vz6FJJqXhu2mn0
ZY2lnUyB3tzuOcDAJQKRz8xG1ixxzX1WWZuq1qVfSXR9/wDg/meFjcv9n79Lbt2PJ6KKK988oKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiu78I/C7xH4gvmins5tKto9pknvoXj4JxhFIy7YyccDjk
jIz9B+D/AIf+HvCm2TTrPzbwf8vlyRJL/F0OAF4Yj5QMjGc15eMzahhtF70uy/Vndh8BVravRHkn
gj4J3mowQ3via5ewt5FDi0iH7/BB+8WGEP3TjDHBIO017xoukafolilnpNnDaWy4+SJcbjgDcx6s
2AMk5Jxyav0V8pi8fWxb/ePTt0PdoYWnQXuLXuFFFNZlUEswAHcmuM6B1FUpdRhThMufbpVKbU5n
BEYCD25NNRYnJGySFGSQB6mq01/bxdX3H0XmsKSR5Dl3Zj7mojVKBLmasusdoovxY/0qnNqNzJxv
2j0UYqqaaapRSJ5mOaaQ5zI5/wCBGoqdTTVEjTSGlNJTENNIaU0hpiGmmmnGm0AJTaWkoENpKU0h
pgIaaacahuZo7aB5p3VIkG5mY8AU0m3ZCbtqyvql/Bp1o9xcNhV6Dux9BXluralcapdtNcMcE/LG
D8qD0H+NW/E2strF6rKCttFkRqevPUn3OBWXbwS3M6Q28bSSuQqqoySTX1+WZesPDnmvff4eR87j
sW60uWPwr8S5oek3Gs6glpajBPLuRkIvqa+l/AVnFpllpdnblvKgXywWOSevJ+tcD4O0FdB0wxuQ
11Md8rD1xwoPoP6mvQ/DLYa0/wCugH61lxHTthIv+8vyZtlP8WS/uv8AQ7mmmnU018OekNNNNONN
NBRm64cWaj1cfyNcFqBzey/Wu610/uIx/t/0rg705u5T/tGvp+F4/wC0Tfl+qOXM3/s8V5kBpKU0
lfbnghRRRQAUUUUAFFFFABSGlpDQAUUUUAFFFFAAaSlNJQAUUUUAFFFFAhDSUppKACiiigBDRQaK
ACg0UGgBKKKKbAQ0lKaSgQUGig0gEoNFFMARmQ5Rip9jini5nU5E0n/fRqOkNTKnGXxK5SnKOzLi
apdp/wAtd3+8M1Zj1yUffhRvocVkmkriq5Vg6vxU18tPysdEMdiIfDN/n+Z0MeuQN/rI5EP5irce
o2sn3ZlB9DxXJUV51XhvCT+BuPzv+Z1085rx+JJnbK6uPlYH6GnVw6syHKsVPscVai1K7j+7OxHo
3zfzrzK3C9Rfwqifqrf5nZTzuD+ODXpr/kddRXOQ67Mv+tjRx7cVdi122b/WLIn4ZrzK2R42l9i/
pr/wTtp5nhp/at6m0s8y42yyDH+0atRardx/8tNw/wBoZrHh1C1mOI50J9CcH9as5HrXmVKM6btO
LT81Y64unUV42ZtR63kFbiAMD12n+hrMuWiMzGDd5Z5AYcj2qGis7DjTjF3QuaM0lFMsXNAYgggk
EdxSUUgOm0i+FzEI3OJkGD/te9aFcXHI0UivGSrKcgiuo029S8i7CVfvL/WpaOKtS5feWxbZQykM
AQexrndW0025MsIJhPUf3f8A61dHSOiyIyOAVYYIPehMyp1HB3RxVKjsjBkYqw6EGr2qae1o+5Mt
Ceh9PY1Qqj0YyUldHRaVqYuMRTkLL2PZv/r1qVxNb2j6kZSILhvnx8rk/e9vrSaOStQt70TQvLSK
6jKyLz2YdRXM3tpJaS7JMEHlWHcV11RXVvHcxGOVcjse4+lJMilVcHZ7HHUVb1Cwks35BaM9HH9a
qVR3KSkro8k+KPwli16e51jw8yW+pspeW1IAS5fPUHOEYjOT0JxnHLH50uIZbeeSC4jeKaNijxup
VkYHBBB5BB7V9zVwPxI+Gum+LoJ7u3RLTXSo2XXIWTaDhZAOCCON2NwwOoG0/QZbnDpWpV3ePR9v
+AeXjMvVT36W/bufKdFaet6FquhT+TrGn3Nm5ZkUyxkK5U4O1ujDkcgkcj1rMr6uMlJXi7o8Jpxd
mFFFFMQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUVJbwy3E8cFvG8s0jBEjRSzOxOAAByST2r1T4ffB3UNa2XniTztM087x5
GNly5HAO1hhFznk8nHTBDVhiMTSw8eao7GtKjOs+WCucZ4M8Fa14uuvL0q32wDdvu5gywIQAdpYA
/NyvAyec4xkj6D8B/CvRfC0gupz/AGpqQxtmnjUJEQ2Q0ac7W+7ySTxwRkiuv8P6Fpvh3TlsNGtE
tbUMX2KSSzHqSxJJPQZJ6ADoBWnXyOOzeriW4wdo/i/U9/C4CFFKUtZBRTXdE++yr9TVSa+UZEQy
fU9K8m1zvvYuEgDJIA96qzX0ScLlz7dKzpZXlJLsT7VEapRJcixNezSdG2j0FVG5JJ5PrTjTTVpE
XGmmGnmmGgBKQ0tIaYhppppxppoASmmnU00xDTSUppKYhtNNOppoENNIaU0hpgNpDS0hoENNIaU1
HPLHBE0szrHGoyzOcAD600r6IG7akd5cRWls89w4SJBlia8u8Ra1LrNyGKmO3Q/u4yenuferni3x
A2qTG3tmIsUPp/rG9T7elc/HG8sixxI8kjHCoilmY+gA5NfWZVl3sI+1qL3n+H/BPn8fjPav2cH7
v5j7W3mu7mOC2jMk0hwqjua9i8H+HItCswz7XvpB+9kHb/ZHt/OqPgHw02kWzXd8i/bpgMKRzEvp
9T3rr6+hhC2rPOCt7w+2FjP92UH9RWDWvojfu39mFePxDG+Cb7Nf5HpZU7YhLumejGmmlB3KD6jN
Ia/PT1BppppxppoKMjXj8kI9zXB3PNxJ/vGu618/6gfX+lcJN/rpP9419Xwsv3lR+S/U480f7qC8
2RmkpTSV9meGFFFFABRRRQAUUUUAFIaWkNABRRRQAUUUUABpKU0lABRRRQAUUUUCENJSmkoAKKKK
AENFBooAKDRQaAEooopsBDSUppKBBQaKDSASiiimAlIaWkNACGkpTSUCEooooASkpaSgBKDRQaBC
UikqcqSp9RxS02gC5Bqd5D92ZmHo/NXofEMq8TQq/upxWJSVw18rwlf46a/L8jqp47EUvhm/z/M6
u31y0l4ctE3o44/MVoRTxTDMUiOPY1wZoBKnKkg+oryK/DFCWtKTj+P+X5nfSzurHSpFP8D0GiuJ
t9UvYMBJ2Kj+FvmFaNv4jccXEAPuhx+hrx6/DmLp6wtJeT/zPRpZzh5/FeP9eR0tOikaKRXjOGU5
BrLt9aspgMyiNj2fj9auRXMExIhmikI7K4NePVwtai7VINeqPQhXpVF7skzoINcYYE8IPuh/pV+D
U7WYgCTax7OMVy1Fc1hSw8Htodr8rr2ZT+INc7q+nfZiZYv9STyP7v8A9aqEU80JzFI6fQ1ej1eU
qUukSaMjB4waLWIjSnTd46mbRT5vL8wmHdsPQN1HtTKo6TX0rVDFiG5OY+iv/d+vtW+CCAQcg964
mtTSNR8g+TOT5R6N/d/+tUtHNWo396J0RAIIIyD1Fc9q2mmFjNbrmLqVH8P/ANaugRldQyMGU9CD
kGlpJ2OaE3Td0cTRW5qmk5zLajnqyDv9KxGVkYqwKsOoIwRVXO+E1NXRkeKPD+n+JtHm03VofMgk
5Vhw8bjo6Hswz/MHIJFfKHjzwfqHg3WDZ348yCTLW10q4SZB3HowyMr29wQT9i1Q1rSNP1uxez1a
zhu7Zs/JKudpwRuU9VbBOCMEZ4Nenl2ZTwcrPWL6fqjmxeDjiFdaSPiSivQviL8MdT8LXTzWCTaj
pT+ZIksUTM8EagE+dhdq9TznB2k4HSvPa+0o16deCnTd0fOVKUqUuWaswooorUzCiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArofBfhDVfGG
ovaaRGgEa75Z5iViiHONxAPJIwAAT17AkdD8NfhlqHi/y765b7Hook2tKf8AWTAZ3CIYweRjceAT
xuIIr6Z0XSNP0SxSz0mzhtLZcfJEuNxwBuY9WbAGSck45NeLmObxw16dLWX4I9HB4CVb356R/M57
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
oU3thKB3ktAT+YIrZs/2jPFUIxcabpVz7kOn8jRysftEfWFFfOGl/tMnIGr+FWVR1ezvQ5P0R0X/
ANCrtdF+P/gjUSi3U99pkrfw3dscD6um5R+JpWY+ZHrVc9478J6b4y8Pz6ZqtvHICC0EjD5oZMEB
1PUHnt1BI71f0bXtJ1u3SfSNStLyJxuVoZQ2R+FaVIo/PPXdIvtA1m80rVoWhvrSQxyKRgHHRl9V
I5B9DVGvrH9pnwVBq3hKbxJaQINT0tRJNIo+aS3GdwJ7hQS34Gvk6tE7nPJWYUUUUxBRRRQBpeGr
M3+vWUAGVMoZ/wDdXk/yx+Ne1muI+Guk+VaSalMmHm+SLI5CDqfxP8q7euimrIQlIaWkNaAIaSlN
JQISiiigBKSlpKAEoNFBoEJTadTaBGV4k1L+y9ImuBjzfuRj1Y9P8fwryNmZ2LOSzMcknqTXcfEu
cbbG3BOctIR+g/rXDVz1XeVi0FFFFZjOl8H682n3K2ty5NnIcAn/AJZse/09a9GrxSvRPA2rPfWT
2twxaa3xhieWQ9Py6flW1Kf2WTJdTpqDRQa3IGmsLxpH5nh25x1Uo35MK3TWZ4lAOg3+RnELH9KU
vhYLc8pPSvVNHk87S7R/WJf5V5ZXo3hCTzdBt8/w5T8jXy+ewvRjLsz2Mrlao4+RtUtIKcK+XPdF
FKKQU4UAKKUUlKKQxwpRSCnCgBaUUgpwpDFFKKQUooAcKUUgpRSAUU4UgpwoGTW08tu++Fyp7+h+
tb1jq8cuFuMRv69j/hXOilqZRTKUmjtQQRkcilrlbK/ntSArbk/uHpW/ZX0V0vyna/dT1rJxaNVJ
MnuIYriCSC4jSWGRSjxuoZXUjBBB4II7V8//ABk+F/8AZvn694ag/wBA5e6s4x/qPV0H9z1H8PUf
L936EoroweMqYSfPDbqu5liMPCvHll958K0V7j8X/hYyPeeIPDi20VpFB5tzZKoiEYQAFowABjaC
xBwcg4yTgeHV9xhcXTxVPnpv/gHzNehOhLlkFFFFdJiFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QBf0HUP7J13TtR8rzvsdzHceXu279jBsZwcZx1xX23XwrX1f8Fdd/t3wBY7o9kth/oD4GFPlqu0j
k/wFM9Oc8YxXzvEFBuEKq6aP5nr5TUtKVN9dTuiMgiqpq3UEq4b618se4RGmmnGkNMQw0008000x
DDTaeaaaYhhpDTjTTQA00008000CGmmmnGkpgMNIacaQ0xDDTTTzTTQAw0hpxptMQ2mmnmmmgBpp
pp5pppiGmvL/AImy79dhj/55wj9STXqJrx3xzKZfFN7n/lmVT8gP8a9rIoc2Jb7JnmZrK1G3dmLB
t8+PzDhNw3H0Gea9F1H4iwR5TTLJnA4DSttGPoOa83or7BSa2PnToNS8Ya1fBla78iIjBSBdg/Pr
+tdB4D8MG6dNW1ZWdesEcnO4/wB857eg/GsTwLoL6xqqTSDFnbOryEj75ByF/Hv7fWvYgAoAUAAc
ADtWkI82rAWiiithhRRRQAUUUUAFFFFAFrTG23ie+RXoGhPusNv91iP6/wBa84gbZPG3owrvvDr8
TJ9Gr4niilatCp3Vvuf/AAT3ctlzUJR7O/3mwaaacaaa+XOsq6gN1lMP9k1wOsjFwh9Vx+v/ANev
QpxuhceqmuC1peIT9RXtcPy5cdDzv+RljFfCy8rGUaSlNJX6IfOBRRRQAUUUUAFFFFABSGlpDQAU
UUUARXVxHa20txOwWKJS7E+grwO6uJbu5luLhi80rF3Y9ya9F+KWqGK3t9NiYhpv3suD/AOAD9Tn
8q82rCo7uwgooorMAooooAKKKKACiiigAooooAKKKKAH200trN51rLJBN/z0ico35jmvQvCfxm8a
eHZYw2pf2tZKRuttQG847hZB84PuSwHpXnVFIE7bH2F4S+NfhDxXB9h1WUaTc3CmJoL8gRvu42h/
unPocf0r5W8ZaEfDPivVdG5MdpOyRNnO6I8oc9/lIGfUGsUgEEEZBpzMzBQzMwVQq5OcAdAPb2oS
sU5X3EooopkhWv4X0d9a1RYBkQJh5nH8K+n1Pb8fSotD0a71m6ENquEB+eVvuoP8favXNF0m20ey
W3tV/wB+Qj5nPqauEOZiLkMSQQpFEoSNFCqo6ACn0UV0AJSGlpDTAQ0lKaSgQlFFFACUlLSUAJQa
KDQISm06m0CPLvHlx53iGVAeIUVMe+M/1Fc9V3XJjPrN9ITnM7gH2BIH6CqVckndtloKKKKQwrS8
OX/9navBOTiMnZJ/ums2ihO2oHtVBrN8Nzi50Gxk3FmESoxJySyjBz+IrSNdqd9TIaazvEKltDv1
HUwsP0rRNQXqCS0mQ9ChH6UPYR49Xd+A5N+lTJ/clI/MA/1rgwMcHqK7D4eyZa+i9NjD8cj+gr5/
N482Fk+1vzPTy+Vq687nZUooFKK+OPoxRThSClpDCnCkFOFACilFIKcKAFFLSU4UhhTqSlFAC06k
FKKQxRThSCnCgBaWgUopAKKepKkFSQR0Ipgp1Azc07UwwEdy2G7Oeh+ta1cfV2yvpLZgCS8fdSf5
VnKHY0jPudHXiPxW+EkD2smreELXy549zz2EeSJQSSWiHZhn7g4IxtAIw3tUMqzRq8ZypqStcLiq
mFnz038u/qTXoQrx5Zo+FaK+nfi58NYvFMD6npCJFrsa8jhVulA4Vj0DAcBvwPGCvzNcQy288kFx
G8U0bFHjdSrIwOCCDyCD2r7XBY6njIc0dH1XY+bxOGnh5Wlt3I6KKK7TmCiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAr1j9nfxBBpfie8028mhhi1KNRG0mQWmRvkQHoMh369SFA5OD5PRWGJoLEUpUpdTWj
VdGamuh91UyRdy+9ct8L/E3/AAlfg6zvpWzeR/6Pdcf8tVAyegHzAq2BwN2O1dZX59VpypTcJbo+
shNVIqUdmVDTTU8y4O4VCakY000040hpiGGmGpDTDQA00008000xDDSGnGkNAhhpDTjTTTAaaaae
aaaYDTTTTzTTQIjNIaeaaaAGmmmnUhpiGUhpxpDQIYa8/wBW8G3up+IL26M0MNtLIGUnLMRgDp26
V6CazfEOoDS9Hurs9UXCD1Y8AfnXZgsRVo1LUd5aHNiaNOrD97stTyTxFY22m6k9nazPOYgBI7AD
5+4H0qjaW0t5dRW9uu6WVgqj3qNmLszOcsxyT6mvRfhZpO1J9VmUZb91D7D+I/j0/A195Rg0lGTu
+58rJqUm0rI7HQNKh0bSobODnYMux6ux5J/z2rRoortSsIKKKKACiiigAooooAKKKKACu18Ny5nQ
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
7ZHI+h7VwWveBZYQ02kOZkHJhf7w+h7/AEq1UT3JcWcRUU674ZFwTuUjj6VPIjRuySKyupwVYYIp
g61ZJ5V4E0jSda1ZI/EWvWuiaZGoeWaU/PJn+GMYIz6k9OODnj6o+Hus/Cnw7CuneFdX0eOV/vyv
NmWU+ryNyfzwO2K+P762Nnez2zDBicp+APH6VAQCMEZFcTRpGVj9GYpEljWSJ1eNhlWU5BHqDTmA
YEMAQeoNfAfg7xhr3gyZn8N6jJZxO2+S3wGhkPqyHjPTkYPA5r3fwb+0daSbIPGGmyWzdDd2QMif
Vk+8Pw3VLiaqaZo/GD4H22si71rwhGttq7HzJbIMFhuT3K9kc/gCevJJr5i1Kwu9L1Cex1K2ltb2
3bZLDKMMjeh7fiOD2r9BNF1aw1vTYNQ0m7hu7OZd0csTZBH+e1eU/tDfDYeKdH/tzRoR/btgh3Kv
BuoRyUPqw6rn3HGaE+4pQ6o+SUYo6upwykEfWvYNPulvbGC4Q5EiA/j3rx38/wAa7r4fX++Cawc/
NGfMj9weo/P+ddFKVnYwkjrzSGlNIa6TM8t8VJs8Q3w/2w35qD/WpvBn/IxW3+6//oJpfGq7fEU5
/vIjf+Ogf0png9tniK199w/NTXk49fuai8n+R2YX+LD1R6YKWgUtfBH1YClFApwoABSigUooAUUo
oFKKQwFOFIKUUAKKUUClFIYopRQKcKAAU4UlLSAUU4UgpwoGLS0gpwpDAU4UgpRSGKKdSCloAsWl
w1vIGXkHqPWt+KRJUDxnINc0KuafcGCXB+43BH9aiSuXF2Nyvlv4v/D9vCWo/bdNRzoVwyrGzuCY
pG3Hyuu5gApIYjoQCSRk/Ulc98QNAl8T+D9R0i3mSCa4VSjuCV3K6uAccgErjPOM5weldmW4yWFr
J3916P07/IwxmHVem11Wx8bUVJcQy288kFxG8U0bFHjdSrIwOCCDyCD2qOvvNz5YKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigD6E+DfxQ/tLyNB8Sz/AOn8Ja3kh/1/ojn+/wCh/i6H5vvezV8K19Cf
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
kTDqrqVI/Oo6sQUUUUAFIaWkNABRRRQAUUUUABpKU0lABRRRQAUVbstMvr5sWlnPN7qhx+fSt+x8
C6vcYM4htlPXe24j8B/jScktws2coaACSAAST0A716bp/wAP7GLDX88tw391fkX/ABrpdP0jT9OG
LKzhiP8AeC5Y/UnmodVdClFnleleE9W1EB1g8iI/xzHb+nWut0zwBZQrnUJ5Ll/7qfu1H9f1rtTS
Vm6jY+VFLTdMs9MiEdlAkQxgkDLH6nqauUppKgYhooNFAxKSlpKBCUGig0xCUhpaQ0AJQaKDQAlJ
S0lCAQ0lKaSgANJSmkpgJSGlpDQISkpaSgBDRQaKYCGs3xDpiavpU9qwG8jdGfRh0rSNJRsB4DIr
I7I4KspIIPUEdqwPFujLqtgXjX/S4QTGfUd1r0b4iactlrnnR8JdL5hHo3Q1yxrp0kjB6M8RPBwe
DRW/4005rLWZZVQLBcHzEwOAf4h+eT+NYFcjVnY0CiirNhYXWoS+XZwvI3cgcL9T2pATaHYNqWqQ
W4B2Fg0h9FHX/D8a9XwAAAMADAFZfh/RYtItiAd9w/8ArJMfoPatU11U4cq1M5O55t43k3+IZV/5
5xon6Z/9mqLwdH5niSyH91i35Amq/iOXztdvnByPMIH4cf0q94FBPia2x2Vyf++TXm46VqNR+T/I
6sKr1YLzR6hiloxSivgT6wKUCilpAGKUCjFOAoGIBTgKAKdQAUuKBS0hhSgUAU4UAAFLigUopDAU
4UgpwoABSigU4CkMBSiilFAAKcBQKcBSGAFOFIKcKAAU4UgpwpDJbaLzZVXt3+lbNVLCHZHvYfM3
8qt1EmWkZPivW4PDnhy/1a6G6O1jLBMkb3PCrkA4yxAzjjOa+L7iaW4nknuJHlmkYu8jsWZ2JySS
eSSe9e6/tI+I5YksPDluXRJVF5cMMgOuSqLweRlWJBHUIQeK8Gr6/I8N7Kg6r3l+S/pngZnW56vI
tl+YUUUV7Z5gUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVb0nUbzS
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
BwBS1HcTRW8Ek9xIkUMal3kdgqooGSSTwAB3r5/+KnxbfUNum+D7qaG0GGmvo90Ukh67UzhlUdzw
SeOn3ujCYKri58sFp1fRGWIxMMPHml9xB8afiR/bElz4f0OaGXSPkE84TJmkViSEbOCmQnIAJKnB
KnnyCiivucNhoYamqdPb8/M+YrVpVp88goooroMgooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAq3pupX2lztPpl7c2czLsMlvK
0bFcg4ypBxkDj2qpRSaTVmNNrVHr/hf446vaSQxeIbWHULYcPNEvlT8tndgfIcDICgLnjnrnrfFH
xH8NeKPB11aWVzcR30wBW1lgYONrjqwBTnGfvd/XivnOtLw/Js1ELjO9Sv07/wBK895VhnVjViuV
p30Op46t7NwbumranUVf0bR7/Wrr7Ppdq9xJ/ERwq+7E8CsC91W3t0/dssznoqnj866vwp8Zb3Q7
aO0l0PTpLSOMKFti0Ds4x87MSwOec8Dk9uldmKqVoQ/cR5petjjw9KE5fvXZFbxHo82g6tLp11JH
JPEqM5jztyyhsDPXGcZrsv2fJRF8W9EJYru81OO+YzxXK+MfENp4p12TVtOinit5Y0QLOqq2VGCc
AkfrW58E5jD8WPDGDjfdFOnqjVdBzlRi6nxWV/UiqoxqtQ2vofcdFFFUaCGig0UAFIaWkNAhKKKK
YCGig0UAFJS0lAHMePrbzNLiuAOYZAD/ALrcfzxWHp8nm2cZ7gbT+FdzqlqLzTri3P8Ay0QqPr2r
zrRnKPLA/DA5x7jg18fxBQ5K6qLaS/Ff8Cx7eAnz0HDrF/gzSNMPTmnmmGvAOpEfhGf7H4h8hj8s
waP8RyP5frXoJrzC6ZrXUILlOCrBvxBr0uGVZoUljOUdQwP1r6/h6tzUpUn0d/k/+CedmkPejUXV
fkPpDS0hr6E8sSkNLSGgQUhpaQ0AFFFFMBDSUppKAEpDS0hoAKbTqbQAGkpTSUABpKU0lMQhpKU0
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
31R5WaQ1LcQyW87wzIUlQ7WUjBBqI1sZDapazF52k3kf96Jh+lXajmG6F19VI/Sh7AeOjpXofwql
zb6jDno6yY+ox/7LXnzLsZkP8JxXa/CuTbql/F/fhVv++W/+yr5/No82En8vzR6WXytiI/10PScU
oFLilxXxB9SJilxRilAoAMUoFGKdikMQClopQKADFKBSgU5EZjhQSfQCkMaBTgKtR2M7DOzH1NWY
tNHWV/wWldDszNAqzDaTSchMD1bitWK2ii+4gz6nk1NUuXYpRKMOnovMp3n06CriqqDCgAegp1ZP
iLxHpHhy1Fxrd/DaRt9wOcu/IB2oMs2NwzgHGcmiMZTfLFXY21BXeiNao7iaK3gknuJEihjUu8js
FVFAySSeAAO9eO+MPjjZWu6Dwta/bpf+fq5VkiH3TwnDN/EOduCAeRXjnizxjrniqcvrF67whtyW
yfJDHycYUcEgMRuOWxwSa9bC5JXrWdT3V57/AHf5nBXzKlT0h7z/AA+89x8afGjSNK8228Px/wBq
3gyvm5226H5hnPV8EA/LwQeGrwPxF4j1fxHdC41u/mu5F+4HOETgA7UGFXO0ZwBnGTWTRX0uEy+j
hF7i17vc8Wvi6lf4np2Ciiiu45gooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDX8OTb
Lp4jjEi8cdx/9bNdHXF2kvkXUUuWAVgTt64712lXExqLW56v4b+OvibQNC0zSba006a2sYFt1aZX
LuqjC5IPXGO3aus0n9pa6EgGseG4jGOr2lzlj/wFlAH518+UU7InmZ9j+Gvjn4K1l1iur86RORkj
UB5Uf08z7v5kV6dDLHNGskLpJGwyGQggj6ivzqre8JeMNf8ACMyv4e1Oe1iBybfO6Fvqh4HPcYPv
S5S1U7n31SGvnXwf+0ejSxW/i/SPJj6NfWLFwPdoSMgf7pY+1e9aHrWm6/p8d9o17BeWrjIkiYMP
ofQ+1S0WmmX6KKKBiGig0UAFJS0lABVLWoRcaVdxsN2YmIA9QMirtIamcVOLi+pUZcslJdDzLR5d
0DRk8qcj6GrxqnfW39ka9LB/yyY5X/dPT8un4VcNfm1SnKlNwluj6aTUrTjs9RhqrHP/AGfrFtd5
wgYbvp0P6VaNUtSTfBkfwnNKnN05Kcd0OKT917M9LByMjoaDWP4UvftmjQ7jmSEeU3PXHQ/lWwa/
SKFVVqcakdmrnzNWm6c3B9BKQ0tIa1MwpDS0hoAKKKKYCGkpTSUAJSGlpDQAU2nU2gANRzyxwQvL
PIkUSAszuwVVA7knpXK/E3xzZeA9AXULuB7q4mk8m2tUbaZXwTy2DtUAcnBx6EkA/K/xA+ImueN5
2Goy/Z9OBylhAx8tf94/xn3P5CmS5WPdvGfx28PaOWh0JTrc4B/eRNtgU/75+8PdciqPhLUfiX8Q
XW8luovC3h9j8rwW6tcTD0TzAeP9vaOnAPWs74M/CC08m08R+I5oL7zEElrZx4aJO4d2/ibpgcAc
5ycY98AAAAAAHAA7UCV3qytp1mthZx26zXM4XP7y4laV2Pux/wD1VYpTSUFAaSlNJTAQ0UGigBKS
lpKBCUGig0xCUhpaQ0AJQaKDQBzvjjwnp3jHQ5NO1OMZ+9BOAN8D44ZT/nI4r4+8WeHdQ8K69PpO
rIouIsMrocrLGc7XX2ODwehB+tfcVcf8RvAeneONK8i6b7LfR8296ibmiPoRkblPdcj2IODRYTVz
42orpPHfg3VPBeqiz1RRJDJ/qLuNSI5h7eh/2Sfzrm6RAUUUUAFFFFAFyPVtUitVtYtW1OO0T7tu
l5KsS/RA20flVaSeaX/WzSyf77lv50yigBoRASQqgn2paWigAooooAayq33lB+oq/pup6pYTxtpW
oahbTZG0Ws7oWPphTz9Kk8PaLf8AiHVodN0m3ae6l7AfKi92Y9lHr+HWvpL4afCuy8Iym+v501LV
T9yXytiQDHRQScn/AGv0HcSuFjoPhwPEP/CKWj+LphJqUg3YaIJIi9hJjgt9APTGa6elNJVlCUUU
UwMPxJ4bs9biLSARXYGFnUc/Q+oryzW9DvtGm2XkJ8sn5ZV5Rvx/oa9vqK5t4rqB4biNZInGGVhk
GrjNomUUzwCkr0zU/h5bTSs+n3j2yn/lm6eYM+xyCP1rltT8GaxY5YQLcxj+KE5/TrWqmmZuLR8/
Xq7b24HpI38zXUfC8n/hJZhk4No/H/A0rndZjaLV7yN1KssrAg9jmui+Fv8AyM8v/Xm//ocdeNmX
+7VPQ7cF/Hh6nqlLipUglf7sbn8KsR6dcP8Awbf9418FdH1tmU8UoFaaaS5+/Kq/QZqVNJQH55WP
0GKXMh8rMinBSegJ+lbsen26fwbv945qyiIgwihfoKlzK5DBjs55OkTAep4q1Hpbf8tJAPYDNa1F
TzMrlRUj0+BOqlj7mrKqqjCqFHoBinVxmtfE7wjpO9ZdYhuZRGZFjswZ9/XChlyoY46EjtnAOaun
SqVnaCb9CZzhTV5Ox2dFeI33x8tUunWw0Caa2GNkk10InPHOVCsBznuf6VxniP4yeJ9V8yOykh0u
2beu22TMhRugLtkhgP4l28kn0x6NLJcVN6qy83/lc5J5lQitHc+i/EXiPSPDlqLjW7+G0jb7gc5d
+QDtQZZsbhnAOM5Nee+JfjfoOn+WuiW82ryHBZubeNRzkZZdxbgcbcYPXjFfOt9eXWoXT3N/czXN
y+N8szl3bAwMk8ngAfhVevZoZDRgk6rcn9y/z/E86rmtSWkFZfidv4g+KPizWnbdqb2MO4OsVj+5
CkDH3h85B5OCxGfoMcZcTS3E8k9xI8s0jF3kdizOxOSSTyST3qOivYpUadJWpxS9Dzp1J1HebuFF
FFakBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFTPczyKVkmlZT1DOS
KhooAKmS5njULHNKqjoFcgVDRQBr2mtzI2LkCVSeoGCP6VtWt9b3IHlSLuP8B4b8q46impEOCZ3V
dT8M/F9z4K8X2OqRSyiy37L2BWO2WJuGyO5HDA9cr7mvOtC1CSST7POxYkEox5P0rcq9zJpxZ+iN
pcw3lrDc20iyQTIHR1OQykZBqWvBv2WfGJvtFuvC19ITcaf+9sy38VueqD3Rs/8AAWX0Ne81Bsnd
XENFBooGFJS0lABSGlpDQByPj+zzDb3iDlG8tj7Hp+tZNrL51uj98YP1rutTtEv7Ca2k+7IuMjse
x/OvONOZ4J5baUYZSfzHBr47PsM6ddVVtL81/SPcwFT2lHk6x/Ivmo5FDKVPQjFSGmGvBOxE/gm6
NtqslpIcCYED/eH/ANbP5V3Rry+dmtb2G6i++rBh9RXpVncLdWkM8f3ZFDCvsOH8Tz0nRe8dvR/8
E8vNKVpKquv5ktIaWkNfQHlBSGlpDQAUUUUwENJSmkoASkNLSGgAqtfXcFhY3F5eSpDa28bSyyOc
KiKMkk+gANWa8m/aS1qTTvh+NPgBMur3C2mBySv3mUD3xj8aYm7anz34/wDFV/8AEDxc14sU0iM3
kWFoilmWPPAC/wB5up/+tXS+KPg1rmg+CrfW2YXF0imS+s4xuMCdipH3tv8AF+nTn1L4G/CxvDCp
r+undrE0RWO22graqcd+pk45I4AOPc+xkAggjIPUGghRvqz5U+BPxLi8JzyaPrcgGiXUnmpcMx/0
WQgA57CM4yemDk85OPqiN1kjV42V0YZVlOQR6ivmb48fC8aHJJ4i8O27f2XIS17Cpz9nYn76jHCH
v1wfQVnfCP4uXHhKK20bWo3utCD7VlBJktFP90fxIDzjqB06AUAnbRn1WaSo7a4hu7aK4tZUmglU
OkiHKsD0INSUFgaSlNJTAQ0UGigBKSlpKBCUGig0xCUhpaQ0AJQaKDQAlJS0lCAzfEGiad4h0qbT
tYtY7q0lHKOOQezKeoIPIIr5R+Jfw61TwXeyzeW9zojyHybtASEXPCyf3TjjPQ498V9fmo54o54X
injSSJxtZHGQw9CKLCaufBlFfSPjD4E6VqDz3Xhy8k0y5bBW2cB7bPfjG5c+xIHpXgviXw3q/hm7
NvrljLandtWQjMcn+63Q/Tr7UiGrGRRRRQAUUUUAFFFW9J0y/wBYvPsuk2c95cd0hXdj0yeg/HFA
FSt7wd4S1fxfqItdHtyUUjzrlwRFCPVj3Poo5PsOR6n4L+BbyqLnxfdPFyClnaOOR38x8fThcY9f
T3LSdMstIsI7LTLaK1tYxhY41wBTSGkYPgDwXp/gvSWtbEtLPKQ9xcP96RsY/AewrpzS0hqihDSU
ppKYCUUUUCCiiigDgfjPrmreG/C0Op6JciCWK5RZN0aurq2RtII6ZI6YPvXmVj8edchiAvNH066l
x9+OV4R+WG/nXpfx3hE3w01HIJ2SRScezivlapb1Ey1qt6+pand3sqqslxK0rKvQEnOBXZfBMZ8a
TZH/AC4S/wDoyKsLw94P1vXwkmn2bfZnOBcSHbH1weep79BXt3gjwbb+F7RxG5nu5sedOwAzjso7
L7V4Wb4+jToyo3vJ6W/zPSy3C1JVY1LWiv60Ojop/lHuRRsHrXxJ9TcZRSsMV80fE34meI5vEmra
Xp14+m2FtO1qEtyA7GNyC/mY3AkjoCBjjnkntwWCqYybjDS3c58TiYYePNLqfR19eWun2r3N/cw2
1smN8szhEXJwMk8DkgfjXP6l8QPCenQLNca/p7ozbALeXz2zgn7se4gcdcY/OvkW+vLrULp7m/uZ
rm5fG+WZy7tgYGSeTwAPwqvXu0+HoL+JN/L+meZPNpfZifRetfHXRbbeuk6be30iyFd0pWCNkGfm
U/M3PGAVHB5xjFcDrfxp8U30+dOe20yFWYqkUKyMyk8BmcEEgdwFzk8dMeZUV6NHKcLS1UL+uv8A
wDjqY+vU+1b00Na+8Sa7qFq9tf61qdzbPjfFNdSOjYORkE4PIB/Csmiiu+MYxVoqxyOTlq2FFFFU
IKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKt2en3F3zGmE/vtwP/AK/4VqWuhKCGuZN3qicDr607MlySMCp4rW4mCmOGRlY4DBTj866iHTrS
GQPHCoYdCSTj860LS1uLyXy7OCWeTONsaFsfXHSny9yfadjmLXRLgkPJIsJHIxywOf8APeuirsdK
+HPiC/w0sMNlH3Nw+D+CqD/Sung+E0K2cvn6pLJdlD5eyMJGGxxkHJIz7isniKUOpSo1Z62POvDG
u33hnX7LWNLbF1auHCk4Ei/xIfYjj269q+7vCmvWfifw7Yazpj7rW7iEig9UPdWHYg5BHtXwHd20
1ndS21yhjniYo6nsRXrP7PvxHfwvrkOg6nIP7D1Cbarn/l3nbAVv90ng+hOema2eupnF2dmfW5oo
PWipNQpKWkoAKQ0tIaAErgvFtr9i16O5AxFONxP+0OD/AENd7WN4us0utFmYgl4R5iY9f/1V5ubY
b6xhpJbrVfL/AIB2YGr7Ksr7PQ5c0w1BYTebbgE/MvFTmvgj3bWdivdp5kDDuORXReBLtpbGe2bJ
8hgVP+y2ePzBrCNP8P3f9m64qk4huMI39D+f869LKsR7DFRk3o9H8/8Ag2MsVT9rQlFb7o9ApDS0
hr74+aCkNLSGgAooopgIaSlNJQAlIaWkNABWJq/hyw1fWdK1HUY/PfTGaW2jb7iykYDkdyBnGeBn
PUAjbptAAaSlNJQAyWNJY2jlRXjYbWVhkEehFfKvxs+F7eFLmTWdDjLaDM/zxKCTZse3/XP09OnT
p9WmobmCK6t5YLmNJYZVKOjjIYHqCKZLV0fMXwL+KA8OSJ4f8QSqNEkYm3uW4Nq5OSrHvGeTk/dP
sfl+n1YMoZSGUjIIOQRXyd8bvhsPBt+moaNbyDw9cbU5YyfZ5TnKsT0U8Yz349BT/hR8XL3wkLXS
tZL3fh5PkXC7pbVT/d/vIP7vUDp0C0Ep20Z9XmkqGzuoL60hurOZJ7aZA8ciHKup6EGpqZYhooNF
ACUlLSUCEoNFBpiEpDS0hoASg0UGgBKSlpKEAhpKU0lAAagvLS3vbd7e8giuIHGGjlQMrD0INTmk
pgebav8ABfwbfyPJb2M+nyN/z6TsqD6IcqPoAK5e7/Z+sDk2mvXinsssSED8ua9wpDSsKyPn6T9n
253Hy/EEIX/atiT/AOhVatf2focj7Xr82P8ApjAB/PNe7UlOwrI8v0f4JeE7GRZL1LvUnXoJ5iqZ
9SqYz9CSPavQ9L0yw0m0S10uytrO3T7sUEYRR+Aq4aKYxDSUppKAEpDS0hoAQ0lKaSmAlFFFAgoo
ooA4n40An4aa1gE4jUn/AL6FfJlfWXxpbHw01nnGUUfX5hXybUS3Ez6J+DJJ+HGl5Of3lwP/ACPJ
XZtXGfBpSvw50sMMHfcH855K7Nq/OMw/3ur/AIpfmz7DC/wYei/IY1RmpGqGQ9q5DpRxvxS8WxeE
/C1zcJMi6nOpisoyRuLnguAQQQgO45GOAP4hXyJXd/GTxT/wk/jGf7NLv02xzbW21sq2D88gwSDu
bowxlQmelcJX3GU4P6tQTfxS1f6I+bx+I9tVstlsFFFFeocQUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFdHpekiBlmuMNKBkL2U/1
NNK4nJIy9P02a7KvjbBnlicZGecVvWum2tuQyx7nH8T8nr+VXa0tMu9Ps8SXGnG+mH8M0pWMfgBk
/jVWsZOTl5GfDHJPMkNvG80znCxxqWZj7Acmu00X4ba3flXvFjsIT/z1O5/++R/jWv4V+Illb3kc
N9pNnYQP8huLZcbB23DGcV6zFIk0SyQurxsMqynII9Qa4q+JqQ05bHVQw9Oet7nC6b8N9D01RNfe
bqEg6LKdqE/7o6/jmus0oW1vGsFvbw26rwqxIFXHoAKu3EQmj2ng9j6VVtrMh90o4B4HrXBOpKfx
M7oU4w+FF6ilxRisyjyD40aK0V7b6xBEPIlUQzsvZ8/KT9Rx9R715p/nivqW8tIL21kt7qJZYZBt
ZGGQRXzp4w0Gbw7rk1nKCYSS8En9+Pt+I6H/AOvXq4OtzR5HujzcVS5Zc62Z9X/s/wDjE+LPAkMd
9dLNrGnH7PdDo23J8tz67lHUcZDDtXplfBXgPxXfeDPEttq+nM7bDtngDYE8XdD29xnoa+4vDOuW
PiTQrPV9JmEtndJvRuhHYqR2YHII7EV1NGMZXRp0lLSUiwpDXlf7RfjC68K+CootJnaDVtQuFihk
U8xovzu304C/8DrtvAviGDxV4R0vWrY/LdQhnXOSjjh1PuGBB+lAr62N2kdQ6MrjKsMEHuKWg0DP
Mbi3bS9Zmtn+5uwpPdT901aNbnjnT/OsVvI1/eQHDkDkqf8AA1zlnL5sAJPzDg1+f5lhPqtdwW26
9P60PpaFX29JVOuzJDVLUVJVWH8J7VdNRyKGUg9DXCbRdnc7fQL7+0NKgmY5kxtk/wB4df8AH8av
muE8HXptNUa0kJEc/wAo9Aw6fn/hXdmvv8sxX1rDqT3Wj9f+DufPY2h7Gq0tnqgpDS0hr0DkCiii
mAhpKU0lACUhpaQ0AFNp1NoADSUppKAA0lKaSmIrajZW2o2M9nfwR3FrOhjlikXKup6givkb4vfD
e58Daj9ptBJP4fuGxDOeTAx6RyH+Td+h56/YJqC8tLe+tpLa9giuLeQYeOVQysPcGgTVz5d+DHxV
l8LzR6Nr8hk0B+IpMZa0b+qH9Pp0+o7eaK4gjnt5ElhkUOjochgehBr5F+Mnw/m8F6889nCf7Au3
zbOCT5RxzGxPvkj247cwfDD4lal4HuxHIZ77RW4kszJnyx1zECcKeTxwD+tMhO2jPsQ0VT0jUrXW
NLtdR0+XzbS6jWWN8YJVhkZHY88g9KuUFiUlLSUAJQaKDTEJSGlpDQAlBooNACUlLSUIBDSUppKA
A0lKaSmAlIaWkNAhKSlpKAENFBopgIaSlNJQAlIaWkNACGkpTSUwEooooEFFFFAHnXx9n8n4a3vT
Mk0KY+rivluvoP8AaYv/ACtB0ewVsNcXLSsueqIv/wAUy189tuKnYMt2A7moe5LPpf4Xw+T4A0Vc
Y3QeZ/30S39a6Zqp6FaLYaJYWiY2wQJGMegUCrjV+ZYiftKsp923+J9nRjyQjHskRucA15t8bfFn
/COeE3gtbma31XUP3ds8S8qoK+Y27+H5TgEc5YEdCR6De3EUEMks8qRQRKXkkdgqqoGSSTwAB3r4
9+Ifi+88YeIJbueRxYxsyWcBG0RR54yMkbiACxyefYAD0Mowf1mspS+GOr/Rf10McdiPY07LdnL0
UUV9ufNhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFORGkcLGrMx6BRk0ANorUt9FuZH/AH22JR3JDH8AK3LSxt7VR5aAsCTvYAt+dNIhzSOVt7aa
5fbBGznvjoPqa17XQgVDXMjAkconY/Wuht4JbmURW8TyyHoqKWP6V1+jfDvV74LJeGOwhPP7z5pD
/wABHT8SPpWkKTlsrmU6yW+h59b6XaQj/VB2xjMnzZ/DpV0EFgByT2r2jSvh3o1mFa6Et7IOplbC
/kKtatoK28fmabEFiUcxKOnuK6Pqskrsw+sRbseO2uj39zjZbOqn+J/lH61qweFJmwZ7hE9lGTXX
UUlTRfMzhNZ0ObT1MqN5tuOrYwV+orQ8G+Mr7w5Oke43GnE/Pbseg9UPY/of1rq65jXvDwYNcaeg
DdWiHf3H+FZ1aKkrW0KhUcXdHuGiarZ61YJeadMJYW4Pqp9COxrQxXzLoGr3fh/VkvrHaJkyrI44
de6n/PFfQPhPxLY+JbDz7Ntsy/62Bj80Z9/b3rxK+GdLVbHrUMQqmj3NK7uBAoA5c9KZY3Xm/JIR
v7H1qxc26zx7Tww6H0rGljaJyjjBFcx0G9iub8e+Gk8SaI8SBVvocyW7n+9/dPselbWm3Hmp5bn5
x0z3FXsVUZOLUkTKKknFnyfLG8M0kUyNHLGxR0bqrDqDXrHwC+JJ8I6yuj6vIRoN/IBvPItpjwH/
AN09D6cH1NS/GHwpNcka7YIZGjQJcxjrtHRx9O/59q8fIDAg4INe1SqKrG6PInB0pWZ+ioIZQVII
IyCO9FfPPwB+LKvHbeFvE9wRKoEdjeSHIcDpE5/vehPXoeevpfxl8ap4K8GXFzDIBqd1m3sl7+YR
976KMn8KqxSkmrnzV8ePFw8V+PrkWsm/TtNzaW5HRiD87D6tx/wHPevQv2UvFAR9S8L3Mn3ib21B
P0Eij/x0/ia+d40EcaovCqAB9BWhoGpvomv6Xq0QdnsLqK52xthnVWBZAf8AaXK/Q1VtDJPW5+gl
Bqvpt7b6lp9tfWUgltbmNZYnH8SsMg1YNQbjJY1lieOQBkcFSD3BrzSS2bTdWntHzgHCn1HUH8q9
NrmPHdmZbGG6jTLwthiOyn/6+P1rxs7wntqHtFvH8uv+Z6GXVuSp7N7S/MwDTGpltL5sQJ+8ODT2
r4o9u1tCldho5UmjOGUgg+hHQ16PpV4t/p8NwuMuvzD0PcVwEihlKnoRWz4FuxFNcWMmAXPmJ7kD
BH5AfrXt5FivZV/ZvaX59P8AI48wpe0o8y3j+R2NIaWkNfaHz4UUUUwENJSmkoASkNLSGgAptOpt
AAaSlNJQAGkpTSUxCGkpTSUAUdc0mx1zS7jTtVt0ubOddskbd/cehHUHtXyH8V/h/deA9VXLPPo1
w2La6b1/55v6N/Pt3r7KNQXdtBeWsttdxJNbzKUkjcZVlPUEUyWrnx/8L/iPqXgi/SIk3Ohyvm4t
DyVz1eM9m746Hnucj608P61p/iDSodR0i5S4tJejqeh7qR2I9K+S/ix8Pb3wTrMsiIZdDuZWa0nX
pGCSRE3oQOM9wM9eK5zwh4j1DwnrsOqaRKY5VIEseflnjzyjfXse1BKdtGfc9JXLeAfHOkeNtN+0
aZLsuUA8+0k4khPuO49CODXU0FiUGig0xCUhpaQ0AJQaKDQAlJS0lCAQ0lKaSgANJSmkpgJSGlpD
QISkpaSgBDRQaKYCGkpTSUAJSGlpDQAhpKU0lMBKKKKBBRRXM/ETxRb+E/C15fyyxrdlClpEx5lm
IO1QBz7k9gCTwKAPBf2gdYGp/EBrSNg0OmQLB9JG+d/0KD6qa4/wbp51TxXpVoASHuFZvYKdx/lW
TNLJPNJNM5eWRi7sf4mJyT+dej/AvR5brxJPqrAi2somjB/vSOMY/Bc5+orgx1b2OHnU8vx6GuGp
+1qxj5nuvA6cCoZm2r71KxCgk9K4f4p+KD4W8IXl/G228k/0e04ziVgcHoR8oDNg8HbjvX55SpSq
zUI7s+vclCLnLZHnf7QXjWe08vw1pVx5bTR779kI3bW+7FkHIyMlhgZBXnBIPgdSXE0txPJPcSPL
NIxd5HYszsTkkk8kk96jr7/B4WOFpKnH5vuz5nEV3Xm5sKKKK6jAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAClVSzBVBLE4AHerdjp892ylVKxE8uen4etd
HYWENmvyDMhGGc9T/hTSuTKaRi2OjyzgPOTEmehHzH8O1bdlYwWYPlKdxGC7HJNbmiaFqOtzCPTr
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
8O6b4bsPsulW4jUnLyHl5D6se9WNSu4re3leaVIoYlLySOwVUUDJJJ4AA718dmmaPGtU4K0V97Po
cBgVQ96XxfkV9Wv4LKyubu6k8u1to2mlfBOFUEk4HJ4B6V8e+PPGGoeMtYN5fny4I8rbWqtlIUPY
erHAy3f2AAG78YPHf/CX6wsGnSTDRbTiJG4E0nOZSuMjg4APIHPBYivPa9nKMt+rR9rUXvP8P+Cc
mPxftX7OHwr8Qooor2zzQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAoopVUswVQSxOAB3oAStnTtHd2D3alY8ZC5wT06+3X3q3pekrBsmuPmmHIXsv+J/z7102haR
d63qKWdioLkbmZjhUXuT/hVxjcynUsUrW3knljt7WJnkY7UjQcn2Ar0Lwj8PJZXFz4hRooh922Df
Mx/2iO3sDXbeF/C9h4fhBgQSXbDD3Dj5j7D0HsK3q9ClhktZnn1MQ3pEitreG1gSG2iSKJBhUQYA
qWiius5gooooAKKKKACiiigAooooA5XxBpRgdrm3X9yeXUfwH/CsKvRZI1ljZJFDIwwQe9cPq1i1
hdGM5MZ5RvUVzVIW1R1Uql9GUqKKKyNjn/E+kNdhbm1QGZRh1HVx/iKwfDmt3vh3V476xbDodskT
cLIvdW/zxXfVy3izS1A+226YJP70D+dY1aaki4yaeh714Y12y8RaWl7p77lztkQn5onwCVb35H51
Z1RZzb/uOn8QHXFfPHgLxVN4W1fzvnexmwtxCO47MB6ivpCwuoL+yhu7OVZreZA8bqchga8LEUPZ
PTY9ehWVReZgWF0bWbPVDwwro4mWRA8ZDKehFYer2vkT70XEb+nY0aTefZ5fLkP7pz+RrmOg38Vn
6toem6uYTqVlDcNC4dGdclSDkc/0rTxS4q02tUS0noxuKy/FOjRa7oN5p8yBjLGfLzxtcfdOe3OK
18UuKE7O6E0mrM+Q720ubC7ltL6FoLqE7ZI26qcZrvfgh44PgzxhELy4WHRL8+VetITtj4O2T2wc
An0OT0rtfjB4NOr2B1fTId2o2y/vEUczRj+ZHUevIrwevZpVVVjc8qpTdKVj9DYJo7iCOaCRZIZF
Do6nIYHkEGkubiG2i8y5mjhj6bpHCj8zXxn4X+Lfinwz4VOh6XPB5SsfInnTzHt0P8CA8YzyM5A6
YrkNd17WPEE7Ta7qt7qDsc4uJiyj/dT7q/QACrsLnPtO9+I/guxmMV54o0iGQdVe5UGuRvvEXhvV
NZL+Gda0/UHdTJLFbTBynIyTjsc/zr5IAAGAAB7Vd0jUrnSNSgvrF9k8LZHow7qfY1w5hgljKLh1
6ep04TFuhUUmtOp9bq4dQynimtXO+EfEFtrmkw31qcI4xJGesbjqDXRHkcV8BOEqcnCSs0fUJqSU
o6plaQvDMk0RKupDAjsR0r0rTLtb+whuVwN68gdj3FedMMqQela/g7Ufst61nM37qY/Lns//ANev
XyTGewrezltLT59P8jjzCh7WlzLeP5HcUUUV9sfOiGkpTSUAJSGlpDQAU2nU2gANJSmkoADSUppK
YhDSUppKAA0lKaSmAhooNFAEcsaSxvHKivG4KsrDII9CK+f/AInfBBw82p+CkBU5Z9MJA5/6ZMeA
P9k/ga+g6Sglq58E6nYXelX72Wp2s1peJy0My7Wx6j1HuMiq9fdeu6DpPiC1+za3ptpfwg5C3EQf
afVSeQfcc157qvwM8I3hZrRb2xc/88pyyj6Bs0E8p8rUV9J/8M+aF/0GdU/KP/CtC1+A/hKL/j4f
Ubg9s3GzH5CgXKz5cor6yX4K+ClUD7DcnHc3T5rF1v4B+HriL/iUXl9YSgcb385SfcHnH0oDlZ8z
0V6F4r+EHivQN8sNqNWs15M1kMuB6tGfm/753V586NG7JIjI68FWBBH1BoEJRRRQAAsrBkZkdSGV
kJDKR0II6EetfTvwn+K9p4ht4dM8QTQWmtKRGjE7UuvQr6NxyK+YqASCCCQQcgg4IPqKATsfehpD
XifwZ+Kq36w6D4ouAt8MR2t3IcCfsEY9n9+/1r2w1RadxKSlqlq2p2Oj2Ul5qt5BZ2sYy0szhVH5
9/agC33rz/4gfFHRfCttPDbzRahrC/KtnE/3WxwZCPuj9T2rzX4pfGJ9Vt30zwjLcWtszYmvh8kk
i4I2p3UH+9weOMZ4zPhF8MJfFEqavr8UkeiBsojEhrw5599nv37UX7Cb7G78NPDmsePfE/8Awlnj
QSSWEKh7ON1AjmbJ+6ueEXGf9okc4HPv3TpTYYo4IkigjSOKNQqIgwqgdAAOgp1NDSsJSGlpDQAh
rnPGvjDSvCGmtc6nOnnsjNBahgJJyOyj8Rz2qLx/4003wbpRuL1xJdyA/Z7VT88rf0A7mvlDxNr1
/wCJNZn1PVJd9xKeFB+WNeyr6AUN2E2N8R61eeIdcu9V1Fy1xcOW27siNcnai/7Kg4H59SaTQdD1
LxBfG00e2a4nA3NzhUHTLHsKf4a0K+8R6vFp+mR7pX5dz92JO7MfT+fSvpzwh4ZsfC2kJZWCAsfm
mmI+aZ/7x/oO1eNmeaRwUeWOs30/VnVg8G8Q7vSKKvgrwhp/hTThDaL5t04zNcuBvc/0HoP59a6F
qeap3c4UFEOWPU+lfD1Ks6s3Obu2fS0qailCCshtzOACqHJ7n0r56+OvxBsb/Tv+Ed0K5S6SRkku
7mFleIqPmWNTzk52sSDxgDnLAVPjJ8UP7S8/QfDU/wDoHKXV5Gf9f6oh/uep/i6D5fveM19LlWUu
LVetvul+rPOxuOVnSpfNhRRRX0h5AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFdDoummEi4nBEmPlX+77n3/wA/Sv4fs98huZU+RfuZHU+v4f56V1+h6bLr
GrW1hbna8zYLEEhQBkk/gPzwO9XGNzKpO2hb8M+Hb3xFdNFZ7Y40/wBZM4O1Pb3PtXtXhvQbPQLA
W1mpLHmSVvvSH1P+FWNF0u10fT47OyTbGnU92Pcn3q9XqUaKp6vc8yrVc9OgUUUVuYhRRRQAUUUU
AFFFFABRRRQAUUUUAFU9WsVv7QxnAkHKMexq5RSavoxp2d0edzRtDK8cgw6nBFMrovFdkAUu0HX5
X/of6Vztcko8rsdsJcyuFMmjWaF43GVYYNPoqSjzvVrJrO5dT0Brs/hd45/4R6Yabqe99MmcbHHP
kMTyT/s9z6VQ8T2+XjlIyjLsP1/z/KuRniMTlT07H1rlr0VJWexvCbi+ZH1vNFHc25VsMjjII/Qi
sNdHuGmZCVCD+M9/pXL/AAV8TpqOj/2Ndysb+zBKbzzJFnjH+7wPyNemYrwqlNwk4s9enUU48yI4
k8uNEznaAM+tPxUV1cxWqbpmA9B3NOtZ0uYFljPB7eh9KkokxS4pcUuKBDcV4r8WPh81s93r+keW
toF8y5t8YKHPLr7HuPXPXPHtuKSSJJY3jlRXjcFWVhkEHsRWlKo6crozqU1UVmfHNaek6PNqcbvF
LEio207s5/KvR/jJ4JsNG0uz1PRLOO1tom8mdIxx8x+Vj3Jzxn3FcF4QuVh1JonOBMu0fUc/417F
GcaiTPLqQdN2Zow+FIAB59zK5/2FCj+tR3vhUEKbKbB/iEvf6ECuoorq5ImN2cx4W1vUPBWr754X
ezlIE8QPDj+8p6bh+vQ46j6A0HV7XVdOhurOXzIJRlT3HsR2NeRzwxzxmOZFdD1VhkVa8G3T+Gb5
4oSX0m4bdJEeWifpvU9xgAEe3Hv89nOUfWIutRXvr8f+CevluP8AZP2VR+6/w/4B7KelV5QQwdTh
gc5FMtLlJoUdHDxsMq4OQRU5r4ezT1PpUd34b1ZdTs8PxcxACQev+0PrWvXmGnXsmmXyXEWSBwy/
3l7ivTIZFmhSWM5R1DD6GvuMnx/1qlyz+KO/n5nzuYYX2E+aPwscaSlNJXrnAJSGlpDQAU2nVx/i
qXxtZxyTeG4NG1EAkiCcvDIR6BslSfrge9AjrjSV4BP8dPEOhX5s/Fng17OVeuJWRif9kMu1h7hi
K6XRPjz4Tv8Aat8t9pjt2ni3qPqyZFMXMj1o0lZegeIdH8RWrXGhanaX8KttYwShih9GHUH2NalA
xDSUppKAA0lKaSmAhooNFACUlLSUCEoNFBpiEpDS0hoASg0UGgBK43xv8OfD3jBWk1C2MF+Vwt7b
kJKvpnsw56MCK7KkoA+ZNf8AgP4gsUml0q+s9TiU5SPBhlK/Q5XP48+1eT3ltPY3s1newyW93C22
SGVdrKfcf16HtX3kaw/E/hPQ/FFuIdc023utv3JCNskfurjDD8DSsS4nxJRXvnin4BAlpfC+p7O4
t73kfQOOR+INeS634H8U6JIy6j4f1EKCR5sEJnjI9d0eQB9cH2oJsznVLKysjMrqQyspIKkcggjo
Qe9er+Gfjjr2k2UdtqdlBrAQYWWSYwyY92CsD+VeXG0uQcG1uAfQxNn+VOSxvJH2R2V3I/8AdSB2
P5AZoA9a1X4+a3dW7x6do9lp8jdJHma4K/htUV5hrmt6t4k1BJtWvLm/uWYLEjZbBPACIOATnHAy
feuq8IfCnxP4gnQ3FjNpNieTcXsZRvoIzh8/UAV7/wCBfhtoPhALPbQm61LGDeXGGceoUdFH0p6s
erPMvhl8G7lry21Txaka2gTelhk7y+Rt8zttxnjOc47ZB9/jRY0VI1CoowqqMAD0FOPWimkUlYQ0
lKaZLIkMTyzOscaAszucBQOpJ7CmApIAJJAA5JPavN/G3xd0Dw3K9ra+ZquoAH93bEeXG3be5OB9
Bk+1eQ/F34hS+KNbMGjXVxFo1sDGvlyMi3Jzy5GeRxx7fWvNwABgDAqWyWzV8Ua7e+JdcutV1Nw0
85GEUnZGoGAqg9AAPxOT3pPDehX3iLVo9P0yLfM3LMeFjXuzHsK0PBng/VPFl+sVjC0dopHnXcik
Rxj2P8Tew/HFfSPhDwrpvhTTvsumxfO+DNO3Lyt6k+noOgrx8yzWGEThHWfbt6/5HZhcHKu7vSP9
bFbwJ4VtfCehw2kSo946hrqcf8tJMc477Qeg9K6E06RgilmIAHc1iaxq9vaWsk93cw2lmmN80zhF
GTgZJ4HJA/GviJznXm5y1bPo6VNRjyx0SJtQ1GK3t5ZHkSKGNS8ksjBVRQMkknoB6mvnr4l/GG21
TR7rSfDMU2LjfBPdTxgBojwfLXJPzDPLAEDtk5Xmvix8SLrxRdXGmaZNs8PpICm1Cj3GAOXyeV3A
lRgdQSMgY82r6fLcmjBKrXWu6Xb1PNxeP3p0du4UUUV9EeUFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
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
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUqqWYKoJYnAA70AaehWS3MzSSrmKPsehb+v/6q7HSL
CbVNTtrK2UtJM4X6DuT7AZNZtnbpa26xIBwOTj7x7mvYPhPoQtrBtXnX99cjbDkfdjz1/E/yFdFG
nzysclapyq53NhaQ2FnDa2yhIYlCKPYVPRRXq7HmhRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABXO+L4httpe+Sp/nXRVieLR/oER/6af0NRU+FmlL4kcnRRRXIdgVh+JYf9TMPdTW5Wfry
b9Nc/wBwhv1/+vQVHc5UgEEHoay7qHy3KnlSOK1aiuYvNiIH3hyKicbo0aPdvg/4vHiHSG0+6AXU
LBFU46SR4wGH5YI7cetdhrWnfbIQ0Q/fp933HpXy74R12bw34htNThyRE22VB/HGfvL/AF+oFfWF
jdQ31lBd2siyW88ayRupyGUjINeHiqXJK62Z6OGq88bPdFDStJ+xOJWmLSEYZR92tXFLioILy3nu
GhilV3UZOOn51zbHQT4pcU7FLigBuKxPGfh6HxN4cu9Mm4Mg3RuOquOVP51u4pcVSbTuiWk1Znxg
RNZXrK42XFvKVYf3XU4I/MV6Jp12t7ZRXC8bxyPQ9xS/HXw7/ZXigapbptttTG9sdBMB835jB+uT
XPeCbgkXVuzcDa6L+YP/ALLXuUKnMk11PHqw5W0+h1NFFFdRkFFFFABWvpviC+sVVA4liAwEk5wP
Y9ayKKxrUKdePJVimvM0pVZ0nzU3Zi+PtU1TxBpa2sCQpAGDyRrndJjpyfQ9q8sIIJBGCOoNepVl
avolvqALgeVcf3wOv1FZ08JToR5KKsiqledWXNUd2cFRVnULGewm8u4TGfusOjfSq1IQmBnpS0Uc
noMntQBr+GPD994k1A2mnBAVG6SSQ4WNc9T/AEHevY/Dnwe02MpLevPekAZ80hI898KOSPYk11nw
y8NWelaNDDHEpwiySt3kkYdT6/8A6q7luBgdK+JzDOq1WbhRfLH8WfQUMFToxXOry/BHN2HhfT9O
iVLSGKAD/nlGF/8Ar1PLpsTKVdmZT2YAiteSqz14jlKTu3qehGbSsjh/EXgDRNXDGazjWXHEsQ8t
x+I615Z4u+GF3pcTXOjSyXtui5kikA81fcYGGHtwfrX0HJVOdA319a9DC5piMM1yyuuz2M6uDo11
7ys+63Pk/RNWvtE1SDUtIupLW8i+5LGeoPVSO6nuDx+Qr6R+F/xptvEN6ul+JIYdPv3IWCdH/dTH
A4OfusTnA6GvJPi34VOl6g2r2igWd1JiRFAAikI9uzYz9c+teeEAjBr7nC4iGJpKrDZ/1Y+ZrUp4
eo6cuh+gJ60V4x8EvipBrNvaeHfEEoi1aJBFbzucLdKo4BP/AD0wP+BdR3r2eugSdxKSlpKAEoNF
BpiEpDS0hoASg0UGgBKSlpKEAhpKU0lAAaSlNJTASqWr6nZaPp8t9ql1Fa2kQy8srYA/+v7VYup4
7W3lnnYJFEpd2PYAZNfInxO8e3vjbV3YO0WjQti0tunH99/Vj+gwPUlMlux6d4i+P1nFI0fhzSZr
sKf9feHykceqqMt+eD7V5/4i+L/izWNyQ3cemQH+C0XDY9C5yfywa87ZlRSzEKo6knFdH4c8FeIv
EYR9K0udrdulxKPLiI9Qx+8Pdc1nUqxpx5puy8wSlN2iYE8klxcPcXMsk9w/35pnLu31Y5J/GmqC
8ixorPI5wqKMlj6ADrXt3h74G7dsviXVAExkw2nHPoXYdPoK9E0HQPC/haPbo2nwrL0MvMkjfV2y
T+eK8bE59h6WlP3n+H3/APAO2jl1WpvoeJ+DPhLreuyLNqobSdPxndIuZpPZV7fVvbg849k8JeB9
A8GIZLZWmvD1urnDS49BgAD8AKs694qttOhEl9dwWMTHAaR8Fvp/9avKPHfxl0zRpriz0WM6pqCE
oZScQI3zDO7q+CFPy/KwPDV4lTE47MnyxT5X0Wi+b/4J6lPC4fC61Hr+P3Hsl/rcdvDLMSkMEal3
lmYKFUDJYnoAB615D4t+NuhadNNDYLPrF0nAaIhIM7sEbzz0GQVUg5HPp4R4u8ba94s2prF5vtkk
aWO3jQJGhPsOTgcAsSQCeeTnmq9DCZBCK5sQ7vstvv8A+GMquZW0oq3m9zqPHXjbVfGGoyTXsrxW
IYGGyRyYogMgHHRmwTliM8noMAcvRRXv06cKUVCCskeZOcpvmk7sKKKKskKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArX8P2nmz/aHA8uM4Hu3/wBb
/CsqNGkkVEGWYgAe9dlawrbW0cS9EHX1Pc1UURN2R0HhDShrGu29vIu6AMGlHqPT8a99ijSGJIol
CRooVVA4AHAFed/DbTBayRMw/eMplc/hwP1r0avTw0OWNzzMRK8rBRRRXSc4UUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABWD4ubFrbr6uT+Qrerl/FsubmCIfwrk/jWdR+6aUleSMCiiiuU
7AqG8TzbSZP7yEfpU1B5FAHDUU6Rdkjr/dYim0G5m3kWyXI+63New/ALxOSZfDl3ISFDTWmewzl0
H4nP4n0ryu4j82Ir36iqmm6hc6RqNtqFk2y6tZBLGT0yOx9iMg+xNceIpc6cSoT9nLmPrrXLV7nT
pFjLB1+YAH72OxrkLKc2t3FMCRtYE47juPyrvbaaK6t4p7dg8Mqh0Yd1IyK4zX7P7HqDhR+7k+df
6ivCkup68WdqhDqGUgqRkEdxTsVjeFrvz7IwMfnh4H+6elbmKpaksbilxTsUYoA5f4jeHV8TeEb6
yRFN4qGW1ZuMSryBnsD0Psa+V9NunsL6ObDKyHDqRg47gj1r7RxXzB8aPD40LxrM8K7bXUAbqMDo
GJw4/Pn/AIFXdg6lnynHi4bSNaN1kRXQgqwBBHcUtYfhG88/TvIY5eA7f+A9q3K9hO6uecwooopi
CiiigAooooAjubeK5iMU8auh7GuP1rw9Ja7prPMsHUr1Zf8AEV2lFTKKkNOx5bRkr8y/eHI+tdlr
+gpcK1xZLtn6lBwH/wADXHMpRmVgVZTgg9Qa55Rcdy07n1z8P79L/SYJozuSaBJQfwwf510z14V8
A/EjLDPpU2SbX95GfWJjyPwb9CPSvdCQyhlOQeQa/Nsdh3hsRKm+n5dD6mFT20I1V1/PqQyVWenX
1wtugZuSeAB3rNGpBj80eB7HNcp0QhJq6LElVZKV7pCm4dSeBUAnD9Rig2jFmfrNhBqdhcWd3Gsk
My7WVunt+Rwa+XLuBrW7nt3OWhkaMn12kjP6V9WXDrGrO5wqgsT7CvlfU51utTvLiP7ks7yL9CxI
/SvqeG5S/eR6affqePnSj7j66/oVu4IJBBBBBwQR0I969p+F/wAar3TbhNP8ZXEl5YyOqpesFD2+
ePnxjKDueo5JzXi1FfUngp2Pvq3niuYEnt5ElhkAZHRsqwPQg1JXxV4N8feIvB5C6NeqbXOTaXCm
SE+vGQR+BFe3+Fvj5ot/sh8QWU+lznAMiHzoSfqPmH4j8aC1K57LQa5/SvGnhnVgP7P13Tps9hOo
P61vqQ6BkIZTyCOQaYwpDS0hoASg0UGgBKSlpKEAhpKU0lAAajnljghead1jijUs7scBQOpJp7EK
CWIAAySTgAV8vfGT4nTeJ7ifRtGdotDjYpI/Rrpgf/QPbv8ATqCbsRfF/wCJs/iq7l0zRbiSLw+u
UcKAPtZyPmJ67eOACMgnOc15iqlmVVBZmIAAGSSegFNYhVLMQAOST2qzbT3OnXqzQl7e7hY4JXDI
3ToehqXe2hPXU9v+GHg+28PWq6lrNpDNq0nzIJvmW2XHQDpu9T/hXaX/AIwhgY+ZfoGH8MQ3H9M1
5FZ6tNq1jHPNPJIWHzBmJAPfipK8eWQPEz9riqjbfbT7r3PRWZRox5KNNfPU7fUPGwlI8mKWXB6y
tgfgBT4dWTV7Z4oriS3kYYITAdfcGuFpyMyMGQlWHIIPIr1MNlWDw+1NP11/M4q+OxFb7bXpp+Rz
XjTwfqWlzPfNPNqVu33rhyXlX/f/AMf5Vxc0EU64mjVxggZHTPp6V9B6DqpvQ1vdbTKBwT/GO/41
zXi/4fw3hkvNFxBcnlrfpG59v7p/Su6eHVr09uxxRrNO09z581LTJLTMinfBng9x9az67y5geGaW
3uomSVCUkjcYIPoRXN6rpPkKZrbc0Y5ZTyV9x7VxuJ2xnfcx6KKKk0CiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorT0jTTdMJZ
gRAD/wB9+30oE3YisdNnuwGUBIs/fb+g71uWmlW0C/MglfHJcZ/IVfVQqhVACgYAHarFlZXd/LJF
p9pc3k0cZlaO2haVwgIBbaoJwCRk+9WkkYuTZVijjiXbEiouc4UYp9M8xN7puG9DtZSeVPoR2NOp
ki1C9tBI5aSGJmPUsgJqaigDLm0S1fJj3xnGBg5GfXmqEuhXClvLkjdQOM5BP+frXR0UrIpTaOQl
067ixugc5/u/N/Kqld1Vee0t593mwoxbq2MH8+tLlKVTucbRXStodqWJDSgE9Aw4/SqNxoc6DMLr
KMdPun/D9aVmWppmRRU9xaz25/fRMozjOOPz6VBSKCiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKdGjSSKiDLMQAP
egDb8OW3+sneP0EbH8c4/Suu0Cx+36jGjDMSfPJ9PT8ayLSLyLWKMhQUUA46Z716D4YsfsmnK7jE
s3zn2HYVtTjdnNOV9TuvB8QH2mTAAAVFx+JP9K6SsjwvHs0sN3kct/T+la9erTVoo86o7yYUUUVZ
mFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVwWqXH2q/mlBypbC/QdK67XLg22mSuv3
m+Qe2a4esKz6HTQj1CiiisDcKKKKAOOv12304/2zVerWqjGo3AH96qtBstgrPvo9sm4Dhv51oVFc
x+ZEw79RUzjdDZ7P+z94lN7ptzoF3KWuLMebb7jktCTggf7rED2DLXpXiCy+16e5Rcyx/Mvr7ivl
nwFrp8OeLdP1LOIlfy5veNuG/ofwr67Qq6KyHKsMgjuK8PFU7Sv3O/DTvG3Y5Xw/pV9Ddx3LjyYx
wVY8sD2x/jXVYp2KXHtXMlY6W7jcUuKdilxTENxXl37QXh5tT8LQarApafSnZ2A7wvtD/ltRvop9
a9UxUV3bRXlpNbXC7oZkKOPUEYNXTlySUiJx54uJ8X6Xfy6fdCaLnjDKTwwrt9K1W31FP3Z2SjrG
x5/+uK47xJpUmheINR0qb79nMYvqvVT+KlT+NZ6O0cgZGKuOQQcEV7UKlttjyHHueo0VyWk+JnTb
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
1seyj+J+rH0xwvh23u4fhDJqXh2KeXVLvUpYNWvLYFrmKDaCsZZfnCOcFucHHPWuIXbjC4wOMDt7
V9JRoQwtNUKa0X4nhYivKrNyluxQABgdKWiitDnCprG1mvr63s7RDJcXEixRqO7E4H4dyewyak0r
Tb7WNRhsNJtJby+mO2OGMct9SeAB3JIA7muuhVJNT0/wh8N5Tea9NLi/8QWi/MoHDrbycFIVGdzq
V3gYyQeRK44x5h0a3kOoP4C+HTJqOr3/AO71TV0+UED70MTfwQIPvOcliTjAwD9B/DfwJpfw/wBB
Nhp+24v5wDe35XDTsOir/dQdh+PWrHgfwZongfSUsdCt080ri4vmUedcn/abqF9FHA9K6GvkM3zr
2yeHw/w9X3/4B7GGwvJ70gooor5o7hQSDkHBHcVwfx5s9Ov/AIV67c6xHE89nEslpO4HmJMWAUA9
eckY9K7meaC1tZ7u9nitrO3QyTzyttSNB1JNfJPxl+Jc3jvVFsNKDweHbaT/AEeMjD3DdPNk/ovY
e/T6Ph7B16lZV4u0Fv5+Rx4upFR5Xueb20JmlCjp1JrctoGkkjggXLMQqqKgt4VhjCgDPc+tdr4U
sFhtPtUseJpPulhyF9vTNfaVJ8zPHb52aukWCadZrEmC55dvU1dzTM0mawNSTNJmmZpM0ASZpM0z
NJmgCTNJmmZpM0APzRmo80ZoAfmjNR5ozQA/NGajzRmgB+aM1HmjNAD80maZmkzQBJmkzTM0maAO
c8Yvma1X0Vj+ZH+FcX4hkKaftGMO4U/z/pXVeKJN+pBf7iAf1rjfEzsI7dAflJJI9xjH8zVdDLeZ
gUUUVBsFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFb3hu2IEly2QCNi+/qf5frWJDGZZUjXAZ
2CjPvXZwRLBCkaDCqMCqiiJuysdF4OthNqLzMOIVyPqeKveIJ/NvdgPyxjH41c0CAadonnSDDuDK
39B+WPzrBZi7FmOWY5J9664KyMI6u4lFFFWWS2q77qFfVwP1rtK5LSF3alAPQ5/SutoM5nd6P/yC
rT/rmKuVX05dlhbr6Rj+VWK7VsebLcKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooA4HU
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
uPVT3FfW9cn4xW21Fls7qCG4hj+ZllQMN34/55qoytoRKFz5jBIOQcGrUV12kH4ivQfEXw/jmdp9
FdYGPJgcnbn2Pb6V5/qWm3umTeXf20sDdiw+U/Q9DWmjI96BaUhhlSCKdislXZfusR9DU8d26/ew
w/WlylKoupfxRiokuom6nafeplIYZUgj2NSWmmJilxTsUYoGNxRin4oxQA3FVLyfb8iH5u59KW9u
NnyRn5u59Km8N6LPrupC3h+WNcNLJ2Rf8T2qkurM5S6Iq6Xp11ql4ttZRmSVuT6KPUnsK9c8KeF7
bQ7cNIEnvjy023p7L6CtPR9IstItxDYwJHkAO4HzOR3Y96v0nK5UYW1YUVWvr61sIfNvbiKCP1kY
DP09a4HxJ4/Yl7fQ1wOn2lxz/wABU/zP5UkrlOSW53Or6rZ6Ram4vphGnYdWY+gHevHvFHiC4169
LyFktUP7mHP3R6n1NZ8097ql2gle5vLl/lReZHPsB1/KvZfh/wDCy1gt4r/xTAlzcuu4WUgDRxZH
Rx0Y+3T69arSO5k256I5D4a/D648Rzw6hqaeVoynOGHzXGOw/wBn1P4Drke2+Ldbg8M+Hbm/kA/d
Jthj/vP0Va2Y41jjWONVRFAVVUYAHoK+bvit4ol8QeJJoIpHGnWTmGKLoC6khnI9c5H0H1qfiY37
iOOuZ5Lm5muLhi80ztLIx/iZjkn8zWVrtx5FiVUjdKdnXt3/AMPxrRrltduPPviqk7Yhs69+/wDh
+FW3oRBXZnUUUVBuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWz
4ctt0rXLdE+Vfr3/AE/nWNXZWMXkWcMe3aVUZGc89/1qooibsjW0W0N7qUMQztB3ufQD/OPxr0Ss
XwpZC204TMP3k/zf8B7VtV1042RzNhVTVJ/s9jI4+8RtX6mrdc94km3XEcIPCDJ+pqwirsx6KKKD
UKKKKAFALMFUZJOAK7WCMQwpGvRFArmNEi83UY8jITLGuqoM5sKKKKCAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACsLXNR620B/wB9h/KrWs6h9lj8qI/vmH/fI9a5k8nmguMeoUUUUGgU
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
QAKAFAAHAA7UtevGKikkebJ8zuwooqC+uo7Kynupj+7hRpG+gGaYjyD4q6qb3xD9jRgYbNdvH988
n+leW+JZ28yKAfdA3n3PIH9fzro7meS6uZbic5mmcyOfcnJrjtYdX1KcqcjIH4gAGvHqz5m2erRj
y2RSooorI6AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAuaTcfZr6NsgKx2Nk44P+c/hXZW88ltOk0LbZEOQa4Guo0O8a5tykm4yRYBY9wc4qoszq
Lqet6bdpfWUU6fxDkeh7irNcV4T1D7NefZpD+6nOB7N2/PpXa12QlzI5mrHP6/ZCN/tMS4Vj84Hr
61jV2l1CtxbyRMcBxjPpXHTxPBK0cgwynBqjSLuMooooKNDRrz7Lc4c4ifhvY9jXU1w1bGlat5Kr
Dc5MY4V/T6+1BEo9UdDRTY3WRA0bBlPcGnUGYUUUUAFFVLjUbW3yHlBYfwryayrrXJHBW3TYP7zc
mgpRbNq6uobVN0zhfQdz+FYN9rM0xK2+Yo+mf4j/AIVluzOxZ2LMepJyaSgtRSAnJyeTRRRQUFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAZfiL/jxX/fFc3XS+IBmwz6MK5qqRrDYK3/DR/czD/aB/SsCtvwyfmuF9lP8
6HsEtjdoooqTIKKKKACiiigAooooAKKKKACiiigDrNFGNMh98n9au1W0wbdPtx/sA1ZoMXuFFFFA
jI8dv5Xh7T4wcNNcNIfcKMfzNJ8HLcS+KZpT/wAsbZiPqSB/U1D8Tm8u50iz6NDab2Hu5/xU1t/A
+3Jm1m5I+XbFEp9/nJ/9lrhxztCR0YNXnE9UxS4pcUuK8A9sTFGKWlxQAmKKXFLQAmKMUtFABRS4
ooATFLiiigAooooAKKMUuKAEpcUuKMUxCYpcUuKXFACYoxTsUYoATFLilxS4oAbilxS4pcUwExRi
nYpcUCOU+J8hi8Dapj+NAh/EivnevfvjC2zwLdH1liX83FeA16mCX7t+p5uMfv8AyNGxbdAPY4qx
VLTm++v41dr1YO8TnRpaDcmG8EZPyS8H69q6euHVirBlOGByK7W3kE0Eci9HUNVGc11H0UUUEBXS
eFLskSWjnp86f1rm6ns7hrW6imTqjZx6juKqEuV3JnHmVj0CimxuskauhyrDIPtTq7DhCiiigArk
viNoC6xozXEMeb60UvGR1K9WX9P0rraKmUVJWZUZOLuj5lpa6v4ieHjoustNAuLG7YvHj+BurL/U
e30rlK8mUXF2Z6MZKSugooopFBRRRQAUUUUAFFFFABRRRQAUUUKCzBVBLE4AHJJoAK9d+FGiNZaZ
JqU6lZbwDywe0Y6H8ev0xWD4L8B3FzcR3mtxeVaLhlgb78h/2h2X9TXrIAUAKAABgAdq7MPRafPI
5K9VNcqFooortOUK4f4s6o1noMdnE2JLx9reuwcn9cD8a7ivFfirePc+LZYDkJaRJGo7ZZQ5P/jw
H4VhiJcsPU2oR5pnD6jcC2s5JM4bGF/3j0rjq6DxLKBFDDwWLbzz0xx0/H9K5+vKkerTWgUUUVJY
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFT2
lzJay+ZCQGxg5Gcj0qCigDuLW43pFPAxHRlI6g/4ivRND1AahYrISPNX5ZB7+v4145oF9scWsn3W
PyMT0Pp/nv8AWuy0LUDp18JGz5T/ACyD29fwrenOzOacbHoNZus2AuYTJGv75OeP4h6VoqwdQykF
TyCO9LXSZp2OGorW16yEMvnxj5HPzD0NZNBqncKKKKBkkM8sP+qkdP8AdOKl+33f/PzL/wB9Gq1F
AWLP2+7/AOfmX/vo1HJczS/6yWRvqxqKigLBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFDXF3
abJ7EH9a5auu1Nd2nzj/AGSa5GqRpDYK1vDbYvJF9Uz+RH+NZNaGgtt1JB/eVh+mf6U2VLY6iiii
oMQooooAKKKKACiiigAooooAKKKKAOzsf+PG3/65r/IVNUNj/wAeVv8A9c1/kKmoMWFT2MXn3kMW
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
JqFwGGDvJ/A8ivXvitpS6R471KGMYimIuU/4Hyf1zXl3iNNt6jBcBkHOOpyf/rV7d+aKkeRFcsnE
yaKKKRqWLe9uLcYhmZVxjb1A/A1pw68wwJ4VPPVDjA+h/wAaxKKdxOKZ0ya3as4DCVB/eZeB+Rq2
l9auoZbiIA/3mwfyNcdRT5ifZo7Jr21VSTcRYAzw4NPt54rmLfCwdOlcVU9pdzWkhaFsZ6g8g0cw
nT7Hqug6+0LJb3zboegkPVfr6iuvRldQyEMp5BHevHtN1OO7xGw2T45HY/St7TtWu9PyIHBQ/wAD
jK1vCpbcxlGx6PDK8MqyRMVdTkEV2Gj6tHfKEkwlwOq9m9xXl2m+JLa4AW6xbyep5U/jWzHeQYEk
dzFxyGEg4rohUtsYzp8256ZRXDQ+O7OzTZfzLOQOGh+Zj9ccVjar8UJmyuk2EaeklyS3/jqkfzrd
14JXuc3sZ3tY9SrL1fxBpekITf3sUbdQgO5z9FHNeN6t4z13U8ia88iMjBitl8tf5lv1rnZZAoaS
ZwP7zuf5k1jLF/yo1jhv5mek6z8TZWZ49HtFRegmn5J99o6fnXC6tq+oavJu1G6lnAOQjH5V+i9K
5q81qKIskCmRwcbv4f8A69Z0us3b42lI8f3V6/nmuSdaU92dUKCjsjobi6gtx++lVDjOM8/l1rKu
NeGMW8JzjrIf6D/GsJmLMWYksTkk96SsnI3UEtySaaSeQvM7O3qTUdFFSWFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAPikkibdE7I2MZU4qZL66Rw
y3EpI/vNkfkarUUBYv8A9rXv/Pb/AMcX/CpU1u6VQGETn+8y8n8jWXRTuxcqNb+3bn+5D+R/xpya
7OHHmRRMvcLkH8+ax6KLsXKjqNN1P7bO0fk7MLuzuz3Ht711ng/Rl13XIrORnSHazyMvUAen44rk
PDsPl2RlON0jdc9hx/PNev8AwZto2k1S5I/eII4wfQHcT/IVFabhTchU4KdRRLz/AAw005KX98vo
PkIH/jtV5fhbCf8AU6rKv+/EG/kRXpQFLivMWKqrqei8NSfQ8mm+Ft8oPkapbSHtvhZP5E1mzfDn
xDGTtSzm/wCuc/8A8UBXtmKXFWsZVW5DwlN7HgU/g3xBCTu0uZsd0Ib+RrKuNLv7ckT2N0mOuYWx
+eK+kwKUqCMHkelaLHS6oh4KPRnzAG8qTAOyQe+DVuLUr2L7l3N+Lk/zr6NnsLS5QpcW0EiHqHQE
VkXPgzw7c536RarnqYl8s/8AjuK1jj49UZPBS6M8Ui8Q6jHjMwf/AH1FXIvFVyv+sgif6EivUj8O
vDGP+QfID6i7m/8Ai6pXPwu0ST/UTX0B9BIGH6jP61osfDzIeCn5HCxeLIj/AK21kHujA/zxVyLx
Lpz/AHnlj/30P9M1tXfwoXH+h6q2fSaL/A1j3Xww1uLP2eaznA/2ymf0NbRxsH9ozlhai6FuDVLG
b/V3URPoWwatq6t91gfoc1x174L8Q2hPmaXNIv8AeiIf9Ac/pWLcR3Wnn/SYrmzOcYlRov54reNd
S21MZU3HfQ9Morzq31i+iA8q7cj0J3D9asr4i1MHJnU+xjX/AArT2qJ5TvKK5C38V3C4E9vFJ7qS
v+NaEHiizfAljlj/AAyP0pqpFiszfoqnb6nZXGPKuYiT2LYP61c6jParvcQUUUUAFFFFABRRRQAU
UUUAdD4VvdrvaOeG+ZPr3FVfElmLa9EkYxHKN3sD3rlNQ1e60e7jmMIe33ArIhwyH0OeDXdaPq2m
+K9MKxuDKgG+M8MjeoHp79K0jJTXJ1MpJwlz9DmaKnvLaS0uXhlHzL39R61BWZruc/rWm7C1xbj5
OrqO3vWNXc1zmsaZ5BM8A/dHll/u/wD1qDSMujMmiiigsK5/WdN8stcQL8h5dR29/pXQUHkc0JjT
sZXh648y1aFj80Z4+hrVqgtilreLPbghW+V0Hv3FX6GDCiiigQUUUUAFFFFABRRRQAV6H8MLlYdN
1Uv9yFllI9tp/wDia88rpvDF9/Z3h3xHPkZEKKoPdm3AfzqoOzuZVleFjhLqZrm6uJ8ZeaRpTjuW
JP8AM19PeEtPGmeGdMs+MxQICfU45NfOvgvThqnizSbFgSkk4Lf7qgu36Ka+owMdOBXhY6W0T0cF
HeQ3FLinYoxXAdwmKXFLilxQA3FLinYoxQITFLilxS4pgNxS4pcUuKAExRinYoxQAmKXFLilxQA3
FLilxS4oEJijFOApcUANxS4p2KXFADQKXFOxRimAmKXFLilxQA3FLilxS4oATFGKdilxQA3FLinY
oxQAmKXFLilxTAhuIvOt5Iv76la4KFzDMj9CjA/ka9EArNOh2DO7vEzMzFjlyMZ+lS1cadjx79on
T/8ASdE1eMDZLG9tIfcfOn6GT8q8H8Rw77VJRnMbc89j/wDXxX1r8XtGTUfh9fIiZezUXMWOSCnU
D6jI/GvljUIxNYzptLZQkAdyOR+terhpc1O3Y82uuWpfucdRRRWgBRRRQAUUUUAFFFFABWxYa08Q
2XQaVezD7w/xrHooTsJpPc7G0vYLvIhfLAZKkYIqxgelcNU63VwqhVnlCgYADniq5iHT7HXyzRQ4
82REz03MBmqEutWiNhfMkGOqr/jiuZZizFmJLE5JPeko5gVNdTWudbnkwIFWEf8AfR/Wst3aRy0j
MzHqWOTTaKm5aSWwUUUUDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooqa0i8+6iiwxDMAdvXHegDrrSLyLWKLCgqoB
29M969s+Edj9n8LNcMPmu52k5/ujCj/0En8a8Zwx4QZY8Aepr6R0KzWw0axtUHywwqn5CufGytBR
7lYON5uXYuYpcU7FLivKPTG4pcU7FGKAExS4pcUuKAGgUuKXFLigBMUYp2KKAExS4paMUAJQRkEH
kHgg06igDKvfDuj3xzd6ZaSH18sA/mKwrz4ceHbjJS3lt27GKUgD8OldlRitI1Zx2ZnKnCW6PK9Q
+Eykk6dqrKP7txEG/VSP5Guevfhr4jtsmKG2ulHTyZufyYD+te7UVtHGVVvqYywlN7aHzLf6NqVg
xW90+6hI6lozj8+lVLW+lt2/0W5ZPZH4/KvqRgGXDAEHseaqXel2F5CYrqytpYz1V4wQa3jj+8TG
WC7M8BtfFF3HgTpHMPX7prasvEdjcELIWgc8YccfmP612OrfC3Rrol7Ca5sX/uq3mJ+Tc/kRXE63
8ONc05WktkS/hUZzDw+P90/0rsp42Euv3nNPCzj0N1WDqCpDA9xzS15kk09tIUWSWJ0PKZKlT7jt
WzYeJrqFgt0Fnj7nGG/OutVV1OflO0orPsdZsrzAjmCuf4H4NaFaJp7CCiiimIZNEk8TxSqGjcYI
PeuH1G3uNA1WOazmeMj54pFPI9jXd1Be2sV5bvDOuVYfiPcVMo3GmaGga7D4usfs84SHWYFyB0WU
eo/w7VA6MjsjgqynBB7V5veW9xpWoFA7xyxnckiHBI9Qa9T0S5TxTocdzG4OqQKEuVxjefX8expw
m56Pchr2foUqCMjB6UrAqxVgQQcEHtSUyjndX0sxEzWwzH1ZR/D/APWrIruaxtT0gPultRh+pTsf
pQaRl0Zz9FKylWKsCGHBB7UlBYUUUUAFFFFABRRRQAUUUUAFFFFABSXl0YtIktVPNxMjN/uoDx+b
A/hS1l3b75mPYcVFR2Qmek/AjTDPrl9qTr8ltF5KHtuc5P4gAf8AfVe34rkvhTpX9l+CbAsm2a6X
7S+Rg/PyAfwxXX4r5/ET56jZ6lCHJTSExS4pcUuKwNhuKXFLilxTATFGKdijFACYpcUuKXFADcUu
KXFLigQ3FLinYpcUANxS4p2KXFADcUuKdRimAmKMU7FGKAExS4pcUuKAG4pcU7FLigBuKXFLilxQ
AmKMU7FLimA3FLinYoxQITFLilxS4oAbilxTsUuKAG4qOe4htxmeVIx/tHFT4rnvGMGbWCYDlW2n
8f8A9VD0Q0aC3Fnq0FzaRSB1aMo/ynowI718e31s1lf3Vm4w9tNJAw9CjFT+or6e8LzeVqyL2kBW
vFfjdp6af8SL/wAvpdxRXZHYFgUP5mMn8a68FPVo5MZDRM8SvYfs91LFzhW4ye3b9KgrZ8Sx4nhk
z95SuPof/r1jV2swi7q4UUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFaXh+PfqIbONilvr2/rWbW74Y/5ef+A/1prcmWx1/hm1+2+ItNtuvmXCZ+gOf6V9H4/CvC/h
VbifxtaMRnyIpJf/AB3b/wCz17vivPxzvNLyOrBL3WxuKXFLilxXCdo3FLinYooATFLiloxQAlFL
S0AJiiloxQAUUtFACYpaKKACiiigAopcUuKAG0uKXFLimIbilxS4pcUAZesaDpmsx7dSsoZzjAdl
w6/RutefeIfhSpV5tBuiGAyLefkH2DdvxzXq2KXFa0606fwsynShP4kfMWpaDq2mS+Xf6dcwt/ub
h/30uR+tN07WbyxOI5DJH/cc5A+npX07LGJInjPRgRXJ658PtG1dS0qvb3H/AD2twFb8Rgg/jXbT
x2vvKxyTwWnus8xsvE9rLgXSNA3qBuX9Oa2oLiGdA8MqSKe6tmqmt/CvV7MM+mzRX8Y5C48uTH0P
BP41w19ZXml3Qivrea0n52iRSpOOuD369q9CniYz2dzjnRlD4lY9Jorz+11u/t8BZy6js43VqW/i
yQDFxao3ujY/Q5rZVEZ8rNnxBpo1CyOwDz4+Yz6+341ynhzV7jQNXju4Q3y/JLH03r3B/wA9RW4P
Fdrj5re4z7bf8a5vVrmK8v5biBHRXwSHxnOPapnJX5ovUErqzPbZre08Q6fFqOmyKTKuVbpu9m9C
Olc3JG8TlJFKuDgg1yHgTxK3h7Uts2Tp85AmA/hPZx9O/tXs17ZW2pW6lsEMAySL1wehHtXTBqsr
rc523SdnscLRV/UtLuLFiXG+LtIvT8fSqFS01ozVNPVFPULCK8Q5AWXHDjr+Nc3d2U9q+JUOOzDk
GuwoIyMHkGkWpWOGoro9Q0eOYF7bEcnp/Cf8Kwbi3lt32TIVPv3oNE0yKiiigYUUUUAFFFFABRRR
QBDdSeXEcfePApPDWmvrHiDTrBIjKs06CRf+meQX57fLmqVzJ5krHPyjgfSvbvgj4Zaw0yTWrxNt
xeALApHKRev1Y/oBXDia3LFyLpQ9pNI9NVVVQqgBQMADsKWnYoxXiHrCYoxTsUYoATFLilxS4oEN
xS4p2KXFADcUuKdilxQA3FLilxS4pgJijFOxRigBMUuKXFLigBuKUCnYoxQAmKXFLilxQA3FLinY
pcUwGgUuKdijFAhMUuKXFLigBuKXFOxS4oAbilxS4pcUAJijFOxS4pgNxS4p2KMUAJiqGvQefpFy
oGWC7x+Bz/StHFBUMCD0IxRYLnmlpN5F1FKP4GDfhXG/tG6Xs1bSdXRflnhNs7e6kso/JmrupNNu
TdSxQ28j7XKgheOvrUXxe0uW7+FErTR7biw8uYg8kBTtP/jpz+FXhZctREYmPNTZ8qeI4d9msgXJ
jbk56A//AF8VzddtPH5sEkecb1K59MiuKZSrFWBDA4IPavVkedTelhKKKKk0CiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAK3fDH/Lz/AMB/rWFW94YU7bhsHaSoB/OmtyZ7
HrvwWiDeIr6YjmO12Z9Nzg/+y16/LcQQrmaaKMerOBXzFFNNDu8maWPdw2xyu76461E4V33Phn9T
ya562F9rPmbLpYn2UeVI+lJ/EOi2+fP1fTo8HHz3KD+ZqL/hK/D3/Qe0n/wMj/xr5x4A7AU0yIOr
r+dSsBHuX9dl2PpD/hK/Dv8A0HtJ/wDAyP8Axo/4Svw7/wBB7Sf/AAMj/wAa+bjLGP41/Ojzo/76
/nT+oR7sPrkux9Jf8JX4d/6D2k/+Bkf+NH/CV+Hf+g9pP/gZH/jXzb50f99fzo86P++v50fUI92H
1yXY+kv+Er8O/wDQf0n/AMDI/wDGj/hK/Dv/AEHtJ/8AAyP/ABr5u82P++v50u9P7y/nS+oR7sPr
kux9LQ+I9En/ANRrGmyZOPkukPP4GrsV9aTY8q6gfJwNsgNfLmVPdT+NIY0bqin8KTwC/mD67Lsf
VQdT0Zfzpw56V8rws8GPJZosdNhK4/KrkWr6nCf3epXy+32h8flmoeAfSRSxveJ9OUuK+coPGHiG
AYi1e6A9CQ38xWlb/EbxJD/y9QyD/ppCDUPAz6NFrGw6pnveKXFeL23xX1eNcT2VlP7/ADIf61rW
fxeiP/H9osqe8FwHz+DBf51DwlVdC1iqb6nqeKMVxun/ABK8OXYAkuJrVz/DPERj6sMr+tdLp+s6
ZqChrG/tZwemyQHNYypzj8SNY1Iy+Fl7FLilxS4qCxMUYp2KMUwExS4pcUuKBDcUjOiffdV+pxUm
KwdRXZeSD1OaQzcUhlBUgg9CKgvrC01CAw39rBdQnqk0YcfkaXTTuso/bIq1imnbVCaOH1P4ZeHb
zJggksnPQwOcD/gJyK5XU/g/cKGbS9USTA4S4jwSf95en5V7HijFbRxFSOzMZYenLofMGs+Gda0Y
yHUdNuIok6zBd0f13jisevrdkV0KuoZSMEEZBrzXxf8ACy11GZ7vQplsrhjueB1zE59sfdP5j271
2UsYnpPQ5amEa1hqeJV33gTxwdPWPT9YZmtB8sc55MXoD6r/ACrlNf0DU9AuPK1W0eHJwsnVH+jd
Pw61mV306jj70WcM4J+7I+krS6tb+2E1pPDc27cB42DqfxHFY+oeHkfL2TbG/uN0/A9q8W0TW7/R
JzLp05j3csh5R/qK9V0D4g6XqISO+zYXJ4w5zGT7N/jiu6FaFRWlozllTnTd4lW4sLq33edbyKq9
Wxlfz6VVr0SN45ow0bLJG3dTkGqN1o9lc5Ji2Mf4k4qnR7BGv3RxNNljSVCkqK6nsRmujufDTjJt
pww/uuMH86zpdGv4+sBYeqkGs3CS6GqqRfU5S+0QEbrQ4P8AcY8fgax5rW4hz5sMigdyOPzruZLW
eP78Eq/VTURU8hlPuCKk0UzhaK6i+02zlO5yIG9QQM/hWHdWkMBO2+tmHu200XLUkynRUf2iAMQ0
oGO4BP8AKkOoW0f+rhkmb1kOxfyGSfzqXOK6juThGKlgDtXq3YfU1SvrhQPKhYN/edTx9BUN5ey3
A/esFjXkIvCj8K7PwL8ONQ8RMlzfiSx0vOS7LiSUeiA9Pqf1rCrXUVd6IcYym7Ii+Gngq48SapFc
3sDpo0J3SOykCcj+BfXnqfTjvX0YiKiKiKFVRgADgCo7CzgsLG3tLSMR28CLHGo7KBgVYxXi1qzq
yv0PTo0lTVhuKXFOxS4rE1G4pQKdijFACYpcUuKXFMBuKXFOxRigBMUYp2KXFADcUuKXFLigBMUY
p2KXFADcUuKdilxTAbilxTsUYoEJijFOxS4oAbilxTsUYoATFLilxS4oAbilxTsUuKAG4pcU7FGK
YCYoxTsUuKAG4pcU7FLigQ3FLilxS4oATFGKdilxQA0CqurWMWp6Ve2Fwu6G6geB19VZSCP1qv4h
1CbTLRJYI0fc20788cVn+GdZuL/UJYrplIKbkAGAMHn+dHNZjtdHyHcW01ncS2t0NtxA5ikGMfMp
wf1FcZqkZj1C4VsZLluPfn+te1/G3Sv7L+ImoFRiO7VLleMDkYIH4r+tePeIYtl/vAbEig5PTI44
/SvXvzRUjy4rlk4mXRRRSNAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
AJbaF7idIo8bmPGTXW2VslpbLEpzjktjGT61n+H7MxRG4f70gwo9F/8Ar8V2vg/TF1DUy8ozFAA5
H949hRKSpxcmZ2dSSgjZ8O6DDFaCW/gjkmkwwWRQ2wduD3qDxo0VtZ29tDGkfmsWO1QBhcf1IrrZ
Fwc1wnjefzNTihHSGP8AVuT+gFebh5Sq1ryO2vGNKlaJzF622zkPrhR+P/1s1jV0b2H2y1UeZ5fz
Z6ZzVR9ClH3Jo2+oI/xr6GlpE4oNJGPRWk2jXY6BG+jVC+m3adYGP05rS5d0U6Kle3mT70Mg/wCA
mojwcHrQMKKKKACl3H1P50lFADxI46Ow/GnC4mHSV/xOaiopWQrIsLeTj+PP1Ap4v5R1CH8KqUUu
SPYOVF9dQ/vR/kakW/iPUMKzKKl0ok8iNZb2En7xH1FTRSoWDRSLvHQqeRWHRUuiugnTR6Bo3jTx
BpDKLbUZZYl/5Y3H71CPTnkfgRXq3gf4g2/iG5jsLu2a21BgSAp3Rvjrg9R9K+dbGd/OVGYlTxg1
1/gW7Fl4y0WcnA+0rGf+B/J/7NXDicNGz01Lp1Z05JX0PpfFGKdilxXinqDcUuKXFLigBMVjaym2
5VuzLW3isvXU+SF/Qkf5/KgY/RWzbuv91q0cVkaE37yVPUA1s4oQCYoxTsUuKYhuKXFOxRigCC7t
ILy3eC7gingcYaOVQysPQg15n4l+EdrcF5tAuTayEk+RLlo/oD1H616pilxWlOpOn8LM504z+JHz
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
eTPHjuphRSf++kf8q68I7No5cUrpM8V1KBbe9liT7oOR7AjOP1qtW14mjAlgk53MpU/h/wDrrFrr
e5lF3QUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFTWkDXNzHEvBY4z6DuaANPQL
He4upPuqfkUjqfX/AD3+ldx4V0U6/rMdj5hijKmSRx1Cj09+RWNGixxqiDCqAAPavbfhv4dOj6ML
i6TbfXfzuO6J/Cv17n3PtUV6nsoXW5NKHtp67G/DbRW1vHBAgSKNQqqOwFRyJV91qvIteKz1jzX4
pXeyG0slP32MrfhwP51heCYVaa6mP3lCqPxz/hUXj68+2eKLsKcpBiEfh1/UkfhWr4Pt/K0oykfN
M5b8BwP6/nXvYOHLCKPGxM+abZuUUUV3nMZV9o0UxZ4D5Tntj5Sf6Vz08TwStHIMOpwRXbVV1Cxj
vI8OMOPuv3FBalbc5Ciprq3ktZTHKuCOh7H3FQ0GgUUUUAFFFFABRRRQAUUUUAFUNbhEtg7fxR/O
Pw6/pV+kdQyspGQRg0DWhxFFOkQxyMh6qSPyptWbBWxZNutY/YY/KsetTTDmAj0asqy90ipsfT/w
yuvtngfSnPLJH5RPupxXUYrzv4F3PneEJoM/8e1064/3gH/9mr0fFfN1o8tRo9Gk7wTG4pcUuKXF
ZmgmKhvU32ky+qmrGKCu4EHoRimBxiHa6kdjmuyU7lDDuM1xrjazA9QcV11i2+zhb1QVKGybFGKX
FLiqEJijFOxRigQmKXFLilxQA3FLinYpcUANxS4p2KKAExS4pcUuKYCYoxS4pcUAJilxS4pcUANx
S4p2KMUAJilxS4pcUANxS4p2KXFMQ3FLilxS4oATFLilxS4oAbilxTsUuKAG4pQKXFLigBMUuKXF
KBTAbilxTsUYoATFLilxS4oATFGKdilxQIbilxTsUYoATFLilxS4oATFGKdilxTAbilxTsUYoATF
LilxS4oEJijFOxS4oAbilxS4pcUwExSgUuKXFADcUoFLilxQAmKAKdilxTAbiuf8bxO2jiWNmXyn
BODjIPH88V0eKqazbfa9Ju4AMs8bbfr1H64pNXQ1ued+Frn7Nrtsx6Odh/GuQ/ad0UJPo+txjlw1
nLgdcZZT+HzfnW3G5jkSRfvKQw+o5rovjbYpq/wq1G4Tn7NGl8p9lwT/AOO5P4U8LLlmiMTHmgz4
78QRB7AvwGjYEHHrxj9f0rmK7eaMSxPG2QrqVOPeuKkRo5GRxhlJBHvXqyPPpvSw2iiipNAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACul0KyEEAnfPmyLx7L/AJwazdDsxcXBeVC0SDv0Lenv
XZ6Lp02r6taafbECW4k2Anooxkn8ACfwqlorszm7+6jr/hd4WGr3p1O9U/YrVh5a44lkH9B/P6Gv
ZWFR6Xp8Gl6fBZWi7YYVCr7+59zU7CvGr1XVlfoenRpKlG3UrstUNUnWysLm6fG2GNn59hWmwri/
ire/Y/CskYOHupFhHuOp/QGopx55KJdSXJFyPF2aS5uGdzmWZyzH1Zjk/qa9Ks4FtrWKFekaha4T
w5B9o1m3UjKqS7fQf/XxXoFfS0l1PBkFFFFakhRRRQBBeWkV3FslB9mHUVyd3bvaztE4PB4PqPWu
zqpqdkt5Bt4Ei8o1BUZWORopzoyOyOMMpwRTaDUKKKKACiiigAooooAKKKKAOU1mMR6jKB0bDfnV
KtLxACNQJ9VFZtWjZbBV/S25kX6GqFW9NOLgj1FRUV4sU9j3D9n66P2jW7M427Yp1+vzK38lr2XF
fP3wNnMXjsx5+WeylTHuGRh+imvoPFfP4tWqHZhXemNxS4pcUuK5joExRilxS4oEc3c6VcvdzGNB
sLkgk9s1t6dC8FnHHLjevHBq1ilxSsO43FLinYpcUxDQKXFOxRQAmKXFLilxTAbilxS4pcUAJijF
OxS4oAbilxS4pcUAJilxS4pcUANxS4p2KXFMQ3FLilxS4oATFGKdilxQA3FLinYoxQAmKXFLilxQ
AmKMU7FLimA3FLilxS4oATFLilxS4oAbilxTgKXFAhuKXFLilxQAmKXFLilxQA3FLinYpcUwG4pc
UuKXFACYpcUuKXFAhuKXFOxS4pgNxS4pcUuKAExRinYpcUANxS4pcUuKAExRinYpcUwG4pcU7FLi
gBuKUClxS4oATFLilxS4oENxS4yMUuKXFAHkOtWws9VuoOySHH06iu/0ezTVfBaWN/HuhubaS2kQ
jGUO5Mc/7Nba20ImMohjErdX2jcfxqbFTGPK7lSldWPg7U7KTTNTvLCfJltJ3gYkY3FGK5/HGfxr
h9UjMeoXCtjJctx78/1r3P496V/ZnxKv5FXEd6iXKntkjaQP++R+deLeIYtl/vAbEig5PTI44/Sv
WvzRTPMiuWTRl0UUUjQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACpII/NnjjzjewXPpk1HXRaBZ
LHCLmRf3j/dz2X/6/wDKmlcmTsjTt4Y7aEJGAqgcnGM+5969t+FPhZdO05NWvocX1yMxhxzFH2+h
PX8q4f4ZeGv+Eg1sy3Me7T7TDykjh2/hT39T7fWveyoAwBgCuPGVrfu4/M3wlK79oxhppFPpCK80
9AiIryr413o8zTNPUgkbrlh6fwr+fz/lXrBFfP8A8Sb0X3jK/ZTlIdsC/RRz+pNdeDjzVL9jlxcr
U7dyTwVbDbcXJHJxGp9up/p+VdRWb4dg+z6PbgjBYbz+PNaVfQQVkeO9woooqhBRRRQAUUUUAYvi
G0Uxi5QYYHD47+9YFdjqK77C4B/uE/kM1x1BrB6BRRRQUFFFFABRRRQAUUUUAYHiVcTwN6qR+R/+
vWNW94mX91bt6MR+Y/8ArVg1a2NY7BU1mdtzH9cVDToztkRvQg0mrqw3sejfC+5Nt4+0dgcb5TEf
oykV9N4r5L8O3BtfEOmTA42XUfPoNwB/nX1vweR0PSvBxq95M3wb91obilxTsUuK4jrG4pcU7FGK
AMTXry4tZY1hfarKSeB1p3h25muTc+fIz7duM9utM8Up+7t39yKj8Kt++uE9VU/kT/jS6ldDoMUu
KXFLiqJExRinYpcUANxS4pcUuKAExS4pcUuKAG4pcU7FGKYhMUuKXFLigBMUYp2KXFADcUuKXFLi
gBMUuKXFLigBuKXFOxRimAmKXFLilxQAmKMU7FLigBuKXFOxRigQmKXFLilxQAmKMU7FLigBuKXF
OxRimAmKXFLilxQAmKXFLilxQIbilxTsUYoATFLilxS4pgJijFOxRigBMUuKXFLigBuKXFLilxTA
TFLilApcUAJilxS4pcUAJilxS4pcUCG4pcUuKXFACYoxTsUYoATFLilopgJiloooAz9b1NNJsvtM
sTyLuC4THGfXNZGgeJ21bVTbNbpDGULKdxLEjFaXim3+06BeRgZITeB7jmvOfDlx9l12xlzgeaFP
0b5T/Os5SaaLik0Yf7U2lg2OgauifMkz2cjAdmXeufxRvzr5p8Qxb7HeAuY2ByeuDxx+lfanxq0k
6x8NNahVC00EYuowOpaMhsD64I/Gvji8BeynCAsTG2AO/Fenh3eFux51dctS5xlFFFWMKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKfFG80ixxqWdjgAUAaGh2X2mcySAGKM8gj7x9K66wtZb6+t7S3Vnmn
kWNFUZOSf8n8KpW1vHawiOIYUcknqT6mvbfg14TNrbf29fxFbiYFbZHGCid2x6n+X1pVKipQuyIR
dWdkd7omk22i6XBYWahYolxnHLHux9zVthU7Co2FeK227s9ZKysiAim1KwphFIZU1G4WzsLm5kOE
hjaQn0wM18zR+ZqF+vmZ8y4lyxznBY8/zr3T4q3v2PwTehSA9wUtwPUMfm/8dDV434Uh83WI2I4j
Uv8A0/rXp4CGjfc87Gy95Lsd2AAAAMAcAUUUV7J5wUUUUAFFFFABRRRQA2VBJE6HoylT+NcSylGK
twwOD9a7iuW1yDyb9yB8snzD+tBcGZ9FFFBoFFFFABRRRQAUUUUAZXiMZskPpID+hrnK6bXxnTmP
ow/nXM1SNYbBRRRTKN52ZVZozhxyp9+1fYGkzLc6XaTp92SFGH4gV8exndGp9QK+qfhpP9p8A6DI
TuYWiRsfUqNp/UV4mNj7qZWEdpNHSYpcUuKXFeed4mKMU7FGKAMjxKmdODf3XFZfhlsalt/vIR/W
ukv7UXlo8Jbbuxzjpg1TsNFjtLhZhK7MvqABUtajvoamKMU7FLiqENxS4p2KMUwExS4pcUuKBCYo
xTsUuKAG4pcUuKXFACYpcUuKXFADcUuKdijFMBMUuKXFLigBMUYp2KXFADcUuKXFLigQmKXFKBS4
oAbilxTsUuKAG4pcUuKXFMBMUuKXFLigBuKXFOxS4oENxS4p2KMUAJilxS4pcUwG4pcUuKXFACYp
cUuKXFADcUuKXFLimAmKXFLilxQA0ClxTsUuKAG4pcU7FLigQ3FLilxS4oATFGKdijFACYpcUtFM
BMUtFFABRRSZoAWikopAGaKKTNACOodGRuVYYP0rxy6ja2vJozw0UhX8Qa9kzXCa14Zv73XLua3S
NIJHDB3fGcgZ4HPXNRUV9i4Ox2NsyajpcfmfMlxEA34jmvhnUIkt9RvIIxiOKeSNR7KxA/QV9w6H
aS2GmQW07q7xjGV6YzxXx98UNOGk/EXxDZqmyNboyIP9mRVkH/odduEerRxYpaJnkt9D5F5NHt2h
WOBnPHb9KgrY8SRbbqOUBQHXHHUkev5iseupmcXdBRRRSGFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV0mg2Xk
w+fIP3kg456LWXo9h9rmLSBvITqR3PpXZadY3WqX0Fjp0Jmu522Rxjuev4ADJJ9BVJdWZzl0R2Pw
n8Kf8JFrRurtM6bZMGkyOJH6hP6n8PWvoUrgcdKo+GdFt9A0O10+1jCLGuX7lnPLEnvk1okV5Ver
7WV+h6FCn7ONupAwqNhVhhUbCsDcrsKjYVOwpjCkM8k+OV1iPSrMdSzzH8BtH8zXG+CFP2m6f+HY
B+taPxgvRdeMpIVbK2sKRkejH5j+hWmeDLZo9MkuGGFmlKr77QM/q36V7mDhaETxsTK82b9FFFd5
zBRRRQAUUUUAFFFFABWZ4gg82y8wfeiOfw71p0kiCRGRuQwwaBp2OHoqS5haCd4mGCpxUdBsFFFF
ABRRRQAUUUUAUNcGdMl+q/zFctXV60M6bN+B/WuUqomkNgoooplmzaHNtH9K+lPgVN5vw8to858i
4nj/ADcv/wCz18z6cc2wHoTX0H+zvNu8NarBn/V3u/HpujUf+y15ONXuP1DDu1Wx6rilxTsUuK8o
9EbilxS4pcUwExTGliU4aRAfdhUjrlGB7givOwTHKC3VG/lSbsCVz0TFLihOVBHcU7FMQmKXFLil
xQAmKMU7FLigBuKXFLilxTATFLilxS4oAbilxTsUuKAG4pcUuKXFAhMUYp2KXFADcUuKdilxQA3F
LilxS4pgJijFOxS4oAbilxTsUuKBDcUuKXFLigBMUuKXFLimA3FLilxS4oATFLilxS4oAbilxS4p
cUwExRinYpcUANxS4p2KXFADcUuKdijFAhMUuKXFLigBuKXFOxRigBMUuKXFFMBMUtFFABRRSZoA
WikooAM0UUmaQC0UmaSgBc0ZpKM0AFFJRQAuaSkzXP8AjO6vLPTo5rKZovn2uVA6EcdaTdtRpXOh
r5t/ac0zyPFelamqnbd2hgcjoGjbI/EiQ/8AfNeneFNTuH1+IXVxLKJFZPncnnqP5Vl/tHaSb/wL
HexpufT7hZTjsrZU/hzmtcNP30zLEQ9xnyX4kUfY42wNwkwD+BrnK7HUoGuLKWJPvEZHuQc4/SuO
r0ZHHTegUUUVJYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFS20L3E6RR43MeMmoq6fRbD7LH5smfOdenTaPT600rkyl
ZF63iW3tkjBGEXBOMfU19C/Bfwb/AGRpY1nUIsaheIDGrLhoYjyBz0J6n8BXD/B7wM3iK/TVtRj/
AOJRayfKrZHnyLg4HqoPX3GPUV9ElcdK5cVV+xH5m2Gpa88iuwqNhU7CmMteedpXIqNhU7CmMKBl
dhUZFWGFZ2u3Y07Rr68Jx5ELyD6gHH60rX0HeyufMvia8N/4j1S6zkS3MhU+qhiF/wDHQK9F02x+
yeCtD4wWVpDn/pod9eUWsDSGG3Q/O5WMH3PFe8eILbyNFtI0GFhKrj0+XFfTYeGj8j56rL3l5nM0
UUVoAUUUUAFFFFABRRRQAUUUUAc/4kg2yxzgcMNrfUdKxq6zWoxJp0vGSvzCuToNYvQKKKKCgooo
oAKKKKAKWsf8g6b6VyldXrH/ACDpvpXKVSNIbBRRRTLNLSz+6cejV7n+zlP++1y2z1EcuPzFeE6U
eZB9DXsX7PNx5fi2/t88z2mf++W/+yrzsYvdkTTdqqPoHFLilxS4rxj0hMUuKXFLigBuK89vl2Xt
wvo7fzr0XFcDribNWuh/t5qZlRO2sG8yxtn/AL0an9KsYqloLb9HtD/sY/I4/pV/FUiWJijFOxS4
pgNxS4p2KMUAJilxS4pcUCG4pcU7FLigBuKXFOxRigBMUuKXFLimA3FLinYpcUANxS4p2KMUCExS
4pcUuKAExRinYpcUwG4pcUuKXFACYoxTsUYoATFLilxS4pgNxS4p2KUCgBuKXFOxS4oAbilxS4pc
UCExS4pcUuKAG4pcUuKXFACYoxTsUUAJilxRRTAKKKTNAC0UmaKADNFFJmkAtFJmkoAWjNJRmgAo
pM0UALmkpM0ZoAWkzSZpM0DHZpM0maTNAC5rK8UQ+foN4uOVTzB/wHn+QNaeajmRZYZI2GVdSpHs
Rik9QR5Rp8xt763mBxskU/rXoXjDTP7c8J6vpq/eu7WSNP8AeK/L+uK83njaKSSJ/vISp+o4r1q1
kWW2hkTlWQEfTFRSdmVUV0fCkbb41bBGQDg9RXFTRmKV42wWRipx7V618R9HbQvHOs2RGIzcNPF6
bJCWGPYZI/CvMtcj8vUpDtCq4DDHfjk/nmvZbuk0eVDRtMz6KKKk1CiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiirOn2jXly
IlO0YJLYzgf5xQGxoeHrNZHNzJtIQ7VB/vcHNdn4c0a78Q63a6Xp65nuGxuxkIo5Zj7Af0Hesu0t
yqw21tGzuSscaKMs7E4AA7kk/ma+pfhT4BTwfprz3hSXV7oDznXpGvURr9D1Pc/hSq1FSj5kQg6s
vI6bQtKh0TRbLTLXJhtYliUnqcDqferjCrDCo2FeU9Xc9NaFZhUZFWGFRstSMrsKjYVYIqNlpAVy
K434tXP2TwHqR/56hYf++mArtiK87+OMqx+CGib70tzEF/Bsn9BWlFXqR9SKrtTl6Hi/g63F14p0
yIjKmYE/Qc/0r3LXo/N0q4HcDd+RryX4U2/n+L0cj5YIJJc+/Cj/ANC/SvZZ4/OgkjP8alfzFfUY
aPuM+crytNHnlFFFQbhRRRQAUUUUAFFFFABRRRQAkiCRGRujAg1xDKUdkb7ykg/UV3Fclq6eXqM4
HQnd+dBcCnRRRQaBRRRQAUUUUAUtZONNm+g/nXKV1WtnGmS/h/MVytUjSGwUUUUyy5ph/fsPVf6i
vUPgdN5PxFtBnHmwSxfmAf8A2WvLNPOLpfcEV33wtn+z/EXQJOcfaChA77kZf5kflXFildP0I2qI
+sMUuKXFLivDPTG4pcU7FLigBuKYbeIuXMUZY9WKjJqXFZmq6zDps6xSxSOzLuG3HTOP6UPQDSCg
DAGB7U7FU9J1CPUoGliR0CttIar2KAG4pcU7FLigQ3FLilxS4oATFLilxS4oAbilxTsUuKYDcUuK
UClxQITFLilxS4oAbilxTsUYpgJilxS4pcUAJijFOxRigBMUuKXFLimA3FLinYpQKAG4pcU7FLig
BuKXFLilxQAmKMU7FLigQ3FLilxS4oATFGKXFLQAmKXFFFMAooozQAUUmaKAFzSZopKQC0UmaKAF
pM0lGaACijNJQAuaTNGaTNAC0maTNGaBi5pM0maTNADs0mabmkzQA7NJmm5ozQAuaTNJmkzSAdmk
zSZpM0AZjaDpz3Ek0lvvd23HcTjP0rSjRY41SNQqKMKo6AVUv9StbAKbuUJuztGCScVFpmrW2pGU
Wxf93jO4Yzmloh6nhP7S+meT4g0rVFX5bmBoXb1ZDkD8mr5/8Sw/LDOMZzsPP4j+tfW/7QmjnU/A
Ru4x+90y4W547oQUcfQBt3/Aa+WdUg+0WMqAZYDcvGTken8vxr0qD5qfoefWXLUuchRRRVjCiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKAHxRvNIscalnY4AFdbp1olnbhFA3kAu3qf8Kp6DZeTD58g/eSDjnotel/CrwLL431xo5jL
FpNt811PHwSe0ak/xH9B9RVXUVzMyd5PlR3X7O/hCK4E3ie/iJMUrQWSuvHAG6Qf99FR9Gr3ZhRY
WNvp1jBZ2USQ20CCOONBgKo4AqRhXmVZucrnoU4KEbFdhUbCrDCo2WsjQrMKjYVYZajYUDKzCmMK
sMKiYVIyuwrx79oS6222i2eeXkknx/ugL/7PXspFfPnx7uzN40t7UY2W1mh99zsxP6BK6MLG9RGG
JdqbHfBi3Pm6rcnpiOJf1J/9lr08da4n4R2wh8MPN3uJ2b8sL/Su2r6igrU0fOVnebPPbkBbmZR0
DsP1qKrWqRGDUbiM5OHJBPvz/WqtYPc6lsFFFFIYUUUUAFFFFABRRRQAVy+vf8hJ/wDdFdRXI6tJ
5uozkdA20fhQXDcqUUUUGgUUUUAFFFFAGfrxxpkg9Sv8xXL103iA408j1YVzNUjWGwUUUUyiazOL
qP6113hGRovF/h9k6/2lar+BmUH9DXH25xPGfcV13hX/AJG3w/8A9hS0/wDR6Vy4gzfxI+ysUYp2
KXFeAemNxS4p2KAKAExXIeN1xd2resZH5H/69djiuU8djDWJ7kSD/wBBqZbDjuTeB2za3S+jg/pX
S4rlfArc3a9vlNdbinHYJbjcUuKdijFUITFLilxS4oENApcU7FLigBuKXFOxRimAmKXFLilxQA3F
LinYoxQAmKXFLilxTAbilxTsUoFADcUuKdilxQA3FLilxS4oATFGKdijFAhMUuKXFLigBMUYpcUt
ACYpcUUUwCiijNABRSZooAXNJmiikAUUmaM0ALSZpKM0ALSUZpKAFzRmkzSZoAWjNNzRmgBc0maT
NJmgY7NJmm5pM0AOzSZpM0maAFzRmm5pM0gHZpM0maTNAC5ozTc0maAHZpM03NITQA7NJmm5pM0g
Od8dRb9Pt5QOY5MfgR/9YVl+CJtmpSx9pI/5Gui8SRefotyvdV3j8DmuL8PzeRrNq3Zn2H8eP61m
9JXNFsdv4ks4tR8PanZXAzDPbSRuPUFTmviiBi8MbHqVBP5V9xyAOjI4yrAgj2r418Xab/Y/inVd
PH3be5dF/wB3OR+hFejg5bo4MWtmeYyI0cjI4wykgj3ptaOvRCLUGK4xIofAGMdv6Z/Gs6uhmad1
cKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAVraJp/nyedOmYV+6D/Ef6j/PrVbS7Fr2YjO2NMFz3+grrbeEkxQW8bMxIjjReST0AHvV
JGc5W0Rp+GtB1DxLrVvpWkRb7qc43H7sa93b/ZHX36Dkivsrwl4csvC2gW2lacmIoV+ZyPmkc9WP
uTXLfBfwEPBuhNPfhX1m9w85A4iXtGD7dSe5NeiEVxV6vO7LY6aFLkV3uQMKjYVYYVGy1znSV2FR
sKnYUxhUgVmFRsKsMtRstIZWYVGwqwy1GwpDK7Cvl34s3BufiJrTZyEkSIe22NR/MGvqYrzXx/4t
uzeeJtYuWOWe6lJ/BiP6V14Ne82cuLfupHs3gGD7P4Q01cYLR7z9Sc10FVNHgFtpNlABjy4UXH/A
RVuvqIq0Uj52Tu2zlPFcOy+jlA4kT9RWHXW+Kod+nrLjmNx+R4/wrkq5qitI6qTvEKKKKg0Ciiig
AooooAKKKKAEdgiMx6KCTXDkliWbqeTXYam2zT7hh/cI/PiuPoNIBRRRQWFFFFABRRRQBleIziyj
HrIP5GucroPEp/0eAf7ZP6Vz9UjWOwUUUUyh0fEin3FdPpMog1jTpyQBFdQyEk4Hyup/pXLA4Oa2
bh2jtZJIzh1Qsp9CBkVhXWxnU6H3QRyaMURsJEWRRgOAwz70/FfPHpjcUuKXFLigBMVzfjGxubw2
X2WF5du/dtHTO3H8jXTYpcUmrqwJ2OW8Iafd2VxcNdQNGrqACxHUGuoxTsUuKaVlYG7jcUuKXFLi
mITFAFOxS4oAbilxS4pcUAJijFOxS4oAbilxTgKAKYDcU7FLilxQAgFLilxS4oAbilxTsUYoEJil
xS4pcUANxS4pcUtACYoxS0UwCiijNABRSZooAWkzRRSAKKTNGaAFpM0lFAC5pKM0lAC0ZpM0maAF
ozTc0ZoAXNJmkzSZoGOzSZppNJmgB2aTNJmkzQAuaM03NGaQC5pM0maTNAC5ozTc0maAHZpCaaTS
ZoAdmkzTc0maQDs0hNNzSE0DHZpM00mkzSAcTSE03NNzQAlwvmwSRnncpH6V51bWd35ytDbysyMC
CFPUGvRSaQtScblJ2Hbs89M180fH7TjZ/EBrpUxFfW0cu71dcow/JUP419KE15D+0Zpiz6BpuqKv
7y0nMTN6JIOn/fQWunDS5ai8znxEb035HzT4ljBtoZOdyvtH4j/61c9XV63D5unSYXLJ8456Y6/p
muUr0JbnHDYKKKKksKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKltoXuJ0ijxuY8ZNNijeaRY41LOxwAK6rTLFbOEA7WlP3mx+g9qaVyZSsS2Vslp
bLEpzjktjGT619D/AAB+HZi8rxTrkOJCM2EDj7oP/LUj1PYdhz345b4EeA4PEuoT6trdr52k2vyR
RyLmOeXvkdwv5ZPtX08gCqFUAKBgAdAK58RWt7kS6FK/vyJKWmA06uM7AIpjCpKQigCuwqNhVhhU
bCkMrsKjYVYYVGwpAVmFRsKsMKjYUhlC+by7O4fptjY/oa+NIB/aF7ECDm6mA/F2/wDr19cePrk2
PgnXbpThorKVx9Qpr5Y8HQCbxRpERGQLhGx/u/N/7LXfgo3v5nDjHax9CHqaSiivpTwCtqUPn2Fx
FjJZDj69q4GvR/rXA6jD5F/PH2Vzj6VhWWzOig90VqKKKwOgKKKKACiiigAooooAp6v/AMgy4/3f
6iuSrrdYONMn9xj9a5Kg0hsFFFFBYUUUUAFFFFAGH4mPFsP94/yrDrZ8Sn99APRSf1rGq1sax2Ci
iigoK2ZPntGHXKH+VY1bUXzWy+6f0rGt0Mqux9vaG/naJp0vJ320bZPXlAavYrJ8GyCbwjokgJO6
yh5PrsGa2MV889z0lsJilxS4pcUDExWJ4p1K50u3gktRHl3KtvXPat3Fcx4+X/iW2zek2P8Ax0/4
VMthx3IvDWu3moap5FyY/LMbMAq45GP/AK9dZivPfBZxr0Y9UYV6JiiGqHJWY3FLinYoxVkiYpcU
uKXFADcUuKdilxQA3FLinYpcUANxS4pcUuKBCYpcUuKXFADcUuKXFLQAmKMUtFMAooooAKKTNFAC
0maKKQBRSZozQAtJmkooAXNJRmkoAWjNJSZoAWikzSZoAXNGabmkzQMdmkzTc0ZoAXNJmkzSZoAX
NGabmjNIBc0maTNJmgB2aTNNzSZoAdmkzTSaTNADs0mabmkzSAdmkzTSaTNAx2aQmm5pM0AOzSE0
0mkJpAOzSE0zNITQA/NITTM0hNAx2aQmmk00mgB5Nc7q+vTWd7LbxwodmMMSecgH+tbxNcj4sj26
ikg/jjH5g/8A6qmT0Gje0O/kvrMyTbd4cqdowKxvijYf2l4C1mEJudIDMg9CnzZ/Q1J4Ql4uYs/3
WH6j/Ct6ZEnieKZQ8cilHU9CCMEU4Ss0xTjdNHxXcoZraWNSMuhUZ9xXFV395aNp97c2UhJe1me3
YnqSjFSf0ridSi8m/nTCgbsgL0API/nXsyPKp9itRRRUmoUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRXRaJpzQf6ROMSEYVSPuj1+tNK4pOwui6d5KCe
dCJicqCfujHp616H8NfBtz4014Wyb49Pgw93cAcIOyg/3j6fU1Q8EeGrnxZ4ktdLti0cbndPOF3C
GMckn3OMD3PpmvrzQdJstD0yGw0yBYbeJQoAHJ9ye596yrVvZrlW4UqTqPmexa0bTrTR9MttP02B
Le0t0CRxoOAP6k9Se5q+DUINPBrgvc7tiYGlBqNTTwaAH0tNBpaAAio2FS0hFAFZhUbCrLComFIZ
XYVGwqwwqNhSA4L4zTfZ/hrrbEgB40i64++6r/Wvnv4bReZ4z08/8897/wDjhH9a91/aDfZ8NrlO
f3t1Av5SBv8A2WvFfhMAfGAyOltIR+a16mAW3qedjnv6HtFFFFe+eIFch4pi2amHA4kQH8Rx/QV1
9c54wU/6I2OBuBP5VnVXumtF2kc3RRRXKdYUUUUAFFFFABRRRQBS1r/kGzfQfzrk66zWv+QbN9B/
OuToNIbBRRRQWFFFFABRRRQBzniM5vEHon9ayq0tfP8AxMSPRRWbVo2jsFFFFAwrZtubWP8A3RWN
WzZ/8e0f0rGtsjOpsfZ3w4cyeAtAZsZNnH0+mK6TFcr8KMn4b+HSTk/ZF5P411mK8Ca95noQ1ihu
KXFLilxUlCYrmfH/APyCbf8A67j/ANBauoxVDW9LXVrRYHlaIK4fIGex/wAaUldDWjOH8Gf8h+H/
AHW/lXo+KwNJ8Lxadfx3SXMkhTPylQM5GK6LFKCaWo5O7G4pcU7FLirJG4pcUuKXFAhMUYp2KXFA
DcUuKXFLQA3FLilopgFFFFABRSZooAWkzRRSAKKSjNAC0lJRQAuaSjNJQAtGaSkzQAtFJmkzQAua
M03NITQMdmkJpM0maAFzSZpM0maAHZpM0maTNAC5ozTc0maQDs0maTNJmgBc0ZpuaTNADs0maaTS
ZpAOJpM00mm5oGPzSZphNITQA4mkzTSaQmkA7NJmm5pCaAHZpCaZmkJoGPzTSaaTSE0AOzSE0wmk
JpAPJppNNJppNADyaQmmFqaTQA8mue8WplLeT0JWt0mqOrWZvrcRhwhDA5IzSeqGjE8LybNRZezx
kfqDXU5rGsNGFpcJN55dl7BcD+dapNJaDZ8yfFqx+wfEHVQBtScrcKPZlAP/AI8GryrxEirqAKjB
ZAT7nkf0Fe/ftB2ezV9KvVXAlhaJmx1KkEfoTXhfiaP5YJQowCVLfyH869elLmppnlzXLVaMGiii
qKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA2dE04u6
3M4YKpBRSMZPXP0rprSH7TdQwebFD5jhfMmfYiZ7sewFclp+rTW2xJP3kI4weoHsf8a3rK+gvAfK
Y7gMlWGCKtWMZp3uz66+F2gaNoPhyNdFu7bUGlObi9gkVxK464IJAA6AV2qmvi7w5r2peHNRW90e
5aCUH5lySkns69Gr23wh8bdPu3jtvEts1hKeBdRfPCT/ALQ6r9eR6kVw1cPO/MtTrpV4W5Xoe0Ka
eDVGwvba+tkuLKeKeBxlZI2DKfxFW1Ncx0kympAagBp4NAEwNOBqMGnA0xDxS00UtACEVGwqamsK
AK7Co2FWGFRMKQzyX9o8lfAVuASA2oRAj1GyQ/zArx34S/8AI4f9usn81r179piQx+B9NUDPmapG
p9v3Mx/pXkPwl/5HD/t1k/mtergPs+p5mN3foez0UUV7p4wVkeJ4vM0wsBzGwb+la9QX8XnWU8f9
5DUyV1YqLs0zz+iiiuM7gooooAKKKKACiiigCnq//IMuP93+tclXW6v/AMgy4/3f6iuSoNIbBRRR
QWFFFFABRRRQBzGv/wDISb/dFZ1XdabdqU3tgfpVKrRstgooooGFbFlzax/571j1r2P/AB6x/j/O
sq3wmdTY+x/g/k/DHw2SST9kH8zXY4rkPg6P+LX+G/8Ar0H8zXZYrwJ/Ezvp/ChuKXFOxS4qSxuK
RiqDLMFHucU/Fcr8Rcf2Vaqepnz/AOOt/jSbsrgtWdQpVhlWBHsadivNfAyZ8QxEAcIx/SvTMUov
mVwkrMTFLilxS4qhDcUuKWimAYooooAKKM0lAC0ZpKKQBRSUZoAWkopKAFzSUZpM0ALRmkpM0ALm
ikzSZoAXNGabmjNAxc0maTNJmgB2aTNNzSZoAdmkzSZpM0ALmjNNzRmkAuaTNJmkzQA7NJmm5pM0
AOzSE00mkJpAOzSZppNJmgY4mkJpuaaTQA8mkzTCaQmkA4mkzTSaTNADs0maaTTc0DHk0maYTSZo
AcTSE0wmkJpAPJppNNzSE0AOJpCaYTSE0APJppamE0hNIY8mmk03NNJoAeTSE0wmmlqAHk0hamFq
inBaGRR1KkfpSAmLgdSBSFq4mNiZo2Yk4YHk12O7NJO42jzX4+2pm8LWN0oz9nuwGPorqR/MKPxr
5412LzdOcgMShDgD8j+hNfU3xUtRefD/AFlG/wCWUIuP+/bB/wD2WvmS5jMttLGuAzoVGfcV6mEd
6djzsSuWpc4qiiithBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFKrFWDKSGByCO1JRQBqWesTxOonPmx8A5HzAex/xregu7efb5UyMW6LnB/LrXG0U1Ihw
TPU/DPijWfDFwZtDvnttxBeMqHjf2ZTx+Iwfevb/AAf8bdNvgkHiSD+zbjHM8eXhY/zX8c/U18m2
GqzWo2N+9j/useR9DW7Z6lb3b7Iyyv2VhgmpnThU33CMp09tj7m0LXNM121Nzo19b3kKnazQvnaf
QjqPxrUBr4d0nVL/AEe8F3pN5PZ3I48yFsEj0I6MPYgivYfCfx1uIAkPiiw+0JwDc2gAb6lCcH8D
XNPCyWsdTohiYv4tD6EU08GsHwv4m0jxPY/a9EvY7mIHawGVdDgHDKeQcEdRW2prmaa0Z0J31RKD
ThUYNOBoAeKWmilFMBrCo2Wp6YwpAeI/tQtjwxoUeTzqJfHbiGQf+zV5T8Jf+Rw/7dZP5rXpv7Ur
j7H4ciyN3mzvj/gKj+teZfCX/kb/APt1k/mtergvs+p5mMesj2eiiivcPHCiiigDgNQh+z308WMB
XOPp2/Sq9bXiuLZqCSDpIn6isWuOSs2jug7xTCiiipKCiiigAooooAraku/T7gf7BNcfXbyrvjdP
7ykVxA6UGkAooooLCiiigAoooNAHH6i26/nP+2ar0+Zt00jerE/rTKs3QUUUUAFa9j/x6x/j/Osi
tiy/49Y/x/nWVb4TOpsfZXwcH/FrvDf/AF6D+ZrssVx/wcUj4X+GgRg/ZB/M12WK8CfxM74fChMU
uKXFLipKG4rkPiO2LOyT1kY/kP8A69djXE/Eon/iWjsfNP8A6BUz+EqO5m+AE3a+T2WFj+or0ivP
vh2mdVuH/uxY/M//AFq9BpU9gnuFFGaTNaEi0ZpKKQBmiikzQAtJRSUALmikzSZoAWjNJSZoAXNF
JmkoAdmkzSE0ySRY1LOwVR3JwKBj80mapPqtgn37y3H1kFQPr2mJ1voD/utn+VK6CxqZpM1kR+Id
MkmSKO53SOwVQEbk/lWrmhO4WFzSZrK1fXLXSpES4WZmcbh5ag/zIrNbxjY/wwXR+qqP/ZqTkkOz
OmzRmuVPjK2xxazn6kVb0fxFHql59nS3eM7S2SwPSjmQcrN7NJmkzXM6n4o+xX81t9l3+W2N2/Ge
PpQ3bcSVzp80ma40+MXzxZrj/f8A/rUn/CYyf8+af99mlzorlZ2WaTNZuh6idTsjO0YjIcpgHPTH
+NWbyc29pNMBuMaFseuBTv1FYsZpCa4//hL5P+fRf++zQPF7fxWY/B//AK1TzofKzryaTNckfF+B
n7H/AORP/rV1IbIBpp32E1YfmkzVDVdQXTrXz5EZ13BcKeayR4rtT1t5x9Mf40m0h2bOkJppNYA8
U2J6x3I/4Cv+NWLXXrK6nSGIyCR+ACmKLoLM1iaQmmk1VuL+1t5fLnnjjfGcMccUwsWyaTNVFv7R
/uXMJ+jipBNG33ZEP0YUXAmzTSaZuB6HNITSAeTSE0wmkJoAcTSE0wmkJoAeWppamk00mkMeWpCa
ZmkJoAcTSE0wmkLUAPJppamFqaTSAkLU0tTCaQmgY4mkJppNNJoAeTTSaaTTS1IDkpV2Suv91iK6
yJ90SH1UVzF8Nt5MP9o1u2L5s4T/ALIFSimZ/jiJ7nwZrkEQ3SSWUyKPUlDXy6DkZHSvrS5HmW8q
EZ3IRj6ivk6WH7PNJB3iYx/kcf0r0sC9Gjz8YtUzhGUqxVgQwOCD2pKs6kjJqFwGGDvJ/A8iq1dR
mgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
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
kP75ST81BrtwL99ryOPGL3Uzy7X4ympOxxh1DD8sf0rOrZ8Sx4nhkz95SuPof/r1jV6D3OWOwUUU
UigooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigCa3uZrZ90EjIe+Oh+orTg12VVxNEshwMEHb+dY1FO4nFPc6611G2uQNkgVicbX
4P8A9f8ACtjSdUv9Huhc6Te3FnODndC5XJ9x0P415zVi3vbi3GIZmVcY29QPwNPm7kOn2PpHQ/j5
4hso2TVtMsNU4AR0ka1cf7xAcN+AH416X4T+NPhnXHjgvWl0m8bjZcgGMn2kHH54PtXx5a65G5C3
KGM4+8OR+XUfrWlb3UFyP3MqvxnGecfTrWboU5bFKtUjuel/H2+j1D4lXUkEiSRR20MSsjBlONxy
CP8AepnwbXOrai2fuwLx9WNeegADA4FejfBkD7dqh7+Ug/U114aPLOKOXESvFs9Uooor1TzQoooo
AR1DoynowxXnkqGOV0PVWK/lXolcPrkflarcDoC24fjWNZaJm9B6tFCiiiuc6QooooAKKKKACsfx
JDugjmHVDtP0NbFQ3sQntJYz/Epx9aBp2ZxlFHTr1ooNgooooAKo6223TZf9rA/Wr1ZfiJsWSr/e
cUIa3OboooqzYKKKKACtn7lpn+6n9KxgMnHrWzcRtLayRRjLuhVR6kjArGt0M6h92eGIvI8NaRD/
AM87OFPyjUVpU2OMRRpGv3UAUfQcUua8Bs9BC0UmaSkMXNeYeJPO1DxBdm3ikl2ME+RS3QY7V6dS
dOnFTKPMNOx5bB4d1WbG2zdQe7kCtG38Gag/+tkgi+pLfyr0Gip9miudlfToGtbC3t3cO0UYQsO+
BjNRavp0Oq2f2a4Z1TcGyhAOR9QauZpM1fkSYMPhLSY/vRSyn1eQ/wBMVfh0bTYceXZQA+uzJq/m
kzRZBdjUhijxsiRceigU/NNzSZoAdmkzTc0ZpgLmkzSZpM0AOzSZpM0maQC5ozTc0maAHZpM03NJ
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
PpUhamFqaWoAhvAWYEA4ApbU4RvrTy1NyB0FAEhavL/jSm59Hl5+USrn67D/AEr0otXnXxjANhpr
dxMy/mp/wrowrtVRz4n+Ezx/XP8AkFzf8B/9CFcpXV65/wAgub/gP/oQrlK9eW559PYKKKKksKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAqxpylr+3Cgk+Yp4+tV6v6H/yFIf+Bf8AoJoQnsdXXqvwZAGm6me5mT/0
GvKq9Z+DYH9jX5xybgf+giuzDfxEcNf4GegUUUV6RwBRRRQAVg+Lo82kEndXx+BH/wBYVvVl+JU3
6TIe6sD+tRNXiy6btJHGUUUVyHaFFFFABRRRQAUUUUAYPiZf3lu3qGH8qxK3/Ew/dQH/AGiP0rAo
NY7BRRRQUFcvrr7tSkH90Bf0z/WuorkNSbfqFwf9sj8uKaLhuVqKKKo0CiiigC3pi5nZv7q16t8B
NPF/8TdPkZSVs4pbnPbIXYB/4+fyrzDS1xG7epxXvv7L+n7tQ13UmAKxxx26n0JJY/piuDFSspEQ
XNUSPoTNJmkzSZryD0Rc0maTNITjrx9aAHZpM1z+reMvDWkOY9S1/S7eUf8ALJ7lN/8A3yDn9K5b
VPjN4QsuILue9bt9ngbB/E4qlCT2RDnFbs9IzSZrw3Uvj/bqD/ZmgzyMOn2mdUB/753fyrltT+OP
im5Yixg02xjPpE0rj/gRIH/jtaLD1H0M3iILqfTeaa7BFLOQqjuTgV8f3vxI8Z3pbz/Ed6qn+GAJ
Dj/vhQf1rAu9W1K8cvd6jfTsepkuHbP5mtFhH1ZDxS6I+zb3X9IsUL3ep2UKjqWmX/Guav8A4qeD
LLdv1yGbbwfs6tN/6CDXyQVTcWIXcepPWmNPEvWRPzrRYRdyHiZPZH01ffHTwtACba31W89PKgVP
/Q2Wuevv2gCDjT/DRcf3ri+2EfgsbfzrwNryAfx5+gqNr+MdFY1qsHHsT7aqz2m6+PGvSqRb6Vpt
uT0JZ5CP5D9KyZPjR4xZiUn09B6fZQf615Q2of3Y/wAzTGv5T0VRWiwi/lJ5qr6nqs/xi8ZTRlDe
2kef4o7YKfzzWRc/EXxhcgiTxBdhT/CgRf8A2XNeeteTn+MD6AUw3Ex6yN+eKtYVLog997s6668R
a5dnNxrOpv7fapAPyBxWVcsLk5um84+sp3H9awzI56ux+ppuSe9aKhbqLkb3ZtBoYxgGNR7YFIbm
Ef8ALRaxqKr2K7h7NGsbyAfxE/QGmm+hHTcfwrLop+xiP2aNI6gnZH/HFNOojtF/49/9as+in7KI
ciLx1Bu0Y/OkOoSdkT9apUU/Zx7D5EWzfy+i/lSfbpvVfyqrRT5I9g5UWfts/qv5UfbZ/VfyqtRR
yR7ByrsWfts/qv5UfbZv7w/Kq1FHJHsPlRY+2Tf3h+VH2yb+/wDpVeijkj2DlRY+2Tf3/wBKT7XP
/wA9DUFFPlj2DlRP9rn/AOehpftc39+q9FHLHsHKix9sm/v/AKUfbJv736VXoo5I9g5UWfts394f
lR9tn9V/Kq1FLkj2DlRZ+2z+q/lR9tn9V/Kq1FHJHsLlXYtC+m/2fypwv5P7qVToo9nHsHKi8NQb
vGp/GnDUfWL8m/8ArVn0UvZR7ByI0hqEfdHH5U8X0J6lh+FZVFL2MRciNgXUJ/5aAfWneZC/G5G+
tYtFT7FdxezR0VtcTW2PslxLDjp5MhT+RrVtfFGvWuPI1e9XH96Tf/6FmuJBI6EinrNIvSRx+NRL
Dp7goNbM9Lg+JHiaFNv2yGT3khDGrMHxR8RI4MrWcy/3TDt/ka8vW8nH8efqBUi6hIPvKp+nFZPB
x/lRXNVXU9jtfi9chgLvRoXXu0VwVP5FT/Otyx+KuiTkC6gvbQ9y8Ydf/HST+leDLqCH7yMPpUq3
kLfxY+orCWBg/slLEVon0pZeLtCviBb6pbFz/Az7W/I1rxzxyruikSRfVWBFfLKvHIPlZW+hzVm1
u7m0YNaXE0BHQxSFcflXNLALozVY1r4kfTxamlq8BsfHPiKzIxqLToP4LhFcfn979a6bTfilMAF1
PT1f1e3bH6H/ABrCWDqR21No4um99D1YtTS1cjYfEDQbsASXTWrek6ED8+ldDaX1tewiayuIbiI9
HicOPzFc8qcofErG8Zxl8LLZamlqYWphaoLJC1NLUwtTS1ADy1NLUwtTS1ADy1cH8XQW0SxP926y
f++GFduWriPiuc6Fbf8AXwP/AEE1vhv4sTDEfw2eOa5/yC5v+A/+hCuUrq9c/wCQXN/wH/0IVyle
xLc86nsFFFFSWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVf0P/kKQ/wDAv/QTVCtbw3/x/Sf9cz/MU1uKWx0l
ev8AwfUjw5ct2N0wH/fK15BXsfwiXHhWQ/3rpz/46o/pXZhvjODEfAdtRRRXonCFFFFABVTVk36Z
cr/sGrdR3K77eVfVCP0pPYa0Z55RR0oriO8KKKKACiiigAooooAx/E3/AB6w/wDXT+hrnq6DxN/x
7wj/AG/6Vz9BrHYKKKKCgzjk1xUrbpXY92JrsbltlvK3opri6qJpAKKKKZYUUUqqWYKOpOKANm1T
ZAi98ZNfUXwKgtfDvwwhv9SmhtPt0sl47yuFGzO1Dk9tqBv+BV8xVLcXM9zHFHcTyyxwqFjR3LKg
AwAAeB+FebVh7RWuZU6nJLmsfTuu/GzwnppZLN7vVZR2tIvk/wC+3IUj6E1wmsfHzVJg6aRo9taA
/dknlMrD3wABXiUlzEnVwT6Dmq8moKPuIT9aUMJHtct1qktju9X+JHi7VdwuNbuYoz/yztsRAfQj
5h+dc7eapqV7AYb/AFTUruA9Y7m8klQ/8BZiK5572ZuhC/QVC8rv952P1NdMcPbyJ5ZPdmvvhhXa
CiAdhxUT3sK9CzfQVlUVqqK6gqaNBtQH8Mf5momvpT0Cr+FVKKpU4roVyIma5mbrIfwpnmyf89H/
AO+jTKKqyQ7IUknqSfrSUUUxhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRg+lABRUyWtxJ9yCU
j12HFTppd43/ACxKj1JFAropUVqLol0fvNGPxzUq6DJ/FOo+i0XQcyMait5dBT+KdvwWpF0OAdZJ
D+VK4uZHO0V0o0W0H/PU/wDAv/rU8aPZj+Bj/wADNFw50cvRXVDSbIf8sPzdj/WnDTbMf8u6/iTR
cXOjk6K67+z7T/n2i/75pfsNp/z7Q/8AfAouHOjkKK7EWdsBxbwj/gAo+yW//PCL/vgUcwc5x1Fd
j9kt/wDnhF/3wKPslv8A88Iv++BRzBznHUV2P2S3/wCeEX/fApDZWpPNtCf+ACjmDnOPorrzYWh/
5dof++BSHT7Q/wDLvH+AouHOjkaK6w6ZZn/l3X8CRTDpFkf+WJH/AANv8aLhzo5aiunOjWZ6I4+j
mmHRLU9DKP8AgX/1qLj50c3RXQtoUJ+7LIPwFRtoI/hnP4rRcOZGFRWw2hSj7syH8CKibRbodDGf
+BU7ofMjMoq6+l3i/wDLEkexFQvaXCfeglHvsNAXRBRSlSDggg0lAwooooAKcJHHR2H402igCdLu
Zf48/WrCagf40z7g1QoqXCL6EuKZrJeQv/FtP+0Kt21xJA5ktJ5InPV4ZCp/MVz1KrMpyrEfQ1m6
CexLp9juNO8U61p5/c6hM691mPmA/nz+tdbpfxLwFTVbJiehlt2H57T/AI15Xpkks8rq7blVS3Sr
busalpGVVHUscCuOrhYN+8hqrUpuyZ7xpfiXStUA+yXsZc/8s3+Vh+BrULV86KQwVlII6gj+db+l
eLdY00qqXRnhH/LKcbx+B6j864amB6wZ0wxv86Pay1NLVxej+PbC7Kx3yNZynjcTuTP17fjXWJKk
iB43V0YZDKcg1xTpypu0kdkKkZq8WTFq4r4pnOh23/XwP/QTXXlq434nnOiW3/Xcf+gmrw38WJGI
/hs8j1z/AJBc3/Af/QhXKV1euf8AILm/4D/6EK5SvZluebT2CiiipLCiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AK3fDH/Lz/wH+tYVdH4bUfY5GwNxkwT+Apx3Insa9ez/AAnUDwgh/vTyE/mB/SvGK9r+FQA8F2xH
VpZSf++yP6V2YX4/kcWI+A66iiivROEKKKKACiiigDzuVdsrr6MR+tMqxqC7L+5X0lYfqar1ws9B
bBRRRQAUUUUAFFFFAGH4nPFuv+8f5VhVseJmzcwr6IT+Z/8ArVj0GsdgooooKKerts06c+q4/OuT
rpfED7dP2/3nA/r/AErmqpGkNgoooplhU1o6RzB5OgHGPWoaKGrqwNXLst+54jUL7nmqkjtIcuxb
602ikoqOwkktgooopjCiiigAooooAKKKKACiiigAooooAKKKKACiipVt52AKwSkHuEOKAIqKvw6T
dydYwg9WNXYtC/56z/goouLmRh0AZOByfSuoh0i0jOSjOf8AbOauRwxRDEcaKPYYpXJ5zk4rK5l+
5C5HqRircei3Tfe8tB7tn+VdLRSuLnZixaCo/wBbOxP+yMVaj0i0TqhY/wC0a0KKLk8zIY7aCMfJ
Ci/8BqaiikIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAM010R/vqrfUZp1FAFWTT7V/vQJ+AxVWXRbZh8hdD7HP8AOtSigd2YMuguP9VO
p9mGKpy6VdxjPlhx/sHNdVRTuPnZxMkbxnEiMv1GKbXbsoYYYAj3FUp9LtJuTHsb1Q4/+tTuUpnK
0VtT6Ew5glB9mGKzp7G5hYh4XOOcqMj8xTuUmmX/AA2m6S5P+yF/PP8AhTNVjD2FwrZGFLce3P8A
SrfhpcW0zer4/If/AF6j1ddsF4P9hv5Vz111MpfEcSrFWDKSGByCO1a9rrkyEC4VZF7sOG6/lWPR
XJexq0nudZaanbXLbVYo+cBX4z9K07K5nsZ/OspXgl/vIcZ+vr+NcBWha6tdQkBn81B2fr19etVe
+jM3C2qPZtE8dtvSHV4xtJx58fb3I/wqX4j3MVzoljJbypJG9xkMhyCNjV5nZ6hb3fEb4f8AuNwf
/r/hVzc2zZuOzOdueM+tYfVoKanHQ0eIm4OEjP1z/kFzf8B/9CFcpXV65/yC5v8AgP8A6EK5St5b
k09goooqSwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACuq0JQNMiIABJYn35NcrXV6H/wAguH/gX/oRqo7kVNi/
Xtvwr/5EXTz6vP8A+jnrxKvdfhyMeC9M4x8r/wDoxq7MJ8b9DhxPwnSUUUV6BxBRRRQAUUUUAcLr
I26rdD/poT+dUq0NfGNYuvqD/wCOis+uKW7O+PwoKKKKQwooooAKKKKAOX1992pOP7qhf6/1rOqz
qMnmX07DoWOKrUGy2CiiigZieJn+S3T1LN+WP8awq1/Erf6TCvomf1/+tWRVrY1jsFFFFBQUUUUA
FFFFABRRRQAUUUUAFFFFABRRT4o3lbbEjOfRRmgBlFXo9KvHODFt92Iq/BoS4BnlJPog/rRcTkkY
VTQ2s83+qidvfHFdPBp1rD9yFSfVuTVscDA6UrkufY5uHRLl/wDWMkY9zk/p/jWhDotsnMheQ+5w
K1KKVyXJkMNrBD/qokU+oHNTUUUiQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAQADoAM1l6lGJHljbIV1wcehGK1aoagMSqfUVnV+ETPO6Kmu0WO7mRBhVdgB7ZqGuM6
AooooAK09O1aS2AjlzJEAAB3X6ev0rMooE0nudFqV9b3OlS+VIu47fkPDdR2rnaKKbdwSsFFFFIY
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABXY6aipp9uFGBsB/E8muX062+13aREsFPLEDoK7a0ga6uooI/vSMFH
t71UUZVH0Iq958A/8idpX/XL+prw7UkWO/nRBhUbYPw4r3XwP/yJ+j/9eyfyrtwvxs4sT8KNyiii
u84wooooAKKKKAOL8R/8hif/AID/ACFZlaniUY1eX3VT+lZdcc/iZ3Q+FBRRRUlBRRRQAUyZxHE7
noqk0+qOty+Vp0nq+EH4/wD1s0DRypJYknqeaSiig2CiiigDnPEZzeoPSMfzNZVX9cbdqMn+yAKo
VaNo7BRRRQMKKKKACiiigAooqW3tprg4hjZvcDj86AIqK149DnYAvIi+o61fttHtoTl8yt/tdPyp
XJckc5FFJKcRIzn2Ga0bbRbiTmYiJfTqa6NFVBhFCj0ApaVyXNmdBo9rFguDIf8AaP8ASr8caRrt
jVVX0AxTqKRN7hRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorSsdJmuQ
Hc+XGfXqR7UA3YzRycDrWnpWhajqk3l2sB6ZLSHaoFbtpYQWwAijy3948k13+iWH2C1w+DM/Ln09
quEOZmFWtyLQ4SD4e37L+/vLWM+ihn/wqZ/h1cAfJqcTH0MJH/sxr0ait/ZROb6xU7nldz4C1eIE
wtazj0WQqx/MY/WsLUNH1DTz/ptnNEP7xGR+Y4r3GkYBlKsAQeoPSpdFdCo4mS3PAKK9g1fwjpWp
ZbyTbTH/AJaQfL+Y6GuI1nwTqNgjS25W8iH/ADzGHA/3f8KzlTkjohXhLyOWqnqI4Q1cPBIPBHBF
VNQ/1a/WsJ/CbM4fXVI1OUkEAhSPfgVn1s+JYyLmGTjaybR+B/8Ar1jVxvc1jsFFFFIoKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigDc8Mx/NPKVOQAob+Y/lXb+E4DLrCSD7sKlj+Ix/Wuc0y3+
y2UcbAB8Zbjuf84/Cu98G2vlWDXB+9M3H0HH881tTWqOabucpqOf7Ru8/wDPZ/8A0I17x4L/AORP
0T/ryh/9AFeE6uNup3Y/6aN/Ove/CyhPDOkqowotYgB/wEV1YVe+zmxHwo1KKKK7jjCiiigAoooo
A43xL/yFpP8AdX+VZVafiM51eb2C/wAhWZXHP4md0PhQUUUVJQUUUUAFYXiWXmGIH1Y1u1yOqz/a
L6Rh90HaPoKCoLUqUUUUGoUUUUAchqTbr+c/7VVq27nRZHld0mQ7iTgjFVzot0Dx5Z/4FVXNVJGZ
RWmui3R6mMf8CqZNBkP350H0UmndD5kY1Fb8egxg/vJ3Yeirt/xq7DptpD92IE+rc0ric0czDbTz
H91E7fQcfnWjb6JM2DO6xj0HJroRwMDpRSuS5so2+l2sOD5YdvV+augADAAA9BS0UibhRRRQIKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiitrSdJ37Z7nheqpjr7mg
TdiTSNKACz3S89VQ9vc1t0VJbxNPPHEn3nYKKDJu+rNfwzY+fcm4kGY4j8ue7f8A1q6yoLG2SztY
4I+Qo5Pqe5qeuuEeVWOGcuZ3CiiirICiiigAooooAwPEPhex1kNIVEF3jiZB1/3h3ryHxTplzpF0
bW7XDA5Vh91x6ivfa8z+M1t8ul3XYF4j+OD/AErmxEVyNo6aFR35XseLeJ1O23bB2gsCfyrBrp/E
MZfT9wxhHDH+X9a5ivLluelDYKKKKRYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFT2ShryBWAKm
RQQe/NQVreH7XzbkzuPkj6ZHVv8A63+FNCbsjpURpHVEGWYgAe5r0uzgW2tIYF6RoFri/CtoLnVV
Zh8kI3n69q7quqkupySPPfES7NZu/wDez+gr3nw8nl6BpqZztt4xn/gIrw3xcmzWJT/eQN+le6aH
/wAgWw/64J/6CK2w3xSMMRsi9RRRXacgUUUUAFFFFAHE+ITnWbn22j/x0VnVe1w51e6P+3j9BVGu
OW7O+PwoKKKKkYUUUUAQX0pgs5pB1VTj61xtdJ4in8u1WIdZDz9BXN0GsNgooooKCiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAoorR0nTjeMXkysK9x/EfSgG7FjRdN8zbcXC/J1RT/F7/SugpEUIiqowqjAHoKWgxbuFb3hay8y
drqQfJHwnu3r+FY1tC9xcRwxjLO2BXeWlulrbpDF91R19fetaUbu5jWnZWJqKKK6TkCiiigAoooo
AKKKKACuJ+LcAk8MJL3hnU/nkV21c78QYBP4O1MHrHH5o/4CQf5ZrOqrwZdN2kj591WPzdOnXOML
u/Ln+lchXcSIskbI4yrAgj2rh68eR69MKKKKk0CiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArrNG
h8nT4um5xvOD1z0/TFc9pdt9rvEjP3B8z/Qf5xXYW8W6SKKNepCKo/LFVFGdR9DtPCFr5OnNMww8
7Z/4COn9fzrdpsUawxrHGMIowB7U6u2KsrHMzjPG6bb2N/70X8jXuOmADTbQAYAiXj8K8X8dp+5t
pMf31P5A/wCNe06eMafbD0iX+VaYf45GGI2RYooorrOUKKKKACiigdaAOC1Rt2pXZ/6at/OqtSXL
b7mVv7zsf1qOuJ7netgooopDCiiigDmvEUm6/CdkQfmef8Ky6v67/wAhSb6L/wCgiqFBstgooooG
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFAFmwtWu7hY14XqzegrrYY0hjWOMbVUYAqtpVqLW0QFQJWGX+tXKDKTuFFFPijaWR
Y4xl2OB9aCTofClnw924/wBhP6mujqO3iWCFIo1CqowAKkrsjHlVjhnLmdwoooqiQooooAKKKKAC
iiigAqjrlt9t0TUbUjPn20kePqpH9avUEZGKTV1Yadj5kRtyhh0IzXHX/wDx/XH/AF0b+dd1fwi2
v7q3UYEMzxgem1iP6VxGqRmPULhWxkuW49+f614sj2KZVoooqDUKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKmtIGubmOJeCxxn0Hc0Abvh23eK3klcEeaRtBHYd/1rvvAWjnUr+5umB8myhaT6vg7R/M/l
XMorO6oilnYhVUdST0Fe9+EdFXRfDkNpIq+e6b5yO7kcjPcDp+FdeHp88vJHDXqcq9TlaKB0FFag
c/42j36Qrf3JAfwII/wr13SW36XZt6wof0FeX+Jo/M0O7H91d/5HNeleH23aJZH0iA/LitKHxsxr
/CjQooorqOUKKKKACmyNtjZvQE06q2pPs0+4b0Q0mNas4I8kmkooriO8KKKKACiiigDm/Ece29R+
zp+o/wAisqum8QQ+ZZeYBzGc/hXM0GsXoFFFFBQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUd8DrUiwyt92Nz9F
NAEdFWVsLpulvJ+VPGm3h/5YNQK6KdFW2067Xrbv+AzVaSN4ziRGU+4xQO42iiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACtLQrXz7vzGGUi5/HtWb9K6/TbcWtnGmPmIy3uaCZOyLV
FFFBkFbvhW08y5e5cfLFwv8AvH/AfzrDVSzBVGSTgCu+0+2FpZxwgDKj5j6nvWlKN3cyrSsrFiii
iuo5AooooAKKKKACiiigAooooAKKKKAPn7xjF5HirVY+mJyfzAP9a881z/kKTf8AAf8A0EV6l8So
/L8Y3v8AthH/AE/+tXl2uqRqcpIIBCke/ArxqqtJrzPWoO6XoZ9FFFZHQFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFdPodkLe3EzENJKoPToPSqfh+yV83Mq5wcR59fX/PvXWaNpk+sanBY2gzJKcE9kXux9
hVxjcyqT6HXfCrQft+otqlwmba1OI89Hk/8ArfzNevHkGoLG2js7OC2hAWOJAigDHQVPXrUqfs42
PKqT55XPO5U8uV0/usV/I0yr+uR+VqtwOxbcPxqhXO1Z2OtO6uQX8fnWNxGejRsP0rt/Cb7/AA/a
E9dpH6muPIyMHpXWeEMjRwh6o5H6CrpfEZ1vhNuiiiuo5AooooAKzvED7NIn9wF/M1o1i+LH26fG
v9+QfoCambtFlwV5I5KiiiuM7QooooAKKKKAIruH7RbSxZxvXH41xZBBIIwRwRXc1zfiC38q7Eqj
5ZB+tBcH0Mqiiig0CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACgnHWrNjZy3km2IYUfeY9BXT2NlFZx4jGWPVz1NBLlY5eCyuZwDFCxX1
PAq9Foc7f6x0T9a6OignnZkxaFAuPMkkc+2AKsx6XZx9IFP+8Sf51dooJuxiQxoMJGij2FPHHSii
gQUUUUAFZfiGWNbIxsR5jEbR369atajdrZ2xc8ueFHqa5KWRpZGeQ7nY5JoLir6jaKKKDQKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigC7o8Hn38YIyq/O34f/XxXWVjeGkxBM+OS2M+wrZo
MpPUKKKKCTX8NWvn6gJGGUhG78e1dhWb4et/I0uIn70v7w/j0/StKuqnG0Tjqy5pBRRRWhmFFFFA
BRRRQAUUUUAFFFFABRRRQB4v8V1x4uY+sEf9a8q8Sf8AH9H/ANcx/M16t8Wf+RsP/Xun9a8p8Sf8
f0f/AFzH8zXkV/jZ6mH2Rk0UUVgdQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVrTrR7y4CKDsBBdvQf41WVSz
BVBLE4AHeuxsLYWtqkQxuAyxHc96aVyZSsiza27O0NvbRlmJEcaLyT2Ar234f+GRoOm+bdL/AMTC
4AMvQ+WOyf4+9Ynws8NeTAutXqDzJR/oqnnah/j+p7e31r0avSw1Gy52eZXq391BRRRXWcxyfiuL
ZqCPjh0H6ViV1Hi6PNvby/3XKn8R/wDWrl65KitJnbSd4oK6nwi2bSdfRwfzH/1q5auj8INzcr/u
mnT+IVX4TpKKKK6jjCiiigArm/F8nzWsY9GY/oB/WukrkPFL7tU2/wByMD+v9azqv3TWiryMeiii
uU6wooooAKKKKACqerW32qydFGXX5l+tXKKBnDEYOD1orQ1u2+z3pKjCSfMPr3H+fWs+g2TuFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVoafp
c10VZwY4TzuPUj2q3o+lkkTXSfL/AAoe/ua3qCJS7EdtBHbRCOFdqj9akoooMwooooAKKKKACiii
gAooooA5bXLgz3zKD8kfyj696z6mvAVu5weodv51DQbLYKKKKBhRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUVb0qDz7+Jf4Qdx+goA6XTYPs9lFGRhsZb6mrNFFBiFPhiaaZI0GWc4FMrY8Lwe
bqW8jiJS349BTiruxMnZXOsgjEMMcS/dRQo+gGKfRRXacAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QB4x8Wf+RsP/AF7p/WvKfEn/AB/R/wDXMfzNet/FxNviaJsfet159cE15J4k/wCP6P8A65j+ZryK
/wAbPUw/woyaKKKwOoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDa8O2u52uWIwhKqPfHX8jXb+FNGk13W4LNMi
P78zf3UBGfx5x+Ncl4b/AOPGT/rof5CvZ/g1ZqLXUb0j52dYQfYDP8z+ldFCHPJI5K83FNnolvDH
bwRwwqEijUKqjoAKkoor1jzAooooAzvEEPnaTMB1XDj8K4mvRJkEsLoeQykV54ylWKnqDiuestUz
poPRoSt3wk2L2Zf7yf1rCrY8Lf8AIV/7Zt/Soh8SNKnws6+iiius4gooooAK4vxIwbV5sdgo/Su0
rgtUk8zUbl/VzWNbY3oL3irRRRXOdIUUUUAFFFFABRRRQBna9B51iWVctGdw+neuXruSAQQRkHgi
uOv7c2t1JEegOVPqO1BpB9CvRRRQWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUU+KN5ZFSNSznoBQARRvLIEjUsx6AV0Gl6SICJbnDSjovULU+l6clmu98NMRy3p
7Cr9BnKXYKKKKCAooooAKKKKACiqepajb6fFvuH5P3UHVqdoGiaj4nP2m/MljpGfljU7XmH19Pek
tXZbg2oq7J4ZUm3mLLoh2s4Hyg+mfWn1avpI9629qix2duPLhROmB3/H1qrTYLUKKKKAOZ1+3MV4
ZQPkl5/HvWZXWaxB59hIAMsg3r+FcnQaxd0FFFFBQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFb3hqDCyznv8i/1rB69OtdlYQ/Z7OKPuF5+vegmb0J6KKKDIK6nwlDttJpj1d9o+g//Wa5au30
BNmkW49QW/M1rSXvGVZ+6aFFFFdJyBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHk/xkjxq+nyY+9A
w/Jv/r15D4n/AOXb/gX9K9p+NEf/ACCJR/01Q/8AjpH9a8a8Sxg20MnO5X2j8R/9avKxK99npYZ+
6jnqKKK5jsCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooqzpsC3F7FE/wB0nJ9wBnH6UA9DpdJgMFhEjqFcjc3GOvr7
4xXunwpg8rwmjnrLM7frgV4vXvXgOHyfCGlrjBaLefxJNd2EXvnn4l+6b9FFFegcIUUUUAFcNrUP
kapcL2Lbh9DzXc1zHi6HFxBMB95dp/D/APXWVVXjc2ou0rHP1reGGC6suf4kYVk1e0N9mrWx9Wx+
YxWEd0dE1eLO5ooorsOEKKKKAEY4Un0FedyNvkZ/7xJ/OvQLo4tZj6If5V56OlYVuh0UOoUUUVgd
AUUUUAFFFFABRRRQAVkeIbXzIBOn3o/ve4rXpHUOjKwypGCKBp2OHoqa7gNvcyRH+E8fSoaDYKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiinwRPPKscSlnboKAHW0D3M6x
Rj5m9egrqNNsEso+zSn7zf0HtS6bYpZRYHMh+839PpVugzlK4UUUUEBRRRQAUUUUAFZesa1BpvyY
Mk5GQg7fU9qZ4g1ddOi8uLDXLj5R/dHqaT4e+Fzrdy2qaqpks0f5Vf8A5bOOufVR+R6etTdyfLHc
G1FczNTwd4QfUpodb111kSQCSK2wfwLZ7e1dj4jvxa24tYuJJF7fwrWw7LGjM2AqjJ9hXBX9y13d
yzN/EePYdq6GlSjZdTni3Uld9CvRRRWJ0BRRRQAdeK4q4Ty7iRB0ViB+ddrXF3L+ZcyuOjMSPzoL
gRUUUUGgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAXNJg+0X8an7q/M30FdbWF4ZT5rhyOwU
H+f9K3aDKb1CiiigkK77TF2adbL6RiuBPSvQrUYtYR/sD+VbUd2YV9kS0UUV0HMFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAef/GWItomnygZ2XW0+wKN/wDEivFPEEe/Ti2cbGDfXt/WvevivGH8HyuR
/qpom+mW2/8As1eF6vGZNNnVcZC7ufY5/pXm4pe+z0MM/dRyNFFFcZ3BRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVve
G7YgSXLZAI2L7+p/l+tYSqWYKoJYnAA712sESwQpFGMKowKqKIm7Kw522ozYJwM8V9I6VbfY9Ls7
X/njCkf5KBXz5otv9r1mwt8ZElxGrD/Z3DP6Zr6Nrvwi3Z5+JeyCiiiu05AooooAKyvEsIl0t36G
Ihh/L+tatMniSeF4pBlHBU0pK6sVF2dzzupLeTybiKT+44b8jVnVNPlsJtr5aM/cfHB/+vVI9K42
mmdqaktD0c9aKRc7RnrilrtOAKKKKAGuu9GU9CCK8+nhaCZ4pBhkODXodZuq6TDf5cfu58cOO/1r
KpDmWhrSnyvU4qirF7ZzWcvlzoR6Hs30NV65mrHWnfYKKKKACiiigAooooAKKKKAMLxLBzFOo/2G
P8v61h12V7ALm1kiPUjj69q44ggkEYI4NBrB6CUUUUFBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFACorO4VAWYnAA711mm2CWSHnfI33mxj8KraJp/kRieYfvWHAP8I/xrVoM5SvoF
FFFBAUUUUAFFFFABVLVtRi0228yQbnPCIDjcas3EyW8LyysFRBkmvPNWv5NQu3mkJC9EX+6KicuV
DSubPhrR7nxdrr+c5SBAHmkA4Vc8KPc/4mvcLW3itLaK3t0WOGJQqKo4AFc/8PdJbSPDUCTIFuJy
ZpOOeegP0GBXS11UKfJG73ZyVp80rdDG8T3XkWPkr9+Y4+i9/wDCuRrW8TTGXVGTtEAv9ayazqO8
jalG0QoooqDQKKKCQoJJwBySaAKWr3X2Wzcj77/Kv+NcnVzVbw3d0WH+rXhB/WqdBrFWQUUUUFBR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUlvEZp44h/GwFAHUaNB5FhHn7z/ADn8au0AAAADAHAF
FBi9QooooEKOtehwf6iP/dH8q88HWvQ4P9RH/uj+VbUephX6D6KKK6DmCiiigAooooAKKKKACiii
gAooooAKKKKAOd+IUXneDtTH91BJ/wB8kH+leAX/APx43H/XNv5V9GeLI/N8MarH/etnH6V8533/
AB4XH/XNv5V5+LXvJnbhdjjaKKK4T0QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA1/D1t5tw0zqCkY+XP97/AOt/UV0d
Z2gxGLT1LZzIxfBGMdv6Z/GtGtFsYTd2dT8M7T7V4vtGI4gVpfyGP617hXlfwbtd19qN0RkRxrGD
6Ekn+leqV6WGVoXPPxDvMKKKK6DAKKKKACiiigCOeGO4iaOZA6HqDWWPD9otwsgMmwHOwnIP9a2K
KlxT3KUmtgoooqiQooooAKKKKAIrmCK5iMc6B0PY1yusaM9oWltwXt/TqV+tdfRUSgpFwm47HnFF
dJreiABriyX3aMfzH+Fc3XNKLi7M64yUldBRRRUlBRRRQAUUUUAFczr1sIbvzFGFl+b8e9dNWfrk
HnWDsB80fzj6d6CouzOWooooNQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACtnQtPEp
+0TDKg/IPU+tZVvC1xOkUf3mOPpXZxRiKJI1+6oAFBMnYdRRRQZBRRRQAUUUUAFFFZfiHUf7PsT5
ZxcSZWP29T+FJuyuBheLdRM9wLSJv3UfL47t/wDWqx8O9CXWtdDXKbrS1AlkH95s/Kv0zyfp71yx
JJJJyT1Jr2z4Y6Z9g8LQzOuJrwmdv90/c/TB/Goox9pPUVWXJDQ62iioL2TybOeTuqEj64r0ThRw
+oTfaL6eXsznH06D9Kr0DpRXFud6VtAooooAKw9c1H71tCQezt/QVc1m9+yW+1D+9fhfb3rlicnJ
60FxXUKKKKDQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACtTw9D5l6XI4jXP4msuui8Nx4tZ
ZP7zY/If/XoJlsa9FFFBkFFFFAB0r0O3ObeI+qD+VeeHpXoNk26zgPqg/lW1HdmFfZE1FFFdBzBR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFAFbU0Emm3SHo0TD9DXzWUEkJSQZVlww/Cvpi6GbWYeqMP0r
5scbXYehIrixe6OvDdThKKKK849MKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKu6Rbi4v41YZRfmb6D/6+KpV1Gi2P2WHzJP9
bIBkY+6PT/GmlcmTsjSopdpChsHaSQD7j/8AWKStDA9a+DKY8P6hIVwzXpUH1URx4/UtXf1znw9s
vsPhDT0IO+VTM2euXOf0BA/Cujr1aKtBI86o7zbCiiitDMKKKKACiiigApGYKpLEADuaz9U1aCxG
0/vJuyA9Pr6Vyt/qVzfH98+E7IvAFZyqKJrCk5HTXWu2UBIVmmb0jHH51Qk8THP7u2AH+01c5RWL
qyZsqMUdHH4mO797bDH+y1adprNlc8CTy2/uycf/AFq4mihVZIHRi9j0ZSGGVII9RS157DPNCcwy
un+6cVo2+v3sQAYpKP8AbXn8xWirLqZug+h2NFc9D4lQ/wCutmHujZq5Hr1i45d0PoVq1Ui+pm6c
l0NWuW8S6asBF1AuEY4cehPf8a2f7ZsP+fgfkaydc1mG5tWt7YFgxG5yMYx6VNRxaLpqSlsc9RRR
XMdQUUUUAFFFFABSMAykEZBGDS0UAcXdxeRcyx/3WIH0qKtLxAm3UCf7yg/0rNoNlsFFFFAwoooo
AKKKKACiiigAooooAKKKKACiiigAoop8SGWVI16sQKAN7w9ahIDcMPmfhfYVsU2JBFEiKMKoAFOo
MW7sKKKKBBRRRQAUUUUAMnlSCF5ZThEBYmvOtTvZNQu3mlPHRV/ur2FdF40vAsMVmjHex3vg/wAP
YH8efwrk6wqSu7FxXUv+H7D+1NbsrPGVllAb/d6n9M19ERoscaogARQAAOwrx/4RWfn+JJrgjK20
BP8AwJjgfpur2KuvCxtG/c5MRK8rBWb4ik2aTNg43EL+taVYnixsafGv96Qfyron8LMoK8kcnRRR
XGdoUEhQSTgDk0VDfPss52PZD/KgDlL65a6uXlY8E4Ueg7VXoooNwooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACut0iPy9NgHqu78+a5I9K7W3XZBGvooH6UETJKKKKDMKKKKACu80ht+mW
p/6ZiuDrtfDzb9Ig9sj8jWtHcxr7GlRRRXScoUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAyUZicHo
VI/Svm25GLmYDoHYfrX0lMdsMh9FJ/Svmy4O64lPq5P61xYvodWG6nBUUUV5x6gUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUtvB
JcSrHEpLE+nT3PtQBo6BZrPMZpN22IjaOxb6+1dZp9o97dxwRdWPJ9B3NULG2W1t1iTnHU45Y13/
AIZ0z7Fa+dKuLiUc56qPStoQvoc85XM7xZaxWun2UcKhVRiowPb/AOtWDpdo19qVraKMmaVUx7E8
10vjc/6LbD/pof5UvwssDeeKknZSYrSNpSe24/Ko/Un/AIDWjjzTUTNy5YtntEUaxRJGgAVAFGPQ
U6iivUPNCiiigAooooAK5/XtYCB7W0Y+Z0eQHG32B9al8Q6p9mj+z27Dzm+8R/AP8a5OsKlS2iOi
lTv7zFJLEliSTySe9JRRWB0BRRRQAUUUUAFFFIzqn32VfqcUALRUX2iD/ntF/wB9io2v7VfvXEf5
0DsWaKotq1mP+WufoDUTa3aDp5h/4DQFmadFZDa9APuxSn8qjbXx/Dbk/V8f0oHys26KwG1+T+G3
QfViaibXbk9EhH4H/GgOVnSUVy7azeN0dF+iioX1G7frO/4cUD5GdcSB1IH1qpcalawA7pQzf3U5
NcpJLJJ/rHZvqc0ygfIWtRuzeXJkI2gDao9qq0UUFhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAVpaBH5mogkZCKW/p/Ws2t/wANQ4jmmI+8Qo/CgUtjaooooMQooooAKKKKACq+oXaWVnLcSchB
wP7x7CrFcb4t1D7RdC1iYGKL7xHdv/rVMpcquNK5h3E0lxM8szFnc5JqpaTC4h81SSrMdv0Bx/TP
41S8QXBisxGpw0px/wAB7/0/OmeHbkPbGA4DRnI9wf8A6/8ASuW+pty6XPbfgxEn9k6nOAPMa5EZ
PqqoCP1c16HXlHwf1PydQu9MkYBLhfOjz/fHB/MY/wC+a9Xr08O700edXVpsK5/xef3Fsv8AtE/p
XQVznjDpa/8AAv6VdT4WTS+JHN0UUVynYFVtUBbT7gDrsNWabMu+F0HVlI/SgaOIopWUoxVgQwOC
DSUGwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAAOvNdwn3F+grh67Oyk820hcHO5AaC
Jk1FFFBmFFFFABXW+E33ac6/3ZCP0Brkq6Twe/8Ax9R/7rD9Qf6VpSfvGdZe6dHRRRXUcYUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQBDenbZ3B9I2P6Gvmvdu+b15r6H8UT/ZvDmpTZxst3P6V853TNFa
TMhwyxkg+4FcOLeqR2YZaM4uiiivPPSCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAK6fQ7L7NAZJARLIOQR90elZWi2TXE6yuitAhO7
J6nHTH4iuvsbSW9uVhgXLHqfQepq4oyqS6Gv4SsBc3bXEqkxw4K56Fv/AK1dpVewtI7K0jgiHyqO
vcnuasV1wjyo527nK+OGO6zXsQ5/lXefCjTvsnhw3TriS7kL/wDARwP6n8a4XxTBLqOr6fYWi7rl
wQo/3j1PsNpNe0WFrHY2UFrD/q4UEa/QDFXQjeo5djGvK0VEnooortOQKKKKACobydbW1kmf7qLn
6nsKmrm/Fl1zFaqf9t/6VM5cquXCPM7HPOzO7O5LOxySe5ptFFcZ2hRRRQAUUjsqIWcgKBkk9q5n
VdTe6YxxErAPzb60DSubF1qtrASN/mOOyc/rWbca5M3EMaoPU8mseig0UUWpb+7l+/PJj0U4/lVZ
iWOWJJ9SaSigoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigArsdOiMFlDGwwwXn61gaJZm4uBI4/dRnP1PpXT0Gc30CiiiggKKKKACiiigChrt2b
LTJpU+/91ee54zXnUjhEZ3OFUFia3/Fl+Lq8WCJsxQ9cd27/AJdPzridfvfLj+zRkb3Hz4PKj0/H
+X1rmqSuzSEbmNf3Jurp5TnaThQew7U/SpWi1CEofvMEI9QeKqUVgdNtLHo2jXx0zVbS9UkeRIHO
PTv+ma+i43WRFdDlWAIPtXzDZzC4tYpeMsvOB37/AK17z8ONR/tDwlZ7yDLbg27jOfunCn8V216G
Elq4nnYmOiZ09c14w/1loPZ/6V0tc14wB32pwdoDDPvx/hXVV+FnPS+NHO0UUVynYFFFFAGF4gsu
ftUY9pMfzrDruWAYEMMg8EVzOq6Y9szSQgtB1/3aDSMuhmUUUUFhRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAV0Xhy4D2zQE/MhyPof/AK9c7UtrcPbTrLGfmHb1HpQJq6O0oqtZX0N2gMbYfGSh
6irNBkFFFFAgrY8LSbNT2/30I/rWPVzSZfJ1K3cnA3gH8eKqLs0TNXi0d3RRRXYcIUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQByHxUuxbeEZY9wD3EqRL787j+imvC9UkEen3DNnBQrx78f1r0/4xagst
5YaejA+SrSyAdmPA/QH868h8SThbeOEMdzNuIB7D1/H+VeZiZXm/I9DDR91HPUUUVyHcFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVmws5L
ybZHwo+8x6KKigiaeZIoxlmOBXW2FnHZw7I+WPLMerGmlcmUrE1tAIo44YVJAwqgDkn/ABr0Hw/p
g060+cD7RJy59PasfwtpDmWO+nG1AMxL6npmusrqpxtqzlkwoopHbajMBkgZxWpI/wAC2SXvizUt
RfDC0CwRj0Yjk/ofzr0Wuf8AA2m/2doSbwPPuHaeQ+pPT9K6CumjHlicdWV5MKKKK1MwooooAK4X
WZfO1S5bPAcqPoOP6V3Q6155cnNxKT3c/wA6xrbI3oLVkdFFFc50hRRRQBk+I5SlokanHmNz9B/k
Vzldbqtn9sttikCRTuUn+VcvcW8ts+yZCp/Q0GsHoRUUUUFBRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFTWds91OsUY5PU+g9abbwSXEojhUsx
/Suo0qyFlAQxBkbliP5UEydizbQJbwJFGMKo/P3qSiigyCiiigAooooAKz9dvvsGnSSKf3rfIn1P
f8K0CQASTgDqa4LxFqQ1C8/dE/Z4+E9/U1E5WQ0rmNcTLDE8sp4UZJzyf/r1x1zKZ7iSVs5dicE5
x7VueI7nbEtsvV/mb6dv1/lXPVySZ001pcKKKKk0Oi8NOptJUB+YPkj2IGP5GvXvg5fbLy/sGPEi
iZR7jg/zFeLeG5Nt3JGWAV0zj1IP+Ga73wXqA0zxPp9w5xEZPLk/3W4/QkH8K3oy5ZJnLXjdNHv9
Z+vW32nTZQBl0+dfw/8ArVoUfXpXrNXVjzE7O55xRVi/g+y3s0PZGwPp2/Sq9cWx3p31CiiigApH
VXUq4BUjBB70tFAHNarpbW5MsALQ9x3X/wCtWXXcnkYPSsLVNI5MtoPdo/8ACg0jLuYdFBBBIIwR
RQWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFADkdkcMjFWHQg8iun0e+N5CRJ/rU6+49a5atP
w8+3UMdmUigmSujpqKKKDIKXJByDgjpSUUAehWsnnWsMv99Fb8xmpaz9BnE+lQY6xjyz+H/1sVoV
2p3VzgkrOwUUUUxBRRRQAUUUUAFFFFABRRRQAVX1C8h0+xnu7p9kMKF2PsP61Yryj4reITPeHRbZ
mEcBDXB6bnIBC+4AIP1PtWdWp7ONy6cOeVjiNXv5dU1O5vZ+Hmctj+6Ow/AYrh9Yl83UZiC2FOwA
9scH9c10Op3q2UGeDKw+RTnn/Oa5JmLMWYksTkk968ibuetTjYSiiioNQooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApVUswVQSxOAB3p8ETTzJFGM
sxwK6bStPFkrMzB5WAyQOnsP8+lNK5MpWF0qwWzhDMMzsPmJ7ewrq/DejNeuLm5jYWinAJHEjDqB
6gd6seDfCtz4huw5/dWEbDzZSPvDPKr7n17deeleha/HDbXENpaxrHBbxBVReg711U6V1zPY5JVL
y5TLAAGAMAUUUVqIKfDGZpkjXq5CimVteF7Xzr4zt9yEZ+rHpTiruwpPlVzq4kEUSRr0UACnUUV2
nAFFFFABRRRQADrXncxzNIR3Y/zr0NjtUn0Ga87c5dj71hW6HRQ6jaKKKwOgKKKKACmTQxzJsmRX
X0Ip9FAGTcaHA+TC7Rn06is6fRrqP7gWUf7Jwf1rp6KClJnFSwyxHEsbof8AaUio67kgEYIyPQ1T
n021nyWiAPqvFBSmclRW9LoClsxXBUejLms67025tslk3p/eTkUFKSZSooooGFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFWbOxnuz+6X5e7NwKAK1W9PsZb1yE+VB95z2rWtdD
jRg08hk/2QMCtdEWNQqKFUdAKCHPsQ2dpFaRbIl57sepqeiigzCiiigAopruiffdV+pxUL31on3r
mIf8CFFwLFFZ8us6dEMtdxn2U7j+lY174qBVks4GB7SSHp+H/wBepc0h2Zb8VamlvataRnM8ow2P
4Vrg725W0tmlcZxwFzjJ9KsXM5Jknnck8szHmuT1O/e9kwMrCp+Vf6n3rmnO+prCNypLI80jSSMW
djkk0yiisjoCiiigCexm8i8hk3bQrDJxnjv+ldkenHWuGrsNMlM9hC7Z3bcEk5zjjP6VUTOoup9K
6Hef2ho9ld5yZolYn3xz+tXq5L4XTGXwdbBmyySSJ9AGOB+VdbXswfNFM8eatJo4/wATweVqRkA4
lUN+PSsiur8WQb7KOYdY2wfof/r4rlK56itI66TvEKKKKgsKKKKACiiigDN1TS0ugZIsJN+jfWua
kRo3KSKVYcEGu3rM1ux+0RebHgSRg8Y+8KC4y6HM0UUUGgUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAVpeH1zqIPoprNrb8Mx5knk9AFoFLY3qKKKDEKKKKAOh8JXGJZrcn7w3r+HWumrgdPuTaXsU45C
tyPUd671SGUMpyCMg100ndWOWtG0ri0UUVqYhRRRQAUUUUAFFFFABRRTXdY0Z3YKigkk9ABQBmeJ
tZh0LR5ryYgsPljQ/wAbnoP8+lfP15cvcTzXN1JukkYySOx7nkmui8d+JD4h1NfJBWyt8rCM/ez1
c/XA/CuUu4ftFvJFvZN4xuFeZXq88tNkd9GnyLXc5XUrr7ZdNJghcbVB7CqtT3ts1pctE5zjkNjG
R61BXIdy20CiiigYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABT4o3mkWONSzscACrdjps92AygJFn77f0HeuksrSKzjKQg8nJY9TTSuRKaRX03TY7RVdgH
nxy3p7Cu08F+Fp/EN3uffFYRn95Lj73+yvqf5Vb8GeCrnXDHdXha203qGx88vsvoPf8ALrkeyWlt
DZ20dvaxrFDGNqoowAK7aGH5tZbHFWr20W42ws7fT7OK1s4ligiXaqjsP6n3rkNebdq1x7Nj9K7e
uE1f/kKXP++a6qukUjCj8TKdFFFc50hXcaJafZNPjVhiR/nb6muc8PWS3d7uk/1cWGI9T2FdlW9G
PU560vshRRRW5zhRRRQAUUUUAQ3r+XZzueyH+VefV2viKbydKl9Xwg/GuKrnrPWx1UFo2FFFFYmw
UUUUAFFFFABRRRQAUUUUAFFFFAGffaVBc5ZB5cv94dD9RXNXELwStHKpDD9feu1rO1u1WezaTpJE
NwPt6UFxkcvRRRQaBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVt6Hp27bdTZGDlF9fc0C
bsLpekbgst2DjqI+n5/4VuKoVQFAAHQClooMm7hRRVe9vbeyj33MqoD0B6n6CgRYpksscKF5XVEH
VmOBXL3fitizC0twF7NIefrgVz97eT3svmXMhdh09B9BWbqJbFKJ1t94mtYcrbq07eo4X865+816
/uWOJjEh/hj4/XrWXRWTm2UkhXdpDl2Zj/tHNNpagu7mO1i8yYkLnAwM5PpUDJmIVSzEBQMkntVC
61a1hBCv5rjsnT8+lYuo6pJeKEC+XH3UHO4+9Z9S5djRU+5bv7+a8f5ziMHKoOg/xqpRRUmqVgoo
ooAKKKKACum8PS77HYSuY2IwOuDzz+tczWv4cm2XTxHGJF447j/62aa3Jmro9y+DN5mHU7En7jJO
ufcbTj/vkfnXpVeJfC67+y+L4FJwtxE8B/HDD9VH517bXq4aV4eh5NdWmVdUh+0afcR4yShx9RyK
4KvRyMjB6VwF/D5F7PF/dcinWWzKoPdFeiiisDoCiiigAooooAKKKRmCKWboBk0AcbeII7uZB0Vy
P1qGnzyebPJIf4mJplBugooooAKKKKACiiigAooooAKKKKACiiigArpvD0ezT93d3J/p/SuZrsdP
j8qyhT0UZoInsWKKKKDMKKKKACuz8OXX2jTlVjl4jsP07Vxlafh+8+yX4DH93LhG9vQ1dOXLIzqx
5onaUUUV1nGFFFFABRRRQAUUUUAFedfFfxA1vAui2xKvOgknYf3MnC/iQc/Sut8Va7B4f0p7uYB5
CdsUecb29Pp614RqF3c6rqUtzcEy3Nw+cAdzwFA/ICuXE1eVcq3OihTu+Z7DdPs59QvYbS0QvNKw
VR/U+1X/ABZo50LW5LHdvVY42Vj/ABZUZP8A30Gr1LwB4TXQrf7Xd/NqMyAMD0iH90e/TP0rB+Me
n4ew1FRycwP/ADH9fzrB0HGnzPc2Va8+VbHiniaMCWCTncylT+H/AOusWun8QRB7AvwGjYEHHrxj
9f0rmK45bnbB6BRRRSLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigArQ0eyF5cHzM+Ugy2O/oP51n10vh2PZYs5UAu5IPqBx/PNNLUmbsjWgiZ3jhgjLMxCoiLkn0
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
2nnXPnOP3cfI92rq7S3kup1ihGWb9B61Fp9kSY7a0jyTwAP5mu30nTo9PhIHzSt99/6D2rWEOZnP
Vq2JdOso7G2WKPk9Wbuxqp4m1iHQtHmvZsFl+WNP77noP8+lahIAJJAA5JPavEPiF4iXXtWC2rE2
VtlIz2c92/w9q1q1FTjoc1ODqS1Obu7iW7upbi4bfNKxd29Sa47V7n7TevtYtEh2p6e5H41q67fC
KI28TDzXGG4zhf8AE1zleTJnq0421CiiipNAooooAKKKKACiiigAooooAKKKKAOu0iQyabAzYyF2
8exx/SvdPhRced4QjiJybeaSP8zvH/oVeDaBIH01FGcoxU/nn+tev/Bm5/d6nak9CkoH5j/CuvCu
00cOJXus9LrI8UR79LLd0cH+la9VNWj83TLlcZ+Qn8ua9GSumcMHaSODooorjO4KKKKACiiigAqp
qVit7EFLFXXlTVuigexx93Yz2pPmodv94ciq1dzVC60q2nBwgjc/xJx+lBan3OVoq3fWE1m3zjdG
ejjp/wDWqpQXuFFFFABRRRQAUUUUAFFFFABRRRQBLanbcxH0cfzrta4UEg5HUV2lrKJraKQdGUGg
iZLRRRQZhRRRQAUUUUAFdpoN/wDbbMBz++j+Vvf0NcXVrTbtrK8SVSducOB3XuKuEuVkVIcyO9op
sTrLGrxkMjDII7inV1nEFFFFAGR4p1VtI0iSaCNpbtz5dvEqli7npwOuOv4VyHgzwKyzjU/ESl7k
uZFgYgjcedz+pz26V6NRWcqalK8uham4qyADAwOlFFFaEBRRRQB4x8VrD7J4m+0KMJdxiT/gQ4P9
K8s8SQbZo5wOGG1sDuPU/wCelfQvxX0z7Z4cW7RczWUm/I67Dww/kf8AgNeH6tEJtPmBxlV3g4zj
HP8A9b8a8vEwtNnpYed4o5GiiiuU7AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAK6vQ/+QXD/wAC/wDQjXKV1eh/8guH/gX/AKEaqO5FTY+hPh1/yJ2n/wC63/oR
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
bn+ea851+MpqTscYdQw/LH9K9y+Mtntl02+A+9ugY+45H6Z/KvHvEkW61jlAYlGxx0APr+QryK8e
WTR6mHldJnO0UUVgdQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVq
eH7gRXhjY4WUY/4F2/r+dZdOjdo5FdDhlIIPvQhNXVj0rw3ff2Zr9heHOIpQWx/dPB/QmvoZSGUM
pyCMg18zEZBFfQ3ha4e78NaXcS8yS20bN9Sor0cJLeJ5uJWzNSiiiu05AooooA5vxLpuC17DgD/l
oPf1rnK9FkRZI2SRQyMMEHuK4rWNOawn4yYX+439D71z1YW1R00Z391mfRRRWJuFFFFABRRRQAUE
AgggEHsaKKAKM+k2kpJ8vYT3Q4qjLoA/5ZXBHsy/4VuUUD5mjnP7Cuf+ekP5n/Cmtod0OjQn6Mf8
K6WigfOzmDot2O0Z/wCBUDRbvHSMf8Crp6KB87ObGh3R6tCPqx/wpf7Cuf8AnpB+Z/wro6KBc7Oe
XQZj9+aMfQE1OmgIP9ZOx/3VA/xraooDmZmpotov3g7fVqsR6daJ92BPx5ratdIvbnBWEop/ik+W
tm18OQqAbqVpG/urwKtQkzOVVLdnJpDEuAkaD6KK0LbS7y4A8qBgvq3yj9a7G2sbW2H7iBFPrjJ/
M1ZrRUe5i6/ZHJp4buzjdLAo78kkfpWhb+HLdMGaWSQ+g+UVuUVapxRm6smU4NNs4MGO3TI7kZNX
BwMDpRRVpJbENt7hRRRTELk+tRSW8Mn+shjf/eQGpKKAM+fRNLuP9dYWzf8AbMD+VZ8/g/RJutns
/wCublf5V0FFTyp9ClOS2Zx1x8P9Mk5hnuofYMGH6isHVPhpOTusLuCTrkSgxn8MAg/pXp9FTKlC
W6LVea6nznq+l3mkXZt7+B4X7bhw30PQ1BZXdzYzebZTy28ndo2K5+vr+NfRd9ZWt/bmC9t4riE9
UkUEVwWu/DS3kDSaLO0DdoZiWX8G6j8c1yTw0ou8TeGIi9JHO2nj68KCPV7K01GMDGZF2vj6/wD1
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
zrqK5r4cqF8HWGO4Yn8zXS17NP4EePP4mcFqbbtSuif+erD8jiqtWNQOdQuiOhlf/wBCNZ9/eQ2N
sZrhgo52jux9BXKzsWw68uobOBprhwqL+Z9hXGa1rst+piiUwwdxnlvr/hVHUtRn1GfzJ24H3UH3
VHtS6Nps+r6nBY2oHmynGSOFHcn2rnlNydkaJW1ZNoGi3mu362timT1eRvuxr6n/AA717V4e0Sz8
L6S6Rnc2N80xGC5H8h6Cp/DWhWugacttaDcx5llb70jep/oKq+KrwLEtomCzYZ/Ydq66dJUo8z3O
SU3VlyrYwdRu2vbt5nGAeFX+6PSq1FFZt3OhK2gUUUUAFZmuXgt7cxJ/rJBj6D1rQnlSGJpJDhVG
TXIX1y13ctKwxngD0FBUVdkFFFFBqFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFA5IA5JrWsdGlm
w1wTEnp/Ef8ACgTdjNggknfZChdvati20I8G5l+qoP61s28EdvGEhUKo/WpKCHN9BkMUcKBIkCr6
AU+iiggKKKp3mp2dnkTzorD+EHJ/KhuwFyisCXxTZqf3cc0nuAB/Oqsniw/8srTPuz//AFqjniOz
Oporjn8VXZ+5BAPrk/1qI+KNQP8ADbD6If8AGl7SI+VnbUVw/wDwkuo/3ov++KP+El1H+9F/3xR7
VBys7uKR4pFeNirryCO1dNpmvxybIrwbH6eZ/CT7+lePDxNqOesJ/wCAU9fFF+OqWx/4Af8AGqjX
5diJUlLc98BBAIOQe9FeM6Z8QtSsV2fZ4JY/7jEjH09K27b4pqf+PrSWX/rlMG/mBXQsTB7nO6E1
sel14D42sP7O8U6hABhDJ5ifRhu/r+lel2XxG0OcgTfabYn/AJ6R5/MjNch8UpbC/vrHUtNuobgS
RGGTy2yRtOVyP+BH8qzxEozheL2KoqUJWaPJ/EdvsnSdQcSDDcdx/wDW/lWNXW6vAs+nyhuCg3g+
4/ya5KvOluelB3QUUUUiwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
C5pM4gv4ndiqE7W5x19fbOK7rRdRfSdVtr+IFmgfdtH8Q6EflmvOa7Kxm8+zhk3biyjJxjnv+tXB
22MqiufTtvNHcQRTQsHikUOjDoQRkGpK4T4Va4t5pJ0yZh9otB8gP8Ufb8un5V3dexCanFSR5E48
rsFFFFWSFFFFABRRRQBmahotteSeZzE/coBz9awLzQ7y3yUUTJ6p1/KuyorOVOLNI1ZRPOWVkbaw
Kn0IxSV6FPbQzjE0SP8A7wzVKTQ9Pc58gqf9liKzdF9DZV11RxVFdkNAsAeUkP1c1NHo9gnS2Q/7
xJ/nS9jIPbxOHHJwOTViGzuZv9VBK30U13UdvDGMRxRr9FFS1So92S6/ZHI23h67kP74pCvudx/I
VqW/h21jcNI8kuP4W4H6VtUVapxRm6smMhijhTZCiovooxT6KK0MwooooAKKKDwMngCgApCQBkkA
Duayr/XLa2ysR8+T0U8fnXN3+pXF85Mr4Tsi8KKzlUSNY0nI6K/162tyUh/fyD+790fjWFfaxd3e
VL+VGf4U4/Ws2isJVHI6I04xCiiioLCiiigAooooAKKKKACiiigAooooAKcjMhyjFT6qcU2igC7F
qt9H925kI/2uf51ZTX75erRt9VrJoqlJrqS4RfQ2j4iu8cJED9Kz72/uL0j7RJkDoo4AqrRQ5N7s
FCK2QVR1PSrbUEPnJtk7SLww/wAavUVDV9yjznVbCTTrtoZDuHVWH8Qrm/EkW61jlAYlGxx0APr+
Qru/GyOLq3c/cKED65rjdc/5Bc3/AAH/ANCFcs1ZtG0HqjlKKKKyOgKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigArsrD/jxt/8Armv8q42u4jRY41RBhVAAHtVRM6h754C/5E7Sf+uP9TW6
7bEZj0UE1h+CAIfB2l+YQoWAEknAA5Ncj4z+IBVnstAYHtJddfwT/H/I9b2ipwTZ5XI5zaRR17XY
NNkMYAuL3dl4wcKnsx9fYdO9cRf3s9/cme5fc54AHAUegHYVAzF3ZnJZmJZiTkknqTWhoGj3Wual
HaWaE5IMj44jXPLH/DvXnuTm7I7klFXYaDo15rl+trYpluru33Y19Sf85r2vwr4ZsvDtu6226WeT
/WTuBub29h7Va8P6LaaFpyWlkpwB88jY3SN6mtOu6jQUNXucVWq56LYr390lnaSTPztHA9T2FcLc
zPcTvLIcu5ya1PEl99puvIjOYojjju3esapqSu7GtKHKrsKKKKzNQpGYKpZiAo5JNLWD4gvSWFtE
w29Xx6+lA0rlTVdQa8k2pxCp4Hr7ms+iig2SsFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFaNjpM9
zhnHlR+p6n6Cq1vcm35ijTzP77jcR9PSllv7qX78749AcUCd+h0Nta2mnjJZN/8AfcjP/wBalk1W
zj/5bbj/ALIJrlCSTknJ9TRQLk7nRSa7CM7IpG+uBVdtefPywJj3Y1i0UByo2G16YjiGMfiaibWr
s9PLX/gNZlFA+VF46teH/ltj6KKrPO8hJfy2J65jX/CoqKAsgIU9Uj/74A/pTDDGTkov5U+ilZDI
/Ii/uL+VIbeL+4Kloo5UBCbWI/w/rTDZxHpkfjVmilyrsFip9iT+81IbIdnP4irlFLkiFjPezkX7
pDfpVdlZThgR9a2KQgHqAal0l0FYx6K0pLWJ+20+1VZbV05HzD2rNwaFYr1yus2TW1yzqv7hzlSO
gPp7V1VQXlul1btE4HI4OPunsahq5UZWZxlFOkRo5GRxhlJBHvTazNwooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigArS0fUfsjmOXmBjkkDlT61m0UCavoeg6dfT2N3DeWM
xjmjO5HXn/8AWCK958J65D4g0hLuPCyqdk0Y/gcdv5EfWvmTw/es+baVs4GY8+np/n3r0P4d67/Y
uuqszYtLrEcuegP8LfgT+tdeHq8srPZnFXpXXme40UUV6Z54UUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFUbzVbS1B3yhn/upyaTaW40m9i9UdxPFbpvnkWNfVjXM3fiKeTK20axL/AHj8zf4V
jTzyzvumkZ29WOaylVS2No0W9zo73xHGuVs4y5/vvwPyrDu9QursYnmYrnO0cD9KqUVjKblubRpx
jsFFFHbNSWFFRPcwR/fniX6sKqyaxp8f3ruLPoDmldDL9FZD+ItNX/lsx+iE1C3iixHRZm+i0ueP
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
UUUAFFFFABRRRQAUUUUAFFFFABRRT4YzLKka4DOwUZ96AO2Y4UkDJ9BX0R4b0+PS9CsrOIACOMZx
3Y8k/iSTXz9ZJ5l7bR/35UX82Ar6SRdqKvoAK9DCLVs8zEvZC0UUV3HIFcFqchm1C4c93IrvG4U/
SvPJTulc+rE/rWFbodFBatjKKKz9U1FLWIqjBp2HAHb3NYHSlcXVNRSzTamGmI4X09zXLyyPK5eR
izHkk1IkU91JuVHkZj97HX8a17HQmZgbk5z/AMs05J/Gg00iYaqzsFRSzHsBk1pWmjXEvMv7lffk
/lXZ6V4fmdR5MCwR/wB5xj/65rptP0W2tPmYedJ/eccD6CrjTcjGddR2OH0vwr5+CkDSD+/Lwv8A
9euu0/w1bQKPPAcjoqjaoreoraNJI5p1pSI4YIoUCwxIi+iripKKo3uqWtmv7yQM/ZE5JrRtIySb
L1Ub7VbWzyJJA0g/gTk/j6Vz1/r1zcZWD9xH7HLH8ayCSSSTknkk1jKr/Kbxo/zGtf67c3OViPkR
+ink/jWSSSckkn3pKKxbb3N1FR2CiiikMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigCpfWEN2h3KFkxw46iuZvbOa0k2yrwejDoa7GmyxpLGUkU
Mp6g0FKVjza7i8uTI+6elc34lh/1MwX1Rjn8R/Wu98R2Ask4bcjn5M9R7Vx2vxh9NdjnKMGH54/r
XLUjZmsXqctRRRWJuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFdX
of8AyC4f+Bf+hGuUrovDTqbSVAfmD5I9iBj+Rqo7kVNjo7I/Iw9DVmqlkfmYVbpPccNhGUOCGGRU
D2gP3Gx7GrApRQnYbinuUGtpR0XP0NMMMn/PNvyrUFKKfMR7NGUIJD0jb8qeLWY/wY+prUFOFHMH
s0Zq2Mp6lR+NSrpx/ikH4Cr4pwoux8iKqabF/Ezn9Knjsrdf+WQP1JNTLTxSuVyodGiqMKoA9hUq
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
ZKQWEk3/ADzU8/j6Vz+oa7cXOUhzDEfQ/MfxrIrGVX+U3hR6yNC/1a6vMhn8uI/wJwPx9az6KKxb
b3N0ktEFFFFIYUUUyaVIYmklbaijJNAD6Kxv+El07YW3y5/u+Wcn+lU7jxXCF/0a2kY+shA/lmp5
49x2Z0tMlljhXdNIiL6scVw914iv58hJFhX0Qc/mazCJbh9x3yue5yT+dQ6q6DUTuLnxDp8AO2Uy
t6IM/rWPc+K5myLa3RP9qQ5/QVjR6dcP1Cr/ALxqzFpJP+tkH0UVm6rZapsiudYv7kESXLhT/CmF
H6VR+aR/4nY/ia6CHTreMg7Nx/2jmrsaKgwihR6AYrNyuaKmc5Dp11L0jKj1birsWiMf9bMB7KK2
1FSKtK5SgjOh0e1TllaQ/wC0f8KvQ2sMX+riRfotTqtPVaRSSQ1Vp4WnqtSBKBkQSnBKmCU8JQIg
CUuyrAjpfLoArbKNlWvLpPLoAqlKaUq2Y6aY6AKhSmFatlKYyUAVCtMK1aZKjZaBlYrTCKsMtMZa
AKzKD1AqGS3if70aH6irbLUZFAFB7C2b/lkB9CRVd9MhP3Wdf1rUIphFF2LlRjSaY4+44P1GKqy2
00f3kOPUc10BFMIp8xLpoxLO9uLOQPbSsmO2eD9RXQN4oL6c48vZefdBH3frVG5tUmU8AP2YVlXE
DwMA+OehHSrjNrYylCxVuZ1t4XmlJ2rye5NcfczPcTvLJjcx5wK6PX45XsSYz8qnc6jOSP8APP8A
+quXqJGlNaXCiiipNAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqe
xm8i8hk3bQrDJxnjv+lQUUAd2pwwPoa0hyKxrR2ktIXc5ZkUk++K1oG3RKfaqkZU97ElLSUoqTUU
UopBSigBwpwpgpwoAeKcKYKcKAJBTxUYNOBoAlFPFRA08GmBMpqRTUKmpFNAEympVNQKakU0AWVN
SoarK1Sq1Ai2jVMjVUVqlRqALqNU6NVFXqZHpgXkep0krPWSpVkoAvhxTtwqiJad5tAFzcKaXqr5
tIZKAJneoXao2kqNnoAV2qB2pXeoWagBHNQOac7VEzUgGOaiY05zUTGgBjGomp7Go2NAxjVG1OY0
xjQAw1Bc/wCol/3T/KpjUFz/AKiX/dP8qAZzlcLXdVwtORlTCiiipNQooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACnRu0ciuhwykEH3ptFAHeQymCaOYDJjYOPwOa+krWVZ7WGZGDLIgYEd
8ivma2kMttFI2NzoGOPcV9A+BZDJ4Q0ktnIgVOfbj+lehhHq0ebiVombtFFFdxxhTZHWKNnkYKij
JJ7VS1PVILAAN88p6Ip5+p9K5TUtRnv5MyHbGPuoOg/xrOdRRNYU3L0NLU/EDyZjssxp/wA9D94/
T0rBZizFmJJPUmkormlJy3OmMVHYKKKOnWkUFFZd/rtjZkqZPNkH8EfP5noKxrzxVK6YtIBGe7Od
1S5pDszrSQoJJAA6k1lX2vWNrwJPOf8Aux8/r0rirq8ubxs3E0knsTwPw6UkdrI/baPesnV7FKFz
au/FNzISLWKOFfVvmb/CsW6vLi6bNxM7+xPH5VOliM/M5P0FWooI4/uqM+p61k5tmipsy44JZPuo
cetW49OJ/wBY+PYVfFOFTzM0VNEMVlAmPk3H1bmrSgAYAAFIKeKRSSWw4CngU0VIooGOUU9RSKKk
UUAOUVIopqiplFAAoqVVoQVKq0CBVqRVpyLUqrQA1Up4SpVSpFjpgQhKcI6siOniOgCp5dBjq55V
IYqAKRjpjJV4xVG0dAFFkqNkq80dQulICmy1Ey1cZKhdaAKjLUbLVplqF1oGVmFRsKssKiYUAV2F
MIqZhUbCgCIioyKmYVGRSAjIqC4hE0ZU/gfQ1ZIqMimBz0qYLRyKD2INcjqtr9ku2RSNjDcvsM9K
7/UoPl80duDWBqtkLy34z5qAlPf2/GqeqMl7rscnRRRUGoUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAdToM4lsFTcS8Z2nJ/L8Mfyrbs2+Vl9Oa4zQ7kwXqoSBHK
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
1HMHszsp7u3g3ebMileq5yfy61TfW7VXIUSuP7yrwfzNczRRzDVNGvca5O4xCixDHX7x/wAP0rKd
2kctIzMx6ljk02ipvctJLYKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUATWtxJbTCWI4YfkR6GugsNXhnG2crDJ7n5T+PauZopp2JcUz0Czup7K5W4s5pIJ16Oh
wfp9Pauth8cy3EaprNqJ3UYFxBhZMe4PB/MV45a39xagCKQ7M/dPI/8ArfhWxa65C4AuFaNu7Dlf
8a0jUcdjGVK+p67aarZXf+puFz/db5T+Rrgb9t99cN6yN/OqkMsc8YeJ1dfUVJVSnzEpWCiiipGF
X4JPMQHv3qhUkD7JAT0PBqWrlQlZmhQKQUtQbiinCm0ooAcKcKYKcKAHinCoxThQBIDTwaiBp4NA
EoNPBqEGng0ATKakU1ADUgNMCdTUimq6mng0AWVapVaqqtUitQBbVqlVqpq1SK1Ai6r1Ir1SV6kD
0AXVkqQSe9UQ9OD0AXhJ70vme9Ug9LvpgWzJ700ye9Vd9IXoAsF6jZ6hL0xnpASM1RM1MZqYzUAK
zVEzUM1Rs1AwY1ExpWNRsaAEY1GxpSajJoARjTCaUmmE0gENMNKTTSaAGms7VT/qx9a0DWXqbZmU
ei01uRPY57xJ/wAeMf8A10H8jXN10XiV1FpEhPzF8gewBz/MVztEtwhsFFFFIsKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
BVYqwZSQwOQR2q9Bqt3FtHmb1HZxnP49f1qhRQJpM34deU4E8LDjqhzk/Q/41Omt2rOAwlQf3mXg
fka5minzMnkR18Wo2kuds6DH975f51PFNFLnypEfHXawOK4mr2kXf2S6BcnymGH/AKH/AD701Il0
+x21rLkbGPParVZSsGAZSCDyCO9X7eXzFwfvChrqOEujJhS0lKKk0Fpwpgp1ADhThTKUUASA04Go
wacDQBIDTwaiBpwNAEoNPBqEGng0ATKaeDUANPBpgWFanhqrg04NQBZVqkDVVDU8NQBaD08PVQNT
g1AFsPTg9VA1OD0AWt9Lvqrvo30CLW+k31W30b6AJy9NL1CXppagZKXpjNUZamlqAHlqYzUwtTC1
ADi1MY0hNMJoAUmmE0hNNJoACaYTQTTSaQATTCaUmmE0ABrHvG3XLn04rUlcJGzHsM1ik5JJ6mqi
Z1H0Oe8SShriKIYyikk59e36frWNVrVJDJqFwzYyHK8e3H9Kq0nuXFWQUUUUhhRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAa+jaktsphuCRFnKtydvtj0ro4pMbXjIIPII6EVwta2iah5EnkzviFvuk/wAJ
/oP8+tUn0M5R6o7OKZZAB0b0qWspWDAMpBB5BB61aiucDEnPvQ49gjPuXKUVGkiv91gafUmg4UoN
NzS0AOBpwNMFKDQBIDTgaiBpwNAEoNOBqIGnA0ASg04GoQacDQBMGp4aoAacDQBOGpwaoAaUNTAs
BqcGquGpd1AFgNS76g3Uu6gCffS76r7qXdQBPvpN9Q7qTdQBOXppaot1JuoAlLU0tUe6mlqAJC1N
LUwtTSaAHlqYTTSaQmkApNNJpCaaTQApNNJpCaaTQApNNJpGYKCWOB6mqc16oyIxuPqelO1xNpbh
qEoEfljlm61jahdLaWrSH73RRjOW7VZkf7zyN7kk1yutXQurv5CfLjG0c5B55I/z2qtkZL32Z9FF
FQbBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBc0+/lsmOzDRseUP9PQ1uxazZuuWdozn
oyn+ma5aimnYlxTO4jdZFDRsGU9CpyKmSeROjZHvXCRSSRNuidkbGMqcVoRa1douG8uQ56sv+GKf
MupHI1sdit3/AHl/KpBdx9935Vy8WvRlv3sDKuOqtu/wq/FqNpLnbOgx/e+X+dOyYXkjdWeNujj8
eKlBz0rIpQxHQkfSjlBVDYzSg1krPKvRz+NSreSDqFP4UuVle0RpA04Gs9b7+8n5GpFvYz13D8KV
mPnRdBpwNVFuoT/Hj61Ks0Z6Ov50DuicGnBqhVgehB+lOzSGShqcGqEGnZoAlDUoaos0uaAJd1Lu
qHdS7qYE26jdUW6jdQBLuo3VFmjdQBJuo3VFuozSAk3Uhao80hbHWgCTdTS1QtNGvV1H41E97Av8
efpzTFdFommk1QfUYx91WP6VC+oSH7qqv15osxOaNQmo3lRPvsB9TWQ9zM/Vz+HFQnk80+Ul1Oxq
PfQg8Fm+gqvJfOeEUKPfmsy4uoLcfvpVU4zjPP5dayrjXhjFvCc46yH+g/xp2SFeUtjed2c5difr
VGXUrONsNOpOM/Llv5Vz11qV1cAq0m1D/CnA/wAapUubsNU+5q6pqv2qMwwoViJ5LdT/AIc1lUUV
N7lpW2CiiigYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUASRTSxZ8
qR0z12sRmpotQu42ytxITjHzHd/OqtFArGrFrdygUOscgB5JGCfy4/SrH9v/APTt/wCRP/rVhUU7
sXIjok12AqPMilVu4XBH58VZ/tay/wCe3/jjf4VylFPmYvZo66LUrORsLOoOM/Nlf51PFPDK22KW
N2xnCsDXFUUcwvZo7qnB3HR2H41w0UkkTbonZGxjKnFSre3SsCLiXIOeXJo5hezZ2wuJh0lf86eL
ucf8tD+Qrjf7Wvf+e3/ji/4U+LWbtM7ikmf7y9PyxTug5JdzsRezj+IflSi/nH938q5H+3bn+5D+
R/xpya7OHHmRRMvcLkH8+aLoOWR1w1GbuE/Kl/tGX+6v5Vyv9v8A/Tt/5E/+tR/b/wD07f8AkT/6
1GgWmdV/aUv91aDqMvZVrlf7f/6dv/In/wBaj+3/APp2/wDIn/1qNAtM6k6jN6J+VIdQn/2fyrl/
7f8A+nb/AMif/WqOXXpi37qGNVx0Ylv8KLoLTOqN9cH+MflTTd3B6yn8MCuU/t25/uQ/kf8AGopd
ZvHbKusYx0VR/XNF0HLI60zynrK//fRphYnqSfqa5CXUryRcNOwGc/Lhf5VBLPNKu2WWR1znDMTS
5g9m+p2UskcS7pXVATjLHFVpdSs42w06k4z8uW/lXI0Ucw/Zo6mXWbNFyrtIc9FU/wBcVVfX1Dny
7dmXsWbB/LBrAopczHyI1p9cuH3CJUjB6HqR/T9KoSXlzJu3zykNnI3HH5VBRRcpRSCiiikMKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9kKZW5kc3RyZWFtCmVuZG9iagoyNQowCm9i
agoxMTE1NTIKZW5kb2JqCjI2CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovV2lkdGgKMTAwMAov
SGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVudAo4Ci9M
ZW5ndGgKMzAKMApSCi9GaWx0ZXIKL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO3VMU4iAQBAUWcS
wlhQkSj0UkGwoiaRrWzExLB7/5OsYyxM9gZ/37vDz7+7A/4HwzACScPwXfm4WE7TPZAzTcvF+FX6
uFytHzZA0MN6tRznnS9W26f9EQjaP21Xi2He+Xp3Or9cgJyX82m3noc+To+H8+vb9R2Iub69ng+P
09z5/eZ4uX7cgJyP6+W4uf/qfPv86/32G8i5vf963v7s/A8Qo3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAI2/8B4N9LOAplbmRzdHJlYW0KZW5kb2JqCjI5CjAKb2JqCjIyNTY4OQplbmRvYmoK
MzAKMApvYmoKMTU2OAplbmRvYmoKMzEKMApvYmoKMzcyNjcKZW5kb2JqCjE4CjAKb2JqCjw8Ci9G
b250Cjw8Ci9Gb250NAoxNAowClIKL0ZvbnQ3CjIzCjAKUgo+PgovUGF0dGVybgo8PAo+PgovWE9i
amVjdAo8PAovSW1hZ2U1CjIxCjAKUgovSW1hZ2U2CjIyCjAKUgovSW1hZ2U4CjI0CjAKUgo+Pgov
RXh0R1N0YXRlCjw8Ci9BbHBoYTAKMTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Qcm9jU2V0ClsK
L1BERgovVGV4dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagozMgowCm9iago8
PAovVHlwZQovUGFnZQovUGFyZW50CjEKMApSCi9NZWRpYUJveApbCjAKMAo3MjAKNDA1Cl0KL0Nv
bnRlbnRzCjMzCjAKUgovUmVzb3VyY2VzCjM0CjAKUgovQW5ub3RzCjM2CjAKUgovR3JvdXAKPDwK
L1MKL1RyYW5zcGFyZW5jeQovQ1MKL0RldmljZVJHQgo+Pgo+PgplbmRvYmoKMzMKMApvYmoKPDwK
L0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAozNQowClIKPj4Kc3RyZWFtCnictVdfcxs1ENeM
3wQPbeEFOrx1StMBRVr9nz6RCSFNA9SpU9M2PHQKTYZxWlL4DnweviE/yb47naPExD37xj5prd3V
/rS72r3gSkienm/nAyMt3m/O+QWXQkoVXbDS5BXLcyxKr3OunfVOZvZZNyFpvUmDGV+apN8zPuXv
oCQ929/N/jx7LfnpX3M9/MPpWpLP+NuHfIznYk326cO8p4INuLQrisUwffvx+evT3y3ffZ9VjjNf
iB2f8hTIC+UwdHKuOJDrscc5ewkDJRjSWTTfDIZ2SpEIpjSqpd0EmvE1mKsgfRA4XauMsyIrMz54
I6RuabOCpoL2IWZiy1vQekp1aDytG2U3aybpbbwwJkSyXGn4oY8+Nr5oPVkTpcUwKOuC0xhppUG2
afM7E8iYfODbe+/f/W249kKnD/HJ276PKyNsDMpFrqMIOsbo+GTuypPf+AP2zxaf/MG/n3S4LIkm
2H5JKmTJqsBXEOm3uE1h9YCdnLBnbJ/dYp+zEXvSTI/ZC3bInrMjdrzFf+WTg+vUX20ZURTeOFU3
rDVrE1BGEko6NxiSVXlfA6CnbBdQjYHeHmZjNgV4R+xnPAnGEfuE/ZBXfcY+XaX9aru0BJAOAVzd
x0aBVMYI7fOaYZCsCzzZYr9k1EZwQLgdcByxx3MHXBc1ZDloUqqucn3UqGIawomkVilRRCmM1Vr1
7Pt3lRkqCJc/l0QHn2ypSn3E7rIvVgJU268iKVS0UtUlbwocQhYlKBsUm4rQlOTuwYueIrO9YF+y
UZvw7rWjESJ3jOgs/ms57vY5VqbAmtXkkfWsCa5q9UaDloIThISrhwraukACfrdy1jvA72F+Dxi/
hNs3O01N+aY8FBsBc4w0qIvWpVr2DXPsPjCM6wWxlQJ3rKS6/I1B5HEuUDYsQjWhGs/9NfObFRpV
bqwKXisQUDsvDDAKwqWz4aNlptgyVuGANPmatBXV6v+qnlMbYNLgnCtvrTMidLRZR7MWiAnXq54L
2sdUz9GhADTeLornKkS+fpK5jjXC01J6f4QCa5zStPZt8t5DCXuI1LOP0RQFxTHbX528r3ZMclqE
KB1d2sAw50MhpG4ISZtIWMrtDYq7fBYNbdbRlA7RwgljPqAFc0ks+s1NCF90o8p6HxJLxsnH1Bmh
qawwtW2lkmVbuhIQ1GsUbUIcm9ZBB/R5pqDOSqoj71Ly6+27IK7htlkGukboCot+r77jHL64dLVC
Z5g2izod176hgjorqAphYBy6cFBzLbw0L7mwb2z5SqeVc6f11XhBJUCml0mfIB6muJqfs6/YHTwv
ESc/4Xubvcpx9Cy3LT8uIud2vsIPinV3FvG2g4xcrtzBBXaEi36Klbsp3kAhFFBND7nPXjah0odQ
SKkj4TKKjYU18G4G6SrqEPAWOpZBvnQDLI4CEYJPz5aO2tu17aiZd3lecKX9r+ccuMdkasZvdCNe
L/La/n5likzPfwbJwFEKZW5kc3RyZWFtCmVuZG9iagozNQowCm9iagoxMTA4CmVuZG9iagozNgow
Cm9iagpbCjw8Ci9UeXBlCi9Bbm5vdAovU3VidHlwZQovTGluawovUmVjdApbCjM2Ni43NQoxMDgu
MzUzMzEKNTkxLjk1OTYKMTE3Ljk1MzMxCl0KL0JvcmRlcgpbCjAKMAowCl0KL0EKPDwKL1R5cGUK
L0FjdGlvbgovUwovVVJJCi9VUkkKKGh0dHBzOi8vd2lraS54ZW5wcm9qZWN0Lm9yZy93aWtpL1hl
bl9Qcm9qZWN0X1NvZnR3YXJlX092ZXJ2aWV3KQo+Pgo+PgpdCmVuZG9iagozNwowCm9iago8PAov
U3VidHlwZQovSW1hZ2UKL0ludGVycG9sYXRlCnRydWUKL1dpZHRoCjEwMDAKL0hlaWdodAo0NjkK
L0NvbG9yU3BhY2UKL0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawozOQowClIK
L0ZpbHRlcgovRENURGVjb2RlCi9MZW5ndGgKNDAKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAEC
AAABAAEAAP/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYg
LCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/AABEIAdUD6AMBIgACEQEDEQH/xAAfAAAB
BQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiEx
QQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNU
VVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6
wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAA
AAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgU
QpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS
09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APlSiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKAP/9kKZW5kc3RyZWFtCmVuZG9iagozOAowCm9iago8PAovU3Vi
dHlwZQovSW1hZ2UKL0ludGVycG9sYXRlCnRydWUKL1dpZHRoCjY1MAovSGVpZ2h0CjMyNgovQ29s
b3JTcGFjZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL0ZpbHRlcgovRENURGVjb2Rl
Ci9MZW5ndGgKNDEKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUE
BgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgp
KP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKP/AABEIAUYCigMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID
BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHB
FVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2
d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna
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
Gtv9v/vo0f2Nbf7f/fRoooAP7Gtv9v8A76NH9jW3+3/30aKKAD+xrb/b/wC+jR/Y1t/t/wDfRooo
AP7Gtv8Ab/76NH9jW3+3/wB9GiigA/sa2/2/++jR/Y1t/t/99GiigA/sa2/2/wDvo0f2Nbf7f/fR
oooAP7Gtv9v/AL6NH9jW3+3/AN9GiigA/sa2/wBv/vo0f2Nbf7f/AH0aKKAD+xrb/b/76NH9jW3+
3/30aKKAD+xrb/b/AO+jR/Y1t/t/99GiigA/sa2/2/8Avo0f2Nbf7f8A30aKKAD+xrb/AG/++jR/
Y1t/t/8AfRoooAP7Gtv9v/vo0f2Nbf7f/fRoooAP7Gtv9v8A76NH9jW3+3/30aKKAD+xrb/b/wC+
jR/Y1t/t/wDfRoooAP7Gtv8Ab/76NH9jW3+3/wB9GiigA/sa2/2/++jR/Y1t/t/99GiigA/sa2/2
/wDvo0f2Nbf7f/fRoooAP7Gtv9v/AL6NH9jW3+3/AN9GiigA/sa2/wBv/vo0f2Nbf7f/AH0aKKAD
+xrb/b/76NH9jW3+3/30aKKAD+xrb/b/AO+jR/Y1t/t/99GiigA/sa2/2/8Avo0f2Nbf7f8A30aK
KAD+xrb/AG/++jR/Y1t/t/8AfRoooAP7Gtv9v/vo0f2Nbf7f/fRoooAP7Gtv9v8A76NH9jW3+3/3
0aKKAD+xrb/b/wC+jR/Y1t/t/wDfRoooAP7Gtv8Ab/76NH9jW3+3/wB9GiigA/sa2/2/++jR/Y1t
/t/99GiigA/sa2/2/wDvo0f2Nbf7f/fRoooAntdPgtm3Rqd3qTmrdFFAH//ZCmVuZHN0cmVhbQpl
bmRvYmoKMzkKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0aAoxMDAwCi9IZWlnaHQKNDY5
Ci9Db2xvclNwYWNlCi9EZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50CjgKL0xlbmd0aAo0Mgow
ClIKL0ZpbHRlcgovRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7dUxTiIBAEBRZxLCWFCRKPRSQbCi
JpGtbMTEsHv/k6xjLEz2Bn/fu8PPv7sD/gfDMAJJw/Bd+bhYTtM9kDNNy8X4Vfq4XK0fNkDQw3q1
HOedL1bbp/0RCNo/bVeLYd75enc6v1yAnJfzabeehz5Oj4fz69v1HYi5vr2eD4/T3Pn95ni5ftyA
nI/r5bi5/+p8+/zr/fYbyLm9/3re/uz8DxCjc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn0/ds5kPOj883xcv24ATkf18tx89X59Hg4v75d34GY69vr+fA4zZ0v17vT+eUC5Lyc
T7v18rPzYbHaPu2PQND+abtaDHfz0Ffrhw0Q9LBezTv/HPq4WE7TPZAzTcvFOO98Ln0YgaThu3Kg
7i83M5DDCmVuZHN0cmVhbQplbmRvYmoKNDAKMApvYmoKODE4NwplbmRvYmoKNDEKMApvYmoKMzU2
NDQKZW5kb2JqCjQyCjAKb2JqCjE1NjgKZW5kb2JqCjM0CjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250
NAoxNAowClIKL0ZvbnQ3CjIzCjAKUgo+PgovUGF0dGVybgo8PAo+PgovWE9iamVjdAo8PAovSW1h
Z2U1CjIxCjAKUgovSW1hZ2U5CjM3CjAKUgovSW1hZ2UxMAozOAowClIKPj4KL0V4dEdTdGF0ZQo8
PAovQWxwaGEwCjEwCjAKUgovQWxwaGEyCjEyCjAKUgo+PgovUHJvY1NldApbCi9QREYKL1RleHQK
L0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKNDMKMApvYmoKPDwKL1R5cGUKL1Bh
Z2UKL1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwo0NAow
ClIKL1Jlc291cmNlcwo0NQowClIKL0Fubm90cwo0NwowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3Bh
cmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjQ0CjAKb2JqCjw8Ci9GaWx0ZXIKL0Zs
YXRlRGVjb2RlCi9MZW5ndGgKNDYKMApSCj4+CnN0cmVhbQp4nLVVTW8TMRC1xM239s4dKuF4/G1x
IipVyqfSJgRCOVRAU6GkpYX/L5692aw3XyURrJV4/NbjGT/P895xEpKn9qwyjLTov874HZdCSoou
WGnyjOUxJqVuxrWz3snsPm0GSlpvkjHlS4P0f81H/AZBUuu8mP68vpR88quKw+8ne618za+OeB/t
bk/30VHOqXADL4sZxWRsvXM6u5x8t/z4NofsZ78QGz/yKigvyMF0sgoclGu5E1X+JQ8q8ZAOo/5l
NrQjUiKYclcLbBdu+ltI9yS1Fl5xkqR0EDKkcNJqrYQKBTotUaeVIeE90GaBAvyr0BSkx9Imk2iS
MePkrXVGhAabNpi1Ght2Gat9C6wVVIe6yhsrl3g9SL3xwpgQleXRiaCNt3MZ1Cl2B+gH97xzcnvz
23PsHsOrtoBiOhaTGBhU6hh840/Yc9ZjffaIfWJv2JCN2Ed2zN7D/oJ+hP4svx2xiwt2znpP+eAH
fznYENhgu8LlZyW6NniFDaxkUC/5ACHbDsiqaK1wBfEoDVJBGqFL4hcYRW2DrcCFcwkWcv0fi8/F
rGwMiRYzp0kHpdIVt8arkaUqZb2RESe1TPpuVphxRWQ17FYyC1ARJAnV6JR27V6Cu5ctoW6lkz5y
KyGCGEI1Z33OqT6NsFGTjz6LOwrlo1EFOi1QghSMwz0GNPkuj0sv5I60N1atrKrWr9UMGaFMSzOv
oYcR5PCBPWaHaGPo5B1+B+xzVtM5lHTG3sI+wbwD2EP2qph3OFddl+nWzC5zGJ3CGkN9Q6BdpqDM
Huykzx4b12ppU4ivn46KrIv1DteRtxulD6H/gt4ixjLJKzfN/CgiaTytvTRoK2vboNl3eVx4pfz3
Kw58RUE9nq2577SkjrjisaLb65ZM7Q+fhL7XCmVuZHN0cmVhbQplbmRvYmoKNDYKMApvYmoKNjc2
CmVuZG9iago0NwowCm9iagpbCjw8Ci9UeXBlCi9Bbm5vdAovU3VidHlwZQovTGluawovUmVjdApb
CjExNy4wNDU1OQoxMS4zMjU5MDYKMzQyLjI1NTE2CjIwLjkyNTkwNQpdCi9Cb3JkZXIKWwowCjAK
MApdCi9BCjw8Ci9UeXBlCi9BY3Rpb24KL1MKL1VSSQovVVJJCihodHRwczovL3dpa2kueGVucHJv
amVjdC5vcmcvd2lraS9YZW5fUHJvamVjdF9Tb2Z0d2FyZV9PdmVydmlldykKPj4KPj4KXQplbmRv
YmoKNDgKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAox
MDAwCi9IZWlnaHQKNDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQZXJDb21wb25lbnQK
OAovU01hc2sKNTAKMApSCi9GaWx0ZXIKL0RDVERlY29kZQovTGVuZ3RoCjUxCjAKUgo+PgpzdHJl
YW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQY
GBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHVA+gD
ASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF
BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0
NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKj
pKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QA
HwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEE
BSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZH
SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0
tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5
UooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//ZCmVuZHN0cmVhbQplbmRvYmoK
NDkKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAo3NTAK
L0hlaWdodAozOTkKL0NvbG9yU3BhY2UKL0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9G
aWx0ZXIKL0RDVERlY29kZQovTGVuZ3RoCjUyCjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAA
AQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwg
IyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAGPAu4DASIAAhEBAxEB/8QAHwAAAQUB
AQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEG
E1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLD
xMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAA
AAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKR
obHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU
1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACisqDxHo085hi1O0MoO3b5gBz6c1qgggEEEHoRUQqQn8LuVKMo7qwUUUVZIUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFIzBFLMcKBkn0rG0/wAVaDqEvl2Wr2Msh6Iswyfw
qlCUldImU4xaUna5tUUUVJQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVU1LUbPTIVm1C5jt4mb
aGkOAT6Um0ldgW6KqWGp2OoLusbuC4H/AEzcNVuhNPVAFFFFMAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKbI6RoXkZUQdWY4AoAdRTIpY5V3ROjr6qcin0AFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUVHLPDCVE0scZbpuYDNSAgjIORQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRTJ5Y4IXlmcJGilmY9AB3rGWfUdQj+0rOmmWJ5QugaVl/vHPCj25NZzqKOm7KjB
vU8z1r4a60s09xbNbXIZ2fYrFW5Oe/FZOheJta8J3xt5xKYkOJLSfPH0z0r2JTqcEf2i0vItVgH3
oyqq5H+yy8Z9iPxrN8V6FZ+L9BFzaqBeKhaCTGGyOqN+PGOxr52tlag3VwbcZrW3f0PVhjOb3K6T
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
oCeWUO0AZ4bdjnHrzUV7ZXdtNPP5siQQI7xSyS5wdsZxknOCysKcsRJX916CVJPqXdc8MWesXCTz
STxSxw+TG0ZA2ESJIrDIPIaNevHtTdC8L22k6lJqC3FxcXsyuJpZSv7wuwYsQAAPugADjAqdVvn0
OOdd/wBuJFx5W7HU58v6Y+Ws8WesJeRbpZXUBDuDfL0O8H5vX2Pb0qpV2rWi3cSpp31NXStGs9Ll
vZ4VBlurh7mSRwNwLYyAcdOKh8PeH7HRZtQnsWkY303nNuYEIDkhE9FBZiB/tGs5bHVIJLTy2uZD
5KiTfNkBiDuOd3r2II6YxSG01f7O6D7QLoowMnmjYV2/KFGeGBxzjseeaj6zL+RleyX8yNDXvCui
69avb6pp8E0TyLI42hS5Ug4YjkjI5HetbfBb+VDuji3fJGmQM4HQD6VmG2vYrDUYbd5SxfNuWky2
3auQCenO7GarafYXJ1aG5mjmWCPzREJZNzICExnk55DetW6srpKP9XJUFq2zd8+L/nqn3tn3h970
+vtUlc3Np97/AGxNfwwqqvujSMn7rbcCb0yenriobGw1STykupLpYd2ZB5m052NnkMTjdj/Cp9vO
9uRj9lG1+Y6qiq2miZdPtluiTcCNRJk5O7HNWa6Yu6uZNWdgooopiCiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACjAznHPrRRQAUUUUAIVUsGIBYdDjpS0UUAFFFFABRRRQAUUUUAFFFFABQQCMEZFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/2QplbmRzdHJlYW0KZW5kb2JqCjUw
CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JT
cGFjZQovRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVudAo4Ci9MZW5ndGgKNTMKMApSCi9GaWx0
ZXIKL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO3VMU4iAQBAUWcSwlhQkSj0UkGwoiaRrWzExLB7
/5OsYyxM9gZ/37vDz7+7A/4HwzACScPwXfm4WE7TPZAzTcvF+FX6uFytHzZA0MN6tRznnS9W26f9
EQjaP21Xi2He+Xp3Or9cgJyX82m3noc+To+H8+vb9R2Iub69ng+P09z5/eZ4uX7cgJyP6+W4uf/q
fPv86/32G8i5vf963v7s/A8Qo3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9P3bOZDzo/PN8XL9uAE5H9fLcfPV+fR4OL++Xd+BmOvb6/nwOM2dL9e70/nlAuS8nE+79fKz82Gx
2j7tj0DQ/mm7Wgx389BX64cNEPSwXs07/xz6uFhO0z2QM03LxTjvfC59GIGk4btyoO4vNzOQwwpl
bmRzdHJlYW0KZW5kb2JqCjUxCjAKb2JqCjgxODcKZW5kb2JqCjUyCjAKb2JqCjM4Njk4CmVuZG9i
ago1MwowCm9iagoxNTY4CmVuZG9iago0NQowCm9iago8PAovRm9udAo8PAovRm9udDcKMjMKMApS
Ci9Gb250NAoxNAowClIKPj4KL1BhdHRlcm4KPDwKPj4KL1hPYmplY3QKPDwKL0ltYWdlNQoyMQow
ClIKL0ltYWdlMTEKNDgKMApSCi9JbWFnZTEyCjQ5CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBo
YTAKMTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VC
Ci9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iago1NAowCm9iago8PAovVHlwZQovUGFnZQovUGFy
ZW50CjEKMApSCi9NZWRpYUJveApbCjAKMAo3MjAKNDA1Cl0KL0NvbnRlbnRzCjU1CjAKUgovUmVz
b3VyY2VzCjU2CjAKUgovQW5ub3RzCjU4CjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQov
Q1MKL0RldmljZVJHQgo+Pgo+PgplbmRvYmoKNTUKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNv
ZGUKL0xlbmd0aAo1NwowClIKPj4Kc3RyZWFtCnictVRRb9QwDI7Em+GHwCRyiZM4jngCjdMQvNxU
dLxOwO6E2o0b/H/hpNcmt42NDWjUxv5qx85nyzuw2kBeL0fBmyD75wF2YLQxNhEH44vFdV2M8jaA
oxDJFPe+KmhC9Fno4ZqSv1tYw4UEyWvxuv++PTOw+THGgavNo07ewvkRrGTtHum+Pio5NW7Cy2zR
GMvVF++Gs83XAMeXJeSq+HGqfjYiY9SWRCQzBmakA3frRv+WB8w85GJMb2HDkbWo2be3mrGHcLO6
g3TLJrKW8gbrKegSzEeOXhs3Y32DWXaRUwFn3wY7COp4arUqlT6blLz7qL3nhAGsk0aMKaZ9M045
vulk765gsby8+OkBJQ/ozg/bOGUioiSY5IFu7NPuCzx/Ad03eNs9/DRy2hki8redds8N/4jx3Ds+
CwPYGAJ5zRXrKxaCkzrTAeMN9jeMJ9IspQ13ER7B4W8ocl5HbOlRr9SJWqkn6lh9VEv1Xn1Qa0GW
8v0kyIn8eSraqdis1bP7SmNZU3luBHch6mAD4c0U/kGFCBFZO6wsD4DMyVgtnDXUV9CyTxM6u7dg
M6j+z/H7QYZIFFEn3JOFaRxEt3jVkeTrSMvrFzd6Kk0KZW5kc3RyZWFtCmVuZG9iago1NwowCm9i
ago0NjAKZW5kb2JqCjU4CjAKb2JqClsKXQplbmRvYmoKNTkKMApvYmoKPDwKL1N1YnR5cGUKL0lt
YWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAoxMDAwCi9IZWlnaHQKNDY5Ci9Db2xvclNwYWNl
Ci9EZXZpY2VSR0IKL0JpdHNQZXJDb21wb25lbnQKOAovU01hc2sKNjEKMApSCi9GaWx0ZXIKL0RD
VERlY29kZQovTGVuZ3RoCjYyCjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBD
AAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8t
MC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHVA+gDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAA
AAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB
kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT
1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI
CQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6
goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigD//ZCmVuZHN0cmVhbQplbmRvYmoKNjAKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdl
Ci9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAo4OTIKL0hlaWdodAo1MTAKL0NvbG9yU3BhY2UKL0Rl
dmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawo2MwowClIKL0ZpbHRlcgovRENURGVj
b2RlCi9MZW5ndGgKNjQKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQF
BgUEBgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgw
JSgpKP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKP/AABEIAf4DfAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAA
AQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj
QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpz
dHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX
2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/
xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEK
FiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SF
hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo
6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APlSiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAK9v+Cfwp03x9ot7dXl7NavbSJGBHGrbsrnJzXiFfW37Iv/
ACKus/8AXxH/AOgVyY2pKnRcouzNaMVKdmH/AAzVof8A0Gbv/vwlH/DNWh/9Bm7/AO/CV71RXifX
q/8AMdnsYdjwX/hmrQ/+gzd/9+Eo/wCGatD/AOgzd/8AfhK96oo+vV/5g9jDseC/8M1aH/0Gbv8A
78JR/wAM1aH/ANBm7/78JXvVFH16v/MHsYdjwX/hmrQ/+gzd/wDfhKP+GatD/wCgzd/9+Er3qij6
9X/mD2MOx4L/AMM1aH/0Gbv/AL8JR/wzVof/AEGbv/vwle9UUfXq/wDMHsYdjwX/AIZq0P8A6DN3
/wB+Eo/4Zq0P/oM3f/fhK96oo+vV/wCYPYw7Hgv/AAzVof8A0Gbv/vwlH/DNWh/9Bm7/AO/CV71R
R9er/wAwexh2PBf+GatD/wCgzd/9+Eo/4Zq0P/oM3f8A34SveqKPr1f+YPYw7Hgv/DNWh/8AQZu/
+/CUf8M1aH/0Gbv/AL8JXvVFH16v/MHsYdjwX/hmrQ/+gzd/9+Eo/wCGatD/AOgzd/8AfhK96oo+
vV/5g9jDseC/8M1aH/0Gbv8A78JR/wAM1aH/ANBm7/78JXvVFH16v/MHsYdjwX/hmrQ/+gzd/wDf
hKP+GatD/wCgzd/9+Er3qij69X/mD2MOx4L/AMM1aH/0Gbv/AL8JR/wzVof/AEGbv/vwle9UUfXq
/wDMHsYdjwX/AIZq0P8A6DN3/wB+Eqrqn7Oei2emXd0ur3TNDC8gUwJglVJx+lfQlZ/iP/kXtU/6
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
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXw14x/wCR
jvv+u0n/AKG1fctfDXjH/kY77/rtJ/6G1efj9onVhd2YtFFFeadgV9Nfsy/8i5qn/XaP/wBAr5lr
6a/Zl/5FzVP+u0f/AKBXVg/4qMcR8DPZaKKK9g88KKKKACiiigAooooAKKKKACiiigArh9W/5K7o
P/YOn/mK7iuH1b/krug/9g6f+YrOrsvVfmXDqdxRRRWhAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFR3MK3FvLDIXCSKUJRir
AEY4I5B9xQBJRXjvg3W9T8E+O5/CHiq+uLyyvn83S7+5kLls8BCx9emOzD0ar3xI8RajrfiG38D+
D7h4b+UiTUL2JiPskQwcZHQ9CfqB34x9suW/Xa3maezd7HqlFVNKsk0zTLezWaaZYECebPIXd8dW
Zj1J61mx+L/Dcl99jTXtLa6J2iIXSEk+nXr7VrzJbkWvsbtFR3M8NrbyT3MscMEalnkkYKqgdSSe
AKyr/wAU6Bp8ME17rWnQRTrviZ7lAJF9V55HuKG0twSb2NmioLK7tr62S5sriG4t3GUlhcOrfQjg
1PTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFfDXjH/kY77/AK7Sf+ht
X3LXw14x/wCRjvv+u0n/AKG1efj9onVhd2YtFFFeadgV9Nfsy/8AIuap/wBdo/8A0CvmWvpr9mX/
AJFzVP8ArtH/AOgV1YP+KjHEfAz2WiiivYPPCiiigAooooAKKKKACiiigAooooAK4fVv+Su6D/2D
p/5iu4rh9W/5K7oP/YOn/mKzq7L1X5lw6ncUUUVoQFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRVDXdVttE0i61G+Zlt7dC7bR
lj6ADuScAfWhu2rHuebftEtpcnheztZ0eXXZbhRpiQ/6wPkBj67cYHudv4U/2d5rJYNctbxJU8Vr
cs2oG4bMjjPBHsDnPuc9xUvwx0a+8WeJJ/HviiEozEx6XaOOIYxkbsH8QPUlm9KX4ueH77Q9ZtfH
vhaM/brQhb6BRxPH03EDrxwfbB7Zrjd+b29tP07/ANdDfS3sx/7RGuyafo2kaSt09nb6rcFLqdMl
lgXbvGByR84JA64x3rn59S+C8mhtpirFGNmxblbObzwcfe37ck55549sVvfEaC48beEfD/ivwtC8
17pk4u0tWX5+oLpjuwZF47gHGeMyN8ZvDf8AZp8vT706zt2jTTbHf5n93djGM9+uO3alNrnbk1Z7
XVxxT5UkjC8Ga9c6z8BPE9veTtcSadDPbJK2cvHsBXOeeMkfQCtb4Q+AdAv/AAJp+o61YRale3kZ
LSXOX2ICVVFB+6AAOn+FaM7eIbr4La7P4phii1K4tJnWCKLYUQr8oYf3up/EDqDW78HUZPhnoCup
VhAcgjBHztVU4Jyipa6ClKydu5yXwWthovjTxzoNo7/2ba3CPBEzE7Mlun4bR/wEV6/XlXw2ikT4
sfEF3RlVpYtpIwD97pXqta0NIW9fzM6vxBRRRWxmFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAV8NeMf+Rjvv8ArtJ/6G1fctfDXjH/AJGO+/67Sf8AobV5+P2idWF3Zi0UUV5p2BX0
1+zL/wAi5qn/AF2j/wDQK+Za+mv2Zf8AkXNU/wCu0f8A6BXVg/4qMcR8DPZaKKK9g88KKKKACiii
gAooooAKKKKACiiigArh9W/5K7oP/YOn/mK7iuH1b/krug/9g6f+YrOrsvVfmXDqdxRRRWhAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUm0bt2BuxjPelooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAr4a8Y/wDIx33/AF2k/wDQ2r7lr4a8Y/8AIx33/XaT/wBDavPx+0Tqwu7M
WiiivNOwK+mv2Zf+Rc1T/rtH/wCgV8y19Nfsy/8AIuap/wBdo/8A0CurB/xUY4j4Gey0UUV7B54U
UUUAFFFFABRRRQAUUUUAFFFFABXD6t/yV3Qf+wdP/MV3FfO3iL4j6nZePxeXOmWy3WmLNZeWHba2
W+9+lYYipGCXN3NaUXJux9E0Vn6Bc3d5otlc6jAlvdzRCSSJCSEJ5xz3Axn3rQrdO6uZvQKKKKBB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFfDXjH/kY77/rtJ/6G1fctfDXjH/kY77/rtJ/6G1efj9onVhd2YtFFFeadgV7v8DvGGmeG
dDvYdSW6LzSI6+TCXGAuOcV4RX1B+y7/AMi1qv8A12j/APQKPbOh78TOqk46nQ/8LW8O/wBzUv8A
wEaj/ha3h3+5qX/gI1elUU/7Xq9kcnLDsea/8LW8O/3NS/8AARqP+FreHf7mpf8AgI1elUUf2vV7
IOWHY81/4Wt4d/ual/4CNR/wtbw7/c1L/wABGr0qij+16vZByw7Hmv8Awtbw7/c1L/wEaj/ha3h3
+5qX/gI1elUUf2vV7IOWHY81/wCFreHf7mpf+AjUf8LW8O/3NS/8BGr0qij+16vZByw7Hmv/AAtb
w7/c1L/wEaj/AIWt4d/ual/4CNXpVFH9r1eyDlh2PNf+FreHf7mpf+AjV5Z4lvtA1b4n2usFLz+y
n2TXSG2bczoMYC9wcJn6mvp2ionmc6itKKKi4x2PNf8Aha3h3+5qX/gI1H/C1vDv9zUv/ARq9Koq
/wC16vZE8sOx5r/wtbw7/c1L/wABGo/4Wt4d/ual/wCAjV6VRR/a9Xsg5YdjzX/ha3h3+5qX/gI1
H/C1vDv9zUv/AAEavSqKP7Xq9kHLDsea/wDC1vDv9zUv/ARqP+FreHf7mpf+AjV6VRR/a9Xsg5Yd
jzX/AIWt4d/ual/4CNR/wtbw7/c1L/wEavSqKP7Xq9kHLDsea/8AC1vDv9zUv/ARqP8Aha3h3+5q
X/gI1elUUf2vV7IOWHY81/4Wt4d/ual/4CNR/wALW8O/3NS/8BGr0qij+16vZByw7Hmv/C1vDv8A
c1L/AMBGo/4Wt4d/ual/4CNXpVFH9r1eyDlh2PNf+FreHf7mpf8AgI1H/C1vDv8Ac1L/AMBGr0qi
j+16vZByw7Hmv/C1vDv9zUv/AAEaj/ha3h3+5qX/AICNXpVFH9r1eyDlh2PNf+FreHf7mpf+AjUf
8LW8O/3NS/8AARq9Koo/ter2QcsOx5r/AMLW8O/3NS/8BGo/4Wt4d/ual/4CNXpVFH9r1eyDlh2P
Nf8Aha3h3+5qX/gI1H/C1vDv9zUv/ARq9Koo/ter2QcsOx5r/wALW8O/3NS/8BGo/wCFreHf7mpf
+AjV6VRR/a9Xsg5YdjzX/ha3h3+5qX/gI1H/AAtbw7/c1L/wEavSqKP7Xq9kHLDsea/8LW8O/wBz
Uv8AwEaj/ha3h3+5qX/gI1elUUf2vV7IOWHY81/4Wt4d/ual/wCAjUf8LW8O/wBzUv8AwEavSqKP
7Xq9kHLDsea/8LW8O/3NS/8AARqP+FreHf7mpf8AgI1elUUf2vV7IOWHY81/4Wt4d/ual/4CNR/w
tbw7/c1L/wABGr0qij+16vZByw7Hmv8Awtbw7/c1L/wEaj/ha3h3+5qX/gI1elUUf2vV7IOWHY81
/wCFreHf7mpf+AjUf8LW8O/3NS/8BGr0qij+16vZByw7Hmv/AAtbw7/c1L/wEaj/AIWt4d/ual/4
CNXpVFH9r1eyDlh2PNf+FreHf7mpf+AjUf8AC1vDv9zUv/ARq9Koo/ter2QcsOx5r/wtbw7/AHNS
/wDARqP+FreHf7mpf+AjV6VRR/a9Xsg5YdjzX/ha3h3+5qX/AICNR/wtbw7/AHNS/wDARq9Koo/t
er2QcsOx5r/wtbw7/c1L/wABGo/4Wt4d/ual/wCAjV6VRR/a9Xsg5YdjzX/ha3h3+5qX/gI1H/C1
vDv9zUv/AAEavSqKP7Xq9kHLDsea/wDC1vDv9zUv/ARqP+FreHf7mpf+AjV6VRR/a9Xsg5YdjzX/
AIWt4d/ual/4CNR/wtbw7/c1L/wEavSqKP7Xq9kHLDsea/8AC1vDv9zUv/ARqP8Aha3h3+5qX/gI
1elUUf2vV7IOWHY81/4Wt4d/ual/4CNR/wALW8O/3NS/8BGr0qij+16vZByw7Hmv/C1vDv8Ac1L/
AMBGo/4Wt4d/ual/4CNXpVFH9r1eyDlh2PNf+FreHf7mpf8AgI1H/C1vDv8Ac1L/AMBGr0qij+16
vZByw7Hmv/C1vDv9zUv/AAEaj/ha3h3+5qX/AICNXpVFH9r1eyDlh2PNf+FreHf7mpf+AjUf8LW8
O/3NS/8AARq9Koo/ter2QcsOx5r/AMLW8O/3NS/8BGo/4Wt4d/ual/4CNXpVFH9r1eyDlh2PNf8A
ha3h3+5qX/gI1H/C1vDv9zUv/ARq9Koo/ter2QcsOx5r/wALW8O/3NS/8BGo/wCFreHf7mpf+AjV
6VRR/a9Xsg5YdjzX/ha3h3+5qX/gI1H/AAtbw7/c1L/wEavSqKP7Xq9kHLDsea/8LW8O/wBzUv8A
wEaj/ha3h3+5qX/gI1elUUf2vV7IOWHY81/4Wt4d/ual/wCAjUf8LW8O/wBzUv8AwEavSqKP7Xq9
kHLDsea/8LW8O/3NS/8AARqP+FreHf7mpf8AgI1elUUf2vV7IOWHY81/4Wt4d/ual/4CNR/wtbw7
/c1L/wABGr0qij+16vZByw7Hmv8Awtbw7/c1L/wEaj/ha3h3+5qX/gI1elUUf2vV7IOWHY81/wCF
reHf7mpf+AjUf8LW8O/3NS/8BGr0qij+16vZByw7Hmv/AAtbw7/c1L/wEaj/AIWt4d/ual/4CNXp
VFH9r1eyDlh2PNf+FreHf7mpf+AjV8r+LG83W7mYKypJI7LuGDgsTyPxFfeVfGHxt/5KLrP/AF8t
/JaTxssS7SWxtQSTdjg6KKKDpCvqD9l3/kWtV/67R/8AoFfL9fUH7Lv/ACLWq/8AXaP/ANArGv8A
AzOr8J7XRRRXAcgUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFfGHxt/5KLrP
/Xy38lr7Pr4w+Nv/ACUXWf8Ar5b+S104b4mbUdzg6KKK7DpCvqD9l3/kWtV/67R/+gV8v19Qfsu/
8i1qv/XaP/0Csa/wMzq/Ce10UUVwHIFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFMlkWKJ5H
+6ilj9BWJ4M8VaZ4w0p9R0V5WtklMJMqbDuABPH0YU7PcdjeoqlrWpW+jaRealelhbWsTTSFRk7Q
MnAqLw5rVn4i0S11XTWdrS5UtGXXacAkcj6g0W0uFuppUUUUhBRRRQAUVi+LvEun+E9GbU9XaRbV
XWMmNNxyenFa8UiyxJIn3XUMPoaduo7D6KKKQgooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAK+MPjb/yUXWf+vlv5LX2fXxh8bf8Akous/wDXy38lrpw3xM2o7nB0UUV2
HSFfUH7Lv/Itar/12j/9Ar5fr6g/Zd/5FrVf+u0f/oFY1/gZnV+E9rooorgOQKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAr6j/wAg+6/65N/I14l+zj4k0PSPAdzb6rrOm2M5v5HEdzdJExUpGAcM
QccHn2r23Uf+Qfdf9cm/ka8E/Z98E+HPEXgi4vNb0qC8uVvpIhI5bIUIhA4PqT+dbQtyO5pG3K7n
e/Erxf4avPAHiC3tPEOjz3EtlKkcUV7EzOxU4AAbJNM+Feq2mh/BHStT1GTy7S1tpJJGAycCR+AO
5PQD1NUfiH8N/COm+BtdvbHQ7aG6gs5JIpFLZVgpwetQeEdc03w9+z3puoa1apeWiQsv2Z1DCZjM
21cHI64Oe2M07Jxsu47Jx07k1p498ca3Zrqfh3wOr6VIC0L3N6iSSr/eCkjGfx9ia6j4a+OIfGun
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
/kous/8AXy38lrpw3xM2o7nB0UUV2HSFfUH7Lv8AyLWq/wDXaP8A9Ar5fr6g/Zd/5FrVf+u0f/oF
Y1/gZnV+E9rooorgOQKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvjD42/8A
JRdZ/wCvlv5LX2fXxh8bf+Si6z/18t/Ja6cN8TNqO5wdFFFdh0hX1B+y7/yLWq/9do//AECvl+u7
8E/EnVvB9jLbaSY1SZgz74g+SBjjms6sXKNkROLkrI+0KK+Uv+F8eKf+elt/4DL/AI0f8L48U/8A
PS2/8Bl/xrl+rzMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+raK+Uv
+F8eKf8Anpbf+Ay/40f8L48U/wDPS2/8Bl/xo+rzD2Mj6tor5S/4Xx4p/wCelt/4DL/jR/wvjxT/
AM9Lb/wGX/Gj6vMPYyPq2ivlL/hfHin/AJ6W3/gMv+NH/C+PFP8Az0tv/AZf8aPq8w9jI+ra+MPj
b/yUXWf+vlv5LXRf8L48U/8APS2/8Bl/xrznxTrk/iHV59Ru8faJ2LyELtBJx0H4VtRpSg7s0pwc
XdmPRRRXQbBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAf/ZCmVuZHN0cmVhbQplbmRvYmoKNjEKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0
aAoxMDAwCi9IZWlnaHQKNDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9u
ZW50CjgKL0xlbmd0aAo2NQowClIKL0ZpbHRlcgovRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7dUx
TiIBAEBRZxLCWFCRKPRSQbCiJpGtbMTEsHv/k6xjLEz2Bn/fu8PPv7sD/gfDMAJJw/Bd+bhYTtM9
kDNNy8X4Vfq4XK0fNkDQw3q1HOedL1bbp/0RCNo/bVeLYd75enc6v1yAnJfzabeehz5Oj4fz69v1
HYi5vr2eD4/T3Pn95ni5ftyAnI/r5bi5/+p8+/zr/fYbyLm9/3re/uz8DxCjc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
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
aA82tAcb2oMN7cGG9mBDe7ChPdjQHmxoDza0Bxvagw3twYb2YEN7sKE92NAebGgPNrQHG9qDDe3B
hvZgQ3uwoT3Y0B5saA82tAcb2oMN7cGG9mBDe7ChPdjQHmxoDza0Bxvagw3twYb2YEN7sKE92NAe
bGgPNrQHG9qDDe3BhvZgQ3uwoT3Y0B5saA82tAcb2oMN7cGG9mBDe7ChPdjQHmxoDza0Bxvagw3t
wYb2YEN7sKE92NAebGgPNrQHG9qDDe3BhvZgQ3uwoT3Y0B5saA82tAcb2oMN7cGG9mBDe7ChPdjQ
HmxoDza0Bxvagw3twYb2YONxe7f1NDi128P2LrcDeJUn6QEAAAAAAAAAAAAAAAAAwA/3D7er6rAK
ZW5kc3RyZWFtCmVuZG9iago2NAowCm9iagozNTE0NgplbmRvYmoKNjUKMApvYmoKMTU2OAplbmRv
YmoKNjYKMApvYmoKMjA3NQplbmRvYmoKNTYKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQ0CjE0CjAK
UgovRm9udDcKMjMKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUKMjEK
MApSCi9JbWFnZTEzCjU5CjAKUgovSW1hZ2UxNAo2MAowClIKPj4KL0V4dEdTdGF0ZQo8PAovQWxw
aGEwCjEwCjAKUgovQWxwaGEyCjEyCjAKUgo+PgovUHJvY1NldApbCi9QREYKL1RleHQKL0ltYWdl
QgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKNjcKMApvYmoKPDwKL1R5cGUKL1BhZ2UKL1Bh
cmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwo2OAowClIKL1Jl
c291cmNlcwo2OQowClIKL0Fubm90cwo3MQowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3BhcmVuY3kK
L0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjY4CjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVj
b2RlCi9MZW5ndGgKNzAKMApSCj4+CnN0cmVhbQp4nLVU224UMQyNxJt/BKhENk4cx3kElZvEA1sN
VH2sgO4KzbRs4f+Fk92ZybalpS1MNGPnKL7k2OMNoHVQ1outQi6q/DLABpx1DjNLdFRPXN3roSIG
CBwTu2rezxvvYqKi9HBlU75rOIZzDVLW4mX/Y33qYPVzGwcuVw/yvIazA1jq2jzQ/Pig5tSYKS/T
ieawXn3xfjhdfYtweFFDLqud5NkOkxefLLKq7LaBxfOeOe7sWx584aEUY3wrG4ERvRVqbzVh9+Fm
eQvpKC6J1fJGJI62BqMkiawLE9Y3GEpIkis42TbYXtAgY6vNWu2zcVMkJUsk2UfAoI2Ycsq7Zhxz
fNWp7C5h8ebi/BeB1zygO9tv41yISJpg1ge6bZ92X+HZc+i+w+vu/t442OCYmW7ydscN/4rx0jtU
lAEwxchkZcb6GYsxaJ15j/EGewzjma1oaeNthCcI/g8UBbLJt/SYp+aT+WBOzDuVT8xbc2Q+mkNF
lubzXYVAsVyfa6E8odUhpGleC/gP6sFZ/5jiduJ0AJ8ZJVplqCF6BlEoj+hk3oLNWPo/7ndjy3tm
dDb6HVnqo46dG6zmAcTzACvrNwX+KK0KZW5kc3RyZWFtCmVuZG9iago3MAowCm9iago0NTAKZW5k
b2JqCjcxCjAKb2JqClsKXQplbmRvYmoKNzIKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRl
cnBvbGF0ZQp0cnVlCi9XaWR0aAoxMDAwCi9IZWlnaHQKNDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VS
R0IKL0JpdHNQZXJDb21wb25lbnQKOAovU01hc2sKNzQKMApSCi9GaWx0ZXIKL0RDVERlY29kZQov
TGVuZ3RoCjc1CjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBQYFBAYG
BQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/
2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCj/wAARCAHVA+gDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF
BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS
0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4
eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi
4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl
8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImK
kpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP0
9fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
D//ZCmVuZHN0cmVhbQplbmRvYmoKNzMKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBv
bGF0ZQp0cnVlCi9XaWR0aAo4OTcKL0hlaWdodAo1MTMKL0NvbG9yU3BhY2UKL0RldmljZVJHQgov
Qml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawo3NgowClIKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5n
dGgKNzcKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcH
BggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMB
BwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKP/AABEIAgEDgQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJ
Cgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQz
YnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm
5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIE
BAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZ
GiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SV
lpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4
+fr/2gAMAwEAAhEDEQA/APlSiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiipLf/j4i/3h/OgA8iX/AJ5P/wB8mjyJf+eT/wDfJr7Q+F3w+8Ka
p8PtCvdQ0Kznu57cPJK6nLHJ5PNdV/wq/wAFf9C5Yf8AfJ/xrzZ5nTjJxaeh0LDyavc+BfIl/wCe
T/8AfJo8iX/nk/8A3ya++v8AhV/gr/oXLD/vk/40f8Kv8Ff9C5Yf98n/ABqf7Vp/ysf1aXc+BfIl
/wCeT/8AfJo8iX/nk/8A3ya++v8AhV/gr/oXLD/vk/40f8Kv8Ff9C5Yf98n/ABo/tWn/ACsPq0u5
8C+RL/zyf/vk0eRL/wA8n/75NffX/Cr/AAV/0Llh/wB8n/Gj/hV/gr/oXLD/AL5P+NH9q0/5WH1a
Xc+BfIl/55P/AN8mjyJf+eT/APfJr76/4Vf4K/6Fyw/75P8AjR/wq/wV/wBC5Yf98n/Gj+1af8rD
6tLufAvkS/8APJ/++TR5Ev8Azyf/AL5NffX/AAq/wV/0Llh/3yf8aP8AhV/gr/oXLD/vk/40f2rT
/lYfVpdz4F8iX/nk/wD3yaPIl/55P/3ya++v+FX+Cv8AoXLD/vk/40f8Kv8ABX/QuWH/AHyf8aP7
Vp/ysPq0u58C+RL/AM8n/wC+TR5Ev/PJ/wDvk199f8Kv8Ff9C5Yf98n/ABo/4Vf4K/6Fyw/75P8A
jR/atP8AlYfVpdz4F8iX/nk//fJo8iX/AJ5P/wB8mvvr/hV/gr/oXLD/AL5P+NH/AAq/wV/0Llh/
3yf8aP7Vp/ysPq0u58C+RL/zyf8A75NHkS/88n/75NffX/Cr/BX/AELlh/3yf8aP+FX+Cv8AoXLD
/vk/40f2rT/lYfVpdz4F8iX/AJ5P/wB8mjyJf+eT/wDfJr76/wCFX+Cv+hcsP++T/jWV4r+G3g+1
8L6xcW/h+yjnhs5pI3CnKsEJBHPrTWaU27WYnhpLqfDXkS/88n/75NHkS/8APJ/++TX138N/Avhn
UvA2jXl9o1rPczQBpJGByxyeTzXS/wDCuPCH/QAsv++T/jXpnOfD/kS/88n/AO+TR5Ev/PJ/++TX
3B/wrjwh/wBACy/75P8AjR/wrjwh/wBACy/75P8AjQB8P+RL/wA8n/75NHkS/wDPJ/8Avk19wf8A
CuPCH/QAsv8Avk/40f8ACuPCH/QAsv8Avk/40AfD/kS/88n/AO+TR5Ev/PJ/++TX3B/wrjwh/wBA
Cy/75P8AjR/wrjwh/wBACy/75P8AjQB8P+RL/wA8n/75NHkS/wDPJ/8Avk19wf8ACuPCH/QAsv8A
vk/40f8ACuPCH/QAsv8Avk/40AfD/kS/88n/AO+TR5Ev/PJ/++TX3B/wrjwh/wBACy/75P8AjR/w
rjwh/wBACy/75P8AjQB8P+RL/wA8n/75NHkS/wDPJ/8Avk19wf8ACuPCH/QAsv8Avk/40f8ACuPC
H/QAsv8Avk/40AfD/kS/88n/AO+TR5Ev/PJ/++TX3B/wrjwh/wBACy/75P8AjR/wrjwh/wBACy/7
5P8AjQB8P+RL/wA8n/75NHkS/wDPJ/8Avk19wf8ACuPCH/QAsv8Avk/40f8ACuPCH/QAsv8Avk/4
0AfD/kS/88n/AO+TR5Ev/PJ/++TX3B/wrjwh/wBACy/75P8AjR/wrjwh/wBACy/75P8AjQB8P+RL
/wA8n/75NHkS/wDPJ/8Avk19wf8ACuPCH/QAsv8Avk/41meJvh/4UtvDeqzwaHZpNFaSujgHKsEJ
B6+tAHxl5Ev/ADyf/vk0eRL/AM8n/wC+TX138N/AvhnUvA2jXl9o1rPczQBpJGByxyeTzXS/8K48
If8AQAsv++T/AI0AfD/kS/8APJ/++TR5Ev8Azyf/AL5NfcH/AArjwh/0ALL/AL5P+NH/AArjwh/0
ALL/AL5P+NAHw/5Ev/PJ/wDvk0eRL/zyf/vk19wf8K48If8AQAsv++T/AI0f8K48If8AQAsv++T/
AI0AfD/kS/8APJ/++TR5Ev8Azyf/AL5NfcH/AArjwh/0ALL/AL5P+NH/AArjwh/0ALL/AL5P+NAH
w/5Ev/PJ/wDvk0eRL/zyf/vk19wf8K48If8AQAsv++T/AI0f8K48If8AQAsv++T/AI0AfD/kS/8A
PJ/++TR5Ev8Azyf/AL5NfcH/AArjwh/0ALL/AL5P+NH/AArjwh/0ALL/AL5P+NAHw/5Ev/PJ/wDv
k0eRL/zyf/vk19wf8K48If8AQAsv++T/AI0f8K48If8AQAsv++T/AI0AfD/kS/8APJ/++TR5Ev8A
zyf/AL5NfcH/AArjwh/0ALL/AL5P+NH/AArjwh/0ALL/AL5P+NAHw/5Ev/PJ/wDvk0eRL/zyf/vk
19wf8K48If8AQAsv++T/AI0f8K48If8AQAsv++T/AI0AfD/kS/8APJ/++TR5Ev8Azyf/AL5NfcH/
AArjwh/0ALL/AL5P+NH/AArjwh/0ALL/AL5P+NAHw/5Ev/PJ/wDvk0eRL/zyf/vk19wf8K48If8A
QAsv++T/AI1S1n4e+E4dHvpYtCs1kSCRlYKeCFJB60AfFJBBIIwR1BpKs6h/x9yfh/IVWoAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKAHIjOcIpY+gGad5Ev/PJ/++TXY/CGyttR8daXZ30Kz200
6rJG3Rhg8Gvq/wD4Vx4Q/wCgBZf98n/GgD4f8iX/AJ5P/wB8mjyJf+eT/wDfJr7g/wCFceEP+gBZ
f98n/Gj/AIVx4Q/6AFl/3yf8aAPh/wAiX/nk/wD3yaPIl/55P/3ya+4P+FceEP8AoAWX/fJ/xo/4
Vx4Q/wCgBZf98n/GgD4f8iX/AJ5P/wB8mjyJf+eT/wDfJr7g/wCFceEP+gBZf98n/Gj/AIVx4Q/6
AFl/3yf8aAPh/wAiX/nk/wD3yaPIl/55P/3ya+4P+FceEP8AoAWX/fJ/xo/4Vx4Q/wCgBZf98n/G
gD4f8iX/AJ5P/wB8mjyJf+eT/wDfJr7g/wCFceEP+gBZf98n/Gj/AIVx4Q/6AFl/3yf8aAPh/wAi
X/nk/wD3yaPIl/55P/3ya+4P+FceEP8AoAWX/fJ/xo/4Vx4Q/wCgBZf98n/GgD4f8iX/AJ5P/wB8
mjyJf+eT/wDfJr7g/wCFceEP+gBZf98n/Gj/AIVx4Q/6AFl/3yf8aAPh/wAiX/nk/wD3yaPIl/55
P/3ya+4P+FceEP8AoAWX/fJ/xo/4Vx4Q/wCgBZf98n/GgD4f8iX/AJ5P/wB8mjyJf+eT/wDfJr7g
/wCFceEP+gBZf98n/Gj/AIVx4Q/6AFl/3yf8aAPh/wAiX/nk/wD3yaa6OmN6suemRivuL/hXHhD/
AKAFl/3yf8a+bf2gNJsNF8YvZ6Vax2tsIomEcfTJByaAPLaKKKACiiigAooooAKKKKACpLf/AI+I
v94fzqOpLf8A4+Iv94fzoA++vg3/AMkv8Of9eo/ma7KuN+Df/JL/AA5/16j+Zrsq+TrfxJerPUh8
KCiiisygooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsbxr/AMibr3/XhP8A+i2rZrG8
a/8AIm69/wBeE/8A6Laqh8SE9jjPhN/yTjQP+vYfzNdZXJ/Cb/knGgf9ew/ma6yvrjygqG9n+y2c
9xt3eVGz7c4zgZxU1U9a/wCQNf8A/XvJ/wCgmgDzfQfiJ4w1/SLfVNJ+Hn2ixnBMcn9tQruwSp4Z
QeoPaun8EeNrfxLc3unXNjcaVrljg3Nhc4LKp6MpH3l5HPuPUZzfgJ/ySTw//uS/+jnrO10CL9oP
wy1sMSzaVOtzjvGN5XP/AAIfpQB3fh7UL/UYbx9T0p9NeG6khiRpRJ50a42yjAGA2Tx2xWrXh2nX
HiO7+GfjU6FNez6imv3Ea+U5MwhDJuWInoducY98c03wjeeFJPE+kr4d1/WdA1ZJwLrTtWMrG8U8
GNg7bQ5PQg9ex4oA9P0XxP8A2n4z8R6B9j8r+xxbnz/N3ed5se/7uBtx06nPtXSV8+eKPGc/hD4l
/EL7BAzXt2tgiXDRlorVRCqtLJgHgF1wMck/hXsngnQotC0SONdQuNTnuP3817PKXM7NzuHJAX0A
4x68mgCl8SPF03g/StPubXTP7TuL2+jsY4PtAh+Z1Yg7ipHVcduvWsK78deMNNge71f4dXUNjEN0
sltqkNw6KOpCKMnFM+O3/IO8If8AYyWf8pK9MoAzvDutWPiHRbXVdKm86zuV3I2MEdiCOxBBBHtT
PE9/faXodzeaTpj6rex7fLs0lEZkywB+Yg4wCT07V4NDdTad8E/iEdMmkggtdeZLR4mKlU8+HhSO
2D+proviD4Zk8KfCvxDq0Os6vcavdxWxuJpbo43meMsyKMbepHsOPWgD2pCSikjBI5HpS15xqdxc
eH/ipoN3JPKdK161NhIjOSkdygDI2OgLD5ePesx9fuX8Q+PPFcckkmnaBaNp9nDvPlyToN8jEdMh
iFz6GgD1qivnHTbzQdQ8Ox6hq2teLG8V3EXn/boY7oLBKRkKiqNmwHA4HI6Y4rb13Wtd8R+Bvh7L
Jc3el6rf6qtpcyxgxuPvoXx7gbsdM0Ae50VheD/DFp4VsJrSxur+5jllMpa8nMrAkAYB7DjP1Jrd
oAKyfF//ACKetf8AXjP/AOi2rWrJ8X/8inrX/XjP/wCi2oAyfhN/yTjQP+vYfzNdZXJ/Cb/knGgf
9ew/ma6ygAooooAKxPG2vf8ACMeFdR1n7N9q+xx7/J8zZv5AxuwcdfStuuI+Nn/JK/EX/XuP/Q1o
A0/h/wCLbPxp4ag1axXymYlJ4C25oZB1UnjPYg4GQRTfDnir+2fFnibRfsfk/wBivAvnebu87zFZ
vu4G3G31Oc9q85CP8Or3RPFdorDw7q1rbwaxEo4hlKAJcAfU8/U92FWdB1hdI8W/F/WIQkwtYbW5
jAOVfEEhXkdjxQB7HWJ4t8SWvhiwtrq8jlkFxdR2kaxgZLucDOeg65rwzSb3QNT8Px6jrmteK28U
3MfnfbYIroJbuwyqxqo2bBx0zntirXi95/Fnwx8G6xry3cOqnUobKdQzRBh5jKX2cDcQoOccZOKA
PoSivMrOL/hD/irY2Iu7ltH1XS2SIXM7SbZ4DuJyx/559a5r4Y+Kb218Sa3qWu3Mx07WbGbWrVZG
JEMcU0i7FB6fJhuO2KAPcqK8ItLrXJPDHg7SG1K6tL7xhez3t3dJIfMig4fZGT93KFcY6Vr+MdGX
4appfiDw5faisIvIre+s7i5eaO5jc4LYYnDjsRQB7BXO6X4l+3+NNc0D7J5f9mRQS+f5mfM8xScb
ccYx6nPtXnlxoU3i74u+L9LvtW1K30i2htJTBazmPdIYht55wBliQOpwT0rC8TeLJPAnj/xfHp0M
1zdvZWMMU8oaRIFVApmlIySBuX6k0AfQVFc74F0OPRdDjxqU+q3F1i4mvppC/ns3OV5IC88AcY/O
uioAKKKKACqGv/8AIC1L/r2k/wDQTV+qGv8A/IC1L/r2k/8AQTQB8Dah/wAfcn4fyFV6sah/x9yf
h/IVXoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAO9+CH/JR9F/6+V/k1fadfFnwQ/5KPov/
AF8r/Jq+06ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvk79pn/kf5P+uEP/
AKCa+sa+Tv2mf+R/k/64Q/8AoJoA8gooooAKKKKACiiigAooooAKkt/+PiL/AHh/Oo6kt/8Aj4i/
3h/OgD76+Df/ACS/w5/16j+Zrsq434N/8kv8Of8AXqP5muyr5Ot/El6s9SHwoKKKKzKCiiigAryD
Udd8b6x8VvEXhvw1qmmWFppkEEym6tfMJ3opIyD6k16/XkvhD/k4rx7/ANeNn/6LSt6FlzO2y/VG
c+iGX/irxp4B1DT5vHJ0rU/Dl5OttJf2MbRSWjt91nU8FP8AOegPqWqanYaTaNdare21laqcGa4l
WNAfqxArzj9peaJfhHqVq3zXN5PbwWyDkvJ5ytge+1WrNGmQ+IvjhFpfiWOO8tdE0KKa3tJhvjaZ
mAeUqeGPb8vStOSNSCm9N728rf5i5nF8p6to+sabrVsbjR9QtL+AHBktpllUH0JUnmqV74t8OWMS
S3uv6TbxvI0StLeRqC6nDKCT1B6jtXnmqadZ+Fvjt4RPh6CKzTXba7h1C2t1CRuIk3o5UcA57+3v
Wd8FPCGg6zpHiq71jS7W+uJ9Zu7YvcRiQpGGHypn7vLMeO59hS9jBR523bT9V+gc7vY9Y1LxPoOm
PbJqWt6ZaNcgNCJ7pEMoPQrk8j3FYXxL8V3nh+y0u00KGC51zWbpbOyWYny1J5aR8clVHp6ivL/h
T4T0PU/2fbvUNS022u7+4tbsm5njEkiCPesYRjyoUIMAdDTdEmklPwGu7ty8Sx3UJZj/ABGJVjH/
AI7VqhCMn1s3+Cb/AEFztr1O3i1/xV4R8V6Jp3jG90/VdL1qU2sN5bW5t3t7jGVRlyQyt0B6/lz6
fXlvx3Bl/wCECt4j/pL+KLNkwOcAPk/QZFepVhVs4xlbVlx3aCiiisSwooooAKxvGv8AyJuvf9eE
/wD6Latmsbxr/wAibr3/AF4T/wDotqqHxIT2OM+E3/JONA/69h/M11lcn8Jv+ScaB/17D+ZrrK+u
PKCq+owtc6fdQR4DyxMi56ZIIqxRQB5F4Q0P4m+FvDdnotgnhGS3tQwSSeS4LfMxbnAA6se1dN4J
8HX2na7feI/FGoRaj4gu4xBuhQpDbxA58uMHnGQDk/4k9vRQB5ppngjXrHwnr9jZasmn6pdaxNqV
pPA7FdrFSEk4BwcEEDP49Kg1fw34u8ZXOkQeJrTQ9Ps7G6jupLi0leWaQp/DHkDYD3yfTrXqVFAH
E6d4Pk/4TTxrf6ottPpWuxW0KQ5JYqkWxw4xgZ7YJ/Cp/htoOseGNNudG1K5hu9NtpSNNmDkyiEk
4SQEAZXtgnrjjArr6KAOI+LPhrVfE2kaTHoLWa3lhqcN+PtbMqEIr8fKCerD8M81m3Vt8VNSge1k
uvCulxSgq9zaieSVAe6BuM/WvSaKAPOPEHw52/CC58HeHZI/OcRkTXLFRI4mSR2YgHrtPb0FbPxO
8OXnij4e6hoenPAl5cLCEaZiqfJKjHJAJ6Ke1ddRQByvxB8NXHiPwn9jsZY4dUtpIrqymc/LHPGQ
Qeh9x071D4V8GRad8Oh4b1JhM9zBIt7Kh/1kkuS7AkercHHYV2FFAHl2naV8RdE0FPD2nSaHc28M
f2e11SWSRJI4sYUtGAQWUdMHHA61qar4N1Oex8F241E302jahHd3d1dud8wAbcRwecngE9O9d7RQ
AUUUUAFZPi//AJFPWv8Arxn/APRbVrVk+L/+RT1r/rxn/wDRbUAZPwm/5JxoH/XsP5musrk/hN/y
TjQP+vYfzNdZQAUUUUAFc58RdEufEfgnVtIsGiW6uogkZlJCg7geSAT29K6OigDHg0SG48JQaJq0
Uc8Js0tZ0HKthApwfw4NcD8NPhjdeG08X2GtXUd7purRx20LK5MhhVZEw2RgHa6gYz0r1aigDy7S
9J+Inh/Q18PaW+h3drChgtNSnkdJIo+i7owCCyjpg44HWrvivwTq9/8AD7S9JtNUF9rGn3MN2Lm/
ZsTuhJIYjJA+bj2AGe9eiUUAecfELwpr/i/wbpwV7Cy8TW0pk3RyN5ShlZHUNgnBVgenUVS+IPwz
uta0HwxYaFdQ2r6XF9ilkdiu+2aMJIBgHJ+UcH1PNeqUUAcb468ITavZaPNoE8Njq2izCawaVSYs
AYMbAc7SABxzxWNfeHvFnjG90yLxYmlado1jcJdSQWUryvdSJ90EkAKn6/zHpdFAHI6F4cvLD4i+
J9dmeA2epxWyQqrEuDGm1twxgc9OTUdn4TlPjfxVqWorbT6XrFrBbCHJLEIhVwwxjBz2NdlRQBx3
w30DV/C1leaPfXEN1pMExOmShyZVhJJ8twRj5exBPXtgV2NFFABRRRQAVQ1//kBal/17Sf8AoJq/
VDX/APkBal/17Sf+gmgD4G1D/j7k/D+QqvVjUP8Aj7k/D+QqvQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAd78EP+Sj6L/18r/Jq+06+LPgh/yUfRf+vlf5NX2nQAUUUUAFFFFABXjXgLUviN4x
8MW+s2uuaNbRzM6iOSyJI2sV6g+1ey15n+zl/wAko0z/AK6z/wDoxqALnhDxXrUfiuXwp40t7SPV
TD9ptLuzyIbuMdcA8hhz+R4HGet1bxDo2jSRx6vq2n2MknKLc3CRlh6gMRxXBeMGF18c/A1vanNx
aW93cXBH8MbIVXP1II/Gqvwf0fTfEena3r+vWNtf6pe6jPHK11GspjRSAsYDZwAO309BQB6jLqFn
DYG+lu7dLIKH+0NIoj2nod2cY96qDxFop1RdNGr6edRbpbC5TzT/AMBzmvENQQaZ4N+LPh+zZv7J
06aJrSMkkReZhmRfYEdPr61f+JfhfSNJ+C1ldafYwQajD9klW+RAJzIzLucv94k7iev8hQB7Db+I
NGuNUfTbfVrCXUUyGtUuEMox1yoOeK56DxFfv8YLjw4zR/2amjC9C7Pm8zzVXr6YJ4rlPih4b0fw
7Y+DZ9F062s7m3120hWeKMLIVO7IZurZwCc5zWlCRH+0ZPv+XzPDgCZ/i/fr0/I/lQBufF3xBfeF
/AOo6tpTRreQNEEMibl+aRVPH0Jrq7ORpbOCR/vPGrH6kV55+0SwHwm1ZSRueSBVHqfOQ4H5GvQ7
FGjsrdHGGWNQR7gUATUUUUAFFFFABXyd+0z/AMj/ACf9cIf/AEE19Y18nftM/wDI/wAn/XCH/wBB
NAHkFFFFABRRRQAUUUUAFFFFABUlv/x8Rf7w/nUdSW//AB8Rf7w/nQB99fBv/kl/hz/r1H8zXZVx
vwb/AOSX+HP+vUfzNdlXydb+JL1Z6kPhQUUUVmUFFFFABXmuufDS+u/Gup+JNG8WX2jXOoRxxypB
bo42ooUDLf7ua9Koq4VJQd4kuKluedaP8L4k16z1nxRr+qeI72ybfapeMqwwv/fEY43dOfYegxp+
M/A413WLHXNK1W50TxBZxmGO9gRZA8ROTHIjcOuSSB6muyoqvbTb5rhyK1jifCvgR9N8RSeIvEGs
3Ova8Yfs8dxLEsMcEWclY414XPc/4nOl4E8KReEdPv7WG6e5F3fTXxZ1C7TIQSvHYYrpKKUqspbs
FFI5Dwj4Ih8N/Dz/AIRSK9knh8qeL7QyBW/eliTjPbd+lUp/hrYXHw+0rwxLe3KyaWUks9Qiwk0M
yElZB2zyeP8A9dd5RR7Wd7363+Ycq2OC0TwDeL4lstc8WeI7jxBeaejLYo1slvFAWGGfYn3nI7n+
gx3tFFTObnqxpJbBRRRUjCiiigArG8a/8ibr3/XhP/6Latmsbxr/AMibr3/XhP8A+i2qofEhPY4z
4Tf8k40D/r2H8zXWVyfwm/5JxoH/AF7D+ZrrK+uPKCiiigAooooA8U8IeH73xjrfjKa+8W+K7NbP
W7m1hhsdSaONYw2QApBxjOOMDFaay618PPGWiWN7rd7rXhzWpvsiNqDb57ac/d+f+IMTj8/Tm58F
/wDkI+P/APsZLr+dVvildRa5438FeHNPkSa9g1NNRuVQg+RFFz83pnJx9PcUAdb4l8c6N4f1GPTr
hrq71N08wWdjbtPKE/vEKOB9asaH4w0XXNGvNS066Lw2Yb7TGyFJYSoJIZDyDwfriuS+GXlr8Q/i
Gt3j+1DfRn5vvG32/u8e2P6VlXflt8UPH50/H2ceH8Xmz7v2jB2599mf1oA6KT4u+FEiinWe9ls2
CGS6jtJGhgLYwHYDAPIyOSKnuvin4Xtr9IHurhrZpfI+3pbu1qJOm3zcbT9Rke9ctpcEUX7MUipG
oVtIlkIx1Y7iT9c80vjmCKL9maOOONVQaZYsAB3LREn65JNAHoXinxbpPhk2yalLK11dEi3tbeJp
ppcddqKCcD16VW8LeOdH8SahcadaG7ttSgTzJLO9t2hlCdN2D1HI/OuW1nVrybx3pmleF9L0qTxD
FpQnk1HUi22GAsBsUL8zEk5/H61k6b/a0Xx70uLXtSsb2/Gky71s4PKSFSxIQ5JJ9efUUAdRofib
R9D8L+IdYuNY1K/sLTVJUnlulZ3gcui+Ug67AWGMepqU/FTwuNQit2uLpbeWXyY79rVxau+cYEmM
Hnv098V5bqX/ACQ34j/9jDJ/6UQV3/xzt4YPgjqcMUarHDHarGoHCgTRAY/DigD02io7fm3iJ/uj
+VSUAFFFFABWT4v/AORT1r/rxn/9FtWtWT4v/wCRT1r/AK8Z/wD0W1AGT8Jv+ScaB/17D+ZrI+Pe
oXul/DPULrTbu4s7pZIQs1vK0bgGRQcMCD0rX+E3/JONA/69h/M1z/7Rv/JKNT/66wf+jFoAml+G
NwkbNZePPGkdyBlGn1HzUB/2k2jI9s0eA/GtwPDviBfF7r/aPhuV4b6aFOJUUErIFHqAeB6e+K9C
ubiG1gee5ljhhjG55JGCqo9ST0rwjT2/tXwl8XPEsAb+z9U3x2rkY8xIkcbx7Hd+h9KAO3ufiN4b
1/TtZsrDUNRhEeny3D3ttA6+UgX5mR/767h+NbuheI9LR9B0UXlzcXd5pqXVtNcKd1xGFGWLH+PH
zEdea524gitv2eXigQIg8ObsAdSbfJP1JJP41keJreSy+GngbxVaIWuvD8NpcMF6tbtGiSr+IIP0
BoA9LvdfsLPxBp2iyu51C/SSSKNEJAVBksx/hHpnqa57Uvid4dsb66tla/vFs2KXU9nZyTQ25HUO
6jHHfGawvCjyeJ/FHjHxZZsZI4YjpGlOvcIu52X2LkYP1rn/AIOW3i2T4e2LaBqvh+GyDSiSO4tJ
GlV953eYQw5/pigD1TUvF+iaf4ftdbmvUbS7l0SO4j+ZSXOAT6DPXPTvUfg/xnpPi43n9jG5ZbUr
ueWBo1cNnayk9QdprxfVNOgt/gkbaLU7XVLSXXkKvbRskShnG6NQ3OAd3TjmvopVCKFUBVAwABgA
UAeX/GiS9k1jwVptnqupabFqGoG3nksLhoXKnb3HpnuDT9T+HetafZy3Xhrxv4nfU4VLxRajeC4h
kI52spUDnpnmm/F7/kcPhx/2F/8A4mu/8Q61Y+H9IudS1SdILaBC5LMAWwPuj1J6AUAc54O8d2Wq
fDu38TaxLFYRohW7LZCxyK20gDrycEDk8gdaTSviZ4e1DULW0Y31k14dtpJe2jwx3B7bGYYOe2cZ
ryO106XT/hV4Im1mMxadeeI4r28R/urC7Nt3/wCyQAfxFek/tBG2PwvvxLg3LSwCzx98zeYuNnvt
3dO2aAN/xF470Lw/qp0zUZ5hf+Qs6QRQtI8oZioCBR8zZB49Bms2D4qeGZrOSWOW9N2kvknTxaub
rdjOPKAzjHfp75rJsojJ+0BE14qtcReF1bJH3X88Akfmw/GpfDEEX/C9vGcvlr5osrQBsc8qM/8A
oI/KgDrPDfi/RvEWj3Op2F1ttrVmW589TE0BUZYOD0wOc9K59/i14ZRROw1QaaW2jUTYSi2POPv4
/pXKQalY6Jd/F681OzF5YRXEBkte0pdCNp9ASRk0zxj/AMJc3wrvp9SuPDmj6J9gAjs7WF5H2FQE
i3s20HkDIH0oA9B8RXtifFPhDdrF9bvcvM1tb2rHybweWCfMxwQAQRn1qDU/iV4esL68sS95c6ha
ymF7S1tnllJABJAA+6MjnpXGynOqfBM5zm1f/wBJY62/hhDGPH3xGm2L5p1CJC+OdoQnH60Adl4U
8TaX4q0w32i3BmhVzFIrKUeNx1VlPIPIq1r/APyAtS/69pP/AEE1wvwuUJ41+IioAF/tNGwOmShJ
Nd1r/wDyAtS/69pP/QTQB8Dah/x9yfh/IVXqxqH/AB9yfh/IVXoAKKKKACiiigAooooAKKKKACii
igAooooAKKKKAO9+CH/JR9F/6+V/k1fadfFnwQ/5KPov/Xyv8mr7ToAKKKKACiiigAryzQ/hbq+h
aamn6T461O1skJKxR20eBk5PJ56mvU6KAOU8GeCLHwxc3d99pvNS1e8AFxf3sm+VwOij0Xpx7D0F
Ztz4CvbPVtQvfCXiS50KPUJDNdWwto7iJpD1dA/3Ce+P8K72igDhk+HGnxeB9V8PRXdyZNUYy3d/
Nh5pZCQS56enT+uTWj4s8IQ+IvBieHpbuSCJRCPOVAT+7II499tdRRQBz/jPwzH4ottNhmuXtxZX
8V+pVQ24x5wp9jnrVLxt4Jg8S3VjqNtf3Wla1Y5FvfWpG5VPVWB+8vXj3Pqc9bRQB5zD8N7zUNSs
7nxj4pvdegs5BNDaGBLeHeOjOq53Y/zxkV6NRRQAUUUUAFFFFABXyd+0z/yP8n/XCH/0E19Y18nf
tM/8j/J/1wh/9BNAHkFFFFABRRRQAUUUUAFFFFABUlv/AMfEX+8P51HUlv8A8fEX+8P50AffXwb/
AOSX+HP+vUfzNdlXG/Bv/kl/hz/r1H8zXZV8nW/iS9WepD4UFFFFZlBRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFY3jX/kTde/68J//RbVs1jeNf8AkTde/wCvCf8A9FtVQ+JCexxnwm/5
JxoH/XsP5musrk/hN/yTjQP+vYfzNdZX1x5QUUUUAFFFFAHB6h8JPBuoajd311pkrXN1M88zLdzL
udiSxwGwOSa3fCvg3w/4USRdA0yG0aQYeQEu7D0LMSce2cVv0UAcz4m8D6F4ivor6/t5Y9QjXYt1
azPBLt/ullIyPrVnRPCWiaJo9zpmm2Sw2t0GE/zMzy7hglnJ3E4J78dq3aKAMaPw1pUfhY+HUtyN
IMBt/J8xs+Weo3Zz365pdQ8NaVqHhceHru3L6SIo4PJ8xgdiY2jcDnjaO9bFFAHM+IvA+ia/c2l1
ewzx3lpH5UNzbXDwyqn93cpGR9fU+ppuj+AvDuj6na6jp9gYr+3DgXBmdnk3jDFySd5/3s47YrqK
KAOal8D6BLoOp6M9kx07Urk3dzF5z/PKWVi2c5HKLwDjitLxBoWn+INEn0jVoDNYTBQ8YdlztYMO
QQeqitOigBFUKoVegGBS0UUAFFFFABWT4v8A+RT1r/rxn/8ARbVrVk+L/wDkU9a/68Z//RbUAZPw
m/5JxoH/AF7D+ZrY8S6Bp3iXSJdM1mAz2UpVnjDsmSpyOVIPUVj/AAm/5JxoH/XsP5musoA89j+D
fgZJFdtHeXachZLuZlz9C/NdjdaHp1zoMuivaRppckJtzbxfu1CEY2jbjH4Vo0UAZsmiWEnh06G8
JOmG2+xmLe2fK27du7OenfOaeukWI0IaMYA2mi2+yeSxJzFt27SevTir9FAGb4d0TT/DujwaXo9u
Leygzsj3FsZJJySSTyT1rnNU+GPhfUb+6u3tLi3e7O65S1upIY5z3LKrAHPOfrXa0UAYV54R0O70
C20SSwRdLtnR4oImZArKcg5BB68+/et2iigDn/F3g/RPF0NtFr9q1wlsxeLbM8e0kYP3SPSsOw+E
fgiyu0uE0RZpUOV+0TyyqP8AgLMQfxFd5RQBU1TTLLVtNm0/UbaK4spl2PC65Uj/AOt29K5fR/hp
4Z0rULa8htJ55bU5thdXMkyQf7isSBjjB7Yrs6KAMwaFp48SNrwgP9qNa/YjNvbHlbt+3bnHXnOM
0Wuhafa69fazBAV1G9RI55d7HcqDCjGcDHsK06KAMMeFNF360zWSyDWSDfLIzMsuBgcE8cHtisO2
+FnhWGEwS2lzdWwRo44Lq7lljhUgg7FLYU4PB6jsa7iigDCj8JaOjaCy2z50NSlgTK58pSoUjr83
ygDnNWtK0LT9Kv8AUryxgMdxqMomuWLs29gMA4JwOPStOigDM0rQtP0q/wBSvLGAx3Goyia5Yuzb
2AwDgnA49Kk1/wD5AWpf9e0n/oJq/VDX/wDkBal/17Sf+gmgD4G1D/j7k/D+QqvVjUP+PuT8P5Cq
9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB3vwQ/wCSj6L/ANfK/wAmr7Tr4s+CH/JR9F/6
+V/k1fadABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXyd+0z/wAj/J/1wh/9
BNfWNfJ37TP/ACP8n/XCH/0E0AeQUUUUAFFFFABRRRQAUUUUAFSW/wDx8Rf7w/nUdSW//HxF/vD+
dAH318G/+SX+HP8Ar1H8zXZVxvwb/wCSX+HP+vUfzNdlXydb+JL1Z6kPhQUUUVmUFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAVjeNf+RN17/rwn/8ARbVs1jeNf+RN17/rwn/9FtVQ+JCe
xxnwm/5JxoH/AF7D+ZrrK5P4Tf8AJONA/wCvYfzNdZX1x5QUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAVk+L/APkU9a/68Z//AEW1a1ZPi/8A5FPWv+vGf/0W1AGT8Jv+ScaB/wBe
w/ma6yuT+E3/ACTjQP8Ar2H8zXWUAFFFFABRRRQAUUVDPd21vn7RcQxY/vuF/nQBNRWU/iPREba+
s6arehukB/nUqa3pT/c1Oxb6XCH+tAGhRTY3WRA0bKynoVOQadQAUUUUAFFFFABRRRQAUUUUAFUN
f/5AWpf9e0n/AKCav1Q1/wD5AWpf9e0n/oJoA+BtQ/4+5Pw/kKr1Y1D/AI+5Pw/kKr0AFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFAHe/BD/ko+i/9fK/yavtOviz4If8lH0X/r5X+TV9p0AFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFfJ37TP8AyP8AJ/1wh/8AQTX1jXyd+0z/
AMj/ACf9cIf/AEE0AeQUUUUAFFFFABRRRQAUUUUAFSW//HxF/vD+dR1Jb/8AHxF/vD+dAH318G/+
SX+HP+vUfzNdlXG/Bv8A5Jf4c/69R/M12VfJ1v4kvVnqQ+FBRRRWZQUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABWN41/5E3Xv+vCf/ANFtWzWN41/5E3Xv+vCf/wBFtVQ+JCexxnwm/wCS
caB/17D+ZrrK5P4Tf8k40D/r2H8zXWV9ceUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFZPi//kU9a/68Z/8A0W1a1ZPi/wD5FPWv+vGf/wBFtQBk/Cb/AJJxoH/XsP5musrk/hN/
yTjQP+vYfzNaPibxTo/hqASaveJE7/6uFfmlkPoqDk/yoA26oaxrOm6Lb+fq19bWcXYzSBd30HUn
6VxgvvGniof8S22j8MaW/S4u18y7dfVY+i/jz6GtLRfh3oVhcfbL6KXV9SPLXeov5zk+wPA9uM+9
AFE/EKbVWK+DvD2o6yvQXLj7Nbn6O/X6YFL9g+IGr83mraXoMB/5Z2UBuJcehZ+AfcV3oAUAKAAO
ABRQBwf/AAreK651vxH4h1LPWN7wxxn/AICoGPzqe3+FvgyDG3Q4mPrJLI+fzau1ooA5lPAPhNV2
jw9puPeAE/maif4deEX66BYj6Jj+VdXRQBwr/Cvwsrl7G3u9PkP8dpeSIf1JFN/4QTVbL5tE8a67
Aw6LelbtB+DAV3lFAHBf8XF0ztoWtxD/AH7aZv8A2QUf8LBudO48UeFtY0wD700SC6hX6un+Fd7R
QBgaJ4z8Oa5tGmaxZzSN0jL7JD/wBsN+lb9YWt+D/D2ubjqmj2c7t1k8vbJ/32uG/Wue/wCEAvNK
+bwl4m1PTQPu21wRdW49grcj65NAHfUVwP8AbXjjRONY0C11m3XrcaVLtfHqYn5J9hV/SfiL4cv7
j7LPdvpl90a11GM27qfT5uM/Q0AdfRSKwZQykFSMgjoaWgAqhr//ACAtS/69pP8A0E1fqhr/APyA
tS/69pP/AEE0AfA2of8AH3J+H8hVerGof8fcn4fyFV6ACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigDvfgh/yUfRf+vlf5NX2nXxZ8EP+Sj6L/wBfK/yavtOgAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAr5O/aZ/5H+T/rhD/wCgmvrGvk79pn/kf5P+uEP/AKCaAPIKKKKACiii
gAooooAKKKKACpLf/j4i/wB4fzqOpLf/AI+Iv94fzoA++vg3/wAkv8Of9eo/ma7KuN+Df/JL/Dn/
AF6j+Zrsq+TrfxJerPUh8KCiiisygooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsbxr
/wAibr3/AF4T/wDotq2axvGv/Im69/14T/8AotqqHxIT2OM+E3/JONA/69h/M11lcn8Jv+ScaB/1
7D+ZrrK+uPKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsTxvPDbeD9bkuJUi
T7HMu52AGShAH1J4ql4t8ZWegzR2FvDJqWuT/wCo0+25dvdj/Avua5TWPCOo6voupa145uhcXUNp
NLbabAxFtasEJBP99h6n9eKAM3wBqfifWvBuk6V4ZtRptpBCI59Xu1zzk5EKfxEep469K73wx4H0
nQZzeFZL/V35k1C8bzJmPsT938P1qP4Tf8k40D/r2H8zXWUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABVDV9G03WYPJ1WxtryPsJow2PoT0/Cr9FAHBN8OhprmXwfrmo6G2ciAP59tn3jf/Gm/
25400A413Q4datF63WkNiQD3ibkn6cV39FAHMaB478O65L5FrqCQ3mdptboGGUH02t1P0zWxr/8A
yAtS/wCvaT/0E1W1/wAM6L4hi2azpttdcYDuuHUezj5h+BrjdX8F6toWlXr+FvEd0lmsD7tP1D9/
EV2nIVvvJx6UAfIOof8AH3J+H8hVetK6tRNOxjkXeeqk9KoywyRf6xCO2e350AR0UUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAd78EP+Sj6L/18r/Jq+06+LPgh/yUfRf+vlf5NX2nQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV8nftM/wDI/wAn/XCH/wBBNfWNfJ37TP8AyP8A
J/1wh/8AQTQB5BRRRQAUUUUAFFFFABRRRQAVJb/8fEX+8P51HUlv/wAfEX+8P50AffXwb/5Jf4c/
69R/M12Vcb8G/wDkl/hz/r1H8zXZV8nW/iS9WepD4UFFFFZlBRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFY3jX/kTde/68J/8A0W1bNY3jX/kTde/68J//AEW1VD4kJ7HGfCb/AJJxoH/X
sP5musrk/hN/yTjQP+vYfzNdZX1x5QUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFcjN8Q/
DkVrq9w18CmmzC3kCjLSORwIx/Fkhh/wE9uaAOtZgqlmICgZJPQV5/qHirUvE97LpPgMJ5UbbLrW
pFzDD6iMfxv+n55EP9m+IPHxV9eWXQ/DZORpyNi4uh281v4V/wBkc/oa7/TrG102yitLC3jt7aIb
UjjXAUUAY3hHwlp3hmGQ2we4v5/mub6c7pp27kt6e3/66t+L/wDkU9a/68Z//RbVrVk+L/8AkU9a
/wCvGf8A9FtQBk/Cb/knGgf9ew/ma6yuT+E3/JONA/69h/M11lABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABVDX/APkBal/17Sf+gmr9UNf/AOQFqX/XtJ/6CaAPge/JF45BwRj+
QpYb6aPAJ3j/AGuv503UP+PuT8P5Cq9AF7/RLg94Xx9BnH+fSo5bKVF3JiRexX0qrUkU0kX+rcj2
7flQAwggkEYIpKui7jl4uYlP+0vag2ayKWtpQ4/unrQBSop8kbxnDqVPvTKACiiigAooooAKKKKA
CiiigDvfgh/yUfRf+vlf5NX2nXxZ8EP+Sj6L/wBfK/yavtOgAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAr5O/aZ/5H+T/rhD/wCgmvrGvk79pn/kf5P+uEP/AKCaAPIKKKKACiii
gAooooAKKKKACpLf/j4i/wB4fzqOpLf/AI+Iv94fzoA++vg3/wAkv8Of9eo/ma7KuN+Df/JL/Dn/
AF6j+Zrsq+TrfxJerPUh8KCiiisygooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsbxr
/wAibr3/AF4T/wDotq2axvGv/Im69/14T/8AotqqHxIT2OG+F9xBa/DTQJLmaOGP7OBukYKM5Pc1
0f8AbOl/9BKy/wC/6/415Lplha6r4f8AhRYahCtxZz3JWWJ/uuNrda9j/wCFVeB/+hasP++T/jX1
x5RW/tnS/wDoJWX/AH/X/Gj+2dL/AOglZf8Af9f8as/8Kq8D/wDQtWH/AHyf8aP+FVeB/wDoWrD/
AL5P+NAFb+2dL/6CVl/3/X/Gj+2dL/6CVl/3/X/GrP8AwqrwP/0LVh/3yf8AGj/hVXgf/oWrD/vk
/wCNAFb+2dL/AOglZf8Af9f8aP7Z0v8A6CVl/wB/1/xqz/wqrwP/ANC1Yf8AfJ/xo/4VV4H/AOha
sP8Avk/40AVv7Z0v/oJWX/f9f8aP7Z0v/oJWX/f9f8as/wDCqvA//QtWH/fJ/wAaP+FVeB/+hasP
++T/AI0AVv7Z0v8A6CVl/wB/1/xo/tnS/wDoJWX/AH/X/GrP/CqvA/8A0LVh/wB8n/Gj/hVXgf8A
6Fqw/wC+T/jQBW/tnS/+glZf9/1/xo/tnS/+glZf9/1/xqz/AMKq8D/9C1Yf98n/ABo/4VV4H/6F
qw/75P8AjQBW/tnS/wDoJWX/AH/X/Gj+2dL/AOglZf8Af9f8as/8Kq8D/wDQtWH/AHyf8aP+FVeB
/wDoWrD/AL5P+NAHmPxg8dtZaX/ZHhmQ3Wp3ikPLbHf5EZ4JyOjHoPQZPpXm/wAJ/C+oWHi3T9T1
W109bCJiW+1XUQZTg4YLuzuBweR+tfS3/CqvA/8A0LVh/wB8n/Gj/hVXgf8A6Fqw/wC+T/jQBW/t
nS/+glZf9/1/xo/tnS/+glZf9/1/xqz/AMKq8D/9C1Yf98n/ABo/4VV4H/6Fqw/75P8AjQBW/tnS
/wDoJWX/AH/X/GqPiW7trvwlrhtbiGcLZTBjG4bH7tuuK1/+FVeB/wDoWrD/AL5P+NeZano2neH/
ABr47sNGtI7OzGgK4ii4XcVfJoA6H4X3EFr8NNAkuZo4Y/s4G6Rgozk9zXR/2zpf/QSsv+/6/wCN
eS6ZYWuq+H/hRYahCtxZz3JWWJ/uuNrda9j/AOFVeB/+hasP++T/AI0AVv7Z0v8A6CVl/wB/1/xo
/tnS/wDoJWX/AH/X/GrP/CqvA/8A0LVh/wB8n/Gj/hVXgf8A6Fqw/wC+T/jQBW/tnS/+glZf9/1/
xo/tnS/+glZf9/1/xqz/AMKq8D/9C1Yf98n/ABo/4VV4H/6Fqw/75P8AjQBW/tnS/wDoJWX/AH/X
/Gj+2dL/AOglZf8Af9f8as/8Kq8D/wDQtWH/AHyf8aP+FVeB/wDoWrD/AL5P+NAFb+2dL/6CVl/3
/X/Gj+2dL/6CVl/3/X/GrP8AwqrwP/0LVh/3yf8AGj/hVXgf/oWrD/vk/wCNAFb+2dL/AOglZf8A
f9f8aP7Z0v8A6CVl/wB/1/xqz/wqrwP/ANC1Yf8AfJ/xo/4VV4H/AOhasP8Avk/40AVv7Z0v/oJW
X/f9f8aP7Z0v/oJWX/f9f8as/wDCqvA//QtWH/fJ/wAaP+FVeB/+hasP++T/AI0AVv7Z0v8A6CVl
/wB/1/xo/tnS/wDoJWX/AH/X/GrP/CqvA/8A0LVh/wB8n/Gj/hVXgf8A6Fqw/wC+T/jQBW/tnS/+
glZf9/1/xo/tnS/+glZf9/1/xqz/AMKq8D/9C1Yf98n/ABo/4VV4H/6Fqw/75P8AjQBW/tnS/wDo
JWX/AH/X/Gj+2dL/AOglZf8Af9f8as/8Kq8D/wDQtWH/AHyf8aP+FVeB/wDoWrD/AL5P+NAFb+2d
L/6CVl/3/X/GoNVu7a70DVDa3EM4W2kDGNw2PkPXFaH/AAqrwP8A9C1Yf98n/GvOX0bTvD/xD8ZW
GjWkdnZjRY3EUXC7iGyaAPkPUP8Aj7k/D+QqvVjUP+PuT8P5Cq9ABRRRQAU5WZGypKn1BxTaKALc
V6wQrMolX3p5htp1zA/lv02setUaKAJp7aWHllyv94cioasQ3csQwDuXsG5xUxa1uF+YeS/QY6UA
UaKtTWUiDdH+8T1Xr+VVaACiiigAooooA734If8AJR9F/wCvlf5NX2nXxZ8EP+Sj6L/18r/Jq+06
ACivPPAXhvXPG2lXmrzeMtVsT9unhWCCNNiqj4GMiul/4Vdq/wD0P+uf9+4/8KAN6isH/hV2r/8A
Q/65/wB+4/8ACj/hV2r/APQ/65/37j/woA3qKwf+FXav/wBD/rn/AH7j/wAKP+FXav8A9D/rn/fu
P/CgDeorB/4Vdq//AEP+uf8AfuP/AAo/4Vdq/wD0P+uf9+4/8KAN6isH/hV2r/8AQ/65/wB+4/8A
Cj/hV2r/APQ/65/37j/woA3qKwf+FXav/wBD/rn/AH7j/wAKP+FXav8A9D/rn/fuP/CgDeorB/4V
dq//AEP+uf8AfuP/AAo/4Vdq/wD0P+uf9+4/8KAN6isH/hV2r/8AQ/65/wB+4/8ACj/hV2r/APQ/
65/37j/woA3qKwf+FXav/wBD/rn/AH7j/wAK5rx74b1zwTpVnq8PjLVb4/boIWgnjTYyu+DnAoA9
Dr5O/aZ/5H+T/rhD/wCgmvrGvk79pn/kf5P+uEP/AKCaAPIKKKKACiiigAooooAKKKKACpLf/j4i
/wB4fzqOpLf/AI+Iv94fzoA++vg3/wAkv8Of9eo/ma7KuN+Df/JL/Dn/AF6j+Zrsq+TrfxJerPUh
8KCiiisygooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsbxr/wAibr3/AF4T/wDotq2a
xvGv/Im69/14T/8AotqqHxIT2PGfDP8Ax4fCH/r7P/oDV9HV84+Gf+PD4Q/9fZ/9Aavo6vrjygoo
ooAKKKZNLHBE0k8iRxr1Z2AA/E0APoqrbahZXMnl215bzSYztjlVjj6A1OJY2laISIZFALIDyAeh
IoAfRRRQAUUxZY2leNZEMiAFkB5UHpkVFdXtrabftVzBBu+75kgXP0zQBYoqK2uYLpC9tNFMgOC0
bhhn8KloAKKKY0saypG0iCR8lVJ5bHXA74oAfRRRQAUUUUAFeG+Mf+SjePP+xeX/ANBavcq8N8Y/
8lG8ef8AYvL/AOgtQBh+Gf8Ajw+EP/X2f/QGr6Or5x8M/wDHh8If+vs/+gNX0dQAUUUUAFFFFABR
TZZEijaSV1SNRlmY4AHuaFdGjDqylCNwYHgj1zQA6imQyxzRrJC6yRsMqynIP0NPoAKKr3V7a2hU
XVzBAW+75kgXP0zT7a5guo/Mtpo5kzjdGwYZ+ooAlooooAKKY0sayrE0iCVwSqFhkgdcCn0AFFFF
ABRRRQAV4p4h/wCSqeM/+wFF/Jq9rrxTxD/yVTxn/wBgKL+TUAfGeof8fcn4fyFV6sah/wAfcn4f
yFV6ACiiigAooooAKKKKACiiigCSKaSL/VuQPTtVv7TDcDbcoFOOHXtVCigC69lvXfbOHX0J5qo6
shw6lT6EYoR2Q5Rip6cHFW0viQFuI1kGeuB/KgClRV77Pbzn9xJsbH3G/wA/41Xmt5Yid6HA7jkU
Adv8EP8Ako+i/wDXyv8AJq+06+K/gm6p8RdFLsFH2pBknHJyBX2pQBj/ALPv/IjXX/YUu/8A0ZXp
leZ/s+/8iNdf9hS7/wDRlemUAFFFRXVzBaRh7qeKFCdoaRwoJ9MmgCWioLW8tbvd9kuYZ9v3vLkD
Y+uKkjljl3+VIj7GKNtIO1h1B96AH0UUUAFFMiljl3eVIj7GKNtIOGHUH3qC51GytZPLuby2hkxn
bJKqnHrgmgC1RUFreWt2G+yXMM+373lOGx9cVPQAUUUUAFFFFABXmf7QX/IjWv8A2FLT/wBGV6ZX
mf7QX/IjWv8A2FLT/wBGUAbFfJ37TP8AyP8AJ/1wh/8AQTX1jXyd+0z/AMj/ACf9cIf/AEE0AeQU
UUUAFFFFABRRRQAUUUUAFSW//HxF/vD+dR1Jb/8AHxF/vD+dAH318G/+SX+HP+vUfzNdlXG/Bv8A
5Jf4c/69R/M12VfJ1v4kvVnqQ+FBRRRWZQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BWN41/5E3Xv+vCf/ANFtWzWN41/5E3Xv+vCf/wBFtVQ+JCex4z4Z/wCPD4Q/9fZ/9Aavo6vnHwz/
AMeHwh/6+z/6A1fR1fXHlBRRRQAV5z+0R/yRnxP/ANcY/wD0alejVyXxX8O3niz4e6zoemPAl5eR
qsbTsVQEOrckAnoD2oA8W8ayeGBoti2ieCNT8KaqLq3MOu3GlfYobMiRcu8i9iMjBHOa7rVfEdt4
V+IXj3XbpGmgs9EsZAiHmQl5Qqg+7EDPvVjxJo3xD8VeH5/D99B4Y03T7yMQXNzFcTXEqx8btiGN
Rux6mpdb+Gcmr3Pii2kuUh03UtIs9PtpAxaWOSBnYMwwARkoevOD0oAmm8VeLvD0uj3fi/T9GGk6
jcxWkgsHk86xeU4QuW+V1zhSRjGcjNNTxZ4u13+2dQ8I6bpEuk6bcy2scV48gnv2iOH8sr8qAkFV
znJHOKbfaF4y8WHRtO8U2+j2Om2F3DeXdxaXLzPetEdyqqFF8tSwBOST6Uy28P8AjPwzFrek+Fot
Jn0/ULqa6tL25uXiksDMdzBowjCQKxJXBHvQBgTeNYfDvxN8STT2kja1qtjpcNjpTOqySzsJf3Zb
OAFLDc3Qe+QDD8U2H/CdfDlvF+hrrchtb83Nhp9obpWfZH91G5YKccn0zgdK6K4+Fp1bVPEEmv3M
d39u0yztLfUAMXUc8IYtMMABSX2NwecYNRaj4b8dz6n4K1sroV1rWi291BdiW5kjjnMiqqupEZIJ
CkkYGCeOKAMXwHJo4+MkK+HtEvPCUDaZIJ7G9tTaHUG3AqY4vunYAxLDnnGMZrR8UfEXxR4e0m41
vUrfwzY20MhP9jXN2ft7xB9vDBtm8j5goB471rw+GfFniDxhpGteK5NH0+DR0nNpBpkkkzvLKmws
7uq4AHIAHJ61xf8AwqzxE3gO+8MxaN4Xh1CVJFl8QSStJPdksWBI8vcrNwCS5xzgGgD0C/8AFOva
v4qvND8GW+mD+zraGe8u9S8wqGmBaONUTBztGSScDPSuP8WeMDo/inwFr/je0/sWS2ttWW4hDiQF
gIVHlkfeD8FR1559a6dtA8S+HvE95rfhy107UV1S0t4b6zubpoDHNCpVZEcIwK7TgggHgGq58A6t
q2seFr3xfcafq/2NNRN8jp8im5CBI4lK8ooUrlsHv3wADs/B99q+p6Qt9rlnb2Mlw3mQWsTl2jiP
3RI3Qvjrjge9blcl8OND1bwzpVxouo3MV3p1pMV0ufeTL9mPKxyAjqn3QQTkY6YrraACiiigArw3
xj/yUbx5/wBi8v8A6C1e5V4b4x/5KN48/wCxeX/0FqAMPwz/AMeHwh/6+z/6A1fR1fOPhn/jw+EP
/X2f/QGr6OoAKKKKACiiigDjfjL/AMkp8Wf9g2f/ANANcX8NL+78MWX/AAhWuTNLDNpxvdDupDzN
AY8vAT/fjJ4H93HQCvRviBo9z4h8Ea5pFi0S3V7aSQRNKSEDMpAyQCcfhWL4x8Dv4i8B2WmJOtrr
enRRyWN4hP7m4RQM5xnaeQRjoelAHB+DfG0nh/4bfD/RdOfTItS1KyeT7Rqc/lW1vEh5ZsEFiSQA
oIzzyMVJ4p8d6nq/gbx1o4uNGfV9O0/7QbzTbhngnt3VgWjIJKSLjBUk9Qc4NXbf4Z6tpug+C54L
fR9R1fQrSSzubK8JNvdROcna5QlWUgEEr3Oa1F8Fa3qvhzxdBf22h6PJq1k1pZWNhEpS3+U/NJMI
1ZyzEcAYAHAJoA47xcYx4o+Hh8X6CNfH9lXW6y0+zN0D/qtjBG54GMnsc1o/DyTSF+MUo8P6LeeF
LZtKYTadeWxtGv38wFXji+6QgzlhzzjGMmtq68PeN21XwlrdvZaD/aOlWVxZ3FtLeyCNt+wKysIy
eiZII4zjmrkXhbxX4g8X6brniqbSdOGkwXMdjDpjySv5k6bGd3dV4A6ADrQBj+J/iP4n8OaTLrer
2/hmztopAW0Wa7P9oGPft4YNsL4+baARjvXT6l4k8Ran4v1TQfCFtpa/2THE15d6kZCpklXckaKm
D93BLE8Z6V55L8LPEU3w/uvDEGieFrS/eMpNrpmaSe8IbdkjytyluhJY45wDxjvLnRfE+heL9W13
w3a6bqMWtRQfa7S6umtzDPEmwOjhGDKVxkEA8DFAHHeKPGS6L428HeIfGlodGlg0vURPbbxIS4aN
QIyPvbsAr7HnGDXrXhG71jUNFjvNftLexupyZEtYXLmGM/dV26M+OuOK4dfh7qmqa74dvfGFxYay
ltaX0V8HXA3TkbUiXb9xVyuSQcc9+On+HGi6v4c0WXRtWuYry0s5THp1wHJla2/gWUEAblHy5BII
AoA6uiiigAooooAK8F8caxYaP8UfFr6ndJbJPo0MUbPnDOQ2F+te9V4b4vs7e/8AiZ41t7yFJoW0
OIlHGRkBiD9Qec0AfIN5bTSXLsiZU4wcj0qiylWKtwQcGttp41MgJwYxkj/CqXlW1zzHIY3J5DHJ
P596AKFFWJLOZD9wsPVear0AFFFFABRRRQAUUUUAFFFFABRRRQAVYivJo/4tw9G5qvRQBuWLlkWZ
VCOTnKdcjvX0j8G/igNWWHQ/EUwGogBLe5c/6/0Vj/f9+/16+H/BD/ko+i/9fK/yavsi40uwuW3X
NjazMDnMkKt/MUAUv2ff+RGuv+wpd/8AoyvTK8z/AGff+RGuv+wpd/8AoyvTKACvJ/2iDbDSfBxv
7CTUrT/hJLbzbOOHzmnXypsoE/iJ9O9esVxHxU8Paxr1p4ek8PCye90rWIdS2XkrRo6okg25VWOc
uO3rQB5pbS+H1+J3g4+HfC1/4MnNxIJri9sDYx3kZjI+zqB8rszYODjGOOa2NB8TzeGrLxWNPtEv
dW1PxpcWFlBI+xDK6odztgkKoVicDtjvW1qnhzxp4w1LRY/FCaBpuj6dfxai62E0s88zxZKKCyKF
XJ5PWoLn4daubPU7i0urKLV4/E8niDTS5ZomUqq+XLgZG4bgcZxx1oA1IvGGt+HvEVrpXjqHSxFf
Ws9za3um+YEzAm+SN0fJzsywIPODxVbRPFPjnVNM0zxFFoelyaFfvG62EUj/AG1LaQjbKWPyEgEM
VwOO9Ofwtr3i/wAS2Wp+M7Ww02x0+1ube3srO5a4eR54/LkkZyigAISAoB5PJqvo2h+P7DQdL8Kx
zaVa2FgYof7bhnYzvbRkYVYCmFkKqFJLEdTQBzvg3xi+nax4l8NeH4YL7xNfeJr+VIJpNsdvAHXd
NKRzgYOFHJNReMW0WP43ah/wkvhi68SL/YltsjtdKN75beZJltvO0H1rcm+F98LHW76xlsrTxR/b
9xrOl3q5OAxG2OU4yVZdysvI5zzXVaN4e1OP4jXviS/FrHFdaRb2bRRSM5SZHZnxlRlfm4PU+goA
5i58RaV4O8AXviHwh4MfSpGvYLWSyudP+wST5dVztwCeJDtJ4zn3q9P4o8aW1/pvh2ax0B/FGoeb
ch4pJTaWtom0b5M4dnLNtAGAeuRW/wDFDw5eeKfCw07TngSf7ZbT5mYqu2OZXbkA84U4qt4z8P6u
3inSPFPhgWc2pWUEtnPZ3chiS5gcq2BIA21gygjIIOaAOd1j4k6z4c0rxVb69p9gde0S1ivojbO/
2e7gkfaGAPzKQQQQSeehNaCeK/Fmm+IvD0PiLT9HTTddla3hW0kkaa0k8tpFEhb5XGFIJUDB9e+N
4h+H3iPxVpfi+/1U6ba65rNjFp9naRTM8NtCj78PJtBZixJyFwOK7TxZ4cvNW1TwfcWzwLHpGofa
rgOxBKeS6fLgcnLDrigDnPghLrk0njBtYkspIxr12hMLOWEoKhgN3/LMAAL3r1CuJ8AaFrXh7WfE
8N7HZPpV/qU+pW1xFKxlzKQSjoVwMY6gnNdtQAV5n+0F/wAiNa/9hS0/9GV6ZXmf7QX/ACI1r/2F
LT/0ZQBsV8nftM/8j/J/1wh/9BNfWNfJ37TP/I/yf9cIf/QTQB5BRRRQAUUUUAFFFFABRRRQAVJb
/wDHxF/vD+dR1Jb/APHxF/vD+dAH318G/wDkl/hz/r1H8zXZVxvwb/5Jf4c/69R/M12VfJ1v4kvV
nqQ+FBRRRWZQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWN41/5E3Xv+vCf/0W1bNY
3jX/AJE3Xv8Arwn/APRbVUPiQnseM+Gf+PD4Q/8AX2f/AEBq+jq+cfDP/Hh8If8Ar7P/AKA1fR1f
XHlBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXhvjH/ko3jz/ALF5f/QWr3Kv
DfGP/JRvHn/YvL/6C1AGH4Z/48PhD/19n/0Bq+jq+cfDP/Hh8If+vs/+gNX0dQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV4p4h/wCSqeM/+wFF/Jq9rrxTxD/yVTxn/wBgKL+T
UAfGeof8fcn4fyFV6sah/wAfcn4fyFV6AJobmWHhGO30PIqf7TDMMXEWGP8AGv8An/GqVFAF1rJZ
FLW0ocf3T1qrLE8RxIpU00Eggg4I71aivpF4kAkTGMGgCpRV7/Rbg94Xx9B0/wA+lMlsZF5jIkTG
cigCpRSkEEgjBHakoAKKKKACiiigAooooA734If8lH0X/r5X+TV9p18WfBD/AJKPov8A18r/ACav
tOgDH/Z9/wCRGuv+wpd/+jK9MrzP9n3/AJEa6/7Cl3/6Mr0ygAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAK8z/aC/5Ea1/7Clp/6Mr0yvM/2gv+RGtf+wpaf+jKANivk79pn/kf5P8ArhD/AOgm
vrGvk79pn/kf5P8ArhD/AOgmgDyCiiigAooooAKKKKACiiigAqS3/wCPiL/eH86jqS3/AOPiL/eH
86APrK3t21HwN8KdJkubqCzvp/LnFvMY2dQrEcivQf8AhTvh3/n917/wZSVwuhf8gL4M/wDX2f8A
0Bq+gq5cLFOD06v8zWq3f7jzf/hTvh3/AJ/de/8ABlJR/wAKd8O/8/uvf+DKSvSKK6OVdjO7PN/+
FO+Hf+f3Xv8AwZSUf8Kd8O/8/uvf+DKSvSKKOVdguzzf/hTvh3/n917/AMGUlH/CnfDv/P7r3/gy
kr0iijlXYLs83/4U74d/5/de/wDBlJR/wp3w7/z+69/4MpK9Ioo5V2C7PN/+FO+Hf+f3Xv8AwZSU
f8Kd8O/8/uvf+DKSvSKKOVdguzzf/hTvh3/n917/AMGUlH/CnfDv/P7r3/gykr0iijlXYLs83/4U
74d/5/de/wDBlJR/wp3w7/z+69/4MpK9Ioo5V2C7PN/+FO+Hf+f3Xv8AwZSUf8Kd8O/8/uvf+DKS
vSKKOVdguzzf/hTvh3/n917/AMGUlH/CnfDv/P7r3/gykr0iijlXYLs83/4U74d/5/de/wDBlJXI
RaWnhzxH8QNEsbu+l09NA89Y7m4aXDlHyea93rxjxF/yUT4h/wDYtr/6A9c+KivZPTt+ZdJvmOHt
W1GLQfhPNo8MNxepM3lQTPsR328ZPYYBr1j+1/ih/wBCxoH/AIMG/wAK848M/wDHh8If+vs/+gNX
0dXUZnnH9r/FD/oWNA/8GDf4Uf2v8UP+hY0D/wAGDf4V6PRQB5x/a/xQ/wChY0D/AMGDf4Uf2v8A
FD/oWNA/8GDf4V6PRQB5x/a/xQ/6FjQP/Bg3+FH9r/FD/oWNA/8ABg3+Fej0UAecf2v8UP8AoWNA
/wDBg3+FH9r/ABQ/6FjQP/Bg3+Fej0UAecf2v8UP+hY0D/wYN/hR/a/xQ/6FjQP/AAYN/hXo9FAH
nH9r/FD/AKFjQP8AwYN/hR/a/wAUP+hY0D/wYN/hXo9FAHnH9r/FD/oWNA/8GDf4Uf2v8UP+hY0D
/wAGDf4V6PRQB5x/a/xQ/wChY0D/AMGDf4Uf2v8AFD/oWNA/8GDf4V6PRQB5x/a/xQ/6FjQP/Bg3
+FH9r/FD/oWNA/8ABg3+Fej0UAecf2v8UP8AoWNA/wDBg3+FedXcut3PjfxxN4itLWyvR4fKtBbS
mRMbTtOfoDX0ZXhvjH/ko3jz/sXl/wDQWoA5K1bUYtB+E82jww3F6kzeVBM+xHfbxk9hgGvWP7X+
KH/QsaB/4MG/wrzjwz/x4fCH/r7P/oDV9HUAecf2v8UP+hY0D/wYN/hR/a/xQ/6FjQP/AAYN/hXo
9FAHnH9r/FD/AKFjQP8AwYN/hR/a/wAUP+hY0D/wYN/hXo9FAHnH9r/FD/oWNA/8GDf4Uf2v8UP+
hY0D/wAGDf4V6PRQB5x/a/xQ/wChY0D/AMGDf4Uf2v8AFD/oWNA/8GDf4V6PRQB5x/a/xQ/6FjQP
/Bg3+FH9r/FD/oWNA/8ABg3+Fej0UAecf2v8UP8AoWNA/wDBg3+FH9r/ABQ/6FjQP/Bg3+Fej0UA
ecf2v8UP+hY0D/wYN/hR/a/xQ/6FjQP/AAYN/hXo9FAHnH9r/FD/AKFjQP8AwYN/hR/a/wAUP+hY
0D/wYN/hXo9FAHnH9r/FD/oWNA/8GDf4Uf2v8UP+hY0D/wAGDf4V6PRQB5x/a/xQ/wChY0D/AMGD
f4VwUUut3PxG8XzeIrS1sr0aGqtBbSmRMc7Tn6A19CV4p4h/5Kp4z/7AUX8moA+M9Q/4+5Pw/kKr
1Y1D/j7k/D+QqvQAUUUUAFFFFABUkU0kX+rcgdcdvyqOigC6t6rgLcxB+24Dmj7NDMM28uGP8D1S
ooAmmtpYeXX5fUcioasR3kyH75YdcNzU5mtrgHzk8puu5e9AFCirj2ROWt3WRfrzVaSNo2KupU+9
ADKKKKAO9+CH/JR9F/6+V/k1fadfFnwQ/wCSj6L/ANfK/wAmr7ToA8d+HfhLxvrOkX134Z8X/wBk
acdQuVW12k4YOcnOO9dT/wAK9+KP/RRv/Ibf4V0P7Pv/ACI11/2FLv8A9GV6ZQB4l/wr34o/9FG/
8ht/hR/wr34o/wDRRv8AyG3+Fe20UAeJf8K9+KP/AEUb/wAht/hR/wAK9+KP/RRv/Ibf4V7bRQB4
l/wr34o/9FG/8ht/hR/wr34o/wDRRv8AyG3+Fe20UAeJf8K9+KP/AEUb/wAht/hR/wAK9+KP/RRv
/Ibf4V7bRQB4l/wr34o/9FG/8ht/hR/wr34o/wDRRv8AyG3+Fe20UAeJf8K9+KP/AEUb/wAht/hR
/wAK9+KP/RRv/Ibf4V7bRQB4l/wr34o/9FG/8ht/hR/wr34o/wDRRv8AyG3+Fe20UAeJf8K9+KP/
AEUb/wAht/hXLfETwl430bSLG78TeL/7X04ahbK1rtIyxcYOcdq+lq8z/aC/5Ea1/wCwpaf+jKAN
ivk79pn/AJH+T/rhD/6Ca+sa+Tv2mf8Akf5P+uEP/oJoA8gooooAKKKKACiiigAooooAKkt/+PiL
/eH86jqS3/4+Iv8AeH86APrnQv8AkBfBn/r7P/oDV9BV8+6F/wAgL4M/9fZ/9AavoKubC/A/V/ma
Vd/uCiiiukzCiiigAorxv4raFqWjtYahp/jLxTEdT1u3tXgF3H5UMc0mGEY8vI2g4XJOMc5rrHlt
Phto8k+q634g1x7ydILaG6dbieSU52xwqqryeTz6dRQB3FFchonjywv9Qu9P1Oy1DQtQtrY3jW+p
oqFoB1kVlZlZR35yPSs20+KemTCzup9J1yz0S9lWK21e5tlW2kLHCE/NvVWJGGZQDntQB6DRXl2m
+M/7G1v4g3OuXN1cWVhqVtbWlvGvmPmSJMRxr6s7frWuPH/mwatbtoGt2Gr2dkbxLO5hj3TR527k
ZXKHBIyCwPtQB3VFeYeEfiQT8PvDl/rdjqlxrOpKsMNtDAhlvpPLDtJGoYKI8EnLFcYPA4re0b4g
abenWY9TtL/Q7nSIRc3kOoxqpWEgkSKUZgy/Keh6igDsaK4bSfiRY32o6Zb3Wj63pdvqjbLC8vrd
UiuG2lgowxZSwBIDAZrE+HHjtU8FeGIdVlvNV1/VJbhY4YQJJmRZ5FMjZICooABYkdMDNAHqlFFF
ABRRRQAV4x4i/wCSifEP/sW1/wDQHr2evGPEX/JRPiH/ANi2v/oD1z4v+E/l+ZpS+JHMeGf+PD4Q
/wDX2f8A0Bq+jq+cfDP/AB4fCH/r7P8A6A1fR1dBmFFFFABRRXm3xUa/uvFXgjRrLWNS0q31K5uU
uJbCURyEJAXUZII6j09aAPSaK8m1+HW/hvc6Tq0XiXVda0Oa9is9QtdVMcrosrbVljdUUgqxHy9D
mtpPGWmaK3ie5ubnV71rfVY7FbVo1dvPdI9kNuAeQdwPzY5J7UAd/RXnmreODe+GvFdsmn6toet2
OkT3iR3saq23Y+2RGRmU4YeuQaueE/GNtcReHNGP2rUNZuNMgurt4VDLbho1O+ZiRt3EnA5J9Mc0
AdvRXn3x11G+0v4ezz6Ve3FjdNd20Qngba6q8yq2D9CayfFXhrxD4Q8P33iDw/4y16/uNNia6ks9
XkinhuI0G504RSpKg4IPX86APV6K89vfirpkEumW1rpOtalf6hpkOrQ22n24lYwSZ5+8Om3nOOq4
yTik0Pxppllc3yXFxrFwtz4kk0nfdKhS1uCilYlIbiLsp5O4nPagD0Oiuc1bxjpOk63c6bfSSRta
6c2p3M+0eVBCG2/Mc53Eg4ABzg1laV8RrK8vtOhvdG1vSrfU3Edjd39uqRXDkZVeGJRmAJAcLn68
UAdxRXFaR8Q7LWPFFxoum6RrU7Wt3LZXV4tsPs1vJHnIZ93fHGATyuQMiu1oAKKKKACvDfGP/JRv
Hn/YvL/6C1e5V4b4x/5KN48/7F5f/QWoAw/DP/Hh8If+vs/+gNX0dXzj4Z/48PhD/wBfZ/8AQGr6
OoAKKK8p+N2reJtO1fwdF4PmYXs9zcO1qThLsRReZ5Tf7wUge57UAerUV5b4s8a/2t4L8Ja54cu5
reK/1uxglCnDqrS7ZIX9wcqR7Vvav8QLWz1e+07TtG1rWpNPx9tk06BXS3JGdpLMu58EHauT+PFA
HaUV5fr/AMRJH8S+Av8AhHYL2/0bWTPLI9tEh89RC+EG9gVZGG5hxgDucitfUfifoOneBj4qu0vY
7FblrRoPLXz1lWRkZSu7HBUnr0GaAO5ormta8a6No2pGzv5nQJp8mqSzhQY4oFYLuY5zlicKADnB
rM0v4j2V3qGnW9/o2t6RDqbCOxutQt1SK4cjKplWJRmAJAcKT9eKAO4orzHWfiZb6ha+JdP0LTdc
a40+O+tptQS3AgtZ4Uf70m7jJTIwD1XOM1oeBvGUNxovg7TJjd6lrl9pFtd3RhAfyVaJSZZmJAUM
ScdST0BoA76iuD+OWo3ulfDDVrvS7uazvFktkSeFtroGuYlbB+jEfjWP4l8KeIfDGhXut+HfGviC
8vbCJrn7Jq0kVxBcKg3NGQI1IJAIBB60AeqUV51N8V9Njh0VYdJ1nUL/AFXTY9ThtNPtxM3lt1H3
hyvOc4H4kCn6X4102wutRN1NrMqz68umN9pRClnM8SFUGG4iyQM8/Mx7UAehUVz2q+LtL0rXW0q9
eRJYrCTU55sDyoIEbaWc5yMnOAAc4NY2mfEqwvLrTVu9H1vTLLU5BFY317bqkM7t9xeGLKW/h3AZ
oA7qiuK034iWOqeKLjQ9O0nWrmW1u3s7q6jth9nt3Xu77uhwcYyfUDIz2tABXiniH/kqnjP/ALAU
X8mr2uvFPEP/ACVTxn/2Aov5NQB8Z6h/x9yfh/IVXqxqH/H3J+H8hVegAooooAKKKKACiiigAooo
oAKKKKAHI7IcoxU9ODirSXz7SsyrKp9eKp0UAXvLtJh+7cxNjo3T/P41FLZzR/w7h6rzVapobiWE
jYxwP4T0oA7T4LyxwfEHSJZ5EjiS4VmdzgKMNyT2r7Wr4K0qWW8lKRRFpz8oEYJLZzxjrXunwo8f
6zovk6T4ksdQn0zhYrgwOz249Dxlk/Ue44oA9p/Z9/5Ea6/7Cl3/AOjK9MrzL9nshvAlyynIOp3R
B/4HXptABRRRQAUV5r8er7XLPwzosXhe/ew1S91q1s45gcD94WADeq5xke1Y/i3x9d6p8B9e1qwe
XSvEOnhba8hRsSWlysqK6/TnIPoRQB7FRXJ+IvG9tpWt/wBjWWl6prWqrCLia306JGMEZOAzs7Ko
zg4GcnHSuV8Y/ExhonhjUPDFtqEyXutRWV3Gtugli2viS2dXI2yt0H0PI4JAPVqK8R13UY9T+KWs
2Wt+N9U8K2EGn2k9vbx38Nrl3Dbwd4YEjAziumtNd0PwJ4Xk1ifxTq/ibTbi7itvtMlxFeGJ2O3C
mMLxzkjk+goA9Iorg3+JVtHbWKyeH/EKavfPItvpDWqC6dExukIL7VTkfMzCnN8T9Eh8N6zq19Bq
Nk2jSRxahY3EIW4tzIyqpK7sFTuBDAkEA49KAO6oriNM+Itnea7a6Vc6LrmmzX0cklg97bLGt4EX
cwT5iQ23nDhTj06VU+Dfi3UvFenazLq1reRSW+pTxRyTRoibA5CxjaT8yAYbPc9TQB6FRRRQAV5n
+0F/yI1r/wBhS0/9GV6ZXmf7QX/IjWv/AGFLT/0ZQBsV8nftM/8AI/yf9cIf/QTX1jXyd+0z/wAj
/J/1wh/9BNAHkFFFFABRRRQAUUUUAFFFFABUlv8A8fEX+8P51HUlv/x8Rf7w/nQB9c6F/wAgL4M/
9fZ/9AavoKvn3Qv+QF8Gf+vs/wDoDV9BVzYX4H6v8zSrv9wUUUV0mYUUUUAcF8YLC7v9M8OJY2s9
y0Wv2E0ghjLlI1kyznHRQOp6Cj4o2V8t74W1+wsZ9Rj0W/M9zaW67pWieNoy6L/Ey7gdo5Nd7RQB
4x4osL74m69JLpOnahp2n2miX9mt3qNs9sZ57lAioqOAxVduS2Mc4qt4gvtS8U/DK28D23hrWrTX
J4reyuPPs2S2tBGyb5fO+4ygISu0knjivcKKAPFdT0e5ab4lHUPC95rGn3eqWkn2dd8UksKxRhpY
Dj52QjICkZIxntTvBkGrtr17Z6DceKbrwu+mzLKviGJ0MdwcCNIWkVXPGc9QB3zivaKKAPAdN1HX
4vA3gXTRZ+KNI0mzVrLWpLTT3+1o6RL5ewbWbyixYF1B6Y4qi3hHU9d1HxzbabY+IY4NS0GOKyu9
baRnuZElJILP/q8ngI20gfNtANfRlFAHn2leNNQ1a60Sw03wvqtvcGRf7RbUbN4IrKMKd21yMO2c
BQuQQSeBXnfw+8Mav4F0rQ/Ftnp2qzXFxLNaa3prRO8wgad/LkijxuGzhtoHIYn3r6FooAQHIB9f
WloooAKKKKACvGPEX/JRPiH/ANi2v/oD17PXjHiL/konxD/7Ftf/AEB658X/AAn8vzNKXxI5jwz/
AMeHwh/6+z/6A1fR1fOPhn/jw+EP/X2f/QGr6OroMwooooAK8z+K8lzYeLvAmsQ6Vqmo2un3V09w
unWj3DoGgKKSqj1NemUUAeR+I73UviVPpGi2Hh3W9M0iO+hvNRvdVtjagxxNuEcasdzMzAc4wMfl
R1PR5za+PRqfhe+1ewudfhmMMW+KYwiKIGeDAy7KRwFIzgjPavaqKAPB9Pt9bltPFljocvivUPDE
mgXSKmu27iYXbKQkcG9RI4254wR05zitH4daBqPw7v8AQfslnqV1oviC0gXUEaN5ZbG+EY/ePxlY
2GVOeFIHQcV7PRQB538e7O8vfhzPHp1ld3063drJ5FrC0sjKsyMcKoJOADWX4t8Xap4t8OahoHhn
wl4kivtTha0Nzqdi1pb26ONruzOecKSQACSa9YooA8y8N+HZ9E+LVnHDb3DaXZeEbfTo7sxERs8c
7fJu6btoBxnODWVp/hG+1jwl8S9Omtri0u7vxDdXmnSSxlMuqwtDKhPVd6feHHBr2KigDw6Lwvr3
jT4Y+NdS1CxlsPEniMKIrO4UxNHFb4EcRDY27irnnH3wfeoLPTodb1Hw/bR6X4/urqO8huLqLWLu
4itrHyzuLl3BWRgR8oXO71Fe8UUAcN8KrC6sU8XfbLWa2Nx4ivZ4/NjKeZGxXa4yOVOOCODiu5oo
oAKKKKACvDfGP/JRvHn/AGLy/wDoLV7lXhvjH/ko3jz/ALF5f/QWoAw/DP8Ax4fCH/r7P/oDV9HV
84+Gf+PD4Q/9fZ/9Aavo6gArgvHVhd3PxD+HlzbWs81va3d208scZZIQ1uwBcjhQTwM9672igDwj
4k+D9Z0rxnpM3huynuvD2r65Z31/bwRs/wBjuY5AWnAA4R1zuPQFck9BUcmjP4c8UeK11lPHAjv9
Rk1Gyl0B52hnWQD5CI+FkBG3LYyMc4Fe90UAeIQ6Vd+F7T4Y33/CParFa6fc3sl3aW5a/mtjcRSB
dxUAnLPk8YBJHPdbvwZfaj8T9R0C7sZz4RnkuNc+0GM+UZ57cW7R7sY3BmlkxnPOa9uooA+eNF8H
eJ/Enwz8VnVrCS3197a00q0guVKGWKz2NkFscSvv56HI7c11fibVbvx+fDmk6boGt2U0Op219fS3
9k8EdokLbmAdgA7k8DbnPXgV65RQB5R4Z0rUIfAvxNglsLqOe81XV5LeNoWDTq4OxkGMsG7Ede1Y
3w08Pan8PG8L3VrZanc6Zr9hbQ6vA8byTWN4IxtkK43LHyYyCAE2jNe4UUAcB8eLO7v/AIWavb6d
Z3N7dGS1ZYLaJpZHC3MTHCqCTgAn8KyfE/jTU/EmgX+i+GfCPiZNR1CFrVJ9SsGtIIA42mR3f+6C
TgAk4r1WigDzHwv4Zm0D4laNbxW80mn6f4TXTxeeURG0izpxu6biBuxnNVLXwlda5onxO0u6t57V
9Q1eSayllQoCwhhMUqk9QJEHI9DXrNFAHh+meGfEHjT4eeNNU1iyl0/xJr9uttBa3CmNo44EAVMH
BUPJ5h+jA9KoWmmRaydB04aV8QLm9W5ge6t9Uu54rWz8sglzI4KPtI+ULnd7V7/RQBwXwosLuxuP
HDXtpPb/AGnxJdTwmWMp5sZSLDrkcqSDgjjg13tFFABXiniH/kqnjP8A7AUX8mr2uvFPEP8AyVTx
n/2Aov5NQB8Z6h/x9yfh/IVXqxqH/H3J+H8hVegAooooAKKKKACiiigAooooAKKKKACiiigAoooo
A734If8AJR9F/wCvlf5NX2nXxZ8EP+Sj6L/18r/Jq+06AMf9n3/kRrr/ALCl3/6Mr0yvM/2ff+RG
uv8AsKXf/oyvTKACiiigDgfi9YXl/B4QFja3FyYPEunzyiGMv5cauSztgcKO5PArhf2iPBusjTtW
1jwdZzXZ1iCOz1ewt42d5trAxTqq8l1xtPX5T7E17xRQB4j4p0OTSfijr+raoPFq6VrENs8Fz4fe
YhJIk2NHKkWW9GUkY5PNU5dEu9O8Dadqlr4e12NU8VwazPbTyteXskKkKZnTG4OQASnJHc9ce9UU
AeXaRoFvrfxY8R6nrGg+fp9xplibaTULHK7sOWUb14YZG4dR3qz8VfD6r4W0ey8PaSBGmuWU7wWN
twqiUFnKoOAAMk16RRQB5v4tW78PfFLTvFjadf6hpMulPpc/2GBp5LZ/NEquY1yxU4IJAOMDNcR4
w0nV/FGmePtfttE1KG21GPTrOxtJbZluLlYZ1Z5TFjcB8xxkZwCcCvf6KAOG8c2N3c+PPh/cW9rP
NBa3ty88scZZYlNs6gsRwoJIHPeqHwaW505fEujX+naha3EOr3dyss1uyQzRyysUaNzw3Hp0r0ii
gAooooAK8z/aC/5Ea1/7Clp/6Mr0yvM/2gv+RGtf+wpaf+jKANivk79pn/kf5P8ArhD/AOgmvrGv
k79pn/kf5P8ArhD/AOgmgDyCiiigAooooAKKKKACiiigAqS3/wCPiL/eH86jqS3/AOPiL/eH86AP
rnQv+QF8Gf8Ar7P/AKA1fQVfOtvcHTfA/wAKNWktrqazsZ/MnNvC0jKCrY4Fehf8Li8O/wDPlr3/
AILZK5cLJKD16v8AM1qrX7j0iivN/wDhcXh3/ny17/wWyUf8Li8O/wDPlr3/AILZK6OZdzOzPSKK
83/4XF4d/wCfLXv/AAWyUf8AC4vDv/Plr3/gtko5l3CzPSKK83/4XF4d/wCfLXv/AAWyUf8AC4vD
v/Plr3/gtko5l3CzPSKK83/4XF4d/wCfLXv/AAWyUf8AC4vDv/Plr3/gtko5l3CzPSKK83/4XF4d
/wCfLXv/AAWyUf8AC4vDv/Plr3/gtko5l3CzPSKK83/4XF4d/wCfLXv/AAWyUf8AC4vDv/Plr3/g
tko5l3CzPSKK83/4XF4d/wCfLXv/AAWyUf8AC4vDv/Plr3/gtko5l3CzPSKK83/4XF4d/wCfLXv/
AAWyUf8AC4vDv/Plr3/gtko5l3CzPSKK83/4XF4d/wCfLXv/AAWyUf8AC4vDv/Plr3/gtko5l3Cz
PSK8Y8Rf8lE+If8A2La/+gPW/wD8Li8O/wDPlr3/AILZK5CLVU8R+JPiBrVjaX0WnvoHkq9zbtFl
wj5HNc+KkvZPXt+ZdJPmRkeGf+PD4Q/9fZ/9Aavo6vmjT7r+zPCnwv1aa3uZbOxn8yc28RkZRtbs
K9N/4XN4a/59dc/8F0ldRmelUV5r/wALm8Nf8+uuf+C6Sj/hc3hr/n11z/wXSUAelUV5r/wubw1/
z665/wCC6Sj/AIXN4a/59dc/8F0lAHpVFea/8Lm8Nf8APrrn/guko/4XN4a/59dc/wDBdJQB6VRX
mv8Awubw1/z665/4LpKP+FzeGv8An11z/wAF0lAHpVFeaH4z+GQCTba4AO/9nSU2H41eGJokkjt9
bZHAYEae5BH1FAHptFea/wDC5vDX/Prrn/guko/4XN4a/wCfXXP/AAXSUAelUV5r/wALm8Nf8+uu
f+C6Sj/hc3hr/n11z/wXSUAelUV5r/wubw1/z665/wCC6Sj/AIXN4a/59dc/8F0lAHpVFea/8Lm8
Nf8APrrn/guko/4XN4a/59dc/wDBdJQB6VXhvjH/AJKN48/7F5f/AEFq6j/hc3hr/n11z/wXSVwt
zq8XiTxN451mwtr2OwfQxCr3MDRZcK+RzQBV8M/8eHwh/wCvs/8AoDV9HV80afdf2Z4U+F+rTW9z
LZ2M/mTm3iMjKNrdhXpv/C5vDX/Prrn/AILpKAPSqK81/wCFzeGv+fXXP/BdJR/wubw1/wA+uuf+
C6SgD0qivNf+FzeGv+fXXP8AwXSUf8Lm8Nf8+uuf+C6SgD0qivNf+FzeGv8An11z/wAF0lH/AAub
w1/z665/4LpKAPSqK81/4XN4a/59dc/8F0lH/C5vDX/Prrn/AILpKAPSqK81/wCFzeGv+fXXP/Bd
JTD8avC4lERg1rzCCwX+z3yQOpx+IoA9NorzX/hc3hr/AJ9dc/8ABdJR/wALm8Nf8+uuf+C6SgD0
qivNf+FzeGv+fXXP/BdJR/wubw1/z665/wCC6SgD0qivNf8Ahc3hr/n11z/wXSUf8Lm8Nf8APrrn
/gukoA9KorzX/hc3hr/n11z/AMF0lH/C5vDX/Prrn/gukoA9KrxTxD/yVTxn/wBgKL+TV0P/AAub
w1/z665/4LpK4yDV4vEnjXxhrNhbXsdg+jpCr3MDRZcBsjmgD5F1D/j7k/D+QqvVjUP+PuT8P5Cq
9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB3vwQ/wCSj6L/ANfK/wAmr7Tr4s+CH/JR9F/6
+V/k1fadAGP+z7/yI11/2FLv/wBGV6ZXhfhGTx34OsLrTNO0XSL21a7muEmlu2VmDtnpitv/AIS7
4j/9Czof/gc3+FAHrNFeTf8ACXfEf/oWdD/8Dm/wo/4S74j/APQs6H/4HN/hQB6zRXk3/CXfEf8A
6FnQ/wDwOb/Cj/hLviP/ANCzof8A4HN/hQB6zRXk3/CXfEf/AKFnQ/8AwOb/AAo/4S74j/8AQs6H
/wCBzf4UAes0V5N/wl3xH/6FnQ//AAOb/Cj/AIS74j/9Czof/gc3+FAHrNFeTf8ACXfEf/oWdD/8
Dm/wo/4S74j/APQs6H/4HN/hQB6zRXk3/CXfEf8A6FnQ/wDwOb/Cj/hLviP/ANCzof8A4HN/hQB6
zRXk3/CXfEf/AKFnQ/8AwOb/AAo/4S74j/8AQs6H/wCBzf4UAes15n+0F/yI1r/2FLT/ANGVS/4S
74j/APQs6H/4HN/hWJ4uk8d+MbC10zUdF0iytVu4bh5ortmZQjZ6YoA9Ar5O/aZ/5H+T/rhD/wCg
mvrGvk79pn/kf5P+uEP/AKCaAPIKKKKACiiigAooooAKKKKACpLf/j4i/wB4fzqOpLf/AI+Iv94f
zoA+7PhDq+mwfDTw9FPqFnHItqAyPMoIOT1BNdh/bmk/9BSx/wDAhP8AGvDfh/4C8Man4M0m8vtJ
imuZoQ0khdwWOT6Guh/4Vp4Q/wCgJD/38k/+KrnfD8qj5+ffUr+0VH3eXY9R/tzSf+gpY/8AgQn+
NH9uaT/0FLH/AMCE/wAa8u/4Vp4Q/wCgJD/38k/+Ko/4Vp4Q/wCgJD/38k/+Kpf6ty/nD+04/wAp
6j/bmk/9BSx/8CE/xo/tzSf+gpY/+BCf415d/wAK08If9ASH/v5J/wDFUf8ACtPCH/QEh/7+Sf8A
xVH+rcv5w/tOP8p6j/bmk/8AQUsf/AhP8aP7c0n/AKClj/4EJ/jXl3/CtPCH/QEh/wC/kn/xVH/C
tPCH/QEh/wC/kn/xVH+rcv5w/tOP8p6j/bmk/wDQUsf/AAIT/Gj+3NJ/6Clj/wCBCf415d/wrTwh
/wBASH/v5J/8VR/wrTwh/wBASH/v5J/8VR/q3L+cP7Tj/Keo/wBuaT/0FLH/AMCE/wAaP7c0n/oK
WP8A4EJ/jXl3/CtPCH/QEh/7+Sf/ABVH/CtPCH/QEh/7+Sf/ABVH+rcv5w/tOP8AKeo/25pP/QUs
f/AhP8aP7c0n/oKWP/gQn+NeXf8ACtPCH/QEh/7+Sf8AxVH/AArTwh/0BIf+/kn/AMVR/q3L+cP7
Tj/Keo/25pP/AEFLH/wIT/Gj+3NJ/wCgpY/+BCf415d/wrTwh/0BIf8Av5J/8VR/wrTwh/0BIf8A
v5J/8VR/q3L+cP7Tj/Keo/25pP8A0FLH/wACE/xo/tzSf+gpY/8AgQn+NeXf8K08If8AQEh/7+Sf
/FUf8K08If8AQEh/7+Sf/FUf6ty/nD+04/ynqP8Abmk/9BSx/wDAhP8AGj+3NJ/6Clj/AOBCf415
d/wrTwh/0BIf+/kn/wAVR/wrTwh/0BIf+/kn/wAVR/q3L+cP7Tj/ACnqP9uaT/0FLH/wIT/Gsfxj
rOlyeENcRNSsmdrGcBROpJPltwOa4b/hWnhD/oCQ/wDfyT/4qj/hWnhD/oCQ/wDfyT/4qmuHJJ35
xPMov7JY+FmqafD8PdCjmvrWORbcBlaZQRyeozXVf2zpf/QSsv8Av+v+NcYPhn4PA/5AkP8A39k/
+Kpf+FaeEP8AoCQ/9/JP/iq9X6jPujm+sx7HZf2zpf8A0ErL/v8Ar/jR/bOl/wDQSsv+/wCv+Ncb
/wAK08If9ASH/v5J/wDFUf8ACtPCH/QEh/7+Sf8AxVH1GfdC+sx7HZf2zpf/AEErL/v+v+NH9s6X
/wBBKy/7/r/jXG/8K08If9ASH/v5J/8AFUf8K08If9ASH/v5J/8AFUfUZ90H1mPY7L+2dL/6CVl/
3/X/ABo/tnS/+glZf9/1/wAa43/hWnhD/oCQ/wDfyT/4qj/hWnhD/oCQ/wDfyT/4qj6jPug+sx7H
Zf2zpf8A0ErL/v8Ar/jR/bOl/wDQSsv+/wCv+Ncb/wAK08If9ASH/v5J/wDFUf8ACtPCH/QEh/7+
Sf8AxVH1GfdB9Zj2J/ip4pstO8B6s9pfW8l1NF9njWOVWbL/ACkjB7Ak/hWN8CPE1pceA4bO+vII
p7GVoMSyBSUPzKeT0+Yj/gNU/GHwp8Pz6W8umxHTnt0eVjFl/MwuQDuJwOO1ZXwx+GeiXegWmq6q
hvvtkIfyZMqIzk8gqQfzqPqdTm5Svbxtc9l/tnS/+glZf9/1/wAaP7Z0v/oJWX/f9f8AGuN/4Vp4
Q/6AkP8A38k/+Ko/4Vp4Q/6AkP8A38k/+Kq/qM+6J+sx7HZf2zpf/QSsv+/6/wCNH9s6X/0ErL/v
+v8AjXG/8K08If8AQEh/7+Sf/FUf8K08If8AQEh/7+Sf/FUfUZ90H1mPY7L+2dL/AOglZf8Af9f8
aP7Z0v8A6CVl/wB/1/xrjf8AhWnhD/oCQ/8AfyT/AOKo/wCFaeEP+gJD/wB/JP8A4qj6jPug+sx7
HZf2zpf/AEErL/v+v+NH9s6X/wBBKy/7/r/jXG/8K08If9ASH/v5J/8AFUf8K08If9ASH/v5J/8A
FUfUZ90H1mPY7L+2dL/6CVl/3/X/ABrK8Wavpr+FtZRNQs2ZrKYACZSSdh461hf8K08If9ASH/v5
J/8AFUf8K08If9ASH/v5J/8AFUfUZ90H1mPYsfCzVNPh+HuhRzX1rHItuAytMoI5PUZrqv7Z0v8A
6CVl/wB/1/xrjB8M/B4H/IEh/wC/sn/xVL/wrTwh/wBASH/v5J/8VR9Rn3Q/rMex2X9s6X/0ErL/
AL/r/jR/bOl/9BKy/wC/6/41xv8AwrTwh/0BIf8Av5J/8VR/wrTwh/0BIf8Av5J/8VR9Rn3QvrMe
x2X9s6X/ANBKy/7/AK/40f2zpf8A0ErL/v8Ar/jXG/8ACtPCH/QEh/7+Sf8AxVH/AArTwh/0BIf+
/kn/AMVR9Rn3QfWY9jsv7Z0v/oJWX/f9f8aP7Z0v/oJWX/f9f8a43/hWnhD/AKAkP/fyT/4qj/hW
nhD/AKAkP/fyT/4qj6jPug+sx7HZf2zpf/QSsv8Av+v+NH9s6X/0ErL/AL/r/jXG/wDCtPCH/QEh
/wC/kn/xVH/CtPCH/QEh/wC/kn/xVH1GfdB9Zj2Oy/tnS/8AoJWX/f8AX/GvBvGvjtbP42WeoW8w
k0/Tglo5RsqyMMyEY643n8VFej/8K08If9ASH/v5J/8AFV5jqPwrsYvHNjoyahOIby3luCwQZQqe
FA9KieDqRKjXjI+gBrWlkAjUrIg8g+en+NH9s6X/ANBKy/7/AK/41wem/Czwta2MMN1pyXcyLhp3
Z1L+5AbFWv8AhWnhD/oCQ/8AfyT/AOKq1gandC+sxOy/tnS/+glZf9/1/wAaP7Z0v/oJWX/f9f8A
GuN/4Vp4Q/6AkP8A38k/+Ko/4Vp4Q/6AkP8A38k/+Ko+oz7oX1mPY7L+2dL/AOglZf8Af9f8aP7Z
0v8A6CVl/wB/1/xrjf8AhWnhD/oCQ/8AfyT/AOKo/wCFaeEP+gJD/wB/JP8A4qj6jPug+sx7HZf2
zpf/AEErL/v+v+NH9s6X/wBBKy/7/r/jXG/8K08If9ASH/v5J/8AFUf8K08If9ASH/v5J/8AFUfU
Z90H1mPY7L+2dL/6CVl/3/X/ABqjrur6a2h6iq6jZljbyAATrk/Kfeub/wCFaeEP+gJD/wB/JP8A
4qj/AIVp4Q/6AkP/AH8k/wDiqPqM+6D6zHsfHd9FI105WNyOOQPaoPIl/wCeT/8AfJr7RHw88JgA
DQ7Tj1BP9aP+Fe+E/wDoBWf5H/Gn9Qn3QfWY9j4u8iX/AJ5P/wB8mjyJf+eT/wDfJr7R/wCFe+E/
+gFZ/kf8aP8AhXvhP/oBWf5H/Gj6hPug+sx7Hxd5Ev8Azyf/AL5NHkS/88n/AO+TX2j/AMK98J/9
AKz/ACP+NH/CvfCf/QCs/wAj/jR9Qn3QfWY9j4u8iX/nk/8A3yaPIl/55P8A98mvtH/hXvhP/oBW
f5H/ABo/4V74T/6AVn+R/wAaPqE+6D6zHsfF3kS/88n/AO+TR5Ev/PJ/++TX2j/wr3wn/wBAKz/I
/wCNH/CvfCf/AEArP8j/AI0fUJ90H1mPY+LvIl/55P8A98mjyJf+eT/98mvtH/hXvhP/AKAVn+R/
xo/4V74T/wCgFZ/kf8aPqE+6D6zHsfF3kS/88n/75NHkS/8APJ/++TX2j/wr3wn/ANAKz/I/40f8
K98J/wDQCs/yP+NH1CfdB9Zj2Pi7yJf+eT/98mjyJf8Ank//AHya+0f+Fe+E/wDoBWf5H/Gj/hXv
hP8A6AVn+R/xo+oT7oPrMex8z/Bgi2+IWjSXJEMYuFJaT5QOD3NfYn9s6X/0ErL/AL/r/jXIyfDr
wlIuG0O1A/2Sy/yNR/8ACtPCH/QEh/7+Sf8AxVH1CfdB9Zj2Oy/tnS/+glZf9/1/xo/tnS/+glZf
9/1/xrjf+FaeEP8AoCQ/9/JP/iqP+FaeEP8AoCQ/9/JP/iqX1GfdB9Zj2Oy/tnS/+glZf9/1/wAa
P7Z0v/oJWX/f9f8AGuN/4Vp4Q/6AkP8A38k/+Ko/4Vp4Q/6AkP8A38k/+Ko+oz7oPrMex2X9s6X/
ANBKy/7/AK/40f2zpf8A0ErL/v8Ar/jXG/8ACtPCH/QEh/7+Sf8AxVH/AArTwh/0BIf+/kn/AMVR
9Rn3QfWY9jsv7Z0v/oJWX/f9f8aP7Z0v/oJWX/f9f8a43/hWnhD/AKAkP/fyT/4qj/hWnhD/AKAk
P/fyT/4qj6jPug+sx7HZf2zpf/QSsv8Av+v+NH9s6X/0ErL/AL/r/jXG/wDCtPCH/QEh/wC/kn/x
VH/CtPCH/QEh/wC/kn/xVH1GfdB9Zj2Oy/tnS/8AoJWX/f8AX/Gj+2dL/wCglZf9/wBf8a43/hWn
hD/oCQ/9/JP/AIqj/hWnhD/oCQ/9/JP/AIqj6jPug+sx7HZf2zpf/QSsv+/6/wCNH9s6X/0ErL/v
+v8AjXG/8K08If8AQEh/7+Sf/FUf8K08If8AQEh/7+Sf/FUfUZ90H1mPY7L+2dL/AOglZf8Af9f8
aP7Z0v8A6CVl/wB/1/xrjf8AhWnhD/oCQ/8AfyT/AOKo/wCFaeEP+gJD/wB/JP8A4qj6jPug+sx7
HZf2zpf/AEErL/v+v+NH9s6X/wBBKy/7/r/jXG/8K08If9ASH/v5J/8AFUf8K08If9ASH/v5J/8A
FUfUZ90H1mPY7L+2dL/6CVl/3/X/ABr5a/aOljvPHcj2kiTp5MXzREMPun0r3P8A4Vp4Q/6AkP8A
38k/+Kp8Xw58JR526HbHP94s38zT+oT7oPrMex8Y+RL/AM8n/wC+TR5Ev/PJ/wDvk19o/wDCvfCf
/QCs/wAj/jR/wr3wn/0ArP8AI/40fUJ90H1mPY+LvIl/55P/AN8mgwygEmNwB32mvtH/AIV74T/6
AVn+R/xrh/jJ4S0HR/BUt3pel29tcieNRIgOcE8ipng5Qi5N7DjiIydrHzFRRRXGdAUUUUAFSW//
AB8Rf7w/nUdSW/8Ax8Rf7w/nQB9o/C3/AJJ7oX/XuP5muqrlfhb/AMk90L/r3H8zXVV79L4F6Hlz
+JhRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAUtbUto1+o6m3kA/75NYPwrIb4e6GR/wA++P1NdDq3/ILvP+uL/wDoJrnPhP8A8k70P/ri
f/QjWb/iL0f6F/ZOtooorQgKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK4jWP
l+Lnh8no1hcKPqCDXb1xGt/8lY8Nf9eVz/IVnV2XqvzLhuzt6KKK0ICiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACvOvj3/wAk9m/6+Iv5mvRa86+Pf/JPZv8Ar4i/mayr/wAO
XoaU/jR8i0UUV4R6QUUUUAFSW/8Ax8Rf7w/nUdSW/wDx8Rf7w/nQB9o/C3/knuhf9e4/ma6quV+F
v/JPdC/69x/M11Ve/S+Beh5c/iYUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEF/8A8eNx/wBc2/lXLfCH/knGif8AXN//AEY1dXdLutZl
PQoR+lcl8HW3fDbRSf7kg/KR6zf8Rej/AELXws7KiiitCAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKrXl/Z2Oz7bd29vvOF86QJu+mTzVmgAoqvc31payRR3V1BDJKcRrJIFLn0APXqPzqxQA
VxHiH/kqvhL/AK9rv/0EV29cR4k+X4peDiP4obxT+EYNZ1dl6r8y4b/edvRRRWhAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV518e/8Akns3/XxF/M16LXnXx7/5J7N/18Rf
zNZV/wCHL0NKfxo+RaKKK8I9IKKKKACpLf8A4+Iv94fzqOpLf/j4i/3h/OgD7R+Fv/JPdC/69x/M
11Vcr8Lf+Se6F/17j+Zrqq9+l8C9Dy5/EwoooqyQooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGTAtE4HJKkCuN+DJB+Guikf3ZR/wCRXrta4j4K
/wDJMtG/7bf+jpKzf8Rej/QtfC/l+p29FFFaEBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBz
nj7wraeMfDdxpd3hXPzwTYyYpB0b+h9QTXCfDjx//ZOjaponjaU22q+H0O9nOTNEMBSP7zcqB6gq
ecmvXq+ZviekvxC8T6pqfhfTormx0GALcXIz/pZDZIGPvYG7GOSAeeVFc1d+zanHf8/+GNqS5lyv
Y734b6VeeMfEb+PfEkRSPlNItG5EMYz8/wBeuD3JJ9K73xd4v0TwlbRza5erAZOI4lUvJJ9FHP49
Ki+HviWw8VeFrO/01EhVVEUluv8AywdQMpj06Y9sV5C+tTn43+INRl8P32vSacotraK3Xd9mxgb8
Hpn5se7GjmVOC5Xe/ULc8nfoeneGPiX4a8Raiun2l1Lb3z/cguojEz/7ueCfbOapeOr+20v4ieC7
u/lWG2C3iGRjhVJRRyew5HNcN8TtR1nxhpdstp4G12z1W0mWa2vDF80eDyMgZx3+oFaHxhgOsX3w
5t9UhKm9uFjuYiMEb3tw6+3UiolVbi+treXUqMFdfP8AI6T/AIXN4M+3i3N9OIy20XJt38on64zj
3xXocMsc8McsLrJFIoZHU5DA8gg9xXIfFPTrN/hlrlubWEQW9m7woEAEbKMqVHbGO1L8HpHk+GXh
5pGLEW23J9AxAH5AVtGUlPkl2uZtLl5kdjRRRWxmFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAV518e/wDkns3/AF8RfzNei1518e/+Sezf9fEX8zWVf+HL0NKfxo+RaKKK8I9IKKKK
ACpLf/j4i/3h/Oo6kt/+PiL/AHh/OgD7R+Fv/JPdC/69x/M11Vcr8Lf+Se6F/wBe4/ma6qvfpfAv
Q8ufxMKKKKskKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAriPgv/wAk704dhJOAPT989dvXEfBnjwDaJ/cmnXPr+9as3/EXo/0LXwv5fqdvRRRW
hAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcD8Wm8SXulRaJ4UspWk1A+Xc3u4KkEROCM5zk
98dBnuRXQ+CvDNl4T8O22lWAysYzJIRgyyH7zn6/oMDtW7RUKC5ucrm05TyGLw1rPgX4knUPDFhL
eeGtVP8AplrCR/o7Z+8ASOhORjsWX0qx4n0DxB4a8fzeL/CVkupwXsYjv9P3hHOAPmXP+6D3Oc8E
GvVqKj2KtZPz9CvaPdnkWq6h468bz2en6ZpF94UsFlEl1fSzbZSB/CoGD/PJxkgdbXxVspp/GXw6
htkeVo78ucnJ2o8LMST6KpP4V6nXEeM/l8feBn9JrpcfWIVNSnaLu73a/MqMtdF3Nf4gWVxqPgjX
LOyiaa5ntJI4416sxU4FVvhdp93pXgDRrHUYWgu4YSskbYyp3E9q6mituRc3MZ82nKFFFFUSFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV518e/wDkns3/AF8RfzNei1518e/+Sezf
9fEX8zWVf+HL0NKfxo+RaKKK8I9IKKKKACpLf/j4i/3h/Oo6kt/+PiL/AHh/OgD7R+Fv/JPdC/69
x/M11Vcr8Lf+Se6F/wBe4/ma6qvfpfAvQ8ufxMKKKKskKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAriPg3/wAiPCO4ubgEen71q7euI+D3/Int
/wBftx/6MNZv+IvR/oWvhZ29FFFaEBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABXEeNuPHHgcnp9puBn/ALZV29cR46/5HDwR/wBfsv8A6LrOr8PzX5lw3O3ooorQgKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK86+Pf/ACT2b/r4i/ma9Frzr49/8k9m/wCv
iL+ZrKv/AA5ehpT+NHyLRRRXhHpBRRRQAVJb/wDHxF/vD+dR1Jb/APHxF/vD+dAH2j8Lf+Se6F/1
7j+Zrqq8l8B6h43i8H6Uml+HrC5sVhAilkuwrOuTyRnit/8AtP4if9Ctpv8A4HL/AI16kMdQjFJy
PPlTbbO7orhP7T+In/Qrab/4HL/jR/afxE/6FbTf/A5f8ar+0MP/ADE+yZ3dFcJ/afxE/wChW03/
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
f2hh/wCYPZM7uiuE/tP4if8AQrab/wCBy/40f2n8RP8AoVtN/wDA5f8AGj+0MP8AzB7Jnd0Vwn9p
/ET/AKFbTf8AwOX/ABo/tP4if9Ctpv8A4HL/AI0f2hh/5g9kzu6K4T+0/iJ/0K2m/wDgcv8AjR/a
fxE/6FbTf/A5f8aP7Qw/8weyZ3dFcJ/afxE/6FbTf/A5f8aP7T+In/Qrab/4HL/jR/aGH/mD2TO7
orhP7T+In/Qrab/4HL/jR/afxE/6FbTf/A5f8aP7Qw/8weyZ3dFcJ/afxE/6FbTf/A5f8aP7T+In
/Qrab/4HL/jR/aGH/mD2TO7orhP7T+In/Qrab/4HL/jR/afxE/6FbTf/AAOX/Gj+0MP/ADB7Jnd0
Vwn9p/ET/oVtN/8AA5f8aP7T+In/AEK2m/8Agcv+NH9oYf8AmD2TO7rzr49/8k9m/wCviL+Zq1/a
fxE/6FbTf/A5f8a5T4nHxrqfg+7TV9BsrSyhKzySxXSuwCn0zz1rOrjqE4OKlqy4U2pJnzNRTpF2
SMuc7SRmm15p3hRRRQAVJb/8fEX+8P51HUlv/wAfEX+8P50Afbfwo/5J1oP/AF7D+ZrrK5P4Uf8A
JOtB/wCvYfzNdZXmT+JnDLdhRRRUiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuT
+K//ACTrXv8Ar2P8xXWVyfxX/wCSda9/17H+YqofEio7o+JLj/j4l/3j/Oo6kuP+PiX/AHj/ADqO
vTO0KKKKACpLf/j4i/3h/Oo6kt/+PiL/AHh/OgD7b+FH/JOtB/69h/M11lcn8KP+SdaD/wBew/ma
6yvMn8TOGW7CiiipEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcn8V/+Sda9/wBe
x/mK6yuT+K//ACTrXv8Ar2P8xVQ+JFR3R8SXH/HxL/vH+dR1Jcf8fEv+8f51HXpnaFFFFABUlv8A
8fEX+8P51HUlv/x8Rf7w/nQB9t/Cj/knWg/9ew/ma6yuT+FH/JOtB/69h/M11leZP4mcMt2FFFFS
IKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigArkfif40XwL4ei1V7E3wkuFt/LEvl4yrHOcH+7+tddXj/
AO1H/wAk6tf+wlF/6Lkq6aTkkyoK7SZ65by+dbxS4xvUNj0yM1yfjrxsvhTWPDdg1gbo6zdfZg4l
2eV8yLnGDn7/AE46VzVn8b/BUVpBG95dbkjVT/or9QK4f4heO9D8Z+M/AK6DPNKbTU1MvmRFMbpI
sYz1+6auNN31WhUYO+qPo2iuG+JHiXXNLudK0jwrpwudU1KQqLidGMFuo6sxHfqfoDweBXJ+Krj4
neDtHl1251zSdWtLbDXFr9kEeFJA4IAJ6+o/GoUG+pKjc9lorzfx944vLH4TW3inRAkNxcpbyKsq
7wokxkH1xnFV/CN58QtX1ax13UptMsvC10DKbIgGaOEoSjE7ep+X+LjPTtRyO1w5Xa56hXJ3XjFY
PiTaeEvsRZrizN39q83hcFvl24/2eue9cRo/iPxx8Q7q9vvCV5Y6J4ft5mhgluIBLJcEdyCDgcjp
jGcc4NYvhy81u6/aEsIvE9vbxanaac9u725PlzqA7LIuegIbp6g9OgtU7XuUob3PfaK8++GHinU9
X1jxRo2vvE1/pN5sRkj2b4jkKcf8Bz/wIVz/AId+Jmoaj8Y7vQZfK/sNpZ7S1YR4JliUFvm79D/3
0Kn2b18ieR6nsNFcDrvifUv+FraF4Y0lohbNbveagzJuITnaAe3K4/4EKyrvW/G/inxRqum+Fhb6
Hpemv5TX17bl3nfJGUVhgrwe3TBzzikoMOVnqdFeRad4n8YeF/H+k+HvGNzY6pZ6tuFvdwRCN1Yd
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
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAK5P4r/8AJOte/wCvY/zFdZXJ/Ff/AJJ1r3/Xsf5iqh8SKjuj4kuP+PiX
/eP86jqS4/4+Jf8AeP8AOo69M7QooooAKkt/+PiL/eH86jqS3/4+Iv8AeH86APtv4Uf8k60H/r2H
8zXWVyfwo/5J1oP/AF7D+ZrrK8yfxM4ZbsKKKKkQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAVyfxX/5J1r3/AF7H+YrrK5P4r/8AJOte/wCvY/zFVD4kVHdHxJcf8fEv+8f51HUlx/x8
S/7x/nUdemdoUUUUAFKrFWDLwQcikooA2IvEmqwxrHDeTxxqMBVlcAfQZp//AAlOsf8AP/c/9/n/
AMaxKKVkFjb/AOEp1j/n/uf+/wA/+NH/AAlOsf8AP/c/9/n/AMaxKKLIVjb/AOEp1j/n/uf+/wA/
+NH/AAlOsf8AP/c/9/n/AMaxKKLILG3/AMJTrH/P/c/9/n/xo/4SnWP+f+5/7/P/AI1iUUWQWNv/
AISnWP8An/uf+/z/AONH/CU6x/z/ANz/AN/n/wAaxKKLILG3/wAJTrH/AD/3P/f5/wDGj/hKdY/5
/wC5/wC/z/41iUUWQWNv/hKdY/5/7n/v8/8AjR/wlOsf8/8Ac/8Af5/8axKKLILG3/wlOsf8/wDc
/wDf5/8AGj/hKdY/5/7n/v8AP/jWJRRZBY2/+Ep1j/n/ALn/AL/P/jR/wlOsf8/9z/3+f/GsSiiy
Cxt/8JTrH/P/AHP/AH+f/Gj/AISnWP8An/uf+/z/AONYlFFkFjb/AOEp1j/n/uf+/wA/+NH/AAlO
sf8AP/c/9/n/AMaxKKLILG3/AMJTrH/P/c/9/n/xo/4SnWP+f+5/7/P/AI1iUUWQWNv/AISnWP8A
n/uf+/z/AONH/CU6x/z/ANz/AN/n/wAaxKKLILG3/wAJTrH/AD/3P/f5/wDGj/hKdY/5/wC5/wC/
z/41iUUWQWNv/hKdY/5/7n/v8/8AjR/wlOsf8/8Ac/8Af5/8axKKLILG3/wlOsf8/wDc/wDf5/8A
Gj/hKdY/5/7n/v8AP/jWJRRZBY2/+Ep1j/n/ALn/AL/P/jR/wlOsf8/9z/3+f/GsSiiyCxt/8JTr
H/P/AHP/AH+f/Gj/AISnWP8An/uf+/z/AONYlFFkFjb/AOEp1j/n/uf+/wA/+NH/AAlOsf8AP/c/
9/n/AMaxKKLILG3/AMJTrH/P/c/9/n/xo/4SnWP+f+5/7/P/AI1iUUWQWNv/AISnWP8An/uf+/z/
AONH/CU6x/z/ANz/AN/n/wAaxKKLILG3/wAJTrH/AD/3P/f5/wDGj/hKdY/5/wC5/wC/z/41iUUW
QWNv/hKdY/5/7n/v8/8AjR/wlOsf8/8Ac/8Af5/8axKKLILG3/wlOsf8/wDc/wDf5/8AGj/hKdY/
5/7n/v8AP/jWJRRZBY2/+Ep1j/n/ALn/AL/P/jR/wlOsf8/9z/3+f/GsSiiyCxt/8JTrH/P/AHP/
AH+f/Gj/AISnWP8An/uf+/z/AONYlFFkFjb/AOEp1j/n/uf+/wA/+NH/AAlOsf8AP/c/9/n/AMax
KKLILG3/AMJTrH/P/c/9/n/xo/4SnWP+f+5/7/P/AI1iUUWQWNv/AISnWP8An/uf+/z/AONH/CU6
x/z/ANz/AN/n/wAaxKKLILG3/wAJTrH/AD/3P/f5/wDGj/hKdY/5/wC5/wC/z/41iUUWQWNv/hKd
Y/5/7n/v8/8AjR/wlOsf8/8Ac/8Af5/8axKKLILG3/wlOsf8/wDc/wDf5/8AGj/hKdY/5/7n/v8A
P/jWJRRZBY2/+Ep1j/n/ALn/AL/P/jR/wlOsf8/9z/3+f/GsSiiyCxt/8JTrH/P/AHP/AH+f/Gj/
AISnWP8An/uf+/z/AONYlFFkFjb/AOEp1j/n/uf+/wA/+NH/AAlOsf8AP/c/9/n/AMaxKKLILG3/
AMJTrH/P/c/9/n/xo/4SnWP+f+5/7/P/AI1iUUWQWNv/AISnWP8An/uf+/z/AONH/CU6x/z/ANz/
AN/n/wAaxKKLILG3/wAJTrH/AD/3P/f5/wDGj/hKdY/5/wC5/wC/z/41iUUWQWNv/hKdY/5/7n/v
8/8AjR/wlOsf8/8Ac/8Af5/8axKKLILG3/wlOsf8/wDc/wDf5/8AGj/hKdY/5/7n/v8AP/jWJRRZ
BY2/+Ep1j/n/ALn/AL/P/jR/wlOsf8/9z/3+f/GsSiiyCxt/8JTrH/P/AHP/AH+f/Gj/AISnWP8A
n/uf+/z/AONYlFFkFjb/AOEp1j/n/uf+/wA/+NH/AAlOsf8AP/c/9/n/AMaxKKLILG3/AMJTrH/P
/c/9/n/xo/4SnWP+f+5/7/P/AI1iUUWQWNv/AISnWP8An/uf+/z/AONH/CU6x/z/ANz/AN/n/wAa
xKKLILG3/wAJTrH/AD/3P/f5/wDGj/hKdY/5/wC5/wC/z/41iUUWQWNv/hKdY/5/7n/v8/8AjR/w
lOsf8/8Ac/8Af5/8axKKLILG3/wlOsf8/wDc/wDf5/8AGj/hKdY/5/7n/v8AP/jWJRRZBY2/+Ep1
j/n/ALn/AL/P/jR/wlOsf8/9z/3+f/GsSiiyCxt/8JTrH/P/AHP/AH+f/Gj/AISnWP8An/uf+/z/
AONYlFFkFjb/AOEp1j/n/uf+/wA/+NH/AAlOsf8AP/c/9/n/AMaxKKLILG3/AMJTrH/P/c/9/n/x
o/4SnWP+f+5/7/P/AI1iUUWQWNv/AISnWP8An/uf+/z/AONH/CU6x/z/ANz/AN/n/wAaxKKLILG3
/wAJTrH/AD/3P/f5/wDGmS+JNVmjaOa8nkjYYKtK5B+ozWPRRZDsKzFmLNyScmkoopgFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//Z
CmVuZHN0cmVhbQplbmRvYmoKNzQKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0aAoxMDAw
Ci9IZWlnaHQKNDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50CjgK
L0xlbmd0aAo3OAowClIKL0ZpbHRlcgovRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7dUxTiIBAEBR
ZxLCWFCRKPRSQbCiJpGtbMTEsHv/k6xjLEz2Bn/fu8PPv7sD/gfDMAJJw/Bd+bhYTtM9kDNNy8X4
Vfq4XK0fNkDQw3q1HOedL1bbp/0RCNo/bVeLYd75enc6v1yAnJfzabeehz5Oj4fz69v1HYi5vr2e
D4/T3Pn95ni5ftyAnI/r5bi5/+p8+/zr/fYbyLm9/3re/uz8DxCjc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn0/ds5kPOj883xcv24ATkf18tx89X59Hg4v75d34GY69vr+fA4
zZ0v17vT+eUC5LycT7v18rPzYbHaPu2PQND+abtaDHfz0Ffrhw0Q9LBezTv/HPq4WE7TPZAzTcvF
OO98Ln0YgaThu3Kg7i83M5DDCmVuZHN0cmVhbQplbmRvYmoKNzUKMApvYmoKODE4NwplbmRvYmoK
NzYKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0aAo4OTcKL0hlaWdodAo1MTMKL0NvbG9y
U3BhY2UKL0RldmljZUdyYXkKL0JpdHNQZXJDb21wb25lbnQKOAovTGVuZ3RoCjc5CjAKUgovRmls
dGVyCi9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzt3SGM1eeax/EjRiAQCAQCgUAgEBUVCAQJAoFA
IEZUVFQgEAgEouLNBoFAdDcIBILsIioQCLJBVIxAVJBNBWIEN2l2EQg2aW7IXbKZbP57znB7b9tL
O88MvzMPc/h8kt40XGhnnjzfzOk55z3vbAYAAAAAAAAAAAAAAAAAAAAAAAAAsG19HCz/3P0F7NJB
+3rXuxdy4WAsZWRU6xP80kdQ4EFZysSoRvc3wUdmBLbqE1nKxKhG9zfBR0aAZQIkT4BlAiRPgGUC
JE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRP
gGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4Bl
AiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIk
T4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+A
ZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUC
JE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRP
gGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4Bl
AiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIk
T4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+A
ZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiRPgGUCJE+AZQIkT4BlAiTv0eHAWn0aSylAluDNvTOBxfoU
llKA5P3n/K/N60cDu7XySylA8sapW6+maevhxbXAeq32UgqQvPlWrV18tDVNL2+dDCzYKi+lAMl7
t1XHbmzO/35j/VBgx1Z2KQVI3t+26uz9N9P0+vapwJat6FIKkLxfbNXhK8/mv7Bxeb//a3B0z6BI
gOT9eqs+v/t2ml7dOhFYtdVbSgGS99utOnL1+fxXn+znj8HRPYMiAZL3nq06c3/xY3AcD+zbSi2l
AMl771YdubY5TVuP9+m1wdE9gyIBkvd7W3Xu2/mPwZfjWGDpVmUpBUje72/V0euLH4MPzwXWbjWW
UoDk/eFWnX+4NU2bV5d8YGJ0z6BIgOTtsFXHxstpenPndGD3DvxSCpC8Hbdq7fLGtNyX50fzCKoE
SF5lq07feTNNL28s6wmZ0T2DIgGSV9uqw1c3p+ntg88DK3hwl1KA5JW36sLizNL360t4JDq6Z1Ak
QPJ2sVUnbv80Ta++jj8SHd0zKBIgebvaqkNXni/hkejonkGRAMnb7Vadzz8SHd0zKBIgebvfqu1H
oi9v5D7HaXTPoEiA5O1lq949Er2XenV+dM+gSIDk7XGrLjye/9nvLgVW8uAspQDJ2/NWnfzmzTS9
uBZ4n+jonkGRAMn7gK06cu3HafrpmxOfylIKkLwP2qq1S0+naevR2U9jKQVI3odu1WcP3k7Tsy8+
5GWJ0T2DIgGS9+Fbdezmq8UbZPb+ssTonkGRAMlLbNWhrxYvS9zd62f6ju4ZFAmQvNAFnecXL0s8
ubDSSylA8mI35J68M/+PwedX9nC7xOieQZEAyQteUX3kxstpen1z16clRvcMigRIXvSO+LX1Z9O0
9eCz1VxKAZIXDXDuzOKD1J5e2s3LEqN7BkUCJC8d4F9PS7y4dmTlllKA5OUDnM0OX3uxm/eoje4Z
FAmQvGUEOHdpo/4etdE9gyIBkrekAGezzxZ3LP3wReFlidE9gyIBkre0ABefqr14j9rO97uM7hkU
CZC8JQY4mx368ofChziN7hkUCZC8pQY4d3bnD3Ea3TMoEiB5yw6w8HGio3sGRQIkb/kB/u3jRM8c
8KUUIHn7EeDsrx8n+uz9z4mO7hkUCZC8fQpw/kj01utpen3rxMFdSgGSt28BLp4TXbxV+9E/HBoc
3TMoEiB5+xjg3JnFJ8hs/uZ9oqN7BkUCJG9/A5zNji0ODb65+8tP1R7dMygSIHn7HeDiswyfzP+9
T/9+5/XonkGRAMnb/wDnTt1ZvDQ4jh+spRQgeS0BzmaHFy8NTk+vnzxASylA8poCnDu3eEJm2vz6
5L90z6BIgOT1BTj/Mbj+4PX8S/if7hkUCZC8zgDn1i48+Ev3CKoESF5zgHP/1j2CKgGS1x7gya3u
EVQJkLyNse2rwHLtzf3uCZQJkKW5GViuvblxZ7P7my8SIEuzyw+zjhrd33yRAFmW/wrs1sovpQBZ
lv97cnkP1xqFjO7vvkiA5G1s/+//TtPrO10PQ0frAOoESN74Ymua/nT06rP53z+7uvd7pj+BpRQg
eWN29r+3nwP97M7raXr77d4uuf0kllKA5M236tTmuwefh9afzH8avhwnAou2ikspQPIWW/X3B57H
v/5x/msblRsdckbzCKoESN4/bNW5xaUqP93d4ePkk0b3DIoESN57turwle/n/8fz6/v1jMzonkGR
AMl7/1advv1qmrYeXtzNTdMrv5QCJO/3tmrt0uOtaXp161Rg61ZkKQVI3h9s1bEbi7dJP/3ycGDx
VmEpBUjeH2/VmXtvpunN/dpV06u+lAIkb6etOvzlxvx3bd7Y8Z7b1V9KAZJX2KqTt15O09bjy8t6
RmZ0z6BIgOSVtmrt4sO30/T69umdf+sKL6UAyatu1dFri0/SfXblyM6/dVWXUoDk7WKrPr/70+Ki
23OBPTyQSylA8na1VYfWv5v/kR9/vtQhZHTPoEiA5O12q06MH+d/6sl68O3ao3kEVQIkbw9bdf7b
xTMyd2Jv1x7dMygSIHl72qoj2wfofwgdoB/dMygSIHl73arT3ywO0D+8EHhxcHTPoEiA5O19qw5d
Xrxd++XNE5/KUgqQvA/aquM3Xsz/ERtfftgzMqN7BkUCJO9Dt+rc/cXbte+e+QSWUoDkffhWHf5q
cYB+8/qe3649umdQJEDyIteTndo+QP9ojwfoR/cMigRIXuh+wLWLjxYH6G/v5QD96J5BkQDJy13Q
eez64u3a33+16wP0o3sGRQIkL3pD7pm72wfoz63mUgqQvPAV1Ye2D9C/uLGbt2uP5hFUCZC8/B3x
J24uDtDv4r6z0T2DIgGSlw9wNlu7sH2A/pviAfrRPYMiAZK3jADnjl79YVrcd1Y5QD+6Z1AkQPKW
FODc5+/uOzu/MkspQPKWF+D2fWfT4gD9idVYSgGSt8wA545vH6D/7g8P0I/mEVQJkLwlBzh37sEO
952N7hkUCZC85Qc4mx25sjhA//za7xygH90zKBIgefsR4Gxx39n2Afr3vl17dM+gSIDk7VOAs9na
uwP0t04e2KUUIHn7FuDs5/vONn5739nonkGRAMnbzwDnzm4foL/3qwP0o3sGRQIkb58DXNx39nT6
9X1no3sGRQIkb98DnDt1a3GA/vGltYO1lAIkryPA7fvOtg/Qnz5ISylA8noCnDv67gD9lcMHZikF
SF5bgLOf7zu7f797BkUCJK8zwNns0Bcb3QOoEyB5vQHOFved/bl7BkUCJK89wNnsn7pnUCRA8j6C
AP+1ewZFAiTvIwjwP7pnUCRA8j6CAP+9ewZFAiTvIwhwdM+gSIDkCbBMgOQJsEyA5AmwTIDkCbBM
gOQJsEyA5AmwTIDkCbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA5AmwTIDk
CbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA5Amw
TIDkCbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA5AmwTIDkCbBMgOQJsEyA
5G2MdhvdMyja2PE7Wd8xwHvd3wSssB0LHN1fIaywHR+lju6vEFaYAKGRAKGRAKGRAKGRAKGRAKGR
AKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGR
AKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGR
AKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGR
AKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGR
AKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKGRAKHRw50CvNf9FcIqW/cT
EPrs9Bh0dH+BsMoECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0E
CI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0E
CI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0E
CI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0E
CI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0ECI0E
CI0ECI0ECI0ECI0ECI0ECI0ECI12CvBK9xcIq+zKDgHOrgxgSXbsDwAAAAAAAAAAAAAA4CP3/06s
NH8KZW5kc3RyZWFtCmVuZG9iago3NwowCm9iago0NDc4MgplbmRvYmoKNzgKMApvYmoKMTU2OApl
bmRvYmoKNzkKMApvYmoKMzczNwplbmRvYmoKNjkKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQ0CjE0
CjAKUgovRm9udDcKMjMKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUK
MjEKMApSCi9JbWFnZTE1CjcyCjAKUgovSW1hZ2UxNgo3MwowClIKPj4KL0V4dEdTdGF0ZQo8PAov
QWxwaGEwCjEwCjAKUgovQWxwaGEyCjEyCjAKUgo+PgovUHJvY1NldApbCi9QREYKL1RleHQKL0lt
YWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKODAKMApvYmoKPDwKL1R5cGUKL1BhZ2UK
L1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwo4MQowClIK
L1Jlc291cmNlcwo4MgowClIKL0Fubm90cwo4NAowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3BhcmVu
Y3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjgxCjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRl
RGVjb2RlCi9MZW5ndGgKODMKMApSCj4+CnN0cmVhbQp4nLVT308CMQy+5/4lSuJYu9+PGkWND4bk
DL4SFYi5A0H//9jtuLuBipFEGq5ds6/f+q1bAwoJ0c6aQEvD/qmGNUghJQbrjdRpx/6aN0VXg7LG
WZngVb8gaZyOQQV7i/hdwASWTBJteF69LaYS5u8ND2zmR1VewGwAY7b1kfDJIJ0pg7Eu3Y5sM7c+
vK2n8xcDl6tEOU44H3ocOvLkBFoOrWyIPdkdOLoGn+tAUYd4Ge0/qaEsIgmv86663F+0GR8QHb10
XvD1xk50DGog1MqmNrpklSWNUcxrY7JDZ7kdWuXbYeujNGntInrthNY+kIFghVfame00toe8KNmX
GxiOVssPB4oYVM525zhEdbRwBGUzpOUznBS2GBV3xU1xXTwW9+wfTqF8havyh9qaOxI2/b4QoFXC
oefDfaFpi/7S9aF7cOhYacqU5HsIKlgTuTJ5+yR6HdpsB8+T2eP4n/Lbx0NE6FBovxWLQjP836D6
Z+D7ZxTtE95f4S0KZW5kc3RyZWFtCmVuZG9iago4MwowCm9iagozNzgKZW5kb2JqCjg0CjAKb2Jq
ClsKXQplbmRvYmoKODUKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVl
Ci9XaWR0aAoxMDAwCi9IZWlnaHQKNDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQZXJD
b21wb25lbnQKOAovU01hc2sKODcKMApSCi9GaWx0ZXIKL0RDVERlY29kZQovTGVuZ3RoCjg4CjAK
Ugo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ
ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMK
ChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/
wAARCAHVA+gDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY
GRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT
lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0
9fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA
AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2
Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk
paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB
AAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//ZCmVuZHN0cmVh
bQplbmRvYmoKODYKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9X
aWR0aAoxMjAwCi9IZWlnaHQKNzAwCi9Db2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQZXJDb21w
b25lbnQKOAovRmlsdGVyCi9EQ1REZWNvZGUKL0xlbmd0aAo4OQowClIKPj4Kc3RyZWFtCv/Y/+AA
EEpGSUYAAQIAAAEAAQAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0l
HxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgCvASwAwEiAAIRAQMR
Af/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQEC
AwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNE
RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqy
s7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEB
AQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEH
YXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZX
WFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLD
xMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiqWt3jado1/eood7a3kmCnoSqk4/Svk/wv8AFL40+LrCXUdBh0ua
0WZoifKhQKwAJADtnowpNpasTaW59e0V8tf8JV+0B/z56X+Vv/8AF0f8JV+0B/z56X+Vv/8AF1Pt
I9xc8e59S0V8tf8ACVftAf8APnpf5W//AMXR/wAJV+0B/wA+el/lb/8AxdHtI9w549z6lor5a/4S
r9oD/nz0v8rf/wCLo/4Sr9oD/nz0v8rf/wCLo9pHuHPHufUtFfLX/CVftAf8+el/lb//ABdH/CVf
tAf8+el/lb//ABdHtI9w549z6lor5a/4Sr9oD/nz0v8AK3/+Lo/4Sr9oD/nz0v8AK3/+Lo9pHuHP
HufUtFfLX/CVftAf8+el/lb/APxdH/CVftAf8+el/lb/APxdHtI9w549z6lor5a/4Sr9oD/nz0v8
rf8A+Lo/4Sr9oD/nz0v8rf8A+Lo9pHuHPHufUtFfLX/CVftAf8+el/lb/wDxdH/CVftAf8+el/lb
/wDxdHtI9w549z6lor5a/wCEq/aA/wCfPS/yt/8A4uj/AISr9oD/AJ89L/K3/wDi6PaR7hzx7n1L
RXy1/wAJV+0B/wA+el/lb/8AxdH/AAlX7QH/AD56X+Vv/wDF0e0j3Dnj3PqWivlr/hKv2gP+fPS/
yt//AIuj/hKv2gP+fPS/yt//AIuj2ke4c8e59S0V8tf8JV+0B/z56X+Vv/8AF0f8JV+0B/z56X+V
v/8AF0e0j3Dnj3PqWivlr/hKv2gP+fPS/wArf/4uj/hKv2gP+fPS/wArf/4uj2ke4c8e59S0V8tf
8JV+0B/z56X+Vv8A/F0f8JV+0B/z56X+Vv8A/F0e0j3Dnj3PqWivlr/hKv2gP+fPS/yt/wD4uj/h
Kv2gP+fPS/yt/wD4uj2ke4c8e59S0V4v+zV8Rdf8e6f4gTxOLY3WmzxorwxhMhg2QQOOCnUete0V
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
r/rzT/0lir1+uHEfGctb4gooorAyCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigArxvxB/ydX4G/69k/8AQp69krxvxB/ydX4G/wCvZP8A0Ket8P8AGa0f
iPq2iiiu46gooooAKKKKACiiigAooooAKKKKACiiigAooooAyfGH/Ipa3/14z/8Aotq+bP2XP+Sd
3f8A2EpP/RcdfSfjD/kUtb/68Z//AEW1fNn7Ln/JO7v/ALCUn/ouOsMR8BlW+E9gooorhOUKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDzP9jP7
/jz/AK/Yf/atfStfNX7Gf3/Hn/X7D/7Vr6Vr1Ud6Cvkf9mv/AI/vG3/X6n85K+uK+R/2a/8Aj+8b
f9fqfzkrKv8AAzOr8LPb6KKK885AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKAPK/wBnb/kv3xF+kv8A6PFfTtfMX7O3/JfviL9Jf/R4r6dr047I
7o7I8J/bL/5JJb/9hSH/ANAkrY8Jf8iro3/XlD/6AKx/2y/+SSW//YUh/wDQJK2PCX/Iq6N/15Q/
+gCsMTsjGvsjVooorjOcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACuA+Pf/ACSXX/8Adh/9HR139cB8e/8Akkuv/wC7D/6Ojq4fEio/Ej0j9n//AJI1
4T/68x/6Ea9Arz/9n/8A5I14T/68x/6Ea9Ar0jtPlfVP+Twta/680/8ASWKvX68g1T/k8LWv+vNP
/SWKvX64cR8Zy1viCiiisDIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACvG/EH/J1fgb/r2T/wBCnr2SvG/EH/J1fgb/AK9k/wDQp63w/wAZrR+I+raK
KK7jqCiiigAooooAKKKKACiiigAooooAKKKKACiiigDJ8Yf8ilrf/XjP/wCi2r5s/Zc/5J3d/wDY
Sk/9Fx19J+MP+RS1v/rxn/8ARbV82fsuf8k7u/8AsJSf+i46wxHwGVb4T2CiiiuE5QooooAKKKKA
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
q2o6b4j8Kzx2/iPTOI/M4SePnKMfxPtyRx1GVL4z+I8tsbOHwAItSI2/aWvFMAb+9jpj231r8cVb
daGklzPmXl+Vj0q01fTry/urG1vraa8tTieBJAXj/wB5eorwD4ZHxoNX8X/8IcuimD+1JPO/tDfu
3bmxt29sV6h8KPBFx4Vtb++1m5W71/VJPOu5l5A5JCg9+SST7+1VPg94a1bw9d+Kn1i0+zre6i09
ufMR96Etz8pOOo4ODTVot630/G6C6Sdu/wDmY+r+DPH3jVYbHxjq2kWWiiRXmg01XLy4OQCWH9ff
BxUHxxt4rLUvh1DAgjtrfUkjQDoqgxgD8hXs9cT8WvBsnjPwyttZTrb6layi5tZGOBvAIwSOgIPX
1xSjUtJdk7hGV3r2a+9HbV47oR3ftMeICvO3S1B9jiGooPFvxWsrZbK68GQXd6g2C6WQbH/2jhsf
qPwrd+FHgzV9K1PVvEviyWJ9f1QgPHGQVhTOduRx2AwMgBRyacY8jcm9LMPhi093/nc9KooorEzC
iiigAooooAKKKKACiiigArxvxB/ydX4G/wCvZP8A0KevZK8b8Qf8nV+Bv+vZP/Qp63w/xmtH4j6t
oooruOoKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMnxh/wAilrf/AF4z/wDotq+bP2XP+Sd3
f/YSk/8ARcdfSfjD/kUtb/68Z/8A0W1fNn7Ln/JO7v8A7CUn/ouOsMR8BlW+E9gooorhOUKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDzP9jP7/
AI8/6/Yf/atfStfNX7Gf3/Hn/X7D/wC1a+la9VHegr5H/Zr/AOP7xt/1+p/OSvrivkf9mv8A4/vG
3/X6n85Kyr/AzOr8LPb6KKK885AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKAPK/2dv+S/fEX6S/+jxX07XzF+zt/wAl++Iv0l/9Hivp2vTjsjuj
sjwn9sv/AJJJb/8AYUh/9AkrY8Jf8iro3/XlD/6AKx/2y/8Akklv/wBhSH/0CStjwl/yKujf9eUP
/oArDE7Ixr7I1aKKK4znCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
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
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUGgAooBzRQAUUGgUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSM6qcE8+lJy3sKAHUUUUAFBo
ooAKKKKAA9KB0oNFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFIxwKRcnrQA6g0UGgBFUDtS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFBoooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiigUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU2Mkg59T/OnCgAooooA/9kKZW5k
c3RyZWFtCmVuZG9iago4NwowCm9iago8PAovU3VidHlwZQovSW1hZ2UKL1dpZHRoCjEwMDAKL0hl
aWdodAo0NjkKL0NvbG9yU3BhY2UKL0RldmljZUdyYXkKL0JpdHNQZXJDb21wb25lbnQKOAovTGVu
Z3RoCjkwCjAKUgovRmlsdGVyCi9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzt1TFOIgEAQFFnEsJY
UJEo9FJBsKImka1sxMSwe/+TrGMsTPYGf9+7w8+/uwP+B8MwAknD8F35uFhO0z2QM03LxfhV+rhc
rR82QNDDerUc550vVtun/REI2j9tV4th3vl6dzq/XICcl/Npt56HPk6Ph/Pr2/UdiLm+vZ4Pj9Pc
+f3meLl+3ICcj+vluLn/6nz7/Ov99hvIub3/et7+7PwPEKNz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfT92zmQ86PzzfFy/bgBOR/Xy3Hz1fn0eDi/vl3fgZjr2+v58DjNnS/X
u9P55QLkvJxPu/Xys/Nhsdo+7Y9A0P5pu1oMd/PQV+uHDRD0sF7NO/8c+rhYTtM9kDNNy8U473wu
fRiBpOG7cqDuLzczkMMKZW5kc3RyZWFtCmVuZG9iago4OAowCm9iago4MTg3CmVuZG9iago4OQow
Cm9iagozOTUwMgplbmRvYmoKOTAKMApvYmoKMTU2OAplbmRvYmoKODIKMApvYmoKPDwKL0ZvbnQK
PDwKL0ZvbnQ3CjIzCjAKUgovRm9udDQKMTQKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0
Cjw8Ci9JbWFnZTUKMjEKMApSCi9JbWFnZTE3Cjg1CjAKUgovSW1hZ2UxOAo4NgowClIKPj4KL0V4
dEdTdGF0ZQo8PAovQWxwaGEwCjEwCjAKUgovQWxwaGEyCjEyCjAKUgo+PgovUHJvY1NldApbCi9Q
REYKL1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKOTEKMApvYmoKPDwK
L1R5cGUKL1BhZ2UKL1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250
ZW50cwo5MgowClIKL1Jlc291cmNlcwo5MwowClIKL0Fubm90cwo5NQowClIKL0dyb3VwCjw8Ci9T
Ci9UcmFuc3BhcmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjkyCjAKb2JqCjw8Ci9G
aWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKOTQKMApSCj4+CnN0cmVhbQp4nLVT308CMQy+5/4l
SuJYu9+PGkWND4bkDL4SFYi5A0H//9jtuLuBipFEGq5ds6/f+q1bAwoJ0c6aQEvD/qmGNUghJQbr
jdRpx/6aN0VXg7LGWZngVb8gaZyOQQV7i/hdwASWTBJteF69LaYS5u8ND2zmR1VewGwAY7b1kfDJ
IJ0pg7Eu3Y5sM7c+vK2n8xcDl6tEOU44H3ocOvLkBFoOrWyIPdkdOIYGn+tAUYd4Ge0/qaEsIgmv
86663F+0GR8QHb10XvD1xk50DGog1MqmNrpklSWNUcxrY7JDZ7kdWuXbYeujNGntInrthNY+kIFg
hVfame00toe8KNmXGxiOVssPB4oYVM525zhEdbRwBGUzpOUznBS2GBV3xU1xXTwW9+wfTqF8havy
h9qaOxI2/b4QoFXCoefDfaFpi/7S9aF7cOhYacqU5HsIKlgTuTJ5+yR6HdpsB8+T2eP4n/Lbx0NE
6FBovxWLQjP836C6Z0Cyf0bRPgHkI+EoCmVuZHN0cmVhbQplbmRvYmoKOTQKMApvYmoKMzc5CmVu
ZG9iago5NQowCm9iagpbCl0KZW5kb2JqCjk2CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovSW50
ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2aWNl
UkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL1NNYXNrCjk4CjAKUgovRmlsdGVyCi9EQ1REZWNvZGUK
L0xlbmd0aAo5OQowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAGBAUGBQQG
BgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko
/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgo/8AAEQgB1QPoAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgME
BQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEV
UtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3
eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh
4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALUR
AAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJ
ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz
9PX29/j5+v/aAAwDAQACEQMRAD8A+VKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oA//2QplbmRzdHJlYW0KZW5kb2JqCjk3CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovSW50ZXJw
b2xhdGUKdHJ1ZQovV2lkdGgKMTIwMAovSGVpZ2h0CjcwMAovQ29sb3JTcGFjZQovRGV2aWNlUkdC
Ci9CaXRzUGVyQ29tcG9uZW50CjgKL0ZpbHRlcgovRENURGVjb2RlCi9MZW5ndGgKMTAwCjAKUgo+
PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQO
DwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMo
GhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAAR
CAK8BLADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED
AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol
JicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW
l5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3
+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3
AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5
OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan
qKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIR
AxEAPwD6pooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAor5m8T23iHxf+0lrXhe
z8ZeIND0+KyS4RbG7kVVIjjyAgYAZLE109x8FfFaQs1j8XPFguQMp588joT7jzOlJO8VLuNqzt/W
1z3KivG/2d/G+u6+viLw54vkW41zw/c+RJcqAPNXLLzgAEgoecDII75r0rxN4r0DwvCkviHWLHTl
k+4LiYKz/wC6vU/gKp2Vn3Eru66o2qKx/DXijQvE9u8/h7VrLUY0OHNvKHKH/aA5H41N4g17SfDt
gb3XdRtdPtAdvm3MoQE+gz1PsKT03Ba7GlRXL2XxC8H3mltqUHifRvsKyCJpnvERVcgkKdxGCQDg
HritfU9d0jSvsn9qarYWX2ttlv8AaLhI/ObjhNxG48jgetFgNGimXE0VvBJPcSJFDGpd5HYKqqBk
kk9AB3ryv47+J0f4Ia5rPhLXFYoYVivtMu84PnorBZIz6Eg4NTKVlccVdpHq9Fcr8Lbya7+GXhi8
v7iSa4l0yCWaeZyzOxjBLMx5J7kmqdz8VvAVtem1m8W6OJgdpxcqyg+7D5R+dXJcsnEmL5o8x21F
Vf7Ssf7MOo/bLb+zxGZjdeavlCMDJffnG3HOc4rn7z4i+DbOezhuPFGjI92oeD/S0IdScBgQcYJz
zS62H5nVUUDBGR0NeDfDbXNY8M/HjxN4J8Rapf31nfL9t0p724eUqvLbELE8bSw+sdC1ly+v4A9I
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
6f4Q+EV1fxp5yzX+tQh4VijHoeDt9c43EADOa+irOE21pBAZZJjEioZJDlnwMZJ7k1S0HQdJ8PWX
2TQtNs9Pts5MdtCsYJ9Tgcn3NaVPRKyFq3dniX7XOhXer/C5Lqxhab+zLxLuZFGT5W1lY49BuBPt
mo9Q/aL8F23gNdQsLpptXa3CxaZ5TB1l242scbQoPfPTpnpXuDKGUqwBUjBB6GuRtfhn4JtNWGp2
/hbSI70NvWQWy4Vv7wXoD7gVFtHF7P8A4YpvZ9UeRfCnQfFngv8AZ/13WNMh2eJ7+RtTigli3MEG
3gp/eKBiB/tCt7wJ+0L4PvfBtpdeKNXWy1qKILeQG3fLSDqyBVIIPUAdM817dXHan8MPBGp6m2oX
/hfSZrt23PIbcDefVgOGP1Bq27t220+VhJaa76/O54r8P59X+Kfxj1P4h6bZG20rSLOS00k3SnbL
LsZVDYPPLszYPGQM103w5/aA0q6s72z+JE1t4f8AEVnO8csAglWNlHpncQw5BBP0r2+ztbextYra
ygit7aJdscUSBEQegA4ArnvEvgDwn4nuxda94f069ugAPPkhHmEDoCw5I9jS2sltb9b3DfV7/wBK
x4SdZg+MH7QnhzUPCdvM2ieHF8y51JoygkwxYDnnBOAAcHljjFfTtZ+h6Lpmg2C2Wiafa2FopyIr
aJY1z64HU+9aFPRRUVtr97Fq5OT/AKsFFFFIYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBU1fUrTR9LutR1Kd
LeztozJLK/RVH+enevM/gj8QLr4gav4tvJA0VjbywJZ25/5ZxkScn/aOMn8ugFeMftHfFD/hJ9Tb
w9oc+dEs5P30iHi6lHfPdF7ep59K6f8AYzk+bxdH6i0Yf+Rv/rV9q+HvqeSVcZiF+8ly2X8q5l+L
/Badzm9tzVFFbH0vRRRXxR0hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVgt4q06HxW3h67k+z37RrLB
5hws6nP3T6ggjH5Z5xvV4H+03YGO90LVI8hmSSBmHBBUhl/9Cb8q58TVlRp88eh7GR4GlmOLWFqu
3MnZ9mldfke+UV4L8LfjCY/J0rxfKSnCRag3Uegk/wDivz9a94jdJY1kjZXRgGVlOQQehBqqGIhX
jzQMs0ynE5XV9liF6Po/T/LcdRRRWx5gUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXgn7S3xQ/
sSxk8K6FPjVLpP8ATJkPNvER9wHszD8h9QR3fxn+Ilt8P/DLTIUl1i6BjsoD3bu7D+6uR9Tgd8j4
a1C8udRvri8vpnnup3MksrnLOxOSTX3XB/D/ANbmsdiF7kdl3ff0X4v0Zy4iryrlW5Xr6K/Y3kxr
HiaP+9BA35M/+NfOte//ALHkmPF2vR/3rFW/KQf419vxTHmymsvJfmjmofxEfV1FFFfhx6YUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFeZftDaf9s+Hr3AGWsrmObPscof/AEMflXptYXjvT/7V8Ga1ZAbn
ltJNg/2wpK/qBWVeHPSlHyPQynEfVsbRrdpK/pfX8D4ur0b4ZfE+/wDCUiWV/vvNFJ5izl4fdCe3
+z0+lec0V8tTqypS5oOzP3fG4GhjqToYiPNF/wBXXZn3Bomr2GuabFf6Vcx3NrIPldD0PoR1BHoa
vV8aeCfGOq+D9S+06ZLmJyPOtnOY5R7jsfQjkfpX1J4E8a6V4y0/ztPk8u6QDz7Vz88R/qvoR+h4
r6HC42NdWekj8fz/AIZr5VJ1Ie9S79vJ/wCez8tjp6KKK7T5gKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKr6
hcNaWFxcpBNctFGziGEZeQgZ2qPU9KsUU00ndgfAPxU1jxBr3jG7v/FNndWN252xWs8bJ5MYPyoo
YDgevcknvXIV+kWqaZYatatbapZW17bt1iuIlkU/gRXwn8Z4dGtfiTrNn4bs4rTT7WUQeXGSVMig
BzyTj5twwOOK/YeGeIaeY/7LCjyci6O8bLT1/M8+tScPevc4mvdP2QZMfETVY/72lufyli/xrL1H
9n3xlDpFpf6etpfmaBJXtkk8uaJioJUhsA4zjg846Vt/sz6Lq3h74sz22tadd2Ez6dMoW4iZN2Hj
PGeo46it85zHCY3LK8aFRSai9E9dPLcVOEozV0fWVFFFfix6IUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFB5GD0oooA+JPE+n/2V4j1TT8YFtcyRD6BiB+mKzK9C+POnfYfiRfOq4S7jjuFH1Xaf/HlNP8A
C3wj8Ra5pk19Mi2EXlM8CXAIedsfKNv8IPqfyNfLSw83VlCCvZn71RzbD08DSxWJmoqSW/drU4bS
dMvtYvo7PS7WW6upPuxxrk/U+g9zxX0F8LfhJJoF7b6xrd4/9oR/MlvbSFUT2dh976Dj6ivIfhr4
on8FeL457hXW2Zjb3sRHIXPJx6qRn8CO9fXcMsc8KSwurxSKGVlOQwPIINd2W0KU/flq0fJ8aZrj
cM1h6Xu05rdbvuvL5ff0H0UUV7Z+YhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBkeLtai8O+F9V1ifBS
ytnmAP8AEwHyr+JwPxr4e+Feiy+MvihpNrd5mE919pumb+JFzI+frgj6mvoX9rXxD/Z/gey0WJ8T
apcZcesUeGP/AI8Y/wAjXL/se+Ht1zrniOZOEVbGBvc4eT9BH+Zr9ByP/hMyOvj3pKekfyX4t/cc
lX36qh2Ppuiiivz46wooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDKu/D2lXmuQavd2UU+o
W8flRSyDdsGSeB0zknnrWrRRSUUti51JzSUm3bReS8j52/aF8G/YNSXxHYR4trttl0FHCS9m+jD9
R710f7PXjL7dpzeG7+TNzaKXtWY8vF3X6qf0PtXrGuaVa63pF3pt+m+2uYzG47j0I9wcEe4r5Dv7
bVPAHjYorbL7T5g8cmPlkXsf91lPI9yK8nEReErqtH4Xv/X4n6FlFWHEGWSy2s/3tNXi/Jbfds/J
o+yqKyfCevWviXw/Z6rZH93OmWTOTGw4ZT7g5rWr1oyUldH57VpTpTdOorNOzXmFFFFMgKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAoorP8RarDoWgajqt1/qbK3edhnqFUnH1OMVUIOclGKu2Gx8d/tN+If7b+KF1bRPu
ttLjWzXB43j5nP13MV/4DX018EPD3/CNfDHRLN023M0X2qfI53yfNg+4BC/8Br478B6XP46+JunW
t5mV9QvTPdn1XJklP5Bq+/gAAABgDtX3vF01gsJhsrg/hV38tF97uzlw/vSc2FFFFfAHUFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXlXx78G/25oI1mxjzqGnKS4UcyQ9SPqv3h/wL
1r1WggEEEZB7VnWpKrBwl1O3LsdUy/EwxNLeL+9dV8z5l+AnjL+w9fOj30mNO1FgELHiObop+jfd
P/AfSvpqvk74xeDz4S8Us1ohXTLwma2I6Ic/Mn4E8exFe6fBzxiPFfhdFupN2qWWIrjJ5cfwyfiB
z7g15+AquEnh6m62Pr+K8DTxVKGc4T4Zpc3r0f6Pzsd7RRRXqHwYUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXi37V
viH+yvh5FpUT4n1a4EZGefKTDsfz2D8a9pr40/am8Q/2x8SW0+J91vpMC2+AePMb53P6qv8AwGvp
eEsF9bzOF1pD3n8tvxsY15csGdN+yB4e8/WdZ8QzJ8lrELSEkcb3O5iPcBQP+B19S1538APD3/CO
/C3R4pE23N4pvpuMEmTlc+4TYPwr0SubiTG/Xcxq1E9E7L0Wn47/ADHRjywSCiiivDNQooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAranf2ul2E97qE6QWsC75JHPCj/PauGPxi8GAkDUZj7i
1k5/Sj49kj4ZalgkZkhB9/3i184eEvDc/iW7ngtp4oTEm8mTJzzjtXm4vF1KVRU6aWx9nkWRYDFY
CeOx03GMXbTZKy8n3Po7/hcfgz/oIT/+A0n+FH/C4/Bn/QQn/wDAaT/CvGv+FU6h/wBBG0/75aj/
AIVTqH/QRtP++WrD65iv5V/XzOj6hwt/0Ey/r/tw9l/4XH4M/wCghP8A+A0n+FH/AAuPwZ/0EJ//
AAGk/wAK8a/4VTqH/QRtP++Wo/4VTqH/AEEbT/vlqPrmK/lX9fMPqHC3/QTL+v8Atw9l/wCFx+DP
+ghP/wCA0n+FH/C4/Bn/AEEJ/wDwGk/wrxr/AIVTqH/QRtP++Wo/4VTqH/QRtP8AvlqPrmK/lX9f
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
xPFv/QdvPzH+FH/CxPFv/QdvPzH+FH/EOMd/z9h+P+Qe0R9c0V8jf8LE8W/9B28/Mf4Uf8LE8W/9
B28/Mf4Uf8Q4x3/P2H4/5B7RH1zXzR+0b/yUe1/7BUX/AKNlrnf+FieLf+g7efmP8Kw9b1e/1y9W
81a6kurlYxEJJOoQEkD82P516+RcE4vLcfTxdSpFqN9Fe+zXYHUVmj6h/Y9/5E3XP+v8f+i1r32v
C/2RbG5tvAWpXM8Lxw3V8WhZhjeqooJHqM5GfUH0r3SvluJpKWa12u/6I7qPwIKKKK8I1CiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr52+OPjT+2NU/
sTTpM6fZv+9ZTxLKOPyXp9c+1ei/GTxn/wAI1on2Kxkxqt6pVCDzFH0L/XsPfJ7V5F8I/Bp8Va95
14hOlWZDzk9JG7R/j39vqK8/F1HOSoQ3e5yYibk/ZRPRfgV4L/s6xHiDUYsXlymLZWHMcR/i+rfy
+teuUigKoVQAoGAB2pa7KVNUoqKOinBQjyoKKKK0LCiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAINQs4NQsbizu4xJbzoY5EPdSMGvkzXd
Pv8AwP4yeGN2W4sphLBLj765yrfiOo+or66ry748eFf7W0FdYtI83mngmTA5eHv/AN8nn6bq48ZR
54c0d0c2Jp80eZbo7vwprlv4j8P2eqWuAs6ZZM/cccMp+hzWtXzx8BPFX9ma2+iXcmLS/OYcnhJg
P/Zhx9QK+h61w9b2sFLqaUantI3CiiitzUKKKKACiiigAooooAKKKKACiiigAooooAjuIIbiPy7i
KOVM52uoYfkarf2Rpv8A0D7P/vyv+FXaKpTlHRMLFL+yNN/6B9n/AN+V/wAKP7I03/oH2f8A35X/
AAq7RT9rPuxWRS/sjTf+gfZ/9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZFL+yNN/6B9n/35X/Cj+yN
N/6B9n/35X/CrtFHtZ92FkUv7I03/oH2f/flf8KP7I03/oH2f/flf8Ku0Ue1n3YWRS/sjTf+gfZ/
9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZFL+yNN/6B9n/35X/Cj+yNN/6B9n/35X/CrtFHtZ92FkUv
7I03/oH2f/flf8KP7I03/oH2f/flf8Ku0Ue1n3YWRS/sjTf+gfZ/9+V/wo/sjTf+gfZ/9+V/wq7R
R7WfdhZFL+yNN/6B9n/35X/Cj+yNN/6B9n/35X/CrtFHtZ92FkUv7I03/oH2f/flf8KP7I03/oH2
f/flf8Ku0Ue1n3YWRS/sjTf+gfZ/9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZFL+yNN/6B9n/35X/C
j+yNN/6B9n/35X/CrtFHtZ92FkUv7I03/oH2f/flf8KP7I03/oH2f/flf8Ku0Ue1n3YWRS/sjTf+
gfZ/9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZFL+yNN/6B9n/35X/Cj+yNN/6B9n/35X/CrtFHtZ92
FkUv7I03/oH2f/flf8KP7I03/oH2f/flf8Ku0Ue1n3YWRS/sjTf+gfZ/9+V/wo/sjTf+gfZ/9+V/
wq7RR7WfdhZFL+yNN/6B9n/35X/Cj+yNN/6B9n/35X/CrtFHtZ92FkUv7I03/oH2f/flf8KP7I03
/oH2f/flf8Ku0Ue1n3YWRS/sjTf+gfZ/9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZFL+yNN/6B9n/3
5X/Cj+yNN/6B9n/35X/CrtFHtZ92FkUv7I03/oH2f/flf8KP7I03/oH2f/flf8Ku0Ue1n3YWRS/s
jTf+gfZ/9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZFL+yNN/6B9n/35X/Cj+yNN/6B9n/35X/CrtFH
tZ92FkUv7I03/oH2f/flf8KP7I03/oH2f/flf8Ku0Ue1n3YWRS/sjTf+gfZ/9+V/wo/sjTf+gfZ/
9+V/wq7RR7WfdhZFL+yNN/6B9n/35X/Cj+yNN/6B9n/35X/CrtFHtZ92FkUv7I03/oH2f/flf8KP
7I03/oH2f/flf8Ku0Ue1n3YWRS/sjTf+gfZ/9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZFL+yNN/6B
9n/35X/Cj+yNN/6B9n/35X/CrtFHtZ92FkUv7I03/oH2f/flf8KP7I03/oH2f/flf8Ku0Ue1n3YW
RS/sjTf+gfZ/9+V/wo/sjTf+gfZ/9+V/wq7RR7WfdhZCKoVQqgBQMADoKWiioGFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWb4i1m00DRrrUr99sEC5
wOrHso9yeK0q+avjR40/4SLWf7OsJc6XZMQCp4mk6F/cDoPxPesMRWVGF+vQyrVfZxv1OZup9V8e
eMdwXzL6+l2ogPyxr2Hsqj+RNfUfhHw/a+GdBttMshlYxl5MYMjn7zH6/oMDtXD/AAR8F/2JpX9s
ahHjUb1B5asOYYjyB9W4J9sD1r1CscHRcV7Se7M8PScVzy3YUUUV2nSFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSSIsiMkihkY
EMpGQR6UtFAHyf8AEXw5L4P8XSwW5dLdmFxZyA8hc8DPqpGPwz3r6K+HXiZPFXhe2viV+1L+6uVH
8Mg6/geCPrWX8YPCv/CS+FpHto92o2OZoMDlhj5k/ED8wK8b+DPir/hHfFCW9zJt0+/xDLk8I38D
/gTg+xPpXmR/2Wvb7MjiX7irboz6eooor0ztCiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAoorH8W6/a+GdBudTvTlYxhI84Mjn7qj6/yye1JtRV2JtJXZxHxu8af2HpP9j6fLjUr
1DvZTzDEeCfqeQPxPpXnHwY8F/8ACR61/aF/HnSrJgSGHE0nUJ7gdT+A71zVtDqvjzxjtJ8y+vpd
zvj5Y17n2VR/ICvqnw5o1p4f0W102wXbBAuMnq57sfcnmvNpp4qr7SXwo44J15872RpUUUV6Z2hR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABXzF8Z/Cv/AAjvih7i2j26fqGZosDhH/jT8zkexHpX07XM/EXw0nirwvc2
OF+1KPNtnP8ADIOn4HkH61zYqj7WFlujGvT9pG3Uyvg94q/4SXwskdzJu1GxxDPk8sMfK/4gfmDX
d18nfDvxFL4P8XRT3AdLcsbe8jI5C5wePVSM/hjvX1hG6yRq8bBkYAqwOQQe9LCVvaQs90LD1OeN
nuhaKKK6jcKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqhd6xp9pqdrp91dxRXl0paGNzg
vjGcds89Opq/STTC4MQqlmIAAySe1fL/AMXfGR8U695Fm5OlWZKQAdJG7yfj0Ht9TXovx18af2dY
Hw/p0uLy6TNyynmOI/w/Vv5fUVyHwP8ABf8AbOqf21qEedPs3/dKw4llHI/Bev1x715+KqOrNUIf
M468nUl7KJ6N8GvBn/CN6J9uvo8areqGcEcxR9Qn17n3wO1eiUUV3U6apxUYnVCCguVBRRRVlBRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRTJpY4InlnkSOJBuZ3IAUepJ6UAfPnx78K/2brSa5aR4tL84mwOEmA6/8
CHP1Brqvg146sz4VlsdcvYreTTFG2SZwN0J+7j1IPGPTbVD4r/EnQ9Q0e70PTof7SaUYNxnbHGwO
QynqxBHsPc14bXj1Kqo1nOm73POnUVOo5Q1PbfGnxpJ8y18KQ4HT7bOv6oh/m35V7B4dvTqWgabe
k5NzbRyk+7KCf518ZV9VfB28+2fDrSGJy0SvCfba5A/TFbYPETq1GpM1w9WU5vmOzooor0jsCiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiimTSpDC8srBY0UsxPYDkmgD5o+OmqG+8fzQox2WMSQKQe+Nx/V
sfhV7wd8X9T0exktNXjOpIkZEErNiRWxwGP8S5xz1+vSvO9bv31TWL6/kzvuZ3mIPbcxOP1qlXz7
rzVRzi9zyXVkpuUWdJoWm6l478XiJpGkuruQy3E5GRGufmb6DoB9BX1ZoumWujaVbafYRiO2t0CI
P5k+pJ5J9TXyV4S8T6l4V1P7bpUqqzDbJG4yki+hH9RzX0d4D+IeleLI1hDC01MD5rWRvve6H+If
r7V2YCdNXu/eZ0YWUFe+7O0ooor1DuCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArmfiB4Ti8X6GbJ7mW3mQ
74nVjs3f7S9GH6jtXTUVMoqa5XsKUVJWZ8a+ItC1Dw7qklhqsBinTkHqrr2ZT3BrMr7A8YeFtN8V
6WbPUovmGTFMv34m9Qf5joa+YfGvhHUvCWpG21BN8LkmG4QfJKPb0PqO3614uJwrou61R5lag6eq
2Odr6H/Z1vPN8JX1qTloLssPZWVcfqGr54r2T9m282aprVkT/rYY5gP91iD/AOhilgpWrIMM7VEe
80UUV7p6gUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVyPxZ1P+yvAGrSq2JJo/s6epLnaf0JP4V11eMft
IansstI0pG5kka5ceyjav/oTflWGJnyUpMyrS5YNnhNFFejfDz4X6h4kMd7qW+x0k8hiMSTD/YB6
D/aP4ZrwqdOVR8sUeXCDm7ROQ8M+HNT8S6gLPSLZpX6u54SMerN2H+RX0b8P/hxpnhREuJQt5qpH
Nw68J7IO316/yrqdC0bT9B09LLSrZLe3XsvVj6sepPua0K9jD4ONL3pas9Gjh1DV6sKKKK7DoCii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKz9d0ex13TZbDVLdZ7aQcg9VPYg9iPWtCik0mrMGr6M+V/iL
4BvvCF2ZF3XOlSNiK5A+7/sv6H9D+gu/Am8+y/EO1jzgXUMsJ/753/8AslfSt7aW99aS2t5Ck1vK
pV43GQw9xXieo/D+48G+ONI1rRw8+jC8jEg6vbKzbTn1XBPP5+p8yphXSqKpDa5wzoezmpx2PcqK
KK9Q7gooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAr5o+Lst14k+JtxY6dDJcywKlpFHGMkkDLfkzN+VfS9
Y3h/w1p2hy3U9pFuvbuRpbi5k5kkZjk89hk9BxXPiKLrJRvZGVam6iUTz/4d/CS10ryr/wASiO7v
h8yW33ooj7/3j+n1616yOBgUUVpTpRpK0UVCEYK0QooorQsKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACg8jB6UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABWXrniLRNAWFte1jTtMWYkRm9ukhD467dxGcZHT1rUr50/avtYb3xJ8NbW6jE
tvPqTRSIejKzwgj8jS1ukursPSzb6Jv7j2JPiJ4KdgqeMPDjMegGpwEn/wAerpba4huoEntpY5oX
GUkjYMrD1BHBrz2X4I/DiWMo3hWzAPGVeRT+YbNeZaTaT/BL41aToOn3c8vgzxOSsVtM5b7PNnHB
9mKjPcNzkjNVGzko9XsS7pOXY+k6K4j4l/EzQPh9BbDVmuLm/uji2sLRBJPLzjIGQAM8ZJ+ma5XQ
fjzo9xrlrpXibQ9b8Lz3Zxbyanb+XFJ6ZY4I6jnGPUilH3nZDeiuz2Gob26t7G0mur2eK3toVLyT
TOERFHUsx4A9zWF498aaL4F8Pyax4guDFbBgkaRjdJM56Kg7ng+3qRXifjj446ZrngPXtN1Lw/r2
h/2np06afc31vtiuCUOAG9T2xke9TKVk2t0Ulqr9T3xdf0ZtEOsrq2nnSANxvhcoYMZxnzM7cZ46
9auWF5a6jZw3en3MN1aTLvjmgkDo6+qsOCPpXg/w5uNDtf2TrafxZZ3F7oaQSm6t7c4kdftLYAO5
e+P4hXpng3W/DWm/CzTdZ04PpXheGyE0S3TEtDF2DfMxJ/Ek1pNKDku3/BIi3JR87/p/n+R2dFeF
SftIaPse+t/Cviafw+j7G1RbYCIHOM9cfmQfavUB458OnwR/wl39pR/2D5PnfacHpnG3b13Z+Xb1
zxU7LmY+tjpaK8Jl/aMsvsrala+CvFU+hKTnUfswEeB1OclfzYV1Wv8AxS0S4+Edz4s0hdRvLK4R
rdFtYh58MpBX5lLDbtPUg+4zSk+WLl2HFXko9z0mOWOUuIpEco2xtpB2n0PoafXzh+x74vt7jw7L
4Ze01Jr9ZZ757x4wbdgSg2792S+TnGPxrs/FHxz0bTfEFzonh7RtZ8T6jaki4XS4PMSIjqCw5JHs
Me9VJcrS7kxfMm+x65RXBfDT4p6D4/kurWwW6sdWtObjTr6Py5kGcEgZIIzx6jjIGRVH4i/GDRfB
utQ6HDZahrfiCUBhYadHvdARkbvQkc4AJxzgCk9LX6jWt/I7vVNb0rSZrWHVdTsbKW7fy7dLm4SN
pm4G1AxG48jgeorQr5F+LHxE03x54u+HaWtpf6dqWn6uEu7C/h8uWEtJDg+4OD78cgV9dU0vdu+/
+X+YN628v8/8gooopAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUjZx8vWlFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
eK/Fv4keMNA+Jeh+EvBmn6Ndz6na+cv29ZM78vkblkUAYTuK9qr57+JH/J2Hw+/682/9rUkrziu7
/RjekJy7L9UacviD49WqGaXwl4VukTloreZldh7bpsZrrfhH8ULP4gQ3trNZTaT4g09tl7p05yyc
43KSASM8HIBB4PYn0SvnjxAi6D+2D4flsAIxrOnEXarxvO2QZP8A37T8qqL95RfX87XJkvdcl0/I
+h6K+bdb1y/+KfxL13Qv+Eubwv4R0KT7PL9nuFhmvJckH5iRkZVvUAAcEnjO1y9uvgprWj6poPja
fxH4Xurlba+068u1uJIged64OBwDyAOQAc54Ufetfrt+n3jlpdLofUdcL8bPF9/4F+Heoa9pMNrN
eW7xKiXSs0Z3OFOQrKeh9a4D4xeIte8S/EnQ/hv4S1SXSUu4PteoX8BIkWPBO0EEEfKueCMllGcZ
rz/4+/DvWfAPgGWTSvFGr6r4fu5Y4b6z1KXzdj7gySIeAPmXB4zyOT2iTfLfbX9bf8AqNua2+l/w
/pnuuseIvGd38LdE1vwZpGn6j4gvYbeeS2mO2JVdNzkZkXoSMfMfxrvrFp3srd7xFjuWjUyovRXx
yBye+e9fPXxa1jU9E/Zi8J3ei6jeaddeTYJ51pO0T7TCcjcpBxwOK3vjT471nw94I8KaX4bmI8R+
IvKtobhuWQFVDMCf4iXUZPqT1rWekpqK+1YzjtC/WLf3HttFfOfiH4M+K9A8PNrnhjxx4kv/ABfb
gSvHJcEx3JyNyqpOfXhiwOMEc12PjWf4m6z8LNHj8O6euneKLzYmpHz40a2UAhmQlscnB4JIBPep
e2m/+f6dylv5HrdYfjjxDF4T8JaprtxA9xFYQmYxIQC+O2T0r59+I/wvfwV4Qu9fg+Jevx+I7SLz
wbrUNq3LDkqgyGyecctVvxjcar8QP2XbPxFe6zeWl1bWskt2lu21L7a5jxIAQCDt3YxjPapqO0JN
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
SPzLedicklcjGTyQQwz2FZk3wV8TeLb62f4oeOp9Y063cONPs4BBHIR6kYA9Mhc4JwRXvFFJaWXY
G76nMeMPCNvr3gC/8K2Uiaba3FqLWJki3rCoxjCZGQAOmRUvw88Nf8Id4L0rQPtf2z7DF5fn+X5e
/knO3Jx19TXRUUd33/r9Qtsu39foFcv8R/A+k/EDw1Lo2tq4jLCSKaIgPDIM4Zc/UjHcE11FFJpN
WY02tUfOsHwU+I2mW66do3xSvItJQbI1IlVo19FAY4x7EV6F8IvhPpnw6S8uheT6rrl7/wAfOoXA
wzDOcKMnAJ5OSST1PSvSKKpNolpMKKKKQwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABQaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igD/2QplbmRzdHJlYW0KZW5kb2JqCjk4CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovV2lkdGgK
MTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVu
dAo4Ci9MZW5ndGgKMTAxCjAKUgovRmlsdGVyCi9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzt1TFO
IgEAQFFnEsJYUJEo9FJBsKImka1sxMSwe/+TrGMsTPYGf9+7w8+/uwP+B8MwAknD8F35uFhO0z2Q
M03LxfhV+rhcrR82QNDDerUc550vVtun/REI2j9tV4th3vl6dzq/XICcl/Npt56HPk6Ph/Pr2/Ud
iLm+vZ4Pj9Pc+f3meLl+3ICcj+vluLn/6nz7/Ov99hvIub3/et7+7PwPEKNz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfT92zmQ86PzzfFy/bgBOR/Xy3Hz1fn0eDi/vl3fgZjr
2+v58DjNnS/Xu9P55QLkvJxPu/Xys/Nhsdo+7Y9A0P5pu1oMd/PQV+uHDRD0sF7NO/8c+rhYTtM9
kDNNy8U473wufRiBpOG7cqDuLzczkMMKZW5kc3RyZWFtCmVuZG9iago5OQowCm9iago4MTg3CmVu
ZG9iagoxMDAKMApvYmoKNjg5MDgKZW5kb2JqCjEwMQowCm9iagoxNTY4CmVuZG9iago5MwowCm9i
ago8PAovRm9udAo8PAovRm9udDcKMjMKMApSCi9Gb250NAoxNAowClIKPj4KL1BhdHRlcm4KPDwK
Pj4KL1hPYmplY3QKPDwKL0ltYWdlNQoyMQowClIKL0ltYWdlMTkKOTYKMApSCi9JbWFnZTIwCjk3
CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBoYTAKMTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Q
cm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagox
MDIKMApvYmoKPDwKL1R5cGUKL1BhZ2UKL1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIw
CjQwNQpdCi9Db250ZW50cwoxMDMKMApSCi9SZXNvdXJjZXMKMTA0CjAKUgovQW5ub3RzCjEwNgow
ClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3BhcmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2Jq
CjEwMwowCm9iago8PAovRmlsdGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjEwNQowClIKPj4Kc3Ry
ZWFtCnic3Vptb1RFFJ5kUz9cTSC0IPpBMZJoSRzm/SV+0pTSlga67faFFIxEBWIKCPof/D1Gf6DP
mdvd3t2d3W3n7oLYSXvvnTv3zDnPeZlzDryuJBcVjW/qGyMsrj+9qF5XggshowtWmLRi9BmL6PKi
0s56J9LnJ2cPSlhv6OakGnmgv8+rw+olNqFx+7uT354/EdWz3+t9qjfPiig/r57eqroYrws/P7yV
eGp8BlwGKxqLIfrtzRdPnv1iq7VXactu+i7Es++kV0F5Lh1unag3DsoNfa5k/X0TB0U4kDL6vwkN
7aRUPJimVIO5i2DTnQK6DMIHDvVaaZzl2mE3JY12SYzB5EljUnobdeQhYHbweXNyaGMd+uZ2dpds
rf9AV+O5MSEqW0kNY/Qwub5BWq+sicLiNkjrgtO401Jj2pIA3/dAo/emur3+6uUfptKea/pRVe/p
sKFLw20M0sWK+NQxRlf1anvu/Vx9zf5crXq/Vnd6Z9iMkFYGVEapgpaYQFCwI/aAHbJttofrBuuw
u2yX7bA1zHTZAZ7Xcd/F9U56u872cV3DFxtY2WGbeKb1HfYtZrqz2JssuQmBW+dMns8B3QtDrTJ4
WMuV0BKaDJZHNQTIX7NEkIG79DNGNnj6M0bRJqiOAN1GgnEX4xB3BPpOmtvEzP7QuwjFHMwEMyeb
NoZLL5Qe56QcxHPYq9SOR5FgmY+95ggeg+RXgOwg2eF2skmywu1koYfsXoKTVjzEHAF+mflV4l/g
S7LcjdXqcdXbKlOwNgEsKW3y0i4W3xCh17RmTvhmCd4ESuTNu0D0AXv0KFln7fBHCcAO+xDw76b5
Ncx8VO7yKnrubZ6RhWKpjOSGYsy8sMwT9Kf2SM7cj6PdUwevoykB2nd6WHI5lBr2aJXXJs/KYtGM
mnv4gp8bmlmCGjh2Eobk8Xu4O8C4nLyezqAjtoU7Or/OvL+DFUdYu5cCbEuMjdU8ahhslr/yY8Nr
ElwhoAQHdcyRJs45D5pZx5qR+pwrHaPE0tBNMx0bTDbTMWs10kBnmtlYY65NMhYd8gUDtdS5WBYq
nz8rU1pkuB8OgX/jAKGUZjklRGRk/5QrQkbFZQB3Y/tcSBGNFByOa7ywIegJt2BPqeCMo0RX+4jw
SgmzNvByRxKfTp2cTSEEG2k5nPmk8W1ztlHDnEs/VFlIpRFoYuRe4tB00xRkqjBBP1Jy5NlN/azD
zXehlY106P9QrhsEGxelEW58k1lEJ3GrJFfD3HZOR51WB7bSjmdkIKidlBrfqZRlDdMJAiV0lu3+
WE/s76VEgPKuula4gd8ldpxUcWmoclhin7VwGqXJnPEmy1yppCg5TV45/fEBuL+LsX/q+JfTKfIA
4+BU2s8RFo7ZVfZFK/lgb3AtI8dZKpXNCqpIY5wl3wG08zjlxXnJVtpJRhmd8ELn+SkWDo7qx0rX
UeGoltpJB31KW/sydSDTNfwus09b600glimFN1mOSsVzkSs/mjyOO+AeUpkzZbUUxQXkfzg9c3uX
yoFjPYzQOs5I8jC1GpbZymrlTSrMVkiS8rLMwpuCocwsw0GxNCFwMy9aMdTeMMN+d1OfgELrl8kZ
P0Y4Wm6MVieHlOSSSek5dkpFk8InVwh2qnDnOUd2Br2ofk10id3H+32cJxSrlvA8aV0TvFZnj8Kr
AHMyEyQrxkn65Glhhnf0Bx1BW0OhmfSftwqa3Vwlocibzn1XR5Byv5MI8sjvZcwKV44USqEwSmwi
Tn0ToF7E1iA+LiVD66ZOBZnEDaw4pHPhJmrxmwk0ylK2MXmDXQERerqC5fdaZi4BZVxUBElOimJI
UN6bmZD82IZzjRTYW8SH/GbFnKOUoFhzoVp5IjEUtOSRs/KA8Th6ZyFxNMtPsXDOJh9aTBzdx8od
wLING7//liKpslxKjSolK1oxTkgayLHMHALpqFm8+0CaEa4cqWCSI+u3EjVymxVzTh2kiZy34lgp
7oOV1uU3KS78hU6hIN/EvigxqZO/TG0kXG0XxhqNhPHNihkHumES4+cJXQtsJeR4K5ZTKzL2MF3Q
t95NyLJVLKNR5B7hv9JRyPJTLJylwBWDn5FJTOgofMKuY1zDtWU/gc5FjVojy0+xcE6SR8/Q3GhD
oaWe+g2F7ObFknhBPjsnYkGkE+rCyeP6HJNHEblTIcosN8WSxbrb9n+rwHNylWNUt+zmkDWO2sO7
yhpN5FF6lFYZ2Vr8c0CcnHu8L8V3TohiQGSYndPMKYnO7VXMt6obmHPJSLUOUxLyacHz7kIq7yw/
xcKZutE3Xbj3svLOilaMk627fPOovEfN4p1X3jnhypFybryMX1jQyG1WzLmvm3/5LtScKu/sJsUc
h7rDONwUbMUpKuIQjdUyT/zc/3ODxr+GsfbvCmVuZHN0cmVhbQplbmRvYmoKMTA1CjAKb2JqCjE3
OTAKZW5kb2JqCjEwNgowCm9iagpbCl0KZW5kb2JqCjEwNwowCm9iago8PAovU3VidHlwZQovSW1h
Z2UKL0ludGVycG9sYXRlCnRydWUKL1dpZHRoCjEwMDAKL0hlaWdodAo0NjkKL0NvbG9yU3BhY2UK
L0RldmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawoxMDgKMApSCi9GaWx0ZXIKL0RD
VERlY29kZQovTGVuZ3RoCjEwOQowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sA
QwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkf
LTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgB1QPoAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAA
AAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQy
gZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVm
Z2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS
09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYH
CAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw
FWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5
eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj
5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+VKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooA//2QplbmRzdHJlYW0KZW5kb2JqCjEwOAowCm9iago8PAovU3VidHlwZQovSW1h
Z2UKL1dpZHRoCjEwMDAKL0hlaWdodAo0NjkKL0NvbG9yU3BhY2UKL0RldmljZUdyYXkKL0JpdHNQ
ZXJDb21wb25lbnQKOAovTGVuZ3RoCjExMAowClIKL0ZpbHRlcgovRmxhdGVEZWNvZGUKPj4Kc3Ry
ZWFtCnic7dUxTiIBAEBRZxLCWFCRKPRSQbCiJpGtbMTEsHv/k6xjLEz2Bn/fu8PPv7sD/gfDMAJJ
w/Bd+bhYTtM9kDNNy8X4Vfq4XK0fNkDQw3q1HOedL1bbp/0RCNo/bVeLYd75enc6v1yAnJfzabee
hz5Oj4fz69v1HYi5vr2eD4/T3Pn95ni5ftyAnI/r5bi5/+p8+/zr/fYbyLm9/3re/uz8DxCjc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0/ds5kPOj883xcv24ATkf18tx89X5
9Hg4v75d34GY69vr+fA4zZ0v17vT+eUC5LycT7v18rPzYbHaPu2PQND+abtaDHfz0Ffrhw0Q9LBe
zTv/HPq4WE7TPZAzTcvFOO98Ln0YgaThu3Kg7i83M5DDCmVuZHN0cmVhbQplbmRvYmoKMTA5CjAK
b2JqCjgxODcKZW5kb2JqCjExMAowCm9iagoxNTY4CmVuZG9iagoxMDQKMApvYmoKPDwKL0ZvbnQK
PDwKL0ZvbnQ0CjE0CjAKUgovRm9udDcKMjMKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0
Cjw8Ci9JbWFnZTUKMjEKMApSCi9JbWFnZTIxCjEwNwowClIKPj4KL0V4dEdTdGF0ZQo8PAovQWxw
aGEwCjEwCjAKUgovQWxwaGEyCjEyCjAKUgo+PgovUHJvY1NldApbCi9QREYKL1RleHQKL0ltYWdl
QgovSW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKMTExCjAKb2JqCjw8Ci9UeXBlCi9QYWdlCi9Q
YXJlbnQKMQowClIKL01lZGlhQm94ClsKMAowCjcyMAo0MDUKXQovQ29udGVudHMKMTEyCjAKUgov
UmVzb3VyY2VzCjExMwowClIKL0Fubm90cwoxMTUKMApSCi9Hcm91cAo8PAovUwovVHJhbnNwYXJl
bmN5Ci9DUwovRGV2aWNlUkdCCj4+Cj4+CmVuZG9iagoxMTIKMApvYmoKPDwKL0ZpbHRlcgovRmxh
dGVEZWNvZGUKL0xlbmd0aAoxMTQKMApSCj4+CnN0cmVhbQp4nLVVW3MSMRTODG/RN58cX9XROobc
L486UKB2BpduC2pfOmrpONDa6n/wb/slC8sCS1uRktnk5OTc8p1DzjUVjNM43haE5gbr1ym9ppxx
LoL1husksbqHUFymVFnjLE/qk8VGcuN0JCZ0ZRPnCzqkl3ASR/Pd5OfFGafjX4UfejPeyvIFPd+j
Gcb1lurDvRRTRQ24lBIVYVy92Zuejb8b2rpKLrOk58NCTzjppWPCgrS8cOylXVKXstCv4iAjDjEZ
8y+hoawQknldvVXJ+xdssltAF547z5BeI7Q1LDnTzjvNuCp5kwpPeOV8SMxSt8Jbcqr8vNQWVKqz
+Sau2jGtfZCGCoVCdMGFeTEaJ40O3ID0wlhvFSglFNgmBv8+h438hjb3ry5/a6ocU/EnaX6+XORC
MxO8sIGqwLwKIViaF7Wcf6OvyJ/XNP9B2/kClxXTEndfswpbfIPB56RNDkkf35CcnpIGlgHmfcwZ
6YF9QEbkmHTB62EdkI+gWvjaoAeQbpBO4rYgm90V3eaLA1lmtPW+Ps7S8ENAHSQT3NqdIV1rzwLD
/YRlCXUPwEXWCY462D8iKh1n4B6SI2Sli7MGpHqYm9i1sI+QF3KfUua6SFGXPN4eeqMU81762rgf
FHihNVMuyewG+XqDL4BxRKqTsD0AfiOgGwt8XrxPZlif3OVaeGbTb82/DEBRmaDrg3hYHINlFv8Z
tzMcaw2+TOUbH4MMVdgviniETQesY9DxKBZll3yelXfkfiHPyNPty1Ohd+BhcKY+qrnhO57ye7WW
2CR1JKZUCq1s6pAlc1JhGhPDskvNpcL7n+aCS3p0MTPrLbV4OapkTe7SM6+ZWy7/NzFRRylFfbwg
o/S+fLg9IRscSI6eLr2Q627unYc4/gJlt9NkCmVuZHN0cmVhbQplbmRvYmoKMTE0CjAKb2JqCjY3
NgplbmRvYmoKMTE1CjAKb2JqClsKXQplbmRvYmoKMTE2CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFn
ZQovSW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQov
RGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL1NNYXNrCjExNwowClIKL0ZpbHRlcgovRENU
RGVjb2RlCi9MZW5ndGgKMTE4CjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBD
AAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8t
MC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHVA+gDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAA
AAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB
kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT
1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI
CQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6
goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigD//ZCmVuZHN0cmVhbQplbmRvYmoKMTE3CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFn
ZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2aWNlR3JheQovQml0c1Bl
ckNvbXBvbmVudAo4Ci9MZW5ndGgKMTE5CjAKUgovRmlsdGVyCi9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeJzt1TFOIgEAQFFnEsJYUJEo9FJBsKImka1sxMSwe/+TrGMsTPYGf9+7w8+/uwP+B8MwAknD
8F35uFhO0z2QM03LxfhV+rhcrR82QNDDerUc550vVtun/REI2j9tV4th3vl6dzq/XICcl/Npt56H
Pk6Ph/Pr2/UdiLm+vZ4Pj9Pc+f3meLl+3ICcj+vluLn/6nz7/Ov99hvIub3/et7+7PwPEKNz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfT92zmQ86PzzfFy/bgBOR/Xy3Hz1fn0
eDi/vl3fgZjr2+v58DjNnS/Xu9P55QLkvJxPu/Xys/Nhsdo+7Y9A0P5pu1oMd/PQV+uHDRD0sF7N
O/8c+rhYTtM9kDNNy8U473wufRiBpOG7cqDuLzczkMMKZW5kc3RyZWFtCmVuZG9iagoxMTgKMApv
YmoKODE4NwplbmRvYmoKMTE5CjAKb2JqCjE1NjgKZW5kb2JqCjExMwowCm9iago8PAovRm9udAo8
PAovRm9udDQKMTQKMApSCi9Gb250NwoyMwowClIKPj4KL1BhdHRlcm4KPDwKPj4KL1hPYmplY3QK
PDwKL0ltYWdlNQoyMQowClIKL0ltYWdlMjIKMTE2CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBo
YTAKMTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VC
Ci9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagoxMjAKMApvYmoKPDwKL1R5cGUKL1BhZ2UKL1Bh
cmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwoxMjEKMApSCi9S
ZXNvdXJjZXMKMTIyCjAKUgovQW5ub3RzCjEyNAowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3BhcmVu
Y3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjEyMQowCm9iago8PAovRmlsdGVyCi9GbGF0
ZURlY29kZQovTGVuZ3RoCjEyMwowClIKPj4Kc3RyZWFtCnictVdbbxtFGB0pKg8DEoFSXpAKSDxA
BZOZb+7iCeQ4TamUOHZsBAVRQZsIOS0p/Ad+D/+QM+Pb2h47zmzj0XpnZ+fynfNd95orIXlq30w6
Rlrcf7/i11wKKVV0wUqTZ6w+Y1K6XXHtrHcyLx8vHkhab1JnzFce0v8lH/FXOCS1g+/Gf10+l/zi
78k5/M1F1c6X/OUj3kO7rlw+epRlaiwDL/MZjcmAfnB89fziheWd1/nIXl4X4mKd8hTIC+XQdXJy
cCC3tJz0ZH2TB0o8JGXMrsyGdkqRCKaJaj52G256W0hXQfogoF6rjLMiH2Z88EZIPR8bN8ZU0D7E
PDhf2xhbOlSHmaktetnOZg/pbrwwJkSyXGkYoo8+zozRerImSotuUNYFp9HTSmPYJuG/H2CPwRt+
0H396h/DtRc6/YgPXi4buTLCxqBc5DqKoGOMjg8mtjz4g3/J/v2KD/7kh4MFLytbE7Cv7Yq95IYN
NTtnj9k+O8L/MXvKergfsT3WZz+wZ8/YEENd1mEnGEoTn+D5DJOGN8mxGaI2CoLYaMoSzTe+C1Ij
CSWde2ucFvc7AEenuEZTKkdgbA+9M4x2MsVDPHczn535rMNE9x77Fo893N/FpLTsGFPO2Xv1dJuo
BCkDTywJe6dsK2OE9nnO26G7vOEXsM4TkPUT6HqaDbkHVhP/mdFEeh8tEf+knkfyXvhI0ZelqCeS
CmitFSS1SqEmSmGs1moJ8n834VBBuPxb2zr4RGRx1wCbS1Hgx+zuZ9kOv2bEJFpAjDjB22E23j76
yXSPMeucndZpFPGUFGgtS1O1J3LaFDYRGEBwsaU9bwj7O6WhlFBN6lxxuJd2OZvOB8eNQWs10p9b
SkSNsTaJKDpEUOPtNA8VqfJlE8spwQi/7EsOSu1k7+lmNafgM5rG/B0caMNZ5FRSsKL1E2+lkkYR
AucyXtoQ9IYuRCPyUWtBC7ZTzYAQSEI3NTAfU0qmSsVk/c0WNwcbVdxOmkIgFGRiCoVWaKmt2qYp
w8MGRSklXFhS1B77ENev9XEAb7SOAbDWNr9p001SEjLNqpTLrYuq4ixHmV476S1cwJOzbv3QWuk1
jCdIfEZsRTBr78A1jtDOpzFxH9ge50SU4uNnuD5l99nP7CP2OXvYQksEqTRyQVm8WqwovM12TS1w
phLwl1wj3g1C6VAveLxZE6oWnZWpOo9xN4QfpFYvv6GZHxWPrcYQhfNr1fomDJPiMkAXrbzKOaGt
Nb58ei0UFwWlzXZCsogUCVF/mowOc+0xsbp7sLkUP95fKqnvtbJBfJI4CrEoai1sJPpQAbuP8mvh
YA/aOVdIvqVRH5SEqQUWAmLvbYGdQmenuVrMRfkifNxHL90/wf+ktQsn+FCIudQoiVkLGWlc3hry
zEyHjZpqf0pEk4GP58gnbcLHg5XRVqyQjMKHKF0RSS0rKIxymAj2Vry0DLgWCV9LBKny8dVglM++
v1vS+K2NNpDorHMoOsuHViMgl518O4JWkmvESW99UOXDqiXXLvtqWfJWEhPB8C2+w8uH7Pz5kdr/
tE3opwplbmRzdHJlYW0KZW5kb2JqCjEyMwowCm9iagoxMTY3CmVuZG9iagoxMjQKMApvYmoKWwpd
CmVuZG9iagoxMjUKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9X
aWR0aAoxMDAwCi9IZWlnaHQKNDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VSR0IKL0JpdHNQZXJDb21w
b25lbnQKOAovU01hc2sKMTI2CjAKUgovRmlsdGVyCi9EQ1REZWNvZGUKL0xlbmd0aAoxMjcKMApS
Cj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUEBgYFBgcHBggKEAoKCQkK
FA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgpKP/bAEMBBwcHCggKEwoK
EygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKP/A
ABEIAdUD6AMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC
AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ
GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU
lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1
9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAAB
AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl
pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA
AhEDEQA/APlSiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/9kKZW5kc3RyZWFt
CmVuZG9iagoxMjYKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9XaWR0aAoxMDAwCi9IZWlnaHQK
NDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50CjgKL0xlbmd0aAox
MjgKMApSCi9GaWx0ZXIKL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO3VMU4iAQBAUWcSwlhQkSj0
UkGwoiaRrWzExLB7/5OsYyxM9gZ/37vDz7+7A/4HwzACScPwXfm4WE7TPZAzTcvF+FX6uFytHzZA
0MN6tRznnS9W26f9EQjaP21Xi2He+Xp3Or9cgJyX82m3noc+To+H8+vb9R2Iub69ng+P09z5/eZ4
uX7cgJyP6+W4uf/qfPv86/32G8i5vf963v7s/A8Qo3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59P3bOZDzo/PN8XL9uAE5H9fLcfPV+fR4OL++Xd+BmOvb6/nwOM2dL9e70/nl
AuS8nE+79fKz82Gx2j7tj0DQ/mm7Wgx389BX64cNEPSwXs07/xz6uFhO0z2QM03LxTjvfC59GIGk
4btyoO4vNzOQwwplbmRzdHJlYW0KZW5kb2JqCjEyNwowCm9iago4MTg3CmVuZG9iagoxMjgKMApv
YmoKMTU2OAplbmRvYmoKMTIyCjAKb2JqCjw8Ci9Gb250Cjw8Ci9Gb250NAoxNAowClIKL0ZvbnQ3
CjIzCjAKUgo+PgovUGF0dGVybgo8PAo+PgovWE9iamVjdAo8PAovSW1hZ2U1CjIxCjAKUgovSW1h
Z2UyMwoxMjUKMApSCj4+Ci9FeHRHU3RhdGUKPDwKL0FscGhhMAoxMAowClIKL0FscGhhMgoxMgow
ClIKPj4KL1Byb2NTZXQKWwovUERGCi9UZXh0Ci9JbWFnZUIKL0ltYWdlQwovSW1hZ2VJCl0KPj4K
ZW5kb2JqCjEyOQowCm9iago8PAovVHlwZQovUGFnZQovUGFyZW50CjEKMApSCi9NZWRpYUJveApb
CjAKMAo3MjAKNDA1Cl0KL0NvbnRlbnRzCjEzMAowClIKL1Jlc291cmNlcwoxMzEKMApSCi9Bbm5v
dHMKMTMzCjAKUgovR3JvdXAKPDwKL1MKL1RyYW5zcGFyZW5jeQovQ1MKL0RldmljZVJHQgo+Pgo+
PgplbmRvYmoKMTMwCjAKb2JqCjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMTMyCjAK
Ugo+PgpzdHJlYW0KeJy1lslOG0EQhluaWycH7rkiAkhpel+OiVhsQAKDF0jIASUBFJkQSN4hz5M3
zN812B7jIQZje+RxdU139fRXxU/dciUkz9e70rDS4ffLNb/lUkipko9OWprxcIxJ+eeaG++Cl7S8
Pxpo6YLNRp8/GOT7Fe/xH9gkXxvv+z+vziW//FXuw+8uZ4p8xS/WeQvX7YzLe+v0TpVl4DKcUZmM
o280r88vvzm+eUNbtmhdTKN1Kuiog1AeppflxlH7seXaluurHHTmkJMx+BIN45XSItrqqYa+57Bp
/Qe6ijJEgfQ6Zb0TtJkNMVghzdDXr/hUNCEmcg7XVnxjm5o4KLWRRXU2GORfG4S1MWnHlUEhhhTS
oBhd0M4m6WBG5Xz0BpZRBm6XX/5DGzHad3xj++bHb8tNECZ/NG9fjBe5ssKlqHziJoloUkqet8ta
bn/lq+zPGm9/51vtEZcHoTXOPhEVseQjAR1rsE12wJZYj+2zQ4wKdsw67Ig1MT5gjWkbPn4WrYwI
2jtfv/Uw8LPp6ZojOie0NArJiU4kPXbGv9POoKLw9JkIG0O+TURcAZ8OWHWHtE5Ba4fo7YFnB3ZB
Mx6y3WQtetaF1YSnx87OMNxlJ7QsP+7BPR17LQRpRIxBTb7x7LCfUKrKeJEk4ZtPqdYHDEBbAgay
Y5gdot6lXBRkFcDYhdUC0JJ1wSRmHtIcIm0oXZnxNqXliCZF3PcxLtgrLDAYv5698L3TwhkHda09
yGJzAXlTgebMKRe1AQe5SKBVgGSJukEM9yg1ZSoalTRIUC3uk0WMZyec1T7K6OvfbqGAtVXCZjGb
F+C6gJ8QUgPbEur4aFjPWV9O8T2A75j0pEUl26SSPmTFWpZBibXLAPx2pDYVf4cdrvHPvL07I/ik
hFY22noOi9J0DR128xX1mpBnq6TBB6VQbIHpEfEtlWUbBd0hTc/U7yedEOCy3juUnn3cP86k3mhN
hPHB1LzaQivamCgcRMrNrdOoDbhyLwRbJAo9+u+Z7zskCvmJzRmQL9EFg17W+hhc/TsMAk9p+57U
huaG2mbjGo2ORd5yNz109itO5wzaXz/WiFZ8L2lEk0djZXHcsg+t5RXqq40SZdGgjSVpGQ2hRBW/
gfS42f/ClINMGGvi5BZPzkG+/gHcwI9JCmVuZHN0cmVhbQplbmRvYmoKMTMyCjAKb2JqCjg2Nwpl
bmRvYmoKMTMzCjAKb2JqClsKXQplbmRvYmoKMTM0CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQov
SW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2
aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL1NNYXNrCjEzNQowClIKL0ZpbHRlcgovRENURGVj
b2RlCi9MZW5ndGgKMTM2CjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYE
BQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0o
MCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCj/wAARCAHVA+gDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAA
AAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEI
I0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlq
c3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW
19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL
/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLR
ChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn
6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigD//ZCmVuZHN0cmVhbQplbmRvYmoKMTM1CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQov
V2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2aWNlR3JheQovQml0c1BlckNv
bXBvbmVudAo4Ci9MZW5ndGgKMTM3CjAKUgovRmlsdGVyCi9GbGF0ZURlY29kZQo+PgpzdHJlYW0K
eJzt1TFOIgEAQFFnEsJYUJEo9FJBsKImka1sxMSwe/+TrGMsTPYGf9+7w8+/uwP+B8MwAknD8F35
uFhO0z2QM03LxfhV+rhcrR82QNDDerUc550vVtun/REI2j9tV4th3vl6dzq/XICcl/Npt56HPk6P
h/Pr2/UdiLm+vZ4Pj9Pc+f3meLl+3ICcj+vluLn/6nz7/Ov99hvIub3/et7+7PwPEKNz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfT92zmQ86PzzfFy/bgBOR/Xy3Hz1fn0eDi/
vl3fgZjr2+v58DjNnS/Xu9P55QLkvJxPu/Xys/Nhsdo+7Y9A0P5pu1oMd/PQV+uHDRD0sF7NO/8c
+rhYTtM9kDNNy8U473wufRiBpOG7cqDuLzczkMMKZW5kc3RyZWFtCmVuZG9iagoxMzYKMApvYmoK
ODE4NwplbmRvYmoKMTM3CjAKb2JqCjE1NjgKZW5kb2JqCjEzMQowCm9iago8PAovRm9udAo8PAov
Rm9udDQKMTQKMApSCi9Gb250NwoyMwowClIKPj4KL1BhdHRlcm4KPDwKPj4KL1hPYmplY3QKPDwK
L0ltYWdlNQoyMQowClIKL0ltYWdlMjQKMTM0CjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBoYTAK
MTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VCCi9J
bWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagoxMzgKMApvYmoKPDwKL1R5cGUKL1BhZ2UKL1BhcmVu
dAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwoxMzkKMApSCi9SZXNv
dXJjZXMKMTQwCjAKUgovQW5ub3RzCjE0MgowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3BhcmVuY3kK
L0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjEzOQowCm9iago8PAovRmlsdGVyCi9GbGF0ZURl
Y29kZQovTGVuZ3RoCjE0MQowClIKPj4Kc3RyZWFtCnictVZJT1sxELaUm+m1Uo89EtQa74t6ahUI
mwohGy30gLqAqgCF9j/09/Qf9vNkT14IWYgVv5l54/H4m/G8uedKSJ7H2y5hpcPz6w2/51JIqZKP
TlrSmOShlB833HgXvKTlnSGjpQs2Ex0+weT5mrf5LTbJY/t959f1peRXv7v78IerpSxf8x9bvIZx
v+Ty9hb5NLIMuAw0RpRx9O39m8ur745X7mjLGq2LabhOBR11EMqD9LK7cdR+bLnurR/FQWcccjD6
f0LDeKW0iHb0VAPZItjUHgFdRRmiQHidst4J2syGGKyQZiDrjMhUNCEmEg7WjsjGNjWxn2pDivKs
z+SnDcLamICLMkjEkELqJ6ML2tkkHcionI/egDLKQOyy8x8asNF44Nu7d7d/LDdBmPzTvPFjPMmV
FS5F5RM3SUSTUvK80c3lxje+yf6WeeMn32kMcZkwraLw9JsyDYNyhlXNauyYXVywEquzJjtlbbbH
djEf4cUBpG12CEkJ7/bAH0GjNs+R2WfUTgtvXDLF3gwML4yqhvHJzZwTWhqFoEUnkh479r+5YJru
GcyU2RjyNGVxG9ic4J/xqwKvGjsDvwOuCe6U7Y9jyFrgN6BRYeegXrJXGC/mIlt0TiOtCEmHaaeW
x/MJWaqMF0lSuq0xS4utXpSRpBVgWyLE6hj9/Nxgn0A38e4Mb44hqQD/KmHdIpRfU24f5iRvQXW3
UG0+9DMhsRa4J6tCsfPPGwSUNBVIZ51BKLT6DlDVKLP3KMdbVB1OMe9QhdhBBI4AbZXAbdNcgqzV
uwPd+pKjVe3dkbEQrBYA5z0V+QLHn6uqaHwKtKMSscbKUmT1HHZDmSuVP5qbVKAPEYZ+LvfqtwG6
LapA3QpTYm8wZ6zrFLkqzTku/Uh+ht5ZL2KZbrKPZf6FNw4Wr0H4yCYkpClG5VnvgI5eaLvWC1Bg
UgKzE8KIwJ51CVrgKhSCsdjUwTQHkcHCFRz0UQRvUOmnvVzeKnUIGvGJ3oeFTM5M52CyTWuF9jNK
4pwe7Ek9Ye5ubSZuuFbWeGptB8LOiNA5g17Uj3WFI7JVusLk0c3Y4HpNYSFUofjmEPD4gOvHss1M
tGbd6x2pBrRXSaWEjkHFOO3Bk0OUx3/h4oGdCmVuZHN0cmVhbQplbmRvYmoKMTQxCjAKb2JqCjg1
MQplbmRvYmoKMTQyCjAKb2JqClsKXQplbmRvYmoKMTQzCjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFn
ZQovSW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQov
RGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL1NNYXNrCjE0NAowClIKL0ZpbHRlcgovRENU
RGVjb2RlCi9MZW5ndGgKMTQ1CjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBD
AAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8t
MC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHVA+gDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAA
AAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKB
kaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZn
aGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT
1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI
CQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV
YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6
goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigD//ZCmVuZHN0cmVhbQplbmRvYmoKMTQ0CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFn
ZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2aWNlR3JheQovQml0c1Bl
ckNvbXBvbmVudAo4Ci9MZW5ndGgKMTQ2CjAKUgovRmlsdGVyCi9GbGF0ZURlY29kZQo+PgpzdHJl
YW0KeJzt1TFOIgEAQFFnEsJYUJEo9FJBsKImka1sxMSwe/+TrGMsTPYGf9+7w8+/uwP+B8MwAknD
8F35uFhO0z2QM03LxfhV+rhcrR82QNDDerUc550vVtun/REI2j9tV4th3vl6dzq/XICcl/Npt56H
Pk6Ph/Pr2/UdiLm+vZ4Pj9Pc+f3meLl+3ICcj+vluLn/6nz7/Ov99hvIub3/et7+7PwPEKNz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfT92zmQ86PzzfFy/bgBOR/Xy3Hz1fn0
eDi/vl3fgZjr2+v58DjNnS/Xu9P55QLkvJxPu/Xys/Nhsdo+7Y9A0P5pu1oMd/PQV+uHDRD0sF7N
O/8c+rhYTtM9kDNNy8U473wufRiBpOG7cqDuLzczkMMKZW5kc3RyZWFtCmVuZG9iagoxNDUKMApv
YmoKODE4NwplbmRvYmoKMTQ2CjAKb2JqCjE1NjgKZW5kb2JqCjE0MAowCm9iago8PAovRm9udAo8
PAovRm9udDQKMTQKMApSCi9Gb250NwoyMwowClIKPj4KL1BhdHRlcm4KPDwKPj4KL1hPYmplY3QK
PDwKL0ltYWdlNQoyMQowClIKL0ltYWdlMjUKMTQzCjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9BbHBo
YTAKMTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1hZ2VC
Ci9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagoxNDcKMApvYmoKPDwKL1R5cGUKL1BhZ2UKL1Bh
cmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwoxNDgKMApSCi9S
ZXNvdXJjZXMKMTQ5CjAKUgovQW5ub3RzCjE1MQowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3BhcmVu
Y3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjE0OAowCm9iago8PAovRmlsdGVyCi9GbGF0
ZURlY29kZQovTGVuZ3RoCjE1MAowClIKPj4Kc3RyZWFtCnictVZLTxsxELbEzTe491q1SDV+jO2Z
YxHlrVaB0FDEBbUFVG2g0P6H/u2OvcmuN9k05RUrWftbz8PfPJw7aZSWabyrJ6A9P7+O5Z3USmtD
Ab2GvGN2zZvSYyxd8DHoLF61C6t9hDSp5Mwi/V7LkbxhI2lsvK9+Xl9oefWrtiPvrx6l+VperssB
j7tHio/Ws0+FGPPS7Cg289E39sYXV9+93LrNJgdZDqmVM9GijcoEngZdG0YbOuI21PIlDzbxkIIx
/WY2XDDGKoTyVA32EG4G/yDdoI6oOLzeQPAqG4OIEZR2DVYVmEEXkTLYyBZYx6jDaaq1s5xn00V6
QlQASNZL4zgRI0WaJqOP1gNpz1M0PmBwPHPGMeyT85tD1jG8lxvbtze/QbqoXPpYObzsJrkB5QlN
IOlIoSOiIId1Lg+/yTfiz1s5/CE/DFteZlRbPvucVtalFyj0YlfsiFOxzc8VcSgGYsSzE7GXf3d5
zW+WGV18Hj6/MhYXHKfR+xIEklVGh/Bs/PXqe83UnUyIGolP4vycWTzlxU7mbyW/+sK87oqzJ7CI
WoGl2OvDVO2SXP6v2kpdAtJkLK0BF3KLaMCqAL13XNOhU10F9pTqosCpAtFPiquXrSid7QlUznNQ
0c4EaYuz+CBn+LY44jAdcVxSru8vi4lBFfJnPibcvDhT2d85g88REQCKXllsSeV+51BjVIgl0y1o
EKiJSSNfosUl9FIGJteUIZf6f5jwZam+Zfqk2gsnlhfWQmai1s4pyCp0wKSMs9Uj4+m+adGqRMnq
qJNUVWoo0EdkLAQ2Y40EdMoYRKj39PudUpN7k+E25x17bPgeIu+5NbZoVaCGaQJ2MPmWZGfXpRT7
zm4vymGq24rrrRYOEnnuy9SpmANuZiNxLD6LV2KNR2pvq+KMa+Yjf4/znXHIVbWaK2mfd0zfrRXV
trmo2roM8V83R5Zridp+NM/Nwxhbhj4De4WJPg7nOktmO6VdbiflcVq04zi0KNU3W3ddSNVHWNJt
0vgL+AMkxQplbmRzdHJlYW0KZW5kb2JqCjE1MAowCm9iago3NzEKZW5kb2JqCjE1MQowCm9iagpb
Cjw8Ci9UeXBlCi9Bbm5vdAovU3VidHlwZQovTGluawovUmVjdApbCjM0MS40NjE1OAozMS4yNjA4
NjYKNDc3LjE3ODUKMzkuNjYwODY2Cl0KL0JvcmRlcgpbCjAKMAowCl0KL0EKPDwKL1R5cGUKL0Fj
dGlvbgovUwovVVJJCi9VUkkKKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhY2hlX2Nv
bG9yaW5nKQo+Pgo+PgpdCmVuZG9iagoxNTIKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRl
cnBvbGF0ZQp0cnVlCi9XaWR0aAoxMDAwCi9IZWlnaHQKNDY5Ci9Db2xvclNwYWNlCi9EZXZpY2VS
R0IKL0JpdHNQZXJDb21wb25lbnQKOAovU01hc2sKMTU0CjAKUgovRmlsdGVyCi9EQ1REZWNvZGUK
L0xlbmd0aAoxNTUKMApSCj4+CnN0cmVhbQr/2P/gABBKRklGAAECAAABAAEAAP/bAEMABgQFBgUE
BgYFBgcHBggKEAoKCQkKFA4PDBAXFBgYFxQWFhodJR8aGyMcFhYgLCAjJicpKikZHy0wLSgwJSgp
KP/bAEMBBwcHCggKEwoKEygaFhooKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKP/AABEIAdUD6AMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQID
BAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHB
FVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2
d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna
4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1
EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ0
4SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeI
iYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery
8/T19vf4+fr/2gAMAwEAAhEDEQA/APlSiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKAP/9kKZW5kc3RyZWFtCmVuZG9iagoxNTMKMApvYmoKPDwKL1N1YnR5cGUKL0ltYWdlCi9JbnRl
cnBvbGF0ZQp0cnVlCi9XaWR0aAo0NTAKL0hlaWdodAozMDIKL0NvbG9yU3BhY2UKL0RldmljZVJH
QgovQml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawoxNTYKMApSCi9GaWx0ZXIKL0RDVERlY29kZQov
TGVuZ3RoCjE1NwowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAGBAUGBQQG
BgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko
/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgo/8AAEQgBLgHCAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgME
BQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEV
UtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3
eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh
4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALUR
AAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDTh
JfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJ
ipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz
9PX29/j5+v/aAAwDAQACEQMRAD8A+VKKKKACiiigAr2C3+B99NBHKNZtgHUNjyW4yPrXj9fZmnah
ZjT7YG7t8+Uv/LRfQe9c+IqShblPYyjCUcS5+2W1uvqeL/8ACir/AP6DVr/35b/Gj/hRV/8A9Bq1
/wC/Lf417h/aFl/z92//AH9X/Gj+0LL/AJ+7f/v6v+Nc3t6h7f8AZOD7fi/8zw//AIUVf/8AQatf
+/Lf40f8KKv/APoNWv8A35b/ABr3D+0LL/n7t/8Av6v+NH9oWX/P3b/9/V/xo9vUD+ycH2/F/wCZ
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
1/kL+wcJ2f3lPxnfxan4nv7yBXWKVgVDgAj5QOcE+lYlWdQ/4/Jfr/Sq1fi+ZQVPGVoLZSkvxZ9Z
QgqdKMI7JJfgFFFFcRqFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAbnhaJJZ5xIuQFH866P7HB
/wA8x+ZrktE1BNPklaRGcOABtrX/AOElg/54S/mK9/AY6NGioOdt+572Bq4SNFKrbm80a32OD/nm
PzNH2OD/AJ5j8zWT/wAJLB/zwl/MUf8ACSwf88JfzFdn9qQ/5+P72dn1jAf3fu/4BpTw28Q/1WeC
x5PQdaa0drh9sRYqQCORjn3rNk8Q2sgAe3kOPcUw67aEMPs83zdfm6/rUPM9dKv5mbr4O+nL93/A
NRoolkZfIU4wAd56k8ZpoFsQCIODgDn+IgHH61QPiG1IYG3l+Y5PI6/5FN/t6z/59ZOmO3Sk8z7V
fzE62D6OP3f8A2I7aB0z5QByQRk9QcU77HB/zzH5mshfEduqhVt5QB7il/4SWD/nhL+Yq1mkba1P
zNFXwFteX7v+Aa32OD/nmPzNH2OD/nmPzNZP/CSwf88JfzFH/CSwf88JfzFP+1If8/H97H9YwH93
7v8AgGJraKmqXCqMKCMD8BVGrOo3C3V7LOqlVc5AP0qtXzNaXPUlLu2fM1nF1JOO12FFFFZGYUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//ZCmVuZHN0cmVhbQplbmRv
YmoKMTU0CjAKb2JqCjw8Ci9TdWJ0eXBlCi9JbWFnZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQov
Q29sb3JTcGFjZQovRGV2aWNlR3JheQovQml0c1BlckNvbXBvbmVudAo4Ci9MZW5ndGgKMTU4CjAK
UgovRmlsdGVyCi9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeJzt1TFOIgEAQFFnEsJYUJEo9FJBsKIm
ka1sxMSwe/+TrGMsTPYGf9+7w8+/uwP+B8MwAknD8F35uFhO0z2QM03LxfhV+rhcrR82QNDDerUc
550vVtun/REI2j9tV4th3vl6dzq/XICcl/Npt56HPk6Ph/Pr2/UdiLm+vZ4Pj9Pc+f3meLl+3ICc
j+vluLn/6nz7/Ov99hvIub3/et7+7PwPEKNz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfT92zmQ86PzzfFy/bgBOR/Xy3Hz1fn0eDi/vl3fgZjr2+v58DjNnS/Xu9P55QLkvJxP
u/Xys/Nhsdo+7Y9A0P5pu1oMd/PQV+uHDRD0sF7NO/8c+rhYTtM9kDNNy8U473wufRiBpOG7cqDu
LzczkMMKZW5kc3RyZWFtCmVuZG9iagoxNTUKMApvYmoKODE4NwplbmRvYmoKMTU2CjAKb2JqCjw8
Ci9TdWJ0eXBlCi9JbWFnZQovV2lkdGgKNDUwCi9IZWlnaHQKMzAyCi9Db2xvclNwYWNlCi9EZXZp
Y2VHcmF5Ci9CaXRzUGVyQ29tcG9uZW50CjgKL0xlbmd0aAoxNTkKMApSCi9GaWx0ZXIKL0ZsYXRl
RGVjb2RlCj4+CnN0cmVhbQp4nO19B3Rbx5nufwEQYAFJsFPsIsVOsYi9EyTEKlJsIEixU6ySWVSp
TkrsvapYtrN2nDiO7dg5doq9Sez4pa7jxHF2s2f37DnvnfNSd7OJoyRv896+l+Rh7gVwB42iHM6A
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
BDY8/NfbQRH1qZJH+/4jj/b9dpBGzCOGKUXbw5rssMMOO+ywww477LDDjv+y+P9zG0Q3CmVuZHN0
cmVhbQplbmRvYmoKMTU3CjAKb2JqCjE3OTcyCmVuZG9iagoxNTgKMApvYmoKMTU2OAplbmRvYmoK
MTU5CjAKb2JqCjEyMDA0CmVuZG9iagoxNDkKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQ0CjE0CjAK
UgovRm9udDcKMjMKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUKMjEK
MApSCi9JbWFnZTI2CjE1MgowClIKL0ltYWdlMjcKMTUzCjAKUgo+PgovRXh0R1N0YXRlCjw8Ci9B
bHBoYTAKMTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4dAovSW1h
Z2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagoxNjAKMApvYmoKPDwKL1R5cGUKL1BhZ2UK
L1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwoxNjEKMApS
Ci9SZXNvdXJjZXMKMTYyCjAKUgovQW5ub3RzCjE2NAowClIKL0dyb3VwCjw8Ci9TCi9UcmFuc3Bh
cmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjE2MQowCm9iago8PAovRmlsdGVyCi9G
bGF0ZURlY29kZQovTGVuZ3RoCjE2MwowClIKPj4Kc3RyZWFtCnictVXdblMxDI7Ena+QeAjWSqT5
c+JccAHibwWJlZ6uIMrFBKwVajc6eAeehzfESenp6Vm2btV2otM4bvzZ/mz5LEFLBWk9WQlOIe9f
F7AEJZXS0RMql2+0z3wpbQuwHoNX2Xy+ORiFwSVhDq1D+p3BGM7YSVq9Z/OfsxMF018rP3Ax3Qt5
BqddGPBa7mk+7uaYGmbMS32jcZlT7x0uTqbfEV6cZ5eDbEdxY6eDIROk9ix6tXJMxm+ZG1rZN3kw
iYdUjPWb2bBeayPJNbOqdbfhZnAN6ZpUIMnlRe08yuzMBQpOKlvr5g2dJhsoZmVt29BtObW0brWN
lPtsfUi7C9I5igZBW27EEENcNyMGgy4qZJE0evKWJastqzEF/7xijOoCeq/Oz347sEHa9BioTreb
XDuJkbSPYKMkG2P0UK16ufoGB+JPB6of8LLa8NKCNpz7JVTGUkXAzww56YiReMMLO8wPXzwQoZaM
8B34AlX/1j41OqkdOVfOpM7jPriLRmrl/Z1RV8R7ypQNxVsxmYjRLuhrgtZW+ohWF53sz5Ip5IIo
jbI6NzBJTe2M/u5Kg5vC5+cSNIWUSxG1Kz4yU8divJOkUszaehmCM7GMfm8EkZGRneHdElRENWIg
Hoq++CDesdQXD8RrJuwTv+9ZNxRHLA3EmPWHfB7x/pj3I/Fo/2gsBv6LGS2HtAbeMR5vMK7zd8el
0bsAw8waK4k2ynlDiWj5K+Eb87qp2ndck4Hoef64gP+HdZGsUG6IPDedDKY1M68YlVyaY+72Ia9U
qPHu0Xl1iQyPo6CJw24HcPPypPUPNunAHAplbmRzdHJlYW0KZW5kb2JqCjE2MwowCm9iago2MTUK
ZW5kb2JqCjE2NAowCm9iagpbCl0KZW5kb2JqCjE2NQowCm9iago8PAovU3VidHlwZQovSW1hZ2UK
L0ludGVycG9sYXRlCnRydWUKL1dpZHRoCjEwMDAKL0hlaWdodAo0NjkKL0NvbG9yU3BhY2UKL0Rl
dmljZVJHQgovQml0c1BlckNvbXBvbmVudAo4Ci9TTWFzawoxNjYKMApSCi9GaWx0ZXIKL0RDVERl
Y29kZQovTGVuZ3RoCjE2NwowClIKPj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAG
BAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAt
KDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgB1QPoAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAA
AAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh
CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV
1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK
C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy
0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKD
hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm
5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+VKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooA//2QplbmRzdHJlYW0KZW5kb2JqCjE2NgowCm9iago8PAovU3VidHlwZQovSW1hZ2UK
L1dpZHRoCjEwMDAKL0hlaWdodAo0NjkKL0NvbG9yU3BhY2UKL0RldmljZUdyYXkKL0JpdHNQZXJD
b21wb25lbnQKOAovTGVuZ3RoCjE2OAowClIKL0ZpbHRlcgovRmxhdGVEZWNvZGUKPj4Kc3RyZWFt
Cnic7dUxTiIBAEBRZxLCWFCRKPRSQbCiJpGtbMTEsHv/k6xjLEz2Bn/fu8PPv7sD/gfDMAJJw/Bd
+bhYTtM9kDNNy8X4Vfq4XK0fNkDQw3q1HOedL1bbp/0RCNo/bVeLYd75enc6v1yAnJfzabeehz5O
j4fz69v1HYi5vr2eD4/T3Pn95ni5ftyAnI/r5bi5/+p8+/zr/fYbyLm9/3re/uz8DxCjc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0/ds5kPOj883xcv24ATkf18tx89X59Hg4
v75d34GY69vr+fA4zZ0v17vT+eUC5LycT7v18rPzYbHaPu2PQND+abtaDHfz0Ffrhw0Q9LBezTv/
HPq4WE7TPZAzTcvFOO98Ln0YgaThu3Kg7i83M5DDCmVuZHN0cmVhbQplbmRvYmoKMTY3CjAKb2Jq
CjgxODcKZW5kb2JqCjE2OAowCm9iagoxNTY4CmVuZG9iagoxNjIKMApvYmoKPDwKL0ZvbnQKPDwK
L0ZvbnQ0CjE0CjAKUgovRm9udDcKMjMKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8
Ci9JbWFnZTUKMjEKMApSCi9JbWFnZTI4CjE2NQowClIKPj4KL0V4dEdTdGF0ZQo8PAovQWxwaGEw
CjEwCjAKUgovQWxwaGEyCjEyCjAKUgo+PgovUHJvY1NldApbCi9QREYKL1RleHQKL0ltYWdlQgov
SW1hZ2VDCi9JbWFnZUkKXQo+PgplbmRvYmoKMTY5CjAKb2JqCjw8Ci9UeXBlCi9QYWdlCi9QYXJl
bnQKMQowClIKL01lZGlhQm94ClsKMAowCjcyMAo0MDUKXQovQ29udGVudHMKMTcwCjAKUgovUmVz
b3VyY2VzCjE3MQowClIKL0Fubm90cwoxNzMKMApSCi9Hcm91cAo8PAovUwovVHJhbnNwYXJlbmN5
Ci9DUwovRGV2aWNlUkdCCj4+Cj4+CmVuZG9iagoxNzAKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVE
ZWNvZGUKL0xlbmd0aAoxNzIKMApSCj4+CnN0cmVhbQp4nLVXW1NTMRDOzHnLG3h58w0vVQy5X8Yn
nQK2MoOFQlXwgfEC47Qq6H/w9/gP/ZLTy2mbWlpoz0CSPSe7ybffbjaXVDBO4/O87Ghu0H7q0UvK
GeciWG+4Tl9MjvFRbHpUWeMsT9O7o4HkxunY6dKJQfx/QTv0O4zEZ+tl9+fFGafnv0o79Op8Kc0X
9OtT2sJzueT0ztO0pso04DL8ovIxtr7V6J2dfzG0/iOZbKV5PozmCSe9dExYdC0vDXtpx6bLUM6v
4iAjDtEZg7+EhrJCSOZ1dVdD2SLYtP4DuvDceQb3GqGtYcmYdt5pxtVQ1q3IhFfOhyQczq3Ixowq
P6DaqJd4NhjEVjumtQ/SUKFARBdcGJDROGl04AZdL4z1VqGnhILYxMW/akNH+4pu7fz4/ltT5ZiK
P0nbX8dJLjQzwQsbqArMqxCCpe2Sy+3P9An5U6Ptb3S7PcJlQrXE3qe0QhefodCSA9IgHfKB1MkR
eU0K0iTvyB7ZRX8fbQvt8TyjwjObflOWpZ5pep7S2SBdR+kqXBIkEzzt8nY8ktF3Ao2nT0ijFjHl
GDTgnyP4p0i+KMgL+CO2x5DV05vX8NXg7T1yB3/3a/QjbTeXA1cpy5ALEEC57S6Pr8ygYAyDIZEi
yjPhJ7H9uzzxvIuuy2iNCD9L5D4EYA1AeEDeovcQtG8C1ghvE+M62t0E9CG+aKE9SAESZdvk9JQU
tbj+6KMNwsnja2Ceg0BrA/yUlnkIVspngVQonFLitgidVyjJe+B2BNzuJoIW6L8D/kgsCeddIHtY
EvkGOQGmvfRC5hexKt5KnATSKJWnbf4kS9SUoK6yGodsjxppQWPuXEXarUpjqhNOGEjLyVOCyjwc
bDjTBofWwjGT3dEbuKcDJx2TB2Qdz0kKk21knQ5ka/3xWgqRJt5Hl+7gzToc3ernqu3k8nUE2x4k
R5CsV4iwlmy8Jft57FDeqSDhrzBAMQfaYlDOlWZBXQzSqo1pXKt07zur7wPLNNSp8R0NpeNrR9qA
WI7IMSUYzYv7WEkukd4ywBjUbeWSvEKfMnSRipYinpSPyBby7yYxGHYgLlLlEpPJTjo134NtB+BY
HaO9MpEvn2Q0R82Mui+/uFXlGKwEk0OQt3o25rWqflExQLiDsCyLwhjq+ymMC4C+ORfE3J6kBmuD
t3njc7kSSr/oKb2pHHSGWTnj9FyEfbgX9XHTQsWTRPqczjlXh2tdZeKlTMdOD8lGK5tuZENhtyI0
RuEKZccuMxXZTS4zwaKO1s707zJZqFzenwl3zZycqK84AtIiJDdqMZhiiQTOzC+QZjNWaMmQ/r2f
Mnd9f8TnH4j3BgkKZW5kc3RyZWFtCmVuZG9iagoxNzIKMApvYmoKMTAwNQplbmRvYmoKMTczCjAK
b2JqClsKPDwKL1R5cGUKL0Fubm90Ci9TdWJ0eXBlCi9MaW5rCi9SZWN0ClsKMTAwLjgzNjY5CjEy
MS40OTAxOQo0MzAuNTgyMjgKMTUwLjI5MDE5Cl0KL0JvcmRlcgpbCjAKMAowCl0KL0EKPDwKL1R5
cGUKL0FjdGlvbgovUwovVVJJCi9VUkkKKGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL2RvY3MvdW5z
dGFibGUvbWlzcmEvcnVsZXMuaHRtbCkKPj4KPj4KXQplbmRvYmoKMTc0CjAKb2JqCjw8Ci9TdWJ0
eXBlCi9JbWFnZQovSW50ZXJwb2xhdGUKdHJ1ZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29s
b3JTcGFjZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL1NNYXNrCjE3NQowClIKL0Zp
bHRlcgovRENURGVjb2RlCi9MZW5ndGgKMTc2CjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAA
AQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwg
IyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAHVA+gDASIAAhEBAxEB/8QAHwAAAQUB
AQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEG
E1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW
V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLD
xMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAA
AAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKR
obHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp
anN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU
1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD5UooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigD//ZCmVuZHN0cmVhbQplbmRvYmoKMTc1CjAKb2JqCjw8Ci9TdWJ0
eXBlCi9JbWFnZQovV2lkdGgKMTAwMAovSGVpZ2h0CjQ2OQovQ29sb3JTcGFjZQovRGV2aWNlR3Jh
eQovQml0c1BlckNvbXBvbmVudAo4Ci9MZW5ndGgKMTc3CjAKUgovRmlsdGVyCi9GbGF0ZURlY29k
ZQo+PgpzdHJlYW0KeJzt1TFOIgEAQFFnEsJYUJEo9FJBsKImka1sxMSwe/+TrGMsTPYGf9+7w8+/
uwP+B8MwAknD8F35uFhO0z2QM03LxfhV+rhcrR82QNDDerUc550vVtun/REI2j9tV4th3vl6dzq/
XICcl/Npt56HPk6Ph/Pr2/UdiLm+vZ4Pj9Pc+f3meLl+3ICcj+vluLn/6nz7/Ov99hvIub3/et7+
7PwPEKNz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfT92zmQ86PzzfFy/bgB
OR/Xy3Hz1fn0eDi/vl3fgZjr2+v58DjNnS/Xu9P55QLkvJxPu/Xys/Nhsdo+7Y9A0P5pu1oMd/PQ
V+uHDRD0sF7NO/8c+rhYTtM9kDNNy8U473wufRiBpOG7cqDuLzczkMMKZW5kc3RyZWFtCmVuZG9i
agoxNzYKMApvYmoKODE4NwplbmRvYmoKMTc3CjAKb2JqCjE1NjgKZW5kb2JqCjE3MQowCm9iago8
PAovRm9udAo8PAovRm9udDQKMTQKMApSCi9Gb250NwoyMwowClIKPj4KL1BhdHRlcm4KPDwKPj4K
L1hPYmplY3QKPDwKL0ltYWdlNQoyMQowClIKL0ltYWdlMjkKMTc0CjAKUgo+PgovRXh0R1N0YXRl
Cjw8Ci9BbHBoYTAKMTAKMApSCi9BbHBoYTIKMTIKMApSCj4+Ci9Qcm9jU2V0ClsKL1BERgovVGV4
dAovSW1hZ2VCCi9JbWFnZUMKL0ltYWdlSQpdCj4+CmVuZG9iagoxNzgKMApvYmoKPDwKL1R5cGUK
L1BhZ2UKL1BhcmVudAoxCjAKUgovTWVkaWFCb3gKWwowCjAKNzIwCjQwNQpdCi9Db250ZW50cwox
NzkKMApSCi9SZXNvdXJjZXMKMTgwCjAKUgovQW5ub3RzCjE4MgowClIKL0dyb3VwCjw8Ci9TCi9U
cmFuc3BhcmVuY3kKL0NTCi9EZXZpY2VSR0IKPj4KPj4KZW5kb2JqCjE3OQowCm9iago8PAovRmls
dGVyCi9GbGF0ZURlY29kZQovTGVuZ3RoCjE4MQowClIKPj4Kc3RyZWFtCnictVfZchM7EFVV3vTI
A19AVQiLon15hDKJHVI32Axx2B4olqQohxDgH+733D+8Rz32eOJoEsfYnppxq0dqSWdOd6svuRKS
5+tpLVjp8P/5nF9yKaRUyUcnLfVYbKNT/jvnxrvgJQ2fzBtaumCzMOELjfw842P+A5Pka/fZ5OfZ
J8lPf9fz8F+nK1k+498e8SGuyxWHjx/RmlrDgEvTo9UZW98dnH86/ep474KmHNK4mObjVNBRB6E8
RC/riaP2V4YbWY9v46AzDvljzG5Cw3iltIi2vatGdxdshjeArqIMUeDzOmW9EzSZDTFYIU2jm7R0
KpoQEymbsS3dlUlNnFFtLhHPZo38b4OwNibtuDIgYkghzcjognY2SQcxKuejN5CMMlC7vPjnFWxU
v/ju3sWPP5abIEz+aV59u0pyZYVLUfnETRLRpJQ8r2ouV1/4Q/bvDq++8xfVHJcF0xp7v2YVtmSH
QcN67A0bsy02YgM8j9EesD40Hz6guQcxvz6E8hCtHskjNrxtHd1bNDICx6R1eUWN4U2AmrRQ0vu1
YVq0tw2E3uLeB3b7wPCQDfG8T2hm/PrsAAi+gb7PjlfHUYOpUYLYxVWsDqMubNY5oaVRRP0oVFzc
8n+3bUNF4el3zXQM+QsVrUri5j/Exi1IfVaxE8CWpVe4h9DfDmBpP9ohHARvOvazMnjad21TyZRT
lLSYMngRQPt0NxYqUzPBXLedw1GH2cfA64C9BH5HQOwt7iPIA+A4BB2nzgycjyCNl6Nk9yZ1CCJF
62N5MZvipNZ5cEpxrZwsWzVg3whufULorZmVyGHG2ejLc2+WldklErFrnaQsWvXsNXDaa5JKDowj
4mMfbzKqPbRmoXNMKWgA3d7fsROACpwOYiyualPkNFIL64xeLznLVrczQOTww7UHzCSUMdKXZ94s
NY2FAn30erlZNvsESL2mYDlDrDnzANN9SkY9tI/+KlD6CE/XKZQXsdEzkElShHBXR7/pXFmw58rc
A4LvCLuchF5Am139GNeIwkF9Otqf9hpT2hoTp5fhbefecWgX0QddXOpGsbbWoBRJya0L7LLBbcLv
pMF5i7DL6PbZ+2mwvcrjAaWxVws961BbHwfqoJx9IY9YNnZ0YuKt7lr+6qEwGCrLPOXKO9ksIoyK
eDqRU0og2HlbsnlL0bhEEUvVuM0F6TnXyBLaCGSlRjlpKZ0zqJ19q4ptq1YtYqPmyaP4ssFNS9gi
TqGcDMjrrQjtmPX+Rqe/x7Z2Mjkkej0ghz8has0JWVefEW/6O/wjrw5WY4SDlyA7qWvrW/7r5et/
ySxtiwplbmRzdHJlYW0KZW5kb2JqCjE4MQowCm9iago5ODcKZW5kb2JqCjE4MgowCm9iagpbCl0K
ZW5kb2JqCjE4MwowCm9iago8PAovU3VidHlwZQovSW1hZ2UKL0ludGVycG9sYXRlCnRydWUKL1dp
ZHRoCjEwMDAKL0hlaWdodAo0NjkKL0NvbG9yU3BhY2UKL0RldmljZVJHQgovQml0c1BlckNvbXBv
bmVudAo4Ci9TTWFzawoxODQKMApSCi9GaWx0ZXIKL0RDVERlY29kZQovTGVuZ3RoCjE4NQowClIK
Pj4Kc3RyZWFtCv/Y/+AAEEpGSUYAAQIAAAEAAQAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoU
Dg8MEBcUGBgXFBYWGh0lHxobIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoT
KBoWGigoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AA
EQgB1QPoAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIB
AwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBka
JSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SV
lpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX2
9/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAEC
dwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4
OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQAC
EQMRAD8A+VKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//2QplbmRzdHJlYW0K
ZW5kb2JqCjE4NAowCm9iago8PAovU3VidHlwZQovSW1hZ2UKL1dpZHRoCjEwMDAKL0hlaWdodAo0
NjkKL0NvbG9yU3BhY2UKL0RldmljZUdyYXkKL0JpdHNQZXJDb21wb25lbnQKOAovTGVuZ3RoCjE4
NgowClIKL0ZpbHRlcgovRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnic7dUxTiIBAEBRZxLCWFCRKPRS
QbCiJpGtbMTEsHv/k6xjLEz2Bn/fu8PPv7sD/gfDMAJJw/Bd+bhYTtM9kDNNy8X4Vfq4XK0fNkDQ
w3q1HOedL1bbp/0RCNo/bVeLYd75enc6v1yAnJfzabeehz5Oj4fz69v1HYi5vr2eD4/T3Pn95ni5
ftyAnI/r5bi5/+p8+/zr/fYbyLm9/3re/uz8DxCjc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM5
9Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6d
Q5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jT
OfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+
nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po
0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqH
Pp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz
6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06
hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cn
c+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59
Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQ
p3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQO
fTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n
0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0
Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP
59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6
dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86h
T+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc
+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/O
oU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTp
HPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn06Rz6dA59Ooc+nUOf
zqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1Dn86hT+fQp3Po0zn0
6Rz6dA59Ooc+nUOfzqFP59Cnc+jTOfTpHPp0Dn06hz6dQ5/OoU/n0Kdz6NM59Okc+nQOfTqHPp1D
n86hT+fQp3Po0zn0/ds5kPOj883xcv24ATkf18tx89X59Hg4v75d34GY69vr+fA4zZ0v17vT+eUC
5LycT7v18rPzYbHaPu2PQND+abtaDHfz0Ffrhw0Q9LBezTv/HPq4WE7TPZAzTcvFOO98Ln0YgaTh
u3Kg7i83M5DDCmVuZHN0cmVhbQplbmRvYmoKMTg1CjAKb2JqCjgxODcKZW5kb2JqCjE4NgowCm9i
agoxNTY4CmVuZG9iagoxODAKMApvYmoKPDwKL0ZvbnQKPDwKL0ZvbnQ0CjE0CjAKUgovRm9udDcK
MjMKMApSCj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9YT2JqZWN0Cjw8Ci9JbWFnZTUKMjEKMApSCi9JbWFn
ZTMwCjE4MwowClIKPj4KL0V4dEdTdGF0ZQo8PAovQWxwaGEwCjEwCjAKUgovQWxwaGEyCjEyCjAK
Ugo+PgovUHJvY1NldApbCi9QREYKL1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+Pgpl
bmRvYmoKMTg3CjAKb2JqCjw8Ci9UeXBlCi9QYWdlCi9QYXJlbnQKMQowClIKL01lZGlhQm94ClsK
MAowCjcyMAo0MDUKXQovQ29udGVudHMKMTg4CjAKUgovUmVzb3VyY2VzCjE4OQowClIKL0Fubm90
cwoxOTEKMApSCi9Hcm91cAo8PAovUwovVHJhbnNwYXJlbmN5Ci9DUwovRGV2aWNlUkdCCj4+Cj4+
CmVuZG9iagoxODgKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAoxOTAKMApS
Cj4+CnN0cmVhbQp4nCvkMtQz4AJBXQjDxMAUSCfnchVyGegZGBhamlmYGpiAVaDzgYpAVC6XsZmp
uZkBWHsOgmNkYGpuAmLkcKFxQGQGVzhXHtASENR3zCnISDTgSi+G2MNVlE6WyRlcaVpcgUBYSKb2
cC2wm5C0AcMFrgJJMdDr+p65iempxoZcLvlgOyEQALNuPusKZW5kc3RyZWFtCmVuZG9iagoxOTAK
MApvYmoKMTM4CmVuZG9iagoxOTEKMApvYmoKWwpdCmVuZG9iagoxOTIKMApvYmoKPDwKL1N1YnR5
cGUKL0ltYWdlCi9JbnRlcnBvbGF0ZQp0cnVlCi9XaWR0aAoyNTAwCi9IZWlnaHQKMTQwNgovQ29s
b3JTcGFjZQovRGV2aWNlUkdCCi9CaXRzUGVyQ29tcG9uZW50CjgKL0ZpbHRlcgovRENURGVjb2Rl
Ci9MZW5ndGgKMTkzCjAKUgo+PgpzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAYEBQYF
BAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUo
KSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo
KCgoKCgoKCgoKCgoKCj/wAARCAV+CcQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAEC
AwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx
wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1
dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ
2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QA
tREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaH
iImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq
8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDi6KKK+cPHCp4CNp9agpVYqcik1cCxIm4e9V6sLIrexqKU
YbI6GkuwIjLDtTSc0EYNWIIAy5Y8e1U2kMrVatZOdp6Go54vLPt2qNDhqT95AalQTRbnUgdetTKc
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
of4uRRfxlZd46N/OtZ/vKan1RMfdm4lu3YXFttc5PRqz5FMblT2NPspfLmGThW4NWr+LcnmDqvB+
lav99S5uqJXuTt0ZNayi4gKvjPQj2qhPEYZCpz7H1ptvMYZAw6d/pWlOi3MIKnJ6qa1T+s0/7yJf
7uXkws5xNHsflhwc9xVK7gMD8ZKHoaiDPFJkfK61qI8d1DyOO4PY1UZLEw5JfEhNeylzLZjLO5Eq
7JPvj9arXtr5ZLxj5O49KgmjeCTB69Qav2tyJl2v9/HPvSU1WXsqvxLYGuR88NiK0u84jlPPZqLy
13ZeIfN3HrUN5amMl4/uenpTrS7xhJTx2as+f/lzX+THy/bpjba7MfyS8r69xU9zAk67lIDY4PrS
XdsJRuTAf+dU4Z3t3KODtzyPSs5Nw9yrqu40ub3obgkslq+xwSnp/hVv93cxjuP1FKwjuY/UevcV
RkjltX3Ifl9azk3TXeJStPyYrRy2rbozuWp4rhJRjo3oaWG5SXg/K3pUVxagndF8p9Ky1iuanquw
99J6Mbc2aSK20Dnqp6GuR1Xw0pYtafun7o33T9PSurjuWjbZOD9fSrDCOdOzL61i7S1hozaFWdJ+
R5HeWkkLmO4jZGHqP5VSeJl6cj2r1XUNMjuYyksYlj64PUfjXI6h4emjJazPmpn7hOGH+NXTxLg7
S0MsXl+FzFc0lyy7r9e5zkc/Z/zqcc1FJCMkY2sOopsJZG2P0PSuxSjLY+Ox+UYjBazV491t8+xY
qOdN0Z9RyKkooWh5RRRC5wBViOADl+TSvNHHwSMjsKkQ7lBxjPNU5MYkrbE9+got7YY3SjJPOKiD
h7lAT8oPH1q/UybirDSEZlQZYgChWVxlSD9KpX5PmqO22mWrFTIR/cJpcmlxlzmQseiLwPc0rbSi
4UZ+nSnQjbEoPpSqmGz27VNwGoSkhRuVPKn+lOeRE+8wBps38Df3WBrOuCTPJn+8RTjHmHsaqsGG
VOR7UVUsiBEckD5vWik42dguefHA5NNMg/hBJpFUty5/CnEhR2FeudgBnP8ACKMv6Ck81fenqwYZ
FICM7t4BPX0qWmf8tR7Cn0MBRRSAj1H50tIAooooAbKuVz3FRr9xvwqc8jFQ4wHFNPQAiGWz2FTi
mRDC59aeKUmC2FooopAFFISB1IFLQAxywYYPWlzJ6Ckl/hPvUhOBmmAzc/dRQJP7wIo8xacGVuho
+QgBDD1r6i+GWnxab4F0eOJCjSwLcS7updxubP4nH0AFfM2lWa3mr2NvtLLLcRoygdVLAH9M19fR
oI41RRhVAAHtXp5bD3pTOvCx1bHUUUV652hRRRQAV41+0JrEgj03RreYBH3XFygznjAjB9s7zj1U
V7KSACScAV8o+O9XGt+LNUvYJfMtnlKwtkHKLwMEdjgkexrhzCpyU+VdTmxU7Qt3MHnAA60YZCDi
kAIII7U/cWPI6V4h54Nzgt+VNyvTtSxrvbJ6CpJcbDml5Ab3gTxPceFddivIBvtpWWO6jxndHnkj
/aAyR719QabfW+p2EF7ZSCW2nQPG+CMg+xr486KvrXpXwd8anRtSbS9WuAmmXHKSSvhbdx9eit09
iB6mvQwWJ9m+SWz/AAOnD1uV8r2PoKigEMAVIIPIIor2j0AooooAKKKKACiiigAooooAK898dfDm
HxFrlpfWsqWe8lb0qvLrjIZR03duexz2wfQqKzq0oVY8s1oTKCmrMzPD2h2GgaelnpsIjjUfMx5Z
z6se5rTooq0lFWQ0raIKKKKYwooooAKKKKACiiigAooooAKKKhvLq3sraS4vJ44LeMZeSRgqqPcm
jYCavPPHvxHtdFLWWjtDd6iGxJnJSIY7kdW6cfnXKeMviDqXiO6l0XwjbTyQOpRpIY2aaX5uq4Py
JjGSfXqOp6rwH8NLTQJo7/U3W81JclRj93GTjkA9WHPze/SuGdadZuFD5v8AyOZ1ZVHy0/vOe8G+
ALzXbsax4vkneOQLIkbv882f7/dQOPl4/LivYLW3htYEgtokihQYVEGAB9KdPNFbwvLPIkUSDczu
wVVHqSeleV+NPivHbStZeGES5uA+w3LrvjPbCAHLH0PT61SVHBx1ev4sr3KC1PRde1zTtBs/tWrX
SW8ROF3clj6ADkn6V5V4k+ME73jWvhq0Ro2G2OadSXdv9mP+hyT7VS8PfDzXfFUsep+KLy5t4nbJ
jnVvPYd/lIATOB2/CvV/C/hXSfDVq0OmW5DOdzyyHc7ntk+3oMVHNiK/w+5H8Sb1au3ur8TxPTfh
t4m1u4a7uoYbJbh2ld52wcscn5Bzzmu/0f4P6JaMj6hc3d/IMFkZhHGT7BecexJr0qirp4GlDVq/
qVHDQjurmdZaFpNjEkdpptpEicqFiXj9K0aKK60ktEbJJbBRRRTGFFFFABRRRQAUUUUARXFtBcoF
uYY5lByBIoYA/jXK+I/h5oOuN5jQNZ3B6y2mEJ+oIIP5V19FROnGorSVyZQjJWaPCPEnwp1WwnaX
R3Go2gyQrYSVR2BHRj7jH0FeeToY7l4nUpJGSroRgqR2Ir66rnvFnhHS/E0MYvoik8RJSaLCuMjo
Tjkd8e1ebXy2L1pOz7HJUwia9w+YGOTU1v8AxVt+M/CeoeFr8RXatLavjyrpUwkhxkjqcEc8HrjI
rEt/4q8epBw92SszicXG6Y+f/V05Puj6U2f/AFdUg00JJAbb16ZFQldCNCu/+G/gex8UafeXGqNO
IkkEcYifbk4ySePcV5j9rlPQL+VfRfwZs5rTwFZtcfeuJJJxkEHaW4zn6V3YCgp1ffV0kb4aCnPU
rRfCXw7EpVWvcE55m/8ArU//AIVV4f8A717/AN/f/rV31Fez9UoP7CO/2NPscD/wqrw//evf+/v/
ANao/wDhUvh3+9ff9/v/AK1ehUU/qlD+RB7Gn2POm+EHhxjkvf8A/f7/AOtSf8Kf8N/377/v9/8A
Wr0ain9Vo/yoPY0+x5z/AMKf8N/37/8A7/f/AFqli+E3h6P7r3x+s3/1q9BopfVaL+yg9jT7Hn1x
8LfD6W8rbr35VJ/1vt9K+eym8lo1KoxyoJ5A7V9V+NdRbSvCmp3iECSOEhCcY3N8q9fcivmOysrm
7uEtbK2muJzwscKF2x64Hb3rysfCFKUYU1b+tDixUYxaUUUBC/oPzrZ8P6Pf+ILtrbSLdriRPvkc
Kn+8TwK9T8LfCWBY0n8RzNKzKG+zQnaFPcMw5P4Yr1KytLext0gs4I4IUAVUjUAAVVHL5z1q6L8R
08JKWs9Dyjw78IVeFZfEF7Kshwfs9qQAvqGcg5z7Yx616Tpfh7SdLgWKx0+3jVTkEoGbPqSec8Vq
0V6lLDUqXwo7IUYQ+FBRRRW5qFFFFABRRRQBQ1PR9P1SKSO/s4Zg4wSyDd+fWvIvH3wxmsrN7zQH
kuYIg0kkEhBdQBn5cfe+nX617ZRXPXwtOt8S17mVSlGotT5IsHBjKH7yk8Var0b4x+ChbNL4j0ob
EJUXMCIepON4x+Gfzryr7XKOoX8q+dxGHlSm4s8ypB05crLz/cP0ptv90/WqRaeVgWDbevTAq7b/
AHT9awasZjv+Wv8AwH+tOphIEwz3FPqGAopaQUtIQhOATWVIc5PrWqwypHqKypB+la0wGoMmn4FR
qcGnF/QVqA09aBSUooAcCRUi5bGByaiq1aDMq+wqXohELLzzwaAAOlajKGHIBqJreM9iPoahVAsQ
W38f0qEVc8pYydueVPWlFtHgfe/OlzK47FAqKeFO3IHFaCwxryFGffmiZd0TAUe0FYzGYg4plPcd
DTK1AKegplOU4oAkIBFRg4NOL8cU0daAL9ieXX8at1TsR8zn0GKuVzz3GgoooqABvuH6UL90fSkc
hY2J6Uq/dH0pgRBQ0zqehGKzZUMcjKexrR3bZ2J6dKLiBZwGBw3Y1cZcu4MzKVVLMFUZJ6VZ+xSZ
6rj1qxBbrACzHLetaOaWwgYGNEQHGBzj1px2TptkHzUiDzJckcU94QeV4rIRRmtZIySBuX1FQVph
nTgjj3pfNHdatTYylBbPKQSMJ3NXZGCqEToOKQyM3CinxRYOW61MnfVgPiXagz1PNPoorIAooopg
ApaQUtIAoopGOFJ9BQAtRz/6s1SkuD5h/WrMcnmwkd8Zq+VrUVyVApRSwX8abIW8wKpxkVDJA0yJ
tYDGetSKpSSME5wAM/hRZAO8uTHDUi4STLoN397FUbjeJ23Eg54+lXbaTz4cN98cH/Gm1ZXAZNcs
k+wKCv8AOpHAjkBHSnRONnzY46UpmXsCaXkkBAsMwut5Pybs9e1TQgM7MeTSiZT1yKSNgspAI2tQ
7sBZvvpUz/cb6VDN/rFqZ/uN9KgZFb8q2aCAs4AHDDkUW3RqQOGmLMcADimhMZHcw+YURce4HWlQ
qqmWTpn0pFEKSmRVO4/kKfIySoUfIB9Kr0ED+Xcw53EKD1pIgwQJEMKO5puxUVY4zkE5pt9J5aiN
OMjmhLohk3lyf3xmmiby1dpCTjiq1gHM2Rnb3qwoRxJ5mNh9Tihq2jEO85ZoSVyCDyDU6fcX6CoG
jWOJVj7n86LmXy1wOg4qbX0QdSzRWfbTsXPatClKNhhRRRSABS0gpaQgooooGRTrlcjqKRNs0RR6
mqF4iDuT8qpPoJmfNA8R+YZX1FRjk4HNagmYcOM0GYdlrRTfYCpBZu7AyfKv61bZljTZEMdqTMkn
HQflUscIXk8molK+4EDoZrdlz8wORms+tJT5UpyOKSe0Eh3xsAT19KqMrbgZ1S20fmzKp6dTUosZ
CeSoFXIYkt4yM9eSTTlNW0AVf+PhvpT5v9W1RRNunJ9qlm/1bVkHUjlhEqDHDAcGqBGDg9a1E+6P
pVO+XEob1FVTl0EytRRRWwhaVQWIA6mkqe3Xkse1S3YCwowAB2psn+rb6GmvMq9OfpUDys/B4HtU
KLEWLbMdvJIOv+FVKtxEGzcDqM5qpTjuxhRRRVgAq7DhLNm/vZ/wqmgLMAOpq3eEIiRL2qJauwII
syWbqOo//XVSrNk+2XYejVFOhjlIP1FJaOwEdFFFaAFW1w9kc8laqVbiGLKQkjmomAW3+r/Gpapo
7J90/hUyTg8Nx71LiySGVdrkdqZVmddyblwcelQxxvIQFU/XtVJ6XZpTpyqSUYK7GinxxtIcIM1b
js1Xlzu+nFOmuoLdcFlyP4QeaylW6Q1PpsBwxWrNOu+Vdlq/8l+I2KzA5lOT6DpU0s0cC5YgewrL
n1KSTiMbF/Wqm4tyxJPvUezlPWbPtsDk1HCRtCNvzfqzRmvmbiMYHqar7i3LEk+9NgheTGAQPU1e
jgSMAuQSPXpQ+WGiPUtCmrIiiiZ+g49atpGkQyxz9aie4A4QZ96iLFjljk1m1KW5L5pblsz9k6et
NBJxnmmwxM3bA9TVuNFjGf1NZyajsS2o6ISOInluBVkYQVAZuy/nQpJ9zWTTe5DTe5NuJ+lPQE01
E9amyBWT8iH5D1GBTxUQbP0qRKzZNiQU8Gox0qRayZLHqM1KvAqMUuc1mySTOfpTkGaYgz9KmGAK
zkQx4wBTS2TTSc05FyfaotbVk2sSRrk5PSpi20UzIVaYTk5NZNczI3HdTVi3TA3GoY13HnpU7PtX
3NRJ62RMuyFmf+EfjTFGSAKjzzVq2T+I0WE/dRZjAjTHYc1XJ3Ek96dO/wDCPqajWnfoZxXUs2q5
fPYVLctwF/GlgUIn6moHbc5PrWt+WJl8UrhWhGAkQz2GTVKFd0iirdw2Ij78VrS0TZNTVpFTvk1a
sh87H04qqKt2X3WPqa1pfEFTSIl2f334VGn31+op1yczGmx/6xPqK0fxEr4S/dH/AEd/w/nVEVdu
v9Q34fzqkK3rP3jOl8JpWRzAPbiqUw2yuB2NWbBvlZfQ5qG7GJ29+a2k700yY6TaJNPbExHqKk1B
cMjeowaqQtslVvQ1o3a74G9RzWtP3qTj2Jn7s0yjE5R1YdQc1qXKCaA47fMDWQK07CQNDt7rWmGk
neD6irK1pLoZ4rVtJfNhGR04NZ90nlzMAMKeRS2kvlSgn7p4NOhUdGpZhUjzxuguI/KlKnp1H0qz
YT4PlseD92pLyPzYsjqvP1rNBwQQeauTeHq3WxK/eQsy/qEP/LVfo3+NVreYwybhyOhFaFrMJovm
5I4NZ9zCYZMDJU9DV11ZqtTJpu/uSNKZEuIRjvyprKYNFJg8MpqeyuPLbYx+Q/pVq7hEyZH3h0Pr
VVLYiPPH4kKN6b5XsLbXAnTBxuHUVSvLfyyXT7h/SoFZo3BGQw9a0oJ1nj5xnutQpqvHlnuhuLpv
mjsVbS62fJIfl9fSrF1Asy56MBwaqXdt5XzJkp/Kktbny/kflSevpWSqcv7uqW439+BErSW0p7Ed
R2NX4pUnTPGe4NE0aToOh9GFZzo9vJ1II6Ed6zblRfeI9Knkya4tSvzRcj09KS3usALL07NU0F0s
nythW/Q024tg+WT5W/Q1nJfbpBf7NQkljSZMHoehFUXSS2bcpyuaSOWSBirA47g1cjkWVcgj6Vk3
Gp5Mqzh5ojhuFkwDw/pSTwJJz0PqKjntRyYuD6VFHcPH8sgJA/OspSt7sylG+sDL1XSIboATLtbP
Eida5LUdLuLElnG6LPDr/X0r0oMsi8EMDVWa2ByU/I1KnKn8OqOinXt7sjzIH1qpd3B3FE4x1Peu
z1DQIpCWt8wuTkqeVrmb2xkiOy5iZCDwccH6HvXdh8XCbPFx3D1GvephXyy7dP8AgfkZUKGSUL69
TWjJkR4Qe1NgiWIcEknrmpa63NSd0fH4nDVcNPkqxsyh0PoRVlbxwuCqk+tPkjVxz19aqyIUbB/O
q0luYpiO7OxZjk1Zt0K28rnuvFQQR+bIFzgd60nQGIoOBjAqZytoMcv3ePTisq0klN0o3Mcn5gT2
rTgJMS564p+B6VCly3Qxk/8Aqj74FUr6PbJuHRv51cmPMY9Wp0qCSMqe/eiL5QMoEgcE0UrqUYqe
oorcg4nIxntURICmR+fQU4xjsSKSRNyBWbFd6sd4yCdnk2kDB9O1TRfxfWo1VI8iPljxmpUG1cUS
t0AQf60/SiVtq0R85Y96iu2wuKEtQIFkYyD0J6VfQ5UZrNjIU5PXtUnnt26Vco3Av0VFA5dealrJ
qwDqicct74/nUtRv1P0H86EA8cClFFApDFoprnapIqk077uDTUbiFndt/Wp7aTcMGqjuHHIwaktm
2vWjWgFuX7lPb7jfSmuNymljO5Bn6Vl0AieTyoVIAJPFJE4mBBADinEAZRxlT0ojhVJAyNkY6Gr0
sB3XwXshqHjyzLjItY3uT+GFH6sK+lK8E/Z8snfxXqd6D+7hs/KYe8kikf8Aopq97r2svjalfuzv
wy9wKKKK7joCiiigDnfiJqB0vwPrdykphlFq6ROpwRIw2pj/AIERXymFbaMA4HTFe+ftA3ckXh3T
rRP9Xc3Xz/8AAVJA/OvDK8TMal6vL2R5+Kd52KwJFKGqxgCmSKCCe9cHMc1hiMVBwKT5mOWoQ9qF
PzDd0pgOVwG56UOQ2444PH1pJNpI2fpSgZIUUhPse+fBzxnJq9odI1acyajCC0UjYBlj9Pqv8sV6
dXyDaXNxZ3EdxZzyW9xGcpLGcMpxjIr6X+H/AIqi8VaItwdkd7EdlzEvAVvUDJO09v8A61exgcV7
Reznuj0MPV5lyvc6eiiivSOoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK4
H4hfES08ORS2enNFdayMYjYFo4vUuQRzj+HOeR061FSpGnHmk9CZzUFdnSeKvEuneGtPe51CZA+0
+VDn55W7AD+vavnnxv4y1DxXeEzs0NgrBorQNlUOMZJwNx689qx9a1e+1u/a81S4e4nIwC3RFyTt
UdgCTxVGvDxOMlW91aI86tXdTRbHrP7P9/CmoanYOkYnlRZo3I+YgcMv05Br2HVtTs9IsXvNSuI7
e3TALyMAMnoPqfSvm74Z63a+H/FsN9ftstvKkjdgpOMjPQe4x+NaWo6trnxO8TLp9riK0GZI7bfh
Io1ODI/q3zAceoA7munD4pU6KitZX0RrSr8tNJblrxB4n1/4i6l/ZmhW8sVgR/x7ggbhn70rdh7d
PrXpXgH4fWXhmFZ7vyr3VCdxnKcRf7KZ7e/U+3Stzwn4Y03wxp4ttOhAkYDzp2H7yYjPLH8TgdBn
ituuqjhmn7Sq7y/I3p0bPnnqwooorsNwooooAKKKKACiub8Z+MdN8K26m8YyXUgJit4+WbHc+g9z
XkOr/E/xDqastvLDp8JJwLdPnx6Fmz+YC1yV8ZToaPV+RjUrwp6Pc+gqK+Y/+Et8Q/8AQb1D/v8A
GpIPGfiOCVZE1m8Yqc4d94P1B4rm/tWn/K/wMvrcex9MUV5f4E+Jv9o3Udh4hEMNxI22K4jXbGTj
gNknBPr0+leoV30a8K0eaDOiE1NXQUUUVqWFFFFABRRRQBS1nS7TWdOlstQhWa3kGCD1B9QexHrX
zh4s8Nz+F9bmsZmaWEjfBMygeYn09QeD/TOK+nK5X4j+G18Q+H5Vhjj/ALQg/eW8h4PHVc+hGePX
B7Vw47De2p3iveX9WOfEUueN1ufOU/8Aq6IjlRROCEIIIIOCD2qOFsMQe9fOWujzCWQ7Y3ZRzg19
W6baR2GnW1pCAIoI1jUAY4AxXzd4Lsk1DxbpNrN/q3uAzDGchQWx9Dtx+NfTVexlMNJT9Ed2Djo5
BRRRXsnaFFFFABRRRQAUUUUAcz8QNCu/Eej2+n2UyQhrlHmd+QIwGPTuc7eKt+FvDGneG7MRWMQM
zACW4YDfIeep/HpW3RWXsYe09pbUnkXNzdQooorUoKKKKACiiigAooooAKKKKACiiigCO5giureS
C4RZIZFKujDIIPavmLWdPl0nVruwuRiW3kKZx1HZh7EYP419Q14b8ZYPL8XrKFULLbIeOpILAk/h
j8q8rNad6an2f5nJi43ipdjgZThDRb/dP1qOZstj0qS3+6frXhW0POIbxtjxtnGCP61aBBAI6Gqe
odF/z606xl3J5Z6jp9KbV43AtilpBSO6ouWIAqBDqqXMPJdBweoqSKfznIQfKOpNT003FgZBT0pA
prSe3jbtj6Ugtowe5+prX2iAohQB71HjB5rVaJGXbjA9qrtavnjBFCmmBUQZNaFmmFLEcnp9KZFa
nOZDx6CrY4HFTOV9EAUUUVkBHJ1/4CalHQVFJ1/4CalHQUMYUUUUhGbPHscr+VQVrSxLIOeCOhqq
bV/9mt4zVtRFZBzzSlPSrsNrg5kOfYVM8KP1UZ9RSdRXAy9pqSOMk4UZNXRax+rfnUyIqD5VApOp
2GNhjESbep7mpKRs7Ttxu7ZqGK5Rztb5X6YPrWer1AnoopGIUEk4ApAV71wIwndjVlfuj6VlSymW
bcemcD6Vqr90fSqkrJAQlQ0zA/hRtdDhc49qa5xMT6GrIOQCKL2EyDzH9P0o2vIec4qeilzBYRFC
jAp9Np1SAU0op/hFOooAQADoMUoooFIBaKKKACiiimAClpBS0gI5pRGPeqxuwcgng+1S3cZdc9sY
rOeNk6j8a1hFNCHzBS25TnPWrFiwGAfpVIVLA22Qe9aSWlgNCNvL3gjOBmoopWuATtwy9MVI/IEg
/GnMVjgZ4kHTOAKxAQ+XKMSgZHrSwRRxuxjYnI6Z6VFbSGdXMijjuOKmt14LetD00AVYlXljmnjY
ASNuB3qnK3myPuY+WpxiogqODsJHqKfK3uwLwkhcgBkJPah4QclePaqjoNpKjBHIIq5C+6BXYjkc
mk1y7BuRlizKG6irL/cb6VXd0eQbGB9cVYf7jfSoYyqpYgoo61MkKry3NMgdFyGZQT6mlvJCsPyn
ljtzVa7IT3HCWEHAdM9OtPYJ/Ftqj5S7cYHTrTCIw2HJZvU0+TsK5e8kbgVOB1pkkMTylpGyfTNR
2zlJRGTlCOM9jUsqgSKT0PWlqmAFlVdkI6+lNnt2eJVQjIOTnvT50YRHyRhvbrSRF44B5pJfPc5o
T6oYkKFCkZOdveqt42X9utWx8sRY53NxWdI25yauGruIktyqgsxAz2qyLwZ6j8qoU9ImbtgetU4p
7jNaN965p9RW67I+alrB7gApaQUtSIKKKKBhSikpRQAEA9QDSBVHQClooEKKWkFLSAZLGHHofWoB
5kfGDirVFNOwFfzJDwB+lAjdz8xx9asU122qSad+wiKIATEDoBUs3+raobf/AFn4VNN/q2oe4xU+
6PpVS+bMir6CrJcJGGboBWc7l2LN1NVTWtxMbRRRWwhaduOMZ49KbS0gCiiigAyR0NFFFABRRTo2
KOGGCR60gLVrH5QMsnHHANRAGaUueBmmSTPL97p6CrMJzGCBio1WrBkU6lW3rUzqLmEOv3x/nFKx
ABJ6VUSRo2yhx7UldiTGkEHBGDSU+WUysCwAx6UytEMKUdKSlFAgp8cbSHCDNS21uZfmbhP1NT3F
1BZKFbgnoqjmsZ1LPljqz6DKsgq41KpPSL+9/wDA8xYLXZku27PbtSXN7BbLgsCw6KOtY91qs82Q
mI0/2ev51QJLEkkknuaFQlN3qM/QsDk1DCRtCNvz+bNG51SWbiP92vscmqgJJyTkmmwxtK2EGa0I
LRVwX+ZvTtWj5Kasj1UoU1ZEEMTyY2Dj17VfhtUTJf5jTXuI4RtUZI7CqzzySHk4HoKyfNPyQvek
XnuUTATDfToKgaRpPvHNV4wSQByavw23GZPyFS1GArRgMiRnPyjNXIoAv3vmNLlIk7KKhedmyF4H
61i25bGTblsWmlVPc+lRl2fqePSq65J96uRQ93/KoaURNKIRqWxjp61bjUKPf1powo9AKZ5mSQOB
WTbZm22T7wOlAOTzUS88CrCLjr1rN6Ceg9F9akFMBwKUHJrJkbkq1IKjWnCs2SyQVIgzUaVIOKzk
SyQcUZzTM5NOUZNZ2JHoM1OMAe1MUY6UjNngdKyepD1HFs/SlQZOKYKsRrtHvUydkJ6EqgKvoKiZ
txzQ7Z4porNR6shLqSRrvYCruQiewqC3XC5PU0Tvk7e1K5Evedhu4scnrU1uNzjjgdagFXbZdqZ7
nmnHcU3ZE0zbYz6niqwp1w2XAHamCqb1M4qyLVoMsT6U+6blV/GltxtjHvzUMzbpD7cVunaNjJaz
uNFX7YYhHvzVCtGLiNR7VtR3FV2KchzI31p0X+sT6io2OWJ96fF/rE+opp6jtoX7n/UN+H86oir1
z/qGqhXRVfvGVLYu6efmf6Clvh86H1GKisWxNj1FTXw+RG9Ditou9Ih6VCpWtCfMgUnuOayav2D5
jK91NXhpWlYKy0uU3G12X0OKnsZAk3PRuKS+XbNnswzUAOCCO1JN05+g/jiad+m6LcOq1n5rTiYT
QAkZDDkVmyDZIy+hroxCu1NdTOk/svoadnL5kWGOWHFU7uLypeBhD0plrL5UoPY8GtC5i82Mj+Ic
j61qn7albqiH+7n5MoW8xhk3dR3FaMyCaLbng8g1kHIOD1q7YTk/um/Cpw9W37uWzKqw+0ioylWI
YYIq7Yz5xG55H3T/AEovody+YvUdfes8MQQQcEVF3h5jsqsTQvoNw8xB8w6j1qjHI0bhlOCK0bWf
zkwfvjrVa9g25kQYXuPSqrRT/ewFTlb3JFuKVZo8jvwQaoXcHlncn3D+lRRStE2V/KtJHSWPI5U8
EGp51XjZ7g06TutijbXJiO1uU/lV1lSWMZwynmqN1B5R3L9w/pTILhojjqncVhGq4PknsXKCn70R
JoWhbnkdmxU0F1nCynn+9VklZU7MprPuIDEcjlPWomnTfNDYcWp+7LcuTxrKpz17H0qg6PA+ckeh
HenwXJQhXOU/UVcYLInIBU1nLlq6rcFeno9iCG5D8Pw386WaJZBz19arXEBj+ZeV/lRDcleH5X17
1k5/ZmXyfagMdXt24PHr61NFcK/DfKf51LlXXsVNVZrfnMf5VlJOOsdik1LSW5PJGrj5h+NZt9Yp
LHtmQSx9eR0qeO4ZeG5H61YVg65HIrFtS1W5S5qZw+o6JJEWe1PmIT9zHIH9ayDlWIYYIOCK9Hmg
VgSvBrG1HS4Zz+8TY/XcmAT9a6KWNlT0qfeXVpUcZD2deN0clTZEDrg1avbGaz5kwUJwGFVgfWvW
p1ozV0z5HMOHKtC9TDe9Ht1/4IWKbVcnrnFWarBjExPVD1A9asqQwBByDVy3ufOkcJIeRCOhyPoa
mqGTKyI46fdapWOASe1JjRHndcYxwgz+JqWooAdm5vvNyadI6xrljxQ97AVL0Dzh7rRSuplbc/Ho
B6UVsnZWIbOApkoyufSn0jfdP0r0Ud4IABlRjNJIc/KvU0iDMYAOKPLHYnNHUB4GBgVTuQxOSOlW
QShw3I9aeyhhzTTswM0damjhyeSD9KWaEg5UU2AkPgVpe60AuxpsFOoHSisWA6o36n6D+dSVG/U/
QfzoQElAooFIYMNwIqnLBg59au1Tu2bJqoN3EV2XacEj8KfECXBHakjjLEelXoowo6c1cpWAcmdo
zSf6t/8AZNDsQcLyaPLJ+8xNZ+oEhAI55FRqo8w4HApyJt/iOPShOr/WgD3P9ny2C6Lq10RhpLlY
wcdQqA9fqxr1evP/AIGxKngOKQE7pbiUtnpw2OPwFegV9DhI8tGPp+Z6dFWggooorpNAooooA8S/
aAvS+p6VYgnZHG0xB6ZJwP0Bryeu++OzlfHqAj5fsMXP/A5K4EHI4r5vGNutJs8ys7zYUjfdOKWk
YhRk1zmRAv3hQQN3NC8tQeSaskcCB0pR1yp5pWcbMY59PSmKCRkCkBMrg8Hg1v8AgvxFceGNdivo
C5hPyXES/wDLSPOSMHjPof8AE1zn3h709JB/FTTcHzR3RUZNO6PrzSdQt9V0y2v7Ni1vcRiRCRg4
IzyOxq3Xzv8ACvxqPDmpfYr2VRpV0+XZ2IEDYPzD68A/nX0NG6yRq8bK6MAyspyCD0INfQ4bEKvC
/XqenSqKpG46iiiug1CiiigAooooAKKKKACiiigAooooAKKKKACiiigApssiRRtJK6oijLMxwAKz
9f1vT9AsHu9UuFhiHQdWY+ijqTXz1448daj4oIVg9nYdBaLJuBPqxAGfp0FcuJxcKCs9X2MataNN
eZ1/xB+J5ulm03wu8iICUlvem4Y/5Z85H+8ffHY15KkG3g4x6CnwDCZ9aeTgE14NavOtK8jzpzdR
3kQS4B2r0FMoPWioRmWtM0+71S+is9Phaa5lbaqj+ZPYepr6c8EeGbbwroqWVuRJM3zzzYx5j9z7
DsBXI/BPwutjo41u7iH2u8XMBOCVhOMH2LdfpivTq9rAYbkj7SW7PRw1LlXO92FFFFeidQUUUUAF
FFFABWJ4y8QReGdAn1GaNpSuEjRf4nPCg+2evtW3Xhvx81Od9fsNKzi1ithc4B+87s68/QJx/vGu
fFVfZU3JbmVap7OFzzbUr651PUJ76+k826nbfI+MZPT8gOKihBLcVHUkTbTz0NfOSuzySxRTd6+o
qJnLnA4FZ2uO4sjb1Kj7pGDX0z8OdYOueD7C6faJlUwyADHzIdvTtnAP0NfMbHsOlfQ3wUt3h8B2
7SDHnTSyKPbdj+lelljaqtLZo6cI3zs7uiiivdPRCiiigAooooAKKKKAPmr4kaV/Y/iq/t1GIpG8
+PnPyvk/zyPwrlVBLADrXp3x5t2TxHY3JztltBGOO6uxPP8AwMV5vAvVjXy2IiqdWUV3PIqx5ZtH
ofwVsGuvFclyRmOzgLE/7THA/ka92ryr4A2sg0zWb5v9VPcLEnvsXJP/AI/j8K9Vr3MvhyUF5noY
aNqaCiiiu03CiiigAooooAKKKKACkd1RSzsFUdSTgVn6/rVhoGnteanOsMOdq56u2CQo9zg14J4w
8Yah4luHEjPb2BwFtFfKjHduBk1yYrGQw611fYxq1o0/U9O1/wCKWiaXcS29tFc38yZG6EBY9wPT
cTn8QCK5MfGPUJriQQ6TarEOm+VifxwK81mHyZ9KZZqBEW7sTXjzzCvJXTscLxNRvc9q0v4t2MjB
NUsLi3yQPMhIkUDuSDggD2zXpUE0dxCksLq8bjKsp4Ir5Sr1b4Fa0Zf7R0Y5ZIsXMZz0ydrLj0zg
/ia6sDjqlSp7Oprc3oYiUpcsj1qiiivZO0KKKKACiiigAooooAK8i+Oqj7XpDD75jkGfbIr12vH/
AI9vsutEPb94D+lcePV8PL+uphif4bPKCMEg1Pb/AHT9abOOhp1v90/Wvmm7o8ohvRnbmm2kWX39
AOlPvBllHrUrfuYDjsKL6WEU5p5dzANgZxxVYkk5JyfWpaREzKg7FgDWqsgNG1TZCvHJ5NTUUVzt
3AKKKKQBS0lLQAUUUUAFFFFAEcnX/gJqUdBUUnX/AICalHQUMYUUUUhBSikpRQAtFFFAC0UUUIAr
Nv4wku4dG5/GtKquoJuiBA5Bq4OzApRSOh+RiParsRM8TJIefWqarge9WbRtsuP71XJaXEQlNr4I
5BrTX7o+lVbtOVcfQ1aX7o+lRN3SYFaX/WN9alhbCHd0Heo5BmUgetSS4WILS6WBgZh2BpELSNz0
FQ1ZhGEz60NJIQ+l6DmkqOdsAD8alK4wabso/Gm+Y/8AkVJGgVRkc1JTukBAJiPvCpUdW6H86UqD
1ANRND3U/hS0YE9FV0kKHa9TggjI5FJqwC0UUUAApaQUtIArPuJsN8oGa0KozWrM+Rmrha+oMqDd
I/uauwQBV3NwO59afBbhBlhTseY+Twgq5TvsIUMzcRjC+9AR05BFJc7zCPIPf+H0pu13s9shw59f
rUBYmdswknrToeIlqvbxFIGUkEk54qaL5ocZ9RSa0GUxh3lwDsY8GljjCZOc0cw/JIMY6HsaZI+8
hEPXqa1JFZ2clY/xNMijVs7+o460oVo5AqfMWqylvGh3TYZjzjtQ3YZBZ/eP1Fab/cb6VVGzcNiB
RntVp/uN9Kym7sZmybfOG70qPZukPlYwOatr5f8Ay0QN7kUPbjBe2OPVatSsJ7kKSfNsfhqVolL7
jmo1jDqWZjn+VOilGz5zgiqa7CJYmAul3cDGB9as3AymfQ1VRTOyhR8gOS1Wrg5CqO5rOW6DoOy3
lgqOai8t2Odyk/Wp8hQATiqtnbtFIWLKRjHFSthkpY/dlHHqKr3Fv/EuOehq20kZby2Ybj2pq/u2
2Nyppp2EZilo244NXLWUMwyOe9Pntt3Tmkt7Yo2TVuSaAuUUUViMBS0gpaQgoopGYKMmgYtNaVV4
6n2qBnaQ4Xp6VLHCBy3PtVWtuIaZmP3Rik82T/IqwAB0AFFK67ARRzAkBhg1PUEyAqWA5FOgbcnP
bihpboCSq5dom25yKs1BcgYU9+lEd7AOE69wRTLhicD+HrUNWceZDx1FU0lqIjtv9Z+FTzf6tqgt
/wDWfhU83+rape4yteNiNF9earxRtI21alvOsf8Au1bt4/KjA7nrV83LEXUrtaEISGyQOmKqVo3U
ojQgH5j0rOqoNtaiYtLSUVQC0UUUAFFFFABRRRQACrFs3JX8arinIdrA+9S9RFi5bCbe5qtUk7bn
9h0qOiKsAUUUVQwp8Sb5FUdzTKdGxRww6ik9tC6XKpx59rq/p1L1/N9jsi0eMjCrmuZkcyOzscsx
ya6e7hF5ZlVIBYAqT2NYsdlsb991H8NYYeUYp33P2jAypqneP9LoUkRnICgnNXIbMAZlOT6A8VO7
xwrgkKOwFU5rt34T5B+tbc0p7aHZeUti888cKgH8AKqS3LyZHRT2FVB1qxBC8p+UcetCgo6sFFR1
YLVuC2eTBPyr79ant7dI+fvN6mpZZ0iHJy3pWMql9IkOd9IkkUaRKQvHqTTZLkLlU5Yd+1UpZ3lP
JwvoKEBJAAyaj2fWQlT6yJixZiW5NSwxs/Tp6mnwW/QydfSrQwB6AVnKfRESnbRCxRqg46+tSPIE
9zVWSfPCfnTVrPlb1ZHK3qyYuWOTUsSlj7UkMXd/yqyOOlZyfREyfRDlAHSnlgKiL44FIOayaIsS
g5qZBUca+tSis5EtjxT161GKeKzZNiUU7PNRg08Vm0Jjx1qZBio1pxbHSsnqQx7N2pBTRT0GTUvQ
WxLEO9SM2B7mm5xTCcnNY25ncz3HCpIhlvYVEKsxrtX3pTdkKWhMW2qTVfOST60StkgelJWaWhKV
iSMbnA9av7gik9gKrWq8FvXin3DYUL61S0MpauwwHJNPQZYD1OKiU1YthmTPpQtQloi7kKvsBVOr
E5xEffiqwNbSetjKC0uPQZYD1rRJ2oT6CqEH+tX61bmP7lq3pOybIqatIqCnxf6xPqKjp8f+sT6i
iL1LexoT/wCof6VQFX5uYX+lUK6Kj1MaWxNbHbOh98Vdu+YD7Gs+E4kQ+4rRlG6Jh7VtRd4NEVNJ
Jmf0q1YviUj+8KqA0+Jtkqt6Gopy5ZJlzV00Xr5d0Qb+6ao1qSLvjZfUVlV0V9JXM6L0sXtPk4ZP
TkUuoIflkHToaqW7+XMrHpnmtORBJGV7Gtqb9pT5SJ+5PmMrNadjKHi285Wsw8EipLeXy5Qc4HQ/
Ss6NTkkXUhzRJ76PbJvHRuv1qqDg57itWRVljKk8HvWSwKkhuCKqvHllddRUpXVma9vMJYg3fv8A
WqF5F5b5X7rfpTLabypAf4Twa0ZFWWMgnKkVrze3hZ7ozt7KXkZcbmNwy9RWpHIJoww6HsaypEMb
lW6in28xifP8J6iuelVdN2exrUhzq6FuoPKfK/cPSmwSmJ8joev0rSbbImD8ymsueMxPt7djSrRd
N80RU5c65ZGkrLKmRypHQ1n3MJiOV+4f0psExib/AGT1FXwVkTI5U0OSrR13FZ0n5GdDM0TZHI7i
tBWV0BHINUbmAxHIyUPeo4pWibI6dx61hGo6b5ZGkoKauiW5t9mWT7vcelQwzNEeOVPUVoJIsi5U
1Uubf+KMfUVFSNvegEJX92RYSQSLlarT24J3R9e4qsjsjZU4q5FMJB6N6VnzqasynFwd0U45GiJx
+INW45VkHHX0NE8SyexHeqLq0bc8HsawbcPQvSp6luaJZOTw3rVJw8L+/qOlWIrgHiTg+tSOAwII
yKzklLVDTcdGQRzq2A3DfpTpAGGCMioJ4COU5Hp6VCk7Jw3I/lWbk1oy1BPWIT2/B2crjkGsC/0l
XO62wj55VjxXTB1cZU5qOWNX69fWinVlSd4M1hNrc4N0eFyrqVI7GmKCCWjO1u/oa6+8tVkXbKgd
fX0rAvdMkh+aLMidfcV7GHx0Z6S0ZwZhk+Hx/vfDPuv17lNXEimOUYJGPY0m4zBYm4YH5/wphwQQ
3IpNxb5D1/iYdx2r0YtPY+Ix2WV8C/3q06Nbf8AmeYsSIu3Vj0/CowoDbjyx7monnVeFGaYbhuyi
rUex5zuyzRVbz39vyoo5WKxw1RynC47mnbj/AHTTACWyyk+lemjvHKzY+VeB60qsd2GGDS7j/dNN
fLEEKcikA9hkYNNjJGVPUUuT/dNNYEkEKQaEBIQCORSCMA5oDH+6aNx/umkA6im7j/dNLuP900AP
qN+p+g/nS7j/AHTSEE5ODQBJQKbuP900bj/dNAx9NdA3XrRuP9xqNx/uNSECoF6daVztUmk3H+6a
adxYZU7R2p+oCxrgZPU0522j37UmT/dNIclwxU4FHqAu5/7tIjfvD2zT9x/ummON38JzRcD6Q+CP
/JPrT/rtN/6MNd5XA/A7P/CvLTd18+b/ANGGu+r6TDfwYei/I9Ol8C9AooorY0CiiigD56+OwDeO
lB/58Yv/AEKSvO4jglT2r0P47l/+E8XaOPsMX/oUledYfduxzXzeJ/iy9Ty6q99krDKnHWq+c9al
zJ6UwIw/hrBaGdhVGBk0m7HQUpVz1FJsb0p3QWAHPBpyvsBGM0gRvSlKMe1F0FhoODmlcc5pzB2G
CtJtYDkcUXFYZXvnwN8SXWo6S2k3kVw4s1/c3JUlGTONm7GMrwAM9PpXDfDz4bXXiMxX2p+ZaaUG
Bxja9wvP3T2Gcc45B49a9/0rTrTSdPhstOgWC2hUKiL/AFJ5J9zya9TA0KiftNl+Z2YalJPm6Fui
iivWO0KKKKACiiigAooooAKKKKACiiigAoopHZUQs7BVAySTgAUALXH+OfHmneGIzArLc6qw+S2U
/d93I+6P1PYcHHKfEL4n+QZdO8MMWuFbEl5gFB1yqA9T79PTNeMfvHmMkrO7scs7nJJ9ST1rzMVj
1D3KW/c5KuItpA1fEWs32u3st5qM7yuSxRCxKxAn7qDsOn1xzWP1IHYVYcZUgVB5bf3a8bmbd2cL
d9WPaUDhBQod/vEgUih16KKXMn92lfsFhjxlfcVv+AtBk8Q+KLOzETSW6sJbkjgLGCM5+vAx71h5
k/u17t8DdDax0G41ScYm1BgFHpGmdv5ksfyrpwlP21VRexpRp880j0iCKOCFIoUWOJAFVFGAoHQA
U+iivpD1QooooAKKKKACiiigArm9c8E6FrmoNfalaGW5ZQpbeRwOnSukoqZQjNWkricVLRnGf8Ky
8Lf9A8/9/W/xo/4Vn4W/6B7f9/W/xrs6Kz+r0v5V9xHsodjjP+FZ+Fv+ge3/AH9b/GlHw08Lj/lw
P/f1v8a7Kij6vS/lX3B7KHZHHL8NfDCjAsD/AN/W/wAa6jTbG20yxhs7KIRW8KhEQdhVmiqhShB3
ikiowjHZBRRRWhQUUUUAFFFFABRRRQB45+0D/r9C/wByf+cdeUOG8nagySMfSvTPjzcGXX9PtBn9
za+aPT53I/8Aaf8AKvPdLtJr7UbSzUczyrFwM9Tivmcb72Ilbv8Aojy6+tR2Poj4Y2SWHgPRoo1w
XgEz8fxP8zfqa6io7aFbe2ihjACRqEAHoBipK+jpx5IqPY9KK5UkFFFFWUFFFFABRRRQAVW1K+tt
NsZry9lEVtCu53wTgfQcmrNcR8Y5Xi8D3AjYBnljXHqN3NZ1p+zpymuiJnLli2eMeONfvfFOo/bJ
y8USgCO1EhKRjnnHTce5rBs58/u3PPY1N+9qJrfcxYryfevlZTc7ubuzx23J3ZaYblIoRdqADtUQ
82giUjFZisRXc/WNDz3NehfAiyb/AISm4nJx5dq3H1YCvPVt9rAheRz1r2L4C2r7NZvJBwWihU+4
DM3t/Ev+TXbgta8Uv60NsOr1Ees0UUV9KeqFFFFABRRRQAUUUUAFeLfHk/aNW0yBXIMULsVxxkkY
/ka9prwX4z5bxuTGc7bSNTg9Dlzj9RXBmUuWhp1aObFP92cMgbyCrjDAY+tPt/un600iUjBp8KlV
INfOM80R13TLnsM0y4V5GCr90dSalbIfIGeMUjNJj5VGfc0kxDI7dF5b5vrTZpY04jVS3rjpTXjm
fhiMelM+zSe1UrdWImguVkwG+V/0NWazvscntUscVxGMKwx6HmiSj0Yy5RUatJj5lGfY0uW/ufrU
APpaZlv7n60u5v7n60gHUU3c3939aMt/c/WmA6im5b+5+tGW/ufrQA2Tr/wE1KOgqJgzH7uOKcGb
H3P1pAPopu5v7n60Zb+5+tADqUUzLf3P1pQzf3P1oAfRTNzf3P1oy39z9aQElFM3N/cP51HIbhj8
gVR+ZoSAld1RcsQBVQ3e6QgKCg9e9Me1mdsswJ9zQlpIvpWiUVuItKIZV4C/gMGo3tivMZOR2pgt
5AcjAP1qZPPU87WHvS22Yh7jzIDng/1qRfuj6U0lipG39acvCge1QMiAzcH25pWQyPk8CkZXEhZe
9DCU9adwaFxGg55NCTDoRge1M8p/Sjyn9KenUViwCD0NRXA+ZT7YpgjcHIGKcyyMAGpLRhYnU5UE
UtQKJFGB0pf3tJoZNQKh/e0v76lYCR0Djnr61ArNE2G6U/8Aff5xTWWRvvCmvMViwDkZFFQKJVGB
0pf3tAEwpah/fUfvv84pWCxNRUP77/OKP33+cUWGLM3AVepps0W6DywwVuvXrSBJN27HNNkgaRtz
rk/WmtBWHW8bQQtvPOenpTkj3Dc5PNDLKwwaUCUDAobCwGLHKEg0kRMb7W4zS/vv84oZZG+8KL9G
FiYgEYIBBrMEYdmbO05PTtV4CUAAdKh+y9flPPvTg+UBLIERtK3J6DNEj4yzGpRG4jCAfKO1NaAs
MMuR9afMr3FYit5N7dMYNaD/AHG+lVYrcoflXH41aYZUj2qJNN6DM6STY4BHFTRPtYMDxQ1sXOWX
9aVYGUYA4+tXzKwmiO7jAmV84V+tNhVBdKuAVI6HmrEkLSKquMgdOaYltsYMq4I6c0KStYLFzgD0
FVjukkyueOlOYSMMHpSqJVGAOKhaBYUQjqxJNNdfKIZScZp376kYSsMHpRcLCNbrJMJtx7HFSyqH
Q4wSKi2SbCn8NJFE8WRGMZouFiaF9y89RUlVwkgbcBzTv31JgTUVD++o/fUgJhS1D++o/fUWAlZg
oyar/NM/t/KnMsjD5qVVkUYA4prQLEqqFGBThUP76j99UgTUVD++pf3tFgsPlOI29+KbbDCk+ppj
LI4waULKFwOlPpYViZmCjJOKhaYFsbQV96aYnJyRz9aPJf0pqyCxJsjk5U4+lLGrRsR1U96i8p/S
ngTAUNhYIhtnYVLN/q2pkSv5hZ/SpJQWQgdakOpWmK+bFuzgDOMZpsty7AhFKj171KBKDxjNL+/9
v0qroLFA5Jyck1LFbu+ONq+pq2PO9v0o/fU3UfQOUWOBEHQE+pqQgEYIGPSov31H76o3Cwk1sr8p
hW/SqTKVYhhgir/76mPE8hBYAkVUZW3BopUVa+zH+7+tH2Y/3f1q+dCsVaKtfZj/AHf1pfs3+z+t
HOgsVBS1a+zH+7+tH2Y/3f1pc6CxVoq19mP939aPsx/u/rRzoLFWirf2b/Z/Wj7N/s/rT9ogsVKU
Va+zf7P60fZj/d/Wl7RCsJaT+WdrfcJ6+lWbu2E6Hadj9mxUKQMjBlXkVMpmBHAI9KwmrvmifS5P
nssGlSrax6Pqv80c3dW08DHz1b/e6g/jUSIzthASa64gSIVdcg8EGqj2CKP3ACj0rRYnS0lqfomF
zOliIKUGmu6Mm3swMNLyf7varpKxrk4VRUF3MbY7WQ7z0yOKoPI8jZc5quV1NXsdiTnqy7Ldk5WL
gf3qgySckkn3qJAWOFBJ9q0be0A5l5PpTfLBFO0COCF5SCBhe5rRhiWIcDJ9TSrwOKgluQvyx8t6
9q5pOU3ZGLbnoiy8ixj5jz6VXeZpDzwPQVX3FjknJNTwxtIeOB60cijqxqKjqxyAscKMmrsEQTk8
tSRoEGFqQsFGT0rGUr6IylK+iJc8ZNRvLnhenrUDyFz7elOjBY4FRy21YuW25MnOMVZjXHXrUcah
R71KKykyJMeKXd2FRl+wpV6is2ibEyVKKiUYqQVmyWPFSLUa1IDWUiWSA4FANMB5pwqLEj154qde
KiQYp5bA96zlqQ9RztngUgpopy8nFTawEsQyc9qmLYX3pi4AGKa7ZPsKxa5mZ7sKevPFRip7cfNn
0oloD0LaAKoA6VXkbc5PbtUjvtQ+/FVxUGUV1JB1q7aDCE+tUV5rQjG1QPSrhuTU2G3LcqKjBpJm
zKfypAabeokrIs2ozJn0FWLg4iPvUFp/F+FPuj8gHvXRB2gYS1mQCnx/6xfqKjFPj/1i/UURZozQ
l/1T/Q1RFXpP9W30qhXTUeqMaWw4HnNaqnIHvWSK0oDmFPpWlCWrJrLRFA8EilBpZxtmce+aZUbO
xotVc1oG3RIfaqFwuyZh261PYtmNl9DSXy8q/rwa65vmppnPH3ZtFatO1l3xD1HFZdWbGQrJsPRv
51NCpyy9SqsbxFvU2y7gMBh+tVq0bpN8R9V5rOzRWXLIKbvE0bKTdFtJGV4/Co7+PpIPoaqwy+VI
G7d60zhlIPINbwl7WHKzOS5JXRk1espsjy2PI6VTkUxuVPamqxVgRwRXNCo6crm0oqaNG7i8xMqP
mH61nZrTikEiBh+IqpeRbW3r0PX2rWvFSXPEzpSt7rC0n2HY/wB09D6VamjEiFT17H0rKJq9aTF1
2sfmH61FKrdckh1IW95FORSjFW6ipLafymwfuGrVzEJU4+8OlZxBBIPUVjNOnK6NItTVmahw69iD
WfcQmNuOVPQ0tvOYztblP5VcbDKQeQaqTVReZCvTfkZ0cjRtlfy9avRyLIuVP4VSuIjGcjlT+lRo
7I2VPNc6m4OzNXFTV0WriHdlkHzenrVLJU9wRWhFKsi5HXuKjniEgz0b1qKi5tYihPl0kNhnDcNw
386e6hxhhVBwVOCMGpobjHyv07GsfaX0kW6dtYkU0TRn1X1pIpynDcr/ACq4eetU7iHALJ09KzlH
l1RcZKWkifcGXKnINQTQq4yODVZXZDkH8KsJMJB6H0qHK5XK46optvibuDUyThuG4NTOAwwRkVTm
iK8rytSaJqW5Yaq0kYJJXg+lNSUrweRUgYMMipd46lJOJk3unxzHIHlyeoHX61h3FvLAcSqVz37G
uwYBuCOKqzQhlKkBlPUGu/D4yUNGU1GpFwmrpnGPCV+7kioq37vTtuWg5H9w9ay3iBY7lwR1r3KO
KjNHyuY8NJ3qYT/wF/o/8/vK1FWhACOAPzoro9pE+UlhK0G4yi7ryZ575i+9KJF96qAE9MmpFhb+
I4Fem42N7ljzF96PNX3pihVGF59zTsUrBdDvMX3o8xfeoJmwMDrT7dcLuPei2lwJPMX3pfNX3pQB
6ClwPQVIxvmr70eavvTsD0owPSgQ3zV96XzV96dgelGB6UAN81fejzV96dgelKAPQUDG+avvR5y+
9OwPQUYHoKQhvmr70eavvTsD0FBUEdBQAnmr70eavvVU5jk56VPxVOIrjxKvvS+avvTBjuARUbQk
nMZyPQmlYL3Po/4F3Am8CJGAR5VxKpPrlt39a9Crxz9nC7J0/XbFvvRTx3GCDwHUr1/7Zn9a9jr6
LCO9GPoenQd6aCiiiug1CiiigD57+O5KeOY2ZW2tZR4OODhnz/MV535q+hr1n9o2yVZ9G1D7u4SQ
EjueGGf1/OvGwrEZHI9jXz2Lp2rSPMrK02W/NX0NL5q+9UwrehqaJNvJ61zONjG5N5q+9Hmr703F
GKVguh3mr70olX3pmK1fDOgah4k1I2OlRK8yrvdnOEjX1Y9s9vWmoOTshrV2RQg33EyQ28UssznC
xxruZj6ADrXtnw7+GIsyuoeJ4Ue5GDHaEhhEQerEEhj046D3rq/A3gbTfCcDNDuub6TBe5mC7hwM
qmBwucnHJ55JrrK9fDZeoe/U1fY7qWHS96W4DgYHSiiivTOoKKKKACiiigAooooAKKKKACiiigAo
oooAK4n4saRq2reHGXRp5iUP76zjC/6QmR3OCCMZwDzyMHiu2oqKlNVIOD6kzipLlZ8feao4III7
YpyyqSAM816H8aPBq6NdPr2mpGlhO4E0WceXKx6gejfz+tebIcyD2OK+arUHRk4yPKnBwlyssk4B
PpUfmr709/uN9KgXpWKIJfNX3o85feo8U13RPvEU7XC5YRzK6xxIzyOQqKMDLHgDn3r6t8Paauka
HY6emCLeJUJB4JxyeffNfLHhXfc+LtBjhTP/ABMLdiPUCVSf0Br63r18sp25pHbhFuwooor1jtCi
iigAooooAKKKDwKACivELr4uayLqcW9pppgEjCMlHJK5OMkPycYqP/hbuvf8+el/9+5P/i64P7So
d39xz/WYHudFeGf8Ld17/nz0v/v3J/8AF0f8Ld17/nz0v/v3J/8AF0f2lQ8/uD61TPc6K8M/4W7r
3/Pnpf8A37k/+Lo/4W7r3/Pnpf8A37k/+Lo/tKh5/cH1qme50V4b/wALd17/AJ89L/79yf8AxdVJ
vjJ4jjcqbLSfUfu5On/fdNZjRfUPrVM99or5/wD+Fz+Iv+fLSf8Av1J/8XR/wufxF/z5aT/36k/+
Lp/X6IfWqZ9AUV4PF8YfEEsJK2elbx28uTH/AKHVf/hc/iLvZaTn/rlJ/wDF0LMKLD61TPoCivBE
+M2usBmz0sH/AK5yf/F1MPi/r5/5c9Lx/wBc5P8A4uk8xorv9wvrdM91orwr/hb+vf8APnpf/fuT
/wCLpY/i9rzMQbPS+P8ApnJ/8XS/tKh5/cH1umZ3xb1JL7xrdFMlbWNLXp3Ukn9WNVPhlatqPjjS
44w2IXNw7AD5VQZ/U7R+Nc5qEzXM008mN8shkbHTJOf616b8A7cNqWs3BU5SKKNW+pYkf+OrXkUf
3+JTfV3/AFOOH7yqvNns1FFFfTHqhRRRQAUUUUAFFFFABXlHx5vTHDo9mc7ZGkmOPVQo/wDZ69Xr
wr4z3/2vxctsPuWcCp/wJvmP6FfyrgzKfLQa72OfEu1NnAecvoaPOX0NOwPQUYHoK+cueYN85fQ0
ecvvT8D0FGB6CgBnnL717p8ErdovCEs7fcubt5E+gCp/NDXhzYCk4HFfTPg+yXTvDGmWyqF2QLn3
JGSf1r0srheq5dl+Z1YSN537GxRRRX0B6IUUUUAFFFFABRRRQAV8zeL9WTVPFGp3iEtHJOwQ+qr8
qkfUAH8a+kdRulsrC5upCAsMbSHPsM18nwKQm5gdz889hXkZs9IxOLGyskix5y+hp6MGGRUIp8H3
T9a8Rqx56dxzuEODmm+cvvUd3/7LWfuPqfzpxjcZqecvvS+evoaytx9TRuPqar2YGr5y+9HnL71R
tQWl5JwBVzAqXGwrj/OX3o89fQ01R8wqXA9BUvQNxnnr70vnL70y5IWI4HJ4qlk+tOMbhc0POX3o
89fQ1QyfWjJ9TT9mFy/56+hpfOX0NZ+T6mjJ9TT5BXRoecvoaPOX3rPyfU0oJ9aXIO6L/nL70vnr
6Gs/J9aMn1NHIFzQ85fQ0ecvvWfk+poyfU0ezC5oecvvS+cvoaqWhzNg+ner2B6CokrOwDPPX0NH
nr6GlkUbc4FR4oSuJuw/zl96POX3qGcfumwOcVQ3H1NUoXC5recvvR5y+9ZO4+po3H1NP2YzX89f
Q1IDkZrJgJMg5Naq/dH0qJRsA1pVVsHORR56+hpi4+0NmnHYxwRhqmwC+evoaPPX0NMeEj7vP1qN
VLHAFVZCuT+evoaPOX0NIsIH3jmknwAoAxSsgHecvvS+cvoaWNQEGQM07A9BSYxnnr6Gjz19DT8D
0FKAPQUhEfnL70ecvvUmB6Cq8jb2CqOKErgS+cvoaPOX3pUQKuMZNOwPQUaAN89fQ0eenvTwB6Cl
wPQUBoR+cvvR5y+9SYHoKMD0FICMTr6Gl89fQ1G48tww+6aWS3SVg+5hx2NVZAP89fQ0ecvvSSgM
p24yPSljwyDgZ70gDz096Xz19DSnaoyQMVCT5jhVAAoSuDJfPX0NHnr6GnKgAAxWaiFyx3EAHFOM
UwNDz19DS+cvvUEGHtiv8ScGopVLJx1pqAi6JlzjmpCcAmsy0zuOc9R1rSf7jfSpkrOwxnnL70ec
vvWfOGMgC56VLGCFA6mq5NBPQt+cvvR5y+9Vr3CiJM4OecUyKPFxGASe5BNJR0uBc85fel85fQ0r
oGXHSoUfadrgcVKVw0JfPX0NHnr6GnAKRkAYqOcgLgAZNCDQd56+ho89fQ0yQxxwhZTjdxx1pYok
hQsCWB5yeaLBoP8APX0NHnr6GmRLuJdvwFTYHoKTSQDPPX0NHnr6Gn4HoKMD0FADPPX0NHnL71IA
PQUYHoKAGeevoaXz19DSSx7l4HIqOFwDtYCna6uBL56+ho89fQ07A9BSgD0FSAzzk96POX3qTA9B
RgegoEMEy+9HnL70k65TIHSiEK8eCBxxTtpcBfOX3o85femvAP4Tz71DsYPtxzTUUwLHnL70onT0
amJBx8x/KnLs3bVGTSsgHpKrnAzSu4QZOfwqJMfaGx6Ut1/qx9aEtRMXz09G/Kjz09G/KmkkOFUK
cjPNI0jqfmRR+FOyAkE6ejflR56ejflUQmP91fyqRJEbjABoat0AXz09G/Kjz09G/Kn4HoKMD0FT
oAzz09G/KlFwno35UrbVGSBj6VWdtxzjAppJgWPtCejflR56ejflVWlFPlQrlrz09G/Kjz09G/Kq
tFHKguWvPT0b8qPPT0b8qq0UciC5a89PRvyo89PRvyqrRRyIC15y+9Hnp71Woo5EK5a89PRvyo89
PRvyqrRRyIZa89PRvypftCejflVeNtrZxkd6tLtZcgDH0qWkgG/aE9G/Kl+0J6N+VOwPQUYHoKlq
L3R0YfFVsNLnoysxreVcIUcBgf4WFZ9xpCs26B9g/unmrzyIp4GSPSm/aGz0FJRnHWB9Zl/Fbh7u
IVvNbfNf5FSO2+zjG3B9fWntIsa5c4FXklWTjv6Gq9zYRzncGZW9un5VHNr759dhcwo4pc0ZXXl/
WhmTXLSfKvyr6etMWppLCeNuAHHqKsW1uI+W5f8AlWzlGK0PSU4W90Le3JAaTgelXVAAwBgU0VHL
OEyq8t/KuZtzZi25smklWMc8n0qsXLtljUO4k5J5qeCMufRfWq5VFFKKiiWJS54/GrkahBgU2MBV
AHSn5xXPN3MpSuSCms+TgdKheTdwOlOXnpU8vcSj3JV56VYQY+tRRjA96lFZSZEmPFPFR7sfWlU1
m0TYmFOBpgpwrNoTJBUiiol5qVazkSyQHikzk00nmlFRYmw8VLGO9QpycVYXpWcyGOLbV96YDTSc
mgVKVhWsSCrMXCgVXjGWFWM4GaxqdiJdhJmycelMFMzk5NOosFrE0IzIB+NXt20E+lVLUdW/Cppm
xGffimtDGersRA5604GolNPBoKaL1r/q8+ppLk8rTrfiJfzqK5P7wD0FbXtE51rMZUkX+sX61GDT
4v8AWL9aIvUt7Gg/3G+lUBV4n5T9KoV0zexjT6jq0LU5hX24rOzVyzb5CPQ1dGVpBVWgy7/1v1FQ
1YvP4W/Cq2ac37zCGsUWbN8S49RVq5XfCfUcis+Ntsit6GtI8git6MrxcTKorSTM3NKrFSCOopHG
1yp7GkrG9ja1zXVgygg5BrOnXy5SoGB2qeycbCvcHNLepuQMP4etdU3zwuc8fclYqZq9Zy7k2E/M
P5VnU+JzHIGFY06nJK5rOHMrF29j3JvHVev0qjmtTII9QazZ08uQjt1FXXWvMiKT+yx9tN5b8/dP
Wr7AOpDcg1k5q5aS7l2HqOlKlU+ywqw+0itMhjcqfwpgYggjgjmr9xF5icfeHSs81lUjys0hLmRo
wSiVP9odRUV1Dv8AmQfN3HrVSOQxuGH5VfVw6hl71ampqzM5RcHdGbmp7efbhHPHY+lLdRY+dRx3
AqrXM24M3Vpo02AZSCMg1QniMZ9V7GpLeb+B/wADU7gMCGHBpyamjNXpuxnqxVgVODVyOUSD/a9K
qzRmM+qnpUQYqcg4Nc3O4OzNnFTV0XpoxIvPB7GqEilGw1XIphIuOjUSIHXDUSSlqiYNxdmVIpyn
Dcr/ACqxuDLlTkVSmQxnDUyOUxnI5HpWPM1obOClqixPCHyV4b+dUmBU4PBFXlkDrkUyVBIOfzqW
OMmtGQxz8Yf86kJqpKhQ4PT1pEkKcdRQ1fY05VuiSWMNyvBqucofQ1ZDBhkU1wGGDShJrRjTtuRL
KDw3BpxNQyIV9xTQ5H0rXkT1RfLfVD3QN7GqN3aJNneMN2YVeDAjimmtITlB3Q07HPSWMythV3D1
BorcKDPFFdqxci9DxbcTRUTybTgCmh3bpn8K+wsflRMTjrTHlA4Xk00RSOeePrUqQKpyx3UtEFiO
JDI2Wzj19atUdKKlu4xRRQKCcAn0pAMkkWNcseew9ahEs0h/drgeppsS+fIzv930q2OMVWkQK5t5
G5eTNAtB3c1aopczAqfZSDlZMU4/aIx/fH51ZoFHM+oEUM6yHB+VvQ96mqvcxAqXXhhzx3qS3fzI
gT1HBpNaXQElFFFICOaPeMj7wqCN9nysOP5VbpksSyex9apS6MTQ0EHoc04VAYpEPy5PuKQSsvB5
+tO19hWPVf2f7h18ZXtuMeXJYPI3rlZIwP8A0M17/Xy98JNXGm+PtOd8rHcbrZjuwMMOM+2QtfUN
e1l7/dW7M9DCv3AoooruOkKKKKAPLf2hdOa58H296uSLK5Ut9H+TP5kfnXzwjFDlTX1945059W8G
63YxRrJNPZyrErf89Np2H8Gwfwr5BZWU4ZSp9CMV5GPhaon3ODFK07lyNw65p4qva5+b0qwK81qz
OQWilVS7qiAs7MFVQMkknAA9ya9i+HfwskE0Op+J0UKudunsm7PTDO2cevy49Oe1aUaM60rRRcKc
qjsjlPh/8Pr3xQ63VzvtNLVlPmtGf34z8ypyOwPzcivoDw/otjoGmx2OmQiKBO/8TH1Y9z71oRos
aKkahUUYVQMAD0pa9zD4WFBab9z0qVGNNabhRRRXSahRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAR3MEV1bywXCLJDKpR0YZDKRgg18w+OPCs3hPxAbXDtYykvaysc7kGMgn+8MjP1HrX1F
WJ4w8O23iXRZbK4WMTYJgmZNxhfGAw5H865MXh/bw03RjWpe0Wm58uv9xvpUC9K0ta0640nUbuwv
F23FuxRh2PGQR7EEH8azM7UJ9K+ds07M8tq2hWlJeUhcnnAFPS1kbrhR7021BNwv5064mcyMFYhc
4xWut7IEbngwLZ+L9DkLqX+3QoAePvOF/rX1fXxla3EtpdwXUBAngkWaMnsysGH6gV9f6HqUOsaP
Z6jbf6q5iWQDOcZHI/A8V6mWuylFndhHui9RRRXqHYFFFFABRRRQAVX1GV4NPupYgDJHEzKCM8gE
irFB5FJgfIkQAiQDoAKdV7XdNOj61e6cwx9mlaNf93+E/kRVGvkOVx919DxrW0ClFJSigQUUV6p8
IfB9vqNncaprFpBcWkv7q3jmQNkqfmcenOR+B/HWjRlWmoRLpwc5cqPK6iuYvMTj7w6V9O/8IV4a
/wCgHYf9+RR/whXhr/oB2H/fkV3LK6i+0jo+qS7nylRX1SfAvhYkk6BppJ/6YLR/wgnhX/oX9N/7
8LWv9nT7oX1SXc+WYpGjbctWS0Fxy/yN9a+nf+EE8K/9C/pv/fhaP+EE8K/9C/pv/fhaTyyb6oPq
ku58wGzbGUdTULxyRcsCPcGvqdPA/hhPu6Dpw+kIofwR4YcYfQtPYe8IpLLav8yD6nLufMNu26IE
nJ71ND99q+mF8D+F1GF0HTgPaAV538YdI0XR7XTo9LsLW1uZZGZjCgUlAO/4kflWNfATpQc21oRP
DSgnJs8um+5XvXwW08WngqK5K4e9kaY89R90foK8EuWCwsx6DmvqDwdpjaN4W0zT5P8AWQQKr+zd
T+pNVlUL1HLsi8JG8mzYooor3j0AooooAKKKKACiiigAr5p8bzCfxfrEgfepuWAb2HH9K+i9YvF0
/Sby8kOEgiaQn6DNfLE8jzSs7/6yRi7Y9ScmvHzaekYfM4sZLRIQuAeOaQFj7U5VApa8Q4Bu1v71
G1v71Pop3Cw+zt5by8gtUGWnkWMY9Scf1r6ptYhBbRQg5EaBM/QYr5w8CwNc+M9Fjj+99pWT8Ey5
/RTX0nXt5TH3ZS+X9fed+DWjYUUUV652hRRRQAUUUUAFFFFAHI/Fa5a28DahtAIl2Qt9GYA189ck
17B8etXNppem6bGQWupWlcH+6mP6sPyrxF5ncEE4B7CvAzFuVey6I8vFu9S3YsTTqgwp3N7dBVm3
+4frVCKAvyflX+dX4Pun61500lsc6I7v/wBlrOrRu/8A2Ws6qp7AFFFFaCLVl1f8KtVUsz8zD1Ga
t1lLcTHR/eqWo4upqSsnuNFe8PyKPU5qpVi8PzqPaq9aw2EwoooqgYUUUUCClFJSigAooooAKKKK
AHwnEqH3rTrLQ4dT71qVlUGhHHyGoanb7h+lQVMRSB/uN9KzK0pTiJj7Vm1rAEFFFFUMlg/1orWX
7o+lZMH+tFay/dH0rGpuMgY7Z8+9OnGcMKjl/wBY31qRMvEV7jpS7MTI1dl6GrEbbkBquUYdQakg
bqp/CiSuriRNUNwPmU+1TUOodcVKdmMVTlQRS1WBeM8jin+f/s/rTcX0AmpCwUcmoDI7cKMfSlWI
scscUuW24CM7SHCjipo4wnufWnKoUYApaTfRAFFFFAAKWkFLSAKiedVOP61KelZVypD5I46VcIqW
4M0gyyqQDzTYmxmM8EdKzoJSh5PH8qvgiYAg4f8AnTcbCG2tsYXLFgcjHSlby/N2LIAx7U9ZccOM
H1qFooxP5ocnndtx3o1b1Am8oAEsSaWBQF3etLIcxEjvSxjMIHqKlvQCB7h2YiEDA/iPeqsgZZMl
sbupHAqWPKkxkcrxmnOodcGtFZAMRxbOCvIbqKs7FkG+JgRVFVCSfvBx2NPUsZW8lto7kUOPVAWV
BDDII5q2/wBxvpVGF5GkIkOSDV5/uN9KyluBUCs33QTUnyQDdIRnsKrPI4cIjbQfSmMdkoaRi+R1
PatEmwe4blmd3kwCegz0otwysXQjjgZFN2+bISOF9asABQAKp6aCJYrk7gsqgE/xDpT5wAyk9D1q
qAZJljAxg7iauXH3PxrNqzQEUoSPGZNuelEhWBVdsuSeMUXMQkjRixUgemae3ktGFbBUdAaVwGtG
t3GjglacfmKxoflUYzQGyuyFcCkZ1hQgHnuaNdgJXkWMY647UkcyueP51mSymQ+1TWStvB7EjFU4
JIZpUUUVkAClpBS0hBUcse7kfe/nUlFCdhldJCnyuKsIwYZBzTXQN1FRGNkOUOfpVaMRYoquJWXh
hml8/wD2f1pcrAllIEbZ7jFMth8pPqaYA8pGelWVAVQB2oeisAtRzOUAIxkmpKqztukwOgoirsBr
MzdTU0Q2Rlj3qIRue1PnYgKntzVPXRCQW/Mp+lPuv9WPrUdt/rPwqS6/1Y+tL7Q2RzEiRSOoAqyC
HXPUGq0/3h9KIZNhwfu/yoauhDpYtoyvT0qKrTSLtPINVacW+omPWRlGAePenGZvQVFRTsgFZixy
TSUUUwClFJSikAUUUUAFAGTiinxjnNADSMHFJT5BzmmUALRRRQIKKKKBhTlYqcqabRQBN57egpGk
Zhgnj2qKnUrIQVJFHu5PA/nUdWo2HljkcUpOyBDgAo44FQxSM0jEnjGcUTSAjavT1psH3m+lTy6a
mlOrOlJSpuz8izE+9Mng0MFY4OM/rTLb/VfjUV6SACCQfUVm6absj38JxJiaWlX3l9zHzQMy4jYL
9RVFoJUJyhIHccipY7qRep3D3qeO8jbh/kP14o5Jw6XPqcFxNhavuuXK+z0/Hb8SCCEty+QPT1q6
uAMDpSqUcZUgj1FLtrCTb3PbWIjUXMnoKCADk4FRPLvOB0FRzeYTypCimpkkAcmhR6m8UrXJkyTg
c1biXaPeo4U2D3qYVlJ3Ik7jxTi2PrUZYAZpoOTk1lYlIlB5qZKhjGfpUwqJEtkgpw61GKeKzZJK
tPzUamlBrJoTH08UwU9OtSyWTIMCnM2B70wGkJyaytdkDhTqYKcnJxSYMsRDC59adI3y4pB0qNzl
qxtd3M92KKcDTBTlGWAoYMuwDag9TzTbhuQKcvFQSNmRqhMySu7ig09TUQNSJywHvQUzSThQPSq0
zZlb8qnBqrIf3jfWtZPQ54LUcDUkR/eL9ahBqSH/AFq/WlF6lS2NHPFUO5q7mqJ6muib2MqfUXNW
rL+P8KqZqxZnDkeoqqcveQ6i91k91/qvxqpVyYZiYe1Uc1pUepFPYdmtKF98atWZVyzf92V9DV0Z
2dhVY3Vxt2uJd3Zqgq1djdECOxqnmlPSQ6esSe2fZKPQ8VfYBlIPQ1lZ960YXLxqx6961oz+yZ1Y
9Si42OV9DTasXiEMHHQ8Gq1ZS0djWLurl60kymw9R0+lOuU8yM4HzDkVRjfY4Ydq0QcgEdDW0JqU
eVmM1yyujNpUcowZeop90myTIHymoa52+Vm6tJGnHIJFDD8arXkfO9R9aitpfLfBPymrpwQQehrb
m9pHUxs6cjMqWCbyzg/dNNnj8tz/AHT0qLNc13Fm9lJGoTke1ULiLYcj7p/Sn202PkY/Q1OwDAg8
g1cmpoyV4Mz6swTZ+Vzz2NQSoY2x27VETXLzOLN3FSRosAykN0NUZ4zGfVfWp4Jtw2t97+dPcBhh
hkU5WmrmcbwdmZ+4ggg4IqzFOH4bAb+dV50MZ9QehqHdzkGsbuJ0cqki/IAy4YZFUZoyh9V9anim
D8Nw386e+CCDyKTdyY3i7FAOVbK9asRyhxjofSoZothJHK/yqDPORSsbWUkXXwRg1Ulj28ryKkSX
PDdfWnGpu4sFeJUDFTkdakWQN14NEseeV/KoDxWySmaWTJ2NQumeRQsn9786ZNcwxHEkiqfTNOMZ
XsgSaGHIPoacJM9ePes641RTkRR7vRmOP0qg880xILEg9hwK7oYWcvi0HKUYrmlojaa7gU4MqfnR
WGIWI7Cit/qUe7PPlm+Ci7OojzBRumwfWrYqtbLl93pVmvqpbn58habJIsYyxpk8wjGByx6VHHCX
O+XnPakl1YCedJI2Il49TS7Lj++PzqyOBxRRzdkBBFOwfZKMHoDU7fdP0qG6QNFu7rT4G3xKfwof
dAR2TfIV7g5qxVWUGGbzB91jyKlNxGMYJY+gFDV9UBPSFgDUBuMg7Y3z7jFN8x/+eR/OlysGWqBV
ZZmX70TY9qeLlB95XX3IocWBJOdsLn2qOzUiHJ7mopX8+VUU4X1q2AFUAdAKHorARTzCPgcse1MH
2hxkEL7U22HmyNI3PpVuh+7oBVMk0f31BHrU8UyydOD6Gn1DNbhvmj+VutF09wJ6QqG6gH61BDMd
2yXhumasVLVgFtpVsb20vAp/0eeOUhepCsCQPyr7CtLiO6tYbiFg0cqB1I7gjIr47cZQj2r6U+Dm
qxap8PtLVAFksoxZyLnoYxgH8V2n8a9TLZ6uLOrCytJxO1ooor1ztCiiigAr5b+Jekf2R401O38o
JDJJ58Q7FW5/nmvqSvGf2hbe3dtGuluYFuo/MiaDP7x1O0hvopB/77rhzCnzUubsc2KjeF+x40AA
MAYFaGhaPfa5qMdlpdu007nHA+VB6sew962/BHgfU/Fc26AfZrBT891Ip2nnBC+p6+3HWvorw14e
07w3p4s9Kg8uMnczMxZ3PqWPJ/p2rz8Ng5VveeiOWjQdTV7HPeAfh9p3hu3t7m5hjudZCgvO3zCJ
iCCI8jgckZ6kV29FFe3Tpxpx5YrQ9GMVBWQUUUVZQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAcL8UvBqeItLlvLKInV7aI+UFIHmjrsPqeuM9Ce2TXzZO5Py9B3r7Nrw740
eBzBeHxBpyD7NKwF1FGhyjYJ8zjscYPoSPfHl47DL+NH5/5nHiaV/fR5RZjYryN93FVWO5iT1JzV
m4lUJ5Uf3R1NVq8uPc4QAycDrXuPwK8SyGJ/D2oyrmNd9lk8kclk/DqB6Z9K8St1LTLjsc10WiQ6
g98LjSYpZLmzH2nMa7igXnNaUq0qNROJrSm4Suj6sorkfh54xt/E+mKkjbNThULPG2BvOBl0AJ+U
kkevH59dX0NOpGpFTi9GenGSkroKKKKsoKKKKACiiigDzT4peBH1Zjquiwx/bgCbiIcGcAcEYHL8
Y568c8V4nJG8T7JUeN/7rqVP5GvreqOqaRp2rRhNSsre5UdPNQHFebicvVWTnB2ZzVcMpu60PlSl
AzgDkntX0LN8M/C0r7jYSLxjCXDqPyBrT0XwboOjSCSx0+MSr0kkJdh+JzXHHK6t9WrGCwk+rPI/
h74CutcuY7zUo2t9KRskOCHmIxgAEfd9T7Y9694tbeG0t47e1ijhgiUIkcahVUDoAB0FSUV62Gw0
MPG0d+510qSprQKKKK6DUKKKKACiiigAoooJABJOAKACvnf4n6+mu+LJhbsj2lkpgidDkOc/Mc+m
ePwrr/ir48CRXOh6HIDORsuZ8Bk2MvKqc/ewRzjA+vTxy0UoNpGMDGK8XMsUpr2Uem5wYmsn7iNH
TNObV9Ts9OXP+lTLEcdQpPzH8Bk/hX1XXgXwdt1n8bRO6FhDBI4P91uAD+pr32tcqham593+RphI
2i2FFFFeqdYUUUUAFFFFABRRRQBy/wATbxLLwPqpcjM0fkKD3Lnbx+ZP4V85j/WV7L8drhl0rSrU
fckuGlJz3VcAf+Pn8q8akHQjtXzuZz5q/L2X/BPNxbvO3YfRSKcilrzjmFJAHJAoBB6HNZdw5eZt
3YkCpLJis2B0NacmlwPU/gnYLceJbq8cA/ZIPlB7M5xkfgGH417bXlvwMsWS01O+YECV1iU+oUE/
zavUq+hy6HLQXnc9TDK1NBRRRXcbhRRRQAUUUUAFFFFAHgvxy/0jxpAu99sVlGu3sGLuSR9QV/Ku
Cjt1BzjP1rpfGt8dR8V6ncZJXzii57Bflx+lYlfKYirz1ZNdzxqr5ptjCoCH1xRb/dP1pX+4fpSW
/wB0/WucjoR3f/stZ4Vj0Un6CtKb/WL9KKuMrITZn+VJj7h/KmlWHVSPqK0hS1XOK5RtjiZavU0o
pOSBn1p1S3cGPj6mpKiT7wqWoY0U7v8A1g+lQVYvB86n2qvWsdhBRRRTBhRRRQIKUUlKKACiiigA
ooooAVfvD61q1lx8yL9RWpWdQaEf7hqGpZPuVFURFIjum2wn34qjg+laTKrY3AHFKBjpWilYLmcI
nPRG/KlMUg6o35VoUUc4XKMA/eitVfuj6VXf7tWF+6PpWc3cad0Vpf8AWn61YjXaoFRAZuD7c09p
VBxyaW6sDJKaUBORwfWo/PPoPzpyygnBGKLNBckp1Np1SAlJsX+6Pyp1FACAY6UoooFIBaKKKACi
iimAClpBS0gGSyBB71ny3AYnABzVu8jLjj0xVDyHz2/OtoJWuIYTkk4A+lSwM24AHimPHsxkgk+l
TWabmz6nFW2rAXGOIxuALHpmmOyQAeYCWPalLr5hdzhRTpFimjDt8wHTBrEB4IkiyvQjiiA5jx3F
MQOygL8qjgU+KMoxyQaTtYCrz5kwJ+bdTIkZCSxGPrVyWBJTuBIYdxUZswwO52J7H0q1NBYjkxsJ
IzgU6G1BhVldlYjPtQLaRiBK6lO4HereQi+gFKUuiAqpCYpPmbcSauP9xvpVYuXcHGBnirL/AHG+
lRK/UZS+zmZtwbbikubcRorbmY7gCT6VNFJsPI4NTsFkjK9QRVczTEymMAccCopY2dwQeMVN9lmx
t8xdnTOOcU/7IB9yRlHpVcyXUVhkP/H0mOwOfpVif5iqjvSxRJCML1PUnqaRo2ZywYVDabAhu7ho
nCKoIx3HWpZYgPmUdO1ISyEbwGA74qO4nkWYLHypx2ppXtYCUtmEFOPUCs6VmZiGPStEALIydmFU
Lldsn86qG4IjVtpzgH61ahucHpg9KgSIuuVI+hpRA+e1W7PcDVjYOuRTqhtlKx81NXO9xgKWkFLU
iCiiigYUopKUUABAPUZpNi/3R+VLRQIUUtIKWkAlIqKvQc+tKTgZNRNOP4QTTSb2AmqOZNycDkUw
T+q/rT0lVjjofenZoCK2/wBZ+FSXX+rH1psQ2zkU66/1Y+tNbgwlTcgI6iq1Xl7VUmUK5A6UQfQQ
0UtIKWrEFFFFABRRRQAUopKUUgCiinI2xsigBtSoMLTmUSLuTqOtNRs9etK9wYOMrUVSu2OnWnoo
jXe/WlewkQUU52Ltk02qAKKKKBhRRRQAU6m06gTCiiigAqxEu2M56moYlDOAelWj0NRN9Bobbf6r
8aivug+n9altv9V+NQ6h9w/SkviBGezc4FNpBS10jLOn/wDHyo7EGrU935MpTZnA65qrp/8Ax9L9
DRf/APH030FYyipT1N6OKrUHelNr0ZaS+jI+YMp/Op4njf5oypPt1rFoxUSw8Xse5h+JsTT/AIiU
vwf9fI3wxp+8e9YkdzLGMBsj35qeO/wP3qZ91rCWGfQ97D8TYapZTvF+e33o0dxY5NSRjJqlFdRS
dDtPo3FWUkI4Ug1hOm1oe5Rx1GvHmpyT9GXBx0p4qqs/94flUqTIfb61hKDNuZMnBp61ArZ7jNSq
aykiiQGng1GKeKzaIJBUi8ColqQGspEseTxSCm55pRU2FYkFSxdM1CKnXgYrORLHlsAmowaHPIFJ
UpaEpDxUsI+bPpUINTw8L9aieiJlsT7sKTVfrT5DhTUQNZxWhKQ8GprfmUVBU9r98n0FMUti6Diq
m7JJqd2wjH2qqDTbM4IlBqWA/vV+tVwamgP71aaeoSWhoA1SJ+Y/WrYNUifmP1rWcjGmtx1TWxxK
Krg1JC2JF+tKMtS5LQ0Ccgis/pV8GqMnEjD3reo9jKn1DNT2jYkI9RVbNPjOHUj1pRnZ3LkrqxoS
LuRl9RWeeDWhmqMy7ZGz35rao+plS7Das2b4LKT7iqtORtrhvQ1nGVnc0lG6saEq+ZGVrOrRDAgE
dDVK5XbJkDg81rV11MqT6EdW7STIKE9OlU6VH2OGHasoz5Xc1lHmVjQmUSIR37VnnIODWgGBAIPB
qrdpht46HrWlXXUzpOzsQVbtpS67SckVSpUcq4YdqxjU5WayjzIvzIJEI79jVBgVYg9RV5GDqCOh
qG6TPzjqODTqa6ozpuzsyrVyCXeuD94frVImkVirAjqKwU+VmsocyNCVQ6kGs+QFGKnqKuRyB0z+
dMnQSL7jpTmubVEQfK7Mp5OcjirMM28Yb7386qNwSDxTNxByKyUrG7hzI0JAHBB6VQmQxt7HpVmK
XeuD94daVwGUg9KHqTG8XYzycVPFNu+Vuvr61DKhRsHketRk1KRtZSRePTmqs0eMlenpTVukUbZJ
FGPU1TuNZto32rvk90AxVRp1JP3VcIppkxp6y44Y8etYdzq8kjkwosa+/JqlNLPcHMhZh6dBXdDA
zkve0LlKMVebsdJdX1vb8PIC391eTWZd6srcW6c/3m/wrLELewpkvyNgenU110cvhHfU8evnuCob
S5n5f1YsTXs8nJcqB2XiqxYdzTO9FehChGOx4WI4orz0oxUfXV/p+o9HAYbgCKuKBgbcYqhVu2JM
XPY1Uopao8Gti6+Id6s2yWiiioMDy+BdqfXmllfy0J79qfVU/vrkD+Fa9pau7Osdbx7j5knJPTNW
aKKlu4BRSFsVHJNtO1QWc9BSSuBJIyhDvIAPFVbcyGPagAGfvHtUqQktvlOT6dhTHgCKW3kCrVtg
FljVFJkZnY9ATS2aMoJbjPQVDHC8q7i3HbNShJ0HDBvam9rXAt00qM1XFyynEqEfSrCurLuBGKiz
QCjjpTZlZ4iFODUL3IyRGpY+vajFxIOyCizWoDIFjcbHG2QHg96fIssSNh9yYwc9RTGt5AC+4Fhz
xRDH5ynLtkdQarzAls3XywuRu54qxUP2dfLC5OR0bvSB2iIWXlezCpavsBPS0wMD9KfUgRTxCReP
vDoabbSE5R/vrU9VrlSjiVePWqWugFmvUf2ftYjtNY1LR5cKbsCeI56leCPyOa8tUhlBHQ1oaDqc
mh6/p+rwRiWSzk3+Wf4gVKsPrhjj3rTD1fZVFJlQlySTPrmiobG5jvbK3uod3lTxrKm4YOGGRn86
mr6U9UKKgv7220+1kub6eOC3jGWkkbAArxPxT8Q9V8W3baL4NtbuOJ8DzU+Sd8E5IIPyL05JB9cd
KxrV40lrv26mdSooLU6T4hfE+20xZNP8PPHd6g26J5kOVgbGARwQ7A9un8qwfA3w3vtaul1rxi05
DssiwTNuknHP+szyB04/AgdK6r4efDa28OsL3VWivdU6qQN0cPXlMgHPPJP4Yr0OueFCVZqpX+SM
405TfNU+4jtbeG0tore1ijhgiUJHHGoVUUDAAA4AFSUUV3HQFFFFABRRRQAUUUUAFFFFABRRRQAU
UVieK/E+meF9Oa71SYjj93DHgySn0UZ/U4HqRSlJRV2JtJXZq3t3b2NrLc3k0cFvEu55JGCqo9ST
XAaT8VdJ1Lxf/ZUYWKwZdkN7K+3zZdwAULjgHPBJ/pnx7x7431DxdeAyb7WwQYS0SUlTyDl+gY5A
7cY4rkx0rzKuPfN+72/M4qmKd/c2PtKivPvhH42/4SbTGsr7cNUskUSO2MTKdwDDnJPy88dx616D
Xo06iqRUo7HZCamuZBRRRVlBRRRQAUUUUAFFFFABTZY0lieORQyOCrKe4PUU6igD5e+JngyfwnrU
jQxH+xrhx9klLA4JGTGR1yMHt0xznOOOr688VaDa+JNEuNNvcqkowsigFoz/AHlyOtfLGt6BfaJr
E+najEySRMQJNpCyL2ZfUH9OleJi6HsXzLZnm16Ps3dbFaxTCs578V9BfBbQP7O0F9UkYmbUQpC9
lRSdv4nJNeUeA/DUviXXIbRFUWkJWS5YkgeXuGVGO7DIFfTMUaRRrHEipGo2qqjAA9BVZdR5pOs9
lsaYWnd87PMvHfw+na6k1rwiz22o8E28LiLc2TuZWyNpORxwOPeqngz4rbpTp/jCI2VzECGuTGU+
YdnTGUP4Yz6V61XPeLPCOleJ7bZfRGOcfduYsCRfxxyPY5FdssPKEnOg7Pt0ZvKm4vmpv5G7bTw3
VvHPbSpLBIoZJEbKsD0INSV4nP4R8Y+DJmu/D9+15YxMSsKOxyv+1Eflz/u81b0j4wXFvcNb+JNF
niYLkGAbXPuUcjr65/OiOMUdKy5X+AKulpNWZ7DRXMaF460DWgot75YZj/yxuP3b/rwfwNdJDNFM
CYZEkA6lGBrphUjNXi7mykpapj6KKKsYUUUUAFFFFABRRRQAUUUUAFFMlljhXdLIiL6swArL1TxN
ouloGvtStosjIXeGZvoByamUlFXk7CbS3NeivNNQ+L2kxrIthYX1xIPutIFjjb8clv8Ax2uM174l
65qtsYITHYRsMMbcne3/AAI8j8K46mYUILR39DGWJgutz2TxH4o0fw4inV72OF3BZIuWd8dcKOa8
P8c/E/UteJtdK8zTrBXPzRyESTDGBuI6Dn7vP17VxupCS5ka4lkeWY/fd2LM31J5NZ1cFXHTrKy0
Rx1cTKei0QRkx42fLj0rRtWL/M3Uis6tCy+7+FcFRaHOe0/AmxAs9U1Aj5mlW3B46ABj/wChCvVK
8z+F+s6BofhKKO81ixhup5XnmjknAKk/KBg9PlVfxzXXDxl4bP8AzHNO/wDAhf8AGvewc4U6EU5L
7z1KLjGCVzeorB/4THw3/wBBzTv+/wCv+NH/AAmPhv8A6Dmnf9/1/wAa6fbU/wCZfea88e5vUVgH
xl4bHXXdO/8AAhf8aX/hMfDf/Qc07/v+v+NHtqf8y+8OePc3qKwf+Ex8N/8AQc07/v8Ar/jTX8ae
GkGW17TQPe4X/Gn7an/MvvDnj3OgornR438LscDxBphP/Xyv+NSf8Jj4b/6Dmnf9/wBf8aPbU19p
feHPHueX/G/UDP4is7EPlLeHcVB6Mx/wArzytvx7dw6j4x1S6tJ1mt3kXy5FOQQEUce2Qa5/knGc
18xip+0rSl5nk1ZXm2KPv/L0qSowGXoBSh/UVg9TPYZNbLI27O098DrSwW6xEkEk+tSggjihmwPe
nd2sB9CfCmBYfA2nlf8AlrvkPHcsR/Sutryfw98TdD0jQ7HT10/Vm+zwrGWWOLDMByf9Z3OTWkPi
7op/5h2rj/tnF/8AHK+io4uhCnGLlskenTr01FK56NRXnA+L2iE4/s7Vx9Y4v/jlO/4W5on/AED9
W/79xf8AxytfrtD+Yv6xT7notFedf8Lb0T/oH6t/37i/+OVWk+M+go+3+ztYb3EcOP8A0ZQsbQe0
g+sU+56dRXnKfF3Q3UMthqpB/wCmcX/xyl/4W3on/Phq3/fuL/45R9eofzB9Yp9z0Worudba1mnk
ICRoXJPoBmvP/wDhbei4z/Z+rf8AfuL/AOOVneIPidpGraBqVjBY6mktzbyQq0iRhQWUgE4cnHPp
Uyx1BRbUhPEU7aM8suZjc3M07DBmkaQj03En+tR0UV8weWNf7h+lJb/dP1pX+4fpSW/3T9aA6DZv
9Yv0opZf9atS4HpRexLRCKdg+hqUUtHMKxBRU1GB6UcwWIh1FTUwoKcOlJu40QXg+VT74qpV26GY
T7HNUq1hsJhRRRVAwooooEFKKSlFABRRRQAUUUUASQDdKo960qoWY/ffQVfrKpuUhkvao6mKBjkm
lCgdqhMTVyGlwfQ1NRT5g5SHafSjGKmopcwuUrv92rC/dH0pkwHlninr90fSk3caVkV3BMpA71Ls
SNSXx9TSJ/x8N9Ko3cxkkIB+QcD3q4pvQbLv2mDpuH5UpVZF3Rkfh3rKqW3mML552nqKp07bCL8L
HO0/hUzMFGScVXkwGDKevNKiM/zMcCoaW4h7Tf3R+dJukPQH8qjkuYoiVRdzDv2qL7c/9xaai+iG
WRKwOGFTIwYcGqsVyk2FkG1jx7U9gYmBHSpcegFmikU7lBHelqACiiimAClpBS0gCmSKNjYAzin0
UAZEoPmng89KuWi7ELHsKnMKk55FEoCxECtHO+giPyRLDgkjnOaRYlQpEM46k+tMnWUxx+VnHfHX
NSjKuhc87Rn60AV7q5YuUjO1RxkdTUtgp2vI5PPHNEkELuW3EZ5IFSbgVCRjao4yaHa1kAkaEqSp
waeDKOwNRXEEjBfKbgDkZxn3qUMyKiH5mwMmluAHzT2xTNhaTaST6mmIk/2ok525554xU8HVyetD
0AJQA6AcCpn+430qGb/WLUz/AHG+lQMhhUOjA0xFYOyg4I/WpLbo1D8XC49KpPoJ7igyjqoNIfNb
jGKRblHkMa53ds9DT0kJjY4yw7UtV0AjZdkiljn3qC/BjlV1JG4djT4ZXuCVZQMcg1IxDoY5gfrV
q6eoiK0uC7eVL82eh71NE4jVt5wF70yGGGJ9wfJ7Z7UojEwcEkAnPFJ2bAe8isFdGzg44qC9jySR
16ipfJEMOAc85yan2ho1B9BSTtqgM21B3nFam0dcDNMSJVOep96kpSlcYUUUVIAKWkFLSEFFFFAw
prOEHPX0okbYuaijTflmPFNLqxMXzXb7o/Lmk3yL1H5io5bxUysS5x3PSoxfvnlFq+V9gLaTjPzD
FTKQwyDkVVimhnO3G1qVlaE5B4qXHoAsrGR9i9BTz5UCguQPcio42EaPI3as+WRpXLOef5VSjfQD
S+0wNwWH4inPErDKYH8qyat2ExD+Wx+U9M9qcoWV0BZgz5pz1xT7r/Vj60L/AMfLfSi6/wBWPrUL
cGSr0FVrn/WfhU5YKuTVVmLMSaILW4hBS0gpasQU5QGHvTaVDhqGAFSKSpqa4GM0riF8seTuJ5qM
VOebbjtUApIYUUUUwJIX2vz0PFLMuyTI6Hmoqnk+eFW9Kl6MBsK75MnoOaSZ9z+w4p8fyQM3rUFC
1dwFoooqhBUnlgxbh1qOpxxb80mMgpwUmnoBgGnUNiuMYBV9TTaHOTRTQBRRRQBJb/f/AAqwehqo
rFWBFWgwZMjpWc1rcaEtv9V+NQ6h9w/Sprb/AFX41DqH3D9KF8Q0ZgpaQUtdIFnT/wDj6X6Gi/8A
+PpvoKNP/wCPpfoaL/8A4+m+grP7YFanRozthRk02tG3jEcY9TyacnYTdhiWqL97LGnNbxn+HH0N
TVDcSiNOPvHpWd22TqUZFCyMqnIBxXnfivxHcvqXk6bcyQw25I3wuVLt3z9ORXeXk0MFtJJcyCOI
D5mJxivMNb1C3vpBBptikMPmZVgv7yQ+/wBTXs5XSU5uUo3/ACO3CJqfMuh1/wAO9du7p7q3vLqa
eVQHUytu+XoQPxx+dd0t1nqmPoa4vwRoUmlQSXF0cXFwqjZ/zzUZ4+pzz9BXVrX0EspwlaN6lNX8
tPyPThmeKou0Ju3nr+ZfWZeoOKmSd+quT+OazlqVCQeDivKr8L0ZL91Np+dn/kelR4jqp/vIpry0
/wAzTW7YDlQamju0P3gVrLVj6/nTg31ryK/C1eL/AHdpfO35np0eIcPJe/dfj+RtJcRE4Ei/jxU2
7PTmsGnhnA+VmH0NeRWyPFUtZQf3X/I9CnmWGq/DNfl+ZuU4GsVbqWIgFzz0Dd6nGoSA8ov615s8
LUi7HYpp6o14+tSg1lx6nGB80bg+2DU66hbuMb8H/aGK5p0JroJ6lrOTTgahSWNhlXU/jUgNZtWA
eOtWV4AqsnJFWAaxmRISVskCm0jHLGgGklZBYcDVm24BNVaswcJUy0IlsTyn921VQalmb93j1NQA
1JMVoSA1Nbn96tVwaltz+8FNBJaGiDVIn5j9asg1TJ+Y/WrkzKCJAacpwQaiBpc1JVjUzVSfiU+/
NWFbKg+oqC6+8p9RW83oYQ0ZHRTc0uaz5jU0IW3RKfaorsH5W7dKbavlCvpUk3zRkd66ObmiYW5Z
FTNGaTNFZcxvYvWz7osenFFwu+PjqOar2z7ZMdjVvIreMuaNjnkuWVzPzRmllXY5FNzWDZutS1ay
cFD9RUzrvUqehqgrlWBHarytuUMDwa0hO6szGcbO6KLDaxB7UmanulyN47daq5rGWjsbRd1csW8u
1tp6H9KtE1mE1bgk3pg/eFVCfRkVIdSGdNjZH3TUJNXZimwiQgD3OKyZ7y3gJEk8YI9DUuDb91Gl
N8yLUchjbPbuKt7wwyDwa5yXW7VT8vmSf7q/41AfEbICIYAR/tt/hWsMPWf2S5Um9UdHcR7xuH3h
+tUiawbjX7yVcIEi90GT+tZ73Fy5LPLLk9fmIrVYCct3YLxpK9SSS82dPLeQ27fPMisO2cn8qZPr
1qiApukY9lGMfnXLKrOf6mpBCO5P4V0wy6K+Jtnn1c4wFPepf01NSbxBI6FVgRfQls1mteXUh5mk
/wCAnA/SgIo6CnV1QwtOGyPMrcT043VGnf1IPLdmy3U9yc08QjuTUlFbqKR5FfiHG1fhaj6L/O40
Io7CqV3KxlKgkAccHrV+suYHznHU5rWmlc8erWqVXepJv1dy1YyMwZWJOORmpblcqGHam2kRjQlv
vGpyMgg9DSbtK6MyjRSsNrEelJWogAycDrV5F2oB6VWtlzJn05q3WU30KRnTzuZW2sQBxgGipprU
vIWQgA+tFaKUbE6nnp4FQWY4Zu5NWKqo3kSlX+6ea9NbWO4t0UAgjI5FMlcRoWP4VAEczlTtXljS
wR7OTyx6mlhjIy0nLnrUtU30QrCiqs2ZphGD8o61ZY7UJ9BmoLReGkPVjQtNRlhQFAAGAKKjklWP
g8t6CmjznIyRGPbk0rATOFKkPjHvWc+3e2zhM1YnhVY2ZmZm7ZNOghRoVJXJI61UWkrgPtxGEHl4
yRzzzU4qjbRK+/dnIPBFT+XIo/dyE47NSktdwJ6qSjyZ1kX7p61Is+07Zl2H17U+dd8LAc8ZFJaP
UCTr0pkihlwRkUy0bdCOc44qap2YFQEwttblD0PpVwdKYyKykEcGo4GKOYnPI5U+oqnqJE9MnAaF
s+mafVa5lBHlock8HFKKuxj7T/UD6mp6jhTy4wvepKT3EfQPwR199T8OPYXUyvc2L7EUn5zFgbTj
0GSM+1dT4t8VaZ4WsftGpzAOwPlQJgySn2H9elfNfhfXrnw1q66lZBTKIniIY4BVh3+hCn6qK9A8
JeANT8WX41zxlJOI5AjoGKrJOAejLj5UwPY816uHxU5U1Tgry/Cx2U60nFRitSkW8R/FTWGjG+10
WNy6FowYoPl4G4AF2OOmTjPp19h8JeFtL8LWT2+lwlWlIeaV2LPI2MZJPQcdBgDnjk1q6fZW2nWc
VpYwpBbRDCRoMBRViu2hhlTfPJ3k+v8Akbwpcur1YUUUV0moUUUUAFFFFABRRRQAUUUUAFFFFABR
TJpY4InlmdY40BZnY4Cgdya8S+IfxbklaSw8IyMiDAfUNuCSCMiMMOnbJH07GsqtaFJXkZ1Kkaau
zsfiJ8SNP8MxNaWbLeas4IEcTArCfVz257dfbFfPGr6pfazqEl9qty91dyABpGAHAAAAAAAHHQCq
D73kd3JZ3YszMcliTkknuSaWMHIFeNXxEqz127HnVarqPUdQKkELdyKeIR3JrmckYkukajdaRqdt
qFhJ5d1bvvRiMj3BHcHoa+qfBniWz8U6JDfWbqJcATw5+aF8cqf6HuK+U1iUdea6LwR4uufCGspP
F5klg/8Ax9WyEfvB2Iz/ABDt+VdOExPspWezOihW9m7PY+p6Kis7mG8tYrm1kWWCVQ6Op4YHoalr
3j0wooooAKKKKACiiigAooooAK434k+D4/E2lmW3UDVbdf3DljhhnJQjOOex7H8a7KioqU41IuEt
mTKKkrM8e+CGp2VnPf6TdRrb6jJJuDyNgyY48sD1BBPHXPtXsNeS/FvwlJDcR+JdEjZLiFlknWNV
whQlhNju2duevQH1z1vw68XQ+KNKw5xqVsqi5TYQMnOGHbBwa48LN0n9XnutvNGNKXI/Zy+R1tFF
Fd50BWVrvh7SdeiEerWUVwF+6xyrr9GBBH4GtWilKKkrSV0JpNWZ5b4r+F2hxafc3ljcy2CQxtIU
kfzI+B6scj8zXjlpe3Fjh7W4mtsc/u3K/wAq9b+N/iNVhh0C1dxKxE10QMDZ/Cv4nnj0968SvJct
5angda+exkaarctJWtvY86vyqdoo6SP4j+LYMrb65OE7b4opD+bKTWhpvxT8YRuA99b3XOT59qmM
enybeK4NELsFUZJrQRVhTavXuah4ipHRSf3sy9pJdWemx/GHWEVRNp9hIw+8U3oD+GTirf8Awui6
/wCgDD/4GH/4ivJqKccZXX2vyH9Yqdz2EfGbbBvl0Q7+4S4yMfiBWe3xwutx2eH4SueCb0g4/wC/
deYocfSq1zDs+dPunr7Vax1fZy/BD+sVH1/I9aX40Xs6Yi0W2ikB53XLOMfTaKr3Hxc152/cWumx
LjGGjdzn1zuH8q8nRyjBlODWkjh4wy9+1RUxdf8AmD29R7s6zUfid4rcoItSSAjr5VtGc/XcprPn
+IXiy5QJJrVwev8Aq444z/46ornVhLsWl4z2FTqqqMKMVk8RU2cn97Jc5vqyO7u76/f/AEy4uZs8
HzXZh+tSRosahUAAHpThS1jKXNuQFLSUtSAVVuLUN80fB7j1q1RTTa2AyGBU4YEH0NX7L7v4VLLE
sgww+h9K0PCOm/2j4isLDhllmVWz0K5yf0BrS/PaK3BK7sUJ/wDV0qfdH0r6SPgXwwRg6Laf98n/
ABoHgbwyB/yBbT/vk/413f2VV7o6vqcu5830V9If8IN4Z/6A1p/3yf8AGj/hBvDP/QGtP++T/jR/
ZVXuvxD6nLufNh5kFSCvo/8A4QXwxnP9i2mf90/402XwJ4ZkQr/ZFuue6ZBH45oeVVe6D6nLufOd
U9QzhPSveNS+E2kTtI9ldXdqxB2pkOgPvkZx+Nea+KfBWreH0eS/gSazDbRcRHcp9yOq+nPf161z
VMJWoe9JaeRjOhOGrRwv061rjoKjSGNGyq81LXNOXMZDWOBSoMDPc008vj0qSpYIKOtFFIBjDaRi
lQA8nrQvLk+lH3ZKokfRRRUlDXHcdRSqcjNLTE4YigQsufJfb1wcVk1siojbxE52CrhJRGRafny2
z93PFW6RVCqAowB2pamTu7gKKYnDsKcSAMmmx8ksakTH0UUAFiAoyx4A9TQM6XT/AANr2p6dDd2l
qjQTJvQtIASD0OKsQ/DjxKqkGzi/7/LXt3hqyOneHtOs2bcYIEQn6CtKvfhldJxXM3c9BYSDWp8/
P8N/ExkUiziwP+my1k+INA1Dw/JAmqRLE0wLJhw2QMZ6fUV9L14J8c9Q+1eLYLNWDJZ24Bx1Duck
H/gIQ/jWGLwFKjT5ot3Mq9CFOF0cb5iD+NfzppnjH8YrOory+RHFc0hNGf4xS+Yn99fzrOoo9mgu
aYIboQfpS1lg4ORwaeJpB0c0OmFy+wypB7is6p1uXA5ANQsQWJAwD2ogmtxMSiiirBhRRRQIKUUl
KKACiiigAooooAuWK/Kze+KtVnxzsibVA+tIZpD1Y1m4Nu47miWCj5iB9aaZYx1dfzrd8C+B5/F0
F5Ol+tnHbuse5oPN3kjJ/iGMDH511H/Cmbj/AKD8X/gEf/jlb08DWnHmirr5f5msaNSSvFafI83N
zGO5P0FJ9pj/ANr8q9J/4Uzcf9B+L/wCP/xyuX8deCz4SitGk1NLx7hiAi25j2gDrncc9hinPA1a
ceaUdPVBKjUiryWnyMATxn+LH1p4dD0ZfzrNorn9mjK5ozf6o09fuj6Vnxs2duTj0rQX7o+lZyVh
9CtO2wynODtwKz6vzqHdgxIGe1R/Z4iPvuD7itINJAypRU5tW/gZW/Q1HLE8QzIpA9e1XzIRetWW
SAb/AODjPtUFzcl/lQ4T+dd74P8AhjqeqRLLq8jafYSKHAXBmkBHHB4XtnIz2x3HpOmfDvw1Y26R
tp0dzIvJluPmYn/Pauujl1Wp7z0XmdFPCznrsfN+R61JJFJEEMsciBxlSykbh6jPWvrS1tLa0Xba
28MC9MRoFH6VNXYsr/v/AIf8E3+pf3vwPkHIz15rVhJltQTycfrX01qGj6bqKst9Y204bqXjBP59
awNQ+Hnh66t/Lt7T7Ew6PbnaR+ByD+NY1cqqW9xp/gRLBSWzPBrc/KRU1dpr/wANdT0yeSXSz9vs
9uR0WVfYr0btyPfgY54sHNeVXozoytNWOWUJQ0kgooorIkBS0gpaQBRRRQAVHcf6v8akqK4Pygep
prcGJLKIIlJGc8U6MrNGH29aY58wAGPcPenKXChVQADpVW0EV45Va58vy/lyR1Oanu4TJEAmBg59
KNj7twVQ3rxQwH/LST8BRfW6AImMcSp95h6UgBWRS/fmkaZI+gA9z1pUYTJjOT1Bp26gMuJZ1nCx
g7f93OanZGDFk69xSxyZ+VvvVCi3H2rJJ8vPrxikA9mLMu4YNWH+430qr5wllwoOFOM+tWn+430q
WMrxsyghFyT3p8YxJmRhvPQZ5qOCULKIyDluQaSS1ZrkSbhtzk+tP1E9yVLeKOQyAEH68CmLu5dP
XpUkj7jsTnPWo5JRCAAcY6+5oV2IlSRT6KarxtM9xtkUlMnqvT8aeJI5ByMe4pwBx+7k/A0bAR3b
LCVCoDnPUmpm+SFnjX5iucU1kdhh0VvrTi8n9yjsMggkklifzOQOhxiricov0qFpGKkMuM1JAcxj
2pSF1JKKKKkYUUUUAApaQUtIQUUUUDILjlwBTb1jHbhV4ycGnP8A68Z9qj1L/VJ/vf0rRbpCM+ii
itwCr1rc7v3U3IPAP+NUaKUoqQGhqBCIsajGTmrXhnw7qHiS6mt9MEO+JPMcysVGM46gHmsl5GkV
A3O0YBr234KaYlt4bl1DH769lIPsqEqB+e4/jW+Cw/taig9uptQp+0nys4r/AIVZ4k/6h/8A3/b/
AOJoHwt8Sg5H9n5/67t/8TXvFFex/ZlHzO/6nTPDb/wJrOnW099dtZLBChZiJiTx2Hy9T0rlrr/V
j617F8W72S30G3tozhbmba/POAM/zArx25+4PrXiY2jToVvZ0+hw4mEac+WJA7lzz09KbW14S0F/
Eer/AGFLgWx8ppPMMe8cEcYyPX1rtP8AhUs3/Qbj/wDAQ/8AxdKlhK1WPNTjdfL/ADIhQqTV4o8y
FLXpn/Cppv8AoNx/+Ah/+LrN8R/D06FotzqM+sJIsIGI1tSC7EgAZ3nHJHOOKuWBxEE5SjovNf5j
lhqqV2vyOFooqSPywPn61yN2MADjHNDEFTzTswkelBhBXKHNRdBYLcghkPeoiMEg9qX5o3BI5FSz
AMocU9mBDRRRTAKniOYXU9qgqa2+8w9qUtgQsvywovrUFTXP3l+lQ0R2Bi0UUUxCqMkAd6luCBtU
dBSwqFUu1R/NI3AyandjHAgKOaGYY4pwgAGXbFLmEe/50roVivTqfL5ZHydaZVp3BhRRRQAU5HK9
Oh7U2igC1bf6r8ah1D7h+lT23+q/GoNQ+4fpWa+IpGYKWkFLXSBZ0/8A4+l+hov/APj6b6CjT/8A
j6X6Gi//AOPpvoKz+2BXHUVqDpWVU/2l9gUYGBjNElcTVy3NKsa88n0rJ1C8jtoJLm7cLGgyT/QV
KxLHJOTXm3jjVXvNSezRv9Gt2xgfxNjkn6ciuvBYX29Tl6dTWjS55WKms6reeIb9Y4kkMWcQwKMn
6nHf37V2vhjw3BpaLNOFlvT1cjhPZf8AGuR8K6zZaTMTc2xLPwbgHJQemPTivTUIZQR0PIr7TC0a
cIpR6HbP3VyrREwqRaiFSLXYZEqVIvWolqVetIZItPFMWq+p6ja6XZSXd/MsMCdWbuewHqT6VLGi
5JIkUbSSuqRqNzMxwAPUmvPPF3xJitfNtNAUTXIO03LAGJfXaP4j6du/PQ8Z4w8aXviBnt4822m5
wIRjMgzkFz69OBx9a5XNc0619InTCjbWRo3+s6lqFz9ovb+5lm/vb9uPoFwB+Aq5ZeK9eswBbarc
qo6B8SD8mBrCzSg1yTpwqfGk/XU6oTlT+B29NDtrD4j6/b4Fw9tdr3MsQVvzXA/SvSfA3ieLxRbz
jyvs93b4MkWdww2cEHjPQ14EDW94L1c6L4ks7xpmig3eXOQM7ozjIP4gH8K5J5XhKj96H3afkdMc
xxVNe7P79fzPoYwOOmDQrTRn5TID7ZqzGwdFZTkEZBp3esavDeHn8EmvxNKef14/HFP8CJb+6TpK
fxUf4VYj1idfvpG36U360nlIeqL+VebW4ST+CSfqrflc64cQwf8AEg16O/8AkWBq6fxRPn2IqZNU
t2+9vX8KoG3jPbH0NMNovZm/SvPqcJ14/Ck/R/5nXDPMLLe6+X+RtR3lu4yJkH1OP51ciuISAFmi
J9A4rlzaN/C4P1GKYbWX0U/Q15tbhrFR0cH+f5HRHMcJU2qL56fmddM2QuKZXKCGdPugj/dNSrPe
xDAeUfXmuOeR4mmtYv5po3hXoy+GafzR04NS25/eCuT+3Xo/5ayf98//AFqemq3kZz5gz7rXLLLq
sd7GtuZaHag1TJ+Y/WudXxBdjqYj/wABoGtz55jjP51DwVV7WJjTaOjBpwNc3/bk3/PGP8zS/wBu
zf8APGP8zS+pVuw+RnYwtmJfpTLr7qn0NcvH4kmRceRGfxNK/iSV1wbeP8zVfVKttjL2MlK5v5pc
1zf9vzf88I/zNJ/b8/8Azxi/M1P1Or2L9mzq7Z8SY9at5rik8RTqwYQxce5qQ+J7rtFCPzrWGFqp
WaMp0JN6HRv8rkGkzXKy+ILt2z+6U/7tQtrV43SVR9FFR9TqX3RqqUrHYZ96vKwZQR3rz46pfdfP
fH0H+FV5vEksQKS6kqAHkFgMVvDA1UyJUebqeiXS5UMO1UpJo4/9ZIi/7zAVwdvfnUQTDdNcLu2k
+YWGetTfZZf7o/Oumnk1et70E36JkSnSo+7Uml8zsje2v/PzB/38FMXXbGEFWm3em1Sa5JbOQ9So
/WnrZ/3nP4DFdtHhnFSd+V/Oy/M5qmYYOOjnf0udJJ4ntBwsMzj8BVCbxCMfuYDn/bb/AArNFpGO
pY/U08W8Q/gB+vNehDhOtP47L1f+RzvOMJD4U3/XmPl1y8f7vlp9Fz/OqN3r0sC7rrUUgXplnWMf
0ryX4hXmsab4qlRrqdLTIktkD4UpgZyBjPIPXNczK13ruocKHkwSF6BRXVT4YpwV6kkrdl+rM5Z2
m7Uqd/V/pr+Z7LfeKdKhx5+pxSs3AWOTzCfwGagk8SWiKGWOUr7gLj864CPRV0+PfEPNcDlsc/8A
6qW2keZh9rJ2fwj/ABrN5fQj8LbOqONrNapI7C98TzEAWNunP8Upzj8B/jWPf6xq9xAyxX5t3PeO
NcfqCf1qPaAo29McUxlq4UKdN3UV89fzM516k1Zyfy0/I5yHX9c0jVftD3c0kg4ZZSWSQenP8x0r
1fw54ks/ENrutj5c6nEkLkbh05A7jnrXAXtpFdReXMuR2PcH2rm2W90K/S4tJmikXPlzL6ehzx+F
d9TD0cdGySjNbdj5zH4Fy9+9/P8AzPoFQAMClrmfBXiqHxDbtHIoiv4hmSMZww7Mp/Dp2rpq+crU
p0ZuFRWaPClFwdmFFFFZkkc2Qu5TgimLccfMPyqWQZjb6VTq4pNaiZObj0X86WBVZjIVG/PWq9Oi
fY2e3em46aCuXKKRWDDKnIpHcIOTz6VlYZWn/wBacUylY7mJPehkZQCRgGt1oIsWg+Vj71PVOCTY
3PQ9atqQwyORWU1qUhaKazqpwSAaKmwHmtNdFcYYVXUTSDJbaO1KfPjOc7hXtW8zsBrdlOY3P41E
xkOSzZ2GpzcK0TY4bHSmyBY7UKeGPOKab6gTRvmEO5A9aia4LMFhXJ96jhiaUAsfkHQVcVQgwowK
TsgKrxzFWZ24AzjNRxeYTiMnOORVudyAET77dKhjJt5Cr/dPemnoAWzqjlXGHJ6mrlQzxiVMj72O
DSWshZdrfeWpeuoD7kZhb86S3I+zqfQVKw3KQe4xVAOYkkjbr0oSurATWRz5h96tCorZNkK+p5NP
lcRxlj+FKWr0GR3MqIpUgMSOlVikqxbjkJ9antY8/vX5Y8ii6k3fuk5J64qlpohEMMcjJujbHPrU
vnSRMBKoI9RQmbdwrHKN39DVojIweRSbAbG6yDKmqm6WUlsj5OaklgKnfCcEdqSyYAsCcMelCsld
ACRySgMz8H3qeKFI+RyfU1ErCCSQHhTyBSeZNKf3Y2r60O79ALVTWlvNeXcNraRPPczNsjijGWc+
w/X2AzV3wr4U1rxNfrBpq5j3AS3DjEcQ7knucdhyf1r6R8FeEbDwrp0cVuiSXpQLPdbcNKe/GTgZ
6DNdGHwcqzvsu5rToup6HKfDz4ZRaS8Opa9ibUEJKQAhoo8jgkY5Yc89OemQDXp9FFe5SoxpR5YI
9CEFBWQUUUVoUFFFFABRRRQAUUUUAFFFFABRRRQAVm+ItcsPD2lyahqs3lW6ELkDJZj0UDua53x3
8QtK8KKYCwvNTI+W1iYZT3c/wjn6nt0OPnPxFrmoeItTa/1e4M8/KoMALGpJO1QOg5+pwMk1x4jF
xpe7HVnPWxChotWdH8Q/iBf+LJjbxj7LpMbkxwrkNJxjMhzz34HHPOa4qkPAqPJzmvInOU3zSep5
8pOTuyWikByKWoJJ4nzwetS1TqeKTcMHrUSiIlFVpOZG+tWaqHkmiIHqfwZ8cSaZfRaDqk0Y0ybP
2d2U7o5WZcLnOAh+bqOuOe1e/V8WkZBB6V9B/BvxwdZsxo2qzFtTt1LJNIygzpuOAAMcqMD6DNer
gsT/AMupfL/I7sNW+xI9Pooor1DtCiiigAooooAKKKKACiiigBGVXUq4DKRggjIIrwjxPpV18OfF
VtqeksBp0sn7mLzCcgD5o29RycH/AAr3iqOuaXba1pVzp96m6Cddp9VPYj3B5Fc2Joe2jdaSWzMq
tPnWm6E0HVrbW9Jt9Qsm3QzLkeqnoVPuDkVfrwrQdUufhr4wuNK1OSVtKlYO2FA3BvlWcDnspBx1
2+2K90RldFdGDKwyCDkEUYav7WNpaSW6ClU51ruhapa1qdto+l3F/eyCOCFdxOM5PQADuScCrteA
/G3xiNT1IaJps260s3IuSAMNMOMA9fl5B9/pVYit7GDl16BVqKnG5xOu6zcapqFxfX7hruc7mC9F
9APQCsL60AZ4FW7a3YMHfjHavnfh1b1PLvd6kltH5UeSPmNShCeTUc86x8DlvT0qlJI0n3zn2qFF
y1FYvM8K9X59qTzoT/FiqAparkQGkoVhlGzTgONrDINZY4OR1qzBdFeJPmHr6VLgxEc8RifHY8in
2kwjJDn5TVqaMTRgKR6g1QkjeM4YY96aakrMZqAggEHINFZccjRnKn8KvwTrLx0b0qJQaAmFLSCl
qAClpKWgAooooAK6/wCDsLzfEC2ZBkQxSyv7Lt25/Nl/OuQr1r4B2K+XrOok5cyJbAegA3H89w/K
urBQ568V8/uNaEeaoj1uiiivpz1QoqpqWpWOlwrNqV5b2kTNtDzSBAT1xk9+DWaPGHhs9Ne0s/8A
b0n+NQ6kIuzaJcorRs3aKybTxJol5OsNpq9hNM3RI7hWJ/AGtanGUZaxdxpp7BTZI0ljZJFV0YYK
sMginUVQz58+JnhiPwzq0bWhY2V3ueMED5CDygx2GRj2rjQzHoK+iPitZ/bPA2oYUFoNs4JGdu1g
SR/wHI/GvnqvmsdRVGraOz1PKxFPknpsRjO4+tOD4OGFb9v4N8Q3MMVxbaVPJDIoZWBUZB79anPg
bxKRzpE//fS/41z+xqP7L+5mapz7M5yiuhTwN4mBwdInx9V/xrI1KwutMvHtL+FoLhACyNjIyMjp
7VEqU4ayTXyBxkldopp940N/rK09H0DVdYfOl2M1ygbazqMKDjoWPArr7P4Ua3JEZbu7sLY9dm5n
IHuQMD8M1pTw9WprCLYo0py2RwFFOkUJK6qwcKxAYdGwetRH5mx2rEl6BuJOFFJ82/3p5woq3pWl
ahqjSf2fZT3JX73lIWxTim9Egs27FMMR1FPBB6V3WlfDDXrxA9ybayQjIWVyz/koI/M59q1m+Ds/
bXIh/wBuh/8Ai66I4KvNXUP0/M1VCq9keWsxBwKMuewFeg6l8KNbtjvsbqzvlUdDmJz9Acj16sK5
DU9G1LS9p1GxuLYMcBpEIB/HpWdTD1KXxxsTKnOPxIzQhP3jUg4phfHA5NJl/SsTPYkrT8L26XXi
TSoJQTHJdRqwHpuFZIfnDcVe0zTLvVrr7Lp9u1xMVLbFx90dTz9RVQupLS5Ud9D6ior5wbwD4gKk
DRZP/HP8aSHwD4gVTnRJBz/sf417n9oVf+fL/H/I7/rM/wCT+vuPpCvmL4jXSX3jvW7iLGwziMYO
c7EWMn/xypdS8D63bW8lxPo7pDEhZ3OzAA6965cYAAHSuXFYudaKjKHL/XojnxFaVRJSjYKKKK4T
lHUVZ0+wu9RuRb6fbTXMxGdkSljiuv0f4YeI9Q2tNDDYRHqbl/m/BVz+uK1hSnP4VcuMJS+FHD0V
6uvwYuioLa9AGxyBZkgH676oal8INbt0ZrG8srwLk7W3RM30ByM/Uj61q8HXSu4/kW8PVX2Tziit
LWNC1TRXC6rYz22WKhnX5WI9GHBrNrmcXF2aMWmnZhRRR0pAFFJketLQIfJG0ZG7vSvGyKpbvWjp
dldaqRDaW8tzKDnZGu410th8N/EuqSBnt4rKH+9dSYPvhVBOfrinTp1KjtGNy405S+FHDUV6pD8G
r1lzNrdtG2eiWzOMfXcP5VR1D4R67AM2dzY3YyeNzRt7cEEfr+ddDwddK7iW8PVX2TzmitTV/D+r
aMobVNPuLZC20O6/KT7EcVl1g4uLs1Yyaa0YopadBE888UMKl5ZHCIo6sxOAB9Sa6NvAnicA40e4
J/3l/wAaFCUvhVxqMpbI9i+EWmjT/A9mxA8y8ZrpiO+77v8A46FH4V2dZ3hyx/szQNOsef8AR4Ej
59gK0a+now5KcY9ke1TjyxSCvFPjzcRya5pdup/eQ27u49mYY/8AQDXtdeEeOfDPiXWvFupXselT
vA0myEgrgoo2g9e+M/jXLmHM6XLFXu/+CYYu7hypXuee0V0v/CCeJ/8AoDz/APfS/wCNYN/aT2F5
La3kZiuIjtdCQSpxnHH1rwpU5R1kmjzHCUd0RR/fFaS/dH0rNj++K0l+6PpXPU3F0IGJWVyKegDo
SyimHd5zbOtOzKDyCfwpdAY1QjZ6rgZ617F8MPBUdnbx6vqqLJcygPBGekSkdSP7xz+FcJ8N9KTW
fFlvBIAscCm5kH94KVGPzYV9C16+WYZTbqz6bf5nbg6Kl77CiihiFBLEADkk17p6IUVxusfEbQdP
maCCV76ZeCLcZUf8COAfwz71nW/xZ0My7L23vrQZ++Yw649flJP5A1zPF0FLl5lcydemna56HRWZ
pGv6TrORpeo210ygFljkBZQfVeo/GtOuiMlJXTNE09UFcV8QfCum6hYTai8iWN1AmfO6IwHZh/LH
PPeuxubiG1t5J7mVIoYwWd3YKqj1JNeC+NvGDeJ7xUjEkWnREPFFIBkuARvPocMeO2a4cwrU4UuW
au3sjDE1IxjaWtznByB2ooro7PwT4hvLWK5t9P3QyqHQmZFyD0OC2a+ahTnU0gmzy4xctlc5wUtd
R/wgPiX/AKBw/wC/8f8A8VS/8ID4l/6Bo/7/AMf/AMVV/Va38j+5leyn/K/uOWoq5q2m3Wk3rWmo
RiK4UBigdWwD05BNU6xacXZ7kNNaMKKs6dY3OpXsVpZRGW4kOFXIGeM9TwK6D/hAfEv/AEDh/wB/
4/8A4qrhRqVFeEW/RDjCUtUrnLUV1P8AwgPiX/oHD/v/AB//ABVQX3gvXrGzmuruyWOCFS7uZ4zg
D/gXP0qnhqyV3B/cyvZT7M5O7mK8D6VTaRm6nA9q0J4RJ/hV/Q/C+qayJTpNn55ixuJkVcZ6csRT
prm92KuzNJt2SOdqWGXYeTxXVf8ACt/Ff/QLH/gRF/8AFU5vhv4pwNumA8c/6RF/8VXS8PV/kf3M
v2U/5X9xhjEoz0YelAdo+HGR61e1Pw1rHh5IpNXtRbpI22P96jkkdeFJrS0Twxq+tbDZWbeS/SaX
5I/rnv8AgDXNKjNS5OV37E8kr8ttTnWCeYGQY3dasv8Acb6V6GnwluThm1iFG7qtsWA/HcP5VW1j
4a6paWzyWVxDfYHKKhjc/QEkH860lgMQldwf4f5mrw9VK7R57EUXLsBu6CnZeboMLUslnNa3MkN5
C8M8Zw0ci4I/ClY4Un2rmejt1MWtSGRlhQheuOTWdI+989u1aVjo2qazMU02xnuQpALIvygn1J4F
dtpnwi1Se3339/a2ch5CIhmI9jyoz9Ca66OGqTV4xuVClOfwo81p6yuO+frXqP8Awp26Ubk1yFmH
IBtCAT9d5xXMa94H1nRy73NoJLdBuM8DbkA9T0I/EVdXDVaavOOn3/kVKhUiryiYlpLvGDViooIh
GKlrz5WvoZCjpRR2ro7bwV4gubaKeCwDRSoHRvOjGVIyD96qhTnUdoJv0HGMpP3Vc52iun/4QPxJ
/wBA4f8Af+P/AOKo/wCED8Sf9A4f9/4//iq0+q1/5H9zL9lU/lf3HMUVau9PurTUHsZoj9rRtrRo
Q5z6cZrpdF+H2s6iN9yqWEXrMCX/AAUf1IqYUKlR8sItsUacpOyRyApa9H/4VXP21iL/AMBT/wDF
1zeu+DNY0cM8kIubcZPm2+WAHuMZFaVMFiKa5pQdvv8AyKlQqRV2jnKKKieYA4HPvXKlcyGXHDqa
L1N9vkdV5rodL8GeINXKeXZGCJhkS3B2LjHXuT+ArqofhVc+QFm1eEMRghbckD8dw/lXZDB15pOM
H+X52NI0KktUjyGivS9Q+EWpwwF7HUrW7kH/ACzeMw5+hy3P1x9a4a90XUNPuhb6jay2shG4eYvU
ZxkevStKtGpR1qKwp0pw+JGcASQAMk1ajszjdMdq+g61ZURwDEYy54zQUON8mfpXK5t7GYkSAMsd
tHudjgbuSTX0h4d05dK0SzslzmKMBie7dz+ea+fdLtJtSuo7SxhL3EpKogIGTgnqfYE1tQ/DvxBG
STpcZ4xxLF/8VXZga06LlOFNy6f1ozpw05Qu4xue80V4M3w+8QFtw0ePd6maL/4qmS+A/EccbSPp
saooLMfOiwB/31Xpf2hiP+fD+9//ACJ1fWqn/Pt/18jU+Kuotd+LTZj/AFdlEEx/tMAxP5Ff1rjL
n7g+tMhXbMQccDtXUHwP4iuLeOSHT8q4DDM0Y4I92rxJe0xNWU4xbv21OCXNVk5JHV/BbT1Wyv8A
UT9+SQQLz0CgE/8AoVel1heCNHbQ/DVpZyqFuMGSbGD87HJGR1xwM+1btfUYSn7KjGLWp69CHJTS
CvO/jReImjWVln97LP5uM/wqpH82FeiV5p8S/D2t69rMD6fYeZbwRbBIZkXcScngtn0qMfzewagr
tk4m/s2oq55RRXU/8IB4m/6Bo/7/AMf/AMVWBqdhc6XfSWd8gjuY8b0DhtuRkcgkdCK+bnRqQV5x
a+R40qco6yVirSqxU5BxSUVkySdZQwxIPxqRF2cDlDVSnxyFPcelQ49h3FkTY3t2plWvllT/ADxV
ZxsJ3cY704u+gmJUtuf3n1FVHnA4UZ96jE8gOVbB9qrlbQF+4OZKiqr58hOWbJ96kScEgMMe9HK0
gJ6fEm9vYdaag3kbec96s5WJOf8A9dRJ20EgdS5weFFMaUKMRgVHJIX+npTKFHuMUksck5pKKKoA
p1Np1AmFFFFABRRRQBbtv9V+NQah9w/Sp7b/AFX41BqH3D9KzXxFIzBS0gpa6QLOn/8AH0v0NF//
AMfTfQUaf/x9L9DS3q5um9MCs/tgVgCelKVIFSjiiqFcgOcHHXtXJT+FtMtIZr3VLieUAl5CDtXk
+g5/Wuwde4rzPxnqzalqItLYlreFtqhefMf1/oK9DL41ak+Wm7Lqb0FKTtF2MiO3Gp6oLewhESyu
VjTJO1fUkk9uTXr8K7I0T+6AKwPCuirpVrvkAN3KMu2OVH92uhWvs6FP2cdTpqS5nZEq9KkWolqR
a2IJVqQVEtOlljhiaWZ1jjQZZmOAB6k1IyPVdStdJ0+W8vpPLgj6nGST2AHc14T4s8SXXiG8+0XZ
8q2j/wBVAD8qD1Pq3v8AlVzxx4ik17VXKMwsYCUhTPDYJ/efUjH0H41yenWUviDVEtYpY4LZSGln
lYKkSZ5ckkdPrXHVqczsjspU+VXe5WN3LcTpDZRNLI52qqqWZiegAFdRZ/DnxpeRCX+z3hUjcBLI
qE/hnI/HFejaN4s+H/gWz+x6ZM13cqAk09tCXaUjvvOAR9DircXxs8NM+HttURf7xhQ/yepUI/aZ
TnL7KPFNb0jX/DkirrVhNArEBXdcoT1wHHGfbNQ2tyk4+Xhh1Br6OsfiF4P1u3lgbVbZUdMSRXim
IEHjHzAA/gTXlXxZ8Bx6HjX/AA8QdLkYCSOPBWAnABBzypJ/A/UUpQsrxdxxnd2krHHilYgIxb7u
OagtJhPEHHB6Ee9dr8NvDkuua5HNIi/2faMrzGQHD9cIPU8c+n4ipiruyKbsrs9v8OCUaDpwuP8A
XC3Tfn12jNaXemIABgDAHGKf/Ou1HELThSEEDJBH4UKaAHClpBS0ALSimiqetalBo+lXWoXZIht4
y7AdWx0A9yeKTGhdY1Sy0exe71GdIIEHVjyfYDufYV5V4k+Lk5lMfhy1jWIcefdoSW91QEY/H8q8
98S69feI9Ta+1J8tyIogflhX+6v9T3rKJrnlVb2OiNJLc39Q8ZeIb9ibnVrnBOdkZCKPoBVW28R6
1bSb4NVvUb180n+dZNFZPXc0Wmx6BovxV1uzkiTUo7fULZfv5TZMRjswO335HPqK9a8MeJ9G8TRO
dOlUyocPDIu1xwOcHqOeo4r5lqW0uZ7O6iubSV4biJg0ciHBU/57dDTtF/EkwfN9ltH1j5EX/PNP
yo8iL+4tcL8OfH0Ovomn6myQ6qqgBiQq3J5zsHqAMkV31WsLh5a8i+5GbxFeOnO/vZF9ni/uCj7P
F/cH51LRS+pYb/n3H7kH1uv/ADv72RfZ4v7gpfIi/uLUlFP6nh/+fcfuQfWq/wDO/vZH5EX/ADzT
8qcI0HRF/KnUVSw1GO0F9yIdeq95P72IFA6AUuKKK1UYrZEOcn1GSrvjZR3FeaeI7NU1aUoP9YA5
9ia9Ori/Elti5jfHYqfwr57Oo8lWnUXVNfk1+p9HkFRuM6b8n/n+gngc+U06HpvUgfUEf4V2tcP4
fzFeMBxuX+Vdup3KCO4zVZHUvKrT9H+Fv0Iz+nZwn6r+vvFooor6E+dCiiigDzr4zadJNpllqEar
stWZJT3w5UL+o/WuV8ISxx6RKxA3rKc4HPIGK9c8T2T6l4d1Gzhx5s8Domf7xHFeHeElxrTW83yg
qwKnuwPT+defmFPmptnbgp8tRXOvtVkMZaUkljkD0qvd2QfLR8N6etapWo2WvnrnumHDM0LbJM7Q
efUVe4ZQynIPQ1Lc26zLzw3Y1m/vbSTBHynt2NPcRZZar3MCTRNHKoZG6irUbrKm5fxHpQy0k2nd
A1fRnG3MNzot/FcW0rIytuikHUEdjXqngrxjBrkaWt4Uh1IDBXosvHVf8K5WeFZY2SRQyMMEGuW1
bSHtyZIAzw5zx1T/AD611zjSx0VCrpJbP+vyPFxuXp+9Hb8j6BqE3MQP3s/QV5j4c8eOY47TXXZ+
eLnA/DcAP1ru42WVVaNg6t0KnINeHXwVTDytU/4B8/UpypuzNJ50eNgrc+lQVNaQ+Wu5vvH9Klki
VxxwfWua6TsZ2KlFKwKkg9RT4FDOQwyMVTdlckjBI6GirTQoRwMVWdSrEGkpJjsPt03Pz0FW2AZS
D0NVbdtr4PQ1aJwCT0FRO9xooMMEj0oBI6GlY5Yn1p8MW/knAFaXstQGUVbESY+7RUc6Cx5vRRRX
qHaVblAZFEY+Y88ULC77mlznHANSR83UhPYAVPVOTWgEFmf3WPep6qwfu7hkPQ9KluTiFvfik1qA
23G92lPPOF+lTSRrIuG/OkiG2NVOAQKfSb1Aq/vYD/eQUxZFE4dRgHqKu1BdovllgAGHeqUr7gWA
QRkEEetUJWDSs6qCoI/GmlVITYSWPUVMLeZVKhlAPWmkogWo2DoGHQ1VupAzqoOVHJxUXl7JQkpw
PUVLaRh3YkZUetFktQF82SUbYV2qOKmggEfJ5b19KmorNy6IBkyCSMg9e1Nt33RjP3hwakyPUVCn
y3Tj+8MihbWAlkbbGx9qqxQ74d68ODx71JeMBGF7mp4l2RqvoKadkBTKupV5/u5wcmvSvh/8OLzx
LDHeXbvZaSwzHIAC8wz/AAg9BjPzH2wCK0vh9oPhWz8vUvFGv6I1wpSWG2+3RkREc/vOcE9OOgx1
r1tfGnhcgFfEWjkdsXkf+Nehh8NGaU6r07HRSpRes2amlaZZaRZraaZaxWtsvIjiXAz3PuferdYP
/CZ+GP8AoYtI/wDAyP8Axo/4TPwx/wBDFpH/AIGR/wCNeqqlNaJo7FOC2ZvUVz6eNvCzjKeI9GYe
17Gf60p8aeFx18RaOP8At8j/AMaftId0HtI9zforB/4TPwx/0MOkf+Bkf+NMPjfwqOviTRh9b2P/
ABo9pDug9pHudDRXO/8ACceFP+hl0X/wOj/+Ko/4Tjwp/wBDLov/AIGx/wDxVHtI9w9pDujoqK53
/hOPCn/Qy6L/AOBsf/xVH/CceFP+hl0X/wADo/8A4qj2ke4e0h3R0VFc7/wnHhT/AKGXRf8AwOj/
APiqP+E48Kf9DLov/gbH/wDFUe0j3D2sO6Oiornf+E48Kf8AQy6L/wCBsf8A8VUVz4/8JQQSSnxF
pUgQZ2Q3SSOfYKpJJ+lHtIdw9pDujp68f+JPxVjto5NN8LSxzzuhD3yNlYuoIT1b36DjrXI+PPH+
qeMvPsdGtbiPRhgsiRFpZMHq5GcA8fL7d685GCOOlebica37tP7/API5K2IvpAmvLme8uZbm6lea
4lbc8jnJY+pqtT6ay9xXnJnIKDkEd6ZS9KMc0wHA4UetNyTQeTSquevSgB69BThSUCkImWX5CG64
61FSN0NMVsfSkkBJVrTb650y/gvbCUw3UDbo3HY9P5Ej8aq0tGwbH1f4F8T2/irQYr2EqJ1xHcxq
CPLkwCRz25yPYiuhr5N8FeJLjwr4gg1GDe8Iyk8KniWM9R9RwR7j3NfR0XjrwrJEjnxFpKFgDte8
jDD2Izwa9vDYpVI+87NHo0a6lH3nZnSUVz3/AAm/hX/oZNG/8DY/8aP+E38K/wDQyaN/4Gx/410+
0h3Nvaw/mR0NFc9/wm/hX/oZNG/8DY/8acvjTwu33fEWjn6Xkf8AjR7SHdB7SD6o36Kwv+Ew8Nf9
DBpP/gXH/jQPGPhojjxBpJ/7fI/8aXtYfzL7x88e5u0Vhf8ACYeG/wDoP6T/AOBcf+NH/CYeG/8A
oP6T/wCBcf8AjR7WH8y+8OePc3aKwv8AhMPDf/Qf0n/wLj/xo/4TDw3/ANB/Sf8AwLj/AMaPaw/m
X3hzx7lH4heEofE+ksI0iTUohmCZl59SmfQ//XrjPhH4yMUw8Naw3lyRlkt5JXwQykAwkHuOcfQj
698/jXwuhw/iPR1Pob2Mf1ryr4yDw7qwj1zQte0ybVYdiSQw3sbM6A8FFB+8pOfUj6CuSulGSr03
qt/NHPVlGL54NX/M7r4teMV8MaJ9ntHP9q3qssG04MQHWQ/TPHqfxr5t/eTysxJeRyWZickknkmr
moXl3rmpzX19IZLiUgu59hgY/KnKFiXagrzMViXVnf7jkrVXUlfoNihSIf3m9aWeXyo/9s9BTlGW
qldvumIzwvArlSu9TJEJOSSetWoLXcA0mQPSm2cW99x+6v8AOrzMEUlulOcuiGIsaL91VH4U4qD1
ANVHncnjgU0TOD97P1qeRiuTyWyOPlG0+1U5EaNsMP8A69XoZRJweGp08Xmx4/i7UKTTswKtpNsb
ax+U/pVtwD8rjINZlaETGS3UnqKc11ArXFuU+ZMlf5VADg5FaKtj6VFPb7vnj/EU1Loxbjre4zhZ
Ovr61arIqzbXGzCv93sfSlKHVDL1LTadWQBRRRQAV718GdONj4PWdxhryVp/w+6P0UV4ITgE19Oe
CrN9P8J6VbSffS3XIPYkZx+tenlcL1XLsjqwivJs2qKKK949A8i+Pt04/sSzVh5bmaZl77l2BT+T
NXk6jArtfjDf/bfG8kYJ2WkKQgZ4zyxP/j2PwFcXXy+Nnz15P+tNDyK75qjYf05r2f4M+I7rUIrv
TL+aSd7dVeF3OSE6bc9TjA6+teMV638C9NIGpak4YZ2wJkYBHUkevYfhV5e5KulH5l4Zv2ises0U
UV9KeoYXjt1j8G6yzhWX7LJ8rHAPHSvm+zt3vLy3tYuZJ5UhX6swUfqa92+Md0lv4IniLlZLmaOJ
AD1IYMR9NqtXknw/sW1DxnpMQGVjnW4Y5xgJ838wB+NeFmP7zERpry/FnBifeqKJ9HW0KW9tFBEM
RxIEX6AYFSUUV7p3hXkFn4Zbxv4y1TVLwumkR3BhBBw02z5SoPYDHJ/Ac9PXnUOjKc4IxxUNhaQ2
FnFa2qBIYl2qB/nrWFagqzSlstTOdPnavsFjZ29hapbWUMcECDCoi4Aqvr8y2+h6hKzhAtu53eny
mr9cN8Y9Q+xeDJIlYrJdyrAuM8j7zD/vlTVVpqlTcuyHUkoQbPBicJz1xTrWKSeaOC3jeWeRgqog
ySfSkggkuLiKGFWkllYIiryWJOABX0D8PvBtv4bsUmuEjk1WRT5kvXYD/Cvt796+cwuFliJcq2W7
PLo0nVemxzPg74XIPs194kbe4O/7COU9g57+69O3Izn0+xsrawt1gsreK3gXhUiUKB+AqeivoqOH
p0VaCPTp0o017qCiiitjQKgvbO2v7Z7e9giuIH+9HIoZT9QanopNX0Ybni3j/wCH39lJLqWiq8lo
WLSQY/1C4zkEnlc547ZFed19WMoZSrAFSMEHoRXz18RNAGgeI5o4IhHYz/vbcAkgDuvPoc/hivBz
HBql+9p7PfyPPxNBQ96Oxyzrke9eifA63aTxHe3PO2G1MZ44y7KR/wCgGvPa9r+CdmkPhm4uhjfc
XDZ45AXAArDL4c9ePlqZYaPNUR6FRRRX0x6pxHxi1A2Pgm4jUgPdutuM9wclv/HVNfO1e0fHu+UW
mk6eOWaR7luOm1do/Pe35V4vXz+YT5q7Xa3+Z5eLd6lgJwMnpXffD/4d3HiSBb+/kktNNba0TKoL
TrnnHPAwDhvxwRVz4ReDDq12us6iuLG2k/cxkEGWQYIb02jj6kHpjn3atsHglUXtKm3YvD4bm9+e
xmaHoOl6FCYtKsobYEAMyL8z47sepP1rTopksscQzK6oPVjivZSUVZaI9BJJWQ+iqtrqNldsVtby
3mYYyI5A2M/SrVCd9h3uVtRsbXUrR7W/t4rm3fG6OVQyn8DXg3xM8D/8IxKl7p7M+lzPsAc5aFj0
BPceh/CvoKqmrWMep6ZdWU4BjuI2jORnqOtc+Jw0a8fPozGtRVVeZ8m01/u1YvLaSzvbm0mx51vK
8D4ORuRip/UGoGGRXzm2545HXpvgT4YXGqx/a/EPn2docGOBflkkHOd2fuDp789q2/hL4Cjiht9e
1iMPO2JLWBgR5WDw7A/xdx6cHrXrVethcCpLnq/cd9DCprmmUtL0nT9JhMWmWdvaxk5Kwxhcn1OK
u0UV6qSSsjuSS0QUUUUxkN5awXtu8F3DHPA4w0cihlI9wa8F+JXgV/DkjX+n+ZLpcjksSABblmAV
Pcc4B+gr6ArB8a6po+m6FcDX3BtZl8ryQNzyZ7KPXvnt14rlxVCFWD5tGuphXpRnFt6eZ8++CLJ7
/wAX6PDHwRdJKT6BDvP/AKDj8a+oK8G+DMIfx3NLbBvs0UEu3d94KWG3PvgV7zWGWwtTcu7M8HG0
Gwooor0TrCiiigBk0iwwvI/CIpY/QV8p6rdm/wBUvLxjkzzPJn1ySa+mPF18mm+GdTu36RwNgepI
wB+Zr5cUbVA9BivHzSWsYnn46WqQ+P74rSX7o+lZsf3xWkv3R9K8SpucPQgZikxIqdSGGRVaX/WN
9aVJCqkCla6Bs9Q+CcEb6rqlww/exQoin2ZiT/6Ateu14t8Eb0x+I7+0bH+kWwfJPdGHA/Bz+Ve0
19Jllvq6Xr+Z6uEadJBWf4igubrQr+CxfZcyQssZ98VoUV3yXMmjoaurHyzcW0tvM8M0TQ3MR2vE
wwyn6Uz5Zk2SDmvpbXtC0/XbXyNRgEgHKuOHT6HtXnPiL4UymUSaBdx7T1iumIx9GAP5EfjXztbL
KtPWGq/E8yphJx1jqeSxS3OmXiTWs0kMyEMkkZwRXp/gP4oSo8Vh4mZWjPC32cFf+ug7/UY7cd64
jWdGv9PdrfVLOW3lXoWHyn0IYcEfSuedSjlW6isaFepRlpo+qMYVJ0noej/EDx1/bt9Jp1k4XS4n
+Vwf+Pgj+I/7PoPx9hxssQxleD6Vk1qWUhkh+Y5I4NZYicqkvaSZM5uo7yLFhHLeTRW0I3TSusaD
1Zjgfzr6asLZbOxt7ZGLLDGsYY9SAMZ/SvCPhZZSXXje1ZB8lsHmckZGNpUD65b9K9+r18ppWjKp
30/r7zvwUfdcgoorE8bai2leFdRu48+YsYRCOzOQgP4Fga9SpNU4ub2Wp2SfKm2eG+Jbx7/xBqNx
Iclp2AwcjAOBj8BWZQAAAB0FFfFyk5NyfU8Nu7uehfBqxSfWb68cjNrEqqMd3J5/JT+devVxvwq0
wWPhaOdh+9vGMxOf4ei/oM/jXZV9Vl9P2eHinu9fv/4B62Hjy00Fcd8Vb9LTwnLAwy926xKPodxP
6V2NeRfGa9SXWLG0jclreJmkAPALEY/HAP5ijMKvs8PJrrp94YiXLTZ57XtvwmtEg8Hwzr/rLmWR
249GKAfTC5/E14rbwtcXEMCEK8rrGpPQEnA/nX0pp1rHY2FtaQjEUEaxqM5wAMCvLyineq6nZfn/
AMMcuDheTkWKKKK+hPRMPXvDttrt/YS6jiS1tCziAgESMePm9h6d62oo0hiSOJFSNAFVVGAB6CnU
VKhFNyS1YlFJthRRRVDOY8eeG49d0mR4Yl/tGFS0L9C3qhPof54rh/BXgOfUJBda3HJb2qMNsLDD
S/X0X9TXr9FcVXA0qtVVZL/g+phPDwnPnZBZWdvY2yW9lBHBAn3Y41CqPwFT0UV2JJaI32CkdFkR
kdQysMEEZBFLRTA8W+JPhqPRL+O6sgRaXTN8gUBYmGPlGOx5I+lcZXu/xHhSbwbqJkGfLUOvsQwx
XhFfK5lQjRre7s9TycVTUJ6dS9ountquq2lgpKm4kCFh1VerEe4AJr6NjRY41SNQqKAFUDAAHavG
fhRYLd+JjcPjFpGZAM/xH5R+hNez16WT0uWlKo+r/Bf8G504KFoOXcKKKK9g7TG0rw/a2d/dahLG
kuoXErSmVlGYwQBtU4yBgfmT9K2aKKmEIwVooUYqOiCgjIweRRRVDPIfiP4Qe31Kzl0S3UQ3sggE
ES4CybSfyIDH2xXUeCfAdroqC51ER3eoNgjKgrD/ALue/qa7aiuKngaUKjqJf8AwjhoKbmFFFFdp
uFZfiLRLTXtOe1vFIzyki/ejbsRWpRUzgppxkrpiaUlZnzRqNjPpV5NbXabbiJ9rA9B6EfUc1HvB
iBk79q7j4wxmDxHDOf8AlrbgL/wEnP8AOuESMudz9DXx2IpeyqSg+jPDqw5JuJ3Pwdtmm8Sz3IiH
kQW7LuI6OxGPxwG/OvZa4b4RWb2/h+edsBLiYsg9gAv9K7mvpMtp8mHj56nq4WPLTXmFcv8AEq9a
x8H3ro2HkKxD33MAf0zXUV5R8a71zdabYA/ulVpyPVido/IbvzrTHVPZ0JP5ffoPET5KbZw/hq3N
/wCItPtyhcS3CKyj+7uG78lBP4V9HjgcV438GrNJ9fu7l87reEbPTLHB/QfrXslcmUUuWk593+Rl
goWhzdwooor1jsCiiigBHYIjMxwqjJPoK+bvEOoHVtdvr8jHnyllHoo4X9AK948Z36ad4Zv5nwS0
ZiUE9S3A/nXz00TIPUeteHm9XWNP5/1+J5uPltEZRRRXjHnhSikpRSAUPsO7OKrXM5mb0UdBTrls
KFHeq1VGPUaCinIjO4VRkmr8VigX94ST7VUpKO4GdRWjLYqV/dEhvfpVB0ZGKsMEURkpbAS2tw0L
eqnqKtFy/wA2c1nVZtWypU9ulKUVuJk9FFFQAUUUUAFSIhc8UJEzc9B71KzCNdqdaTfRAQUUUUxB
RRRQBbtv9V+NQah9w/Sp7b/VfjUGofcP0rNfEUjMFLSClrpAmtHEc4Y9ADT3YuxZupqNBipoYjK3
HAHU1DstREdFWHtZFyVww9utQEEdQRQmnsIxPGGpnS9ElkT/AF0p8mP6kHn8ACfwrzzw3PZWd2by
+diYf9XGoyWY9/wrpviYXZNNiQFtzOdoGSTgf4ms/QvB09wqXOqsLe3wWMefnI9+y+vf8K+hy+pT
wuHVWb3O+i4wpXk9zodH8S2OpXIgj8yKU/dWQfe+mK31ryfQ41n8SW62m4Q+eWjz1CAkjPvivV1r
6SjNzjdjqRUXoSpUgqJalFakkq1wPxT1x4IYdKtZF/fKxucdQvG1fxyT+Fd0zrHGzucKoLE+wrwf
W70anq13eqpVZ33gHqB2rCvKyt3NqEbu/YzWFZT6YfMOyQBPccitcimEVxHaUUsIUHzAufUmnm1g
Ix5a1ZNJigCjJp8TfcLL+oq7putaxoVvLb21x5unygrJbSjzInBz1U9OpPFLitnwpoNx4i1dLK3+
VAN80pBwiD+p6CmlroJvTUp/D3wvf+JtSlS1H2ezX/WzlSVT2Gepx2/OvpLRdLtNG06Ky0+Ly4I+
g6lj3JPcmm6Lplpo2nRWVhEIoI84Hck8kk9yTXpXgjw9t2ajfRkPkNAhyCv+0R/KuiMVSV3uc7k6
jstiXwl4Vi8kXeqxLI7gGOFugBHVh6119vY2lugWG2hQDsqCpRTxWEpNs2jFRWgeTERzFGf+Aiqs
+jabcEmaxt2J77Bmrop1K7KsjkdU8C20259NmaB8f6t/mUn69R+tcRqmmXelzCO9hMZP3W6q30Ne
0KaZd20V5ay29wgeKRdrD2rSNVrczlST2PDhXE/GRZG8CXPlZ4miLY/u7ua9V8WeH30W6DxZazlJ
8tsklcY4auW1Sxg1TTLqxu1LQXEZjcA4OCOxrf4o6GK92Wp8pmmmreqafdaTfzWOoJsuYG2Pjo3+
0PUHqKy4Le81rUI9N0q3e4uJDtCJ1Y/XoB7muM6yOe9AfZCvmOeBj1rfsfAvjLUbeO4g0q4WKTO0
uyxn0+6xB/SvYPCXh7w38N7IXmrajarqjxmOW4eTqM5KovXsOgycU+f4x+FI5mRJL6ZQeHS3+Vvp
kg/mK0VNL4mZuo38KPE9X8K+KdBtzc6lplwluv3pOJFA9SVJwPrisqC+SQ4kGw/pX0Ha/GHwnPME
knvLdT/HLbkqP++cn9Kr+J/DHhLx9FPeaXf2f9qmPCTwzDGRyN6fjzkZxQ6afwsFUa+JHittPLbT
xT28jRzRsHR16qR0Ir6F+Gvi1fE2kmO5+XU7UKs47Pno49jjp2P4E/O/iDQ9U8I6kbPUow0fBWaM
ExSAjPyMQM//AFqv+GNcuNF1S31TTypkTIKsOHU/eU+nT86UJOL1HOKktD6poqno+o2+r6XbX9k+
63uEDrkYIz2I7EdCKuV1HKFFFFABRRRQAUUUUAFYXiKIFeB/EG+nUVu1n6vHvj+orxc9hfDc/wDK
0/0/U9jI58uK5e6f+Zzlimy7jPTmuvtzmBPpiuYRNrA+hzXR2RzDj0NeTkdW2Kce6/I9fPqd8Opd
mWKKKK+wPkAqlrl6dM0TUb9UEjWttJOEJwGKqWxnt0q7XQeGdDt9fsNZtLiNXL2+yMsSNrEEdu1T
J2VxxV3Y8F8L/FjVtN1Sc6tHDd6TdjZcQxwjzY1wcGFiRggn+LOcVyuv3VvbeMr270mTzLT7SZrd
9u3dG3IyO3B6VW8VaS+heJdT0qQYa0naPHPA6jr7EVmMpUlSMEdq5pa6M2WmqPXWXmo2Wm6VOLrT
baYHO5Bn645qdlr5prldmfRJ3V0VmWoZollQq44/lVxlqJlpDMFg9rOcdv1FXkYSIGXoak1CHfCW
A+ZeRVC1mERYMflPP409xFllqrPKkbBXzzz0qG+u0t0FxdEhQf3cY6sawZ9fvHkJj8tUzwpXP51v
Sw06usdjCriIUnaW5a1LSElBmssA4+4Oh+nvWh8PfEcumanDY3bbrKZvLAc48lieo4/DHv7U7Tnj
uIvOgY+U3G0jkGsTxNAUukl/hkGPxH/663pv26eGrf8ADHFjcNCcOeO39anvtFYngu5W58J6Q+/c
4tkRz/tKNrfqDWw8ioOTz6CvlakHCbh2dj5eS5W0Q3OPM4645pkTbHBPSkZizEnqaSrS0sQXgcjI
6VBdDhT+FQAkHgkVMku75ZOh4zUcri7hchqxO2Yl/wBrmopUKH2PSlkdWjQDORVPWzGR1diXbGo9
qgiQKPMfp2przMx4OB7Upe9og2LeQOtFUaKnkDmOCprHHSnU1hnpXqo7WQwt+/kJ78VZqtCP38gP
Y5qzTluBXuk4Ei9VqKSVpiqjAGf1qS5Yu6xL9TTbiER7WQkc4qo9LgOFqTyz8/TNAt5EPyPQv2kc
YBHvijbcOeTtH1/wou+4B58kbYlGfpSNK85KoML3zUiWyg5cljTZ4VRS6EqR2FF1cBbNV2lsfMDi
pdx9ar2soUbG4DHg1ZKmlLfUTGTBWiYsOV6VBE7xJuHKE1NPIEQp1ZhUVvEJc7mOB2oW2ox7XRbA
jXBPrSmKaQZd8e1SSWyNjA2/SojFOn+rckemaSa6AH2P0fn6U1g8EiMxDYp+bnH3R+lM2O0qLKxO
ecZ6U031YD4szzb2Hyr0q3VM/wCjzjk7DVypkBHOf3bD2pLdj5aZ9KWcfIx9qS3U+WmfSjoLUlpw
ptOFSNla04eVfQ1LN90fWorPkyN6mpZvuj605biJB0FU5uv41cHQVTm6/jRHcDvvhr4K0bxhbTLN
qt1a6jCTut1VCGTsy55I7Gu5HwS04dNYvf8Av2n+FeIaTf3Gm3sN3ZzNBcwtvjkU4IP+HYjuK+l/
hz45tfFln5Um2HVYVBlh7MP76eo/l+VelhVRqe5Na/PU6aCpz92S1OXPwS049dYvf+/af4U0/A7T
T01m+H/bNP8ACvXaK7vqdH+X8zp9hT7HkH/CjdO/6DV9/wB+0/wpf+FHad/0Gr7/AL9p/hXr1FP6
nR/l/MPYU+x4+fgZpx663ff9+0/wpD8C9OIONbvx7+Wn+Few0UfVKP8AL+Yewp9jI8MeHdM8M6b9
i0i3EMJYuxLFmdj1JJJJ6fhXL+Nfhfo3iEy3VqG0/U2HEsX+rc9t6dPxGD79q7+itZUoSjytaFun
Frla0PlvxL8NvEuhtI7WZvbVF3me1+YAe6/e/IGuLVgwBUgg8givtiuU8R/D7w3ryytcabBBcyMX
a5tkEUjMepYgfN+Oa4amA60395zTwv8AIz5THJ55p4AxXr/iD4JXUEPmaBqQuWA5hugELfRhx+BH
41wWqeBvFOlQ+bf6HdxwgctGUmA+vls2PxrinQqQ3RyypTjujmzweBik60SHyn2SfIw/hbg/kaVd
rViQAOKkHSmhQKcKTEDfdNR1I33TUdNAAJHSpQwNQFlBwWAPua2dH8P6vq8gTS9NurpjjlI8KPqx
wo+pNFuZ2Q7X2KKxs3sPepViUdeTXoHh74UeJr6bGqRw6Xbg4YyyLLIeP4VQke3LD6GvSPD/AMKt
B0ybzbzzNTccqtyBsH/ARwfxzW0MHWqdLLzNIYec+ljw3QtB1LXJXj0iykuTHjeVwAufUnivSdG+
DMssO/WdSELkAiO2QNtPfLH+gr2Kys7axtkt7G3htrdPuxQoEVfoBxU9d9LLqcdZ6s64YSK+LU8k
PwR04njWb4f9s0/wp0fwV09CP+JxenH/AEzT/CvWaK2+pUP5fzNPYU+x5Wfg1YEEf2vec/8ATNP8
KRfgzYKMf2xe/wDftP8ACvVaKX1Gh/L+LD2FPseWf8KbsP8AoL3n/ftP8KP+FN2H/QXvP+/af4V6
nRR9Qofy/iw9hT7Hln/Cm7D/AKC95/37T/CkPwbsMHGsXgP/AFzT/CvVKq6pqFrpVhNe6hMsFtCu
53bt+A5J9AOTSeCw6V3H8WDoU10PH9a+EuhaRYy3+q+Iru3tkxukeNMZPAHTqTxXkJt1kuHMIlW3
3HZ5uN+3PGccZrqPiZ4zufFWsusUk0WlQfJDb7yFcgk+Yy/3jwOc4A4xk1ykNwyHDEsvvXlYlwbt
RWhwVXFu0FoXMhVCpwBTadgMoZOQabXGjBj1OAx9BWYTk5rTUZDD1FZhGDirh1KRoWa4gHuc0y6b
LBfTmn2bZgHtxTLpcMG7HipXxAyGiiitBCodrg+hrRHSs5BudR6mtEdKymCMycYmce+asWJ+V1/G
q85zM598VYsR8rt+FVL4RktOU4ptOUZqCCOeASAsnDd/eqbKynDAg1cnnEYKp97v7VTZixyxJPvV
wuWTW85j4blP5VoKwZcqQRWdbwGU5PCetaKqFGFAA9BUTtcBaKKKgC3pFtHe6xp9pNnyrm5ihfHX
azhT+hr6qr54+FWnDUPGtkXXdHbBrhs9MgYX9SD+FfQ9e5lULQlLu/yO/CRtFsKKKK9U6zwPxZ4S
8Q6h4p1W8ttHuWgmnLIxZBkdM/e9qy/+EG8T/wDQFuP++0/+Kr6QorzJZXTlJycnr6f5HK8JFu92
eJeHPhZqN1NDLrLpa2wbLxK2ZGHpkcCvZNMsbfTNPt7KyjEVtAgRFyTgD1J5J9zyas0V10MLToL3
Fqa06UaewUUV598TfHEOj2txpenSh9UkUxybCVNuGXhsj+LkEDOehq61WNGLnIqc1BXZwvxe8Qw6
v4gS1tGZorDdEx/hMmfmx9MY+oqf4I20sniye4A/dQ2rK31Zlx/6Ca8+IZyWZiXJySTkk+pr2r4F
2fl6Ff3bYLTXHljjkBVHf/gVeHhm8RilN+p59JurW5mel0UUV9CemFFNlkSKJ5JGCogLMT2Arw/x
x8SLrU52tdCmltLBT/r4yUll4HfqoznpyfaufEYmGHjeW/Yyq1Y0ldns2oarYacCb69t7fgHEkgU
4zjpXlHxl8R6dqVvpdhp91FdfvHndomDBcDaAT77m/KvJL2KWa4edy8zOSxdzuYknnk8mptJsZbi
+t4VAR5pFiQn+8xCj+deViMe61NwStc4qmJdRcqR698GvCwBbXr6FWB4syx5XqGfHTnpzzwfWvWq
p6Pp8OlaVa2FsMQ28YjX1OOpPuTyfc1cr1sNRVGmoL+md1KmqcVFBWN4n8Saf4btFm1GQ73BMUKD
LyYxkL27jr61rTSpBDJLKwWNFLMx7Ack180+Ltem1/Xbq8d5Gty5FujE4SPtgds4yfrWONxX1eHu
7sivW9lHTc6TVPijr9xdu9h9ntLbJ2R+WHbGeNxPf6YFM074o6/DeRPdvBc2+QJI/KCkjvgjHP6V
wuWYcDFBXaARXh/W61787PO9vUve59PeG9ctPEOlR39iWEbEqyOAGRh1BA71qV5T8CpyYtWhx8u5
H698EV6tX0OFqutSU3uepRnzwUmFeafHG3Z9H024GNkc5Q/Vl4/9BNel1578bXUeF7VCfma7Ugew
R8/zFTjknh5X7E1/4bPFK+ifh1p507wdp0bJskkTznHu3P8AIivnYxvL+6iBaR/kUDuTwB+dfVka
qiKiKFVQAABgAeleZlELzlLsvz/4Y5sGtWxaKKCcDJr3TvPAvjTO8vjNo2IKw26KvtnJP6muR8La
NJ4g1+z0yJ9nnsd7/wB1QCWP5Dj3Iq740v8A+0/E2o3YJ2ySsFyf4QcD+Wfxr0D4B6bEY9T1N48z
hhbxuR0XGTj6nGfoK+cpx+s4l9m/wPK5fa1T1iytorKzgtrddsMKBEHsBipqKK+jPVMnxTr1r4b0
abUb0MyIQqxpjdIx6KP89ATXzX4n12+8Sai13qcpkxxHH/DGvOAB0zz1719B+OPCEHi2K0jury4t
ktmZgIgDuJAGTn0/qa5P/hTWm/8AQWv/APvlP8K83GUq9aXLFe6ceIp1ajstjxWFmhmjmhYxyxnc
jqcMp9Qe1fR/ww8SP4k8MpLdZ+22z+ROf75ABD/iCPxzXNf8Ka03/oLX/wD3yn+Fdb4H8IW/hKG7
jtbue5FwysfNAG3AI4wPeoweHrUZ6rQnD0alOWux01FFFeqdx80ePLS3s/HWu2/ODcmXOT1kUSH9
XNaXww8LjWvEsctwrPYWZEzkHALA5RT+Iz+FVPiRJA3xB1yQsGAlQDjjIiQH9QRXr/wp0o6Z4Rhe
QFZrxjcsD/CCAFH5AfiTXz9Cj7XFNdE3+Z5dKmp1WuibOxooor6A9QqarqVnpNk93qNxHb26YBdz
gZPQfWvGPEXxZ1O6u1OgoLK0Vf8AlvGrSOffkgD0xUfxq8QyX2vDSLadvsVmo81FJAaY88+u0bce
5PpXm4OOD+deLjMbNycKbskediMTLm5YPY7m2+JHiuMhhdRSqW3YkhUg+3GDivY/B3im18R6UbgY
huYl/wBIhYjKe/X7pwcV80rM6qArHFSw31xDvEcrqHXY+1iu5cg4OOoyBx7CuejjqtKV3qjKliZQ
eup7X4v+J1nYrJbaHturgr/x8H/VJkdv7xH5e/avF9W1G61XUJby/meaeRiSzHoCc4A7D2FNE0cg
IlUD0PWqzYycHI7VjVxNSu/ffy6EVa0qm5seHPEmpeHZZpNJljieYBXLRh8gdOtew/CXxDrXiJNS
n1eaOWCIpHFtiCYbkt068Fa8GFfRHwisktPA1k64LXBeZjjB5YjHv0rsy+U5VOW+iNsI5Odr6I7O
iiivcPTOE+LHiq78N6fYLpkiR3lzK2Cyhv3aj5uD7sn515r/AMLN8U/8/sH/AIDp/hW18ertJda0
m1X71tBI7H/roV4/8h/rXmNeDjMRUVaSjJpI8rEVpqo0nodLrfjjXdb02Ww1G5jktpCpZVhVScEE
cj3ArmqKK4pzlN3k7s55ScneTHR/fFaS/dH0rNj++K0l+6PpXPU3F0IGXdK4HUc1HU6f8fDfSopP
vt9aIvoEizpN/Ppep219attngcOp/Qj8QSPxr6M8L+IrDxHYC4sZPnUDzYT96InsfyNfNQRiMgVa
03Ub7SbtbjT7ma1mH8SNgMPQjow9jmu3CYx4d23TNqFd0n5H1JRXmXhr4qWs4WLxBD9kkwB58QLo
TjkkDkZPYZ6/jXoun31rqNqlzY3EdxA/KvG2Qa+gpYinWXuM9SFWFT4WWKKKK2NCG8tYL22kt7uJ
JoZAVZHGQQa8h8e/DFoY3vvDgZ4kXL2rMWcAf3Sev0PNeyUVhXw1OuveWvczqUo1FaR8hHg4IIPo
avabkCQ9uK6z4waANH8UG5toilnfr5oPG0S5+dR6fwt/wI46Vy1t+7tMkYLV8ziIOm3Bnjzi4ScX
0PXPgdaf6Jqt8yfflWJXz6DJH/jwr1Cud+Hlilh4M0qNUKM8ImkBGDvf5jn8Tj6AV0VfS4SHs6MY
+R69CPLTSCvPvjLevFolpaIcLcTZcZ6hRkfrj8q9BrxL4r6i134pktcny7NFQLnjcQGJ/IisMzqc
mHa76EYqXLTfmcZUttBJc3EUEKlpZXCIAM5JOBUVdH8PbB9Q8X6eqZCQP9odh2Ccj822j8a+Zpw5
5qHdnlxjzSSPcdHsU03SrSyjJKwRLGCTnoKuUUV9okoqyPbStoFfOviy6+2+J9UuBJ5ivcMFb1Vf
lX9ABXvfiC7Sx0S+uZWKpHCxyOvSvm4ZwNxye5rxM5qfBT+Zw42W0TofAFimoeLbCKUZRGMpHrtG
R+uK9/ryz4L6cry6hqbgEpi3j9icM36ba9TrpyqnyUObuzXCRtTv3CkZgqlmICgZJPQUtcX8V9TN
j4b+zxSMk124jG04JUct+GOPxrurVVRpuo+h0TnyRcmc/wCJviVMbhoPD6osSnBuZF3F/wDdHYe5
61W8O/Em/ivkTW/KmtHYBpFUI0Q/vccEev8AkV59SpDJcutvCu6WYiNF9WY4A/M18w8fiObn5vl0
+48p4io3e59O0UUV9YeuFc/4u8U2fhyBPODTXMv+rhQjOMH5jk/dyMfjXQV8/eM9Tm1XxHezTE7Y
5GhjXOQqqSOPryfxrgzDFPD0/d3Zz4mq6cdN2aknxE8QNMXWa3RSc+WIQVA9Mnn9a9L8D+I/+Ej0
t5pIhFcwt5cqj7pOAcr7H39DXgteqfBa2K2erXWeJJY4cem1S2f/ACJ+leZl2KrTrqMpXTucuGqz
lUs3c9Iooor6I9I574g/8ibqv/XL/wBmFeCV7F8XNSFtoMVkrYlu5OgPOxeT+GcD8a8eAJICjJPA
A7181m81KukuiPLxjvUset/B/TfJ0e41Fx81y5RP9xTj/wBCz+VegVkeEtN/snw5Y2Z++keX/wB5
iWb9Sa1693CUvZUYwe9vx6noUY8kEgrK8R67Z6BYm5vWPPEcaj5pD6CtWvEPiXqct94ouYDIxt7T
ESJk7c4BY49ckj8Kzx2JeGpcy3eiIxFX2ULrcnvviNrk9yz2rQWsJ+7GED4+pPU/lXbeAvGB1/fa
XqKl/Gu/KDCyLnGRzweRn614vXc/B+B38S3E6j93FbMrH0LMuP8A0E14uCxleVeKcm7nFQrVHUSb
vc9hooor6Y9QK8w8dfEo6fcSWGgxo86HD3TgMg4/gAPJB4544711XxC1v+w/DM80Z/0ici3h4z8z
A8/gAx/Cvn6/G6KNxzjjNeTmOMlSkqVN69TixVdw9yO52WkfFTWrW8WTVBFeWn8caRhHx6qR3+v6
V7hbTJcW8U0Zykih1PsRmvlOBA8gB6AEn8K+odAtfsWh6fa5z5MCJn6KBRltepUlKMnewsHUnO6k
7l+iiivWO48h+MUizeILKLjMNuSeeu5v/rVw/PYEnsAM5rofibqC3niu6aAjbBtt9wOclc7vyJI/
CqHgiD+0PFem28qB4vN3uPZQT/MCvkcSnXxMuXq7foeNV9+s0urPc/Ddo1h4f061kULJFborgf3t
o3frmtGiivrIRUIqK6HsJWVgr598e6k2q+K76QElInMCD2Xg/rmvc9e1FNJ0a9v5fuwRM4H95uw/
E4H4184I7zXDSStvkcl3Y92PJP514+b1bRjTXqcGOnooGx4e8Q6loJmi02ZI1lIZ90YYkge9ev8A
w/v9S1TR3vNVlVzJIREFQLhRxnj3zXha/wDHy30r6H8L2Taf4esLWQYkjiUMPfqaxymVSc2m3ypb
dNScG5OW+iNSiiivoD0jgfib4m1HQ7nT4NLnijaVHeUMgY4BUL1/4F+VcZ/wsHxF/wA/cX/fhf8A
CqnxFv3vfGF+XGBAwt0Gc4C//XJP41zoYGvl8Vi6vtpcsmlf8tDxq9eftHyt2NrXvE+ra7apb6jO
jxI/mALGF5wR2+tYqysmAeRSM2OnWlWNm5PA9645zlN803c53KUndscXjf7wxR5cbfdfBo2Rp95s
0GSMfdQH3xWfoAeQezCk8lx6Uv2g/wB0UnnOfQUe8GhSugVmIPXFQ1NdEtMSeuKhrZbAjQ0xBtd8
c5xn2q9VHTHG10z82c49qvVzz+IYVS1KMFBJ3HH4VdqlqUgEYj/iPP4UQvzaAZ1TWgLTAD0NQ1Na
ErMCPQ10y2EXxC/tS+Qf7wpBM3tS+ef7orD3hC+XGv3nzSh40+6ufegSRn7yAfhR5cbn5GxS9RjG
ld8gcD2oVcfWhonTkcj2oVs9etPpoSxSoNNKHtTiwFNLntQriGkY60UE560VQy3bf6r8ag1D7h+l
T23+q/GoNQ+4fpWa+IpGYOtSKuOTUY61IjdjXQxMtwW5dQzHC/rVr5UXbGMCqtvcbFCMMrVr5XXf
GcisJXvqIQMR0NOLK4w65poUnoKcVVBl2AFJ2ErlWbTreaeOcKPOiBCE87c4zj8hXNePLv8As/Q5
4if3k/7pcH16/pXVPcov+rG4+vSvNPijdebqFlFnBWNnZR05IAP/AI6a78upyq14xlsv01N6Eeea
TIfh9YB5p75xyn7uP2JHJ/Lj867taxfCtsLXQ7VcYZ18xvqea2Vr76nHlikdM5XkSrUoqEVKpqyT
P8Ukjwvq5BwRZykH/gBrxBhXuevQPdaDqNvEMyS20iKPUlSBXh3BAI6GuTEbo68PsyEimkVMRTCK
5zoIiKTFSEUmKAHWdrLeXcNtbIZJ5nCIo7k19B+EPD8HhzSY7aIK07ANPKuf3j+vPb2rj/hL4dWO
2OtXcYMkvFruUHavILj0zyPp9a9v8HaF/aM/2m7T/Q4+gPSRvT6etdFOKiuZnPUk5PlRf8IeGvtG
y91GMeT/AMs4mBy3Qhj7V6GpzUCYAAAAA4wKlU1lKTk9TWEVFWRKKeKjFPBqCyQGnCmCnA0hjwak
FRCnqaAINVsIdT0+W0uM7JB1HYjkH868d1TT59LvntbpdrryD2Zc8EexxXtgrH8T6FDrVkQAqXSD
McuOf90n0rSnPldnsZ1Icy8z5T+M/hF9V086xpyA3lvEVnABLSRjGMD/AGfmPqa8M0bUNV0dbj+z
GEEk67DOgG8L6K3UA8dK+xbq3kt5pLe6jKSodro3OK+ePir4YHh/XRcWqAadfEvGFUKsT55jAHAG
MEfj6VVWH2kTSl9lnnX2J5ZWluZmd3JZjnJYnqSTU32KD+5+pqziisbG1ysbGD+4fzNV303/AJ5y
fgwrRpQKLBcglvtY/sz+zZLh7iwGNsTncqEdNufu/hSadA0ER39WOcelWacBQB6X8G/E/wBh1A6J
eOq2lyS1uTxtlJ+7/wAC/mPeva6+TYXeKVJImKyIwZWHYg5Br6X8Ga5H4h8PWt8pHmldk6jPySAf
MOa6KUuhz1Y21NuiiitTIKKKKACiiigAqtfjMI+tWaiu13W7+3NcWZQ58LUS7P8ADU68BPkxNOXm
jD8utbTT+7Yd+DVHbzVuwOJSvqtfF5RV5cbT+770fY5vDnwk/v8AxL1FFdPqPhWWy8OJqDO32gAN
LCcYUE9vzH61+gNpbnwiTexb8F+GrbVLCe6v1cqzFIgCRjHVuDzzx+FWfAkZ0u/1eK+Ig8hFaRpC
AFUZOSemMc12GiWyWek2kMa7Qsa5HuRk/rXln7TmkXl38O57zTTIi28qyXwhfZ50GCCH5G9BuztO
fpXM6jd0dKgopM83/an0eyh13Rde05oWXVIpFkaNtwkaPbhs9OjY49K8svdNW50G31S0x+6jWK4T
HJccF/xzz+FR22q+b4XvdI1CeeURGKbTPMculsykiVFB+6roRwMDKLXSfDyVJtLurR1Vtsm4qRnI
YD/CuXETdOKmuhtQjGpNxfX8y14HyfDsJPPzuP8Ax41uEVW0TTRpVq9rGzNCrlkLdcHnH51dZfSv
GrSUqjkup61GLjTUXukV2Wo2WrJFRstZmhTuGWJCz9PT1rm726jsiZLiPjdlU7sK3NUaK2V7q8kx
bxgYXGck8AY+tef6jdy6pfNK4xnhUzwo9K68JhnWlrscuJxCpKy3GXM8+o3RllOW6eyj0qRrZfLw
PvetSRRiNcD8TT6+mp0Iwjax4spOTuytY3clnKQd2wn5lz+tbfiIC50uKaHDIHDEj0wR/hWNdQ7x
uUfMP1p1jelLK5tJDlJEPl5/havNxOG5aiqR3X4o6aNb3HTlsz0D4VXDy6PdQOcpDN8g9MjJ/Wu3
ryv4X6gtvrEto7cXSfIP9pcn+Wfyr1SvmMzp8mJl56ng4mPLUZNFDuALdPSpPJT0/WoopdoCt0qb
zk/vfpXmS5jEheBh93kU3yn/ALppzzMfu8Cmb3/vN+dUuYQjE9D2pKVlYYLd6SqAcoZxtGSB2pfK
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
F6dKu2eqXNsCAwkU9pMnH0qjRSFa51tjqcF2VQHbKR90/wBDV6uErX0vVpIisU+Xj6A9WFS4kOHY
6UH1p1MpQaSZA8e1B6UlLVCMPxHbB7dZxncnB+hrnK7pgCCp5B4NcdqFt9kunhByByD7URZrB9B9
pqFzak+W+4H+F8kVqW2vI3FzGUPqnIP4Vz9FOyG4pnU/21Zf33/74NNk1u1Vfk3ufTbiuYopcqFy
I2ZdfmJ/dQxqP9rLf4VnXF3PcMTLIxz2BwPyqvRTsUkkFFFNkcIu45x7UDHUVQluHfIHA9qW3tnu
M7Co/wB41zyxKiOxeorNljMblWxn2opfWfILH//ZCmVuZHN0cmVhbQplbmRvYmoKMTkzCjAKb2Jq
CjMyNDczMgplbmRvYmoKMTg5CjAKb2JqCjw8Ci9Gb250Cjw8Cj4+Ci9QYXR0ZXJuCjw8Cj4+Ci9Y
T2JqZWN0Cjw8Ci9JbWFnZTMxCjE5MgowClIKPj4KL0V4dEdTdGF0ZQo8PAovQWxwaGEwCjEwCjAK
Ugo+PgovUHJvY1NldApbCi9QREYKL1RleHQKL0ltYWdlQgovSW1hZ2VDCi9JbWFnZUkKXQo+Pgpl
bmRvYmoKMTMKMApvYmoKPDwKL1R5cGUKL0ZvbnQKL1N1YnR5cGUKL1R5cGUwCi9CYXNlRm9udAov
TVVGVVpZK0FyaWFsLUJvbGRNVAovRW5jb2RpbmcKL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250
cwpbCjE5NAowClIKXQovVG9Vbmljb2RlCjE5NQowClIKPj4KZW5kb2JqCjE0CjAKb2JqCjw8Ci9U
eXBlCi9Gb250Ci9TdWJ0eXBlCi9UeXBlMAovQmFzZUZvbnQKL01VRlVaWStBcmlhbE1UCi9FbmNv
ZGluZwovSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzClsKMTk4CjAKUgpdCi9Ub1VuaWNvZGUK
MTk5CjAKUgo+PgplbmRvYmoKMjMKMApvYmoKPDwKL1R5cGUKL0ZvbnQKL1N1YnR5cGUKL1R5cGUw
Ci9CYXNlRm9udAovTVVGVVpZK0FyaWFsLUJvbGRJdGFsaWNNVAovRW5jb2RpbmcKL0lkZW50aXR5
LUgKL0Rlc2NlbmRhbnRGb250cwpbCjIwMgowClIKXQovVG9Vbmljb2RlCjIwMwowClIKPj4KZW5k
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
ahqT7GwdzSf07lFZKcvS9ijEtlFMoClkzxkTcgA8q6i6qJpnYZ3xrFgkx5lZKctGZaXtYdvMLCeS
43PG9P7hcuKF6kPlE+tDWZOnN/KpEgrO+u4xW8w/IjuFahfU4B/iSwTw07ckLf7Oz5Lv+ixdunQx
/1oaWExUHxo0uT40bCIk0XU01VLThLTTommyLNLardbaLqMbmQEIwZbw5ngowALQYNCGU5cubdY2
6xI/Kizp9GSULnwCO/hyAOc46fKOYnF8li7vzM7j55clncXlEYrjKqcdnqxS/hfTK8DKaV6EBuOL
EFiXt65oXcXmvM1Fmys0pO7aikTvVr6VdhRvlWlJYHFUEQguaYKy+V81R3v3daRniIY380Ag0BRY
LP6QOfVXdcD8Y+lQeq9iF5u1LhbVL4kOSCR9sVkJRiLS+tIo21KTSWQuFUyRSiKx3q+TH8SI/jdW
hkOOCmVuZHN0cmVhbQplbmRvYmoKMTk0CjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9D
SURGb250VHlwZTIKL0Jhc2VGb250Ci9NVUZVWlkrQXJpYWwtQm9sZE1UCi9DSURTeXN0ZW1JbmZv
Cjw8Ci9SZWdpc3RyeQooQWRvYmUpCi9PcmRlcmluZwooVUNTKQovU3VwcGxlbWVudAowCj4+Ci9G
b250RGVzY3JpcHRvcgoxOTYKMApSCi9DSURUb0dJRE1hcAovSWRlbnRpdHkKL0RXCjU1NgovVwpb
CjAKWwo3NTAKMAowCjI3NwpdCjQKMzkKMAo0MApbCjY2NgpdCjQxCjU0CjAKNTUKWwo2MTAKXQo1
Ngo1OAowCjU5ClsKNjY2Cl0KNjAKNjcKMAo2OApbCjU1Ngo2MTAKMAo2MTAKNTU2CjAKNjEwCjYx
MAoyNzcKMjc3CjAKMAo4ODkKNjEwCjYxMAowCjAKMzg5CjU1NgozMzMKNjEwCjAKNzc3CjAKNTU2
Cl0KXQo+PgplbmRvYmoKMTk2CjAKb2JqCjw8Ci9UeXBlCi9Gb250RGVzY3JpcHRvcgovRm9udE5h
bWUKL01VRlVaWStBcmlhbC1Cb2xkTVQKL0ZsYWdzCjQKL0ZvbnRCQm94ClsKLTYyNwotMzc2CjIw
MDAKMTAxNwpdCi9Bc2NlbnQKNzI4Ci9EZXNjZW50Ci0yMTAKL0l0YWxpY0FuZ2xlCjAKL0NhcEhl
aWdodAo3MTUKL1N0ZW1WCjgwCi9Gb250RmlsZTIKMTk3CjAKUgo+PgplbmRvYmoKMTk5CjAKb2Jq
Cjw8Ci9GaWx0ZXIKL0ZsYXRlRGVjb2RlCi9MZW5ndGgKMjA4CjAKUgo+PgpzdHJlYW0KeJxlUstu
gzAQvPsrfEwPEbYhjwNCqlJV4tCHSvsBxl4oUjGWIQf+vmY3SZPUEpiZndm12U0O5VPpuokn72Ew
FUy86ZwNMA7HYIDX0HaOScVtZ6YTwrfptWdJNFfzOEFfumZgec6TjxgcpzDz1aMdanhgyVuwEDrX
8tXXoYq4Onr/Az24iQtWFNxCExO9aP+qe+AJ2taljfFumtfR86f4nD1whVjSYcxgYfTaQNCuBZaL
uAqeP8dVMHD2Li7IVTcEo+D8Kc8R860D5kljHiGUKEiG/O7Wv8g2KBNbUqsCyZpIQ+SeyAaRpJgy
SEpLSOKWaiTVqTTFMkEk2VNBJNlTRSTlzJri+krq/kopJdxQlYy8m+b6gvLfBbOMZIDbVt6USO9L
bOl4O4sl9ruI1Pmv1BKRTK8LLj1aRukyAOYYQuw9zhs2fWl35+Aykn7wiwufX8uRzO8KZW5kc3Ry
ZWFtCmVuZG9iagoyMDEKMApvYmoKPDwKL0ZpbHRlcgovRmxhdGVEZWNvZGUKL0xlbmd0aAoyMDkK
MApSCj4+CnN0cmVhbQp4nJz8CWAURdoHjFdVn9M9PdNzn5nMZDITkgEDJCEEomnlUIRwKEeCjAS5
wYOA4K2gcoio6AoeqwKeoLIGCBiQXZFldT1Y3PXYVddjXTzXKK/Lsghk5v9U9XQI7r7/7/2+Oaqr
u6u763ie33PUU40wQsiGliIO6dOXXB3fFP3zP+DIIwiJ42ctmH3FW9c1Pwz5I/C/cvbl1826/0nf
pQhpLQgtnzxn5rQZn3lf/Q6h+/bCNQPmwAF3lb8E9o/CfumcK66+dmrNqYkI/SKIUM2My6+aPk18
b/hvEPr9jbA/54pp1y5wt2tLEeo6DOXjCxbOXJB6v/FlhHI8QupvhD0oBP+w8AwK8WkE98h/Bf+v
6TY3N/81PU+35Fu4uqPwR2gz2ornoq3oZbQfH4GrXkC7UTv6PQqgodCuG9H9aCUS0WQ4cge6CL4C
HL8fh/LtqBJtgn7YhA5C2UnoZrQH+XEw/w26BS3n3oGrliMNlaBz0Vh0FboLj8ovRlPQp/xtqBaN
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
KYbHccckk1Bgmkf6i8VJdGIWKyrNw/wTOUG/MDoFYtaUw/nD2lXGGmmxOmGsbazzXNu5TpXFFY6V
Io7UJPOAzUTFR+2jK196X0q/8qvrP27/emvzimuaW5avaJZTpJKbLmn/U9uur34t5UneN15/4/cv
vb4TmV3RPkftBq4IUp50V2yRRz9BP1mv09WaSFNEDke6ewpyK9IqcgfnXhC5JeLol9Eve2TGyOx6
x1meyRmTs+c65nnm6Asy5mXviPwx9cPMD7P+mLc/dX/evkg8kl6gRvVoWh+1nz5UHalP0j91f5Xb
rrsDPiU9hw2lWnqOz02+kMUQIYshQuYWVrgKd7sk3RVzTXM1utSIYItIzFzR+1nMLRb5ZlorfK2Z
QsfeVsNo6mLe7iNW+y6SUnrLvU0jhGF+MEwRRURHt4ZaRlA9wQiqH2YE/SHZCCoWWKDDF0bQ8LCq
TOkwK2iHETTK5+x1hpob38TOqOpE82eKNR6kp6XK4iyygJJQ4yse7Xfb7Gt3z7344ysn3dwz8Pgl
l617YlHDhvY5tuevGzPmhviqR9oPXX9qv7ZDyqO7Xnx9z+s73+HeYHj7HGUf6l2nHOmy2Hy3HJXL
MvvLdfLlHq0mrSZUF7olb3WerTKlMrsmrzalNntsytjs6SnTs6flNea9re0JfqZ94fkyU+8u53ui
adVyH88IeahnkjxHftfzfuYn6V+EPsv+SfZLqjc1K8dt92mpOSoqO8PXm6z6TrQ0mmpPYiOUX9L9
Mf80f6NfzRNqzzxR436h9vR3qD39Qu3pF2pPf6uxOpb9XBt+Y2+bZkSfInq4Rea3NxK/xlF4hL0p
0f5YKPobod+0C/2mPd2YoxnWh9y8ZM2mqdhM0GpaOs0DA46sWrpQCpiGyL6mIvMwa1OPsrvHP9/+
zcI/LnnpwjVt3Z6+rOHx9Zdc/Ej7HNnR/3Spp2Rf3X7V4zcdPEX5za5dL7zy9t5XWFJejsp9GfUa
oI9ip5WnSLoqFaiV6inqWHWWukjVnAGH0+H0pgScXlIckls0RHI5S29xSI78SIqUIucf9qkSo7iO
rRfsmCH8IxZIGEo10VkeJn8ZqkEtYRZ6enDYi0dTDe7Xpxy4iE+A4fKqto5YJ/21FT6xY3rKRXzo
j9EqDLOAHePg8jUD59ScdfbAwYP7n52apxY/fOHwfk+UDKuZdlHb28hzTfxzZQNKppcCyccwnBhC
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
YWabP8FtEH5nC4suNl1mWSwyqZESSRqsIun448KKdpTYItyQ/hd2aV6YCmVuZHN0cmVhbQplbmRv
YmoKMTk4CjAKb2JqCjw8Ci9UeXBlCi9Gb250Ci9TdWJ0eXBlCi9DSURGb250VHlwZTIKL0Jhc2VG
b250Ci9NVUZVWlkrQXJpYWxNVAovQ0lEU3lzdGVtSW5mbwo8PAovUmVnaXN0cnkKKEFkb2JlKQov
T3JkZXJpbmcKKFVDUykKL1N1cHBsZW1lbnQKMAo+PgovRm9udERlc2NyaXB0b3IKMjAwCjAKUgov
Q0lEVG9HSURNYXAKL0lkZW50aXR5Ci9EVwo1NTYKL1cKWwowClsKNzUwCjAKMAoyNzcKMAozNTQK
NTU2Cl0KNwoxMAowCjExCjEyCjMzMwoxMwoxNAowCjE1ClsKMjc3CjMzMwoyNzcKMjc3Cl0KMTkK
MjcKNTU2CjI4ClsKMAoyNzcKMjc3Cl0KMzEKMzMKNTgzCjM0ClsKMAoxMDE1CjY2Ngo2NjYKNzIy
CjcyMgo2NjYKNjEwCjc3Nwo3MjIKMjc3CjUwMAowCjU1Ngo4MzMKMAo3NzcKNjY2Cjc3Nwo3MjIK
NjY2CjYxMAo3MjIKNjY2Cjk0Mwo2NjYKMAo2MTAKXQo2Mgo2NQowCjY2ClsKNTU2CjAKNTU2CjU1
Ngo1MDAKNTU2CjU1NgoyNzcKNTU2CjU1NgoyMjIKMjIyCjUwMAoyMjIKODMzCl0KODEKODQKNTU2
Cjg1ClsKMzMzCjUwMAoyNzcKNTU2CjUwMAo3MjIKXQo5MQo5Mwo1MDAKOTQKWwozMzMKMAozMzMK
XQo5NwoxMzQKMAoxMzUKWwozNTAKXQoxMzYKMTc2CjAKMTc3ClsKNTU2Cl0KXQo+PgplbmRvYmoK
MjAwCjAKb2JqCjw8Ci9UeXBlCi9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUKL01VRlVaWStBcmlh
bE1UCi9GbGFncwo0Ci9Gb250QkJveApbCi02NjQKLTMyNAoyMDAwCjEwMDUKXQovQXNjZW50Cjcy
OAovRGVzY2VudAotMjEwCi9JdGFsaWNBbmdsZQowCi9DYXBIZWlnaHQKNzE2Ci9TdGVtVgo4MAov
Rm9udEZpbGUyCjIwMQowClIKPj4KZW5kb2JqCjIwMwowCm9iago8PAovRmlsdGVyCi9GbGF0ZURl
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
BjwFA26CgQbcQOttoOk20G4baLQNtNjbw6OEP7dd+HN9ItyH5rOcGfAqDLgUBhp0A625ATfBQOts
wL8w0KwbcDCMQB48aF0s8su/cJBEwa74xCiIb8wTeiEyaW2Q9YxEX/r0BunvKC+xjQplbmRzdHJl
YW0KZW5kb2JqCjIwMgowCm9iago8PAovVHlwZQovRm9udAovU3VidHlwZQovQ0lERm9udFR5cGUy
Ci9CYXNlRm9udAovTVVGVVpZK0FyaWFsLUJvbGRJdGFsaWNNVAovQ0lEU3lzdGVtSW5mbwo8PAov
UmVnaXN0cnkKKEFkb2JlKQovT3JkZXJpbmcKKFVDUykKL1N1cHBsZW1lbnQKMAo+PgovRm9udERl
c2NyaXB0b3IKMjA0CjAKUgovQ0lEVG9HSURNYXAKL0lkZW50aXR5Ci9EVwo1NTYKL1cKWwowClsK
NzUwCjAKMAoyNzcKXQo0CjEwCjAKMTEKMTIKMzMzCjEzCjE1CjAKMTYKWwozMzMKMAoyNzcKNTU2
Cl0KMjAKMjYKMAoyNwpbCjU1NgpdCjI4CjM1CjAKMzYKWwo3MjIKMAo3MjIKNzIyCl0KNDAKNDIK
MAo0MwpbCjcyMgoyNzcKXQo0NQo0NwowCjQ4ClsKODMzCjAKNzc3CjY2NgowCjcyMgo2NjYKNjEw
CjcyMgowCjk0Mwo2NjYKXQo2MAo2NwowCjY4ClsKNTU2CjAKNTU2CjYxMAo1NTYKMzMzCjYxMAo2
MTAKMjc3CjAKMAoyNzcKODg5Cl0KODEKODQKNjEwCjg1ClsKMzg5CjU1NgozMzMKNjEwCjU1Ngow
CjAKNTU2CjUwMApdCjk0CjE3OAowCjE3OQoxODAKNTAwCl0KPj4KZW5kb2JqCjIwNAowCm9iago8
PAovVHlwZQovRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lCi9NVUZVWlkrQXJpYWwtQm9sZEl0YWxp
Y01UCi9GbGFncwo2OAovRm9udEJCb3gKWwotNTU5Ci0zNzYKMTM5MAoxMDE3Cl0KL0FzY2VudAo3
MjgKL0Rlc2NlbnQKLTIxMAovSXRhbGljQW5nbGUKLTEyLjAKL0NhcEhlaWdodAo3MTUKL1N0ZW1W
CjgwCi9Gb250RmlsZTIKMjA1CjAKUgo+PgplbmRvYmoKMjA2CjAKb2JqCjMxMgplbmRvYmoKMjA3
CjAKb2JqCjE2MzA3CmVuZG9iagoyMDgKMApvYmoKMzQxCmVuZG9iagoyMDkKMApvYmoKMzIzNDcK
ZW5kb2JqCjIxMAowCm9iagozNzYKZW5kb2JqCjIxMQowCm9iagoyMTUwOQplbmRvYmoKMQowCm9i
ago8PAovVHlwZQovUGFnZXMKL0tpZHMKWwo1CjAKUgoxNgowClIKMzIKMApSCjQzCjAKUgo1NAow
ClIKNjcKMApSCjgwCjAKUgo5MQowClIKMTAyCjAKUgoxMTEKMApSCjEyMAowClIKMTI5CjAKUgox
MzgKMApSCjE0NwowClIKMTYwCjAKUgoxNjkKMApSCjE3OAowClIKMTg3CjAKUgpdCi9Db3VudAox
OAo+PgplbmRvYmoKeHJlZgowIDIxMgowMDAwMDAwMDAyIDY1NTM1IGYgCjAwMDE1Njk2NjAgMDAw
MDAgbiAKMDAwMDAwMDAwMCAwMDAwMCBmIAowMDAwMDAwMDE2IDAwMDAwIG4gCjAwMDAwMDAxNDIg
MDAwMDAgbiAKMDAwMDAwMDMwOSAwMDAwMCBuIAowMDAwMDAwNDc0IDAwMDAwIG4gCjAwMDAzMDk2
MTYgMDAwMDAgbiAKMDAwMDAwMDk4NyAwMDAwMCBuIAowMDAwMDAxMDA2IDAwMDAwIG4gCjAwMDAw
MDEwMjUgMDAwMDAgbiAKMDAwMDAwMTA1OSAwMDAwMCBuIAowMDAwMzA5NTU1IDAwMDAwIG4gCjAw
MDE0OTUyMzAgMDAwMDAgbiAKMDAwMTQ5NTM4MSAwMDAwMCBuIAowMDAwMzA5NTkzIDAwMDAwIG4g
CjAwMDAzMDk4MTcgMDAwMDAgbiAKMDAwMDMwOTk4NiAwMDAwMCBuIAowMDAwNjk2MDcwIDAwMDAw
IG4gCjAwMDAzMTA3ODEgMDAwMDAgbiAKMDAwMDMxMDgwMSAwMDAwMCBuIAowMDAwMzEwODIxIDAw
MDAwIG4gCjAwMDA0MjI1NDkgMDAwMDAgbiAKMDAwMTQ5NTUyNyAwMDAwMCBuIAowMDAwNDMwOTI1
IDAwMDAwIG4gCjAwMDA2NTY4MDQgMDAwMDAgbiAKMDAwMDY1NjgyNyAwMDAwMCBuIAowMDAwNjU4
NTU1IDAwMDAwIG4gCjAwMDA2NTg1NzYgMDAwMDAgbiAKMDAwMDY5NjAwNCAwMDAwMCBuIAowMDAw
Njk2MDI3IDAwMDAwIG4gCjAwMDA2OTYwNDggMDAwMDAgbiAKMDAwMDY5NjMwMiAwMDAwMCBuIAow
MDAwNjk2NDcxIDAwMDAwIG4gCjAwMDA3NDM4ODEgMDAwMDAgbiAKMDAwMDY5NzY1NSAwMDAwMCBu
IAowMDAwNjk3Njc2IDAwMDAwIG4gCjAwMDA2OTc4OTUgMDAwMDAgbiAKMDAwMDcwNjI3MSAwMDAw
MCBuIAowMDAwNzQyMDg5IDAwMDAwIG4gCjAwMDA3NDM4MTcgMDAwMDAgbiAKMDAwMDc0MzgzOCAw
MDAwMCBuIAowMDAwNzQzODYwIDAwMDAwIG4gCjAwMDA3NDQxMTQgMDAwMDAgbiAKMDAwMDc0NDI4
MyAwMDAwMCBuIAowMDAwNzk0MzE4IDAwMDAwIG4gCjAwMDA3NDUwMzUgMDAwMDAgbiAKMDAwMDc0
NTA1NSAwMDAwMCBuIAowMDAwNzQ1Mjc4IDAwMDAwIG4gCjAwMDA3NTM2NTQgMDAwMDAgbiAKMDAw
MDc5MjUyNiAwMDAwMCBuIAowMDAwNzk0MjU0IDAwMDAwIG4gCjAwMDA3OTQyNzUgMDAwMDAgbiAK
MDAwMDc5NDI5NyAwMDAwMCBuIAowMDAwNzk0NTUyIDAwMDAwIG4gCjAwMDA3OTQ3MjEgMDAwMDAg
biAKMDAwMDg0MzA1NCAwMDAwMCBuIAowMDAwNzk1MjU3IDAwMDAwIG4gCjAwMDA3OTUyNzcgMDAw
MDAgbiAKMDAwMDc5NTI5NyAwMDAwMCBuIAowMDAwODAzNjczIDAwMDAwIG4gCjAwMDA4MzkwMDcg
MDAwMDAgbiAKMDAwMDg0MDczNSAwMDAwMCBuIAowMDAwODQwNzU2IDAwMDAwIG4gCjAwMDA4NDI5
OTAgMDAwMDAgbiAKMDAwMDg0MzAxMiAwMDAwMCBuIAowMDAwODQzMDMzIDAwMDAwIG4gCjAwMDA4
NDMyODggMDAwMDAgbiAKMDAwMDg0MzQ1NyAwMDAwMCBuIAowMDAwOTAzMDc4IDAwMDAwIG4gCjAw
MDA4NDM5ODMgMDAwMDAgbiAKMDAwMDg0NDAwMyAwMDAwMCBuIAowMDAwODQ0MDIzIDAwMDAwIG4g
CjAwMDA4NTIzOTkgMDAwMDAgbiAKMDAwMDg5NzM2OSAwMDAwMCBuIAowMDAwODk5MDk3IDAwMDAw
IG4gCjAwMDA4OTkxMTggMDAwMDAgbiAKMDAwMDkwMzAxNCAwMDAwMCBuIAowMDAwOTAzMDM2IDAw
MDAwIG4gCjAwMDA5MDMwNTcgMDAwMDAgbiAKMDAwMDkwMzMxMiAwMDAwMCBuIAowMDAwOTAzNDgx
IDAwMDAwIG4gCjAwMDA5NTM4MjAgMDAwMDAgbiAKMDAwMDkwMzkzNSAwMDAwMCBuIAowMDAwOTAz
OTU1IDAwMDAwIG4gCjAwMDA5MDM5NzUgMDAwMDAgbiAKMDAwMDkxMjM1MSAwMDAwMCBuIAowMDAw
OTUyMDI4IDAwMDAwIG4gCjAwMDA5NTM3NTYgMDAwMDAgbiAKMDAwMDk1Mzc3NyAwMDAwMCBuIAow
MDAwOTUzNzk5IDAwMDAwIG4gCjAwMDA5NTQwNTQgMDAwMDAgbiAKMDAwMDk1NDIyMyAwMDAwMCBu
IAowMDAxMDMzOTczIDAwMDAwIG4gCjAwMDA5NTQ2NzggMDAwMDAgbiAKMDAwMDk1NDY5OCAwMDAw
MCBuIAowMDAwOTU0NzE4IDAwMDAwIG4gCjAwMDA5NjMwOTQgMDAwMDAgbiAKMDAwMTAzMjE3OCAw
MDAwMCBuIAowMDAxMDMzOTA3IDAwMDAwIG4gCjAwMDEwMzM5MjggMDAwMDAgbiAKMDAwMTAzMzk1
MSAwMDAwMCBuIAowMDAxMDM0MjA3IDAwMDAwIG4gCjAwMDEwMzQzODAgMDAwMDAgbiAKMDAwMTA0
NjQ0NCAwMDAwMCBuIAowMDAxMDM2MjQ4IDAwMDAwIG4gCjAwMDEwMzYyNzAgMDAwMDAgbiAKMDAw
MTAzNjI5MSAwMDAwMCBuIAowMDAxMDQ0NjcwIDAwMDAwIG4gCjAwMDEwNDY0MDAgMDAwMDAgbiAK
MDAwMTA0NjQyMiAwMDAwMCBuIAowMDAxMDQ2NjY0IDAwMDAwIG4gCjAwMDEwNDY4MzcgMDAwMDAg
biAKMDAwMTA1Nzc4NiAwMDAwMCBuIAowMDAxMDQ3NTkxIDAwMDAwIG4gCjAwMDEwNDc2MTIgMDAw
MDAgbiAKMDAwMTA0NzYzMyAwMDAwMCBuIAowMDAxMDU2MDEyIDAwMDAwIG4gCjAwMDEwNTc3NDIg
MDAwMDAgbiAKMDAwMTA1Nzc2NCAwMDAwMCBuIAowMDAxMDU4MDA2IDAwMDAwIG4gCjAwMDEwNTgx
NzkgMDAwMDAgbiAKMDAwMTA2OTYyMCAwMDAwMCBuIAowMDAxMDU5NDI0IDAwMDAwIG4gCjAwMDEw
NTk0NDYgMDAwMDAgbiAKMDAwMTA1OTQ2NyAwMDAwMCBuIAowMDAxMDY3ODQ2IDAwMDAwIG4gCjAw
MDEwNjk1NzYgMDAwMDAgbiAKMDAwMTA2OTU5OCAwMDAwMCBuIAowMDAxMDY5ODQwIDAwMDAwIG4g
CjAwMDEwNzAwMTMgMDAwMDAgbiAKMDAwMTA4MTE1MyAwMDAwMCBuIAowMDAxMDcwOTU4IDAwMDAw
IG4gCjAwMDEwNzA5NzkgMDAwMDAgbiAKMDAwMTA3MTAwMCAwMDAwMCBuIAowMDAxMDc5Mzc5IDAw
MDAwIG4gCjAwMDEwODExMDkgMDAwMDAgbiAKMDAwMTA4MTEzMSAwMDAwMCBuIAowMDAxMDgxMzcz
IDAwMDAwIG4gCjAwMDEwODE1NDYgMDAwMDAgbiAKMDAwMTA5MjY3MCAwMDAwMCBuIAowMDAxMDgy
NDc1IDAwMDAwIG4gCjAwMDEwODI0OTYgMDAwMDAgbiAKMDAwMTA4MjUxNyAwMDAwMCBuIAowMDAx
MDkwODk2IDAwMDAwIG4gCjAwMDEwOTI2MjYgMDAwMDAgbiAKMDAwMTA5MjY0OCAwMDAwMCBuIAow
MDAxMDkyODkwIDAwMDAwIG4gCjAwMDEwOTMwNjMgMDAwMDAgbiAKMDAwMTEzNDY2NSAwMDAwMCBu
IAowMDAxMDkzOTEyIDAwMDAwIG4gCjAwMDEwOTM5MzMgMDAwMDAgbiAKMDAwMTA5NDEzOCAwMDAw
MCBuIAowMDAxMTAyNTE3IDAwMDAwIG4gCjAwMDExMjA2ODAgMDAwMDAgbiAKMDAwMTEyMjQxMCAw
MDAwMCBuIAowMDAxMTIyNDMyIDAwMDAwIG4gCjAwMDExMzQ1OTcgMDAwMDAgbiAKMDAwMTEzNDYy
MCAwMDAwMCBuIAowMDAxMTM0NjQyIDAwMDAwIG4gCjAwMDExMzQ5MDIgMDAwMDAgbiAKMDAwMTEz
NTA3NSAwMDAwMCBuIAowMDAxMTQ1OTYzIDAwMDAwIG4gCjAwMDExMzU3NjggMDAwMDAgbiAKMDAw
MTEzNTc4OSAwMDAwMCBuIAowMDAxMTM1ODEwIDAwMDAwIG4gCjAwMDExNDQxODkgMDAwMDAgbiAK
MDAwMTE0NTkxOSAwMDAwMCBuIAowMDAxMTQ1OTQxIDAwMDAwIG4gCjAwMDExNDYxODMgMDAwMDAg
biAKMDAwMTE0NjM1NiAwMDAwMCBuIAowMDAxMTU3ODMwIDAwMDAwIG4gCjAwMDExNDc0MzkgMDAw
MDAgbiAKMDAwMTE0NzQ2MSAwMDAwMCBuIAowMDAxMTQ3Njc3IDAwMDAwIG4gCjAwMDExNTYwNTYg
MDAwMDAgbiAKMDAwMTE1Nzc4NiAwMDAwMCBuIAowMDAxMTU3ODA4IDAwMDAwIG4gCjAwMDExNTgw
NTAgMDAwMDAgbiAKMDAwMTE1ODIyMyAwMDAwMCBuIAowMDAxMTY5NDgzIDAwMDAwIG4gCjAwMDEx
NTkyODggMDAwMDAgbiAKMDAwMTE1OTMwOSAwMDAwMCBuIAowMDAxMTU5MzMwIDAwMDAwIG4gCjAw
MDExNjc3MDkgMDAwMDAgbiAKMDAwMTE2OTQzOSAwMDAwMCBuIAowMDAxMTY5NDYxIDAwMDAwIG4g
CjAwMDExNjk3MDMgMDAwMDAgbiAKMDAwMTE2OTg3NiAwMDAwMCBuIAowMDAxNDk1MDY4IDAwMDAw
IG4gCjAwMDExNzAwOTIgMDAwMDAgbiAKMDAwMTE3MDExMyAwMDAwMCBuIAowMDAxMTcwMTM0IDAw
MDAwIG4gCjAwMDE0OTUwNDQgMDAwMDAgbiAKMDAwMTUxMjQ1OSAwMDAwMCBuIAowMDAxNDk1Njg0
IDAwMDAwIG4gCjAwMDE1MTI4NTIgMDAwMDAgbiAKMDAwMTQ5NjA3NCAwMDAwMCBuIAowMDAxNTQ1
OTAwIDAwMDAwIG4gCjAwMDE1MTMwNTYgMDAwMDAgbiAKMDAwMTU0NjUyNCAwMDAwMCBuIAowMDAx
NTEzNDc1IDAwMDAwIG4gCjAwMDE1Njg3NjQgMDAwMDAgbiAKMDAwMTU0NjcyMyAwMDAwMCBuIAow
MDAxNTY5MzEzIDAwMDAwIG4gCjAwMDE1NDcxNzcgMDAwMDAgbiAKMDAwMTU2OTUyOCAwMDAwMCBu
IAowMDAxNTY5NTQ5IDAwMDAwIG4gCjAwMDE1Njk1NzIgMDAwMDAgbiAKMDAwMTU2OTU5MyAwMDAw
MCBuIAowMDAxNTY5NjE2IDAwMDAwIG4gCjAwMDE1Njk2MzcgMDAwMDAgbiAKdHJhaWxlcgo8PAov
U2l6ZQoyMTIKL1Jvb3QKMwowClIKL0luZm8KNAowClIKPj4Kc3RhcnR4cmVmCjE1Njk4NDkKJSVF
T0YK
--0000000000004741af06254b2a39--


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 14:47:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 14:47:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826057.1240394 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4LaM-0002wj-Rh; Fri, 25 Oct 2024 14:46:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826057.1240394; Fri, 25 Oct 2024 14:46: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 1t4LaM-0002wc-P6; Fri, 25 Oct 2024 14:46:42 +0000
Received: by outflank-mailman (input) for mailman id 826057;
 Fri, 25 Oct 2024 14:46: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=hagD=RV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t4LaK-0002vA-OF
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 14:46:40 +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 f02020ca-92df-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 16:46:37 +0200 (CEST)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c9428152c0so2439854a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 25 Oct 2024 07:46:37 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b30d6fdc5sm77872466b.163.2024.10.25.07.46.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 25 Oct 2024 07:46:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f02020ca-92df-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1729867597; x=1730472397; 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=RsNLLDRKWTaCJ4d93PmSSMU/g7hkzJ7gZdeFBBZV5I4=;
        b=YpEAflZnzDhsdWCB0pkOFLsVGOEvhnlgS23eKL7lQp3qYdBvnXZew7hbh69R7TXkmn
         hE7nZ95QzsxSFrtcnszu84isKWhDswZjq5jd4nKBhxxXTK9PonUZ0ULEw+SSy91/+8Hi
         U8eUYeqwRJmMwNFRJZyaQJD+cADROIbuO30ss=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1729867597; x=1730472397;
        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=RsNLLDRKWTaCJ4d93PmSSMU/g7hkzJ7gZdeFBBZV5I4=;
        b=f618qTUFN57KDYDtmiLqPZcdrzSDLU70wx4Wr1us+bs55xpSjh0QgeuXja15GbZKI9
         i4ClCJF5ji+l3S6294flfLDFtXkZttxSP4TsRiFY58x/YC8ft3FQUbCN53e8HBAw5C5t
         wxZ34owb46ZgEw1ZV/yu8cqak0ABcLBrRgvv/yAwxCwSI+vNyzsTfiv9Z483zf/h4bkq
         UWCorI13M8V6p4TIKF/Cqsfe4sLIwxXqmyKitDhTBLuxrpKK3Ix/8k1pxQJbt3KJsfOF
         VKqGr90OZmBPILReq/1OeQUP7MZbDs5lxDA/5+ttExiHSIJmXs7qq5JkI/KRjSQBb/nF
         Lofg==
X-Gm-Message-State: AOJu0YwgBfzlUPA19/Dv6NJj8LEJE4+QezHbi+3v4K81Qtqus3+RvTU2
	sjg//due5z6SiLdLK3XRS+5efn+KT4UiSZmslutDrJRwiiy05ejP+RDRetVOfNE=
X-Google-Smtp-Source: AGHT+IFMoW4HjIgIHYWftdnQ1RBMFu44iiHF3aP3ZjorsYxoRzWT9pd9u7vfxB02ObkUirt4pVGDnA==
X-Received: by 2002:a17:906:dac2:b0:a99:5f2a:444d with SMTP id a640c23a62f3a-a9ad285ff6emr606667966b.56.1729867597009;
        Fri, 25 Oct 2024 07:46:37 -0700 (PDT)
Message-ID: <9cbbfe4c-ca22-42e4-94fc-873e177aa291@citrix.com>
Date: Fri, 25 Oct 2024 15:46:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v1 1/6] CI: Refresh the Debian 12 x86_64 container
To: Javi Merino <javi.merino@cloud.com>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1729760501.git.javi.merino@cloud.com>
 <288fcc10dbcbdab1c33ebfb95bedf2366ba64122.1729760501.git.javi.merino@cloud.com>
 <f8452748-067d-48d3-8ed3-3adc98566aa3@citrix.com>
 <opwqn4ewu3pvrmhoikglwzfzu7pwkiht7en4vtnmc755nxphvr@ilgcrk3bo2sa>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <opwqn4ewu3pvrmhoikglwzfzu7pwkiht7en4vtnmc755nxphvr@ilgcrk3bo2sa>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24/10/2024 4:10 pm, Javi Merino wrote:
> On Thu, Oct 24, 2024 at 03:04:10PM +0100, Andrew Cooper wrote:
>> On 24/10/2024 11:04 am, Javi Merino wrote:
>>> +
>>> +    apt-get update
>> apt-get -y
> apt-get update refreshes the package lists.  -y doesn't do anything
> here.  It is needed for "apt-get install" below but not for
> apt-get update.  It would be needed for "apt-get upgrade", but
> we don't.

Hmm ok.  We might want to adjust the others to match then.

>
>>> +    DEPS=(
>>> +        # Xen
>>> +        bison
>>> +        build-essential
>>> +        checkpolicy
>>> +        clang
>>> +        flex
>>> +
>>> +        # Tools (general)
>>> +        ca-certificates
>> Interestingly, we've gained ca-certificates and dropped apt-transport-https.
> ca-certificates is needed for curl, wget or anything that tries to
> validate tls certificates.  It is a Recommends of libcurl, as
> curl by default validates the ca certificate of https servers.
>
>> ca-certificates is a side effect of --no-install-recommends, so is
>> fine.  I recall there being a specific reason why we needed
>> apt-transport-https, but I can't recall why exactly.  Something about
>> the LetsEncrypt Cert used by xenbits IIRC.
> I dropped apt-transport-https because it doesn't make sense to have
> it.  apt-transport-https allows apt to access package repositories over https,
> but we were installing alongside all the other packages.  apt is never
> used again, so giving it the ability to install packages over https is
> pointless.

That is, as they say, an assumption.

fe746c26c0d2 ("automation/gitlab: add https transport support to Debian
images")

Although, subsequently the use of apt.llvm.org was removed:

a6b1e2b80fe2 ("automation: Remove clang-8 from Debian unstable container")
7a2983757216 ("CI: Remove llvm-8 from the Debian Stretch container")

So I guess we're back to being ok without it.
>>> +        expect
>> Expect is only for the test phase, so should move later.
> I put it here because ./configure checks for it.

It does?

That's not necessary/expected.

>> Any decompressor which we don't find a suitable devel package gets the
>> hypervisor form instead.
>>
>>> +        # To build the documentation
>>> +        pandoc
>> I know we had pandoc before, but I'd like to drop it.
>>
>> I'm intending to turn off docs generally, and do them separately in a
>> single job that has *all* the docs build dependencies, not a misc subset
>> that the build system happens not to complain at.
> I had the "build the docs as its own job" in my TODO list and was
> going to drop pandoc from this dockerfile then.  I can remove pandoc
> in this commit if you prefer.

Dropping packages from existing containers is complicated, because the
container (name) is shared with prior branches.  You have to wait until
the oldest version of Xen which still uses the package leaves testing
(== leaves security support, == 3y), or we've backported changes to all
branches to drop the dependency.

The rename here gives us leeway because this change won't clobber any
older branches in Xen, but I don't want to set the precedent.

>
>> I'm on the fence about the Qemu build things.  It's off by default now,
>> but the container never previously had meson/ninja so it wouldn't have
>> built either.  Perhaps leave them out until someone complains.
> I thought I had removed them.  Is there anything else that needs to
> go?

These containers are both for CI and human use, so "what happens in CI"
isn't the only consideration.

But, given that Qemu didn't build in the old container anyway, I'm not
overly fussed about keeping it working in the new container.

So yes, please keep the deps removed.  We can always add them back in later.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 14:57:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 14:57:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826064.1240405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Ll5-0005Hq-QE; Fri, 25 Oct 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 826064.1240405; Fri, 25 Oct 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 1t4Ll5-0005Hj-NW; Fri, 25 Oct 2024 14:57:47 +0000
Received: by outflank-mailman (input) for mailman id 826064;
 Fri, 25 Oct 2024 14:57: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=4jrJ=RV=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t4Ll4-0005Hd-O9
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 14:57:46 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20616.outbound.protection.outlook.com
 [2a01:111:f403:2415::616])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ca60bfb-92e1-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 16:57:44 +0200 (CEST)
Received: from BL1PR13CA0174.namprd13.prod.outlook.com (2603:10b6:208:2bd::29)
 by PH7PR12MB9076.namprd12.prod.outlook.com (2603:10b6:510:2f6::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.16; Fri, 25 Oct
 2024 14:57:40 +0000
Received: from MN1PEPF0000ECD7.namprd02.prod.outlook.com
 (2603:10b6:208:2bd:cafe::aa) by BL1PR13CA0174.outlook.office365.com
 (2603:10b6:208:2bd::29) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.9 via Frontend
 Transport; Fri, 25 Oct 2024 14:57:39 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MN1PEPF0000ECD7.mail.protection.outlook.com (10.167.242.136) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Fri, 25 Oct 2024 14:57:39 +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.39; Fri, 25 Oct
 2024 09:57:39 -0500
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.39; Fri, 25 Oct
 2024 09:57:38 -0500
Received: from [172.26.85.121] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Fri, 25 Oct 2024 09:57:38 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ca60bfb-92e1-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ahuwk3ZieauClX9fR5aOupq5BmFz/rySETv/nwHI2sna2pNcLWIB+Q6YOP/2p5sn/jc5mcrxbqZdbbc4kUYFw8eFgKuKv9TgkJRjIAu52YyVUrKlvlZt/N/HrGfnN3JqnkJBGf+QI9ebg8tqyxaxC6b5DkarspHR4BswNOSn33u0QS67c9IQ8z93NaQPUNhzqKX3JSvgk1GQ6iRtDymAaAKr90NjfD12HsXMI3h649Xw7DkXL/72u4tQPKK6Tk9VZKO2r2Ar9bjVT77t5ZEitzjaQUMCR5aGoeLayrW6YGWZ7Xl5mphXDQIXg0h2cLzJsLXxUp9T1pillQo7c0mIIA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=eLyMYn52sPfZNm0Dj4m+aGP4ZfMxUsqGK4QAWI0VqxI=;
 b=pdxvvz6ao2NUYLbEtmcjVAFSMi+OYGIQCJsLu6IFJjzDvh4Jvz4OYAYlcnO4zZIba+9gJUt7XgJPwAQJd5OVRv4rJOdxnQdKSt3gbh2WsvfYWlysNjdrB41hnerBR97RYiFHgJ1f9UIKQ6kPToebWNNeRCRWxEpePhQIR9gSBEPf26qus9OAH813cpRnTIs/cPwgFgX0J2oQc519nJ7rgFkiMsbwDUa4PVq8E6YyII9unCm5bXASR3KJ/lvnQsQPim7iZ9YOwrLIwGCqUSHLS0NePz2mDkZd3eMn/sZFMRBUZcrfb94bl2IETXuCO1tg9RL7xT6LkJUdGI9laJBt+g==
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=eLyMYn52sPfZNm0Dj4m+aGP4ZfMxUsqGK4QAWI0VqxI=;
 b=p5tH2Jv37a3MtRGandrPsEKIfIyZ0zRGLwIMasDQCk9aa/RnDUj0v1kkq0buSrmlX6o8M1WUceauO9Q/XZ65nS6B2vgmMsFmupqGuC4cHfxgN3BI/fhHvQjhBlB/FxtJZw0Aqj2dKQups/E4/Af4DGOxmzQ1kYCyLKDR2WIebT8=
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: <9c38195b-400c-47f9-862d-a98be814cb9e@amd.com>
Date: Fri, 25 Oct 2024 10:57:33 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/5] x86/ucode: Rename hypercall-context functions
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>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
 <20241024132205.987042-2-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241024132205.987042-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD7:EE_|PH7PR12MB9076:EE_
X-MS-Office365-Filtering-Correlation-Id: 01aee780-b02c-48b3-c942-08dcf5055ee1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?TzFsdXRhSEhYN0JLT21FOGZURVBhV2dhSjdLMitqU1orMituL0RiaEJiczdF?=
 =?utf-8?B?S3E1c0xoTUFYN2tLUVhsVmtxYnlESno3WmI4UnFlYUlnM29tN1NNdXdiajRh?=
 =?utf-8?B?RnlQMnBKd1k0ZDFmc0VXTS9CbXpCRmRvcjJTelN1THRJN2pTZ3hGSE92bUdE?=
 =?utf-8?B?ODFxdzBTRXpNSllWSlR0NDlVZThSbjRRd2Fnbm5ldTQ2V045K3VGY0JVV3hJ?=
 =?utf-8?B?Tm8zdGxHR1d0aUNmaWIvS0MvSXFDWUdRam14TGNLU1hUZ1JzZmJxYVp4bi9G?=
 =?utf-8?B?b2w2T2NZdW1oTFduUUZqQXF0eXFsVXlPZnJYakJpcVIrTDhNSk8vcTY5bXhN?=
 =?utf-8?B?R1hYMzVlK25LcjAvNjNNU1JkNXMvWStFbWMrM2dlb2hweHljZDJEVmd5NjBv?=
 =?utf-8?B?SEtaWmU0OUY5WXVIRlJXZTZRQ2hmMU1Ea3hWaVh4YkZzczI0N29aeitWM0Zl?=
 =?utf-8?B?ZTYvOVlYNmpSUm01Rlpyd05OYkh2cUFNRVREOTNzY1g2QlBuM3lZY2JIek5S?=
 =?utf-8?B?UmdlWjZuZnhoQ0hWRDFTNkkyajAxRi8yczQwNnhkeU1hTjEzc0NJdHJONmpJ?=
 =?utf-8?B?NzJ4ZHFjR29LNmF6OVJFSytOQVQvaHMrYXc3R0d1MHJEZWJMcXZuZDBPTEFW?=
 =?utf-8?B?amVucHNDQXdVTWNwclhMSWt2NGxEZG5NQ2VySUNUMzNFUUxpMm4zQ243c3lx?=
 =?utf-8?B?MDJDd295U1VjS3o0N3ByMUU5dXVuYnB1N0VTZUliTTVLcVRZemp3VUFhM3hV?=
 =?utf-8?B?SnZHWWZyTVVDMTFJYVF0VFY4azkzQTF5N0dlOGUvUzhiU0hTak9YeDdjN3pE?=
 =?utf-8?B?RXdEdzloYzZlNUgyMjZnb2UxSXpPU0JSdTcydDhsMW1iWEpmZzRTaEhZZmhk?=
 =?utf-8?B?UzdxNXZFN2ZPSVZqdjkvM1g1ZEFrUFdFamFteVoyRVRXTk5QRGs2Tm5mWjhW?=
 =?utf-8?B?aHBDNy83TVZzem5WQVNmdWhxL0tjbHpkOGdjWE52eXZMSXc0Z0JkUEtFRUtE?=
 =?utf-8?B?ZGpITEIyQVE2N2FQemxmNFpqckhUcGphcFVpYnlmU0IvQVJUbTZZRGRCdkpC?=
 =?utf-8?B?NllmbERNYWhDSTl2dnBWblRDRi9ZM3k0N2FvWE5ldEhTWHdJZVZqdUlKSTlP?=
 =?utf-8?B?cHdzT255a1hiUnpLeXFHejJMWGNHWE1wTm5rWE1yeVVZSExGWjlpWkR3dTEx?=
 =?utf-8?B?aVd5TWdnNGZtbmZ2cVgybTM3K2x1VlpJNDhuQ2wvTU9LamhwY0pjYkJQNGJj?=
 =?utf-8?B?NHBhOWJkbElocGVyUEhRTDEvU0x4c1ZIbjVDcjNBSDRsWmUvd2VkZWo0K0JO?=
 =?utf-8?B?ZmNjUldiSzlDdDhoTE96QXRhcGo5dXVSRFpNWVhCallLWnFlMmloYXVRQTZv?=
 =?utf-8?B?NTd3TXVyN1I4ZTIzVitnUmpuVzYxWWlYaGhQQUtqM1NMZjBybjRMaWNmT05m?=
 =?utf-8?B?UHo5L1poWUNsa2Iyb0FZN3JxR08ybnc0L04rUUhLcWdnZUhUd1ZMQ2F4bHNu?=
 =?utf-8?B?Z2RMRThiN0VLcmNLcGd2c3o4dG13NEhpbFh5QTkrdUN5RENYNmZFZHdFQ0Ns?=
 =?utf-8?B?bDBKazl6QXoxVk05aC9GMUpmdmtURkJOUy9FTnlMNGNiR0lPY3o1S0xOZGg0?=
 =?utf-8?B?aTBkMVlrWGZObDlRZGVNSW51cXBlUEN3UmtsUVFUdzBNWWFhVzlWRWh2N2RE?=
 =?utf-8?B?d2JmY2hsa01rWXNpTnR5emlGTTBxaS90OVhYbm4xUGRFbGxPb05UNXh2eUVQ?=
 =?utf-8?B?Y0xEdHMra0tWY2kybEFqdmhLMks2UGc5ZFFTdEQyeG9ZVkZDdklZWHErYWxi?=
 =?utf-8?B?Mld0WWg1WnBLOW5BNVZGRm5sckZMNzI4aXNVeks3cDhpSTU2b3V6elU3N0VC?=
 =?utf-8?B?K2lJclBGYjRjeTVMZzRqVmVJMng5d1FJS0dGRVNsZHJHcVE9PQ==?=
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:(13230040)(82310400026)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2024 14:57:39.4639
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 01aee780-b02c-48b3-c942-08dcf5055ee1
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:
	MN1PEPF0000ECD7.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9076

On 2024-10-24 09:22, Andrew Cooper wrote:
> microcode_update{,_helper}() are overly generic names in a file that has
> multiple update routines and helper functions contexts.
> 
> Rename microcode_update() to ucode_update_hcall() so it explicitly identifies
> itself as hypercall context, and rename microcode_update_helper() to
> ucode_update_hcall_cont() to make it clear it is in continuation context.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 14:59:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 14:59:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826069.1240415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Ln7-0005q0-5n; Fri, 25 Oct 2024 14:59:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826069.1240415; Fri, 25 Oct 2024 14:59: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 1t4Ln7-0005pt-25; Fri, 25 Oct 2024 14:59:53 +0000
Received: by outflank-mailman (input) for mailman id 826069;
 Fri, 25 Oct 2024 14:59: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=4jrJ=RV=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t4Ln6-0005pn-4K
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 14:59:52 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on2060e.outbound.protection.outlook.com
 [2a01:111:f403:2009::60e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c80a682f-92e1-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 16:59:50 +0200 (CEST)
Received: from SA1P222CA0034.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:2d0::7)
 by LV2PR12MB5751.namprd12.prod.outlook.com (2603:10b6:408:17d::11) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.23; Fri, 25 Oct
 2024 14:59:45 +0000
Received: from SA2PEPF00003F64.namprd04.prod.outlook.com
 (2603:10b6:806:2d0:cafe::1b) by SA1P222CA0034.outlook.office365.com
 (2603:10b6:806:2d0::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.21 via Frontend
 Transport; Fri, 25 Oct 2024 14:59:45 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SA2PEPF00003F64.mail.protection.outlook.com (10.167.248.39) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Fri, 25 Oct 2024 14:59:44 +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.39; Fri, 25 Oct
 2024 09:59:44 -0500
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.39; Fri, 25 Oct
 2024 09:59:44 -0500
Received: from [172.26.85.121] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Fri, 25 Oct 2024 09:59:44 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c80a682f-92e1-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Tc9AMZswKC/0xI4DYbxpyfV+CrCy3YA6bH8/q/+tA0i4IITqtPVyfSOL8EIyBAopbuFxQBMFy2/AdVcFY82DHslI6P22j8cWYoQkxI9WMRTkWUwGkSfEUA9A67DmX1GrpzNTGNNvE1cC8f6G4aA9v0WoB8Vr5yR6s+HnZWY+E9nq7IxalBo+yhLiSBQAl2JH4Kca0dM/570J1FVjhVE5eLu6JY8lN+JfYihtLqFnRoFE/tFZmSZKAOgCglZ1aySYHiiGigaYVCQZQY1JCib8yjbMXzdQD9SIofd/5N4gLb7DSYbTcg186XeFKIMTF1+PtCsr21OA/O81UfidPP3MuQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=jkW7RjpfxX5d8OG22TtQWMmPxassFPu4FefwylxsMwg=;
 b=G8u15mZ3O/HOeACab/YG0hjyifIOQzoBr/Xg49AsETeDoZeGc4L8SvBJ0C7dYSY34z5yITaB4GUMZf8yARRuSZKSobpoPtvisyd5M4y62x3IaxN90R3LHds+JM5C67Po204fisSpUBIG1OTJHPrDrEiUd2NtXO1RwxOWFKS5DLOA8TKAV003WTPl5S6TY+zTrn9CAi3RhqgmxPYi6K1p/AvIEb55gsZfRIU/AOrOxFs5dxHQXjrNuvceROsOlVcyJamqsTshPhZBgKo8iTynTCw+lCGqujafX3MRd4hPVDNypN4Iy+Dg6XLgauSPmMtOEV4U05hI5WhTWybpaf4R0g==
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=jkW7RjpfxX5d8OG22TtQWMmPxassFPu4FefwylxsMwg=;
 b=mTNZ//3jRyjuh8Oj4dsqN2jqUJc1tHiBS++gRYdDwOwtGVCAKTvJ/Db9wI4yWGU9sOpJCNl+h1vhdQCLpoVM6JrwJ39rCrWy9MfRQRDkbZaa6nkq+aMBqVnulXeinWNOq5DtwWsEHOjg6F3CS8AYs8FEehRtKPmtWZQ8NQ1EcAE=
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: <48cb921f-8079-42c3-8e4f-244482f500e6@amd.com>
Date: Fri, 25 Oct 2024 10:59:35 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/5] x86/ucode: Drop the parse_blob() wrapper
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>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
 <20241024132205.987042-3-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241024132205.987042-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF00003F64:EE_|LV2PR12MB5751:EE_
X-MS-Office365-Filtering-Correlation-Id: c11fd50d-e0ab-4237-b971-08dcf505a9b1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?U3hVM2pVZDV4aUZybDFjL3AwNGZGQlVJNGZtbk02WFMxMVo3YXUyZDV6WTJl?=
 =?utf-8?B?azF5bFJKazVHNVYwL2JlSVRkUTIxeW12elJmaEpaYnBwR05BK2ZqSzFHR1BR?=
 =?utf-8?B?WUpiU3lBVURuMG5rY3BrTGpoWk81OFRiZktKdk5rdjQwMkNUTjJ4Ky9ZWXo3?=
 =?utf-8?B?elVIWWxUL1Jvd3h4UHBQa1pVeEZDSUkxUG5Md0lneHJuNUVwRkh3SE04R1E5?=
 =?utf-8?B?R1RuS2ZHTXNGWXZQa2YzU3NyQ0I2WWtHNkFudTljcnZhYStKK1IwTzZWdHJu?=
 =?utf-8?B?QSsybWIwbnZaSnZaUEkzTGdNN1diWlVocmo0MzU5a3VyeFFuc2FvaHpxS0t6?=
 =?utf-8?B?U1RRSlUyTlU0eGxvYmZEK1NZWnZqZXZUQ05hQ250Y0V1TC9hT1FTVHBUL0FW?=
 =?utf-8?B?TExYcXp4TlJqWnFxU25sb2lRNXNlMzhzcEwyWmJyN2EwLzhCcFFoNTZ6QUdo?=
 =?utf-8?B?ZE8zdHBuRzVPUXFhRXYxWktKUnZ1OEpweXowQ1k4WEVBSXlNMVFVZzZlSlNJ?=
 =?utf-8?B?em9JbFlZRjZmWXpHbXhTQkhheXBhTXR0TDM2QmxTVUJxOUdtZ04vekUxSHo1?=
 =?utf-8?B?aUM3KzdKYUZqYnN4dzZnVVdFRko3ZTJGQzlGYWgxS1F5Z29KSUNJdEJEY3U0?=
 =?utf-8?B?M3BxeGhQUHc2SVo5WjkrMkNhWGt1a1U2SWdnYU8razF4Wk1ieWtEeWhZNWFN?=
 =?utf-8?B?dkRVcmlWNkNKblNCVXhhaGhVOHFZTE10a0ZvYXUxZzRzUkdNTTI5U3pjazFC?=
 =?utf-8?B?eWlVNXBlUUtPdkdqdDl5ckdrZTFrRjZENHBsdnZRZUFNS1VqOFNhZDFocS9i?=
 =?utf-8?B?TUI5ZTYvMDArOXBKTTJQeWlCS3U0dkdhUGUreHNZRWR0VDk5T0hUdm9HQTFh?=
 =?utf-8?B?dktESVBnbDV6VHk4OFFTblAyekMya3g3VTkvdVk1NFU5T0xZeVhVbEtJV3V0?=
 =?utf-8?B?bmdhOFhMY2xBUFREUXFvZkxjbVBLejk2Z1hhZ1pUVXNidU1vZ08xVU53Zk1t?=
 =?utf-8?B?TkZoS3NrNDBxbnhQNUtZd251bUtuWFdPelowTWozTDNLb1htV0tmWGV5dWdG?=
 =?utf-8?B?dTNWYzZVcGFQeEVpZGlZcENtS1pwdVQ5dVFSdjVQOE1NVndCeTRla2Y1UGkv?=
 =?utf-8?B?cEFzdHNmTnFuU1dlcytBSUdrMzdZUU1qcllzL0FBT2VlVDlrZGtmK1BYUTF3?=
 =?utf-8?B?RnZEd3BZUXRzejI0dThuYVpIcHY2aWtHVkptZFM4VHdVMEJOVGpVaUQ1K3NO?=
 =?utf-8?B?S00vMlQ1bFlpZWxGdEM0OGk5bTRsN0d2OFE1SGZMcEZDWEFQZ0pWbk1JeUZF?=
 =?utf-8?B?WEpOV0xvWVZRYXFEbDRFM08xcW5IMmhUT2QvSzhKNmNVUmhYVnEwODNYNTRG?=
 =?utf-8?B?bjc5Wjh4RGQ5djhXNzB5R3dtOWRwcXNGbHhZL1BKck1RN3dEamVMaGZocEln?=
 =?utf-8?B?clRPc0NVV2RpWS9RaWVZWllHOTNoWEIvMmVRUGlDQWxxeFJmcmVVWkxPUEdQ?=
 =?utf-8?B?V2VuUmZ0SnUrWmgvMkpaa1kyREZxVFhycVhTN2t6bXlPOW9SWEplbFBjRG9Z?=
 =?utf-8?B?dlIwdzc3VmNpRndKL0hQZlE0UXJZVDI4V1VGSWpPN2NSd2gxVHFwSkdQY29O?=
 =?utf-8?B?NWFRMVJKWExpNkpCM3V6TmhJdW81VXZGY1ZvZ3dybm1md2hYMDh1eFNtdndC?=
 =?utf-8?B?TlFFSWRqMTNnVFU2TnpiRjdrbWdJYXpDUWwzSVRJVC8rcFdMdHZRL3ZUaVps?=
 =?utf-8?B?b2xlNUpHZHRwNXJhakpRMWg0bkRxL3N4TWZyVi9Dc3JXVFRJc1d4Y1RPaWp2?=
 =?utf-8?B?cmJkL0poQjdxRGxvaHp2enZGR2tCRzdiQTNhQUNoSXdRbUlIMUU3eVc1T2lW?=
 =?utf-8?B?cmRrUzJrNWZVVkpZM3RVWHJWeEtza2htTHNkRm9uVDd2b3c9PQ==?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2024 14:59:44.9625
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c11fd50d-e0ab-4237-b971-08dcf505a9b1
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:
	SA2PEPF00003F64.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5751

On 2024-10-24 09:22, Andrew Cooper wrote:
> This separates the collect_cpu_info() and cpu_request_microcode() calls for
> later cleanup, and frees up the name to be reused a little differently.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 15:03:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 15:03:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826079.1240424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Lqz-0007Oj-NQ; Fri, 25 Oct 2024 15:03:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826079.1240424; Fri, 25 Oct 2024 15:03: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 1t4Lqz-0007Oc-Ks; Fri, 25 Oct 2024 15:03:53 +0000
Received: by outflank-mailman (input) for mailman id 826079;
 Fri, 25 Oct 2024 15:03: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=4jrJ=RV=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t4Lqy-0007OW-3Q
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 15:03:52 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on2062d.outbound.protection.outlook.com
 [2a01:111:f403:2407::62d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 56dd6395-92e2-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 17:03:49 +0200 (CEST)
Received: from SN7PR04CA0028.namprd04.prod.outlook.com (2603:10b6:806:f2::33)
 by CH3PR12MB8852.namprd12.prod.outlook.com (2603:10b6:610:17d::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.18; Fri, 25 Oct
 2024 15:03:45 +0000
Received: from SA2PEPF00003F63.namprd04.prod.outlook.com
 (2603:10b6:806:f2:cafe::ac) by SN7PR04CA0028.outlook.office365.com
 (2603:10b6:806:f2::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.21 via Frontend
 Transport; Fri, 25 Oct 2024 15:03:45 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SA2PEPF00003F63.mail.protection.outlook.com (10.167.248.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8093.14 via Frontend Transport; Fri, 25 Oct 2024 15:03:44 +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.39; Fri, 25 Oct
 2024 10:03:44 -0500
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.39; Fri, 25 Oct
 2024 10:03:44 -0500
Received: from [172.26.85.121] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Fri, 25 Oct 2024 10:03:44 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 56dd6395-92e2-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=GWGOHxAIpafruyvpf8Pnh4QE34F4dyiV9qD7qseUgq+aZSIHvl4YlLbeccgm6GpUxYhApGOMoZHWmgOyBg/WlDTCD9gxjOATfz8Rt5jlpjHjb41xwtbC8RVp+OIqFVtjG86LglmlKqNx6WyN7YLtIRGuCuj1oiLby4qcEFgOJqEAjUtyZxKJPet+0kFx+5fjb9ye8+ML65Mk+70JbgFrG1YdXuLLMFgAo4AS0bOOvVaoqbL6klX3FwRqTLYq6Fitv2i73GkVss/pWLwvNgd8Jg/OhMnaEyN5vFpYgwgX0YP99xoiRaEOhm/jullO5hKPW6QMrIth4qpSiyZgVd5RCg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=MV/vACyTFpjZx59/9qqPFisOBGQP7WlVKceSMZX/nsw=;
 b=lP3ovOJuKczpDuOT1j7mtpNxuIUAQQ3o4DjN99lFzIrwb1FD2bqvFPVkhIxhs6lvR3GoyT0HvoODmb8tU7wQRqJcoPzpYJ0Z7kXfGqADuh5lJ5RRu7PL9CvpYGCuWzUpxq3tEf9UGJY+WfSOCOAzK99+tqaheo4sfwo0sfm8pm5kocDLY2jMAWQ7Ij25cbvDHOp9IUwGmWuEn2eeLPIl1OBfW6Q/ZXa6bN3odUucx3XZo74h+QII7X0Y9XScxuvqAow7O9H7haw9S8WJtdFQZDc5ISjXmQQx1tAq2uusWAPP/pF6vO30x1VsqSbp1AAr+iXhrUzjg7Q3/wlcAzm0PQ==
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=MV/vACyTFpjZx59/9qqPFisOBGQP7WlVKceSMZX/nsw=;
 b=FS5zvbeQo+lf+eIJRuk7EOQJhisPKToBzWhDzqtHJUW/+gmFL6ucvJ8MUHPk81jdyisLl9pgc9OhmC9zDqWIpbRJZqiWt8Qv9Yvp7ji+1aCP2U16yvt1vwSE56AE6W+r4Fgl4i6Ta0PiRwYDB3f26xa4TKSo4KXP2DqYpPJgdhA=
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: <3fb31bca-626a-48a6-8b06-7b37d6865862@amd.com>
Date: Fri, 25 Oct 2024 11:03:43 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/5] x86/ucode: Rename the cpu_request_microcode() hook to
 parse()
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>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
 <20241024132205.987042-4-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241024132205.987042-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB05.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF00003F63:EE_|CH3PR12MB8852:EE_
X-MS-Office365-Filtering-Correlation-Id: 938d6ad0-f855-43fa-63f4-08dcf50638bd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MGg0TzRtT0RCYlRjdS9rOU1GbGFXRm9GNUtSVkdlQ0Z3K2FQTlJ2TkgyWWVM?=
 =?utf-8?B?UnI4YWJZK1pnSW9jakhZcGdXcGNyRlREVG5zOVJBbWlNSkxSRW5TdjFSZDM2?=
 =?utf-8?B?NHlSZmVFVjYvNjY5Y1VKVlNuSGlhMG5YRmtWL1I1QTErTnB2citvWHBleFVQ?=
 =?utf-8?B?UzZ6b1Y5dXhheTkrRmQzejN3dDY0aG5TSTU1N1BvbVpTdHFqOW5kb1ovRGNX?=
 =?utf-8?B?S3JMU3pnbEpITEZBV0JzUFM4OVc3b3U2TDE0NkVmaDVKNlRnNnl1Rk85MXd4?=
 =?utf-8?B?dGM3blhqVlA2bEJocmM1NEhoU0s5aGxaL3BwRlg3dkdPOEJoeU1MdkhjQUcv?=
 =?utf-8?B?Mjl6QlllL1N4OGU0QlN0ejlOemxUS1dDTUp2NWRSdk4yNi9nekswSU42SW5L?=
 =?utf-8?B?Y3dDT3loU0UzbElkaStsTGlhRXcvQm9vR1k0alZDMHhKSkk0eHFIOG9UZTFl?=
 =?utf-8?B?TUo1cnZmK2g3bkVuN3JRRll0S2NHc2dKckFnY0hEYmVocnB6U2JDV3hXM0Fa?=
 =?utf-8?B?Q0dicDdmYUU4VmZpVHVEaWtOL0xocjdaYUdPYUlKdmRndVBnY0VzVkFYS21D?=
 =?utf-8?B?U0gxZTV4bmRpM21uWWZjZjBudXlEa0NsOGx3TlBkNGdvd2tsQzJ6RGEwVFlL?=
 =?utf-8?B?WlJBV2dDK0xoeWd0UENZWHQ5b1ZtcDFqUjA2QUNNdXUwdE1oZXlvQ2IzRUhF?=
 =?utf-8?B?UUZybm9vdUNub0JsdkUzU1BKWFhvaHhTRzZWS0xLalUwSGJyMy9lMldObDg1?=
 =?utf-8?B?VTRadFJTT2hrUGhZaDM4NkFVd28vNkdSOW1rNlAxcnl0V2JKYm5UazdlNmNj?=
 =?utf-8?B?d1g0RFY5U0JuY0xJdEZneHFVY200UmROdFI4QlRidDA1NWpmUmlLd1BsT3ho?=
 =?utf-8?B?SHY1OForRlFTdDk4dnpucGpjc29zK3dPckxLcmZRZVV2YXc0dGlKSllEWWJh?=
 =?utf-8?B?QnNlSmtGVWpRamNaWk9OTm8wS1p4ZjJoNXkyZ2NrQjRteW1DYXRhYiszQXpW?=
 =?utf-8?B?c3E4eFhoL21wNFVEc21pMnk1NWE2THRjdkZFaXBzbmp2VUNXUG1tY3pTM1pw?=
 =?utf-8?B?S0ZXaUsvQ3o0K3VZNEhYOWVEYURJYjhLRXhNaE5DWnphRG1NNFM0ZHk0d1Er?=
 =?utf-8?B?ZVV0ZjEzdkFFb3ZhVXkvOVJGT3RyL1VqV1ZsTTkzT3NNMGZNMVJzREUwOVZJ?=
 =?utf-8?B?RW9FdWhNazJ4RGZON0ZRdUpHcC9Ya21Yb205SFhZUlk5NnhueGlyZjRPUFph?=
 =?utf-8?B?c0FGOG9KNGNWYjJRYU9aeDhWNUpXdkdESUxpUXIvMGxpNkptZnhiSVY0SW1w?=
 =?utf-8?B?TXdRMnFsa1dvZEh4N2VSc0d0eng5VEFPemVCOHRUajFMTjJjaGZCSzJnaTF2?=
 =?utf-8?B?M3o2cmFBMkNZUGJPdkZaN1JqY1M3bUlnZEdXQVVQcFVXMHNNN3hSY2pFL2wv?=
 =?utf-8?B?UXBPaDlzRGI1Q3JLR3JSNzFBOUVjYXExMzZ4UTJ2ZHhHQVZkQ0daWVYwOFFw?=
 =?utf-8?B?MVo5WEVyQWE2bHRaWDJXZzEreUpJQTBLNTArRkZaZGFrNkhiNlMrYzNuQWhu?=
 =?utf-8?B?cjNxZ1ZPaGNNNlg5T2RZY2crOTJtV0NQaTJNRmhBazJpVStldTQrcW9JRjRP?=
 =?utf-8?B?QXA2dksvUnhrVy81SWpEVW14Q3JxY3hBam9NNElOdFRkNENER25Tb2FlSjlv?=
 =?utf-8?B?K3duMFFzY3lmNkZRZnZsZGVJOEJ5a2R5Mlo5QUFtTjhVRWwxWXBRSHcxWVFO?=
 =?utf-8?B?K29LcEtyWlNIT29qU0xvQ1Z1WkJkRXNxdVJiWUhSajZUYS90NDZjdkpWYzl1?=
 =?utf-8?B?YU0xSCtTUFdKVzljVUEyMHRlSENJYUpUNElLdnlrZVl3cEh6cmhVV1JnVHF3?=
 =?utf-8?B?d2pUSkRIUkpSczZPRTFGRGpkUFloRGRJUzFHMjZ3YlJlSlE9PQ==?=
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:(13230040)(376014)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2024 15:03:44.9531
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 938d6ad0-f855-43fa-63f4-08dcf50638bd
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:
	SA2PEPF00003F63.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8852

On 2024-10-24 09:22, Andrew Cooper wrote:
> cpu_request_microcode() was never a good name, and the microcode suffix is
> redundant.  Rename it to simply parse().
> 
> Introduce ucode_parse() and ucode_parse_dup() wrappers around the parse()
> hook, also abstracting away the make_copy parameter and associated
> const-correctness.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 15:08:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 15:08:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826088.1240434 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Lv7-00006s-7m; Fri, 25 Oct 2024 15:08:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826088.1240434; Fri, 25 Oct 2024 15:08: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 1t4Lv7-00006l-5E; Fri, 25 Oct 2024 15:08:09 +0000
Received: by outflank-mailman (input) for mailman id 826088;
 Fri, 25 Oct 2024 15:08: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=4jrJ=RV=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t4Lv6-00006f-2o
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 15:08:08 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20606.outbound.protection.outlook.com
 [2a01:111:f403:2405::606])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ef4cb145-92e2-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 17:08:05 +0200 (CEST)
Received: from BYAPR06CA0008.namprd06.prod.outlook.com (2603:10b6:a03:d4::21)
 by CH2PR12MB4248.namprd12.prod.outlook.com (2603:10b6:610:7a::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.18; Fri, 25 Oct
 2024 15:08:02 +0000
Received: from SJ1PEPF00001CE6.namprd03.prod.outlook.com
 (2603:10b6:a03:d4:cafe::8b) by BYAPR06CA0008.outlook.office365.com
 (2603:10b6:a03:d4::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20 via Frontend
 Transport; Fri, 25 Oct 2024 15:08:01 +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.8093.14 via Frontend Transport; Fri, 25 Oct 2024 15:08:01 +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.39; Fri, 25 Oct
 2024 10:08:00 -0500
Received: from [172.26.85.121] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Fri, 25 Oct 2024 10:08:00 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ef4cb145-92e2-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=WNF60j2RHTHTHQLfxDCzw3wv9svu8MhaJZfCiAc9PyvDPQrzCgeItf0+pahX5Lv68Ph0PBR5LGaHIUmHXpEBF18/chVZaRHbUI/+ewVAnXaU06gcZlw1CEolKHvfFjizX+KaFnomXoX8oUO66lc0ddhUTtpvDX3dUJrTwYgPSXAiXGTalziPuN+1frqKExhPVOSEptYOhpvEZzF3z/wk8zs6Nfp+xlJ5gsnSYEWThkL7ii1rImc56HyPM1uMqhF/FsDbnJM525zCCUQUSnfa2O6nEKAPHmO9WXHzPZ6afGNLqZCHYQ+NotowFRRhmvoc+2Pvl1zkaTDRF67HdeVZmQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Gsg1F5FUPyMvuqzWVQbppaLA03wDnVHaxRyCpDWAQao=;
 b=bymshTaqwk0m0FSbW98ksC/orkcfOq+VJzfTZxlob/37NGnH8Eh/nz1pCmr7LjqKKIRYwA7f3CEqrW2c6pbGqHy/kDwtyKxyicxkTllpgcae1fhWc2AbvsuN0JBIi2MIR+O3vUO75FZeKOQfaUfzlbNqssAHb85QQMA/B3CbjuP3LRffKfZZfs+4+8hi2AeERvDWLr5sZBgm4gMzMwLHJ8oAUwQfENUi3udwuHUlztFsDBsxbewG0DfX8REQPUUNdapyuUi1HW02FaoxuwGLixYU0MZchBGHbBpCYMEFPJsktQc7xBzi0nWMwrw2/IcdEioKnZPGfLxOacHDPWjRww==
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=Gsg1F5FUPyMvuqzWVQbppaLA03wDnVHaxRyCpDWAQao=;
 b=H407FbvCL9BNIoNzfM33WvcFlXvIr93OPRElAxBgpjSO+h2Auf3AhqRg/YMxR7P4wf7NS1YLGyp2JE/YuwHZsjwkgtRzaU4aoWdp0KtJVJdRZigR5EIvI1m0Q3NPdDgjuLvCeS1qzycjW0uuhGLFbnjOBDjYOrIZrqzXafGhrWk=
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: <0a0b476e-4dff-4a65-babf-74851df32617@amd.com>
Date: Fri, 25 Oct 2024 11:08:00 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/5] x86/ucode: Rename the apply_microcode() hook to
 load()
To: Andrew Cooper <andrew.cooper3@citrix.com>, Xen-devel
	<xen-devel@lists.xenproject.org>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
 <20241024132205.987042-5-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241024132205.987042-5-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE6:EE_|CH2PR12MB4248:EE_
X-MS-Office365-Filtering-Correlation-Id: 6d7a779d-c9d8-4bed-0811-08dcf506d1cf
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|82310400026|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?K2F4NlVsQVkzdjBTYmowdVB5VXc3QTdPQjhCTjkwOWNXTTVudXpIZHU0THM5?=
 =?utf-8?B?V2w1am5EZEtiVWJtZVRZdXRUSW1nLy9YeUt0S09nMUh1NVNNdDZUVVMzVmJU?=
 =?utf-8?B?YTh5SDI0SWcvQ3NUZlBlMHJTOU1yK1NMaXhEbzJ5WjBTcldaRU9walhUYlFm?=
 =?utf-8?B?Q2tUQ0hqZzZpOWQ2WXZDb1NFYWhyU0w0d0JML1MwWmhPQ2ZmeXlRdTF3RmhH?=
 =?utf-8?B?TjVxajVhVzN5Y0hxME1sZ3ZpNXM3MFkzVmZJbVRUeUQwQkswL1VFc25QemhB?=
 =?utf-8?B?SnJyTlRyU0hDenE0cWJyY2IyeHllWDNOVDB6a2h3TlB2YlVzZ0FlQ3FHNWJW?=
 =?utf-8?B?TFl6bUwrcld0TnJTVDZ5VlJydkpURFBvOXlaN2lYeHA5UUVwZFUwZDBldG90?=
 =?utf-8?B?Mm84WTRiTUpsNzRwanFZSXZITWtmdVRkQ1VNYnhVSTZ3TzVTMlRRV09GeTZl?=
 =?utf-8?B?dEN6cDAyM1cxYUwwRlVTUUNyNWhVZjd6ZnJSc0lHTzFsbGhaZGZEbFljT25v?=
 =?utf-8?B?M3NReU1ma3ZGa2VGSVNVWjZHT2lrYnVmN0RpMnlMMEYwNFpWOGUzVkJLSDdJ?=
 =?utf-8?B?RlRPbWZ4cFNGVHVCaCs0Q3Zzb2pnZ2JvYlQ2V1FKcjk5dkpYd3V2dGUxZG5P?=
 =?utf-8?B?dmxJTzdjSlNCNEE4WDRDVnNOSUUzdnFFTzFYM2pYWlh5NnZyUkJSd3ZEMitL?=
 =?utf-8?B?WkNOOXBLdVVWdCtMS1BrZ2R2TjRQZzN1SXBYYnlNKzA1eEhCeHhqeWw5dzB2?=
 =?utf-8?B?NHVFY0RHWWNkMkdzK2dMc2VGaTc5U1c0WGJJWXZmeFJJckU1WG1XMkt3Mmdl?=
 =?utf-8?B?bncyS09rbHVGN3AvWk5Mdi9Ycmp5OW5qdHA1aFRKTCsxUmw5KzVqOEpxVzNL?=
 =?utf-8?B?bnM2WXl5QzlXWlgyOTVuOFRxM3hsMlY0alZDbHJ5Q2tEM01LVkJqV0M3L1Vw?=
 =?utf-8?B?SUZCRmU3Mnc5NnZJODkwSVlDWGJQajZoS1lHSVZodHRQcDNwcGVhK3RKa0J3?=
 =?utf-8?B?M2w0cjk5QTQxOGc3bE96d0xodGltWnVrbTd5dWJuVUdkT21nSXBJUkJFcGlt?=
 =?utf-8?B?cTBORUdZZDR0UjBKT0xBVlBMcHNuN2xITXVXTHBZbnpFY1lQUE5WRUoxSjhL?=
 =?utf-8?B?bWc5OVEwOUZRVXBKcElQWFBVaGlVVVZTTjc4czhVYzA2WDNhbEVBZVRkU0hH?=
 =?utf-8?B?ejRWeUF3K1dNZmM5VmZReVhNMTQ1a01IREFKcTU1bzY2dVAxblhoaUFyclJR?=
 =?utf-8?B?MEZtaDk5RHR0MWd2MFN2MnhUNU9TVTkrMkJlQjZSNFFDY3NUL1UrNFg3TFF6?=
 =?utf-8?B?blpBcUtYN0RlL2c2bWFsOFZyU00rMWJmWmgvaUlCb0pUTDVZNStUdnRtN0o1?=
 =?utf-8?B?N2NZVXFWLzZoajMxOGNGWjBUbHVuK0lzSDlveUZhVGZuOTZMeFlYWmdmaWFG?=
 =?utf-8?B?b3NqTDF4aGFjNGsxNTcvNkx0Q0F6QVhjVjhSeSs4czgzV2F2a285WDB0S2U5?=
 =?utf-8?B?WTV4OUhxVXBRYkx0UXhkMm5XQ0F1RHRNTVo0KzV0V0w3b2JsMWN2b1NYbnVv?=
 =?utf-8?B?bmhTbXo3QWNIYTNEYks0OGVxNStJM2xFTWJmWTlZYkxFMDFubmRjTFJ5WGky?=
 =?utf-8?B?SVY2NzdRMmNnTG5jSEpHTFk4bUZ1NHJGWHdLVzduaXo4UjZxK05qWEl5TEtX?=
 =?utf-8?B?LzhKcDFPL0xXNG5rNHRuT2FIWmcyUzdRTjBVV05OcllrbktLWWNsT0x6dCtT?=
 =?utf-8?B?dFBKcDd1aGI4bi9oR1AxYWJ6NzIxdXRmbWtodkdzams2ZXdiblFKSCt5TEh3?=
 =?utf-8?B?ekl5eDVtbWp6MVZIYzdUbm1NeUo2aURzRENmaFpvc2pNTXVteHdVM3BoU2xz?=
 =?utf-8?B?VnF5VlpZcmFWR29tallUaHRrYWlhQi8yL3BtSWhsMDVMYmc9PQ==?=
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:(13230040)(376014)(82310400026)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2024 15:08:01.6820
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6d7a779d-c9d8-4bed-0811-08dcf506d1cf
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: CH2PR12MB4248

On 2024-10-24 09:22, Andrew Cooper wrote:
> The microcode suffix is redundant, and "microcode loading" is the more common
> term

Missing your S-o-B.

With that:

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Fri Oct 25 15:11:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 25 Oct 2024 15:11:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826095.1240445 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t4Lxy-0001Zp-M3; Fri, 25 Oct 2024 15:11:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826095.1240445; Fri, 25 Oct 2024 15:11: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 1t4Lxy-0001Zi-Ix; Fri, 25 Oct 2024 15:11:06 +0000
Received: by outflank-mailman (input) for mailman id 826095;
 Fri, 25 Oct 2024 15:11: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=4jrJ=RV=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t4Lxx-0001ZT-7f
 for xen-devel@lists.xenproject.org; Fri, 25 Oct 2024 15:11:05 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20628.outbound.protection.outlook.com
 [2a01:111:f403:2407::628])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 59684f04-92e3-11ef-99a3-01e77a169b0f;
 Fri, 25 Oct 2024 17:11:03 +0200 (CEST)
Received: from MW2PR16CA0003.namprd16.prod.outlook.com (2603:10b6:907::16) by
 CH3PR12MB9194.namprd12.prod.outlook.com (2603:10b6:610:19f::7) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8069.23; Fri, 25 Oct 2024 15:10:59 +0000
Received: from CO1PEPF000044F4.namprd05.prod.outlook.com
 (2603:10b6:907:0:cafe::e3) by MW2PR16CA0003.outlook.office365.com
 (2603:10b6:907::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.21 via Frontend
 Transport; Fri, 25 Oct 2024 15:10:58 +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.8093.14 via Frontend Transport; Fri, 25 Oct 2024 15:10:58 +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.39; Fri, 25 Oct
 2024 10:10:57 -0500
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.39; Fri, 25 Oct
 2024 10:10:57 -0500
Received: from [172.26.85.121] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39 via Frontend
 Transport; Fri, 25 Oct 2024 10:10:56 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59684f04-92e3-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=Upa06y0IuncoO6qXOtaPIMZy1RnkW1YgJ+drNX0RVZYYr2ParKC6OevFc3M4wyZ3uPICbbwiLS2RVlAeN/6sUa6godW2BukRt2JRWtImKrr8N1N2F4FBWwgZjTv7mRxTbKaHb13f+OuL5C0pEqQQLB6ugKZ1HcmP8X+8OWNhmyEWEGsthI+gT6e/IuF4DkAvlK6GNjVGLnuOqLENLEbAagkeC/NLQQ7hNxO8YUv6JkcGkZ7GfDTifmpMdFLUThGr0d8PJbsKKgoZabk5Jkg/JzU44NXWzX4rDzegQNvChhxKamgaW0hAaC+DMGFtZ8zf2jQl7xQLiNjecIyr83kZ0g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=BRBu56+NVsuKPYkH2gqVN4N+jXnclsYoveSN9L+DaFc=;
 b=aXWsE379TTazhYV1gXTG7c3ZGRfHN1oH1+rFQIJm24RTahoou+sYyfgLa3PoXXkSy7j4CaeZEyYWRjsN2jB+iZ3ztty+lcCy/pEfCpU9mhA5nQgipUVTpHbeVnS2jOGBugJwAjqk+qMK1r4PhXpy9/JTm/DgFgNXv5dtRpYPGQYglbgSpWnt/vEF5RYaT3o3YL/uEFI3lx12XLuNwUUCPlvX/S1KbGUyuzD1NGPD1pKlnkOauE6SbEus4/RJzPMxz4D/n/QkjySsCfI7CFyyNlt8p3uPcBqiSQD0bKouINrVKuZdFaDczDamLRJJzoKWVRvLDRYZvKQlf0qm6FJD+g==
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=BRBu56+NVsuKPYkH2gqVN4N+jXnclsYoveSN9L+DaFc=;
 b=QLKjf4mXGFXc2K3TRClX1lejBPB8pnKQ0HjaP6Pf9fRg6ZrJL+xut258ffrqPrQ/JEJrpZP4voh9gvn9Bk/TGC6oyc9R8rPKcALu7NIc9xzeWQCCqZoB1edRuvwdqRWTcguEGWJ6F+apcDmtQxI58jmlxQ7JBb7WuacZ4reKoXE=
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: <643e28be-5d54-42f4-b6fa-08ee73093914@amd.com>
Date: Fri, 25 Oct 2024 11:10:56 -0400
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/5] x86/ucode: Drop the match_reg[] field from AMD's
 microcode_patch
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>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
 <20241024132205.987042-6-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jason Andryuk <jason.andryuk@amd.com>
In-Reply-To: <20241024132205.987042-6-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044F4:EE_|CH3PR12MB9194:EE_
X-MS-Office365-Filtering-Correlation-Id: dd4b3af3-9fd3-4f87-2a7f-08dcf5073b42
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|376014|1800799024|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?K09EYmlMSnB4Z2p0c2JlK1NMRmRHM2FPQnF3Z1M0MzdIMWJoMlVJWTdoZUow?=
 =?utf-8?B?enRYaTlpV3Z1cVNuMHNrZzZlQlErR1poM25BOXVEMmZXanVEQU9HUFRCTkhC?=
 =?utf-8?B?QldTMUI0elNRdU5FZFpQbTlObzJnaHBEWUZhZkNqUlUxT1RiSUFOcytwQ3FO?=
 =?utf-8?B?YktZYWhlenRReWtzSlhjaGp6YmJHM2ZSK3BiZm8weGQ1aktybTNFRkV2VERh?=
 =?utf-8?B?ZDdmR2d2TFExdWFpaFA2eGFxN1NTeTRkaWFWQjlXYTRDTG1wNW9zQ01QWC9p?=
 =?utf-8?B?SWFnQ2VTZnpacUZhd3ZUMmtGdnFzTmF3aGIwODhSK2lzZThRazdrZWU1cTU3?=
 =?utf-8?B?OFM1Z1RwMlU1UFFZOVBGZlVXZmM3YlRJNkJJb3BydFU4bks5MTR6TzJYb21C?=
 =?utf-8?B?REFoZWV1TVBIeXNrVUhNOW9hSWlPK1lVc1RlTDNLU21CWC8zL25weFJxZnJk?=
 =?utf-8?B?cHFqZkQ5ZWkzK0lJWlEzaXlxaFVBSjN1Tkh0QzVpNldxNG9tTUZDaWlITVpJ?=
 =?utf-8?B?UUNlemIyWlpXZ1QwYXIvZHk4MXhYUnZ5b3A4WGxGNEdRN296VVA2dmZ6UzhJ?=
 =?utf-8?B?Slk2dUxJS2lHSlpKL0xGU3EvMEIzeTFXY2poeUNBV2ZGWmlhSGtHWUVSUXc1?=
 =?utf-8?B?UzlKV1BtRGthcks1R3czZmFNbnA4cW4rMmRBSVpnR3NhUUxFcGFYZjFSblFl?=
 =?utf-8?B?RTJXNms4YnhJR3Q0RzBXWDJ5dGtzU3pwd0RKRE92VzgxbFd2dWgrVWYyRXlW?=
 =?utf-8?B?TlVSdm5IbDc1Z3JwNld0Tks1L3Z1NGJBVFo1WDgyeVViVCtGeHNtT3pWMHBY?=
 =?utf-8?B?Vmc3a25xdVV4Ky8rOXNaM2tZN1krUDE5UU1NOGw4bjZCS1dlS1BWamkxdkJN?=
 =?utf-8?B?Z2xueDVJeWJEcmFTbERVcUlJN08rbWpFYWxPTVROT2RTNmxaYm9GSFRrTjJt?=
 =?utf-8?B?eVNEZmlJU3NKV0RoYzM2R1ZqTWNFYTJ4N1RDMVRPVWw1TTNiR29wTno3ZEJi?=
 =?utf-8?B?Y0JyRzFvdTJmRklWMXhjSUdyRFpRWktMYjFUSHpDZzNYSEU5YkpNOW1NamhO?=
 =?utf-8?B?N3liZzl0R1U0cm1LMjk3N2MydVJGa1krOHZOVzhMTXY0WFJqMjhyMzhmY0Vl?=
 =?utf-8?B?cnRnQmI5WXJWOVlGaGdiL3NlZHdaL2UrSlorZnNNcGZ0WVd4ekxMeUwrZ1ZM?=
 =?utf-8?B?djBZaDhVQWtGbm02dG9OMHJ3YUtlaGR4dXZNZjdMbnNOZlUvaU1aZ1JLOUFs?=
 =?utf-8?B?Wk5rRHlNam9UZ3pPUU9ZZWkxamlqV01ITWc2ZUF2ajFZVFRmSXBoREJEayty?=
 =?utf-8?B?YWQ2SnJjNVVzNk1HSlJscDNqWHhLdERoRmtWdm8vZVFMY1Z4NXJUTzVOck5v?=
 =?utf-8?B?T3o1bkhtTCttZTZ2K2JqRWFPeUpFUDFGd093Q091RDlWYXZDVFhrQzlxWEl6?=
 =?utf-8?B?dFdZUnVWbU9rZmJxb2c1VnRWaUl5SUZ0V050Um5xQmpwTk5qRG1Ba04zMWVD?=
 =?utf-8?B?dk8rb2FJMWNhVlJxcmNRd2hKZ3lJS3U0eWp5bHQxSFFRTHlDYXRoZXNMTHpj?=
 =?utf-8?B?aHo1TytRK0RuWTFtYmtXRGdPWXNaSHhNRTVTeDV6WmZUS0UycXpVZXo2cnpU?=
 =?utf-8?B?WlY1RFdNb0tSRnNHTCs2T0pJVjJ6YmZUaUpPUnR0bkJzcHNyb2tsaXBlZjRP?=
 =?utf-8?B?Wk5zcnkyREJSUWRrOGZrc0RoZlNiUkpTZGkwazlIT2QvcWE0MWVnTzdCcXV0?=
 =?utf-8?B?Q05oejhuNEI5YzUxdUcwa0w1c0N5WWl6ekxYYmp6YnBrM0tYSnFvSUl1OTFx?=
 =?utf-8?B?OG1LRHVZM0p3QnBsdUdYREVZWkZmbnI3NEVXcmpTeUU3UGdGbXJXQ0FZaFdM?=
 =?utf-8?B?UGc2TUQvR0V4UVhsdUpKOW5Cb1BHbUFlSnlRTkw3aTBTeGc9PQ==?=
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:(13230040)(82310400026)(376014)(1800799024)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2024 15:10:58.5817
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dd4b3af3-9fd3-4f87-2a7f-08dcf5073b42
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: CH3PR12MB9194

On 2024-10-24 09:22, Andrew Cooper wrote:
> This was true in the K10 days, but even back then the match registers were
> really payload data rather than header data.
> 
> But, it's really model specific data, and these days typically part of the
> signature, so is random data for all intents and purposes.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>


From xen-devel-bounces@lists.xenproject.org Sun Oct 27 14:43:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 27 Oct 2024 14:43:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826247.1240454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t54UE-0006rF-9j; Sun, 27 Oct 2024 14:43:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826247.1240454; Sun, 27 Oct 2024 14:43: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 1t54UE-0006r8-75; Sun, 27 Oct 2024 14:43:22 +0000
Received: by outflank-mailman (input) for mailman id 826247;
 Sun, 27 Oct 2024 14:43: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=eQun=RX=cloud.com=bernhard.kaindl@srs-se1.protection.inumbo.net>)
 id 1t54UD-0006r2-NA
 for xen-devel@lists.xenproject.org; Sun, 27 Oct 2024 14:43:21 +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 cb5764ae-9471-11ef-99a3-01e77a169b0f;
 Sun, 27 Oct 2024 15:43:19 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-43155abaf0bso36227865e9.0
 for <xen-devel@lists.xenproject.org>; Sun, 27 Oct 2024 07:43:13 -0700 (PDT)
Received: from localhost ([185.68.248.203]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b5431c9sm108116165e9.0.2024.10.27.07.43.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 27 Oct 2024 07:43:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cb5764ae-9471-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730040193; x=1730644993; 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=eBwj5xstmqnL4Yh+OFF6P5n824j5T5U5vzKlcLCJ0/Y=;
        b=eThlC2YSmu1Wo/XNr8JXC1PLTbPiuFywXYEfJfIa6KWTrGqYP7XlGkBqgn2iDwqmr6
         DJnNAVlwTe+egvvyiw8SyEj+cocPIj0zhgXRijCH+xml1dS13eDquDKQgeDHx6il3jKY
         y/Nto+tsxWiHX+VB9zvgCiGMbnLTu+53L1BFA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730040193; x=1730644993;
        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=eBwj5xstmqnL4Yh+OFF6P5n824j5T5U5vzKlcLCJ0/Y=;
        b=UondKfNl+ZXL12DN34+4f2qalR8d8rAPHou6FdtCVIOC4yqYDYywhf7wF4facsM/Lz
         xtIi4rPmpnJi8iIlhChgG7ptyv2TuM04YrsyoGNMayF/dAvqIjCExTFZBv5DjokA2SMR
         oFmONtr/RdFHbqtOV/JtJh1gB86AL14E0mZ3GhUegDBRzNIRWGm7ZZG1haEQIVybt/wo
         9aFF47wE/UnKLTDD1HjaARAV5jUVqfCd1gBMUO3KisvtByh58e04AB4D/IpB5TEh+Z05
         UIsQicmPTB5soIUJNWi4cPPKiRqaoQkwNbXltNrR9VhRh9KRkrdlVapGZP8eXFYvOPlJ
         HQeQ==
X-Gm-Message-State: AOJu0Ywtm8A7gt22QOaDUg2KB1wzVtKrj4qF9l1kFb87bRcFRVJDQeh8
	JEjUBAehX/ZLB7qD3Vyep0w5oPUjmHkXhF8W0+/EcTmSLwW1kKBxCNLhLUyqtO5Qzqy7qF/G1hw
	hq+pbVA==
X-Google-Smtp-Source: AGHT+IGU6l2W2xdUSbROHTAgaSmOT3ivWTcmUhACjE5pG7FUcM+jjlL5ZoW4PxbDGZgKCQNXsEuq5w==
X-Received: by 2002:a05:600c:5118:b0:431:6083:cd38 with SMTP id 5b1f17b1804b1-4319ac6e507mr36461755e9.6.1730040192734;
        Sun, 27 Oct 2024 07:43:12 -0700 (PDT)
From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
X-Google-Original-From: Bernhard Kaindl <bernhardkaindl7@gmail.com>
To: xen-devel@lists.xenproject.org,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Bernhard Kaindl <bernhard.kaindl@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v4] NUMA: Introduce NODE_DATA->node_present_pages(RAM pages)
Date: Sun, 27 Oct 2024 15:43:05 +0100
Message-ID: <20241027144305.1839348-1-bernhardkaindl7@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Bernhard Kaindl <bernhard.kaindl@cloud.com>

At the moment, Xen keeps track of the spans of PFNs of the NUMA nodes.
But the PFN span sometimes includes large MMIO holes, so these values
might not be an exact representation of the total usable RAM of nodes.

Xen does not need it, but the size of the NUMA node's memory can be
helpful for management tools and HW information tools like hwloc/lstopo
with its Xen backend for Dom0: https://github.com/xenserver-next/hwloc/

First, introduce NODE_DATA(nodeid)->node_present_pages to node_data[],
determine the sum of usable PFNs at boot and update them on memory_add().

(The Linux kernel handles NODE_DATA->node_present_pages likewise)

Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
---
Changes in v3:
- Use PFN_UP/DOWN, refactored further to simplify the code while leaving
  compiler-level optimisations to the compiler's optimisation passes.
Changes in v4:
- Refactored code and doxygen documentation according to the review.
---
 xen/arch/x86/numa.c      | 13 +++++++++++++
 xen/arch/x86/x86_64/mm.c |  3 +++
 xen/common/numa.c        | 36 +++++++++++++++++++++++++++++++++---
 xen/include/xen/numa.h   | 21 +++++++++++++++++++++
 4 files changed, 70 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
index 4b0b297c7e..3c0574f773 100644
--- a/xen/arch/x86/numa.c
+++ b/xen/arch/x86/numa.c
@@ -100,6 +100,19 @@ unsigned int __init arch_get_dma_bitsize(void)
                  + PAGE_SHIFT, 32);
 }
 
+/**
+ * @brief Retrieves the RAM range for a given index from the e820 memory map.
+ *
+ * This function fetches the start and end address (exclusive) of a RAM range
+ * specified by the given index idx from the e820 memory map.
+ *
+ * @param idx The index of the RAM range in the e820 memory map to retrieve.
+ * @param start Pointer to store the start address of the RAM range.
+ * @param end Pointer to store the end address of the RAM range.
+ *
+ * @return 0 on success, -ENOENT if the index is out of bounds,
+ *         or -ENODATA if the memory map at index idx is not of type E820_RAM.
+ */
 int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t *end)
 {
     if ( idx >= e820.nr_map )
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index b2a280fba3..66b9bed057 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -1334,6 +1334,9 @@ int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm)
     share_hotadd_m2p_table(&info);
     transfer_pages_to_heap(&info);
 
+    /* Update the node's present pages (like the total_pages of the system) */
+    NODE_DATA(node)->node_present_pages += epfn - spfn;
+
     return 0;
 
 destroy_m2p:
diff --git a/xen/common/numa.c b/xen/common/numa.c
index 209c546a3b..9a8b805dd7 100644
--- a/xen/common/numa.c
+++ b/xen/common/numa.c
@@ -4,6 +4,7 @@
  * Adapted for Xen: Ryan Harper <ryanh@us.ibm.com>
  */
 
+#include "xen/pfn.h"
 #include <xen/init.h>
 #include <xen/keyhandler.h>
 #include <xen/mm.h>
@@ -499,15 +500,44 @@ int __init compute_hash_shift(const struct node *nodes,
     return shift;
 }
 
-/* Initialize NODE_DATA given nodeid and start/end */
+/**
+ * @brief Initialize a NUMA node's node_data structure at boot.
+ *
+ * It is given the NUMA node's index in the node_data array as well
+ * as the start and exclusive end address of the node's memory span
+ * as arguments and initializes the node_data entry with this information.
+ *
+ * It then initializes the total number of usable memory pages within
+ * the NUMA node's memory span using the arch_get_ram_range() function.
+ *
+ * @param nodeid The index into the node_data array for the node.
+ * @param start The starting physical address of the node's memory range.
+ * @param end The exclusive ending physical address of the node's memory range.
+ */
 void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end)
 {
     unsigned long start_pfn = paddr_to_pfn(start);
     unsigned long end_pfn = paddr_to_pfn(end);
+    struct node_data *numa_node = NODE_DATA(nodeid);
+    paddr_t start_ram, end_ram;
+    unsigned int idx = 0;
+    unsigned long *pages = &numa_node->node_present_pages;
 
-    NODE_DATA(nodeid)->node_start_pfn = start_pfn;
-    NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
+    numa_node->node_start_pfn = start_pfn;
+    numa_node->node_spanned_pages = end_pfn - start_pfn;
+
+    /* Calculate the number of present RAM pages within the node: */
+    *pages = 0;
+    do {
+        int err = arch_get_ram_range(idx++, &start_ram, &end_ram);
+
+        if (err == -ENOENT)
+            break;
+        if ( err || start_ram >= end || end_ram <= start )
+            continue;  /* range is outside of the node, or not usable RAM */
 
+        *pages += PFN_DOWN(min(end_ram, end)) - PFN_UP(max(start_ram, start));
+    } while (1);
     node_set_online(nodeid);
 }
 
diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
index fd1511a6fb..6e82dfd2a8 100644
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -68,9 +68,28 @@ extern unsigned int memnode_shift;
 extern unsigned long memnodemapsize;
 extern nodeid_t *memnodemap;
 
+/**
+ * @struct numa_node
+ * @brief Represents the memory information of a NUMA node.
+ *
+ * @var numa_node::node_start_pfn
+ * The starting page frame number (lowest pfn) of the NUMA node.
+ *
+ * @var numa_node::node_spanned_pages
+ * The number of pages spanned by the NUMA node, including memory holes.
+ * Used to get the end of the node memory when scrubbing unallocated memory.
+ *
+ * @var numa_node::node_present_pages
+ * The total number of usable memory pages that are available in this NUMA node.
+ * The value of total_pages would be the sum of all node's node_present_pages.
+ *
+ * The Xen Hypervisor does not use this field internally, but it is useful
+ * for reporting the memory information of NUMA nodes to management tools.
+ */
 struct node_data {
     unsigned long node_start_pfn;
     unsigned long node_spanned_pages;
+    unsigned long node_present_pages;
 };
 
 extern struct node_data node_data[];
@@ -91,6 +110,7 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
 
 #define node_start_pfn(nid)     (NODE_DATA(nid)->node_start_pfn)
 #define node_spanned_pages(nid) (NODE_DATA(nid)->node_spanned_pages)
+#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
 #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn + \
                                  NODE_DATA(nid)->node_spanned_pages)
 
@@ -123,6 +143,7 @@ extern void numa_set_processor_nodes_parsed(nodeid_t node);
 extern mfn_t first_valid_mfn;
 
 #define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
+#define node_present_pages(nid) total_pages
 #define node_start_pfn(nid) mfn_x(first_valid_mfn)
 #define __node_distance(a, b) 20
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 08:04:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 08:04:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826273.1240464 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5KjP-00045X-Ms; Mon, 28 Oct 2024 08:04:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826273.1240464; Mon, 28 Oct 2024 08: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 1t5KjP-00045Q-KN; Mon, 28 Oct 2024 08:04:07 +0000
Received: by outflank-mailman (input) for mailman id 826273;
 Mon, 28 Oct 2024 08:04: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5KjO-000454-E5
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 08:04:06 +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 3215ecd8-9503-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 09:04:03 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9aa8895facso648090166b.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 01:04:03 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f02952asm354253566b.73.2024.10.28.01.04.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 01:04:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3215ecd8-9503-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730102642; x=1730707442; 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=Rqd3GbJqohcxdEZNl0IJuqhBX8PPwVkgpzaGyglYHzk=;
        b=gJOQNriOeYxgpa1jmXp9Ygd2GtO4SZG7rLoGVkWnqRWzSf9xZ6NCav+iR1tP8keNYy
         g1MnV2Le3dh6pzsQbJzubQX7V4Imt2NPWa2E/oqFRRUiRFrPto50u02zN+5FXmmudE5V
         eCMi6Yt/S6HvixbTPbJ8oWcl6a5Dd+L5d2gjY9M4NguOaa6vmQuGjtyCjZQk14PCw8Aj
         1A7e/q4kXXvrJHGllA9KP1Cr/+VnmptH6cbDrTUOiU0RNfRJsFiWiNT/XlmdRovnSP33
         SUL05n77Kc7G/9034Fwveio/SedqYUk2fS19BwfFfHtmxigusLhERTWWYpO/Hhfs/ALu
         37Cg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730102642; x=1730707442;
        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=Rqd3GbJqohcxdEZNl0IJuqhBX8PPwVkgpzaGyglYHzk=;
        b=jPTBOSu1OSk6L7RXigtjbUPDoee8MimFugamOA3DCwAGH5HGgQt4D+IoyB2OVA8k8a
         rS63kHEljvf71b/9ZYePhyL+9fq7gMo3f+xkhQslrF69f1jME4h5XuVr9uSmnr4wBXqt
         MJNOc9ZWiJ04O8t4lLK1T+9idyJaaxBCdYiIqTYv8FfTm8CbDeWPQ0BBspq75fzaE8nF
         t3jxRFVZQ9GclOf2zJGCJUWe8TOp30vpvzCM3rgQBB9hhTplPZvUpJCMUUd15yJr+jGP
         VVXvG1GotGj/qLKDFjfhQGSFTjJwdr8zlFqXyiahmi8CbSD7Ev1+LetnZbNT07zpc/5X
         9u5w==
X-Forwarded-Encrypted: i=1; AJvYcCUwN6kyAEh/8E2MGje2FnMl0kakf98xC6/GAOykPWx2ganndWJlLQs1LDgxYEDUCCEYGZeK+cfaipw=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw/QuDRGx5Yo9PCiaG9Heb6YC2R+vTSZU/4ZC4BPXiOFWq6NgYC
	7ZOkY8Wnxm7/7jlt1sVo6LVs2+7s+QtUZ12SO+5xEPJ3Cha3U40f721beJM2hw==
X-Google-Smtp-Source: AGHT+IEk4iTokJOXG7Dp+jW8e8Oqt1/zuiGZ3/SAqLrLK1M9rsYvCwskG1dIry3S8nXo+S51Psx5iA==
X-Received: by 2002:a17:907:7215:b0:a9a:8028:45d8 with SMTP id a640c23a62f3a-a9de5d6f953mr736272166b.7.1730102642472;
        Mon, 28 Oct 2024 01:04:02 -0700 (PDT)
Message-ID: <78b2b0e0-880a-410c-91fc-777299417383@suse.com>
Date: Mon, 28 Oct 2024 09:04:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 1/5] xen/riscv: add stub for
 share_xen_page_with_guest()
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <3dfd4bdf6584e73ecdbff5a66fdbaec68e31cc3c.1729068334.git.oleksii.kurochko@gmail.com>
 <b8de7161-5d71-4ed7-a3cf-611f4a860926@suse.com>
 <df635c41cf530d08898d021adf92eb141624d07d.camel@gmail.com>
 <3f87a19f-c249-438a-ac1d-be9b8fd80c8e@suse.com>
 <6f1d21c3eb10edf9206f45b6c0c6afaa7bb58ef3.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: <6f1d21c3eb10edf9206f45b6c0c6afaa7bb58ef3.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.10.2024 17:57, oleksii.kurochko@gmail.com wrote:
> On Fri, 2024-10-18 at 15:27 +0200, Jan Beulich wrote:
>> On 18.10.2024 15:10, oleksii.kurochko@gmail.com wrote:
>>> On Thu, 2024-10-17 at 16:51 +0200, Jan Beulich wrote:
>>>> On 16.10.2024 11:15, Oleksii Kurochko wrote:
>>>>> To avoid the following linkage fail the stub for
>>>>> share_xen_page_with_guest()
>>>>> is introduced:
>>>>
>>>> What do you intend to express with "is introduced"? Is there a
>>>> problem now?
>>>> Would there be a problem with subsequent changes? I'm entirely
>>>> fine
>>>> with
>>>> adding that stub, but the description should make clear why /when
>>>> exactly
>>>> it's needed.
>>> I mentioned that in the cover letter:
>>> ```
>>>    Also, after patch 3 ("xen/riscv: introduce setup_mm()") of this
>>>    patch series,
>>>    the linkage error mentioned in patch 1 ("xen/riscv: add stub for
>>>    share_xen_page_with_guest()") began to occur, so patch 1
>>> addresses
>>>    this issue.
>>> ```
>>> I thought it would be the better then just mention in the commit
>>> message that.
>>
>> Mentioning in the cover letter is fine, but each patch needs to also
>> be self-contained.
>>
>>> Will it be fine to mention instead:
>>> ```
>>>    Introduction of setup memory management function will require
>>>    share_xen_page_with_guest() defined, at least, as a stub
>>> otherwise
>>>    the following linkage error will occur...
>>> ```
>>
>> Quoting the linker error is imo of limited use. What such an
>> explanation
>> wants to say is why, all of the sudden, such an error occurs. After
>> all
>> you don't change anything directly related to common/trace.c.
> if maddr_to_virt() is defined as:
>     static inline void *maddr_to_virt(paddr_t ma)
>    {
>        BUG_ON("unimplemented");
>        return NULL;
>        // /* Offset in the direct map, accounting for pdx compression */
>        // unsigned long va_offset = maddr_to_directmapoff(ma);
>    
>        // ASSERT(va_offset < DIRECTMAP_SIZE);
>    
>        // return (void *)(DIRECTMAP_VIRT_START + va_offset);
>    }
> Then no stub for share_xen_page_with_privileged_guests() is needed but
> it isn't clear at all why the definition of maddr_to_virt() affects
> linkage of share_xen_page_with_privileged_guests().
> 
> I tried to look what is the difference after preprocessing stage for
> common/trace.o and the only difference is in how maddr_to_virt() is
> implemented:
>    7574a7575,7577
>    >     do { if (__builtin_expect(!!("unimplemented"),0)) do { do { ({
>    _Static_assert(!((30) >> ((31 - 24) + (31 - 24))), "!(" "(30) >>
>    (BUG_LINE_LO_WIDTH + BUG_LINE_HI_WIDTH)" ")"); }); ({
>    _Static_assert(!((2) >= 4), "!(" "(2) >= BUGFRAME_NR" ")"); }); asm
>    volatile ( ".Lbug%=:""unimp""\n" "   .pushsection
>    .bug_frames.%""""[bf_type], \"a\", %%progbits\n" "   .p2align 2\n"
>    ".Lfrm%=:\n" "   .long (.Lbug%= - .Lfrm%=) + %""""[bf_line_hi]\n" "
>    .long (%""""[bf_ptr] - .Lfrm%=) + %""""[bf_line_lo]\n" "   .if " "0"
>    "\n" "   .long 0, %""""[bf_msg] - .Lfrm%=\n" "   .endif\n" "  
>    .popsection\n" :: [bf_type] "i" (2), [bf_ptr] "i"
>    ("./arch/riscv/include/asm/mm.h"), [bf_msg] "i" (((void*)0)),
>    [bf_line_lo] "i" (((30) & ((1 << (31 - 24)) - 1)) << 24),
>    [bf_line_hi] "i" (((30) >> (31 - 24)) << 24) ); } while ( 0 );
>    __builtin_unreachable(); } while ( 0 ); } while (0);
>    >     return ((void*)0);
>    > 
>    7578d7580
>    <     unsigned long va_offset = (ma);
>    7580d7581
>    <     do { if ( __builtin_expect(!!(!(va_offset < ((((vaddr_t)(509))
>    << ((3 - 1) * (9) + 12)) - (((vaddr_t)(200)) << ((3 - 1) * (9) +
>    12))))),0) ) do { do { ({ _Static_assert(!((35) >> ((31 - 24) + (31
>    - 24))), "!(" "(35) >> (BUG_LINE_LO_WIDTH + BUG_LINE_HI_WIDTH)"
>    ")"); }); ({ _Static_assert(!((3) >= 4), "!(" "(3) >= BUGFRAME_NR"
>    ")"); }); asm volatile ( ".Lbug%=:""unimp""\n" "   .pushsection
>    .bug_frames.%""""[bf_type], \"a\", %%progbits\n" "   .p2align 2\n"
>    ".Lfrm%=:\n" "   .long (.Lbug%= - .Lfrm%=) + %""""[bf_line_hi]\n" "
>    .long (%""""[bf_ptr] - .Lfrm%=) + %""""[bf_line_lo]\n" "   .if " "1"
>    "\n" "   .long 0, %""""[bf_msg] - .Lfrm%=\n" "   .endif\n" "  
>    .popsection\n" :: [bf_type] "i" (3), [bf_ptr] "i"
>    ("./arch/riscv/include/asm/mm.h"), [bf_msg] "i" ("va_offset <
>    DIRECTMAP_SIZE"), [bf_line_lo] "i" (((35) & ((1 << (31 - 24)) - 1))
>    << 24), [bf_line_hi] "i" (((35) >> (31 - 24)) << 24) ); } while ( 0
>    ); __builtin_unreachable(); } while ( 0 ); } while (0);
>    7582d7582
>    <     return (void *)((((vaddr_t)(200)) << ((3 - 1) * (9) + 12)) +
>    va_offset);
> 
> Could it be that DCE likely happen when maddr_to_virt() is defined as
> stub and so code which call share_xen_page_with_privileged_guests() is
> just eliminated? ( but I am not sure that I know fast way to check that
> , do you have any pointers? )

Yes, I think DCE is the explanation here. And that's what (imo) wants saying
in the description.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 08:19:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 08:19:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826280.1240475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Ky3-0005sV-TT; Mon, 28 Oct 2024 08:19:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826280.1240475; Mon, 28 Oct 2024 08:19: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 1t5Ky3-0005sO-R1; Mon, 28 Oct 2024 08:19:15 +0000
Received: by outflank-mailman (input) for mailman id 826280;
 Mon, 28 Oct 2024 08:19: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5Ky2-0005sG-Vq
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 08:19:14 +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 4f981f05-9505-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 09:19:12 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5cbb6166c06so3281998a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 01:19:12 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b302f03b5sm352050466b.166.2024.10.28.01.19.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 01:19:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f981f05-9505-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730103551; x=1730708351; 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=2lYoNHPqNc7F4/2LKfFO/lqz5PKZtAbIOno/fDugc98=;
        b=e5FhoO9DhWjI7NQ9Hn/+sm7akqKzrRtYyjMFKjLv5YCBLmlU3Pn4jbYNCpMVLFk6Pw
         kZILMWfmyzT5Z1ktcIj/33zi3bRAA9rfznyTNxQt38jtJok8sYr+2Gy0wCIB7oQTsZkP
         oFNownnYAVGN4FK69os8fi9cZBVj0GJBgyveUBhAkKKDkRBBUXUqMMgdwN/P0Text3Ut
         HVRcoOspNmHEoxHlytcqzXgnnfVZ4o7lkxbCHrjqR8MX1u9YSFCmHjjJHoY8UyjowdeX
         qeA3LfJpjSwOz8q5+uInbZa/bnvvihf9tUJGoPYtnlMV/hH7qsIhHs0sbWxfU/WUbyMF
         QDsA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730103551; x=1730708351;
        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=2lYoNHPqNc7F4/2LKfFO/lqz5PKZtAbIOno/fDugc98=;
        b=Spu7PxNf1EF79XT/b9xnhTHypDTy8tWKvA1q/2yOk9d8X+zZfJcHMu39LShsTQR7Xt
         PR6qZfj8pmVUQKcfP6JLWgVZOaooqKju9qAOQa698k5Gbql2tboUVrkt+qhp0iLCTvFO
         0u2sd2wiqlZFywR4lGhR+9oVr7XW1qnxm5NulpPOXnW9Wk0Qusum689Dwxsb0KxRReET
         k+bQAlPev+o6lCXDJ7hnR9YVdzSrRRygLfrqdGNTRXangLybXijJr02X4R80CHns9zIK
         YAIC6xqeWZIkVnizFgrWdsga9UQzCV+eFDwBnfxXeVLfDjuox2TDTHgpcmTQ52NzA5Cq
         XY0g==
X-Forwarded-Encrypted: i=1; AJvYcCVn4S7wpZZ5vXKb9fgbuOfBSz99sIi8jPBN/BwrnLGoT4+45vH1kZ+CwpwethHfQxg2aYQduSJol80=@lists.xenproject.org
X-Gm-Message-State: AOJu0YztmICwpehFfP0YwFs5900cYyvbtYgmvMyJJa0EAtVX/WhqCKUk
	gGiTmjWpAGPBaInWIV4BiqJ34NyFmrSgWddrl/IxlIqASlahD0SDBXOL98ryZA==
X-Google-Smtp-Source: AGHT+IGCt3DImz3TrlW5MpQ5kiIqaNS6P+9Yi1TM57vNc8UFNCvRZ3Ci/lVdnlqDD9WHW5y9HLI81A==
X-Received: by 2002:a17:907:6d0e:b0:a99:f0d0:4ce3 with SMTP id a640c23a62f3a-a9de5d97f44mr642472866b.17.1730103550873;
        Mon, 28 Oct 2024 01:19:10 -0700 (PDT)
Message-ID: <18bcb41c-bbbc-4f9c-b34d-1a9887025159@suse.com>
Date: Mon, 28 Oct 2024 09:19:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 3/5] xen/riscv: introduce setup_mm()
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729068334.git.oleksii.kurochko@gmail.com>
 <300a4a5911766d42ec01c3fcaee664d72b484296.1729068334.git.oleksii.kurochko@gmail.com>
 <37929e86-0394-499e-ada1-4686ff77d3f7@suse.com>
 <abc1c95497372f3a46b34c6694b75b4e1647d4b9.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: <abc1c95497372f3a46b34c6694b75b4e1647d4b9.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.10.2024 16:27, oleksii.kurochko@gmail.com wrote:
> On Thu, 2024-10-17 at 17:15 +0200, Jan Beulich wrote:
>> On 16.10.2024 11:15, Oleksii Kurochko wrote:
>>> +vaddr_t directmap_virt_end __read_mostly;
>>
>> __ro_after_init? And moved ahead of the identifier, just like ...
>>
>>> +/*
>>> + * Setup memory management
>>> + *
>>> + * RISC-V 64 has a large virtual address space (the minimum
>>> supported
>>> + * MMU mode is Sv39, which provides TBs of VA space).
>>> + * In the case of RISC-V 64, the directmap and frametable are
>>> mapped
>>> + * starting from physical address 0 to simplify the page_to_mfn(),
>>> + * mfn_to_page(), and maddr_to_virt() calculations, as there is no
>>> need
>>> + * to account for {directmap, frametable}_base_pdx in this setup.
>>> + */
>>> +void __init setup_mm(void)
>>
>> ... __init is placed e.g. here.
>>
>> It's also unclear why the variable needs to be non-static.
> As it could be use then for some ASSERT(), for example, in
> virt_to_page() as Arm or x86 do.

"Could be" is too little here. Misra dislikes identifiers which could
be static, but aren't. If it's not used right now (nor any time soon),
it should imo be static until a use appears requiring it to be globally
visible.

>>> +{
>>> +    const struct membanks *banks = bootinfo_get_mem();
>>> +    paddr_t ram_end = 0;
>>> +    paddr_t ram_size = 0;
>>> +    unsigned int i;
>>> +
>>> +    /*
>>> +     * We need some memory to allocate the page-tables used for
>>> the directmap
>>> +     * mappings. But some regions may contain memory already
>>> allocated
>>> +     * for other uses (e.g. modules, reserved-memory...).
>>> +     *
>>> +     * For simplicity, add all the free regions in the boot
>>> allocator.
>>> +     */
>>> +    populate_boot_allocator();
>>> +
>>> +    total_pages = 0;
>>> +
>>> +    for ( i = 0; i < banks->nr_banks; i++ )
>>> +    {
>>> +        const struct membank *bank = &banks->bank[i];
>>> +        paddr_t bank_end = bank->start + bank->size;
>>> +
>>> +        ram_size = ram_size + bank->size;
>>> +        ram_end = max(ram_end, bank_end);
>>> +    }
>>> +
>>> +    setup_directmap_mappings(PFN_DOWN(ram_end));
>>
>> While you may want to use non-offset-ed mappings, I can't see how you
>> can
>> validly map just a single huge chunk, no matter whether there are
>> holes
>> in there. Such holes could hold MMIO regions, which I'm sure would
>> require
>> more careful mapping (to avoid cacheable accesses, or even
>> speculative
>> ones).
> My intention was to avoid subraction of directmap_start ( = ram_start )
> in maddr_to_virt() to have less  operations during maddr to virt
> calculation:
>    static inline void *maddr_to_virt(paddr_t ma)
>    {
>        /* Offset in the direct map, accounting for pdx compression */
>        unsigned long va_offset = maddr_to_directmapoff(ma);
>    
>        ASSERT(va_offset < DIRECTMAP_SIZE);
>    
>        return (void *)(DIRECTMAP_VIRT_START /* - directmap_start */ +
>    va_offset);
>    }
> But it seems I don't have any chance to avoid that because of mentioned
> by you reasons... Except probably to have a config which will hard code
> RAM_START for each platform ( what on other hand will make Xen less
> flexible in some point ).
> Does it make sense to have a config instead of identifying ram_start in
> runtime?

I don't think building Xen for just one (kind of) platform is going to be
overly useful (except maybe for development purposes, yet the goal ought
to be to be flexible, and hence it may be a bad idea even while developing
new code).

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826301.1240560 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Lu7-0007BU-NN; Mon, 28 Oct 2024 09:19:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826301.1240560; Mon, 28 Oct 2024 09:19: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 1t5Lu7-0007Au-H3; Mon, 28 Oct 2024 09:19:15 +0000
Received: by outflank-mailman (input) for mailman id 826301;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Lu6-0005yk-JW
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:14 +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 b239fedf-950d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 10:19:13 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9a0ec0a94fso572799566b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:13 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b239fedf-950d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107152; x=1730711952; 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=s0bQWwaJpgsfZHiC3o/SG7G/jAI+5h9RvIivMx1nt38=;
        b=Az2RTmn5ff2Ct6zz41gAjJZB9XfpGMD9+o0qlhKVrw/1Cl7EAbJ2POE30l4BTXmsS0
         /nf56CIcfRsC7xGptB/dbR/MkShPTEIY4lRiLz0l4c0avCLNVj1HNh5dmix+HBhOgFuP
         drfSrqMLm5pln0F8TPAgv3uWgWuU1yRDLoWTo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107152; x=1730711952;
        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=s0bQWwaJpgsfZHiC3o/SG7G/jAI+5h9RvIivMx1nt38=;
        b=aroNsNC1vxSkDGCqvdZ6nGa/+HHkdLs85Q4e6Q7PkCXQ27G9qKv74JCIyF5W9cNGMt
         m+I8eY57H78HjIzHbH9qYw05qmMTecfFVcVWl7DJP3b+p+Cbbj9exVaQGHh1+Cp3rk/X
         nR7wuJfs+4jJieBWtP6UN+zwylnmyO+uJZsP5xIi0qR36FOCgboK1w2hXxr8WbYhyXXx
         NcCXbLTsWkkLcZLt5SpGvS3pA2Z696G4mtxcs1kljMX3NLfErYqG010mtEQQx2vqekyc
         H10iB0HsRjdSZVh0EwbJ6g+pI0UytF9YLcP1UbcHkqTwx/GNjbJeG8hLNAePKfq48xyg
         Kwaw==
X-Gm-Message-State: AOJu0YyqzzmctjgmPzrRmQ4HDdILNIvbmFrOBQXLhwUpihBZYww3b7XT
	OkvmfIARTopcQHAtG6RrF+n3HFObS/UEE1x8qCEkhMSUboANffKmQ+Phn9WKp1tpZ/EOQsmtBmQ
	C
X-Google-Smtp-Source: AGHT+IHUScjwHs+SIRSiBfF67ypzxxtUffXbIKI8gWWL9LwAwdGM1fnb3VoqaEvFjPGPmyn4qCNscQ==
X-Received: by 2002:a17:906:f59b:b0:a99:f975:2e6 with SMTP id a640c23a62f3a-a9de5f6ddcbmr788105366b.35.1730107151905;
        Mon, 28 Oct 2024 02:19:11 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 08/10] x86/ucode: Use bootstrap_unmap() in early_microcode_load()
Date: Mon, 28 Oct 2024 09:18:54 +0000
Message-Id: <20241028091856.2151603-9-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If bootstrap_map() has provided a mapping, we must free it when done.  Failing
to do so may cause a spurious failure for unrelated logic later.

Inserting a bootstrap_unmap() here does not break the use of ucode_{blob,mod}
any more than they already are.

Add a printk noting when we didn't find a microcode patch.  It's at debug
level, because this is the expected case on AMD Client systems, and SDPs, but
for people trying to figure out why microcode loading isn't work, it might be
helpful.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 6a87390ab770..28cfeab75a81 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -823,6 +823,7 @@ static int __init early_microcode_load(struct boot_info *bi)
     size_t size;
     struct microcode_patch *patch;
     int idx = opt_mod_idx;
+    int rc = 0;
 
     /*
      * Cmdline parsing ensures this invariant holds, so that we don't end up
@@ -878,15 +879,24 @@ static int __init early_microcode_load(struct boot_info *bi)
     patch = ucode_ops.cpu_request_microcode(data, size, false);
     if ( IS_ERR(patch) )
     {
-        printk(XENLOG_WARNING "Parsing microcode blob error %ld\n",
-               PTR_ERR(patch));
-        return PTR_ERR(patch);
+        rc = PTR_ERR(patch);
+        printk(XENLOG_WARNING "Microcode: Parse error %d\n", rc);
+        goto unmap;
     }
 
     if ( !patch )
-        return -ENOENT;
+    {
+        printk(XENLOG_DEBUG "Microcode: No suitable patch found\n");
+        rc = -ENOENT;
+        goto unmap;
+    }
+
+    rc = microcode_update_cpu(patch, 0);
 
-    return microcode_update_cpu(patch, 0);
+ unmap:
+    bootstrap_unmap();
+
+    return rc;
 }
 
 int __init early_microcode_init(struct boot_info *bi)
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826300.1240555 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Lu7-00077h-9x; Mon, 28 Oct 2024 09:19:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826300.1240555; Mon, 28 Oct 2024 09:19: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 1t5Lu7-00077Y-6Z; Mon, 28 Oct 2024 09:19:15 +0000
Received: by outflank-mailman (input) for mailman id 826300;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Lu6-0005yk-7L
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:14 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b1f0041f-950d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 10:19:12 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9acafdb745so734092566b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:12 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b1f0041f-950d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107151; x=1730711951; 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=KXO3yd4l+MzrsSxRFtcdMeGmvEoN34yTRv1ZIvRcIRg=;
        b=U8NLVyaVQdgCYJb3+Sc10tKEyF54w3ZI/1GWXeanY111PEUGiw49TbHQYSjvi/cYey
         abefuos7tbmyK7qoDjo/YlTHg0pc/NYoPqdmVApezuumDp1fwWT5bM50L4MA7pqw2A/d
         jIAUkvjRxv48FA8MOpy+9BGQfejRM8f2p80wc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107151; x=1730711951;
        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=KXO3yd4l+MzrsSxRFtcdMeGmvEoN34yTRv1ZIvRcIRg=;
        b=aNp00izfjS1mZLUfbliK5Q1JoIHfvd7S3/Yk7D0quVvd60trG7N0PM1HZp4syiclt9
         eqliiaMLbvXdeHohhnKcRwdv6Xa5YvNc+pbbdaAQ0k58Az6U2f3xy4P79aLuoAhJdVnF
         2A/vD7p1M62BWT0wEQrabGlUim6QYOdgMv3jvCgvqP19vtrjZfXkuCGDDFHaNfqhsoC+
         bEHnNkqn2z7eczF0f8We+/PAl3eY99OvXv4dxMJae0Ina19dBYjuBTmn7Jw3q0IqdlTF
         caEv0/BLwkrBM8aG3VXhZk2NVRa152rvWgtXB0+vSjGgA+OIXWvqL/qeZ8agvEwwbfzQ
         GBJw==
X-Gm-Message-State: AOJu0Yzxs7sqOxILPMYL5ryAt37uavck35B1AslG2GAkfZRi8VUrZO+9
	6gxWPxuK9oJC8Q+4C/AuBzsz+JEtRtNBYxUnbxSTXwWvYGcLUBNZYxTgJ0oGypf/+jvnrQ5ns7+
	1
X-Google-Smtp-Source: AGHT+IE2HztMoWz9TM71tWKVWeJZNK3i6ZU7DJ/Y8LB9GICUVzN4pEV2+DfZvHLbl6G/6ls1BIFlFw==
X-Received: by 2002:a17:907:2d22:b0:a99:fbb6:4972 with SMTP id a640c23a62f3a-a9de38e2fbbmr570966966b.25.1730107151115;
        Mon, 28 Oct 2024 02:19:11 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 07/10] x86/ucode: Move the CPIO path string into microcode_ops
Date: Mon, 28 Oct 2024 09:18:53 +0000
Message-Id: <20241028091856.2151603-8-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We've got a perfectly good vendor abstraction already for microcode.  No need
for a second ad-hoc one in microcode_scan_module().

This is in preparation to use ucode_ops.cpio_path in multiple places.

These paths are only used during __init, so take the opportunity to move them
into __initconst.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/amd.c     |  4 ++++
 xen/arch/x86/cpu/microcode/core.c    | 14 +++-----------
 xen/arch/x86/cpu/microcode/intel.c   |  4 ++++
 xen/arch/x86/cpu/microcode/private.h |  7 +++++++
 4 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/amd.c
index 0fe869eff119..c7a779c1d885 100644
--- a/xen/arch/x86/cpu/microcode/amd.c
+++ b/xen/arch/x86/cpu/microcode/amd.c
@@ -443,11 +443,15 @@ static struct microcode_patch *cf_check cpu_request_microcode(
     return patch;
 }
 
+static const char __initconst amd_cpio_path[] =
+    "kernel/x86/microcode/AuthenticAMD.bin";
+
 static const struct microcode_ops __initconst_cf_clobber amd_ucode_ops = {
     .cpu_request_microcode            = cpu_request_microcode,
     .collect_cpu_info                 = collect_cpu_info,
     .apply_microcode                  = apply_microcode,
     .compare_patch                    = compare_patch,
+    .cpio_path                        = amd_cpio_path,
 };
 
 void __init ucode_probe_amd(struct microcode_ops *ops)
diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index fc31ab35c3c8..6a87390ab770 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -170,25 +170,19 @@ static int __init cf_check parse_ucode(const char *s)
 }
 custom_param("ucode", parse_ucode);
 
+static struct microcode_ops __ro_after_init ucode_ops;
+
 static void __init microcode_scan_module(struct boot_info *bi)
 {
     uint64_t *_blob_start;
     unsigned long _blob_size;
     struct cpio_data cd;
-    const char *p = NULL;
     int i;
 
     ucode_blob.size = 0;
     if ( !opt_scan )
         return;
 
-    if ( boot_cpu_data.x86_vendor == X86_VENDOR_AMD )
-        p = "kernel/x86/microcode/AuthenticAMD.bin";
-    else if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
-        p = "kernel/x86/microcode/GenuineIntel.bin";
-    else
-        return;
-
     /*
      * Try all modules and see whichever could be the microcode blob.
      */
@@ -207,7 +201,7 @@ static void __init microcode_scan_module(struct boot_info *bi)
         }
         cd.data = NULL;
         cd.size = 0;
-        cd = find_cpio_data(p, _blob_start, _blob_size);
+        cd = find_cpio_data(ucode_ops.cpio_path, _blob_start, _blob_size);
         if ( cd.data )
         {
             ucode_blob.size = cd.size;
@@ -218,8 +212,6 @@ static void __init microcode_scan_module(struct boot_info *bi)
     }
 }
 
-static struct microcode_ops __ro_after_init ucode_ops;
-
 static DEFINE_SPINLOCK(microcode_mutex);
 
 DEFINE_PER_CPU(struct cpu_signature, cpu_sig);
diff --git a/xen/arch/x86/cpu/microcode/intel.c b/xen/arch/x86/cpu/microcode/intel.c
index bad51f64724a..aad6a693e800 100644
--- a/xen/arch/x86/cpu/microcode/intel.c
+++ b/xen/arch/x86/cpu/microcode/intel.c
@@ -405,11 +405,15 @@ static bool __init can_load_microcode(void)
     return !(mcu_ctrl & MCU_CONTROL_DIS_MCU_LOAD);
 }
 
+static const char __initconst intel_cpio_path[] =
+    "kernel/x86/microcode/GenuineIntel.bin";
+
 static const struct microcode_ops __initconst_cf_clobber intel_ucode_ops = {
     .cpu_request_microcode            = cpu_request_microcode,
     .collect_cpu_info                 = collect_cpu_info,
     .apply_microcode                  = apply_microcode,
     .compare_patch                    = compare_patch,
+    .cpio_path                        = intel_cpio_path,
 };
 
 void __init ucode_probe_intel(struct microcode_ops *ops)
diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h
index c72f060ac394..c9dd8ba066f9 100644
--- a/xen/arch/x86/cpu/microcode/private.h
+++ b/xen/arch/x86/cpu/microcode/private.h
@@ -59,6 +59,13 @@ struct microcode_ops {
      */
     enum microcode_match_result (*compare_patch)(
         const struct microcode_patch *new, const struct microcode_patch *old);
+
+    /*
+     * For Linux inird microcode compatibliity.
+     *
+     * The path where this vendor's microcode can be found in CPIO.
+     */
+    const char *cpio_path;
 };
 
 /*
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826297.1240520 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Lu3-00067K-AX; Mon, 28 Oct 2024 09:19:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826297.1240520; Mon, 28 Oct 2024 09:19: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 1t5Lu3-00065x-2j; Mon, 28 Oct 2024 09:19:11 +0000
Received: by outflank-mailman (input) for mailman id 826297;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Lu2-0005yk-Av
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:10 +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 af10cdb9-950d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 10:19:07 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a998a5ca499so548901766b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:07 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af10cdb9-950d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107146; x=1730711946; 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=HdgomcGm+tyb6osYP5OAYq6042ngUQkHmwMCkva53Ic=;
        b=uM0UKGSicrKqUQteRrshehA9iIykD30CUQDZD71/o5bCmMpacEwDhlDIoYAoMk3QGc
         0lo/JSJywQawBVFtlWr7BnZ9BVVAI7NGtvJyzeCZuOwq/jZPHvbU60TkQ483qi9+q71V
         xDJvrdu2Rs3zcJH8u6n/R6RQslxYAkg9jbl0E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107146; x=1730711946;
        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=HdgomcGm+tyb6osYP5OAYq6042ngUQkHmwMCkva53Ic=;
        b=TE2Sh5cnySsCfKXNONxHSduClWC/phm5Dwwsbf+MkauYtSxkBnG/ur1s4mAUO3nCsY
         IvY52G+7GC7HZ4JCZcR7JuOcpPNxKLOsHjEye6eCFQtarsBDrdkuq5sq/7TBbsa0vtjX
         VqgsVFSuDzbxrqs+HEIB2yowGi9dSHa5LtO9tBIXntvTVIWTUf+mGt+hZGBpjoPRYUFm
         rwTu8w0wj+JmVbsZpfLoUc+0LBHS0DzownFgQK+VQW07DfPiWIFkVVTyZVmrlKn6kFgy
         laOPmntuBnKQz0R9NugKywFGaC0oxRhz7pjI/i2lOvftwmgk1b0JZYCo4PBTw7Ko6C/1
         ylPw==
X-Gm-Message-State: AOJu0Yx1iVBE7pGkq4mv4y+c758q9JqgRQTmQv95bto8FApSb82PlyiD
	97z5FCo3Pc/ClcPO3/gB3Z73ERiXwIBq3cNzQdcmpKWGzaoYJL6uyx0QjR5I4JZmLCoAOyl2xx2
	C
X-Google-Smtp-Source: AGHT+IHWATzgfaBR+v7s6x26PjQ/1kwTDosqOTlvX4xnR0qEOkNvvuLiP6BdqUAHfeuQZcsSkG6MLA==
X-Received: by 2002:a17:907:94c1:b0:a99:4ca4:4ff4 with SMTP id a640c23a62f3a-a9de5d98002mr545033266b.23.1730107144591;
        Mon, 28 Oct 2024 02:19:04 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 02/10] x86/ucode: Delete the microcode_init() initcall
Date: Mon, 28 Oct 2024 09:18:48 +0000
Message-Id: <20241028091856.2151603-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The comment highlights just how bogus this really is.  Being an initcall, the
boot allocator is long gone, and bootstrap_unmap() is a no-op.

The fact there is nothing to do should be a giant red flag about the validity
of the mappings "being freed".  Indeed, they both constitute use-after-frees.

We could move the size/data/end clobbering into microcode_init_cache() which
is the final consumer of the information, but we're intending to delete these
static variables entirely, and it's less churn to just leave them dangling for
a few patches.

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: Daniel P. Smith <dpsmith@apertussolutions.com>

After the $N'th rearranging, this could actually be merged into "x86/ucode:
Drop ucode_mod and ucode_blob" with no effect on the intermediate patches.
---
 xen/arch/x86/cpu/microcode/core.c | 22 ----------------------
 1 file changed, 22 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 9a2cc631d2aa..3e815f1880af 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -758,28 +758,6 @@ int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
     return continue_hypercall_on_cpu(0, microcode_update_helper, buffer);
 }
 
-static int __init cf_check microcode_init(void)
-{
-    /*
-     * At this point, all CPUs should have updated their microcode
-     * via the early_microcode_* paths so free the microcode blob.
-     */
-    if ( ucode_blob.size )
-    {
-        bootstrap_unmap();
-        ucode_blob.size = 0;
-        ucode_blob.data = NULL;
-    }
-    else if ( ucode_mod.mod_end )
-    {
-        bootstrap_unmap();
-        ucode_mod.mod_end = 0;
-    }
-
-    return 0;
-}
-__initcall(microcode_init);
-
 /* Load a cached update to current cpu */
 int microcode_update_one(void)
 {
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826295.1240505 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Lu0-0005pB-NQ; Mon, 28 Oct 2024 09:19:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826295.1240505; Mon, 28 Oct 2024 09:19: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 1t5Lu0-0005p4-Kh; Mon, 28 Oct 2024 09:19:08 +0000
Received: by outflank-mailman (input) for mailman id 826295;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Ltz-0005MP-9c
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:07 +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 ae750aa8-950d-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 10:19:06 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c95a962c2bso5078113a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:06 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae750aa8-950d-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107145; x=1730711945; 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=4MqNUkwecighwf5ZEZecpwf+J1DakAlBwf9uooe4i8Q=;
        b=R+0EG1Iz2Bv+mCOOj/zP225x2HUDJb5XSfacmOG70pXO56IT6FV/cLqucT1oHqMrmc
         +edG3SknidfsK5xi0DQB6K5y/btBgXFqUtjIMXzfssadWruNLyZKqfQEw/Kv5WOWLxs0
         9KEW9moedmof1C0vwJS6HZMxdZF3VyPNXliuA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107145; x=1730711945;
        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=4MqNUkwecighwf5ZEZecpwf+J1DakAlBwf9uooe4i8Q=;
        b=VyFK/oJ0mGnTDy7BKryy3WOFyvUMIYWcz6LfL5VPp0M5tWHysSSonhLlsFuchXEZ7M
         0Pq1fC5kvFtWzqyb1j/+Kl9GBkEgJqSoIkf5pJx9RWFNBeC1rPqInSbpJ5B7gFmNiaY4
         rVS2AdTMhfuVtPhPBULTMOqZHv68z4FVI2NRCJgBl5KScrxnBIDrth0sWdwPOZkqVV9/
         I5FfRosTYsWg569wvPlU/pIVYIDOC0NJ3PYmIQ5dR+1BkMKG3YI6XZ72zj4gBjPLYmn3
         SupSJM69CKz6EZOkiED2/m31F1WOci7UW9Xo8HmbaZfL1xSAEU/2jTlSuEwkCUd2Ljjw
         OMig==
X-Gm-Message-State: AOJu0YzkCz8EEkkpuLHArwJbKK8QKrQpORitkJWmCghLQs4v4ljpcqmP
	F0aqFH6kEoHuBnQC1auKdBba0OGEoFqX3NpFRAPbR1tp6DaWtd1GFWAmzsZgiJ5UbpimNhLTb6h
	M
X-Google-Smtp-Source: AGHT+IH5tcFhm3dopPSqg6B3iTWtDz1h4rBWC3w9u+K5IL4SIE7v2kpqaJ0KZfV49ENmGsyWmEA79Q==
X-Received: by 2002:a17:907:e87:b0:a99:5cd5:5b9c with SMTP id a640c23a62f3a-a9de5ee1155mr665254766b.36.1730107145339;
        Mon, 28 Oct 2024 02:19:05 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 03/10] x86/ucode: Break early_microcode_load() out of early_microcode_init()
Date: Mon, 28 Oct 2024 09:18:49 +0000
Message-Id: <20241028091856.2151603-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

microcode_grab_module() and early_microcode_update_cpu() are logically one
task that passes state via static variables.

We intend to delete said static variables, so start by moving these functions
out of early_microcode_init().

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: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 3e815f1880af..d13f8338e4e6 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -854,6 +854,22 @@ static int __init early_microcode_update_cpu(void)
     return microcode_update_cpu(patch, 0);
 }
 
+/*
+ * There are several tasks:
+ * - Locate the ucode blob in the boot modules.
+ * - Parse and attempt in-place load.
+ * - Inform microcode_init_cache() of how to find the blob again.
+ */
+static int __init early_microcode_load(struct boot_info *bi)
+{
+    microcode_grab_module(bi);
+
+    if ( !ucode_mod.mod_end && !ucode_blob.size )
+        return 0;
+
+    return early_microcode_update_cpu();
+}
+
 int __init early_microcode_init(struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
@@ -897,10 +913,7 @@ int __init early_microcode_init(struct boot_info *bi)
         return -ENODEV;
     }
 
-    microcode_grab_module(bi);
-
-    if ( ucode_mod.mod_end || ucode_blob.size )
-        rc = early_microcode_update_cpu();
+    rc = early_microcode_load(bi);
 
     /*
      * Some CPUID leaves and MSRs are only present after microcode updates
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826299.1240541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Lu5-0006gx-3V; Mon, 28 Oct 2024 09:19:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826299.1240541; Mon, 28 Oct 2024 09:19: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 1t5Lu4-0006fH-TX; Mon, 28 Oct 2024 09:19:12 +0000
Received: by outflank-mailman (input) for mailman id 826299;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Lu3-0005MP-DJ
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:11 +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 b0d03caf-950d-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 10:19:10 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a6b4ca29bso503388266b.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:10 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b0d03caf-950d-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107150; x=1730711950; 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=2tHJ9KvrKOuMjaRdKbRkR2CwfZwErwPkHq08Lc76WTw=;
        b=kahqWksxgzonAQz1hLCbU2S8FFI6DVKIeBrsa/xBMnrbV6FIhTxLUjFO4yymZr934T
         Fwp22CxvtECXf/VLMk8ogr5zoBKk5DmtUg2ZodOU/978FSgLVwSPT6Heg7y6iPJhmp29
         jFIgRRJfO2m9NepiFzsdXGbrGZHP+zQIPS0+E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107150; x=1730711950;
        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=2tHJ9KvrKOuMjaRdKbRkR2CwfZwErwPkHq08Lc76WTw=;
        b=Gt6d52xzOfaHgt9I9Itrm4BN+Ka8bSBhSbPtaPLAeOKxmIl9FQO3b0PzDVUJdOjQSa
         YPPelV3ASAAm8UpWyIQ2Ydxio9rA/WNF6sW9xGDK2Apmow7nRIkHBpIavkdTnR1FMctc
         2aCxwWnmdg2YZZcFigOLDWxM45mW09V47gjI7ypBEzM2nC17vhp3C/4dbL/kTaqgoAP3
         uGyQqbPzqUw4OXal5O9W/l5HJirpt2cKyg3HggiWt8TLX8tkfg/th5eMLVwbpn8f9Jo2
         buGOPl+H/KMPpvGlHRhxT/vBCyXw+38OlhFKM9PAxUE8fe0D6funn3dV2ZwrYILE+BPx
         2ULQ==
X-Gm-Message-State: AOJu0YxDKyiUAKffccbHTWHC40TxlqyYM06ZyqCO5WgIWuwxnmBYZOWj
	Jo6johjfjQ/Y9SCm/pu6GlUuZ3/b+4R5/pljLh3G4gBvPASHBqmjyFTkLh5IgI+2maydO7sWaxv
	L
X-Google-Smtp-Source: AGHT+IFnmPuo6iIDZ2uIcOkFOtwk+936hL3j8xHD3pymnaePQ9S+o2bupb6g8N/5ycChEVRj6IpzKg==
X-Received: by 2002:a17:907:3f20:b0:a9a:375e:c167 with SMTP id a640c23a62f3a-a9de5c91a19mr711781366b.1.1730107149626;
        Mon, 28 Oct 2024 02:19:09 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 06/10] x86/ucode: Enforce invariant about module selection
Date: Mon, 28 Oct 2024 09:18:52 +0000
Message-Id: <20241028091856.2151603-7-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The work to add the `ucode=nmi` cmdline option left a subtle corner case.
Both scan and an explicit index could be selected, and we could really find a
CPIO archive and explicit microcode file.

Worse, because the if/else chains for processing ucode_{blob,mod} are opposite
ways around in early_microcode_load() and microcode_init_cache(), we can
genuinely perform early microcode loading from the CPIO archive, then cache
from the explicit file.

Therefore, enforce that only one selection method can be active.

Rename ucode_{scan,mod_idx} to have an opt_ prefix.  This is both for
consistency with the rest of Xen, and to guarantee that we've got all
instances of the variables covered in this change.  Explain how they're use.
During cmdline/config parsing, always update both variables in pairs.

In early_microcode_load(), ASSERT() the invariant just in case.  Use a local
variable for idx rather than operating on the static; we're the only consume
of the value.

Expand the index selection logic with comments and warnings to the user when
something went wrong.

Fixes: 5ed12565aa32 ("microcode: rendezvous CPUs in NMI handler and load ucode")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>

Despite the fixes tag, this can't be backported (at least not in this form).
---
 xen/arch/x86/cpu/microcode/core.c | 76 +++++++++++++++++++++++--------
 1 file changed, 57 insertions(+), 19 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 4c4003bf9687..fc31ab35c3c8 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -60,7 +60,6 @@
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
 static module_t __initdata ucode_mod;
-static signed int __initdata ucode_mod_idx;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
 
@@ -97,11 +96,6 @@ struct patch_with_flags {
 };
 
 static struct ucode_mod_blob __initdata ucode_blob;
-/*
- * By default we will NOT parse the multiboot modules to see if there is
- * cpio image with the microcode images.
- */
-static bool __initdata ucode_scan;
 
 /* By default, ucode loading is done in NMI handler */
 static bool ucode_in_nmi = true;
@@ -109,13 +103,28 @@ static bool ucode_in_nmi = true;
 /* Protected by microcode_mutex */
 static const struct microcode_patch *microcode_cache;
 
+/*
+ * opt_mod_idx and opt_scan have subtle semantics.
+ *
+ * The cmdline can either identify a module by number (inc -ve back-reference)
+ * containing a raw microcode container, or select scan which instructs Xen to
+ * search all modules for an uncompressed CPIO archive containing a file with
+ * a vendor-dependent name.
+ *
+ * These options do not make sense when combined, so for the benefit of module
+ * location we require that they are not both active together.
+ */
+static int __initdata opt_mod_idx;
+static bool __initdata opt_scan;
+
 /*
  * Used by the EFI path only, when xen.cfg identifies an explicit microcode
  * file.  Overrides ucode=<int>|scan on the regular command line.
  */
 void __init microcode_set_module(unsigned int idx)
 {
-    ucode_mod_idx = idx;
+    opt_mod_idx = idx;
+    opt_scan = false;
     ucode_mod_forced = 1;
 }
 
@@ -139,12 +148,16 @@ static int __init cf_check parse_ucode(const char *s)
         else if ( !ucode_mod_forced ) /* Not forced by EFI */
         {
             if ( (val = parse_boolean("scan", s, ss)) >= 0 )
-                ucode_scan = val;
+            {
+                opt_scan = val;
+                opt_mod_idx = 0;
+            }
             else
             {
                 const char *q;
 
-                ucode_mod_idx = simple_strtol(s, &q, 0);
+                opt_scan = false;
+                opt_mod_idx = simple_strtol(s, &q, 0);
                 if ( q != ss )
                     rc = -EINVAL;
             }
@@ -166,7 +179,7 @@ static void __init microcode_scan_module(struct boot_info *bi)
     int i;
 
     ucode_blob.size = 0;
-    if ( !ucode_scan )
+    if ( !opt_scan )
         return;
 
     if ( boot_cpu_data.x86_vendor == X86_VENDOR_AMD )
@@ -792,7 +805,7 @@ static int __init cf_check microcode_init_cache(void)
     if ( !ucode_ops.apply_microcode )
         return -ENODEV;
 
-    if ( ucode_scan )
+    if ( opt_scan )
         /* Need to rescan the modules because they might have been relocated */
         microcode_scan_module(bi);
 
@@ -817,17 +830,42 @@ static int __init early_microcode_load(struct boot_info *bi)
     const void *data = NULL;
     size_t size;
     struct microcode_patch *patch;
+    int idx = opt_mod_idx;
+
+    /*
+     * Cmdline parsing ensures this invariant holds, so that we don't end up
+     * trying to mix multiple ways of finding the microcode.
+     */
+    ASSERT(idx == 0 || !opt_scan);
 
-    if ( ucode_mod_idx < 0 )
-        ucode_mod_idx += bi->nr_modules;
-    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
-         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
-        goto scan;
-    ucode_mod = *bi->mods[ucode_mod_idx].mod;
- scan:
-    if ( ucode_scan )
+    if ( opt_scan ) /* Scan for a CPIO archive */
         microcode_scan_module(bi);
 
+    if ( idx ) /* Specific module nominated */
+    {
+        /*
+         * Negative indicies can be used to reference from the end of the
+         * modules.  e.g. ucode=-1 refers to the last module.
+         */
+        if ( idx < 0 )
+            idx += bi->nr_modules;
+
+        if ( idx <= 0 || idx >= bi->nr_modules )
+        {
+            printk(XENLOG_WARNING "Microcode: Chosen module %d out of range [1, %u)\n",
+                   idx, bi->nr_modules);
+            return -ENODEV;
+        }
+
+        if ( !__test_and_clear_bit(idx, bi->module_map) )
+        {
+            printk(XENLOG_WARNING "Microcode: Chosen module %d already used\n", idx);
+            return -ENODEV;
+        }
+
+        ucode_mod = *bi->mods[idx].mod;
+    }
+
     if ( !ucode_mod.mod_end && !ucode_blob.size )
         return 0;
 
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826293.1240486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Ltz-0005N0-Aw; Mon, 28 Oct 2024 09:19:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826293.1240486; Mon, 28 Oct 2024 09:19: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 1t5Ltz-0005Mt-6M; Mon, 28 Oct 2024 09:19:07 +0000
Received: by outflank-mailman (input) for mailman id 826293;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Ltx-0005MP-JV
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:05 +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 acaf1b40-950d-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 10:19:03 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a2209bd7fso605976966b.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:03 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acaf1b40-950d-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107142; x=1730711942; 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=e9KSFGLZal11ofGu3fM65uYuNV5wIYTJuDFkZKcLfKQ=;
        b=XM0+NXar6rBA0arDtrT8KTkpEwtpQHcVUkPlT568kKKOKqN/QF8iD4Er+kT//ukFxx
         GyeqPzVUHRycFttXOcmLBICDtU6vlzDZhqypzEPTF2r3JWvA7fuxT+k13kT40ABGiD9J
         bGZea7T59TROAMMPlJZmtnYx4MxsP29u1yYiQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107142; x=1730711942;
        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=e9KSFGLZal11ofGu3fM65uYuNV5wIYTJuDFkZKcLfKQ=;
        b=IauPM3ml8a5Ion0TrNOqyEcKAP3Y3YU4QZc3ord0nKdO6bUKi/o/DEUtYKMdJahwM8
         utMDPDyvAtx04xw+TVlUA2s/UrqTdsQ4lDmXT4CV454Uy6hedAk5s7h/wcZk+ChtGPt1
         pEhB3ONrHpsBIIHqOEPbn16P18OB6ns7DF+AxU9mVyU4lngqjsoQ5XrGxKNTlfklXa9Y
         68VWroloDRHDdRdxZlgHsrZBOVEtHBt2ra4ETaJhIhj9u3ByvKfJHxyKNCHbwNeTTRua
         i5OzZOWDPUBWISGYcDpKutmX7TlccsyHnbuL3ToKltufekMJKD9Q2gnTfOZQ26pYN8jE
         lA+A==
X-Gm-Message-State: AOJu0Yz3dTfxlTUxV8Z7KyeXmZH98oOoLyjBjfBieCGXAYTNlqU1oBlL
	U//5udt3w4aV0eCUzyRyJ2UN2sXpUrWBIGX69EtRDwXpPhreQgkR/mN5FbWaVRo7Xx0htKm3dp1
	4
X-Google-Smtp-Source: AGHT+IG9zy3kR2QCI2a9SQ3lK0hKhfpvT8YZ9sZlbGf5NFtH450Fi7j0FWAtyWrs05QEAw7Jj1mcOA==
X-Received: by 2002:a17:906:6a0e:b0:a9a:7f37:2b62 with SMTP id a640c23a62f3a-a9de6167b7emr817332166b.49.1730107142076;
        Mon, 28 Oct 2024 02:19:02 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 00/10] x86/ucode: Fix module-handling use-aftere-free's
Date: Mon, 28 Oct 2024 09:18:46 +0000
Message-Id: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Some of these were known, some not, but they were creating unecessary
complexity in the Hyperlaunch series.

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1513996396

Andrew Cooper (10):
  x86/ucode: Turn microcode_init_cache() into a presmp_initcall
  x86/ucode: Delete the microcode_init() initcall
  x86/ucode: Break early_microcode_load() out of early_microcode_init()
  x86/ucode: Fold early_microcode_update_cpu() into it's single caller
  x86/ucode: Fold microcode_grab_module() into its single caller
  x86/ucode: Enforce invariant about module selection
  x86/ucode: Move the CPIO path string into microcode_ops
  x86/ucode: Use bootstrap_unmap() in early_microcode_load()
  x86/ucode: Drop ucode_mod and ucode_blob
  x86/ucode: Fold early_update_cache() into its single caller

 xen/arch/x86/cpu/microcode/amd.c     |   4 +
 xen/arch/x86/cpu/microcode/core.c    | 329 ++++++++++++++-------------
 xen/arch/x86/cpu/microcode/intel.c   |   4 +
 xen/arch/x86/cpu/microcode/private.h |   7 +
 xen/arch/x86/include/asm/microcode.h |   1 -
 xen/arch/x86/setup.c                 |   2 -
 6 files changed, 189 insertions(+), 158 deletions(-)

-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826298.1240534 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Lu4-0006XR-GK; Mon, 28 Oct 2024 09:19:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826298.1240534; Mon, 28 Oct 2024 09:19: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 1t5Lu4-0006Wc-DB; Mon, 28 Oct 2024 09:19:12 +0000
Received: by outflank-mailman (input) for mailman id 826298;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Lu3-0005yk-94
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:11 +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 afe37ec1-950d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 10:19:09 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9a850270e2so677426566b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:09 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: afe37ec1-950d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107148; x=1730711948; 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=oICYqe4yhMzxG8joOnpcuB9tYuO3zHV62gOFfMxJa7M=;
        b=W3KafJDx2IkapzBEPdM/Kv/m6YdPTmMCwrJJrd5jp/65m5rtoyCK5qXgstTZdj+2Es
         FhGUJCFvzFHC5zPb13U5VfM8x5yn0wXQ5d4xSzhNZeTlGNlc+c0sitTidZ2jEUfqptuZ
         GTEowN+QGdF0w5nnQITXk7yv12ymuPV6bAabc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107148; x=1730711948;
        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=oICYqe4yhMzxG8joOnpcuB9tYuO3zHV62gOFfMxJa7M=;
        b=cJnp22mqe0X/ECd6QCx5/caPAkC1npv7PSNMSUULbD9kqI+nmLZBvm7KNFEcehDO7Q
         NQ7iuJ02H61DD5qq6JiIb0Y0/Eyej3cfGbCPnpKDoRNJhMZZie9g/GVSxe1/Dxcijfdk
         ElSqoMRHlW5707HT8IxPb7KEFzWIuecIsFq7tUL772asuLKORN3kB9LLe95pF1TMzmEB
         W0hOz+U5tH0yoGBFoJ3OJeN11yua0ex9jKpX8IH8QMYsBsMzPczL5PEuJ8+lVy1GfEgf
         dAVIh0K8OmFsrefEBaDZF8IKm8M+L9hUk3ZrCO8yHrLmoxT26VAy8lLZK0OUv8mLkB22
         V1DQ==
X-Gm-Message-State: AOJu0YyfQG6yZMIoQMtJ4uS0oxxkizbsPqaoM/Kpk6338MH5vSJkU4OA
	aNCfaml6JFGY95TI8FMkQBua/kUskBF4NSvrIUYlur9AFjozwpXM+itPr4G+8yStpY12OiDfRk6
	h
X-Google-Smtp-Source: AGHT+IFPmRBctsKkbYZfwJ/wA3cEUyI1GBO58kJ5TMNvnj+8riKv+CKvmi65G6mLHSuZnD3+BsL2RA==
X-Received: by 2002:a17:907:a07:b0:a99:4ebc:82d4 with SMTP id a640c23a62f3a-a9de6192c15mr813457466b.55.1730107148172;
        Mon, 28 Oct 2024 02:19:08 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 05/10] x86/ucode: Fold microcode_grab_module() into its single caller
Date: Mon, 28 Oct 2024 09:18:51 +0000
Message-Id: <20241028091856.2151603-6-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 0b00e70f3b07..4c4003bf9687 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -205,19 +205,6 @@ static void __init microcode_scan_module(struct boot_info *bi)
     }
 }
 
-static void __init microcode_grab_module(struct boot_info *bi)
-{
-    if ( ucode_mod_idx < 0 )
-        ucode_mod_idx += bi->nr_modules;
-    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
-         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
-        goto scan;
-    ucode_mod = *bi->mods[ucode_mod_idx].mod;
-scan:
-    if ( ucode_scan )
-        microcode_scan_module(bi);
-}
-
 static struct microcode_ops __ro_after_init ucode_ops;
 
 static DEFINE_SPINLOCK(microcode_mutex);
@@ -831,7 +818,15 @@ static int __init early_microcode_load(struct boot_info *bi)
     size_t size;
     struct microcode_patch *patch;
 
-    microcode_grab_module(bi);
+    if ( ucode_mod_idx < 0 )
+        ucode_mod_idx += bi->nr_modules;
+    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
+         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
+        goto scan;
+    ucode_mod = *bi->mods[ucode_mod_idx].mod;
+ scan:
+    if ( ucode_scan )
+        microcode_scan_module(bi);
 
     if ( !ucode_mod.mod_end && !ucode_blob.size )
         return 0;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826294.1240492 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Ltz-0005QH-KD; Mon, 28 Oct 2024 09:19:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826294.1240492; Mon, 28 Oct 2024 09:19: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 1t5Ltz-0005Pq-DW; Mon, 28 Oct 2024 09:19:07 +0000
Received: by outflank-mailman (input) for mailman id 826294;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Ltx-0005MP-Ug
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:05 +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 acfaf3cf-950d-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 10:19:04 +0100 (CET)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5cb74434bc5so5277093a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:04 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acfaf3cf-950d-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107143; x=1730711943; 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=uNoXSVIzcbAquQH53qcOLIpudAiENFsvnljoElW6cME=;
        b=Ps+3zxOmsahkjibcjo7VWSd44EXXMC7M0x3s7qJM0shro+17nD0R/2brVocurhe7o8
         KrmbrHBKRR0wbjwtegl7+jB758D4rWIjG9ZoEx42cDaxEoaWGn6f7fbwoftM2/oiLF8c
         QgjCWjeYgTpfDmeXV3iWcOTKVRi5ZO04wdTI4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107143; x=1730711943;
        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=uNoXSVIzcbAquQH53qcOLIpudAiENFsvnljoElW6cME=;
        b=AmTENU3JS7FL1HJzq63Y+C5Hr4ItNYyaW305qH44A9el2qfq77FImBHkYboCuSjshW
         oRWK75mHR/A4NVg2Tm3+SSfw6Ci6eorDEKnZwZU6GRpj7XaHlH+VuyP4xfjvRavzD04d
         xNI5qOD3GyO688zQ+VLmEVSy+6pZcGln+LMk2VcfIo+K12e9ri2C2LukIrU1gil7C7u4
         Z+B85BMacwBH4vWqli2sycWMo2rac7FReN83xn/cdCgpJ7Q+S9HXoggf24BQcx9+kiIZ
         Y0fpm0WvCG+Te6xfmFZ5deoxwMCvZCs9hxb98fGKW8ccpzFoRNbREoPurrzpVdj5wGmR
         7qMA==
X-Gm-Message-State: AOJu0YzpijumNCkiCi0UcjFTTT9SHMMa9GDetPaeGRM+MIlALqDNPG8V
	FYT8o7jhfegDDuxTn/NWkRGk8wh5UU3VjiH4eomjDzQ22pMcIf3gEFxyOXWRofuNxfkPUV5fjY2
	9
X-Google-Smtp-Source: AGHT+IEzCQkQNqwke7Zikn3jgL4+v0prf1RFWQGjUMZAes/8amX7zz05t3Zw99Z0317ykL3aPf5Ewg==
X-Received: by 2002:a17:907:7e8e:b0:a9a:4aa3:728b with SMTP id a640c23a62f3a-a9de61eaa03mr611502666b.53.1730107143103;
        Mon, 28 Oct 2024 02:19:03 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 01/10] x86/ucode: Turn microcode_init_cache() into a presmp_initcall
Date: Mon, 28 Oct 2024 09:18:47 +0000
Message-Id: <20241028091856.2151603-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

There's no need for microcode_init_cache() to be called exactly where it is in
__start_xen().  All that matters is it must be after xmalloc() is available
and before APs start up.

As a consequence, microcode_init_cache() runs a little later on boot now.

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: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c    | 4 +++-
 xen/arch/x86/include/asm/microcode.h | 1 -
 xen/arch/x86/setup.c                 | 2 --
 3 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 8d916d891e6e..9a2cc631d2aa 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -819,8 +819,9 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
-int __init microcode_init_cache(struct boot_info *bi)
+static int __init cf_check microcode_init_cache(void)
 {
+    struct boot_info *bi = &xen_boot_info;
     int rc = 0;
 
     if ( !ucode_ops.apply_microcode )
@@ -838,6 +839,7 @@ int __init microcode_init_cache(struct boot_info *bi)
 
     return rc;
 }
+presmp_initcall(microcode_init_cache);
 
 /* BSP calls this function to parse ucode blob and then apply an update. */
 static int __init early_microcode_update_cpu(void)
diff --git a/xen/arch/x86/include/asm/microcode.h b/xen/arch/x86/include/asm/microcode.h
index a278773f8b5d..c62c131fd047 100644
--- a/xen/arch/x86/include/asm/microcode.h
+++ b/xen/arch/x86/include/asm/microcode.h
@@ -28,6 +28,5 @@ int microcode_update_one(void);
 
 struct boot_info;
 int early_microcode_init(struct boot_info *bi);
-int microcode_init_cache(struct boot_info *bi);
 
 #endif /* ASM_X86__MICROCODE_H */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 177f4024abca..5db57e1b1af2 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1952,8 +1952,6 @@ void asmlinkage __init noreturn __start_xen(void)
 
     timer_init();
 
-    microcode_init_cache(bi); /* Needs xmalloc() */
-
     tsx_init(); /* Needs microcode.  May change HLE/RTM feature bits. */
 
     calculate_raw_cpu_policy(); /* Needs microcode.  No other dependenices. */
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826296.1240515 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Lu2-00064k-W5; Mon, 28 Oct 2024 09:19:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826296.1240515; Mon, 28 Oct 2024 09: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 1t5Lu2-00064a-SM; Mon, 28 Oct 2024 09:19:10 +0000
Received: by outflank-mailman (input) for mailman id 826296;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Lu2-0005yk-42
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:10 +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 aec66eb1-950d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 10:19:07 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a9a2cdc6f0cso551005066b.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:07 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aec66eb1-950d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107146; x=1730711946; 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=r1bM8SCLj6R5IbsmBphTqHMm0oBQSGTeHlM7ro4wldk=;
        b=tGPDIzdtk9cV/uYse4W/2FzJp6OoFGsTV/e3+F4pwX1mfo8ky9WSoMp7C64U8nGkgJ
         oRGYlQCskAASLUsCfFysWBeGvI7g2E3IIKmgU+LFF5MR2IcrYHFWp7gyrOXTPOJjX/Dz
         p1VqQmxnIcTL6gljCWOBp0f8h51QmMVFBYsXU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107146; x=1730711946;
        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=r1bM8SCLj6R5IbsmBphTqHMm0oBQSGTeHlM7ro4wldk=;
        b=gY5EdRzZsLsNybpBmYVYcTJ+KkqhGO5OQNpd+M278u6dmGm2ZS7/UEIz21m1ibu+NQ
         VwGWaTwoboqMMsg9Zghz9/HmwUqO8B1260CoKHkdrks4KINGJ+WFI2gMp53JsK1NpdTo
         lk9oqyYOdjUP2Jy0qSdYt824REIMeLYln5+AGhxDzsaf9xhvbkOUexnsWhYUGRcK5cJ9
         0Qjixl+VPve1iYMpyF8c98Bd9dagQCFKkWEPekJqqV/T52aJ4siT4c3kc2rpqAhrj9dr
         fxRqubU5+B8NgaFLMNbQVjIZbEr4qaBbkmEHMQl+pQU4VJuOjI4zdhC8qANVZIZek8J4
         PpXg==
X-Gm-Message-State: AOJu0YzAMFzNDoZcPJanZfjhoWvlrPrXcKqx1LK8eIp+a9chD+mY+aNU
	mmZffjuMLlHWzi+4icAin45Nf9sVqSwpKM3XRbadAmOchmzXDty5NBsvZryI8uZ3z0Fg0aT0Nm8
	Y
X-Google-Smtp-Source: AGHT+IEP9KlEgbT5966fOb8YxiB5q7SRSyRaOvW6vHnzGKGD9sG85PdUM8qsnLLjc6FJETP54fbglw==
X-Received: by 2002:a17:907:1c24:b0:a9a:7f84:940b with SMTP id a640c23a62f3a-a9de5c91b71mr577280266b.10.1730107146079;
        Mon, 28 Oct 2024 02:19:06 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 04/10] x86/ucode: Fold early_microcode_update_cpu() into it's single caller
Date: Mon, 28 Oct 2024 09:18:50 +0000
Message-Id: <20241028091856.2151603-5-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Diff-wise, as early_microcode_update_cpu() is the larger function, this more
closely resembles "merge early_microcode_load() into it's single callee", but
the end result is the same.

At the same time, rename the len variable to size.  This is for better
consistency with existing logic, and to reduce churn later.

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: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 38 +++++++++++++------------------
 1 file changed, 16 insertions(+), 22 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index d13f8338e4e6..0b00e70f3b07 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -819,28 +819,38 @@ static int __init cf_check microcode_init_cache(void)
 }
 presmp_initcall(microcode_init_cache);
 
-/* BSP calls this function to parse ucode blob and then apply an update. */
-static int __init early_microcode_update_cpu(void)
+/*
+ * There are several tasks:
+ * - Locate the ucode blob in the boot modules.
+ * - Parse and attempt in-place load.
+ * - Inform microcode_init_cache() of how to find the blob again.
+ */
+static int __init early_microcode_load(struct boot_info *bi)
 {
     const void *data = NULL;
-    size_t len;
+    size_t size;
     struct microcode_patch *patch;
 
+    microcode_grab_module(bi);
+
+    if ( !ucode_mod.mod_end && !ucode_blob.size )
+        return 0;
+
     if ( ucode_blob.size )
     {
-        len = ucode_blob.size;
+        size = ucode_blob.size;
         data = ucode_blob.data;
     }
     else if ( ucode_mod.mod_end )
     {
-        len = ucode_mod.mod_end;
+        size = ucode_mod.mod_end;
         data = bootstrap_map(&ucode_mod);
     }
 
     if ( !data )
         return -ENOMEM;
 
-    patch = ucode_ops.cpu_request_microcode(data, len, false);
+    patch = ucode_ops.cpu_request_microcode(data, size, false);
     if ( IS_ERR(patch) )
     {
         printk(XENLOG_WARNING "Parsing microcode blob error %ld\n",
@@ -854,22 +864,6 @@ static int __init early_microcode_update_cpu(void)
     return microcode_update_cpu(patch, 0);
 }
 
-/*
- * There are several tasks:
- * - Locate the ucode blob in the boot modules.
- * - Parse and attempt in-place load.
- * - Inform microcode_init_cache() of how to find the blob again.
- */
-static int __init early_microcode_load(struct boot_info *bi)
-{
-    microcode_grab_module(bi);
-
-    if ( !ucode_mod.mod_end && !ucode_blob.size )
-        return 0;
-
-    return early_microcode_update_cpu();
-}
-
 int __init early_microcode_init(struct boot_info *bi)
 {
     const struct cpuinfo_x86 *c = &boot_cpu_data;
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826302.1240574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5LuB-0007mQ-18; Mon, 28 Oct 2024 09:19:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826302.1240574; Mon, 28 Oct 2024 09: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 1t5LuA-0007mC-U6; Mon, 28 Oct 2024 09:19:18 +0000
Received: by outflank-mailman (input) for mailman id 826302;
 Mon, 28 Oct 2024 09: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Lu9-0005yk-Bo
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:17 +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 b3b74dd4-950d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 10:19:15 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a6b4ca29bso503396966b.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:15 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b3b74dd4-950d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107154; x=1730711954; 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=tOxfpCoQr1fVtkc55vOO7DIo2+McEVShrt/nmgVD2Nc=;
        b=ZeSyhCJ9M5/oLw/pxpLB2C93bnM91u4GJabTWZWu3xA5S02ZmmtuL6BL1xVgm7YDmP
         yp+UX+9tWCW1nFii1JXN0u/W/BZdJSvfkWauYgCAWmN1WeX4YZtoxtCyZhtxWmDLDl1m
         v+/QxC+LGWEEW1CBK56Vy6dWUOocdPWiMAzHA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107154; x=1730711954;
        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=tOxfpCoQr1fVtkc55vOO7DIo2+McEVShrt/nmgVD2Nc=;
        b=Ly5hP/OE8X765z3apa+BQVnLJS9/K1Yh4aPi73poLGsZ0cfDz++ecAvIFZROjCLxPs
         lP14kip70zBc5rM+38KgIlWlcYOE/9VcFQOvynzOHkMdJHMYZDypRXqALjoy7AuDu4lW
         fzBegri8tHP/ALCbwVEEjL7/ARUXSrBuiZYgRTJmTBpqfJeq64K9kKDG0GGGwXp34stz
         Wj/RXoJEc/SGw6dVV0JkeL9oyB2UIXyuV0NsrkqeTuB11rjGmJ985XrFpIH6XBmEyUho
         zAPpw+/ROASBXHCxWCIy9xjpVgbbXUawGIIVPr9HUegsUZHeeueNj8JzE/AjIrdvz05x
         fdmg==
X-Gm-Message-State: AOJu0Yw/nINDAVsfKGyNjmDuQ/UN3gpgGMzuBd/aAL+8HA07wE9cPcwv
	H7krMlo5nNX/j6nv+V66Y1AS/8WlCzboEar5TOnGdI63scc9HXSQaJONTfEQCZD47kD3oIg4hS5
	A
X-Google-Smtp-Source: AGHT+IF5Zj0+DmUz/iiGI9arwyEOISVm/s8FlkCO7Eh2n/FJlgucYcavycgcmFQ19nPK9n9r6tR4sQ==
X-Received: by 2002:a17:907:1b81:b0:a99:6036:90a with SMTP id a640c23a62f3a-a9de5ce2501mr517120566b.14.1730107153579;
        Mon, 28 Oct 2024 02:19:13 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 09/10] x86/ucode: Drop ucode_mod and ucode_blob
Date: Mon, 28 Oct 2024 09:18:55 +0000
Message-Id: <20241028091856.2151603-10-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Both are used to pass information from early_microcode_load() to
microcode_init_cache(), and both constitute use-after-free's in certain cases.

 * ucode_mod is a copy of the module_t identified by `ucode=$n`.  Except it's
   a copy from prior to Xen relocating the modules.  microcode_init_cache()
   might happen to find the data still intact in it's old location, but it
   might be an arbitrary part of some other module.

 * ucode_blob is a stashed pointer to a bootstrap_map() which becomes invalid
   the moment control returns to __start_xen(), where other logic is free to
   to make temporary mappings.  This was even noticed and
   microcode_init_cache() adjusted to "fix" the stashed pointers.

The information which should be passed between these two functions is which
module to look in.  Introduce early_mod_idx for this purpose.  opt_scan can be
reused to distinguish between CPIO archives and raw containers.

Notably this means microcode_init_cache() doesn't need to scan all modules any
more; we know exactly which one to look in.  However, we do re-parse the CPIO
header for simplicity.

Furthermore, microcode_init_cache(), being a presmp_initcall does not need to
use bootstrap_map() to access modules; it can use mfn_to_virt() directly,
which avoids needing to funnel exit paths through bootstrap_unmap().

Fold microcode_scan_module() into what is now it's single caller.  It operates
on the function-wide idx/data/size state which allows for a unified "found"
path irrespective of module selection method.

This resolves all issues to do with holding pointers (physical or virtual)
across returning to __start_xen().

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 172 ++++++++++++++++--------------
 1 file changed, 89 insertions(+), 83 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 28cfeab75a81..591c13ad91fb 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -28,7 +28,6 @@
 #include <xen/err.h>
 #include <xen/guest_access.h>
 #include <xen/init.h>
-#include <xen/multiboot.h>
 #include <xen/param.h>
 #include <xen/spinlock.h>
 #include <xen/stop_machine.h>
@@ -59,7 +58,6 @@
  */
 #define MICROCODE_UPDATE_TIMEOUT_US 1000000
 
-static module_t __initdata ucode_mod;
 static bool __initdata ucode_mod_forced;
 static unsigned int nr_cores;
 
@@ -79,24 +77,11 @@ static enum {
     LOADING_EXIT,
 } loading_state;
 
-/*
- * If we scan the initramfs.cpio for the early microcode code
- * and find it, then 'ucode_blob' will contain the pointer
- * and the size of said blob. It is allocated from Xen's heap
- * memory.
- */
-struct ucode_mod_blob {
-    const void *data;
-    size_t size;
-};
-
 struct patch_with_flags {
     unsigned int flags;
     const struct microcode_patch *patch;
 };
 
-static struct ucode_mod_blob __initdata ucode_blob;
-
 /* By default, ucode loading is done in NMI handler */
 static bool ucode_in_nmi = true;
 
@@ -172,46 +157,6 @@ custom_param("ucode", parse_ucode);
 
 static struct microcode_ops __ro_after_init ucode_ops;
 
-static void __init microcode_scan_module(struct boot_info *bi)
-{
-    uint64_t *_blob_start;
-    unsigned long _blob_size;
-    struct cpio_data cd;
-    int i;
-
-    ucode_blob.size = 0;
-    if ( !opt_scan )
-        return;
-
-    /*
-     * Try all modules and see whichever could be the microcode blob.
-     */
-    for ( i = 1 /* Ignore dom0 kernel */; i < bi->nr_modules; i++ )
-    {
-        if ( !test_bit(i, bi->module_map) )
-            continue;
-
-        _blob_start = bootstrap_map(bi->mods[i].mod);
-        _blob_size = bi->mods[i].mod->mod_end;
-        if ( !_blob_start )
-        {
-            printk("Could not map multiboot module #%d (size: %ld)\n",
-                   i, _blob_size);
-            continue;
-        }
-        cd.data = NULL;
-        cd.size = 0;
-        cd = find_cpio_data(ucode_ops.cpio_path, _blob_start, _blob_size);
-        if ( cd.data )
-        {
-            ucode_blob.size = cd.size;
-            ucode_blob.data = cd.data;
-            break;
-        }
-        bootstrap_unmap();
-    }
-}
-
 static DEFINE_SPINLOCK(microcode_mutex);
 
 DEFINE_PER_CPU(struct cpu_signature, cpu_sig);
@@ -789,23 +734,47 @@ static int __init early_update_cache(const void *data, size_t len)
     return rc;
 }
 
+/*
+ * Set by early_microcode_load() to indicate where it found microcode, so
+ * microcode_init_cache() can find it again and initalise the cache.  opt_scan
+ * tells us whether we're looking for a raw container or CPIO archive.
+ */
+static int __initdata early_mod_idx = -1;
+
 static int __init cf_check microcode_init_cache(void)
 {
     struct boot_info *bi = &xen_boot_info;
+    void *data;
+    size_t size;
     int rc = 0;
 
-    if ( !ucode_ops.apply_microcode )
-        return -ENODEV;
+    if ( early_mod_idx < 0 )
+        /* early_microcode_load() didn't leave us any work to do. */
+        return 0;
+
+    size = bi->mods[early_mod_idx].mod->mod_end;
+    data = __mfn_to_virt(bi->mods[early_mod_idx].mod->mod_start);
 
+    /*
+     * If opt_scan is set, we're looking for a CPIO archive rather than a raw
+     * microcode container.  Look within it.
+     */
     if ( opt_scan )
-        /* Need to rescan the modules because they might have been relocated */
-        microcode_scan_module(bi);
+    {
+        struct cpio_data cd = find_cpio_data(ucode_ops.cpio_path, data, size);
 
-    if ( ucode_mod.mod_end )
-        rc = early_update_cache(bootstrap_map(&ucode_mod),
-                                ucode_mod.mod_end);
-    else if ( ucode_blob.size )
-        rc = early_update_cache(ucode_blob.data, ucode_blob.size);
+        if ( !cd.data )
+        {
+            printk(XENLOG_WARNING "Microcode: %s not found in CPIO archive\n",
+                   strrchr(ucode_ops.cpio_path, '/') + 1);
+            return -ENOENT;
+        }
+
+        data = cd.data;
+        size = cd.size;
+    }
+
+    rc = early_update_cache(data, size);
 
     return rc;
 }
@@ -819,7 +788,7 @@ presmp_initcall(microcode_init_cache);
  */
 static int __init early_microcode_load(struct boot_info *bi)
 {
-    const void *data = NULL;
+    void *data = NULL;
     size_t size;
     struct microcode_patch *patch;
     int idx = opt_mod_idx;
@@ -832,7 +801,40 @@ static int __init early_microcode_load(struct boot_info *bi)
     ASSERT(idx == 0 || !opt_scan);
 
     if ( opt_scan ) /* Scan for a CPIO archive */
-        microcode_scan_module(bi);
+    {
+        for ( idx = 1; idx < bi->nr_modules; ++idx )
+        {
+            struct cpio_data cd;
+
+            if ( !test_bit(idx, bi->module_map) )
+                continue;
+
+            size = bi->mods[idx].mod->mod_end;
+            data = bootstrap_map_bm(&bi->mods[idx]);
+            if ( !data )
+            {
+                printk(XENLOG_WARNING "Microcode: Could not map module %d, size %zu\n",
+                       idx, size);
+                continue;
+            }
+
+            cd = find_cpio_data(ucode_ops.cpio_path, data, size);
+            if ( !cd.data )
+            {
+                /* CPIO archive, but no cpio_path.  Try the next module */
+                bootstrap_unmap();
+                continue;
+            }
+
+            data = cd.data;
+            size = cd.size;
+            goto found;
+        }
+
+        printk(XENLOG_WARNING "Microcode: %s not found during CPIO scan\n",
+               strrchr(ucode_ops.cpio_path, '/') + 1);
+        return -ENODEV;
+    }
 
     if ( idx ) /* Specific module nominated */
     {
@@ -856,26 +858,21 @@ static int __init early_microcode_load(struct boot_info *bi)
             return -ENODEV;
         }
 
-        ucode_mod = *bi->mods[idx].mod;
-    }
-
-    if ( !ucode_mod.mod_end && !ucode_blob.size )
-        return 0;
-
-    if ( ucode_blob.size )
-    {
-        size = ucode_blob.size;
-        data = ucode_blob.data;
-    }
-    else if ( ucode_mod.mod_end )
-    {
-        size = ucode_mod.mod_end;
-        data = bootstrap_map(&ucode_mod);
+        size = bi->mods[idx].mod->mod_end;
+        data = bootstrap_map_bm(&bi->mods[idx]);
+        if ( !data )
+        {
+            printk(XENLOG_WARNING "Microcode: Could not map module %d, size %zu\n",
+                   idx, size);
+            return -ENODEV;
+        }
+        goto found;
     }
 
-    if ( !data )
-        return -ENOMEM;
+    /* No method of finding microcode specified.  Nothing to do. */
+    return 0;
 
+ found:
     patch = ucode_ops.cpu_request_microcode(data, size, false);
     if ( IS_ERR(patch) )
     {
@@ -891,6 +888,15 @@ static int __init early_microcode_load(struct boot_info *bi)
         goto unmap;
     }
 
+    /*
+     * We've found a microcode patch suitable for this CPU.
+     *
+     * Tell microcode_init_cache() which module we found it in.  We cache it
+     * irrespective of whether the BSP successfully loads it; Some platforms
+     * are known to update the BSP but leave the APs on older ucode.
+     */
+    early_mod_idx = idx;
+
     rc = microcode_update_cpu(patch, 0);
 
  unmap:
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 09:19:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 09:19:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826303.1240581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5LuB-0007uO-RD; Mon, 28 Oct 2024 09:19:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826303.1240581; Mon, 28 Oct 2024 09: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 1t5LuB-0007tF-Ko; Mon, 28 Oct 2024 09:19:19 +0000
Received: by outflank-mailman (input) for mailman id 826303;
 Mon, 28 Oct 2024 09:19: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5LuA-0005yk-C6
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 09:19:18 +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 b3ffc1e0-950d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 10:19:16 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9a16b310f5so631781666b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 02:19:16 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm355961566b.88.2024.10.28.02.19.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 02:19:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b3ffc1e0-950d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730107154; x=1730711954; 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=N3hciQ8Ka+dHVzkGgN9t9G2Trm/MbifcubSrtXUCw+M=;
        b=IXwUuC1xzv8NPdzys5H0aWul5/OF4Xv76JNr0xYLz/ufgtv8SREikhHlS6ztVUWaZc
         n9P+0WoGgN8Y6+fLzsbOZsj0VGKkSrfgbaq4udZUwIAAm/HKMCFWuUyUeT73cEEaFHIK
         LxMhfHYDjNPp1+6iai6n+VBFf/fp7u9vsiw5s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730107154; x=1730711954;
        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=N3hciQ8Ka+dHVzkGgN9t9G2Trm/MbifcubSrtXUCw+M=;
        b=gJDgzEDKgaOAEzc6kqNAe0z+VG4CpaXNYRaq+WMwtgh9PshtDJ/9CzhqIE6e6yQTiG
         WcwqpK+lSlwjUgod+4R23UUypRzXW0/yqGTZ+3gOBF/dK8UOrJaT0OZELgmheYp5HY/m
         FYwBBSxbWkztc3WIZmxy/CKXQuxspc6yxmVzaTUPYxSSPPSP6/DuAGAyPqNN0gAuvsLU
         RHlw0QUEWsKZHkuskdgqb3AlDY3Dxn1GovvprD03hg8o9rb3wMdiMd8sv4RdEEK+Dbo4
         1qy5TrLAtR7dgy2w/F2/7qsm/Gfd5IUzoLroCfG2Q4ZLsrzy2m7eBPff5FQNwZbecKyJ
         +HuA==
X-Gm-Message-State: AOJu0YxXvluYhcvfdjYydUZvqD+nJ8HsEXbSiAPcX37lJTTquGqNljpZ
	xn/5vsOjcz2dhBOSe1fLmG3RAAFyhUieN/7kfj/CtWtjjGhJ1nULyfoHh4n729Abtm4VkjaTviT
	Y
X-Google-Smtp-Source: AGHT+IHDTU7KYy6C7gkSIvfD0SXzraoTh+peLzg0SM8iNtvWnEKHnonHgd6RuBE5i3u2p+RDyGorCQ==
X-Received: by 2002:a17:907:7284:b0:a9a:6ab:c93b with SMTP id a640c23a62f3a-a9de62ec47fmr687812466b.62.1730107154586;
        Mon, 28 Oct 2024 02:19:14 -0700 (PDT)
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>,
	"Daniel P . Smith" <dpsmith@apertussolutions.com>
Subject: [PATCH 10/10] x86/ucode: Fold early_update_cache() into its single caller
Date: Mon, 28 Oct 2024 09:18:56 +0000
Message-Id: <20241028091856.2151603-11-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The data pointer is known good, so the -ENOMEM path is unnecessary.  However,
if we find no patch, something's wrong seeing as early_microcode_init()
indicated it was happy.

We are the entity initialising the cache, so we don't need the complexity of
using microcode_update_cache().  Just assert the cache is empty, and populate
it.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Daniel P. Smith <dpsmith@apertussolutions.com>
---
 xen/arch/x86/cpu/microcode/core.c | 47 +++++++++++++------------------
 1 file changed, 19 insertions(+), 28 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 591c13ad91fb..90a6f2bd87ae 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -707,33 +707,6 @@ int microcode_update_one(void)
     return microcode_update_cpu(NULL, 0);
 }
 
-static int __init early_update_cache(const void *data, size_t len)
-{
-    int rc = 0;
-    struct microcode_patch *patch;
-
-    if ( !data )
-        return -ENOMEM;
-
-    patch = parse_blob(data, len);
-    if ( IS_ERR(patch) )
-    {
-        printk(XENLOG_WARNING "Parsing microcode blob error %ld\n",
-               PTR_ERR(patch));
-        return PTR_ERR(patch);
-    }
-
-    if ( !patch )
-        return -ENOENT;
-
-    spin_lock(&microcode_mutex);
-    rc = microcode_update_cache(patch);
-    spin_unlock(&microcode_mutex);
-    ASSERT(rc);
-
-    return rc;
-}
-
 /*
  * Set by early_microcode_load() to indicate where it found microcode, so
  * microcode_init_cache() can find it again and initalise the cache.  opt_scan
@@ -744,6 +717,7 @@ static int __initdata early_mod_idx = -1;
 static int __init cf_check microcode_init_cache(void)
 {
     struct boot_info *bi = &xen_boot_info;
+    struct microcode_patch *patch;
     void *data;
     size_t size;
     int rc = 0;
@@ -774,7 +748,24 @@ static int __init cf_check microcode_init_cache(void)
         size = cd.size;
     }
 
-    rc = early_update_cache(data, size);
+    patch = parse_blob(data, size);
+    if ( IS_ERR(patch) )
+    {
+        rc = PTR_ERR(patch);
+        printk(XENLOG_WARNING "Microcode: Parse error %d\n", rc);
+        return rc;
+    }
+
+    if ( !patch )
+    {
+        printk(XENLOG_WARNING "Microcode: No suitable patch found\n");
+        return -ENOENT;
+    }
+
+    spin_lock(&microcode_mutex);
+    ASSERT(microcode_cache == NULL);
+    microcode_cache = patch;
+    spin_unlock(&microcode_mutex);
 
     return rc;
 }
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 10:51:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 10:51:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826376.1240596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5NKs-0001G1-6z; Mon, 28 Oct 2024 10:50:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826376.1240596; Mon, 28 Oct 2024 10: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 1t5NKs-0001Fu-2b; Mon, 28 Oct 2024 10:50:58 +0000
Received: by outflank-mailman (input) for mailman id 826376;
 Mon, 28 Oct 2024 10:50: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5NKq-0001Fj-V8
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 10:50:56 +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 811b69cc-951a-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 11:50:54 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-539f2b95775so4717330e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 03:50:54 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f029651sm365739266b.60.2024.10.28.03.50.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 03:50:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 811b69cc-951a-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730112653; x=1730717453; 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=ytHLxOUBQj7jo0oLw5RmhEIuDi3qpemw2Zv/CHplmKA=;
        b=S4+SBvmKaO5mQw7mvDYO+g2BMKT7zg971XY+UtiJDmM8VIugwzMNaJgIkzOBcCKmQM
         IE4GL5RIiv3mawj8mwmdDuzCuadsQxGTur/cxu8CUD0HNWTGm9Iu2VxgipvGw3HXuzXY
         GuNFoLBJVywrNkIKbY07Z9CWivaQO8wxsjS3GTkgxcIYg3h98z7T9uaBE/DBVlJKkJpL
         inzTyRJ3tkd55jitfyYXDLyDMichu2MF2+FYeNIBChjqmnc1id45Cphxp4+9eQNAaWXl
         zPcFkpQWO46u8WLzTixm1Ad/ocjypi/PMzkA0YHmqMxF0xznO5C1xIUtL9k6qBaLnmMf
         r6zQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730112653; x=1730717453;
        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=ytHLxOUBQj7jo0oLw5RmhEIuDi3qpemw2Zv/CHplmKA=;
        b=v40VvTDYBM3/AabH+3lD/7+pNPsisBIVXVcOQ/QJFlWLJ71gW4Z6kmUQp+jpRjIFxD
         I+yVXEnezl3dfWZfxF87qq6n7yrbjddT6Thevn66fsrIZiwRXL6VlxnHPb4sH632MrEZ
         0SJRwjZM/+ecp5Ila/lWSPEO18UcdA3skVGo1s+YhqcH8eYlpAtFlHXbpam+SRst1aCt
         UQQ9pqbmnIVoVUWPEcb42nwTVq/RE+o/uww9FrH6lyFfU0B9gJlMStLvv/FVmu8Umv+v
         gjXD0g0+YxHf0zfasMKajFNGzpWtllOotgAvipEhBzJ3ZUhILz/L2aAQ4ZE4F9/JX9yX
         jclg==
X-Forwarded-Encrypted: i=1; AJvYcCXMXMOIGJK6ASS5kaTe2xqADMRYByvC4IiVTPW8v9kJqmSYId7AjR0VS81gS82t2US83avndwn26Fo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxQyvRCVtL8PqZO7YAEq3QvY/xqwRniFVPnCJD6ZhPAlj7oOfzK
	fzAU4yuct2qZRhCgmi3HI4cmJz5g+ImhIaY8XopwTjEqn0Ag1jU6iBRIm4sSPg==
X-Google-Smtp-Source: AGHT+IH6H480UToRT5skdU7b9KFYxiGIAXioLXer99WzFv7f1NTumW6txNein21IzhJbsTRD/umh0w==
X-Received: by 2002:a05:6512:b82:b0:53b:154c:f75d with SMTP id 2adb3069b0e04-53b348dc826mr5731088e87.31.1730112653383;
        Mon, 28 Oct 2024 03:50:53 -0700 (PDT)
Message-ID: <311e38eb-4d4a-44a1-9ae1-db40a79c9698@suse.com>
Date: Mon, 28 Oct 2024 11:50:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
To: Juergen Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.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: <20241023131005.32144-4-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23.10.2024 15:10, Juergen Gross wrote:
> Add a new domctl sub-function to get data of a domain having changed
> state (this is needed by Xenstore).
> 
> The returned state just contains the domid, the domain unique id,
> and some flags (existing, shutdown, dying).
> 
> In order to enable Xenstore stubdom being built for multiple Xen
> versions, make this domctl stable.  For stable domctls the
> interface_version is specific to the respective domctl op and it is an
> in/out parameter: On input the caller is specifying the desired version
> of the op, while on output the hypervisor will return the used version
> (this will be at max the caller supplied version, but might be lower in
> case the hypervisor doesn't support this version).
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V1:
> - use a domctl subop for the new interface (Jan Beulich)

Just as a preliminary reply: With Andrew's stabilization plans I'm not
sure this, in particular including ...

> @@ -1236,7 +1237,37 @@ struct xen_domctl_dt_overlay {
>  };
>  #endif
>  
> +/*
> + * XEN_DOMCTL_get_domain_state (stable interface)
> + *
> + * Get state information of a domain.
> + *
> + * In case domain is DOMID_INVALID, return information about a domain having
> + * changed state and reset the state change indicator for that domain. This
> + * function is usable only by a domain having registered the VIRQ_DOM_EXC
> + * event (normally Xenstore).
> + *
> + * Supported interface versions: 0x00000000
> + */
> +#define XEN_DOMCTL_GETDOMSTATE_VERS_MAX    0
> +struct xen_domctl_get_domain_state {
> +    domid_t domid;
> +    uint16_t state;
> +#define XEN_DOMCTL_GETDOMSTATE_STATE_EXIST     0x0001  /* Domain is existing. */
> +#define XEN_DOMCTL_GETDOMSTATE_STATE_SHUTDOWN  0x0002  /* Shutdown finished. */
> +#define XEN_DOMCTL_GETDOMSTATE_STATE_DYING     0x0004  /* Domain dying. */
> +    uint32_t pad1;           /* Returned as 0. */
> +    uint64_t unique_id;      /* Unique domain identifier. */
> +    uint64_t pad2[6];        /* Returned as 0. */
> +};
> +
>  struct xen_domctl {
> +/*
> + * Stable domctl ops:
> + * interface_version is per cmd, hypervisor can support multiple versions
> + * and will return used version (at max caller supplied value) in
> + * interface_version on return.
> + */

... this (ab)use of the interface version, is the way to go. I think
we want a brand new hypercall, with stability just like most other
hypercalls have it. Backwards-incompatible interface changes then
simply aren't allowed (as in: require a new sub-op instead).

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 11:03:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 11:03:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826382.1240605 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5NWS-00035p-61; Mon, 28 Oct 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 826382.1240605; Mon, 28 Oct 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 1t5NWS-00035i-3I; Mon, 28 Oct 2024 11:02:56 +0000
Received: by outflank-mailman (input) for mailman id 826382;
 Mon, 28 Oct 2024 11:02: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=owaa=RY=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t5NWR-00035c-GE
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 11:02:55 +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 2dd9ea39-951c-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 12:02:53 +0100 (CET)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c94c4ad9d8so5232452a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 04:02:53 -0700 (PDT)
Received: from ?IPV6:2003:e5:8706:5100:ddd3:fe18:d0ae:c30d?
 (p200300e587065100ddd3fe18d0aec30d.dip0.t-ipconnect.de.
 [2003:e5:8706:5100:ddd3:fe18:d0ae:c30d])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm3070057a12.70.2024.10.28.04.02.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 04:02:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2dd9ea39-951c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730113373; x=1730718173; darn=lists.xenproject.org;
        h=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=4kat/VnG3poqFuN3yT8csYObH4SFvwiwwMJMO+ljS+Q=;
        b=NC7nZwjISdW/dWtlPYtQTZ3tXrRcCOF2+XKX0Ym5BuW/w/zxHW5Je0Db3GC+qZFgZI
         xO1pjrsKuCKFDRjcFY+Sg5julPWfc8ra8ZXfC0YQKbaFrDQo7mh3qtw7uim92La1bkfL
         J6kMfAtQdHXa79JJrQM1p+GIF2WDQWkRY0DSojGhkNtFZGVhjggszrAZ+wa1aoMfqb3z
         LQkFhZD9RecG6/toc/VrDHAafsJ/u0O6EzutMoOzVlPx1WFb6tFn1M9sMfQOL7yW2XQd
         IpELuJObJ3OXLUNvvFiwzCRlLff0hQuDc/hjaZtdfDcF3dU2VwrcVfxjiWGcSawuQK26
         JNBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730113373; x=1730718173;
        h=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=4kat/VnG3poqFuN3yT8csYObH4SFvwiwwMJMO+ljS+Q=;
        b=L03vZJniJjnyPGlgiR3QXiyBRBXO11M2OYzAq351L39Iv/0QvlV+A2EztFRLwEkA1d
         34xDdNPNrUv0tl5S35ZMPpAKI4H3euzVRxnBkaqehMTJF0Lrt6CKmENO0zpVT2RJfX5O
         MWR4FxvKNE8z2xTYRNn9geOCKuS2Of0kdh40Rzg+Z10I6Bz2LUZd8yVoskVRK7FhE5kD
         wbLoj9YyEENIGnTb6/j/1opZrIAx/99oJNmrDUuF7AMGuiKEXnuPxYhB+VTFeGUtHXp3
         qMv9gt/VA7Pa2P0l0bf/YKubr2rfnYUBHDFa9t+LCYnBIn5Jbj+6X/5uAPYD7V20NuZD
         W0mw==
X-Forwarded-Encrypted: i=1; AJvYcCUKms3o1r17cHGjjIe2qdMQ9LfLibJcgktyCkZAPDHvsf9W7bGP0icEQifa1W/IXifoz1+qO0iXmv8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyDfWcsNW0BkTMhl1iNfmGFK3l5/6e7R3o5lu6fPXQHY/y0Xu82
	5hwfxschbt7pBfwGDMq4svtks4n3YfQtIqGhpVTD8TjR5IGtn43uAKIa5XLlp08=
X-Google-Smtp-Source: AGHT+IFUyIdGxEHr5OBhslOytwB67noSGHQuKYk/dkC/GbasMvpvN39IedB0TMgvbIsTFw1+XdGqoA==
X-Received: by 2002:a05:6402:5107:b0:5c8:ae9e:baba with SMTP id 4fb4d7f45d1cf-5cbbf8868bbmr6218148a12.2.1730113372665;
        Mon, 28 Oct 2024 04:02:52 -0700 (PDT)
Message-ID: <5ba0d19d-63c8-4224-b9f9-75ef75f0a332@suse.com>
Date: Mon, 28 Oct 2024 12:02:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
 <311e38eb-4d4a-44a1-9ae1-db40a79c9698@suse.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <311e38eb-4d4a-44a1-9ae1-db40a79c9698@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------MYBdebw1B2ki7ZEph0Zy4b6p"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------MYBdebw1B2ki7ZEph0Zy4b6p
Content-Type: multipart/mixed; boundary="------------BpkG8iKnQMpNgdXsm04cr75i";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Message-ID: <5ba0d19d-63c8-4224-b9f9-75ef75f0a332@suse.com>
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.com>
 <311e38eb-4d4a-44a1-9ae1-db40a79c9698@suse.com>
In-Reply-To: <311e38eb-4d4a-44a1-9ae1-db40a79c9698@suse.com>
Autocrypt-Gossip: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJ3BBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AAIQkQoDSui/t3IH4WIQQ+pJkfkcoLMCa4X6CgNK6L+3cgfgn7AJ9DmMd0SMJE
 ePbc7/m22D2v04iu7ACffXTdZQhNl557tJuDXZSBxDmW/tLOwU0EWTecRBAIAIK5OMKMU5R2
 Lk2bbjgX7vyQuCFFyKf9rC/4itNwhYWFSlKzVj3WJBDsoi2KvPm7AI+XB6NIkNAkshL5C0kd
 pcNd5Xo0jRR5/WE/bT7LyrJ0OJWS/qUit5eNNvsO+SxGAk28KRa1ieVLeZi9D03NL0+HIAtZ
 tecfqwgl3Y72UpLUyt+r7LQhcI/XR5IUUaD4C/chB4Vq2QkDKO7Q8+2HJOrFIjiVli4lU+Sf
 OBp64m//Y1xys++Z4ODoKh7tkh5DxiO3QBHG7bHK0CSQsJ6XUvPVYubAuy1XfSDzSeSBl//C
 v78Fclb+gi9GWidSTG/4hsEzd1fY5XwCZG/XJJY9M/sAAwUH/09Ar9W2U1Qm+DwZeP2ii3Ou
 14Z9VlVVPhcEmR/AFykL9dw/OV2O/7cdi52+l00reUu6Nd4Dl8s4f5n8b1YFzmkVVIyhwjvU
 jxtPyUgDOt6DRa+RaDlXZZmxQyWcMv2anAgYWGVszeB8Myzsw8y7xhBEVV1S+1KloCzw4V8Z
 DSJrcsZlyMDoiTb7FyqxwQnM0f6qHxWbmOOnbzJmBqpNpFuDcz/4xNsymJylm6oXiucHQBAP
 Xb/cE1YNHpuaH4SRhIxwQilCYEznWowQphNAbJtEKOmcocY7EbSt8VjXTzmYENkIfkrHRyXQ
 dUm5AoL51XZljkCqNwrADGkTvkwsWSvCSQQYEQIACQUCWTecRAIbDAAKCRCgNK6L+3cgfuef
 AJ9wlZQNQUp0KwEf8Tl37RmcxCL4bQCcC5alCSMzUBJ5DBIcR4BY+CyQFAs=

--------------BpkG8iKnQMpNgdXsm04cr75i
Content-Type: multipart/mixed; boundary="------------Os0A5I8ffzdpzARQCqmbNbZ0"

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

T24gMjguMTAuMjQgMTE6NTAsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAyMy4xMC4yMDI0
IDE1OjEwLCBKdWVyZ2VuIEdyb3NzIHdyb3RlOg0KPj4gQWRkIGEgbmV3IGRvbWN0bCBzdWIt
ZnVuY3Rpb24gdG8gZ2V0IGRhdGEgb2YgYSBkb21haW4gaGF2aW5nIGNoYW5nZWQNCj4+IHN0
YXRlICh0aGlzIGlzIG5lZWRlZCBieSBYZW5zdG9yZSkuDQo+Pg0KPj4gVGhlIHJldHVybmVk
IHN0YXRlIGp1c3QgY29udGFpbnMgdGhlIGRvbWlkLCB0aGUgZG9tYWluIHVuaXF1ZSBpZCwN
Cj4+IGFuZCBzb21lIGZsYWdzIChleGlzdGluZywgc2h1dGRvd24sIGR5aW5nKS4NCj4+DQo+
PiBJbiBvcmRlciB0byBlbmFibGUgWGVuc3RvcmUgc3R1YmRvbSBiZWluZyBidWlsdCBmb3Ig
bXVsdGlwbGUgWGVuDQo+PiB2ZXJzaW9ucywgbWFrZSB0aGlzIGRvbWN0bCBzdGFibGUuICBG
b3Igc3RhYmxlIGRvbWN0bHMgdGhlDQo+PiBpbnRlcmZhY2VfdmVyc2lvbiBpcyBzcGVjaWZp
YyB0byB0aGUgcmVzcGVjdGl2ZSBkb21jdGwgb3AgYW5kIGl0IGlzIGFuDQo+PiBpbi9vdXQg
cGFyYW1ldGVyOiBPbiBpbnB1dCB0aGUgY2FsbGVyIGlzIHNwZWNpZnlpbmcgdGhlIGRlc2ly
ZWQgdmVyc2lvbg0KPj4gb2YgdGhlIG9wLCB3aGlsZSBvbiBvdXRwdXQgdGhlIGh5cGVydmlz
b3Igd2lsbCByZXR1cm4gdGhlIHVzZWQgdmVyc2lvbg0KPj4gKHRoaXMgd2lsbCBiZSBhdCBt
YXggdGhlIGNhbGxlciBzdXBwbGllZCB2ZXJzaW9uLCBidXQgbWlnaHQgYmUgbG93ZXIgaW4N
Cj4+IGNhc2UgdGhlIGh5cGVydmlzb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgdmVyc2lvbiku
DQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29t
Pg0KPj4gLS0tDQo+PiBWMToNCj4+IC0gdXNlIGEgZG9tY3RsIHN1Ym9wIGZvciB0aGUgbmV3
IGludGVyZmFjZSAoSmFuIEJldWxpY2gpDQo+IA0KPiBKdXN0IGFzIGEgcHJlbGltaW5hcnkg
cmVwbHk6IFdpdGggQW5kcmV3J3Mgc3RhYmlsaXphdGlvbiBwbGFucyBJJ20gbm90DQo+IHN1
cmUgdGhpcywgaW4gcGFydGljdWxhciBpbmNsdWRpbmcgLi4uDQo+IA0KPj4gQEAgLTEyMzYs
NyArMTIzNywzNyBAQCBzdHJ1Y3QgeGVuX2RvbWN0bF9kdF9vdmVybGF5IHsNCj4+ICAgfTsN
Cj4+ICAgI2VuZGlmDQo+PiAgIA0KPj4gKy8qDQo+PiArICogWEVOX0RPTUNUTF9nZXRfZG9t
YWluX3N0YXRlIChzdGFibGUgaW50ZXJmYWNlKQ0KPj4gKyAqDQo+PiArICogR2V0IHN0YXRl
IGluZm9ybWF0aW9uIG9mIGEgZG9tYWluLg0KPj4gKyAqDQo+PiArICogSW4gY2FzZSBkb21h
aW4gaXMgRE9NSURfSU5WQUxJRCwgcmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IGEgZG9tYWlu
IGhhdmluZw0KPj4gKyAqIGNoYW5nZWQgc3RhdGUgYW5kIHJlc2V0IHRoZSBzdGF0ZSBjaGFu
Z2UgaW5kaWNhdG9yIGZvciB0aGF0IGRvbWFpbi4gVGhpcw0KPj4gKyAqIGZ1bmN0aW9uIGlz
IHVzYWJsZSBvbmx5IGJ5IGEgZG9tYWluIGhhdmluZyByZWdpc3RlcmVkIHRoZSBWSVJRX0RP
TV9FWEMNCj4+ICsgKiBldmVudCAobm9ybWFsbHkgWGVuc3RvcmUpLg0KPj4gKyAqDQo+PiAr
ICogU3VwcG9ydGVkIGludGVyZmFjZSB2ZXJzaW9uczogMHgwMDAwMDAwMA0KPj4gKyAqLw0K
Pj4gKyNkZWZpbmUgWEVOX0RPTUNUTF9HRVRET01TVEFURV9WRVJTX01BWCAgICAwDQo+PiAr
c3RydWN0IHhlbl9kb21jdGxfZ2V0X2RvbWFpbl9zdGF0ZSB7DQo+PiArICAgIGRvbWlkX3Qg
ZG9taWQ7DQo+PiArICAgIHVpbnQxNl90IHN0YXRlOw0KPj4gKyNkZWZpbmUgWEVOX0RPTUNU
TF9HRVRET01TVEFURV9TVEFURV9FWElTVCAgICAgMHgwMDAxICAvKiBEb21haW4gaXMgZXhp
c3RpbmcuICovDQo+PiArI2RlZmluZSBYRU5fRE9NQ1RMX0dFVERPTVNUQVRFX1NUQVRFX1NI
VVRET1dOICAweDAwMDIgIC8qIFNodXRkb3duIGZpbmlzaGVkLiAqLw0KPj4gKyNkZWZpbmUg
WEVOX0RPTUNUTF9HRVRET01TVEFURV9TVEFURV9EWUlORyAgICAgMHgwMDA0ICAvKiBEb21h
aW4gZHlpbmcuICovDQo+PiArICAgIHVpbnQzMl90IHBhZDE7ICAgICAgICAgICAvKiBSZXR1
cm5lZCBhcyAwLiAqLw0KPj4gKyAgICB1aW50NjRfdCB1bmlxdWVfaWQ7ICAgICAgLyogVW5p
cXVlIGRvbWFpbiBpZGVudGlmaWVyLiAqLw0KPj4gKyAgICB1aW50NjRfdCBwYWQyWzZdOyAg
ICAgICAgLyogUmV0dXJuZWQgYXMgMC4gKi8NCj4+ICt9Ow0KPj4gKw0KPj4gICBzdHJ1Y3Qg
eGVuX2RvbWN0bCB7DQo+PiArLyoNCj4+ICsgKiBTdGFibGUgZG9tY3RsIG9wczoNCj4+ICsg
KiBpbnRlcmZhY2VfdmVyc2lvbiBpcyBwZXIgY21kLCBoeXBlcnZpc29yIGNhbiBzdXBwb3J0
IG11bHRpcGxlIHZlcnNpb25zDQo+PiArICogYW5kIHdpbGwgcmV0dXJuIHVzZWQgdmVyc2lv
biAoYXQgbWF4IGNhbGxlciBzdXBwbGllZCB2YWx1ZSkgaW4NCj4+ICsgKiBpbnRlcmZhY2Vf
dmVyc2lvbiBvbiByZXR1cm4uDQo+PiArICovDQo+IA0KPiAuLi4gdGhpcyAoYWIpdXNlIG9m
IHRoZSBpbnRlcmZhY2UgdmVyc2lvbiwgaXMgdGhlIHdheSB0byBnby4gSSB0aGluaw0KPiB3
ZSB3YW50IGEgYnJhbmQgbmV3IGh5cGVyY2FsbCwgd2l0aCBzdGFiaWxpdHkganVzdCBsaWtl
IG1vc3Qgb3RoZXINCj4gaHlwZXJjYWxscyBoYXZlIGl0LiBCYWNrd2FyZHMtaW5jb21wYXRp
YmxlIGludGVyZmFjZSBjaGFuZ2VzIHRoZW4NCj4gc2ltcGx5IGFyZW4ndCBhbGxvd2VkIChh
cyBpbjogcmVxdWlyZSBhIG5ldyBzdWItb3AgaW5zdGVhZCkuDQoNCk9rYXksIHNvIGJhY2sg
dG8gbXkgaW5pdGlhbCBSRkMgdmFyaWFudCB0aGVuLiA6LSkNCg0KQW5kcmV3LCBjYW4geW91
IGNvbmZpcm0geW91J2QgcHJlZmVyIHRoYXQgcm91dGU/DQoNCg0KSnVlcmdlbg0K
--------------Os0A5I8ffzdpzARQCqmbNbZ0
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------Os0A5I8ffzdpzARQCqmbNbZ0--

--------------BpkG8iKnQMpNgdXsm04cr75i--

--------------MYBdebw1B2ki7ZEph0Zy4b6p
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/Ey8FAmcfb1sFAwAAAAAACgkQsN6d1ii/Ey9f
dwf+JdDMUpid52rpHVlLUMK7nj5tmv6/Pg+pfwqk5/9icpoxvE3ULpvsz1VI8vH0nnow3T4EE6gC
ngTTO6xmqTRsvcFifRzE4rwqLU1YHOpmKipaMBsaVOO88Va4+uxPj0X+0Au22MTOtuexPQQJ3kfi
c7J5ku9IGMq9PRMGZz1GYv3A/iAApDTHH8coyX5nBwO1jpZ3/WsWuK9PPPVmHsrmtvfNrKTBU/nk
maZHHm4lRF5BUfHZLWcOEVuUWNVvwOb4elQ1dj+2X0i2osQT0xAQr47UIvYHKiStpZOdMDapPOPk
aBEswkI1uB6VZcOB2DlFhyNry+ERnOszdT2CjqGIFQ==
=XwwR
-----END PGP SIGNATURE-----

--------------MYBdebw1B2ki7ZEph0Zy4b6p--


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 11:03:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 11:03:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826383.1240615 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5NWZ-0003MS-Hi; Mon, 28 Oct 2024 11:03:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826383.1240615; Mon, 28 Oct 2024 11: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 1t5NWZ-0003MJ-Et; Mon, 28 Oct 2024 11:03:03 +0000
Received: by outflank-mailman (input) for mailman id 826383;
 Mon, 28 Oct 2024 11: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5NWY-0003Lr-HM
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 11:03:02 +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 3249564e-951c-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 12:03:00 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a9a0472306cso569762366b.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 04:03:00 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a08477bsm363585266b.201.2024.10.28.04.02.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 04:02:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3249564e-951c-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730113380; x=1730718180; 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=WAByFXb3f7Hl3lkdanUntb4yVXIKNls1xWl2QUuTnTc=;
        b=WVxxtGh5sIBeb71bJAWxKSFXLOsvDPwMcgRJibs7uBvhQx0GBOjcIXQt/wMup37BOG
         2iI9RJbmXmaiW3r0DxBtyi0QikDH4R6iR56bwi97FOMM2m76cRLuvkJxeOIHPcAhRmsu
         2x6P7jW28qzDm/hsPUuNwlxv2rQhzBa//uXbbkKJZE8trq4BANiPBv5iY86r0CTvT49n
         wuXeFdQkUHU6HJCQVDxnRT0v1Z34p2+JULFusVxPe18hFJBMP6+F1OtY7J6ei0k79f+a
         Qj9h4/EBBZLYD+m0GvVRWlpLFUWXUpqD8NymHIl+y4M8FkRUM6YkTjTMBSbz5Ov8432m
         jCag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730113380; x=1730718180;
        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=WAByFXb3f7Hl3lkdanUntb4yVXIKNls1xWl2QUuTnTc=;
        b=CrP46h+bzGjTqSSPtvWjyvq3W6tBFU9pjfTgqIP6GrqzxoSR+4vWlgtiVesLhGB4Dc
         LwnJV+9gpAOXwZ+QSqzYJUqxWZrKYdZMkJ887/PngPJzYZRUzz36ZKQPA9e77qzJo7re
         niUitgMGpNU9G/dLJybmLvX1islQNVdIlPklEKrKc4/3+1r+tRGkGsjjTemRklEqf4Dn
         Lh/TazA8cNClCg/tb3hk1bHFFhnOwN+OWFqWoO4asmRJnj4TJJB9rzYjGIhRxpR6eEqn
         bhT3vaGXi9RLdNak0DfbXkI0RmkiIYoJKxzf6zThqYtJRgW+gXt9FJs8RiuDfm6aBGtr
         NS2A==
X-Gm-Message-State: AOJu0Yyyy/jMhgRXU5Oq/mijzD8oXkuUgXq+NObOejst+Fto+IpKFvRG
	CO9NLgUPvtZdwoAqSYgYZKlmvx7ISb6U6/vE5300kAc5twPn6F2HVNeEXTl0cA==
X-Google-Smtp-Source: AGHT+IG48sEgbqHIeDPZxMM014Qi/e5HgJ0fVwUzOQ5MGW5bsi/gglRFehYa6zpGOUj2Jm7N+yj5Zw==
X-Received: by 2002:a17:906:dc8f:b0:a9a:6dc:b39d with SMTP id a640c23a62f3a-a9de619e644mr660807666b.41.1730113380168;
        Mon, 28 Oct 2024 04:03:00 -0700 (PDT)
Message-ID: <b4f64b33-0ab9-4713-a722-687d393ed34f@suse.com>
Date: Mon, 28 Oct 2024 12:02:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Willi Junga <xenproject@ymy.be>,
 David Woodhouse <dwmw@amazon.co.uk>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <ZxZBocLV7eJUxK50@macbook.local>
 <f60d6bde-d694-4f26-8405-9d8cefcebd80@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: <f60d6bde-d694-4f26-8405-9d8cefcebd80@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21.10.2024 14:33, Andrew Cooper wrote:
> On 21/10/2024 12:57 pm, Roger Pau Monné wrote:
>> On Mon, Oct 21, 2024 at 12:10:14PM +0100, Andrew Cooper wrote:
>>> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
>>>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>>>> repurposed to contain part of the offset into the remapping table.  Previous to
>>>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>>>> table would match the vector.  Such logic was mandatory for end of interrupt to
>>>> work, since the vector field (even when not containing a vector) is used by the
>>>> IO-APIC to find for which pin the EOI must be performed.
>>>>
>>>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>>>> that the IO-APIC driver can translate pins into EOI handlers without having to
>>>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>>>> unconditionally when interrupt remapping is enabled, even if strictly it would
>>>> only be required for AMD-Vi.
>>>>
>>>> Reported-by: Willi Junga <xenproject@ymy.be>
>>>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>>>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> Yet more fallout from the multi-MSI work.  That really has been a giant
>>> source of bugs.
>>>
>>>> ---
>>>>  xen/arch/x86/io_apic.c | 47 ++++++++++++++++++++++++++++++++++++++++++
>>>>  1 file changed, 47 insertions(+)
>>>>
>>>> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
>>>> index e40d2f7dbd75..8856eb29d275 100644
>>>> --- a/xen/arch/x86/io_apic.c
>>>> +++ b/xen/arch/x86/io_apic.c
>>>> @@ -71,6 +71,22 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>>>>  
>>>>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>>>>  
>>>> +/*
>>>> + * Store the EOI handle when using interrupt remapping.
>>>> + *
>>>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
>>>> + * format repurposes the vector field to store the offset into the Interrupt
>>>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
>>>> + * longer matches the contents of the RTE vector field.  Add a translation
>>>> + * table so that directed EOI uses the value in the RTE vector field when
>>>> + * interrupt remapping is enabled.
>>>> + *
>>>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
>>>> + * when using the remapped format, but use the translation table uniformly in
>>>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
>>>> + */
>>>> +static unsigned int **apic_pin_eoi;
>>> I think we can get away with this being uint8_t rather than unsigned
>>> int, especially as we're allocating memory when not strictly necessary.
>>>
>>> The only sentinel value we use is IRQ_VECTOR_UNASSIGNED which is -1.
>>>
>>> Vector 0xff is strictly SPIV and not allocated for anything else, so can
>>> be reused as a suitable sentinel here.
>> The coding style explicitly discourages using fixed width types unless
>> it's strictly necessary, I assume the usage here would be covered by
>> Xen caching a value of a hardware register field that has a
>> fixed-width size.

Use "short" then?

> I'm >< this close to reverting that too.  It's not even self-consistent
> as written, nonsense in some cases, and is being used as a whipping
> stick to reject otherwise-ok patches, which is pure toxicity in the
> community.

I don't really mind reverting that part, if only ...

> Not to mention that this rule is in contradiction to MISRA, and there's
> no progress being made in that direction.
> 
> 
> All variables should be of an appropriate type.
> 
> Sometimes that's a fixed width type, and sometimes it's not.  (And this
> is what is impossible to dictate in CODING_STYLE.)

... "appropriate" was definable in some way. Prior to this addition to
the style it was easily possible (and happening increasingly often, iirc)
for two people to disagree about what's appropriate, blocking progress.
I'm therefore also not really happy with you describing this as "dictate".

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 11:05:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 11:05:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826395.1240625 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5NYj-0004Fu-Ug; Mon, 28 Oct 2024 11:05:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826395.1240625; Mon, 28 Oct 2024 11:05: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 1t5NYj-0004Fn-Rb; Mon, 28 Oct 2024 11:05:17 +0000
Received: by outflank-mailman (input) for mailman id 826395;
 Mon, 28 Oct 2024 11:05: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5NYi-0004Fh-Gf
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 11:05:16 +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 8211d2b0-951c-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 12:05:14 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c9362c26d8so9231520a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 04:05:14 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec7d16sm363645966b.21.2024.10.28.04.05.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 04:05:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8211d2b0-951c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730113514; x=1730718314; 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=06UglZcYj/tNi3yetEg36gQPxzYF1Rvk9OXvCK1uw9c=;
        b=SjS8c7XUs2G6tvr9+p7GqDWvqksh3499RqkeovPC8pmBzqddFYB0QQ72x5ZxTuSMNb
         HbXGfdTbqmgKyyVFSJHvk0TWfY7OVzeVjJLOOtsHDm6vnfms8r3t1HdidWD7vGWQ9yzl
         uemoZA26G6BhxUw7bDTG5r+KXtJGbK767vX1+zSMNEmvj7mdjPC5+LBxNy/SO+DSKr91
         oRhyM7aEcMTxm+NOYfq/WOG6cjLoTRDfyGm9rZpQ1YiEXFaPPjKDfnCCJr8oEh7LEjdu
         +Xe6sj1lbqU9M1vT2/2lOT6Vm/58ojASBskA7KRtDsdUH20Ne4/IZzPloyeTcL7BJkqa
         rqdA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730113514; x=1730718314;
        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=06UglZcYj/tNi3yetEg36gQPxzYF1Rvk9OXvCK1uw9c=;
        b=d6mQXgaCoq3UDBWnESUlsSZay3eerxxCAH+to9nUZ236j+Zjy9J4yus0F5VlyL2An9
         XmAE2kxbuAaGtLwhp3RvjRBc33WkhdZ+9ybwyH2PewHxxGNf9VuGy77zRK4uwsfrlGmZ
         1rIArXj+7T77erK6dwc/q0tWHSe+92HnzgRo9VTV3BWzZuZheQf4qAEsQ3uGjdLflZJ+
         oWeNLctLspzT0L4R9sAGslu5kcogyXuJEz/tHkaMoPViJKRB3Qg0S2HMYNhIZHSzSOVl
         ea+jbRUldmPArzGRiuiDLe8rWvXPsBvMRXq59ps3Qwekkpi2+Ieq8Phh1U+r/eB0+V/t
         IlDA==
X-Forwarded-Encrypted: i=1; AJvYcCUadXlJqLFJ6Gd0S7RhPYA5+65nYWeC7kiu4Ej8y+EnOU6gqb35b3iOPYD4EznLbhpE0V+Bjc5cVEE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwVUlI5l7UvM3u1flTPYvBfqGpExybbwI/aDeUsZbtGZsKD+H/g
	yeVoE22oM6eCwTPMx3lYC7S4BAf32bJFxu7fQNT3cZQ4xsrPuGtvd9xK58+D/A==
X-Google-Smtp-Source: AGHT+IHcJw72yYV3eZtN6Svlvt+TYVnBkDfgoDG30tDAGTSAHtEPT2HrD2bk5j0vQ0WCEoZzr3vD6w==
X-Received: by 2002:a17:907:1c92:b0:a99:f9fa:5c01 with SMTP id a640c23a62f3a-a9de391b292mr705852366b.32.1730113514137;
        Mon, 28 Oct 2024 04:05:14 -0700 (PDT)
Message-ID: <8f3dfb01-504d-4652-837b-f0a045d28ef9@suse.com>
Date: Mon, 28 Oct 2024 12:05:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Roger Pau Monne <roger.pau@citrix.com>
Cc: Willi Junga <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@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: <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21.10.2024 13:10, Andrew Cooper wrote:
> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>> repurposed to contain part of the offset into the remapping table.  Previous to
>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>> table would match the vector.  Such logic was mandatory for end of interrupt to
>> work, since the vector field (even when not containing a vector) is used by the
>> IO-APIC to find for which pin the EOI must be performed.
>>
>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>> that the IO-APIC driver can translate pins into EOI handlers without having to
>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>> unconditionally when interrupt remapping is enabled, even if strictly it would
>> only be required for AMD-Vi.
>>
>> Reported-by: Willi Junga <xenproject@ymy.be>
>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Yet more fallout from the multi-MSI work.  That really has been a giant
> source of bugs.

If there's a connection to the multi-MSI work (which I don't see), the Fixes:
tag would likely need adjusting.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 11:33:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 11:33:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826403.1240634 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5O0K-0000Zm-1s; Mon, 28 Oct 2024 11:33:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826403.1240634; Mon, 28 Oct 2024 11:33: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 1t5O0J-0000Zf-VQ; Mon, 28 Oct 2024 11:33:47 +0000
Received: by outflank-mailman (input) for mailman id 826403;
 Mon, 28 Oct 2024 11: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5O0I-0000ZZ-Iy
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 11:33:46 +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 7d1743da-9520-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 12:33:44 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a99e3b3a411so841969366b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 04:33:44 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a083efcsm366182266b.204.2024.10.28.04.33.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 04:33:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d1743da-9520-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730115224; x=1730720024; 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=2ltb/ntOICsWD6y5Dariq4HdHLR8v0gj+jkTg6p/59U=;
        b=de4bfMExltYB3biJtOi/ob40gb7eCgnQ4WEQLpY3gaYcn+6+2DX0FtXoZPQevPOa7P
         vkQQ//vl29d/tWUWmNWq8BHq2r4uPWhecxiVzugzGG+/kigf2mdXNHzIynfXeUwDB9v1
         PW96/WCJC1++8Qr005BGTCR/FobTQUnmLawN8K+mq6YLgGFJCa6qCpEQpLu1BxmizHg4
         MzdPb4bm1nXg5L3qbTTlRsrO1CL9nt++g+mCesVHWNyUroM9+/SgYtUytcNI7Y9Yl2OK
         il7Vn4OoWD6gCaylRRmelc28D2YrzIF3Z4XDqzU9mMxRQ4RDU2loRn558m9UqYUXoMU1
         1FKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730115224; x=1730720024;
        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=2ltb/ntOICsWD6y5Dariq4HdHLR8v0gj+jkTg6p/59U=;
        b=CTh0cwdxlGS4Ax7LYSgBJfT2FVL4QPl8xtW4n2YX7jSMfZAEpZQjCUbC1t48L717mp
         NJkJtA07j9qshpsMlzNpb77mNRYcOtyiBmBwa+1Tkcg7L4Hy/hud+clRt0XYbm40I1xM
         5ZzDD160AJWfIl8UR1dPAqqidKrh8cFtvboZ+wjbPuPsIKIUamUEdplkucjmfhP9HzqJ
         PzfjiXOx2Q6XUYnQyY4NPbv23yIy1jbVQpnrqQh2s0o44BAEsLpize9rjQMh8+9V/Q0Q
         R9amO/+5Yke4hTMgk1tEej8GiEIYTMNtytR5egm5kUtZ5m4g6Ab/xu0+bCijdornN1JK
         QkhA==
X-Forwarded-Encrypted: i=1; AJvYcCVtX+WCx9pUa2RK9k93KSfu/wdFiHq7AL8MPiMdQSkFrX7jH+38E6iX/L3+agwETlURO6zFPWd+EXI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwwQ9J1cMTaqRnTRryo0CpqV59q3wovVD3AlrLy0H8opRYNsyjQ
	fCQ5kaVTq57AGtrGWwGMF3Y7R0Uij9FgotHOlkJ9PSVynyAEG9Du6yGiCKsE2g==
X-Google-Smtp-Source: AGHT+IFaULAJG5JUVBvkp6B7FcNF7Zmc3G1bAFlvSoY3Q1ZPwGhosXv3WzsMWWryb531LcHZKsObAw==
X-Received: by 2002:a17:907:3187:b0:a9a:f19:8c2a with SMTP id a640c23a62f3a-a9ad197af28mr1389288666b.6.1730115223758;
        Mon, 28 Oct 2024 04:33:43 -0700 (PDT)
Message-ID: <abadac24-0392-4051-b6a2-08967272f1a1@suse.com>
Date: Mon, 28 Oct 2024 12:33:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241024154844.8652-1-roger.pau@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: <20241024154844.8652-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.10.2024 17:48, Roger Pau Monne wrote:
> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -71,6 +71,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>  
>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>  
> +/*
> + * Store the EOI handle when using interrupt remapping.
> + *
> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> + * format repurposes the vector field to store the offset into the Interrupt
> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> + * longer matches the contents of the RTE vector field.  Add a translation
> + * table so that directed EOI uses the value in the RTE vector field when
> + * interrupt remapping is enabled.
> + *
> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> + * when using the remapped format, but use the translation table uniformly in
> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> + *
> + * The matrix is accessed as [#io-apic][#pin].
> + */
> +static uint8_t **io_apic_pin_eoi;

Wasn't the conclusion from the v1 discussion that this needs to be a signed
type wider than 8 bits?

> @@ -298,6 +323,9 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>      /* Prefer the use of the EOI register if available */
>      if ( ioapic_has_eoi_reg(apic) )
>      {
> +        if ( io_apic_pin_eoi )
> +            vector = io_apic_pin_eoi[apic][pin];
> +
>          /* If vector is unknown, read it from the IO-APIC */
>          if ( vector == IRQ_VECTOR_UNASSIGNED )
>              vector = __ioapic_read_entry(apic, pin, true).vector;

In addition to what Andrew said here, for this comparison the make sense
...

> @@ -1022,7 +1050,20 @@ static void __init setup_IO_APIC_irqs(void)
>  
>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
>  
> +    if ( iommu_intremap )
> +    {
> +        io_apic_pin_eoi = xzalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
> +        BUG_ON(!io_apic_pin_eoi);
> +    }
> +
>      for (apic = 0; apic < nr_ioapics; apic++) {
> +        if ( iommu_intremap )
> +        {
> +            io_apic_pin_eoi[apic] = xzalloc_array(typeof(**io_apic_pin_eoi),
> +                                                  nr_ioapic_entries[apic]);
> +            BUG_ON(!io_apic_pin_eoi[apic]);
> +        }

... doesn't the array also need -1 (== IRQ_VECTOR_UNASSIGNED) filling,
rather than zero-filling?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 11:48:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 11:48:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826409.1240645 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5OEf-0002iO-8B; Mon, 28 Oct 2024 11:48:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826409.1240645; Mon, 28 Oct 2024 11:48: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 1t5OEf-0002iH-5X; Mon, 28 Oct 2024 11:48:37 +0000
Received: by outflank-mailman (input) for mailman id 826409;
 Mon, 28 Oct 2024 11:48: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=owpo=RY=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5OEe-0002iB-AO
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 11:48:36 +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 8f8530cc-9522-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 12:48:34 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4314c4cb752so42495085e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 04:48:34 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43193595470sm105903895e9.15.2024.10.28.04.48.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 04:48:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f8530cc-9522-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730116113; x=1730720913; 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=AqhKPSM5xXuNkzAtrPGMWoAWoIrp+3rMwKupZfOosL4=;
        b=WQ2bGXTvRON86uizdnfE+gfvnmhwlCGsnBEg21F78JUMJnoNwpJg9piptteA07ZUcF
         3Ry2lASR+afjV80xFd4UltNm+pC5AeA/k35H0Ics4UD4wvsSf4gpbyQxg2D1AgN/1tHX
         vuO6nK1ygQfnwUEd9yK2sYtrTwjAjPVEOauTI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730116113; x=1730720913;
        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=AqhKPSM5xXuNkzAtrPGMWoAWoIrp+3rMwKupZfOosL4=;
        b=T7MeJsSfH9fzBcBU549/BTburMbnE9P4z3jSwUmL9envY5/xb/syLwlsZaHrejnX0R
         flpGnCfjGAn8NHUkaHCLFVNStBoyFbj7E3X4tSdhQmh6mFC2Y6IICmcEuQmLzRyPRHl9
         gBgm4NZPQh63iEHv2F5AVUnUQt0AwU+iiR8PVuL2DVl9vXrSvmkaGWd9gb5v87PjU01x
         l4iaBtfvlONNSpFDxv1Q9+u/4VMpq16xOey6ftpwajqb+Sj3jDvZpk12o7AC4zT9NhoL
         PcJNQxnkSK3TifIfOafC5uL9Lt9DvF8Ja3IHkRGGO+OESLzJaBNcZ9TO9Vajdot+YKA0
         uPWg==
X-Gm-Message-State: AOJu0YyCdoXwy6n0cVC0eavUVqu14vUl0mLb9L9vRTqp/IMy1E76vNZB
	eJoTC6SMBtpvfLGPOkBRceFcFTyYjT2IPIgGMyDyHQ1yLZswqTA1e6pPJgP8soU8wbmuSA7IyXz
	T
X-Google-Smtp-Source: AGHT+IGjjq6kuwJwR17w7R3+QqZiR7ijGZIKUJiMjb+pTIi7caBpfjQK/pMvijDmePU5y/fuN7ve6w==
X-Received: by 2002:a05:600c:3ca3:b0:42c:b74c:d8c3 with SMTP id 5b1f17b1804b1-4319ad3032dmr68672515e9.32.1730116113450;
        Mon, 28 Oct 2024 04:48:33 -0700 (PDT)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH] tools/libxl: remove usage of VLA arrays
Date: Mon, 28 Oct 2024 12:48:31 +0100
Message-ID: <20241028114831.27487-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Clang 19 complains with the following error when building libxl:

libxl_utils.c:48:15: error: variable length array folded to constant array as an extension [-Werror,-Wgnu-folding-constant]
   48 |     char path[strlen("/local/domain") + 12];
      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Replace the usage of strlen() with ARRAY_SIZE(), which allows the literal
string length to be known at build time.  Note ARRAY_SIZE() accounts for the
NUL terminator while strlen() didn't, hence subtract 1 from the total size
calculation.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 tools/libs/light/libxl_utils.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_utils.c
index 10398a6c8611..b3f5e751cc3f 100644
--- a/tools/libs/light/libxl_utils.c
+++ b/tools/libs/light/libxl_utils.c
@@ -45,7 +45,7 @@ unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned
 char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid)
 {
     unsigned int len;
-    char path[strlen("/local/domain") + 12];
+    char path[ARRAY_SIZE("/local/domain") + 11];
     char *s;
 
     snprintf(path, sizeof(path), "/local/domain/%d/name", domid);
@@ -141,7 +141,7 @@ int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *ctx, const char *p,
 char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid)
 {
     unsigned int len;
-    char path[strlen("/local/pool") + 12];
+    char path[ARRAY_SIZE("/local/pool") + 11];
     char *s;
 
     snprintf(path, sizeof(path), "/local/pool/%d/name", poolid);
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 11:59:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 11:59:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826418.1240655 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5OOj-0004Z1-9n; Mon, 28 Oct 2024 11:59:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826418.1240655; Mon, 28 Oct 2024 11:59: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 1t5OOj-0004Yu-6y; Mon, 28 Oct 2024 11:59:01 +0000
Received: by outflank-mailman (input) for mailman id 826418;
 Mon, 28 Oct 2024 11: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=WnZV=RY=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5OOi-0004Yo-FM
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 11:59:00 +0000
Received: from mail-oo1-xc2e.google.com (mail-oo1-xc2e.google.com
 [2607:f8b0:4864:20::c2e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0371bd02-9524-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 12:58:59 +0100 (CET)
Received: by mail-oo1-xc2e.google.com with SMTP id
 006d021491bc7-5ec1ee251b8so1204311eaf.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 04:58:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0371bd02-9524-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730116737; x=1730721537; 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=ZB5w5jPqcBk6gV9hhuFmtBkUwDm3u8UHz4d/0yp+3u4=;
        b=LuxJX0hXtj7H0/DOl7ixiib+aryPsy25lc4IIQXGhzxp/zlrSnu4aDY6+mybzlYAMy
         61nk6XDAhlxW4xw+Ffhn7wSuRxV4TC+YzASowamHqcSFLnSqEdMXKR3hq3420iLh1xjt
         onsG8ilOH7zF4PwmEE7+25nhEmWhks/VgjxxI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730116737; x=1730721537;
        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=ZB5w5jPqcBk6gV9hhuFmtBkUwDm3u8UHz4d/0yp+3u4=;
        b=jPFdEKJfWKSqF1VnhZ/lIaQSvg1h5jiiFa/y6ZAoYuCVHYS0sH02saoZyVNl7wZNOt
         9lahTZTw8xPqDFKxCQSWHMU7yNgV+O3o+DNIvweKitWyqceOZQnn/9FmDIJZM/usEIHE
         g9vAfd5d63JgfAk6gel2JkkVS+dWwcuNGWxm581+MZklXAB4TE+4UoeYRqBc7ChDRUb4
         gKilKQj/fGQfuq444ntI0V0Za1tzJpV114ZSmS/V5CWCj6f4XuF7/Xt9BhKi/1wlHSO3
         Q2hJHhlpEJtQl5LfS48tG9BzCNR0S82bEQLQBDmopvTN3XGxYsNM+aS6AgCE6yw01x3q
         VXdA==
X-Gm-Message-State: AOJu0YxJw4dB7xA8oeYXStIL1XRp8axvgDPQ2hoVZ3geBfKZ1n/DsFK9
	ice6n91nQXSOCnah0hzY5CWlbqHvxrCcyKezuGIIidUDCSna091w/kOtP372aMeX6CBUe7lfS0r
	83LBuhaPhnnRr+s1sMXuIsNvv1q7dushkDrdnpA==
X-Google-Smtp-Source: AGHT+IEAjqTQtm60v/8Qqdmw3qFuuVUxOOcwQhN2MHJtmllRErOlYEniDteVUkhEYJzZm9u8d4m7uoLw1hkXZ1qv8xQ=
X-Received: by 2002:a05:6820:610:b0:5d6:ab0:b9a6 with SMTP id
 006d021491bc7-5ec22ec2c73mr4868380eaf.4.1730116735940; Mon, 28 Oct 2024
 04:58:55 -0700 (PDT)
MIME-Version: 1.0
References: <20241028114831.27487-1-roger.pau@citrix.com>
In-Reply-To: <20241028114831.27487-1-roger.pau@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 28 Oct 2024 11:58:45 +0000
Message-ID: <CACHz=Zh8exkDyYpNzwoef5i=ZevAAiDtgssxqAtB+0DYHzyjsA@mail.gmail.com>
Subject: Re: [PATCH] tools/libxl: remove usage of VLA arrays
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Anthony PERARD <anthony.perard@vates.tech>, 
	Juergen Gross <jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 28, 2024 at 11:48=E2=80=AFAM Roger Pau Monne <roger.pau@citrix.=
com> wrote:
>
> Clang 19 complains with the following error when building libxl:
>
> libxl_utils.c:48:15: error: variable length array folded to constant arra=
y as an extension [-Werror,-Wgnu-folding-constant]
>    48 |     char path[strlen("/local/domain") + 12];
>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Replace the usage of strlen() with ARRAY_SIZE(), which allows the literal
> string length to be known at build time.  Note ARRAY_SIZE() accounts for =
the
> NUL terminator while strlen() didn't, hence subtract 1 from the total siz=
e
> calculation.
>
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> ---
>  tools/libs/light/libxl_utils.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_util=
s.c
> index 10398a6c8611..b3f5e751cc3f 100644
> --- a/tools/libs/light/libxl_utils.c
> +++ b/tools/libs/light/libxl_utils.c
> @@ -45,7 +45,7 @@ unsigned long libxl_get_required_shadow_memory(unsigned=
 long maxmem_kb, unsigned
>  char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid)
>  {
>      unsigned int len;
> -    char path[strlen("/local/domain") + 12];
> +    char path[ARRAY_SIZE("/local/domain") + 11];
>      char *s;
>
>      snprintf(path, sizeof(path), "/local/domain/%d/name", domid);
> @@ -141,7 +141,7 @@ int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *c=
tx, const char *p,
>  char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid)
>  {
>      unsigned int len;
> -    char path[strlen("/local/pool") + 12];
> +    char path[ARRAY_SIZE("/local/pool") + 11];
>      char *s;
>
>      snprintf(path, sizeof(path), "/local/pool/%d/name", poolid);

Minor: why not sizeof instead of ARRAY_SIZE ?

Not a regression, but looking at final strings and size added, it
looks like the numbers should be more uint16_t than uint32_t.
Maybe we want something like

    char path[sizeof("/local/pool//name") + 12];

BTW,

Reviewed-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:04:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:04:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826426.1240665 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5OTd-0006Bp-Vf; Mon, 28 Oct 2024 12:04:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826426.1240665; Mon, 28 Oct 2024 12:04: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 1t5OTd-0006Bi-Sl; Mon, 28 Oct 2024 12:04:05 +0000
Received: by outflank-mailman (input) for mailman id 826426;
 Mon, 28 Oct 2024 12:04: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5OTc-0006Bc-C8
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:04:04 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b95355c9-9524-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:04:03 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c9454f3bfaso4966380a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 05:04:03 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb62c14c4sm3116471a12.44.2024.10.28.05.04.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 05:04:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b95355c9-9524-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730117043; x=1730721843; 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=BYGJQQKJW3V1Myv3BMAi7AnEWVSCsWC1Vq4yZjb50UM=;
        b=IapitQek4xw5j1Hj+JhZ51vTkEpBdk7rxiFUBtbWCPZgJR/tcKoAC8vIJPQDF/mvJ8
         fPzLOzl+3wsrgQK/fkL1YhAx53iffD/4OYjK+TtZySKXM24kYfLqv76EzJOR2w3H8Mh/
         iayzuM5kngPYHwZrhJyNp/Ee+SJ716zwllmk0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730117043; x=1730721843;
        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=BYGJQQKJW3V1Myv3BMAi7AnEWVSCsWC1Vq4yZjb50UM=;
        b=U8Yopn29eg4B1m8RB4VkviKumNTM2kDlt/c7zwe7WCprSkBTEpvo6fMKGMAw2lM5fI
         HUHEjvlRJA8i5vgf4NJDVlpneWkLSFeFxBuWH34Xl7/XPoBKdibOFavu5fLpK4A5tQsf
         OuzvIAjrFGoT9irnpDTLicgdbPkm4jnV7Aiux+oardK3SshU99jz87i0PDnEfoIjinbe
         8uVQ+gLFPYuJ/9JRj3GEVJksvI11M/VwvtjrXCWlU6dMxavsY+5L1lEQ9xVU9YVv2oZ8
         WjmVwNy9ca6qpFJ5X6lzAIhbBjqrazHJNW8gfOzynfnS09afRn+gRBSj6y8nhvdG64h9
         EH6A==
X-Forwarded-Encrypted: i=1; AJvYcCWJ/vlS3HyindJVSPz9pgox1nQiw27MNErPzYemN+wCK/tkHC1/F7n/ItHYjeqYW2w+e8h8cmACy90=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyjY3qQCk75JfBekHx6Q7QvGgumwHaIj7vgiJend7aHcp7TXawf
	cyGYqQwkqItiX83sddXUkY6J0gGBEqjN0zQDdaemjcNN/Lwaf3wpUfqDxyy1t84=
X-Google-Smtp-Source: AGHT+IHCh01kmogZbd2xD0zcSRfc887nNpmdozP1Ufh4F/boo5CAPeWXf0zebEWZiHyhRFfTi9NdVA==
X-Received: by 2002:a05:6402:5203:b0:5c2:6d16:ad5e with SMTP id 4fb4d7f45d1cf-5cbbf8c616fmr5711578a12.19.1730117042690;
        Mon, 28 Oct 2024 05:04:02 -0700 (PDT)
Message-ID: <3828ba9f-9bc8-4b65-a42f-b67ef061be52@citrix.com>
Date: Mon, 28 Oct 2024 12:03:59 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/libxl: remove usage of VLA arrays
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>
References: <20241028114831.27487-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241028114831.27487-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28/10/2024 11:48 am, Roger Pau Monne wrote:
> Clang 19 complains with the following error when building libxl:
>
> libxl_utils.c:48:15: error: variable length array folded to constant array as an extension [-Werror,-Wgnu-folding-constant]
>    48 |     char path[strlen("/local/domain") + 12];
>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Replace the usage of strlen() with ARRAY_SIZE(), which allows the literal
> string length to be known at build time.  Note ARRAY_SIZE() accounts for the
> NUL terminator while strlen() didn't, hence subtract 1 from the total size
> calculation.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
>  tools/libs/light/libxl_utils.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_utils.c
> index 10398a6c8611..b3f5e751cc3f 100644
> --- a/tools/libs/light/libxl_utils.c
> +++ b/tools/libs/light/libxl_utils.c
> @@ -45,7 +45,7 @@ unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned
>  char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid)
>  {
>      unsigned int len;
> -    char path[strlen("/local/domain") + 12];
> +    char path[ARRAY_SIZE("/local/domain") + 11];
>      char *s;
>  
>      snprintf(path, sizeof(path), "/local/domain/%d/name", domid);
> @@ -141,7 +141,7 @@ int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *ctx, const char *p,
>  char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid)
>  {
>      unsigned int len;
> -    char path[strlen("/local/pool") + 12];
> +    char path[ARRAY_SIZE("/local/pool") + 11];
>      char *s;
>  
>      snprintf(path, sizeof(path), "/local/pool/%d/name", poolid);

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

Although I have a minor preference for sizeof() as suggested by Frediano.

Can fix on commit, if you're happy?

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:05:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:05:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826431.1240674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5OUp-0006jr-8Y; Mon, 28 Oct 2024 12:05:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826431.1240674; Mon, 28 Oct 2024 12: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 1t5OUp-0006jk-5W; Mon, 28 Oct 2024 12:05:19 +0000
Received: by outflank-mailman (input) for mailman id 826431;
 Mon, 28 Oct 2024 12:05: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5OUn-0006jc-8j
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:05:17 +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 e4be23d5-9524-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:05:16 +0100 (CET)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c94861ee25so2410996a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 05:05:16 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb62c42c7sm3113579a12.51.2024.10.28.05.05.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 05:05:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e4be23d5-9524-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730117116; x=1730721916; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=aZpevYCcbbF/l6J/XaEuwR4BPCJEXWWyXhTQ3y0eSLk=;
        b=GWjYOdC7fHHw0dsScSxm3y/WOvZzACmFm+l48gJvzd2o56x7xxSo1BOtxAASSqntVk
         X7Tgz5HrDg6uudd043fKZeQvytaUXGARDN0FOHPGS4iBcSEq8Tk2VhcJD3MPd+I+lNHA
         wym3SWn271QRdWarw7lIgWNxK0/8cek5SEvOU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730117116; x=1730721916;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=aZpevYCcbbF/l6J/XaEuwR4BPCJEXWWyXhTQ3y0eSLk=;
        b=LqU4xGISLcnrnfowqut0SOrH5uVTQ7ErNd61bm2kv2qAIPa+9MuMV4TuxcOfoWcjPL
         PA693fRXs02G1paBxUboNXshVEmlylRgPwoQPMLvazPa25Gh3Dc6hgAE2mcgWrGXIvvk
         nzeWMbLSypiNx/hHi2gFX12zufN5YS9idFV3metkWT1zruRG00P808m/sBFNmiuFlQZH
         mc9kHmUiiLlf/saqmZuvnRnNSpSSQgN3qLvWmmZfTl4MTEyVN6viLVovOHXA1Cbv5Qgl
         whpZOkQmrYUsp0W4naFRQoAgZw+wJvOPjdMUvkipSQ05KrUqtamKs09wUUuOJTvqo9S2
         vRng==
X-Forwarded-Encrypted: i=1; AJvYcCWsRidsxeffcgF1S7uOqlhB2jB+ybFWMFIRVIPQlS5VtZcQN5RRCIcrAu3219XpNiRqQ7oMkRr8IwM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywqy67CVrV5fbG1n0KEd7XYOMFYXiM4xehExA0oD2LlOwJ9q/KJ
	UIPSos9HPlU62hkbS2hsRPMwToP7dmmaBn+JX0cNHqRjS1UueNx9vI4HQMfLMUpocMVipTYmzbv
	g
X-Google-Smtp-Source: AGHT+IFjFBfmdxAX+cMaeN9D4wZTjSOeZkB/achZAfE3otZ1vnp7LRu3tZZANC1WUqF8JTJ7gttb8g==
X-Received: by 2002:a05:6402:1f4b:b0:5c8:9529:1b59 with SMTP id 4fb4d7f45d1cf-5cbbf8dec0bmr9571584a12.20.1730117115419;
        Mon, 28 Oct 2024 05:05:15 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Mon, 28 Oct 2024 12:05:14 +0000
Message-Id: <D57FBXUKL8PH.1FQRR4NJ139AX@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Bernhard Kaindl" <bernhard.kaindl@cloud.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>, "Julien Grall" <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>
Subject: Re: [PATCH v4] NUMA: Introduce NODE_DATA->node_present_pages(RAM
 pages)
X-Mailer: aerc 0.18.2
References: <20241027144305.1839348-1-bernhardkaindl7@gmail.com>
In-Reply-To: <20241027144305.1839348-1-bernhardkaindl7@gmail.com>

Hi,

On Sun Oct 27, 2024 at 2:43 PM GMT, Bernhard Kaindl wrote:
> From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
>
> At the moment, Xen keeps track of the spans of PFNs of the NUMA nodes.
> But the PFN span sometimes includes large MMIO holes, so these values
> might not be an exact representation of the total usable RAM of nodes.
>
> Xen does not need it, but the size of the NUMA node's memory can be
> helpful for management tools and HW information tools like hwloc/lstopo
> with its Xen backend for Dom0: https://github.com/xenserver-next/hwloc/
>
> First, introduce NODE_DATA(nodeid)->node_present_pages to node_data[],
> determine the sum of usable PFNs at boot and update them on memory_add().
>
> (The Linux kernel handles NODE_DATA->node_present_pages likewise)
>
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
> ---
> Changes in v3:
> - Use PFN_UP/DOWN, refactored further to simplify the code while leaving
>   compiler-level optimisations to the compiler's optimisation passes.
> Changes in v4:
> - Refactored code and doxygen documentation according to the review.
> ---
>  xen/arch/x86/numa.c      | 13 +++++++++++++
>  xen/arch/x86/x86_64/mm.c |  3 +++
>  xen/common/numa.c        | 36 +++++++++++++++++++++++++++++++++---
>  xen/include/xen/numa.h   | 21 +++++++++++++++++++++
>  4 files changed, 70 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
> index 4b0b297c7e..3c0574f773 100644
> --- a/xen/arch/x86/numa.c
> +++ b/xen/arch/x86/numa.c
> @@ -100,6 +100,19 @@ unsigned int __init arch_get_dma_bitsize(void)
>                   + PAGE_SHIFT, 32);
>  }
> =20
> +/**
> + * @brief Retrieves the RAM range for a given index from the e820 memory=
 map.
> + *
> + * This function fetches the start and end address (exclusive) of a RAM =
range
> + * specified by the given index idx from the e820 memory map.
> + *
> + * @param idx The index of the RAM range in the e820 memory map to retri=
eve.
> + * @param start Pointer to store the start address of the RAM range.
> + * @param end Pointer to store the end address of the RAM range.

Same as setup_node_bootmem(), we probably want this to explicitly state
"exclusive" to indicate it's not the last address, but the address after.

> + *
> + * @return 0 on success, -ENOENT if the index is out of bounds,
> + *         or -ENODATA if the memory map at index idx is not of type E82=
0_RAM.
> + */
>  int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t =
*end)
>  {
>      if ( idx >=3D e820.nr_map )
> diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
> index b2a280fba3..66b9bed057 100644
> --- a/xen/arch/x86/x86_64/mm.c
> +++ b/xen/arch/x86/x86_64/mm.c
> @@ -1334,6 +1334,9 @@ int memory_add(unsigned long spfn, unsigned long ep=
fn, unsigned int pxm)
>      share_hotadd_m2p_table(&info);
>      transfer_pages_to_heap(&info);
> =20
> +    /* Update the node's present pages (like the total_pages of the syst=
em) */
> +    NODE_DATA(node)->node_present_pages +=3D epfn - spfn;
> +
>      return 0;
> =20
>  destroy_m2p:
> diff --git a/xen/common/numa.c b/xen/common/numa.c
> index 209c546a3b..9a8b805dd7 100644
> --- a/xen/common/numa.c
> +++ b/xen/common/numa.c
> @@ -4,6 +4,7 @@
>   * Adapted for Xen: Ryan Harper <ryanh@us.ibm.com>
>   */
> =20
> +#include "xen/pfn.h"
>  #include <xen/init.h>
>  #include <xen/keyhandler.h>
>  #include <xen/mm.h>
> @@ -499,15 +500,44 @@ int __init compute_hash_shift(const struct node *no=
des,
>      return shift;
>  }
> =20
> -/* Initialize NODE_DATA given nodeid and start/end */
> +/**
> + * @brief Initialize a NUMA node's node_data structure at boot.
> + *
> + * It is given the NUMA node's index in the node_data array as well
> + * as the start and exclusive end address of the node's memory span
> + * as arguments and initializes the node_data entry with this informatio=
n.
> + *
> + * It then initializes the total number of usable memory pages within
> + * the NUMA node's memory span using the arch_get_ram_range() function.
> + *
> + * @param nodeid The index into the node_data array for the node.
> + * @param start The starting physical address of the node's memory range=
.
> + * @param end The exclusive ending physical address of the node's memory=
 range.
> + */
>  void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t e=
nd)
>  {
>      unsigned long start_pfn =3D paddr_to_pfn(start);
>      unsigned long end_pfn =3D paddr_to_pfn(end);
> +    struct node_data *numa_node =3D NODE_DATA(nodeid);
> +    paddr_t start_ram, end_ram;

With the loop in place and arch_get_ram_range() being called inside, these =
two
can further reduce scope by being moved inside as well.

> +    unsigned int idx =3D 0;
> +    unsigned long *pages =3D &numa_node->node_present_pages;
> =20
> -    NODE_DATA(nodeid)->node_start_pfn =3D start_pfn;
> -    NODE_DATA(nodeid)->node_spanned_pages =3D end_pfn - start_pfn;
> +    numa_node->node_start_pfn =3D start_pfn;
> +    numa_node->node_spanned_pages =3D end_pfn - start_pfn;
> +
> +    /* Calculate the number of present RAM pages within the node: */

nit: that last ":" feels a bit out of place

> +    *pages =3D 0;
> +    do {
> +        int err =3D arch_get_ram_range(idx++, &start_ram, &end_ram);
> +
> +        if (err =3D=3D -ENOENT)

Missing spaces between condition and the parenthesis of the conditional. Bu=
t...

> +            break;
> +        if ( err || start_ram >=3D end || end_ram <=3D start )
> +            continue;  /* range is outside of the node, or not usable RA=
M */
> =20
> +        *pages +=3D PFN_DOWN(min(end_ram, end)) - PFN_UP(max(start_ram, =
start));
> +    } while (1);

... testing for validity rather than invalidity would allow the loop to be
checked for termination on the termination condition rather than the ad-hoc
check inside. That is...

    (untested)

    do {
        paddr_t start_ram, end_ram;
        int err =3D arch_get_ram_range(idx++, &start_ram, &end_ram);

        if ( !err && start_ram < end && end_ram > start )
            *pages +=3D PFN_DOWN(min(end_ram, end)) -
                      PFN_UP(max(start_ram, start));
    } while (err !=3D ENOENT);

>      node_set_online(nodeid);
>  }
> =20
> diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h
> index fd1511a6fb..6e82dfd2a8 100644
> --- a/xen/include/xen/numa.h
> +++ b/xen/include/xen/numa.h
> @@ -68,9 +68,28 @@ extern unsigned int memnode_shift;
>  extern unsigned long memnodemapsize;
>  extern nodeid_t *memnodemap;
> =20
> +/**
> + * @struct numa_node
> + * @brief Represents the memory information of a NUMA node.
> + *
> + * @var numa_node::node_start_pfn
> + * The starting page frame number (lowest pfn) of the NUMA node.
> + *
> + * @var numa_node::node_spanned_pages
> + * The number of pages spanned by the NUMA node, including memory holes.
> + * Used to get the end of the node memory when scrubbing unallocated mem=
ory.
> + *
> + * @var numa_node::node_present_pages
> + * The total number of usable memory pages that are available in this NU=
MA node.
> + * The value of total_pages would be the sum of all node's node_present_=
pages.
> + *
> + * The Xen Hypervisor does not use this field internally, but it is usef=
ul
> + * for reporting the memory information of NUMA nodes to management tool=
s.
> + */

I like the content, but we don't actually use Doxygen in that fashion (or a=
ny
fashion for that matter, AFAIK). In Xen style, the comments for each field =
tend
to be written on top of each respective field rather than stashed on top of=
 the
containing struct.

>  struct node_data {
>      unsigned long node_start_pfn;
>      unsigned long node_spanned_pages;
> +    unsigned long node_present_pages;
>  };
> =20
>  extern struct node_data node_data[];
> @@ -91,6 +110,7 @@ static inline nodeid_t mfn_to_nid(mfn_t mfn)
> =20
>  #define node_start_pfn(nid)     (NODE_DATA(nid)->node_start_pfn)
>  #define node_spanned_pages(nid) (NODE_DATA(nid)->node_spanned_pages)
> +#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
>  #define node_end_pfn(nid)       (NODE_DATA(nid)->node_start_pfn + \
>                                   NODE_DATA(nid)->node_spanned_pages)
> =20
> @@ -123,6 +143,7 @@ extern void numa_set_processor_nodes_parsed(nodeid_t =
node);
>  extern mfn_t first_valid_mfn;
> =20
>  #define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> +#define node_present_pages(nid) total_pages
>  #define node_start_pfn(nid) mfn_x(first_valid_mfn)
>  #define __node_distance(a, b) 20
> =20

That said, take all of this with a pinch of salt. I'm not a maintainer here=
,
after all, and you might want to wait for Andrew, Jan or Roger to chip in.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:46:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:46:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826442.1240685 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5P8N-0004R6-4g; Mon, 28 Oct 2024 12:46:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826442.1240685; Mon, 28 Oct 2024 12:46: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 1t5P8N-0004Qz-25; Mon, 28 Oct 2024 12:46:11 +0000
Received: by outflank-mailman (input) for mailman id 826442;
 Mon, 28 Oct 2024 12:46: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5P8M-0004Qp-0i
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:46:10 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2060b.outbound.protection.outlook.com
 [2a01:111:f403:2413::60b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 992e300c-952a-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 13:46:07 +0100 (CET)
Received: from PH7P220CA0175.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:33b::16)
 by SA1PR12MB5669.namprd12.prod.outlook.com (2603:10b6:806:237::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.22; Mon, 28 Oct
 2024 12:46:02 +0000
Received: from CY4PEPF0000E9D4.namprd03.prod.outlook.com
 (2603:10b6:510:33b:cafe::49) by PH7P220CA0175.outlook.office365.com
 (2603:10b6:510:33b::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.26 via Frontend
 Transport; Mon, 28 Oct 2024 12:46:00 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000E9D4.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.8114.16 via Frontend Transport; Mon, 28 Oct 2024 12:46:00 +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.39; Mon, 28 Oct
 2024 07:45:59 -0500
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.39 via
 Frontend Transport; Mon, 28 Oct 2024 07:45:57 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 992e300c-952a-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bxmf8cdrjZuDf9cD9uwJlFWBHXOl6wHk807iDEkH56iQK/e701+Ez9HNjFhBZGioWgJUQIXwuMeKFmBvs8LSXCGxExE3m2whwUTQGZXslmQVKqh4OhJ6v7J8Ze+ZxmlHbAY97Iy5nNioy0gzZGNBeWbSFI3tBiS4X5s4tw7AX5la3dPBokTR9KBq/ZdvxaG8XqvM2fpTu0UWPAEROu0IoU0M58rntlDYWcBj33/C6c0/OseBXsE4sgBZyxcpFyvEUP8Txal5FCOKs17p6WEBD5FuJHJsLTueUEwtCAXF46TLwQZhjjlZUnaIIxiw2wKX7ddKzTa5YtwtBr+tdSYWkg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=XydBGRHojGZoJqdkteJihbP8bo8mktcYFJ5/jPzGf9A=;
 b=TzaHGUCtiOl1EoQGRfQzFBATqYBmqaBqTsoQAQ18qdFAjairnO/GRzoMY7++/Tq7i/PL5Xn9IG8XqVKbpi5jixZTiYy81Rv7MnLP1EIQobZfjMrN1pkRT463LhdwTXrNb9SmlmRLXGWwsRHOttFlc37cO9v+yswatWb0VHauX49LPhQLmrp472WbEYN/168nPBSgsXIlYFjy+ZZU3qI+INryQBMSmCi9uk/nmoDSHg0IZLU2pt5h8Axyxn98iZInxRWUeTwRsPozzmO7XwaDbaBhStFT3GHQAfvnSoN8tjAabBJ65X6ROQUabIX7KeheuRWFfeSRWHaSuDftBio9Jg==
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=XydBGRHojGZoJqdkteJihbP8bo8mktcYFJ5/jPzGf9A=;
 b=qAyODYtVMY1UzBxfN7yDD4lrw1sTqMUsZXyNWoFYVK9puMwG0FZyTBx5FspwlKcVym9I/NrX0jHBsLZeMU/P61pca1pfg+FEHbKoAYwIUaiBvfhxVMjBfLcnxFTaldL5D7u2UXz6L001CSp8S8Y+dvN1Usnasyn7U/6Iq2FDYww=
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: Ayan Kumar Halder <ayan.kumar.halder@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>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>, Community Manager
	<community.manager@xenproject.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v4 0/6] Enable early bootup of AArch64 MPU systems
Date: Mon, 28 Oct 2024 12:45:41 +0000
Message-ID: <20241028124547.1371867-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
Received-SPF: None (SATLEXMB04.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D4:EE_|SA1PR12MB5669:EE_
X-MS-Office365-Filtering-Correlation-Id: 326036df-6dea-4e3e-1956-08dcf74e79cb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?55XcKl0lElHQ4AP/urgSLK0X/AERYlaHiVkzX+kZrYhdGnWU+K7CADsFmXoB?=
 =?us-ascii?Q?OKUQ10ZxOpUDPyX/kebAqFbrynpTUgadFdu6IP3hqYAraOpZcf6aX3Nu3tMq?=
 =?us-ascii?Q?h0NkFspuNEpU567MHlE15JCc5+8iyjiXe02eOO4rsBxI0szKpQRaVY5EUR3f?=
 =?us-ascii?Q?p2fRInPj3UJpe7cpdYlrvu8x6FCkqcB3t4N0G4TPGTAPN+Nb3eseP/6aEfBN?=
 =?us-ascii?Q?4Qtl3ksFmzB1UHSbCJw5st1MSesl53W42AaNBSNqM7osbgkWendLtqrTG+Za?=
 =?us-ascii?Q?M1K7ZTixAiWTEXCrWnHfXO3xjamFCLhBGBrJUAlREwK2tD1fBBJEMdyUVPh7?=
 =?us-ascii?Q?og8H+8SNmXKi4GIU+D5fEVbNrcld6ERjfCQLQ0xgQj+BbV+upYgaG2CF3V0n?=
 =?us-ascii?Q?upJ8vg7xbB3rmlnyeOqXDCnOCpyTa9pqg+0k4z6/p7zX6Afa/uMrswDolB1+?=
 =?us-ascii?Q?kzOxQCbcDTdG+KNiDHWNxJ0bbomTl4c3Tuf0evOcJDh3Z962C8hqhdsVtXfy?=
 =?us-ascii?Q?ZAMf9NJ3QlnwyR+eMmqIhcfpmIICj+SKM4siaMWRH3Cw5NJzw78Wbd2ibu88?=
 =?us-ascii?Q?B+xUlnoX3/niZegF/2LxcTA9oZIdmLOF8I2Oll22WkiNQTLkDR53qwnsebey?=
 =?us-ascii?Q?YSOjeN3Pvo7gHPEzUOpWnR6FSxsCUtKCfGIkKRtULrPVgHRT6pchSPj2JuWC?=
 =?us-ascii?Q?AYct9m5NFsb7QkJvebBYqPdqLoYfsi8kx8L7eIaZqYYDVeUf0nZV6ORsu5Kf?=
 =?us-ascii?Q?8PGxqDOxHpI9UEyzUXkZmxhQ7MeqPQfKGwKhEkLxYlfuczpFQvQq1k4db2z0?=
 =?us-ascii?Q?J25n9AMCjT34DflNshnp18gY1468qYNI2S0FMzO0qWN/j71+DbYjq5SOe8rs?=
 =?us-ascii?Q?6fTZuQzqpz1KQ5A3hZej/eJ/fJmoaA1FztFPWMhaKlQkOqv03ypVaL3Z3WvR?=
 =?us-ascii?Q?6klqCPV1gI7OFjULs3fctgdIWZGY5+JjNIBC6UagvCjP3lBS5ydTPlLKfX6d?=
 =?us-ascii?Q?vKtQXXxMQpJsLSesv8bZv0qdiGVebls7D17PBzqQGWKFhT6P3TolOIOOKgN7?=
 =?us-ascii?Q?WXSZz1kw+swMyDYP/UMusPRQzDPGFVquZR2LGTDtJ7vLX54wlG7K1pOcC9K/?=
 =?us-ascii?Q?lTzxDmyRJ//7NT7MT9H/o3cVMIqG5dwUfLPzYbyJC0VEDAuYkeoocox8ny/J?=
 =?us-ascii?Q?1yXBHmXDKunHVG/FsavfZy1nsaJVOF8fEmb/RxaoFkvMUG957YmjfORkSTsc?=
 =?us-ascii?Q?lmdUytWfuSu86rjaROt2BXUbDpkAilNAm9bcvfK4qpcahFGvd5Itpzp1JQ9x?=
 =?us-ascii?Q?3QGC7Hs+l0nBNnp5pf6Jnk1e7zJL3guZxA5MnAtyqm4o411pQaRxRrUeg49T?=
 =?us-ascii?Q?AqbVPn0tDYPAKaVJ9q9JaYi4nX3Bcn56ISdAq7QPMyXNXH39yg=3D=3D?=
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:(13230040)(82310400026)(36860700013)(1800799024)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 12:46:00.0912
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 326036df-6dea-4e3e-1956-08dcf74e79cb
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:
	CY4PEPF0000E9D4.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB5669

We have enabled early booting of R82.

Changes from v2 :-
1. Added a new patch "xen/arm: Skip initializing the BSS section when it is empty".
2. Split "xen/arm: mpu: Create boot-time MPU protection regions" into 2 patches.

Changes from v3 :-
1. Removed some of the R-b as the patches have been modified.

Ayan Kumar Halder (6):
  xen/arm: Skip initializing the BSS section when it is empty
  xen/arm: mpu: Introduce choice between MMU and MPU
  xen/arm: mpu: Define Xen start address for MPU systems
  xen/arm: mpu: Create boot-time MPU protection regions
  xen/arm: mpu: Enable MPU
  xen/arm: mpu: Implement a dummy enable_secondary_cpu_mm

 CHANGELOG.md                                 |   2 +
 SUPPORT.md                                   |   1 +
 xen/arch/Kconfig                             |   2 +
 xen/arch/arm/Kconfig                         |  27 +++-
 xen/arch/arm/arm32/head.S                    |   3 +
 xen/arch/arm/arm64/Makefile                  |   1 +
 xen/arch/arm/arm64/head.S                    |   2 +
 xen/arch/arm/arm64/mpu/Makefile              |   2 +
 xen/arch/arm/arm64/mpu/head.S                | 158 +++++++++++++++++++
 xen/arch/arm/arm64/mpu/mm.c                  |  15 ++
 xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  30 ++++
 xen/arch/arm/include/asm/config.h            |   4 +-
 xen/arch/arm/include/asm/mm.h                |   2 +
 xen/arch/arm/include/asm/mpu/arm64/mm.h      |  22 +++
 xen/arch/arm/include/asm/mpu/layout.h        |  33 ++++
 xen/arch/arm/include/asm/mpu/mm.h            |  20 +++
 xen/arch/arm/platforms/Kconfig               |   2 +-
 xen/arch/arm/smp.c                           |  11 ++
 xen/arch/arm/xen.lds.S                       |   8 +
 19 files changed, 342 insertions(+), 3 deletions(-)
 create mode 100644 xen/arch/arm/arm64/mpu/Makefile
 create mode 100644 xen/arch/arm/arm64/mpu/head.S
 create mode 100644 xen/arch/arm/arm64/mpu/mm.c
 create mode 100644 xen/arch/arm/include/asm/arm64/mpu/sysregs.h
 create mode 100644 xen/arch/arm/include/asm/mpu/arm64/mm.h
 create mode 100644 xen/arch/arm/include/asm/mpu/layout.h
 create mode 100644 xen/arch/arm/include/asm/mpu/mm.h

-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:46:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:46:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826443.1240695 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5P8O-0004fK-Em; Mon, 28 Oct 2024 12:46:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826443.1240695; Mon, 28 Oct 2024 12: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 1t5P8O-0004fD-BN; Mon, 28 Oct 2024 12:46:12 +0000
Received: by outflank-mailman (input) for mailman id 826443;
 Mon, 28 Oct 2024 12:46: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5P8M-0004Qp-UP
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:46:10 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20625.outbound.protection.outlook.com
 [2a01:111:f403:2009::625])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9a64753a-952a-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 13:46:09 +0100 (CET)
Received: from PH8PR05CA0014.namprd05.prod.outlook.com (2603:10b6:510:2cc::7)
 by BN5PR12MB9509.namprd12.prod.outlook.com (2603:10b6:408:2a8::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25; Mon, 28 Oct
 2024 12:46:05 +0000
Received: from CY4PEPF0000E9D2.namprd03.prod.outlook.com
 (2603:10b6:510:2cc:cafe::80) by PH8PR05CA0014.outlook.office365.com
 (2603:10b6:510:2cc::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.11 via Frontend
 Transport; Mon, 28 Oct 2024 12:46:04 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000E9D2.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.8114.16 via Frontend Transport; Mon, 28 Oct 2024 12:46: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.39; Mon, 28 Oct
 2024 07:46:03 -0500
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.39; Mon, 28 Oct
 2024 07:46:03 -0500
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.39 via
 Frontend Transport; Mon, 28 Oct 2024 07:46:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9a64753a-952a-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=lwhqCnyLQKeD/i8x6y0clE+m+6lu3TAvl6ewlQyscDM6iDCyMhssZSmfWIfAkKD1cy8DZ2uRobAABiDD3bqyvRX2jNA5UzJpkpzsp/XPDgpBohoEYe4MEoxBZjCxLGEqz3MEKMNuaiIF3SHGDUbC5YOBzwEeSKpgOuW0JCy3WZqkJJ7718zP8FtJoavq9Ec6/gfDkJCg0fTQ8Jqh9QPvJxQzWV8RdVAmlWTVvT71pVVaoQzK6SaLKjRB2MyV9Cm9IFDsTowuBtTNuQZeS88T9oIL1LECIw+2e7LSszt6eyQCdHAwmAlXYhSQUTrgOgQvbscwrzdE7A97uu8VooZV8w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=ZFcBkE/m8lBfaY/RDGSA74usJ37yqes+AbUBa2xX70A=;
 b=cAW06+L9ec1sN1DBh5vst50QR2DrE3Uj+TLRxNOL3TqBztiG880z8FekhYNs/cNakTGQD2eBkBfKJL10OkmM7TVz5qB9kAxJtPpDBB1qhcelbWn1TbFYBEVpgMBAMd/khyU0EiKoBAErKnvG73cIwUiCDWFSwAqdMZyaZqPOD0XBbVzhY5Ex3Xruw5mhx8Ugmy1//Tq27ua7g4vgsJNdTkkBWygcKZay0uJx1VPGszpR1i/HK9mwcXqkldYVasseQKtNXXgJsDrSd1+8rQ7mXVLykTAUo6mGVxwuJC2nmagxV4wrpdczgKk8RXZ+5t4F9B0abhKyVTHXUSmz1xxqdA==
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=ZFcBkE/m8lBfaY/RDGSA74usJ37yqes+AbUBa2xX70A=;
 b=Ed/Vlc5FhM82IZXFH+IHF8mKTb08v+dmz6oXLUpjMWfW106MOT0dDu/q3amEOqB1rmv7yY4X3kuxdzqeL9Ih8/DcovUTj7vMCf5hFK+w+7i2y05A+ILyf9GyVPHEfcv/hsnLeOwJQigBOFiFpFrs6GVFcU+Rw+p1O/cH+VgvOvE=
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: Ayan Kumar Halder <ayan.kumar.halder@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>
Subject: [PATCH v4 1/6] xen/arm: Skip initializing the BSS section when it is empty
Date: Mon, 28 Oct 2024 12:45:42 +0000
Message-ID: <20241028124547.1371867-2-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D2:EE_|BN5PR12MB9509:EE_
X-MS-Office365-Filtering-Correlation-Id: 53cd0bc6-e4b2-4d50-0ff7-08dcf74e7c38
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|82310400026|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?cvxwfj4eHV0JoCE+Q169lAE4VlTbORZrvftkh/Nl2mzNlyzvXK18sAFJOXyx?=
 =?us-ascii?Q?nn/W+ntN9ySx6ILDjt7i4uMVmxH3ZcjeE6bGJuyeIoWB6psjqzehR/43gpw2?=
 =?us-ascii?Q?Hr7hYKfhBO3LZlQD5I0bh3UUCPafHmvYv92AhnK8q6FZXayKeET3xwjhUFvd?=
 =?us-ascii?Q?Qb30s1Cod7rH5WqJsEaEubebSOYejfRo1HhrtLKvgyPF1ht/B8GsUKJm0iBT?=
 =?us-ascii?Q?Y8PsKNKo0dIz8DWFoaFBuhBjsuIE08OiHbzTDt2zY1m7TsqkxR2sIyDzEfcj?=
 =?us-ascii?Q?fsXLcVVCy+3pUno09+/+KKqJb41ML3oPW+XpbmeEZXz7RsB7hPr+y9IPWXXz?=
 =?us-ascii?Q?Is1K7Im9M0lqWKKTaZcsKp0rM8kpBF2pmLado7W5YRKGiWfe8JwCht27qizq?=
 =?us-ascii?Q?AsvZ5h7Nwb3nKdPXd2DWPDpRykcXtPrNkKCI/72JA0NPfY/hOs7NYWb+Kg3y?=
 =?us-ascii?Q?ILsqbOT0yIDnvS2ZcbExGE2fLaWKjf/Pj3OBF4gyIOgzodGHth5ac0OheY5d?=
 =?us-ascii?Q?6/Lhh5RkMHfxfwK3l89tDReWC+GegVvtbh0c0Rik8IDn4bH5HJuGMGg854yC?=
 =?us-ascii?Q?OKI6U+nMqBqn4P49hWxh4CIkQzlzENL2Dn5tAmZrPvooW2c8pn1t65mzeKLI?=
 =?us-ascii?Q?2RwU+0ek+FZYWJIG3Y5Onxt3VxQeB0iZ5wB2O/5kkMq7qxxvc/o7tatRBSlE?=
 =?us-ascii?Q?mneqVthBVkMqMudTRvdSbtrpwC04Pi79zEKjtWmQdu3IU6DbtzZX3KQFyKep?=
 =?us-ascii?Q?fYnffIm0CC4CItkVc2uy00gWL9nAXkoNdp10vXxia9LjHcmNPFQSb1TCI+UP?=
 =?us-ascii?Q?if1sTTjXvU/j2WWiD30Pjxjj6O0UtX4AEnDQXovbfS3Gy9a3mhGJnZo/kjPk?=
 =?us-ascii?Q?ZWqHCqoSV7hmz1uDY9/thz4Z+ia+/Z9HWhCG3Qr8vZ8Dx0bckKjkj65p2Fmj?=
 =?us-ascii?Q?AcVd8FbMjJN6d6+xNXp3pOVBDU552IhM2vGEbCPLXU4RCDLRca+0uZLnzpFo?=
 =?us-ascii?Q?YF6olaRTl8p+EfD3GuA7JEtAZpUvEKYOPj9k5WKz4B726OsQEJmwzVzu/tMg?=
 =?us-ascii?Q?Td4knFjYY5y/+4RLBB/NOKiERuJKwhyZW4DNyN9LqB5Z7/IyjXYyA38NZE/9?=
 =?us-ascii?Q?qLJULRNQCwWw7pYVrmjebRetASaXph+m2KUbfPT3WT2hm5ClPSTrQwho8Y0i?=
 =?us-ascii?Q?kAbNPYYM8/O4zpsN32ljY7DKcmqjBwLBh/WHXIfKkeshcsjsdU0UMEqgNayD?=
 =?us-ascii?Q?4e4QSmyq/iNOkEQ5kOvBEyZp5Ah2NqhxzdNJeQeGZHg6GvsXq3D5CB5ZLG3s?=
 =?us-ascii?Q?PiLvaBq/nmzi/Y1c2D3iR//DeWY1iEzfNHtsR1oOrfXEaw3vd9r+igfJkK3k?=
 =?us-ascii?Q?iq3zEe1WDBXidOMdKuKFbx/ZeLIsrGOJGrtV+nz2GdyGucnDuA=3D=3D?=
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:(13230040)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 12:46:04.1607
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 53cd0bc6-e4b2-4d50-0ff7-08dcf74e7c38
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:
	CY4PEPF0000E9D2.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN5PR12MB9509

If the BSS section is empty, then the function should return.
If one does not check whether the BSS section is empty or not, then there is a
risk of writing 0s outside of BSS section (which may contain critical data).

Fixes: dac84b66cc9a ("xen: arm64: initial build + config changes, start of day code")
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1..v2 - New patch introduced in v3.

v3 - 1. Update the check in arm32 as well.
2. Drop the R-bs.

 xen/arch/arm/arm32/head.S | 3 +++
 xen/arch/arm/arm64/head.S | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index a96d5d3503..4ff5c220bc 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -185,12 +185,15 @@ zero_bss:
         PRINT("- Zero BSS -\r\n")
         mov_w r0, __bss_start        /* r0 := vaddr(__bss_start) */
         mov_w r1, __bss_end          /* r1 := vaddr(__bss_end)   */
+        cmp   r1, r0
+        beq   skip_bss
 
         mov   r2, #0
 1:      str   r2, [r0], #4
         cmp   r0, r1
         blo   1b
 
+skip_bss:
         mov   pc, lr
 ENDPROC(zero_bss)
 
diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 14c3720d80..72c7b24498 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -346,6 +346,8 @@ FUNC_LOCAL(zero_bss)
         PRINT("- Zero BSS -\r\n")
         ldr   x0, =__bss_start       /* x0 := vaddr(__bss_start) */
         ldr   x1, =__bss_end         /* x1 := vaddr(__bss_end)   */
+        cmp   x1, x0
+        beq   skip_bss
 
 1:      str   xzr, [x0], #8
         cmp   x0, x1
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:46:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:46:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826444.1240705 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5P8c-00053S-Mb; Mon, 28 Oct 2024 12:46:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826444.1240705; Mon, 28 Oct 2024 12:46: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 1t5P8c-00053F-JZ; Mon, 28 Oct 2024 12:46:26 +0000
Received: by outflank-mailman (input) for mailman id 826444;
 Mon, 28 Oct 2024 12:46: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5P8a-00050g-Qg
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:46:24 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on2062e.outbound.protection.outlook.com
 [2a01:111:f403:2408::62e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a2f82cb6-952a-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:46:23 +0100 (CET)
Received: from MW4PR04CA0263.namprd04.prod.outlook.com (2603:10b6:303:88::28)
 by CH3PR12MB8308.namprd12.prod.outlook.com (2603:10b6:610:131::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20; Mon, 28 Oct
 2024 12:46:18 +0000
Received: from BL6PEPF00022574.namprd02.prod.outlook.com
 (2603:10b6:303:88:cafe::e8) by MW4PR04CA0263.outlook.office365.com
 (2603:10b6:303:88::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.21 via Frontend
 Transport; Mon, 28 Oct 2024 12:46:18 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL6PEPF00022574.mail.protection.outlook.com (10.167.249.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8114.16 via Frontend Transport; Mon, 28 Oct 2024 12:46:17 +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.39; Mon, 28 Oct
 2024 07:46:16 -0500
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.39 via
 Frontend Transport; Mon, 28 Oct 2024 07:46:15 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a2f82cb6-952a-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=OmxHYJh9YA4OueVMzcJcEVtMKJVB84TGatuFhs0UbluAgUZGwBPXrMEXx6rrGTHEduiNe0kvFWI6GYdKHpl/UF3oflm7kL6eIYvewF7vzAD4kXg4K826dpLaG2pknz4XL+LOM34xBEVSJBN5Euk2M5nelCRJaTyguoFM04rn4eYt51so7+yCahjPml1gwFibnEL5mVa7w3czN3pSQB3QypKyTcGdaJRQ5f4iwEOPdNgLV4swQ8jW11eD2xsQoLogffW3lFMkx5eoc7Yr3DX4OXD1lep8PQADhb/2X8iciF7ua7/1+41fTfLxSiPkuOLQqls4mz6A3SxGSri/DKYfRQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=ptl+NdoV/c7naiFmhPcaykhIi3QSimLXcLj6cNBxMSU=;
 b=IhIIrgRXBo1/ZvDr806T9lXXNH6Jdy5WTJl27S1owkqV2mIM1QvcxOlZHX7OFMIXj07NoqgJ+3C/AEoOE7HQpEILShDr8ER43JdJ9oQFL4aZ8ngGpjdFgnwPEFjpqcMFurewH+qJE1PmpGVQT5VPEPQQ+dfFN2wH5YtI+InWeaRzvA5XCNZnjNdwwcLJg0xEmpInEJsGAq6EKXAj0WLWccnaiJ2jcAhnMOjCTrbJ4YA1sVHc9zQ5SczPN6tSV+OWP4Hu/ydCkJQHLJvkSEw18OLV3nyHhkdDSwa3ynu2Ex7Cgiu172nxxSo/p17/2uVpUIySMfvO8RP2U7OLR8dgFw==
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=ptl+NdoV/c7naiFmhPcaykhIi3QSimLXcLj6cNBxMSU=;
 b=fN7PdrU0I2yoqzGVtJdnE9aelqDxTL5HQMdtyTWzFHrB8viK45HS8p6zp9hn28fWiiM3gZrl0yHR6K414uIVf37umOFjGUzzx1rO85b9Ezp684T8EuONdVkOPvstuPcuf8X1/1ing7U1oLyA5I+l4GWQnzQWU8uKwrzWgpWTbD8=
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: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>, Community Manager
	<community.manager@xenproject.org>, Andrew Cooper
	<andrew.cooper3@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>, Luca Fancellu
	<luca.fancellu@arm.com>, Julien Grall <jgrall@amazon.com>
Subject: [PATCH v4 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
Date: Mon, 28 Oct 2024 12:45:43 +0000
Message-ID: <20241028124547.1371867-3-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF00022574:EE_|CH3PR12MB8308:EE_
X-MS-Office365-Filtering-Correlation-Id: 2a7282d1-38a6-458d-3b19-08dcf74e83f1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|7416014|1800799024|82310400026|36860700013|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?OZZ/qsC0xia9PAG661a1SSmFrWamhni3iyOiu8nRz7sChbTWCSK0YHPeQVvu?=
 =?us-ascii?Q?Wl0GjlUo8PueV1zi5/DRN23xg+GgRsW9exlPGBrT1881LYhME31sVJ7GK3dD?=
 =?us-ascii?Q?X0w4Hr1woe6FnX0QDHbpS56GqmiDaDG/K0hsFPsnWp80Eo5Ye2hnE0WEIlrt?=
 =?us-ascii?Q?NtKoWXghV4zunjcFF9N5Ged1vUvbHg+Tabj9EFTcF+wETutBw6gIZROpQY5+?=
 =?us-ascii?Q?iZALO0LcQhy7xyPBP4/q9ebUrsEP9NGlVdbH04N/iF3qBC2usVqq+3xSDC31?=
 =?us-ascii?Q?IUqBDzgMIGohwZtCoVVmV6/Ro52CsGay8/XCqOxZELn87BJ3fCdAHZj/J49f?=
 =?us-ascii?Q?wLu+A7326sqihJca1ZCw6cqy6fD9CIFiFun3oO7+NE5prIZqedLQZssfYXPf?=
 =?us-ascii?Q?arMVtJ0TQ6/4i0Upbh+nqfXXqho/ksftcFFM6oQtf/DTFeRelHN0v/QWpyzI?=
 =?us-ascii?Q?Q2DPYg/nCTxpVAFargwocyRfmGVceHYLAXiPeEi1q72xJPZWP425CWF0Dfej?=
 =?us-ascii?Q?wVOUJSIEF/YrBhBsk3qukmp71h8v1SWpgD5hzyXHjtWlPPKoFc9cB+Vwq6qR?=
 =?us-ascii?Q?WRKFuQq7vovnzKJdb0LrrM/jMTSb0abqJVUDGNKhmtvOr0Z2lk6amzgt8AeB?=
 =?us-ascii?Q?NK9naqWTFN0b/+z2Dx65aAw1MJpMq/1QnOBw7V71KpKcNWjgUkwGCgtd+gCo?=
 =?us-ascii?Q?LnTrRSuu/jUD+dwIi/2zgZzFuANTz3Wl0RkM30S+v1tW42HAHqB2KRDOSc97?=
 =?us-ascii?Q?RiTCsbyG5pqDbK//8etqUcOIgv9MK3Xe7mxDN/xPDH45H6GLe4lPLlSOnkeJ?=
 =?us-ascii?Q?vngL8jyUhtP9AQBE5lUhFYEzsTSR5pfDa0qqcbvc3v+ll5+5vatDELrx/+Ft?=
 =?us-ascii?Q?5TUmjaD+7GVBTf2eku2nOb/nPg21IXKpAOhDp49g7RnEqfWRfAMV6gbPWPEu?=
 =?us-ascii?Q?qw1wZl99p/NTUuI1KEmwQGhcv/SFzWgdxfjeo7mxgWV+FahTaNNcyk9y99s9?=
 =?us-ascii?Q?r1928vPl50mb26LL67mynl0JIyq1os+/4LPRQs+3xDBkekrhOskxTBfNjYrb?=
 =?us-ascii?Q?a7cmQpydQEd8hCSj804C5UZuZ17ZY9wCWhYnxwBlJacM983mC0oAMsvVKs36?=
 =?us-ascii?Q?EOb8Ek8KuuJGA6lVk2evnDUbh2x2pIIIp037OurQDvWz9xz/yg/AJlfgnq45?=
 =?us-ascii?Q?/TZjnBz3OOlT3XcOc89hzaGbpwbwGRfnGOG+wufAgNvLciEFtPhr5NaT1hSJ?=
 =?us-ascii?Q?91toIiPsJMBgzWDhN/ZbcsweG9Ps8GlQ2bjiIfOMSaXVOv/h6L2MgtOtQm+y?=
 =?us-ascii?Q?dU/lkZgjZ0HJ6WhdKPjAZw73oDrFqZR8qbEyoZZNQ9AVXbXHIwM6aZKdSlD1?=
 =?us-ascii?Q?EbFgsgE=3D?=
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:(13230040)(7416014)(1800799024)(82310400026)(36860700013)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 12:46:17.2120
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2a7282d1-38a6-458d-3b19-08dcf74e83f1
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:
	BL6PEPF00022574.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8308

There are features in the forthcoming patches which are dependent on
MPU. For eg fixed start address.
Also, some of the Xen features (eg STATIC_MEMORY) will be selected
by the MPU configuration.

Thus, this patch introduces a choice between MMU and MPU for the type
of memory management system. By default, MMU is selected.
MPU is now gated by UNSUPPORTED.

Update SUPPORT.md to state that the support for MPU is experimental.
Also updated CHANGELOG.md as well.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
Acked-by: Julien Grall <jgrall@amazon.com>
---

Changes from :-

v1 - 1. Reword the help messages.
2. Update Support.md.

v2 - 1. Reword the help message.

v3 - 1. Update Changelog.
2. Add R-b and Ack.

 CHANGELOG.md                   |  2 ++
 SUPPORT.md                     |  1 +
 xen/arch/arm/Kconfig           | 17 ++++++++++++++++-
 xen/arch/arm/platforms/Kconfig |  2 +-
 4 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c499d12dc4..79524cc15f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
    - Prefer ACPI reboot over UEFI ResetSystem() run time service call.
 
 ### Added
+ - On Arm:
+   - Support for earlyboot of Xen on Armv8-R (experimental).
 
 ### Removed
  - On x86:
diff --git a/SUPPORT.md b/SUPPORT.md
index 23dd7e6424..94610d3c91 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -40,6 +40,7 @@ supported in this document.
 
     Status, Xen in AArch64 mode: Supported
     Status, Xen in AArch32 mode: Tech Preview
+    Status, Xen in Armv8-R: Experimental
     Status, Cortex A57 r0p0-r1p1: Supported, not security supported
     Status, Cortex A77 r0p0-r1p0: Supported, not security supported
 
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 323c967361..ed92eb67cb 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -58,10 +58,25 @@ config PADDR_BITS
 	default 40 if ARM_PA_BITS_40
 	default 48 if ARM_64
 
+choice
+	prompt "Memory management system"
+	default MMU
+	help
+	  User can choose between the different forms of memory management system.
+
 config MMU
-	def_bool y
+	bool "MMU"
 	select HAS_PMAP
 	select HAS_VMAP
+	help
+	  Select it if you plan to run Xen on A-profile Armv7+
+
+config MPU
+	bool "MPU" if UNSUPPORTED
+	help
+	  Memory Protection Unit (MPU). Select if you plan to run Xen on ARMv8-R
+	  systems supporting EL2. (UNSUPPORTED)
+endchoice
 
 source "arch/Kconfig"
 
diff --git a/xen/arch/arm/platforms/Kconfig b/xen/arch/arm/platforms/Kconfig
index 76f7e76b1b..02322c259c 100644
--- a/xen/arch/arm/platforms/Kconfig
+++ b/xen/arch/arm/platforms/Kconfig
@@ -1,5 +1,5 @@
 choice
-	prompt "Platform Support"
+	prompt "Platform Support" if MMU
 	default ALL_PLAT
 	help
 	Choose which hardware platform to enable in Xen.
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:46:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:46:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826446.1240714 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5P8i-0005WH-TT; Mon, 28 Oct 2024 12:46:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826446.1240714; Mon, 28 Oct 2024 12: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 1t5P8i-0005WA-Qo; Mon, 28 Oct 2024 12:46:32 +0000
Received: by outflank-mailman (input) for mailman id 826446;
 Mon, 28 Oct 2024 12: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5P8g-0004Qp-Q9
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:46:30 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2060a.outbound.protection.outlook.com
 [2a01:111:f403:2413::60a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a6a1a87a-952a-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 13:46:29 +0100 (CET)
Received: from DM6PR01CA0029.prod.exchangelabs.com (2603:10b6:5:296::34) by
 CY5PR12MB6300.namprd12.prod.outlook.com (2603:10b6:930:f::8) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8093.24; Mon, 28 Oct 2024 12:46:24 +0000
Received: from CY4PEPF0000E9CF.namprd03.prod.outlook.com
 (2603:10b6:5:296:cafe::56) by DM6PR01CA0029.outlook.office365.com
 (2603:10b6:5:296::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.21 via Frontend
 Transport; Mon, 28 Oct 2024 12:46:24 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000E9CF.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.8114.16 via Frontend Transport; Mon, 28 Oct 2024 12:46:24 +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.39; Mon, 28 Oct
 2024 07:46:23 -0500
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.39; Mon, 28 Oct
 2024 07:46:22 -0500
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.39 via
 Frontend Transport; Mon, 28 Oct 2024 07:46:21 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a6a1a87a-952a-11ef-99a3-01e77a169b0f
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RBycu7yJe0h0S/DW+SO4EmLdwW3ooTKDFBuDuMBTRbWD7Xj5iKZyGYBWozcnI0feFghbCcI1RaAzCk0x23lEr1KWwYY7PazIBmFsFrDgqI2pgWLwJshcsEZLfFwLP9H/bH48OfOk6Nat9GsVsXAQt7ayYZUib3XtoC1YU3kpp8TmEOnpH68s8WFS60XozpEUxyTCl0rT4ZUvWcvLVis/P50Dw08rAElFIe9qI6Pp/fK0Lw1BLbfM/ytt8BBuSxPQo2Y06y1YpsarfIGaELrDIQfg1WrxS/lHHYSb3gtK842gUnuxaw2RbqIcJyDseGdFciN9rrky7xTkQykc90dOmA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=lNYvm8YWxvjs04dfYHZIpT38yoOVT4AS9ee8RDi6eKk=;
 b=rth3iX0bGY2FRebgm8Wm6uEbuN7R8oemB/YsABGg465pTv8ilUiDqqQulEhwJOCMKa3B33ejOHw/rwYQKxVi53L7mi/p2E/Rt4v17dIV8VxJo12YXssv8gTDDLzH4aHhNVv+/X72we9AxkVlKN9Zi3J9iU70PxrJJfkUipD+lK9+9FLEiEBrCzwZLEcuMx199I83ZfQ/Yx3zX84Hw2hwCY1zo+jRmTS+OlaNempiIMtHg25k6hjywBIVyGXTFK6GLrYa0/5pVvnsi0RNFUZPsFX83RzX0Y7kCQwQp10PnTvpuJ0oXlR4Ws7HHBFdEODjY8RE9oAInwqq2G8YmXvPnA==
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=lNYvm8YWxvjs04dfYHZIpT38yoOVT4AS9ee8RDi6eKk=;
 b=Wa+cLSZ4shfylDcJ2xd+hR/QfB5CXC3dRVtEmWeQQy3egpsrQE0QtNPKFJfg+EgsTQIr0LEx9iuPWbyB5IqfOH87JGaBf3UI76Ca/yxODL3PzTmjZO+smQtkV121rsUx7mc6fz+wr2SB0Z1a8/P/2EKZMbOKFphaNvgBRj38WI4=
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: Wei Chen <wei.chen@arm.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>, "Jiamei . Xie" <jiamei.xie@arm.com>, "Ayan
 Kumar Halder" <ayan.kumar.halder@amd.com>
Subject: [PATCH v4 3/6] xen/arm: mpu: Define Xen start address for MPU systems
Date: Mon, 28 Oct 2024 12:45:44 +0000
Message-ID: <20241028124547.1371867-4-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9CF:EE_|CY5PR12MB6300:EE_
X-MS-Office365-Filtering-Correlation-Id: 71c798de-dfc8-4f03-d253-08dcf74e880f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|36860700013|376014|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?TF14+F83SaNxu4Udbngw5wZLlwGfMVwL5/bI3PYN2TMlK/EUcoijiIUHPZ8o?=
 =?us-ascii?Q?RL7FFA2kSwYL6A871yI1SvoG1kQuosRnowYzBtH77KtB3iMkUFIHOs9GaUS0?=
 =?us-ascii?Q?PvpwoOnzt/ICVEkmSMHK14hDdX+aeRmukaG7wTz0hDBnnTv0KcUdDxhiAwGA?=
 =?us-ascii?Q?/nF42f0KyQNrX3msJZR8ZiWnROI1u6EKQ2vtyU+u2sncFOUGSP53DIAd+QKy?=
 =?us-ascii?Q?QFi2V1xygDWtsk9fWrbDTAMP8mufDS3s2Q2cAlvt1oVVdWAa7uibIydFcvel?=
 =?us-ascii?Q?ANgpuUr2VxBQvraAkSa0517AbNWdzS3lSazjYa/mj7jtbxhdDSSICYU8aj5j?=
 =?us-ascii?Q?dTNCBDFy/1iykJujvtU/wV1KEfA+EFf26SkzAMay4dMkdJnNjEjkK0o4nVF+?=
 =?us-ascii?Q?/IIydazdYtfDFb1PkCI/AIUXoKWfDDe2LKcNeo+z7sgl2XIjZYWYSEho5jTq?=
 =?us-ascii?Q?682xTG33YutWtFRON6aFE2pYMfV9VF6VuRC83BF0R1uySANwfzUWaZ3pdyWw?=
 =?us-ascii?Q?xuCBmXqdMgCm2Y9hEY8l1u3d8VRrclTNQjImLX4oFj5CQPZsCoyCJ/dTFYZ9?=
 =?us-ascii?Q?6sJbV965KlvrqCC1acFngI8QIgZML7UIQZ1+iE91ID8Zk4+JMGAApt9ME0eE?=
 =?us-ascii?Q?/zVohYfXEYlMT/qXLA1Qzv/e5tPactNwZHLQW0Yuh7pg1JB4NsYFN5YeP/4S?=
 =?us-ascii?Q?T+OVs9vk5IYj4SkWXmJ4KB0TL0KhtXrZkpb5UmQlfhq7UvxvtArLAWI3FcBk?=
 =?us-ascii?Q?ErYHDzL+P8ogsTdDiOK9Zwp1UynEKGQDbSfV/gc7TzWDGaLasGrP1gtxvdCC?=
 =?us-ascii?Q?uI0POfNhO/efowKx0dwnYEmCPnCq1tITx6ojdf/1szzIDlpLa3Y2RR6PNvfu?=
 =?us-ascii?Q?n3Y05ssIn8Pdd8x1xLyFukS+mPpBti6jNPU5UVyzqS3XxIGtx+giXoZYD2/p?=
 =?us-ascii?Q?h+F3yRCAM+CKWkLAY6E+HBOVZyTl0TafQuZw1dxdhS5lTlOjvhiLJwIK6T/c?=
 =?us-ascii?Q?WTANtx+B8eXFJBvsud9B14rLaq9tiISDL7GxgqFYYSmOqksKMXjXwI3a12WQ?=
 =?us-ascii?Q?N5KKMEuT9ZSzNdBGghhbWeY1dex9z3HUvi6JPZw5d36dKUs7PMzl6kqx8iIA?=
 =?us-ascii?Q?cC+D897bSlpzp3Xs+B/9kEJdPfgB4Fn4cTvy0z91fKFEBlFEITG9AykdXlNo?=
 =?us-ascii?Q?L9s8DF7lGqYHgbmRP2i+Qas2UzH17OIfkZDm0i4ppPkp0n4E+5kKLtrOjaw9?=
 =?us-ascii?Q?18D/EEIVwM+oGUVXaRYl7Z2guoxs2JEobmK5QUdQ0eiTQCtg+bvGuVaY+6ZL?=
 =?us-ascii?Q?kOe5Nu0ktFCmAtWDmcMwRjitBy2fl9vAU0SVUTvkhbtbZwhlpmeHcDq0pl0d?=
 =?us-ascii?Q?7TAxuerbVxAQ95Hrz9h9CfxQnOWglNdomdbOZd44OvHOaOb2Gg=3D=3D?=
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:(13230040)(82310400026)(36860700013)(376014)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 12:46:24.0297
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 71c798de-dfc8-4f03-d253-08dcf74e880f
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:
	CY4PEPF0000E9CF.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6300

From: Wei Chen <wei.chen@arm.com>

On Armv8-A, Xen has a fixed virtual start address (link address too) for all
Armv8-A platforms. In an MMU based system, Xen can map its loaded address to
this virtual start address. So, on Armv8-A platforms, the Xen start address does
not need to be configurable. But on Armv8-R platforms, there is no MMU to map
loaded address to a fixed virtual address and different platforms will have very
different address space layout. So Xen cannot use a fixed physical address on
MPU based system and need to have it configurable.

So, we introduce a Kconfig option for users to set the start address. The start
address needs to be aligned to 4KB. We have a check for this alignment.

MPU allows us to define regions which are 64 bits aligned. This restriction
comes from the bitfields of PRBAR, PRLAR (the lower 6 bits are 0 extended to
provide the base and limit address of a region). This means that the start
address of Xen needs to be at least 64 bits aligned (as it will correspond to
the start address of memory protection region).

As for now Xen on MPU tries to use the same memory alignment restrictions as it
has been for MMU. We have added a build assertion to ensure that the page size
is 4KB. Unlike MMU where the starting virtual address is 2MB, Xen on MPU needs
the start address to be 4KB (ie page size) aligned.

In case if the user forgets to set the start address, then 0xffffffff is used
as default. This is to trigger the error (on alignment check) and thereby prompt
user to set the start address.

Also updated config.h so that it includes mpu/layout.h when CONFIG_MPU is
defined.

Signed-off-by: Wei Chen <wei.chen@arm.com>
Signed-off-by: Jiamei.Xie <jiamei.xie@arm.com>
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1 - 1. Fix some of the coding style issues.
2. Reword the help message.
3. Updat the commit message.

v2 - Add clarification for the use of page and page size.

v3 - 1. Add a new file arm64/mpu/mm.c to contain the build assertion for page
size.
2. Enclosed the check for the start address within "#ifdef CONFIG_MPU".

 xen/arch/arm/Kconfig                  | 10 ++++++++
 xen/arch/arm/arm64/Makefile           |  1 +
 xen/arch/arm/arm64/mpu/Makefile       |  1 +
 xen/arch/arm/arm64/mpu/mm.c           | 15 ++++++++++++
 xen/arch/arm/include/asm/config.h     |  4 +++-
 xen/arch/arm/include/asm/mpu/layout.h | 33 +++++++++++++++++++++++++++
 xen/arch/arm/xen.lds.S                |  7 ++++++
 7 files changed, 70 insertions(+), 1 deletion(-)
 create mode 100644 xen/arch/arm/arm64/mpu/Makefile
 create mode 100644 xen/arch/arm/arm64/mpu/mm.c
 create mode 100644 xen/arch/arm/include/asm/mpu/layout.h

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index ed92eb67cb..15b2e4a227 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -23,6 +23,16 @@ config ARCH_DEFCONFIG
 	default "arch/arm/configs/arm32_defconfig" if ARM_32
 	default "arch/arm/configs/arm64_defconfig" if ARM_64
 
+config XEN_START_ADDRESS
+	hex "Xen start address: keep default to use platform defined address"
+	default 0xFFFFFFFF
+	depends on MPU
+	help
+	  Used to set customized address at which which Xen will be linked on MPU
+	  systems. Must be aligned to 4KB.
+	  0xFFFFFFFF is used as default value to indicate that user has not
+	  customized this address.
+
 menu "Architecture Features"
 
 choice
diff --git a/xen/arch/arm/arm64/Makefile b/xen/arch/arm/arm64/Makefile
index 72161ff22e..6491c5350b 100644
--- a/xen/arch/arm/arm64/Makefile
+++ b/xen/arch/arm/arm64/Makefile
@@ -1,5 +1,6 @@
 obj-y += lib/
 obj-$(CONFIG_MMU) += mmu/
+obj-$(CONFIG_MPU) += mpu/
 
 obj-y += cache.o
 obj-y += cpufeature.o
diff --git a/xen/arch/arm/arm64/mpu/Makefile b/xen/arch/arm/arm64/mpu/Makefile
new file mode 100644
index 0000000000..b18cec4836
--- /dev/null
+++ b/xen/arch/arm/arm64/mpu/Makefile
@@ -0,0 +1 @@
+obj-y += mm.o
diff --git a/xen/arch/arm/arm64/mpu/mm.c b/xen/arch/arm/arm64/mpu/mm.c
new file mode 100644
index 0000000000..0b8748e575
--- /dev/null
+++ b/xen/arch/arm/arm64/mpu/mm.c
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/lib.h>
+#include <xen/init.h>
+#include <xen/sizes.h>
+
+static void __init __maybe_unused build_assertions(void)
+{
+    /*
+     * Unlike MMU, MPU does not use pages for translation. However, we continue
+     * to use PAGE_SIZE to denote 4KB. This is so that the existing memory
+     * management based on pages, continue to work for now.
+     */
+    BUILD_BUG_ON(PAGE_SIZE != SZ_4K);
+}
diff --git a/xen/arch/arm/include/asm/config.h b/xen/arch/arm/include/asm/config.h
index a2e22b659d..0a51142efd 100644
--- a/xen/arch/arm/include/asm/config.h
+++ b/xen/arch/arm/include/asm/config.h
@@ -69,8 +69,10 @@
 #include <xen/const.h>
 #include <xen/page-size.h>
 
-#ifdef CONFIG_MMU
+#if defined(CONFIG_MMU)
 #include <asm/mmu/layout.h>
+#elif defined(CONFIG_MPU)
+#include <asm/mpu/layout.h>
 #else
 # error "Unknown memory management layout"
 #endif
diff --git a/xen/arch/arm/include/asm/mpu/layout.h b/xen/arch/arm/include/asm/mpu/layout.h
new file mode 100644
index 0000000000..d6d397f4c2
--- /dev/null
+++ b/xen/arch/arm/include/asm/mpu/layout.h
@@ -0,0 +1,33 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ARM_MPU_LAYOUT_H__
+#define __ARM_MPU_LAYOUT_H__
+
+#define XEN_START_ADDRESS CONFIG_XEN_START_ADDRESS
+
+/*
+ * All MPU platforms need to provide a XEN_START_ADDRESS for linker. This
+ * address indicates where Xen image will be loaded and run from. This
+ * address must be aligned to a PAGE_SIZE.
+ */
+#if (XEN_START_ADDRESS % PAGE_SIZE) != 0
+#error "XEN_START_ADDRESS must be aligned to 4KB"
+#endif
+
+/*
+ * For MPU, XEN's virtual start address is same as the physical address.
+ * The reason being MPU treats VA == PA. IOW, it cannot map the physical
+ * address to a different fixed virtual address. So, the virtual start
+ * address is determined by the physical address at which Xen is loaded.
+ */
+#define XEN_VIRT_START         _AT(paddr_t, XEN_START_ADDRESS)
+
+#endif /* __ARM_MPU_LAYOUT_H__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index 5b9abc9a2d..d1e579e8a8 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -213,6 +213,13 @@ SECTIONS
  * match the context.
  */
 ASSERT(_start == XEN_VIRT_START, "_start != XEN_VIRT_START")
+#ifdef CONFIG_MPU
+/*
+ * On MPU based platforms, the starting address is to be provided by user.
+ * One need to check that it is 4KB aligned.
+ */
+ASSERT(IS_ALIGNED(_start,       4096), "starting address should be aligned to 4KB")
+#endif
 
 /*
  * We require that Xen is loaded at a page boundary, so this ensures that any
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:46:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:46:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826451.1240725 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5P8k-0005nW-B6; Mon, 28 Oct 2024 12:46:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826451.1240725; Mon, 28 Oct 2024 12: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 1t5P8k-0005nJ-6w; Mon, 28 Oct 2024 12:46:34 +0000
Received: by outflank-mailman (input) for mailman id 826451;
 Mon, 28 Oct 2024 12: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5P8j-00050g-8W
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:46:33 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20602.outbound.protection.outlook.com
 [2a01:111:f403:200a::602])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a8ba37e3-952a-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:46:32 +0100 (CET)
Received: from PH8PR05CA0010.namprd05.prod.outlook.com (2603:10b6:510:2cc::15)
 by SN7PR12MB7106.namprd12.prod.outlook.com (2603:10b6:806:2a1::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.28; Mon, 28 Oct
 2024 12:46:26 +0000
Received: from CY4PEPF0000E9D2.namprd03.prod.outlook.com
 (2603:10b6:510:2cc:cafe::a) by PH8PR05CA0010.outlook.office365.com
 (2603:10b6:510:2cc::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.11 via Frontend
 Transport; Mon, 28 Oct 2024 12:46:26 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000E9D2.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.8114.16 via Frontend Transport; Mon, 28 Oct 2024 12:46:25 +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.39; Mon, 28 Oct
 2024 07:46:25 -0500
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.39 via
 Frontend Transport; Mon, 28 Oct 2024 07:46:24 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8ba37e3-952a-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=RoaicQE6Fedcmbg1DuPONq+10a9dRi+H9JTZp6HtNcVMy7ofXlUGxPAfq70neDO8HnR8dUQCsMsph+LoOpxKiCRN6gjX/zJMDBLEDDsRcyhWNKItmVz5CVQ0dsj7lAM8sBMPwDyCL+pmUirhvJYeaDA6ESnxuUp4sUhHKI8C8dnOGI6BFkNgi4LM6U2Kpfi4aAV+FgyPZIbJxP2yHdseNoM87uKrxIU8/7USDwLlPi7OfcApRtXIeOla05emX20JYeifGIE4/dNDBBomaliOmFbJGRGwzSn8gkBrK+aecklfCT0roMnaWza5u1nVhNoTEbZF6gIVkA3NaMeVa7P+kA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=MyhtbxHUC08uI+MsIp0gmuNpSuHqjK/LKiAaR17085A=;
 b=O6fObCsquHVYm79KrwZI1NPP6xO28bCj8jMiyzx2y4/phCHsMI30hAkWlMUZIF2fF4qraBdpdUqUIttM0tvns8HfOl7bbjOv0/VyvzKmkrQGeUzRQgkrgwH5PP9aHdjQnU5hKdhhE9Rlz2KCgeJYz5eM3JCcx1M9BzVkDQ+vxiANWUL4+bZHnn5TuFwEvICP6CvuczvASGhddfzY5vrUfVjqlHEwGlbNHe6bOP9VHAjFkuJWcFVgZF85XnBNyFpFwdFrp5iPu8sNc5rNp3gXyaCtC6os9atkEhn6JXLnPpqu0sUC7KSZHAZHQq18WwBzxahLvnIatlFJFeSUqfr6dA==
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=MyhtbxHUC08uI+MsIp0gmuNpSuHqjK/LKiAaR17085A=;
 b=D/N6ep35AFfc7bIvPL878/o8Kr230b6j/8r3KfHeZoTgz+TPD/fiYmI/bYmzI48bwYEpTJcPE73hHFDdj24sQRu58E4JM4ylrGyQvgerH2YjQFMP7se2HjZ0r0/MuaqBf+Xn7Qkr2DnvKpCozr/wBlGqrLyz4LyEWe8OW8FuPYQ=
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: Ayan Kumar Halder <ayan.kumar.halder@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>
Subject: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection regions
Date: Mon, 28 Oct 2024 12:45:45 +0000
Message-ID: <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB04.amd.com: ayan.kumar.halder@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D2:EE_|SN7PR12MB7106:EE_
X-MS-Office365-Filtering-Correlation-Id: 732400f7-d55e-4caa-dcf7-08dcf74e892e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?qBz9smjOOSPXPosvmlDg75QR6cFMmr8R7NZ14Msm9zRQ5rtnmXn5QnZSkAMW?=
 =?us-ascii?Q?hxqgkatoCNStluGLz/qUHcNAGO1I/7kjhVjeCx3mdbR2bPvSeawfRFFtzA2p?=
 =?us-ascii?Q?kHMrxcQW1Dsu9yHKFtAyCCGFE0lF0dCDYzjGF06vlFRneTpy2hoQB+f8WS2Y?=
 =?us-ascii?Q?vIWTq5OYtopEiYplV4VGFoPrgU44YkcO45Qpa1Aqb+B0qoJpYMVgE9YHaQlJ?=
 =?us-ascii?Q?qBFRIdr1Ti4pIjNzq20JGHxnaktcYTFBs5QwgEw555XYsxnJSfYUodd6sN6P?=
 =?us-ascii?Q?XkyyTHNOgarIRBFYI7VaW3Ier1d/TDE71b2BrCsAEyZj5IHQEudnIN+fVQLV?=
 =?us-ascii?Q?G+w8QktmWhf+AYP4XvPEkwOJnpHYle7Y3Y3WK9Bq06jG/2DZgQgEsAmeJSxG?=
 =?us-ascii?Q?eIpbe0f87BelsB7678X7RTl6cIv31dQNOI9/sokOSTvn+EShFqgz7Ntu8t+k?=
 =?us-ascii?Q?vi0Kb1HZnQL7qMnu6cAmZ21GOKQUJKmZwLZrmr5Rm/hQrBXZDHck8I28ZvJJ?=
 =?us-ascii?Q?twEZAZ2PYBzgGqbcYkcqm5q8H11SlGSC9AXN3r7YXyb+9s5IsUN58Itx7Bic?=
 =?us-ascii?Q?kAHCdV9myyEuEeaCi9qFkLyJruj/N+CaO+PG8HHmmimZhjIbtMlpy66mqBfo?=
 =?us-ascii?Q?gW0dbx7eCArUR8pWAdirDtiX3y40BVfrh9OmlBVKF1rjgoO5RU8eh8RQ2I/D?=
 =?us-ascii?Q?m/sPlr7cjO23ISgaHfdQvoYZhWtqa9qZud7gkpL1JVSsiz4oIAURPrl+63e9?=
 =?us-ascii?Q?UoWmhaAScJq9VXU/1yDaulQS8/vBweenaoQpeSP1swquEO/sD2xD5KIYH6TR?=
 =?us-ascii?Q?PO7ybsVUPvqNeH9/vFBM8VOF+Gr6vD1IZ2JyFzE+kIvQDl2/JgYznImgjnmd?=
 =?us-ascii?Q?uvjPJQIYjmJT3NrfXUvzhxnMZsO+AKwbXLgqq3AiYOZdMYioNa4veZV4AyCK?=
 =?us-ascii?Q?qwcN8gp2Gg1JjB/unKQKpku0D4ZM1gIwIjIX38kZNt3GmmIMbeAdNTcUWS6Z?=
 =?us-ascii?Q?VNlX/awMFDxNG5LwLBKu0WeprqXeCX4OD+sY38MfBGzPGk9vcGhxg2oFB4oj?=
 =?us-ascii?Q?IkeOBUv22W4yYLnwO1Yuw2roDmdfr4oOZo4pN8K21iYbrHJ+/XScs3Cm+ZGp?=
 =?us-ascii?Q?ymPdXkoliHb6K2K2IpSsdpf2CBw3do5FYAu2vtnlZm6O18ToF3/ltAx5hhOM?=
 =?us-ascii?Q?GNk/eIAQ+DSRr/7a4jo0oh0u5zzfYHRPHF9e7kS1ip8ZI3Q/YoXSgzqJBmoT?=
 =?us-ascii?Q?UgRQoNEDzPLQRkqHMAHUXZL3fodkjwQB2yTzgbJTh3yx74rPcvTCTm6x4xC+?=
 =?us-ascii?Q?dpCENDYtlS0OYSg/jsy2uJfFGt1SdrjNc04s+1Bdk8/buihA3nAkJC7r8dHN?=
 =?us-ascii?Q?s++Z2P7FCFCcSKY0I6oZ1+P/UBbH0BSTouWknibNqRIBJZSoxw=3D=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 12:46:25.9421
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 732400f7-d55e-4caa-dcf7-08dcf74e892e
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:
	CY4PEPF0000E9D2.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7106

Define enable_boot_cpu_mm() for the AArch64-V8R system.

Like boot-time page table in MMU system, we need a boot-time MPU protection
region configuration in MPU system so Xen can fetch code and data from normal
memory.

To do this, Xen maps the following sections of the binary as separate regions
(with permissions) :-
1. Text (Read only at EL2, execution is permitted)
2. RO data (Read only at EL2)
3. RO after init data and RW data (Read/Write at EL2)
4. Init Text (Read only at EL2, execution is permitted)
5. Init data and BSS (Read/Write at EL2)

Before creating a region, we check if the count exceeds the number defined in
MPUIR_EL2. If so, then the boot fails.

Also we check if the region is empty or not. IOW, if the start and end address
are same, we skip mapping the region.

To map a region, Xen uses the PRBAR_EL2, PRLAR_EL2 and PRSELR_EL2 registers.
One can refer to ARM DDI 0600B.a ID062922 G1.3  "General System Control
Registers", to get the definitions of these registers. Also, refer to G1.2
"Accessing MPU memory region registers", the following

```
The MPU provides two register interfaces to program the MPU regions:
- Access to any of the MPU regions via PRSELR_ELx, PRBAR<n>_ELx, and
PRLAR<n>_ELx.
```

We use the above mechanism to create the MPU memory regions.

MPU specific registers are defined in
xen/arch/arm/include/asm/arm64/mpu/sysregs.h.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1 - 1. Instead of mapping a (XEN_START_ADDRESS + 2MB) as a single MPU region,
we have separate MPU regions for different parts of the Xen binary. The reason
being different regions will nned different permissions (as mentioned in the
linker script).

2. Introduced a label (__init_data_begin) to mark the beginning of the init data
section.

3. Moved MPU specific register definitions to mpu/sysregs.h.

4. Fixed coding style issues.

5. Included page.h in mpu/head.S as page.h includes sysregs.h.
I haven't seen sysregs.h included directly from head.S or mmu/head.S.
(Outstanding comment not addressed).

v2 - 1. Extracted "enable_mpu()" in a separate patch.

2. Removed alignment for limit address.

3. Merged some of the sections for preparing the early boot regions.

4. Checked for the max limit of MPU regions before creating a new region.

5. Checked for empty regions.

v3 :- 1. Modified prepare_xen_region() so that we check for empty region within
this. Also, index of regions (to be programmed in PRSELR_EL2) should start from
0.

2. Removed load_paddr() as the offset is 0.

3. Introduced fail_insufficient_regions() to handle failure caused when the
number of regions to be allocated is not sufficient.

 xen/arch/arm/arm64/mpu/Makefile              |   1 +
 xen/arch/arm/arm64/mpu/head.S                | 122 +++++++++++++++++++
 xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  27 ++++
 xen/arch/arm/include/asm/mm.h                |   2 +
 xen/arch/arm/include/asm/mpu/arm64/mm.h      |  22 ++++
 xen/arch/arm/include/asm/mpu/mm.h            |  20 +++
 xen/arch/arm/xen.lds.S                       |   1 +
 7 files changed, 195 insertions(+)
 create mode 100644 xen/arch/arm/arm64/mpu/head.S
 create mode 100644 xen/arch/arm/include/asm/arm64/mpu/sysregs.h
 create mode 100644 xen/arch/arm/include/asm/mpu/arm64/mm.h
 create mode 100644 xen/arch/arm/include/asm/mpu/mm.h

diff --git a/xen/arch/arm/arm64/mpu/Makefile b/xen/arch/arm/arm64/mpu/Makefile
index b18cec4836..a8a750a3d0 100644
--- a/xen/arch/arm/arm64/mpu/Makefile
+++ b/xen/arch/arm/arm64/mpu/Makefile
@@ -1 +1,2 @@
+obj-y += head.o
 obj-y += mm.o
diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
new file mode 100644
index 0000000000..9377ae778c
--- /dev/null
+++ b/xen/arch/arm/arm64/mpu/head.S
@@ -0,0 +1,122 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Start-of-day code for an Armv8-R MPU system.
+ */
+
+#include <asm/mm.h>
+#include <asm/arm64/mpu/sysregs.h>
+
+#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
+#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
+#define REGION_DATA_PRBAR       0x32    /* SH=11 AP=00 XN=10 */
+
+#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
+
+/*
+ * Macro to prepare and set a EL2 MPU memory region.
+ * We will also create an according MPU memory region entry, which
+ * is a structure of pr_t,  in table \prmap.
+ *
+ * Inputs:
+ * sel:         region selector
+ * base:        reg storing base address (should be page-aligned)
+ * limit:       reg storing limit address
+ * prbar:       store computed PRBAR_EL2 value
+ * prlar:       store computed PRLAR_EL2 value
+ * maxcount:    maximum number of EL2 regions supported
+ * attr_prbar:  PRBAR_EL2-related memory attributes. If not specified it will be
+ *              REGION_DATA_PRBAR
+ * attr_prlar:  PRLAR_EL2-related memory attributes. If not specified it will be
+ *              REGION_NORMAL_PRLAR
+ */
+.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
+    /* Check if the region is empty */
+    cmp   \base, \limit
+    beq   1f
+
+    /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
+    cmp   \sel, \maxcount
+    bge   fail_insufficient_regions
+
+    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
+    and   \base, \base, #MPU_REGION_MASK
+    mov   \prbar, #\attr_prbar
+    orr   \prbar, \prbar, \base
+
+    /* Limit address should be inclusive */
+    sub   \limit, \limit, #1
+    and   \limit, \limit, #MPU_REGION_MASK
+    mov   \prlar, #\attr_prlar
+    orr   \prlar, \prlar, \limit
+
+    msr   PRSELR_EL2, \sel
+    isb
+    msr   PRBAR_EL2, \prbar
+    msr   PRLAR_EL2, \prlar
+    dsb   sy
+    isb
+
+1:
+.endm
+
+/*
+ * Failure caused due to insufficient MPU regions.
+ */
+FUNC_LOCAL(fail_insufficient_regions)
+    PRINT("- Number of MPU regions set in MPUIR_EL2 is too less -\r\n")
+1:  wfe
+    b   1b
+END(fail_insufficient_regions)
+
+/*
+ * Maps the various sections of Xen (described in xen.lds.S) as different MPU
+ * regions.
+ *
+ * Inputs:
+ *   lr : Address to return to.
+ *
+ * Clobbers x0 - x5
+ *
+ */
+FUNC(enable_boot_cpu_mm)
+
+    /* Get the number of regions specified in MPUIR_EL2 */
+    mrs   x5, MPUIR_EL2
+
+    /* x0: region sel */
+    mov   x0, xzr
+    /* Xen text section. */
+    ldr   x1, =_stext
+    ldr   x2, =_etext
+    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
+
+    /* Xen read-only data section. */
+    ldr   x1, =_srodata
+    ldr   x2, =_erodata
+    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_RO_PRBAR
+
+    /* Xen read-only after init and data section. (RW data) */
+    ldr   x1, =__ro_after_init_start
+    ldr   x2, =__init_begin
+    prepare_xen_region x0, x1, x2, x3, x4, x5
+
+    /* Xen code section. */
+    ldr   x1, =__init_begin
+    ldr   x2, =__init_data_begin
+    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
+
+    /* Xen data and BSS section. */
+    ldr   x1, =__init_data_begin
+    ldr   x2, =__bss_end
+    prepare_xen_region x0, x1, x2, x3, x4, x5
+
+    ret
+
+END(enable_boot_cpu_mm)
+
+/*
+ * Local variables:
+ * mode: ASM
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
new file mode 100644
index 0000000000..b0c31a58ec
--- /dev/null
+++ b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ASM_ARM_ARM64_MPU_SYSREGS_H
+#define __ASM_ARM_ARM64_MPU_SYSREGS_H
+
+/* Number of EL2 MPU regions */
+#define MPUIR_EL2   S3_4_C0_C0_4
+
+/* EL2 MPU Protection Region Base Address Register encode */
+#define PRBAR_EL2   S3_4_C6_C8_0
+
+/* EL2 MPU Protection Region Limit Address Register encode */
+#define PRLAR_EL2   S3_4_C6_C8_1
+
+/* MPU Protection Region Selection Register encode */
+#define PRSELR_EL2  S3_4_C6_C2_1
+
+#endif /* __ASM_ARM_ARM64_MPU_SYSREGS_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 5abd4b0d1c..7e61f37612 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -16,6 +16,8 @@
 
 #if defined(CONFIG_MMU)
 # include <asm/mmu/mm.h>
+#elif defined(CONFIG_MPU)
+# include <asm/mpu/mm.h>
 #else
 # error "Unknown memory management layout"
 #endif
diff --git a/xen/arch/arm/include/asm/mpu/arm64/mm.h b/xen/arch/arm/include/asm/mpu/arm64/mm.h
new file mode 100644
index 0000000000..c2640b50df
--- /dev/null
+++ b/xen/arch/arm/include/asm/mpu/arm64/mm.h
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * mm.h: Arm Memory Protection Unit definitions.
+ */
+
+#ifndef __ARM64_MPU_MM_H__
+#define __ARM64_MPU_MM_H__
+
+#define MPU_REGION_SHIFT  6
+#define MPU_REGION_ALIGN  (_AC(1, UL) << MPU_REGION_SHIFT)
+#define MPU_REGION_MASK   (~(MPU_REGION_ALIGN - 1))
+
+#endif /* __ARM64_MPU_MM_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/mpu/mm.h b/xen/arch/arm/include/asm/mpu/mm.h
new file mode 100644
index 0000000000..92599a1d75
--- /dev/null
+++ b/xen/arch/arm/include/asm/mpu/mm.h
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __ARM_MPU_MM__
+#define __ARM_MPU_MM__
+
+#if defined(CONFIG_ARM_64)
+# include <asm/mpu/arm64/mm.h>
+#else
+# error "unknown ARM variant"
+#endif
+
+#endif /* __ARM_MPU_MM__ */
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index d1e579e8a8..bbccff1a03 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -147,6 +147,7 @@ SECTIONS
        *(.altinstr_replacement)
   } :text
   . = ALIGN(PAGE_SIZE);
+  __init_data_begin = .;
   .init.data : {
        *(.init.rodata)
        *(.init.rodata.*)
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:46:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:46:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826452.1240735 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5P8m-00065b-JN; Mon, 28 Oct 2024 12:46:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826452.1240735; Mon, 28 Oct 2024 12:46: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 1t5P8m-00065Q-FL; Mon, 28 Oct 2024 12:46:36 +0000
Received: by outflank-mailman (input) for mailman id 826452;
 Mon, 28 Oct 2024 12:46: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5P8l-00050g-12
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:46:35 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on2061a.outbound.protection.outlook.com
 [2a01:111:f403:2406::61a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a965d574-952a-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:46:34 +0100 (CET)
Received: from MW4PR04CA0245.namprd04.prod.outlook.com (2603:10b6:303:88::10)
 by DS0PR12MB7802.namprd12.prod.outlook.com (2603:10b6:8:145::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.23; Mon, 28 Oct
 2024 12:46:31 +0000
Received: from BL6PEPF00022574.namprd02.prod.outlook.com
 (2603:10b6:303:88:cafe::9a) by MW4PR04CA0245.outlook.office365.com
 (2603:10b6:303:88::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.23 via Frontend
 Transport; Mon, 28 Oct 2024 12:46:30 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL6PEPF00022574.mail.protection.outlook.com (10.167.249.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8114.16 via Frontend Transport; Mon, 28 Oct 2024 12:46:30 +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.39; Mon, 28 Oct
 2024 07:46:30 -0500
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.39; Mon, 28 Oct
 2024 07:46:29 -0500
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.39 via
 Frontend Transport; Mon, 28 Oct 2024 07:46:28 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a965d574-952a-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=utYT/0/qj3Y5kKAeBTKBkaobdm9di9wZ6AL4r1e98rLqo8jMasPm39+cv0A7gcq72dxJY2HHL+Qs26W0Figbgn3EMhcI3/CqOJX2PBPiBxp4qEat17jTJxmyfsmCDPVkTfN9Ebf/lSgAaZ9CT8D5qNzIFFOPGF1tm41vuoO0inwrxmduGPxbn8Fbyxj8Ry92PvUycwnshopdK3iBT+SJzer+3hiNSS5na+3NwauNQe4CxsDU6rd34bIjFGVmq8jmj+t1QdsrR8LHwK6IZU290jeDa+fcDUfXiBEkuDnH8s636+qDDy+ClP3pn1ZrDv3oFiPQSnCC3+3vklJfhHRJlw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=E4ilOMJ0iLFTChx6I4m08V3KKvqq6Suvoj0IUas/+dk=;
 b=JYsAo6pMSsfH6oKIT+t8oa6d/CiV9K6hO0R5jgx7Bq17pA70QNunhRsBR80Csn9Hejy1tnTSBglQvlV7dBsSjUXZY9HtTDCbhxwtpCpi+xTfmDxPPS3PBv4mi7vAHCTatkDWc7nDrIKAU8wIJeDR8HnWumwtOcyZXBJmABpu9KdHg6CUqqmUaKAi2TXYIThI+A2qd0I9TkaBNLFg1wzMoh3plOLeds9JpR4i98w6qmzcbtMZqL/gkiyF38O8mPeFDM4o1XfD4RUGBHOKKTZTr1XpZUTTP/aksb7BAViC92QGG82T9lk91ccVM2ZhiBjqPKVvD8lidVbEtfE9M7riPQ==
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=E4ilOMJ0iLFTChx6I4m08V3KKvqq6Suvoj0IUas/+dk=;
 b=lZhITCuqQZOJ5XeQFfP6q0oPYrMLis3i+TYjv0lf0zCsZT5Mogry6bamTkcrhDicwu7tD2ky/VprbZJjjUQi4XqngWch+LwmiQ5ZlkbHRLn+Bs31S2HoHarEIHwTtI66DsiDddk/UsMWHUiMoGv0vfn/GSecfXV2uZN2Itv96+g=
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: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Andrew Cooper
	<andrew.cooper3@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>
Subject: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy enable_secondary_cpu_mm
Date: Mon, 28 Oct 2024 12:45:47 +0000
Message-ID: <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
References: <20241028124547.1371867-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: BL6PEPF00022574:EE_|DS0PR12MB7802:EE_
X-MS-Office365-Filtering-Correlation-Id: a2d27b14-c259-4f8a-90b5-08dcf74e8be0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?RmhAJoKWcSepcARtEC+MOLVdyHdtUItooXLteO87lYEHMUEhnh6M7tZHZr95?=
 =?us-ascii?Q?aOHZ70QEG9RaBEx+OghUXygN6eMp6HNt+dZ1fEA86eUfvhaf9az6RnZb8hBd?=
 =?us-ascii?Q?RnAvpssN32DN9xQq30KneQAxDP3aAGPRbCAqi3bih23sXAbxFOLyO7iSYcco?=
 =?us-ascii?Q?nYUwSatgr9kMt/yWChajte49pfxGQ6QShuZidf96RtJDXW6NFACZuNNzPHDg?=
 =?us-ascii?Q?sFgXNEvAxEEPW1b1gAG1kXxKlmhGM1e+fEtvOVhGVkKNmIU0ggqVKRDf2zbY?=
 =?us-ascii?Q?FS1Zb5P8Ub8qlGyqpf+mgo//tlUYpEnsNg/mfjSkkSm1i9Kg1lJhOcuT6pqH?=
 =?us-ascii?Q?vRRGPL6ck2YAF6MDYOt7cjIUuxrSA0J0M27V9lC8XzQCEHWVoHtLi3s2bgEr?=
 =?us-ascii?Q?rOkffekFCV4OASBgiBEii/0gzxhrQRbLsywq6e2eQetxZh07X7SQ0Ubu5Q44?=
 =?us-ascii?Q?WsgJtCSv7tfqz7HcXpTeODEVCu5SmO+XZYoecgHIWwYh/gpeodjwZdz6a/Z2?=
 =?us-ascii?Q?YPyuipZz1iUr+5weWzRFM0UJJMZBTBm7LcOeNWpoh5MS8LyYJ4nYeDilbZEX?=
 =?us-ascii?Q?KSHCopIAHqQ9YtsMZLXgPw2ZqqJ3Yu5f8oUkyjHKAsXKfBldw5UEa30skOw/?=
 =?us-ascii?Q?2apmpYS6AuNRvcEF20yeoZBfh+D4ao49p57osxVAHAjlIuh2/Y1ysgxFv75c?=
 =?us-ascii?Q?IwQvAPoPdDNy/StH9kOM4+XIGQlfYf4yBy4u4k5aCtNtlCS/+m0gnyM7kNAv?=
 =?us-ascii?Q?B8GFhQOCZDOLpKilZHI3baVB9Hx8LGF7yakWERYL/jAila0h6RKtKSaz0HX0?=
 =?us-ascii?Q?1zw5X+522EsUQV2f3oHctuVMHhFxv6UQDOX+RIp+7XUu/oMWYC/Vxn1ctdmn?=
 =?us-ascii?Q?ULaE76OHD9RTOogTnwqfVzjP8auOkDevaFXicIwtnazkRhmkI3Tcq7A+YHl0?=
 =?us-ascii?Q?2RoGhdoe1xd7Smvz3OpVv91WtC63dGiPfLily4w13R3yIlH2vDW3nUiF6suk?=
 =?us-ascii?Q?ImybKOJscc7MaLtAOx+B/iTIsCMPvqKkY9slIoP7tpmIqcN4xdQG7FhWMBco?=
 =?us-ascii?Q?AjUey9DCcGwX46M9GlMAXcaB0Lz3k7armUmX/BXZC4T2mbwgXny8urivTF+/?=
 =?us-ascii?Q?9vdOqLhfT/yZP7IfiLMmjiA1yOblqeJjGGDEri9uNJGzDqbviFMoDWYAoVrb?=
 =?us-ascii?Q?XxCQm0/8dd26+A3yeTxdbFrDjYuCdCYeFCYIoKt6qaXIfm5PnRfriCHibHIV?=
 =?us-ascii?Q?/t1BMvYXb/9HWRye/Ue06T/nKiec4WgZrUViqiNZCoIodjvOktuvXri7Falf?=
 =?us-ascii?Q?NBPWfZUarAdfXroZEHOq1BkcHqFvZ0n52LJgb18kFiEXOvWsj+OnGbXswS8k?=
 =?us-ascii?Q?8+gR3B6QSQqKyqO2Lix49bRG/dlSIWlwE/Kr/oZMJVabLGIfHw=3D=3D?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 12:46:30.5246
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a2d27b14-c259-4f8a-90b5-08dcf74e8be0
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:
	BL6PEPF00022574.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7802

Secondary cpus initialization is not yet supported. Thus, we print an
appropriate message and put the secondary cpus in WFE state.
And we introduce to BUILD_BUG_ON to prevent users using from building Xen
on multiprocessor based MPU systems.

In Arm, there is no clean way to disable SMP. As of now, we wish to support
MPU on UNP only. So, we have defined the default range of NR_CPUs to be 1 for
MPU.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v1 - 1. NR_CPUS is defined as 1 for MPU

2. Added a message in enable_secondary_cpu_mm()

v2 - 1. Added the range

2. Clarified in the commit message why/how we have disabled SMP.

v3 - 1. BUILD_BUG_ON() is moved to smp.c.

 xen/arch/Kconfig              |  2 ++
 xen/arch/arm/arm64/mpu/head.S | 10 ++++++++++
 xen/arch/arm/smp.c            | 11 +++++++++++
 3 files changed, 23 insertions(+)

diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
index 308ce129a8..aa383577a4 100644
--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
 
 config NR_CPUS
 	int "Maximum number of CPUs"
+	range 1 1 if ARM && MPU
 	range 1 16383
 	default "256" if X86
 	default "8" if ARM && RCAR3
 	default "4" if ARM && QEMU
 	default "4" if ARM && MPSOC
+	default "1" if ARM && MPU
 	default "128" if ARM
 	help
 	  Controls the build-time size of various arrays and bitmaps
diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
index 0edadb009c..5a6aaf47cd 100644
--- a/xen/arch/arm/arm64/mpu/head.S
+++ b/xen/arch/arm/arm64/mpu/head.S
@@ -140,6 +140,16 @@ FUNC(enable_boot_cpu_mm)
     ret
 END(enable_boot_cpu_mm)
 
+/*
+ * We don't yet support secondary CPUs bring-up. Implement a dummy helper to
+ * please the common code.
+ */
+ENTRY(enable_secondary_cpu_mm)
+    PRINT("- SMP not enabled yet -\r\n")
+1:  wfe
+    b 1b
+ENDPROC(enable_secondary_cpu_mm)
+
 /*
  * Local variables:
  * mode: ASM
diff --git a/xen/arch/arm/smp.c b/xen/arch/arm/smp.c
index c11bba93ad..b372472188 100644
--- a/xen/arch/arm/smp.c
+++ b/xen/arch/arm/smp.c
@@ -1,4 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
+#include <xen/init.h>
 #include <xen/mm.h>
 #include <asm/system.h>
 #include <asm/smp.h>
@@ -6,6 +7,16 @@
 #include <asm/gic.h>
 #include <asm/flushtlb.h>
 
+static void __init __maybe_unused build_assertions(void)
+{
+#ifdef CONFIG_MPU
+    /*
+     * Currently, SMP is not enabled on MPU based systems.
+     */
+    BUILD_BUG_ON(NR_CPUS > 1);
+#endif
+}
+
 void arch_flush_tlb_mask(const cpumask_t *mask)
 {
     /* No need to IPI other processors on ARM, the processor takes care of it. */
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:46:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:46:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826454.1240745 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5P8q-0006Wt-2C; Mon, 28 Oct 2024 12:46:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826454.1240745; Mon, 28 Oct 2024 12:46: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 1t5P8p-0006Wi-Uo; Mon, 28 Oct 2024 12:46:39 +0000
Received: by outflank-mailman (input) for mailman id 826454;
 Mon, 28 Oct 2024 12:46: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5P8o-00050g-Mk
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:46:38 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20606.outbound.protection.outlook.com
 [2a01:111:f403:200a::606])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ab555208-952a-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:46:38 +0100 (CET)
Received: from PH7P220CA0098.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:32d::9)
 by DS7PR12MB8417.namprd12.prod.outlook.com (2603:10b6:8:eb::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.23; Mon, 28 Oct
 2024 12:46:29 +0000
Received: from CY4PEPF0000E9CD.namprd03.prod.outlook.com
 (2603:10b6:510:32d:cafe::2e) by PH7P220CA0098.outlook.office365.com
 (2603:10b6:510:32d::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.26 via Frontend
 Transport; Mon, 28 Oct 2024 12:46:29 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000E9CD.mail.protection.outlook.com (10.167.241.132) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8114.16 via Frontend Transport; Mon, 28 Oct 2024 12:46:28 +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.39; Mon, 28 Oct
 2024 07:46:27 -0500
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.39; Mon, 28 Oct
 2024 07:46:27 -0500
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.39 via
 Frontend Transport; Mon, 28 Oct 2024 07:46:26 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ab555208-952a-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=m3I883Oyut7aFQMbsqhpzpFIoI2GvBA+PT0q955pOKZN9OZEYV+IRo/dvPQ/0TpYDdsWDDWnMGOU/xQBWTTyDL7CT96pjHNF5YHZIb2d3IxO9QtaGcKySR3F9M199Cmn9Xrp+LqHHyu5a/z4OrhCdGzNxI8Zji8+HtqFwXwHwUVEmP/Ji1Tu4aX94s62OjaArZg9Kh+T+bAh/4wtHf0g+70gdkW/ub+opegXv5hoJ3qegPsuicfS5H+8fn8n2zjAvrsL84Bj63tEZVBkaHbS7TuhBfz9aWvgtpxYUBbO/cV8ZEfWU3NaJvztCmeOw97H13QP3gEofXrNYyUXQ4UVpw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=Gbtn/b9PyyI/M8LkjdkVTqNsj2orDE7jZ4wJ89CVFig=;
 b=eqIt/y/DM58FmHhTLH/shJ3YcB7rbOR/kEzmUCaltaSIxAvW38GypwLP+EMjc8dQr4DW6CzSOC2ah09GsWe2w/CsI75JAbJf5GY9p7jlHEXhyLijWW2n1SJM1VjTvnNIguvNJuj0jy1nyXyGPPIPrSx4McjOau4np43pmDJI4svlaqJITfPlMuMgo990EmzQduCxAY4KbwGvc/oqNY2zVD1cvAyDxjg4iMLtxTT2nacx7oDD+TmNrD9X/1ktBUBXHdK02qzaj5L7N7HSinI4xYVhMxNmHdUCSRBeE/afpAGGltBxvKnZzDcNl6D+c4a0Txh3WRzIkEXdYo3tP2tSiw==
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=Gbtn/b9PyyI/M8LkjdkVTqNsj2orDE7jZ4wJ89CVFig=;
 b=nR+NzA3XLeMIo8kSSZIWwIYs/MksP4PtL9jK1Da+TKc3dEakVkaJrsQwxBsgdBCWzAEt+EMFIM0rD535iOgLSjt+5dd+SPRCOcsmIJC8zmkVSyPYBgB5gkxmG5ff2U9IkJq2rhcWWj4xGwcbSoSWQnWOM8TRU2DxQ8bQZHU6sIo=
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: Ayan Kumar Halder <ayan.kumar.halder@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>
Subject: [PATCH v4 5/6] xen/arm: mpu: Enable MPU
Date: Mon, 28 Oct 2024 12:45:46 +0000
Message-ID: <20241028124547.1371867-6-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
References: <20241028124547.1371867-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: CY4PEPF0000E9CD:EE_|DS7PR12MB8417:EE_
X-MS-Office365-Filtering-Correlation-Id: a973a085-f70c-45d5-4065-08dcf74e8ae4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?7bKTzqvEBYthZpBLNCfgPh0lcQ2qoMSh+ev3T8WNJXv3OZjfyTbadUSQ0B9l?=
 =?us-ascii?Q?U2jLqbLtCnt9jsKJ/X8FXmMkdyu+zF6ywpnVZdsJQ5HmWiKXGMUpbgOlnMJj?=
 =?us-ascii?Q?tJolUWxpHSx5fxSn+XuvDGGgjTPw/COh0FJDOlcLcWRM/CQVXb5mtVEqG66D?=
 =?us-ascii?Q?ptcXl4fyHClCWzrme6sgX3RNU6gVf/uFaf/R1cHjONCqJvDFXkdWvvuTTqMu?=
 =?us-ascii?Q?O1cxeg0ZZYP0LUFeLzImSHQRCy4NTTqC0VqHRWfUXON/5RbcnqWnEBMduMYb?=
 =?us-ascii?Q?mIcLFXCjR/PCN1k8KLM5LfcBNem5LNnL6BaUNFehqO5w+z/uxUB+s1kSJhyD?=
 =?us-ascii?Q?yCD+RpGrvns3Zb7gYL/fNdGPJCJuNfO4B95QlwpwF+Dt9yOPtJ0hmER7xJ9g?=
 =?us-ascii?Q?Uaf4+aLdiBfSOZpP0G8NmZawdLe7X0MtH1r5DmKB0gjJuxsepvqc2F86Yb5R?=
 =?us-ascii?Q?5JqWumzC7hKTJRMdrU/+zkl4MNJHI2ACY4XCVaGdO3lBI043+0QzMrihEaAv?=
 =?us-ascii?Q?PdTSs3KGZ64cNz7js92QLQIjHKPd79/H3Je6KWZV3706/tsZroSWpLcKdeDK?=
 =?us-ascii?Q?Bd2csldFePaF4ihwXj87Cm/WhfxobUE/5WcuA2gJgng8Wgdv43p4Sr9+bNjI?=
 =?us-ascii?Q?GjJS2irzHAiwe418UKN/wVxDMPO4+ibJOvhOXwgX6wUdtllcd0yLZBfeclIb?=
 =?us-ascii?Q?gBgBTYphTbFwwXqnFoJvDkSAt4bWbcxFO1/W6bxnChjVExSH0a3M3iLbdoNX?=
 =?us-ascii?Q?rvZps1xxIc72D4Hv3iMdk8q1wcgZDvgqiTb7+MQq4yvtCY9lNCLapRXzxU0P?=
 =?us-ascii?Q?qkM8ECPsVz4nxHmPDVKcWNRZVoHAe9nczsKaW2WYkeBEfJV6OxPkcA50sNCq?=
 =?us-ascii?Q?CORFnJNgZdsNuIldeGWNXTijvaX+C8AuXp/eG+0DqGwfCxVtkC2FbtpLtTag?=
 =?us-ascii?Q?8f6Cc9V4sym4Nrnvg9inuHnFEdN/fqLQo3isEpUkFYMoSqIP37FGAR5U3S+4?=
 =?us-ascii?Q?iu0pXnXRX7cM5BZVDUXQzeYx36Hne9ETbgqGKylF2ui3HEj8pIFgXUzjzFmq?=
 =?us-ascii?Q?k5Jmt1Rlr2LDYzuRIFXc0xD72bd9Lai/C2LpgXgunNWuaQaxcMqh5QV1/sj4?=
 =?us-ascii?Q?Tu39Y3U150KquOeihxTq2w/v+iAaimJw2YYAsRBDZtd1RmtZ1KQh5ZIpmks2?=
 =?us-ascii?Q?N4k2uOtkZyo7XmRPajXM5lXbmybFkYaEunPElMBM+qifrke2Uc3zdqQUlf1/?=
 =?us-ascii?Q?kBBUrnilt9XnuHfhOKW504cAAmSursMP9rnFO2xI8q57ohjFLzzwSMFgtm6o?=
 =?us-ascii?Q?tiuK/0e+N1uU7EDLiHszoVOOsIKpOAxMUIbXnTRjM59m2x2GMAEAcUaA9+9t?=
 =?us-ascii?Q?9qOs/kVprb1n5hkKPzaUvfLUzae52pIyiQ+RXWd1AWuE2QXY7Q=3D=3D?=
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:(13230040)(376014)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 12:46:28.7929
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a973a085-f70c-45d5-4065-08dcf74e8ae4
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:
	CY4PEPF0000E9CD.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8417

After the regions have been created, now we enable the MPU. For this we disable
the background region so that the new memory map created for the regions take
effect. Also, we treat all RW regions as non executable and the data cache is
enabled.

As enable_mpu() is invoked from enable_boot_cpu_mm(), one needs to save and
restore the lr.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from :-

v2 - 1. Extracted from the previous patch into a new one.

2. Disabled background region.

v3 - 1. Removed dsb before setting SCTLR_EL2. The reason being
>From ARM DDI 0487K.a D23-7349:
"Direct writes to these registers (includes SCTLR_EL2) are not allowed to affect
any instructions appearing in program order before the direct write."
So, we don't need a synchronization barrier before writing to SCTLR_EL2.
Further, we do have synchronization barriers after writing the MPU region
registers (which happens before we read SCTLR_EL2). So, SCTLR_EL2 is written
after the MPU registers are synchronized. And, thus adding a 'isb' to flush the
instruction pipeline ensures that the subsequent instructions are fetched after
the MPU has been enabled.

2. Saved and restored lr in enable_boot_cpu_mm().

 xen/arch/arm/arm64/mpu/head.S                | 30 ++++++++++++++++++--
 xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  3 ++
 2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
index 9377ae778c..0edadb009c 100644
--- a/xen/arch/arm/arm64/mpu/head.S
+++ b/xen/arch/arm/arm64/mpu/head.S
@@ -68,6 +68,29 @@ FUNC_LOCAL(fail_insufficient_regions)
     b   1b
 END(fail_insufficient_regions)
 
+/*
+ * Enable EL2 MPU and data cache
+ * If the Background region is enabled, then the MPU uses the default memory
+ * map as the Background region for generating the memory
+ * attributes when MPU is disabled.
+ * Since the default memory map of the Armv8-R AArch64 architecture is
+ * IMPLEMENTATION DEFINED, we intend to turn off the Background region here.
+ *
+ * Clobbers x0
+ *
+ */
+FUNC_LOCAL(enable_mpu)
+    mrs   x0, SCTLR_EL2
+    bic   x0, x0, #SCTLR_ELx_BR       /* Disable Background region */
+    orr   x0, x0, #SCTLR_Axx_ELx_M    /* Enable MPU */
+    orr   x0, x0, #SCTLR_Axx_ELx_C    /* Enable D-cache */
+    orr   x0, x0, #SCTLR_Axx_ELx_WXN  /* Enable WXN */
+    msr   SCTLR_EL2, x0
+    isb
+
+    ret
+END(enable_mpu)
+
 /*
  * Maps the various sections of Xen (described in xen.lds.S) as different MPU
  * regions.
@@ -75,10 +98,11 @@ END(fail_insufficient_regions)
  * Inputs:
  *   lr : Address to return to.
  *
- * Clobbers x0 - x5
+ * Clobbers x0 - x6
  *
  */
 FUNC(enable_boot_cpu_mm)
+    mov   x6, lr
 
     /* Get the number of regions specified in MPUIR_EL2 */
     mrs   x5, MPUIR_EL2
@@ -110,8 +134,10 @@ FUNC(enable_boot_cpu_mm)
     ldr   x2, =__bss_end
     prepare_xen_region x0, x1, x2, x3, x4, x5
 
-    ret
+    bl    enable_mpu
 
+    mov   lr, x6
+    ret
 END(enable_boot_cpu_mm)
 
 /*
diff --git a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
index b0c31a58ec..3769d23c80 100644
--- a/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
+++ b/xen/arch/arm/include/asm/arm64/mpu/sysregs.h
@@ -15,6 +15,9 @@
 /* MPU Protection Region Selection Register encode */
 #define PRSELR_EL2  S3_4_C6_C2_1
 
+/* Backgroud region enable/disable */
+#define SCTLR_ELx_BR    BIT(17, UL)
+
 #endif /* __ASM_ARM_ARM64_MPU_SYSREGS_H */
 
 /*
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:48:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:48:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826474.1240755 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PAe-0008SG-DW; Mon, 28 Oct 2024 12:48:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826474.1240755; Mon, 28 Oct 2024 12:48: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 1t5PAe-0008S9-AJ; Mon, 28 Oct 2024 12:48:32 +0000
Received: by outflank-mailman (input) for mailman id 826474;
 Mon, 28 Oct 2024 12:48: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5PAc-0008Ra-6G
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:48:30 +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 ee4af18a-952a-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:48:29 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-37d49ffaba6so2999714f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 05:48:29 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b3bdafsm9410148f8f.30.2024.10.28.05.48.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 05:48:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee4af18a-952a-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730119708; x=1730724508; 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=HVV0i1f9aQh1KEK0+Ek6PfNU2orVxs3qS14p3Ydb8pA=;
        b=SeI2IW57ZMagBFef38ed1/gO4x+S03uN8KyPXeQ5A6xN6VjMGozRXPZ6EAsd1V18zD
         Vt7QSPklMbqRDPna1uh2H7hgGgyVuNjRSnZtaURtckYN2Y5JiTL941SlVX1YRrG438af
         prunrwan1CPTuQajM2xbbJkbg2WDA7a51LmZ/1OwHQm41uzuUhxMcaJ0rCCrN3EwlFAC
         ypAmQez208jV3Kfpa7PTGcy37mzn4SQEBK/KYXUqsHA6qOWVUyOCWwoagEgli6pOA782
         DCjkIqB4JerIkR28YGEcqSfwesc/wJpp+glbnET+UaDoSnc+IDJ0FPryhygrLH0FaQtN
         Y02A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730119708; x=1730724508;
        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=HVV0i1f9aQh1KEK0+Ek6PfNU2orVxs3qS14p3Ydb8pA=;
        b=gd77lSBAMmXMWVpsL5iiz76b1zR8ngPNdMk9GjjxTknRDoPra8vT2iZbo17KG8EQ09
         UYSCtQKvmRwZIMMdSyDNGrQs/nBAfmO0BJMlEf9p3rVKVx1YiYcB9j6CrpBY8OSoM9fn
         O14w7Q9cwIMdygULo3SSAJ4izN2ztPukqNTKn1lorP4MxOc5ZwwLr2ZG0E7FW7bnMHVn
         FOI6GQMvmljZC6n4wullPyZs3mKf2lYQ08Qr5aycS/L4EuEEJUN6HHyj77C6ONWu+8NR
         diOs83OjSmrGv0le1WHO6zebXkyMheBQnP7TjzxRjHVAcaAABU27jusGun3OBH9K43gk
         oOQQ==
X-Forwarded-Encrypted: i=1; AJvYcCWQkCtTS+OB3kR87p5puZTTX+7nG1Uc97f8BeD2HERSZ8tDjpYk0hIo0TWwwApXHePO+FCTfVfspTk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx9nQ0GNHc/0Yvu2owmsR98Jb6RKctNXjuXS0e/623mOcmkr1ti
	8c90ZnsFFbcrRjQrf75kLwS0AIXaAZyLFnh0YRcuEsJ2FC82dYfk49us+P/88w==
X-Google-Smtp-Source: AGHT+IGYa4BEUHV65d+VfslMNcHWdxTibRMLZvBxVP/NmH+EjVgeB3HZ4RnYQuaN8L+9Bg2iukjYvQ==
X-Received: by 2002:adf:e851:0:b0:37d:45f0:b33 with SMTP id ffacd0b85a97d-380610e6444mr5752486f8f.9.1730119708604;
        Mon, 28 Oct 2024 05:48:28 -0700 (PDT)
Message-ID: <51632c96-9a12-4656-b8f8-1631c11a3a19@suse.com>
Date: Mon, 28 Oct 2024 13:48:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/libxl: remove usage of VLA arrays
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>, Roger Pau Monne <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028114831.27487-1-roger.pau@citrix.com>
 <3828ba9f-9bc8-4b65-a42f-b67ef061be52@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: <3828ba9f-9bc8-4b65-a42f-b67ef061be52@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 13:03, Andrew Cooper wrote:
> On 28/10/2024 11:48 am, Roger Pau Monne wrote:
>> Clang 19 complains with the following error when building libxl:
>>
>> libxl_utils.c:48:15: error: variable length array folded to constant array as an extension [-Werror,-Wgnu-folding-constant]
>>    48 |     char path[strlen("/local/domain") + 12];
>>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> Replace the usage of strlen() with ARRAY_SIZE(), which allows the literal
>> string length to be known at build time.  Note ARRAY_SIZE() accounts for the
>> NUL terminator while strlen() didn't, hence subtract 1 from the total size
>> calculation.
>>
>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>> ---
>>  tools/libs/light/libxl_utils.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_utils.c
>> index 10398a6c8611..b3f5e751cc3f 100644
>> --- a/tools/libs/light/libxl_utils.c
>> +++ b/tools/libs/light/libxl_utils.c
>> @@ -45,7 +45,7 @@ unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned
>>  char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid)
>>  {
>>      unsigned int len;
>> -    char path[strlen("/local/domain") + 12];
>> +    char path[ARRAY_SIZE("/local/domain") + 11];
>>      char *s;
>>  
>>      snprintf(path, sizeof(path), "/local/domain/%d/name", domid);
>> @@ -141,7 +141,7 @@ int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *ctx, const char *p,
>>  char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid)
>>  {
>>      unsigned int len;
>> -    char path[strlen("/local/pool") + 12];
>> +    char path[ARRAY_SIZE("/local/pool") + 11];
>>      char *s;
>>  
>>      snprintf(path, sizeof(path), "/local/pool/%d/name", poolid);
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Although I have a minor preference for sizeof() as suggested by Frediano.
> 
> Can fix on commit, if you're happy?

Please can we stick to ARRAY_SIZE() when it comes to strings? It's the
same as sizeof() when the base type is char, but the difference becomes
relevant if the base type was e.g. wchar_t.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:53:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:53:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826479.1240764 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PF2-0001ZF-VS; Mon, 28 Oct 2024 12:53:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826479.1240764; Mon, 28 Oct 2024 12:53: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 1t5PF2-0001Z8-Sr; Mon, 28 Oct 2024 12:53:04 +0000
Received: by outflank-mailman (input) for mailman id 826479;
 Mon, 28 Oct 2024 12:53: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5PF2-0001Z2-Ai
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:53:04 +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 910ce7f6-952b-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 13:53:02 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-539fe76e802so5008884e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 05:53:02 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4319360d233sm107125945e9.45.2024.10.28.05.53.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 05:53:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 910ce7f6-952b-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730119982; x=1730724782; 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=hNvgeAnNnZLtnVTZBry7xRCUX2q+4a22RR4Gn5/MM70=;
        b=P0hOILfiJs9ut9BLWR0DDVpui9l0AHVXLIcWpjPKpO7P7y7vUIWAJRUslx6R2tcJzR
         NAE1wydjRR6S7QNw/LEoZB26LjZG8TJdjAT/z13g4nkurJeqwiCWEyM7UXhISgrylE9p
         LUXptGWhIoZ8XG/NlZZ75dfTqMxRJ7ofBh+GP4tsSJNVxciid2uj5VSEuxvIuEIvs1zu
         /rIX27jdd1cNT1q+YYiJu6LXxXkSAiC1IoCE5V/tGZ/XCYJt43li8jLVfjlsNVOubb4z
         GMAafyOqIgzXzEpb+k1RbFT93TbACzSUgMdACE5iwijI/PceZn8I0FoghBlCXivDCQZ6
         JLbA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730119982; x=1730724782;
        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=hNvgeAnNnZLtnVTZBry7xRCUX2q+4a22RR4Gn5/MM70=;
        b=WviLHanZFTWmJn9Q7iyGAuNfqtyNodv662kN/rCHDBbJ87DSXgeJX2MGhtJveoO9oR
         K6nHAk9cWXFzJU57+hnJHrHOL9G5M9DWIoq9qC2mo/B2rlFJGnL3/aqwd77I3++FvWSZ
         Hlp9J3m/laTCXm3m0QIVuH5RnFctDXtcYIkDhay+GFHu9seK6pDxJ0wxz9TcNVUZ+n9X
         IDe2KAqaQhalDq5p38JY56zPDNeSdVVawo6Ppi9YTySzJw8MHpVx68+Y02FlIu9D8lxc
         DrceecBbdoMhAv4JTVeir5iotlFqv0iLUnsMezpW4A7xFZT9r1Ej7VQ2CTHc7xuP1fGJ
         0Mdw==
X-Forwarded-Encrypted: i=1; AJvYcCVIgi05PtEB3vvb1Li0256/SR2cunxlBv/UYfiiJlSj53uZg2+8S3oJtQFXbfsEgcyPmA7CC2ejl0A=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyGHr3MUNKeqvt8cOPrDMYOhn47pIRLCYJ4Lok5PFUBLVFxpXSG
	UIB8bLw+2/ZgsoZPsgWA/gP5TnBPbVmxxik9pJhv/2m0O5i+mu2XD3yY7j5jcg==
X-Google-Smtp-Source: AGHT+IFO8G0XnpmD7Sbj9qtEUhD3rhnB31jVG+xFMP9JLoFCIo9vKFQY5WWolwfaDL1kCSc1vqZb/g==
X-Received: by 2002:a05:6512:3045:b0:533:d3e:16fe with SMTP id 2adb3069b0e04-53b3491e270mr3358384e87.38.1730119981563;
        Mon, 28 Oct 2024 05:53:01 -0700 (PDT)
Message-ID: <dd07d7b4-4d0d-4c51-a1e5-70e39223732e@suse.com>
Date: Mon, 28 Oct 2024 13:53:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] NUMA: Introduce NODE_DATA->node_present_pages(RAM
 pages)
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Bernhard Kaindl <bernhard.kaindl@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <20241027144305.1839348-1-bernhardkaindl7@gmail.com>
 <D57FBXUKL8PH.1FQRR4NJ139AX@cloud.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: <D57FBXUKL8PH.1FQRR4NJ139AX@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 13:05, Alejandro Vallejo wrote:
> On Sun Oct 27, 2024 at 2:43 PM GMT, Bernhard Kaindl wrote:
>> @@ -499,15 +500,44 @@ int __init compute_hash_shift(const struct node *nodes,
>>      return shift;
>>  }
>>  
>> -/* Initialize NODE_DATA given nodeid and start/end */
>> +/**
>> + * @brief Initialize a NUMA node's node_data structure at boot.
>> + *
>> + * It is given the NUMA node's index in the node_data array as well
>> + * as the start and exclusive end address of the node's memory span
>> + * as arguments and initializes the node_data entry with this information.
>> + *
>> + * It then initializes the total number of usable memory pages within
>> + * the NUMA node's memory span using the arch_get_ram_range() function.
>> + *
>> + * @param nodeid The index into the node_data array for the node.
>> + * @param start The starting physical address of the node's memory range.
>> + * @param end The exclusive ending physical address of the node's memory range.
>> + */
>>  void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end)
>>  {
>>      unsigned long start_pfn = paddr_to_pfn(start);
>>      unsigned long end_pfn = paddr_to_pfn(end);
>> +    struct node_data *numa_node = NODE_DATA(nodeid);
>> +    paddr_t start_ram, end_ram;
> 
> With the loop in place and arch_get_ram_range() being called inside, these two
> can further reduce scope by being moved inside as well.
> 
>> +    unsigned int idx = 0;
>> +    unsigned long *pages = &numa_node->node_present_pages;
>>  
>> -    NODE_DATA(nodeid)->node_start_pfn = start_pfn;
>> -    NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
>> +    numa_node->node_start_pfn = start_pfn;
>> +    numa_node->node_spanned_pages = end_pfn - start_pfn;
>> +
>> +    /* Calculate the number of present RAM pages within the node: */
> 
> nit: that last ":" feels a bit out of place
> 
>> +    *pages = 0;
>> +    do {
>> +        int err = arch_get_ram_range(idx++, &start_ram, &end_ram);
>> +
>> +        if (err == -ENOENT)
> 
> Missing spaces between condition and the parenthesis of the conditional. But...
> 
>> +            break;
>> +        if ( err || start_ram >= end || end_ram <= start )
>> +            continue;  /* range is outside of the node, or not usable RAM */
>>  
>> +        *pages += PFN_DOWN(min(end_ram, end)) - PFN_UP(max(start_ram, start));
>> +    } while (1);
> 
> ... testing for validity rather than invalidity would allow the loop to be
> checked for termination on the termination condition rather than the ad-hoc
> check inside. That is...
> 
>     (untested)
> 
>     do {
>         paddr_t start_ram, end_ram;
>         int err = arch_get_ram_range(idx++, &start_ram, &end_ram);
> 
>         if ( !err && start_ram < end && end_ram > start )
>             *pages += PFN_DOWN(min(end_ram, end)) -
>                       PFN_UP(max(start_ram, start));
>     } while (err != ENOENT);

     } while ( err != -ENOENT );

> That said, take all of this with a pinch of salt. I'm not a maintainer here,
> after all, and you might want to wait for Andrew, Jan or Roger to chip in.

Apart from the small remark above I agree with the comments made, fwiw.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:55:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:55:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826484.1240775 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PHm-00029h-Ck; Mon, 28 Oct 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 826484.1240775; Mon, 28 Oct 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 1t5PHm-00029a-9k; Mon, 28 Oct 2024 12:55:54 +0000
Received: by outflank-mailman (input) for mailman id 826484;
 Mon, 28 Oct 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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5PHl-00029U-0f
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:55:53 +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 f64b3a39-952b-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:55:52 +0100 (CET)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-37ed7eb07a4so3428177f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 05:55:52 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b70c73sm9545968f8f.72.2024.10.28.05.55.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 05:55:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f64b3a39-952b-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730120151; x=1730724951; 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=CRxFDXz4hybOPBRrMmB+OKN4mFWiVQfGxG6AfJxA1AA=;
        b=eOcFIcsWgSOAdNoL87ujbrUwhOw36PmNk8ZvWy4B+CnAJ9zwXVgu7scI43nw/9EpPm
         w37WoQdd2sBIRAoM6aHxzq8sYjlzhIbAYr+crylfSpepQmB0ytl3H6/eACh8XR81DwuJ
         6lPtLa/8zyQLUB3nFQFiWp7/X+hzUHmJc2C/+W0bPJHLCHPkIVonxBfDdaYphtFmj8ZD
         oYsxrceZSEsaa/xJKenZtmAbc6be+iNkTmGSDwu9lVUyzddnaSbQJI/T6gjXFnhwKR1t
         I89V7SXuiBwo159NSftW69Vx+JtpkwLZAYgkNuUzfIVKUbEZcRRzJQgscdr8WoAPOs9P
         aBGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730120151; x=1730724951;
        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=CRxFDXz4hybOPBRrMmB+OKN4mFWiVQfGxG6AfJxA1AA=;
        b=L0O7jQJGGxREIhtTlzXATH6nsJob5EgJurEQIneDJTpAVOX3o4EeJjhekIgrFDRxp3
         +dIi7Q7Dj6vtUUnjY2vGzHPv0F/0AaA0fCuEMP5pr9COph00U1GMbombTDQ9wWtHuqnx
         A5a57U9B6mVjHm/lDkZb0J+p6yOVZa5di2B6y7TL7164Fr5Nuu0IBj7h1DjuI1OvnQD3
         jRjeXiC+vsgF0GWuMobROhHJnmioluTbzUH7hUzhsS7WxgHs+7L26fZ4cIJXejC8EufH
         OQdD7wFqD44NDF26Bm2wo2DY4RjAjpMLrBX68ifFNGXHxfbWJSUJmn/rYu8HBECeS6Qo
         34AQ==
X-Forwarded-Encrypted: i=1; AJvYcCVXZffuA6i6dikKG2MdhGSo2zcui+quDZpDlvypACeJcxM+vj6z3abnJQ7t2MgEIfoi+qmNuBq26a8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw90ad7sCMqqXZoTqQI2uZGHcUg5wRHYil7ETMdfT9p7HYyETGu
	r65LgkAOe5rX2FlyhyPLrXoj/fOnwwau739NKq19JMAG6kCf/ImRhdD7raWNHg==
X-Google-Smtp-Source: AGHT+IGQ+sB0o8IA/aR4ASVys67Ou/63xqdsgOxn42gLr7pNJwzb485FSt7ZPQhvt0vDHPSMi7kP5w==
X-Received: by 2002:a05:6000:502:b0:37d:4e74:67c with SMTP id ffacd0b85a97d-3806120091fmr5555834f8f.39.1730120151515;
        Mon, 28 Oct 2024 05:55:51 -0700 (PDT)
Message-ID: <27be8d00-8260-460e-948d-81418b93662a@suse.com>
Date: Mon, 28 Oct 2024 13:55:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@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: <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 13:45, Ayan Kumar Halder wrote:
> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>  
>  config NR_CPUS
>  	int "Maximum number of CPUs"
> +	range 1 1 if ARM && MPU
>  	range 1 16383
>  	default "256" if X86
>  	default "8" if ARM && RCAR3
>  	default "4" if ARM && QEMU
>  	default "4" if ARM && MPSOC
> +	default "1" if ARM && MPU
>  	default "128" if ARM
>  	help
>  	  Controls the build-time size of various arrays and bitmaps

I'm afraid I can't easily tell whether MPU can be used together with any of
RCAR3, QEMU, or MPSOC. If it can, the new default line would need to move
up, as it's the first one that has a match on its condition which is being
used.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 12:57:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 12:57:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826511.1240784 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PJY-0003RR-Q2; Mon, 28 Oct 2024 12:57:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826511.1240784; Mon, 28 Oct 2024 12:57: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 1t5PJY-0003RK-NO; Mon, 28 Oct 2024 12:57:44 +0000
Received: by outflank-mailman (input) for mailman id 826511;
 Mon, 28 Oct 2024 12:57: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=WnZV=RY=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5PJX-0003RC-Fe
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 12:57:43 +0000
Received: from mail-oi1-x22c.google.com (mail-oi1-x22c.google.com
 [2607:f8b0:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 37b343c0-952c-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 13:57:42 +0100 (CET)
Received: by mail-oi1-x22c.google.com with SMTP id
 5614622812f47-3e6104701ffso2597825b6e.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 05:57:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 37b343c0-952c-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730120261; x=1730725061; 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=a3Hn8Bw3foJ3vhKRRsxCTUCp91ONJNwhsUh1oAIAUt4=;
        b=MuNRpfvUC6rq0RS2huQoliCANkQrRBxiIv+TKlgtM5InUKG6SoQ6RtWLoiyEd6rIVp
         NGx1I9z7flIOkvT+FeYTiZYi+e6f33BwjgcqLcaAcfE3S4lZo8EXYGkSupAGlUesAvg2
         9qTKdfDtxbigHdsIthJANpIRCNpZW9Eoj3U8g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730120261; x=1730725061;
        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=a3Hn8Bw3foJ3vhKRRsxCTUCp91ONJNwhsUh1oAIAUt4=;
        b=NE9O4JXzi5BgxdWirsdVkBmBoiWLEbPTSklEuP95/Cb0rtpsLJ8T5iCcEGijc0ZTO4
         ZQXR8RoFVBMAHpyFYchZ6xgaO94tClhMFWkrUGfluFm9ETNyhhMxJ6oUj5h5UAVNK/yW
         gmUvkM7Ex+MBoCUb1xhiHj79xpIu5JpNdpTW5j6tFB7M7jbrGDTPKPSmMZb5x/daDPOK
         qLDB8XU/QHMEXUdhytF+OZ9gW16prHtnuus5kpPm3VZJJTTRlY0PhEX6QE7eogpec4Hl
         c1y3dDgs3Bn0IytdW0cMTDkFvcHf7w6NrUSzV21btHaceA2O58hHOA8CbgpfzEF38JdM
         QGxw==
X-Forwarded-Encrypted: i=1; AJvYcCU8P32fNUcP3XB8FtGvhICdcabDMbsW6qdHgZT0Gfjs18JME0KVI5XUVIosEfjhr8I+fzbd3beUUqs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxbnGTrc0XV2WtMxRI1/uOQsteMTPmsQ9MOBT4o97tzKYI4KrAt
	UpduwIjwVDMITAIgZvWiqA2ZEUsCDY1W1exZ8gM141nD+XekT8WF4+4QKch+U0BGqbSQ6J+XWJu
	OR8pXkLCDJ8S9Ibw+5awKu978D6Usp581C3o+kA==
X-Google-Smtp-Source: AGHT+IFPFWAIN9gROzrdrIoC6jV9+4fmVwI6IcrIK8RJAsV6HVYJb9GzsOz9FBCLmYw6wd6yfhpj946cdIF+B3SJkSQ=
X-Received: by 2002:a05:6808:6492:b0:3e6:3cf7:dc7e with SMTP id
 5614622812f47-3e63cf7dc98mr4816811b6e.3.1730120261200; Mon, 28 Oct 2024
 05:57:41 -0700 (PDT)
MIME-Version: 1.0
References: <20241028114831.27487-1-roger.pau@citrix.com> <3828ba9f-9bc8-4b65-a42f-b67ef061be52@citrix.com>
 <51632c96-9a12-4656-b8f8-1631c11a3a19@suse.com>
In-Reply-To: <51632c96-9a12-4656-b8f8-1631c11a3a19@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 28 Oct 2024 12:57:30 +0000
Message-ID: <CACHz=Zg4mFn5zn42f9dDFao0r7ePj=Owhc04OSW5LfW6cJoUaw@mail.gmail.com>
Subject: Re: [PATCH] tools/libxl: remove usage of VLA arrays
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>, 
	Juergen Gross <jgross@suse.com>, Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 28, 2024 at 12:48=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wr=
ote:
>
> On 28.10.2024 13:03, Andrew Cooper wrote:
> > On 28/10/2024 11:48 am, Roger Pau Monne wrote:
> >> Clang 19 complains with the following error when building libxl:
> >>
> >> libxl_utils.c:48:15: error: variable length array folded to constant a=
rray as an extension [-Werror,-Wgnu-folding-constant]
> >>    48 |     char path[strlen("/local/domain") + 12];
> >>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>
> >> Replace the usage of strlen() with ARRAY_SIZE(), which allows the lite=
ral
> >> string length to be known at build time.  Note ARRAY_SIZE() accounts f=
or the
> >> NUL terminator while strlen() didn't, hence subtract 1 from the total =
size
> >> calculation.
> >>
> >> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> >> ---
> >>  tools/libs/light/libxl_utils.c | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_u=
tils.c
> >> index 10398a6c8611..b3f5e751cc3f 100644
> >> --- a/tools/libs/light/libxl_utils.c
> >> +++ b/tools/libs/light/libxl_utils.c
> >> @@ -45,7 +45,7 @@ unsigned long libxl_get_required_shadow_memory(unsig=
ned long maxmem_kb, unsigned
> >>  char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid)
> >>  {
> >>      unsigned int len;
> >> -    char path[strlen("/local/domain") + 12];
> >> +    char path[ARRAY_SIZE("/local/domain") + 11];
> >>      char *s;
> >>
> >>      snprintf(path, sizeof(path), "/local/domain/%d/name", domid);
> >> @@ -141,7 +141,7 @@ int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx=
 *ctx, const char *p,
> >>  char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid)
> >>  {
> >>      unsigned int len;
> >> -    char path[strlen("/local/pool") + 12];
> >> +    char path[ARRAY_SIZE("/local/pool") + 11];
> >>      char *s;
> >>
> >>      snprintf(path, sizeof(path), "/local/pool/%d/name", poolid);
> >
> > Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> >
> > Although I have a minor preference for sizeof() as suggested by Fredian=
o.
> >
> > Can fix on commit, if you're happy?
>
> Please can we stick to ARRAY_SIZE() when it comes to strings? It's the
> same as sizeof() when the base type is char, but the difference becomes
> relevant if the base type was e.g. wchar_t.
>
> Jan
>

But "literal" is not a wide string, and the type is "char" which is
not wide too.

BTW, both me and Andrew are not strong about.

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:08:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:08:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826528.1240799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PU5-0005VP-QQ; Mon, 28 Oct 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 826528.1240799; Mon, 28 Oct 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 1t5PU5-0005VI-MR; Mon, 28 Oct 2024 13:08:37 +0000
Received: by outflank-mailman (input) for mailman id 826528;
 Mon, 28 Oct 2024 13:08: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5PU3-0005Th-Sd
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:08:35 +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 bc302cbb-952d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 14:08:33 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-4315839a7c9so45017445e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:08:33 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b5430edsm139930265e9.2.2024.10.28.06.08.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:08:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bc302cbb-952d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730120913; x=1730725713; 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=kd+iEulUNOHz0pUyhU3vFXJihIalqNLkEKBzUTeO7/M=;
        b=UtYGHTvE4WQ7NpPF/HSQ3BJuAScPBX0oZBqgXb6IxUiaa3txp53VxcFNLTptvllCKK
         TUkx/yELCs23PfeEI44GaXrb4AUpJ+7R+AmB7deaC9qFYkENUHEeZqqSzgBWXTBPl4dh
         a8ernibbD8IoxO1Ye/n314gM0HKPNn+7/LBA68FMjmZlNR9GIGg+zgFmHESsYDWxmwHz
         95+3cWuUlAy3H2m5asAOmOe/BAnfvINb9i0WtD5jjG8YdENnKQ0IezEDnjDoyWYo+o8U
         ftK4GSdTUv2Uuf366Czq1CNxNX9Z1BRToHShE+U5+/SVuslA7szfugVVA5pSGc9G+dxQ
         onPA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730120913; x=1730725713;
        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=kd+iEulUNOHz0pUyhU3vFXJihIalqNLkEKBzUTeO7/M=;
        b=QXZQOTd0gSqI2vAUPkfnd9UwYCXuINoFhgnB7Mr2/V6HV5Qi8moNONBy1D0cVpZ8hC
         RXETQwazn1Ph+CoXfkkk1mpvpADziWaXs4Mu4F5O2vVtZl7jNh5EHD2c7kvxJ3jpkoPc
         kR5rMUFh3hiUlfv8cvZJmU2OyF9E+wJkGF1x0hOWWcCF+n7gsAVizmcOiYi1G/LjwvOy
         bV2RZ+M9sEHB+d7nbvt/cwxr70PTss0VXJn0Gvo81Obb201XnKsNpI/sAWyVCrkdiyZz
         aj4H6DcxQRJnKpM9obTqiQPJeXKcB8jNTYcXpaWwyxtvAjYIV6WYGo0aA9KsaNjiSF+n
         N+Tg==
X-Forwarded-Encrypted: i=1; AJvYcCWppZApgja1FTE7jirOfroaMms4NpC8kT+tgsa6AhCDD9zcyFoHli2YcdP1jDzRo5nF/C9WJWrFHaQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwwwkRH/wc9X9QvB6CSuIElnjwlf6cwBSriHL8At20asiSAGHfE
	win+4rIOskGq/LchXK+1a+KcHIAedJEG4tuL1S06r+IlL6H/lRaYXTSPsTgbHg==
X-Google-Smtp-Source: AGHT+IGNJjdcp+dIeU+DjBNbcBsu3AHLaBdBJCEWzmbKBq2x+YWUSnzpPaIKVlcouwgnGEW89vjZXg==
X-Received: by 2002:a05:600c:a085:b0:431:7ca6:57b1 with SMTP id 5b1f17b1804b1-4319ad2d1b4mr73802515e9.32.1730120913064;
        Mon, 28 Oct 2024 06:08:33 -0700 (PDT)
Message-ID: <d74e9a31-a004-4fd4-9cd0-3f890b1e91e0@suse.com>
Date: Mon, 28 Oct 2024 14:08:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/boot: Explain how discard_initial_images() works
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Daniel Smith <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241024160340.1012474-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: <20241024160340.1012474-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.10.2024 18:03, Andrew Cooper wrote:
> discard_initial_images() only works because init_domheap_pages() with ps==pe
> is a no-op.

And intentionally so. Hence why I don't mind ...

> In dom0_construct(), explaining the significance of setting the initrd length
> to 0, and put an explicit check in discard_initial_images().

... the extra conditional, I also don't really see why we would strictly need
it.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:14:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:14:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826534.1240809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PZZ-0007FJ-CG; Mon, 28 Oct 2024 13:14:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826534.1240809; Mon, 28 Oct 2024 13:14: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 1t5PZZ-0007FC-9H; Mon, 28 Oct 2024 13:14:17 +0000
Received: by outflank-mailman (input) for mailman id 826534;
 Mon, 28 Oct 2024 13:14: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5PZY-0007F6-NS
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:14: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 8812d0a5-952e-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 14:14:15 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-4316a44d1bbso40089195e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:14:15 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b92963sm9473621f8f.98.2024.10.28.06.14.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:14:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8812d0a5-952e-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730121255; x=1730726055; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=H1vSwM+CFgKinKrL3bSwpA1sOZKzkRd931BucJZ1snA=;
        b=dLXXQ7o49Fp+Go6tCR/1hwDd6I7d4x8cexfcoC8htnxQC/RbxG/mJLWQKakIRmV4ZN
         GGoQ2fHOnhTbGFK8pFBp3mX+eY7tmZe42Y4ehAnMNRembfpjeSD+jMQ+QmCiHk6mlkZw
         DlXFK6Pqa+yt66+ByOk9u4n4wP0qveya4TSpFKodaYbZ1aBkcadXzCMMi7f80IlncvFG
         aqHJANzjLqZrcmQS/vaaKQgiHU5/3Ns2EkeiyHMhRGeP5Z2HjXjzly86Duqa3PJNS5UP
         AqlMSOMvTa9rTDVKe7o0Z8U045FXM0ARxa+O0u10ezkHrrrqgwADjdj1uw6wjbIV9KSA
         xFow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730121255; x=1730726055;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=H1vSwM+CFgKinKrL3bSwpA1sOZKzkRd931BucJZ1snA=;
        b=jIbeE67BmSTFg4TMhG1TxkzbZZNRAf2qHYnWWQ8NjGwo9+OpAiuCngQ4rN+U8oby9P
         3/mhDhOYRHjPrL2iUNSWXCDO/NPMHOfEoCAczM5IAbF565xhzI+9GUi3ApjRymfHLBJE
         Ih+yJj+fxV6PxpthOeKXr71lsS79dkbE7m2TILIwsqHhkTAQbt1N214ghgP7hBqkSB2i
         qEiSdyFDLvwDhc0W0UfuM+uoL7BPchSygkBvTMT8NkTITRSfFzX3xLFbKzoT+aS5oYDN
         MAhUTGmP8vCb/pGXIuA9D6XsZQ0E1XuQtmQZUMZdTDnfc6fT9QmRFZPN1wnk5bFkWOka
         VNMA==
X-Gm-Message-State: AOJu0YwvR5TrXG+zsyCuKMjSXdTUTYrf5OH/sGFP4+mSsM3t9qaRbmKz
	5wjLZddJT9Jd7Vwfdt6LQSeca8XS5t6QB6853Qkhf+OMqHgRgrnMknj8ggyd5A==
X-Google-Smtp-Source: AGHT+IGvvb3VksGD2TtKlOma1YZp+yL4bQjiohUfSRIHazFJfgb4CSPYXJIOS0taFyxhX5mDy22DBA==
X-Received: by 2002:a05:600c:1c1a:b0:431:55af:a22f with SMTP id 5b1f17b1804b1-4319aca400bmr72288555e9.13.1730121255108;
        Mon, 28 Oct 2024 06:14:15 -0700 (PDT)
Message-ID: <6fe9d8c9-536b-482b-af66-bddee42e94e2@suse.com>
Date: Mon, 28 Oct 2024 14:14:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/5] x86/ucode: Rename the apply_microcode() hook to
 load()
To: Andrew Cooper <andrew.cooper3@citrix.com>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
 <20241024132205.987042-5-andrew.cooper3@citrix.com>
Content-Language: en-US
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: <20241024132205.987042-5-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.10.2024 15:22, Andrew Cooper wrote:
> The microcode suffix is redundant, and "microcode loading" is the more common
> term

Just to mention it - much like the microcode suffix is redundant, ...

> --- a/xen/arch/x86/cpu/microcode/amd.c
> +++ b/xen/arch/x86/cpu/microcode/amd.c
> @@ -214,8 +214,8 @@ static enum microcode_match_result cf_check compare_patch(
>      return compare_header(new, old);
>  }
>  
> -static int cf_check apply_microcode(const struct microcode_patch *patch,
> -                                    unsigned int flags)
> +static int cf_check amd_ucode_load(const struct microcode_patch *patch,
> +                                   unsigned int flags)
>  {

... the ucode infix is as well. Arguably even the amd prefix is redundant
(with the file name). I won't insist on either adjustment, though.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:18:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:18:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826541.1240819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Pe0-0008Ms-To; Mon, 28 Oct 2024 13:18:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826541.1240819; Mon, 28 Oct 2024 13:18: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 1t5Pe0-0008Ml-Px; Mon, 28 Oct 2024 13:18:52 +0000
Received: by outflank-mailman (input) for mailman id 826541;
 Mon, 28 Oct 2024 13:18: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5Pdz-0008Mf-Q8
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:18:51 +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 2b671f5c-952f-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 14:18:49 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-43193678216so30457775e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:18:49 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43193594fffsm108469185e9.13.2024.10.28.06.18.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:18:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b671f5c-952f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730121529; x=1730726329; 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=WInWundFfshlKP91b6+TSKxujAtA+BzjaqATEzVAf5Y=;
        b=g++f8p5itgO5OkgOGFAzMGZ8WMcjscGtAtaxeKbZSI5Vn7it8q7FKMvyXeo1C8rG5N
         xN0Hny2oO3xtmIGkdW7X8W4Z/Kt3yyqet54VEeJm4B7dMrOh0+X79kSXGjYov9kInk1l
         iiQ9haR2+XCHYG2AHXIvDi4K7DgUeyrctvaSO/6GsfUa0PY6/NQkuS4PBDW4zcXifc4g
         tthIVgEo1wc7ouZEro+OrKDlpqMYFBpKQoCqn1L0DAaBoxaKckZNrLRLs6dwEG0b0NCZ
         K4xBMYDK6PbcMP9d9aGkKJ0YciaeaCBKCC5lQFSuCVbh5Ok8+yZHGq9V0dyVauElM5fG
         GNvg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730121529; x=1730726329;
        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=WInWundFfshlKP91b6+TSKxujAtA+BzjaqATEzVAf5Y=;
        b=SAskSXaXV8JLU0WGoa1ObuG/Ezta+Wmus7qhdlpXQ5wuv/gwq8owzYH9A0KJc0dyRS
         XMbIbJXHdG/aQQxdM/Mu2b4rHOF8siGBzNz8iX9j9b9WwjcV8KEwzvQqTBU3+WmKiGtv
         c3s50XlDI/hnH2nAof6DFKG4g4D8KqF+swL2nZV/NYM7SCrpkPMd8NQRa7KT+Nt/tSkc
         PhLTjiw0ZeEQ+yPvZ+g9/Xiru/WNzYyApqOq7VbO/5IW1euti9Vnyp2+XVpENDhfriaD
         lQP8+ONFnWnyDFIKe8fuz9zsKX5jMZP/5MSTPJ77Q8yXD0HQED+mP+rizwxncJB0D19f
         XQYA==
X-Forwarded-Encrypted: i=1; AJvYcCUtU9b88cLTge24/nau//aL6F5v47otBM6tnaLpkfi8CSQxVoUMt1fvnLZLc5kTM8Fm3ALrLwvAyTM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxL2X9BDGFwy3gtcFXv3MDHSfi+38ovC39XZgKnFGn8QDQduZcE
	IHCkU1Zn/kR0Kvka8jzsS8e6cr94hVHNid6seTke9FvByDmS21dMs6SldEacuxAhDm9mQDSY2KE
	=
X-Google-Smtp-Source: AGHT+IEXsAUio4xbUqc58xasIbjPFeLP62TD15GmhBhEgCn5CGAWveIrAb3b5AwMalk3cTmExmURBw==
X-Received: by 2002:a05:600c:3b9c:b0:42c:bb10:7292 with SMTP id 5b1f17b1804b1-4319ac70754mr78462815e9.1.1730121529179;
        Mon, 28 Oct 2024 06:18:49 -0700 (PDT)
Message-ID: <122ae85e-d418-42d3-9554-2ecd90996ae3@suse.com>
Date: Mon, 28 Oct 2024 14:18:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/5] x86/ucode: Drop the match_reg[] field from AMD's
 microcode_patch
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241024132205.987042-1-andrew.cooper3@citrix.com>
 <20241024132205.987042-6-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: <20241024132205.987042-6-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.10.2024 15:22, Andrew Cooper wrote:
> This was true in the K10 days, but even back then the match registers were
> really payload data rather than header data.
> 
> But, it's really model specific data, and these days typically part of the
> signature, so is random data for all intents and purposes.
> 
> 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>
> 
> The single difference from this is:
> 
>   @@ -207587,7 +207587,7 @@
>    ffff82d0402ad261:	4c 89 ce             	mov    %r9,%rsi
>    ffff82d0402ad264:	4c 39 c8             	cmp    %r9,%rax
>    ffff82d0402ad267:	0f 82 c2 11 f6 ff    	jb     ffff82d04020e42f <amd_ucode_parse.cold+0x55>
>   -ffff82d0402ad26d:	41 83 f9 3f          	cmp    $0x3f,%r9d
>   +ffff82d0402ad26d:	41 83 f9 1f          	cmp    $0x1f,%r9d
>    ffff82d0402ad271:	0f 86 b8 11 f6 ff    	jbe    ffff82d04020e42f <amd_ucode_parse.cold+0x55>
>    ffff82d0402ad277:	85 ed                	test   %ebp,%ebp
>    ffff82d0402ad279:	75 55                	jne    ffff82d0402ad2d0 <amd_ucode_parse+0x170>
> 
> which is "mc->len < sizeof(struct microcode_patch)" expression in
> amd_ucode_parse().

Yet is it correct to effectively relax that check, i.e. to accept something
we previously would have rejected?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:28:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:28:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826548.1240829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Pn2-0001xQ-Oh; Mon, 28 Oct 2024 13:28:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826548.1240829; Mon, 28 Oct 2024 13:28: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 1t5Pn2-0001xJ-LR; Mon, 28 Oct 2024 13:28:12 +0000
Received: by outflank-mailman (input) for mailman id 826548;
 Mon, 28 Oct 2024 13:28: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5Pn1-0001xD-F0
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:28:11 +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 799a5fc2-9530-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 14:28:10 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-4315baec69eso44071065e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:28:10 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431935a4b40sm109831045e9.24.2024.10.28.06.28.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:28:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 799a5fc2-9530-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730122090; x=1730726890; 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=w7HBNqbFF9X8mKCO5Z8knz09Y7B6QAme8icCEIxi+Cg=;
        b=IQ8aQBxm0gTtlIIKt+awzJhlEikfKxlhKoIqZmWQrdIHWhhZyxc+JN2hgB158qYHOR
         O036FZD2poOYtQRSKFenzFaiK8Xom8z3gDKUAq8hpMVU9cUR73IqzqYvhwm2YpcfaG9R
         52nnSZg1OHc/FLLFNcYW+q/YuA6aY5WMie/tjrftWfMiX/S05vr+qWEvD+2StOM0ZgVL
         YksdNpZol17F040zqg3t50VVJoU3vuSOBLYtzlzChC0Q2bmB77wMWl6/E2b6T7susmO4
         r0CQDhCaIElZSqrtaEGZh+MzszbfjU0hDI/+26zF0W/bVmKTDQF/X1v0S5kvp4gV8JDu
         rHUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730122090; x=1730726890;
        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=w7HBNqbFF9X8mKCO5Z8knz09Y7B6QAme8icCEIxi+Cg=;
        b=Zz2BEdgAWXBpQmhwoxYSUVQ1z1V84bSWk33FqidLpAJ5pIhP8AB4DoRGHUzVof1S5C
         kIGpI22/muBF6Sa4NMH9ZbGMGnRph2+rkdFivuFXUGEXs0Ui7sBnbos2Gfy0Wa5ZHwF+
         mXTNzhHArLSx/+WQ5kZLFi4xSHNADa60JHAD3fDfm+DOcS+oiAeX6uU3lQWvOKjxc2/A
         ca/cMCsfzDuLP85oaHmfgJjeuNkf1rQo+oh/1yAzJC+HSHOBBsIF/IiwFMJeX7Uo9CgO
         tuv7vxowfFwSa7fyFAlmbCVn6wR9SF/YeEDjdQGZcZEWji8QoxBEXhv63kIc5C+Fy9G/
         tJtA==
X-Forwarded-Encrypted: i=1; AJvYcCXw5pxfvxxiEscC07oG+GT7zseHbplO+GyyZOWAUV1FM+xXHPQ+wMXAX5hotBd67FL2OKdtRaWGLGk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwwayK7MPR3pg6aeXz3YRmI1ttjgmdDe7kCaXd+Ye+f5ke2Gdev
	brAUDbR8/Mn3IQyWuawphFjiQLMOEwawRO8uBNgxaJJcVanyTG57ehlEijBW2Q==
X-Google-Smtp-Source: AGHT+IFdsIXLQ0MfdPRABp0cJYVFbU6Re2xzor7kTLYCC6dH4d+rOVvCS6AsmyEhdhgx3qVrmhd1RA==
X-Received: by 2002:a05:600c:3b86:b0:431:9397:9ace with SMTP id 5b1f17b1804b1-4319ac95708mr74379895e9.10.1730122089783;
        Mon, 28 Oct 2024 06:28:09 -0700 (PDT)
Message-ID: <35e4edff-c370-4cef-8693-4d5cac86ab0f@suse.com>
Date: Mon, 28 Oct 2024 14:28:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 01/10] x86/ucode: Turn microcode_init_cache() into a
 presmp_initcall
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-2-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: <20241028091856.2151603-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> There's no need for microcode_init_cache() to be called exactly where it is in
> __start_xen().  All that matters is it must be after xmalloc() is available
> and before APs start up.
> 
> As a consequence, microcode_init_cache() runs a little later on boot now.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c
> @@ -819,8 +819,9 @@ static int __init early_update_cache(const void *data, size_t len)
>      return rc;
>  }
>  
> -int __init microcode_init_cache(struct boot_info *bi)
> +static int __init cf_check microcode_init_cache(void)
>  {
> +    struct boot_info *bi = &xen_boot_info;

I take it that this not becoming pointer-to-const is related to your reply to
Roger elsewhere, where he asked for adding const, while you expect the const
to need dropping again in the course of Daniel's work?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:39:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:39:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826556.1240839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PxS-0003vr-Qh; Mon, 28 Oct 2024 13:38:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826556.1240839; Mon, 28 Oct 2024 13:38: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 1t5PxS-0003vk-Nj; Mon, 28 Oct 2024 13:38:58 +0000
Received: by outflank-mailman (input) for mailman id 826556;
 Mon, 28 Oct 2024 13:38: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5PxR-0003vc-0y
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:38:57 +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 fa688fe5-9531-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 14:38:56 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-539e7e73740so3598944e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:38:56 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b58b79esm141971885e9.47.2024.10.28.06.38.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:38:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa688fe5-9531-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730122735; x=1730727535; 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=QKk77dQoI/LPkpgR+fiHxhN4yIUSSRyj19K+b+j1MG0=;
        b=ZuVAOsigPOYMVLTRH9OUcJM5M6qbPdnvPZPH07V/5mTirz35YSpBtAwcOUzfcgw6ho
         CdON6UHmKxbUWwJubt4WwLSIs7mBUhCfOh0RlQhLAxmiufhYZ4rvpu+sqtzbsR1VUEIb
         pvL1bjFMW9055WLPmsqsWvF8ZEY4fXK+/qZiufLjUC3q8xE1bcfTVDM5VR7uvknylngO
         ia86XELFmN37u7aQWQFprMnLl/N0EJI7SCT74nNWL7H+WKGK484cODbJslarHpmzZD5n
         lbsonECvbQVB453sheXvUqcoTJZXBatknWIWl242txbQCqL7QkygzrYJ8XaXAXEAYvda
         U4tQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730122735; x=1730727535;
        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=QKk77dQoI/LPkpgR+fiHxhN4yIUSSRyj19K+b+j1MG0=;
        b=SpRVP8EUVFnVtnk4dqMzGHD00ypyu9840xQnChvdyyMdo7dP5yHAX7uQzYp11Vr5/h
         4I6PZfUy13cBwcK5ceYhWQjjsKZdgb/ItpDvwRbF+wu0v0wD4WRkXUzZ9UKJJa78ASia
         L1Eg5M3Z8U4L/YBevWDBM2biGWcq9f4Q/h5goz2zLDwgVciDszjofZjkt6zPrxKHJl8s
         r/B+5orG4irZFbeEwPUjAaZRoweugOrN9tiZsqH+Efl0ejiyPS3YQl1ZRGKMk44rzt0E
         OpeZoHopQ77g7JKqKUtqIWZcIwtvOAkMohTafMnWT9jxachWtYm4B1LHvyxDi4p0f6AJ
         g5aA==
X-Forwarded-Encrypted: i=1; AJvYcCWjiY1/tgOj84tsFmcI9F+Teu/WAy+fcBh7ptBxxMYl14/zAfVBhJM4+8S9SOjuuGVwNYPkdr1whbM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyYQjONWsu+cuoDL15OfU2vpzBtR3JX4q241AzdMG8q7HxOs2Qs
	exl6Tpfcp8MPEh1aKQv9PtU352VNYss/bYlvYlgqXaw3X1ll/OWhsAT/op90QQ==
X-Google-Smtp-Source: AGHT+IGZugSlrrXgQzXTrfYLftMlBWF1C4DuwpYxrnYiovW0AtmqXMUGwvmuLLSVCsRW4OnJ+eiz1w==
X-Received: by 2002:a05:6512:1190:b0:53b:15dc:f15d with SMTP id 2adb3069b0e04-53b34a31d30mr3784784e87.50.1730122733775;
        Mon, 28 Oct 2024 06:38:53 -0700 (PDT)
Message-ID: <99ba9bcf-f356-416a-b355-f32e622d1406@suse.com>
Date: Mon, 28 Oct 2024 14:38:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 02/10] x86/ucode: Delete the microcode_init() initcall
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-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: <20241028091856.2151603-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> The comment highlights just how bogus this really is.  Being an initcall, the
> boot allocator is long gone, and bootstrap_unmap() is a no-op.

How's the boot allocator coming into the picture here? This is all about
(un)mapping, not allocating.

> The fact there is nothing to do should be a giant red flag about the validity
> of the mappings "being freed".  Indeed, they both constitute use-after-frees.

I can't spot any use-after-free; the pointers in question ...

> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c
> @@ -758,28 +758,6 @@ int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
>      return continue_hypercall_on_cpu(0, microcode_update_helper, buffer);
>  }
>  
> -static int __init cf_check microcode_init(void)
> -{
> -    /*
> -     * At this point, all CPUs should have updated their microcode
> -     * via the early_microcode_* paths so free the microcode blob.
> -     */
> -    if ( ucode_blob.size )
> -    {
> -        bootstrap_unmap();
> -        ucode_blob.size = 0;
> -        ucode_blob.data = NULL;
> -    }
> -    else if ( ucode_mod.mod_end )
> -    {
> -        bootstrap_unmap();
> -        ucode_mod.mod_end = 0;
> -    }
> -
> -    return 0;
> -}
> -__initcall(microcode_init);

... aren't used anywhere. bootstrap_unmap() is "just in case" (perhaps indeed
a no-op at least nowadays), and the rest is field clobbering. I'm okay with the
code change, so
Acked-by: Jan Beulich <jbeulich@suse.com>
yet I'd like to ask for the description to be "softened" some.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:40:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:40:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826561.1240848 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PzN-0005Oj-4r; Mon, 28 Oct 2024 13:40:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826561.1240848; Mon, 28 Oct 2024 13:40: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 1t5PzN-0005Oc-2G; Mon, 28 Oct 2024 13:40:57 +0000
Received: by outflank-mailman (input) for mailman id 826561;
 Mon, 28 Oct 2024 13:40: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5PzL-0005OQ-I3
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:40:55 +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 40792013-9532-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 14:40:53 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-4319399a411so30312385e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:40:53 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b567e23sm139392895e9.25.2024.10.28.06.40.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:40:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 40792013-9532-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730122853; x=1730727653; 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=ECG/gO1/GM6YEeGrmQMM5lNI5QIQZXUTvjpeaMRWSeU=;
        b=INeBC6KqQn1YzjSm8ZVx8l/4xFEUZeaQX9BeDHfcK7eqXPsbb7BqGByFvvqTM1DEPw
         +eXj99wYJuXtJu+KaNgLDvpeGSrVvBPqxAM5c6mqgjoY0otMOAaEM6p/YIMAmz8imZm8
         Z5eFmii0zcHHDft49fGyT9DtlBZnQYQoYmAHbuqrBn+xSHL84Da8CBRkcUj/p6gQG67X
         bGGEXugb/H02DKqeiu5kGAwMmWwGzAffo+6DE9sRm324jr+NcrHL2nO6KM8ApjSs+ZQS
         X0Q4Bj3uwcTRD6xA4n/757zt0c6RpYuxtxCNS1nO90uRDymTbMk9PcBMaskYZIxflSAb
         qMAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730122853; x=1730727653;
        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=ECG/gO1/GM6YEeGrmQMM5lNI5QIQZXUTvjpeaMRWSeU=;
        b=vIa2CHUw142T446zCqUIBTUFCyrJl9F+PY9SlZm2PeniY6thKDJxgJY0UgkrS1ys5S
         fIiqPK22feNn9oMuzXBH59s0tvn5p6MNOu+p1rTCa30fJnu11fgrNFiAbo8qBmQEghSs
         3BLXukceDRH+DgeY80DNhYFBro1BDyQTU66zTe+EjAYo5JrQ7Gtt5rBeS+kD3AGD6xyf
         AO9V+Htfa7ocyyvOddmG6tmwU3OBaVUA2h5E9I9nxxPJxzbDFvgbmgilLkEDIl98nOht
         Ml7m0rdIHFEpJOSR3BxlVLrZV+C69dcFtlwiZgXhg63QkzkconWRGhMAYmob0TOXJZ5m
         VK5A==
X-Forwarded-Encrypted: i=1; AJvYcCVx87w1wzpZlwa3BdQLvk8nsUkQKSUtqTmQvQnVkBwWt2sd91NJojE0BenqMxtdzHYGgrTsB2ZhF44=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxh0l5fQQs2xvGjsoeMkwubDii6hgduYoa3E66b7tPAJM8ERGkx
	qKqAIj80dU19i50ILMTdAccUWKc66Z/Wl3Lc2wSBMfjqtSJNlWyUnD4NWdKjaA==
X-Google-Smtp-Source: AGHT+IEfvGKaICZpBSiWBUIA9rFsOU/Wm38McRSiMEfSi1sRMKzk45sb7nU7Pt92pg1b1lcstEvMoQ==
X-Received: by 2002:a05:600c:4a88:b0:431:9397:9ac9 with SMTP id 5b1f17b1804b1-431aa292eb4mr24212235e9.15.1730122852975;
        Mon, 28 Oct 2024 06:40:52 -0700 (PDT)
Message-ID: <3fbf3ae2-8937-4f0f-bca1-f3dd6df52b13@suse.com>
Date: Mon, 28 Oct 2024 14:40:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 03/10] x86/ucode: Break early_microcode_load() out of
 early_microcode_init()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-4-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: <20241028091856.2151603-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> microcode_grab_module() and early_microcode_update_cpu() are logically one
> task that passes state via static variables.
> 
> We intend to delete said static variables, so start by moving these functions
> out of early_microcode_init().
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

I expect I'll see later how this actually helps.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:41:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:41:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826562.1240858 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5PzY-0005hR-Cb; Mon, 28 Oct 2024 13:41:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826562.1240858; Mon, 28 Oct 2024 13:41: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 1t5PzY-0005hK-A2; Mon, 28 Oct 2024 13:41:08 +0000
Received: by outflank-mailman (input) for mailman id 826562;
 Mon, 28 Oct 2024 13:41: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5PzX-0005OQ-G8
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:41:07 +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 4781935a-9532-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 14:41:05 +0100 (CET)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c95a962c2bso5376810a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:41:05 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629f83fsm3227251a12.38.2024.10.28.06.41.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:41:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4781935a-9532-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730122865; x=1730727665; 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=0RB9qyYt3ffrQErzCakaPRrxTk0JhFSmiH/+QKQ/MZ4=;
        b=Co7cr3hGk7DmlJnDwCw/4wSavNGffzuNs1+7q2I2xZNoVQIKhIsSNHKWqjressF2Pf
         LYr4ILxfOX1Wxp+8qHocmeZ7HrWYFz6ERT5T6CeXlDqbJttLWUi7neguluo76X5fgYcC
         KWMLIqQEKAVXqteB880BPprYOJ0yISdkX1/x0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730122865; x=1730727665;
        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=0RB9qyYt3ffrQErzCakaPRrxTk0JhFSmiH/+QKQ/MZ4=;
        b=ulsCl0FBWSx4pqqdXCKyNIB0RRzmS6xASGJ/7SM+akYt6eDk6j9Osg8RFyGMsJGeo4
         ++8h0zn7tLU8yCLrkw4qx7oEY9Si3bqz6lSL534SRwPTQm+kntLAc2qsPgkVc3bR+BdN
         BSzorK/Rniw06aXmXjVRBRRptRB7Quu4ymPbl5VFm4H5vckr/8cS4D6RLdn3hdnYwVho
         1cC7JYM2NW1lJi2aDX1oI1JPcRIpAdK6+BMSG7SsWKu0mBTkA6WaNSrAwJi1D7SX2F2s
         LUqnYyY6rI/D8rsNQMOJ9/UXAcCRgM1aMySOK9mB7Z+4exmr1SO0enlE78z0Zox4VGlB
         phLw==
X-Forwarded-Encrypted: i=1; AJvYcCWG6nYSJ7jkpyzjdlam++clPerQahhlPwxLEvkIvwctGcZr0RZPsw9T4t7k7UeFk80IZ5BTQXs5m/U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxDh62kNhXAJR/t4Cn7m2nZurnN6v9u/RQXs00q+Bh4/BPUmhnB
	dabrxk9WpCxbKzTu+NHolm0KM70rtHcyg3MwJlutX8jUIZnOF/JgtJBNTu18fEY=
X-Google-Smtp-Source: AGHT+IFJkHeQwLWCbNcdRNcj2s3Pm94AY8InLz8oHm2zAz00iMSZUulcQL8HPCrmFMnbxMUIAAlWAw==
X-Received: by 2002:a05:6402:350c:b0:5c9:72c7:95a2 with SMTP id 4fb4d7f45d1cf-5cbbfa6223dmr6222120a12.22.1730122864758;
        Mon, 28 Oct 2024 06:41:04 -0700 (PDT)
Message-ID: <c1cb594c-ac01-4a39-8137-df45de28abc4@citrix.com>
Date: Mon, 28 Oct 2024 13:41:02 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 01/10] x86/ucode: Turn microcode_init_cache() into a
 presmp_initcall
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-2-andrew.cooper3@citrix.com>
 <35e4edff-c370-4cef-8693-4d5cac86ab0f@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <35e4edff-c370-4cef-8693-4d5cac86ab0f@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28/10/2024 1:28 pm, Jan Beulich wrote:
> On 28.10.2024 10:18, Andrew Cooper wrote:
>> There's no need for microcode_init_cache() to be called exactly where it is in
>> __start_xen().  All that matters is it must be after xmalloc() is available
>> and before APs start up.
>>
>> As a consequence, microcode_init_cache() runs a little later on boot now.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

Thanks.

>
>> --- a/xen/arch/x86/cpu/microcode/core.c
>> +++ b/xen/arch/x86/cpu/microcode/core.c
>> @@ -819,8 +819,9 @@ static int __init early_update_cache(const void *data, size_t len)
>>      return rc;
>>  }
>>  
>> -int __init microcode_init_cache(struct boot_info *bi)
>> +static int __init cf_check microcode_init_cache(void)
>>  {
>> +    struct boot_info *bi = &xen_boot_info;
> I take it that this not becoming pointer-to-const is related to your reply to
> Roger elsewhere, where he asked for adding const, while you expect the const
> to need dropping again in the course of Daniel's work?

It's not const because that wouldn't even compile here.

But yes, it does get mutated by the end of the boot module work.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:43:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:43:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826570.1240870 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Q1r-0006Td-QU; Mon, 28 Oct 2024 13:43:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826570.1240870; Mon, 28 Oct 2024 13:43: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 1t5Q1r-0006TW-MJ; Mon, 28 Oct 2024 13:43:31 +0000
Received: by outflank-mailman (input) for mailman id 826570;
 Mon, 28 Oct 2024 13:43: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5Q1q-0006TQ-IA
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:43:30 +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 9d91afe8-9532-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 14:43:29 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-37d4ba20075so2997583f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:43:29 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b71479sm9449804f8f.69.2024.10.28.06.43.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:43:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d91afe8-9532-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730123009; x=1730727809; 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=cRyYDfblkK21fL1M8JVb7mqC8c6IP0fxorq7TOnB/Qo=;
        b=EjQCyfy2kXv3pggOZJ8fWSNGrJoLMdxoQzIheSuTCGP6Womccu9fVK6a+n16KUItYY
         JfniJCMZE8zrLoVAy9YBYQo7dQ6h/ANxAT5Psc7+p/d0p3URFydlECnwLNFLgrbBDulu
         OzZ9b1tQbPD9yjvM2nXufHKiVOqwr5N/xsCaeH8LnfXxYTgNNCBE5BrEODvxLsAxiG54
         Uy5it0xj0z+rKA8jnSDymdG1cNtOVWOo0uCXG9l3o4ieXI3L9PCouGHPDahdhVdL0rgG
         2w0/iWSAEXCTq50eUAEPJY5ISWKMyaZ0m1SVsnB22Myze8d2/aGcbkdn0AP5O9a5Ttu4
         lcwg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730123009; x=1730727809;
        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=cRyYDfblkK21fL1M8JVb7mqC8c6IP0fxorq7TOnB/Qo=;
        b=ZGB0SOR9agT+sNA0XPruGn00xovvFLWkzOO/aRiNcj1JYFHT8fC9gwg1slWWXaUuFa
         CZIWAwcZfCQ8W6Hi6is4oS9y6giQmd8dU70DGEaLAvWTBJWDnTUJdmCc6EFs3shVIUGF
         tzTwchI/ZSZODlZ0fgG+aquwdpPeGyL8mIjgyGsGN3Zl/KVnzNa6zy6GtyzDWYPTQdV7
         5zWWqeADU4yteRXW4JwozxfuZvv/DVtZ1lI4D30lospiOXTZg1M8etV26+h0NB5BEerR
         AQt4p+3IcIl2AknHRGkwOfN6TTPSGKAsn60y1b2KSrftlK95CHrwcT9JF+mTTT4NJ+bD
         zVEQ==
X-Forwarded-Encrypted: i=1; AJvYcCWajfrY6hv4NtWerN8ok1YL4SuWI9vC/vzfnaThHIhIRCg+Jui/ET6wF5cjz6LX0o4hYTsVZKFVgWI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwGQkhG4KQjMXeDlio8H/fA6XtzIfE+rbIE/uP2M+rIEBkosUqo
	mF2FxhhOSU0cx2w/EFljdCwObIYBHWVXNtPAIpYsxmF2jk09E/p9EFIC6rYurw==
X-Google-Smtp-Source: AGHT+IF54Z6dsZ4HpCS94LMjfgsDLdqh54zx98L8Ehui1V9OUY+JgDgyOGS5eEmBPhaTWV4pzFJ9Ew==
X-Received: by 2002:adf:a317:0:b0:37d:4e74:67f with SMTP id ffacd0b85a97d-38061200a76mr5096130f8f.37.1730123009189;
        Mon, 28 Oct 2024 06:43:29 -0700 (PDT)
Message-ID: <912eb34e-90bf-4ec6-91b6-33119a77735c@suse.com>
Date: Mon, 28 Oct 2024 14:43:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 04/10] x86/ucode: Fold early_microcode_update_cpu() into
 it's single caller
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-5-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: <20241028091856.2151603-5-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> Diff-wise, as early_microcode_update_cpu() is the larger function, this more
> closely resembles "merge early_microcode_load() into it's single callee", but
> the end result is the same.
> 
> At the same time, rename the len variable to size.  This is for better
> consistency with existing logic, and to reduce churn later.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

As a nit - in the title isn't it "its", i.e. without the apostrophe?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:44:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:44:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826575.1240878 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Q2f-0006yq-16; Mon, 28 Oct 2024 13:44:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826575.1240878; Mon, 28 Oct 2024 13:44: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 1t5Q2e-0006yj-Uk; Mon, 28 Oct 2024 13:44:20 +0000
Received: by outflank-mailman (input) for mailman id 826575;
 Mon, 28 Oct 2024 13:44: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Q2d-0006TQ-Mk
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:44:19 +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 bb187c0f-9532-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 14:44:19 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a9a3dc089d8so642432266b.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:44:19 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec8169sm379006066b.34.2024.10.28.06.44.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:44:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb187c0f-9532-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730123059; x=1730727859; 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=sg3FG1mHKdRVtyowKUvY2yFSd42jIR5DsqhjRQqcxMo=;
        b=UFUrWPTtRwIpojUjq5A9EmD8+ewXzNL3LkA2ev34Way4eX6WB7X7v95RN/+TSdDH+I
         CAvaw1oSuYC/rAOUwozDiSmzMCXbM2YCNkY1J3knaLGYiMWmnvFYvChP38vYQZmcTtz3
         OJJyg00z0/1Hm+y0aNNZQh/IPDvs73dumvflY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730123059; x=1730727859;
        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=sg3FG1mHKdRVtyowKUvY2yFSd42jIR5DsqhjRQqcxMo=;
        b=H1JrU0QgGXz0YCvaXQNGcLFKbAke/UhBjRiYis2mZPb0TTnOHeTHbVXF+lrQKxCl03
         u/cuJIdC/4JRU39b2bmb+nRLEgIon+LudvUGt8GkEXFXPe4uvMJyUmP/05HcC6tX3fql
         zgYhWxJpzzkiBwI9/2FUsz7EEndKnk22znuOq/1/ZA964UWtBOdyDNZWMF3B4hxTNOVI
         R8T5H++0lzI+loe8VegE2A1hXnJ/DGCugndlEEHVXlVWhGnHR0OPA8VywJ9Qz1wijIow
         J5bp9FsOOjNp739KYW2r9YdECYkPDl3HEe5T3hmTcKqwkXBHntDbeIYdnyVQqTi0o2af
         af7w==
X-Forwarded-Encrypted: i=1; AJvYcCWvA7OFi4hQF2HL4uog9zEdd7MSu5fMqPBFZMk4VMExcoBu48xXs/hRbTAEbTBLj70S2kI/96P3nC8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwD0fXAy8+2Uh8tn0KLDShfDRNpw/Kxti/Ah/3Ln5EtxJp/nGSi
	0WbhmFlQUPlYLq/s46ebb7AeDBii+PgYD3wBUZ8URErVOEXZhnV/3Gagb3kv8bI=
X-Google-Smtp-Source: AGHT+IHM+U0fHw+TbHb+EpwcNQ+a2/r4taCoZJWGWELH6fGAf+sCPXWx2rxziWATamsd6+VHf9OiAQ==
X-Received: by 2002:a17:907:1c19:b0:a77:c30c:341 with SMTP id a640c23a62f3a-a9de5a469b1mr846795066b.0.1730123058759;
        Mon, 28 Oct 2024 06:44:18 -0700 (PDT)
Message-ID: <c375a8e9-99bd-4086-9094-1d09dc49ba06@citrix.com>
Date: Mon, 28 Oct 2024 13:44:16 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 04/10] x86/ucode: Fold early_microcode_update_cpu() into
 it's single caller
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-5-andrew.cooper3@citrix.com>
 <912eb34e-90bf-4ec6-91b6-33119a77735c@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <912eb34e-90bf-4ec6-91b6-33119a77735c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28/10/2024 1:43 pm, Jan Beulich wrote:
> On 28.10.2024 10:18, Andrew Cooper wrote:
>> Diff-wise, as early_microcode_update_cpu() is the larger function, this more
>> closely resembles "merge early_microcode_load() into it's single callee", but
>> the end result is the same.
>>
>> At the same time, rename the len variable to size.  This is for better
>> consistency with existing logic, and to reduce churn later.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

Thanks.

> As a nit - in the title isn't it "its", i.e. without the apostrophe?

Yes.  Will fix.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:45:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:45:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826582.1240889 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Q3V-0007aJ-Ch; Mon, 28 Oct 2024 13:45:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826582.1240889; Mon, 28 Oct 2024 13:45: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 1t5Q3V-0007aC-A3; Mon, 28 Oct 2024 13:45:13 +0000
Received: by outflank-mailman (input) for mailman id 826582;
 Mon, 28 Oct 2024 13:45: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5Q3T-0007UB-TT
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:45:11 +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 d985bc61-9532-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 14:45:10 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-43159c9f617so42516285e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:45:10 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43193573cedsm114165805e9.4.2024.10.28.06.45.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:45:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d985bc61-9532-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730123110; x=1730727910; 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=rOoN1FCp83K/7/KLfuIT+AbAC3zr9r6tRvG0GzQ9BIo=;
        b=dIQwxg3zKfU1BTJrleRVUBu2ahMmdKnICSbxN7EF56v6TezBhvrFdElRo1sy6tWQZV
         iiJ90Q94FZ9LMC5kz+Itzt8KrxI2jkN3OrseemmJ0iRVA8Lb8MBrnhGVlTjjrA9Iwzsi
         cgFBB8nIAYTFCKSb4O7smFr9tuvNbdtG36XUKqDmJFJXkr4MMtZJvFt4tV+clnZA3xQ0
         s2zbJeR/UDi4iHtDMkjQGb0csL6wZBI5eHNHhJ152v9dI+9tlCo7CO1nu+5X5aF/erMg
         6j4fu/0BQbjK8cty7n+bIwaaXK9d/w4RowOHURpouPBBA9vjnCSsHPtzhz0acd25AV4G
         djPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730123110; x=1730727910;
        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=rOoN1FCp83K/7/KLfuIT+AbAC3zr9r6tRvG0GzQ9BIo=;
        b=GBqXkT9JFTClMRcSdMhkJ/D98yvnfrqsxSzFA5TprIdcHMdoGgBKcDzUBE+OMT0WZS
         4l5f2Dq5VMcESYXSdtDdrwotlcYzWTE45X6cke7C1lS+FXWL2lklNft7yEmKywKad8HB
         qYdj/niWvQe0JdBtWY4rs8n+ruC1HYe8drOkPjs8u02c1cKy2DrBzDIOtlP+rmgd4NZv
         4C5ksfPz56o6fAb9YOmNfO5AeColGgnTDrDeGa6uk8D/z/sNO2RR5pF/I+Zh3Ib3K34R
         MVBgCVHIblfnupjzsuUOI4nVn/IyJxovj1OMvPBGfB9pKshVC1KAAz9bzK5mpS012sKi
         Pmdw==
X-Forwarded-Encrypted: i=1; AJvYcCUQhty12e9p9aSMPjqak2xIfbvOAqyHtzTCjCNdDxuCo0LKSc0dff47G3k4NebW9yZ0CP760hymR4w=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwWAJ3E7mA6gaq0zf7ruKO6GTVF6wTfxjefYVTDRsJ3Kz+RSC3+
	1xEzP0EBO19jOr8H4jdjrQ5NBE7hLnRqWlFcjy8QUPwHW0yAWJQq2QKUmraseFnZHQk1uMb7vRc
	=
X-Google-Smtp-Source: AGHT+IFejH0epO0ENIWEuiNMcQt6ba1at5pj9k5ow3Xy9dwu1MxIPP+x5Ciwk62aRShp+y4WVH3HUw==
X-Received: by 2002:a05:600c:3b9c:b0:42f:7c9e:1f96 with SMTP id 5b1f17b1804b1-4319ac6fc1cmr81825755e9.1.1730123109752;
        Mon, 28 Oct 2024 06:45:09 -0700 (PDT)
Message-ID: <6545adae-53e7-4f8d-b7fa-79cda4c3325e@suse.com>
Date: Mon, 28 Oct 2024 14:45:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 05/10] x86/ucode: Fold microcode_grab_module() into its
 single caller
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-6-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: <20241028091856.2151603-6-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c
> @@ -205,19 +205,6 @@ static void __init microcode_scan_module(struct boot_info *bi)
>      }
>  }
>  
> -static void __init microcode_grab_module(struct boot_info *bi)
> -{
> -    if ( ucode_mod_idx < 0 )
> -        ucode_mod_idx += bi->nr_modules;
> -    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
> -         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
> -        goto scan;
> -    ucode_mod = *bi->mods[ucode_mod_idx].mod;
> -scan:
> -    if ( ucode_scan )
> -        microcode_scan_module(bi);
> -}
> -
>  static struct microcode_ops __ro_after_init ucode_ops;
>  
>  static DEFINE_SPINLOCK(microcode_mutex);
> @@ -831,7 +818,15 @@ static int __init early_microcode_load(struct boot_info *bi)
>      size_t size;
>      struct microcode_patch *patch;
>  
> -    microcode_grab_module(bi);
> +    if ( ucode_mod_idx < 0 )
> +        ucode_mod_idx += bi->nr_modules;
> +    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
> +         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
> +        goto scan;
> +    ucode_mod = *bi->mods[ucode_mod_idx].mod;
> + scan:
> +    if ( ucode_scan )
> +        microcode_scan_module(bi);
>  
>      if ( !ucode_mod.mod_end && !ucode_blob.size )
>          return 0;

Could I talk you into doing away with the goto at the same time, by inverting
the if()'s condition? Preferably with that:
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 13:56:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 13:56:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826593.1240898 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5QEL-0001Lw-Br; Mon, 28 Oct 2024 13:56:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826593.1240898; Mon, 28 Oct 2024 13: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 1t5QEL-0001Lp-8v; Mon, 28 Oct 2024 13:56:25 +0000
Received: by outflank-mailman (input) for mailman id 826593;
 Mon, 28 Oct 2024 13:56: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5QEK-0001Lj-2T
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 13:56:24 +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 6a0b685b-9534-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 14:56:22 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-37d5689eea8so2932257f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 06:56:22 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b3b57bsm9607178f8f.26.2024.10.28.06.56.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 06:56:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a0b685b-9534-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730123782; x=1730728582; 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=yzc0EUUWaggXx9/0f4DprCAboeZLjPTMGpgoQczsnpw=;
        b=GfNFqrJ8FmLBki7e7hpLGzGlGtdaPvMw4J7flijpBdFNXhe52i+UeXONDJ2PXrbIOh
         MTqPEx5l2gcdaHZvgrZ3zZZcgg9aqVNn8dzcvhAD3NkjP9u3eSohf7T4daa8JgUWoa00
         yieoVLbbXG1NjAwfQInLm2s6gwfFWHefQA5JAkwhPde2iogJxgHghjwCUu3DSx0LQCIn
         5pTA9kDsWpPzkw+Cxv3+W04lBTlMW3eH7n1IllJ/HC/2D1lJKNrK/Kg/WMzfF/upHMTL
         D1yBASuRP1iN08pekGOcM8zopdtDpZdYDhcMDpU8ZCAkPnwFeg2ECkWokKeKCEGsH5WP
         XuqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730123782; x=1730728582;
        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=yzc0EUUWaggXx9/0f4DprCAboeZLjPTMGpgoQczsnpw=;
        b=j7PMLWzDiheqou3a/UOSIdhr7UWILbjs61fWpMj3pzzzt6eTZxmOp3LaVSVdWVLWX0
         3/R90tJuAHY4a2TPl1eb/5M41Vsi9EI5eiNHoJ0eHn7f5eC1NUzgmo9Nec/q/RglRT2E
         SRAKjFy8ydhbnajFYUg1yGlwfJypu8Lum8Sjj55rvDD2nWlXBzw2qg5sJdqeDLmaYa/e
         /v80SLnCu5ajziTXMkXiQKVDVjqvB/1ixlgaiWQNhVuqY5sBXgea5pSzsS4Iux9lgfxC
         IPmUnHiUiBnWm3gOufw8BNLPbBIPIqyJOjr6+EM4mOKi1dI2z6z8ABn7amLzE0D3Fyv+
         7L5Q==
X-Forwarded-Encrypted: i=1; AJvYcCUvByk8npSH4eyNoKJcwG7/EUuZWQ1Kn10ZdSA4b1Zxx5Nr4eUcWCQwxXlsxU47pzOAmsp00WuLgyY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyQRvg5xsKgeF/Zx8Hfi3PTewrZehXHmc0BdFaGLdFBga+0dmCB
	K5H93uyJRNAXChVZ0jYtFuK6Z5Rb6I5h9NYx+nc5DdczTcWa4qaCjyKMhjK7Rw==
X-Google-Smtp-Source: AGHT+IE53DHADXU4ZZvm1b0bPAodnD+yQs5rFT7XKbctAZDnGC0hCF3OUxj3f0m8XMlv8xk6Xq2SpQ==
X-Received: by 2002:adf:ebd2:0:b0:37d:3f42:9b59 with SMTP id ffacd0b85a97d-380610f7ea7mr6028208f8f.11.1730123781641;
        Mon, 28 Oct 2024 06:56:21 -0700 (PDT)
Message-ID: <901cfadc-c58e-4154-a5d3-ecf65c2a6336@suse.com>
Date: Mon, 28 Oct 2024 14:56:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 06/10] x86/ucode: Enforce invariant about module selection
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-7-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: <20241028091856.2151603-7-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> The work to add the `ucode=nmi` cmdline option left a subtle corner case.
> Both scan and an explicit index could be selected, and we could really find a
> CPIO archive and explicit microcode file.
> 
> Worse, because the if/else chains for processing ucode_{blob,mod} are opposite
> ways around in early_microcode_load() and microcode_init_cache(), we can
> genuinely perform early microcode loading from the CPIO archive, then cache
> from the explicit file.
> 
> Therefore, enforce that only one selection method can be active.

Question is - is this really the best of all possible behaviors? One may want
to use one approach as the fallback for the other, e.g. preferably use what
the CPIO has, but fall back to something pre-installed on the boot or EFI
partition.

> @@ -139,12 +148,16 @@ static int __init cf_check parse_ucode(const char *s)
>          else if ( !ucode_mod_forced ) /* Not forced by EFI */
>          {
>              if ( (val = parse_boolean("scan", s, ss)) >= 0 )
> -                ucode_scan = val;
> +            {
> +                opt_scan = val;
> +                opt_mod_idx = 0;
> +            }
>              else
>              {
>                  const char *q;
>  
> -                ucode_mod_idx = simple_strtol(s, &q, 0);
> +                opt_scan = false;
> +                opt_mod_idx = simple_strtol(s, &q, 0);
>                  if ( q != ss )
>                      rc = -EINVAL;
>              }

I think this latter part rather wants to be

                opt_mod_idx = simple_strtol(s, &q, 0);
                if ( q != ss )
                {
                    opt_mod_idx = 0;
                    rc = -EINVAL;
                }
                else
                    opt_scan = false;

to prevent a malformed ucode= to clobber an earlier wellformed ucode=scan.
(There are limits to this of course, as an out-of-range value would still
invalidate the "scan" request.)

> @@ -817,17 +830,42 @@ static int __init early_microcode_load(struct boot_info *bi)
>      const void *data = NULL;
>      size_t size;
>      struct microcode_patch *patch;
> +    int idx = opt_mod_idx;
> +
> +    /*
> +     * Cmdline parsing ensures this invariant holds, so that we don't end up
> +     * trying to mix multiple ways of finding the microcode.
> +     */
> +    ASSERT(idx == 0 || !opt_scan);
>  
> -    if ( ucode_mod_idx < 0 )
> -        ucode_mod_idx += bi->nr_modules;
> -    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
> -         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
> -        goto scan;
> -    ucode_mod = *bi->mods[ucode_mod_idx].mod;
> - scan:

Oh, the goto and label are going away here anyway. Never mind the comment on
the earlier patch then.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 14:06:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 14:06:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826598.1240908 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5QOC-0003as-8d; Mon, 28 Oct 2024 14:06:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826598.1240908; Mon, 28 Oct 2024 14: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 1t5QOC-0003al-69; Mon, 28 Oct 2024 14:06:36 +0000
Received: by outflank-mailman (input) for mailman id 826598;
 Mon, 28 Oct 2024 14:06: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5QOA-0003ad-QF
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 14:06:34 +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 d6943c72-9535-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 15:06:33 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c94c4ad9d8so5478346a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 07:06:33 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb62bf6d9sm3198286a12.41.2024.10.28.07.06.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 07:06:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d6943c72-9535-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730124393; x=1730729193; 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=NJdvdSdjih30FFj9NiSBsZom9mpswneW2CqtQ3UJp/E=;
        b=I5UDeAoppad5ZSu8025rg+qwH0dMlgpC1OJH5naj0GMzFUkJ6lTQJ72zRyuBuPPhyN
         Z/e8RkQQ0DT8cHVXrV1rENvQ6+hZchAgR9SA+g61C1p7SaPpYENzgBGIoFq/1ml/CILc
         0fE9BIba7Ry81Qp7jTeqnmzDFB2KGZqE5S9Fc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730124393; x=1730729193;
        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=NJdvdSdjih30FFj9NiSBsZom9mpswneW2CqtQ3UJp/E=;
        b=BppUbwaFTAPzF6Nc1/v8KNrpMvmzhI2bDuUFIm4fMfIWOWyixlFJDaD4xcbct5MexY
         kPbiBUb0R7qnWICNP17lzuXnByr2NEV5vdTenrth/mLJIDLEJjgOakbjHKVRvXAXQOvM
         NUM1GZhD04I6MOIYWuhDO6G3eIxZiYPJ42a1UrfBvkPuLInGkHhjK1I6axfgzaErfrmz
         68lzLXGbtUqxoHXMxxmERBv/K4rRNoeIZdvE97kn5epSYoBI6Cp18zbXPuRI5Bu7iX/t
         /KL1DlTg/MlaqT0VXS/1INC7+rtT4GfFozOAOLWmpE/f4WF6yCttnS73XMskOrZfzKCt
         qpsg==
X-Forwarded-Encrypted: i=1; AJvYcCWdKPw+0j7QM5d7UbB18v2bZ3oLL8wLGguurSzbZP0cVIcrXbXgkrLuTtJP/g+2iGep5SBRxZbYMok=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx88kT9ZkUgwTHp3t5awQ7JF4CiWoOBC5ss6zdiaZmDv00ILavY
	4rj8CM9ZG8cbaCptd+ZMOOPnAFwPnoEOoG0RnhkUTpdKS1/9wCqfQMiNHESH66M=
X-Google-Smtp-Source: AGHT+IGs6cIgsryQev9kpCiZlKkDbiuryucsDoP934kEoitsCBt4p3W6GyHv/ODBvvky9tMdHrNZSg==
X-Received: by 2002:a05:6402:51cb:b0:5c9:45cf:483d with SMTP id 4fb4d7f45d1cf-5cbbf8c092bmr7219494a12.15.1730124393170;
        Mon, 28 Oct 2024 07:06:33 -0700 (PDT)
Message-ID: <29611a56-f55c-4185-91e6-7b05965854f4@citrix.com>
Date: Mon, 28 Oct 2024 14:06:31 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 06/10] x86/ucode: Enforce invariant about module selection
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-7-andrew.cooper3@citrix.com>
 <901cfadc-c58e-4154-a5d3-ecf65c2a6336@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <901cfadc-c58e-4154-a5d3-ecf65c2a6336@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28/10/2024 1:56 pm, Jan Beulich wrote:
> On 28.10.2024 10:18, Andrew Cooper wrote:
>> The work to add the `ucode=nmi` cmdline option left a subtle corner case.
>> Both scan and an explicit index could be selected, and we could really find a
>> CPIO archive and explicit microcode file.
>>
>> Worse, because the if/else chains for processing ucode_{blob,mod} are opposite
>> ways around in early_microcode_load() and microcode_init_cache(), we can
>> genuinely perform early microcode loading from the CPIO archive, then cache
>> from the explicit file.
>>
>> Therefore, enforce that only one selection method can be active.
> Question is - is this really the best of all possible behaviors? One may want
> to use one approach as the fallback for the other, e.g. preferably use what
> the CPIO has, but fall back to something pre-installed on the boot or EFI
> partition.

It is unfortunate behaviour.

I've seen explicit complains about it on the archlinux forums; putting a
CPIO fragment in EFI's ucode= argument and getting confused as to why it
doesn't work.

However, it is (reasonably) necessary to dis-enagle this path, and we
currently document it as "undefined behaviour".

I think that we should re-evaluate the behaviour, after the rest of the
boot cleanup is done and we have an easier time reasoning about what is
what.
>> @@ -139,12 +148,16 @@ static int __init cf_check parse_ucode(const char *s)
>>          else if ( !ucode_mod_forced ) /* Not forced by EFI */
>>          {
>>              if ( (val = parse_boolean("scan", s, ss)) >= 0 )
>> -                ucode_scan = val;
>> +            {
>> +                opt_scan = val;
>> +                opt_mod_idx = 0;
>> +            }
>>              else
>>              {
>>                  const char *q;
>>  
>> -                ucode_mod_idx = simple_strtol(s, &q, 0);
>> +                opt_scan = false;
>> +                opt_mod_idx = simple_strtol(s, &q, 0);
>>                  if ( q != ss )
>>                      rc = -EINVAL;
>>              }
> I think this latter part rather wants to be
>
>                 opt_mod_idx = simple_strtol(s, &q, 0);
>                 if ( q != ss )
>                 {
>                     opt_mod_idx = 0;
>                     rc = -EINVAL;
>                 }
>                 else
>                     opt_scan = false;
>
> to prevent a malformed ucode= to clobber an earlier wellformed ucode=scan.
> (There are limits to this of course, as an out-of-range value would still
> invalidate the "scan" request.)

Fine.  I'm not overly fussed.  We don't make any pretence that erroneous
cmdline settings are handled nicely.

>
>> @@ -817,17 +830,42 @@ static int __init early_microcode_load(struct boot_info *bi)
>>      const void *data = NULL;
>>      size_t size;
>>      struct microcode_patch *patch;
>> +    int idx = opt_mod_idx;
>> +
>> +    /*
>> +     * Cmdline parsing ensures this invariant holds, so that we don't end up
>> +     * trying to mix multiple ways of finding the microcode.
>> +     */
>> +    ASSERT(idx == 0 || !opt_scan);
>>  
>> -    if ( ucode_mod_idx < 0 )
>> -        ucode_mod_idx += bi->nr_modules;
>> -    if ( ucode_mod_idx <= 0 || ucode_mod_idx >= bi->nr_modules ||
>> -         !__test_and_clear_bit(ucode_mod_idx, bi->module_map) )
>> -        goto scan;
>> -    ucode_mod = *bi->mods[ucode_mod_idx].mod;
>> - scan:
> Oh, the goto and label are going away here anyway. Never mind the comment on
> the earlier patch then.

Thanks, and yes.

I did play with the order quite a lot.  The first iteration did clean
this up as part of merging into early_microcode_load(), but it turned
into a mess.

This way around (straight fold in the previous patch, rework here given
the invariant) was the cleanest I came up with.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 14:25:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 14:25:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826605.1240919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5QgN-0006zS-Oo; Mon, 28 Oct 2024 14:25:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826605.1240919; Mon, 28 Oct 2024 14:25: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 1t5QgN-0006zL-Lu; Mon, 28 Oct 2024 14:25:23 +0000
Received: by outflank-mailman (input) for mailman id 826605;
 Mon, 28 Oct 2024 14:25: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5QgM-0006zF-5n
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 14:25:22 +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 75b79eca-9538-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 15:25:19 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-43169902057so42722565e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 07:25:19 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b567977sm141456675e9.27.2024.10.28.07.25.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 07:25:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 75b79eca-9538-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730125519; x=1730730319; 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=hRk3zhoQ1tugjUj705YDbrxqHJjVDY/zLW7g4vcr1to=;
        b=NYuJk8mkBAp9bG4tc6SnEAJPPXxZCpn7zVBhrNJ1ZCTG2YRxTSpo3rJ28+ddrgxBez
         DYUso4Gr8tjliYmQ0u/z0ozAvKAqDFkr59/0YS5NSbKOeEQyTQLfHJgnWcJZuyLAzBGh
         3ALLM2Zfx5LZsdTrk1t9E6knILv/KLRvhvd6jzU+pWk3N5/ww+2afW/0t2CBy+CWvOec
         pSI3scDAFXYUa1LGng/1hxNl/w1RVq4QzH2+3HbV83hXABvyHdk8CxuHtvvTar37kBV7
         5ogu4kDnWWmYC/Rfr1XiyxvZabDuG4D89J3AhDZAM60d6n4ZRvuZURf8TfOjVMFCyiuj
         Umaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730125519; x=1730730319;
        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=hRk3zhoQ1tugjUj705YDbrxqHJjVDY/zLW7g4vcr1to=;
        b=Mu9zxNpmGT5DCHTvNqJS7DHdWMuCNczEhnWHqcUoCh3TFaqp/Hb3PlhBCQTyNom3AG
         c4KLGORCQ1t5VUV9W15eCfxRJpkOHdL0tUg8QOVaEaibxEcStGTlqBlFNFoSQjpTsFCp
         9epRs1bD6AVqbJBzzkc94IxMDIJewmeRs0lzunG5HVcgGwLW8ifsYJuhcSx6aLnaWSy3
         Hv9uN75lwD1jNTIr3JyZuGuDX4oUIizqU/vGA5ZaxWR+9EZWZpAXaW6efkeMBXKcXyya
         AFsAPLsdWiSz8JOrVhsQnyrT3pDE9CxCFm5+0lSdCXMKDVnuqgOGpnhm7N0FmAUemQSL
         G7+Q==
X-Forwarded-Encrypted: i=1; AJvYcCUPXC4h9iBFTr47h0S1RhF282ZkXbaEvvziHmy6/QY26KzRPEJHsUIsAw+JuN4/TffKMugco28dS1s=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyY87OLTVkO1AaTjcClK54Jy4COcYEbkH8XvhFboiYJdvr5Phjk
	/YN7VaMkCuamfih4X07c55w1fmoJ+SrBm1QZhTbwTEHyPolwucHLqgoP57n78Q==
X-Google-Smtp-Source: AGHT+IHdTiw4F3+8QlcZL6LIhuQYnXiBejtIg7AcjrXl3tRCYTUFc44oevSSQdmvZHUAnkGjDT4xQQ==
X-Received: by 2002:a05:600c:4455:b0:42c:b16e:7a22 with SMTP id 5b1f17b1804b1-4319ac9acadmr68465875e9.12.1730125519298;
        Mon, 28 Oct 2024 07:25:19 -0700 (PDT)
Message-ID: <2e3dfea1-8277-4d4e-b594-87b3cac3052b@suse.com>
Date: Mon, 28 Oct 2024 15:25:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 07/10] x86/ucode: Move the CPIO path string into
 microcode_ops
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-8-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: <20241028091856.2151603-8-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> We've got a perfectly good vendor abstraction already for microcode.  No need
> for a second ad-hoc one in microcode_scan_module().
> 
> This is in preparation to use ucode_ops.cpio_path in multiple places.
> 
> These paths are only used during __init, so take the opportunity to move them
> into __initconst.

As an alternative to this, how about ...

> --- a/xen/arch/x86/cpu/microcode/private.h
> +++ b/xen/arch/x86/cpu/microcode/private.h
> @@ -59,6 +59,13 @@ struct microcode_ops {
>       */
>      enum microcode_match_result (*compare_patch)(
>          const struct microcode_patch *new, const struct microcode_patch *old);
> +
> +    /*
> +     * For Linux inird microcode compatibliity.
> +     *
> +     * The path where this vendor's microcode can be found in CPIO.
> +     */
> +    const char *cpio_path;

    const char cpio_path[];

inheriting the __initconst from the struct instances?
Acked-by: Jan Beulich <jbeulich@suse.com>
with a slight preference to the form without the extra pointer. Except that:
gcc14 looks to be buggy when it comes to the copying of such a struct. The
example below yields an internal compiler error. And the direct structure
assignment also doesn't quite do what I would expect it to do (visible when
commenting out the "else" branch. Bottom line - leave the code as is.

Jan

struct s {
	unsigned long ul;
	int i;
	char ac[];
};

const struct s gs = { 3, -4, "abcdef" };

void copy_s(struct s*d, const struct s*s) {
	*d = *s;
}

unsigned test(struct s*ps, _Bool direct) {
	if(direct)
		*ps = gs;
	else
		copy_s(ps, &gs);
	return sizeof(*ps);
}

unsigned size(void) {
	return sizeof(gs);
}



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 14:38:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 14:38:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826614.1240929 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Qsq-0000es-Rx; Mon, 28 Oct 2024 14:38:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826614.1240929; Mon, 28 Oct 2024 14:38: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 1t5Qsq-0000el-P3; Mon, 28 Oct 2024 14:38:16 +0000
Received: by outflank-mailman (input) for mailman id 826614;
 Mon, 28 Oct 2024 14:38: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5Qsp-0000ef-AX
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 14:38:15 +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 42980083-953a-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 15:38:13 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so657351566b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 07:38:13 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f2982e1sm386366466b.99.2024.10.28.07.38.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 07:38:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42980083-953a-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730126292; x=1730731092; 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=+MecUKJiR5cXcEL9kXdb3EAYSjLxZtq8PeDrtzJXvSw=;
        b=JQQ/Bzih/q3Jz4zPq/RhL1edM6vMmK2no5rdVbPsefBDlx+6QCOSSoPXCoCDtB51FQ
         p2UUUkl4Hmp1o/3tkFy1XdEW3DwXjeOhPq8Z3ADfexmaq5DmCZGlDMzLlBOG3HjZZjO6
         rzTxn1VB4VqtwBIv+Go3ARV5nVkLN8HpYp5i8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730126292; x=1730731092;
        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=+MecUKJiR5cXcEL9kXdb3EAYSjLxZtq8PeDrtzJXvSw=;
        b=APbrXlkO/TgcMJXoI2zPbqs75c/eDqBC4CT7k8hj95edqYRXtKOiC71ojxlW9x3kz2
         oSydmdpYH2u3OtBdDlz+/xXoUPnlV7RxMrCC4EGiuW+QJxB+b8v7quCOrM11EhTQAA/p
         zIobuXQU0k+2rHcEJ5fVOasXJNywPoWr90OQ0q93vskBGxgLpZALyOuUZB99h4UPjCsF
         JAq9J5Mljw/es1ACje5mN5u2mkOVuSEqFNrqzlcViBsjiKMTaKbFSEkgr34KP2OQsvgG
         MZS3sXMPRJIr7gspAXPDJSaCH02g+7s2vNCTaQKCJkTSXLPaDNWnIph6a7L1wzjE+9CJ
         yNbw==
X-Forwarded-Encrypted: i=1; AJvYcCXOnvhZSdct7wmsokkzWg8euEGGU4aeUU9Oln+f25T2Yu5pzsVaYYEN8J75ZFYxg1qO3o5BPJ0t2cc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwdxWEjTTb3bEyVIcVTIrufbJoNd8AagOBysT4iwy77i0cua7S+
	cdjyEO4DiuhkjHYDR0uK4crrka27kATsxzTk731dm7L1Mky93/ZdbdV6ivn9BqE=
X-Google-Smtp-Source: AGHT+IEqisa0UcsacRN36IYBdQeSn/UH4dbEHoC/gE+00RPMwsh7WxRCtDjNpqSH7A1oCwcCahoJVg==
X-Received: by 2002:a17:907:3f20:b0:a9a:375e:c167 with SMTP id a640c23a62f3a-a9de5c91a19mr805275166b.1.1730126292449;
        Mon, 28 Oct 2024 07:38:12 -0700 (PDT)
Message-ID: <d54ed169-fd41-41b3-9222-50e858c0b622@citrix.com>
Date: Mon, 28 Oct 2024 14:38:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 07/10] x86/ucode: Move the CPIO path string into
 microcode_ops
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-8-andrew.cooper3@citrix.com>
 <2e3dfea1-8277-4d4e-b594-87b3cac3052b@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <2e3dfea1-8277-4d4e-b594-87b3cac3052b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28/10/2024 2:25 pm, Jan Beulich wrote:
> On 28.10.2024 10:18, Andrew Cooper wrote:
>> We've got a perfectly good vendor abstraction already for microcode.  No need
>> for a second ad-hoc one in microcode_scan_module().
>>
>> This is in preparation to use ucode_ops.cpio_path in multiple places.
>>
>> These paths are only used during __init, so take the opportunity to move them
>> into __initconst.
> As an alternative to this, how about ...
>
>> --- a/xen/arch/x86/cpu/microcode/private.h
>> +++ b/xen/arch/x86/cpu/microcode/private.h
>> @@ -59,6 +59,13 @@ struct microcode_ops {
>>       */
>>      enum microcode_match_result (*compare_patch)(
>>          const struct microcode_patch *new, const struct microcode_patch *old);
>> +
>> +    /*
>> +     * For Linux inird microcode compatibliity.
>> +     *
>> +     * The path where this vendor's microcode can be found in CPIO.
>> +     */
>> +    const char *cpio_path;
>     const char cpio_path[];
>
> inheriting the __initconst from the struct instances?
> Acked-by: Jan Beulich <jbeulich@suse.com>
> with a slight preference to the form without the extra pointer.

I'm slightly surprised at this request, given that the form with the
pointer results in less data held at runtime.


>  Except that:
> gcc14 looks to be buggy when it comes to the copying of such a struct. The
> example below yields an internal compiler error. And the direct structure
> assignment also doesn't quite do what I would expect it to do (visible when
> commenting out the "else" branch. Bottom line - leave the code as is.

It's unfortunate to hit an ICE, but the copy cannot possibly work in the
first place.

ucode_ops is in a separate translation unit and has no space allocated
after the flexible member.   Any copy into it is memory corruption of
whatever object happens to be sequentially after ucode_ops.

The only way it would work is having `const char cpio_path[40];` which
is long enough for anything we'd expect to find.

But again, that involves holding init-only data post init.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 14:39:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 14:39:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826619.1240939 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Qtp-00019y-4M; Mon, 28 Oct 2024 14:39:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826619.1240939; Mon, 28 Oct 2024 14:39: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 1t5Qtp-00019r-1Z; Mon, 28 Oct 2024 14:39:17 +0000
Received: by outflank-mailman (input) for mailman id 826619;
 Mon, 28 Oct 2024 14:39: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5Qtn-00011V-UY
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 14:39:16 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:2418::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 66dc6add-953a-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 15:39:14 +0100 (CET)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 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.8093.23; Mon, 28 Oct
 2024 14:39:10 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8093.024; Mon, 28 Oct 2024
 14:39: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: 66dc6add-953a-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=qumykAGbyDkxgmvv7GPzNXhcTZj7z993Mw8i/II7D/ZQaYqWmq0vkGqHz1uSWUJwTlvanKX3KTXGt+jHrQ7wRPs+OhTI0SQxT7KZX5pOWqGI3JtGcNiPIzlF8VtU+Nq9g3zlu4n2TnHN5ubf7AproC1vKYuBkMuWn4LqA+hieX69FSuZeb3rgv4OBkv/Vo1x9neCMo64roaiXwl5xtLnLWDN+uAyl2zBc2WD0lMdaGCPQLgcjjnRKnNIs/+r5baFKr3Ng8IGyZ/Av1yy8szFfieM+49cMASdbx9tw8JQyZd6Q9lljoMFR3NZPh8px9+lKPjQ6ccmASTYenQ57FEpyA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=X1Broc+isBHzmuy6XDBB8C0OzmMK81vvYiGkBqrFEHQ=;
 b=TsG8JNaUD/fsx7YzwD2ohuqmVg0UoyUCuMc2H7WApaovsMdLh6hZPW998k8To5cSL8PUrdt8QQ42jvxYu71GAPjxrzvI+TF2sR8rI7z2Nah67IJ7qYnyS3jGPQmgXwj6FE/ZX3Li0JOY1cMapSlvzKArwKQimqUnxo3wI9L9QP1SazIK7YaBK6JH8J/8lWXALG9p0K7iAyUB92+7E+KGiW+c/uPbwvE6F1sR2M75i5UEhpPvdXmozKH/Q8frlji/AwsHvO5hqDYb8SlLat/VrmuHsEW51M9ru937nkw/ay9e6j8adNKsxOIsF+7YTP/dqWEIdeR8FeaS3gEvWiK5Dg==
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=X1Broc+isBHzmuy6XDBB8C0OzmMK81vvYiGkBqrFEHQ=;
 b=wEdni2ApMrHNCOvE9g27+sBUPPgRAwIxPZTTdCQ9HoKIbUm1BeZ1W91/vuawRdjLWOahRhQTd3ZE+0udb7U5darIe6ut6Lcv4ClxhmV/S6fAOEudctCno70W+K0UaE6IQbYvupOpFSc53URfDxwM2vXTKAilmtQUD+KVDLr78oQ=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <8fa530cb-4d70-4300-8d4e-1e7208f7c045@amd.com>
Date: Mon, 28 Oct 2024 14:39:04 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
To: Jan Beulich <jbeulich@suse.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
 <27be8d00-8260-460e-948d-81418b93662a@suse.com>
Content-Language: en-GB
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <27be8d00-8260-460e-948d-81418b93662a@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: DU7P191CA0012.EURP191.PROD.OUTLOOK.COM
 (2603:10a6:10:54e::23) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|DS7PR12MB5984:EE_
X-MS-Office365-Filtering-Correlation-Id: 6d322f67-b23a-438e-9be0-08dcf75e488c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VzhBcWtBSWtpYWxnUW5jSXI3Y2hhRms0Nk1HcHIwbitIKzhXeGxOUjVNTzMw?=
 =?utf-8?B?VTB6YzJRMGIwTGxrN3EvdW8rdXl0MVhRN2J6T1Z6dlNpQ2p2QU1lVWxYdG9o?=
 =?utf-8?B?Ui9JNkppQ0t2V2NBbUhOVkV1SjNyMEwraGhRUndJRWhtYzN5R1QycDZLZVdu?=
 =?utf-8?B?eEdjanJPRXRFeXhQNFdHWjVtbUxTN3JxVHZqRWRhbVI1c0p5U0V2ZGw3OUc1?=
 =?utf-8?B?c0Fta3hpdGM3SUFNellkWk1sQUd1TVlNMS9nYVVIRVptZFNJcUZDOXRoeC92?=
 =?utf-8?B?Mk1CZkUvS1gzaWhKYUdoQnZMOUVyRDI3K0o4SUtRM0FlUTFUS1dIMTY0Q0pp?=
 =?utf-8?B?TXlPd09mbHBuQlEvQVpxamliYSs4a1pkbWF0TUhyZUp1U0tKSUhwKy9LMk1t?=
 =?utf-8?B?REYyTVF0MFkrT0FoSlozc0pkRFJMNXArOGJBNUJyTXByU1ZhWWpQMU5mUW9p?=
 =?utf-8?B?a1lMSFM5MUxOVkR4RW8zbFdFczQvOVNpS3RIb21QdE9ORkZpWGhwVEFIaHFC?=
 =?utf-8?B?eE1CZi9zK1MvMUdDY2pMcVpnUy9heDB2WUZzU0htc2s1VlA5R2xhYlhwdVhn?=
 =?utf-8?B?TmJPRDNwbmd2ODhydjlsSE5VVzhqTjJiamNMVUd3Z0JNRFBQT3dvSGVEL2M5?=
 =?utf-8?B?UEdPQXU2NGxuL251UEgzT1dVRjZ1dk54VXpNRnQ3NktNa0dPYXIyWXZEWlQ5?=
 =?utf-8?B?a0V6cmdDTks5KzJSQ0cxaDREZUdySzgxRDNEY1ZjR3ZSRzIwcTVkM3U2cXIv?=
 =?utf-8?B?bUdCL05WU3BVeG8ycW0rSDZSOGFVZlk2TFc1SkFEbXFQWHUxUFZNZkg3blZ5?=
 =?utf-8?B?aXc5dHowM2JJTmltVXZhU0s5N0Fmb01wZlJFMTJ0VDlRZXM4ZkJJR1duYUdS?=
 =?utf-8?B?REZsNmxYZ2syMDlGUlZQUTdSalVkSTJUMmtKcTM2VWFOOVh0SW5JTHJIYU8y?=
 =?utf-8?B?WkdjUGNUMEV4b0dxTU5pR0ZWTGtTT2pFWGtUdHFiS3cxNmU5dHI1Z3l1aCs1?=
 =?utf-8?B?UVVXYWFiMFBaTjg1TXBJOFI4eCsxc2RRTXNmUmtxdVNWREkxV25NdjZwdzVr?=
 =?utf-8?B?VWhkZytXbmo1S2lnajRITUV5SzZGcVhQdDEvWW5yWHd0Rk9PSDMrcldWbDE0?=
 =?utf-8?B?RHpWYkJ3cWx5TzNLZEhMb1lza25CSVV0NzdhL2RzUWZ5NURSNnhUWHJBOXk2?=
 =?utf-8?B?RnRZS2pXdzZzWmVkQjF0Z2dqRTIzU2grSURydENSUEdYc3lXc1VpS0JjS3B2?=
 =?utf-8?B?YlBTMEtydXkyUFN1WlQvNllEV2dzMmVzNzh6dmdCdUtRV1MrcVpnbVdCMjE2?=
 =?utf-8?B?WENJTGozd3RuM3BVVHJINU8vV1Q5UU13S21wamN1MWJiTkYzeXo0Q21vOEVz?=
 =?utf-8?B?TzBCcjlDZUp2blczL3hBczVoSzBQTDdJYmFWWTVXOGorTm5Ga1BIZDV0TlVr?=
 =?utf-8?B?WlJLZ3YrUy9ROElyOWM1SlRmaWpsUk56SXpuZndMTWVoSjJTR255Ylh1U1Qv?=
 =?utf-8?B?YXZ3Mm5SWWlhMXN0WFJJcUNzTlJnVXA4ck1DZ0hiSUVxWHJLamV4VE1rY3lN?=
 =?utf-8?B?R0l5TzdCaDlTQVVEUUFzZVIzZkl1TkJSMXFVTGJ6ZW9NOXJDNDNZNEovNWZN?=
 =?utf-8?B?Qkk2T2ZmZXFDZHJTeHpYd2lreXFFNG0vbFNxQStVVmtaRDA5RTJUZGFobU5N?=
 =?utf-8?B?cDc3K3VmV2xUbVoyRVZiU0FrNGxrZDN4Q1IzbG9ONHBaVGZybU5tdS96QVZj?=
 =?utf-8?Q?FXmEQQZjuZrXJxaN/BYwc9KsaGRAFc02BDiF1vJ?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aGM3dDNsVVBpeDJRV2RHc0pTTlZmL0oxalA0blVJamloNEtMbmZnK091NVdY?=
 =?utf-8?B?L0UvZExra1lGblZ2YlI0KzNCVUdvV3Ewd1Y0bWdWZklCT0NaYldrSHI4MGYz?=
 =?utf-8?B?RlkzU3lidTFoUmkrZ2xUcVN5Z3FoYmd5SWpYNENUVWRicUt6cjFxdzh1cGFu?=
 =?utf-8?B?b0ZWdHVXaThkZ05iSHlnWU13Q3hGak04RC9YTk5SalBoSnU4UnRqazRLS1ph?=
 =?utf-8?B?NnNadlJEUDNndGR2VUI2cmZ6Sk9hTWU5c0x4YlI1RFd5ZzAvVGJCZTNFbFpZ?=
 =?utf-8?B?V1M1eWwveUFISStzdWJMQys3cHRjNExhamMreFpKVzNjV2xJS1gvZHZqNGdP?=
 =?utf-8?B?UnV1MVpvaHZNM2ZHdU5kOVZxYTBEY2I2em1NaG5WcmQvYnhSVmtVNXJNcUh5?=
 =?utf-8?B?T1g1M3VkMXZhd3ZlenhHdU4vUkZNem1DUnQvQTJIQzBFc0N5WGdhNTJuYWFF?=
 =?utf-8?B?NlZRN1g4dGZGRVhZbUowaW1NbGFJU0oxYWo4Z1hjSmsrRm9NR1FlSVlaeTQr?=
 =?utf-8?B?VFl3NmJVejBtdllkQ0Zua1poTGpCVWFqRmF2eHRReEpSUFpscHhqdFJKQi93?=
 =?utf-8?B?SGV2ODA1bFVIb2hiLzVrUWxLQnY4NFdlT0VtL2E5Rm9IU0hKaE5NWnVwMW83?=
 =?utf-8?B?UFVQNHB4cHljYWZPcTFtVE51VVZnYzFXSHAranRvSmt5UjJZK0oyWGwybEhw?=
 =?utf-8?B?ckh1WVZwUkpjRkpoUnR3ZDlCdTNFWk5sZ285RjFLTGE0eDQ1aGFoVS9JT1Ft?=
 =?utf-8?B?bmQ0SmlyU2tBaTZwZGZ4OGI2amVveURYRDcvRndENmV5QmMwUG5NbXgvandF?=
 =?utf-8?B?ZnRJYUt6L1FrWWx1VFVncjVYVU1UcjFaQTNZS2QrVjBiMVZncEk2UkpUaHRz?=
 =?utf-8?B?WW41SDJEOTRSMmhLM0RtcmhWN3RqcmgxSzZnRXpOVER2U28xdGp6b0p2bm93?=
 =?utf-8?B?cnNGcTVTZnVIOHh2enpZcGlCWkgySUpSL3ZSNjZUbVhlZWMxT3RzLzM5WnU3?=
 =?utf-8?B?MG9kR3hhSXRaL2s0MzlVMjZGbVFaMDJKdGsyWHRYb0I2aHgvVUxUYlFjS3VD?=
 =?utf-8?B?Q203amw4emV2MGdDNnRtNWhKNXhLUVRlT2JXS29nMUNOTXRYVm5lNnVpRFRu?=
 =?utf-8?B?M202WHY1L0V6UHpyQkZHME1ibXNRYVgzQzRCMWdSbWVPVlRZQjg4dlNBWUVI?=
 =?utf-8?B?c21aMmJqYmViT1ZIclZXKzY4L3R2OHpaOTd2cmM0Z3VGZ2VQNlI2SHRaM3lW?=
 =?utf-8?B?OXFRemhaM25qaFowbWZpdW9TSExGMU1tcDE5RmlrUkZVZHNvUmMvYzlnTUJ0?=
 =?utf-8?B?Y0FCRTEvWWIrcEdtb1pMdkREeTl1K1VzWnRORGVmZzNoSzFRNWtRTXM5bGJU?=
 =?utf-8?B?VU5jMTUxUWpUMlJKMkdLd0xua081aXF3VXRUL1VQTTNlKzNydTJmNjdVSE5Y?=
 =?utf-8?B?aDhTdnZxdFF4Y01jamZPaERjcWk0b2tHV2k0ekp5eTdmNnhmL1M1UzAyL21J?=
 =?utf-8?B?QVRvSktyMUlsWHcwWHhIekN4SkRGY1RZZldkMGFzNlhYSWViWTJ3SEhaTllz?=
 =?utf-8?B?RU8ybElNNXVScjVKVzlIVTZJaWJVNEZvS0MwUGdBSmdFK0ZsNDIwelVQdThU?=
 =?utf-8?B?QzUwVTl0RXNZUWUxblhSaFg2VFhyZ2d2YjhEUWJyanYxZVREaXJxcWFPSzY3?=
 =?utf-8?B?K3BYYUNsZElabVljSGlFb3FkUm5BOFV2VFdpbWxuQWUvazdaY1BFZGZIQzNj?=
 =?utf-8?B?VHhtZU1Da0Z3TVJVWWVhMVVxYWV6K0tLb3J0eTFGTnUwY2FtdGNGOVl1RFdJ?=
 =?utf-8?B?cklOcGRYWGYvRnNnZEtoMlhiK1BBUHZkNGpERnk4bUhDM0hIVjBtaWNVM0dS?=
 =?utf-8?B?eUp0SXBsdjd2N0QrSnlBUE5aWU9BSWRkSlUySFZaQ0pSZ3pxTDRuUDVpUEZP?=
 =?utf-8?B?ZGJNcFl2R1kzeXFSTVJZazlZbzdGeEgwazNvdGNOMHBtNzQyM2h6OE9RQjF6?=
 =?utf-8?B?VGtpc1lNOERIYkhtTVI0L0RQQnY1SnV1TXdZeGUrc3JVT2tjZzZCOVlQRkV3?=
 =?utf-8?B?cUNVZ1ZTK1Juc051Um85MkVxR1VCWHJjRFRBUFdleHJaM2NFZ3MwR3dqMkZQ?=
 =?utf-8?Q?Lq+9REeN6ney1gUBQz0WvyFc1?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6d322f67-b23a-438e-9be0-08dcf75e488c
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 14:39:09.8532
 (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: ceSocD+N2W83Q3Ci+eISa8Lz+9DL73kdBHr+c7zsqzihqCcoW9IBMXC4WACs7q51dhWHx8HuXjzNnIc5EbXBDg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5984

Hi Jan,

On 28/10/2024 12:55, Jan Beulich wrote:
> On 28.10.2024 13:45, Ayan Kumar Halder wrote:
>> --- a/xen/arch/Kconfig
>> +++ b/xen/arch/Kconfig
>> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>>   
>>   config NR_CPUS
>>   	int "Maximum number of CPUs"
>> +	range 1 1 if ARM && MPU
>>   	range 1 16383
>>   	default "256" if X86
>>   	default "8" if ARM && RCAR3
>>   	default "4" if ARM && QEMU
>>   	default "4" if ARM && MPSOC
>> +	default "1" if ARM && MPU
>>   	default "128" if ARM
>>   	help
>>   	  Controls the build-time size of various arrays and bitmaps
> I'm afraid I can't easily tell whether MPU can be used together with any of
> RCAR3, QEMU, or MPSOC. If it can, the new default line would need to move
> up, as it's the first one that has a match on its condition which is being
> used.

MPU cannot be used with any of the existing platforms.

There will be patch in the future series where we will introduce a 
platform specific for MPU. That can be FVP for R82 and R52.

- Ayan

>
> Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 14:45:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 14:45:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826624.1240948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Qzi-0002kU-Og; Mon, 28 Oct 2024 14:45:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826624.1240948; Mon, 28 Oct 2024 14:45: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 1t5Qzi-0002kN-Lu; Mon, 28 Oct 2024 14:45:22 +0000
Received: by outflank-mailman (input) for mailman id 826624;
 Mon, 28 Oct 2024 14:45: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=MlZD=RY=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5Qzh-0002kH-8P
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 14:45:21 +0000
Received: from EUR03-AM7-obe.outbound.protection.outlook.com
 (mail-am7eur03on20631.outbound.protection.outlook.com
 [2a01:111:f403:260e::631])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 404e988f-953b-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 15:45:19 +0100 (CET)
Received: from AM9P250CA0026.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:21c::31)
 by FRZPR08MB10928.eurprd08.prod.outlook.com (2603:10a6:d10:135::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20; Mon, 28 Oct
 2024 14:45:14 +0000
Received: from AM3PEPF0000A798.eurprd04.prod.outlook.com
 (2603:10a6:20b:21c:cafe::5d) by AM9P250CA0026.outlook.office365.com
 (2603:10a6:20b:21c::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25 via Frontend
 Transport; Mon, 28 Oct 2024 14:45:14 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM3PEPF0000A798.mail.protection.outlook.com (10.167.16.103) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Mon, 28 Oct 2024 14:45:14 +0000
Received: ("Tessian outbound 0fe1877cedb7:v490");
 Mon, 28 Oct 2024 14:45:14 +0000
Received: from Lc5f426d03744.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 BEAE9410-0D12-4729-B2B4-1739AD99A7D3.1; 
 Mon, 28 Oct 2024 14:45:07 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lc5f426d03744.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 28 Oct 2024 14:45:07 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB9PR08MB9635.eurprd08.prod.outlook.com (2603:10a6:10:45e::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25; Mon, 28 Oct
 2024 14:45:05 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.023; Mon, 28 Oct 2024
 14:45: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: 404e988f-953b-11ef-a0c2-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=is1I1iZiGskLXmFgvpqVBFaS0zkTcHRVOI14divC7uoQhXNL+gHSYPF5mJtZ4ykFUN6zOm4fTEvZXYw+92kZPAGnml9IVC3TfVK5D08udLxgMR6+Tn7hT6+653MIELhfgHJSoVMsDMofyX53YpG5w2og40SLAc0p/71zCuHK07EgdcG8G5GXyc454a04bzmI6acpaOK/K2L9cKRytsmC4IFxlDofOcC3HchOmS/YxYMK42Jn/4hzHc3DuBJh3jeGmo7V6CbULlK0YIZ7Z73iXycqGI2+pAIp3aYph4CeYJiwecFEJ6+fEpNQsrkBX6hEL6oh4UipanwExMWsLmL/3g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=9oX26I12b3G2+XM0slrE6A4HAe5z+uCuHuHK9kdiy9g=;
 b=Yxl11BhRaEiMWS0J2uMgXf+AgJ2rkQ4z+YYolk0Proqn6+JL7K8OHvuqMR3Enk4JGMw7OcTaUQGzhxJ/szZv9yeYM9yLsR8zPEpNpM/Yaliqru1lBTG7wxdrPwsEl876JDSPTSk3OfLfTN1KVrqxrtWv7T099FQWfDnVxFFoBXRLfQA9flfvYY8to0/YqQUe53ClmmWLtMDsSPuNsgHaUGH566nQkX57wI/RR6NFWmOzx96ZJmTXX9eyJIyBgdsXFBMBt+fd6wcZXTS3tTIS7pbCgMGfeBnhmymoVe4KoqNJZslpW6/awCKiCqoCPr277sRn/LC+s96y9Vaz+7aDXg==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9oX26I12b3G2+XM0slrE6A4HAe5z+uCuHuHK9kdiy9g=;
 b=PWU+wNS1W08StzPF+vM7EvdaVT47t4wx7b5eLD/dniuBSUC5/G7QYtRtWJvkZG9+vgJB3Vt+jPsTFOt5AJgOqcYQmpflL+uaOJ+SQtaa7aPGu/6xQxrgAa05fEhDdTo8zvxfL1yPhPTQFpQ0SlwIqSfeBSRkr9IPTSdld1g+S0U=
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=arm.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: a1f75748f3953a76
X-TessianGatewayMetadata: 12AAh5xE1CSRPpC0EA+G+jt7Ew6csqgj9hWJCeb/dVGe/lh7H0zBgfyihvPjxjv/XVi6GQrmajWlhBpxrBXr/s1pUwKkmJQ13zS51KCobG8u39keFUmLJkzXH47jEl0PhbdQJt5YeBQ351CZlYxgw1ivYSQT5Tv1/j+TTAzS9FM=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ciQRQyymZ0XHmnBnkwjLITVqHs8DUp5AHB6yabuKR3b2rfkBf/4SUj+xrMIgkzSmIv7mhx5O5Zw5cx0hr4xqN7fNNaRhpnxcMsvoch7baD6ieWgNim1PM/aQ7EOQ1r+me6bYGRG200o6vTgRo6+qVqxcpVfMRQsCWw7YsuD3TItnUHJzK2B0640ZJWomeL60SkXOokMmMflr2XWVRICyyDBbV5BHaFVietSjcJ6PAdLqoHvv4S7QxycQ9OcfjpFAXiAIIwQkOZbS+Zy8FeI5D3youWTmrJMCTe0c9F9piAex7qwWK4fR1lJFGoV+sRwgQGuo0+Vpizn4QWfkj7R08g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=9oX26I12b3G2+XM0slrE6A4HAe5z+uCuHuHK9kdiy9g=;
 b=WzmHnsHJeW3gf7SvKXKuXzqCCq55+Zwamz/n6vIvryi3yOLMsoXRxI3esS3C80aOzEcNZuBJnv7pkKeEjucHThlHytucI9OmZaaSiIKmnwt3g9wIz0yqFrAO0i94/2G9Ja3jc7tVw18wOJrpgD2M0lNn5KPaeFeiT1L8/uFrLPOFKAimx8Nkw9p5+CzSKTbCpogR3lk8ejW8KTPQLZR3OEVwAZSzf10O5ttr6d/2JJqs7gYxSoTzG4nFoC6bde58OyQdefJN/nYSenpFi/eb/3loY0yclukd8/fkGAj7jwaNfoSF2p2KS2UnopUctLVdLO2MifW4fxbsUwUZJpzAPQ==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9oX26I12b3G2+XM0slrE6A4HAe5z+uCuHuHK9kdiy9g=;
 b=PWU+wNS1W08StzPF+vM7EvdaVT47t4wx7b5eLD/dniuBSUC5/G7QYtRtWJvkZG9+vgJB3Vt+jPsTFOt5AJgOqcYQmpflL+uaOJ+SQtaa7aPGu/6xQxrgAa05fEhDdTo8zvxfL1yPhPTQFpQ0SlwIqSfeBSRkr9IPTSdld1g+S0U=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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 v4 1/6] xen/arm: Skip initializing the BSS section when it
 is empty
Thread-Topic: [PATCH v4 1/6] xen/arm: Skip initializing the BSS section when
 it is empty
Thread-Index: AQHbKTdm6ZaHmASNrkyDueCee1TzurKcPXmA
Date: Mon, 28 Oct 2024 14:45:05 +0000
Message-ID: <1A5CB737-9C6C-4ECF-A5FD-B5532C3317EA@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-2-ayan.kumar.halder@amd.com>
In-Reply-To: <20241028124547.1371867-2-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB9PR08MB9635:EE_|AM3PEPF0000A798:EE_|FRZPR08MB10928:EE_
X-MS-Office365-Filtering-Correlation-Id: 774b0b25-57d0-48c9-0e7a-08dcf75f2214
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?bDFwTEpSYkUveU5qbTNTUnplZWdBRFhobFc2WklzVnBWSzRhWHMrSWVVRFpv?=
 =?utf-8?B?YWRTcnVmaEJkYldlTmZxMitjQUUwNDlBZkdEbkRNT0ZGNGpvaUQyTWtpSkFq?=
 =?utf-8?B?Zk9nTm1zUUpWd0IrYW4wVS9HU2NZSkRJV05qdlRGUjRCVFczWFV6NTN1c3NN?=
 =?utf-8?B?QkYwRUo5K3RBbnZEeFlpeXJQdEZySXYzU2J1TzdJMlAwYUhUMHVYelNaYnha?=
 =?utf-8?B?Rkw5R2N0TFZPRzMzMUg5czRJSGljenR6Z2FpeEdRVzFWYjFHaUpTSnFvOTN4?=
 =?utf-8?B?SUFpazRtbDBFaWRLL1N6eTRrcEtBV1ZqUDlIMjZ2YUJReGhCRkduaElUVmdG?=
 =?utf-8?B?UWNLOTM4S2hPWndPNjhZZUtacG5UbzZwK1kzNElnUU5HT0R1QXpzTXJHcnVW?=
 =?utf-8?B?czhLTjJuVVZwaVkwd0dvRDgvU3NvVStTaGF4RFV2MHJ3RFF4eVNYRFNZL1E2?=
 =?utf-8?B?RFgrL2ljcGpDNXFSTDlGZVNRS29lWnd0NEwvQll3UjRQSVkyd0ZiVFhyN0hn?=
 =?utf-8?B?cEU4TDRySVZ3bG9QMWVjOG9zeTM2S1hMTGFtbVNkQjBXa1EzUTZ4Z05BNHpQ?=
 =?utf-8?B?cDVGbU5mVndGTlRmbGZVZm16WDRUR2VwUEJGN3hOaW1vRnlwWURVSitzN1NV?=
 =?utf-8?B?c210NW9HNGl5aWRLK281MnZNWThzZGpuMllpZ0YrQVpCVWErM3FOS1YxMHNP?=
 =?utf-8?B?Z3pmRDlWTEpia2tocEpnQTZtRmxtVU5LRGFWQXJ3Z2FBa3lCV09pQS9LT1E0?=
 =?utf-8?B?aWhiSDdpQUhkTy8yblB3NUNLN0lKUERBNUxBQ3VaRWVFWFI4ek1qL1pvTnJK?=
 =?utf-8?B?UnlpakdJeG0wL2UvQnZHUlVGUUpnMFNUNlhsd2d2TU9lMkQ5WkpXQ004ZWFh?=
 =?utf-8?B?U1NhdnZPTnQ2RkkxQUhYNUNWN3Jqc0hManFaMURodTNvVjBjeHpzMFo1SS9V?=
 =?utf-8?B?ZHdEQVlhdWlzMjdreXFobVRBRGRhSzJzbzBNc3hoUkJaYTNFa3ZkcVVCcVM2?=
 =?utf-8?B?TFdTalpGaHlEb2psQ1R5UTJOR0hoYnAyM3NNbThLVlVQdzlMS04rR0ZyZmFa?=
 =?utf-8?B?STNqWDhSK1p6T09GbFBrV1l4K1VqQzFGTHg0d0dqWHF0d3lISXRPZDgwcmpS?=
 =?utf-8?B?MmllbHVFaDhwZVFxbjZHU3FSUnRqMXY1RzNUL05tNXk3RWlza0pWMFd2L3Fw?=
 =?utf-8?B?ZS9QRktGTVBJbVJPc1JHd21NVmR1OVUzQmxKOHlUSXZNeFpvN240S3BIYmht?=
 =?utf-8?B?S3FmeDE3T2gxc1YwY3RnTGJ0dE52Y294QWFxQ3FTVFFxMnl3aEtpcSthSE90?=
 =?utf-8?B?R2xvd0FYYWdYRjVUbHZwUnNtOVlaRjNoTWVReHlrY1FWOGw3WWd3eGdlSnNl?=
 =?utf-8?B?QWNxN0pIRlhPM0xNQXluZS9ZdGpRU3pkU3ZOVEpWQjNqay9DYzYwcnJGOEdV?=
 =?utf-8?B?SjBPcTNVOFI3VlBCYW1OR1QzYjZlZmMrQVFpSHhZTXFoQ0gvZ1Jadi9aSXNy?=
 =?utf-8?B?MzFITXFVNGxBWWlONjVYb3RxbzJNWWVqVk1tZW9oV05XOUJTTU1reWdCVVJy?=
 =?utf-8?B?Q0lYWkRrUDNtSUJMU3F2OTk3U0JnVm1rbmZCS1cyZWxoZW1GTGJjUU1ERURO?=
 =?utf-8?B?U0FJTVpBVUJlRmJJaC9JWHpXc0dGS1pIanhjbHRPZ2ZKMFg2MDREUE5EcUNp?=
 =?utf-8?B?c0haZzhTaGZ6RnllUm5VellrdEhhNURJcWJzQUJjVHNqc1M1VlVmUFlXWFQr?=
 =?utf-8?B?VGU4eFpFalRId2IwcDBTbjVGRkVpY3pTeXRNbEkrZkNSakhQVjkreVlINVVp?=
 =?utf-8?Q?YRwF0+c8WDiG1zD7wJD+TpBntoyMrXT23hYuI=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <5F8F15156C6F2F4F9C8BAB653A0EAF3E@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB9635
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM3PEPF0000A798.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	6dd5701e-aeec-4718-d353-08dcf75f1cc6
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|35042699022|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?RmF2YTFlck9nQ2hLV0plZ2hvVzhsK1NpVVFCZWg4UWF1WDNuQ1RLMkROMXli?=
 =?utf-8?B?T1NYU1pFMDhrb0dvV1lVdkR4R3pFZXBicDBEWDlVYzUwVlM2NEZKK0FXMEMw?=
 =?utf-8?B?bEp6NVNFZW5DNHBucjlUVmdScU50WkFzR1VMRjRoZ1FwTmxJYnZsbWlKVml5?=
 =?utf-8?B?R2M1Vk9kclMyVnkrRVRpN2NDbmtMWlU2WkpVaEQ2SVo5OEhZKzZmSFJPYU5h?=
 =?utf-8?B?cHM1OTBMK2hCUWFRT1hINm9zN09SSGZwMDhRSjgxSXRwUzVFTFpYc0pPcTN0?=
 =?utf-8?B?SlJYS1V1N0g1MlM1NXdQTjlySWlqMS9ieWppY0JHc1R5TFZIK3p1MEwrVk1D?=
 =?utf-8?B?MGZ6TUplbTVDTzZJR0VveVVRbWVtWi9ZZDg1eDRNRlZYOVdWVTFWT0RhVndo?=
 =?utf-8?B?dW5Gdzc1a2Q5RGxIUEsxM0xCM1Rrbmo2UG85N0VHVDlHT3VsUUZDRC9JSXYv?=
 =?utf-8?B?ZjIrdXFPTkl0MjRQQUVyQXFZVVphOFNoeExoMWphTzc1WTgzV0NhNFpiNE8z?=
 =?utf-8?B?dW1DNHlJcVFHTFlzMC85akptdTdjTjFPUlE5c0FhS1BkNlArK2dGY3Z3YjBV?=
 =?utf-8?B?bVZYRVNBb0xrQmhxN1p4UkxMQ1JHZG5uVFNFK01JR1Y3QmhqdTdqN3J4QXZn?=
 =?utf-8?B?NncyR21oU3ZsZEFBRXRIdGlMcklLVEt6aWYzaDJnZW1ZR3Q0MDRobFJPRnJ3?=
 =?utf-8?B?cVl0Mjl6QTRCRnRtZEUyMVhSQy9zQnU2eUlUdkVoQ0xHcVdQQVZIYUpIdnZ6?=
 =?utf-8?B?THRFSG90RVJLRTNld0d5SlJKbzBpUTZCWUMyT3ZYWEwvQVV4amw5YlJ5dmt6?=
 =?utf-8?B?RFpzU2xCN3BaVjZaa1pVdTlza0daNTdXb3N0b3Q0ZlRwcWpDOFdmSVNRUUNH?=
 =?utf-8?B?dzRWK1Qwd2FhSEtkOGpZVWhSalEyRDBUNHNJWVFLNVNBb21iRXUyeHdVMFFz?=
 =?utf-8?B?eHdzdHlpOFZZc1gzUzJYNDdRL3g2SWNxS3pPMWpwMmRWc0FCNTZnbmFZazNS?=
 =?utf-8?B?UG9oR3pCZkFQSVZaMzdjMjhHWVNaMzhJdEVZMS9DZVBSSWg2WlF5MVprVDVT?=
 =?utf-8?B?WUVnNFVFOTZ5aW9LUnRIazNTQ0QxMnpRcDY2TmJvUEF0WTJpcE1FMjd3TnV1?=
 =?utf-8?B?SER3YW9Xb3E1dHlTMjNZTTJUZ01aQVNjYXpiN2xMN0pESmVoMXc1WnRZVEkz?=
 =?utf-8?B?Q3RxQ3VPNkV0NHFTSzRIbUNNcWJYUEUyMWZUWEJCVUhNb0x6d3J4bFZBUS96?=
 =?utf-8?B?TGhnUWRUZ25qOFVDc0wyQ0dhem1zL0NjZFVDNEhQUXNLeWRtSlAwdnlUek5h?=
 =?utf-8?B?NE9iR0w5OGs2SXVad1dTSGRXSUw5ZyttZFZlWDJwSWs0Z0lzZ0ZvQWhGS1g3?=
 =?utf-8?B?ODlIaXhRSWxFNG9TTDVVd3hTVzFwTkJ1ckJtT3d2TE9sREVZUkIvN0IwdlRM?=
 =?utf-8?B?aFNDY1NJUFc5VXpZRXZuTVh2N3hZTlg5b3VrTmlxSHdKN3pHeTE5VndNZ3Vw?=
 =?utf-8?B?YVZMWm1PNDZ0MVU4dnFNaG95SGx5TW1yV1MrSmVzZGh2WCszYnNKM094cnJE?=
 =?utf-8?B?c3R2QmJlSDZ0aldNR2pwVWZXNjExQTdTQi9QNzR2dDJvb29JYSs4a1pMUkJj?=
 =?utf-8?B?R1o1Wk5nYjFtYUZ3MTJEUTdBcWJOZC9sYUhYTXJzZ0d1ZzAwWTgzT3gxRUMx?=
 =?utf-8?B?djVKUmxnRTN5bExwcTk2Z1JqaGVMMVpuNkF4K25YcjN2OWdFV0FKRFphV3Vl?=
 =?utf-8?B?Y1ppK0FldVlRbSs0VVFRVTcrNjZHWHdFUmZBVVNPUVhjWVNXUkp1VzFLS2VG?=
 =?utf-8?B?ZkxCN0RLeDJXR1RwNGRWWHl6cXFXTWhYTTZjRG82R1BnQkZ1QzMzU0w5MWdD?=
 =?utf-8?B?Wk9WL2ZNeGgxMk1qMFd3NlVDTGFtaXdHV3FWRjArUHJyK2c9PQ==?=
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:(13230040)(1800799024)(376014)(35042699022)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 14:45:14.4836
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 774b0b25-57d0-48c9-0e7a-08dcf75f2214
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:
	AM3PEPF0000A798.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR08MB10928

SGkgQXlhbiwNCg0KPiBPbiAyOCBPY3QgMjAyNCwgYXQgMTI6NDUsIEF5YW4gS3VtYXIgSGFsZGVy
IDxheWFuLmt1bWFyLmhhbGRlckBhbWQuY29tPiB3cm90ZToNCj4gDQo+IElmIHRoZSBCU1Mgc2Vj
dGlvbiBpcyBlbXB0eSwgdGhlbiB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybi4NCj4gSWYgb25l
IGRvZXMgbm90IGNoZWNrIHdoZXRoZXIgdGhlIEJTUyBzZWN0aW9uIGlzIGVtcHR5IG9yIG5vdCwg
dGhlbiB0aGVyZSBpcyBhDQo+IHJpc2sgb2Ygd3JpdGluZyAwcyBvdXRzaWRlIG9mIEJTUyBzZWN0
aW9uICh3aGljaCBtYXkgY29udGFpbiBjcml0aWNhbCBkYXRhKS4NCj4gDQo+IEZpeGVzOiBkYWM4
NGI2NmNjOWEgKCJ4ZW46IGFybTY0OiBpbml0aWFsIGJ1aWxkICsgY29uZmlnIGNoYW5nZXMsIHN0
YXJ0IG9mIGRheSBjb2RlIikNCj4gU2lnbmVkLW9mZi1ieTogQXlhbiBLdW1hciBIYWxkZXIgPGF5
YW4ua3VtYXIuaGFsZGVyQGFtZC5jb20+DQo+IOKAlA0KDQpMb29rcyBnb29kIHRvIG1lDQoNClJl
dmlld2VkLWJ5OiBMdWNhIEZhbmNlbGx1IDxsdWNhLmZhbmNlbGx1QGFybS5jb20+DQoNCg0K


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 14:53:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 14:53:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826634.1240958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5R7v-0004kh-M2; Mon, 28 Oct 2024 14:53:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826634.1240958; Mon, 28 Oct 2024 14: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 1t5R7v-0004ka-JP; Mon, 28 Oct 2024 14:53:51 +0000
Received: by outflank-mailman (input) for mailman id 826634;
 Mon, 28 Oct 2024 14:53: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=MlZD=RY=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5R7u-0004kU-TV
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 14:53:51 +0000
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 (mail-am0eur02on20629.outbound.protection.outlook.com
 [2a01:111:f403:2606::629])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6fe7fc27-953c-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 15:53:48 +0100 (CET)
Received: from PA7P264CA0158.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:36c::14)
 by DU2PR08MB7373.eurprd08.prod.outlook.com (2603:10a6:10:2f1::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Mon, 28 Oct
 2024 14:53:43 +0000
Received: from AM4PEPF00025F9B.EURPRD83.prod.outlook.com
 (2603:10a6:102:36c:cafe::d0) by PA7P264CA0158.outlook.office365.com
 (2603:10a6:102:36c::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.23 via Frontend
 Transport; Mon, 28 Oct 2024 14:53:43 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00025F9B.mail.protection.outlook.com (10.167.16.10) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8137.0
 via Frontend Transport; Mon, 28 Oct 2024 14:53:42 +0000
Received: ("Tessian outbound 4f9bb016c0c5:v490");
 Mon, 28 Oct 2024 14:53:42 +0000
Received: from Leee85013cb93.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 4D2886F7-CC2A-4109-9020-248493C2DB2F.1; 
 Mon, 28 Oct 2024 14:53:31 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Leee85013cb93.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 28 Oct 2024 14:53:30 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB3PR08MB9136.eurprd08.prod.outlook.com (2603:10a6:10:435::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25; Mon, 28 Oct
 2024 14:53:28 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.023; Mon, 28 Oct 2024
 14:53: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: 6fe7fc27-953c-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=zWAY1N7TSU52xBiDmLytHgvkhlyOlZwtoxlWJEbRrjRc0mK7yfNqlIekM8tTrc3jECfE0yD1p7JrRrsKiwM5HLN0LcQVC6LCD2hZzDu4fvcVTTz63ihdqHMrQkVtJXcx/lWZ5jysOxXII3JjAynzDOoC0fMh7mNQCUbdOlvpChLAu1B+of5y9PWTlaedhVMbzmSie0S8t2iHP4WfGOJIaLrsxzcywRzc6Kb687Oc9L8jH113OBmcrWwEypGXqq+saLPpOUH1urDM/l0uTcrq+AbaoN1QlPtHUm0szoJGWxmx8NhDDg4/O+Nyl0R2971QC15xoINXew1rsdcS919myQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=RDV2MuxSOjmSu3hnr2329r1eV0r7BKaDaT+KbCMEKj4=;
 b=elgNKmZRZvHg337ACMfAPVfOm7zPF/eHEkBwZFrx4VZht8MuQHa5vusJTvddOMm+MBGt41ahKaRd2l7wIjUlgWy9GcNvPVmkFgXDxAJ942wiZLfO0HIqkQghJDGNLqVuyWMXYQqLhi/GLwgkFUJ1BGkrT+znYvxFVSgRBUIcLjKoFPLTyLVH3QQRc8cXVU2UA0o5Cah7JB4CL5fBAboQxquDg0mGS/A8HNtYkcCqL7PXggF8jrXl0jOyab1Jn9Ni0giBt6CsDZg5lICWyAkIm/EcH8V3q+NfAsttrTV4OUtNQZ8wJlsP+wyGloFHd+qZEVKvD54FEZLh2L6D1vkPTA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RDV2MuxSOjmSu3hnr2329r1eV0r7BKaDaT+KbCMEKj4=;
 b=gALMlSXlqit0kwY+TIcuf/haGugoqExgd+mYHDVH4PY24d2PU3DfDIZPN3ZqlGj4ZQuW+SQjXlcD+rZokpknuygWVoGD4TT9Sl1fQKMSroOjxHQTPBiWO8nP57sh2KLvHTjez8Q/2vfvP6H/rf32RE60LHm0c/LEM8FW8WvPkQY=
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=arm.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: 5840ce3241f27887
X-TessianGatewayMetadata: mcY3iz5GefycCJuY6hxbF8on6l9EciJO0Op/Ev3SBgCXWbyxqPUjdVQjchyEZnrRKFfps23aR8HhPnAOiEW8A79y/s8clvwG3P31han9V0sROKOt1FyfcJuh8YZt8ueR/2yO/rqyFd6eWuRERgZTHJGFZCN8W7Xbxz5Xk+7okF4=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=vp2axopoY6TYRo7RLH6jioYJFwMjs8+Aw7zcdvbGs+d1tUjEQiwxQPqHJFCz0GX2fTZzRmppfgRmqnI3tCNyCaP41trepmd9gwDvXbUd/CnEq7YIZy7wdEyiGwXrCOI035W0UQS6zWJkSH1eVsDYDuSF0FnZ5eNi3dVSzUNmqleOA5ofcwBR29WD4vKNUw4IcGg/DqrvRqQ+5mViPXlHXG1zcCmGvoBiQuH6wvopju4gMQUy76CJBwZEO56kvU1rEpxrhlANw1mCf8E1fMgv9nnaXCnOYHsDyA0H0m0ZiJA/n7f+HXNl6bW2zNG43ao7HwPcHsot9F/4d/4hIJIfSw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=RDV2MuxSOjmSu3hnr2329r1eV0r7BKaDaT+KbCMEKj4=;
 b=qEH3QQS02/K96IZMJtJqYSHgC7LLsgju2sRb01D3OMhPvD7TwNMqVLQ4e33H7bGGwqQcZ6wWTsnffR8zB+qudQds6g0MFyErGe3m2dIFTy33Lr9CvnqdUnR41nzFAj0fpK03Bh/bp4Twvv4f3455hL7fj8QN00tG0NryhAQjH5br1geLYx/C9TQ58wHPwPt3GM3BhJznmBGmZRVhrNnGSdoIYrULdeF1cO+AWbes95A2GvI0UYanE2jRub0S/uXfd16Nt9F92CmmqQ1dcYV3sUJD+JbYTE18kimO116zsrphUDvZCD0LlZb21ZtxrrVmhrLoIWZ9w2pQqenjcVU+OA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RDV2MuxSOjmSu3hnr2329r1eV0r7BKaDaT+KbCMEKj4=;
 b=gALMlSXlqit0kwY+TIcuf/haGugoqExgd+mYHDVH4PY24d2PU3DfDIZPN3ZqlGj4ZQuW+SQjXlcD+rZokpknuygWVoGD4TT9Sl1fQKMSroOjxHQTPBiWO8nP57sh2KLvHTjez8Q/2vfvP6H/rf32RE60LHm0c/LEM8FW8WvPkQY=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Wei
 Chen <Wei.Chen@arm.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>,
	Jiamei Xie <Jiamei.Xie@arm.com>
Subject: Re: [PATCH v4 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Thread-Topic: [PATCH v4 3/6] xen/arm: mpu: Define Xen start address for MPU
 systems
Thread-Index: AQHbKTd0Vc85q9/6SUW4ygKFCDwj9bKcP8+A
Date: Mon, 28 Oct 2024 14:53:28 +0000
Message-ID: <BC661646-EA41-4EA4-B99B-C4B184AD71D7@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-4-ayan.kumar.halder@amd.com>
In-Reply-To: <20241028124547.1371867-4-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB3PR08MB9136:EE_|AM4PEPF00025F9B:EE_|DU2PR08MB7373:EE_
X-MS-Office365-Filtering-Correlation-Id: 359d76eb-5cae-4689-6e3f-08dcf7605124
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?MmpSNnd4SmU2L2F6MmozdkMzTURMcytDdWhVc1lxY2FGbytLV3ZrcXBwZ083?=
 =?utf-8?B?R3U0L3owWENRazJmUmg2aDRrVnBOYUdmWElLYk04STBlelQyeURQTy9tZHRl?=
 =?utf-8?B?UDAxN085UjNKUmNFb3l1VjU3cm1MV2F6a1FNU1c5UW1pZXoyUlpGSWRMbms2?=
 =?utf-8?B?U0pGR1AyS09EdEUraGhQSUExRWtkOUovMFQ3dllVcmh5VDhESzg0SHN5VTBt?=
 =?utf-8?B?dW5OeXhSYjAvRVJiQkFWSTdzbDVXdzZrMWVLMjVaT0dWclljVXllMDhiNVJS?=
 =?utf-8?B?RFBDWlFGS3FTdEhKY3NST1dPVHF3dnBhVE9MaS9oMWlYMFVJWERaK01Ya2J6?=
 =?utf-8?B?NWVlY053dDM4ekdmdGVBQjg5ajhYVlBvRmNRK3FFeVhjQ2U0V3dBZXYwaUlS?=
 =?utf-8?B?RFRoZGtEZlZreHBkcnNWTHl2ejlTWTBWNlpFNVA5RXFTNmpNZ0t4QlVHQlNS?=
 =?utf-8?B?eEN4RTViS2paYm5nKy9GbjBzVVlIcnJ1UWR6d2h4VTJCMXlKT0R6THU1R2xT?=
 =?utf-8?B?Y21hSlQybmdKL2VnaFNpVlNESndVNkwrQzNsK0pveXNxL2t1ODNYZU1vL3BC?=
 =?utf-8?B?SzkzMGJDbmFmNGxNeDBNL3ZocUNBejQ1dDVnZGZSUzl5b3BYelEwZGlPTW9B?=
 =?utf-8?B?MFpKcmptQm5vMVMwTnh5MEYwR2JjVWJ6cnRzTHVicDhjdWg0eit4OC8xY09Q?=
 =?utf-8?B?VHF4Z1Z2WFI1SzJmMWZ1QVNEODVndEphRDYxbldIOWlzTnlzM0EvQUtiT3hX?=
 =?utf-8?B?bXZ2T2pQTWxFOVEvazdUUUJ5YTFveHVOeml6WGhoRWswWmh2TFhJQmZKTDRY?=
 =?utf-8?B?U2hwMkFtdnBrSm80NDFoTklDT1JTMnZlaGt4WHhKWnExRkQzbDZWaXcyODNW?=
 =?utf-8?B?b1l5SG9wUk54dzU1WlNoZDdSQ0tNSXViT2JrZlhUTVZORUJIeSt2NFlwNnZn?=
 =?utf-8?B?NmhlN2pDeHhGMnROWUVaUG0zdWxWMkFYdHozOS84M2phellpa3dZL21EeTlT?=
 =?utf-8?B?RkxkSkJNczM5UUpHZ1FFOFFwd1BJN3lLVUFMN2RFS05XL1RBR25uZ1QwMTcr?=
 =?utf-8?B?Sytkd2xlNWNQYlN5aGs4Q3dMODVvdy9NREpQUzlkeUd5Q2s0SEdPL1FiV2VC?=
 =?utf-8?B?NlJGYXlGdjNxY3oveVhland2RHZGUG03R2tiUUxzNkdMd09oQStrUFQyTnRl?=
 =?utf-8?B?YWNPSVFtdSs1Zk5mTVRRM2swTUt2Vm1SZTBFUVo0R29iNnF4NGNoWWZVZXJ3?=
 =?utf-8?B?N21mNmdzcnRnN3F1dGQ2VWRVSDhjNEc0dnZ1Ui9EMUZsVVN1eExDUWxNZ1dS?=
 =?utf-8?B?Mjk3RUI4SFNoTlFKbmVFYkFzNzZOdW1JZm1PMnNjb3IveXFxeUFNZ05RR1Jv?=
 =?utf-8?B?VSs3MTlDc3BDZnJSTWI3eTJDa0tXRU9lUXNVNUp0SFRMS0VHQllwTDZNUStw?=
 =?utf-8?B?Z2IrV1ZOeGZMV2RjWFAvZUVnLy9aTS9KNUJCdEJNdEl0WjNySys4S3dnSlVn?=
 =?utf-8?B?R0JocDlEMS8yNE02RzduTUoxQ3lnNFFDRHRxN0FKWlAvZkJYSmVEZHlaR0tx?=
 =?utf-8?B?VmtUZkthUXlKRUk5YkROdVZIZ0tIbTFHQVJhVjBEOFBUNUJ6VVFYMlBPZ2Vx?=
 =?utf-8?B?ZkZEMjdHdEVsOU9lTWlNMzM5TnpCZ0JWZlA0QUhkVXlnSHl0ZStLMDFBeVJB?=
 =?utf-8?B?ZEx0MFlSWWU1RkYvaG9aQnFGbWRqbExaUXlUakN1SkFDWWhJbk9aSDM0U1pv?=
 =?utf-8?B?UVVFQnlZWDNnZnNCSHFtS3RhREdmY28zUE5pZXMwall3NEtRdzBVcWp4RzFk?=
 =?utf-8?Q?NCYmrtjgoSGiFXtYQ6LF6ffqIx8OGnHpLG8o0=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <CDAFD29FA7D8894C8D05D1413F716A74@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR08MB9136
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00025F9B.EURPRD83.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d519c695-783a-4c1a-13ea-08dcf7604844
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|35042699022|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?STNMOTRKOEVlZmhibjBTZnpKNTJnV3VHR2dFNUdURjk1NG91dlRoQnNOVXEx?=
 =?utf-8?B?OVhOTmVtM2I2NjVvSFdYY1FCS2tiUWY1aDN5ODh3ZUk2ZHI3bVFraFQzcFdH?=
 =?utf-8?B?bTBHSzN2c3BVdm82Q2IvRmlvd25zWHY4U0tPbzBCNWFOSjF1VXVpQXUvYUpO?=
 =?utf-8?B?Y004amhJT29xdGlXVjFMdnk1NklBWmJ5SldhS3FobnpORkdjZ3c0NHZSTkQw?=
 =?utf-8?B?N0pVV3ltck16d3lTT0toMGZHOEFsNVpWTHRqT1dITmxCQ3JtQ3E4aDF6SXpt?=
 =?utf-8?B?SkFYVDVzQStjNVBPOFZCZ3c1OWh6cnN1T2dMNXhPT3E5TWw5ZEU3eTVFcys2?=
 =?utf-8?B?dkVrTTFDUkNkZ2tSTWxteEtESlRKTVZITDdrd0JOdTErMWVVaStmUldZaUdT?=
 =?utf-8?B?dVR0aEVhZDZxcEk5ZG5nYmNVQUo0YzI1dy9mUkFCL2NraUswc0czM3ZZRjZQ?=
 =?utf-8?B?U2VwUEZsRENLeHArSFhudWtZSkRNcVFpZFRlamFkWHNlTDlPbTVRTTE1bjR6?=
 =?utf-8?B?VGlEQ1ZyRFJjN0VtM2NoUEdYdGtBZzJ1Wlpyd3d6dTcyNmt2RkNlUEhjTHp4?=
 =?utf-8?B?SUt4c2p1RU5wN2VEakF0SXhQYU5ZcHVqOFdKSU11SjNQRmM1OWJ5VEFVYlNl?=
 =?utf-8?B?Rk1HSThkaDVkVURmY25Dcmo0cmhENjdsYTBhaTFMbXc2Zm1MMjg4V1RoUzhR?=
 =?utf-8?B?UXh4UWg0N0pHZVp1VDFXeGNtdFBJdEZ0U3JxaVl4Skx4ZEErNHlYZk9Cc1Vs?=
 =?utf-8?B?bWp6cWJjK0o2TjBuc09LSjh4R0Z6WGszYitHS0NNTHMzRFFyOHJJL2dvWDU5?=
 =?utf-8?B?ejNuSUhSWWxyTmgvY0g3TG1YRWQvc1BHWFRBQkQyb1B4NDJoRnZNdXJkZVZS?=
 =?utf-8?B?MUc2QnZNdy9VbDNhb1lidHhSQzM5eHRGVGlrUXpDdzQ3M3oxdDVxTXZaZEEv?=
 =?utf-8?B?cHpCdFBYTDU3cDRoZ2FZa1FMSllHMkp1d0ptT3ljL1lGbVY3NTdyRnVIWjdS?=
 =?utf-8?B?RTZucmxzWGhGUFJYdTZMbEtXaUorM1ZOV1BnaGJ6a3Rhc2dEUFJQQk1Hb240?=
 =?utf-8?B?YW8yb1JPTzgwd3ZCYkRSSGFJU0c4TCtRQnZmcXFzbkQxNVZDTFppVS9sMjd2?=
 =?utf-8?B?WlBqUE55NGZSdWpEZHN5MHN1azFTbEV1V3lldEJHM0dmbUMzMlBLaENOVHgv?=
 =?utf-8?B?eFI2cTM4QmxHeUplSDkzc3hJVGFkRDhoNkdrM2RkT2tVcjhwaHlFU0dscnZE?=
 =?utf-8?B?cUQzOXFiNkNUYXhLaUJNRTR5L3Q5OXhybm9oQURpdWR3QmUzSEo2VXZSVmlR?=
 =?utf-8?B?c0pyV281M2dDcHpZUUo5MkhvdW1ueFA5V0pMd1pyY2UrcE9JTjB1MWVsQkVi?=
 =?utf-8?B?ZHFCUkU1QUpMU0hDVmkxenlRNW96OXlySkxkVHYyVDBldWF3Y0Z3SjA4S05Z?=
 =?utf-8?B?ZUNnMmlpUVloNnRaVUEvaU9IdXF3bTQyNkNLWEptK1ZLTEFHclBEdFU1a0Yr?=
 =?utf-8?B?SGkyWG9JMElxVGk5Q0JrZGxoeWwrOERYMjhCYkt1R1g2TnlpWnpWQUhsS0Iy?=
 =?utf-8?B?ZFp3WXkrNGhnTGpaU3VVeHpPeFpYQ0xEQkdiaUlQQzVnTitzOHRyVWR6UERC?=
 =?utf-8?B?REJYZTVhRXpScENSY1BkQlNNbmFGL1NvSWQwai9odkV3YnFZL3ZYMU9lbDA5?=
 =?utf-8?B?U3R2Q2FPRHUxSnpNekgzbTk1S0xaVVRNRFNMbERYQ0ZWK20wUTZjOXQ1R21K?=
 =?utf-8?B?ZGFrczRrVml1cldLdmpRU2N4VjJTYVNlNmlmSXBqdXRMWG1YZlRST2krTjE3?=
 =?utf-8?B?VGtkeWFhcXVtaWpNYS8rQXVibFN4VXFXTWtkMW13RWRPdGZRNHBTMDhHL09a?=
 =?utf-8?B?bXlHMjVxS1FSOEpBUXZQSnN1V2RSK2kwZkUxdkZZYWw3UFE9PQ==?=
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:(13230040)(36860700013)(376014)(35042699022)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 14:53:42.9249
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 359d76eb-5cae-4689-6e3f-08dcf7605124
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:
	AM4PEPF00025F9B.EURPRD83.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2PR08MB7373

SGkgQXlhbiwNCg0KPiBPbiAyOCBPY3QgMjAyNCwgYXQgMTI6NDUsIEF5YW4gS3VtYXIgSGFsZGVy
IDxheWFuLmt1bWFyLmhhbGRlckBhbWQuY29tPiB3cm90ZToNCj4gDQo+IEZyb206IFdlaSBDaGVu
IDx3ZWkuY2hlbkBhcm0uY29tPg0KPiANCj4gT24gQXJtdjgtQSwgWGVuIGhhcyBhIGZpeGVkIHZp
cnR1YWwgc3RhcnQgYWRkcmVzcyAobGluayBhZGRyZXNzIHRvbykgZm9yIGFsbA0KPiBBcm12OC1B
IHBsYXRmb3Jtcy4gSW4gYW4gTU1VIGJhc2VkIHN5c3RlbSwgWGVuIGNhbiBtYXAgaXRzIGxvYWRl
ZCBhZGRyZXNzIHRvDQo+IHRoaXMgdmlydHVhbCBzdGFydCBhZGRyZXNzLiBTbywgb24gQXJtdjgt
QSBwbGF0Zm9ybXMsIHRoZSBYZW4gc3RhcnQgYWRkcmVzcyBkb2VzDQo+IG5vdCBuZWVkIHRvIGJl
IGNvbmZpZ3VyYWJsZS4gQnV0IG9uIEFybXY4LVIgcGxhdGZvcm1zLCB0aGVyZSBpcyBubyBNTVUg
dG8gbWFwDQo+IGxvYWRlZCBhZGRyZXNzIHRvIGEgZml4ZWQgdmlydHVhbCBhZGRyZXNzIGFuZCBk
aWZmZXJlbnQgcGxhdGZvcm1zIHdpbGwgaGF2ZSB2ZXJ5DQo+IGRpZmZlcmVudCBhZGRyZXNzIHNw
YWNlIGxheW91dC4gU28gWGVuIGNhbm5vdCB1c2UgYSBmaXhlZCBwaHlzaWNhbCBhZGRyZXNzIG9u
DQo+IE1QVSBiYXNlZCBzeXN0ZW0gYW5kIG5lZWQgdG8gaGF2ZSBpdCBjb25maWd1cmFibGUuDQo+
IA0KPiBTbywgd2UgaW50cm9kdWNlIGEgS2NvbmZpZyBvcHRpb24gZm9yIHVzZXJzIHRvIHNldCB0
aGUgc3RhcnQgYWRkcmVzcy4gVGhlIHN0YXJ0DQo+IGFkZHJlc3MgbmVlZHMgdG8gYmUgYWxpZ25l
ZCB0byA0S0IuIFdlIGhhdmUgYSBjaGVjayBmb3IgdGhpcyBhbGlnbm1lbnQuDQo+IA0KPiBNUFUg
YWxsb3dzIHVzIHRvIGRlZmluZSByZWdpb25zIHdoaWNoIGFyZSA2NCBiaXRzIGFsaWduZWQuIFRo
aXMgcmVzdHJpY3Rpb24NCj4gY29tZXMgZnJvbSB0aGUgYml0ZmllbGRzIG9mIFBSQkFSLCBQUkxB
UiAodGhlIGxvd2VyIDYgYml0cyBhcmUgMCBleHRlbmRlZCB0bw0KPiBwcm92aWRlIHRoZSBiYXNl
IGFuZCBsaW1pdCBhZGRyZXNzIG9mIGEgcmVnaW9uKS4gVGhpcyBtZWFucyB0aGF0IHRoZSBzdGFy
dA0KPiBhZGRyZXNzIG9mIFhlbiBuZWVkcyB0byBiZSBhdCBsZWFzdCA2NCBiaXRzIGFsaWduZWQg
KGFzIGl0IHdpbGwgY29ycmVzcG9uZCB0bw0KPiB0aGUgc3RhcnQgYWRkcmVzcyBvZiBtZW1vcnkg
cHJvdGVjdGlvbiByZWdpb24pLg0KPiANCj4gQXMgZm9yIG5vdyBYZW4gb24gTVBVIHRyaWVzIHRv
IHVzZSB0aGUgc2FtZSBtZW1vcnkgYWxpZ25tZW50IHJlc3RyaWN0aW9ucyBhcyBpdA0KPiBoYXMg
YmVlbiBmb3IgTU1VLiBXZSBoYXZlIGFkZGVkIGEgYnVpbGQgYXNzZXJ0aW9uIHRvIGVuc3VyZSB0
aGF0IHRoZSBwYWdlIHNpemUNCj4gaXMgNEtCLiBVbmxpa2UgTU1VIHdoZXJlIHRoZSBzdGFydGlu
ZyB2aXJ0dWFsIGFkZHJlc3MgaXMgMk1CLCBYZW4gb24gTVBVIG5lZWRzDQo+IHRoZSBzdGFydCBh
ZGRyZXNzIHRvIGJlIDRLQiAoaWUgcGFnZSBzaXplKSBhbGlnbmVkLg0KPiANCj4gSW4gY2FzZSBp
ZiB0aGUgdXNlciBmb3JnZXRzIHRvIHNldCB0aGUgc3RhcnQgYWRkcmVzcywgdGhlbiAweGZmZmZm
ZmZmIGlzIHVzZWQNCj4gYXMgZGVmYXVsdC4gVGhpcyBpcyB0byB0cmlnZ2VyIHRoZSBlcnJvciAo
b24gYWxpZ25tZW50IGNoZWNrKSBhbmQgdGhlcmVieSBwcm9tcHQNCj4gdXNlciB0byBzZXQgdGhl
IHN0YXJ0IGFkZHJlc3MuDQo+IA0KPiBBbHNvIHVwZGF0ZWQgY29uZmlnLmggc28gdGhhdCBpdCBp
bmNsdWRlcyBtcHUvbGF5b3V0Lmggd2hlbiBDT05GSUdfTVBVIGlzDQo+IGRlZmluZWQuDQo+IA0K
PiBTaWduZWQtb2ZmLWJ5OiBXZWkgQ2hlbiA8d2VpLmNoZW5AYXJtLmNvbT4NCj4gU2lnbmVkLW9m
Zi1ieTogSmlhbWVpLlhpZSA8amlhbWVpLnhpZUBhcm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBB
eWFuIEt1bWFyIEhhbGRlciA8YXlhbi5rdW1hci5oYWxkZXJAYW1kLmNvbT4NCj4g4oCUDQoNCkxv
b2tzIGdvb2QgdG8gbWUNCg0KUmV2aWV3ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2Vs
bHVAYXJtLmNvbT4NCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:01:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:01:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826640.1240969 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5RF8-0006k0-E1; Mon, 28 Oct 2024 15:01:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826640.1240969; Mon, 28 Oct 2024 15: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 1t5RF8-0006jt-AP; Mon, 28 Oct 2024 15:01:18 +0000
Received: by outflank-mailman (input) for mailman id 826640;
 Mon, 28 Oct 2024 15: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5RF7-0006jl-AC
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:01:17 +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 7af50e58-953d-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:01:16 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-43168d9c6c9so45696215e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:01:16 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b55f779sm141292715e9.18.2024.10.28.08.01.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 08:01:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7af50e58-953d-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730127675; x=1730732475; 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=Waws4sxMxmsg+1KCPdMNmG6diNbqVaHnZOWjCmR+lsU=;
        b=aKKKibKYwYMZf5m6H6UrWXY77zB8JIU8OAxDFLaQHSK4hv/hNux/XGOsHYBK0EAOwf
         irbjZud+2lUR0JsCyUAH2lMWqoDdcGpNJsW0uR3bf8MaFe+byb+UzzzsgLLL2kJczcMB
         DGpGj74EaY8mPM4IKhR7pYzTENKxponUg+AiE1XmcHV9znsPAZNRAWFzP3YdfjSqusuB
         B1PPYy+nwyRzVh8NqT/FmWNbuDuqkCW4P/+/JlqY73SV1j+GPLxazxAMJNyidm2LZh9z
         /+v6s+8ATTQNFnYWN9GB3Q8eI0xT3YIiRNIEnooYMnMHTwXNLxpk+GI5RIpjq8xMZhKK
         M1og==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730127675; x=1730732475;
        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=Waws4sxMxmsg+1KCPdMNmG6diNbqVaHnZOWjCmR+lsU=;
        b=GXdEeB4W6vt624GFZHVkpC0buf6vB6KUg2UKFpCcNFeKqhjQPxoKqMPdcVMem03Ezs
         IpOpZkb+tM+BCHaObehwgNJJUvjweiYCc460CwbkeUs8qj7ypAFdUiO5JP6nrsSzaDhb
         uVfmxci8ZOMJI3Yeajqo7rRSfd1b/z+03enlkS3i0QERWRL2SmvFj+GjeJtppPjD6XIh
         Jh6uwADR/xnvLTorBsaw4GJX0GfL1K5EGZ03rvi4+teHfBApsuW/xunqerNRrC+5gbPT
         VPtZ3QSIwUF8qxjQWbQx+T30iighfP3AyLdDScUQv/ANVuAe4GE7Ga3a+/PVKiOoX6P6
         Wyzg==
X-Forwarded-Encrypted: i=1; AJvYcCWg5L4PQoVl/47BCrDbSucJS4k3g7uPHQrNLKFu8Zg+haL+u2ss8e0FF3yRvTZrlzNoZunf0CpkDJY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw0pPI4zBtOiajkhdAgJLBgxWj/y2Gl2Vs1jf4/rfy4tN1xp4YP
	ryQTc4VP03k1jsAOwJ9rTVQZzCI/56AbbyyJsj/nF5mjvWS+0PoJUYCqsolWHw==
X-Google-Smtp-Source: AGHT+IHBVcrJKTMV00grUn/XxpDz85RClD5QrNc4A+xacdsFyKDceA3tNpTNjMTNTcx5GeSFIIbkLA==
X-Received: by 2002:a05:600c:5253:b0:431:46fe:4cc1 with SMTP id 5b1f17b1804b1-4319aca42bemr77948265e9.10.1730127675505;
        Mon, 28 Oct 2024 08:01:15 -0700 (PDT)
Message-ID: <55728fdc-6247-4810-8696-a999713f4a7c@suse.com>
Date: Mon, 28 Oct 2024 16:01:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
 <27be8d00-8260-460e-948d-81418b93662a@suse.com>
 <8fa530cb-4d70-4300-8d4e-1e7208f7c045@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: <8fa530cb-4d70-4300-8d4e-1e7208f7c045@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 15:39, Ayan Kumar Halder wrote:
> On 28/10/2024 12:55, Jan Beulich wrote:
>> On 28.10.2024 13:45, Ayan Kumar Halder wrote:
>>> --- a/xen/arch/Kconfig
>>> +++ b/xen/arch/Kconfig
>>> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>>>   
>>>   config NR_CPUS
>>>   	int "Maximum number of CPUs"
>>> +	range 1 1 if ARM && MPU
>>>   	range 1 16383
>>>   	default "256" if X86
>>>   	default "8" if ARM && RCAR3
>>>   	default "4" if ARM && QEMU
>>>   	default "4" if ARM && MPSOC
>>> +	default "1" if ARM && MPU
>>>   	default "128" if ARM
>>>   	help
>>>   	  Controls the build-time size of various arrays and bitmaps
>> I'm afraid I can't easily tell whether MPU can be used together with any of
>> RCAR3, QEMU, or MPSOC. If it can, the new default line would need to move
>> up, as it's the first one that has a match on its condition which is being
>> used.
> 
> MPU cannot be used with any of the existing platforms.

That is - qemu can't emulate such an environment, i.e. even QEMU and MPU
don't go together?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:06:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:06:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826646.1240979 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5RKS-0007SV-1A; Mon, 28 Oct 2024 15:06:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826646.1240979; Mon, 28 Oct 2024 15:06: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 1t5RKR-0007SO-UX; Mon, 28 Oct 2024 15:06:47 +0000
Received: by outflank-mailman (input) for mailman id 826646;
 Mon, 28 Oct 2024 15: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5RKQ-0007Oz-Tv
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:06:46 +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 3fa4af64-953e-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:06:46 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-539e63c8678so4417447e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:06:46 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b57b5d9sm141504405e9.44.2024.10.28.08.06.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 08:06:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3fa4af64-953e-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730128005; x=1730732805; 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=gqflbiWmtpOO6U9/BwdFS9BlUbLmiRF9EkK1xJKr7vk=;
        b=WoMVZqiozXe2aIK1lSIiec6GBSaB2cSs+wql+wrUTDhy42MvfGAsqp8BU5FiYMpRSU
         zhcFSi1Ye9HomvhiaE6Vj4BjnFkG6jT0eoF1aK40f32Xo+q8jsZ4LGWGQyJ+/4KJDriv
         92T5Q7r7eRuLHsGduiNO4rdf07GzVmoJxA+NFAPhocLX2hLn/aVGPKqZzvV0zMYL+92Z
         UEsQ3tdtq1RUP5Vr5pFA/9JOv8vxNXzDPTUE3maq/VsyJeuk95HMJtRd7Jhd9jNk/eNy
         n4VwAP34Aq67bqrV+iE83Ve/ASLTe/wCPxP7zzrlHR6TSJcF/hn/UQVHIdOxg+w63YV9
         4iVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730128005; x=1730732805;
        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=gqflbiWmtpOO6U9/BwdFS9BlUbLmiRF9EkK1xJKr7vk=;
        b=p6SP++BcjYmk+I4EQ2vsdvLW00Smi22toFSuF22PjLX7wJ8YsjAlsrIeh/ywvclOYE
         mFx7kPrVdjDBQR6j1Fl/Tuy7qAAupcqqritiQbAW8qqQMREhsCMouzTbBHfNhkkuHq68
         8I4k3ExS/fqgl0oWQns2CCqUQjuzSJ1a6OGObI513ekBvcNzFPebcWwxW4xdsd3K1YHa
         wY/LzjOuNzxwo5sBsWZOfYVljLnBKKmdaJ91eI7T0r8aPy8yUA8LhRqgSd/Il21IOGQX
         f0zeg7m8Y9Gsq/JEaq9sm97ktOnC+FdNOIDz/9j4lN23YNO+QQFKvNum0DF4GTeEqubu
         KJrg==
X-Forwarded-Encrypted: i=1; AJvYcCVkGiEBBDq3SIxeHrcIAPwBbqXhlV5l9Y2xBg7akkFBbyDs+h9fEJRCCyBnUHzGz7VQzALG9ToV/V4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwUwTS97TptwTgyk9HzyT/AlNR1TaysnKqRzNWChgfuqEXdnL/5
	1+vKw+u8Kszbe965Ru8v7YSGOqA1586RIaQVynN+o4dvkL7rJkGMRCKRV6WX3A==
X-Google-Smtp-Source: AGHT+IH1CqghehB/hLtpuc5KC04MSTui9lOqHvdrlub2y/Jjr6NaEUUz44Vz8pPTccD8KncdcvGJgg==
X-Received: by 2002:a05:6512:401f:b0:539:9155:e8d4 with SMTP id 2adb3069b0e04-53b348c1e25mr3307100e87.8.1730128005428;
        Mon, 28 Oct 2024 08:06:45 -0700 (PDT)
Message-ID: <b1b428bf-9842-4b07-9438-c64b286d236d@suse.com>
Date: Mon, 28 Oct 2024 16:06:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 07/10] x86/ucode: Move the CPIO path string into
 microcode_ops
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-8-andrew.cooper3@citrix.com>
 <2e3dfea1-8277-4d4e-b594-87b3cac3052b@suse.com>
 <d54ed169-fd41-41b3-9222-50e858c0b622@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: <d54ed169-fd41-41b3-9222-50e858c0b622@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 15:38, Andrew Cooper wrote:
> On 28/10/2024 2:25 pm, Jan Beulich wrote:
>> On 28.10.2024 10:18, Andrew Cooper wrote:
>>> We've got a perfectly good vendor abstraction already for microcode.  No need
>>> for a second ad-hoc one in microcode_scan_module().
>>>
>>> This is in preparation to use ucode_ops.cpio_path in multiple places.
>>>
>>> These paths are only used during __init, so take the opportunity to move them
>>> into __initconst.
>> As an alternative to this, how about ...
>>
>>> --- a/xen/arch/x86/cpu/microcode/private.h
>>> +++ b/xen/arch/x86/cpu/microcode/private.h
>>> @@ -59,6 +59,13 @@ struct microcode_ops {
>>>       */
>>>      enum microcode_match_result (*compare_patch)(
>>>          const struct microcode_patch *new, const struct microcode_patch *old);
>>> +
>>> +    /*
>>> +     * For Linux inird microcode compatibliity.
>>> +     *
>>> +     * The path where this vendor's microcode can be found in CPIO.
>>> +     */
>>> +    const char *cpio_path;
>>     const char cpio_path[];
>>
>> inheriting the __initconst from the struct instances?
>> Acked-by: Jan Beulich <jbeulich@suse.com>
>> with a slight preference to the form without the extra pointer.
> 
> I'm slightly surprised at this request, given that the form with the
> pointer results in less data held at runtime.

No, it doesn't. Yet I only now realize that ...

>>  Except that:
>> gcc14 looks to be buggy when it comes to the copying of such a struct. The
>> example below yields an internal compiler error. And the direct structure
>> assignment also doesn't quite do what I would expect it to do (visible when
>> commenting out the "else" branch. Bottom line - leave the code as is.
> 
> It's unfortunate to hit an ICE, but the copy cannot possibly work in the
> first place.
> 
> ucode_ops is in a separate translation unit and has no space allocated
> after the flexible member.   Any copy into it is memory corruption of
> whatever object happens to be sequentially after ucode_ops.

... my expectation of how the copy ought to work (and how the C standard,
at least in close enough an example, specifies it) would specifically _not_
suit our needs. The copy ought to only cover sizeof(struct ...), i.e. not
the string. Yet we'd need that string to be copied to be usable for our
purposes.

> The only way it would work is having `const char cpio_path[40];` which
> is long enough for anything we'd expect to find.
> 
> But again, that involves holding init-only data post init.

This, indeed, would increase post-init size. Yet with the compiler issue
no question arises anyway as to how this needs doing.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:15:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:15:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826656.1240989 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5RSU-0000vC-Rf; Mon, 28 Oct 2024 15:15:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826656.1240989; Mon, 28 Oct 2024 15:15: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 1t5RSU-0000v5-OY; Mon, 28 Oct 2024 15:15:06 +0000
Received: by outflank-mailman (input) for mailman id 826656;
 Mon, 28 Oct 2024 15:15: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=MlZD=RY=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5RST-0000uz-Ae
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:15:05 +0000
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur02on2060b.outbound.protection.outlook.com
 [2a01:111:f403:2607::60b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 68051bb4-953f-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:15:03 +0100 (CET)
Received: from DU7P251CA0017.EURP251.PROD.OUTLOOK.COM (2603:10a6:10:551::8) by
 AS8PR08MB9044.eurprd08.prod.outlook.com (2603:10a6:20b:5c0::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.20; Mon, 28 Oct
 2024 15:14:57 +0000
Received: from DU2PEPF00028D0F.eurprd03.prod.outlook.com
 (2603:10a6:10:551:cafe::43) by DU7P251CA0017.outlook.office365.com
 (2603:10a6:10:551::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.23 via Frontend
 Transport; Mon, 28 Oct 2024 15:14:56 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU2PEPF00028D0F.mail.protection.outlook.com (10.167.242.23) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Mon, 28 Oct 2024 15:14:55 +0000
Received: ("Tessian outbound 8223600b7a9c:v490");
 Mon, 28 Oct 2024 15:14:54 +0000
Received: from Lc07ac40fcf80.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 BB13192F-7D6C-44C9-944E-8DA5AAE5BAEC.1; 
 Mon, 28 Oct 2024 15:14:42 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lc07ac40fcf80.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 28 Oct 2024 15:14:42 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by AS8PR08MB6568.eurprd08.prod.outlook.com (2603:10a6:20b:338::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Mon, 28 Oct
 2024 15:14:39 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.023; Mon, 28 Oct 2024
 15:14: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: 68051bb4-953f-11ef-a0c2-8be0dac302b0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=KmCw37ajOEFKPT+rwcuIbCYcu0Xbq3wzPWmBTkmHLumHr5YXfXFAGIlQ7TfxSguffJ8Yu537lY6V19ZKn5b7Z+g25Jh7w0f15SFmQKodjAUENu9sLKzjynIuGTtRkcD4YuYv8IVOJqdK/L83uEGaaVF8gSnIwZ7yk0omWjRaRQwbtJAdwcPTmoxtqDkrMbmo9aH+Y4gemaflynyCZJvr4BV2tMUrgjnyXJFJXxVDmYrWlLniLMn5c+gNE8gsRxJ6UkklPMhNIJbXiB6OjwPdyf7g/CrPODqp5YzpdnwyLG2ZFe1VehI8AxQ8IbwGXrSDhacnQbbennax9OC4Zv/a1g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=t47u8dPzArt7iHDqPqIsBJupOS8h6fCg5yUUihDNO+A=;
 b=kAWpWfr9uk+F+fySl7D5HmRqtSnLWnJdbXt2VyYU5ay/UscHS2eVLTCxiF8E4bNC9aS1tog+bCBcPGRMrOZXFUFjQV3+baaZmSsNlcSJgl502ERJPyjD/PcwMex8YXpfRdxig5fDUSOq2AZoRzSy1i/kUfBbR40O4kJcnfNlKgTWu4cbVcyr71je3tSbIx0HVZwVD54SAmwJQa98AbctgBWRtOzdwVAStbO8K8dDur6q8Q3Qfv1CvOSzpJeDUrm2QerzOKWvntPmzblhGO4UxMo0Th8ZzaOA8rxq3phXtS0fbArCj97OUCT/HqKlOjXHu6SxUWfv61XODHDrIrVSjQ==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=t47u8dPzArt7iHDqPqIsBJupOS8h6fCg5yUUihDNO+A=;
 b=o1pJsEJ6hvYaI4M0BSp5jEU7lKiKraiC/wyxT9KI4D5bPyQzP+kM8q8BndweKxYtVG/OPiZ/kDPjavr0YougND9cbpBfxRP4/PaSXhV89PUPrfMbTe5SeQraNobIl1DRW9E32E3HGrYIDFhqRTQNlEPhJlPciUpbLDHuFICZxoA=
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=arm.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: 973bd89aaac9affa
X-TessianGatewayMetadata: bialLZx8+w6GrDL2/oBzkgbTIEPYPaNk9NlwCqAMUthvTlp4ZEZa8JSF5ieAo0XOCs1dPA4bzfYLdEUcxfqreZrfC38RgIGrGlcaTOGOtB4/uYD515qjbkSX4OGk/SfWO1xk8A0LBQeRrjG1SM2ydEf4/LcWZyo69SEe0MhgZr0=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=d64zBAlM/8auKoVoYyaB5AF6E3sR6suXMrbZB4VpJQyPFU30bnhIe5bh1CfmxUID86uaq9tpTbt83fgBAiz3k9294IcCc0Zu2Q0FVdmQv3e4gzbzqSw9DaJSSN2QXSM81+O+Ue0ZnK1NlkcxA1nnXondqwp+f7R0h+1tYf5MPlGi16dGR7DAf2V4ToFEz7gDRh8cRpje6RrofqnMnCEujLS3ObeN/6GgXeTMPg9wztB3NkjhhQCmd5BVGFOyROTA7DwVelh8rrVr9m8yNAgsH446FVblFx3fYCyfLFi29T020VAO7cAwgFsZpm0SeNrY69r1d5wHHA2HPpOqWQR1+A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=t47u8dPzArt7iHDqPqIsBJupOS8h6fCg5yUUihDNO+A=;
 b=CJg0mhZf4Lsq+oarb/GPvrxgXh7LKftqPdK84DRuJ/K76My1PQXuDXfb4/ZI3ecggqpMYBnHTuEVDkDRYfPisJTA6qV3ESuFYo5pN2wGVZ3vchkMBiWgH1N/J6pmwyMMpoXZy9xR4WoC08uvQivF7weOeHXZRw8Vk0TRUDKfWzwPgq91ktaNtOifJWw/xTvsGsehg4x/7R4fEFR2l1tUwt94zwPVxaIC9658eo5AS5l2ABeb3l/+380btXZWYQpWUs3x7cP89Ah0IfFpkf7bQC2Lf2Vc535x1dPg6PZraRvuUw6WvX50qp8QzGBtOuNiumm6vijVXFLIuEIqwm+u8w==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=t47u8dPzArt7iHDqPqIsBJupOS8h6fCg5yUUihDNO+A=;
 b=o1pJsEJ6hvYaI4M0BSp5jEU7lKiKraiC/wyxT9KI4D5bPyQzP+kM8q8BndweKxYtVG/OPiZ/kDPjavr0YougND9cbpBfxRP4/PaSXhV89PUPrfMbTe5SeQraNobIl1DRW9E32E3HGrYIDFhqRTQNlEPhJlPciUpbLDHuFICZxoA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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 v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Topic: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Index: AQHbKTd3r9ds8GMpC0a1KoGz65CsELKcRboA
Date: Mon, 28 Oct 2024 15:14:39 +0000
Message-ID: <DE7DF8D0-2843-4572-A53E-E65D8CB8358B@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
In-Reply-To: <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|AS8PR08MB6568:EE_|DU2PEPF00028D0F:EE_|AS8PR08MB9044:EE_
X-MS-Office365-Filtering-Correlation-Id: 778c63be-26ae-4ac8-07e4-08dcf763476b
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?T25qWXNXVFFxLzhTR2M0YTVNWVpqL3F4YVhBS29IWmdVSlYwOHIzSkpDMm9t?=
 =?utf-8?B?RDJrRzFPTFhRblhLYjREVjlyUE1FZFpCZ01Yd2s5dnBIWWlYckVXRG5yTUNw?=
 =?utf-8?B?SU9md3JtN0xKaGR5QkJhMDJZdDM3QTg5MDljYkttUUlITmVRSDdhRHl5SUgy?=
 =?utf-8?B?d2RvL3JvRCtHd3BTbW83MGhpMElDenZMdk41YW9LK3lDdGdwV1lGMndJazE2?=
 =?utf-8?B?Q3lYMmI2WGVLUzJ2UW9OOHlMdHliZmFEOSsyTmtISHU3VE1sTWRoMHB6ejNU?=
 =?utf-8?B?bGpySzlTL0hEelBSMjhoaUd6dWZEQXAzd1U2NFBxTE9aNjlDOXdCM2pDTGJR?=
 =?utf-8?B?UjRQdGVFZnhVVC85MC9MUXVHTkhzeEJOcGxHYm5DR2VjelgrUHl3ZkRtNmFp?=
 =?utf-8?B?Y2swNi9VN3NtRnhYaTBYUGxjbFcwZ2RFc21TVFN5M3lzRHcxdmVicTJnNDRz?=
 =?utf-8?B?QjJvUG1PNXYzRHhsY0V2ZW54bE1HS2hUelRGV3VHWnN5RjlCZWZhUXN6Qm5m?=
 =?utf-8?B?WkVSUjl6YjVjQUxMemYrTlpmTGRqZis4d09NSndGZGJsMWM1TjBPOFRZWWZE?=
 =?utf-8?B?UFFTOG0xKzFnc1hsK3dneWowcjNVZlZTUlRRSExjc1p4Y01kU2o1Q0N1ZXBH?=
 =?utf-8?B?bXRkcGhkRWVkdzBkVE1obnN4b0F4VkhIU1hOblJORGhvS09ZekNsNThpZmxS?=
 =?utf-8?B?ZFZuMm4vR1NKY25zRnFYa29uOENybGtuK0VPR2loNjE5NWhwUmpDYjg4R1BI?=
 =?utf-8?B?YUtsQ1JqMnh5Z2paZk9laElNdVZXb0NTUm9uUCtHMUlRY0tTZGovSWVHcVIv?=
 =?utf-8?B?Z1ZuNlBUaWpsYlZSZTZ2eHh4SW1RdnFtVFYvdmpCRDZKeFB3Rjlqa0JTc1d0?=
 =?utf-8?B?c0hnVjdtS1RtM0x3VE9GN3h2S05VSVR1TXBZWjh4RzJQbGlRMEE3VGx4OEdO?=
 =?utf-8?B?TDRZN2RUTlV2dEtHbklOS1orVk95Uk81VVFwYVFBT3RDN2hxbFRCV3phR0tj?=
 =?utf-8?B?MDk1dFJ3M2wreHRVclBsUEQ1TFRpcGpyejN0VXFYMzhodVZRUXpzcTdQT1Fx?=
 =?utf-8?B?K0NiVmNrZGZKcU9NVHVWeUJXTWNzcnAwcWxsakgxWFZrRXNHVjJzeXp2bnlr?=
 =?utf-8?B?UHRFZjMwZHJNd24xVXJyY29kYmRRODJhRURCY0JrNmxybTBLcU03TnR6bVN1?=
 =?utf-8?B?UFBZbk9tS0Jlc2plckFibllMQUlmTHd4bFhvRHBoRkJVcUdtZ0FjMkNya2Vr?=
 =?utf-8?B?YlF4YzFiNi9IdkpKNmhxNWVJZ1o0QmhXQTVZd1Y0ZFg3YjR4OVpDdnNCdHRx?=
 =?utf-8?B?SWFkNjZKdHZJeEJ4L1FRSG1ybldtdVVkU3QzWWdtaHRMYWpWOHkrYkFJTWdE?=
 =?utf-8?B?dXZ0VG45bm85Q1FlYkRud2lnQ01BM3JmTDJsS2MyNDNaMFZNd0JRRlVGeGZZ?=
 =?utf-8?B?QUJUZnB6Rnh4R1pqRFBtV1FYTEdRMmd3UDBLNGxYaW15SFNLaStocFlPTXky?=
 =?utf-8?B?RUJ3aHBQaXc4bTByZGwzOG4yVGhiVXY3SXhidytZTVhtc3NoSUVMQXhIcjVY?=
 =?utf-8?B?ekVVeGxDUytQUzAyTVdVVVZudW9XTkdnZFRxY0ZTUFQ0MUxZa1ZWUno1dVFr?=
 =?utf-8?B?OFVzZVY2OTJwaEZEY0czcWdTNU5hSkJOdE1XMHF4di9aMC9leExwT0ZnQUNt?=
 =?utf-8?B?R1hXYVdIVmVaZHZ3ZExPTVcySG5Gd3VXT0pxclJhRk8vYW1jOU9nMml0ZFh6?=
 =?utf-8?B?UENqbldsTkE5R3pEYWpzZWJPUVdkWFYvWGdXeHhNc0J4Vkt2akJDZzNDVXRi?=
 =?utf-8?Q?CxJYjUcwsmRHb+elIMtsI6QkRP2ggXZcbMTlo=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <CD307F0848731E4A9FA2FB47E18A7C50@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6568
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D0F.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	f6d84cba-633e-4364-5e8f-08dcf7633de9
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|1800799024|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?V2ZsQ1l1TVA3UVB2b0tNbndkY1A5c1RDRUQyK2M4MWVOQU96ZnJIemYzV0Jy?=
 =?utf-8?B?Zm85T0VSOGFYYVNWVU5oT2xnMGU5MVNsNHcxQm5Wd3hjaWRjUXN2VTJuNFND?=
 =?utf-8?B?WHg5aGt6RHVhdmtKOUNlaitpbUFRaDBoTENvOU9EZ2ZCOGxkcFNqUmhZSEE0?=
 =?utf-8?B?WDhaVlB0V0gxUXFybDZrRTFna1NZMXI0V3B6Y3FQNXM3VW5IMnBGNXcvcVF5?=
 =?utf-8?B?dU5jWnFpK1Fjak1uWnhYOGZ3MUxUS1RkWkZCQWhjZVZsRUx2WHN0a3VFUVVY?=
 =?utf-8?B?OHhJZ3IwNGlSN2pQUlprZkJ3dS9ibnBDQk9hR0dZaHdQay90YUp0SDMxdjFC?=
 =?utf-8?B?elhucWVIYnRWWngwUGJYaTYxVWIvVWZISkhqbEZ3RHlDQkFOeU9la2tiL1JZ?=
 =?utf-8?B?RGxwSFRzTGxrL29GcHYzbzZIKzk5SnpPcW5Xc1FUME53WUxiK3VpOGdwakZG?=
 =?utf-8?B?SGlYUGN5eEgwY29vaFZRYXo3YVhQcmlvM2Q2RWZ3bjZpdFJUcFd0ai9wNUxH?=
 =?utf-8?B?NTdmeElwelk0WSs2UGFIbVpMeUZUN2hoK3hUTUZJK1dvOHY0Nzh6MTNvaWM4?=
 =?utf-8?B?UGc2UHJqL2xzdzJQN2hYb3pKeG40ZEVENXpTYUtpcnl6MWo3Q2lMUGZmV2dh?=
 =?utf-8?B?MnYvL2RRaFJjanliUVEyZGdQQlNMT2x1TGw5dStjSllITjEvVy9yM0sxbFZP?=
 =?utf-8?B?Y09iV3RBYVhQL1JFbVBnRWRaaCtoN1B3MkpYbFNKNU1lZFpPdWVFS3NKNEYr?=
 =?utf-8?B?VE83VG1KNHE2WkdLTDNUQnE5cjV1am1ySXJ6N1dZdVR5UnZjWDZMVUVrN3U0?=
 =?utf-8?B?YUFJenhZNTZ6am1ocS9ieUhldUhvR3Z3RUxtazhsSEFldGtpRkdaUlVENHp5?=
 =?utf-8?B?U3RVRnRsVnI3dWhwcnFaZW0zV2NnNGprLzd6UDc2UHRncllWTUM4c29NNitw?=
 =?utf-8?B?Y1JlRGNkRjd5ekJaME1NVlZZUWtOSHBQR1c2ajBvVjhQVks0ZlpPZkh1dUdX?=
 =?utf-8?B?VVFDanNsLzZkYWF2QnZrZlZYcHVpQWRaV0FMWlBRVEoxeWI0dDJXcjBZMlE2?=
 =?utf-8?B?eHFIR2c2bEpMTWFlcEtuMzF5YVhWUHorQThvUzhaK1NOemp1cVNPcG1lNHhn?=
 =?utf-8?B?UWJ4V2VvN0RJcU1SR0FxSVJHcnl3czBBTXJoL1gzS3JYU1ZBV0thSjkxbkx0?=
 =?utf-8?B?dUlFQTFjVnVvV2FzeE5xM2VlQkhHUDFaUWROdnZ2U2VEQkRIVG5ONk93cTlC?=
 =?utf-8?B?eFVJWE41K0J5bkpVN2J1WDZzbjRoY2t5cHdQSFMraktSVEhVOHBVNVBRUC84?=
 =?utf-8?B?OEpueWdreU5pZ2srYnByVFBGM0RXN2VaalJLYXFCN1RndW1KZkN6ZFZMS1Vs?=
 =?utf-8?B?SmlndEIxc080L05SNWdrdjhqenppNTlEbG1GOXVYNmRuekJtbVVITVEyNkdz?=
 =?utf-8?B?eWZUSEwrWnNNcHFROFdMU3F5VGJjL1I4aW83MDJHTFB3WDdPaU9QOEI3Nkdj?=
 =?utf-8?B?aXpHYUdSZkdDaWl2dENBNHdXdEJ6S1J3bkd5cDdsK3ZHMGpCTHlhRjc2Vll3?=
 =?utf-8?B?dzRCRWFDRmlqcVcreGFxcGdlTjE0VDFlQmk2b2tZREtqYXNpOVpWdXdGbFZB?=
 =?utf-8?B?cDhDYytXN3cxRHN0TnBseCtwVFB5ZFdxZ01nU2h4djFEeTVtSm1KTE1mdE4y?=
 =?utf-8?B?VndONWhqbUFRQndhUzROUkt0UFBOc3pBd3E4eDJBOFA5R1d3azdEczdMMCtF?=
 =?utf-8?B?Nk5jTWE2VGU3Z0pUUWEyOEVXQ1lTelIya1kvcktocEk3NmQzT2VHV3VjV1hU?=
 =?utf-8?B?dVZvZnZrS2xkZ0FEaTEyOEpzTFZheEh3b2hSQlpZQUVvNktQWlZIaXRsa0p4?=
 =?utf-8?B?aFBCVzI4c0RLblMwSTRIbG9ZOGRHNE5DaGVZYktQMGk2RGc9PQ==?=
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:(13230040)(376014)(35042699022)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 15:14:55.1318
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 778c63be-26ae-4ac8-07e4-08dcf763476b
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:
	DU2PEPF00028D0F.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB9044

SGkgQXlhbiwNCg0KPiBPbiAyOCBPY3QgMjAyNCwgYXQgMTI6NDUsIEF5YW4gS3VtYXIgSGFsZGVy
IDxheWFuLmt1bWFyLmhhbGRlckBhbWQuY29tPiB3cm90ZToNCj4gDQo+IERlZmluZSBlbmFibGVf
Ym9vdF9jcHVfbW0oKSBmb3IgdGhlIEFBcmNoNjQtVjhSIHN5c3RlbS4NCg0KQ291bGQgeW91IHVz
ZSBoZXJlICJBcm12OC1SIEFBcmNoNjTigJ0gaW5zdGVhZCBvZiDigJxBQXJjaDY0LVY4UiINCg0K
PiANCj4gTGlrZSBib290LXRpbWUgcGFnZSB0YWJsZSBpbiBNTVUgc3lzdGVtLCB3ZSBuZWVkIGEg
Ym9vdC10aW1lIE1QVSBwcm90ZWN0aW9uDQo+IHJlZ2lvbiBjb25maWd1cmF0aW9uIGluIE1QVSBz
eXN0ZW0gc28gWGVuIGNhbiBmZXRjaCBjb2RlIGFuZCBkYXRhIGZyb20gbm9ybWFsDQo+IG1lbW9y
eS4NCj4gDQo+IFRvIGRvIHRoaXMsIFhlbiBtYXBzIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgb2Yg
dGhlIGJpbmFyeSBhcyBzZXBhcmF0ZSByZWdpb25zDQo+ICh3aXRoIHBlcm1pc3Npb25zKSA6LQ0K
PiAxLiBUZXh0IChSZWFkIG9ubHkgYXQgRUwyLCBleGVjdXRpb24gaXMgcGVybWl0dGVkKQ0KPiAy
LiBSTyBkYXRhIChSZWFkIG9ubHkgYXQgRUwyKQ0KPiAzLiBSTyBhZnRlciBpbml0IGRhdGEgYW5k
IFJXIGRhdGEgKFJlYWQvV3JpdGUgYXQgRUwyKQ0KPiA0LiBJbml0IFRleHQgKFJlYWQgb25seSBh
dCBFTDIsIGV4ZWN1dGlvbiBpcyBwZXJtaXR0ZWQpDQo+IDUuIEluaXQgZGF0YSBhbmQgQlNTIChS
ZWFkL1dyaXRlIGF0IEVMMikNCj4gDQo+IEJlZm9yZSBjcmVhdGluZyBhIHJlZ2lvbiwgd2UgY2hl
Y2sgaWYgdGhlIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBkZWZpbmVkIGluDQo+IE1QVUlSX0VM
Mi4gSWYgc28sIHRoZW4gdGhlIGJvb3QgZmFpbHMuDQo+IA0KPiBBbHNvIHdlIGNoZWNrIGlmIHRo
ZSByZWdpb24gaXMgZW1wdHkgb3Igbm90LiBJT1csIGlmIHRoZSBzdGFydCBhbmQgZW5kIGFkZHJl
c3MNCj4gYXJlIHNhbWUsIHdlIHNraXAgbWFwcGluZyB0aGUgcmVnaW9uLg0KPiANCj4gVG8gbWFw
IGEgcmVnaW9uLCBYZW4gdXNlcyB0aGUgUFJCQVJfRUwyLCBQUkxBUl9FTDIgYW5kIFBSU0VMUl9F
TDIgcmVnaXN0ZXJzLg0KPiBPbmUgY2FuIHJlZmVyIHRvIEFSTSBEREkgMDYwMEIuYSBJRDA2Mjky
MiBHMS4zICAiR2VuZXJhbCBTeXN0ZW0gQ29udHJvbA0KPiBSZWdpc3RlcnMiLCB0byBnZXQgdGhl
IGRlZmluaXRpb25zIG9mIHRoZXNlIHJlZ2lzdGVycy4gQWxzbywgcmVmZXIgdG8gRzEuMg0KPiAi
QWNjZXNzaW5nIE1QVSBtZW1vcnkgcmVnaW9uIHJlZ2lzdGVycyIsIHRoZSBmb2xsb3dpbmcNCj4g
DQo+IGBgYA0KPiBUaGUgTVBVIHByb3ZpZGVzIHR3byByZWdpc3RlciBpbnRlcmZhY2VzIHRvIHBy
b2dyYW0gdGhlIE1QVSByZWdpb25zOg0KPiAtIEFjY2VzcyB0byBhbnkgb2YgdGhlIE1QVSByZWdp
b25zIHZpYSBQUlNFTFJfRUx4LCBQUkJBUjxuPl9FTHgsIGFuZA0KPiBQUkxBUjxuPl9FTHguDQo+
IGBgYA0KPiANCj4gV2UgdXNlIHRoZSBhYm92ZSBtZWNoYW5pc20gdG8gY3JlYXRlIHRoZSBNUFUg
bWVtb3J5IHJlZ2lvbnMuDQo+IA0KPiBNUFUgc3BlY2lmaWMgcmVnaXN0ZXJzIGFyZSBkZWZpbmVk
IGluDQo+IHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcm02NC9tcHUvc3lzcmVncy5oLg0KPiAN
Cj4gU2lnbmVkLW9mZi1ieTogQXlhbiBLdW1hciBIYWxkZXIgPGF5YW4ua3VtYXIuaGFsZGVyQGFt
ZC5jb20+DQo+IC0tLQ0KPiBDaGFuZ2VzIGZyb20gOi0NCj4gDQo+IHYxIC0gMS4gSW5zdGVhZCBv
ZiBtYXBwaW5nIGEgKFhFTl9TVEFSVF9BRERSRVNTICsgMk1CKSBhcyBhIHNpbmdsZSBNUFUgcmVn
aW9uLA0KPiB3ZSBoYXZlIHNlcGFyYXRlIE1QVSByZWdpb25zIGZvciBkaWZmZXJlbnQgcGFydHMg
b2YgdGhlIFhlbiBiaW5hcnkuIFRoZSByZWFzb24NCj4gYmVpbmcgZGlmZmVyZW50IHJlZ2lvbnMg
d2lsbCBubmVkIGRpZmZlcmVudCBwZXJtaXNzaW9ucyAoYXMgbWVudGlvbmVkIGluIHRoZQ0KPiBs
aW5rZXIgc2NyaXB0KS4NCj4gDQo+IDIuIEludHJvZHVjZWQgYSBsYWJlbCAoX19pbml0X2RhdGFf
YmVnaW4pIHRvIG1hcmsgdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5pdCBkYXRhDQo+IHNlY3Rpb24u
DQo+IA0KPiAzLiBNb3ZlZCBNUFUgc3BlY2lmaWMgcmVnaXN0ZXIgZGVmaW5pdGlvbnMgdG8gbXB1
L3N5c3JlZ3MuaC4NCj4gDQo+IDQuIEZpeGVkIGNvZGluZyBzdHlsZSBpc3N1ZXMuDQo+IA0KPiA1
LiBJbmNsdWRlZCBwYWdlLmggaW4gbXB1L2hlYWQuUyBhcyBwYWdlLmggaW5jbHVkZXMgc3lzcmVn
cy5oLg0KPiBJIGhhdmVuJ3Qgc2VlbiBzeXNyZWdzLmggaW5jbHVkZWQgZGlyZWN0bHkgZnJvbSBo
ZWFkLlMgb3IgbW11L2hlYWQuUy4NCj4gKE91dHN0YW5kaW5nIGNvbW1lbnQgbm90IGFkZHJlc3Nl
ZCkuDQo+IA0KPiB2MiAtIDEuIEV4dHJhY3RlZCAiZW5hYmxlX21wdSgpIiBpbiBhIHNlcGFyYXRl
IHBhdGNoLg0KPiANCj4gMi4gUmVtb3ZlZCBhbGlnbm1lbnQgZm9yIGxpbWl0IGFkZHJlc3MuDQo+
IA0KPiAzLiBNZXJnZWQgc29tZSBvZiB0aGUgc2VjdGlvbnMgZm9yIHByZXBhcmluZyB0aGUgZWFy
bHkgYm9vdCByZWdpb25zLg0KPiANCj4gNC4gQ2hlY2tlZCBmb3IgdGhlIG1heCBsaW1pdCBvZiBN
UFUgcmVnaW9ucyBiZWZvcmUgY3JlYXRpbmcgYSBuZXcgcmVnaW9uLg0KPiANCj4gNS4gQ2hlY2tl
ZCBmb3IgZW1wdHkgcmVnaW9ucy4NCj4gDQo+IHYzIDotIDEuIE1vZGlmaWVkIHByZXBhcmVfeGVu
X3JlZ2lvbigpIHNvIHRoYXQgd2UgY2hlY2sgZm9yIGVtcHR5IHJlZ2lvbiB3aXRoaW4NCj4gdGhp
cy4gQWxzbywgaW5kZXggb2YgcmVnaW9ucyAodG8gYmUgcHJvZ3JhbW1lZCBpbiBQUlNFTFJfRUwy
KSBzaG91bGQgc3RhcnQgZnJvbQ0KPiAwLg0KPiANCj4gMi4gUmVtb3ZlZCBsb2FkX3BhZGRyKCkg
YXMgdGhlIG9mZnNldCBpcyAwLg0KPiANCj4gMy4gSW50cm9kdWNlZCBmYWlsX2luc3VmZmljaWVu
dF9yZWdpb25zKCkgdG8gaGFuZGxlIGZhaWx1cmUgY2F1c2VkIHdoZW4gdGhlDQo+IG51bWJlciBv
ZiByZWdpb25zIHRvIGJlIGFsbG9jYXRlZCBpcyBub3Qgc3VmZmljaWVudC4NCj4gDQo+IHhlbi9h
cmNoL2FybS9hcm02NC9tcHUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsNCj4geGVuL2Fy
Y2gvYXJtL2FybTY0L21wdS9oZWFkLlMgICAgICAgICAgICAgICAgfCAxMjIgKysrKysrKysrKysr
KysrKysrKw0KPiB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJtNjQvbXB1L3N5c3JlZ3MuaCB8
ICAyNyArKysrDQo+IHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9tbS5oICAgICAgICAgICAgICAg
IHwgICAyICsNCj4geGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21wdS9hcm02NC9tbS5oICAgICAg
fCAgMjIgKysrKw0KPiB4ZW4vYXJjaC9hcm0vaW5jbHVkZS9hc20vbXB1L21tLmggICAgICAgICAg
ICB8ICAyMCArKysNCj4geGVuL2FyY2gvYXJtL3hlbi5sZHMuUyAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDEgKw0KPiA3IGZpbGVzIGNoYW5nZWQsIDE5NSBpbnNlcnRpb25zKCspDQo+IGNyZWF0
ZSBtb2RlIDEwMDY0NCB4ZW4vYXJjaC9hcm0vYXJtNjQvbXB1L2hlYWQuUw0KPiBjcmVhdGUgbW9k
ZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FybTY0L21wdS9zeXNyZWdzLmgNCj4g
Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9pbmNsdWRlL2FzbS9tcHUvYXJtNjQvbW0u
aA0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2luY2x1ZGUvYXNtL21wdS9tbS5o
DQo+IA0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2FybTY0L21wdS9NYWtlZmlsZSBiL3hl
bi9hcmNoL2FybS9hcm02NC9tcHUvTWFrZWZpbGUNCj4gaW5kZXggYjE4Y2VjNDgzNi4uYThhNzUw
YTNkMCAxMDA2NDQNCj4gLS0tIGEveGVuL2FyY2gvYXJtL2FybTY0L21wdS9NYWtlZmlsZQ0KPiAr
KysgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbXB1L01ha2VmaWxlDQo+IEBAIC0xICsxLDIgQEANCj4g
K29iai15ICs9IGhlYWQubw0KPiBvYmoteSArPSBtbS5vDQo+IGRpZmYgLS1naXQgYS94ZW4vYXJj
aC9hcm0vYXJtNjQvbXB1L2hlYWQuUyBiL3hlbi9hcmNoL2FybS9hcm02NC9tcHUvaGVhZC5TDQo+
IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjkzNzdhZTc3OGMNCj4g
LS0tIC9kZXYvbnVsbA0KPiArKysgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbXB1L2hlYWQuUw0KPiBA
QCAtMCwwICsxLDEyMiBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt
b25seSAqLw0KPiArLyoNCj4gKyAqIFN0YXJ0LW9mLWRheSBjb2RlIGZvciBhbiBBcm12OC1SIE1Q
VSBzeXN0ZW0uDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGFzbS9tbS5oPg0KPiArI2luY2x1
ZGUgPGFzbS9hcm02NC9tcHUvc3lzcmVncy5oPg0KPiArDQo+ICsjZGVmaW5lIFJFR0lPTl9URVhU
X1BSQkFSICAgICAgIDB4MzggICAgLyogU0g9MTEgQVA9MTAgWE49MDAgKi8NCj4gKyNkZWZpbmUg
UkVHSU9OX1JPX1BSQkFSICAgICAgICAgMHgzQSAgICAvKiBTSD0xMSBBUD0xMCBYTj0xMCAqLw0K
PiArI2RlZmluZSBSRUdJT05fREFUQV9QUkJBUiAgICAgICAweDMyICAgIC8qIFNIPTExIEFQPTAw
IFhOPTEwICovDQoNCk5JVDogYWxpZ25tZW50DQoNCj4gKw0KPiArI2RlZmluZSBSRUdJT05fTk9S
TUFMX1BSTEFSICAgICAweDBmICAgIC8qIE5TPTAgQVRUUj0xMTEgRU49MSAqLw0KPiArDQo+ICsv
Kg0KPiArICogTWFjcm8gdG8gcHJlcGFyZSBhbmQgc2V0IGEgRUwyIE1QVSBtZW1vcnkgcmVnaW9u
Lg0KPiArICogV2Ugd2lsbCBhbHNvIGNyZWF0ZSBhbiBhY2NvcmRpbmcgTVBVIG1lbW9yeSByZWdp
b24gZW50cnksIHdoaWNoDQo+ICsgKiBpcyBhIHN0cnVjdHVyZSBvZiBwcl90LCAgaW4gdGFibGUg
XHBybWFwLg0KPiArICoNCj4gKyAqIElucHV0czoNCj4gKyAqIHNlbDogICAgICAgICByZWdpb24g
c2VsZWN0b3INCj4gKyAqIGJhc2U6ICAgICAgICByZWcgc3RvcmluZyBiYXNlIGFkZHJlc3MgKHNo
b3VsZCBiZSBwYWdlLWFsaWduZWQpDQo+ICsgKiBsaW1pdDogICAgICAgcmVnIHN0b3JpbmcgbGlt
aXQgYWRkcmVzcw0KPiArICogcHJiYXI6ICAgICAgIHN0b3JlIGNvbXB1dGVkIFBSQkFSX0VMMiB2
YWx1ZQ0KPiArICogcHJsYXI6ICAgICAgIHN0b3JlIGNvbXB1dGVkIFBSTEFSX0VMMiB2YWx1ZQ0K
PiArICogbWF4Y291bnQ6ICAgIG1heGltdW0gbnVtYmVyIG9mIEVMMiByZWdpb25zIHN1cHBvcnRl
ZA0KPiArICogYXR0cl9wcmJhcjogIFBSQkFSX0VMMi1yZWxhdGVkIG1lbW9yeSBhdHRyaWJ1dGVz
LiBJZiBub3Qgc3BlY2lmaWVkIGl0IHdpbGwgYmUNCj4gKyAqICAgICAgICAgICAgICBSRUdJT05f
REFUQV9QUkJBUg0KPiArICogYXR0cl9wcmxhcjogIFBSTEFSX0VMMi1yZWxhdGVkIG1lbW9yeSBh
dHRyaWJ1dGVzLiBJZiBub3Qgc3BlY2lmaWVkIGl0IHdpbGwgYmUNCj4gKyAqICAgICAgICAgICAg
ICBSRUdJT05fTk9STUFMX1BSTEFSDQoNCk5JVDogc2hhbGwgd2UgYWxzbyBhbGlnbiB0aGUgdGV4
dCBhZnRlciB0aGUgY29sb24/DQoNCj4gKyAqLw0KPiArLm1hY3JvIHByZXBhcmVfeGVuX3JlZ2lv
biwgc2VsLCBiYXNlLCBsaW1pdCwgcHJiYXIsIHBybGFyLCBtYXhjb3VudCwgYXR0cl9wcmJhcj1S
RUdJT05fREFUQV9QUkJBUiwgYXR0cl9wcmxhcj1SRUdJT05fTk9STUFMX1BSTEFSDQo+ICsgICAg
LyogQ2hlY2sgaWYgdGhlIHJlZ2lvbiBpcyBlbXB0eSAqLw0KPiArICAgIGNtcCAgIFxiYXNlLCBc
bGltaXQNCj4gKyAgICBiZXEgICAxZg0KPiArDQo+ICsgICAgLyogQ2hlY2sgaWYgdGhlIG51bWJl
ciBvZiByZWdpb25zIGV4Y2VlZGVkIHRoZSBjb3VudCBzcGVjaWZpZWQgaW4gTVBVSVJfRUwyICov
DQo+ICsgICAgY21wICAgXHNlbCwgXG1heGNvdW50DQo+ICsgICAgYmdlICAgZmFpbF9pbnN1ZmZp
Y2llbnRfcmVnaW9ucw0KPiArDQo+ICsgICAgLyogUHJlcGFyZSB2YWx1ZSBmb3IgUFJCQVJfRUwy
IHJlZyBhbmQgcHJlc2VydmUgaXQgaW4gXHByYmFyLiovDQo+ICsgICAgYW5kICAgXGJhc2UsIFxi
YXNlLCAjTVBVX1JFR0lPTl9NQVNLDQo+ICsgICAgbW92ICAgXHByYmFyLCAjXGF0dHJfcHJiYXIN
Cj4gKyAgICBvcnIgICBccHJiYXIsIFxwcmJhciwgXGJhc2UNCj4gKw0KPiArICAgIC8qIExpbWl0
IGFkZHJlc3Mgc2hvdWxkIGJlIGluY2x1c2l2ZSAqLw0KPiArICAgIHN1YiAgIFxsaW1pdCwgXGxp
bWl0LCAjMQ0KPiArICAgIGFuZCAgIFxsaW1pdCwgXGxpbWl0LCAjTVBVX1JFR0lPTl9NQVNLDQo+
ICsgICAgbW92ICAgXHBybGFyLCAjXGF0dHJfcHJsYXINCj4gKyAgICBvcnIgICBccHJsYXIsIFxw
cmxhciwgXGxpbWl0DQo+ICsNCj4gKyAgICBtc3IgICBQUlNFTFJfRUwyLCBcc2VsDQo+ICsgICAg
aXNiDQo+ICsgICAgbXNyICAgUFJCQVJfRUwyLCBccHJiYXINCj4gKyAgICBtc3IgICBQUkxBUl9F
TDIsIFxwcmxhcg0KPiArICAgIGRzYiAgIHN5DQo+ICsgICAgaXNiDQo+ICsNCj4gKzE6DQo+ICsu
ZW5kbQ0KPiArDQo+ICsvKg0KPiArICogRmFpbHVyZSBjYXVzZWQgZHVlIHRvIGluc3VmZmljaWVu
dCBNUFUgcmVnaW9ucy4NCj4gKyAqLw0KPiArRlVOQ19MT0NBTChmYWlsX2luc3VmZmljaWVudF9y
ZWdpb25zKQ0KPiArICAgIFBSSU5UKCItIE51bWJlciBvZiBNUFUgcmVnaW9ucyBzZXQgaW4gTVBV
SVJfRUwyIGlzIHRvbyBsZXNzIC1cclxuIikNCg0KTVBVSVJfRUx4IGlzIGEgcmVhZCBvbmx5IHJl
Z2lzdGVyLCBzbyBJIHdvdWxkIHJlcGhyYXNlIHRoaXMgbWVzc2FnZSBpbiBzb21ldGhpbmcgbGlr
ZToNCg0K4oCcU2VsZWN0ZWQgTVBVIHJlZ2lvbiBpcyBhYm92ZSB0aGUgaW1wbGVtZW50ZWQgbnVt
YmVyIGluIE1QVUlSX0VMMiINCg0KPiArMTogIHdmZQ0KPiArICAgIGIgICAxYg0KPiArRU5EKGZh
aWxfaW5zdWZmaWNpZW50X3JlZ2lvbnMpDQo+ICsNCj4gKy8qDQo+ICsgKiBNYXBzIHRoZSB2YXJp
b3VzIHNlY3Rpb25zIG9mIFhlbiAoZGVzY3JpYmVkIGluIHhlbi5sZHMuUykgYXMgZGlmZmVyZW50
IE1QVQ0KPiArICogcmVnaW9ucy4NCj4gKyAqDQo+ICsgKiBJbnB1dHM6DQo+ICsgKiAgIGxyIDog
QWRkcmVzcyB0byByZXR1cm4gdG8uDQo+ICsgKg0KPiArICogQ2xvYmJlcnMgeDAgLSB4NQ0KPiAr
ICoNCj4gKyAqLw0KPiArRlVOQyhlbmFibGVfYm9vdF9jcHVfbW0pDQo+ICsNCj4gKyAgICAvKiBH
ZXQgdGhlIG51bWJlciBvZiByZWdpb25zIHNwZWNpZmllZCBpbiBNUFVJUl9FTDIgKi8NCj4gKyAg
ICBtcnMgICB4NSwgTVBVSVJfRUwyDQo+ICsNCj4gKyAgICAvKiB4MDogcmVnaW9uIHNlbCAqLw0K
PiArICAgIG1vdiAgIHgwLCB4enINCj4gKyAgICAvKiBYZW4gdGV4dCBzZWN0aW9uLiAqLw0KPiAr
ICAgIGxkciAgIHgxLCA9X3N0ZXh0DQo+ICsgICAgbGRyICAgeDIsID1fZXRleHQNCj4gKyAgICBw
cmVwYXJlX3hlbl9yZWdpb24geDAsIHgxLCB4MiwgeDMsIHg0LCB4NSwgYXR0cl9wcmJhcj1SRUdJ
T05fVEVYVF9QUkJBUg0KDQpBZnRlciB0aGlzIHJlZ2lvbiBpcyB3cml0dGVuLCB0aGVyZSBpcyBu
byBjb2RlIHRvIGluY3JlbWVudCB4MCwgc28gYWxsIHRoZSBzdWJzZXF1ZW50IHdpbGwgb3ZlcnJp
ZGUgdGhlDQpyZWdpb24gMC4NCg0KPiArDQo+ICsgICAgLyogWGVuIHJlYWQtb25seSBkYXRhIHNl
Y3Rpb24uICovDQo+ICsgICAgbGRyICAgeDEsID1fc3JvZGF0YQ0KPiArICAgIGxkciAgIHgyLCA9
X2Vyb2RhdGENCj4gKyAgICBwcmVwYXJlX3hlbl9yZWdpb24geDAsIHgxLCB4MiwgeDMsIHg0LCB4
NSwgYXR0cl9wcmJhcj1SRUdJT05fUk9fUFJCQVINCj4gKw0KPiArICAgIC8qIFhlbiByZWFkLW9u
bHkgYWZ0ZXIgaW5pdCBhbmQgZGF0YSBzZWN0aW9uLiAoUlcgZGF0YSkgKi8NCj4gKyAgICBsZHIg
ICB4MSwgPV9fcm9fYWZ0ZXJfaW5pdF9zdGFydA0KPiArICAgIGxkciAgIHgyLCA9X19pbml0X2Jl
Z2luDQo+ICsgICAgcHJlcGFyZV94ZW5fcmVnaW9uIHgwLCB4MSwgeDIsIHgzLCB4NCwgeDUNCj4g
Kw0KPiArICAgIC8qIFhlbiBjb2RlIHNlY3Rpb24uICovDQo+ICsgICAgbGRyICAgeDEsID1fX2lu
aXRfYmVnaW4NCj4gKyAgICBsZHIgICB4MiwgPV9faW5pdF9kYXRhX2JlZ2luDQo+ICsgICAgcHJl
cGFyZV94ZW5fcmVnaW9uIHgwLCB4MSwgeDIsIHgzLCB4NCwgeDUsIGF0dHJfcHJiYXI9UkVHSU9O
X1RFWFRfUFJCQVINCj4gKw0KPiArICAgIC8qIFhlbiBkYXRhIGFuZCBCU1Mgc2VjdGlvbi4gKi8N
Cj4gKyAgICBsZHIgICB4MSwgPV9faW5pdF9kYXRhX2JlZ2luDQo+ICsgICAgbGRyICAgeDIsID1f
X2Jzc19lbmQNCj4gKyAgICBwcmVwYXJlX3hlbl9yZWdpb24geDAsIHgxLCB4MiwgeDMsIHg0LCB4
NQ0KPiArDQo+ICsgICAgcmV0DQo+ICsNCj4gK0VORChlbmFibGVfYm9vdF9jcHVfbW0pDQoNClRo
ZSByZXN0IGxvb2tzIG9uIHRvIG1lDQoNCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:38:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:38:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826663.1241000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Rof-0004o0-MJ; Mon, 28 Oct 2024 15:38:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826663.1241000; Mon, 28 Oct 2024 15: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 1t5Rof-0004nt-HV; Mon, 28 Oct 2024 15:38:01 +0000
Received: by outflank-mailman (input) for mailman id 826663;
 Mon, 28 Oct 2024 15:38: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=MlZD=RY=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5Roe-0004nn-3x
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:38:00 +0000
Received: from EUR02-DB5-obe.outbound.protection.outlook.com
 (mail-db5eur02on20625.outbound.protection.outlook.com
 [2a01:111:f403:2608::625])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9b06d85f-9542-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:37:57 +0100 (CET)
Received: from AS9PR04CA0098.eurprd04.prod.outlook.com (2603:10a6:20b:50e::29)
 by AS2PR08MB8999.eurprd08.prod.outlook.com (2603:10a6:20b:5fb::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Mon, 28 Oct
 2024 15:37:55 +0000
Received: from AMS0EPF000001A9.eurprd05.prod.outlook.com
 (2603:10a6:20b:50e:cafe::2f) by AS9PR04CA0098.outlook.office365.com
 (2603:10a6:20b:50e::29) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.26 via Frontend
 Transport; Mon, 28 Oct 2024 15:37:55 +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_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Mon, 28 Oct 2024 15:37:52 +0000
Received: ("Tessian outbound 72f4d55e3d4f:v490");
 Mon, 28 Oct 2024 15:37:52 +0000
Received: from Lbd71698a7ddd.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 01F1C30A-C40D-47AA-807C-B78EB2D99BC9.1; 
 Mon, 28 Oct 2024 15:37:41 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lbd71698a7ddd.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 28 Oct 2024 15:37:41 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by PAWPR08MB9100.eurprd08.prod.outlook.com (2603:10a6:102:341::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25; Mon, 28 Oct
 2024 15:37:39 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.023; Mon, 28 Oct 2024
 15:37: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: 9b06d85f-9542-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=FJR9cXPQkEpBJ5SGvW3jy4KBqq/6POlhKuDLp+4YXegc+RykaDkMQgMiK3SLUB+zJFCnVYzZxPlm4MXAjNz5O4Ef0jpYPBlqv3XSYbhabw7wdGw/jO0TKWx9pvcpdziZ3GUOvWvHHD4PNBMsYfoOa5IH8bPlzZy2/lj4KMDgrKvV1YbZaC2Rnv5+h0r7u7FSQ3wQ3EnSoQ1S+XDUa3R12HEGe0OD7qLhNo1fvMH3D12xC/AM0/+eDEjuIHbQiBtbd3rx8BxmQrucFET80MwItOc7g4umz3chTXjh9XSndcHfxkoZFei6Xm9nOq/55K2sdvubn2/P7w3waQeTklaeUQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=NqfAwqdnG8KYpUzcLVgdgjshztk5TvK+L1SxgKq1Nr0=;
 b=QlihNiiGMJ79/5be3U6xbdym+TImUUykPx0Zsy3Ap89veTh+EWsG2dyujFg5nmZJo/nu59oFXkhWb7Rc9MdBpiv6/DyDwlLYmGYoOdrNbPfGlGaY3tLQ+P5lr8h6RPUQRkFA38dSuXJJyjamLbqsNBHNvx/1y98Hn3FDFH+oMf/PUdTlWV+Sh3XDPywxD04g5u+mVg8fgM9U/9ceJlAoh8R8twEL+M9fuZotFUwxXaqhP3nsku6csQ9XQQqhwezMQl2pIUmBMWXV/vgWDiQLsRPB8/kuPC4O7s1TEAk6RIjP3zC0bl1nJfSJhdIsf3bVFvrEUx1VR9seDxXN/nWAmQ==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=NqfAwqdnG8KYpUzcLVgdgjshztk5TvK+L1SxgKq1Nr0=;
 b=BCupYI4XimexzEPdWSybMef3gMD+/9jaNaLqm8ih/N4L41VCWiojdGneh/fVn/8u9ToAMdAEX1FLqRwIHZRokyBUA7Q3l6uxReXZlYCaPDZ3U+o4Y1omLZlfLk3l5RzmbSmuUNTquQDWVLcT5XjK9CJ8G8X1tiOKPrIeK1XO5WE=
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=arm.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: 28c5fc9c9b1d86c1
X-TessianGatewayMetadata: 2L2oLYwxs7rBsrf91My4pOzR4F4/LT4JOn9kDeDSAbaywv0wctBqzWSOl/GkUlI0oOkYWrOhPMJthjAKa0JOg105Eg2YEdH+Ej0g//1G0e+oadhVjqboio6022+f0g8FRfcJAeb88Ux8fgVuW0kk8gRcvsE3d/WBjZs1mY5zwPE=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=EAzV96h3EdEjv8xyRaGv1mMXZc0H14NtFXyA5QXF+tFpYfQbBXBQhAoixIDPiz+BRm6ys3CVtkHCjwrXdIYrNorqg23AVIl0Nz5qO9B+9OX5N5wudsOFXAktMpC8gijZf08QDB/O6sdWauL+9PgK7cs7hGytdUoRF9xHwqRqnYBHB7aq+Zr6flItQoNTkKJYAvXE9oS0PxyvxM6vA/5L5LxmbYlA6BQ2sidRkhV/BT9mFy/xUkaixma4mvDJoZYgec4PzbGlvdK6n8E4ql6YkKVSmWd/w4lhRuDJUO67yEcLd07c5Y7XF6xmeB6ppvsDNpXUjz6HDzv9+173SMEZfQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=NqfAwqdnG8KYpUzcLVgdgjshztk5TvK+L1SxgKq1Nr0=;
 b=yHuPuTel1XHXjhTnG3cP0fJyPx1sHlYziIFXQht8DjYQUtxEsSAw99tcHjrAtQ+QMVR6l0wHqj8JmozuBCbNXQotPH0GzeDq6LBP2m2KzC0Z6s/ar1P0rm/BL2vnElBp2KVeHwdFRQbr6DdsyyJg7RNaPsw2k38BTy8k8Op0TaJiEbW1y2Ay8K8mTWTiij/kNQyMm9QB7kkVPDwAniJgp0U3W0vu8Iv9y6nefMXuM9+UqcB133dLCZVmo0K9aZvMneZ44hhSASnNvF2kNJhz+uC8kQXG0AtpCmOOWV4d5zR1j1KqL/n3UJ8KRvXARVXAaB+x3Mw3JX1ajyWkNh5o+w==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=NqfAwqdnG8KYpUzcLVgdgjshztk5TvK+L1SxgKq1Nr0=;
 b=BCupYI4XimexzEPdWSybMef3gMD+/9jaNaLqm8ih/N4L41VCWiojdGneh/fVn/8u9ToAMdAEX1FLqRwIHZRokyBUA7Q3l6uxReXZlYCaPDZ3U+o4Y1omLZlfLk3l5RzmbSmuUNTquQDWVLcT5XjK9CJ8G8X1tiOKPrIeK1XO5WE=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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 v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Topic: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Index: AQHbKTd3r9ds8GMpC0a1KoGz65CsELKcRboAgAAGbQA=
Date: Mon, 28 Oct 2024 15:37:39 +0000
Message-ID: <9DC23DFF-91FB-4769-8EAF-38150EE192F7@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
 <DE7DF8D0-2843-4572-A53E-E65D8CB8358B@arm.com>
In-Reply-To: <DE7DF8D0-2843-4572-A53E-E65D8CB8358B@arm.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|PAWPR08MB9100:EE_|AMS0EPF000001A9:EE_|AS2PR08MB8999:EE_
X-MS-Office365-Filtering-Correlation-Id: a8b6b865-5bdb-434e-e7c2-08dcf7667caf
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|1800799024|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?b1dCMytpd2NKR1NZWFEzTmpBcURQSUhubm5pT3JYNmtGaVU0Q0hpRzhOWEJK?=
 =?utf-8?B?YldRWlVsVHlVeGlvdkZqV1JHZEJ3ako4RXlHbEtrT0NERHA4dnQ1U2EvUGt6?=
 =?utf-8?B?S0JWQTg5dGdNRVA0OVE1REdDZmMyZzFDalF6K2U5NUU3cmVFdUd0SVQwSEg5?=
 =?utf-8?B?U2J3bXRzQitHVzZNd1ZOVUUxU2ZrOTNqVm5TV3I1bm9mQUdoYnJvYzIvUUZn?=
 =?utf-8?B?VUdrVURmckI0aW9iL2M0cWtyNUJoQmZoN25mOHMxa0VGMGhiSTVXeXdESWZs?=
 =?utf-8?B?N0VQNkFFYWE0VjVKa3BGRE9WK1lrVFJ5Y2xsdGpFc2NjVExHZ2p4ZDE2ZEt5?=
 =?utf-8?B?aU5rY2tCT1ZZeDJ3MzZIUEtmR1pJc1FzWlJ1aTVVM2lGeE16YWdoQnF4M1ZQ?=
 =?utf-8?B?TXJxY09TaUVGdnU2bDZRdzZyTnkxTUxYS1hWOWtjT3dKUjlxR04waXVUVVhi?=
 =?utf-8?B?Tkc1UWNzWnlYUGs0Ulo5cm5UaGJIekJUSEZqa3EreURGK0NtdklNNmk2ditx?=
 =?utf-8?B?aU4yWHAvODRNaFpJZUoyWldNVG9SRUtKUVU2KzJCVS9YY3U2SVAvdlpHNzMy?=
 =?utf-8?B?V2xJYW9YVisxbVVROHA1Z0pNSWp2elh2d1llZUR1MC9zbk1IekZ3RE14VUxE?=
 =?utf-8?B?ck5jdUI0Q1ZDd1g4WFI4OW8zSTFyZWVFNm1LSHVIZzFWR1RnU2hIL3NXU2Nv?=
 =?utf-8?B?UVh6a2dqQ2hkZno5OTA3dHo1Wk1lbEpwZlNSMFJjcWFjY3BmeitJUU5yVmc0?=
 =?utf-8?B?dmxsZjZaalE5aU14TEJ4RTBwd0dJTkJaNzNvcXYyQXRjMWVJemgvc2JuZVR2?=
 =?utf-8?B?WDloQTREU1N2NVBiaTBEYjRoL1BuemRiRlF4c2hleFVXRnJhM2pZNVYxL2FQ?=
 =?utf-8?B?dy9rTVNPSjY5UDdhaUVPbm1id3FHZDhjVWg3azliODFiNFdXWnJ1UFVoYXZz?=
 =?utf-8?B?a1RiRlRIY1VVMTZnWDVwRVphbHdUcUVjd2krT1MwZHVHSmJTeEVBcXpTK0lH?=
 =?utf-8?B?Nko0Y2srUjRDaTMzY2JZNERnMTJSbG1sUmhPRmpucEJ5RS80b3B1TVY1cFR4?=
 =?utf-8?B?bVpVaVVDRmh4Rk16SW1zWGdPWVhaQkx6eEdoRE9Zc3NtMk45a0diNGdCL2pt?=
 =?utf-8?B?bHBGYkZVSmMvZkJKQStEbGljaXNFS1BBTlIwd29sUVZWeDJhVHRRRFZKaHVv?=
 =?utf-8?B?Tm1BbXQvYjNaYmxNdjZtMFJZMkV4dmpoR3JJZmYvdXZzZkRRN1MyUG9pUmhk?=
 =?utf-8?B?aCtBOHM1RU15cy9JMzIyU1BnV3picm5TOFhPb040ajFaTlNFWHB0R0pmMU41?=
 =?utf-8?B?QnB4WFNYSnFXRWEyMFpPSklCNE5YdVM3eHplaFRKdTA5WWtlTlR5TXRyRHJZ?=
 =?utf-8?B?N1B3aCtkKzM2S2I0NnJBTmNNb1dnUVhNUlE4Q0RBZDVZdkNSclAyMXd6RGh6?=
 =?utf-8?B?S3BwQ1Z4cVQvMit6dWI0S3doa1A2M0ZwY3ZXZGFMWVZnQnU3ellrSElaY0JP?=
 =?utf-8?B?L2h6d1lhK2Y1K1NxMlFBM3ZBcS9pQkZDN0p6ekZkOGRaSTRTWjNpZDlSQ0JM?=
 =?utf-8?B?NXVTazlBWXI0eGloUG85ZFNqMmpLQ0laV1ltb3dlc1FlanRTVW4wancwREg0?=
 =?utf-8?B?L2pPWUNhK1QwQXNYQmV3aStzajlMcFM4M3Rub3Z2bFAyU1hMWHpVUnN6Ym56?=
 =?utf-8?B?amNDK3drWW0vVFEzUFI2S3Y5TzBBWXRlRDZxUmdCS2E0NEZYRUxUQWFNNjdO?=
 =?utf-8?B?ZnBLelFRYm5yQ2JHbVY1c3F0ZHpnb3VHUFR1SFM4T0lMSkU3NkRMZ2VJRlpE?=
 =?utf-8?Q?t9IKye0UXovpMLJZRNEZq8g5bNpcqKWq5rj10=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <B22986C2080E154AB8AC5C388C1A1B6F@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9100
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A9.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	8f880f2c-8956-4b57-f3d0-08dcf7667468
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|1800799024|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?OWVZWncvU0JwVnVuS2pHT0ZYTkVzK09hVURxUS9IVEdUZHJPSi92QWh5ZUpL?=
 =?utf-8?B?cDc4Um9rOHMvc1NSTnlaOTVlQ0dhYkVaaUJQU0NrSk5LdlZFUU5QZ1YweXNM?=
 =?utf-8?B?cDQ0ZUtmQWxIbk5LWkN3eXZRVTBXRzV2QWtCcGtlVXlwbUoyTythemVkU3lY?=
 =?utf-8?B?aGZ2V0JaV05vWERyUERVeW4vN2d1TlNjSm13Qkh0aWJvN0hEc2pScVFHMmI4?=
 =?utf-8?B?Y0dPdVdscjhGNVVPemNDaC9ybDJscitvUTFGRzByUXpuVlJKNW51SDhrMm5S?=
 =?utf-8?B?SEo0OURYMlp2aThEVVZIdmpWa0F2L0VHRkd5OE9MOTdDV3RlMkhPWXBzeFQx?=
 =?utf-8?B?TUxTTHJVQms2Rzl3UkZZWVNnRWM4WDVULzQweVo0YlNJWDBZbkw1bkdFUkFL?=
 =?utf-8?B?eFB3SnZaUjhRWWhRbTBEbTZtUnR1TVB4MHpCUDJ1MFl0WXBBOC9HRHhCNEpJ?=
 =?utf-8?B?RzJlM24zMWdPYytjQk4wNWVDOWJuVkhPMExjQ1pzVVV6Z2NnSStZeFdMc2tW?=
 =?utf-8?B?elBFRWVDRklBS1lHVTl6YVJrV3duZWdpVmlKZWUyV3J1UE1Ed1RWSXRnblhz?=
 =?utf-8?B?VUFWdElYVGVGT3BRaFdVV2FFZzdtSmlDMEVPQUtkeUw4VFQ4UWttaVo3NU8w?=
 =?utf-8?B?NDBBdHBlcC8vKzZJa0hXSmMvYVRyL25OTUlHQUxvVFJpN2JBdWZENWw2REJW?=
 =?utf-8?B?Z1U3TU85YzF5UzE1K2FWTTVjdEFqRmVnOXY5MU14T3djd1FVRjJUdlFZUVVs?=
 =?utf-8?B?a296d0s3SFpVc3BCOTJUcWNXdThxQ2twYlRXT1d5djNMKzVubm03amNROXNM?=
 =?utf-8?B?ZHdlU0NncTZ4YjFrZmlpUU5oanR3YysxK0F2TkJDTzN0UURlT3pIQktvUHdP?=
 =?utf-8?B?S2x5bktBWEpFWGVySzNWZmVSRmk5RitDQXhxU05RZkFGQlFPdE52b3pzamF1?=
 =?utf-8?B?T0s5aFM2UGp3WE9UWjBqOE91T3VlWW96Q0ZRRTJ0R1cxK0NFSzVnWjQrdDU4?=
 =?utf-8?B?ejI2b3VUZ1FKTEs1YVJCK01UNy9uUkJBa29ObHB6UCthaVhqVkpDdGpvNExU?=
 =?utf-8?B?QStzZXo0WC92MFp6aDcwdTBmWWFsZHd5eGlXWkVWbllYSWFmRkp5Qk1xRmtE?=
 =?utf-8?B?U0d2WlBWREJDMVFJTnljL3d4RUxZS1NxaGVHZlpaYUdzMEZaK04wUVhidjI0?=
 =?utf-8?B?TnpXL3A5ekJkalZ1ZUltMVRKWkhqeFBQZ0dCaURXbUkvVmIzVXJ2b0x5S0cy?=
 =?utf-8?B?ekV4UzNpQnA4M1kzVkp4dW0yNk96dTRkaVRDQWU2SmVxa3hkUHlWTHhHUHlV?=
 =?utf-8?B?MGIvcHB5REZBdEJ6OXpYRjRnTDM0eDFKOVZoNlRUMWdRWWl0TFRLdzhQOUVn?=
 =?utf-8?B?MGFVbTIzK3o0UWVvb1ZXQkZHcm94UGNQV3RmNkE1MnM2R2VGRUU1V0hGNnRK?=
 =?utf-8?B?dkRnTy9LL0x6cjhORDAxRk80SlJVc2E1SWVvOTFoUU5CUzQvOVRYNnlQb1pX?=
 =?utf-8?B?NjdaWi9ZZW9xZVMvVklKU21PWm92OUsxUHh2TlFJWGMvU2VjeTVxVU9LMXRG?=
 =?utf-8?B?TWhQWjhPK2pERCtlS1JZeEdoQS95Sjc1ZkRkeGZyTWtYdTd3akJBc2NXYXhX?=
 =?utf-8?B?ck54NDRoSnpySTJ6cVZjalN0dFRnQ2t6djBkM1lxcTdOOUdVTlVWelVjQzZQ?=
 =?utf-8?B?cHM4MHd6YWpTVkdKVERVRlVyTlBQbmozbHN4blgrY3dVa1V1UzZ1eXp4aEt5?=
 =?utf-8?B?dmlUZHBjRVU2L1E4UE9KaVpVSFM5bUQrSDNkbThrT1FRMXVqekxhR3c2bzg4?=
 =?utf-8?B?OCtmbDZZc2lHN250dzg4M1NaaUE3dUtmelRGZk9FTXZwRTlkVnRJUmpDV3pJ?=
 =?utf-8?B?MmFzYkdpMUJpa0QwOU00NnA5NmVGa0hTcXR4MzZlU0k4Mmc9PQ==?=
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:(13230040)(376014)(35042699022)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 15:37:52.9770
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a8b6b865-5bdb-434e-e7c2-08dcf7667caf
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: AS2PR08MB8999

SHkgQXlhbiwNCg0KPj4gKw0KPj4gKyNkZWZpbmUgUkVHSU9OX1RFWFRfUFJCQVIgICAgICAgMHgz
OCAgICAvKiBTSD0xMSBBUD0xMCBYTj0wMCAqLw0KPj4gKyNkZWZpbmUgUkVHSU9OX1JPX1BSQkFS
ICAgICAgICAgMHgzQSAgICAvKiBTSD0xMSBBUD0xMCBYTj0xMCAqLw0KPj4gKyNkZWZpbmUgUkVH
SU9OX0RBVEFfUFJCQVIgICAgICAgMHgzMiAgICAvKiBTSD0xMSBBUD0wMCBYTj0xMCAqLw0KPiAN
Cj4gTklUOiBhbGlnbm1lbnQNCj4gDQo+PiArDQo+PiArI2RlZmluZSBSRUdJT05fTk9STUFMX1BS
TEFSICAgICAweDBmICAgIC8qIE5TPTAgQVRUUj0xMTEgRU49MSAqLw0KPj4gKw0KPj4gKy8qDQo+
PiArICogTWFjcm8gdG8gcHJlcGFyZSBhbmQgc2V0IGEgRUwyIE1QVSBtZW1vcnkgcmVnaW9uLg0K
Pj4gKyAqIFdlIHdpbGwgYWxzbyBjcmVhdGUgYW4gYWNjb3JkaW5nIE1QVSBtZW1vcnkgcmVnaW9u
IGVudHJ5LCB3aGljaA0KPj4gKyAqIGlzIGEgc3RydWN0dXJlIG9mIHByX3QsICBpbiB0YWJsZSBc
cHJtYXAuDQo+PiArICoNCj4+ICsgKiBJbnB1dHM6DQo+PiArICogc2VsOiAgICAgICAgIHJlZ2lv
biBzZWxlY3Rvcg0KPj4gKyAqIGJhc2U6ICAgICAgICByZWcgc3RvcmluZyBiYXNlIGFkZHJlc3Mg
KHNob3VsZCBiZSBwYWdlLWFsaWduZWQpDQo+PiArICogbGltaXQ6ICAgICAgIHJlZyBzdG9yaW5n
IGxpbWl0IGFkZHJlc3MNCj4+ICsgKiBwcmJhcjogICAgICAgc3RvcmUgY29tcHV0ZWQgUFJCQVJf
RUwyIHZhbHVlDQo+PiArICogcHJsYXI6ICAgICAgIHN0b3JlIGNvbXB1dGVkIFBSTEFSX0VMMiB2
YWx1ZQ0KPj4gKyAqIG1heGNvdW50OiAgICBtYXhpbXVtIG51bWJlciBvZiBFTDIgcmVnaW9ucyBz
dXBwb3J0ZWQNCj4+ICsgKiBhdHRyX3ByYmFyOiAgUFJCQVJfRUwyLXJlbGF0ZWQgbWVtb3J5IGF0
dHJpYnV0ZXMuIElmIG5vdCBzcGVjaWZpZWQgaXQgd2lsbCBiZQ0KPj4gKyAqICAgICAgICAgICAg
ICBSRUdJT05fREFUQV9QUkJBUg0KPj4gKyAqIGF0dHJfcHJsYXI6ICBQUkxBUl9FTDItcmVsYXRl
ZCBtZW1vcnkgYXR0cmlidXRlcy4gSWYgbm90IHNwZWNpZmllZCBpdCB3aWxsIGJlDQo+PiArICog
ICAgICAgICAgICAgIFJFR0lPTl9OT1JNQUxfUFJMQVINCj4gDQo+IE5JVDogc2hhbGwgd2UgYWxz
byBhbGlnbiB0aGUgdGV4dCBhZnRlciB0aGUgY29sb24/DQo+IA0KDQpQbGVhc2UgZm9yZ2V0IGFi
b3V0IHRoZXNlIGNvbW1lbnRzLCBJ4oCZdmUgYXBwbGllZCB5b3VyIHBhdGNoZXMgYW5kIGV2ZXJ5
dGhpbmcgbG9va3MgZ29vZCBpbiB0ZXJtcyBvZiBhbGlnbm1lbnQsDQpJIHdhcyBtaXNsZWQgYnkg
bXkgbWFpbCBjbGllbnQuDQoNCkNoZWVycywNCkx1Y2EgDQoNCg==


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:38:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:38:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826669.1241009 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5RpA-0005JW-1P; Mon, 28 Oct 2024 15:38:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826669.1241009; Mon, 28 Oct 2024 15:38: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 1t5Rp9-0005JP-UK; Mon, 28 Oct 2024 15:38:31 +0000
Received: by outflank-mailman (input) for mailman id 826669;
 Mon, 28 Oct 2024 15:38: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5Rp8-00058k-VX
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:38:30 +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 ae8254a4-9542-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:38:30 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-43167ff0f91so44966285e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:38:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b4a3cesm9749709f8f.63.2024.10.28.08.38.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 08:38:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae8254a4-9542-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730129909; x=1730734709; 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=P/q8/nqfOEa4w/latPmDav4iIL0Fvj3H0JTHhjs9TK8=;
        b=TpiOi0qYC0MaMmyOtqqa9RVR4h2LtweZGqhSaXU28si3YDR2j8Ci2rq6qHaro/s1FM
         ub97mpH70X1Ly5rrWdrfHzvLpODt77EGOmlCgl3FhueghCYtkubEbvSKAQOfrWE/WF9t
         3EVsfNUnpTHsoegB2ZP+gdmG1G1f7b20k3ZJkmsCXKWrDVESiQp/criRjjyuFxXpiLTx
         oYTBKr+aJEGzWFMbU+PW9JjYZwaijckgsmTJAZZAgGYRO57TBAo0mnXHf3IruRzaWnAU
         WBi2Z2tZhfU5w64YWr7u/gqiD2IFX9fBZ3MPWOc6YW7XNqLruBHMD5sfV8FoYZWA1ykm
         HjIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730129909; x=1730734709;
        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=P/q8/nqfOEa4w/latPmDav4iIL0Fvj3H0JTHhjs9TK8=;
        b=ADjRMdFZj0PEf8otM8TyGIjazaylRKnMQfDHAdvBF275vJQPn/ukRPAEA3tFKqAKPp
         uH0+aozi+eBN0WAOToB8YtzlTwlfSdE3XIdjP5urbTiXHdvrc8eYY3ZTiQdNhPMgLwhc
         eBKUgYGM5242EIchinewjzX2Yso3Q0VuJRDIm4x7rsk7SqKqSD1qzdglGAGnnUTHxCnd
         OXa3+QZWtCZ0PHpkbD6wM7tDAm3u2eajR73ZNJdDwAxIYMbIB71aYZ8rvNgsjWRRZp8O
         mDYKC/njwQ+Z7tv+upVaNKcVxail29KwsWj7ImCJclN/bYpeyMU9DOuEQG70vys8xFVr
         1HpA==
X-Forwarded-Encrypted: i=1; AJvYcCVpQAD6OmyZOJ08vU1j+y8EnI1rYsJvsrLXZCDvDlY9Be5GB2ewEz3Fbh+lR7P8K7CVA3ZJiNSCGiA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx8m5ExN6oHi3LnzD4wzw0c/L++joFb1yHEnFQnX8i7FusDsaA6
	u2jBJ+iXqdcrQCS0wu87I58FicI0jr/iaQyWgv0QNwMO4hCONY5OV5SViWlElA==
X-Google-Smtp-Source: AGHT+IFz9WrQLX88jqBZ9nu1P+OSzeBgD6aL9EHPa1k6t9rL3rihyNOHqy0mHyhWc1i1QTWBiFrB0w==
X-Received: by 2002:a05:600c:4f51:b0:42c:a574:6360 with SMTP id 5b1f17b1804b1-4319ad2d6aamr78406885e9.29.1730129909508;
        Mon, 28 Oct 2024 08:38:29 -0700 (PDT)
Message-ID: <461902a0-66d7-4c1e-8a67-54d0c1be878d@suse.com>
Date: Mon, 28 Oct 2024 16:38:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 08/10] x86/ucode: Use bootstrap_unmap() in
 early_microcode_load()
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-9-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: <20241028091856.2151603-9-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> If bootstrap_map() has provided a mapping, we must free it when done.  Failing
> to do so may cause a spurious failure for unrelated logic later.
> 
> Inserting a bootstrap_unmap() here does not break the use of ucode_{blob,mod}
> any more than they already are.
> 
> Add a printk noting when we didn't find a microcode patch.  It's at debug
> level, because this is the expected case on AMD Client systems, and SDPs, but
> for people trying to figure out why microcode loading isn't work, it might be
> helpful.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Hmm, yes, I think this is correct now (but the mapping had to persist earlier
on, likely years ago). So
Acked-by: Jan Beulich <jbeulich@suse.com>
However, as a nit, ...

> --- a/xen/arch/x86/cpu/microcode/core.c
> +++ b/xen/arch/x86/cpu/microcode/core.c
> @@ -823,6 +823,7 @@ static int __init early_microcode_load(struct boot_info *bi)
>      size_t size;
>      struct microcode_patch *patch;
>      int idx = opt_mod_idx;
> +    int rc = 0;

... the initializer doesn't appear to be needed here; all paths ...

> @@ -878,15 +879,24 @@ static int __init early_microcode_load(struct boot_info *bi)
>      patch = ucode_ops.cpu_request_microcode(data, size, false);
>      if ( IS_ERR(patch) )
>      {
> -        printk(XENLOG_WARNING "Parsing microcode blob error %ld\n",
> -               PTR_ERR(patch));
> -        return PTR_ERR(patch);
> +        rc = PTR_ERR(patch);
> +        printk(XENLOG_WARNING "Microcode: Parse error %d\n", rc);
> +        goto unmap;
>      }
>  
>      if ( !patch )
> -        return -ENOENT;
> +    {
> +        printk(XENLOG_DEBUG "Microcode: No suitable patch found\n");
> +        rc = -ENOENT;
> +        goto unmap;
> +    }
> +
> +    rc = microcode_update_cpu(patch, 0);
>  
> -    return microcode_update_cpu(patch, 0);
> + unmap:
> +    bootstrap_unmap();
> +
> +    return rc;
>  }

... reliably set the variable. (I don't recall what our conclusion was as to
Misra possibly considering such unnecessary initializers dead code.)

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:39:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:39:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826676.1241019 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5RqD-0005t9-Ar; Mon, 28 Oct 2024 15:39:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826676.1241019; Mon, 28 Oct 2024 15:39: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 1t5RqD-0005t1-7G; Mon, 28 Oct 2024 15:39:37 +0000
Received: by outflank-mailman (input) for mailman id 826676;
 Mon, 28 Oct 2024 15: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=MlZD=RY=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5RqB-0005sq-BH
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:39:35 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on20608.outbound.protection.outlook.com
 [2a01:111:f403:2614::608])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d41c0432-9542-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:39:33 +0100 (CET)
Received: from AM6PR05CA0035.eurprd05.prod.outlook.com (2603:10a6:20b:2e::48)
 by DU0PR08MB8495.eurprd08.prod.outlook.com (2603:10a6:10:404::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Mon, 28 Oct
 2024 15:39:30 +0000
Received: from AM4PEPF00025F99.EURPRD83.prod.outlook.com
 (2603:10a6:20b:2e:cafe::6c) by AM6PR05CA0035.outlook.office365.com
 (2603:10a6:20b:2e::48) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25 via Frontend
 Transport; Mon, 28 Oct 2024 15:39:30 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00025F99.mail.protection.outlook.com (10.167.16.8) with
 Microsoft SMTP
 Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8137.0 via
 Frontend Transport; Mon, 28 Oct 2024 15:39:30 +0000
Received: ("Tessian outbound 0fe1877cedb7:v490");
 Mon, 28 Oct 2024 15:39:29 +0000
Received: from Lee16b7e1f88f.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 863B2CBE-E840-4887-A991-23212609DB9C.1; 
 Mon, 28 Oct 2024 15:39:19 +0000
Received: from EUR03-AM7-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lee16b7e1f88f.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 28 Oct 2024 15:39:18 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by GV1PR08MB7380.eurprd08.prod.outlook.com (2603:10a6:150:24::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Mon, 28 Oct
 2024 15:39:14 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.023; Mon, 28 Oct 2024
 15:39: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: d41c0432-9542-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=vYAT6UL2fZZzy54VHBfrnoQAWqojYma9lVEUE00298X707Hr++uT2MGx+YWmszaGiFeuM0I1QeNPLpJSglxps7bodmGb0DusV4/3+XGKNi/6QCiYn/Lge7PY1YMs4akQF9E5Bk0jK0nppDxlzakeBe46UTYUeeXOdctSB4XZjDsg1UI0jSi1Z14gogscNnHCVsKwysPSRQS/8uJ+1ju/XcNrW3/1nK2TJcbWCia37jokQpg5B3VffFP6S86tgtN/8v1fkOEYzDR82xQaBlIjjBo0bX15BKn9U5Fyn8UaIsyc2f4ciKyZuunEL26E8HaEl+OjqUxMrTFNCJ82ouipnQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=JN8OndcgIf2vR/RE47v19PBB+J/xFSJ5aaC6NjQV+kI=;
 b=FNC7GKqcI6WwCUgOGIUlOnqAGgxK1lGrzYZiq2GAuE7xBzZ5ngvtE6p+zDz0euV1UGRJQkZZgiskoyZb/vzS6alZdfCulQ5thn0hwWXOTw+E6TUUGB0sBXnZS7xJsYUBC8x44QZcYF3b1QRzQc+b/QU4ZntXbtJ1uypUZdBtUA6X74xdvVeI8YDbhdaJcEDpyWQgoLq3eBWzddeaNc+VDBeI9ygLRkau7HchJ4K/J5J1xBcm9DyP3pSuX1/R9S0FJ4ViRKrtwVFWwfiGTvTuhBCSu/fZLDa5BV03rV+2QqCaeBHtd1l5sstrKMC7l+fjnXWXMeAhjUjVPrUlrqKKUw==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JN8OndcgIf2vR/RE47v19PBB+J/xFSJ5aaC6NjQV+kI=;
 b=Q774YwFbUwQ1XoaTo1LRT1NqRwSheH3iB3RvYtpxeDWfbNnMcXAkso4kgoNFOzkSK476uaedb99vMC0YkVV7V9mZZ+irqeDEB+STDUrnFdjuDdbmCeEkusAg+YV76gQ9SI5aRsQCvZKciS+7Y8LM/D0m3Rcmp2n9TC/bToaupmA=
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=arm.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: 8dc304bd9c8d3f7f
X-TessianGatewayMetadata: xeeKA7P0Pjw2XEYtvKBy74+cD0/sAj69WahCaxwc3GURACFDqEkPgnn8kifNcCl9+a3NHlrGH3ib53t4hNyPmSDFXrJzfQ2jJoiuws+jC86N9i9DeiOUoDQGI94+LK4e5JjvIxVYEnO4L2dVRGnoEZfdxyXBwg4XQ6gwpwUYMuU=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=W0+YTshbXeEbEjPoEz+jArZq3JuWlXoyfIG67Pvdk+yz/kKhou+SnkMCgaby9paPRuyu2k6cLgz9avmtp6OsZejkcbk+7XbBdi+oZsjZ/FIPg7kVDeZ/RxzbQlDzs4e1VGufx8sQJP/NadiuOWbz+8FfRKI4ki2V59o7LkDUhbXiRC4ifZV4ENCyNkI7zX9Gr1RgL00/7QZN7DZDEzCgfU4pdwxOHu2Tcz6lWvvPdVAIJPq7yYYgysEvovLS3PlQJYkO/WVeC6QPKVFUE/2Ymsovdg55rpeGjj4srsT/wZyldsonXD6D5CrMMqXOhcW/sK8esoHlHXPhJ+avs/KzkQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=JN8OndcgIf2vR/RE47v19PBB+J/xFSJ5aaC6NjQV+kI=;
 b=ynQceqUaGJnH+tY/dqf6BliDz6hD9wHyVFIUdwtBtsPPB8Lz0U0bVLKvOR7KbWoQqs+kRJOivv8CNotFj/e2Iy5qBmG48WWkmJACUOeZmAPzusTVXcIPLXoJYOmKcacmNw11Af4cr677TRu3/Je3WgE2jxtz6VeHKo8HCc3jqnnEcWt6DfQK9nwU9XaJOOUPjcByskCNPVkOE51D0kMMcrgmPHjwcIBvxZ1ZAJUgiyt2I0oSQVUyfqAMZJy4KLzNJ8S7PiJkMHxTGmST1jyeYwRlnZXIr1d7ip5cF5AcH+5+yO+R76tTiOnq0Mhuh2NtEBZAAZkep/tZzOYH31P+5A==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=JN8OndcgIf2vR/RE47v19PBB+J/xFSJ5aaC6NjQV+kI=;
 b=Q774YwFbUwQ1XoaTo1LRT1NqRwSheH3iB3RvYtpxeDWfbNnMcXAkso4kgoNFOzkSK476uaedb99vMC0YkVV7V9mZZ+irqeDEB+STDUrnFdjuDdbmCeEkusAg+YV76gQ9SI5aRsQCvZKciS+7Y8LM/D0m3Rcmp2n9TC/bToaupmA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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 v4 5/6] xen/arm: mpu: Enable MPU
Thread-Topic: [PATCH v4 5/6] xen/arm: mpu: Enable MPU
Thread-Index: AQHbKTd4TPW4dZ8zhk2oX5EUPGpTkrKcTJiA
Date: Mon, 28 Oct 2024 15:39:14 +0000
Message-ID: <05A07FCF-DE6E-403B-9B2B-ADBAE3C2CCFB@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-6-ayan.kumar.halder@amd.com>
In-Reply-To: <20241028124547.1371867-6-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|GV1PR08MB7380:EE_|AM4PEPF00025F99:EE_|DU0PR08MB8495:EE_
X-MS-Office365-Filtering-Correlation-Id: a4c69c24-f326-459f-5c5a-08dcf766b68b
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?us-ascii?Q?SnnAPeHGesqpdtEnODa/uS3Tu35I9yToe9wwQ8iNxZS7vZf+O1wkrPn9Hh23?=
 =?us-ascii?Q?jWiWpi3mQfI08OKWmdNUd3PRuCVaGXHpZnHkKJzIV76uYK18NCCiMn79vh39?=
 =?us-ascii?Q?dG0YVmxAxT54lr4zFX361LHQAUqVjwKo+FXlO175TK9NFx+o27HTypMQ+VG4?=
 =?us-ascii?Q?MuYT5y/dKe159fIgMRvnoAhNDNsJNERwUBODmNryVRM5FmNJGUB969US1CNy?=
 =?us-ascii?Q?eL0dFGvbw2hpQR8/sWWkS3USj9ZtXK4AJhC50NVfGQaB0bft1aZ6/e4mjwHL?=
 =?us-ascii?Q?v0H+tZHPKTo2XsUUL8A0bnhDY3qV9soe05tOKqz5QmUf+7HQGuA6k5lDUPLa?=
 =?us-ascii?Q?uD9SKNv23XATiRnB7AJosfAvMw/UnsMvuQmscKeVqcHoLkEWd6lL8R8Mu+Vb?=
 =?us-ascii?Q?/9v2Ee5afVDySPvIhZK39cE1hDtSpvGqcXUQNw3aIR6IaMvJLZeRce387YpY?=
 =?us-ascii?Q?sZqPA8icDTBxQYIaQvZByP9qMpIEzUrg2J71r3CRaidzlfXUzhv4NskA0uXn?=
 =?us-ascii?Q?ZYLkXD3p5ukWyw0xzGw5lqHtjBa3ABgtqloxp8qlSzKyoY2gQld6bmZ4PGF9?=
 =?us-ascii?Q?qMdQo09hrD9tZtecCjb0zZllnJC9ofOriRUOslFHZDfSGEz0D9SUpNfIO/Gy?=
 =?us-ascii?Q?ziGqqnAASqO3SGH4ppNqnftFEp/+V1WOZxoGaj/Ps9beBiiLXVsSHSj0OGLi?=
 =?us-ascii?Q?SdIzqA3fXnLPIbf7dFueLwdcJijcFOywQHbHX9QNax3hLS6EO9Mr527CNi49?=
 =?us-ascii?Q?9ASpVUPUzKpSGmXSGvCPOfVRu1eHE8dKFNJEL8Vunh4519fE+N/Tnj0REzma?=
 =?us-ascii?Q?mCPk3uQXv6foZld9WE9iXPkqYrlsOT4pzH2n7VciPUtu6EuZ/vOixONopabO?=
 =?us-ascii?Q?WDCApPlkx3lCB8hCa23UUfXo3b44lI5IxQ3AsAmcpFMCfmoKud9hU23cuxHc?=
 =?us-ascii?Q?CKn404LueLD4YOzI+jiwRbOjUFy/W8agCsfb8iG6M6alvVj1LaPqQEisaskX?=
 =?us-ascii?Q?1NQMvWMVzzmZSFlc+5LwKrmuk2EKbC1xoqs9WkIz9ATS/n4PJLFdWqnR+laN?=
 =?us-ascii?Q?Y6Hpf4zPwh7Ro73+izCcu35H+zsQuKYVm0OYDSZdR1CT5e0YV+88YUH0CSFO?=
 =?us-ascii?Q?wzdKHBm0+9+X1PF7+4l/vSSGzYd/+d2gTxNLrkb9xeEh8VsP5LIlN/hLLycY?=
 =?us-ascii?Q?RT54mDJUNgd0+/taI47YaNT0XaAyxnjA2WaqSIIiZsg1C7gSKnCf0PxsEzXO?=
 =?us-ascii?Q?87JnGDkdyTuZaHnKZ/+RF8xX9lPjvhtj+5JgRYAEkzkG6JIZVez97hMOx0hz?=
 =?us-ascii?Q?eIuSutsO1eyVJsUxlSt80RcUMy6rS8FwXa2OYSffEOn2BRaYAd7bkItR2sHF?=
 =?us-ascii?Q?fYKsWxk=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <611A1CF4DD23E5468C1B58373E7FE2C7@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7380
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00025F99.EURPRD83.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	cee701f4-99f4-41be-c889-08dcf766acf6
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|35042699022|82310400026|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?vD25lMwLwuntVqpNOV7ganm4Z0fNcpGMCg8PQy7lb0plQC1oHm6C+IxShP9G?=
 =?us-ascii?Q?5Er4kIi8QVjhPCxXCpfpo+//2lX99WaffapwCioWWZHzIM1v2tbKjqug5XoA?=
 =?us-ascii?Q?vJXR45R88uoTW6i1ErFduLiHJzhFGAkoODMTh01f+PfzTDdWfk0/HlFPwwlR?=
 =?us-ascii?Q?2Hl1/4SpWcnGI8m8iYKx0kSM3zkxVPIftZM1QD9YpgZfjwp/8YSzRkGvrN9C?=
 =?us-ascii?Q?KmKEvIihLdqjoCPVMJ0VF6ycG1YHxwZ4VSt7JTT+WPKrXcY1nQiJBWJCkEDE?=
 =?us-ascii?Q?976hjl6wNlXKLLodYeknX6JadaAz4aIZQNufMW8S1HEzESAnHSzDLbZHNVmU?=
 =?us-ascii?Q?cObmZL8n+SSNeckZDD7L3JoLH9MDObFa/JnhxUwi1aOQhZA9n9zPCs7R7url?=
 =?us-ascii?Q?IMVsYZ2DnS6OM9+ykYDV4j1phnhomQQnMrDPIqGphSgQMGqZvwefiUACqIhy?=
 =?us-ascii?Q?QMUIDEb2Fkx4lh7VYk2NB2sj79ZYzmTVA26fomrwA20Btg0RjFNGOsui+zE/?=
 =?us-ascii?Q?Gnz6Fsx8AMsYxHxxHqBMlZ4EYD2xubNP9jQ+zgZGP4sr+6yhFTfWjJSp667L?=
 =?us-ascii?Q?ZnyKj2KgO2UUPsTJqz/hTQo9yIZR0MOpzwaTaWX8WQ5eQd0RX/QB64HjJv1P?=
 =?us-ascii?Q?3Ys35TdVU32HeUPgLdjlabXs9WLU0Jj5i0B+SrUsag9xduHbBMzJED/pNESd?=
 =?us-ascii?Q?FWkXco/Bvmw+FXT6IUia2BGsUkpC9V6XbxYgWNzVXoMYuTef6+wiemUPU+DR?=
 =?us-ascii?Q?FdtSejJ475CzLPSqNZZiOuFnImA7m5dN7bdN3l0pZc/yGRiRuKSFmAQy89Ut?=
 =?us-ascii?Q?NCMNZOj1zDy4ZYpj0iItbE3irB4u7lQA5fvzu8zzhCiYMgcI0GMmSy9f0utR?=
 =?us-ascii?Q?zsgqMf5DImMRjtH/GBsl9ubiwSoEVtvFgYFEuK9l+nFOWdY0jmBBFoUs3/oZ?=
 =?us-ascii?Q?vOhVjVerqvECPMWbRT2jhznVaEe53NjVgGmCrLc7fusq9RVuQBM+VrIXnl69?=
 =?us-ascii?Q?AU550HjZglHtb5VIEIN/+DM1XpwpjAurF3jEGnHG2bmO/Vm9oAXVROry08JL?=
 =?us-ascii?Q?QAl0kLqVgwWrTecVMgxJSuf1FwBJIQEDjpnwp/z6r/QE3wOn9rfJwNQSh1po?=
 =?us-ascii?Q?1cb9fsVcNmcx1KcdaUkbxtMBTUI5YMJSKjY7Uc8+RBLzfoy/GQoxi/Mbirv1?=
 =?us-ascii?Q?7NkZJQSyFQab9Uvm/qk4Vj/NhpgpyVKU9oJK9ADMBm2p47kgcSTh9IAQkomA?=
 =?us-ascii?Q?3WkmkLIVUQJsM2oAIAvfxOpZL55Xn5a39wU91/y71NBTMHFWLFThfbk9P3rc?=
 =?us-ascii?Q?coFbsB+kDsJ4sNVvTRHAY/7JE1i/QN4kkr0oudJXC2qvNmyseap9M94Kbtmh?=
 =?us-ascii?Q?2xEMUUhZJfQ1ijOn2mKh5eTGLLigs8fuwI+LMUVmJClbPwmlRg=3D=3D?=
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:(13230040)(36860700013)(35042699022)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 15:39:30.0454
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a4c69c24-f326-459f-5c5a-08dcf766b68b
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:
	AM4PEPF00025F99.EURPRD83.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8495

Hi Ayan,

> On 28 Oct 2024, at 12:45, Ayan Kumar Halder <ayan.kumar.halder@amd.com> w=
rote:
>=20
> After the regions have been created, now we enable the MPU. For this we d=
isable
> the background region so that the new memory map created for the regions =
take
> effect. Also, we treat all RW regions as non executable and the data cach=
e is
> enabled.
>=20
> As enable_mpu() is invoked from enable_boot_cpu_mm(), one needs to save a=
nd
> restore the lr.
>=20
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
>=20

It looks good to me:

Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>




From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826686.1241058 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0M-0000oN-7A; Mon, 28 Oct 2024 15:50:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826686.1241058; Mon, 28 Oct 2024 15:50: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 1t5S0M-0000nN-2P; Mon, 28 Oct 2024 15:50:06 +0000
Received: by outflank-mailman (input) for mailman id 826686;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0K-000874-7I
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:04 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4b9450bb-9544-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:50:03 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so669318766b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:03 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4b9450bb-9544-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130602; x=1730735402; 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=M5K6Nspj7vj9C6pOy10gyRqgpDSP036JKIQJVf2EbyY=;
        b=H9iNfog2o4W3yH7pweobUggwnKMC3cbeaU/vJ9G/Fe1nsRBc331R8tjNFKjQnlLDAc
         vAtoc9SC66bTH5stZNyqi/6zLf91VqIGe4jBpksI3v8OyJUDC2jKenFgxCyE5AlaCa/o
         964JPEf2Ij/rbwQRDMNMaubdlLhrXA3hYFteg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130602; x=1730735402;
        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=M5K6Nspj7vj9C6pOy10gyRqgpDSP036JKIQJVf2EbyY=;
        b=Kysb1+TmLtv7qSUYl4zW06MdyVlMNlDH5dTTFEJhY/8gcRX8OFT2uMHZqqI3UuuVlu
         zII4nG8KcW0EQkT7uEYQFHAG14ZDUTufv022b0gDNhjlpB2yjIONWoLAE8sZ/6UOVDqN
         vRLecuSUPAcSmhjx2Hhst4KxlH4c86jGIX8pVPcWBkfgK4YkQia5GaCYF4PrR8o+IR3F
         0s9rJTDZdPJWaukHfic0i+wKG0n2Ylp3yI8ER2iHywakqvP+AYSmokMrZSaZ/jqHMgdC
         7QfaLt8pYbAeWWnm+IFEDnsLUpnSniqy7836YqW2EQprNSNkx79wf/x1y68zTyiN1oxF
         M/Ew==
X-Gm-Message-State: AOJu0YwOHe7f0lny7dM4DZmDE952IYoZGjCFSIwKst0+iIKQzn7YnC1a
	uevUB3tMgm8dnjm4Np5KbrLqstuKu5krjq577aiHZKmMp+pQ3b0RtbXiPQGeJlHZhIRcabaDV86
	v
X-Google-Smtp-Source: AGHT+IENOkisnUIp/1ZDjvE3uVJQj41jLy+2PM5YAn3FaDRjW+hclm6tDVlVyAKvEArohDjyyFFtSg==
X-Received: by 2002:a17:907:2da2:b0:a9a:a5c:e23b with SMTP id a640c23a62f3a-a9de619c1camr773093266b.58.1730130602288;
        Mon, 28 Oct 2024 08:50:02 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 03/14] x86/hvm: Map/unmap xsave area in hvm_save_cpu_ctxt()
Date: Mon, 28 Oct 2024 15:49:21 +0000
Message-ID: <20241028154932.6797-4-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/hvm/hvm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index 018d44a08b6b..77b975f07f32 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -914,11 +914,11 @@ static int cf_check hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t *h)
 
     if ( v->fpu_initialised )
     {
-        BUILD_BUG_ON(sizeof(ctxt.fpu_regs) !=
-                     sizeof(v->arch.xsave_area->fpu_sse));
-        memcpy(ctxt.fpu_regs, &v->arch.xsave_area->fpu_sse,
-               sizeof(ctxt.fpu_regs));
+        const struct xsave_struct *xsave_area = vcpu_map_xsave_area(v);
 
+        BUILD_BUG_ON(sizeof(ctxt.fpu_regs) != sizeof(xsave_area->fpu_sse));
+        memcpy(ctxt.fpu_regs, &xsave_area->fpu_sse, sizeof(ctxt.fpu_regs));
+        vcpu_unmap_xsave_area(v, xsave_area);
         ctxt.flags = XEN_X86_FPU_INITIALISED;
     }
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826687.1241070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0N-0001A0-Jk; Mon, 28 Oct 2024 15:50:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826687.1241070; Mon, 28 Oct 2024 15: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 1t5S0N-00019a-Bb; Mon, 28 Oct 2024 15:50:07 +0000
Received: by outflank-mailman (input) for mailman id 826687;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0L-000874-BW
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:05 +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 4ca4ce99-9544-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:50:04 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a68480164so620241766b.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:04 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4ca4ce99-9544-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130604; x=1730735404; 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=k5/TXen51hB68I6BFGT+jmFtlRjBnBfjDOpUJmu9hDE=;
        b=TY/fIWVJd9hNosxSg3y3L6TwxGcyw7Z3XrbpVDP6KAO8hoYT8IWuoWN7fhgQSh5JGG
         +bBsdgJR4MDfiAdoYrWFTpEMiT1TOo7spC056dsdxpo+U0KpKG/fhZU79WPIiYqJ99bY
         ViUYA3oq4eJvH4rpmRy6UPRfPG6XgaiLJSg+M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130604; x=1730735404;
        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=k5/TXen51hB68I6BFGT+jmFtlRjBnBfjDOpUJmu9hDE=;
        b=RNZV0/86H4+vsjKM0IYys36ILFAR9wTFeMPYBecQYl3eO8tljREINku+2EVhzV6dl6
         fO2XhsxpHP9Pap1KENTjjcpzrZohtZlSkkR6xTjRNR3RVTStK6orPJcvNjYjqZFgVIkp
         hfVhha+VXhw43FknpHKCOOXBxDsmLRajY8GjZzcel0iJFsAznIfJtiltF7yHB7VKKU5a
         4tEBBLEFukgvYVQo/atFGN2hu0W8nXZax18exmHaT26sz2xfJECjnFT26gHqTCscTMGi
         WS93vG7fzaNYdU/tL9KZxVfeb5xhiaJHZXZOmDR3AIqCPGpLiXPPgvIUh1x5VN2GkJuZ
         zRig==
X-Gm-Message-State: AOJu0Yxprcl01SzgNs+btBwc1R8S25lC6HwdnhEuwZj0vjwd/5jz/WwO
	ztY4WCGg845vZx/vtnjhtCiO1xgUxsAzXvuJ4sTt2KeYxYtMQpvl9Bho7Wygh0BcXK5LIT/vNfI
	G
X-Google-Smtp-Source: AGHT+IEuqJAcG2GYWLVnnngxRLpaSRDV3BwBCu+v1OexXNCj5m10aMlavT0wiEaUKGuKYvkiTGsvTg==
X-Received: by 2002:a17:906:6a1d:b0:a9a:18ee:5106 with SMTP id a640c23a62f3a-a9de61e95a5mr760804266b.65.1730130604050;
        Mon, 28 Oct 2024 08:50:04 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 05/14] x86/xstate: Map/unmap xsave area in xstate_set_init() and handle_setbv()
Date: Mon, 28 Oct 2024 15:49:23 +0000
Message-ID: <20241028154932.6797-6-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/xstate.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index af9e345a7ace..60e752a245ca 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -993,7 +993,12 @@ int handle_xsetbv(u32 index, u64 new_bv)
 
         clts();
         if ( curr->fpu_dirtied )
-            asm ( "stmxcsr %0" : "=m" (curr->arch.xsave_area->fpu_sse.mxcsr) );
+        {
+            struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
+
+            asm ( "stmxcsr %0" : "=m" (xsave_area->fpu_sse.mxcsr) );
+            vcpu_unmap_xsave_area(curr, xsave_area);
+        }
         else if ( xstate_all(curr) )
         {
             /* See the comment in i387.c:vcpu_restore_fpu_eager(). */
@@ -1048,7 +1053,7 @@ void xstate_set_init(uint64_t mask)
     unsigned long cr0 = read_cr0();
     unsigned long xcr0 = this_cpu(xcr0);
     struct vcpu *v = idle_vcpu[smp_processor_id()];
-    struct xsave_struct *xstate = v->arch.xsave_area;
+    struct xsave_struct *xstate;
 
     if ( ~xfeature_mask & mask )
     {
@@ -1061,8 +1066,10 @@ void xstate_set_init(uint64_t mask)
 
     clts();
 
+    xstate = vcpu_map_xsave_area(v);
     memset(&xstate->xsave_hdr, 0, sizeof(xstate->xsave_hdr));
     xrstor(v, mask);
+    vcpu_unmap_xsave_area(v, xstate);
 
     if ( cr0 & X86_CR0_TS )
         write_cr0(cr0);
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826683.1241028 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0K-0008R3-7d; Mon, 28 Oct 2024 15:50:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826683.1241028; Mon, 28 Oct 2024 15: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 1t5S0K-0008Qw-4m; Mon, 28 Oct 2024 15:50:04 +0000
Received: by outflank-mailman (input) for mailman id 826683;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0I-000874-IH
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:02 +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 4aa7bcf2-9544-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:50:01 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2fb51e00c05so64668321fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:01 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4aa7bcf2-9544-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130601; x=1730735401; 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=DPLr0d8FwquAzKliN25Vvro3xH1NV3dTjQJhxaKuYlk=;
        b=gg2fIKTVONMRK8myfgOs7owVeKPQ27ZCGdE91TUesEJtkiR1SiIKRuhiA6JvGwCC+t
         oG1tHdzrwSwXGNeiI7HQ9Xx/V9PGL3VM86T7Aq4VFG4znGP51Kj8fLLnn5Ojtn4BZbam
         jUfawQoVqsmEVCBMrTP6bmYQtr1TvEjtfTZBs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130601; x=1730735401;
        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=DPLr0d8FwquAzKliN25Vvro3xH1NV3dTjQJhxaKuYlk=;
        b=hsCU2tBbStOk+vT0f9ivOVa4bNY0aMh1HlkQ18zxVLs2sZvty+1jmisAMxidXOel68
         VaRSx1yzkWn2EGJR0+sPYgdY6aLJWcKdmx/vLIHbze3Q/YlYPcfRZrkg9JciJTC/KReb
         h2H8rjAs9sb14eKEFOkvCl0H4m/qfbYgNGVF3Wv1nteB1aJNYmAKl3SgY5Pvw8KFeO0a
         8yE1DeWLj3rRqK9LXJKssJbuvN6bZ4uvB9LWyf/hafIEcz+1GuMhTUzZaWq26hSMErOm
         r6xZqdKby+l93wgcPRCRpPGzIk4GjGZgFWMzAxD4GwwYnyn8o3OtiCfjlvoQgWajE9Aa
         aGRw==
X-Gm-Message-State: AOJu0Yxff1ThNwvqEzoTzNtaYmyelF5LEGvEchkJrxkAXVTzLJxycIYS
	wX2mbYN49qKYd0aWJJiJ4nC0udcb90AmeJFEmEpJyS31QmHTWoGlGSU/P9Ahjc+aIhsJKEDdRsa
	Z
X-Google-Smtp-Source: AGHT+IFtmzmZV5fwObpGT1d2ilRoYu6/BvAiUMHd9PeBKgHP0k7Y5B9lU5THnhultSOFDHtQezy2ng==
X-Received: by 2002:a2e:2403:0:b0:2fb:357a:be4d with SMTP id 38308e7fff4ca-2fcbe0a35aemr45594251fa.43.1730130600675;
        Mon, 28 Oct 2024 08:50:00 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 01/14] x86/xstate: Update stale assertions in fpu_x{rstor,save}()
Date: Mon, 28 Oct 2024 15:49:19 +0000
Message-ID: <20241028154932.6797-2-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The asserts' intent was to establish whether the xsave instruction was
usable or not, which at the time was strictly given by the presence of
the xsave area. After edb48e76458b("x86/fpu: Combine fpu_ctxt and
xsave_area in arch_vcpu"), that area is always present a more relevant
assert is that the host supports XSAVE.

Fixes: edb48e76458b("x86/fpu: Combine fpu_ctxt and xsave_area in arch_vcpu")
Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
I'd also be ok with removing the assertions altogether. They serve very
little purpose there after the merge of xsave and fpu_ctxt.
---
 xen/arch/x86/i387.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index 83f9b2502bff..375a8274f632 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -24,7 +24,7 @@ static inline void fpu_xrstor(struct vcpu *v, uint64_t mask)
 {
     bool ok;
 
-    ASSERT(v->arch.xsave_area);
+    ASSERT(cpu_has_xsave);
     /*
      * XCR0 normally represents what guest OS set. In case of Xen itself,
      * we set the accumulated feature mask before doing save/restore.
@@ -136,7 +136,7 @@ static inline void fpu_xsave(struct vcpu *v)
     uint64_t mask = vcpu_xsave_mask(v);
 
     ASSERT(mask);
-    ASSERT(v->arch.xsave_area);
+    ASSERT(cpu_has_xsave);
     /*
      * XCR0 normally represents what guest OS set. In case of Xen itself,
      * we set the accumulated feature mask before doing save/restore.
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826684.1241034 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0K-0008Tb-Ia; Mon, 28 Oct 2024 15:50:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826684.1241034; Mon, 28 Oct 2024 15: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 1t5S0K-0008SS-CG; Mon, 28 Oct 2024 15:50:04 +0000
Received: by outflank-mailman (input) for mailman id 826684;
 Mon, 28 Oct 2024 15: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0J-000874-CJ
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:03 +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 4b65b92e-9544-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:50:02 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9a0ec0a94fso626989766b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:02 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4b65b92e-9544-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130602; x=1730735402; 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=W4k/sSFYh0TQGRGsfutUPLlHi3zFXSiHFIADoMp0Wgc=;
        b=BxWtNzFoQZNttH0ufX5ixSCfo0bNSsdzdMNnnPbFIpaX3Y6eHjsQ/cKNWZIEb/Zn1f
         jponcH4WEeTDUrk07DJlbr7JP5l15KSgkJU322j4NpBqQ5PshEQWGWVmMO2unOjlKxro
         q4P+10Q+vp16Lqxs/rKh7cELfOlvt8neUAJCc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130602; x=1730735402;
        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=W4k/sSFYh0TQGRGsfutUPLlHi3zFXSiHFIADoMp0Wgc=;
        b=klddmtkyWV0aKfxl62CM1t9UP4SQQ7dGEGslf5AiFPHxVByXwPtdL2cXSb0w97tnTm
         IoQbT3JDsUWlNzXgLtiP7i62z/kswLmnjTfA3o4o2nwX2bl0ofb3H2rRGLYZBns6Xk8h
         hJsKk2vv/NwTZk1J4ePTBlYOBHR2WHriDHRw/T9hGxWgUJ/q7M1jSiXgJx/lx5TFBv3X
         kfiXWiAU9uMbnl9B4LKXhMiPIE3Gtgxv1r5CzCcZtYiZnQLvpXmAyWp2Y6qpFdT6q/1o
         WcsL/7/VxNv5GLblatE1dVIItDLgnOq6YwuqcXTkubTdAl80KH0skOmyh/bUxNCgY1mv
         w0WA==
X-Gm-Message-State: AOJu0YyJFAno/gd+8XkRqqwlwvEgT2F7iWLQYjBcJhhJToVywNdesZU+
	huKbyctdDv9js675akeLjL+uVQtHI6KVs34YLz4ijtOpJbSdaYLdEOfXYS9/BZfZ7SemX878K4e
	K
X-Google-Smtp-Source: AGHT+IHjJ9oGe3akrkidsj5uCSXKoT5jpDGsKnM6W6RXB7stLEvw/7zR2nEMIrzcFYIyPwxWLJL/dw==
X-Received: by 2002:a17:907:7b93:b0:a9a:b70:2a7c with SMTP id a640c23a62f3a-a9de5f3f87cmr634499366b.25.1730130601572;
        Mon, 28 Oct 2024 08:50:01 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave areas
Date: Mon, 28 Oct 2024 15:49:20 +0000
Message-ID: <20241028154932.6797-3-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add infrastructure to simplify ASI handling. With ASI in the picture
we'll have several different means of accessing the XSAVE area of a
given vCPU, depending on whether a domain is covered by ASI or not and
whether the vCPU is question is scheduled on the current pCPU or not.

Having these complexities exposed at the call sites becomes unwieldy
very fast. These wrappers are intended to be used in a similar way to
map_domain_page() and unmap_domain_page(); The map operation will
dispatch the appropriate pointer for each case in a future patch, while
unmap will remain a no-op where no unmap is required (e.g: when there's
no ASI) and remove the transient maping if one was required.

Follow-up patches replace all uses of raw v->arch.xsave_area by this
mechanism in preparation to add the beforementioned dispatch logic to be
added at a later time.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/include/asm/xstate.h | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index 07017cc4edfd..36260459667c 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu *v)
            (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
 }
 
+/*
+ * Fetch a pointer to the XSAVE area of a vCPU
+ *
+ * If ASI is enabled for the domain, this mapping is pCPU-local.
+ *
+ * @param v Owner of the XSAVE area
+ */
+#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
+
+/*
+ * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.
+ *
+ * If ASI is enabled and v is not the currently scheduled vCPU then the
+ * per-pCPU mapping is removed from the address space.
+ *
+ * @param v           vCPU logically owning xsave_area
+ * @param xsave_area  XSAVE blob of v
+ */
+#define vcpu_unmap_xsave_area(v, x) ({ (x) = NULL; })
+
 #endif /* __ASM_XSTATE_H */
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826685.1241039 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0K-00006t-Qh; Mon, 28 Oct 2024 15:50:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826685.1241039; Mon, 28 Oct 2024 15: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 1t5S0K-00005H-K2; Mon, 28 Oct 2024 15:50:04 +0000
Received: by outflank-mailman (input) for mailman id 826685;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0J-0008FV-Bx
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:03 +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 4a4527a6-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:00 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a99f629a7aaso711148666b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:00 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.49.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:49:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a4527a6-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130600; x=1730735400; 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=czbuFAPZSDRqGdAkOsiYgLR3DREhnvnkdIK4ff9uSdE=;
        b=XRDbTsyhMX8Qdk8qIV64prBU5LXICbCHhY6Q+WmKPTWIR7HeBWn18/TAqhjXvJyYEV
         4HYF2IpjnEERvUiZviWC8NHZlNbYQVJF/ipaVMN9oMU5fcyuTLmYkaiAekzOv8mX4jmq
         5l6/JwldWXSB43caWeVrn5C4qwPyNcZNEPxCo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130600; x=1730735400;
        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=czbuFAPZSDRqGdAkOsiYgLR3DREhnvnkdIK4ff9uSdE=;
        b=lD7mdNjgyiOMvjNdS3DhGkTxgS3fs2KxFjEka59qTmFA5xW9Avlu0FjtThyuJvMAqp
         N7s05ay/iGuVFgQ7RVPtazeN5eGgD/YJEcoUnEEq/rrrAp/XQrK4Qr6OCt+z0N6Yy9h+
         rN0RTGGC+fBd/XnVAmsFo2kS1Yu1n8KKX+AIwQlzb69+nddGGLeSDVljBkjKN5YH/o9B
         MOulLxrvNpG9kJ7WkZHV9GQu84M7TVQew1Mg647UdPNLgaS52tZ87CCGSEzdjDR1PomC
         Y0WCbqRKG9QcVkWLfXH8hP9rDSM+SzLtzGQwm8RwtXHz9JZpxsjkM+/Y/RoDOhB491Y4
         Cqfw==
X-Gm-Message-State: AOJu0YyiRmSV2QY66xxc5Mt2RJqZygkyhUFGEayDkVA+N9guQZI0iq/l
	nYzcHQ4W0CzVQN8qQCVLLHmJsquI7GeZ0j9f6PdI0rqGZyzGyIk5Y5qU6fM6rL1Z+JKNtd1lqT2
	L
X-Google-Smtp-Source: AGHT+IFGIdHAltL2XtMni+KJgXHV9/KCZ+WGVeJ9Y/UGlpHDeZfbzt3Wo7J2VZoi5e8szL+LzaFZAA==
X-Received: by 2002:a17:907:ea3:b0:a99:f9fa:5c01 with SMTP id a640c23a62f3a-a9e22b3b53amr3734166b.32.1730130599962;
        Mon, 28 Oct 2024 08:49:59 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>,
	"Elias El Yandouzi" <eliasely@amazon.com>,
	"Julien Grall" <julien@xen.org>
Subject: [PATCH 00/14] x86: Address Space Isolation FPU preparations
Date: Mon, 28 Oct 2024 15:49:18 +0000
Message-ID: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

In a Xen build with Address Space Isolation the FPU state cannot come from the
xenheap, as that means the FPU state of vCPU_A may be speculatively accesible
from any pCPU running a hypercall on behalf of vCPU_B. This series prepares
code that manipulates the FPU state to use wrappers that fetch said state from
"elsewhere"[1]. Those wrappers will crystalise into something more than dummy
accesors after existing ASI efforts are merged. So far, they are:

  a) Remove the directmap (Elias El Yadouzi):
  https://lore.kernel.org/xen-devel/20240513134046.82605-1-eliasely@amazon.com/

    Removes all confidential data pages from the directmap and sets up the
    infrastructure to access them. Its trust boundary is the domain and builds
    the foundations of the secret hiding API around {un,}map_domain_page().

  b) x86: adventures in Address Space Isolation (Roger Pau Monne):
  https://lore.kernel.org/xen-devel/20240726152206.28411-1-roger.pau@citrix.com/

    Extends (a) to put the trust boundary at the vCPU instead so the threat
    model covers mutually distrustful vCPUs of the same domain. Extends the
    API for secret hiding to provide private pCPU-local resources. And an
    efficient means of accessing resources of the "current" vCPU.

In essence, the idea is to stop directly accessing a pointer in the vCPU
structure and instead collect it indirectly via a macro invocation. The
proposed API is a map/unmap pair in order to tame the complexity involved in
the various cases uniformly (Does the domain run with ASI enabled? Is the vCPU
"current"? Are we lazy-switching?).

The series is somewhat long, but each patch is fairly trivial. If need be, I
can fold back a lot of these onto single commits to make it shorter.

  * Patch 1 refreshes of a couple of asserts back into something helpful. Can
    be folded onto patches 12 and 13 if deemed too silly for a Fixes tag.

  * Patch 2 is the introduction of the wrappers in isolation.

  * Patches 3 - 10 are split for ease of review, but are conceptually the same
    thing over and over (to stop using direct v->arch.xsave_area and to use
    wrappers instead).

  * Patch 11 cleans the idle vcpu state after using it as dumping groung. It's
    not strictly required for this series, but I'm bound to forget to do it
    later after we _do_ care and does no harm to do it now. It's otherwise
    independent of the other patches (it clashes with 10, but only due to both
    modifying the same code; it's conceptually independent).

  * Patches 12 and 13 bite the bullet and enlightens the (f)xsave and (f)xrstor
    abstractions to use the wrappers rather than direct access.

  * Patches 14 is the last remaining direct use xsave area. It's too tricky to
    introduce ahead of patches 12 and 13 because they need state passed not
    available until those have gone in.

[1] That "elsewhere" will be with high likelihood either the directmap (on
non-ASI), some perma-mapped vCPU-local area (see series (b) at the top) or
implemented as a transient mapping in the style of {un,}map_domain_page() for
glacially cold accesses to non-current vCPUs. Importantly, writing the final
macros involve the other series going in.

Alejandro Vallejo (14):
  x86/xstate: Update stale assertions in fpu_x{rstor,save}()
  x86/xstate: Create map/unmap primitives for xsave areas
  x86/hvm: Map/unmap xsave area in hvm_save_cpu_ctxt()
  x86/fpu: Map/umap xsave area in vcpu_{reset,setup}_fpu()
  x86/xstate: Map/unmap xsave area in xstate_set_init() and
    handle_setbv()
  x86/hvm: Map/unmap xsave area in hvmemul_{get,put}_fpu()
  x86/domctl: Map/unmap xsave area in arch_get_info_guest()
  x86/xstate: Map/unmap xsave area in {compress,expand}_xsave_states()
  x86/emulator: Refactor FXSAVE_AREA to use wrappers
  x86/mpx: Map/unmap xsave area in in read_bndcfgu()
  x86/mpx: Adjust read_bndcfgu() to clean after itself
  x86/fpu: Pass explicit xsave areas to fpu_(f)xsave()
  x86/fpu: Pass explicit xsave areas to fpu_(f)xrstor()
  x86/xstate: Make xstate_all() and vcpu_xsave_mask() take explicit
    xstate

 xen/arch/x86/domctl.c             |  9 +++--
 xen/arch/x86/hvm/emulate.c        | 10 ++++-
 xen/arch/x86/hvm/hvm.c            |  8 ++--
 xen/arch/x86/i387.c               | 67 ++++++++++++++++++++-----------
 xen/arch/x86/include/asm/xstate.h | 29 +++++++++++--
 xen/arch/x86/x86_emulate/blk.c    | 10 ++++-
 xen/arch/x86/xstate.c             | 51 ++++++++++++++++-------
 7 files changed, 130 insertions(+), 54 deletions(-)

-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826688.1241074 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0N-0001FH-SF; Mon, 28 Oct 2024 15:50:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826688.1241074; Mon, 28 Oct 2024 15: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 1t5S0N-0001DL-Li; Mon, 28 Oct 2024 15:50:07 +0000
Received: by outflank-mailman (input) for mailman id 826688;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0L-0008FV-Ho
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:05 +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 4c1752b5-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:04 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c95a962c2bso5541659a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:04 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c1752b5-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130603; x=1730735403; 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=hY/UrTCQ/vWU0sbBxlJ8N5ALQVl83VMvY6/kdegt+f8=;
        b=FJek+/D7mp0vn/T9HA2IbH50c731yiPg9/cjRpNDHKVx86eIvfLiQCvPG6ahNtbUR+
         LV7oC4/RKRTUDyAy5j7XOQWW2/x5xlP4qma3T/3g1QZmlsJoWf7ltftn2eChnOZ7KCRs
         MqYziWqu8Jj3YWUyg7HFH6gYg339cTt96FkkU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130603; x=1730735403;
        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=hY/UrTCQ/vWU0sbBxlJ8N5ALQVl83VMvY6/kdegt+f8=;
        b=Gly7dzCclPefjZNsd5+p9WUx8CvJxkN8DiUEr2eJGUEJt7iJUosNzK4tOs8t9SSWX4
         FVzZn86SbHWOAsdjVnHQnsT8VnkWgD4CeazcBLqmVkgozhoxhU5UsWnEHTug0R2r6pJb
         hOkUz7N3zQnNHm7FdN/7sembCbiKxNhlfa/zxRbbG+/k/MYOxNX0iQsaXTc5YzDpOKj5
         QAvDszfa8bbB/a9xg9hJgkejWY5Fh7h4PdB+2ugmt2JXUku210uXfVja7XtOpA0Ye2z1
         PoXtiPJp0Rrkhc44bYMX67tr9y8hd9KlKpfkTIAu1aJ7l9mpNlwML0HCX9bkYeAlYSDS
         2YbQ==
X-Gm-Message-State: AOJu0Yw5CAF7kEtNNwPRUTikoCYELzfx9gBKc61yed043r8CmPbM01TS
	5fAKIKLMjvwHTAWkZacqqwDD+6viRlVyXQpB189EHrOV2WU2YKWl9/XAYfp/mg9LCkGNHky2Ca3
	r
X-Google-Smtp-Source: AGHT+IG6StWqjpAO8DYedOrCCnEILK72ffLHyWgeM9Uz/5/G68jTWsMGvKh3D3LSCUH1wOiNDrZUFg==
X-Received: by 2002:a17:906:6a1d:b0:a9a:4f78:b8 with SMTP id a640c23a62f3a-a9de5c922c6mr748802166b.2.1730130603202;
        Mon, 28 Oct 2024 08:50:03 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 04/14] x86/fpu: Map/umap xsave area in vcpu_{reset,setup}_fpu()
Date: Mon, 28 Oct 2024 15:49:22 +0000
Message-ID: <20241028154932.6797-5-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/i387.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index 375a8274f632..a571bcb23c91 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -306,8 +306,10 @@ int vcpu_init_fpu(struct vcpu *v)
 
 void vcpu_reset_fpu(struct vcpu *v)
 {
+    struct xsave_struct *xsave_area = vcpu_map_xsave_area(v);
+
     v->fpu_initialised = false;
-    *v->arch.xsave_area = (struct xsave_struct) {
+    *xsave_area = (struct xsave_struct) {
         .fpu_sse = {
             .mxcsr = MXCSR_DEFAULT,
             .fcw = FCW_RESET,
@@ -315,15 +317,21 @@ void vcpu_reset_fpu(struct vcpu *v)
         },
         .xsave_hdr.xstate_bv = X86_XCR0_X87,
     };
+
+    vcpu_unmap_xsave_area(v, xsave_area);
 }
 
 void vcpu_setup_fpu(struct vcpu *v, const void *data)
 {
+    struct xsave_struct *xsave_area = vcpu_map_xsave_area(v);
+
     v->fpu_initialised = true;
-    *v->arch.xsave_area = (struct xsave_struct) {
+    *xsave_area = (struct xsave_struct) {
         .fpu_sse = *(const fpusse_t*)data,
         .xsave_hdr.xstate_bv = XSTATE_FP_SSE,
     };
+
+    vcpu_unmap_xsave_area(v, xsave_area);
 }
 
 /* Free FPU's context save area */
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826689.1241080 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0O-0001Mn-Di; Mon, 28 Oct 2024 15:50:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826689.1241080; Mon, 28 Oct 2024 15:50: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 1t5S0O-0001LM-1s; Mon, 28 Oct 2024 15:50:08 +0000
Received: by outflank-mailman (input) for mailman id 826689;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0N-0008FV-8j
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:07 +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 4d1cebc9-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:05 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9a0c40849cso731818966b.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:05 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4d1cebc9-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130605; x=1730735405; 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=vCUIaO5AAUJAl3VVRobAf52t1sH+3QDwfli/NHe1tzs=;
        b=cPAtnkReW2GjHosOwvGsYwTAOkydWbo96UeTiSRlrVpqo0ohTY7mlvtyCtkOmsJBQ3
         fArpT3883r5gOsdxp8WGro8N70BJm/WjoPY00+e7QqHo6Pv+/lEugBsO5yeW+rDqM7yn
         EPbZz0GQVoKc0MtE8UOZ5gDe+0PH9RT+WTscI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130605; x=1730735405;
        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=vCUIaO5AAUJAl3VVRobAf52t1sH+3QDwfli/NHe1tzs=;
        b=N4hcVtIKytbjnAVWOvodSrxKqnO4wiuJwBoE62VGnbUPUtihz171+ZEZoZFZSpGdNS
         HDwV5sF/6ovR8he9Y5KDbqCKhfACwnsbPT58EQS/97OTGk4LR/YezEA3iu6ic2aeUF3A
         BbBVhY8HZl7XoR3UE4kahX1CGgjH8k5h7Jl7ieMftzTa6mtjDwPm4+l7OebeQPxHvPHi
         Nr9ApgCJ1+zM8srdR+x7iGq/Tcg3jOzYoaTPn5JGoVSCxvIS7lQrJ4k6HQONpZ6s1o7w
         I8A/NK62uznZa7f7IVAdDGVpxhMx7Gv3LuzdLygnPdiTfiQX+oH5WjR4hEgtY7qJnLVX
         eCEg==
X-Gm-Message-State: AOJu0YyP4/foT71RTzdS+VPqXxhcAdyGmVoIb0gGzM9yg/Hr5H2td4Om
	LD6Qpm5/5Bg8PJdBVdSX377vKwqXCxkexWjZaGAG7g1GXV4Pa1ZyU56YoDUmAAL/Q8jDQcfgw8c
	f
X-Google-Smtp-Source: AGHT+IE5VF1LUnql9xYflHwCakwiEC09wAgohLGgcWNnxyhKcGI4YZSpn8NZ2zgcm3u36Kdyu5zrtg==
X-Received: by 2002:a17:906:794f:b0:a9a:4597:a7f3 with SMTP id a640c23a62f3a-a9de619876amr890640466b.62.1730130604948;
        Mon, 28 Oct 2024 08:50:04 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 06/14] x86/hvm: Map/unmap xsave area in hvmemul_{get,put}_fpu()
Date: Mon, 28 Oct 2024 15:49:24 +0000
Message-ID: <20241028154932.6797-7-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/hvm/emulate.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index f2bc6967dfcb..a6ddc9928f16 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2371,7 +2371,8 @@ static int cf_check hvmemul_get_fpu(
         alternative_vcall(hvm_funcs.fpu_dirty_intercept);
     else if ( type == X86EMUL_FPU_fpu )
     {
-        const fpusse_t *fpu_ctxt = &curr->arch.xsave_area->fpu_sse;
+        const struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
+        const fpusse_t *fpu_ctxt = &xsave_area->fpu_sse;
 
         /*
          * Latch current register state so that we can back out changes
@@ -2397,6 +2398,8 @@ static int cf_check hvmemul_get_fpu(
             else
                 ASSERT(fcw == fpu_ctxt->fcw);
         }
+
+        vcpu_unmap_xsave_area(curr, xsave_area);
     }
 
     return X86EMUL_OKAY;
@@ -2411,7 +2414,8 @@ static void cf_check hvmemul_put_fpu(
 
     if ( aux )
     {
-        fpusse_t *fpu_ctxt = &curr->arch.xsave_area->fpu_sse;
+        struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
+        fpusse_t *fpu_ctxt = &xsave_area->fpu_sse;
         bool dval = aux->dval;
         int mode = hvm_guest_x86_mode(curr);
 
@@ -2465,6 +2469,8 @@ static void cf_check hvmemul_put_fpu(
 
         fpu_ctxt->fop = aux->op;
 
+        vcpu_unmap_xsave_area(curr, xsave_area);
+
         /* Re-use backout code below. */
         backout = X86EMUL_FPU_fpu;
     }
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826690.1241099 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0Q-00024d-OI; Mon, 28 Oct 2024 15:50:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826690.1241099; Mon, 28 Oct 2024 15:50: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 1t5S0Q-00024G-H7; Mon, 28 Oct 2024 15:50:10 +0000
Received: by outflank-mailman (input) for mailman id 826690;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0O-0008FV-4H
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:08 +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 4d9fdbdc-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:06 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso650080766b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:06 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4d9fdbdc-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130606; x=1730735406; 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=JVXYPJCZuoH2OyHtUDCKgOdo7as5qgDULzyHGXZW2OE=;
        b=KoA5DhtSDYIPAB10JQZX7D80uvfd8+uvgt/7MlWoNTJfqFS/K2fzpWOa7u9eDyrymC
         0M7w38WkzG2xoxquTQ8Torm1TG2WNdOgAVNgS7TFSmcSztZrajMnmMsjEO+TEw7Q5ptv
         wN6y1Vrp6bTDpHKXdA9UPZ6IhAO2NQg2ic9jI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130606; x=1730735406;
        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=JVXYPJCZuoH2OyHtUDCKgOdo7as5qgDULzyHGXZW2OE=;
        b=g6tEpy0boAdqpfs6G9s3xHEpR3IsYVUdWuPQDQaskkqRLHjc4kyQqsnBgz5zhnkCyd
         6PBHFpwlwJ/k6duzYcBInVcGa0tKzGWBMkN/UY9SiYvEcGy1n4p0LS1JoZk0z7/ZYBdp
         fhNwYbJgNF6bhLgIfFYKnmiJaKdJ94MJo7v3ePP0jvfT9qADMvzM+bb8OFaePczcw2HM
         hf0hjb2bYBqBc+eY9ITVtaHvVSfukDlnslrZLqTdpVqFan9DvdMJmErLUmWX3qoGTtu8
         iVCiB7bVzMPQSB7zz6vwYjhYtov5kXewaKWokHQND4txDgW3pFUEWwsIHPfauU5JsFY9
         Y92A==
X-Gm-Message-State: AOJu0Ywds2uNAI+x90MVtOW+PlPo1XnbZZR5drY8nbdpcBjgZ9FEs5L0
	A9cGSwDbkA41sVVsW22c/7x3IM2Shd94bTYTMuQ0Y/gFdg5mytFTtttknJkmQwqstJVYlMpYikn
	V
X-Google-Smtp-Source: AGHT+IGx8bTDgJ193xI9eWu9eQdCHqvY2+04eGQudCrPjMKopwDOW6yd3cRVje2O0p1v6XvFRnf9/Q==
X-Received: by 2002:a17:907:728d:b0:a86:8e3d:86e2 with SMTP id a640c23a62f3a-a9de5d6e1f2mr935295266b.11.1730130605742;
        Mon, 28 Oct 2024 08:50:05 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 07/14] x86/domctl: Map/unmap xsave area in arch_get_info_guest()
Date: Mon, 28 Oct 2024 15:49:25 +0000
Message-ID: <20241028154932.6797-8-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/domctl.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 5f01111619da..8f6075bc84b8 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -1377,16 +1377,17 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
     unsigned int i;
     const struct domain *d = v->domain;
     bool compat = is_pv_32bit_domain(d);
+    const struct xsave_struct *xsave_area;
 #ifdef CONFIG_COMPAT
 #define c(fld) (!compat ? (c.nat->fld) : (c.cmp->fld))
 #else
 #define c(fld) (c.nat->fld)
 #endif
 
-    BUILD_BUG_ON(sizeof(c.nat->fpu_ctxt) !=
-                 sizeof(v->arch.xsave_area->fpu_sse));
-    memcpy(&c.nat->fpu_ctxt, &v->arch.xsave_area->fpu_sse,
-           sizeof(c.nat->fpu_ctxt));
+    xsave_area = vcpu_map_xsave_area(v);
+    BUILD_BUG_ON(sizeof(c.nat->fpu_ctxt) != sizeof(xsave_area->fpu_sse));
+    memcpy(&c.nat->fpu_ctxt, &xsave_area->fpu_sse, sizeof(c.nat->fpu_ctxt));
+    vcpu_unmap_xsave_area(v, xsave_area);
 
     if ( is_pv_domain(d) )
         c(flags = v->arch.pv.vgc_flags & ~(VGCF_i387_valid|VGCF_in_kernel));
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826691.1241104 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0R-00028F-BJ; Mon, 28 Oct 2024 15:50:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826691.1241104; Mon, 28 Oct 2024 15:50: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 1t5S0Q-000275-UF; Mon, 28 Oct 2024 15:50:10 +0000
Received: by outflank-mailman (input) for mailman id 826691;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0O-0008FV-VJ
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:08 +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 4e1db68c-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:07 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c94c4ad9d8so5620233a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:07 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4e1db68c-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130606; x=1730735406; 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/RnzlnP3G9CO4SusiLr8zIyIe7394ke2U9MPNKtXhg=;
        b=O6XncR+HGoONTeR42svBZ0ktT0A85b789pK57ek5U/GAixGKJXujbWwjw9nkBW7atJ
         E+8QGGRa59byB6cRLD+bfnrFDnyErhV2KEtNk4ZtLc1jJvvLbkWTXUQ4lg69M0FHh+8H
         fbpHHfJAz6J2QTucGCIaS99WJSFJwmdpLafws=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130606; x=1730735406;
        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/RnzlnP3G9CO4SusiLr8zIyIe7394ke2U9MPNKtXhg=;
        b=fjOaHjEDKc5WZbpGqFBKawuhqLonz1biXHN6jA1fQu7GzXBgLovfxS+6Wd7vQZak09
         C2f1FjP3GNp8uuDKMbJZke2iOhQmK9e/fPPQi9kus1tyGoyweLQGNAnaXgaIN3DgGm6+
         VBvf7VHvwCdXRxd6aX2NxHWy3onbzIp9UMAlnHqjfLJHu94AztgAyL0Xz5et11dt2haG
         dAXpq6nBwVCILDLf+ncOSduCpFEuAIIU2qCvJ/LJR/iFZAxYAan+/dElVaHWe+/w6F+D
         LtQZS2FXEiK7KROOaxVxsS7mlJH90vn9un0f94IEU8CCJ8Xu5M1juZyXrBsCnzRw4hHs
         eQKQ==
X-Gm-Message-State: AOJu0YyxCj21mw8JApE8W75wUXKKiPtZ9kqdelPpmNW4FKUNoylk6Ulw
	akJ0FP8FKbXbcKPE0uC8dQPK9w+wz6TgzovP69QkAqnayF6I+tOAU8hRGgjDhjuMzc5DDt6shgt
	L
X-Google-Smtp-Source: AGHT+IEKmbjye0E8XCJyiovjf17ficSIKt+h3itpmbWhUSPk51uXP6fJi6EvzMuZ6L65ZsGREr72qw==
X-Received: by 2002:a17:907:31cb:b0:a9a:3cf:cdb8 with SMTP id a640c23a62f3a-a9de5f72a86mr852630566b.36.1730130606628;
        Mon, 28 Oct 2024 08:50:06 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 08/14] x86/xstate: Map/unmap xsave area in {compress,expand}_xsave_states()
Date: Mon, 28 Oct 2024 15:49:26 +0000
Message-ID: <20241028154932.6797-9-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/xstate.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 60e752a245ca..4019ca4aae83 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -177,7 +177,7 @@ static void setup_xstate_comp(uint16_t *comp_offsets,
  */
 void expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size)
 {
-    const struct xsave_struct *xstate = v->arch.xsave_area;
+    const struct xsave_struct *xstate = vcpu_map_xsave_area(v);
     const void *src;
     uint16_t comp_offsets[sizeof(xfeature_mask)*8];
     u64 xstate_bv = xstate->xsave_hdr.xstate_bv;
@@ -228,6 +228,8 @@ void expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size)
 
         valid &= ~feature;
     }
+
+    vcpu_unmap_xsave_area(v, xstate);
 }
 
 /*
@@ -242,7 +244,7 @@ void expand_xsave_states(const struct vcpu *v, void *dest, unsigned int size)
  */
 void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
 {
-    struct xsave_struct *xstate = v->arch.xsave_area;
+    struct xsave_struct *xstate = vcpu_map_xsave_area(v);
     void *dest;
     uint16_t comp_offsets[sizeof(xfeature_mask)*8];
     u64 xstate_bv, valid;
@@ -294,6 +296,8 @@ void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
 
         valid &= ~feature;
     }
+
+    vcpu_unmap_xsave_area(v, xstate);
 }
 
 void xsave(struct vcpu *v, uint64_t mask)
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826692.1241109 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0S-0002GO-7b; Mon, 28 Oct 2024 15:50:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826692.1241109; Mon, 28 Oct 2024 15:50: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 1t5S0R-0002D9-Ju; Mon, 28 Oct 2024 15:50:11 +0000
Received: by outflank-mailman (input) for mailman id 826692;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0P-0008FV-QF
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:09 +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 4e98f673-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:08 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a86e9db75b9so669331866b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:08 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4e98f673-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130607; x=1730735407; 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=BVQr91XZlcFHKTZl1uI+zUZ3+gisoPjkP7pJQrXj6Go=;
        b=MfUNumKTljT6wgPlIt4UNi9ZUHNwx1vhLw7gMn085JDV8UNVsrwSrX0gj5+wstiwu/
         mP/SE7tJQRYMxLonKrfqlnXiyN9EtudWe5Z847+ml74LkFUEUaYCa0utvUeHi6ZMvShy
         6Jsya90FcYEkhBdMbRHaKLf74XfarQxRmk1hk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130607; x=1730735407;
        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=BVQr91XZlcFHKTZl1uI+zUZ3+gisoPjkP7pJQrXj6Go=;
        b=CTjod5ch/PrC5Uf1C7o6jOGRL/D07GYQjU0CIu9wtUe1oVDa/jhIp2qhbdoReRxD2f
         TDv7/bp+Aa6aKzev7B/alXJhV0ObnzYCCdiTVz7kOsHEtZTExdpGiZJdQvPXoHs51p7b
         a7mgKO8hC59S4i2YwPW7utTkqdlvLpkjh83rT96uxXIw05oczZ7BFEXtoHxyVTvpcZCH
         1M3358w9sybvfp6Uwo2jVJhTWLuOFcv2OQINx/URp58mk97AGz8UeIzq5UpUjZS29vuO
         aRa+AonMHCRKv/Q4BYeDmR8QdK3Z0aNFtA4d7D9Ns/FDNGC+AB7Hto4aV/BmNClblNpw
         OG7Q==
X-Gm-Message-State: AOJu0YycqrhH9E8bvTIi8y1ESat1PLdBlKXiectz8x2WUKeAoM4UwZzs
	70Cn93Lip5afnjVnJ5iRcDT1DnkyHR3RQtxWm3N1g6UbJj/CZHvGzEv6MYCgCe4HF31lq+5nVfS
	q
X-Google-Smtp-Source: AGHT+IE9C6AE9q4nMjRt1C+VfW2rH9XoLb9J6ZQJla+EMe54GmyWuVpV1KfcGJcfCKDpZX5aG3UOew==
X-Received: by 2002:a17:907:1c9d:b0:a99:ed2e:3875 with SMTP id a640c23a62f3a-a9de615ece4mr713802766b.42.1730130607479;
        Mon, 28 Oct 2024 08:50:07 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 09/14] x86/emulator: Refactor FXSAVE_AREA to use wrappers
Date: Mon, 28 Oct 2024 15:49:27 +0000
Message-ID: <20241028154932.6797-10-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Adds an UNMAP primitive to make use of vcpu_unmap_xsave_area() when
linked into xen. unmap is a no-op during tests.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/x86_emulate/blk.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/x86_emulate/blk.c b/xen/arch/x86/x86_emulate/blk.c
index 08a05f8453f7..d5b59333823f 100644
--- a/xen/arch/x86/x86_emulate/blk.c
+++ b/xen/arch/x86/x86_emulate/blk.c
@@ -11,9 +11,11 @@
     !defined(X86EMUL_NO_SIMD)
 # ifdef __XEN__
 #  include <asm/xstate.h>
-#  define FXSAVE_AREA ((void *)&current->arch.xsave_area->fpu_sse)
+#  define FXSAVE_AREA ((void *)vcpu_map_xsave_area(current))
+#  define UNMAP_FXSAVE_AREA(x) vcpu_unmap_xsave_area(currt ent, x)
 # else
 #  define FXSAVE_AREA get_fpu_save_area()
+#  define UNMAP_FXSAVE_AREA(x) ((void)x)
 # endif
 #endif
 
@@ -292,6 +294,9 @@ int x86_emul_blk(
         }
         else
             asm volatile ( "fxrstor %0" :: "m" (*fxsr) );
+
+        UNMAP_FXSAVE_AREA(fxsr);
+
         break;
     }
 
@@ -320,6 +325,9 @@ int x86_emul_blk(
 
         if ( fxsr != ptr ) /* i.e. s->op_bytes < sizeof(*fxsr) */
             memcpy(ptr, fxsr, s->op_bytes);
+
+        UNMAP_FXSAVE_AREA(fxsr);
+
         break;
     }
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826693.1241115 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0S-0002Pa-NN; Mon, 28 Oct 2024 15:50:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826693.1241115; Mon, 28 Oct 2024 15:50: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 1t5S0S-0002Lh-F0; Mon, 28 Oct 2024 15:50:12 +0000
Received: by outflank-mailman (input) for mailman id 826693;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0Q-0008FV-TX
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:10 +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 4f3340e9-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:09 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a9a156513a1so696754166b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:09 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f3340e9-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130608; x=1730735408; 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=Avz5HmUUjPMBeZFfQQx+SO7GKCNtStFnZFq73+xyyr8=;
        b=fGBlgYXj4aQ4LFrwVgbw+qOOp7iTsL3BI/zt8K1okiw4iXpEd8PN2i5JVyRPXy1Pdd
         dKtik0MWxssAdblNUvu+RGlKMDFLr6kcnYrPou2m6NQSa9bprIwfy0mJjgVXmFXvyekA
         TvQKrRuwXoJDKTZ6tos1qFRgJesa0/6R78JoM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130608; x=1730735408;
        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=Avz5HmUUjPMBeZFfQQx+SO7GKCNtStFnZFq73+xyyr8=;
        b=XlNoRR0On38H49KC0KvBpWVLZ2hnjqw9a+4h4gFRwFmuxVkOdS1Gzhu1gTKIM4relk
         G6l6JOqtWc3DRwuHlj36zR8B77ynoxnVKrOqXDgq26Yh5ZqnA78ShmZtEzHF2q3hnPuU
         VeLqwlbdu+0De3wTG/9vu0Y2JxIZNM64urz7co3h/wKhpldhi4AUG9AHnOLp5H7vdtzg
         xjT9aIub4xoKSNvDNNo5s17rDKkNFwnMKe/w3+4rzIBlJ9xwTkR1R9CLMjs/2LBm4TVL
         7paTVs+9n9YDfEIhFMI8nR66F+fmx2RtvbMGKGDDLQyxENVFBs2obleA4ZzzsR/Pn9Qi
         Zu2g==
X-Gm-Message-State: AOJu0YxLU+bt6FxNKQ9D543WUE6uPYhYIsOV9j0vcsqBeG/7VIriL0eA
	5dt8qyB6fapeifQ9K9egEJdmji0BbgPUp8+SJZ8xeUTkaUFJ7XFzcp+gx/FsDlNZcimtTrEITCF
	H
X-Google-Smtp-Source: AGHT+IFYkudP6zAU62spG2PVUAK8m0Vhgf6c+oKiNEtCmUOgIOvJL7/w8NXyEKEp5JICHhs/Va6zEg==
X-Received: by 2002:a17:907:9281:b0:a99:d3f4:ff3b with SMTP id a640c23a62f3a-a9de5f65689mr830166466b.27.1730130608439;
        Mon, 28 Oct 2024 08:50:08 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 10/14] x86/mpx: Map/unmap xsave area in in read_bndcfgu()
Date: Mon, 28 Oct 2024 15:49:28 +0000
Message-ID: <20241028154932.6797-11-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/xstate.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 4019ca4aae83..2a54da2823cf 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -1021,9 +1021,10 @@ int handle_xsetbv(u32 index, u64 new_bv)
 
 uint64_t read_bndcfgu(void)
 {
+    uint64_t ret = 0;
     unsigned long cr0 = read_cr0();
-    struct xsave_struct *xstate
-        = idle_vcpu[smp_processor_id()]->arch.xsave_area;
+    struct vcpu *v = idle_vcpu[smp_processor_id()];
+    struct xsave_struct *xstate = vcpu_map_xsave_area(v);
     const struct xstate_bndcsr *bndcsr;
 
     ASSERT(cpu_has_mpx);
@@ -1049,7 +1050,12 @@ uint64_t read_bndcfgu(void)
     if ( cr0 & X86_CR0_TS )
         write_cr0(cr0);
 
-    return xstate->xsave_hdr.xstate_bv & X86_XCR0_BNDCSR ? bndcsr->bndcfgu : 0;
+    if ( xstate->xsave_hdr.xstate_bv & X86_XCR0_BNDCSR )
+        ret = bndcsr->bndcfgu;
+
+    vcpu_unmap_xsave_area(v, xstate);
+
+    return ret;
 }
 
 void xstate_set_init(uint64_t mask)
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826694.1241124 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0T-0002ay-Bo; Mon, 28 Oct 2024 15:50:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826694.1241124; Mon, 28 Oct 2024 15: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 1t5S0T-0002Yu-1h; Mon, 28 Oct 2024 15:50:13 +0000
Received: by outflank-mailman (input) for mailman id 826694;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0R-000874-Gh
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:11 +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 504a4b77-9544-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 16:50:11 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99e3b3a411so884982166b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:11 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 504a4b77-9544-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130610; x=1730735410; 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=jNA4CkiYLhWj5GrlTVNs4LHtyrIqkd6cYmJb5XAmLwY=;
        b=bRW7UQpLL5dW7iovCtabjxKn8dtNie9TzyWueM+mL47ZagHnWnQcrruC9krFVi3Ij6
         S5Y2Wy2vLZmjoM1/joecst3tXfvvVb1o2hl6Z0CMQaAjgSAoAaYBVTVoffut7mKvtKab
         VA62XIwN6uW+V8Uy9OetwrWFpGcgNBhbKrAqI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130610; x=1730735410;
        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=jNA4CkiYLhWj5GrlTVNs4LHtyrIqkd6cYmJb5XAmLwY=;
        b=r4sSCwoIxNwu2a6Inix3IHzSNI/cqbS8WsJw9saYnGiD0OcjVmSuYJJHEUEhsh3Mff
         tIgFGCtkcgIM2Q3LfXXxLMNnUawu+Is+gS7x8tOFfq+heIEAhKACHG/JWSdWG01RiIx7
         OCTc3JU+tjC2IMxVB1dmt8nXVZRcEJUzefO+Y74XHOc/VaqcWOLRx4pweRc+aAOsXTeK
         Eg+OUHVT/+w5j2GYUBYsrOn6iLaZgBHHjszxB2T8sPWjdzjiE/kfaAGiIWObzJu/6gUg
         rNQTNjbthzRDRKmeW43olt1/HHKisxOUPaDlAU+IVI0Xbx2xtuqa1kf678LpssCBQ90u
         A3MQ==
X-Gm-Message-State: AOJu0Ywa4j4kenT+1pvnRbOKOijSGLQbI1swH1W5qxnAh7XXGJF2RGgt
	RSqknPPvClyvh8LZKVQw/zFBYfjkbS6R0wgHtHqjOtxH/vQy7OWPAvyJVRBZa43gE4VbJ5lTnkc
	L
X-Google-Smtp-Source: AGHT+IFurN0UhPHZ+j0cvRqeJ5wZHyxfY+2OmUVsvN5Qor4ojhql7E6XWaaLOyUGpDr2fxUAzaiO0A==
X-Received: by 2002:a17:907:9815:b0:a9a:a666:4c7 with SMTP id a640c23a62f3a-a9e22ac6eecmr4045866b.24.1730130610198;
        Mon, 28 Oct 2024 08:50:10 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 12/14] x86/fpu: Pass explicit xsave areas to fpu_(f)xsave()
Date: Mon, 28 Oct 2024 15:49:30 +0000
Message-ID: <20241028154932.6797-13-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/i387.c               | 16 ++++++++++------
 xen/arch/x86/include/asm/xstate.h |  2 +-
 xen/arch/x86/xstate.c             |  3 +--
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index a571bcb23c91..5950fbcf272e 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -130,7 +130,7 @@ static inline uint64_t vcpu_xsave_mask(const struct vcpu *v)
 }
 
 /* Save x87 extended state */
-static inline void fpu_xsave(struct vcpu *v)
+static inline void fpu_xsave(struct vcpu *v, struct xsave_struct *xsave_area)
 {
     bool ok;
     uint64_t mask = vcpu_xsave_mask(v);
@@ -143,15 +143,14 @@ static inline void fpu_xsave(struct vcpu *v)
      */
     ok = set_xcr0(v->arch.xcr0_accum | XSTATE_FP_SSE);
     ASSERT(ok);
-    xsave(v, mask);
+    xsave(v, xsave_area, mask);
     ok = set_xcr0(v->arch.xcr0 ?: XSTATE_FP_SSE);
     ASSERT(ok);
 }
 
 /* Save x87 FPU, MMX, SSE and SSE2 state */
-static inline void fpu_fxsave(struct vcpu *v)
+static inline void fpu_fxsave(struct vcpu *v, fpusse_t *fpu_ctxt)
 {
-    fpusse_t *fpu_ctxt = &v->arch.xsave_area->fpu_sse;
     unsigned int fip_width = v->domain->arch.x87_fip_width;
 
     if ( fip_width != 4 )
@@ -266,6 +265,8 @@ void vcpu_restore_fpu_lazy(struct vcpu *v)
  */
 static bool _vcpu_save_fpu(struct vcpu *v)
 {
+    struct xsave_struct *xsave_area;
+
     if ( !v->fpu_dirtied && !v->arch.nonlazy_xstate_used )
         return false;
 
@@ -274,11 +275,14 @@ static bool _vcpu_save_fpu(struct vcpu *v)
     /* This can happen, if a paravirtualised guest OS has set its CR0.TS. */
     clts();
 
+    xsave_area = vcpu_map_xsave_area(v);
+
     if ( cpu_has_xsave )
-        fpu_xsave(v);
+        fpu_xsave(v, xsave_area);
     else
-        fpu_fxsave(v);
+        fpu_fxsave(v, &xsave_area->fpu_sse);
 
+    vcpu_unmap_xsave_area(v, xsave_area);
     v->fpu_dirtied = 0;
 
     return true;
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index 36260459667c..104fe0d44173 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -97,7 +97,7 @@ uint64_t get_xcr0(void);
 void set_msr_xss(u64 xss);
 uint64_t get_msr_xss(void);
 uint64_t read_bndcfgu(void);
-void xsave(struct vcpu *v, uint64_t mask);
+void xsave(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask);
 void xrstor(struct vcpu *v, uint64_t mask);
 void xstate_set_init(uint64_t mask);
 bool xsave_enabled(const struct vcpu *v);
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index a9a7ee2cd1e6..518388e6e272 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -300,9 +300,8 @@ void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
     vcpu_unmap_xsave_area(v, xstate);
 }
 
-void xsave(struct vcpu *v, uint64_t mask)
+void xsave(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
 {
-    struct xsave_struct *ptr = v->arch.xsave_area;
     uint32_t hmask = mask >> 32;
     uint32_t lmask = mask;
     unsigned int fip_width = v->domain->arch.x87_fip_width;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826695.1241133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0U-00031j-LS; Mon, 28 Oct 2024 15:50:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826695.1241133; Mon, 28 Oct 2024 15: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 1t5S0U-0002yd-BR; Mon, 28 Oct 2024 15:50:14 +0000
Received: by outflank-mailman (input) for mailman id 826695;
 Mon, 28 Oct 2024 15: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0R-0008FV-J1
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:11 +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 4fb99d1a-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:10 +0100 (CET)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5cb72918bddso5920168a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:10 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4fb99d1a-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130609; x=1730735409; 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=NrpqNXgaGWCogi9sNhxEA3iqIJalu/4gAkUE90pvCh0=;
        b=WTQFFIPbAb2KLFsUVTOrCZKvWnKHHvlawjDT53CJHT+qK5N9P1JZKaUnjKZe7iRCxy
         Xbnt7hAQpzd+818uNA58gI/suqfubtYY0zqw5TbPnOPNz+oho+kCeIMe+nG/L0NWjbxz
         40gBDn07QNb1x9KsCPuYxyVvgJvJMMz9C2ITE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130609; x=1730735409;
        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=NrpqNXgaGWCogi9sNhxEA3iqIJalu/4gAkUE90pvCh0=;
        b=VaRtSC2ZF63o1HIIW1W5qMrGLxQ+fvZHBo19C7pm/yBAEGFyJ+l3agMD2LXny26BWn
         5hncuTz6J0ut2WP4oi/KZPQMnP/FapmZccaRrv10kGV/Js9jUrcj1R4s1Z+eGtzObyVM
         UFoTzdnGnsQ1NEGiY7q+wR/kvSqFfBxu74uBF95OX1DcwBBXm8l8IyXh84ovdKmi+VNT
         A+EXM/HCW0Sjdovi4UUeHvIk7ZIZPQKNR8x2KXi31TwqH5IFSIZa2JSfNvex49bEpzT4
         DeOHV883xHJwZA4NMI8EaPgDQuM6zh+LnUzP2Qzlao3F7isLdiWIQwKJ6pPUoL1zRRCv
         Ggyw==
X-Gm-Message-State: AOJu0Yxob9B1201OGCp0rZYT6HeESk977Ikfk/SHR6rCd0+nPacm2fer
	PHAaCW7wgTIAszy/v6deYzF0WkF6PK0cruMo9M5Th5zv9c09h7a5obKIA6wjUVoxrzhp13LrjEv
	F
X-Google-Smtp-Source: AGHT+IF+QfFAUVZf3RFIYO1/1CSUdBaGD9aUJf2nTNYdCWZjxveXstimaXqORZSmU3y6L7iziuZUNg==
X-Received: by 2002:a17:907:7282:b0:a9a:294:cb30 with SMTP id a640c23a62f3a-a9de5d985e9mr805426666b.16.1730130609298;
        Mon, 28 Oct 2024 08:50:09 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 11/14] x86/mpx: Adjust read_bndcfgu() to clean after itself
Date: Mon, 28 Oct 2024 15:49:29 +0000
Message-ID: <20241028154932.6797-12-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Overwrite the MPX data dumped in the idle XSAVE area to avoid leaking
it. While it's not very sensitive, better to err on the side of caution.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
Depending on whether the idle domain is considered ASI or non-ASI this
might or might not be enough. If the idle domain is not ASI the XSAVE
area would be in the directmap, which would render the zap ineffective
because it would still be transiently readable from another pCPU.
---
 xen/arch/x86/xstate.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 2a54da2823cf..a9a7ee2cd1e6 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -1025,7 +1025,7 @@ uint64_t read_bndcfgu(void)
     unsigned long cr0 = read_cr0();
     struct vcpu *v = idle_vcpu[smp_processor_id()];
     struct xsave_struct *xstate = vcpu_map_xsave_area(v);
-    const struct xstate_bndcsr *bndcsr;
+    struct xstate_bndcsr *bndcsr;
 
     ASSERT(cpu_has_mpx);
     clts();
@@ -1051,7 +1051,10 @@ uint64_t read_bndcfgu(void)
         write_cr0(cr0);
 
     if ( xstate->xsave_hdr.xstate_bv & X86_XCR0_BNDCSR )
+    {
         ret = bndcsr->bndcfgu;
+        *bndcsr = (struct xstate_bndcsr){};
+    }
 
     vcpu_unmap_xsave_area(v, xstate);
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826696.1241154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0X-0003j4-Dj; Mon, 28 Oct 2024 15:50:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826696.1241154; Mon, 28 Oct 2024 15:50: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 1t5S0X-0003hF-0R; Mon, 28 Oct 2024 15:50:17 +0000
Received: by outflank-mailman (input) for mailman id 826696;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0V-0008FV-44
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:15 +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 5144c1cb-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:12 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a9a2cdc6f0cso603068166b.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:12 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5144c1cb-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130612; x=1730735412; 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=HwNJgVlmgOrKpINGfBXiXo/pOeaz7GckymMD2iqzF3A=;
        b=Duuih0KxloKm6sWNfEyA3X8M8+QqdQBFfStVqYKNepZMoDGZ4GgrU/L3nbIDlpkcIR
         Myv9lnFxGJi9oPLOGO9zcTQPANVGlnKp0GyPFPDqIgQlRmmf9twubJSexKwhr7pkb6Lh
         nJFfBKpdDvM8xntw5V1pnJgPDVORJsZHx7X/o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130612; x=1730735412;
        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=HwNJgVlmgOrKpINGfBXiXo/pOeaz7GckymMD2iqzF3A=;
        b=kVluQsc3kD8D/uZAppkHV2Mi/L2VntPoBw/b3jT9Fc8LdPM4PoQHenK65uCq07PG3F
         gsRKRBubQDAqrc/TwbodAFb76kpaDqHUVkmW6zFJkQz2KTpM43+N8fLJUPXS1Lo0d07Y
         a6RKFCXNUVBJ2vuQd5jbzl11v+O6WOtc+HAWfqzrgYwHL5Uza5aRQrEBqr+LazgfS3B0
         Ri+djPBzavRK0SwMbdqtZcEDvHITXGUqSfqbbAsRB0KFHMBWAVY9ovAn9uPaGbzeNCS0
         cFHgCY5tcK/j0dwgG3962U0QegvwdUll2ENbkCJfVeIOhKGOnMC8ofZhPxambsEbfmhW
         bVug==
X-Gm-Message-State: AOJu0Yx3BjKFw4X6/WGQZjLabr0QIimiUYkTow3VXtpYXBnqZWV+zgTb
	PEQyIV3weq75Yv2u4VK4d/1IotKKuSys/6eMD1norR9pDIlTo8Krh5HuQ5ehXoTH61qdTWnwrHV
	E
X-Google-Smtp-Source: AGHT+IHEY1nVRqaVDFBcRPDXXekAHbeOYazAPOBV9yuB9+xZ37aBGYXnmRkAxgllujT4PRIvJffbng==
X-Received: by 2002:a17:906:c14a:b0:a9a:80bd:2920 with SMTP id a640c23a62f3a-a9de61990b1mr811601166b.53.1730130611929;
        Mon, 28 Oct 2024 08:50:11 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 14/14] x86/xstate: Make xstate_all() and vcpu_xsave_mask() take explicit xstate
Date: Mon, 28 Oct 2024 15:49:32 +0000
Message-ID: <20241028154932.6797-15-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/i387.c               | 9 +++++----
 xen/arch/x86/include/asm/xstate.h | 5 +++--
 xen/arch/x86/xstate.c             | 2 +-
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index 7e1fb8ad8779..87b44dc11b55 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -108,7 +108,8 @@ static inline void fpu_fxrstor(struct vcpu *v, const fpusse_t *fpu_ctxt)
 /*      FPU Save Functions     */
 /*******************************/
 
-static inline uint64_t vcpu_xsave_mask(const struct vcpu *v)
+static inline uint64_t vcpu_xsave_mask(const struct vcpu *v,
+                                       const struct xsave_struct *xsave_area)
 {
     if ( v->fpu_dirtied )
         return v->arch.nonlazy_xstate_used ? XSTATE_ALL : XSTATE_LAZY;
@@ -125,14 +126,14 @@ static inline uint64_t vcpu_xsave_mask(const struct vcpu *v)
      * XSTATE_FP_SSE), vcpu_xsave_mask will return XSTATE_ALL. Otherwise
      * return XSTATE_NONLAZY.
      */
-    return xstate_all(v) ? XSTATE_ALL : XSTATE_NONLAZY;
+    return xstate_all(v, xsave_area) ? XSTATE_ALL : XSTATE_NONLAZY;
 }
 
 /* Save x87 extended state */
 static inline void fpu_xsave(struct vcpu *v, struct xsave_struct *xsave_area)
 {
     bool ok;
-    uint64_t mask = vcpu_xsave_mask(v);
+    uint64_t mask = vcpu_xsave_mask(v, xsave_area);
 
     ASSERT(mask);
     ASSERT(cpu_has_xsave);
@@ -213,7 +214,7 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts)
      * saving state belonging to another vCPU.
      */
     xsave_area = vcpu_map_xsave_area(v);
-    if ( v->arch.fully_eager_fpu || xstate_all(v) )
+    if ( v->arch.fully_eager_fpu || xstate_all(v, xsave_area) )
     {
         if ( cpu_has_xsave )
             fpu_xrstor(v, xsave_area, XSTATE_ALL);
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index 43f7731c2b17..81350d0105bb 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -132,14 +132,15 @@ xsave_area_compressed(const struct xsave_struct *xsave_area)
     return xsave_area->xsave_hdr.xcomp_bv & XSTATE_COMPACTION_ENABLED;
 }
 
-static inline bool xstate_all(const struct vcpu *v)
+static inline bool xstate_all(const struct vcpu *v,
+                              const struct xsave_struct *xsave_area)
 {
     /*
      * XSTATE_FP_SSE may be excluded, because the offsets of XSTATE_FP_SSE
      * (in the legacy region of xsave area) are fixed, so saving
      * XSTATE_FP_SSE will not cause overwriting problem with XSAVES/XSAVEC.
      */
-    return xsave_area_compressed(v->arch.xsave_area) &&
+    return xsave_area_compressed(xsave_area) &&
            (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
 }
 
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index aa5c062f7e51..cbe56eba89eb 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -1002,7 +1002,7 @@ int handle_xsetbv(u32 index, u64 new_bv)
             asm ( "stmxcsr %0" : "=m" (xsave_area->fpu_sse.mxcsr) );
             vcpu_unmap_xsave_area(curr, xsave_area);
         }
-        else if ( xstate_all(curr) )
+        else if ( xstate_all(curr, xsave_area) )
         {
             /* See the comment in i387.c:vcpu_restore_fpu_eager(). */
             mask |= XSTATE_LAZY;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 15:50:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 15:50:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826697.1241158 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5S0Y-0003pu-1P; Mon, 28 Oct 2024 15:50:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826697.1241158; Mon, 28 Oct 2024 15:50: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 1t5S0X-0003nf-LI; Mon, 28 Oct 2024 15:50:17 +0000
Received: by outflank-mailman (input) for mailman id 826697;
 Mon, 28 Oct 2024 15:50: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=7IZ5=RY=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5S0W-0008FV-42
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 15:50:16 +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 50c7b84f-9544-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 16:50:11 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9a850270e2so737391466b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 08:50:11 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm387674066b.191.2024.10.28.08.50.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 08:50:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50c7b84f-9544-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730130611; x=1730735411; 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=oF/zafBR21s51XQ55xrj7f7wP/qB8eTuRfs/webK9Bc=;
        b=f1cDNAWcjJX4J37+CTPWbXlYgvwX/Jz5sjH2B7yHzmXkRJgU3ENIiLy+se7hD4X/5f
         t9zzo//623V/MD3zrgzOxkWBokb/ivVlcZh6YRNNOppxpM3jNzlNR3N17YI2Ge+ksIut
         nFLh2yig6t4c+KXcsQDmuGECIrIOdvL85Qi3k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730130611; x=1730735411;
        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=oF/zafBR21s51XQ55xrj7f7wP/qB8eTuRfs/webK9Bc=;
        b=Zhfx38xO15hlv9imHY7hnIx1hzHQ3c2F052vKj6E4NiRsyNm+dSzNm3j+0yAF7gW5G
         EJcqZPGl/WdA3V7FiCBSthw92ZzpwM0lC8fINJdV3MmkhTCb3pv+BGxMcq71+97pS//S
         /iV7ilzkVp9oRS186o0mr2XJFcHKUy9QpLpmFweP5ZVM3G4vW+mQSZp7+TRqPlIx58Il
         5LHPrhO5oHuc5LQt7jD+WnHDcprog85N9BVo/Ki0nOa5tumZQrg1P8GVXxLPKNWKTwsh
         wQAYMdoF1kyzuDZuV2GS8mBRGJKDR8VrD/9lFgeSw+4i9PrUbp+VMYIl1m9mNUjKtaUJ
         lGUg==
X-Gm-Message-State: AOJu0YxTLAf+7xwjjeSJ6gE8lTThIfWiFDN4DQ8oma0mBFUK3xvddnLC
	WtvNvVI2QDwiOcajB4ApCTf/mlcmRwpSMmgMK/dW+GnIuKStS+k7vVbuYImcHjslb2/VYZ9HyRS
	H
X-Google-Smtp-Source: AGHT+IF3/bhrLgSOziE7SwxQmzzMAg6HWwkCFCduzdTekcWhgq6v2MAPrFNTaOqxjidfqXp1wB6P8Q==
X-Received: by 2002:a17:906:f591:b0:a9a:9df:5581 with SMTP id a640c23a62f3a-a9de5ee8bacmr837394266b.38.1730130611065;
        Mon, 28 Oct 2024 08:50:11 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [PATCH 13/14] x86/fpu: Pass explicit xsave areas to fpu_(f)xrstor()
Date: Mon, 28 Oct 2024 15:49:31 +0000
Message-ID: <20241028154932.6797-14-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/i387.c               | 26 ++++++++++++++++----------
 xen/arch/x86/include/asm/xstate.h |  2 +-
 xen/arch/x86/xstate.c             | 10 ++++++----
 3 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/i387.c b/xen/arch/x86/i387.c
index 5950fbcf272e..7e1fb8ad8779 100644
--- a/xen/arch/x86/i387.c
+++ b/xen/arch/x86/i387.c
@@ -20,7 +20,8 @@
 /*     FPU Restore Functions   */
 /*******************************/
 /* Restore x87 extended state */
-static inline void fpu_xrstor(struct vcpu *v, uint64_t mask)
+static inline void fpu_xrstor(struct vcpu *v, struct xsave_struct *xsave_area,
+                              uint64_t mask)
 {
     bool ok;
 
@@ -31,16 +32,14 @@ static inline void fpu_xrstor(struct vcpu *v, uint64_t mask)
      */
     ok = set_xcr0(v->arch.xcr0_accum | XSTATE_FP_SSE);
     ASSERT(ok);
-    xrstor(v, mask);
+    xrstor(v, xsave_area, mask);
     ok = set_xcr0(v->arch.xcr0 ?: XSTATE_FP_SSE);
     ASSERT(ok);
 }
 
 /* Restore x87 FPU, MMX, SSE and SSE2 state */
-static inline void fpu_fxrstor(struct vcpu *v)
+static inline void fpu_fxrstor(struct vcpu *v, const fpusse_t *fpu_ctxt)
 {
-    const fpusse_t *fpu_ctxt = &v->arch.xsave_area->fpu_sse;
-
     /*
      * Some CPUs don't save/restore FDP/FIP/FOP unless an exception
      * is pending. Clear the x87 state here by setting it to fixed
@@ -197,6 +196,8 @@ static inline void fpu_fxsave(struct vcpu *v, fpusse_t *fpu_ctxt)
 /* Restore FPU state whenever VCPU is schduled in. */
 void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts)
 {
+    struct xsave_struct *xsave_area;
+
     /* Restore nonlazy extended state (i.e. parts not tracked by CR0.TS). */
     if ( !v->arch.fully_eager_fpu && !v->arch.nonlazy_xstate_used )
         goto maybe_stts;
@@ -211,12 +212,13 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts)
      * above) we also need to restore full state, to prevent subsequently
      * saving state belonging to another vCPU.
      */
+    xsave_area = vcpu_map_xsave_area(v);
     if ( v->arch.fully_eager_fpu || xstate_all(v) )
     {
         if ( cpu_has_xsave )
-            fpu_xrstor(v, XSTATE_ALL);
+            fpu_xrstor(v, xsave_area, XSTATE_ALL);
         else
-            fpu_fxrstor(v);
+            fpu_fxrstor(v, &xsave_area->fpu_sse);
 
         v->fpu_initialised = 1;
         v->fpu_dirtied = 1;
@@ -226,9 +228,10 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts)
     }
     else
     {
-        fpu_xrstor(v, XSTATE_NONLAZY);
+        fpu_xrstor(v, xsave_area, XSTATE_NONLAZY);
         need_stts = true;
     }
+    vcpu_unmap_xsave_area(v, xsave_area);
 
  maybe_stts:
     if ( need_stts )
@@ -240,6 +243,7 @@ void vcpu_restore_fpu_nonlazy(struct vcpu *v, bool need_stts)
  */
 void vcpu_restore_fpu_lazy(struct vcpu *v)
 {
+    struct xsave_struct *xsave_area;
     ASSERT(!is_idle_vcpu(v));
 
     /* Avoid recursion. */
@@ -250,10 +254,12 @@ void vcpu_restore_fpu_lazy(struct vcpu *v)
 
     ASSERT(!v->arch.fully_eager_fpu);
 
+    xsave_area = vcpu_map_xsave_area(v);
     if ( cpu_has_xsave )
-        fpu_xrstor(v, XSTATE_LAZY);
+        fpu_xrstor(v, xsave_area, XSTATE_LAZY);
     else
-        fpu_fxrstor(v);
+        fpu_fxrstor(v, &xsave_area->fpu_sse);
+    vcpu_unmap_xsave_area(v, xsave_area);
 
     v->fpu_initialised = 1;
     v->fpu_dirtied = 1;
diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
index 104fe0d44173..43f7731c2b17 100644
--- a/xen/arch/x86/include/asm/xstate.h
+++ b/xen/arch/x86/include/asm/xstate.h
@@ -98,7 +98,7 @@ void set_msr_xss(u64 xss);
 uint64_t get_msr_xss(void);
 uint64_t read_bndcfgu(void);
 void xsave(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask);
-void xrstor(struct vcpu *v, uint64_t mask);
+void xrstor(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask);
 void xstate_set_init(uint64_t mask);
 bool xsave_enabled(const struct vcpu *v);
 int __must_check validate_xstate(const struct domain *d,
diff --git a/xen/arch/x86/xstate.c b/xen/arch/x86/xstate.c
index 518388e6e272..aa5c062f7e51 100644
--- a/xen/arch/x86/xstate.c
+++ b/xen/arch/x86/xstate.c
@@ -374,11 +374,10 @@ void xsave(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
         ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] = fip_width;
 }
 
-void xrstor(struct vcpu *v, uint64_t mask)
+void xrstor(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
 {
     uint32_t hmask = mask >> 32;
     uint32_t lmask = mask;
-    struct xsave_struct *ptr = v->arch.xsave_area;
     unsigned int faults, prev_faults;
 
     /*
@@ -992,6 +991,7 @@ int handle_xsetbv(u32 index, u64 new_bv)
     mask &= curr->fpu_dirtied ? ~XSTATE_FP_SSE : XSTATE_NONLAZY;
     if ( mask )
     {
+        struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
         unsigned long cr0 = read_cr0();
 
         clts();
@@ -1010,7 +1010,9 @@ int handle_xsetbv(u32 index, u64 new_bv)
             curr->fpu_dirtied = 1;
             cr0 &= ~X86_CR0_TS;
         }
-        xrstor(curr, mask);
+        xrstor(curr, xsave_area, mask);
+        vcpu_unmap_xsave_area(curr, xsave_area);
+
         if ( cr0 & X86_CR0_TS )
             write_cr0(cr0);
     }
@@ -1080,7 +1082,7 @@ void xstate_set_init(uint64_t mask)
 
     xstate = vcpu_map_xsave_area(v);
     memset(&xstate->xsave_hdr, 0, sizeof(xstate->xsave_hdr));
-    xrstor(v, mask);
+    xrstor(v, xstate, mask);
     vcpu_unmap_xsave_area(v, xstate);
 
     if ( cr0 & X86_CR0_TS )
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:03:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:03:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826778.1241180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SDE-0003B0-0g; Mon, 28 Oct 2024 16:03:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826778.1241180; Mon, 28 Oct 2024 16:03: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 1t5SDD-0003At-Rk; Mon, 28 Oct 2024 16:03:23 +0000
Received: by outflank-mailman (input) for mailman id 826778;
 Mon, 28 Oct 2024 16:03: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5SDD-0003An-C9
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:03:23 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 272ca9d4-9546-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:03:21 +0100 (CET)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539f72c913aso5744813e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:03:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431935f744esm114660985e9.34.2024.10.28.09.03.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:03:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 272ca9d4-9546-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730131400; x=1730736200; 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=Qgj69Cd/dAiOQr4jsPsRsdPGZRl2lr4O7CpY+NdIcKg=;
        b=HBb2ZgzjKV9v8Y2NKC5du9d1k2l61sWYVaBYH42NQ1hCVl3HtrIuv0QTLBxlTAe2Cb
         0ERrEZ6AIpEM2SYFvyLVRaZ8Wi4uzYEQliHfVKnGCGTGYMZpLEvHPaVl0cqzF1CYU407
         jRXyveH7WTME/gSbhrVksese6LXKb0L8zbWwG7+qB+VOYjL/tSutm7v3AhiXW+cUOOLh
         XqtyknG9K3uc4WC1/8LTKOsrLccdTq5Jy/0X6k69OSTsN2tLoyTeWpcxZWSzOf+PnOlN
         0p9/2WoDsqB7aiX2YhfzifJn2xI94NKcTAbxq4rAcnPoS7S9DQFanAowecVz6yD6ZbjN
         x66g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730131400; x=1730736200;
        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=Qgj69Cd/dAiOQr4jsPsRsdPGZRl2lr4O7CpY+NdIcKg=;
        b=Z/HTi2kd9xGDzAe53UKVMc1T9olGG19ovz6l7URWiVz4uIwsayO+FXGi3LgG9XW9xL
         n8tITsvmZ8grY4YMH/LXFTGN3JTiMx33QxmGf7X/qzw/wbNXvNzRQPE6NutzeK/8E8Zu
         EXDQwqcgPae23mQgnYk3kMKH02WJSNOCjGEMZUBE15RCGK4k3h56E7yXLYTjoZyaOiE+
         gA0WH6P+4bWljldqy3u35uDE9fN6+juUv1s8ipjaqQ4UTROeD5s8JhSfc29Ng3D67mto
         2vj+RfAcFgUBrOGH20DBZpX2h/jiu83tzujvgJ4NuOI9YHshIW08SfYDyPq5UFact5oI
         DWiA==
X-Gm-Message-State: AOJu0Yw020MK/HxHvY5mWV0IRai+htwzcsgf1IUvcpSRm6dl7IW2nQ13
	UmiN/Pc/3dQCO14A+v3rJwQgdRnDmhOXogyS/IUEpCpxoKdWL8LVf5L7Jp+F/XO9NZXMkpJgcGM
	=
X-Google-Smtp-Source: AGHT+IHMEj5uN+E77renAJ9qLvrG8/erYlbeK1PEi2oVzi9SyyFi0TsupUvfAgk7kZfoFXL0wl+ieg==
X-Received: by 2002:a05:6512:401f:b0:539:e317:b05f with SMTP id 2adb3069b0e04-53b348e2e0fmr4082587e87.28.1730131398870;
        Mon, 28 Oct 2024 09:03:18 -0700 (PDT)
Message-ID: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
Date: Mon, 28 Oct 2024 17:03:17 +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>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+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

As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): While
this is imported from Linux, the parameter not being pointer-to-const is
dubious in the first place and we're not plausibly going to gain a write
through it.

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

--- a/xen/common/earlycpio.c
+++ b/xen/common/earlycpio.c
@@ -64,7 +64,8 @@ enum cpio_fields {
  *              the match returned an empty filename string.
  */
 
-struct cpio_data __init find_cpio_data(const char *path, void *data, size_t len)
+struct cpio_data __init find_cpio_data(
+	const char *path, const void *data, size_t len)
 {
 	const size_t cpio_header_len = 8*C_NFIELDS - 2;
 	struct cpio_data cd = { NULL, 0, "" };
--- a/xen/include/xen/earlycpio.h
+++ b/xen/include/xen/earlycpio.h
@@ -9,6 +9,6 @@ struct cpio_data {
 	char name[MAX_CPIO_FILE_NAME];
 };
 
-struct cpio_data find_cpio_data(const char *path, void *data, size_t len);
+struct cpio_data find_cpio_data(const char *path, const void *data, size_t len);
 
 #endif /* _EARLYCPIO_H */


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:04:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:04:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826782.1241188 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SDs-0003dM-6N; Mon, 28 Oct 2024 16:04:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826782.1241188; Mon, 28 Oct 2024 16:04: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 1t5SDs-0003dF-3o; Mon, 28 Oct 2024 16:04:04 +0000
Received: by outflank-mailman (input) for mailman id 826782;
 Mon, 28 Oct 2024 16:04: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5SDr-0003Wd-Jd
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:04:03 +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 400a5fc6-9546-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 17:04:02 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-43155afca99so37759385e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:04:02 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b4000dsm9965307f8f.45.2024.10.28.09.04.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:04:01 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 400a5fc6-9546-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730131442; x=1730736242; 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=nn2j0OITmhLXOOGVbpo9h8yYyoUdFTPgEgzh+5EaW34=;
        b=Ju4hT7p4k2LDjL/x71hcKsVrV0Pj1aP9iXwIC9WIQ1mSqinAW+HxJJZG6eyJHl/6+R
         +BBzxx5pX4KDnFnJ3akmeB+lnFaqwMEk66vo/aPid2A77TBQ2faE61z5qKZxCFYZFQ4n
         isqet5+L3d3eNEWC0BeOcBMyF3YDbLuUGM7uHvb7SC4iuDFee9208i6J63VKIZzrTQTx
         jSciRL4G1KutRGZa+9ihN6vJGDq30GM0nR2ilpuqa9eh5kjvO3C/ywxjVoa64stf0Z/p
         dcZx30CFPHMEYYcqzm5Xfm5EMX83owm2EbZWrfVJvysrwGnBqbxNuSpchXHKeyIJ4L4k
         SYyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730131442; x=1730736242;
        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=nn2j0OITmhLXOOGVbpo9h8yYyoUdFTPgEgzh+5EaW34=;
        b=iMFayK4RD54q2xMbs3BqCCzOpcyF2FWl8G+6Mnm5i5j9Ch4uW44UGQG1UT7+tu34Dy
         WOAKZOjsFrzcUctZQZEwXDMfolitW9igH2JXZtV2xVQbHea2hp55tHUHaLF4aTa/KdxW
         08SLyjsHwFbCFHPzH9QmTquDFLg+gRMIXaqZSNcF5qm6QUjNzgRg3Go0ubPxSeOb+xHK
         6mXThn4DCVqIdkPFgS8QgRAB8C3scofdOuR/IJ4/YVXMdxsqByk0diZb4jtx/hE5ltM1
         y1kZAH5+DC56Ozsa2F7jW6ktJQTjmQxBKl09sUgqF5UQCixmz2/YPmKkQKxzGO0dw5mF
         kJTQ==
X-Forwarded-Encrypted: i=1; AJvYcCXNOubTTKKNXyuGfk9LXIxREbPxuDQPi4uWkoq9TXU7g7JOigiCVI1nXz9F+q5NDALKnABsGdEv1kI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzXNUHCyKknPXAaycyV/cewQVH8CRrcKmEattEVd8akdUyJHnKf
	+Fo19Vaa0kioC4kqiwgNLplppPJBrbCnUCNLgCbJchLdSLQLFUOcJbRCRgabqQ==
X-Google-Smtp-Source: AGHT+IFsnSOUuINmXEGU9oG2OR+Nwb92+TavnUvV/srrR91IlGLi5SaceFykm+/2CNhcITd3zu8zSw==
X-Received: by 2002:a05:6000:ed2:b0:37c:cc7c:761c with SMTP id ffacd0b85a97d-380813bc592mr100528f8f.3.1730131442028;
        Mon, 28 Oct 2024 09:04:02 -0700 (PDT)
Message-ID: <f4a7cb7a-2b76-4d97-adbb-430bfcd0d054@suse.com>
Date: Mon, 28 Oct 2024 17:04:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 09/10] x86/ucode: Drop ucode_mod and ucode_blob
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-10-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: <20241028091856.2151603-10-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> @@ -789,23 +734,47 @@ static int __init early_update_cache(const void *data, size_t len)
>      return rc;
>  }
>  
> +/*
> + * Set by early_microcode_load() to indicate where it found microcode, so
> + * microcode_init_cache() can find it again and initalise the cache.  opt_scan
> + * tells us whether we're looking for a raw container or CPIO archive.
> + */
> +static int __initdata early_mod_idx = -1;
> +
>  static int __init cf_check microcode_init_cache(void)
>  {
>      struct boot_info *bi = &xen_boot_info;
> +    void *data;

Afaics the sole reason this isn't const void * and ...

> @@ -819,7 +788,7 @@ presmp_initcall(microcode_init_cache);
>   */
>  static int __init early_microcode_load(struct boot_info *bi)
>  {
> -    const void *data = NULL;
> +    void *data = NULL;

... you're actively dropping const here (which I consider bad) is
find_cpio_data() wrongly taking void * as 2nd parameter. Internally it
copies the parameter to a const char * variable, so the non-const param
is bogus. With the const here retained and const added further up (on
top of a trivial prereq patch adjusting find_cpio_data(), which I've
just sent out):
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:07:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:07:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826794.1241199 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SHQ-0004ih-O3; Mon, 28 Oct 2024 16:07:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826794.1241199; Mon, 28 Oct 2024 16: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 1t5SHQ-0004ia-KJ; Mon, 28 Oct 2024 16:07:44 +0000
Received: by outflank-mailman (input) for mailman id 826794;
 Mon, 28 Oct 2024 16: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5SHP-0004iU-TR
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:07: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 c2636e53-9546-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:07:41 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a99f629a7aaso714535466b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:07:41 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f298319sm385527466b.105.2024.10.28.09.07.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:07:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2636e53-9546-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730131661; x=1730736461; 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=vhGk2ApqQSEM8yWyXNnaCWAjGcw+zd+bxdMKApJsJR4=;
        b=Mr7qggaBHOm0A8n7AvUKTYuerX7rbBO3o+WM/NekfCrQAHX4Y8Om5YKnJH4IApl7Gu
         OQOtSfN1PSd5lf68f2rUDhi2Dw/BXdVB+1V5deasYt4SdhEqwbFmNhU4DinKIiiPSLf+
         +aJa64sBd1GNS/s70HtjJc6KeNBzAMtCuvGxU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730131661; x=1730736461;
        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=vhGk2ApqQSEM8yWyXNnaCWAjGcw+zd+bxdMKApJsJR4=;
        b=q1lKvT7It+9Wvy2g4u1meQbcSjLr0t5wTpZgcvjk9KUymwB+elR4SqIEAx46kxF9zT
         4FzSSQXu5aV7dgI0CSitey+NxwBpGhWmttnlg9+m3Cf1aV6aFBOTQCkgrI580HZM+y8r
         tXoiLqUN0OfMy1T8fKt0jVOv9e0olInKO8uFMvm89HGkqFggf+MNd64zOzZGJQZG5KI7
         3ZIgR90dXmSAtlTUu3svaO1yC20jN0E/0Gogoak7SfjBqBPTOaIhWf2jWeQ7EzSvXkyd
         8saEwpEUy9ndiie+o5Iyk6tSn3YDKXUf31p5iQfOPzE1UTX5CGNGkbVTEwaw+7lrAnvy
         AEXQ==
X-Forwarded-Encrypted: i=1; AJvYcCWWG3mkUVdOj7y8rPr+SBhUmbr8s/JwUHW+hxNsppKvP4MsuVEOTKyxDwMuI+ZuQtWuQw0oCdyL10o=@lists.xenproject.org
X-Gm-Message-State: AOJu0YySt/rRsAk/xzPj2MSTmXfh1y/qu0tmcblRhs+d3QComyxQFlC0
	qYsbS30tucS407Ey8GhhnHjVyYOOHuo7x0a8jjuicC6StgDWWr+nqZLLbpVfx3jTjds3IQ9u6Mn
	a
X-Google-Smtp-Source: AGHT+IGCxavj3DoQpmrK3jClTiwtkynnBQ9KCDzRMKF2cz+2HwfVUjFebaVMQXXlnZjC7M3isnuMtw==
X-Received: by 2002:a17:907:9804:b0:a9a:4b51:9e7 with SMTP id a640c23a62f3a-a9e22797d3cmr10646866b.16.1730131660946;
        Mon, 28 Oct 2024 09:07:40 -0700 (PDT)
Message-ID: <764c0116-88ed-48af-8e53-f2a0f6e850a3@citrix.com>
Date: Mon, 28 Oct 2024 16:07:38 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>
References: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28/10/2024 4:03 pm, Jan Beulich wrote:
> As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): While
> this is imported from Linux, the parameter not being pointer-to-const is
> dubious in the first place and we're not plausibly going to gain a write
> through it.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

You haven't tried compiling this, have you?

There's a reason why the only user us non-const and staying that way.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:10:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:10:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826801.1241209 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SJj-0006qi-9O; Mon, 28 Oct 2024 16:10:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826801.1241209; Mon, 28 Oct 2024 16: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 1t5SJj-0006qb-4s; Mon, 28 Oct 2024 16:10:07 +0000
Received: by outflank-mailman (input) for mailman id 826801;
 Mon, 28 Oct 2024 16:10: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=lrmH=RY=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1t5SJh-0005zl-8j
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:10:06 +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 12d974c5-9547-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:09:56 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c95a962c2bso5569409a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:09:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 12d974c5-9547-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730131796; x=1730736596; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=PaFuiKCcJoXP3bf2/602QTckfqom966Q7X9Adhueb+I=;
        b=MaSWAHGMQ4fppDoLBiKboMoDVKpwDBxy0t4C8FhPz3hfUTpD+WTdP+1j4fgxd0FQ8Z
         de8oOUWSABUc0Fx9XqBAx8yoLyJGs7HuZINsIymC25PzqJLp0ppFVYuxXtwZV4qEnfgl
         O151ow12JzTxsalZFk2QNx8Kii5nXzW9V1F2U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730131796; x=1730736596;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=PaFuiKCcJoXP3bf2/602QTckfqom966Q7X9Adhueb+I=;
        b=HstvkarhSNN1eA7JKK2JqWUwvnwByiDPMkreaHP6c8topol3Gu1Tsy22+15/mQIG8y
         ToB1wi435D4ok5+roOWGTYLZwtYNdS5CUDIuALPaU03KnkzI8W+HvorCllMl9tLRs/7F
         faxyXBoAxuzx6HxWbfR2Taj5ACpIlPJXjgfl3K6wJYexu2lvl6Y6EOyNDeYiW9hdZU24
         dK2KrfVjHCsIA34xJY9FawmhG5PvxsJbCn7M8ERPgfRI7Uv13PHeF/tq11VDGvxKQbUU
         LUHqkSR5szkVNFBv4B682DuT4AtOHKzJ/KUhoopGs8Ws+2yfugG5nfeizHzTJTV8yd7z
         Tyyw==
X-Gm-Message-State: AOJu0Yza6vmhFH4kxLNxr/KukvxlSxp9Pp5EW0AsM+ugureIKhb9i4B+
	75zkzDhXEDIurBXCX6HKGh60rJNfKVwRUc74D96lgq5T1BpfDItyVp9wQ7m/N5gnuFc45vlbQOi
	U8MLnOZA3pdUiL7sly8jZKOP0VlPFcpBjr6WZ9AnTBTFshjJVgHc=
X-Google-Smtp-Source: AGHT+IGE1NozVAtuSyXIKwh17kLwyfLGCuLCP39hyDnB52kAjcBS36NF5R6GQ7O0/koC7TCArI3Czdr+6PnuFCb8zjI=
X-Received: by 2002:a05:6402:51cf:b0:5c9:7f41:eb19 with SMTP id
 4fb4d7f45d1cf-5cbbf89203emr5915567a12.4.1730131794959; Mon, 28 Oct 2024
 09:09:54 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Mon, 28 Oct 2024 16:09:18 +0000
Message-ID: <CAO-mL=w+42+P=g9aPqA1RPj3aMKk73_M9WbBHxS06xkvxDg0Gw@mail.gmail.com>
Subject: Qubes OS & Xen Project case study
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org
Cc: =?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>
Content-Type: multipart/mixed; boundary="0000000000000def9f06258bb37b"

--0000000000000def9f06258bb37b
Content-Type: multipart/alternative; boundary="0000000000000def9d06258bb379"

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

Hi all,

I'd like to share a recent case study we have done with Qubes OS.

Qubes OS is a security-focused operating system based on Xen. =EF=B8=8F

You can find out more about the goal of Qubes OS and how the Xen Project
plays a vital role in the PDF attached.

Thank you to Marek for working together with me on this!

Kelly Choi
Community Manager
Xen Project <https://xenproject.org/>

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

<div dir=3D"ltr">Hi all,=C2=A0<div><br></div><div>I&#39;d like to share a r=
ecent case study we have done with=C2=A0Qubes OS.</div><div><br></div>Qubes=
 OS is a security-focused operating system based on Xen. =EF=B8=8F<br><br>Y=
ou can find out more about the goal of Qubes OS and how the Xen Project pla=
ys a vital role in the PDF attached.<div><br>Thank you to Marek for working=
 together with me on this!</div><div><br></div><div><div><div dir=3D"ltr" c=
lass=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr=
"><div>Kelly Choi<br></div><div><div style=3D"color:rgb(136,136,136)">Commu=
nity Manager</div><div style=3D"color:rgb(136,136,136)"><a href=3D"https://=
xenproject.org/" target=3D"_blank">Xen Project</a><br></div></div></div></d=
iv></div></div></div>

--0000000000000def9d06258bb379--
--0000000000000def9f06258bb37b
Content-Type: application/pdf; name="Qubes OS & Xen Project.pdf"
Content-Disposition: attachment; filename="Qubes OS & Xen Project.pdf"
Content-Transfer-Encoding: base64
Content-ID: <f_m2t7opya0>
X-Attachment-Id: f_m2t7opya0

JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSAoUXViZXMgT1MgJiBYZW4gUHJvamVjdCkK
L1Byb2R1Y2VyIChTa2lhL1BERiBtMTMyIEdvb2dsZSBEb2NzIFJlbmRlcmVyKT4+CmVuZG9iagoz
IDAgb2JqCjw8L2NhIDEKL0JNIC9Ob3JtYWw+PgplbmRvYmoKNSAwIG9iago8PC9OIDMKL0ZpbHRl
ciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAyOTY+PiBzdHJlYW0KeJx9kL1Kw2AUhh9rQRTFQYcODhkc
XNT+aH/Apa1YXFuFVqc0TYvYn5Cm6AXo5uDqJi7egOhlKAgO4uAliKCzbxokBann8OZ7ePOSL+dA
JIYqGodO13PLpYJRrR0YU+9MqIdlWn2H8aXU90uQfV79Jzeupht239L5IXmuLtcnG+LFVsCnPtcD
vvD5xHM88bXP7l65KL4Tr7RGuD7CluP6+TfxVqc9sML/Ztbu7ld0VqUlSvTULdrYrFPhmCNMUYYi
m+yQJ0lClCBFTu7GUHniemZJU1AX1Vm9z0gptpXO+fsMruzdQPYLJi9Dr34FD+cQew29Zc02fwb3
j6EX7tgxXXNoRaVIswmftzBXg4UnmDn8XeyYWY0/sxrs0sViTZTUNAnSP4XNS70KZW5kc3RyZWFt
CmVuZG9iago0IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCAy
MDQ4Ci9IZWlnaHQgODUyCi9Db2xvclNwYWNlIFsvSUNDQmFzZWQgNSAwIFJdCi9CaXRzUGVyQ29t
cG9uZW50IDgKL0ZpbHRlciAvRENURGVjb2RlCi9Db2xvclRyYW5zZm9ybSAwCi9MZW5ndGggNzQ2
ODY+PiBzdHJlYW0K/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL
DBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN
DRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/
wAARCANUCAADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY
GRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT
lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0
9fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA
AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2
Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk
paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB
AAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiionniiALyKuf7xAoAlpKx7nxLplv8A8tjI
c4IQZIrKuPGq4cW9oc5+VnPBHuB/jXPPE0obyIc4rdnW0hIAySB7muAn8WalKQY2SIAYwqZz+eaz
J9TvrhSs11KysclSxx+Vc08ypLZNkOvFbHpkt5bQY824jTPTcw5qnPr+mQMFa6QkjPy/N/KvNi7N
1Yn6mkrmlmj6RIeIfRHoE/ivTYlBR2lJOMKMY/Oq/wDwmdn/AM8Zf0rh6KyeZ1W9EiHXkdafGzZO
LNcf79J/wm7/APPmv/fVcnRUf2hX7i9tLudZ/wAJs/8Az5r/AN9VA3jO8LErBEBngHNc1RUPHV31
B1ZPqdTH40nCHzLZGOeqkin/APCbP/z5r/31XJ0VSx9dK1/wD20u51n/AAmz/wDPmv8A31UsPjRG
cia1KrjqrZOa46imsxrp7/gHtpHcf8JnZf8APGX9Kur4n0tgCbjBIzgqa86orRZnVW6TKVdnp0et
adLGHW7jAPq2DVtJ4pFDJIrA8ggjmvJqcsjqQVdlI5GD0raOad4lLEd0et0ZrzKLW9ThkDLeykjs
7bh+RrRtvF9/FgTLHMN2SSMHHoMV0QzGjLfQtV4vc72krmYPGlo5Imt5Y8dCCGz/ACrWt9a0+64j
uUzjJBOCK6oV6c/haZopRezNGimq6sAVYEEZGDTq2KCiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiopriG3TfNIqL0yxxQBJRXOX3i61gLJbqZnHAPRc1zl54k1K
7ypm8pCMFYuP161x1cbSp6XuzKVWKO6vNStLFC1xMq+2ck/hWDdeMoE3C2gZiPuljgH8K413d2LO
zMx5JJyTSV51XM5v4FZGMq7extXPijU7gFVkES5yNgwR7ZrIeaWX/WSM3f5mzTKK4alepP4m2Zuc
nuwooorIgKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCzBqF3bMG
huJFIGBhu1bNt4wvYyBMiSrwOmDXO0VvTxNWGzZaqSWzO9tfF1hO22UPCc4BbkVuRTRzIGidXU9w
c15NU0F1cWzboZnjOQflYjOK76WaNaVFf0No4h9Uer/hRXCWXi68hwtyqzpnlsYb/CuksvEen3oP
73ymH8MnFehSxVKrs9TaNSMtmbFFNVlYZVgR6g06uosKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
EooqlfapaWC5uJVU9lHJP4VMpKKuwbtuXapX2qWmnIWuJQpxkKOSfwrlNR8XXE+Us18pD/GeW/8A
rVzkkjyuXkdmY8kscmvOr5jCGkNWYSrpaLU6e/8AGMkgKWcXljJG9zk4+nauduLy5u23TzPIR03G
oKK8qriatX4np2OeVSUt2FFFFc5AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAF6x1e9sHBimO3OSjHINdNp/jCGUhL1PKJ/
jXkfjXF0V10cZVpaJ3XZmkasonrMU0U8YkhdXQ9GU5FSHNeWWeoXWnyh7eUqe69j9RXVab4vhlxH
ep5bdN4+6f8ACvWoY+nU0ejOmNaL30OqoqKGeKeMPFIrqeQQc1LXeahRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRTWZUUsz
AAdSTjFAC9qgubuCzgM1xII0HUmsHV/FUNsGhs8SykEbx91T/WuPu725vZC9xKzn3PA/CuDEY6FL
SOrMZ1VHRas39V8WyzEx2IMUfd2+8fp6VzUkrysXkdmJ6ljmm0V4tbE1KrvJ/Loc0pyluFFFFYEB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFqz1G6sZA1vMyn0zwfwrr9L8V29wqx3mIZf738J/w
rhqK6qGMqUtE7rszSNWUT1tHWRAyMGUjIIPBp1ebaZrt5prKquXhB5jbkY9vSu00vXbTUxhD5cg6
o5wfw9a9uhi6dbROz7HVCpGXqa1FFFdZoFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFITgc1zus+JorINDassk4OD3C1nUqxpx5pOyJlJRV2a19q
Ntp0Je4kC8Ehe5+grhdV8QXWpsUz5UHTYp6/Ws65up7yZpJ5Gdie56fSoa8PE4+VT3YaL8WctSq3
otgooorzzEKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKVHeNw6MVZTkEd
RSUU02ndAdVpHixo8QahkoAcTDk+2RXXxTRzxh42DKRkEHNeTVo6XrFzpchMR3RnqjdDXqYbMGrR
q6rudEKzWjPTKWs3S9YttUjLRHDj7yHqK0e1ezGUZK6d0dKaauhaKKKoYUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVHJIkMZeRgqgZJJ6VX1DUINNtjPO2B0Cjqx9BXA
6xrc+qTnlo4BwqA/z9TXLiMVCitdX2InUUFqX9c8SteK1tabo4ckM2eWH9BXOHk5NFFfP1q86zvJ
nHKbk7sKKKKxICiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKAJIZ5IJVkidldTkMprt9G8SxX2ILnEc4HUnAb/CuEorqw+KnQfddjSFRwPXaWuK0PxP5KJbX
pJUEKsncD3rs0dXUMpBBGQRX0FGvCrG8TsjJSV0OooorYoKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKAErO1bV4NKt98hDSN9yMHk0mr6tDpVuXchpW+4meSf8K87vLya+uWnncszH8AP
QVwYvFqirR1b/AxqVVHRbk2p6nPqlyZpjheiIDwoqlRRXgTnKcnKTu2cjbk7sKKKKkQUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVZgsLy6BMFtI4BwSqkgVr2/hDUZc+aY4gOm5
t2fyreGGqz+FMtQk9kc/RXbQ+DLZGBlnkcY+6ABzWhD4a0yGPZ9nD85yxya645ZVfxNI0VBvc86w
fQ1ILW4I4gk/74NeoJY2qKFW3iAAwPlFT7QOgH5VusrXWRSw66s8yj0XUpY1dLSUqwyDipovDupy
yBfsrLn+JuAK9I4orVZZSXVl+wief/8ACJap/cj/AO+xR/wiWqf3I/8AvsV6BRV/2dQ7P7x+xief
/wDCJap/cj/77FDeE9UAJ2RnA6Bhk16Diij+zqHZi9jE8y/sHU/+fOT8qim0m/t1DS2sgBOAdteo
0EZrN5ZSto2L2Ee55M8EqLueN1HqVIqPFetPDHIu2RFYehGarT6VY3ChZbaMgHIwuKyllfaRLw/Z
nl1FegzeFdMmfcI2j4xhDgVmz+CsJm3ustno68Y/CueeW1VtZkOhJbHIUVtT+FtUh3kQiRV6FWBJ
+g61lT2txattnhkiOM4ZSK5J4erD4k0Q4SW6IqKKKyICiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACt3RfEc2n7IJv3ltnv1Ue3+FYVFa0a0qUuaLKjJxd0eswTx3ESyxMGRhkEVJX
neh67JpkojkJa2Y/MP7vuK721u4byETQSK6HjIr6HD4mNaN1udsJqS0LFFFFdRYUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFACVm6vq8OlWxdyDK33EHUn/CjV9Xh0q3LuQZWHyJ3J/wrzu8vJr65aed
yzMfwA9BXBi8WqK5Vq3+BjUqqOi3C9vJ7+5aedyzN+QHoKgoorwJScm5Sd2zkbbd2FFFFSIKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACinIjyMEjRmY9Aoya3dP8K3tywa4H2eMHnPU/QVrToVK
r9xXLjCUtkYFXbTSb68I8m3cqRncRgYruLLw3p9kM+X5z5zuk5/StcLgYGAB2FenSyxb1H8kbRw/
dnH2ngxyQ11OAO6pyfzrdtdA021QBbZXOACXG7P51qUV6FPDUqfwo3UIrZCKqooCgADsBTqKK6Cg
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACo5YIp4yksaup6hhkVJRQBhXfhfTrhW2Rm
J2Odyn+npXP3nhC9hBaB1mHHA4Nd5RXLVwlKpuvuIdOMt0eUT2lxbNtmidDkj5lxmoa9Ynt4bmMp
NGsinsRmsK+8I2dwpa2Jgkzkd1/KvOq5W1rTd/UxlQfRnCUVp32g39gu+SLdH/eQ5A+tZledUpTp
u01YwlFrRhRRRWZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFaOkavPpVwGQlom++hPBH+N
Z1FXTqShJSi7NFRk4u6PVbO8hv7dZ4GDKRyO4PoasV51oWtPpVwVcboJCNw7j3FegwzR3EKyxMGR
hkEd6+jw2IjWjdb9TthNSVyWiiiuosKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASqWpahFp1k88hAIGFU9WPY
VPdXMVpbvPMwVFGcmvNdU1OfU7oyyt8o4RB0UVx4vFKhHzexnUqKK8yG8vJr+5aedyzMfwA9BUFF
FfOym5Nyk7tnE227sKKKKkQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVs6V4dudSIdswwYzvIz
u9gK1pUZ1XaCuVGDk7IyEjeV1SNCzMcBQMk10Wm+Erm4w92fJTrt6sa6fT9EstOAMUQMg/jbk/8A
1q0q9fD5dGOtTVnTCglqylY6VZ6egW3iAPdiMk/jV3FFFelGKirJWN0rbC0UUVQBRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAhAIwaxNR8NWV9l0XyZD
/Eg4P1FblJionCM1aSuJxTVmeb6h4fvbAlmjMkY/jXkVlV64QCMYH0rC1Twxa358yEiCXH8K8H6i
vKr5b1pP5MwlQ6xOAoq3e6bdafIVuIiozgNjg/Q1UryZwlB2krM5mmnZhRRRUiCiiigAooooAKKK
KACiiigAooooAKKKKACtrQNbk024WGRs27nBBP3T6isWitaNaVKSlEqMnF3R64rh0DKQQRkEUtcR
4Z1xoZhZXEg8k/cZj90+n0rt+or6ShWjWgpI7oyUldC0UUVuUFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACU13VEZ2OFAJJ9
BTq4/wAUa2GBsrWQ+krL0Ptmsa1WNKDkyZSUVdmZ4g1r+07gRxZEEZIXn7x9TWLRRXzVWq6snKXU
4ZycndhRRRWRIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVPaWdxfTrDboWYnHsPqa0dH8P3Gptvb
91ADgsw5P0ru7Kxt9Ph8q3jCr3Pcn1NejhcBKp709F+LNqdJvV7GPpHheG0Cy3QEs2M4PRT/AFro
QoUAAYA6AU6ivbp04U42irHVGKSsgooorQoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCG4t4bqIxTRq6HqGFchqvhJ4g01
iS46+Ueo+ldpRWFahCqrSRMoKS1PJHR43ZHUqynBB6im16Lq3h+11QGQfup/+eijOfYiuEvtOudP
mMdxGRyQrY4b6GvCxODnRd1qu5yTpOOvQq0UUVxmQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV2n
hjXFmiWyuXPmrwjMfvD0+tcXT4pXglWSNirqdysOxrow2IlRndbdS6c3F3PWqWsjQ9WXU7MFmXz1
HzqOPxrWr6WElOKktmdyaauhaKKKsYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRVe7uo7O2knlOFQZpN21YGd4h1UaZYkI2J5AQnGcep
rztmLMWJyWOSas6jfy6jePcSsTk/KpP3V7CqtfOYzE+2npstjiqz5npsFFFFcZkPi2ecvm7vLz82
3riuwtfC2mXduk8NxKyMMggj8q4yt3w3rJsLgW8pX7PK3JPG0+td2CnTUuSok0+ptScb2aNz/hDb
H/ntN+Yo/wCENsf+e035iujBDAEHIPQiuN8X/EXTvBl3HBqVtcBJVykqoSp9Rn1r2vqtH+VHT7OP
Yv8A/CG2P/Pab8xR/wAIbY/89pvzFcZ/wvzwv/zzuP8Avk/4Uf8AC/fC/wDcuP8Avk/4UfVaP8qD
2cex2f8Awhtj/wA9pvzFH/CG2P8Az2m/MVxn/C/fC/8AcuP++T/hR/wv3wv/AHLj/vk/4UfVaP8A
Kg9nHsdn/wAIbY/89pvzFH/CG2P/AD2m/MVxf/C/PC/9y4/74NL/AML98L/3Lj/vk/4UfVaP8qD2
cex2f/CG2P8Az2m/MUf8IbY/89pvzFcZ/wAL98L/ANy4/wC+T/hR/wAL98L/ANy4/wC+T/hR9Vo/
yoPZx7HZ/wDCG2P/AD2m/MVJB4RsIZlkLyPtOdrHg1xX/C+/C3pcf98Gl/4X34V9Lj/vg01hqSd1
FfcP2cex6mqKihVAAHQAU6vKv+F9+FvS4/74NH/C+/C3pcf98H/Ctyj1WivKv+F9+FvSf/vg0f8A
C+/C3pP/AN8H/CgD1WivKv8Ahffhb0n/AO+DR/wvvwt6T/8AfBoA9Voryr/hffhb0n/74P8AhR/w
vvwt6XH/AHwaAPVaK8p/4X34W9J/++D/AIUv/C+/C3pP/wB8H/CgD1WivKv+F9+FvSf/AL4NH/C+
/C3pP/3waAPVaK8q/wCF9+FvSf8A74NH/C+/C3pP/wB8GgD1WivKv+F9+FvS4/74Nd14X8Uad4s0
pdQ02UPGSQynqp9DQBt0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAJVW+sYNQtzDOgKnoe4PqKtVXvL220+2e5u50hhUZZ3OAKTSaswMP/hDbH/ntN+Yo
/wCENsf+e035iuRuPjr4XgupYd0jhGKh1UkNjuOKiPx78LjOFmP/AAE/4Vh9Vo/yoj2cex2f/CG2
P/Pab8xR/wAIbY/89pvzFcWPj54ZxzHPn/dP+FNHx98OZ5imx7Kf8KPqtH+VB7OPY7b/AIQ2x/57
TfmKP+ENsf8AntN+Yri/+F+eF/7lx/3waX/hfvhf+5cf98n/AAo+q0f5UHs49js/+ENsf+e035ij
/hDbH/ntN+Yri/8Ahfnhf+5cf98Gj/hfnhf+5cf98Gj6rR/lQezj2O0/4Q2x/wCe035ij/hDbH/n
tN+Yri/+F+eF/wC5cf8AfBpf+F++F/7lx/3yf8KPqtH+VB7OPY7P/hDbH/ntN+Yo/wCENsf+e035
iuL/AOF+eF/7lx/3waP+F+eGc/6ufH+6f8KPqtH+VB7OPY7T/hDbH/ntN+Yo/wCENsf+e035iuL/
AOF+eGcnMc+P90/4Uo+PnhjvHcf98n/Cj6rR/lQezj2Oz/4Q2x/57TfmKP8AhDbH/ntN+YrjP+F+
+F/7lx/3yf8ACj/hfvhf+5cf98n/AAo+q0f5UHs49jvtO8PW+m3QnhllJwQVJGCK2q8n/wCF++F/
7lx/3yf8KUfHzwuTylwB/un/AArWEFBWirIpJLRHq9FeVf8AC+/C3pP/AN8H/Cj/AIX34W9J/wDv
g1Yz1WivKf8Ahffhb0n/AO+D/hS/8L78Lek//fB/woA9Voryr/hffhb0n/74NH/C+/C3pcf98GgD
1WivKv8Ahffhb0n/AO+D/hR/wvvwt6XH/fBoA9Voryr/AIX34W9J/wDvg/4Uf8L78Lek/wD3waAP
VaK8q/4X34W9J/8Avg/4Uf8AC+/C3pP/AN8GgD1WivKv+F9+FvSf/vg0o+PPhZmCgXGScD5D/hQB
6pRWR4e1yPxBp/22G3miiLYTzVKlh64Na9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AlcL4o1f7Xc/ZIWBhjPzEdz3ro/EOqf2ZYEpgyyZVAf1NedFixLEkk8kmvLzHE8sfZx3e/oc9adl
ZCUUUV4ZyhRRRQAUUUUAdj4U1nzANPmyWGSjE9R6VZ8aeE7Lxj4fl0+7UhgC0LjqjY4Irh0d43Do
xVlOQR1Br0XQtXTVLTnImiADg9/f9K97AYrnXJLdfiddKpdWe58a6zpF5oWrT6bfRNHPC5UhhjcO
xFUa+oPi38PE8U6W2p2Q26laoSB/z0UckfWvmB0ZHKOpVlJVlIwQR2r0ToEooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuz+HPju68Ga2rFy2nTsFuIz0H+19RXGUUA
fc9leW+oWcV1ayrLBKoZHU5BBqxXzp8FviGdMuk8NalIotJmJtpXbGxv7pPoe1fRQIIBByD0piFo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiivPPH/wAU9L8IQyWk
Di51UrhIVOQp9WPagDpfE/i7SPCWnm61S5WPIOyMcs59AK+Y/HXxL1bxrN5bsbbT0J2QKcbhngt6
mud13xDqfiTUGvdUunmlP3QT8qj0A7VmUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAwooooEFFFF
ABRRRQAUUUhoAWiiigAooooAKKKKACiiigAoord8K+EdV8X6kLTTYCyj78zDCoPc0AZVjY3WpXsV
nZQPPcSsFREGSTX0F8O/gxBpaw6p4iRZr4NuS36rH9fU12Pgb4d6V4NsI9kSzagRmS5YZbPoPQV2
dMBEVUUKigAdABgU6iigQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUxmVVLMQAOSTTq5rxbq
PkWgtI2w8v3sdlrKrUVODm+hMpJK7OY1rUG1HUpJQT5anCA9gKzqKK+XqVHUm5PdnDKTk7sKKKKg
kKKKKACiiigAq1p1/Jp95HPGxAU/MoP3h3FVaKqE5QkpLdDTad0ep2V9DqFss8LAqRyO4Poa8F+N
fw8NnPJ4o0uNRBIQLqFFxg/3wP516D4d1j+zbrZK5FvJwR6H1ru7iC31GyeGZEmglQgg8hga+lw2
IVaF1v1O6nNSVz4Y60tdx8SfAVz4M1p3jQtptwxaCQDhf9k/SuHroNAooooAKKKQ0ALRRRQMKKKK
BBRRRQAUUUUDCiiigQUUUUAFFFFABRRRQAUUUUACsysrqSrKcgjqDX038IfiKviXTV0e+IXUbVAA
3/PVR3+tfMlXNK1W70TU4NRsZWiuIWDKwPX2PtQB9x0VzHgbxhZ+M/D8d9bkrKoCzxt1Vsc109MQ
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVFPcRWsLTTyLHEoyzMcACs7XvEWm
eGtPa91O6WGIZxk8sfQCvmf4gfFXU/GDPZWxa10tWOEU4aQdtx/pQB2nxH+NJJuNH8NMCvKyXoP5
hf8AGvDZppLiZpppGklc7nZjksfc0yikMKKKKACiiigAooooGFFFFAgooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKTpUsFvLdTpBBG0srttVEGSxr3b4d/BRYhHqfidMyhg0
dp1Ud/m9aAOM+H/wl1LxZKl3qKyWWl43B2XDS+yg9vevpXRNB07w/p8dlptskMKLjgcn3J71fjjS
GNY41CoowqgYAFSUxBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARyOkUbO7AKoJ
JPQCvMdUvm1HUJbg5wxwo9F7V1fi3UvItBZxth5fvYPRf/r1xFeLmdfVU4+rOavLogoooryTmCii
igAooooAKKKKACiiigArrvCutniwuGUAD90TwfpXI05WKMHBwynINdGGryozUlt1LhNxdzv/ABV4
ZsPFehz6ZfJlXUlGBwUbsQfrXyD4i8P33hjWZ9N1CIpJGxCsRw69mFfYXh/Vjqlnl8CWPAYDv71z
XxQ8CReMdCLxALqFqC0DAct/sn619LCSmlJbM7otNXR8nUVJPby2s8kE6NHLGxVlYYIIqOqKCiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA6rwB40ufBfiGO6V3NlIwW
5iXoy+uPUV9caXqlprGnw31lMssEqgqymvh2vWPg38Q20LUU0LUplXTrhsRu3SNj0H0NAH0vRTVZ
XUMrAqRkEHIIp1MQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVHJIkMbSSMFRRlmJwAKAH1wvjr
4m6T4MtthIu791Oy3jYZB7FvQZrkPiJ8aILDz9J8Oss9wV2tdKcqh77fU18/3NzPeXL3NzK00znc
zsckmgZreJfFereK9Qa71O5ZxuJSIH5Yx6AViUUUgCiiigAooooAKKKKACiiigAooooAKKKKACii
igYUUUUCCiiigAooooAKKKKACiiigAooooAKKKQ0ALWr4e8N6p4o1NLDS7dpZWPzMeFUerGum8B/
DDVfGNxHPIj2ul5y07LjcPRfWvpnw34V0vwtpsdlp1uiBR80mPmY+pNAHM/D/wCF+meD7NJrhEut
UbBedhnafRfQV6DRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVHLIsMTSOc
KoJJp9c/4r1AWunG3UgyTfLj0XuazqzUIOT6EydldnHapetf6hLOxOCcKM9B2qnRRXy05ucnJ7s4
JNt3YUUUVAgooooAKKKKACiiigAooooAKfFE80qxxqWdjhQO5pldZ4S0nLG+nj4HEW4dT/eFdGGo
OtUUVt1LhHmlY39F0xdMsVjGS7cuT61pUtJX00YqKUVsjuSsrI8L+Nnw9MqP4o0xMuuBdQqv3h/e
GPTvXgtfdcsSTRtHIgZGGGUjIIr5a+K3w8m8J6q2o2ibtLupCVKj/VMeduPSqKPOaKKKQBSdqWig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA+j/g18RP7bsF0HVJUF7aoB
C7HBlUdPxFewV8M6dqFzpWowX1o5SeFgyMPUdvpX1t8PfG9v420BbpQEuosLcR56N6j2piOwoooo
AKKKKACiiigAooooAKKKKACiiuR8b+P9K8E2Ie6bzbp/9Xbofmb39hQBvatrFhodi97qNykEC9WY
182/ET4t3/iaWfTtKke20nOCV4aYe57D2rlfFvjfV/GF801/Oy24YmO3U/Ko/qa5ygYmKWiikAUU
UUAFFFFABRRRQMKKKKBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRV7R9Iv
td1KKw063aa4kYAKo4UepPYUAUkR5ZFjjRmdjhVUZJPtXtnw4+C7XEiap4ohKwgAx2ZON3oW/wAK
7fwB8JNN8Kxi71AJe6kwB3svyx+yj+telUwIra2htLeO3t41jhjUKqKMBQO1TUUUCCiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAE7V5z4kvze6tIAQY4SUXHP1Ndxq159h0ya4
H3lX5R7ngV5izF3Zj1Jya8vM6vLFQXU568rKwlFFFeGcoUUUUAFFFFABRRRQAUUUUAFFFFAF3SrF
tQ1GK3AO0nLH0Uda9Mghjt4UhiUKijAA7CsTwtpgtNPFw6jzZec9wvYVvgYr6PA0PZU7vdnbShyx
13FooortNQrL1/Q7LxFpE+nX0KyRSqQM9QexB7VqUUAfFvi/wte+Edfm027QhQcwv2dexFYVfXHx
I8C23jPQJFSNRqUALW8vQ5/un2NfJt5ZXOnXs1ndxNFcQuVdGGCCKQyGiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAK6HwX4suvB3iGDUbdnMOQtxCGwJE/xFc9RQB9v
aLrFpr+k2+pWL7oJlDKe49jWjXy98IfiEfDGrLpeoyudMumwvORE56H6Gvp9HV0DqcgjIPqKYh1F
FFABRRRQAUUUUAFNZgqlmIAAySe1V7/ULTS7KS8vZ0gt4hl3c4AFfO3xG+MdzrMs2meH5Wh0/BR5
wMNL9PQUAdx8Q/jJZ6D5mm6Hsu78qQ0oOUiJ/mfavnXUdSvdWvnvL+4kuLhzlnds/gPQVVJLMSSS
TySepopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKT+tes/Dr4PXWvsuo69HLa6fjKREbXl9M+goA5DwZ4B1fxpfCK0jMNqozJcuCFUe3qa+
nfB/gbSPB2npFZQKbkriW4YZZz35rc0/TrLSLCO1s4Ugt4l2qqjAAFYOteKVizBYlXYggydl+lZ1
a0aUbydiJSUVdnTCeMymIOpkAyVB5xUleaaRqL2urxzyyMQx2uS3UH1r0oEMAQcgjOazw2IVeLaW
woTU1dDqKKK6SwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiimkhVLE4AHNAHI
+Mr3/VWQH/TRj+grkavavdm81SebIKlsLjpgVRr5jGVfaVm+i0OGo7ybCiiiuYzCiiigAooooAKK
KKACiiigArR0SwOoanHERmNTuf6Cs6u/8L6b9i07zXXE0xDHPUDsP512YGh7Wqr7LVmtKPNI3VUI
oVRgAYAp1FFfSHaFFFFABRRRQAV4v8Zvhwl/av4j0qFvtkQ/0iNRnzF/vfUV7RTWVXUqwBBGCD0N
AHwkRg4I5or0/wCL/wAPm8Mar/a1grNpt2xLqF/1L57+xrzCkMKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigABxznBr6D+DHxIN/CPDus3I+0RKBayOeZF/uk+or58qW
0uprK7iurZ2jnhcOjDsRQB91UVw3w08dQ+M9AR5nRdRh+WeMHk/7Q9jXc0xBRRSE4GaAFrmvFvjX
SfB+nNc30ymTokKn5mP0rlviD8XNO8Kxmy00x3upsCNqt8sR7FiPftXzbq+s3+u6jJfajcPPPIxY
ljwvsB2FAG/42+IWr+NLx/PlaHTw2Y7VD8o9C3qa5GiikMKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqxYafdanexWdlA81xIdqooyTWz4S8G6
r4x1RLTT4isef3lwwOxB3Oe59q+n/BXw90fwXZbLWPz7pjmS5kUbmPt6CmBxnw8+DFro6x6l4hRb
i+BDJDnKx9+fU16zc3EFjbGSZljjUf5AqtqesWulxBpmJdvuovJNcDqWqXOpzs8zkIT8qA/KtceJ
xkKKtu+xlUqKPqaWteJZb4vb23yW3Qn+Jv8A61c/RRXg1q0q0ryZySk5O7FBwQR1FelaFd/bdJhk
JJYDaxPqK80rrPBl5h5rRioz86jnJPeuvLavLUcX1LoStK3c7KiiivfOwKKKKACiiigAoppYKCSQ
AOpJqrc6tp9lGHub2CJCcZZwBQBcorlr/wCInhPTQPP1y0JPZHDEfgK5/UPjh4Ms1Hk3k1yxOCsc
TDH4kYoA9Jorx27/AGhdBSJja6beyydtwVR/PNZEv7RhH+p8Pbv9+bb/ACBoA95or51vP2h9XlYf
ZdGtoQByGmLZP/fNUG+P/igk7bWyUe6k0AfTNFfMR+Pfi4n5U09frCT/AOzU3/hffjD+5p//AH4P
/wAVQFj6for5g/4X34w/uaf/AN+D/wDFU9fj54tHWKwb6REf1oHY+nKK+aE/aA8TA/PZWTD2yK1L
f9oq/SFVn0CCRx95luCM/htoEfQdFeFwftFwsw8/QZUGedkgb+eK2Y/2gfDEmN9rexf7yg/yzQB6
3RXBWfxg8FXiKRqwjZhkiRGXHtkgV0tp4o0G/ZVtdXs5Wb7oSUEmgDYoqNJo5PuSK3+6wNSUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFQyXEEIJklRMDJ3MBgVg6j498L
6VHuutZtRzjarhj+QoA6SivMdQ+Ovg+zk2QS3F1xkmONh+HIrn739omwSQix0W5kTHBlZVyfwNAH
t1FeAt+0bcZOzw7FjtuuSP8A2Wso/tB+ICxI061A9N+f6UAfSdFfNo/aC8Q99Otf++//AK1Xrf8A
aKv0hCz6BBJIOrC4K5/DbQB9CUV4RF+0Yhx52gOvrslDfzxW3b/tA+GZVXz7S9hJA3blBAP4ZoA9
cori9P8Air4N1KRY4NZiVm4HnAx/+hYrp7TVtPvl3Wt7BMucZRwaALtFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAlZ+tXP2TSZ5NxVtuAR6mtCuW8aXIW1gthuBd93HQgdv1rGv
Pkpyl2RM3aLZxhJJJPU0lFFfKnnhRRRQAUUUUAFFFFABRRRQAUUUUAXdKsm1DUYrcfdY5b6DrXps
aLFGqKMKoAArk/BtiwEt6wGD8qZH54NdfX0OX0fZ0rvd6nZRjZX7i0UUV3mwUUUUAFFFFABRRRQB
n6zpNrrelXGnXcavDMhVgRnGe496+RvHHg678F69JYz/ADQOS1vKP4l/xr7JrkvH3gy28Z+HZbRo
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
/wASNH8a2v7lxbXqgb7aRgG+o9RTEdpRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACV5/4r
ufO1lkUttiULg9AepxXeySCONnboqkn6CvLLyZrm8mmZi25idx6kdq83M6lqSj3ZjXdo2IKKKK8E
4wooooAKKKKACiiigAooooAKUAswA6nikrS0G0N5rECYJVW3tg4wB/kVpSg51FFdSoq7SO80e0Fl
pkMXGduWwMZJq/RRX1UYqKSR6CVtBaKKKoAooooAKKKKACiiigAooooA8i+MXw6Gu2B1rS7df7Rg
UmULwZVH9a+bSCpKkEMDgg9jX3Yyq6lWAIIwQe9fN/xk+HS6HeHXdKhb7DO2Z1UcRMT1+hoGeR0U
UUhhRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooGFFF
FAgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiivQfAPwq1TxdN
FdXSvaaTu+aUjDOB2Uf1oA5bw34Y1TxVqcdlptuzlmAaQj5UHqTX054E+GWleDLfzNoutQYDfPIo
JHsvpXReHfDWmeF9LjsNMt1jjXq2PmY+pPeodY8SwaeDHblZp84Izwv1qJ1I0480nZEuSSuy/qer
W2mQM8rAvj5YweWrg9V1q41SYl2Kxfwxg8D6+tU7m5lu7hppmLOxySahrw8VjpVfdjovzOSpVctF
sFFFS29tNdyiOCMux7KK4YxcnaKuzJK+iIq1dL0G71P50URxA4Lt/T1rotI8KxWxWa8xJKDkJ1Uf
X1rpQFRQAAoH4CvWw2Xfaq/cdEKHWRlaZoNppqghRJL3dhzWnLKkMZkkdUQclicAVw3i/wCK3h/w
mJIGl+13y8CCE5wfc9q+f/FvxM8QeLZXSa5a2siTtt4W2jHoxHWvVhCMFaKsjoSSVke5+KvjN4e8
PM1vaSC/ul4KRHKg+5rxjxP8XfEviCVkiuDY22fljhODj3NcDRVFDpZHnlaSV2kdurM2SfxptFFA
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
ooooGFFFFAgooooGFFFFAgooooATvS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFdv8LPF8nh
PxbEWJazvCsMybsAEn5W/DP61xFAJBBBwRyDQB92qwYBlIIIyCO9OrhvhT4kPiLwRaSSuGubceTJ
zz8vAJruaYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooA4rxpK32u3j3ZUKWxnoc1y1bPihlfXZdrA4AB
x2OKxq+Zxsr15HDVd5MKKKK5TMKKKKACiiigAooooAKKKKAJrSFp7uKJSAzOACeleqRrtjVfQAV5
54ai8zXIcpuC5Y8Zx716NXu5ZC1Ny7s66CtG4tFFFembhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BXl/xd+Hg8U6SdS06KMapbKW6YMqjqpNeoUhAYEEZB4IoA+ESrIxRlKspKsp6gjqDRXs/wAaPh2b
C6fxJpUAW1k5uY0H3W/vYrxikMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooATtS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU5EeWRUjVn
djhVUZJPoBQA2u38B/DPVfGswnCm201WG+dhgt6hR3rsfh18F5r/AMjVvEaGK3yGSzIwzjsW9B7V
7/aWVvYWyW9pCkMKDCoowBTC5l+GvCmk+FLAWml2yxLgb3PLMcdSa3KKKBBRRRQBieKIBNoshLY8
shhx19q88r1W+h8+ynj2htyEBT3OOK5PQPDjSSC5vkKop+WNhySPX2ry8bhpVakeX5nPVpuUlYb4
d8PGcrd3iERg5RD/ABe59q7UAKAAAAKAAAAAAB2rxb4qfFtNPWfQdAkzeZaO4nHSPsQvqa7qNGNG
PLE2jFRVkWvif8XU0Jn0jQJEl1AcSzD5li9vc1873d3c313JdXczzTyMWZ2OSTUTu8jl5GZnY5Zm
OST6mkrUsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACigAkgAEk8ADvXqHgj4M6p4iVLzVS1
hYkBlVh87g+g7UAeYKrOwRFZmPRVGSfwrpNJ+H/ivWiv2TRrjay7laVdikfjX1D4f+H/AIb8OQot
np0RlXrNIu5ycetdOqqihVAAA4AGAKYXPmGw+BHiy7jLzNaWxB+67kk/pV0fs+eI8fNf2WfYn/Cv
pOigVz5ok/Z/8TojMl5YuQCQNxBPt0rmNT+FnjLSkDy6Q8yE4BgO4/l1r6+ooHc+FJ7ee0mMVzBL
DKpwVkQqfyNR19o694R0PxJatBqVhFIDnDhQGU+oNfO3xD+E994RDahYs11phJyQMtF9fb3oA83o
oopAFFFFABRRRQAUUUUAFFFFABRRSGgBaKKKACiiigAr2H4JePG0zUh4b1CUm0uT/ozMwCo3cc9j
Xj1Phmkt5o54HKSxsGRh1Vgcg0AfdlFcb8NvFo8XeEbe7kcG7iHl3A77h3/GuypiCiiigAooooA4
z4p6r/ZPw91SUFN0sZhAJ5O75ePfmvkIZ4zX0T+0Jqaw6DYadg755d+c8YFfO9IaCiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooGFFFFAhwkcRNGHYRsclQeCfcU2iigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKBhRRRQIKKKKACiiigD2X9n/AFw2+t3ujyOd
k6CRFx/EOtfRVfHfw11I6X4/0ubzfKR38t2z/Ce36V9hg5AIpiFooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
opr/AHG+hoA8x1llbWLtgQQXPIqjUtx/x8y/7zfzqKvk6zvNvu2efJ3k2FFFFZkhRRRQAUUUUAFF
FFABRRRQB03gyB2vZpsDYq4PPc129ct4LhZbS4mJG13CgfT/APXXU19Lgo8tBI7qStFC0UUV1mgU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAVr2yt9Qs5LW6jWWGVSrKwyCDXyf8TPAs3gzxC4hR
20y4Ja3lI4HqpPqK+uawvFvhiy8W6BPpd6vyuNyMOqsOhFAHxbRWn4g0K88Oa1caZfRsssTHazDG
5ezCsykMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooGFFFFAgooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAoorrPBXw/1bxrd4tE8m0QjzLhx8o9h6mgDA0rSL/XL
5LHTbZ7i4boqjOB6k9hX0h8O/hFZeFxFqWpFbrVCoIyvyxH29/eus8I+CdI8HWKw6fAvnMoEs7DL
OfrXTUxCAYGKWiigAooooAKKKKACjpRXnXxU+ISeDtJFtabX1O6UiNcg7B3YigDn/i18UxpMUmg6
HMDfOMTzqc+UPQf7VfOzuzuzuzMzHLMxySfWnTTSXE8k8zs8sjFnZjkkmmUhhRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUKrOyqoLFjgKOpNFevfBXwAutXx8QalCGsbdtsCt/HIO+PQUAdZ8Kv
hNFpkEet69Asl665hgYZWIHuR/er2NVCgKoAAGAB2pQAoAAwB0paYgooooAKKKKACiiigAqG5t4b
y2e3uI1kikBDKwyCKmooA+Rvih4OHhDxZJFboV0+6zLb9wo7rn2z+tcTX098c9Gj1HwO14FXzrOQ
SK2OcdCM18wDkZoGLRRRSAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPUPgf4jbSvGH9nSSb
be+XbtIyN46V9P18N6ZfSaZq1pfRMVeCVXBBweDzX2ro9+mp6PaXsZBWaJX4OeopiL9FFFABRRTH
YIhYkAAEkntQB8zfHjUkvPGsdrHIWW2hAZeysa8srovHeovqvjfVblpA/wC/KKw6YXiudpDCiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoop8UTzyrFFG0kjHCqoyT+FADKK
9B0D4OeKtbVJJLdbKBlyHnOGx/u16Lpf7PWlxLnU9TmnYgcRjaAaAPnmivp5fgP4SUcrcN9XNNk+
AvhNx8puUPqr0Bc+Y6K911n9nohWfR9VJO47Y517fUV5P4j8Ia34VuDHqtk8SE4WUDKN9DQBhUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAW9KnFvq9lMSQqTqSfTmvtyznS5
soJ487JEDLnrgivhlTtdT6Op/Wvtrw42/wANaY3rbRn/AMdFAM1KKKKYgooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
q97KYbKeRcZVCRnp0qxVTUv+QZdf9c2/lUy2A8tdy7s5xliScUlFFfJSd3c80KKKKQBRRRQAUUUU
AFFFFABRRRQB6D4Ug8nREbdnzWLYx07f0rcrJ8N/8gG1+h/ma1q+ropKnFLsj0I/ChaKKK1KCiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooA83+LHgFPFmiG9tQV1K0UtHgffHdTXy1JG8MrR
SIySIxV1YYKkdRX3ZXgvxr+HX3/FGlRKAABdwqMZ/wBoD19aBnhdFIORx0paQBRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FABZgoBLHgADJNWbDT7vVL2OzsbaS4uJDhY0XJP+FfRHw6+DtposUOqa4gn1HhkhPKRfh3NAHDfD
z4NXevtFqeuhrbTwwKwEEPMPf0FfRenaZZaTZpaWFtHbwIMKiLgVbACgAAADoBS0xBRRRQAUUUUA
FFFFABRRTWYKpYnAAyTQBieLPE1p4T0C41S7OQg+RB1duwr4+17W7vxDrVzql47NLM5IDHO1eyj6
V2Xxb8bP4o8SyWlu5/s+ycogU8Ow6sf5V55QMKKKKQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQBZ06xl1PUrawhBMlxIsYwM4yeT+A5r7R8OaNb+H9AstLtlAjgjC8dz3P5183/AAQ0cal46W6k
Rmjs0LBgOAx6Zr6lpiCiiigAooooAKKKKACiiigAooooA53x3GsvgbWFYAg2zdRntXxiOlfZnj24
jt/A2rvI4UfZmAyepx0r40B4oGgopO9LSAKKKKACiiigAooooAKKKKACiiigAooooAKKKQ0AB6V9
XfBnVBqXw7slw2+3LRMSepBr5Sr6A/Z3umfTdWtS5IjkVlXPTIoBnt9FFFMQVleJb1NO8N6hdupZ
YoGYgfStWvOfjTrH9lfD26RXKy3TCFQB1BOD+hoA+WZZDNPLKesjsx/E5plIOBS0hhRRRQAUUUUA
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
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJVHV4lm0q5RhkbCf
y5q/VTUv+QZc/wDXNv5VMleLTE9jyyiiivkpbnnBRRRSAKKKKACiiigAooooAKKKKEB6lprLJplq
VYMvlKMj2Aq3WT4b/wCQDa/Q/wAzWtX1lN80E/I9GLukLRRRWgwooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKZJIkMZkkYIijJYnAFZ+t67pvh7T3vdTuUghUdWPJ9gO9fNfxB+LWpeLJJLDT2a0
0gNwF4eUerHsPagDtfiN8aFtzPpHhx1eTG17sHIU99vrXg09xNd3D3FzK8sznLO5yzGo6KQwoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKTtS0AFFFFABRRRQAUUUUAFFFFABRRRQAUnelooAKT
pS1b0m7t7HV7S6u7Zbq3hkVpIGPDqDyKAO1+H3wt1HxhcrcXSyWmmLy0rLhn9l/xr6Y8P+HdN8Na
ZFY6bbpFGi4JA+Zj3JPel8O6lYatoNne6ZsFpJGpRVx8ox93juK1qYgooooAKKKKACiiigAooooA
KKKKACiiigArm/HWur4d8HahqJba6REJxnLEcCukrxP9oXV/K0fT9JQsGnkMjYPBUf8A1xQB8/PI
8ztLIxaR2LMxOSSTk02iikMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
+j/2ftPWDwpd3uTunnIx2wOlfN/Pbr2r69+F+kf2N4A0yFowkjx+Y+DnJbnP5UAzs6KKKYjyT4+6
mtt4QgssHfczDBzxgda+a69f/aA1IT+JrKwSQsIItzL2UmvIKQwooooAQUtFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQB7l+zxpzNPquokgAbYgPXvXvteYfAzThZ+A1uDEVe5lZ9xH3l7V6f
TEFFFFABRRRQAUUUUAFFFFABRRRQB43+0JqBh8OWFiFB8+fdnuNv/wCuvnSvY/2hL+STxDp1iWzH
HEZAvoTx/SvHKQwooooAKKKKACiiigAooooAKKKKACiiigYUUUUCCiiigAooooA9b+AGnLceLLu8
YkG3hwvHqa+lK8V/Z700R6LqF+0WDLLtV8dQOor2qmIKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKhuovPtJY
s43KRn04qamv9xvoaT2A8llTZK6ZztYjNNqW5UrdSgggh24P1qKvk5q0mjznuFFFFQIKKKKACiii
gAooooAKKKKAO/8ACUzy6KFbGI3Kr9Ov9a3q5bwXM7WtxCQNqMGB78//AKq6mvqMK+ajF+R303eK
FoooroLCiiigAooooAKKKKACiiigAooooAKKKazKilmIUAZJJwBQAtcd42+ImkeC7ZhcP516ykx2
6HLE9s+grj/iN8ZINFeXSdBKXF7gq84OViPt6mvnm8vbrUbp7m8uJJ53OWd2yTQM1/FPjDVvF1+1
zqNwzR7iY4AflQewrBoopAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHpPwl+IJ8J6r/AGffOx026YDk8RMe49q+oopUniSWM5Rw
CD6g18KV7/8ABX4i/aYl8M6vcE3C/wDHpI/8S/3SfWmDPcKKKKBBRRRQAUUUUAFFFFABRRRQAUUU
UAFfLfxy1IXvj026SF0tYVXHZWPJr6ic7ELHsCa+M/Hd+NS8c6vcgEBp2VQewHFAI56iiikMKKKK
ACiiigAooooAKTvS0UAFFFFABRRRQAUUUUAFFFXdH086rrVlp4LD7RMsZKjJAPUigClRX0UP2eNB
IB/tW+5HtR/wzvoP/QVvv0pgfOtFfRf/AAzvoP8A0Fb7/wAdpP8AhnfQf+grffpSC5860V9Ff8M7
6D/0Fb79KX/hnfQf+grff+O0Bc+dKK+i/wDhnfQv+grffpR/wzvoP/QVvv8Ax2gLnzpRX0X/AMM7
6D/0Fb79KT/hnfQf+grffpTA+daK+iv+Gd9B/wCgrffpS/8ADO+g/wDQVvv/AB2kFz50or6K/wCG
d9B/6Ct9+lL/AMM76D/0Fb/9KYHzpRX0X/wzvoP/AEFb7/x2k/4Z30H/AKCt9+lILnzrRX0X/wAM
76D/ANBW/wD0o/4Z30H/AKCt/wDpTA+dKK+i/wDhnfQf+grff+O0n/DO+hf9BW+/8dpAfOtFfRf/
AAzvoP8A0Fb7/wAdo/4Z30H/AKCt9/47TC586UV9Ff8ADO+hf9BW+/8AHaP+Gd9B/wCgrffpSC58
60V9Ff8ADO+g/wDQVvv0o/4Z30H/AKCt9+lAXPnWivov/hnfQf8AoK33/jtJ/wAM76D/ANBW+/Sm
Fz51or6K/wCGd9B/6Ct9+lL/AMM76F/0Fb79KQXPnSivov8A4Z30L/oK336Uf8M76F/0Fb79KYXP
BNB059W1+wsI0LtNOq7R6Z5r7XsrdLSxgt0XasaKoHpgV534W+DGi+F9eh1WG8ubiWEHakwBUE9/
rXplAgoPSiqWrXaWOkXd0+dsMLOcHHQUAfJnxR1JtU+IeqSNgCJxEMf7NchU99cte6hc3LElppWf
k5PJqCkMKKKKACiiigAooooAKKKKBhRRRQIKKKKACiiigAooooAKACxCjqTgUVoaFafb/EGn2u0s
JbhFIHXGaAPr7wPp39l+DNKtd2dtup6Y6jP9a6GoLWJLe1ihjBCIgUA+gFT0xBRRRQAUUUUAFFFF
ABRRRQAUUVFPIYreSQAEqpbB9hQB8mfFvUE1H4jai0bMUh2xYPYjrXEVpeIb46l4m1O9IC+dcuwA
6AbjWbSGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUmeKWpbaFri6hgUFjLIqADvkg
UAfWHwj03+zfh3pyk5aZTKRjoTXdVnaHaLYaHZWixiPyoUUqBjBAGa0aYgooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooA8x1sEa1dZBHzms+tzxWjrrTsykAqNpPesOvl8VG1WS8zgqK0mFFFFc5AUUUUAFFFF
ABRRRQAUUUUAdN4NnZb+WHICuucHuRXb15t4elWHW7dnOAW2/ia9Kr6HL5Xopdjtou8QooorvNQo
oooAKKKKACiiigAooooAKKK5jxf450fwbZedqE2ZWB8uBDlnP0oA2dU1Wy0awkvb+4SC3jGWdjiv
nT4h/GK88QGbTNFZrbTSdrSjh5R/QVyHjPx3q/jS/aS9mZLRWzFaq3yr6Ejua5igYEkkknJPJJ70
UUUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooGFFFFAgooooAKK
KKACiiigAooooAKKKKACprW5nsrqK5tpGinhcMjqcFSO9Q0UAfWfwy8eW/jHQkWaVRqcACzoeC3+
0PY13lfFHhfxJeeFdeg1WyOWjOHQ9GXuK+v/AA34gs/E2h22p2ciskqgsoOSjd1PuKYjYooooAKK
KKACiiigAooooAKKKKAI5v8AUSf7p/lXxFrLFtcv3PUzv/6Ea+3Zv9RJ/un+VfEOsqU1u+U9RcP/
AOhGgaKVFFFIAooooAKKKKBhRRRQIKKKKACiiigAooooAKKKKACuy+FMHn/EvRhjISXzPy//AF1x
temfAlc/EiM4+7ayf0oA+o6KKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAK4f4s6odM+HWqSJKEklTylGeW3HaQPzruK8U/aH
1RY9G0vSwDvnmMuc/wAKjBH5kUAfPYGABRRRSGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAV3Hwj0+TUPiPpwRdwg3St7ACuHr2P8AZ609Z/EWpX7EhoIVRAOhz1/nQB9GUUUUxBRRRQAU
UUUAFFFFABRRRQAVgeNL1dO8G6rcmQRlLdipzjnHQVv15r8cdRSz+HVzCSfMuZEjT/voZ/TNAHyy
CSMnljyc0tFFIYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXS/D7TV1bx5pFoxIVpw
zHGcBef54rmq9P8AgTpq3nj17p42ZbW3JBHQMx4J/wC+TQB9QDpRRRTEFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
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
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQMKK
KKBBRRRQAUUUUAFFFFAwooooEFFABZwoBYscBQMkn2r07wL8HNV8RvHeasr2On5Bw4xJIPYdqAON
8MeE9V8WanHZ6dbswZsPMR8qDuSa+q/BXgnTfBekLZ2aBp2AM85HzSN9fT2rS0Dw9pvhvTE0/TLd
Yol5JA5Y+pPc1rUxBRRRQAVDc3CWttLcSnEcalmPoAMmpq5T4jar/Y/gLV7oMocwNGu49Sw28e/N
AHyTrV4dQ12/uyxPnTswJ9M4H8qo0gzjnr3o7Uhi0UUUAFFFFABRRRQAUUUUAFFFFABRSZpaACii
igAooooAKQ9KWnRRtNNHEgyzsFA9STQB9W/BzTF074d2J2kST5kfPfJ4/SvQKy/Dto1j4c061ddr
RQKpHpgVqUxBRRRQAUUUUAFFFFABRRRQAUUUUAfOv7Q16smuaZZLJu2Rl3QHoe2fzrxqu7+MOpf2
j8R7/wCUKIFWHg9SBz/KuEpDCiiigAooooAKKKKACiiigAopBS0AFFFFABRRRQAUUUUAFFFAUuQo
6sdo/HigD6l+B+nvZfD2KRxj7TK0o+mcf0r0quf8Facml+DdKtVBG23QsD/eIGf1roKYgooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigDlPGNgHt47xQdyHa2B2Pf/PrXGV6nf2iX1jNbNwJFxn0
PUH868ulRopWRgQVYqcjFeHmdHlmprqcteNncbRRRXlnOFFFFABRRRQAVZs7C41CXy7eMuQMn0Aq
5pGhXGqMHA2W4OGc9/p6131lYW9hCI7eNVGOTjk/WvRwmBlU96ei/M2p0m9XsZ+j+H4NL2yH95cb
cFj29cVY1rXdO8P6dJfalcpDCik8nk+wHc1znjr4kaT4LtGSWQTagy/urdOST6n0FfMnirxfq3i/
UTd6lOSo+5CvCoPYV7kKcacbRVkdcUkrI6b4gfFbUvFztZWZa00xWOFUkNKP9r29q86HApaKooKK
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
ooAKKKKACiiigAooooAKKKKACiiigAooooASisvWdYTSI43aIyF2xgHGPesf/hNov+fJ/wDvsf4V
hPEUoPlk7MlzinZs62iuT/4TaL/nyf8A77H+FH/CbRf8+T/99j/Co+uUP5kT7SPc6yiuT/4TaL/n
yf8A77H+FH/CbRf8+T/99j/Cj65Q/mQe0j3Osork/wDhNov+fJ/++x/hR/wm0X/Pk/8A32P8KPrl
D+ZB7SPc6yiuT/4TaL/nyf8A77H+FH/CbRf8+T/99j/Cj65Q/mQe0j3Osork/wDhNov+fJ/++x/h
R/wm0X/Pk/8A32P8KPrlD+ZB7SPc6uiubg8Y2Lx5ljljbP3cbuPrWlBr2mXBUJdIGborcGtI16c/
haKUovZmnRTElSVdyOGHqDmn1sUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+rakul2RuChc
5Cqo9a5//hNT/wA+f/j1P8aykQ20YbgsSy5/KuOrx8bi6lOrywdkkc1WrJOyOu/4TY/8+f8A49R/
wmx/58//AB6uRork/tCv3/Az9tLudd/wmx/58/8Ax6j/AITY/wDPn/49XI0Uf2hX7/gHtpdzrv8A
hNT/AM+f/j1bujap/atoZvL8vDbcZzXmlei+GYlj0SEqu0tkt7mu7A4mrWm1LZGtKcpPU2aKKK9U
6AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAQjIxUF3eW2n2zz3U8cEKDLO7AACsvxL4r0nwrp73epXKR4UlY8/M59AK+YvH3
xJ1PxvchDm206P7lurfeP95vX6UAdX8RPjNcaqZ9J8PuYbIkq9yOGce3oK8fZmdi7MWZjksxySfe
kopDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKT09asWVldaleRWllA888p2oiLkk19AfDn4MQab9n1fxCqy3Y+ZLUjKx+mfU0AcX8O/g/e+JR
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
1CRqgAAAAwO1SV9ZFWSR6CVgoooqhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUhAIwRwaWigDktb8LB/MubEfOTuMXr9K5CSN4ZGjkRldThlIwQa9b
rK1bQ7fVIuQI5gciRRz+PrXm4rARqXlT0ZhUpJ6rc83oq5qGmXGnTmOZCFBwrAfK30qnXhzhKDtJ
WZytNOzCiiipEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRW7o
/hufUD5k+6GEY6jlvpWtGjOrK0EVGLk7IzbDTrnUZglvGzYI3N2X613mkaFBpSlh+8mI5cjp7Crt
pY29hD5VvGsa9TjqT6k1Zr3sNg4UVd6vuddOko69RaKKK7TUKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigBK868TTrPrc23OFwpz6ivRGOFJ9q8t1Gc3GpXEpUKWc8CvNzOVqSXdmFd2
jYq0UUV4JyBRRRQAVd0m2+16rbw7VYM4LK3Qgcn9KpVv+EYFl1jzGDZiQspHTPTn8zW+Fhz1YrzL
pq8kjrv7D0z/AJ84vyo/sPTP+fOL8q0KK+m9nDsju5V2M/8AsPTP+fOL8qP7D0z/AJ84vyrQoo9n
Dsg5V2M8aHpoIP2OLI9qtrbwodyQxg+oUA1NSU1GK2QJJC0UUVQwooooAKKKKACiiigBK858TTGb
W5vmDBcKMdhXocjhImYjO0E4+leV3cgmu5ZACAzlgD9a8zM52pqPdmFd2jYhooorwjkCiiigArY8
MwrPrcILEbcsMe1Y9dX4LgYzXExUbQAobuDXXgoc1ZLtqaUleSOzooor6U7gooooAKKKKAEPSvK9
RRo9RuFdSpEjcH616pXnXie38jWpTuLCTDcjGM9q83M43pJ9mYV1eNzHooorwTkCiiigAq1p18+n
XqXCc7Tyueo7iqtFVCcoSUluhptO6PVbK7jvbSOeM/K4zjPSrFeX6bqlxpk4khbK9GRuhFddbeL7
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
whFIDJYvsb+4xyD9DXLXmnXNhIVuIivoccH8a8itg6tLVq67o5pU5R3KtFFFcpmFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRWjY6JfX7YjhKr3ZxgV1+l+GLWwxJLieb1YcD6CuyhgalV3asu7NY0pS8jlNO8P
X2o7XCeVEf434B+g712Gl+HrTTRvx5svd2HT6DtWwBgYor2aGDpUtUrvudMaUY7C0UUV1mgUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHIeNbjC21uH65Zl/QH+
dchW74tn87WimMeUgTOevfP61hV81jp81d+WhxVXeTCiiiuQyCiiigBUQu6oOCxAr1W0jMNnDGTk
qoBI+lea6VEk2q2yONys4yK9QAxwO1e3lcfccvM6sOtGx1FFFeqdAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQBx3jWdt9tACNuCxHfNclWz4onWbXJtoI2AKc+orGr5rGz5qz8tDhqu8mFFFFchmFFFFA
E9lEs99bxNna8iqcdcE16qihECjoBivPPC0LS65Ey4xGCzZ9MY/rXole9lkLUm+7OugrRuLRRRXp
G4UUUUAFFFFABRRRQBi6/oo1S3DRkCeMErn+L2NefSxPBK0ciFXU4KntXrdYmt+H4tVAkQiO4HG7
HDD0NedjMH7X34bmNWlzarc88oqe7s7iymMU8ZUg4yRwfpUFeFOEou0lZnI01owoooqRBRRRQAUU
UUAFFFFABRTkR5HCIpYngADJNdLpPhOSYpNenZGedg+8fr6VvRw9Sq7RXzLjCUnoYum6ZcanceVA
uABlmboB716BpOkwaVbBIwC5++/cmrVtbQ2sKwwoERRgAVNXu4bBxoq+77nXCmo+otFFFdhoFFFF
AHLeM5wtnBDuIZmJwO4FcVXSeMp2fUY4TjaiZGOuTXN185mE+au120OKs7yCiiiuIyCiiigByK0k
iooyzEKB7mvVbZDHaxI33lRQR7gV5vo0C3OsW0TkgM+SR145/pXpwr28rhaDl3Z1YdaNi0UUV6p0
BTWUMpUjIIwRTqKAPPPEWjHTbrzIUJtpOQeyn0rEr1i4t4rqBoZlDIwwQa4fWvDU1kfNtQ0kAGT6
rXiYzAyTdSmtOxy1aTvdHP0UUV5RzhRRRQAUUUUAFFFFABRRRQAUoUswUAknoBV7T9Iu9RkCwxsE
zy7DCgV2+k6BbaYof/WT4wXP9BXbh8FOrq9EawpSlr0MnRPC4Xy7q+5b7wiI6emf8K60AAYHSilr
3qVKNKPLFHXGKirIKKKK1KCiiigDkPFWi7gb+2Qls/vVHp61yFeuEAjB5FchrnhcjzLqxGR1MP8A
PH+FeTjcE5P2lNa9Uc9WlfVHJUU51ZGKOpVh1BGCKbXjNW0ZyhRRRSAKKKKACiiigAooooAKntLO
a+uVggQs7H8B7mtHSfD11qTK7KYoARlm4JHsK7jT9LtdNiCQRgNjDOR8zfU16GGwEqlpT0X4s2p0
m9XsUtD0GPS03yESXDdWHQewraoor3YQjCKjFWR1pJKyFoooqxjSAwIPfivMNWtmtNUniKhQGJUD
0PSvUK5zxRoz38a3VuMyxKQV7sPb9a4cdQdWlpujKrHmjocLRSkFWIIII4INJXzxxBRRRSAKKKKA
CiiigBQCSABkmvUdMgFvptvGE2YjGV9DjmvNtPh+06hBCG273UZx05r1MDAx6DFezlcNJS+R1Yda
NjqKKK9c6AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACopoIriMpLGrqeoYZqWigDmb7whaTKzWjGFyScdV+ntXMXuiX9h8
0sJKH+JeR+lemUVxVcDSqa2s/IylSizyIgg4PBor0m98P6fe7maEJI38acGuZvPCF7ES1u6yrnAH
Q4rzKuXVIax1RhKjJbanOUVNPaXFu22aF0P+0uKhrhlCUXaSsZNNbhRRRUiCiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooAycDrV210i+vCPJt2KkZ3
EYH51cKc5u0Vcai3sUqVVZ2CqpZj0AGa62x8G87r2bj+4n+NdHZ6XZ2KqIIFBH8RGT+dd9LLaktZ
uy/E2jQb30OLsfCl9dFWmAgjPJLfe/Kun07w1Y2GHK+dIP4nHT6CtmivUpYSlS1S1N40ox2QAADg
AUtFFdRoFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFAHnep6Vqc+p3EotJnVnO1tpOR2qp/Ymp/wDPjP8A98mvTqK8+WXUpScm3qYuim7nmP8AYmp/
8+M3/fJo/sTU/wDnxm/75NenUVP9l0u7F7BHmP8AYmp/8+M3/fJo/sTU/wDnxm/75NenUUf2XS7s
PYLucT4b0m9g1VZp7Z441U8uuOfau3oorso0Y0Y8sdjWMVFWQUUUVsUFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAecX+l6rcX08zWczFnJ3BOozxVf+xNT/58Z/8Avk16dR+NefLLqcpOTbuzF0E3dnmP
9ian/wA+M3/fJo/sTU/+fGb/AL5NenUVP9l0u7F7BHmP9ian/wA+M3/fJo/sTU/+fGb/AL5NenUU
f2XS7sPYLucn4U0ue1nmmubeSNwAFLDGQetdZRS120qUaUFBbI1jFRVkFFFFalBRRRQAUUUUAFFF
FABRRRQBVvLC2v4/LuIlde2eo+lcxfeDSFZ7KbJyTsfj8Aa7CisauHp1V76uTKEZbo8uu9KvrIkT
27gZxuxlT9DVOvXCAwwcEHsapT6Pp86hZLSLAOflXH8q86plcXrB2MHh10Z5hRXpH/COaV/z6L/3
0f8AGj/hHNK/59F/76P+NZf2XPuhfV33PN6UKzEBQST2Ar0f/hHNK/59V/M1djsLSIho7aJWHQhR
kVUcqfWQ1h31Z5zaaNf3pHlW77Tn5mG1ePc1u2Pg1ioe+m2nP3E5/M12NFddLL6UNWrvzLjRit9S
lZ6XZ2IHkQKpAxuxkn8au0UV2xioqyRqlbYWiiiqGFJS5rJvPENhY3DQSu3mL1AXOKiU4wV5Owm0
tzWqOWRYYmkcgKoJJrEbxbpgUkNIxA4G3rXPav4mn1CMwQp5UDDDA8k/jXPVxlKEb3v6ESqxSvcy
9SuzfahNcYwHYlR7dqq0UV85OTnJye7OJu7uwoooqRBRRRQB0Xg+Bn1R5QAVjQg56gnpXd1z3hKz
a30syOoDStuBxziuhr6XB0+Sik/U7qUbRSFooorrNAooooAKQgEYIyDS0UAYuo+G7K/y4TyZT/Gg
6/UVyt54X1G1LFI/PTsY+Sfw616HRXJWwlKrq1Z90ZypRlueSPHIjbXRlb0IxTa9XltbecgywxuR
0LKDVKTQNMlkLtaruPXGRXDPKn9mX3mTw/ZnmtFekf8ACOaV/wA+i/8AfR/xo/4RzSv+fRf++j/j
Uf2XPuhfV33PN6fHDJKQI0ZiTj5RnmvR4tB0yKQSLaJkeuSPyNX4reKBSsUaICckKMZq4ZU/tS+4
aw/dnn1p4Z1O6YBoDCucEycY98d66Sw8JWdqwecmdgBwwwoP0roaMV3UsFSp6pXfmaxpRQ1ESNQq
KFUdABin0UV1mgUUUUAFFFFABRRRQAUUUUAZWpaFZakCzpslP/LROD+PrXJ33hW/tiWhUTxjoV+9
+VegCiuWthaVXVrXuRKnGW55NLBLAxSWNkIOCGGKjr1iW2gnx50SPjpuUHFUX8P6ZI5Y2q5JycEi
uCWVu/uy+8xeH7M81or0j/hHNK/59F/76P8AjR/wjmlf8+i/99H/ABqP7Ln3Qvq77nm9SRwSzMFj
jZiTgbVzzXpMOh6bbkslpHkjHzDP86uRQRQKVijVAecKMVpHK/5pfcNYfuzgrPwrqN0QZFECHPL9
fy6102m+GbKxw8g8+UfxMOAfYVt0V20sHSpapXfmaxpRjshAoUAAAAdhTqKK6zQKKKKACiiigAoo
ooAwNU8MW2oO00TeTMeSQMgn3Fcle6FqFizb4GeNf41GRXpdFcdbBUqurVn3RnKlGWp5GVIJBBBH
Y0leqvYWjsWa2iLHkkoMmqZ8O6WxJNouSc9TXDLK30kZPDvozzaivSP+Ec0r/n0X/vo/41PFpNhD
GES1j25z8y5/nSWVy6yEsO+rPNobSe4cLDDI5PQBSc1sWPhS/uSGmUW8Z6lvvflXexxpEgVFVVHQ
AYAp1dNPLacdZNs0jQit9TI0vw/aaY/mLmSXs7dvpWv2opa74QjBWirI1SSVkFFFFWMKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigBjIrgh1BBGCCM1kXfhrTbvJ8rymIxmM4x+HStqkqJU4zVpK4mk9zirn
wZOgLW1wsnPCsMED61i3Oj6haKGltnAOeQM/yr0+kIB4riqZfSltoZSoxe2h5IQR1GKSvUJ9Ksbn
Hm2sbEDAIXH8qyp/B9g64iaSM565zXHPK5r4WmZvDvozhKK6ufwXKHJhulK44DLyTWZL4Y1SKMsY
Q2Oytk1zSwVeO6+4zdKS6GPRVqfTb23x51tKuenynmq7o6EB0ZSezDFc7pzjumiHFrdDaKKKgQUU
UUAFFFFABRRRQAUUUUAFFFFFgCipFglddyxOwPcKSKtxaLqMyqyWkpDdCRgVpGjOWyb+RSjJ7IoU
VvQ+EdSeQBwkanqxbOPwrRh8FDafOujuz/CvFdEcDXl0t6lqlJ9DkKckbyMFjRmY9lGa9AtvC2nQ
FWdDKwGDvPBPritSGzt7dQIYI0CjAwoyK6oZXJ/G7ehpHDvqzz608PajdqGSAopGQXOBW3Z+DEAD
Xk5J4O2PjB9M11tFdlPAUYatXfmaRpRRn22i6faACK2TIOQSMkH6mtAAAcDH0opa7IxUVZKxokls
FFFFUMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAQ15dqkzT6pcSNjJcjjpXo+oTLb6fPK+dqoc469K8tJyxPqa8nNJ2ionPXeiQlFFFeKcoUU
UUAFFFFABViwtHvb2K3jGSzYPsO9V+vSu78L6R9jtvtUy4mlHAYcqP8A69deDw7rVFfZbmlKHNLy
N63hW3t44UGFRQBUtFFfSbHcFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBCA
ailtYJiDLBG5HQsoOKmoosBnT6Lp1xgy2cR29No2/wAsVWk8MaVJGUFtsJ/iVjkfmTWzRWbpQe6X
3Csnujnv+EN03+/cf99j/Cmv4NsCjBJZ1YjglgQD9MV0dFR9Wo/yon2cexyP/CEj/n9/8c/+vR/w
hA/5/T/3x/8AXrrqKz+pUP5Reyj2OR/4Qgf8/p/74/8Ar06PwVGJFMl2zIDyAuCfxrraKawdBfZQ
ezj2Od/4Q3Tf79x/32P8KVfB+mqwbdOQDnBYY/lXQUVf1al/Kh8kexlf8I3pP/Pmv/fTf41Zj0uw
hjCJaQ7RwMoCfzNXKK0UIrZIpRQ2OJIkCIiqo6ADAFPooqxhRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYn
iiYw6JLtIy5CkHuCea88rr/Gs67ba3wd3L57Y6VyFeBmUuarbsjjru8rBRRRXnGIUUU+OGWYkRxs
5HJCqTiqjFydkhpX2GU5UZ2CqpZjwAO9bVj4Wv7shpVEEZGct1P4V1Wl+H7TTAGx5s3B3sOh9vSu
2jgKk2nJWRrGjJ76GT4e8ObCt5ep8w5SNu3ua60UUV7lKlGlHlidUYqKshaKKK1KCiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAieGKUgvGjEdNyg4qpLounTSF3s4ix6nbWhRUuKe6E1cy2
8P6W6kGyjwfTIP5g0i+HtKjXAskP+8Sf5mtWip9lC97L7hcq7Gauh6YrBhZxAg5HFXkhjiyUjVSe
u0AZp9LVKMVshpJbBRRRVDCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKAPNf+Fhat/z72X/AHw//wAVR/wsLVv+fey/74f/AOKo
ooAP+Fhat/z72X/fD/8AxVH/AAsLVv8An3sv++H/APiqKKAD/hYWrf8APvZf98P/APFUf8LC1b/n
3sv++H/+KoooAP8AhYWrf8+9l/3w/wD8VR/wsLVv+fey/wC+H/8AiqKKAD/hYWrf8+9l/wB8P/8A
FUf8LC1b/n3sv++H/wDiqKKAD/hYWrf8+9l/3w//AMVR/wALC1b/AJ97L/vh/wD4qiigA/4WFq3/
AD72X/fD/wDxVH/CwtW/597L/vh//iqKKAD/AIWFq3/PvZf98P8A/FUf8LC1b/n3sv8Avh//AIqi
igA/4WFq3/PvZf8AfD//ABVH/CwtW/597L/vh/8A4qiigA/4WFq3/PvZf98P/wDFUf8ACwtW/wCf
ey/74f8A+KoooAP+Fhat/wA+9l/3w/8A8VR/wsLVv+fey/74f/4qiigA/wCFhat/z72X/fD/APxV
H/CwtW/597L/AL4f/wCKoooAP+Fhat/z72X/AHw//wAVR/wsLVv+fey/74f/AOKoooAP+Fhat/z7
2X/fD/8AxVH/AAsLVv8An3sv++H/APiqKKAD/hYWrf8APvZf98P/APFUf8LC1b/n3sv++H/+Kooo
AP8AhYWrf8+9l/3w/wD8VR/wsLVv+fey/wC+H/8AiqKKAD/hYWrf8+9l/wB8P/8AFUf8LC1b/n3s
v++H/wDiqKKAD/hYWrf8+9l/3w//AMVR/wALC1b/AJ97L/vh/wD4qiigA/4WFq3/AD72X/fD/wDx
VH/CwtW/597L/vh//iqKKAD/AIWFq3/PvZf98P8A/FUf8LC1b/n3sv8Avh//AIqiigA/4WFq3/Pv
Zf8AfD//ABVH/CwtW/597L/vh/8A4qiigA/4WFq3/PvZf98P/wDFUf8ACwtW/wCfey/74f8A+Koo
oAP+Fhat/wA+9l/3w/8A8VR/wsLVv+fey/74f/4qiigA/wCFhat/z72X/fD/APxVH/CwtW/597L/
AL4f/wCKoooAP+Fhat/z72X/AHw//wAVR/wsLVv+fey/74f/AOKoooAP+Fhat/z72X/fD/8AxVH/
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
n3sv++H/APiqKKAD/hYWrf8APvZf98P/APFUf8LC1b/n3sv++H/+KoooAP8AhYWrf8+9l/3w/wD8
VR/wsLVv+fey/wC+H/8AiqKKAD/hYWrf8+9l/wB8P/8AFUf8LC1b/n3sv++H/wDiqKKAD/hYWrf8
+9l/3w//AMVR/wALC1b/AJ97L/vh/wD4qiigA/4WFq3/AD72X/fD/wDxVH/CwtW/597L/vh//iqK
KAD/AIWFq3/PvZf98P8A/FUf8LC1b/n3sv8Avh//AIqiigA/4WFq3/PvZf8AfD//ABVH/CwtW/59
7L/vh/8A4qiigA/4WFq3/PvZf98P/wDFUf8ACwtW/wCfey/74f8A+KoooAP+Fhat/wA+9l/3w/8A
8VR/wsLVv+fey/74f/4qiigA/wCFhat/z72X/fD/APxVH/CwtW/597L/AL4f/wCKoooAP+Fhat/z
72X/AHw//wAVR/wsLVv+fey/74f/AOKoooAP+Fhat/z72X/fD/8AxVH/AAsLVv8An3sv++H/APiq
KKAD/hYWrf8APvZf98P/APFUf8LC1b/n3sv++H/+KoooAP8AhYWrf8+9l/3w/wD8VR/wsLVv+fey
/wC+H/8AiqKKAD/hYWrf8+9l/wB8P/8AFUf8LC1b/n3sv++H/wDiqKKAD/hYWrf8+9l/3w//AMVR
/wALC1b/AJ97L/vh/wD4qiigA/4WFq3/AD72X/fD/wDxVH/CwtW/597L/vh//iqKKAD/AIWFq3/P
vZf98P8A/FUf8LC1b/n3sv8Avh//AIqiigD/2QplbmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKPDwv
VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDEyMDAKL0hlaWdodCAxMjkwCi9D
b2xvclNwYWNlIFsvSUNDQmFzZWQgNSAwIFJdCi9TTWFzayA3IDAgUgovQml0c1BlckNvbXBvbmVu
dCA4Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggNDg1MTc+PiBzdHJlYW0KeJzsvfmXXFd9
r+3/5v31HX6JGW0IJGYyCddvEnKTSzyIEJDXdYyssaVT89TzLBLiSbZEWd01nKGqeqi+cV6MycXK
j1fGMSQOgwEDN4RACESfd39LjjFGtlqtrt41PM96FsuwFl5gVe1znjpn7+8ttwAAAAAAAAAAAACM
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
e3wxUawFk7CedJZSY41EcWl3KEXwBqLjy3+1eKkuA3B3D1rBU4GvTWz9weUdmYSm/07ITP8fjWbe
OAplbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1h
Z2UKL1dpZHRoIDEyMDAKL0hlaWdodCAxMjkwCi9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9CaXRz
UGVyQ29tcG9uZW50IDgKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxNjU0MD4+IHN0cmVh
bQp4nO3diYNdVZmucaoyD5AAgcgcBhmDDAmTTIrIDAIaGwTiAEaUljSD0LYoUdSOU+wofdvQfbEN
aW8HW1SCgTbYRDsyBggGiQaCwUCszGSoJDUdL8iUoarOPmd/+3vX2uv5/QW11vrWm8qp/Z69zTYA
AAAAwjVgvyOOP2/UpZdedN6ph+6p/mEAYEs9jr7qX6Y//qdVLR1/2UJHy+qXnvr5/7n6lP7qnxFA
6gad8/X/XrCusmVMdaJ9xRP//rEd1D8vgCT1uug/nt2YIag20/KnaVdup/7JAaRk20/cuyTLL1Wd
Wz3rH3ZVrwBAEs766Yq6o+pNax/4SA/1QgCUWu/LZ9X8f8CudCwYz+dZAIrR5wvP1f+fwE5VFn13
Z/WqAJTPRbO3elrBxMJrGtVLA1Amw+5YV0hY/VXbrJPU6wNQFlcvKi6sXrPsG33ViwQQv4ET1had
Vq9qn0F9B0Auu9/T7pFWr6o8eoR6tQDiddgs4z8IVrHgQvWKAcTpwEddw+qvms5TrxpAfPaY4fu7
1RsWHqNeOYC4DJiqSatXPbmfevUA4tE4vlWWVq+ozNxJvQMAIjGmwIdDs2n7pwb1JgCIwKHz1Gn1
qjWXqfcBQOgG3av74GpzC4ar9wJAyBq+JP3ganOVGXwVKYCuXGDwTXyWWv9RvSMAwnTAk+p82tqK
89W7AiA8faaE8sHV5ubuq94ZAIG5boM6mLpSuauPenMABOTkF9Wp1J0N16v3B0Aodp2lTqRqmvgG
UgCv6HGr21dc5TB7F/U+AZDTl2+yab+dFxYCaRsxX51D2a27Qr1bAHQG3avOoNosPFK9YwA0Gsa3
qQOoVpWZg9S7BkDgwpXq9KlH263qfQPg7cAAyzfZrLxAvXcAPIVavslmHl+YDKTjH1rUkZMPFR0g
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
2UWgml+qZ12LvLLwJZtdBKr5unrWtcgrC3y1KJycqZ51LfLKwtE2uwhUM0g961rklYXdbXYRqKpD
PexS5JWBDr66HV7Wq6ddirwy0GSziUB1S9XTLkVeGXjKZhOB6v6gnnYp8srALJtNBKp7Qj3tUuSV
gfttNhGo7jfqaZcirwzwbTJwk/YD7uSVAeo4cHOPetqlyCsDP7TZRKC6O9XTLkVeGfgPm00Eqpuq
nnYp8soAeQU35JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4Z
IK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfk
lQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpw
QV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCv
ABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB
8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFe
GSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX
5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIK
cEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkg
rwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SV
AfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBB
XhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8A
F+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHy
CnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4Z
IK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfk
lQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpw
QV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCv
ABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB
8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFe
GSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX
5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIK
cEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkg
rwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SV
AfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBB
XhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8A
F+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHy
CnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4Z
IK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfk
lQHyCnBBXhkgrwAX5JUB8gpwQV4ZIK8AF+SVAfIKcEFeGSCvABfklQHyCnBBXhkgrwAX5JUB8gpw
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
zS4J0aXvS8W7yysxmCgjAyLQ2FHlwNo0PziDOKgROrVMZyPbk6abp4E9Mx6xDEMjh8j9+TfA0BPr
ck6sYrwtsBBALU0hY7YaLeJmvy0RYvI/b7PnKevdvQb7Tm8EfWt47vF4qyd3m1ES02ota0Fk43yj
NFOeB/bY+E9aKWBNp3eRgaMT3Wdmhs273auGIJc+ODVupWWfcUZuDXLU3IK2xrwXgd4hUu0lf3xk
7romYBSh1xoIYZRn04VG8zySnqC/lKO8lrH3t2q5tD6XQtbjtVyAXIDUQF+7fsbR23nShAPZ61+h
ZWfz1UVSRnr8z1y2p7o/Op97J8chDTo+9hrnJfKUmZvK5Zd7v66KKR7L5IH3ftZjoG2KsWO2jBSu
s3p7/4UaT2tRO0Zfv8AKUc2lMaFsUPX86kATs0Y5CkLYwW7bnxt/P2velO9BHeV+HjcwaLA3B+k/
d2zjiRQwbq4Q7AFQMSmtCOvUfI+8gBPkW7qUTwBriOAsjaihKUGEr8+I+ApH8jzf+MdZd35xQo5k
DSpQCbz/8ubZleaj9pgcZHtryV4CAuIWtVtmDqbMEUX6SMXSWVtoJjUICytQmvqnd/8Hj964FApl
bmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwvVHlwZSAvUGFnZQovUmVzb3VyY2VzIDw8L1Byb2NT
ZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldCi9FeHRHU3RhdGUgPDwvRzMg
MyAwIFI+PgovWE9iamVjdCA8PC9YNCA0IDAgUgovWDYgNiAwIFI+PgovRm9udCA8PC9GOCA4IDAg
UgovRjkgOSAwIFIKL0YxMCAxMCAwIFI+Pj4+Ci9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCi9Db250
ZW50cyAxMSAwIFIKL1N0cnVjdFBhcmVudHMgMAovVGFicyAvUwovUGFyZW50IDEyIDAgUj4+CmVu
ZG9iagoxMiAwIG9iago8PC9UeXBlIC9QYWdlcwovQ291bnQgMQovS2lkcyBbMiAwIFJdPj4KZW5k
b2JqCjEzIDAgb2JqCjw8L2guYTBjaTVvdm5rOWNkIFsyIDAgUiAvWFlaIDcyIDc4NC43OTk5OSAw
XQovaC44OGUyNGFyYzMwd2EgWzIgMCBSIC9YWVogNzIgNzAxLjAwNTA3IDBdCi9oLjc1c2l6cnRn
d2tkdCBbMiAwIFIgL1hZWiA3MiA2NDkuMjM0OTIgMF0KL2guZGZna2RzdWFkbmM2IFsyIDAgUiAv
WFlaIDcyIDYzNC42ODg2NiAwXQovaC5kZmdrZHN1YWRuYzYgWzIgMCBSIC9YWVogNzIgNjIwLjE0
MjQgMF0KL2guZGZna2RzdWFkbmM2IFsyIDAgUiAvWFlaIDcyIDYwNS41OTYxMyAwXQovaC5kZmdr
ZHN1YWRuYzYgWzIgMCBSIC9YWVogNzIgNTkxLjA0OTg3IDBdCi9oLmRmZ2tkc3VhZG5jNiBbMiAw
IFIgL1hZWiA3MiA1NzYuNTAzNiAwXQovaC5kZmdrZHN1YWRuYzYgWzIgMCBSIC9YWVogNzIgNTYx
Ljk1NzM0IDBdCi9oLmRmZ2tkc3VhZG5jNiBbMiAwIFIgL1hZWiA3MiA1NDcuNDExMDcgMF0KL2gu
ZGZna2RzdWFkbmM2IFsyIDAgUiAvWFlaIDcyIDUzMi44NjQ4MSAwXQovaC5kZmdrZHN1YWRuYzYg
WzIgMCBSIC9YWVogNzIgNTE4LjMxODU0IDBdPj4KZW5kb2JqCjE0IDAgb2JqCjw8L1R5cGUgL0Nh
dGFsb2cKL1BhZ2VzIDEyIDAgUgovRGVzdHMgMTMgMCBSCi9WaWV3ZXJQcmVmZXJlbmNlcyA8PC9U
eXBlIC9WaWV3ZXJQcmVmZXJlbmNlcwovRGlzcGxheURvY1RpdGxlIHRydWU+Pj4+CmVuZG9iagox
NSAwIG9iago8PC9MZW5ndGgxIDUwNzc2Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMjU1
NjY+PiBzdHJlYW0KeJzsvQl8FEX6P/xUdfd0z91zn5kjk5ncBJJAEghkgIRDRG5MkEgQIpfKjYpX
WOUQD1hXWY9VUHddvJYhHAZkF1ZZb8T7wAsVzxVhXWQ9yMz7VM1MgBX58X/f//v+P+u73dS3nqqu
rqqu56inqnsCEACwIYjQfXB9wyBpjNQPgF6GuVcOHjlizFWX3KnDi8cAyIWDx4wboPuLfCPSCbze
fcSYsvLb7544BMu7Md0yvn5448hbZn4LUDAdwHLrlIsnz4l1L1uE14/g9d1TFi0I3et/8+8A2tUA
mrEXzpl28QuXN90J4KzG9CXTJs+fA27QYv21WF6ddtHlFy6OXvQyVl0PcKF1+tSLL4vM/SYHoAb7
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
m1gBX2BUsI7IVdm10bFDx02MOzWS0bfglQ/y2Yr8h1198y+tHrFmWmPfbc/ZddXpeVaZWFd4/I71
a5aTeWd/s+OytqnM7qijFu4Rysth/Mu9OOGbAn7zd3c/+a1KXDzSjTOMyr95GiXwJeWAWHnFu4oS
Q0idNtxuxs36lfgKcoV6pdZqt+PryHXqdO1qez6+hdyiztVW42Xqau17+F71Ae0r3EvSSbUGD1Hz
WrP6L+ofsWIz7LVd0kjoHtdYq5Qq6r2TMZpOVF3PYUJlMMGsHy/5jpSnn1j/TgjxdtygUvJhnezH
VheVyJL8ApmBEFJY5A7yLdnQ1jBGYS88M7wu3BOWwGipZg+FlyH9box3INyKFqJ+JCDoe4KSlr2s
cs2rPETK8SV2gREn8gANtgss8jDO/oj6kR8BEt83Cu3wq34/MD8SQBd7zxBco7KIEZ89lc0lvfXK
PjaLbCp5a8bFbbgDWEPtP9ppsUnwDyf3pZs1NZa+mFkInfFm3rMi1kyi9D8VG+gGB/2gRmG5ivUn
wMrohsqSOrJt6Q19rcKswi8XrpqLP9ssqPLmFYUbV2s/Qv39PLMmvUJq0LWUERT0MOqlE5f2wuR4
WU8ZKRPRxDzBZQdIFg1hjlXHKMYvR8XnSav0Cp2sW1kJy292x5PMF+lmR44no8RavI4cw8JCYS1a
KwgL0UJMWvHVhCD23RZE2IhFvJ/M7KSuxX4ydQ9Kiu9tB903udBL57bQMc7/thAWQ4k0CEfv/fw/
xOdxou8kvYL+r/Eb4kK6yAIq9yw8in0/A7TbgC9AKP5+BoHOhCguxW88+ii78k70gFglnGHfWI8h
K4GqsohVA5J5tx9Z3te3d19f3/IjwpklR5ZQCpN9S99eQifk/wF2bGvgCmVuZHN0cmVhbQplbmRv
YmoKMTYgMCBvYmoKPDwvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9BQUFBQUErQXJp
YWxNVAovRmxhZ3MgNAovQXNjZW50IDkwNS4yNzM0NAovRGVzY2VudCAtMjExLjkxNDA2Ci9TdGVt
ViA0NS44OTg0MzgKL0NhcEhlaWdodCA3MTUuODIwMzEKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94
IFstNjY0LjU1MDc4IC0zMjQuNzA3MDMgMjAwMCAxMDA1Ljg1OTM4XQovRm9udEZpbGUyIDE1IDAg
Uj4+CmVuZG9iagoxNyAwIG9iago8PC9UeXBlIC9Gb250Ci9Gb250RGVzY3JpcHRvciAxNiAwIFIK
L0Jhc2VGb250IC9BQUFBQUErQXJpYWxNVAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURUb0dJ
RE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2JlKQovT3JkZXJp
bmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwPj4KL1cgWzAgWzc1MF0gOSBbNjY2Ljk5MjE5IDE5
MC45MTc5NyAzMzMuMDA3ODEgMzMzLjAwNzgxIDAgMCAyNzcuODMyMDMgMzMzLjAwNzgxIDI3Ny44
MzIwMyAyNzcuODMyMDMgNTU2LjE1MjM0IDAgNTU2LjE1MjM0XSAyOSAzMCAyNzcuODMyMDMgMzYg
MzcgNjY2Ljk5MjE5IDM4IFs3MjIuMTY3OTcgMCA2NjYuOTkyMTkgMCA3NzcuODMyMDMgMCAyNzcu
ODMyMDMgMCA2NjYuOTkyMTkgNTU2LjE1MjM0IDgzMy4wMDc4MSAwIDc3Ny44MzIwMyA2NjYuOTky
MTkgNzc3LjgzMjAzIDAgNjY2Ljk5MjE5IDYxMC44Mzk4NCA3MjIuMTY3OTcgNjY2Ljk5MjE5IDAg
NjY2Ljk5MjE5XSA2OCA2OSA1NTYuMTUyMzQgNzEgNzIgNTU2LjE1MjM0IDczIFsyNzcuODMyMDMg
NTU2LjE1MjM0IDU1Ni4xNTIzNCAyMjIuMTY3OTcgMjIyLjE2Nzk3XSA3OSBbMjIyLjE2Nzk3IDgz
My4wMDc4MV0gODEgODQgNTU2LjE1MjM0IDg1IFszMzMuMDA3ODFdIDg3IFsyNzcuODMyMDMgNTU2
LjE1MjM0XSA5MCBbNzIyLjE2Nzk3XSAxMjEgMTc3IDU1Ni4xNTIzNCA0MDQgWzYwNC4wMDM5MV1d
Ci9EVyA1MDA+PgplbmRvYmoKMTggMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3Ro
IDM0NT4+IHN0cmVhbQp4nF2S24qDMBCG732KXHYvivGQtoIIrV3Biz2wdh/AJmNXWGOI9sK332Sm
B9iAwjeZf/JPJmFZH2vdzyz8tKNsYGZdr5WFabxaCewMl14HUcxUL+cb4V8OrQlCJ26WaYah1t0Y
5Dlj4ZfbnWa7sNVejWd4CcIPq8D2+sJW32XjuLka8wsD6JnxoCiYgs5VemvNezsAC1G2rpXb7+dl
7TTPjNNigMXIEbmRo4LJtBJsqy8Q5NytguWVW0UAWv3b35Hq3Mmf1vrsSLhszpO48BTvkFJBtCfa
EpVEGVJyQBI7pG2GVCVIh8hRzCOkKEs9iZL83E7O7j6etqkEp1PiDVbiFZKrxMgBWj5S8JWc78ld
etehyYiCtxROwQM5jylIgrSiIOkSMiGoj5RSBF3DhmoKMijIhGucuqI+/IX7h/GYprxa6waJrwcn
6GfXa3g8MDMar/LfHw/+sRYKZW5kc3RyZWFtCmVuZG9iago4IDAgb2JqCjw8L1R5cGUgL0ZvbnQK
L1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvQUFBQUFBK0FyaWFsTVQKL0VuY29kaW5nIC9JZGVu
dGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzE3IDAgUl0KL1RvVW5pY29kZSAxOCAwIFI+PgplbmRv
YmoKMTkgMCBvYmoKPDwvTGVuZ3RoMSAyNDIzMgovRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3Ro
IDEzOTg4Pj4gc3RyZWFtCnic7bx5fJTV2Td+nXPfsy+ZmUxmyzIzmWSyDCEhmRACgdyBJAIRCasJ
GglLEKpC2NxaAVc0uOC+tkSrQNXWyQQxYalR21ptLbjUrYu0YlErD2gpWjUz7/fcE8Lm87zP+7yf
94/f79P75nyvs11nuc51rnOdOwnEiCgdIFPZOfUNjXw+v4iIe5A785zm6bOusz/0KZE0Geknz5k1
Z6Lx57pbiVgM6bLps0rLr2rsy0H9S5Fun1s/rWWupnM9UXYfkf2eRZct6JRGSReg/Lco/8Giy9cE
vpnw4/eJLLOJdPOWdF58mf7jXYWI/4BI887FC1Z3kp0MaL8G9W0XX3rVkl379geI6hCyb166+LIr
/3qRvpfIif4N+qUdCxYfuOjty1D/AOqPXooMxzpDGGmMkfKWXrbmyhWHDX8l0uqRt+bSFYsW3L+v
+1XM5xjK91y24MpOfaN8OcrORTqwfMFlHZ5NFVdAGGifze1csXpNspjeQVzML9C5qqPz86kfuYhK
Ud/+BvIk0hMnI7FkEnEhyzb6gmroDtIi30alNAezq+EvkgZpidQnWSDa/I4H/LoJifNoko2+/vrr
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
ZW1WIDc2LjE3MTg3NQovQ2FwSGVpZ2h0IDcxNS44MjAzMQovSXRhbGljQW5nbGUgMAovRm9udEJC
b3ggWy02MjcuOTI5NjkgLTM3Ni40NjQ4NCAyMDAwIDEwMTcuNTc4MTNdCi9Gb250RmlsZTIgMTkg
MCBSPj4KZW5kb2JqCjIxIDAgb2JqCjw8L1R5cGUgL0ZvbnQKL0ZvbnREZXNjcmlwdG9yIDIwIDAg
UgovQmFzZUZvbnQgL0JBQUFBQStBcmlhbC1Cb2xkTVQKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgov
Q0lEVG9HSURNYXAgL0lkZW50aXR5Ci9DSURTeXN0ZW1JbmZvIDw8L1JlZ2lzdHJ5IChBZG9iZSkK
L09yZGVyaW5nIChJZGVudGl0eSkKL1N1cHBsZW1lbnQgMD4+Ci9XIFsxMCBbMjM3Ljc5Mjk3XSAy
MCBbNTU2LjE1MjM0XSAzOSBbNzIyLjE2Nzk3XSA1NCBbNjY2Ljk5MjE5IDYxMC44Mzk4NCAwIDAg
MCA2NjYuOTkyMTldIDY4IFs1NTYuMTUyMzQgNjEwLjgzOTg0IDU1Ni4xNTIzNCA2MTAuODM5ODQg
NTU2LjE1MjM0IDAgMCA2MTAuODM5ODQgMjc3LjgzMjAzIDAgMCAyNzcuODMyMDMgODg5LjE2MDE2
XSA4MSA4MyA2MTAuODM5ODQgODUgWzM4OS4xNjAxNiA1NTYuMTUyMzQgMzMzLjAwNzgxIDYxMC44
Mzk4NCA1NTYuMTUyMzQgMCAwIDU1Ni4xNTIzNF1dCi9EVyA3NTA+PgplbmRvYmoKMjIgMCBvYmoK
PDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDI5OT4+IHN0cmVhbQp4nF1Ry2rDMBC86yt0
TA/BLzkPMIbUJeBDH9TtBzjSOhXUspCVg/++0m7qQgWWmd2dmdVu0rRPrdGeJ29ukh14PmijHMzT
zUngF7hqw7KcKy39HeEtx96yJJC7ZfYwtmaYWFVxnryH7OzdwjcnNV3ggSWvToHT5so3n00XcHez
9htGMJ6nrK65giEoPff2pR+BJ0jbtirktV+2gfNX8bFY4DnijLqRk4LZ9hJcb67AqjScmlfncGoG
Rv3Ll8S6DPKrd1h9CtVpmu/riDKBqMgQhWBEQiAqHhGVB0Rlg2h/RJe73qq+NlPsSJCUygK5glzE
AX87MhMkL0h3Ry7i/MvDYEPWJQWP1EF+74A845PjatZ5yptzYZS4P5xhnJ42sK7YTjay4vcDYs+Y
IgplbmRzdHJlYW0KZW5kb2JqCjkgMCBvYmoKPDwvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTAK
L0Jhc2VGb250IC9CQUFBQUErQXJpYWwtQm9sZE1UCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVz
Y2VuZGFudEZvbnRzIFsyMSAwIFJdCi9Ub1VuaWNvZGUgMjIgMCBSPj4KZW5kb2JqCjIzIDAgb2Jq
Cjw8L0xlbmd0aDEgMjYwMDAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxNDEwMj4+IHN0
cmVhbQp4nO19CXwUxdbvqeqe7ulZe/Yly0wyySRkskASskAkA0lYDGEnJGAkEPZ9EwEXcAURBTfc
BRURNwgJS4ILeK87guv1uov34nLVKHpxNzPvVM0kLOrT9+n3fu/7vVtF/6u6urq76tSp/zlVPVEg
AGBDEKHnoMqqgXQ47Q9A7Vg6cNCI4aNXrrtjE4DQE8+3DRo9dsBW330WANKM51nDR+fln/t+0atY
/yw8b6ytrKkbsXLWMYDszQCW65vmTlog1KYexuuP4PUlTUuX+M/4MLMYQFkFoGmctmD63DH75xYB
mI7g+eHpkxYvADco+PwyrK9On7N8Wv4jr+8D6FcIkHHWjClzl7n63z8BIKEOnz94xtRJU97e2TAS
67+N9YtmYIFpkOjD83V4njZj7pJlq581JAFID2IbXp4zv2nSp09/i/dqwlhnztxJyxYI7wvYPjIU
6/vnTZo71Xt+7yD293Usm7Zg/uIl0WTYyOqy6wsWTV0weLR5AYAd+y9txTIBtEDBAiQaxTyT5W74
CspgPGiwXIU8GItvvojWoHxFrAHR43hksGf+QsD75X6RYVChu//Hd34YpXsPUkA+pcYu/g4dZGIU
m5YvmgPe6YumzgbvjKmTF4F3zqQl88B78vNAYz+vas+8Hyeay77WerS8+O5Ff9nP0oMj+u798Z3O
6br35B+xtQqv33WfIZ5n5bEyM+sn5GMkUIiRQBFGAn0xEqiEoYjD4CzE1ng7qbCGbEBJaDW3aAog
mSTwdLzwEkyjVq2G6iWRUqpQcRWT5EmhZviw4fiEbH+S5pXIOFIg9yMtYSD73/sWFTWo2cdGA+XJ
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
veCd6KXeNpoSTmN7GorFgo7WGs6sKltZDFUgNZPRKaTqDvY7yREmMUe34edOFCPcBkw74p5UbBvD
guvWE7sYqCWxPfAQruEbGtBsdKkKZev5DCHu6nZ5ug5ScK+v4bpRNz0zb/OW2v0zl+20eBZV33bg
osaqpVMHRGZqHr1+UvU7h7dGvtg67C+d+4Uh5+b2H0Em7l193ZBrXkY9molyno1yRvqBz8P6fQZy
nucK7+VJAvuk0mqKfWIJWzDjdfaFUtNwmACzQEplFJ9TUMjS8BBXYqGU7EweZ0LvVlWNYDckUJPZ
HFCNdjxlS3tTplFia3s102wymRSzuU5VFhhxuqIwVVUtV4erE1UcRNIUVhULrvXVlEyjqrrUFB0u
+oNwsnyH4bqWrTG65fpzO9JxwlXtXsOxZcUTsc3uhXy7+6TdAScuJvj2QPcaQpZkiX5169XXP3/r
l6smberV47bI4d2Rmy6eNOre2ZdPmjiooXfmsg3vv/AUCW+eO++vP1QIg26/cQ1RV158fb8RNy6J
rxOECShZMxwPn6cIlyvXaa9RRMnoNG7VPi3+S/xBkII0UywhRXQwWU6uILLJTAU9RbnFFwd1Wkkf
V0xzzLyj3CBsUgtBYQaejVlPtm2Ea71GWICG/hjyVYy5BKhVubU/2E7KoNvgc6mhZa1g//EGwDG0
p8SNuMmFdtrojBnvHBdPW5Ljdrs+vjwI/eKK4ISgu/QX6aGL5GKrYwHJbXPOqNtHFQ0/M69k4jOl
48XgG+ctzdiW+mqkI1LL5DUMGU1AeWXDV7v1WWZLoa8t+lorpgLTQA9mbjDelnJbqrBUWOHZqL/B
IOrZVPfH9ZR/AKvEzGXCle4t+q1GcaCwXL9GL2QZ0lJSAyUG0W/QC0noA2AqEleac5QN0gjp4fXZ
ZI2vhz6JfdhUl5BstsGikDp/7HtgG7WH1Ry203xM64d0NZ2mH+PfuyxpPQrBqTrpESdxPp5b+3iM
LBeGao43dB5twOyiDjQUC7v359j2HPvkaoltH0NscUvin11OfHVJi310YVoZ27Vjn7hYdNg5BQTH
7u55Ue2yZWnpkfczKyqf2fXMS+JOcdU5Z8/ISb7gxaLaSU+vbrvoIjJbP2zewMb+eVlZ53l6zB98
4a72Gw2NC2rz84PeovGFo88dftOECRP4/uXn9FrNNvDCmnDWmeZp5qXm1eabTDfb7lWaEw8kfmxD
Y00E8JjBqs+2GNDvEfTmYxa0sC3qEus+EgEbTWi11ymGNprQYlyif4QmoLImgIJC0qdlo7KqynpF
UNro+taEklb2GbohdPzocZQHw9gOXmdZuYVvtDDtSZd5P3sXFrNNFluxwLZWYjtS5NPk/mfMCff0
XrQ+aX3xCyNbknee50rPKrvuekvvzKrAhXTmOqK5IHLhus7dC5z+VOzfKtSrpWIQ7XskfI5H61Fu
0O+R9+g+cnzgltlf3F9quNx9g3yD7gHhPkmboSt2L5WX6pYYznFL2SRPLbUMsYgOjxvdDqfH7kQv
YyUOt9PD3A6N1q7tiW6Hlmg0WtB6nIrWJWWakeY8bp3Gm+n0aDWqq87JHAqzu67cQ1TPcM9Ez3yP
6MEVfGsCznDmiyQa/D015EXNEc0xjZCnKddQjcelcWm8upLH48Q3jE3amo7jbMOXfcfjngeSIVub
dITYB5+Y8WCuh4Z/82kI8VWJSe3aDO/iu2JcF8Z394qKi9hZQPDsf+a8G1NX7b7aOmTQ0GtmpjiT
Gne/e++B16+aVnE3ndpZPzavrOLMC2uL15KDuIAkcBf6bstRpjq4PVxtzRD8hoG6sGGE4Qp5jbLK
cA/ZqttL9BIu2Zxihq4EcOmmFGg1dq1Wg33T0oLYVwVFq2Uumg4XbXWgVbUUpeFAt43vfR8jwnyy
nlAS1e8jNfxTDZtSnV+zDe+y2FYdox3tSVsR3HIite3S6qyuQhKqTxHYt6uiYrb4GrG9eYLZWTiS
NO3v3CwGO/c2vrHwWrqS92cTriuKsT9efH/wAw8xJ76XSHt4BnnOtV0urNJfbrjYdpl7lfdG5W/2
j5SPdR/bTIl8UZ9SyD/AVuDqWUXDZjEa9HqTw+ly2d0er9fFFqmSjv0HFNF4e8Fkc9mtFote72rS
6VjPbaYmu90rNXlBZ9tHp4CdTt3rTXS5vNY6yz7SDno6pfWAjujaSHsrrSPojUxpNTNOIo+HFTO6
Ip6Eq9Yx2jm6sOabhR+qnd80RDzfuDs9w6qmVn7orlG/+Rxl1YGi6ohJrIOLjeAinC3D+XY5+/Zn
6sLTgC0SQg0LoYHJkQmSqQsXKNtNj30JJKb523vaqJicldv5ZEBL8xce3d35/SOZIu1REvlIDEYC
kePJE6bNnUqzOjuWP3f55+QfP75J5/fZNvv8TvY/FYh2oi7VoOzNxBS2W1WL30IzzGHLCMs083L5
iEWycBcjp2+hpDgVFJqEdEQlWWbfYeNbBwIqk8FkMuv1VFF07K/1TYpERLNWlgWBSjp0cM2oZEMl
XZOerQwU01BibgJtk7yPpoJE9a1sh4hRGSH23SrMR8doH3kBVCLsbOVf0Y/izOvEI47xreIYsj0B
Jklt7CtqWSyNf1Y1YUZW+b5MiH/Iagdt9JuWtN7mtug3ONiFWp2b58OKw1UoM70tji+R2ZdXpH2+
cZARzCACORz59pnx+Zkk/53IAGJ4ZlZqKPIETaD6R2dNIms6P+r89+tV0yIXMO80MlK8AGVqh5vC
o/3OnvqwIexcrdMoBr3Rqbh0WfoSo6TVKkaTSQbiABvRCmZVLZBNdlk2GU06WRWMWtRonU6RtDrB
b2Mem4ngP5OuTiH76LXgQOGg8qlH8zry0NTxj6YxeaB28Z2Qrl3dmP/FS1TxCW0Zn6aW4viOLp+i
2Elm2/QlvYtTswv77GwZ4baQtx7tnDD5pqbyyLT7VU/KhBlij86PNm0Sxv1Y07yI7aC/LrwjDNO8
AgrY4Com149b0RO1su/52ZjJknqoG6WN8kZ1o2WrtFXeqm616GTJoipAbToD0VeBWefTUV0bvTjs
s8iWWaoqEagSSJWwg9bodVVGfZVxh8FjX7Ai/hMnpgDfHI0rAP+ggoaLxDe11Gdj1gvnDJED7Mcq
6EQGunOCGjocTFk/ST2nxwvdOfH+Q7vYb6z8+7pS7NdrwmPCOM0u3q/2cEa6lK4WS0WqyNpuM+oU
Aaxmk6DqtMgsEqizzBafhVoephcjHxvpLWHVYNNVIRNRaZZZ9slUZpfQG6W37KEKVFECsU28Fkl1
qAUFCWGLYw/2s0q/Q1cT/71YG6lo5d3mPxnD4/jR+thv1Nh+PWOU7nxsW89V+jMxdP+g7MRPy4g9
/tuypRlvxmWwNFP8CPt+g2F4SntX+r8ARb3CigplbmRzdHJlYW0KZW5kb2JqCjI0IDAgb2JqCjw8
L1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvQ0FBQUFBK0FyaWFsLUl0YWxpY01UCi9G
bGFncyA2OAovQXNjZW50IDkwNS4yNzM0NAovRGVzY2VudCAtMjExLjkxNDA2Ci9TdGVtViAxMjku
ODgyODEzCi9DYXBIZWlnaHQgNzE1LjgyMDMxCi9JdGFsaWNBbmdsZSAtMTIKL0ZvbnRCQm94IFst
NTE3LjA4OTg0IC0zMjQuNzA3MDMgMTM1OC44ODY3MiA5OTcuNTU4NTldCi9Gb250RmlsZTIgMjMg
MCBSPj4KZW5kb2JqCjI1IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL0ZvbnREZXNjcmlwdG9yIDI0IDAg
UgovQmFzZUZvbnQgL0NBQUFBQStBcmlhbC1JdGFsaWNNVAovU3VidHlwZSAvQ0lERm9udFR5cGUy
Ci9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2Jl
KQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwPj4KL1cgWzAgWzc1MF0gMTUgWzI3
Ny44MzIwMyAzMzMuMDA3ODEgMjc3LjgzMjAzXSA1MCA1MiA3NzcuODMyMDMgNTQgNTkgNjY2Ljk5
MjE5IDY4IDY5IDU1Ni4xNTIzNCA3MSA3MiA1NTYuMTUyMzQgNzMgWzI3Ny44MzIwMyA1NTYuMTUy
MzQgNTU2LjE1MjM0IDIyMi4xNjc5N10gNzkgWzIyMi4xNjc5NyA4MzMuMDA3ODFdIDgxIDg0IDU1
Ni4xNTIzNCA4NSBbMzMzLjAwNzgxXSA4NyBbMjc3LjgzMjAzIDU1Ni4xNTIzNF0gOTAgWzcyMi4x
Njc5N10gMTc5IDE4MCAzMzMuMDA3ODFdCi9EVyA1MDA+PgplbmRvYmoKMjYgMCBvYmoKPDwvRmls
dGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDI4ND4+IHN0cmVhbQp4nF2RzW6EIBSF9zzFXU4XE387
6cKYjLaTuOhPavsACldLUpEgLnz7wsU4SUmQfNxzDniJ6ua5UdJC9GFm3qKFQSphcJlXwxF6HKVi
SQpCcrsTffnUaRY5c7stFqdGDTMrCoDo01UXazY4XcXc4wOL3o1AI9UIp++6ddyuWv/ihMpCzMoS
BA4u6bXTb92EEJHt3AhXl3Y7O89d8bVphJQ4Cbfhs8BFdxxNp0ZkRexGCcXNjZKhEv/qeXD1A//p
jFdnqVPHce7UnnKixyTQJVAWqAr0RLl7wpF3P/5GsiShJa3Jm4fcvKblEuLzlxC4b1a0WWVElTek
cVLvh4V4/z++70ez+GqM6xM9DjXIt0YqPN5Pz9q7/PwD/9WRewplbmRzdHJlYW0KZW5kb2JqCjEw
IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvQ0FBQUFBK0Fy
aWFsLUl0YWxpY01UCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsyNSAw
IFJdCi9Ub1VuaWNvZGUgMjYgMCBSPj4KZW5kb2JqCnhyZWYKMCAyNwowMDAwMDAwMDAwIDY1NTM1
IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDE0NzMwNCAwMDAwMCBuIAowMDAwMDAwMTEzIDAw
MDAwIG4gCjAwMDAwMDA1MjEgMDAwMDAgbiAKMDAwMDAwMDE1MCAwMDAwMCBuIAowMDAwMDc1NDAw
IDAwMDAwIG4gCjAwMDAxMjQxMDggMDAwMDAgbiAKMDAwMDE3NTM2NyAwMDAwMCBuIAowMDAwMTkw
Njg0IDAwMDAwIG4gCjAwMDAyMDYxMTAgMDAwMDAgbiAKMDAwMDE0MDgyMCAwMDAwMCBuIAowMDAw
MTQ3NTc4IDAwMDAwIG4gCjAwMDAxNDc2MzQgMDAwMDAgbiAKMDAwMDE0ODE4MCAwMDAwMCBuIAow
MDAwMTQ4MzEzIDAwMDAwIG4gCjAwMDAxNzM5NjcgMDAwMDAgbiAKMDAwMDE3NDIwMyAwMDAwMCBu
IAowMDAwMTc0OTUxIDAwMDAwIG4gCjAwMDAxNzU1MDYgMDAwMDAgbiAKMDAwMDE4OTU4MiAwMDAw
MCBuIAowMDAwMTg5ODIzIDAwMDAwIG4gCjAwMDAxOTAzMTQgMDAwMDAgbiAKMDAwMDE5MDgyOCAw
MDAwMCBuIAowMDAwMjA1MDE4IDAwMDAwIG4gCjAwMDAyMDUyNzAgMDAwMDAgbiAKMDAwMDIwNTc1
NSAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMjcKL1Jvb3QgMTQgMCBSCi9JbmZvIDEgMCBSPj4K
c3RhcnR4cmVmCjIwNjI1NwolJUVPRgo=
--0000000000000def9f06258bb37b--


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:12:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:12:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826813.1241219 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SM3-0007qv-4h; Mon, 28 Oct 2024 16:12:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826813.1241219; Mon, 28 Oct 2024 16:12: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 1t5SM3-0007qo-18; Mon, 28 Oct 2024 16:12:31 +0000
Received: by outflank-mailman (input) for mailman id 826813;
 Mon, 28 Oct 2024 16:12: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5SM2-0007qg-1X
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:12:30 +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 6ddc8629-9547-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 17:12:29 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-539f0f9ee49so4739662e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:12:29 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4319360eb09sm114249035e9.48.2024.10.28.09.12.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:12:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6ddc8629-9547-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730131948; x=1730736748; 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=gLucz75e0eeHPfhiDBLyzySJzHHSgVtc0infk9O0FMw=;
        b=gcd9Bti/9AhiBHpOjNeHAx2TwQMKG3P8wtYZOIQBrhd553Cjzc3k1IehIzPeFtXh0e
         qfNtmd7Pd/vBPou6aWSQLgkel+uzjHf5insp5oV5AgUCkTh+oeMN5z5wGVEopWuX62yq
         0xbJkYhlCD19dH83jepduV4lPKq8RsJj50v6TTM0b2R5gmUSUMitPhtUM7VETpS62Sbr
         cekXuPfQksmzcORF66RQreaawSdEH8uqnJ2l3EohBPO2Pw2umTdFDpOc8MK5yQpL4F1P
         eDjxbmNKL68L6Ob3zDzl+bGwrt/gKlg67NtZJnhOUYfx3V7hTO4qhIf8SxbPnNVRG5r3
         RaFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730131948; x=1730736748;
        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=gLucz75e0eeHPfhiDBLyzySJzHHSgVtc0infk9O0FMw=;
        b=uMyaQrlgPvgachwc37vzsMii3uq47V3oKwfCjekaEahefZVM6/EAH6P9W67FhXzytV
         9N+HPWM5pvhzPO3qeUXD+AJvZi46lxHoDvQUDWbRTdAcXPVFd+VJwc42CNYSVw/rSh/e
         /PzvNCfJJwASxfI3Dy4E3ELWlX04SCxFxTHr17Zri23JnIJCBRq9TM+KrmofrbpDrJnp
         42q/LzpqctQUEhMxzrzreCWNZJ3kY0uXkQX+hmGSGFzZa35Geub3Puf5AxE2kdiGO2Fi
         UTfFEWLLAPiK2KFKFGYb5tweRTRAZoRsWHhR+zxs8LfZ7GFMWmuuO3oRW4FNeCgHpoJ7
         HjBQ==
X-Forwarded-Encrypted: i=1; AJvYcCW4Df4D4qS+fWq1zLhLzqgoz+t+x++bkC+sObs2mBGzcKRnxikLiEWXWWIvRoBlDb+uTKOnPgHxpcw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqUDsmF/aODhjgmxznOsjUp3L8c0jmpWlZElAjkOXpsS9CzqHG
	VnwrYIPPMpX18NCF8XpGoBauZ7R/AsiTOcPJi8aelLwLJOJgxMHwdt/siF/zJQ==
X-Google-Smtp-Source: AGHT+IEKA3GjAwtYgMrI5/cFhQoXIeg7UIHhMKlMwBDLvlgrh/j3ZlxruT0m3AXswLRZqerBEvGCCA==
X-Received: by 2002:a05:6512:2385:b0:539:e14b:309c with SMTP id 2adb3069b0e04-53b348cb1c6mr3219430e87.19.1730131948475;
        Mon, 28 Oct 2024 09:12:28 -0700 (PDT)
Message-ID: <c618e09f-b88c-45c8-8cbd-8aae82891c6e@suse.com>
Date: Mon, 28 Oct 2024 17:12:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
 <764c0116-88ed-48af-8e53-f2a0f6e850a3@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: <764c0116-88ed-48af-8e53-f2a0f6e850a3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 17:07, Andrew Cooper wrote:
> On 28/10/2024 4:03 pm, Jan Beulich wrote:
>> As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): While
>> this is imported from Linux, the parameter not being pointer-to-const is
>> dubious in the first place and we're not plausibly going to gain a write
>> through it.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> You haven't tried compiling this, have you?

Of course I have. Is there any subtlety with compiler versions? Or what
else am I missing?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:16:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:16:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826820.1241230 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SQ4-00006X-LN; Mon, 28 Oct 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 826820.1241230; Mon, 28 Oct 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 1t5SQ4-00006Q-GE; Mon, 28 Oct 2024 16:16:40 +0000
Received: by outflank-mailman (input) for mailman id 826820;
 Mon, 28 Oct 2024 16:16: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5SQ2-00004w-Te
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:16:38 +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 018dd307-9548-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:16:36 +0100 (CET)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-539fe76e802so5360171e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:16:36 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b713fbsm9938267f8f.88.2024.10.28.09.16.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:16:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 018dd307-9548-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730132196; x=1730736996; 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=GRuGn3bWqYxr11z7tCKu4Ew1dofU0Ncq5K3UhI2Vf10=;
        b=XWCo1RWZlIlScqGqJzkNhlc9IVPogxi/tdSi6Esoi5BlZkaQkRDF5TqDLsHPdZqnu7
         TxfFcl5WigYWxFXt24VCkrQa3+ffq/QRRzHAW1rIXk4htVtXXZVOQ6mP371b2lvgOASo
         dv0VD96FEGVRyTY19+t7tj6gHJRIJWvN7m5HiJnwCFpnX///MXVgJQ3xaU30WzuZIGKo
         9LyAP3fOTXNSNn9IfKjl6LPvnxvlL3DUtGgZ8UX6vkj/7SonkD3LSAXcFI7bjH5XQyaY
         b3mzVNQ2YdN+pox6UYnqmo8cnwYxLtRNEwmK6XGc33VJhBDwrnBzT/3QtOBAReCnp9O/
         BiTQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730132196; x=1730736996;
        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=GRuGn3bWqYxr11z7tCKu4Ew1dofU0Ncq5K3UhI2Vf10=;
        b=T6DfVL7vn+QBCQ0yV5RhrnTaa2KtAURPDzRiDlRjk+RCGMNSZQPVCOu7dtbTW9CNlQ
         DdtgmGIGD0iZtA8bLZfDb1b/Ab+3fcKqgyVJikuII9DA30sJq62ZWnCUFhHLukQxDGzj
         3e08WxtYyNJP8yhFMSAB7H/tjltDABOD/viiUhnfQ2RovMEQtC0gOYQ7a7s3pUipVFBp
         6iqQE7zY202iWHww6uaGEeupxxGnF6DZQFKJd7krEZbWbx+xO9WPoG0B6/mJlC4OxlVd
         5zwQ2nZsGGEiyK0nsetDnLL3VsuFvfF8zcl19lLnOyWYVuxPt/5xVEoa5APAa6mJD4W6
         f8Ng==
X-Forwarded-Encrypted: i=1; AJvYcCXPJv+fdo88zCD9Vp7UGRWBReBL3yl0K8HnjuzlWdovbv1FJqmbiRqOV64kwDOkZMZnxv1JfZY1jKY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyT28EX4huSHFwA1ssRcpdPFeGh7GWcVXCCKbaA5jxseo4lfsQV
	HVb/wEQFmRhzxioXDQeVR6KbX+PpTgbQjK7dH9WZ5cYjTfBk+D8m7RH8eKn+wxR7jvBlbqegs0Y
	=
X-Google-Smtp-Source: AGHT+IE9heKQJmTtI2M83zrm9OPiztW6RCer1MIC5LgWUuvqCee7HtPRXFT9VT5jVRm39gZ2lSDS0w==
X-Received: by 2002:a05:6512:e95:b0:539:968a:91a8 with SMTP id 2adb3069b0e04-53b3491e092mr3168277e87.47.1730132196320;
        Mon, 28 Oct 2024 09:16:36 -0700 (PDT)
Message-ID: <8608ca8a-3938-4027-96e7-4f3cb3fbd5ca@suse.com>
Date: Mon, 28 Oct 2024 17:16:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 10/10] x86/ucode: Fold early_update_cache() into its
 single caller
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-11-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: <20241028091856.2151603-11-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 10:18, Andrew Cooper wrote:
> The data pointer is known good, so the -ENOMEM path is unnecessary.  However,
> if we find no patch, something's wrong seeing as early_microcode_init()
> indicated it was happy.
> 
> We are the entity initialising the cache, so we don't need the complexity of
> using microcode_update_cache().  Just assert the cache is empty, and populate
> it.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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




From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:18:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:18:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826824.1241239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SSA-0001UW-UX; Mon, 28 Oct 2024 16:18:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826824.1241239; Mon, 28 Oct 2024 16:18: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 1t5SSA-0001UP-RR; Mon, 28 Oct 2024 16:18:50 +0000
Received: by outflank-mailman (input) for mailman id 826824;
 Mon, 28 Oct 2024 16:18: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5SS9-0001UJ-Pp
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:18:49 +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 4fa00fc3-9548-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:18:47 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5cbb719839eso4204227a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:18:47 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f030c40sm389941966b.84.2024.10.28.09.18.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:18:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4fa00fc3-9548-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730132327; x=1730737127; 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=3AZ1TCtzJA0Vf8xLhq2vwsno1Q5afCdh69Svku7uVlU=;
        b=m96kfcTzDtqAjTk4u/nMbLtMlwtrW6UPvwnePd7yicuSPpfFp/iVJRpqOF+mQholar
         5fe0FvYvRs4GX0Q2sIQLFWn/nJkkYG39G3OYz5BAPGngZ9YMEXNsI4BWxrK90fdMdOn3
         86t6ZgdSVFzg1jTJpCdL1elsZs7LwwdTMJcjg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730132327; x=1730737127;
        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=3AZ1TCtzJA0Vf8xLhq2vwsno1Q5afCdh69Svku7uVlU=;
        b=njRtDqn5shDaQ1vh9X0HDCH7EO1OvlzxXVa71c6z0FkjefBbHdeC6UE/9ht9EhfM2S
         9B0prY9N1VY77Af0xEZRJJ5S2kIJVvep/0HK6+/2DOKdGPKjZkSSYD5KXEm8Qc+pR1DN
         fKpFMFHpVSQyq1Hq/KA5d8EUXjI5NbW0x+Cbgd1OfEqRAUIEkFUZtoXk7TKvngkACwaa
         4DaJbze4z2VBljOcghFCtwMC5Rzwd85utK1DJ+6b/85Chi985wiUm6xr60+b2PU3cclg
         q5NFHkJPjJ/UkMbrUDDW4ReB+f1s9nDyiDxqFEZyKWeG59hY9yua5cIk9CH3UhAQZLlo
         3bzQ==
X-Forwarded-Encrypted: i=1; AJvYcCV1qR5hfsZy/PkkFuI7KkwvAjJHBFX/yhFy2OpYsX8pO/2wtXtfy2oiecapgK5M6TLYgatKBA7syPo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwTRU8AFqKeLyykEektX7fKpjQAykj5OHg+ibPIjY7jw7xdtQOi
	4FSRyIL0FZD58/LpAFuUPnGssYwaf+EeCMqpiZoXZxSmE0BeD9qHsxyNdj+0l3Q=
X-Google-Smtp-Source: AGHT+IHGiLn42Qks4zVeV7ehp6j6INYqF8Lmo0ar8bwsgj3wxi1gqxckHaAPXPLraNq4ihDcWQCgnQ==
X-Received: by 2002:a17:907:9719:b0:a9a:67a9:dc45 with SMTP id a640c23a62f3a-a9de5d6eb93mr836213966b.3.1730132327333;
        Mon, 28 Oct 2024 09:18:47 -0700 (PDT)
Message-ID: <ecd11958-2ce8-41fc-87f8-7b6b090c74b5@citrix.com>
Date: Mon, 28 Oct 2024 16:18:45 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
To: Jan Beulich <jbeulich@suse.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
 <764c0116-88ed-48af-8e53-f2a0f6e850a3@citrix.com>
 <c618e09f-b88c-45c8-8cbd-8aae82891c6e@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <c618e09f-b88c-45c8-8cbd-8aae82891c6e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28/10/2024 4:12 pm, Jan Beulich wrote:
> On 28.10.2024 17:07, Andrew Cooper wrote:
>> On 28/10/2024 4:03 pm, Jan Beulich wrote:
>>> As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): While
>>> this is imported from Linux, the parameter not being pointer-to-const is
>>> dubious in the first place and we're not plausibly going to gain a write
>>> through it.
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> You haven't tried compiling this, have you?
> Of course I have. Is there any subtlety with compiler versions? Or what
> else am I missing?

struct cpio_data's copy of this field is non-const (which you keep on
noting that new compilers will object to), and you can't change that
without breaking the build in microcode.

Nothing of this form can be taken until the constness is consistent in
microcode, after which yes it can mostly become const.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:22:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:22:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826830.1241248 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SVw-0003Me-EE; Mon, 28 Oct 2024 16:22:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826830.1241248; Mon, 28 Oct 2024 16: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 1t5SVw-0003MX-BM; Mon, 28 Oct 2024 16:22:44 +0000
Received: by outflank-mailman (input) for mailman id 826830;
 Mon, 28 Oct 2024 16:22: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5SVv-0003MR-2L
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:22:43 +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 daa3571f-9548-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:22:41 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a99f1fd20c4so649888966b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:22:41 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b331b0d44sm387376266b.187.2024.10.28.09.22.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:22:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: daa3571f-9548-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730132560; x=1730737360; 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=S9r1AOXX79dMDitDZP8094KbsR0t3/bmLUeSgYO5vjw=;
        b=ZniQOPW/4kwQDl5A/pyeK6Jy/bTt4e2kAxVZeb4txpGOYJOjY6+jWMRSc7xJF5f7cS
         +i9Uwhzktz9DWnH8BwgEYml8JuuI1FlIUbCXC3fIl6KEvr//kGrVNHnIaE62X4ZRw8+4
         /V0VwaDO0MpLlaha/91YbLxJGBPaKvw1pPCcY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730132560; x=1730737360;
        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=S9r1AOXX79dMDitDZP8094KbsR0t3/bmLUeSgYO5vjw=;
        b=qTacfdDI+bpuL/t2xq/G7a0bbxvkSURafeXy5mo2X8Y5KlCWp1C3s+ygS5sgeMOJtJ
         pSYOaLZJlJFBuLsMRAzrUJ/Kj9YhlnaIITCYQqYUVutM1B72rp+0pH0XZxSC/2edk7Hj
         yiF913xa1CpEeg+6LspEfG7QVt6gNygwAhS7JvyWbuKYFRad363hfGmkpte/tn+UH/V6
         zwdDTB/kzdzrjQVczlemBDhquBtSjd35kmBEKfAT6yWN6SuumcKgYp43BO/I3n4scrHY
         1NMERiAnj8Qj0uKZsT9ISZ3jrd4xJf4Y13yFjoR3NkfimhYeoh7BoBeXoYXjicqJkGok
         0S4g==
X-Forwarded-Encrypted: i=1; AJvYcCUV5HZHocHutjkDfz3A5JcSwN/jBIwSSinmuWrmdMXKtivU8v9TCqtp8LAfI9eAlZ3aqp8eTcm9heQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzAGAUjaQHDow25Om74P5MY8DH3Yr5D2EjVeS4aSChovr6BUrzz
	VmJP/2axRfhVwzCOpAeFjFw45LdHigbrFW+w9BFRlTTdAt5l1z+4XUpQD2TYqzakSbvGzgmir2O
	x
X-Google-Smtp-Source: AGHT+IErECNCNwgmzkqhwkuGcEdhNeEw7Bg+N5Fsg2t+J+elnKyNVEiIJL74uix6FHJd9su9lK+k4g==
X-Received: by 2002:a17:907:7d87:b0:a9a:f0e:cd4 with SMTP id a640c23a62f3a-a9de619a63bmr918745566b.55.1730132560530;
        Mon, 28 Oct 2024 09:22:40 -0700 (PDT)
Message-ID: <1b3b07f9-f949-4b4b-ab33-4282929db220@citrix.com>
Date: Mon, 28 Oct 2024 16:22:38 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 09/10] x86/ucode: Drop ucode_mod and ucode_blob
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-10-andrew.cooper3@citrix.com>
 <f4a7cb7a-2b76-4d97-adbb-430bfcd0d054@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <f4a7cb7a-2b76-4d97-adbb-430bfcd0d054@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28/10/2024 4:04 pm, Jan Beulich wrote:
> On 28.10.2024 10:18, Andrew Cooper wrote:
>> @@ -789,23 +734,47 @@ static int __init early_update_cache(const void *data, size_t len)
>>      return rc;
>>  }
>>  
>> +/*
>> + * Set by early_microcode_load() to indicate where it found microcode, so
>> + * microcode_init_cache() can find it again and initalise the cache.  opt_scan
>> + * tells us whether we're looking for a raw container or CPIO archive.
>> + */
>> +static int __initdata early_mod_idx = -1;
>> +
>>  static int __init cf_check microcode_init_cache(void)
>>  {
>>      struct boot_info *bi = &xen_boot_info;
>> +    void *data;
> Afaics the sole reason this isn't const void * and ...
>
>> @@ -819,7 +788,7 @@ presmp_initcall(microcode_init_cache);
>>   */
>>  static int __init early_microcode_load(struct boot_info *bi)
>>  {
>> -    const void *data = NULL;
>> +    void *data = NULL;
> ... you're actively dropping const here (which I consider bad) is
> find_cpio_data() wrongly taking void * as 2nd parameter.

No; it's only one of 2 reasons.

>  Internally it
> copies the parameter to a const char * variable, so the non-const param
> is bogus.

... and then back into a non-const variable, hence why such a change
doesn't work.

>  With the const here retained and const added further up (on
> top of a trivial prereq patch adjusting find_cpio_data(), which I've
> just sent out):
> Acked-by: Jan Beulich <jbeulich@suse.com>

Only after this series has make const-ness consistent through this
logic, can you go about changing CPIO.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:25:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:25:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826838.1241259 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SYO-00040C-Uw; Mon, 28 Oct 2024 16:25:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826838.1241259; Mon, 28 Oct 2024 16:25: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 1t5SYO-000405-SM; Mon, 28 Oct 2024 16:25:16 +0000
Received: by outflank-mailman (input) for mailman id 826838;
 Mon, 28 Oct 2024 16:25: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5SYN-0003zz-SU
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:25:15 +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 35a98ec5-9549-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:25:13 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-4315baec69eso45935005e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:25:13 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b55f484sm144869175e9.13.2024.10.28.09.25.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:25:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35a98ec5-9549-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730132713; x=1730737513; 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=MLdkZqTlpm90UKGAVLiZ6vEM8562tFnMZjVYM6GMSYI=;
        b=Krmv/iR10tIYFRrqZQesGnpIalRoS8UOrwew1I0ZbiNnUI0t+ED9bjNWZFLPVdkwgO
         ivazlpeYe+d0/s2pO22uKweCbmVHVrmFZlvQPIs9/EQwkX+d12AUYW0umJiXeq0OUPLq
         Wmz5dsRPz/pYHt1GgxZFND3sXaLNxjl//ZioVLcx4eR6/48ZMWGwMV92i7WAD2GbwVfk
         iyadXop44r2rb7Y5XE6barePdTgpVg56PUx5/zOqUtr0B95bxlCsJqNpqPk8Wa+MFxS+
         GRkUmjrj6Pr+ou6Wy95dnCBx1AtRHXN0v0ct3/W/aiCeLcuL3eIoFZXUQhUdjvBaJRNX
         r8+w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730132713; x=1730737513;
        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=MLdkZqTlpm90UKGAVLiZ6vEM8562tFnMZjVYM6GMSYI=;
        b=pPhDtj/9U73ZCQrC5GxV6iE0xX5liVAQbtoRLik6OfGrJq8vsIEGD3zn8M/TS4bPrY
         mTOcLbIRQTvq3+cBf6oxICOZvrfhS424KOMcWkPd0kQQr/tws28xOu2NXDdrPrevM9Gn
         s78h5pxboPgj3MNJn2JwNHmZk7WSEsmuAKH2kqeMChbK2m5lciPq3qzCe7Gbg+qs6Czm
         AfcTC3A9hDuP7SWWZTC8HwIBNBfLR6ycavZRupRDDt9kXdM8/1ZbCl+6JWLAECar92S+
         I2iapDdbU285EjJ67Mx964ZvpvcInueO2JwBaAu7kPaP0XXxaH81ppYfHAh+axg/Gml1
         lcWQ==
X-Forwarded-Encrypted: i=1; AJvYcCV61JN+XkCpB9eu/F5E4ovzQNekAryqrOh+JWc2Q2Mc3gnPOISD3J6RlXJknxuZiTXaeGc3P/CtBLQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxDbMs6zGqlt7chaPbfFMtv1Ct3s9CdGsCmQqz6l4h6R+/hnaby
	1uSrNmDUCxV4bdP4frjsLw4vZsUj0QRHUeiQDWi2S+/Ak7vDinGIkJ8f0prUqw==
X-Google-Smtp-Source: AGHT+IElf6gPPCBYaUoiZKbSCDGJDsQK5QYxizwSnWTHOHKg90Y1KJd5jcagK7Y7Sy8/496mhj8d3g==
X-Received: by 2002:a05:600c:4ecb:b0:42d:a024:d6bb with SMTP id 5b1f17b1804b1-4319acb8145mr60687845e9.20.1730132713267;
        Mon, 28 Oct 2024 09:25:13 -0700 (PDT)
Message-ID: <aab91022-5115-4af0-8f9d-569c63a296bb@suse.com>
Date: Mon, 28 Oct 2024 17:25:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
 <764c0116-88ed-48af-8e53-f2a0f6e850a3@citrix.com>
 <c618e09f-b88c-45c8-8cbd-8aae82891c6e@suse.com>
 <ecd11958-2ce8-41fc-87f8-7b6b090c74b5@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: <ecd11958-2ce8-41fc-87f8-7b6b090c74b5@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 17:18, Andrew Cooper wrote:
> On 28/10/2024 4:12 pm, Jan Beulich wrote:
>> On 28.10.2024 17:07, Andrew Cooper wrote:
>>> On 28/10/2024 4:03 pm, Jan Beulich wrote:
>>>> As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): While
>>>> this is imported from Linux, the parameter not being pointer-to-const is
>>>> dubious in the first place and we're not plausibly going to gain a write
>>>> through it.
>>>>
>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>> You haven't tried compiling this, have you?
>> Of course I have. Is there any subtlety with compiler versions? Or what
>> else am I missing?
> 
> struct cpio_data's copy of this field is non-const (which you keep on
> noting that new compilers will object to),

New compilers? I'm afraid I'm missing context. With gcc14 the patch builds
fine. I didn't try _older_ ones (but I see no reason why they might object;
see below).

> and you can't change that
> without breaking the build in microcode.

I don't need to change that, "thanks" to

			cd.data = (void *)dptr;

casting away const-ness. That is - compilers ought to be fine with the
change; Misra won't like it.

> Nothing of this form can be taken until the constness is consistent in
> microcode, after which yes it can mostly become const.

We can move there in steps, can't we?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:45:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:45:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826848.1241269 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5SsD-0000U6-GB; Mon, 28 Oct 2024 16:45:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826848.1241269; Mon, 28 Oct 2024 16: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 1t5SsD-0000Tz-Df; Mon, 28 Oct 2024 16:45:45 +0000
Received: by outflank-mailman (input) for mailman id 826848;
 Mon, 28 Oct 2024 16: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5SsC-0000Tt-Fs
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:45:44 +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 12844bd6-954c-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 17:45:43 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5cb6b2b7127so5294089a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:45:43 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb625526csm3511083a12.6.2024.10.28.09.45.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:45:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 12844bd6-954c-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730133943; x=1730738743; 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=tvbZifJL/khxwyueMcpP2FU2DSZA7pKeUeLy3JaXqE0=;
        b=VQw78NVOgSiA++9xar+fEj7zCejrDXVI4wDtGw9laMESdxrz2EkZn1T0/jUWQ83ONV
         4GE/ZWgE5sUDgdrYMrneLHYZ/YMgfkGu7oAi7zt4QH+3aS/ZiJIa7nP2foDtPWm/Wc2c
         Sfb3IWhN1Roy0gvFlta6LP5cNRf4N60ISQhxs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730133943; x=1730738743;
        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=tvbZifJL/khxwyueMcpP2FU2DSZA7pKeUeLy3JaXqE0=;
        b=MfOX9bZ0dy2AA5Qqy3JjLOD3cvjJEKm6W+QgWYUrRkGSAzvVBdurr0HsSvg5iHyyA5
         3IyTB9CvmH7AnO0FkZ9DkUixzVajmm1X7RYvn0WhEj+JXagfDoB1IY8y1DNViVj13ala
         GwPWblyXft6Se3GzPXSfMkEby+7oyrDj9M1k1luscLYXM2uVbslKlFGux+AwwBvLIdTj
         Bp3BnKw5QvZJ5lOswnpwHWe18SBqJ8dwmuJsCPET6Irfg9pF1OFObzlb5DxipoD4pjTk
         fa7tFX/ujUpjnOY8UXCN+KTZiKPMlKuOQ4niTfpoB+mcyrRsu2TgfhB9p2gh26YewvCV
         Li+Q==
X-Forwarded-Encrypted: i=1; AJvYcCWYj+Y5bV45ky7OP6Yerec64q8joYTJ/lyr5+2sYzK0gkL4wcnoM637FC3s+rGvJOc7w7LCnrozNoM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxu+RqHbCHAN2+c8K641xPPq9kCDOM+NqDFXENftTWoa2ILUyvk
	q/He7/Pi4QznU5mff4PL3O9drYPGtfHCFwZSWk1eYb8bdazoMiD9HODZtYPAGuI=
X-Google-Smtp-Source: AGHT+IFcGIJZa+8bo0Xknbz4oeMG2/HIrNLYRfhXEHy1TL0w0I5jTvMHNlB/So4IrO6/ECv6VjFcsg==
X-Received: by 2002:a05:6402:350c:b0:5c9:72c7:95a2 with SMTP id 4fb4d7f45d1cf-5cbbfa6223dmr6596744a12.22.1730133942795;
        Mon, 28 Oct 2024 09:45:42 -0700 (PDT)
Message-ID: <f8f4e221-fbf1-4e0b-98d0-bc19e0c604a9@citrix.com>
Date: Mon, 28 Oct 2024 16:45:40 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
To: Jan Beulich <jbeulich@suse.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
 <764c0116-88ed-48af-8e53-f2a0f6e850a3@citrix.com>
 <c618e09f-b88c-45c8-8cbd-8aae82891c6e@suse.com>
 <ecd11958-2ce8-41fc-87f8-7b6b090c74b5@citrix.com>
 <aab91022-5115-4af0-8f9d-569c63a296bb@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <aab91022-5115-4af0-8f9d-569c63a296bb@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28/10/2024 4:25 pm, Jan Beulich wrote:
> On 28.10.2024 17:18, Andrew Cooper wrote:
>> On 28/10/2024 4:12 pm, Jan Beulich wrote:
>>> On 28.10.2024 17:07, Andrew Cooper wrote:
>>>> On 28/10/2024 4:03 pm, Jan Beulich wrote:
>>>>> As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): While
>>>>> this is imported from Linux, the parameter not being pointer-to-const is
>>>>> dubious in the first place and we're not plausibly going to gain a write
>>>>> through it.
>>>>>
>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>> You haven't tried compiling this, have you?
>>> Of course I have. Is there any subtlety with compiler versions? Or what
>>> else am I missing?
>> struct cpio_data's copy of this field is non-const (which you keep on
>> noting that new compilers will object to),
> New compilers? I'm afraid I'm missing context. With gcc14 the patch builds
> fine. I didn't try _older_ ones (but I see no reason why they might object;
> see below).
>
>> and you can't change that
>> without breaking the build in microcode.
> I don't need to change that, "thanks" to
>
> 			cd.data = (void *)dptr;
>
> casting away const-ness. That is - compilers ought to be fine with the
> change; Misra won't like it.

You have literally complained about patches of mine on the grounds of
"GCC is about to start caring about casting away const on a void pointer".

So which is it.

>
>> Nothing of this form can be taken until the constness is consistent in
>> microcode, after which yes it can mostly become const.
> We can move there in steps, can't we?

Or you can stop trying to insist that I rebase around an
incorrect/incomplete patch, just for the sake of the const of one void
pointer, which can still be laundered by this function.

Especially when you could wait the ~day it will take to get an
otherwise-good series in, and then change cpio and get all of the const
problems in one go.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:51:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:51:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826857.1241279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Sxm-0002tG-3K; Mon, 28 Oct 2024 16:51:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826857.1241279; Mon, 28 Oct 2024 16:51: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 1t5Sxm-0002t9-0h; Mon, 28 Oct 2024 16:51:30 +0000
Received: by outflank-mailman (input) for mailman id 826857;
 Mon, 28 Oct 2024 16:51: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5Sxk-0002t3-Td
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:51: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 df2ac2ec-954c-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 17:51:26 +0100 (CET)
Received: by mail-wr1-x42c.google.com with SMTP id
 ffacd0b85a97d-37d4ba20075so3140089f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:51:26 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b1c65dsm10081049f8f.8.2024.10.28.09.51.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:51:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: df2ac2ec-954c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730134286; x=1730739086; 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=0rz/59PHBpXoBsl7vxH3GezQoa7axSB1Thsr4A7l8zg=;
        b=ReiXRgq0zYzbmjsvRuJFh9iAfm0jIDzM+WA91L57lmmK2RTtDIAFPtJxzBKgcyc54d
         v0sh6/Wz12EOciC2kCcZqbHklD6smlK/iftwKCI7ICoB0ow6zCgJqR3aNx/6sx9SI73g
         rH2yWyn2v6EXeEWSkFU6OKLrvDkUTPqsZFnBNVtP59s7zGVLGnvurfZC7C5zLMupyYuW
         tC2mu6ovjW4j6/MqI+qCkfDobAJKFPPiTv/KFX0GX5D/v+9fabFZkCZ4mCa8Wyxo1s+S
         cRTTWpqhZ3W/3T7PxIIlVcJG7prBZ4KHGd1IfCo4BY9IC8M6OhW/4xtQJssg+bRdmvmn
         U4bQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730134286; x=1730739086;
        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=0rz/59PHBpXoBsl7vxH3GezQoa7axSB1Thsr4A7l8zg=;
        b=IrKiEP2Q+O7a3ubWnqfutQojlqJZDzvkzw+/PDJRuWrkuZw1P5hT7EH85xkJCZRS5L
         2//YHkiKnaetY8hbb2RwZJ89zsKQewtOiziRJgqkINOr5MviwYNl58dZ5wGRLLfU8nrc
         //Bq6OjkQIxWMMnx6bL9giI/kKmgNtLuAzAJ4tfKYW66Sm94AGeQLVIRvdZp6dESayWo
         YC/MM0fHRU8wtYCGQUkSnLj0C/cGVn2lAdSXeznFfVoelilaj6OaIlFLi/PuyYQIu8fQ
         /UiPvrisPJHutRAVSVLzfphezM2m0myaWCwaU7lo36oSvgnY4i+V/SFOF2IFOryHlFw6
         yYtA==
X-Forwarded-Encrypted: i=1; AJvYcCXSAxtdxSsSgwy6MbljdzYMgzUEZm2+1MJjikBt5h95yE7s8ZXcYtjkUuF5xvDSy4VIXLpMoaMZsY8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzl6AJS4q2ieHH6+ovVJlYC7YzHBG2WOFijkStOcUWb1wVT2qpQ
	1EQuW4PfGo0iLPvk0biUnQ9piR1PQRw7v+AqkdHdUIEWvwRRPnVBE1SCUPYiRw==
X-Google-Smtp-Source: AGHT+IF/jZbQb4EcN0DPhjPajQ01OwFaSAigUZDaNdR0zlPm9ag7cEGvIO8GePTHEuT2/pBfI/u0Og==
X-Received: by 2002:a5d:5346:0:b0:37e:c4e3:f130 with SMTP id ffacd0b85a97d-380612007c6mr7104004f8f.41.1730134286005;
        Mon, 28 Oct 2024 09:51:26 -0700 (PDT)
Message-ID: <fee34f7d-6d2e-44c6-aa76-e1d6d4856ddf@suse.com>
Date: Mon, 28 Oct 2024 17:51:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
 <764c0116-88ed-48af-8e53-f2a0f6e850a3@citrix.com>
 <c618e09f-b88c-45c8-8cbd-8aae82891c6e@suse.com>
 <ecd11958-2ce8-41fc-87f8-7b6b090c74b5@citrix.com>
 <aab91022-5115-4af0-8f9d-569c63a296bb@suse.com>
 <f8f4e221-fbf1-4e0b-98d0-bc19e0c604a9@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: <f8f4e221-fbf1-4e0b-98d0-bc19e0c604a9@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 17:45, Andrew Cooper wrote:
> On 28/10/2024 4:25 pm, Jan Beulich wrote:
>> On 28.10.2024 17:18, Andrew Cooper wrote:
>>> On 28/10/2024 4:12 pm, Jan Beulich wrote:
>>>> On 28.10.2024 17:07, Andrew Cooper wrote:
>>>>> On 28/10/2024 4:03 pm, Jan Beulich wrote:
>>>>>> As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): While
>>>>>> this is imported from Linux, the parameter not being pointer-to-const is
>>>>>> dubious in the first place and we're not plausibly going to gain a write
>>>>>> through it.
>>>>>>
>>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>> You haven't tried compiling this, have you?
>>>> Of course I have. Is there any subtlety with compiler versions? Or what
>>>> else am I missing?
>>> struct cpio_data's copy of this field is non-const (which you keep on
>>> noting that new compilers will object to),
>> New compilers? I'm afraid I'm missing context. With gcc14 the patch builds
>> fine. I didn't try _older_ ones (but I see no reason why they might object;
>> see below).
>>
>>> and you can't change that
>>> without breaking the build in microcode.
>> I don't need to change that, "thanks" to
>>
>> 			cd.data = (void *)dptr;
>>
>> casting away const-ness. That is - compilers ought to be fine with the
>> change; Misra won't like it.
> 
> You have literally complained about patches of mine on the grounds of
> "GCC is about to start caring about casting away const on a void pointer".

I still don't remember what context this was in, I'm sorry.

> So which is it.

I'm not adding any such casts; the (potentially problematic) cast is
there already. I therefore still don't see what's wrong with the patch.

>>> Nothing of this form can be taken until the constness is consistent in
>>> microcode, after which yes it can mostly become const.
>> We can move there in steps, can't we?
> 
> Or you can stop trying to insist that I rebase around an
> incorrect/incomplete patch, just for the sake of the const of one void
> pointer, which can still be laundered by this function.

Okay, I won't insist; take my ack as unconditional one. I still consider
it a bad precedent though that we'd set, when elsewhere we ask for const-
correctness wherever possible.

> Especially when you could wait the ~day it will take to get an
> otherwise-good series in, and then change cpio and get all of the const
> problems in one go.

If that turns out to be true, all will indeed be fine in the end. Question
is whether we really want to diverge earlycpio.c by more than minimal
changes.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 16:58:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 16:58:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826863.1241289 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5T4a-0004BR-PE; Mon, 28 Oct 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 826863.1241289; Mon, 28 Oct 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 1t5T4a-0004BK-MY; Mon, 28 Oct 2024 16:58:32 +0000
Received: by outflank-mailman (input) for mailman id 826863;
 Mon, 28 Oct 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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5T4Z-0004BE-Mt
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 16:58:31 +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 dba61aa6-954d-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 17:58:30 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-37d43a9bc03so3210217f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 09:58:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b47a41sm10020651f8f.52.2024.10.28.09.58.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 09:58:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dba61aa6-954d-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730134710; x=1730739510; 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=EQFmdnsTxtmh3WwX2n9GalSRp2I3mYORI+1Zu+WZe1M=;
        b=XAPHWjzQp7XrJwg1fsCQbiFAPTm5SQrL39YSFlW6qRw5xohPSoInuLv5Pxl01zqgpG
         KjplxmGW1OR7i+0bla4ioTxsUTy6nsZFIBH1oJeYsOJAYp+Qvu3QhUU3m/pvOSYhyLWP
         uv/q1OjIb8QVH1KqDfYx9pxPgkhlgXB+zNUg1VXlnotzv5XW61t2Nk4+HGKrBgRClBbD
         SBrwmc85DAWSifbkVS/95i3OydQqVuVzidXhLzg8MlSQEpM+QLHVOwfDd2H/d3mxXrVN
         PgI/2MZjeugYSUYO6Tz+pihjge6KP8ski+Iz0Eb9ODC9uuew99JP2MXpAncYpWYM/uHO
         6nVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730134710; x=1730739510;
        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=EQFmdnsTxtmh3WwX2n9GalSRp2I3mYORI+1Zu+WZe1M=;
        b=jyxJH4QEUry/ui0jNPxMoVRABTmgKgmVodJDj+a5RlI9QsS56Da0CJMXchFsmAlfKJ
         R3R1Ipv6m0DDgK8OdU+68t5mFwwUs5sbpH+RW5ISeKhByBr3s/NEI6cj2lvyIwrKdb+U
         ElCrDJEi8ZvObmJq1rmlEgHbtb1GRdnKbuJXIM3ZKT2Nomx2/OZKmxS0/QrTUs0zVOK5
         /f0TSYGnilszlzU6n9DUqzXiWTUo88f3d2ybagFwhiEccr71ENqal6otpMxVB0X8gAhB
         jLeLFVfcyIICb7G4qXzoop7Txm+xFzjmNAgsr0urCpfvMjUKy8OfxnNciwFu9HCh+Jic
         JguQ==
X-Forwarded-Encrypted: i=1; AJvYcCXmiexTrF6PwTAMHRbY4Q7MY1wf+kDWLbomeJDDFTM9zOCvzTLaS+QGAPUvF0qc+gtukCuOpROsLik=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxQ0kcoUBNpsiZ6ZBZ5mn1l4h3HmJkKIZWmDH85FVa7/xhw+poh
	3zHI0cYdkiziLOw8mnfY5iWTfjUYd/lxc0UNX2ZqC5oXPGxXZqFd7N+msw6SBw==
X-Google-Smtp-Source: AGHT+IFQbMMx14nhQK9TBIkXfsd26ZWT1pV5V5/hdfOZforK+R1TuHFnWiJF3OKdfxkBxCBRPpk7iw==
X-Received: by 2002:adf:f4cf:0:b0:371:9360:c4a8 with SMTP id ffacd0b85a97d-380610f81e7mr6802655f8f.6.1730134709651;
        Mon, 28 Oct 2024 09:58:29 -0700 (PDT)
Message-ID: <fdb156eb-ea82-4afa-afa6-105e605eba6d@suse.com>
Date: Mon, 28 Oct 2024 17:58:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 1/3] x86/msi: harden stale pdev handling
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
 <20241018203913.1162962-2-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: <20241018203913.1162962-2-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.10.2024 22:39, Stewart Hildebrand wrote:
> Dom0 normally informs Xen of PCI device removal via
> PHYSDEVOP_pci_device_remove, e.g. in response to SR-IOV disable or
> hot-unplug. We might find ourselves with stale pdevs if a buggy dom0
> fails to report removal via PHYSDEVOP_pci_device_remove. In this case,
> attempts to access the config space of the stale pdevs would be invalid
> and return all 1s.
> 
> Some possible conditions leading to this are:
> 
> 1. Dom0 disables SR-IOV without reporting VF removal to Xen.
> 
> The Linux SR-IOV subsystem normally reports VF removal when a PF driver
> disables SR-IOV. In case of a buggy dom0 SR-IOV subsystem, SR-IOV could
> become disabled with stale dangling VF pdevs in both dom0 Linux and Xen.
> 
> 2. Dom0 reporting PF removal without reporting VF removal.
> 
> During SR-IOV PF removal (hot-unplug), a buggy PF driver may fail to
> disable SR-IOV, thus failing to remove the VFs, leaving stale dangling
> VFs behind in both Xen and Linux. At least Linux warns in this case:
> 
> [  100.000000]  0000:01:00.0: driver left SR-IOV enabled after remove
> 
> In either case, Xen is left with stale VF pdevs, risking invalid PCI
> config space accesses.
> 
> When Xen is built with CONFIG_DEBUG=y, the following Xen crashes were
> observed when dom0 attempted to access the config space of a stale VF:
> 
> (XEN) Assertion 'pos' failed at arch/x86/msi.c:1274
> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
> ...
> (XEN) Xen call trace:
> (XEN)    [<ffff82d040346834>] R pci_msi_conf_write_intercept+0xa2/0x1de
> (XEN)    [<ffff82d04035d6b4>] F pci_conf_write_intercept+0x68/0x78
> (XEN)    [<ffff82d0403264e5>] F arch/x86/pv/emul-priv-op.c#pci_cfg_ok+0xa0/0x114
> (XEN)    [<ffff82d04032660e>] F arch/x86/pv/emul-priv-op.c#guest_io_write+0xb5/0x1c8
> (XEN)    [<ffff82d0403267bb>] F arch/x86/pv/emul-priv-op.c#write_io+0x9a/0xe0
> (XEN)    [<ffff82d04037c77a>] F x86_emulate+0x100e5/0x25f1e
> (XEN)    [<ffff82d0403941a8>] F x86_emulate_wrapper+0x29/0x64
> (XEN)    [<ffff82d04032802b>] F pv_emulate_privileged_op+0x12e/0x217
> (XEN)    [<ffff82d040369f12>] F do_general_protection+0xc2/0x1b8
> (XEN)    [<ffff82d040201aa7>] F x86_64/entry.S#handle_exception_saved+0x2b/0x8c
> 
> (XEN) Assertion 'pos' failed at arch/x86/msi.c:1246
> (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
> ...
> (XEN) Xen call trace:
> (XEN)    [<ffff82d040346b0a>] R pci_reset_msix_state+0x47/0x50
> (XEN)    [<ffff82d040287eec>] F pdev_msix_assign+0x19/0x35
> (XEN)    [<ffff82d040286184>] F drivers/passthrough/pci.c#assign_device+0x181/0x471
> (XEN)    [<ffff82d040287c36>] F iommu_do_pci_domctl+0x248/0x2ec
> (XEN)    [<ffff82d040284e1f>] F iommu_do_domctl+0x26/0x44
> (XEN)    [<ffff82d0402483b8>] F do_domctl+0x8c1/0x1660
> (XEN)    [<ffff82d04032977e>] F pv_hypercall+0x5ce/0x6af
> (XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150
> 
> These ASSERTs triggered because the MSI-X capability position can't be
> found for a stale pdev.
> 
> Latch the capability positions of MSI and MSI-X during device init, and
> replace instances of pci_find_cap_offset(..., PCI_CAP_ID_MSI{,X}) with
> the stored value. Introduce one additional ASSERT, while the two
> existing ASSERTs in question continue to work as intended, even with a
> stale pdev.
> 
> Fixes: 484d7c852e4f ("x86/MSI-X: track host and guest mask-all requests separately")
> Fixes: 575e18d54d19 ("pci: clear {host/guest}_maskall field on assign")
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Looks largely okay to me now, just two type selection aspects:

> --- a/xen/arch/x86/msi.c
> +++ b/xen/arch/x86/msi.c
> @@ -278,23 +278,21 @@ void __msi_set_enable(u16 seg, u8 bus, u8 slot, u8 func, int pos, int enable)
>  
>  static void msi_set_enable(struct pci_dev *dev, int enable)
>  {
> -    int pos;
> +    int pos = dev->msi_pos;

This and ...

>      u16 seg = dev->seg;
>      u8 bus = dev->bus;
>      u8 slot = PCI_SLOT(dev->devfn);
>      u8 func = PCI_FUNC(dev->devfn);
>  
> -    pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
>      if ( pos )
>          __msi_set_enable(seg, bus, slot, func, pos, enable);
>  }
>  
>  static void msix_set_enable(struct pci_dev *dev, int enable)
>  {
> -    int pos;
> +    int pos = dev->msix_pos;

... this want to become unsigned int at this occasion, imo. Like we have ...

> @@ -764,7 +762,7 @@ static int msix_capability_init(struct pci_dev *dev,
>      u8 slot = PCI_SLOT(dev->devfn);
>      u8 func = PCI_FUNC(dev->devfn);
>      bool maskall = msix->host_maskall, zap_on_error = false;
> -    unsigned int pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSIX);
> +    unsigned int pos = dev->msix_pos;

... e.g. here already.

> --- a/xen/include/xen/pci.h
> +++ b/xen/include/xen/pci.h
> @@ -113,6 +113,9 @@ struct pci_dev {
>          pci_sbdf_t sbdf;
>      };
>  
> +    unsigned int msi_pos;
> +    unsigned int msix_pos;
> +
>      uint8_t msi_maxvec;
>      uint8_t phantom_stride;

As can be seen from the subsequent members, we're trying to be space
conserving here. Both fields won't require more than 8 bits, so uint8_t
or unsigned char would be the better type to use. Again imo. Preferably
with those adjustments (which could likely be done while committing)
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:02:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:02:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826873.1241299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5T8Z-00062G-Cj; Mon, 28 Oct 2024 17:02:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826873.1241299; Mon, 28 Oct 2024 17: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 1t5T8Z-000629-AC; Mon, 28 Oct 2024 17:02:39 +0000
Received: by outflank-mailman (input) for mailman id 826873;
 Mon, 28 Oct 2024 17: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=xGmR=RY=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5T8X-000623-Ir
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:02:37 +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 6e935402-954e-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 18:02:36 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-539f72c8fc1so5566722e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:02:36 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4319360833asm115350245e9.39.2024.10.28.10.02.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 10:02:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6e935402-954e-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730134956; x=1730739756; 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=hNXB7UX5VMF6EzQiJRksc2zuH0s+s4PPYjssGts0qCo=;
        b=Kte2O9cWx0PPvNItqZCw8WvZhfhpqjNNfr/X6Zn+y3ilxO2+sKgqnlV/B2g6yh15+c
         QQJnNr0o4VcxQUgny3EUo8NZJ+E6Cu6iNL+yGHDutaGhlRvwRurpZx95RyGEgKbydFY9
         ev4tmBcBqN9EygSu77xjHxU+3wCWqlAlBLeAVV+KS6SeYNAyNKMAOinOyf+3rKaCZ6dH
         g3O1Zl6uR+Pu5hohwmg2lHwvQRk/9pBCtYXPqbyb44ebZ0QKWklOzyH2tpl1p3sgnHHz
         7C1bei9mvQRNCpOQWXuEsrY6mWu3nLpcZeBAOf5ZwzMebvcvhWYbGV06IMB4wBAuiEkp
         f8sw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730134956; x=1730739756;
        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=hNXB7UX5VMF6EzQiJRksc2zuH0s+s4PPYjssGts0qCo=;
        b=MCouSbYQUOo4WSUaXieR19nhfVlKH03irZdPPgmulbFXzElIo9DUITamquayCFKQ57
         n2uuAYwuXR6CMNAfQtx6rMUGMkRpJGoc8aFW+eGwc/obxyFPEaBhmj8x6odTF3/TVr55
         8TtttMAfdmF4k2e2QmSAv9lxAE9E0n0KMRrGmyzbGmZrEsoXZ/EgggUy5BlOw1BxyC8o
         U6nDaYjMg5+yc2hxyz28d8etoGn0tUdRFt5oHcczVuMsSs/RKDC1MV1xMDwdrpdnuvMt
         tIizWLPNOfJr+qfDlhcn0taSEfCv7cdHlaRbLE+adV5xteYI0HamwlL2sFOTC0ocY+D7
         DP+g==
X-Forwarded-Encrypted: i=1; AJvYcCVJI2iZHgP1lLkpNth305txEGF26WVqTMvr0tsVe3VHC1djiAN2GRLAPd+RO0yhHM9ZLpVex07VtP4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzuSjTfJlNB+cNSGB1ucDNaP9o3eWnp7Z1ZRQZFdhBMb5B2ItmA
	v+ewwTxUYz4YggMWYJjJ5+pn7/F1viGpXLYt3SbrmANSh7CmrKDJ0m4hqm/+Tw==
X-Google-Smtp-Source: AGHT+IGvgbTOuBN827f1y3ftk1RYbiDHGuvk3mu0LcV+CuwcxT0nC81QDcjX0A4NzTD10qHlU5lQtg==
X-Received: by 2002:a05:6512:691:b0:53a:44c:615a with SMTP id 2adb3069b0e04-53b3491ce7fmr4075174e87.43.1730134956114;
        Mon, 28 Oct 2024 10:02:36 -0700 (PDT)
Message-ID: <56b5a45b-871d-41a4-8e1d-74d72020054f@suse.com>
Date: Mon, 28 Oct 2024 18:02:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 2/3] xen/pci: introduce PF<->VF links
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
 <20241018203913.1162962-3-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: <20241018203913.1162962-3-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.10.2024 22:39, Stewart Hildebrand wrote:
> Add links between a VF's struct pci_dev and its associated PF struct
> pci_dev. Move the calls to pci_get_pdev()/pci_add_device() down to avoid
> dropping and re-acquiring the pcidevs_lock().
> 
> During PF removal, unlink VF from PF and mark the VF broken. As before,
> VFs may exist without a corresponding PF, although now only with
> pdev->broken = true.
> 
> The hardware domain is expected to remove the associated VFs before
> removing the PF. Print a warning in case a PF is removed with associated
> VFs still present.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> ---
> Candidate for backport to 4.19 (the next patch depends on this one)
> 
> v5->v6:
> * move printk() before ASSERT_UNREACHABLE()
> * warn about PF removal with VFs still present

Hmm, maybe I didn't make this clear enough when commenting on v5: I wasn't
just after an adjustment to the commit message. I'm instead actively
concerned of the resulting behavior. Question is whether we can reasonably
do something about that.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:07:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:07:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826877.1241309 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5TDG-0006xx-Ub; Mon, 28 Oct 2024 17:07:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826877.1241309; Mon, 28 Oct 2024 17:07: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 1t5TDG-0006xq-Qz; Mon, 28 Oct 2024 17:07:30 +0000
Received: by outflank-mailman (input) for mailman id 826877;
 Mon, 28 Oct 2024 17:07: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=WnZV=RY=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5TDG-0006xk-5s
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:07:30 +0000
Received: from mail-oo1-xc33.google.com (mail-oo1-xc33.google.com
 [2607:f8b0:4864:20::c33])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1bab759e-954f-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 18:07:27 +0100 (CET)
Received: by mail-oo1-xc33.google.com with SMTP id
 006d021491bc7-5ebc04d495aso2606118eaf.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:07:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1bab759e-954f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730135246; x=1730740046; 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=b8gsRkgHtnhlFLoiFdA//3m3mbNeQBSnuTTdr/hYpPc=;
        b=HCh5zqaTCdqEXu4ZQAqB6sneHhL14Gr/K+GcDlxmYVns0brIE9fKfo+0aOMO3oW7Mh
         jQ85/Qivj3fkd6x3dcKr2HWfMoPa3rfee8XZfUmXgYzpEzZGpEPbrz3zsr9FHp7Ci1Ij
         9326hrMtkYLD/ggQFDwcL1nL9ciGcsEFIQXA0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730135246; x=1730740046;
        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=b8gsRkgHtnhlFLoiFdA//3m3mbNeQBSnuTTdr/hYpPc=;
        b=FiaHJHTk/DJDq1WuPoe85r6HxI4KXxH4Q8/tQfJnQab7oIWEVq3JdhYrpw0DukgzsP
         AMwsyAIlRzU5cxmAPNJXdG0fReBYvKk6q3s0xww7L2naYRh3CBZecoXY0v+cGlfExSb4
         47Q8wb8ZLhhcTxsbkgM6B5W0x+0izsCaoM+/q4Oxg748F7UF4VCH3eTacLaZaAMAVVde
         rw/ImEMID/g/xNrUlf8t7T2i+9q+8fdLFJ79FEndsSuUBpYYcQfFRVwkDTXRUlG0nUQE
         dPg7sAN5+xsvtaCevnq4HOXoGmLmuJzfJuEvBXEA39onIn51EIACMRTmRkfrJNKCPuKR
         AVeg==
X-Forwarded-Encrypted: i=1; AJvYcCUiJE2oDQlmVU85kRc6wk4UyCG8+kOI61YalhjPZB51QeaoCOdnatPyLX1uKfi1VhmiMG0F/xgFq2Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyZyLgAgubO0QtqYfJNix8sNpf/4jdMRYfPv/2MShGERhBQoy6Z
	rM/jBKOyhlZm/blGanb2wgHWmzwfEnT1c2KBxb2Gu/o9bTPrVt3wB85PTrr1vwXsulHn1pfwokp
	ZXaissQfuFvXpx/fQ+0JbAPx88vlqIBD7+cCz6g==
X-Google-Smtp-Source: AGHT+IGKlf7QZqiLyrwjx0m87hPy7ricMF3gP3tzyYYH6KJVW0l1M3p/N0DUbFNyFS9ota8nIppL59fi7qXE7JPiS6A=
X-Received: by 2002:a05:6820:2218:b0:5eb:7e7c:5303 with SMTP id
 006d021491bc7-5ec237d1a4cmr5888437eaf.2.1730135246513; Mon, 28 Oct 2024
 10:07:26 -0700 (PDT)
MIME-Version: 1.0
References: <b2fdb048-cfc5-4f61-8507-bf8020e02132@suse.com>
 <764c0116-88ed-48af-8e53-f2a0f6e850a3@citrix.com> <c618e09f-b88c-45c8-8cbd-8aae82891c6e@suse.com>
 <ecd11958-2ce8-41fc-87f8-7b6b090c74b5@citrix.com> <aab91022-5115-4af0-8f9d-569c63a296bb@suse.com>
 <f8f4e221-fbf1-4e0b-98d0-bc19e0c604a9@citrix.com> <fee34f7d-6d2e-44c6-aa76-e1d6d4856ddf@suse.com>
In-Reply-To: <fee34f7d-6d2e-44c6-aa76-e1d6d4856ddf@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Mon, 28 Oct 2024 17:07:15 +0000
Message-ID: <CACHz=Zgn06KXoqo0rct=-AL4_utBdsdhmGgRakO_86x7WgTvXg@mail.gmail.com>
Subject: Re: [PATCH] earlycpio: constify find_cpio_data()'s "data" parameter
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 28, 2024 at 4:51=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 28.10.2024 17:45, Andrew Cooper wrote:
> > On 28/10/2024 4:25 pm, Jan Beulich wrote:
> >> On 28.10.2024 17:18, Andrew Cooper wrote:
> >>> On 28/10/2024 4:12 pm, Jan Beulich wrote:
> >>>> On 28.10.2024 17:07, Andrew Cooper wrote:
> >>>>> On 28/10/2024 4:03 pm, Jan Beulich wrote:
> >>>>>> As with 9cbf61445cda ("xen/earlycpio: Drop nextoff parameter"): Wh=
ile
> >>>>>> this is imported from Linux, the parameter not being pointer-to-co=
nst is
> >>>>>> dubious in the first place and we're not plausibly going to gain a=
 write
> >>>>>> through it.
> >>>>>>
> >>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >>>>> You haven't tried compiling this, have you?
> >>>> Of course I have. Is there any subtlety with compiler versions? Or w=
hat
> >>>> else am I missing?
> >>> struct cpio_data's copy of this field is non-const (which you keep on
> >>> noting that new compilers will object to),
> >> New compilers? I'm afraid I'm missing context. With gcc14 the patch bu=
ilds
> >> fine. I didn't try _older_ ones (but I see no reason why they might ob=
ject;
> >> see below).
> >>
> >>> and you can't change that
> >>> without breaking the build in microcode.
> >> I don't need to change that, "thanks" to
> >>
> >>                      cd.data =3D (void *)dptr;
> >>
> >> casting away const-ness. That is - compilers ought to be fine with the
> >> change; Misra won't like it.
> >
> > You have literally complained about patches of mine on the grounds of
> > "GCC is about to start caring about casting away const on a void pointe=
r".
>
> I still don't remember what context this was in, I'm sorry.
>
> > So which is it.
>
> I'm not adding any such casts; the (potentially problematic) cast is
> there already. I therefore still don't see what's wrong with the patch.
>

You usually don't want some const data to be silently transformed to
no-const data. In this case the "find_cpio_data" is getting a no-const
pointer "data" and returning it into "cpio_data.data". As
"cpio_data.data" is no-const for the previously stated rule the
initial data (that is "data" pointer) should not be const.

Internally you change from no-const to const with the assignment to
"p" and than "dptr". However the "find_cpio_data" function has
knowledge of the original no-const so it uses that knowledge for the
no-const conversion done by "cd.data =3D (void *)dptr". That makes that
conversion less "silent".

> >>> Nothing of this form can be taken until the constness is consistent i=
n
> >>> microcode, after which yes it can mostly become const.
> >> We can move there in steps, can't we?
> >
> > Or you can stop trying to insist that I rebase around an
> > incorrect/incomplete patch, just for the sake of the const of one void
> > pointer, which can still be laundered by this function.
>
> Okay, I won't insist; take my ack as unconditional one. I still consider
> it a bad precedent though that we'd set, when elsewhere we ask for const-
> correctness wherever possible.
>
> > Especially when you could wait the ~day it will take to get an
> > otherwise-good series in, and then change cpio and get all of the const
> > problems in one go.
>
> If that turns out to be true, all will indeed be fine in the end. Questio=
n
> is whether we really want to diverge earlycpio.c by more than minimal
> changes.
>
> Jan
>

Frediano


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:12:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:12:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826884.1241318 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5TIO-0000XV-F5; Mon, 28 Oct 2024 17:12:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826884.1241318; Mon, 28 Oct 2024 17: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 1t5TIO-0000XO-CX; Mon, 28 Oct 2024 17:12:48 +0000
Received: by outflank-mailman (input) for mailman id 826884;
 Mon, 28 Oct 2024 17:12: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5TIN-0000XI-JC
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:12:47 +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 d97be184-954f-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 18:12:45 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9a4031f69fso615975766b.0
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:12:45 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a086de0sm393423666b.218.2024.10.28.10.12.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 10:12:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d97be184-954f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730135565; x=1730740365; 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=meTor9NRAUC6zbNwH9uIfOpXO8HifutLAt1c+xxhuNw=;
        b=v8/l1DbD+gkdqKSySdJxBmrVzyhqjiJ57+pmsYam2FVM9ZPd6GcXgdyMdVQNxMXDDA
         DGqDgFzxLyzpJUFKXCVaqxDlxKX3l1wrqkDGhvfbd+Qk6MH20Wk3kgpiMSbnB7LdNjGv
         y7XUK/l3K9PhkzVOXrZDG6euRDOxxulOH+fAM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730135565; x=1730740365;
        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=meTor9NRAUC6zbNwH9uIfOpXO8HifutLAt1c+xxhuNw=;
        b=JocySwBSmR3hFMZYPndHaAItBVPbq+NM+8FKiot8n6E9Hs1epdtucZ9960wiTHiMLJ
         mmXbgwPSjKMxlbPFzmaKFEp/6zmhAdJcdt9fsY7kixN3wBT2iptSpLVUB8K8QwG7b1kM
         mmqIGpjDhm3CPqSYWzDcX6C88iZWTllcm7lJsVF1JDwkml78hkn5y1cGfSoSlJLTHO4l
         zzbiMe8jNhKU21x20SY+S3+Vd8Cn//p023//W0EjXsj3k8NRbnZF/nz74krcF0+xxJ4c
         aWwanMl5PnNxh4wRDTpDMzfKhyNX76byPt66ZRDRatUoGS9zBlWCTMBQ0jdLzoJjxpjS
         NjDw==
X-Forwarded-Encrypted: i=1; AJvYcCW9KlorCoIgK0oAGTQifdHKmt/GZAyC+dzpCEL5Cf2tfouy34mDL7DQquZjSljyZRu54xp/8W81lSQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzb8i1AfteC+9jGfqQhkkhOvfSZZVAq5lCUkHiKWk6h65C5XwDG
	pCBtTKtD7Eez0ioPWmX2AM79yVc3fGVT9H0ZdYN0c9XPFJuyVMBO9jvdRea3zXk=
X-Google-Smtp-Source: AGHT+IHh9ohwgU3CmJ/KjghIMsivPWJ48M/7H7FNreCk/Aad/ubXFUDzYIWPV8I37ZdFT7VN3kj/Jg==
X-Received: by 2002:a17:907:7f13:b0:a99:5f2a:444d with SMTP id a640c23a62f3a-a9de61a0feemr823556366b.56.1730135564978;
        Mon, 28 Oct 2024 10:12:44 -0700 (PDT)
Message-ID: <d7f9489d-8031-493b-bf36-b009d5536b0c@citrix.com>
Date: Mon, 28 Oct 2024 17:12:43 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 02/10] x86/ucode: Delete the microcode_init() initcall
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-3-andrew.cooper3@citrix.com>
 <99ba9bcf-f356-416a-b355-f32e622d1406@suse.com>
Content-Language: en-GB
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: <99ba9bcf-f356-416a-b355-f32e622d1406@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28/10/2024 1:38 pm, Jan Beulich wrote:
> On 28.10.2024 10:18, Andrew Cooper wrote:
>> The comment highlights just how bogus this really is.  Being an initcall, the
>> boot allocator is long gone, and bootstrap_unmap() is a no-op.
> How's the boot allocator coming into the picture here? This is all about
> (un)mapping, not allocating.
>
>> The fact there is nothing to do should be a giant red flag about the validity
>> of the mappings "being freed".  Indeed, they both constitute use-after-frees.
> I can't spot any use-after-free; the pointers in question ...
>
>> --- a/xen/arch/x86/cpu/microcode/core.c
>> +++ b/xen/arch/x86/cpu/microcode/core.c
>> @@ -758,28 +758,6 @@ int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
>>      return continue_hypercall_on_cpu(0, microcode_update_helper, buffer);
>>  }
>>  
>> -static int __init cf_check microcode_init(void)
>> -{
>> -    /*
>> -     * At this point, all CPUs should have updated their microcode
>> -     * via the early_microcode_* paths so free the microcode blob.
>> -     */
>> -    if ( ucode_blob.size )
>> -    {
>> -        bootstrap_unmap();
>> -        ucode_blob.size = 0;
>> -        ucode_blob.data = NULL;
>> -    }
>> -    else if ( ucode_mod.mod_end )
>> -    {
>> -        bootstrap_unmap();
>> -        ucode_mod.mod_end = 0;
>> -    }
>> -
>> -    return 0;
>> -}
>> -__initcall(microcode_init);
> ... aren't used anywhere. bootstrap_unmap() is "just in case" (perhaps indeed
> a no-op at least nowadays), and the rest is field clobbering. I'm okay with the
> code change, so
> Acked-by: Jan Beulich <jbeulich@suse.com>
> yet I'd like to ask for the description to be "softened" some.

As I said, this could be folded into patch 9, given this particular
arrangement of the series.

The UAFs are apparent *because* the comment demonstrates a false line of
reasoning.

ucode_mod literally is used after free.  ucode=$n is genuinely buggy
today, because its a stash of a physical pointer across move_xen().

ucode_blob stashes a virtual pointer.  This was even noticed in
dc380df12acf ("x86/ucode: load microcode earlier on boot CPU")

---
It needs to rescan the modules in order to find the new virtual address
of the ucode blob because it changes during the boot process, e.g.
from 0x00000000010802fc to 0xffff83204dac52fc.
---

which highlighted the problem but duct-taped over it.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:16:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:16:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826889.1241329 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5TMJ-0001Ng-UF; Mon, 28 Oct 2024 17:16:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826889.1241329; Mon, 28 Oct 2024 17:16: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 1t5TMJ-0001NZ-Rh; Mon, 28 Oct 2024 17:16:51 +0000
Received: by outflank-mailman (input) for mailman id 826889;
 Mon, 28 Oct 2024 17:16: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5TMJ-0001NT-0B
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:16:51 +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 6b2f8933-9550-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 18:16:50 +0100 (CET)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c9428152c0so5288971a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:16:50 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb62c9e60sm3505453a12.57.2024.10.28.10.16.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 10:16:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6b2f8933-9550-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730135809; x=1730740609; 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=he1xDpJNSWo24LOGoxUn+wHNiZL9sJlBn2Xu+OzyMPg=;
        b=j+SDvD81QxY6+I3diz2gh3NNBPrw1Cu0o7c0MdgtIYaNoTF6WCBU7EKwNAHOOkX8vS
         Xx2eF6BOmuYacFRLLo7kkIxfcbrEIOABP6b3RrXL0/9ceRVZ+VuDHiM5+LvK1rHUDANn
         3ejdnM0c+0nNKK0UklfIcgRw5CqIwYaFdD550=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730135809; x=1730740609;
        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=he1xDpJNSWo24LOGoxUn+wHNiZL9sJlBn2Xu+OzyMPg=;
        b=H32JTJ2wPbpJtoIw+VEfcfU563wSvkGgVq9MN8WM7LLOVqcUS36JwhSOTAToSzWlS/
         agDt6Ggg4QbccOhb8ti8r0Dczh3UjWbYIB3uYw9ARarZJtdbdoON6AQonUM0gKs275aQ
         d9DRnvFOIxi+YCfzmPiq1kHuoiMCtRbu4sX6Hf9K+SgjL2kIBgEjyLc/1LfihThSrh8J
         zBmQ6PNC4ZNOEg86/qCWSMr0T+yi/WDSgEIK32g/aBIwBuDBKzXFSkaksASX5QEnqrvm
         WUsYu9EH+4+zGMxg1uO+DcrOPyQkU2G2NOXAecL4a0ALmKwE4o+z0beSgVJHu0WHNe9K
         N58A==
X-Forwarded-Encrypted: i=1; AJvYcCVrpmLUjsgoOtrmns/10U141fGgxHev1F0RC8c/+MqHjlhf1A7hhb1P64Iy9896g40HUQCLoosTcuo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz2w+ExSMqEp1vkW2rBzCHabIBDSLP4uny/Vz+qomA/yovWxGS/
	mFBdXayhKnF5OIwLT7IZLrowE8EE3rSHVU6OCEmLhgl/x4aj6Y5PprtrACl0sFk=
X-Google-Smtp-Source: AGHT+IEw6ErSJJdCacCVgF7HXMfpvLiVptQod+5BieK+bG3ax/IRMjnRP+2tG1CJ3UAo8Iwxa4WHvA==
X-Received: by 2002:a05:6402:278b:b0:5c9:85de:db8a with SMTP id 4fb4d7f45d1cf-5cbbf8a4d1cmr8483617a12.11.1730135808076;
        Mon, 28 Oct 2024 10:16:48 -0700 (PDT)
Message-ID: <fdc89027-d33c-40f5-93f9-b8d7e880e732@citrix.com>
Date: Mon, 28 Oct 2024 17:16:46 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 01/14] x86/xstate: Update stale assertions in
 fpu_x{rstor,save}()
To: Alejandro Vallejo <alejandro.vallejo@cloud.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: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-2-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241028154932.6797-2-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
> The asserts' intent was to establish whether the xsave instruction was
> usable or not, which at the time was strictly given by the presence of
> the xsave area. After edb48e76458b("x86/fpu: Combine fpu_ctxt and
> xsave_area in arch_vcpu"), that area is always present a more relevant
> assert is that the host supports XSAVE.
>
> Fixes: edb48e76458b("x86/fpu: Combine fpu_ctxt and xsave_area in arch_vcpu")
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> ---
> I'd also be ok with removing the assertions altogether. They serve very
> little purpose there after the merge of xsave and fpu_ctxt.

I'd be fine with dropping them.  If they're violated, the use of
XSAVE/XRSTOR immediately afterwards will be fatal too.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:20:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:20:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826896.1241339 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5TPj-0003RE-FJ; Mon, 28 Oct 2024 17:20:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826896.1241339; Mon, 28 Oct 2024 17: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 1t5TPj-0003R7-CM; Mon, 28 Oct 2024 17:20:23 +0000
Received: by outflank-mailman (input) for mailman id 826896;
 Mon, 28 Oct 2024 17:20: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=/lrK=RY=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5TPh-0003R1-Kc
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:20:21 +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 e8b81ba2-9550-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 18:20:20 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9a2209bd7fso680857766b.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:20:20 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec8169sm393895666b.34.2024.10.28.10.20.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 28 Oct 2024 10:20:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8b81ba2-9550-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730136020; x=1730740820; 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=wLHV839vVLTXRRhKD2tZguxdsN+9yysZwUdPDCClAW8=;
        b=pZ0qN41YxNgvXZGxU2Ouae1/8rsRrqR+/KU9cHFEz0GDF01FFfUxFF9R2GxILZ2tMp
         GSAR3erarlYGl+Si/GWUdS9oz88RXpF4COsRXo+YZnyVybLdR8Mv1L3ju/ex+428UiXi
         Z1oQ3Rs+PZrfUvMFAa/GJesaNb1/ahZGYn/ug=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730136020; x=1730740820;
        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=wLHV839vVLTXRRhKD2tZguxdsN+9yysZwUdPDCClAW8=;
        b=fAAdMrm/ry4PCLgC8Il/kTdF082giwCvNGRluWiyWIKJwXu19jVtQkLVxlI9bZxaL8
         80/xbyRsvmuCHCEzYx+AcJmNVnLoyvrleH9j5p3xCK1Kmwlrrd7bFRcg2XoLuJshD9Gq
         3efqjHobMTGvbqb6B62vvB8iaq8sFJN/5Bxatrm95artdb0pfEZgYoDSxKrEgquwgKZF
         qPMjmB4CcZDBC18Ye04jlvIML3vwCbtOpzqTHXGMQ1aK3PnoAGcd25+rsybAd2PCwEN7
         l/V2SsMHXqiSqCXkdTi8wPsaOw2rOoDvDltD2VYG+zAtRncVtqRA9Doj8Orfz1/FMQuj
         MIqA==
X-Forwarded-Encrypted: i=1; AJvYcCUgtx4U3crEfCMiUUiohrmTVWfHf8uCjdqpCJF4te45Xo5Aim+hBaJ37GcBG5DBjEIk71U7QYlkgxk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyb5ahc1GyoCU/9zq7uJ4q+pwIUkP1D5/mZ26Q0MhmshoAi1ISC
	N3jYhsmDtajVPPfyI4JZniHB5RXG09hBO72wDGXEuCBhyLhmmc7EP0AHTa6UPhQ=
X-Google-Smtp-Source: AGHT+IGV+S1CEX32VTrHnM1WaJUXrhETl1VyagLcGKLGVmfcEunV5fGnSLbb17dBGo4C3dUbRTGGNQ==
X-Received: by 2002:a17:907:7245:b0:a99:f8e2:edec with SMTP id a640c23a62f3a-a9de5d6f21cmr969172266b.21.1730136020187;
        Mon, 28 Oct 2024 10:20:20 -0700 (PDT)
Message-ID: <0a644e0d-b7dc-49b5-b4ba-943f809286a8@citrix.com>
Date: Mon, 28 Oct 2024 17:20:18 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave
 areas
To: Alejandro Vallejo <alejandro.vallejo@cloud.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: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241028154932.6797-3-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
> diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
> index 07017cc4edfd..36260459667c 100644
> --- a/xen/arch/x86/include/asm/xstate.h
> +++ b/xen/arch/x86/include/asm/xstate.h
> @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu *v)
>             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
>  }
>  
> +/*
> + * Fetch a pointer to the XSAVE area of a vCPU
> + *
> + * If ASI is enabled for the domain, this mapping is pCPU-local.
> + *
> + * @param v Owner of the XSAVE area
> + */
> +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
> +
> +/*
> + * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.
> + *
> + * If ASI is enabled and v is not the currently scheduled vCPU then the
> + * per-pCPU mapping is removed from the address space.
> + *
> + * @param v           vCPU logically owning xsave_area
> + * @param xsave_area  XSAVE blob of v
> + */
> +#define vcpu_unmap_xsave_area(v, x) ({ (x) = NULL; })
> +

Is there a preview of how these will end up looking with the real ASI
bits in place?

Having a macro-that-reads-like-a-function mutating x by name, rather
than by pointer, is somewhat rude.  This is why we capitalise
XFREE()/etc which have a similar pattern; to make it clear it's a macro
and potentially doing weird things with scopes.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:22:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:22:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826904.1241348 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5TS5-00040J-RE; Mon, 28 Oct 2024 17:22:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826904.1241348; Mon, 28 Oct 2024 17:22: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 1t5TS5-00040C-Oh; Mon, 28 Oct 2024 17:22:49 +0000
Received: by outflank-mailman (input) for mailman id 826904;
 Mon, 28 Oct 2024 17:22: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=owpo=RY=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5TS4-000406-JH
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:22:48 +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 405d4270-9551-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 18:22:47 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c937b5169cso7104538a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:22:47 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb6297a09sm3307762a12.21.2024.10.28.10.22.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 10:22:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 405d4270-9551-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730136167; x=1730740967; 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=MH1uUG7QfAsepR6+0GiN2ChsMwlmg3yMjFFkBYIymlM=;
        b=qdZqW1wMe1eRJtPFXncs/k5HPpteCchyZySxpcBaMmV6VxyhEHqWzftaknUfyns245
         KIri9SjyQSiJFsjjjmGB2Acv3RBSbyKnkm7xRwDfXo9qjZWUP8Vj9vpSmANmSZQtlClI
         bz+x+3iDTyMSjaTOwa2CKn9mpmgWd2wiCnXOU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730136167; x=1730740967;
        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=MH1uUG7QfAsepR6+0GiN2ChsMwlmg3yMjFFkBYIymlM=;
        b=VVIzZlSYzqC74sFB7NidJ2d31G2NuBB2dgN7dwgH33DIukgF0UUYAxQxAMW9tlQpt8
         ceuJCm0jkQeD2lPikkmQDCXxKYQeajgmkLxFN/9UgrjJGsB7gc+hIscBkFlhs1wjOa8E
         DgV9OJJH4VwOiWrNImfeu24aeyzDwPsomO1efbbdyAbqg4XavQ24O4lM5kk9nvy6NA0I
         omfrbh1nMtrUtv4IrvX7HlbK1nRmrTvUwxIcJ3f4lNymM7XevWf4rtarfDpE0pMLZYBC
         PrQgTlHBWBCJK8VCmQqxHqEGOhKHuWqYlAnLT3JdFoW/x/LmbxTcdUgsgArQNqoGW9sW
         NOfQ==
X-Forwarded-Encrypted: i=1; AJvYcCVx1dbByCmfw3LNLLriBd5EgCf2uJ8WLK6EzKFgwyqFEX1G23CjCH5/thtud6WtKqe3hLKLTywba2g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwgXs0QBwnmaKEVZmGa/wgU/EaG+eLpGu6HCH11gJCjKx4INkVN
	4qhR80zL/DOVMC/3bvO9g5FLkZQm5wquFrq4ZIP64b9PyDXL5tWzikz5yY4+TVA=
X-Google-Smtp-Source: AGHT+IEGcRoRB6zTD3ip6gT3LsFaAI7MfcR8RoKZ+7ERj0z5d7SPDizn5gajT2Ty9NYcJv+O+kcCow==
X-Received: by 2002:a05:6402:1953:b0:5c4:aea:5833 with SMTP id 4fb4d7f45d1cf-5cc196c3a8amr325707a12.18.1730136167060;
        Mon, 28 Oct 2024 10:22:47 -0700 (PDT)
Date: Mon, 28 Oct 2024 18:22:45 +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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
Message-ID: <Zx_IZUyNL-Iw-nrL@macbook>
References: <20241024154844.8652-1-roger.pau@citrix.com>
 <abadac24-0392-4051-b6a2-08967272f1a1@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <abadac24-0392-4051-b6a2-08967272f1a1@suse.com>

On Mon, Oct 28, 2024 at 12:33:42PM +0100, Jan Beulich wrote:
> On 24.10.2024 17:48, Roger Pau Monne wrote:
> > --- a/xen/arch/x86/io_apic.c
> > +++ b/xen/arch/x86/io_apic.c
> > @@ -71,6 +71,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> >  
> >  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> >  
> > +/*
> > + * Store the EOI handle when using interrupt remapping.
> > + *
> > + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> > + * format repurposes the vector field to store the offset into the Interrupt
> > + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> > + * longer matches the contents of the RTE vector field.  Add a translation
> > + * table so that directed EOI uses the value in the RTE vector field when
> > + * interrupt remapping is enabled.
> > + *
> > + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> > + * when using the remapped format, but use the translation table uniformly in
> > + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> > + *
> > + * The matrix is accessed as [#io-apic][#pin].
> > + */
> > +static uint8_t **io_apic_pin_eoi;
> 
> Wasn't the conclusion from the v1 discussion that this needs to be a signed
> type wider than 8 bits?
> 
> > @@ -298,6 +323,9 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
> >      /* Prefer the use of the EOI register if available */
> >      if ( ioapic_has_eoi_reg(apic) )
> >      {
> > +        if ( io_apic_pin_eoi )
> > +            vector = io_apic_pin_eoi[apic][pin];
> > +
> >          /* If vector is unknown, read it from the IO-APIC */
> >          if ( vector == IRQ_VECTOR_UNASSIGNED )
> >              vector = __ioapic_read_entry(apic, pin, true).vector;
> 
> In addition to what Andrew said here, for this comparison the make sense
> ...
> 
> > @@ -1022,7 +1050,20 @@ static void __init setup_IO_APIC_irqs(void)
> >  
> >      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
> >  
> > +    if ( iommu_intremap )
> > +    {
> > +        io_apic_pin_eoi = xzalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
> > +        BUG_ON(!io_apic_pin_eoi);
> > +    }
> > +
> >      for (apic = 0; apic < nr_ioapics; apic++) {
> > +        if ( iommu_intremap )
> > +        {
> > +            io_apic_pin_eoi[apic] = xzalloc_array(typeof(**io_apic_pin_eoi),
> > +                                                  nr_ioapic_entries[apic]);
> > +            BUG_ON(!io_apic_pin_eoi[apic]);
> > +        }
> 
> ... doesn't the array also need -1 (== IRQ_VECTOR_UNASSIGNED) filling,
> rather than zero-filling?

Replying here to both you and Andrews question.  My analysis is that
a sentinel is not needed.  clear_IO_APIC_pin() is the only function
that calls the EOI routine outside of the irq_desc handlers logic.

It's used either by clear_IO_APIC(), which gets called before
io_apic_pin_eoi is allocated, or by check_timer() and/or
unlock_ExtINT_logic() both of which will perform an
ioapic_write_entry() before the clear_IO_APIC_pin() call.

I've done some XenRT testing with a modified patch that kept the
io_apic_pin_eoi as unsigned int, used the sentinel as init value and
added an assert in __io_apic_eoi() that the value in the array was
never IRQ_VECTOR_UNASSIGNED when the io_apic_pin_eoi was allocated.
This never triggered on any hardware XenRT tested on.

Maybe this seems to fragile, and you both prefer to keep the sentinel
just in case?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:26:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:26:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826909.1241359 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5TVi-0004cb-Ak; Mon, 28 Oct 2024 17:26:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826909.1241359; Mon, 28 Oct 2024 17: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 1t5TVi-0004cU-7l; Mon, 28 Oct 2024 17:26:34 +0000
Received: by outflank-mailman (input) for mailman id 826909;
 Mon, 28 Oct 2024 17: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=owpo=RY=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5TVh-0004cO-TM
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:26:33 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c5ed0e36-9551-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 18:26:31 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99cc265e0aso708322966b.3
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:26:31 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b30d6fdc5sm394889566b.163.2024.10.28.10.26.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 10:26:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5ed0e36-9551-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730136391; x=1730741191; 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=AsqMoxtXULfn2iiQA+6XYVvRZeNzl30o7ByaG+8mNJc=;
        b=FWBQUGE5KbRFzm6k2OcGJTnnpu2pTQl7+sXP5B1j5PZmP5iBTRj4M74uF8FaAYU4n5
         JNe/1t8R6o2kARCIKbiape/1V9wag1t7k7os2ZL+3qgCKk0CqId9bebmpp5BT5Rp5O6Z
         kTNX02jT9ACfHISwEVm3zi099yvU5sZ0jhEjM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730136391; x=1730741191;
        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=AsqMoxtXULfn2iiQA+6XYVvRZeNzl30o7ByaG+8mNJc=;
        b=T8gZAPSgo8naGy1LecyIBaUGBf6ZtLyS3J53senw8Y/vLsOyf9CtHrRlsroAEbimJK
         3/MD+D/C8mhxmWTlzIJ4CDMDeZg1a2qrguWvqRC3DssIjodQwyENuxxUQTVkHOGqtZQC
         Zvuk3NqeNHd+vQk1V2dWzrBOFb8iZ+ZDXwGXw4uFYujEPVX62PrwNbzQAf3b3NDrY6GU
         rqCblQZrs9a/+CxLC0olGc2rDJuzQ+y6a2xxpbnnl+aYw/XlH4LXvqXinMMlOM23KRHN
         QZFYle7mnhJ1AG8uj4fz/foMkKSBdzAa6g1LJVeMtdeEtOOrDNMAlydvJBgfhkHiz2Yo
         cEuA==
X-Forwarded-Encrypted: i=1; AJvYcCWgebhv0IQ0yHYZP+lHhwFPuvUjG3lF35aDPDqsvKhCt8u5UhiMIPUxoXEJY+5HfydCg3Y32Zld7Rs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyrGQ4KxzQVuP49l+WlW/YC0fHGMqriIEdFI241tMuJT6FBlhTf
	Eb9xYOr7yp4XX9KUz1X/WDItnevrRhCudMpEnlrLQnxoDH6BIn7SfE3uk5YwfBw=
X-Google-Smtp-Source: AGHT+IG77GekEcE+1P2ekSiQLucfNcRsDpTr399Lar8agdq9FphHiDCWAZxtcy8ODrZU63IcPnHKaQ==
X-Received: by 2002:a17:907:72ce:b0:a99:7539:2458 with SMTP id a640c23a62f3a-a9de6455bf8mr722374066b.65.1730136391117;
        Mon, 28 Oct 2024 10:26:31 -0700 (PDT)
Date: Mon, 28 Oct 2024 18:26:29 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] tools/libxl: remove usage of VLA arrays
Message-ID: <Zx_JRaViUiEF2IrH@macbook>
References: <20241028114831.27487-1-roger.pau@citrix.com>
 <3828ba9f-9bc8-4b65-a42f-b67ef061be52@citrix.com>
 <51632c96-9a12-4656-b8f8-1631c11a3a19@suse.com>
 <CACHz=Zg4mFn5zn42f9dDFao0r7ePj=Owhc04OSW5LfW6cJoUaw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CACHz=Zg4mFn5zn42f9dDFao0r7ePj=Owhc04OSW5LfW6cJoUaw@mail.gmail.com>

On Mon, Oct 28, 2024 at 12:57:30PM +0000, Frediano Ziglio wrote:
> On Mon, Oct 28, 2024 at 12:48 PM Jan Beulich <jbeulich@suse.com> wrote:
> >
> > On 28.10.2024 13:03, Andrew Cooper wrote:
> > > On 28/10/2024 11:48 am, Roger Pau Monne wrote:
> > >> Clang 19 complains with the following error when building libxl:
> > >>
> > >> libxl_utils.c:48:15: error: variable length array folded to constant array as an extension [-Werror,-Wgnu-folding-constant]
> > >>    48 |     char path[strlen("/local/domain") + 12];
> > >>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >>
> > >> Replace the usage of strlen() with ARRAY_SIZE(), which allows the literal
> > >> string length to be known at build time.  Note ARRAY_SIZE() accounts for the
> > >> NUL terminator while strlen() didn't, hence subtract 1 from the total size
> > >> calculation.
> > >>
> > >> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > >> ---
> > >>  tools/libs/light/libxl_utils.c | 4 ++--
> > >>  1 file changed, 2 insertions(+), 2 deletions(-)
> > >>
> > >> diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_utils.c
> > >> index 10398a6c8611..b3f5e751cc3f 100644
> > >> --- a/tools/libs/light/libxl_utils.c
> > >> +++ b/tools/libs/light/libxl_utils.c
> > >> @@ -45,7 +45,7 @@ unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned
> > >>  char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid)
> > >>  {
> > >>      unsigned int len;
> > >> -    char path[strlen("/local/domain") + 12];
> > >> +    char path[ARRAY_SIZE("/local/domain") + 11];
> > >>      char *s;
> > >>
> > >>      snprintf(path, sizeof(path), "/local/domain/%d/name", domid);
> > >> @@ -141,7 +141,7 @@ int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *ctx, const char *p,
> > >>  char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid)
> > >>  {
> > >>      unsigned int len;
> > >> -    char path[strlen("/local/pool") + 12];
> > >> +    char path[ARRAY_SIZE("/local/pool") + 11];
> > >>      char *s;
> > >>
> > >>      snprintf(path, sizeof(path), "/local/pool/%d/name", poolid);
> > >
> > > Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > >
> > > Although I have a minor preference for sizeof() as suggested by Frediano.
> > >
> > > Can fix on commit, if you're happy?
> >
> > Please can we stick to ARRAY_SIZE() when it comes to strings? It's the
> > same as sizeof() when the base type is char, but the difference becomes
> > relevant if the base type was e.g. wchar_t.
> >
> > Jan
> >
> 
> But "literal" is not a wide string, and the type is "char" which is
> not wide too.
> 
> BTW, both me and Andrew are not strong about.

No strong opinion either, I've assumed it was clearer to not make
implicit assumptions about the size of the string literal array
elements.  I would rather like to get this committed, and Jan seems to
prefer to use ARRAY_SIZE(), so I suggest we get the patch committed
as-is.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:38:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:38:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826917.1241369 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ThW-0007Q5-Cd; Mon, 28 Oct 2024 17:38:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826917.1241369; Mon, 28 Oct 2024 17: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 1t5ThW-0007Py-9E; Mon, 28 Oct 2024 17:38:46 +0000
Received: by outflank-mailman (input) for mailman id 826917;
 Mon, 28 Oct 2024 17:38: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=TXyF=RY=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5ThV-0007Ps-9e
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:38:45 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20607.outbound.protection.outlook.com
 [2a01:111:f403:2415::607])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 79763b08-9553-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 18:38:43 +0100 (CET)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by LV8PR12MB9269.namprd12.prod.outlook.com (2603:10b6:408:1fe::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Mon, 28 Oct
 2024 17:38:38 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8093.024; Mon, 28 Oct 2024
 17:38: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: 79763b08-9553-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HhBQlLpEuKmKrPRrLpjzS30uO090r9wNMUxf6SVVpPwawrqXMiOkCXxcyTy4A87lDTqIDKU0W7o8GKBD0FRSxNqdsCSFvojyeaiWiG0YXm+hj1+Ob1BjHjg5IZ2pe3jrpTZAG04l5Fy4nTZSBnEbpsI/sgIDRtDqfaP5SQoF3ZUdbZfArkIEw6pzEuIHoWV3vUzalkeCuJgnOk0v8sRSAR/rNezckIj47CSLj7kbch/ecO2/TvQjMv/U4Nk54ePjSockHh6JpHOQirPb1xmOcttKzWjGVa+cETJ3w6i8ZXecY9WNsAssQjwIkDI+Y7E0YHc6IW723qXcboTd4bHI/w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=nopL8+k3o/tabKBR/yVcNwir6xe8rKnJIOrq3/WBXaY=;
 b=Z/iZLtyHzzCnx0SyB2be8AbBP0wIomYS6HNe0wuW+v9HIsA22awiUHnPf9vifak9E6jTA47bEPjCj5SkmMz06lk1GZ0zlcer3N/3lzkP5bvVt0LORmmUVFFoSagIEni0oJ+RyNOV/V2JvhMBCYIBVHs7sjhDrRWQerRXza5MdBS8WkxtfDKs7YgbGGLqUjZffCd0dtERGAmoY3fWRAcBHpamFy58fM+J9irexmBD1b3A0mu8dtQu/IQVPHH5rWDyQUl0ip44qeHp4pHly/evjNkRxWr8lxjC99WgxtmSFvylazTzOr1oUon4QhrzpDTbeIHkWBAyni42il6rtQoodw==
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=nopL8+k3o/tabKBR/yVcNwir6xe8rKnJIOrq3/WBXaY=;
 b=H91n5p+LWLOCU4DStb627soIi+uHa+UH24d7wTklUPWGMHmozyKSAYx4fLLd/vNeAXEveOhqPaoJcqBiiQrV7m9J1AGUBDqq7lbhxd1aIbXgwGexb4axtKDvQmdpRjS5q+YhmqVTYYxHeg3GfrQ8LKDQbvOUtgbKtEmH4mAKCxc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <3231cc7b-4c2e-4939-a623-a7b9960d1641@amd.com>
Date: Mon, 28 Oct 2024 17:38:32 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
 <27be8d00-8260-460e-948d-81418b93662a@suse.com>
 <8fa530cb-4d70-4300-8d4e-1e7208f7c045@amd.com>
 <55728fdc-6247-4810-8696-a999713f4a7c@suse.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <55728fdc-6247-4810-8696-a999713f4a7c@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: LO4P123CA0314.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:197::13) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|LV8PR12MB9269:EE_
X-MS-Office365-Filtering-Correlation-Id: d948fc5f-61e1-47de-89c4-08dcf7775b17
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?UkJmVXh2cUJrdmdaenI3ZDJmS3pBbkYxNytUMENWdjRDK2JwUVRHd08zT1Qw?=
 =?utf-8?B?bXhlODNQWWIyU05Uek9iSHlJbWlLSnNqR3IxQjBkbGN0UFcyYmptNno4UWRT?=
 =?utf-8?B?MFZvRHg3R3NHZFgzZFBmc05NN3c5RHFCUEduR1JPYVVBNHNQWWhnM3IxM3Vh?=
 =?utf-8?B?V1hmUHRhWWU0OUI5T25DMEIzYUVNejBueVdrRXZzTkx4NkpFcHhoOUoxSjhu?=
 =?utf-8?B?OWppc1VWWldOeEhVUU9FS3RFN01HSC9VWEhTTWR0MEs5cEliMlJadC82UlBQ?=
 =?utf-8?B?MUJDRFZkblNPYXp0QmVQWVNPL1gxdHRUeXhmbjI4c3BRNUhUS0g0NEdLOXQ3?=
 =?utf-8?B?dUU4b0dmaFhqUUZ2M0RaT0xndFZsRnNqWS9PLzNCOGxuUFRHTURwQndzakJE?=
 =?utf-8?B?ZEo2cytVZGVzTlp0bHVqNmFUakt4NDNrYnZIVGRFUzlKZGVvd3JtcGJOMkQv?=
 =?utf-8?B?bGVXS1BudXpzVGZGc3ltdDNvS05iWGs4TjVhZEdOSWtITWg3bTVLUitLTVdV?=
 =?utf-8?B?NTREUVVuR2pNZTdtU2dWV25BTGJxbE1Ddi8rZjY0UzEyZ1AyU3JidzNFRlp0?=
 =?utf-8?B?VXFQcFVoczRLc2NyVHVDZDJkQ21GaW9kVXJTZFprMzljOWpJTkVDeE45NUZt?=
 =?utf-8?B?TXNBKytnSUhNUXpTOFQ1OUV4RHNsQk9QK0VxS2ExSVFoMkk1U0w3Nm1QMzUx?=
 =?utf-8?B?dzlOc3pGQWh1bDY3ZnRSTFB3SkF3WEY5Nk5QemN0N1Z5VDJTcUtKZXQ2RFpk?=
 =?utf-8?B?VEwwQ1pXYXlXL0VkcmM2ZkdWalVqajdoWjg0SlFadHQ4U2xhZTZyb3ozWWs3?=
 =?utf-8?B?anRoT0h4N3dPQWMvdGFsai9LcFJ3cDFMeTRlc3NUVEFQejE5RFV6ekJoMGgv?=
 =?utf-8?B?MDlVMG5qMlJpV2gwQzJFK2VoTzVEK0dtMlc2aVFyWGpkSWQ4czNSTUhQSWVL?=
 =?utf-8?B?YmJZTWE3aFVmTkFuL3lLWEg1R3VOTVJoZEZQTFBQb3JNZ3kzN3JRMkF0U1Br?=
 =?utf-8?B?Rkd6NUhRTzlUYkh1NzJyMWoyRXBOSlJjZlFjMDVPRi9IOUk4b3ZKbDhjNmdy?=
 =?utf-8?B?N2NCQk5OMjl1KzVZMWVpR2REQ2txOXd3SkJzelFNY1lmamtnQWhkWVVocnhB?=
 =?utf-8?B?UzlWUG9GREVmOFBSVlBXMmRYWkhCSVM1VDYxVnc1RjlqakdQT2NYV3p5TWc3?=
 =?utf-8?B?YWc4R0tOcWpkYk8vNkxMcGQzMWpybmdrYXNvZmdxY0J4aFFZKzE5SUhqV1Rv?=
 =?utf-8?B?Y0tzS2pERVhpeGcreVRRbElLNCtkRE9KWVE2NVpZOElFZzlrMUhpSlZhbnhE?=
 =?utf-8?B?b09WVDg0VlhRMEpQOGRYTDZVOEpqb2UrMEhxclJ5c1J5eEgweFR5WUF2MXor?=
 =?utf-8?B?a2RNZVdQYjlYaFpycWkxSUY3N0hpdmdsNi9Tek5KRXB1N0hsRWQ1ejFrN0Np?=
 =?utf-8?B?SUxYM2twblF5em9DdzN1WUFraWFBRGtneER2M3pzVmZ5YU1MYnBaaFR4bDhY?=
 =?utf-8?B?cWZ0UHRuSEdNM0wwQWtFakVNamI5MlRjVjd1TTZMR1pjOE9Ub3JWT3Nza2V6?=
 =?utf-8?B?RWl0TWMzaWhweEd5a3dXVjJFZlpCaStwS3JHQWVpOER1WWxLRjJkVEc1ZnhP?=
 =?utf-8?B?d2w2aDNUekRiNmJ3NVpza1FSdlhTYlRWc01mSTBkQk4rcGp4QXBMNjZTR2J6?=
 =?utf-8?Q?RGGAWgn3h1vl9bR6uIkz?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?UldTbVduck1VR3JWam5RQTJCZzRVU1d3L0ZrdU43eUE3ZnAveEp0NlphbFZ2?=
 =?utf-8?B?VU14ZUlpV3JoS01RU1lnTmVnMTB2WmI5NnBjNGhPb0RkUWFuWTRWbmdReU54?=
 =?utf-8?B?SU5MY3p4c2RNaFlPTFBqUkJWcjFjZ2dPeUJUbHpxaWlpT1hwNXd5ZHZqWi9U?=
 =?utf-8?B?eXY4cDd5WGNERUFXS1BOTEw3dFBsTmZQR3VqMHNMbkxsUGtKWnlaMlB2R3Ft?=
 =?utf-8?B?ZjV6VlpxTVBZcUdLWSsrclhPTFRJU2xoZ2lYYWRIajFYSVVuNFlEQWhKWGNB?=
 =?utf-8?B?L2tzd0lWNnJ4U0Y1K284bStkSFNIcTNkT0hROW5OUEVKTTl6WTV1NERxZXV4?=
 =?utf-8?B?bUFuMUNPb3JHeU8rSVZUTHJKazd3OHREWVd1SVltb2tQVFFDajRna3dpT1h0?=
 =?utf-8?B?MktFeFY2TEJmaFk1YitOVFNGMEo5dTNTbmRQWnE2U2JBWGRjcUZETTdqTmdH?=
 =?utf-8?B?NDlNMTFkMURSMVduY2xnTkJsSG1oWE9xUWo0MnJsdFFlcVdqbS8zc0VmSEQx?=
 =?utf-8?B?REdJYTYvZ2c0UVdhL2F0eEZ0ejdXR2E0YTRVR2JWZmVRVVhRekxHd1dNQ1Ru?=
 =?utf-8?B?VjJtQ0d6TXYxZmhxaExOSEdJVkp0NVkxWVpnTmF4L1BiOXlhdlpYck9KMWZH?=
 =?utf-8?B?N1BzdHViR1FISlZhQkZxelBTeXlxbzVsYVYydDh2Qm5ZRy9nRDNuVVhHV1FO?=
 =?utf-8?B?Ny9uRTBuQktMWE5id1RYVjdEOUphaG8rME1mN0F6Wm1pampYeURpYVhXbFZ2?=
 =?utf-8?B?d2cyNEpaMXFBc0x4cEg5Z3NVeW1tOGw2NFVvOHRWTWlvSGFBS3dsUzcvYmJF?=
 =?utf-8?B?STR4VENVR29pNnhPWW0zU2Yxbm1VcEF6aUVMcEsrOWx5Q2ZvRmptc3Z1b3FW?=
 =?utf-8?B?ZWtMZmE4ZWsveFByNHlmUk5CRjJpcTBKQmRsKzV6aDVGa2VMUlQvcTJUR0JQ?=
 =?utf-8?B?Zkh5STFWNUJRVU1aY0VIYTJEZXQyN2kvUXp2NlJmc1ZjVENQODIxQS9HdTY1?=
 =?utf-8?B?MmVxdFNFM2hsNGdDZVpURjU3NGtQdHRrTW9nZEkrb2VtUGwwcmtRLzFTVGR4?=
 =?utf-8?B?SzV5UlQwRTI2cVExU3Vxc1NzUEZSRzZMVXVkb1hDdnluRXZQY1Aza1NNRjBH?=
 =?utf-8?B?cmxRQlIrajFnVElTZE5INVNpTXY4SFBxRE5ndTU1d2tYQUYxdEsya0w2Q0Ft?=
 =?utf-8?B?NWtQNW9lWU9QNUpOaTJ0V1dwSUxNT2QxdXY2ckhOd0VIcGRDZlkwQUhaT3Jk?=
 =?utf-8?B?ZjFtRTMraDU1YzRoaTBQRXVBZC9XSzVJL0JpLzZsUzRmdzFDQXd6WWkwTU5J?=
 =?utf-8?B?UnpRemYvL1l6bjR3MzB3akw1aTNaU2hHWmx1ZTE2ZEtuQ3o2UG1qak1NS3pF?=
 =?utf-8?B?MTNIYWo3Y25oZHNaYXZIcGFwaDAxa1RFeGtZbVU3emtkTjNQdHJWMU91cEw4?=
 =?utf-8?B?OEhoeTNRQ1FvRklQdlNEeFUveWkzUXhZYWVQeTdVV1NFOVZqSE9kcjgrRmE1?=
 =?utf-8?B?UE5KVFdXR1cxZ3MyUm5NTktPK3UxZEpSMUZQNExYOWlyK2pzU2p2UXdQMkl0?=
 =?utf-8?B?QWtwbzlZU1lNUTk2b29CcmdCZEgyakhWSmtyOEVkcld6Z1M5VCtablZtVTBF?=
 =?utf-8?B?SHZ0MklqVlA5dUo2R0ROSFJrbEFjenJXTER1SHlteVhURXBYQjJLZE5WdXJC?=
 =?utf-8?B?WllQeE41NzljdmVYRjN4b28xbGdwZG5yWnMycUUwOWl1WmxBN1oyTHlpL1lO?=
 =?utf-8?B?L3dOZHZrVGNMOVF2bWl1QkRwdlAzcUpEZVhqUE8wWk1UUmdtMnRaeGtNbUhX?=
 =?utf-8?B?WlFwcDV1eDlzc1dPSVRYMkpKeUZGYmFSOHd0MTl1WUprTnFFY3cveEhxcVRq?=
 =?utf-8?B?VDA5NjFhWDJlK2tobjlPUHE0WHBNVjhadndqVHBteDZqVzV0Y0tldDI4T3Nr?=
 =?utf-8?B?VzJjOFlpVTh0eHlLOWtGdmtZcldNVVlVa28zL3ZDYThkbG1ycXNib2dGMUJ0?=
 =?utf-8?B?RmQxT0hDS0hnQlFjRlVISWlJMVVJQjgvR2hzT0FuYWlqK1JxT2lVZHhVcFZR?=
 =?utf-8?B?aWlzVkVNc0crQ0hOaTgyNURraktXcVdtd2JzK1J2MDlHd1dnWFZkZko5eFlz?=
 =?utf-8?Q?W/vPAyP9FvdS5GciLLYNIMxpA?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d948fc5f-61e1-47de-89c4-08dcf7775b17
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 17:38:38.2631
 (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: eaNe7+UALlyiaRCveUZR33bj2NZdq+oWOb47RhJshg3e5lSlplW55+tDojR6VGQ1hx/y7aEQVjVJQ1azJi65zg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9269

Hi Jan,

On 28/10/2024 15:01, Jan Beulich wrote:
> On 28.10.2024 15:39, Ayan Kumar Halder wrote:
>> On 28/10/2024 12:55, Jan Beulich wrote:
>>> On 28.10.2024 13:45, Ayan Kumar Halder wrote:
>>>> --- a/xen/arch/Kconfig
>>>> +++ b/xen/arch/Kconfig
>>>> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>>>>    
>>>>    config NR_CPUS
>>>>    	int "Maximum number of CPUs"
>>>> +	range 1 1 if ARM && MPU
>>>>    	range 1 16383
>>>>    	default "256" if X86
>>>>    	default "8" if ARM && RCAR3
>>>>    	default "4" if ARM && QEMU
>>>>    	default "4" if ARM && MPSOC
>>>> +	default "1" if ARM && MPU
>>>>    	default "128" if ARM
>>>>    	help
>>>>    	  Controls the build-time size of various arrays and bitmaps
>>> I'm afraid I can't easily tell whether MPU can be used together with any of
>>> RCAR3, QEMU, or MPSOC. If it can, the new default line would need to move
>>> up, as it's the first one that has a match on its condition which is being
>>> used.
>> MPU cannot be used with any of the existing platforms.
> That is - qemu can't emulate such an environment, i.e. even QEMU and MPU
> don't go together?

Qemu has support for Aarch32 MPU at EL2 and EL1 (ie R52). As far as I am 
aware, there is no support for Aarch64 MPU in Qemu (ie R82).

Even for R52, I could not get the upstream Qemu working (emulating some 
Arm reference platform).

I could get the Xilinx fork of Qemu (https://github.com/Xilinx/qemu) 
working which emulates AMD's SoC using R52.

However, this should not impact the current patch. There is no Qemu in 
xen/arch/arm/platforms/*.

- Ayan



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 17:54:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 17:54:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826927.1241378 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Tw9-00025n-M3; Mon, 28 Oct 2024 17:53:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826927.1241378; Mon, 28 Oct 2024 17:53: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 1t5Tw9-00025g-JU; Mon, 28 Oct 2024 17:53:53 +0000
Received: by outflank-mailman (input) for mailman id 826927;
 Mon, 28 Oct 2024 17:53: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=owpo=RY=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5Tw8-00025a-1f
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 17:53:52 +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 96b403f9-9555-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 18:53:50 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c984352742so5080179a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 10:53:50 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f298dfcsm395051366b.127.2024.10.28.10.53.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 10:53:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 96b403f9-9555-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730138030; x=1730742830; 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=DS70Cmtp5Y1Fg8qeoAQYkAxwuzEI7WvkRwuV3OTMcZU=;
        b=jYBMR+65K5swD2VhmbiX7fXqqn2Ww+8Da3oURNfpyln26Wk6uA0OcTjXaXWT6C09fb
         jAR3HwOJOv55FkWGBPfc9MhUK+uYmfh5F2E+dfnkfs9w34KuSqz0l9fVm9CWMSAeLYwX
         k0xcggumNhckkQxjpGxPCXS62YKspTc4qQ7gI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730138030; x=1730742830;
        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=DS70Cmtp5Y1Fg8qeoAQYkAxwuzEI7WvkRwuV3OTMcZU=;
        b=HSPNQgqx/XRb9upG+v/D/lTHs4SogUfaeoKKnhOmlt5HAhDLvfGo98GR2MGPERuY7/
         Ig3XrbPQL9dmX0/YXXhumuOur1oU4ZIh3Sb6QA+OVpvxHv3LnpmHk0mTL4JCYjPUHVeJ
         cbkJg2px03shsY34gPYcK4pxC6jLj8+uSuES9o4TOGibvTfP/jd7rDS1mNgrbkpeNICP
         yRifWPNJ5EtOCnl80yEb5lsnCuJWeW61XFH/L3QCNMpw1dRe/ERXe3f9LHJfPWeMiEuF
         hDUMbG/9RwCK3iADS+19m5OTANdkt/T9nxXpVWwOwkNKuWDnCdD2mtxNc+lmcxLr/+CV
         i9gQ==
X-Forwarded-Encrypted: i=1; AJvYcCVy2Q/MW6WZ/MblbtEHxEifXdaUtrNpwRJO0nvkjoKUyHX5gKuuRMlvkCOB6BRBb3GHJchiQ1Jd7K4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz4Wfw9ZGVJepkk/bZCd5dD8mbJmCZi2fDRiRRZMpsehEAXwopU
	1829mH85lYF4dx6sJdjvJnYlupnDgjznhd42NUFozG4VXdzD/GK7PJ/KZBNHGgU=
X-Google-Smtp-Source: AGHT+IG4lYDu8qpraI80iUxnH3EVxo26+Dr8s62Rp39aGf57QQ6Ox1kx1P6hl/qUF5YZsqODdqFOSg==
X-Received: by 2002:a17:907:96a9:b0:a9a:a88a:466c with SMTP id a640c23a62f3a-a9de632e59emr859556966b.61.1730138029897;
        Mon, 28 Oct 2024 10:53:49 -0700 (PDT)
Date: Mon, 28 Oct 2024 18:53:48 +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>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v6 1/3] x86/msi: harden stale pdev handling
Message-ID: <Zx_PrF9_ITzfcCcI@macbook>
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
 <20241018203913.1162962-2-stewart.hildebrand@amd.com>
 <fdb156eb-ea82-4afa-afa6-105e605eba6d@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <fdb156eb-ea82-4afa-afa6-105e605eba6d@suse.com>

On Mon, Oct 28, 2024 at 05:58:28PM +0100, Jan Beulich wrote:
> On 18.10.2024 22:39, Stewart Hildebrand wrote:
> > Dom0 normally informs Xen of PCI device removal via
> > PHYSDEVOP_pci_device_remove, e.g. in response to SR-IOV disable or
> > hot-unplug. We might find ourselves with stale pdevs if a buggy dom0
> > fails to report removal via PHYSDEVOP_pci_device_remove. In this case,
> > attempts to access the config space of the stale pdevs would be invalid
> > and return all 1s.
> > 
> > Some possible conditions leading to this are:
> > 
> > 1. Dom0 disables SR-IOV without reporting VF removal to Xen.
> > 
> > The Linux SR-IOV subsystem normally reports VF removal when a PF driver
> > disables SR-IOV. In case of a buggy dom0 SR-IOV subsystem, SR-IOV could
> > become disabled with stale dangling VF pdevs in both dom0 Linux and Xen.
> > 
> > 2. Dom0 reporting PF removal without reporting VF removal.
> > 
> > During SR-IOV PF removal (hot-unplug), a buggy PF driver may fail to
> > disable SR-IOV, thus failing to remove the VFs, leaving stale dangling
> > VFs behind in both Xen and Linux. At least Linux warns in this case:
> > 
> > [  100.000000]  0000:01:00.0: driver left SR-IOV enabled after remove
> > 
> > In either case, Xen is left with stale VF pdevs, risking invalid PCI
> > config space accesses.
> > 
> > When Xen is built with CONFIG_DEBUG=y, the following Xen crashes were
> > observed when dom0 attempted to access the config space of a stale VF:
> > 
> > (XEN) Assertion 'pos' failed at arch/x86/msi.c:1274
> > (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
> > ...
> > (XEN) Xen call trace:
> > (XEN)    [<ffff82d040346834>] R pci_msi_conf_write_intercept+0xa2/0x1de
> > (XEN)    [<ffff82d04035d6b4>] F pci_conf_write_intercept+0x68/0x78
> > (XEN)    [<ffff82d0403264e5>] F arch/x86/pv/emul-priv-op.c#pci_cfg_ok+0xa0/0x114
> > (XEN)    [<ffff82d04032660e>] F arch/x86/pv/emul-priv-op.c#guest_io_write+0xb5/0x1c8
> > (XEN)    [<ffff82d0403267bb>] F arch/x86/pv/emul-priv-op.c#write_io+0x9a/0xe0
> > (XEN)    [<ffff82d04037c77a>] F x86_emulate+0x100e5/0x25f1e
> > (XEN)    [<ffff82d0403941a8>] F x86_emulate_wrapper+0x29/0x64
> > (XEN)    [<ffff82d04032802b>] F pv_emulate_privileged_op+0x12e/0x217
> > (XEN)    [<ffff82d040369f12>] F do_general_protection+0xc2/0x1b8
> > (XEN)    [<ffff82d040201aa7>] F x86_64/entry.S#handle_exception_saved+0x2b/0x8c
> > 
> > (XEN) Assertion 'pos' failed at arch/x86/msi.c:1246
> > (XEN) ----[ Xen-4.20-unstable  x86_64  debug=y  Tainted:   C    ]----
> > ...
> > (XEN) Xen call trace:
> > (XEN)    [<ffff82d040346b0a>] R pci_reset_msix_state+0x47/0x50
> > (XEN)    [<ffff82d040287eec>] F pdev_msix_assign+0x19/0x35
> > (XEN)    [<ffff82d040286184>] F drivers/passthrough/pci.c#assign_device+0x181/0x471
> > (XEN)    [<ffff82d040287c36>] F iommu_do_pci_domctl+0x248/0x2ec
> > (XEN)    [<ffff82d040284e1f>] F iommu_do_domctl+0x26/0x44
> > (XEN)    [<ffff82d0402483b8>] F do_domctl+0x8c1/0x1660
> > (XEN)    [<ffff82d04032977e>] F pv_hypercall+0x5ce/0x6af
> > (XEN)    [<ffff82d0402012d3>] F lstar_enter+0x143/0x150
> > 
> > These ASSERTs triggered because the MSI-X capability position can't be
> > found for a stale pdev.
> > 
> > Latch the capability positions of MSI and MSI-X during device init, and
> > replace instances of pci_find_cap_offset(..., PCI_CAP_ID_MSI{,X}) with
> > the stored value. Introduce one additional ASSERT, while the two
> > existing ASSERTs in question continue to work as intended, even with a
> > stale pdev.
> > 
> > Fixes: 484d7c852e4f ("x86/MSI-X: track host and guest mask-all requests separately")
> > Fixes: 575e18d54d19 ("pci: clear {host/guest}_maskall field on assign")
> > Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> Looks largely okay to me now, just two type selection aspects:
> 
> > --- a/xen/arch/x86/msi.c
> > +++ b/xen/arch/x86/msi.c
> > @@ -278,23 +278,21 @@ void __msi_set_enable(u16 seg, u8 bus, u8 slot, u8 func, int pos, int enable)
> >  
> >  static void msi_set_enable(struct pci_dev *dev, int enable)
> >  {
> > -    int pos;
> > +    int pos = dev->msi_pos;
> 
> This and ...
> 
> >      u16 seg = dev->seg;
> >      u8 bus = dev->bus;
> >      u8 slot = PCI_SLOT(dev->devfn);
> >      u8 func = PCI_FUNC(dev->devfn);
> >  
> > -    pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
> >      if ( pos )
> >          __msi_set_enable(seg, bus, slot, func, pos, enable);
> >  }
> >  
> >  static void msix_set_enable(struct pci_dev *dev, int enable)
> >  {
> > -    int pos;
> > +    int pos = dev->msix_pos;
> 
> ... this want to become unsigned int at this occasion, imo. Like we have ...
> 
> > @@ -764,7 +762,7 @@ static int msix_capability_init(struct pci_dev *dev,
> >      u8 slot = PCI_SLOT(dev->devfn);
> >      u8 func = PCI_FUNC(dev->devfn);
> >      bool maskall = msix->host_maskall, zap_on_error = false;
> > -    unsigned int pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSIX);
> > +    unsigned int pos = dev->msix_pos;
> 
> ... e.g. here already.
> 
> > --- a/xen/include/xen/pci.h
> > +++ b/xen/include/xen/pci.h
> > @@ -113,6 +113,9 @@ struct pci_dev {
> >          pci_sbdf_t sbdf;
> >      };
> >  
> > +    unsigned int msi_pos;
> > +    unsigned int msix_pos;
> > +
> >      uint8_t msi_maxvec;
> >      uint8_t phantom_stride;
> 
> As can be seen from the subsequent members, we're trying to be space
> conserving here. Both fields won't require more than 8 bits, so uint8_t
> or unsigned char would be the better type to use. Again imo. Preferably
> with those adjustments (which could likely be done while committing)
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

uint8_t would seem preferable here, as it's fixed-size width clearly
related to the offset into the PCI configuration space for a device.

It might also be worth noting in the commit message that having the
position cached should be a small perf improvement, by not having to
walk the capability list each time.

Anyway, no strong opinion about the commit message adjustment, so with
the type changed:

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 18:05:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 18:05:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826933.1241389 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5U78-0004KS-KN; Mon, 28 Oct 2024 18:05:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826933.1241389; Mon, 28 Oct 2024 18:05: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 1t5U78-0004KL-Gk; Mon, 28 Oct 2024 18:05:14 +0000
Received: by outflank-mailman (input) for mailman id 826933;
 Mon, 28 Oct 2024 18:05: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=uAPk=RY=linutronix.de=tglx@srs-se1.protection.inumbo.net>)
 id 1t5U77-0004Jn-7O
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 18:05:13 +0000
Received: from galois.linutronix.de (galois.linutronix.de [193.142.43.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2c6f61c9-9557-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 19:05: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: 2c6f61c9-9557-11ef-a0c2-8be0dac302b0
From: Thomas Gleixner <tglx@linutronix.de>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020; t=1730138709;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=3IDfOXFVv8kBd1AWaPkUULk3ghdxFNcDz4iKI1BeRtc=;
	b=Wqnz5mGb7wOtrf9nVF/4H2cqx3QmYeROhop48+HP4GxGtvpocb2uj7sdq2yFVnZ0q9F29U
	S+JlT7AO5CpAf2L5/XQgWa7vy8CwvL2ez68664dVHWmz4p7h1OIzQH4PD6qiHCm6sYppXq
	uFWFycKuH4BjHl0raEvghxhP6NtizoqCpMKn44SzdcZdUHk1XYSwf2zXtP5r7hBBPW/liA
	3yST+e+jmLJ17SHvFHgwCqTjCO7bPf5tLX1ThjGlRpTdbHRqI0m3IbHEEHTjE6YLUkOXyp
	4nPqYOMVhjxyoEe4OcupaaxSruikYjaCRWn+RiUUeaKIB81qxZ6PcG/HqJqZBA==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020e; t=1730138709;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=3IDfOXFVv8kBd1AWaPkUULk3ghdxFNcDz4iKI1BeRtc=;
	b=ILAs6NsCraYSC6mSWPKyHlbMSkWOol2nsWAsk/dQyIBpFI0D369S7UBifZ1p1UghPbvNKc
	Xvv8KS2I+za31LBg==
To: Jinjie Ruan <ruanjinjie@huawei.com>, oleg@redhat.com,
 linux@armlinux.org.uk, will@kernel.org, mark.rutland@arm.com,
 catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
 peterz@infradead.org, luto@kernel.org, kees@kernel.org, wad@chromium.org,
 akpm@linux-foundation.org, samitolvanen@google.com, arnd@arndb.de,
 ojeda@kernel.org, rppt@kernel.org, hca@linux.ibm.com,
 aliceryhl@google.com, samuel.holland@sifive.com, paulmck@kernel.org,
 aquini@redhat.com, petr.pavlu@suse.com, ruanjinjie@huawei.com,
 viro@zeniv.linux.org.uk, rmk+kernel@armlinux.org.uk, ardb@kernel.org,
 wangkefeng.wang@huawei.com, surenb@google.com, linus.walleij@linaro.org,
 yangyj.ee@gmail.com, broonie@kernel.org, mbenes@suse.cz,
 puranjay@kernel.org, pcc@google.com, guohanjun@huawei.com,
 sudeep.holla@arm.com, Jonathan.Cameron@huawei.com, prarit@redhat.com,
 liuwei09@cestc.cn, dwmw@amazon.co.uk, oliver.upton@linux.dev,
 kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
 vschneid@redhat.com, thiago.bauermann@linaro.org, joey.gouly@arm.com,
 liuyuntao12@huawei.com, leobras@redhat.com, linux-kernel@vger.kernel.org,
 linux-arm-kernel@lists.infradead.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 15/19] entry: Add arch
 irqentry_exit_need_resched() for arm64
In-Reply-To: <20241025100700.3714552-16-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-16-ruanjinjie@huawei.com>
Date: Mon, 28 Oct 2024 19:05:09 +0100
Message-ID: <878qu82je2.ffs@tglx>
MIME-Version: 1.0
Content-Type: text/plain

On Fri, Oct 25 2024 at 18:06, Jinjie Ruan wrote:

> As the front patch 6 ~ 13 did, the arm64_preempt_schedule_irq() is

Once this series is applied nobody knows what 'front patch 6 ~ 13' did.

> same with the irq preempt schedule code of generic entry besides those
> architecture-related logic called arm64_irqentry_exit_need_resched().
>
> So add arch irqentry_exit_need_resched() to support architecture-related
> need_resched() check logic, which do not affect existing architectures
> that use generic entry, but support arm64 to use generic irq entry.

Simply say:

 ARM64 requires an additional whether to reschedule on return from
 interrupt.

 Add arch_irqentry_exit_need_resched() as the default NOOP
 implementation and hook it up into the need_resched() condition in
 raw_irqentry_exit_cond_resched().

 This allows ARM64 to implement the architecture specific version for
 switchting over to the generic entry code.

That explains things completely independently. Hmm?

Thanks,

        tglx



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 18:06:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 18:06:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826937.1241398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5U8h-0004zX-TM; Mon, 28 Oct 2024 18:06:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826937.1241398; Mon, 28 Oct 2024 18: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 1t5U8h-0004zQ-Qk; Mon, 28 Oct 2024 18:06:51 +0000
Received: by outflank-mailman (input) for mailman id 826937;
 Mon, 28 Oct 2024 18:06: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=Spcw=RY=amd.com=Jason.Andryuk@srs-se1.protection.inumbo.net>)
 id 1t5U8g-0004zK-6e
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 18:06:50 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2062c.outbound.protection.outlook.com
 [2a01:111:f403:2415::62c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 65e93c51-9557-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 19:06:48 +0100 (CET)
Received: from BN9PR03CA0277.namprd03.prod.outlook.com (2603:10b6:408:f5::12)
 by IA1PR12MB8077.namprd12.prod.outlook.com (2603:10b6:208:3f4::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25; Mon, 28 Oct
 2024 18:06:44 +0000
Received: from BL6PEPF0001AB4F.namprd04.prod.outlook.com
 (2603:10b6:408:f5:cafe::32) by BN9PR03CA0277.outlook.office365.com
 (2603:10b6:408:f5::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.26 via Frontend
 Transport; Mon, 28 Oct 2024 18:06:43 +0000
Received: from SATLEXMB03.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.8114.16 via Frontend Transport; Mon, 28 Oct 2024 18:06:43 +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.39; Mon, 28 Oct
 2024 13:06:43 -0500
Received: from amd-BIRMANPLUS.mshome.net (10.180.168.240) by
 SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.39
 via Frontend Transport; Mon, 28 Oct 2024 13:06:42 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 65e93c51-9557-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=luJUG2YxmAknticEKiE44mcgRhhjSOtSRZIov3tHinQj1BWtJRAqFIy6WZIDfs3D6ziGe0odFCtcaMm2M+yGxogz4rFO7l+UGUUEv6gT90jFDSIuuu3tUZ3FEyZZXPxeriPMs5LBbCoDwHHkxlAc6rmmQRTkXHaBNLEIB94jRO8kIHHuW4NpMf195WlvmgLjQvA0dJmt79EOK5PDIG8G+pMrEepNqlq+O1G38tI39GkbvWj+OFMB9oosvzOeM3j4eIfARp+leB8vlRPt3uIZrz3xdCw+LekwMLfo2/p6UhCHs16iNVTUJ/dV7bqpPFskm0v2qDAvPPZUlw5noRctBw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=sQrshb0JqlbwE4dNWvbr6cEcu+XgR/6ZqbZncx5+fmU=;
 b=Atj63MWDWJhtILMDHUf4ebMlDSzKVxexzmkrry6FMzB5/wEnY/ruo4+KsxISeGtz+Fe2vZ2CndI191RGZxV8HOHmD5hsm32J9uhdE2bDAm7RZCiUE9x1F+XAnZ8WsqTAisnEcL0CFH56/JsB9dhoPasd3aKn6JF8ew3U1KDz5qu5V+xA+AO2zv2pM4/PGUI0X21+sbghwaEiIM8Iy5AnihBL/vK7p6slCBj/9LhxgRxqdDqVErwMCUPdjSis1q+JYksijsp5JgKHcLglG7w206M0sxqcS5IW+ETOTBYcYChl/6DJDpPPrnf/KUSke/xw6VN25p533AkRs6CofMQn5g==
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=sQrshb0JqlbwE4dNWvbr6cEcu+XgR/6ZqbZncx5+fmU=;
 b=YULjSznJctgTmkeXXyllUKpT7/PTDRGkCNH3M7zGhTXggU9Uwd8QdyKpsLG4SG02nsQjUKtIIP5MB4AcJ8OUWYM49Q+fj5XjKpA8HsosdSz3jYfdAXBALWHseMVUvxgK3SCviYJjMZAKccTfNbCI0vFzihRT5kFHpU9xm4v+Y+E=
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: Jason Andryuk <jason.andryuk@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stefano Stabellini <stefano.stabellini@amd.com>, Michal Orzel
	<michal.orzel@amd.com>, Jason Andryuk <jason.andryuk@amd.com>
Subject: [ImageBuilder] uboot-script-gen: Use split_value for memory
Date: Mon, 28 Oct 2024 14:06:44 -0400
Message-ID: <20241028180644.2501-1-jason.andryuk@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: jason.andryuk@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4F:EE_|IA1PR12MB8077:EE_
X-MS-Office365-Filtering-Correlation-Id: 52cc5960-ebc9-4ec4-a9ec-08dcf77b47d1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?HWyPDif2ZlnW8ae1FZmFcH1IkaMzxRzDdGE2uT6WcQAR+0JTuHIkc1enWznr?=
 =?us-ascii?Q?AQ22phZTfzUK/01m9mbBnjF9jf0HXGPgF4AknM+He9FqAMyMgcMii8nfVBQc?=
 =?us-ascii?Q?/KjvCAO9RRQs3JkJVdT8UgJ5oe+IIg7U/dl5Km7zLksYn3oZmSQlT85NBc5r?=
 =?us-ascii?Q?xLenb/TV+dNlVptirYK/RSBHNHHB9Fh7GkZjRP/uHBTtXkB3w4Wkd1asxVgO?=
 =?us-ascii?Q?fi7BeslJkiKMmQ3+ykBtw91uyltNzpb8RZvhaVWrY5lnRrLxpB6AL3U2v3TJ?=
 =?us-ascii?Q?M+ivqFqZ2/gTZM6mHlHttUgnroEVtPijMxPLqhoiJ5hu5pLE9tnnUq2bUBYK?=
 =?us-ascii?Q?R/3GG9NjDs1LGxnqjXCmXZDj1W3/48eKwESsjEmLIInkr7O51llflUDkZ9kC?=
 =?us-ascii?Q?La8sMaotIFp3kCvBDiECi8gvXIeustslZSGICBSmKXRXeND2kifqt9dIjERz?=
 =?us-ascii?Q?NUSDgGFQ18VQCxo0+Axr/kE56ZF/7NZ2/BWnWEjbHOoBd5lVYneEJJSQ83rV?=
 =?us-ascii?Q?soulopijeK7/yJa40S4Fw/isioGv4FKM7WjkQl9a7Djw1wDFyQ0mAz0f91BH?=
 =?us-ascii?Q?NibfhXOzv31QaAwUalXvsG9csISkKEqbnznGrxFz7QhpmVKFi0K9gb4AKjl8?=
 =?us-ascii?Q?O4uBIdlkRqPJac+aLkjtnmLEQesdQ1YTKafPY6puERKVPxo8qKNKdEMVg8ZN?=
 =?us-ascii?Q?Lb8iqRYhVkShoXd4m+MJrnZSKz/2pTIGwbm/V2lHFmfqfF9ffqoK+CqFj3pl?=
 =?us-ascii?Q?T0/4Snk8jfjt6BEP+A62dieIe4Amec+/IySgoDuHyVFiAWMhkInqUyBOKDUB?=
 =?us-ascii?Q?8hHGkqHZtj/0oOlr1xb9Sami7xPG1Q7m4Sv/FTjnuvUNXxAu7hnQM5FwgGH8?=
 =?us-ascii?Q?Ap9AQPW1EM4jO971XMHcHknjM9hm9j53uGihGD3n5Z53b1LcNxUC+ge2H1/v?=
 =?us-ascii?Q?pDn78YYz3tnR82VjmPI3i6snsxW6eSbAMHLoiP57+G0rZwxxfMsImCtKaaLd?=
 =?us-ascii?Q?JTogDI1rhHH/a2r/tT7rSLFtVcAX9bET9U7kRIqKFKjqd7Cm4sxGUVmxyKuH?=
 =?us-ascii?Q?ITDorNVKB3eK/FMXLuW/KDvSA75LhGdUYsjQgP19LDxG86hmS+YSbX2ezrXY?=
 =?us-ascii?Q?pTZkQHRBL9b2mc/MkIvt9VCMtBHClrvHmZ7wyW2lKV438mMwWXFA0LhHNbFR?=
 =?us-ascii?Q?1BHazgQiYmSh2vnyiNvgisP6jw3TsjjiIARyqKpovTbT8mpBf+U47173r/R9?=
 =?us-ascii?Q?W9e+ougkFbj7XoAreQs+Ck4vKY19zaFSzSQmNlTMs+OgDaTT24Hbt1WOt5m8?=
 =?us-ascii?Q?xHjvqzrLhaeDisiAk+snradIZusEhmQXXHwN+iGVBCFuCCcfMuE7/NUR4ou9?=
 =?us-ascii?Q?sSoV6A4Vg/78nEZ3SE5eZemdMPmFFdxXZwNJX1+GA/Yg/Y2pWQ=3D=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 18:06:43.7103
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 52cc5960-ebc9-4ec4-a9ec-08dcf77b47d1
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:
	BL6PEPF0001AB4F.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8077

Don't hardcode the first cell to 0 - use split_value to handle larger
values properly.

Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
 scripts/uboot-script-gen | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
index f10e5f4..dcf5bdb 100755
--- a/scripts/uboot-script-gen
+++ b/scripts/uboot-script-gen
@@ -174,7 +174,7 @@ function add_device_tree_mem()
         memory=$((512 * 1024))
     fi
 
-    dt_set "$path" "memory" "int" "0 $memory"
+    dt_set "$path" "memory" "int" "$( split_value $memory )"
 }
 
 function add_device_tree_static_mem()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 18:21:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 18:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826944.1241409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5UMk-0008OG-5O; Mon, 28 Oct 2024 18:21:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826944.1241409; Mon, 28 Oct 2024 18: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 1t5UMk-0008O9-1G; Mon, 28 Oct 2024 18:21:22 +0000
Received: by outflank-mailman (input) for mailman id 826944;
 Mon, 28 Oct 2024 18: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=uAPk=RY=linutronix.de=tglx@srs-se1.protection.inumbo.net>)
 id 1t5UMi-0008O3-Vw
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 18:21:20 +0000
Received: from galois.linutronix.de (galois.linutronix.de [193.142.43.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6d972f53-9559-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 19:21:19 +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: 6d972f53-9559-11ef-a0c2-8be0dac302b0
From: Thomas Gleixner <tglx@linutronix.de>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020; t=1730139678;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=NPZ/oE/jxd2dvWPtJO0B8LrMAkbDZ+sPnCIbA9yX4cA=;
	b=4LC+gBlWLRfuko+JhziqaBZ/VcVWCsQkVNJTMOq0loYqPV6nYyLqj6j+6qwD2iEQI0mw3/
	/ptTflJ4JI1HPJae2khCA0lJRFA/yPvA3Vlt27kdF23CJGZ0WoqHa5qMzJBtXSGi5nhQrI
	NlnM6XevoN9Ovus/n/d2i0EnI7Qr5peyFHk84qWXkv6KmhDMorQgaTeqiI+C+j/W24VmTR
	bosAmZ6gSyHxAGFJF/bsh7/xzLHsPrVnADZU6u/TPlAYI0BIuk24rh/7FwZoWt+tiC7N5h
	2G1mbmqdgCpyejLrhhzLzhIv0wxsHJMPIf7nW4chS0XIackJis3U88LeZVjcSA==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020e; t=1730139678;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=NPZ/oE/jxd2dvWPtJO0B8LrMAkbDZ+sPnCIbA9yX4cA=;
	b=x+PCIGk6KbxqRLchmf77kGxYSXBxero8zvfCc770ZFCeLxvoxmxl3om7Qr2zzc6fOqxGgR
	uTOGt2ecUuMH7uCw==
To: Jinjie Ruan <ruanjinjie@huawei.com>, oleg@redhat.com,
 linux@armlinux.org.uk, will@kernel.org, mark.rutland@arm.com,
 catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
 peterz@infradead.org, luto@kernel.org, kees@kernel.org, wad@chromium.org,
 akpm@linux-foundation.org, samitolvanen@google.com, arnd@arndb.de,
 ojeda@kernel.org, rppt@kernel.org, hca@linux.ibm.com,
 aliceryhl@google.com, samuel.holland@sifive.com, paulmck@kernel.org,
 aquini@redhat.com, petr.pavlu@suse.com, ruanjinjie@huawei.com,
 viro@zeniv.linux.org.uk, rmk+kernel@armlinux.org.uk, ardb@kernel.org,
 wangkefeng.wang@huawei.com, surenb@google.com, linus.walleij@linaro.org,
 yangyj.ee@gmail.com, broonie@kernel.org, mbenes@suse.cz,
 puranjay@kernel.org, pcc@google.com, guohanjun@huawei.com,
 sudeep.holla@arm.com, Jonathan.Cameron@huawei.com, prarit@redhat.com,
 liuwei09@cestc.cn, dwmw@amazon.co.uk, oliver.upton@linux.dev,
 kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
 vschneid@redhat.com, thiago.bauermann@linaro.org, joey.gouly@arm.com,
 liuyuntao12@huawei.com, leobras@redhat.com, linux-kernel@vger.kernel.org,
 linux-arm-kernel@lists.infradead.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 17/19] entry: Add syscall arch functions to use
 generic syscall for arm64
In-Reply-To: <20241025100700.3714552-18-ruanjinjie@huawei.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-18-ruanjinjie@huawei.com>
Date: Mon, 28 Oct 2024 19:21:18 +0100
Message-ID: <875xpc2in5.ffs@tglx>
MIME-Version: 1.0
Content-Type: text/plain

On Fri, Oct 25 2024 at 18:06, Jinjie Ruan wrote:

$Subject: Can you please make this simply:

    entry: Add arch_pre/post_report_syscall_entry/exit()

> Add some syscall arch functions to support arm64 to use generic syscall
> code, which do not affect existing architectures that use generic entry:
>
>  - arch_pre/post_report_syscall_entry/exit().

> Also make syscall_exit_work() not static and move report_single_step() to
> thread_info.h, which can be used by arm64 later.

This does way too many things which have nothing to do with the subject
line.

>  long syscall_trace_enter(struct pt_regs *regs, long syscall,
>  				unsigned long work)
>  {
> @@ -34,7 +77,9 @@ long syscall_trace_enter(struct pt_regs *regs, long syscall,
>  
>  	/* Handle ptrace */
>  	if (work & (SYSCALL_WORK_SYSCALL_TRACE | SYSCALL_WORK_SYSCALL_EMU)) {
> +		unsigned long saved_reg = arch_pre_report_syscall_entry(regs);

Lacks a new line between declaration and code.

>  		ret = ptrace_report_syscall_entry(regs);
> +		arch_post_report_syscall_entry(regs, saved_reg, ret);

Though I'm not sure whether these pre/post hooks buy anything. It's
probably simpler to do:

-  		ret = ptrace_report_syscall_entry(regs);
+		ret = arch_ptrace_report_syscall_entry(regs);

And have the default implementation as

        return ptrace_report_syscall_entry(regs);

and let ARM64 implement it's magic around it in the architecture
header. The actual ptrace_report_syscall_entry() is simple enough to be
in both places. That reduces the inflation of architecture specific
helpers and keeps the code tidy.

Thanks,

        tglx






From xen-devel-bounces@lists.xenproject.org Mon Oct 28 18:42:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 18:42:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826950.1241419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5UgZ-0003Cr-MM; Mon, 28 Oct 2024 18:41:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826950.1241419; Mon, 28 Oct 2024 18:41: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 1t5UgZ-0003Ck-Jb; Mon, 28 Oct 2024 18:41:51 +0000
Received: by outflank-mailman (input) for mailman id 826950;
 Mon, 28 Oct 2024 18:41: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=owpo=RY=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5UgY-0003Ce-7O
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 18:41:50 +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 4879dec7-955c-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 19:41:45 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso676631466b.1
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 11:41:45 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b31bc028asm408302466b.177.2024.10.28.11.41.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 28 Oct 2024 11:41:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4879dec7-955c-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730140905; x=1730745705; 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=dx9SZqPUtuDTzY1aacDgsRPoBoWYsbSOXshuWjejwh4=;
        b=MJvQjUpNbkGXKBr8gz4HU9o6EdB3VwDZgnLMlZpDX3q3g5A05v5m0UvG86Oz/Zg0Yf
         x16xJBpXbY+HukpaT64CyErgVAetlyZheyC1Ri79icuPotRxBB/dndYumENiT9Oj1MWB
         XkYhS7A0A2oDmQH6aEPNAibph648u2wVSxjfA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730140905; x=1730745705;
        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=dx9SZqPUtuDTzY1aacDgsRPoBoWYsbSOXshuWjejwh4=;
        b=HYJNuRdCkcbNgh8ktxGZNsADcJYfCSBDIkosGc1OcK4JROsjnKTJacD01RGHIcP751
         KSyKEeZ9rluJ2XViiC3bfq6S08en37P/fr2Lqq9lGK1K8HhZ4B37wkXiST38Sx8y4DXO
         zSeOWAxPYUvyEcdk9NMW80LlQvBZ+8neb8v1vCn3BtvD2W0M3jIhgVS7W8VpVU1tkSVt
         ISpUc1btvuQBDtgcbxAKvz3Kq+U/+OB6QEq5nNKhJJm/9+QwCs6QqalAIUszb0TdxL77
         L/zcZRxXUv8vyK4tdZkv+mVooShPJZBLXhWFkjXE873sAq0Zjl6BFWYkfzKzoQk9NjBq
         WMOQ==
X-Gm-Message-State: AOJu0YzLcbNyeD1FIr3MBq1dEMV8dTs8trqmZj3ukPQQF3+cRpk9gzDK
	p/WoJkWxJA2TRUcAkOOpkc6oyfAW4D+U3RKZmanIYxEP/7Y3/XS8IVCNNDiSiLNphHv8VZwZi3+
	1
X-Google-Smtp-Source: AGHT+IEsgeQC4enBRTiOxHgSnswbQxYP1OdE5ie0NkN9N5KGXfQud/sq/xsF/01HL6UDqFcUUaE9Ew==
X-Received: by 2002:a17:907:ea0:b0:a99:f9d6:5590 with SMTP id a640c23a62f3a-a9de6331185mr802714066b.60.1730140905098;
        Mon, 28 Oct 2024 11:41:45 -0700 (PDT)
Date: Mon, 28 Oct 2024 19:41:43 +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, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v6 2/3] xen/pci: introduce PF<->VF links
Message-ID: <Zx_a57npsdRhLgYr@macbook>
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
 <20241018203913.1162962-3-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20241018203913.1162962-3-stewart.hildebrand@amd.com>

On Fri, Oct 18, 2024 at 04:39:09PM -0400, Stewart Hildebrand wrote:
> Add links between a VF's struct pci_dev and its associated PF struct
> pci_dev. Move the calls to pci_get_pdev()/pci_add_device() down to avoid
> dropping and re-acquiring the pcidevs_lock().
> 
> During PF removal, unlink VF from PF and mark the VF broken. As before,
> VFs may exist without a corresponding PF, although now only with
> pdev->broken = true.
> 
> The hardware domain is expected to remove the associated VFs before
> removing the PF. Print a warning in case a PF is removed with associated
> VFs still present.
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> ---
> Candidate for backport to 4.19 (the next patch depends on this one)
> 
> v5->v6:
> * move printk() before ASSERT_UNREACHABLE()
> * warn about PF removal with VFs still present
> * clarify commit message
> 
> v4->v5:
> * new patch, split from ("x86/msi: fix locking for SR-IOV devices")
> * move INIT_LIST_HEAD(&pdev->vf_list); earlier
> * collapse struct list_head instances
> * retain error code from pci_add_device()
> * unlink (and mark broken) VFs instead of removing them
> * const-ify VF->PF link
> ---
>  xen/drivers/passthrough/pci.c | 76 ++++++++++++++++++++++++++++-------
>  xen/include/xen/pci.h         | 10 +++++
>  2 files changed, 72 insertions(+), 14 deletions(-)
> 
> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
> index 74d3895e1ef6..fe31255b1207 100644
> --- a/xen/drivers/passthrough/pci.c
> +++ b/xen/drivers/passthrough/pci.c
> @@ -333,6 +333,8 @@ static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn)
>      *((u8*) &pdev->devfn) = devfn;
>      pdev->domain = NULL;
>  
> +    INIT_LIST_HEAD(&pdev->vf_list);
> +
>      arch_pci_init_pdev(pdev);
>  
>      rc = pdev_msi_init(pdev);
> @@ -449,6 +451,10 @@ static void free_pdev(struct pci_seg *pseg, struct pci_dev *pdev)
>  
>      list_del(&pdev->alldevs_list);
>      pdev_msi_deinit(pdev);
> +
> +    if ( pdev->info.is_virtfn && pdev->virtfn.pf_pdev )

Shouldn't having pdev->info.is_virtfn set already ensure that
pdev->virtfn.pf_pdev != NULL?

> +        list_del(&pdev->vf_list);
> +
>      xfree(pdev);
>  }
>  
> @@ -656,24 +662,11 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>      unsigned int slot = PCI_SLOT(devfn), func = PCI_FUNC(devfn);
>      const char *type;
>      int ret;
> -    bool pf_is_extfn = false;
>  
>      if ( !info )
>          type = "device";
>      else if ( info->is_virtfn )
> -    {
> -        pcidevs_lock();
> -        pdev = pci_get_pdev(NULL,
> -                            PCI_SBDF(seg, info->physfn.bus,
> -                                     info->physfn.devfn));
> -        if ( pdev )
> -            pf_is_extfn = pdev->info.is_extfn;
> -        pcidevs_unlock();
> -        if ( !pdev )
> -            pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
> -                           NULL, node);
>          type = "virtual function";
> -    }
>      else if ( info->is_extfn )
>          type = "extended function";
>      else
> @@ -703,7 +696,44 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>           * extended function.
>           */
>          if ( pdev->info.is_virtfn )
> -            pdev->info.is_extfn = pf_is_extfn;
> +        {
> +            struct pci_dev *pf_pdev;

This could be const?

> +
> +            pf_pdev = pci_get_pdev(NULL,
> +                                   PCI_SBDF(seg, info->physfn.bus,
> +                                            info->physfn.devfn));

You can probably initialize at declaration?

> +
> +            if ( !pf_pdev )

Is this even feasible during correct operation?  IOW: shouldn't the PF
always be added first, so that SR-IOV can be enabled and the VFs added
afterwards?

I see previous code also catered for VFs being added without the PF
being present, so I assume there was some need for this.

> +            {
> +                ret = pci_add_device(seg, info->physfn.bus, info->physfn.devfn,
> +                                     NULL, node);
> +                if ( ret )
> +                {
> +                    printk(XENLOG_WARNING "Failed to add SR-IOV device PF %pp for VF %pp\n",

Could you split this to make the line a bit shorter?

                       printk(XENLOG_WARNING
		              "Failed to add SR-IOV device PF %pp for VF %pp\n",

Same below.

> +                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
> +                           &pdev->sbdf);
> +                    free_pdev(pseg, pdev);
> +                    goto out;
> +                }
> +                pf_pdev = pci_get_pdev(NULL,
> +                                       PCI_SBDF(seg, info->physfn.bus,
> +                                                info->physfn.devfn));
> +                if ( !pf_pdev )
> +                {
> +                    printk(XENLOG_ERR "Failed to find SR-IOV device PF %pp for VF %pp\n",
> +                           &PCI_SBDF(seg, info->physfn.bus, info->physfn.devfn),
> +                           &pdev->sbdf);

If you want to add an error message here, I think it should mention
the fact this state is not expected:

"Inconsistent PCI state: failed to find newly added PF %pp for VF %pp\n"

> +                    ASSERT_UNREACHABLE();
> +                    free_pdev(pseg, pdev);
> +                    ret = -EILSEQ;
> +                    goto out;
> +                }
> +            }
> +
> +            pdev->info.is_extfn = pf_pdev->info.is_extfn;
> +            pdev->virtfn.pf_pdev = pf_pdev;
> +            list_add(&pdev->vf_list, &pf_pdev->vf_list);
> +        }
>      }
>  
>      if ( !pdev->info.is_virtfn && !pdev->vf_rlen[0] )
> @@ -821,6 +851,24 @@ 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 )
>          {
> +            if ( !pdev->info.is_virtfn )

Given we have no field to mark a device as a PF, we could check that
pdev->vf_list is not empty, and by doing so the warn_stale_vfs
variable could be dropped?

if ( !pdev->info.is_virtfn && !list_empty(&pdev->vf_list) )
{
    struct pci_dev *vf_pdev;

    while ( (vf_pdev = list_first_entry_or_null(&pdev->vf_list,
                                                struct pci_dev,
						vf_list)) != NULL )
    {
        list_del(&vf_pdev->vf_list);
        vf_pdev->virtfn.pf_pdev = NULL;
        vf_pdev->broken = true;
    }

    printk(XENLOG_WARNING "PCI SR-IOV PF %pp removed with VFs still present\n",
           &pdev->sbdf);
}

> +            {
> +                struct pci_dev *vf_pdev, *tmp;
> +                bool warn_stale_vfs = false;
> +
> +                list_for_each_entry_safe(vf_pdev, tmp, &pdev->vf_list, vf_list)
> +                {
> +                    list_del(&vf_pdev->vf_list);
> +                    vf_pdev->virtfn.pf_pdev = NULL;
> +                    vf_pdev->broken = true;
> +                    warn_stale_vfs = true;
> +                }
> +
> +                if ( warn_stale_vfs )
> +                    printk(XENLOG_WARNING "PCI SR-IOV PF %pp removed with VFs still present\n",
> +                           &pdev->sbdf);
> +            }
> +
>              if ( pdev->domain )
>              {
>                  write_lock(&pdev->domain->pci_lock);
> diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h
> index ef56e80651d6..2ea168d5f914 100644
> --- a/xen/include/xen/pci.h
> +++ b/xen/include/xen/pci.h
> @@ -153,7 +153,17 @@ struct pci_dev {
>          unsigned int count;
>  #define PT_FAULT_THRESHOLD 10
>      } fault;
> +
> +    /*
> +     * List head if info.is_virtfn == false
> +     * List entry if info.is_virtfn == true
> +     */
> +    struct list_head vf_list;
>      u64 vf_rlen[6];
> +    struct {
> +        /* Only populated for VFs (info.is_virtfn == true) */

All comments here (specially the first ones) would better use PF and
VF consistently, rather than referring to other fields in the struct.
Specially because the fields can change names and the comments would
then become stale.

> +        const struct pci_dev *pf_pdev;        /* Link from VF to PF */
> +    } virtfn;

I'm unsure you need an outer virtfn struct, as it's only one field in
this patch?  Maybe more fields gets added by further patches?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 18:52:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 18:52:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826960.1241428 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5UqM-0005Al-Ly; Mon, 28 Oct 2024 18:51:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826960.1241428; Mon, 28 Oct 2024 18: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 1t5UqM-0005Ae-J5; Mon, 28 Oct 2024 18:51:58 +0000
Received: by outflank-mailman (input) for mailman id 826960;
 Mon, 28 Oct 2024 18: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=CA+9=RY=intel.com=jani.nikula@srs-se1.protection.inumbo.net>)
 id 1t5UqL-0005A6-0V
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 18:51:57 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b1c97a7b-955d-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 19:51:53 +0100 (CET)
Received: from orviesa005.jf.intel.com ([10.64.159.145])
 by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 28 Oct 2024 11:51:51 -0700
Received: from fdefranc-mobl3.ger.corp.intel.com (HELO localhost)
 ([10.245.246.21])
 by orviesa005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 28 Oct 2024 11:51:47 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b1c97a7b-955d-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1730141514; x=1761677514;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=uBlUnvzp1AbBOJrFVlJAunOvF7oh9ITKUSDVP8d4eOo=;
  b=PY+i3tR8yoerrFVnLSV2QFrQkjlhJkXhX79423+9Iz9lCYsmCME1x28L
   +rspCOay2T7S2WyPSw0i7wwE9kE8cwz0Vh06ytt/DiJ7FiWV1zu4ISbea
   FcGTU5vuZMhDEJT2kHIn/JuVqGYsrEzvR1sq/eejXWg49B70S0ZVyoKev
   xImrq+paGEc8RXV4z0UGbYvnQAoH4N/7/DWQOcf4re56cGEW775uNSQU1
   ZDUx0vuiujktnmIl97ewl6/bz/eP8S4ux7MZfKeZ1UwV9yk8EoJ/SXgeZ
   DW/zgnaB8gylhN7PkKelES01uIHHP9z9g3dSlQIffefQ85AthuheWV8mP
   g==;
X-CSE-ConnectionGUID: Ld0yFoHqRJi48JENzvZWoQ==
X-CSE-MsgGUID: 7DcgARqSS/K/bemCo+PMRg==
X-IronPort-AV: E=McAfee;i="6700,10204,11239"; a="29210277"
X-IronPort-AV: E=Sophos;i="6.11,239,1725346800"; 
   d="scan'208";a="29210277"
X-CSE-ConnectionGUID: Pw7BRuqqTJ6hPkUw+Im0hw==
X-CSE-MsgGUID: ESEBidY/Seqiyd2S7ijMYQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,239,1725346800"; 
   d="scan'208";a="86497284"
From: Jani Nikula <jani.nikula@intel.com>
To: dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org
Cc: jani.nikula@intel.com,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>,
	Simona Vetter <simona@ffwll.ch>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2 1/3] drm/xen: remove redundant initialization info print
Date: Mon, 28 Oct 2024 20:51:39 +0200
Message-Id: <20241028185141.3756176-1-jani.nikula@intel.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
Content-Transfer-Encoding: 8bit

drm_dev_register() already prints the same information on successful
init. Remove the redundant prints.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Note: I prefer to merge this together with the next patch via
drm-misc-next.

Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org
Cc: xen-devel@lists.xenproject.org
---
 drivers/gpu/drm/xen/xen_drm_front.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index aab79c5e34c2..931d855bfbe8 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -525,11 +525,6 @@ static int xen_drm_drv_init(struct xen_drm_front_info *front_info)
 	if (ret)
 		goto fail_register;
 
-	DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
-		 xen_drm_driver.name, xen_drm_driver.major,
-		 xen_drm_driver.minor, xen_drm_driver.patchlevel,
-		 xen_drm_driver.date, drm_dev->primary->index);
-
 	return 0;
 
 fail_register:
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 18:52:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 18:52:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826961.1241439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Uqc-0005UI-UZ; Mon, 28 Oct 2024 18:52:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826961.1241439; Mon, 28 Oct 2024 18: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 1t5Uqc-0005UB-RU; Mon, 28 Oct 2024 18:52:14 +0000
Received: by outflank-mailman (input) for mailman id 826961;
 Mon, 28 Oct 2024 18:52: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=CA+9=RY=intel.com=jani.nikula@srs-se1.protection.inumbo.net>)
 id 1t5Uqb-0005Sh-6o
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 18:52:13 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bb9d5f7a-955d-11ef-a0c2-8be0dac302b0;
 Mon, 28 Oct 2024 19:52:10 +0100 (CET)
Received: from orviesa005.jf.intel.com ([10.64.159.145])
 by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 28 Oct 2024 11:52:07 -0700
Received: from fdefranc-mobl3.ger.corp.intel.com (HELO localhost)
 ([10.245.246.21])
 by orviesa005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 28 Oct 2024 11:52:01 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb9d5f7a-955d-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1730141530; x=1761677530;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=gf9b8osXqwpAR3U4nLk4+vY/jWpELZctUvHFH2H5PA8=;
  b=JttcngiQOPFWP19wjTT4xWTaXSRqY6peVJK9UjIg77YNew74PULaEZDv
   RqOfm6n3mrwBnz4+yWI7aSWQCWcmIVqPU9Ojt/vNNAKTPp5/M3cOSUxs8
   pM9apgEyarV2uu72m9mO7mgB41lkEmsTsyCQ8x8MyRfYW/pKazdTZWr68
   /NPNWnNNkechfUROAo67VSfnbSYp//oKAvAWBaNpHBAZqu0N7ATXjU4Vh
   pWa0+TpPaTERrvqg92WAKSmS3oQRAMIBrZtX0aCWGktljI+he/HN3lzcM
   v1ECpbpEdgv9G9T2zf0xAxKgz3NwZupDj4V/pxRTmgVEn5Gr5LhuDGQiX
   g==;
X-CSE-ConnectionGUID: N31I+SEgTPS5nyboCUbn4w==
X-CSE-MsgGUID: dCfuRQTbSAazGTor3npXEQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11239"; a="29210307"
X-IronPort-AV: E=Sophos;i="6.11,239,1725346800"; 
   d="scan'208";a="29210307"
X-CSE-ConnectionGUID: LrdffhCWRKqkLe1K63iUeg==
X-CSE-MsgGUID: eHQO79HRR5aUOANugDvl/g==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,239,1725346800"; 
   d="scan'208";a="86497333"
From: Jani Nikula <jani.nikula@intel.com>
To: dri-devel@lists.freedesktop.org,
	intel-gfx@lists.freedesktop.org
Cc: jani.nikula@intel.com,
	Javier Martinez Canillas <javierm@redhat.com>,
	Alex Deucher <alexander.deucher@amd.com>,
	Simon Ser <contact@emersion.fr>,
	David Airlie <airlied@gmail.com>,
	Hamza Mahfooz <hamza.mahfooz@amd.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Simona Vetter <simona@ffwll.ch>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	=?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>,
	amd-gfx@lists.freedesktop.org,
	linux-arm-kernel@lists.infradead.org,
	nouveau@lists.freedesktop.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2 3/3] drm: remove driver date from struct drm_driver and all drivers
Date: Mon, 28 Oct 2024 20:51:41 +0200
Message-Id: <20241028185141.3756176-3-jani.nikula@intel.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20241028185141.3756176-1-jani.nikula@intel.com>
References: <20241028185141.3756176-1-jani.nikula@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
Content-Transfer-Encoding: 8bit

We stopped using the driver initialized date in commit 7fb8af6798e8
("drm: deprecate driver date") and (eventually) started returning "0"
for drm_version ioctl instead.

Finish the job, and remove the unused date member from struct
drm_driver, its initialization from drivers, along with the common
DRIVER_DATE macros.

v2: Also update drivers/accel (kernel test robot)

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Simon Ser <contact@emersion.fr>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

---

Cc: David Airlie <airlied@gmail.com>
Cc: Hamza Mahfooz <hamza.mahfooz@amd.com>
Cc: Javier Martinez Canillas <javierm@redhat.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Cc: Simon Ser <contact@emersion.fr>
Cc: Simona Vetter <simona@ffwll.ch>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: amd-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: nouveau@lists.freedesktop.org
Cc: xen-devel@lists.xenproject.org
---
 drivers/accel/habanalabs/common/habanalabs_drv.c | 1 -
 drivers/accel/ivpu/ivpu_drv.c                    | 1 -
 drivers/accel/qaic/qaic_drv.c                    | 1 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c          | 2 --
 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h          | 1 -
 drivers/gpu/drm/arm/display/komeda/komeda_kms.c  | 1 -
 drivers/gpu/drm/arm/hdlcd_drv.c                  | 1 -
 drivers/gpu/drm/arm/malidp_drv.c                 | 1 -
 drivers/gpu/drm/armada/armada_drv.c              | 1 -
 drivers/gpu/drm/aspeed/aspeed_gfx_drv.c          | 1 -
 drivers/gpu/drm/ast/ast_drv.c                    | 1 -
 drivers/gpu/drm/ast/ast_drv.h                    | 1 -
 drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c     | 1 -
 drivers/gpu/drm/etnaviv/etnaviv_drv.c            | 1 -
 drivers/gpu/drm/exynos/exynos_drm_drv.c          | 2 --
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c        | 1 -
 drivers/gpu/drm/gma500/psb_drv.c                 | 1 -
 drivers/gpu/drm/gma500/psb_drv.h                 | 1 -
 drivers/gpu/drm/gud/gud_drv.c                    | 1 -
 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c  | 1 -
 drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c  | 1 -
 drivers/gpu/drm/hyperv/hyperv_drm_drv.c          | 2 --
 drivers/gpu/drm/i915/i915_driver.c               | 1 -
 drivers/gpu/drm/i915/i915_driver.h               | 1 -
 drivers/gpu/drm/i915/i915_gpu_error.c            | 1 -
 drivers/gpu/drm/imagination/pvr_drv.c            | 1 -
 drivers/gpu/drm/imagination/pvr_drv.h            | 1 -
 drivers/gpu/drm/imx/dcss/dcss-kms.c              | 1 -
 drivers/gpu/drm/imx/ipuv3/imx-drm-core.c         | 1 -
 drivers/gpu/drm/imx/lcdc/imx-lcdc.c              | 1 -
 drivers/gpu/drm/ingenic/ingenic-drm-drv.c        | 1 -
 drivers/gpu/drm/kmb/kmb_drv.c                    | 1 -
 drivers/gpu/drm/kmb/kmb_drv.h                    | 1 -
 drivers/gpu/drm/lima/lima_drv.c                  | 1 -
 drivers/gpu/drm/logicvc/logicvc_drm.c            | 1 -
 drivers/gpu/drm/loongson/lsdc_drv.c              | 2 --
 drivers/gpu/drm/mcde/mcde_drv.c                  | 1 -
 drivers/gpu/drm/mediatek/mtk_drm_drv.c           | 2 --
 drivers/gpu/drm/meson/meson_drv.c                | 1 -
 drivers/gpu/drm/mgag200/mgag200_drv.c            | 1 -
 drivers/gpu/drm/mgag200/mgag200_drv.h            | 1 -
 drivers/gpu/drm/msm/msm_drv.c                    | 1 -
 drivers/gpu/drm/mxsfb/lcdif_drv.c                | 1 -
 drivers/gpu/drm/mxsfb/mxsfb_drv.c                | 1 -
 drivers/gpu/drm/nouveau/nouveau_drm.c            | 5 -----
 drivers/gpu/drm/nouveau/nouveau_drv.h            | 1 -
 drivers/gpu/drm/omapdrm/omap_drv.c               | 2 --
 drivers/gpu/drm/panfrost/panfrost_drv.c          | 1 -
 drivers/gpu/drm/panthor/panthor_drv.c            | 1 -
 drivers/gpu/drm/pl111/pl111_drv.c                | 1 -
 drivers/gpu/drm/qxl/qxl_drv.c                    | 1 -
 drivers/gpu/drm/qxl/qxl_drv.h                    | 1 -
 drivers/gpu/drm/radeon/radeon_drv.c              | 1 -
 drivers/gpu/drm/radeon/radeon_drv.h              | 1 -
 drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c    | 1 -
 drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c     | 1 -
 drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c | 1 -
 drivers/gpu/drm/rockchip/rockchip_drm_drv.c      | 2 --
 drivers/gpu/drm/solomon/ssd130x.c                | 2 --
 drivers/gpu/drm/sprd/sprd_drm.c                  | 2 --
 drivers/gpu/drm/sti/sti_drv.c                    | 2 --
 drivers/gpu/drm/stm/drv.c                        | 1 -
 drivers/gpu/drm/sun4i/sun4i_drv.c                | 1 -
 drivers/gpu/drm/tegra/drm.c                      | 2 --
 drivers/gpu/drm/tidss/tidss_drv.c                | 1 -
 drivers/gpu/drm/tilcdc/tilcdc_drv.c              | 1 -
 drivers/gpu/drm/tiny/arcpgu.c                    | 1 -
 drivers/gpu/drm/tiny/bochs.c                     | 1 -
 drivers/gpu/drm/tiny/cirrus.c                    | 2 --
 drivers/gpu/drm/tiny/gm12u320.c                  | 2 --
 drivers/gpu/drm/tiny/hx8357d.c                   | 1 -
 drivers/gpu/drm/tiny/ili9163.c                   | 1 -
 drivers/gpu/drm/tiny/ili9225.c                   | 1 -
 drivers/gpu/drm/tiny/ili9341.c                   | 1 -
 drivers/gpu/drm/tiny/ili9486.c                   | 1 -
 drivers/gpu/drm/tiny/mi0283qt.c                  | 1 -
 drivers/gpu/drm/tiny/ofdrm.c                     | 2 --
 drivers/gpu/drm/tiny/panel-mipi-dbi.c            | 1 -
 drivers/gpu/drm/tiny/repaper.c                   | 1 -
 drivers/gpu/drm/tiny/sharp-memory.c              | 1 -
 drivers/gpu/drm/tiny/simpledrm.c                 | 2 --
 drivers/gpu/drm/tiny/st7586.c                    | 1 -
 drivers/gpu/drm/tiny/st7735r.c                   | 1 -
 drivers/gpu/drm/tve200/tve200_drv.c              | 1 -
 drivers/gpu/drm/udl/udl_drv.c                    | 1 -
 drivers/gpu/drm/udl/udl_drv.h                    | 1 -
 drivers/gpu/drm/v3d/v3d_drv.c                    | 2 --
 drivers/gpu/drm/vboxvideo/vbox_drv.c             | 1 -
 drivers/gpu/drm/vboxvideo/vbox_drv.h             | 1 -
 drivers/gpu/drm/vc4/vc4_drv.c                    | 3 ---
 drivers/gpu/drm/vgem/vgem_drv.c                  | 2 --
 drivers/gpu/drm/virtio/virtgpu_drv.c             | 1 -
 drivers/gpu/drm/virtio/virtgpu_drv.h             | 1 -
 drivers/gpu/drm/vkms/vkms_drv.c                  | 2 --
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c              | 1 -
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h              | 1 -
 drivers/gpu/drm/xe/xe_device.c                   | 1 -
 drivers/gpu/drm/xe/xe_drv.h                      | 1 -
 drivers/gpu/drm/xen/xen_drm_front.c              | 1 -
 drivers/gpu/drm/xlnx/zynqmp_kms.c                | 1 -
 include/drm/drm_drv.h                            | 2 --
 101 files changed, 126 deletions(-)

diff --git a/drivers/accel/habanalabs/common/habanalabs_drv.c b/drivers/accel/habanalabs/common/habanalabs_drv.c
index 708dfd10f39c..5409b2c656c8 100644
--- a/drivers/accel/habanalabs/common/habanalabs_drv.c
+++ b/drivers/accel/habanalabs/common/habanalabs_drv.c
@@ -101,7 +101,6 @@ static const struct drm_driver hl_driver = {
 	.major = LINUX_VERSION_MAJOR,
 	.minor = LINUX_VERSION_PATCHLEVEL,
 	.patchlevel = LINUX_VERSION_SUBLEVEL,
-	.date = "20190505",
 
 	.fops = &hl_fops,
 	.open = hl_device_open,
diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c
index 07c7e5a5f22b..aec95c8c8dd5 100644
--- a/drivers/accel/ivpu/ivpu_drv.c
+++ b/drivers/accel/ivpu/ivpu_drv.c
@@ -456,7 +456,6 @@ static const struct drm_driver driver = {
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
 
-	.date = UTS_RELEASE,
 	.major = 1,
 };
 
diff --git a/drivers/accel/qaic/qaic_drv.c b/drivers/accel/qaic/qaic_drv.c
index 3575e0c984d6..542c5d24e499 100644
--- a/drivers/accel/qaic/qaic_drv.c
+++ b/drivers/accel/qaic/qaic_drv.c
@@ -208,7 +208,6 @@ static const struct drm_driver qaic_accel_driver = {
 
 	.name			= QAIC_NAME,
 	.desc			= QAIC_DESC,
-	.date			= "20190618",
 
 	.fops			= &qaic_accel_fops,
 	.open			= qaic_open,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 7273c98c3963..c5cd30797285 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -2998,7 +2998,6 @@ static const struct drm_driver amdgpu_kms_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = KMS_DRIVER_MAJOR,
 	.minor = KMS_DRIVER_MINOR,
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
@@ -3022,7 +3021,6 @@ const struct drm_driver amdgpu_partition_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = KMS_DRIVER_MAJOR,
 	.minor = KMS_DRIVER_MINOR,
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
index 5bc2cb661af7..2d86cc6f7f4d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.h
@@ -40,7 +40,6 @@
 
 #define DRIVER_NAME		"amdgpu"
 #define DRIVER_DESC		"AMD GPU"
-#define DRIVER_DATE		"20150101"
 
 extern const struct drm_driver amdgpu_partition_driver;
 
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
index 1e7b1fcb2848..6ed504099188 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
@@ -63,7 +63,6 @@ static const struct drm_driver komeda_kms_driver = {
 	.fops = &komeda_cma_fops,
 	.name = "komeda",
 	.desc = "Arm Komeda Display Processor driver",
-	.date = "20181101",
 	.major = 0,
 	.minor = 1,
 };
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index cd4389809d42..4e2d6890fb19 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -233,7 +233,6 @@ static const struct drm_driver hdlcd_driver = {
 	.fops = &fops,
 	.name = "hdlcd",
 	.desc = "ARM HDLCD Controller DRM",
-	.date = "20151021",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 4cb25004b84f..cbdf2b273e75 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -570,7 +570,6 @@ static const struct drm_driver malidp_driver = {
 	.fops = &fops,
 	.name = "mali-dp",
 	.desc = "ARM Mali Display Processor driver",
-	.date = "20160106",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/armada/armada_drv.c b/drivers/gpu/drm/armada/armada_drv.c
index 5c26f0409478..f0ae46d27c2c 100644
--- a/drivers/gpu/drm/armada/armada_drv.c
+++ b/drivers/gpu/drm/armada/armada_drv.c
@@ -45,7 +45,6 @@ static const struct drm_driver armada_drm_driver = {
 	.minor			= 0,
 	.name			= "armada-drm",
 	.desc			= "Armada SoC DRM",
-	.date			= "20120730",
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.ioctls			= armada_ioctls,
 	.num_ioctls = ARRAY_SIZE(armada_ioctls),
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index 109023815fa2..4dea5b1791b1 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -252,7 +252,6 @@ static const struct drm_driver aspeed_gfx_driver = {
 	.fops = &fops,
 	.name = "aspeed-gfx-drm",
 	.desc = "ASPEED GFX DRM",
-	.date = "20180319",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c
index 4afe4be072ef..4c8198b76b06 100644
--- a/drivers/gpu/drm/ast/ast_drv.c
+++ b/drivers/gpu/drm/ast/ast_drv.c
@@ -60,7 +60,6 @@ static const struct drm_driver ast_driver = {
 	.fops = &ast_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
index 21ce3769bf0d..6b4305ac07d4 100644
--- a/drivers/gpu/drm/ast/ast_drv.h
+++ b/drivers/gpu/drm/ast/ast_drv.h
@@ -43,7 +43,6 @@
 
 #define DRIVER_NAME		"ast"
 #define DRIVER_DESC		"AST"
-#define DRIVER_DATE		"20120228"
 
 #define DRIVER_MAJOR		0
 #define DRIVER_MINOR		1
diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
index 792dcc19e8e7..b6859b39e0e7 100644
--- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
+++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c
@@ -846,7 +846,6 @@ static const struct drm_driver atmel_hlcdc_dc_driver = {
 	.fops = &fops,
 	.name = "atmel-hlcdc",
 	.desc = "Atmel HLCD Controller DRM",
-	.date = "20141504",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
index 6500f3999c5f..1d057432bf1d 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
@@ -503,7 +503,6 @@ static const struct drm_driver etnaviv_drm_driver = {
 	.fops               = &fops,
 	.name               = "etnaviv",
 	.desc               = "etnaviv DRM",
-	.date               = "20151214",
 	.major              = 1,
 	.minor              = 4,
 };
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 2a466d8179f4..8c3133959147 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -35,7 +35,6 @@
 
 #define DRIVER_NAME	"exynos"
 #define DRIVER_DESC	"Samsung SoC DRM"
-#define DRIVER_DATE	"20180330"
 
 /*
  * Interface history:
@@ -118,7 +117,6 @@ static const struct drm_driver exynos_drm_driver = {
 	.fops			= &exynos_drm_driver_fops,
 	.name	= DRIVER_NAME,
 	.desc	= DRIVER_DESC,
-	.date	= DRIVER_DATE,
 	.major	= DRIVER_MAJOR,
 	.minor	= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index 91a48d774cf7..9353c35c2b1f 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -174,7 +174,6 @@ static const struct drm_driver fsl_dcu_drm_driver = {
 	.fops			= &fsl_dcu_drm_fops,
 	.name			= "fsl-dcu-drm",
 	.desc			= "Freescale DCU DRM",
-	.date			= "20160425",
 	.major			= 1,
 	.minor			= 1,
 };
diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c
index c419ebbc49ec..c49153d31c34 100644
--- a/drivers/gpu/drm/gma500/psb_drv.c
+++ b/drivers/gpu/drm/gma500/psb_drv.c
@@ -513,7 +513,6 @@ static const struct drm_driver driver = {
 	.fops = &psb_gem_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL
diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h
index de62cbfcdc72..7f77cb2b2751 100644
--- a/drivers/gpu/drm/gma500/psb_drv.h
+++ b/drivers/gpu/drm/gma500/psb_drv.h
@@ -26,7 +26,6 @@
 
 #define DRIVER_NAME "gma500"
 #define DRIVER_DESC "DRM driver for the Intel GMA500, GMA600, GMA3600, GMA3650"
-#define DRIVER_DATE "20140314"
 
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
index 09ccdc1dc1a2..f5b205776e3d 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -381,7 +381,6 @@ static const struct drm_driver gud_drm_driver = {
 
 	.name			= "gud",
 	.desc			= "Generic USB Display",
-	.date			= "20200422",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
index 8c488c98ac97..f4bcfbb07788 100644
--- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
+++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
@@ -57,7 +57,6 @@ static const struct drm_driver hibmc_driver = {
 	.driver_features	= DRIVER_GEM | DRIVER_MODESET | DRIVER_ATOMIC,
 	.fops			= &hibmc_fops,
 	.name			= "hibmc",
-	.date			= "20160828",
 	.desc			= "hibmc drm driver",
 	.major			= 1,
 	.minor			= 0,
diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
index 5616c3917c03..2eb49177ac42 100644
--- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
+++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_ade.c
@@ -929,7 +929,6 @@ static const struct drm_driver ade_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name = "kirin",
 	.desc = "Hisilicon Kirin620 SoC DRM Driver",
-	.date = "20150718",
 	.major = 1,
 	.minor = 0,
 };
diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
index e0953777a206..ea5e19aecff6 100644
--- a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
+++ b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
@@ -20,7 +20,6 @@
 
 #define DRIVER_NAME "hyperv_drm"
 #define DRIVER_DESC "DRM driver for Hyper-V synthetic video device"
-#define DRIVER_DATE "2020"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 
@@ -31,7 +30,6 @@ static struct drm_driver hyperv_driver = {
 
 	.name		 = DRIVER_NAME,
 	.desc		 = DRIVER_DESC,
-	.date		 = DRIVER_DATE,
 	.major		 = DRIVER_MAJOR,
 	.minor		 = DRIVER_MINOR,
 
diff --git a/drivers/gpu/drm/i915/i915_driver.c b/drivers/gpu/drm/i915/i915_driver.c
index 365329ff8a07..1bafefb726f5 100644
--- a/drivers/gpu/drm/i915/i915_driver.c
+++ b/drivers/gpu/drm/i915/i915_driver.c
@@ -1785,7 +1785,6 @@ static const struct drm_driver i915_drm_driver = {
 	.fops = &i915_driver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/i915/i915_driver.h b/drivers/gpu/drm/i915/i915_driver.h
index 94a70d8ec5d5..4b67ad9a61cd 100644
--- a/drivers/gpu/drm/i915/i915_driver.h
+++ b/drivers/gpu/drm/i915/i915_driver.h
@@ -15,7 +15,6 @@ struct drm_printer;
 
 #define DRIVER_NAME		"i915"
 #define DRIVER_DESC		"Intel Graphics"
-#define DRIVER_DATE		"20230929"
 #define DRIVER_TIMESTAMP	1695980603
 
 extern const struct dev_pm_ops i915_pm_ops;
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 135ded17334e..aa3fdc231c47 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -841,7 +841,6 @@ static void __err_print_to_sgl(struct drm_i915_error_state_buf *m,
 	err_printf(m, "Kernel: %s %s\n",
 		   init_utsname()->release,
 		   init_utsname()->machine);
-	err_printf(m, "Driver: %s\n", DRIVER_DATE);
 	ts = ktime_to_timespec64(error->time);
 	err_printf(m, "Time: %lld s %ld us\n",
 		   (s64)ts.tv_sec, ts.tv_nsec / NSEC_PER_USEC);
diff --git a/drivers/gpu/drm/imagination/pvr_drv.c b/drivers/gpu/drm/imagination/pvr_drv.c
index 684a9b9a2247..fad7735865d3 100644
--- a/drivers/gpu/drm/imagination/pvr_drv.c
+++ b/drivers/gpu/drm/imagination/pvr_drv.c
@@ -1384,7 +1384,6 @@ static struct drm_driver pvr_drm_driver = {
 
 	.name = PVR_DRIVER_NAME,
 	.desc = PVR_DRIVER_DESC,
-	.date = PVR_DRIVER_DATE,
 	.major = PVR_DRIVER_MAJOR,
 	.minor = PVR_DRIVER_MINOR,
 	.patchlevel = PVR_DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/imagination/pvr_drv.h b/drivers/gpu/drm/imagination/pvr_drv.h
index 378fe477b759..7fa147312dd1 100644
--- a/drivers/gpu/drm/imagination/pvr_drv.h
+++ b/drivers/gpu/drm/imagination/pvr_drv.h
@@ -9,7 +9,6 @@
 
 #define PVR_DRIVER_NAME "powervr"
 #define PVR_DRIVER_DESC "Imagination PowerVR (Series 6 and later) & IMG Graphics"
-#define PVR_DRIVER_DATE "20230904"
 
 /*
  * Driver interface version:
diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss/dcss-kms.c
index 3ec721afc30c..f1e8aea40bdd 100644
--- a/drivers/gpu/drm/imx/dcss/dcss-kms.c
+++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c
@@ -33,7 +33,6 @@ static const struct drm_driver dcss_kms_driver = {
 	.fops			= &dcss_cma_fops,
 	.name			= "imx-dcss",
 	.desc			= "i.MX8MQ Display Subsystem",
-	.date			= "20190917",
 	.major			= 1,
 	.minor			= 0,
 	.patchlevel		= 0,
diff --git a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c b/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
index ced06bd8eae8..87d917ae651b 100644
--- a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
+++ b/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c
@@ -163,7 +163,6 @@ static const struct drm_driver imx_drm_driver = {
 	.fops			= &imx_drm_driver_fops,
 	.name			= "imx-drm",
 	.desc			= "i.MX DRM graphics",
-	.date			= "20120507",
 	.major			= 1,
 	.minor			= 0,
 	.patchlevel		= 0,
diff --git a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c b/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
index 3215c4acd675..714ca9587ec7 100644
--- a/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
+++ b/drivers/gpu/drm/imx/lcdc/imx-lcdc.c
@@ -352,7 +352,6 @@ static struct drm_driver imx_lcdc_drm_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name = "imx-lcdc",
 	.desc = "i.MX LCDC driver",
-	.date = "20200716",
 };
 
 static const struct of_device_id imx_lcdc_of_dev_id[] = {
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 056b70b63554..c5e76e527ef9 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -953,7 +953,6 @@ static const struct drm_driver ingenic_drm_driver_data = {
 	.driver_features	= DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name			= "ingenic-drm",
 	.desc			= "DRM module for Ingenic SoCs",
-	.date			= "20200716",
 	.major			= 1,
 	.minor			= 1,
 	.patchlevel		= 0,
diff --git a/drivers/gpu/drm/kmb/kmb_drv.c b/drivers/gpu/drm/kmb/kmb_drv.c
index 0274ab9caa85..192d9f293514 100644
--- a/drivers/gpu/drm/kmb/kmb_drv.c
+++ b/drivers/gpu/drm/kmb/kmb_drv.c
@@ -445,7 +445,6 @@ static const struct drm_driver kmb_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name = "kmb-drm",
 	.desc = "KEEMBAY DISPLAY DRIVER",
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/kmb/kmb_drv.h b/drivers/gpu/drm/kmb/kmb_drv.h
index bf085e95b28f..1f0c10d317fe 100644
--- a/drivers/gpu/drm/kmb/kmb_drv.h
+++ b/drivers/gpu/drm/kmb/kmb_drv.h
@@ -16,7 +16,6 @@
 #define KMB_MIN_WIDTH                   1920 /*Max width in pixels */
 #define KMB_MIN_HEIGHT                  1080 /*Max height in pixels */
 
-#define DRIVER_DATE			"20210223"
 #define DRIVER_MAJOR			1
 #define DRIVER_MINOR			1
 
diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c
index 10bce18b7c31..4b70c5189f7c 100644
--- a/drivers/gpu/drm/lima/lima_drv.c
+++ b/drivers/gpu/drm/lima/lima_drv.c
@@ -271,7 +271,6 @@ static const struct drm_driver lima_drm_driver = {
 	.fops               = &lima_drm_driver_fops,
 	.name               = "lima",
 	.desc               = "lima DRM",
-	.date               = "20191231",
 	.major              = 1,
 	.minor              = 1,
 	.patchlevel         = 0,
diff --git a/drivers/gpu/drm/logicvc/logicvc_drm.c b/drivers/gpu/drm/logicvc/logicvc_drm.c
index e4d90701b29d..0cd5512e7dd1 100644
--- a/drivers/gpu/drm/logicvc/logicvc_drm.c
+++ b/drivers/gpu/drm/logicvc/logicvc_drm.c
@@ -52,7 +52,6 @@ static struct drm_driver logicvc_drm_driver = {
 	.fops				= &logicvc_drm_fops,
 	.name				= "logicvc-drm",
 	.desc				= "Xylon LogiCVC DRM driver",
-	.date				= "20200403",
 	.major				= 1,
 	.minor				= 0,
 
diff --git a/drivers/gpu/drm/loongson/lsdc_drv.c b/drivers/gpu/drm/loongson/lsdc_drv.c
index b350bdcf1645..0dc6afad8e54 100644
--- a/drivers/gpu/drm/loongson/lsdc_drv.c
+++ b/drivers/gpu/drm/loongson/lsdc_drv.c
@@ -26,7 +26,6 @@
 #define DRIVER_AUTHOR               "Sui Jingfeng <suijingfeng@loongson.cn>"
 #define DRIVER_NAME                 "loongson"
 #define DRIVER_DESC                 "drm driver for loongson graphics"
-#define DRIVER_DATE                 "20220701"
 #define DRIVER_MAJOR                1
 #define DRIVER_MINOR                0
 #define DRIVER_PATCHLEVEL           0
@@ -39,7 +38,6 @@ static const struct drm_driver lsdc_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c
index f60bdd7b6c13..ba6b0a09f133 100644
--- a/drivers/gpu/drm/mcde/mcde_drv.c
+++ b/drivers/gpu/drm/mcde/mcde_drv.c
@@ -208,7 +208,6 @@ static const struct drm_driver mcde_drm_driver = {
 	.fops = &drm_fops,
 	.name = "mcde",
 	.desc = DRIVER_DESC,
-	.date = "20180529",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index a4594f8873d5..d12c924661d1 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -32,7 +32,6 @@
 
 #define DRIVER_NAME "mediatek"
 #define DRIVER_DESC "Mediatek SoC DRM"
-#define DRIVER_DATE "20150513"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 
@@ -615,7 +614,6 @@ static const struct drm_driver mtk_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meson_drv.c
index 7cace75a38af..e035fb7ddb83 100644
--- a/drivers/gpu/drm/meson/meson_drv.c
+++ b/drivers/gpu/drm/meson/meson_drv.c
@@ -105,7 +105,6 @@ static const struct drm_driver meson_driver = {
 	.fops			= &fops,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= "20161109",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c
index 97fd7eb765b4..ab46ae004a92 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.c
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.c
@@ -97,7 +97,6 @@ static const struct drm_driver mgag200_driver = {
 	.fops = &mgag200_driver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h
index 988967eafbf2..0608fc63e588 100644
--- a/drivers/gpu/drm/mgag200/mgag200_drv.h
+++ b/drivers/gpu/drm/mgag200/mgag200_drv.h
@@ -25,7 +25,6 @@
 
 #define DRIVER_NAME		"mgag200"
 #define DRIVER_DESC		"MGA G200 SE"
-#define DRIVER_DATE		"20110418"
 
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		0
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
index edbc1ab0fbc8..d03726fefa5e 100644
--- a/drivers/gpu/drm/msm/msm_drv.c
+++ b/drivers/gpu/drm/msm/msm_drv.c
@@ -910,7 +910,6 @@ static const struct drm_driver msm_driver = {
 	.fops               = &fops,
 	.name               = "msm",
 	.desc               = "MSM Snapdragon DRM",
-	.date               = "20130625",
 	.major              = MSM_VERSION_MAJOR,
 	.minor              = MSM_VERSION_MINOR,
 	.patchlevel         = MSM_VERSION_PATCHLEVEL,
diff --git a/drivers/gpu/drm/mxsfb/lcdif_drv.c b/drivers/gpu/drm/mxsfb/lcdif_drv.c
index 58ccad9c425d..c27d5583fdf8 100644
--- a/drivers/gpu/drm/mxsfb/lcdif_drv.c
+++ b/drivers/gpu/drm/mxsfb/lcdif_drv.c
@@ -248,7 +248,6 @@ static const struct drm_driver lcdif_driver = {
 	.fops	= &fops,
 	.name	= "imx-lcdif",
 	.desc	= "i.MX LCDIF Controller DRM",
-	.date	= "20220417",
 	.major	= 1,
 	.minor	= 0,
 };
diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
index 34a98717b72c..0e0d3a0962f8 100644
--- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c
+++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c
@@ -336,7 +336,6 @@ static const struct drm_driver mxsfb_driver = {
 	.fops	= &fops,
 	.name	= "mxsfb-drm",
 	.desc	= "MXSFB Controller DRM",
-	.date	= "20160824",
 	.major	= 1,
 	.minor	= 0,
 };
diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c
index 107f63f08bd9..fdf90d48d5ea 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
@@ -1326,11 +1326,6 @@ driver_stub = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-#ifdef GIT_REVISION
-	.date = GIT_REVISION,
-#else
-	.date = DRIVER_DATE,
-#endif
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/nouveau/nouveau_drv.h b/drivers/gpu/drm/nouveau/nouveau_drv.h
index 685d6ca3d8aa..55abc510067b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_drv.h
+++ b/drivers/gpu/drm/nouveau/nouveau_drv.h
@@ -7,7 +7,6 @@
 
 #define DRIVER_NAME		"nouveau"
 #define DRIVER_DESC		"nVidia Riva/TNT/GeForce/Quadro/Tesla/Tegra K1+"
-#define DRIVER_DATE		"20120801"
 
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		4
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c
index 1796cd20a877..a80e0f375a0e 100644
--- a/drivers/gpu/drm/omapdrm/omap_drv.c
+++ b/drivers/gpu/drm/omapdrm/omap_drv.c
@@ -28,7 +28,6 @@
 
 #define DRIVER_NAME		MODULE_NAME
 #define DRIVER_DESC		"OMAP DRM"
-#define DRIVER_DATE		"20110917"
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		0
 #define DRIVER_PATCHLEVEL	0
@@ -653,7 +652,6 @@ static const struct drm_driver omap_drm_driver = {
 	.fops = &omapdriver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c
index 04d615df5259..fbaef3afcd66 100644
--- a/drivers/gpu/drm/panfrost/panfrost_drv.c
+++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
@@ -636,7 +636,6 @@ static const struct drm_driver panfrost_drm_driver = {
 	.fops			= &panfrost_drm_driver_fops,
 	.name			= "panfrost",
 	.desc			= "panfrost DRM",
-	.date			= "20180908",
 	.major			= 1,
 	.minor			= 3,
 
diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/panthor/panthor_drv.c
index ac7e53f6e3f0..ad46a40ed9e1 100644
--- a/drivers/gpu/drm/panthor/panthor_drv.c
+++ b/drivers/gpu/drm/panthor/panthor_drv.c
@@ -1505,7 +1505,6 @@ static const struct drm_driver panthor_drm_driver = {
 	.fops = &panthor_drm_driver_fops,
 	.name = "panthor",
 	.desc = "Panthor DRM driver",
-	.date = "20230801",
 	.major = 1,
 	.minor = 2,
 
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index 13362150b9c6..cc505790eaf3 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -220,7 +220,6 @@ static const struct drm_driver pl111_drm_driver = {
 	.fops = &drm_fops,
 	.name = "pl111",
 	.desc = DRIVER_DESC,
-	.date = "20170317",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c
index 21f752644242..80118bcfd402 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.c
+++ b/drivers/gpu/drm/qxl/qxl_drv.c
@@ -300,7 +300,6 @@ static struct drm_driver qxl_driver = {
 	.num_ioctls = ARRAY_SIZE(qxl_ioctls),
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = 0,
 	.minor = 1,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h
index 32069acd93f8..24874ff9efc9 100644
--- a/drivers/gpu/drm/qxl/qxl_drv.h
+++ b/drivers/gpu/drm/qxl/qxl_drv.h
@@ -54,7 +54,6 @@ struct iosys_map;
 
 #define DRIVER_NAME		"qxl"
 #define DRIVER_DESC		"RH QXL"
-#define DRIVER_DATE		"20120117"
 
 #define DRIVER_MAJOR 0
 #define DRIVER_MINOR 1
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 23d6d1a2586d..60e1a783a476 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -604,7 +604,6 @@ static const struct drm_driver kms_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = KMS_DRIVER_MAJOR,
 	.minor = KMS_DRIVER_MINOR,
 	.patchlevel = KMS_DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/radeon/radeon_drv.h b/drivers/gpu/drm/radeon/radeon_drv.h
index 02a65971d140..0f3dbffc492d 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.h
+++ b/drivers/gpu/drm/radeon/radeon_drv.h
@@ -43,7 +43,6 @@
 
 #define DRIVER_NAME		"radeon"
 #define DRIVER_DESC		"ATI Radeon"
-#define DRIVER_DATE		"20080528"
 
 /* Interface history:
  *
diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
index 4e0bafc86f50..6cf28032fc3f 100644
--- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
+++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
@@ -611,7 +611,6 @@ static const struct drm_driver rcar_du_driver = {
 	.fops			= &rcar_du_fops,
 	.name			= "rcar-du",
 	.desc			= "Renesas R-Car Display Unit",
-	.date			= "20130110",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
index bbd7003335da..55ba426d9462 100644
--- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
+++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
@@ -84,7 +84,6 @@ static const struct drm_driver rzg2l_du_driver = {
 	.fops			= &rzg2l_du_fops,
 	.name			= "rzg2l-du",
 	.desc			= "Renesas RZ/G2L Display Unit",
-	.date			= "20230410",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
index 8d3effe3f598..8d58547a6fc1 100644
--- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
+++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_drv.c
@@ -107,7 +107,6 @@ static const struct drm_driver shmob_drm_driver = {
 	.fops			= &shmob_drm_fops,
 	.name			= "shmob-drm",
 	.desc			= "Renesas SH Mobile DRM",
-	.date			= "20120424",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
index 585355de696b..768517cf3c6b 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
@@ -39,7 +39,6 @@
 
 #define DRIVER_NAME	"rockchip"
 #define DRIVER_DESC	"RockChip Soc DRM"
-#define DRIVER_DATE	"20140818"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -235,7 +234,6 @@ static const struct drm_driver rockchip_drm_driver = {
 	.fops			= &rockchip_drm_driver_fops,
 	.name	= DRIVER_NAME,
 	.desc	= DRIVER_DESC,
-	.date	= DRIVER_DATE,
 	.major	= DRIVER_MAJOR,
 	.minor	= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/solomon/ssd130x.c b/drivers/gpu/drm/solomon/ssd130x.c
index 29b2f82d81f8..dd78138605ca 100644
--- a/drivers/gpu/drm/solomon/ssd130x.c
+++ b/drivers/gpu/drm/solomon/ssd130x.c
@@ -39,7 +39,6 @@
 
 #define DRIVER_NAME	"ssd130x"
 #define DRIVER_DESC	"DRM driver for Solomon SSD13xx OLED displays"
-#define DRIVER_DATE	"20220131"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -1784,7 +1783,6 @@ static const struct drm_driver ssd130x_drm_driver = {
 	DRM_FBDEV_SHMEM_DRIVER_OPS,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 	.driver_features	= DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
diff --git a/drivers/gpu/drm/sprd/sprd_drm.c b/drivers/gpu/drm/sprd/sprd_drm.c
index a74cd0caf645..867ee2d8997f 100644
--- a/drivers/gpu/drm/sprd/sprd_drm.c
+++ b/drivers/gpu/drm/sprd/sprd_drm.c
@@ -23,7 +23,6 @@
 
 #define DRIVER_NAME	"sprd"
 #define DRIVER_DESC	"Spreadtrum SoCs' DRM Driver"
-#define DRIVER_DATE	"20200201"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -59,7 +58,6 @@ static struct drm_driver sprd_drm_drv = {
 
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c
index 65f180c8e8e2..78213d205b02 100644
--- a/drivers/gpu/drm/sti/sti_drv.c
+++ b/drivers/gpu/drm/sti/sti_drv.c
@@ -29,7 +29,6 @@
 
 #define DRIVER_NAME	"sti"
 #define DRIVER_DESC	"STMicroelectronics SoC DRM"
-#define DRIVER_DATE	"20140601"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -143,7 +142,6 @@ static const struct drm_driver sti_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c
index 478dc129d5c2..450ba6daabb3 100644
--- a/drivers/gpu/drm/stm/drv.c
+++ b/drivers/gpu/drm/stm/drv.c
@@ -62,7 +62,6 @@ static const struct drm_driver drv_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "stm",
 	.desc = "STMicroelectronics SoC DRM",
-	.date = "20170330",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 3f880d8a5666..dc17fe51f959 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -50,7 +50,6 @@ static const struct drm_driver sun4i_drv_driver = {
 	.fops			= &sun4i_drv_fops,
 	.name			= "sun4i-drm",
 	.desc			= "Allwinner sun4i Display Engine",
-	.date			= "20150629",
 	.major			= 1,
 	.minor			= 0,
 
diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c
index bf3421667ecc..8b4ee02c3b4e 100644
--- a/drivers/gpu/drm/tegra/drm.c
+++ b/drivers/gpu/drm/tegra/drm.c
@@ -35,7 +35,6 @@
 
 #define DRIVER_NAME "tegra"
 #define DRIVER_DESC "NVIDIA Tegra graphics"
-#define DRIVER_DATE "20120330"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 #define DRIVER_PATCHLEVEL 0
@@ -901,7 +900,6 @@ static const struct drm_driver tegra_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 2428b9aaa003..f165513342a1 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -113,7 +113,6 @@ static const struct drm_driver tidss_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "tidss",
 	.desc			= "TI Keystone DSS",
-	.date			= "20180215",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 8c9f3705aa6c..541076167923 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -481,7 +481,6 @@ static const struct drm_driver tilcdc_driver = {
 	.fops               = &fops,
 	.name               = "tilcdc",
 	.desc               = "TI LCD Controller DRM",
-	.date               = "20121205",
 	.major              = 1,
 	.minor              = 0,
 };
diff --git a/drivers/gpu/drm/tiny/arcpgu.c b/drivers/gpu/drm/tiny/arcpgu.c
index 81abedec435d..70947571483e 100644
--- a/drivers/gpu/drm/tiny/arcpgu.c
+++ b/drivers/gpu/drm/tiny/arcpgu.c
@@ -366,7 +366,6 @@ static const struct drm_driver arcpgu_drm_driver = {
 	.driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_ATOMIC,
 	.name = "arcpgu",
 	.desc = "ARC PGU Controller",
-	.date = "20160219",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c
index 447989bb8201..2b0af6a64dc2 100644
--- a/drivers/gpu/drm/tiny/bochs.c
+++ b/drivers/gpu/drm/tiny/bochs.c
@@ -671,7 +671,6 @@ static const struct drm_driver bochs_driver = {
 	.fops			= &bochs_fops,
 	.name			= "bochs-drm",
 	.desc			= "bochs dispi vga interface (qemu stdvga)",
-	.date			= "20130925",
 	.major			= 1,
 	.minor			= 0,
 	DRM_GEM_SHMEM_DRIVER_OPS,
diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c
index f06a2be71f60..3354bd3e3611 100644
--- a/drivers/gpu/drm/tiny/cirrus.c
+++ b/drivers/gpu/drm/tiny/cirrus.c
@@ -48,7 +48,6 @@
 
 #define DRIVER_NAME "cirrus"
 #define DRIVER_DESC "qemu cirrus vga"
-#define DRIVER_DATE "2019"
 #define DRIVER_MAJOR 2
 #define DRIVER_MINOR 0
 
@@ -657,7 +656,6 @@ static const struct drm_driver cirrus_driver = {
 
 	.name		 = DRIVER_NAME,
 	.desc		 = DRIVER_DESC,
-	.date		 = DRIVER_DATE,
 	.major		 = DRIVER_MAJOR,
 	.minor		 = DRIVER_MINOR,
 
diff --git a/drivers/gpu/drm/tiny/gm12u320.c b/drivers/gpu/drm/tiny/gm12u320.c
index 0c17ae532fb4..c8b2be766a47 100644
--- a/drivers/gpu/drm/tiny/gm12u320.c
+++ b/drivers/gpu/drm/tiny/gm12u320.c
@@ -34,7 +34,6 @@ MODULE_PARM_DESC(eco_mode, "Turn on Eco mode (less bright, more silent)");
 
 #define DRIVER_NAME		"gm12u320"
 #define DRIVER_DESC		"Grain Media GM12U320 USB projector display"
-#define DRIVER_DATE		"2019"
 #define DRIVER_MAJOR		1
 #define DRIVER_MINOR		0
 
@@ -626,7 +625,6 @@ static const struct drm_driver gm12u320_drm_driver = {
 
 	.name		 = DRIVER_NAME,
 	.desc		 = DRIVER_DESC,
-	.date		 = DRIVER_DATE,
 	.major		 = DRIVER_MAJOR,
 	.minor		 = DRIVER_MINOR,
 
diff --git a/drivers/gpu/drm/tiny/hx8357d.c b/drivers/gpu/drm/tiny/hx8357d.c
index 6b0d1846cfcf..d0e6cd13a8d2 100644
--- a/drivers/gpu/drm/tiny/hx8357d.c
+++ b/drivers/gpu/drm/tiny/hx8357d.c
@@ -199,7 +199,6 @@ static const struct drm_driver hx8357d_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "hx8357d",
 	.desc			= "HX8357D",
-	.date			= "20181023",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9163.c b/drivers/gpu/drm/tiny/ili9163.c
index 5eb39ca1a855..863565989204 100644
--- a/drivers/gpu/drm/tiny/ili9163.c
+++ b/drivers/gpu/drm/tiny/ili9163.c
@@ -118,7 +118,6 @@ static struct drm_driver ili9163_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "ili9163",
 	.desc			= "Ilitek ILI9163",
-	.date			= "20210208",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9225.c b/drivers/gpu/drm/tiny/ili9225.c
index 875e2d09729a..43faacb254c7 100644
--- a/drivers/gpu/drm/tiny/ili9225.c
+++ b/drivers/gpu/drm/tiny/ili9225.c
@@ -364,7 +364,6 @@ static const struct drm_driver ili9225_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "ili9225",
 	.desc			= "Ilitek ILI9225",
-	.date			= "20171106",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9341.c b/drivers/gpu/drm/tiny/ili9341.c
index c1dfdfbbd30c..914beb3a85c3 100644
--- a/drivers/gpu/drm/tiny/ili9341.c
+++ b/drivers/gpu/drm/tiny/ili9341.c
@@ -155,7 +155,6 @@ static const struct drm_driver ili9341_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "ili9341",
 	.desc			= "Ilitek ILI9341",
-	.date			= "20180514",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
index 7e46a720d5e2..509a412e562c 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
@@ -177,7 +177,6 @@ static const struct drm_driver ili9486_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "ili9486",
 	.desc			= "Ilitek ILI9486",
-	.date			= "20200118",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/mi0283qt.c b/drivers/gpu/drm/tiny/mi0283qt.c
index f1461c55dba6..5afe1ba89ffa 100644
--- a/drivers/gpu/drm/tiny/mi0283qt.c
+++ b/drivers/gpu/drm/tiny/mi0283qt.c
@@ -159,7 +159,6 @@ static const struct drm_driver mi0283qt_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "mi0283qt",
 	.desc			= "Multi-Inno MI0283QT",
-	.date			= "20160614",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/ofdrm.c b/drivers/gpu/drm/tiny/ofdrm.c
index 220c1244b3c0..a964754d4f86 100644
--- a/drivers/gpu/drm/tiny/ofdrm.c
+++ b/drivers/gpu/drm/tiny/ofdrm.c
@@ -25,7 +25,6 @@
 
 #define DRIVER_NAME	"ofdrm"
 #define DRIVER_DESC	"DRM driver for OF platform devices"
-#define DRIVER_DATE	"20220501"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -1348,7 +1347,6 @@ static struct drm_driver ofdrm_driver = {
 	DRM_FBDEV_SHMEM_DRIVER_OPS,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 	.driver_features	= DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
diff --git a/drivers/gpu/drm/tiny/panel-mipi-dbi.c b/drivers/gpu/drm/tiny/panel-mipi-dbi.c
index e66729b31bd6..12bbeec80fbf 100644
--- a/drivers/gpu/drm/tiny/panel-mipi-dbi.c
+++ b/drivers/gpu/drm/tiny/panel-mipi-dbi.c
@@ -269,7 +269,6 @@ static const struct drm_driver panel_mipi_dbi_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "panel-mipi-dbi",
 	.desc			= "MIPI DBI compatible display panel",
-	.date			= "20220103",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index 77944eb17b3c..031c1bcdc947 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -917,7 +917,6 @@ static const struct drm_driver repaper_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "repaper",
 	.desc			= "Pervasive Displays RePaper e-ink panels",
-	.date			= "20170405",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/sharp-memory.c b/drivers/gpu/drm/tiny/sharp-memory.c
index 2d2315bd6aef..5bc7339a54ac 100644
--- a/drivers/gpu/drm/tiny/sharp-memory.c
+++ b/drivers/gpu/drm/tiny/sharp-memory.c
@@ -107,7 +107,6 @@ static const struct drm_driver sharp_memory_drm_driver = {
 	DRM_FBDEV_DMA_DRIVER_OPS,
 	.name			= "sharp_memory_display",
 	.desc			= "Sharp Display Memory LCD",
-	.date			= "20231129",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c
index 3182d32f1b8f..9efa66800ca8 100644
--- a/drivers/gpu/drm/tiny/simpledrm.c
+++ b/drivers/gpu/drm/tiny/simpledrm.c
@@ -31,7 +31,6 @@
 
 #define DRIVER_NAME	"simpledrm"
 #define DRIVER_DESC	"DRM driver for simple-framebuffer platform devices"
-#define DRIVER_DATE	"20200625"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -1015,7 +1014,6 @@ static struct drm_driver simpledrm_driver = {
 	DRM_FBDEV_SHMEM_DRIVER_OPS,
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 	.driver_features	= DRIVER_ATOMIC | DRIVER_GEM | DRIVER_MODESET,
diff --git a/drivers/gpu/drm/tiny/st7586.c b/drivers/gpu/drm/tiny/st7586.c
index 97013685c62f..c2ad886d9898 100644
--- a/drivers/gpu/drm/tiny/st7586.c
+++ b/drivers/gpu/drm/tiny/st7586.c
@@ -295,7 +295,6 @@ static const struct drm_driver st7586_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "st7586",
 	.desc			= "Sitronix ST7586",
-	.date			= "20170801",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tiny/st7735r.c b/drivers/gpu/drm/tiny/st7735r.c
index 0747ebd999cc..6b36f36b8d84 100644
--- a/drivers/gpu/drm/tiny/st7735r.c
+++ b/drivers/gpu/drm/tiny/st7735r.c
@@ -160,7 +160,6 @@ static const struct drm_driver st7735r_driver = {
 	.debugfs_init		= mipi_dbi_debugfs_init,
 	.name			= "st7735r",
 	.desc			= "Sitronix ST7735R",
-	.date			= "20171128",
 	.major			= 1,
 	.minor			= 0,
 };
diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/tve200_drv.c
index b30340a2141d..d18289638679 100644
--- a/drivers/gpu/drm/tve200/tve200_drv.c
+++ b/drivers/gpu/drm/tve200/tve200_drv.c
@@ -146,7 +146,6 @@ static const struct drm_driver tve200_drm_driver = {
 	.fops = &drm_fops,
 	.name = "tve200",
 	.desc = DRIVER_DESC,
-	.date = "20170703",
 	.major = 1,
 	.minor = 0,
 	.patchlevel = 0,
diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c
index 8d8ae40f945c..8d5240ae9fa3 100644
--- a/drivers/gpu/drm/udl/udl_drv.c
+++ b/drivers/gpu/drm/udl/udl_drv.c
@@ -78,7 +78,6 @@ static const struct drm_driver driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h
index 1eb716d9dad5..be00dc1d87a1 100644
--- a/drivers/gpu/drm/udl/udl_drv.h
+++ b/drivers/gpu/drm/udl/udl_drv.h
@@ -26,7 +26,6 @@ struct drm_mode_create_dumb;
 
 #define DRIVER_NAME		"udl"
 #define DRIVER_DESC		"DisplayLink"
-#define DRIVER_DATE		"20120220"
 
 #define DRIVER_MAJOR		0
 #define DRIVER_MINOR		0
diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
index fb35c5c3f1a7..9d8de9146cb0 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -31,7 +31,6 @@
 
 #define DRIVER_NAME "v3d"
 #define DRIVER_DESC "Broadcom V3D graphics"
-#define DRIVER_DATE "20180419"
 #define DRIVER_MAJOR 1
 #define DRIVER_MINOR 0
 #define DRIVER_PATCHLEVEL 0
@@ -248,7 +247,6 @@ static const struct drm_driver v3d_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c
index a536c467e2b2..f3800d47473b 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.c
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c
@@ -189,7 +189,6 @@ static const struct drm_driver driver = {
 	.fops = &vbox_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.h b/drivers/gpu/drm/vboxvideo/vbox_drv.h
index e77bd6512eb1..dfa935f381a6 100644
--- a/drivers/gpu/drm/vboxvideo/vbox_drv.h
+++ b/drivers/gpu/drm/vboxvideo/vbox_drv.h
@@ -25,7 +25,6 @@
 
 #define DRIVER_NAME         "vboxvideo"
 #define DRIVER_DESC         "Oracle VM VirtualBox Graphics Card"
-#define DRIVER_DATE         "20130823"
 
 #define DRIVER_MAJOR        1
 #define DRIVER_MINOR        0
diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
index d47e5967592f..5ecf28f013fd 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -47,7 +47,6 @@
 
 #define DRIVER_NAME "vc4"
 #define DRIVER_DESC "Broadcom VC4 graphics"
-#define DRIVER_DATE "20140616"
 #define DRIVER_MAJOR 0
 #define DRIVER_MINOR 0
 #define DRIVER_PATCHLEVEL 0
@@ -222,7 +221,6 @@ const struct drm_driver vc4_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
@@ -244,7 +242,6 @@ const struct drm_driver vc5_drm_driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/vgem/vgem_drv.c b/drivers/gpu/drm/vgem/vgem_drv.c
index c5e3e5457737..2752ab4f1c97 100644
--- a/drivers/gpu/drm/vgem/vgem_drv.c
+++ b/drivers/gpu/drm/vgem/vgem_drv.c
@@ -47,7 +47,6 @@
 
 #define DRIVER_NAME	"vgem"
 #define DRIVER_DESC	"Virtual GEM provider"
-#define DRIVER_DATE	"20120112"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -121,7 +120,6 @@ static const struct drm_driver vgem_driver = {
 
 	.name	= DRIVER_NAME,
 	.desc	= DRIVER_DESC,
-	.date	= DRIVER_DATE,
 	.major	= DRIVER_MAJOR,
 	.minor	= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index ffca6e2e1c9a..933e22b7dada 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -202,7 +202,6 @@ static const struct drm_driver driver = {
 
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h
index 64c236169db8..ccd2c8a1060b 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.h
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.h
@@ -45,7 +45,6 @@
 
 #define DRIVER_NAME "virtio_gpu"
 #define DRIVER_DESC "virtio GPU"
-#define DRIVER_DATE "0"
 
 #define DRIVER_MAJOR 0
 #define DRIVER_MINOR 1
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 2d1e95cb66e5..576d2208b548 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -34,7 +34,6 @@
 
 #define DRIVER_NAME	"vkms"
 #define DRIVER_DESC	"Virtual Kernel Mode Setting"
-#define DRIVER_DATE	"20180514"
 #define DRIVER_MAJOR	1
 #define DRIVER_MINOR	0
 
@@ -117,7 +116,6 @@ static const struct drm_driver vkms_driver = {
 
 	.name			= DRIVER_NAME,
 	.desc			= DRIVER_DESC,
-	.date			= DRIVER_DATE,
 	.major			= DRIVER_MAJOR,
 	.minor			= DRIVER_MINOR,
 };
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 2c46897876dd..b81179545cb9 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1634,7 +1634,6 @@ static const struct drm_driver driver = {
 	.fops = &vmwgfx_driver_fops,
 	.name = VMWGFX_DRIVER_NAME,
 	.desc = VMWGFX_DRIVER_DESC,
-	.date = VMWGFX_DRIVER_DATE,
 	.major = VMWGFX_DRIVER_MAJOR,
 	.minor = VMWGFX_DRIVER_MINOR,
 	.patchlevel = VMWGFX_DRIVER_PATCHLEVEL
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index b21831ef214a..5275ef632d4b 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -57,7 +57,6 @@
 
 
 #define VMWGFX_DRIVER_NAME "vmwgfx"
-#define VMWGFX_DRIVER_DATE "20211206"
 #define VMWGFX_DRIVER_MAJOR 2
 #define VMWGFX_DRIVER_MINOR 20
 #define VMWGFX_DRIVER_PATCHLEVEL 0
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 51bb9d875268..8b30e73db8de 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -278,7 +278,6 @@ static struct drm_driver driver = {
 	.fops = &xe_driver_fops,
 	.name = DRIVER_NAME,
 	.desc = DRIVER_DESC,
-	.date = DRIVER_DATE,
 	.major = DRIVER_MAJOR,
 	.minor = DRIVER_MINOR,
 	.patchlevel = DRIVER_PATCHLEVEL,
diff --git a/drivers/gpu/drm/xe/xe_drv.h b/drivers/gpu/drm/xe/xe_drv.h
index d45b71426cc8..d61650d4aa0b 100644
--- a/drivers/gpu/drm/xe/xe_drv.h
+++ b/drivers/gpu/drm/xe/xe_drv.h
@@ -10,7 +10,6 @@
 
 #define DRIVER_NAME		"xe"
 #define DRIVER_DESC		"Intel Xe Graphics"
-#define DRIVER_DATE		"20201103"
 
 /* Interface history:
  *
diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c
index 931d855bfbe8..1bda7ef606cc 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.c
+++ b/drivers/gpu/drm/xen/xen_drm_front.c
@@ -478,7 +478,6 @@ static const struct drm_driver xen_drm_driver = {
 	.fops                      = &xen_drm_dev_fops,
 	.name                      = "xendrm-du",
 	.desc                      = "Xen PV DRM Display Unit",
-	.date                      = "20180221",
 	.major                     = 1,
 	.minor                     = 0,
 
diff --git a/drivers/gpu/drm/xlnx/zynqmp_kms.c b/drivers/gpu/drm/xlnx/zynqmp_kms.c
index 2452c2f09161..736df17dfc26 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_kms.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_kms.c
@@ -409,7 +409,6 @@ static const struct drm_driver zynqmp_dpsub_drm_driver = {
 
 	.name				= "zynqmp-dpsub",
 	.desc				= "Xilinx DisplayPort Subsystem Driver",
-	.date				= "20130509",
 	.major				= 1,
 	.minor				= 0,
 };
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 1bbbcb8e2d23..1b6e59139e6c 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -401,8 +401,6 @@ struct drm_driver {
 	char *name;
 	/** @desc: driver description */
 	char *desc;
-	/** @date: driver date, unused, to be removed */
-	char *date;
 
 	/**
 	 * @driver_features:
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Mon Oct 28 20:56:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 20:56:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826984.1241449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5WmU-0004Ss-F1; Mon, 28 Oct 2024 20:56:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826984.1241449; Mon, 28 Oct 2024 20:56: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 1t5WmU-0004Sl-C7; Mon, 28 Oct 2024 20:56:06 +0000
Received: by outflank-mailman (input) for mailman id 826984;
 Mon, 28 Oct 2024 20:56: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=SUXZ=RY=gmail.com=alexdeucher@srs-se1.protection.inumbo.net>)
 id 1t5WmT-0004Sf-BZ
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 20:56:05 +0000
Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com
 [2607:f8b0:4864:20::434])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 091d20fc-956f-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 21:56:00 +0100 (CET)
Received: by mail-pf1-x434.google.com with SMTP id
 d2e1a72fcca58-71e4c2e36d5so162610b3a.2
 for <xen-devel@lists.xenproject.org>; Mon, 28 Oct 2024 13:56:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 091d20fc-956f-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730148959; x=1730753759; 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=D1Co9AOGY8fdKgoryciwma41R5B9YqOzlnHWDbIZnus=;
        b=GGbmpmL2PwmmHrjfUbPLs4NG3ATwYD5JYz4PT9OKVkT2ofioEX1GxJnnr9Tb+sDHF3
         FtSnvmIs7fQgaa2iaIwczVlyk2ecH1Aw6SgbSbK0eUWR46X+J5FeUgHAST5UM21VxBs3
         u26EBwWmJ21ktlUS3U+0lf3acPcDThsgCpbLyS3zWPjbgDTQ1eMVpNFSqXqwTYxZpult
         G9X89TYU8LPNe6iXVpjYxL/JgZkHtpmf0JsbjMhp+JFVMgFMHRAKyiN5trdIpt9JCu88
         q+ecOzkO0QDMvl4OkZm2tTgaEtD+scAZmtojbEjVHcTUcFTMPHMPQH8yOs8hpaRTvg0L
         7nKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730148959; x=1730753759;
        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=D1Co9AOGY8fdKgoryciwma41R5B9YqOzlnHWDbIZnus=;
        b=g9pHu4qgUgVPnZHlCAQ1mMSvBYxpexLDTmhuQQ4vCEILSqtwLzirTE4ODT4kLWWQUR
         ZONJ3ezVGQ9U6YKqtuzfHnTnccOtFbTG6H90fbT5vAZpgj9yCby3opE8GeVICNLtFswM
         ylbDzgTU5CjccOpLB+utYj/b9LAAyJbzCMnMHKBdYn4hNxN2NBTI/B00fzr7euLzGFN0
         U/RiyzxMN5YM1PVnTfA92HXBiDT1cDecPNoCpQGx8VHH4zKIyYiuXWEjIiOZrg5LhVcB
         lu/7hojFhfPpHbElEfkADFi140enGDeqDc2gMmKYQnQAFwmndJ4AB4tUqTxObELLuMce
         sw1w==
X-Forwarded-Encrypted: i=1; AJvYcCXErXv/ED14NWTiQZDt9npRoHQzQzUca3f56WL2AqWeMS9kydGuJXu4jHa9NxF8MXmKmEdGxGd2D9U=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyuNeVPSMoErzb1j1y/twepx7Dyp/Uz5zI8V0kmsFexwVr6i7zD
	EXjpsvEiEEca8fJc8cIQu1Ecq0dp+1yb9FdNGNJN4wlbJuR7BDOaozgyFmkD8j28VX2GcMlVqPA
	+at/uvHFMfXT6s/6vdeoEx4Zg+p4=
X-Google-Smtp-Source: AGHT+IFlSc2ciu0Xc58PIbp/OChRFrcPGgyTFkp7k6KlRk4Dh7Ar54n7Twps83jufbkvBW1uqmboDam/hWDyvH/TVKQ=
X-Received: by 2002:a05:6a00:4f91:b0:71e:5e9a:2db with SMTP id
 d2e1a72fcca58-72063060a1emr5883473b3a.6.1730148959173; Mon, 28 Oct 2024
 13:55:59 -0700 (PDT)
MIME-Version: 1.0
References: <20241028185141.3756176-1-jani.nikula@intel.com>
In-Reply-To: <20241028185141.3756176-1-jani.nikula@intel.com>
From: Alex Deucher <alexdeucher@gmail.com>
Date: Mon, 28 Oct 2024 16:55:47 -0400
Message-ID: <CADnq5_Mfp+EfSToGVr8A+xXA4X_g6qz+1fgE6uTxMG2rEK=ngg@mail.gmail.com>
Subject: Re: [PATCH v2 1/3] drm/xen: remove redundant initialization info print
To: Jani Nikula <jani.nikula@intel.com>
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, 
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, 
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, 
	Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 28, 2024 at 3:04=E2=80=AFPM Jani Nikula <jani.nikula@intel.com>=
 wrote:
>
> drm_dev_register() already prints the same information on successful
> init. Remove the redundant prints.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Acked-by: Alex Deucher <alexander.deucher@amd.com>

>
> ---
>
> Note: I prefer to merge this together with the next patch via
> drm-misc-next.
>
> Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Simona Vetter <simona@ffwll.ch>
> Cc: dri-devel@lists.freedesktop.org
> Cc: xen-devel@lists.xenproject.org
> ---
>  drivers/gpu/drm/xen/xen_drm_front.c | 5 -----
>  1 file changed, 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xe=
n_drm_front.c
> index aab79c5e34c2..931d855bfbe8 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
> @@ -525,11 +525,6 @@ static int xen_drm_drv_init(struct xen_drm_front_inf=
o *front_info)
>         if (ret)
>                 goto fail_register;
>
> -       DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n",
> -                xen_drm_driver.name, xen_drm_driver.major,
> -                xen_drm_driver.minor, xen_drm_driver.patchlevel,
> -                xen_drm_driver.date, drm_dev->primary->index);
> -
>         return 0;
>
>  fail_register:
> --
> 2.39.5
>


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 22:16:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 22:16:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.826993.1241459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Y1W-0005ko-T6; Mon, 28 Oct 2024 22:15:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 826993.1241459; Mon, 28 Oct 2024 22:15: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 1t5Y1W-0005kh-PB; Mon, 28 Oct 2024 22:15:42 +0000
Received: by outflank-mailman (input) for mailman id 826993;
 Mon, 28 Oct 2024 22:15: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=uAPk=RY=linutronix.de=tglx@srs-se1.protection.inumbo.net>)
 id 1t5Y1W-0005kZ-49
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 22:15:42 +0000
Received: from galois.linutronix.de (galois.linutronix.de [193.142.43.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 299bf50b-957a-11ef-99a3-01e77a169b0f;
 Mon, 28 Oct 2024 23:15:39 +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: 299bf50b-957a-11ef-99a3-01e77a169b0f
From: Thomas Gleixner <tglx@linutronix.de>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020; t=1730153737;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=CID8ZNB+XW4905MFNNwwhdwsOvxIuKrRJow3yEUZR2M=;
	b=QY4vNt4iAGCUZRzWovAdCiui7vsoPYwi/xZKv7PXv4v0XCP8Qnx4vxs7KJ3HFoecIxn1CW
	NUKDA5eSAmqBAR0o8vLKp2+2tWJgZKjJkTulj1cYCkfZ6hRNsc/q8PLM14lRs34A4FgJ6o
	OBCP63Vnd3kIazzewtdGd3C7ujM2Jsewo4JBu26qiCNUjbvkPnWTFRvtI7aYgnkboto8oN
	wO0NYpPGQF4YYSvKp5R7iJD8kTsyKahmx+NPQyHMlKJBAismayUFBKPvS6bk4GJbpkgzGO
	3+PsGddte9PQh2d3m4tuuAZ+D2IbCraEdMith0qbujFqEy3EHrjDu54yp1XEvg==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020e; t=1730153737;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=CID8ZNB+XW4905MFNNwwhdwsOvxIuKrRJow3yEUZR2M=;
	b=qQQ6M7hLkM2YLw5YbR1J9vnrJIbphOprh2UrWttSDz0CQ2QvICqD7YtI6DbSvB7utjHNDt
	B/aXNiWb5CLThFDg==
To: Jinjie Ruan <ruanjinjie@huawei.com>, oleg@redhat.com,
 linux@armlinux.org.uk, will@kernel.org, mark.rutland@arm.com,
 catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
 peterz@infradead.org, luto@kernel.org, kees@kernel.org, wad@chromium.org,
 akpm@linux-foundation.org, samitolvanen@google.com, arnd@arndb.de,
 ojeda@kernel.org, rppt@kernel.org, hca@linux.ibm.com,
 aliceryhl@google.com, samuel.holland@sifive.com, paulmck@kernel.org,
 aquini@redhat.com, petr.pavlu@suse.com, ruanjinjie@huawei.com,
 viro@zeniv.linux.org.uk, rmk+kernel@armlinux.org.uk, ardb@kernel.org,
 wangkefeng.wang@huawei.com, surenb@google.com, linus.walleij@linaro.org,
 yangyj.ee@gmail.com, broonie@kernel.org, mbenes@suse.cz,
 puranjay@kernel.org, pcc@google.com, guohanjun@huawei.com,
 sudeep.holla@arm.com, Jonathan.Cameron@huawei.com, prarit@redhat.com,
 liuwei09@cestc.cn, dwmw@amazon.co.uk, oliver.upton@linux.dev,
 kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
 vschneid@redhat.com, thiago.bauermann@linaro.org, joey.gouly@arm.com,
 liuyuntao12@huawei.com, leobras@redhat.com, linux-kernel@vger.kernel.org,
 linux-arm-kernel@lists.infradead.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 15/19] entry: Add arch
 irqentry_exit_need_resched() for arm64
In-Reply-To: <878qu82je2.ffs@tglx>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-16-ruanjinjie@huawei.com> <878qu82je2.ffs@tglx>
Date: Mon, 28 Oct 2024 23:15:37 +0100
Message-ID: <87ldy727sm.ffs@tglx>
MIME-Version: 1.0
Content-Type: text/plain

On Mon, Oct 28 2024 at 19:05, Thomas Gleixner wrote:

> On Fri, Oct 25 2024 at 18:06, Jinjie Ruan wrote:
>
>> As the front patch 6 ~ 13 did, the arm64_preempt_schedule_irq() is
>
> Once this series is applied nobody knows what 'front patch 6 ~ 13' did.
>
>> same with the irq preempt schedule code of generic entry besides those
>> architecture-related logic called arm64_irqentry_exit_need_resched().
>>
>> So add arch irqentry_exit_need_resched() to support architecture-related
>> need_resched() check logic, which do not affect existing architectures
>> that use generic entry, but support arm64 to use generic irq entry.
>
> Simply say:
>
>  ARM64 requires an additional whether to reschedule on return from

  ARM64 requires an additional check whether to reschedule on return from

obviously...

>  interrupt.
>
>  Add arch_irqentry_exit_need_resched() as the default NOOP
>  implementation and hook it up into the need_resched() condition in
>  raw_irqentry_exit_cond_resched().
>
>  This allows ARM64 to implement the architecture specific version for
>  switchting over to the generic entry code.
>
> That explains things completely independently. Hmm?
>
> Thanks,
>
>         tglx


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 23:09:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 23:09:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827001.1241469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5YrG-0003wK-P6; Mon, 28 Oct 2024 23:09:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827001.1241469; Mon, 28 Oct 2024 23: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 1t5YrG-0003wD-Lt; Mon, 28 Oct 2024 23:09:10 +0000
Received: by outflank-mailman (input) for mailman id 827001;
 Mon, 28 Oct 2024 23:09: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=VaPr=RY=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t5YrF-0003w7-Fk
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 23:09:09 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on2061e.outbound.protection.outlook.com
 [2a01:111:f403:2416::61e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a135d0d0-9581-11ef-a0c2-8be0dac302b0;
 Tue, 29 Oct 2024 00:09:07 +0100 (CET)
Received: from BYAPR01CA0018.prod.exchangelabs.com (2603:10b6:a02:80::31) by
 DS0PR12MB8248.namprd12.prod.outlook.com (2603:10b6:8:f3::17) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8093.25; Mon, 28 Oct 2024 23:09:00 +0000
Received: from SJ1PEPF00002313.namprd03.prod.outlook.com
 (2603:10b6:a02:80:cafe::67) by BYAPR01CA0018.outlook.office365.com
 (2603:10b6:a02:80::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.21 via Frontend
 Transport; Mon, 28 Oct 2024 23:08:59 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00002313.mail.protection.outlook.com (10.167.242.167) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8114.16 via Frontend Transport; Mon, 28 Oct 2024 23:08:58 +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.39; Mon, 28 Oct
 2024 18:08:58 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Mon, 28 Oct 2024 18:08:57 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a135d0d0-9581-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=WehzsIJYEUOYJdD3c6yJ4D0SkS8e9PXXkppolUdkK4niXC+2w7/4yt3zzYuE1cUpr63dMHDAJlWlaNU9YfIu1zEqW0OUR6p9UkPh9coPFWR9+xFGt6rPEhDvgBbvfT1lw4r/9BMRz+is4siFb60yobzC72jDPz6vrOzmGUFrIQqaxiz8Gbd9/RaPVjY19pe6AjXzbSvJVSPvSXJ2aHnQvjuOJZ1uLWhhfixfHIzehjaDK314wVy5C2XQ/CmzUGghwQB9txjYBELTmGerLWupQFe47St78ykn/c+FmrtUDsGTK8WTR+pydLw6nj45CgPb/grImddC9PvZgmLfDpGXKg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=49iLJukz9UNxQWS01r9649PK6eWsAsYnFJWFukHNgAs=;
 b=iQLoVYsyqQSVbeil8I22fY+m+ozcZEFhOVpmfZdfOOoAwkfc5vTWtH7xGdgjejIXyHlS/l0mNMX3ZaEt5QSGK+gVk3jHWpepNkLz3/d46CC+qhWwbujrYaDab/cANwJnYBJCIH/laUwk0hPOutV3UNXbRuWVOhWX2dQyJ0TyzCp9pHflzrv+sw56R0148OdyrID64xOYPqcOJPF5YHV0IrCTqFOXQVxQyeJqESpJ13+30V+Jazv6iSQElFCVOdVKQeWVuKV0o82UFP6v3yerUWMSDokrc/9zqRdEQSMh96TIBjJP4MwGBNgHpSkxoM0Ba3yZzyKhxqaCelZsuCmUxw==
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=49iLJukz9UNxQWS01r9649PK6eWsAsYnFJWFukHNgAs=;
 b=NhL3r0VmiU+6Soieiaw5vnrLu1qUezPOhmQNG2NPor1jZM3tWxJ40XooUUKe1nJQo9fDV9HdaS5y+Tz8r2cMSIKPPiRnZkV3zaQ8Ll7W7R+Nvmw7ZI939cGzK77UAuJZjgnkSvYO67E8VE2STeQFeBZSc8swNVk020Qg8fzI2LE=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Doug Goldstein <cardoe@cardoe.com>
Subject: [XEN PATCH v2] automation: add x86_64 test (linux argo)
Date: Mon, 28 Oct 2024 16:08:19 -0700
Message-ID: <379776d8c059d457a3be03e7701f24dc4f8bda81.1730155685.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB03.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00002313:EE_|DS0PR12MB8248:EE_
X-MS-Office365-Filtering-Correlation-Id: 46a1ebe3-8f85-4eae-5246-08dcf7a58125
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|36860700013|376014|82310400026|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?5isV4vx8MEHxhjAyyWZRfkDCdey/4BF0jBkOoRkyp2dJeFyjw4BvYm4j3BFS?=
 =?us-ascii?Q?tVAo63bdkdp5mTehGMcQzDJMoP/nNijNsh2Ma4IWz2i5xaBKw11Gnv66cDRd?=
 =?us-ascii?Q?lb4IK6aovTL0JmvDtf0WnDb9FyY35S/782JW7bA0s45/UjJvwQNwl6gipUmt?=
 =?us-ascii?Q?Evicf7K7XyqUNWt+sorVM5F6x8uIY0qbgvAvxG19tCkRjbhcmXmK5jl3Nxf3?=
 =?us-ascii?Q?8jZP9U+AgXrMdJ7et7Uf69kgEYyxgxLhfVEaHAxiVd+AgUwMfu5mWITI81un?=
 =?us-ascii?Q?KAkDZmIq3H8XbAh09oIHnACQjKWneYp1jEuFY5q5Ti+vpEtJ8VXPj4NOjLaU?=
 =?us-ascii?Q?dx9vmRMqzTQ/0sEYkaBNtH0S5/iffjcNi7Qn1nYvOaJ4n2/PkU0+pe2ateyZ?=
 =?us-ascii?Q?ClGuVfCvomoD3+/uh6c1w8v8ge+tZ6J05KhftS4SQXl8Rz1kFiF7fT/yeSdm?=
 =?us-ascii?Q?DGZtrK/uMy4bZZIApo6SuHBkCHZZ7oIV1ADRNjt30mZjKfuzXLRRVXAZLqlV?=
 =?us-ascii?Q?Izbi4bLdZSJv5iChE1W6Cw/SSyVbveovNmgbDtD7Z1ksUq0vZVPxUBFb+TDV?=
 =?us-ascii?Q?0QBRY1gSdTyRgXFSiGB84TLRP/OGCtbYg3alivSux58V8kPRrHiK4EpxuFTz?=
 =?us-ascii?Q?qXaZlJWMuYm7fE2T+SRR9U9FQGWT5M3ztuDf398KeeH+woDuMc73aPxZzRdJ?=
 =?us-ascii?Q?XjNGUGKI/l0dd6TPSuU5y6ZUMZUOF9xblvEUNQYOy6LlSDQiBQzAjMSk4afQ?=
 =?us-ascii?Q?4LUtsDx7rRWIQr1EbUlOp5nIRGdKzs4h3e3H3VOTQ70K8IqbuKUsB+Os58ye?=
 =?us-ascii?Q?G6u3z7KuPQmYo8Ky6Z3X+DoJ9E9RRtz+j8eGYWmMyjmMg0mGKwjTbJVREKHd?=
 =?us-ascii?Q?xOXK/UwsjmpZfaL76uEL98D0ymKaPYTduD7Pd94zzGG+qah7JXdqgmFsyQf6?=
 =?us-ascii?Q?i7MCSU01iyPMGb+FTVX1b3a7S+MRVopkR9W0jq4UZSoDaEJ8haBru0USc1cN?=
 =?us-ascii?Q?GsCaeNHGs33/p8151lfWUf4tjjM9nwwY2wntDMXpAuBH6+/YZioLraU9bi96?=
 =?us-ascii?Q?zxZx+beMgFpBuCT8vhSiX8RDp2hJwdVOadssLXEdFgHtQEl3NMf75KhD30Zk?=
 =?us-ascii?Q?lzM2hraZOkHwRJlq6lxn9wfOOiOGikmRePpGEDyuqqMAfQPEUb/lmnj0pLMO?=
 =?us-ascii?Q?LP3DyvvU+7YTgZYsIXpzOkuoK8n38yXcUG8Hw2/DzEJb3ECwlGXoU4z/z+Ks?=
 =?us-ascii?Q?YSxG7kkPLKFQTaz/xqgYkehnT5R3TP8OzlO9U+WvvrZkoVhZ8ZO4bWwxR+Si?=
 =?us-ascii?Q?rXO1Z75uDu0tUBeGDCvITTWOEq3l3o2FbFi+HoqGR1NIfGcdGxpWFqA38HSm?=
 =?us-ascii?Q?zOC3T+RDoUbxBFPClXuT2c2+gIY5tn3TZDlnRNbeyZz+iMrC8w=3D=3D?=
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:(13230040)(36860700013)(376014)(82310400026)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 23:08:58.6576
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 46a1ebe3-8f85-4eae-5246-08dcf7a58125
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:
	SJ1PEPF00002313.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8248

From: Victor Lira <victorm.lira@amd.com>

Add x86_64 hardware test that creates a Xen Argo communication
connection between two PVH domains. In the test, dom0 creates a domU and
listens for messages sent by the domU through Argo.

To accomplish this, build Xen with CONFIG_ARGO=y and create a CI test job.

Update the xilinx x86_64 test script to support the new test, and add
"sync_console" to command line to avoid an issue with console messages
being lost.

Requested-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Changes v2:
- update test job to use binaries from "test-artifacts" repository
- add argo config to existing alpine build instead of separate job
---
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 automation/gitlab-ci/build.yaml               |  3 +
 automation/gitlab-ci/test.yaml                | 16 ++++
 .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 +++++++++++++------
 3 files changed, 70 insertions(+), 25 deletions(-)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 09dd9e6ccb..b56ace69a0 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -340,6 +340,9 @@ alpine-3.18-gcc-debug:
   variables:
     CONTAINER: alpine:3.18
     BUILD_QEMU_XEN: y
+    EXTRA_XEN_CONFIG: |
+      CONFIG_EXPERT=y
+      CONFIG_ARGO=y

 debian-bookworm-gcc-debug:
   extends: .gcc-x86-64-build-debug
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index e76a37bef3..e8f57e87bd 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -192,6 +192,22 @@ xilinx-smoke-dom0-x86_64-gcc-debug:
     - *x86-64-test-needs
     - alpine-3.18-gcc-debug

+xilinx-smoke-dom0-x86_64-gcc-debug-argo:
+  extends: .xilinx-x86_64
+  script:
+    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
+  needs:
+    - alpine-3.18-gcc-debug
+    - project: xen-project/hardware/test-artifacts
+      job: x86_64-kernel-linux-6.6.56
+      ref: master
+    - project: xen-project/hardware/test-artifacts
+      job: x86_64-rootfs-alpine-3.18
+      ref: master
+    - project: xen-project/hardware/test-artifacts
+      job: x86_64-argo-linux-6.6.56
+      ref: master
+
 adl-smoke-x86-64-gcc-debug:
   extends: .adl-x86-64
   script:
diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
index 7027f083ba..f70cfdc155 100755
--- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
+++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
@@ -9,6 +9,8 @@ fatal() {
     exit 1
 }

+WORKDIR="${PWD}"
+
 # Test parameter defaults.
 TEST="$1"
 PASS_MSG="Test passed: ${TEST}"
@@ -24,9 +26,10 @@ kernel = "/boot/vmlinuz"
 ramdisk = "/boot/initrd-domU"
 extra = "root=/dev/ram0 console=hvc0"
 memory = 512
-vif = [ "bridge=xenbr0", ]
-disk = [ ]
 '
+DOMU_CFG_EXTRA=""
+copy_domU_files () { :; }
+copy_dom0_files () { :; }

 # Select test variant.
 if [ "${TEST}" = "ping" ]; then
@@ -39,6 +42,14 @@ done
 echo \"${DOMU_MSG}\"
 "
     DOM0_CMD="
+brctl addbr xenbr0
+brctl addif xenbr0 eth0
+ifconfig eth0 up
+ifconfig xenbr0 up
+ifconfig xenbr0 192.168.0.1
+# get domU console content into test log
+tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
+xl create /etc/xen/domU.cfg
 set +x
 until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
     sleep 1
@@ -46,6 +57,34 @@ done
 set -x
 echo \"${PASS_MSG}\"
 "
+    DOMU_CFG_EXTRA='
+vif = [ "bridge=xenbr0", ]
+disk = [ ]
+'
+elif [ "${TEST}" = "argo" ]
+then
+    PASS_MSG="TEST: Message from DOMU"
+    XEN_CMD_EXTRA="argo=1,mac-permissive=1"
+    DOMU_CMD="
+insmod /root/xen-argo.ko
+until false
+do
+  echo \"${PASS_MSG}\"
+  sleep 1
+done | argo-exec -p 28333 -d 0 -- /bin/echo
+"
+    DOM0_CMD="
+insmod /root/xen-argo.ko
+xl create /etc/xen/domU.cfg
+argo-exec -l -p 28333 -- /bin/echo
+"
+copy_dom0_files ()
+{
+    cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
+    cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
+    cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
+}
+copy_domU_files () { copy_dom0_files; }
 else
     fatal "Unknown test: ${TEST}"
 fi
@@ -54,18 +93,18 @@ fi
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir proc run srv sys
 rm var/run
 echo "#!/bin/sh
-
+set -x
+export LD_LIBRARY_PATH=/usr/local/lib
+PATH=/usr/local/bin:/usr/local/sbin:\$PATH
 ${DOMU_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 sed -i -e 's/^Welcome/domU \0/' etc/issue
+copy_domU_files
 find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
 cd ..
 rm -rf rootfs
@@ -74,37 +113,24 @@ rm -rf rootfs
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir boot
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir boot proc run srv sys
 rm var/run
 cp -ar ../binaries/dist/install/* .
 echo "#!/bin/bash
-
+set -x
 export LD_LIBRARY_PATH=/usr/local/lib
 bash /etc/init.d/xencommons start
-
-brctl addbr xenbr0
-brctl addif xenbr0 eth0
-ifconfig eth0 up
-ifconfig xenbr0 up
-ifconfig xenbr0 192.168.0.1
-
-# get domU console content into test log
-tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
-xl create /etc/xen/domU.cfg
 ${DOM0_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
-echo "${DOMU_CFG}" > etc/xen/domU.cfg
+echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
 echo "rc_verbose=yes" >> etc/rc.conf
 echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
 echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
 mkdir -p var/log/xen/console
 cp ../binaries/bzImage boot/vmlinuz
 cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
+copy_dom0_files
 find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
 cd ..

@@ -116,7 +142,7 @@ cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
 cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
 echo "
 net_default_server=10.0.6.1
-multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE}
+multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
 module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
 module2 (tftp)/${TEST_BOARD}/initrd-dom0
 boot
--
2.25.1


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 23:34:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 23:34:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827009.1241479 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ZFN-0007mB-Lj; Mon, 28 Oct 2024 23:34:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827009.1241479; Mon, 28 Oct 2024 23: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 1t5ZFN-0007m4-Io; Mon, 28 Oct 2024 23:34:05 +0000
Received: by outflank-mailman (input) for mailman id 827009;
 Mon, 28 Oct 2024 23:34: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=CE0l=RY=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t5ZFM-0007ly-HH
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 23:34:04 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1d10178f-9585-11ef-a0c2-8be0dac302b0;
 Tue, 29 Oct 2024 00:34:03 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id B3DA6A4038A;
 Mon, 28 Oct 2024 23:32:05 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D7B0FC4CEC3;
 Mon, 28 Oct 2024 23:34:00 +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: 1d10178f-9585-11ef-a0c2-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730158441;
	bh=uL4AuCHbWlMfq+I9KOrlwIo7FYzlQ3f2/Kr46ozgiQg=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=Iw+K9gl/IyZ5qzaHxxWIZhplW2xd4XxvQyiKCBbfORvFRKkHGhHmvinRQMNeTEXva
	 I9hOM6lZZAn4sgw8gKTMs+ttFW7lJghZi550ysl99NPt4m7SxhsNPpvWzMzgKzJzNN
	 RPvJ4knaS8yodM/6yKhTmEqSRm/avgK3b6XV6H6uwV2JYzetrR880wOjJ13Eq8Pr+Q
	 BUOnP2tGXnk0IffQ95Mg6xN2piN1PhtvvdXum42Z7HelDdMuQw6qMLbKyEtp87KnN9
	 +X1mLPAVDsenvOmcNaE/9TSbYx8gRVxpgC1IrFbmT/3qqAIm3psteVX5APnVq/xC4x
	 99Vy1CTTRFvYg==
Date: Mon, 28 Oct 2024 16:34:00 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jason Andryuk <jason.andryuk@amd.com>
cc: xen-devel@lists.xenproject.org, 
    Stefano Stabellini <stefano.stabellini@amd.com>, 
    Michal Orzel <michal.orzel@amd.com>
Subject: Re: [ImageBuilder] uboot-script-gen: Use split_value for memory
In-Reply-To: <20241028180644.2501-1-jason.andryuk@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410281633530.2525410@ubuntu-linux-20-04-desktop>
References: <20241028180644.2501-1-jason.andryuk@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 28 Oct 2024, Jason Andryuk wrote:
> Don't hardcode the first cell to 0 - use split_value to handle larger
> values properly.
> 
> Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
>  scripts/uboot-script-gen | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
> index f10e5f4..dcf5bdb 100755
> --- a/scripts/uboot-script-gen
> +++ b/scripts/uboot-script-gen
> @@ -174,7 +174,7 @@ function add_device_tree_mem()
>          memory=$((512 * 1024))
>      fi
>  
> -    dt_set "$path" "memory" "int" "0 $memory"
> +    dt_set "$path" "memory" "int" "$( split_value $memory )"
>  }
>  
>  function add_device_tree_static_mem()
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Mon Oct 28 23:42:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 23:42:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827014.1241489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ZNN-00010s-E9; Mon, 28 Oct 2024 23:42:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827014.1241489; Mon, 28 Oct 2024 23:42: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 1t5ZNN-00010l-B3; Mon, 28 Oct 2024 23:42:21 +0000
Received: by outflank-mailman (input) for mailman id 827014;
 Mon, 28 Oct 2024 23:42: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=VaPr=RY=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t5ZNL-00010f-NU
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 23:42:19 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20619.outbound.protection.outlook.com
 [2a01:111:f403:2409::619])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4470bf1b-9586-11ef-a0c2-8be0dac302b0;
 Tue, 29 Oct 2024 00:42:18 +0100 (CET)
Received: from SJ2PR12MB8876.namprd12.prod.outlook.com (2603:10b6:a03:539::18)
 by SJ2PR12MB8883.namprd12.prod.outlook.com (2603:10b6:a03:538::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.27; Mon, 28 Oct
 2024 23:42:12 +0000
Received: from SJ2PR12MB8876.namprd12.prod.outlook.com
 ([fe80::69d9:a014:7a29:de4a]) by SJ2PR12MB8876.namprd12.prod.outlook.com
 ([fe80::69d9:a014:7a29:de4a%4]) with mapi id 15.20.8093.024; Mon, 28 Oct 2024
 23:42: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: 4470bf1b-9586-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=zMazNoGSOdvZLuxd3emb31EXGGY2mDG22DDwHZYmXBQBxVcpmkKu3uWSUUEgbjpwgu1Mr4DiokCwGlTUdYYVJxwkYdhPRHCstlq7+IeK0yuqnc54IU2syXOU08D8AixDb9VBbP42+7GHCUZYHigUKzSuWUMO+rsW++GrjrQhGX4EZpMFzElCSc5Ysfw2GaSpaKfk37kWX4R7B69tOAPl7I3wEJ0l9/dhG9PakXbyPGoMrcIwamFVScnCp9uW0l/ByTF3bJXORqRghlbiYdJOOz1sL+3rv+xvlxzkWbKyCpnW8VSKoZymsNk+vIucAkOq7PrHPMVaDo7JHvoiwpOZJA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=So5MFSto4F/wdjoLJxH3oXJXdL9VeLuQd/7B8JJV67E=;
 b=En3fRtWqWhU9WTGFATtLwu8vSEyBVhG7cQYdGl9ot6lOb2flcTh7tBOA6rUTCsenbllCnnIz9EwTtv86GKyVS5GBdZHrQaNCnW+vfiEUKMElvIcEZ7UG8K4GnJ8Q3mIwYBfBnzx8biG+g5+9a8MhRRPPp/slCVBoAhwuqBvjAshQw/zHDP3PwHseGl0Q/IplgnBnZqr1V+3b1ZFvxpxjjryYyf1rrugbvmj+ho7+7+1KCZbdXRiKG6MsUB7rzddtrMYFBTVahvlH8j6KIkb5PxtZUqaHhwt6U0I+fuv+kEVzYFjoLZwm+rF7CDnWTetkKadieRRh51mFvarNsMPcTQ==
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=So5MFSto4F/wdjoLJxH3oXJXdL9VeLuQd/7B8JJV67E=;
 b=vlOipP64hln+bevllZtYbz/ssAycm96RV2UCHtpkBwEt2MKj3lav2TtUBo7NAJFRFveb2gPp8v51RF3FRzOej5Wijm8T1TdhOW4mK22ckpG4UreDqH+tpVjDQLse1Tp2zJtcR1LGGNjgKb21gHhzdTqhAWVu9kFE4M4+bIiaJOM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <43ef31aa-15d6-434f-82e6-dc88c2e89309@amd.com>
Date: Mon, 28 Oct 2024 16:42:11 -0700
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2] automation: add x86_64 test (linux argo)
To: xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Doug Goldstein <cardoe@cardoe.com>
References: <379776d8c059d457a3be03e7701f24dc4f8bda81.1730155685.git.victorm.lira@amd.com>
Content-Language: en-US
From: "Lira, Victor M" <VictorM.Lira@amd.com>
In-Reply-To: <379776d8c059d457a3be03e7701f24dc4f8bda81.1730155685.git.victorm.lira@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-ClientProxiedBy: SJ0PR13CA0172.namprd13.prod.outlook.com
 (2603:10b6:a03:2c7::27) To SJ2PR12MB8876.namprd12.prod.outlook.com
 (2603:10b6:a03:539::18)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8876:EE_|SJ2PR12MB8883:EE_
X-MS-Office365-Filtering-Correlation-Id: 196d226c-8e08-41ab-5108-08dcf7aa2573
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?anViUmY1L0tXOFFaZ2JKSTd5QTBqN0sxa1gvUHBZc2hnVEMzU1NPbm84Si9Q?=
 =?utf-8?B?dDRTM21TZ1ppNy84dFY2NEF1bE5pSTZqWXJVZE5MNG5oZ3VaTmc4M1FrRFkr?=
 =?utf-8?B?WXBGRW5xNEE1ZlhzWlVBOEFkVHhYVWYybkhTbWdTRnkxWURmaHZDRkovaXJx?=
 =?utf-8?B?OEt6L0x6MWh5SkFTZm1IbWJwbEFBRSt6R05RN25LMDNVVGVYMTBLTy9WV2wx?=
 =?utf-8?B?RkUyUHVoaEJNZVUyTXN0b2RhUFgvSHlBT05GdWQ0cFIzRDlqa0JoajhXdnVl?=
 =?utf-8?B?NUQ1U0NjSmZ4Yk12SzNLbE90RXJwVUJnKy9GaDRxVE45dzlaQm00M1M5UmU5?=
 =?utf-8?B?NUdhRDYzemJLRGoxTWlhdGFHZ2w3ZS9SWXEzTmI5Q2I0SHFEZWZBYm45VUZT?=
 =?utf-8?B?anNiRFlTbFpRbFNvQTNvd0MwWGNWWlg0VWdNRFpXTmJuVVY1N0g5SXVHZ0FV?=
 =?utf-8?B?aWMybDh1VkpxQ2lWQVpOaEl0VlQvSWRPK2lGQituVmZoNEZlcU1pQnhVbGxD?=
 =?utf-8?B?SDEzK3NUWXlJL2s2WEN3d0RjdVZiOHFGcEI5L2src3c0eTVGbXJKdGhUVi9P?=
 =?utf-8?B?cmZ6R1N6K1JNTk5GTCtPT05aQ29DaVdjNWJkTWk1dGMvZUtrS1d3cGpXQnN4?=
 =?utf-8?B?R2J0NGdoVWR0MnVGcGRGeFJDTklEVzdVdnJaWnQ4MjEvd1BjT0JqQi80S1lI?=
 =?utf-8?B?djlyQzFGWE5iaC9HMXZXN01CZmxsM2IxQms4MXF2UWNacHJjcm1PZnRJN2Zk?=
 =?utf-8?B?d1dTdHUyd2oyclVyenRhYzREa3lJWmRZZHBJVEh3ZjhrLzQ2QVR1M24vMEd2?=
 =?utf-8?B?QnRjditKS0dKQlJ0K2ZrQ3V5YnQyR25RVHIvVE5Ya25IYzNaUWRNZWgzVm9p?=
 =?utf-8?B?Y2NmT1RaSkJhdmVJakljN21QUDA1SjVmUU1oWTd2UWV4UEpkTTkySE5ZcWJn?=
 =?utf-8?B?VGxFdDdueHpFc0xqbjhTNGg2eUZmOWFUd3JrbjhBTlp5aG8xd0k1RWpnV2o3?=
 =?utf-8?B?MWpkU0g2QXQ0Zmc5NDBibUdhUjFrWlRqWTBGUHlhTmZtd3c4L0xnbFo4Vk5t?=
 =?utf-8?B?bERuejZvUEFCQ3VWSnYydkVscUxSRkdtakVIT1Z2SGI2aUdBZnJrOWZ6TGti?=
 =?utf-8?B?SjdFaDZTSHJpdGY1eEE1dGR2RmtYVE5SemtwRGNLbGJNR3E2WVFHZjZTZlF1?=
 =?utf-8?B?ZnhOdzkrYjg2ZllCd0EraVNZck5tL1BLbGJqRnBuUlo5eWFwT3lobUo2WUxt?=
 =?utf-8?B?UFBqSmpIbHZjTGxTK3c4YjhZSWVzTXpLYXEwNWp0NENZZ2M3YjdUeWQxNzVz?=
 =?utf-8?B?WTZPSEtrM2R2NTVidEVsSGVWekFoRDVESlBrT0IxU0MzTVI4VXRlUzZ1MzU3?=
 =?utf-8?B?MnJ0RUFIVE03S1Y2UythT0M3R0lKaEszamU4UXhVT3pvdkhEV0VUdTVvanFu?=
 =?utf-8?B?UG5zMTFzQ0xSWjVybTZoY2tvcnh1Mi96Y2JFaUlvZFFrbXlSOVVuVDQ5KzZ5?=
 =?utf-8?B?czBuNjM5MU9CczQ3L1VkYzZrUS9hUWlnVEEwSisxczRJZUFqdGN2MG5NaWJL?=
 =?utf-8?B?ZlM2ODBWZ1RRLzliSXo2Qy9abE5OSnFHMTYzYVRzdUwydVpWNkt0cWV6WnRu?=
 =?utf-8?B?L0JVWkF2VzRDSDJ0bHovTkU4dklmSlZEV0xSbDJENTJwT1ExdUZpOHpIVmlp?=
 =?utf-8?B?UC9XRzhNQW1TTVhYcWNMUklRNVozNTZHSy96K29pUjNGaXpCWFFGalhMZkNZ?=
 =?utf-8?Q?ETrBLpOryqYSnzcvq2v4qu8Bg9k5MkA0WGwrcmh?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8876.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RWQwdzloUEtUQ3BWbW1MMDN5WDlEbkhCV0hIenpLejVSUXdsODlZT29lSDZY?=
 =?utf-8?B?cm5BQktYMmozK291TWF6ZXRzWUx3VVdodXRQV3F0eFFzN1cwY2ZpVC9Ob2Fv?=
 =?utf-8?B?VzF6MFA2cjBEdTBpbC9OcTlGTld5UTIybmdhU2RUaXc0WWJrY3NrOG85RnlB?=
 =?utf-8?B?ZEVnUjZWREdJQkVXTU9yZ3prRG1JNytmaG8wQ1M2N2E5YzZWKzUwMTRvTnMv?=
 =?utf-8?B?SzNpUk02WUVheGd1VU10U1BMNk9hcGNJdFMvMlVSVEpBZnpQR3pjMGVwbkV1?=
 =?utf-8?B?ZEhxMlZqaDdQY1pVMCs1YzZLVkVHcFNOb3E4dUhXV3BTTmZMdm94UFBvVTVL?=
 =?utf-8?B?ZW9ENHBjWDdkZWo4RGVLSzRmM25DZHJhc0JtcWZOcDc0Slc3RmdGOFNpUEtB?=
 =?utf-8?B?T3NISXlaNnNEQkVibDB5VHBHSlNMYkptbVg3dGdkSmVkQ1FqbzFabmxLa1kr?=
 =?utf-8?B?bC8rV0dGbVhwcVZhUzljekM2aTcxamc4eEk0WklLaFZ5QXlTY3ZzYmxhdi9B?=
 =?utf-8?B?a3ltZElWRVkzb0xrWGpGMXF3WnBNclpxY2t3ajdqSFBoM1h4cWpOdlc5RVFJ?=
 =?utf-8?B?NHdMZDBtUkViWnRYQk5sS2duWHB4R2w0ZVlnaVVDSVlLQmVvMzhvY1JzNVlQ?=
 =?utf-8?B?aHFjR3FmNlBCbURxMC90a3ZwWjUrSnlvdWN5T0JJUmJ3cExrbTVoYVFXWDdI?=
 =?utf-8?B?Q2RwR2RiaENrNzFxV2Q0cUVENzlVemhRKzdOQmJUQTF2TlhiT01rV20vTXln?=
 =?utf-8?B?QzNZMHNuVS95WVFIQy9zTEgyaVJRVllDOXNXdUNyeThqWElQTndrckNJNUFn?=
 =?utf-8?B?d0R3TzBxTUQrcnowTko2NDI3UDdwVS9KUlcyV0RmNXpmazFhcjZocDd1RXBx?=
 =?utf-8?B?UVVwMGpFYVdrdkJJQlJMdnZpbzZpeG13RkNqSHErSHFFOVFJN1RNdmExK3pj?=
 =?utf-8?B?OGFveExMcmNROXBtRlJyWnlwZnZGZ2ppTjhtcjVkOUpabWw4bWs5WUE5eW5v?=
 =?utf-8?B?VGpZNHNMcVhBOEVXSmkrWlB5VnpzUE0xREM3dDNMa3hoOEdRamR5WU92Nkcr?=
 =?utf-8?B?TTZqN0tCRUROOGZ5WEFHaDc4UDhSWmlDUml4UkZCWEwrZEtRMUFkcHk2NkZC?=
 =?utf-8?B?aGtJcXVEdDFBUVFNd01SSXQ1cXg1OUJPUEhZcmxQVFIra0RDeXZrTlo1NDNW?=
 =?utf-8?B?ajYvYWRFVXJWS3NIR1dNUFBOWnRSeDZQSUFQN2Fib0c3clBKRDBLdnZrR3R3?=
 =?utf-8?B?ZCtSQis2WUJjb3Y3RmpPQXk4ekNBbGhVaUxGT3RvbUZpRFdjWGFUZjZKcURl?=
 =?utf-8?B?WXBSYWhhNll6WUI4clZTVzhoTkJjUGltY2ZSc2xmaEszZkd0NHhZa2RDRGIy?=
 =?utf-8?B?Uk1QUWwxeTRmcVRYQktmWTVjQ3lmNW1XTE4xVDJJbW44clZvK1BxUmlFV0Jy?=
 =?utf-8?B?UkI0b1RFTFRKMkIzekZ3ZG11Y2pRUXhGdFpJVURqR29lUHQ2bFFVeGxndzU3?=
 =?utf-8?B?UG1VamovNi84R3JDVmZlMllnNlZsNVNSLzFXejBCdElpdXM1Q1dqMnpqdERS?=
 =?utf-8?B?cmJWY28rMy9sdWxOR1VlZjJRNUFJdUttNGpuTThYSGVKZ0VOUmJoa1lud3VB?=
 =?utf-8?B?ckcxMWhHWFdYQzczSS9RZythaDg1bEJlcDJLVjd2dDl0T2NtbkV2bFpyajZJ?=
 =?utf-8?B?bmtDU2lyeVlvV2tHNDI1Z1d1RTQxZXFpelhrN1pOcjRxa1FPeDk5WGg5bkto?=
 =?utf-8?B?NHpZUUx6NkovV3JJeUcrbWRGeWx1MS9LSmY3eURkWmFBS0RDaGFNckxGT042?=
 =?utf-8?B?cUlZclNuMGxtdlJUak83aXpTang2S01Vck1rbG03TmRoTWNlTzZ1dWg4UGhu?=
 =?utf-8?B?dk0xTG1wTGZpbjBadGZhSzJQTG5pb1JtQUU4M20wRVhwZ1R2ZXV2ckhCdkRi?=
 =?utf-8?B?dXQxZXo4TTFOK2JuYm5hUVl2MnlQaGtJMlhtU0U5N0hxNUhMTVNzbllQd1Rh?=
 =?utf-8?B?NTF0a1BPTERhZXQ4VFBkSGwyNjkrejI3MUtlT1QxV1I5ajN4NFNwTDFINXpl?=
 =?utf-8?B?eExDR1VwNS9tMldRMllBZ1pWN0IrZSt4ME1iNXg5a0FDN0g3cTNuVHhhU3J3?=
 =?utf-8?Q?uU4kUfWWMgd5XORPj1EbKJn14?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 196d226c-8e08-41ab-5108-08dcf7aa2573
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8876.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 23:42:12.5825
 (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: wRzeDklfJLQav8NnTbxz2UCfzKl0CVGVgADdEQQubTxrzbb/xq5GbCG2qyVB73W8IW6WNFQv+qz8wdm/Zf/w3g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8883

Hello in this patch I have removed CONFIG_UNSUPPORTED=y from Xen build 
but this now causes the test to fail.
I guess all three are needed: CONFIG_EXPERT=y, CONFIG_UNSUPPORTED=y, 
CONFIG_ARGO=y

I will send out a new patch with the issue fixed shortly.

Victor




From xen-devel-bounces@lists.xenproject.org Mon Oct 28 23:56:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 28 Oct 2024 23:56:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827022.1241499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5Zal-0002sl-NT; Mon, 28 Oct 2024 23:56:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827022.1241499; Mon, 28 Oct 2024 23:56: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 1t5Zal-0002se-Jh; Mon, 28 Oct 2024 23:56:11 +0000
Received: by outflank-mailman (input) for mailman id 827022;
 Mon, 28 Oct 2024 23:56: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=VaPr=RY=amd.com=VictorM.Lira@srs-se1.protection.inumbo.net>)
 id 1t5Zak-0002sY-PU
 for xen-devel@lists.xenproject.org; Mon, 28 Oct 2024 23:56:10 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on2061e.outbound.protection.outlook.com
 [2a01:111:f403:2417::61e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 333546a1-9588-11ef-a0c2-8be0dac302b0;
 Tue, 29 Oct 2024 00:56:09 +0100 (CET)
Received: from MW4PR03CA0292.namprd03.prod.outlook.com (2603:10b6:303:b5::27)
 by SA0PR12MB7074.namprd12.prod.outlook.com (2603:10b6:806:2d5::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.25; Mon, 28 Oct
 2024 23:56:04 +0000
Received: from SJ5PEPF000001EC.namprd05.prod.outlook.com
 (2603:10b6:303:b5:cafe::e0) by MW4PR03CA0292.outlook.office365.com
 (2603:10b6:303:b5::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.26 via Frontend
 Transport; Mon, 28 Oct 2024 23:56:04 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001EC.mail.protection.outlook.com (10.167.242.200) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8114.16 via Frontend Transport; Mon, 28 Oct 2024 23:56: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.39; Mon, 28 Oct
 2024 18:56:03 -0500
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.39; Mon, 28 Oct
 2024 18:56:03 -0500
Received: from xsjwoods50.xilinx.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.39 via Frontend
 Transport; Mon, 28 Oct 2024 18:56:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 333546a1-9588-11ef-a0c2-8be0dac302b0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=zWn0rpK3uan6G38113i16Rq710G/9BfZ1BM2i4Wzqi8rGjrEm/nVo58jKEHoBFaeFnKm6fHsmoA/SnINPI/ZCCAowfkMH0yDQfytaYzE00CxTRLJpA0QMf+C0Dx+ScMs4Fba+A54uzKJXLqNWQvNxW1ltjkxTFuVlhGfLElaS19U4TPlaROuprKTUcnRhb1vNnjbRM36VjEOhLiRAzGhg+2TtOCfsxwrYMD2yiR1lJwijrRxEzcxNyxDsd0eQF/F8NyM90fcdCjGCAUpPDIscCPRTqEp7CNg4A2ZOVMs4svyRgkWXwGBDiY0LHiq1PsFo7q2QVwcPOnCRMhh3ekQ3A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=X+DL/Wrrq0G4yiAtlFhrGdcqSDgNOASsVVEneJ3JSYA=;
 b=c7r38SCcE1BrnvPHele64avKab1xkjCj0plYSNqDqq52V3tlgZ7Yq8lbiqo1+F46Qu2K0Fq1udnF9hNZZyZrOI24y+NmqoWx+2RNvFn4LK+aIEse/iBXFXAEPrUnF46QyGVMjNsURxrQ0oG3HRCnQOvuD02eFuA94Teg3sny8gRTXSaEZ8mjw3Utm8VcznF0rOP5wTXx9wB2MqNN5Qs050mDf32sGxo0dHLvr86Q9ldLtiEn/3GU6OdjsovkyqRCUJ3QwjgAiGsrn10BsjojpG/YsyAf8vMSqFbYlpn0hDNNL87D66UjtMENRN5q8G1xP3eP2SlgjIlOp5MlIq8CDw==
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=X+DL/Wrrq0G4yiAtlFhrGdcqSDgNOASsVVEneJ3JSYA=;
 b=BcwfuvR1cVaWEmN968+4xe1AVI8F6+RfkoPzx8ml6sA5ThjL7Ng5WI/ChtwXfSoCWUpHYp5KR4CqkllMHf+BH7jjJq+8DChYhISA5IBPW21Ey8/LOPNYaRvDnJejgtNctVIH0bKrSr8q+pdZKGX2fXBGDJ+8w5psSaGSNa82AbA=
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: <victorm.lira@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Victor Lira <victorm.lira@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Doug Goldstein <cardoe@cardoe.com>
Subject: [XEN PATCH v3] automation: add x86_64 test (linux argo)
Date: Mon, 28 Oct 2024 16:55:35 -0700
Message-ID: <d477c784381a5bee7a81cdb596eed7dab353ac5c.1730158540.git.victorm.lira@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <43ef31aa-15d6-434f-82e6-dc88c2e89309@amd.com>
References: <43ef31aa-15d6-434f-82e6-dc88c2e89309@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Received-SPF: None (SATLEXMB05.amd.com: victorm.lira@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001EC:EE_|SA0PR12MB7074:EE_
X-MS-Office365-Filtering-Correlation-Id: 0ff981ab-be8f-4433-e93f-08dcf7ac1548
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?us-ascii?Q?w3AoCniB8v9Tdi7o2CDhyLCeghFYRDopwVUXTZcG0gfgh+FvM6j9loezOSuX?=
 =?us-ascii?Q?/J1MFyIDWE9hbJO3fPpN84BS0TxUiOhWP6YtFRPgSMLnPzqN4ZRNJyrFJrmN?=
 =?us-ascii?Q?6j4jxVg7S2aN25xY/uuIfrc0l6hIErRnvlM0tl+wJxq3aNvmrbB/9u6i3pGX?=
 =?us-ascii?Q?5kCHopy5Q7UKeYWRZNR5wMF8jKVYlu95TqnW+jv6PsrHXFcabXy5sjhJS58w?=
 =?us-ascii?Q?chQbAcuLQEz5frhFAsqlN/v1P77ZBZZjGDONOL6rpzeNbyZ6FvriZxNZZl6n?=
 =?us-ascii?Q?UTWyBnVpBDtwBYMntXXhkxj6AZHF2rFhV0nU8OTYp4PUvxE0paOlHwbpIfDA?=
 =?us-ascii?Q?n2RZ/ERDbrC1A9mtO91pmGwPDvIF1uqsR9gKA/WDQs4I7dWz43B47bw/06QO?=
 =?us-ascii?Q?4qpVumZGa0xtuwrkL3qDUn1yiKdJOrh9ORy47sbF+VigRt05WZTR+hUsbRkm?=
 =?us-ascii?Q?ynykm1mlwYEJ8fwunMSWRgNrUZ6llCWsX12JRL7bKVzGZQudIn0tn2DwBxJ3?=
 =?us-ascii?Q?Zospa266/wJzIBcrDRfCqHpVh4D6PUkgwJG7yQDnGn2kTMIg47A5WLCyKWQL?=
 =?us-ascii?Q?k6JPcWe1QXhYjfmPYa04+7Fnq7zfcA9hkx4ax+BXHBRuz6Tzq07aN1UJSbB6?=
 =?us-ascii?Q?YZGQdkIGvStJVO8+rfm2dmaCw8IRippVdZm3gdsO3Hpr9xZ/9fTDcQLP8+kB?=
 =?us-ascii?Q?BuYpmj9TKrZoUoOrljJME2GtiS2XUaGrOJYq81/ooXWyFEoYyelse5lzYq/u?=
 =?us-ascii?Q?kAou5JyNq+sG+4bI2VO9aAM3OEPBVuuz9qiAd2u7PypeuYOLhxMTTsggeiQa?=
 =?us-ascii?Q?XM67g/MicJ767q+ScfoQ+in5fvM71J0lsYggkmdTHR7XRqCFOxmoO6Qp1DWh?=
 =?us-ascii?Q?CoDvSVV0vf3Re3aAj8QQUPM9xmn+XXwaaOkg1zo8Ef3Z47Z3DmJJF1uh1Eko?=
 =?us-ascii?Q?BZu5ncfB8vgBrUs5ePk5eqRlBp4JzSKc3Th3Ue01MnfXBDhCPVeupOYO+6iv?=
 =?us-ascii?Q?WtdpgstJc6eLoNXBIAVVKQUhTqtklsmnEOgj6jfRlc5f+JKG9TchxumGXkme?=
 =?us-ascii?Q?+XNMBO046xUcjLxGSzDphM5CCoIw1PDw6Ri+zniDq9oD4IdpN7qzldjDzXiE?=
 =?us-ascii?Q?Y7Ia7fH96juthNqX/B71xMw5bSYIeiiDjKB2GbgiYyok/6bZDjlxUCRq9g5t?=
 =?us-ascii?Q?1CWB8Ywpg7dWS7TCGTCGlKaiuLlxJ3u8olvew9BWqsgjZYu/+6JLhcisMx9V?=
 =?us-ascii?Q?Dc/Y+QaaRA3678WpcIHz8JPyitQztNMtE7Okj8dO89pX62xTVr6yK3lyiW3/?=
 =?us-ascii?Q?ejHJhlfepnrUGlg3JQkH756vEBfqoEsg0tbm0Jrx2YWfk5zKakuYPPpwuU4n?=
 =?us-ascii?Q?cVWWhByg8ueX0M7LakgImnaB26+Cimfj1hoJZoed9UQ2Fjgt9w=3D=3D?=
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:(13230040)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Oct 2024 23:56:04.1740
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0ff981ab-be8f-4433-e93f-08dcf7ac1548
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:
	SJ5PEPF000001EC.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB7074

From: Victor Lira <victorm.lira@amd.com>

Add x86_64 hardware test that creates a Xen Argo communication
connection between two PVH domains. In the test, dom0 creates a domU and
listens for messages sent by the domU through Argo.

To accomplish this, build Xen with CONFIG_ARGO=y and create a CI test job.

Update the xilinx x86_64 test script to support the new test, and add
"sync_console" to command line to avoid an issue with console messages
being lost.

Requested-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Victor Lira <victorm.lira@amd.com>
---
Changes v2:
- update test job to use binaries from "test-artifacts" repository
- add argo config to existing alpine build instead of separate job
Changes v3:
- add back CONFIG_UNSUPPORTED=y
---
Cc: Doug Goldstein <cardoe@cardoe.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
---
 automation/gitlab-ci/build.yaml               |  4 +
 automation/gitlab-ci/test.yaml                | 16 ++++
 .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 +++++++++++++------
 3 files changed, 71 insertions(+), 25 deletions(-)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 09dd9e6ccb..af2b1ceba3 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -340,6 +340,10 @@ alpine-3.18-gcc-debug:
   variables:
     CONTAINER: alpine:3.18
     BUILD_QEMU_XEN: y
+    EXTRA_XEN_CONFIG: |
+      CONFIG_EXPERT=y
+      CONFIG_UNSUPPORTED=y
+      CONFIG_ARGO=y

 debian-bookworm-gcc-debug:
   extends: .gcc-x86-64-build-debug
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index e76a37bef3..e8f57e87bd 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -192,6 +192,22 @@ xilinx-smoke-dom0-x86_64-gcc-debug:
     - *x86-64-test-needs
     - alpine-3.18-gcc-debug

+xilinx-smoke-dom0-x86_64-gcc-debug-argo:
+  extends: .xilinx-x86_64
+  script:
+    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
+  needs:
+    - alpine-3.18-gcc-debug
+    - project: xen-project/hardware/test-artifacts
+      job: x86_64-kernel-linux-6.6.56
+      ref: master
+    - project: xen-project/hardware/test-artifacts
+      job: x86_64-rootfs-alpine-3.18
+      ref: master
+    - project: xen-project/hardware/test-artifacts
+      job: x86_64-argo-linux-6.6.56
+      ref: master
+
 adl-smoke-x86-64-gcc-debug:
   extends: .adl-x86-64
   script:
diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
index 7027f083ba..f70cfdc155 100755
--- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
+++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
@@ -9,6 +9,8 @@ fatal() {
     exit 1
 }

+WORKDIR="${PWD}"
+
 # Test parameter defaults.
 TEST="$1"
 PASS_MSG="Test passed: ${TEST}"
@@ -24,9 +26,10 @@ kernel = "/boot/vmlinuz"
 ramdisk = "/boot/initrd-domU"
 extra = "root=/dev/ram0 console=hvc0"
 memory = 512
-vif = [ "bridge=xenbr0", ]
-disk = [ ]
 '
+DOMU_CFG_EXTRA=""
+copy_domU_files () { :; }
+copy_dom0_files () { :; }

 # Select test variant.
 if [ "${TEST}" = "ping" ]; then
@@ -39,6 +42,14 @@ done
 echo \"${DOMU_MSG}\"
 "
     DOM0_CMD="
+brctl addbr xenbr0
+brctl addif xenbr0 eth0
+ifconfig eth0 up
+ifconfig xenbr0 up
+ifconfig xenbr0 192.168.0.1
+# get domU console content into test log
+tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
+xl create /etc/xen/domU.cfg
 set +x
 until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
     sleep 1
@@ -46,6 +57,34 @@ done
 set -x
 echo \"${PASS_MSG}\"
 "
+    DOMU_CFG_EXTRA='
+vif = [ "bridge=xenbr0", ]
+disk = [ ]
+'
+elif [ "${TEST}" = "argo" ]
+then
+    PASS_MSG="TEST: Message from DOMU"
+    XEN_CMD_EXTRA="argo=1,mac-permissive=1"
+    DOMU_CMD="
+insmod /root/xen-argo.ko
+until false
+do
+  echo \"${PASS_MSG}\"
+  sleep 1
+done | argo-exec -p 28333 -d 0 -- /bin/echo
+"
+    DOM0_CMD="
+insmod /root/xen-argo.ko
+xl create /etc/xen/domU.cfg
+argo-exec -l -p 28333 -- /bin/echo
+"
+copy_dom0_files ()
+{
+    cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
+    cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
+    cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
+}
+copy_domU_files () { copy_dom0_files; }
 else
     fatal "Unknown test: ${TEST}"
 fi
@@ -54,18 +93,18 @@ fi
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir proc run srv sys
 rm var/run
 echo "#!/bin/sh
-
+set -x
+export LD_LIBRARY_PATH=/usr/local/lib
+PATH=/usr/local/bin:/usr/local/sbin:\$PATH
 ${DOMU_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 sed -i -e 's/^Welcome/domU \0/' etc/issue
+copy_domU_files
 find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
 cd ..
 rm -rf rootfs
@@ -74,37 +113,24 @@ rm -rf rootfs
 mkdir -p rootfs
 cd rootfs
 tar xzf ../binaries/initrd.tar.gz
-mkdir boot
-mkdir proc
-mkdir run
-mkdir srv
-mkdir sys
+mkdir boot proc run srv sys
 rm var/run
 cp -ar ../binaries/dist/install/* .
 echo "#!/bin/bash
-
+set -x
 export LD_LIBRARY_PATH=/usr/local/lib
 bash /etc/init.d/xencommons start
-
-brctl addbr xenbr0
-brctl addif xenbr0 eth0
-ifconfig eth0 up
-ifconfig xenbr0 up
-ifconfig xenbr0 192.168.0.1
-
-# get domU console content into test log
-tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
-xl create /etc/xen/domU.cfg
 ${DOM0_CMD}
 " > etc/local.d/xen.start
 chmod +x etc/local.d/xen.start
-echo "${DOMU_CFG}" > etc/xen/domU.cfg
+echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
 echo "rc_verbose=yes" >> etc/rc.conf
 echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
 echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
 mkdir -p var/log/xen/console
 cp ../binaries/bzImage boot/vmlinuz
 cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
+copy_dom0_files
 find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
 cd ..

@@ -116,7 +142,7 @@ cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
 cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
 echo "
 net_default_server=10.0.6.1
-multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE}
+multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
 module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
 module2 (tftp)/${TEST_BOARD}/initrd-dom0
 boot
--
2.25.1


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 01:09:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 01:09:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827035.1241508 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ajt-0003WZ-FY; Tue, 29 Oct 2024 01:09:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827035.1241508; Tue, 29 Oct 2024 01:09: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 1t5ajt-0003WS-Cx; Tue, 29 Oct 2024 01:09:41 +0000
Received: by outflank-mailman (input) for mailman id 827035;
 Tue, 29 Oct 2024 01:09: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=/BZl=RZ=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t5ajt-0003WM-2O
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 01:09:41 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 77c00bae-9592-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 02:09:38 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 19853A404BE;
 Tue, 29 Oct 2024 01:07:41 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2EE46C4CEC3;
 Tue, 29 Oct 2024 01:09: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: 77c00bae-9592-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730164176;
	bh=DKBbgUDxCNudgwRjkNKjWbJCtMVOK4dFvHqCcFJOJs0=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=d8Axm1gXkJnpqWqwvijk3nORngPA0aqNpKOyurH9yAxKz8jcIKe10birG63SGB/b1
	 PEiIRNDSxY/y8yhoWPi9LzyahxZ2S/aY7uC9woy89cv8ry3tD6uGYpFqV9rhz6Uzpy
	 JKx9qQ6N62YB8+BevBRDZ/Jb3oe5W1UEH0Fw7VqYQYzJmNuzTbzp3ucuzx9voGM7ke
	 ickRGKdT4h+bSXmoyx/i6gtuLIRCf0IwGXv20HQarFoW0RqQF8fKI44oQG2oWDB856
	 Xzk7tc/7tLe1WJaDEMqU5Ks9VjZ1OH2aDIH2WxodOYqLrtEFvbP+Drd08le1ZR/D3M
	 SF9HbfbO8XhAg==
Date: Mon, 28 Oct 2024 18:09:35 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Victor Lira <victorm.lira@amd.com>
cc: xen-devel@lists.xenproject.org, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [XEN PATCH v3] automation: add x86_64 test (linux argo)
In-Reply-To: <d477c784381a5bee7a81cdb596eed7dab353ac5c.1730158540.git.victorm.lira@amd.com>
Message-ID: <alpine.DEB.2.22.394.2410281808570.2525410@ubuntu-linux-20-04-desktop>
References: <43ef31aa-15d6-434f-82e6-dc88c2e89309@amd.com> <d477c784381a5bee7a81cdb596eed7dab353ac5c.1730158540.git.victorm.lira@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Mon, 28 Oct 2024, victorm.lira@amd.com wrote:
> From: Victor Lira <victorm.lira@amd.com>
> 
> Add x86_64 hardware test that creates a Xen Argo communication
> connection between two PVH domains. In the test, dom0 creates a domU and
> listens for messages sent by the domU through Argo.
> 
> To accomplish this, build Xen with CONFIG_ARGO=y and create a CI test job.
> 
> Update the xilinx x86_64 test script to support the new test, and add
> "sync_console" to command line to avoid an issue with console messages
> being lost.
> 
> Requested-by: Stefano Stabellini <sstabellini@kernel.org>
> Signed-off-by: Victor Lira <victorm.lira@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> Changes v2:
> - update test job to use binaries from "test-artifacts" repository
> - add argo config to existing alpine build instead of separate job
> Changes v3:
> - add back CONFIG_UNSUPPORTED=y
> ---
> Cc: Doug Goldstein <cardoe@cardoe.com>
> Cc: Stefano Stabellini <sstabellini@kernel.org>
> Cc: xen-devel@lists.xenproject.org
> ---
>  automation/gitlab-ci/build.yaml               |  4 +
>  automation/gitlab-ci/test.yaml                | 16 ++++
>  .../scripts/xilinx-smoke-dom0-x86_64.sh       | 76 +++++++++++++------
>  3 files changed, 71 insertions(+), 25 deletions(-)
> 
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> index 09dd9e6ccb..af2b1ceba3 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -340,6 +340,10 @@ alpine-3.18-gcc-debug:
>    variables:
>      CONTAINER: alpine:3.18
>      BUILD_QEMU_XEN: y
> +    EXTRA_XEN_CONFIG: |
> +      CONFIG_EXPERT=y
> +      CONFIG_UNSUPPORTED=y
> +      CONFIG_ARGO=y

Given that this is "alpine-3.18-gcc-debug" stress on -debug I think this
is OK. It would also be OK to create a separate new job.


>  debian-bookworm-gcc-debug:
>    extends: .gcc-x86-64-build-debug
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index e76a37bef3..e8f57e87bd 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -192,6 +192,22 @@ xilinx-smoke-dom0-x86_64-gcc-debug:
>      - *x86-64-test-needs
>      - alpine-3.18-gcc-debug
> 
> +xilinx-smoke-dom0-x86_64-gcc-debug-argo:
> +  extends: .xilinx-x86_64
> +  script:
> +    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
> +  needs:
> +    - alpine-3.18-gcc-debug
> +    - project: xen-project/hardware/test-artifacts
> +      job: x86_64-kernel-linux-6.6.56
> +      ref: master
> +    - project: xen-project/hardware/test-artifacts
> +      job: x86_64-rootfs-alpine-3.18
> +      ref: master
> +    - project: xen-project/hardware/test-artifacts
> +      job: x86_64-argo-linux-6.6.56
> +      ref: master
> +
>  adl-smoke-x86-64-gcc-debug:
>    extends: .adl-x86-64
>    script:
> diff --git a/automation/scripts/xilinx-smoke-dom0-x86_64.sh b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> index 7027f083ba..f70cfdc155 100755
> --- a/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> +++ b/automation/scripts/xilinx-smoke-dom0-x86_64.sh
> @@ -9,6 +9,8 @@ fatal() {
>      exit 1
>  }
> 
> +WORKDIR="${PWD}"
> +
>  # Test parameter defaults.
>  TEST="$1"
>  PASS_MSG="Test passed: ${TEST}"
> @@ -24,9 +26,10 @@ kernel = "/boot/vmlinuz"
>  ramdisk = "/boot/initrd-domU"
>  extra = "root=/dev/ram0 console=hvc0"
>  memory = 512
> -vif = [ "bridge=xenbr0", ]
> -disk = [ ]
>  '
> +DOMU_CFG_EXTRA=""
> +copy_domU_files () { :; }
> +copy_dom0_files () { :; }
> 
>  # Select test variant.
>  if [ "${TEST}" = "ping" ]; then
> @@ -39,6 +42,14 @@ done
>  echo \"${DOMU_MSG}\"
>  "
>      DOM0_CMD="
> +brctl addbr xenbr0
> +brctl addif xenbr0 eth0
> +ifconfig eth0 up
> +ifconfig xenbr0 up
> +ifconfig xenbr0 192.168.0.1
> +# get domU console content into test log
> +tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
> +xl create /etc/xen/domU.cfg
>  set +x
>  until grep -q \"${DOMU_MSG}\" /var/log/xen/console/guest-domU.log; do
>      sleep 1
> @@ -46,6 +57,34 @@ done
>  set -x
>  echo \"${PASS_MSG}\"
>  "
> +    DOMU_CFG_EXTRA='
> +vif = [ "bridge=xenbr0", ]
> +disk = [ ]
> +'
> +elif [ "${TEST}" = "argo" ]
> +then
> +    PASS_MSG="TEST: Message from DOMU"
> +    XEN_CMD_EXTRA="argo=1,mac-permissive=1"
> +    DOMU_CMD="
> +insmod /root/xen-argo.ko
> +until false
> +do
> +  echo \"${PASS_MSG}\"
> +  sleep 1
> +done | argo-exec -p 28333 -d 0 -- /bin/echo
> +"
> +    DOM0_CMD="
> +insmod /root/xen-argo.ko
> +xl create /etc/xen/domU.cfg
> +argo-exec -l -p 28333 -- /bin/echo
> +"
> +copy_dom0_files ()
> +{
> +    cp "${WORKDIR}/binaries/xen-argo.ko" "root/"
> +    cp -ar "${WORKDIR}/binaries/lib/"* "usr/local/lib/"
> +    cp "${WORKDIR}/binaries/argo-exec" "usr/local/bin/"
> +}
> +copy_domU_files () { copy_dom0_files; }
>  else
>      fatal "Unknown test: ${TEST}"
>  fi
> @@ -54,18 +93,18 @@ fi
>  mkdir -p rootfs
>  cd rootfs
>  tar xzf ../binaries/initrd.tar.gz
> -mkdir proc
> -mkdir run
> -mkdir srv
> -mkdir sys
> +mkdir proc run srv sys
>  rm var/run
>  echo "#!/bin/sh
> -
> +set -x
> +export LD_LIBRARY_PATH=/usr/local/lib
> +PATH=/usr/local/bin:/usr/local/sbin:\$PATH
>  ${DOMU_CMD}
>  " > etc/local.d/xen.start
>  chmod +x etc/local.d/xen.start
>  echo "rc_verbose=yes" >> etc/rc.conf
>  sed -i -e 's/^Welcome/domU \0/' etc/issue
> +copy_domU_files
>  find . | cpio -H newc -o | gzip > ../binaries/domU-rootfs.cpio.gz
>  cd ..
>  rm -rf rootfs
> @@ -74,37 +113,24 @@ rm -rf rootfs
>  mkdir -p rootfs
>  cd rootfs
>  tar xzf ../binaries/initrd.tar.gz
> -mkdir boot
> -mkdir proc
> -mkdir run
> -mkdir srv
> -mkdir sys
> +mkdir boot proc run srv sys
>  rm var/run
>  cp -ar ../binaries/dist/install/* .
>  echo "#!/bin/bash
> -
> +set -x
>  export LD_LIBRARY_PATH=/usr/local/lib
>  bash /etc/init.d/xencommons start
> -
> -brctl addbr xenbr0
> -brctl addif xenbr0 eth0
> -ifconfig eth0 up
> -ifconfig xenbr0 up
> -ifconfig xenbr0 192.168.0.1
> -
> -# get domU console content into test log
> -tail -F /var/log/xen/console/guest-domU.log 2>/dev/null | sed -e \"s/^/(domU) /\" &
> -xl create /etc/xen/domU.cfg
>  ${DOM0_CMD}
>  " > etc/local.d/xen.start
>  chmod +x etc/local.d/xen.start
> -echo "${DOMU_CFG}" > etc/xen/domU.cfg
> +echo "${DOMU_CFG}${DOMU_CFG_EXTRA}" > etc/xen/domU.cfg
>  echo "rc_verbose=yes" >> etc/rc.conf
>  echo "XENCONSOLED_TRACE=all" >> etc/default/xencommons
>  echo "QEMU_XEN=/bin/false" >> etc/default/xencommons
>  mkdir -p var/log/xen/console
>  cp ../binaries/bzImage boot/vmlinuz
>  cp ../binaries/domU-rootfs.cpio.gz boot/initrd-domU
> +copy_dom0_files
>  find . | cpio -H newc -o | gzip > ../binaries/dom0-rootfs.cpio.gz
>  cd ..
> 
> @@ -116,7 +142,7 @@ cp -f binaries/bzImage ${TFTP}/${TEST_BOARD}/vmlinuz
>  cp -f binaries/dom0-rootfs.cpio.gz ${TFTP}/${TEST_BOARD}/initrd-dom0
>  echo "
>  net_default_server=10.0.6.1
> -multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE}
> +multiboot2 (tftp)/${TEST_BOARD}/xen ${XEN_CMDLINE} sync_console
>  module2 (tftp)/${TEST_BOARD}/vmlinuz console=hvc0 root=/dev/ram0 earlyprintk=xen
>  module2 (tftp)/${TEST_BOARD}/initrd-dom0
>  boot
> --
> 2.25.1
> 


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 02:34:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 02:34:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827044.1241519 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5c3d-000683-Ai; Tue, 29 Oct 2024 02:34:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827044.1241519; Tue, 29 Oct 2024 02:34: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 1t5c3d-00067w-80; Tue, 29 Oct 2024 02:34:09 +0000
Received: by outflank-mailman (input) for mailman id 827044;
 Tue, 29 Oct 2024 02: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=BYEM=RZ=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t5c3b-00067q-VG
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 02:34:07 +0000
Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 427ede9a-959e-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 03:34:05 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.163.48])
 by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4XcvQQ6V28zfdZx;
 Tue, 29 Oct 2024 10:31:26 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id D8120180064;
 Tue, 29 Oct 2024 10:33:59 +0800 (CST)
Received: from [10.67.109.254] (10.67.109.254) by
 kwepemg200008.china.huawei.com (7.202.181.35) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Tue, 29 Oct 2024 10:33:57 +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: 427ede9a-959e-11ef-a0c3-8be0dac302b0
Message-ID: <264f092c-dbaa-b475-831f-f50f4471de2f@huawei.com>
Date: Tue, 29 Oct 2024 10:33:56 +0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [PATCH -next v4 15/19] entry: Add arch
 irqentry_exit_need_resched() for arm64
Content-Language: en-US
To: Thomas Gleixner <tglx@linutronix.de>, <oleg@redhat.com>,
	<linux@armlinux.org.uk>, <will@kernel.org>, <mark.rutland@arm.com>,
	<catalin.marinas@arm.com>, <sstabellini@kernel.org>, <maz@kernel.org>,
	<peterz@infradead.org>, <luto@kernel.org>, <kees@kernel.org>,
	<wad@chromium.org>, <akpm@linux-foundation.org>, <samitolvanen@google.com>,
	<arnd@arndb.de>, <ojeda@kernel.org>, <rppt@kernel.org>, <hca@linux.ibm.com>,
	<aliceryhl@google.com>, <samuel.holland@sifive.com>, <paulmck@kernel.org>,
	<aquini@redhat.com>, <petr.pavlu@suse.com>, <viro@zeniv.linux.org.uk>,
	<rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-16-ruanjinjie@huawei.com> <878qu82je2.ffs@tglx>
From: Jinjie Ruan <ruanjinjie@huawei.com>
In-Reply-To: <878qu82je2.ffs@tglx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.67.109.254]
X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To
 kwepemg200008.china.huawei.com (7.202.181.35)



On 2024/10/29 2:05, Thomas Gleixner wrote:
> On Fri, Oct 25 2024 at 18:06, Jinjie Ruan wrote:
> 
>> As the front patch 6 ~ 13 did, the arm64_preempt_schedule_irq() is
> 
> Once this series is applied nobody knows what 'front patch 6 ~ 13' did.

Yes, if some of the previous patches are applied, the description will
immediately become difficult to understand, the other patch's similar
commit message will be updated too.

> 
>> same with the irq preempt schedule code of generic entry besides those
>> architecture-related logic called arm64_irqentry_exit_need_resched().
>>
>> So add arch irqentry_exit_need_resched() to support architecture-related
>> need_resched() check logic, which do not affect existing architectures
>> that use generic entry, but support arm64 to use generic irq entry.
> 
> Simply say:
> 
>  ARM64 requires an additional whether to reschedule on return from
>  interrupt.
> 
>  Add arch_irqentry_exit_need_resched() as the default NOOP
>  implementation and hook it up into the need_resched() condition in
>  raw_irqentry_exit_cond_resched().
> 
>  This allows ARM64 to implement the architecture specific version for
>  switchting over to the generic entry code.
> 
> That explains things completely independently. Hmm?

Of course, this is clearer and not as coupled as other patches and
describes how to implement it.
> 
> Thanks,
> 
>         tglx
> 


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 07:40:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 07:40:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827060.1241529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5gq7-0002or-6X; Tue, 29 Oct 2024 07:40:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827060.1241529; Tue, 29 Oct 2024 07:40: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 1t5gq7-0002ok-2v; Tue, 29 Oct 2024 07:40:31 +0000
Received: by outflank-mailman (input) for mailman id 827060;
 Tue, 29 Oct 2024 07:40: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5gq6-0002oe-0T
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 07:40:30 +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 114efc5d-95c9-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 08:40:28 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-37d495d217bso4787054f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 00:40:28 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431935a3ea8sm134858035e9.21.2024.10.29.00.40.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 00:40:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 114efc5d-95c9-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730187628; x=1730792428; 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=83pxI7VAgkNdo64Bbtcq7tDlhElHsp6UR5uYDnLi49I=;
        b=G0rDBBNd5d61RKnfAkNh3cF+kju/TheIFO2Iu3Igw2wRNMp0GPTWGiYeVTsMNzQ8sJ
         wGXaftc0ifU+cTWggKHIB7N4hlvqDBLRxs09bOCTLJ62t+iR3oUqCZ3UVAshqMz7175F
         P00mKS4Rs+ze6C1Gj7BQ5QXnjVp3nnuvQ0/3Y2gcuSrdFfQAUfAMYGtX3u90cMzirkb5
         d2Y/WNu/XPAIvvSB2W3tY1YkVYxfS1j4bXaXAC9m/D9I++lRBhng3rrA+kbdbqrPkjas
         8ITlKPK/2ailUH/yWY/35jG7v3uSrW0vHMu+pw4KweLCJ/bkdZ+5vOWyj3xFOkRBK4Yi
         eiww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730187628; x=1730792428;
        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=83pxI7VAgkNdo64Bbtcq7tDlhElHsp6UR5uYDnLi49I=;
        b=RV4FnV40iefGSxIJ4vfvQSKn2KOZas4ZFLpeEkXeJ2DzDaInA9rVXEJb9KtSTOVblR
         JBnUvd4hUW1BPvqYs/LGs4XogukL+JUrz7UelkDdJPvqQMyozA5dYQMhGuosTpss49xb
         haIx4+6BI+tU4djTrgTMpB82FRgtaAa5BvRRazbAUgp43TUpF4AzhlQA6X0dStVo+5Pl
         dEaFg03KBmbr3waz09PauHbnEFN+NZwaT4fyjRxh6S3yuJq3bTJR1MkGFY0aEKKIXxjI
         5YQWIsD9OKBvkIvz0v3OZmhh+FwbhgfajIcH34jvQIcVfKZttLaoxFwq88kCBlXBB2WX
         S7sA==
X-Forwarded-Encrypted: i=1; AJvYcCUR1wqNEeoLqBjzveFnr8EpjdW26CbU9tQl2qTkmkqNziC9nxAkyiOwZ/MszA+MesDuE8KZP9aEj8s=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxrcoxhXVwbjKE/4L6NYZdmldlvp3R2Ek7WGy9SR/zLWM+zve+C
	kfbb5LcQ+5avSf6ppTO4ANs7s68OIboTkRB/kMtL4uq34s8rbVj0TD66Rnw/Tg==
X-Google-Smtp-Source: AGHT+IHvOF8OwuGkcxVT7dMPB+KaYZ2P9v22LKTPWLAf5ilz0BKtA0y49OEUvljoosYk7xznAdEXMg==
X-Received: by 2002:adf:a79a:0:b0:37d:47e0:45fb with SMTP id ffacd0b85a97d-3806117327cmr9757644f8f.21.1730187627769;
        Tue, 29 Oct 2024 00:40:27 -0700 (PDT)
Message-ID: <51cce7e9-97c5-4c7d-957b-bc17b616fba1@suse.com>
Date: Tue, 29 Oct 2024 08:40:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241024154844.8652-1-roger.pau@citrix.com>
 <abadac24-0392-4051-b6a2-08967272f1a1@suse.com> <Zx_IZUyNL-Iw-nrL@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: <Zx_IZUyNL-Iw-nrL@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 18:22, Roger Pau Monné wrote:
> On Mon, Oct 28, 2024 at 12:33:42PM +0100, Jan Beulich wrote:
>> On 24.10.2024 17:48, Roger Pau Monne wrote:
>>> --- a/xen/arch/x86/io_apic.c
>>> +++ b/xen/arch/x86/io_apic.c
>>> @@ -71,6 +71,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>>>  
>>>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>>>  
>>> +/*
>>> + * Store the EOI handle when using interrupt remapping.
>>> + *
>>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
>>> + * format repurposes the vector field to store the offset into the Interrupt
>>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
>>> + * longer matches the contents of the RTE vector field.  Add a translation
>>> + * table so that directed EOI uses the value in the RTE vector field when
>>> + * interrupt remapping is enabled.
>>> + *
>>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
>>> + * when using the remapped format, but use the translation table uniformly in
>>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
>>> + *
>>> + * The matrix is accessed as [#io-apic][#pin].
>>> + */
>>> +static uint8_t **io_apic_pin_eoi;
>>
>> Wasn't the conclusion from the v1 discussion that this needs to be a signed
>> type wider than 8 bits?
>>
>>> @@ -298,6 +323,9 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>>>      /* Prefer the use of the EOI register if available */
>>>      if ( ioapic_has_eoi_reg(apic) )
>>>      {
>>> +        if ( io_apic_pin_eoi )
>>> +            vector = io_apic_pin_eoi[apic][pin];
>>> +
>>>          /* If vector is unknown, read it from the IO-APIC */
>>>          if ( vector == IRQ_VECTOR_UNASSIGNED )
>>>              vector = __ioapic_read_entry(apic, pin, true).vector;
>>
>> In addition to what Andrew said here, for this comparison the make sense
>> ...
>>
>>> @@ -1022,7 +1050,20 @@ static void __init setup_IO_APIC_irqs(void)
>>>  
>>>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
>>>  
>>> +    if ( iommu_intremap )
>>> +    {
>>> +        io_apic_pin_eoi = xzalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
>>> +        BUG_ON(!io_apic_pin_eoi);
>>> +    }
>>> +
>>>      for (apic = 0; apic < nr_ioapics; apic++) {
>>> +        if ( iommu_intremap )
>>> +        {
>>> +            io_apic_pin_eoi[apic] = xzalloc_array(typeof(**io_apic_pin_eoi),
>>> +                                                  nr_ioapic_entries[apic]);
>>> +            BUG_ON(!io_apic_pin_eoi[apic]);
>>> +        }
>>
>> ... doesn't the array also need -1 (== IRQ_VECTOR_UNASSIGNED) filling,
>> rather than zero-filling?
> 
> Replying here to both you and Andrews question.  My analysis is that
> a sentinel is not needed.  clear_IO_APIC_pin() is the only function
> that calls the EOI routine outside of the irq_desc handlers logic.
> 
> It's used either by clear_IO_APIC(), which gets called before
> io_apic_pin_eoi is allocated,

Or long after, from disable_IO_APIC().

> or by check_timer() and/or
> unlock_ExtINT_logic() both of which will perform an
> ioapic_write_entry() before the clear_IO_APIC_pin() call.

In unlock_ExtINT_logic() I see a call to ioapic_read_entry(), whereas the
call to ioapic_write_entry() happens only later. In check_timer() I'm also
uncertain a write would occur in _all_ cases. It certainly should occur,
or else chances are low that the timer interrupt would actually work. Yet
we surely want to avoid making hard to debug corner cases yet more subtle.

> I've done some XenRT testing with a modified patch that kept the
> io_apic_pin_eoi as unsigned int, used the sentinel as init value and
> added an assert in __io_apic_eoi() that the value in the array was
> never IRQ_VECTOR_UNASSIGNED when the io_apic_pin_eoi was allocated.
> This never triggered on any hardware XenRT tested on.
> 
> Maybe this seems to fragile, and you both prefer to keep the sentinel
> just in case?

Well, how certain are you that this testing in particular covered e.g. all
the quirk cases that check_timer() tries to deal with?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 07:42:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 07:42:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827065.1241539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5grr-0003ND-H2; Tue, 29 Oct 2024 07:42:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827065.1241539; Tue, 29 Oct 2024 07: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 1t5grr-0003N6-E0; Tue, 29 Oct 2024 07:42:19 +0000
Received: by outflank-mailman (input) for mailman id 827065;
 Tue, 29 Oct 2024 07:42: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5grq-0003My-Fh
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 07:42:18 +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 525e5f14-95c9-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 08:42:17 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-4315c1c7392so51821485e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 00:42:17 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b13251sm11706344f8f.6.2024.10.29.00.42.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 00:42:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 525e5f14-95c9-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730187737; x=1730792537; 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=fBiCz3ZmYUs/otOFYLQ60oYUDGMNY69KCpjs7FzJ2IY=;
        b=YXhWky4B8tEPQJijGPrcs6xQNO2zIIj7jxU+STfQQl939uwfj9iFRFN4PcDwSZRoGQ
         5nJkx1t9FmY8Q9+Fqm5yS99UalKkMsNi/GF0k+298Fo3TnMozOgiHjtuzBZ4sCKP14/0
         0g1J2CRBcRaMMYs0UXSxjEKFF0yWEqyiALodwQulT9F8ikbTdkaX4svFNdncbCFMhFBR
         lvQHLRigLRszA/Np7aIYCpQe0gaiXrO96JEurm6pYCsMSDnvxcrzPiY0bdhjgswmS2uZ
         AJrQD+QnvjBj5TzDV3vglUn4jo95BkO8p38DWakEoovAjZhTo3gnjUzc8kCCHZQ9/1QQ
         x8fg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730187737; x=1730792537;
        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=fBiCz3ZmYUs/otOFYLQ60oYUDGMNY69KCpjs7FzJ2IY=;
        b=hudAFkFrdsjr47Furx42dhZdjOfFesUQgfAlITWM4bLZbe4Po0LSIpkYS/m2fpxwqa
         h+R1JxWBsYD7ZXS6t3QdwOlr87IY4/EmnyGyhXEH00411jEMJj3xJ+xmazRTHXccihaV
         iVSAD8WknN2lT7U3nxRpCDs74iEtG5KT7J16OB++5Z1hBi9Tx4l3RnWRTeT2LKCP9EvD
         QFYAoLzId1VfZ2E+ByMdM2kNNfafd4/zJ1O8QuKkHxh6Ivv8prfP6gUwfHYboxxpXG6u
         j1OPOLgK5p+PnShC6v16aLavxEhPG2mbCXR1uHueDsBoArUpOQX8L+Sr6AflP+zr3A1b
         MZzA==
X-Forwarded-Encrypted: i=1; AJvYcCVz9d65aucYO4RxSFnKME/yY/MQhDE3uwBcVxCeWgqaSZcrntqN2K2VL13a7VyAfHCYAkeos8hP+gI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxGZNJH6Nv3sduwRixlWlTkpQCpCqQnuCU1XOSnx/shBNt2Ti6e
	pu8Lh9XDtYeplKnF2QGwWSHRabdfDT72NdZc6wT1CRJageq6nGlV2RLvyvs9fA==
X-Google-Smtp-Source: AGHT+IHCtC+5itZK481vBEf8XF71+7bd+4HPg2SJUKCNC5ktqut6qSpsT24Fz+N5ryqteHG6kktG5g==
X-Received: by 2002:a05:600c:5126:b0:426:616e:db8d with SMTP id 5b1f17b1804b1-4319acabb3fmr73765015e9.15.1730187736916;
        Tue, 29 Oct 2024 00:42:16 -0700 (PDT)
Message-ID: <4aa81797-9479-46e8-93c4-46b760b734fc@suse.com>
Date: Tue, 29 Oct 2024 08:42:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] tools/libxl: remove usage of VLA arrays
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 Anthony PERARD <anthony.perard@vates.tech>, Juergen Gross <jgross@suse.com>,
 xen-devel@lists.xenproject.org, Frediano Ziglio <frediano.ziglio@cloud.com>
References: <20241028114831.27487-1-roger.pau@citrix.com>
 <3828ba9f-9bc8-4b65-a42f-b67ef061be52@citrix.com>
 <51632c96-9a12-4656-b8f8-1631c11a3a19@suse.com>
 <CACHz=Zg4mFn5zn42f9dDFao0r7ePj=Owhc04OSW5LfW6cJoUaw@mail.gmail.com>
 <Zx_JRaViUiEF2IrH@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: <Zx_JRaViUiEF2IrH@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 18:26, Roger Pau Monné wrote:
> On Mon, Oct 28, 2024 at 12:57:30PM +0000, Frediano Ziglio wrote:
>> On Mon, Oct 28, 2024 at 12:48 PM Jan Beulich <jbeulich@suse.com> wrote:
>>>
>>> On 28.10.2024 13:03, Andrew Cooper wrote:
>>>> On 28/10/2024 11:48 am, Roger Pau Monne wrote:
>>>>> Clang 19 complains with the following error when building libxl:
>>>>>
>>>>> libxl_utils.c:48:15: error: variable length array folded to constant array as an extension [-Werror,-Wgnu-folding-constant]
>>>>>    48 |     char path[strlen("/local/domain") + 12];
>>>>>       |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>
>>>>> Replace the usage of strlen() with ARRAY_SIZE(), which allows the literal
>>>>> string length to be known at build time.  Note ARRAY_SIZE() accounts for the
>>>>> NUL terminator while strlen() didn't, hence subtract 1 from the total size
>>>>> calculation.
>>>>>
>>>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>>>> ---
>>>>>  tools/libs/light/libxl_utils.c | 4 ++--
>>>>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/tools/libs/light/libxl_utils.c b/tools/libs/light/libxl_utils.c
>>>>> index 10398a6c8611..b3f5e751cc3f 100644
>>>>> --- a/tools/libs/light/libxl_utils.c
>>>>> +++ b/tools/libs/light/libxl_utils.c
>>>>> @@ -45,7 +45,7 @@ unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned
>>>>>  char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid)
>>>>>  {
>>>>>      unsigned int len;
>>>>> -    char path[strlen("/local/domain") + 12];
>>>>> +    char path[ARRAY_SIZE("/local/domain") + 11];
>>>>>      char *s;
>>>>>
>>>>>      snprintf(path, sizeof(path), "/local/domain/%d/name", domid);
>>>>> @@ -141,7 +141,7 @@ int libxl_cpupool_qualifier_to_cpupoolid(libxl_ctx *ctx, const char *p,
>>>>>  char *libxl_cpupoolid_to_name(libxl_ctx *ctx, uint32_t poolid)
>>>>>  {
>>>>>      unsigned int len;
>>>>> -    char path[strlen("/local/pool") + 12];
>>>>> +    char path[ARRAY_SIZE("/local/pool") + 11];
>>>>>      char *s;
>>>>>
>>>>>      snprintf(path, sizeof(path), "/local/pool/%d/name", poolid);
>>>>
>>>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>>>
>>>> Although I have a minor preference for sizeof() as suggested by Frediano.
>>>>
>>>> Can fix on commit, if you're happy?
>>>
>>> Please can we stick to ARRAY_SIZE() when it comes to strings? It's the
>>> same as sizeof() when the base type is char, but the difference becomes
>>> relevant if the base type was e.g. wchar_t.
>>>
>>> Jan
>>>
>>
>> But "literal" is not a wide string, and the type is "char" which is
>> not wide too.
>>
>> BTW, both me and Andrew are not strong about.
> 
> No strong opinion either, I've assumed it was clearer to not make
> implicit assumptions about the size of the string literal array
> elements.  I would rather like to get this committed, and Jan seems to
> prefer to use ARRAY_SIZE(), so I suggest we get the patch committed
> as-is.

Well, ultimately it's Anthony's call, for still being the sole maintainer.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 07:48:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 07:48:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827072.1241549 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5gxe-0004Dk-4O; Tue, 29 Oct 2024 07:48:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827072.1241549; Tue, 29 Oct 2024 07:48: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 1t5gxe-0004Dd-1r; Tue, 29 Oct 2024 07:48:18 +0000
Received: by outflank-mailman (input) for mailman id 827072;
 Tue, 29 Oct 2024 07:48: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5gxd-0004DV-5Z
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 07:48:17 +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 2809d8cb-95ca-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 08:48:16 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-431548bd1b4so49120055e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 00:48:16 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b5797c3sm165654605e9.40.2024.10.29.00.48.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 00:48:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2809d8cb-95ca-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730188095; x=1730792895; 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=qiMKiYdv51H9b+5bAVFCuo4a2BlQNaJkXJKKn8zH6Zk=;
        b=cI+0C5vkun/u/ResIMvUQRiHuodcSNkY2DGnTIMlZjywSIo1rx+CL6jFzL5eRUri3x
         qd1+1/Xg5CmMxRsGtWmXSHkoFz+ppxkL6/Qr0uwnK+bjetj9XVgyzmUawDVQ9yAoNjYd
         2XHMJqnTba359tyMgyBej97IE2Z1Fr8kT0t3jvg8xA5aw1dDbTDkJpz1VzksOpm34o/r
         CEdbBFytP+fahLzKdH2jrKyfqhPGr60HsRHYjc7PRJ8l7JyHCnmWkXRDMgpok8oPS1Cs
         VcQLIHidCTMzWKVgDytmrTlwdUsM4lXEg7ihinlbqK8ep65yd9JCW4aZuEX1QWQ3MAcM
         Cmnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730188095; x=1730792895;
        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=qiMKiYdv51H9b+5bAVFCuo4a2BlQNaJkXJKKn8zH6Zk=;
        b=I+4Fh9ippuj6ZOeOWOqzJ8iQJPymtyLW5F/i46ylgDD2Sh/9PaGWgT8xfEvbOO8Jd3
         Pfur7Nw0qTJOF9CeBOeQUDTi630aLD/2vxR4B6jwUceNe4m3Eeum3/E29s/lD9ml3DSD
         zxuhdaEWrfW3GoKvr2y3sCaIlZlpzgovvZj9j1tv3Wktsa4Y6TiiNMrLdA5Vgd3+sNFj
         VO9+Q7jwHsAqs7GvXov+wiH//IrSapgwWt2Kw5BCJ+/rgsFB3LqR9EfLyaHc4flZ4h49
         iAf08pf5xDYHlaPERHdZqAaNWYIna+fSMZ/7EzTIHQgd8mn3OqXys4Z54UHPiYuGwYiE
         Vkwg==
X-Forwarded-Encrypted: i=1; AJvYcCXw+jVy1kTxE09l0nI3/7duKHSMDZ0NrGUAfZj5Vn4/+voxe/5opba18WKlCPxaffIYQhz+vYkdykY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YykEWTAU05kSPudEvqghCDbFXoqRRb0iMoQO4K63WzAN681R9Ox
	e/zVBefUDeYNvYrqxYJKxPSbY/xXC1JsMQZg4PbJVyXO2QUZelGpTMMmbl3utsHDPLTLFCYyaHE
	=
X-Google-Smtp-Source: AGHT+IHIhKGkhQLzzJ85hnL8dRsOnWvB2ivKQnY5iXLdmMUUh5MUAVXxFeGhUvaxTDg+81PxilFqQA==
X-Received: by 2002:a05:600c:3550:b0:431:4a5a:f09a with SMTP id 5b1f17b1804b1-4319ad16150mr91220465e9.24.1730188095495;
        Tue, 29 Oct 2024 00:48:15 -0700 (PDT)
Message-ID: <b529c3a2-d628-4b16-a296-bd44e5c84c0f@suse.com>
Date: Tue, 29 Oct 2024 08:48:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 02/10] x86/ucode: Delete the microcode_init() initcall
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "Daniel P . Smith" <dpsmith@apertussolutions.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241028091856.2151603-1-andrew.cooper3@citrix.com>
 <20241028091856.2151603-3-andrew.cooper3@citrix.com>
 <99ba9bcf-f356-416a-b355-f32e622d1406@suse.com>
 <d7f9489d-8031-493b-bf36-b009d5536b0c@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: <d7f9489d-8031-493b-bf36-b009d5536b0c@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 18:12, Andrew Cooper wrote:
> On 28/10/2024 1:38 pm, Jan Beulich wrote:
>> On 28.10.2024 10:18, Andrew Cooper wrote:
>>> The comment highlights just how bogus this really is.  Being an initcall, the
>>> boot allocator is long gone, and bootstrap_unmap() is a no-op.
>> How's the boot allocator coming into the picture here? This is all about
>> (un)mapping, not allocating.
>>
>>> The fact there is nothing to do should be a giant red flag about the validity
>>> of the mappings "being freed".  Indeed, they both constitute use-after-frees.
>> I can't spot any use-after-free; the pointers in question ...
>>
>>> --- a/xen/arch/x86/cpu/microcode/core.c
>>> +++ b/xen/arch/x86/cpu/microcode/core.c
>>> @@ -758,28 +758,6 @@ int microcode_update(XEN_GUEST_HANDLE(const_void) buf,
>>>      return continue_hypercall_on_cpu(0, microcode_update_helper, buffer);
>>>  }
>>>  
>>> -static int __init cf_check microcode_init(void)
>>> -{
>>> -    /*
>>> -     * At this point, all CPUs should have updated their microcode
>>> -     * via the early_microcode_* paths so free the microcode blob.
>>> -     */
>>> -    if ( ucode_blob.size )
>>> -    {
>>> -        bootstrap_unmap();
>>> -        ucode_blob.size = 0;
>>> -        ucode_blob.data = NULL;
>>> -    }
>>> -    else if ( ucode_mod.mod_end )
>>> -    {
>>> -        bootstrap_unmap();
>>> -        ucode_mod.mod_end = 0;
>>> -    }
>>> -
>>> -    return 0;
>>> -}
>>> -__initcall(microcode_init);
>> ... aren't used anywhere. bootstrap_unmap() is "just in case" (perhaps indeed
>> a no-op at least nowadays), and the rest is field clobbering. I'm okay with the
>> code change, so
>> Acked-by: Jan Beulich <jbeulich@suse.com>
>> yet I'd like to ask for the description to be "softened" some.
> 
> As I said, this could be folded into patch 9, given this particular
> arrangement of the series.

I certainly don't mind the folding, but then I'd still like to see the
description of the resulting patch before giving a (hopefully) unconditional
ack.

> The UAFs are apparent *because* the comment demonstrates a false line of
> reasoning.
> 
> ucode_mod literally is used after free.  ucode=$n is genuinely buggy
> today, because its a stash of a physical pointer across move_xen().

Maybe my problem is that the UAF is elsewhere, not in the code you delete?
If so, it might help to simply point out where the actual bad use is. As it
stands, microcode_init() doesn't have any uses (reads), only writes. What I
agree with is that the comment there is at best misleading.

Jan

> ucode_blob stashes a virtual pointer.  This was even noticed in
> dc380df12acf ("x86/ucode: load microcode earlier on boot CPU")
> 
> ---
> It needs to rescan the modules in order to find the new virtual address
> of the ucode blob because it changes during the boot process, e.g.
> from 0x00000000010802fc to 0xffff83204dac52fc.
> ---
> 
> which highlighted the problem but duct-taped over it.
> 
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:08:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:08:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827082.1241559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hHP-00088n-Sp; Tue, 29 Oct 2024 08:08:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827082.1241559; Tue, 29 Oct 2024 08:08: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 1t5hHP-00088g-Pj; Tue, 29 Oct 2024 08:08:43 +0000
Received: by outflank-mailman (input) for mailman id 827082;
 Tue, 29 Oct 2024 08:08: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hHO-00088X-El
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:08: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 01ba922d-95cd-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 09:08:40 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4315f24a6bbso50139755e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:08:40 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b8c394sm11729981f8f.90.2024.10.29.01.08.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:08:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 01ba922d-95cd-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730189320; x=1730794120; 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=E27NsgBAY436u66YFzB03YW2X8wdN0AZFfZvlkF14UA=;
        b=e8//Mn/mt2zWwpRCx3io39R+Kd3hozkpqqqHAHP8lUZfFIEUw+80yYXmC7muqAR3Z9
         leZdbjOYvqripQjucnAcCpWUdvwVf1er53hOzOQRkor09epAsg0EqsVRZI9jySxAz7vO
         BfAz7xtdR14LbnZeVnqFJl5DN2IaC0PjIvZUHHcsTubP7rpuLBax+4yVF0d0BtZkOECa
         2Jxjzbi3dpRfR22i9mfYcWUzYyQubyIYL/yXG9S97ZPUa6P9+Mb+pmE/rk+DJIB6slEs
         GlRLaz23Lg/PHsVqSLqiq2UbSSvfc7I+wmXCwVxMtUVNvCLiieb4ftvRJuEcyCLywcB1
         JH0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730189320; x=1730794120;
        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=E27NsgBAY436u66YFzB03YW2X8wdN0AZFfZvlkF14UA=;
        b=Ekrr82pVba8SBdJ0qGOmxA1ruFaGHZRnDpW11vLuDKUJ29d45w0PFQHLJMVY4iuRuJ
         phT3hbK/wcNEjf0gIaDnEbSDIgYwEZaC66cvy3d5+4SxqPcreD2TYHIRisSw43+eKHNC
         CFCnqUdD8kEAGnjRX/cyUTM69a3AhrtJ+I3Fcv89ZSCAwCTghuHdpazfJG7zE7OmYQaa
         aS1rBk8hFNWn1UTpYDEOUY6PG+GaUViIKsoebkBvRFJrUNx/g8v7DM8PbnyCq3E2C2Cg
         6jYdsVoy0IWpeyclxlJwU/wQiB1CpyD5v2bHdbC0DrHwZHUsxslrDHYbhxy6OK47iT+l
         RsAg==
X-Forwarded-Encrypted: i=1; AJvYcCUaPkbuQbdqO2RPAsHtLBGEOIDlfVkgiRp+bZodOI/dMjIacqlvDhmURaC6pGY13QpGNxf5ODAX0gA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyCzGE9661Cgv219HXA7SMsqoQSCvdgFhfDJharU8irqBx55SUM
	DpxRRrhkbo5TAQHlAxo3rl7AN5xDZUXRQLkfQZdZYPvIq3M1YdMsEc6IZ1V6Qg==
X-Google-Smtp-Source: AGHT+IGfta+Jvx33HyvdweAEJwMYBXtq/eJe27y/vgXE0SzAFay2qwAEyLddvrFN78BITYFjruqZnQ==
X-Received: by 2002:a05:600c:3b14:b0:426:8884:2c58 with SMTP id 5b1f17b1804b1-4319ac6fb0amr86621375e9.4.1730189319727;
        Tue, 29 Oct 2024 01:08:39 -0700 (PDT)
Message-ID: <5fb1ac28-395c-4065-8a70-4bac809c7f50@suse.com>
Date: Tue, 29 Oct 2024 09:08:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
To: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Cc: Andrew Cooper <andrew.cooper3@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>,
 xen-devel@lists.xenproject.org
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
 <27be8d00-8260-460e-948d-81418b93662a@suse.com>
 <8fa530cb-4d70-4300-8d4e-1e7208f7c045@amd.com>
 <55728fdc-6247-4810-8696-a999713f4a7c@suse.com>
 <3231cc7b-4c2e-4939-a623-a7b9960d1641@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: <3231cc7b-4c2e-4939-a623-a7b9960d1641@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 18:38, Ayan Kumar Halder wrote:
> On 28/10/2024 15:01, Jan Beulich wrote:
>> On 28.10.2024 15:39, Ayan Kumar Halder wrote:
>>> On 28/10/2024 12:55, Jan Beulich wrote:
>>>> On 28.10.2024 13:45, Ayan Kumar Halder wrote:
>>>>> --- a/xen/arch/Kconfig
>>>>> +++ b/xen/arch/Kconfig
>>>>> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>>>>>    
>>>>>    config NR_CPUS
>>>>>    	int "Maximum number of CPUs"
>>>>> +	range 1 1 if ARM && MPU
>>>>>    	range 1 16383
>>>>>    	default "256" if X86
>>>>>    	default "8" if ARM && RCAR3
>>>>>    	default "4" if ARM && QEMU
>>>>>    	default "4" if ARM && MPSOC
>>>>> +	default "1" if ARM && MPU
>>>>>    	default "128" if ARM
>>>>>    	help
>>>>>    	  Controls the build-time size of various arrays and bitmaps
>>>> I'm afraid I can't easily tell whether MPU can be used together with any of
>>>> RCAR3, QEMU, or MPSOC. If it can, the new default line would need to move
>>>> up, as it's the first one that has a match on its condition which is being
>>>> used.
>>> MPU cannot be used with any of the existing platforms.
>> That is - qemu can't emulate such an environment, i.e. even QEMU and MPU
>> don't go together?
> 
> Qemu has support for Aarch32 MPU at EL2 and EL1 (ie R52). As far as I am 
> aware, there is no support for Aarch64 MPU in Qemu (ie R82).
> 
> Even for R52, I could not get the upstream Qemu working (emulating some 
> Arm reference platform).
> 
> I could get the Xilinx fork of Qemu (https://github.com/Xilinx/qemu) 
> working which emulates AMD's SoC using R52.
> 
> However, this should not impact the current patch. There is no Qemu in 
> xen/arch/arm/platforms/*.

Aiui that's not relevant. There is a QEMU item in xen/arch/arm/platforms/Kconfig.
I continue to fail to see why that couldn't be selected together with MPU. Yet if
it can be, you'd end up with a default of 4, not 1, if it actually _is_ selected.
Alternatively QEMU (and maybe also RCAR3 and MPSOC) need to be mutually exclusive
with MPU. Hmm, looks like that's already the case, by patch 2 suppressing the
"Platform Support" prompt. While that looks fragile to me, I'm sorry for the
noise then.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:14:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:14:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827090.1241569 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hMX-0001NF-Jb; Tue, 29 Oct 2024 08:14:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827090.1241569; Tue, 29 Oct 2024 08: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 1t5hMX-0001N8-FV; Tue, 29 Oct 2024 08:14:01 +0000
Received: by outflank-mailman (input) for mailman id 827090;
 Tue, 29 Oct 2024 08:13: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hMV-0001N1-Ew
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:13:59 +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 bebd64b8-95cd-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 09:13:57 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-4315839a7c9so53489045e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:13:57 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b3c7b9sm11740510f8f.32.2024.10.29.01.13.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:13:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bebd64b8-95cd-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730189637; x=1730794437; 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=IEogidPCVBegSFGjR8C0CerxrkTSHig/HI9uV5sNcGo=;
        b=QQzOjbrhd/i3/LzpCWGb+VR85mKGq0WYZ1TguNDSr6bIFxuhLGFNwElscQfGoHvDiD
         BR702DwMDHzPzyNDJz3yhZmk7/PPn9YocXlChyG483seevTTxe4Zq3eSfFKwozvLd00E
         8B0T8oeJ/yFhF7wfGecNlPtLQyRNVXGY04p1IUD4THwxFnutpTP1/V39weBuiXr39dVc
         aCYWOH+oRF58VUo6pRChjeFpiu/9vY25Pcp46weAULjenZMeag3Yy8TOUhBgUcPf6Vib
         wNse6rrfhgmZmoo2lbAsBwg7Dw7FBUctPVom7P+fDjN8wFHd8fr3n+qbcVCajhqtKJa1
         UWww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730189637; x=1730794437;
        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=IEogidPCVBegSFGjR8C0CerxrkTSHig/HI9uV5sNcGo=;
        b=bD3Wz/Wjy0OBTEHiTlf93KBrkex4qAppek57PO+KfKDGEqxetgh7t3qJBbHb+XN3on
         gUTLTuXjBiFVqLbfAZrI//NVg1LZH2YUEL6fBg2sqwel9jdhdcUQsMOSqO0XmIZ5EhVe
         QJTnT5e59xRpdv8EymBFDEuU3SJvutWPdiXoX2nI+eM1cD78yRvAHw+mxCgMqkwCOrUF
         OOu7nSNeHyhQSgu9MfAbV5SvYy3WUUofczMqOKrW+60ehx55erfrMh6TaSiEkBzYw4L6
         yitd8gwX2u8OYcwEOLL/H+R8eoOPMX/POHoRrpW/caPo6I4GMBGyQXhLfP9zOnqz3O7R
         /exw==
X-Forwarded-Encrypted: i=1; AJvYcCVmVLwDtXN/6mXlTc2NNX1V+mJ11aVgW5aU4VVZXxRqSDqIfpbg4WsbqMbOhkzuCbDN5uWYcIr5wTE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw0eYY/2e/7C/vimRbDBROaHyph0udpC68dEBjTVgLxU0rNwlk9
	Rpu5ABrfrauspvG+3W8ZkSp6FyMeWPTQOP+0xgP0VP0G6t/NPKmx0e4VskApXg==
X-Google-Smtp-Source: AGHT+IGJkQXuS9Z8WCQOmkjSqnQCgIGGH8np8FYl9Im/x9AgtCVR9OGEqZj5oeVEMuPK1tetvkVVEg==
X-Received: by 2002:a05:600c:4fcb:b0:426:5269:1a50 with SMTP id 5b1f17b1804b1-4319ac9c15fmr82013185e9.11.1730189636783;
        Tue, 29 Oct 2024 01:13:56 -0700 (PDT)
Message-ID: <7027a24e-3213-48c5-8027-24dcf1df55ac@suse.com>
Date: Tue, 29 Oct 2024 09:13:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 01/14] x86/xstate: Update stale assertions in
 fpu_x{rstor,save}()
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-2-alejandro.vallejo@cloud.com>
 <fdc89027-d33c-40f5-93f9-b8d7e880e732@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: <fdc89027-d33c-40f5-93f9-b8d7e880e732@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 18:16, Andrew Cooper wrote:
> On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
>> The asserts' intent was to establish whether the xsave instruction was
>> usable or not, which at the time was strictly given by the presence of
>> the xsave area. After edb48e76458b("x86/fpu: Combine fpu_ctxt and
>> xsave_area in arch_vcpu"), that area is always present a more relevant
>> assert is that the host supports XSAVE.
>>
>> Fixes: edb48e76458b("x86/fpu: Combine fpu_ctxt and xsave_area in arch_vcpu")
>> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>> ---
>> I'd also be ok with removing the assertions altogether. They serve very
>> little purpose there after the merge of xsave and fpu_ctxt.
> 
> I'd be fine with dropping them.

+1

Jan

>  If they're violated, the use of
> XSAVE/XRSTOR immediately afterwards will be fatal too.
> 
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:19:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:19:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827096.1241579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hRw-0002JI-5O; Tue, 29 Oct 2024 08:19:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827096.1241579; Tue, 29 Oct 2024 08: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 1t5hRw-0002JB-2a; Tue, 29 Oct 2024 08:19:36 +0000
Received: by outflank-mailman (input) for mailman id 827096;
 Tue, 29 Oct 2024 08:19: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hRv-0002J5-4f
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:19:35 +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 871cbd4f-95ce-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 09:19:33 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-37d5689eea8so3453292f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:19:33 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b47a41sm11766500f8f.52.2024.10.29.01.19.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:19:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 871cbd4f-95ce-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730189973; x=1730794773; 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=ZM3on7Rk3dMGczH+t0nLhbK9JWkSZZ2A25ZLeICITSM=;
        b=bfHpk743fhvBcuXk6dpqTkMKC5tz3bY38wnPXxgTdSV3Z6qgeox/F/OCHffauy/+p+
         4WWVubIJqbZjt+9/6xUS4DLwIcndV0KEwpzNIYOq4mRS4qfdKXyuL4+7OI50i5Za0/Su
         f2krWyJnC2lqKL711JZbG116ZnR/slrPpMaZNWrg5az1q1x3ZUVs8o2kE+Bk6szBkpOv
         kzbDUIMMQMFkblKZ9VzVVU9UXkDoCBMchiTjSxYDi6koTezGHvMt2hJrxy3kMampkR8r
         cSsKBkwY6OB1TDf1Y3rzX55ztGoYVGSON04F1XCfkosRE8MrqdLWLerkKHEYX9ETnHXl
         m0xA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730189973; x=1730794773;
        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=ZM3on7Rk3dMGczH+t0nLhbK9JWkSZZ2A25ZLeICITSM=;
        b=wj4JRAVvzwN5nNu/lqGCj8Vbxw+GIzsXQMtJ8KF0guFO0DGS+GXC6BI3dAFKaRSgQ2
         QADNgvSAV9OlRB9ueeq05obiMx5zorMlGv7YFakQfdhWV7+5bSch+kNp7wZw2JZzxImj
         nvqSf15MiTcESNEeW35H8G/ZAv7JJwAvnyE4pXCmHsUxw27mCHFsyGT+sXWDTBr273BS
         oH0+60ET1nHfKzowQD1X2xIlKu+DVLIVkqPSo4P++b7UxELkUJ5I5lCwtEbvu2TRKS+f
         ALg30uX3AAnYiAfMXPSz1dZhS7uhzmu7CRSGXpDdYgP0FRUQBMeM81lB0LKFxOCgbA29
         314Q==
X-Forwarded-Encrypted: i=1; AJvYcCX94Qrk3IuQaGp9p7JXmDOSh6/7M327U2T175dGmVS+uzeU7JOEsujHIJgpcpBGWs6qSDajQ9jgeso=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzQXLinMO7+Oeos/LxVgwRp4zI4Nk1P1Eqz/IlDEPvNASAUnggZ
	DHrVa7UJh4TWQgAPXpv8mXAVB1i8yvX+2VSiKEPKGm2m5/D+Se5HT7QvatovSg==
X-Google-Smtp-Source: AGHT+IEVUfXDQEnZCGl+YXgjWbuoLjWSAxiGVG0S/C+bi2bgh70ILeyLh363lF/jz68N6GJklzj03Q==
X-Received: by 2002:adf:b30d:0:b0:378:e8cd:71fa with SMTP id ffacd0b85a97d-380612008fdmr6878777f8f.39.1730189972901;
        Tue, 29 Oct 2024 01:19:32 -0700 (PDT)
Message-ID: <52225fba-97cc-49eb-8714-fee5d2e86262@suse.com>
Date: Tue, 29 Oct 2024 09:19:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave
 areas
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.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: <20241028154932.6797-3-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 16:49, Alejandro Vallejo wrote:
> --- a/xen/arch/x86/include/asm/xstate.h
> +++ b/xen/arch/x86/include/asm/xstate.h
> @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu *v)
>             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
>  }
>  
> +/*
> + * Fetch a pointer to the XSAVE area of a vCPU
> + *
> + * If ASI is enabled for the domain, this mapping is pCPU-local.

Taking the umap commentary into account, I think this needs to expand
some, to also symmetrically cover what the unmap comment says regarding
"v is [not] the currently scheduled vCPU". This may then also help
better see the further outlook, as Andrew was asking for.

> + * @param v Owner of the XSAVE area
> + */
> +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
> +
> +/*
> + * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.

Nit: I expect it drops the mapping, not the area.

> + * If ASI is enabled and v is not the currently scheduled vCPU then the
> + * per-pCPU mapping is removed from the address space.
> + *
> + * @param v           vCPU logically owning xsave_area
> + * @param xsave_area  XSAVE blob of v
> + */
> +#define vcpu_unmap_xsave_area(v, x) ({ (x) = NULL; })
> +
>  #endif /* __ASM_XSTATE_H */



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:26:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:26:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827102.1241589 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hYO-0003s4-R0; Tue, 29 Oct 2024 08:26:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827102.1241589; Tue, 29 Oct 2024 08: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 1t5hYO-0003rx-NV; Tue, 29 Oct 2024 08:26:16 +0000
Received: by outflank-mailman (input) for mailman id 827102;
 Tue, 29 Oct 2024 08:26: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hYO-0003rr-79
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:26:16 +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 769b85c4-95cf-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 09:26:15 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-43161e7bb25so49677615e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:26:15 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b579968sm167146265e9.39.2024.10.29.01.26.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:26:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 769b85c4-95cf-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730190375; x=1730795175; 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=ksTbZP07FbGaPxA08RDchhZppw5LpHT8BHRa+YtuE78=;
        b=Ss9/X889DUymCI9If505/Iw+F57/6D3htHVDgfZOXqQmzEMkX4X8ZPHaisk+bzENmD
         T+v8z8yVkU6tXHDewWttubsxw7iNi/mYoP4p4142438KdNgjayT/XIGSJA+YZomSaS7j
         Lw/bZis3F4wMZkwcYr86HJJttwaryfrQjndyrDWPhITZa7FJoBu+B3QQ/CGewqdfFmfP
         md2Cb0x5Le0rE/vosynFnXX6VAnKfrMDiWXng/vAQzYEQ5zdPq1Z4gsQCtujqDUio3ae
         XSg+wQJnZqy3/pOQyLAN+cYafyYK9b7mzu4HYtY7zWu6kJ1l0NwkuRX9evKiZdJXzNw/
         XhPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730190375; x=1730795175;
        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=ksTbZP07FbGaPxA08RDchhZppw5LpHT8BHRa+YtuE78=;
        b=B3lyhumIESFEacPyDmWhkusPtkOea1NLd5Srdq8+xTbp+jqJ9SwSItzgAj2LePqKhY
         H2cRXEhx0QGfz7PVARk2eFnd+QpLsygaVUWNCSbvxKtoy2McA4JirPG/+xDkfB4E/tTn
         0ZgtMxQ/fYnqgDCCwfDbiW3oP2R9yLxrEm/l83qlLJl+6JHFHl5Us2QqQjddQP8KenX+
         AgOCnb1NAL9/Z1m9mAtyZ1MJIGrzBXPwjNbyyvDRlpjnyEydDYiKGeZLFJBqtqkgVtpV
         LivFa2gDCltZ02VUPrcAGVC8aXFQ+uKZdtu6FfAshRN/oIbnN6j8N61EHDPkLfk7k8+Z
         TpHQ==
X-Forwarded-Encrypted: i=1; AJvYcCUtRgNxp20BzuJsgKVuE4E0mlCPjx+OQk4bPOoScoLgGH4zRyF0LGdE6Y/nZk3nWpRBWAyF2hrR6rc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzGzgsHJhv6gdgzuQyWeGb/iHBtisei9pRTM5sS+fQfQBYWzZmA
	BwCLRQkmURz4YVjwm3A9a7F/qj9ZI6uMZSs8a/y9uWsir67KOaVqSgY8Ups3RQ==
X-Google-Smtp-Source: AGHT+IGxpT0PtowK4nXbwBo6xmR4wpQwfJIyxx54rD3fMRCd/5GyvEjX7dU4G/ISQXQI7gpwBX8Y7g==
X-Received: by 2002:a05:600c:524c:b0:431:2b66:44f7 with SMTP id 5b1f17b1804b1-4319ad234d3mr88321435e9.31.1730190374811;
        Tue, 29 Oct 2024 01:26:14 -0700 (PDT)
Message-ID: <4f49f8df-d455-4be2-a245-e876713addf1@suse.com>
Date: Tue, 29 Oct 2024 09:26:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 05/14] x86/xstate: Map/unmap xsave area in
 xstate_set_init() and handle_setbv()
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-6-alejandro.vallejo@cloud.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: <20241028154932.6797-6-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 16:49, Alejandro Vallejo wrote:
> --- a/xen/arch/x86/xstate.c
> +++ b/xen/arch/x86/xstate.c
> @@ -993,7 +993,12 @@ int handle_xsetbv(u32 index, u64 new_bv)
>  
>          clts();
>          if ( curr->fpu_dirtied )
> -            asm ( "stmxcsr %0" : "=m" (curr->arch.xsave_area->fpu_sse.mxcsr) );
> +        {
> +            struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
> +
> +            asm ( "stmxcsr %0" : "=m" (xsave_area->fpu_sse.mxcsr) );
> +            vcpu_unmap_xsave_area(curr, xsave_area);
> +        }

Since it's curr that we're dealing with, is this largely a cosmetic change? I.e.
there's no going to be any actual map/unmap operation in that case? Otherwise
I'd be inclined to say that an actual map/unmap is pretty high overhead for a
mere store of a 32-bit value.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:26:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:26:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827103.1241598 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hYY-00049k-2r; Tue, 29 Oct 2024 08:26:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827103.1241598; Tue, 29 Oct 2024 08:26: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 1t5hYY-00049d-0C; Tue, 29 Oct 2024 08:26:26 +0000
Received: by outflank-mailman (input) for mailman id 827103;
 Tue, 29 Oct 2024 08: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=rNzX=RZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5hYW-0003rl-IM
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:26:24 +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 7ad5a196-95cf-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 09:26:22 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-37d4b0943c7so3474365f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:26:22 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b1333bsm11741948f8f.14.2024.10.29.01.26.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 01:26:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ad5a196-95cf-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730190382; x=1730795182; 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=M53joM6a+vZJrowQ1EN43faC45OotYxJB992c9BKnlE=;
        b=cEbv8P1RWl1q72aLZO5ONdoHJXZ3ZmkTqV/LzDbbDS2cOe2FP2DiQOHlDkFQalrXeX
         IT1k5XWQm77BEBHJokuRxkoO2c3oUhYpIR2wNCoIKWKYmX+S8Y5JMhoCYU7MMXWaOZUK
         k89eu7WZWpcTylmVKGsT9Xv612aBra4/gow/Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730190382; x=1730795182;
        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=M53joM6a+vZJrowQ1EN43faC45OotYxJB992c9BKnlE=;
        b=uSm/KA6iszSlVUYuKUXmlESQahxMXCHT9FdV7b7IKCFI+5k7vd9CY/wWJm1UAP1bWx
         Fv+50OnlIIAKXqmYfbylQyrX4SJvhlwNt+tJoBheL53hNY6HhW5/tsQMvsEc3NSEAnbu
         Jd8pZU2H3cjiOuKyZtp4ncwUixXaw22LHxJUNH4ZrQm2j7rNnoXmOkgIjdWbJuCJOcIT
         BvgCXaurFxV7gKux39F5hDLKEaYFhWB1MhODkcXvkXbU71e+ClvNey2Btdr2SfP1er8M
         4AN9G6tcxfa9dpsW7W9EaLeD+Z4oaxOZhcQNBrgOk+PHd9qF3OWW6LaRDEIJ2c6ZiOzq
         LGCA==
X-Forwarded-Encrypted: i=1; AJvYcCVTtsPEGsT8RtjY/+awF99IxQzw4eQMygbUlF94nkJitd2M04WTANOyVeDIwta9tDmkU6Il45Gs9NU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzHt6VwR/OJZqspG+iGlLhmjbAOGr4Ec6GwJw9SgnFc5JvK786D
	p+eTpbVS4ZVgiu1bSHEOiCEO6xKW+wxAx2MpADZtDVcnMbb20PHcob9afdboano=
X-Google-Smtp-Source: AGHT+IHVJrvUjHm436X6GJnHStEcWv4e6aqm5H5Qk0+maKDOo05/3m+bCrXhwIUsDG4jxQjqUg/vMg==
X-Received: by 2002:adf:edc2:0:b0:37d:4ebe:164b with SMTP id ffacd0b85a97d-380611e1252mr7913261f8f.44.1730190381798;
        Tue, 29 Oct 2024 01:26:21 -0700 (PDT)
Date: Tue, 29 Oct 2024 09:26:20 +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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
Message-ID: <ZyCcLPkiQOeSIAHu@macbook>
References: <20241024154844.8652-1-roger.pau@citrix.com>
 <abadac24-0392-4051-b6a2-08967272f1a1@suse.com>
 <Zx_IZUyNL-Iw-nrL@macbook>
 <51cce7e9-97c5-4c7d-957b-bc17b616fba1@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <51cce7e9-97c5-4c7d-957b-bc17b616fba1@suse.com>

On Tue, Oct 29, 2024 at 08:40:26AM +0100, Jan Beulich wrote:
> On 28.10.2024 18:22, Roger Pau Monné wrote:
> > On Mon, Oct 28, 2024 at 12:33:42PM +0100, Jan Beulich wrote:
> >> On 24.10.2024 17:48, Roger Pau Monne wrote:
> >>> --- a/xen/arch/x86/io_apic.c
> >>> +++ b/xen/arch/x86/io_apic.c
> >>> @@ -71,6 +71,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
> >>>  
> >>>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
> >>>  
> >>> +/*
> >>> + * Store the EOI handle when using interrupt remapping.
> >>> + *
> >>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
> >>> + * format repurposes the vector field to store the offset into the Interrupt
> >>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
> >>> + * longer matches the contents of the RTE vector field.  Add a translation
> >>> + * table so that directed EOI uses the value in the RTE vector field when
> >>> + * interrupt remapping is enabled.
> >>> + *
> >>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
> >>> + * when using the remapped format, but use the translation table uniformly in
> >>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
> >>> + *
> >>> + * The matrix is accessed as [#io-apic][#pin].
> >>> + */
> >>> +static uint8_t **io_apic_pin_eoi;
> >>
> >> Wasn't the conclusion from the v1 discussion that this needs to be a signed
> >> type wider than 8 bits?
> >>
> >>> @@ -298,6 +323,9 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
> >>>      /* Prefer the use of the EOI register if available */
> >>>      if ( ioapic_has_eoi_reg(apic) )
> >>>      {
> >>> +        if ( io_apic_pin_eoi )
> >>> +            vector = io_apic_pin_eoi[apic][pin];
> >>> +
> >>>          /* If vector is unknown, read it from the IO-APIC */
> >>>          if ( vector == IRQ_VECTOR_UNASSIGNED )
> >>>              vector = __ioapic_read_entry(apic, pin, true).vector;
> >>
> >> In addition to what Andrew said here, for this comparison the make sense
> >> ...
> >>
> >>> @@ -1022,7 +1050,20 @@ static void __init setup_IO_APIC_irqs(void)
> >>>  
> >>>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
> >>>  
> >>> +    if ( iommu_intremap )
> >>> +    {
> >>> +        io_apic_pin_eoi = xzalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
> >>> +        BUG_ON(!io_apic_pin_eoi);
> >>> +    }
> >>> +
> >>>      for (apic = 0; apic < nr_ioapics; apic++) {
> >>> +        if ( iommu_intremap )
> >>> +        {
> >>> +            io_apic_pin_eoi[apic] = xzalloc_array(typeof(**io_apic_pin_eoi),
> >>> +                                                  nr_ioapic_entries[apic]);
> >>> +            BUG_ON(!io_apic_pin_eoi[apic]);
> >>> +        }
> >>
> >> ... doesn't the array also need -1 (== IRQ_VECTOR_UNASSIGNED) filling,
> >> rather than zero-filling?
> > 
> > Replying here to both you and Andrews question.  My analysis is that
> > a sentinel is not needed.  clear_IO_APIC_pin() is the only function
> > that calls the EOI routine outside of the irq_desc handlers logic.
> > 
> > It's used either by clear_IO_APIC(), which gets called before
> > io_apic_pin_eoi is allocated,
> 
> Or long after, from disable_IO_APIC().
> 
> > or by check_timer() and/or
> > unlock_ExtINT_logic() both of which will perform an
> > ioapic_write_entry() before the clear_IO_APIC_pin() call.
> 
> In unlock_ExtINT_logic() I see a call to ioapic_read_entry(), whereas the
> call to ioapic_write_entry() happens only later. In check_timer() I'm also
> uncertain a write would occur in _all_ cases. It certainly should occur,
> or else chances are low that the timer interrupt would actually work. Yet
> we surely want to avoid making hard to debug corner cases yet more subtle.

Didn't mention it here, but setup_IO_APIC_irqs() will also perform an
__ioapic_write_entry() call for almost all pins.

> > I've done some XenRT testing with a modified patch that kept the
> > io_apic_pin_eoi as unsigned int, used the sentinel as init value and
> > added an assert in __io_apic_eoi() that the value in the array was
> > never IRQ_VECTOR_UNASSIGNED when the io_apic_pin_eoi was allocated.
> > This never triggered on any hardware XenRT tested on.
> > 
> > Maybe this seems to fragile, and you both prefer to keep the sentinel
> > just in case?
> 
> Well, how certain are you that this testing in particular covered e.g. all
> the quirk cases that check_timer() tries to deal with?

That indeed I cannot guarantee, as I don't have coverage figures for
the XenRT runs.

Seeing as there's too much uncertainty about whether the array will be
initialized, I will go back to the approach of having a sentinel.
Andrew suggested to use a 16bit types, would you agree to that or do
you prefer to use unsigned int as originally proposed?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:27:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:27:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827114.1241609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ha1-0005J8-IO; Tue, 29 Oct 2024 08:27:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827114.1241609; Tue, 29 Oct 2024 08:27: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 1t5ha1-0005J1-FK; Tue, 29 Oct 2024 08:27:57 +0000
Received: by outflank-mailman (input) for mailman id 827114;
 Tue, 29 Oct 2024 08:27: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hZz-0005Iv-Nr
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:27: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 b141cc28-95cf-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 09:27:53 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2fb51f39394so50741921fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:27:53 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b1c489sm11845303f8f.23.2024.10.29.01.27.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:27:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b141cc28-95cf-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730190473; x=1730795273; 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=XwpG1Pgc4kd9eN/tLeCckS0AniMPT1KXJyh7Nv27sS4=;
        b=ZNHxiVeeLciJCH+7jQpjdTq/aqudRX8gCsa0WsmGvVMyKbL9qKXckcBcnN55KtPSB7
         e+UVh8ch44g1xGyhoXchXQH5WpQPZbIiNZtZKpJz2DXlxfQ90pWqc9/P17Ftj0fAkQ+S
         RAa/kFcO3kvcEGKaUQckJ6nPQOPrHE5Wqi7SMQTrRJbgsqNACIsPWyMahcambgchtkUF
         ZhCnE9rjRqnpWRV0HqZ5WBL5/6GvUFVh3BHvpyfigER/J0mTTehwrfPAmrsNfZepUdpy
         zGReCUuAcPHOC4BypSyDgarrqeld7H4HunCG8HJ28fVS5Z8Eiu5IWrPjn+La6voQ0N7i
         Ehbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730190473; x=1730795273;
        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=XwpG1Pgc4kd9eN/tLeCckS0AniMPT1KXJyh7Nv27sS4=;
        b=Y5bHMYuAiIw990eAVKDCt0gIfoKLAHGcDJK//uR5RXSWw9PwIG8rumNbSnqwenf5sV
         aYjkd/2l/eKndC9TQWUMXefqj0y1U/JCiiEQ4nb+BXXHfSq42j5LI8SogmW3HZRVNVaq
         FaxfSnlFuO63p+h05ULjkh0PZ3hnC0X2LgHGg0fAJpADzRCaC0hbubJhXVV++lovnZgG
         IQ95Y5egyd0yiB5B9gLVyQPQ7gPvrTYqSR0jYZNrZ74GYWv4JwsQl9u8xQnwPpLVj0S1
         TQc3TaLM/AXrIyXHgV6cAIpp5pJMCC6/6uWeLS9J9An091Skuv/B+On8SEuR7E830s45
         rX5g==
X-Forwarded-Encrypted: i=1; AJvYcCW2nvunxpYjjEK1lTrZ+j9e//n+tGxq3gQLopWe9+Z5RoOk9RTFt23SXp/hm/AxAw34HhDHw2LlGhQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzjk8XuXwIU1eBVoe+q/ZcHAa+FjtpF3Y7ckeGzjk2A7ARIjFZO
	Jn224D1Z5Rt3IiOhtCLMWbr8g1DM5G0ml0xworvnGpptfWb25fy545U2kc2ugQ==
X-Google-Smtp-Source: AGHT+IE8Zwy1/Ar57/E9ubWLRxXLEOk4TVvEz8udSY3QUDU/qdPFOPoqk0gNCGnu+AGuSTA+lVw3lg==
X-Received: by 2002:a2e:be9a:0:b0:2fb:58c0:de5b with SMTP id 38308e7fff4ca-2fcbdfb098emr44283181fa.11.1730190473120;
        Tue, 29 Oct 2024 01:27:53 -0700 (PDT)
Message-ID: <0df711de-35c7-4141-a27e-ef413c34b426@suse.com>
Date: Tue, 29 Oct 2024 09:27:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 10/14] x86/mpx: Map/unmap xsave area in in read_bndcfgu()
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-11-alejandro.vallejo@cloud.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: <20241028154932.6797-11-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 16:49, Alejandro Vallejo wrote:
> --- a/xen/arch/x86/xstate.c
> +++ b/xen/arch/x86/xstate.c
> @@ -1021,9 +1021,10 @@ int handle_xsetbv(u32 index, u64 new_bv)
>  
>  uint64_t read_bndcfgu(void)
>  {
> +    uint64_t ret = 0;

Seeing the purpose of the variable, imo it would better be named bndcfgu.

Jan

>      unsigned long cr0 = read_cr0();
> -    struct xsave_struct *xstate
> -        = idle_vcpu[smp_processor_id()]->arch.xsave_area;
> +    struct vcpu *v = idle_vcpu[smp_processor_id()];
> +    struct xsave_struct *xstate = vcpu_map_xsave_area(v);
>      const struct xstate_bndcsr *bndcsr;
>  
>      ASSERT(cpu_has_mpx);
> @@ -1049,7 +1050,12 @@ uint64_t read_bndcfgu(void)
>      if ( cr0 & X86_CR0_TS )
>          write_cr0(cr0);
>  
> -    return xstate->xsave_hdr.xstate_bv & X86_XCR0_BNDCSR ? bndcsr->bndcfgu : 0;
> +    if ( xstate->xsave_hdr.xstate_bv & X86_XCR0_BNDCSR )
> +        ret = bndcsr->bndcfgu;
> +
> +    vcpu_unmap_xsave_area(v, xstate);
> +
> +    return ret;
>  }
>  
>  void xstate_set_init(uint64_t mask)



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:30:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:30:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827119.1241618 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hce-0006nb-Tr; Tue, 29 Oct 2024 08:30:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827119.1241618; Tue, 29 Oct 2024 08:30: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 1t5hce-0006nU-RN; Tue, 29 Oct 2024 08:30:40 +0000
Received: by outflank-mailman (input) for mailman id 827119;
 Tue, 29 Oct 2024 08:30: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hcd-0006nO-N4
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:30:39 +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 13992568-95d0-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 09:30:38 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-43152b79d25so47717355e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:30:38 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b5707e8sm166615745e9.36.2024.10.29.01.30.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:30:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13992568-95d0-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730190638; x=1730795438; 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=8Y+8QlVPJHCEiOHvzIbb7ZOpZ1kfzA4TcpPdaqlOqjs=;
        b=XAr25rh9dLC5Uic4y9CT3g8bjW0XHaHX+Ni1IiSaWLbewcQzlvNOIPNQ38I825u8P6
         A4XOi2ateFN3uCG/t1jfoWZPGsssUZwXTHC66eLXUuGxzLJashr++KI+QqJW55chjIrL
         t4XFlzdCuwY+19k4qsHNulXNpKigtenB/rEI/GSYygtp4iPG92jEWgUPLiamG6b3GXNK
         Ym6MqL12Ko6kxZB2xErpl50t6R8c5uo65mpqtkICoJUXeetC/vy7C+3hzbknkS2baloG
         OG76iYxdyveiBLVgY2PMuW8V9O1kTJemAAqKTC5Ms2Pn3GoXZyAOYrgzN003yZzmeN3B
         FvAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730190638; x=1730795438;
        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=8Y+8QlVPJHCEiOHvzIbb7ZOpZ1kfzA4TcpPdaqlOqjs=;
        b=IQB4764dObsdHQzxI9CymN/Lk+AEk85x2Wko8PvJRu7aaFJb6XHOtIDbBMmp14RYLk
         egx+VksI/Q2DmxAL59+WuBnZGz2Yr8jyIqWzS7pADVpL1Hy4tvH2uPbw31+gexB/qWmu
         tDNgXYQuaJrKYYoBw/oT3l2YyLRLUeP/3cYLhtrl87B4c01TUrgLtcy64sKQ3b32IPSS
         BVs3GaGn0upGEyn21P4FC9wABY/ZaSId9/uaxhr+vtXsyNsb4XTaP3X45lrF+YwKPVLq
         ZK+Zsq0Z98dhhDg5b2c4SBJyxHBhAIP92y31xWCOlzyX/WDeWEf7SoFQFLXEl55UX36O
         rI8Q==
X-Forwarded-Encrypted: i=1; AJvYcCU8ISCzP9q1c6DDIkBKBZ7mmosfP96SYEZYNeVKs56pqODM9zvu8m/9VoHhw67GPhdm42ZhHwZG5+Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzf5JSN9igK6tG8wtf2pkigpj+ll1OAqrV/ASwrgXa0mebIjAL9
	aEwCiMgUJDNN8nvtasmNIE2TOF7uF4SLV09YMJV4De7b554He7ygIx4HhQgBIg==
X-Google-Smtp-Source: AGHT+IGLD2jgcvyLPl9EivJVmybeeLdbu+TMZyF3nVtD2Hkusn9kle4l1YecNiiLOSLflowZ1ddMGQ==
X-Received: by 2002:a05:600c:4e86:b0:430:57f2:bae5 with SMTP id 5b1f17b1804b1-4319ad0f60dmr74693115e9.27.1730190638224;
        Tue, 29 Oct 2024 01:30:38 -0700 (PDT)
Message-ID: <fa1ad41c-a310-41f3-809a-b00af614b6dc@suse.com>
Date: Tue, 29 Oct 2024 09:30:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 06/14] x86/hvm: Map/unmap xsave area in
 hvmemul_{get,put}_fpu()
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-7-alejandro.vallejo@cloud.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: <20241028154932.6797-7-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 16:49, Alejandro Vallejo wrote:
> --- a/xen/arch/x86/hvm/emulate.c
> +++ b/xen/arch/x86/hvm/emulate.c
> @@ -2371,7 +2371,8 @@ static int cf_check hvmemul_get_fpu(
>          alternative_vcall(hvm_funcs.fpu_dirty_intercept);
>      else if ( type == X86EMUL_FPU_fpu )
>      {
> -        const fpusse_t *fpu_ctxt = &curr->arch.xsave_area->fpu_sse;
> +        const struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
> +        const fpusse_t *fpu_ctxt = &xsave_area->fpu_sse;
>  
>          /*
>           * Latch current register state so that we can back out changes
> @@ -2397,6 +2398,8 @@ static int cf_check hvmemul_get_fpu(
>              else
>                  ASSERT(fcw == fpu_ctxt->fcw);
>          }
> +
> +        vcpu_unmap_xsave_area(curr, xsave_area);
>      }

Same question as for the other patch: Mainly a cosmetic change, with no
actual map/unmap?

> @@ -2411,7 +2414,8 @@ static void cf_check hvmemul_put_fpu(
>  
>      if ( aux )
>      {
> -        fpusse_t *fpu_ctxt = &curr->arch.xsave_area->fpu_sse;
> +        struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
> +        fpusse_t *fpu_ctxt = &xsave_area->fpu_sse;
>          bool dval = aux->dval;
>          int mode = hvm_guest_x86_mode(curr);
>  
> @@ -2465,6 +2469,8 @@ static void cf_check hvmemul_put_fpu(
>  
>          fpu_ctxt->fop = aux->op;
>  
> +        vcpu_unmap_xsave_area(curr, xsave_area);
> +
>          /* Re-use backout code below. */
>          backout = X86EMUL_FPU_fpu;
>      }

Same here. Because of the overhead concern, such places may be worthwhile to
gain brief comments.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:32:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:32:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827124.1241629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5heY-0007OG-9j; Tue, 29 Oct 2024 08:32:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827124.1241629; Tue, 29 Oct 2024 08:32: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 1t5heY-0007O9-76; Tue, 29 Oct 2024 08:32:38 +0000
Received: by outflank-mailman (input) for mailman id 827124;
 Tue, 29 Oct 2024 08:32: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5heX-0007O3-HA
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:32:37 +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 59e1181a-95d0-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 09:32:36 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-4314f38d274so68381855e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:32:36 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b55f50csm166292855e9.17.2024.10.29.01.32.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:32:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59e1181a-95d0-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730190756; x=1730795556; 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=K/qOK6tCJPY12sV6UaSGMBHPTcaI/MeIurGvWv4Eyxk=;
        b=DRoTCZU6VkXoQZ4yrlejHmQzOLDmz7tFASCnFK0jOgO7A2KVqQvM3ikucwm8azmZ27
         ImobJszRG9Sp1jhmOXxgi6sqkk6iNHMm/tTGslA3rr//uypH0b905saWoysOU/KczecD
         O4grVX9zp9U5PxPEmKPRDOb7c04rVLx0dzNJU4pyx8Og09q5dRFtIV61AAIoPpzpvg7d
         2wCx2jLyWYyGUCbYRscpM5PBU4sF6+SvZ55RnOt/+5r+jiO/8yE9Bp4aZnIhwgZYHQgV
         SK9CUVrKxkbaSzm02q8OmNOGEDIa0qfmgjZd+jmJLIsRtaZTm1F8wTBmhyj75t6xewk0
         M2qw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730190756; x=1730795556;
        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=K/qOK6tCJPY12sV6UaSGMBHPTcaI/MeIurGvWv4Eyxk=;
        b=APrxbJaa8xgCLtyKKhZ1rgpAqp0S8orIuwxBWiXuWcJqfxhOOrIhfXoe/qm6PzbKw9
         NY76PmDRNFc7fXOvbXHhEtqhjmqXQ9EC52kH/KEapXK19gSbXmjYphzQ9I5Rno7LD9N4
         PIjDXYy8rUN0qXlcEAxId9OFw8zs7nBiASHEGK3+339e+A8xPhtBggffYHUrDZCBHxao
         uHQEOFiUZvRddAA8C5FGtMLon6EVkcQ6L06XxVJGipWTudO2YNQE5HhjgZkmbR0sjGup
         9z9lD59QHG9iRTXwM6z6imIzPUPU8YM3jMgCi9a4fqXt7mH1+uTUiKpPN9Bfax9PP+uy
         5cWw==
X-Forwarded-Encrypted: i=1; AJvYcCWaiJBoqomU7NSLfpOLpqxgLBD2FWGBuym1ur+pRdtUChv7QS9HYD0BoQkRqZrPYp2SxN7kSWeBrgU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy9qcCsDnfgV6kRxYXMbJMiUKNYw0cJ+GpO3pMkGKvWmPoAeVr2
	Oo3WQqr4ljd7YnWxPsWBEowVFvLq1qYAjiSjI3fHRmKIrwF/DGjqt/77Yh+z0Q==
X-Google-Smtp-Source: AGHT+IFVxAhRD8e0BHuVJpRT9ogdnRnrV0ltpe17bKM11AvbxhlyUzfHea30qa22T/LWdKXjE3+rKw==
X-Received: by 2002:a05:600c:4f56:b0:431:562a:54be with SMTP id 5b1f17b1804b1-4319ac98af1mr112198785e9.9.1730190756146;
        Tue, 29 Oct 2024 01:32:36 -0700 (PDT)
Message-ID: <dd81f45a-bb3f-4c65-a517-3ec2c56a9912@suse.com>
Date: Tue, 29 Oct 2024 09:32:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/14] x86/mpx: Adjust read_bndcfgu() to clean after
 itself
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-12-alejandro.vallejo@cloud.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: <20241028154932.6797-12-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 16:49, Alejandro Vallejo wrote:
> Overwrite the MPX data dumped in the idle XSAVE area to avoid leaking
> it. While it's not very sensitive, better to err on the side of caution.
> 
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> ---
> Depending on whether the idle domain is considered ASI or non-ASI this
> might or might not be enough. If the idle domain is not ASI the XSAVE
> area would be in the directmap, which would render the zap ineffective
> because it would still be transiently readable from another pCPU.

Yet that needs to be known / decided before this change can sensibly be
acked.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:38:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:38:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827134.1241638 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hjf-0000Ag-S1; Tue, 29 Oct 2024 08:37:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827134.1241638; Tue, 29 Oct 2024 08:37: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 1t5hjf-0000AZ-PR; Tue, 29 Oct 2024 08:37:55 +0000
Received: by outflank-mailman (input) for mailman id 827134;
 Tue, 29 Oct 2024 08:37: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hjf-0000AT-62
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:37:55 +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 169d3fca-95d1-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 09:37:53 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fb584a8f81so47367271fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:37:53 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43193573551sm136694935e9.6.2024.10.29.01.37.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:37:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 169d3fca-95d1-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730191073; x=1730795873; 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=uTGuSycCXg9UQnZ4r21/xl3RN6DXXnawLG16iaDgOtU=;
        b=XL/9PXGzRFIiyjtk2EmgXG+PsUu2DdvUQDK8C9LjXe7xWur/hgqpQFbjY/p2gQ278o
         oFkKIASZsHhqYlTwkzYGyUGTfnt1lb1K+a0lwaqafF5kWs4BoxIYYRkN96VrjfFMHhui
         Iv4huFcwFnRHEf8OKEGxujQB5NWMVDe/pLtSPy022ZN4QPf9qb/DGUnHXCByn0y86v13
         /JwrKerBfkQEg/fA2Fs6jHL/kbCW6OElLlgnYW8bNH/qUNU/RUBSRMTqsutAEljHhoEf
         kXbX+MPm3nKgLpc6REFNSpxxokDpJBSyFjWSQc/DLo7c4Ok2MW7olxckuvi3q+VuP7Gy
         +BAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730191073; x=1730795873;
        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=uTGuSycCXg9UQnZ4r21/xl3RN6DXXnawLG16iaDgOtU=;
        b=QJHscRc7xyuBldM87mmaFHoEiBcLtpg4VcWio6l4KrCZr46V8LJdXsrLYXi1HZweVV
         PfCF/Zeun79BIayzM9pLcKz3I3HmtW4ljJ0LT4LpfMfN4QauTElzBP7T+YOdIb/AqGiy
         R15T9m8M8L5Yq0gnyL4a28cdDE7JpRpX1eCu6S9gHruqcP/2dXrpYqYOne1RNQ6oisy/
         l8Iz6r5PzYfdch5chxzyaESq/keKZBVqXKGjf6NYYCGIIBcjkW6CZbDOrBfIg5q5GuK/
         cv4rZFwxetsjDHhcr+SqSfY91Z+2twtP2+yEDkAOMIXC6YYEYfCJ/kELKzYr/0btyI66
         0/eA==
X-Forwarded-Encrypted: i=1; AJvYcCVUy78H1Tmym9qyEHzQvxxVX/t1eIrFmT5kPQNlZ/Gy4VZkMBxhjd/KK05VvJb8biurQ1t1F6rESNg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwBkQahFhiXJ1w0qaNgytGnxyw9dLhS6FdugIQ2sWVEUwFeuQ30
	vCsIzfD5xu+z1DaknWLoeg1aGuHgMOKzU/KSbHE8KjJHfNoHSNUtWaokhIIA6w==
X-Google-Smtp-Source: AGHT+IFRtszaLh2+yvTCg9TIf60ZZzdH5fsCB2ufi1MfoFqL2cANZ293zEY5uzD6nk3YF2/kuGx5Uw==
X-Received: by 2002:a05:651c:505:b0:2f5:abe:b6bd with SMTP id 38308e7fff4ca-2fcbe099636mr45603761fa.42.1730191072559;
        Tue, 29 Oct 2024 01:37:52 -0700 (PDT)
Message-ID: <85e7334b-b878-4896-8f7a-462ba73ea9e2@suse.com>
Date: Tue, 29 Oct 2024 09:37:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 12/14] x86/fpu: Pass explicit xsave areas to
 fpu_(f)xsave()
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-13-alejandro.vallejo@cloud.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: <20241028154932.6797-13-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 16:49, Alejandro Vallejo wrote:
> --- a/xen/arch/x86/xstate.c
> +++ b/xen/arch/x86/xstate.c
> @@ -300,9 +300,8 @@ void compress_xsave_states(struct vcpu *v, const void *src, unsigned int size)
>      vcpu_unmap_xsave_area(v, xstate);
>  }
>  
> -void xsave(struct vcpu *v, uint64_t mask)
> +void xsave(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
>  {
> -    struct xsave_struct *ptr = v->arch.xsave_area;
>      uint32_t hmask = mask >> 32;
>      uint32_t lmask = mask;
>      unsigned int fip_width = v->domain->arch.x87_fip_width;

Imo this change wants to constify v at the same time, to demonstrate that
nothing is changed through v anymore. The comment may extend to other functions
as well that are being altered here; I only closely looks at this one.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:40:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:40:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827138.1241648 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hlz-0001fl-7y; Tue, 29 Oct 2024 08:40:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827138.1241648; Tue, 29 Oct 2024 08:40: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 1t5hlz-0001fe-5P; Tue, 29 Oct 2024 08:40:19 +0000
Received: by outflank-mailman (input) for mailman id 827138;
 Tue, 29 Oct 2024 08:40: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hly-0001fY-Cm
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:40:18 +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 6bf16507-95d1-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 09:40:16 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-37d462c91a9so3748409f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:40:16 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b4e56csm11826601f8f.65.2024.10.29.01.40.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:40:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6bf16507-95d1-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730191216; x=1730796016; 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=4+/nB4++t8erPsvFNoKBMfb5w/YZzJT/xvPwD0vjYYU=;
        b=DFdLZ+Qfjhl0S6A88oRbr5kIqRo8RfqQeFNBzMdtvhkj23OUksNe/sTvKey2WfAMZd
         P7xDopyKLyucHgO0zuOA/5qsMa9D0sfHB0ZG8oIXK0DiIySWSAutChmhNBiJaypX/HBp
         Mi96BGsAUCm31MgVoFkj3LduWLiiR/S0M/mIjuDGfAoll5yr8NGhw/V9h3zJbEjrZ3bk
         x2cttfGMpoYrLBxac3d9/6+3ZvKKYA6g6Hr9npJAPsh5wVJIuPSoVc8eyJ/eInSmNGqY
         h3pS+Vl0hvBK31S4ADfSIp21KlpRLZa2bjUOgQTkpSzS5rVEu4KikTppkXUIO9xYn7DR
         OwGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730191216; x=1730796016;
        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=4+/nB4++t8erPsvFNoKBMfb5w/YZzJT/xvPwD0vjYYU=;
        b=wyg0UkcCz+ojn0/Hah8ZT1Mm/CCLbsvBjBkfeg9h/mkTO0rIk+XnImGF7NctT/plNC
         gfadYGSV2ba/YsEuCYrQKmLZ9Pq7xVno7wyW8yHlwGTXPn9ptM3Az/yZwZpnbCTuVeFF
         I0wB0F5DZjCP/Y9eih75deInlD6B9td8Ca5HQdPk3jlWOjwVZ0fpfsLpwWqz+wpnCrmW
         xMKsnaHVp5lcdk4vcRdod1oJDtcqzHStuee5jzbcrEoieoLZ9TC3kgDjpSn21G9U5MNE
         vGgrbV7bLl5aKg3+Id29QwvXFYrlXhnMANF2BvfRZ7vjODYR3sz5zS9eVfZJAPIzpGFi
         mu7A==
X-Forwarded-Encrypted: i=1; AJvYcCUb6EasNNoaw1UAa5kPsuK7uCY9g4toe3eWvdLqXpt3Efryp0r9iYLWGCNEOcGOL+IFyUa/7TK8NLs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyXnM//LFk/JsDFJe15ZdoStQKDtXJk0Ho1meIoEwVtRYm5nAs4
	ClNWucfiAcDDk5QM7HrAdeNNN5A5I4MwD6T/1fskWy8Cp+0vSAcaWlU1LLOZ/w==
X-Google-Smtp-Source: AGHT+IE+kqCWxcudYz4QAS9hmxCQbeVhyIXFVtsl2/0hCjF25WHQ6pBXlepPazg8wnD+cbc3mOEKxw==
X-Received: by 2002:a5d:4f92:0:b0:374:b35e:ea6c with SMTP id ffacd0b85a97d-380611dc6e9mr8333811f8f.40.1730191215923;
        Tue, 29 Oct 2024 01:40:15 -0700 (PDT)
Message-ID: <fd9f55a2-4e47-478d-9f52-a3cd9edacac2@suse.com>
Date: Tue, 29 Oct 2024 09:40:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 13/14] x86/fpu: Pass explicit xsave areas to
 fpu_(f)xrstor()
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-14-alejandro.vallejo@cloud.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: <20241028154932.6797-14-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.10.2024 16:49, Alejandro Vallejo wrote:
> --- a/xen/arch/x86/xstate.c
> +++ b/xen/arch/x86/xstate.c
> @@ -374,11 +374,10 @@ void xsave(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
>          ptr->fpu_sse.x[FPU_WORD_SIZE_OFFSET] = fip_width;
>  }
>  
> -void xrstor(struct vcpu *v, uint64_t mask)
> +void xrstor(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
>  {
>      uint32_t hmask = mask >> 32;
>      uint32_t lmask = mask;
> -    struct xsave_struct *ptr = v->arch.xsave_area;
>      unsigned int faults, prev_faults;

Same remark here as on the previous patch as to constification of v.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 08:43:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 08:43:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827145.1241660 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5hpD-0002Lm-Qh; Tue, 29 Oct 2024 08:43:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827145.1241660; Tue, 29 Oct 2024 08: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 1t5hpD-0002Lf-LS; Tue, 29 Oct 2024 08:43:39 +0000
Received: by outflank-mailman (input) for mailman id 827145;
 Tue, 29 Oct 2024 08:43: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5hpB-0002LZ-UU
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 08:43: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 e2b0672b-95d1-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 09:43:35 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-431ac30d379so15079425e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 01:43:35 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431935a5921sm139526675e9.28.2024.10.29.01.43.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 01:43:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e2b0672b-95d1-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730191415; x=1730796215; 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=i6QmzbRI7XaCvLUuebd1zYFkXc94/3bjtZriEB/EvOg=;
        b=Pj01iIrbWepznPNINDpFHog61hmL07XwaF/vNcCOkFrzO8GKxXIrmwW/DD2149kVfi
         wquprRmJla1p0EbRFd6Ha+ZwvJsWjao2Y557TbxA628FoFxuoQnWBw12JQ8BIAJTZnCQ
         v2wfH3NXWNkqg4Zm+3WVz4q70fBe2+RH65EM75WlHpSKkLmdNj79sewCl2C8hlTX+bla
         tX0BIW+At2C1+C7k/xladAQ2sK3ZVTJUA6Z1si5wxPRUTUe6pkrOy7tBrINCrSqnQHqQ
         YNn6m6E7ydg5TMHFbxilGT1SEWJbB3XHyHcSHEr+svBtax2z5X64GfZ0aWqWvtDplWau
         bNmQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730191415; x=1730796215;
        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=i6QmzbRI7XaCvLUuebd1zYFkXc94/3bjtZriEB/EvOg=;
        b=uC8gJ2nbjIWw/AewQsm6ayz3MGoaVbgRWb9TeC7cmZZPU2VDNikL3RlZ/+9JpbWOVz
         vwrjVPIYFW7yJwPMO1xwSDtu0dhyHjkWgU8FEeqPGQwlj89Ut0rwAZX+wVlaQ+uaN9+k
         GjNxu05Of/jSMCfDEz4oSJvkqVwR2i/29GtOgY2z3/qnTqY+YxFV/JGhChNmO7k4kpve
         neOPpbsnHbNOlABidkpTty1hDdMzYN6vd3kp2YsYg4zssDAKqV6BGDNXn1FFKOOYPSP0
         4gUPKBD8x74MOwgSHbewcZfJQXXVE/f87W5wdB6DTAKGnQIcH/gyYqHLL9izcrXK0+s2
         iyRg==
X-Forwarded-Encrypted: i=1; AJvYcCXrCjVwj2r47QbKJX1j+/D3yhob0KV7iPEq0vQlpvULUBs75dU/36zy8Ncxyv7zittq6O8XxaTfGcI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxdRHCDYmqINAWbs9lOYzfp7hIrAbgNehnGtXXFdE+3L9wW/hnq
	UfHRd0yo2I8L2XN396cypnMsvM0DAs15de5wF/kAURziwFFj4bkm3VeTWOrKSg==
X-Google-Smtp-Source: AGHT+IFfhHOOOo/W1eBO4/ilcaIAoGiU1d8frPXK5D1gyPkaZo38CkhrSWSk2J0c3k0peAKlh8GtEw==
X-Received: by 2002:a05:600c:214d:b0:431:b42a:2978 with SMTP id 5b1f17b1804b1-431b42a2d0emr14803265e9.9.1730191415065;
        Tue, 29 Oct 2024 01:43:35 -0700 (PDT)
Message-ID: <065f4fe3-8db4-402c-905f-cd109d90070d@suse.com>
Date: Tue, 29 Oct 2024 09:43:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241024154844.8652-1-roger.pau@citrix.com>
 <abadac24-0392-4051-b6a2-08967272f1a1@suse.com> <Zx_IZUyNL-Iw-nrL@macbook>
 <51cce7e9-97c5-4c7d-957b-bc17b616fba1@suse.com> <ZyCcLPkiQOeSIAHu@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: <ZyCcLPkiQOeSIAHu@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29.10.2024 09:26, Roger Pau Monné wrote:
> On Tue, Oct 29, 2024 at 08:40:26AM +0100, Jan Beulich wrote:
>> On 28.10.2024 18:22, Roger Pau Monné wrote:
>>> On Mon, Oct 28, 2024 at 12:33:42PM +0100, Jan Beulich wrote:
>>>> On 24.10.2024 17:48, Roger Pau Monne wrote:
>>>>> --- a/xen/arch/x86/io_apic.c
>>>>> +++ b/xen/arch/x86/io_apic.c
>>>>> @@ -71,6 +71,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
>>>>>  
>>>>>  static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
>>>>>  
>>>>> +/*
>>>>> + * Store the EOI handle when using interrupt remapping.
>>>>> + *
>>>>> + * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
>>>>> + * format repurposes the vector field to store the offset into the Interrupt
>>>>> + * Remap table.  This causes directed EOI to longer work, as the CPU vector no
>>>>> + * longer matches the contents of the RTE vector field.  Add a translation
>>>>> + * table so that directed EOI uses the value in the RTE vector field when
>>>>> + * interrupt remapping is enabled.
>>>>> + *
>>>>> + * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
>>>>> + * when using the remapped format, but use the translation table uniformly in
>>>>> + * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
>>>>> + *
>>>>> + * The matrix is accessed as [#io-apic][#pin].
>>>>> + */
>>>>> +static uint8_t **io_apic_pin_eoi;
>>>>
>>>> Wasn't the conclusion from the v1 discussion that this needs to be a signed
>>>> type wider than 8 bits?
>>>>
>>>>> @@ -298,6 +323,9 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>>>>>      /* Prefer the use of the EOI register if available */
>>>>>      if ( ioapic_has_eoi_reg(apic) )
>>>>>      {
>>>>> +        if ( io_apic_pin_eoi )
>>>>> +            vector = io_apic_pin_eoi[apic][pin];
>>>>> +
>>>>>          /* If vector is unknown, read it from the IO-APIC */
>>>>>          if ( vector == IRQ_VECTOR_UNASSIGNED )
>>>>>              vector = __ioapic_read_entry(apic, pin, true).vector;
>>>>
>>>> In addition to what Andrew said here, for this comparison the make sense
>>>> ...
>>>>
>>>>> @@ -1022,7 +1050,20 @@ static void __init setup_IO_APIC_irqs(void)
>>>>>  
>>>>>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
>>>>>  
>>>>> +    if ( iommu_intremap )
>>>>> +    {
>>>>> +        io_apic_pin_eoi = xzalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
>>>>> +        BUG_ON(!io_apic_pin_eoi);
>>>>> +    }
>>>>> +
>>>>>      for (apic = 0; apic < nr_ioapics; apic++) {
>>>>> +        if ( iommu_intremap )
>>>>> +        {
>>>>> +            io_apic_pin_eoi[apic] = xzalloc_array(typeof(**io_apic_pin_eoi),
>>>>> +                                                  nr_ioapic_entries[apic]);
>>>>> +            BUG_ON(!io_apic_pin_eoi[apic]);
>>>>> +        }
>>>>
>>>> ... doesn't the array also need -1 (== IRQ_VECTOR_UNASSIGNED) filling,
>>>> rather than zero-filling?
>>>
>>> Replying here to both you and Andrews question.  My analysis is that
>>> a sentinel is not needed.  clear_IO_APIC_pin() is the only function
>>> that calls the EOI routine outside of the irq_desc handlers logic.
>>>
>>> It's used either by clear_IO_APIC(), which gets called before
>>> io_apic_pin_eoi is allocated,
>>
>> Or long after, from disable_IO_APIC().
>>
>>> or by check_timer() and/or
>>> unlock_ExtINT_logic() both of which will perform an
>>> ioapic_write_entry() before the clear_IO_APIC_pin() call.
>>
>> In unlock_ExtINT_logic() I see a call to ioapic_read_entry(), whereas the
>> call to ioapic_write_entry() happens only later. In check_timer() I'm also
>> uncertain a write would occur in _all_ cases. It certainly should occur,
>> or else chances are low that the timer interrupt would actually work. Yet
>> we surely want to avoid making hard to debug corner cases yet more subtle.
> 
> Didn't mention it here, but setup_IO_APIC_irqs() will also perform an
> __ioapic_write_entry() call for almost all pins.
> 
>>> I've done some XenRT testing with a modified patch that kept the
>>> io_apic_pin_eoi as unsigned int, used the sentinel as init value and
>>> added an assert in __io_apic_eoi() that the value in the array was
>>> never IRQ_VECTOR_UNASSIGNED when the io_apic_pin_eoi was allocated.
>>> This never triggered on any hardware XenRT tested on.
>>>
>>> Maybe this seems to fragile, and you both prefer to keep the sentinel
>>> just in case?
>>
>> Well, how certain are you that this testing in particular covered e.g. all
>> the quirk cases that check_timer() tries to deal with?
> 
> That indeed I cannot guarantee, as I don't have coverage figures for
> the XenRT runs.
> 
> Seeing as there's too much uncertainty about whether the array will be
> initialized, I will go back to the approach of having a sentinel.
> Andrew suggested to use a 16bit types, would you agree to that or do
> you prefer to use unsigned int as originally proposed?

I too prefer the more narrow type. I'm not overly fussed between int16_t
vs short.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 09:31:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 09:31:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827154.1241669 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5iZc-0002gw-5C; Tue, 29 Oct 2024 09:31:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827154.1241669; Tue, 29 Oct 2024 09:31: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 1t5iZc-0002gp-26; Tue, 29 Oct 2024 09:31:36 +0000
Received: by outflank-mailman (input) for mailman id 827154;
 Tue, 29 Oct 2024 09:31: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=A7Nu=RZ=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5iZa-0002gj-42
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 09:31:34 +0000
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 (mail-am0eur02on20631.outbound.protection.outlook.com
 [2a01:111:f403:2606::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 946270ec-95d8-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 10:31:31 +0100 (CET)
Received: from AS9PR06CA0494.eurprd06.prod.outlook.com (2603:10a6:20b:49b::18)
 by PAWPR08MB9542.eurprd08.prod.outlook.com (2603:10a6:102:2ed::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.27; Tue, 29 Oct
 2024 09:31:22 +0000
Received: from AMS0EPF0000019F.eurprd05.prod.outlook.com
 (2603:10a6:20b:49b:cafe::43) by AS9PR06CA0494.outlook.office365.com
 (2603:10a6:20b:49b::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.17 via Frontend
 Transport; Tue, 29 Oct 2024 09:31:17 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF0000019F.mail.protection.outlook.com (10.167.16.251) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Tue, 29 Oct 2024 09:31:17 +0000
Received: ("Tessian outbound 0fe1877cedb7:v490");
 Tue, 29 Oct 2024 09:31:16 +0000
Received: from Ldc8a7a416408.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 DDF50CEA-604D-4C31-A608-198096DD01F3.1; 
 Tue, 29 Oct 2024 09:31:04 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Ldc8a7a416408.2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 29 Oct 2024 09:31:04 +0000
Received: from VE1PR08MB5807.eurprd08.prod.outlook.com (2603:10a6:800:1b2::22)
 by GVXPR08MB11183.eurprd08.prod.outlook.com (2603:10a6:150:1fc::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.27; Tue, 29 Oct
 2024 09:31:00 +0000
Received: from VE1PR08MB5807.eurprd08.prod.outlook.com
 ([fe80::ee39:f31e:3c63:985a]) by VE1PR08MB5807.eurprd08.prod.outlook.com
 ([fe80::ee39:f31e:3c63:985a%4]) with mapi id 15.20.8093.024; Tue, 29 Oct 2024
 09: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>
X-Inumbo-ID: 946270ec-95d8-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=x1s2aI13hobkeU7LI4cAxNAwhAakGyoZzuM/C29SQ8LBp7YNlTIZuo5gg9f+Ma4Cp1G3bTX5dW9ALZonZoJND4YkMt9dIlFdUGGjPsGCvo2OVfo13G0zvO9cxd3NplwrN/8JVS3ooJYyzAbKW6AszfBdnN6Uzz7EZDfA48DxnnP1u3qP+GXsnpKLGRqdLa4xxKxsT3NbkwZDA6Pr65yvKiGsnyPUnQew1q3/37u8RACPh40nl6kGu937h+4C0SKBasEqQ4l2uvE4hwEBvuPjKJeadKXQucHGQu99qRmPkD7FHfih8CndL+2+VcZ22qjjNyhiXT0Utp0jIv6UC/exqw==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=LqJli08Blf/04WFbTsfLOB/UUpH495rAO6O7iSuza8c=;
 b=cdm957ITMLgXgTVbnA1I/hm62R/ipfoxzxzH3Ait3tdtIXg81iZv1yfEfxRpNaRqT/1LuDPbPBoDW4342vDiB2I5wWQmU+3rFfzHH/rDMjZF+4HkCbzca2DHxDAOtJqdXi6G5s8nG1gPzxRxCMYpofd50WsW7NxConvDCKbhxQb9oVfo073jkZL/pv9Y19DXPTE5F+doXVXsCt1ZiD8lSDKTN3MOMH2V2Iay6d3jR0itM8jFRyr5H1TBB0e8djHz7iyhrchcnEd08INHrJ7ca0XWir/77l7M/4D2q9cTeic3Dt/mZPTCMALG71Da8wy1uaN/ac3AdKK43nfFw4xOQw==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LqJli08Blf/04WFbTsfLOB/UUpH495rAO6O7iSuza8c=;
 b=GIRgKTiCtIi4v/kIupU66PzY1XZMNtmEwaOrCafA/h+ANc/uFhhhQV8tR/lw/7epmzC2kjk5aaPHxtaUKyBI7inv31k6HJyLY3s4BoNspLyjBAGNHLS6i7RucaoX0pSv/K0RzoUSDDrORlz8+umOuv7pqW+23zT3m8mKLY8I8ls=
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=arm.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: a4cc9fe222e1910c
X-TessianGatewayMetadata: zys75WxDMsUi90n/fIJBHCwj8Yyh6of3/CjrSx/Fc6KfSLoNPX49kYpj+gBzstqvCcpk8Y2F93GSV7KizH9ut28q62zeiUcs2nhFVsbGSH+cJTJfPCbiK9AyHp6kZTI8GVqozB/20D1R0Ox9cOqrJX5fMbvGWGmJdUb5RysqElg=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=TlgtIspLqFdFSXaPTBy30i8a61NDBL/bwhfyCkcFPNTFvS5c+UKpBenEWKqACqm4ClYAAzTc6x7MRmkmlCl+o+wpO/G/OIAKcnGMXe5dhJ+Dj9071JypNzjr3EMazPYjipolTH7yeslclvoOF44gAZB1g+NbH6vw4K8rDSJsxxRMFaW8gp/bJlA7TXhupXBiTijXXISa9QSuhg2BtP4ftiailyJvaZm0D76SMLU2RBb9xRs+caKdkfoKCXGMUhdkj4aa0u8PdFcUx/yo6xPrTq/0YLqpVdaC1yTQaMz3E7I1Z7sj+EJJ5iVoVEaXWJrBmYf8knb0Vx8q+68UFYH66A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=LqJli08Blf/04WFbTsfLOB/UUpH495rAO6O7iSuza8c=;
 b=QZnDRn3NIJjKn8zd3wa5H/h5WdHMetUxMPQrrqWm8vNerytigh68q/sF+QRbT4X4sVgstlsKsVTOWCWO7T46+2QZoEhSzSWSSpHuAIVLc2tmi8vmCFaqe5tfarbKmz4TdzhACKb5bOohU+fkCJki5+Z0a7I58SBt+p5EUYH27yYDiJE25KPiSJCiDH6EBwmnTKKKo4EopgM7scgnyROvEAboL0VxMl7R5g/ZbL15bOkeYcVZO5KtrU1c0SOsdirPcHREI4ekk2iKeuYJKTYMNX1zAXcgMozVfs5V1OC1G5YV00LQZqmgNl8HJuU16By1OU93o+eZPcCroD8aP2vt6w==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LqJli08Blf/04WFbTsfLOB/UUpH495rAO6O7iSuza8c=;
 b=GIRgKTiCtIi4v/kIupU66PzY1XZMNtmEwaOrCafA/h+ANc/uFhhhQV8tR/lw/7epmzC2kjk5aaPHxtaUKyBI7inv31k6HJyLY3s4BoNspLyjBAGNHLS6i7RucaoX0pSv/K0RzoUSDDrORlz8+umOuv7pqW+23zT3m8mKLY8I8ls=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Ayan Kumar Halder <ayankuma@amd.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, Andrew Cooper <andrew.cooper3@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>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Thread-Topic: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Thread-Index: AQHbKUc0cm81q6gzakCso/Bn+PcPfLKcQegAgAAr8wCAAPMaAIAAFveA
Date: Tue, 29 Oct 2024 09:30:59 +0000
Message-ID: <FF40F41F-D5E1-4EEB-865C-6E447D1CA043@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
 <27be8d00-8260-460e-948d-81418b93662a@suse.com>
 <8fa530cb-4d70-4300-8d4e-1e7208f7c045@amd.com>
 <55728fdc-6247-4810-8696-a999713f4a7c@suse.com>
 <3231cc7b-4c2e-4939-a623-a7b9960d1641@amd.com>
 <5fb1ac28-395c-4065-8a70-4bac809c7f50@suse.com>
In-Reply-To: <5fb1ac28-395c-4065-8a70-4bac809c7f50@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	VE1PR08MB5807:EE_|GVXPR08MB11183:EE_|AMS0EPF0000019F:EE_|PAWPR08MB9542:EE_
X-MS-Office365-Filtering-Correlation-Id: 0a2cae54-c2db-49d5-d74f-08dcf7fc70a3
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?ZlZHNzJBYVFTcCs2WnF4VTgrNStwSzByNWUzM1A4d3d4OU43dmt6R3BRU0pP?=
 =?utf-8?B?cHp3NGdGdkpHMUUvVEhZazVUMjVxMEc5c0p5TFo1cFpQaUQ2c3dtRmoxelB2?=
 =?utf-8?B?OUxkejJJWmxYVjhkQXVnQk83MEpEb0tUZEN6b3NDUW0wdXkzUkZNRHB2a1pY?=
 =?utf-8?B?ODgvYnJYc3hRWFRJbVM0YU9BSDR3NjllWEhtWURjcFBCSUE0MmhJbTNzK1c2?=
 =?utf-8?B?TEk3ZDJYYlV4aXFrYXhydzgvNVJpN3h1VUdSbTBsZm9wZWMxcFk4RGh0R2o2?=
 =?utf-8?B?R1hXMFo4d0VHT0FqcVA0b0JzYWVLNDJkd3R5L0YvbEFyazdtanZIbmFVVmtm?=
 =?utf-8?B?dlBzQjVrandvZ3lxMXBFUWN1d1dlK1prWFB6M2Zza21GY1FGRmdVcnRmZitl?=
 =?utf-8?B?L29RS0l1Wkk4MUtjRnNRK08vNWl0c3AzTVc1VG5aei8xdHZxWUZFbEc5cWor?=
 =?utf-8?B?MytuZkd1eWlkRXJkY0VTb1I3STFzWHd0RzB6aHB3RkRpeEdQU2srbURJUlIx?=
 =?utf-8?B?M0FPL1AzYTFROUlZSjZkNHptUGtFVm9yaERKSDR5cTNCdGw3VUp3T0QwWFQz?=
 =?utf-8?B?azdwc2NiYVdnTUZld2Q0OU1hRmhudXVRWkRqTUs1bHNCcXV4aDJmelRBazZn?=
 =?utf-8?B?bzZXaHUyZXpoRzJxVitJcDM0RUwrbmdodU9aa2NMWndPM2srREszd0pmdXZ2?=
 =?utf-8?B?Zk8vQmoxTmRhUTZzMDB1eFZVQWt1bW5wUUhHRUJFNzhpeXRuNXRhUlRuNjI1?=
 =?utf-8?B?MGw0Q3BldUFrZTZDYldpbzhnK28zUDg2cmdBWk9QMkwvUk0veHdORUQ5cExO?=
 =?utf-8?B?UjBRQ3ErZ045T0ZNd2U3ZXlwSkFwK2FvQzUyWFRpanJVMmNRczRTaGVMZDhi?=
 =?utf-8?B?enRPNk40M3l1VXFoN2JNcng2QmxZT0JXTXRJYTdwaVZsMzBBR0ZoMi8rUi8v?=
 =?utf-8?B?TzFNbUdEbUxseGhUdStZWWZONmpXdHN1VjZhNFBxT2FUaFJuKzRVK2kwdXQy?=
 =?utf-8?B?T0FZeUo3UEVCS1lzMk43RFA4NWdabUl1MGVFL1pPTENJTkdoTU9KcTJrbjV1?=
 =?utf-8?B?R0tWMDRGZitFWFlGWkthbmJGaGhCV2lwYmJxSzc2Y1JKVjc4R3d2NFZ4U0lw?=
 =?utf-8?B?dUN1Z1Z4eWh2SnYvLzUyWGlic0RHaHJiS2Y1YUZmdUpMRThwMm12YkI0cmpN?=
 =?utf-8?B?VDJuQmNacjdtTjVnbkFXRklHcjhQTUQ5bWpqT1JPbmc4ZVp2RFNBem9WTjFQ?=
 =?utf-8?B?OHJ1bDlWMjVvdWsrcnJYN0cvRnVsQWNodVF6VjFIWFJLR3RnQlI0VERYaXlO?=
 =?utf-8?B?RlFGZStSdWlINEs4MHNicWFodVF5bUcvK0hLTkNLaC9uZXNEbkd0VkpHU2ha?=
 =?utf-8?B?WnN6NmFxZVk2Mk9DNDBOVkd5aEdGRUl6M0duUmlmQmVna0h1bWVMNWlQUWpO?=
 =?utf-8?B?QVVVYTg2bVFOcC9SRTZNMGt0N3cxZ2MxUC9sRS95aU9XMk40QzJkanNvT1NO?=
 =?utf-8?B?eWFzLzJ0NEVmTmtsaGdSc1AzSlhMT0hpWWZIU29LdUwreHB5MUpXTVBOWUxY?=
 =?utf-8?B?emFmZk9kTlNobndUT1ZMMXd3cENrQjRKRGg5VjE3VDBmQ0xYSWcrMWhKYUl6?=
 =?utf-8?B?c3NCbGYydGJiVkNmemQwSzZ3RTZadFFDNjMyZlFvQVR5ZlJ5ajludGR2citV?=
 =?utf-8?B?STRwdURybmNXUENOZGh6N1Z2SWpUL3duc1Y0azlNUDMwWm9WdnVtdmQwQkR1?=
 =?utf-8?Q?1v0XBQ7g+stvWNWVhVXdb6RIUM0V5O2RguuYh+1?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR08MB5807.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <047529A5B82C624FBC906719537AA690@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11183
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-SkipListedInternetSender:
 ip=[2603:10a6:800:1b2::22];domain=VE1PR08MB5807.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF0000019F.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	74783d9e-f8c9-409b-c2ad-08dcf7fc6618
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|36860700013|82310400026|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?VjdWb1FqVm5IaTFaSVBpWHN6MHArd3k1QWpjUlFOZldENzQwZ2xoN1NSd2cx?=
 =?utf-8?B?NUxvMHJNamVRdkZrZ3UyTmE4Szh0a3czYmkwaEQvU0tZTXVWOWJ4bXlVNm5V?=
 =?utf-8?B?a1VyTWJ5MkVzNzhFQjFFVkdScHlkQVJiVEZIUDBKUHgrUTFhemhsR2xPcFYr?=
 =?utf-8?B?NkJoZGJpMFVSR3h1Q01NbU9FOGtLNkVXTVFCdE5oN2dYMnlmK2pTTjdwTFhs?=
 =?utf-8?B?c3NUc0svTXQ3ODgydFJjN0ZueTRHK0ZiOXhUa2dYWTFSbVJreFY2YmQxSVl3?=
 =?utf-8?B?WFlhMDdBd0ZhNWw4V0hLWXZ5dEtDVHZnQ0NVWVFNaHNnZXlQS3lQSkl4dnNt?=
 =?utf-8?B?aWtKK2ZWT0h4dlM0ZHgrU09Tem43UnlpRFE1NmpBL1dXQ2dlak9EcU41VHds?=
 =?utf-8?B?VHRYVmkyK3N4eFpjT0JacWdDVEtwZUVSZk4vYXM5QlFkR3RNNXk1c1dNcmJX?=
 =?utf-8?B?bnNZc1k2UUtBNyt2L2dKcy9SM0hHNmZDRjhIUWYzalliRDdVZnBjNVdBa1cr?=
 =?utf-8?B?U1Mza3d2Qnppb0pFaXR3UjVRbk5uWlphNFA0c3Q5K01GK28vaFhQVDIxVGF0?=
 =?utf-8?B?a1JGY2p0NUNmc2ZCUjY4M2FoNExGeWs0dXk0c0cybHVUVkI2N0dEQldwOFhh?=
 =?utf-8?B?Nkp5cEFBUHcwNUJ1SnM2bmhZNmZLTlpWRWxBNmlla1pHTENoQjBtY2tHQnpD?=
 =?utf-8?B?MU1zSkpXQjk1MEdZcUlTQUhvU2NXSzJCWStyc0JZZEN0c2FzNURGNDE1cy9O?=
 =?utf-8?B?bGxNemw1UWdzU3hZRXhTOTBwSXVPSnY1ZGtyRDVsMEd0WGJRQk91UHoxMC9h?=
 =?utf-8?B?c3lmTHppeWtrVUdrSWw3MFQwTmNQRGpsTHhVd0JzUVJXL1BQSUZPRXNvbk5h?=
 =?utf-8?B?d01FSHZIRU5IMzlaQkF4cURVM3N0emlvOW1LK09sODZLNFlvZXh4WllnY08y?=
 =?utf-8?B?UkdNdjNvMkZQSXpGamdXV0FHaTd1eVJNWUhHRm5KamJaTTFFZkFEaVlTc2NH?=
 =?utf-8?B?TVR3L25pQVZoWFpuWmQ5UmxHNnlkc25kZ2NBeEYzazl3cnljZjBMMU1TeHFZ?=
 =?utf-8?B?RTE3K0lUV3J6NWxvOUx5M3VQR1ZJK1l3Mm1VUVF0aklBOWNnMFNZa2F5b21t?=
 =?utf-8?B?QmtBY1dWb084WVNVMzVBUm41dys3UW5udEhwTlNzNkNTaXpZUXFkZXY2VWdJ?=
 =?utf-8?B?amMyVExDUzQ3ajQvMDNtbnNpcHVnRERzSDBodmZPdTdVQ3E1WUYxVHBCTWZM?=
 =?utf-8?B?UGFtQ3Vrc2VSTGpRMlZYZWJsUVNKSnArc2dCV2xkblV5ZWhwc2xhWlFYR1g5?=
 =?utf-8?B?bjI1V0thbG1EN0twb29OWThZMWx2NGEyMmlKdmk2MHJVV2NyRE1SbjB3WmdV?=
 =?utf-8?B?Mnk1TERmQzNEZkM1MG04T09RSXl0ZDliazZnOGFuYmxqdG9XWU5Yb3hGbEN1?=
 =?utf-8?B?cE45QzFsZDNSbU5FQ3RVVmszMDY5N0VHd3o1Qi8xK3JHWXhpZEkveVRNU2tC?=
 =?utf-8?B?YVZYN2FqRmRVVzBSVFRzbEQwdm1GQStqaVZmaXJXR2F3Nm9kSEo0SjZiY3p2?=
 =?utf-8?B?ajlQWm0vWGNhblV3cWhFR0xLSWVRUFdJRUZ6UmRkUmtIS2djZzJGMExqVjhu?=
 =?utf-8?B?MDNuOGJUbXFwSVBMWk8zNWMrT0lQZ05CUys0Q09lVWw1ZXZjS0ZYeGZEb00y?=
 =?utf-8?B?Wm9pempNNWlwYksvTjBNcUMvUkdZT21OTmYvazN5dVorZm9PMndGWVc2Nk1Q?=
 =?utf-8?B?OEJPWWJQZUU2aTFUbVRFbUxxNEVoQ0c3QmM2aUVRTGtWWkF1em52bTYvQyt0?=
 =?utf-8?Q?t4Kh6GTUvARswnsWpOwoLQWT5thYiQN1PnFLc=3D?=
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:(13230040)(376014)(1800799024)(36860700013)(82310400026)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2024 09:31:17.2591
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0a2cae54-c2db-49d5-d74f-08dcf7fc70a3
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:
	AMS0EPF0000019F.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAWPR08MB9542

SGkgSmFuLA0KDQo+IE9uIDI5IE9jdCAyMDI0LCBhdCAwODowOCwgSmFuIEJldWxpY2ggPGpiZXVs
aWNoQHN1c2UuY29tPiB3cm90ZToNCj4gDQo+IE9uIDI4LjEwLjIwMjQgMTg6MzgsIEF5YW4gS3Vt
YXIgSGFsZGVyIHdyb3RlOg0KPj4gT24gMjgvMTAvMjAyNCAxNTowMSwgSmFuIEJldWxpY2ggd3Jv
dGU6DQo+Pj4gT24gMjguMTAuMjAyNCAxNTozOSwgQXlhbiBLdW1hciBIYWxkZXIgd3JvdGU6DQo+
Pj4+IE9uIDI4LzEwLzIwMjQgMTI6NTUsIEphbiBCZXVsaWNoIHdyb3RlOg0KPj4+Pj4gT24gMjgu
MTAuMjAyNCAxMzo0NSwgQXlhbiBLdW1hciBIYWxkZXIgd3JvdGU6DQo+Pj4+Pj4gLS0tIGEveGVu
L2FyY2gvS2NvbmZpZw0KPj4+Pj4+ICsrKyBiL3hlbi9hcmNoL0tjb25maWcNCj4+Pj4+PiBAQCAt
NiwxMSArNiwxMyBAQCBjb25maWcgUEhZU19BRERSX1RfMzINCj4+Pj4+PiANCj4+Pj4+PiAgIGNv
bmZpZyBOUl9DUFVTDQo+Pj4+Pj4gICAJaW50ICJNYXhpbXVtIG51bWJlciBvZiBDUFVzIg0KPj4+
Pj4+ICsJcmFuZ2UgMSAxIGlmIEFSTSAmJiBNUFUNCj4+Pj4+PiAgIAlyYW5nZSAxIDE2MzgzDQo+
Pj4+Pj4gICAJZGVmYXVsdCAiMjU2IiBpZiBYODYNCj4+Pj4+PiAgIAlkZWZhdWx0ICI4IiBpZiBB
Uk0gJiYgUkNBUjMNCj4+Pj4+PiAgIAlkZWZhdWx0ICI0IiBpZiBBUk0gJiYgUUVNVQ0KPj4+Pj4+
ICAgCWRlZmF1bHQgIjQiIGlmIEFSTSAmJiBNUFNPQw0KPj4+Pj4+ICsJZGVmYXVsdCAiMSIgaWYg
QVJNICYmIE1QVQ0KPj4+Pj4+ICAgCWRlZmF1bHQgIjEyOCIgaWYgQVJNDQo+Pj4+Pj4gICAJaGVs
cA0KPj4+Pj4+ICAgCSAgQ29udHJvbHMgdGhlIGJ1aWxkLXRpbWUgc2l6ZSBvZiB2YXJpb3VzIGFy
cmF5cyBhbmQgYml0bWFwcw0KPj4+Pj4gSSdtIGFmcmFpZCBJIGNhbid0IGVhc2lseSB0ZWxsIHdo
ZXRoZXIgTVBVIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYW55IG9mDQo+Pj4+PiBSQ0FSMywg
UUVNVSwgb3IgTVBTT0MuIElmIGl0IGNhbiwgdGhlIG5ldyBkZWZhdWx0IGxpbmUgd291bGQgbmVl
ZCB0byBtb3ZlDQo+Pj4+PiB1cCwgYXMgaXQncyB0aGUgZmlyc3Qgb25lIHRoYXQgaGFzIGEgbWF0
Y2ggb24gaXRzIGNvbmRpdGlvbiB3aGljaCBpcyBiZWluZw0KPj4+Pj4gdXNlZC4NCj4+Pj4gTVBV
IGNhbm5vdCBiZSB1c2VkIHdpdGggYW55IG9mIHRoZSBleGlzdGluZyBwbGF0Zm9ybXMuDQo+Pj4g
VGhhdCBpcyAtIHFlbXUgY2FuJ3QgZW11bGF0ZSBzdWNoIGFuIGVudmlyb25tZW50LCBpLmUuIGV2
ZW4gUUVNVSBhbmQgTVBVDQo+Pj4gZG9uJ3QgZ28gdG9nZXRoZXI/DQo+PiANCj4+IFFlbXUgaGFz
IHN1cHBvcnQgZm9yIEFhcmNoMzIgTVBVIGF0IEVMMiBhbmQgRUwxIChpZSBSNTIpLiBBcyBmYXIg
YXMgSSBhbSANCj4+IGF3YXJlLCB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBBYXJjaDY0IE1QVSBp
biBRZW11IChpZSBSODIpLg0KPj4gDQo+PiBFdmVuIGZvciBSNTIsIEkgY291bGQgbm90IGdldCB0
aGUgdXBzdHJlYW0gUWVtdSB3b3JraW5nIChlbXVsYXRpbmcgc29tZSANCj4+IEFybSByZWZlcmVu
Y2UgcGxhdGZvcm0pLg0KPj4gDQo+PiBJIGNvdWxkIGdldCB0aGUgWGlsaW54IGZvcmsgb2YgUWVt
dSAoaHR0cHM6Ly9naXRodWIuY29tL1hpbGlueC9xZW11KSANCj4+IHdvcmtpbmcgd2hpY2ggZW11
bGF0ZXMgQU1EJ3MgU29DIHVzaW5nIFI1Mi4NCj4+IA0KPj4gSG93ZXZlciwgdGhpcyBzaG91bGQg
bm90IGltcGFjdCB0aGUgY3VycmVudCBwYXRjaC4gVGhlcmUgaXMgbm8gUWVtdSBpbiANCj4+IHhl
bi9hcmNoL2FybS9wbGF0Zm9ybXMvKi4NCj4gDQo+IEFpdWkgdGhhdCdzIG5vdCByZWxldmFudC4g
VGhlcmUgaXMgYSBRRU1VIGl0ZW0gaW4geGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9LY29uZmlnLg0K
PiBJIGNvbnRpbnVlIHRvIGZhaWwgdG8gc2VlIHdoeSB0aGF0IGNvdWxkbid0IGJlIHNlbGVjdGVk
IHRvZ2V0aGVyIHdpdGggTVBVLiBZZXQgaWYNCj4gaXQgY2FuIGJlLCB5b3UnZCBlbmQgdXAgd2l0
aCBhIGRlZmF1bHQgb2YgNCwgbm90IDEsIGlmIGl0IGFjdHVhbGx5IF9pc18gc2VsZWN0ZWQuDQo+
IEFsdGVybmF0aXZlbHkgUUVNVSAoYW5kIG1heWJlIGFsc28gUkNBUjMgYW5kIE1QU09DKSBuZWVk
IHRvIGJlIG11dHVhbGx5IGV4Y2x1c2l2ZQ0KPiB3aXRoIE1QVS4gSG1tLCBsb29rcyBsaWtlIHRo
YXQncyBhbHJlYWR5IHRoZSBjYXNlLCBieSBwYXRjaCAyIHN1cHByZXNzaW5nIHRoZQ0KPiAiUGxh
dGZvcm0gU3VwcG9ydCIgcHJvbXB0LiBXaGlsZSB0aGF0IGxvb2tzIGZyYWdpbGUgdG8gbWUsIEkn
bSBzb3JyeSBmb3IgdGhlDQo+IG5vaXNlIHRoZW4uDQoNCkFyZSB5b3Ugc3VnZ2VzdGluZyB0byBt
b3ZlICJkZWZhdWx0ICIxIiBpZiBBUk0gJiYgTVBV4oCdIHJpZ2h0IGFmdGVyIOKAnGRlZmF1bHQg
IjI1NiIgaWYgWDg24oCdPw0KDQpDaGVlcnMsDQpMdWNh


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 09:42:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 09:42:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827160.1241680 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ijg-0004aN-Uz; Tue, 29 Oct 2024 09:42:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827160.1241680; Tue, 29 Oct 2024 09:42: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 1t5ijg-0004aG-Qw; Tue, 29 Oct 2024 09:42:00 +0000
Received: by outflank-mailman (input) for mailman id 827160;
 Tue, 29 Oct 2024 09:41: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5ijf-0004aA-3Y
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 09:41:59 +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 0993cccb-95da-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 10:41:56 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-431481433bdso51767685e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 02:41:56 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b55f779sm167105905e9.18.2024.10.29.02.41.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 02:41:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0993cccb-95da-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730194916; x=1730799716; 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=UMYI2acOpQSGxB2Pfq2OsubTrPdy34iQ9iU0BZw5LZM=;
        b=ExmOY4v83k0dGv9EidyYHJt/Kx/EyV16atHnjwNce2omayW1hdiODwniasNQDfAl5O
         uAa15h3nItDVVpeAWBBtGJfqlX5NOFJUAhi3DPhNJH9+km8cOHf55TnWViBwJxBHTCvO
         PsjvygHzR65CyF/scWB6YbI6R/UNEJciIy7agx88MeovzlLX4dFddKCbyZ+ddWoQ1aCE
         gbo6Bl8s4P/gcZgeniU3kd90+IL84bZkiqeQ7mh7fnCkHng54nijRxOh7FuT8k90cq9X
         edG2SRrJ3G2aSozLLEVFmLwcsa8kM60IPRfGCshUDsasb2/qtchK4b6fS0KCMXlK+u6H
         kXHg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730194916; x=1730799716;
        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=UMYI2acOpQSGxB2Pfq2OsubTrPdy34iQ9iU0BZw5LZM=;
        b=G5ZIyXIUkdxiLnLIEo+wc5s6+FGQYSBC2cGOvOeRyaRxL2PczYbNvcjHpx73TxFNwc
         nEE0wIbz3HqOf41+Mq5Q15u0D+c34MIxftH1h2r3QhM7zNkqPguhXoFIjR5PBcPz0r9S
         m6DcicO1SIlPT0xhWORAL1FRpOqzcwwBrlLR3BLzkpNovGw808Tn/k3rPs/68I9Opu5l
         drGzgZNkEYq3SDyj3bNcAxJ8TVF3mXJsXxzoV8vjxLQ29imENx2s39c62wn7rGsJTqZj
         Ghk240Zym+/QAgCUif7ceF3drENi+cNqd4h3cGSnSxJLRu6FBb3lwYCMTbOyXUlGvLyD
         komw==
X-Forwarded-Encrypted: i=1; AJvYcCXqay/Cw8H/81Aet/ciqulazbvNn/XDFJ4AO1EieQbcnLwYxbBDyo0ZL8I1DpIytFkAh+6bESEUuj0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzv8gga6hV3yca654BjC/WMUfus40fFWtePGsJxZ1mv580b5s2r
	nxGvOgeWxwR0Zgu/pZVscT3WLZPB6u+5jmuDEjqSDTiG6uAZMCSENXSzpw1urw==
X-Google-Smtp-Source: AGHT+IHufijWrFEBdWqY6hVSjKtSwINABIpaN+X3ABxrKwgJkufmX6VGdlWe0CJ0dFnfvfzxAefazQ==
X-Received: by 2002:a05:600c:3b87:b0:42c:b187:bde9 with SMTP id 5b1f17b1804b1-4319ad2f06fmr86118955e9.30.1730194916360;
        Tue, 29 Oct 2024 02:41:56 -0700 (PDT)
Message-ID: <0b27059b-a8ff-4dfb-9652-4f040b8aa08f@suse.com>
Date: Tue, 29 Oct 2024 10:41:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayankuma@amd.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 Andrew Cooper <andrew.cooper3@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>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
 <27be8d00-8260-460e-948d-81418b93662a@suse.com>
 <8fa530cb-4d70-4300-8d4e-1e7208f7c045@amd.com>
 <55728fdc-6247-4810-8696-a999713f4a7c@suse.com>
 <3231cc7b-4c2e-4939-a623-a7b9960d1641@amd.com>
 <5fb1ac28-395c-4065-8a70-4bac809c7f50@suse.com>
 <FF40F41F-D5E1-4EEB-865C-6E447D1CA043@arm.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: <FF40F41F-D5E1-4EEB-865C-6E447D1CA043@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29.10.2024 10:30, Luca Fancellu wrote:
> Hi Jan,
> 
>> On 29 Oct 2024, at 08:08, Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 28.10.2024 18:38, Ayan Kumar Halder wrote:
>>> On 28/10/2024 15:01, Jan Beulich wrote:
>>>> On 28.10.2024 15:39, Ayan Kumar Halder wrote:
>>>>> On 28/10/2024 12:55, Jan Beulich wrote:
>>>>>> On 28.10.2024 13:45, Ayan Kumar Halder wrote:
>>>>>>> --- a/xen/arch/Kconfig
>>>>>>> +++ b/xen/arch/Kconfig
>>>>>>> @@ -6,11 +6,13 @@ config PHYS_ADDR_T_32
>>>>>>>
>>>>>>>   config NR_CPUS
>>>>>>>   	int "Maximum number of CPUs"
>>>>>>> +	range 1 1 if ARM && MPU
>>>>>>>   	range 1 16383
>>>>>>>   	default "256" if X86
>>>>>>>   	default "8" if ARM && RCAR3
>>>>>>>   	default "4" if ARM && QEMU
>>>>>>>   	default "4" if ARM && MPSOC
>>>>>>> +	default "1" if ARM && MPU
>>>>>>>   	default "128" if ARM
>>>>>>>   	help
>>>>>>>   	  Controls the build-time size of various arrays and bitmaps
>>>>>> I'm afraid I can't easily tell whether MPU can be used together with any of
>>>>>> RCAR3, QEMU, or MPSOC. If it can, the new default line would need to move
>>>>>> up, as it's the first one that has a match on its condition which is being
>>>>>> used.
>>>>> MPU cannot be used with any of the existing platforms.
>>>> That is - qemu can't emulate such an environment, i.e. even QEMU and MPU
>>>> don't go together?
>>>
>>> Qemu has support for Aarch32 MPU at EL2 and EL1 (ie R52). As far as I am 
>>> aware, there is no support for Aarch64 MPU in Qemu (ie R82).
>>>
>>> Even for R52, I could not get the upstream Qemu working (emulating some 
>>> Arm reference platform).
>>>
>>> I could get the Xilinx fork of Qemu (https://github.com/Xilinx/qemu) 
>>> working which emulates AMD's SoC using R52.
>>>
>>> However, this should not impact the current patch. There is no Qemu in 
>>> xen/arch/arm/platforms/*.
>>
>> Aiui that's not relevant. There is a QEMU item in xen/arch/arm/platforms/Kconfig.
>> I continue to fail to see why that couldn't be selected together with MPU. Yet if
>> it can be, you'd end up with a default of 4, not 1, if it actually _is_ selected.
>> Alternatively QEMU (and maybe also RCAR3 and MPSOC) need to be mutually exclusive
>> with MPU. Hmm, looks like that's already the case, by patch 2 suppressing the
>> "Platform Support" prompt. While that looks fragile to me, I'm sorry for the
>> noise then.
> 
> Are you suggesting to move "default "1" if ARM && MPU” right after “default "256" if X86”?

Yes.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 09:43:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 09:43:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827167.1241689 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ike-00059W-9f; Tue, 29 Oct 2024 09:43:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827167.1241689; Tue, 29 Oct 2024 09: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 1t5ike-00059N-6n; Tue, 29 Oct 2024 09:43:00 +0000
Received: by outflank-mailman (input) for mailman id 827167;
 Tue, 29 Oct 2024 09:42: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=rNzX=RZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5ikc-00058l-Q5
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 09:42:58 +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 2dc917b1-95da-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 10:42:57 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5cb6704ff6bso6850564a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 02:42:57 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f029511sm459385966b.62.2024.10.29.02.42.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 02:42:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2dc917b1-95da-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730194977; x=1730799777; 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=xL/UlbFPjBRTTlLpTkNVMDwoMWbBYpkFEHzclxK8YBo=;
        b=N1i5qdcYa8cQIiA2kbq6PS7JbFiGyXvk9Ro6KLA+LIMNFzNHLuloOHBkdhYs3//sxu
         EsF+SruVmiSl/+C29LSjctyXvs+P+0nbB+KIjS8PGdVXwjDiQ1Trlt/twBKLiM+i+kDo
         gD1bN84mHC1OcdHUGM4O8yN/pZm2X9H8Rhous=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730194977; x=1730799777;
        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=xL/UlbFPjBRTTlLpTkNVMDwoMWbBYpkFEHzclxK8YBo=;
        b=t2Dl7wqn//4D7kYsPCcWdt1tu2iPC/02Jlyc9ivFasFzyfqXOrXfrcHj3RvZlU/N8l
         ttlg6lpQ6iBwP/4zUkuyf/UZowrOBVX5K4yqctG2Rz0XTCo2fnHc3p9jel2ZdN74xcoM
         1KeEkL45kPB5yOxxR7VBlKH0aS7QmwSBWO87fobZZ7U8T4S0u0VCQSDXtVzcn5nBkkps
         lrs1b4Wsh6UyGeI5XcuDbsh3hAd7uY8Abs2IQZQLihXhfKbth4PTVkuMOBBHcuhK+QIb
         3lxWJfaF3x4VPaeXCxoiRK+F7zLYwIB3RRXA2j7ZnD6G1fL0VbcvQPmiuYVUtf9iYYEN
         Xeaw==
X-Gm-Message-State: AOJu0Yz/dSJfotWCaNXM6qUJ5e/sC3LKrzhjRglHll7ODRkRO5kBi7q/
	eyyC5D0hm330gY4/FZLiJlTcJRZDaG39/EkVSh2aK9IndHRAzIWoQgZ676n65afgvlt8xboUvrN
	c
X-Google-Smtp-Source: AGHT+IEio22AWrj+X2xaIVMPhThhLcl8UOyFNAbZ9with0OcbvQ4Zp4Z0qm0FHHD59gtSLKsE449AA==
X-Received: by 2002:a17:907:9487:b0:a99:c0be:a8ac with SMTP id a640c23a62f3a-a9de5ee477dmr1113535966b.37.1730194976764;
        Tue, 29 Oct 2024 02:42:56 -0700 (PDT)
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>
Subject: [PATCH] x86/pv: gate setting per-domain slot to XPTI being active for the domain
Date: Tue, 29 Oct 2024 10:42:54 +0100
Message-ID: <20241029094254.38659-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It's possible to have XPTI not active for all PV domains (active for domUs,
inactive for dom0), hence don't gate setting the per-domain slot on the
presence of the per-pCPU shadow root page-table.  Instead set the slot based on
whether XPTI is active for the domain.  This avoid pointlessly setting the
per-domain slot if the shadow root page-table won't be used by the domain.

Fixes: 0d3e7f0b6bf0 ('xen/x86: support per-domain flag for xpti')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/domain.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 78a13e6812c9..fd6bb3663027 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1902,12 +1902,11 @@ void cf_check paravirt_ctxt_switch_from(struct vcpu *v)
 
 void cf_check paravirt_ctxt_switch_to(struct vcpu *v)
 {
-    root_pgentry_t *root_pgt = this_cpu(root_pgt);
+    const struct domain *d = v->domain;
 
-    if ( root_pgt )
-        root_pgt[root_table_offset(PERDOMAIN_VIRT_START)] =
-            l4e_from_page(v->domain->arch.perdomain_l3_pg,
-                          __PAGE_HYPERVISOR_RW);
+    if ( d->arch.pv.xpti )
+        this_cpu(root_pgt)[root_table_offset(PERDOMAIN_VIRT_START)] =
+            l4e_from_page(d->arch.perdomain_l3_pg, __PAGE_HYPERVISOR_RW);
 
     if ( unlikely(v->arch.dr7 & DR7_ACTIVE_MASK) )
         activate_debugregs(v);
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 09:48:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 09:48:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827175.1241698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ipx-0006GY-RQ; Tue, 29 Oct 2024 09:48:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827175.1241698; Tue, 29 Oct 2024 09:48: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 1t5ipx-0006GR-Oa; Tue, 29 Oct 2024 09:48:29 +0000
Received: by outflank-mailman (input) for mailman id 827175;
 Tue, 29 Oct 2024 09:48: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5ipw-0006GL-Pd
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 09:48: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 f2b1e3aa-95da-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 10:48:27 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2f7657f9f62so44841761fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 02:48:27 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b5797c3sm169064675e9.40.2024.10.29.02.48.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 02:48:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f2b1e3aa-95da-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730195307; x=1730800107; 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=aFBVhf3Ydfe5S+z1pZ6ubHFPTBV9komyUYJo07Q/2W0=;
        b=hQjY0x6tIDscpUDpBReaJGjnKFszFQ/xn00y4UTSPon81eXVXyj//gpVn4qaoPbSbx
         LyNO//Sdp1B3NYXHPJskgeXCEWJVThoySCTfOOYZhWazI7q6oiAZ0SCgJx4Zm2m/mPEj
         yJlFaWWkU4DBc2irQqhyY4Ybb0PWxBs+xNmHc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730195307; x=1730800107;
        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=aFBVhf3Ydfe5S+z1pZ6ubHFPTBV9komyUYJo07Q/2W0=;
        b=rJdwWch+cpcDjKjkojjNhNPwRuq2bTdb5t5DqaeTnIgpGqXF72Qmy38fiQ2OXjLbrU
         3K7hDEtOnUBBTF5jpIK/w+Xoxtd17usQHmeh8NvyNtkJ0fpRQGugJeydUWGJ2tOe7m1a
         l0UDMuEOMz97lZybkd5u/tAkjljokRkmfqWxDERpmELRJ7pShiMNinz7LBIXM868ki1B
         vrkMTib+ml53vMUOm/DM8Q+o2FYKqwteKv0XUKcO51qNulZbt5YsyYzk/9jHJoYuoMk+
         gFE5vhGp8E6uG8O8uo0O6A/cXc5a4lt0ip18GWrFDz3IiERdzKE+2AJIIfLOzNHzSyOf
         xDuQ==
X-Forwarded-Encrypted: i=1; AJvYcCVTsyuVW/hh1wfllmYOEgF5x7APVBZF/MySIGFVnPC9aIWg73/x5E8EXrHJaZHv2LvjlBj7h6L3iNU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxkHsT41Imm8ZCdHpskZvZAKVti6UO7qaimDYGkO4WPMdAf3tSA
	Go1eJioLlTzRbHlNWSf0QMDXQ3AciKo7L1IeUtxvKX1oGofxHRMDrYMY5ffAv18=
X-Google-Smtp-Source: AGHT+IFJhPMv2vSSMQCot6OwES5zK1i5MOpQ0wcx65LT8lk29cSMoxjo23aCRDPoVU0txn8lmm/SDg==
X-Received: by 2002:a2e:a99e:0:b0:2fb:5a7e:504c with SMTP id 38308e7fff4ca-2fcbdfae76bmr49952301fa.13.1730195307354;
        Tue, 29 Oct 2024 02:48:27 -0700 (PDT)
Message-ID: <36f09f1a-4a0d-4dbf-a529-c4923349628f@citrix.com>
Date: Tue, 29 Oct 2024 09:48:26 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/pv: gate setting per-domain slot to XPTI being active
 for the domain
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>
References: <20241029094254.38659-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241029094254.38659-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29/10/2024 9:42 am, Roger Pau Monne wrote:
> It's possible to have XPTI not active for all PV domains (active for domUs,
> inactive for dom0), hence don't gate setting the per-domain slot on the
> presence of the per-pCPU shadow root page-table.  Instead set the slot based on
> whether XPTI is active for the domain.  This avoid pointlessly setting the
> per-domain slot if the shadow root page-table won't be used by the domain.
>
> Fixes: 0d3e7f0b6bf0 ('xen/x86: support per-domain flag for xpti')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
>  xen/arch/x86/domain.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
> index 78a13e6812c9..fd6bb3663027 100644
> --- a/xen/arch/x86/domain.c
> +++ b/xen/arch/x86/domain.c
> @@ -1902,12 +1902,11 @@ void cf_check paravirt_ctxt_switch_from(struct vcpu *v)
>  
>  void cf_check paravirt_ctxt_switch_to(struct vcpu *v)
>  {
> -    root_pgentry_t *root_pgt = this_cpu(root_pgt);
> +    const struct domain *d = v->domain;
>  
> -    if ( root_pgt )
> -        root_pgt[root_table_offset(PERDOMAIN_VIRT_START)] =
> -            l4e_from_page(v->domain->arch.perdomain_l3_pg,
> -                          __PAGE_HYPERVISOR_RW);
> +    if ( d->arch.pv.xpti )
> +        this_cpu(root_pgt)[root_table_offset(PERDOMAIN_VIRT_START)] =
> +            l4e_from_page(d->arch.perdomain_l3_pg, __PAGE_HYPERVISOR_RW);

I'm not sure this is a wise change.

You're only optimising away a single PTE calculation/write, at the cost
of retaining a mapping to the wrong domain's perdom area; whichever the
last domain to schedule on this pCPU was.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 09:53:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 09:53:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827180.1241709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5iv7-0007si-D1; Tue, 29 Oct 2024 09:53:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827180.1241709; Tue, 29 Oct 2024 09:53: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 1t5iv7-0007sb-A9; Tue, 29 Oct 2024 09:53:49 +0000
Received: by outflank-mailman (input) for mailman id 827180;
 Tue, 29 Oct 2024 09:53: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5iv5-0007sV-NF
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 09:53:47 +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 b01789bc-95db-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 10:53:45 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2fb3c3d5513so46062931fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 02:53:45 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-43193573d47sm141156365e9.3.2024.10.29.02.53.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 02:53:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b01789bc-95db-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730195625; x=1730800425; 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=tNCLtlEyekzuonnD2prZ7A0/X3zVYV0AuuwgCxwcOEc=;
        b=cMc3NJ6yVQAxDoBS6b+p82hJrNiKbiVoLgNPEyJrZALrMDdP9shSAtM6TwEBIGkVsu
         PMeskI6PeU5i8NDzPL9SJjTt5y5A78663vLpCIYpSF0FmVl5i+A5YVEFHWdOAeZrtiJq
         WBE/fG/cm8i21F8P73db0A2VForZjTYvdmx9o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730195625; x=1730800425;
        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=tNCLtlEyekzuonnD2prZ7A0/X3zVYV0AuuwgCxwcOEc=;
        b=Eef7pQxeiZdG+wgwaBk70S3qkYu9JNh0myv70zqZKP83/k92S+e3r5SvFzzpe5HVkE
         vmGQlh6+dRthLxtvmH8MC4iYOPKwQgiFheSKI++IUmSMrLnWUgeCko/P9UR+G3oahmzn
         SUmqdW8NK6m8HZvoL9LLWF3rthE5Sumv1FsvEOx4p6ybSrwZP9yusGR52WV8wkwpDc1w
         ksaGyd7JTLwRrkWG4P3l2Y9GIjlVQUgvDPQTE84vQRICNbZC2R5t+TwtkH+ufcVMF/xJ
         Ix0bN29iflfnstGXS6JWw1BD6hHiqddTiasrhRLa8jJHc3W/Ug1vg/p7QtdgcejiTRk+
         mthQ==
X-Forwarded-Encrypted: i=1; AJvYcCUaBGooI/xbL6C+8giQCiPlqD7K4C52hP9tJhA4xAivcJpWlo2cVH+KHv2ACMRi6WIcvtbcBPz+ftY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy7OOWr6eO6dAg+lPJHuDrGgphg30K0u/Ud3ripkyIiAkFq0XTG
	QR/bWHCt/b8cWwq5D35Fb6J/wRBKujb3WmX2QlD/skbTBd+Y1pjcG1ntm901hbU=
X-Google-Smtp-Source: AGHT+IH0rEwdh8T9xnZ2uLsz8bcWstvxWWTPuiPhonk9pPU37/BtnzgnuwXsiDS4rcpHtDdeivFf+g==
X-Received: by 2002:a2e:e1a:0:b0:2fb:2e27:5334 with SMTP id 38308e7fff4ca-2fcbdfbb81emr37514631fa.15.1730195625020;
        Tue, 29 Oct 2024 02:53:45 -0700 (PDT)
Message-ID: <970e36dd-bedd-405b-966b-66dde57eb118@citrix.com>
Date: Tue, 29 Oct 2024 09:53:43 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 2/6] xen/arm: mpu: Introduce choice between MMU and MPU
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>,
 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>,
 Luca Fancellu <luca.fancellu@arm.com>, Julien Grall <jgrall@amazon.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-3-ayan.kumar.halder@amd.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241028124547.1371867-3-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28/10/2024 12:45 pm, Ayan Kumar Halder wrote:
> diff --git a/CHANGELOG.md b/CHANGELOG.md
> index c499d12dc4..79524cc15f 100644
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -12,6 +12,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
>     - Prefer ACPI reboot over UEFI ResetSystem() run time service call.
>  
>  ### Added
> + - On Arm:
> +   - Support for earlyboot of Xen on Armv8-R (experimental).

Simply "Experimental support for Armv8-R".

The rest of that sentence is going to go stale quite quickly.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 09:58:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 09:58:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827186.1241719 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5izk-0000VD-UI; Tue, 29 Oct 2024 09:58:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827186.1241719; Tue, 29 Oct 2024 09: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 1t5izk-0000V6-RS; Tue, 29 Oct 2024 09:58:36 +0000
Received: by outflank-mailman (input) for mailman id 827186;
 Tue, 29 Oct 2024 09:58: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=A7Nu=RZ=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5izj-0000V0-B8
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 09:58:35 +0000
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur02on20631.outbound.protection.outlook.com
 [2a01:111:f403:2607::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5b501fc5-95dc-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 10:58:33 +0100 (CET)
Received: from AM0PR03CA0091.eurprd03.prod.outlook.com (2603:10a6:208:69::32)
 by AS2PR08MB9716.eurprd08.prod.outlook.com (2603:10a6:20b:604::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Tue, 29 Oct
 2024 09:58:30 +0000
Received: from AMS0EPF000001B1.eurprd05.prod.outlook.com
 (2603:10a6:208:69:cafe::e1) by AM0PR03CA0091.outlook.office365.com
 (2603:10a6:208:69::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.29 via Frontend
 Transport; Tue, 29 Oct 2024 09:58:29 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF000001B1.mail.protection.outlook.com (10.167.16.165) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Tue, 29 Oct 2024 09:58:29 +0000
Received: ("Tessian outbound 4a86a9c66651:v490");
 Tue, 29 Oct 2024 09:58:29 +0000
Received: from L2ea9cea10691.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 B60B730E-DE7E-4BF2-AA54-9782C2F247CE.1; 
 Tue, 29 Oct 2024 09:58:17 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L2ea9cea10691.2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Tue, 29 Oct 2024 09:58:17 +0000
Received: from VE1PR08MB5807.eurprd08.prod.outlook.com (2603:10a6:800:1b2::22)
 by AS8PR08MB7372.eurprd08.prod.outlook.com (2603:10a6:20b:448::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.29; Tue, 29 Oct
 2024 09:58:13 +0000
Received: from VE1PR08MB5807.eurprd08.prod.outlook.com
 ([fe80::ee39:f31e:3c63:985a]) by VE1PR08MB5807.eurprd08.prod.outlook.com
 ([fe80::ee39:f31e:3c63:985a%4]) with mapi id 15.20.8093.024; Tue, 29 Oct 2024
 09:58: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: 5b501fc5-95dc-11ef-99a3-01e77a169b0f
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=eDObh0mTWyOPQ4DzeBb6DQLfmAGRD4OSWU1mDsS5MtaAz2onfG/FwgriS0QPqGrXc4tZf4O/jnzEwCQ4YIopbTlta52Vg55tQGbKQL/M/iW33G0wMRIpv6hD87iOGiIz8uOiHrN3ZXoScgbtsdsCnTGgEVIWUyUQHPJyze+qR4uTN10x/+MsG8x1zskxVyzmnqbIbOJEb5JPGNWaAuFIKu5tHni3ZqKGN6yJf9TxN4eLkVJdsHzdnD8I84leO9+xkZNbNpBW5S/M5UnEKZuID+lE3zH6/dTDj4DCq3g57xYP/R/BstB1KfQyE/EuTOm8SkV61G7nDNLG4KN3ZhxMIg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=gv9mSlHCfOj3aiF7pIQMW8iPAsG24KHUU0/YBD2Uhuk=;
 b=Hg9ifLHFbsddk8KbCvQzg+xs0WkUZb4n0HYu6Lz235NU4Oz/Ol3neRVrxTUEeLFMr5T9F9zW/jDsY9NqoM3tSsNE/+ifSUJYalFeF+Y4Vecs8pvoihw4o8zytojuv4XGUj4J2KZxxe159bGYSMIFY4GiVtq1LUAkjJxaFQpueOuVlc9wJhajEhgOKf5ZSL4fO4LRIOO4ZbLX0tZrlN1ooJ1cZuTmnclJBJ3V09zTMmVYGrnyqnMvHQK0UUb3YSBKqWoZLsVRDZeNSRZZ3spIZurRWaO+ahP6E+Og1FFq8DelsvIgrsnRws2zwJgL7YJg8Zns6R3dunRxCJR9/+MzBA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gv9mSlHCfOj3aiF7pIQMW8iPAsG24KHUU0/YBD2Uhuk=;
 b=n0HdFn782tWjqY3VTuqI3PmcypAABm+7KMM5L0mZo0aX0xhWFxVb3wjqmSBcLgOZVGi7KHTHKb+GvYnlshZVgQyaOz3/R6dsao76NcpQj+5/OsqRxsb2Vg+5SbkXO0HFKzj70/+PmLaqLhwYeiD5v8Mr79tfro1I0O3iH87n+Dk=
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=arm.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: 13d515b4710a0db8
X-TessianGatewayMetadata: N9mM649+BMrbSqC/9KtwkSlf2EGgvqAFWk8Oe3PE/6ZqeyBevVMveXtkV5YNTvWzKgXQs01aYF0PNZ46UyiUrypgsSeXM98QbYITN3PsXbHY0+Pyo7O/rcls9bMX+/eHq6sCh0enJbw0SzssLHhtFTu4zigBSJiHIi4Cis/OQ8U=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=r5JaT/fK03rfwxNx7N3B82lXUG4YhcjvaUx4MrBHiP740KGkAzjP0miQOGmihmoAW1C22EqhItrW+3ITCODwji+TF1NmNjqe+dbtHOzCabvZONZLvMp3tqrQ2lFpZ2x+Sna3g1h5eNXw5B0SBgCxoFTwt6GDiQGj16JAU1askL5VKl7QcTGOk8ZN0pQAnXNbnZRVwJRFzGHJTXHrcEy2g1eD1uPS76QY2fyiMd4QxbCRDNy/PJAtoQeu9jHMl7JHAIEK2mJUw37TLhXaQRjtfhuJliXdmM3S6brmC6SdlT06Am/c0cQjATNoJdzfSQoJeGuKIlZRojSG0WC2nPu6fQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=gv9mSlHCfOj3aiF7pIQMW8iPAsG24KHUU0/YBD2Uhuk=;
 b=Qy2QUyGJ0Vl+MSE5tSrtRzIt3y2CufBWRYIEygiGBiQ9BRLTRnBPxbvm8eKkvtiYFjcytV7ctDPztnSZcNO45FksASE2neQttSKXS7dhtHQu6Tro4OGcHaVYQEoGvzrUltJarLnacMsFF5iAWUdhVyOzOlM58DmoYvL/DbCi/gUnrgslZWTYUt14qYHMF4dbSyNjx0vb1jM+9nKlDj0wQTAP+CXHTWHDM1SIBMUuej/LIyTVihI6hVtgKaKmm31z0Bv6w0t78ZBDEeXu/x6W5Gqjl9d9jVgAm709T3CbF1tINt3duBUnkcd+VNOCUobhuHjVHF8aGFY3RByyC+l93g==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gv9mSlHCfOj3aiF7pIQMW8iPAsG24KHUU0/YBD2Uhuk=;
 b=n0HdFn782tWjqY3VTuqI3PmcypAABm+7KMM5L0mZo0aX0xhWFxVb3wjqmSBcLgOZVGi7KHTHKb+GvYnlshZVgQyaOz3/R6dsao76NcpQj+5/OsqRxsb2Vg+5SbkXO0HFKzj70/+PmLaqLhwYeiD5v8Mr79tfro1I0O3iH87n+Dk=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayankuma@amd.com>
CC: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, Andrew Cooper
	<andrew.cooper3@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>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Thread-Topic: [PATCH v4 6/6] xen/arm: mpu: Implement a dummy
 enable_secondary_cpu_mm
Thread-Index:
 AQHbKUc0cm81q6gzakCso/Bn+PcPfLKcQegAgAAr8wCAAPMaAIAAFveAgAADGoCAAASCgA==
Date: Tue, 29 Oct 2024 09:58:13 +0000
Message-ID: <51A0B8FB-DEB7-4131-93E9-C281B8784DE4@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-7-ayan.kumar.halder@amd.com>
 <27be8d00-8260-460e-948d-81418b93662a@suse.com>
 <8fa530cb-4d70-4300-8d4e-1e7208f7c045@amd.com>
 <55728fdc-6247-4810-8696-a999713f4a7c@suse.com>
 <3231cc7b-4c2e-4939-a623-a7b9960d1641@amd.com>
 <5fb1ac28-395c-4065-8a70-4bac809c7f50@suse.com>
 <FF40F41F-D5E1-4EEB-865C-6E447D1CA043@arm.com>
 <0b27059b-a8ff-4dfb-9652-4f040b8aa08f@suse.com>
In-Reply-To: <0b27059b-a8ff-4dfb-9652-4f040b8aa08f@suse.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3818.100.11.1.3)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	VE1PR08MB5807:EE_|AS8PR08MB7372:EE_|AMS0EPF000001B1:EE_|AS2PR08MB9716:EE_
X-MS-Office365-Filtering-Correlation-Id: 8a2e844b-0d8b-43a6-01bf-08dcf8003d4c
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|376014|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?R05jV2VCWi85UVlkVEdRb2VDMkZteFRNZ3c1eG54aGQxMkI2MzlMcXRFdmhW?=
 =?utf-8?B?MGV5OFh6VnRnYUJpMDBkZm43eC9GZ3ZnNGMrVjVhbW5DN1NkNEJtRG8zNEo0?=
 =?utf-8?B?VTdja0d4Qm12RnFVbUY2NVlqcmZUUWNFbHkwbkhhSHlaSmNjOU92Z1NFZG8y?=
 =?utf-8?B?TVZiSmxZY2NGcUVzeDRuWkdPRzBPVFVuK09oTjhIc2x2WERNRkdXcWMydlVL?=
 =?utf-8?B?TFBTdjIrK08wQzJEb3d6MVBIQ1VyV0RhN2FOVHF4Smsva0pWVm5GbmZ5K001?=
 =?utf-8?B?dFZ6UkY4emFHSnVlKzBVc3ZVY0pNWGg1SzU5eVZVSGt1SEdyNWVuUDFPT25X?=
 =?utf-8?B?aU12RXJlYWhYR3JpQjU5QmtKc1JsM0tDRHhyL0plWVltMTRVTFRBcDFibEl6?=
 =?utf-8?B?QzVyWXhpZkpYRGsycEpVYzNzZVNPWHN2OTdQdWJaM1VCZzdlQzJrbmIyMHM0?=
 =?utf-8?B?OVYwKy9hRndXVkZUVWh0eEtGVURHTGU4QmJzTVFXc1M0VVVHdHBtbmhMS1dG?=
 =?utf-8?B?Z0xuQ2FaWXhrOTk1dnB3ZStJb2Y4NFpMMXRNZG5LTE5XWlIvMkl3K0ZVaVZw?=
 =?utf-8?B?a21wZlY2Y2orNzJuQVU5a0lOYlhtRGRHd2ZtakpvTDRxenZpeXZtbGJ3Qzds?=
 =?utf-8?B?YzJVTWFiOUxHS09vMXVmYnNkeVorK2VjUGc2WE5DbjJnV0gxTjN6ZTE1M1hx?=
 =?utf-8?B?Q2M1QWhzWU9QdkdWSGttWnJmR2RhNHFybWJ1TWc1QUZFWGZrZVpKL0xHcGZp?=
 =?utf-8?B?U3RUV1RFcldkRTBybmpiaDQ3T1VaclZaNzdaR01Id2ZhcGFRMlEvNlRSZS92?=
 =?utf-8?B?QUpDd0U4Mzh5VFl4L0JmeHYzQ1VDRTdKelBUSWZ2M3BZcGtkT0VFbS9zWTdB?=
 =?utf-8?B?cDFGSHR1ajJZQkZScnRJR24rUUNNeXlKQTNSQkpmRnA2cDNOSVVTUWJtRFZV?=
 =?utf-8?B?RHRtOHBndkpMZnowb3owbTR1bEZPKzRJNTFhZDFwSnFOaDhQSGxzcjVzcm5W?=
 =?utf-8?B?VndNd3pLdE1KbXBqcm5sTFErOVlTMVd2WnFoY3VNNzN6em8wQXBPbXVsdnZE?=
 =?utf-8?B?K3JEUGZUSmgyTnpUMVFLNkpFa2NCbUh4QXNjeXRCT3RrRHdnVkVjWW9KTE5D?=
 =?utf-8?B?ZVArU2NKZ0NKZGFjNERhNWZSZHZjVVVNYllkSkVzN0ErTktmc2hqRXpmZEpn?=
 =?utf-8?B?TWtZTjFMcUIrc2N3WE1Qc2h1L3o3ZmpNN1B4U1dlVlZNbzJsSjR4ak4vQnND?=
 =?utf-8?B?UkQvZmhYZkZIbitMUGtXMDlpaHpXVVdVS0dIdE16RklHVU1pMUllTFN5VTBD?=
 =?utf-8?B?aEFtOVBpd095SkRadk1henhxQ0NZdkRhZHlYUGgyZk1wUjJrQlFYSVhkc0g5?=
 =?utf-8?B?NGhweldkT090Zk1IK0dHMXQ2enJLL0pQZzV5aHozZU8xTzVWYVY1c3ppYWU4?=
 =?utf-8?B?UEl4SjV2aE01c2htdGtZNlZRYzJhV01NMXNOS2w3VTdhaFNDbmtPaHdGd1o0?=
 =?utf-8?B?SXFvNVc3YzBpMmU3eDdrT2RmVmtXeGtxUndCeW5lazM4QlBCZEFhRGE3RzJ6?=
 =?utf-8?B?OStsem1Wa1dQaFpkdDdac3dtSnpwbElIYlcySmNBNGRMbllIODdFRVNYdGJH?=
 =?utf-8?B?b1d6UnpETkEzYmcrUW9qUlExTUZBTWdGbFozT0prSWpyVERLdkZtTWhsTnVW?=
 =?utf-8?B?THBNbXBLQW9NTlE0NFNPSlRLR2lyYnN6cjhKTnRSc0diQk5qT3ZGaE5sYVN1?=
 =?utf-8?Q?6Zlng2Uudh3w4IwFZsejRgL7050BXNW3BlkK3AT?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR08MB5807.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <31E793E06DA9E74090A06201E8C5ADC8@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7372
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-SkipListedInternetSender:
 ip=[2603:10a6:800:1b2::22];domain=VE1PR08MB5807.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001B1.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	37879411-dc4b-4ff2-a600-08dcf8003418
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|36860700013|1800799024|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?Z2c3dkFLQUVqNWlqWVhTL2ZqQld4ekNySHZrbHFjZzNsQXFScWN3eTd2RXRU?=
 =?utf-8?B?OU5MY2U3cGh5V0RYTlBwT2Frd2Q1bVI5US9wSUpHNWZmeEcvTVdKelowaktr?=
 =?utf-8?B?ZTBiU0RqeWJ5NXhhOHhhRmlOeHBKdk1LMVBKMjJ1enJIakVFY3g0STdoZ1VF?=
 =?utf-8?B?MWlNZml0SG9DUmJFN1hGcGoyaHhxbkxqRUJScWFWMmdWZklIVXJyZ0xKc1pw?=
 =?utf-8?B?c0NtckZZbmppYVZpRmpTb3B4RVhyY2FGM09adDBXUHRiTm1MeHFhQUJSN09Q?=
 =?utf-8?B?VHk5c0JGUkdtVFZ1RnBiakF2bjd1MlBrMTRhd2pvSWFsejl3Ykl2VDNnRlJV?=
 =?utf-8?B?T1dINjFDZ2hjUTBJN3FJdjl4SVQwamNJcGVtUVFkc1BCZjRTZW5BNVBUK1I4?=
 =?utf-8?B?Z29LbE1md1V2S3V5NDJhN0p3Si82V2xjekt3eFhwY21aRE9PT21mOUJ3dkxY?=
 =?utf-8?B?R1JoQmp0bk5wSXA0RHZON2xKSU1ZenBrWnh2aVBZUnc3MjJwTExka0F5aFZH?=
 =?utf-8?B?dXl3RVB1WnBtdXo0NFRmaVJadnJkVW1Vb21EVE42d3U0eHAyVlhWQTZMbG9r?=
 =?utf-8?B?d25aazNWOFUxcjlSZlRFSFVWaTlZOEprc3RmTEY1UGM4eXBFdE5TQUp4c2Jw?=
 =?utf-8?B?T1NGUUE2azhrMDlVTXJIa2QwVGduR2xuS0o0ZTZCK3lCczhWNG13WDZCMWNk?=
 =?utf-8?B?Tjd5TldsT21YL2R3cHZpNys5UFBEYTlXVDEyZTduWUpnc3FYMllPRUo3Mm9h?=
 =?utf-8?B?M25UekFiUjlValV6akxKclhFc21jWDA0V1BPdUhxSHpEYTJlM1M4c1BHUVlx?=
 =?utf-8?B?a0cwK2diZTRvWHVPR0VhTEdOeVBJZDR5VWJwb2FEUVk3NnZJZjB2ektZa21G?=
 =?utf-8?B?bVRJd3hxaHRqbnNPR1h5aUJ4NkwybjV3UXBjcHltcStPZTJNalZXa2dubWRy?=
 =?utf-8?B?TmZBRUNGRUxIUURTSU50enRRajA0bGMxT3JoSnQyY0drTmJtbGcvV3hGc1pt?=
 =?utf-8?B?R0R1aXRPZTlmVzRhcGNTU0xjdE5IMSt1aGtIN0MyUFI4OEpEWWZ6cHFvaU1x?=
 =?utf-8?B?dUt2KzUxY2g2YUs2S0d0cEpLeU1PbVNOZlhpWjBpTWtjaDgrNFhFTU43WEdm?=
 =?utf-8?B?SVJTQnFWKzFVOFViZjlVYy84eCtlbnNPaVA2ZG5qWXlXR0d6SFBjOHZhcVMy?=
 =?utf-8?B?bTE3NWFtenA5ZDk1eVQ1ZWxaZkFJdjVrUTJ0MHdXSTQ0N3FhUGhLdjFEQlJM?=
 =?utf-8?B?YlR1L2xURXJHVFBjRXU1djZ0czRaWDl3eVFoR3hlUWRXSzRjMVRKZExzZFV4?=
 =?utf-8?B?bGRzYW5wb0JyT2RjOWxDQlUzMlFyY01ZWWR3L1BNclR2Y2F0ak1Wb2ZsemM5?=
 =?utf-8?B?NW9XakhEK25tZUFsbkwyMStienplVDJNOHA3S3VkOHo3YzRxUGpEbG9aRElL?=
 =?utf-8?B?ZFJxWW50dExnLytWaGpDM0o2OHRmTWx6K1p2WEROOE1aOElhMTdWRXNMd2V0?=
 =?utf-8?B?K2w1cHRvMnVvUzN6bC9lcExyRmxSN0RUY2ZKdFdwSlh1enNTMjB3WUdYcWxT?=
 =?utf-8?B?VU8xYUZTa1ZoU3hoeHgwenk5VjZRUFRPVUcvUlVwUWlOUzlWN2VPQi9NZ0dX?=
 =?utf-8?B?OHgwODEzQXh2MTN0ajRYNFdIZkw0bmJTZXN3SC9hZVpSTGlBbUFUVzNjd3JW?=
 =?utf-8?B?K3J2dVhWenlPVDVWQzRaYkpUQlJKT3pnNk5JTTM3d0pTbENKbnREaUMvY0tX?=
 =?utf-8?B?b1pmendQRWVINXNkbVZPeHlPUVhWdi80S2kzUEFSRHZSYnBBNVBjUXpTOEFX?=
 =?utf-8?Q?qSEQxwWXW1PPRbmA97IJzpwEmMz+5Pse+cLUc=3D?=
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:(13230040)(376014)(35042699022)(36860700013)(1800799024)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2024 09:58:29.1066
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8a2e844b-0d8b-43a6-01bf-08dcf8003d4c
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:
	AMS0EPF000001B1.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9716

DQoNCj4gT24gMjkgT2N0IDIwMjQsIGF0IDA5OjQxLCBKYW4gQmV1bGljaCA8amJldWxpY2hAc3Vz
ZS5jb20+IHdyb3RlOg0KPiANCj4gT24gMjkuMTAuMjAyNCAxMDozMCwgTHVjYSBGYW5jZWxsdSB3
cm90ZToNCj4+IEhpIEphbiwNCj4+IA0KPj4+IE9uIDI5IE9jdCAyMDI0LCBhdCAwODowOCwgSmFu
IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPiB3cm90ZToNCj4+PiANCj4+PiBPbiAyOC4xMC4y
MDI0IDE4OjM4LCBBeWFuIEt1bWFyIEhhbGRlciB3cm90ZToNCj4+Pj4gT24gMjgvMTAvMjAyNCAx
NTowMSwgSmFuIEJldWxpY2ggd3JvdGU6DQo+Pj4+PiBPbiAyOC4xMC4yMDI0IDE1OjM5LCBBeWFu
IEt1bWFyIEhhbGRlciB3cm90ZToNCj4+Pj4+PiBPbiAyOC8xMC8yMDI0IDEyOjU1LCBKYW4gQmV1
bGljaCB3cm90ZToNCj4+Pj4+Pj4gT24gMjguMTAuMjAyNCAxMzo0NSwgQXlhbiBLdW1hciBIYWxk
ZXIgd3JvdGU6DQo+Pj4+Pj4+PiAtLS0gYS94ZW4vYXJjaC9LY29uZmlnDQo+Pj4+Pj4+PiArKysg
Yi94ZW4vYXJjaC9LY29uZmlnDQo+Pj4+Pj4+PiBAQCAtNiwxMSArNiwxMyBAQCBjb25maWcgUEhZ
U19BRERSX1RfMzINCj4+Pj4+Pj4+IA0KPj4+Pj4+Pj4gIGNvbmZpZyBOUl9DUFVTDQo+Pj4+Pj4+
PiAgCWludCAiTWF4aW11bSBudW1iZXIgb2YgQ1BVcyINCj4+Pj4+Pj4+ICsJcmFuZ2UgMSAxIGlm
IEFSTSAmJiBNUFUNCj4+Pj4+Pj4+ICAJcmFuZ2UgMSAxNjM4Mw0KPj4+Pj4+Pj4gIAlkZWZhdWx0
ICIyNTYiIGlmIFg4Ng0KPj4+Pj4+Pj4gIAlkZWZhdWx0ICI4IiBpZiBBUk0gJiYgUkNBUjMNCj4+
Pj4+Pj4+ICAJZGVmYXVsdCAiNCIgaWYgQVJNICYmIFFFTVUNCj4+Pj4+Pj4+ICAJZGVmYXVsdCAi
NCIgaWYgQVJNICYmIE1QU09DDQo+Pj4+Pj4+PiArCWRlZmF1bHQgIjEiIGlmIEFSTSAmJiBNUFUN
Cj4+Pj4+Pj4+ICAJZGVmYXVsdCAiMTI4IiBpZiBBUk0NCj4+Pj4+Pj4+ICAJaGVscA0KPj4+Pj4+
Pj4gIAkgIENvbnRyb2xzIHRoZSBidWlsZC10aW1lIHNpemUgb2YgdmFyaW91cyBhcnJheXMgYW5k
IGJpdG1hcHMNCj4+Pj4+Pj4gSSdtIGFmcmFpZCBJIGNhbid0IGVhc2lseSB0ZWxsIHdoZXRoZXIg
TVBVIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggYW55IG9mDQo+Pj4+Pj4+IFJDQVIzLCBRRU1V
LCBvciBNUFNPQy4gSWYgaXQgY2FuLCB0aGUgbmV3IGRlZmF1bHQgbGluZSB3b3VsZCBuZWVkIHRv
IG1vdmUNCj4+Pj4+Pj4gdXAsIGFzIGl0J3MgdGhlIGZpcnN0IG9uZSB0aGF0IGhhcyBhIG1hdGNo
IG9uIGl0cyBjb25kaXRpb24gd2hpY2ggaXMgYmVpbmcNCj4+Pj4+Pj4gdXNlZC4NCj4+Pj4+PiBN
UFUgY2Fubm90IGJlIHVzZWQgd2l0aCBhbnkgb2YgdGhlIGV4aXN0aW5nIHBsYXRmb3Jtcy4NCj4+
Pj4+IFRoYXQgaXMgLSBxZW11IGNhbid0IGVtdWxhdGUgc3VjaCBhbiBlbnZpcm9ubWVudCwgaS5l
LiBldmVuIFFFTVUgYW5kIE1QVQ0KPj4+Pj4gZG9uJ3QgZ28gdG9nZXRoZXI/DQo+Pj4+IA0KPj4+
PiBRZW11IGhhcyBzdXBwb3J0IGZvciBBYXJjaDMyIE1QVSBhdCBFTDIgYW5kIEVMMSAoaWUgUjUy
KS4gQXMgZmFyIGFzIEkgYW0gDQo+Pj4+IGF3YXJlLCB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBB
YXJjaDY0IE1QVSBpbiBRZW11IChpZSBSODIpLg0KPj4+PiANCj4+Pj4gRXZlbiBmb3IgUjUyLCBJ
IGNvdWxkIG5vdCBnZXQgdGhlIHVwc3RyZWFtIFFlbXUgd29ya2luZyAoZW11bGF0aW5nIHNvbWUg
DQo+Pj4+IEFybSByZWZlcmVuY2UgcGxhdGZvcm0pLg0KPj4+PiANCj4+Pj4gSSBjb3VsZCBnZXQg
dGhlIFhpbGlueCBmb3JrIG9mIFFlbXUgKGh0dHBzOi8vZ2l0aHViLmNvbS9YaWxpbngvcWVtdSkg
DQo+Pj4+IHdvcmtpbmcgd2hpY2ggZW11bGF0ZXMgQU1EJ3MgU29DIHVzaW5nIFI1Mi4NCj4+Pj4g
DQo+Pj4+IEhvd2V2ZXIsIHRoaXMgc2hvdWxkIG5vdCBpbXBhY3QgdGhlIGN1cnJlbnQgcGF0Y2gu
IFRoZXJlIGlzIG5vIFFlbXUgaW4gDQo+Pj4+IHhlbi9hcmNoL2FybS9wbGF0Zm9ybXMvKi4NCj4+
PiANCj4+PiBBaXVpIHRoYXQncyBub3QgcmVsZXZhbnQuIFRoZXJlIGlzIGEgUUVNVSBpdGVtIGlu
IHhlbi9hcmNoL2FybS9wbGF0Zm9ybXMvS2NvbmZpZy4NCj4+PiBJIGNvbnRpbnVlIHRvIGZhaWwg
dG8gc2VlIHdoeSB0aGF0IGNvdWxkbid0IGJlIHNlbGVjdGVkIHRvZ2V0aGVyIHdpdGggTVBVLiBZ
ZXQgaWYNCj4+PiBpdCBjYW4gYmUsIHlvdSdkIGVuZCB1cCB3aXRoIGEgZGVmYXVsdCBvZiA0LCBu
b3QgMSwgaWYgaXQgYWN0dWFsbHkgX2lzXyBzZWxlY3RlZC4NCj4+PiBBbHRlcm5hdGl2ZWx5IFFF
TVUgKGFuZCBtYXliZSBhbHNvIFJDQVIzIGFuZCBNUFNPQykgbmVlZCB0byBiZSBtdXR1YWxseSBl
eGNsdXNpdmUNCj4+PiB3aXRoIE1QVS4gSG1tLCBsb29rcyBsaWtlIHRoYXQncyBhbHJlYWR5IHRo
ZSBjYXNlLCBieSBwYXRjaCAyIHN1cHByZXNzaW5nIHRoZQ0KPj4+ICJQbGF0Zm9ybSBTdXBwb3J0
IiBwcm9tcHQuIFdoaWxlIHRoYXQgbG9va3MgZnJhZ2lsZSB0byBtZSwgSSdtIHNvcnJ5IGZvciB0
aGUNCj4+PiBub2lzZSB0aGVuLg0KPj4gDQo+PiBBcmUgeW91IHN1Z2dlc3RpbmcgdG8gbW92ZSAi
ZGVmYXVsdCAiMSIgaWYgQVJNICYmIE1QVeKAnSByaWdodCBhZnRlciDigJxkZWZhdWx0ICIyNTYi
IGlmIFg4NuKAnT8NCj4gDQo+IFllcy4NCg0KTWFrZXMgc2Vuc2UhIA0KDQpXaXRoIHRoYXQ6DQoN
ClJldmlld2VkLWJ5OiBMdWNhIEZhbmNlbGx1IDxsdWNhLmZhbmNlbGx1QGFybS5jb20+DQoNCj4g
DQo+IEphbg0KDQo=


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:00:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:00:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827194.1241729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5j17-0001Dd-CI; Tue, 29 Oct 2024 10:00:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827194.1241729; Tue, 29 Oct 2024 10:00: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 1t5j17-0001Cd-96; Tue, 29 Oct 2024 10:00:01 +0000
Received: by outflank-mailman (input) for mailman id 827194;
 Tue, 29 Oct 2024 10:00: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=rNzX=RZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5j16-000166-Nj
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:00:00 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8e721426-95dc-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 10:59:58 +0100 (CET)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9a26a5d6bfso807761766b.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 02:59:58 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec8100sm456069366b.6.2024.10.29.02.59.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 02:59:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8e721426-95dc-11ef-99a3-01e77a169b0f
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730195998; x=1730800798; 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=mCpd6bfy0g+oKX+yAkpACTUF9tFkdar8E5inKftuhLM=;
        b=KeR+L1tecUj6lAgun633BHYu1K6MB8Q0WK4jtV0bO325IfjamfeMROsKpP1ZWmJCqO
         IuKpmJnU00eStyr6O+wZHCenTaSCi8W738I1NKGf1CmoqmzvdgOrFnvo+4rQJUToLbvz
         a2LMLM592W+gSGWshjAuAKrYqmJAOCBVjpOR8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730195998; x=1730800798;
        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=mCpd6bfy0g+oKX+yAkpACTUF9tFkdar8E5inKftuhLM=;
        b=r0hmd+JROVeD+KhiaU4KxuQByCqlHJb2QB3tFIAlHGBUTRkMI5/O73R40DAEvSdqH3
         yZpHAMhJQPuVMKbzCcokW46g1yIWR471wXGYeBT5Dl+ZbsmZJMolStQz0+kA3z/wEuSU
         zuj4nuEZNGobxWEpOGgGfax/ZWbrmazXS8pXlfvHcfDQ/t0sYozSGxRdsCZFG4YR7mA3
         uTMrzJ1td5pMlx/adDoT+GVdd3HqpR+4WQ3XuQZs537lSegbEOpe9XMFOorNLbbPpHuU
         A/r6dl2Gsybg6Ju/ii0FBZrlu6af6hX7cuHFb3c5q/a1r93pORh+AAD6w2aa9NV5mbO8
         tnSQ==
X-Gm-Message-State: AOJu0Yw34V5QJPZrtHb6TiIty0ws/LVmlGZ8q4Kb8rgJOcrqEoNVeM8L
	UFX26SInwZzbQ13H9o9qQBN5e4Y0W+Xv8iaD7H6C5MwJt16vmoBc9nyobAC3nnQ=
X-Google-Smtp-Source: AGHT+IE3Tnh0/ujj/wnKDmHVO5e0Bhy/fxylP+GpA+w1XjCsV84NYoCqa7Ispi6M2fcDanHL59ZW9w==
X-Received: by 2002:a17:907:6d09:b0:a99:f887:ec09 with SMTP id a640c23a62f3a-a9de5ecade8mr1033413866b.35.1730195998294;
        Tue, 29 Oct 2024 02:59:58 -0700 (PDT)
Date: Tue, 29 Oct 2024 10:59:57 +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>
Subject: Re: [PATCH] x86/pv: gate setting per-domain slot to XPTI being
 active for the domain
Message-ID: <ZyCyHetxVah1KxZ4@macbook>
References: <20241029094254.38659-1-roger.pau@citrix.com>
 <36f09f1a-4a0d-4dbf-a529-c4923349628f@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <36f09f1a-4a0d-4dbf-a529-c4923349628f@citrix.com>

On Tue, Oct 29, 2024 at 09:48:26AM +0000, Andrew Cooper wrote:
> On 29/10/2024 9:42 am, Roger Pau Monne wrote:
> > It's possible to have XPTI not active for all PV domains (active for domUs,
> > inactive for dom0), hence don't gate setting the per-domain slot on the
> > presence of the per-pCPU shadow root page-table.  Instead set the slot based on
> > whether XPTI is active for the domain.  This avoid pointlessly setting the
> > per-domain slot if the shadow root page-table won't be used by the domain.
> >
> > Fixes: 0d3e7f0b6bf0 ('xen/x86: support per-domain flag for xpti')
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >  xen/arch/x86/domain.c | 9 ++++-----
> >  1 file changed, 4 insertions(+), 5 deletions(-)
> >
> > diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
> > index 78a13e6812c9..fd6bb3663027 100644
> > --- a/xen/arch/x86/domain.c
> > +++ b/xen/arch/x86/domain.c
> > @@ -1902,12 +1902,11 @@ void cf_check paravirt_ctxt_switch_from(struct vcpu *v)
> >  
> >  void cf_check paravirt_ctxt_switch_to(struct vcpu *v)
> >  {
> > -    root_pgentry_t *root_pgt = this_cpu(root_pgt);
> > +    const struct domain *d = v->domain;
> >  
> > -    if ( root_pgt )
> > -        root_pgt[root_table_offset(PERDOMAIN_VIRT_START)] =
> > -            l4e_from_page(v->domain->arch.perdomain_l3_pg,
> > -                          __PAGE_HYPERVISOR_RW);
> > +    if ( d->arch.pv.xpti )
> > +        this_cpu(root_pgt)[root_table_offset(PERDOMAIN_VIRT_START)] =
> > +            l4e_from_page(d->arch.perdomain_l3_pg, __PAGE_HYPERVISOR_RW);
> 
> I'm not sure this is a wise change.
> 
> You're only optimising away a single PTE calculation/write, at the cost
> of retaining a mapping to the wrong domain's perdom area; whichever the
> last domain to schedule on this pCPU was.

If XPTI is not used by the next vCPU there will be plenty of stale
mappings in the shadow root_pgt, as it won't be updated on return to
guest context because it's not used.  All guest controlled slots will
be outdated.

Note that currently if the next vCPU is HVM the slot won't get updated
either, as context switching to an HVM vCPU won't call
paravirt_ctxt_switch_to().

I don't think updating the per-domain slot makes any sense if the
root_pgt won't be used by the vCPU.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:05:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:05:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827199.1241739 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5j6F-0002iU-Ux; Tue, 29 Oct 2024 10:05:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827199.1241739; Tue, 29 Oct 2024 10: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 1t5j6F-0002iN-Rj; Tue, 29 Oct 2024 10:05:19 +0000
Received: by outflank-mailman (input) for mailman id 827199;
 Tue, 29 Oct 2024 10: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=ottI=RZ=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1t5j6E-0002iF-HY
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:05:18 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4c23a680-95dd-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 11:05:17 +0100 (CET)
Received: from truciolo.bugseng.com (unknown [78.209.134.168])
 by support.bugseng.com (Postfix) with ESMTPSA id C5E004EE074E;
 Tue, 29 Oct 2024 11:05:15 +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: 4c23a680-95dd-11ef-a0c3-8be0dac302b0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bugseng.com; s=mail;
	t=1730196316; bh=wRYHOgPPtTt/Og4v5KLi4jNOtEDDhTloZVW3e84WLG8=;
	h=From:To:Cc:Subject:Date:From;
	b=O/twVt8vOlQDCPhA7pxRMGpEtuJmEgNI2IhgVrtdt3hGXXZuXbYMhK3HCrMtRRsFs
	 6aRMnU76fYsU5kYYoc5SWwvOdSmdO4HR5eX4p+B84rzRIb4vmFiynKMwiWF8+kW8Fx
	 2tdlpIM2miMLnvbgMo9MtMCqsDfzz+LIxfbp0sEt4OtpcqsvWomfNuj2/wHE7Wnz95
	 9lLEX42ozX4fl8v9DwE/2ZBR3yaBBaWYUmFpe8egCeYt/cyJegY2ELvt4xdDZQiA3n
	 Q4lwUMkKT+FkJQIxXk5GcLmNn479W4J/cJ/fQiBO8RTZCshqiLkgQN5wLZDb3VJmh6
	 fjVctTUpOWiyQ==
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>
Subject: [XEN PATCH] automation/eclair: monitor Rules 11.2 and 18.1 and update configuration
Date: Tue, 29 Oct 2024 11:05:00 +0100
Message-ID: <b513d40f6195226b421012e0cf42bb14279cd0b3.1730196105.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add Rule 11.2 and Rule 18.1 to the monitored set.

Tag Rule 7.3 as clean.
Tag Rule 11.2 and Rule 20.7 as clean only for arm.

Rule 2.2, Rule 9.5 and Directive 4.12 are not accepted:
do not enable them and do not tag them as clean.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 automation/eclair_analysis/ECLAIR/monitored.ecl | 5 ++---
 automation/eclair_analysis/ECLAIR/tagging.ecl   | 7 +++----
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/automation/eclair_analysis/ECLAIR/monitored.ecl b/automation/eclair_analysis/ECLAIR/monitored.ecl
index 4d9ef1bd83..4e1deef7a7 100644
--- a/automation/eclair_analysis/ECLAIR/monitored.ecl
+++ b/automation/eclair_analysis/ECLAIR/monitored.ecl
@@ -6,13 +6,11 @@
 -enable=MC3R1.D4.7
 -enable=MC3R1.D4.10
 -enable=MC3R1.D4.11
--enable=MC3R1.D4.12
 -enable=MC3R1.D4.14
 -enable=MC3R1.R1.1
 -enable=MC3R1.R1.3
 -enable=MC3R1.R1.4
 -enable=MC3R1.R2.1
--enable=MC3R1.R2.2
 -enable=MC3R1.R2.6
 -enable=MC3R1.R3.1
 -enable=MC3R1.R3.2
@@ -43,10 +41,10 @@
 -enable=MC3R1.R9.2
 -enable=MC3R1.R9.3
 -enable=MC3R1.R9.4
--enable=MC3R1.R9.5
 -enable=MC3R1.R10.1
 -enable=MC3R1.R10.2
 -enable=MC3R1.R11.1
+-enable=MC3R1.R11.2
 -enable=MC3R1.R11.7
 -enable=MC3R1.R11.8
 -enable=MC3R1.R11.9
@@ -66,6 +64,7 @@
 -enable=MC3R1.R17.4
 -enable=MC3R1.R17.5
 -enable=MC3R1.R17.6
+-enable=MC3R1.R18.1
 -enable=MC3R1.R18.2
 -enable=MC3R1.R18.6
 -enable=MC3R1.R18.8
diff --git a/automation/eclair_analysis/ECLAIR/tagging.ecl b/automation/eclair_analysis/ECLAIR/tagging.ecl
index 76032b1fe1..e1d4ed012a 100644
--- a/automation/eclair_analysis/ECLAIR/tagging.ecl
+++ b/automation/eclair_analysis/ECLAIR/tagging.ecl
@@ -28,7 +28,6 @@ MC3R1.D4.14||
 MC3R1.R1.1||
 MC3R1.R1.3||
 MC3R1.R1.4||
-MC3R1.R2.2||
 MC3R1.R2.6||
 MC3R1.R3.1||
 MC3R1.R3.2||
@@ -42,6 +41,7 @@ MC3R1.R6.1||
 MC3R1.R6.2||
 MC3R1.R7.1||
 MC3R1.R7.2||
+MC3R1.R7.3||
 MC3R1.R7.4||
 MC3R1.R8.1||
 MC3R1.R8.2||
@@ -54,7 +54,6 @@ MC3R1.R8.14||
 MC3R1.R9.2||
 MC3R1.R9.3||
 MC3R1.R9.4||
-MC3R1.R9.5||
 MC3R1.R10.2||
 MC3R1.R11.6||
 MC3R1.R11.7||
@@ -109,11 +108,11 @@ MC3R1.R22.10"
 -setq=target,getenv("XEN_TARGET_ARCH")
 
 if(string_equal(target,"x86_64"),
-    service_selector({"additional_clean_guidelines","MC3R1.D4.3"})
+    service_selector({"additional_clean_guidelines","none()"})
 )
 
 if(string_equal(target,"arm64"),
-    service_selector({"additional_clean_guidelines","MC3R1.R2.1||MC3R1.R5.3||MC3R1.R7.3||MC3R1.R16.3||MC3R1.R16.6"})
+    service_selector({"additional_clean_guidelines","MC3R1.R2.1||MC3R1.R5.3||MC3.R11.2||MC3R1.R16.3||MC3R1.R16.6||MC3R1.R20.7"})
 )
 
 -reports+={clean:added,"service(clean_guidelines_common||additional_clean_guidelines)"}
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:30:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:30:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827209.1241768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jUA-0007Qv-FB; Tue, 29 Oct 2024 10:30:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827209.1241768; Tue, 29 Oct 2024 10:30: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 1t5jUA-0007QR-CM; Tue, 29 Oct 2024 10:30:02 +0000
Received: by outflank-mailman (input) for mailman id 827209;
 Tue, 29 Oct 2024 10:30: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5jU8-0006t0-Bt
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:30:00 +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 bde1b9c7-95e0-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 11:29:56 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9a6acac4c3so832132266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:29:56 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dfbc7e8sm458495466b.31.2024.10.29.03.29.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 03:29:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bde1b9c7-95e0-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmQiLCJoZWxvIjoibWFpbC1lajEteDYyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImJkZTFiOWM3LTk1ZTAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMTk3Nzk2LjQyOTgxOSwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730197795; x=1730802595; 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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=MUAQfGwpge00Py/t8zTeur+4TIm6FpmnHwOil5HPpJpZPj8IVadkF9xrruucWVsuoJ
         OuHf5yluAalHwULeoTkokmikoJYx8KAaUaKuXkeprS3Ce0K4+K33ERRUNVfEaLpjOWWc
         30qeMiYEyx228d0s+eOHtd70HaWMa7W7dfHLE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730197795; x=1730802595;
        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=tUEXdxMnhhDzo/2gzjHB2TfqPR4THpXflyTPiqcQYhg=;
        b=exwVeqKR1gxhdTejmyugiFo0auzRMV5dxmgiZjOz9/y35HblTyCa3iuaYP145RkJ7F
         WxPIkjS2AMh8JhX+1yqNDk/HpxLEORydq5N+ttcvO7mHNHy2Y0vjUQZKKlO8nUBJtQPy
         vpe7gcB3KLMbkdSYMPFnnbpHX9a2T3mvj55PAqENHKW0qEPeKoBbW5QtMzleb0ZIArmu
         szHIo5TPS+u8mZgJne6csJP1/sQ4Y/xkjgvcfTA7f5tn3SB0hTSq3VbkB8d/ABqIUJCi
         4SqTcFBhUM3x8u5zCLVNFWG59jinmhXR3e4XL6oM3VYWTvgYQorM7w4lbU9c6VSG/wMP
         vlVQ==
X-Gm-Message-State: AOJu0YzyTRNp9SJVMJsOFlO0iQXcqoDJfTAUdSbY84X98YNQdHA6lgeB
	aAK7+VqTFuKO2oG86fgSN65OXMRDbhFI8gjaLRc9G3wvZbz6dCj7mYSRN1yxgwdmWUZB1x4MLBi
	1
X-Google-Smtp-Source: AGHT+IHuaiAwnRmIeicovLku4Aje8nLcMMxOIYnEMOQVMXbzlJRUcAcOn3Plls0fiPUc9Ysx80nUYg==
X-Received: by 2002:a17:906:6a09:b0:a99:ffdb:6fef with SMTP id a640c23a62f3a-a9de61cef8amr1269099566b.46.1730197795470;
        Tue, 29 Oct 2024 03:29:55 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v7 4/5] x86/boot: Use trampoline_phys variable directly from C code
Date: Tue, 29 Oct 2024 10:29:41 +0000
Message-Id: <20241029102942.162912-5-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241029102942.162912-1-frediano.ziglio@cloud.com>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order;
- avoid useless casts.
---
 xen/arch/x86/boot/head.S  | 6 +-----
 xen/arch/x86/boot/reloc.c | 8 ++++++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index 5da7ac138f..dcda91cfda 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -510,13 +510,9 @@ trampoline_setup:
         mov     %esi, sym_esi(xen_phys_start)
         mov     %esi, sym_esi(trampoline_xen_phys_start)
 
-        /* Get bottom-most low-memory stack address. */
-        mov     sym_esi(trampoline_phys), %ecx
-        add     $TRAMPOLINE_SPACE,%ecx
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
+        /*      reloc(magic/eax, info/edx) using fastcall. */
         call    reloc
 
 #ifdef CONFIG_PVH_GUEST
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 707d9c5f15..e50e161b27 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -19,6 +19,9 @@
 #include <xen/kconfig.h>
 #include <xen/multiboot.h>
 #include <xen/multiboot2.h>
+#include <xen/page-size.h>
+
+#include <asm/trampoline.h>
 
 #include <public/arch-x86/hvm/start_info.h>
 
@@ -344,9 +347,10 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
+void *reloc(uint32_t magic, uint32_t in)
 {
-    memctx ctx = { trampoline };
+    /* Get bottom-most low-memory stack address. */
+    memctx ctx = { trampoline_phys + TRAMPOLINE_SPACE };
 
     switch ( magic )
     {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:30:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:30:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827207.1241749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jU8-0006tO-RJ; Tue, 29 Oct 2024 10:30:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827207.1241749; Tue, 29 Oct 2024 10: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 1t5jU8-0006tH-Nx; Tue, 29 Oct 2024 10:30:00 +0000
Received: by outflank-mailman (input) for mailman id 827207;
 Tue, 29 Oct 2024 10:29: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5jU7-0006t0-MN
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:29:59 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bbedd7c9-95e0-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 11:29:53 +0100 (CET)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a9a2cdc6f0cso709601066b.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:29:53 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dfbc7e8sm458495466b.31.2024.10.29.03.29.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 03:29:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bbedd7c9-95e0-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmIiLCJoZWxvIjoibWFpbC1lajEteDYyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImJiZWRkN2M5LTk1ZTAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMTk3NzkzLjE3ODU3Mywic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730197792; x=1730802592; 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=hS8svhkyol/S1baufHVWpKnQCinKqO3REziB/hW8L1k=;
        b=bY9+QFqZ1lx/Ko2D3g+gUdyL+3coc8ZMWdERW9okK3vDQa4lzUgJkmv/8z9KgukI1M
         x+3jmNI4IlF2aJxQ4hoaenMjy5JWicJlsSisP2qhxqtMk5Y1/++6JrR+Lx1cj/1R+6A/
         4/gcqiZ64FvHfvHPkoklUhbod3ob3akjvmuGY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730197792; x=1730802592;
        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=hS8svhkyol/S1baufHVWpKnQCinKqO3REziB/hW8L1k=;
        b=i6XkMLJaBMXXzUIZz/YuFLeMFDxa/4jrtb2m0DYdzuZ0moPlAhGElQjn1Ku5XjSYCA
         z+L+ZZIJk1hKxNnGqHr/WbKlSsb+8AVH8dxjBGOyreIrZOP9k/sVsYiOInilJnDZ23eR
         OuW8jqSC4+VX1PoSRO90NnZfbLbpQzwTJgzvbO+SzNbgLTQ97mfb5SbZb3mOmPwTjPWg
         sBj/2URP0iT7vsuDicyzxWO7A0qw4A1nEP45lvuzsC5S1JfHgRjJMlW56M4qeoMPWF03
         MPgSzQhEFvkiSLnJcML+W+LjlGn3Q+DUmDY27e+bB790AEe8MPGjIVhNzdGRLnJvvaWK
         jJSw==
X-Gm-Message-State: AOJu0YzdykjYB82BZZLtRyD1oHz6gSqerB5vfR67+MjrXSZ4kMJSLxnw
	9/p4E8xrTy43Xg12+Xh9Ri379kSXYmmvh0RWmIjSmUnin1C7Ydf7y2it73rTOIiLRTp9ExtCtoe
	G
X-Google-Smtp-Source: AGHT+IG6JXUIUp9q740dSC51DhUmVkuxn7j/9gQQsQET5h6gepj8xqjZEQOgKb5PjQ/i4f0EtOhzew==
X-Received: by 2002:a17:907:728e:b0:a9a:4eac:a2a5 with SMTP id a640c23a62f3a-a9de619bb5bmr1014625566b.63.1730197792189;
        Tue, 29 Oct 2024 03:29:52 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v7 0/5] Reuse 32 bit C code more safely
Date: Tue, 29 Oct 2024 10:29:37 +0000
Message-Id: <20241029102942.162912-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This series attempt to:
- use more C code, that is replace some assembly code with C;
- avoid some code duplication between C and assembly;
- prevent some issues having relocations in C code.

The idea is extending the current C to binary code conversion
done for 32 bit C code called from head.S making sure relocations
are safe and allowing external symbols usage from C code.

More details of the implementation are in commit message 1/5,
which is the largest patch.
Patch 2/5 reuses code to relocate the trampoline between 32 and 64 bit.
Patches 3/5 and 4/5 move some code from assembly to C.

Other RFC commits were excluded, I didn't manage to entangle the issues
sharing headers between 32 and 64 bits.
Since RFC code was more tested, also with CI and some incompatibility
were fixed. On that it's weird that we need Python 3.8 for Qemu but we
still use Python 2 for Xen. Shouldn't we bump requirement to Python 3
even for Xen?

Code boots successfully using:
- BIOS boot;
- EFI boot with Grub2 and ELF file;
- direct EFI boot without Grub.

Code is currently based on "master" branch, currently commit
fa1463cecf59d7419e4c83ed30360c4eb83bde41.

Changes since v1:
- 2 preliminary commits for adjust .gitignore;
- last commit split (one variable at a time);
- lot of style and names changes;
- first commit, now 3/6 had some build changes, more details on
  commit message.

Changes since v2:
- removed merged commits;
- reverted order of 2 commits;
- remove some useless casts;
- added change to comment.

Changes since v3:
- added a preparation commit for Makefiles (mainly written by Andrew Cooper);
- added a comment improvement commit;
- allows also data;
- other minor style changes;
- added some Reviewed-by.

Changes since v4:
- add build32.final.lds build32.other.lds to targets macro;
- place some comments over a rule, not inside;
- simplified linking and producing binary rule;
- renamed built_in_32 to built-in-32, coding style;
- fix minor indentation;
- put magic numbers in Makefile and propagate them;
- minor variable clanups in Python script;
- add dependency to Python script.

Changes since v5:
- all Makefile changes;
- renamed "other" and "final" phases to "base" and "offset";
- use if_changed macro to generate built-in-32.S;
- do not add obj64 to targets, already done adding it to obj-bin-y.

Changes since v6:
- lot of style and comments, see details on 1/5.

Frediano Ziglio (5):
  x86/boot: Rework how 32bit C is linked/included for early boot
  x86/boot: Reuse code to relocate trampoline
  x86/boot: Use boot_vid_info variable directly from C code
  x86/boot: Use trampoline_phys variable directly from C code
  x86/boot: Clarify comment

 xen/arch/x86/boot/.gitignore                  |   6 +-
 xen/arch/x86/boot/Makefile                    |  74 +++++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  41 +++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  49 +---
 xen/arch/x86/boot/reloc-trampoline.c          |  36 +++
 xen/arch/x86/boot/reloc.c                     |  35 +--
 xen/arch/x86/efi/efi-boot.h                   |  15 +-
 xen/tools/combine_two_binaries.py             | 220 ++++++++++++++++++
 9 files changed, 377 insertions(+), 111 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (60%)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c
 create mode 100755 xen/tools/combine_two_binaries.py

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:30:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:30:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827212.1241799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jUD-0008Pt-Cy; Tue, 29 Oct 2024 10:30:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827212.1241799; Tue, 29 Oct 2024 10:30: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 1t5jUD-0008NX-5s; Tue, 29 Oct 2024 10:30:05 +0000
Received: by outflank-mailman (input) for mailman id 827212;
 Tue, 29 Oct 2024 10:30: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5jUB-0006t0-C9
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:30:03 +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 bd53e640-95e0-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 11:29:55 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a99ebb390a5so1156311166b.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:29:55 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dfbc7e8sm458495466b.31.2024.10.29.03.29.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 03:29:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bd53e640-95e0-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzMiLCJoZWxvIjoibWFpbC1lajEteDYzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImJkNTNlNjQwLTk1ZTAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMTk3Nzk1LjUzMDAzNCwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730197795; x=1730802595; 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=GlmexNYkWAFWJCr6Snri0UTFiTtdD3QbNKgKkQOoYME=;
        b=eGYJBZiXRlHP+J8Bnvt6OW/Ftw3Ceh5UDlhcIYQoeelkoMThzDkWixNb8JLzbba7Hy
         m6OCkCxr6C1nX12vGT0cFewKrfvPTOaaMAq6i6Vq1kqRSdWZBbusSfyXXurMyYx/R20+
         +XmmSJtgQj1lyjrt39jQp47IOQGzTzXWc9YYg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730197795; x=1730802595;
        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=GlmexNYkWAFWJCr6Snri0UTFiTtdD3QbNKgKkQOoYME=;
        b=qMbt1otv1wy54Uzi0MfLZIrc76l2QxJr0P3PX/9JUi2bj27ZxytoOUouChPiJbt3s1
         WyuaaBDhyTPy/ha9QiFVjxrJh46Va+aaNfIc/kFqBQON7sa5+27RKYA1ZKkx2MyNJ3tJ
         6RRqlnMIRHj0fj/g6d4cotPFAsRODjs2YwiLVLXfeiTy01RUtfqNyGwdghmhHY/MmM0p
         4JGq96IlHevoiwbWk+2GQln/6yymj6PwcKzhs3hZaJ6JKoB4G3BV2RajN1qJOomrc51y
         LQpWVi/lg3X0LUNptec/2mWQTwv7+gxVpEvmmu+iWEISDYTuZhwkTJXetkUVrSiY0fbO
         kgKA==
X-Gm-Message-State: AOJu0Yx4ZQHVzxZuIPQapHJ3u4Llnwdn5ZT2JoGpBGyk3XUwQSJe0BEx
	WoBaFqSvmW7xIu0Q+SbbOrbPvmjmy8QSatO6ebZkIy75Mpw2JmrC24pnD6x6PHJ5k8X76JGBRmh
	U
X-Google-Smtp-Source: AGHT+IE2wUsDPiSFiORRAyMj/1O36KBCAzkvKv2Vba6kqickrrJHq8KEcCk4wfzDtDkPTqYZIi/l+w==
X-Received: by 2002:a17:906:da8b:b0:a99:5f45:cb69 with SMTP id a640c23a62f3a-a9e2b32edcdmr149064566b.4.1730197794666;
        Tue, 29 Oct 2024 03:29:54 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v7 3/5] x86/boot: Use boot_vid_info variable directly from C code
Date: Tue, 29 Oct 2024 10:29:40 +0000
Message-Id: <20241029102942.162912-4-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241029102942.162912-1-frediano.ziglio@cloud.com>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

No more need to pass from assembly code.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
Changes since v1:
- split the 2 variable changes into 2 commits.

Changes since v2:
- revert commit order.
---
 xen/arch/x86/boot/build32.lds.S |  1 +
 xen/arch/x86/boot/head.S        | 10 +---------
 xen/arch/x86/boot/reloc.c       | 13 +++++--------
 3 files changed, 7 insertions(+), 17 deletions(-)

diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index 27f0d7ac3c..f20fc18977 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -50,6 +50,7 @@ SECTIONS
         DECLARE_IMPORT(__trampoline_seg_start);
         DECLARE_IMPORT(__trampoline_seg_stop);
         DECLARE_IMPORT(trampoline_phys);
+        DECLARE_IMPORT(boot_vid_info);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index ade2c5c43d..5da7ac138f 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -514,18 +514,10 @@ trampoline_setup:
         mov     sym_esi(trampoline_phys), %ecx
         add     $TRAMPOLINE_SPACE,%ecx
 
-#ifdef CONFIG_VIDEO
-        lea     sym_esi(boot_vid_info), %edx
-#else
-        xor     %edx, %edx
-#endif
-
         /* Save Multiboot / PVH info struct (after relocation) for later use. */
-        push    %edx                /* Boot video info to be filled from MB2. */
         mov     %ebx, %edx          /* Multiboot / PVH information address. */
-        /*      reloc(magic/eax, info/edx, trampoline/ecx, video/stk) using fastcall. */
+        /*      reloc(magic/eax, info/edx, trampoline/ecx) using fastcall. */
         call    reloc
-        add     $4, %esp
 
 #ifdef CONFIG_PVH_GUEST
         cmpb    $0, sym_esi(pvh_boot)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 94b078d7b1..707d9c5f15 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -176,7 +176,7 @@ static multiboot_info_t *mbi_reloc(uint32_t mbi_in, memctx *ctx)
     return mbi_out;
 }
 
-static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx *ctx)
+static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, memctx *ctx)
 {
     const multiboot2_fixed_t *mbi_fix = _p(mbi_in);
     const multiboot2_memory_map_t *mmap_src;
@@ -185,7 +185,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
     memory_map_t *mmap_dst;
     multiboot_info_t *mbi_out;
 #ifdef CONFIG_VIDEO
-    struct boot_video_info *video = NULL;
+    struct boot_video_info *video = &boot_vid_info;
 #endif
     uint32_t ptr;
     unsigned int i, mod_idx = 0;
@@ -290,12 +290,11 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 
 #ifdef CONFIG_VIDEO
         case MULTIBOOT2_TAG_TYPE_VBE:
-            if ( video_out )
+            if ( video )
             {
                 const struct vesa_ctrl_info *ci;
                 const struct vesa_mode_info *mi;
 
-                video = _p(video_out);
                 ci = (const void *)get_mb2_data(tag, vbe, vbe_control_info);
                 mi = (const void *)get_mb2_data(tag, vbe, vbe_mode_info);
 
@@ -321,7 +320,6 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
             if ( (get_mb2_data(tag, framebuffer, framebuffer_type) !=
                   MULTIBOOT2_FRAMEBUFFER_TYPE_RGB) )
             {
-                video_out = 0;
                 video = NULL;
             }
             break;
@@ -346,8 +344,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out, memctx
 }
 
 /* SAF-1-safe */
-void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
-            uint32_t video_info)
+void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline)
 {
     memctx ctx = { trampoline };
 
@@ -357,7 +354,7 @@ void *reloc(uint32_t magic, uint32_t in, uint32_t trampoline,
         return mbi_reloc(in, &ctx);
 
     case MULTIBOOT2_BOOTLOADER_MAGIC:
-        return mbi2_reloc(in, video_info, &ctx);
+        return mbi2_reloc(in, &ctx);
 
     case XEN_HVM_START_MAGIC_VALUE:
         if ( IS_ENABLED(CONFIG_PVH_GUEST) )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:30:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:30:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827208.1241755 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jU9-0006wi-4e; Tue, 29 Oct 2024 10:30:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827208.1241755; Tue, 29 Oct 2024 10:30: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 1t5jU8-0006vd-VJ; Tue, 29 Oct 2024 10:30:00 +0000
Received: by outflank-mailman (input) for mailman id 827208;
 Tue, 29 Oct 2024 10:30: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5jU7-0006t1-Ql
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:29:59 +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 bc7cbeb6-95e0-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 11:29:54 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9acafdb745so932032266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:29:54 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dfbc7e8sm458495466b.31.2024.10.29.03.29.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 03:29:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bc7cbeb6-95e0-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmMiLCJoZWxvIjoibWFpbC1lajEteDYyYy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImJjN2NiZWI2LTk1ZTAtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMTk3Nzk0LjEwNzkzMywic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730197793; x=1730802593; 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=W2530RwEhxR4OVHfLP111aspcHFheFeR8Wqbyi70InQ=;
        b=e/ardDZJzePMEAWNvyodsJw0GkoC10gVy5bZ+tF6+Svrf4BzPlbNmkRTHWSzxZWru5
         9bvMW4u7b0Kjoksi84ty062uq89hM43OYy1FUezquwYXpnx85bjRV2HKe6g+DsfcBjo/
         DOzlgvoLG9/x8Wl2VmxCi0KxyZ/93DiaZWSLA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730197793; x=1730802593;
        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=W2530RwEhxR4OVHfLP111aspcHFheFeR8Wqbyi70InQ=;
        b=tK5Q9FA9m+kvSQrDWKFU0pzcGbX4hHYRUuXXQJpDhPEIncF4+iLhdjMGdepIdrAUpv
         rMqN1teRtj5Qir5aJJUGkFxDS1YpMKUm6QtLcSGtMvEBxMbPhbwS0Qvh4hHDGQ09kwFK
         U8DKNpzn4R5ETc8taPQUekZomL+rWIWXzTcV4lxHXepGZs+EBQlAxFGvst+jwNbNfECb
         1RBF1LrHE1eh7vT0vqVRl0cYeXPSfc6EKyWIypdISdPVA6/ZbgK7HNa/5qUvryAn4giC
         gPHK2EXYRDGOnSQcFO1iAEifU7r4cPGI9R5mmAhWojbnXDhVFRDsM5Irf51X3jQZyX8y
         t95Q==
X-Gm-Message-State: AOJu0YxIyIlV05AXwsZFHTKvv1KomP+uv10HY1gFd7G6YmViBXhICzfq
	VeLpi2tq+2Jg7e684jIegK8LRnEZC2I2ZF1I6r7nR2z6rGmkWpAM9hQzTK13Puq2gyrQ2X0Csw6
	B
X-Google-Smtp-Source: AGHT+IGqi4IiyqKCrZfPAJf3ixUkVe0yePsJSJcdMsqaMwbT8Et/CClHACELk+CHHDyFz04og9VjIA==
X-Received: by 2002:a17:907:3182:b0:a9a:bbd1:aa5 with SMTP id a640c23a62f3a-a9e2b0167d0mr116366966b.31.1730197793050;
        Tue, 29 Oct 2024 03:29:53 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [PATCH v7 1/5] x86/boot: Rework how 32bit C is linked/included for early boot
Date: Tue, 29 Oct 2024 10:29:38 +0000
Message-Id: <20241029102942.162912-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241029102942.162912-1-frediano.ziglio@cloud.com>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Right now, the two functions which were really too complicated to write
in asm are compiled as 32bit PIC, linked to a blob and included
directly, using global asm() to arrange for them to have function semantics.

This is limiting and fragile; the use of data relocations will compile
fine but malfunction when used, creating hard-to-debug bugs.

Furthermore, we would like to increase the amount of C, to
deduplicate/unify Xen's boot logic, as well as making it easier to
follow.  Therefore, rework how the 32bit objects are included.

Link all 32bit objects together first.  This allows for sharing of logic
between translation units.  Use differential linking and explicit
imports/exports to confirm that we only have the expected relocations,
and write the object back out as an assembly file so it can be linked
again as if it were 64bit, to integrate with the rest of Xen.

This allows for the use of external references (e.g. access to global
variables) with reasonable assurance of doing so safely.

No functional change.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>
---
Changes since v2:
- removed W^X limitation, allowing data;
- added some comments to python script;
- added extension to python script;
- added header to generated assembly code from python script;
- added starting symbol to generated assembly code from python script
  to make disassembly more clear;
- other minor style changes to python script.

Changes since v4:
- add build32.final.lds build32.other.lds to targets macro;
- place some comments over a rule, not inside;
- simplified linking and producing binary rule;
- renamed built_in_32 to built-in-32, coding style;
- fix minor indentation;
- put magic numbers in Makefile and propagate them;
- minor variable cleanups in Python script;
- add dependency to Python script.

Changes since v5:
- renamed "other" and "final" phases to "base" and "offset";
- use if_changed macro to generate built-in-32.S.

Changes since v6:
- update some indentation to make code more coherent;
- move some comments from commit message to code;
- rewrote commit message (Andrew Cooper);
- add missing file to .gitignore;
- rollback a change in section order.
---
 xen/arch/x86/boot/.gitignore                  |   6 +-
 xen/arch/x86/boot/Makefile                    |  66 +++++-
 .../x86/boot/{build32.lds => build32.lds.S}   |  35 ++-
 xen/arch/x86/boot/cmdline.c                   |  12 -
 xen/arch/x86/boot/head.S                      |  12 -
 xen/arch/x86/boot/reloc.c                     |  14 --
 xen/tools/combine_two_binaries.py             | 220 ++++++++++++++++++
 7 files changed, 314 insertions(+), 51 deletions(-)
 rename xen/arch/x86/boot/{build32.lds => build32.lds.S} (66%)
 create mode 100755 xen/tools/combine_two_binaries.py

diff --git a/xen/arch/x86/boot/.gitignore b/xen/arch/x86/boot/.gitignore
index a379db7988..595cef6a2c 100644
--- a/xen/arch/x86/boot/.gitignore
+++ b/xen/arch/x86/boot/.gitignore
@@ -1,3 +1,5 @@
 /mkelf32
-/*.bin
-/*.lnk
+/build32.*.lds
+/built-in-32.*.bin
+/built-in-32.*.map
+/built-in-32.S
diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 1199291d2b..230a99a1e5 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,4 +1,5 @@
 obj-bin-y += head.o
+obj-bin-y += built-in-32.o
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
@@ -9,9 +10,6 @@ targets   += $(obj32)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
 
-$(obj)/head.o: AFLAGS-y += -Wa$(comma)-I$(obj)
-$(obj)/head.o: $(obj32:.32.o=.bin)
-
 CFLAGS_x86_32 := $(subst -m64,-m32 -march=i686,$(XEN_TREEWIDE_CFLAGS))
 $(call cc-options-add,CFLAGS_x86_32,CC,$(EMBEDDED_EXTRA_CFLAGS))
 CFLAGS_x86_32 += -Werror -fno-builtin -g0 -msoft-float -mregparm=3
@@ -25,14 +23,66 @@ $(obj32): XEN_CFLAGS := $(CFLAGS_x86_32) -fpic
 $(obj)/%.32.o: $(src)/%.c FORCE
 	$(call if_changed_rule,cc_o_c)
 
+orphan-handling-$(call ld-option,--orphan-handling=error) := --orphan-handling=error
 LDFLAGS_DIRECT-$(call ld-option,--warn-rwx-segments) := --no-warn-rwx-segments
 LDFLAGS_DIRECT += $(LDFLAGS_DIRECT-y)
 LD32 := $(LD) $(subst x86_64,i386,$(LDFLAGS_DIRECT))
 
-%.bin: %.lnk
-	$(OBJCOPY) -j .text -O binary $< $@
+# The parameters below tweak the generated linker scripts:
+# - text_gap: padding between .text section external symbols and code.
+# - text_diff: address of the .text section.
+#
+# Note external symbols are only affected by text_diff, while internal symbols
+# are affected by both text_diff and text_gap.  Ensure the sum of gap and diff
+# is greater than 2^16 so that any 16bit relocations if present in the object
+# file turns into a build-time error.
+text_gap := 0x010200
+text_diff := 0x408020
+
+$(obj)/build32.base.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff)
+$(obj)/build32.offset.lds: AFLAGS-y += -DGAP=$(text_gap) -DTEXT_DIFF=$(text_diff) -DFINAL
+$(obj)/build32.base.lds $(obj)/build32.offset.lds: $(src)/build32.lds.S FORCE
+	$(call if_changed_dep,cpp_lds_S)
+
+targets += build32.offset.lds build32.base.lds
+
+# Generate a single 32bit object.
+#
+# Resolve any relocations resulting from references between the translation
+# units.  This ensures the same combined object file can be used to generate
+# multiple images with slightly different linker scripts.
+$(obj)/built-in-32.tmp.o: $(obj32)
+	$(LD32) -r -o $@ $^
+
+# Link bundle with a given layout and extract a binary from it.
+# The linker will allocate GOP and resolve symbols specified in the linker
+# script.
+# The conversion to binary avoids polluting global symbols not used externally;
+# also removes conflict with needed 64 bit GOP.
+# If possible we use --orphan-handling=error option to make sure we account
+# for all possible sections from C code.
+$(obj)/built-in-32.%.bin: $(obj)/build32.%.lds $(obj)/built-in-32.tmp.o
+	$(LD32) $(orphan-handling-y) -N -T $< -Map $(@:bin=map) -o $(@:bin=o) $(filter %.o,$^)
+	$(OBJCOPY) -j .text -O binary $(@:bin=o) $@
+	rm -f $(@:bin=o)
+
+quiet_cmd_combine = GEN     $@
+cmd_combine = \
+    $(PYTHON) $(srctree)/tools/combine_two_binaries.py \
+              --gap       $(text_gap) \
+              --text-diff $(text_diff) \
+              --script    $(obj)/build32.offset.lds \
+              --bin1      $(obj)/built-in-32.base.bin \
+              --bin2      $(obj)/built-in-32.offset.bin \
+              --map       $(obj)/built-in-32.offset.map \
+              --exports   cmdline_parse_early,reloc \
+              --output    $@
+
+targets += built-in-32.S
 
-%.lnk: %.32.o $(src)/build32.lds
-	$(LD32) -N -T $(filter %.lds,$^) -o $@ $<
+# generate final object file combining and checking above binaries
+$(obj)/built-in-32.S: $(obj)/built-in-32.base.bin $(obj)/built-in-32.offset.bin \
+                      $(srctree)/tools/combine_two_binaries.py FORCE
+	$(call if_changed,combine)
 
-clean-files := *.lnk *.bin
+clean-files := built-in-32.*.bin built-in-32.*.map build32.*.lds
diff --git a/xen/arch/x86/boot/build32.lds b/xen/arch/x86/boot/build32.lds.S
similarity index 66%
rename from xen/arch/x86/boot/build32.lds
rename to xen/arch/x86/boot/build32.lds.S
index 56edaa727b..d1b9dc6689 100644
--- a/xen/arch/x86/boot/build32.lds
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -15,12 +15,37 @@
  * with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-ENTRY(_start)
+#ifdef FINAL
+# undef GAP
+# define GAP 0
+# define MULT 0
+# define TEXT_START
+#else
+# define MULT 1
+# define TEXT_START TEXT_DIFF
+#endif
+#define DECLARE_IMPORT(name) name = . + (__LINE__ * MULT)
+
+ENTRY(dummy_start)
 
 SECTIONS
 {
   /* Merge code and data into one section. */
-  .text : {
+  .text TEXT_START : {
+        /* Silence linker warning, we are not going to use it */
+        dummy_start = .;
+
+        /*
+         * Any symbols used should be declared below, this ensures which
+         * symbols are visible to the 32bit C boot code.
+         * With the exception of using external 32 bit function (maybe
+         * exported by head.S) they should point all to variables.
+         * Attention should be paid to pointers taking care of possible later
+         * relocation.
+         */
+        DECLARE_IMPORT(__base_relocs_start);
+        DECLARE_IMPORT(__base_relocs_end);
+        . = . + GAP;
         *(.text)
         *(.text.*)
         *(.data)
@@ -30,7 +55,11 @@ SECTIONS
         *(.bss)
         *(.bss.*)
   }
-
+  /DISCARD/ : {
+       *(.comment)
+       *(.comment.*)
+       *(.note.*)
+  }
   /* Dynamic linkage sections.  Collected simply so we can check they're empty. */
   .got : {
         *(.got)
diff --git a/xen/arch/x86/boot/cmdline.c b/xen/arch/x86/boot/cmdline.c
index fc9241ede9..196c580e91 100644
--- a/xen/arch/x86/boot/cmdline.c
+++ b/xen/arch/x86/boot/cmdline.c
@@ -18,18 +18,6 @@
  * Linux kernel source (linux/lib/string.c).
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax      = &cmdline,
- *   - %edx      = &early_boot_opts.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  cmdline_parse_early      \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/kconfig.h>
 #include <xen/macros.h>
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index c4de1dfab5..e0776e3896 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -759,18 +759,6 @@ trampoline_setup:
         /* Jump into the relocated trampoline. */
         lret
 
-        /*
-         * cmdline and reloc are written in C, and linked to be 32bit PIC with
-         * entrypoints at 0 and using the fastcall convention.
-         */
-FUNC_LOCAL(cmdline_parse_early)
-        .incbin "cmdline.bin"
-END(cmdline_parse_early)
-
-FUNC_LOCAL(reloc)
-        .incbin "reloc.bin"
-END(reloc)
-
 ENTRY(trampoline_start)
 #include "trampoline.S"
 ENTRY(trampoline_end)
diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 8c58affcd9..94b078d7b1 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -12,20 +12,6 @@
  *    Daniel Kiper <daniel.kiper@oracle.com>
  */
 
-/*
- * This entry point is entered from xen/arch/x86/boot/head.S with:
- *   - %eax       = MAGIC,
- *   - %edx       = INFORMATION_ADDRESS,
- *   - %ecx       = TOPMOST_LOW_MEMORY_STACK_ADDRESS.
- *   - 0x04(%esp) = BOOT_VIDEO_INFO_ADDRESS.
- */
-asm (
-    "    .text                         \n"
-    "    .globl _start                 \n"
-    "_start:                           \n"
-    "    jmp  reloc                    \n"
-    );
-
 #include <xen/compiler.h>
 #include <xen/macros.h>
 #include <xen/types.h>
diff --git a/xen/tools/combine_two_binaries.py b/xen/tools/combine_two_binaries.py
new file mode 100755
index 0000000000..447c0d3bdb
--- /dev/null
+++ b/xen/tools/combine_two_binaries.py
@@ -0,0 +1,220 @@
+#!/usr/bin/env python3
+
+from __future__ import print_function
+import argparse
+import functools
+import re
+import struct
+import sys
+
+parser = argparse.ArgumentParser(description='Generate assembly file to merge into other code.')
+auto_int = functools.update_wrapper(lambda x: int(x, 0), int) # allows hex
+parser.add_argument('--script', dest='script',
+                    required=True,
+                    help='Linker script for extracting symbols')
+parser.add_argument('--bin1', dest='bin1',
+                    required=True,
+                    help='First binary')
+parser.add_argument('--bin2', dest='bin2',
+                    required=True,
+                    help='Second binary')
+parser.add_argument('--gap', dest='gap',
+                    required=True,
+                    type=auto_int,
+                    help='Gap inserted at the start of code section')
+parser.add_argument('--text-diff', dest='text_diff',
+                    required=True,
+                    type=auto_int,
+                    help='Difference between code section start')
+parser.add_argument('--output', dest='output',
+                    help='Output file')
+parser.add_argument('--map', dest='mapfile',
+                    help='Map file to read for symbols to export')
+parser.add_argument('--exports', dest='exports',
+                    help='Symbols to export')
+parser.add_argument('--section-header', dest='section_header',
+                    default='.section .init.text, "ax", @progbits',
+                    help='Section header declaration')
+parser.add_argument('-v', '--verbose',
+                    action='store_true')
+args = parser.parse_args()
+
+gap = args.gap
+text_diff = args.text_diff
+
+# Parse linker script for external symbols to use.
+# Next regex matches expanded DECLARE_IMPORT lines in linker script.
+symbol_re = re.compile(r'\s+(\S+)\s*=\s*\.\s*\+\s*\((\d+)\s*\*\s*0\s*\)\s*;')
+symbols = {}
+lines = {}
+for line in open(args.script):
+    m = symbol_re.match(line)
+    if not m:
+        continue
+    (name, line_num) = (m.group(1), int(m.group(2)))
+    if line_num == 0:
+        raise Exception("Invalid line number found:\n\t" + line)
+    if line_num in symbols:
+        raise Exception("Symbol with this line already present:\n\t" + line)
+    if name in lines:
+        raise Exception("Symbol with this name already present:\n\t" + name)
+    symbols[line_num] = name
+    lines[name] = line_num
+
+exports = []
+if args.exports is not None:
+    exports = dict([(name, None) for name in args.exports.split(',')])
+
+# Parse mapfile, look for ther symbols we want to export.
+if args.mapfile is not None:
+    symbol_re = re.compile(r'\s{15,}0x([0-9a-f]+)\s+(\S+)\n')
+    for line in open(args.mapfile):
+        m = symbol_re.match(line)
+        if not m or m.group(2) not in exports:
+            continue
+        addr = int(m.group(1), 16)
+        exports[m.group(2)] = addr
+for (name, addr) in exports.items():
+    if addr is None:
+        raise Exception("Required export symbols %s not found" % name)
+
+file1 = open(args.bin1, 'rb')
+file2 = open(args.bin2, 'rb')
+file1.seek(0, 2)
+size1 = file1.tell()
+file2.seek(0, 2)
+size2 = file2.tell()
+if size1 > size2:
+    file1, file2 = file2, file1
+    size1, size2 = size2, size1
+if size2 != size1 + gap:
+    raise Exception('File sizes do not match')
+del size2
+
+file1.seek(0, 0)
+data1 = file1.read(size1)
+del file1
+file2.seek(gap, 0)
+data2 = file2.read(size1)
+del file2
+
+max_line = max(symbols.keys())
+
+def to_int32(n):
+    '''Convert a number to signed 32 bit integer truncating if needed'''
+    mask = (1 << 32) - 1
+    h = 1 << 31
+    return (n & mask) ^ h - h
+
+i = 0
+references = {}
+internals = 0
+while i <= size1 - 4:
+    n1 = struct.unpack('<I', data1[i:i+4])[0]
+    n2 = struct.unpack('<I', data2[i:i+4])[0]
+    i += 1
+    # The two numbers are the same, no problems
+    if n1 == n2:
+        continue
+    # Try to understand why they are different
+    diff = to_int32(n1 - n2)
+    if diff == -gap: # this is an internal relocation
+        pos = i - 1
+        print("Internal relocation found at position %#x "
+              "n1=%#x n2=%#x diff=%#x" % (pos, n1, n2, diff),
+              file=sys.stderr)
+        i += 3
+        internals += 1
+        if internals >= 10:
+            break
+        continue
+    # This is a relative relocation to a symbol, accepted, code/data is
+    # relocatable.
+    if diff < gap and diff >= gap - max_line:
+        n = gap - diff
+        symbol = symbols.get(n)
+        # check we have a symbol
+        if symbol is None:
+            raise Exception("Cannot find symbol for line %d" % n)
+        pos = i - 1
+        if args.verbose:
+            print('Position %#x %d %s' % (pos, n, symbol), file=sys.stderr)
+        i += 3
+        references[pos] = symbol
+        continue
+    # First byte is the same, move to next byte
+    if diff & 0xff == 0 and i <= size1 - 4:
+       continue
+    # Probably a type of relocation we don't want or support
+    pos = i - 1
+    suggestion = ''
+    symbol = symbols.get(-diff - text_diff)
+    if symbol is not None:
+        suggestion = " Maybe %s is not defined as hidden?" % symbol
+    raise Exception("Unexpected difference found at %#x "
+                    "n1=%#x n2=%#x diff=%#x gap=%#x.%s" % \
+                    (pos, n1, n2, diff, gap, suggestion))
+if internals != 0:
+    raise Exception("Previous relocations found")
+
+def line_bytes(buf, out):
+    '''Output an assembly line with all bytes in "buf"'''
+    # Python 2 compatibility
+    if type(buf) == str:
+        print("\t.byte " + ','.join([str(ord(c)) for c in buf]), file=out)
+    else:
+        print("\t.byte " + ','.join([str(n) for n in buf]), file=out)
+
+def part(start, end, out):
+    '''Output bytes of "data" from "start" to "end"'''
+    while start < end:
+        e = min(start + 16, end)
+        line_bytes(data1[start:e], out)
+        start = e
+
+def reference(pos, out):
+    name = references[pos]
+    n = struct.unpack('<I', data1[pos:pos+4])[0]
+    sign = '+'
+    if n >= (1 << 31):
+        n -= (1 << 32)
+    n += pos
+    if n < 0:
+        n = -n
+        sign = '-'
+    print("\t.hidden %s\n"
+          "\t.long %s %s %#x - ." % (name, name, sign, n),
+          file=out)
+
+def output(out):
+    prev = 0
+    exports_by_addr = {}
+    for (sym, addr) in exports.items():
+        exports_by_addr.setdefault(addr, []).append(sym)
+    positions = list(references.keys())
+    positions += list(exports_by_addr.keys())
+    for pos in sorted(positions):
+        part(prev, pos, out)
+        prev = pos
+        if pos in references:
+            reference(pos, out)
+            prev = pos + 4
+        if pos in exports_by_addr:
+            for sym in exports_by_addr[pos]:
+                print("\t.global %s\n"
+                      "\t.hidden %s\n"
+                      "%s:" % (sym, sym, sym),
+                      file=out)
+    part(prev, size1, out)
+
+out = sys.stdout
+if args.output is not None:
+    out = open(args.output, 'w')
+print('''/*
+ * File autogenerated by combine_two_binaries.py DO NOT EDIT
+ */''', file=out)
+print('\t' + args.section_header, file=out)
+print('obj32_start:', file=out)
+output(out)
+print('\n\t.section .note.GNU-stack,"",@progbits', file=out)
+out.flush()
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:30:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:30:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827210.1241774 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jUA-0007Ul-Ps; Tue, 29 Oct 2024 10:30:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827210.1241774; Tue, 29 Oct 2024 10:30: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 1t5jUA-0007U8-KY; Tue, 29 Oct 2024 10:30:02 +0000
Received: by outflank-mailman (input) for mailman id 827210;
 Tue, 29 Oct 2024 10:30: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5jU9-0006t0-Bw
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:30:01 +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 bcdbf6d7-95e0-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 11:29:54 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c9850ae22eso6822389a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:29:54 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dfbc7e8sm458495466b.31.2024.10.29.03.29.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 03:29:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bcdbf6d7-95e0-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzAiLCJoZWxvIjoibWFpbC1lZDEteDUzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImJjZGJmNmQ3LTk1ZTAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMTk3Nzk0Ljc0NDE2Nywic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730197794; x=1730802594; 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=qhWSbnJvPwHAY4fvW4OKlyERgJEwgRJ/ziSxdZab8H8=;
        b=O4AiBgY3bSIAL1udwvf/MEbjpDVWD/KuNdlDUszy2dRTYpp2N4jJplDupT3Xjk4Sst
         EwEA1+aXRktG8qXGE+5BBc79qmO9VgVefc7mEfQtMAjoby+XEx4TjxjpzTV6rBWcwLxL
         V7fXFgqAjSUFSLa2hkE73dshqnIhf+m9OMEVM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730197794; x=1730802594;
        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=qhWSbnJvPwHAY4fvW4OKlyERgJEwgRJ/ziSxdZab8H8=;
        b=P2VNWXaCUpLh9Fin4SWWiNyH5lIPIOL6wkHyAox2lHWuT4CmKwaUbqQ1gculcZqa9l
         lLamNnZ7KBvhu8GdFF5jo/0pZM1RDtNOqFI0IlxJKGxdgfmPxNxBkKk/HEvTI4olaqdH
         6ikGMxhqx7BCW+fXjGha1Mf2p9OlP2PLD5PWf6l7i8uu7Xee+ugTBwtITTEoR/IZ4bNc
         ZRAxv9lf6E99EFEmTgwBTjVIBEadejHOiIJV/ft92uAzNChbhS+nVEXdP2hLkVgdpz3g
         f3iTe3WPBSnmr7ucdzsrRdDPv0aNKGADJEPNjGRZgKjpyPztmIuYdEiuMpQLZMoKYxvt
         3dZw==
X-Gm-Message-State: AOJu0YxQnm6gPyWYQ4Lq/2EWsYXoE4cTkgfgtamHfD+1CQf22ZvorKJ7
	FrDga8W7oryY6KA4XL3mJv5/G69ZdTW+5ra8yBs/XusbiQiZ0/OGznLNL8E8M5XSxSgdAUvbawM
	/
X-Google-Smtp-Source: AGHT+IEwafcwQ80FRIWYOqFJJZeeimSvtxbVohIw3MUHAXU8T8Oc41ZySLiMRn6LMBR5lL60ppBD+Q==
X-Received: by 2002:a17:907:9815:b0:a9a:9b1:f972 with SMTP id a640c23a62f3a-a9de61cf153mr974394866b.40.1730197793814;
        Tue, 29 Oct 2024 03:29:53 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v7 2/5] x86/boot: Reuse code to relocate trampoline
Date: Tue, 29 Oct 2024 10:29:39 +0000
Message-Id: <20241029102942.162912-3-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241029102942.162912-1-frediano.ziglio@cloud.com>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Move code from efi-boot.h to a separate, new, reloc-trampoline.c file.
Reuse this new code, compiling it for 32bit as well, to replace assembly
code in head.S doing the same thing.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
Changes since v3:
- fixed a typo in comment;
- added Reviewed-by.

Changes since v5:
- do not add obj64 to targets, already done adding it to obj-bin-y.

Changes since v6:
- added Acked-by.
---
 xen/arch/x86/boot/Makefile           | 10 +++++---
 xen/arch/x86/boot/build32.lds.S      |  5 ++++
 xen/arch/x86/boot/head.S             | 23 +-----------------
 xen/arch/x86/boot/reloc-trampoline.c | 36 ++++++++++++++++++++++++++++
 xen/arch/x86/efi/efi-boot.h          | 15 ++----------
 5 files changed, 51 insertions(+), 38 deletions(-)
 create mode 100644 xen/arch/x86/boot/reloc-trampoline.c

diff --git a/xen/arch/x86/boot/Makefile b/xen/arch/x86/boot/Makefile
index 230a99a1e5..e102bd8c70 100644
--- a/xen/arch/x86/boot/Makefile
+++ b/xen/arch/x86/boot/Makefile
@@ -1,11 +1,15 @@
 obj-bin-y += head.o
 obj-bin-y += built-in-32.o
+obj-bin-y += $(obj64)
 
 obj32 := cmdline.32.o
 obj32 += reloc.32.o
+obj32 += reloc-trampoline.32.o
 
-nocov-y   += $(obj32)
-noubsan-y += $(obj32)
+obj64 := reloc-trampoline.o
+
+nocov-y   += $(obj32) $(obj64)
+noubsan-y += $(obj32) $(obj64)
 targets   += $(obj32)
 
 obj32 := $(addprefix $(obj)/,$(obj32))
@@ -75,7 +79,7 @@ cmd_combine = \
               --bin1      $(obj)/built-in-32.base.bin \
               --bin2      $(obj)/built-in-32.offset.bin \
               --map       $(obj)/built-in-32.offset.map \
-              --exports   cmdline_parse_early,reloc \
+              --exports   cmdline_parse_early,reloc,reloc_trampoline32 \
               --output    $@
 
 targets += built-in-32.S
diff --git a/xen/arch/x86/boot/build32.lds.S b/xen/arch/x86/boot/build32.lds.S
index d1b9dc6689..27f0d7ac3c 100644
--- a/xen/arch/x86/boot/build32.lds.S
+++ b/xen/arch/x86/boot/build32.lds.S
@@ -45,6 +45,11 @@ SECTIONS
          */
         DECLARE_IMPORT(__base_relocs_start);
         DECLARE_IMPORT(__base_relocs_end);
+        DECLARE_IMPORT(__trampoline_rel_start);
+        DECLARE_IMPORT(__trampoline_rel_stop);
+        DECLARE_IMPORT(__trampoline_seg_start);
+        DECLARE_IMPORT(__trampoline_seg_stop);
+        DECLARE_IMPORT(trampoline_phys);
         . = . + GAP;
         *(.text)
         *(.text.*)
diff --git a/xen/arch/x86/boot/head.S b/xen/arch/x86/boot/head.S
index e0776e3896..ade2c5c43d 100644
--- a/xen/arch/x86/boot/head.S
+++ b/xen/arch/x86/boot/head.S
@@ -706,28 +706,7 @@ trampoline_setup:
         mov     %edx, sym_offs(l1_bootmap)(%esi, %ecx, 8)
 
         /* Apply relocations to bootstrap trampoline. */
-        mov     sym_esi(trampoline_phys), %edx
-        lea     sym_esi(__trampoline_rel_start), %edi
-        lea     sym_esi(__trampoline_rel_stop), %ecx
-1:
-        mov     (%edi), %eax
-        add     %edx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
-
-        /* Patch in the trampoline segment. */
-        shr     $4,%edx
-        lea     sym_esi(__trampoline_seg_start), %edi
-        lea     sym_esi(__trampoline_seg_stop), %ecx
-1:
-        mov     (%edi), %eax
-        mov     %dx, (%edi, %eax)
-        add     $4,%edi
-
-        cmp     %ecx, %edi
-        jb      1b
+        call    reloc_trampoline32
 
         /* Do not parse command line on EFI platform here. */
         cmpb    $0, sym_esi(efi_platform)
diff --git a/xen/arch/x86/boot/reloc-trampoline.c b/xen/arch/x86/boot/reloc-trampoline.c
new file mode 100644
index 0000000000..0a74c1e75a
--- /dev/null
+++ b/xen/arch/x86/boot/reloc-trampoline.c
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#include <xen/compiler.h>
+#include <xen/stdint.h>
+#include <asm/trampoline.h>
+
+extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
+extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+
+#if defined(__i386__)
+void reloc_trampoline32(void)
+#elif defined (__x86_64__)
+void reloc_trampoline64(void)
+#else
+#error Unknown architecture
+#endif
+{
+    unsigned long phys = trampoline_phys;
+    const int32_t *trampoline_ptr;
+
+    /*
+     * Apply relocations to trampoline.
+     *
+     * This modifies the trampoline in place within Xen, so that it will
+     * operate correctly when copied into place.
+     */
+    for ( trampoline_ptr = __trampoline_rel_start;
+          trampoline_ptr < __trampoline_rel_stop;
+          ++trampoline_ptr )
+        *(uint32_t *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
+
+    for ( trampoline_ptr = __trampoline_seg_start;
+          trampoline_ptr < __trampoline_seg_stop;
+          ++trampoline_ptr )
+        *(uint16_t *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+}
diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h
index 3b26f0b0f5..3133985c88 100644
--- a/xen/arch/x86/efi/efi-boot.h
+++ b/xen/arch/x86/efi/efi-boot.h
@@ -103,27 +103,16 @@ static void __init efi_arch_relocate_image(unsigned long delta)
     }
 }
 
-extern const int32_t __trampoline_rel_start[], __trampoline_rel_stop[];
-extern const int32_t __trampoline_seg_start[], __trampoline_seg_stop[];
+void reloc_trampoline64(void);
 
 static void __init relocate_trampoline(unsigned long phys)
 {
-    const int32_t *trampoline_ptr;
-
     trampoline_phys = phys;
 
     if ( !efi_enabled(EFI_LOADER) )
         return;
 
-    /* Apply relocations to trampoline. */
-    for ( trampoline_ptr = __trampoline_rel_start;
-          trampoline_ptr < __trampoline_rel_stop;
-          ++trampoline_ptr )
-        *(u32 *)(*trampoline_ptr + (long)trampoline_ptr) += phys;
-    for ( trampoline_ptr = __trampoline_seg_start;
-          trampoline_ptr < __trampoline_seg_stop;
-          ++trampoline_ptr )
-        *(u16 *)(*trampoline_ptr + (long)trampoline_ptr) = phys >> 4;
+    reloc_trampoline64();
 }
 
 static void __init place_string(u32 *addr, const char *s)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:30:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:30:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827211.1241789 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jUC-00080p-1g; Tue, 29 Oct 2024 10:30:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827211.1241789; Tue, 29 Oct 2024 10:30: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 1t5jUB-0007zO-TU; Tue, 29 Oct 2024 10:30:03 +0000
Received: by outflank-mailman (input) for mailman id 827211;
 Tue, 29 Oct 2024 10:30: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5jUA-0006t0-C2
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:30:02 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id be2a9fa0-95e0-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 11:29:56 +0100 (CET)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a998a5ca499so700904066b.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:29:56 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dfbc7e8sm458495466b.31.2024.10.29.03.29.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 03:29:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: be2a9fa0-95e0-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmEiLCJoZWxvIjoibWFpbC1lajEteDYyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImJlMmE5ZmEwLTk1ZTAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMTk3Nzk2LjkwNDE2MSwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730197796; x=1730802596; 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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=YebmN4NL4khk1ahRXKW8C1SUlM5ZZ3QMMN3ovjUJ2pAzcOK3gGTwqNl0S2XD3tp3lZ
         UjHU0uoltDQNKsFDEx1jqC8VEcjIL45DYz/WrUgqEFKbJe4yRpQFkP5FH7TgNUbSigrJ
         4z0cyQ+pU779D18fyEFH+r1h+J3eTy8ndPGFU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730197796; x=1730802596;
        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=/R9IwC5Rg/1YFlZU2XC6OhmnY2lp5++tA2yhEvcFGMk=;
        b=L/eSYBCXjcWYPEUzLSvHFR6SbHQjfHG4EVdwMAvKh3G8qvDSmkCvAFHeOp35xYm7kr
         ZVw94bElRwdY77QG3jAT2AYzkGSz9voxiDXVJegElxxwDP5HcSCDmGRDKngIFe3EIjkR
         sNaLfErLrjVeszKlXbDq/ZXHlSeLkfsUGeUyxNryrzTyamt+12XtNADfw5j7MJJvoEQM
         aSoLYYxwJeSPOR8teSpJMrbJI8pzUTY0y9NVNDdy3tbO2heBkGsvb2EGL+IgaXlcLA8z
         y9FiRuAfTajcr5HlxQS6etEtp9t9KimtxY0X/h1T++A7jT56Ve4m7IPGXs6+pdFjRNRY
         Zcug==
X-Gm-Message-State: AOJu0Ywucd6dUAzd6cWFUbCG1bF6ol5Sa4zZESGS2aH2/qMSzaPa0Gze
	WraxDD4mK75wb1RGSPxdQf68PeFxPIq20ToKh1bmiI2SGHjLmU87ms1IV61r2EbhxzqIcqCx4EC
	5
X-Google-Smtp-Source: AGHT+IFtTmzbWe1tXihaQjdCkWDhmGLw61ux3klKpwQxC8yvZG9lx9DIE8RctK4biXZqWGvmoAxvbQ==
X-Received: by 2002:a17:907:96aa:b0:a8a:8cdb:83a7 with SMTP id a640c23a62f3a-a9de61eb56bmr1139022266b.54.1730197796145;
        Tue, 29 Oct 2024 03:29:56 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v7 5/5] x86/boot: Clarify comment
Date: Tue, 29 Oct 2024 10:29:42 +0000
Message-Id: <20241029102942.162912-6-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20241029102942.162912-1-frediano.ziglio@cloud.com>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/boot/reloc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index e50e161b27..e725cfb6eb 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -65,7 +65,7 @@ typedef struct memctx {
     /*
      * Simple bump allocator.
      *
-     * It starts from the base of the trampoline and allocates downwards.
+     * It starts on top of space reserved for the trampoline and allocates downwards.
      */
     uint32_t ptr;
 } memctx;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:56:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:56:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827249.1241808 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jt4-0006C5-D2; Tue, 29 Oct 2024 10:55:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827249.1241808; Tue, 29 Oct 2024 10:55: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 1t5jt4-0006By-AQ; Tue, 29 Oct 2024 10:55:46 +0000
Received: by outflank-mailman (input) for mailman id 827249;
 Tue, 29 Oct 2024 10:55: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5jt3-0006Bs-Bg
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:55:45 +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 56464e85-95e4-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 11:55:40 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2fb5fa911aaso71644781fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:55:40 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f297a57sm466263766b.133.2024.10.29.03.55.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 03:55:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 56464e85-95e4-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMzQiLCJoZWxvIjoibWFpbC1sajEteDIzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjU2NDY0ZTg1LTk1ZTQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMTk5MzQwLjU1MjgyMSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730199340; x=1730804140; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=USMVftzZtmL5U61SNPJQvqXv/IG/IdbmddF6iydMXQs=;
        b=hAw28YqA3ecTAOjh4BzCIuyDX+lpaEyGBc1xxHMB3Oy3z5FFXHEIHbrjiZURfG+FVL
         ZT2VgPx0I5O1/UgRv27se/rBNlAX2v/VDxnJHfdI+7fFvrM6Zd72YfdjAP4ZhiHUbJ5O
         wour9j7GKkfpBhC4CEAyT8g6bgp04KgjoxLaE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730199340; x=1730804140;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=USMVftzZtmL5U61SNPJQvqXv/IG/IdbmddF6iydMXQs=;
        b=JhbQDIWcIU1FLV+kbVqTzjPw6BXkIzyQJ9zwgXTg13Vn4fxcYqV3/lRozVPP02aYpO
         rzT2XyY4xkZ5OUt+LoAWkIPeJ/JpSK1ZPFySPpmYc5D6d+ubqNJHfwN3C/0xclQJo6ZH
         2MxGnwD+TOihT0PXqaHaBvHp+wqouInUWqWNhC/d+J5x0mGctP/Dl31p2NvPZP3FPn/0
         knXZ2zOWt91JQo8/xxeDB+ucAJngGoH4CwnbKYqN+7y3mHOBSQsY9kRwlFdd/hW8Bsvi
         vWj2vqHNLz04zGIJfiE9hGRN+cJgNhfHHbrjS2g1VccKa7x9a57wrSyc7ggsYRCZDlM+
         knzw==
X-Forwarded-Encrypted: i=1; AJvYcCV9++tXnYzEv40qFhd91ISSty6dbzePxXdmGAWL+PaMz1ZlQ/pUTWTGnPqbPvyuMcs5A35Dbe5/VuQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxzkP6H7sgXYsTJtgJPiUI/iPmz+Z6nfvXrnUriMd/Owd9Ym5kF
	JnAvzlrbVQ5U1VwCykA6DQhAFcuNBcXjPY46YKm8NM4rXIGwYz0rqg9HLRC7OcQ=
X-Google-Smtp-Source: AGHT+IEuWT8LnQrYGwEDPL3hFirIT5KYRNL5k8TLoSy/D3GtBo1sc482HclFw6h/VFW8iToFW2xiRQ==
X-Received: by 2002:a2e:a541:0:b0:2fc:9869:2e0b with SMTP id 38308e7fff4ca-2fcbdfc70abmr74160761fa.20.1730199339903;
        Tue, 29 Oct 2024 03:55:39 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 10:55:38 +0000
Message-Id: <D588H7B9CSAR.3K4MD7ZXGB03G@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave
 areas
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.com>
 <52225fba-97cc-49eb-8714-fee5d2e86262@suse.com>
In-Reply-To: <52225fba-97cc-49eb-8714-fee5d2e86262@suse.com>

On Tue Oct 29, 2024 at 8:19 AM GMT, Jan Beulich wrote:
> On 28.10.2024 16:49, Alejandro Vallejo wrote:
> > --- a/xen/arch/x86/include/asm/xstate.h
> > +++ b/xen/arch/x86/include/asm/xstate.h
> > @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu *v=
)
> >             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
> >  }
> > =20
> > +/*
> > + * Fetch a pointer to the XSAVE area of a vCPU
> > + *
> > + * If ASI is enabled for the domain, this mapping is pCPU-local.
>
> Taking the umap commentary into account, I think this needs to expand
> some, to also symmetrically cover what the unmap comment says regarding
> "v is [not] the currently scheduled vCPU".

Yes, that's fair.

> This may then also help
> better see the further outlook, as Andrew was asking for.

Sure, I'll answer his comment in a jiffy with a rough approximation of what=
 I
expect them to contain.

>
> > + * @param v Owner of the XSAVE area
> > + */
> > +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
> > +
> > +/*
> > + * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.
>
> Nit: I expect it drops the mapping, not the area.

Yes, although even the mapping might not be dropped if we can credibly avoi=
d
it. Regardless, yes this needs rewriting.

The particulars are murky and should become easier to see with the pseudo-c=
ode
I'm about to answer Andrew with

>
> > + * If ASI is enabled and v is not the currently scheduled vCPU then th=
e
> > + * per-pCPU mapping is removed from the address space.
> > + *
> > + * @param v           vCPU logically owning xsave_area
> > + * @param xsave_area  XSAVE blob of v
> > + */
> > +#define vcpu_unmap_xsave_area(v, x) ({ (x) =3D NULL; })
> > +
> >  #endif /* __ASM_XSTATE_H */

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 10:56:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 10:56:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827255.1241818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ju4-0006nO-M3; Tue, 29 Oct 2024 10:56:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827255.1241818; Tue, 29 Oct 2024 10:56: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 1t5ju4-0006nH-J6; Tue, 29 Oct 2024 10:56:48 +0000
Received: by outflank-mailman (input) for mailman id 827255;
 Tue, 29 Oct 2024 10:56: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5ju3-0006br-9H
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 10:56:47 +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 7c218932-95e4-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 11:56:44 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a99f646ff1bso673007566b.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:56:44 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629f83fsm3898965a12.38.2024.10.29.03.56.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 03:56:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c218932-95e4-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzUiLCJoZWxvIjoibWFpbC1lajEteDYzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjdjMjE4OTMyLTk1ZTQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMTk5NDA0LjY3Njk2NCwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730199403; x=1730804203; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=kLbxQHiyK4T/N8pomFvkppNUPghYLKCRHF4kNAlmNyo=;
        b=Lc8GVj2AcDbG7BiUrDrSQXW0A3EU3raMBQHiEbv3VUrK+/GLFlpNrXxv6KTHiyLSa2
         lPuXkE3aYqty/UF4GpmhvBV/x4gj0tPX343VhHM7d5ZaDoDTmxqdykVJyFXpS5Rip0bT
         E0mZvhSoovsw9VPy+OutA1Hgjc8f6CsydTwH4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730199403; x=1730804203;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=kLbxQHiyK4T/N8pomFvkppNUPghYLKCRHF4kNAlmNyo=;
        b=O0/JcW8xvg2RD/p/w8MQyqTOTcJvjTmwqnVWrza0lyzIJRp/oXzcSNKUm59b7eNsPM
         rrwH4p4+c6a+yQQjvu7Gv7TzzCjGGfmGsKFKaH6lH3R48pF/54I+z2CGjXDwvNNHM7Zl
         +kQyhm9bNBdRWgraxqP8cp8By0rhm91TzdxHCaIDPN7ssFmEzeL4hK4naGKQ4DhE3N3u
         wM/6EuBDOEqfZsB8uVRpvyvNOhE/GejQbkrbmCiJdSYDJJ+OU6Bh5ISiQ69IFFbtWJFY
         S9Eou0dU+w5EgJO/cG74DlgcRFba5bQHAo2l+w5iBG7RF9peI5RqbSaO6i1lsZzQ+3Wh
         7d8w==
X-Forwarded-Encrypted: i=1; AJvYcCWXj1RVVAA5kgDealkya6KT9Mo3aGC7dzG4MEwcWSeZek9m1fANl4ITH6dvhyqSeV6Lg++e3mMZqgY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqtG9yKAkwSY8X9f5uIcEs1O0KRgSlpNxr8ORnRAanPmR/kkEb
	9EhZrHiOy7pUaMnFj9OgSUKqHPCQ05FBajVZzD747LHys6exH+vutMOYzdYRoRlcrT9kuR0bTYg
	d
X-Google-Smtp-Source: AGHT+IEo9qJiHFfE/luMD6g7Lwn0CW/FLdbHii5PYvwogOe3yTh+Z5KFJnPxfuU3jTnbBSDB412ncg==
X-Received: by 2002:a17:907:3f02:b0:a99:f746:385 with SMTP id a640c23a62f3a-a9de5c92befmr1042101566b.1.1730199403404;
        Tue, 29 Oct 2024 03:56:43 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 10:56:41 +0000
Message-Id: <D588I0A48MB1.1T96PWTSBSEY1@cloud.com>
Cc: =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 01/14] x86/xstate: Update stale assertions in
 fpu_x{rstor,save}()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-2-alejandro.vallejo@cloud.com>
 <fdc89027-d33c-40f5-93f9-b8d7e880e732@citrix.com>
 <7027a24e-3213-48c5-8027-24dcf1df55ac@suse.com>
In-Reply-To: <7027a24e-3213-48c5-8027-24dcf1df55ac@suse.com>

On Tue Oct 29, 2024 at 8:13 AM GMT, Jan Beulich wrote:
> On 28.10.2024 18:16, Andrew Cooper wrote:
> > On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
> >> The asserts' intent was to establish whether the xsave instruction was
> >> usable or not, which at the time was strictly given by the presence of
> >> the xsave area. After edb48e76458b("x86/fpu: Combine fpu_ctxt and
> >> xsave_area in arch_vcpu"), that area is always present a more relevant
> >> assert is that the host supports XSAVE.
> >>
> >> Fixes: edb48e76458b("x86/fpu: Combine fpu_ctxt and xsave_area in arch_=
vcpu")
> >> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> >> ---
> >> I'd also be ok with removing the assertions altogether. They serve ver=
y
> >> little purpose there after the merge of xsave and fpu_ctxt.
> >=20
> > I'd be fine with dropping them.
>
> +1
>
> Jan
>
> >=C2=A0 If they're violated, the use of
> > XSAVE/XRSTOR immediately afterwards will be fatal too.
> >=20
> > ~Andrew

Ok then, I'll re-send this one as a removal.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 11:00:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 11:00:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827259.1241828 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5jxG-000050-3m; Tue, 29 Oct 2024 11:00:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827259.1241828; Tue, 29 Oct 2024 11:00: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 1t5jxG-0008W6-0y; Tue, 29 Oct 2024 11:00:06 +0000
Received: by outflank-mailman (input) for mailman id 827259;
 Tue, 29 Oct 2024 11:00: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5jxE-0008Dk-FG
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 11:00:04 +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 f0c57a31-95e4-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 11:59:59 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso781347566b.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 03:59:59 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb631a24dsm3831291a12.74.2024.10.29.03.59.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 03:59:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f0c57a31-95e4-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzEiLCJoZWxvIjoibWFpbC1lajEteDYzMS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImYwYzU3YTMxLTk1ZTQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMTk5NTk5Ljg5MzQzNywic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730199599; x=1730804399; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ZTsghFy1Ayh32UBlFMRlzPpNBumM3S1QCcBT04TmHak=;
        b=cDSw9dxWVikNzOU+qLmDF7LTj9SlEPYSXswW9pxJl1/+obqpOyZEZA/6mbLvmQsjWh
         ftmWx54rqQpGjjEINJpPhiSq8nZkPctRemyBhIOjJsmZDxxrGr8N5ekf00rH52pIwaWf
         kJbaOSwjpt7XmbRtc0jQyiKZ8gWLsXjFI5gI4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730199599; x=1730804399;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=ZTsghFy1Ayh32UBlFMRlzPpNBumM3S1QCcBT04TmHak=;
        b=iKgfPd+C5R7a9W07As8utAOLevr3ACA5jHJ10+hbJa5/2Wi0P0dmDFcUASxiosEj0s
         Kl4wpqif1qxlhMmEhWdKD8JRk3dLXAZb1ZP3dWn4wKI/WJs4xaHpkOUY7kk0Tj7lYmRK
         ZHk9XSuft1iUvEaf4ZJsJw4qqRr4X3UVm7++Ms0wDlh3MXFGRzWB5ippgNVvGMD4XxnO
         3ZJINBhlmhTk3e4UR2gPD0T8exD86lzcildBldbst3uO/8Dfr5rrsNh+8h6HXNCpE7nG
         Ix8siWXrtzSK4z4qtL3DhdsznnA2iQ3eqvt1grmtlstG/4+AKsSAWcI3mQZ2KIDOS2Aa
         cKEA==
X-Forwarded-Encrypted: i=1; AJvYcCW0fWjRI5Yg/vXJgfxFMikrwnZdCGQ3OSWOmo65G3bztcSWUJHsIUONGSPO57Vh41+yCHnLf/LFEqc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyL9uJ2o1IPJgl1vbQgGyE5eyeqnV7sgtWNm8XxYDGhx0J7fT8A
	UFjgFKGffygE5aPvLn3i1BDsrHRordstWy55yJk3jd3dgAIY8n4kZwyE+AM9y1edD+iNjEQHluO
	N
X-Google-Smtp-Source: AGHT+IF+lo/2cLctftdBr3o34xeA0aYShztjINgB9F0zQrM+U6lwX7r3FyBix5u2slyC6NNVxY6DAw==
X-Received: by 2002:a17:907:948c:b0:a99:f8db:68b2 with SMTP id a640c23a62f3a-a9de5ecca55mr1192183266b.18.1730199599191;
        Tue, 29 Oct 2024 03:59:59 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 10:59:58 +0000
Message-Id: <D588KIJCBFQQ.2AC6KE08Z8YWK@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 12/14] x86/fpu: Pass explicit xsave areas to
 fpu_(f)xsave()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-13-alejandro.vallejo@cloud.com>
 <85e7334b-b878-4896-8f7a-462ba73ea9e2@suse.com>
In-Reply-To: <85e7334b-b878-4896-8f7a-462ba73ea9e2@suse.com>

On Tue Oct 29, 2024 at 8:37 AM GMT, Jan Beulich wrote:
> On 28.10.2024 16:49, Alejandro Vallejo wrote:
> > --- a/xen/arch/x86/xstate.c
> > +++ b/xen/arch/x86/xstate.c
> > @@ -300,9 +300,8 @@ void compress_xsave_states(struct vcpu *v, const vo=
id *src, unsigned int size)
> >      vcpu_unmap_xsave_area(v, xstate);
> >  }
> > =20
> > -void xsave(struct vcpu *v, uint64_t mask)
> > +void xsave(struct vcpu *v, struct xsave_struct *ptr, uint64_t mask)
> >  {
> > -    struct xsave_struct *ptr =3D v->arch.xsave_area;
> >      uint32_t hmask =3D mask >> 32;
> >      uint32_t lmask =3D mask;
> >      unsigned int fip_width =3D v->domain->arch.x87_fip_width;
>
> Imo this change wants to constify v at the same time, to demonstrate that
> nothing is changed through v anymore. The comment may extend to other fun=
ctions
> as well that are being altered here; I only closely looks at this one.
>
> Jan

I didn't think of that angle... I'll have a look and take it into account f=
or
v2.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 11:04:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 11:04:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827268.1241839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5k18-0000oa-1O; Tue, 29 Oct 2024 11:04:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827268.1241839; Tue, 29 Oct 2024 11:04: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 1t5k17-0000oT-Uy; Tue, 29 Oct 2024 11:04:05 +0000
Received: by outflank-mailman (input) for mailman id 827268;
 Tue, 29 Oct 2024 11:04: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=rNzX=RZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5k16-0000oN-2b
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 11:04:04 +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 7fd901d8-95e5-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 12:03:59 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a850270e2so857382166b.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 04:03:59 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3099df78sm462206966b.158.2024.10.29.04.03.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 04:03:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7fd901d8-95e5-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzQiLCJoZWxvIjoibWFpbC1lajEteDYzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjdmZDkwMWQ4LTk1ZTUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMTk5ODM5Ljg0NjQzMSwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730199838; x=1730804638; 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=ehkKqYBk4MDvgwnpI93uQoFn9xEAxJww89i0qH27hW0=;
        b=q6YQyMPZJoiIYnUZTTsJa9dE52e0RJ3NkFk1tD0+yVyFLHhg53ll1J70UsBv2uPNIW
         urbaXe+Jdj9KaWX9zMKoLHi3tZfH+0s7fJi01HVKPgfLvKvpiokUW0tkDxnGOl6z2wVW
         Q6J7t+/upAakuuz0aZYca1uMc6w95iEf6Kqwg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730199838; x=1730804638;
        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=ehkKqYBk4MDvgwnpI93uQoFn9xEAxJww89i0qH27hW0=;
        b=ZqgMKX8cNNTGvmKaD3J1E2hx30D6ZjAAkRTDuhecTVckG3gLRcl1c9bzKHxC8gRcxX
         IAL+Yy+tGgq1l6SLOBifCAzaUSW8sDyi4evSJ9p1KtLfDJqF2scW9tkdKwinNB8VeQ82
         T1WLiVnl70GkV3EQB5uglssgwcIENsTf149hF2XoYREp9ky7TnSNB/vDhabR0deG2tYs
         EOa5iCB9Grs1dKC5UgWEPw/OZFvtlKKzkLTapomfZHRL4rivpB0dML2mle8FAeDx4pHk
         B0TjM2ZiBHDwfEUUEcE5me/kUQe/iO47kbOBkyS8uycdhbh3SYFyH6jwzEWjFzQ9rjNv
         zGJA==
X-Gm-Message-State: AOJu0YxqjJP5QZBSfC48VdK0a+Y4PXWo0TNveHzXqsxTW+1vGIKrLH/j
	n5sTCEqBfdK3JPO96wTlG1PGEHApM7XJ2Cm4Xv+qWz/DOy7zOxeXjYaqz3Ya3UfTSsLdRo2YXRj
	P
X-Google-Smtp-Source: AGHT+IGmoevBLiXOgTdNpRm3nv6CVTujK9wbyEQ72ynO4U16KmRzecDh3M7EkUGKRdpYDA7HDLr3tA==
X-Received: by 2002:a17:907:728e:b0:a99:389a:63c2 with SMTP id a640c23a62f3a-a9de61997d9mr1118591466b.62.1730199838328;
        Tue, 29 Oct 2024 04:03:58 -0700 (PDT)
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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi interrupt remapping
Date: Tue, 29 Oct 2024 12:03:51 +0100
Message-ID: <20241029110351.40531-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When using AMD-Vi interrupt remapping the vector field in the IO-APIC RTE is
repurposed to contain part of the offset into the remapping table.  Previous to
2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
table would match the vector.  Such logic was mandatory for end of interrupt to
work, since the vector field (even when not containing a vector) is used by the
IO-APIC to find for which pin the EOI must be performed.

Introduce a table to store the EOI handlers when using interrupt remapping, so
that the IO-APIC driver can translate pins into EOI handlers without having to
read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
unconditionally when interrupt remapping is enabled, even if strictly it would
only be required for AMD-Vi.

Reported-by: Willi Junga <xenproject@ymy.be>
Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v2:
 - Restore sentinel value.

Changes since v1:
 - s/apic_pin_eoi/io_apic_pin_eoi/.
 - Expand comment about io_apic_pin_eoi usage and layout.
 - Use uint8_t instead of unsigned int as array type.
 - Do not use a sentinel value.
---
 xen/arch/x86/io_apic.c | 56 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index e40d2f7dbd75..64ba1c8d3da7 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -71,6 +71,26 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
 
 static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
 
+/*
+ * Store the EOI handle when using interrupt remapping.
+ *
+ * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
+ * format repurposes the vector field to store the offset into the Interrupt
+ * Remap table.  This causes directed EOI to longer work, as the CPU vector no
+ * longer matches the contents of the RTE vector field.  Add a translation
+ * table so that directed EOI uses the value in the RTE vector field when
+ * interrupt remapping is enabled.
+ *
+ * Note Intel VT-d Xen code still stores the CPU vector in the RTE vector field
+ * when using the remapped format, but use the translation table uniformly in
+ * order to avoid extra logic to differentiate between VT-d and AMD-Vi.
+ *
+ * The matrix is accessed as [#io-apic][#pin].  Note the field needs to handle
+ * the range [-1, 255], as -1 (IRQ_VECTOR_UNASSIGNED) is used as a sentinel to
+ * signal there's no cached value.
+ */
+static short **io_apic_pin_eoi;
+
 static void share_vector_maps(unsigned int src, unsigned int dst)
 {
     unsigned int pin;
@@ -273,6 +293,13 @@ void __ioapic_write_entry(
     {
         __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
         __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
+        /*
+         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
+         * Entry will be updated once the array is allocated and there's a
+         * write against the pin.
+         */
+        if ( io_apic_pin_eoi )
+            io_apic_pin_eoi[apic][pin] = e.vector;
     }
     else
         iommu_update_ire_from_apic(apic, pin, e.raw);
@@ -298,9 +325,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
     /* Prefer the use of the EOI register if available */
     if ( ioapic_has_eoi_reg(apic) )
     {
+        if ( io_apic_pin_eoi )
+            vector = io_apic_pin_eoi[apic][pin];
+
         /* If vector is unknown, read it from the IO-APIC */
         if ( vector == IRQ_VECTOR_UNASSIGNED )
+        {
             vector = __ioapic_read_entry(apic, pin, true).vector;
+            if ( io_apic_pin_eoi )
+                /* Update cached value so further EOI don't need to fetch it. */
+                io_apic_pin_eoi[apic][pin] = vector;
+        }
 
         *(IO_APIC_BASE(apic)+16) = vector;
     }
@@ -1022,8 +1057,27 @@ static void __init setup_IO_APIC_irqs(void)
 
     apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
 
+    if ( iommu_intremap )
+    {
+        io_apic_pin_eoi = xmalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
+        BUG_ON(!io_apic_pin_eoi);
+    }
+
     for (apic = 0; apic < nr_ioapics; apic++) {
-        for (pin = 0; pin < nr_ioapic_entries[apic]; pin++) {
+        const unsigned int nr_entries = nr_ioapic_entries[apic];
+
+        if ( iommu_intremap )
+        {
+            io_apic_pin_eoi[apic] = xmalloc_array(typeof(**io_apic_pin_eoi),
+                                                  nr_entries);
+            BUG_ON(!io_apic_pin_eoi[apic]);
+
+            for ( pin = 0; pin < nr_entries; pin++ )
+                io_apic_pin_eoi[apic][pin] = IRQ_VECTOR_UNASSIGNED;
+        }
+
+        for ( pin = 0; pin < nr_entries; pin++ )
+        {
             /*
              * add it to the IO-APIC irq-routing table:
              */
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 11:13:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 11:13:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827264.1241849 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5kAT-0002zl-0j; Tue, 29 Oct 2024 11:13:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827264.1241849; Tue, 29 Oct 2024 11:13: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 1t5kAS-0002ze-SM; Tue, 29 Oct 2024 11:13:44 +0000
Received: by outflank-mailman (input) for mailman id 827264;
 Tue, 29 Oct 2024 11:00: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=HZ3O=RZ=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1t5jxx-0000iM-T9
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 11:00:50 +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 0befc9e7-95e5-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 12:00:45 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5cbb719839eso5305771a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 04:00:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0befc9e7-95e5-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzAiLCJoZWxvIjoibWFpbC1lZDEteDUzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjBiZWZjOWU3LTk1ZTUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMTk5NjQ1LjU3NDk0MSwic2VuZGVyIjoia2VsbHkuY2hvaUBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730199644; x=1730804444; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=mdRZCLrbM8t3xdvr2ZZMwFefvFy25HCRqb3HWlmtczg=;
        b=G9ey5FEbIKVFsvhL3MD3nfXkaQxnbqw0tLxtiFMjj9jbHZHUy5YZhG6yLDuXC5YN9r
         fOinsvZ2okGxCKzozJIKQWLOe7rPbcvUPL+POY3pnjxTaKHYtRvK+VrztWlwp/1N5egr
         8GO4jVPgJBQscHDJ6QA99xW3XDsivosZTZeKg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730199644; x=1730804444;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=mdRZCLrbM8t3xdvr2ZZMwFefvFy25HCRqb3HWlmtczg=;
        b=wD/FNcJQLOQGT5pw2d6Jvpjx7qeuagEopu7iaII2oF/dTYsqYN0M6P6B+hqvPr9ZyC
         gBvjtNu3O6+17qGdL9bXFCLYI6BfPXjewZDOIb2vE3fbvVIiDGwDmF2aFOo0VkMpVt+Y
         FxAucFSlUvAqp0oBOY/WpmSovp6trZc8lLcqK2IV5pRCIGEmXll2o+oHQ5NSxyL5ZNKn
         J/qKrjahhx1I3fu+wtmWObLVyvT3bT072U6AF3ftTLY25UlMdv+OyFgpFZkwDzkDXUDA
         pBfp2d2ExSGIXnE6nk2yNo3RKr8tMsubBWWZLG3mNPvln07hMlX09ll+VmMZu7B8ySOi
         dYew==
X-Gm-Message-State: AOJu0Yyr5VqPwt65dwSXL6MgQdTDPiZfcntKM/zoduly+lPYjGa1TOdG
	0Hlo7ZzyJPzmr2tStM89p6zfeYDjzRT+KAlPUT0ZqXJPw7VXy9aq6W5QnXdaoMqEGcnacPuVWmJ
	Cg/T67yaEc4TG0ModF+1kg4iQSxI+FwDjWZ4RHNMAWZ/tFE8WyMg=
X-Google-Smtp-Source: AGHT+IHL782I39NbyL+LRHez/0zae23sX8wF/mz4w1dssQNXWepQ5trKPW36tU2D170G0stbdQqlBOzmGSrBvR7zruA=
X-Received: by 2002:a05:6402:27c6:b0:5c9:16e2:4db1 with SMTP id
 4fb4d7f45d1cf-5cbbf8953b9mr11291531a12.8.1730199642622; Tue, 29 Oct 2024
 04:00:42 -0700 (PDT)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 29 Oct 2024 11:00:05 +0000
Message-ID: <CAO-mL=wRfZ44Fd4SRxpQ7OLYpnVQBX--hkorBV8+6-whVxWyZQ@mail.gmail.com>
Subject: Xen Project Introduction Workshop - Anglia Ruskin University,
 November 2024
To: xen-devel <xen-devel@lists.xenproject.org>, xen-users@lists.xenproject.org
Cc: "Halder, Ayan Kumar" <ayan.kumar.halder@amd.com>
Content-Type: multipart/mixed; boundary="000000000000173f2506259b7f85"

--000000000000173f2506259b7f85
Content-Type: multipart/related; boundary="000000000000173f2406259b7f84"

--000000000000173f2406259b7f84
Content-Type: multipart/alternative; boundary="000000000000173f2406259b7f83"

--000000000000173f2406259b7f83
Content-Type: text/plain; charset="UTF-8"

Hi all,

I'm pleased to announce the next Xen Project Workshop in Cambridge!
This is free to attend, but you will need to register *HERE
<https://cryptpad.fr/form/#/2/form/view/YXHSSND-WmWdmv3msHqN4jC5RDpF8cSspct8pnr2U8w/>.*

[image: Screenshot 2024-10-28 at 17.08.41.png]

*Date: *Thursday 19th November 2024
*Location:* SCI712 & SCI713, Science Building, Anglia Ruskin University,
Cambridge Campus, East Rd, Cambridge CB1 1PT (refer to PDF for directions)
*Time: *18:00 - 20:00

*What to expect?*

*Talk:* *Introduction to Xen Hypervisor*

*The talk aims to introduce Xen hypervisor to beginners. It gives an
overview of the architecture of Xen, key features and explains some of the
interesting ongoing work. It illustrates the use-cases of the hypervisor
and sheds some light on how one can contribute to the Xen project.*
*Speaker: **Ayan Kumar Halder*
*About:*
*Ayan has been working on open-source system software for the past fifteen
years. He has contributed to open-source projects such as Linux kernel,
Uboot, Zephyr, etc.In his current role, he supports Xen hypervisor on
Arm-based AMD platforms. More recently, Ayan has been enabling Xen for Arm
MPU-based systems. Further, he is working as a safety architect for Xen
within AMD. He is coordinating efforts within his organization and across
the Xen open-source community, to drive Xen towards safety use cases.*

*Second talk/interactive workshop TBC.*

We look forward to seeing you there!

Thanks,
Kelly Choi
Community Manager
Xen Project
<https://xenproject.org/>

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

<div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr" class=3D"gmail_signature=
" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div>Hi all,</div><di=
v><br>I&#39;m pleased to announce the next Xen Project Workshop in Cambridg=
e!</div><div>This is free to attend, but you will need to register=C2=A0<b>=
<a href=3D"https://cryptpad.fr/form/#/2/form/view/YXHSSND-WmWdmv3msHqN4jC5R=
DpF8cSspct8pnr2U8w/" target=3D"_blank">HERE</a>.</b></div><div><br><img src=
=3D"cid:ii_m2t9wgjt2" alt=3D"Screenshot 2024-10-28 at 17.08.41.png" width=
=3D"597" height=3D"335" style=3D"margin-right: 0px;"><br></div><div><b><br>=
</b></div><div><b>Date:=C2=A0</b>Thursday 19th November 2024<br><b>Location=
:</b> SCI712 &amp; SCI713, Science Building, Anglia Ruskin University, Camb=
ridge Campus, East Rd, Cambridge CB1 1PT (refer to PDF for directions)<br><=
b>Time: </b>18:00 - 20:00</div><div><br><b>What to expect?</b><br></div><di=
v><b><br></b></div><b>Talk:</b> <i>Introduction to Xen Hypervisor</i></div>=
<div dir=3D"ltr"><i>The talk aims to introduce Xen hypervisor to beginners.=
 It gives an overview of the architecture of Xen, key features and explains=
 some of the interesting ongoing work. <br>It illustrates the use-cases of =
the hypervisor and sheds some light on how one can contribute to the Xen pr=
oject.</i></div><div dir=3D"ltr"><b>Speaker: </b><i>Ayan Kumar Halder</i><b=
r><b>About:</b> <i>Ayan has been working on open-source system software for=
 the past fifteen years. He has contributed to open-source projects such as=
 Linux kernel, Uboot, Zephyr, etc.<br>In his current role, he supports Xen =
hypervisor on Arm-based AMD platforms. More recently, Ayan has been enablin=
g Xen for Arm MPU-based systems. Further, he is working as a safety archite=
ct for Xen within AMD. He is coordinating efforts within his organization a=
nd across the Xen open-source community, to drive Xen towards safety use ca=
ses.</i><br><br></div><div><b>Second talk/interactive workshop TBC.</b></di=
v><div><br></div><div>We look forward to seeing you there!</div><div dir=3D=
"ltr"><div><br></div><div>Thanks,</div><div>Kelly Choi<br></div><div><div s=
tyle=3D"color:rgb(136,136,136)">Community Manager</div><div style=3D"color:=
rgb(136,136,136)"><a href=3D"https://xenproject.org/" target=3D"_blank">Xen=
 Project<br></a><br></div></div></div></div></div>
</div>

--000000000000173f2406259b7f83--
--000000000000173f2406259b7f84
Content-Type: image/png; name="Screenshot 2024-10-28 at 17.08.41.png"
Content-Disposition: inline; 
	filename="Screenshot 2024-10-28 at 17.08.41.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_m2t9wgjt2>
X-Attachment-Id: ii_m2t9wgjt2

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
GFm3P9xvooB/yuT+/l3f/7RAkfVv9l+xyQVyGWKmNQAAAFZlWElmTU0AKgAAAAgAAYdpAAQAAAAB
AAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAAEQKADAAQAAAABAAACYwAAAABBU0NJSQAA
AFNjcmVlbnNob3QNuD2GAAAB12lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4
bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRm
OlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1u
cyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxu
czpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBp
eGVsWURpbWVuc2lvbj42MTE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQ
aXhlbFhEaW1lbnNpb24+MTA4ODwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlm
OlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+CiAgICAgIDwvcmRmOkRl
c2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgrH3sKeAABAAElEQVR4AeydB2BU
RRPH/7lLryQESOhFQKqCigoWQEUsWLF3sGJBxd7B3nv/7KBixwICFixgQYqI9Bo66b1e8s28d3uv
3LvLpUGQ2e9L3pbZ2d3fHfF2bnY2LKLjyBpIConAHWcU4b4LClFcGob3fohBt3QPjhlYrvU9+b4U
zFgYFZIeERICQkAICAEhIASEgBAQAqESSGudgoz5U0IVFzkhIASEgBAIQMAVoF6qHQicdEiZVjt3
eSRueD0JFzzZAp7KMK1uhNcQ4tBNqoSAEBACQkAICAEhIASEgBAQAkJACAiB3UxADCB1eAHW7XBr
0r06VuGIvuW4YHgpXG7dgWbNdr2tDupEVAgIASEgBISAEBACQkAICAEhIASEgBDYRQTCd9E4e9Qw
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
EAABEFATgAJEzQYlIAACIAACIAACIAACIAACIAACIAACIUIACpAQOZEYBgiAAAiAAAiAAAiAAAiA
AAiAAAiAgJoAFCBqNigBARAAARAAARAAARAAARAAARAAARAIEQJQgITIicQwQAAEQAAEQAAEQAAE
QAAEQAAEQAAE1ASgAFGzQQkIgAAIgAAIgAAIgAAIgAAIgAAIgECIEIACJEROJIYBAiAAAiAAAiAA
AiAAAiAAAiAAAiCgJgAFiJoNSkAABEAABEAABEAABEAABEAABEAABEKEABQgIXIiMQwQAAEQAAEQ
AAEQAAEQAAEQAAEQAAE1AShA1GxQAgIgAAIgAAIgAAIgAAIgAAIgAAIgECIEoAAJkROJYYAACIAA
CIAACIAACIAACIAACIAACKgJQAGiZoMSEAABEAABEAABEAABEAABEAABEACBECEABUiInEgMAwRA
AARAAARAAARAAARAAARAAARAQE0AChA1G5SAAAiAAAiAAAiAAAiAAAiAAAiAAAiECAEoQELkRGIY
IAACIAACIAACIAACIAACIAACIAACagJQgKjZoAQEQAAEQAAEQAAEQAAEQAAEQAAEQCBECEABEiIn
EsMAARAAARAAARAAARAAARAAARAAARBQE4ACRM0GJSAAAiAAAiAAAiAAAiAAAiAAAiAAAiFCAAqQ
EDmRGAYIgAAIgAAIgAAIgAAIgAAIgAAIgICaABQgajYoAQEQAAEQAAEQAAEQAAEQAAEQAAEQCBEC
UICEyInEMEAABEAABEAABEAABEAABEAABEAABNQEoABRs0EJCIAACIAACIAACIAACIAACIAACIBA
iBCAAiRETiSGAQIgAAIgAAIgAAIgAAIgAAIgAAIgoCYABYiaDUpAAARAAARAAARAAARAAARAAARA
AARChAAUICFyIjEMEAABEAABEAABEAABEAABEAABEAABNQEoQNRsUAICIAACIAACIAACIAACIAAC
IAACIBAiBKAACZETiWGAAAiAAAiAAAiAAAiAAAiAAAiAAAioCUABomaDEhAAARAAARAAARAAARAA
ARAAARAAgRAhAAVIiJxIDAMEQAAEQAAEQAAEQAAEQAAEQAAEQEBNAAoQNRuUgAAIgAAIgAAIgAAI
gAAIgAAIgAAIhAgBKEBC5ERiGCAAAiAAAiAAAiAAAiAAAiAAAiAAAmoCUICo2aAEBEAABEAABEAA
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
7BHieRIgARIgARIgARIgARIgARIgARIgAZcnQAHE5W8hF0ACJEACJEACJEACJEACJEACJEACJGCP
AAUQe4R4ngRIgARIgARIgARIgARIgARIgARIwOUJUABx+VvIBZAACZAACZAACZAACZAACZAACZAA
CdgjQAHEHiGeJwESIAESIAESIAESIAESIAESIAEScHkCFEBc/hZyASRAAiRAAiRAAiRAAiRAAiRA
AiRAAvYIUACxR4jnSYAESIAESIAESIAESIAESIAESIAEXJ4ABRCXv4VcAAmQAAmQAAmQAAmQAAmQ
AAmQAAmQgD0CFEDsEeJ5EiABEiABEiABEiABEiABEiABEiABlydAAcTlbyEXQAIkQAIkQAIkQAIk
QAIkQAIkQAIkYI8ABRB7hHieBEiABEiABEiABEiABEiABEiABEjA5QlQAHH5W8gFkAAJkAAJkAAJ
kAAJkAAJkAAJkAAJ2CNAAcQeIZ4nARIgARIgARIgARIgARIgARIgARJweQIUQFz+FnIBJEACJEAC
JEACJEACJEACJEACJEAC9ghQALFHiOdJgARIgARIgARIgARIgARIgARIgARcngAFEJe/hVwACZAA
CZAACZAACZAACZAACZAACZCAPQIUQOwR4nkSIAESIAESIAESIAESIAESIAESIAGXJ0ABxOVvIRdA
AiRAAiRAAiRAAiRAAiRAAiRAAiRgjwAFEHuEeJ4ESIAESIAESIAESIAESIAESIAESMDlCVAAcflb
yAWQAAmQAAmQAAmQAAmQAAmQAAmQAAnYI0ABxB4hnicBEiABEiABEiABEiABEiABEiABEnB5AhRA
XP4WcgEkQAIkQAIkQAIkQAIkQAIkQAIkQAL2CFAAsUeI50mABEiABEiABEiABEiABEiABEiABFye
AAUQl7+FXAAJkAAJkAAJkAAJkAAJkAAJkAAJkIA9AhRA7BHieRIgARIgARIgARIgARIgARIgARIg
AZcnQAHE5W8hF0ACJEACJEACJEACJEACJEACJEACJGCPAAUQe4R4ngRIgARIgARIgARIgARIgARI
gARIwOUJUABx+VvIBZAACZAACZAACZAACZAACZAACZAACdgjQAHEHiGeJwESIAESIAESIAESIAES
IAESIAEScHkCFEBc/hZyASRAAiRAAiRAAiRAAiRAAiRAAiRAAvYIUACxR4jnSYAESIAESIAESIAE
SIAESIAESIAEXJ4ABRCXv4VcAAmQAAmQAAmQAAmQAAmQAAmQAAmQgD0CFEDsEeJ5EiABEiABEiAB
EiABEiABEiABEiABlydAAcTlbyEXQAIkQAIkQAIkQAIkQAIkQAIkQAIkYI8ABRB7hHieBEiABEiA
BEiABEiABEiABEiABEjA5QlQAHH5W8gFkAAJkAAJkAAJkAAJkAAJkAAJkAAJ2CNAAcQeIZ4nARIg
ARIgARIgARIgARIgARIgARJweQIUQFz+FnIBJEACJEACJEACJEACJEACJEACJEAC9ghQALFHiOdJ
gARIgARIgARIgARIgARIgARIgARcngAFEJe/hVwACZAACZAACZAACZAACZAACZAACZCAPQIUQOwR
4nkSIAESIAESIAESIAESIAESIAESIAGXJ0ABxOVvIRdAAiRAAiRAAiRAAiRAAiRAAiRAAiRgjwAF
EHuEeJ4ESIAESIAESIAESIAESIAESIAESMDlCVAAcflbyAWQAAmQAAmQAAmQAAmQAAmQAAmQAAnY
I0ABxB4hnicBEiABEiABEiABEiABEiABEiABEnB5AhRAIugtLJj5OTKneBFus8uS8gUKyRxoJEAC
JEACJEACJEACJEACJEACJBAZCFAAiaB3ceb399DxU59wm12nz7wx64d74XZ9XpgESIAESIAESIAE
SIAESIAESIAEQpMABZDQpBmKY2VK/hJJE74KxRGdGyplolfIkOylc53YmgRIgARIgARIgARIgARI
gARIgAQiKAEKIBH0xnBaJEACJEACJEACJEACJEACJEACJEACoUeAAkjoseRIJEACJEACJEACJEAC
JEACJEACJEACEZSAWwSdV6SbVnASmnp6vA63RKgx3V8b98DZeZ++xq9UpPvyckEkQAIkQAIkQAIk
QAIkQAIkEAkIRImetrLvTjcSLCYiL+HpomsReXqhNjePWilCbSwORAIkQAIkQAIkQAIkQAIkQAIk
QAKhRYCP60OLpAPjXL4bDb+vielAS6BXPW+cvOqGPzfHcKh9aDdqWPYxMkoS1P5/xnZo6JaVHyF5
vPBL2urQJNmIBEiABEiABEiABEiABEiABEjgvSVAASQMb/3V21Ex4I84Dl1RBZATV9wcbu/QoE40
KpbtuSGAODrfT4s+pQDiBF82JQESIAESIAESIAESIAESIAESCFsCTIIatrx5NRIgARIgARIgARIg
ARIgARIgARIggXAgQAEkHKA7csnXkplFf8LL9NLhef3wWjevSwIkQAIkQAIkQAIkQAIkQAIkEDkJ
MAQmgt7XGeti4uDF6OE2uzX73HHjXpRwuz4vTAIkQAIkQAIkQAIkQAIkQAIkQAKhSYACSGjSDMWx
Wv0WPxRHc36oX5Y6lvzU+ZHZgwRIgARIgARIgARIgARIgARIgATCngBDYMKeOa9IAiRAAiRAAiRA
AiRAAiRAAiRAAiQQxgQogIQxcF7O9Qi4R3dDmpRJ4eYWzaHJx/RwR/IkCaD93kfLmTUtRvZtg0zp
U7yPy+eaSYAESIAESIAESIAESIAEIigBCiAR9MZwWhGHQMEPsuDMtukY1quVQ5OqWr4ILu6egw8L
5nSofWRrlCF1CrRt8glSJUsU2ZbG9ZAACZAACZAACZAACZAACbgwAQogLnzzOPWwJfC1bOo/r/VR
2F6UVyMBEiABEiABEiABEiABEiABEggVAu+nj36ooHN+kDixXqNkrmfOd3SBHp4xXrnALEM2xZcv
X2HcT+1x+PgFHDx2NmSDsXeEIpDijbfKtRt37M5LQ6GqlCuMPNky4IV8Jw4cPYPVm/ZI2eig61Zr
v7SpkuDOXS88ePjI7nXYgARIgARIgARIgARIgARIIHQJUAAJXZ5BjpYj9QusG2B/gxXkILRwgB8A
AEAASURBVDxpEMiYLjkWTemD9GlSIFPxL3D77kOrZKqVK4pypfLiow/zI1HCuDh97ipmLVyHmQvX
4MWLl1b72Do4+Le5aNesFuZP6IliNb7FvQc+tpo6dDxKlCh2N80ODRREo6hRo+DVq6A35ta6h8Xc
rF034LHgzj/gONY+p0+THJ3b/A/1apZFHM+YRpOrIoCsWLMDP/SbgMdPA4uV2TKlxrJp/ZA+bQo8
f/EC0aJGg87xyInzqNaoJ65eD/z7XbJwLnT+ph4+Lpkf0d3cjHt+6txljJ+5Er9OXWxtaoGOpUqR
GFsWjUSPIVMxZ9GGQOd5IGITcIvi3O/gK8jvrXNdIjYAB2eXKdYzTMp9yWi99FZcjDqXxMGebEYC
vgTKJPRG78w3jA/jLiXC/GvhW1EvtO5LhcS+f+N4vYiGHfdjhdawHIcESIAE3ksCFEDC8LafvxUN
wxdGzvKyXf7njdQJnRMUgoPewz06WjSsir4/NELsWDGNzadu1gOaHvulX1u0+rIq9h89i7837jSE
gPKlCmD8kHb4sFBOtOw0ImC3ID+fPnsFTdoPxcJJP2L6L11Qs2lvp8UFz5ge6NS2HsoUy4v8uTOJ
cHMfuw6cxKRZK7F+636/69eqWgK9O3yBz9sOxtGTF/2OW77RsdYtGIZpf67G+BnL/U7lzp4e37eu
i49K5JVkrAlx8849/Lf7CIaNW4Ddci1L0zG2Lh2FHoOnYcX6HahRsRhqVS6JimUKIbq7G1au3YFO
/cf7CUy6ia9TrbR4QBRCNPFo0Dl/230MvLwfWw7r917FgS9rl4fmRfm4ZAHcvHUXW3cdw5Cxfxhi
lF9DizdJEsXFdy1ro06VkkibOhl8Hj/BwaPnMG7GUixYvtmiJWDOf8DoOca5ApKvpeXnVZEpQ0pU
rN/FX1vLD59ULI7fR3XCvfte6DdiFvYfOoWEct0qZYug5RdVkTNbepSv1wnq9WNawvixsXhqHzx9
/hxNOwzFirXbJdGtO2pUKIae7RtiwaTe+LjuD3j85K1w0rdTI3RtWx/b9x5H686jcP7idWRMn1KY
VMCI3q2RLEl89BoyzbyE1VcVTeb81h0qgkSL5lgiXqsD8WC4EdhQ9AzSyebeUXv2KgoOecXEbv15
EAtrbsd5LwQRj6ivkDn2UwNT0gcvHMUV4nYlE/igQDxfr6yF1+PjypPoIR7TFQaIjOuO7fb2OxTf
7d3/TRJW93nSB5cg/5zi4IOYqL4nQ1hdltchARIggUhJgAJIGN7Wm/eiYuLqyKnct6z86J0LIFpd
ZNuyMYgZwx3L12zD+cs38U3TT63ewfE/fYfG/6uI5t8PNzw+zEa62WwgT/ynjuiES9dvot/wWeYp
h16Xr9mOQb/ORY9vP0fPDg2d6v9BjgyYO7Yb0qVOjg3/7Uf3wVORLk1SVP+4KP6ePQjDJy4QIeJ3
w0NgowgL00Z2RvMGlfF934lW5/ZZtVLInysTPt+02+980fzZjbEOHjuHURMXYdf+Y/ggZ0ZU/bgI
NohY8mmTH/0JLVHkL6qcWdMjXrxYRuLS7u0aYvqC1Rg8Zg7KiYDS8LNyePbsOVp3GYWalUvgt0Ht
MGPhPxg6br5xvsGnHyFF0kRWxYYo8hR7vIQMFSuYHYtX/4f1W/ajYukCqFujNGpUKo7P2wz0Nxdd
hIof6+YNRQwRuuYs2Yh/tx1EksTx8HGJApg+ujOyiHgw+Nc//dZrzj9BvDhoVLcCJg/rKOElPv7u
uV9jizcqkG2Se9D4u5/x0OeJ35lFK7firpcXOrasg6L5suG/PceMc9p+7tieSCqCUrHq3+DU2atv
+jzClD9WiUh1AevmD8WEnzugUbshfuPFiuGB/qNmY6AINGaIzJZdRzBXvDjWzvsZbRt/ggEjZ+Op
MLZlQ3q2QNqUfBJui09kPO4e9TUKxn9k/LTGHWy6GxvtjqTCvecUwN7F/S6V0Adt0t02ht5x3/O9
EUDe13W/i+8QxyQBEiABEnAdAhRAXOdevfczfSIhCRNnLcf85f9i574T6NXxC6tMtGRt0/qV0Ln/
ZKsb4bmLN0o4THzjCfwfshE9KZ4dzlh/8RgoJJ4GKoLs2X8KK9btsNtdRZsFE3ohceL4KFWzA/Yf
OePXp8uAyZgwpD1+EK+N8xdvyBpXGOE185f9K0lXy4tQ8rvVDXLzBlWw9t+9OHvhujFWnhwZsXTG
AGM+6qliei9s3X3U8BDp17mxeCn8iEqfdxNh5ITf9fVNrSolkD1zGuT5uAXu3PN1tf1t2lLMEE+X
L+uUNwSbLuK5kq9CS9y642X01fO/j+xkiCS5xGNCw0AsbXDPljgsQkzRqt/6hZNMmLkCGdImx9Yl
ozFnXA/kKNXEL5QoftxYWD5zkHjVvELJmh3Fc+W+33B/LtmEJSKi/DG+B+55+fjzeNFGhfNmQ2Xx
SlGvnLWb9+LZ86CfHutY+mPNVvyz3RBA8ubK7CeAZM6QwvCoaSveLm/Fj7e9t+09hqHj5xneHt/2
GOOX46NT/0lvG1m80/CZfzbuQvGCOYxywba8fOrWKIXWX1ZDhf91xsa/nPNYsrgc30YgAmPOJ7Y7
mxjRXiNjrKcoLZ4J0UUMUbf+FYXPovWhNDj0MIbd/mxAAiRAAiRAAiRAAiRgnQCrwFjnwqMRkIBu
9HVDqeJHUPZxyXzG0/a5i9fbbPbnkvVGm0J5s9psY+uE5tTQp/wazjBtdCdklnALe6Y5IDKkS4H/
tervT/ww+33d/ReskUSaA7s2Nbwg9Pik2SuQKEEc1KzyodnM71W9YTSMZ+LslX7HBndrhus3bhth
Oqb44XdS3vz483Rs2n4AQ3q0tDxsvP+0Ugm0/3G8n/hhNpgi42vyThVCug2a4id+mOcnzFxmvNWN
fEB7IqEgX3Ud5Sd+mOfPCbf6X/VHgrie+OHr/5mH0fqLGsgrIk61Rr38iR9mAxWaeg2RcsQ/tjZC
X8zj+tqkXkV06D0OK9fvtCt+WPaz9r500TzG4V0H3n7PVGBRW7dlr/Fq7T/qtaOeIgU+yGztdKBj
pSUMysv7EU6cuRzonB7Injm1CGMd0HXgFGzfd9xqGx50PQJDzyaFvZ/+p5Kh6YG0KLU9M7bc8zQW
mTrGc0zNcxGe0d6GZbne6oOe8YXH7vjf3vTGzyTJ30AjARIgARIgARIggdAmQAEktIlyvHAn8GGh
XIY4ceP2PZtzUS+GM+evoNCbja3NhjZOaALUuq0HGEkt54tnh2esoJ/KflK+uOS8uCwb6H1WR1TB
YuqfqxAvjidKFP7AaLNDNr1abaZ5/SqB+jSrX1kSbt728z7RPBEfSrLNRav+8/P8CNRJDixcsQVF
8mczwogszy9cudnq3E5fvGY005CjVRvfhtqYfU8LQ7Vk4tkS0Ab9MsdmjpR/dxzG8dMXUaN8Mb9u
ZYp/gG0ScnLlmq8rut8Jizd//b1Z8m64oWgB/4LL3CUbjLVZNHX6reYradOohoQ2fYHp89b4y5dS
OF92CZV5jHPioWPLDh0/Z5wqnDe7rSbG8dieMTBRQmU0R0vHPuOt3i9tM0++V6slvGmMg4lSg7wo
T7okgauSi6LVwTQ44uX7/5dkHi/QMcMtl1yLI5P2eRkV2yXBo/6ce+TuSBe2IQESIAESIAESIAGn
CDAExilcod/Y0+M1vqoasmoioT+roEccs8wTz14ETjwadK+wO3tQNqIatqEhFfe9fBPbBbx6HNlg
agWZfBLmEFxTcaKNeDhMH91Fcj+0xxff/GR1KN2wZ8+SBjPnr7V63jy4ZccR422eXBmweNVW4/0k
8cD4pX9bI0zizHlfMUITwTb8rDzGzVzqV8mmYJ7MhgiTUvJxaGUTW5YgYRxDQCheMKe//BtHjp+3
2uX+fd9wmP02yv7euedt9IsjrAPas2dBJ33ctvsYvqxb3hCRtG9xEa52HzgV5Py1neb4KCViiWXS
2FM2vCi0vT1Tr42qkoel7w9fIkeWtBgows1Pv/7hr1s6KV97TbxrzDwe/k6++aAsNExLQ7CsWUwP
dzT7vAq6tP2f4SnS4OuBNkWbcZLDxi1aVLTuNNLaUDz2HhHwFlGg8cG0WFroHFKKF0jTNHcxTypb
nPDxeI8ocKkkQAIkQAIkQAIkEDoEKICEDsdgjxIrxmsMauS7yQz2IGHccdJqFUDC+KJOXG69hClE
k81jNfEumP2X9TCYquWLGqEd6jkREtN8IhpG862Ux921/yRGT/4r0HDuUk3FTap33HvoKxYEavDm
wOMnTwyPiVhSmcW0OX+tw+BuzSXEo5JftRDN15EgXmz8PvcfsxniiueIWgYpz+ouAklQpmVUXzpY
AtheCd2gBIGg5qDn7jzwMsrIurlFlez2UcQrxQPJk8YzKrAE1XfF2p0S6nM3qCYOn9NSuJOHfY+S
RXJhxvw1qN2iHy5cDuzloQJQ5Y+KQMUnWwlL06dJhhgichw8fjbQ9T/6MA8mDu2IBPHjYPi4edD8
KbYq57Rt8gk+qfih5EFpb7NNoAvwQKQmcPOZGxZej4dv09+GltStmOQhBZBIfce5OBIgARIgARIg
gXdFIGS7v3c1q/dw3DmbYmLUEt9NrKPLH9HCCyVzPkORjvaT6lmOuXPEbaw/6IGu0+JYHrb7vktd
b9Qu/rZiht0O4dRAE0quk0SYWrFEw0Q2/HfQ30xKSO6Mob1aGSEYD7xCLj51kRwNeXNmEaGiGfYd
OunvWvrBW6qMnL1wFSUK5Q50zvJAicK5jbK+h6Tkq2laoeQPEVka1amAvsNnGh4fzST56d8bduDS
1ZtmMykT67vp3rr7MPoMm+F3PCK/yZs9oxGGZJaNPX3+spTb9ZYcJj+HybQrSEWaP8f3xOETF1Co
ytc4bMMLRiezZ98pQzDLmTUd9h0+bXV+H2T3LU0YsNRwN8n/0ueHxiKwrEX3nyYHyqNiOZhW8fm5
V0t83fUXHJIEsjQSMAlsl+ok38I3POyDOI7/fzijlN8tKCVe04r3SCr5efAiKi4/cTdCTP6964kX
r4PvzadiTNlE3sgr80nq8RyvpPLTRcnjccrHHRvuxMHL1+bsfV8LS2WbuJLD5NazaDj4MKb/k/Ip
tpwrKm3UrjyNjuPeb8Vg46CV/2iS2EyyxmyeT5BDSugmiP5Crh8Dx6Tvce8YuGOjck76mM+Mfjpk
eosSxcpK52FpGpKj4Tn2LGH0lyghFWXSxhBPsJjCQ9Z/WcKYlInmcrlvYy4Bx7XkoJ4+OoalKfdc
wlzXu0/KojrjDfQu1h1Xys1+nNgbWSRxr4ZpvZB135T7d1TuwUb5HjyWss4hsaTuL6AVa3Tu+h3W
e3peQqT+k9+J0AiVUp76e5JVeOaU75Gu4Zzcs9PC/pT8nAkiHEv7lpG5qek6/3uTs8fZ9SaQ706B
uL7l5M/LtYO6prNjsz0JkAAJkIB/AhRA/PMIt093vKLiwDn/f+TYm8zDx75/VDjbT8e9/yiK09e7
+8D+H4D25hxW5z9r3hfzJvbEkmn9sfSfbUaC0VevX6O8bHqrSbhDp36T0OXrulJRJGivDEfm+0K8
KRq2HYTty3/B7LHdMXTs/EDdNm07ZIR7pJZyppevWo/hr1WlpCFw/CdVWyxt0pyVaNGwCqqUK4xj
py6ibPE8RrUTyzbXb90zBJ3PxDskKAFEE5rqfMPCihXICc31Yc00iWu5kvkNrwvz/IYtB9Hyi6pI
niQBdD3WLLTmr/dhxi9dsWXXYdRrNSBQotaA1zYTojaWUru2BJCmkohVQ2AshZRq5Yoa4ke/ETMl
tGZuwGH9fdYSwHPl+zN74XpMF28UGglYEtgrG10VK4zNr6fvRsnyfMD3umFsmeYOyohAYWv7eeOp
G6ZdTojpVxLCW4QRZ+x/Ke6jV+YbiCcbN2t26VF0jL2YGLOvJvA73TfzdeSO+wRrbsdBc8ltEtDS
ygb397wXjcOzriRA9xMpAjbx+6xrapH2DrpkvAktG2zLdKPcRcbZFmBjWj2ZFzpL34DWNVPgY2Ul
Ge3ZIDbBmT2fGqxrJX+AGDbm8kQElHnixTPxYiJDEAl4XcvPlhx6n0yO3+UeqXnI2K1kzV+nvQ1P
N1+RRhPmOiOAhOa6Y8sc+mW5jpqybv1eWrPHsu4plxJixLkkTottGvLVVsoT15PvmrV7rALT37fi
GmOrUOGsJZLv7tfiVfVlqrs275uOqd/XXnIfNCdPQNPfyfbpbyFvvMdQAh/Z+a4E7G9+bpb6Lr57
k9/n833pKICYYPhKAiRAAu+AgHN/8byDCXBIEngXBB7LRrROy/5SNWaiPLmPisHdW2BAl6aSZDQW
KjXoijmL1iGdhD8cPnY+VC6vCVfrtxkooSlx0K9T40Bj9havDO9HT7Fy5gAkjB870Pl2zWsZlUxG
Tl4oiTav+zuvG+5dB06iheSP0PK+F6/ckISku/y10Q/tevwmlUPSSpWUVoHO6QENCbp9eCGqfFTY
6vnQPvhVo+pGeFDAcXWjP/Hnjnj05Cn6ijBgWt+R03FXco7MGdsDmgQ0oGn53NNbp6Fvp0YBTzn9
+ZtmnyB69Gho1mGoXfFDB9eSvP1GzsLXEp5Sp3qpQNfr0LK2wfeHfhOhJW5N69mxoZHYddAY/zlF
zPOWrz/3bI1UKRIbSVGH924Fyx+tfKPW4NOyxvHC+bJZduX794DAk1dR8fzNk/QYbtY3m4pBN6J9
sl7H7HwXDO8MFQouyuZ9+c24mCCbbxUWNovnh46lT7q7yIZ/ecGzxhNwRzDqRvSn7NcwLMdVf+KH
enucEc+PZ2/mmCbWcwyWdr2yBA4pc+Q6QbVJLB4B00QoUQFG56PigiaKXSFr1HWeFs8D0/tEvTvm
CovumW4YJYXNcXVjfkdCi/RH+5vm9SKa33HzvHo02LI6svn/W0oUN0h539hEa3/dME8V0UI3/v/I
e/X8iCFeJY1S3cPqImdRIbHznocqBqwufAadRLQxxQ9bcwrqeGitu6Bs+FcXOoM6Ik6Y4oeKAfod
UI8VFSfUYsq6vxGRYVGB80gnApejpt4Qq4Trl8LMUvzQe6WilprkrUa1pF5YIflxqibxLc/uyPgq
3HwvYsPWD08ZwpUpWj2SsXeLt89WEctuijhomt6v9UXPoK6s1ZpNfiNQ6e9aIxEynDVdhzm2rk2v
TyMBEiABEnh3BN7+H/7dXYMjk0CoEdAn6qlS+ob8FHxTbrRR7Yp4+Ogxnj9/id+lkoppmqthwswV
xo95zHxVDwTNE/KfhIyElmnVFi3F+tugbwMNqQJJi++HYfqozti8aKQIMOuNqiu6qVdhom710lgv
FWIGjZoTqK8emDRrBTQxZpF8OTBG8oxYy82xcftB9BWhpVfHL6V8bjzMXLAG28SbJGum1KhUppBU
N2mI1SKc/L0hsHhi9aIhPNiq8yjMkxCTxav/w5K/t+KJ3I/CEuLxfavaSJggLpp1HIprN9/+sXj7
7kM07zgMM8Z0wcpZgyWfykKDSZzYnihXIh+6f1sfT58+x+hJgfOsODvV6uIFdOnKTXxWtbTNrlqN
RkvvmjZw9Bzo9+b3kZ1Q75Mykqj2P8SKGQM1K31oeLOMlbweE+U+maaeLAU/yCKVebagZcOq5uFA
r7v2nzC8Sp4Jn5NnL6Fk0ZyB2nhE933ymDNbeqSRhKwbt/kP6wrUgQciHYEs4mWgm0m1/V6Bw0f0
uHoIqDBQIoGvS75upvTJ9b93YxtPp7WNafr0u7l4iOjmNKPnMyPJapMDabD7QSyzSaBXddOfJeN/
8MZVX0WGyVKuVgWVvdJPE7bqZlVDdEol9Dae3qsXijjfYcDpZIHGC86BaLJZnCeCRmYJV9DrzxLv
lWFnk0hoTzR/wymL/DLPgVmvIYu0/SrdHVyU0B8VgNRUnNAftW4iArURTwM19UzZIZtgR0zFI/VQ
UNONeR/xxlh0PX6gkA+dyyfJHhjeEipeTPrgEn48lRwz3myc7V1Lwz7mi4CgpZDVdsr8NtyJbYRn
7LXxXbA1Zmisu7V4oXQVQUnvhZqGffx6PjG2SUiKKTxpaFIlyVXTNs1t5BKvH/WQWCXiT/ujqbD6
VtDhtyXl+zs1zyVDNNLxVVQaLePvuBdLwmpiGJ4kGm5URMKlaie/b1xn3AeX0flYSuM7qH2Csv7y
nagtwpWaekGNPp8EW+Q7rGWY3+g2xjkVCH8Ur6Ua4i0US373Bme7ZoQcnX7k39tEhTcV45JK+3oy
n6FnkjoUMmVcRP5TWn5XVOBSm3stgb85GAf5HxIgARIggVAlQAEkVHFysHdNoG3TGhLGUtDfZQb3
aG581vADUwBJEM9TEla62wylaN+itpy7i52SuDQ0Tau2FJbSuk3qVQw07LJ/tqNItW8wqk8b/CCV
Wnp/7+vJcO7CNXQfNBUjJi20WWVk/rJNGCqeHerB8vu8fwKNbR4YOGYutuw8jEE9WmDZjP5GklEt
76qJPdv1/C1MQys0L0mNJj+iZ/vPMW9ybySIK8lzn7/Ajr3H5Xgvf6Ei5vxVnClY6WuM7tfGSBoa
W8oLa5WWe14+mDJ3JQaJCKE5VUJqqVMkFfHCA78O/MbmUBu2HvAngGjC1+Ydh2Ng12ZoLnlYPq1U
wujr5f0IQ8b+if7iIWJpGmajVqtySePH8pzlexWt1MundZdRlof9vc8hVYQOrJ2IXj9PE2Er6GpC
/jryQ6QhoJt50w4+DOwhped6STiCKX6ckyfx9fanx3WLJ9lmf33VPAo/n01q5NoYJBs7zeMwLvdl
VNiZyWauis6y4TfFDw2ZaXM4NTaJuGJp6gGyR8J19GeVhCf8mvOyEbZhubG0bO/s+yryxF/FD7Wx
FxJjqKzBmj2VeWjujuq7M6KHcMkpAtJci3Aca32cOaaeB6b4oV4VTUQ4CRhmY46nc5kvlXs0TGN2
vouII6z7ypyOyn0MSnDS/uodMFS8bVT80Hwfg84kc1igMa8fmq+FJEdKd9nsv9E+MEkEMA3DCWjq
YbT8RlysFHGgh4glLUU08RQRYWSOKyj7IDM0sa810+/h6FxX/MSPU+LN0/xQGmheDEu7K9/fVSKk
6I+GyPQTr6cB8j2eIvOxZ7+K4FFOQsM0HGmqtLeVo0TFkbZHUmPHg7sYIOOruPezeDXV3pven0ih
ni/TRIjTkCoVuD4TcWXmG6HN3lz0vHoPqSmzeVfjG+/5HxIgARIggXdHwPq/QO/uehyZBEJEoOqX
PR3qP0kqbiRLkggV63cOFOKg3gQqUPQYPNVmRQ/Li2zbewzu6apYHgryfavOI6E/1uz0uauo3riX
4X2SJUNK3Lx9X8I+7Och8Xn8FEly17E2ZKBjm3YcQolPvjMqlmTJmEpyjty0WQ5YxYSg1qahREGd
14sHPL9i/Q6/Yxo60qDNIGO9WWUuZy9ct8v8onhm1JIcLircZE4vT/QePZFktncCrVMP2Ju/1U5y
MH72mrZOBXlcE7Z27DMe3QZNkYo7yfDi5StcuHTTX9iLOYAmQw3IxjzHVxJwhoBuNnXDbdohK0/9
1U1fQyzUzr4RP3QDZ89my0bthWy8hmS/aoTEDJENXutDqQN1yxX7CRqk8B3/oTyRr7knvbGhD9TQ
4oAmMa0hAsQM8dhQrwHTO8CiidNvdQNu2uIb8cy3Nl91c9tTcoCoR0JoXF8vpE/rdSOspuJH4wNp
DbHFOBDEf9Rzp77kd5gjPDR3yi+y0a+4I1OQXgu1kj5AHvGeUI+PViIEqJgSXqahLuoFYc5gmQgc
A6yIH5bz01CY/uL981hCuNpJrgwjb4iICV+JeGbNekvIVBIJcVLT73k94aWeRUHZnyIu7RIPpEUF
z+EryY9izzTBaOGtWf3Ctey1V0+dquLN8qF4phQSrxPNq7NR7oelzZHfo+9kfert00RyijgqgGg4
lxkSpZ4xtpL2Wl6L70mABEiABEJGIOh/VUI2NnuTQLgR6DRgEtKnTYr5E3sZOS+0fKluqCuXLSRl
Tztiu3gh/DptSbjN76VsnI+fvuyQ+BHcSWoIkCbkvO/1dsMQ3LFC2k/Xe+zUJbvih+V1NMzn5Nkr
NsUPy7Zh/V7Z6v1TQcsy50dYz4PXez8IfCsbK3WTV1OvAa0oEtA6Shs19cD4/EA6w7U/YBtbn3UD
+esFX4+lKpJLIfsbDwvL9ppXRL0R1MZeSGRX/PBt6VsZo5OEJjyReZkhE+a54Lwmf7M51nVqyIKj
ZuZPcbR9UO2ap7lreHFom+9lbepp4qgdkvtnbv7Vq0NzaARlKn7skfFbhLP4oXNUESvbm++G5qlo
fyyVP0+IoNYxUpKg6jrUqoqYV95KHhSt9qIhLaZpSJE98cNsq0lq+0hYkfkdNY/bejVz1dg6H/C4
5s8xTavvBDT1SFksSW7VNOTK9MQK2C7gZw3FMXOozApFD6WA1+FnEiABEiCBtwTsPx5625bv3iGB
b2v4QH+CY08X+T6JcqbvZ8WeIDj9nLlGeLbVRKI1m/bG/Am9pBJMP/iIF4GGUmjYw4p12yUfxwiY
5VfDc568Ngk4QuC5VO7RnCXekuuG9n4RqCgbxY5vqkNonolvjqQK9ORac25ongU19YqwVq3CHjXN
DdFKnp5rQsj6Ke+hj+QOMU3HN8vT3pLQBU3w6Yxp+MIo2QBbq7DizDja9oCUz9UNtIYjqCi0VpKM
hqWpJ0ndN5t0zbGyUsJ8nDUVDw5KOIuKG5+LAKKVeIKyQRLmE5oCTlDXCurc15JHRU1DPtrJ99CZ
Oan3zUDJjfFXwfPGGG1ETAl47z6VPCmmgKHhU+rV4YwtEgFCw0/KvBELnelrr+1JiyozWu7Xmk25
nAj13oSzNJFkqI4kM9XwHTX12rIVQmXtWjxGAiRAAiQQfAIUQILPLlR7XpcSs5du+U/iZu8CWVK8
QHzP19h1OnBptqD6Fs78HHe9o+LMdeeuly7pSySN65uEL6jxI8q5PQdPIVupZihfKj+yZEwNH5/H
2Cu5FmyVMY0o8+Y8SCAgAfU0yfRh44CH+dkFCZhCQlBTjy6hBmliPsfHIn6oAGJab3nCHTABo57T
BJum/fXmKbT52dHXe/IEe5O49WviypoynqUAkl3CX0zTkqwa9uGszRMvk9AQQDbd8ZSkpb5X13AM
ZaWlUMPKSksYRHwJX1FbImKTWe3E2esvuhnPEECyi7ikCW5tlXHVTfQuJzxMnJ2Ho+3VW0Vzl6it
ux0bKoQ5a5rv5LQICVo2OKd8p9ShSHQRP6si3z3TJr9JUGt+dvT1T8mh8S4EEBUVNfxIQ1wy2xBA
NORL75d6f6iHiyavvWKldK65lsISTqMs1Jj81KTCVxIgARJ49wSc/xfs3c/pvbzC/H9j4oepzv0R
t7jnXVQp+BQlOyV2ipl6fmw87I4GQxI41e/X1g/QsnL4h1M4M2kNT9DEmmFV+cSZubEtCZDA+0dA
q3k4a1qec6DkUZhrI0FiRin1appWyQiuaV8VQLTCRhxJ5vhQEp2qZX2zSdP3GoITHHstXgOhYTpH
zT2hlTm0SscEqf5xWErgLhcRRBNuBkyWGRrXtBwjo8Xm90iIWL+tJJJeysPaEkDOiZdJRLAcFiLY
+jvB97rZJNVWdNOvyUJVINCSuaZlsPgeq5gQHLMUVBztr4lXs8mc9Huu4Sv6aEhLF2s+DuWvwo2P
/A6q54uHSDaazNWWTRXhRgUQDffSnDyDxevFljV44/2h4TiaJJdGAiRAAiQQNgQogIQNZ16FBEiA
BEiABJwioE+PtWyrenVce/p2oxhwkFQeviU0dYOm1SqCa2ljvBVSdHNqbkLVQ8G0ExahAOaxsH7V
yhw7pTLHj1KNRENSckv4j/6oh8nxhx5YfTuuUR0kJAKFrTWlEC6mfS6hQtUtktOaxx15NUsaa1tl
HdHNUgC58iT4fzpetfgeqxeIKYBoHoyEb/K7qHeJlr59l6YiRlPJ5fKF3EOzBK2t6+nv1RER2dT7
w56tE3Hogogm6UTM0VCyERL6ZS1xrSaDNb87Gu6jOURoJEACJEACYUMg+P+Khc38eBUSIAESIAES
iDQEmkjFkKAsrXgDaElPNd1waTUJe5vBmFF9n0jrJtIyHCao69g7lzi6VuLwfQqf8s3GVMM9rlts
YO2N8S7PT5dQnNWycawh4To1RYQwy/Nmj/MU2ePcwneSN0U3139djy+lURNCQ3xCw2JFe7sJLivV
QELDzKonoTHWuxrDUqS5+zz4fzqqZ4VplsKDCgKmj9C1x7bFPrNvSF7VY2q2VOIx16TfDQ1nUm8P
LRutFWv0nmhSVvVWKZvQB3klX4sjpr8jmiOnr/wOJxBPKv19tObdoflOYrzxJFGRk0YCJEACJBB2
BIL/r1jYzZFXIgESIAESIIFIQWB9gPKZ1hZVUDZbukHSEpndM99E1+MprDXzO3bikQcyePp6b3Q5
nhKPXppbSb8mTr85ZhHecUaSmGquCk1QqeEaWkY0IphuVidJdQ790XlVlPCd0rJZLRLfx0jmqnkr
tPRq8zR30PFoylDJFXLCIjRDr3swmCFBlvyOW7C2PB6R3p+V75hp+r0MrmnYkmlaucU0FUbUC0LD
rzJaeByZ50PrVYWNhRKGlkhe1bOjlyT7XSDhJ9a8NMxr6m9Tbvn+L5Qyu5ok2J6p4NE5400jzKep
lMS1JoBo8ls1zYniSBUh9WqKIuE3mniXRgIkQAIkEDICFEBCxo+9SYAESIAESCBUCWgCUk3kqMk2
G4gbvVa32BFEIkwN9aj8JoGkbtD3esUM1flo3o1qb0I9cshGMKIIIJaL1NwfE0WQ0B/1nPlIvDPa
i/iRU+ar4Q7jJVdI3b3psTMIjpbj2XpvmWNFN+zqOfA+mOW6VVgKrqlQZZrlmHrsiIhJpUTAUm8Q
vYYZHmO2D43X9uIZpOKHemq0OZxavIjs5zNRyUPLF78UwcR/2lbrM9LSvXNFBGkhITYamqWC5h6p
+mOahv6YHku28vqYbc3X1odSm2/5SgIkQAIkEEICzqdyD+EF2Z0ESIAESIAESMA2AU2+2F+Snqrp
luunbFeNsq/GASv/OWbhhVBQKkuEtpm5QHTcfHEcCwUIOAfN1RFWpk/zV8nGtsqujBguORjUlGO7
9LeN9yH5zzELD5ACDoZFhOR6EaWvZfJbU2xzdm76HTCrGt2WPB/6Y2mWXkd5gvk90zCwoKyWeFap
6XocET+CGiuocxqiZVYI0pK4llb/Talc/Z4ukBAtGgmQAAmQQNgS8P+vT9hem1ezIJAnw3O0re5j
ccT+23TJfEvSOdtPR84sfZ3tlzPdW9dV+7MLmxbu0d2QOUNKaLWXC5du4tnziDfHsCERsa4SVXzl
EyWIg9t3H+L166D/II1YM+dsSCBiEFC3eS1Hq0/EM0l4i27eh5313cwHnOGBhzENd37d/H0pHiNT
LiXy23wFbBucz/vEo0QrVbjLBvYLqWyhOTWCSspq7RpVknhZO/xOj+n/eaYKi7bpbhuhC9k935bz
De6FNR/LKRFBtFpIuUQPjXLFl95xzorgzjU0+6kod1HCL9JK/oySCbyD5aGh3wGzhLClR4Q5z11S
baUV7hgf1Xvnn9txjO+1ed6R12pJ35bSDdheQ3fUu0Rtt1esgKeD/KxVXbTksqN2QTyS1kpCVBV8
qsq6+7knM0oHq3fSZ8l9RZi/pWpRaOWmcXRebEcCJEACJABQAIkg34IyuZ9Bf4JjI5o7/4elCi4j
mgffjTU48wzNPvHjxsKPHRuh1RfVoCKI2oOHPhg3Yxn6DJuBV+ajl9C8KMeyS6BC6QLo9HU9FCuQ
HTE83PH4yTNs230EQ8fNx7ot++z2ZwMSIIG3BLqdSIG1Rc8Ym/evZRO/VMq/nrRSheWG5MLQ0A9t
k142qFqdxNnEinUlJ4EmONUQkYD5EPRJ/QQZ/1sRYWJJOIkmeGx1KM3bidp5pxVPmgZ4Cm6nS6id
1lK+pySER0MOXhp+ICEfuv+ZZJiR96JR6rRrxhv4RqrSOL41hiFqaenVrfc8jXKrIZ9R2IwwUEq6
atlhzQUzKNs1NJaEvo6uWxOC9s5yw5io5t74+Wzg8rD/iNfObvn+FRIvJk1m21xCSPR756hpAuEK
iW3/PfRcRDzTNLmpM1ZKQtJUAHTGtCSuCiDq+fK5CIejxRupioSS6b1Xm3WVyU+d4cm2JEACJBBa
BCiAhBbJEI4zb2sM/LrM06lRfmryEB9mf4bSXR3/A0Ev8O9Pd7DpsDt6zbIf+2o5oY61fFCzaMif
oFmOGZz3njE9sGz6IGRKnwLdBk3Blp2HkSZlElQvXwzfNPkUcT1joX3vccEZmn1CQKBd81oY9mMr
HDh6FgNHzcGZi1eRJX1K/O+Tsvh79iB833cCxkxdHIIrsCsJvF8ELspT5BGyUewu5V7Vu2OIbDo/
kzwW1rZhurmqLk+a9Qn9gKzXDBHDWvJFawTVy2R4jqvGqV/PJ7a6Of31QmLUlifXWrlDQyC+lA2d
VqixZ/rEe/IHl4yyoPba2juvG9yfsl/Dd0dSGU/T7bXX83r97JJzQe2AA7lRHKnIslES2S6V3B9a
4aNGMi94v7wqiWpTWr0vxoUt/qNeCGNzXUY8EQR0s1/bxv206BImbx1Z999SdWeteGWUl029VsD5
RgSxMfJ9sWd6D0bmvGJUVtG24y8kwikrQp5+r3tK/psVhc8a4lJHydexV3JnqGeIPdOKLnNElFJx
xpY9EO+dOyLmaQ6QIvEeGblhfCRfhz1LIWWm+2Vxvrz0fyJwHZdQG00grJ5ZvwmrBm+Sn6oXkTP5
aFR01KVpaWxnRCF7a+N5EiABEngfCVAAiSB3/cbdaNhxwrns3g98fP+ld7afLvmOd1Snr3frXvBi
v0Mb8cCuzVAobxaUqtUBuw+cNIbfd/g0lv6zDfOXb8LSaf1x5OQFTJq90qFLJ4jnieoViiNDuuS4
e88bW0VQ0fHsWXD72RvXFc9nz5waQ3u1xB9LNqLF98P9hSKNmPgXpo3uZIgjqzfuwsmzVxxaogpc
FUoXRPKkCXH56i38vWEXrlyzH8NfolBOFM6XA7Fjx8Dpc1ewbM12+DwKf+HOoUWzEQkEIDBZniJ/
mvQBcmkyRXkyriEo1oSHx/J0u9vJFEZ5T90EDs3uK2jYE0EqyGZ2tGxO1Q7IZnPEm5wZAaaBx7JR
1Lwk43JfNk4NFDGmqMynq3ipeIuXhTXLKk/Z1VOgiLTTXBzfy4Y2JNZLhKCSCXywUjbIPWWt9nI4
6L+QQ4SDmX9k1/23iSgt53HLIhdFa6kYs1xCEyxNn9hraVRLD4I+p5IZIoCea/Amp4M9ESRzrKeY
IPxU/Hgom/F2R1M5JJpYziU03wdn3T+KQFFC7oF69XSSSicqDvQ9lTyQ15A5T636MiHXJRSI7/v3
wwUJoxlz3nool/bRxKjTryREM/EY0mvMK3BevjtJMVYEOFuOnSrG6PdME6fq91eFEzU3K19LTTqq
wo16c+h3ubV4Munvji37WMZW8UZDd9QTSgUse3lGLMeaIrlAhoq4mFQ4fJXuDooJO7U51+yLh5bj
NJZqMvp7fVB+RymAWJLhexIgARJwngAFEOeZsUc4EkiWOAGaNaiMX6Yu8hM/LKez5t+9aNLhZ6x3
MNyidrWSmPBzB8SNHQtPnj4zwjZ0vAUr/kWjdj/jxQtfV1XLa+j74PYLOE5wP0eJIgXxgsitYe98
cK9rq1+5EgWg1xw6bp4/8UPbP332HMPHL0DtqqVQrmR+hwSQQd2boUOL2ogWLarffdH8Lr1/no7h
ExdYnYZ6Bi2c3Nu4hnldD/fouHXHC19+Oxjrt+632i/gweCyC26/gNfnZxKwJKDhAp1PpMTSQr5P
xbtnuoE18hReS8AGtM13PdHpWEr0k6fFunlUESSfhH78LpswLbdpaVqZQpMzqheDbv80t0Vb2ZDr
9WzZChEGOounQ3/xMNGn+tq3gDxJXynH94t3hf7EiPrKCF8oKyEDtZPfN57kT5Prz5KfkAogf0k1
nDKyIdVN9STxKtkjHhT/SJ6Fw/KUXat0aClVNV37R3J9DaEoLOKL2jZ5Gq8crJlyMy2vcPlLNt1/
SziGbjhzifeIikTfChv1fjBNN8ON9qfFmJyXkSbWc0MESRXjheHdsEWuZWlpYj4XD4C7aJT6nhFC
pBv5TsdSvJMqJ5bXtfc+OOvWyizNDqYxRDPd1KsgV0U8gn6/nADb7ntCBQ6PaK+NssSa80NDq/S7
oqbeEF+L905QgoO2GyxCW2y5h/+Tvpp7Q0vKVpJ8K+vvxja8eLTqUVIRIrSaSj1poyEzavo9VHHF
FEDUI2qZhI1ZVpNR8aCUiBB6n1U4mZnvguTWSQrNc2OGfqnIob83WklI16e/ERqyk0DErpZp7yC9
5OTRqkj6+2DPFounUDcR7rS87w8ZbhpjGclPr70f1YPs8eF5EiABEggPAoH/ggqPWfCaJOAggdrV
SsnGH+g3fKbNHn8u2WTznOWJwvmy4feRnbBx2wH89vtSbJANcoa0yVFHNuo92jfEiB+/Qrsff7Ps
YrwPTr/Zv3XFkWPnMejXP1CxTEHUrV5GvBvyw80tOnbsPYKpf67BirXbA11L+x0/cxn9R8xCgQ+y
oOFnH6Fy2cJIkyqp9DshYSXjcfDYWaOfemE0rF0e1T8uinSpkxkC0Xcy/2OnLgUaN7QPmGLMMxE7
rJl5/vkz+0lq2zb5BD+0rivhMoswZ9EG7D9yBsXyZxfhqyoG92iOC1dvYMHyzf4uo+LDlJHfo4i0
+6HfRCxZ/R9u3r5neJB0bF0Hc8f3RMlP2+HUWd+n4tpZBZOtS0eh84DJWLt5L5rVr4wqHxVCmQ/z
4fbt+9i6+xiGT5iHoycv+ruW2a/H4GlYsX4HalQshlqVS8p9LYTo7m5YuXYHOvUfbySA1Y4fi+hT
p1ppVClXCNHcohlCzLfdx8DLO2J4VPlbHD9ESAK6udfEpq1k8+UpSRxVgGhpIwfHn5I8daeEDIzJ
cQV5ZJOnoSr6o0/7NYmlhwgUuiFXLwTTVFgYIJvOgFU5zPOWr3/IE/RDXjEwXp6ep5NwG33qrvOy
Zk/Ea6SbeAdon0QW17PW1pFjGoJxZU90qYpzzbe8qGx8LaveaGJWLXlr5lgwx9SKH62l5KktceeE
iEMarvDhm6fzuqE2N9XmGFVlk28pgOhxLTdcaVcmDJD5aGLL0iK66I96d1x4FB1PxGtEw3aSiFCg
m2i1ffIEX71X9J6GtwV33Zq7pOLOTIZng4pDGlLyQ0b1uvD1vLC2rqkiPg2S75gm07VnKhD8IEKe
ln4eKGJeDLmnKljojzV7KX8TWHqJ7JJ+Knxp3hcN11EBzjQNg6m/Px0mioCmoV/qnaReJurdo98T
vVca5mXaTREa+8m8NeSpzpvkpbqCLiLKOCKA6FpmS6iY5s8xw3O0n86DRgIkQAIkED4ErDgIhs9E
eFUScIRA8UI5jLAGn8dPjU1+j3YNMH9iT4z/6TvJNVEa6iHiiCVPkkD69RJvhMuo12oAVm/cbXgu
nBCxYeCYueg1ZBq+alwdLT6v4m+44PbLmC4lUiRLjNZfVsOcsd3x0OcRfpRkrVP//FtymaTEoim9
jc29Vk+xNO2XWvoVyZ8Nq+cORhxPT4ydvgxT565CicI5MXdsN8NLQivh/PPHECRPnBCT5/yNGfPX
oGSR3Fg3bxgSxo9tOeQ7eb9y/U54+zxGx1Z1jPlYXiS6mxs6tKqNe14++FtCYIKyjz7MI6EyrTFp
1koRdyZiz8FTePnylYgRR9Hih+FYKYLDlOE/IG/OjP6G6f5tfXxWpRTadBuNX6YswoXLN4wErBoW
VbtFH3hLgtzFU/oKv7ebjijCOmfW9MInjjFml7b1JPTpDL7vMx6rN+1BpbKFsHXJaNStUcrftcx+
8eLFgoo143/qgOu372LwmDnYsv2AiFTlMLBLc6NPzcolMOOXrrjv7W0kgt259xgafPoRFkzu429M
fiABewQ0hOSSbKrVKslmPKiqKudE6KgpuSWGSNLKsz6+oZWa40HFgtwSSmOGYOhGVnNQtBfvBkfE
D3OO+gS+6u6M+E3CEiyfrpvnNc+C5hIpuyOTIX6Yx0Pj9aBUvKkm1259KDXWSS4ODc0xTcMxLMWP
IyLUfCXtdK6md4jZNuDrF+LNoaVLfQKE85wXlprnwiynG7Cft1xf+bURgUVzeqivQxzxFFDOKqKo
l4Ru+nUu6p1Tc0+GCCF+mOsI7rrvirdNc/EE6SIeQYdlbdZMhQkVlhpJstQ+EjrjiPhhOY6Gb9XY
ncEIdbLW19eTIj6qS7lj/b6ZITJ9RHRTocmWad6PJgfTYpKIiipWqWmYlAospvihaxosyW7LbM9s
iB/aZokIFwtkTnpdZ0y/V5bimwoiNBIgARIggfAjECV62sr67zXtHRN4uugadp6MjlJd/CcMSxLv
FS5Pu4ExkgD1h6n23Sktp7m4511UKfgUHrVSWB62+17n8tf2GGgwxLl/hH9t/QAtKz9CkobJ4fXI
/x8Au0beRp70z52ei93JBmhw4t+p2Hf0NJb9sx1jBnyDazfuYON/B5E6VWKULprH2HzXbdXfEDQC
dPX3UYWNsYPbIfdHLayGZKhHwfr5wxAzpjuKVfvWr29w+21b/guSJYqPW/e88GnjXrh+657fmFrF
Zliv1obg0qbLaEz5Y5XfOe3n7f0EWTKkwGct+mHvoVN+58y5qMdD8waV0LLTSOzcd8LvfJP/VcTE
oR3Q/sdxIpos9Tv+rt6oYDD9ly44fuoipv25GmfOX0H2LOnQVDwr0qZMii/aDsLG7QeDvPwM6a8V
ZD4o18oInQnYWMWcU//NEJFnJbqI54Zp53fOwuYdhyTUZYh5yN9r+VIFsHLWQNRq1gcr1u0wzsUW
MeTu0UVGfpF1W/bjmx5j/F1Txa45Y3sY8ylYuY2fJ43Zb8nqrcieOQ3K1v4Bd+69Lb2oa6gjnkrN
Og6DiioVG3QxwnDMCanXkYok+Su2wZET583DfCWBd0Ygo3hqGJ4IIoLoE+0TPjGshtAEZwL6L0Fy
ER5SyEY/miRqvfjE3bhGwD8s0oknxObivrmVFonHyXciGoSG6cY1h5S3VaFBK41oPpJLMgctTRuc
p+y6ngzCSz1lrkq4h7NjaPiE5j7R+Tx9GcVgrSVRVQyIyBbSdWsSUv2eJZP1P5O13hRvHK1YpEJJ
aFgc8XzSkJdk8l1TuyRMTz3ysJl/RttoGI2KHUGh11wgeeM8RnIJX9Lvr1ZUOifjWgsx0zHVNMQK
EipmL5THtzWMvCE7PjxliCwnJPlpBfGeoZEACZAACYQfAYbAhB97XjkYBBInjg938SgY3qcN6rTs
5y+vQ0wpuzpHPCIWTPoR9VoPEG+BnTavUDhvNmPjayshp4ZsbNi2D12+rgcd97HkB1ELbj/tm1Q2
1CU+be9P/NDjmtviu95jkTd3JvTr3BQLV/6L+16+Mc16vkzxD8QrZY4/8UOPz/5rHYb3/spILjp0
/Dx/4oeen7t4g3D6CsUK5ggTAUS9aDr1m4DJwzriQ0lEaprmUWnwtX3xQ9sXyZsVW3cd9SdEmOPo
69373tgvXhqF8mTzO5wqRWKkTJYI6zbv8zsW8I2KIzqPgvmy+AkgZpt7D7zRqvPIQDlVVKRq0GYg
Dm6YhBHCucoXPcwuxuunlUqgSsPu/sQPPTFFku/W/7SseH50wScidmkOEkubMHOZIYAUl/tCAcSS
DN+/KwJnxYtBf96F6eZSQ0/0JyjTUBnTVKAILdPQBfUKwVsNMkRD63pCwko9aZzxpgnRZEOxc0jX
rdVJ9OddmZYz1pAYZ0y9c+yZepYYVWYe2Gv59ryl19Hbo7bf1ZckuWYi3tksfWsbFM+QAAmQQBgR
oAASRqDtXebbGj7Qn+CYenQ4a58Ve4Lg9HP2OqHZXhNixo4VA9Wk3K1uPAMmtVSRot5XA7F85kAR
BloFLYBI/o8Dx84EOb2DR85BwzfySLjFjn3Hjbaa/yM4/bTzjr3Hce3mXavXVMFlwKhZWCFzL1Ek
j798IJeu3MTPv/4ZqN/jJ89w7fptxJBcFoNGzw10XpOPXrpyA+rJ8K5NPWa00ku9GmUxcvJCLF+9
HcdOX0TaVMnwRe1ymDmmC+b8tR5fdR1tcyqJEsRBRgkHGj8z6Oo9hyTnSWPxbtHvg4bHFMqT1Rjz
4LFzNsdWFifOXEIRC+HEbLxkzX+BxA/z3A3JIzJ+xlJ0bVsf8eLEwoOHb4WphSs3Y52VZLunL/r+
Pi5fsw2rRBQKaKfFM0YtmYh5NBJ4XwiYyUh1vRfEO4NGAu8DAU3i2lBK4Ko9EbFF8+3QSIAESIAE
wpcABZDw5S8bOODwBde6DbLnDBfTUBHdaJ+7cC2Q+GFOSL0pps9bbSQ3TSuJQi+KeGDN0qZOim2S
VyIo0/AatTSpkvgJIMHtp+O8fBU0ODO8JV+ODP4EkDMXrxv5LHSMgHZHvBee3Lhrs8zr7bveiCMb
d3tWumhuzBjT1Wqzdj1/M0oMWz355qDmYqn/SVnUbNrbKFdrttXQEC0pvGbTXvw1pY+IIpcwevJf
5ml/r2kkTEbt6k3bifSM89clEaQIYYnix8XNO/eNXDC+x2/ri03TErp6/wLaqxdB35d9h84Y37sP
smfAll1H/LofOX7e773lm/v3fR9F73+TnNbynL6/I6WW1eLEtX9fjIb8DwlEAAJa9eIrKRH7+YF0
kjfB/pN1yylryIBWnFHTkAR75Wst+/I9CbgygYqJvaDhQWrLJZGqVluikQAJkAAJhC8B19p5hy+r
d3L1u95RUbB9kncydmQbVD0eNK/E5h1vN6HW1rhp+yHjcCnZ1M8WrwNrduDIWclPkdbaKb9jmt9B
7eDRs37HgtvPb4Ag3jyR9aknSDR3x/9AemUnsPzV66A39+Z0ropnysyFa82P/l7PX7rh77O1D43q
lMd28XD5e4P1JKfqCbF2y140rVfBpgByTHKHPH/xwv59kfumnjQqfqgdeuPJkyNLmkDhRZZzzSH9
/tsTtOhl2d58/+TJU+Nt9OiO3ZdXZiY+c4AAr2ZFnACH+ZEEIiwBreAyLMdVo8LK+NyX0Eoq0KiQ
4YhpudLJUnFDy4CqzZIEkNwEOkKObSIDga8sKiQx/CUy3FGugQRIIDIQoAASGe7ie7SGXQdOIUvG
1EGuOEt636Swp875hhpYa7zr4HG0kLKq6lFia0OaN1cmKVX6CKfOXfUbIrj9dIAofoUQ/Ybz90YF
GZ3PLilvG9Z2WtaolW+CY+qNkS5NcixctTXI7nqNCqUKGmFFKnQENA1T0TCW/DmDThCnFWD2Hjzp
110rxeg9zJMzMzZIQlxrpslTtXTw7qlLAp8W5kFZDknkqqLG7gNvrxlUe54jgchG4I4ksmx3JBUm
vSkduqboGaP6x+a7nkEuNZ+UIVXxQxOCqmlljdHnKfgHCY0nIw0BrdSU/03p3uNSYndPEJVpIs2i
uRASIAEScAECjj3CcYGFcIrvBwHdhBaVkrCJE8axueCqHxfFXQkN0Y2xLdsl1VLixo6FTyt9aLVJ
gnie+KRiMezef8KfQBLcfnoRLeGrXgq2rPUX1Y1TO/f75hux1S6iHfd59AR7Dp1GwQ98c3HYml+l
MgUNLxFr4ofZR8WfUsXyIL0IKtZMywHnzJoOeh9M8/J+jOOSb6R+zbLQMClr1qhOJePwbitsP5d+
MWNYT8ro5hZNSiFXxtGTF6R08RNrQ/MYCbwXBNbcjoNOUvJU8xhoQtPZ+S5gXZEzaJ/hFsok9EY2
qXyiVUA0VKZbppvG+QUFzvuJH6ek+sWXEj6jVVpoJBBZCeSRijJfprqHXlmkul+utw9hfruYKLIu
mesiARIgAZcjwL9EXO6Wvd8T/kMqm1y+ehOLp/Y3klIRCNpcAAA8/0lEQVQGpNFANrPfNK2J2QvX
GAky9bx6VWhpVfUCMG3J6m1YLwksJw/viExvPEbMc9p+6ogfRGSJj26Dp5qHjdfg9tPOD6Syy+Th
PyCFVCwJaNUrFEOjuhUwc8G6QFVFAraNiJ+XSUnYssXz4KtGviKO5RyVZ49vGxieO4stvEQ0qaje
F01matpPY/+Qsr+P8Mf4Hkb1HfO4vur9m/NbN5y5cAVjJTGppXXsMwF5c2Q0yglbHtf3eo2B3Zrg
z6UbsdVK3pdYsWLi14Ht4OHuPzGjzrt/lybGvEfZyFsS8Fr8TAKRmcD8a/Hxye6MOP7Qw1hmlthP
0VEEkJn5LkK9QjYWO41xuS+jTbrbKJXQB1piVAWTYWeToKr0U08SGglEZgIfJniEgdmuoaXky9Hv
v9r6O7GxRPJ/0EiABEiABCIGAeuPSyPG3CLdLKLKPi92DN9/ECPb4qJGCZt1ad6H6lJadOPCEdi8
eKQIHeuxcdsBpE6ZGJXKFDZEhBnz16BT/0l+iKPLU/x/F41E7ZZ9seyf7cZx39KsA7F1ySj8+9co
LF39n+Sv2IlcWdPis2qlkUcSkdb/eqCRwNNvIHkT3H46xpGT5zFp9nJsWzYaoyYuknwUh41EnpXK
FkKbxjWwbc8xfN3NdpUUy3lEtPdDxy+Qii/J8Uv/tqghVXrmLF6Py1duIWe29OJlUxzlSubHlDmr
pKLKMr+pF8mf3ah6k/SD2n5lf69KgtM6rfpj3byh2L3qNyz8e4tUzzmBciXyoFblkojlGROVpQKQ
ZZlgHVCrsXzfdwJG9/8aueXeLZH7efnaTdSo8CFqiCfPfsn50qrTSL9rW76ZLGVrEyeMh02LRmD8
9GXS9gyyZU6Nz2uVQ5WPimDEpAXQ7xSNBEgAOC6eHBV3ZUKheI9QN8V9FJYwl+TiERLbzTffkKYl
uvfcDfu9YmLt7dj4RzxHXLEsLO81CYSEgP5FdM7HHYtvxsMYhn2FBCX7kgAJkECoE6AAEupIbQ9Y
KPNz3Jl73XYDnnGIwMmzV1CjcU/81L2l8YReO2lYxc59J9FDPDZGTFroL2zF1qD3HvigWqNe4jXQ
Es0aVEJzCXVQOy9lTJu0/xmLVlrPaRHcfjr2/GWb8ejxc3z1ZVX069wIMTzcjfwS85ZtQsc+46B5
MFzRVBhqI+KNlgj+rGop8aj41qjU4u3zWEKRTqNZx2GYtXCdQ0vTMKdazXpjSM+WRvlZs9OWnUfQ
ZeAkaC4RazbujbjS5Zt6GCr3VE3L5P65dBO6Sj9NomvLOvQZj/YtPkPLL6pJWd0shtfQQ5n74F/n
ou/wmba68TgJvLcEdj+IBf0xLaY87fZ0e4m7In7YyQNsduErCUQ6AlMuJ8Sym3HxQKq9MNwr0t1e
LogESCCSEIgSPW3lsHl0H0mABXcZ475+ENyuLtWvzdiwdfPUsIjUKZJKWMRVm6VgHQEYN3ZMyTuR
Anfue0G9EGwlRg04lqP9ti3/BQ8lV0XF+l38hvCM6YEM6VLgwqXrkS6/hObOSJU8MS5JuJK9qih+
QKy8SZY4AZInTSDeHLccDg2KGjUKtKRuHLmn56SEsOYosWaxPWPg7tFF6DdiJgaMnuPXJGmi+Igv
OWC0+o2WVaaRAAmQAAmQAAmQAAmQAAlEDgL0AAmj+xjWwkAYLSvcL3P3vjf0J6SmiTQPHntb7tbR
8YLbT8f3efwUh4+fd/RSLtVOPUIuXLZfPtfeom7cvgf9ccZUcAnJtTXMyiyx68x12ZYESIAESIAE
SIAESIAESCBiE3ibfTBiz5OzIwESIAESIAESIAESIAESIAESIAESIIFgE6AAEmx07EgCJEACJEAC
JEACJEACJEACJEACJOAqBBgC4yp3ivN0aQLnJLGqj89Tl15DZJv8awmVOXbqAm7f84psS+N6SIAE
SIAESIAESIAESIAErBBgElQrUHiIBEiABEiABEiABEiABEiABEiABEggchFgCEzkup9cDQmQAAmQ
AAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiABEiABEiABEiCByEWAAkjkup9cDQmQ
AAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiABEiABEiABEiCByEWAAkjkup9c
DQmQAAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiABEiABEiABEiCByEWAAkjk
up9cDQmQAAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiABEiABEiABEiCByEWA
Akjkup9cDQmQAAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiABEiABEiABEiCB
yEWAAkjkup9cDQmQAAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiABEiABEiAB
EiCByEWAAkjkup9cDQmQAAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiABEiAB
EiABEiCByEWAAkjkup9cDQmQAAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiABEiAB
EiABEiABEiCByEWAAkjkup9cDQmQAAmQAAmQAAmQAAmQAAmQAAmQgBUCFECsQOEhEiABEiABEiAB
EiABEiABEiABEiCByEXALXIth6vx9HiNrKlfIHOKF0ib5CXieb5GLPfXePEa8HkcBbe9ouLCzWg4
djk6zl2PRmAkQAIkQAIkQAIkQAIkQAIkQAIk8F4QoAASSW5zioSv8HmZRyiX9ylSJ36FuLFeIU6M
1/CI/hrRxM/ntQggL15GwaNnUeD9JArue0fFkUvRsPi/mFh/0B1ej+gMFEm+ClwGCZAACZAACZAA
CZAACZAACZCAFQJRoqetLFtjmqsSSBz3Fb6u7oPmFR4hoXh7RHd7jShRHFvNy1fA0+dRcPi8GwbO
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
--000000000000173f2406259b7f84--
--000000000000173f2506259b7f85
Content-Type: application/pdf; name="cambridge-campus-and-city-map.pdf"
Content-Disposition: attachment; 
	filename="cambridge-campus-and-city-map.pdf"
Content-Transfer-Encoding: base64
Content-ID: <f_m2t9uq430>
X-Attachment-Id: f_m2t9uq430

JVBERi0xLjQNJeLjz9MNCjg1IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDI3NDUxNC9PIDg3L0Ug
MTk3NjQzL04gMi9UIDI3MjY5OS9IIFsgMTI3NiAyOTNdPj4NZW5kb2JqDSAgICAgICAgICAgICAg
IA14cmVmDTg1IDQ5DTAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAwMTczNyAwMDAwMCBuDQowMDAw
MDAxODk1IDAwMDAwIG4NCjAwMDAwMDI0ODEgMDAwMDAgbg0KMDAwMDAwMjgyMyAwMDAwMCBuDQow
MDAwMDAzMDk3IDAwMDAwIG4NCjAwMDAwMDM1OTQgMDAwMDAgbg0KMDAwMDAwMzkyNiAwMDAwMCBu
DQowMDAwMDA0MDM5IDAwMDAwIG4NCjAwMDAwMTM2NzIgMDAwMDAgbg0KMDAwMDAxODczMiAwMDAw
MCBuDQowMDAwMDIzNjA0IDAwMDAwIG4NCjAwMDAwMzA0NjggMDAwMDAgbg0KMDAwMDAzNzQ3NiAw
MDAwMCBuDQowMDAwMDQzMzIzIDAwMDAwIG4NCjAwMDAwNDM0MzQgMDAwMDAgbg0KMDAwMDA0Mzkx
NiAwMDAwMCBuDQowMDAwMDQ0MzU5IDAwMDAwIG4NCjAwMDAwNDQ3NTYgMDAwMDAgbg0KMDAwMDA0
NTA4MSAwMDAwMCBuDQowMDAwMDQ1NDU4IDAwMDAwIG4NCjAwMDAwNDU3MTUgMDAwMDAgbg0KMDAw
MDA0ODk5NCAwMDAwMCBuDQowMDAwMDU3MTc4IDAwMDAwIG4NCjAwMDAwNjYwNjAgMDAwMDAgbg0K
MDAwMDA2ODU3MyAwMDAwMCBuDQowMDAwMDc5MDc0IDAwMDAwIG4NCjAwMDAwODA3MDIgMDAwMDAg
bg0KMDAwMDA4MDgyNiAwMDAwMCBuDQowMDAwMTMyNzE4IDAwMDAwIG4NCjAwMDAxMzI3NTcgMDAw
MDAgbg0KMDAwMDE4NDY0OSAwMDAwMCBuDQowMDAwMTg0Njg4IDAwMDAwIG4NCjAwMDAxOTIwNDEg
MDAwMDAgbg0KMDAwMDE5MjA4MCAwMDAwMCBuDQowMDAwMTkyMTU4IDAwMDAwIG4NCjAwMDAxOTI5
OTkgMDAwMDAgbg0KMDAwMDE5MzA3NyAwMDAwMCBuDQowMDAwMTkzOTE0IDAwMDAwIG4NCjAwMDAx
OTM5OTIgMDAwMDAgbg0KMDAwMDE5NDgzNCAwMDAwMCBuDQowMDAwMTk0OTEyIDAwMDAwIG4NCjAw
MDAxOTU3NTAgMDAwMDAgbg0KMDAwMDE5NTgyOCAwMDAwMCBuDQowMDAwMTk2NjY0IDAwMDAwIG4N
CjAwMDAxOTY3NDIgMDAwMDAgbg0KMDAwMDE5NzU4MSAwMDAwMCBuDQowMDAwMDAxNTY5IDAwMDAw
IG4NCjAwMDAwMDEyNzYgMDAwMDAgbg0KdHJhaWxlcg08PC9TaXplIDEzNC9Sb290IDg2IDAgUi9J
bmZvIDI1IDAgUi9JRFs8MUI3NDkxMzM1NEQ3NEYzMjk4OTBBMUE2RENBNUU1RkI+PDM3QTlDRUU4
RUVFMTRGRDc4QUY0NTg1MTNGODBEMTlGPl0vUHJldiAyNzI2OTAvWFJlZlN0bSAxNTY5Pj4Nc3Rh
cnR4cmVmDTANJSVFT0YNICAgICAgDTEzMyAwIG9iag08PC9DIDIyMi9GaWx0ZXIvRmxhdGVEZWNv
ZGUvSSAyNDQvTGVuZ3RoIDIwNi9TIDkzPj5zdHJlYW0NCmjeYmBgEGRgYHNiYGVg5N0BYsOBIFCM
jYGFgeMBw/cyIL+lAUmSwSC41+sPk9Brf0cx0dgEoBFpaWkdHQwMjILCIAZYBxAIMbAIzAPSukBs
CBZRZxBgUmbUZ3jNeIpRlcFLtUp4rtBDqZXSlmIbGDwYdzNOYUxjlGMMYrjFs0L+olI35yqNe2ym
DKGnehkYQFhmEsgMZiUglgNiZSCWB2JZIFZgEGesYkhivMG4FOFOMQYWsclAmpGBgeUyXFSSgUXt
G0SUURwgwACBBimCDWVuZHN0cmVhbQ1lbmRvYmoNMTMyIDAgb2JqDTw8L0RlY29kZVBhcm1zPDwv
Q29sdW1ucyAzL1ByZWRpY3RvciAxMj4+L0ZpbHRlci9GbGF0ZURlY29kZS9JbmRleFsyNiA1OV0v
TGVuZ3RoIDIwL1NpemUgODUvVHlwZS9YUmVmL1dbMSAxIDFdPj5zdHJlYW0NCmjeYmISY2BiYGAc
CRggwABoPADJDWVuZHN0cmVhbQ1lbmRvYmoNODYgMCBvYmoNPDwvTGFuZyhlbi1HQikvTWFya0lu
Zm88PC9NYXJrZWQgdHJ1ZT4+L01ldGFkYXRhIDI0IDAgUi9QYWdlcyAyMyAwIFIvU3RydWN0VHJl
ZVJvb3QgMjYgMCBSL1R5cGUvQ2F0YWxvZy9WaWV3ZXJQcmVmZXJlbmNlczw8L0RpcmVjdGlvbi9M
MlI+Pj4+DWVuZG9iag04NyAwIG9iag08PC9BcnRCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0v
QmxlZWRCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vQ29udGVudHNbOTMgMCBSIDk0IDAgUiA5
NSAwIFIgOTYgMCBSIDk3IDAgUiA5OCAwIFIgMTA2IDAgUiAxMDcgMCBSXS9Dcm9wQm94WzAuMCAw
LjAgNTk1LjI3NiA4NDEuODldL0dyb3VwIDEzMSAwIFIvTWVkaWFCb3hbMC4wIDAuMCA1OTUuMjc2
IDg0MS44OV0vUGFyZW50IDIzIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzAgOTIgMCBS
L0dTMSAxMTIgMCBSL0dTMiA5OSAwIFI+Pi9Gb250PDwvVDFfMCA4OCAwIFIvVDFfMSAxMDIgMCBS
L1RUMCA5MCAwIFIvVFQxIDEwMSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8
L01DMCAxMTQgMCBSL01DMSAxMTYgMCBSL01DMiAxMTggMCBSPj4vWE9iamVjdDw8L0ZtMCAxMjAg
MCBSL0ZtMSAxMjIgMCBSL0ZtMiAxMjQgMCBSL0ZtMyAxMjYgMCBSL0ZtNCAxMjggMCBSL0ZtNSAx
MzAgMCBSPj4+Pi9Sb3RhdGUgMC9TdHJ1Y3RQYXJlbnRzIDAvVHJpbUJveFswLjAgMC4wIDU5NS4y
NzYgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNODggMCBvYmoNPDwvQmFzZUZvbnQvSkhMVVJK
K1N0YWdTYW5zLUJvb2svRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0ZpcnN0Q2hhciAzMi9Gb250
RGVzY3JpcHRvciA5MSAwIFIvTGFzdENoYXIgMTE2L1N1YnR5cGUvVHlwZTEvVHlwZS9Gb250L1dp
ZHRoc1syMTYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTU2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDYxMyAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTE2IDAgMCA1NzIgMCAwIDAgMCAwIDAgMCAwIDAg
MCA1NjggMCAwIDAgNDQzIDMzMl0+Pg1lbmRvYmoNODkgMCBvYmoNPDwvQXNjZW50IDkyNy9DYXBI
ZWlnaHQgNzEwL0Rlc2NlbnQgLTIyNy9GbGFncyAzMi9Gb250QkJveFstMjA3IC0yMjcgMTMxMCA5
MjddL0ZvbnRGYW1pbHkoR1lIQ0JQK1JhbGV3YXktU2VtaUJvbGQpL0ZvbnRGaWxlMiAxMTAgMCBS
L0ZvbnROYW1lL0pITFVSSitSYWxld2F5LVNlbWlCb2xkL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250
V2VpZ2h0IDYwMC9JdGFsaWNBbmdsZSAwL1N0ZW1WIDEwOC9UeXBlL0ZvbnREZXNjcmlwdG9yL1hI
ZWlnaHQgNTIzPj4NZW5kb2JqDTkwIDAgb2JqDTw8L0Jhc2VGb250L0pITFVSSitSYWxld2F5LVNl
bWlCb2xkL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9GaXJzdENoYXIgMzIvRm9udERlc2NyaXB0
b3IgODkgMCBSL0xhc3RDaGFyIDE0Ni9TdWJ0eXBlL1RydWVUeXBlL1R5cGUvRm9udC9XaWR0aHNb
MjQ3IDAgMCAwIDAgMCAwIDAgMjk2IDI5NiAwIDAgMCAwIDAgMCA2MTQgMCA1NDkgMCAwIDU1MSAw
IDU0OCAwIDU4OSAwIDAgMCAwIDAgMCAwIDY3NSA2NzUgNjg0IDcxNiA2MDMgMCA3MTkgNzQzIDI3
MiAwIDAgNTg0IDg3MCA3NjcgNzUyIDYyMyAwIDY2MSA2MTEgNjE2IDc1MiA2NzggMTA1MSAwIDY1
NyAwIDAgMCAwIDAgMCAwIDU2NCA2MjggNTU5IDYzNyA1OTUgMzU2IDYyOSA1OTcgMjQyIDAgNTQ4
IDMwMSA5MjcgNTk3IDYwMiA2MjggMCAzNzQgNDk2IDM2NyA2MDkgNTQzIDgzMCAwIDU0NyA0OTMg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDIxOF0+Pg1lbmRv
YmoNOTEgMCBvYmoNPDwvQXNjZW50IDkxMy9DYXBIZWlnaHQgNzAwL0NoYXJTZXQoL0EvQy9EL0Uv
Ry9IL0kvSy9ML00vTi9PL1AvUi9TL1QvVS9XL1kvYS9kL2UvZi9nL2gvaS9sL24vby9wL3F1b3Rl
cmlnaHQvci9zL3NwYWNlL3QvdS95KS9EZXNjZW50IC0yMDEvRmxhZ3MgMzIvRm9udEJCb3hbLTE2
OSAtMjAxIDExMDEgOTEzXS9Gb250RmlsZTMgMTA5IDAgUi9Gb250TmFtZS9KSExVUkorU3RhZ1Nh
bnMtQm9vay9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udFdlaWdodCA0MDAvSXRhbGljQW5nbGUgMC9T
dGVtViAxMDQvVHlwZS9Gb250RGVzY3JpcHRvci9YSGVpZ2h0IDUyMz4+DWVuZG9iag05MiAwIG9i
ag08PC9BSVMgZmFsc2UvQk0vTm9ybWFsL0NBIDEuMC9PUCBmYWxzZS9PUE0gMS9TQSB0cnVlL1NN
YXNrL05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMS4wL29wIGZhbHNlPj4NZW5kb2JqDTkzIDAgb2Jq
DTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOTU2Mz4+c3RyZWFtDQpIiYyXTY8eVxGF9/0r
ehmQun2/P6Qoi8QJYoEUYCSWyBo7CTAGJYGR/O95zrk9847tBciS563q+1l1zqm6r77724//+eXd
/uWXr/7wze9f72H/6quvX3+zb6++f3hz/+7t96+/2/kSdjvDvv79Y3v1uz+H/cdft5/3aE/cU8xn
LXnupfAjtLTfv/eE91uKZ+51T/7/YUv1THU/0jyH7XLy58jpbEnmT9sP2x+3r++edjuH9ruLf9Uu
dz9s/QxhlP0IZw5h7tefyxtHOmMYOk47e8xtv3u/ffHtb+7+voWz1sS0/e7t9sWbyxPTvhy/yvHR
0n2//jwtPTnhbNlLpzq6l/73Z/PGfv15nlfOOcfwvNhC9Lz9/9ivnWWuaWGW6Wl/+nRa3Nf/ly+F
cLYR+BHrOWNb9//XZ5t9GrcUytliHZ7XS1u7vfmfh0xhnEn7a16dcQXlreZ9e7f9vOUBFrhLYVqs
e2VUGXNvKZydCP7ybvvL/s8XuHqBJ8IWlMDa0zl7aDc8hZPY7C3wvQGYOM/CCVojzOmyC/Y8J27b
mfCxTCv6zt6RdPR4ggeMMPwx1bx7aN17PrXfFrlc52M5U9qVBuLM/0QHg9tyr4lzMHSMM/T+7HjY
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
WjzqNBm+ep0m/5dO8xmVmBAz9JoLLv6XMk3sjorWOACKcyyXCkVwJbBdZllthLsVKOKRETIVc2f1
9UeAAQDa6gHfDWVuZHN0cmVhbQ1lbmRvYmoNOTggMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl
L0xlbmd0aCA1Nzc3Pj5zdHJlYW0NCkiJ5Jddjhy5EYTf5xR1gS7wL5PkMYw9wsALAx4/2C97fWdk
JKurWqOZlmQLixUETXd0FcnkT8aX/P3lby9a8p5b3m6z76q63fJeZG5iomz/+fvL7y//3vKW7F/e
tMheWhV7uewpNd1e//WCR/h7Y5M3a4FeZR+9Ptmr7mPO8UyvfZdnO837HIWh1tbzpdO0axv4kDLQ
TR6FH3mp15db3VudS7+93NqexqFNae5HT1QJzfi12kwyW1GqtC26aNaDBcb+Kawdh6e0doyNMkX7
FN2+vvzD1+M8XQSCyQzd+5D+MF0pDR8NC5L22TzyKXkpH7/1djy11Tva4XviK/bFfpMt3r73YR/8
+/oS48SP0SB5D49B9z3VXD4NWi9BP8Ss55hTPked8hE3vt4j13Pk18D1qcDHngQbOtOe2kPgmeck
7WMwjB4fupQfrqSHNjXlaOgi8SX7Zr/OvEWDUzdLeNwYijJFg/fjrrsMRbLblyxyjjvvtQ/7m7Nu
ZW+z+98a319fqic0VdvnjAb+9cuhWu+26Bgql70kW6uvJXXrw5Ia0+/70M6sHu9ndetzF8V5+LTX
kfaMdXum19H2MqU/06tN1w/XM72KbV95plO1XXk2VNvd2hiqNH1MGZX8jK31J2wNPb1ra+UDW2tb
9E9xsbV2tbX2YGvlHVvDfutsFp6am7f6hUHoxdXG2SDGg6n5ihhnjoZUYRD+1X6vJ2s7+ju6O5zN
ZIr330s0bGkaTT6Lu1/izg+B91Pgh7PpV5wtAu/bpcNL5P2pyPueU0c6JmN9ly+srV+srVysrSxr
k+OpeVibR0uqZW5tulnVLdqgST+7W7+6Ww93+1roZdfqR77uPff24G52DOFu/avu1k7ulqMFv6/B
fEHtf7YIbIjtn6fhpcCb4NE975rGafR9NIYu1Q+jjrEEPuDhIeeeLMC3uxzmAWyPDREH0/pma9P3
NuT4wfJr7LXm4wfvb6x+7gqDWOvQjOHt0AwwurLhOEg68hN96/bH9otNHvN5syX4DUuw8d/1AFh1
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
84xz9IHXdAPb2MPok0I026FGYsS9mLf2y4XrtYic+5NPK7WBym5PYzJ5DmDIH3TFiomEvqHaMSXZ
zrXaWCPNvl0odKRYdouBg1HAbZ3ClOMvHTrK1Hy6qcLspGSr1Z+GSFVa1LpVv27V/w6HKQiALXUt
8F6uHOP7ASzfAbDuANYFwHoFYH0GYPlREv+aud8nr2hDq+4sAPofdB/b5CArfthmO33M+coT+gqM
MEZIFAgaQIMZ301guSVwexeD40bhdEXhvFE4X1E4bxRuVxTuG4XTMwrXlcL1QxQWCGilUV7uQJDs
+zmcC6aXZMcPuL+qn9SD/ioY/3Af/iVTv89gDoJZic0Oz166Mziu6MmQuRjXV54wOBdQq7KTpM5J
KdUfacE/F4M/qwlnqGgzLz7v4GNdOAceBZ+LrE6tn4TivKM4LyjOVyjOfxeBf5nMH3TgDswDEimK
5wX6buQNOEVbnj/rvr18iQovniLH088n7lPz/BHeln+EtwKFa1aus/Yfo63W/KUqvg3g4pmWR+gd
8Py/jCCUKYwHS71wAbTUa0Tl1GuKlnpN0VKvCfH5dkC9rgAQYACrUaWUDWVuZHN0cmVhbQ1lbmRv
YmoNOTkgMCBvYmoNPDwvQUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgdHJ1ZS9PUE0gMS9T
QSB0cnVlL1NNYXNrL05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMS4wL29wIHRydWU+Pg1lbmRvYmoN
MTAwIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNDEyPj5zdHJlYW0NCkiJXJPd
boJAEIXveYq9bC8aFHZn24SYtNomXvQntX0AhNGS1IWseOHbdw/HtElJlI9wZuYDx3y5Xq1DN5r8
LfbNRkez60Ib9difYqNmq/suZPPCtF0zXq6m7+ZQD1meijfn46iHddj1WVWZ/D3dPI7xbK7u236r
11n+GluNXdibq8/l5trkm9MwfOtBw2hmZrEwre5So+d6eKkPavKp7GbdpvvdeL5JNX+Jj/Ogppiu
55Rp+laPQ91orMNes2qWjoWpntKxyDS0/+7bS9l213zVMasKhGezdEp8S74F35HvwEvyEvxETs2r
krUlass5eQ4uyAWYfUr0scxYZCwzFhlbkkuwJVuwIzuwJ3swe9qpJ90s3OyKvErs6Obg5jjLYZbj
LIdZjrMcZgndBG7CvCAvzAvywrxMeboJ3ETIAqanwFPoKfCUB/IDmM4CZ6GzwFkeyY9gvmfBe/Z8
Fo9n8XTzcPN083DzdPNw83TzcPN0SCcsw+VXx1qk7TW/O9ecYkzrNq34tGfYsC7o779g6AeTqvDJ
fgQYAF56zQYNZW5kc3RyZWFtDWVuZG9iag0xMDEgMCBvYmoNPDwvQmFzZUZvbnQvSkhMVVJKK1Jh
bGV3YXktUmVndWxhci9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRmlyc3RDaGFyIDMyL0ZvbnRE
ZXNjcmlwdG9yIDEwNSAwIFIvTGFzdENoYXIgMTIxL1N1YnR5cGUvVHJ1ZVR5cGUvVG9Vbmljb2Rl
IDEwMCAwIFIvVHlwZS9Gb250L1dpZHRoc1syNTUgMCAwIDAgMCAwIDAgMCAyNjkgMjY4IDAgMCAy
MjUgMCAwIDYwNCA2MTIgNDI4IDUyMSAwIDAgMCAwIDAgMCA1ODYgMCAwIDAgMCAwIDAgMCA2NzYg
NjY2IDY4NiA3MTUgNjA5IDAgNzE2IDAgMjQ4IDAgMCA1ODMgODc3IDAgMCA2MjIgMCA2NTMgNjA3
IDYxMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NDUgNjE3IDU0OSA2MjIgNTg3IDMzMCA2MTgg
MCAyMTggMCA1MzAgMjcyIDkxOSA1ODMgNTk1IDYxNyAwIDM1MSA0ODcgMzM1IDU5NCAwIDAgMCA1
NDJdPj4NZW5kb2JqDTEwMiAwIG9iag08PC9CYXNlRm9udC9KSExVUkorQVJVUmFpc29ubmUtRGVt
aUJvbGQvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0ZpcnN0Q2hhciAzMi9Gb250RGVzY3JpcHRv
ciAxMDMgMCBSL0xhc3RDaGFyIDEyMS9TdWJ0eXBlL1R5cGUxL1RvVW5pY29kZSAxMDQgMCBSL1R5
cGUvRm9udC9XaWR0aHNbMjQwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNzc2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MDYgNjA1IDU5MSA2MDUgNTg4IDAg
NTM2IDAgMjMwIDAgMCAwIDgwMiA1NTUgMCA2MDUgMCAzNTUgNDEzIDQxMSA1NTUgMCAwIDAgNTI0
XT4+DWVuZG9iag0xMDMgMCBvYmoNPDwvQXNjZW50IDk5Ny9DYXBIZWlnaHQgNzAwL0NoYXJTZXQo
L3NwYWNlL0MvYS9iL2MvZC9lL2cvaS9tL24vcC9yL3MvdC91L3kpL0Rlc2NlbnQgLTI2Mi9GbGFn
cyAzMi9Gb250QkJveFstNjk2IC0yNjIgMTI5NiA5OTddL0ZvbnRGYW1pbHkoQVJVIFJhaXNvbm5l
IERlbWlCb2xkKS9Gb250RmlsZTMgMTExIDAgUi9Gb250TmFtZS9KSExVUkorQVJVUmFpc29ubmUt
RGVtaUJvbGQvRm9udFN0cmV0Y2gvTm9ybWFsL0ZvbnRXZWlnaHQgNjAwL0l0YWxpY0FuZ2xlIDAv
U3RlbVYgMTA4L1R5cGUvRm9udERlc2NyaXB0b3IvWEhlaWdodCA1MDA+Pg1lbmRvYmoNMTA0IDAg
b2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzA3Pj5zdHJlYW0NCkiJXJHbasMwDIbv
/RS6XC9KDmtrCiYw2g5ysQPL9gCprXSBxTFOepG3n2SVDmZI9BlJ/nXIDvWx9v0M2XscbYMzdL13
EafxGi3CGS+9V0UJrrfz7Zb+dmiDyii5WaYZh9p3ozIGsg9yTnNc4OHJjWdcqewtOoy9v8DD16FZ
QdZcQ/jBAf0MOVQVOOzooZc2vLYDQpbS1rUjfz8va8r5i/hcAkKZ7oUUY0eHU2gtxtZfUJmcTgXm
mU6l0Lt//kJL2rmz321UpuTgPCejzOYxMRlldkViMsSlcMksMbsUsxHeMG+Ft8xaWDPvhffMR+Ej
80n4RKylBs01aNHSrKVFS7OWFi3NWlq0NGtpeZ8MN3vritum7cB9pvYaI40zrTDNkSfYe7xvOYwB
KIs/9SvAAOYwlNMNZW5kc3RyZWFtDWVuZG9iag0xMDUgMCBvYmoNPDwvQXNjZW50IDkzMy9DYXBI
ZWlnaHQgNzEwL0Rlc2NlbnQgLTIyMy9GbGFncyAzMi9Gb250QkJveFstMjE2IC0yMjMgMTMxMCA5
MzNdL0ZvbnRGYW1pbHkoUmFsZXdheSkvRm9udEZpbGUyIDEwOCAwIFIvRm9udE5hbWUvSkhMVVJK
K1JhbGV3YXktUmVndWxhci9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udFdlaWdodCA0MDAvSXRhbGlj
QW5nbGUgMC9TdGVtViA3Mi9UeXBlL0ZvbnREZXNjcmlwdG9yL1hIZWlnaHQgNTIxPj4NZW5kb2Jq
DTEwNiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMDg+PnN0cmVhbQ0KSIns
l9uO5LYRhu/7KXSZXIzMIoss8jZIYiCHC8ML5AEGtpN41kFiIIHfPn8VJTXZ3VIfpnsW6x0sdlol
kVSd69MT0ZiZhzyyo+Fl9zTJZQyRBpWchIHcSD5A1N84i89YPcpexm43ivAsu+kUN53+vHO4ftn9
ffft7hu71n8/7mKKI+eBRJf7AYeEUgYaffDDf77bfb+LEkYKZb9CRo7Srvj3QHYYDTHl0Tt9mnmM
Inl4/mjv+rijscCyJ1UOe3PCQTAPiv4Xj6REFTPx4MZito/QAqt9gOUefsjVYqaoMiX7yckeEn4C
HpFK0FeXhrHoO1R3e+q9SSml4Rd9KhRUDvWpOhY/zjH00UNC1rOSmJowFILgYHVPZntU9DVujGw6
JOjl4chiKuAHf0vWzT6r6tge1LiQ2Hz1C/z2DZzPY4btrfdz59pdijgcW3ELFiGoERkRxwQnY8Xf
hp+wxg0/4P/XOxr+h/APfx12X339LQ0//Iy7H/7y1R8/huH3/8LrvsFan2Atq6cK3on34ESf65Hp
iiO5OTJkuEPgwIgoRG6UzFecGOcTf/dB/QpnUYxTlgrcF4sJ02WCHYGRKj4wvIpYf/i4+00cPv7j
p59/++Gfuz8cHvJnxMC7pG8f/jQ0SZtUa2YZvC9jysiLJWlDGLOQ1Y1WTbMnIxoaJe8jEttTs2cU
9oP+xS5Vl5G7L7hNEhcpjQUJMy2qj2pxfl/tP7ZXnVxciDVwXotJDZbe4MCaZA6KVZP3GnuUMWuW
PgXHIzmUzqLyE2se58XOw3N+bM8JMganwXaazYWbY6rpT4vtT7O5T9XEvVztn1c+nfDA+QzwhMDr
eZZ3QZNNPVK2UqCxI6KZOCQrdsvosKJxR+0Ex2H3hDouXKZXUsyPsH5qzmPuHM8F785BeyPCVbRL
799N6Ii6UFuji9pHrNtOkv6wNsVJRjdM1nB10xOjLNSx08Xzrrtf905bJmE+bxLry2YV9J8OG+wX
tE9TjoVmWXtl0pihUcdFajQ02VnPm3YiiMkS0X5Vv/1dXS/z+knYq2difVOnxKLdszm8cTLqmguv
+nh2MXcu5gMXc+fiFQ/f5OBV/3bulc69cuBe6dz7tt7NoAvdRawjs+UDnfVZsQUXkbjO/kaIqJjn
3V6WYmmiewwkzL/1Qseyz3G5jy1p3rII9bxFVGKyTY2DCSO8ahZLmEQ9U5IF1uVFWtSrsjNemfYd
+lfv8iTp8jItr9fLUZNY31P3VA1mxTZSF63Jx9D51hkKKn45Da4j8y1p0x8d++parxJ582/wus4X
qd5RLdl8W6coWm/WXubHgEAz5qZmckA0QDQAJawKMsRRJ9azwV+EFBK4AGTncZ1I88vZfQk0ZXuB
lEWfeBmSqaYYRtP1846thVXpBZJXFjBJVUrYrr11vpZEtqdKyekT3WHMW4+yS0tnvMUEtSpxqAIu
varLogYmZ7cRY9tBeipHWxXsCXAS1xgruK42FfQz+CHpg5JJfeW10FOZFLB0NQdTUI7Hb7YcsuJ0
ZZ+Tx9WUOZVaTcIuHUR8Cngb7nouTeGWGu823LXw2KItU7QFirKI+UVLBBaQwm5UC1KMxroa+Gg1
D128JggGFp5IUkcHMu9ls1nRQ21GzJzhebXZCqEm5LrNzRA8yvJQy+OljmIzf+I3GJn2gs9UvxCq
yEGGeYdV5XTQVK/wB5tWKr5oC3VQVT8vVBIYJYuU4WllP60UiCiFrDbmWRTtBKN+R+DaghGV+lnj
aJrYpwtbtSAmGrUI3WtoigrVaWiiujBju6pC0de3p6RQ6RXvFckJQtAKztpsIWizs30OHzFzCasY
gsXYvu6K1VLU7iv2OVoF626FaBL1a3XMbn6qH6NWXZzs6y1Zcmi9W6ij9kF23kLtSzLrkpmlf8i6
b7B0tFag+WDZHy0dZDUdtJtoOwYdZ4dCbcd19npECFLD5q0zM9knWnAqSLZWLqVMgr3ZxoRKqmwi
fZbJksP6s4v5tDL4Iokx61RI+oWa3wHtAQgR1VDN6RUn35HQ7u3iz4PRYsHniDIAIZ/Rl+Sd0e7H
aE32om9Gfoe0XzukoZygW6rlVFL5EiCtGYRHWf4OaV8cpGFQi5A1PawL9EkpLaaioQiDYFeCpx7I
aDfxw5sR2i38cBYfUPdjTsGvuPeOdHZf596XzR7j2qS9SSdpxowK/gyX0SaYlW0w4xNg1ghHYFY7
Nr89meWGzHJPZvkaMlvyFs71Eg+n9MJl4RyXhTtxWbqBy+RXzmXXY9k+Iw9rCVNaG3fSsGtB3gvK
fEdl6XoqizdQmVxAZcvgO87wz4HJwoOZLLVM5lsmyz2TxU/BZOEaJkvnmSwiCUJCWxOkWYE1n5TI
RFEXtaDFaB57R7K7IllCpJBIK/59Z7LXMJkOI7RFjyQm7UwPhLJ4E5TF4c2hrDRQVnooK9dB2ZK5
Cf1RPjmUyTuUPRTKgsYvWDE5G7lfAJUtw+8wxd+p7MujsqT9CXNJMB6Lo0+JZVyAiBEOQsAQ+HIO
y+LlWEY0gQNRCw5El4JDPAkO4QDLwhVYFq/DsnghOoRh0e3IvxmJqnm84t8DLIsXY9mjvds59yIs
i1dh2T18W7SFoQmR13Kk8Aosyy2UhYnJpj6Qeb47U1c+y2PcOlaxhw6AjDoiK1tEJpcSWZ6W04Jx
C5Hl+T0NkdGw6LaetlTG6Pw1UBY6KIvtnM7rUFZWoYwvgrKwCmX8OiiTBsp8B2VyO5TlhsnyKpPJ
BUyW9kyWbmYyLpiBhEVaSS7nezBZWGeydAmTUcdktMJkcYPJZJPJ9pPvOMU3oUxaKPN3gTLqqYxu
xTLewDK+FMvCA7CMWyzjHsu4xzJexTLewDJ5NZZxEQQm6KTm0fl0kspKR2X+JihLDZSVk6qEWDTN
0a0I3w0p0Bko400o4xbKdALMFw02uNJiA29gA5/EBn8AZf4KKOProIwvBAc/LLod+ZcLIoxQrfj3
AMp4E8q4gbJHe7dz7kVQxldB2T18G9FyAsrFE0Z0xkfeJpT5sgFlWk0NlvkycZmhg7MBMt+f+asW
4Aqb1QaR43DAZgdo1pGZbJFZvpTMyrS8XndkVub3NGQ2g9lW5mJeihwO6i0u8x2XhXZWyzqX5VUu
CxdxmV/lMv86LosNl1HHZfF2LpPSgFnqwKw0YJYaMLuEzOLNZBaiVpEvVk4+gYZuIzNqw83raCaX
oJnv0CysoFnq0Ew6NMubaNbMv6Ms30Sz1KIZ3QXNejK7Fcz8BpiFS8HMPwDMQgtmoQez0INZWAWz
0IEZd2CWToOZvxzMQoQLLLUA6t7paD1BZtKRGVa/Fs1khRJJWVpHsKA4vPOvYrO4zWZ0Ah/iWXyg
N6Oz+e5VCEFnGYKzTvW46uOr+Cxu8tm9PXxfQnuYf9NYdDLAwfjWKZm2IS1sMlq+ntHyOqOF6xEt
vxGi5YsQrUletHztIyuI5s8hGt8J0dINiFYei2jpTogmHaLlFUQ7QWhkiBavQbQ1WuEscP5UTN53
8+kaRDtLaHI9oRnUKUhdQGhpsrlcQGjtGDzK8s8B0fyDES22iEYtokmPaPwpEM1fgmg0IZqcRzQu
8KBPCl2icUXr2mS0eAujWQTJkiNPjJZPA6NLYzZ/IyAobcdnGC1sMhpvM9oJgOANgAjDRDCPITSe
JhxPBDEJVwHEWX5A4iDj1aIVBx8AWtgENN4EtPu693V49ibODU5betDqjeiGkvkdzu4GZ23mokfm
eDisFzrr5vXd6KyFM74HnKEJPJbOqMEz6viMOkAjIzS6iND8EaH1iCa3IhqvzCetqeK81JoqjvoP
Hselht3Z/FnCHk9hGp3gtBOY9n/26143YRiIA/ireGwHCLHPXxJiIKCqUpn6BAyoW9T3n3rnBHQm
wSRKQoPEEslLIp3/d/eLq5lmAtP+y2l8FTbyPl+nqTPT1MRMM4FpsoVpLmaani3TZM00c59plAYc
cTSSweMV4CXfZ5qslKYDxWylNFcfuNJsQ2lppGEjKvpDXWAX4StxgKeRBkmk6d5I0wlFwLRI45vu
4gg5tiNAYRSwdW8V+AppkESa7ou0AeUdhrQHFdcvVyvCDYkCjDMvpI2GNJ5cu8wtfawdaXISpDmu
NPUUSmNIi4wWEW2Q0CKgmdGBhv0EweVB6D6HTkCDNqB185mNfDYZz3yaZ2wJNpI+X56dj4/yWf7M
Pst7+ExT9DztOk+dpzrwDJPIfGa4z0zkM9PFZ/tDIapH9v17LMV6nX0dyx/xdioXH9v37FB87oQU
m812VwjxJ8AAApxtgg1lbmRzdHJlYW0NZW5kb2JqDTEwNyAwIG9iag08PC9GaWx0ZXIvRmxhdGVE
ZWNvZGUvTGVuZ3RoIDgxMTM+PnN0cmVhbQ0KSInkV0lvXEcOvveveEf1Qc+1sDbAMOAd9kwwMCRg
Do4Pclt2NJHlxJaR5N/n+8h6m7yfchgI6i52FYvrR7J2z3b3Tndu4J8fft3denwShjcfdrdOTz1+
OH2982N0dTj9Y7h18tvZ1e3bt+4erj+eXZ6e/3l9+9HDR4+cc+3OnTvDvQf3h53vN7kh1Dw2aXHw
Po6xJlzxdnc07E//t3v4E04+PzrZ5+Ho+uOr86t9wmLYvzh9unt4atsqbIC0f59dvRmOzq+OH9/b
3/rp/pMHQxzu3FFhqjgUW4RGF8ZUWsbaz0KfH93dexmODhSjH+/evn336myP364v3l1t5P6uvkgt
jaHkoYofaxven+/+O1xxZ/T4bwlH1FWOrvodfjL3hRpGX4qAbzi81Zve7qCRCFYyZpeHMLoc+to+
Dzv7LqNPgx1uY/ARLPZ92B2vfz5eHT/eXnS8lnE8CebfYfd69+xrTpXJqZoPPx7qUmOh2dsg+xEh
QIxeIQiPL9+9PLvcRz8cDScfP1yfXVydvby4vLj+ax9gDH793gRIqwT4TOxLsKg/ufpwfXH98XoP
px2dDz8f7X2lnMcnT37eb2XdfX998frscE159+69+3N4HkoZQ2phSPBmy3Bqc2NMuCqn0deahxe3
/jNAub/efbye9Pla8mjiMIEQ2DF/IX3aWEJJQ5JRhJGfcsgNx5p2+Cww79jjnLcvmSiE3+P6MG9f
4gc/uvV5KISU6Hd1yimnresoLnbGqhkXUxima/R6JGAX00lyqx6dBrdp2WnXb3H99sPuF01G11Pz
Xzv4A+x/YP10+D90B226hFNO4JTFLZ9PEAAq4q6EUiBSFo9ARqi0xNfSRTqls0tGN6TsMRVvahB0
qaTTREpjxfA+Ge3Ek84hG3sVGB6x3y1KkkinJEb7XEm3yH0okxuLUzCKJRGU+AoShZnOB9m8krW1
ZRcYdoGkr+SFRKcXl0zFZHSsegGkVzKoVhnlTjehDciaq7LmVlUJ8UrGqFokaSqnJd0tTUxsUS2a
KgVHMCWAdLUHOrLwAtbBVBY6D2QWJR1CoaRam6ud9WZ8DLrJFFFPoYaaoB6YrlYNzehsdI6+B86b
t1yPDIUei61jympwsfQek1dnpVaMzhokVEYjS9Igt9qPs2YzyCl3uqpzo+/7zREXI8vfso9bNVKk
oTM1Kl21Am9RY+nqpWY56Ds/Q0yLXd/3hmHXPdMCi2SQnnKpsVRK5S5bbylRccLiscVES64MqeKi
UjeYcEADkrJ2VzvIQ5a4LgBmgiodMB5aI+1SDwPzD7mTO2sIZI3T4ZC5mybNAxzOkE0hDezJpcwR
BtUm5HAzIVU7GWoF6Vtc5CScmWClpCT1AZLfg0qqIjUUUNmSLiEFE0QWS0HhpaUZW42NVLVUdp5s
JSSlfCJfFsvrQLYU7GCslBYNsyJUJPhiVCXlLPuTo301+3kLrijS2ehjacYWM90UNdOZyByEfDU+
1kYiuKrKDe5B4NT7hASpamYXOAP41CBGMJQV5eFyKJTMCxVBWqiWmV0lt15HyopqWRO5qZ55dFG7
SVZY5TGKTlN0AQ+z8M6lkLNt7AWcifmt2SVvhtdPpu4fm7swkriI+oUZRRzq+3b4+o5Jqnx9kkLj
zV50nDp6cPHh7OXl+avht7P3v15cvVExX5+fUOf9EPEMYOqFFuE5IEQS6goS4Qfnp94Xx/r5zghX
JBTaiKkt1NWowKpTeIp1Dn2BRSdPBD+LzdckkYxRmyI5kPmRgbXvA3O5dMLY7LStp4vs22QowzR9
O60H3hTy2XeSHRc1FrnNhmLESimSxJd2bq/5m3JQN/CbSqG0GsHT0k/belGKlMlQBpM9qXT4pKCi
CrHQfcOXZe3LsvVl+ad8KWtfytaX8k/4MqOvkKOiOfq2aU7a32wmy73RdYKfySZJIzPrk3FAA50e
7fvA0t9Sp3i89uPT2m4yyoQYx+JNHQL7CBmNoixPD8Q10ZUyEsWzabcn001f8leZfsXx3I/berpp
oijEOFR41+jLedlQlZLfNvqkeYmm6CjReVXNC23mKHvoE3If2Z3OoOzbOoCESAUkNI1wcAxrrDaO
xsK+lFGIgpZ6dLrCDAlR2zg+6d2m7TFqw+EIiZaK2oeno2izjaHnDvtr50fBQacRrtlobH1Af2GG
GaUTLlxhFHWilObTvC5ZWYzIjhMMGTAyYJy1q2yteFIoSrH5N8u0xzHfdhR9aOdcJ+PxWQcQRSfM
wDoqHJIOJl4PtUy7XCZaGutoDlrHTIVoCaE+9lH67JI1MmzCrsmcjZ/CJ1XgX8DR6va946RZyF1r
65DLJuTFYu4t5quQi0Y894izBEmxiEMqTXB0jOgy0RqCDyNficpSdMQTBWRRQwlv2Fy1j1BXGi1e
jc7daE3HpDbnL9k8dbJPsjwaOC65KkIE99HfxsSZQJofdjPFljsxKB77PR2pcIUoSpK+oVAoHbTE
6GVzcIFBZSGrujkqVEACC1pP6kSWTIzDRVyLltOkr5eq4kWrPx8/SkYfppeRjdB8NQmJ2BgYiOOs
i1EreZOekWJRz5DAeIvxi3wgPA8mn4zP1TRjmKSO4GxFsKiJBjIoQcWM0HLbfOikPXAUUXoUrxut
C5JtNkwa86naJX2qOHvxMcVoXVGz+OG5HaLmYvTKMiFAc7eVLyKgwZ1MSG2RsmnGNfCKqNmFwAVr
I167X9Q0K1XbXWmlEyq51U7pbO2pQdWKbsWeM/iiy7dGyDoNb884RP7oABv58knzqLEdYDGzs2gM
p692z4/u/7WHZUeHy/N5An1x+vS7RlDfYBkrUuMLTmdR4BdV+jMj6DfGzMqqllEAifQbj01Gljne
H5AxKTSmF2NO7MYhZMss5znUNCNEqTIlnZCq+lxjJIM2lVCNrC4vu1GL1cQaRx1wpYPRxbBIRF9g
mZ30kd7Du7aocWKvGC6BeJaFWJYt0PqY7IzUeblVM0wWoZy29K1kGh3r62RRlxPi2hp8FSsvZix/
NnbzxbJvnlr41Y3L9ebkRbrFYNHOQtR1d7NNRGFcLP5lvoggqRZblk/OjbFHs4UwOwE/i1I5x5WW
c5C4kaiW89JLrM82oYaN1V1tNmpZ7eORa/udv3txlQRJ2ko+in2us3ao3SvNQdXZsiVgc7TnfW8l
ndyoXGG512bIWSxdUxat4JlJCad565osNs3ZOGV1sMQ1j6zQQYfNvObP+WZz9yzXYjFr5XqnC2GV
EbM5LHdpHeqbvRetLaMwfBbeOj4u8NauuYJ32sBbUfoFfMe2wbdvW3yHDb7Fr/Ed03wtQyVbgIct
wLf4Dgu+0w18hy2+N/BeA8hEbuAd0xbf4m/gO2zxDWM3+I7t6/i2+rACeNoCXOoW4KF+HuDpJsC9
3wA8t7YBeC2yArjjU2cF8JjyDYDLCqCIZm5bgJvZK4D7zX5D0LYAlxsAL1uAB78COCfkLcRlC/FQ
b0BcNhAn/wrk+jJagbxsQS4LFE3xDcj9BuSa2mFK/KbP0hXIZQ1y+nQF8r/Jr5bdOq4juOdXzJJ3
IfK8H4AgwLIlI46FwBGBLAQviBvqEfHhUFRs/b2ruvvMzCWvScpANsmGnLrn1adPd3W1k3ZxTnK+
xyrJS+/rJNfHnJM8l3Z/kncqbCS5i1D5O02FSPSgRrBeSP+qF+DxtDg5C7YWeds+ruepLHDbPu7D
nskiVyMbsNvlAw1Ac5PHbaWpquPyjqN9bEVIpTTIBSkK4TvHQpoR6ZxjQfdF/joOeh+WdEb2dZuc
e9+BmZNdqctoFD05ywLEytiqixr2XmzKIrU5Rywu1vf6YrA6do65iOOgwIP0tCKXoc4TBGk58kpc
gHjNIqVbILmhoElR1PGmaAo1hjpCOwGS5AUGFPIq9UEgOpAqGl1QaR5QRTpg8wKTvg8e3a1mAyPy
qEq7wSJbu5wMV3i8DLYlrjSM5WU9nowhENgQ5EW6lWU8H7XSl+NmlwDGRo/V5ndwycM66i5gN7bz
SDXgnvVyHY+VkQB29dY5GvV19OqrUTpmBRlQGYHUlsnzy+rOePcyDPOFXVjrw40xtiVMPBtACZus
sYu0kIbL6WHAxfUdzK512Q8cGRmUtElxlCAd+yGVqzRblmbYyUuXZe8ysLOCg/ki9Vwb65tqP1+T
/VCKyN+gcY8fMhqsnR9IAEYO+kOoUkEpI9VIPruqGDOaRJHjuIOTGu/68EkLyrHZcGXbg1hJw0e9
rI3WCcZz5uV+6weG18L5nh2ecKJRG38oO0brD7MVeGiVBbZlwf3XRzB028otc9uwYHYU42EoK/yy
uzIRKTOPOtIX6/gaZYHv54DHPLzFxRxn1BcjH7Mn+w7hoPm4ECx8ntYYtC30bNxnLgVT5oEZlwvn
gr9hEvXNiFOPhnKZr+dF4aO1PbR3Sdgx/p5MlkUuM1AvCIsUODYo4v3s8iLfuinv6lYZy/pjBNob
48tlg018u8DEsuv0Ica5s2uLOFuU0gVRZijm0BbinssuYF8GybPTkI0AJgzyPDaboLGzgjxxWPT+
wPSebnwxStqcPqPHbdE0pCrkWTAH0cR1FMeKXRflzSI8H6xldlzgji5onmSGKEng3b6rC6KoaddM
hqpbDGoYryBNcItxS9ZB6HpJEspYuRrjh2qg9HFV6TNzNWmXvArNaOO5i552ua7mgySb6W/HpOSx
1lcx/kRIhuE73T+aPTl5lY7mW58k8Wpad66Mw6FTnORpdEUdUXzawb7KfLprePjFq2+ng+PXv5xe
Tk+fHv94evluOjy7fPL9883xq2//8t3Up2fPnn+HOc9PxN98i48Hx9+/DtO7T7oQ677Z3nw+PT85
++3m6csXL186GPLs2bNJFnpb5qDtElsAkC/qVkKGnlwcHE6bk3+pFU4aDzed/PPgzeGrTZ0Or/jn
ZoNcPby63kBVHG75y5cNWOxwe342/XJ6/fHD5bvNzyc/HLw4sct8c33z4e3p9oYXev786rfpTQrI
YMod73BIRvymBDcIy6FA+IZ6+fPx3ybc/8vV55txZTUcK/TGjjdO0Wln57w0CAwPRDGKO/a4PoNP
UamladuZ0XdnQMngKdYzyu6ELlLxj7f4txiXe0Z1K1NLCKLOkX9Ml6ukSTFSFfPeEDsBYmrOGqeB
LmVIo9y3cOvfVmI8DagKts+TUES0ask2ihwX6SfCu49i46k6CntX2SGJGtfN9Xt7YLsqlGjFroqc
LXa25/YOO9DnPiFbPGsH83H3ojlovQ2SDz1JmvfsB5LjU11GvYiysVKR02nyOX5PUhfQsIwNFWwP
7DSFzhY42eO26Y0J3x40vd5rel2ZvjZ8NnvH6HqP0fVRRqMGZkkotACYtLbZHykNNWXLXtWQOqOt
cuEyCt2X+liowOmsrtWRvKpLvDS1tp8CsZuHKXS2YL/dkM5NUg+Zk3npxXDUo8p65H2VXjDI32Tf
2wOo0RoNocOSMs4V+j0Oe4hQwYNGLz/t51QVLye/Tl9HrmQ0V/vMO+kWu745PNl41IPDqw/nZxv8
v/n0aNpsSGEHLUc+6QlyBrwTHfJgD2nex0z7CHWXrQrFUuuiONcVvnkt1F2poRmThDUsRTKFTRsE
sA8SUSQFQ1uWUIfWZ4wC1XnhAE7eWiFQstIrSPjOS1/HOJLi7GIxoPmDGFXopkGJus0+1sJ8plqn
QOUOqyxKIhTP+Ynuz7oBVBogiivSbugDSYaHeUxr0lhnSDfUmVm6LpEFe0yKuB9KNVIq75gE9g1e
TUIyujq6HqIqJnmkiyHxRnRhNRr7amHsY0OdSX6ivjlfkJJcbHtANG8nKj2v3klCzCrhQE76vVUd
1OaRIirZltTYbG+ZV2MWK/q0AmX6zxibPTDwfJsW0uqiPYaVGxAjyyCzu80LDc1+MAy3em8SuXV1
rDxkLklvGleoRTtGMDK0mxwUjN7O6jvFIELTxeEgQ1uNMX5i6xzGGgO6ISYp1PPOF5gaK0aoArwQ
8KO50N/iwq9nvZkzEK/Z3SY95nsbkvLvG59x/qeb08/XlJGnlxvgm+l42p5uoDSmw7eiMc8ew4sZ
uVEam58M6gUnJDigSUEoX02LR9KgMJSl08I19vIjFrmA3qAiiqOPt4RCF21fqwRKDV7/xYG20uf6
MA8zRLDhej6MSmnsZUjlg363o6Q9ruGOViJMYxvZnufpMQYlMmmHYU2eZbqzXZztPmjSasX01wMy
XZp+xfcP0/+hO5x0q+8PXsMpi1vWHYmXFZX9JMOHy8Dx4KC5mUhwj40/qUjcup7w2F4iQTj2OtUG
9kTRm90N2ZWEUzy8hsVac/A0IE7ctUsD0byKYZFuTTguxKRlt5iI9cKwvsg/1hWmr5SXxKodjnK1
pqQXUY0+ymhQ8i2lTF84Wr3gqKMz39IebhKFcUuVkIhBan9V+op6apFCibRMCmEYZF+TdRnOwd+u
ZbaRerE8ki5jSeKsLxLAP0mvWDF9fhmq/MXvD7JjGOSxVyd+rTzEXSNYHaSV2cDuEiU1QRpE+fri
6uMHWHN6DT4kL56dPloqZrxZL0nCpaOMFzinlb2U+JAaROxU2SDHsgo3VkuvRWrUYqmsAzuJqBly
9oLuSjA9BWbHBLNvn3LrkN0zdo7YPeHBt433vi3qCYz5E9UQkrON2+Rbb3z444e3EP2ED9S2hvug
U2q+QPWmxo4IrgBxVHRZX/+SCaHA1E0F1wKD/JeechwTC4nqbsT82be8jx89SY0ykflfcP11aHUQ
CbIq1qPudltNqihyC9Y0IZIcVdGRshSB5zrorw58TtxKXGZTxPl5K4POKhu/8WBNpaDiBgbAAt2m
izSyMxSoiIQJCsVTtK+bitL1zvbdV6ipKu8W6v95R/xRiV77ACnZEfsJBa7F3eY2aMPBbNOjVKHH
0exWGe7FWgLnpKImXwwHrbAgdZnftaWIY33NWuFMbNBklsVivZYXmF2UXNBSWotK/CIdW490nhdx
/yTJZ2EmjpGACiwTaygCq66LmZOxd5UyKs0dJmUZDCUILF52SjYatIOstWky8sQjBg1RYc+VkIaa
qaELV+hSyIoso6QAMdELLNkLlAZF6ZE3kxaNMOtFnWxVknmhKyuJjeQLZyeZS4PaFZ2N5yJn+ZDt
ybw2TiHpE/kgUiSXqDi4ppdu1uVl0TPB2fxUpSlMfjRygku2xq5EwbFYBLCnpVjK3XCXbKk5rMax
69ivBMGUT7q/6rc2xlMQ2ZuT7Rc0ItXvjLiStUm1gG3SunhzTg5kRPUkWVE8frfwMkywkCq+4yHX
CUF6juN4QEQ2nTdg52iJ5nuP4xAwzlwPbUrYx0s5lDIQ9u/UV01vHNcRvO+vmOMuYJHv+wMwfBCl
GAkiwLb2FgQGtVorBEhaoeT/n6rqN7OzayWSfDCQCzk9O/OmX7/q6qo5hOYEnsYYCDRvWmCcKqk/
5DSHfDbWsv41L+9mDo0Syuk76aqm0WTeM2y52IBh0HUaTDBNGR7PotQqIp/swVwVZcNoTRbZlOqO
7xmY0axYIoy2TFpe5ae8ZB49WoDVieqqKOq3ZM+RHrC7uPqFmdlbjJyztgo45Ti2QiTzLGqwJ52q
y05jhi3xJHK0neXCJylD1GA4PXBUHQRBA7RELVAXx1Zt12Ud8btutCmZpC0RdhI0JKjf7jcZJyXj
kZqFJakpvJgkij6H0GfoOLG/XK6l/ynX3B+QapBTrZhacT1dajUykjc9vn1x9+H2zf3x7XQP/fZZ
+YZlAxjfNy6bpPvR5zgmVAaw+YR6+yp98ymh3tnycQpgZEjG9Xh3M71Vq73EXI3NZkelGc0+ma0a
85ptRsqhL/PIGV2DQ8xNg911NmxHE+PhppXqFY0cTh9AaYCUH6txZc3mKw8tWLSEZWKJOCmEX84m
NiVMx06GhPnUXtk/AHZgLvjWaa/ooYoEsijcpiwSxME+0JIW6IasGUTgkjjJDl0venwR7klk/PpL
wJhXYPyjbpD5Y6p4aKAULtGHOrHRzA2+2uVpe3v3OB0fefXxaVcRPx4YHD+cG8O/3L377enItC3T
Mmd6/cP97eH49vun2/f/ujtM+DlYTnrv3xu4DjiWqWarYPcSDQ0aopWvwCLMrXeYBLWA2jweXHsA
0pTTlI/CFIeeBcAkDg+QsrDy3Wm80QHBhPfs/wF0lQFJizgOynjcrueVLLKP2BtuIA6JAYiUcwVp
gUrB28B5AyQoYdLkg+hbk63M0ZLb/CvaW/qUaYxg2YWFy1apxNK8ngUHyiXTgVF87rsJChJ/NCHO
6lm2VIsaQvXKZN8qQj7FGR1zX3N0Oe69wwE7zACwOyYKBvraBATT4+x6ZUj5wqMPI8Ce8hUIav4N
PtLVWdSOSHrfLpsEkMl9apzLWJq4rG+AUyi5mqQGSCkk6b1Ae2HRYaNZ4pdfsQb6Bl+klnNkICpa
egE8YUqMs/AimlNxy9VlpTplIWgDHIUjWpkllKfzWNGbKk/DZHXmXVgcKTqqoFEseQZnCrFL4/wu
9hmzQoJlXuDyBqGdVzE0QtTHfZOpKE04i1fyab/bCrm+dnWjazWcabymnpDPsmq6skT4lxcXJjOT
zN9lIcL78VVeHDZn9/lGHW+M63m1Edqn5gROY2AFVtSht57/TxL/ccWfBcQCkDacMAYO5uFXjfJG
dRo+f2D1bN/1Yt/1Tz8wbDTQqzVXaGT9Wd5e7iS7ahaGMtSldAoySnTYjBAAp3iSfygyPHR9cVyT
Dzu6zyL0hKewwKiEhvO80Tv7D62dpPGRPRimAQm0FaDHyLIO88LFkuuLlYF6CmFEaHIkEGR8bcNV
AwUNaaqhQ1o0CaRKUoVjIn+C/jqnTiEz+aoxwIkVaTcZs9wUOAokiErz41GvihdftJCPPA4xnYdU
IceBcboiV4ueDd3ikDm7as6KYqLECpygIzpQfte+xNDmNJAYFh00PEdYn3S3OcVcn0VGRtgviAgc
a4FvTU8uYZXkD15RNauSnDow92DOxYmyXOFWqLjpFep8zd0JmozM+wEaTpoxcIYz7qOclbd5rByZ
ggtE7HxteJqjEHiOqbD76HdwOJFdmEsVY5JZKYsDwAPQPCw3IODTTL2Kq1LnqGqDqRMjxxnlaS/H
kKIg4AFae5agV5Pjrqquu8YUcmZ52HdRVM5lkUUECC+S0mDN3ZLyifjTpKVwx4fkZHleghnu1FIG
Tlhx5N26Ptz0u8XkCtCT1pifgBZ14w0iDRp7iYPmGtYsVCqeDrTrq5iq446q4716kNiiAjfP0JZY
4ijohfFAgSXQ694HlpNeVJieZUdTPTOtzbSUgY3Wp4uqsPo0vByQkCZR0j8AAipD00khZWzLS27R
oenlni30vo461SW2XcNjrZ4AgeWiupAMwAmVCyGM2QqLvbFxQ0ea0aAkHQig8qzPk2TaNFFVZxfR
WdQa2Jo3nMXklTYqK6RAlqDS99psc3ZHRQJaWuqKi6W3XhSfqcImWhm8+UBBm9joFlMDDsvHXVAL
cm3KXVcM2FJjvEFw4MDs2L2zNnB2jCXZsdVkKAhOFep62uykVJ/oyWJWzNv5L09A6/msuDhv8Bro
0gTTD5JQ6OTKPRTiZmxlvU9NFmpLYjaa4XPJuJHMhB+z1VlyrqgGKGiyaepFm6ggVSrJy+tZmlmW
oCYj1ThKlJp9qSdrfp0+myWI4cTmFiov3T/9bmC23jrPep5VQV3/sAFIa04jvJ9D9KJkNY9BszR6
WR1wUAbNBIzJiPMhgLzom0tXsDdpHvUFgB1NFb9k15wcCf8tIqw9hx2ENDUCVspxDO8eOVdEeoCl
p48prI61KFDsw4nHOLJEH6BNoAz1Eg8BNLhuJl1YShyRNYjXmXE2s+BIhiMu9yVYVISFVB1ZFq6w
4UxwOOsoItYcYiQm2aJyTzkaMl2hHy3SQTyDvIpaszdLMojiR+Rk+ORqwQbiiEzUxLjcQCKi4IYT
ljHJdF0WHegK1FnjV6zvaMBgMQclJpKOFIdNmi43SHZWLUFPwDPjIJZJpljIUsEmTTT678W4EpzK
Pok0FTZCMLvJCDEupE1z9Sxi5z5Py8ypA0C6gfuJJDXbFpqj8xuWRIrNTpyzWizWutkorzBz09H8
FEI3A8tpU0n4pVwio3n6HRQiVJErXRUnviiIHlLCYAxx1zj0KxPXo15ijk6OVF8K7QbeNF7vIJ8m
uqT1isJ/DpKsLchDJsnkEHnyUSJFwLRLA6FFgEcXnGMcfbpu4UsFXfA4+r0hxegB8kVAO4ohujx8
MwwMr/9KzbsZ3V6S094Y11KKvHo2L6Shv17j2WkpfmT+bXlDi5zap3CwUqmGOSTxqfGz45alQzAS
khFXa3JmZABWsHfzFL1KdGsyBGlOhjFIJcauwxbpUi9wC8QBPufHjoIEZK4Sl8XCkFh4V5L1fhiB
M3jwCqOS0IlVbieVpXC8FuBizCMkcYQ23pmDQUehzZ8Qcdf56wCsoKbMWDVn1Ma877l8yfOe+Ebr
Y7fkhhbnSmiY9BJOhWKnaDKOOnINeg4rM5uXcnUcAVOqZT6ds5Mz4L18dTNtrl+/v32cvv32+u+3
j++m7fHx2ffPd9evbv76YoJu+O675y/w0I+b5/v/bl2v9/5nFHLa/7IJom9ixa58BPFEVLG2RB9V
p/3D5h/bm12btrcPb57u3r7bYextj9NhFxzvvf/tw+6f+79tXu4/n1+b80N21/v9yIHTkkNWPTWu
feycIphhRXSeLY+XO8+Pfvg4/bQDt21/vX37zXQzEjtON8+x5A/7L86nr/Jxo6dVpsAyuQlHg4OY
cgMMA7AD7eahTpTK6+P7XZ22H3co7/b48Ob4tIO12E7B+X6WwPQfAQYA8eg+WQ1lbmRzdHJlYW0N
ZW5kb2JqDTEwOCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDg3OTcvTGVuZ3Ro
MSAxNTUwNj4+c3RyZWFtDQpIibRWa2wcVxU+987uxs84jh9tPWG4s+N1HO/s2nnYsRuTmB2vXceF
rh8RM4mA2fiRIMWtSQ1KkKhSCWiyqUQIpZGQkMpDSFGjcschVSJCm5KSljxKaIEgSFivnfwpLxXU
qjTYw7mza8dOnKAi2NXeM/ecc88933nNju3+whAUwz6QIPFIX/0ayH6u4s8eGEmOvnBQmwIgrQDS
oYEvjrGs2HcRl9eHR3eMZPf+ZwCKK3bs2js8+R31CsDyowCV+3cOJQd9p9ZxgFWrUalpJzKy+qt2
4FK9c2RsT25/EKCgetdjA8n366fHANb+CG2WjyT3jGblzWdxYY8mR4Zs2P8l3KNP9OroY4+PuScB
fd7wspCP7h7K6W9I43IcJHKZHAI/6p6mKeQ8naXkGp75ALmFfkkiJADSc0DdBLBtOfQwunf349AG
7GZAOuZWIvZj8DZCPyJkNJ+eE7dhxNAUrgRpEfikryD9GUYyADGohhD0Qh88gZyfw58JJUUkSBpI
I+kiCfIE+To5TC6SP5F3KVBKZbqeWujba/QX9JpUIpVKz0hHpdPSGZ/sa/B91vcNn6MUKyElrmxT
BpQR5avKN5VTyk+VS8oN5R/KP5nEylkVU1iQ1bAG9iBrZ6NsLzvAvst+wH7IjrJj7JRaplaqTA2q
NWpU7Vc/E6TBQLAkuDxYEawKKsFw8KGgHRwKnX/v7E3fzYDreghDUIMY+uE5OAvn4C9EIsVEI6tJ
E9lMejwMr5K3yTvkA0qolMNwDjH8bgEG8K3wrfYd8nGlSKlW2pWtynZll7JPOaycVE4r55Xryt+V
9xllZex+toIxD0OLh2GM7UMM318UQ5+6LYehFDE8MIdh0MMAAoM75V53b7gncMX6cc+5r+F6wcXa
dS+6l9w33Jfc0+5B91H3c+6QO+zumDnv1s1sBZj5Cf4+NWNOvzN9bfrC9Ou4q5oJTb87fWXqy1M7
prqmGqfqp1ZOVUzlT96YnJq8MvnK5IlJJ3M08+3MkcyzmW9lDmcOZJ5Mn8s8nOnKGBk9E87UZWoz
NZmqiVcmXp54ceLExPjE8xNPTTyZ/mP6D+m30m+mL6cvpc+nX0p/L30wvf9qdUE48LfAX73KuvV5
cd76Ktzrw3O/W58X7qn///w8BQcgBRfgIrwBv4TL8Ct4E96C38BvsT+nYQZcBPk1uALn4ddwEC7B
fqLQbvow/QT9JE3QHhqiNXQlraWraB0N0witpw10NV1D19JHaC9dRxtpH43SfqrTLR/Krzh+W6FV
9DLNx4oIi06nF9ybdLn7nhv0+n4TflughVbTanHE06imK92b7r88+Xwbv/es6HNWrnt2vD1E8KuD
Tja5XOyRPj+fL9WRI2IvhcmzgnLQGYctZtxirJsv7enmgb6tJl8n81rLHmapLSanoeSpPMiDgQFt
u6yqHCwOhtY+jiVj2LEIJzpn9nCEU50NMn4mwX01W8drSYERH4jzQNxUuRSyereZqqbKKZPxRAJZ
bZbMeLN4arYs5mS1k4O8Flm5HeMNQt4gNM8kTIbepJKMFyRMGzlMyArEU5N4arJl27IsmZOwZWkc
EuaQZUW4pDO04wsl0TO/kTC5X4vxgBZDHBYndoT7dA39YoOOf3uMCYnwWM56IFbut+MDXKpTUWiw
FEvhBU6DP4Qge0w7ISd7LVOzVIvxtj4TZbKAlrs/wv06X2KEx4FmIxXArRbTMOBaLMnp9mFOBtAL
7q+L8CU6E64WGgMnfbCdCQu8zbaEit3uuZqnjy8pBCMeq1PnYp+vL8xFQdYKCaMLBuK2WTylJUVe
vHiBLGLKmYxOznqJ2dGS7dkrCu9ynFfjKZBvQZt/qEj3AI0XFkiYbFlTrTo1wot1h9I4H0y2R/hS
HRUZ40XGZnEcH7SYxYvFrhd3xbiL8BI0s8wLCcMIDOC9fKlhs5TN+FIMWoQv07v7Tcc32G5V8+Ih
bU+El+rdPWZ3X5Ypq8gv8/jLdQdKjC2mU1JicJKM8ZKwqFms5JhTJJZiXDipxExIoYTpiOAh2lgK
8yuurVM1PDb7LGfl4gi2guBYiKQT/e9E7sJU3SWBDkCZhtEyOGwcJ4R4uSrTwQEa7zd5iRZjcV6I
xVegYcHFmI3XnygtJbAUYrGU7SwPhPmBsBzEMJUjtrJwhFfoDhG0EuMs6H26Iwl6v+74BH1Ad/yC
VulOQFBZd5YIukJ38gT9iO7kC7pK12bjzgM2RlhjUU4+LRokwuvmCSvnhJ/PCsPzhDVzwt1ZoaID
Lw7/F/g+ivgU9IshPkFVxCdoEPEJqiE+QasRn6AhxCdoDeITdCXiE7QW8Qmq66zVK9OIjteW2szA
3NqGl0psPV3UalTnkTCPYBfWYwN0srtkUUs2a2Ii3lNDFugb5lJLKnl9neMnFXETB5kAuHp+ZO4U
r9FZo+fvWtQj8Tsvwe5c9HLBh8ofey+c9o1as7OGVAhw6zAA6PHiDmNXJJsjvFGP3tca4U3/SRUr
eADV12NOoDLEoqxTdD7GsiuV6tQ6cVSY+IrAyYrjoImQinIMaTOOqEq+DNV8ODVDnhrPN8JDqajG
WGsK7bUsVGHRrC3uQw5qMm6LodHWYx6n+P9TPk5rpCorJgZpHs5kzdPWOrCFjdv70RbDLPveoIY9
qHHJSA6imBpJGZ9tMchuP5NEt3C8ax2YTA1v6EB8SLxb0N4il2jZkenDKYFJ8GNl+e+wihYFopDn
BK6J7Ki8dRfm/sHZOOA/U+6vycVBa8UQbZgT8TxP3qF1iktF9lrnwifA5CIM/WaUteIrV3ifYzLh
12wKAiHcdc1/u2eTt1hZ5zKlidr+2DxPjNlU2eIvwO2QZ9O7EQdFVESxgy8zzISMr0zWakWdKCnH
Bt20QNorJxZI2xY9e68TH9d5c/heF8Z03hJOoW+ivhDUXVUxoVEexROGB1nU5mxORFlq2CxR7LOs
1XacO/gKmVX8EEXc+b+qW4FCjKhWDafQvApRrZyPcZytzeHZOHTgriWsarlI5JDMge5E0BXZBse/
F9jLZVG+Dvv5obvwu9AcKS/jjfi8Wefrkfyb62qLbeM6ovfe5ZKiJctePkVRXHG5fIoPk1yRlESR
WomkKEuyLcWWIlkPWrZk2ZVT5dG6StrEcZw27k+DFmgK9CNFUAT9SB9uXLTIp1FAHy3Qj6IFGgQN
jAYIiqIomrYICgeiOnOXVIwa8O7Z1bl35s6cmVnOYNxqEGD/JMzSdqRmEyjhezMAzyTehWYF4CwA
iuBc4l3K38wB4G/mkVMD8ARyEJxHDoILyEGwkLgPXW8c0CIgytGTifvUeLcEyHi3jDyK6CLyOFpB
HkeryONoDW1WAKyjTQQNtIngEtpEsIGcSQCXkYPgCnIQbCIHwRb3awLQVe4Xom3uF6Jr3C9E17lf
iL7A/UK0w/1CdIP7hegpiPHIUQK/yJ/ulQHuGnAM4NMYdP6kw9MzMEZbnGcNiJznOIe2OF+CxcWj
Xb/Mn/iKmwbEFV8xINL3YJ8W4XkDIuEFAyLhq8AdPdrva/yJ0180INJfMiDSb8HKFuFlAyLhtgGR
8ApwS0f73eFPnP6qAZH+dQMi/RuwskV4zYBIuGtAJHwzcd9qYu2P1Yn4vY6te0Jwbq89h5OQKf/h
I1ZivyVZMqBHsj1ugRE6jb/LGkQQqjOEMdqARNXobDol97kcAZPVGafhsBowOx0yc8uC09HN1ECk
IAtaNp8bTLFISsgNlpmWdbnpf+VNfX3RnZ7Rhlf0QLi6PvT2nmrPjU/HFhre/Fxu6MKIL1RdHarv
Jtl4YKBe8sdkV2eXnNTTmam0e3vYEfSeKJWVpNLTdbxvoBjPnNG88QiIiCQOPyB/Zx8RiZjvnxBp
Om4HowV3NzjkclvC4YQrrPkGHcmwp1rUxs7Qi9qVjY2MR17avJ4++95F7/oDws//AXkIu9hxFwF3
cZgtkbLADwJnejirZ32nFJsnnHTmfFrIRS9eerDuTa6uLEbS1zeXZE9mY+MK7jR3+DPyHXKZmMnE
L0RQ9Gn4mTm3pNsEyuCn7C4EkaxBYEtk1qtL+JK9+ti7Zb0TgJmYJclkdcXdBTWnOS2LknvCM3+h
0biAFrywj872iUA8uotBqYzOGIsxX0SQBEwNVSnTm9Ez9E9s/2AE2IwUDj9lSbYAZ4wQn94LOzGw
vw0JJg1YOkVmo9Fo0GTtiVOeyxQz8iczC0RBDXQzTLWWLTOWDFdW8/nVSrh9r3nTlWiskvbCPRaF
Ow1N7M4nk/O7E3BPpeCeXxpT1bGlPNwDgbElPEkKLm+wIrGRjJ4SqWACzZkE0x04BqMC2zaLcDyy
fnQ6G7GpklOSLFZPPORUcprULag5cKigSfSN5k++1RE5lbW7C5kAmyyXy/THXX09Jyd6A7LYFLhW
4PI+q5E4qtzpYFzk0J0YJdsgcWHNRAWhJKCpOInLsZRodcc11JOhBIwBqgJjgnq3gMoUZ6JLHc/7
xnIBSckoymCkz5I0BwrTqdRUtjeYG+3xl9L9dDNQq471nfAFk7I95LPZe33WjNnv93gSw/2x0UR/
Z7c6MOgvgy8keHiV9UNUAiRPynrRS0WT3QbeMShIMzWJxLRNRCIwUQCnKWVPtqqT0XNBNZVQ88F8
OBQNWiCR9lYCjeIMRwouF+avYDZjeguPpRSPF4xUV3ND65DV2sbI5DO+hHNlKDE12EfdO1VteSL8
WbiiybIGf69mfT6tQuv4Nja7W7vx1s7gZDmqlQbOPTddnAyNL/3Nl0V1AA/uoYrmw5N1weV7oEUL
OUbietRKTZAAEa6MmthViProjAB6LtHZjo6OYx3HJEk6aUY9alSNKBYVskNzRRqZXm0+WJmhf3z9
2yjuDz+kTtpovoXqX8YaAws20g/ZzunZk5RxVYHWTWzLTEWRrhFeMiD7VtHB52XCHw8pKSXIlYXB
UiSFx81scbm4/PFFmVGpHSyV7frzU7Hmz+liaHTAnU+X6pM2Jdnb/Ce1ek+pjubN//Qm/Tapf8Dz
q2gl42X7fm1cyS+7bJdzvZmQu/lvVyhDHzYfuYKner1p1QlCHIAu/Dr7DdRnVA/JPmuHCfI7je0B
C5S3Yd6Qa8JsLBrhpWpvtVhLSni8QrEBYooHkosvzTVe8xekzNCoT79cCcTqG8PyWDErjUjl2YXY
6ReWMvSafmtzbLEWUNPy8cEL1/PFG+czJ5SMKkdLAy59+w7mDiP7JkS2i3hIRA+CKzx8PJAUCoen
jRCXwy4Bp1MRoQtp0pH4KIZM5dFb/mTh1kI8vfziWdodrG2Ov/POxFZVZftDl26fnr+zptFNfeds
/OCXyXM7EBO0mwe7neSUnoAMm0TBtIWKN9KIGW3nEa6dpFPCf60OISmt/yzfVOkfms/Slebb5TLb
Lx+SYvMTwmP+GfsuTL4oKeiDNomJLMC1Mg01ZhJEwxbOviqXTMMM/aJGZiXJHo1EFYvVGw+ZH++V
OHM+z0S+kIMOLqns4pXbU88vZzNLe/XBxUpGyqtP14uNSjA2tTFc2tXefL947any1dvV+itXiu7Y
cCA4Uc6e3xkevTGfHi7fzDd/SIxYkB+0Oz8PPmvH/ajzQ8yl5Umsi9YKNgwrRNKv9xnpgo6xBn0f
xj0uE4lojBpcpziXJ+n3Ye1e2VgrOHjGU3rcCq0RynQamyW0zZdwh9EZEQVq2O8iXTbJZsNyVSSY
PhIkm1JNYr9rHsSaB5NTUKTuOqs3S/TXB++x/WYv/Rh9NJT1BNjphskGXQFOQmEwbRGTqaUwse2t
1yOdAFp3VDFzj5W2ulTp87pUl2k4dWbIL+dnUh9/1K8FHe5Izvdnth8Zm4sl5svh5iNa9SaLfqWY
8LTtb4N9ichE09NdRx0DmtIWackLlCa0zyr3OWzAlqReyL/7MT8sdlX4P1cS4Eq/OzYS/Om5H/3+
r21v/mJ4E6kPRyzNf1Azdyk14vcXEziXJfBonvdJr94Dw4kIa6A9njtwALsin9IqxFjNKWz+YPIA
vgjuHuyxu3yCKIef0n8xGwmTIbKur8Cko+w4tdBUkJksMiVmE449i4lattstpT6D8W6IHfCVMjVj
pWZz+wE+CyKUZNORoeiQ0u/r63HZTnZaSZiGj/2P8GqLceMqw+ecscce23uxPeO7x54Z2+Prer1j
j9de79q7O2Nv7E3SbhKizaXeuLlBlShIpJQHLk9IPLUSby2Clpt4qFAQUhFSUWkRL4X0AdSXCJAK
SCAh8YBUqFDi8J+xd+OkkbBk2cdzfPRfvvN938/xheAR9APBWpX6QYeqw0IQeE1gqeaoLKvCPdD1
Wu3IL36QbpcjyeYzy9m95Akze7oQujIc3Qp7uUgck9SNcm0/yHHysczOOb+05AoX12S5mQ/Oz5XN
Z5Niybh56R+xFhMJ5sor1azECdyZuflWJZRP+Gj2A/A5m+Qe4lEO3exw6ZSTsdnsuD+4EwIjFoeM
NwbQ1mnaDkzzxuwk1WhHeuI5rfl0E736O9SjBQMCWEZRyAVyHpeDtdsQj3knVMMO+QoAfK+uHzKf
eggG6h0EkcH9jWvxdUMZbdbPrkuZrfNGoafFoxUzl9CXUh6bUmm4NipXyL3xe7XNpeOXtProWKGl
rA2yud01RQCx+G60LPPQPxXytEOX01QtYtEn1KJ3pBY7VC3Sj6vFLEc9Ugs1Yx40+zdjW4GTy1lT
i4tVUw1X8iK77c43zHTjoKtiFuLJbzeEbClZ3y0VTzSk+XDSx8fKir8wGNH6ZyGuOtQ/ipbRNydF
n5Ol8JyNYf0YfEs/Oru2k/7+ZJM4qTzLWnTbGzjthBKuzXHYmtwTG9CjxwMn1YGjvfudcDyGUTYT
W44vB3ifd2EeIBvFUc5q0iPIQqumOK3VKE6hFrVHSool/cJWOtU+W926GjdCC1wolfhcPtxYUWyu
TGU1mjcqEbHac5X6l2r15/sFs4I3HnwFoJkIaFqrxSvl6BvRcopPre1m87sNmVZHtVy4D9xdCXU6
62IcjB3uO7AdVMdOKOvNZjeFnKJgpJSUUk4NB/1eSEXGsvOxVCjYeIdEp69JP/2TNBy42Bh2VdU8
WG0MjQwebzFSdTsTXsnL3Jqn2Oy+ykiWo9MSjAsauFq/dKxQ6B/ozkUm36vG50OKsBiH5uJ83lyJ
xVa6OaoroCX4BfJXFESNju4Gr+7BmBpUhiFD6FIXOBt2WLagDbeHZddZKhJBFPT600CRTi4CvAnS
WKvqR4BkBUGD23N5Z2evl2gKwnxOWF555RX8e33+4IZvoeL29LuL+rhkYUwCj+xDKdRAX+3MF/Ly
nM3OhkMEaBsuegTgJFtAoQLZm6LDQaWb8px1LTYZgFQGgm3PYu7pGwFPmTRGlXK6kWnEowHewlMK
p57EE2j941b7qbCK6fubKaWzr2+PlPWcebF67qacT1xdgy6I4vWM2Cwn7e7Mcj1WNJfDYq3rKPUP
NP35fnFbu/HgY/3UaqyjSytlIdfOX1tpNgLppdAbsWWZT7d2VcCZZLEglPtluIUMqEixk4PpiiEX
JxcIofZgatiA1pDNYQMOswwEOzUQDEydA8MwCPfgP+TFy5eh4/A3wsF5bjo7uRzEcu2UbTYGVg1t
DJkxYT6vn85OEuOw6BBrDj9+55e3DAOnj3/4R+y+/j0guEUsfji+C2efePhf7IWzF5DSSTqBwDgY
Zui4gzYsv0IhZZLdtLLIwKF+qHGAWqsga13cE0Yy7hbnPP46X9bJvQffikusve501ZbRJG5mz2LJ
vQ4nhvwumDnwFCICnTbsQwdL7HbIgEwyiHbCiK7pQ3ZIwds7erbfcYPZ8CuCsujkYgVJ8VYtJnV4
J99Y+kUTdAvUEw1g9oxmQ6yVZM5Yba5d4I2N5PX21knu2NeK62lwSuc/E8jWpfF7WLl4em97/C7h
Xmxt91tfT66d0qZ1xxB/EJlvLbjIo+B98JUZ0om1PaAewYo8gOgSntiGAN/e4YP9nyleCNkOrvix
kCeRQpAEG/WG2NKyHIT3xW6hlVqk8UBkSSuiRjfZPK0d8lcR4vFPphTq/qd8BSWCcCy+wiglR0Jw
RfwYcPAkT80TZmbqpLHgXOM5M6Oaz62uDk1QoeG/Rc0E0qqKVIJUoyq6Cv2RXh/1i8X+qK6P+gXs
KQ4aSamxWywcb0hS87il/AVQft9TlD9iKb/dTobUuLZnBZ1WaxNPlb/9KWcwu+f/KP9sQZ+m/Ge2
riSM9eTVln5uKy23z/bypqUfuUijotg86bLu2tbG75A/XamslwajKqQLjQDlz+82ZUEpR16PLSv8
BBP4JPGgOZTpKE7QD4T7c5jswIU5THBiFf1e/8QqsjPADOKT5lXB6MRHq047vkt22uO3CffllkEp
G8XBO/4KalhBlc5SPGZjAGH4iNgtPzTTZikRCTlZVMEVu2UGp7yn07zVJab2ab8RFBmBZz9Z/0I+
UTxfbQ94dU0tbRWERK2XbY1EKX6qFF1S+PlkRVnZ1SI3XdnMUiqllQPxgJdzB2K5hNpSeTWZFUV3
KB0WIv4FpyeUXJJ2TkP0YWASk/wcvAdMi1HMYit0OkLQsceGp2xvOSSY4hQ6Kwopa4qbWKCaJUqa
JURWJnVsskExIwSyom9nx3jpJZIOxYtsmHG5nJ5wJoxv63fu6ONvx6N+G61fF+5HlHCgkLcntsYd
mYMJEpwOoc6HrmzT1dT38IylkjQ4dGA/MqKJyc/Ulk9/nVyxwx37HTglaHkbzgFAjOGYY9KDmuVq
qOhM7Y2sZCx/888zp4wvic2K6jFCngUmJMq3XZ+/hVfG937CZ6oS3hmfjLUITkZb69s0lwVQWRfk
wiO1k3I76WTG0zGwTyahAbVOBVLzCRUKtOBE9eqM5vdr2OJn9bPOBYdP4MPBv3Tf/enm+F9urejy
zb2OsUvu6IQb6/j9BwfxAh0rrTkWpark5eFC62MUZf4Ov6APrnH36efv7v3N+RCU3y4yP4AlBzee
vuh89ObDAMyybXiatYvWOTMv8o3Hlg/hfR9dwClkkh+hNHkBZQDbSfI+yqJXH2bJa6iMfo1MPIeK
2IOSeBNt4O+gKvoIPYN/iDbRL9AmuYCi5DKq4zfREtSnSAJwhoyCREIKOY+qJIhk8ixaAQ1Lobfh
P3dRF99HEn4LGfBZx39AMmOiMvk+8pBX0T75McqT38DnJXgfh/dvYf1nmEw/Qfv4o/+xX/axWV9V
HP/e+/s9z9N20BVYGyildMCgrxstgQ3k5aHUQvuUbnSw9WUqD21h3QolDDYwcUL2Agrsn80Zl5kY
ZRrj/qCSETOnMrZoNFmMojIqkr0IiKlhbpoQFq2fe/trKQ+oWaL/8bs5zzn33HPvPfecc8+5j3Lt
E/BWqi3YDITQFxnfAv4L+CB4gybYj3S3/Y7GhwWsuZN39X7l2R2ajl1b7V2Eh0WfqaowQ+hzRtXo
eqvtUcrepjmsVWpTmsNtKbIPQa8kxwwA7w7tJxekTJ6ag68iC9/ei7yb16NSUn/KnNc0c7em2BbV
23xNCqp0s7mkm20xeJD9A83Xed0HrmHvWm//j9Vhq9HlI2w1RfOxwzT9Wfeby7rDNGhJkNRc833N
tUtUZuvVYBdpuecd0AKTwzontMo8yQPsac30Z+lVi23nTY1vzFQVoO8M8zp+WaJlwUJVButVhb3L
zW/xi7N5BJy33OPnkY142LwmeH3onP0e50xHPomAsenAOsAAt9hf4ccRf2SA+bmSnnZ+GQvOLx3M
mYMNnQ+uA8EhsPNL6mrAJ3neLwOq18DQh+AY5y4f9UsmTNEKj51vxgK+QYeUx+7cbl9nh0JVePpb
2OED3elpF5tOlzFY3ySWItrb0NEufl0cYROPnc1SkQ3/E3ax3nN9rBe00NPv+fhP2UH8tFK5ujR0
hvP/EjwI/gO+KJR7m14iHgZ4m3Bv7Cnuzg+JT+4PMk848PeIePbAfSJOaiPcfBVeBG5WHjkix/uX
vTOxXTn0D1uit+0/o77ztbP1GGzqsSd0uEflYQ487qq7MxFuGO2Tf9w9GsXrwX8a00+ji7tj3HOP
95BL1qjQx5Pz53/DfxvGLje4++ljsDjCLkdwT6/B77Jvropjy9QWHgXaVBqWkn/moPNf1RyehXZQ
euXsseorsqN+jOLL3Skf1yP2cfFWT/7NjL2M+MDHF/DdaXw62fn4GjsP2/CuUVtmnn3EhiO2S5Gv
yCN2L/n6Y1XZVuashj8Sv+9l+DnTR9E6I7bMxKP2u+Yc5I+BMXEyot9YXzhM6Q2eo2q5nPcUufpN
JfVjwNWfxUqaO4H7oZ8nX7+gMnS7j1yzPCzX7WY9/fVaZn6h2Wa3JptH0eVZ8nSnCs0z8J7lDG5s
OvlxL/lzr2aOyj03Ru4r+IH3PTVuGnFYHaR0W/hZlQX4x5wib8/XqnC7r1ML7Ekt9XbsUEXQoTuC
TeTbdvLt5+hv0KxgDX5dQF3ZqIQ9gl0mUGunqs42DV3y+fon+PSIqkwlf/sO0z+he81xau5x6Msq
Jv8XUU+K8EWRPaOioBqooM4u0lpfY8dTY89pbbBEBXY6tXIS/JepHZPoV3KGA9h8IXdlBfwmTQxn
K998V/nBk5ro/VEDv0zj8Ukl9C06qzXmIrxSYrMDXi9rFGOPv8P7utaab+A/A/0lxqiB9rTKg634
82H62ZzP1f/NyC3mjbAKPVw9/TS4kRo9nXl7gH2q1GW1AwXmfeUG5xQP86iJbyLzANjB74FBYIvy
7VGwu0cHwS+qiZhqD/p5em1Vuz0LXMTGpxjrg3Z5Os06bt5Z9HZvgd8w1olPDqkjeAP6HeUF88Cr
gddUHPwavBNbz/D3r93Dj1gjAT/hZcr9G+k4vJu4K06vLyvOuRbSb+Z91GSXa6KP9w803nyNe9II
r4E/CX8EFyJ7CFwLuNifB34YoG6YAfR0cf9taPduWMicd9jvgpqCGDJLGf8ivLegp7HueeiL6DpS
FxsU4BM3NsfdT51WE5DQ+0MHgmLFgxKvh/V6sLbfaxqYcxEHTfjX2lnIX/t9ZrTt1ku+/c63D82n
zCPmp2ObnZfRuuwbwYRgdfAF2gnaoGthTrjUt8dpPwvP/7sW2xgbiM+Ov5KYnGhNXEhcyJpAW5a1
Oeut7PzszuyT2SdzYjldOS/dNPLV3Wg32o12o/1vG/9yRJ17PMqOlqq1RPuhXhxfEOXIbG1zUnyB
HG+YDqELIjoOVcmoCbMZfoh/gMO0UaV5OaKtcs3bER3APxfRITV1YkTHoZc2rmpa19JY0ZLu7X4s
vauqpXvTjt70tk/C1Qr1aat2oXePNulBbVeJStWpMnCN5qoaKFHVaG8e2pdotdJIbvdUpxq0Rd2s
4H53+fmbo/Eka/doJ/xePQK9DSqtLt3OrD6kyvxq98DbgEQfdAPcrfR7aWmvlVuv5xpuEm3dLj1w
rl6tBborOo9bsV472HWLPu/n9zCW9ms+6LVyuyaR3ngdqSvrlugxeNuZ49bv5izuvI/y2+V36GOm
s0YzszbDLdEM5NxK3cxMY5UZatQqavE6+I2qyBit8qtuQofh813d+yQz/1+ywXCAD71CHFzvSx0u
amntN+aZtldlspSlzq39StQelVbOmxlTueskx7WHzeGirPL45EQsK2Ktt2ttXbwmvDXmWeNqXys4
NulY7rGcY/Fkfywb1oTao0n3uU6guv5ZZt+a1sPJfa39QVdd/2zXezVrN7ciua9zbasTaeNLjnsg
vCdcnFUZL0zExpX/wAw9dTg82G9VdyTWFVdd3b8EGABaRzFXDWVuZHN0cmVhbQ1lbmRvYmoNMTA5
IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjQyNy9TdWJ0eXBlL1R5cGUxQz4+
c3RyZWFtDQpIiXxVaVQUVxqt6qKq1ENK6U61Dq1dPS5EBNQoRjFBRJQoCgKtLCoeEZAGFJCtA+iR
jNOMjmLMcYueE0FHRWV1AzQ6EpVkEJVFo43SiIojLhFaTL7CryHzgJm/c96POm+57953v/te0ZSd
gqJpWvRbuGR5sJ+LPi0yVh+ZmOo2LykpoX9CkjW0LNrJo+1F9MSID08+TGBhwnDQO5SNHrZQSSlo
2tPPJyk5MyUu1pCmmxjlrPMxpMSlpsVFJur0UQZjZEpalqtu2tSpMyfrvNev1w2sS9WlxKTGpGTE
RE+e4qtflpkco5uqi45ZR1E0adQQihpLUeMV1EQF5cpS0xlqFkXNpqh5FLWApfwpaqmC0jPUCopy
IuophuKoGZSRqqEZeiL9NV1K19A9CqViqSJH0ch8xKxgrjGP7UbZrbP7jrVnU9g69g8ulTvDveY5
3o/fzXcOcR+ye8iNodxQD51gsxfkrVdghpF+cpcpk7eKlr3nKlsdryYejY9PTd+QtmfLwa+13/3l
wPZsx6zMTQm5WuFSQQaEPYJa4HcYlaflX1Tm0+p27iaEsbCPu4Vh7LtiDrN6prA4hMPs3imsqgOK
5MtiHteFtSyu4YQCk0WubKUrgJE/LmXgd5PY1Vh84Qep1cCvjQozTNOgOLcD/GF+Wweomi9uTCiW
LrRxJaHhRz7RoB9qUY0ZaAQHFCFAEh7ssMhFrbQZKGgFO8ashnAOMmEEKCAXtuHwbjRKuIoDytYn
ykXtPHg88MZlGOI1Fz0kIXaHBXIeQeLj/g0IWF5iwTbIgS2PcAskwi+Pbd6c0GB6CGsfQP5j+hzw
hIVi4INJfGs+UvSTBD9juhcMxUX85sTYHH8Njpr/AoIg6MlDGNlckb6+VDr7nDu5LPT7TzUYjn/C
EbgJN8NHOBzCJaGdeNlkgWrjgPw6oBnwV0MT1GET0D2BSGM11kE1Ur2BvIDmgoyeQCP9EBQMBKnJ
tKJ/+Nzg6KB8sksW1wk0xOMLtosUYpssQjLkscXTebyOXSx0IcULwcSzvkGMbFJb8JbcN8gBmwsy
5HoQafNzecPAjs/l+m84WGGrZ+s5WCXXs7ts9UAR8okc+tsK2e3kIxey6MIJTwm2BiQSC3MHvHip
qjKrOziVWa7J4+GxrYbt7Al0sx0ggBr5AIsOnACCqUW+1EJctZMnA8NAj0mEOeAEDpANWegESpyD
XuiESszCbHBCB/CSWuxwmPtTCICAp/+GYTD02VQMwIDp7jhUEr4ifh59CAWDcdhGjBqw5OhLDma9
vg0u4DKpFmdIJIRAzRJfct0XY9zcIiLHSW4klQRb9Qi2t9LNBLKVYOX16rfEQhcoYe+duvCv144w
xrUWp2gxqjeQLKl6yx3Yv2PnPglHgVl8zb34p8F92so4V4lY4WNqlStalSfPJL2CvE6VGXLJyVzb
m2A0KL88j+POSp8dCTl8z/FWRXn77QpjYpm2vI07Ebk0f6YGR7vPRwHZ2nAYHis9S2na4u7oFbJu
qlbV4R5yqiRBiplOTDVcrU19qxHSieV9Fhqy+qPzQi33QYTFtscDImx9vGAxPemhjPQ9Eof7bxiw
PhKdfctAkuQgpG0BPPq+nwEe4N32BHy1csAkWxCPYwJi3LQCXNwBLqjuz5WyqKdWlQzhauA5GCkf
Y/M4+Nh2jO3vepBLXjyZV5Wjg+1ifxDGyBdZFw61gz0H0hsfzwk5gwEFU/+9saqhjIdIWcmWuvP4
BTayf+dwLjSyEw0cxNtEFot5wcvUuCYDttfB+GZlcSdseKfaJH+qPicTTn5+FY6YGZSeFqH1KuL/
UfzD4VpNQ1myv+TL742N371ag8M+C9VJqssTGpa/arx05MJZrWrTqm8P5pzTqC7j4jpRv/bErZtX
jjeWFf3NdFJCho/bYNi4TCMYTfdXZsjLLeBpVJa/g0NWwrlIfafHnqsx7YvS6jGVK45bU+CjGYuM
D0YSBvTr8AT67vWSijLCEbhrz5aj/RzeDeL8kEswDtzulTf8WJaddErCw/ya6LXJQRphkckMXnfA
tZEueQ+7uxh5C+SK3+z8/qAjzJ3dQp620ePH4ec4q30CuP96o/D4GW1TPL8xISJ9ocZZfwlG5Erg
CEni3cpoZPMk3MUBs7/6fL1GwEKShNC7QN+nW61Mvhwq3rSFWuXQ3+/qznM/njhYpa2s477NStsd
q5mhj5wkrV7CCxn4xYP396HXsvV/R26Rd8r54iouaXNGkklSvSkxrDzqq0EFKrwxDH1/XfBbw7WT
Z8slPT8zKN510fLDx+O08XO4lMo7Xz3XgNOrmzBcwpxGcW7IedDB+HtlDdWl2RuKiFA+1rA6cblG
2EhkBrcRk+k7VthkZcCzx1786a97o7X63kCrrOWOVVSfuKG5cjLTT8I/rPJIHriAU/Pm+MRFhWkF
fE/g+cZmGKb8GezRzkr+LXPUchB/O/dAlDbYls+puq7KzWJR4fGi4qQTCQlJyfEJhRuLJAF/G0xh
/TsGvNQ99vxAVYN7A7n/SiIeDChSVZGY54uLbfnW/rdLy/8/Qaqqa9tz9qdohFSTWVaZ6ZJuqOpm
oJxc9rFAdcJs+BypbhxLGtVf19lAfQJjJbPd9KCboARlTf2z9htfkudNGbxkmkQK8ucM8Lgv85ZB
NYe6VW/gzi6RXGC7BoiAZc63nT1DYqOjJVXL9QHixb3eVjBwqjeJpZWZtzU5crBYV7cOnXHSAoNP
6LpDp9f/R/Lf57KvWr9rxT5gGskF+tT3UVv5ApDpwie+3/jhK9o/r6tbXnjGfXbhE72tjb310l6R
ackZ8sIrTkAsAIfDiR9C7CvW7Ft5CWiIZtvNH3w3GTc+++7zmvl7apvod9lTp9+9D934m32OvOX0
vLlbpLavWnTuyMaq8iVya26yzc+Im+Mo/ZvdKVRD61jK1xr5B3VLKuKlItMLnbziFy8qlsuyYStZ
t7fkIdDsGa3Xfwhehqfg39fYNPenPVm3YsKEeXJnY9jDS2Yfkv9+6jvH5d8c35VUfysBE3F5y+1w
UJoAhVclKPb6rohGZ80+J/+DWfWPFLviicy7F86v2LBfTrgiom9q82Lp0z/mq7IJ7/ijwl6UGFYU
BsyTwFD/6VjOuOxHLjOw2DMTfcz2feZPVdblwCpT/g8zqIDS/MHMqp3P9j3iT6rzb3NWvtaJP+ZP
/m47ke23zUR2uQWurgGM/3k4b3N94v40iYf3e5jIjyeiAAEGACz+JNMNZW5kc3RyZWFtDWVuZG9i
ag0xMTAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMDQxNS9MZW5ndGgxIDE3
NzUyPj5zdHJlYW0NCkiJbFZbbBvHFZ2ZXZKi3sv3m7tccpdvibtcrimJFC2RlkzJllhLlqWYtGWJ
kotatvxsaqRO/PgKgqAoUhhJUbQoiiI/RYsEQfPRIk0CyIVTJEhRoDBaFEVaoEU//JM+0Eeo3iGp
OEVKgjPYmcs7d8459969duV6Ew2g5xCDFhdOjCio/Ul8D4azGzvru+89Jv0IRZIIMV/buHGN7+wn
WRh+vrW7vdN9/gVCA/btC1/Zqn4c0WDhtwgFx8431zfZdw7dRCj/R1jLnYeFjv2YD4bw+Z1rT3ef
Swj1hi9c2lj/zcJHdxDiXQgZbDvrT+929subMPAX13eaR87VvotQ9CcIkT/tXrp6bf9NBDGX79H9
3SvNA3sa/+sII8/+P8k0eQ9paLSU0jBivJggD8aEqYIFcwYxTHkOEYLPIIwreF7NCEGXI8ya7Qmc
ZsSQ0W4LEGeAsdsGiRiSZD3AqEpOy6aJnGa0bJGoisOJ/9orqQV+ZtqenErmViaE2EwjV7tfUAcy
h+djU7NeZTatLWS90UpDn72ZJsE+t2Mwm/YIbmvfAJ+eHs0dzzgzI2cHeK81nfKGvY7+wWByPJ6t
6b50CJhJ7P+dvEE+QAmkowp6Ze5HrsVTJWshNMgQw+hIXGRZgjFimar3c6sMrK52/hBGBkP7nu0b
ozNGhiA0O2fCLHvwgOa9JeF/zJi6ETNMoWuF2jarJUcKBFGeSuopHYJKyJLbKfYAZoJsNIqhNKHI
6AcABQhFz+TM5TTVaDQ5I0pOBzuKLEPRhfWsBFCT8OHkF/PZk8WQPTzqcQatZr9SiYanFL89nPF9
h7OuYd7/YutCpOJ/M6Y4ZGXaOOS1pbWUKGXKUpTX5+KhMSVucccjojVcSLpsUj4cUFIx66tiLV2+
mn7pmM/zrr8U9SQCHP59r9UVcPg1npdHEChF2v8Q95PHiEPG14cMeDRhpXdwDgL1DqdJkiSnrAWW
LUnZM51fnFzCa+pms6mGPcvNHWXhtdOxxgPqxQdecNfLAANesM1oknMdxYB4MD4xWcuXvXKSWwpo
shOvbT5oxE6/tqDsNJc9YbXZ3EQEqcC3SpaRFcnIX/KAX8Jgsg1iPaAgGo2CSF3gnuqyAzhF2gTn
iKFBQsFVlSIhqlyp63qjLMvlhq7XK/KuXdaCgibbYRaCMOPI1KVaKlW7NAVzOg1zqprz+3PVVKqq
+f1ald4rBcNbZBxZUKaUNkD64Crojb0L4iSYIdtGA1VgA4IroHkYLchi4+wcZzK7ExG7oKncICNq
EJCucvit1p0XzVJasdq0TIS5vLGxgev9HsfQtovnTa0oPY8O/yAVFEOpUtyKEbZA3pIq7MB5aLst
TJYKk6GnxVAsEEsazM6ESkkrMm1BgebkIvOp/gYZk2CPDoaLGbE44tOz3lTE13ekN1E4nh49pvkC
yazDrinRHjwXn53Me618UHTy6pDTN1DrEwJ2d7IgRsaSwb5erxh1bUAkwf0vESNgEkfzpaNRzKDB
AUJYQoEhDEtuIQMyIoOxaYKgGRYxEDVoY6VbbQhewEiWImG/z+OyDPeZURzHe8y2BO4G3C43Dke3
3EB+mMQio+d0wS6YcjnsV5YnRbnSyB27yU/5TinFRcgSvzRlX8em/sEeix0/1fpbmMvjQmhiSdFO
TYYq45Px7PxkICPaBJ6NTlSl1YvNd6yOjm5vkxCZgZADJS8okNyjUONlKAOoTg2OcdwwAwBjQROw
iK+1XiXG1re+ij9qfjIG9qH9LSIBFjzKomJp3I0NrNUCJAEayIhZA2K3wTcUps+jEBKScSEbyoYj
0bAJJG39TNF4goHeKSyRz2ibwhKCmpobO1uOyEeahfJl8bCzlplbJfbVfHZtSgKO9JjLFdOD3RlX
1LVpKVG7Xt16eTtbzJfjmWevprKR0spDVxysctQqB9ZxaEAEmWD4JtmDuRclSlEzZhGuGmAkmCVb
ILyJOchoXMDzPT09vT29HIBkpFmpYlEWTCIIFAvnsOvGXOtx9cv4p1dukL1Pxt5+G9twpvUBoj0X
TrgFJ1hQEHSklZRhTFiaW4hKqGnEUIvrQMLEHE3+eie/eJ6P87GIkBbC7fyiQAmc0MbMaHI42kVA
tFOMsL2DlCSSW+L4Yqr1A3wxMhF3apnCzNUhd9j+lz84JN9w64337aJ3KBv9caI84iZ7vHpYyD7l
sJwZcUQDlkecX8Y//HDYKznT41QM4v6/yEvkIVSnaCkS8Jt7aKepUq3Q8tTpG7S1Vpj5WFRuFypr
t1eaaFd9wiEtsJRXMb36XG39efHUUFzJuQ8t5f2hwpLi0dXEYJ0rHl+Jzz2zpuDzpWebxZOVcT7p
6UtVT6ezjdnEgD8Z1KKFuKO0fZdyRhH9PiDaj9xIhp4Hna7eZgriwVAz2nQh5LBZObDpEwzQtlTu
U8FZ29hxNLbF/5y8vZLMrD238OfgxEn9hRcOrYwHyN6hs7eP1u7WVbx5qDEttRDkIMWEnqvDuX1o
pJQEZlkDwzapyjv0USYP+IOxD/Vx9NOtjxwkdftL9JYb/671dVxovbuxQfY2HtYfHXiPgXczipUk
uCWIg2l2kxPuBppkCyx1bEZm6peqUD3wyi3iR637ON36JTj8Vb31PvUY3v83+Ta8GUnw8qUPDxED
4eFlATYYeDWCfGUMnfC7bwK09RihJFTQPMdZo5GoYDJ7ExHjk+bT7pJPuM3pmghlXySH167P3FxT
1bVnjm49L570bxWUL4wFxcJSJreR+sbHjVP18c17s7N3zuWXjxTHxhIzDTXXOBJTcvMnWi8f3P1+
G1nKJw2RxU1oOAwzMQfN4P8gijmRE+AHCHDk/uXWK7u7eIumHs63HpC91q9xrOMX/Qz8MshdcrRh
JAfqgDWG+y/bVRvbxlnH77nz3dmx83I+n9/Ovvh8ts8vie3E8XscX9IkTu20a5q+pV1ena5r2axU
UK3dSMfKNql8Q0iAJqbxATQQEkwgISExNEEp70gI1g+t4Av7gDSQVsRUEMqV/3Nnh7Tdt0t89zz/
l9/v9//9KRMZ3LEd/CmOpO/hx+jrJlu1AJ5IBugBWhDhOhRrgVyMCmEsk4ZoAfHgc0PG1Ch3KJUu
Bm2Xhya2T5zVdh0eeXpTQxf1ryy9tjYx0svzDSPPmKb02RjoMVwAPYbIYKSQZI3sJup0csawg9NB
apBCscKxHXT0s/rfUHz3o+fJn+tfQh39tv4Z1Lh8p3tyDU6mcdwmGUCD18BTdM+kCZrjLDa3caSM
D9uFnN9sm99SboNPaS1lg5kL4tfEUxiCu45PAPRh+pt1cxAOJ+d0YvjJHKVQuAk8n+PIb/5x6k87
Vz/88Cp6qO+iz+sI2nAUfd+sK47vewa6YfrQAG9QE9wLLK9GfzknDg9UBJ+HIEblvZ0z6MuXV9G/
dAecRKCHe1XMfgVQ/VtANW9qE+b8AcdrMQEM4A/7vTBxecTTMHHpAwYKiwA6MGAwoNELi7tnxybO
7TYXd1fGck/v6u+HqicmCssVKVRdzhVOVIbp2vkbs40b29X6M68catxoV9Gz4yBOIFLZ3GojNbqw
2tOmU5DnACHieQIow07qPAHWusfjbkdEHzcIrw3EZcboitzTJ0Xg9kNTjqFkdqkiD5eeyr73I68a
GHKGEu4fkLfj08up0eVp9QE664pkg1JW4bu3Q1vBm0pETss69icNDLPzRFeeQKmoXjelgMsJb3Oc
H8juORAFyyvqY4HkcSCuyMTw2y+/8Y1bOBZ+OOH+iRlLZKaU6NP/+QDiEaJZUcxGBOj6IMSzYkxX
UfNiIlOrBOY0YVyPZ6nhcBXouZKXyZW/X/4H2STbe2+S7TZGzTz0+jvwvY+IaDJlwAU32GDiHAld
dvEDDpYhfMiHuxw9yMe0+SiR6GqpOcpfDjevHD95ZSG0w4+2NkYa57LoWf2rh1/ZLFXbn5vDz2Pn
Gim4k4Hz34I7GULWJLgSCArM7DLKpABDMJwTc0kkwQag3Tvvv6B/sKH/FQj1C7K8V4GvQcEIwuIx
egFc54bsIGcMhc0FuGmD76a3BdzzTrAUfrAUnmKOAioB2ykFAanQ4qXTZy5eu/Tnl/R7G6++tqHf
e/Evl8if3b+v39L/S86C2E3pP4VLf4xoXC0bRH4TbrQSihZi4fxPit1KWJ37sQsKh169dfsl/cGO
/h8g2dfQtl7S4bPbGMsB2FEGSBfwrEBsaKsCINkFotKPWJRGFjaKGIsE9WIAYSzDWpjrEANcy17o
mYNGy4YYhlinrebmmYgjYjwbLyQK4VAw4HUbnlhFah/0znNgypjLIixV8IcguDwCdoYxFTZKFYZO
IZ/HUwi2S/fvYtMZMVRdGosuBGemkkup8Pnnn7saHPLYQ4qFUi4E4w2XEKhL1ValzzcyqUQnR7z9
9khlejg4P9u58K6C1igy5JPTY0tBv9M1Z3fkkmoe5z4DuS+TdwmcfUezKWErZbHQqNl6x3vsjBaE
DKdaQKhumiwMZ2IdMWaaoiY/9juufvclPGHhnRXN4xYQEZIE1a06+liGthAu5LIaWhVTBTzZCoWe
XKn7UsWwAqyYT09uBjY7w6v1iVM1OTZzbikymfJ6EuVw7imBkeLpvnJ2nbyr/368MtpqF0pbh5Nr
wWxdUabHpJnMFzzRwCDGSwhydEN/FayjAfExj9fY93gL1KIajz7q8Q76AOzxTO8eijW2p5auBD/F
a6pcTnp9qXLIFZd9zHP+F5dr2w0VMcWtZqpRDctRf0ZTY9NZ0e7yD4aqrZHWFq67DDEtQd2DxDjx
RbPYAxFF7LdQjN8Fpohsio/8gyabK+ZrkllzhjHGQaNlxfYBBgLbawqMCoZmKPr64y9i37b/3orm
GwZUJ+PS+PC41807BwcApEEUtD0yRtweLC7uR6AJdcj/3/siT/7sTFSpn8zVN8ROP8cJrJwkyeB2
2JuNBxmbnMx45WLc4xsp96Wa7XJxs5mqZdD43rf4IQzLsKiOldaGAjH3TV9SGpLGtXBEywagRrhv
VehbiEgRmlaTgrCEoSYLIkBSNIlnTTezfUsHeckyIuSUnFKjPg/PQUohFLI+MRkZVpaoXkd5MxkW
ZXDrVGhtrT0fJZG+SompouRORQLWNXF3kRKTJbxQ+SlIZKtYbLdSI4c38w6BVUoJt12QnGK1hYpy
SXW71ZIMyPMD/F4hPyA8RFkr2BFFOhDCiyRFGdI+D1MS3jCsfB14wzA1BmuXh/BwfFThOCvIJTiE
fC4/UdiHIyMIOeDNxvz82SOhqYB3MMGriddfR98+KWzucIPHbY5K0XtSP23ssjKZgwpGiDLxsjaQ
Sob7LTTj85IwKoHifoBT2AAItig9hLDYWrSgugYppimAFPh0sv4ElJ54ETAViyJiLBMtx8pB0e0y
MBVBkccxle/Orpjac5f5TwAWlz9TVyLaSqG+PryZbD1TPf1pdUpaL4RraTGw5fSl1QDTF0qkPZFy
3O0bqdKp5ka+1D6cmsy2dUv5TC1UzVeSI85YJX4sO7HCBaPCTV9C4oZzALF6JoC1YQbI6AEeerA2
DPYZfg2SmcJSZlmH3Bo9Y65wgjJEgyWXFW7CUAWWO6BepKeTy3rSiZC105Eu1MbqsUEUXZhzyqOi
/ivQqF8WJpXKkZShudDid+BOCvzCiJagYUCSqyZZCaLe6i52FjxYWZg4tGHhma6Fp/I5YabT6ZD2
vY/JzWvXujkocJ6dSGpqHwsmyDC2CE21jL6B4z6wWsAcxo5bVllDfIs5lkfffft0p/PR1d/cuX/8
LYh17OE9/Q+4Ooce/htl4ORBPGmtIJg2BG4ZPDNhFIjc6G4KyhDeFHisFHhdMlQylj/UkUR7sH/I
O+Mv18m7e+8GZSt9yt4/Ve5WntoysHlcswXcnNWCa2+CUsAeiF5nGZKmIX7SjF/UfAT+G//IrGO6
NPZ/W9HsEYXjFV4ZstoCvR4xuEX7DzmhYLCo2zFqq5NNZ45wnexo5ijX2R4+Pz3dssnbWroWGUDR
w7NzRf3XKNo8NFuEDtovFquzuUrNaGIPNy7AzdwPu7AxQ3fCI7WOTU+9hxwRdrL/sV/1QVFdV/zc
+/aD3WV3gd1l+fLx9q0ssAvLAsIKgq4fiCAqQYgRKoqAQkRQ0BhaTXTaJH4009SmcaYzmebDtmOl
qdGYNFMbo6Zq/WrUJDatuizEdiY26aSOmUSHfT337eNLbTv+kZl2xnfmvXffeffec8+5557zO+zz
Lpda/Na/cSrbqFPleBN8boeus4XvLsspcZrYghSnMrQXlIpTIj7FYmUxrueOaqF8tFqY89+rBe7O
aiF7avNsl6u8ubS0uZy9P05wFzlYwmNvocidqM+qbC4sbK7MGn4TkyuQg7A44ErDnJfimy5jDA9i
DCtijEyGMdImjmCMJBljqNV0KSu/po2FDsxa04mCMabdhUHG9hnFGJnxmXdjjLEGHYcx0NgMZKya
tiyls4lfWlKIeUycWrfIWZQZn+gpcdq8GTwGmHSvvsSH5u5vzJmcVbm8sAgjTONwmopJSYvfluDm
4+Rom0VrUM8J4IOegEl0YPZWqa0Wyo1EW6bscLQdp4gSaEeUVXbv7j6oLMvbGS7el+pLsA1n7ah7
RNjhrB0JroXjYqsuv65UTJtRX1CybEKTOdacahRzhaXWvIoENZ/pszuL2R4Xs+31T15e6S72Lh36
hcVMGyn1in8tLGws8mxPcKda+LzpaAYMpfKJIG00Bks9MZAahZkaQTmwGiaytRFgnh9riZRCmpET
6c/Ls5O2QLOtc0Xyojy9UU36qD8//C41rC+czqA92KUvyQW0axb4A5OSMIEmI4Dj2C9uJJXK2HOM
o/MIu6M0kEWy1IobyJmmECF3upcrGIF3Mr7mqZ3nEBQQmLYpOyvnW77cosCs3NlZ1lR/pWfKioyc
ihp3UXSyRyiYl5ewVp/pmi06XU4HH2dMENx8xlRP/ERxRrHTFRMfY4wyJjlzHHMX4boTMHq20rew
qvMFshMtVBPJLSWY9TF2YtZXkiosA3nVmPARPYlaXbInLYIzC+Tcny/ne3n5ftJqq3QneZ3WsrLO
7m6aare79cn6RFNKtkDK6/r66sKXUxJj1Ci9FCNCATVAMqyNAEdDooFSEkfQWggu2ZdK+VKQpZWT
cQhbFyxTj4D8ZEAOUdEnIr9h7N/FAQuBeGtsjDFap8Vjl0yStXKR45KLUrbiO/HjYE1tZ0tOrZ1B
xXg97ybUuUa/6lESCH/0bLGfzA5viOBCR9KkoimohxF9yIJ6yHUq+hK6Fe40sDRAaSlV6tS4WFbr
5XNYTeZzH55c+8KutpPUEK4hrw3dhEi1y/lxFqVKNep1Kg3zULUKsSOwUC37Z5wF61SlSuWc6Von
TuhPZwWr1k7PtV9uaGpquNK+p6qhvmRKfX0VS8I3bqCcpUev7t599SiTFIXrpSjJzCSZ9Bq0MsqR
c/CIGFyzGczWOCvLxBa73e/P5yzO9HSt1mnhNm7W6Z7sOXykZ4tOt6XnyGFqOBAbeyB8K3x7f0zM
fqImGpSikyZQK0rBui0w0RCFEIFYCYszNLJJqK4CypxxNpEdOXsEafkjJopsR615gs5osdpMl9a+
8lzbZzELpkYnxXyHUxlS8jNQq4fJL4c2ZpdyaqYXg0tnUaIOMgMuNTuXeBJlLECWgOIY3BKUWcpV
oRFjmUw/cRQ4bMRhc6SQ4vB58mr4JJkSXlBGHp9fFt46H+coItfhZ/QK7s/Mg2p5c+fu07M0ynYa
aNfw9FOZJ8YyJv3eGB6m/cj+x8r7b/HjebFpy23ODge5/tjGTevhnlczI2JDmkwaxtFucpl6ZXoe
6Q36Bpd6B1Vze7mvVQWqFtWzqgG1SZ2uflj9XfXL6ovqrzTlmqeRzmk+12Zoq7RPIf1qPEV5ol6M
+puuV/dnfZJ+r/6awYhUbGgznIg2Ry+JPm+sNm4yfmxKMG00/dT0gVlrDphXPaAH9D9OLz6g/y9i
IZTlDHxHg4pjIfUobMZAOgPrsTSogYXwBHJ+D3/H1B9NROIjBaSCVJMnyA/ITnKGXCc3KctzydRP
F9ND9AT9A73CmblY7nluD3eIe1eVrPKplqp+qHqdN/JpfBnfwDfzq/mn+B/xb/O/48/y1/gb/NcC
J1iFJIEXRMEl+IRiYZawRugVtgkvC7uFnwt7hD7hbYfFEe8QHKLD5fA6ah2NIhU1olmME21iksiL
HnGOuExsTTv15bHbqtsaSUJdBNTBhTrUwktwDI7DZ4QjRuIkuaQQ0cNDsg7vkU/JF+QW1rOcosNx
1OFP43QAVYoqV/Wcah8fzU/kZ/H1/HK+g9/M7+R/wx/iT/Gf8P/kvxKoYBEShBRBkHUoknVYJ2xG
HV69pw4LHQ2KDrGoQ+KIDi2yDsB0kAalT6Rr0kF8HgOQjksn8HlaOoPPM9JZ6Zz0jnRI2iF1Su1S
q7RCWhk+JbnD9QDh3+K9KPzI0BdDV4ZOD53Er6Rw2tDNoUuDmwZXDlYMFgzmDKYP2gZ1A9cGBgcu
DRwZODjwemhP6CehXaEXQj8O7QxtC20JHg9VhSpCM0NZIU/IHcoIuUJJ/Uf6D/e/2X+wf3//3v5n
+rcErwb/ErwYvBB8P3g2eCr4TvCV4I7g1ssT9R7NPzSfy541er055vnevVOycu1T7tHrtf/Y/5u8
noFtsB1Owxk4B3+E9+E8XICL8CF8BAdgCMIgoZJPwyU4BR/ADjgLWwlP59IqOo/Op9X0IZpGXTSd
ZtBM6qYemk1zqI/m0jyaTxdgnTgJ0flCxBm1NIvWoTQddCtW48AOoLRV2LYrbQ22vOzUqnT4+1Eo
U9oEvOTXSpuCiVxR2hzyryttFXhpotLWYLu8ck5VXU2lp6apo3VDU2/2wtbV7TO6Olrujw0zoQvW
QC8uvR1WQhusw6OXgeAqE9954INcvAXIHvnKxyJOgHnQhD3Xya1mqIBOaMUZ2LNXHr9a+R/Audvh
ceR3QA+2u7HVBC1ohGaUuxqlsNmqkbcce3RhuwK5a/C7A6lJXhWbr/0ubgBXy6S0I2f8bDXYblH0
YTPOhvUotRO+LY9vx39N8pxt8qqY1AD2XnGPXqPzCrABeetwDJu/FXVh+j6GzxZZQheOZNaYj6NW
I1cAEfuxmVpxZBNaRYRKVm5BHfIrwXPH32wMda04sh3DdxfyW2QpK3FNEX3vb+w32Rs4xNePABYU
GG+3o09/P/JGn82DW8g1aDksMzXAvQRUqgahYfgwrunt7kFTC7c1XJ8UjxP1wacCwC72jxrocWBR
n7uv870WqREa2dh/sV6tsXEdVfjM7K7jRxzbteOU3DSZ9fU6jvfezaN5OMk6ce71rpuawNpO2r1J
S+7Gj5ZHCS1JCY9QCqSQRUggAUL0Bz+qgqgQmnUApUJCFfzoDxBIlVqkqoCEEK2CoBFVS6tWWr4z
d3e7TpxUIHY1e76Z+WbmvObcvXivoWqad5a/qb4t+6pvVDeZcxbwDSjA/U2bq8mMtMxU366+Y+ab
93jR7OI0dvmr2cf0aQJfjzwxVf0J9yF/1Dwec8TXuB9zRZmlJkdpOlbMBUpN6TXTU7pl9nhR77T0
cBAuqvKxopap0tOteNucm7NPWcmkpkCTb08soRz4oedq4WgVLrpaOmpe6WcKOj50fGlYtPu5uZxu
yRWTOpYKZk4Uk3bSKheVLhQwNB5YSo8yGg0CVYnYpXk9jKFaT+ltPL+Nmc8UigralEuKX9pCjCie
a2e0m9Hu0AqDILC0SAeBralQXAgCV8cchX3iqRI0S/iFok7Ynm6xPdgRaBG6Ou7Y0EvNVxKnPMUz
rLEVacC/OhHm5nRsJIlJX5VVGQdUtiVSMHK6GBas0kxQtINkoPT4bBFzFptWO9/VCUev8tNLKJbG
Uy3o2p4Nh9teSctTi1rMQQudGHH1Kkexqh3+3OU4nVK8gx4PA6aEE0bVVmdpVQf5OW8k2fB9m7M8
Fu3RLiINFXzYHapc2S5xXIy/yGKfamVBybqWiI5dmoiO6LjBcj2IVWS9a1rzotWOMWipoz2GYFt2
MhhJurrTqUiZ0/OlCVevcUBUSq/27+TlALYX6E7uzaDXiZ6ru7BNt3GJggfmcK5e44eqHCq9Bk5z
dbczdbRYic9PBIO6c8E+5+oeZ2q6ODUbDVpJjPea8VucCnX5x4qVri5fi5Knu9Kcs8hkr7Kafzrx
o0U/IhFLFYoVdh6s9cqILx87krSxrI6taJ6X4CrwSABLJqH/JEaXh+oGAawQ9drwlq/pwJIQwsSq
16EKydzRou6yPZXTHUi+dhsJ56kQx/+sp0fQGvK8cli5pSWtL6atAbipD7b1pl291qkIlv3wM8t1
TiXG8lanEmf5PqeSYLneqbSwtJzKKpYbnEory9ucShvLLY5d97tuCeFhW2W0uJcviKtHmib7G5MP
RpPppsmhxuRD0eRGh3Rn+n+wbxPs2wi9FOxjmYR9LAdgH0sb9rEchH0sU7CP5RDsY7kZ9rEchn0s
HUdlTZq6Do7tCZWP2Ia+CSWunsO5mnG0m9YubuFWXIBJdYMo2qVRmyviTRkWW7+tEVrRr7eOVBJi
ba6IQsYGbm/2zPXTOxy1y+h7O3gid/0huJ0rHs7j1P9T88CZOGCPVnaItWzcTjgAGq+sMG5FadTV
u5zMuqyrd78XFRk8B/oexIT6UyqjJvnmw5eHy+VJexKloohHBCorysFuIdb2waWjKFH9uhu0OKpm
ytB0m59eKGdspbJl7Ld3OUVlor10HCNgKh1y0RifLl6SeI+zLsmh2PrA40LaippsG7adxxX2r72P
IRez6Lkh/XDe1jG/NI9p6Zcs4JAL2bVrSlAL5d3OI5g2TsjDPghzCvZb4RA7KplxVAkEIYHMSly3
K3Zki1JGCfwWolL57lmI/b66H/CGpxNDNT/YWbhof2NKt5r5vD3Jh3L0sg33sTE1D9PRYkZl8chl
7WuDivWqh6Alhd7h5qd7FLyV0roWKZtze6xJE78eqpD/Alxrcj28B1AoMuzFvO72iwULj0yVDTKV
jOjDBT24bHbGKiybHV9x7c1WHHL0aPpmB3qO3psuQzfOLxh1QyoCmtEZrPCNyZyb9ZhwWtq4LBnc
s2jXCdQdPELqxP8iiSf/X3nLVnCJytqoQk0ZkgxqOuZQW0fTdT/k0dubTto1T9QsaRg9CaPXRhcc
fy9wl3szeifu8x03GD+M7URfr94FfKej90BMsd9ycLDK41la99T7HU5hPQV4xFlCsQL4AIBg8EFn
SZiRAoAZmWZODmCGOQxmmcPgKHMYHHMuoeodAroLSBh0t3NJRGNFoGgsYJ5gdJx5Bp1gnkH3MM+g
e/lMH+BDfCaDk3wmg5DPZFBiTh7gFHMYzDGHwTxzGCwYvTygRaMXo/uMXozuN3ox+rDRi9FHjF6M
Pmr0YvQxoxejB+DjfY0Aftz09AHA0xE8CPgJdrrpjaP3IB6jNc5DEWTOJw1H1DhnsHh/Y9ezpmdW
PBxBXvGpCDL9HPapET4dQSZ8JoJM+Cy42cZ+nzM9Qz8fQaZ/PoJMfwQra4QvRJAJj0aQCV8Ed6yx
35dMz9C/HEGmX4gg0x/DyhrhKxFkwlcjyISLzqW2uKz/WfXSunVBxwYL5+rPYZcfoYJfwoi6Wt4a
OtmVfZ2s2Cs8/Lv72t5h+dyLV16qbq/eltgY+z66bfiLH31E9O5GlDiE+R2JjWanpo+8uKz7byzZ
QHeLBRqXv6KUPEO2nKP18g0apMvV7fIyXnb/RONimIbQNohp2iOeoO30RxoTT9IYPU9j8rtkyUW6
XfyBXJmiYTQld1K/3Eyb5EnaJgdpgwwoI4/QAP0Zb4GvUh7qJsXPcSbRfvEXGohNkSOfoFVoBflj
6PBbyBNoPtrvaVC+TAXRjfYKtctvYewOKsQWIatoV8E/DflPyG9D3k9dGMvLH1BL3KK4fBRWf5Pa
5FnaJAZpVs6TBZmRe2mLuEL76TXaCn03wHZPboXu5ykpZ0mJefjhLA3IY9D5X2hvVr8OWzzhkg+v
ezwuj4PP687QgHgYc1dpnThNt8oS/LKJOmMHqEW2U6u0qU38A/5LkYOATENuh5/GjP/X011ygrbI
btopk9DlF3SbkDQjV5MrHqfJWB7yaUrLB2gIfjwoCzRmxh6nfaIf+z1PB8V3oO83aKOx5QIdgQ02
x0bspn6RhK9/SZuxPhs7T+nY92gkdoE2i5ege+Rz08QcbGX5FPxdHxM0HPt19WX5FHxyohaTWkM8
+kxMuqtvQUr5HDj1eFzTxAu0V75qcH5Z47jcgzVp+JBjsEKL/RCS4zK7vCEmCRMX06pX0F6D3+1G
XK5tHZQ1kmPT3BAbjHtGst18Lts+ivvA+EngbvAYc26yLk2SnqUddWx8yJjzl/OIfXK+5jvW+70k
5/oZ8FeQdJn2G4y7YGy8anKzG/5/AbY/C/k65N+gaw98IkUPZSA3cozkm4jT35GfuD/gPMbN3CPk
s2m4T5zXK8rTkAWKixzu0n8YL7vYqIoojp+ZuftFShFLCy1tTdtdlLWkTREV08hSLiI11u2y1a1f
NNKEKBhLTNEHSUyApBEh8cGQADHFB0MCJqwfWCqJ+6JPvmiCUR+IMbV+xEQaCApWrr+Z3a3NVhNv
cnJmzj0zd87X/8wNSt+u5APBZd0gn+mrzLPubG3O1/O42o4/GXsD0mZmkVGrtmYWcPDH1tF/8p1S
7WqMOnd8P3U1IvUun2w8/ye32ODq0+agjX0ZI6jTBfwHvtMkzaGNkvbOQ89Ji9cJBjGnjjd504x/
hx7+x/bQOvQmirpzcSzll60pl9e/lfxj8207eFOZexX5QYyniN3XxHQJsTUL/Fz0YeecLyttL/uw
7LttssLiiH5NlhHL1fpZ1uzBl+X8/bEizpUxKu1T9mUln/PfAjskbet23vmL55sfC8sz9LMT4LfF
vKPg5ffg9beyXqbBtv30jldkvTrIeELiqiB3qJ3Sr1cR211g+zA9a1i6wblWsLEO/ZVqHL2XpV6d
QDZObdh33eDjMc70BvOy3klJzOmdlGa91vXFZu1JpxmUhPeS3G6a8I8nSbVVNngHJKv/lA5TL/c7
Pz7B+2OyxpyR1Zy73bwFjp4i7w/w7h789gJ5cBG7k9Ay+uBQcNXh9RVsvsDZ0xJVk+D7N5JRn8vd
0EbdTFx2kyOt0F5pMI3Qi1Af8wel1/XYW6SRntJrclJNXsbYu1d/RG+9TWqwIaEP4/PN9Os+5P0S
8zZTS+/JEvMm/2A2HluQ30vcMuRrN1hxQx5QPyPrAGueliTfbdFriOd1ZOPSq76QO9VNxodcfrfq
ryRujmPTbuZxdG3/H0WPnqu3co5RZI/BH6EnJlj3enGtqsXOWjDmF1lkbkrUa6H/XaSP74NbugTN
QKOyWH9CD7d1dJT5O2DTU5Ixl4K/zC7mv0KX+fYUfA90mrjZ+4BdN0v87F3gJ9aPEI9PWTfD+Ar2
s4cegj6W5WYK2Ri+XoedVm7pS/YIw8NOJ+7uSN/JrbqWurHneht7HqWnN+Gv0+LrZ2SpzXOzUsLq
FHehAWRZKAJ14d8P4H2Qzf0N8L0QfUNNEyeb9+eR23tDWnw1IwkTE990uD1q7Fqw3CcP6rBpE2da
PtcXB4Mb6l3etbEX9SnXxJdr9IXZ4Ijhu+Yu3uWC6+4cPU4vptvhYdmmzsCfD/7QTUFgb43cFPdJ
pHhplHZq7xCj44vrnMQUr4/Bh9Il//Y8dLYxk8srdWRwUlSU5NoxkpdIzzmRLWvbQpK0k1TV416f
d180GV4RCUVLoiGd1X64y2sJOVFVz4W6Qk2hurCoEE7lQzFES3vOpexjJ0b8fFyN9fMXOpbLm2E/
v8rOJqOvivJSYzuyOasyyJOqetJLe93R9nBDJFSVnFDBwbPe4bwW//3QcFh8X/4WYAAk1T9ADWVu
ZHN0cmVhbQ1lbmRvYmoNMTExIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTU0
Mi9TdWJ0eXBlL1R5cGUxQz4+c3RyZWFtDQpIiVSTCVATVxjHd5PsplUaKNutlY27EZDLqrFqcTxG
AccqiBhOQbQFEhSEJBxCEYQZa5SZioI6injAKJcYpiCh0BrkEESrHM7oeNGOR9V2FK/IfGufTvsS
y0y7O7vfe/v2/d/v+97/kYRMQpAkqQxesSoqPHh6QHhUeEJKlkGv181YpktPCTSkae3jHiJHikqZ
OMWJfbcKVSgpl7/yKFjqDPEusOFjq5IudSWkJLlsVWyQwZiXmbJxU7Yq3icp3lf1hXq2egZ+zVcl
5qkCdfrUhPQUvSooMyU726CfqQpIS1M5fs9SZeqydJk5Ou3M8YVnLY+IzDPqVGqVVpdMECS+CU+C
CJQRKwgimCBWk4SGICKkRByBL1ecCFFHNODfoslG8o1EIzFLF0mzpcMyJ9lGWTVFU7OoDOo4xMDt
QQgYIqFjCBYOScU4uM1WnywrPyGcra3p7HKr3VGzrZrvMETXR3GZmTsKs4V1xoyYaDfjvozDmXxs
XbehmxuUpacfrdsqbK8oPnLErb68ruYwv6+8fE85d6phq+GIsH/b3vx8N32h0ZjP7ygqLC7kUC3a
xV5oXAKTQO3fUY/84JAm5VfkjvyfxOop0KDHrKiFKn3HWy2qohSoQQEHTWNi8Rj5E9B4hJaKShML
ceADcyBWQDSNPKdPRUqknA4SUIHqCQ7Kuxe1q1v5W7eom6tmn0MUh+KQD5qDYlEs4AhxguKBaWxR
jug5Zsp1bQECzoCMMUObiR3saaitEpj4GJCJxUgmZ8wx8tqciIaVHPJAxFTkh4mJqeAh7B1j54f0
PX58ue+3kUuaWbNCNQsExb+iEJ3r2o85sDJjhauY1/fZc1CD2uc58g2NykpJE+CoHEmKKKbg3RqQ
yBlrpzzttNU4wO0cY+eGX753r/fy/ft9IfPmaULmCoprJhv02sgWkEErSKRgxYrTsL4EvAQkoWeH
hX45T3Pp4cO+S/fazHnGan7kGvXz+jX1iznkjUh8eyNvwBG8/4doT7wFJBjRYmIHrLUNpwWmIAYk
b+IdbKhU3pgWdTKUQ74+3kgtMFakfuYNvnwpZtRgxj7M2IsZw+2MVzEj/efoS7JFLJVCByaknl58
1CigSfTmnMT8tVxQ+LlfigRxMl1yaHd5uRu4IxnQeONxRI4IOMI0Hk2BK2xfRXfLFe5Kd5KmQlAc
QwdsUGaD2FFfm2sPzjoKJP54w0agAh1gmdsw6dUjUF3fNBDWKjBP23440dnnBrEIl3Vkk7xuy9fl
iRyasHg2ojQn1/6YLGwpKigoyr+z6LPm4611nRxz++rZtUuXrosJWLGx2VpgtxQzgqjK3xeDMycm
yCISz1zot5w532PRhq1J1EYKCmSpyhGLc2+An6sF+4nFJXwBcrGLtZjNra2p5sTE1NSEBHOqRWD+
iHzbhcexlSS0AprwPC97EnZzLH//MNb+T3Gri77S3HSuryE5mEdd9r7c3r9warw/Igfn0J5pQYn6
JB3fZvymejUXuS4j2SgwI704U8X/pA1Ytt0hW09fb+68MdSkm8OjeocsTP7qGnJZviE1PZtnbjrm
orwcKB6DLvthGLft035UgcEPUdAjT2nozrrE/dfDK+OMaZvx0p14OpS+9XR4Ftd+3LY8M2J3Lq9A
/phLCfR7ZabJAVVFM8N3rG0Dx44W7zzIM03wgZwZ3vNd0Z4sLixpc9JWgWkasHO5m2wesAR2jbo2
vg56/RTPt0CCiX1xbej53fVn1h4XGHNUZcTuNrfKw8dqKo8U5u7nhwYpi0F7IoZbEqpZuKBb27FN
sG6z7opwS8rYouOZ7NTU6lbBnWYsnw8tecUrVJhOZYP4XBJY+8FiMZ6oAj8bPuWbaMchiPfyeIHL
a7L5jopeua7nx8sLu03scLv51AmB+Tb8/Q6jejnTHqCLCQpKbn7AQz3+0iVHk4cCwYVXlOEqv9me
S54UjdJutIcFmoa7b7ZTSE4jZ9SOnKHd3oaQt2pKYSoTi8sguoxGB8rkfJX/304ffu80EfwmgM/E
0ZK9JW1OTs/3l5SUNDp9JL78RKxg/xFgAFQDM3cNZW5kc3RyZWFtDWVuZG9iag0xMTIgMCBvYmoN
PDwvQUlTIGZhbHNlL0JNL05vcm1hbC9DQSAwLjQyOTk5My9PUCBmYWxzZS9PUE0gMC9TQSB0cnVl
L1NNYXNrL05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMC40Mjk5OTMvb3AgZmFsc2U+Pg1lbmRvYmoN
MTEzIDAgb2JqDTw8L0xlbmd0aCA1MTgxMy9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJl
YW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+
Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBD
b3JlIDUuNi1jMTQzIDc5LjE2MTIxMCwgMjAxNy8wOC8xMS0xMDoyODozNiAgICAgICAgIj4KICAg
PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50
YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAg
eG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4
bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5z
OnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxu
czpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIK
ICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw
ZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6aWxsdXN0cmF0b3I9Imh0dHA6Ly9u
cy5hZG9iZS5jb20vaWxsdXN0cmF0b3IvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wVFBnPSJo
dHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvdC9wZy8iCiAgICAgICAgICAgIHhtbG5zOnN0RGlt
PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvRGltZW5zaW9ucyMiCiAgICAgICAg
ICAgIHhtbG5zOnN0Rm50PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvRm9udCMi
CiAgICAgICAgICAgIHhtbG5zOnhtcEc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9nLyIK
ICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAg
ICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgICAgPGRj
OnRpdGxlPgogICAgICAgICAgICA8cmRmOkFsdD4KICAgICAgICAgICAgICAgPHJkZjpsaSB4bWw6
bGFuZz0ieC1kZWZhdWx0Ij5QRyBPcGVuIEV2ZW5pbmcgQ2FtYnJpZGdlX2NhbXB1cyAoMDAyKTwv
cmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6dGl0bGU+CiAgICAg
ICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTktMDktMTlUMTU6MDA6MTMrMDE6MDA8L3htcDpNZXRh
ZGF0YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA5LTE5VDE1OjAwOjEzKzAx
OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTgtMDYtMTJU
MTU6MjI6NTcrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29s
PkFkb2JlIElsbHVzdHJhdG9yIENDIDIwMTcgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAg
ICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6OWU4NTc1YzUtZmQ5Mi1kYTQ0LTkwZTgtZjk5
MDI0YmM5N2ExPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54
bXAuZGlkOmJjZjRmZGRiLTYyOTYtZTQ0Yy05YmZiLThlMTEwOWM2MDMyNTwveG1wTU06RG9jdW1l
bnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD51dWlkOjVEMjA4OTI0OTNC
RkRCMTE5MTRBODU5MEQzMTUwOEM4PC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAg
IDx4bXBNTTpSZW5kaXRpb25DbGFzcz5wcm9vZjpwZGY8L3htcE1NOlJlbmRpdGlvbkNsYXNzPgog
ICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD51dWlkOjBkNmU4NmJmLWUwNjAtNGY4YS1hMTJkLWI5
NWE5YWFhMzYzYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50
SUQ+eG1wLmRpZDoxODY1ZGYyMi1mZWY5LTNjNGYtYWU1Yy1hNzRiY2UyNWZlZTc8L3N0UmVmOmRv
Y3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+dXVpZDo1RDIw
ODkyNDkzQkZEQjExOTE0QTg1OTBEMzE1MDhDODwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPgog
ICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+cHJvb2Y6cGRmPC9zdFJlZjpyZW5kaXRp
b25DbGFzcz4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1NOkhp
c3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpw
YXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZl
ZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAu
aWlkOmQ0ZTkyNTk3LTQ0NmQtNDQ3OC04ODg4LTgwZjA4MWJjMjJhODwvc3RFdnQ6aW5zdGFuY2VJ
RD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOC0wNS0yNFQxMDoxNzozOCswMTow
MDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRv
YmUgSWxsdXN0cmF0b3IgQ0MgMjAxNyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4K
ICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0i
UmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDph
Y3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6YmNmNGZk
ZGItNjI5Ni1lNDRjLTliZmItOGUxMTA5YzYwMzI1PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAg
ICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE4LTA2LTEyVDE1OjIyOjU1KzAxOjAwPC9zdEV2dDp3
aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbGx1c3Ry
YXRvciBDQyAyMDE3IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAg
ICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9y
ZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5Pgog
ICAgICAgICA8aWxsdXN0cmF0b3I6U3RhcnR1cFByb2ZpbGU+UHJpbnQ8L2lsbHVzdHJhdG9yOlN0
YXJ0dXBQcm9maWxlPgogICAgICAgICA8aWxsdXN0cmF0b3I6VHlwZT5Eb2N1bWVudDwvaWxsdXN0
cmF0b3I6VHlwZT4KICAgICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlT3ZlcnByaW50PkZhbHNlPC94
bXBUUGc6SGFzVmlzaWJsZU92ZXJwcmludD4KICAgICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlVHJh
bnNwYXJlbmN5PlRydWU8L3htcFRQZzpIYXNWaXNpYmxlVHJhbnNwYXJlbmN5PgogICAgICAgICA8
eG1wVFBnOk5QYWdlcz4xPC94bXBUUGc6TlBhZ2VzPgogICAgICAgICA8eG1wVFBnOk1heFBhZ2VT
aXplIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0RGltOnc+MjEwLjAw
MTU1Njwvc3REaW06dz4KICAgICAgICAgICAgPHN0RGltOmg+Mjk3LjAwMDA4Mzwvc3REaW06aD4K
ICAgICAgICAgICAgPHN0RGltOnVuaXQ+TWlsbGltZXRlcnM8L3N0RGltOnVuaXQ+CiAgICAgICAg
IDwveG1wVFBnOk1heFBhZ2VTaXplPgogICAgICAgICA8eG1wVFBnOkZvbnRzPgogICAgICAgICAg
ICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJj
ZSI+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250TmFtZT5SYWxld2F5LVNlbWlCb2xkPC9z
dEZudDpmb250TmFtZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZvbnRGYW1pbHk+UmFsZXdh
eSBTZW1pQm9sZDwvc3RGbnQ6Zm9udEZhbWlseT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZv
bnRGYWNlPlJlZ3VsYXI8L3N0Rm50OmZvbnRGYWNlPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6
Zm9udFR5cGU+VHJ1ZVR5cGU8L3N0Rm50OmZvbnRUeXBlPgogICAgICAgICAgICAgICAgICA8c3RG
bnQ6dmVyc2lvblN0cmluZz5WZXJzaW9uIDMuMDAwZzsgdHRmYXV0b2hpbnQgKHYxLjUpIC1sIDgg
LXIgMjggLUcgMjggLXggMTQgLUQgbGF0biAtZiBjeXJsIC13IEcgLWMgLVggIiI8L3N0Rm50OnZl
cnNpb25TdHJpbmc+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpjb21wb3NpdGU+RmFsc2U8L3N0
Rm50OmNvbXBvc2l0ZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZvbnRGaWxlTmFtZT5SYWxl
d2F5LVNlbWlCb2xkLnR0Zjwvc3RGbnQ6Zm9udEZpbGVOYW1lPgogICAgICAgICAgICAgICA8L3Jk
ZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAg
ICAgICAgICAgICAgICAgIDxzdEZudDpmb250TmFtZT5TdGFnU2Fucy1Cb29rPC9zdEZudDpmb250
TmFtZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZvbnRGYW1pbHk+U3RhZyBTYW5zPC9zdEZu
dDpmb250RmFtaWx5PgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Zm9udEZhY2U+Qm9vazwvc3RG
bnQ6Zm9udEZhY2U+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250VHlwZT5PcGVuIFR5cGU8
L3N0Rm50OmZvbnRUeXBlPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6dmVyc2lvblN0cmluZz5W
ZXJzaW9uIDEuMDAwO1BTIDAwMS4wMDE7aG90Y29udiAxLjAuNTA7bWFrZW90Zi5saWIyLjAuMTY5
NzA8L3N0Rm50OnZlcnNpb25TdHJpbmc+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpjb21wb3Np
dGU+RmFsc2U8L3N0Rm50OmNvbXBvc2l0ZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZvbnRG
aWxlTmFtZT5TdGFnU2Fucy1Cb29rLm90Zjwvc3RGbnQ6Zm9udEZpbGVOYW1lPgogICAgICAgICAg
ICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QmFnPgogICAgICAgICA8L3htcFRQZzpG
b250cz4KICAgICAgICAgPHhtcFRQZzpQbGF0ZU5hbWVzPgogICAgICAgICAgICA8cmRmOlNlcT4K
ICAgICAgICAgICAgICAgPHJkZjpsaT5DeWFuPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6
bGk+TWFnZW50YTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPlllbGxvdzwvcmRmOmxp
PgogICAgICAgICAgICAgICA8cmRmOmxpPkJsYWNrPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRm
OlNlcT4KICAgICAgICAgPC94bXBUUGc6UGxhdGVOYW1lcz4KICAgICAgICAgPHhtcFRQZzpTd2F0
Y2hHcm91cHM+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJk
ZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHhtcEc6Z3JvdXBOYW1l
PkRlZmF1bHQgU3dhdGNoIEdyb3VwPC94bXBHOmdyb3VwTmFtZT4KICAgICAgICAgICAgICAgICAg
PHhtcEc6Z3JvdXBUeXBlPjA8L3htcEc6Z3JvdXBUeXBlPgogICAgICAgICAgICAgICAgICA8eG1w
RzpDb2xvcmFudHM+CiAgICAgICAgICAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAg
ICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5XaGl0ZTwveG1wRzpzd2F0Y2hOYW1lPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzpt
YWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8
L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAw
MDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkJsYWNrPC94bXBHOnN3YXRj
aE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzpt
b2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6
dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1w
RzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAw
PC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4w
LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJs
YWNrPjEwMC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRm
OmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291
cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DTVlLIFJl
ZDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2Rl
PkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5Q
Uk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+
MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFn
ZW50YT4xMDAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpw
YXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dh
dGNoTmFtZT5DTVlLIFllbGxvdzwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MTAwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNr
PgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAg
ICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Q01ZSyBHcmVlbjwveG1wRzpzd2F0Y2hOYW1lPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1h
Z2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAw
PC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4w
MDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAg
ICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DTVlLIEN5YW48L3htcEc6
c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94
bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwv
eG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEwMC4wMDAw
MDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4w
LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5
ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAg
PC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0i
UmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkNN
WUsgQmx1ZTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzptYWdlbnRhPjEwMC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAg
ICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxp
IHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6c3dhdGNoTmFtZT5DTVlLIE1hZ2VudGE8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVs
bG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MTUgTT0xMDAgWT05MCBLPTEwPC94bXBH
OnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwv
eG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8
L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4xNS4wMDAw
MDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4x
MDAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnllbGxvdz45MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpibGFjaz4xMC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFt
ZT5DPTAgTT05MCBZPTg1IEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bWFnZW50YT45MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93Pjg1LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNr
PgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAg
ICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09ODAgWT05NSBLPTA8L3htcEc6c3dhdGNoTmFt
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5
YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+ODAuMDAwMDAwPC94
bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz45NS4w
MDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFj
az4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+
CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTUwIFk9
MTAwIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6bWFnZW50YT41MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAg
ICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkg
cmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzpzd2F0Y2hOYW1lPkM9MCBNPTM1IFk9ODUgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjM1LjAwMDAwMDwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+ODUuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8
L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTUgTT0wIFk9OTAgSz0wPC94bXBH
OnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwv
eG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8
L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj41LjAwMDAw
MDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAu
MDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnll
bGxvdz45MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAg
PC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0i
UmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9
MjAgTT0wIFk9MTAwIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOmN5YW4+MjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4K
ICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAg
IDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9NTAgTT0wIFk9MTAwIEs9MDwveG1wRzpzd2F0Y2hOYW1l
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+NTAuMDAwMDAwPC94bXBHOmN5
YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3ht
cEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEwMC4w
MDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFj
az4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+
CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9NzUgTT0wIFk9
MTAwIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmN5YW4+NzUuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAg
ICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkg
cmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzpzd2F0Y2hOYW1lPkM9ODUgTT0xMCBZPTEwMCBLPTEwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj44NS4wMDAwMDA8L3htcEc6Y3lhbj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4xMC4wMDAwMDA8L3htcEc6bWFn
ZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8
L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4xMC4w
MDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAg
ICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTkwIE09MzAgWT05NSBL
PTMwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1v
ZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBl
PlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lh
bj45MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bWFnZW50YT4zMC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6eWVsbG93Pjk1LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOmJsYWNrPjMwLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAg
ICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRm
OnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpz
d2F0Y2hOYW1lPkM9NzUgTT0wIFk9NzUgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj43NS4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+NzUuMDAwMDAwPC94bXBHOnll
bGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3ht
cEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAg
ICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTgwIE09MTAgWT00NSBLPTA8L3htcEc6
c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94
bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwv
eG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjgwLjAwMDAw
MDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEw
LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5
ZWxsb3c+NDUuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAg
IDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9
IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5D
PTcwIE09MTUgWT0wIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOmN5YW4+NzAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1hZ2VudGE+MTUuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgog
ICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAg
PHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz04NSBNPTUwIFk9MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjg1LjAwMDAwMDwveG1wRzpjeWFu
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjUwLjAwMDAwMDwveG1w
RzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAw
MDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4w
LjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MTAwIE09OTUgWT01
IEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpt
b2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlw
ZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5
YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
RzptYWdlbnRhPjk1LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp5ZWxsb3c+NS4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAg
ICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRm
OnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpz
d2F0Y2hOYW1lPkM9MTAwIE09MTAwIFk9MjUgSz0yNTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEwMC4wMDAwMDA8L3htcEc6bWFn
ZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjI1LjAwMDAwMDwv
eG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjI1LjAw
MDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9NzUgTT0xMDAgWT0wIEs9
MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2Rl
PkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5Q
Uk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+
NzUuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1h
Z2VudGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPkM9NTAgTT0xMDAgWT0wIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOmN5YW4+NTAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVs
bG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MzUgTT0xMDAgWT0zNSBLPTEwPC94bXBH
OnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwv
eG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8
L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4zNS4wMDAw
MDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4x
MDAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnllbGxvdz4zNS4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpibGFjaz4xMC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFt
ZT5DPTEwIE09MTAwIFk9NTAgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6Y3lhbj4xMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4xMDAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz41MC4wMDAwMDA8L3htcEc6eWVsbG93
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpi
bGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAg
ICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTk1IFk9MjAgSz0wPC94bXBHOnN3YXRj
aE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzpt
b2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6
dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1w
RzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjk1LjAwMDAw
MDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+
MjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRm
OmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291
cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTI1IE09
MjUgWT00MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpjeWFuPjI1LjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzptYWdlbnRhPjI1LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzp5ZWxsb3c+NDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRm
OmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6c3dhdGNoTmFtZT5DPTQwIE09NDUgWT01MCBLPTU8L3htcEc6c3dhdGNoTmFtZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjQwLjAwMDAwMDwveG1wRzpjeWFuPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjQ1LjAwMDAwMDwveG1wRzpt
YWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+NTAuMDAwMDAw
PC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NS4w
MDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAg
ICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTUwIE09NTAgWT02MCBL
PTI1PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1v
ZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBl
PlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lh
bj41MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bWFnZW50YT41MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6eWVsbG93PjYwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOmJsYWNrPjI1LjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAg
ICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRm
OnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpz
d2F0Y2hOYW1lPkM9NTUgTT02MCBZPTY1IEs9NDA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjU1LjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjYwLjAwMDAwMDwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+NjUuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NDAuMDAwMDAw
PC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAg
ICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0yNSBNPTQwIFk9NjUgSz0wPC94
bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01Z
SzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NF
U1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4yNS4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT40MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6eWVsbG93PjY1LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAg
ICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5h
bWU+Qz0zMCBNPTUwIFk9NzUgSz0xMDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOmN5YW4+MzAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+NTAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz43NS4wMDAwMDA8L3htcEc6eWVsbG93
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4xMC4wMDAwMDA8L3htcEc6
YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAg
ICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTM1IE09NjAgWT04MCBLPTI1PC94bXBHOnN3
YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1w
Rzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3ht
cEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4zNS4wMDAwMDA8
L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT42MC4w
MDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVs
bG93PjgwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOmJsYWNrPjI1LjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAg
PC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0i
UmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9
NDAgTT02NSBZPTkwIEs9MzU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpjeWFuPjQwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzptYWdlbnRhPjY1LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+OTAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MzUuMDAwMDAwPC94bXBHOmJsYWNr
PgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAg
ICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz00MCBNPTcwIFk9MTAwIEs9NTA8L3htcEc6c3dhdGNo
TmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1v
ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0
eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjQwLjAwMDAwMDwveG1w
RzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjcwLjAwMDAw
MDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+
MTAwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmJsYWNrPjUwLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9y
ZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVz
b3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9NTAg
TT03MCBZPTgwIEs9NzA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpjeWFuPjUwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzptYWdlbnRhPjcwLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+ODAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NzAuMDAwMDAwPC94bXBHOmJsYWNrPgog
ICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAg
PHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnN3YXRjaE5hbWU+QVJVIExpZ2h0IEJsdWUgQ01ZSzwveG1wRzpzd2F0Y2hOYW1l
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlw
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBH
OnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzpt
b2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjY3LjAwMDAwMjwveG1w
RzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEuMDAwMDAw
PC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4w
LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJs
YWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjps
aT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJj
ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+bGlsYWM8L3ht
cEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9D
RVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAw
LjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2Rl
PkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj40
MC4wMDAwMDE8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFn
ZW50YT4yOC45OTk5OTk8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAg
ICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJz
ZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNo
TmFtZT5DPTg2IE09OCBZPTAgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOmN5YW4+ODYuMDAwMDAxPC94bXBHOmN5YW4+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+OC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxv
dz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6
YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAg
ICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5BUlUgQmx1ZSBDTVlLPC94bXBHOnN3YXRjaE5h
bWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0
eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3ht
cEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBH
Om1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwv
eG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjcwLjk5
OTk5ODwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxs
b3c+MTAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6YmxhY2s+NDcuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8
L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJS
ZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+QVJV
IExpZ2h0IEJsdWUgUkdCPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmN5YW4+NjYuODMzMDAxPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOm1hZ2VudGE+Ny4xMDE1MDA8L3htcEc6bWFnZW50YT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjIuNDM1MzAwPC94bXBHOnllbGxvdz4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+
CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAg
ICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6c3dhdGNoTmFtZT5BUlUgWWVsbG93IENNWUs8L3htcEc6c3dhdGNoTmFtZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0
aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9k
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpj
eWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjE5LjAwMDAwMDwv
eG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+ODgu
OTk5OTk5PC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymxh
Y2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxp
PgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNl
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5CbGFjazwveG1w
Rzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NF
U1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAu
MDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+
Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAu
MDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2Vu
dGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6YmxhY2s+MTAwLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAg
ICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNl
VHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hO
YW1lPkM9MTAwIE09NzEgWT0xMCBLPTQ3PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjcwLjk5OTk5ODwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MTAuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NDcuMDAwMDAw
PC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAg
ICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0yNyBNPTAgWT0xMDAgSz0zPC94
bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJP
Q0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEw
MC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9k
ZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+
MjcuMDAwMDAxPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1h
Z2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpibGFjaz4zLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPks9MTU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjE0Ljk5OTQwMDwveG1wRzpibGFjaz4KICAg
ICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxy
ZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpzd2F0Y2hOYW1lPks9MjU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxs
b3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjI1LjAwMDAwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPks9MzU8L3htcEc6c3dhdGNoTmFtZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFu
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBH
Om1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAw
MDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjM0
Ljk5OTA5OTwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPks9NDU8L3htcEc6c3dh
dGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94
bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAw
MDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8
L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAw
MDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAu
MDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnll
bGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOmJsYWNrPjQ0Ljk5OTk5OTwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAg
PC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0i
UmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPlBB
TlRPTkUgODcyIENNWUs8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6Y3lhbj44MS4zODcwMDE8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bWFnZW50YT4zMy43MTYzMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjYuMTE4OTAwPC94bXBHOnllbGxvdz4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4yODM4MDA8L3htcEc6YmxhY2s+
CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAg
ICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6c3dhdGNoTmFtZT5XaGl0ZTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50
YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8
L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT01MCBZPTEwMCBLPTAgMTwv
eG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNN
WUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9D
RVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT41MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAg
ICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNl
VHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hO
YW1lPkM9ODYgTT04IFk9MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnRpbnQ+NDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpjeWFuPjg2LjAwMDAwMTwveG1wRzpjeWFuPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjguMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJs
YWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAg
ICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+QVJVIExpZ2h0IEJsdWUgQ01ZSzwveG1wRzpzd2F0
Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3ht
cEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD41OS45OTk5OTk8
L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94
bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+NjcuMDAwMDAy
PC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MS4w
MDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVs
bG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv
cmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJl
c291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAg
TT05IFk9MTAwIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1hZ2VudGE+OS4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4K
ICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAg
IDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MTAwIE09NCBZPTU2IEs9ODwveG1wRzpzd2F0Y2hOYW1l
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlw
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBH
OnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzpt
b2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEwMC4wMDAwMDA8L3ht
cEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT40LjAwMDAw
MDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+
NTYuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
YmxhY2s+OC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRm
OmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291
cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTEwMCBN
PTMxIFk9MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6Y3lhbj4xMDAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1hZ2VudGE+MzEuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgog
ICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAg
PHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09ODIgWT05NCBLPTI8L3htcEc6c3dhdGNoTmFtZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0
aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9k
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpj
eWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjgxLjk5OTk5OTwv
eG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+OTQu
MDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymxh
Y2s+Mi4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxp
PgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNl
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTYgTT0xMDAg
WT01NSBLPTI4PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOmN5YW4+Ni4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6bWFnZW50YT4xMDAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnllbGxvdz41NS4wMDAwMDE8L3htcEc6eWVsbG93PgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4yOC4wMDAwMDA8L3htcEc6YmxhY2s+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8
cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6c3dhdGNoTmFtZT5DPTgwIE09OTkgWT0wIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRp
bnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2Rl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjgwLjAwMDAwMTwveG1wRzpj
eWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjk5LjAwMDAwMTwv
eG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4w
MDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFj
az4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+
CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MTAwIE09OTAg
WT0xMyBLPTcxPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzptYWdlbnRhPjg5Ljk5OTk5ODwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MTMuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NzAuOTk5OTk4PC94bXBHOmJsYWNrPgog
ICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgPC9y
ZGY6U2VxPgogICAgICAgICAgICAgICAgICA8L3htcEc6Q29sb3JhbnRzPgogICAgICAgICAgICAg
ICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJj
ZSI+CiAgICAgICAgICAgICAgICAgIDx4bXBHOmdyb3VwTmFtZT5HcmF5czwveG1wRzpncm91cE5h
bWU+CiAgICAgICAgICAgICAgICAgIDx4bXBHOmdyb3VwVHlwZT4xPC94bXBHOmdyb3VwVHlwZT4K
ICAgICAgICAgICAgICAgICAgPHhtcEc6Q29sb3JhbnRzPgogICAgICAgICAgICAgICAgICAgICA8
cmRmOlNlcT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJS
ZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0w
IE09MCBZPTAgSz0xMDA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MTAwLjAwMDAwMDwveG1wRzpibGFjaz4KICAg
ICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxy
ZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTAgWT0wIEs9OTA8L3htcEc6c3dhdGNoTmFtZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFn
ZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94
bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+ODkuOTk5
NDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg
ICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09MCBZPTAgSz04MDwv
eG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNN
WUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9D
RVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpibGFjaz43OS45OTg4MDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFt
ZT5DPTAgTT0wIFk9MCBLPTcwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjY5Ljk5OTcwMDwveG1wRzpibGFjaz4K
ICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAg
IDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTAgWT0wIEs9NjA8L3htcEc6c3dhdGNoTmFtZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6
bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAw
PC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NTku
OTk5MTAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAg
ICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09MCBZPTAgSz01
MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2Rl
PkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5Q
Uk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+
MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFn
ZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpibGFjaz41MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAg
ICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJz
ZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNo
TmFtZT5DPTAgTT0wIFk9MCBLPTQwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjM5Ljk5OTQwMDwveG1wRzpibGFj
az4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTAgWT0wIEs9MzA8L3htcEc6c3dhdGNoTmFt
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5
YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3ht
cEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAw
MDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+
MjkuOTk4ODAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4K
ICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09MCBZPTAg
Sz0yMDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpt
b2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlw
ZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5
YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpibGFjaz4xOS45OTk3MDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpw
YXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dh
dGNoTmFtZT5DPTAgTT0wIFk9MCBLPTEwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjkuOTk5MTAwPC94bXBHOmJs
YWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAg
ICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09MCBZPTAgSz01PC94bXBHOnN3YXRjaE5h
bWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2Rl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlw
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpj
eWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94
bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAw
MDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNr
PjQuOTk4ODAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4K
ICAgICAgICAgICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICAgICAgICAgICA8L3htcEc6
Q29sb3JhbnRzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjps
aSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDx4bXBHOmdyb3Vw
TmFtZT5CcmlnaHRzPC94bXBHOmdyb3VwTmFtZT4KICAgICAgICAgICAgICAgICAgPHhtcEc6Z3Jv
dXBUeXBlPjE8L3htcEc6Z3JvdXBUeXBlPgogICAgICAgICAgICAgICAgICA8eG1wRzpDb2xvcmFu
dHM+CiAgICAgICAgICAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICAgICAgICAg
ICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT0xMDAgWT0xMDAgSz0wPC94bXBHOnN3YXRjaE5h
bWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2Rl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlw
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpj
eWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEwMC4wMDAwMDA8
L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEw
MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpi
bGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6
bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3Vy
Y2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTc1
IFk9MTAwIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6bWFnZW50YT43NS4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAg
ICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6
bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTEwIFk9OTUgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEwLjAwMDAwMDwveG1wRzptYWdl
bnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+OTUuMDAwMDAwPC94
bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAw
MDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAg
ICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTg1IE09MTAgWT0xMDAgSz0w
PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+
Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBS
T0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj44
NS4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFn
ZW50YT4xMC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPkM9MTAwIE09OTAgWT0wIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjkwLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVs
bG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9NjAgTT05MCBZPTAgSz0wPC94bXBHOnN3
YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1w
Rzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3ht
cEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj42MC4wMDAwMDA8
L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT45MC4w
MDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVs
bG93PjAuMDAzMTAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6YmxhY2s+MC4wMDMxMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv
cmRmOmxpPgogICAgICAgICAgICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgICAgICAgICAg
IDwveG1wRzpDb2xvcmFudHM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8
L3JkZjpTZXE+CiAgICAgICAgIDwveG1wVFBnOlN3YXRjaEdyb3Vwcz4KICAgICAgICAgPHBkZjpQ
cm9kdWNlcj5BZG9iZSBQREYgbGlicmFyeSAxNS4wMDwvcGRmOlByb2R1Y2VyPgogICAgICA8L3Jk
ZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0i
ciI/Pg1lbmRzdHJlYW0NZW5kb2JqDTExNCAwIG9iag08PC9NZXRhZGF0YSAxMTMgMCBSPj4NZW5k
b2JqDTExNSAwIG9iag08PC9MZW5ndGggNTE4MTMvU3VidHlwZS9YTUwvVHlwZS9NZXRhZGF0YT4+
c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5
ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBY
TVAgQ29yZSA1LjYtYzE0MyA3OS4xNjEyMTAsIDIwMTcvMDgvMTEtMTA6Mjg6MzYgICAgICAgICI+
CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYt
c3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAg
ICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAg
ICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4
bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAg
eG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJl
ZiMiCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv
c1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmlsbHVzdHJhdG9yPSJodHRw
Oi8vbnMuYWRvYmUuY29tL2lsbHVzdHJhdG9yLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcFRQ
Zz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3QvcGcvIgogICAgICAgICAgICB4bWxuczpz
dERpbT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL0RpbWVuc2lvbnMjIgogICAg
ICAgICAgICB4bWxuczpzdEZudD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL0Zv
bnQjIgogICAgICAgICAgICB4bWxuczp4bXBHPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv
Zy8iCiAgICAgICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyI+
CiAgICAgICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAg
IDxkYzp0aXRsZT4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkg
eG1sOmxhbmc9IngtZGVmYXVsdCI+UEcgT3BlbiBFdmVuaW5nIENhbWJyaWRnZV9jYW1wdXMgKDAw
Mik8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QWx0PgogICAgICAgICA8L2RjOnRpdGxlPgog
ICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA5LTE5VDE1OjAwOjEzKzAxOjAwPC94bXA6
TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOS0wOS0xOVQxNTowMDox
MyswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE4LTA2
LTEyVDE1OjIyOjU3KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9y
VG9vbD5BZG9iZSBJbGx1c3RyYXRvciBDQyAyMDE3IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29s
PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD51dWlkOjllODU3NWM1LWZkOTItZGE0NC05MGU4
LWY5OTAyNGJjOTdhMTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50
SUQ+eG1wLmRpZDpiY2Y0ZmRkYi02Mjk2LWU0NGMtOWJmYi04ZTExMDljNjAzMjU8L3htcE1NOkRv
Y3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+dXVpZDo1RDIwODky
NDkzQkZEQjExOTE0QTg1OTBEMzE1MDhDODwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAg
ICAgICA8eG1wTU06UmVuZGl0aW9uQ2xhc3M+cHJvb2Y6cGRmPC94bXBNTTpSZW5kaXRpb25DbGFz
cz4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4K
ICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+dXVpZDowZDZlODZiZi1lMDYwLTRmOGEtYTEy
ZC1iOTVhOWFhYTM2M2E8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1
bWVudElEPnhtcC5kaWQ6MTg2NWRmMjItZmVmOS0zYzRmLWFlNWMtYTc0YmNlMjVmZWU3PC9zdFJl
Zjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPnV1aWQ6
NUQyMDg5MjQ5M0JGREIxMTkxNEE4NTkwRDMxNTA4Qzg8L3N0UmVmOm9yaWdpbmFsRG9jdW1lbnRJ
RD4KICAgICAgICAgICAgPHN0UmVmOnJlbmRpdGlvbkNsYXNzPnByb29mOnBkZjwvc3RSZWY6cmVu
ZGl0aW9uQ2xhc3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDx4bXBN
TTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSBy
ZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+
c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+
eG1wLmlpZDpkNGU5MjU5Ny00NDZkLTQ0NzgtODg4OC04MGYwODFiYzIyYTg8L3N0RXZ0Omluc3Rh
bmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTgtMDUtMjRUMTA6MTc6Mzgr
MDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50
PkFkb2JlIElsbHVzdHJhdG9yIENDIDIwMTcgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdl
bnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAg
ICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RF
dnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmJj
ZjRmZGRiLTYyOTYtZTQ0Yy05YmZiLThlMTEwOWM2MDMyNTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAg
ICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOC0wNi0xMlQxNToyMjo1NSswMTowMDwvc3RF
dnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgSWxs
dXN0cmF0b3IgQ0MgMjAxNyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAg
ICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAg
IDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9y
eT4KICAgICAgICAgPGlsbHVzdHJhdG9yOlN0YXJ0dXBQcm9maWxlPlByaW50PC9pbGx1c3RyYXRv
cjpTdGFydHVwUHJvZmlsZT4KICAgICAgICAgPGlsbHVzdHJhdG9yOlR5cGU+RG9jdW1lbnQ8L2ls
bHVzdHJhdG9yOlR5cGU+CiAgICAgICAgIDx4bXBUUGc6SGFzVmlzaWJsZU92ZXJwcmludD5GYWxz
ZTwveG1wVFBnOkhhc1Zpc2libGVPdmVycHJpbnQ+CiAgICAgICAgIDx4bXBUUGc6SGFzVmlzaWJs
ZVRyYW5zcGFyZW5jeT5UcnVlPC94bXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT4KICAgICAg
ICAgPHhtcFRQZzpOUGFnZXM+MTwveG1wVFBnOk5QYWdlcz4KICAgICAgICAgPHhtcFRQZzpNYXhQ
YWdlU2l6ZSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdERpbTp3PjIx
MC4wMDE1NTY8L3N0RGltOnc+CiAgICAgICAgICAgIDxzdERpbTpoPjI5Ny4wMDAwODM8L3N0RGlt
Omg+CiAgICAgICAgICAgIDxzdERpbTp1bml0Pk1pbGxpbWV0ZXJzPC9zdERpbTp1bml0PgogICAg
ICAgICA8L3htcFRQZzpNYXhQYWdlU2l6ZT4KICAgICAgICAgPHhtcFRQZzpGb250cz4KICAgICAg
ICAgICAgPHJkZjpCYWc+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVz
b3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Zm9udE5hbWU+UmFsZXdheS1TZW1pQm9s
ZDwvc3RGbnQ6Zm9udE5hbWU+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmFtaWx5PlJh
bGV3YXkgU2VtaUJvbGQ8L3N0Rm50OmZvbnRGYW1pbHk+CiAgICAgICAgICAgICAgICAgIDxzdEZu
dDpmb250RmFjZT5SZWd1bGFyPC9zdEZudDpmb250RmFjZT4KICAgICAgICAgICAgICAgICAgPHN0
Rm50OmZvbnRUeXBlPlRydWVUeXBlPC9zdEZudDpmb250VHlwZT4KICAgICAgICAgICAgICAgICAg
PHN0Rm50OnZlcnNpb25TdHJpbmc+VmVyc2lvbiAzLjAwMGc7IHR0ZmF1dG9oaW50ICh2MS41KSAt
bCA4IC1yIDI4IC1HIDI4IC14IDE0IC1EIGxhdG4gLWYgY3lybCAtdyBHIC1jIC1YICIiPC9zdEZu
dDp2ZXJzaW9uU3RyaW5nPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Y29tcG9zaXRlPkZhbHNl
PC9zdEZudDpjb21wb3NpdGU+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmlsZU5hbWU+
UmFsZXdheS1TZW1pQm9sZC50dGY8L3N0Rm50OmZvbnRGaWxlTmFtZT4KICAgICAgICAgICAgICAg
PC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui
PgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Zm9udE5hbWU+U3RhZ1NhbnMtQm9vazwvc3RGbnQ6
Zm9udE5hbWU+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmFtaWx5PlN0YWcgU2Fuczwv
c3RGbnQ6Zm9udEZhbWlseT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZvbnRGYWNlPkJvb2s8
L3N0Rm50OmZvbnRGYWNlPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Zm9udFR5cGU+T3BlbiBU
eXBlPC9zdEZudDpmb250VHlwZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OnZlcnNpb25TdHJp
bmc+VmVyc2lvbiAxLjAwMDtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjUwO21ha2VvdGYubGliMi4w
LjE2OTcwPC9zdEZudDp2ZXJzaW9uU3RyaW5nPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Y29t
cG9zaXRlPkZhbHNlPC9zdEZudDpjb21wb3NpdGU+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpm
b250RmlsZU5hbWU+U3RhZ1NhbnMtQm9vay5vdGY8L3N0Rm50OmZvbnRGaWxlTmFtZT4KICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkJhZz4KICAgICAgICAgPC94bXBU
UGc6Rm9udHM+CiAgICAgICAgIDx4bXBUUGc6UGxhdGVOYW1lcz4KICAgICAgICAgICAgPHJkZjpT
ZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGk+Q3lhbjwvcmRmOmxpPgogICAgICAgICAgICAgICA8
cmRmOmxpPk1hZ2VudGE8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5ZZWxsb3c8L3Jk
ZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5CbGFjazwvcmRmOmxpPgogICAgICAgICAgICA8
L3JkZjpTZXE+CiAgICAgICAgIDwveG1wVFBnOlBsYXRlTmFtZXM+CiAgICAgICAgIDx4bXBUUGc6
U3dhdGNoR3JvdXBzPgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjps
aSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDx4bXBHOmdyb3Vw
TmFtZT5EZWZhdWx0IFN3YXRjaCBHcm91cDwveG1wRzpncm91cE5hbWU+CiAgICAgICAgICAgICAg
ICAgIDx4bXBHOmdyb3VwVHlwZT4wPC94bXBHOmdyb3VwVHlwZT4KICAgICAgICAgICAgICAgICAg
PHhtcEc6Q29sb3JhbnRzPgogICAgICAgICAgICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAg
ICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+V2hpdGU8L3htcEc6c3dhdGNoTmFt
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5
YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3ht
cEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAw
MDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+
MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgog
ICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5CbGFjazwveG1wRzpz
d2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3ht
cEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94
bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8
L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAw
MDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxs
b3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
RzpibGFjaz4xMDAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8
L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJS
ZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Q01Z
SyBSZWQ8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5
cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpj
eWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
Om1hZ2VudGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp5ZWxsb3c+MTAwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAg
ICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSBy
ZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnN3YXRjaE5hbWU+Q01ZSyBZZWxsb3c8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpi
bGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAg
ICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkNNWUsgR3JlZW48L3htcEc6c3dhdGNoTmFtZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEwMC4wMDAwMDA8L3htcEc6Y3lh
bj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1w
RzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MTAwLjAw
MDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNr
PjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4K
ICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Q01ZSyBDeWFuPC94
bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01Z
SzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NF
U1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4xMDAu
MDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2Vu
dGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFt
ZT5DTVlLIEJsdWU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpjeWFuPjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6bWFnZW50YT4xMDAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAg
ICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJk
ZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnN3YXRjaE5hbWU+Q01ZSyBNYWdlbnRhPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEwMC4wMDAwMDA8L3htcEc6bWFnZW50
YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8
L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTE1IE09MTAwIFk9OTAgSz0xMDwv
eG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNN
WUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9D
RVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTUu
MDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2Vu
dGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzp5ZWxsb3c+OTAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6YmxhY2s+MTAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAg
ICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFy
c2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRj
aE5hbWU+Qz0wIE09OTAgWT04NSBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+OTAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz44NS4wMDAwMDA8L3htcEc6eWVsbG93
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpi
bGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAg
ICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTgwIFk9OTUgSz0wPC94bXBHOnN3YXRj
aE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzpt
b2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6
dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1w
RzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjgwLjAwMDAw
MDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+
OTUuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRm
OmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291
cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT01
MCBZPTEwMCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOm1hZ2VudGE+NTAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRm
OmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6c3dhdGNoTmFtZT5DPTAgTT0zNSBZPTg1IEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4zNS4wMDAwMDA8L3htcEc6bWFn
ZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93Pjg1LjAwMDAwMDwv
eG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAw
MDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg
ICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz01IE09MCBZPTkwIEs9MDwv
eG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNN
WUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9D
RVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+NS4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzp5ZWxsb3c+OTAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFt
ZT5DPTIwIE09MCBZPTEwMCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpjeWFuPjIwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6Ymxh
Y2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAg
ICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTUwIE09MCBZPTEwMCBLPTA8L3htcEc6c3dhdGNo
TmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1v
ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0
eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjUwLjAwMDAwMDwveG1w
RzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAw
PC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4x
MDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRm
OmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291
cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTc1IE09
MCBZPTEwMCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpjeWFuPjc1LjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRm
OmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6c3dhdGNoTmFtZT5DPTg1IE09MTAgWT0xMDAgSz0xMDwveG1wRzpzd2F0Y2hOYW1lPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+ODUuMDAwMDAwPC94bXBHOmN5YW4+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MTAuMDAwMDAwPC94bXBH
Om1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4xMDAuMDAw
MDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+
MTAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4K
ICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz05MCBNPTMwIFk9
OTUgSz0zMDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmN5YW4+OTAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOm1hZ2VudGE+MzAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnllbGxvdz45NS4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpibGFjaz4zMC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAg
ICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxp
IHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6c3dhdGNoTmFtZT5DPTc1IE09MCBZPTc1IEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+NzUuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50
YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93Pjc1LjAwMDAwMDwveG1w
Rzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAw
PC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAg
ICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz04MCBNPTEwIFk9NDUgSz0wPC94
bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01Z
SzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NF
U1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj44MC4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT4xMC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6eWVsbG93PjQ1LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAg
ICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5h
bWU+Qz03MCBNPTE1IFk9MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpjeWFuPjcwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptYWdlbnRhPjE1LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93Pgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFj
az4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9ODUgTT01MCBZPTAgSz0wPC94bXBHOnN3YXRjaE5h
bWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2Rl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlw
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj44NS4wMDAwMDA8L3htcEc6
Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT41MC4wMDAwMDA8
L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAu
MDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Ymxh
Y2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxp
PgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNl
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTEwMCBNPTk1
IFk9NSBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
RzpjeWFuPjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6bWFnZW50YT45NS4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6eWVsbG93PjUuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAg
ICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxp
IHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6c3dhdGNoTmFtZT5DPTEwMCBNPTEwMCBZPTI1IEs9MjU8L3htcEc6c3dhdGNoTmFtZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4xMDAuMDAwMDAwPC94bXBH
Om1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4yNS4wMDAw
MDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4y
NS4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgog
ICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTc1IE09MTAwIFk9
MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5
cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpj
eWFuPjc1LjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
RzptYWdlbnRhPjEwMC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAg
ICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJk
ZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
c3dhdGNoTmFtZT5DPTUwIE09MTAwIFk9MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjUwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEwMC4wMDAwMDA8L3htcEc6bWFnZW50
YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8
L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTM1IE09MTAwIFk9MzUgSz0xMDwv
eG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNN
WUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9D
RVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MzUu
MDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2Vu
dGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzp5ZWxsb3c+MzUuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6YmxhY2s+MTAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAg
ICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFy
c2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRj
aE5hbWU+Qz0xMCBNPTEwMCBZPTUwIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+NTAuMDAwMDAwPC94bXBHOnll
bGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3ht
cEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAg
ICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT05NSBZPTIwIEs9MDwveG1wRzpz
d2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3ht
cEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94
bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8
L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT45NS4w
MDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVs
bG93PjIwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8
L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJS
ZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0y
NSBNPTI1IFk9NDAgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6Y3lhbj4yNS4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6bWFnZW50YT4yNS4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjQwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgog
ICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAg
PHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz00MCBNPTQ1IFk9NTAgSz01PC94bXBHOnN3YXRjaE5hbWU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj40MC4wMDAwMDA8L3htcEc6Y3lh
bj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT40NS4wMDAwMDA8L3ht
cEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjUwLjAw
MDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNr
PjUuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4K
ICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz01MCBNPTUwIFk9
NjAgSz0yNTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmN5YW4+NTAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOm1hZ2VudGE+NTAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnllbGxvdz42MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpibGFjaz4yNS4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAg
ICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxp
IHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6c3dhdGNoTmFtZT5DPTU1IE09NjAgWT02NSBLPTQwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj41NS4wMDAwMDA8L3htcEc6Y3lhbj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT42MC4wMDAwMDA8L3htcEc6bWFn
ZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjY1LjAwMDAwMDwv
eG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjQwLjAw
MDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MjUgTT00MCBZPTY1IEs9
MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2Rl
PkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5Q
Uk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+
MjUuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1h
Z2VudGE+NDAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnllbGxvdz42NS4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPkM9MzAgTT01MCBZPTc1IEs9MTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpjeWFuPjMwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjUwLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+NzUuMDAwMDAwPC94bXBHOnll
bGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MTAuMDAwMDAwPC94
bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAg
ICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0zNSBNPTYwIFk9ODAgSz0yNTwveG1w
Rzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8
L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNT
PC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MzUuMDAw
MDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+
NjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnllbGxvdz44MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpibGFjaz4yNS4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFt
ZT5DPTQwIE09NjUgWT05MCBLPTM1PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6Y3lhbj40MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6bWFnZW50YT42NS4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjkwLjAwMDAwMDwveG1wRzp5ZWxsb3c+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjM1LjAwMDAwMDwveG1wRzpi
bGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAg
ICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9NDAgTT03MCBZPTEwMCBLPTUwPC94bXBHOnN3
YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1w
Rzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3ht
cEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj40MC4wMDAwMDA8
L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT43MC4w
MDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVs
bG93PjEwMC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8
eG1wRzpibGFjaz41MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAg
IDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9
IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5D
PTUwIE09NzAgWT04MCBLPTcwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6Y3lhbj41MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bWFnZW50YT43MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjgwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjcwLjAwMDAwMDwveG1wRzpibGFj
az4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkFSVSBMaWdodCBCbHVlIENNWUs8L3htcEc6c3dhdGNo
TmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBH
OnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwv
eG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3ht
cEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj42Ny4wMDAwMDI8
L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4xLjAw
MDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxs
b3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
RzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9y
ZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVz
b3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPmxpbGFj
PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+
UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50
PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5
YW4+NDAuMDAwMDAxPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
Om1hZ2VudGE+MjguOTk5OTk5PC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAg
ICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6
cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3
YXRjaE5hbWU+Qz04NiBNPTggWT0wIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjg2LjAwMDAwMTwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjguMDAwMDAwPC94bXBHOm1hZ2VudGE+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5
ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94
bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAg
ICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+QVJVIEJsdWUgQ01ZSzwveG1wRzpzd2F0
Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3ht
cEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAw
PC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwv
eG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEwMC4wMDAw
MDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT43
MC45OTk5OTg8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
eWVsbG93PjEwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOmJsYWNrPjQ3LjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAg
ICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlw
ZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1l
PkFSVSBMaWdodCBCbHVlIFJHQjwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpjeWFuPjY2LjgzMzAwMTwveG1wRzpjeWFuPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjcuMTAxNTAwPC94bXBHOm1hZ2VudGE+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4yLjQzNTMwMDwveG1wRzp5ZWxsb3c+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJs
YWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAg
ICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+QVJVIFllbGxvdyBDTVlLPC94bXBHOnN3YXRjaE5h
bWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0
eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3ht
cEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBH
Om1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3ht
cEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4xOS4wMDAw
MDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93
Pjg4Ljk5OTk5OTwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3Jk
ZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNv
dXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+QmxhY2s8
L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5Q
Uk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+
MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpt
b2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lh
bj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpt
YWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmJsYWNrPjEwMC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpw
YXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dh
dGNoTmFtZT5DPTEwMCBNPTcxIFk9MTAgSz00NzwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT43MC45OTk5OTg8L3htcEc6bWFn
ZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEwLjAwMDAwMDwv
eG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjQ3LjAw
MDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAg
ICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MjcgTT0wIFk9MTAwIEs9
MzwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBl
PlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGlu
dD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
Om1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpj
eWFuPjI3LjAwMDAwMTwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
RzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6YmxhY2s+My4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAg
ICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJk
ZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
c3dhdGNoTmFtZT5LPTE1PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4xNC45OTk0MDA8L3htcEc6YmxhY2s+
CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAg
ICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6c3dhdGNoTmFtZT5LPTI1PC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6
eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4yNS4wMDAwMDA8
L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5LPTM1PC94bXBHOnN3YXRjaE5hbWU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6
dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1v
ZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6
Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwv
eG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4w
MDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFj
az4zNC45OTkwOTk8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxp
PgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNl
Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5LPTQ1PC94bXBH
OnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VT
UzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4w
MDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5D
TVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpibGFjaz40NC45OTk5OTk8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5
cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFt
ZT5QQU5UT05FIDg3MiBDTVlLPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOmN5YW4+ODEuMzg3MDAxPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MzMuNzE2MzAwPC94bXBHOm1hZ2VudGE+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz42LjExODkwMDwveG1wRzp5ZWxsb3c+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMjgzODAwPC94bXBHOmJs
YWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAg
ICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+V2hpdGU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50Pgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1h
Z2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwv
eG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAuMDAw
MDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg
ICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09NTAgWT0xMDAgSz0w
IDE8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9k
ZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+
UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFu
PjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1h
Z2VudGE+NTAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpw
YXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dh
dGNoTmFtZT5DPTg2IE09OCBZPTAgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp0aW50PjQwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj44Ni4wMDAwMDE8L3htcEc6Y3lhbj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT44LjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVs
bG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkFSVSBMaWdodCBCbHVlIENNWUs8L3htcEc6
c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNT
PC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+NTkuOTk5
OTk5PC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01Z
SzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjY3LjAw
MDAwMjwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRh
PjEuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAg
ICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBl
PSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+
Qz0wIE09OSBZPTEwMCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptYWdlbnRhPjkuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6Ymxh
Y2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAg
ICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTEwMCBNPTQgWT01NiBLPTg8L3htcEc6c3dhdGNo
TmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBH
OnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwv
eG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3ht
cEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4xMDAuMDAwMDAw
PC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+NC4w
MDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVs
bG93PjU2LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOmJsYWNrPjguMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8
L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJS
ZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0x
MDAgTT0zMSBZPTAgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptYWdlbnRhPjMxLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93Pgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFj
az4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAg
ICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTgyIFk9OTQgSz0yPC94bXBHOnN3YXRjaE5h
bWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0
eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3ht
cEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBH
Om1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3ht
cEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT44MS45OTk5
OTk8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93
Pjk0LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OmJsYWNrPjIuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3Jk
ZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNv
dXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz02IE09
MTAwIFk9NTUgSz0yODwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpjeWFuPjYuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1hZ2VudGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+NTUuMDAwMDAxPC94bXBHOnllbGxvdz4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MjguMDAwMDAwPC94bXBHOmJsYWNr
PgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAg
ICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz04MCBNPTk5IFk9MCBLPTA8L3htcEc6c3dhdGNoTmFt
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5
cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1w
Rzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6
bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj44MC4wMDAwMDE8L3ht
cEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT45OS4wMDAw
MDE8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93
PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRm
OmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291
cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTEwMCBN
PTkwIFk9MTMgSz03MTwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpjeWFuPjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6bWFnZW50YT44OS45OTk5OTg8L3htcEc6bWFnZW50YT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEzLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjcwLjk5OTk5ODwveG1wRzpibGFj
az4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAg
IDwvcmRmOlNlcT4KICAgICAgICAgICAgICAgICAgPC94bXBHOkNvbG9yYW50cz4KICAgICAgICAg
ICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVz
b3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wRzpncm91cE5hbWU+R3JheXM8L3htcEc6Z3Jv
dXBOYW1lPgogICAgICAgICAgICAgICAgICA8eG1wRzpncm91cFR5cGU+MTwveG1wRzpncm91cFR5
cGU+CiAgICAgICAgICAgICAgICAgIDx4bXBHOkNvbG9yYW50cz4KICAgICAgICAgICAgICAgICAg
ICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlw
ZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1l
PkM9MCBNPTAgWT0wIEs9MTAwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjEwMC4wMDAwMDA8L3htcEc6YmxhY2s+
CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAg
ICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT0wIFk9MCBLPTkwPC94bXBHOnN3YXRjaE5hbWU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFu
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBH
Om1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAw
MDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjg5
Ljk5OTQwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTAgWT0wIEs9
ODA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9k
ZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+
UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFu
PjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1h
Z2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6YmxhY2s+NzkuOTk4ODAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAg
ICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFy
c2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRj
aE5hbWU+Qz0wIE09MCBZPTAgSz03MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93Pgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz42OS45OTk3MDA8L3htcEc6Ymxh
Y2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAg
ICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT0wIFk9MCBLPTYwPC94bXBHOnN3YXRjaE5h
bWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2Rl
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlw
ZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpj
eWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94
bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAw
MDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNr
PjU5Ljk5OTEwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+
CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2Ui
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTAgWT0w
IEs9NTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5
cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpj
eWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
Om1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6YmxhY2s+NTAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAg
ICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6
cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3
YXRjaE5hbWU+Qz0wIE09MCBZPTAgSz00MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4zOS45OTk0MDA8L3htcEc6
YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAg
ICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT0wIFk9MCBLPTMwPC94bXBHOnN3YXRj
aE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzpt
b2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6
dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1w
RzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAw
PC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4w
LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJs
YWNrPjI5Ljk5ODgwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6
bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3Vy
Y2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTAg
WT0wIEs9MjA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
RzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6YmxhY2s+MTkuOTk5NzAwPC94bXBHOmJsYWNrPgogICAgICAgICAg
ICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSBy
ZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnN3YXRjaE5hbWU+Qz0wIE09MCBZPTAgSz0xMDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVs
bG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz45Ljk5OTEwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTAgWT0wIEs9NTwveG1wRzpzd2F0
Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6
bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBH
OnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3ht
cEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAw
MDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+
MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpi
bGFjaz40Ljk5ODgwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6
bGk+CiAgICAgICAgICAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgICAgICAgICAgPC94
bXBHOkNvbG9yYW50cz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxy
ZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wRzpn
cm91cE5hbWU+QnJpZ2h0czwveG1wRzpncm91cE5hbWU+CiAgICAgICAgICAgICAgICAgIDx4bXBH
Omdyb3VwVHlwZT4xPC94bXBHOmdyb3VwVHlwZT4KICAgICAgICAgICAgICAgICAgPHhtcEc6Q29s
b3JhbnRzPgogICAgICAgICAgICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgICAg
ICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0wIE09MTAwIFk9MTAwIEs9MDwveG1wRzpzd2F0
Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6
bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBH
OnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3ht
cEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4xMDAuMDAw
MDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxv
dz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwv
cmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJl
c291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAg
TT03NSBZPTEwMCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOm1hZ2VudGE+NzUuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAg
ICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8
cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6c3dhdGNoTmFtZT5DPTAgTT0xMCBZPTk1IEs9MDwveG1wRzpzd2F0Y2hOYW1lPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4xMC4wMDAwMDA8L3htcEc6
bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93Pjk1LjAwMDAw
MDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAu
MDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAg
ICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz04NSBNPTEwIFk9MTAw
IEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpt
b2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlw
ZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5
YW4+ODUuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
Om1hZ2VudGE+MTAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOnllbGxvdz4xMDAuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAg
ICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJk
ZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
c3dhdGNoTmFtZT5DPTEwMCBNPTkwIFk9MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT45MC4wMDAwMDA8L3htcEc6bWFnZW50
YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8
L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTYwIE09OTAgWT0wIEs9MDwveG1w
Rzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8
L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNT
PC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+NjAuMDAw
MDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+
OTAuMDAwMDAwPC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBH
OnllbGxvdz4wLjAwMzEwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOmJsYWNrPjAuMDAzMTAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAg
ICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICAgICAg
ICAgICA8L3htcEc6Q29sb3JhbnRzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAg
ICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgICAgIDxw
ZGY6UHJvZHVjZXI+QWRvYmUgUERGIGxpYnJhcnkgMTUuMDA8L3BkZjpQcm9kdWNlcj4KICAgICAg
PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBl
bmQ9InIiPz4NZW5kc3RyZWFtDWVuZG9iag0xMTYgMCBvYmoNPDwvTWV0YWRhdGEgMTE1IDAgUj4+
DWVuZG9iag0xMTcgMCBvYmoNPDwvTGVuZ3RoIDcyNzUvU3VidHlwZS9YTUwvVHlwZS9NZXRhZGF0
YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6
a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9i
ZSBYTVAgQ29yZSA1LjYtYzE0MyA3OS4xNjEyMTAsIDIwMTcvMDgvMTEtMTA6Mjg6MzYgICAgICAg
ICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y
ZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAg
ICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAg
ICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAg
ICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAg
ICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJj
ZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x
LjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmlsbHVzdHJhdG9yPSJo
dHRwOi8vbnMuYWRvYmUuY29tL2lsbHVzdHJhdG9yLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnht
cFRQZz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3QvcGcvIgogICAgICAgICAgICB4bWxu
czpzdERpbT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL0RpbWVuc2lvbnMjIgog
ICAgICAgICAgICB4bWxuczp4bXBHPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvZy8iCiAg
ICAgICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyI+CiAgICAg
ICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcG9zdHNjcmlwdDwvZGM6Zm9ybWF0PgogICAgICAg
ICA8ZGM6dGl0bGU+CiAgICAgICAgICAgIDxyZGY6QWx0PgogICAgICAgICAgICAgICA8cmRmOmxp
IHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlByaW50PC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFs
dD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICAgPGRjOmNyZWF0b3I+CiAgICAgICAgICAg
IDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPkFkcmlhbiBWYXVnaGFuPC9yZGY6bGk+
CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC9kYzpjcmVhdG9yPgogICAgICAgICA8
eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA1LTE1VDEyOjM3OjE1KzAxOjAwPC94bXA6TWV0YWRhdGFE
YXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOS0wNS0xNVQxMjozNzoxNSswMTowMDwv
eG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE5LTA1LTE1VDEyOjM3
OjE1KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9i
ZSBJbGx1c3RyYXRvciBDQyAyMy4wIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAg
ICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6MGU2NTkzNDQtYTgyYy00MTBhLWI3YWEtNTQ4
YzcyN2UyNTFhPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54
bXAuZGlkOjBlNjU5MzQ0LWE4MmMtNDEwYS1iN2FhLTU0OGM3MjdlMjUxYTwveG1wTU06RG9jdW1l
bnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD51dWlkOjVEMjA4OTI0OTNC
RkRCMTE5MTRBODU5MEQzMTUwOEM4PC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAg
IDx4bXBNTTpSZW5kaXRpb25DbGFzcz5wcm9vZjpwZGY8L3htcE1NOlJlbmRpdGlvbkNsYXNzPgog
ICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmM4ODAxNTQ0LWNkODEtNGNjYy1hOTAx
LTRhYTFjNTY0NjdkYjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3Vt
ZW50SUQ+eG1wLmRpZDpjODgwMTU0NC1jZDgxLTRjY2MtYTkwMS00YWExYzU2NDY3ZGI8L3N0UmVm
OmRvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+dXVpZDo1
RDIwODkyNDkzQkZEQjExOTE0QTg1OTBEMzE1MDhDODwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
PgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+cHJvb2Y6cGRmPC9zdFJlZjpyZW5k
aXRpb25DbGFzcz4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1N
Okhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJk
ZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5z
YXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54
bXAuaWlkOjcwZjVhZGUyLTVmNDUtNDA5OS05YTk2LWVmMWZhNGU3Yzc3Mzwvc3RFdnQ6aW5zdGFu
Y2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNS0xNVQxMToyMjowNisw
MTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+
QWRvYmUgSWxsdXN0cmF0b3IgQ0MgMjMuMCAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2Vu
dD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAg
ICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlw
ZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2
dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MGU2
NTkzNDQtYTgyYy00MTBhLWI3YWEtNTQ4YzcyN2UyNTFhPC9zdEV2dDppbnN0YW5jZUlEPgogICAg
ICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE5LTA1LTE1VDEyOjM3OjE1KzAxOjAwPC9zdEV2
dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbGx1
c3RyYXRvciBDQyAyMy4wIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAg
ICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAg
ICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJj
ZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVkPC9zdEV2dDphY3Rp
b24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20gYXBwbGljYXRpb24v
cG9zdHNjcmlwdCB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUuaWxsdXN0cmF0b3I8L3N0RXZ0OnBh
cmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxp
IHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlv
bj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFt
ZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IHRvIGFwcGxpY2F0aW9uL3ZuZC5hZG9i
ZS5pbGx1c3RyYXRvcjwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+
CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAg
ICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAg
ICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQg
dG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLmlsbHVzdHJhdG9yPC9zdEV2dDpwYXJhbWV0ZXJzPgog
ICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVk
PC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20g
YXBwbGljYXRpb24vcG9zdHNjcmlwdCB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUuaWxsdXN0cmF0
b3I8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPGlsbHVzdHJh
dG9yOlN0YXJ0dXBQcm9maWxlPlByaW50PC9pbGx1c3RyYXRvcjpTdGFydHVwUHJvZmlsZT4KICAg
ICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlT3ZlcnByaW50PkZhbHNlPC94bXBUUGc6SGFzVmlzaWJs
ZU92ZXJwcmludD4KICAgICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlVHJhbnNwYXJlbmN5PkZhbHNl
PC94bXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT4KICAgICAgICAgPHhtcFRQZzpOUGFnZXM+
MTwveG1wVFBnOk5QYWdlcz4KICAgICAgICAgPHhtcFRQZzpNYXhQYWdlU2l6ZSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdERpbTp3PjExMS4zNTI3Njk8L3N0RGltOnc+
CiAgICAgICAgICAgIDxzdERpbTpoPjczLjUzMDE5ODwvc3REaW06aD4KICAgICAgICAgICAgPHN0
RGltOnVuaXQ+TWlsbGltZXRlcnM8L3N0RGltOnVuaXQ+CiAgICAgICAgIDwveG1wVFBnOk1heFBh
Z2VTaXplPgogICAgICAgICA8eG1wVFBnOlBsYXRlTmFtZXM+CiAgICAgICAgICAgIDxyZGY6U2Vx
PgogICAgICAgICAgICAgICA8cmRmOmxpPkN5YW48L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJk
ZjpsaT5NYWdlbnRhPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+WWVsbG93PC9yZGY6
bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+QmxhY2s8L3JkZjpsaT4KICAgICAgICAgICAgPC9y
ZGY6U2VxPgogICAgICAgICA8L3htcFRQZzpQbGF0ZU5hbWVzPgogICAgICAgICA8eG1wVFBnOlN3
YXRjaEdyb3Vwcz4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkg
cmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wRzpncm91cE5h
bWU+RGVmYXVsdCBTd2F0Y2ggR3JvdXA8L3htcEc6Z3JvdXBOYW1lPgogICAgICAgICAgICAgICAg
ICA8eG1wRzpncm91cFR5cGU+MDwveG1wRzpncm91cFR5cGU+CiAgICAgICAgICAgICAgICAgIDx4
bXBHOkNvbG9yYW50cz4KICAgICAgICAgICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAg
ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPldoaXRlPC94bXBHOnN3YXRjaE5hbWU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFu
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBH
Om1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAw
MDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAu
MDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAg
ICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+UmljaCBCbHVlIENNWUs8
L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5D
TVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJP
Q0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEw
MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFn
ZW50YT45MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6eWVsbG93PjEzLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmJsYWNrPjcxLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPkM9MTAwIE09OTAgWT0xMyBLPTYwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjg5Ljk5OTk5ODwveG1wRzptYWdl
bnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MTMuMDAwMDAwPC94
bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NjAuMDAw
MDAyPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg
ICAgICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICAgICAgICAgICA8L3htcEc6Q29sb3Jh
bnRzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAg
ICAgICA8L3htcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+QWRvYmUg
UERGIGxpYnJhcnkgMTAuMDE8L3BkZjpQcm9kdWNlcj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+
CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4NZW5kc3RyZWFt
DWVuZG9iag0xMTggMCBvYmoNPDwvTWV0YWRhdGEgMTE3IDAgUj4+DWVuZG9iag0xMTkgMCBvYmoN
PDwvQ1MvRGV2aWNlQ01ZSy9JIGZhbHNlL0sgZmFsc2UvUy9UcmFuc3BhcmVuY3kvVHlwZS9Hcm91
cD4+DWVuZG9iag0xMjAgMCBvYmoNPDwvQkJveFs0NzIuNjU2IDc1MC45NTEgNTE1LjI5NyA3MjIu
NzU0XS9GaWx0ZXIvRmxhdGVEZWNvZGUvR3JvdXAgMTE5IDAgUi9MZW5ndGggNjM1L01hdHJpeFsx
LjAgMC4wIDAuMCAxLjAgMC4wIDAuMF0vUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1MwIDkyIDAg
Uj4+Pj4vU3VidHlwZS9Gb3JtPj5zdHJlYW0NCkiJdFNLrhwxCNz3KXyBcQBjMCfI+imLHGCUj5RJ
pCT3l1LAmye9RTRSd9cYcFEUvy91mbZtuMj0rUMBlYecyeHjz5fr8/h10QzjQdNZ8Nwn8jvO+HF9
+PiJxre/1++Bc/x4aNgkdx6+DKG+xv3nlUf1xB1r3GiiHM9lOm796uf9uslk9ucZKMl5Jr2CDsrP
29tBptze1bu9Fay7XiE9c6jqfL1e3hH3Ge4bxBF00OQbcaSjkyIi45EwKGFQkWQ1MOZzEkg2gyuK
puJD5iLOkyy5IDZy1tTFAAfKI1CnSAydnO3syWvlGVsCPwogdjLQpqAISimK2DxoDeVNxs1RIgHh
LwT6VF0gkvoDbHDjaXQSmOwUmE8HOu8cakSeHS9dDbMHCrJEIdahgUbRvOQLiZJgr0pcsEMijw4l
L2wcSdTPrhmEFNJC5Nw97RqytbY2NdJlARcCLA2QFcgNwM08arB7SqQWBEUeCUsUmnqkdJN0KVkp
etyrrXU606Mac7Pn/IqGJyIrlHTuOepTCpK0xdZOxKtkyq1AaBC309IkmWpNBF5K0tZW5abV5Nf0
VQIRrPtIvCgbJYqGhDgUBLNHGik8oZxi6JbmI0gNsJGB8qSrOagXUaLKJKxx3ZOMAZb2pamNWIug
yZ4ga0G1uql9wEv+sys8Na90gRicLn7bFXDh6p8212uV9hRVkVoN1ha3LIml4ei9OloLvVc14V79
RrtHd+TmyOtcWKUWaVs7diVap9TQ7YleHZbtlFZncTmrFfHcVFktAq64X4DmrUkuj0RXLtNR9WTa
cSvN35rB9PvUcPLz5OeKUnRTZh7o+7i+l4Iv1z8BBgCG1Ab3DWVuZHN0cmVhbQ1lbmRvYmoNMTIx
IDAgb2JqDTw8L0NTL0RldmljZUNNWUsvSSBmYWxzZS9LIGZhbHNlL1MvVHJhbnNwYXJlbmN5L1R5
cGUvR3JvdXA+Pg1lbmRvYmoNMTIyIDAgb2JqDTw8L0JCb3hbMTE5LjQ3IDI2OC4yNzkgMTYyLjEx
MSAyNDAuMDgyXS9GaWx0ZXIvRmxhdGVEZWNvZGUvR3JvdXAgMTIxIDAgUi9MZW5ndGggNjMyL01h
dHJpeFsxLjAgMC4wIDAuMCAxLjAgMC4wIDAuMF0vUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1Mw
IDkyIDAgUj4+Pj4vU3VidHlwZS9Gb3JtPj5zdHJlYW0NCkiJbFNbqlw5DPw/q/AGWrEeluwVzHfI
RxZwyQNyZyDJ/mGqdPqSBEKDW3UsyVKp9P1SPRI1LKbMbSNMMnTYFj01fny6Po7/rikndUwpNZxr
H9pnj2/Xu38+zPHl5/V94B4/HepbcsPFlsvRFePl34tXfUotx5kKR/GMP86Xy0S1nsikbD8jnnZ7
0Hq8fab74/ccj7dU9yNPON8iZif5fL3/o+KU2hsUoGnN/FWwotfqEmy8Ap3Jgs5kcRosVBknFmwH
6VlfLF77NJzkwSXxxSVcce6F/FeI2Rkhipgl6s4bTdi1F2zLA68UI4+yY42UnczoOAvRGJFM2C9X
SQS73+W4WShIJVFoSdoiK7rbq3SReXzf1QzmITizCI5le51oQi14V0Z7+YHt5zSo036zGqaeQfay
mT5GEA2Qlh0so1iyCUyJw+kf0JXicVCdwS9F70rPQswSO+x6ovdXoI3uUGBsJT2dbiZp29WVp++O
KrTDKWOAnA4AX8/mqQhyKRxBlI8HGsAVnvRFANGOW+TwO60eTp5BVA8WZBFo7ucWPPgeZeZS3kxM
KPEV0CfbmtpgHkYvFPMKZZwiMiSGipPCIosmCyGofIb3y1E9gjkZNbGHnZ8lwola6dc6xHJ1z6wE
/35TENmMWT0j7O+yDxSbSt0HJOT126Iif6eYi2s/vYme5+b+zho3mVTaAxugpzdkowfA5VyOYiNo
e3O4sVCxt3IZx3jAwDpQiU7gzB+raM/SJsOoM6wAlocqjd1cVC+6+T3xTdkQZ91sNEV2bpGvlubs
fjLydnVK+0kYRL04V7slzQ3izU3pmix+B+f5tRl8f/0vwABwxPvrDWVuZHN0cmVhbQ1lbmRvYmoN
MTIzIDAgb2JqDTw8L0NTL0RldmljZUNNWUsvSSBmYWxzZS9LIGZhbHNlL1MvVHJhbnNwYXJlbmN5
L1R5cGUvR3JvdXA+Pg1lbmRvYmoNMTI0IDAgb2JqDTw8L0JCb3hbOTcuMzA1MyAyMTkuMjAzIDEz
OS45NDYgMTkxLjAwNl0vRmlsdGVyL0ZsYXRlRGVjb2RlL0dyb3VwIDEyMyAwIFIvTGVuZ3RoIDYz
Ni9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIDAuMCAwLjBdL1Jlc291cmNlczw8L0V4dEdTdGF0ZTw8
L0dTMCA5MiAwIFI+Pj4+L1N1YnR5cGUvRm9ybT4+c3RyZWFtDQpIiWxUW4ocMQz871P0BcaRZT2s
E+R7yUcOMOQBmQQ2uT+kSj3LEggDRjWWbFWp3K9H5Vji56w5ROI0HWGn7jErz99fjs/nr0NGxTxl
5FSsvotx7fPH8eHjJzm//TleT+zjN885Y7gajhAb20TP+8+DW72O9IU1JhLHitWrPeP7oWPOfCId
qftZ8Yw7g9Ht7W+m397PsDdwP65LnlDeKqQP+Xq8/NOxjVAcUDXEpr03PME1uwU9H0AlbKjEeLOx
0Yl9HWqk4xcDc24vmVg3pFoj8M8atibW7Y4sG6p12pio8THX4s50xLkdscZGVgxFPU6BmjF2KM/F
mqjm6YKh3I8cZmS/c2HH90YcaDRByqnK3J2VOB/Dq8LOztYwMOIEnyQojc4ra0nVAnupjH2xaKGU
IKvzJBvGLDSXO1rrUgJrIDmbhCv9Eq1hDCsaoMhoWaE/xfUx5tVrcXQ+tMhbwP4BRP5o0LZSoD5N
gvHO7jzW7qqs6DlH9HwAeHm2UknAHu6Y417nDQS0rbacYK4eLRRFXslsB3H6LKODhqUTzNjPl3Dj
jex3jVythcCND8AlJCZSjaRY7ujnAXtUEmn7JoPuopA6HNloXmz11ZY9Bb7IB+C8tGeXSKJhuKkE
Gt6sjT0jWJcKFi2a5rNC/+99nXzoEKIc3gLF99cKOn2EON++rNZaarf816nWctJtN7yCWf1KNigA
+qK8SR5gvWlRc7CAu68pTHQMZB60B2wBsPrbYp4EMAalUBoNrwDvhza13Upkv3Vd18g3OyGOvMRo
32pdLr8+C9JswvxKXdnytVxwte8eS8eb8aqnoM6vI1jRv99bv5fjrwADANEE/DANZW5kc3RyZWFt
DWVuZG9iag0xMjUgMCBvYmoNPDwvQ1MvRGV2aWNlQ01ZSy9JIGZhbHNlL0sgZmFsc2UvUy9UcmFu
c3BhcmVuY3kvVHlwZS9Hcm91cD4+DWVuZG9iag0xMjYgMCBvYmoNPDwvQkJveFs2MzMuODg4IDI2
Mi45NTMgNjgwLjkxMyAyMzEuODU3XS9GaWx0ZXIvRmxhdGVEZWNvZGUvR3JvdXAgMTI1IDAgUi9M
ZW5ndGggNjMyL01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgMC4wIDAuMF0vUmVzb3VyY2VzPDwvRXh0
R1N0YXRlPDwvR1MwIDkyIDAgUj4+Pj4vU3VidHlwZS9Gb3JtPj5zdHJlYW0NCkiJbFRJjlUxDNy/
U+QCP3iIh5yAdYsFB0AMEg1Sw/0l7MoDGgm19H6q7diusp2Xy1VnZg5RnmkxVkySNQrR9vHj4/V+
fL9obudBM1jqa7n7vHN8vd68fUfj88/rZZS9/ni47fLzPaRCMVesD9+uNuE7U8eDpocOnkZrPM7P
+X64HjJV7bdNJ1Hel+5z+5zj4/z/XHj8E+3xJ9xJdWO67xDCfLqeXpftxZ/Fq+zmmX+rrsthXYTs
8dwFMlWIuXcguUdVq9zn1UfPODyCbMg0ja6d08eaBB6Rq85i0n5ruje0ImR15jY1O58ae+j0Q8Tn
LpoVSH08YppXpWWzBtu1gBTRckxcl0nlUUA9q6hoEXIu2gWW3Y4GcTtnAU9IGtW5QsG7VSPh4xoO
FTVWW42hsbcEOdngGwu+MZMcOFHcSoH+epBmI87blzdmiSFtIFRlbaeaQ5KWtrX1agGmQiGuzVyr
OGpp89zarGVdvKlAOG5e1EzKVKma128ZdQvGoG+c9qGMbCSBxFoao4XEwLFAcIU0ygAhQh+c7ylb
iKPtWXXU1FeqJKSCEJ349JsF9/vnuWfZV3Nm1gMXdszptkpTUXYsgPUSUmLwoisvtOJUYALVmSAl
TWEoLdazy+vIXnWVZWMHk/smVUsQyJBXCYCX/39LrCbV64Ko1+DEqy2pUhhNIPNTGHTns6kUsLGh
C/dA1sZU9dgp6s4JHpWybtCVDaG8GBUy43NVDDj59NXxTsRN4rwamrco2tkVWlfHFt4J2T1J6kcE
71YX3HE0wYKIntDeQM9eMMPRGLYWjfFOdJK+FGjOUmhq9ZI2qSL3BRI+Xb8EGAC+JATFDWVuZHN0
cmVhbQ1lbmRvYmoNMTI3IDAgb2JqDTw8L0NTL0RldmljZUNNWUsvSSBmYWxzZS9LIGZhbHNlL1Mv
VHJhbnNwYXJlbmN5L1R5cGUvR3JvdXA+Pg1lbmRvYmoNMTI4IDAgb2JqDTw8L0JCb3hbMjQ0LjM5
MyAtMjY5LjM0IDI5MS40MTggLTMwMC40MzVdL0ZpbHRlci9GbGF0ZURlY29kZS9Hcm91cCAxMjcg
MCBSL0xlbmd0aCA2MjkvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAwLjAgMC4wXS9SZXNvdXJjZXM8
PC9FeHRHU3RhdGU8PC9HUzAgOTIgMCBSPj4+Pi9TdWJ0eXBlL0Zvcm0+PnN0cmVhbQ0KSIlsVF2O
3jAIfM8pfIG4gDHYJ+jzqg89wKo/UreVtr2/1Bn8Ve1KVaQIYgwzA+T1Mvc+9mj3EOk+ZvPsYt6G
dtnRfn66PrYfl/Qd2qSnGt5zbdp7tW/Xu/cfpH35db02nOPRZjERkavdtmbX1Z6/Xzypd18Dr0hv
2qe8fT9f1gcQHG90kXUuPEwEHOuuryf4/jfD/SfRKfFw5XFBKsXn6+kN2NF9K/LYRnT6/gtXe04C
sN1eAE2Zqu+drBwLJQfud0+FGSsLf0rg2xwboHVF8y7En8th2jQEeY+gN1ebMJUHIBV9LESGTMRE
3yOYYmTLPoM1eZLoA5lbkuXCxQ1PItp6YMocsB3ftfscFTVLyAjDSazSLxG8eho1EtMKyyjJBnLj
jpYToLu6Bu10xmVfkuUu4vF1dB7llM2WI8xqXqhdMgHqgCCGS4zSQbuAvtXtwQuzL1yHtJD5BQK4
TwIFBSijJCCxYfvSIlB9xtG2ai+i2RYgQ7XqkeWmwyFhZwQ54KZTJSdzMEliQctgBySrwfHKMZwz
PrEJd4BxkQHhmxWriWqjyJoBLvrmVFzVy/Pak5BzZkQ/lA2VyTWSRYBJtHA8q/C0UlmFkkk3SAfX
Zsmgnqea07MHaaR8vm7ubWWaWp+H5LkS/x/5FLZSOfIYQJv+z4ZCpqonM4jTS2tCgpMHyWTRM2g3
xh/AuB0yjC5/Coohxf+kUGrpCmfW7JPPoru0fiecOGzHKK2lnLGOHEMqkPpyRr3EAeIaUSwB+Ufx
h7/z6FGSuY0z4nXFxxl4tRM7tU5LMrCoyapaXHeC8nFEnZNNwvq+XF9LwqfrtwADAC0Z+egNZW5k
c3RyZWFtDWVuZG9iag0xMjkgMCBvYmoNPDwvQ1MvRGV2aWNlQ01ZSy9JIGZhbHNlL0sgZmFsc2Uv
Uy9UcmFuc3BhcmVuY3kvVHlwZS9Hcm91cD4+DWVuZG9iag0xMzAgMCBvYmoNPDwvQkJveFsyMTku
OTUgLTMyMy40NjEgMjY2Ljk3NCAtMzU0LjU1Nl0vRmlsdGVyL0ZsYXRlRGVjb2RlL0dyb3VwIDEy
OSAwIFIvTGVuZ3RoIDYzMi9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIDAuMCAwLjBdL1Jlc291cmNl
czw8L0V4dEdTdGF0ZTw8L0dTMCA5MiAwIFI+Pj4+L1N1YnR5cGUvRm9ybT4+c3RyZWFtDQpIiWxU
S44dMQjc9yl8geeAwWCfIOtRFjnAKB8pk0iT3F9KFe7RZBE9qR+0MVQV0K/X0N33bA+b3ufM5tll
eDPtsqP9/nJ9br8u6Tu0SU8deM61ae/VflwfPn6S9u3P9dpwjp+24drVPZHSdjcRa88/L57Vsy/D
I9Kb9okzPt/s52t0s3l71kXWuXCbCDjWo96e4Md7Bn9znq9T4nblviCV4uv19C9cgBTfQOuzx57j
Ha32nKw/dnsBMmWmvneycCxUNNmwPRV2rCz8KYF30xZA64rmvajkcphjKoK8R9Cbq6EkhMWBZIte
l6LwR98WTIFn9hksGjJh7yDzkZRr4SIhSERbN6jEyeqO99p9nqhZQrLUAtDSL2PDyUGNZGiFZZRk
BuVwR8sJ8F1dg3Y647IvoKW7iMfX0dnKsU1H1wkcNTOUL5kClSwRJTKonik456x+G9WbfblTXUjw
AgncJ6FOGxRHyUHAEQfITw63VLZHdRjhbA3AoRzGkzJtOgYV2RxBDrjpJQ7Jg0wSDLoGO/SMjlcK
c875xDY8ApyLDCg/WLDaqMOK7RiAi85VWlUrz2tXQs7ZIHhTtlQmV0kWW5oEC8ezCs9ROqtQMunY
TbpjlgzqeaqVN27Oypsw3CrT1HptkudK/H/oPZCAXMARckDU9x2FSlVBZhCnl9RaEyR5kEzqfkbt
gQUAMC6IoE9w+WFQjCmSo0jthnC/8HnRujYw+HCX1ieFM4f9AHw5K2zYgyg5TCqQ+nJKvZZ97Poz
rAH5xyR/+DuPHounPuwMecW6nZFXPbFT67QkA4saLO4ynWqOmx5V+UUkMQXB7yXi0/VXgAEA/in6
2w1lbmRzdHJlYW0NZW5kb2JqDTEzMSAwIG9iag08PC9DUy9EZXZpY2VDTVlLL1MvVHJhbnNwYXJl
bmN5L1R5cGUvR3JvdXA+Pg1lbmRvYmoNMSAwIG9iag08PC9BcnRCb3hbMC4wIDAuMCA1OTUuMjc2
IDg0MS44OV0vQmxlZWRCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vQ29udGVudHMgMiAwIFIv
Q3JvcEJveFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9NZWRpYUJveFswLjAgMC4wIDU5NS4yNzYg
ODQxLjg5XS9QYXJlbnQgMjMgMCBSL1Jlc291cmNlczw8L0V4dEdTdGF0ZTw8L0dTMCA5OSAwIFIv
R1MxIDkyIDAgUi9HUzIgMyAwIFI+Pi9Gb250PDwvQzJfMCAxOSAwIFIvVDFfMCAyMSAwIFIvVDFf
MSAxMDIgMCBSL1RUMCAxMDEgMCBSL1RUMSAyMCAwIFIvVFQyIDE4IDAgUj4+L1Byb2NTZXRbL1BE
Ri9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDE1IDAgUi9NQzEgMTcgMCBSPj4+Pi9Sb3RhdGUgMC9T
dHJ1Y3RQYXJlbnRzIDEvVHJpbUJveFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9UeXBlL1BhZ2U+
Pg1lbmRvYmoNMiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI1ODY2Pj5zdHJl
YW0NCkiJdJdLjxzHEYTv8yv6SB66trLeBQg6UJQEyxYggwv4YPhAr1f0QyQk2Zahf+8vqnt2q7dH
IIjZ6emqysqMiIy8e/fj+0/LZ5/d/eH9pw/Lq8dP69dvXt99+8Xv3i7BL59//ubtF8vlzf3FL/pn
y78ud1+/88uHf1/u7u/14P57fsvLmvk5t+B8CG0JwaUU0nL/8fLnV+8ef3xdl1f/eW2RAz7+9fHn
1/z0iv2tv/7L/TeXL+8vX37LMXdf/ePDf39+VDRbAHYN4O67H94/PP7tu7dfLfzkl/HQO/NNYbnE
f29hC84U3E9EtgUcLDrfQliyVYKKYXn4OG7z8dKMXwg9dRd6WX64ZHMlLWuPLkR9D+air8tqMTpr
nSfFdV94wC/V65W1ulr0ijdnVQ+s8S7vsHvP45VIpC0uaw0u1O1Jcy0FniRnMelJai5Xzi56J+hJ
yATTiS44y3Hs7F3LxGt6V2f9/fL95Y+Xny6huZjK0gkqLzkkl3xfig+utrD8/Hj50/JpyohxzaQL
FwsuFrPnjHBCrbZElwobVVfKkp0vffn1sn1bs6tRweTkalImqmtdmeECVckLnaTqSsm7UhV/diHp
RjHwgFQVCuYVfiguKVPkJTU9YDPj+LU016M2NWWO79GVoFM92xVnfbr8VOjkYiO4wjax9vZ8rcCF
CJLgUzJF0l0eRaPQo0SRyymz4LalrAecSGLWaLzZNihk6qKqpIGE5DxJXnneUtuA0FPeHmz1c9nz
HfSNmr8MN2ZljtNTiy4HGPEU7mrd9c5hwKSmASrlrGzpjiXtECrkKJBly7fSQS57TktsmQiB5tP2
JJFndZQgUy1dvAvp/cY2lMLD0yW0cV6ZoqTAjRsWsj5AvX+HHLCxbogliOMTuBD5ay19T/3LAw0A
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
Lyvn1FFAeoH3iSA13Qk90OMXtokUm904uVoo1rq5Ja8w89DRbBNCNwvL6VBJ9Uu5RETztDVIRKgC
V5onMr4giFZRwmCQuGsk/cqN61MvMUfDRqgvha4CIw3XO8CnCS7psKLqPwdJ1hZkFZNkcoi8+SiR
osK0RytCi1AeXeUc4+jT0xZ+qqALPke/N2wxehT5KqAdxRDNHNYMo4ZP/0rNu1ndXpLTRoxnKUU+
nc2JRPqnc5wdp+Ii87d1hCY5tk8hsVKphhkS+NT42fHI0iGghGTA1ZoMGBGAGezdPEWvEt1ihiDN
yTAGqcTYddkCXeoFHoF1gOX8OFGQgMxV4rJYGBIT70qy3g8jcFYefAJVsnRildtJZU0cn1VwMeYR
EjhCG2NmMOAotLmEgLvO1VGwKjXtjFlzBm3c90dOX/I8E0e0Pk5LbGhxZkJk0ks4JoqdImYceeQc
9ByWZjYv5eq4Am6plnk7j27OCu/l66vF/lz8/Plwvzx7dvHj4f79sr25P3t1ubt4ffX9iwX69vnz
yxf46M3mcr+52Pt/IGnL/t0mCKpZF/bkI0BGNrcleqa67O82v2yvdm3ZHu5+e7h9+34HitveLNe3
X3bAsmX77+V6FxwX1D9fHnZYbnuz+3X/w+bl/q/3lufetLO9s42RLsmyaqrx7GMnjYDEivA8j82N
jWFPh7vPX//4bnm589jJ4Y8vy993gLvtp8Pb75bjZ1eXOP1P/1UIigsBAgwAKwNPqQ1lbmRzdHJl
YW0NZW5kb2JqDTMgMCBvYmoNPDwvQUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgZmFsc2Uv
T1BNIDAvU0EgdHJ1ZS9TTWFzay9Ob25lL1R5cGUvRXh0R1N0YXRlL2NhIDEuMC9vcCBmYWxzZT4+
DWVuZG9iag00IDAgb2JqDTw8L09yZGVyaW5nKElkZW50aXR5KS9SZWdpc3RyeShBZG9iZSkvU3Vw
cGxlbWVudCAwPj4NZW5kb2JqDTUgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAy
ND4+c3RyZWFtDQpIiZrAwMEAAoytUg4MpAJGgAADAFLGAXoNZW5kc3RyZWFtDWVuZG9iag02IDAg
b2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNTE4Ny9MZW5ndGgxIDEwMzYzPj5zdHJl
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
Q5zX3w396BbnEFMudKtac0ae3sta3k0e+OjTAtrkv3ovrkh+JL7DZxGexfzERXTjIu+FK8mvKL5X
NfLZncnLxo4us84lq6ntGBQHqO9NXpIlySRu/hf4v7T1uJRuopRtSartkzlsbabtv9VutVvtZpoq
vtX+1wb+cZO7sRMOU/ckqvk98ih7+7J8qVrowmf1Kv4Uay/+RXvVtMQNRdGTmZdMlEEoBauli9EW
aceOtLoTF480rTq1YkeFsbgwTVKNJM5gR+105UaYTftXnCCIiIv5I/4Cf4SeFx+WfmxcNCEv5553
77n3PkheorEgfqQx39X8Ks/DEH2c3sZbjQ1MGMca57gnX2qcJ3+lseD+PqyxRTxbnVtYrVXHa14c
HnjtynKYRE4jDu5H4w0aaKLN0iNsYgst/lo9h48XvE/iFV7zKqFyZ02x8RI+wKNnK0M+5rGDkApq
bGfxiZ6X1I7wjXyMr8S7RB4CLoLPvAmzKLUlcp/p0SCeJ9ukHfP0sqqUXvQXK1mtyhKR+V2tRhzo
fpTiO+wx6w6+Z/ER57xMcyurSmWV9P7yD69fuiUckGsxRumH7EX1u88xyDI0GKlWY5FRCdkSRumn
lEJGelyVUVQxhwWskq9i/I/ZCpaJE+ZwqBVTVWXZZE23/d4v9n96v+8+qdVTw/i5dg7Dhg2/maLg
nAKzU09NlJUhi5/Eopi2y9ZQwbQ1tZFbybnWpBgxM6roXAz2HvYGev09S6ZmH6kHzqlUhzLycNNn
RudjvSs79TQfuOmYss7tQz4AsuOv1JXLGg9ZXBdLYsZ+aT0umMXymXF91BU/0hzcEzOw4Lo3AgwA
JQ/NVw1lbmRzdHJlYW0NZW5kb2JqDTcgMCBvYmoNPDwvQXNjZW50IDkyNy9DSURTZXQgNSAwIFIv
Q2FwSGVpZ2h0IDcxMC9EZXNjZW50IC0yMjcvRmxhZ3MgNC9Gb250QkJveFstMjA3IC0yMjcgMTMx
MCA5MjddL0ZvbnRGYW1pbHkoWExIR09IK1JhbGV3YXktU2VtaUJvbGQpL0ZvbnRGaWxlMiA2IDAg
Ui9Gb250TmFtZS9KSExVUkorUmFsZXdheS1TZW1pQm9sZC9Gb250U3RyZXRjaC9Ob3JtYWwvRm9u
dFdlaWdodCA2MDAvSXRhbGljQW5nbGUgMC9TdGVtViAxMDgvVHlwZS9Gb250RGVzY3JpcHRvci9Y
SGVpZ2h0IDUyMz4+DWVuZG9iag04IDAgb2JqDTw8L0Jhc2VGb250L0pITFVSSitSYWxld2F5LVNl
bWlCb2xkL0NJRFN5c3RlbUluZm8gNCAwIFIvQ0lEVG9HSURNYXAvSWRlbnRpdHkvRFcgMTAwMC9G
b250RGVzY3JpcHRvciA3IDAgUi9TdWJ0eXBlL0NJREZvbnRUeXBlMi9UeXBlL0ZvbnQvV1szWzI0
N10yMFs2NjRdNzFbNTU5IDYzN103N1syNDJdNzlbNTQ4XTgzWzYwMiA2MjhdODZbMzc0XTg5WzYw
OV00OTVbNjIwXV0+Pg1lbmRvYmoNOSAwIG9iag1bOCAwIFJdDWVuZG9iag0xMCAwIG9iag08PC9G
aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI4Nz4+c3RyZWFtDQpIiVyRTWrDMBCF9zrFLJNFkO3Y
SQPG0CQ1eNEf6vQAjjROBbUsZHnh21fShBQqkOBj5j2NnvipOTdaOeAfdhQtOuiVlhancbYC4Yo3
pVmagVTC3SmeYugM417cLpPDodH9yMoS+KcvTs4usHqW4xXXjL9biVbpG6y+Tu0aeDsb84MDagcJ
VBVI7L3Ra2feugGBR9mmkb6u3LLxmr+Oy2IQssgpDSNGiZPpBNpO35CViV8VlLVfFUMt/9XTu+za
i+/Oxvatb0+SLKkCpTlRHSnfR9ptiZ6IcqIz0YGoJjpGKshzRy4Fee7phmJHlBEdiIpA6UtwqY/+
BWH0+4zhET5reCQkZmt9OPFDYiohD6Xx8WdmNOBVYbNfAQYALmCLRA1lbmRzdHJlYW0NZW5kb2Jq
DTExIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyNy9MZW5ndGgxIDEzODU1
Pj5zdHJlYW0NCkiJtFZ9bBzFFX8ze3dx/BHH8QfgTbeztz7H+PbOjokdh7qQ3vpsHAdy/oi6G4t2
L2c7qYjBmICSSkVBopBcKhVSWqSqf9APIUWk1azToESkNDQQaD4ohbapWtLz2ck/tLSiLagltbdv
9s6OnTipqNo93byZ997MvN/72t059vAQlMAekCCxqa+hCXLPu/i3UyPJ0bZHTuKUtAFIT6Ue2cly
Yt9ZHN4YHt02klv7nwEoqdy2Y/fw6N4TfwdYcRBgecv2oeSg77XvPAwQzKBSy3Zk5PS1Shxqto/s
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
zdBHxk9zLXK9d3lNqRFy9JS7MUCvSbIBNNJORkrTM8FdaWSa24N+jJDvQ/s/vUGEGSPLaDL6OOdS
XufOfHbTSpTPb2mF93u7cnnZH40VNG1pdB2aDRvJ6QI84VXgUneTiTbZcLzXjAHjpN1m1XlM26Xi
+rAesbqMQ6aivOG3tUVfcV9xT9FyCmYVqZrwqiOLbAhECoe1xaHYsrMYK4hUpNAsW+v2Ax56ZzE5
HJMmoyyO94YxaJy2O6yDHtPbtqaVHi4bTwo6Im/MlIVI5JcAAwAye7biDWVuZHN0cmVhbQ1lbmRv
YmoNMTIgMCBvYmoNPDwvQXNjZW50IDkyMy9DYXBIZWlnaHQgNzEwL0Rlc2NlbnQgLTIyOS9GbGFn
cyAzMi9Gb250QkJveFstMjAyIC0yMjkgMTMwOSA5MjNdL0ZvbnRGYW1pbHkoUmFsZXdheSkvRm9u
dEZpbGUyIDExIDAgUi9Gb250TmFtZS9KSExVUkorUmFsZXdheS1Cb2xkL0ZvbnRTdHJldGNoL05v
cm1hbC9Gb250V2VpZ2h0IDcwMC9JdGFsaWNBbmdsZSAwL1N0ZW1WIDEzNi9UeXBlL0ZvbnREZXNj
cmlwdG9yL1hIZWlnaHQgNTI0Pj4NZW5kb2JqDTEzIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29k
ZS9MZW5ndGggMzU3Pj5zdHJlYW0NCkiJXJLLasMwEEX3+opZNovgVyIlYAyNk4AXfVC3H+BI49RQ
y0J2Fv77ajwhhQpsHaGZqzsaRWV1rGw3QfTuB13jBG1njcdxuHmNcMFrZ0WSgun0dF8tf903TkQh
uZ7HCfvKtoPIc4g+wuY4+Rmens1wwZWI3rxB39krPH2V9Qqi+ubcD/ZoJ4ihKMBgG4ReGvfa9AjR
krauTNjvpnkdcv4iPmeHkC7rhM3oweDoGo2+sVcUeRxGAfk5jEKgNf/20x2nXVr93XiRpxQcx2EK
fGI+EZ+Zg0iecUxGMVnCnBCnzCnxhnlDvGXeEktmSbxj3gWWrCNJR7KOJB2ZMWfErCNJR7KOJB2p
mBXxnnlPfGA+EJfMJfGR+UjMNUqqUXKNkmpU7EGRB8UeFHlQXJeiuhT7UeRHsQdFHhSfFSa68PvN
0tWHFwKPvuqb96GlyzNaekld7Cw+XpobHIQs+sSvAAMAWJyu7Q1lbmRzdHJlYW0NZW5kb2JqDTE0
IDAgb2JqDTw8L0xlbmd0aCAyMDI0NS9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0N
Cjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4
OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3Jl
IDUuNi1jMTQzIDc5LjE2MTIxMCwgMjAxNy8wOC8xMS0xMDoyODozNiAgICAgICAgIj4KICAgPHJk
ZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgt
bnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1s
bnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxu
czp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnht
cE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpz
dFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAg
ICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9S
ZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RNZnM9Imh0dHA6Ly9ucy5hZG9iZS5j
b20veGFwLzEuMC9zVHlwZS9NYW5pZmVzdEl0ZW0jIgogICAgICAgICAgICB4bWxuczppbGx1c3Ry
YXRvcj0iaHR0cDovL25zLmFkb2JlLmNvbS9pbGx1c3RyYXRvci8xLjAvIgogICAgICAgICAgICB4
bWxuczp4bXBUUGc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC90L3BnLyIKICAgICAgICAg
ICAgeG1sbnM6c3REaW09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9EaW1lbnNp
b25zIyIKICAgICAgICAgICAgeG1sbnM6c3RGbnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
MC9zVHlwZS9Gb250IyIKICAgICAgICAgICAgeG1sbnM6eG1wRz0iaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wL2cvIgogICAgICAgICAgICB4bWxuczpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20v
cGRmLzEuMy8iPgogICAgICAgICA8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0
PgogICAgICAgICA8ZGM6dGl0bGU+CiAgICAgICAgICAgIDxyZGY6QWx0PgogICAgICAgICAgICAg
ICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPkNhbWJyaWRnZV9jaXR5X2NlbnRyZTwvcmRm
OmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6dGl0bGU+CiAgICAgICAg
IDx4bXA6TWV0YWRhdGFEYXRlPjIwMTktMDYtMjRUMTI6MTM6MjQrMDE6MDA8L3htcDpNZXRhZGF0
YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE5LTA2LTI0VDEyOjEzOjI0KzAxOjAw
PC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMDUtMTlUMTI6
NDM6MDcrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFk
b2JlIElsbHVzdHJhdG9yIENDIDIwMTQgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAg
ICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDo5NjE1ZDhlYi03MWRlLWZjNDYtOTljMi02MzVh
NGMxZmM2ZjA8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnht
cC5kaWQ6NzZkZTc3M2ItMjMzYS00YzRlLTk5NzktOTYyMzdiMzIzNWEwPC94bXBNTTpEb2N1bWVu
dElEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnV1aWQ6NUQyMDg5MjQ5M0JG
REIxMTkxNEE4NTkwRDMxNTA4Qzg8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAg
PHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29mOnBkZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAg
ICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAg
ICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnV1aWQ6M2M1MWM3OGItOWFhMy0wMTRlLWEyNWEtNWU0
M2RjZGU2NDJhPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJ
RD54bXAuZGlkOkY3N0YxMTc0MDcyMDY4MTE4M0QxRTM1RjE5OTQzODlBPC9zdFJlZjpkb2N1bWVu
dElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPnV1aWQ6NUQyMDg5MjQ5
M0JGREIxMTkxNEE4NTkwRDMxNTA4Qzg8L3N0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAg
ICAgICAgPHN0UmVmOnJlbmRpdGlvbkNsYXNzPnByb29mOnBkZjwvc3RSZWY6cmVuZGl0aW9uQ2xh
c3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5
PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0
RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpG
NzdGMTE3NDA3MjA2ODExOEE2RENEN0VCMDlFMkY2RDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAg
ICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxMy0wNy0yNFQxNjo1NTowMyswMTowMDwvc3RFdnQ6
d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgSWxsdXN0
cmF0b3IgQ1M1PC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6
Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg
ICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAg
ICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAg
PHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo3NmRlNzczYi0yMzNhLTRjNGUtOTk3OS05NjIzN2Iz
MjM1YTA8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIw
MTUtMDUtMTlUMTI6NDM6MDUrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxz
dEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIElsbHVzdHJhdG9yIENDIDIwMTQgKE1hY2ludG9zaCk8
L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88
L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3Jk
ZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHhtcE1NOk1hbmlmZXN0
PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdE1mczpsaW5rRm9ybT5FbWJlZEJ5
UmVmZXJlbmNlPC9zdE1mczpsaW5rRm9ybT4KICAgICAgICAgICAgICAgICAgPHN0TWZzOnJlZmVy
ZW5jZSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgIDxzdFJl
ZjpmaWxlUGF0aD4vVXNlcnMvZGVic21pdGgvRHJvcGJveCAoRGVzaWduIGFuZCBEZWxpdmVyeSkv
RGVzaWduIGFuZCBEZWxpdmVyeSBUZWFtIEZvbGRlci9fTmV3X0JyYW5kL0xvZ29zL0NNWUsvRVBT
L01hc3Rlci9BUlVfTG9nb19NYXN0ZXJfQ01ZS19ZZWxsb3dfQVcuZXBzPC9zdFJlZjpmaWxlUGF0
aD4KICAgICAgICAgICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDowZTY1OTM0
NC1hODJjLTQxMGEtYjdhYS01NDhjNzI3ZTI1MWE8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAg
ICAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6MGU2NTkzNDQtYTgyYy00MTBh
LWI3YWEtNTQ4YzcyN2UyNTFhPC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8
L3N0TWZzOnJlZmVyZW5jZT4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwv
cmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpNYW5pZmVzdD4KICAgICAgICAgPHhtcE1NOkluZ3Jl
ZGllbnRzPgogICAgICAgICAgICA8cmRmOkJhZz4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6
cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdFJlZjpmaWxlUGF0aD4v
VXNlcnMvZGVic21pdGgvRHJvcGJveCAoRGVzaWduIGFuZCBEZWxpdmVyeSkvRGVzaWduIGFuZCBE
ZWxpdmVyeSBUZWFtIEZvbGRlci9fTmV3X0JyYW5kL0xvZ29zL0NNWUsvRVBTL01hc3Rlci9BUlVf
TG9nb19NYXN0ZXJfQ01ZS19ZZWxsb3dfQVcuZXBzPC9zdFJlZjpmaWxlUGF0aD4KICAgICAgICAg
ICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDowZTY1OTM0NC1hODJjLTQxMGEtYjdh
YS01NDhjNzI3ZTI1MWE8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAgICAgICAgICAgIDxzdFJl
ZjppbnN0YW5jZUlEPnhtcC5paWQ6MGU2NTkzNDQtYTgyYy00MTBhLWI3YWEtNTQ4YzcyN2UyNTFh
PC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAg
PC9yZGY6QmFnPgogICAgICAgICA8L3htcE1NOkluZ3JlZGllbnRzPgogICAgICAgICA8aWxsdXN0
cmF0b3I6VHlwZT5Eb2N1bWVudDwvaWxsdXN0cmF0b3I6VHlwZT4KICAgICAgICAgPGlsbHVzdHJh
dG9yOlN0YXJ0dXBQcm9maWxlPlByaW50PC9pbGx1c3RyYXRvcjpTdGFydHVwUHJvZmlsZT4KICAg
ICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlT3ZlcnByaW50PkZhbHNlPC94bXBUUGc6SGFzVmlzaWJs
ZU92ZXJwcmludD4KICAgICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlVHJhbnNwYXJlbmN5PkZhbHNl
PC94bXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT4KICAgICAgICAgPHhtcFRQZzpOUGFnZXM+
MTwveG1wVFBnOk5QYWdlcz4KICAgICAgICAgPHhtcFRQZzpNYXhQYWdlU2l6ZSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdERpbTp3PjIwOS45OTk5Mjc8L3N0RGltOnc+
CiAgICAgICAgICAgIDxzdERpbTpoPjI5Ni42ODYxMTE8L3N0RGltOmg+CiAgICAgICAgICAgIDxz
dERpbTp1bml0Pk1pbGxpbWV0ZXJzPC9zdERpbTp1bml0PgogICAgICAgICA8L3htcFRQZzpNYXhQ
YWdlU2l6ZT4KICAgICAgICAgPHhtcFRQZzpGb250cz4KICAgICAgICAgICAgPHJkZjpCYWc+CiAg
ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg
ICAgICAgICA8c3RGbnQ6Zm9udE5hbWU+U3RhZ1NhbnMtQm9vazwvc3RGbnQ6Zm9udE5hbWU+CiAg
ICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmFtaWx5PlN0YWcgU2Fuczwvc3RGbnQ6Zm9udEZh
bWlseT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZvbnRGYWNlPkJvb2s8L3N0Rm50OmZvbnRG
YWNlPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Zm9udFR5cGU+T3BlbiBUeXBlPC9zdEZudDpm
b250VHlwZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OnZlcnNpb25TdHJpbmc+VmVyc2lvbiAx
LjAwMDtQUyAwMDEuMDAxO2hvdGNvbnYgMS4wLjUwO21ha2VvdGYubGliMi4wLjE2OTcwPC9zdEZu
dDp2ZXJzaW9uU3RyaW5nPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Y29tcG9zaXRlPkZhbHNl
PC9zdEZudDpjb21wb3NpdGU+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmlsZU5hbWU+
U3RhZ1NhbnMtQm9vay5vdGY8L3N0Rm50OmZvbnRGaWxlTmFtZT4KICAgICAgICAgICAgICAgPC9y
ZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgog
ICAgICAgICAgICAgICAgICA8c3RGbnQ6Zm9udE5hbWU+UmFsZXdheS1TZW1pQm9sZDwvc3RGbnQ6
Zm9udE5hbWU+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmFtaWx5PlJhbGV3YXkgU2Vt
aUJvbGQ8L3N0Rm50OmZvbnRGYW1pbHk+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmFj
ZT5SZWd1bGFyPC9zdEZudDpmb250RmFjZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OmZvbnRU
eXBlPlRydWVUeXBlPC9zdEZudDpmb250VHlwZT4KICAgICAgICAgICAgICAgICAgPHN0Rm50OnZl
cnNpb25TdHJpbmc+VmVyc2lvbiAzLjAwMGc7IHR0ZmF1dG9oaW50ICh2MS41KSAtbCA4IC1yIDI4
IC1HIDI4IC14IDE0IC1EIGxhdG4gLWYgY3lybCAtdyBHIC1jIC1YICIiPC9zdEZudDp2ZXJzaW9u
U3RyaW5nPgogICAgICAgICAgICAgICAgICA8c3RGbnQ6Y29tcG9zaXRlPkZhbHNlPC9zdEZudDpj
b21wb3NpdGU+CiAgICAgICAgICAgICAgICAgIDxzdEZudDpmb250RmlsZU5hbWU+UmFsZXdheS1T
ZW1pQm9sZC50dGY8L3N0Rm50OmZvbnRGaWxlTmFtZT4KICAgICAgICAgICAgICAgPC9yZGY6bGk+
CiAgICAgICAgICAgIDwvcmRmOkJhZz4KICAgICAgICAgPC94bXBUUGc6Rm9udHM+CiAgICAgICAg
IDx4bXBUUGc6UGxhdGVOYW1lcz4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAg
IDxyZGY6bGk+Q3lhbjwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPk1hZ2VudGE8L3Jk
ZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5ZZWxsb3c8L3JkZjpsaT4KICAgICAgICAgICAg
ICAgPHJkZjpsaT5CbGFjazwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAg
IDwveG1wVFBnOlBsYXRlTmFtZXM+CiAgICAgICAgIDx4bXBUUGc6U3dhdGNoR3JvdXBzPgogICAg
ICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJS
ZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDx4bXBHOmdyb3VwTmFtZT5EZWZhdWx0IFN3YXRj
aCBHcm91cDwveG1wRzpncm91cE5hbWU+CiAgICAgICAgICAgICAgICAgIDx4bXBHOmdyb3VwVHlw
ZT4wPC94bXBHOmdyb3VwVHlwZT4KICAgICAgICAgICAgICAgICAgPHhtcEc6Q29sb3JhbnRzPgog
ICAgICAgICAgICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJk
ZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAg
IDx4bXBHOnN3YXRjaE5hbWU+V2hpdGU8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzpjeWFuPjAuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBHOnllbGxvdz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6Ymxh
Y2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAg
ICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5CbGFjazwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT4wLjAwMDAwMDwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6
eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4xMDAuMDAwMDAw
PC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAg
ICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz05IE09MjkgWT02NiBLPTI0PC94
bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJP
Q0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEw
MC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9k
ZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+
OS4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFn
ZW50YT4yOC45OTk5OTk8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6eWVsbG93PjY2LjAwMDAwMzwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmJsYWNrPjIzLjk5OTk5OTwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPkM9NzMgTT0xMDAgWT0wIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjczLjAwMDAwMjwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEwMC4wMDAwMDA8L3htcEc6bWFnZW50
YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjAuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8
L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTEwMCBNPTcxIFk9MTAgSz00Nzwv
eG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBS
T0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4x
MDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1v
ZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFu
PjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bWFnZW50YT43MC45OTk5OTg8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPHhtcEc6eWVsbG93PjEwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOmJsYWNrPjQ3LjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAg
ICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRm
OnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpz
d2F0Y2hOYW1lPkM9ODYgTT04IFk9MCBLPTA8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj44Ni4wMDAwMDE8L3htcEc6Y3lhbj4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT44LjAwMDAwMDwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6
eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwv
eG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAg
ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTE5IFk9ODkgSz0wPC94bXBH
OnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VT
UzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4w
MDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5D
TVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT4xOS4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6eWVsbG93Pjg4Ljk5OTk5OTwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOmJsYWNrPjAuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAg
ICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5h
bWU+Qz0yNyBNPTAgWT0xMDAgSz0zPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOmN5YW4+MjcuMDAwMDAxPC94bXBHOmN5YW4+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjEwMC4wMDAwMDA8L3htcEc6eWVs
bG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4zLjAwMDAwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MjcgTT0wIFk9MTAwIEs9NjA8L3htcEc6
c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNT
PC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAw
MDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNN
WUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4yNy4w
MDAwMDE8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT4wLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzp5ZWxsb3c+MTAwLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOmJsYWNrPjYwLjAwMDAwMjwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAg
ICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNl
VHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hO
YW1lPkM9MiBNPTEwMCBZPTg1IEs9NjwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpjeWFuPjIuMDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2VudGE+MTAwLjAwMDAwMDwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+ODUuMDAwMDAyPC94bXBHOnll
bGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+Ni4wMDAwMDA8L3ht
cEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAg
ICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5DPTkgTT0yOSBZPTY2IEs9MjQgMjwveG1w
Rzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NF
U1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAu
MDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+
Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjku
MDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2Vu
dGE+MjguOTk5OTk5PC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnllbGxvdz42Ni4wMDAwMDM8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpibGFjaz4yMy45OTk5OTk8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAg
ICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJz
ZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNo
TmFtZT5BUlUgTGlnaHQgQmx1ZSBSR0I8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj42Ni44MzI5ODk8L3htcEc6Y3lhbj4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50YT43LjEwMTU0ODwveG1wRzptYWdlbnRhPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+Mi40MzUzNDA8L3htcEc6eWVs
bG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1w
RzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkFSVSBMaWdodCBCbHVlIENNWUs8L3htcEc6
c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNT
PC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAw
MDAwMDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNN
WUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj42Ny4w
MDAwMDI8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT4xLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1w
Rzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAg
ICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlw
ZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1l
PkM9MCBNPTE5IFk9ODkgSz0wPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzp0aW50PjUzLjU5ODIyNDwveG1wRzp0aW50PgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICA8eG1wRzptYWdlbnRhPjE5LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+ODguOTk5OTk5PC94bXBHOnllbGxvdz4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+MC4wMDAwMDA8L3htcEc6Ymxh
Y2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAg
ICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5BTFNTIENNWUs8L3htcEc6c3dhdGNoTmFtZT4KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFu
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjMxLjk5OTk5OTwveG1w
RzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+ODcuMDAw
MDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+
MC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvcmRmOmxpPgog
ICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dhdGNoTmFtZT5BTFNTIENNWUs8L3ht
cEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9D
RVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+NDUu
MzUwMzU4PC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+
Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjAu
MDAwMDAwPC94bXBHOmN5YW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1hZ2Vu
dGE+MzEuOTk5OTk5PC94bXBHOm1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4
bXBHOnllbGxvdz44Ny4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAg
ICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAg
ICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNl
VHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hO
YW1lPkM9MTAwIE09OTAgWT0xMyBLPTcxPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjg5Ljk5OTk5ODwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MTMuMDAwMDAwPC94bXBH
OnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NzAuOTk5OTk4
PC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAg
ICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+Qz0xMDAgTT0zMSBZPTAgSz0wPC94
bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJP
Q0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEw
MC4wMDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9k
ZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+
MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpt
YWdlbnRhPjMxLjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6eWVsbG93PgogICAgICAgICAgICAgICAgICAg
ICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPkM9NiBNPTEwMCBZPTU1IEs9Mjg8L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6dHlwZT5QUk9DRVNTPC94bXBHOnR5cGU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnRpbnQ+MTAwLjAwMDAwMDwveG1wRzp0aW50PgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptb2RlPkNNWUs8L3htcEc6bW9kZT4KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj42LjAwMDAwMDwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjEwMC4wMDAwMDA8L3htcEc6bWFnZW50
YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6eWVsbG93PjU1LjAwMDAwMTwveG1w
Rzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjI4LjAwMDAw
MDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAg
ICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MTAwIE09NCBZPTU2IEs9ODwv
eG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBS
T0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6dGludD4x
MDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1v
ZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFu
PjEwMC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6
bWFnZW50YT40LjAwMDAwMDwveG1wRzptYWdlbnRhPgogICAgICAgICAgICAgICAgICAgICAgICAg
ICA8eG1wRzp5ZWxsb3c+NTYuMDAwMDAwPC94bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPHhtcEc6YmxhY2s+OC4wMDAwMDA8L3htcEc6YmxhY2s+CiAgICAgICAgICAgICAg
ICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpw
YXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6c3dh
dGNoTmFtZT5DPTgwIE09OTkgWT0wIEs9MDwveG1wRzpzd2F0Y2hOYW1lPgogICAgICAgICAgICAg
ICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPHhtcEc6dGludD4xMDAuMDAwMDAwPC94bXBHOnRpbnQ+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjgwLjAwMDAwMTwveG1wRzpjeWFuPgogICAgICAg
ICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjk5LjAwMDAwMTwveG1wRzptYWdlbnRh
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MC4wMDAwMDA8L3htcEc6
eWVsbG93PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpibGFjaz4wLjAwMDAwMDwv
eG1wRzpibGFjaz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAg
ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPkM9MCBNPTgyIFk9OTQgSz0yPC94bXBH
OnN3YXRjaE5hbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VT
UzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4w
MDAwMDA8L3htcEc6dGludD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5D
TVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MC4w
MDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFnZW50
YT44MS45OTk5OTk8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHht
cEc6eWVsbG93Pjk0LjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDx4bXBHOmJsYWNrPjIuMDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAg
ICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICAg
ICAgICAgICA8L3htcEc6Q29sb3JhbnRzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg
ICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgICAg
IDxwZGY6UHJvZHVjZXI+QWRvYmUgUERGIGxpYnJhcnkgMTEuMDA8L3BkZjpQcm9kdWNlcj4KICAg
ICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tl
dCBlbmQ9InIiPz4NZW5kc3RyZWFtDWVuZG9iag0xNSAwIG9iag08PC9NZXRhZGF0YSAxNCAwIFI+
Pg1lbmRvYmoNMTYgMCBvYmoNPDwvTGVuZ3RoIDcyNzUvU3VidHlwZS9YTUwvVHlwZS9NZXRhZGF0
YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6
a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9i
ZSBYTVAgQ29yZSA1LjYtYzE0MyA3OS4xNjEyMTAsIDIwMTcvMDgvMTEtMTA6Mjg6MzYgICAgICAg
ICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y
ZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAg
ICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAg
ICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAg
ICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAg
ICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJj
ZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x
LjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmlsbHVzdHJhdG9yPSJo
dHRwOi8vbnMuYWRvYmUuY29tL2lsbHVzdHJhdG9yLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnht
cFRQZz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3QvcGcvIgogICAgICAgICAgICB4bWxu
czpzdERpbT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL0RpbWVuc2lvbnMjIgog
ICAgICAgICAgICB4bWxuczp4bXBHPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvZy8iCiAg
ICAgICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyI+CiAgICAg
ICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcG9zdHNjcmlwdDwvZGM6Zm9ybWF0PgogICAgICAg
ICA8ZGM6dGl0bGU+CiAgICAgICAgICAgIDxyZGY6QWx0PgogICAgICAgICAgICAgICA8cmRmOmxp
IHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlByaW50PC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFs
dD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICAgPGRjOmNyZWF0b3I+CiAgICAgICAgICAg
IDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPkFkcmlhbiBWYXVnaGFuPC9yZGY6bGk+
CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC9kYzpjcmVhdG9yPgogICAgICAgICA8
eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA1LTE1VDEyOjM3OjE1KzAxOjAwPC94bXA6TWV0YWRhdGFE
YXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxOS0wNS0xNVQxMjozNzoxNSswMTowMDwv
eG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE5LTA1LTE1VDEyOjM3
OjE1KzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9i
ZSBJbGx1c3RyYXRvciBDQyAyMy4wIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAg
ICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6MGU2NTkzNDQtYTgyYy00MTBhLWI3YWEtNTQ4
YzcyN2UyNTFhPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54
bXAuZGlkOjBlNjU5MzQ0LWE4MmMtNDEwYS1iN2FhLTU0OGM3MjdlMjUxYTwveG1wTU06RG9jdW1l
bnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD51dWlkOjVEMjA4OTI0OTNC
RkRCMTE5MTRBODU5MEQzMTUwOEM4PC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAg
IDx4bXBNTTpSZW5kaXRpb25DbGFzcz5wcm9vZjpwZGY8L3htcE1NOlJlbmRpdGlvbkNsYXNzPgog
ICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmM4ODAxNTQ0LWNkODEtNGNjYy1hOTAx
LTRhYTFjNTY0NjdkYjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3Vt
ZW50SUQ+eG1wLmRpZDpjODgwMTU0NC1jZDgxLTRjY2MtYTkwMS00YWExYzU2NDY3ZGI8L3N0UmVm
OmRvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+dXVpZDo1
RDIwODkyNDkzQkZEQjExOTE0QTg1OTBEMzE1MDhDODwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
PgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+cHJvb2Y6cGRmPC9zdFJlZjpyZW5k
aXRpb25DbGFzcz4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1N
Okhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJk
ZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5z
YXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54
bXAuaWlkOjcwZjVhZGUyLTVmNDUtNDA5OS05YTk2LWVmMWZhNGU3Yzc3Mzwvc3RFdnQ6aW5zdGFu
Y2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wNS0xNVQxMToyMjowNisw
MTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+
QWRvYmUgSWxsdXN0cmF0b3IgQ0MgMjMuMCAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2Vu
dD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAg
ICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlw
ZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2
dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MGU2
NTkzNDQtYTgyYy00MTBhLWI3YWEtNTQ4YzcyN2UyNTFhPC9zdEV2dDppbnN0YW5jZUlEPgogICAg
ICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE5LTA1LTE1VDEyOjM3OjE1KzAxOjAwPC9zdEV2
dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbGx1
c3RyYXRvciBDQyAyMy4wIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAg
ICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAg
ICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJj
ZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVkPC9zdEV2dDphY3Rp
b24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20gYXBwbGljYXRpb24v
cG9zdHNjcmlwdCB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUuaWxsdXN0cmF0b3I8L3N0RXZ0OnBh
cmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxp
IHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlv
bj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFt
ZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IHRvIGFwcGxpY2F0aW9uL3ZuZC5hZG9i
ZS5pbGx1c3RyYXRvcjwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk+
CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAg
ICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAg
ICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQg
dG8gYXBwbGljYXRpb24vdm5kLmFkb2JlLmlsbHVzdHJhdG9yPC9zdEV2dDpwYXJhbWV0ZXJzPgog
ICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVk
PC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20g
YXBwbGljYXRpb24vcG9zdHNjcmlwdCB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUuaWxsdXN0cmF0
b3I8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPGlsbHVzdHJh
dG9yOlN0YXJ0dXBQcm9maWxlPlByaW50PC9pbGx1c3RyYXRvcjpTdGFydHVwUHJvZmlsZT4KICAg
ICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlT3ZlcnByaW50PkZhbHNlPC94bXBUUGc6SGFzVmlzaWJs
ZU92ZXJwcmludD4KICAgICAgICAgPHhtcFRQZzpIYXNWaXNpYmxlVHJhbnNwYXJlbmN5PkZhbHNl
PC94bXBUUGc6SGFzVmlzaWJsZVRyYW5zcGFyZW5jeT4KICAgICAgICAgPHhtcFRQZzpOUGFnZXM+
MTwveG1wVFBnOk5QYWdlcz4KICAgICAgICAgPHhtcFRQZzpNYXhQYWdlU2l6ZSByZGY6cGFyc2VU
eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdERpbTp3PjExMS4zNTI3Njk8L3N0RGltOnc+
CiAgICAgICAgICAgIDxzdERpbTpoPjczLjUzMDE5ODwvc3REaW06aD4KICAgICAgICAgICAgPHN0
RGltOnVuaXQ+TWlsbGltZXRlcnM8L3N0RGltOnVuaXQ+CiAgICAgICAgIDwveG1wVFBnOk1heFBh
Z2VTaXplPgogICAgICAgICA8eG1wVFBnOlBsYXRlTmFtZXM+CiAgICAgICAgICAgIDxyZGY6U2Vx
PgogICAgICAgICAgICAgICA8cmRmOmxpPkN5YW48L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJk
ZjpsaT5NYWdlbnRhPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+WWVsbG93PC9yZGY6
bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+QmxhY2s8L3JkZjpsaT4KICAgICAgICAgICAgPC9y
ZGY6U2VxPgogICAgICAgICA8L3htcFRQZzpQbGF0ZU5hbWVzPgogICAgICAgICA8eG1wVFBnOlN3
YXRjaEdyb3Vwcz4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkg
cmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wRzpncm91cE5h
bWU+RGVmYXVsdCBTd2F0Y2ggR3JvdXA8L3htcEc6Z3JvdXBOYW1lPgogICAgICAgICAgICAgICAg
ICA8eG1wRzpncm91cFR5cGU+MDwveG1wRzpncm91cFR5cGU+CiAgICAgICAgICAgICAgICAgIDx4
bXBHOkNvbG9yYW50cz4KICAgICAgICAgICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAg
ICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0Y2hOYW1lPldoaXRlPC94bXBHOnN3YXRjaE5hbWU+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOm1vZGU+Q01ZSzwveG1wRzptb2RlPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp0eXBlPlBST0NFU1M8L3htcEc6dHlwZT4K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6Y3lhbj4wLjAwMDAwMDwveG1wRzpjeWFu
PgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjAuMDAwMDAwPC94bXBH
Om1hZ2VudGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnllbGxvdz4wLjAwMDAw
MDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOmJsYWNrPjAu
MDAwMDAwPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAg
ICAgICAgICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnN3YXRjaE5hbWU+UmljaCBCbHVlIENNWUs8
L3htcEc6c3dhdGNoTmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5D
TVlLPC94bXBHOm1vZGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJP
Q0VTUzwveG1wRzp0eXBlPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpjeWFuPjEw
MC4wMDAwMDA8L3htcEc6Y3lhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bWFn
ZW50YT45MC4wMDAwMDA8L3htcEc6bWFnZW50YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
PHhtcEc6eWVsbG93PjEzLjAwMDAwMDwveG1wRzp5ZWxsb3c+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDx4bXBHOmJsYWNrPjcxLjAwMDAwMDwveG1wRzpibGFjaz4KICAgICAgICAgICAgICAg
ICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBh
cnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzpzd2F0
Y2hOYW1lPkM9MTAwIE09OTAgWT0xMyBLPTYwPC94bXBHOnN3YXRjaE5hbWU+CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDx4bXBHOnR5cGU+UFJPQ0VTUzwveG1wRzp0eXBlPgogICAgICAgICAg
ICAgICAgICAgICAgICAgICA8eG1wRzp0aW50PjEwMC4wMDAwMDA8L3htcEc6dGludD4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPHhtcEc6bW9kZT5DTVlLPC94bXBHOm1vZGU+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDx4bXBHOmN5YW4+MTAwLjAwMDAwMDwveG1wRzpjeWFuPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzptYWdlbnRhPjg5Ljk5OTk5ODwveG1wRzptYWdl
bnRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8eG1wRzp5ZWxsb3c+MTMuMDAwMDAwPC94
bXBHOnllbGxvdz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhtcEc6YmxhY2s+NjAuMDAw
MDAyPC94bXBHOmJsYWNrPgogICAgICAgICAgICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAg
ICAgICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICAgICAgICAgICA8L3htcEc6Q29sb3Jh
bnRzPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAg
ICAgICA8L3htcFRQZzpTd2F0Y2hHcm91cHM+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+QWRvYmUg
UERGIGxpYnJhcnkgMTAuMDE8L3BkZjpQcm9kdWNlcj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+
CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4NZW5kc3RyZWFt
DWVuZG9iag0xNyAwIG9iag08PC9NZXRhZGF0YSAxNiAwIFI+Pg1lbmRvYmoNMTggMCBvYmoNPDwv
QmFzZUZvbnQvSkhMVVJKK1JhbGV3YXktQm9sZC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRmly
c3RDaGFyIDMyL0ZvbnREZXNjcmlwdG9yIDEyIDAgUi9MYXN0Q2hhciAxMjQvU3VidHlwZS9UcnVl
VHlwZS9Ub1VuaWNvZGUgMTMgMCBSL1R5cGUvRm9udC9XaWR0aHNbMjQwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMjI1IDY5OCA2MTQgNDk0IDU2NCAwIDU3MSA1NTQgNjA3IDAgNjA0IDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgNTc0IDYzNCA1NjQgMCA1OTkgMzcwIDYzNCAwIDI1NSAwIDU1OCAz
MTcgOTMxIDYwNCA2MDYgMCAwIDM4NyA0OTcgMzg0IDYxOCAwIDgzOSAwIDAgMCAwIDI3Ml0+Pg1l
bmRvYmoNMTkgMCBvYmoNPDwvQmFzZUZvbnQvSkhMVVJKK1JhbGV3YXktU2VtaUJvbGQvRGVzY2Vu
ZGFudEZvbnRzIDkgMCBSL0VuY29kaW5nL0lkZW50aXR5LUgvU3VidHlwZS9UeXBlMC9Ub1VuaWNv
ZGUgMTAgMCBSL1R5cGUvRm9udD4+DWVuZG9iag0yMCAwIG9iag08PC9CYXNlRm9udC9KSExVUkor
UmFsZXdheS1TZW1pQm9sZC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRmlyc3RDaGFyIDMyL0Zv
bnREZXNjcmlwdG9yIDg5IDAgUi9MYXN0Q2hhciAxNDYvU3VidHlwZS9UcnVlVHlwZS9UeXBlL0Zv
bnQvV2lkdGhzWzI0NyAwIDAgMCAwIDAgNjk2IDAgMjk2IDI5NiAwIDAgMCAwIDAgMCA2MTQgNDcx
IDU0OSAwIDAgNTUxIDAgNTQ4IDAgNTg5IDAgMCAwIDAgMCAwIDAgNjc1IDY3NSA2ODQgNzE2IDYw
MyA1NzkgNzE5IDc0MyAyNzIgNDg4IDY2MCA1ODQgODcwIDc2NyA3NTIgNjIzIDAgNjYxIDYxMSA2
MTYgNzUyIDY3OCAxMDUxIDAgNjU3IDAgMCAwIDAgMCAwIDAgNTY0IDYyOCA1NTkgNjM3IDU5NSAz
NTYgNjI5IDU5NyAyNDIgMCA1NDggMzAxIDkyNyA1OTcgNjAyIDYyOCA2MjggMzc0IDQ5NiAzNjcg
NjA5IDU0MyA4MzAgNTIyIDU0NyA0OTMgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDIxOF0+Pg1lbmRvYmoNMjEgMCBvYmoNPDwvQmFzZUZvbnQvSkhMVVJKK1N0
YWdTYW5zLUJvb2svRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0ZpcnN0Q2hhciAzMi9Gb250RGVz
Y3JpcHRvciA5MSAwIFIvTGFzdENoYXIgMTQ2L1N1YnR5cGUvVHlwZTEvVHlwZS9Gb250L1dpZHRo
c1syMTYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDYzOSAwIDYxMyA2NjggNTU2IDAgNjYxIDY4MSAyNjggMCA2MzIgNTM1IDgy
NSA2NzkgNzE0IDU3MyAwIDYxMyA1MjAgNTcwIDY3NCAwIDg4NSAwIDU4MSAwIDAgMCAwIDAgMCAw
IDUxNiAwIDAgNTcyIDUyNiAzMTcgNTcxIDU2NiAyNDAgMCAwIDIzOSAwIDU2NiA1NjggNTcxIDAg
Mzc1IDQ0MyAzMzIgNTcyIDAgMCAwIDUyNiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAxOTRdPj4NZW5kb2JqDTIyIDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURl
Y29kZS9GaXJzdCA0NjEvTGVuZ3RoIDExMzgvTiA1OS9UeXBlL09ialN0bT4+c3RyZWFtDQpo3rRX
224iRxD9lXpMHpjp+0VaWYJEuciOg4zfLGs1YiestRgsDNLy9zk1NbCAgZmHRLIppvvUqeq69WAC
KTKRtDJkEjmryWRyMZBV5JUjLPgIYShqT9ZS8omso5QjWQ89pckGyAwV8BilyCZImwl/2kSwKtJW
W3Ia0kEa0s5DWtIedM5BJkjwBQ0JvmiwD77IOPAl78iBLyUHv0hnDQm+DGUPvhwzAWoU++0gUyDv
yWg46QMk60UyxuA5QQbsZzJWRQoIgYWRgMPblCkgFg48AXwuagrg89pQAJ+HMaganyHBFxCZAL4Q
IcEXgYscUs8Rg8yaIscWfBF8KXtCPE1GDCP4MhabaLMeQqp1JITMajiNI1kNfEJI4SglhNqAPBkk
QmHdQiJoOJq1iP+nT+Uv8+r9/a/qjXOq6KG85azyl3G1qhfrx1Vdc4KPV+7r7+vbekumfFjOa9aG
MYY8bt/qcrJebaYN7mG5XN/cwMpQ4ePuZVH/Ub/Mvq6R/UKVf5d31Xa5AaIcmuN9Y4rojgD2hMAW
Mbl0BHHHEH9sYlyd+JAP9svJWzWth/+s61WjN1lXq/Wfiy84LzKHhUecuH0e8EJDqPsRut6E5jLh
zU0TyFvuCY70XbWY/VQvBr+Pfi7HqKZmcVL+upxuXkHagO83r+9PijsSm8S1wF+eJSOr9ct0XrMs
R8sv23LciM+Dz99qfrhfrl6rOVJezVbV29fJegvwGOdYrrblpJ7CwhMqiYljEBFFJBFORAsxIqwI
cSg2NcNN0AjRC8IShDOIehAyJyxJnlL71LA8Py028zn9zx9W/LfigBXnrLhqxXHbHOOZOwsVye2k
kB8vSRvPSLeJQn0sJBH4H42W358GsUhOY4RoXSSeHj6hyBG6WHgXn3+U1niO0uIkl6P5cvoNlQMr
GlbcByu/vcw2q3pvp1+xCqFht9Up4bmyOD6GSQVGO2ZVUEU0GLg6FhElkowqtO46hu06BqJqGOjY
PXMxqoBZhnnAbL4CQ9MBZ9uZxzePQLgZ2o7b6e8cm0gXyO5TW5ROSsO1lSql4aQ0XDwsFCeFLpZ2
teSkCSTgz9zRqbXVNup/GGQdjoKc4sco3/JVcfnQfLFc3N076TDkQ8YVjC8Zt7n3rsA1Cad1Yb3p
8FL1cDJezYyXlHiJsJeUeEmCl5R4yYVvR1A7kGQ8BUlssLuUnI3ErgYv7OpruzJAzu/uK3Ofh3xa
mXtI3EFSV5eyikJozo3s5ojxwIjcBcd6h1O9l8Lh4O+h0N4NfYCqB1ADGHJfYOoLjH2BoS/Q9wW6
TuCQo6N58AX7oX0OB2SD4zkaTDeOB3PQ3Ti+NoLqxvF95XM3rrk9UycuMyx2whLDwmXY8PprKuLP
BL7TTuwHay4x1wnzHbD9xMVvgAKDe+BULiImL34T4Rk/OqIrbE5d9wKbsdcmbuuPOQ88ddt2wmR+
pX0nh48jrnmH0pzemHtQ7aexO0PFbwSaSyDpHlT7TrPdU7V5J9Gc9XTpwP8KMAB6s8snDWVuZHN0
cmVhbQ1lbmRvYmoNMjMgMCBvYmoNPDwvQ291bnQgMi9LaWRzWzg3IDAgUiAxIDAgUl0vVHlwZS9Q
YWdlcz4+DWVuZG9iag0yNCAwIG9iag08PC9MZW5ndGggMjgyNC9TdWJ0eXBlL1hNTC9UeXBlL01l
dGFkYXRhPj5zdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVT
ek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9
IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQzIDc5LjE2MTIxMCwgMjAxNy8wOC8xMS0xMDoyODozNiAg
ICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy
LzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK
ICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgog
ICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAg
ICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAg
ICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jl
c291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20v
eGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRw
Oi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlv
bi9wZGY8L2RjOmZvcm1hdD4KICAgICAgICAgPGRjOnRpdGxlPgogICAgICAgICAgICA8cmRmOkFs
dD4KICAgICAgICAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5DYW1wdXMgTWFw
IENhbWJyaWRnZV9BNF9kb3VibGVfc2lkZV9jYW1wdXNfJmFtcDtfY2l0eS5pbmRkPC9yZGY6bGk+
CiAgICAgICAgICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICAgPGRj
OmNyZWF0b3I+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPkFS
VSBEZXNpZ24gYW5kIERlbGl2ZXJ5PC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAg
ICAgICAgPC9kYzpjcmVhdG9yPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wOS0xOVQx
NTowMTo1NCswMTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRl
PjIwMTktMDktMTlUMTU6MDE6NTQrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4
bXA6TW9kaWZ5RGF0ZT4yMDE5LTA5LTE5VDE1OjAxOjU0KzAxOjAwPC94bXA6TW9kaWZ5RGF0ZT4K
ICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBJbkRlc2lnbiBDQyAxMy4wIChNYWNpbnRv
c2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6OGJj
ZWE5MDgtNWE3YS04ODRiLWFjNDYtZWVhZGJmNjRlMTIwPC94bXBNTTpJbnN0YW5jZUlEPgogICAg
ICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTk4
REJBMjUzRjYzNTlBNkE8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1N
OkRvY3VtZW50SUQ+eG1wLmlkOjFjODZjZTE1LWQ0MDgtNDkzNC1iNTkxLWQwNjIyMzc4ODNlNTwv
eG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29mOnBk
ZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6
cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5p
aWQ6NGI4ZWRlMGYtZTFiNS00MTkyLTk4ODItMTNkYWYzOTc2MDQ2PC9zdFJlZjppbnN0YW5jZUlE
PgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOjgxMjVkM2ZiLTU3ZTAtNGRh
OS1hYzExLWQ1OGJjMWQ5NWVhMDwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVm
Om9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5OERCQTI1M0Y2MzU5
QTZBPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpyZW5kaXRp
b25DbGFzcz5kZWZhdWx0PC9zdFJlZjpyZW5kaXRpb25DbGFzcz4KICAgICAgICAgPC94bXBNTTpE
ZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2Vx
PgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAg
ICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAg
ICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi94LWluZGVzaWdu
IHRvIGFwcGxpY2F0aW9uL3BkZjwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgICAg
PHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgSW5EZXNpZ24gQ0MgMTMuMCAoTWFjaW50b3NoKTwv
c3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwv
c3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wOS0xOVQx
NTowMTo1NCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAg
ICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8cGRm
OlByb2R1Y2VyPkFkb2JlIFBERiBMaWJyYXJ5IDE1LjA8L3BkZjpQcm9kdWNlcj4KICAgICAgICAg
PHBkZjpUcmFwcGVkPkZhbHNlPC9wZGY6VHJhcHBlZD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+
CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4NZW5kc3RyZWFt
DWVuZG9iag0yNSAwIG9iag08PC9BdXRob3IoQVJVIERlc2lnbiBhbmQgRGVsaXZlcnkpL0NyZWF0
aW9uRGF0ZShEOjIwMTkwOTE5MTUwMTU0KzAxJzAwJykvQ3JlYXRvcihBZG9iZSBJbkRlc2lnbiBD
QyAxMy4wIFwoTWFjaW50b3NoXCkpL01vZERhdGUoRDoyMDE5MDkxOTE1MDE1NCswMScwMCcpL1By
b2R1Y2VyKEFkb2JlIFBERiBMaWJyYXJ5IDE1LjApL1RpdGxlKENhbXB1cyBNYXAgQ2FtYnJpZGdl
X0E0X2RvdWJsZV9zaWRlX2NhbXB1c18mX2NpdHkuaW5kZCkvVHJhcHBlZC9GYWxzZT4+DWVuZG9i
ag14cmVmDTAgODUNMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMTk3NjQzIDAwMDAwIG4NCjAwMDAx
OTgwODQgMDAwMDAgbg0KMDAwMDIyNDAyMCAwMDAwMCBuDQowMDAwMjI0MTMyIDAwMDAwIG4NCjAw
MDAyMjQyMDAgMDAwMDAgbg0KMDAwMDIyNDI5MSAwMDAwMCBuDQowMDAwMjI5NTYxIDAwMDAwIG4N
CjAwMDAyMjk4NDQgMDAwMDAgbg0KMDAwMDIzMDA3MyAwMDAwMCBuDQowMDAwMjMwMDk2IDAwMDAw
IG4NCjAwMDAyMzA0NTIgMDAwMDAgbg0KMDAwMDIzODI2MyAwMDAwMCBuDQowMDAwMjM4NTE2IDAw
MDAwIG4NCjAwMDAyMzg5NDIgMDAwMDAgbg0KMDAwMDI1OTI2NSAwMDAwMCBuDQowMDAwMjU5MzAy
IDAwMDAwIG4NCjAwMDAyNjY2NTQgMDAwMDAgbg0KMDAwMDI2NjY5MSAwMDAwMCBuDQowMDAwMjY3
MTA4IDAwMDAwIG4NCjAwMDAyNjcyNDUgMDAwMDAgbg0KMDAwMDI2Nzc1NiAwMDAwMCBuDQowMDAw
MjY4MjE2IDAwMDAwIG4NCjAwMDAyNjk0NTEgMDAwMDAgbg0KMDAwMDI2OTUxMCAwMDAwMCBuDQow
MDAwMjcyNDExIDAwMDAwIG4NCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm
DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz
NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2
NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw
MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw
MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw
MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K
MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg
Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1
MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg
NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw
MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw
MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw
MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN
CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1
IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1
NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw
IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw
MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw
MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow
MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm
DQp0cmFpbGVyDTw8L1NpemUgODUvSURbPDFCNzQ5MTMzNTRENzRGMzI5ODkwQTFBNkRDQTVFNUZC
PjwzN0E5Q0VFOEVFRTE0RkQ3OEFGNDU4NTEzRjgwRDE5Rj5dPj4Nc3RhcnR4cmVmDTExNg0lJUVP
Rg0xMzQgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0ZpcnN0IDEyL0xlbmd0aCAyMDAvTiAy
L1R5cGUvT2JqU3RtPj5zdHJlYW0NCmjehM49a8MwFIXh/JQ7tovuvbIs2RAMdqFLAzUpnUIG1RVC
RLaCP0Lz72MyZWqGA+92HiWBQOXAimG7xXpd06S/gywElVqB0SSMZGA2whgNhSTBfMRP3NlrWmZs
o+1c74YZm5i6U1VhHeeXevAxWNgv0ykM8D2EixunMF8hJp82r/gBrLGF9ZRgj62HwtzrC9+DX0ZX
VY8YRYJ0Wa5IEiVnkOdKSJWtOBZZLp9q3mz/M4Zf76Cz/XmZoLfnO4L+N9wEGAAbpU8LDQplbmRz
dHJlYW0NZW5kb2JqDTEzNSAwIG9iag08PC9EZWNvZGVQYXJtczw8L0NvbHVtbnMgNS9QcmVkaWN0
b3IgMTI+Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvSW5kZXhbNDIgMSA0NSAxIDEzNCAyXS9MZW5ndGgg
MzIvU2l6ZSAxMzYvVHlwZS9YUmVmL1dbMSAzIDFdPj5zdHJlYW0NCmjeYmJiYGhjABIMDIxM/1kM
zvwHshk1GAACDAAlvAO5DQplbmRzdHJlYW0NZW5kb2JqDTEgMCBvYmoNPDwvQXJ0Qm94WzAuMCAw
LjAgNTk1LjI3NiA4NDEuODldL0JsZWVkQm94WzAuMCAwLjAgNTk1LjI3NiA4NDEuODldL0NvbnRl
bnRzIDIgMCBSL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vTWVkaWFCb3hbMC4wIDAu
MCA1OTUuMjc2IDg0MS44OV0vUGFyZW50IDIzIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9H
UzAgOTkgMCBSL0dTMSA5MiAwIFIvR1MyIDMgMCBSPj4vRm9udDw8L0MyXzAgMTkgMCBSL1QxXzAg
MjEgMCBSL1QxXzEgMTAyIDAgUi9UVDAgMTAxIDAgUi9UVDEgMjAgMCBSL1RUMiAxOCAwIFI+Pi9Q
cm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAxNSAwIFIvTUMxIDE3IDAgUj4+Pj4v
Um90YXRlIDAvU3RydWN0UGFyZW50cyAxL1RhYnMvUy9UcmltQm94WzAuMCAwLjAgNTk1LjI3NiA4
NDEuODldL1R5cGUvUGFnZT4+DWVuZG9iag0yNCAwIG9iag08PC9MZW5ndGggNDg2Mi9TdWJ0eXBl
L1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVN
ME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0
YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE2IDkxLjE2MzYxNiwgMjAxOC8xMC8y
OS0xNjo1ODo0OSAgICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiBy
ZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVt
ZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFw
LzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x
LjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv
MS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9u
cy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1s
bnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAgPGRjOmZvcm1h
dD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD4KICAgICAgICAgPGRjOnRpdGxlPgogICAgICAg
ICAgICA8cmRmOkFsdD4KICAgICAgICAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0
Ij5DYW1wdXMgTWFwIENhbWJyaWRnZV9BNF9kb3VibGVfc2lkZV9jYW1wdXNfJmFtcDtfY2l0eS5p
bmRkPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4K
ICAgICAgICAgPGRjOmNyZWF0b3I+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAg
ICA8cmRmOmxpPkFSVSBEZXNpZ24gYW5kIERlbGl2ZXJ5PC9yZGY6bGk+CiAgICAgICAgICAgIDwv
cmRmOlNlcT4KICAgICAgICAgPC9kYzpjcmVhdG9yPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+
MjAxOS0wOS0xOVQxNTowMTo1NCswMTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6
TWV0YWRhdGFEYXRlPjIwMjAtMDMtMjVUMTE6MDU6MjRaPC94bXA6TWV0YWRhdGFEYXRlPgogICAg
ICAgICA8eG1wOk1vZGlmeURhdGU+MjAyMC0wMy0yNVQxMTowNToyNFo8L3htcDpNb2RpZnlEYXRl
PgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIEluRGVzaWduIENDIDEzLjAgKE1hY2lu
dG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDo3
ODlhYmE2Mi02ZjdhLTQ3NDItOGY2OC1iMWNkM2ZmZWJjZGU8L3htcE1NOkluc3RhbmNlSUQ+CiAg
ICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDowMTgwMTE3NDA3MjA2ODEx
OThEQkEyNTNGNjM1OUE2QTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1w
TU06RG9jdW1lbnRJRD54bXAuaWQ6MWM4NmNlMTUtZDQwOC00OTM0LWI1OTEtZDA2MjIzNzg4M2U1
PC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06UmVuZGl0aW9uQ2xhc3M+cHJvb2Y6
cGRmPC94bXBNTTpSZW5kaXRpb25DbGFzcz4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJk
ZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1w
LmlpZDo0YjhlZGUwZi1lMWI1LTQxOTItOTg4Mi0xM2RhZjM5NzYwNDY8L3N0UmVmOmluc3RhbmNl
SUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6ODEyNWQzZmItNTdlMC00
ZGE5LWFjMTEtZDU4YmMxZDk1ZWEwPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RS
ZWY6b3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTk4REJBMjUzRjYz
NTlBNkE8L3N0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOnJlbmRp
dGlvbkNsYXNzPmRlZmF1bHQ8L3N0UmVmOnJlbmRpdGlvbkNsYXNzPgogICAgICAgICA8L3htcE1N
OkRlcml2ZWRGcm9tPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpT
ZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAg
ICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAg
ICAgICAgICAgICAgICA8c3RFdnQ6cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3gtaW5kZXNp
Z24gdG8gYXBwbGljYXRpb24vcGRmPC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICAg
ICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbkRlc2lnbiBDQyAxMy4wIChNYWNpbnRvc2gp
PC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4v
PC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE5LTA5LTE5
VDE1OjAxOjU0KzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAg
ICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxw
ZGY6UHJvZHVjZXI+QWRvYmUgUERGIExpYnJhcnkgMTUuMDwvcGRmOlByb2R1Y2VyPgogICAgICAg
ICA8cGRmOlRyYXBwZWQ+RmFsc2U8L3BkZjpUcmFwcGVkPgogICAgICA8L3JkZjpEZXNjcmlwdGlv
bj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+DQplbmRzdHJlYW0N
ZW5kb2JqDTI1IDAgb2JqDTw8L0F1dGhvcihBUlUgRGVzaWduIGFuZCBEZWxpdmVyeSkvQ3JlYXRp
b25EYXRlKEQ6MjAxOTA5MTkxNTAxNTQrMDEnMDAnKS9DcmVhdG9yKEFkb2JlIEluRGVzaWduIEND
IDEzLjAgXChNYWNpbnRvc2hcKSkvTW9kRGF0ZShEOjIwMjAwMzI1MTEwNTI0WikvUHJvZHVjZXIo
QWRvYmUgUERGIExpYnJhcnkgMTUuMCkvVGl0bGUoQ2FtcHVzIE1hcCBDYW1icmlkZ2VfQTRfZG91
YmxlX3NpZGVfY2FtcHVzXyZfY2l0eS5pbmRkKS9UcmFwcGVkL0ZhbHNlPj4NZW5kb2JqDTg2IDAg
b2JqDTw8L0xhbmcoZW4tR0IpL01hcmtJbmZvPDwvTWFya2VkIHRydWU+Pi9NZXRhZGF0YSAyNCAw
IFIvUGFnZXMgMjMgMCBSL1N0cnVjdFRyZWVSb290IDI2IDAgUi9UeXBlL0NhdGFsb2cvVmlld2Vy
UHJlZmVyZW5jZXM8PC9EaXJlY3Rpb24vTDJSL0Rpc3BsYXlEb2NUaXRsZSB0cnVlPj4+Pg1lbmRv
YmoNODcgMCBvYmoNPDwvQXJ0Qm94WzAuMCAwLjAgNTk1LjI3NiA4NDEuODldL0JsZWVkQm94WzAu
MCAwLjAgNTk1LjI3NiA4NDEuODldL0NvbnRlbnRzWzkzIDAgUiA5NCAwIFIgOTUgMCBSIDk2IDAg
UiA5NyAwIFIgOTggMCBSIDEwNiAwIFIgMTA3IDAgUl0vQ3JvcEJveFswLjAgMC4wIDU5NS4yNzYg
ODQxLjg5XS9Hcm91cCAxMzEgMCBSL01lZGlhQm94WzAuMCAwLjAgNTk1LjI3NiA4NDEuODldL1Bh
cmVudCAyMyAwIFIvUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1MwIDkyIDAgUi9HUzEgMTEyIDAg
Ui9HUzIgOTkgMCBSPj4vRm9udDw8L1QxXzAgODggMCBSL1QxXzEgMTAyIDAgUi9UVDAgOTAgMCBS
L1RUMSAxMDEgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMTE0IDAg
Ui9NQzEgMTE2IDAgUi9NQzIgMTE4IDAgUj4+L1hPYmplY3Q8PC9GbTAgMTIwIDAgUi9GbTEgMTIy
IDAgUi9GbTIgMTI0IDAgUi9GbTMgMTI2IDAgUi9GbTQgMTI4IDAgUi9GbTUgMTMwIDAgUj4+Pj4v
Um90YXRlIDAvU3RydWN0UGFyZW50cyAwL1RhYnMvUy9UcmltQm94WzAuMCAwLjAgNTk1LjI3NiA4
NDEuODldL1R5cGUvUGFnZT4+DWVuZG9iag14cmVmDQowIDINCjAwMDAwMDAwMDAgNjU1MzUgZg0K
MDAwMDI3NTAwMiAwMDAwMCBuDQoyNCAyDQowMDAwMjc1NDUwIDAwMDAwIG4NCjAwMDAyODAzOTAg
MDAwMDAgbg0KNDIgMQ0KMDAwMDAwMDAwMCA2NTUzNSBmDQo0NSAxDQowMDAwMDAwMDAwIDY1NTM1
IGYNCjg2IDINCjAwMDAyODA2NjMgMDAwMDAgbg0KMDAwMDI4MDg0MiAwMDAwMCBuDQoxMzQgMg0K
MDAwMDI3NDUxNCAwMDAwMCBuDQowMDAwMjc0ODEwIDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUg
MTM2L1Jvb3QgODYgMCBSL0luZm8gMjUgMCBSL0lEWzwxQjc0OTEzMzU0RDc0RjMyOTg5MEExQTZE
Q0E1RTVGQj48NDk2MjlCODhBRTJEQjk0MzkzNkNBMDM0Njk4NTBFREQ+XS9QcmV2IDExNj4+DQp4
cmVmDQowIDENCjAwMDAwMDAwMDAgNjU1MzUgZg0KdHJhaWxlcg0KPDwvU2l6ZSAxMzYvUm9vdCA4
NiAwIFIvSW5mbyAyNSAwIFIvSURbPDFCNzQ5MTMzNTRENzRGMzI5ODkwQTFBNkRDQTVFNUZCPjw0
OTYyOUI4OEFFMkRCOTQzOTM2Q0EwMzQ2OTg1MEVERD5dL1ByZXYgMjgxNDM1L1hSZWZTdG0gMjc0
ODEwPj4NCnN0YXJ0eHJlZg0KMjgxODA3DQolJUVPRg0KMjQgMCBvYmoNPDwvTGVuZ3RoIDQ4NjIv
U3VidHlwZS9YTUwvVHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIg
aWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2Jl
Om5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzAxNiA5MS4xNjM2MTYsIDIw
MTgvMTAvMjktMTY6NTg6NDkgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3Jp
cHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcv
ZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUu
Y29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNv
bS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5j
b20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJo
dHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAg
ICAgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyI+CiAgICAgICAgIDxk
Yzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxkYzp0aXRsZT4K
ICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9Ingt
ZGVmYXVsdCI+Q2FtcHVzIE1hcCBDYW1icmlkZ2VfQTRfZG91YmxlX3NpZGVfY2FtcHVzXyZhbXA7
X2NpdHkuaW5kZDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6
dGl0bGU+CiAgICAgICAgIDxkYzpjcmVhdG9yPgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAg
ICAgICAgICAgPHJkZjpsaT5BUlUgRGVzaWduIGFuZCBEZWxpdmVyeTwvcmRmOmxpPgogICAgICAg
ICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwvZGM6Y3JlYXRvcj4KICAgICAgICAgPHhtcDpDcmVh
dGVEYXRlPjIwMTktMDktMTlUMTU6MDE6NTQrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAg
ICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDIwLTAzLTI1VDExOjA1OjI4WjwveG1wOk1ldGFkYXRhRGF0
ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMjAtMDMtMjVUMTE6MDU6MjhaPC94bXA6TW9k
aWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBJbkRlc2lnbiBDQyAxMy4w
IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlE
PnV1aWQ6NDE0NGJjZDItZjUxYy00Njk0LThhZTMtNTgxNWRkMThjNTJkPC94bXBNTTpJbnN0YW5j
ZUlEPgogICAgICAgICA8eG1wTU06T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6MDE4MDExNzQw
NzIwNjgxMTk4REJBMjUzRjYzNTlBNkE8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAg
ICAgPHhtcE1NOkRvY3VtZW50SUQ+eG1wLmlkOjFjODZjZTE1LWQ0MDgtNDkzNC1iNTkxLWQwNjIy
Mzc4ODNlNTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNz
PnByb29mOnBkZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVk
RnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5j
ZUlEPnhtcC5paWQ6NGI4ZWRlMGYtZTFiNS00MTkyLTk4ODItMTNkYWYzOTc2MDQ2PC9zdFJlZjpp
bnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOjgxMjVkM2Zi
LTU3ZTAtNGRhOS1hYzExLWQ1OGJjMWQ5NWVhMDwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAg
ICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5OERC
QTI1M0Y2MzU5QTZBPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJl
ZjpyZW5kaXRpb25DbGFzcz5kZWZhdWx0PC9zdFJlZjpyZW5kaXRpb25DbGFzcz4KICAgICAgICAg
PC94bXBNTTpEZXJpdmVkRnJvbT4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAg
IDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNl
Ij4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlv
bj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi94
LWluZGVzaWduIHRvIGFwcGxpY2F0aW9uL3BkZjwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAg
ICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgSW5EZXNpZ24gQ0MgMTMuMCAoTWFj
aW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNo
YW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAx
OS0wOS0xOVQxNTowMTo1NCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgPC9yZGY6
bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAg
ICAgICA8cGRmOlByb2R1Y2VyPkFkb2JlIFBERiBMaWJyYXJ5IDE1LjA8L3BkZjpQcm9kdWNlcj4K
ICAgICAgICAgPHBkZjpUcmFwcGVkPkZhbHNlPC9wZGY6VHJhcHBlZD4KICAgICAgPC9yZGY6RGVz
Y3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pg0KZW5k
c3RyZWFtDWVuZG9iag0yNSAwIG9iag08PC9BdXRob3IoQVJVIERlc2lnbiBhbmQgRGVsaXZlcnkp
L0NyZWF0aW9uRGF0ZShEOjIwMTkwOTE5MTUwMTU0KzAxJzAwJykvQ3JlYXRvcihBZG9iZSBJbkRl
c2lnbiBDQyAxMy4wIFwoTWFjaW50b3NoXCkpL01vZERhdGUoRDoyMDIwMDMyNTExMDUyOFopL1By
b2R1Y2VyKEFkb2JlIFBERiBMaWJyYXJ5IDE1LjApL1RpdGxlKENhbXB1cyBNYXAgQ2FtYnJpZGdl
X0E0X2RvdWJsZV9zaWRlX2NhbXB1c18mX2NpdHkuaW5kZCkvVHJhcHBlZC9GYWxzZT4+DWVuZG9i
ag14cmVmDQowIDENCjAwMDAwMDAwMDAgNjU1MzUgZg0KMjQgMg0KMDAwMDI4MjAxMiAwMDAwMCBu
DQowMDAwMjg2OTUyIDAwMDAwIG4NCnRyYWlsZXINCjw8L1NpemUgMTM2L1Jvb3QgODYgMCBSL0lu
Zm8gMjUgMCBSL0lEWzwxQjc0OTEzMzU0RDc0RjMyOTg5MEExQTZEQ0E1RTVGQj48MTQ4NDY3RDk2
RkZERTc0RDlGNDVGNTI1NTU5RTFGRUI+XS9QcmV2IDI4MTgwNz4+DQpzdGFydHhyZWYNCjI4NzIy
NQ0KJSVFT0YNCjEzNiAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvRmlyc3QgMTkvTGVuZ3Ro
IDI3Mi9OIDMvVHlwZS9PYmpTdG0+PnN0cmVhbQ0KaN6M0M1KxDAUBWAf5S51MUnz0yaFodAKbhQc
ZnAlLjJtiKFNM7Sp2Lf3joMgbsbFgXs5m48jJGQgCmAYVQDHbLe0xjRN/HzdKKIlKwQwRnTOOORa
EAWKK5JL9Uaf6ZNZ45LobjCtDXZMtBli21cVrYd0e2/CcfKds9D6tEKL/WQhmNPNHX0EzugOJEPA
nu4cXI4DffBumWxV/XZwTbKykEjMiOIMOYootGqeEcauOurRDd7Afpl7P8LL6D/sNJ9FQ3TxYhH/
trC8IFrARmYlUWWJYwj8FW4niSj1VcxhDcc4wGRPk52x9KODOS0dnmDaNoYQO5N8HAGt6d1Cb9dv
43muXPwQtfpj/BJgACjigxENCmVuZHN0cmVhbQ1lbmRvYmoNMTM3IDAgb2JqDTw8L0RlY29kZVBh
cm1zPDwvQ29sdW1ucyA1L1ByZWRpY3RvciAxMj4+L0ZpbHRlci9GbGF0ZURlY29kZS9JbmRleFsz
NCAxIDM2IDEgNzYgMSAxMzYgMl0vTGVuZ3RoIDMyL1NpemUgMTM4L1R5cGUvWFJlZi9XWzEgMyAx
XT4+c3RyZWFtDQpo3mJiYmDoYAASDAyMUPI/S1LsPyCbqYABIMAAKEsDyQ0KZW5kc3RyZWFtDWVu
ZG9iag0yNCAwIG9iag08PC9MZW5ndGggNDg2Mi9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5z
dHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlk
Ij8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhN
UCBDb3JlIDUuNi1jMDE2IDkxLjE2MzYxNiwgMjAxOC8xMC8yOS0xNjo1ODo0OSAgICAgICAgIj4K
ICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1z
eW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAg
ICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAg
ICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHht
bG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4
bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVm
IyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9z
VHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRv
YmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2Rj
OmZvcm1hdD4KICAgICAgICAgPGRjOnRpdGxlPgogICAgICAgICAgICA8cmRmOkFsdD4KICAgICAg
ICAgICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5DYW1wdXMgTWFwIENhbWJyaWRn
ZV9BNF9kb3VibGVfc2lkZV9jYW1wdXNfJmFtcDtfY2l0eS5pbmRkPC9yZGY6bGk+CiAgICAgICAg
ICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICAgPGRjOmNyZWF0b3I+
CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPkFSVSBEZXNpZ24g
YW5kIERlbGl2ZXJ5PC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC9k
YzpjcmVhdG9yPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wOS0xOVQxNTowMTo1NCsw
MTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMjAtMDMt
MjVUMTE6MDc6NDdaPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+
MjAyMC0wMy0yNVQxMTowNzo0N1o8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOkNyZWF0
b3JUb29sPkFkb2JlIEluRGVzaWduIENDIDEzLjAgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9v
bD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDphNmE0OGE5Yy1kYWM5LTQzZWMtYTc4
NS1jZDlhY2YxZmZmZWM8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5h
bERvY3VtZW50SUQ+eG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOThEQkEyNTNGNjM1OUE2QTwveG1w
TU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuaWQ6
MWM4NmNlMTUtZDQwOC00OTM0LWI1OTEtZDA2MjIzNzg4M2U1PC94bXBNTTpEb2N1bWVudElEPgog
ICAgICAgICA8eG1wTU06UmVuZGl0aW9uQ2xhc3M+cHJvb2Y6cGRmPC94bXBNTTpSZW5kaXRpb25D
bGFzcz4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNl
Ij4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDo0YjhlZGUwZi1lMWI1LTQx
OTItOTg4Mi0xM2RhZjM5NzYwNDY8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJl
Zjpkb2N1bWVudElEPnhtcC5kaWQ6ODEyNWQzZmItNTdlMC00ZGE5LWFjMTEtZDU4YmMxZDk1ZWEw
PC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
PnhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTk4REJBMjUzRjYzNTlBNkE8L3N0UmVmOm9yaWdpbmFs
RG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOnJlbmRpdGlvbkNsYXNzPmRlZmF1bHQ8L3N0
UmVmOnJlbmRpdGlvbkNsYXNzPgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAg
ICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxy
ZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6
YWN0aW9uPmNvbnZlcnRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6
cGFyYW1ldGVycz5mcm9tIGFwcGxpY2F0aW9uL3gtaW5kZXNpZ24gdG8gYXBwbGljYXRpb24vcGRm
PC9zdEV2dDpwYXJhbWV0ZXJzPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2Vu
dD5BZG9iZSBJbkRlc2lnbiBDQyAxMy4wIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50
PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAg
ICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE5LTA5LTE5VDE1OjAxOjU0KzAxOjAwPC9zdEV2
dDp3aGVuPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgog
ICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+QWRvYmUgUERG
IExpYnJhcnkgMTUuMDwvcGRmOlByb2R1Y2VyPgogICAgICAgICA8cGRmOlRyYXBwZWQ+RmFsc2U8
L3BkZjpUcmFwcGVkPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6
eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+DQplbmRzdHJlYW0NZW5kb2JqDTI1IDAgb2JqDTw8L0F1
dGhvcihBUlUgRGVzaWduIGFuZCBEZWxpdmVyeSkvQ3JlYXRpb25EYXRlKEQ6MjAxOTA5MTkxNTAx
NTQrMDEnMDAnKS9DcmVhdG9yKEFkb2JlIEluRGVzaWduIENDIDEzLjAgXChNYWNpbnRvc2hcKSkv
TW9kRGF0ZShEOjIwMjAwMzI1MTEwNzQ3WikvUHJvZHVjZXIoQWRvYmUgUERGIExpYnJhcnkgMTUu
MCkvVGl0bGUoQ2FtcHVzIE1hcCBDYW1icmlkZ2VfQTRfZG91YmxlX3NpZGVfY2FtcHVzXyZfY2l0
eS5pbmRkKS9UcmFwcGVkL0ZhbHNlPj4NZW5kb2JqDXhyZWYNCjAgMQ0KMDAwMDAwMDAwMCA2NTUz
NSBmDQoyNCAyDQowMDAwMjg4MDI2IDAwMDAwIG4NCjAwMDAyOTI5NjYgMDAwMDAgbg0KMzQgMQ0K
MDAwMDAwMDAwMCA2NTUzNSBmDQozNiAxDQowMDAwMDAwMDAwIDY1NTM1IGYNCjc2IDENCjAwMDAw
MDAwMDAgNjU1MzUgZg0KMTM2IDINCjAwMDAyODc0NjEgMDAwMDAgbg0KMDAwMDI4NzgyOSAwMDAw
MCBuDQp0cmFpbGVyDQo8PC9TaXplIDEzOC9Sb290IDg2IDAgUi9JbmZvIDI1IDAgUi9JRFs8MUI3
NDkxMzM1NEQ3NEYzMjk4OTBBMUE2RENBNUU1RkI+PEM0QkVCOTFGQzEwRUM4NDE4QjFCMTA4MzRC
MTk0QzI0Pl0vUHJldiAyODcyMjU+Pg0KeHJlZg0KMCAxDQowMDAwMDAwMDAwIDY1NTM1IGYNCnRy
YWlsZXINCjw8L1NpemUgMTM4L1Jvb3QgODYgMCBSL0luZm8gMjUgMCBSL0lEWzwxQjc0OTEzMzU0
RDc0RjMyOTg5MEExQTZEQ0E1RTVGQj48QzRCRUI5MUZDMTBFQzg0MThCMUIxMDgzNEIxOTRDMjQ+
XS9QcmV2IDI5MzIzOS9YUmVmU3RtIDI4NzgyOT4+DQpzdGFydHhyZWYNCjI5MzU3NA0KJSVFT0YN
CjI0IDAgb2JqDTw8L0xlbmd0aCA0ODczL1N1YnR5cGUvWE1ML1R5cGUvTWV0YWRhdGE+PnN0cmVh
bQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4K
PHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv
cmUgOS4xLWMwMDEgNzkuNjc1ZDBmNywgMjAyMy8wNi8xMS0xOToyMToxNiAgICAgICAgIj4KICAg
PHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50
YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAg
eG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4
bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5z
OnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxu
czpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIK
ICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw
ZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUu
Y29tL3BkZi8xLjMvIj4KICAgICAgICAgPGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZv
cm1hdD4KICAgICAgICAgPGRjOnRpdGxlPgogICAgICAgICAgICA8cmRmOkFsdD4KICAgICAgICAg
ICAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5DYW1wdXMgTWFwIENhbWJyaWRnZV9B
NF9kb3VibGVfc2lkZV9jYW1wdXNfJmFtcDtfY2l0eS5pbmRkPC9yZGY6bGk+CiAgICAgICAgICAg
IDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICAgPGRjOmNyZWF0b3I+CiAg
ICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPkFSVSBEZXNpZ24gYW5k
IERlbGl2ZXJ5PC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC9kYzpj
cmVhdG9yPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxOS0wOS0xOVQxNTowMTo1NCswMTow
MDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMjQtMTAtMjJU
MTI6MDY6MzkrMDE6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0
ZT4yMDI0LTEwLTIyVDEyOjA2OjM5KzAxOjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHht
cDpDcmVhdG9yVG9vbD5BZG9iZSBJbkRlc2lnbiBDQyAxMy4wIChNYWNpbnRvc2gpPC94bXA6Q3Jl
YXRvclRvb2w+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6MTBmNTkzYzUtNTE4ZS00
NmIwLTkzZjItNzI2ZTZmZTA5YTcxPC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06
T3JpZ2luYWxEb2N1bWVudElEPnhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTk4REJBMjUzRjYzNTlB
NkE8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+
eG1wLmlkOjFjODZjZTE1LWQ0MDgtNDkzNC1iNTkxLWQwNjIyMzc4ODNlNTwveG1wTU06RG9jdW1l
bnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29mOnBkZjwveG1wTU06UmVu
ZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJS
ZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5jZUlEPnhtcC5paWQ6NGI4ZWRlMGYt
ZTFiNS00MTkyLTk4ODItMTNkYWYzOTc2MDQ2PC9zdFJlZjppbnN0YW5jZUlEPgogICAgICAgICAg
ICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOjgxMjVkM2ZiLTU3ZTAtNGRhOS1hYzExLWQ1OGJj
MWQ5NWVhMDwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9j
dW1lbnRJRD54bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5OERCQTI1M0Y2MzU5QTZBPC9zdFJlZjpv
cmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpyZW5kaXRpb25DbGFzcz5kZWZh
dWx0PC9zdFJlZjpyZW5kaXRpb25DbGFzcz4KICAgICAgICAgPC94bXBNTTpEZXJpdmVkRnJvbT4K
ICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAg
ICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAg
PHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAg
PHN0RXZ0OnBhcmFtZXRlcnM+ZnJvbSBhcHBsaWNhdGlvbi94LWluZGVzaWduIHRvIGFwcGxpY2F0
aW9uL3BkZjwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3
YXJlQWdlbnQ+QWRvYmUgSW5EZXNpZ24gQ0MgMTMuMCAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdh
cmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdl
ZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxOS0wOS0xOVQxNTowMTo1NCswMTow
MDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRm
OlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8cGRmOlByb2R1Y2VyPkFk
b2JlIFBERiBMaWJyYXJ5IDE1LjA8L3BkZjpQcm9kdWNlcj4KICAgICAgICAgPHBkZjpUcmFwcGVk
PkZhbHNlPC9wZGY6VHJhcHBlZD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJE
Rj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pg0KZW5kc3RyZWFtDWVuZG9iag0yNSAwIG9i
ag08PC9BdXRob3IoQVJVIERlc2lnbiBhbmQgRGVsaXZlcnkpL0NyZWF0aW9uRGF0ZShEOjIwMTkw
OTE5MTUwMTU0KzAxJzAwJykvQ3JlYXRvcihBZG9iZSBJbkRlc2lnbiBDQyAxMy4wIFwoTWFjaW50
b3NoXCkpL01vZERhdGUoRDoyMDI0MTAyMjEyMDYzOSswMScwMCcpL1Byb2R1Y2VyKEFkb2JlIFBE
RiBMaWJyYXJ5IDE1LjApL1RpdGxlKENhbXB1cyBNYXAgQ2FtYnJpZGdlX0E0X2RvdWJsZV9zaWRl
X2NhbXB1c18mX2NpdHkuaW5kZCkvVHJhcHBlZC9GYWxzZT4+DWVuZG9iag04NiAwIG9iag08PC9B
REJFX0ZpbGxTaWduSW5mbzw8L1ZlcnNpb24gMTAwPj4vTGFuZyhlbi1HQikvTWFya0luZm88PC9N
YXJrZWQgdHJ1ZT4+L01ldGFkYXRhIDI0IDAgUi9PQ1Byb3BlcnRpZXM8PC9EPDwvT05bMTQzIDAg
Ul0vT3JkZXJbXS9SQkdyb3Vwc1tdPj4vT0NHc1sxNDMgMCBSXT4+L1BhZ2VzIDIzIDAgUi9TdHJ1
Y3RUcmVlUm9vdCAyNiAwIFIvVHlwZS9DYXRhbG9nL1ZpZXdlclByZWZlcmVuY2VzPDwvRGlyZWN0
aW9uL0wyUi9EaXNwbGF5RG9jVGl0bGUgdHJ1ZT4+Pj4NZW5kb2JqDTg3IDAgb2JqDTw8L0FydEJv
eFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzYgODQxLjg5
XS9Db250ZW50cyAxMzggMCBSL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vR3JvdXAg
MTMxIDAgUi9NZWRpYUJveFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9QYXJlbnQgMjMgMCBSL1Jl
c291cmNlczw8L0V4dEdTdGF0ZTw8L0dTMCA5MiAwIFIvR1MxIDExMiAwIFIvR1MyIDk5IDAgUi9H
UzMgMTQ0IDAgUj4+L0ZvbnQ8PC9UMV8wIDg4IDAgUi9UMV8xIDEwMiAwIFIvVFQwIDkwIDAgUi9U
VDEgMTAxIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDExNCAwIFIv
TUMxIDExNiAwIFIvTUMyIDExOCAwIFI+Pi9YT2JqZWN0PDwvRm0wIDEyMCAwIFIvRm0xIDEyMiAw
IFIvRm0yIDEyNCAwIFIvRm0zIDEyNiAwIFIvRm00IDEyOCAwIFIvRm01IDEzMCAwIFIvRm02IDEz
OSAwIFI+Pj4+L1JvdGF0ZSAwL1N0cnVjdFBhcmVudHMgMC9UYWJzL1MvVHJpbUJveFswLjAgMC4w
IDU5NS4yNzYgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTIwIDAgb2JqDTw8L0JCb3hbNDcy
LjY1NiA3NTAuOTUxIDUxNS4yOTcgNzIyLjc1NF0vRmlsdGVyL0ZsYXRlRGVjb2RlL0dyb3VwIDEx
OSAwIFIvTGVuZ3RoIDYzOS9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIDAuMCAwLjBdL1Jlc291cmNl
czw8L0V4dEdTdGF0ZTw8L0dTMCA5MiAwIFI+Pj4+L1N1YnR5cGUvRm9ybT4+c3RyZWFtDQpIiXRT
S64UMQzc9ylygQn+JHZ8AjZsEEgcYMRHYkAC7i9Rtt8biQVqqTvVsZ1ypUzj47vrF57lMm3bcJHp
e40FuHjImRw+fn++Po2fF80wHjSdBe99ItdxxvfrzdsPNL7+QSHs4+Gxwia583A1hLqO+48rt+qN
M3TcaKIcT7U1bv3p9/26yWT21z1QkvOa9AI6KJe350am3P6pd3sWrLNeIL3mUNX5cr3/h7jPcN8g
jqCDJp/EkY5OioiMR8KghEFFkpeBMZ+TQLIZHFE0FxYylTh3sqRCbOToXMoAB8ojcE2RGGtytrMn
q+YeWwI/C0DsZKBNQRGUWihi86A1lDcZN0eJBIRfCPS5loJI6g+wwY2n0UlgslNgPh3ovPNSI3Lv
eOlquHugIEsUYh0aaBTNS36QKAm2VqLCDok8OpS8sHEkUT+77iCk0CpEzt3Trku21tbminRZwIUA
ugJkBXIDcDOPutg9JVILgiKPhCUKzXWkdJN0KVkpetyrLT2d6VGNudnr/RUNT0RWKOnc86pPKUjS
FtOdiLVkyqlAaBC309IkmWpNBF5K0tZW5abV5HW6lkAE6z4SK2WjRNGQEIeCYPZII4UnlFMM3dJ8
BKkBNjJQnpY2h+VFlKgyCWNc5yRjAF19aGoj1iKsZE+QteCyOql9wCr/mRWeK490gRicLn7OCrhw
9U+b66OlPUVVpFaDV4tblsTQcPRcnVUDvbWacK9+o92zduTkyMu98JIapG3tWE2kp9RY2xO9OCzb
Ka2OcjmrFfGcVNEWAUfcL0Dz1iSHR6Irl+moerLVcZrmb81g+n3qcnJ5cqlRim7KzAN9H9e3UjCf
vwIMAJ6QCIUNCmVuZHN0cmVhbQ1lbmRvYmoNMTIyIDAgb2JqDTw8L0JCb3hbMTE5LjQ3IDI2OC4y
NzkgMTYyLjExMSAyNDAuMDgyXS9GaWx0ZXIvRmxhdGVEZWNvZGUvR3JvdXAgMTIxIDAgUi9MZW5n
dGggNjM4L01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgMC4wIDAuMF0vUmVzb3VyY2VzPDwvRXh0R1N0
YXRlPDwvR1MwIDkyIDAgUj4+Pj4vU3VidHlwZS9Gb3JtPj5zdHJlYW0NCkiJbFNbqlw5DPw/q/AG
WpFkWbJXMD/5CQnMAi55wNwZmGT/MFU6fUkCQ4NbdSzJUqmk49P761/8zI5EDQ8V3T7CJcOGb7FT
4/vn68/xz6Vy0oZKmeNc+9A+e/x1vfvjo46vP5hnKH42bG7JDRdfU46tGC9/X7zqU2pNnGlwlJnx
2/lyuZjVE7mU72fE024PWo+3z3R//Jrj8ZbqfuQJ9S1CO8mX68NvFafU3qAATVvmz4INvVaX4OMV
6CgLOsriLFioMU482A7Ss75YvJ7qOMnDlMSXKTEN517If4W4nxFiiFlic/LGEnbtBdvzwCvFyaPs
WCNlJzNOnIVojEgU9stVEsHud03cLBRkkii0JH2RFdvtVbbIPL7vagbzEBwtguPZXieaUA/eldNe
88Ce5zSo035aDdPOIHvZTB8niAZIyw6WUyzZBKbE4fQP6EqZcVCdwy/F7krPQswSP+xa0fsr0EZ3
KDC2kZ5Op0nadnXlOXdHFdrhlDFATgeAr2fzVAS5DI4gao4HGsAVnpyLAKIdt8jhd1o9nDyDqB4s
yCKw3M8tePA9ymxKzWZCocRXwKlsS62BHkYvFPMKZZwiciSGipPCIosuCyGoXGP2y1E9AlVGKfaw
87NEOFEr/VqHeK7umZXgf94URDZjXs8I/3/ZB4pNo+4DEpr1y6Iif6fQxbXX2UTrubm/s8ZNJpX2
wAbY6Q3Z6AFwTS5HsRG0vTncWKh4tnIZx3jAwDpQiZNgMn+soq1lTYZTZ1gBLA9VGru5qF50n/fE
N2VDnHWz0RT5uUW+Wpra/WTk7Top7SdhEPXiXP2WNDeINzelS1n8Ds7zWzPI338CDAAjW/15DQpl
bmRzdHJlYW0NZW5kb2JqDTEyNCAwIG9iag08PC9CQm94Wzk3LjMwNTMgMjE5LjIwMyAxMzkuOTQ2
IDE5MS4wMDZdL0ZpbHRlci9GbGF0ZURlY29kZS9Hcm91cCAxMjMgMCBSL0xlbmd0aCA2NDAvTWF0
cml4WzEuMCAwLjAgMC4wIDEuMCAwLjAgMC4wXS9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzAg
OTIgMCBSPj4+Pi9TdWJ0eXBlL0Zvcm0+PnN0cmVhbQ0KSIlsVFuqVEEM/D+rOBuYNp3Oo7MCf/wR
BRcw+ABHQd0/WJUzl4sgA01qOp1OVaqPnB/fHb/wqxxL/Jw1h0icpiPs1D1m5fn78/Hp/HnIqJin
jJyK1Xcxrn1+P968/SDn1z8og3385jlnDFdDCbGxTfS8/zi41etIX1hjInGsWL3aM74fOubMJ9KR
up8nnnFnMLq9/M3022sNewH347rkCeXlhHSRL8f7fzq2EYoCVUNs2mvDE1yzW9DzAVTChkqMNxsb
ndjXoUY6fjEw5/aSiXVDqjUC/6xha2Ld7siyoVqnjYkzPuZa3JmOOLcj1tjIiqE4jypQM8YOZV2s
idOsLhjK/chhRvY7F3Z8b8SBRhOknKrM3VmJ+hheFXZ2toaBESf4JEFpdF5ZS6oW2Etl7IuHFo4S
ZHWeZMOYheZyR2tdSmANJGeTcKVfojWMYUUDFBktK/SnuD7GvHotjs6HFnkL2D+AyB8N2lYK1NUk
GO/szmPtPpUVPeeIng8AL89WKgnYwx1z3Ou8gYC21ZYTzNWjhaLIK5ntIE6fx+igYekEM/bzJdx4
I/tdI1drIXDjA3AJiYlUIyked/TzgD0qibR9k0F3UUgdjmw0L7b6asueAl/kA3Be2rNLJNEw3FQC
DW/Wxp4RrEsFixZN83lC/+99nXzoEKIc3gLF19cKOl1CnG9fVmsttVv+q6q1nHTbDa9gVr+SDQqA
vihvkgdYb1rUHCzg7msKEx0DmQftAVsArP62mCcBjEEplEbDK8D7oU1ttxLZb13XNfLNTogjLzHa
t1qXy6/PgjSbML9SV7Z8LRdc7bvH0vFmvOopqPPrCFb077fWj7+/AgwAhrf9vg0KZW5kc3RyZWFt
DWVuZG9iag0xMjYgMCBvYmoNPDwvQkJveFs2MzMuODg4IDI2Mi45NTMgNjgwLjkxMyAyMzEuODU3
XS9GaWx0ZXIvRmxhdGVEZWNvZGUvR3JvdXAgMTI1IDAgUi9MZW5ndGggNjM3L01hdHJpeFsxLjAg
MC4wIDAuMCAxLjAgMC4wIDAuMF0vUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1MwIDkyIDAgUj4+
Pj4vU3VidHlwZS9Gb3JtPj5zdHJlYW0NCkiJbFRbqhRBDP2fVdQGpsyj8qgV+OOPKLiAiw9wFNT9
g8mpvnoFaeipM0klOSdJ03j/5vajHledmTlEeabFWDFJ1ihE28fPj7cP4/uN5nYeNIOl3pa7zzvH
19ur1+9ofP5VgcpeDw+3XX6+h1Qo5or19O3WJrxn6rjT9NDB02iN+/k576fbXaaqPdt0EuV16Tq3
zznez//nwv2faPc/4U6qC9N1hxDm0+3ty7K9+LN4ld0882/VdTmsi5A9Hl0gU4WYeweSe1S1yn1e
ffSMwyPIhkzT6No5faxJ4BG56iwm7beme0MrQlZnblOz86mxh04/RHzuolmB1Mc9pnlVWjZrsF0L
SBEtx8R1mVQeBdSziooWIeeiXWDZ5WgQt3MW8ISkUZ0rFLxbNRI+ruFQUWO11Rgae0uQkw2+seAb
M8mBE8WtFOivB2k24rx8eWOWGNIGQlXWdqo5JGlpW1uvFmAqFOLazLWKo5Y2j9ZmLeviTQXCcfOi
ZlKmStW8nmXULRiDvnHahzKykQQSa2mMFhIDxwLBFdIoA4QIfXC+pmwhjrZn1VFTX6mSkApCdOLT
bxbc759Hz7Kv5sysBy7smNNllaai7FgA6yWkxOBFV15oxanABKozQUqawlBarGeX15G96irLxg4m
902qliCQIa8SAC///5ZYTarXBVGvwYkXW1KlMJpA5qcw6M5nUylgY0MXroGsjanqsVPUnRN8VMq6
QVc2hPJiVMiMz1Ux4OTTV8d3Ii4S56uheYminV2hdXVs4TshuydJ/Yjg3eqCO44mWBDRE9ob6NkL
Zjgaw9aiMb4TnaQvBZqzFJpafUmbVJH7Agn7+S3AAMg7BlMNCmVuZHN0cmVhbQ1lbmRvYmoNMTI4
IDAgb2JqDTw8L0JCb3hbMjQ0LjM5MyAtMjY5LjM0IDI5MS40MTggLTMwMC40MzVdL0ZpbHRlci9G
bGF0ZURlY29kZS9Hcm91cCAxMjcgMCBSL0xlbmd0aCA2MzIvTWF0cml4WzEuMCAwLjAgMC4wIDEu
MCAwLjAgMC4wXS9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzAgOTIgMCBSPj4+Pi9TdWJ0eXBl
L0Zvcm0+PnN0cmVhbQ0KSIlsVN2qFjEMvN+n6AtsTdI0aZ/AG29EwQc4+AMeBfX9wZn0Ez0gC0uy
TZOZSbLS3r+5fuAx9z72aPcQ6T5m8+xi3oZ22dF+frw+tO+X9B3apKca3nNt2nu1r9er1++kff6F
TDjHo81iIiJXu23Nrqs9fbt4Uu++Bl6R3rRPefl+uqwPIDje6CLrXHiYCDjWXV9P8P1vhvtPolPi
4crjglSKT9fbF2BH963IYxvR6fsvXO05CcB2ewY0Zaq+d7JyLJQcuN89FWasLPwpgW9zbIDWFc27
EH8uh2nTEOQ9gt5cbcJUHoBU9LEQGTIRE32PYIqRLfsM1uRJog9kbkmWCxc3PIlo64Epc8B2fNfu
c1TULCEjDCexSr9E8Opp1EhMKyyjJBvIjTtaToDu6hq00xmXfUmWu4jH19F5lFM2W44wq3mhdskE
qAOCGC4xSgftAvpWtwcvzL5wHdJC5mcI4D4JFBSgjJKAxIbtS4tA9RlH26q9iGZbgAzVqkeWmw6H
hJ0R5ICbTpWczMEkiQUtgx2QrAbHK8dwzvjEJtwBxkUGhG9WrCaqjSJrBrjom1NxVS/Pa09CzpkR
/VA2VCbXSBYBJtHC8azC00plFUom3SAdXJslg3qeak7PHqSR8um6ubeVaWp9HpLnSvx/5FPYSuXI
YwBt+j8bCpmqnswgTi+tCQlOHiSTRc+g3Rh/AON2yDC6/CkohhT/k0KppSucWbNPPovu0vqdcOKw
HaO0lnLGOnIMqUDqyxn1EgeIa0SxBOQfxR/+zqNHSeY2zojXFR9n4NVO7NQ6LcnAoiaranHdCcrH
EXVONgnr+3x9KQn5/BZgANO5+3YNCmVuZHN0cmVhbQ1lbmRvYmoNMTMwIDAgb2JqDTw8L0JCb3hb
MjE5Ljk1IC0zMjMuNDYxIDI2Ni45NzQgLTM1NC41NTZdL0ZpbHRlci9GbGF0ZURlY29kZS9Hcm91
cCAxMjkgMCBSL0xlbmd0aCA2MzYvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAwLjAgMC4wXS9SZXNv
dXJjZXM8PC9FeHRHU3RhdGU8PC9HUzAgOTIgMCBSPj4+Pi9TdWJ0eXBlL0Zvcm0+PnN0cmVhbQ0K
SIlsVEuOFTEM3PcpcoEX7NixkxOwYYNA4gAjPhIDEnB/iSqnR8MCPamf3XHsqrLd0j6+u37hN3T3
PdvDpvc5s3l2Gd5Mu+xovz9fn9rPS/oObdJTB55zbdp7te/Xm7cfpH39g0Q4x0/bcO3qnkhpu5uI
tacfF8/q2ZfhEelN+8QZny/20zW62bw96yLrXLhNBBzrUW9P8OM1g784T9cpcbtyX5BK8eV6/y9c
gBTfQOuzx57jFa32nKw/dnsGMmWmvneycCxUNNmwPRV2rCz8KYF30xZA64rmvajkcphjKoK8R9Cb
q6EkhMWBZItel6LwR98WTIFn9hksGjJh7yDzkZRr4SIhSERbN6jEyeqO99p9nqhZQrLUAtDSL2PD
yUGNZGiFZZRkBuVwR8sJ8F1dg3Y647IvoKW7iMfX0dnKsU1H1wkcNTOUL5kClSwRJTKonik456x+
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
ZWFtDWVuZG9iag0xMzkgMCBvYmoNPDwvQURCRV9GaWxsU2lnbjw8L1N1YnR5cGUvcGFnZS9UeXBl
L0ZpbGxTaWduRGF0YT4+L0JCb3hbMTczLjM4MiA0NDUuMDkgMjE0LjEwOSA1NzYuNTgxXS9Gb3Jt
VHlwZSAxL0xlbmd0aCAzOS9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIDAuMCAwLjBdL1Jlc291cmNl
czw8L1hPYmplY3Q8PC9GbTAgMTQwIDAgUj4+Pj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+
c3RyZWFtDQpxCjAgVGMgMCBUdyAwIFRzIDEwMCBUeiAwIFRyIC9GbTAgRG8KUQoNCmVuZHN0cmVh
bQ1lbmRvYmoNMTQwIDAgb2JqDTw8L0FEQkVfRmlsbFNpZ248PC9TdWJ0eXBlL2ZpZWxkcy9UeXBl
L0ZpbGxTaWduRGF0YT4+L0JCb3hbMTczLjM4MiA0NDUuMDkgMjE0LjEwOSA1NzYuNTgxXS9Gb3Jt
VHlwZSAxL0xlbmd0aCAyMS9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIDAuMCAwLjBdL09DIDE0MSAw
IFIvUmVzb3VyY2VzPDwvWE9iamVjdDw8L0ZtMCAxNDIgMCBSPj4+Pi9TdWJ0eXBlL0Zvcm0vVHlw
ZS9YT2JqZWN0Pj5zdHJlYW0NCjAgVEwKcQpxCi9GbTAgRG8KUQpRCg0KZW5kc3RyZWFtDWVuZG9i
ag0xNDEgMCBvYmoNPDwvT0NHcyAxNDMgMCBSL1R5cGUvT0NNRD4+DWVuZG9iag0xNDIgMCBvYmoN
PDwvQURCRV9GaWxsU2lnbjw8L0ZpZWxkQ29sb3JbMC45ODgyMzUgMC45NTY4NjMgMC41MjE1NzZd
L1N1YnR5cGUvcm91bmRyZWN0L1R5cGUvRmlsbFNpZ25EYXRhPj4vQkJveFswLjAgMC4wIDQwLjcy
NzMgMTMxLjQ5MV0vRm9ybVR5cGUgMS9MZW5ndGggMjc1L01hdHJpeFsxLjAgMC4wIDAuMCAxLjAg
MTczLjM4MiA0NDUuMDldL1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KMC45ODgg
MC45NTcgMC41MjIgUkcKMyB3IDEgSiAKcSAxIDAgMCAxIDMgMjAuMzYzNiBjbQowIDAgbQowIC0x
Ny4zNjQgMCAtMTcuMzY0IDE3LjM2NCAtMTcuMzY0IGMKMTcuMzY0IC0xNy4zNjQgbAozNC43Mjcg
LTE3LjM2NCAzNC43MjcgLTE3LjM2NCAzNC43MjcgMCBjCjM0LjcyNyA5MC43NjQgbAozNC43Mjcg
MTA4LjEyNyAzNC43MjcgMTA4LjEyNyAxNy4zNjQgMTA4LjEyNyBjCjE3LjM2NCAxMDguMTI3IGwK
MCAxMDguMTI3IDAgMTA4LjEyNyAwIDkwLjc2NCBjCjAgMCBsClMKUQoNCmVuZHN0cmVhbQ1lbmRv
YmoNMTQzIDAgb2JqDTw8L05hbWUoQWRvYmUgRmlsbCAmIFNpZ24pL1R5cGUvT0NHPj4NZW5kb2Jq
DTE0NCAwIG9iag08PC9BSVMgZmFsc2UvQk0vTm9ybWFsL0NBIDEuMC9PUCBmYWxzZS9PUE0gMS9T
QSBmYWxzZS9TTWFzay9Ob25lL2NhIDEuMC9vcCBmYWxzZT4+DWVuZG9iag14cmVmDQowIDENCjAw
MDAwMDAwMDAgNjU1MzUgZg0KMjQgMg0KMDAwMDI5Mzc3OSAwMDAwMCBuDQowMDAwMjk4NzMwIDAw
MDAwIG4NCjg2IDINCjAwMDAyOTkwMDkgMDAwMDAgbg0KMDAwMDI5OTI5MCAwMDAwMCBuDQoxMjAg
MQ0KMDAwMDI5OTg1NiAwMDAwMCBuDQoxMjIgMQ0KMDAwMDMwMDcwMiAwMDAwMCBuDQoxMjQgMQ0K
MDAwMDMwMTU0NiAwMDAwMCBuDQoxMjYgMQ0KMDAwMDMwMjM5MyAwMDAwMCBuDQoxMjggMQ0KMDAw
MDMwMzIzNyAwMDAwMCBuDQoxMzAgMQ0KMDAwMDMwNDA3NyAwMDAwMCBuDQoxMzggNw0KMDAwMDMw
NDkyMSAwMDAwMCBuDQowMDAwMzUzODY3IDAwMDAwIG4NCjAwMDAzNTQxNTAgMDAwMDAgbg0KMDAw
MDM1NDQyOCAwMDAwMCBuDQowMDAwMzU0NDczIDAwMDAwIG4NCjAwMDAzNTQ5OTkgMDAwMDAgbg0K
MDAwMDM1NTA1NCAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDE0NS9Sb290IDg2IDAgUi9JbmZv
IDI1IDAgUi9JRFs8MUI3NDkxMzM1NEQ3NEYzMjk4OTBBMUE2RENBNUU1RkI+PEQyRkRDRThBNEQ2
NjM5NENCOTM5NUNCOUFFNUU4NjVCPl0vUHJldiAyOTM1NzQ+Pg0Kc3RhcnR4cmVmDQozNTUxNTQN
CiUlRU9GDQoyNCAwIG9iag08PC9MZW5ndGggNDg3My9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRh
Pj5zdHJlYW0NCjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3pr
YzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2Jl
IFhNUCBDb3JlIDkuMS1jMDAxIDc5LjY3NWQwZjcsIDIwMjMvMDYvMTEtMTk6MjE6MTYgICAgICAg
ICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y
ZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAg
ICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAg
ICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAg
ICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAg
ICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJj
ZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x
LjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25z
LmFkb2JlLmNvbS9wZGYvMS4zLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+YXBwbGljYXRpb24vcGRm
PC9kYzpmb3JtYXQ+CiAgICAgICAgIDxkYzp0aXRsZT4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAg
ICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+Q2FtcHVzIE1hcCBDYW1i
cmlkZ2VfQTRfZG91YmxlX3NpZGVfY2FtcHVzXyZhbXA7X2NpdHkuaW5kZDwvcmRmOmxpPgogICAg
ICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6dGl0bGU+CiAgICAgICAgIDxkYzpjcmVh
dG9yPgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaT5BUlUgRGVz
aWduIGFuZCBEZWxpdmVyeTwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAg
IDwvZGM6Y3JlYXRvcj4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTktMDktMTlUMTU6MDE6
NTQrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDI0
LTEwLTIyVDEyOjE1OjUwKzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1v
ZGlmeURhdGU+MjAyNC0xMC0yMlQxMjoxNTo1MCswMTowMDwveG1wOk1vZGlmeURhdGU+CiAgICAg
ICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgSW5EZXNpZ24gQ0MgMTMuMCAoTWFjaW50b3NoKTwv
eG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD51dWlkOjc4MTZlN2Jm
LTgxMjctNDVkMC04MDdhLTExNDliMDE0YzI2MjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAg
PHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjAxODAxMTc0MDcyMDY4MTE5OERCQTI1
M0Y2MzU5QTZBPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1
bWVudElEPnhtcC5pZDoxYzg2Y2UxNS1kNDA4LTQ5MzQtYjU5MS1kMDYyMjM3ODgzZTU8L3htcE1N
OkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpSZW5kaXRpb25DbGFzcz5wcm9vZjpwZGY8L3ht
cE1NOlJlbmRpdGlvbkNsYXNzPgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNl
VHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjRi
OGVkZTBmLWUxYjUtNDE5Mi05ODgyLTEzZGFmMzk3NjA0Njwvc3RSZWY6aW5zdGFuY2VJRD4KICAg
ICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ+eG1wLmRpZDo4MTI1ZDNmYi01N2UwLTRkYTktYWMx
MS1kNThiYzFkOTVlYTA8L3N0UmVmOmRvY3VtZW50SUQ+CiAgICAgICAgICAgIDxzdFJlZjpvcmln
aW5hbERvY3VtZW50SUQ+eG1wLmRpZDowMTgwMTE3NDA3MjA2ODExOThEQkEyNTNGNjM1OUE2QTwv
c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xh
c3M+ZGVmYXVsdDwvc3RSZWY6cmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZl
ZEZyb20+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAg
ICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAg
ICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVydGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAg
ICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJzPmZyb20gYXBwbGljYXRpb24veC1pbmRlc2lnbiB0byBh
cHBsaWNhdGlvbi9wZGY8L3N0RXZ0OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgICAgIDxzdEV2
dDpzb2Z0d2FyZUFnZW50PkFkb2JlIEluRGVzaWduIENDIDEzLjAgKE1hY2ludG9zaCk8L3N0RXZ0
OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0
OmNoYW5nZWQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTktMDktMTlUMTU6MDE6
NTQrMDE6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAg
ICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHBkZjpQcm9k
dWNlcj5BZG9iZSBQREYgTGlicmFyeSAxNS4wPC9wZGY6UHJvZHVjZXI+CiAgICAgICAgIDxwZGY6
VHJhcHBlZD5GYWxzZTwvcGRmOlRyYXBwZWQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8
L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ1lbmRvYmoN
MjUgMCBvYmoNPDwvQXV0aG9yKEFSVSBEZXNpZ24gYW5kIERlbGl2ZXJ5KS9DcmVhdGlvbkRhdGUo
RDoyMDE5MDkxOTE1MDE1NCswMScwMCcpL0NyZWF0b3IoQWRvYmUgSW5EZXNpZ24gQ0MgMTMuMCBc
KE1hY2ludG9zaFwpKS9Nb2REYXRlKEQ6MjAyNDEwMjIxMjE1NTArMDEnMDAnKS9Qcm9kdWNlcihB
ZG9iZSBQREYgTGlicmFyeSAxNS4wKS9UaXRsZShDYW1wdXMgTWFwIENhbWJyaWRnZV9BNF9kb3Vi
bGVfc2lkZV9jYW1wdXNfJl9jaXR5LmluZGQpL1RyYXBwZWQvRmFsc2U+Pg1lbmRvYmoNODYgMCBv
YmoNPDwvQURCRV9GaWxsU2lnbkluZm88PC9WZXJzaW9uIDEwMD4+L0Fjcm9Gb3JtIDMzMiAwIFIv
TGFuZyhlbi1HQikvTWFya0luZm88PC9NYXJrZWQgdHJ1ZT4+L01ldGFkYXRhIDI0IDAgUi9PQ1By
b3BlcnRpZXM8PC9EPDwvT05bMTQzIDAgUl0vT3JkZXJbXS9SQkdyb3Vwc1tdPj4vT0NHc1sxNDMg
MCBSXT4+L1BhZ2VzIDIzIDAgUi9TdHJ1Y3RUcmVlUm9vdCAyNiAwIFIvVHlwZS9DYXRhbG9nL1Zp
ZXdlclByZWZlcmVuY2VzPDwvRGlyZWN0aW9uL0wyUi9EaXNwbGF5RG9jVGl0bGUgdHJ1ZT4+Pj4N
ZW5kb2JqDTg3IDAgb2JqDTw8L0Fubm90cyAzMzMgMCBSL0FydEJveFswLjAgMC4wIDU5NS4yNzYg
ODQxLjg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9Db250ZW50cyAzMzQgMCBS
L0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vR3JvdXAgMTMxIDAgUi9NZWRpYUJveFsw
LjAgMC4wIDU5NS4yNzYgODQxLjg5XS9QYXJlbnQgMjMgMCBSL1Jlc291cmNlczw8L0V4dEdTdGF0
ZTw8L0dTMCA5MiAwIFIvR1MxIDExMiAwIFIvR1MyIDk5IDAgUi9HUzMgMzQ5IDAgUj4+L0ZvbnQ8
PC9UMV8wIDg4IDAgUi9UMV8xIDEwMiAwIFIvVFQwIDkwIDAgUi9UVDEgMTAxIDAgUj4+L1Byb2NT
ZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDExNCAwIFIvTUMxIDExNiAwIFIvTUMyIDEx
OCAwIFI+Pi9YT2JqZWN0PDwvRm0wIDEyMCAwIFIvRm0xIDEyMiAwIFIvRm0yIDEyNCAwIFIvRm0z
IDEyNiAwIFIvRm00IDEyOCAwIFIvRm01IDEzMCAwIFIvRm02IDEzOSAwIFI+Pj4+L1JvdGF0ZSAw
L1N0cnVjdFBhcmVudHMgMC9UYWJzL1MvVHJpbUJveFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9U
eXBlL1BhZ2U+Pg1lbmRvYmoNMTM5IDAgb2JqDTw8L0FEQkVfRmlsbFNpZ248PC9TdWJ0eXBlL3Bh
Z2UvVHlwZS9GaWxsU2lnbkRhdGE+Pi9CQm94WzIyLjY5MDkgMjI1LjE2MyA1MDguODcyIDU5NS43
ODFdL0Zvcm1UeXBlIDEvTGVuZ3RoIDQ5L01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgMC4wIDAuMF0v
UmVzb3VyY2VzPDwvRm9udDw8L1RUMCAxMDEgMCBSPj4vWE9iamVjdDw8L0ZtMCAxNDAgMCBSPj4+
Pi9TdWJ0eXBlL0Zvcm0vVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCnEKMCBUYyAwIFR3IDAgVHMgMTAw
IFR6IDAgVHIgL1RUMCAxIFRmCi9GbTAgRG8KUQoNCmVuZHN0cmVhbQ1lbmRvYmoNMTQwIDAgb2Jq
DTw8L0FEQkVfRmlsbFNpZ248PC9TdWJ0eXBlL2ZpZWxkcy9UeXBlL0ZpbGxTaWduRGF0YT4+L0JC
b3hbMjIuNjkwOSAyMjUuMTYzIDUwOC44NzIgNTk1Ljc4MV0vRm9ybVR5cGUgMS9MZW5ndGggMzUy
L01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgMC4wIDAuMF0vT0MgMTQxIDAgUi9SZXNvdXJjZXM8PC9G
b250PDwvVFQwIDEwMSAwIFI+Pi9YT2JqZWN0PDwvRm0wIDE0MiAwIFIvRm0xIDMzNSAwIFIvRm0y
IDMzNiAwIFIvRm0zIDMzNyAwIFIvRm00IDMzOCAwIFIvRm01IDMzOSAwIFIvRm02IDM0MCAwIFI+
Pj4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KMCBUTApxCnEKMCBUYyAwIFR3
IDAgVHMgMTAwIFR6IDAgVHIgL1RUMCAxIFRmCi9GbTAgRG8KUQpxCjAgVGMgMCBUdyAwIFRzIDEw
MCBUeiAwIFRyIC9UVDAgMSBUZgovRm0xIERvClEKcQowIFRjIDAgVHcgMCBUcyAxMDAgVHogMCBU
ciAvVFQwIDEgVGYKL0ZtMiBEbwpRCnEKMCBUYyAwIFR3IDAgVHMgMTAwIFR6IDAgVHIgL1RUMCAx
IFRmCi9GbTMgRG8KUQpxCjAgVGMgMCBUdyAwIFRzIDEwMCBUeiAwIFRyIC9UVDAgMSBUZgovRm00
IERvClEKcQowIFRjIDAgVHcgMCBUcyAxMDAgVHogMCBUciAvVFQwIDEgVGYKL0ZtNSBEbwpRCnEK
MCBUYyAwIFR3IDAgVHMgMTAwIFR6IDAgVHIgL1RUMCAxIFRmCi9GbTYgRG8KUQpRCg0KZW5kc3Ry
ZWFtDWVuZG9iag0xNDIgMCBvYmoNPDwvQURCRV9GaWxsU2lnbjw8L0ZpZWxkQ29sb3JbMC45ODgy
MzUgMC45NTY4NjMgMC41MjE1NzZdL1N1YnR5cGUvcm91bmRyZWN0L1R5cGUvRmlsbFNpZ25EYXRh
Pj4vQkJveFswLjAgMC4wIDQwLjcyNzMgMTMxLjQ5MV0vRm9ybVR5cGUgMS9MZW5ndGggMjg0L01h
dHJpeFsxLjAgMC4wIDAuMCAxLjAgMTczLjM4MiA0NDUuMDldL1Jlc291cmNlczw8Pj4vU3VidHlw
ZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFtDQowIFRMCnEKcQoxIDAgMCAxIDMgMjAuMzYzNiBj
bQowLjk4OCAwLjk1NyAwLjUyMiBSRwozIHcgMSBKIAowIDAgbQowIC0xNy4zNjQgMCAtMTcuMzY0
IDE3LjM2NCAtMTcuMzY0IGMKMTcuMzY0IC0xNy4zNjQgbAozNC43MjcgLTE3LjM2NCAzNC43Mjcg
LTE3LjM2NCAzNC43MjcgMCBjCjM0LjcyNyA5MC43NjQgbAozNC43MjcgMTA4LjEyNyAzNC43Mjcg
MTA4LjEyNyAxNy4zNjQgMTA4LjEyNyBjCjE3LjM2NCAxMDguMTI3IGwKMCAxMDguMTI3IDAgMTA4
LjEyNyAwIDkwLjc2NCBjCjAgMCBsClMKUQpRCg0KZW5kc3RyZWFtDWVuZG9iag0yNDIgMCBvYmoN
PDwvQmFzZUZvbnQvWU9QWFpTK0FyaWFsL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9GaXJzdENo
YXIgMC9Gb250RGVzY3JpcHRvciAzNDcgMCBSL0xhc3RDaGFyIDI1NS9TdWJ0eXBlL1RydWVUeXBl
L1R5cGUvRm9udC9XaWR0aHNbNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUw
IDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAg
NzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCAyNzggMjc4IDM1NSA1NTYgNTU2IDg4OSA2
NjcgMTkxIDMzMyAzMzMgMzg5IDU4NCAyNzggMzMzIDI3OCAyNzggNTU2IDU1NiA1NTYgNTU2IDU1
NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDI3OCAyNzggNTg0IDU4NCA1ODQgNTU2IDEwMTUgNjY3IDY2
NyA3MjIgNzIyIDY2NyA2MTEgNzc4IDcyMiAyNzggNTAwIDY2NyA1NTYgODMzIDcyMiA3NzggNjY3
IDc3OCA3MjIgNjY3IDYxMSA3MjIgNjY3IDk0NCA2NjcgNjY3IDYxMSAyNzggMjc4IDI3OCA0Njkg
NTU2IDMzMyA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYgNTU2IDIyMiAyMjIgNTAwIDIyMiA4
MzMgNTU2IDU1NiA1NTYgNTU2IDMzMyA1MDAgMjc4IDU1NiA1MDAgNzIyIDUwMCA1MDAgNTAwIDMz
NCAyNjAgMzM0IDU4NCAzNTAgNTU2IDM1MCAyMjIgNTU2IDMzMyAxMDAwIDU1NiA1NTYgMzMzIDEw
MDAgNjY3IDMzMyAxMDAwIDM1MCA2MTEgMzUwIDM1MCAyMjIgMjIyIDMzMyAzMzMgMzUwIDU1NiAx
MDAwIDMzMyAxMDAwIDUwMCAzMzMgOTQ0IDM1MCA1MDAgNjY3IDI3OCAzMzMgNTU2IDU1NiA1NTYg
NTU2IDI2MCA1NTYgMzMzIDczNyAzNzAgNTU2IDU4NCAzMzMgNzM3IDU1MiA0MDAgNTQ5IDMzMyAz
MzMgMzMzIDU3NiA1MzcgMzMzIDMzMyAzMzMgMzY1IDU1NiA4MzQgODM0IDgzNCA2MTEgNjY3IDY2
NyA2NjcgNjY3IDY2NyA2NjcgMTAwMCA3MjIgNjY3IDY2NyA2NjcgNjY3IDI3OCAyNzggMjc4IDI3
OCA3MjIgNzIyIDc3OCA3NzggNzc4IDc3OCA3NzggNTg0IDc3OCA3MjIgNzIyIDcyMiA3MjIgNjY3
IDY2NyA2MTEgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgODg5IDUwMCA1NTYgNTU2IDU1NiA1NTYg
Mjc4IDI3OCAyNzggMjc4IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NDkgNjExIDU1NiA1
NTYgNTU2IDU1NiA1MDAgNTU2IDUwMF0+Pg1lbmRvYmoNMjc4IDAgb2JqDTw8L0Jhc2VGb250L1Fa
T0VLUitBcmlhbC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRmlyc3RDaGFyIDAvRm9udERlc2Ny
aXB0b3IgMzQ1IDAgUi9MYXN0Q2hhciAyNTUvU3VidHlwZS9UcnVlVHlwZS9UeXBlL0ZvbnQvV2lk
dGhzWzc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3
NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1
MCA3NTAgNzUwIDc1MCA3NTAgMjc4IDI3OCAzNTUgNTU2IDU1NiA4ODkgNjY3IDE5MSAzMzMgMzMz
IDM4OSA1ODQgMjc4IDMzMyAyNzggMjc4IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYg
NTU2IDU1NiAyNzggMjc4IDU4NCA1ODQgNTg0IDU1NiAxMDE1IDY2NyA2NjcgNzIyIDcyMiA2Njcg
NjExIDc3OCA3MjIgMjc4IDUwMCA2NjcgNTU2IDgzMyA3MjIgNzc4IDY2NyA3NzggNzIyIDY2NyA2
MTEgNzIyIDY2NyA5NDQgNjY3IDY2NyA2MTEgMjc4IDI3OCAyNzggNDY5IDU1NiAzMzMgNTU2IDU1
NiA1MDAgNTU2IDU1NiAyNzggNTU2IDU1NiAyMjIgMjIyIDUwMCAyMjIgODMzIDU1NiA1NTYgNTU2
IDU1NiAzMzMgNTAwIDI3OCA1NTYgNTAwIDcyMiA1MDAgNTAwIDUwMCAzMzQgMjYwIDMzNCA1ODQg
MzUwIDU1NiAzNTAgMjIyIDU1NiAzMzMgMTAwMCA1NTYgNTU2IDMzMyAxMDAwIDY2NyAzMzMgMTAw
MCAzNTAgNjExIDM1MCAzNTAgMjIyIDIyMiAzMzMgMzMzIDM1MCA1NTYgMTAwMCAzMzMgMTAwMCA1
MDAgMzMzIDk0NCAzNTAgNTAwIDY2NyAyNzggMzMzIDU1NiA1NTYgNTU2IDU1NiAyNjAgNTU2IDMz
MyA3MzcgMzcwIDU1NiA1ODQgMzMzIDczNyA1NTIgNDAwIDU0OSAzMzMgMzMzIDMzMyA1NzYgNTM3
IDMzMyAzMzMgMzMzIDM2NSA1NTYgODM0IDgzNCA4MzQgNjExIDY2NyA2NjcgNjY3IDY2NyA2Njcg
NjY3IDEwMDAgNzIyIDY2NyA2NjcgNjY3IDY2NyAyNzggMjc4IDI3OCAyNzggNzIyIDcyMiA3Nzgg
Nzc4IDc3OCA3NzggNzc4IDU4NCA3NzggNzIyIDcyMiA3MjIgNzIyIDY2NyA2NjcgNjExIDU1NiA1
NTYgNTU2IDU1NiA1NTYgNTU2IDg4OSA1MDAgNTU2IDU1NiA1NTYgNTU2IDI3OCAyNzggMjc4IDI3
OCA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTQ5IDYxMSA1NTYgNTU2IDU1NiA1NTYgNTAw
IDU1NiA1MDBdPj4NZW5kb2JqDTMyNiAwIG9iag08PC9CYXNlRm9udC9GR05GVkkrQXJpYWwvRW5j
b2RpbmcvV2luQW5zaUVuY29kaW5nL0ZpcnN0Q2hhciAwL0ZvbnREZXNjcmlwdG9yIDM0MyAwIFIv
TGFzdENoYXIgMjU1L1N1YnR5cGUvVHJ1ZVR5cGUvVHlwZS9Gb250L1dpZHRoc1s3NTAgNzUwIDc1
MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUw
IDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAg
NzUwIDI3OCAyNzggMzU1IDU1NiA1NTYgODg5IDY2NyAxOTEgMzMzIDMzMyAzODkgNTg0IDI3OCAz
MzMgMjc4IDI3OCA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgMjc4IDI3
OCA1ODQgNTg0IDU4NCA1NTYgMTAxNSA2NjcgNjY3IDcyMiA3MjIgNjY3IDYxMSA3NzggNzIyIDI3
OCA1MDAgNjY3IDU1NiA4MzMgNzIyIDc3OCA2NjcgNzc4IDcyMiA2NjcgNjExIDcyMiA2NjcgOTQ0
IDY2NyA2NjcgNjExIDI3OCAyNzggMjc4IDQ2OSA1NTYgMzMzIDU1NiA1NTYgNTAwIDU1NiA1NTYg
Mjc4IDU1NiA1NTYgMjIyIDIyMiA1MDAgMjIyIDgzMyA1NTYgNTU2IDU1NiA1NTYgMzMzIDUwMCAy
NzggNTU2IDUwMCA3MjIgNTAwIDUwMCA1MDAgMzM0IDI2MCAzMzQgNTg0IDM1MCA1NTYgMzUwIDIy
MiA1NTYgMzMzIDEwMDAgNTU2IDU1NiAzMzMgMTAwMCA2NjcgMzMzIDEwMDAgMzUwIDYxMSAzNTAg
MzUwIDIyMiAyMjIgMzMzIDMzMyAzNTAgNTU2IDEwMDAgMzMzIDEwMDAgNTAwIDMzMyA5NDQgMzUw
IDUwMCA2NjcgMjc4IDMzMyA1NTYgNTU2IDU1NiA1NTYgMjYwIDU1NiAzMzMgNzM3IDM3MCA1NTYg
NTg0IDMzMyA3MzcgNTUyIDQwMCA1NDkgMzMzIDMzMyAzMzMgNTc2IDUzNyAzMzMgMzMzIDMzMyAz
NjUgNTU2IDgzNCA4MzQgODM0IDYxMSA2NjcgNjY3IDY2NyA2NjcgNjY3IDY2NyAxMDAwIDcyMiA2
NjcgNjY3IDY2NyA2NjcgMjc4IDI3OCAyNzggMjc4IDcyMiA3MjIgNzc4IDc3OCA3NzggNzc4IDc3
OCA1ODQgNzc4IDcyMiA3MjIgNzIyIDcyMiA2NjcgNjY3IDYxMSA1NTYgNTU2IDU1NiA1NTYgNTU2
IDU1NiA4ODkgNTAwIDU1NiA1NTYgNTU2IDU1NiAyNzggMjc4IDI3OCAyNzggNTU2IDU1NiA1NTYg
NTU2IDU1NiA1NTYgNTU2IDU0OSA2MTEgNTU2IDU1NiA1NTYgNTU2IDUwMCA1NTYgNTAwXT4+DWVu
ZG9iag0zMjkgMCBvYmoNPDwvQmFzZUZvbnQvQ0VMT1lFK0FyaWFsL0VuY29kaW5nL1dpbkFuc2lF
bmNvZGluZy9GaXJzdENoYXIgMC9Gb250RGVzY3JpcHRvciAzNDEgMCBSL0xhc3RDaGFyIDI1NS9T
dWJ0eXBlL1RydWVUeXBlL1R5cGUvRm9udC9XaWR0aHNbNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAg
NzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3
NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCA3NTAgNzUwIDc1MCAyNzggMjc4IDM1
NSA1NTYgNTU2IDg4OSA2NjcgMTkxIDMzMyAzMzMgMzg5IDU4NCAyNzggMzMzIDI3OCAyNzggNTU2
IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDI3OCAyNzggNTg0IDU4NCA1ODQg
NTU2IDEwMTUgNjY3IDY2NyA3MjIgNzIyIDY2NyA2MTEgNzc4IDcyMiAyNzggNTAwIDY2NyA1NTYg
ODMzIDcyMiA3NzggNjY3IDc3OCA3MjIgNjY3IDYxMSA3MjIgNjY3IDk0NCA2NjcgNjY3IDYxMSAy
NzggMjc4IDI3OCA0NjkgNTU2IDMzMyA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYgNTU2IDIy
MiAyMjIgNTAwIDIyMiA4MzMgNTU2IDU1NiA1NTYgNTU2IDMzMyA1MDAgMjc4IDU1NiA1MDAgNzIy
IDUwMCA1MDAgNTAwIDMzNCAyNjAgMzM0IDU4NCAzNTAgNTU2IDM1MCAyMjIgNTU2IDMzMyAxMDAw
IDU1NiA1NTYgMzMzIDEwMDAgNjY3IDMzMyAxMDAwIDM1MCA2MTEgMzUwIDM1MCAyMjIgMjIyIDMz
MyAzMzMgMzUwIDU1NiAxMDAwIDMzMyAxMDAwIDUwMCAzMzMgOTQ0IDM1MCA1MDAgNjY3IDI3OCAz
MzMgNTU2IDU1NiA1NTYgNTU2IDI2MCA1NTYgMzMzIDczNyAzNzAgNTU2IDU4NCAzMzMgNzM3IDU1
MiA0MDAgNTQ5IDMzMyAzMzMgMzMzIDU3NiA1MzcgMzMzIDMzMyAzMzMgMzY1IDU1NiA4MzQgODM0
IDgzNCA2MTEgNjY3IDY2NyA2NjcgNjY3IDY2NyA2NjcgMTAwMCA3MjIgNjY3IDY2NyA2NjcgNjY3
IDI3OCAyNzggMjc4IDI3OCA3MjIgNzIyIDc3OCA3NzggNzc4IDc3OCA3NzggNTg0IDc3OCA3MjIg
NzIyIDcyMiA3MjIgNjY3IDY2NyA2MTEgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgODg5IDUwMCA1
NTYgNTU2IDU1NiA1NTYgMjc4IDI3OCAyNzggMjc4IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1
NiA1NDkgNjExIDU1NiA1NTYgNTU2IDU1NiA1MDAgNTU2IDUwMF0+Pg1lbmRvYmoNMzMyIDAgb2Jq
DTw8L0RBKC9IZWx2IDAgVGYgMCBnICkvRFI8PC9FbmNvZGluZzw8L1BERkRvY0VuY29kaW5nIDM2
NCAwIFI+Pi9Gb250PDwvSGVsdiAzNjIgMCBSL1phRGIgMzYzIDAgUj4+Pj4vRmllbGRzW10+Pg1l
bmRvYmoNMzMzIDAgb2JqDVszNTAgMCBSIDM1MSAwIFIgMzUyIDAgUiAzNTMgMCBSIDM1NCAwIFIg
MzU1IDAgUiAzNTYgMCBSIDM1NyAwIFJdDWVuZG9iag0zMzQgMCBvYmoNPDwvRmlsdGVyL0ZsYXRl
RGVjb2RlL0xlbmd0aCA0ODgyND4+c3RyZWFtDQpIiYSXW48dVxGF38+v6Ecbqdv7fpGiPCROEEhI
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
Ntm3T+FgJVMN0yTwqfGz45XFQzASkgFXa1JmRABGsHfTFL2KdGsyBHFOmjGIJcauZAt0yRd4BdYB
jvPjRkEEMleRy2JmSAy8K8l6PwzDWXlwhVHJ0olVaieVNXBcq+BizMMkcIQ2vpnGgKPQ5hEC7jpP
R8Gq1OQZo+YM2uj3Hbcved6JX7Q+bktsaHFGQsOkl7APFDtFk3HEkXtQc1iY2bykqyMFdKmWmZ2j
zFnhXT+7WjYXLz6+er88fHjxw6v3b5ez2/fnTy+3F8+uvnu8gDc8enT5GC8931zu/l66Xuz8SwRy
2f26CYJv1oqtfATwRESxtkQdVZfd/ebns6ttW85e3b/+9O7N2y3G3tntcrMNjs8+/vF5+8vu+831
zvzDwf/kYpsuXux2wwdOSw5Z9dRY+9g5RTDDiuA8mx/XW89DP/++/LQFtp19ePXmm+VqOHa7XF1i
yx935s/XgtWnJ250swIUGCC3IClIwZIbCjCgasDaPHiJnHhx+3Fbl7Pftwjs2e3969tPW4iKsyU4
3/dHIx4X3z6+vH755N3d3Yt3b98vl3z8GzZ/i39PkZ4/MeaXZwuPjZaXGZKLJ/dlefxh5vwvAQYA
6cRqJw0KZW5kc3RyZWFtDWVuZG9iag0zMzUgMCBvYmoNPDwvQURCRV9GaWxsU2lnbjw8L0F1dG9X
aWR0aCB0cnVlL0ZpZWxkQ29sb3JbMC44NTg4MjYgMC4xOTk5OTcgMC4xNDExNzRdL1NpemVbMTA4
LjA0OCAyOC4zOF0vU3VidHlwZS90ZXh0L1RleHQgMTY2NDQzOTA5L1R5cGUvRmlsbFNpZ25EYXRh
Pj4vQkJveFswLjAgLTE1LjkgMTA4LjA0OCAxMi40OF0vRm9ybVR5cGUgMS9MZW5ndGggMTcyL01h
dHJpeFsxLjAgMC4wIDAuMCAxLjAgMjIuNjkwOSA0NjMuNDQ2XS9SZXNvdXJjZXM8PC9Gb250PDwv
VFQwIDI0MiAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0+Pi9TdWJ0eXBlL0Zvcm0vVHlwZS9YT2Jq
ZWN0Pj5zdHJlYW0NCjAgVEwKcQpCVAovUCBCTUMgCjAuODU5IDAuMiAwLjE0MSByZwowIGkgCi9U
VDAgMTIgVGYKMCBUYyAwIFR3IDAgVHMgMTAwIFR6IDAgVHIgMSAwIDAgMSAwIDAgVG0KKHB1Ymxp
YyBwYXJraW5nIGFyZWEsIClUagpFTUMgCi9QIEJNQyAKMCAtMTIgVEQKKGZyZWUgYWZ0ZXIgNnBt
KVRqCkVNQyAKRVQKUQoNCmVuZHN0cmVhbQ1lbmRvYmoNMzM2IDAgb2JqDTw8L0FEQkVfRmlsbFNp
Z248PC9BdXRvV2lkdGggdHJ1ZS9GaWVsZENvbG9yWzAuODU4ODI2IDAuMjAzOTE4IDAuMTQ1MDk2
XS9TaXplWzE0NC4wNzIgMTYuMzhdL1N1YnR5cGUvdGV4dC9UZXh0IDc4MTAwNTMxOS9UeXBlL0Zp
bGxTaWduRGF0YT4+L0JCb3hbMC4wIC0zLjg5OTk5IDE0NC4wNzIgMTIuNDhdL0Zvcm1UeXBlIDEv
TGVuZ3RoIDEzOC9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIDM2NC44IDIzMS44ODNdL1Jlc291cmNl
czw8L0ZvbnQ8PC9UVDAgMjc4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XT4+L1N1YnR5cGUvRm9y
bS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KMCBUTApxCkJUCi9QIEJNQyAKMC44NTkgMC4yMDQgMC4x
NDUgcmcKMCBpIAovVFQwIDEyIFRmCjAgVGMgMCBUdyAwIFRzIDEwMCBUeiAwIFRyIDEgMCAwIDEg
MCAwIFRtCihGcm9udCBlbnRyYW5jZSBvbiBFYXN0IFJkLilUagpFTUMgCkVUClEKDQplbmRzdHJl
YW0NZW5kb2JqDTMzNyAwIG9iag08PC9BREJFX0ZpbGxTaWduPDwvQXV0b1dpZHRoIHRydWUvRmll
bGRDb2xvclsxLjAgMC4zODQzMDggMC4wXS9TaXplWzc3LjM3NiAxNi4zOF0vU3VidHlwZS90ZXh0
L1RleHQgOTY2NDAwMTkzL1R5cGUvRmlsbFNpZ25EYXRhPj4vQkJveFswLjAgLTMuODk5OTkgNzcu
Mzc2IDEyLjQ4XS9Gb3JtVHlwZSAxL0xlbmd0aCAxMTgvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCA0
My4wNTQ2IDM3My44NDZdL1Jlc291cmNlczw8L0ZvbnQ8PC9UVDAgMzI2IDAgUj4+L1Byb2NTZXRb
L1BERi9UZXh0XT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KMCBUTApxCkJU
Ci9QIEJNQyAKMSAwLjM4NCAwIHJnCjAgaSAKL1RUMCAxMiBUZgowIFRjIDAgVHcgMCBUcyAxMDAg
VHogMCBUciAxIDAgMCAxIDAgMCBUbQooU2lkZSBlbnRyYW5jZSApVGoKRU1DIApFVApRCg0KZW5k
c3RyZWFtDWVuZG9iag0zMzggMCBvYmoNPDwvQURCRV9GaWxsU2lnbjw8L0F1dG9XaWR0aCB0cnVl
L0ZpZWxkQ29sb3JbMC44NTg4MjYgMC4xOTk5OTcgMC4xNDExNzRdL1NpemVbMTI1LjM4OCAxNi4z
OF0vU3VidHlwZS90ZXh0L1RleHQgLTI4NTM2OTgyMS9UeXBlL0ZpbGxTaWduRGF0YT4+L0JCb3hb
MC4wIC0zLjg5OTk5IDEyNS4zODggMTIuNDhdL0Zvcm1UeXBlIDEvTGVuZ3RoIDEzNC9NYXRyaXhb
MS4wIDAuMCAwLjAgMS4wIDQ0LjggNTgzLjMwMV0vUmVzb3VyY2VzPDwvRm9udDw8L1RUMCAzMjkg
MCBSPj4vUHJvY1NldFsvUERGL1RleHRdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3Ry
ZWFtDQowIFRMCnEKQlQKL1AgQk1DIAowLjg1OSAwLjIgMC4xNDEgcmcKMCBpIAovVFQwIDEyIFRm
CjAgVGMgMCBUdyAwIFRzIDEwMCBUeiAwIFRyIDEgMCAwIDEgMCAwIFRtCihzY2llbmNlIGNlbnRy
ZSBidWlsZGluZyApVGoKRU1DIApFVApRCg0KZW5kc3RyZWFtDWVuZG9iag0zMzkgMCBvYmoNPDwv
QURCRV9GaWxsU2lnbjw8L0ZpZWxkQ29sb3JbMC45ODgyMzUgMC45NTY4NjMgMC41MjE1NzZdL1N1
YnR5cGUvZG90L1R5cGUvRmlsbFNpZ25EYXRhPj4vQkJveFswLjAgMC4wIDI0LjQzNjMgMjQuNDM2
M10vRm9ybVR5cGUgMS9MZW5ndGggMjIwL01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgMTYyLjkwOSAz
NjQuNzk5XS9SZXNvdXJjZXM8PD4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0K
MCBUTApxCnEKMSAwIDAgMSAxOS41NDkxIDEyLjIxODIgY20KMC45ODggMC45NTcgMC41MjIgcmcK
MCAwIG0KMCA0LjA0OSAtMy4yODIgNy4zMzEgLTcuMzMxIDcuMzMxIGMKLTExLjM4IDcuMzMxIC0x
NC42NjIgNC4wNDkgLTE0LjY2MiAwIGMKLTE0LjY2MiAtNC4wNDkgLTExLjM4IC03LjMzMSAtNy4z
MzEgLTcuMzMxIGMKLTMuMjgyIC03LjMzMSAwIC00LjA0OSAwIDAgYwpoCmYKUQpRCg0KZW5kc3Ry
ZWFtDWVuZG9iag0zNDAgMCBvYmoNPDwvQURCRV9GaWxsU2lnbjw8L0ZpZWxkQ29sb3JbMC45ODgy
MzUgMC45NTY4NjMgMC41MjE1NzZdL1N1YnR5cGUvZG90L1R5cGUvRmlsbFNpZ25EYXRhPj4vQkJv
eFswLjAgMC4wIDI0LjQzNjMgMjQuNDM2M10vRm9ybVR5cGUgMS9MZW5ndGggMjIwL01hdHJpeFsx
LjAgMC4wIDAuMCAxLjAgMjgyLjc2NCAyMjUuMTYzXS9SZXNvdXJjZXM8PD4+L1N1YnR5cGUvRm9y
bS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KMCBUTApxCnEKMSAwIDAgMSAxOS41NDkxIDEyLjIxODIg
Y20KMC45ODggMC45NTcgMC41MjIgcmcKMCAwIG0KMCA0LjA0OSAtMy4yODIgNy4zMzEgLTcuMzMx
IDcuMzMxIGMKLTExLjM4IDcuMzMxIC0xNC42NjIgNC4wNDkgLTE0LjY2MiAwIGMKLTE0LjY2MiAt
NC4wNDkgLTExLjM4IC03LjMzMSAtNy4zMzEgLTcuMzMxIGMKLTMuMjgyIC03LjMzMSAwIC00LjA0
OSAwIDAgYwpoCmYKUQpRCg0KZW5kc3RyZWFtDWVuZG9iag0zNDEgMCBvYmoNPDwvQXNjZW50IDEw
NDAvQ2FwSGVpZ2h0IDcxNi9EZXNjZW50IC0zMjUvRmxhZ3MgMzIvRm9udEJCb3hbLTY2NSAtMzI1
IDIwMDAgMTA0MF0vRm9udEZhbWlseShBcmlhbCkvRm9udEZpbGUyIDM0MiAwIFIvRm9udE5hbWUv
Q0VMT1lFK0FyaWFsL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250V2VpZ2h0IDQwMC9JdGFsaWNBbmds
ZSAwL1N0ZW1WIDg4L1R5cGUvRm9udERlc2NyaXB0b3IvWEhlaWdodCA1MTk+Pg1lbmRvYmoNMzQy
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
0mAWnYejGacRiNLG9Ma0KOGnJUqrkA7WSq2nezraZulrtVII6aZohpjjJ0onSGvu2az3KWFDavyE
mHDPmqX/taGWc6yD2dI4IXmne1/eSe0ZKkwFAsiOiktydq7kGhpyleo1L7kJyZ0iqSh3hSK3S+Tq
6mrC//7+T9T8bvErsNlcmVoRir+ERcWJ5AcZ7giDQ7jW4aHCLF6sxLOiVMQFlqhJSyvnqA3bNInX
JuKaVxg/UYtqczFe896ROKS0MiV3NzFZ5t0ZG5enldNpDhfSq5THlTj+enBlM/xG+I3wCfiEErfC
BldYktepSd5Qn+UBf5avnLVo/luAAQD827HZDQplbmRzdHJlYW0NZW5kb2JqDTM0MyAwIG9iag08
PC9Bc2NlbnQgMTA0MC9DYXBIZWlnaHQgNzE2L0Rlc2NlbnQgLTMyNS9GbGFncyAzMi9Gb250QkJv
eFstNjY1IC0zMjUgMjAwMCAxMDQwXS9Gb250RmFtaWx5KEFyaWFsKS9Gb250RmlsZTIgMzQ0IDAg
Ui9Gb250TmFtZS9GR05GVkkrQXJpYWwvRm9udFN0cmV0Y2gvTm9ybWFsL0ZvbnRXZWlnaHQgNDAw
L0l0YWxpY0FuZ2xlIDAvU3RlbVYgODgvVHlwZS9Gb250RGVzY3JpcHRvci9YSGVpZ2h0IDUxOT4+
DWVuZG9iag0zNDQgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyMjE1OC9MZW5n
dGgxIDU3MjkzPj5zdHJlYW0NCkiJfJZ5VFRHFsa/269f0TQNIou4QL/XDa9do0YdRx2iuI4To5LR
MVGjQhAXBEUlikaFRI2KG264K6CCC5uooLigEXFBBETN0h1gYuI4tkeN8WjGhu6pRg4z+cPUOffW
rar7ql79+tVXDQLgjkQICB09plsPn/cnreA9Fm5hETHhsfPL/csACgZ8wiIWxMnZxbUbAN89AJs9
LXZ6TJ9DrToD/lrALW969KJps3dXjgDaFwF+PjMiw6daR4wrB/rf4vP1nsE7vHq2nQIMUPN20IyY
uPhxM87wcEAHYNiE6DkR4bQx4wGw8kveDosJj4/1W++aC5T9yJPk2eExkbWD9aOAmyrAZUnsnPlx
jk5IAaqXOcdj50XGpuU/fMTb+wBdNwjCakqGCI24S+zJd9HuTS1UYZrKSyOq3Jha5SzqOnR1XET8
RD6LKzeMHTlYRghkR71Ybf+Qerr0p/wQkMPhANQm8axzNfhyr4KTH4fD+fGI2nJjaOrktUrlzPl9
4YOCWmQuGletm87do4VnSy9vH99Wfq3btG3nH6CXZIMxMEgxte/QsVPnLu907db93R49e/2p95/7
9O33l+D3+g8IGTho8JChw/46/G/vj/hg5KjRoR/+fczYf4z76OPxEyZ+MmnylLBwfBoxNXLa9Bkz
o2ZFx8yeEzt33vy4zxYsjF+0+PMlS5clJH7x5fIVK79atXpN0tp16zdsTN60ecvWbSnbd+zchT17
9+1PTUs/cPBQRubhI0ePCVnZObl5x/NPnDxVUHj6TNHZc+cvFF+8hMslV0qvXrt+o+xm+a2KSlTd
rr5z9943+O57s+WHmlqovYfxjQ7hW3XBECwjh0pWjVdlC4HCaGGhkCAkCeuENKFCeKl2V48Wu4nj
xCniKjFJ3CheFR+JL5g/c7gkaE5qzmscAVEBswIuB9wIcOgT9Pv1v0i+UoA0VBopfSSNlyZKk6Sl
0kmpRKqWzNJT6YVkl1vIRtkkd5d7yf3k/vIQebIcKy+SE+StcrH8zCAavA1+BqPBZOhqGGUYa5hs
WGHYZjhsVBmZsYXRy+hrbGuUjB2NnY3DjeHGyEBVoGegQYGiUnSKp+KjtFb8lSCli9JLCVailURl
hbJaWadsUdKULCVfKVLOKSXKTaVC+U55YAo2hZgGmcJMEaZpplmmOV0SuvplGjJXZeZkFmY6jkX+
SjZm87P1tgXb+tsG2obYLtkc9RH1LxoGNDxveNHQYA+0x9kT7PWOeud3x7+4VBVUBtUEVY4QJIQK
i4UVnOIG4YBQKbxSe6hDxXfF8WK4uEZcL24SK8VnDEzvEqpJ1RRo7gSAU4wOKAmw66FP1Kfqn0ut
JVkaLoU2UZwiJUoFUql0T/pBei69lCF7cYqd5B5yXzm4kWKUHMcpJsupTRRbNVEcaRhjmMgpJjdT
bMkptjHqmyiGGac2UpTfQjG0mWKykqocbaZ4g1P8llPs10wx0hTFKYZxin6ZxszVmXmZr4515xRh
87YF2PpwiiG2wbZhtur6yfXPG4IbKb62y/ZY+wJ7opOi4z4/v0+53QbE994cR/tMp1dX8qgToL2r
rdbe1lZpK4D6yvqy/z+4T3oDT9VPRwLWBOAB1zCrt7WltYXV3aqzulm1Vleri5VZRatgVVnxyPmb
oW5lo+eaWrfwcVRjXPi4L/D447qkuqVAbVTtoroia/n9LnUbrDtqD9em1KTUpNesBWoynNm1fjVz
a7hi1nSvCanpWRNkGWYZagm29LX0tvS0dLd0tBgt7Sw+FjI/MVvND80/m51KCXOpudh8wVzIoyvm
Q+Zc81DzIPNAc5DZaDaY9T/t5PNxDZsZxy165juRDf6PuaZ/wA/rHpfdLrtcdr7Zr9dyfjV837Ij
19JHLbnCixAiGlVuEFcwO2cWzfvGiuliFq8LRH5nsB7cPvkfMY1no4/X5GnnaSu1v7lxbXSb4Oxz
G9dkm/GHxa3I7VvuX+q4iuqctwb3usZZda3eZOhGve1ZXR+n6fo1tXr/8Uq/e9LjzRqNse4tb/b6
zZy64c2Z67ilNLcuuhd4eAAeje/p0brRt20aFHAAK7BSmMxvrwf4ChuwFntxBAfhiSSOeDm24Bl+
wXpsx2oifh8/xT4cxa94jhdIRxauoRTZ+BQRSMZU3EAkruI6bqEMN1GOf2EaqlCBSuRgOp5gE+7g
NqoxA/+GFWsQhZmYhRhEYzZSMQdzEYt5mI/PEIcFWIiHiMdiLMLnWIolKEQaErCM/0v4Ao/wGGco
hbaTigRSkwgb6mkH7aRdtBsNsBMjF9LAQXtoL+2j/ZRKaeRKWnIjHaXTAbzEKzpIhyiDMukwHaGj
dIyyKJtyKJfy6Djl0wn8hruURGvpJJ2iAiqk0+ROHnSGiqgFeVJL8kId/kne5ENn6Rz5UitaR+fp
AhXTRbpEX5MftUYu8qgNtaXLVELtyJ8CSE9XqBT/wWv8iPskkUwGMtJVukbX6QaV0U0qp1sUSEGk
kIkqqJKq6DZV0x0UUXvqQB2pE37Cz3SXJbG1bB1bzzawjSyZbWKb2Ra2lW1jKWw72yEGsZ1sFzLY
braH7WX72H6WytJYOjvADrJDLINlqqPUs9hhdoQdZcdYFstmOSyX5bHjLJ+dYCfV0eoYdooVsEJ2
mp1hRewsO8fOswusmF1kl9jX7DIrYVdYKbvKrrHr7AYrYzdZObvFKlilul7doLarHSJEElWiIKpF
UWSii6gRXUWt6Maq2G1Wze6ye+yb/9Jcn81VXVccxu9Z++691zrrnLvPUQEJkATqSAJEMxgIxkKA
6L0XEwcIELBj45gJ2JhebLoQvbgApmNs45k4k2QSx3bcjTFFCCGEANGEEE0IIZQ7k8kHWG/+L9b8
HnVWFapzqkidV8XqgipRF1WpuqTK1GV1RV1V5eqauq5uqJvqlqpQt63T1hnrrFVonbOKOEJ72tcR
OlJH6WjdQDfUMTpWN9ZNdJyO1wm6qW6mEzmSoziaDZfwRS7lS1zGl/kKX+VyvuY8cB461c4jp8Z5
7NQ6T5w656lT7wZcywWdpJN1ik7VaTpdN9cZOlOmcANuqOfrBXqhXqQX6yV6qV6ml+sV+m39jl6p
V+nVeo1eq9fp9Tpfb9AFgdOBEr0xcFZv0pv1lvBP2xb+bTv0Tr1Lv6vf0+/rD/TuQGHgXKAocCFw
JlCs9+i9+kO9T+/XB/RBfUgf1kf0Uf2RPqY/1p/oT/VxjuFYbsSNuQnHcTwncFNuxomcxMmcwqmc
xunB9cF8zAnOwe6Yiz2wJ/YKvoZ52Bv7YF/sh/1xAA7EQTgYh+BQHIbDcQSOxFE4GsfgWByH43EC
voATgwXcnDM4k7O4BbfkVpzN1/kG3+RbXMGtuQ23xVW4GtfgWlyH6zEfN2ABbsRNuBm34FbchttN
N/O8yTHdcQfuNLmmB+5yhRt0ZSDee8OqtO5YVdZ56651z7pvPbSqrUdWjfXYyrRqrSdWnfXUygpr
LQBhuoKAIEhQoAGBwLZaAIMDLoTAgAc+REAkRFktIRoaWK2sbGgIMRALjaAxNIE4iIeEsPpWhsWS
aLW22kCS1RaSIQVSIQ3SoTlkQKbpye24PRfxeS7m21zJd7gKv4YsaAEtoRVkQ2toA22hHbSHZ6AD
/ge/gTkwF96AN2EevAXzYQEshEWwGJbgt7AUluF3+D3+gD/iT/gznsBf8CT+iqfwNJ7Bs1iI57AI
z2MxXsASvIileAnL8DJewatYjtfwBt7EW1iBt7ES72AV3nVz8B7exwf4EKvxEdbgY1gOK6QnfazF
JzJCRmIdPpVRMlo2kA2xngJkEcgYGUuCgiRJkSYkIpuYHNlINpZNZJyMlwnkUogMebKpbCYTZRL5
FEGRFEXR1IAaUgzFUiNqTE0ojuIpgZpSM0qkJFdRCqVSGqVTc8qgTMqSyTKFWlBLakXZ1JraUFtq
R+3pGepAHelZ6iRTZRp1pi70G+pKz1E3ep5yqDvlUg/qyXf5HvWiPFe76JJru+w61Jv6UF/qR/1p
AA2kQTSYhtBQGkbDaQSNpFGu64Zc43qmr+ln+psBZqAZ5HZ3c90ebk8z2AwxQ80wM9yMMCPNKDPa
jPHe9OZ5b3nzvQXeQm+Rt5hG0xgaS+NoPE2gF2gi/ZZepN/RJJpMU+j3NJWm8X2aTn+gGTSTXqKX
6Y/0Cr1Ks+g1+hO9DqtgNayBtbAO1kM+bIAC2MgPYBNshi2wFbbBdtgBO2EXzeaHXM2P+D1+nz/g
3SbPmxL6IvTv0Jehr0Jfcw3c4r28hz/kfbyfD/BBPiTbmkSTZJJNikmFCm8yP4bbJg0qxQKxSCwR
y8QKsUqsEfmiQGwRO8LlskfsFwfFYXFUHBPHxV/E38Q/xZfiG/GDyTStTFvTwXSGO+KEOCUKRbEo
FVfEdVEhKkUVVMFduAf34QE8hGp4JDvKZ2UnPsxH+CjX8hOu46dc7wTMc1ADj6EWnkAdPIV6ERCW
ACFE0AsIKdNlluwsu8iuslv4Pkfmyp4yT/aRA+SQcEuNEQlygnxRTpHT5UvyVfm6SJNz5Dw5Xy6U
i+VSuTxcWivlarlWrpcb5Ea5WW6V20Wm3CnflbvlPnlIfiQ/DYvuc/lX+Q/5RbjJvpM/yROihTwp
z8giWSLLRGtZLm/KSnlPVstaWa+E0oqVUb6KVA3FTRWr4lSCaqqaqUSVrFJVuspQWaqlyhbtVRvV
TnVUnVRX1U3lqFyBqofqqXqpPNVb9VF9VT/VXw1QA9UgNVgNUUPVMDVcjVAj1Sg1Wo3xgmosH+NP
/r+PsAUL53/7qHFqopqkpqppfNwBRzl2WHIRTgOnkRPvJDqpTrqT4WQ52U67sAu7ON2cXCfP6ecM
coY5o5xxzkRnkjPVme7MCJWEykLloZuhilBV6F7oQagmVGcsI4w02pBxjW+izV5vqjlgjpiPzWfm
c/N38y/zlfnWfG9+9GZ4M72XvVnebO/P3ipvnT/Zn+bP9F/xZ/mz/bn+W/5Sf5m/3F/hv+2/46/0
V/mr/TX+Wn+dv97P9zd4BeZnc8L8Yk6aX80pc9qcMWdNoTlnisx5U2wumBJz0ZSaS6bMXDZXzFVT
bq6Z6+aGN5cvuDFurFVsXbBKrItWqXWJ6u2AbdlgCztoS1vZ2kabbNtm27FdO2Qb27N9O8KOtKPM
WDPO7WXGW2XW5eDDYHXwUbAm+DhYa/5LdZmH93Rmcfycd7k/7s3N+7tqSaKWWEJEkKgaD6WYUiQi
iW06CJWU2FMMRuxL7CpFUcu0KGrGqAmDWkJtHbJYWsvMYy1BbfNM1bT43flmZv6YyXne5z65v3vf
97znPedzz3eAyTADzSDzrhlsV7Gr2tXsCDvSjrKr26/aNeyadi27th1t17Hr2vXs+naM3cBuaMfa
jZxip8Qpdc4655zzzgXnG+db56Jzybks7op74r743jlOX9AuscA6zq/RbtpDX/Ft+hMV0DHnBM2k
I5Qnu8sUmQalm+pcpOO8mJc4J7mF6cx3ZC/ZW/aRfWW67Bn+Xvih8MPhmeGF4UfCs+yQ7TtET7nM
YUdwS0c6ShSqqXTAQfPjBJyg44UVh5WElYadNV1MVzfDHWg+DM4Jzg1mBhd5g8VC5wqtpod0lDZT
Prejpdyef8PLOJ8/5Am0l3Odim4Nt6Zby63tRrt13LpuPbe+G+M2cBu6sW4Xk2myzHtuV7ebm+Q2
cuPcxm68GWKGmmwzzAw3I8xIM8pt4jZ1m7kJbqqb5qa7Pd1ebqLb3O3tJrvd3RS3R/BF8CVzMBT0
PfLYE570lKc9ywt4FbyKnu1hC57rhXvGC3qeV8l7xavsVfGqetW8CC/Si/Kqe5nBPDpMhcF5wfnB
BcGF1jhrvDVBnHD2QU996RxwDjqHnMNOoXNEnBSnxNfiL+K0OCOKRLEoEaXirDgnzour4pq4Lm6I
m+KW+E7cFndEGYjzBgiTDtXXS9aStWW0rAPODNaZOgvsSdE9dCrIk6EH6kGgUTedpJPBj2P6uD4B
hpzRRboYPBqrx+nxINNoPUbnyAayoYyVjUCoyTpXTwGd5oNReWDUQjBrmoyTjUGqZTJeNpFNZTOZ
IBNlc/kayPODfqp/BIUe6If6EdgTBH0qla8J9tS0hoE/w60R8nt5H+MBWNMetOlo5ut4s0A3MQt1
U7NINzOLdaJZYpbqBPOBWWbyQbfr+oa+CWLFglsNwK043clqZiWAY/XBsHiQq7XVxnpDx+pYs9ys
MCvNR2aVWW3WmI/NWrPOrDcbzO/MJ+ZTs9FsMptlC/m6/If8QXaWb8susqvs5vYxE80kmSunmJqm
tlNkos00M93MMDPNLDPbzDFzTZ6Zp/dTJEaU3kKRKoagIP0yjLvl11C2f7f89/KruA9Fufe/g2gr
/YGzoQ0P01F+QuU6aB+q6hRVo1/SWqi55ZRHFr2DO/MpDaZxfzlH+gXUFDpPYhTh2T7Qe/upKkf4
96D95sjzeGsOuVSH2lMPKMbFnOSPp350Tc2ilpQEHTmGp/t9/SV+vr8JtbNPnvJfkkNRUKiDqch/
pC/5f6N4vLEC9XWN8yvupjexynQ8uQ7ac43sr9gf4v8MD6KhQItIUTIVcaGIw+xZVMYRnCs7YpaN
/k7/GJ56lfpDz66BNmvBnUW07ucn+0VUFWtMxKyraReYsgcxOUhXOEw/8Tf5TyiSGlMX7KeAirlQ
hl7OCLVDxDSiFEut8MtoOkQnqRQa8IgYrcN0Ir6vv/UvUGVKoF7wdgvevMPP0H2i/5QnVCe/A4Uj
LsvKo03HoUmj0AmncG/0t6PFevk+VcCKCbBMyka8V2H2q+i196CPLpEb1Xb13KoRuu6H40Ri6GNa
R0egdCOgTMfyTCiuW6KjyEBnc1MuV9vUucAg7HoAjaTFtJ2ecSX+Bafyr3ko53IeGLUa+rWU74r2
oqcYju5lqMyRB1UHWLoaq2ahqhZad0N9Q8dCZ0PP/ER/LqUiH2bA+xW0HjvbRyXQRJfpGt1kzQ6H
w2pzNPfiybCpIPCnvJW3cQFWKeWbfA8q4ik/h1ogqITq5Z0+rK54X0xAd7YWLCmnyQPxk6wm66CO
W8g28ldyNLzKkx/AdssbKkqVQK0mwlbqDeg9tuuj+okVFphZgSqcebHxZaOXV0MUmhdaGdoVKvBv
UBWcYRSiUIvawPtBsGE475XIuD/SeQ5D7KK4EbflJEQmg4dxDk9EJGfzGt78b9938AFE6SI/hs8u
dEq5z02gLzqIFNgAkSVy0GHmiwLxrfhZBtBbGFlFNkLt9pdZcpycJFfKnfIMurqb8kf5AuYrW9VS
dVSMilOdVYYar9arMlWm+4F4ty3bGmnNtfZafw+8Hmgb6BFIDfSHUt0TuFBhYPk3D1++P9P//PF1
9Jxvyd20RDRXkeBxMfI5gzJlskCmiq08T0zhAlFPT7Rai9bcnZ6oGMT6hNiAfrK1TOZunE7DRMJ/
ZrMqq89xaaO+oofqAPZWjJknWmE8VTy2wmgXk2iFNY/LZipOnqYr8hoH1Cf0V2VzNX4otsgeyIKD
qq3uS9FyLe2QOTyFdou3iOznFRYhj7vz5+BCT07kf0qfpOiOLGopb9EsGi4u4Ss6gebRR5yphtAS
as65VEafoSpi9ShQtQp/LbLVAvEKF5BQ27C7VlyPpa5Ms7m/XGM9FpdpPJUom67K38P7ErFDJqsn
Oo2HogKm0FzK8WfQJN1XneMhaP96U311HXTLlYkqGtdpoEo/MG0Pqns/ONBeJuNOBDInCXnRC4RY
A1sFTihkUDZqvA8oVkwFVk+xl4bocAZ1iNTpUBq9439Gq/0hNMrPp3jwIM/PxYxb6TYtpa08JzSZ
xlBNVM5VTtKdRInu5MeLBeKySBcr//98Ee36HEH3YTvwT1v9JS1QFymd2vmL/G+Q3Q1B2NX0LnWl
77DLR1jhbVlIzUPdxRd+JzkG+71Gqf4WvxbbNNQfQSl0gDYHNA0KxOGMd/I57HcyZYk0f5zMCmUj
DksRhTcRrfHgz3yVo2apn/7FeNX8tnFc8ZnllyiS0oqy9cGV5dmMlrK8or8ax7KkSmtRpC2rdvTt
XVlCl6KoyI6TKHEa1CkKECjc2GsHDXowmlvOPc3aQkEZPRi599R/IAcBLdoIKALHCFAb7JtZLk0W
bVFyOft7HzPvzZs3b4boIez5R1BvvoJ983vYObD3jet3P7790Yc7H7z/3q13b97YfmertLFuXltZ
Xnr76gVjcuLH42Oj50fOnX3zR2dOnzp5IjOsHx86NpjWBugbKjnaf6RPSfX2dHcdPtSZ7JDb2xLx
WGu0JRIOBQMSRsM5mrcJS9ssmKaXLmU4TQvAKDQwbEaAlW/WYcQWaqRZ0wDNrX/TNDxNo66JZTKO
xjPDJEcJ+9M0JRW8Om8C/nyaWoQdCHxF4C8ETgBWVehAcj3b04Rhm+RY/pNtJ2dPw3BurDVLs6XW
zDByW2MAY4BYN91xcfcEFkDqzo26EmpJgFMsRadzrJdOcw9YQMsVNtncvJmbVlTVygwznC3SDYbo
FGvXhQrKCjMsnGURYYbc4LNBD4g7/Mx5WJHRhq3HN+lmYc1kgYLFbXToYHeadX+63/OahMGTWfOz
RqkScHI9NwgnHeczwr6aNxulKm8tC8aAvpKWt508mH4IQZxdJGBNumuZDN8Fk4TPhM/Km1+J5jjH
vklYlE7RbeemDUuTchhauKM+TqWMveo3KJUjzpJJVTapUKsw3eceQs7CnSe9BultlmSGXbnDC6zb
1l4D8UQjKNVlAgl1jmYX6pHF3CM6AwnBSJGAJyaFOY3wpjSCnOIIqMHHwtCLbcKK3GDRrO3Io5zP
+7OQJlPifI8gA+jBt82cQo0T1uTvEYc8T+qpBnIfM11nx4/zFIlkYU3BxwlBn80Mf1KRKN2RCbwg
fGgOYluwRk9C+FWVL/CDioE2gGDledOjCdpQHiPjpG4xyeaSZ77k8DKXlH1JvbtNIZN3EYYyc5i1
pOtPu9zVmdseZbjrf4hLnnx2kc7Or5ok59i12M4uNVGefKQuqyHWmTUDilRDkhIQUkjKtboyJ8w4
C2rwhEVSb1YiLZCVgoNJnsn2Ja+1WlX1/+xUqf6D9xKv191qbrJRvZkea6Kb3Is7AXAYDtfZpVXH
aW2SQap5BmdqL8h4tGSqJMvQMuxMDZ5K9dkI/1kKMyBkWa4A+eexamSTolLDFnx4dmaG81DoHCdP
Sd6xnUKlWt6gRKbOnvS19LWzk7P9xKlUnz5QWP6hBbHaxqOZYcoljrPpooAGZgzFxQKcyz6w2Nu6
RdmGTlVqlmAu7iiKq0t2FpCEplyK7827Br63uGruyQiRe0vmYwlLWXvKcgdAZu4RhAzBlTiXMzlB
OIFmMYTmsdQi9JU9A6GykAYFQ9DFCkaC1+LzMCpWJI8ne4bSwpAB18piJehJDF87CLwWj1f2tI/V
tFtAInPJUwQnDhJC7+MCsWQareeMUWPMmJAmJYgIZz0GzlPQHcPoyQSexIoLYy4IdgWX3TFD2RMj
LdQ0y6DJeeU6Dzznag0DgT1v4suvZ7C8aj6ZQDC+aEFjin94pQUnGveQKEw8z6/pZlxyZhchA7mw
dURpbRAT3pFhyn5Kf67y2bEVekcFJmUEqjUouehin+U4BL4UolJcMb2Wi/BwH4xksfKGr6v0QU68
JuPQVeTVkz5eQ+rWfuFb+wisceD45ljxP1oD7xm+zlvxCPfdtxD17MMp7Rl11pxVyEeVHeGGa34A
2dZniRHAk98JT7A4nIpwJ9jie4nwIgdlkl52pau6eGPxdi7T3CZo8B8cumdhsVSyaXEtyjcNT/z/
qoQblPhBIgZ35DGfwjXK274Oe6eZ3K6Tef6DO4p2wisTMBexZVV2U2G3LL2uUuBzdmBvj/INPio6
X+Q/G46di6xcLICLcN7MFCkwLgODmBteBPlB7fCbU7EA3XiUa5bY+3rTkFATMJQoGIhPh5XniG0R
G2oInodgK4SF4E224PpEC7xuzHnzmYPiD6+Cswh9EV82hUWgnm0VSpQXV8bz3Ys+9zEI3qFFkyHF
cSjkELio5UEZhk+zcHqGv+DZ0WmhxG92W/xiV/KuHOCuiA4fTclR1QIVSROxhMDBRtvgTdHh98Z1
W4dIdDhJh5x3YMOvQ60KposrNtQ1IpM8EUtdUICCIMxwyoKBPMWoxhWhv3jS7D3dXY9orzni+UD3
lFvEqOISweZ8lYh4AHyoM6l7BIR88nhhVZwLsFA8eCFtBsJrQFYpvDfsoqXaseH1n+FdFX/BvG7A
sfwDAPLd1fC9ucZKuMaSswvXFQhsRhQ5FIIvCqAImtqV8H44UpG+NDpRKLgfQK2R4D5GvS3h0L4U
+CP8JYziL/EJ1KPLL8ZfjV+Vn49feTWOJgHLL6E5fUrtUDs0aDAU2Zck8OylEUL/RCT4DP60oLXq
X4J/D/0ZnQpcYHd180IHGqz+gBIogQ20gtINWPPx7kqPHI9XOOj1QQrAhaNCL1H9K4qhmMDxBhxr
wH0NWPHx7kqgJxYTw0k+wB4wjq0UA8Xg7cDHwaA2eDZwvi8bmIn85Eju6PRAfnAxYEXWjlw7dr+z
jVaq3+3KsrQ84APNB2kfDPoAlF/sJjxlD2g+SPsAlF8YeY6OJdID0kBgUHur/U06reVOrpIVuqzd
it1MvNu2dajUcyf2aeLT9l/KPxu4rf064MTuJ5z2z+W7A7/Sfpt41P7ocL8bFudVRk0nlXQqmh7C
aYSGUsngmdNpVIJkSGTuKPcVSdG6Epn+QQ1roa5QpfrciMfj4eVQfyba398VQJMHkwd6R/L8Ovxq
r3Xckew+f/LA+ypGRhtoS8RCat+RfgX+rMF/tTDWBt4AXjjUr2RSMKK0/JsUTh10oQyG64mR5BwZ
EzwHl94d/AUO4wpmRjzTTzo7p5a5YXDlGyPBKe4KzOBy9IJcfY7iKC4WMlr9rr6oUT9Z/rASTaMh
PFSp/m23rU1aHuLziXFjQ6kzaryWPmpbbb3VlkSiwntBjHA6Wal+K3olxXIkBPjBaOfdk0sE0rf3
dPF6jw5Jv35lX9f1A/kA2qvyC11fv8Lh8wMIlw6P/Gpd3+fN83+xXfbBTZt3HNcj2VIkW7Lk2JJf
lBiC47wo4CR2XgyhEeWlUI4SYBHLwCVZYRBICYHC2NYNWAeDtuv4Y+xu5TZgMG5k7QIkECDclW65
7uXYhdugu3IwuBu5wW0FbuPYeEmy3/PYSry7JVj5ypIfP3qez/f7+4FXStHwyqUQyJaqSirdZYz/
oNwTg4JXuB+F0dSwOtV5jkn0dUx1qYUgTnfAVgQajUZDSXlT8XhlVUt+XSGdqK6trUnGSmLRklis
Jllbm6hWVY2LxaYUsX6fpjo0VfX7WHZKUTS2sl9c9dtvdnYva1o5Y7RjSfvab/3zB0ef7HFe8Hx4
4uSRVD367Is7v77n2Y9/M/qvH6E/yxu/t/zFLXPmrp2itRl1R9d0fry6/fIu6Z33dq1YnEhsKJ1x
ZtvWoS1v3IPGhnp57K5Dd7xAlVJ1TBH2tVnBi3x5UAyVl4nl5Smx1l8Xnl6+oDwtpsvXi+3lrZVv
i3vK3lcPhk6I/tJzY3f7XC4Ww3/XDGJ1PNhdejY4UDoYHCr9o/9mad4cFRXirVQwml4vAZRgWoMp
WYxVRIsEjIryZMqRqljgmF9h5bUYX8lrN7a5v+v+nfuJ+MRQ6pIScsjxaFKrnuwLrCrrLKPL9LjU
KH1fOiSNSc5DUo/0QGKkgbGnGbT6Lcnt8dDNEuYJe1jCk/DJMtssuUURjqzHA8cYwajPkgKEsDOW
JOmMdo7u7g1UZBJFsgIVgvBic+CAT9c5avxZqLklQrXOuMra5DYK+H48zjQFTNusU2PPM3ybLoti
MZlU8eQoxjUbPv8wXfjdqAOzCud3YEGJeERWFsQN04WnHSUThvPnffjro+foFaZUYlIxOTYpVhnr
iTlT4E/iAgilTzNiAGxHvr7XilXh66ZYOCVZmbqUog+nUEqDr+nHg2t55PFN3tKKA0XxvOyqxG3f
xTO+MxUrHv2IHWLpCNvI0qwv60bWl/0Amx1nmsVKePlZN344NoAfjnXjJ8NHtpmV8B6wMn4Stqoe
+9D+SXdl/GgYMjgMX0h//si+2DCCj8PDONvugF3h9A4YNJ7z4a5M2qVI0mHPErN2wR+qK9xPMYbh
dktl55ip/R2w1yUCU0004wpomu47x8RPd8A2g2Gr4wlwrQKDp5QEjAjGLcZ+JG6tI781yRLsV67k
BZrYV/X7fao2JcawnESDBJPDTUzD6vPrey6+tGV+zYbra1Fi7t4dXys4Gdh4Zd/e7iaZ14ou6tqX
BztXVr/evu6nsYK3muf9Yvcru17xSWIoWixsnDqzpSvQ9c5Cs+3ladsfPts9sx7dLNXl0kXx+a0r
Fs/8Kq7OTWN3mc/BxyG6Dbv4IqWNPcww2GcJedlN5G3hsYVsCwXEeQzsKZqUnqS0w4M8GOcmahP0
Fw6v7uICusOFJD+Xh9HiyM5ybryznIx3liO78Iern5DCIw+mq/GrqjJsvsS7UUSfnT9bW5a/TGvN
b9UO0geZ98Vj8rGQO08MCuvpdma9c6t7k7hTPO4+w58VzrjdqnuP+680IxWt8nR6dngYDwJbmrFK
Ck+qFaa1nzpM3aYeUjzl8bioiTnqMPVZQk7B8dgFx/RYnqiUR/xfFIZ1+5/bqLH747dRUZcRQYhC
CJmSkWkxzCzkyMyuGqrNuGISvIWpRib2EpqPqUYh/C1oge63zeS3zeTPmmmy5Y8OcSjCNXI0J+EB
OAEPwJGUxAtMbucynztrcVXh5CBu33J8MuGc9ObsfyTPU2jsUn0LXN38yMBHsh9gEkBZTt+Bf6SS
Qf1qQZmPhk0BekkvONbrCIAD+jocLpeXWMHF2bUrnsAvMAHSsAsoJenFNWu8ZGHYmYZTBQ9+eX30
35vv7fvwRqQnuONLe7uPfWf9e2i31j+ECpDwAaJ39RwJb+j49Z8+/dW3oQLNA3JvOS9QClVA55MK
9KZAO8RiMSnOEZ01vhp9Of0FYalvmb6WXu1cw7/ma9UvRa46r+XfDA7nD/seaH8PDhfcjoxF1EjE
CDWoDaGFoU2R/RFuGh0Vp6nT6RpxIT1XnOdboC8XLHGtOMz+TX2KHkky8jOSS/ZQYeBGoQQ/hHkA
gJjoZAN2kEMnm0DUgI1RHzS5igcyf+JWz//FLWp5imX5ioJkxVRalZ2KI2Jiq0RMbB7Fi2uAQioK
DkuFxcZSAuQa9J5wKzChSJgJOL9Pch/Ef/owWsqAPbuzlvKG16bMa1PmzVB21vJGObv75mRylznD
+ogb4m5xY5wD07eYY7hCYmES1FxhxtqESFIsuRAhMliYbCJNlB22hkGap5GcRijd1UB6K3nEaIBO
C7PXgF8KDmUMHkQxBPEpxg98mQLkLpIkSnCFCXcuzkMBcEBcwptqNIC2yTU4ciFzM7RBEiOCGvRO
gB1Tv2Zwx7Wt66++1frDeO/IpA+2bvvZz7+x/cien7z77OghxLy9ZBYtPZ1Hey///uNPrl8exD3P
Quh5CiEr/UCcSojTIpTup5uZtDPNN7vWMBucnfwaV54fV2Oy1CDMpVgV6PhY4v3M+dT3OOSo8k4P
VumzvItCs/Ql3pXBpXqb9/VQm76d3e5/TD8OyJSKPKKmNamt6iaVUXXPfvmwTMuyI6wLHHWB7sZe
Ja0Aaa7JVsuQOQfyIcc0IOzhOFVaTtes2eT1WpopQotAel4RM4LnJ+KmB++YiAflS8qTJ0UkhiJw
1lscS+K//bgNiKCIOmA3KGctNTFeD2S7z5YzXJn5lhzlzGh50ubFxiwbU6ZhcZNyENIJQplQ0wk8
KgEJEKrLQQh4MRZhfO7Ae4DTY9JTE6iAHOjCjTskutINI10NCJd1DBFKk6qOujaHzQKKlKidUA2c
lVlxibpCsVAQZBUzJnbIlFwp0/mMLDjys/EmhEm8Cdl486ZWvZqOG0oinu7KiTiZSlRTio+brGLk
0OQYKffMqxcq7p+/N/oA+W5cQxJ6flc4vfu1d0eu00vc9da+N08gSzvahyKIQW5UOvqX0SfypJ4L
69CBPbPXHccE7oWS3QCZx1AcLWACe2khu96MLVhbcCBmBcm2I9iriSZzQjtztMPWfRbtyu4RYwvW
FhyI8UFHcirghHbmaIetYVBHNmgYW7C24EDkzNSORipHO3O0Y7w1rrP4WszOYn4/f5g/yV/ib/EP
eY7iI/wmfid/KPvWbX6M/y/n1R5UxXXGv909u3sfgrvAvV5BI4KgQnxxCRZD5fqKxAc1WtEatUat
TQQThWSaZGqCgwpGmUnSSjVNFRgzWnFGtGRq0mRCZzJxnKmJ7RT7mjamYpqUpGUcwkw0sP195+7i
9eaftnfub75zzp7Hd773CUzwIymbQtX8hvYrp9vdoaBKe04hQzdEwDDzdBLHRavoFN3imjC6Rb9Q
SWSLK+gJwfGTHQ6NW7ExHHGFrL1FgFkQGWyyIv5qkI1h6VJofBULsCGLSt/iFZHExLurtmyojMo5
zhVKG2WwldYmvhDv/mX9UgR0g2IKh7vMy+Xl/Cy8LxrSEOCaurq6RN8HH9wOifzbf0aV0kikfYyI
FVY+lvEqXdeMdPWUdcG6rv0jvV8bTDfAX38sJ5hS/IylHLGuRK5FnIjI9mWkZoTTxummYoRTAimp
o1LvSlqpCSEl1UtgsXFVqZMiMRZRRCar4BRuBzNYVEF+sNjs20EptGCOnMEpTCaroHxhof8lP2vQ
CvCjBf3BmCxqgrFoSbETVPAPVkY4OmUWlxR3Rvoj6s5Ia6Qz0h0REU2NhsJePgt7kSjsRZxwnoJX
2GCXbeMxBSVKbdKINkkyRlKbJJgp+c1mRkiVLzfBrBGfngZ2+iFhykbIuEaCKsdYgxsS1CYfHGUD
ZfItsuFufXKUKrOg+bLy8s/tUoVD04JnYmHD9gd8ATOgGVY+cnqWMjqQlqVQIaqtgj0ouwgmkxXz
pwTCAcXQdBRaM8/X6PE3R7m0hKgdDZW4Lwo71y6Ol1h2Y/tTf93UtsIKdBVUV9SdFPk/Obto5/Ki
3UN16v7Hd8x7+TdDb+Eu+xBi3oO12IopreX+GemKJZRcUSwWiFVim3hSGH7b5/f5U9JtfwppPiU4
zoCJUMA/5UWf4svJTlfS1Rzbk7zt6cL2VGBLFXTHrGTxec7FjZidoA5DqoMfr2wgxAYTlhoxpEZk
SU6VaYvfvduz4vJHzTpQ2wsPYzGX2vJtV1pK1qXG1N3vck1Rq2zA0w7S9GtG8IJWcr7GiIuz6I44
IU/UqvxagyT3tc99rPzhjXPnz79/Y8Y9Ir9tV8Wck5MXl2+qHfo9v6cmOTfVAv0ojVEeZxnOy6ZR
zvBIOAwmtH0JbTOhbSS0A8i7ufnFfhbZJDTqxyKGjUoJKBqFLX/h6IARRu052sqhHCXlTiXnyT8t
IMUey6lKyxulOKZvkX/RJnOnWW++aAoys81Ws9PsNq+YhskVAMsfjYEurinRuNkl32vxutFtyBwd
9x2DG/2xIGvDlNpA/xMZ9Mw31e0UUUrObUvUCtQy0Gt9HvcMq3egTNZ4Q6jw0krtaNS6xKHPC3Pn
NOTgoi4u8wiNmL9GCaSk2KkB/wVtGvKvwWqKFhXN4CwMVeWNiZd7du59UXs29JZrZ3DyVa3MZWWb
a+7du/cXr7+eXjjlnrbj1tzvtatbDilmzXDzoaEfLb83kzVHZBJ9+Hb1su+OLvvCl+Uj/rVfn1zA
9Ore3s9unR36vkW+h9D1Yz6vAMy5w5W0wKJbZ289a8X3SfjZLYY7pJaOoFP9A20UdRQCHjTH0w/0
KlqrNNI6VHU/ZGjjKSbOUC3mnkZ/HuibvBbzVwMfAmVAFZDpji0HHgFWcR9z3+C12GMn7yNpHa3z
TaAn9CpnCOe16BdpG3AM7XZxnU4ZpbQD/RNY944gms1zsKbFOE1HMP4qvm/B2DHQtei3ob0e62a6
bb/ZTGOZAgbGp2Kfg+59J2u/phJR53yEu3wHey4B9uOMFaAPAEsxJx10PtCoXKQm5aLTju+g1IDz
G3kcWOjSCuyzD9/LsW4S+g1oZ4IPA3Q0MBGYop6hUjWD3gKdgfuvid8buEiP8p1H7gT+XZ6+jjiP
SxOBM98GctVS5waoP4G3ZDQk4UEtSvWg1UAW8JB6mXaIZaRAXkf1G6QxYHcsp78B3xRbqRJ9BXyu
0rvoFe4DyyXqnCHxKrVqA/QNfHvWaME9tkLes4BBmqF+RtOMPHoe9rUQ++8BjmHPT6Q9bKVv4/zp
oFFxQ9rQfuAQzvq3JyeWDfp7oNeVOOsr9gesXwUshl7qgRrmB+fPYJmz3pWq4VLM7cWc9QyMj5HA
3dkmeQ2vx155rh2236HUjjnNkOs1UAGEmAcP0s5c4Nt72GcsYADjgenADaAdqAbmAEuBKTibcK4m
7RU2w7Yp7QO2oV+EDMGbtNn4HY5JfcZ9ps3di8+ZaJyhahcTeU/2F7ZZ8HLO25t9im3Go9K+q6Xd
/4vvyTY1QuF7oo8WMw/SB2FbHmW/A8/sDy1Ifk2SnqEGtlnmz6MsF7Y1KRP4hEvLEu46U/oIqEaU
69p6g0c9WYzQR+kE9txkbEZMaaUK8SRVaC/RZtFPC7WpNB3vpAq+D+Z2qn200tdNUejyW+gfTaJH
GGaPsl3vxj07IM8e+hlkukv0qDmiR9H1DudTnZRLeof6nGx/jSZD6Y5/Y8pI/Pa/jv8/UK/qHYiZ
Hc4/9R7HwX1eZp8w+5SZQLZHMX4eqAcKfIXKEV+1csFcTRaelQPAEyJGc/QYzRbd0E8IcR6+gPHV
+kf0jtYMXfc4f1LqqV7FHmaIHlFbENNwlnqVGhi8P+jOBDu6y+aSbcmjnr0mU475rk1NADXgf++7
6HUxCHwBO1oKmxzLuYHjs8wPiNHAftdet4/Y5yV6DfSgZ59Jdro9yT5HJdtlMpW5BfHd81OcdcC7
P8dHjnEcIznOcZzx5ifThPUvqKdhxxyHL9M6169zXCwBj393fR9xGPpe4zjGA85Jo8s5paU5p4wi
tP8I6M5JyOLpkZy61hl28+lUL5fGxyno5VE9SjvceHZCxpub9GOZR6skf37jLD2v34beEQMlv62u
D0Ke4LtabILMX6FDuMdYrRH+iHFgPctE6gLvQs4LnBO1w5Az56JmatD+gnqB10bJlvminNaA90ty
DDmVKY/pa6jd6KMisRqxtpu2sq74HswP6973FKX4QogTPTRL/BxzQhTAvFYpgxidlHbBa6uJWBbm
FjJhs5WYw/u1yTUxSnPlcULKQq5HLcI2zLLAnkaIVsp6oo+O66tpDXyozaynNlT7BL84hT1ew7ol
zAvWZcp8fZgehn81ITY1IeaQtP91zm2tA/d5GnEd0Oohow6K6PWQYbW8+0IRj7GN7D/aacpnGzEO
Iw5zPXGYXhCFtMiopmaMNeuIkzj3IMb2wn8L4bsHsH6CG7cJZx/AOK8t51qGawT2FzNG6Ua9rANI
8sB1Cs7XPqU2bQk1wY7n+Q5DDvtoGv1XP+dMnCooMJ33NYt2g85Wo/Q7nBBEm3PoG2IPPSaqqEib
Bd+1aZr4LXz1S/rpf7gv9+CqijuO/+49e+5JUBoeweEpdIiAYkGYgWqlQgMGCA+hIUGREisRHQVq
tTq+Rq0oQXxUwVJEZdBatFErDuAjZYqtD3xU6HSKaIvVEbWjdmpLwY7G3NPPb8+em5sTLhfQ/tM7
85nv2b27Z/fs6/ddr0zqzStyj3labtW06S5DvA18/ya8pebvkBman/4j6dUyx4yh/jJZbOrlUu8J
1t6fpJNZwFxTz7+ddVJB/b2815HaI3O8OvbWUp4/Iw5SzraxKZysmEnyDVsvD9vXmESf01P4qmrm
lP7qc7v+0tdcP+M+HqB/9jv1vdTTMuYeGcM47YbjIs3OTN8mj8C69J9lvDdNrkw9HDYzyFUJJuWn
zajUNTDMjJKn4Mc8n4j+Bh6P0ni3UfIXuIl3P4tu1HuBkq6U0arkrYXV8Gr8Xz7azoHy8/H7hM3t
0puJNZDaFzYryfKM82jaG22+HTYrrMVqJXOdlAeXS7k3mPxjqZdI+33YT5ulwpPwP8X6dDD4jcgb
x3H53xjPB3rMIbA7TweouthwxH07UpjfrnCSHd9/SI9oDUn31OvhLrQu9bp09S5jDQLpYaS7x+MZ
zxP5K21+Yv7SlWFWxzyZn0wn57VYOr1R6vOJ10FuPayQ0xQzlvKQTJe8LKcpmRf474WOafNQEebI
Cd4a7RNrcHDHdOYMGaykK+hrb63DnoNcegdnBGhZW7+zTFR07yrpTdzXIPf/KDldaRtXGa3j6q2J
/o/nJ56X5PzQvxFmu3wHHYx+C61Bq2PN37PJfZvMi8+SA5VJ7I0Rhd75/wR75xXYBi/+r9tKCWsV
ukBmNz5kLD5yJ/7kbFki0spZ8sVwWM85NAvdRR7RO3s8dOa5K3nno/eJtOzn+RLyd0aEadNH1jlf
2Yu8J13dEve+mqh+y0sin++Dx6P6LU1wIc//AuJ5y1vob9HVlP+Iejeiv4v+b60nfTlsIf0x6YVw
Js93oD3QE6E7dKP+KkX9SId76FeuB75/HKriWebTz/5oM3pN8g5xyBrPZxFN3jXi+S+mvrtLdNRo
HLgzvYvv25B/9znYHSdW5jObj6kNW/GUR6uPVi+r/tn6R6f2/mZ9LO2KlMdKf0rVv6p3Vv+K6vsb
M77tTy39Osf2y8WN/LM1tU/WQhfo4/QiynyWHhxu5+wpY33v5270oEKaNSZ1EeEOYlcZsW4r5+5+
9DXS/dD9cUyLz9YOZ2yRmPZVpw83Rh5BTB3pqE9QKD/mZMdkJRmLD5disfuIY3mBGJ0fp79sOo7z
MaWnyUglGBc2K0lf2sEHFEkX87mHm076jsNOJ3xJnE7S4f/k2ov9TG/pnSOx7w4XvVuYzW3eP+5D
ch/n9ptLM0an58M5MMTF0Afg35wZ/YAYFa4gfW3JFzKy5DEZSXoZEBfDsdCg/6GjU7eJpD8NW0nf
QLqLec2WPdPRUGw9J9et+nPrDxkzew7eof2X4XAqdIMnYFE813qHpO130kRdveeaOeF+sx0SHrCo
jpIfwmOky0iXcRaXZ7pybo+Th3heinZCO3G+z4QFnOUz/G1ha+YqW6aa/6rMj2QS5/xis5N37gmf
50xfZLJSFhwtjcTOJcTQ/vy/irrLSPdAewYD5EHe8zT1b9EYkNlLHJxNPCzV2EG7dbIWLqLsGWav
3OUdJRN4T4XZI+VOT/Jb5PsarzLDpIvGPPKOR4dY3YM3nisTYCzvG6OxxnuENfI+dYk/6XLZ4k2X
LeZRuYT3bejUJGtLt8nakgapKrlOVmWaZJV3rywh797gdrk3M1Qa9R1xXNWYGD9jplJBPxvzF5Hu
7bQy/uakJ7D9mytTicsP5Lcb1yupIpbu5ftpW/tazNsQ45dDA99h0E+T7ekYpZvC30cqF7gYf3ku
5tfJXPo5VsfUju1cmeldy71PY7q2vx59XeaZpeDGONmXuC3GpbWQF4q9Cc+zYZLOs4XYrevKrqWI
Wv9DO1+Tdc78zuzhMp3/8BkdH8sVlE9LL/MJsIa0nwrrqxfMTr9J+bXs0cXsFdagWYlnapIbHZQN
19t6C229CZkaGEu/FlCvKXyvDbmpjfA9UyvLLYyXzl+6PHwGvST9Km2dImV2/C6lT7fKLHMOfkik
N+Oo393TDCFf1+csYP7hStIV9tud2rEaR70ymWy/EU/lDRPhvxLvVPVXjJsrGzwlVcE41utRUuVv
lArvB/iXZznr+jJ31cxrmSzx3pVjzcky3+sqDUqqKtye+hjFqSvpj8h/E72TdKPMSe+SeYzX9bAQ
lvPdLZZX8ArAfrnYcZ6Sbkp9nf//Cme5537RM3mnyJOW+B1Nsj4PyoXvQkv6LtqulIb007Sxjr7Q
jteF/ZeAOuc6hrh2JprZ7LH2jE9CXdXhSchXPS6Jy++dhHzVyiTkVx6gH4XKFepHofxBScgf9BX0
o9B7ByYhf+BB+jclCflTDqMfhca5Ign5FQfpx/Qk5E9P9oPziXts9kXupo+ib7h4/yE6FWX1ZZ/n
mftFuMCl33Dlfgar4W7YB5UOzrywnjKN6N9hPcxsI/sy2lfsL24nXAknQF3UltbN/jpq2+LazG6M
6rc+hr6USB8DH0Tt2bb17G1GB8Ia933LXLsbor5nV7aVz/aNvtHW29BG6MF3qd8frWkjuzkifA79
FeyGba5f+nysGw/95qf0XW3ngnxu1nBmnCNCrC4PmiI1V8tUe+buaBerLrbn4R552J53IWffGBmZ
6YwPuU8q1TfoGe6fZ8vf4jcQmwR/glewfuEd8c0L0st/X+rNYpngPYkvnsh5Sxvmp3K2vlvPbfUc
3s0yDWZoDOPc1Fg4hTO3sdMm61+6UKbc/I3+3i1bubMt88+UFPUzwTDSdxDX75cr/KvlqpJFsjXz
T/q6UxYQr/pn6uUU/waZFN9tM4uk1D8aX+C0ZLXMD04kv0kGmA+kb2kjvu4PMoMx+2bcduy1TCDl
5OucbXHrD74YClNtn+kvPsyYofgxPJON199jTBpsf6Zr/DS/FONdL+J/QuyeLEOCUrzXcFlW2lPW
ZT7lOzL41KEyMNcmPsBrkkHB+TLCb5RBfi1zNBTf/B7jPEs6xcrZvjWYL4E/J2zBu91vLrB+sZt5
RHpa70Dsymn8jiZZ7V8vt7ImhiV9Teyjcp7Ct3NcG7eR+x5U42fu+53m+Q077uRXmx4y1O/B2sF3
dFDXp6CHPEzZW2I/G2yV6sBD18uCzFKp8acxLt2lJnhOugUTpaf6syCwvm6Rxmj/M7xojQxibsYD
d4rwQmD/hWe5PX4p87cL5rIZ57k80DkPjyK/1tXl//Cy6J5hy/BfuNw9j3c0RGW0butbrryeB1nH
2xH2HjIg36daPxp56/aa8/V2/VQV1YT/LKS6h1kj3XN+OPaTHXUlekGcxue9zR5dQd0BkIl9dFIp
uwqPcm2k1huq/sLpz3WtqddLas5XF9BC/jXPx0b7LNbIV9+U0HlOB8X+upjm/Hc7DUOX/lrOrxfT
Oim1vtNpcBvnIR40VpdflqeZDvenfLVzIp7zserfqxn3m806vOhB0HWnZG5gDbSnTvHulHMPRIZI
ogQL2+N8fkEyP6Hef1kvF+AoqyuOn/1em4cECWJJLEkrKQEqjwR1REElhSVQRkAMQmSGOkRrRGVk
qTPS+qpitIIj2mEiQQqVIBCqnSliCba0OoJQxUeNnSJ1nGkxPKx1SmxBkK+/c7+7y7KkrI7uzG/O
d7/vvvbec8/9H8grzyY8rDDn+yLCFsshyy8VNyaieEuzCQ8bNHfrhuApxoW8IRHxnRFG/58B1kDi
3KR5xcYGeheeEVSGEv+X5ZEUYaik1j21jql14b99yP++KT3n1Pi236+6j191X76u/32muWfCmdwH
KRso3c6b/TEcjtD4RN3eloB13QptsMvyhMJZKeXcfuregD9BZpvT/GAJualiy3oWlQBlF+8bnQNy
pIMRMrO79YnfEPlfvDJaJ/+YXG+11z7+Rw+N74qNfRX5U2S1iQXTpVxjC/eunvPh3h/lxlM1XzgN
vynRs8E96VO/l79AEs6fwqf9hcSET8JX/XvQAsBYD1h2WlZF2i98DnupWeeRsgW7PhNy2zJF60T3
ZNhq9bbq2PkRJzqj9yfnlYq97hH+xzEpUd3gXSklRr80ShOUuIf4jl7gPzzkXi9j9M5wL0ZboT9U
L5izINLbex8b0YN1meKuyzjf35UHvDrWCVQTmX3azh2g9beb9qU2Lg7Usdy5xPH3pNw5RD2+0e4h
7cPfJAtVF7lkFP5k/GIqdaeGb7nN2FrLEbiN+U6XRucBGeLeKNXOm+idPry/Hebx3BfbE2bCCrhD
qsz7Y/jJZ9QH16P8GtaXBqh2jloWR+j3WI00OJulAU3cQH9RvQ7TJiKQhthLZqwGt4b+qOeQKbko
CrePfQ74voh22xBu9Bc7FPVlvqXq5J+sE79LEgU3SsK9HzsMHTEmbI8dkFFevfRiT3vARez1bps/
aN70BrBa4UrKu5zfyGzFPSATDcvDdrcSrPV/JY3+aBnif44+2IsffCCj/P9Ii3+FDAymcI9tlPmS
8fOS4XH8bprTEe6OrWMuGQQzpE/+KzKePZQ8rWut0wbYWJ25jwSflhjZlrRFfZJ3uPasGZ0bHyv3
c44TEMWiSGudQ9sCPXs8TzZ3bKv0oycnyqFOsFqhnodpxIYC2ky1Z3gq/rRafctqQdWYG523Na9l
LqVhuzNFymzb66K8NLwbfg4T6XcFecylSqwrXKZklNuVr7vs3ScXexfBaJ5Hn15mP6stp+xt8Lhc
rnhXUE+pl8Hucm0b7XWucjBZKhWngjFKuynfQ153B7mhti3LXXY2SX/F+Fvl6WX+0zgl/b9zlXvg
W5Dyt7RP/7//nwxVIye4V7YFG8IOyi/AUuLrGsWTMOTbFqvXHnYLOdsLyEEnSEUUw4mNSSkjfpV5
i/E9dH/Un/QmNtVobCTOH9c7wt5/TfR7THWp25f4r7EMrWj71zypVturzifuTdDY518odRprNaaa
OwMtqnka8aZBY4uzU0Y4x6MYFOswiMYitxexo4Y51hhrnp3BNqbUSL4zgv/yRITbM9xpYlJRFLNc
ob/fajzj/o3iVT+3NIpfzjtRDHLep06KLjgo1ZyFFyNMbrbe3E2fRXHSxELitD5r7mLzp556BokX
Y3LpJast27Ls1pTNpQttmzbb5vT69TLN242frGLv9E7eIYP8GVKYzrtERuj6+x+afKWW76pBTup8
vfP0njT7xB7VoYkOSSw7L/A6ZJrurX+lFOvdxTpth3cy7OwIc0/rOnaiywq4dyeZMYhx9N8HP+2y
89T8pAQ/fSSd+6VyuVSuIXKZt1LWuD9ECw2XWnvfv5iR365R1M/8ndKqOZta3r1Ovdro3jB3yCvw
JrwFH8O7sFfk87+ypzN0XdL50C9E+9zi72W9tkt+3iQpCdojveLeK/NjTVKvMLcnFd7/Os0GKSH0
JuAyqILpMNZaYq5MMHE+yXonZZZbjD6Ygp8kZDTlKp5He3eh1St5n0RL3ynXYOvcEtYhyd2YNPq6
Wt95d1NvGPubZP9/LHX+K3Kz/2eZ4x+RtfkTZS12hevIZf4YWcN//IE3XxKap6ErmpwC8rWkXMX9
UIT2WaRzMfOhvn4z5/Z27rSHpdl7mW+d2HmQxz02jPIn0hw7KM1ukn2ijvsi73fw/SNsFd9vtfY9
3t1KfDiben+Tpd5NkhfMJObMkzzvFiiS8oCcijgziz4uoU2VGaeTO/FleczMoTt0TvPsnCyxg2EX
c3oUuxn2pOaSjZlHJjqP7L4z6bTzyRpP0bXIRNfF+7cMZfxl8Dt4hzldDk3+905dr0x0rmk+PXXe
Zg1T6Fpmo2ubosiuczfoumdi/vctJ/chDWuge2L2wvqA+yxj67P+b63zSTRH9QHjI/XipPYfn5xk
5v2hmW+z9x252cyNcfwEsYC9Zy20ztXpPiN/etS003p8M3uoc9N1fk4GmTnsML41UcfV77qeQZf0
DDZTZw9jnEudOdLfjK19PxjNz7RtJIbRV3AN38u5q/bxTjk3+mbmb/9Xeu66/zp3+vR7RHNHSzZz
RicFA+mrjPo/QVeqj9TBdkkEz5m9Knb7SzPx4HyYq3EBvg3fsO+GwgQYDCNsWe355hx/UfS8f1GO
mJiQyYpcaDzIojr7nXduuDGzrPEDrnIasa3mOZ6rH41RGp9ywT32TCp+ZY+hsUxBAxSl41omq+Ta
jPU3a+99zH30T3lKCQrRNB2yyP+7LHIGENcH0O8AuQDKYA4Mh/Ogn2WQ/TbAlvNg4FnLJFF0lt4B
YXvR28aq9uZEheQxYUsuDZyt9VIaMLseOvHl2LvhbOwB7CL/PO6F59F3Ke2do+z+iD3IAI07LpNc
8zpNk74hQ5S0Bt4UfuBL+IG3LNzv/SPcH5+FJtwj1fEibG8ZWfiCZiknLmBNjvMwF5Jqs+eZS4t/
2f/NeJ8aTfF6lHO5G2SA/we0yEarP5JST146Fns35X7xZ6U46CN9g6tkpf97aYqvl/xgj5RbrfJg
3mLpEe8tffOLuGd3o0NUy9Rhn0Z/zcNX0dSK0d/nyzZ3GL7ZTlxZgJaayb3SIgUmP9R8cC8a5jH5
Plp7H+OPVe0US4S7Vbcy3izVRfTVGIySDYXTw5fyJobFhWdJNX429pSc9V1xYuvQwes4M+adlDpT
ycPWyaCMd7XWDrI29f42Y7tkJZwN50U2POoMlSU8z409Sa6wDV28zWiRnmjo3opXGf5X0TU/E969
UqG4+9jDjOec+eIzp5Kdx3nPECcgXc7Kq7LztJxn5AXOnpI6J3MloeBDZZG+VHuiEzsZexT7PFwN
47Oe1dfXRjbsDxVwreXxLIZR9y/YC6Eqpe953uhWkbf14py9Jcv8Chmo72Cws0TaYJU3Fo04GrLt
uIxnXR/qu5XEweFyTmyhDKWPO4IZ0sc/iP+9Bu2SwNcT5nkj+uFV7C78e4GsMd/GSas3UlrjN0gr
Pt2Cz7YQQ0f5a+Vnpt1yaQnyabNVlvobwo/8Jzlb2lezNAXXUm8/3/vZsYiX/ni0zq08z5VG71v0
2Vem+HfJJQE5X1DCfKtkM5r0lth14Z2x5eFqp1zKY3vCTd43pSZYLz9FVzZ5T/+P/XKPbeq64/jP
51zfmLCQR0kCHYnPeJhCWEicttGAkjigNEl5NUph0K2ZY98kJk7s2g40VBsUSqnWilZFomvXLqxI
TFTbAGcTQZ0UVvFYaUfROvgDKAuwP5i2LlUrVeu64n3PuTfhNTSt0jZtOrY+v9/vPO7vvF+4R++F
7gYd1MBHoBHvXuWkwcabcJv5E4RXIdxtp+O+Uq/sx2g7wptdb2Z2G92ZI3wP3kdIZ8coT5UxjVqN
LeobWd5mc49T7qNUh77cpsIdmb8YcbTnY7TxZ2rtH2Lfo6keRlGJ+xTVe07TZsUpW48vxHdJmuKh
0V9m6c3rwPUI7WAD1CrxvEULJeZRzP+jt+6HrA7f7aB5o+cG/J3EPlXtPp45bHRldmfvJvJsx37y
EPaerdDOe85EvNmEO0493WGaNsYDeFN+RDXmw2jnGprNX5br0dnfb9rv5dsM7e12/ZjWQD8MvWz0
XQffFW431nkX3k2Sr2AeSg44eOy77biFmc+zlkA/Ab2amjyzoL3UlDWAvXH4Vg3/D6JtJdgbC6DN
0ffjWPge2skex5s2SQWYP6aJUwZ7KGWZuA/dS4uz/0ihrFdpscqfpHzzhzTR/X3052PYkzeA0bfh
Gfq6+zPMmT10F2/A3flHah0twHfjDMr8fvTtaIRpAf8Ye5ztzxz1a9yBfX8xbePP0wqJwdH3km/j
HQfYq/C1FvP8TdqSdQBz9lHMnddpq0k4F4LYG0+qutwJX438PhqSacYg3oKSfvUmbET7tpjtWJcn
UI6Tx+2jdvTDCjkOfDtNNKfRKxizbZgLf0W9MzJNjU8n2r2BSt14tcqzyr0GZ00V5vFB6DC0E0Yd
SpHfhXYV4ttC+JV1klreYwvVGUVYtym07TTG/zz6uQ++V5Kh3r2VVOO+hLu/HKeX6VmPSW1mDa3C
Xbqa78QdvAT3kNcx1y7TI8izWp6LqM/QuMep2NiVGcm6G2fie9gjkplP3S2Urc7VJNWxj2Afw172
YeYTE+0ztgO0y2hD3jaM4WXagTFqBi0KjLnEsDAXz6l7+lbDpK18L/rATaX8bYzhSzg/j2degx85
fybLeqm6ybdgFcb0SuYT4zA4jXcFZYqM04CuXkH75T2/nOdTGPtrqesz+GuG3yP0tCnoaZTfibkt
fT4k3zmqL9A3N6/524V5IdZb4bV74S33pX92Jt6Dux24dh+6egBrF9tPZiHsKeC7sP2gCuTZfP4k
0d+eAltgW8hTCX3QPvOudvALdNGTohz87V/0/xOj7ovhybbJPkKUcy9R7uCN5F+5lYlFN1K4xqZ4
okaj0Wg0Go1Go9FoNBqNRqPRaDQajUaj0Wg0Go1Go9FoNBqNRqPRaDQajUaj0Wg0Go1Go9FoNBqN
RqPR/FdwEeW/yH5OC+gEZRGjPKqlp4jcxe4/kRthogn0U0gOiN0ppbKzKIyQS4XJlcO+49icvsSf
cWwD9ouObcLe7dhZVMn3IafLGAefpXzYsV00yX3VsRlNMIscm9Mkc7pjG7AXOLYJu8Wxs6jNjNJe
EuSnCqqkalgt1EkW9FKKUQ9IUR/FVcwihBKwpQwiPqJylCMlQFH8BTUjrgPfpyipQha0hdzrIMMq
Zw7+DQi1Idai9YhZrrz3oNzRcpbAex9898KPgN8YfEYoBDsEO460xFg5Yqz2FVQFyzcWqqY5qg5B
eIgjr0C5QZQjfYSoy8nbhFAnYmVqL+qYHGuT7IeIakf0tvVpV30hqA7hNqTI2KDqiRvbaPuJOS0V
qpRepIZUe2WoHb7X49uEiulFrrDqOYH40fFoRJ1k70TUdz2qb+er7y2Vw6JulCl7OqykcGo0mleo
+CRiZP/Fx0bwWjtkegq1iODLJHohoHLaLRptRVDVSc6AsCpR1rlLta79i8yevcJfUVktWjotsTTW
E0v1xS2xKJaIxxLBVCTWUy4C0ahojnR0ppKi2UpaiXVWuFzk5DRYbQlrvVget3pa5DdLgn2x3pSI
xjoiIRGKxfsS8hsh3VdUCZ9U1XNEczAa7xQNwZ5QLNSF2KZYZ49o6A0nZUktnZGkiF7vpz2WEHWR
tmgkFIwKp0TkiaFQkYz1JkIWVHtqfTBhid6esJUQKdmOxhaxJBKyepLWfJG0LGF1t1nhsBUWUTtW
hK1kKBGJywaqMsJWKhiJJsvr719Wv7KxLJCIBKO3s5WQtQiKVCIYtrqDiS4Ra799D/6H13e2Qq/x
/5U1Xk/30zLIlSi77LoVL0e3A7WMqhrfLte/Gn/9jvJv2U/sM5coM5N20j/4HWjZGhjP58g/m0ol
5OVlfDYOci+fnTZLvIP8rgHfJO+pX/BZNAwYn5UuK/Ee4jN5SXq+t3aQTxsoKPTnBr7KBY7euUoK
yBjYB4aAQa28FPF5kBvBJrAPDIFTwMSJX6pSBYiBfjAsU3gJn5IW3rzATD4Z307GkZ7Li2kEZABH
PYtRajEtB63gOdAPTJVPxsTARjAEPlQptbw4/UIV6l6cfkapgbVRvwoG7eA3vqmCA6tW23rpg7Ze
3Ghnm2dnq7zbji6vs/XMObYumOHfJHV2jv9woIgXoZFFqHgc0sWOUK7LRV7axQtpP2DcdGJqecHA
dJ+/f4gb5OKMuzADvJnD3JXOyfcHslmGjVABedmf2Qd2CvtgYEK+vz/QxC7RPjAEOLuE/0V2kTay
YdnnkDWgHwyBd8EIMNkw/r/D/wK7QLnsfZoLakAr6AdDYARksfch89h5efFSUto1gLHzkHnsHJp1
DjKXnYV1lp1F1d5LV3/Nf0gZZXMdwzvDMYq/7BgFRf5B9pv0p7Mwo3wYacyoN/hUWkhVfGp6RiWm
36T0goh3kF0eEGXeXYEK9lvaD3ClhMwDAqwA3wJxYMI6A+sMbQLPg11gP8Asg8wDgp0A74AzVAFq
wQrgYafSKGaQvZv21XkDRewkO07F6PFfs18p/Q47pvTb7KjSb0GXQp9gx9KlXgqMRzrhmzzoPOi5
SHezXw5ML/BmAvlsCH3nhZwLasBy0AqeAyYbYlPTYW8BnLxBJzyEnGn6g9J76DUP1a711voWYQIK
KXzz7oMF0S/6fazWt/MlBKXwbX8BlhS+J5+FJYVvwxOwpPBF18GSwhdeC0sK35pWWFL4lrfAghhk
Pzg4faa3+u+MV0FsE0cUnb/rZtcJiZ2UBpdsPOs4tkqWEJQmOGAar826odpDQhKQN7UgJLJExYFK
m5BT0+WA1KiCVKpEK3rrCYEQawdFmwSpSD41l15a9VgOPbQnCodSTu6f2U0oaip11v+/mf/fzPz5
OzveHb8Maj4iLGGWljBLS5ilJRISlthFXoZYbN/U+vowY7d17VAfdTbBeQTOJDjfglMBZxmca+Cc
BOc8OBo4CjhxcHRwtmAEU+GA/vC15nE9Bs42OPfBscFJg5MCpxccFTK6JyRqH7zLochhLc8eOsT3
RvH0iQgJzGgC93wCz4TvUP+A0uAtHUlqj09+O86wZ60v57ePnBi8go9PHTvW8TbUyS8oIbxBddxG
dRykjgNEUOdQLqA8RnmK0kBpQnYPBr7KdQT1AEoO5QLKpyhPUZp4OE9RBHIlCPEBD4wFPRAEPo4S
Eup49eCVEBJ6d1SJatHT4qoCkTiMxxtxIUM6O/HI7miX2z1oXX/R+teLVhLOh4Wbwio7uoUvAlyt
vcSjG76upbdo/i34isRDuPPgOElDCnGE2Lw9TBSZ4RBRhHuIgzXlHHaL1NKH6Sa0sV7r9KXyK/1d
8QSs/qZs0Z9VLwQ1+hNa7q3TH5UV+v2AJ6PlUdoDhE2VUzeUEXp/m1OvoeN2jS4zWKefKGP0ssId
Fd9x3saWHqGT6Rl6GsczlDmq2zjmOs0p5+lJnzXM+qzToxiC5lf7MNhDCp80GUfLQzp89mzGg0v6
YemWVJLGpWPSoHRYSkhU6pa6pP1yhxyV2+R9crMsy01ySBZkIu/3Gk90Db8+yf6mKIOmENMhXo8K
TLPvV3b0gSzgu5P7pmgK5lQBTPfxPDHnVPfPqaQHzWdm3DeSBXA7TGJOF9wRzfSkxqSb0UxXmviw
VAW4aaHVFT7zgEyXPGgw0/Uut+NUaYMAtF+/0cXwnes3LIvEOq/mYrmO0fbj7xt7qNlAa69K7LV6
d8G9ZU6VasN373YXLHeQ1xsNrJvul1NqubQBz+GPorEBzxhYpQ1xFJ4XJ5ldHDUsy/TgHOcRFZ4h
D7fOM86T8V+a8Ygqx33ebZ+Xwv7I62WAvHCYpDgvFQ5zXggYr2r3Fo1qby/nHMAXOc6xD6j/5Gyn
kJNKcU6nQ7Y5Z7vTYRx3lFMUBSlxhVPgIFE4RYGDnHLuFWUgoKzsUlb4TCK84ig+p/XJDqf1CXK0
/1sqBU2Dtaw1Xy5WksXZZLGCMut+fvVSzHXmVLU6bzGH6orp2bn5SwwvVlwrWTHc+aShVrPlPdxl
5s4mjSopF6dL1bJeMWpZPVtMXjSstbGJocxrc63szjU0scdgE2ywITbXWGYPd4a5x9hcGTZXhs01
po/xuQjf6hOlqkwK1qmyj2tCSzNu29muhFXojH48yvdwNhFb7trEV5c7pEWz3H3JgtuKwlz9+f48
c+GjxVxtaI4ErthyNtG1CXcCVxTN7ckC0RYW7UUSK35k+D8bC5oWFlnCfa3Z/1XQV3T1i4a9QIjp
9k2Zbu7MTKkqSWidZUtyT+zYWlqKXuOxbzyCxhPMKIq7RGY7yWzhcED89/1fDPAUewocYWsN9Djg
J6ElunFzWsATYXoG11qeKW3iixX7r7AtXKANGtg7YwRhaxrx24SteUcWFoNakIuFAP2e2MXeSclu
YcnSdjO2wIfl6dTKpXybeEwcwE8PKh5F7EfsRxxEHBQH9I40FYUMDcsZ2tJsUKnJoDujWtrfAgwA
0hdcDw0KZW5kc3RyZWFtDWVuZG9iag0zNDUgMCBvYmoNPDwvQXNjZW50IDEwNDAvQ2FwSGVpZ2h0
IDcxNi9EZXNjZW50IC0zMjUvRmxhZ3MgMzIvRm9udEJCb3hbLTY2NSAtMzI1IDIwMDAgMTA0MF0v
Rm9udEZhbWlseShBcmlhbCkvRm9udEZpbGUyIDM0NiAwIFIvRm9udE5hbWUvUVpPRUtSK0FyaWFs
L0ZvbnRTdHJldGNoL05vcm1hbC9Gb250V2VpZ2h0IDQwMC9JdGFsaWNBbmdsZSAwL1N0ZW1WIDg4
L1R5cGUvRm9udERlc2NyaXB0b3IvWEhlaWdodCA1MTk+Pg1lbmRvYmoNMzQ2IDAgb2JqDTw8L0Zp
bHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjMyNDUvTGVuZ3RoMSA1ODkxMT4+c3RyZWFtDQpIiXyW
e1RTVxbGv52bexJCRAUVRcK9CdxYH1WrDqMOtb5wnLYqHR1atSoUQUUQVKpoVWirVQERX/hW8IUv
EF+g+EAroqIIglhtUmBq6zjGpda6tGMgmRNkOdM/7Flr73P2Po97zy/3fCcgAC2QDAEho0b36NXm
/QmLecbKLSwiNjx+drnvVYCCgDZhEXMS5NziunSg7RaAzYiKnxLbd3e7roCvDnDPnxIzL2pp7lc1
QKciwBA1NTJ8su2D0HIgWObrBU7lCc/ePpN4HMrjgKmxCYmhU0/yZvB8YNi4mLiIcGqkRCD1Jo/D
YsMT471XuB0CqvrwQfKM8NhI67pZcTweA2gWxMfNTnB2QSZwp9LVHz8rMj77yP0HPH4C6HtAEJZR
BkRoxU1ib76Ljq9q4QaiVJ5aUeXO1CpXUdeju/McEsfzVdy4YcyIITIGQnY2iNWOj6i3ZgAdGQhy
Op2A2iyecj0NbblXwcWPw+H8eIt8uDE0J3mtUrnG/L7wTkEtMo3WTeeub+HRslVrT682bdt5t+/g
09HX4CfJRpN/gGLu9FbnLl27vd29R893evXu86fAP/ft1/8vQe8OeG/goMFDhgYP++vwv73/wYcj
Ro4K+ejvo8f8I/TjT8aOG//phImTwsLxWcTkyKgpU6dFT4+JnREXP3PW7ITP58xNnDf/iwULFyUl
f/nV14uXfLN02fKU1LQV6SszVq1es3Zd5voNGzdhy9Zt27Oyd+zctXtPzt59+w8IB3PzDuUfPnL0
2PGCwhMni06dPnO2+Nx5XCi5WHrp8pWyq9fKr1dU4kZV9c2aW9/hzvcW6w+1dVB7DeMbHcq3qsFQ
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
Mv59krU2FydbEbdFpu9i3PL/r3zrow6Gbyf9K0KMxQ6EaUy/nCKxAUn/2wFfjpbs79Ef8oWp7o6R
WHdY3yHHcvZ8lx6UY7q98xvxGUrPJhDV2fM5SrrjOZrnodPVuntPfI5QWn76xWrOj55+MZEgVRXH
26ra3K3lO78auY/pL1j5zlF1j18T1s/FDsSN7a+9VhNO6AHTz+fhx/TvHZB643P0C/p5NDJHb3BK
xOeEVvpFtIvHhdZIIhHL0YOmjkj0BnRYOjdMnQNvaa4jksNr6c5bugbUh66eE3TFxaTB1DUUF5u6
Isp1M5n6aGSmvt7UVOJDztRkKqW7NcsN0DQ0mJoKjSybmuUKjWv0VlPi8UDi9ZgS+gjxmBIPfcSU
HLwjaS5IztyWnDF7EugdjcfSlK3c0pStQCP/q4calmWabUmkeqOqL9rvi6pAv/7C8aEqXRuQpJlU
gickXfD3D6SGOCdVPeFTI3rKF5FmWnrvk+7l6RZfZIb0RrvjM72KGjFalJaoLxlJZNs7twXv6evM
7b62dd6nsU7e2DbeV3vwPukgT7fzvoK8ryDvq11pN/si5lLvjM84SDixp9fiLCstwbLtr65NhCtc
o63mGm6prTpRPY9Pl1dJqZzQH/aF9TKApzaFNoV4Co8WT61B2FlIVZ1oqa2ep68WUi6Ey31hIo9P
ZCZIVXQ4Yv0yOBAan+ATblk586ADuaiuJCOZcUJieuOBmN62vyc+Y7cj2s8vSd91K1ZaGs3lL1vB
zQju4kFBuC3ksd08VlxcEP7z/Z8o8B7+FGhsIUsVL8VfwoSge2PdDDtCdw+utbcnPo8PK/6uyCRw
gRkq08ytNgrDlmVilQm/5lsYnyh4hbkYL7BVE1Uyt6bk9sEnS749Y+Nms+Z0yr3x0BrhcaEZfz1E
YQt4E3gTOAAOCM2K2y8KLCgWO4JiaUlEtNsi/5A8zNRIbYAAAwDyR/wpDQplbmRzdHJlYW0NZW5k
b2JqDTM0NyAwIG9iag08PC9Bc2NlbnQgMTA0MC9DYXBIZWlnaHQgNzE2L0Rlc2NlbnQgLTMyNS9G
bGFncyAzMi9Gb250QkJveFstNjY1IC0zMjUgMjAwMCAxMDQwXS9Gb250RmFtaWx5KEFyaWFsKS9G
b250RmlsZTIgMzQ4IDAgUi9Gb250TmFtZS9ZT1BYWlMrQXJpYWwvRm9udFN0cmV0Y2gvTm9ybWFs
L0ZvbnRXZWlnaHQgNDAwL0l0YWxpY0FuZ2xlIDAvU3RlbVYgODgvVHlwZS9Gb250RGVzY3JpcHRv
ci9YSGVpZ2h0IDUxOT4+DWVuZG9iag0zNDggMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xl
bmd0aCAyNDgyNy9MZW5ndGgxIDYxNDk3Pj5zdHJlYW0NCkiJfJZ7XMz5Gsc/z/zm922apqSLSPX7
zdRvrMti5Tg4rc31OLuL9nDsYlGbSIrQEovasyxCcsudyiV0FYrc1z1SCYuZrc6yjmO8sNaLPaZm
zneqV3v2D/t9vZ7n+zzP9/6e3/f5DgiAK5IhIGzEyG49vD4cv5hHzFzCI+Mi4meX+10FKATwCo+c
kyDnna5NBby3AWz65Pgpcb33tOkM+GkBl8IpsfMmU58L+4EOpVySo6MiJlk+Gl0OjOjL5+sVzQMe
wb4TuR/P/aDouITE0dHHuDliPTBkbOyMyAhVztFHwIan3A+Pi0iM91nlXMC3M5x3kqdHxEW1cR11
jvvTAacF8TNmJ9g7IR24/9jRHj8rKj6z6BG3H/D96LpBEJZRGkRoxC1iMD9F+6ZaqMJklYdGVLkw
tcpR1HXoaj+DxHF8FmcuGDVsoIxQyPZ6sdr2CQU79aOiUJDdbgfURvG4YzV4c62Cgx+Hw/lxi3y5
MDQHea1SOfr8vvBGQS0yJ42z1kXn6tbKvbWHp5d3G5+27Xzb+/kHSLLeEBikGDu807FT5y7vdu3W
/b0ewT3/1OvPvfv0/UvI+/0+CO0/YOCgwUP+OvRvH3708bDhI8I++fvIUf8Y/elnY8aO+3z8hInh
EfgiclLU5CnRU2OmxcZNnxE/c9bshC/nzE2cN/+rBQsXJSV//c9vFi/5dumy5SkrVq5KXZ22Zu26
9RvSN27avAXbtu/YmZGZtWv3nr3Z+/YfyBFy8/ILCg8WHTp8pLjk6LHS4ydOnjp95izOnb9w8dLl
K2VXr5Vfr6hE1Y3qm7duf4+790zmH2pqofYcwg86iB/VCYOwiOwqWTVGlScECiOEuUKSkCKsFDKF
CuGV2lU9QuwmjhYnikvFFHG1eEl8LL5kfszulKQ5rDmpsfvH+E/zP+df5m8PSArYGfCz5C35S4Ol
YdKn0hhpnDReWigdls5L1ZJJeia9lGxyK9kgG+Xuck+5r9xPHiRPkOPleXKSvF4+LT/Xi3pPvY/e
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
RbojGE2TZGwwkU6a49FMh9kRCx6IWnM9fa2hx+aaWZurte8Jg/WJwVrFXD2hJ6RDIt0j5gqJuUJi
rh6zR85F5FbvS6QVErG6k3meYyXF2LYjNQErUuV7rVPu4Y5A9XTNIh5dzpMSw3LWByNOKSBSTeGm
sEjh0hKpMoTLC6nq6Y5AzSI9X0j5EK4IRogxMZmaJNWxV6L5bwoHQhOTouB5a6T+60Au5pgHoqkJ
QuJO40Dc6dozlEh7PIiOiFNy2ldjJSWxbO5aPrgVwXYRdLnWhCK2S8S83oLw37//ZIG7xVVgs6U5
avopXgktl+OPDzLcEQaHcK7JocQiHqzEf0XKwgmmqEFTq2MUlm0YJN8m4pxXMTFZ8Aq1mChwvie6
pFZLsnaIYhlrFZuQw8pyGslEuMy13dWMVw/u2gZuAjeBW8AtrmazUucuFuJeJcRLiqPcUxTlq6Na
xt8CDACecdYeDQplbmRzdHJlYW0NZW5kb2JqDTM0OSAwIG9iag08PC9BSVMgZmFsc2UvQk0vTm9y
bWFsL0NBIDEuMC9PUCBmYWxzZS9PUE0gMS9TQSBmYWxzZS9TTWFzay9Ob25lL1R5cGUvRXh0R1N0
YXRlL2NhIDEuMC9vcCBmYWxzZT4+DWVuZG9iag0zNTAgMCBvYmoNPDwvQVA8PC9OIDM2MSAwIFI+
Pi9DWzAuODU4ODI2IDAuMjAzOTE4IDAuMTQ1MDk2XS9DcmVhdGlvbkRhdGUoRDoyMDI0MTAyMjEy
MTMzNyswMScwMCcpL0YgNC9JVC9MaW5lQXJyb3cvTFsxNzYuMjkxIDUxMC44MzUgMTA3LjYzNiA1
ODIuMzk5XS9MRVsvTm9uZS9PcGVuQXJyb3ddL00oRDoyMDI0MTAyMjEyMTU0NyswMScwMCcpL05N
KGY0NTY2ZTEwLWJmNzYtNDk4NC1iNDc3LWY1ODY4OTdhYTE3ZikvUCA4NyAwIFIvUG9wdXAgMzUx
IDAgUi9SZWN0WzEwMi4xMzYgNTA1LjMzNSAxODEuNzkxIDU4Ny4xNzddL1N1YmooTGluZSkvU3Vi
dHlwZS9MaW5lL1Qoano1KS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM1MSAwIG9iag08PC9GIDI4L09w
ZW4gZmFsc2UvUGFyZW50IDM1MCAwIFIvUmVjdFs1OTUuMjc2IDQ1Ni42NTQgNzc5LjI3NiA1NDgu
NjU0XS9TdWJ0eXBlL1BvcHVwL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzUyIDAgb2JqDTw8L0FQPDwv
TiAzNjAgMCBSPj4vQ1swLjg1ODgyNiAwLjIwMzkxOCAwLjE0NTA5Nl0vQ3JlYXRpb25EYXRlKEQ6
MjAyNDEwMjIxMjE0NDkrMDEnMDAnKS9GIDQvSVQvTGluZUFycm93L0xbMTUwLjEwOSA0NTYuMTQ1
IDEwOS45NjQgNDU4LjQ3Ml0vTEVbL05vbmUvT3BlbkFycm93XS9NKEQ6MjAyNDEwMjIxMjE0NDkr
MDEnMDAnKS9OTSg3NzJjODU3NC03Nzk1LTRmMmUtYTU3ZS00OWJjZTc5ZWVmNzIpL1AgODcgMCBS
L1BvcHVwIDM1MyAwIFIvUmVjdFsxMDQuNDY0IDQ0Ny45ODEgMTU1LjYwOSA0NjcuOTY3XS9TdWJq
KExpbmUpL1N1YnR5cGUvTGluZS9UKGp6NSkvVHlwZS9Bbm5vdD4+DWVuZG9iag0zNTMgMCBvYmoN
PDwvRiAyOC9PcGVuIGZhbHNlL1BhcmVudCAzNTIgMCBSL1JlY3RbNTk1LjI3NiAzNjUuMzA4IDc3
OS4yNzYgNDU3LjMwOF0vU3VidHlwZS9Qb3B1cC9UeXBlL0Fubm90Pj4NZW5kb2JqDTM1NCAwIG9i
ag08PC9BUDw8L04gMzU5IDAgUj4+L0NbMC44NTg4MjYgMC4yMDM5MTggMC4xNDUwOTZdL0NyZWF0
aW9uRGF0ZShEOjIwMjQxMDIyMTIxNTA2KzAxJzAwJykvRiA0L0lUL0xpbmVBcnJvdy9MWzE2OS4z
MDkgMzc0LjEwOCAxMjEuNiAzNzYuNDM1XS9MRVsvTm9uZS9PcGVuQXJyb3ddL00oRDoyMDI0MTAy
MjEyMTUxMCswMScwMCcpL05NKDVmNzg4ZTcyLWE3NGMtNDEwNi1iNDM2LWVlNzgxZDJiMTk2YSkv
UCA4NyAwIFIvUG9wdXAgMzU1IDAgUi9SZWN0WzExNi4xIDM2Ni4wMiAxNzQuODA5IDM4Ni4wMV0v
U3ViaihMaW5lKS9TdWJ0eXBlL0xpbmUvVChqejUpL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzU1IDAg
b2JqDTw8L0YgMjgvT3BlbiBmYWxzZS9QYXJlbnQgMzU0IDAgUi9SZWN0WzU5NS4yNzYgMjg0LjE0
NSA3NzkuMjc2IDM3Ni4xNDVdL1N1YnR5cGUvUG9wdXAvVHlwZS9Bbm5vdD4+DWVuZG9iag0zNTYg
MCBvYmoNPDwvQVA8PC9OIDM1OCAwIFI+Pi9DWzAuODU4ODI2IDAuMjAzOTE4IDAuMTQ1MDk2XS9D
cmVhdGlvbkRhdGUoRDoyMDI0MTAyMjEyMTUyMSswMScwMCcpL0YgNC9JVC9MaW5lQXJyb3cvTFsz
MDAuOCAyMzcuMzgxIDM2NC4yMTggMjMzLjg5XS9MRVsvTm9uZS9PcGVuQXJyb3ddL00oRDoyMDI0
MTAyMjEyMTUzOCswMScwMCcpL05NKDQyYjRiODY0LWYyMzMtNDg5MC1iOTQyLTU2MDI4Y2FhNmVk
NSkvUCA4NyAwIFIvUG9wdXAgMzU3IDAgUi9SZWN0WzI5NS4zIDIyNC4zMzIgMzY4LjcyIDI0NC4z
MThdL1N1YmooTGluZSkvU3VidHlwZS9MaW5lL1Qoano1KS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM1
NyAwIG9iag08PC9GIDI4L09wZW4gZmFsc2UvUGFyZW50IDM1NiAwIFIvUmVjdFs1OTUuMjc2IDEz
OC45ODEgNzc5LjI3NiAyMzAuOTgxXS9TdWJ0eXBlL1BvcHVwL1R5cGUvQW5ub3Q+Pg1lbmRvYmoN
MzU4IDAgb2JqDTw8L0JCb3hbMjk1LjMgMjI0LjMzMiAzNjguNzIgMjQ0LjMxOF0vRm9ybVR5cGUg
MS9MZW5ndGggMTI3L01hdHJpeFsxLjAgMC4wIDAuMCAxLjAgLTI5NS4zIC0yMjQuMzMyXS9SZXNv
dXJjZXM8PC9Qcm9jU2V0Wy9QREZdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9iamVjdD4+c3RyZWFt
DQowLjg1ODgyNiAwLjIwMzkxOCAwLjE0NTA5NiBSRwozMDAuOCAyMzcuMzgwOSBtCjM2My4yMTk3
IDIzMy44OSBsClMKMzU1LjY4ODkgMjM4LjgxODIgbQozNjMuMjE5NyAyMzMuODkgbAozNTUuMTg2
NCAyMjkuODMyMiBsClMKDQplbmRzdHJlYW0NZW5kb2JqDTM1OSAwIG9iag08PC9CQm94WzExNi4x
IDM2Ni4wMiAxNzQuODA5IDM4Ni4wMV0vRm9ybVR5cGUgMS9MZW5ndGggMTI1L01hdHJpeFsxLjAg
MC4wIDAuMCAxLjAgLTExNi4xIC0zNjYuMDJdL1Jlc291cmNlczw8L1Byb2NTZXRbL1BERl0+Pi9T
dWJ0eXBlL0Zvcm0vVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCjAuODU4ODI2IDAuMjAzOTE4IDAuMTQ1
MDk2IFJHCjE2OS4zMDkxIDM3NC4xMDgyIG0KMTIxLjYgMzc2LjM4NjcgbApTCjEyOS4xNzA3IDM3
MS41MTk5IG0KMTIxLjYgMzc2LjM4NjcgbAoxMjkuNiAzODAuNTA5OCBsClMKDQplbmRzdHJlYW0N
ZW5kb2JqDTM2MCAwIG9iag08PC9CQm94WzEwNC40NjQgNDQ3Ljk4MSAxNTUuNjA5IDQ2Ny45Njdd
L0Zvcm1UeXBlIDEvTGVuZ3RoIDEzNC9NYXRyaXhbMS4wIDAuMCAwLjAgMS4wIC0xMDQuNDY0IC00
NDcuOTgxXS9SZXNvdXJjZXM8PC9Qcm9jU2V0Wy9QREZdPj4vU3VidHlwZS9Gb3JtL1R5cGUvWE9i
amVjdD4+c3RyZWFtDQowLjg1ODgyNiAwLjIwMzkxOCAwLjE0NTA5NiBSRwoxNTAuMTA5MSA0NTYu
MTQ0NSBtCjEwOS45NjM2IDQ1OC40MTM5IGwKUwoxMTcuNDkxNCA0NTMuNDgxMSBtCjEwOS45NjM2
IDQ1OC40MTM5IGwKMTE3Ljk5OTQgNDYyLjQ2NjkgbApTCg0KZW5kc3RyZWFtDWVuZG9iag0zNjEg
MCBvYmoNPDwvQkJveFsxMDIuMTM2IDUwNS4zMzUgMTgxLjc5MSA1ODcuMTc3XS9Gb3JtVHlwZSAx
L0xlbmd0aCAxMzQvTWF0cml4WzEuMCAwLjAgMC4wIDEuMCAtMTAyLjEzNiAtNTA1LjMzNV0vUmVz
b3VyY2VzPDwvUHJvY1NldFsvUERGXT4+L1N1YnR5cGUvRm9ybS9UeXBlL1hPYmplY3Q+PnN0cmVh
bQ0KMC44NTg4MjYgMC4yMDM5MTggMC4xNDUwOTYgUkcKMTc2LjI5MDkgNTEwLjgzNTQgbQoxMDcu
NjM2NCA1ODEuNjc3NCBsClMKMTA5LjgyOTEgNTcyLjk0ODYgbQoxMDcuNjM2NCA1ODEuNjc3NCBs
CjExNi4yOTIxIDU3OS4yMTIxIGwKUwoNCmVuZHN0cmVhbQ1lbmRvYmoNMzYyIDAgb2JqDTw8L0Jh
c2VGb250L0hlbHZldGljYS9FbmNvZGluZyAzNjQgMCBSL05hbWUvSGVsdi9TdWJ0eXBlL1R5cGUx
L1R5cGUvRm9udD4+DWVuZG9iag0zNjMgMCBvYmoNPDwvQmFzZUZvbnQvWmFwZkRpbmdiYXRzL05h
bWUvWmFEYi9TdWJ0eXBlL1R5cGUxL1R5cGUvRm9udD4+DWVuZG9iag0zNjQgMCBvYmoNPDwvRGlm
ZmVyZW5jZXNbMjQvYnJldmUvY2Fyb24vY2lyY3VtZmxleC9kb3RhY2NlbnQvaHVuZ2FydW1sYXV0
L29nb25lay9yaW5nL3RpbGRlIDM5L3F1b3Rlc2luZ2xlIDk2L2dyYXZlIDEyOC9idWxsZXQvZGFn
Z2VyL2RhZ2dlcmRibC9lbGxpcHNpcy9lbWRhc2gvZW5kYXNoL2Zsb3Jpbi9mcmFjdGlvbi9ndWls
c2luZ2xsZWZ0L2d1aWxzaW5nbHJpZ2h0L21pbnVzL3BlcnRob3VzYW5kL3F1b3RlZGJsYmFzZS9x
dW90ZWRibGxlZnQvcXVvdGVkYmxyaWdodC9xdW90ZWxlZnQvcXVvdGVyaWdodC9xdW90ZXNpbmds
YmFzZS90cmFkZW1hcmsvZmkvZmwvTHNsYXNoL09FL1NjYXJvbi9ZZGllcmVzaXMvWmNhcm9uL2Rv
dGxlc3NpL2xzbGFzaC9vZS9zY2Fyb24vemNhcm9uIDE2MC9FdXJvIDE2NC9jdXJyZW5jeSAxNjYv
YnJva2VuYmFyIDE2OC9kaWVyZXNpcy9jb3B5cmlnaHQvb3JkZmVtaW5pbmUgMTcyL2xvZ2ljYWxu
b3QvLm5vdGRlZi9yZWdpc3RlcmVkL21hY3Jvbi9kZWdyZWUvcGx1c21pbnVzL3R3b3N1cGVyaW9y
L3RocmVlc3VwZXJpb3IvYWN1dGUvbXUgMTgzL3BlcmlvZGNlbnRlcmVkL2NlZGlsbGEvb25lc3Vw
ZXJpb3Ivb3JkbWFzY3VsaW5lIDE4OC9vbmVxdWFydGVyL29uZWhhbGYvdGhyZWVxdWFydGVycyAx
OTIvQWdyYXZlL0FhY3V0ZS9BY2lyY3VtZmxleC9BdGlsZGUvQWRpZXJlc2lzL0FyaW5nL0FFL0Nj
ZWRpbGxhL0VncmF2ZS9FYWN1dGUvRWNpcmN1bWZsZXgvRWRpZXJlc2lzL0lncmF2ZS9JYWN1dGUv
SWNpcmN1bWZsZXgvSWRpZXJlc2lzL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxl
eC9PdGlsZGUvT2RpZXJlc2lzL211bHRpcGx5L09zbGFzaC9VZ3JhdmUvVWFjdXRlL1VjaXJjdW1m
bGV4L1VkaWVyZXNpcy9ZYWN1dGUvVGhvcm4vZ2VybWFuZGJscy9hZ3JhdmUvYWFjdXRlL2FjaXJj
dW1mbGV4L2F0aWxkZS9hZGllcmVzaXMvYXJpbmcvYWUvY2NlZGlsbGEvZWdyYXZlL2VhY3V0ZS9l
Y2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlL2lhY3V0ZS9pY2lyY3VtZmxleC9pZGllcmVzaXMv
ZXRoL250aWxkZS9vZ3JhdmUvb2FjdXRlL29jaXJjdW1mbGV4L290aWxkZS9vZGllcmVzaXMvZGl2
aWRlL29zbGFzaC91Z3JhdmUvdWFjdXRlL3VjaXJjdW1mbGV4L3VkaWVyZXNpcy95YWN1dGUvdGhv
cm4veWRpZXJlc2lzXS9UeXBlL0VuY29kaW5nPj4NZW5kb2JqDXhyZWYNCjAgMQ0KMDAwMDAwMDAw
MCA2NTUzNSBmDQoyNCAyDQowMDAwMzU1NzQ1IDAwMDAwIG4NCjAwMDAzNjA2OTYgMDAwMDAgbg0K
ODYgMg0KMDAwMDM2MDk3NSAwMDAwMCBuDQowMDAwMzYxMjczIDAwMDAwIG4NCjEzOSAyDQowMDAw
MzYxODU0IDAwMDAwIG4NCjAwMDAzNjIxNjkgMDAwMDAgbg0KMTQyIDENCjAwMDAzNjI4NzMgMDAw
MDAgbg0KMTQ1IDIyMA0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAw
MDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYN
CjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAw
IGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAw
MDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAw
IDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAw
MDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAw
MDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQow
MDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBm
DQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAw
MCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAw
MDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAw
MCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAw
MDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAw
MDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0K
MDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAg
Zg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAw
MDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAg
MDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAw
MDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAw
MDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAw
MDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYN
CjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAw
IGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAw
MDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAw
IDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAw
MDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAw
MDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQow
MDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBm
DQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAw
MCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAw
MDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAw
MCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAw
MDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAw
MDAwMDAwMCAwMDAwMCBmDQowMDAwMzYzNDIyIDAwMDAwIG4NCjAwMDAwMDAwMDAgMDAwMDAgZg0K
MDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAg
Zg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAw
MDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAg
MDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAw
MDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAw
MDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAw
MDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYN
CjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAw
IGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAw
MDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAw
IDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAw
MDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAw
MzY0NjA1IDAwMDAwIG4NCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQow
MDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBm
DQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAw
MCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAw
MDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAw
MCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAw
MDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAw
MDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0K
MDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAwMDAg
Zg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAgMDAw
MDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAwMDAg
MDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAwMDAw
MDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAwMDAw
MDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYNCjAw
MDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAwIGYN
CjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMDAwMDAwIDAwMDAw
IGYNCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMzY1Nzg4IDAw
MDAwIG4NCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMzY2OTcx
IDAwMDAwIG4NCjAwMDAwMDAwMDAgMDAwMDAgZg0KMDAwMDAwMDAwMCAwMDAwMCBmDQowMDAwMzY4
MTU0IDAwMDAwIG4NCjAwMDAzNjgyODMgMDAwMDAgbg0KMDAwMDM2ODM2NiAwMDAwMCBuDQowMDAw
NDE3MjYzIDAwMDAwIG4NCjAwMDA0MTc3ODYgMDAwMDAgbg0KMDAwMDQxODI3NiAwMDAwMCBuDQow
MDAwNDE4NzM2IDAwMDAwIG4NCjAwMDA0MTkyMjIgMDAwMDAgbg0KMDAwMDQxOTcwMiAwMDAwMCBu
DQowMDAwNDIwMTgyIDAwMDAwIG4NCjAwMDA0MjA0MjkgMDAwMDAgbg0KMDAwMDQ0MzUwNiAwMDAw
MCBuDQowMDAwNDQzNzUzIDAwMDAwIG4NCjAwMDA0NjU5OTggMDAwMDAgbg0KMDAwMDQ2NjI0NSAw
MDAwMCBuDQowMDAwNDg5NTc3IDAwMDAwIG4NCjAwMDA0ODk4MjQgMDAwMDAgbg0KMDAwMDUxNDcz
OCAwMDAwMCBuDQowMDAwNTE0ODUzIDAwMDAwIG4NCjAwMDA1MTUyMDMgMDAwMDAgbg0KMDAwMDUx
NTMxOSAwMDAwMCBuDQowMDAwNTE1NjY5IDAwMDAwIG4NCjAwMDA1MTU3ODUgMDAwMDAgbg0KMDAw
MDUxNjEyOSAwMDAwMCBuDQowMDAwNTE2MjQ1IDAwMDAwIG4NCjAwMDA1MTY1ODkgMDAwMDAgbg0K
MDAwMDUxNjcwNSAwMDAwMCBuDQowMDAwNTE3MDI0IDAwMDAwIG4NCjAwMDA1MTczMzkgMDAwMDAg
bg0KMDAwMDUxNzY3MCAwMDAwMCBuDQowMDAwNTE4MDAxIDAwMDAwIG4NCjAwMDA1MTgwOTMgMDAw
MDAgbg0KMDAwMDUxODE3MSAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDM2NS9Sb290IDg2IDAg
Ui9JbmZvIDI1IDAgUi9JRFs8MUI3NDkxMzM1NEQ3NEYzMjk4OTBBMUE2RENBNUU1RkI+PDUwMjEz
RTdBOEVEMEQzNEJBQ0I4NjA5MDNBRjg0QjA0Pl0vUHJldiAzNTUxNTQ+Pg0Kc3RhcnR4cmVmDQo1
MTkzNjQNCiUlRU9GDQo=
--000000000000173f2506259b7f85--


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 11:42:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 11:42:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827285.1241863 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5kbx-0008Ia-J0; Tue, 29 Oct 2024 11:42:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827285.1241863; Tue, 29 Oct 2024 11:42: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 1t5kbx-0008IT-Fz; Tue, 29 Oct 2024 11:42:09 +0000
Received: by outflank-mailman (input) for mailman id 827285;
 Tue, 29 Oct 2024 11:42: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=uXRL=RZ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t5kbw-0008Gd-7b
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 11:42:08 +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 cfe1a429-95ea-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 12:42:02 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [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 D0F4B1FB55;
 Tue, 29 Oct 2024 11:42: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 9DD65136A5;
 Tue, 29 Oct 2024 11:42: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 adwYJQjKIGfKSQAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 29 Oct 2024 11:42: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: cfe1a429-95ea-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE5NS4xMzUuMjIzLjEzMSIsImhlbG8iOiJzbXRwLW91dDIuc3VzZS5kZSJ9
X-Custom-Transaction: eyJpZCI6ImNmZTFhNDI5LTk1ZWEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjAyMTI1LjMwNjg3MSwic2VuZGVyIjoiamdyb3NzQHN1c2UuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1730202121; 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=2eMJHLt456vECrCu/l8OxKrENcFTh4cA6cpXQSAO0YE=;
	b=LG9N2mVREj2xU/47DbXEzCQTWLSc4diLosoB3R2BQy789XlPHGVQCGiOaIHaS3cOjim0LY
	bO8gC7SnYI2DA/DsCbDDXxdRNDFCs4sSGahf6gSt8DrUgmTKVf7X6S6E0dizwUHAaQ0/2P
	CPPnuhkmm/1XJL1xc/hzQIY4JMscjwg=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1730202120; 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=2eMJHLt456vECrCu/l8OxKrENcFTh4cA6cpXQSAO0YE=;
	b=gzmY9s0ZFTK2YUCSvJNni/KstZ2hKCsmdBfo3tpRmXWk3IQ2aRl52Z1NJ984GI8Jhufs6b
	2ju/VVJ1gaDa5k9gTBe/NzlYxSmxWODHBA63MpS/TSujWjlK28XsxE0uAKc0ZxJTrjv9P9
	xvjvY1FLcoMTQXysdIKOzKMJVDZFf5E=
From: Juergen Gross <jgross@suse.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: samuel.thibault@ens-lyon.org,
	Juergen Gross <jgross@suse.com>,
	Natanael Copa <ncopa@alpinelinux.org>
Subject: [Mini-OS PATCH] Add missing symbol exports for grub-pv
Date: Tue, 29 Oct 2024 12:41:58 +0100
Message-ID: <20241029114158.17231-1-jgross@suse.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.80
X-Spamd-Result: default: False [-2.80 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_MISSING_CHARSET(0.50)[];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MIME_TRACE(0.00)[0:+];
	TO_DN_SOME(0.00)[];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	ARC_NA(0.00)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	RCVD_COUNT_TWO(0.00)[2];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:mid,suse.com:email];
	RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO
X-Spam-Level: 

Grub-pv needs start_info_union and phys_to_machine_mapping to be
accessible. Export both symbols.

Fixes: 33411a11f848 ("Mini-OS: hide all symbols not exported via EXPORT_SYMBOLS()")
Reported-by: Natanael Copa <ncopa@alpinelinux.org>
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/mm.c    | 1 +
 arch/x86/setup.c | 1 +
 2 files changed, 2 insertions(+)

diff --git a/arch/x86/mm.c b/arch/x86/mm.c
index 572e762e..3ba6d917 100644
--- a/arch/x86/mm.c
+++ b/arch/x86/mm.c
@@ -55,6 +55,7 @@
 #endif
 
 unsigned long *phys_to_machine_mapping;
+EXPORT_SYMBOL(phys_to_machine_mapping);
 unsigned long mfn_zero;
 pgentry_t *pt_base;
 EXPORT_SYMBOL(pt_base);
diff --git a/arch/x86/setup.c b/arch/x86/setup.c
index b27bbed7..b613083b 100644
--- a/arch/x86/setup.c
+++ b/arch/x86/setup.c
@@ -41,6 +41,7 @@
  * address of the shared_info structure, and things like that.
  */
 union start_info_union start_info_union;
+EXPORT_SYMBOL(start_info_union);
 #endif
 
 /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 11:50:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 11:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827298.1241876 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5kjv-0001ul-Cv; Tue, 29 Oct 2024 11:50:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827298.1241876; Tue, 29 Oct 2024 11:50: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 1t5kjv-0001ue-9q; Tue, 29 Oct 2024 11:50:23 +0000
Received: by outflank-mailman (input) for mailman id 827298;
 Tue, 29 Oct 2024 11:50: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=yWqW=RZ=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1t5kjt-0001sc-Lw
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 11:50:21 +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 f5f0dbea-95eb-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 12:50:15 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 92DB8A1A05;
 Tue, 29 Oct 2024 12:50:14 +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 fKjYY_kBv5fl; Tue, 29 Oct 2024 12:50:14 +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 329A4A19D3;
 Tue, 29 Oct 2024 12:50:14 +0100 (CET)
Received: from samy by begin with local (Exim 4.98)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1t5kjl-0000000AdLX-3Res; Tue, 29 Oct 2024 12:50:13 +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: f5f0dbea-95eb-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE0MC43Ny4xNjYuMTM4IiwiaGVsbyI6InNvbmF0YS5lbnMtbHlvbi5vcmcifQ==
X-Custom-Transaction: eyJpZCI6ImY1ZjBkYmVhLTk1ZWItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjAyNjE4Ljc5MzQ4Niwic2VuZGVyIjoic3JzMD15d3F3PXJ6PWVucy1seW9uLm9yZz1zYW11ZWwudGhpYmF1bHRAYm91bmNlLmVucy1seW9uLm9yZyIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
Date: Tue, 29 Oct 2024 12:50:13 +0100
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Juergen Gross <jgross@suse.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Natanael Copa <ncopa@alpinelinux.org>
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
Message-ID: <ZyDL9fGtcouw9bar@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org,
	Natanael Copa <ncopa@alpinelinux.org>
References: <20241029114158.17231-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241029114158.17231-1-jgross@suse.com>
Organization: I am not organized

Juergen Gross, le mar. 29 oct. 2024 12:41:58 +0100, a ecrit:
> Grub-pv needs start_info_union and phys_to_machine_mapping to be
> accessible. Export both symbols.
> 
> Fixes: 33411a11f848 ("Mini-OS: hide all symbols not exported via EXPORT_SYMBOLS()")
> Reported-by: Natanael Copa <ncopa@alpinelinux.org>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  arch/x86/mm.c    | 1 +
>  arch/x86/setup.c | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/arch/x86/mm.c b/arch/x86/mm.c
> index 572e762e..3ba6d917 100644
> --- a/arch/x86/mm.c
> +++ b/arch/x86/mm.c
> @@ -55,6 +55,7 @@
>  #endif
>  
>  unsigned long *phys_to_machine_mapping;
> +EXPORT_SYMBOL(phys_to_machine_mapping);
>  unsigned long mfn_zero;
>  pgentry_t *pt_base;
>  EXPORT_SYMBOL(pt_base);
> diff --git a/arch/x86/setup.c b/arch/x86/setup.c
> index b27bbed7..b613083b 100644
> --- a/arch/x86/setup.c
> +++ b/arch/x86/setup.c
> @@ -41,6 +41,7 @@
>   * address of the shared_info structure, and things like that.
>   */
>  union start_info_union start_info_union;
> +EXPORT_SYMBOL(start_info_union);
>  #endif
>  
>  /*
> -- 
> 2.43.0


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 11:58:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 11:58:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827308.1241887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5krA-0002wO-2j; Tue, 29 Oct 2024 11:57:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827308.1241887; Tue, 29 Oct 2024 11:57: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 1t5krA-0002wH-0G; Tue, 29 Oct 2024 11:57:52 +0000
Received: by outflank-mailman (input) for mailman id 827308;
 Tue, 29 Oct 2024 11:57: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5kr8-0002w7-LU
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 11:57:50 +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 02236021-95ed-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 12:57:44 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9a2209bd7fso812044066b.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 04:57:44 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f298db6sm469965166b.131.2024.10.29.04.57.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 04:57:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 02236021-95ed-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmQiLCJoZWxvIjoibWFpbC1lajEteDYyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjAyMjM2MDIxLTk1ZWQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjAzMDY0LjkxMzAxNywic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730203064; x=1730807864; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=L7EAB7j50DNMjuKVi66hpnEZDaLqwnd/caUYpNGSW78=;
        b=BPoo7r9c6IFEl3VtkPNNe0mZcW1NvyFw+Db8HPAGovi9o9WdWaxxOxI/rVMnwThxEt
         JDYQjzrB1EXfaVnGrgHouRcqgRYRV19p1wUbcDxCOrASUAYMuQN3HwHENpXo/eNcssZR
         n9oD0hglWy0Rxbh2ZQueL4AoqoabUoFIHslps=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730203064; x=1730807864;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=L7EAB7j50DNMjuKVi66hpnEZDaLqwnd/caUYpNGSW78=;
        b=ogUQZUWNabdynVfuMZd8LZfhcE5DUiwc3cv0whoVOGFNK14v5sJN6GkIwaibH8HC+0
         +n1R/dmPO2V41FpQCCQYf7Rv0N+UQn3LbhLzUPPVC5d7bhleCL79UM0UqMvwO41iQ7Uu
         hX5qhEPGDP4JhDnALXohVA1qtNzHsSjQp9r9qqHE8zV+plj39w0lLJHJh3T85SJ6YP9W
         U+CAVWe2UvDu62hF7b5HzYGnpaHfnZq/h/vr+2NmqT1FOOgyAx1+Z3ihu6Jq/zPUne5o
         mn4liJ8fXtYyw7sfyr/dA2m1yGqV9yueW/iCkb3TCEEeaIaIFcvAwoD0Mdxff+J5BTkr
         aUbw==
X-Forwarded-Encrypted: i=1; AJvYcCW7bnE0G3QkfOmXTMMGaiDvTtlPADaBbpj52hzNrvY8w9sb3elI+wnm/STXDNAMT+QOTcUGG2Q1VmQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyyaNpQP95zs+C3BxjPakRak5SycNYe/pHZ2Ryshu9DMUrQ+Yvf
	YaJ3GcXW6wQJ/VJc+MhfO3xL1m5/3GOqYXdnqEFvR0c1Z2HaQNScmvIKdkn9v/YdJmIXs9GQ2U/
	V
X-Google-Smtp-Source: AGHT+IGrLN7h1vu5x17hzyn181YnfOQf64i0fmWLXTxA+y/l4/imzUWAJPOV/Uz7T3p/gZzl25hHCg==
X-Received: by 2002:a17:907:8689:b0:a9a:188f:efd9 with SMTP id a640c23a62f3a-a9de5edcfdcmr1221785866b.29.1730203064232;
        Tue, 29 Oct 2024 04:57:44 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 11:57:43 +0000
Message-Id: <D589SQ8Y0WGU.2MM4HPFUKJYGT@cloud.com>
Cc: "Jan Beulich" <jbeulich@suse.com>, =?utf-8?q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave
 areas
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.com>
 <0a644e0d-b7dc-49b5-b4ba-943f809286a8@citrix.com>
In-Reply-To: <0a644e0d-b7dc-49b5-b4ba-943f809286a8@citrix.com>

Hi,

On Mon Oct 28, 2024 at 5:20 PM GMT, Andrew Cooper wrote:
> On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
> > diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/a=
sm/xstate.h
> > index 07017cc4edfd..36260459667c 100644
> > --- a/xen/arch/x86/include/asm/xstate.h
> > +++ b/xen/arch/x86/include/asm/xstate.h
> > @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu *v=
)
> >             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
> >  }
> > =20
> > +/*
> > + * Fetch a pointer to the XSAVE area of a vCPU
> > + *
> > + * If ASI is enabled for the domain, this mapping is pCPU-local.
> > + *
> > + * @param v Owner of the XSAVE area
> > + */
> > +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
> > +
> > +/*
> > + * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.
> > + *
> > + * If ASI is enabled and v is not the currently scheduled vCPU then th=
e
> > + * per-pCPU mapping is removed from the address space.
> > + *
> > + * @param v           vCPU logically owning xsave_area
> > + * @param xsave_area  XSAVE blob of v
> > + */
> > +#define vcpu_unmap_xsave_area(v, x) ({ (x) =3D NULL; })
> > +
>
> Is there a preview of how these will end up looking with the real ASI
> bits in place?

I expect the contents to be something along these lines (in function form f=
or
clarity):

  struct xsave_struct *vcpu_map_xsave_area(struct vcpu *v)
  {
      if ( !v->domain->asi )
          return v->arch.xsave_area;

      if ( likely(v =3D=3D current) )
          return percpu_fixmap(v, PCPU_FIX_XSAVE_AREA);

      /* Likely some new vmap-like abstraction after AMX */
      return map_domain_page(v->arch.xsave_area_pg);
  }

Where:
  1. v->arch.xsave_area is a pointer to the XSAVE area on non-ASI domains.
  2. v->arch.xsave_area_pg an mfn (or a pointer to a page_info, converted)
  3. percpu_fixmap(v, PCPU_FIX_XSAVE_AREA) is a slot in a per-vCPU fixmap, =
that
     changes as we context switch from vCPU to vCPU.

  /*
   * NOTE: Being a function this doesn't nullify the xsave_area pointer, bu=
t
   * it would in a macro. It's unimportant for the overall logic though.
   */
  void vcpu_unmap_xsave_area(struct vcpu *v, struct xsave_struct *xsave_are=
a)
  {
      /* Catch mismatched areas when ASI is disabled */
      ASSERT(v->domain->asi || xsave_area =3D=3D v->arch.xsave_area);

      /* Likely some new vunmap-like abstraction after AMX */
      if ( v->domain->asi && v !=3D current )
          unmap_domain_page(xsave_area);
  }

Of course, many of these details hang in the balance of what happens to the=
 ASI
series from Roger. In any case, the takeaway is that map/unmap must have
fastpaths for "current" that don't involve mapping. The assumption is that
non-current vCPUs are cold paths. In particular, context switches will unde=
rgo
some refactoring in order to make save/restore not require additional
map/unmaps besides the page table switch and yet another change to further
align "current" with the currently running page tables. Paths like the
instruction emulator go through these wrappers later on for ease of
auditability, but are early-returns that cause no major overhead.

My expectation is that these macros are general enough to be tweakable in
whatever way is most suitable, thus allowing the refactor of the codebase a=
t
large to make it ASI-friendly before the details of the ASI infra are merge=
d,
or even finalised.

>
> Having a macro-that-reads-like-a-function mutating x by name, rather
> than by pointer, is somewhat rude.=C2=A0 This is why we capitalise
> XFREE()/etc which have a similar pattern; to make it clear it's a macro
> and potentially doing weird things with scopes.
>
> ~Andrew

That magic trick on unmap warrants uppercase, agreed. Initially it was all
function calls and after macrofying them I was lazy to change their users.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 12:01:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 12:01:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827321.1241901 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5kuf-0004b0-Nn; Tue, 29 Oct 2024 12:01:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827321.1241901; Tue, 29 Oct 2024 12: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 1t5kuf-0004as-Jv; Tue, 29 Oct 2024 12:01:29 +0000
Received: by outflank-mailman (input) for mailman id 827321;
 Tue, 29 Oct 2024 12:01: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5kue-0004am-VM
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 12:01:28 +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 82fe9c68-95ed-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 13:01:21 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fabb837ddbso80069141fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 05:01:21 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1e1a6b81sm467849866b.43.2024.10.29.05.01.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 05:01:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 82fe9c68-95ed-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmYiLCJoZWxvIjoibWFpbC1sajEteDIyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjgyZmU5YzY4LTk1ZWQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjAzMjgxLjA0OTkwOSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730203280; x=1730808080; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=D1ttu8wS22dos3d3D6QFtJLcU/5NEphrLjP4oAOwKwg=;
        b=mexCPtTX7tPnFw7DoGbPaA/al9T25Wy47+AnNEwsEhzl8xXQypGyZisCbTJ1AON6Gy
         rEORlIK2PKm3Fp1m1gA0yxAx8fNvvZ/cydpHRUTiVpLnoliNW55aiyRx+rnU1Ipa2ImF
         ZAxs0ZM/t/Mcwhh7b1h//fkyCxuwCyeIe5tnA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730203280; x=1730808080;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=D1ttu8wS22dos3d3D6QFtJLcU/5NEphrLjP4oAOwKwg=;
        b=YC0F8BZtb+YCSZgv9UR55ZtIfL7XKFH+fF9rNUkSa4eCt8h9TDxMhF1899AwonYzFR
         H94k9uJU00hXU+t3tUvDjhuUJkPI3kugWFHSokjAUDA1HrxsN3NMV7mYdK8NAKEgE4Bw
         4WKO1Z//vsUlQx5i/scsYykEVPMtEOydlsyi6FbeGKTJYlQXIeu9qf3TT75HrPTPMAP0
         bIEEj0VbWNhFcsYDBSJOg+g+hyPOvu3JBmWcSuaRabss1BlXucnXpY+wyA3uxt6+U6RR
         a/4eqJp0KZbHQnqAtNr7AIh8JeG44Rpx7eVsqm9HZQcC9AfmXfaOJ5nDMqa3RcJxqnh+
         8Nrg==
X-Forwarded-Encrypted: i=1; AJvYcCUFirN4wO8tOAKj8pow1Nif0cLbpLKjTcFyufKSiBTWne/4sgLTzyps1esqS2apdFFzvO8L2g7uZJA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzxyjfVn+ZqMuN/ZAeStWCoS3vUKQuhTx0GlmJXqDlYwUyYTuzj
	AEc6l2PWHDqzIMay+KzZnmacF7jf32mjf8oN33AcrVqGuKIw2458+1rSvcAGxBE=
X-Google-Smtp-Source: AGHT+IEz7O3QjtLpLu6jeeaFO1fG47eNmeeyYrAQfMuZbLveRDoIvV1dnoqs4r73PpykCuGesIX31g==
X-Received: by 2002:a2e:a587:0:b0:2fb:5014:aad4 with SMTP id 38308e7fff4ca-2fcbdf612dfmr71533861fa.9.1730203278862;
        Tue, 29 Oct 2024 05:01:18 -0700 (PDT)
Message-ID: <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
Date: Tue, 29 Oct 2024 12:01:16 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
 Juergen Gross <jgross@suse.com>, minios-devel@lists.xenproject.org,
 xen-devel@lists.xenproject.org, Natanael Copa <ncopa@alpinelinux.org>
References: <20241029114158.17231-1-jgross@suse.com> <ZyDL9fGtcouw9bar@begin>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZyDL9fGtcouw9bar@begin>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29/10/2024 11:50 am, Samuel Thibault wrote:
> Juergen Gross, le mar. 29 oct. 2024 12:41:58 +0100, a ecrit:
>> Grub-pv needs start_info_union and phys_to_machine_mapping to be
>> accessible. Export both symbols.
>>
>> Fixes: 33411a11f848 ("Mini-OS: hide all symbols not exported via EXPORT_SYMBOLS()")
>> Reported-by: Natanael Copa <ncopa@alpinelinux.org>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

Committed.

Jurgen, what do you want to do with updating 4.19?  Don't we need to
fork a 4.19 branch to avoid the CONFIG_XC change ?

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 12:02:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 12:02:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827330.1241919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5kvr-0005FY-4T; Tue, 29 Oct 2024 12:02:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827330.1241919; Tue, 29 Oct 2024 12: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 1t5kvr-0005FR-0S; Tue, 29 Oct 2024 12:02:43 +0000
Received: by outflank-mailman (input) for mailman id 827330;
 Tue, 29 Oct 2024 12:02: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=uXRL=RZ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t5kvp-0005DR-R1
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 12:02:41 +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 b08dff5f-95ed-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 13:02:37 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-43159c9f617so51895295e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 05:02:37 -0700 (PDT)
Received: from ?IPV6:2003:e5:8706:5100:ddd3:fe18:d0ae:c30d?
 (p200300e587065100ddd3fe18d0aec30d.dip0.t-ipconnect.de.
 [2003:e5:8706:5100:ddd3:fe18:d0ae:c30d])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b8c394sm12303253f8f.90.2024.10.29.05.02.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 05:02:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b08dff5f-95ed-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzYiLCJoZWxvIjoibWFpbC13bTEteDMzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImIwOGRmZjVmLTk1ZWQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjAzMzU3LjU4MTYxNiwic2VuZGVyIjoiamdyb3NzQHN1c2UuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730203357; x=1730808157; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=XFnCILIVjACx8sBier9Yj00iF+wMwReIBMNHJQqvMl4=;
        b=ZxlekTIBW6PM+56j1B03dMJz6qCBRixPDr0fy1NI8mAzFpat+90nBVn/1HCu5H1RQT
         s8Df2zo8oecFeXNTCDBaZzkZFVLnk2aDH6hPl7EdzAq+eF0nNFGEAFEdCdx3MlSGNdgw
         /QQmXhbj20m5XvJso8Il58fG6VVgz0gkVlCvngzCTf4ZP1D2NUsLx7av0szx219XxBFt
         aqN19v6panl4hIURkwlLMk5pMHP4CVkPOoUpvnameCIg3s9IrXr3+d5cI1k+t/Om4QT5
         toDNyuZ7HVC2thzYD4phiPjoHbkj8vzXNwAjpgSkcfM+Qc4hqWxh5xatsYd4VPZaY3as
         a9Fg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730203357; x=1730808157;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=XFnCILIVjACx8sBier9Yj00iF+wMwReIBMNHJQqvMl4=;
        b=jsSAFryrkfAzmfkhVeaodUgsxwO/f1o6jgx9p5ZY/mrSbbuuvP7BZdpnftvOc8PDbb
         pBwIP0onOaK6VSXo7ogxEQT/0QfMCp9k0znfTN3zob01fo4gMJXRDgCq/rfY+bJwl0WG
         NpSdzFd1eMMuggePBQVXyDzTOsvURvS/jEEBUoPWXkQYt92lkelR4pynpKHS8SjY4H7v
         vkVnrpaJfO2ypmbquqvz9psPVu3H8Gu2b5wWZTgHyiARee372rvxobNSLTb3RWojp8Hk
         Pu4ljfREf2Rl3BO5PNKz2S+//4FgeX04dDJlcHPsZWDq0gAwDl2Hlmp4fIsqc9fRoVmz
         Xm7Q==
X-Forwarded-Encrypted: i=1; AJvYcCVSYx8psR6Qv3mw0lYH/YjmoCVEZbXxYQ86mAlG/jZyeo64IfFmK8hqW2TEz0EXU1+7YPNwg5QQlNg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxs9KRnHH0A34A5JFhnvtWoGjVy6btT41fGo100Z0e7jXzsPQkR
	rIu14QRYgrzHCPOXHi3cCghzHIxB/fxD2cw4EjZmVzZvwGd0SREdE1Xppwmms4E=
X-Google-Smtp-Source: AGHT+IGRbhNbS/1ylyz50TNflcHIJW9DdT3tqH44fzh9z2T0FpFsfv6UuRv4Iht5y9W62M02Epz4nQ==
X-Received: by 2002:a5d:45c5:0:b0:37d:50e1:b3d3 with SMTP id ffacd0b85a97d-3806113d05cmr8961478f8f.20.1730203356717;
        Tue, 29 Oct 2024 05:02:36 -0700 (PDT)
Message-ID: <b13cc450-f032-44e2-bbbe-bdc98d4b7050@suse.com>
Date: Tue, 29 Oct 2024 13:02:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Natanael Copa <ncopa@alpinelinux.org>
References: <20241029114158.17231-1-jgross@suse.com> <ZyDL9fGtcouw9bar@begin>
 <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------RjVuIJ53nUAUEc0vUbWLp8Md"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------RjVuIJ53nUAUEc0vUbWLp8Md
Content-Type: multipart/mixed; boundary="------------3JBa1iMNSSyIkVx6OH90Hrms";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Natanael Copa <ncopa@alpinelinux.org>
Message-ID: <b13cc450-f032-44e2-bbbe-bdc98d4b7050@suse.com>
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
References: <20241029114158.17231-1-jgross@suse.com> <ZyDL9fGtcouw9bar@begin>
 <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
In-Reply-To: <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>

--------------3JBa1iMNSSyIkVx6OH90Hrms
Content-Type: multipart/mixed; boundary="------------HztX5xitV05JcOfxQr3Ml5VO"

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

T24gMjkuMTAuMjQgMTM6MDEsIEFuZHJldyBDb29wZXIgd3JvdGU6DQo+IE9uIDI5LzEwLzIw
MjQgMTE6NTAgYW0sIFNhbXVlbCBUaGliYXVsdCB3cm90ZToNCj4+IEp1ZXJnZW4gR3Jvc3Ms
IGxlIG1hci4gMjkgb2N0LiAyMDI0IDEyOjQxOjU4ICswMTAwLCBhIGVjcml0Og0KPj4+IEdy
dWItcHYgbmVlZHMgc3RhcnRfaW5mb191bmlvbiBhbmQgcGh5c190b19tYWNoaW5lX21hcHBp
bmcgdG8gYmUNCj4+PiBhY2Nlc3NpYmxlLiBFeHBvcnQgYm90aCBzeW1ib2xzLg0KPj4+DQo+
Pj4gRml4ZXM6IDMzNDExYTExZjg0OCAoIk1pbmktT1M6IGhpZGUgYWxsIHN5bWJvbHMgbm90
IGV4cG9ydGVkIHZpYSBFWFBPUlRfU1lNQk9MUygpIikNCj4+PiBSZXBvcnRlZC1ieTogTmF0
YW5hZWwgQ29wYSA8bmNvcGFAYWxwaW5lbGludXgub3JnPg0KPj4+IFNpZ25lZC1vZmYtYnk6
IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCj4+IFJldmlld2VkLWJ5OiBTYW11
ZWwgVGhpYmF1bHQgPHNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmc+DQo+IA0KPiBDb21t
aXR0ZWQuDQo+IA0KPiBKdXJnZW4sIHdoYXQgZG8geW91IHdhbnQgdG8gZG8gd2l0aCB1cGRh
dGluZyA0LjE5P8KgIERvbid0IHdlIG5lZWQgdG8NCj4gZm9yayBhIDQuMTkgYnJhbmNoIHRv
IGF2b2lkIHRoZSBDT05GSUdfWEMgY2hhbmdlID8NCg0KWWVzLCBJIHRoaW5rIHRoaXMgaXMg
dGhlIHdheSB0byBnby4NCg0KDQpKdWVyZ2VuDQo=
--------------HztX5xitV05JcOfxQr3Ml5VO
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------HztX5xitV05JcOfxQr3Ml5VO--

--------------3JBa1iMNSSyIkVx6OH90Hrms--

--------------RjVuIJ53nUAUEc0vUbWLp8Md
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/Ey8FAmcgztsFAwAAAAAACgkQsN6d1ii/Ey8F
FAf/bAuN2wgSmytgXq9j5iByb4qW/IzWibU/mJb8ELH1R7R46EuRkVT0BRmKitnmnn4DTkYAjhwu
4UO11CBssxpSA5j9nYkBSf5xQdrqJ6lyLsaFoTJO/AlQzerz3O4L2Viu65Ey8inz+py+Omyvqnsk
BMtVssLaWN1Wjq4LxG1FEvPymfon2R9qjwFofDb074TfeAa0XJdk0LgPW9bOyxD3+AQj6h9wqClo
JHHandlpUT5DPkdXdsoiassCr9dJDPCFcqT3a1qHtsflF2o1PUJmbS7Yl/jlXLJkWuYERj1FEwbM
QDTbZoOGvqziirHfPWU6kTu9YCfJoc/7ZSQ6fNZ+Ug==
=/qI5
-----END PGP SIGNATURE-----

--------------RjVuIJ53nUAUEc0vUbWLp8Md--


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 12:14:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 12:14:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827342.1241928 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5l6r-0007Oy-3K; Tue, 29 Oct 2024 12:14:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827342.1241928; Tue, 29 Oct 2024 12: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 1t5l6r-0007Or-0a; Tue, 29 Oct 2024 12:14:05 +0000
Received: by outflank-mailman (input) for mailman id 827342;
 Tue, 29 Oct 2024 12:14: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5l6p-0007Of-N5
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 12:14:03 +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 45793400-95ef-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 13:13:56 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2fb4af0b6beso81482591fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 05:13:56 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0887d8sm462299666b.206.2024.10.29.05.13.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 05:13:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 45793400-95ef-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMzUiLCJoZWxvIjoibWFpbC1sajEteDIzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQ1NzkzNDAwLTk1ZWYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjA0MDM2Ljg2NDUyMSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730204036; x=1730808836; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=HNLG94zofXiiI7d0dsBDEMGOuZ2adjcYgITjw7GRDa0=;
        b=vsBBGDIy2dtGYUBQ4jQfvutcktP8GD1OzXfMX921D/+IMMf41aTzbKwckmHsgd8iP9
         Kg5RYKulW/FXoM3edvbjf4UsGxBbIeOdl3aONGFNeJekp/u8MjZsrgKSn/EmQDdpY+nM
         fGYz5XwG7CQZ+dQT97Sup+QUJxE6EEDt+0GdY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730204036; x=1730808836;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=HNLG94zofXiiI7d0dsBDEMGOuZ2adjcYgITjw7GRDa0=;
        b=gjbKyhTaCH8QKRXsIxXAJbAkIJwZkm6lkKAkJv6a0UFjte+HgdxmphgTvRxIE0NK/I
         m/YILvMY/YX5r8FRTYy/1cYT4Fc/TCcYoCcSiD4c9u5ae2KODqH9N7HpAAmjbEFr7Mia
         DF7K4cGQ3J4vZAFA/dlwfVOJ6L3OM0bmo/zLslZmhwj/P/yCmXwWteT0IHLljMoEWx/R
         1R/U+rf7wT9SM1j50YHaYZkkZ78gqhVmdU2vtjlxIoXFiKA2XLloEKjxbpARW0FGySiR
         fRfn3Wsf/mqrWTRh6H4ezNf5DL0EJH8IHtEbu4TRSY2/zMAGzXn8b71jmr2ESXVAkK/Y
         QtCQ==
X-Forwarded-Encrypted: i=1; AJvYcCUE4J7xtCzVljwfUiHUWfpZLTI1r577AztKSawEYsJ5vfDB9sdAk6TGbZbs+d1bOjAF2SfSr1neAV8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxKOEQb8rYxfp2z6UIdStIQDV5Moj53O7N5itmsNM3G6CSWc/L4
	3EjydZmqh96W/PQaxpvlNYFrJ4vdTHOVFRe55wKQI9YPGS3zGHUk1MNDpoYBJ5I=
X-Google-Smtp-Source: AGHT+IEV02CtnFHSOHWc7WxYUHrNxxp14A1WJXO8mTFQP8aW27YgZc4J/mbc02Vt7XXTlv0cZq0J0g==
X-Received: by 2002:a05:6512:3c9f:b0:539:93b2:1380 with SMTP id 2adb3069b0e04-53b34921b15mr9786845e87.48.1730204036105;
        Tue, 29 Oct 2024 05:13:56 -0700 (PDT)
Message-ID: <2846b6dc-4209-4f1e-8713-cb8e66ca789c@citrix.com>
Date: Tue, 29 Oct 2024 12:13:54 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Natanael Copa <ncopa@alpinelinux.org>
References: <20241029114158.17231-1-jgross@suse.com> <ZyDL9fGtcouw9bar@begin>
 <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
 <b13cc450-f032-44e2-bbbe-bdc98d4b7050@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <b13cc450-f032-44e2-bbbe-bdc98d4b7050@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29/10/2024 12:02 pm, Jürgen Groß wrote:
> On 29.10.24 13:01, Andrew Cooper wrote:
>> On 29/10/2024 11:50 am, Samuel Thibault wrote:
>>> Juergen Gross, le mar. 29 oct. 2024 12:41:58 +0100, a ecrit:
>>>> Grub-pv needs start_info_union and phys_to_machine_mapping to be
>>>> accessible. Export both symbols.
>>>>
>>>> Fixes: 33411a11f848 ("Mini-OS: hide all symbols not exported via
>>>> EXPORT_SYMBOLS()")
>>>> Reported-by: Natanael Copa <ncopa@alpinelinux.org>
>>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
>>
>> Committed.
>>
>> Jurgen, what do you want to do with updating 4.19?  Don't we need to
>> fork a 4.19 branch to avoid the CONFIG_XC change ?
>
> Yes, I think this is the way to go.

Ok.  https://xenbits.xen.org/gitweb/?p=mini-os.git;a=summary

master has this fix, and there's a new branch, xen-stable-4.19, starting
from the xen-RELEASE-4.19.0 tag with this change backported.

Xen 4.18 and earlier don't have the symbol restrictions.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 12:17:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 12:17:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827356.1241948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5l9s-0008T1-N9; Tue, 29 Oct 2024 12:17:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827356.1241948; Tue, 29 Oct 2024 12:17: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 1t5l9s-0008Sp-Ht; Tue, 29 Oct 2024 12:17:12 +0000
Received: by outflank-mailman (input) for mailman id 827356;
 Tue, 29 Oct 2024 12:17: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=uXRL=RZ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t5l9r-0008SQ-90
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 12:17:11 +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 b5db8cc8-95ef-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 13:17:05 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (unknown [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 6CC5B1FE6C;
 Tue, 29 Oct 2024 12:17: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 3E246136A5;
 Tue, 29 Oct 2024 12:17: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 WgItDD/SIGf2VAAAD6G6ig
 (envelope-from <jgross@suse.com>); Tue, 29 Oct 2024 12:17: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>
X-Inumbo-ID: b5db8cc8-95ef-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE5NS4xMzUuMjIzLjEzMSIsImhlbG8iOiJzbXRwLW91dDIuc3VzZS5kZSJ9
X-Custom-Transaction: eyJpZCI6ImI1ZGI4Y2M4LTk1ZWYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjA0MjI4LjQ3ODQ2OSwic2VuZGVyIjoiamdyb3NzQHN1c2UuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1730204224; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=4vFi6pAHciU773ywiaskr/mBUMx5VR/SZi+XZE16DNc=;
	b=nrauY2MU3zUyxP90uoxX6CmMJDVSwmb9KUksY9vSw13GBen1DICcf9SyK04GBGEJSrAcMK
	cfPOIna0jwWlCdJUnDUQk5d1nlhgo87Knk0NZwQ8CyTf+VH8zS6MzS4P2YRI2jgDTWVUVK
	7nLE8f/gP93DEkyZosjIDZ7y/S0qhtk=
Authentication-Results: smtp-out2.suse.de;
	none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1730204223; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=4vFi6pAHciU773ywiaskr/mBUMx5VR/SZi+XZE16DNc=;
	b=PxD0gRYivi9DXN/8WaYVRf+RkgU3bcw4Vxfd1m+QWPOFnxGb4VISTR2b6y5ZxKWsF5n1Or
	l8yRJkAbJIDOExSDEsTmO2HXWXoqir7CgjtiHzi4TJqecBsfQYxQ7JLm58jNNr8W8JVSt8
	q8g3UlBbO/091IqkVT8gqxDe6UdZhT8=
Message-ID: <2894832c-a7c8-4f60-8484-c2eca7927e7e@suse.com>
Date: Tue, 29 Oct 2024 13:17:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Natanael Copa <ncopa@alpinelinux.org>
References: <20241029114158.17231-1-jgross@suse.com> <ZyDL9fGtcouw9bar@begin>
 <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
 <b13cc450-f032-44e2-bbbe-bdc98d4b7050@suse.com>
 <2846b6dc-4209-4f1e-8713-cb8e66ca789c@citrix.com>
Content-Language: en-US
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: <2846b6dc-4209-4f1e-8713-cb8e66ca789c@citrix.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------kUjErIsUfEojt0vB488yZWXI"
X-Spam-Level: 
X-Spamd-Result: default: False [-6.20 / 50.00];
	BAYES_HAM(-3.00)[99.99%];
	SIGNED_PGP(-2.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_UNKNOWN(0.10)[application/pgp-keys];
	MIME_BASE64_TEXT(0.10)[];
	DKIM_SIGNED(0.00)[suse.com:s=susede1];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	FROM_HAS_DN(0.00)[];
	MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	ARC_NA(0.00)[];
	TO_DN_SOME(0.00)[];
	TO_MATCH_ENVRCPT_ALL(0.00)[];
	HAS_ATTACHMENT(0.00)[];
	RCPT_COUNT_FIVE(0.00)[5];
	FROM_EQ_ENVFROM(0.00)[];
	RCVD_TLS_ALL(0.00)[];
	RCVD_COUNT_TWO(0.00)[2];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	MID_RHS_MATCH_FROM(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.com:mid]
X-Spam-Score: -6.20
X-Spam-Flag: NO

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------kUjErIsUfEojt0vB488yZWXI
Content-Type: multipart/mixed; boundary="------------d2WiQPzGoK84nuXTNLV4Uil1";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Natanael Copa <ncopa@alpinelinux.org>
Message-ID: <2894832c-a7c8-4f60-8484-c2eca7927e7e@suse.com>
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
References: <20241029114158.17231-1-jgross@suse.com> <ZyDL9fGtcouw9bar@begin>
 <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
 <b13cc450-f032-44e2-bbbe-bdc98d4b7050@suse.com>
 <2846b6dc-4209-4f1e-8713-cb8e66ca789c@citrix.com>
In-Reply-To: <2846b6dc-4209-4f1e-8713-cb8e66ca789c@citrix.com>

--------------d2WiQPzGoK84nuXTNLV4Uil1
Content-Type: multipart/mixed; boundary="------------lYFRJhB9r2lOxYzYGRBqovef"

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

T24gMjkuMTAuMjQgMTM6MTMsIEFuZHJldyBDb29wZXIgd3JvdGU6DQo+IE9uIDI5LzEwLzIw
MjQgMTI6MDIgcG0sIErDvHJnZW4gR3Jvw58gd3JvdGU6DQo+PiBPbiAyOS4xMC4yNCAxMzow
MSwgQW5kcmV3IENvb3BlciB3cm90ZToNCj4+PiBPbiAyOS8xMC8yMDI0IDExOjUwIGFtLCBT
YW11ZWwgVGhpYmF1bHQgd3JvdGU6DQo+Pj4+IEp1ZXJnZW4gR3Jvc3MsIGxlIG1hci4gMjkg
b2N0LiAyMDI0IDEyOjQxOjU4ICswMTAwLCBhIGVjcml0Og0KPj4+Pj4gR3J1Yi1wdiBuZWVk
cyBzdGFydF9pbmZvX3VuaW9uIGFuZCBwaHlzX3RvX21hY2hpbmVfbWFwcGluZyB0byBiZQ0K
Pj4+Pj4gYWNjZXNzaWJsZS4gRXhwb3J0IGJvdGggc3ltYm9scy4NCj4+Pj4+DQo+Pj4+PiBG
aXhlczogMzM0MTFhMTFmODQ4ICgiTWluaS1PUzogaGlkZSBhbGwgc3ltYm9scyBub3QgZXhw
b3J0ZWQgdmlhDQo+Pj4+PiBFWFBPUlRfU1lNQk9MUygpIikNCj4+Pj4+IFJlcG9ydGVkLWJ5
OiBOYXRhbmFlbCBDb3BhIDxuY29wYUBhbHBpbmVsaW51eC5vcmc+DQo+Pj4+PiBTaWduZWQt
b2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+DQo+Pj4+IFJldmlld2Vk
LWJ5OiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmc+DQo+
Pj4NCj4+PiBDb21taXR0ZWQuDQo+Pj4NCj4+PiBKdXJnZW4sIHdoYXQgZG8geW91IHdhbnQg
dG8gZG8gd2l0aCB1cGRhdGluZyA0LjE5P8KgIERvbid0IHdlIG5lZWQgdG8NCj4+PiBmb3Jr
IGEgNC4xOSBicmFuY2ggdG8gYXZvaWQgdGhlIENPTkZJR19YQyBjaGFuZ2UgPw0KPj4NCj4+
IFllcywgSSB0aGluayB0aGlzIGlzIHRoZSB3YXkgdG8gZ28uDQo+IA0KPiBPay7CoCBodHRw
czovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9bWluaS1vcy5naXQ7YT1zdW1tYXJ5DQo+
IA0KPiBtYXN0ZXIgaGFzIHRoaXMgZml4LCBhbmQgdGhlcmUncyBhIG5ldyBicmFuY2gsIHhl
bi1zdGFibGUtNC4xOSwgc3RhcnRpbmcNCj4gZnJvbSB0aGUgeGVuLVJFTEVBU0UtNC4xOS4w
IHRhZyB3aXRoIHRoaXMgY2hhbmdlIGJhY2twb3J0ZWQuDQo+IA0KPiBYZW4gNC4xOCBhbmQg
ZWFybGllciBkb24ndCBoYXZlIHRoZSBzeW1ib2wgcmVzdHJpY3Rpb25zLg0KDQpZb3Ugd2Fu
dCBhIHJlbGF0ZWQgcGF0Y2ggb24gdGhlIFhlbiA0LjE5IGJyYW5jaCB0byB1cGRhdGUgdGhl
IE1pbmktT1MNCmNvbW1pdCBpbiBDb25maWcubWsuDQoNCg0KSnVlcmdlbg0K
--------------lYFRJhB9r2lOxYzYGRBqovef
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------lYFRJhB9r2lOxYzYGRBqovef--

--------------d2WiQPzGoK84nuXTNLV4Uil1--

--------------kUjErIsUfEojt0vB488yZWXI
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/Ey8FAmcg0j4FAwAAAAAACgkQsN6d1ii/Ey+4
TAf/b5QOI7PGUaOifNWpo97GJgg89n6PyRhUDwlnsU2qgtvlctW5TxGMWpcDZKnQbdIQMSrhVeRo
/lxnwO69Hx+ysOkv666Rv5CMIIwkq80/jwlJyuifvX1j/tZmv7qXxDIVMRwZ8jjyIz1Aslw/WdlY
PfiS1fIAu0XPfKnM38vCvfDQK2f7+QIV7BPmDgb958kwAnQ4KNoz/4nhpN/MGvWTB9FXwRjMDfBT
Sfl/HRUt6pjFkBkqkpsNu2KJxy6PElNVJQZT6aPufO8ojPmlwECZn1rBFIJLfqzLWnmpDkg6XkoC
GXs/N/qRvQsK7j0q3DwXW4VvQdc4+exGmjAOdgu2ow==
=g6yh
-----END PGP SIGNATURE-----

--------------kUjErIsUfEojt0vB488yZWXI--


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 12:50:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 12:50:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827374.1241958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5lg6-000649-Ae; Tue, 29 Oct 2024 12:50:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827374.1241958; Tue, 29 Oct 2024 12: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 1t5lg6-000642-6J; Tue, 29 Oct 2024 12:50:30 +0000
Received: by outflank-mailman (input) for mailman id 827374;
 Tue, 29 Oct 2024 12: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=Cc3+=RZ=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1t5lg5-00063w-2s
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 12:50:29 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5da4ce5e-95f4-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 13:50:25 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 46EC1A42DA0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 12:48:28 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D3F58C4CEE6
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 12:50:23 +0000 (UTC)
Received: by mail-lj1-f177.google.com with SMTP id
 38308e7fff4ca-2fb3110b964so42680531fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 05:50:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5da4ce5e-95f4-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE0Ny43NS4xOTMuOTEiLCJoZWxvIjoibnljLnNvdXJjZS5rZXJuZWwub3JnIn0=
X-Custom-Transaction: eyJpZCI6IjVkYTRjZTVlLTk1ZjQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjA2MjI1LjU3MzQxOSwic2VuZGVyIjoiYXJkYkBrZXJuZWwub3JnIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730206223;
	bh=qpqKiCVwGj7SngGYaK80lZw41JwmB+AhSP70a/Xdq1E=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=CNogKg6tqY6sYLa0yTfsV5VM6EVLVTHwA1XFvDsJBdjbefzq6skxJ2WRC8h5F/ZPN
	 wgnZnZQ+atgQhNinzsM/BjTs64o5NG9aYccpy2M/gVvSPGWys7inlm3bQjtkNIF8Rv
	 f28N24sPOhuixaI4XoricXRxRM+Ry4NHkSCcJ9W4W277irpfVL7H76HqAdvdorKQTy
	 L0XV8KPLxvoqaIlo0lmAAqHwdl7MQ9HwIdZNnkzqcElJkRuDHPtZFY8qt9lBVPxjBd
	 CkgtcqqdCO8j00EDtB0yTB5SMmjnoBj+nwQjZ5nKOm/UmV8yx8ETrcDGXIvPXtHkCt
	 OBa+cUmjZWkNQ==
X-Forwarded-Encrypted: i=1; AJvYcCXNTv/vn4e0XAVVslcU/eVDCFQty7AGuPEx0KBRxLd1eG/ifp772zygWQT1F8xGzfxMlpHGQG4GFC0=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywt5HOeSQFDTZOZwDthOw45f1AZbQyPe/5zGLsLlAffmTawAIsa
	vatzqKiFFw2M2/a1rNOhaUCeuTgya449hSjTZP4ebzcsPY4OYhG6WblPirBaark25aqED4lD9f0
	C/jf1liyCMAMHWO+vvw1cx1BzD2Q=
X-Google-Smtp-Source: AGHT+IE13vCSXiGikajW15oEuXQauuOovUNSx/7h82mtO6lP6mJ0KIW1b6Z6Cr+GGo7IZepi0dmFbUBD16EkW4eCRpY=
X-Received: by 2002:a05:651c:2204:b0:2fb:6057:e67e with SMTP id
 38308e7fff4ca-2fcbe08cdc1mr50995891fa.32.1730206222187; Tue, 29 Oct 2024
 05:50:22 -0700 (PDT)
MIME-Version: 1.0
References: <20241009160438.3884381-7-ardb+git@google.com>
In-Reply-To: <20241009160438.3884381-7-ardb+git@google.com>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Tue, 29 Oct 2024 13:50:09 +0100
X-Gmail-Original-Message-ID: <CAMj1kXHzahaLRH_0nSQaS7L+so0WRwh4R6SLdb1R+Hm3s-o1dA@mail.gmail.com>
Message-ID: <CAMj1kXHzahaLRH_0nSQaS7L+so0WRwh4R6SLdb1R+Hm3s-o1dA@mail.gmail.com>
Subject: Re: [PATCH v3 0/5] x86/xen: Drop absolute references from startup code
To: Ard Biesheuvel <ardb+git@google.com>
Cc: linux-kernel@vger.kernel.org, Jason Andryuk <jason.andryuk@amd.com>, 
	Juergen Gross <jgross@suse.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

On Wed, 9 Oct 2024 at 18:09, Ard Biesheuvel <ardb+git@google.com> wrote:
>
> From: Ard Biesheuvel <ardb@kernel.org>
>
> This series was broken out of the series I sent recently [0], after
> Jason pointed out that my Xen startup code changes conflict with his
> changes to make the PVH startup code position independent.
>
> Jason's work reduces the delta of my changes, and given that my other
> series will likely advance at a much slower pace, the Xen changes are
> presented here so they can be merged independently.
>
> The end result after applying this series (see below) is that there are
> no longer any Xen-related absolute relocations that need to be applied
> to .head.text, a section which carries code that may be invoked from the
> 1:1 mapping of memory before the kernel virtual mapping is up.  The use
> of absolute references in this code section has resulted in a few boot
> issues that were very hard to track down (Clang built kernels running
> under SEV-SNP in particular, which does not provide the best debug
> experience).
>
> Even though the occurrences in the Xen startup code were fine, there is
> now a lot of C code emitted into .head.text as well, and so it would be
> helpful to teach objtool to reject absolute references entirely in this
> section (or rely on the linker for that). Therefore, not relying on them
> in the first place is a step towards that goal.
>
> Changes since v2 [2]:
> - add Jason's Tested-by to patch #4
> - use a better name for the linker defined symbols used in the ELF notes
>   (patch #4)
> - add a comment in the linker script explaining why the symbol values
>   are constructed in the way they are
> - rebase onto v6.12-rc2
>
> Changes since v1 [1]:
> - add Jason's Rb to patches #2, #3 and #5
> - drop the use of a 32-bit field for the ELF note- QEMU reads a u64 and
>   so the top word needs to remain 0x0
> - tweak #ifdefs in patch #4 so the hypercall_page linker symbol does not
>   depend on CONFIG_XEN_PV
> - rebase onto v6.12-rc1
>
> Changes wrt [0]:
> - add Jason's Rb to patch #1
> - rebase onto xen/tip's linux-next branch
> - split out fix for GDT descriptor size field
> - add patch to remove the zeroing of phys_base, which is no longer
>   needed
> - use a 32-bit field for XEN_ELFNOTE_PHYS32_ENTRY, and use its contents
>   to obtain the build time physical address of pvh_startup_xen()
>
> [0] https://lore.kernel.org/all/20240925150059.3955569-30-ardb+git@google.com
> [1] https://lore.kernel.org/all/20240926104113.80146-7-ardb+git@google.com/
> [2] https://lore.kernel.org/all/20240930071513.909462-7-ardb+git@google.com/
>
> Relocation section '.rela.head.text' at offset 0xb428 contains 15 entries:
>   Offset          Info           Type           Sym. Value    Sym. Name + Addend
> 000000000018  000800000002 R_X86_64_PC32     0000000000000000 .init.data + 18
> 00000000002f  000e00000002 R_X86_64_PC32     0000000000000000 pvh_start_info + 2f
> 000000000037  000f00000002 R_X86_64_PC32     0000000000000000 pvh_start_info_sz + 37
> 000000000042  000800000002 R_X86_64_PC32     0000000000000000 .init.data + 4092
> 000000000060  001000000002 R_X86_64_PC32     000000000000002c xen_elfnote_phys3[...] + 60
> 000000000068  001100000002 R_X86_64_PC32     0000000000000000 phys_base + 68
> 00000000006e  001200000002 R_X86_64_PC32     0000000000005000 pvh_init_top_pgt + 6e
> 000000000089  001300000002 R_X86_64_PC32     0000000000006000 pvh_level3_ident_pgt + 89
> 000000000091  001400000002 R_X86_64_PC32     0000000000008000 pvh_level3_kernel_pgt + 91
> 0000000000a3  001500000002 R_X86_64_PC32     0000000000009000 pvh_level2_kernel_pgt + a3
> 0000000000be  001200000002 R_X86_64_PC32     0000000000005000 pvh_init_top_pgt + be
> 0000000000de  000800000002 R_X86_64_PC32     0000000000000000 .init.data + 1c
> 0000000000e9  001600000002 R_X86_64_PC32     0000000000000000 xen_prepare_pvh - 4
> 0000000000f8  001700000002 R_X86_64_PC32     0000000000000000 pvh_bootparams - 4
> 0000000000fd  001800000004 R_X86_64_PLT32    0000000000000000 startup_64 - 4
>
> Relocation section '.rela.note.Xen' at offset 0xb668 contains 1 entry:
>   Offset          Info           Type           Sym. Value    Sym. Name + Addend
> 00000000002c  001a00000002 R_X86_64_PC32     0000000000000000 xen_elfnote_phys3[...] + 0
>
> Cc: Jason Andryuk <jason.andryuk@amd.com>
> Cc: Juergen Gross <jgross@suse.com>
> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> Cc: x86@kernel.org
> Cc: xen-devel@lists.xenproject.org
>

Ping?


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 12:54:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 12:54:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827379.1241967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5ljv-0006iM-Pl; Tue, 29 Oct 2024 12:54:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827379.1241967; Tue, 29 Oct 2024 12:54: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 1t5ljv-0006iF-N6; Tue, 29 Oct 2024 12:54:27 +0000
Received: by outflank-mailman (input) for mailman id 827379;
 Tue, 29 Oct 2024 12:54: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=uXRL=RZ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t5lju-0006i9-Mx
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 12:54:26 +0000
Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com
 [2a00:1450:4864:20::343])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id eac0c4c2-95f4-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 13:54:21 +0100 (CET)
Received: by mail-wm1-x343.google.com with SMTP id
 5b1f17b1804b1-431616c23b5so38604995e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 05:54:21 -0700 (PDT)
Received: from ?IPV6:2003:e5:8706:5100:ddd3:fe18:d0ae:c30d?
 (p200300e587065100ddd3fe18d0aec30d.dip0.t-ipconnect.de.
 [2003:e5:8706:5100:ddd3:fe18:d0ae:c30d])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b567e18sm171845825e9.26.2024.10.29.05.54.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 05:54:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eac0c4c2-95f4-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozNDMiLCJoZWxvIjoibWFpbC13bTEteDM0My5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImVhYzBjNGMyLTk1ZjQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjA2NDYxLjc0NzIwNywic2VuZGVyIjoiamdyb3NzQHN1c2UuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730206461; x=1730811261; darn=lists.xenproject.org;
        h=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=IB/SspXJn9DW40qXKS4C+SGjhth7zlhYxZ8X2ylA6ns=;
        b=Xk/HeWYXei2uAH2ehC3+q+3MKtVGayBav0gVilYZlvNFsLAntSLXLrtshfH93ScZ5y
         HSQfste8u9LM0hL3z4qY59LLNXDnuzzLkLLxgwdB3KG53oNGCRDfHbvWxOjsbT+opeVJ
         UBzyRzFPnYE4cwTsBPwxN2J76KFJJ3603GhZsCQXE0GDGtxj+0hwPYdQLkaJHXUPwMQ9
         yCm2zDx712v6qRB9qvG4ffhA3bMcAsnqzFCHPDYAO9ZZB6hWPqITelldmjDn8Lu6b6LY
         NsvA0AWf8j+3jybes6l1mFcddRwp/iXRhIECWEB3VRxw38wafMEwkeoRLTpTIP60EtOE
         0oSA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730206461; x=1730811261;
        h=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=IB/SspXJn9DW40qXKS4C+SGjhth7zlhYxZ8X2ylA6ns=;
        b=t6SzpJVLKfxEJOs4eH1CZsIBMNejvBAz8vl54ebR1Vvvl39WOju3DFzLGaH1LiH+LP
         FEDZJQl2GMeM5puh0rbb1KPmb0DGym16ZbaM3hfl78qTRGSvBIhMeLETyG6W/wnfmAVp
         yRkA4ERIYR1vvzXaBzy0c8UjvfvABmLfY3HKhd1/lUEXCyhsvW2ifIORWE8b9TjZE3Zu
         bM3HEg9cKEtUxzcINKIzzObHU1yDn7DjTZ4yelC4HE4yg8FiRXncw/dWZWrZUWqBizFC
         KzS0U2ijXFPBKRb6EtZ8bM+3c6B92zXnumJtTX0vOITPDy21TN6Yq3PNApWogeGMjy6+
         dpaQ==
X-Forwarded-Encrypted: i=1; AJvYcCX4zEdtp4R2rd3F98gayCrn99DXPKq2b7CgafZcPW7CyUfPTHyopc1pgUGvus9iccz1aDHTJaf87lw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyuzZCZLEi3PKhrStxgfZHnpkOB5h87heXkmDqFYvDRha6r7vcT
	Pb4m0A4MVXgsvtv+0r9Kaz0oW9QRtIic7Q9SD4ABSuZjZENj0MBtgTvfCm8IZDo=
X-Google-Smtp-Source: AGHT+IHveqyLAdE+f0O3Qvwa05yrKETR0oJ0UJowgjCeDbzgrYNglYyyKbsOECitWP1T2CCI7CrHMg==
X-Received: by 2002:a05:600c:3c90:b0:431:416e:2603 with SMTP id 5b1f17b1804b1-431b55d3c24mr17473465e9.3.1730206459415;
        Tue, 29 Oct 2024 05:54:19 -0700 (PDT)
Message-ID: <1dea1f19-c247-435b-9c73-a0181914024d@suse.com>
Date: Tue, 29 Oct 2024 13:54:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 0/5] x86/xen: Drop absolute references from startup
 code
To: Ard Biesheuvel <ardb@kernel.org>, Ard Biesheuvel <ardb+git@google.com>
Cc: linux-kernel@vger.kernel.org, Jason Andryuk <jason.andryuk@amd.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org,
 xen-devel@lists.xenproject.org
References: <20241009160438.3884381-7-ardb+git@google.com>
 <CAMj1kXHzahaLRH_0nSQaS7L+so0WRwh4R6SLdb1R+Hm3s-o1dA@mail.gmail.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <CAMj1kXHzahaLRH_0nSQaS7L+so0WRwh4R6SLdb1R+Hm3s-o1dA@mail.gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------gZOzk40ZcVg0MUXFpa50Y3np"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------gZOzk40ZcVg0MUXFpa50Y3np
Content-Type: multipart/mixed; boundary="------------59DSvMH77fSlhYIrtlAj43Kz";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Ard Biesheuvel <ardb@kernel.org>, Ard Biesheuvel <ardb+git@google.com>
Cc: linux-kernel@vger.kernel.org, Jason Andryuk <jason.andryuk@amd.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org,
 xen-devel@lists.xenproject.org
Message-ID: <1dea1f19-c247-435b-9c73-a0181914024d@suse.com>
Subject: Re: [PATCH v3 0/5] x86/xen: Drop absolute references from startup
 code
References: <20241009160438.3884381-7-ardb+git@google.com>
 <CAMj1kXHzahaLRH_0nSQaS7L+so0WRwh4R6SLdb1R+Hm3s-o1dA@mail.gmail.com>
In-Reply-To: <CAMj1kXHzahaLRH_0nSQaS7L+so0WRwh4R6SLdb1R+Hm3s-o1dA@mail.gmail.com>

--------------59DSvMH77fSlhYIrtlAj43Kz
Content-Type: multipart/mixed; boundary="------------EJEuQGMwcveO1ydmzL3SuMmy"

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

T24gMjkuMTAuMjQgMTM6NTAsIEFyZCBCaWVzaGV1dmVsIHdyb3RlOg0KPiBPbiBXZWQsIDkg
T2N0IDIwMjQgYXQgMTg6MDksIEFyZCBCaWVzaGV1dmVsIDxhcmRiK2dpdEBnb29nbGUuY29t
PiB3cm90ZToNCj4+DQo+PiBGcm9tOiBBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3Jn
Pg0KPj4NCj4+IFRoaXMgc2VyaWVzIHdhcyBicm9rZW4gb3V0IG9mIHRoZSBzZXJpZXMgSSBz
ZW50IHJlY2VudGx5IFswXSwgYWZ0ZXINCj4+IEphc29uIHBvaW50ZWQgb3V0IHRoYXQgbXkg
WGVuIHN0YXJ0dXAgY29kZSBjaGFuZ2VzIGNvbmZsaWN0IHdpdGggaGlzDQo+PiBjaGFuZ2Vz
IHRvIG1ha2UgdGhlIFBWSCBzdGFydHVwIGNvZGUgcG9zaXRpb24gaW5kZXBlbmRlbnQuDQo+
Pg0KPj4gSmFzb24ncyB3b3JrIHJlZHVjZXMgdGhlIGRlbHRhIG9mIG15IGNoYW5nZXMsIGFu
ZCBnaXZlbiB0aGF0IG15IG90aGVyDQo+PiBzZXJpZXMgd2lsbCBsaWtlbHkgYWR2YW5jZSBh
dCBhIG11Y2ggc2xvd2VyIHBhY2UsIHRoZSBYZW4gY2hhbmdlcyBhcmUNCj4+IHByZXNlbnRl
ZCBoZXJlIHNvIHRoZXkgY2FuIGJlIG1lcmdlZCBpbmRlcGVuZGVudGx5Lg0KPj4NCj4+IFRo
ZSBlbmQgcmVzdWx0IGFmdGVyIGFwcGx5aW5nIHRoaXMgc2VyaWVzIChzZWUgYmVsb3cpIGlz
IHRoYXQgdGhlcmUgYXJlDQo+PiBubyBsb25nZXIgYW55IFhlbi1yZWxhdGVkIGFic29sdXRl
IHJlbG9jYXRpb25zIHRoYXQgbmVlZCB0byBiZSBhcHBsaWVkDQo+PiB0byAuaGVhZC50ZXh0
LCBhIHNlY3Rpb24gd2hpY2ggY2FycmllcyBjb2RlIHRoYXQgbWF5IGJlIGludm9rZWQgZnJv
bSB0aGUNCj4+IDE6MSBtYXBwaW5nIG9mIG1lbW9yeSBiZWZvcmUgdGhlIGtlcm5lbCB2aXJ0
dWFsIG1hcHBpbmcgaXMgdXAuICBUaGUgdXNlDQo+PiBvZiBhYnNvbHV0ZSByZWZlcmVuY2Vz
IGluIHRoaXMgY29kZSBzZWN0aW9uIGhhcyByZXN1bHRlZCBpbiBhIGZldyBib290DQo+PiBp
c3N1ZXMgdGhhdCB3ZXJlIHZlcnkgaGFyZCB0byB0cmFjayBkb3duIChDbGFuZyBidWlsdCBr
ZXJuZWxzIHJ1bm5pbmcNCj4+IHVuZGVyIFNFVi1TTlAgaW4gcGFydGljdWxhciwgd2hpY2gg
ZG9lcyBub3QgcHJvdmlkZSB0aGUgYmVzdCBkZWJ1Zw0KPj4gZXhwZXJpZW5jZSkuDQo+Pg0K
Pj4gRXZlbiB0aG91Z2ggdGhlIG9jY3VycmVuY2VzIGluIHRoZSBYZW4gc3RhcnR1cCBjb2Rl
IHdlcmUgZmluZSwgdGhlcmUgaXMNCj4+IG5vdyBhIGxvdCBvZiBDIGNvZGUgZW1pdHRlZCBp
bnRvIC5oZWFkLnRleHQgYXMgd2VsbCwgYW5kIHNvIGl0IHdvdWxkIGJlDQo+PiBoZWxwZnVs
IHRvIHRlYWNoIG9ianRvb2wgdG8gcmVqZWN0IGFic29sdXRlIHJlZmVyZW5jZXMgZW50aXJl
bHkgaW4gdGhpcw0KPj4gc2VjdGlvbiAob3IgcmVseSBvbiB0aGUgbGlua2VyIGZvciB0aGF0
KS4gVGhlcmVmb3JlLCBub3QgcmVseWluZyBvbiB0aGVtDQo+PiBpbiB0aGUgZmlyc3QgcGxh
Y2UgaXMgYSBzdGVwIHRvd2FyZHMgdGhhdCBnb2FsLg0KPj4NCj4+IENoYW5nZXMgc2luY2Ug
djIgWzJdOg0KPj4gLSBhZGQgSmFzb24ncyBUZXN0ZWQtYnkgdG8gcGF0Y2ggIzQNCj4+IC0g
dXNlIGEgYmV0dGVyIG5hbWUgZm9yIHRoZSBsaW5rZXIgZGVmaW5lZCBzeW1ib2xzIHVzZWQg
aW4gdGhlIEVMRiBub3Rlcw0KPj4gICAgKHBhdGNoICM0KQ0KPj4gLSBhZGQgYSBjb21tZW50
IGluIHRoZSBsaW5rZXIgc2NyaXB0IGV4cGxhaW5pbmcgd2h5IHRoZSBzeW1ib2wgdmFsdWVz
DQo+PiAgICBhcmUgY29uc3RydWN0ZWQgaW4gdGhlIHdheSB0aGV5IGFyZQ0KPj4gLSByZWJh
c2Ugb250byB2Ni4xMi1yYzINCj4+DQo+PiBDaGFuZ2VzIHNpbmNlIHYxIFsxXToNCj4+IC0g
YWRkIEphc29uJ3MgUmIgdG8gcGF0Y2hlcyAjMiwgIzMgYW5kICM1DQo+PiAtIGRyb3AgdGhl
IHVzZSBvZiBhIDMyLWJpdCBmaWVsZCBmb3IgdGhlIEVMRiBub3RlLSBRRU1VIHJlYWRzIGEg
dTY0IGFuZA0KPj4gICAgc28gdGhlIHRvcCB3b3JkIG5lZWRzIHRvIHJlbWFpbiAweDANCj4+
IC0gdHdlYWsgI2lmZGVmcyBpbiBwYXRjaCAjNCBzbyB0aGUgaHlwZXJjYWxsX3BhZ2UgbGlu
a2VyIHN5bWJvbCBkb2VzIG5vdA0KPj4gICAgZGVwZW5kIG9uIENPTkZJR19YRU5fUFYNCj4+
IC0gcmViYXNlIG9udG8gdjYuMTItcmMxDQo+Pg0KPj4gQ2hhbmdlcyB3cnQgWzBdOg0KPj4g
LSBhZGQgSmFzb24ncyBSYiB0byBwYXRjaCAjMQ0KPj4gLSByZWJhc2Ugb250byB4ZW4vdGlw
J3MgbGludXgtbmV4dCBicmFuY2gNCj4+IC0gc3BsaXQgb3V0IGZpeCBmb3IgR0RUIGRlc2Ny
aXB0b3Igc2l6ZSBmaWVsZA0KPj4gLSBhZGQgcGF0Y2ggdG8gcmVtb3ZlIHRoZSB6ZXJvaW5n
IG9mIHBoeXNfYmFzZSwgd2hpY2ggaXMgbm8gbG9uZ2VyDQo+PiAgICBuZWVkZWQNCj4+IC0g
dXNlIGEgMzItYml0IGZpZWxkIGZvciBYRU5fRUxGTk9URV9QSFlTMzJfRU5UUlksIGFuZCB1
c2UgaXRzIGNvbnRlbnRzDQo+PiAgICB0byBvYnRhaW4gdGhlIGJ1aWxkIHRpbWUgcGh5c2lj
YWwgYWRkcmVzcyBvZiBwdmhfc3RhcnR1cF94ZW4oKQ0KPj4NCj4+IFswXSBodHRwczovL2xv
cmUua2VybmVsLm9yZy9hbGwvMjAyNDA5MjUxNTAwNTkuMzk1NTU2OS0zMC1hcmRiK2dpdEBn
b29nbGUuY29tDQo+PiBbMV0gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxsLzIwMjQwOTI2
MTA0MTEzLjgwMTQ2LTctYXJkYitnaXRAZ29vZ2xlLmNvbS8NCj4+IFsyXSBodHRwczovL2xv
cmUua2VybmVsLm9yZy9hbGwvMjAyNDA5MzAwNzE1MTMuOTA5NDYyLTctYXJkYitnaXRAZ29v
Z2xlLmNvbS8NCj4+DQo+PiBSZWxvY2F0aW9uIHNlY3Rpb24gJy5yZWxhLmhlYWQudGV4dCcg
YXQgb2Zmc2V0IDB4YjQyOCBjb250YWlucyAxNSBlbnRyaWVzOg0KPj4gICAgT2Zmc2V0ICAg
ICAgICAgIEluZm8gICAgICAgICAgIFR5cGUgICAgICAgICAgIFN5bS4gVmFsdWUgICAgU3lt
LiBOYW1lICsgQWRkZW5kDQo+PiAwMDAwMDAwMDAwMTggIDAwMDgwMDAwMDAwMiBSX1g4Nl82
NF9QQzMyICAgICAwMDAwMDAwMDAwMDAwMDAwIC5pbml0LmRhdGEgKyAxOA0KPj4gMDAwMDAw
MDAwMDJmICAwMDBlMDAwMDAwMDIgUl9YODZfNjRfUEMzMiAgICAgMDAwMDAwMDAwMDAwMDAw
MCBwdmhfc3RhcnRfaW5mbyArIDJmDQo+PiAwMDAwMDAwMDAwMzcgIDAwMGYwMDAwMDAwMiBS
X1g4Nl82NF9QQzMyICAgICAwMDAwMDAwMDAwMDAwMDAwIHB2aF9zdGFydF9pbmZvX3N6ICsg
MzcNCj4+IDAwMDAwMDAwMDA0MiAgMDAwODAwMDAwMDAyIFJfWDg2XzY0X1BDMzIgICAgIDAw
MDAwMDAwMDAwMDAwMDAgLmluaXQuZGF0YSArIDQwOTINCj4+IDAwMDAwMDAwMDA2MCAgMDAx
MDAwMDAwMDAyIFJfWDg2XzY0X1BDMzIgICAgIDAwMDAwMDAwMDAwMDAwMmMgeGVuX2VsZm5v
dGVfcGh5czNbLi4uXSArIDYwDQo+PiAwMDAwMDAwMDAwNjggIDAwMTEwMDAwMDAwMiBSX1g4
Nl82NF9QQzMyICAgICAwMDAwMDAwMDAwMDAwMDAwIHBoeXNfYmFzZSArIDY4DQo+PiAwMDAw
MDAwMDAwNmUgIDAwMTIwMDAwMDAwMiBSX1g4Nl82NF9QQzMyICAgICAwMDAwMDAwMDAwMDA1
MDAwIHB2aF9pbml0X3RvcF9wZ3QgKyA2ZQ0KPj4gMDAwMDAwMDAwMDg5ICAwMDEzMDAwMDAw
MDIgUl9YODZfNjRfUEMzMiAgICAgMDAwMDAwMDAwMDAwNjAwMCBwdmhfbGV2ZWwzX2lkZW50
X3BndCArIDg5DQo+PiAwMDAwMDAwMDAwOTEgIDAwMTQwMDAwMDAwMiBSX1g4Nl82NF9QQzMy
ICAgICAwMDAwMDAwMDAwMDA4MDAwIHB2aF9sZXZlbDNfa2VybmVsX3BndCArIDkxDQo+PiAw
MDAwMDAwMDAwYTMgIDAwMTUwMDAwMDAwMiBSX1g4Nl82NF9QQzMyICAgICAwMDAwMDAwMDAw
MDA5MDAwIHB2aF9sZXZlbDJfa2VybmVsX3BndCArIGEzDQo+PiAwMDAwMDAwMDAwYmUgIDAw
MTIwMDAwMDAwMiBSX1g4Nl82NF9QQzMyICAgICAwMDAwMDAwMDAwMDA1MDAwIHB2aF9pbml0
X3RvcF9wZ3QgKyBiZQ0KPj4gMDAwMDAwMDAwMGRlICAwMDA4MDAwMDAwMDIgUl9YODZfNjRf
UEMzMiAgICAgMDAwMDAwMDAwMDAwMDAwMCAuaW5pdC5kYXRhICsgMWMNCj4+IDAwMDAwMDAw
MDBlOSAgMDAxNjAwMDAwMDAyIFJfWDg2XzY0X1BDMzIgICAgIDAwMDAwMDAwMDAwMDAwMDAg
eGVuX3ByZXBhcmVfcHZoIC0gNA0KPj4gMDAwMDAwMDAwMGY4ICAwMDE3MDAwMDAwMDIgUl9Y
ODZfNjRfUEMzMiAgICAgMDAwMDAwMDAwMDAwMDAwMCBwdmhfYm9vdHBhcmFtcyAtIDQNCj4+
IDAwMDAwMDAwMDBmZCAgMDAxODAwMDAwMDA0IFJfWDg2XzY0X1BMVDMyICAgIDAwMDAwMDAw
MDAwMDAwMDAgc3RhcnR1cF82NCAtIDQNCj4+DQo+PiBSZWxvY2F0aW9uIHNlY3Rpb24gJy5y
ZWxhLm5vdGUuWGVuJyBhdCBvZmZzZXQgMHhiNjY4IGNvbnRhaW5zIDEgZW50cnk6DQo+PiAg
ICBPZmZzZXQgICAgICAgICAgSW5mbyAgICAgICAgICAgVHlwZSAgICAgICAgICAgU3ltLiBW
YWx1ZSAgICBTeW0uIE5hbWUgKyBBZGRlbmQNCj4+IDAwMDAwMDAwMDAyYyAgMDAxYTAwMDAw
MDAyIFJfWDg2XzY0X1BDMzIgICAgIDAwMDAwMDAwMDAwMDAwMDAgeGVuX2VsZm5vdGVfcGh5
czNbLi4uXSArIDANCj4+DQo+PiBDYzogSmFzb24gQW5kcnl1ayA8amFzb24uYW5kcnl1a0Bh
bWQuY29tPg0KPj4gQ2M6IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4NCj4+IENj
OiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPg0KPj4gQ2M6
IHg4NkBrZXJuZWwub3JnDQo+PiBDYzogeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
DQo+Pg0KPiANCj4gUGluZz8NCg0KSSBoYXZlIHF1ZXVlZCB0aGlzIHNlcmllcyBmb3IgNi4x
My4NCg0KDQpKdWVyZ2VuDQo=
--------------EJEuQGMwcveO1ydmzL3SuMmy
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-----

--------------EJEuQGMwcveO1ydmzL3SuMmy--

--------------59DSvMH77fSlhYIrtlAj43Kz--

--------------gZOzk40ZcVg0MUXFpa50Y3np
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/Ey8FAmcg2voFAwAAAAAACgkQsN6d1ii/Ey+l
pgf/alY9XdfauhOlIasMI3SCedfqnCZ5CtIqSf7D8cyOr3A0myUgoWXGLQK8xJz7jJ3k+WHiOKei
AuceXMfbhukeNOddLS4WiwGJgYD2j8gOiJHmpXC7gkxrTcBg/JO8aqN0Yk4O7PQaQyu3YuR8edYX
XFCsurjX7OX0sS7DiuTD+r9juepEw+K2vhMnpGxsaTZYwqbmmqx35Puc7MOG8S58RgoNPVJbwStR
srPk8O2CFlJ9msWCwc1Znjpd1Q4kGN+ERCI8+qBX4a6DP2NwDAgWDd0PZbv4ezD1HaC22sSK/msd
bzgCV3aCTK3ZYyuC1aRhPceZ40HLNOzBYq5/ekxxbQ==
=Pkdz
-----END PGP SIGNATURE-----

--------------gZOzk40ZcVg0MUXFpa50Y3np--


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 13:00:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 13:00:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827387.1241978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5lps-00009i-Fd; Tue, 29 Oct 2024 13:00:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827387.1241978; Tue, 29 Oct 2024 13:00: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 1t5lps-00009a-AH; Tue, 29 Oct 2024 13:00:36 +0000
Received: by outflank-mailman (input) for mailman id 827387;
 Tue, 29 Oct 2024 13: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5lpq-00009U-JC
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 13:00:34 +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 c686ec2d-95f5-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 14:00:30 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2fb5740a03bso51928881fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 06:00:30 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb6348330sm3961625a12.89.2024.10.29.06.00.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 06:00:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c686ec2d-95f5-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMzQiLCJoZWxvIjoibWFpbC1sajEteDIzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImM2ODZlYzJkLTk1ZjUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjA2ODMwLjMxMzcxNiwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730206830; x=1730811630; darn=lists.xenproject.org;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=lhs9jKovntUaY9PGavNQXhxuUdo4pikgYsg6aFLR+Dw=;
        b=FZkYWY1G0XZBCeDhPMb8yr5R90mgxnJmDLwAZYiAPreEx3kQ+P67wZV0CTmNE/Rcl0
         eLHi7mKYAGOQm48Z1p8iLwC2NtDKCM7XhfBNTwu3eLi+aDsb2wEBGwOYsnYpWbZke9pg
         AKYA5hIO9jXqlKuI2IjRgb/NHj6Fwm9chkPz8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730206830; x=1730811630;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=lhs9jKovntUaY9PGavNQXhxuUdo4pikgYsg6aFLR+Dw=;
        b=kJlKqJXEo2fovxo1s6LZCQuI2aaUqFSatqk3EwpeFrKKwmmZfO+v+DkB7PGbG9jkQu
         8KPalxP4mmW38zcJkbag0bF88lBDfEuA5BTrL83t0IL99bPoB4FgmTkqiv5pwKi1HGUw
         zIvpuGqU0YdMqsOlVmnF78lFU6yqOBzM1n+2q0xGaWNvPTL1E7hPmT47IVKBiuRibqo7
         719iFkQ4pA7LbkFpy24nSx7Wn7CnmFMlpSKqSjBdIV2yKT32FF8xGKiRBDW2XVZC+EeN
         iReMuR/eIQpnVV+okYTvX683zHvcf3WD8um5LGVfi9LdnTZgxmt0Su01gXO61hdV+xxB
         jgYA==
X-Forwarded-Encrypted: i=1; AJvYcCWctj2PPl5fjCmiqUmJ29GOd1UxcuTAhsEGcpOkrI4KLemgTpBDvxSjtCemrBXTKgFpIhjpkGmhnEo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyzWDG2jmJ0qJ0vmif6jf/69lGU9lEdXCtgzaaoqkwufFNLQnQv
	0gpYFKPjkKlW/Vlb5rH8TIafP+TBcYupL/InYqUE0lfudpxS5+gYOF2/rfmA4Dc=
X-Google-Smtp-Source: AGHT+IFXwpxDTXM/J+YNubDPqWLFS+jzCNm3xOKwnCN20n97l+85ijY2giHM7cV+ggfB50DyPp9afA==
X-Received: by 2002:a05:651c:556:b0:2fb:6243:321c with SMTP id 38308e7fff4ca-2fcbdf76efamr44170631fa.13.1730206829643;
        Tue, 29 Oct 2024 06:00:29 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 13:00:26 +0000
Message-Id: <D58B4QZAZKUD.3BAWPZIU90TND@cloud.com>
Subject: Re: [PATCH 05/14] x86/xstate: Map/unmap xsave area in
 xstate_set_init() and handle_setbv()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>,
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-6-alejandro.vallejo@cloud.com>
 <4f49f8df-d455-4be2-a245-e876713addf1@suse.com>
In-Reply-To: <4f49f8df-d455-4be2-a245-e876713addf1@suse.com>

On Tue Oct 29, 2024 at 8:26 AM GMT, Jan Beulich wrote:
> On 28.10.2024 16:49, Alejandro Vallejo wrote:
> > --- a/xen/arch/x86/xstate.c
> > +++ b/xen/arch/x86/xstate.c
> > @@ -993,7 +993,12 @@ int handle_xsetbv(u32 index, u64 new_bv)
> > =20
> >          clts();
> >          if ( curr->fpu_dirtied )
> > -            asm ( "stmxcsr %0" : "=3Dm" (curr->arch.xsave_area->fpu_ss=
e.mxcsr) );
> > +        {
> > +            struct xsave_struct *xsave_area =3D vcpu_map_xsave_area(cu=
rr);
> > +
> > +            asm ( "stmxcsr %0" : "=3Dm" (xsave_area->fpu_sse.mxcsr) );
> > +            vcpu_unmap_xsave_area(curr, xsave_area);
> > +        }
>
> Since it's curr that we're dealing with, is this largely a cosmetic chang=
e? I.e.
> there's no going to be any actual map/unmap operation in that case? Other=
wise
> I'd be inclined to say that an actual map/unmap is pretty high overhead f=
or a
> mere store of a 32-bit value.
>
> Jan

Somewhat.

See the follow-up reply to patch2 with something resembling what I expect t=
he
wrappers to have. In short, yes, I expect "current" to not require
mapping/unmapping; but I still would rather see those sites using the same
wrappers for auditability. After we settle on a particular interface, we ca=
n
let the implementation details creep out if that happens to be clearer, but
it's IMO easier to work this way for the time being until those details
crystalise.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 13:25:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 13:25:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827397.1241987 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5mDa-0003jx-Am; Tue, 29 Oct 2024 13:25:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827397.1241987; Tue, 29 Oct 2024 13:25: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 1t5mDa-0003jq-6Y; Tue, 29 Oct 2024 13:25:06 +0000
Received: by outflank-mailman (input) for mailman id 827397;
 Tue, 29 Oct 2024 13:25: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5mDY-0003jk-V0
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 13:25:05 +0000
Received: from mail-oi1-x22c.google.com (mail-oi1-x22c.google.com
 [2607:f8b0:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 32bdf91b-95f9-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 14:25:01 +0100 (CET)
Received: by mail-oi1-x22c.google.com with SMTP id
 5614622812f47-3e6359ab118so1762433b6e.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 06:25:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 32bdf91b-95f9-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjI2MDc6ZjhiMDo0ODY0OjIwOjoyMmMiLCJoZWxvIjoibWFpbC1vaTEteDIyYy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjMyYmRmOTFiLTk1ZjktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjA4MzAxLjExNzUxMiwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730208300; x=1730813100; 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=oZ8b6OUpuMdFA2NZvqdbg6qA4P6P0vagI2On9U05ssg=;
        b=OWGMZ18wBSeY1SnSBAi/s0/lKMKVxz8GdPkbM5+FGh9VlJdJGDcJCm+wrxUkeoE/sC
         YciC8TxOGsfmP7mlutX3zp3suD80ojME/ql07Rf4J3WCze5ew6B8A6ExJjWaLm0aAv84
         qHj/n3zOACxQpLgjgn8mAFRNwFBxHPDqXFn2U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730208300; x=1730813100;
        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=oZ8b6OUpuMdFA2NZvqdbg6qA4P6P0vagI2On9U05ssg=;
        b=mMzYKtv0QmqDGSkQocqqW90Xh7N3dmtYahhO1slg8Vj5aNdGjzTwBFXgojIplUrwrx
         +HQaY9J+ZoUzpFRRKW80p0V5YOnyL9LXhIC9cYsZMiEA4evcFtpVWpMyj7XvJBDdF2C1
         gih3si5lg2X3iP43y1qcDhkjSg+GkuZZlJkUmg3H1rEgVq1VbyjbYoC72MuR6nMvpRIh
         F0a9mFufRkbTEBFUIXYRSpzyd0QnOY2Hr7CtZANZioIPp3sDXIWhvwsR/nYQKn8zEp5E
         FK4enKAB4VdSFTz7MAntDOw1ZMuK48WLFU2rNCRzLv3e2SuuPk2lSTanIYa1P79IGxHv
         coyQ==
X-Forwarded-Encrypted: i=1; AJvYcCVNyVOxk6KbxG0JcKSp17wt7GLDzCYDc2hmjghHFh/u2UlGPj3kf5dRousCCbh9Kb+GpNha5BAPe7E=@lists.xenproject.org
X-Gm-Message-State: AOJu0YznAWIAQaSJS1a7xEYXshuE5LZM4aOLLVWmXnVVCZoRb9IUmsCo
	iTUyLCdmc3fHwgTBxe2YABianGbPC38E23RaimU1xzRPA/brkyMXhJ/baDddUa7fp9OyX6VyV1q
	YfILHzea2X3TRbUT+9Yt9KMa1yU7I5U/ySdqRAQ==
X-Google-Smtp-Source: AGHT+IGDGsLI84UTcRtXFxhNeTC/RIyN5j6gmFLyytYHcqCJRGCk5+ub99J6bZNfZczgWecPVKyHHD0xwW9X+Owc0+E=
X-Received: by 2002:a05:6808:1b98:b0:3e2:9468:49db with SMTP id
 5614622812f47-3e65294ea06mr1084209b6e.21.1730208299664; Tue, 29 Oct 2024
 06:24:59 -0700 (PDT)
MIME-Version: 1.0
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.com> <0a644e0d-b7dc-49b5-b4ba-943f809286a8@citrix.com>
 <D589SQ8Y0WGU.2MM4HPFUKJYGT@cloud.com>
In-Reply-To: <D589SQ8Y0WGU.2MM4HPFUKJYGT@cloud.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Tue, 29 Oct 2024 13:24:48 +0000
Message-ID: <CACHz=ZgDVFMo-if54oivyjK-hr5nnN8PKDp1YT_KL3e3R84HNQ@mail.gmail.com>
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave areas
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org, 
	Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Oct 29, 2024 at 11:58=E2=80=AFAM Alejandro Vallejo
<alejandro.vallejo@cloud.com> wrote:
>
> Hi,
>
> On Mon Oct 28, 2024 at 5:20 PM GMT, Andrew Cooper wrote:
> > On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
> > > diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include=
/asm/xstate.h
> > > index 07017cc4edfd..36260459667c 100644
> > > --- a/xen/arch/x86/include/asm/xstate.h
> > > +++ b/xen/arch/x86/include/asm/xstate.h
> > > @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu =
*v)
> > >             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
> > >  }
> > >
> > > +/*
> > > + * Fetch a pointer to the XSAVE area of a vCPU
> > > + *
> > > + * If ASI is enabled for the domain, this mapping is pCPU-local.
> > > + *
> > > + * @param v Owner of the XSAVE area
> > > + */
> > > +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
> > > +
> > > +/*
> > > + * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.
> > > + *
> > > + * If ASI is enabled and v is not the currently scheduled vCPU then =
the
> > > + * per-pCPU mapping is removed from the address space.
> > > + *
> > > + * @param v           vCPU logically owning xsave_area
> > > + * @param xsave_area  XSAVE blob of v
> > > + */
> > > +#define vcpu_unmap_xsave_area(v, x) ({ (x) =3D NULL; })
> > > +
> >
> > Is there a preview of how these will end up looking with the real ASI
> > bits in place?
>
> I expect the contents to be something along these lines (in function form=
 for
> clarity):
>
>   struct xsave_struct *vcpu_map_xsave_area(struct vcpu *v)
>   {
>       if ( !v->domain->asi )
>           return v->arch.xsave_area;
>
>       if ( likely(v =3D=3D current) )
>           return percpu_fixmap(v, PCPU_FIX_XSAVE_AREA);
>
>       /* Likely some new vmap-like abstraction after AMX */
>       return map_domain_page(v->arch.xsave_area_pg);
>   }
>
> Where:
>   1. v->arch.xsave_area is a pointer to the XSAVE area on non-ASI domains=
.
>   2. v->arch.xsave_area_pg an mfn (or a pointer to a page_info, converted=
)
>   3. percpu_fixmap(v, PCPU_FIX_XSAVE_AREA) is a slot in a per-vCPU fixmap=
, that
>      changes as we context switch from vCPU to vCPU.
>
>   /*
>    * NOTE: Being a function this doesn't nullify the xsave_area pointer, =
but
>    * it would in a macro. It's unimportant for the overall logic though.
>    */
>   void vcpu_unmap_xsave_area(struct vcpu *v, struct xsave_struct *xsave_a=
rea)
>   {
>       /* Catch mismatched areas when ASI is disabled */
>       ASSERT(v->domain->asi || xsave_area =3D=3D v->arch.xsave_area);
>
>       /* Likely some new vunmap-like abstraction after AMX */
>       if ( v->domain->asi && v !=3D current )
>           unmap_domain_page(xsave_area);
>   }
>
> Of course, many of these details hang in the balance of what happens to t=
he ASI
> series from Roger. In any case, the takeaway is that map/unmap must have
> fastpaths for "current" that don't involve mapping. The assumption is tha=
t
> non-current vCPUs are cold paths. In particular, context switches will un=
dergo
> some refactoring in order to make save/restore not require additional
> map/unmaps besides the page table switch and yet another change to furthe=
r
> align "current" with the currently running page tables. Paths like the
> instruction emulator go through these wrappers later on for ease of
> auditability, but are early-returns that cause no major overhead.
>
> My expectation is that these macros are general enough to be tweakable in
> whatever way is most suitable, thus allowing the refactor of the codebase=
 at
> large to make it ASI-friendly before the details of the ASI infra are mer=
ged,
> or even finalised.
>
> >
> > Having a macro-that-reads-like-a-function mutating x by name, rather
> > than by pointer, is somewhat rude.  This is why we capitalise
> > XFREE()/etc which have a similar pattern; to make it clear it's a macro
> > and potentially doing weird things with scopes.
> >
> > ~Andrew
>
> That magic trick on unmap warrants uppercase, agreed. Initially it was al=
l
> function calls and after macrofying them I was lazy to change their users=
.
>
> Cheers,
> Alejandro
>

Why not using static inline functions?

On the documentation, I found weird that "v" is described quite
differently for the 2 macros:
1) @param v Owner of the XSAVE area;
2) @param v           vCPU logically owning xsave_area

For "x" the documentation is "@param xsave_area  XSAVE blob of v", but
there's no "xsave_area" parameter.

(very minors, you can ignore)

Frediano


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 13:27:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 13:27:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827403.1241997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5mFR-0004b6-Lb; Tue, 29 Oct 2024 13:27:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827403.1241997; Tue, 29 Oct 2024 13:27: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 1t5mFR-0004ay-Hk; Tue, 29 Oct 2024 13:27:01 +0000
Received: by outflank-mailman (input) for mailman id 827403;
 Tue, 29 Oct 2024 13:27: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5mFQ-0004af-EH
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 13:27:00 +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 752c85a6-95f9-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 14:26:51 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9a6b4ca29bso670489566b.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 06:26:51 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec8100sm472725166b.6.2024.10.29.06.26.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 06:26:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 752c85a6-95f9-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzUiLCJoZWxvIjoibWFpbC1lajEteDYzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijc1MmM4NWE2LTk1ZjktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjA4NDExLjg2MjY4Nywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730208411; x=1730813211; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=PCHqacQDxtegQ/fjgk1BzYimksEOKsxhUDwZVq7UxHo=;
        b=sAdGL5KGvbiRDsibulkp++ooHYOydPChseqEa1dHbyaCVnrvTruYz1XfkgMC0+zscv
         gMdTfSmSqXKUV1wXasKmETs1HI1noUTEeuIAxZieqlu2xZYCkp06zcU4ASSucnjya5k4
         LcsMhu92bEOZenl3pGzYUI+8NyuD3HkMJ6R3U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730208411; x=1730813211;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:to:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=PCHqacQDxtegQ/fjgk1BzYimksEOKsxhUDwZVq7UxHo=;
        b=g7K4SyX/7L+jJkw6fs5wPlAhOfsPjayMo1XhY8nOZGhgzgnJA54e+AM74WPHNv6Mm0
         3So49VwjmOp8Dd+CthAzxVXZ5YKFmqQC/XK++BC/t/A8LCX8UK5N97313u9urHLasfTw
         BqeXb1VStSg9fd/2ebykW2D/mbNDdER42ImmP4Ukb+I2zLDtOK6ZTO2FSYePTBhW+WAs
         eGaC8bTcX0TMnHUS0i7SEZpHVQxtKvI7bTabfdkwuWYJVMs5AOmktM9B4zSy4UHllaYb
         C4lRXcJ8kJ5uenF4P5rAi/KAFhqpmrLgkXA/Fwhhs8elIUVQgo7frUHG6rs3CdPdQ9DA
         fnJA==
X-Forwarded-Encrypted: i=1; AJvYcCVPF5sqtEIKQYPxuqYRrtYD65Z5BoHubcK2npawNw1Er0ZE2ChhxGl9LE8NdcL58siAJJqiY5Xc7i0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YymGjSAwQ4R/KVQ+9mpfhaNtIsJiIeS5vcC6c887cEB75OiKxO4
	wmCSk7QIbB7mA/xFz3DmHdFtnpJC9GwAApG4QgVGaoxqSo+Vj/Y1BT7cWwKfjj7UlXWLB8/0nMJ
	o
X-Google-Smtp-Source: AGHT+IHe7F7gZCkoHHgXXadzO3DJIj+uwcKbTrKPX2/MOtRm/q18BwcUOtz1deFewHq2+RIj7RG/ow==
X-Received: by 2002:a17:907:7f8b:b0:a99:499f:4cb7 with SMTP id a640c23a62f3a-a9de5ce4e4amr1109516466b.23.1730208411207;
        Tue, 29 Oct 2024 06:26:51 -0700 (PDT)
Message-ID: <bb7b62d2-e7ce-4b2d-977b-79b6c1b35840@citrix.com>
Date: Tue, 29 Oct 2024 13:26:49 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [Mini-OS PATCH] Add missing symbol exports for grub-pv
To: Juergen Gross <jgross@suse.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>,
 minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
 Natanael Copa <ncopa@alpinelinux.org>
References: <20241029114158.17231-1-jgross@suse.com> <ZyDL9fGtcouw9bar@begin>
 <2181e8fc-1066-4749-abca-e4f0de084770@citrix.com>
 <b13cc450-f032-44e2-bbbe-bdc98d4b7050@suse.com>
 <2846b6dc-4209-4f1e-8713-cb8e66ca789c@citrix.com>
 <2894832c-a7c8-4f60-8484-c2eca7927e7e@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <2894832c-a7c8-4f60-8484-c2eca7927e7e@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29/10/2024 12:17 pm, Juergen Gross wrote:
> On 29.10.24 13:13, Andrew Cooper wrote:
>> On 29/10/2024 12:02 pm, Jürgen Groß wrote:
>>> On 29.10.24 13:01, Andrew Cooper wrote:
>>>> On 29/10/2024 11:50 am, Samuel Thibault wrote:
>>>>> Juergen Gross, le mar. 29 oct. 2024 12:41:58 +0100, a ecrit:
>>>>>> Grub-pv needs start_info_union and phys_to_machine_mapping to be
>>>>>> accessible. Export both symbols.
>>>>>>
>>>>>> Fixes: 33411a11f848 ("Mini-OS: hide all symbols not exported via
>>>>>> EXPORT_SYMBOLS()")
>>>>>> Reported-by: Natanael Copa <ncopa@alpinelinux.org>
>>>>>> Signed-off-by: Juergen Gross <jgross@suse.com>
>>>>> Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
>>>>
>>>> Committed.
>>>>
>>>> Jurgen, what do you want to do with updating 4.19?  Don't we need to
>>>> fork a 4.19 branch to avoid the CONFIG_XC change ?
>>>
>>> Yes, I think this is the way to go.
>>
>> Ok.  https://xenbits.xen.org/gitweb/?p=mini-os.git;a=summary
>>
>> master has this fix, and there's a new branch, xen-stable-4.19, starting
>> from the xen-RELEASE-4.19.0 tag with this change backported.
>>
>> Xen 4.18 and earlier don't have the symbol restrictions.
>
> You want a related patch on the Xen 4.19 branch to update the Mini-OS
> commit in Config.mk.
>

I've only made change to minios.git.  None to Xen.

They'll need separate patches.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 13:28:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 13:28:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827413.1242010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5mGb-0005CO-Uo; Tue, 29 Oct 2024 13:28:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827413.1242010; Tue, 29 Oct 2024 13:28: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 1t5mGb-0005CH-SD; Tue, 29 Oct 2024 13:28:13 +0000
Received: by outflank-mailman (input) for mailman id 827413;
 Tue, 29 Oct 2024 13:28: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5mGa-0005C9-TJ
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 13:28:12 +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 a3672828-95f9-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 14:28:09 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-37d4c1b1455so3527731f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 06:28:09 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b6f838sm12526320f8f.83.2024.10.29.06.28.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 06:28:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a3672828-95f9-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MjkiLCJoZWxvIjoibWFpbC13cjEteDQyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImEzNjcyODI4LTk1ZjktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjA4NDg5LjQ1NzkxOSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730208489; x=1730813289; 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=WxafaKkcAGBbYXv7l+JTuwdeBefGYTnOBt0bJZslrj8=;
        b=ICq2RGcdaoN42bffLbY6zhKLVI/GCviTeDr5f5k80gY2w0iRQGyBJ77jdlSm6kgXHt
         jDX6rHtz24YtwpM5Vr89aSTEfLqujtQWEDURIxsD/RwxOh2BnJ/AS8hSzKs5BHGuioNj
         7OE+pPktMVfsV81TKZcE7DKDG/LhUM2MXDcHiJvV4Liqp5CX9e11W4TvjoqxJAY/PXW3
         /K0MeiqjTqS8ICdbr8ULviYp70d7qh2f9oBQsKMZqbR/DqRZue2nVRdLcq1kjzmDKNqX
         rsqJ27lAPFmbjk5RwNV7vrrDomL+CVIhSopIrpoehaYB1Q5oCAToZjZgmgqwVE0Uhn7L
         sgvw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730208489; x=1730813289;
        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=WxafaKkcAGBbYXv7l+JTuwdeBefGYTnOBt0bJZslrj8=;
        b=psgp1djBmq53z9gyeMczYyppmnN4WCP8eYfsID/kBuSAWeG72nNjgeGHNKkjkkoOuW
         uwJgK2g0EFXq10YXvUgNEx4fvqN9uXD7jwKxN1QvWm8X83p8uCoonDM+sb/dMDbEUCgE
         1sXDwEWQwV+k+3R6Tncmg2F7/BSa0L4pEW9DVFSROXxvFHftTSOv+YEUANRFF9PGTXao
         7T9OY9qHi3vGmNtaAF6VfKTqiMJHG6J0WI86TidVcRKet+ANNakjXYWy58yoS6ldXl0y
         cTxLFY/al85HAENXqQ1ihRcIm592ZdiABlpdzASKOMr27wUdtEp7QsQTTRKT6e3ecBb2
         IwPw==
X-Forwarded-Encrypted: i=1; AJvYcCUpQ/Y3farlZZFUX7lrl1nTLZjo9/oK7rvTeS9KlzxWDnPy9BSrN5mIULa9BffXTUI6i96+KdYlPPU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwhxcIinCqD6u1lc7JevmS6SN1iQaYmPXM4jfxQG1vCzbhehIbd
	rWVfYBr9Nt0GNGBEsDiMPYlSKPs5eACiz8VIn9SBQ8+6Iz9IC43Ef2SOFuS1og==
X-Google-Smtp-Source: AGHT+IFsTJBXpZVEWE4thCUAIsMWFwo7DkCgTwoDuy3C0i4SHYTx/5+u1bKCNJ8fordMxSqibEptSQ==
X-Received: by 2002:a5d:4f92:0:b0:374:b35e:ea6c with SMTP id ffacd0b85a97d-380611dc6e9mr8970777f8f.40.1730208488731;
        Tue, 29 Oct 2024 06:28:08 -0700 (PDT)
Message-ID: <6064d51b-f1df-4119-8c38-0f63f888c7af@suse.com>
Date: Tue, 29 Oct 2024 14:28:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave
 areas
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.com>
 <0a644e0d-b7dc-49b5-b4ba-943f809286a8@citrix.com>
 <D589SQ8Y0WGU.2MM4HPFUKJYGT@cloud.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: <D589SQ8Y0WGU.2MM4HPFUKJYGT@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 12:57, Alejandro Vallejo wrote:
> On Mon Oct 28, 2024 at 5:20 PM GMT, Andrew Cooper wrote:
>> On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
>>> diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include/asm/xstate.h
>>> index 07017cc4edfd..36260459667c 100644
>>> --- a/xen/arch/x86/include/asm/xstate.h
>>> +++ b/xen/arch/x86/include/asm/xstate.h
>>> @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu *v)
>>>             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
>>>  }
>>>  
>>> +/*
>>> + * Fetch a pointer to the XSAVE area of a vCPU
>>> + *
>>> + * If ASI is enabled for the domain, this mapping is pCPU-local.
>>> + *
>>> + * @param v Owner of the XSAVE area
>>> + */
>>> +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
>>> +
>>> +/*
>>> + * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.
>>> + *
>>> + * If ASI is enabled and v is not the currently scheduled vCPU then the
>>> + * per-pCPU mapping is removed from the address space.
>>> + *
>>> + * @param v           vCPU logically owning xsave_area
>>> + * @param xsave_area  XSAVE blob of v
>>> + */
>>> +#define vcpu_unmap_xsave_area(v, x) ({ (x) = NULL; })
>>> +
>>
>> Is there a preview of how these will end up looking with the real ASI
>> bits in place?
> 
> I expect the contents to be something along these lines (in function form for
> clarity):
> 
>   struct xsave_struct *vcpu_map_xsave_area(struct vcpu *v)
>   {
>       if ( !v->domain->asi )
>           return v->arch.xsave_area;
> 
>       if ( likely(v == current) )
>           return percpu_fixmap(v, PCPU_FIX_XSAVE_AREA);
> 
>       /* Likely some new vmap-like abstraction after AMX */
>       return map_domain_page(v->arch.xsave_area_pg);
>   }

I'd like to ask that map_domain_page() be avoided here from the beginning, to
take AMX into account right away. I've been sitting on the AMX series for
years, and I'd consider it pretty unfair if it was me to take care of such an
aspect, when instead the series should (imo) long have landed.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 13:31:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 13:31:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827419.1242021 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5mJZ-0006k6-CF; Tue, 29 Oct 2024 13:31:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827419.1242021; Tue, 29 Oct 2024 13:31: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 1t5mJZ-0006jz-8i; Tue, 29 Oct 2024 13:31:17 +0000
Received: by outflank-mailman (input) for mailman id 827419;
 Tue, 29 Oct 2024 13:31: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5mJY-0006jo-O3
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 13:31:16 +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 11a29ed9-95fa-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 14:31:14 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4316a44d1bbso50082005e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 06:31:14 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4319360d32bsm144263845e9.46.2024.10.29.06.31.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 06:31:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 11a29ed9-95fa-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmUiLCJoZWxvIjoibWFpbC13bTEteDMyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjExYTI5ZWQ5LTk1ZmEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjA4Njc0LjM5NTUzMywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730208674; x=1730813474; 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=kx44HI33RYWboMoxZ7ovpZm2AGUdgnridxr3Yf4WQVE=;
        b=IGpuMPOtg8+8V4oJiE1xiebtifuhN3XcbJdSNeW6F8OzM6jCCdOTjx9Wn/4O+wQ2qL
         1x6sA2v6Qu8j0VfjVNuDzIrnnync6hs7+ouG+aBbi3BxzQJOoYc1GgMYlRUjaGKosA/b
         79UErJlN5wrsrXbA4erXLKI0f+jfqmJ0L0JkMX2ZvGMPqFOrGDG+olkf4M+M+c3CXujQ
         7kSPTNDFYgmjrFl41/7yAbBUmfWlwUT2V8aYPuya0xznb34n12mQYE4WDBeUC+EuO7FC
         sMoCV77P/17N7Sdo8dZgdZzKeFWS8w6ExIQsTXqlvLGmRd54WZSiQMpIWWluUXkX5794
         VkUA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730208674; x=1730813474;
        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=kx44HI33RYWboMoxZ7ovpZm2AGUdgnridxr3Yf4WQVE=;
        b=qRARj5sF1+ArVkLm78SlfTq3Ua4u/vJUhBGZVWbjLJcgcsFaMnEanp7xsk0mQsS7D2
         DDBgIgwtNZY+sEk6WnMP9zFo5a2Vtp/U3yTpx8GbxEtXqiF0SrSs6BTQm4G2GXdJvUzz
         pQ39lS7LcWUGDrNVvI+v2PXqvcIsnfMhf7hzUc5hVwYxNIqo7tjSWR6gA13mG0J+0A6O
         vENpZMg5ktHh91Nf/pqctWuMwQf7+l7TCHFd9cTZH0XElsHb/lRSMuvqAqfgGidWaHh2
         WgpsZWcR52fmI+XPnBwvcQ6BoWYs7DNJamKatSpTp/f0wjRzolV2ptscZzI1MtGKM5VC
         +n8A==
X-Forwarded-Encrypted: i=1; AJvYcCWIKyZWRefUtNkVd3FBSyoqZy6nCNe7Dq+mryaR1tL41aU60jMa4LfijTZk+eCZ7h2k/N7Z1peYZVU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy6vfwF8UAPEohZmutWQnUaDlz2UhU099NEk30JIAWgv2ZVlQKS
	cpKSIbzE3s3ogLIdntVzMsRvg8lsAwPhG0OdOysNxwmmD9yRN4YZwCFlVroRug==
X-Google-Smtp-Source: AGHT+IGQ3JOkVgbfT2tk56ZbMEEwbOD9xvXCYKZrSYwJM625Brhu2gYXo5AOaB8Bg7PMgOaOPkW3xA==
X-Received: by 2002:a05:600c:4f15:b0:431:5f9e:3f76 with SMTP id 5b1f17b1804b1-4319acaf35emr120370715e9.16.1730208673740;
        Tue, 29 Oct 2024 06:31:13 -0700 (PDT)
Message-ID: <aeaa64ed-91f3-4856-8938-195436427892@suse.com>
Date: Tue, 29 Oct 2024 14:31:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 05/14] x86/xstate: Map/unmap xsave area in
 xstate_set_init() and handle_setbv()
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-6-alejandro.vallejo@cloud.com>
 <4f49f8df-d455-4be2-a245-e876713addf1@suse.com>
 <D58B4QZAZKUD.3BAWPZIU90TND@cloud.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: <D58B4QZAZKUD.3BAWPZIU90TND@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 14:00, Alejandro Vallejo wrote:
> On Tue Oct 29, 2024 at 8:26 AM GMT, Jan Beulich wrote:
>> On 28.10.2024 16:49, Alejandro Vallejo wrote:
>>> --- a/xen/arch/x86/xstate.c
>>> +++ b/xen/arch/x86/xstate.c
>>> @@ -993,7 +993,12 @@ int handle_xsetbv(u32 index, u64 new_bv)
>>>  
>>>          clts();
>>>          if ( curr->fpu_dirtied )
>>> -            asm ( "stmxcsr %0" : "=m" (curr->arch.xsave_area->fpu_sse.mxcsr) );
>>> +        {
>>> +            struct xsave_struct *xsave_area = vcpu_map_xsave_area(curr);
>>> +
>>> +            asm ( "stmxcsr %0" : "=m" (xsave_area->fpu_sse.mxcsr) );
>>> +            vcpu_unmap_xsave_area(curr, xsave_area);
>>> +        }
>>
>> Since it's curr that we're dealing with, is this largely a cosmetic change? I.e.
>> there's no going to be any actual map/unmap operation in that case? Otherwise
>> I'd be inclined to say that an actual map/unmap is pretty high overhead for a
>> mere store of a 32-bit value.
> 
> Somewhat.
> 
> See the follow-up reply to patch2 with something resembling what I expect the
> wrappers to have. In short, yes, I expect "current" to not require
> mapping/unmapping; but I still would rather see those sites using the same
> wrappers for auditability. After we settle on a particular interface, we can
> let the implementation details creep out if that happens to be clearer, but
> it's IMO easier to work this way for the time being until those details
> crystalise.

Sure. As expressed in a later reply on the same topic, what I'm after are brief
comments indicating that despite the function names involved, no actual mapping
operations will be carried out in these cases, thus addressing concerns towards
the overhead involved.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:12:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:12:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827436.1242030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5mxD-00052t-Dn; Tue, 29 Oct 2024 14:12:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827436.1242030; Tue, 29 Oct 2024 14: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 1t5mxD-00052m-B7; Tue, 29 Oct 2024 14:12:15 +0000
Received: by outflank-mailman (input) for mailman id 827436;
 Tue, 29 Oct 2024 14:12: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5mxB-00052g-Pw
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:12:13 +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 c824c66d-95ff-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 15:12:08 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a99cc265e0aso854591166b.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 07:12:08 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a083466sm476000866b.193.2024.10.29.07.12.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 07:12:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c824c66d-95ff-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmUiLCJoZWxvIjoibWFpbC1lajEteDYyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImM4MjRjNjZkLTk1ZmYtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjExMTI4LjA3MTE3LCJzZW5kZXIiOiJhbGVqYW5kcm8udmFsbGVqb0BjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730211127; x=1730815927; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=KEjEv6rKdJWFhkF6klgf6zynOVSw9JjzPsJnmF27QEU=;
        b=SHo6D/FuyUL+eIiPKBSR1CWHEy/gWYKIeD2lPoJx/+XRt+B6R42ifHPlZMIDo3u6IL
         34aFZ0LLzpwUAGnT4SQHIevlXlYNMKP7KJWOxag09sMAGBXuk8n9xb8wDRY3qThdJT7c
         vOJkKgJGwhX76CmiDy7S8JlXVFoJ+RdhcsT74=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730211127; x=1730815927;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=KEjEv6rKdJWFhkF6klgf6zynOVSw9JjzPsJnmF27QEU=;
        b=Aa5hpXGq7WdzV6iC67BWKFLox2TizuwSQLalmwv4hKxxaT45fk1M7IXWEwgSQvEAiU
         MNVm+Z4TL//6VWhbxW+pkuwbNNV1FlT8uXhSuaj8MtbEeyvnJy5yU3sKe3Lbo5KNr/Hx
         iBSOrP7zfmqbK+0HyDHA1TvFZZJ0Qup4hCFoOqb9mQzeDJ7c+D30pIxXtWfSpb7xLw/C
         kP2J4j7M4U8ZUA/UHT+zz3kBZZFSLafuID3EXpBcHlvSDt59QO/C3dUuqNiOFbJfLBjl
         VSTDobimUXAWUBguJ3PAbXtdsggmt0a3EzVENZRfho5NACR6Qp4FXG1orWHX1QeNKOQq
         L1Iw==
X-Forwarded-Encrypted: i=1; AJvYcCUt1QEtfRCLJA76k1095mjAEfXgmiiVoU0WAsK5DR5KlDstEF0sQ2yr3G7dcpePrTVx+h/SABOy8UE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzdJQozhkdF8MeHHVpSvGw9KHBeKrsEtKf3kNz+F8o2jE0czIwB
	A9zssRd6pAAg72jCWLWVOw+ZynbRQKV2KawOEQDZmYa8sxNEMfTJ2DLVzTakkK8=
X-Google-Smtp-Source: AGHT+IFHZfiMg9IWjQn7tb4bnP66oo6sICHvk1jsiYq+hMwRClMmUr0yEUfGmhIBk1LG3D6FeXFEng==
X-Received: by 2002:a17:907:78c:b0:a8d:3d36:3169 with SMTP id a640c23a62f3a-a9de6451243mr1009582366b.63.1730211127413;
        Tue, 29 Oct 2024 07:12:07 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 14:12:05 +0000
Message-Id: <D58CNM331F0K.RBY98EPVSZND@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
Cc: =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>, <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave
 areas
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.com>
 <0a644e0d-b7dc-49b5-b4ba-943f809286a8@citrix.com>
 <D589SQ8Y0WGU.2MM4HPFUKJYGT@cloud.com>
 <6064d51b-f1df-4119-8c38-0f63f888c7af@suse.com>
In-Reply-To: <6064d51b-f1df-4119-8c38-0f63f888c7af@suse.com>

On Tue Oct 29, 2024 at 1:28 PM GMT, Jan Beulich wrote:
> On 29.10.2024 12:57, Alejandro Vallejo wrote:
> > On Mon Oct 28, 2024 at 5:20 PM GMT, Andrew Cooper wrote:
> >> On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
> >>> diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/include=
/asm/xstate.h
> >>> index 07017cc4edfd..36260459667c 100644
> >>> --- a/xen/arch/x86/include/asm/xstate.h
> >>> +++ b/xen/arch/x86/include/asm/xstate.h
> >>> @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcpu =
*v)
> >>>             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
> >>>  }
> >>> =20
> >>> +/*
> >>> + * Fetch a pointer to the XSAVE area of a vCPU
> >>> + *
> >>> + * If ASI is enabled for the domain, this mapping is pCPU-local.
> >>> + *
> >>> + * @param v Owner of the XSAVE area
> >>> + */
> >>> +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
> >>> +
> >>> +/*
> >>> + * Drops the XSAVE area of a vCPU and nullifies its pointer on exit.
> >>> + *
> >>> + * If ASI is enabled and v is not the currently scheduled vCPU then =
the
> >>> + * per-pCPU mapping is removed from the address space.
> >>> + *
> >>> + * @param v           vCPU logically owning xsave_area
> >>> + * @param xsave_area  XSAVE blob of v
> >>> + */
> >>> +#define vcpu_unmap_xsave_area(v, x) ({ (x) =3D NULL; })
> >>> +
> >>
> >> Is there a preview of how these will end up looking with the real ASI
> >> bits in place?
> >=20
> > I expect the contents to be something along these lines (in function fo=
rm for
> > clarity):
> >=20
> >   struct xsave_struct *vcpu_map_xsave_area(struct vcpu *v)
> >   {
> >       if ( !v->domain->asi )
> >           return v->arch.xsave_area;
> >=20
> >       if ( likely(v =3D=3D current) )
> >           return percpu_fixmap(v, PCPU_FIX_XSAVE_AREA);
> >=20
> >       /* Likely some new vmap-like abstraction after AMX */
> >       return map_domain_page(v->arch.xsave_area_pg);
> >   }
>
> I'd like to ask that map_domain_page() be avoided here from the beginning=
, to
> take AMX into account right away. I've been sitting on the AMX series for
> years, and I'd consider it pretty unfair if it was me to take care of suc=
h an
> aspect, when instead the series should (imo) long have landed.
>
> Jan

Of course. This is just pseudo-code for explanation purposes, but I didn't =
want
to introduce imaginary functions. In the final thing we'll want to map an a=
rray
of MFNs if the XSAVE area is large enough.

I am already accounting for the XSAVE area to possibly exceed a single page=
 (3
after AMX, I think?). Part of this abstraction stems from that want, in fac=
t,
as otherwise I could simply stash it all away under map_domain_page() and l=
et
that take care of everything. We'll want map_domain_pages_contig() or somet=
hing
along those lines that takes an array of mfns we've previously stored in
arch_vcpu. But that's a tomorrow problem for when we do have a secret area =
to
create those mappings on.

For today, I'd be happy with most code to stop assuming there will be a poi=
nter
in the vcpu.

Cheers,



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:14:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:14:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827441.1242041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5mz7-0005b0-OE; Tue, 29 Oct 2024 14:14:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827441.1242041; Tue, 29 Oct 2024 14: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 1t5mz7-0005at-LH; Tue, 29 Oct 2024 14:14:13 +0000
Received: by outflank-mailman (input) for mailman id 827441;
 Tue, 29 Oct 2024 14:14: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5mz6-0005al-8m
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:14:12 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 102ca991-9600-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 15:14:08 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-539fb49c64aso9133230e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 07:14:08 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f298daasm474542666b.138.2024.10.29.07.14.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 07:14:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 102ca991-9600-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzAiLCJoZWxvIjoibWFpbC1sZjEteDEzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjEwMmNhOTkxLTk2MDAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjExMjQ4Ljg0NDA2LCJzZW5kZXIiOiJhbGVqYW5kcm8udmFsbGVqb0BjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730211248; x=1730816048; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=aqt1QtwaKyWSrviNxZ7VZiV4y+Eve7of15PsFhgabG0=;
        b=O5V+WKsQR+idrNEQiMw2XkycDJQtApF+sgRVmtToJ11WxwHUbDvoe/iv41KFbCOCeF
         3ZKGBVhQnpMLNRoX1AQipRfsrkUwjQlfzEGVZG+RhvGIE7/Hl1EYhe57cfAdOAkZhY9M
         znTttkcFhSJk3bSnVx4uhexM7oq3i450LkZT4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730211248; x=1730816048;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=aqt1QtwaKyWSrviNxZ7VZiV4y+Eve7of15PsFhgabG0=;
        b=Yvnpams2fAlaaOHAJshR2kENE2Y6qKaMZAKNvZsnDymWOsGvLM5xBKqCDrH2Ny6Ko1
         Nts4vzZdMuPC3pMv8pw8xDuhYHCmFZBEQ/NAaFSfx8iYzs1Afvyw05d9kMIAgOudgCDX
         I74gXhEdjvHfg1EqkYLdDdDwuLamsuO4ltz0xNDsJqg7+e8ZJW79fVIngfwjN7jJP/V9
         7dfy4FE8JeTdvgOZfwTyrm4kh6TsonPtrjCya05X382V+LLFZX6zs6DvMR4P1ySV7mCD
         FCiJiQ6HqYVA8s7nKSHTS4O0GAMG+lls6joR0w3kiNXOas6Hy8QCOCG6Pb18Pj5lBa7S
         GuEw==
X-Forwarded-Encrypted: i=1; AJvYcCXe1lgUsYj9ODjdK1nWmLWMy+s9CDtYZKHv0Z+Mbf7rfj1txtWST43zpKptVBpz9k+m10/ODqw1smU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxGX3FE0802VJKbB2Vc4uChWabnhdlHalL/GNhMpMdkj20WMaAx
	wjJPQ66mDDQvZOq07VtCnR9lUXoRelbEc62MHwProco7Og1I5+7NG/muO4Kid6w=
X-Google-Smtp-Source: AGHT+IHNoCsmwl3/ohZT5yKL4rufqtZHmz/oZGDpVlIYU7DSpFKUwMUnJgHuYM9K7i1SibvQ/Ryy+w==
X-Received: by 2002:a05:6512:3c9f:b0:539:93b2:1380 with SMTP id 2adb3069b0e04-53b34921b15mr10239273e87.48.1730211248243;
        Tue, 29 Oct 2024 07:14:08 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 14:14:06 +0000
Message-Id: <D58CP5KMQBUE.L8TH21EXOPH2@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 05/14] x86/xstate: Map/unmap xsave area in
 xstate_set_init() and handle_setbv()
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-6-alejandro.vallejo@cloud.com>
 <4f49f8df-d455-4be2-a245-e876713addf1@suse.com>
 <D58B4QZAZKUD.3BAWPZIU90TND@cloud.com>
 <aeaa64ed-91f3-4856-8938-195436427892@suse.com>
In-Reply-To: <aeaa64ed-91f3-4856-8938-195436427892@suse.com>

On Tue Oct 29, 2024 at 1:31 PM GMT, Jan Beulich wrote:
> On 29.10.2024 14:00, Alejandro Vallejo wrote:
> > On Tue Oct 29, 2024 at 8:26 AM GMT, Jan Beulich wrote:
> >> On 28.10.2024 16:49, Alejandro Vallejo wrote:
> >>> --- a/xen/arch/x86/xstate.c
> >>> +++ b/xen/arch/x86/xstate.c
> >>> @@ -993,7 +993,12 @@ int handle_xsetbv(u32 index, u64 new_bv)
> >>> =20
> >>>          clts();
> >>>          if ( curr->fpu_dirtied )
> >>> -            asm ( "stmxcsr %0" : "=3Dm" (curr->arch.xsave_area->fpu_=
sse.mxcsr) );
> >>> +        {
> >>> +            struct xsave_struct *xsave_area =3D vcpu_map_xsave_area(=
curr);
> >>> +
> >>> +            asm ( "stmxcsr %0" : "=3Dm" (xsave_area->fpu_sse.mxcsr) =
);
> >>> +            vcpu_unmap_xsave_area(curr, xsave_area);
> >>> +        }
> >>
> >> Since it's curr that we're dealing with, is this largely a cosmetic ch=
ange? I.e.
> >> there's no going to be any actual map/unmap operation in that case? Ot=
herwise
> >> I'd be inclined to say that an actual map/unmap is pretty high overhea=
d for a
> >> mere store of a 32-bit value.
> >=20
> > Somewhat.
> >=20
> > See the follow-up reply to patch2 with something resembling what I expe=
ct the
> > wrappers to have. In short, yes, I expect "current" to not require
> > mapping/unmapping; but I still would rather see those sites using the s=
ame
> > wrappers for auditability. After we settle on a particular interface, w=
e can
> > let the implementation details creep out if that happens to be clearer,=
 but
> > it's IMO easier to work this way for the time being until those details
> > crystalise.
>
> Sure. As expressed in a later reply on the same topic, what I'm after are=
 brief
> comments indicating that despite the function names involved, no actual m=
apping
> operations will be carried out in these cases, thus addressing concerns t=
owards
> the overhead involved.
>
> Jan

Right, I can add those to the sites using exclusively "current". That's no
problem.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:19:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:19:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827448.1242050 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5n4Y-0006WS-CM; Tue, 29 Oct 2024 14:19:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827448.1242050; Tue, 29 Oct 2024 14:19: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 1t5n4Y-0006WL-9H; Tue, 29 Oct 2024 14:19:50 +0000
Received: by outflank-mailman (input) for mailman id 827448;
 Tue, 29 Oct 2024 14:19: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=M7fT=RZ=arm.com=mark.rutland@srs-se1.protection.inumbo.net>)
 id 1t5n4X-0006W1-MX
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:19:49 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id d8747fc6-9600-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 15:19:45 +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 10CF016A3;
 Tue, 29 Oct 2024 07:20:14 -0700 (PDT)
Received: from J2N7QTR9R3.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com
 [10.121.207.14])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E6EF73F528;
 Tue, 29 Oct 2024 07:19:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8747fc6-9600-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIxNy4xNDAuMTEwLjE3MiIsImhlbG8iOiJmb3NzLmFybS5jb20ifQ==
X-Custom-Transaction: eyJpZCI6ImQ4NzQ3ZmM2LTk2MDAtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjExNTg1LjUyOTM3NSwic2VuZGVyIjoibWFyay5ydXRsYW5kQGFybS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
Date: Tue, 29 Oct 2024 14:19:33 +0000
From: Mark Rutland <mark.rutland@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: oleg@redhat.com, linux@armlinux.org.uk, will@kernel.org,
	catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
	tglx@linutronix.de, peterz@infradead.org, luto@kernel.org,
	kees@kernel.org, wad@chromium.org, akpm@linux-foundation.org,
	samitolvanen@google.com, arnd@arndb.de, ojeda@kernel.org,
	rppt@kernel.org, hca@linux.ibm.com, aliceryhl@google.com,
	samuel.holland@sifive.com, paulmck@kernel.org, aquini@redhat.com,
	petr.pavlu@suse.com, viro@zeniv.linux.org.uk,
	rmk+kernel@armlinux.org.uk, ardb@kernel.org,
	wangkefeng.wang@huawei.com, surenb@google.com,
	linus.walleij@linaro.org, yangyj.ee@gmail.com, broonie@kernel.org,
	mbenes@suse.cz, puranjay@kernel.org, pcc@google.com,
	guohanjun@huawei.com, sudeep.holla@arm.com,
	Jonathan.Cameron@huawei.com, prarit@redhat.com, liuwei09@cestc.cn,
	dwmw@amazon.co.uk, oliver.upton@linux.dev,
	kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
	vschneid@redhat.com, thiago.bauermann@linaro.org,
	joey.gouly@arm.com, liuyuntao12@huawei.com, leobras@redhat.com,
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 01/19] arm64: ptrace: Replace
 interrupts_enabled() with regs_irqs_disabled()
Message-ID: <ZyDu9XHNmxMHBMSI@J2N7QTR9R3.cambridge.arm.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-2-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241025100700.3714552-2-ruanjinjie@huawei.com>

On Fri, Oct 25, 2024 at 06:06:42PM +0800, Jinjie Ruan wrote:
> Implement regs_irqs_disabled(), and replace interrupts_enabled() macro
> with regs_irqs_disabled() all over the place.
> 
> No functional changes.
> 

Please say why, e.g.

| The generic entry code expects architecture code to provide
| regs_irqs_disabled(regs), but arm64 does not have this and provides
| interrupts_enabled(regs), which has the opposite polarity.
| 
| In preparation for moving arm64 over to the generic entry code,
| replace arm64's interrupts_enabled() with regs_irqs_disabled() and
| update its callers under arch/arm64.
|
| For the moment, a definition of interrupts_enabled() is provided for
| the GICv3 driver. Once arch/arm implement regs_irqs_disabled(), this
| can be removed.

> Suggested-by: Mark Rutland <mark.rutland@arm.com>
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---

[...]

>  arch/arm/include/asm/ptrace.h       | 4 ++--
>  arch/arm/kernel/hw_breakpoint.c     | 2 +-
>  arch/arm/kernel/process.c           | 2 +-
>  arch/arm/mm/alignment.c             | 2 +-
>  arch/arm/mm/fault.c                 | 2 +-

>  drivers/irqchip/irq-gic-v3.c        | 2 +-

I hadn't realised that the GICv3 driver was using this and hence we'd
need to update a few places in arch/arm at the same time. Please update
just the arch/arm64 bits, and add:

| /* 
|  * Used by the GICv3 driver, can be removed once arch/arm implements
|  * regs_irqs_disabled() directly.
|  */
| #define interrupts_enabled(regs)	(!regs_irqs_disabled(regs))

... and then once 32-bit arm implements this we can update the GIC
driver and remove the architecture definitions.

That way we avoid the risk of conflicts with 32-bit arm.

Mark.


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:23:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:23:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827453.1242061 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5n8S-00085U-Ri; Tue, 29 Oct 2024 14:23:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827453.1242061; Tue, 29 Oct 2024 14:23: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 1t5n8S-00085N-Oa; Tue, 29 Oct 2024 14:23:52 +0000
Received: by outflank-mailman (input) for mailman id 827453;
 Tue, 29 Oct 2024 14:23: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5n8S-00085F-3E
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:23:52 +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 6969f748-9601-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 15:23:48 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a99f3a5a44cso668278266b.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 07:23:48 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dfbdecbsm477449666b.5.2024.10.29.07.23.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 07:23:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6969f748-9601-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzYiLCJoZWxvIjoibWFpbC1lajEteDYzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjY5NjlmNzQ4LTk2MDEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjExODI4LjEyOTAwOCwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730211827; x=1730816627; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ONW8wElMnDb8JOIOt2iY3xZ3Ii+2EwBpd2bAnzp6zL8=;
        b=cTRXuUJz9v6xIeFNJMeWccjpa6WW/4L1ftixM4bhRLuhOP7Vz/tlxQkwymIHnJ5n9H
         WNd5XPW4pmpn7oSleKJ/aVXA9z+3l82TvBp0YKj4Xsth2DVGgVCcb9JjhAntYOS1mJbG
         Nu+ii9b303FjekYK/Ah6EYao4ZqYAyHtgQVMM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730211827; x=1730816627;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=ONW8wElMnDb8JOIOt2iY3xZ3Ii+2EwBpd2bAnzp6zL8=;
        b=jJS660whVBqe7I2BP3hU/3pC5kY0BfOA3d0Pk1NQfKXB2S+hQW+hOQhZYjghCMAwga
         M1qsu+Aq+Uz0grYNKLZNsjAIOGTW0E5kQgvWx7LkbqcdXKLt1fn3DSa1kjpSvr88323i
         PqkSnzJ9iRWw9a8Ge4/rv9Io/8zR8z4slKCyDSPkMDryddfa6OU9Ta7c4Zb2ReFPbYMW
         dclVupbFKrnvFKtmIK2Ad9JkyNw/or3b2wDdahapSRNoYDKMHs73B5K/AN5GmcK7qh8m
         vGaEHZHLE32bi3Kfv0a1RWLhvNY51TnFBn/0MIDfZ+Gil2W9yfx/kDezyt/oVy/61Wk/
         L3ig==
X-Forwarded-Encrypted: i=1; AJvYcCUtA7edd/ROaKyqPmJ1fqns/IPMKFyfmQPbgTNfGB9GKTeiW7Gek+5XbHk05gwDu6l+kgyxL0EXwOg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyuBlmSqCk0o4WcerrPWQ351z/YiFWtDYfa/PaFBE5Bxjm+TLoi
	xjz6TADr70EvVfSgG6NVcWyBXFvqwItzvgRtB2X8ouEVkkuI96sxJQm3Pj7L5vg=
X-Google-Smtp-Source: AGHT+IHGaBG1kFRJ1osVG8lM3sQKZV0PVq0ywPIODLsxRUFi4kcWB+Mxi+sKcZG9NO+T2qdkgBklxQ==
X-Received: by 2002:a17:906:f598:b0:a9a:8a4:e090 with SMTP id a640c23a62f3a-a9de61ce882mr1157597166b.50.1730211827334;
        Tue, 29 Oct 2024 07:23:47 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 14:23:45 +0000
Message-Id: <D58CWJPMA1QU.8QJHJUC63WPC@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
 <xen-devel@lists.xenproject.org>, "Jan Beulich" <jbeulich@suse.com>,
 =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH 02/14] x86/xstate: Create map/unmap primitives for xsave
 areas
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Frediano Ziglio" <frediano.ziglio@cloud.com>
X-Mailer: aerc 0.18.2
References: <20241028154932.6797-1-alejandro.vallejo@cloud.com>
 <20241028154932.6797-3-alejandro.vallejo@cloud.com>
 <0a644e0d-b7dc-49b5-b4ba-943f809286a8@citrix.com>
 <D589SQ8Y0WGU.2MM4HPFUKJYGT@cloud.com>
 <CACHz=ZgDVFMo-if54oivyjK-hr5nnN8PKDp1YT_KL3e3R84HNQ@mail.gmail.com>
In-Reply-To: <CACHz=ZgDVFMo-if54oivyjK-hr5nnN8PKDp1YT_KL3e3R84HNQ@mail.gmail.com>

On Tue Oct 29, 2024 at 1:24 PM GMT, Frediano Ziglio wrote:
> On Tue, Oct 29, 2024 at 11:58=E2=80=AFAM Alejandro Vallejo
> <alejandro.vallejo@cloud.com> wrote:
> >
> > Hi,
> >
> > On Mon Oct 28, 2024 at 5:20 PM GMT, Andrew Cooper wrote:
> > > On 28/10/2024 3:49 pm, Alejandro Vallejo wrote:
> > > > diff --git a/xen/arch/x86/include/asm/xstate.h b/xen/arch/x86/inclu=
de/asm/xstate.h
> > > > index 07017cc4edfd..36260459667c 100644
> > > > --- a/xen/arch/x86/include/asm/xstate.h
> > > > +++ b/xen/arch/x86/include/asm/xstate.h
> > > > @@ -143,4 +143,24 @@ static inline bool xstate_all(const struct vcp=
u *v)
> > > >             (v->arch.xcr0_accum & XSTATE_LAZY & ~XSTATE_FP_SSE);
> > > >  }
> > > >
> > > > +/*
> > > > + * Fetch a pointer to the XSAVE area of a vCPU
> > > > + *
> > > > + * If ASI is enabled for the domain, this mapping is pCPU-local.
> > > > + *
> > > > + * @param v Owner of the XSAVE area
> > > > + */
> > > > +#define vcpu_map_xsave_area(v) ((v)->arch.xsave_area)
> > > > +
> > > > +/*
> > > > + * Drops the XSAVE area of a vCPU and nullifies its pointer on exi=
t.
> > > > + *
> > > > + * If ASI is enabled and v is not the currently scheduled vCPU the=
n the
> > > > + * per-pCPU mapping is removed from the address space.
> > > > + *
> > > > + * @param v           vCPU logically owning xsave_area
> > > > + * @param xsave_area  XSAVE blob of v
> > > > + */
> > > > +#define vcpu_unmap_xsave_area(v, x) ({ (x) =3D NULL; })
> > > > +
> > >
> > > Is there a preview of how these will end up looking with the real ASI
> > > bits in place?
> >
> > I expect the contents to be something along these lines (in function fo=
rm for
> > clarity):
> >
> >   struct xsave_struct *vcpu_map_xsave_area(struct vcpu *v)
> >   {
> >       if ( !v->domain->asi )
> >           return v->arch.xsave_area;
> >
> >       if ( likely(v =3D=3D current) )
> >           return percpu_fixmap(v, PCPU_FIX_XSAVE_AREA);
> >
> >       /* Likely some new vmap-like abstraction after AMX */
> >       return map_domain_page(v->arch.xsave_area_pg);
> >   }
> >
> > Where:
> >   1. v->arch.xsave_area is a pointer to the XSAVE area on non-ASI domai=
ns.
> >   2. v->arch.xsave_area_pg an mfn (or a pointer to a page_info, convert=
ed)
> >   3. percpu_fixmap(v, PCPU_FIX_XSAVE_AREA) is a slot in a per-vCPU fixm=
ap, that
> >      changes as we context switch from vCPU to vCPU.
> >
> >   /*
> >    * NOTE: Being a function this doesn't nullify the xsave_area pointer=
, but
> >    * it would in a macro. It's unimportant for the overall logic though=
.
> >    */
> >   void vcpu_unmap_xsave_area(struct vcpu *v, struct xsave_struct *xsave=
_area)
> >   {
> >       /* Catch mismatched areas when ASI is disabled */
> >       ASSERT(v->domain->asi || xsave_area =3D=3D v->arch.xsave_area);
> >
> >       /* Likely some new vunmap-like abstraction after AMX */
> >       if ( v->domain->asi && v !=3D current )
> >           unmap_domain_page(xsave_area);
> >   }
> >
> > Of course, many of these details hang in the balance of what happens to=
 the ASI
> > series from Roger. In any case, the takeaway is that map/unmap must hav=
e
> > fastpaths for "current" that don't involve mapping. The assumption is t=
hat
> > non-current vCPUs are cold paths. In particular, context switches will =
undergo
> > some refactoring in order to make save/restore not require additional
> > map/unmaps besides the page table switch and yet another change to furt=
her
> > align "current" with the currently running page tables. Paths like the
> > instruction emulator go through these wrappers later on for ease of
> > auditability, but are early-returns that cause no major overhead.
> >
> > My expectation is that these macros are general enough to be tweakable =
in
> > whatever way is most suitable, thus allowing the refactor of the codeba=
se at
> > large to make it ASI-friendly before the details of the ASI infra are m=
erged,
> > or even finalised.
> >
> > >
> > > Having a macro-that-reads-like-a-function mutating x by name, rather
> > > than by pointer, is somewhat rude.  This is why we capitalise
> > > XFREE()/etc which have a similar pattern; to make it clear it's a mac=
ro
> > > and potentially doing weird things with scopes.
> > >
> > > ~Andrew
> >
> > That magic trick on unmap warrants uppercase, agreed. Initially it was =
all
> > function calls and after macrofying them I was lazy to change their use=
rs.
> >
> > Cheers,
> > Alejandro
> >
>
> Why not using static inline functions?

I'd rather use regular function in fact for the final thing. These ones are=
n't
to avoid headaches with const parameters and to allow nullifying the pointe=
r
on exit without requiring a double pointer (which is doubly fun with const
involved).

As they gain more logic it's not impossible for them to be split in most
everything to be done in a function and the rest by the macro to avoid tons=
 of
duplicate codegen everywhere.

Anyhow, all of that can be decided later driven by bloat checkers, benchmar=
ks
and the like. My preference is also towards type-safety where possible.

>
> On the documentation, I found weird that "v" is described quite
> differently for the 2 macros:
> 1) @param v Owner of the XSAVE area;
> 2) @param v           vCPU logically owning xsave_area

(2) should have the content of (1). Will do in v2.

>
> For "x" the documentation is "@param xsave_area  XSAVE blob of v", but
> there's no "xsave_area" parameter.

True. I created these macros from previous functions, and there the paramet=
er
was called xsave_area. It should be "x" here.

>
> (very minors, you can ignore)
>
> Frediano



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:34:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:34:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827463.1242071 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nII-0001cy-PS; Tue, 29 Oct 2024 14:34:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827463.1242071; Tue, 29 Oct 2024 14:34: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 1t5nII-0001cr-Lc; Tue, 29 Oct 2024 14:34:02 +0000
Received: by outflank-mailman (input) for mailman id 827463;
 Tue, 29 Oct 2024 14:34: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=M7fT=RZ=arm.com=mark.rutland@srs-se1.protection.inumbo.net>)
 id 1t5nIH-0001bd-M7
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:34:01 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id d4c62f9a-9602-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 15:33:57 +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 C456E113E;
 Tue, 29 Oct 2024 07:34:26 -0700 (PDT)
Received: from J2N7QTR9R3.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com
 [10.121.207.14])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CD8433F528;
 Tue, 29 Oct 2024 07:33:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d4c62f9a-9602-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIxNy4xNDAuMTEwLjE3MiIsImhlbG8iOiJmb3NzLmFybS5jb20ifQ==
X-Custom-Transaction: eyJpZCI6ImQ0YzYyZjlhLTk2MDItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjEyNDM4LjEzMjQzNywic2VuZGVyIjoibWFyay5ydXRsYW5kQGFybS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
Date: Tue, 29 Oct 2024 14:33:47 +0000
From: Mark Rutland <mark.rutland@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: oleg@redhat.com, linux@armlinux.org.uk, will@kernel.org,
	catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
	tglx@linutronix.de, peterz@infradead.org, luto@kernel.org,
	kees@kernel.org, wad@chromium.org, akpm@linux-foundation.org,
	samitolvanen@google.com, arnd@arndb.de, ojeda@kernel.org,
	rppt@kernel.org, hca@linux.ibm.com, aliceryhl@google.com,
	samuel.holland@sifive.com, paulmck@kernel.org, aquini@redhat.com,
	petr.pavlu@suse.com, viro@zeniv.linux.org.uk,
	rmk+kernel@armlinux.org.uk, ardb@kernel.org,
	wangkefeng.wang@huawei.com, surenb@google.com,
	linus.walleij@linaro.org, yangyj.ee@gmail.com, broonie@kernel.org,
	mbenes@suse.cz, puranjay@kernel.org, pcc@google.com,
	guohanjun@huawei.com, sudeep.holla@arm.com,
	Jonathan.Cameron@huawei.com, prarit@redhat.com, liuwei09@cestc.cn,
	dwmw@amazon.co.uk, oliver.upton@linux.dev,
	kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
	vschneid@redhat.com, thiago.bauermann@linaro.org,
	joey.gouly@arm.com, liuyuntao12@huawei.com, leobras@redhat.com,
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 02/19] arm64: entry: Refactor the entry and exit
 for exceptions from EL1
Message-ID: <ZyDyS4TT6xgRIN1w@J2N7QTR9R3.cambridge.arm.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-3-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241025100700.3714552-3-ruanjinjie@huawei.com>

On Fri, Oct 25, 2024 at 06:06:43PM +0800, Jinjie Ruan wrote:
> These changes refactor the entry and exit routines for the exceptions
> from EL1. They store the RCU and lockdep state in a struct
> irqentry_state variable on the stack, rather than recording them
> in the fields of pt_regs, since it is safe enough for these context.

In general, please descirbe *why* we want to make the change first, e.g.

| The generic entry code uses irqentry_state_t to track lockdep and RCU
| state across exception entry and return. For historical reasons, arm64
| embeds similar fields within its pt_regs structure.
|
| In preparation for moving arm64 over to the generic entry code, pull
| these fields out of arm64's pt_regs, and use a seperate structure,
| matching the style of the generic entry code.

> Before:
> 	struct pt_regs {
> 		...
> 		u64 lockdep_hardirqs;
> 		u64 exit_rcu;
> 	}
> 
> 	enter_from_kernel_mode(regs);
> 	...
> 	exit_to_kernel_mode(regs);
> 
> After:
> 	typedef struct irqentry_state {
> 		union {
> 			bool    exit_rcu;
> 			bool    lockdep;
> 		};
> 	} irqentry_state_t;
> 
> 	irqentry_state_t state = enter_from_kernel_mode(regs);
> 	...
> 	exit_to_kernel_mode(regs, state);

I don't think this part is necessary.

> 
> No functional changes.
> 
> Suggested-by: Mark Rutland <mark.rutland@arm.com>
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>  arch/arm64/include/asm/ptrace.h  |  11 ++-
>  arch/arm64/kernel/entry-common.c | 129 +++++++++++++++++++------------
>  2 files changed, 85 insertions(+), 55 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
> index 3e5372a98da4..5156c0d5fa20 100644
> --- a/arch/arm64/include/asm/ptrace.h
> +++ b/arch/arm64/include/asm/ptrace.h
> @@ -149,6 +149,13 @@ static inline unsigned long pstate_to_compat_psr(const unsigned long pstate)
>  	return psr;
>  }
>  
> +typedef struct irqentry_state {
> +	union {
> +		bool	exit_rcu;
> +		bool	lockdep;
> +	};
> +} irqentry_state_t;

AFAICT this can be moved directly into arch/arm64/kernel/entry-common.c.

> +
>  /*
>   * This struct defines the way the registers are stored on the stack during an
>   * exception. struct user_pt_regs must form a prefix of struct pt_regs.
> @@ -169,10 +176,6 @@ struct pt_regs {
>  
>  	u64 sdei_ttbr1;
>  	struct frame_record_meta stackframe;
> -
> -	/* Only valid for some EL1 exceptions. */
> -	u64 lockdep_hardirqs;
> -	u64 exit_rcu;
>  };
>  
>  /* For correct stack alignment, pt_regs has to be a multiple of 16 bytes. */
> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
> index c547e70428d3..68a9aecacdb9 100644
> --- a/arch/arm64/kernel/entry-common.c
> +++ b/arch/arm64/kernel/entry-common.c
> @@ -36,29 +36,36 @@
>   * This is intended to match the logic in irqentry_enter(), handling the kernel
>   * mode transitions only.
>   */
> -static __always_inline void __enter_from_kernel_mode(struct pt_regs *regs)
> +static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
>  {
> -	regs->exit_rcu = false;
> +	irqentry_state_t ret = {
> +		.exit_rcu = false,
> +	};

I realise that the generic entry code calls this 'ret' in
irqentry_enter() and similar, but could we please use 'state'
consistently in the arm64 code?

[...]

>  /*
> @@ -190,9 +199,11 @@ asmlinkage void noinstr asm_exit_to_user_mode(struct pt_regs *regs)
>   * mode. Before this function is called it is not safe to call regular kernel
>   * code, instrumentable code, or any code which may trigger an exception.
>   */
> -static void noinstr arm64_enter_nmi(struct pt_regs *regs)
> +static noinstr irqentry_state_t arm64_enter_nmi(struct pt_regs *regs)
>  {
> -	regs->lockdep_hardirqs = lockdep_hardirqs_enabled();
> +	irqentry_state_t irq_state;

Likewise, please use 'state' rather than 'irq_state'.

In future we should probably have a separate structure for the NMI
paths, and get rid of the union, which would avoid the possiblity of
using mismatched helpers.

Mark.


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:37:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:37:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827471.1242080 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nM6-0002YP-Bl; Tue, 29 Oct 2024 14:37:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827471.1242080; Tue, 29 Oct 2024 14: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 1t5nM6-0002YI-83; Tue, 29 Oct 2024 14:37:58 +0000
Received: by outflank-mailman (input) for mailman id 827471;
 Tue, 29 Oct 2024 14:37: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=M7fT=RZ=arm.com=mark.rutland@srs-se1.protection.inumbo.net>)
 id 1t5nM4-0002YC-Vm
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:37:56 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 61ccea49-9603-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 15:37:54 +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 7213213D5;
 Tue, 29 Oct 2024 07:38:23 -0700 (PDT)
Received: from J2N7QTR9R3.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com
 [10.121.207.14])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 71F353F528;
 Tue, 29 Oct 2024 07:37:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 61ccea49-9603-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIxNy4xNDAuMTEwLjE3MiIsImhlbG8iOiJmb3NzLmFybS5jb20ifQ==
X-Custom-Transaction: eyJpZCI6IjYxY2NlYTQ5LTk2MDMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjEyNjc0LjU4ODkxNywic2VuZGVyIjoibWFyay5ydXRsYW5kQGFybS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
Date: Tue, 29 Oct 2024 14:37:42 +0000
From: Mark Rutland <mark.rutland@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: oleg@redhat.com, linux@armlinux.org.uk, will@kernel.org,
	catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
	tglx@linutronix.de, peterz@infradead.org, luto@kernel.org,
	kees@kernel.org, wad@chromium.org, akpm@linux-foundation.org,
	samitolvanen@google.com, arnd@arndb.de, ojeda@kernel.org,
	rppt@kernel.org, hca@linux.ibm.com, aliceryhl@google.com,
	samuel.holland@sifive.com, paulmck@kernel.org, aquini@redhat.com,
	petr.pavlu@suse.com, viro@zeniv.linux.org.uk,
	rmk+kernel@armlinux.org.uk, ardb@kernel.org,
	wangkefeng.wang@huawei.com, surenb@google.com,
	linus.walleij@linaro.org, yangyj.ee@gmail.com, broonie@kernel.org,
	mbenes@suse.cz, puranjay@kernel.org, pcc@google.com,
	guohanjun@huawei.com, sudeep.holla@arm.com,
	Jonathan.Cameron@huawei.com, prarit@redhat.com, liuwei09@cestc.cn,
	dwmw@amazon.co.uk, oliver.upton@linux.dev,
	kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
	vschneid@redhat.com, thiago.bauermann@linaro.org,
	joey.gouly@arm.com, liuyuntao12@huawei.com, leobras@redhat.com,
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 04/19] arm64: entry: Remove
 __enter_from_kernel_mode()
Message-ID: <ZyDzNmSgmYkXWcdD@J2N7QTR9R3.cambridge.arm.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-5-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241025100700.3714552-5-ruanjinjie@huawei.com>

On Fri, Oct 25, 2024 at 06:06:45PM +0800, Jinjie Ruan wrote:
> The __enter_from_kernel_mode() is only called by enter_from_kernel_mode(),
> remove it.

The point of this split is to cleanly separate the raw entry logic (in
__enter_from_kernel_mode() from pieces that run later and can safely be
instrumented (later in enter_from_kernel_mode()).

I had expected that a later patch would replace
__enter_from_kernel_mode() with the generic equivalent, leaving
enter_from_kernel_mode() unchanged. It looks like patch 16 could do that
without this patch being necessary -- am I missing something?

Mark.

> 
> No functional changes.
> 
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>  arch/arm64/kernel/entry-common.c | 9 +--------
>  1 file changed, 1 insertion(+), 8 deletions(-)
> 
> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
> index ccf59b44464d..a7fd4d6c7650 100644
> --- a/arch/arm64/kernel/entry-common.c
> +++ b/arch/arm64/kernel/entry-common.c
> @@ -36,7 +36,7 @@
>   * This is intended to match the logic in irqentry_enter(), handling the kernel
>   * mode transitions only.
>   */
> -static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
> +static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
>  {
>  	irqentry_state_t ret = {
>  		.exit_rcu = false,
> @@ -55,13 +55,6 @@ static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs
>  	rcu_irq_enter_check_tick();
>  	trace_hardirqs_off_finish();
>  
> -	return ret;
> -}
> -
> -static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
> -{
> -	irqentry_state_t ret = __enter_from_kernel_mode(regs);
> -
>  	mte_check_tfsr_entry();
>  	mte_disable_tco_entry(current);
>  
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:42:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:42:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827477.1242090 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nQl-0004BG-Rc; Tue, 29 Oct 2024 14:42:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827477.1242090; Tue, 29 Oct 2024 14:42: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 1t5nQl-0004B9-Om; Tue, 29 Oct 2024 14:42:47 +0000
Received: by outflank-mailman (input) for mailman id 827477;
 Tue, 29 Oct 2024 14:42: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=M7fT=RZ=arm.com=mark.rutland@srs-se1.protection.inumbo.net>)
 id 1t5nQk-0004B3-At
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:42:46 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 0d7fcd24-9604-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 15:42:42 +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 896ED113E;
 Tue, 29 Oct 2024 07:43:11 -0700 (PDT)
Received: from J2N7QTR9R3.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com
 [10.121.207.14])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 998843F528;
 Tue, 29 Oct 2024 07:42:34 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0d7fcd24-9604-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIxNy4xNDAuMTEwLjE3MiIsImhlbG8iOiJmb3NzLmFybS5jb20ifQ==
X-Custom-Transaction: eyJpZCI6IjBkN2ZjZDI0LTk2MDQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjEyOTYyLjY2NDQ3LCJzZW5kZXIiOiJtYXJrLnJ1dGxhbmRAYXJtLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
Date: Tue, 29 Oct 2024 14:42:32 +0000
From: Mark Rutland <mark.rutland@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: oleg@redhat.com, linux@armlinux.org.uk, will@kernel.org,
	catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
	tglx@linutronix.de, peterz@infradead.org, luto@kernel.org,
	kees@kernel.org, wad@chromium.org, akpm@linux-foundation.org,
	samitolvanen@google.com, arnd@arndb.de, ojeda@kernel.org,
	rppt@kernel.org, hca@linux.ibm.com, aliceryhl@google.com,
	samuel.holland@sifive.com, paulmck@kernel.org, aquini@redhat.com,
	petr.pavlu@suse.com, viro@zeniv.linux.org.uk,
	rmk+kernel@armlinux.org.uk, ardb@kernel.org,
	wangkefeng.wang@huawei.com, surenb@google.com,
	linus.walleij@linaro.org, yangyj.ee@gmail.com, broonie@kernel.org,
	mbenes@suse.cz, puranjay@kernel.org, pcc@google.com,
	guohanjun@huawei.com, sudeep.holla@arm.com,
	Jonathan.Cameron@huawei.com, prarit@redhat.com, liuwei09@cestc.cn,
	dwmw@amazon.co.uk, oliver.upton@linux.dev,
	kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
	vschneid@redhat.com, thiago.bauermann@linaro.org,
	joey.gouly@arm.com, liuyuntao12@huawei.com, leobras@redhat.com,
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 03/19] arm64: entry: Remove
 __enter_from_user_mode()
Message-ID: <ZyD0WJeAhESLIBJp@J2N7QTR9R3.cambridge.arm.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-4-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241025100700.3714552-4-ruanjinjie@huawei.com>

On Fri, Oct 25, 2024 at 06:06:44PM +0800, Jinjie Ruan wrote:
> The __enter_from_user_mode() is only called by enter_from_user_mode(),
> so replaced it with enter_from_user_mode().

As with the next two patches, all the __enter_from_*() and __exit_to_*()
are supposed to handle the raw entry, closely matching the generic code,
and the non-underscored enter_from_*() and exit_to_*() functions are
supposed to be wrappers that handle (possibly instrumentable)
arm64-specific post-entry and pre-exit logic.

I would prefer to keep that split, even though enter_from_user_mode() is
a trivial wrapper.

Am I missing some reason we must remove the wrappers?

Mark.

> 
> No functional changes.
> 
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>  arch/arm64/kernel/entry-common.c | 7 +------
>  1 file changed, 1 insertion(+), 6 deletions(-)
> 
> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
> index 68a9aecacdb9..ccf59b44464d 100644
> --- a/arch/arm64/kernel/entry-common.c
> +++ b/arch/arm64/kernel/entry-common.c
> @@ -109,7 +109,7 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
>   * Before this function is called it is not safe to call regular kernel code,
>   * instrumentable code, or any code which may trigger an exception.
>   */
> -static __always_inline void __enter_from_user_mode(void)
> +static __always_inline void enter_from_user_mode(struct pt_regs *regs)
>  {
>  	lockdep_hardirqs_off(CALLER_ADDR0);
>  	CT_WARN_ON(ct_state() != CT_STATE_USER);
> @@ -118,11 +118,6 @@ static __always_inline void __enter_from_user_mode(void)
>  	mte_disable_tco_entry(current);
>  }
>  
> -static __always_inline void enter_from_user_mode(struct pt_regs *regs)
> -{
> -	__enter_from_user_mode();
> -}
> -
>  /*
>   * Handle IRQ/context state management when exiting to user mode.
>   * After this function returns it is not safe to call regular kernel code,
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:50:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:50:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827484.1242100 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nXS-00058V-GP; Tue, 29 Oct 2024 14:49:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827484.1242100; Tue, 29 Oct 2024 14:49: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 1t5nXS-00058O-Do; Tue, 29 Oct 2024 14:49:42 +0000
Received: by outflank-mailman (input) for mailman id 827484;
 Tue, 29 Oct 2024 14:49: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=y6yv=RZ=quicinc.com=quic_jhugo@srs-se1.protection.inumbo.net>)
 id 1t5nXR-00058I-RK
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:49:41 +0000
Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com
 [205.220.168.131]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0393011f-9605-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 15:49:36 +0100 (CET)
Received: from pps.filterd (m0279866.ppops.net [127.0.0.1])
 by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 49T91Ow1025858;
 Tue, 29 Oct 2024 14:47:56 GMT
Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com
 [129.46.96.20])
 by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 42gsq8gr78-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Tue, 29 Oct 2024 14:47:56 +0000 (GMT)
Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com
 [10.47.209.196])
 by NALASPPMTA05.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTPS id 49TEltNx020912
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Tue, 29 Oct 2024 14:47:55 GMT
Received: from [10.226.59.182] (10.80.80.8) by nalasex01a.na.qualcomm.com
 (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Tue, 29 Oct
 2024 07:47:54 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0393011f-9605-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIwNS4yMjAuMTY4LjEzMSIsImhlbG8iOiJteDBhLTAwMzFkZjAxLnBwaG9zdGVkLmNvbSJ9
X-Custom-Transaction: eyJpZCI6IjAzOTMwMTFmLTk2MDUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjEzMzc2Ljc2MjA1NSwic2VuZGVyIjoicXVpY19qaHVnb0BxdWljaW5jLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=
	cc:content-transfer-encoding:content-type:date:from:in-reply-to
	:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
	+wv4O0Y5GVDH3vUrfYUR55hgvLmKzOGrUOAzL5LkrYY=; b=QS0t9JAUBHqWH02u
	dNtVrgHN86w5CLnNDffItzpLyqgQwNrWLXukh7717iCujg+qac7U0LQNgx8UjmfO
	pNppyLoV0BiCWiWYeQfbQSkEueNjqhpwe3ymQ/5JtmI+7D7lNEAuLZkjWYt7Bad3
	FIWANrEtgFCEbNhs18Z88h7B0VJOTTZcagFhIXvQ7W0zo2pKEUeoAojfMPClCC3w
	++dX6DXZS2K0/yun7AKEtrTTvl9CbZw4Czd+v0b3ypA1OiaF5hQ72P40HQv1u1dm
	mFSANVwhc7kKC3bU9wQWN7RlliJHoMkvZAvlxYf4h1W0oqtV7QsYssccuvYBrg1q
	QDJmNA==
Message-ID: <5dd216a0-0c99-6dd5-f06d-60c7c6da1b31@quicinc.com>
Date: Tue, 29 Oct 2024 08:47:54 -0600
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
 Thunderbird/91.6.0
Subject: Re: [PATCH v2 3/3] drm: remove driver date from struct drm_driver and
 all drivers
Content-Language: en-US
To: Jani Nikula <jani.nikula@intel.com>, <dri-devel@lists.freedesktop.org>,
        <intel-gfx@lists.freedesktop.org>
CC: Javier Martinez Canillas <javierm@redhat.com>,
        Alex Deucher
	<alexander.deucher@amd.com>,
        Simon Ser <contact@emersion.fr>, David Airlie
	<airlied@gmail.com>,
        Hamza Mahfooz <hamza.mahfooz@amd.com>,
        Maarten Lankhorst
	<maarten.lankhorst@linux.intel.com>,
        Maxime Ripard <mripard@kernel.org>,
        Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
        Simona Vetter
	<simona@ffwll.ch>,
        Thomas Zimmermann <tzimmermann@suse.de>,
        =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= <ville.syrjala@linux.intel.com>,
        <amd-gfx@lists.freedesktop.org>,
        <linux-arm-kernel@lists.infradead.org>,
        <nouveau@lists.freedesktop.org>, <xen-devel@lists.xenproject.org>
References: <20241028185141.3756176-1-jani.nikula@intel.com>
 <20241028185141.3756176-3-jani.nikula@intel.com>
From: Jeffrey Hugo <quic_jhugo@quicinc.com>
In-Reply-To: <20241028185141.3756176-3-jani.nikula@intel.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.80.80.8]
X-ClientProxiedBy: nasanex01a.na.qualcomm.com (10.52.223.231) To
 nalasex01a.na.qualcomm.com (10.47.209.196)
X-QCInternal: smtphost
X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085
X-Proofpoint-GUID: 1zozjE_Cu_2BsSxN4CNnC4fCdn0_-mvH
X-Proofpoint-ORIG-GUID: 1zozjE_Cu_2BsSxN4CNnC4fCdn0_-mvH
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29
 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0
 adultscore=0 mlxscore=0 priorityscore=1501 mlxlogscore=982 impostorscore=0
 lowpriorityscore=0 malwarescore=0 clxscore=1011 spamscore=0 suspectscore=0
 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2409260000
 definitions=main-2410290113

On 10/28/2024 12:51 PM, Jani Nikula wrote:
> We stopped using the driver initialized date in commit 7fb8af6798e8
> ("drm: deprecate driver date") and (eventually) started returning "0"
> for drm_version ioctl instead.
> 
> Finish the job, and remove the unused date member from struct
> drm_driver, its initialization from drivers, along with the common
> DRIVER_DATE macros.
> 
> v2: Also update drivers/accel (kernel test robot)
> 
> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
> Acked-by: Simon Ser <contact@emersion.fr>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

For QAIC -
Acked-by: Jeffrey Hugo <quic_jhugo@quicinc.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:52:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:52:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827488.1242111 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5naH-0006eQ-UY; Tue, 29 Oct 2024 14:52:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827488.1242111; Tue, 29 Oct 2024 14:52: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 1t5naH-0006eJ-RO; Tue, 29 Oct 2024 14:52:37 +0000
Received: by outflank-mailman (input) for mailman id 827488;
 Tue, 29 Oct 2024 14:52: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=M7fT=RZ=arm.com=mark.rutland@srs-se1.protection.inumbo.net>)
 id 1t5naG-0006eD-QF
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:52:36 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 6d774089-9605-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 15:52:33 +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 0CD17113E;
 Tue, 29 Oct 2024 07:53:02 -0700 (PDT)
Received: from J2N7QTR9R3.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com
 [10.121.207.14])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0BB213F73B;
 Tue, 29 Oct 2024 07:52:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6d774089-9605-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIxNy4xNDAuMTEwLjE3MiIsImhlbG8iOiJmb3NzLmFybS5jb20ifQ==
X-Custom-Transaction: eyJpZCI6IjZkNzc0MDg5LTk2MDUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjEzNTUzLjI5ODg1NSwic2VuZGVyIjoibWFyay5ydXRsYW5kQGFybS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
Date: Tue, 29 Oct 2024 14:52:22 +0000
From: Mark Rutland <mark.rutland@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: oleg@redhat.com, linux@armlinux.org.uk, will@kernel.org,
	catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
	tglx@linutronix.de, peterz@infradead.org, luto@kernel.org,
	kees@kernel.org, wad@chromium.org, akpm@linux-foundation.org,
	samitolvanen@google.com, arnd@arndb.de, ojeda@kernel.org,
	rppt@kernel.org, hca@linux.ibm.com, aliceryhl@google.com,
	samuel.holland@sifive.com, paulmck@kernel.org, aquini@redhat.com,
	petr.pavlu@suse.com, viro@zeniv.linux.org.uk,
	rmk+kernel@armlinux.org.uk, ardb@kernel.org,
	wangkefeng.wang@huawei.com, surenb@google.com,
	linus.walleij@linaro.org, yangyj.ee@gmail.com, broonie@kernel.org,
	mbenes@suse.cz, puranjay@kernel.org, pcc@google.com,
	guohanjun@huawei.com, sudeep.holla@arm.com,
	Jonathan.Cameron@huawei.com, prarit@redhat.com, liuwei09@cestc.cn,
	dwmw@amazon.co.uk, oliver.upton@linux.dev,
	kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
	vschneid@redhat.com, thiago.bauermann@linaro.org,
	joey.gouly@arm.com, liuyuntao12@huawei.com, leobras@redhat.com,
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 06/19] arm64: entry: Move
 arm64_preempt_schedule_irq() into exit_to_kernel_mode()
Message-ID: <ZyD2pk285YeVmZTm@J2N7QTR9R3.cambridge.arm.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-7-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241025100700.3714552-7-ruanjinjie@huawei.com>

On Fri, Oct 25, 2024 at 06:06:47PM +0800, Jinjie Ruan wrote:
> Move arm64_preempt_schedule_irq() into exit_to_kernel_mode(), so not
> only __el1_irq() but also every time when kernel mode irq return,
> there is a chance to reschedule.

We use exit_to_kernel_mode() for every non-NMI exception return to the
kernel, not just IRQ returns.

> As Mark pointed out, this change will have the following key impact:
> 
>     "We'll preempt even without taking a "real" interrupt. That
>     shouldn't result in preemption that wasn't possible before,
>     but it does change the probability of preempting at certain points,
>     and might have a performance impact, so probably warrants a
>     benchmark."

For anyone following along at home, I said that at:

  https://lore.kernel.org/linux-arm-kernel/ZxejvAmccYMTa4P1@J2N7QTR9R3/

... and there I specifically said:

> I's suggest you first write a patch to align arm64's entry code with the
> generic code, by removing the call to arm64_preempt_schedule_irq() from
> __el1_irq(), and adding a call to arm64_preempt_schedule_irq() in
> __exit_to_kernel_mode(), e.g.
> 
> | static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)
> | {
> | 	...
> | 	if (interrupts_enabled(regs)) {
> | 		...
> | 		if (regs->exit_rcu) {
> | 			...
> | 		}
> | 		...
> | 		arm64_preempt_schedule_irq();
> | 		...
> | 	} else {
> | 		...
> | 	}
> | }

[...]

> +#ifdef CONFIG_PREEMPT_DYNAMIC
> +DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
> +#define need_irq_preemption() \
> +	(static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
> +#else
> +#define need_irq_preemption()	(IS_ENABLED(CONFIG_PREEMPTION))
> +#endif
> +
> +static void __sched arm64_preempt_schedule_irq(void)
> +{
> +	if (!need_irq_preemption())
> +		return;
> +
> +	/*
> +	 * Note: thread_info::preempt_count includes both thread_info::count
> +	 * and thread_info::need_resched, and is not equivalent to
> +	 * preempt_count().
> +	 */
> +	if (READ_ONCE(current_thread_info()->preempt_count) != 0)
> +		return;
> +
> +	/*
> +	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
> +	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
> +	 * using gic_arch_enable_irqs() for normal IRQs. If anything is set in
> +	 * DAIF we must have handled an NMI, so skip preemption.
> +	 */
> +	if (system_uses_irq_prio_masking() && read_sysreg(daif))
> +		return;
> +
> +	/*
> +	 * Preempting a task from an IRQ means we leave copies of PSTATE
> +	 * on the stack. cpufeature's enable calls may modify PSTATE, but
> +	 * resuming one of these preempted tasks would undo those changes.
> +	 *
> +	 * Only allow a task to be preempted once cpufeatures have been
> +	 * enabled.
> +	 */
> +	if (system_capabilities_finalized())
> +		preempt_schedule_irq();
> +}
> +
>  /*
>   * Handle IRQ/context state management when exiting to kernel mode.
>   * After this function returns it is not safe to call regular kernel code,
> @@ -72,6 +114,8 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
>  static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
>  					irqentry_state_t state)
>  {
> +	arm64_preempt_schedule_irq();

This is broken; exit_to_kernel_mode() is called for any non-NMI return
excpetion return to the kernel, and this doesn't check that interrupts
were enabled in the context the exception was taken from.

This will preempt in cases where we should not, e.g. if we WARN() in a section with
IRQs disabled.

Mark.


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:53:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:53:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827493.1242120 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nbP-0007Al-7F; Tue, 29 Oct 2024 14:53:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827493.1242120; Tue, 29 Oct 2024 14:53: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 1t5nbP-0007Ae-4i; Tue, 29 Oct 2024 14:53:47 +0000
Received: by outflank-mailman (input) for mailman id 827493;
 Tue, 29 Oct 2024 14: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=rNzX=RZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5nbO-0007AY-B2
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:53:46 +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 97831ce9-9605-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 15:53:43 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c96936065dso6495868a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 07:53:43 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f297a57sm483954266b.133.2024.10.29.07.53.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 07:53:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 97831ce9-9605-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmUiLCJoZWxvIjoibWFpbC1lZDEteDUyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijk3ODMxY2U5LTk2MDUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjEzNjIzLjQzODY5NCwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730213623; x=1730818423; 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=8CW5WdJP3MA0EauCh12BA3osj2WKys67ACbayf73a/Q=;
        b=I5/KpoI26XIHGFCnjcDqYPzz1yMiZoMu6+JDrlYmTxyWD1RU+3DMzq/NpQP+DyB97I
         49BGIxMf0KvKJIqftZ+O9fwqNQLALBPV/I6X1d+ChbAqPevHnI+xnoWfrxJCrhw7FDgA
         nYR/l+/0OiykZ3HDFZ7XOT6wGDPZy0aI/G9UQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730213623; x=1730818423;
        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=8CW5WdJP3MA0EauCh12BA3osj2WKys67ACbayf73a/Q=;
        b=JgY2Ug3t5MIOsaaoAzWFP6Ngt4dNqJmjD7sbLNTgWU6DlaCZKSJQaZzsSaabUAfErd
         jXbcOjgCr8Ke3+6i3+T5Eu+7pGrPCpQDzR23mUQ5dHhUGammDgc1GgmqbHo2Dhy1z3fF
         b5BKKF5qDKhtUx+ZQie+aL0s0bXMHXJyXMce3/0N9sVs+8Urs6/TxegBqvUsKSaUZokc
         Ytz6tGXFItpLJMH/Bo28ah0eYqlCWpq3VdfXXaAw7DGJ/vDq4b8ozbkiiWVapl6IjeEw
         8MMAggaixmYdOLoILdi6meDTv1rONEBZGl3fK2FoNduVUriOK9mFPpsTmNOwq4ZxDbZh
         BGQA==
X-Gm-Message-State: AOJu0YyobfC7y3WfatHAjsF89XATu3Lz+ajhQR/7MaN0epElCXhyEZ5o
	gssk30ChgN2yHTPmySz/oTHlOusnktNQrAI5FbrQ4uLnAZkV7PVgoVMrltKuiAU=
X-Google-Smtp-Source: AGHT+IG/i3pExaX6mwkYj5Isewii3lV5775hPvATqb/wdxdwZwZYKDi3YbXRG5nSMssccEPTxIx/Zg==
X-Received: by 2002:a17:907:1c1d:b0:a9a:f53:a5c6 with SMTP id a640c23a62f3a-a9e3a7f468fmr1621066b.65.1730213622815;
        Tue, 29 Oct 2024 07:53:42 -0700 (PDT)
Date: Tue, 29 Oct 2024 15:53:41 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v7 5/5] x86/boot: Clarify comment
Message-ID: <ZyD29aZqLRydMUCp@macbook>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
 <20241029102942.162912-6-frediano.ziglio@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20241029102942.162912-6-frediano.ziglio@cloud.com>

On Tue, Oct 29, 2024 at 10:29:42AM +0000, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> ---
>  xen/arch/x86/boot/reloc.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> index e50e161b27..e725cfb6eb 100644
> --- a/xen/arch/x86/boot/reloc.c
> +++ b/xen/arch/x86/boot/reloc.c
> @@ -65,7 +65,7 @@ typedef struct memctx {
>      /*
>       * Simple bump allocator.
>       *
> -     * It starts from the base of the trampoline and allocates downwards.
> +     * It starts on top of space reserved for the trampoline and allocates downwards.

I'm afraid this line is over 80 characters long, will need to be
adjusted.  Maybe:

    * Starts at top of the relocated trampoline space and allocates downwards.

Thanks.


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 14:55:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 14:55:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827497.1242130 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nd0-0007me-Hi; Tue, 29 Oct 2024 14:55:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827497.1242130; Tue, 29 Oct 2024 14: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 1t5nd0-0007mX-F2; Tue, 29 Oct 2024 14:55:26 +0000
Received: by outflank-mailman (input) for mailman id 827497;
 Tue, 29 Oct 2024 14:55: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=M7fT=RZ=arm.com=mark.rutland@srs-se1.protection.inumbo.net>)
 id 1t5ncy-0007m8-O8
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 14:55:24 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id d1ff574c-9605-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 15:55:21 +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 A86B7113E;
 Tue, 29 Oct 2024 07:55:50 -0700 (PDT)
Received: from J2N7QTR9R3.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com
 [10.121.207.14])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B12463F73B;
 Tue, 29 Oct 2024 07:55:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d1ff574c-9605-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIxNy4xNDAuMTEwLjE3MiIsImhlbG8iOiJmb3NzLmFybS5jb20ifQ==
X-Custom-Transaction: eyJpZCI6ImQxZmY1NzRjLTk2MDUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjEzNzIxLjg2NjYxMywic2VuZGVyIjoibWFyay5ydXRsYW5kQGFybS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
Date: Tue, 29 Oct 2024 14:55:10 +0000
From: Mark Rutland <mark.rutland@arm.com>
To: Jinjie Ruan <ruanjinjie@huawei.com>
Cc: oleg@redhat.com, linux@armlinux.org.uk, will@kernel.org,
	catalin.marinas@arm.com, sstabellini@kernel.org, maz@kernel.org,
	tglx@linutronix.de, peterz@infradead.org, luto@kernel.org,
	kees@kernel.org, wad@chromium.org, akpm@linux-foundation.org,
	samitolvanen@google.com, arnd@arndb.de, ojeda@kernel.org,
	rppt@kernel.org, hca@linux.ibm.com, aliceryhl@google.com,
	samuel.holland@sifive.com, paulmck@kernel.org, aquini@redhat.com,
	petr.pavlu@suse.com, viro@zeniv.linux.org.uk,
	rmk+kernel@armlinux.org.uk, ardb@kernel.org,
	wangkefeng.wang@huawei.com, surenb@google.com,
	linus.walleij@linaro.org, yangyj.ee@gmail.com, broonie@kernel.org,
	mbenes@suse.cz, puranjay@kernel.org, pcc@google.com,
	guohanjun@huawei.com, sudeep.holla@arm.com,
	Jonathan.Cameron@huawei.com, prarit@redhat.com, liuwei09@cestc.cn,
	dwmw@amazon.co.uk, oliver.upton@linux.dev,
	kristina.martsenko@arm.com, ptosi@google.com, frederic@kernel.org,
	vschneid@redhat.com, thiago.bauermann@linaro.org,
	joey.gouly@arm.com, liuyuntao12@huawei.com, leobras@redhat.com,
	linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH -next v4 07/19] arm64: entry: Call
 arm64_preempt_schedule_irq() only if irqs enabled
Message-ID: <ZyD3TiU1Dk_zYsXE@J2N7QTR9R3.cambridge.arm.com>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-8-ruanjinjie@huawei.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241025100700.3714552-8-ruanjinjie@huawei.com>

On Fri, Oct 25, 2024 at 06:06:48PM +0800, Jinjie Ruan wrote:
> Only if irqs are enabled when the interrupt trapped, there may be
> a chance to reschedule after the interrupt has been handled, so move
> arm64_preempt_schedule_irq() into regs_irqs_disabled() check false
> if block.
> 
> As Mark pointed out, this change will have the following key impact:
> 
>     "We will not preempt when taking interrupts from a region of kernel
>     code where IRQs are enabled but RCU is not watching, matching the
>     behaviour of the generic entry code.
> 
>     This has the potential to introduce livelock if we can ever have a
>     screaming interrupt in such a region, so we'll need to go figure out
>     whether that's actually a problem.
> 
>     Having this as a separate patch will make it easier to test/bisect
>     for that specifically."
> 
> Suggested-by: Mark Rutland <mark.rutland@arm.com>
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>

This should be folded into the prior patch.

Mark.

> ---
>  arch/arm64/kernel/entry-common.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
> index e0380812d71e..b57f6dc66115 100644
> --- a/arch/arm64/kernel/entry-common.c
> +++ b/arch/arm64/kernel/entry-common.c
> @@ -114,8 +114,6 @@ static void __sched arm64_preempt_schedule_irq(void)
>  static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
>  					irqentry_state_t state)
>  {
> -	arm64_preempt_schedule_irq();
> -
>  	mte_check_tfsr_exit();
>  
>  	lockdep_assert_irqs_disabled();
> @@ -129,6 +127,8 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
>  			return;
>  		}
>  
> +		arm64_preempt_schedule_irq();
> +
>  		trace_hardirqs_on();
>  	} else {
>  		if (state.exit_rcu)
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 15:07:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 15:07:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827510.1242140 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5noi-0001ny-MO; Tue, 29 Oct 2024 15:07:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827510.1242140; Tue, 29 Oct 2024 15:07: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 1t5noi-0001nr-Jn; Tue, 29 Oct 2024 15:07:32 +0000
Received: by outflank-mailman (input) for mailman id 827510;
 Tue, 29 Oct 2024 15:07: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5noh-0001nl-73
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 15:07:31 +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 81f4181c-9607-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 16:07:26 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9a156513a1so865146466b.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 08:07:26 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b271f56d9sm491179566b.144.2024.10.29.08.07.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 08:07:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 81f4181c-9607-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzYiLCJoZWxvIjoibWFpbC1lajEteDYzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjgxZjQxODFjLTk2MDctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjE0NDQ2LjI2MTMwNSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730214445; x=1730819245; 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=61efCqmY5RV1h30wWUhoOKEKKQf2ViUz4VE5/u8aCqs=;
        b=jyN5Hnrbta8li0o7SdCqkRTY2noQQSDf48qdWkHLW1dcnZDQrhwIcjFDApwoFZPTud
         6/0X5Hcw7xwibn5SSw34xenW6SIm+LnmQc73qwoV6hbx+KJysHHxLljkiq8fFZN5y3dw
         zwjTwa3cVNwS89h4K1Y3AAF/rv4cI6HxW9ElQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730214445; x=1730819245;
        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=61efCqmY5RV1h30wWUhoOKEKKQf2ViUz4VE5/u8aCqs=;
        b=cdyRcSIWCR4eAeLA2di/2INjSco/gvMLRQ72zqEwda7kkFNiuipvc19VCKFqOzHUdT
         ql7jkZKrqYCayn2QIW+K7YdCSm0ZFTqYUmc3DwEMzi79GK893kRyiKs9+CTyeKeFH71+
         tFpvw+dJb6MGUraDGSb+oMF7ejwplnpbycSQhY876aOrKup3xfFMj0umghcv9a8ujxpH
         /MKq0sNK/zuCI3HkCN4x5//uVgRDHsb/OHyw0lwWQDjfoe7QH5/znNDTg3diwmtcIMDL
         zuHouKSKny+X1ORRzOyuPxcDrIrTRrLzkXaZytktYTemWk/NFGHk1rtWFzehB/eauNlB
         DMfA==
X-Gm-Message-State: AOJu0Yw6xjRDqGqWGckGGtKID19aDasdT/KbQmPUhw/HZeIr6FuChQmy
	JVGIhn3Jv3Jt1ZT6KdU+4Q/4HYyAHA1z2nNiCMiWgaRroVFACBZ5I+MLFvVah1Y=
X-Google-Smtp-Source: AGHT+IFDEZ8H3jhrNdk+du3jLxBBC7ZnsNrFAgt4+VUPTdwoPMsL4xfU18q/bG1YQMB1o3qyuhxvyw==
X-Received: by 2002:a17:907:940e:b0:a9a:b70:2a92 with SMTP id a640c23a62f3a-a9de5ecc46bmr1159334066b.16.1730214445597;
        Tue, 29 Oct 2024 08:07:25 -0700 (PDT)
Message-ID: <864df257-dc7b-4028-932e-86f0d69debdb@citrix.com>
Date: Tue, 29 Oct 2024 15:07:23 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 5/5] x86/boot: Clarify comment
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
 <20241029102942.162912-6-frediano.ziglio@cloud.com>
 <ZyD29aZqLRydMUCp@macbook>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZyD29aZqLRydMUCp@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29/10/2024 2:53 pm, Roger Pau Monné wrote:
> On Tue, Oct 29, 2024 at 10:29:42AM +0000, Frediano Ziglio wrote:
>> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>> ---
>>  xen/arch/x86/boot/reloc.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
>> index e50e161b27..e725cfb6eb 100644
>> --- a/xen/arch/x86/boot/reloc.c
>> +++ b/xen/arch/x86/boot/reloc.c
>> @@ -65,7 +65,7 @@ typedef struct memctx {
>>      /*
>>       * Simple bump allocator.
>>       *
>> -     * It starts from the base of the trampoline and allocates downwards.
>> +     * It starts on top of space reserved for the trampoline and allocates downwards.
> I'm afraid this line is over 80 characters long, will need to be
> adjusted.  Maybe:
>
>     * Starts at top of the relocated trampoline space and allocates downwards.

This patch miss misses 2 of the 3 incorrect statements about how the
trampoline works, and Alejandro had some better suggestions in the
thread on the matter.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 15:09:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 15:09:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827514.1242151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nqe-0002LV-2q; Tue, 29 Oct 2024 15:09:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827514.1242151; Tue, 29 Oct 2024 15:09: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 1t5nqd-0002LO-Ux; Tue, 29 Oct 2024 15:09:31 +0000
Received: by outflank-mailman (input) for mailman id 827514;
 Tue, 29 Oct 2024 15:09: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5nqd-0002LI-F4
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 15:09:31 +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 c998158b-9607-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 16:09:26 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9a6b4ca29bso683518866b.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 08:09:26 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f297a9csm471885766b.126.2024.10.29.08.09.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 08:09:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c998158b-9607-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzUiLCJoZWxvIjoibWFpbC1lajEteDYzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImM5OTgxNThiLTk2MDctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjE0NTY2LjUzNjk0Miwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730214566; x=1730819366; 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=oP+f6i+CiBQzM8DiQE4z9NV7bqJbDZmS2vB0G6ewxeg=;
        b=HZnYqMf7yP2IWESF1ZIgdSiaZLmgGmnDWFyZBOPGeThcK9V+pDkbMwyl1DawJkDcwD
         xkhbAQBAq6oUHg0Ql1b5Pxkn4xrf+IWMK5xPEqLIo/DYkRuANZNSjMjlgdRTKNcZbvUS
         0Z+SGlXegSXpIRecPlbVP2ECDGCTyF6DYfa2A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730214566; x=1730819366;
        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=oP+f6i+CiBQzM8DiQE4z9NV7bqJbDZmS2vB0G6ewxeg=;
        b=iCGP+U3RrbKoK2oLA3T387w1aypkqR/it2jLpxzFmk0+fmexeVRq3kV9kUevbINwyd
         S191qcXU9//DarMYUxTEVv9ucejHqeniCAr8RaKX+y6dz13n+vUFLVMx1T6O7/ypYXef
         5NVHLrHLgAcCep2ROtxKFhtKiGh2TAAcegehUwj+4uTebFOzodOSIAk1tdtI9m7TKni4
         w+rI3JByOuSt275FrnEWmxMT1tGBf5964m8NouGGvHOoGiz88NapWQLrkvF8++FvUVpb
         Vk4G6D1CQictlgCO9u9I/3Lu8SB/J5FC2bKviwPCRnNOYzN6Y380EIvPWey8URfTh9c0
         2l/Q==
X-Forwarded-Encrypted: i=1; AJvYcCW//rki2OGkVliVcShSCvH6Afjw5suPblOLWUNwTawwNTyGyQbg0VmAWSbuNWBDVR9RsSX/IiaEqXU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxWahdq/ia5a6ky5ArlkgxQ8sxukynaLc6NE9CFvLWqpb3nJoUZ
	T6cnDYs3NUfeubQ32J88xOfch71LDpUTgszmQ4qNdHfLfhLyGd1SE3nskYCim50=
X-Google-Smtp-Source: AGHT+IFQyAfe4VcuzRBKzDf3RvzDjdCIN/JVY5KA0hmrikio3IhdfPZ1TuGaq6F46X5YB7HhWPyNPw==
X-Received: by 2002:a17:907:940f:b0:a9a:597:8cca with SMTP id a640c23a62f3a-a9de615f959mr1257000866b.45.1730214565871;
        Tue, 29 Oct 2024 08:09:25 -0700 (PDT)
Message-ID: <6fed0353-d9eb-4e48-af49-15841bbfaacf@citrix.com>
Date: Tue, 29 Oct 2024 15:09:23 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 1/5] x86/boot: Rework how 32bit C is linked/included
 for early boot
To: Frediano Ziglio <frediano.ziglio@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@vates.tech>
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
 <20241029102942.162912-2-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241029102942.162912-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29/10/2024 10:29 am, Frediano Ziglio wrote:
> Right now, the two functions which were really too complicated to write
> in asm are compiled as 32bit PIC, linked to a blob and included
> directly, using global asm() to arrange for them to have function semantics.
>
> This is limiting and fragile; the use of data relocations will compile
> fine but malfunction when used, creating hard-to-debug bugs.
>
> Furthermore, we would like to increase the amount of C, to
> deduplicate/unify Xen's boot logic, as well as making it easier to
> follow.  Therefore, rework how the 32bit objects are included.
>
> Link all 32bit objects together first.  This allows for sharing of logic
> between translation units.  Use differential linking and explicit
> imports/exports to confirm that we only have the expected relocations,
> and write the object back out as an assembly file so it can be linked
> again as if it were 64bit, to integrate with the rest of Xen.
>
> This allows for the use of external references (e.g. access to global
> variables) with reasonable assurance of doing so safely.
>
> No functional change.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> Reviewed-by: Anthony PERARD <anthony.perard@vates.tech>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 15:14:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 15:14:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827518.1242160 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5nv1-0003to-I8; Tue, 29 Oct 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 827518.1242160; Tue, 29 Oct 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 1t5nv1-0003th-FC; Tue, 29 Oct 2024 15:14:03 +0000
Received: by outflank-mailman (input) for mailman id 827518;
 Tue, 29 Oct 2024 15:14: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=v9YU=RZ=linux.intel.com=kirill.shutemov@srs-se1.protection.inumbo.net>)
 id 1t5nv0-0003tb-Hj
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 15:14:02 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 67f2121f-9608-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 16:13:56 +0100 (CET)
Received: from orviesa008.jf.intel.com ([10.64.159.148])
 by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 29 Oct 2024 08:13:34 -0700
Received: from black.fi.intel.com ([10.237.72.28])
 by orviesa008.jf.intel.com with ESMTP; 29 Oct 2024 08:13:27 -0700
Received: by black.fi.intel.com (Postfix, from userid 1000)
 id DDA7B26B; Tue, 29 Oct 2024 17:13:25 +0200 (EET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 67f2121f-9608-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE5Mi4xOTguMTYzLjE2IiwiaGVsbyI6Im1nYW1haWwuaW50ZWwuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjY3ZjIxMjFmLTk2MDgtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjE0ODM4LjI0MTM5Miwic2VuZGVyIjoia2lyaWxsLnNodXRlbW92QGxpbnV4LmludGVsLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1730214838; x=1761750838;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=C46h2hkYsxiCvxObmL4cr/5RX40/qGEf8l/UEib9DZQ=;
  b=dE2/Lpy7TRTQcUoZUHWUP98obCE+o8ozdYPnriybjfGO/gA6MFCx+J2r
   7Wqhj/J7I6fBn0Zw8e59tUyUOtm8fP5g9DDGUHK9E7o/2R2vvAalqb17b
   GsvCN4BXHuUDLDDatvNlBHa8YEbJIlZZBEoBXc/u8TbumVNncOezLzGbC
   5IS2/AdU/om9hN1p1RLFSjCNNWlF+s4i0rhLBiT+MligPPJ1sVDaiG/BO
   YjYfvJ4fJ/MWqTSwWtMHaJaQCQgtCTDdZP9VGUEqN4BVXRX44FWaNQb7G
   hd/Jct0Cinh0utyV+A1QOxUqDiITIhxzVQamEU/uElZxh0FbV7Nl/rJOa
   w==;
X-CSE-ConnectionGUID: 6hp2d7NyTpuaRd4DZLb9PA==
X-CSE-MsgGUID: NjoSWqs+TImsiMfo88L30w==
X-IronPort-AV: E=McAfee;i="6700,10204,11240"; a="17495717"
X-IronPort-AV: E=Sophos;i="6.11,241,1725346800"; 
   d="scan'208";a="17495717"
X-CSE-ConnectionGUID: 970WKp7vROmWnggcYDfwjg==
X-CSE-MsgGUID: mXK/hnCeQFmd8+JztOQFJw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,241,1725346800"; 
   d="scan'208";a="82803072"
Date: Tue, 29 Oct 2024 17:13:25 +0200
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
To: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, 
	Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org
Cc: "K. Y. Srinivasan" <kys@microsoft.com>, 
	Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, 
	"H. Peter Anvin" <hpa@zytor.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, Gaosheng Cui <cuigaosheng1@huawei.com>, 
	Michael Roth <michael.roth@amd.com>, Tom Lendacky <thomas.lendacky@amd.com>, 
	Ashish Kalra <ashish.kalra@amd.com>, Kai Huang <kai.huang@intel.com>, Andi Kleen <ak@linux.intel.com>, 
	Sean Christopherson <seanjc@google.com>, Xiaoyao Li <xiaoyao.li@intel.com>, linux-hyperv@vger.kernel.org, 
	linux-kernel@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org, 
	Dave Hansen <dave.hansen@intel.com>
Subject: Re: [PATCH] x86/mtrr: Rename mtrr_overwrite_state() to
 guest_force_mtrr_state()
Message-ID: <l7l6ufyjbrfr4ms6quil5myf5bzmvu33sq3phfvpbwldhzn6m2@rzfdrvbe2glf>
References: <20241015095818.357915-1-kirill.shutemov@linux.intel.com>
 <20241016105048.757081-1-kirill.shutemov@linux.intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241016105048.757081-1-kirill.shutemov@linux.intel.com>

On Wed, Oct 16, 2024 at 01:50:48PM +0300, Kirill A. Shutemov wrote:
> Rename the helper to better reflect its function.
> 
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Suggested-by: Dave Hansen <dave.hansen@intel.com>

KVM patch is Linus' tree.

Dave, can you take this one?

-- 
  Kiryl Shutsemau / Kirill A. Shutemov


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 15:53:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 15:53:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827563.1242283 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5oWv-00035n-JI; Tue, 29 Oct 2024 15:53:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827563.1242283; Tue, 29 Oct 2024 15:53: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 1t5oWv-00035g-Fs; Tue, 29 Oct 2024 15:53:13 +0000
Received: by outflank-mailman (input) for mailman id 827563;
 Tue, 29 Oct 2024 15:53: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5oWu-00035Z-A5
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 15:53:12 +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 e4bc5b58-960d-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 16:53:08 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-43158625112so56019765e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 08:53:08 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4319360ca31sm147521615e9.42.2024.10.29.08.53.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 08:53:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e4bc5b58-960d-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzIiLCJoZWxvIjoibWFpbC13bTEteDMzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImU0YmM1YjU4LTk2MGQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjE3MTg5LjAwMzMxNiwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730217188; x=1730821988; 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=KsVq2F+K3f4Kfjo9EEpGBhULnEl/yRBMuK/3EuLukZI=;
        b=TgGe6RS6ud8VpJkbrkMq6A4EyDBYfFOJvWJPFyL4yCdsl6vucBAfNDiMoeZyYQ64PK
         N9oI8GIOKDAP52J6KSUEqx9peknHqncMdk5BoGEXNCon/+GIzl7noApLe+n/xuAme76C
         lB8UO9FotxwaKH/f7A8QRuiWK+QLxZMgy7dg4qCM9ffIpJtp0YsZ0JmtJJchUonwuof1
         WRBkH6IgVEpE5BvJIje9hbIc0pwRHBMacnfdlO9jWGznceHFdkh9R/Fsyg/k9fRHoDse
         uwmPE4uxaTCSHekbjZFPRAa8rOdt+MsunuzuqNCUkewmjW0xjeBp0dqY/YvdOHTSab73
         AP9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730217188; x=1730821988;
        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=KsVq2F+K3f4Kfjo9EEpGBhULnEl/yRBMuK/3EuLukZI=;
        b=PBTvclhFQflcNaC7tFPUzkgRyjaHSU1DfN4HRSJB1NWaudbFGrTpQ4298Cbl7r1p2Q
         wqL4txDHmUm1Op1MLR1KIH6N25xgEDS2axJxqHWGRg6SuFVzZ/TlKqBoWDsLMi17JRWg
         kbzlMq0TLnHz/Pvq290advkJSQY0EmplRJ7Rov1GUxUuqMIIcoYt+a5VXu0iszUelBoK
         3HE2DTq6uD0rlAeBAPrZuKK/oM5nOJJoa9/sxI7ofVVi7cXXlot1oLq2nP3ZyKeMSAZy
         RX2sxzC7w5kr/YVsnWkxVnl6/giJZ4/es6OezvzKAw9sCX53lM0Gz/T3VK5Tz1mbyZEL
         AE+Q==
X-Forwarded-Encrypted: i=1; AJvYcCV2znyD645dpo33dduasx4CCG9d1vD3z4NhNdT2o0Hq/RZkB3wMC0FQwtFVW9M1rATCISrMud/DdpQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwhuXYgbjxzrd4VR78GVnfL9SmnUR1JSDFb+uar63lb7nXODYeX
	/mAlxXjQFwvU38llEImyA0hpPEO5JjDqVm267n/13Kawj799zqxIpSg+bls7CA==
X-Google-Smtp-Source: AGHT+IG0TTCn6BW/8iooCGnLaYxJnjR2NcUIA31XQOlE+xwkuyf8ZNhS7nK8Mj/caZrdX1p3KJfPiA==
X-Received: by 2002:a05:600c:4f06:b0:428:1b0d:8657 with SMTP id 5b1f17b1804b1-4319ad023e8mr111028315e9.22.1730217188330;
        Tue, 29 Oct 2024 08:53:08 -0700 (PDT)
Message-ID: <edab5ea3-1f69-49f3-8b1d-b3376c3f6027@suse.com>
Date: Tue, 29 Oct 2024 16:53:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] NUMA: Introduce NODE_DATA->node_present_pages(RAM
 pages)
To: Bernhard Kaindl <bernhard.kaindl@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 xen-devel@lists.xenproject.org
References: <20241027144305.1839348-1-bernhardkaindl7@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: <20241027144305.1839348-1-bernhardkaindl7@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 27.10.2024 15:43, Bernhard Kaindl wrote:
> From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
> 
> At the moment, Xen keeps track of the spans of PFNs of the NUMA nodes.
> But the PFN span sometimes includes large MMIO holes, so these values
> might not be an exact representation of the total usable RAM of nodes.
> 
> Xen does not need it, but the size of the NUMA node's memory can be
> helpful for management tools and HW information tools like hwloc/lstopo
> with its Xen backend for Dom0: https://github.com/xenserver-next/hwloc/
> 
> First, introduce NODE_DATA(nodeid)->node_present_pages to node_data[],
> determine the sum of usable PFNs at boot and update them on memory_add().
> 
> (The Linux kernel handles NODE_DATA->node_present_pages likewise)
> 
> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
> ---
> Changes in v3:
> - Use PFN_UP/DOWN, refactored further to simplify the code while leaving
>   compiler-level optimisations to the compiler's optimisation passes.
> Changes in v4:
> - Refactored code and doxygen documentation according to the review.
> ---
>  xen/arch/x86/numa.c      | 13 +++++++++++++
>  xen/arch/x86/x86_64/mm.c |  3 +++
>  xen/common/numa.c        | 36 +++++++++++++++++++++++++++++++++---
>  xen/include/xen/numa.h   | 21 +++++++++++++++++++++
>  4 files changed, 70 insertions(+), 3 deletions(-)
> 
> diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
> index 4b0b297c7e..3c0574f773 100644
> --- a/xen/arch/x86/numa.c
> +++ b/xen/arch/x86/numa.c
> @@ -100,6 +100,19 @@ unsigned int __init arch_get_dma_bitsize(void)
>                   + PAGE_SHIFT, 32);
>  }
>  
> +/**
> + * @brief Retrieves the RAM range for a given index from the e820 memory map.
> + *
> + * This function fetches the start and end address (exclusive) of a RAM range
> + * specified by the given index idx from the e820 memory map.

I think the use of (exclusive) here leaves room for ambiguity (as it may,
unusually, apply to start as well then). Imo it would better be put ...

> + * @param idx The index of the RAM range in the e820 memory map to retrieve.
> + * @param start Pointer to store the start address of the RAM range.
> + * @param end Pointer to store the end address of the RAM range.

... here, just like you have it ...

> + * @return 0 on success, -ENOENT if the index is out of bounds,
> + *         or -ENODATA if the memory map at index idx is not of type E820_RAM.
> + */
>  int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t *end)
>  {
>      if ( idx >= e820.nr_map )
> --- a/xen/common/numa.c
> +++ b/xen/common/numa.c
> @@ -4,6 +4,7 @@
>   * Adapted for Xen: Ryan Harper <ryanh@us.ibm.com>
>   */
>  
> +#include "xen/pfn.h"
>  #include <xen/init.h>
>  #include <xen/keyhandler.h>
>  #include <xen/mm.h>
> @@ -499,15 +500,44 @@ int __init compute_hash_shift(const struct node *nodes,
>      return shift;
>  }
>  
> -/* Initialize NODE_DATA given nodeid and start/end */
> +/**
> + * @brief Initialize a NUMA node's node_data structure at boot.
> + *
> + * It is given the NUMA node's index in the node_data array as well
> + * as the start and exclusive end address of the node's memory span
> + * as arguments and initializes the node_data entry with this information.
> + *
> + * It then initializes the total number of usable memory pages within
> + * the NUMA node's memory span using the arch_get_ram_range() function.
> + *
> + * @param nodeid The index into the node_data array for the node.
> + * @param start The starting physical address of the node's memory range.
> + * @param end The exclusive ending physical address of the node's memory range.

... here.

> + */
>  void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end)
>  {
>      unsigned long start_pfn = paddr_to_pfn(start);
>      unsigned long end_pfn = paddr_to_pfn(end);
> +    struct node_data *numa_node = NODE_DATA(nodeid);
> +    paddr_t start_ram, end_ram;
> +    unsigned int idx = 0;
> +    unsigned long *pages = &numa_node->node_present_pages;
>  
> -    NODE_DATA(nodeid)->node_start_pfn = start_pfn;
> -    NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
> +    numa_node->node_start_pfn = start_pfn;
> +    numa_node->node_spanned_pages = end_pfn - start_pfn;
> +
> +    /* Calculate the number of present RAM pages within the node: */
> +    *pages = 0;
> +    do {
> +        int err = arch_get_ram_range(idx++, &start_ram, &end_ram);
> +
> +        if (err == -ENOENT)
> +            break;
> +        if ( err || start_ram >= end || end_ram <= start )
> +            continue;  /* range is outside of the node, or not usable RAM */
>  
> +        *pages += PFN_DOWN(min(end_ram, end)) - PFN_UP(max(start_ram, start));
> +    } while (1);

Nit: While we have ample bad examples, I think even in such while() uses style
ought to be followed (i.e. "while ( 1 )"). Personally, since this looks a little
odd to me, I generally prefer "for ( ; ; )" in such cases.

With respective adjustments (which I'm happy to make while committing, so long
as you agree):
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 15:56:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 15:56:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827629.1242341 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5oaM-00070O-8s; Tue, 29 Oct 2024 15:56:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827629.1242341; Tue, 29 Oct 2024 15:56: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 1t5oaM-00070H-53; Tue, 29 Oct 2024 15:56:46 +0000
Received: by outflank-mailman (input) for mailman id 827629;
 Tue, 29 Oct 2024 15:56: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5oaK-0006zt-HT
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 15:56:44 +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 63626f84-960e-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 16:56:41 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-43161c0068bso53437605e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 08:56:41 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b4ad08sm12887725f8f.64.2024.10.29.08.56.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 08:56:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 63626f84-960e-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzMiLCJoZWxvIjoibWFpbC13bTEteDMzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjYzNjI2Zjg0LTk2MGUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjE3NDAxLjY2MTA3Niwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730217401; x=1730822201; 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=Er3BLSpPjURbdC6I+O5agJz2jKQiXWRSRgyZXgYP4Cs=;
        b=WM5h18LN60Tt5k5/5J8dKFQOhCJ/iCHD5hfVgR14bU+7pFsdd42xv59ZEpQCU/oR6F
         c1/dltaRK/jPU7n0/K86jQcTH9wC4VPz46iraPZlAckaQbeh+tRwOU67ePzrwDEv3OkQ
         1dDY/PJySw7GXDqY/ESvEhV3gE3fN5gvPKXzlM8yYyW+d+xZgG2Y6GxkSY6ZUICI9fZ8
         aHF7nFdbg06ieaeefQdSupS+pRrAoxWfXscG5XAF+86aInIrg4NfC5v9CGE1lAQ3su4E
         fW/VmYS6ri7d2R/wxYWFSeHCcM9nBctihKslGdGQTAYgOmjq15SXQ1u1n+jOsHyFahH3
         Mr2g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730217401; x=1730822201;
        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=Er3BLSpPjURbdC6I+O5agJz2jKQiXWRSRgyZXgYP4Cs=;
        b=UeqKRCAgfjaROzoxAB/nxAD8LDotaWx7Vpi6CEieVpdhIkrvpW59p9MV75kJfYqmk9
         7kqUFrItTuXh/puOqzTlbLQK0P+tr4JCG+hMSJSjaN25r+6onKwfXNLtTuVvnnfdTc5L
         7TkJOFwA6tNBVAfggys9hYC2knul+NWN25AIjOwN3snj0qB4rdegyJuulSzkwGrwD+hO
         jTA4DYJBaw2sNDhPPuNBgnCCsGo9+poDHCZaQx4N+POihPb3dnQHkscApSMKSe2Hc9an
         FYE6WdwJ454TLe1TsGEkc4D6ykK1zrjPAKQ3jRKVz66lmRQbDVfHA1dY+Hqkxy5hXgYK
         2rbw==
X-Forwarded-Encrypted: i=1; AJvYcCUqn1bUNOBGuK53VyQv+mf1Xpg4RBfoAoKatfCXONfsoTcIe9eRO1+9xZBTF3o7sH5ITtGcyfJroIA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyr4JSwiDvrFAQ54lFEEHSHVX/1ZBPTSbj4Bcm2x+pwoIRYchJ1
	ZVSnmgpfFxSKvYKglG1plt1E2OiqIm36L+moFBq2pd0Qpt0fRjUps9+AUg+1CQ==
X-Google-Smtp-Source: AGHT+IGKxtGDGeuPYFNRSfhr5LVsjJMx8C6D6V+ew5whb1ubBZlLk16b9oXvcFoLfbavHKRboLfQpg==
X-Received: by 2002:a05:600c:3550:b0:431:4a5a:f09a with SMTP id 5b1f17b1804b1-4319ad16150mr104625845e9.24.1730217400806;
        Tue, 29 Oct 2024 08:56:40 -0700 (PDT)
Message-ID: <e61d982b-293b-4957-a997-327d5ed721ff@suse.com>
Date: Tue, 29 Oct 2024 16:56:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/io-apic: fix directed EOI when using AMd-Vi interrupt
 remapping
From: Jan Beulich <jbeulich@suse.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Willi Junga <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org, Roger Pau Monne <roger.pau@citrix.com>
References: <20241018080813.45759-1-roger.pau@citrix.com>
 <9270ef0c-9dfa-4fbf-8060-3c507c0c6684@citrix.com>
 <8f3dfb01-504d-4652-837b-f0a045d28ef9@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: <8f3dfb01-504d-4652-837b-f0a045d28ef9@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 12:05, Jan Beulich wrote:
> On 21.10.2024 13:10, Andrew Cooper wrote:
>> On 18/10/2024 9:08 am, Roger Pau Monne wrote:
>>> When using AMD-VI interrupt remapping the vector field in the IO-APIC RTE is
>>> repurposed to contain part of the offset into the remapping table.  Previous to
>>> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
>>> table would match the vector.  Such logic was mandatory for end of interrupt to
>>> work, since the vector field (even when not containing a vector) is used by the
>>> IO-APIC to find for which pin the EOI must be performed.
>>>
>>> Introduce a table to store the EOI handlers when using interrupt remapping, so
>>> that the IO-APIC driver can translate pins into EOI handlers without having to
>>> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
>>> unconditionally when interrupt remapping is enabled, even if strictly it would
>>> only be required for AMD-Vi.
>>>
>>> Reported-by: Willi Junga <xenproject@ymy.be>
>>> Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
>>> Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>
>> Yet more fallout from the multi-MSI work.  That really has been a giant
>> source of bugs.
> 
> If there's a connection to the multi-MSI work (which I don't see), the Fixes:
> tag would likely need adjusting.

Apologies - despite the seemingly unrelated title that change indeed was part
of the multi-MSI work. I'm sorry for the breakage.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:20:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:20:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827689.1242352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5oxH-0004WR-4T; Tue, 29 Oct 2024 16:20:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827689.1242352; Tue, 29 Oct 2024 16:20: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 1t5oxG-0004WK-VT; Tue, 29 Oct 2024 16:20:26 +0000
Received: by outflank-mailman (input) for mailman id 827689;
 Tue, 29 Oct 2024 16:20: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=2qgp=RZ=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t5oxF-0004Vj-PP
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:20:25 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20626.outbound.protection.outlook.com
 [2a01:111:f403:2414::626])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b1aeaeb7-9611-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 17:20:22 +0100 (CET)
Received: from MW4PR12MB7334.namprd12.prod.outlook.com (2603:10b6:303:219::21)
 by IA1PR12MB6412.namprd12.prod.outlook.com (2603:10b6:208:3af::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.32; Tue, 29 Oct
 2024 16:20:17 +0000
Received: from MW4PR12MB7334.namprd12.prod.outlook.com
 ([fe80::2e77:557:17d5:86f8]) by MW4PR12MB7334.namprd12.prod.outlook.com
 ([fe80::2e77:557:17d5:86f8%5]) with mapi id 15.20.8093.024; Tue, 29 Oct 2024
 16:20: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: b1aeaeb7-9611-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjQxNDo6NjI2IiwiaGVsbyI6Ik5BTTExLUJOOC1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6ImIxYWVhZWI3LTk2MTEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjE4ODIyLjAzMTE5Miwic2VuZGVyIjoiYXlhbi5rdW1hci5oYWxkZXJAYW1kLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=mhS6OJMp8q1+Aa54oEtXgBWmVmAVQ1yutDS4JDqjJ3RH322d8gGc2pccYxry9ghUw1057q/WKbz5cFNGPE4cm6r11Nts/0mrbP8SW3RUQPLBXrIaPpo4vtKmilKLFDlHcsSquT9CxPsiSld0y/xmyeFnAsiV3c2PHEUItO75lvWP+l6DiKVVXLHMpG1wrXxRcZVRs2yRyj7ELe868JKlNue6BC+PIaHBZAUEzb0sxoHNryJtwnmHSs8ufVwyjnfj7ICA0DpgfKIVDJm5QP09DM08uDkR2FpRoXC8C9AojYyc4BhgIN3b5huqvT/vXSVHAat2sq4rufcCCs4xTvnABw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=GJ1+1QQy836vtwCYOT5RDel9iZEQesj1maGKGYFs6vk=;
 b=GYfmsURrczm/qhSpBpwafFPsWVVmgJBcEKaqswEnPsI7PjdZYlC/TpdYfw31zRrH3kRHsaKkmIoOwuAb5ir4jAEAb7crxUP5bJMx9wNwldrMji9MVXZ2NWdn8PNJ/HWjn9NpZQbTnBlPSEvo8Qi+sua9mM8NsYUbbHX7EhM6+qo2vCZZkosNFUk3tBHX0EsbFAuaS4oQOJ0zSmN8CAY0FWnHasyLWud+RdKdhcZThJMRXxTSRjkvd6Kvj9X6mdiGqiq/h6HiJ4ZqLruXaL37oKS2g8qE0Fc20hSfUJAiDbubOCVIpuxXHFKpBR2606gqYcFghzRjbrXsGanzYerrWQ==
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=GJ1+1QQy836vtwCYOT5RDel9iZEQesj1maGKGYFs6vk=;
 b=cHx6cAlHQJPcRIWK6Ypnld70NJrPioOy4GdQ2z3H8JAsmJ5izTIw1ip5p6eGbOY8jZEAxUchA6Ttwkpk5Y9KiRjlVRoYanxC4d0pS8l6CLIMKoMnimXc1xyPN7BohzaYixRQcBXQKHEV8+FSn7HtERWuW8TVSVsDdeQhZtk9/nM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <820c83dd-b632-4350-b117-5325d793464b@amd.com>
Date: Tue, 29 Oct 2024 16:20:11 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.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>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
 <DE7DF8D0-2843-4572-A53E-E65D8CB8358B@arm.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <DE7DF8D0-2843-4572-A53E-E65D8CB8358B@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0628.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:294::6) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW4PR12MB7334:EE_|IA1PR12MB6412:EE_
X-MS-Office365-Filtering-Correlation-Id: 356b546c-9234-461b-2b47-08dcf835930d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?d3pZR0xlTU5FeWtPaWJxbE95SzY3SWU2b3VQR2Q5bVBNSSt4VTV1aUhUTUdx?=
 =?utf-8?B?QlVDd0NxSkhtbEJjSUhsd01UUENrbnZ2UFl4dVRiYTNRZXNFcG9QK0hmNm1P?=
 =?utf-8?B?SjF0VUlrcUFOS2dPTGx1SGdla3RLRjd3RVVlQnlhL2RMYWxKaUs2UDVhYlVl?=
 =?utf-8?B?MXBaSHdDbFVjL29DT1MrREJpNmJCTlloMG9lQmZCRngwWnNyNlhrZFp2VW9h?=
 =?utf-8?B?M0lGVm1CUm03Rm43VXNNVU9BZnByR0FvWkxTK3VBRXFWMUVYSXhZSVU3M3hW?=
 =?utf-8?B?S21WMW1iZnczWUNLVTBhYlQxMVM5M213RnduaWdZeDFuSHBjRlJOUmtua2dQ?=
 =?utf-8?B?akJ6V0hUaFhkbnFZeDV0WDdtU0FLRERxNElQM2FkSDloVTZBZTFrRndZc2hM?=
 =?utf-8?B?QVh6dDJlVytudi9DQjhGb3RTUU1naUpuNkpjdVZLNm00WUtSTmZLNTdWc2pG?=
 =?utf-8?B?clNybE1DNDRxdFBjRkJCRW51a3h1Ujc2M0NHUkZoMVo2NGNqUVVIVHdaNXNM?=
 =?utf-8?B?Szd4Ny9KSnVYY3VvSjZJQ2d5SE1IQkQ1TkF3WmkzK29oaDd1eGVESjJncnls?=
 =?utf-8?B?WStETkZoR2NpYnhBQVRqMFdtWGFwQ3ZRRnV5WDVwMmd6b1Z0by9xMi94RFlZ?=
 =?utf-8?B?RUZzcnVIQ3JlTndQajJYeVRSMlh5dks2SGdNZVIwVmFaWFUwODRpZlRrc1Vp?=
 =?utf-8?B?QmIzVENNQU9GNGxBTnVsT1lEUU5MVUExMndHTFBLNkRxZWFSTXNzTzlFSk93?=
 =?utf-8?B?Z3ZWN0s1R29mV3Y5SCtVbHFLZWlyekpJa0lvRERibXAyTDMzVDNVU1JsdUVG?=
 =?utf-8?B?NWw2dEFFSTRLQjVucHY3dGtHOFZkRUpuNUFUVFlKTnVPMmZpdzltS3ppcVRO?=
 =?utf-8?B?bExJd05QcE4wajZyeU5aNUljNUxNOEQ2bzJhc1YzbzhGd01LWGtkVGgzd3Zv?=
 =?utf-8?B?eVVwVnl6dVQ2Y1hKK3hieHhxemNrTE1iK1lBZzJJaEtQWTd0R3BDaHRmM3cy?=
 =?utf-8?B?N0FTR3VUSm1WTU5KSTk5RHAyMVZ0U0tpdmNpcFZVbkV4ZHE3VkJvemYxWDAx?=
 =?utf-8?B?Uk41c3FUaHk1QjFJZjZFR2NldDFFMFpMOVJRb0RpMTQzTm5Wck5tSFFmSnpH?=
 =?utf-8?B?OVNmZXp3SnhvUHVkWndHVjV1ZHVMRTJrS21CZnQvZ0srODloTTNseXQvd0Fl?=
 =?utf-8?B?QnNiODlsczdPWFUzbVRuWTRUQjVnN081b3FhZ3V4ODhNc3BqNjRWWXdiTzdZ?=
 =?utf-8?B?eWZjVklYaHRWSUpIa0xxUlhEQWliaXNaRk1PT3JVNjJibzErdE9vclJsR0t1?=
 =?utf-8?B?dC8yNEVxcnNZU0JLSDRDLzRRNDhIZEY5aGExUWgrVTJRR2k0QkZjTTFpUWFY?=
 =?utf-8?B?MDBJRDZvWENpQVJaSmdOUXVBRzByREx4cjZxZGlTSWROSXB6aFFaYTRJeDZx?=
 =?utf-8?B?WFk4SkdLRENXUWoyYUpIV1BRcER4TkZ3NkE5aVVOMGdZUGo0NU55OGthSTg4?=
 =?utf-8?B?VU5DaGU0WUwweXNUdUhZd096RWpWbUJHNDdtL3NOTnA5NGhra3lhR3g4WlZK?=
 =?utf-8?B?ZXpXTXJ4RXAvQWRWeGVDendtNEJ1WHJaeHZ5aW9kQk5jd1FhM3BnVDRmWHVG?=
 =?utf-8?B?akpuVVVEQWFTRGVlaWJLN3BwK1VBazhRbDQzUWtmOHNnMlV6M0pFRFJrMEVE?=
 =?utf-8?B?VVg3WXVwdEl2aE43elFDN0ZkZUh6WCtsTUh1UGl6eEZWcnZyWWh5NDRmSHFK?=
 =?utf-8?Q?h/8heu7b9ZyPWmTT+NbV3KTFlKCbqGYYfb0wZ0u?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR12MB7334.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RU5sT2NmNjVNSWV3dGZsTVg1SGJvYkxyNG5iVTlvR05FUzlVYWNaRndPWW1n?=
 =?utf-8?B?eU9ncFNFQTkyOGgyTUtST3lkY2doek02MDVDbldKemlpWENmdGFQeXRLU1BF?=
 =?utf-8?B?R1lGMWZNeWhNR21ZRXR4d0FPRExxVHRYRGRwanVCNlVEVllOVUFWZDl1djZP?=
 =?utf-8?B?blBnOE0rQzVZQmtnWE9HMWQ0VnhHWEFIdGdHeEFQOXloSVlmQjhqRVJacjh2?=
 =?utf-8?B?ZFR6OUI2WWhkekx0VmJjZWpXMEhCcEZvcWVZR1FTQlJBNVNHOHUzUkF0NVlu?=
 =?utf-8?B?OWpwZDVvOEdhTkNYSnJzL1J6aXo5Ujk3YjBxa1ZCS1JJUFhnRkY0T25ONFgx?=
 =?utf-8?B?ZCtySkUwb2dZNkVJaHgzK1hINDZpUXF4NWI4cUIvUnd2ZVlzM0FUTGZCbG5W?=
 =?utf-8?B?N1JFNWlVUG1COTQ3M2EzS1FtUlc5YlZQY1hZL1JzenM3YUc5MlZOZjVSU3FL?=
 =?utf-8?B?Rk5saFB5VjV6eUdpMjgwbVV5eFlwcmlhaW4rTk1BWFp5ajA3TzZFWFNhbElS?=
 =?utf-8?B?dEY4U0RDWUxkRE1XRVBOTUNxaDlVU3lqUG1EMFNPR1JlaVRCTkpuRm1BVE1v?=
 =?utf-8?B?Q2JWc05sZlRlbm5NaGJQc0NoM3FGQjhwcG14dmk1bFY1cUxia2dMRFFJNjJB?=
 =?utf-8?B?WFl3YnE5UTB6N29Kc0RqZkxTdVJIODg1aEduQThScDVEUHdkK1lpbWhsaVBK?=
 =?utf-8?B?VUJOZ3dxK2V4RW0vMk14L0VlNitGSHdQQm85TmtzVTdFRms0VmlpUDZrZDNy?=
 =?utf-8?B?QnVYSCtxdmVMSHYvVE5LWmVxc0V3ajJPTGhBUndkbk5FZHV1L0hvYWdIVXdU?=
 =?utf-8?B?NGJZYzVOcVo3b0JHaElkQ1Q4NzBRdWgrazZpQWJ1MHVNTlRiS3Z1cUR6YmJ3?=
 =?utf-8?B?NXpnNmxNVlNZYXllV0VSZERJbWdqbDJ4VFdHZlVtcHRzM1hLU214K3R4bU9l?=
 =?utf-8?B?VWFyaG9yc0U1MFJDOUg3a3ZISXZwK0hSV1I0a2IxL3gyS0VSMnFqQytKOFdl?=
 =?utf-8?B?Skp1UTVwVFFhc0tmUkZscmlnK2V3MmxWV0I5aGRSbTVWMVdGSGZEeWNITC9X?=
 =?utf-8?B?REFNR1Y2d1d2WllVTUZwOElQcEdadGZWMlptK2pJZDlOWTE2NTQzVmFsOHVK?=
 =?utf-8?B?elpNVkRUS0ZCWU1mWStsd2ZvTXFHMmFJWFZXRGw3MDNKNmtLbVpRSWMvMWNy?=
 =?utf-8?B?cmd4ZUdPMXZtRFNlNW5GQTYzTktsZ0dGRkdOMWRZdzFJbWoyamhSYUhqbFV0?=
 =?utf-8?B?RkhoODBIaG1YUjNzdHovd0JqejNIL0FBK1J2UENLU3JVVjM5SjMwS2lOU05l?=
 =?utf-8?B?cS9IRzhISk9BeXdHK0ZlQ3Zwa0JJRGFNdWFvSk5UZUM0YnBtS05qS0ZRRFlz?=
 =?utf-8?B?elNCLzBTYTd4Q2tWYldBQVQvaTdWMkVYdlU2b3NnbGZZSnNtWEFjTzZVNzdZ?=
 =?utf-8?B?Q0ZVaGhJdnNIRWgrQXdDalRXY2QveFhsS01aV1JQR2VwSm1CL2FmRHM0Y3Rh?=
 =?utf-8?B?VmpzSkRCbXRsdVd5WDNSN3ZwZ0pScmtmZkZEWDR3RkVDUXd6YjBvVGNkcnFT?=
 =?utf-8?B?MDBDb1d1M3R1dnh4ZFk5YitsR1d0VkRDN0lDRmNRRzM3MWZqTGpoSWEwTXpZ?=
 =?utf-8?B?akNHL2V4TXpYUElwRGM5ZU1EYlJ1SkdMZ01CNHErK1JHcmN3V295ZEIyZWRW?=
 =?utf-8?B?eEMvRDljQU9NYTJUSFRIZ0QrR2xpSXViZjA0NXZrOGFlK0UydGM0TGdUWDVJ?=
 =?utf-8?B?WVhINDZja1RLNzZ4VWw2VzVKUkZKTTFxN0JsUmwwKzZXN1VSS2V3cjdGRm1w?=
 =?utf-8?B?aVhiYVdkQ25INDRsSDI2c0V5dlEwSFlaYkgweGVadTZJeHpaTndJUnZIUWRK?=
 =?utf-8?B?ZTgvRGR5MWVlT3hGYmVJK0l2SkNwVU9yRmVvYXJBdGJpNGM1U21uUUVGRXF4?=
 =?utf-8?B?bUo1K05YaWJnTm54QVZEY2hjOCs4Ry9STDNob0hvUHBMOHpLZVo3RjRQeFlX?=
 =?utf-8?B?emwzZ01BVG5ESmtsWVlLclJ6RWxoOFVqZ1pjTnB3ZGVVbWozMWsvVEthUlBw?=
 =?utf-8?B?Z0VpMjJkZFkweUd1Y1FLak1GTXp5M1lnYWdaclBXWmRJclhxOS9xVnBCaGZz?=
 =?utf-8?Q?e81CqAtGqxgj1OEWxGH9rcVpb?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 356b546c-9234-461b-2b47-08dcf835930d
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2024 16:20:17.7700
 (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: JLsTNzJAeF6+p5KS3+6gp6RQJtLcLSeVkOSOcUkeFvrtuuLFQhmgayhngEnnkg/Akac8A3RFJRfmYLtLolDucQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6412


On 28/10/2024 15:14, Luca Fancellu wrote:
> Hi Ayan,
Hi Luca,
>
>> On 28 Oct 2024, at 12:45, Ayan Kumar Halder <ayan.kumar.halder@amd.com> wrote:
>>
>> Define enable_boot_cpu_mm() for the AArch64-V8R system.
> Could you use here "Armv8-R AArch64” instead of “AArch64-V8R"
Yes.
>
>> Like boot-time page table in MMU system, we need a boot-time MPU protection
>> region configuration in MPU system so Xen can fetch code and data from normal
>> memory.
>>
>> To do this, Xen maps the following sections of the binary as separate regions
>> (with permissions) :-
>> 1. Text (Read only at EL2, execution is permitted)
>> 2. RO data (Read only at EL2)
>> 3. RO after init data and RW data (Read/Write at EL2)
>> 4. Init Text (Read only at EL2, execution is permitted)
>> 5. Init data and BSS (Read/Write at EL2)
>>
>> Before creating a region, we check if the count exceeds the number defined in
>> MPUIR_EL2. If so, then the boot fails.
>>
>> Also we check if the region is empty or not. IOW, if the start and end address
>> are same, we skip mapping the region.
>>
>> To map a region, Xen uses the PRBAR_EL2, PRLAR_EL2 and PRSELR_EL2 registers.
>> One can refer to ARM DDI 0600B.a ID062922 G1.3  "General System Control
>> Registers", to get the definitions of these registers. Also, refer to G1.2
>> "Accessing MPU memory region registers", the following
>>
>> ```
>> The MPU provides two register interfaces to program the MPU regions:
>> - Access to any of the MPU regions via PRSELR_ELx, PRBAR<n>_ELx, and
>> PRLAR<n>_ELx.
>> ```
>>
>> We use the above mechanism to create the MPU memory regions.
>>
>> MPU specific registers are defined in
>> xen/arch/arm/include/asm/arm64/mpu/sysregs.h.
>>
>> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
>> ---
>> Changes from :-
>>
>> v1 - 1. Instead of mapping a (XEN_START_ADDRESS + 2MB) as a single MPU region,
>> we have separate MPU regions for different parts of the Xen binary. The reason
>> being different regions will nned different permissions (as mentioned in the
>> linker script).
>>
>> 2. Introduced a label (__init_data_begin) to mark the beginning of the init data
>> section.
>>
>> 3. Moved MPU specific register definitions to mpu/sysregs.h.
>>
>> 4. Fixed coding style issues.
>>
>> 5. Included page.h in mpu/head.S as page.h includes sysregs.h.
>> I haven't seen sysregs.h included directly from head.S or mmu/head.S.
>> (Outstanding comment not addressed).
>>
>> v2 - 1. Extracted "enable_mpu()" in a separate patch.
>>
>> 2. Removed alignment for limit address.
>>
>> 3. Merged some of the sections for preparing the early boot regions.
>>
>> 4. Checked for the max limit of MPU regions before creating a new region.
>>
>> 5. Checked for empty regions.
>>
>> v3 :- 1. Modified prepare_xen_region() so that we check for empty region within
>> this. Also, index of regions (to be programmed in PRSELR_EL2) should start from
>> 0.
>>
>> 2. Removed load_paddr() as the offset is 0.
>>
>> 3. Introduced fail_insufficient_regions() to handle failure caused when the
>> number of regions to be allocated is not sufficient.
>>
>> xen/arch/arm/arm64/mpu/Makefile              |   1 +
>> xen/arch/arm/arm64/mpu/head.S                | 122 +++++++++++++++++++
>> xen/arch/arm/include/asm/arm64/mpu/sysregs.h |  27 ++++
>> xen/arch/arm/include/asm/mm.h                |   2 +
>> xen/arch/arm/include/asm/mpu/arm64/mm.h      |  22 ++++
>> xen/arch/arm/include/asm/mpu/mm.h            |  20 +++
>> xen/arch/arm/xen.lds.S                       |   1 +
>> 7 files changed, 195 insertions(+)
>> create mode 100644 xen/arch/arm/arm64/mpu/head.S
>> create mode 100644 xen/arch/arm/include/asm/arm64/mpu/sysregs.h
>> create mode 100644 xen/arch/arm/include/asm/mpu/arm64/mm.h
>> create mode 100644 xen/arch/arm/include/asm/mpu/mm.h
>>
>> diff --git a/xen/arch/arm/arm64/mpu/Makefile b/xen/arch/arm/arm64/mpu/Makefile
>> index b18cec4836..a8a750a3d0 100644
>> --- a/xen/arch/arm/arm64/mpu/Makefile
>> +++ b/xen/arch/arm/arm64/mpu/Makefile
>> @@ -1 +1,2 @@
>> +obj-y += head.o
>> obj-y += mm.o
>> diff --git a/xen/arch/arm/arm64/mpu/head.S b/xen/arch/arm/arm64/mpu/head.S
>> new file mode 100644
>> index 0000000000..9377ae778c
>> --- /dev/null
>> +++ b/xen/arch/arm/arm64/mpu/head.S
>> @@ -0,0 +1,122 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +/*
>> + * Start-of-day code for an Armv8-R MPU system.
>> + */
>> +
>> +#include <asm/mm.h>
>> +#include <asm/arm64/mpu/sysregs.h>
>> +
>> +#define REGION_TEXT_PRBAR       0x38    /* SH=11 AP=10 XN=00 */
>> +#define REGION_RO_PRBAR         0x3A    /* SH=11 AP=10 XN=10 */
>> +#define REGION_DATA_PRBAR       0x32    /* SH=11 AP=00 XN=10 */
> NIT: alignment
>
>> +
>> +#define REGION_NORMAL_PRLAR     0x0f    /* NS=0 ATTR=111 EN=1 */
>> +
>> +/*
>> + * Macro to prepare and set a EL2 MPU memory region.
>> + * We will also create an according MPU memory region entry, which
>> + * is a structure of pr_t,  in table \prmap.
>> + *
>> + * Inputs:
>> + * sel:         region selector
>> + * base:        reg storing base address (should be page-aligned)
>> + * limit:       reg storing limit address
>> + * prbar:       store computed PRBAR_EL2 value
>> + * prlar:       store computed PRLAR_EL2 value
>> + * maxcount:    maximum number of EL2 regions supported
>> + * attr_prbar:  PRBAR_EL2-related memory attributes. If not specified it will be
>> + *              REGION_DATA_PRBAR
>> + * attr_prlar:  PRLAR_EL2-related memory attributes. If not specified it will be
>> + *              REGION_NORMAL_PRLAR
> NIT: shall we also align the text after the colon?
>
>> + */
>> +.macro prepare_xen_region, sel, base, limit, prbar, prlar, maxcount, attr_prbar=REGION_DATA_PRBAR, attr_prlar=REGION_NORMAL_PRLAR
>> +    /* Check if the region is empty */
>> +    cmp   \base, \limit
>> +    beq   1f
>> +
>> +    /* Check if the number of regions exceeded the count specified in MPUIR_EL2 */
>> +    cmp   \sel, \maxcount
>> +    bge   fail_insufficient_regions
>> +
>> +    /* Prepare value for PRBAR_EL2 reg and preserve it in \prbar.*/
>> +    and   \base, \base, #MPU_REGION_MASK
>> +    mov   \prbar, #\attr_prbar
>> +    orr   \prbar, \prbar, \base
>> +
>> +    /* Limit address should be inclusive */
>> +    sub   \limit, \limit, #1
>> +    and   \limit, \limit, #MPU_REGION_MASK
>> +    mov   \prlar, #\attr_prlar
>> +    orr   \prlar, \prlar, \limit
>> +
>> +    msr   PRSELR_EL2, \sel
>> +    isb
>> +    msr   PRBAR_EL2, \prbar
>> +    msr   PRLAR_EL2, \prlar
>> +    dsb   sy
>> +    isb
>> +
>> +1:
>> +.endm
>> +
>> +/*
>> + * Failure caused due to insufficient MPU regions.
>> + */
>> +FUNC_LOCAL(fail_insufficient_regions)
>> +    PRINT("- Number of MPU regions set in MPUIR_EL2 is too less -\r\n")
> MPUIR_ELx is a read only register, so I would rephrase this message in something like:
>
> “Selected MPU region is above the implemented number in MPUIR_EL2"
Ack.
>
>> +1:  wfe
>> +    b   1b
>> +END(fail_insufficient_regions)
>> +
>> +/*
>> + * Maps the various sections of Xen (described in xen.lds.S) as different MPU
>> + * regions.
>> + *
>> + * Inputs:
>> + *   lr : Address to return to.
>> + *
>> + * Clobbers x0 - x5
>> + *
>> + */
>> +FUNC(enable_boot_cpu_mm)
>> +
>> +    /* Get the number of regions specified in MPUIR_EL2 */
>> +    mrs   x5, MPUIR_EL2
>> +
>> +    /* x0: region sel */
>> +    mov   x0, xzr
>> +    /* Xen text section. */
>> +    ldr   x1, =_stext
>> +    ldr   x2, =_etext
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
> After this region is written, there is no code to increment x0, so all the subsequent will override the
> region 0.
Ah yes, you are correct. I should increment \sel in prepare_xen_region().
>
>> +
>> +    /* Xen read-only data section. */
>> +    ldr   x1, =_srodata
>> +    ldr   x2, =_erodata
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_RO_PRBAR
>> +
>> +    /* Xen read-only after init and data section. (RW data) */
>> +    ldr   x1, =__ro_after_init_start
>> +    ldr   x2, =__init_begin
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5
>> +
>> +    /* Xen code section. */
>> +    ldr   x1, =__init_begin
>> +    ldr   x2, =__init_data_begin
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
>> +
>> +    /* Xen data and BSS section. */
>> +    ldr   x1, =__init_data_begin
>> +    ldr   x2, =__bss_end
>> +    prepare_xen_region x0, x1, x2, x3, x4, x5
>> +
>> +    ret
>> +
>> +END(enable_boot_cpu_mm)
> The rest looks on to me

Thanks.

- Ayan



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:26:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:26:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827696.1242361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5p2v-0005hU-ME; Tue, 29 Oct 2024 16:26:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827696.1242361; Tue, 29 Oct 2024 16:26: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 1t5p2v-0005hN-Ii; Tue, 29 Oct 2024 16:26:17 +0000
Received: by outflank-mailman (input) for mailman id 827696;
 Tue, 29 Oct 2024 16: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=A7Nu=RZ=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t5p2u-0005hH-42
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:26:16 +0000
Received: from EUR03-DBA-obe.outbound.protection.outlook.com
 (mail-dbaeur03on20603.outbound.protection.outlook.com
 [2a01:111:f403:260d::603])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8258212c-9612-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 17:26:11 +0100 (CET)
Received: from DU7P250CA0005.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:54f::32)
 by DU0PR08MB7948.eurprd08.prod.outlook.com (2603:10a6:10:3e0::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.32; Tue, 29 Oct
 2024 16:26:01 +0000
Received: from DB5PEPF00014B96.eurprd02.prod.outlook.com
 (2603:10a6:10:54f:cafe::94) by DU7P250CA0005.outlook.office365.com
 (2603:10a6:10:54f::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.17 via Frontend
 Transport; Tue, 29 Oct 2024 16:26:01 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5PEPF00014B96.mail.protection.outlook.com (10.167.8.234) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Tue, 29 Oct 2024 16:26:00 +0000
Received: ("Tessian outbound 0fe1877cedb7:v490");
 Tue, 29 Oct 2024 16:26:00 +0000
Received: from Le5843151326c.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 7DFB2A59-0A09-4AB6-9568-C1A2FD62B657.1; 
 Tue, 29 Oct 2024 16:25:54 +0000
Received: from EUR02-AM0-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Le5843151326c.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 29 Oct 2024 16:25:54 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB9PR08MB6460.eurprd08.prod.outlook.com (2603:10a6:10:254::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.32; Tue, 29 Oct
 2024 16:25:52 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.027; Tue, 29 Oct 2024
 16: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>
X-Inumbo-ID: 8258212c-9612-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjYwZDo6NjAzIiwiaGVsbyI6IkVVUjAzLURCQS1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6IjgyNTgyMTJjLTk2MTItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjE5MTcxLjU0Nzg5MSwic2VuZGVyIjoibHVjYS5mYW5jZWxsdUBhcm0uY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=M0NopqCqdoMZ7Lsu3MFrwnCr8xxHL0/TUjTrDWRCpTL9H90NYR4KOuoWAz0CiCryWPzi7WLgYaHoSru1TMZby5V+8pIHzNpnAS3scc6ShBq38oWy+3rI6HUNpBQZHWz0DhdOJVyzOIG9i337Ar5YumjmdH9zypmEAA+p/n3x8hZ8w9N2FhX7xvtsTtx1ekrnCh/LQvprFqXgXqWLeQMeeZR38dtwCtXBZbisp2L3Ge3XQ+qn4rf0G0sZHRmFov+HKRh9PTpUVhoD3a9pBx/KX0lx7TfOyVx7RJp/4Y2+9wUa0vI3O0RYQkKzwKy+Dm8vC5uuQtorNm5PVT4uXRc4+g==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=djiuEJdKJF7GuC5T/AKPh6mAed8WLaSEiUcoRTYkkQE=;
 b=FpyrVX5x461PE3lRg1mVxvJEPPkx5gGtMVaw3BcuSZhK+HqG5MQv/OLAJq+U6PUbMe4NAmBpsXi5kI8RKm8BCY53ZQaYNZw4tKo1NsHZVZYfTPxLEOJ3lqrApskTlIenBT3kHbvi8ae9wv/l14YqgcXwW6yZuy64zM1RfBNXT0UdKHVppWYOdgEjFIdZCGaK7jr7oknrO5Y3nfMTTyU93kt2X45oW7AcYPfdFhHpMrwZGqxWs+vB1o2U+qCU/yqjlXyNj5LC62EAU4zpNV9E8wJndG+K6d/rBAAVbKomhASnEoK25CGjmLvmqWeYmhWDYlF17UB3oPH6I6A8XH4KuA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=djiuEJdKJF7GuC5T/AKPh6mAed8WLaSEiUcoRTYkkQE=;
 b=R0jg0OacQeCgsu3Vqdg9++yEge4n3rz79tLLlJ7uIk2JxqP5rLS5w9Cunk8mUC/5NXRL/sk3frl16OQUKIx6r9Z9EZDQI7jkp6QgmqdtXTyppTUuWYLIFcv9dGVzqXC9+kw57l6tghRCgFbehU930MpX+58oxmedMfedilDgXdA=
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=arm.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: d20d699ab3bee7f2
X-TessianGatewayMetadata: Td+9RiD6RfnQm/jdfQ2EuW/4Z/I+r2+RWiNQthj7CsROgYd6qSjyM6X9+QsPSwj4PujCxrbq82H9+n3iAlagFn5r0aVBhNZd6PWS6ozw5nw71lJRrw1EBq/EzlffsmYP9Fs2oNyLKlqaujvPWAiN+WrhW+VccXCEc6J5Jr+64D0=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=yKU0XKzcGMMCMwIr5Kf4o5W74Yd2YiwdJeijNitSBFY0PuhMm5aTLFpJFdlLVG+0cKxo6HPpOXpas0z+TyPs8y6CvIlAZhQCmT0hy3YzZxNhEUmOd5gz6cM45m9wJK/0rlhaEk29jZ985fuD6qLOw46ihhDqeonhFNm9ZoUiuebd4f6TXjZnzc9FFTY7ihaaqueV4GtTVhswUFErMNQbWeQB6wLYmEDNkvDp9tsxkr0FjgKD/IyJGBf6oR21o+EyDAExBYOk6Ezol2G47ONp9WrFQDzvkB9cM81x7OfwheOU9+y8F4RACL20hhiDglNTqMCKLeKx9cqaiWug95qotg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=djiuEJdKJF7GuC5T/AKPh6mAed8WLaSEiUcoRTYkkQE=;
 b=DQ6QFwgVbslqqC+ChuB7vNOfepiTTzr/Tx6k6h0AISdF7fHYaB8yJp63OFClGtAttAJ++D0wHrA6q4pargOUEccTk1vpXHhausWWISEZdtiWwoHTkjg4J2jE2hcG18pnoD3DSsm8z+WGYmmOR1w5OYnMT/WWcyGZk40YSXrlhwZdlsW2WqrYYwy/bTD8hBJZ/RP87WtFWDEwQgzl34tKpbM0BqHwayTBGorXfEdzj1kXzu1IedGpByLWfcPqm48XxYm9g9C6sVsGlb7cryJbNut1PiaxNVvmEPSuwhEPGd9fspfX2CDLOLJ28yAaurpb+ju/YOqCDhqPMgy0PInmvA==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=djiuEJdKJF7GuC5T/AKPh6mAed8WLaSEiUcoRTYkkQE=;
 b=R0jg0OacQeCgsu3Vqdg9++yEge4n3rz79tLLlJ7uIk2JxqP5rLS5w9Cunk8mUC/5NXRL/sk3frl16OQUKIx6r9Z9EZDQI7jkp6QgmqdtXTyppTUuWYLIFcv9dGVzqXC9+kw57l6tghRCgFbehU930MpX+58oxmedMfedilDgXdA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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 v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Topic: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Index: AQHbKTd3r9ds8GMpC0a1KoGz65CsELKd6/KA
Date: Tue, 29 Oct 2024 16:25:51 +0000
Message-ID: <77A311B2-FD1E-4950-925C-65AA5D4C4183@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
In-Reply-To: <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.200.121)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB9PR08MB6460:EE_|DB5PEPF00014B96:EE_|DU0PR08MB7948:EE_
X-MS-Office365-Filtering-Correlation-Id: 4b1fbc9a-7aec-4a64-cb29-08dcf8366044
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|376014|366016|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?a2tSUWxoT0tYRmdqOWFFYlpGZ29pNjgrQnFnUitDNHhRV2pzSE9ESGp6eWNy?=
 =?utf-8?B?aDJNc3RSWS9mdlA5SzNoS3lqa3d6cGlGZklTNjQyQUl2MzFveFNQSXMvdmk4?=
 =?utf-8?B?VVdObkJRTE5rcThQM3VyZjZlUVRMWkZCb3RNSEF6TzhqU2NRTG9wMnhaVTdP?=
 =?utf-8?B?RG8vVENDQUtVSXZrN3JQNlg5S0V4K0Z2RWxVbDE4bUVlaFNHR0ttTGp3WW9p?=
 =?utf-8?B?VW56MTBKRENoSkNHRlBGeFhWQklCS3ZvdXJ5aHMwcm13YzkxSWpVSEpxU2Zi?=
 =?utf-8?B?b0F5YkxxZzNLckdYYXpHcW1US1l5dVJpaFhOYmNoK2pvUi9Ra0EvOHlzUy9q?=
 =?utf-8?B?cVAxK2RDeHNaYjRtYUZncHZraWxlT1dzVkFDejM4bi9mdmVTV0lyRHNTZytQ?=
 =?utf-8?B?a0pqd0trMTVRUFNSVEh2NUhTRzh6cDhUdkw0YTBaMVdGNGtFVFpmQ1NKZEJp?=
 =?utf-8?B?ak5pb2djd1pDcmJ4SFJvd29jK3lmdjBZQXFyejlIM3VnWkZYeGNOazFHb2NI?=
 =?utf-8?B?MVFOcXZlankzV2Jsa2h2WjRoRHNFOU1haG4zVjVNOGx4YS9kQmQwNkVwemF2?=
 =?utf-8?B?UE1QQkVpTk5pWDZvcGtaY2dsbW9nQU5BbHd1NTlvZDQ1QVg5ZHJxbVphc2ln?=
 =?utf-8?B?SFUxdVFiemN5K3MzN1N5bmlIbE9INEVnYzZ3OXpndGZYdFhuNVgxeHFGNHR2?=
 =?utf-8?B?Y2pheWVWUk5maU5WMFpqU2ovNjM1ZDk3VkZvK1k1THh2NFhScUVQbmg0T0I3?=
 =?utf-8?B?cEpWL3JVcGZhaTY3b3JJcmRHWml1SnhVUmd6QmtJUzFIa2JRVUlZa2s2a2tw?=
 =?utf-8?B?TDRFbzBvRGluMnhHNUgwaXBsSG94MFMxQlA2QXdkTUFyY1lMdHljc0VLN3pP?=
 =?utf-8?B?WHk1ZW5Vd1FQNWtrWTRaTjU3U0U1YmtjZnRhQU1uSDZmcnhMSTVwc2FnRldB?=
 =?utf-8?B?Ukx5NG5pWVVVUWZpb2FSdUhTT1J3VkxJOEhUejMvejBDME1aTlZycXJyaTZN?=
 =?utf-8?B?bUdHckxBYmx3cnRtVnFUUmp5ZFdscjJWZVlkWEQ4UUlVQWJKMmcyZHFPcXFv?=
 =?utf-8?B?WTE3dEM4OHNjeXh3R2JseXkxSlY3ZjZoYkJ1UlFDR0tHTU45NnQzcGluYUMr?=
 =?utf-8?B?ZVNkcmRYS3dpTTFYNTJhSzdzMU1INzBNRHlWVDBJeEEwakZ3cHdjUlBRMi8v?=
 =?utf-8?B?aHVhSDV0d2NJNE03Yk9VMktrbzZObklYWW13aXVzVm42L0l3cWtsWWcxZUl2?=
 =?utf-8?B?UDBBL3FUakUxNlo5Nk9veHV1NVpjdTBZUE5UODROem03a3Btelh5c2oyc3R5?=
 =?utf-8?B?MS9IRW9jQ3U0UFB0bUpzcTk4akxNaXlueWZxZXZsTjFJYzE1UDlNWFFpZld2?=
 =?utf-8?B?ZE9uQ0Z4czE3N3d6UERQZUMrVlM0cHppNlBHSGxsbTFsdVIzMmE2QkpUZ2lG?=
 =?utf-8?B?dFE4MEFXWEFaUVc1dkJYbDViMHUyZitoeXBka0VOM0g5ckIyNjBBWUF0MVJM?=
 =?utf-8?B?TTh1QlM2RHM3bTJweGkvZ3AxRlgvUElUVlhtT2JNRmtGamJBSzNoc3JIQXRR?=
 =?utf-8?B?OWdNUUdmbWVOMGVTMTU4RXB2ODg0VlZoS2tpNGlQYU1HVURhMnlBbE9CU2xy?=
 =?utf-8?B?SjZocE9DQVdQUlZ0N0NBYjl0V3BYNEpEcXpHOEFmSnpka0NBSi83cXU1Tm5U?=
 =?utf-8?B?aTk3MW40UTd1dXdIYkwxSWZuZS9zdWRtWVJhaGVYdXRacmQ5OURUTmNyOEtG?=
 =?utf-8?B?UU1EaEpnd2lYNElFRS85S1FSUjlrZXBscFBmT1pIdzMvNEw5NGJWTkUwL3Q3?=
 =?utf-8?Q?R69+UEhx94fJS356PMUN3IUmu0Rn3fhBcaVZ0=3D?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <BD6272AF4E115542A68D7CFEEB8B771F@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6460
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B96.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	eceb2b9b-d924-48ad-f349-08dcf8365b1c
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|35042699022|1800799024|376014|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?dWRBZ08wanpQeUJvNjJzVDc0MTQ5WktLVXA4UTc4bnNFMy9DTlhqMjRrZkkz?=
 =?utf-8?B?Vitva3loVHlZODBrMy93MEgvb1ZJSmpZR21rTysrQ0prNUVtY3lXaDNtUVVL?=
 =?utf-8?B?RWtHajJ2MmkzQkozUElPRTJCWVgzYVhVUkZhNkhhN0dUWWl0VkNHRUd2TWd6?=
 =?utf-8?B?MTZpZ1FCek9PK0I2WldUZXBubFhIbjJrNEJyZGV3MlF3UHlhZ0tsT0U0V0U4?=
 =?utf-8?B?WEdnQndCWjZXVlZ0ZUtyeDBSakhtL3huR1hRcElDZVU0ZkZ2NVpmSC9hWWo1?=
 =?utf-8?B?YWNwTzIxbHoxcXlOK1poWTVBQ3VGTlpxY0s1MmR3MU0xL0lTRnJZT3dsU3B0?=
 =?utf-8?B?QnhlZnVQU01WQWxxL1duWStOMDU3bTV4aHF0WUR0eFZFT1Bobi9QVjdSekY0?=
 =?utf-8?B?NWlGOWl5Yi9hZWczRWVHZGV1Q1hDTDdKOHBhT25odHhsK0svQTMrSzdvRFpD?=
 =?utf-8?B?OEhSdDdHUkJwRTZsdkpmSGxMcG5FQUM3TE41MWtUMUpqVzRROFpwTEpyeWZL?=
 =?utf-8?B?L2RFYUpDalMyRmYxRm5WZ0V0Mi9OWU9yQThTS1RYbVpiM3ZaUzdTRS9zVDZt?=
 =?utf-8?B?UnA3Rkw3WW5NYlJrRFk1dlc3RVRzVUQ1ZlV0SU1FTXNmZTNVZ1NQOFUxbm5D?=
 =?utf-8?B?ZzJMUGZDczJOR3ppT3pXZ3pndUZLTmFiR1RrK2l0UWRYS1N3d1pIOSt3NDU5?=
 =?utf-8?B?RTRsMWRmeWhadVB6d3ZoenV5R3JLclBteWhYUE9ad1lFQllZTUZDQmdYdHZv?=
 =?utf-8?B?Zy9sbGU2TklwN1M5L2Q2MHFvalkzRjJJRUltc1dvODhHaG9MdURIRzViaGE0?=
 =?utf-8?B?U0RIVlY4TVhucU4yN3JFclUvdC9tNDRzb0ZZaDNpZDdDb3hqaDY4TEszQ2po?=
 =?utf-8?B?WlRUSDNIMDI0eU5hZEhPK0s4bTNvV2RSLysvSStjQlRvWmcwMEF1L1JwSEt4?=
 =?utf-8?B?WFA4TFMyL2NvZlZKTE1CeGFhNTAramtYSzBURHBPSUd5WE5NRGN1SFRPM21Q?=
 =?utf-8?B?OWFRRms1QjJlK0JCSEtZTzdVQktUT3lwYmVqblpSRXgramZIZDFZRXpwQ2Vs?=
 =?utf-8?B?Szd4MjA0ck5VYVNRTUF5dFhPZWRVTGVnNnVDaXU3TGVsU3FycW9Zc3JFd00v?=
 =?utf-8?B?OHR1bEZHSmw0Q2xJSTYvdVdtTkIvTzluTTNTSVJWTDRqMjNicUVQZ3lGOUFT?=
 =?utf-8?B?ZmFTckNOcjR1QUtjZC9EcVZCQ2o5RVZKaE15cU9CWTdhclUwY0Z6T25QbXQ4?=
 =?utf-8?B?YXpkMG4xdWdmUURoeWR4ZkREUDBGUS9iYjNyaEpCeGJTZzBFN3p3dlovRUgx?=
 =?utf-8?B?Qk52dTdoeUFIditPRUU2clJWc1k4RmRhK2VXZWtvSkhSbmFFcXorbEFCb1Mv?=
 =?utf-8?B?bFU2Z0x6KzFNcmNMQ0dhdXQ1bUVER1IyYXErM080Y0ptMmVtRTNaTDJIRi9z?=
 =?utf-8?B?L2tCV000c2lNVUdBeTBqalYzNmwwWEh0TllFMlpGbTFoRy9tdU9QU3Fxb3Er?=
 =?utf-8?B?R2dhUzkvSEd1dWdTbDMzMDRWQXZQaDdIYUIyN1ZMTVFwektpblF6V1NScmxy?=
 =?utf-8?B?bmJZRDNwT0x1K3BXcVNEZlk0YlBKR0dROXZ4RWJJay80QkVtb3hlWEEyaEpO?=
 =?utf-8?B?Z3Y1RTNoVzBYWmhZSXlvbEQ5enY1SDV5Ym1OVVpZL2QvUnJHdnZsMlNrR011?=
 =?utf-8?B?ZFV2UjF2bitlZzloRjR6cjVuUDFwaVYyUnpSUG0yVUVLaVFyVm54N2hCSysz?=
 =?utf-8?B?d2d2RmlDNzdYMEFqZFhvWHQ0MVVSNHMwUGx5dWx1NWhFR0hoak4zWXl1MXBD?=
 =?utf-8?B?MERHYnBiWHZpaG9ORFRWZWFzWFV1NUN4L1VIb3cyZmxSUmtnL21LdHg0UjJC?=
 =?utf-8?B?L2crdnBSam1YU3FNME0rZXhkZGFYQy95TUxBQWN2dTZpR1E9PQ==?=
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:(13230040)(35042699022)(1800799024)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Oct 2024 16:26:00.6655
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 4b1fbc9a-7aec-4a64-cb29-08dcf8366044
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:
	DB5PEPF00014B96.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB7948

SGkgQXlhbiwNCg0KSSBmb3Jnb3QgYW5vdGhlciB0aGluZzoNCg0KDQo+IGRpZmYgLS1naXQgYS94
ZW4vYXJjaC9hcm0vYXJtNjQvbXB1L2hlYWQuUyBiL3hlbi9hcmNoL2FybS9hcm02NC9tcHUvaGVh
ZC5TDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjkzNzdhZTc3
OGMNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi94ZW4vYXJjaC9hcm0vYXJtNjQvbXB1L2hlYWQu
Uw0KPiBAQCAtMCwwICsxLDEyMiBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ
TC0yLjAtb25seSAqLw0KPiArLyoNCj4gKyAqIFN0YXJ0LW9mLWRheSBjb2RlIGZvciBhbiBBcm12
OC1SIE1QVSBzeXN0ZW0uDQo+ICsgKi8NCj4gKw0KPiArI2luY2x1ZGUgPGFzbS9tbS5oPg0KICAg
ICBe4oCUIFRoaXMgZmVlbHMgc3VzcGljaW91cywgdGhpcyBoZWFkZXIgY2Fubm90IGJlIGluY2x1
ZGVkIGJ5IGFuIGFzc2VtYmx5IGZpbGU=


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:41:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:41:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827708.1242386 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5pH4-0001Qy-3j; Tue, 29 Oct 2024 16:40:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827708.1242386; Tue, 29 Oct 2024 16:40: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 1t5pH4-0001Qr-15; Tue, 29 Oct 2024 16:40:54 +0000
Received: by outflank-mailman (input) for mailman id 827708;
 Tue, 29 Oct 2024 16:40: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=/WX/=RZ=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t5pH3-0001Ql-04
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:40:53 +0000
Received: from mail-oo1-xc30.google.com (mail-oo1-xc30.google.com
 [2607:f8b0:4864:20::c30])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8d9c57fb-9614-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 17:40:49 +0100 (CET)
Received: by mail-oo1-xc30.google.com with SMTP id
 006d021491bc7-5eb67d926c4so12143eaf.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 09:40:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d9c57fb-9614-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjI2MDc6ZjhiMDo0ODY0OjIwOjpjMzAiLCJoZWxvIjoibWFpbC1vbzEteGMzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjhkOWM1N2ZiLTk2MTQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjIwMDQ5LjkyMTY2Nywic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730220048; x=1730824848; 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=lzPKExmdt+RrplYoyCu5aXdJlYTWZ0xvypOBeoE36/c=;
        b=e+CyMtsYtCTufHXjAgrHi8nHiBKY3iwVN0WGVsGwfFN+Wm/XKO847HexQ/RzPZOu2U
         rHDRC1ZdlY9tw55KZI4brkmusUo5JyDsxTn6vVhwneNxE/HuBv8aAG9ZFZGRnHlu06jZ
         agKN5/MyqBxh+IyXS9Sz28IObCGAByoNlrSDs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730220048; x=1730824848;
        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=lzPKExmdt+RrplYoyCu5aXdJlYTWZ0xvypOBeoE36/c=;
        b=YX9f4fThEOCGUrhnUbImf3uMaqE9XfS4OcIkXnz4HEm227EGF5CU9JhtbKOPHTd1Q1
         mQUnx+v92gEv+b96/AVcINF0GYnzGAT2E4GJ24uk4Dp0leWQcAwSzoZ4/YrsjqkbwoBj
         7cz92ia043hCzVq8OGeOqXjBB7iTYnCWuZ3N8SteagYb6So0k+PBQ4LtLDvsPoV359kh
         K/Uv7+gTj0/muPd+1qjN/n5vLsbpf+rnjSUvMTfpi8/FkySGpEEjDWtMCfXicG84zGQq
         LiDB3yUQ/CcoLn3e+9OrMXfVsJPhuYX8uTNhPlHY+ekpIxqbUsXx1+E6MAkBCCOJIAvh
         VMjw==
X-Forwarded-Encrypted: i=1; AJvYcCVF/6RG6K1bITdc+KsCktflUYa3wdv2RM+0x48dCzzHzMkhbilnPqE/54Ihpt2kKVbzLUhXknDs3QI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwQY0rWm/7jQqZ6+YxIG60FzkCdW9vv1Jn/lIcNwS2E8YLH4An6
	13EiZMrDkb0509qQYD68vd0loZCdzagxlPghJT3d1KAJZYPWpdEM4Mm7n5//eZYBbx1ejq9aFXM
	08AfbaukYTBIaLKsvnrWGx1pMpjf4RoafkjOs0A==
X-Google-Smtp-Source: AGHT+IEdc2tRJY7iEA4I2C5t/ixmdtGwMXZueJZaDyQBwPIsGdwuUQVfkq9zgSFKTsUwZleX0euPPbwLBqDr00AE8es=
X-Received: by 2002:a05:6820:220b:b0:5e1:c6ae:d93 with SMTP id
 006d021491bc7-5ec54da4da0mr1729574eaf.2.1730220048516; Tue, 29 Oct 2024
 09:40:48 -0700 (PDT)
MIME-Version: 1.0
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
 <20241029102942.162912-6-frediano.ziglio@cloud.com> <ZyD29aZqLRydMUCp@macbook>
 <864df257-dc7b-4028-932e-86f0d69debdb@citrix.com>
In-Reply-To: <864df257-dc7b-4028-932e-86f0d69debdb@citrix.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Tue, 29 Oct 2024 16:40:37 +0000
Message-ID: <CACHz=ZjHjBMt=k-tX68XqMjJXs9+1LFFXDEHHJzRqbONq6N=WA@mail.gmail.com>
Subject: Re: [PATCH v7 5/5] x86/boot: Clarify comment
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Oct 29, 2024 at 3:07=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> On 29/10/2024 2:53 pm, Roger Pau Monn=C3=A9 wrote:
> > On Tue, Oct 29, 2024 at 10:29:42AM +0000, Frediano Ziglio wrote:
> >> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> >> ---
> >>  xen/arch/x86/boot/reloc.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> >> index e50e161b27..e725cfb6eb 100644
> >> --- a/xen/arch/x86/boot/reloc.c
> >> +++ b/xen/arch/x86/boot/reloc.c
> >> @@ -65,7 +65,7 @@ typedef struct memctx {
> >>      /*
> >>       * Simple bump allocator.
> >>       *
> >> -     * It starts from the base of the trampoline and allocates downwa=
rds.
> >> +     * It starts on top of space reserved for the trampoline and allo=
cates downwards.
> > I'm afraid this line is over 80 characters long, will need to be
> > adjusted.  Maybe:
> >
> >     * Starts at top of the relocated trampoline space and allocates dow=
nwards.
>
> This patch miss misses 2 of the 3 incorrect statements about how the
> trampoline works, and Alejandro had some better suggestions in the
> thread on the matter.
>
> ~Andrew

Hi,
  changed to "Starts at the end of the relocated trampoline space and
allocates backwards".

See https://gitlab.com/xen-project/people/fziglio/xen/-/commit/21be0b9d2813=
db9c578e8a6ace76eee2445908f5.

Frediano


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:43:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:43:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827714.1242397 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5pJc-0002Mk-H4; Tue, 29 Oct 2024 16:43:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827714.1242397; Tue, 29 Oct 2024 16: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 1t5pJc-0002Md-D0; Tue, 29 Oct 2024 16:43:32 +0000
Received: by outflank-mailman (input) for mailman id 827714;
 Tue, 29 Oct 2024 16:43: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5pJb-0002MX-8w
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:43: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 ec1b70a3-9614-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 17:43:27 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-43155abaf0bso56691685e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 09:43:27 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4318b58b7e8sm183662855e9.48.2024.10.29.09.43.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 09:43:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec1b70a3-9614-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmIiLCJoZWxvIjoibWFpbC13bTEteDMyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImVjMWI3MGEzLTk2MTQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjIwMjA3LjkzMTQzNywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730220207; x=1730825007; 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=IqQ+25OY9/TyrBwUND+/pcOzRDIFIWosYuE0ZUb2v+M=;
        b=bCfLNDEVQPeS/9gV80AZVjIr9si4QijV/rbVWCm17O/1cYwpDQMGcYlE+ZNFLL87h0
         nGYWRSptAOhAqkbr+fT0Ied6svZmOWqS9XxtoPn/rFLcs/G1c4RtIviLko1AUw0qWE/9
         cG6zVgj7Cqjil5urasJQU3lKbf9XKFA02fzFxxOFmtyoFZ4/xbjyn0wU8szI641AfC0T
         tCGvkqW3iEJlVXtPY969nA7gqJycKQo2CuCaH5Eo0X3Dda94kTKEKl0ViHOL9jkkIwZq
         U2Xy/SiHNxEWgHYV3f4kW5yefKY4oCSOwo2HakOHZ114BdT19rx5tz6u2uICllqScF56
         wRuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730220207; x=1730825007;
        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=IqQ+25OY9/TyrBwUND+/pcOzRDIFIWosYuE0ZUb2v+M=;
        b=UoGOSZmxEpeOkNg84F8ZyXVYd9Ir8cpiX8mwE4tKVqOCbT+6S363KbLam3UdWSkEdL
         RoNxQIB0GQUOvKUCvD1wOYp6WA2Zi8VCdHhfvIZBVONQjYf1ffmo7hDmCyZnSKaMmX6p
         3qMnLC2Ed8W6VwEk1RQ+iO8NHGGzPjk2bceE650Pb8tBYVG0/yQKh0s6buGXM+q4CP2a
         npAlWF/TfTLtxxrS3kGu4mMe5I/dBhMhEap2+XVeiplb8v6Yb2/ihnbLpMCfJVX6xowa
         yQfqfVCQfACGXLw16skw6Nrt5f7C1NZAgHh42m9XhBcBSiiLTzo2NupSoWRmkwtxDlJR
         0CNw==
X-Forwarded-Encrypted: i=1; AJvYcCWcDqOoNuYC+8CPJ4Nu0QeV2sHvOF9C+CxxctSUciGHpqXBS1YpWbv+/2s5xXjSMvmZEXmHREVNT2Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzLEODHIeMOnRI1N2i41FV1OuYh5t7m7GHQXKxWin2PZgs1fFC3
	MR8GD2oYk3fgdti/QM120CfFz6n35BhGZJMicnGqB4gs8VUykEO6yDDlw0AwgQ==
X-Google-Smtp-Source: AGHT+IFpLuV1MFCEVcsZLxPDyHqeSxgcq5PDJrvQ20ZwQEjeqq+PHcO72Q5x5INC5eapkCgNcaRmnw==
X-Received: by 2002:a05:600c:310f:b0:431:57e5:b251 with SMTP id 5b1f17b1804b1-4319ad07035mr100312935e9.28.1730220205687;
        Tue, 29 Oct 2024 09:43:25 -0700 (PDT)
Message-ID: <53034f16-682e-4081-ab7e-81338c700f85@suse.com>
Date: Tue, 29 Oct 2024 17:43:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241029110351.40531-1-roger.pau@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: <20241029110351.40531-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 12:03, Roger Pau Monne wrote:
> When using AMD-Vi interrupt remapping the vector field in the IO-APIC RTE is
> repurposed to contain part of the offset into the remapping table.  Previous to
> 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> table would match the vector.  Such logic was mandatory for end of interrupt to
> work, since the vector field (even when not containing a vector) is used by the
> IO-APIC to find for which pin the EOI must be performed.
> 
> Introduce a table to store the EOI handlers when using interrupt remapping, so
> that the IO-APIC driver can translate pins into EOI handlers without having to
> read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> unconditionally when interrupt remapping is enabled, even if strictly it would
> only be required for AMD-Vi.

In here I think you mean "handle" when you use "handler"? Plus with what you said
earlier about vector vs EOI handle, and with the code using "vector" all over the
place, their (non-)relationship could also do with clarifying (perhaps better in
a code comment in __io_apic_eoi()).

> @@ -273,6 +293,13 @@ void __ioapic_write_entry(
>      {
>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> +        /*
> +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
> +         * Entry will be updated once the array is allocated and there's a
> +         * write against the pin.
> +         */
> +        if ( io_apic_pin_eoi )
> +            io_apic_pin_eoi[apic][pin] = e.vector;

The comment here looks a little misleading to me. clear_IO_APIC_pin() calls
here to, in particular, set the mask bit. With the mask bit the vector isn't
meaningful anyway (and indeed clear_IO_APIC_pin() sets it to zero, at which
point recording IRQ_VECTOR_UNASSIGNED might be better than the bogus vector
0x00).

> @@ -298,9 +325,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>      /* Prefer the use of the EOI register if available */
>      if ( ioapic_has_eoi_reg(apic) )
>      {
> +        if ( io_apic_pin_eoi )
> +            vector = io_apic_pin_eoi[apic][pin];
> +
>          /* If vector is unknown, read it from the IO-APIC */
>          if ( vector == IRQ_VECTOR_UNASSIGNED )
> +        {
>              vector = __ioapic_read_entry(apic, pin, true).vector;

Related to my comment higher up regarding vector vs EOI handle: Here we're
doing a raw read, i.e. we don't really fetch the vector but the EOI handle
in the AMD case. Why is it that this isn't sufficient for directed EOI to
work (perhaps with the conditional adjusted)?

Then again - are we ever taking this path? Certainly not when coming from
clear_IO_APIC_pin(), hence ...

> +            if ( io_apic_pin_eoi )

... I'm unconvinced this conditional is needed.

> +                /* Update cached value so further EOI don't need to fetch it. */
> +                io_apic_pin_eoi[apic][pin] = vector;
> +        }
>  
>          *(IO_APIC_BASE(apic)+16) = vector;
>      }
> @@ -1022,8 +1057,27 @@ static void __init setup_IO_APIC_irqs(void)
>  
>      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
>  
> +    if ( iommu_intremap )
> +    {
> +        io_apic_pin_eoi = xmalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);

Nit: Strictly speaking this and ...

> +        BUG_ON(!io_apic_pin_eoi);
> +    }
> +
>      for (apic = 0; apic < nr_ioapics; apic++) {
> -        for (pin = 0; pin < nr_ioapic_entries[apic]; pin++) {
> +        const unsigned int nr_entries = nr_ioapic_entries[apic];
> +
> +        if ( iommu_intremap )
> +        {
> +            io_apic_pin_eoi[apic] = xmalloc_array(typeof(**io_apic_pin_eoi),
> +                                                  nr_entries);

... and this should be xvmalloc_array() in new code.

Also this 2nd conditional may better use io_apic_pin_eoi, such that the two
conditionals don't need keeping in sync. Note also how Andrew previously
pointed out that both conditionals aren't Misra-compliant right now.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:44:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:44:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827719.1242407 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5pKn-0002tW-RU; Tue, 29 Oct 2024 16:44:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827719.1242407; Tue, 29 Oct 2024 16: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 1t5pKn-0002tP-Ng; Tue, 29 Oct 2024 16:44:45 +0000
Received: by outflank-mailman (input) for mailman id 827719;
 Tue, 29 Oct 2024 16:44: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5pKm-0002tH-4Z
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:44:44 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1720889c-9615-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 17:44:40 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso853441766b.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 09:44:39 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f0683edsm492381466b.93.2024.10.29.09.44.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 09:44:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1720889c-9615-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjE3MjA4ODljLTk2MTUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjIwMjgwLjAwMzIyOSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730220279; x=1730825079; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=3UKpQ6H7KJCvfzxstBzvZFdAe35kNgbTXIXbsTG5uXc=;
        b=TGWfJJP3nhxHaYZ8RdI8Ex5el8PKqV7xGcB73EKKOZpbaJoso3XBWlt6SA05qmQK6C
         kDvfrZxLTsrA3kAHhyU8Uxxxm8fND7avkAK7j8s+wjOkgoeIKD/Pny780/5Cm0rS6UE6
         vKgertw/81oJwo5NE3G2bzl1ZnaHeQ+6RdmlQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730220279; x=1730825079;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=3UKpQ6H7KJCvfzxstBzvZFdAe35kNgbTXIXbsTG5uXc=;
        b=t8MyYWW+SiJe/bs6Lc+U1jEdnOuQGkBdskIqbxKRBUQ9AX7ScF7ERY+TM5HsDjJVXn
         oGoBRbcLzO0D2myIDIdjHTWqefM7gVbLD0O5TKQCoCEnAJ6RBiAiSocJYnLFQ6OH5ER9
         ZtmtmBsG88DX79lBxpOngN69Ps6g2N7GaoxnnYb75f3E2J3KJjHhsEZzn6iYguNkB6he
         hdL/6Dz+4gHaGUNcuCE2aldLUT9km0P4QgIUFsHBlFt0yjIKtrtgvcr/0aQXIcLWix0I
         bDh4t+b9zEijADRUYGHQaYA30rTep9bWT/6qXI0wmyyiz7QxTv2ixvGlgJC1jdWi5MTf
         sK4Q==
X-Forwarded-Encrypted: i=1; AJvYcCWqMzjkGmGx9VRU7dpJMMvJNSBISdmgK2L8LGsIRoxvY8Rbnfol/1g2wyZ9vGH4hI0Ou2NhqGuJ4+4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwOS9Mi25wq6X3Or8L0pIxuUQWgqMy8RRN3Kfd0GdX6HSCdAQKK
	JNl8tBCQMfGtnWz14cWAkq9CjjOloH6yJMZFFPRX8vcjIBSodfV/x3lrT4eLgN7olbEgzXt0ltS
	M
X-Google-Smtp-Source: AGHT+IFZ1xDtB3k5CD6seXWZx1YJkBxJq60i5bzBD4gZigqdxAZp7jISCgnQToSXsB873F4tKwiO+w==
X-Received: by 2002:a17:907:2d90:b0:a9a:2a55:d130 with SMTP id a640c23a62f3a-a9de61dec24mr1249172166b.55.1730220279298;
        Tue, 29 Oct 2024 09:44:39 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 16:44:37 +0000
Message-Id: <D58FWEECU4HH.2UEMEF0HVJ2ND@cloud.com>
Cc: =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 <xen-devel@lists.xenproject.org>, "Jan Beulich" <jbeulich@suse.com>
Subject: Re: [PATCH v7 5/5] x86/boot: Clarify comment
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Frediano Ziglio" <frediano.ziglio@cloud.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>
X-Mailer: aerc 0.18.2
References: <20241029102942.162912-1-frediano.ziglio@cloud.com>
 <20241029102942.162912-6-frediano.ziglio@cloud.com>
 <ZyD29aZqLRydMUCp@macbook>
 <864df257-dc7b-4028-932e-86f0d69debdb@citrix.com>
 <CACHz=ZjHjBMt=k-tX68XqMjJXs9+1LFFXDEHHJzRqbONq6N=WA@mail.gmail.com>
In-Reply-To: <CACHz=ZjHjBMt=k-tX68XqMjJXs9+1LFFXDEHHJzRqbONq6N=WA@mail.gmail.com>

On Tue Oct 29, 2024 at 4:40 PM GMT, Frediano Ziglio wrote:
> On Tue, Oct 29, 2024 at 3:07=E2=80=AFPM Andrew Cooper <andrew.cooper3@cit=
rix.com> wrote:
> >
> > On 29/10/2024 2:53 pm, Roger Pau Monn=C3=A9 wrote:
> > > On Tue, Oct 29, 2024 at 10:29:42AM +0000, Frediano Ziglio wrote:
> > >> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
> > >> ---
> > >>  xen/arch/x86/boot/reloc.c | 2 +-
> > >>  1 file changed, 1 insertion(+), 1 deletion(-)
> > >>
> > >> diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
> > >> index e50e161b27..e725cfb6eb 100644
> > >> --- a/xen/arch/x86/boot/reloc.c
> > >> +++ b/xen/arch/x86/boot/reloc.c
> > >> @@ -65,7 +65,7 @@ typedef struct memctx {
> > >>      /*
> > >>       * Simple bump allocator.
> > >>       *
> > >> -     * It starts from the base of the trampoline and allocates down=
wards.
> > >> +     * It starts on top of space reserved for the trampoline and al=
locates downwards.
> > > I'm afraid this line is over 80 characters long, will need to be
> > > adjusted.  Maybe:
> > >
> > >     * Starts at top of the relocated trampoline space and allocates d=
ownwards.
> >
> > This patch miss misses 2 of the 3 incorrect statements about how the
> > trampoline works, and Alejandro had some better suggestions in the
> > thread on the matter.
> >
> > ~Andrew
>
> Hi,
>   changed to "Starts at the end of the relocated trampoline space and
> allocates backwards".
>
> See https://gitlab.com/xen-project/people/fziglio/xen/-/commit/21be0b9d28=
13db9c578e8a6ace76eee2445908f5.
>
> Frediano

with that:

  Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:47:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:47:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827726.1242416 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5pNo-0003gm-8V; Tue, 29 Oct 2024 16:47:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827726.1242416; Tue, 29 Oct 2024 16:47: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 1t5pNo-0003gf-5b; Tue, 29 Oct 2024 16:47:52 +0000
Received: by outflank-mailman (input) for mailman id 827726;
 Tue, 29 Oct 2024 16:47: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=H/ws=RZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t5pNm-0003fi-67
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:47:50 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 864b5b44-9615-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 17:47:46 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a9a0ec0a94fso788637466b.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 09:47:46 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1e0b2356sm488340466b.30.2024.10.29.09.47.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 09:47:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 864b5b44-9615-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmYiLCJoZWxvIjoibWFpbC1lajEteDYyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijg2NGI1YjQ0LTk2MTUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjIwNDY2LjU3MjcyNSwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730220466; x=1730825266; 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=2y4qvQ5WrMUCS2XvWiD5MyBVG2WMwuZ3/t2R/u7r1Qk=;
        b=Dp6FFnG1osaNCEMKJJDpAAFavsVzEunRqSWgVcAO65MICxtWud1Fiaim9mkXU4KyqH
         ZOgH4DOOZ3RHjY/iT8lVmH6fmkYIsYx9gQR8w06EhjTQnAHvHHuVxHKYdYGS+NnHq5Tt
         D3ulLfx64FOELsLAC3IKPlSOc05w0JTpJrBfyhv3wZC49JykZ7ZLGqaYvrFtuqnW30Bq
         8egG9bPJuuknasyIanvtyNoGN4NzoeqfFoYEDGqyPnmIN/sIv6/e8dTpbwO/5df0vonL
         jTEwTKOJBZbKYMGpE0hF5jojgqii8Rv7E51GWST5pElnULxlxeV6mxLhnhPhvNINXNgR
         E/ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730220466; x=1730825266;
        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=2y4qvQ5WrMUCS2XvWiD5MyBVG2WMwuZ3/t2R/u7r1Qk=;
        b=TjHW3jTU+c8Er4OM0norJ7HTlwmUg/gBwVvI0hQ1OQ7c+cFp156zNmDNdfheQYXKA3
         HXR4GOq7lrO2UGj8qtUnM4HyVB5VMBE7e2w5RFPHwy3RDbqlNjplkNYuTTgLhXuMOAmI
         j/50IF33+cL3A5lEPGlMUp+m7QPZGYtMuBUo6FU8OBORZsKnoaOpJKNqvgkd6CKcrnrT
         rj9CwPy2FhMHBYnDnqQ1rNWBvoXonq4OXvc/ONWffMWIodfGoCXuevqW5L3q7JRUyNOO
         X6b7PrIyNwhjy/AOEhlpW6jC/dUPjlXYh4nfEnnWTGkT0vdhthFznLHmCJtKJJjceYYJ
         JUCQ==
X-Gm-Message-State: AOJu0YyImrw1xA/qyVFMDb4RXkQCmNVPqZTnPE0lSKqJYancwtrlrE94
	ZGetmmf8AbEoMvmChWzjwUy3GL6BYY2MlSP6AJL3eyPCr0Cq+gJyYlScDQ==
X-Google-Smtp-Source: AGHT+IH5rl7AM6zQYXAG+aJ0ffbLNSu0/309FlZoo/vT7vZuT1A5+3u/qubZDlJ2YVnTMYNCeoVUyw==
X-Received: by 2002:a17:907:3204:b0:a9a:825:4c46 with SMTP id a640c23a62f3a-a9de5f66095mr1058498866b.28.1730220465378;
        Tue, 29 Oct 2024 09:47:45 -0700 (PDT)
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>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v1] xen/common: move gic_preinit() to common code
Date: Tue, 29 Oct 2024 17:47:42 +0100
Message-ID: <b1ded26dcebf9a3228fe4062825273720e0c59fe.1730220384.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Introduce ic_preinit() in common code, as it is not architecture-specific
and can be reused by both PPC and RISC-V. The function identifies the node
with the interrupt-controller property and calls device_init() for
architecture-specific initialization of the interrupt controller when
using the device tree. And the similar is done in case of ACPI but instead of
searching of the interrupt-controller property it is searching for entry in
MADT and call acpi_device_init().

This patch makes minor changes compared to the Arm implementation:
- Removes the local rc variable in gic_dt_preinit() since it is only used once.
- Changes the prefix from gic to ic to generalize the code and avoid confusion
  with Arm’s GIC.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/arm/gic.c               | 60 -----------------------------
 xen/arch/arm/setup.c             |  3 +-
 xen/common/device.c              | 65 ++++++++++++++++++++++++++++++++
 xen/include/asm-generic/device.h |  2 +
 4 files changed, 69 insertions(+), 61 deletions(-)

diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index 3eaf670fd7..b18bb08eba 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -214,66 +214,6 @@ int gic_map_hwdom_extra_mappings(struct domain *d)
     return 0;
 }
 
-static void __init gic_dt_preinit(void)
-{
-    int rc;
-    struct dt_device_node *node;
-    uint8_t num_gics = 0;
-
-    dt_for_each_device_node( dt_host, node )
-    {
-        if ( !dt_get_property(node, "interrupt-controller", NULL) )
-            continue;
-
-        if ( !dt_get_parent(node) )
-            continue;
-
-        rc = device_init(node, DEVICE_INTERRUPT_CONTROLLER, NULL);
-        if ( !rc )
-        {
-            /* NOTE: Only one GIC is supported */
-            num_gics = 1;
-            break;
-        }
-    }
-    if ( !num_gics )
-        panic("Unable to find compatible GIC in the device tree\n");
-
-    /* Set the GIC as the primary interrupt controller */
-    dt_interrupt_controller = node;
-    dt_device_set_used_by(node, DOMID_XEN);
-}
-
-#ifdef CONFIG_ACPI
-static void __init gic_acpi_preinit(void)
-{
-    struct acpi_subtable_header *header;
-    struct acpi_madt_generic_distributor *dist;
-
-    header = acpi_table_get_entry_madt(ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, 0);
-    if ( !header )
-        panic("No valid GICD entries exists\n");
-
-    dist = container_of(header, struct acpi_madt_generic_distributor, header);
-
-    if ( acpi_device_init(DEVICE_INTERRUPT_CONTROLLER, NULL, dist->version) )
-        panic("Unable to find compatible GIC in the ACPI table\n");
-}
-#else
-static void __init gic_acpi_preinit(void) { }
-#endif
-
-/* Find the interrupt controller and set up the callback to translate
- * device tree or ACPI IRQ.
- */
-void __init gic_preinit(void)
-{
-    if ( acpi_disabled )
-        gic_dt_preinit();
-    else
-        gic_acpi_preinit();
-}
-
 /* Set up the GIC */
 void __init gic_init(void)
 {
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 71ebaa77ca..1ea7db0bd4 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -38,6 +38,7 @@
 #include <asm/page.h>
 #include <asm/static-evtchn.h>
 #include <asm/current.h>
+#include <asm/device.h>
 #include <asm/setup.h>
 #include <asm/gic.h>
 #include <asm/cpuerrata.h>
@@ -359,7 +360,7 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
 
     preinit_xen_time();
 
-    gic_preinit();
+    ic_preinit();
 
     arm_uart_init();
     console_init_preirq();
diff --git a/xen/common/device.c b/xen/common/device.c
index 33e0d58f2f..cb07bd6e4f 100644
--- a/xen/common/device.c
+++ b/xen/common/device.c
@@ -4,10 +4,14 @@
  *   xen/arch/arm/device.c
  */
 
+#include <xen/acpi.h>
 #include <xen/bug.h>
 #include <xen/device_tree.h>
 #include <xen/errno.h>
 #include <xen/init.h>
+#include <xen/kernel.h>
+#include <xen/lib.h>
+#include <xen/types.h>
 
 #include <asm/device.h>
 
@@ -56,6 +60,40 @@ enum device_class device_get_class(const struct dt_device_node *dev)
     return DEVICE_UNKNOWN;
 }
 
+static void __init ic_dt_preinit(void)
+{
+    struct dt_device_node *node;
+    uint8_t num_gics = 0;
+
+    dt_for_each_device_node( dt_host, node )
+    {
+        if ( !dt_get_property(node, "interrupt-controller", NULL) )
+            continue;
+
+        if ( !dt_get_parent(node) )
+            continue;
+
+        if ( !device_init(node, DEVICE_INTERRUPT_CONTROLLER, NULL) )
+        {
+            /* NOTE: Only one GIC is supported */
+            num_gics = 1;
+            break;
+        }
+    }
+
+    if ( !num_gics )
+        panic("Unable to find compatible interrupt contoller"
+              "in the device tree\n");
+
+    /* Set the interrupt controller as the primary interrupt controller */
+    dt_interrupt_controller = node;
+    dt_device_set_used_by(node, DOMID_XEN);
+}
+
+#else /* !CONFIG_HAS_DEVICE_TREE */
+
+static void __init ic_dt_preinit(void) { }
+
 #endif
 
 #ifdef CONFIG_ACPI
@@ -79,4 +117,31 @@ int __init acpi_device_init(enum device_class class, const void *data, int class
     return -EBADF;
 }
 
+static void __init ic_acpi_preinit(void)
+{
+    struct acpi_subtable_header *header;
+    struct acpi_madt_generic_distributor *dist;
+
+    header = acpi_table_get_entry_madt(ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, 0);
+    if ( !header )
+        panic("No valid interrupt controller entries exists\n");
+
+    dist = container_of(header, struct acpi_madt_generic_distributor, header);
+
+    if ( acpi_device_init(DEVICE_INTERRUPT_CONTROLLER, NULL, dist->version) )
+        panic("Unable to find compatible interrupt controller"
+              "in the ACPI table\n");
+}
+#else /* !CONFIG_ACPI */
+
+static void __init ic_acpi_preinit(void) { }
+
 #endif
+
+void __init ic_preinit(void)
+{
+    if ( acpi_disabled )
+        ic_dt_preinit();
+    else
+        ic_acpi_preinit();
+}
diff --git a/xen/include/asm-generic/device.h b/xen/include/asm-generic/device.h
index 1acd1ba1d8..ccfb062d6a 100644
--- a/xen/include/asm-generic/device.h
+++ b/xen/include/asm-generic/device.h
@@ -127,6 +127,8 @@ __section(".adev.info") = {                                         \
 
 #endif /* CONFIG_ACPI */
 
+void ic_preinit(void);
+
 #endif /* __ASM_GENERIC_DEVICE_H__ */
 
 /*
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:49:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:49:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827734.1242427 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5pPJ-0004aL-KV; Tue, 29 Oct 2024 16:49:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827734.1242427; Tue, 29 Oct 2024 16:49: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 1t5pPJ-0004aE-Hp; Tue, 29 Oct 2024 16:49:25 +0000
Received: by outflank-mailman (input) for mailman id 827734;
 Tue, 29 Oct 2024 16:49: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=H/ws=RZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t5pPI-0004ZO-QH
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:49:24 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id beb4ea35-9615-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 17:49:21 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a0ef5179dso832638566b.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 09:49:21 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a086f6dsm485681566b.214.2024.10.29.09.49.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 09:49:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: beb4ea35-9615-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImJlYjRlYTM1LTk2MTUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjIwNTYxLjE1NzgyNiwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730220560; x=1730825360; 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=bc3HSpZHv7wsx+J9pjxv78u2BjnmNqb0nRpUESP+2NM=;
        b=XtzGgn2oFWGDUjbRE5rrWwF3zgzKLOyDOwXeCcwn9haueVKuj5XeyJ7v/ypZDy7Ego
         R1HQb/hcGHTKmakc2mNs3J2v5Q+mdQ0GeV6tjIFgcrKr6iJ5Fp3jgg+h/C87GLpb8Jjv
         OrA/LuwClw3lGumtM88cyPfd0/xEuoGEof9UqhCazXCtKRuPmFRZwaSpGjF3Tr0mE++w
         R5Qt+XO6OkT1zX4f1+U3HnQPGK6RFuIpb8h1yb0bL9zN/CYA8hh6uc/eyE/SKrhuCTdB
         sXetHkKi2vJ910/YQgNo5zYXwdr7soV4c93hosoYg4s+2TfgYqXvDIPTIOSFTSutA6cP
         ikIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730220560; x=1730825360;
        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=bc3HSpZHv7wsx+J9pjxv78u2BjnmNqb0nRpUESP+2NM=;
        b=RXpodCPCGKKyqdD5SgPPCKE+LC8KUQupmYN4CrJx/iMspgzWRBq8/x1Rfu47RWo2wh
         XVOStrPb5fQf8nOuFBwfS9u4Cnkj9gvw5v34FcqcGcm0CFt2XYOGtALfzakZg05Flh4l
         aWLYPV56yBv2EhhumXN0TgoV9BD+f50KdZ5m4w0WUX53poIragAKCqxg6eDRCRVoven4
         DbpOc8M17Rr+UUmis0KxBTNq1LkUybeH1EG0wyPVRpH9A3hEZkmNVygziFP9ohzWVaVc
         r6ZVCi6dcqAaTkIelsbl8mCKBmvEFFXTjsH4AZAW8vbYSgt/dTtCg/3D9PvckNts9pMC
         N6WA==
X-Forwarded-Encrypted: i=1; AJvYcCXbI45IrtvrQtl9NwS+eP9uAxdbF0+BSBhraU20lKrR53n7dC3ewcp5lCJtv4zEVnxASM8UF70ZJXM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwqFk9aSDTUnR6oUXeSOxx1rFm/8vjzbP/t7zbq0jtm+LPWNY+S
	uZnRJBmvSLOaDufHnLl4ajacH/iqSAExjoFc4CfyBT3+4Mc30F8X
X-Google-Smtp-Source: AGHT+IEcotjQ54a26AVC39O0zUrjvUWtKYG5pC5gefD2sxlFJKui8VSMysbdM4gXqclQKgFUmxqrpA==
X-Received: by 2002:a17:907:72ce:b0:a99:7539:2458 with SMTP id a640c23a62f3a-a9de6455bf8mr1043030966b.65.1730220560265;
        Tue, 29 Oct 2024 09:49:20 -0700 (PDT)
Message-ID: <271c0ff849d7c203399a7afc51df80a231c9e093.camel@gmail.com>
Subject: Re: [PATCH v4 2/6] xen/arm: mpu: Introduce choice between MMU and
 MPU
From: oleksii.kurochko@gmail.com
To: Andrew Cooper <andrew.cooper3@citrix.com>, Ayan Kumar Halder
	 <ayan.kumar.halder@amd.com>, xen-devel@lists.xenproject.org
Cc: Community Manager <community.manager@xenproject.org>, 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>, Luca Fancellu <luca.fancellu@arm.com>, Julien
 Grall <jgrall@amazon.com>
Date: Tue, 29 Oct 2024 17:49:18 +0100
In-Reply-To: <970e36dd-bedd-405b-966b-66dde57eb118@citrix.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
	 <20241028124547.1371867-3-ayan.kumar.halder@amd.com>
	 <970e36dd-bedd-405b-966b-66dde57eb118@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-29 at 09:53 +0000, Andrew Cooper wrote:
> On 28/10/2024 12:45 pm, Ayan Kumar Halder wrote:
> > diff --git a/CHANGELOG.md b/CHANGELOG.md
> > index c499d12dc4..79524cc15f 100644
> > --- a/CHANGELOG.md
> > +++ b/CHANGELOG.md
> > @@ -12,6 +12,8 @@ The format is based on [Keep a
> > Changelog](https://keepachangelog.com/en/1.0.0/)
> > =C2=A0=C2=A0=C2=A0 - Prefer ACPI reboot over UEFI ResetSystem() run tim=
e service
> > call.
> > =C2=A0
> > =C2=A0### Added
> > + - On Arm:
> > +=C2=A0=C2=A0 - Support for earlyboot of Xen on Armv8-R (experimental).
>=20
> Simply "Experimental support for Armv8-R".
>=20
> The rest of that sentence is going to go stale quite quickly.
With suggested by Andrew: Acked-by: Oleksii Kurochko
<oleksii.kurochko@gmail.com>

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 16:57:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 16:57:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827740.1242438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5pXB-0006hz-Da; Tue, 29 Oct 2024 16:57:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827740.1242438; Tue, 29 Oct 2024 16:57: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 1t5pXB-0006hs-98; Tue, 29 Oct 2024 16:57:33 +0000
Received: by outflank-mailman (input) for mailman id 827740;
 Tue, 29 Oct 2024 16:57: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=E68c=RZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t5pXA-0006hm-B5
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 16:57:32 +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 e0efd14e-9616-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 17:57:28 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-37d4c482844so3845115f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 09:57:28 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058bb4724sm13040431f8f.115.2024.10.29.09.57.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 09:57:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e0efd14e-9616-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MzAiLCJoZWxvIjoibWFpbC13cjEteDQzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImUwZWZkMTRlLTk2MTYtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjIxMDQ4LjEyMjA1OSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730221047; x=1730825847; 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=6NucgID8J5ityhR2WJFGL+nL4hY1wKvgFcUA5lB8oPk=;
        b=czMqhpw325GyMaHHsp+mwqsX5yCbtmR6TwluUm7SOdRx+uwXIiMfX+xreknkxmMcZc
         3oAnngHQQvkkQrcGZKip7utIU0Bs3vNY4cH3LExgztJMQldZISRwopBnpoLPfIbSF88U
         HVNpzEhR2bcFmbfGEqN5f9R4NSvfUStqRhWRuIZwZBeh9G7+B7YWPy15KDT6WU3SWNRg
         lXUY41iqTRS1RFzz7YmvV3V85y6qiUhaibieu8kLG7OJSsEE8i1nstLYOJ1TQLfNdZzX
         gX3Z2VlIyXcpALH8VecFPyxkfOuo2eAGvXJ9iNovwgKZx8FkqKIjH9SXC4Pzi51XCX6g
         Sojw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730221047; x=1730825847;
        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=6NucgID8J5ityhR2WJFGL+nL4hY1wKvgFcUA5lB8oPk=;
        b=wK/q1rHdu4IAbN0+gx+FngMUyyCt3cvZnLFmskZd5pe9tQjdj0OpKhkhM84HMKipFL
         h1uoAcODjDx9tQq+TqcUXY6a82P24KpwPzJt7K0LYBEgiVFm4tgKUqJguUdXiquMXg5u
         mqgJ/7Akb3pCG7rD2BLca21KcA5LoKs7MSJvRqSEy6uPoGvCPp3dXfTI7VXaisuj+TGP
         wYng5HD3KRbhlc7/SvDM3ZMYVpE7hwUqz6vXb/kk/kjQo4tf0pGntNoBsOCVy0FUJsIH
         Ij81kFv4ApIitMQgqYt5AVvlgDrnmPKFDVD85t1ileCeMhdTbvX8vSLvzpqCG5evl4mZ
         hjnw==
X-Forwarded-Encrypted: i=1; AJvYcCVAoaR88lmlmFLsvZ2BuVFucm6R4WcvoswRlq7v4p7vtKxawbXeRuM+mgn7JrJXj4AWCddIdz0TViA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzJqVX+CtNroS7JwjIhpMk1lF+tDqa6ut85pASvJy6fPS4uLgmc
	dMDjw4zvTMTJfyeqUQ2cBVnWzdykyx1yT6KCPs84kVAIN+LvZy/laW4JLNwM8Q==
X-Google-Smtp-Source: AGHT+IH/OTZ7td2uNGxzS1nyiJamwqQJNUUUGT4dLuhgQfnbuL9fwOM3koJb9tumMFhw4Gzeaq/g5A==
X-Received: by 2002:adf:9bd4:0:b0:37d:4e74:687 with SMTP id ffacd0b85a97d-380611e1392mr9095287f8f.41.1730221047392;
        Tue, 29 Oct 2024 09:57:27 -0700 (PDT)
Message-ID: <a5539c03-4e19-4739-95cf-439aa0bea9a3@suse.com>
Date: Tue, 29 Oct 2024 17:57:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] xen/common: move gic_preinit() to common code
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>, xen-devel@lists.xenproject.org
References: <b1ded26dcebf9a3228fe4062825273720e0c59fe.1730220384.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: <b1ded26dcebf9a3228fe4062825273720e0c59fe.1730220384.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 17:47, Oleksii Kurochko wrote:
> --- a/xen/common/device.c
> +++ b/xen/common/device.c
> @@ -4,10 +4,14 @@
>   *   xen/arch/arm/device.c
>   */
>  
> +#include <xen/acpi.h>
>  #include <xen/bug.h>
>  #include <xen/device_tree.h>
>  #include <xen/errno.h>
>  #include <xen/init.h>
> +#include <xen/kernel.h>
> +#include <xen/lib.h>
> +#include <xen/types.h>

I don't think non-ACPI configs should include xen/acpi.h here. Surely this
can be moved down into the ACPI-only code section?

> @@ -56,6 +60,40 @@ enum device_class device_get_class(const struct dt_device_node *dev)
>      return DEVICE_UNKNOWN;
>  }
>  
> +static void __init ic_dt_preinit(void)
> +{
> +    struct dt_device_node *node;
> +    uint8_t num_gics = 0;
> +
> +    dt_for_each_device_node( dt_host, node )
> +    {
> +        if ( !dt_get_property(node, "interrupt-controller", NULL) )
> +            continue;
> +
> +        if ( !dt_get_parent(node) )
> +            continue;
> +
> +        if ( !device_init(node, DEVICE_INTERRUPT_CONTROLLER, NULL) )
> +        {
> +            /* NOTE: Only one GIC is supported */
> +            num_gics = 1;
> +            break;
> +        }
> +    }
> +
> +    if ( !num_gics )
> +        panic("Unable to find compatible interrupt contoller"
> +              "in the device tree\n");
> +
> +    /* Set the interrupt controller as the primary interrupt controller */
> +    dt_interrupt_controller = node;
> +    dt_device_set_used_by(node, DOMID_XEN);
> +}
> +
> +#else /* !CONFIG_HAS_DEVICE_TREE */
> +
> +static void __init ic_dt_preinit(void) { }
> +
>  #endif

While for DT I can only guess that the IC is common across platforms, ...

> @@ -79,4 +117,31 @@ int __init acpi_device_init(enum device_class class, const void *data, int class
>      return -EBADF;
>  }
>  
> +static void __init ic_acpi_preinit(void)
> +{
> +    struct acpi_subtable_header *header;
> +    struct acpi_madt_generic_distributor *dist;
> +
> +    header = acpi_table_get_entry_madt(ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, 0);
> +    if ( !header )
> +        panic("No valid interrupt controller entries exists\n");
> +
> +    dist = container_of(header, struct acpi_madt_generic_distributor, header);
> +
> +    if ( acpi_device_init(DEVICE_INTERRUPT_CONTROLLER, NULL, dist->version) )
> +        panic("Unable to find compatible interrupt controller"
> +              "in the ACPI table\n");
> +}
> +#else /* !CONFIG_ACPI */
> +
> +static void __init ic_acpi_preinit(void) { }
> +
>  #endif

... simply deriving from x86 (and IA-64) it's clear it isn't for ACPI. I'm
therefore unconvinced placing this in common code is appropriate.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 17:18:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 17:18:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827750.1242447 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5prC-0003Dx-0Y; Tue, 29 Oct 2024 17:18:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827750.1242447; Tue, 29 Oct 2024 17: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 1t5prB-0003Dq-TC; Tue, 29 Oct 2024 17:18:13 +0000
Received: by outflank-mailman (input) for mailman id 827750;
 Tue, 29 Oct 2024 17:18: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=7Hvw=RZ=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1t5prA-0003Dk-II
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 17:18:12 +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 c2ec71a7-9619-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 18:18:06 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9a3dc089d8so841037366b.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 10:18:06 -0700 (PDT)
Received: from jmerino-thinkstation ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b2fe2af87sm498943366b.143.2024.10.29.10.18.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 10:18:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2ec71a7-9619-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmUiLCJoZWxvIjoibWFpbC1lajEteDYyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImMyZWM3MWE3LTk2MTktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjIyMjg2LjIwNjIxMSwic2VuZGVyIjoiamF2aS5tZXJpbm9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730222285; x=1730827085; 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=SVdOokFSetT7oKRAM0gON4dunH/xhPNCxe/un+Db+uI=;
        b=BNOdc6dU7Gt7naA+MEcUQ6DSVQLhBXuI921yL+/ZSl6JVuv8vy674+upiI7igs9oA+
         p5zBUqLjmCVaRiJ5rtfqZoCb0I9A5oTMWEfA076SIn30D4+Kpgqin/1yMHg1jnM42tUJ
         E6T1aoKw02F9RB3dJ2KUqAcj8w/u8EjajL1Ns=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730222285; x=1730827085;
        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=SVdOokFSetT7oKRAM0gON4dunH/xhPNCxe/un+Db+uI=;
        b=Slzqpi5Z4KNFGInbHQXK4jydNwXIcY/gELQ4lCG8ornoclpKtKnduw224B4Jr1v4D7
         MblH0BRBuTQ3tLSmtFQG89z+Q6vjzovxwy6uz4XDYnXMpGUa1ixptORjN4tLTpSkC9lW
         F78F4OqKCONibOz4+UJF5RA0eTqSOYTH0ZBozF900+blA6rOSPd/ZuJ+UiU9OPHQm6ZI
         3haodnu1zd2iZaNQRSM3o5NsA5oOHyjaZOv9myCGJcCaXduZgHfsaTS7WhxoBZw2IZZq
         Hw98yflITnJx/sIHWiUbRba39OfCwGkhdBJ6TrHLGSjnKoDkP78sDoqrRcmzSA6a1Ilm
         +SNg==
X-Gm-Message-State: AOJu0YwQgWQv5brUxj85QkQYZEiihwYFBeK0QbhQl9wc8HLUVcx6P4BE
	SiL7YXEuVZYHC/lL7aBAr6eiAHxDbICMvIswevror/8PukQym8A+wq8Ae4zRLIg=
X-Google-Smtp-Source: AGHT+IFNHG+5W/NrdiQJz1jDgAQpZJtKe+wGSd1jAyvFDb9AkW4EsMwexpjjg2vl68QUfC+zfR0olQ==
X-Received: by 2002:a17:907:97d4:b0:a9a:a7fd:d840 with SMTP id a640c23a62f3a-a9de5cfea5emr1074065666b.1.1730222285507;
        Tue, 29 Oct 2024 10:18:05 -0700 (PDT)
Date: Tue, 29 Oct 2024 17:18:03 +0000
From: Javi Merino <javi.merino@cloud.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Doug Goldstein <cardoe@cardoe.com>
Subject: Re: [XEN PATCH v1 6/6] CI: Run the builds and tests that use the
 Debian 12 containers as a normal user
Message-ID: <dbqfp4kywi6uuykycdake67ek6q6wjnwygnkhrvvxgfd4gokff@ybjta54ae4a5>
References: <cover.1729760501.git.javi.merino@cloud.com>
 <c6d8547d500ac419ee4590decb9392f32f1f0d02.1729760501.git.javi.merino@cloud.com>
 <alpine.DEB.2.22.394.2410241631250.3833@ubuntu-linux-20-04-desktop>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <alpine.DEB.2.22.394.2410241631250.3833@ubuntu-linux-20-04-desktop>

Hi Stefano,

On Thu, Oct 24, 2024 at 04:47:28PM -0700, Stefano Stabellini wrote:
> On Thu, 24 Oct 2024, Javi Merino wrote:
> > Use FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR so that GitLab CI clones xen
> > using the user in the image, instead of as root[0].
> > 
> > In qemu-smoke-dom0*.sh and qemu-alpine-x86_64.sh, use fakeroot to
> > create the rootfs images that untar a tarball that create character
> > devices.  cpio replicates the block and character devices, as well as
> > preserving the uid and gid it sees in the current directory.  fakeroot
> > lets tar think that it is creating block and character devices, and
> > all files are owned by root, but it is all smokes and mirrors for
> > cpio.
> > 
> > [0] https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1736
> > 
> > Signed-off-by: Javi Merino <javi.merino@cloud.com>
> > ---
> > 
> > Regarding building the rootfs, I have chosen to use a fakeroot
> > subshell for the entire process.  automation/scripts/qubes-x86-64.sh
> > takes a different approach, it just uses fakeroot for the tar/cpio
> > commands.  I prefer to do it this way but I am happy to be overridden
> > if `fakeroot -s ../save tar` and `fakeroot -i ../save cpio` are
> > preferred.
> > 
> >  automation/build/debian/12-arm64v8.dockerfile   | 5 ++++-
> >  automation/build/debian/12-x86_64.dockerfile    | 5 ++++-
> >  automation/gitlab-ci/test.yaml                  | 4 ++++
> >  automation/scripts/qemu-alpine-x86_64.sh        | 4 +++-
> >  automation/scripts/qemu-smoke-dom0-arm64.sh     | 7 +++++--
> >  automation/scripts/qemu-smoke-dom0less-arm64.sh | 5 +++--
> >  6 files changed, 23 insertions(+), 7 deletions(-)
> > 
> > diff --git a/automation/build/debian/12-arm64v8.dockerfile b/automation/build/debian/12-arm64v8.dockerfile
> > index 4da1b074aedb..c2617956ed77 100644
> > --- a/automation/build/debian/12-arm64v8.dockerfile
> > +++ b/automation/build/debian/12-arm64v8.dockerfile
> > @@ -10,6 +10,8 @@ RUN <<EOF
> >  #!/bin/bash
> >      set -eu
> >  
> > +    useradd --create-home user
> > +
> >      apt-get update
> >      DEPS=(
> >          # Xen
> > @@ -53,6 +55,7 @@ RUN <<EOF
> >          curl
> >          device-tree-compiler
> >          expect
> > +        fakeroot
> >          u-boot-qemu
> >          # for imagebuilder
> >          file
> > @@ -64,5 +67,5 @@ RUN <<EOF
> >      rm -rf /var/lib/apt/lists*
> >  EOF
> >  
> > -USER root
> > +USER user
> >  WORKDIR /build
> > diff --git a/automation/build/debian/12-x86_64.dockerfile b/automation/build/debian/12-x86_64.dockerfile
> > index e0ca8b7e9c91..98b23ea3eaa4 100644
> > --- a/automation/build/debian/12-x86_64.dockerfile
> > +++ b/automation/build/debian/12-x86_64.dockerfile
> > @@ -10,6 +10,8 @@ RUN <<EOF
> >  #!/bin/bash
> >      set -eu
> >  
> > +    useradd --create-home user
> > +
> >      apt-get update
> >      DEPS=(
> >          # Xen
> > @@ -54,6 +56,7 @@ RUN <<EOF
> >          # for qemu-alpine-x86_64-gcc
> >          busybox-static
> >          cpio
> > +        fakeroot
> >  
> >          # For *-efi jobs
> >          ovmf
> > @@ -64,5 +67,5 @@ RUN <<EOF
> >      rm -rf /var/lib/apt/lists*
> >  EOF
> >  
> > -USER root
> > +USER user
> >  WORKDIR /build
> 
> This breaks the xilinx hardware jobs both arm and x86 as they
> require root inside the container at the moment
> 
> 
> > diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> > index 42baa82fe36f..71f2beb68c4f 100644
> > --- a/automation/gitlab-ci/test.yaml
> > +++ b/automation/gitlab-ci/test.yaml
> > @@ -1,6 +1,10 @@
> >  .test-jobs-common:
> >    stage: test
> >    image: registry.gitlab.com/xen-project/xen/${CONTAINER}
> > +  variables:
> > +    # Clone xen as the user in the docker images, not root
> > +    # See https://gitlab.com/gitlab-org/gitlab-runner/-/issues/1736
> > +    FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: true
> >  
> >  .arm64-test-needs: &arm64-test-needs
> >    - alpine-3.18-arm64-rootfs-export
> > diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh
> > index 1ff689b577e3..2660403ab2b8 100755
> > --- a/automation/scripts/qemu-alpine-x86_64.sh
> > +++ b/automation/scripts/qemu-alpine-x86_64.sh
> > @@ -29,6 +29,7 @@ find . | cpio --create --format='newc' | gzip > ../initrd.cpio.gz
> >  cd ..
> >  
> >  # initrd.tar.gz is Dom0 rootfs
> > +fakeroot <<EOF
> >  mkdir -p rootfs
> >  cd rootfs
> >  tar xvzf ../initrd.tar.gz
> > @@ -63,7 +64,8 @@ chmod +x etc/local.d/xen.start
> >  echo "rc_verbose=yes" >> etc/rc.conf
> >  # rebuild Dom0 rootfs
> >  find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz
> > -cd ../..
> > +EOF
> > +cd ..
> 
> I admit I am not a fan of this as it makes the script harder to read.
> Given that almost everything on this script and similar scripts is
> better run as root because it is all about repackaging cpio archivies,
> instead I would do this:
> 
> diff --git a/automation/scripts/qemu-alpine-x86_64.sh b/automation/scripts/qemu-alpine-x86_64.sh
> index 2660403ab2..7c0ec01e05 100755
> --- a/automation/scripts/qemu-alpine-x86_64.sh
> +++ b/automation/scripts/qemu-alpine-x86_64.sh
> @@ -1,4 +1,4 @@
> -#!/bin/bash
> +#!/usr/bin/fakeroot
>  
>  set -ex -o pipefail

Running the entire script as a fakeroot subshell is ugly and not
necessary.

A better fix is what I suggested under the commit message, which is
also what the qubes containers do:

--- a/automation/scripts/qemu-alpine-x86_64.sh
+++ b/automation/scripts/qemu-alpine-x86_64.sh
@@ -31,7 +31,7 @@ cd ..
 # initrd.tar.gz is Dom0 rootfs
 mkdir -p rootfs
 cd rootfs
-tar xvzf ../initrd.tar.gz
+fakeroot -s ../fakeroot-save tar xvzf ../initrd.tar.gz
 mkdir proc
 mkdir run
 mkdir srv
@@ -62,7 +62,7 @@ xl create -c /root/test.cfg
 chmod +x etc/local.d/xen.start
 echo "rc_verbose=yes" >> etc/rc.conf
 # rebuild Dom0 rootfs
-find . |cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz
+find . | fakeroot -i ../fakeroot-save cpio -H newc -o|gzip > ../xen-rootfs.cpio.gz
 cd ../..

 cat >> binaries/pxelinux.0 << EOF


Similar for the dom0 and dom0less scripts and for the xilinx scripts.

> Keeping in mind that anyone could push a branch without fakeroot to
> their personal tree triggering a gitlab-ci pipeline, the advantage of
> using fakeroot would be if we force the container execution envinronment
> (gitlab runner) to run containers as user. This is not currently the
> configuration we have. As of now, it doesn't bring an advantage.
> 
> Given that the gitlab runners are in flux at the moment, and that this
> patch cannot work with the xilinx runners, I would ask you to please
> hold on on this patch until the gitlab runners are settled (~1 month).

Ok, I will hold the patch.  I will also fix the xilinx scripts.

Cheers,
Javi


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 17:37:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 17:37:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827759.1242456 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5q9l-0006o8-GD; Tue, 29 Oct 2024 17:37:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827759.1242456; Tue, 29 Oct 2024 17:37: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 1t5q9l-0006o1-Da; Tue, 29 Oct 2024 17:37:25 +0000
Received: by outflank-mailman (input) for mailman id 827759;
 Tue, 29 Oct 2024 17: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=jjvs=RZ=intel.com=dave.hansen@srs-se1.protection.inumbo.net>)
 id 1t5q9j-0006nv-TZ
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 17:37:24 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 70c7ed91-961c-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 18:37:18 +0100 (CET)
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
 by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 29 Oct 2024 10:37:10 -0700
Received: from ccbilbre-mobl3.amr.corp.intel.com (HELO [10.124.223.38])
 ([10.124.223.38])
 by fmviesa008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 29 Oct 2024 10:37:09 -0700
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 70c7ed91-961c-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE5OC4xNzUuNjUuMTQiLCJoZWxvIjoibWdhbWFpbC5pbnRlbC5jb20ifQ==
X-Custom-Transaction: eyJpZCI6IjcwYzdlZDkxLTk2MWMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjIzNDM5LjA5MTg5OCwic2VuZGVyIjoiZGF2ZS5oYW5zZW5AaW50ZWwuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1730223439; x=1761759439;
  h=message-id:date:mime-version:subject:to:cc:references:
   from:in-reply-to:content-transfer-encoding;
  bh=11sghmVqAck0hLQpJ32ZcRyZ2dfw2CD170aRaVdXWy8=;
  b=d8knvJTGsct7z+3zLWL204aJnnHx5wG92p3+QAGAjt76yudGJsdogRfZ
   ovHjNgtXiOPpupI6HdiTSUMPyeecgoBgc67WeaWRCPiNNfQCws9bcBBAn
   WZ25+cRf4pc9K3iFFhgo6EN0gwZc6jpKtJY2ZsX7LgaMOH9lRiD/20X0/
   kpNwBzDLi2FjbTn8W/AW7nTi0/Ihg8pXGAdI74hFevC06fAraKNAeosAG
   3RDTOXuSkLV9mBQ8Jit7IpsXiblkw00CMy8b0vj07bgAwbSEb0tsm6SVn
   aSbFwxrrAnvkXpMY94QutidbbBxLYAbHYLmXWVe3PvqIY7IMHf/MrDPOd
   Q==;
X-CSE-ConnectionGUID: WbmuCDRYRH6ckF0BBqp0mw==
X-CSE-MsgGUID: cv0xWqNCTdOjk7iD12msUg==
X-IronPort-AV: E=McAfee;i="6700,10204,11240"; a="33678584"
X-IronPort-AV: E=Sophos;i="6.11,241,1725346800"; 
   d="scan'208";a="33678584"
X-CSE-ConnectionGUID: mxavBGIvRr+lbi6krs4oaA==
X-CSE-MsgGUID: +oHChIklSteyHFt1spYqnA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,241,1725346800"; 
   d="scan'208";a="82141735"
Message-ID: <4d39b188-0642-495c-8638-67ae08c070b7@intel.com>
Date: Tue, 29 Oct 2024 10:37:07 -0700
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mtrr: Rename mtrr_overwrite_state() to
 guest_force_mtrr_state()
To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
 Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>,
 Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 x86@kernel.org
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
 Haiyang Zhang <haiyangz@microsoft.com>, Wei Liu <wei.liu@kernel.org>,
 Dexuan Cui <decui@microsoft.com>, "H. Peter Anvin" <hpa@zytor.com>,
 Paolo Bonzini <pbonzini@redhat.com>, Vitaly Kuznetsov <vkuznets@redhat.com>,
 Juergen Gross <jgross@suse.com>, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, Gaosheng Cui <cuigaosheng1@huawei.com>,
 Michael Roth <michael.roth@amd.com>, Tom Lendacky <thomas.lendacky@amd.com>,
 Ashish Kalra <ashish.kalra@amd.com>, Kai Huang <kai.huang@intel.com>,
 Andi Kleen <ak@linux.intel.com>, Sean Christopherson <seanjc@google.com>,
 Xiaoyao Li <xiaoyao.li@intel.com>, linux-hyperv@vger.kernel.org,
 linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org
References: <20241015095818.357915-1-kirill.shutemov@linux.intel.com>
 <20241016105048.757081-1-kirill.shutemov@linux.intel.com>
 <l7l6ufyjbrfr4ms6quil5myf5bzmvu33sq3phfvpbwldhzn6m2@rzfdrvbe2glf>
From: Dave Hansen <dave.hansen@intel.com>
Content-Language: en-US
Autocrypt: addr=dave.hansen@intel.com; keydata=
 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
In-Reply-To: <l7l6ufyjbrfr4ms6quil5myf5bzmvu33sq3phfvpbwldhzn6m2@rzfdrvbe2glf>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10/29/24 08:13, Kirill A. Shutemov wrote:
> On Wed, Oct 16, 2024 at 01:50:48PM +0300, Kirill A. Shutemov wrote:
>> Rename the helper to better reflect its function.
>>
>> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
>> Suggested-by: Dave Hansen <dave.hansen@intel.com>
> 
> KVM patch is Linus' tree.
> 
> Dave, can you take this one?

Not easily without a merge of Paolo's KVM bits.  The confusion that
might cause isn't quite worth it for a rename.  I can either stash this
somewhere or I'm also fine if Paolo takes it on top of your other patch:

Acked-by: Dave Hansen <dave.hansen@intel.com>


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 17:48:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 17:48:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827768.1242467 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qKe-0000xx-K1; Tue, 29 Oct 2024 17:48:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827768.1242467; Tue, 29 Oct 2024 17: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 1t5qKe-0000xq-Go; Tue, 29 Oct 2024 17:48:40 +0000
Received: by outflank-mailman (input) for mailman id 827768;
 Tue, 29 Oct 2024 17:48: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=rNzX=RZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t5qKd-0000xi-TI
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 17:48:39 +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 05cd747c-961e-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 18:48:36 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2fb5fa911aaso79713421fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 10:48:36 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f029890sm492684566b.56.2024.10.29.10.48.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 10:48:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05cd747c-961e-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmQiLCJoZWxvIjoibWFpbC1sajEteDIyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjA1Y2Q3NDdjLTk2MWUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI0MTE2LjM4MTc1OSwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730224116; x=1730828916; 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=J/9EEMmuM7jmIzvSl6mBVAvVIEw6XiW1XI1NLq8ReTo=;
        b=pNbyI0qkve0DMFIXta2tbdAz13uTVYAyhRNKDD6TlhJ/A9FTGLtXhn1HjjQHuZlanO
         L6wl70ahqJAmhN01w5s1L9zy9ybRRdq069ENdRWXPI5qPGpQ5MiObUFjWLis3KQgL5Yu
         cKH9VrpOEOuW4ZYF8wtsoEtIVrn+7fCuUF5AA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730224116; x=1730828916;
        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=J/9EEMmuM7jmIzvSl6mBVAvVIEw6XiW1XI1NLq8ReTo=;
        b=eMyvkn0aOROICkpJYrmDwTi2BnhiPfnQ/b/QNa7oRStdLHSwr6dqab02/ATRf7nLjA
         3lH7xJuJgKsWc3/dvv9pXcWa4Suob6s7+PGVrtTAMaXEXVYOavC8sIBFjTUleDO+98xY
         ycAM0L4Y/FiTSXkBEZeeiBmTu9YZoPgprBzSt9Y1eZ7hehCTU5ZLaK3jqA8nWnN75Xob
         Rw/pJTPsXkyfN/1sfH0WJ25UcE/Gpy2mIMnVqhmMZRAc5FpQa5mLZOeOBpRN5k67aT0x
         clPm3OA7VtKPxQ2k0jQ4KYvXrUsvCtsKzy0aaPdzQCsRC4Mdkmh2keEuthxTCWei0ebc
         u8Tw==
X-Forwarded-Encrypted: i=1; AJvYcCX1608eiPqyr9jgQdaFSeT5/CQzZytF5l+gZElzfNjjEltnKG73RiPc1hRWISX0hmMdMDnz84nD9T4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy1FqcRVCKaXnbVii42lVEUSlTkXR1tCYIgo7xfN3gsgjZ9b73v
	cMeRTZNLcE4t/+GLEq62llD+TeBVhd+PVH+xqYxrfFVcSbhDVi8XqSx7QDNUZa4=
X-Google-Smtp-Source: AGHT+IHVWoJXNQUlezkyEYR4zMAOpvDDKxRetsSlRQjhzIPYOrTo4MIRJhSEPNcIMKmN37GKcdNdrQ==
X-Received: by 2002:a05:651c:507:b0:2f7:6653:8053 with SMTP id 38308e7fff4ca-2fcbdfc5394mr96712041fa.18.1730224115664;
        Tue, 29 Oct 2024 10:48:35 -0700 (PDT)
Date: Tue, 29 Oct 2024 18:48:34 +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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
Message-ID: <ZyEf8hK-XyGn6Kp8@macbook>
References: <20241029110351.40531-1-roger.pau@citrix.com>
 <53034f16-682e-4081-ab7e-81338c700f85@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <53034f16-682e-4081-ab7e-81338c700f85@suse.com>

On Tue, Oct 29, 2024 at 05:43:24PM +0100, Jan Beulich wrote:
> On 29.10.2024 12:03, Roger Pau Monne wrote:
> > When using AMD-Vi interrupt remapping the vector field in the IO-APIC RTE is
> > repurposed to contain part of the offset into the remapping table.  Previous to
> > 2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
> > table would match the vector.  Such logic was mandatory for end of interrupt to
> > work, since the vector field (even when not containing a vector) is used by the
> > IO-APIC to find for which pin the EOI must be performed.
> > 
> > Introduce a table to store the EOI handlers when using interrupt remapping, so
> > that the IO-APIC driver can translate pins into EOI handlers without having to
> > read the IO-APIC RTE entry.  Note that to simplify the logic such table is used
> > unconditionally when interrupt remapping is enabled, even if strictly it would
> > only be required for AMD-Vi.
> 
> In here I think you mean "handle" when you use "handler"?

Indeed.

> Plus with what you said
> earlier about vector vs EOI handle, and with the code using "vector" all over the
> place, their (non-)relationship could also do with clarifying (perhaps better in
> a code comment in __io_apic_eoi()).

I've attempted to clarify the relation between vector vs EOI handle in
the first paragraph, and how that applies to AMD-Vi.  I can move
(part?) of that into the comment in __ioapic_write_entry(), maybe:

/*
 * Might be called before io_apic_pin_eoi is allocated.  Entry will be
 * updated once the array is allocated and there's a write against the
 * pin.
 *
 * Note that the vector field is only cached for raw RTE writes when
 * using IR.  In that case the vector field might have been repurposed
 * to store something different than the target vector, and hence need
 * to be cached for performing EOI.
 */

> > @@ -273,6 +293,13 @@ void __ioapic_write_entry(
> >      {
> >          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
> >          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> > +        /*
> > +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
> > +         * Entry will be updated once the array is allocated and there's a
> > +         * write against the pin.
> > +         */
> > +        if ( io_apic_pin_eoi )
> > +            io_apic_pin_eoi[apic][pin] = e.vector;
> 
> The comment here looks a little misleading to me. clear_IO_APIC_pin() calls
> here to, in particular, set the mask bit. With the mask bit the vector isn't
> meaningful anyway (and indeed clear_IO_APIC_pin() sets it to zero, at which
> point recording IRQ_VECTOR_UNASSIGNED might be better than the bogus vector
> 0x00).

Note that clear_IO_APIC_pin() performs the call to
__ioapic_write_entry() with raw == false, at which point
__ioapic_write_entry() will call iommu_update_ire_from_apic() if IOMMU
IR is enabled.  The cached 'vector' value will be the IOMMU entry
offset for the AMD-Vi case, as the IOMMU code will perform the call to
__ioapic_write_entry() with raw == true.

What matters is that the cached value matches what's written in the
IO-APIC RTE, and the current logic ensures this.

What's the benefit of using IRQ_VECTOR_UNASSIGNED if the result is
reading the RTE and finding that vector == 0?

Looking at clear_IO_APIC_pin() - I think the function is slightly
bogus.  If entry.trigger is not set, the logic to switch the entry to
level triggered  will fetch the entry contents without requesting a
raw RTE, at which point the entry.vector field can not be used as
the EOI handle since it will contain the vector, not the IR table
offset.  I will need to make a further patch to fix this corner
case.

> > @@ -298,9 +325,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
> >      /* Prefer the use of the EOI register if available */
> >      if ( ioapic_has_eoi_reg(apic) )
> >      {
> > +        if ( io_apic_pin_eoi )
> > +            vector = io_apic_pin_eoi[apic][pin];
> > +
> >          /* If vector is unknown, read it from the IO-APIC */
> >          if ( vector == IRQ_VECTOR_UNASSIGNED )
> > +        {
> >              vector = __ioapic_read_entry(apic, pin, true).vector;
> 
> Related to my comment higher up regarding vector vs EOI handle: Here we're
> doing a raw read, i.e. we don't really fetch the vector but the EOI handle
> in the AMD case. Why is it that this isn't sufficient for directed EOI to
> work (perhaps with the conditional adjusted)?

It is enough, but we don't want to be doing such read for each EOI,
hence why we cache it in io_apic_pin_eoi.

> Then again - are we ever taking this path? Certainly not when coming from
> clear_IO_APIC_pin(), hence ...
> 
> > +            if ( io_apic_pin_eoi )
> 
> ... I'm unconvinced this conditional is needed.

Hm, maybe.  I can adjust but seems more fragile to trigger a
dereference for the extra cost of a conditional in what should be a
non-common path anyway.

> > +                /* Update cached value so further EOI don't need to fetch it. */
> > +                io_apic_pin_eoi[apic][pin] = vector;
> > +        }
> >  
> >          *(IO_APIC_BASE(apic)+16) = vector;
> >      }
> > @@ -1022,8 +1057,27 @@ static void __init setup_IO_APIC_irqs(void)
> >  
> >      apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
> >  
> > +    if ( iommu_intremap )
> > +    {
> > +        io_apic_pin_eoi = xmalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
> 
> Nit: Strictly speaking this and ...
> 
> > +        BUG_ON(!io_apic_pin_eoi);
> > +    }
> > +
> >      for (apic = 0; apic < nr_ioapics; apic++) {
> > -        for (pin = 0; pin < nr_ioapic_entries[apic]; pin++) {
> > +        const unsigned int nr_entries = nr_ioapic_entries[apic];
> > +
> > +        if ( iommu_intremap )
> > +        {
> > +            io_apic_pin_eoi[apic] = xmalloc_array(typeof(**io_apic_pin_eoi),
> > +                                                  nr_entries);
> 
> ... and this should be xvmalloc_array() in new code.

Sorry, didn't notice we have that now.

> Also this 2nd conditional may better use io_apic_pin_eoi, such that the two
> conditionals don't need keeping in sync. Note also how Andrew previously
> pointed out that both conditionals aren't Misra-compliant right now.

Oh, yes, completely forgot to adjust the MISRA comment from Andrew,
sorry.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 17:53:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 17:53:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827773.1242477 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qPQ-0002UN-4Z; Tue, 29 Oct 2024 17:53:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827773.1242477; Tue, 29 Oct 2024 17:53: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 1t5qPQ-0002UG-1B; Tue, 29 Oct 2024 17:53:36 +0000
Received: by outflank-mailman (input) for mailman id 827773;
 Tue, 29 Oct 2024 17: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=H/ws=RZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t5qPP-0002UA-BP
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 17:53: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 b54c1b0b-961e-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 18:53:30 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a2209bd7fso869436566b.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 10:53:30 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f297a29sm494833066b.132.2024.10.29.10.53.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 10:53:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b54c1b0b-961e-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzQiLCJoZWxvIjoibWFpbC1lajEteDYzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImI1NGMxYjBiLTk2MWUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjI0NDEwLjg1MDAyOCwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730224410; x=1730829210; 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=i1NIanbQfgD7seQyRSl+grvoN89gakQiWgWhUCjCdxA=;
        b=AvaZVx5cICBMpjNdu+X3lhw0gentv2YrWkNBQRm75FhpC/Cd7jKi46gWAqJPDM+vQ5
         0BXZsPNS0jppY1hEhStY9Ac2brn9CWQYhkYJ4X+qKMLBoSUjjCIjt5qpxHOICh0042Gb
         22YHbwpheLm7dxyN+W1G5fvwEBhtneYGnKGtFQo2GuayCKnHG5kD07pGWj6RbbD67t0h
         r99M0ZmZO3VR7bQ6jZhGAL2uimDPgocSTcyODJhAcCjXITC95bRek+0oInFzfCm0DGIT
         BUDVfwihDHletczp80YlaRfP3+LpzMBfyP+Lgl14WXV7JUeNLnrXQV4SWXXOTRb1sfj3
         MX8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730224410; x=1730829210;
        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=i1NIanbQfgD7seQyRSl+grvoN89gakQiWgWhUCjCdxA=;
        b=Qhub0XVOQJTK/Ig0jurlOjNKyeCKV5FPHHkV+G8XLcl5ayrGVL2lt84xEmum/51PXr
         jJqfTfb+9sd0Avy0ulFOKBB8gsiw0iGjdB/UJUfe/cZCU4Zzzl61K0URpbhgphLnZFqr
         P+p+HqkCSYNlE4eGEg3A8VSE7N4QodPJZkC3zPBTtYLHW3qor/NbsvExYmTzmWzUC9N4
         vhz9dvJfnFbOAvxw3bhCHoztVVqbyos2Q89vupjte1H/aHCZFxDLNYtYqXfwGam0OexV
         ldEIfn1z5aJZDrzn8UVZL42LJmo91KVsN52SFANIatUfnuRNh7H/yeFnlrhpmQBFPWhn
         UERA==
X-Forwarded-Encrypted: i=1; AJvYcCXbQklSNgmgOBhTzXSti9QTy/aBE1tgLLlYEswXmUuB1hJHXSCimUGr6FHqoL+g4R+LGQ7pKmO7138=@lists.xenproject.org
X-Gm-Message-State: AOJu0YySoLEsM0d9Xh3d9Ye8LbET5P5xjJJq9sx1esZ6Y4E9xnvwrt8i
	Ydu5t9wx/0PqLrery1W5D7w4JpT/QIfA1aLCePjdcehU9F1+nJ66
X-Google-Smtp-Source: AGHT+IEjvGRWSEyWjUENGzqPcVkS1/O5cTYN6bIhBwhXvQftHawVtEHPw8DSylTjOdCGH++O8WzVmg==
X-Received: by 2002:a17:907:1a4e:b0:a9a:2523:b4ce with SMTP id a640c23a62f3a-a9de5c91985mr701140766b.6.1730224410000;
        Tue, 29 Oct 2024 10:53:30 -0700 (PDT)
Message-ID: <c6825b4530e771dcc5393609cd147f34b3e120b3.camel@gmail.com>
Subject: Re: [PATCH v1] xen/common: move gic_preinit() to common code
From: 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>, 
 xen-devel@lists.xenproject.org
Date: Tue, 29 Oct 2024 18:53:29 +0100
In-Reply-To: <a5539c03-4e19-4739-95cf-439aa0bea9a3@suse.com>
References: 
	<b1ded26dcebf9a3228fe4062825273720e0c59fe.1730220384.git.oleksii.kurochko@gmail.com>
	 <a5539c03-4e19-4739-95cf-439aa0bea9a3@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40app2) 
MIME-Version: 1.0

On Tue, 2024-10-29 at 17:57 +0100, Jan Beulich wrote:
> On 29.10.2024 17:47, Oleksii Kurochko wrote:
> > --- a/xen/common/device.c
> > +++ b/xen/common/device.c
> > @@ -4,10 +4,14 @@
> > =C2=A0 *=C2=A0=C2=A0 xen/arch/arm/device.c
> > =C2=A0 */
> > =C2=A0
> > +#include <xen/acpi.h>
> > =C2=A0#include <xen/bug.h>
> > =C2=A0#include <xen/device_tree.h>
> > =C2=A0#include <xen/errno.h>
> > =C2=A0#include <xen/init.h>
> > +#include <xen/kernel.h>
> > +#include <xen/lib.h>
> > +#include <xen/types.h>
>=20
> I don't think non-ACPI configs should include xen/acpi.h here. Surely
> this
> can be moved down into the ACPI-only code section?
>=20
> > @@ -56,6 +60,40 @@ enum device_class device_get_class(const struct
> > dt_device_node *dev)
> > =C2=A0=C2=A0=C2=A0=C2=A0 return DEVICE_UNKNOWN;
> > =C2=A0}
> > =C2=A0
> > +static void __init ic_dt_preinit(void)
> > +{
> > +=C2=A0=C2=A0=C2=A0 struct dt_device_node *node;
> > +=C2=A0=C2=A0=C2=A0 uint8_t num_gics =3D 0;
> > +
> > +=C2=A0=C2=A0=C2=A0 dt_for_each_device_node( dt_host, node )
> > +=C2=A0=C2=A0=C2=A0 {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( !dt_get_property(node,=
 "interrupt-controller", NULL)
> > )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 con=
tinue;
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( !dt_get_parent(node) )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 con=
tinue;
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if ( !device_init(node, DEV=
ICE_INTERRUPT_CONTROLLER, NULL)
> > )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* =
NOTE: Only one GIC is supported */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num=
_gics =3D 1;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 bre=
ak;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 }
> > +
> > +=C2=A0=C2=A0=C2=A0 if ( !num_gics )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 panic("Unable to find compa=
tible interrupt contoller"
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 "in the device tree\n");
> > +
> > +=C2=A0=C2=A0=C2=A0 /* Set the interrupt controller as the primary inte=
rrupt
> > controller */
> > +=C2=A0=C2=A0=C2=A0 dt_interrupt_controller =3D node;
> > +=C2=A0=C2=A0=C2=A0 dt_device_set_used_by(node, DOMID_XEN);
> > +}
> > +
> > +#else /* !CONFIG_HAS_DEVICE_TREE */
> > +
> > +static void __init ic_dt_preinit(void) { }
> > +
> > =C2=A0#endif
>=20
> While for DT I can only guess that the IC is common across platforms,
> ...
>=20
> > @@ -79,4 +117,31 @@ int __init acpi_device_init(enum device_class
> > class, const void *data, int class
> > =C2=A0=C2=A0=C2=A0=C2=A0 return -EBADF;
> > =C2=A0}
> > =C2=A0
> > +static void __init ic_acpi_preinit(void)
> > +{
> > +=C2=A0=C2=A0=C2=A0 struct acpi_subtable_header *header;
> > +=C2=A0=C2=A0=C2=A0 struct acpi_madt_generic_distributor *dist;
> > +
> > +=C2=A0=C2=A0=C2=A0 header =3D
> > acpi_table_get_entry_madt(ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, 0);
> > +=C2=A0=C2=A0=C2=A0 if ( !header )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 panic("No valid interrupt c=
ontroller entries exists\n");
> > +
> > +=C2=A0=C2=A0=C2=A0 dist =3D container_of(header, struct
> > acpi_madt_generic_distributor, header);
> > +
> > +=C2=A0=C2=A0=C2=A0 if ( acpi_device_init(DEVICE_INTERRUPT_CONTROLLER, =
NULL, dist-
> > >version) )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 panic("Unable to find compa=
tible interrupt controller"
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 "in the ACPI table\n");
> > +}
> > +#else /* !CONFIG_ACPI */
> > +
> > +static void __init ic_acpi_preinit(void) { }
> > +
> > =C2=A0#endif
>=20
> ... simply deriving from x86 (and IA-64) it's clear it isn't for
> ACPI. I'm
> therefore unconvinced placing this in common code is appropriate.
Agree, I don't check acpi_madt_generic_distributor and it is ARM
specific so I will drop it and leave only DT part.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 17:55:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 17:55:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827778.1242487 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qR3-00032G-EI; Tue, 29 Oct 2024 17:55:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827778.1242487; Tue, 29 Oct 2024 17: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 1t5qR3-000329-BS; Tue, 29 Oct 2024 17:55:17 +0000
Received: by outflank-mailman (input) for mailman id 827778;
 Tue, 29 Oct 2024 17:55: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5qR2-000321-He
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 17:55:16 +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 f010a9cc-961e-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 18:55:09 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c9150f9ed4so7394016a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 10:55:09 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f298dc4sm492024866b.124.2024.10.29.10.55.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 10:55:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f010a9cc-961e-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmQiLCJoZWxvIjoibWFpbC1lZDEteDUyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImYwMTBhOWNjLTk2MWUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI0NTA5LjQyMDM3OSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730224508; x=1730829308; 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=6BbM7rIsfqQ52N4fxzS/e+HPw8oF6QxWBr66WOwuncM=;
        b=Ohm34SP50Q6cWUVmFthjPRLyeG52WcNwWzZeUe7/IX3f6JW+r/3OT4N/w7e10U3KUq
         gF7i4Z1vzJmr+zR5v2A6p/EwtrvZrM22KxOeJvJ8WCSr4x4gHDJPpiMWTjUzdSOyfpBW
         GG1nDIDQOQYriRT9tDJSZ52tojTg/pcC4B0u8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730224508; x=1730829308;
        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=6BbM7rIsfqQ52N4fxzS/e+HPw8oF6QxWBr66WOwuncM=;
        b=Jom6Y6f8SdPFRwAAy8n5FyDl/XVxqu1pBAvvIhZJ11Tj4IK+pIOXhvC66Sik4xpBHL
         PuxaMI5QuwuYYDcCrM/i8ThKbY0p/LAYuNbzauBLK+78W8/8dTHU1sxYOg8pRCsy2Hkk
         JfoCazoo/RnAANYF6hj0v0OyjH/2lTolAp2U4KmBPmUBzPRNEUA7uPw/GA3/GQFaXK0T
         lTjF3Hck9FjevvHl+n4CPmIOn3V6aHwqoeqiwj7O37OzNUoJI+zcTjl8xSCdGFRgsnS5
         fVtIn6tGSIipUGoYKr2DD+gnb1lX0k4WsBYehbmnAcvblnBQvRgFkPTQ7i29yBLQlAcL
         pFrw==
X-Gm-Message-State: AOJu0YzfdKvijHr8nQesLgRaxo7Qw0CaxZoE57uyQPWI9GRvj29vmbhY
	6VpDZL4pE/LpYNefZ/QHzvxU/E1cL+lq1kdxEBdyrhMDc/D313pwgTZwKaJycyNeCvR6EDHAWXv
	4
X-Google-Smtp-Source: AGHT+IEg7lSIABLWHp/uw50QoWD0z1BwMuRDbMkHCOcEo1M3MJqVQG4Svh0AYshqwL5vbQZcQYRFcA==
X-Received: by 2002:a17:907:6eac:b0:a9a:7f91:8c76 with SMTP id a640c23a62f3a-a9de5a3e0ebmr1386332666b.0.1730224507968;
        Tue, 29 Oct 2024 10:55:07 -0700 (PDT)
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>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: [PATCH] x86/cpu-policy: Extend the guest max policy max leaf/subleaves
Date: Tue, 29 Oct 2024 17:55:05 +0000
Message-Id: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We already have one migration case opencoded (feat.max_subleaf).  A more
recent discovery is that we advertise x2APIC to guests without ensuring that
we provide max_leaf >= 0xb.

In general, any leaf known to Xen can be safely configured by the toolstack if
it doesn't violate other constraints.

Therefore, introduce guest_common_{max,default}_leaves() to generalise the
special case we currently have for feat.max_subleaf, in preparation to be able
to provide x2APIC topology in leaf 0xb even on older hardware.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Alejandro Vallejo <alejandro.vallejo@cloud.com>

On a KabyLake I have to hand, here's the delta in what xen-cpuid -p reports:

  git diff --no-index xen-cpuid-p-{before,after}.log
  diff --git a/xen-cpuid-p-before.log b/xen-cpuid-p-after.log
  index 5a76d05..24e22be 100644
  --- a/xen-cpuid-p-before.log
  +++ b/xen-cpuid-p-after.log
  @@ -61,7 +61,7 @@ Host policy: 33 leaves, 2 MSRs
     index    -> value
     000000ce -> 0000000080000000
     0000010a -> 000000000e000c04
  -PV Max policy: 33 leaves, 2 MSRs
  +PV Max policy: 58 leaves, 2 MSRs
    CPUID:
     leaf     subleaf  -> eax      ebx      ecx      edx
     00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
  @@ -75,7 +75,7 @@ PV Max policy: 33 leaves, 2 MSRs
     0000000d:00000000 -> 00000007:00000000:00000340:00000000
     0000000d:00000001 -> 00000007:00000000:00000000:00000000
     0000000d:00000002 -> 00000100:00000240:00000000:00000000
  -  80000000:ffffffff -> 80000008:00000000:00000000:00000000
  +  80000000:ffffffff -> 80000021:00000000:00000000:00000000
     80000001:ffffffff -> 00000000:00000000:00000123:28100800
     80000002:ffffffff -> 65746e49:2952286c:6f655820:2952286e
     80000003:ffffffff -> 55504320:2d334520:30333231:20367620
  @@ -87,7 +87,7 @@ PV Max policy: 33 leaves, 2 MSRs
     index    -> value
     000000ce -> 0000000080000000
     0000010a -> 000000001c020004
  -HVM Max policy: 35 leaves, 2 MSRs
  +HVM Max policy: 60 leaves, 2 MSRs
    CPUID:
     leaf     subleaf  -> eax      ebx      ecx      edx
     00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
  @@ -103,7 +103,7 @@ HVM Max policy: 35 leaves, 2 MSRs
     0000000d:00000002 -> 00000100:00000240:00000000:00000000
     0000000d:00000003 -> 00000040:000003c0:00000000:00000000
     0000000d:00000004 -> 00000040:00000400:00000000:00000000
  -  80000000:ffffffff -> 80000008:00000000:00000000:00000000
  +  80000000:ffffffff -> 80000021:00000000:00000000:00000000
     80000001:ffffffff -> 00000000:00000000:00000123:2c100800
     80000002:ffffffff -> 65746e49:2952286c:6f655820:2952286e
     80000003:ffffffff -> 55504320:2d334520:30333231:20367620
---
 xen/arch/x86/cpu-policy.c | 39 +++++++++++++++++++++++++--------------
 1 file changed, 25 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index b6d9fad56773..78bc9872b09a 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
     p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
 }
 
+/*
+ * Guest max policies can have any max leaf/subleaf within bounds.
+ *
+ * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
+ * - Some VMs we'd like to synthesise leaves not present on the host.
+ */
+static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
+}
+
+/* Guest default policies inherit the host max leaf/subleaf settings. */
+static void __init guest_common_default_leaves(struct cpu_policy *p)
+{
+    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
+    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
+    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
+}
+
 static void __init guest_common_max_feature_adjustments(uint32_t *fs)
 {
     if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
@@ -579,11 +600,7 @@ static void __init calculate_pv_max_policy(void)
 
     *p = host_cpu_policy;
 
-    /*
-     * Some VMs may have a larger-than-necessary feat max_subleaf.  Allow them
-     * to migrate in.
-     */
-    p->feat.max_subleaf = ARRAY_SIZE(p->feat.raw) - 1;
+    guest_common_max_leaves(p);
 
     x86_cpu_policy_to_featureset(p, fs);
 
@@ -626,8 +643,7 @@ static void __init calculate_pv_def_policy(void)
 
     *p = pv_max_cpu_policy;
 
-    /* Default to the same max_subleaf as the host. */
-    p->feat.max_subleaf = host_cpu_policy.feat.max_subleaf;
+    guest_common_default_leaves(p);
 
     x86_cpu_policy_to_featureset(p, fs);
 
@@ -666,11 +682,7 @@ static void __init calculate_hvm_max_policy(void)
 
     *p = host_cpu_policy;
 
-    /*
-     * Some VMs may have a larger-than-necessary feat max_subleaf.  Allow them
-     * to migrate in.
-     */
-    p->feat.max_subleaf = ARRAY_SIZE(p->feat.raw) - 1;
+    guest_common_max_leaves(p);
 
     x86_cpu_policy_to_featureset(p, fs);
 
@@ -790,8 +802,7 @@ static void __init calculate_hvm_def_policy(void)
 
     *p = hvm_max_cpu_policy;
 
-    /* Default to the same max_subleaf as the host. */
-    p->feat.max_subleaf = host_cpu_policy.feat.max_subleaf;
+    guest_common_default_leaves(p);
 
     x86_cpu_policy_to_featureset(p, fs);
 

base-commit: 56bd76925ec35085528d778e46123b9d10a66018
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 17:57:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 17:57:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827786.1242497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qTC-0003cu-R2; Tue, 29 Oct 2024 17:57:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827786.1242497; Tue, 29 Oct 2024 17:57: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 1t5qTC-0003cn-NK; Tue, 29 Oct 2024 17:57:30 +0000
Received: by outflank-mailman (input) for mailman id 827786;
 Tue, 29 Oct 2024 17:57: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5qTB-0003bm-DP
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 17:57: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 3fea534f-961f-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 18:57:23 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a99ebb390a5so15465666b.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 10:57:23 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3099ddb9sm501707866b.173.2024.10.29.10.57.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 10:57:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3fea534f-961f-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzMiLCJoZWxvIjoibWFpbC1lajEteDYzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjNmZWE1MzRmLTk2MWYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI0NjQzLjM4ODk4OSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730224643; x=1730829443; 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=SGquy4qsXIxlXzEhgck8ihfwMyUIyyJLzuYFK7f66PQ=;
        b=tDHcpF1HRruyOL94xwIIMGEaHQg4GIm38bckj1hLDbg36lzsZKULxn7H0c/M6FuXLe
         FV7pu9K2Y6M0ieGc8caldsUkCNhr5oaCayfBkTBiZi7uvB0dau/QYqjr30XRcQN3Jpry
         9U53e0sBaDl+tw3ljlFEHIsEIC37XUMNAluDE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730224643; x=1730829443;
        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=SGquy4qsXIxlXzEhgck8ihfwMyUIyyJLzuYFK7f66PQ=;
        b=GeimVOLKs9gFPm7lx7tjuPVJYiu8dSh6lxlZ0OvApiWcjbFiS74e1BMw7x52Hg4hwx
         RQrkkyVutMBkvNvdmmV4QzU/34xgkI34xR5wZ5dvJfwIkpFwka+FMqi0sbB+J7fKv/EX
         ZMZrhQ55DekfbJzlvnsc0repZk6DLW1BpDiSNXrTD+QWDq+MBdYvH8gwhAA6rVo4COEj
         FjILakORBz6QojXw9a2yy1l5RG3rOuEdbQyuKt01vUkYPvCATe3W6SraqcdvGB07dA7P
         wUyQIHDHzwCWklzRoLZvhBY3NSKK3IvawqFFifIwktI6CVy1Cn5M26s0KX8YdBVn3G+c
         fpnQ==
X-Forwarded-Encrypted: i=1; AJvYcCWnK4WeN6RjqNLh2qlZZjjadXCZeL1NnoIXuqJqU5dyV0lGg1oYDFFm3wHmHTeVxgU/3OrqlTma90A=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yygy+NH3lIugX3x1j/H3j8f4kbS3bRdBKK/3zJMtBpznZAAOeuY
	lUrk0Bv/xQ51B0QApN9R0fo2zPb/v4NBBBR5IU4xmvIUxwAzAVRCOtiCQa4Eb7Q=
X-Google-Smtp-Source: AGHT+IGqD7qGkv75II1/XZbqnBTa+oiax+/5n9l5BuE+YuT7RKKoty75VmH2iZhh86+JHA1xWV/IHQ==
X-Received: by 2002:a17:907:8f08:b0:a9a:60b0:a8e7 with SMTP id a640c23a62f3a-a9e2b34b2d6mr233536166b.2.1730224642786;
        Tue, 29 Oct 2024 10:57:22 -0700 (PDT)
Message-ID: <f837a2db-556b-4e18-8f8a-898b6632bc39@citrix.com>
Date: Tue, 29 Oct 2024 17:57:20 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 01/10] lib/x86: Bump max basic leaf in
 {pv,hvm}_max_policy
To: Alejandro Vallejo <alejandro.vallejo@cloud.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: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-2-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021154600.11745-2-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
> Bump it to ARRAY_SIZE() so toolstack is able to extend a policy past
> host limits (i.e: to emulate a feature not present in the host)
>
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> ---
> v7:
>   * Replaces v6/patch1("Relax checks about policy compatibility")
>   * Bumps basic.max_leaf to ARRAY_SIZE(basic.raw) to pass the
>     compatibility checks rather than tweaking the checker.
> ---
>  xen/arch/x86/cpu-policy.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> index b6d9fad56773..715a66d2a978 100644
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -585,6 +585,9 @@ static void __init calculate_pv_max_policy(void)
>       */
>      p->feat.max_subleaf = ARRAY_SIZE(p->feat.raw) - 1;
>  
> +    /* Toolstack may populate leaves not present in the basic host leaves */
> +    p->basic.max_leaf = ARRAY_SIZE(p->basic.raw) - 1;
> +
>      x86_cpu_policy_to_featureset(p, fs);
>  
>      for ( i = 0; i < ARRAY_SIZE(fs); ++i )
> @@ -672,6 +675,9 @@ static void __init calculate_hvm_max_policy(void)
>       */
>      p->feat.max_subleaf = ARRAY_SIZE(p->feat.raw) - 1;
>  
> +    /* Toolstack may populate leaves not present in the basic host leaves */
> +    p->basic.max_leaf = ARRAY_SIZE(p->basic.raw) - 1;
> +
>      x86_cpu_policy_to_featureset(p, fs);
>  
>      mask = hvm_hap_supported() ?

This sadly doesn't do what you want.  It leaves the default policy with
extended limits too.

To unblock the work (which is long overdue), here's one I prepared
earlie^W just now.

https://lore.kernel.org/xen-devel/20241029175505.2698661-1-andrew.cooper3@citrix.com/T/#u

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:17:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:17:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827798.1242536 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qmC-0008Jj-1D; Tue, 29 Oct 2024 18:17:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827798.1242536; Tue, 29 Oct 2024 18:17: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 1t5qmB-0008JZ-Uc; Tue, 29 Oct 2024 18:17:07 +0000
Received: by outflank-mailman (input) for mailman id 827798;
 Tue, 29 Oct 2024 18:17: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qmA-0007bP-Ja
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:17:06 +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 fff2a356-9621-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 19:17:04 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5c96b2a10e1so8915022a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:17:04 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm4110171a12.70.2024.10.29.11.17.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 11:17:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fff2a356-9621-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmQiLCJoZWxvIjoibWFpbC1lZDEteDUyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImZmZjJhMzU2LTk2MjEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI1ODI0LjU0MDE3Miwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730225824; x=1730830624; 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=NHAv65UQuL06AhRkdwzzFlLaL52D2s2KboSCcDG7zeM=;
        b=TArfiwbS9nbsL7F+MRQ3vbeYPKAzRQotIeRXeO9srWia2lNA7Ej0rNKVtt6EmjtxiR
         ZsUua7gJvYV4a6ZFZy7KtuZmOBC4n2qUnTFwBJa6Pu+yy/ZJJ7kZF4CVmtOHvSFKs+sE
         seJqoB8a6gq0j76cVfOwlDxUvM5obcL2y6J0U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730225824; x=1730830624;
        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=NHAv65UQuL06AhRkdwzzFlLaL52D2s2KboSCcDG7zeM=;
        b=To7tI4qx0tf3gHQns3JU/jheov2bHwPLrOpo1opHWuLrdR/3nIfJMilg9ISegTnHMF
         GvWceJ7R00S8OVjFKfJL0vxCsyII2vG14FnWxV2HgqCs94X8kwE5zq3vHoOnczhPh334
         IW7Pt1HS+7CdLa4Dgu3geayH91pccsv9ITkXudH5MOpNwcXiUfqh/qu8Lm8LVaLWh6s9
         +Jc/uPLviz8O1GgdS0gR0q1OT+5k40Cv1ifJZhxvgrOJrULmdPUSLb47GupEeu4/E0iN
         dXtgjsrXGLwRTiL+WjbekmNGzBrXEkwOJ4oDVvARDXBPAiyxk9cl3tbnISJMe7SSLwIk
         ODtA==
X-Gm-Message-State: AOJu0YwD1cdUi5W1RmqRQx8Vzww4YgugCZsWBweol6ejMkY6555wwmke
	trIh/5X4CskDUf3dXupJBTkBkGuhzdY6xUCWNfC0KWddlW8awEhvKp4bDlLzMHJe68BYcQLdRnI
	P
X-Google-Smtp-Source: AGHT+IErQd444FdPqZO2+7ts6pDj6/aAmff0PJVyNCwIPnwZmCmruAN8E3QKWv8wfFL/vcBlkv5XmQ==
X-Received: by 2002:a05:6402:3513:b0:5cb:6272:1585 with SMTP id 4fb4d7f45d1cf-5cbbfa786d2mr11002803a12.32.1730225823743;
        Tue, 29 Oct 2024 11:17:03 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>,
	Anthony PERARD <anthony.perard@vates.tech>
Subject: [RFC PATCH 3/6] tools/ocaml: Rename grant_opts to grant_version
Date: Tue, 29 Oct 2024 18:16:29 +0000
Message-ID: <20241029181632.69600-4-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

... and remove the macros that no longer exist.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/ocaml/libs/xc/xenctrl_stubs.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c
index c78191f95abc..c4d34ca48753 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -223,8 +223,7 @@ CAMLprim value stub_xc_domain_create(value xch_val, value wanted_domid, value co
 		.max_evtchn_port = Int_val(VAL_MAX_EVTCHN_PORT),
 		.max_grant_frames = Int_val(VAL_MAX_GRANT_FRAMES),
 		.max_maptrack_frames = Int_val(VAL_MAX_MAPTRACK_FRAMES),
-		.grant_opts =
-		    XEN_DOMCTL_GRANT_version(Int_val(VAL_MAX_GRANT_VERSION)),
+		.grant_version = Int_val(VAL_MAX_GRANT_VERSION),
 		.altp2m_opts = Int32_val(VAL_ALTP2M_OPTS),
 		.vmtrace_size = vmtrace_size,
 		.cpupool_id = Int32_val(VAL_CPUPOOL_ID),
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:17:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:17:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827796.1242518 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qm9-0007pk-Jf; Tue, 29 Oct 2024 18:17:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827796.1242518; Tue, 29 Oct 2024 18:17: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 1t5qm9-0007pd-FX; Tue, 29 Oct 2024 18:17:05 +0000
Received: by outflank-mailman (input) for mailman id 827796;
 Tue, 29 Oct 2024 18: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qm8-0007bP-4v
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:17:04 +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 fe089983-9621-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 19:17:01 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2fb5a9c7420so54493031fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:17:01 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm4110171a12.70.2024.10.29.11.16.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 11:16:59 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fe089983-9621-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmEiLCJoZWxvIjoibWFpbC1sajEteDIyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImZlMDg5OTgzLTk2MjEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI1ODIxLjI2Nzg1LCJzZW5kZXIiOiJhbGVqYW5kcm8udmFsbGVqb0BjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730225820; x=1730830620; 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=TYiBaICmKjMQAw+x0zvFUjtQo2tj3LsRH3e85w48BTg=;
        b=UEGRIssyRtaXdu7ByOv36Cu0gO+fUaZNTmAX5GZ/dlGUAZ6UmA19xL9ezHpvyLztpx
         CTBuh0bgI2sijpdrUsCsLtK94oS8LGLsZr1dO/2J4u/1oJPRVVOZ1FO2vuywuw0wWo3+
         UYvKLb3outKP23d/YCDKFo4ipHVIjdrTE6Guo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730225820; x=1730830620;
        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=TYiBaICmKjMQAw+x0zvFUjtQo2tj3LsRH3e85w48BTg=;
        b=am+BiYxdlvzthCpHzdpOI1n5Qy3TcJt0bb5WJocZNLU4goe6U9vogUabmPE/8tE5tn
         qEF/7aMaEepJN5+JagIRBYYCqzcjERevZVf+YAXVzR3YcLjFFz7RNF1SgdrwC2StAK6T
         QfZnq2d4a9byng78bPc1Ylq+oWdEjQpZquk7aNFEOgQBIWPYPjAD8X3z3j5IDIEi/RLh
         IwgOZJLdXeVAmXh27/HWEe9jl3Av9f4c4Z7bcNRlZ56Hwd3E5LfUK03Q2umrHt+/tgoG
         oMf96BgPmiSwL7E83k4JluyCdvHnQ22fgyTGNvWM0eXuK5n5+jcNZmVNcumCVFCYslqY
         SQww==
X-Gm-Message-State: AOJu0YyjIfAnzf4mwvR3I6bzDBtQM3uImhK23/rEiPb12OjxXN7EB2k/
	5rAcYVgFDNK2wQdqlnbce5roO6tvmA0JZanifIY23fNVFJvAxh4VC5PH5UEApyNartebWt40Gwr
	H
X-Google-Smtp-Source: AGHT+IHiH+WTS6e+1lzB3olW6ZDDUckMSuVBvpNDyrGNIcUwkJmLNUQNZY+BMzTWDMVji81H8BGkSg==
X-Received: by 2002:a2e:e02:0:b0:2fc:9622:794b with SMTP id 38308e7fff4ca-2fcbdfeaef3mr45935681fa.24.1730225820254;
        Tue, 29 Oct 2024 11:17:00 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH 1/6] xen/domctl: Refine grant_opts into grant_version
Date: Tue, 29 Oct 2024 18:16:27 +0000
Message-ID: <20241029181632.69600-2-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

grant_opts is overoptimizing for space packing in a hypercall that
doesn't warrant the effort. Tweak the ABI without breaking it in order
to remove the bitfield by extending it to 8 bits.

Xen only supports little-endian systems, so the transformation from
uint32_t to uint8_t followed by 3 octets worth of padding is not an ABI
breakage.

No functional change

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/include/public/domctl.h | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index 353f831e402e..b3c8271e66ba 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -90,11 +90,18 @@ struct xen_domctl_createdomain {
     int32_t max_grant_frames;
     int32_t max_maptrack_frames;
 
-/* Grant version, use low 4 bits. */
-#define XEN_DOMCTL_GRANT_version_mask    0xf
-#define XEN_DOMCTL_GRANT_version(v)      ((v) & XEN_DOMCTL_GRANT_version_mask)
+    /*
+     * Maximum grant table version the domain can be configured with.
+     *
+     * Domains always start with v1 (if CONFIG_GRANT_TABLE) and can be bumped
+     * to use up to `max_grant_version` via GNTTABOP_set_version.
+     *
+     * Must be zero iff !CONFIG_GRANT_TABLE.
+     */
+    uint8_t max_grant_version;
 
-    uint32_t grant_opts;
+    /* Unused */
+    uint8_t rsvd0[3];
 
 /*
  * Enable altp2m mixed mode.
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:17:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:17:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827795.1242508 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qm8-0007bi-Dd; Tue, 29 Oct 2024 18:17:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827795.1242508; Tue, 29 Oct 2024 18: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 1t5qm8-0007ba-8w; Tue, 29 Oct 2024 18:17:04 +0000
Received: by outflank-mailman (input) for mailman id 827795;
 Tue, 29 Oct 2024 18:17: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qm7-0007Zv-48
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:17:03 +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 fc9d3b0f-9621-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 19:16:59 +0100 (CET)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5cb6704ff6bso7531530a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:16:58 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm4110171a12.70.2024.10.29.11.16.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 11:16:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc9d3b0f-9621-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzUiLCJoZWxvIjoibWFpbC1lZDEteDUzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImZjOWQzYjBmLTk2MjEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjI1ODE5LjAwNjM0Nywic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730225818; x=1730830618; 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=/T9kZhXn8LdWqYIydkfjKOCaQzwUJXZp/sc6bYGC0pQ=;
        b=LQjH8R7smF5U2Euth7CfAYlZewszKC3XXE37EPqqfV0V4W5HTkUsA/XpXOYDWAsOKC
         SUjBYu1mukASrd/jAscczGdd1cVms1F53GJikHvXLba7GBGI/DCj4V5kyCmaDvqey7DN
         NtB2N2milXaEKmwd9Yv7xQ5zq5BOwmWczsdI0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730225818; x=1730830618;
        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=/T9kZhXn8LdWqYIydkfjKOCaQzwUJXZp/sc6bYGC0pQ=;
        b=ev2tMpVeLFssaEhF+mRRKFhmtsPTsinlokb/2EW9y2kvI6uikw6ghCJL2otVioCGTQ
         KnAhQl88wFKV1qd0/2NUhbnDcf4JlzJ52G0arZgmB1KbAXgdwbROLGioP4WETN8rXJ4+
         ULc1Z/1gMVwK1r38OP7kvjW+G/KTmUwOC1UaCmqk7Q9UAGhwxxa4+Dht0znbluoPD8RJ
         xBgzx2LdFxH94Rspn9wfFmq92yEp5KPJaWYNtndL2OdnMxx/wZzKESjiP+5F6XyyTv2o
         bEjwzTby8LPM0drH1RgXgGhgbHp8FunvwMIf3nHJdwnSDnXIjf3mxMWv4763USj3PRke
         748g==
X-Gm-Message-State: AOJu0YwLKarumOmAm6jZod8cZK/E7oPZwT0bWrk5w1xjmjqdNdscjNNw
	VKW/fdxXIphGOQalG4Qu4XPLObfK2s6NNKA6jinPzPEejn/q2VGUyj3gyzExxT12Kuvno1+DME5
	Z
X-Google-Smtp-Source: AGHT+IGUR8IA9H8BwQzBGJm8HmczWrC/r7VBq3AXXpYpKG2TW/91JsUVBPCkzxzULOwpFy+xKy7OZw==
X-Received: by 2002:a05:6402:2710:b0:5c9:1d7f:4fd9 with SMTP id 4fb4d7f45d1cf-5cbbf8a41e0mr10892793a12.8.1730225818164;
        Tue, 29 Oct 2024 11:16:58 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.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>
Subject: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive types
Date: Tue, 29 Oct 2024 18:16:26 +0000
Message-ID: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Non-boolean bitfields in the hypercall ABI make it fairly inconvenient to
create bindings for any language because (a) they are always ad-hoc and are
subject to restrictions regular fields are not (b) require boilerplate that
regular fields do not and (c) might not even be part of the core language,
forcing avoidable external libraries into any sort of generic library.

This patch (it's a series merely to split roughly by maintainer) is one such
case that I happened to spot while playing around. It's the grant_version
field, buried under an otherwise empty grant_opts.

The invariant I'd like to (slowly) introduce and discuss is that fields may
have bitflags (e.g: a packed array of booleans indexed by some enumerated
type), but not be mixed with wider fields in the same primitive type. This
ensures any field containing an integer of any kind can be referred by pointer
and treated the same way as any other with regards to sizeof() and the like.

I'd like to have a certain consensus about this general point before going
establishing this restriction in the IDL system I'm working on.

My preference would be to fold everything into a single patch if we decide to
follow through with this particular case. As I said before, the split is
artificial for review.

Alejandro Vallejo (6):
  xen/domctl: Refine grant_opts into grant_version
  tools: Rename grant_opts to grant_version
  tools/ocaml: Rename grant_opts to grant_version
  xen/arm: Rename grant_opts to grant_version
  xen/x86: Rename grant_opts to grant_version
  xen/common: Rename grant_opts to grant_version

 tools/helpers/init-xenstore-domain.c             |  2 +-
 tools/libs/light/libxl_create.c                  |  2 +-
 tools/ocaml/libs/xc/xenctrl_stubs.c              |  3 +--
 tools/python/xen/lowlevel/xc/xc.c                |  2 +-
 tools/tests/paging-mempool/test-paging-mempool.c |  2 +-
 tools/tests/resource/test-resource.c             |  6 +++---
 tools/tests/tsx/test-tsx.c                       |  4 ++--
 xen/arch/arm/dom0less-build.c                    |  4 ++--
 xen/arch/arm/domain_build.c                      |  2 +-
 xen/arch/x86/setup.c                             |  2 +-
 xen/common/domain.c                              |  6 +++---
 xen/common/grant_table.c                         |  3 +--
 xen/include/public/domctl.h                      | 15 +++++++++++----
 xen/include/xen/grant_table.h                    |  4 ++--
 14 files changed, 31 insertions(+), 26 deletions(-)

-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:17:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:17:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827799.1242546 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qmE-0000Av-9M; Tue, 29 Oct 2024 18:17:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827799.1242546; Tue, 29 Oct 2024 18:17: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 1t5qmE-0000Am-6W; Tue, 29 Oct 2024 18:17:10 +0000
Received: by outflank-mailman (input) for mailman id 827799;
 Tue, 29 Oct 2024 18:17: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qmC-0007bP-Ug
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:17:08 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0134dc8a-9622-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 19:17:06 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5cbb719839eso5950714a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:17:06 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm4110171a12.70.2024.10.29.11.17.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 11:17:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0134dc8a-9622-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzIiLCJoZWxvIjoibWFpbC1lZDEteDUzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjAxMzRkYzhhLTk2MjItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI1ODI2LjY1NzEzLCJzZW5kZXIiOiJhbGVqYW5kcm8udmFsbGVqb0BjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730225826; x=1730830626; 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=4DIkzwOSItxin0RSm4lCkfpU1FM4LH2g8y9YAI95Pc8=;
        b=LWPQkooDbc1Rzb8U/Bznz0uQ0nzFVEryKj8MIYIFBXGHIYehPLI1HFDPCdTcBFkLGC
         vKo1lucA6ks0Qjd2DJ1aBzYuVm7+vJE3Sf9IY8omMn3wsHpY5a7NEFyhgWgJHZuZks7U
         BkRIPzoQh5JPnIy5EQHCoDLiFngTYLOLY6+MU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730225826; x=1730830626;
        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=4DIkzwOSItxin0RSm4lCkfpU1FM4LH2g8y9YAI95Pc8=;
        b=IMx1gJ/yies03EvG2Sphq4dq6zBBJ4N1CEw1Nh6U+rpI0IOcEn7lA4jmt0/CTgDOfv
         +62Fi54aN0xlxfh7tPtF9yxuw/c7sxwYzUeJKdCNhesjNTiCub0UJBmRf7/LJ9M9NUBl
         3vpFYhCrlxvZhrOV3fosL5TER7ff+dECwdsXo9XuzTaylZOOg2vx/HqyVxRUuy9Be1zP
         lH+enkTgwkePNc1ZApHEUpjJDMM591mUVz3aVUYgcXsRcAj5BxPWlCrHpj324OPOe/7E
         87dcAvQyTlAjm1BsNxA7XbDVqqa1gdx7rau3Gyd2ndEE04JweOvqj3ThqvYI9mRBm3ju
         lqpg==
X-Gm-Message-State: AOJu0YxhGnXB9dVwjhIdmzxJt+ZJ86cHt4SLT4WGbhUtT9atH3+xUsGt
	gCVz2oAcMzWutYC6itNrNVFYCem+DqSRFomwIBiuPSnczUc8o//HEXqPUFPqFAbRyY9znBySOcA
	C
X-Google-Smtp-Source: AGHT+IFJRSAHHq3ooBzXUB65Ql4sc0WmsWsVziKlIatVGdhVitw4IPqArerB9vD5dUkrX+NLoUavTQ==
X-Received: by 2002:a05:6402:d0d:b0:5c9:8047:def4 with SMTP id 4fb4d7f45d1cf-5cbbfac3881mr9941280a12.36.1730225825811;
        Tue, 29 Oct 2024 11:17:05 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.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: [RFC PATCH 4/6] xen/arm: Rename grant_opts to grant_version
Date: Tue, 29 Oct 2024 18:16:30 +0000
Message-ID: <20241029181632.69600-5-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

... and remove the macros that no longer exist.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/arm/dom0less-build.c | 4 ++--
 xen/arch/arm/domain_build.c   | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index f328a044e9d3..1c6219c7cc82 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -877,7 +877,7 @@ void __init create_domUs(void)
             .max_evtchn_port = 1023,
             .max_grant_frames = -1,
             .max_maptrack_frames = -1,
-            .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version),
+            .max_grant_version = opt_gnttab_max_version,
         };
         unsigned int flags = 0U;
         uint32_t val;
@@ -959,7 +959,7 @@ void __init create_domUs(void)
         }
 
         if ( dt_property_read_u32(node, "max_grant_version", &val) )
-            d_cfg.grant_opts = XEN_DOMCTL_GRANT_version(val);
+            d_cfg.max_grant_version = val;
 
         if ( dt_property_read_u32(node, "max_grant_frames", &val) )
         {
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 2c30792de88b..773412ba2acb 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -2194,7 +2194,7 @@ void __init create_dom0(void)
         .max_evtchn_port = -1,
         .max_grant_frames = gnttab_dom0_frames(),
         .max_maptrack_frames = -1,
-        .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version),
+        .max_grant_version = opt_gnttab_max_version,
     };
     int rc;
 
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:17:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:17:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827797.1242527 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qmA-000847-S1; Tue, 29 Oct 2024 18:17:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827797.1242527; Tue, 29 Oct 2024 18:17: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 1t5qmA-00083y-NH; Tue, 29 Oct 2024 18:17:06 +0000
Received: by outflank-mailman (input) for mailman id 827797;
 Tue, 29 Oct 2024 18:17: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qmA-0007Zv-3U
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:17:06 +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 fecc8c58-9621-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 19:17:02 +0100 (CET)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c957d8bce2so2857439a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:17:02 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm4110171a12.70.2024.10.29.11.17.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 11:17:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fecc8c58-9621-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzYiLCJoZWxvIjoibWFpbC1lZDEteDUzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImZlY2M4YzU4LTk2MjEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjI1ODIyLjY1NTU1OSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730225822; x=1730830622; 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=mauj61DJ+HdnhGgV8L4W73l1Sj6rpokHLuR7Nm9WpIU=;
        b=cRWnmunZPwgmS9da3lN0MRqI4jHO6jVkVLM7Nxi5WNHfSX5eImuftEmY7rsB8y+dYb
         XMOQpPRPJvrh0azcOkay5KWsaIbM8pfUqu4Xtz4OolnN8eBkEHRMzQNCziD0b3dHV+4k
         TgjK3rgTs5/zEJOQg/3a/cFzhCUe2+/JbtKUs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730225822; x=1730830622;
        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=mauj61DJ+HdnhGgV8L4W73l1Sj6rpokHLuR7Nm9WpIU=;
        b=sHEi391NFOkEspKLpFvnfgOANAHwo58Hg7tQ3IhHlcHgaTUE4+164+7NFARF4rrjVK
         bm/YurpDyJRM/Sazo6s+k8x7Qlf/8CU2xbBtl0SoCfSI0yW1yEfJXnXQoNtsH38VxH75
         yAcWoqJt8GQjhBQ+wLqQPfYioCQYqUTaKqJSwtNZCZhZ1jlW8nfmkuDGuMJ8sL0eZpOm
         egjGYldd17dP3uN+Cbq4lJKR0VF9fsREPNj8WGaa5gcfh9ObqLOiX5SDi88Ni3UYVVtA
         fppzSl8cJSBzfzI0x7SyEhk1/iZvjTBOycPSBdEZOf8Dp7Hpl/MSG6iHnPGr07TVLAwD
         lpsA==
X-Gm-Message-State: AOJu0Ywfd2xiRlnD1yWXD2MeZL6wMAnUGxknWWl+hcO1RNxN2pAUr4yE
	LN3jUKd6LTw/ph9OIWdAzL/iDx2ylaj2arRFJeWGbtnBT69n8TTjKdP0WtGS4eAOGkNJtXdNExn
	x
X-Google-Smtp-Source: AGHT+IGxj78iBc6LxwwvBHGZ6VhJtiCCLp05sKsN5mEz30rmUVnax2pmQCPr1BZgIJjmB4hvQMgWrA==
X-Received: by 2002:a05:6402:27d2:b0:5cb:aad6:145c with SMTP id 4fb4d7f45d1cf-5cbbf8a3c8dmr15714972a12.8.1730225821719;
        Tue, 29 Oct 2024 11:17:01 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Juergen Gross <jgross@suse.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@vates.tech>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [RFC PATCH 2/6] tools: Rename grant_opts to grant_version
Date: Tue, 29 Oct 2024 18:16:28 +0000
Message-ID: <20241029181632.69600-3-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

... and remove the macros that no longer exist.

No functional change

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/helpers/init-xenstore-domain.c             | 2 +-
 tools/libs/light/libxl_create.c                  | 2 +-
 tools/python/xen/lowlevel/xc/xc.c                | 2 +-
 tools/tests/paging-mempool/test-paging-mempool.c | 2 +-
 tools/tests/resource/test-resource.c             | 6 +++---
 tools/tests/tsx/test-tsx.c                       | 4 ++--
 6 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xenstore-domain.c
index 01ca667d25d1..25e41cf5175f 100644
--- a/tools/helpers/init-xenstore-domain.c
+++ b/tools/helpers/init-xenstore-domain.c
@@ -96,7 +96,7 @@ static int build(xc_interface *xch)
          */
         .max_grant_frames = 4,
         .max_maptrack_frames = 128,
-        .grant_opts = XEN_DOMCTL_GRANT_version(1),
+        .grant_version = 1,
     };
 
     xs_fd = open("/dev/xen/xenbus_backend", O_RDWR);
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index edeadd57ef5a..f952614b1f8d 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -646,7 +646,7 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config,
             .max_evtchn_port = b_info->event_channels,
             .max_grant_frames = b_info->max_grant_frames,
             .max_maptrack_frames = b_info->max_maptrack_frames,
-            .grant_opts = XEN_DOMCTL_GRANT_version(b_info->max_grant_version),
+            .grant_version = b_info->max_grant_version,
             .vmtrace_size = ROUNDUP(b_info->vmtrace_buf_kb << 10, XC_PAGE_SHIFT),
             .cpupool_id = info->poolid,
         };
diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c
index 9feb12ae2b16..b3bbda6d955d 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -167,7 +167,7 @@ static PyObject *pyxc_domain_create(XcObject *self,
 #else
 #error Architecture not supported
 #endif
-    config.grant_opts = XEN_DOMCTL_GRANT_version(max_grant_version);
+    config.grant_version = max_grant_version;
 
     if ( (ret = xc_domain_create(self->xc_handle, &dom, &config)) < 0 )
         return pyxc_error_to_exception(self->xc_handle);
diff --git a/tools/tests/paging-mempool/test-paging-mempool.c b/tools/tests/paging-mempool/test-paging-mempool.c
index 1ebc13455ac2..dc90b3b41793 100644
--- a/tools/tests/paging-mempool/test-paging-mempool.c
+++ b/tools/tests/paging-mempool/test-paging-mempool.c
@@ -24,7 +24,7 @@ static struct xen_domctl_createdomain create = {
     .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
     .max_vcpus = 1,
     .max_grant_frames = 1,
-    .grant_opts = XEN_DOMCTL_GRANT_version(1),
+    .grant_version = 1,
 
     .arch = {
 #if defined(__x86_64__) || defined(__i386__)
diff --git a/tools/tests/resource/test-resource.c b/tools/tests/resource/test-resource.c
index 1b10be16a6b4..33bdb3113d85 100644
--- a/tools/tests/resource/test-resource.c
+++ b/tools/tests/resource/test-resource.c
@@ -137,7 +137,7 @@ static void test_domain_configurations(void)
             .create = {
                 .max_vcpus = 2,
                 .max_grant_frames = 40,
-                .grant_opts = XEN_DOMCTL_GRANT_version(1),
+                .grant_version = 1,
             },
         },
         {
@@ -146,7 +146,7 @@ static void test_domain_configurations(void)
                 .flags = XEN_DOMCTL_CDF_hvm,
                 .max_vcpus = 2,
                 .max_grant_frames = 40,
-                .grant_opts = XEN_DOMCTL_GRANT_version(1),
+                .grant_version = 1,
                 .arch = {
                     .emulation_flags = XEN_X86_EMU_LAPIC,
                 },
@@ -159,7 +159,7 @@ static void test_domain_configurations(void)
                 .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
                 .max_vcpus = 2,
                 .max_grant_frames = 40,
-                .grant_opts = XEN_DOMCTL_GRANT_version(1),
+                .grant_version = 1,
             },
         },
 #endif
diff --git a/tools/tests/tsx/test-tsx.c b/tools/tests/tsx/test-tsx.c
index 5af04953f340..86608c95d627 100644
--- a/tools/tests/tsx/test-tsx.c
+++ b/tools/tests/tsx/test-tsx.c
@@ -457,7 +457,7 @@ static void test_guests(void)
         struct xen_domctl_createdomain c = {
             .max_vcpus = 1,
             .max_grant_frames = 1,
-            .grant_opts = XEN_DOMCTL_GRANT_version(1),
+            .grant_version = 1,
         };
 
         printf("Testing PV guest\n");
@@ -470,7 +470,7 @@ static void test_guests(void)
             .flags = XEN_DOMCTL_CDF_hvm,
             .max_vcpus = 1,
             .max_grant_frames = 1,
-            .grant_opts = XEN_DOMCTL_GRANT_version(1),
+            .grant_version = 1,
             .arch = {
                 .emulation_flags = XEN_X86_EMU_LAPIC,
             },
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:17:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:17:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827800.1242557 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qmF-0000Sm-Nz; Tue, 29 Oct 2024 18:17:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827800.1242557; Tue, 29 Oct 2024 18:17: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 1t5qmF-0000Sc-KU; Tue, 29 Oct 2024 18:17:11 +0000
Received: by outflank-mailman (input) for mailman id 827800;
 Tue, 29 Oct 2024 18:17: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qmE-0007bP-6x
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:17:10 +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 0207de9e-9622-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 19:17:08 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c9634c9160so6597861a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:17:08 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm4110171a12.70.2024.10.29.11.17.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 11:17:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0207de9e-9622-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmYiLCJoZWxvIjoibWFpbC1lZDEteDUyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjAyMDdkZTllLTk2MjItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI1ODI4LjAzODM3OSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730225827; x=1730830627; 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=yOAoP8cuHmKGFhmeuvZS1Al8PeEIAn2DesMMCGjFrZU=;
        b=lM1jI0jN7Fl0hN3f/V1/yoWbZGpt5FyEsjU1OJ/IGPu3zS+zoHFQpVOTF4714igi8k
         ONJtSZ1A6z3Cx7u8KQUvAljMYOC4IkxFl+vgfTGlRk25V9N2jAK9b3LzEfilsEGeoCCw
         DOtf0os1iudCAMp4c1aoGU4IZbUMdzMIBIJJk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730225827; x=1730830627;
        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=yOAoP8cuHmKGFhmeuvZS1Al8PeEIAn2DesMMCGjFrZU=;
        b=k4ZaOeOP6osanOJ2zY4Fmi68jZyO8RbZssYYcABJ3x2zYdK8mwKQszx4AtgN6dLS+7
         Uylm1WWSo5tso1bGReRN4gZnvWULY/qgZm+wZH6QM4PZH7vH9CE5teRubz+Dsa9cUcQs
         zlPoyNQ8qSL/Be62vzXV26nGMy9nMHvEeIoB3SzY+sKdBZkzwYeyBGx/NMPdVQmETOq7
         XvU1UC2GItWWyUEloDT14Jqtydmb/9zwOTs089G1JSbj9tRQRxpu7BQAuK/6ZUxMzERU
         2RUkexu5iWpOfCmWGbkDDNBQQU/mOsscwgla9Lc+oB9FOxBT9YeRFUfsJ17Vqdwz2vZv
         rCVg==
X-Gm-Message-State: AOJu0Ywe7HzufsOOf529jgEPCVtkeJlGfGi1Bt4kg5RAx6kjboWikRfL
	yz2Th/Yt8CUkad4lveIcdAm694zO6PNoniAxrx7KCy+26h/JoiCXm6zSD/bcmDxPaO64TCs67xH
	r
X-Google-Smtp-Source: AGHT+IGVxPqbkm6G3Esjtcz6v5YtREoyWp/z70cMdlWCcHGyBNNCNdUNyjxtP28BKt29zBqkKGX/aA==
X-Received: by 2002:a05:6402:90c:b0:5c7:2122:6ad with SMTP id 4fb4d7f45d1cf-5cbbf89a142mr10244671a12.14.1730225827189;
        Tue, 29 Oct 2024 11:17:07 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: 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>
Subject: [RFC PATCH 5/6] xen/x86: Rename grant_opts to grant_version
Date: Tue, 29 Oct 2024 18:16:31 +0000
Message-ID: <20241029181632.69600-6-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

... and remove the macros that no longer exist.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/setup.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 177f4024abca..a9130161969b 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -956,7 +956,7 @@ static struct domain *__init create_dom0(const module_t *image,
         .max_evtchn_port = -1,
         .max_grant_frames = -1,
         .max_maptrack_frames = -1,
-        .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version),
+        .max_grant_version = opt_gnttab_max_version,
         .max_vcpus = dom0_max_vcpus(),
         .arch = {
             .misc_flags = opt_dom0_msr_relaxed ? XEN_X86_MSR_RELAXED : 0,
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:17:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:17:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827801.1242567 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qmH-0000je-1F; Tue, 29 Oct 2024 18:17:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827801.1242567; Tue, 29 Oct 2024 18:17: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 1t5qmG-0000jM-TF; Tue, 29 Oct 2024 18:17:12 +0000
Received: by outflank-mailman (input) for mailman id 827801;
 Tue, 29 Oct 2024 18:17: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qmF-0007bP-O3
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:17:11 +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 02dc4537-9622-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 19:17:09 +0100 (CET)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5cb615671acso3556382a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:17:09 -0700 (PDT)
Received: from localhost.localdomain ([217.156.233.154])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb63197bdsm4110171a12.70.2024.10.29.11.17.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 29 Oct 2024 11:17:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 02dc4537-9622-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmIiLCJoZWxvIjoibWFpbC1lZDEteDUyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjAyZGM0NTM3LTk2MjItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI1ODI5LjQ0MDE5OSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730225829; x=1730830629; 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=SlNOfvbEUH68SFYddIu2H52O+/CuAeFVRrD11ZLL/cA=;
        b=W7Mak5ts4jbcJnqn+AFA7C3RANiy3jk5fNWDhN99ZA4b6fNOkZ+Iph6w3dV0r0cIRR
         N+7GatYJE2cwyZpuXj03/sa1sgtA1biwaIVodvK18UmvG0HYQ2EHxRuMt3RtoO7Jx6AW
         1Dg7A6vikE/t1vmobQSVDhyzEjXeeEh1mNzD0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730225829; x=1730830629;
        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=SlNOfvbEUH68SFYddIu2H52O+/CuAeFVRrD11ZLL/cA=;
        b=Z+1xxPuyynXVqqFQbJ5NKGbRLQhc1jwK9QdK6mpo2NGhwbj/8uNuUqB68IA/c9Upal
         OWXy6AtDlEPBstfWOgWObX14PyepdL9qpRhLhPiJ4p4sVOOC/oODm9D/g081eHkM179V
         rT1Wr9xH2P9DW33beSVkQ+tBVWNfcTn9qxK0FY5koFNFJEvrNjb8qw1/iBKW9867QIG3
         ldiNXBqOOys/o3Au6zjtHXFZOxhbGlPu/yifXPNkouIUGKjJo3Iy3vETMfUxEHHO8qB4
         uL7qAzF2GUNHxRt5u3GOHnALhDKtPFVhYa+/4ImQVkxzga+SIdu9AkGJQkevRqgDAlTD
         Ooug==
X-Gm-Message-State: AOJu0YwgiLO5o4PZ3nIhaaBrwarTmptJoCdUf2AS9MkZ+uI8GASvborH
	l/KO0uevjj7ivmaHqyIEpQc+/NTgotQynq8WL7fwJOsuLRWxARgqaWHcM8uN8b5n0cw1JhHzqHh
	Q
X-Google-Smtp-Source: AGHT+IFubUz7zr6S8J//8W0qF4by33zcAeFp8hTScDVl0+3znHLfjan6Unn5BKLmej3g/KH/hRAS2g==
X-Received: by 2002:a05:6402:4584:b0:5cb:728e:926b with SMTP id 4fb4d7f45d1cf-5cbbf8c2eacmr15114750a12.17.1730225828578;
        Tue, 29 Oct 2024 11:17:08 -0700 (PDT)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [RFC PATCH 6/6] xen/common: Rename grant_opts to grant_version
Date: Tue, 29 Oct 2024 18:16:32 +0000
Message-ID: <20241029181632.69600-7-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

... and remove the macros that no longer exist.

No functional change.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/common/domain.c           | 6 +++---
 xen/common/grant_table.c      | 3 +--
 xen/include/xen/grant_table.h | 4 ++--
 3 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/xen/common/domain.c b/xen/common/domain.c
index 92263a4fbdc5..86f0e99e0d4a 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -579,9 +579,9 @@ static int sanitise_domain_config(struct xen_domctl_createdomain *config)
         return -EINVAL;
     }
 
-    if ( config->grant_opts & ~XEN_DOMCTL_GRANT_version_mask )
+    if ( config->rsvd0[0] | config->rsvd0[1] | config->rsvd0[2] )
     {
-        dprintk(XENLOG_INFO, "Unknown grant options %#x\n", config->grant_opts);
+        dprintk(XENLOG_INFO, "Rubble in rsvd0 padding\n");
         return -EINVAL;
     }
 
@@ -788,7 +788,7 @@ struct domain *domain_create(domid_t domid,
 
     if ( (err = grant_table_init(d, config->max_grant_frames,
                                  config->max_maptrack_frames,
-                                 config->grant_opts)) != 0 )
+                                 config->max_grant_version)) != 0 )
         goto fail;
     init_status |= INIT_gnttab;
 
diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c
index 6c77867f8cdd..51a3f72a9601 100644
--- a/xen/common/grant_table.c
+++ b/xen/common/grant_table.c
@@ -1963,10 +1963,9 @@ active_alloc_failed:
 }
 
 int grant_table_init(struct domain *d, int max_grant_frames,
-                     int max_maptrack_frames, unsigned int options)
+                     int max_maptrack_frames, uint8_t max_grant_version)
 {
     struct grant_table *gt;
-    unsigned int max_grant_version = options & XEN_DOMCTL_GRANT_version_mask;
     int ret = -ENOMEM;
 
     if ( !max_grant_version )
diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h
index 50edfecfb62f..f3edbae3c974 100644
--- a/xen/include/xen/grant_table.h
+++ b/xen/include/xen/grant_table.h
@@ -73,9 +73,9 @@ int gnttab_acquire_resource(
 static inline int grant_table_init(struct domain *d,
                                    int max_grant_frames,
                                    int max_maptrack_frames,
-                                   unsigned int options)
+                                   uint8_t max_grant_version)
 {
-    if ( options )
+    if ( max_grant_version )
         return -EINVAL;
 
     return 0;
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:26:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:26:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827826.1242577 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qvV-0004OY-Sa; Tue, 29 Oct 2024 18:26:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827826.1242577; Tue, 29 Oct 2024 18: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 1t5qvV-0004OQ-PX; Tue, 29 Oct 2024 18:26:45 +0000
Received: by outflank-mailman (input) for mailman id 827826;
 Tue, 29 Oct 2024 18:26: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qvU-0004KP-Jg
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:26:44 +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 5779c074-9623-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 19:26:40 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a9a26a5d6bfso886719766b.1
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:26:40 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b30c7adadsm502134666b.175.2024.10.29.11.26.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 11:26:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5779c074-9623-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmMiLCJoZWxvIjoibWFpbC1lajEteDYyYy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjU3NzljMDc0LTk2MjMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjI2NDAwLjkwNDY1Nywic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730226400; x=1730831200; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Q6JrJRDM7bg2hJrU/89bqF5ROISm6zgfOMVlqD8j/Hc=;
        b=Trbq0BiQFdaSvc8SKidoLjK7HUBn48UaJ1RWlZHyPTo6T9spfiFgXLTnptQc/+OQLM
         F5H7iffvfxnTGIPqIciCFonWjkRucEe3a5Q2InqifWQIc3T+fIg0pWw78Jnw7YVdfjzH
         f7L9cQGrwwey/9graG4piLLK3vjx9fhbGywnU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730226400; x=1730831200;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=Q6JrJRDM7bg2hJrU/89bqF5ROISm6zgfOMVlqD8j/Hc=;
        b=LVOqeKQvGtTzAjjpiykZUbV2WkQN4dEVfbOG+7ud+EtYAGbbVjVT6BWdHzsWMG1diI
         WLqOzWAxCC+ZnkoS3OFwr+DCLjN+vMvX/CexwEZaww1Xx8Lte4lfjeQLZDNMO8E5lPvz
         3wCuCAT4wbFmkkYBXKELXo9RBK8LD3FddNS3AZdZeJUXgXWXVELGWv2WEoeHU1TyDMcz
         7nrtzKE5H331YNw4M7xcwqkqzsMKsb44uyZ/OoGXgjHKu/LU9bTYg1t3rZzi53bIYgw9
         QuqpPJwuqPwDdS+g4vQr/BgWH9EvbMkFm35tS2c83NawaMuHrHHBf5BFh19negogGfND
         tP+g==
X-Forwarded-Encrypted: i=1; AJvYcCWl8zA4Vluek563gMC+ptzDKilWoN2ptt7V0biPiROIdbod72UR38PyFTuDw6At8i4fog1SGyHrve8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzcti0hq3KWakLqur51dxstu6WGe8GhOKdYMo6l/1I4MprTnue7
	ZdbOv1mBpY/OIr/ZaNUxHL8VVdletUQJos8IRpdrf585BirsVTu/73DN1xw1lyA=
X-Google-Smtp-Source: AGHT+IEG96jJMLVa/zEsvtbB49D2/vxji/KujMcIpX5443FvnaMMYS3mf70tEmQ5kkAIISmSa7Msog==
X-Received: by 2002:a17:907:3e1c:b0:a90:df6f:f086 with SMTP id a640c23a62f3a-a9de5c9f32amr1106527166b.11.1730226400272;
        Tue, 29 Oct 2024 11:26:40 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 18:26:38 +0000
Message-Id: <D58I2I9IY2VV.FGUNJOWYNQ7U@cloud.com>
Cc: "Jan Beulich" <JBeulich@suse.com>, =?utf-8?q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241029175505.2698661-1-andrew.cooper3@citrix.com>

On Tue Oct 29, 2024 at 5:55 PM GMT, Andrew Cooper wrote:
> We already have one migration case opencoded (feat.max_subleaf).  A more
> recent discovery is that we advertise x2APIC to guests without ensuring t=
hat
> we provide max_leaf >=3D 0xb.
>
> In general, any leaf known to Xen can be safely configured by the toolsta=
ck if
> it doesn't violate other constraints.
>
> Therefore, introduce guest_common_{max,default}_leaves() to generalise th=
e
> special case we currently have for feat.max_subleaf, in preparation to be=
 able
> to provide x2APIC topology in leaf 0xb even on older hardware.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 18:29:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 18:29:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827843.1242587 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5qya-0005Tz-9J; Tue, 29 Oct 2024 18:29:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827843.1242587; Tue, 29 Oct 2024 18:29: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 1t5qya-0005Ts-6f; Tue, 29 Oct 2024 18:29:56 +0000
Received: by outflank-mailman (input) for mailman id 827843;
 Tue, 29 Oct 2024 18:29: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=Mpqm=RZ=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t5qyZ-0005Tm-6D
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 18:29:55 +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 c90c410d-9623-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 19:29:51 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5cbb6166c06so5470099a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 11:29:51 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb6349364sm4108632a12.96.2024.10.29.11.29.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 11:29:48 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c90c410d-9623-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmMiLCJoZWxvIjoibWFpbC1lZDEteDUyYy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImM5MGM0MTBkLTk2MjMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjI2NTkxLjU3MTY1NCwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730226591; x=1730831391; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=62XfKts/jlV6wAkk/iXygJQPo4JNfIIsvlIE+iio9oA=;
        b=bWKXuzvblqVntJ7vL1/4GsZYA6r0NISlWSvj6LYZ7TlQmIGvfDqc65yplRnlVNq2p6
         2FHjpnq87SZvwKxizjGceJ0Rq+iiX+gwhNrcDygfs53dQc4P/L8mOkCkdNT9gmvf/pd0
         i2NIFhjl4dm1m+wodAvYRBMVRL8TWxEHJQewI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730226591; x=1730831391;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=62XfKts/jlV6wAkk/iXygJQPo4JNfIIsvlIE+iio9oA=;
        b=ENj1ZNilAWyUokLz+HDB5tPdw/xoSN4ANIsJUr3m6uB9PQY77w/qn8ajAmnI3yRRpe
         H/lpv9OPc/3uFAAGl1MwWln7W6FPPi+9n4E2MA1pUwXBSPf3ihpL7QyoyHI42i/kT8ww
         zXMbnl191QC2lXJ5ebiuVo5BdMYBnZPKXAkn6V4MhaCxzwXEgG1IJlVxuhuCPjJ1gTR8
         v7gplCqGs+haGchNOegiTh02wjrRUvbRB5ZhhVj/yfbZ8jJzzzQeHu7Rfx0GtIXYqBJ5
         cO6R4lZ86PtqKltoNJloEBaxZZF3XP8a43VsJUKVx6tUE2Ws3dxxJkoFyiiDPenx9foQ
         ZS9A==
X-Forwarded-Encrypted: i=1; AJvYcCWI8PdLClpV7qT9Lv7vZ6pBNuLcvGIUMBzDDTOeWBJ0G6gKeTn3s4hggWY1eNOsxPjDpu/IzOXW9a4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyJdVkDmtwRQVw0rVrGzXyxFeHiHNoCNXQV5LmKH0/rQbB8rmzo
	hC2qtyHI45gKGL98PSfbj9GiuZy1uXVf+gurAmMHJxqxNlz/6cvMZ5+jZHiweuU=
X-Google-Smtp-Source: AGHT+IHAwfQtFagKdNnvOcHDs1in53j1395r/FYNsDLL2oun9r8JYBY74PFAnyoc/R76AO3lNdGkgQ==
X-Received: by 2002:a05:6402:2712:b0:5c9:4281:4515 with SMTP id 4fb4d7f45d1cf-5cbbf8c2866mr11825924a12.17.1730226589879;
        Tue, 29 Oct 2024 11:29:49 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Tue, 29 Oct 2024 18:29:46 +0000
Message-Id: <D58I4WS083OC.3JTJQC57GIDXT@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Jan Beulich"
 <jbeulich@suse.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini"
 <sstabellini@kernel.org>, "Juergen Gross" <jgross@suse.com>, "Anthony
 PERARD" <anthony.perard@vates.tech>,
 =?utf-8?q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, "Christian Lindig"
 <christian.lindig@citrix.com>, "David Scott" <dave@recoil.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: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive
 types
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>,
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>

On Tue Oct 29, 2024 at 6:16 PM GMT, Alejandro Vallejo wrote:
> Non-boolean bitfields in the hypercall ABI make it fairly inconvenient to
> create bindings for any language because (a) they are always ad-hoc and a=
re
> subject to restrictions regular fields are not (b) require boilerplate th=
at
> regular fields do not and (c) might not even be part of the core language=
,
> forcing avoidable external libraries into any sort of generic library.
>
> This patch (it's a series merely to split roughly by maintainer) is one s=
uch
> case that I happened to spot while playing around. It's the grant_version
> field, buried under an otherwise empty grant_opts.
>
> The invariant I'd like to (slowly) introduce and discuss is that fields m=
ay
> have bitflags (e.g: a packed array of booleans indexed by some enumerated
> type), but not be mixed with wider fields in the same primitive type. Thi=
s
> ensures any field containing an integer of any kind can be referred by po=
inter
> and treated the same way as any other with regards to sizeof() and the li=
ke.
>
> I'd like to have a certain consensus about this general point before goin=
g
> establishing this restriction in the IDL system I'm working on.
>
> My preference would be to fold everything into a single patch if we decid=
e to
> follow through with this particular case. As I said before, the split is
> artificial for review.
>
> Alejandro Vallejo (6):
>   xen/domctl: Refine grant_opts into grant_version
>   tools: Rename grant_opts to grant_version
>   tools/ocaml: Rename grant_opts to grant_version
>   xen/arm: Rename grant_opts to grant_version
>   xen/x86: Rename grant_opts to grant_version
>   xen/common: Rename grant_opts to grant_version
>
>  tools/helpers/init-xenstore-domain.c             |  2 +-
>  tools/libs/light/libxl_create.c                  |  2 +-
>  tools/ocaml/libs/xc/xenctrl_stubs.c              |  3 +--
>  tools/python/xen/lowlevel/xc/xc.c                |  2 +-
>  tools/tests/paging-mempool/test-paging-mempool.c |  2 +-
>  tools/tests/resource/test-resource.c             |  6 +++---
>  tools/tests/tsx/test-tsx.c                       |  4 ++--
>  xen/arch/arm/dom0less-build.c                    |  4 ++--
>  xen/arch/arm/domain_build.c                      |  2 +-
>  xen/arch/x86/setup.c                             |  2 +-
>  xen/common/domain.c                              |  6 +++---
>  xen/common/grant_table.c                         |  3 +--
>  xen/include/public/domctl.h                      | 15 +++++++++++----
>  xen/include/xen/grant_table.h                    |  4 ++--
>  14 files changed, 31 insertions(+), 26 deletions(-)

Bah. I sent it too early. The new field in patches 2-6 ought to be
max_grant_version. Regardless, the general point still holds, I hope.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 19:33:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 19:33:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827860.1242613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5rxp-00081l-2d; Tue, 29 Oct 2024 19:33:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827860.1242613; Tue, 29 Oct 2024 19: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 1t5rxo-00081e-Vp; Tue, 29 Oct 2024 19:33:12 +0000
Received: by outflank-mailman (input) for mailman id 827860;
 Tue, 29 Oct 2024 19: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=v9YU=RZ=linux.intel.com=kirill.shutemov@srs-se1.protection.inumbo.net>)
 id 1t5rxn-00081Y-Bq
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 19:33:11 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9cca8609-962c-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 20:33:04 +0100 (CET)
Received: from fmviesa010.fm.intel.com ([10.60.135.150])
 by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 29 Oct 2024 12:33:01 -0700
Received: from black.fi.intel.com ([10.237.72.28])
 by fmviesa010.fm.intel.com with ESMTP; 29 Oct 2024 12:32:55 -0700
Received: by black.fi.intel.com (Postfix, from userid 1000)
 id 02E3426B; Tue, 29 Oct 2024 21:32:53 +0200 (EET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9cca8609-962c-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE5Mi4xOTguMTYzLjgiLCJoZWxvIjoibWdhbWFpbC5pbnRlbC5jb20ifQ==
X-Custom-Transaction: eyJpZCI6IjljY2E4NjA5LTk2MmMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjMwMzg0LjY1OTY3NSwic2VuZGVyIjoia2lyaWxsLnNodXRlbW92QGxpbnV4LmludGVsLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1730230384; x=1761766384;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=rKuHVvH42ui6GSwdR20x9vXuuUKOs7LyPxbi1NASNnI=;
  b=dF766GIlXGUB3FzfGCaRbFU4X7e9q6riFMmW32+axmJTjD9S7k5Gk84j
   KF3PrZFkB+lJe+FyFHDBcXwdXZCET/FlrseJ8LSHG8IozNZGX7A0Ow67v
   xe9u/vpQcEFbjO9Y8hGb8UJ5stNoWSGWiVfZhczPDUKBtu23M5GAoAJPw
   1e2T9tOuwe8B9miQRRz9Svlx02EIzvwCtnkTbEg4df3JU5ULOT1A1EMGw
   y3jyo25poxvDi2GN5476BrjK9bGluPq7ZJuVx6Vf7Ih1TxWn98/zB4AtQ
   3gjKJPk+OeZzTzN4Abz5LYM06USeJ75b3tdmA5j074nvK1y4YukI2ROtv
   g==;
X-CSE-ConnectionGUID: pYQqfvyhQ8ixPB9YVSdJyg==
X-CSE-MsgGUID: au+hE3InTIyjVAM6PwWrTA==
X-IronPort-AV: E=McAfee;i="6700,10204,11240"; a="47378528"
X-IronPort-AV: E=Sophos;i="6.11,241,1725346800"; 
   d="scan'208";a="47378528"
X-CSE-ConnectionGUID: +eIVlvmHQ3K/+bFW1SyJVw==
X-CSE-MsgGUID: OaEP30QHQQi0PlK6I9o+OA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.11,241,1725346800"; 
   d="scan'208";a="82399102"
Date: Tue, 29 Oct 2024 21:32:53 +0200
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@redhat.com>, 
	Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>, x86@kernel.org, 
	"K. Y. Srinivasan" <kys@microsoft.com>, Haiyang Zhang <haiyangz@microsoft.com>, 
	Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>, 
	"H. Peter Anvin" <hpa@zytor.com>, Paolo Bonzini <pbonzini@redhat.com>, 
	Vitaly Kuznetsov <vkuznets@redhat.com>, Juergen Gross <jgross@suse.com>, 
	Boris Ostrovsky <boris.ostrovsky@oracle.com>, Gaosheng Cui <cuigaosheng1@huawei.com>, 
	Michael Roth <michael.roth@amd.com>, Tom Lendacky <thomas.lendacky@amd.com>, 
	Ashish Kalra <ashish.kalra@amd.com>, Kai Huang <kai.huang@intel.com>, Andi Kleen <ak@linux.intel.com>, 
	Sean Christopherson <seanjc@google.com>, Xiaoyao Li <xiaoyao.li@intel.com>, linux-hyperv@vger.kernel.org, 
	linux-kernel@vger.kernel.org, kvm@vger.kernel.org, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] x86/mtrr: Rename mtrr_overwrite_state() to
 guest_force_mtrr_state()
Message-ID: <elods3c5ocia6645vhce7khtzdvzwf7m3wicxmwzvw27hyyvxv@mdixnwonfzgh>
References: <20241015095818.357915-1-kirill.shutemov@linux.intel.com>
 <20241016105048.757081-1-kirill.shutemov@linux.intel.com>
 <l7l6ufyjbrfr4ms6quil5myf5bzmvu33sq3phfvpbwldhzn6m2@rzfdrvbe2glf>
 <4d39b188-0642-495c-8638-67ae08c070b7@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <4d39b188-0642-495c-8638-67ae08c070b7@intel.com>

On Tue, Oct 29, 2024 at 10:37:07AM -0700, Dave Hansen wrote:
> On 10/29/24 08:13, Kirill A. Shutemov wrote:
> > On Wed, Oct 16, 2024 at 01:50:48PM +0300, Kirill A. Shutemov wrote:
> >> Rename the helper to better reflect its function.
> >>
> >> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> >> Suggested-by: Dave Hansen <dave.hansen@intel.com>
> > 
> > KVM patch is Linus' tree.
> > 
> > Dave, can you take this one?
> 
> Not easily without a merge of Paolo's KVM bits.  The confusion that
> might cause isn't quite worth it for a rename.  I can either stash this
> somewhere or I'm also fine if Paolo takes it on top of your other patch:
> 
> Acked-by: Dave Hansen <dave.hansen@intel.com>

I don't follow what is the problem.

As I said KVM patch is already in Linus' tree -- v6.12-rc5 -- and tip tree
already uses the tag as basis for x86/urgent.

Hm?

-- 
  Kiryl Shutsemau / Kirill A. Shutemov


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 20:31:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 20:31:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827871.1242623 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5srx-0008H8-8V; Tue, 29 Oct 2024 20:31:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827871.1242623; Tue, 29 Oct 2024 20:31: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 1t5srx-0008H1-5k; Tue, 29 Oct 2024 20:31:13 +0000
Received: by outflank-mailman (input) for mailman id 827871;
 Tue, 29 Oct 2024 20:31: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=YGhd=RZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t5srw-0008Gv-3o
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 20:31:12 +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 b65fbf13-9634-11ef-a0c3-8be0dac302b0;
 Tue, 29 Oct 2024 21:31:01 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99eb8b607aso742984366b.2
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 13:31:01 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a0834a6sm503715066b.191.2024.10.29.13.31.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 13:31:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b65fbf13-9634-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImI2NWZiZjEzLTk2MzQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjMzODYxLjY0Njk0Miwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730233861; x=1730838661; 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=XVVUJIm/r84iGitm46QUO5gyEZksBfEP/2zhvi4ATT8=;
        b=GRT94EcMdbPq0g6Mmir/awvwA5ATQovpJ2Y2u+gEU1SGiQF3T4Q/0jbeB1DHM4yCBd
         Lka3P5FD0uF/h7/h5QRIaxpe+EyKvVGH2ablAIYj6faTK8hEYwyCbnu//A7/mLRohxCj
         n8V7LJBhX9V4anYkYgPRgpVd533sKGTG8biy8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730233861; x=1730838661;
        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=XVVUJIm/r84iGitm46QUO5gyEZksBfEP/2zhvi4ATT8=;
        b=O0mqkWg58Mwdg78GPwjgOCybyJhRDpmq2sh3JnSSbdSo/GAQQoiSwjTDmHOtT1E2ej
         ky8QkXnjsfQXpGLOCy8QdI8foKa906z5ngINLZvwpw83zZwBvAaQQX+wY4rkYo5Xvqq/
         Ujp5vMumhRSqANsOEA+fLGKGBLdtDD7p0f6tvEZyEKtZTAY6qGcAIKNH6r9nWDkyiai4
         6JHPinygOKP7D3VmD+116QTi0bocSq/HEcoPzQpuaymPcR65esZ2VI9Ppu87UbdG2PMo
         Z3Qf35yiS4FUyashIxkBPSSEpuoueULupzKSnHU+lez9UvNu3SQ9uW/UMS69uoUe/B9z
         b9nA==
X-Forwarded-Encrypted: i=1; AJvYcCVnAmgpbewtefEa7uJR4j3n0ajgWupz2m28cQZnxjH29cJ39WMrkHQaz6o+ZZ/JiZZJlbESqstnHbI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzmTRD8XMUrJedNNhu+O9xLe4IHh/H3sRtIzPLYVc0lrW/JeoWg
	RgHGkTw/N07bMl7cRPo3c95sQa+tjl9STpII+EuY6rA0+batLUofidd8bajl2rA=
X-Google-Smtp-Source: AGHT+IErAEG8BG93nr3pNuAXhzCCSgpHsOq5KkzqeOCMNavjFSlSwesnPZzQ3A1ETBiSo6shfwOEYA==
X-Received: by 2002:a17:907:e8d:b0:a9a:55dd:bc23 with SMTP id a640c23a62f3a-a9de5d6f205mr1306648766b.8.1730233860714;
        Tue, 29 Oct 2024 13:31:00 -0700 (PDT)
Message-ID: <974538f8-10b5-4fa3-9069-df6655a5d86d@citrix.com>
Date: Tue, 29 Oct 2024 20:30:58 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 02/10] xen/x86: Add initial x2APIC ID to the per-vLAPIC
 save area
To: Alejandro Vallejo <alejandro.vallejo@cloud.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: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-3-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021154600.11745-3-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
> This allows the initial x2APIC ID to be sent on the migration stream.
> This allows further changes to topology and APIC ID assignment without
> breaking existing hosts. 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.
>
> The hardcoded mapping x2apic_id=2*vcpu_id is kept for the time being,
> but it's meant to be overriden by toolstack on a later patch with
> appropriate values.
>
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

I'm going to request some changes, but I think they're only comment
changes. [edit, no sadly, one non-comment change.]

It's unfortunate that Xen uses an instance of hvm_hw_lapic for it's
internal state, but one swamp at a time.


In the subject, there's no such thing as the "initial" x2APIC ID. 
There's just "the x2APIC ID" and it's not mutable state as far as the
guest is concerned  (This is different to the xAPIC id, where there is
an architectural concept of the initial xAPIC ID, from the days when
OSes were permitted to edit it).  Also, it's x86/hvm, seeing as this is
an HVM specific change you're making.

Next, while it's true that this allows the value to move in the
migration stream, the more important point is that this allows the
toolstack to configure the x2APIC ID for each vCPU.

So, for the commit message, I recommend:

---%<---
Today, Xen hard-codes x2APIC_ID = vcpu_id * 2, but this is unwise and
interferes with providing accurate topology information to the guest.

Introduce a new x2apic_id field into hvm_hw_lapic.  This is immutable
state from the guest's point of view, but it allows the toolstack to
configure the value, and for the value to move on migrate.

For backwards compatibility, we treat incoming zeroes as if they were
the old hardcoded scheme.
---%<---

> diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c
> index 2a777436ee27..e2489ff8e346 100644
> --- a/xen/arch/x86/cpuid.c
> +++ b/xen/arch/x86/cpuid.c
> @@ -138,10 +138,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 |= vlapic_x2apic_id(vcpu_vlapic(v)) << 24;

There wants to be some kind of note here, especially as you're feeding
vlapic_x2apic_id() into a field called xAPIC ID.  Perhaps

/* Large systems do wrap around 255 in the xAPIC_ID field. */

?


>  
>          /* TODO: Rework vPMU control in terms of toolstack choices. */
>          if ( vpmu_available(v) &&
> @@ -310,19 +309,16 @@ 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;
> +            /*
> +             * Fix the x2APIC identifier. The PV side is nonsensical, but
> +             * we've always shown it like this so it's kept for compat.
> +             */

In hindsight I should changed "Fix the x2APIC identifier." when I
reworked this logic, but oh well - better late than never.

/* The x2APIC_ID is per-vCPU, and fixed irrespective of the requested
subleaf. */

I'd also put a little more context in the PV side:

/* Xen 4.18 and earlier leaked x2APIC into PV guests.  The value shown
is nonsensical but kept as-was for compatibility. */

> diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
> index 3363926b487b..33b463925f4e 100644
> --- a/xen/arch/x86/hvm/vlapic.c
> +++ b/xen/arch/x86/hvm/vlapic.c
> @@ -1538,6 +1538,16 @@ 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);
>  
> +    /*
> +     * Loading record without hw.x2apic_id in the save stream, calculate using
> +     * the traditional "vcpu_id * 2" relation. There's an implicit assumption
> +     * that vCPU0 always has x2APIC0, which is true for the old relation, and
> +     * still holds under the new x2APIC generation algorithm. While that case
> +     * goes through the conditional it's benign because it still maps to zero.
> +     */

It's not an implicit assumption; it's very explicit.

/* Xen 4.19 and earlier had no x2APIC_ID in the migration stream, and
hard-coded "vcpu_id * 2".  Default back to this if we have a
zero-extended record.  */

But, this will go malfunction if the toolstack tries to set v!0's
x2APIC_ID to 0.

What you need to know is whether lapic_load_hidden() had to zero-extend
the record or not (more specifically, over this field), so you want
h->size <= offsetof(x2_apicid) as the gating condition.

This should be safe for the toolstack, I think.  Hypercalls prior to
this patch will get a shorter record, and hypercalls from this patch
onwards will get a longer record with the default x2APIC_ID = vcpu_id *
2 filled in.

> +    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) )
> @@ -1606,6 +1616,13 @@ static int cf_check lapic_check_hidden(const struct domain *d,
>           APIC_BASE_EXTD )
>          return -EINVAL;
>  
> +    /*
> +     * Fail migrations from newer versions of Xen where
> +     * rsvd_zero is interpreted as something else.
> +     */

This comment isn't necessary.  We've got no shortage of reserved
checks.  However ...

> diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/public/arch-x86/hvm/save.h
> index 7ecacadde165..1c2ec669ffc9 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;

... we do normally spell it _rsvd; to make it extra extra clear that
people shouldn't be doing anything with it.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Oct 29 22:04:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 29 Oct 2024 22:04:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827881.1242632 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t5uJf-0004AT-LB; Tue, 29 Oct 2024 22:03:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827881.1242632; Tue, 29 Oct 2024 22: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 1t5uJf-0004AM-I3; Tue, 29 Oct 2024 22:03:55 +0000
Received: by outflank-mailman (input) for mailman id 827881;
 Tue, 29 Oct 2024 22:03: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=/BZl=RZ=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t5uJe-0004AG-R3
 for xen-devel@lists.xenproject.org; Tue, 29 Oct 2024 22:03:54 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ad0d61b0-9641-11ef-99a3-01e77a169b0f;
 Tue, 29 Oct 2024 23:03:50 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id D47B6A42E8C;
 Tue, 29 Oct 2024 22:01:52 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95CE4C4CECD;
 Tue, 29 Oct 2024 22:03:47 +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: ad0d61b0-9641-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjI2MDQ6MTM4MDo0NWQxOmVjMDA6OjMiLCJoZWxvIjoibnljLnNvdXJjZS5rZXJuZWwub3JnIn0=
X-Custom-Transaction: eyJpZCI6ImFkMGQ2MWIwLTk2NDEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjM5NDMwLjM4OTg4LCJzZW5kZXIiOiJzc3RhYmVsbGluaUBrZXJuZWwub3JnIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730239428;
	bh=KB/d2q5MRG5kulvD4SpuhF+xUABxQvtE1KX66zioCl0=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=c4eL6aWMuhng0MqEyYZ/GP3WUyNskWBCorR5rAibi8XFuQyobyNGV4jRexgOVmLQZ
	 akI1taPSa2KDoPt19yLCl43jwt6ABheetnjnSuoElKvjB3sNB0WPyMwbwFNHwRqKlW
	 kytdMNLk2zI06sdbuvhHmjfj3J1zKmmYXjPSgIqHkmbzkyF5Ap4g9d2XjtsyW2yOB3
	 q/JEKuc7iRYj0ufc/YJAvIpnTX8h892xOlnuuPscIdli9yfiB4W2FUbUOTA0NGHFut
	 vSsQG0NzKYY1tAm4ORRUslu/TtBQs0ouTrcffk4YIYAvtJdGUdUSiQso9CPdSM27G7
	 F7J5jiHsvQrBw==
Date: Tue, 29 Oct 2024 15:03:45 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Federico Serafini <federico.serafini@bugseng.com>
cc: xen-devel@lists.xenproject.org, consulting@bugseng.com, 
    Simone Ballarin <simone.ballarin@bugseng.com>, 
    Doug Goldstein <cardoe@cardoe.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN PATCH] automation/eclair: monitor Rules 11.2 and 18.1 and
 update configuration
In-Reply-To: <b513d40f6195226b421012e0cf42bb14279cd0b3.1730196105.git.federico.serafini@bugseng.com>
Message-ID: <alpine.DEB.2.22.394.2410291502440.2525410@ubuntu-linux-20-04-desktop>
References: <b513d40f6195226b421012e0cf42bb14279cd0b3.1730196105.git.federico.serafini@bugseng.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Tue, 29 Oct 2024, Federico Serafini wrote:
> Add Rule 11.2 and Rule 18.1 to the monitored set.
> 
> Tag Rule 7.3 as clean.
> Tag Rule 11.2 and Rule 20.7 as clean only for arm.
> 
> Rule 2.2, Rule 9.5 and Directive 4.12 are not accepted:
> do not enable them and do not tag them as clean.
> 
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>

This patch just ensures that monitored.ecl and tagging.ecl reflect
rules.rst.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

One one comment below


> ---
>  automation/eclair_analysis/ECLAIR/monitored.ecl | 5 ++---
>  automation/eclair_analysis/ECLAIR/tagging.ecl   | 7 +++----
>  2 files changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/automation/eclair_analysis/ECLAIR/monitored.ecl b/automation/eclair_analysis/ECLAIR/monitored.ecl
> index 4d9ef1bd83..4e1deef7a7 100644
> --- a/automation/eclair_analysis/ECLAIR/monitored.ecl
> +++ b/automation/eclair_analysis/ECLAIR/monitored.ecl
> @@ -6,13 +6,11 @@
>  -enable=MC3R1.D4.7
>  -enable=MC3R1.D4.10
>  -enable=MC3R1.D4.11
> --enable=MC3R1.D4.12
>  -enable=MC3R1.D4.14
>  -enable=MC3R1.R1.1
>  -enable=MC3R1.R1.3
>  -enable=MC3R1.R1.4
>  -enable=MC3R1.R2.1
> --enable=MC3R1.R2.2
>  -enable=MC3R1.R2.6
>  -enable=MC3R1.R3.1
>  -enable=MC3R1.R3.2
> @@ -43,10 +41,10 @@
>  -enable=MC3R1.R9.2
>  -enable=MC3R1.R9.3
>  -enable=MC3R1.R9.4
> --enable=MC3R1.R9.5
>  -enable=MC3R1.R10.1
>  -enable=MC3R1.R10.2
>  -enable=MC3R1.R11.1
> +-enable=MC3R1.R11.2
>  -enable=MC3R1.R11.7
>  -enable=MC3R1.R11.8
>  -enable=MC3R1.R11.9
> @@ -66,6 +64,7 @@
>  -enable=MC3R1.R17.4
>  -enable=MC3R1.R17.5
>  -enable=MC3R1.R17.6
> +-enable=MC3R1.R18.1
>  -enable=MC3R1.R18.2
>  -enable=MC3R1.R18.6
>  -enable=MC3R1.R18.8
> diff --git a/automation/eclair_analysis/ECLAIR/tagging.ecl b/automation/eclair_analysis/ECLAIR/tagging.ecl
> index 76032b1fe1..e1d4ed012a 100644
> --- a/automation/eclair_analysis/ECLAIR/tagging.ecl
> +++ b/automation/eclair_analysis/ECLAIR/tagging.ecl
> @@ -28,7 +28,6 @@ MC3R1.D4.14||
>  MC3R1.R1.1||
>  MC3R1.R1.3||
>  MC3R1.R1.4||
> -MC3R1.R2.2||
>  MC3R1.R2.6||
>  MC3R1.R3.1||
>  MC3R1.R3.2||
> @@ -42,6 +41,7 @@ MC3R1.R6.1||
>  MC3R1.R6.2||
>  MC3R1.R7.1||
>  MC3R1.R7.2||
> +MC3R1.R7.3||
>  MC3R1.R7.4||
>  MC3R1.R8.1||
>  MC3R1.R8.2||
> @@ -54,7 +54,6 @@ MC3R1.R8.14||
>  MC3R1.R9.2||
>  MC3R1.R9.3||
>  MC3R1.R9.4||
> -MC3R1.R9.5||
>  MC3R1.R10.2||
>  MC3R1.R11.6||
>  MC3R1.R11.7||
> @@ -109,11 +108,11 @@ MC3R1.R22.10"
>  -setq=target,getenv("XEN_TARGET_ARCH")
>  
>  if(string_equal(target,"x86_64"),
> -    service_selector({"additional_clean_guidelines","MC3R1.D4.3"})
> +    service_selector({"additional_clean_guidelines","none()"})

This should also added to the commit message, also D4.3 is not accepted.
I can add it to the commit message on commit.


>  )
>  
>  if(string_equal(target,"arm64"),
> -    service_selector({"additional_clean_guidelines","MC3R1.R2.1||MC3R1.R5.3||MC3R1.R7.3||MC3R1.R16.3||MC3R1.R16.6"})
> +    service_selector({"additional_clean_guidelines","MC3R1.R2.1||MC3R1.R5.3||MC3.R11.2||MC3R1.R16.3||MC3R1.R16.6||MC3R1.R20.7"})
>  )
>  
>  -reports+={clean:added,"service(clean_guidelines_common||additional_clean_guidelines)"}
> -- 
> 2.43.0
> 


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 06:38:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 06:38:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827898.1242659 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t62L3-0000Ub-Hk; Wed, 30 Oct 2024 06:37:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827898.1242659; Wed, 30 Oct 2024 06:37: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 1t62L3-0000US-D2; Wed, 30 Oct 2024 06:37:53 +0000
Received: by outflank-mailman (input) for mailman id 827898;
 Wed, 30 Oct 2024 06:37: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t62L2-0000UM-PU
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 06:37:52 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 794110ea-9689-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 07:37:46 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a850270e2so987916266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 23:37:46 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c816:25ef:94da:68a4:e7f?
 (p200300cab721c81625ef94da68a40e7f.dip0.t-ipconnect.de.
 [2003:ca:b721:c816:25ef:94da:68a4:e7f])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f298ddbsm545229366b.142.2024.10.29.23.37.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 23:37:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 794110ea-9689-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijc5NDExMGVhLTk2ODktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjcwMjY2LjI0MzMyNSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730270266; x=1730875066; 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=EiMr7waJ8Y2vD1jForMjqRGAE5NffveGXuOE/1vAqLE=;
        b=Alpe/kUyl+pJO4PGd9sks2C2ViPH2Q4AaEf+mLmSy2or62wNvnxOrptYyteyEzJoLW
         UWKQlvUURWfw+ge2A8k4kts0Qw08gp6gHonbmcWHm1hY2NwSs+HFtoVA3z7xiiXq9SYT
         tys2q2lwONQJojZloPnIZaphwzUo7qQHCRYQQTpqJB4fsQn854c9NGxuzMzhbpYZdblQ
         TQlNiTQvPCC3TiJ1I/xC7H2Ev+xdEChFVpKqILq3Qgey1sRjyPkJlzgrtes8+PyHWdak
         lSAtU/KAFz0N5sJmyfTCwZwpfynmjGrlaxThZ+i6aukz1olkDeZrMjdDmnpMt/6+a462
         i2FA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730270266; x=1730875066;
        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=EiMr7waJ8Y2vD1jForMjqRGAE5NffveGXuOE/1vAqLE=;
        b=V9J9EFIVZkX502bs5gZS+h6Z/6F2Sz8rhqXuAL7XFlGGqX+0yyIFYL3gW6aRAUARe/
         d6yYm4TLQdKAeRq1tLhiRxKXxfLN7OOqcEzEpFq8usDGZHD4SpFjikpc6ek87LCQA8j9
         LqKheJSItgC/b/C4PuC7kLGWulG0jH/EwkZZiYdvhmGI+I/579VqGRYxgO8v5nswos4I
         pBr4ZwZ4Rs+KNuIpJN7Yd2w8yHwYOxSOcLsGUpBt+O2iUs3lRL0ArMlcTqtzy3WnkOeJ
         bw8SKYQoiq5vgmkBQNWJFD/Qf/4hEiHCMZ8V+pB0lEGjTAT1BK4kbAcTarbdlZvnz0q3
         dTAA==
X-Forwarded-Encrypted: i=1; AJvYcCUeELWRAHgDcTgbuZgUnILJPpJFPdpJvrQgqOcPcBtMjJ6Gixz+9l3tNWjUdeImAFrG0iIwrLdv7Sk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxloBB+sINCeIQJwUXXnQoe18Ce3cgOzXcgEIqeG09hjlJStJDL
	BQE7iUUAxieCBnF2lyvnk56weq5bDtEz8Hx+bJhnF1FuMqoaeIZL2g2ol+5SmQ==
X-Google-Smtp-Source: AGHT+IHqa3LEgIMK+9ylqqqpjk+N7I91lnnQwH5dZeGmPgmbAXUSjGvxnIZxBf8gbEZY+HTvO8MgWg==
X-Received: by 2002:a17:907:a07:b0:a99:4ebc:82d4 with SMTP id a640c23a62f3a-a9de6192c15mr1566193566b.55.1730270265565;
        Tue, 29 Oct 2024 23:37:45 -0700 (PDT)
Message-ID: <b143ada2-9719-4701-9a03-36ee8607958f@suse.com>
Date: Wed, 30 Oct 2024 07:37:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 02/10] xen/x86: Add initial x2APIC ID to the per-vLAPIC
 save area
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-3-alejandro.vallejo@cloud.com>
 <974538f8-10b5-4fa3-9069-df6655a5d86d@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: <974538f8-10b5-4fa3-9069-df6655a5d86d@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 21:30, Andrew Cooper wrote:
> On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
>> @@ -310,19 +309,16 @@ 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;
>> +            /*
>> +             * Fix the x2APIC identifier. The PV side is nonsensical, but
>> +             * we've always shown it like this so it's kept for compat.
>> +             */
> 
> In hindsight I should changed "Fix the x2APIC identifier." when I
> reworked this logic, but oh well - better late than never.
> 
> /* The x2APIC_ID is per-vCPU, and fixed irrespective of the requested
> subleaf. */

Can we perhaps avoid "fix" in this comment? "Adjusted", "overwritten", or
some such ought to do, without carrying a hint towards some bug somewhere.

>> --- 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;
> 
> ... we do normally spell it _rsvd; to make it extra extra clear that
> people shouldn't be doing anything with it.

Alternatively, to carry the "zero" in the name, how about _mbz?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 06:51:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 06:51:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827904.1242668 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t62Xz-0003Kv-Jx; Wed, 30 Oct 2024 06:51:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827904.1242668; Wed, 30 Oct 2024 06: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 1t62Xz-0003Ko-Gp; Wed, 30 Oct 2024 06:51:15 +0000
Received: by outflank-mailman (input) for mailman id 827904;
 Wed, 30 Oct 2024 06:51: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t62Xy-0003Ki-1L
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 06:51:14 +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 5858017a-968b-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 07:51:10 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9acafdb745so102157666b.0
 for <xen-devel@lists.xenproject.org>; Tue, 29 Oct 2024 23:51:10 -0700 (PDT)
Received: from ?IPV6:2003:ca:b721:c816:25ef:94da:68a4:e7f?
 (p200300cab721c81625ef94da68a40e7f.dip0.t-ipconnect.de.
 [2003:ca:b721:c816:25ef:94da:68a4:e7f])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f029874sm539342666b.79.2024.10.29.23.51.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 29 Oct 2024 23:51:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5858017a-968b-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmQiLCJoZWxvIjoibWFpbC1lajEteDYyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjU4NTgwMTdhLTk2OGItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjcxMDcwLjA0NDEsInNlbmRlciI6ImpiZXVsaWNoQHN1c2UuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730271069; x=1730875869; 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=rxchYHo5knL+Vkt/o1xf5OpDVn+3AH3aOdOv6HwX8Ag=;
        b=geYLFHeMIOWb8VjOlChV//PmOVk0vWrj7sJMqlkmq7AIHLfPfUwBUzRKBWhhosmPa2
         i19kmjMDGAYOD0BY1v/sYKEi6bKNc7xLfa2nxdVFCh2enlujKm42Z1OoLeRh3TjQL4XD
         EZkTr+v0k6PTKNJ82aSzxOR1z7+V27idJ8K3CrOYq0ZIfkVFgGfmbVs8X/TPX2qoF2bR
         4SMwBUCAjXt0DlH679Gb4cZQ/kpAW1w5V7684G94LYkG8rgVHwmIlaveEbgqi+vEXtJz
         4Qzbol+6CIW0HvpED3sSXxONZw/SeX/bWH35kGMarBvb82kad6+Xy+SqWGa7NOLEEfZV
         0ntA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730271069; x=1730875869;
        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=rxchYHo5knL+Vkt/o1xf5OpDVn+3AH3aOdOv6HwX8Ag=;
        b=gfcS2fTv8JNGEktWX24HaAJ3Gm5q9HR3s1PVkVSQxm1y7vDFEQ8F7bI+E+yV62DSKn
         5gXIHFmDBH/zECSPBapE7ETvaIQfoFVSy9PFTmi1eRdIJY0l9UhvnSVCaduQPTQWVr7I
         7OxfY7dcR28dtcjxthPOSvzrBfnsp0khx/UKfVSL/Ta3qPr8luNyIe8s/lF06MHMp+bR
         JM0r/3MlW+hF/fyt9EQ13ih3yN2QwDofwo8M+2CwIQ9VmtpkUBXc7GWoeTROOu2aLbe5
         H24ZEOSbUvkESG6BCdDX9jaKErBGS1qVR//mQCov1F7+if7mCuZaN3qXKRq0KJYbG1tr
         /Oag==
X-Forwarded-Encrypted: i=1; AJvYcCXxuHAVZohcW6EYAoz2hLxYsIPAZqRBn0rlebnBGG2A+a6hOr9nWFrvGPbBeBsq94Po8s99qpD2gPA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx1tgKirRV5YnisVB365bzBRyZv/9+5ecRdW/oyv8QhBYHl7f/s
	BBiBblULvYG4MG10DbZOXd54XdAAQDhc8eqPSBJUL8AeUrzCaPB8KKOOhP+z3w==
X-Google-Smtp-Source: AGHT+IE95yimQ66gwnbKjNW7UTbSk2zlDHDbnJPw0vLYIxLqieqHGE27DGFyY6BIUJi3J6D52175pg==
X-Received: by 2002:a17:907:72cd:b0:a9a:ca:4436 with SMTP id a640c23a62f3a-a9e40bd0b7fmr116195766b.13.1730271069339;
        Tue, 29 Oct 2024 23:51:09 -0700 (PDT)
Message-ID: <14173e8a-ec20-455a-87bf-ae6d3d9a9051@suse.com>
Date: Wed, 30 Oct 2024 07:51:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241029175505.2698661-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: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 18:55, Andrew Cooper wrote:
> We already have one migration case opencoded (feat.max_subleaf).  A more
> recent discovery is that we advertise x2APIC to guests without ensuring that
> we provide max_leaf >= 0xb.
> 
> In general, any leaf known to Xen can be safely configured by the toolstack if
> it doesn't violate other constraints.
> 
> Therefore, introduce guest_common_{max,default}_leaves() to generalise the
> special case we currently have for feat.max_subleaf, in preparation to be able
> to provide x2APIC topology in leaf 0xb even on older hardware.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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

I'll have to update the AMX logic accordingly (maybe also the AVX10 one).

I'd like to point out that this highlights a naming anomaly in
x86_cpu_policies_are_compatible(): update_domain_cpu_policy() passes in
the respective max policy as first argument. Imo the first parameter of
the function would better be named "max" there.

> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>  }
>  
> +/*
> + * Guest max policies can have any max leaf/subleaf within bounds.
> + *
> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
> + * - Some VMs we'd like to synthesise leaves not present on the host.
> + */
> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
> +}
> +
> +/* Guest default policies inherit the host max leaf/subleaf settings. */
> +static void __init guest_common_default_leaves(struct cpu_policy *p)
> +{
> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
> +}

Which sadly still leaves open how to suitably shrink the max values,
when they're larger than necessary (for the guest).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 08:45:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 08:45:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827917.1242680 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t64KR-00015W-KI; Wed, 30 Oct 2024 08:45:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827917.1242680; Wed, 30 Oct 2024 08: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 1t64KR-00015P-G0; Wed, 30 Oct 2024 08:45:23 +0000
Received: by outflank-mailman (input) for mailman id 827917;
 Wed, 30 Oct 2024 08:45: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=7FCp=R2=cloud.com=christian.lindig@srs-se1.protection.inumbo.net>)
 id 1t64KP-00015J-UT
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 08:45:22 +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 484604c7-969b-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 09:45:14 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-539f2b95775so7278325e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 01:45:14 -0700 (PDT)
Received: from smtpclient.apple ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec818bsm557506666b.17.2024.10.30.01.45.12
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 30 Oct 2024 01:45:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 484604c7-969b-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzEiLCJoZWxvIjoibWFpbC1sZjEteDEzMS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQ4NDYwNGM3LTk2OWItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjc3OTE0LjkxMTMxLCJzZW5kZXIiOiJjaHJpc3RpYW4ubGluZGlnQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730277914; x=1730882714; 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=ya9siQaff7yrs6VkC2sMft2PPhKGAsqT/t4iJJBvyBs=;
        b=RQ3ynDPV8Ti0VB9a9UAPARusD0MrVSebZN67YiDQ/469KdBMGgEcaNtpo1gh7iLz6t
         vhMqZRIynphUQat/Z0frY82ctU0EXPFTeUEjk+pxyGQhKjmnDdqhgfiM14gNANKigFnR
         dlD27bRIV6C4N9jyvhFpGwLoi2HF4kNcwsz2w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730277914; x=1730882714;
        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=ya9siQaff7yrs6VkC2sMft2PPhKGAsqT/t4iJJBvyBs=;
        b=L4lzp6nkHm/AXc8wbyb05CcZU/n01lUtNagHhVz/WrmYQm8Hu0gnkSi4FfoS49A14L
         WeU7QSyDZ5KnOC74oXcRbddDitiIPr4qfuwKoC4Uhayy4eu0vXuuxPyPvIbCPZQm7YOn
         HICk/5WEq3KPQw0QTe9OqdyC1fZ6oa3BBxLZXQERwRreynYU2CHywT60tDzCtk6nrXU2
         wpC1yAi9OHdSx+9rhySni1s3zoc6+sKH1fzxs7gYOrginhhfuq1oHJs/HMt+EyjdXtBV
         joAgmG1WyerMbAxZWvattIbPi71XcNDQQKeup4e/jXf7T11h1faVJNHTsEO4SSsjCzT2
         Gckw==
X-Gm-Message-State: AOJu0Ywl6gazs4lNIyQfLRbuvhpHP398tCW+Um8R5dxAx0RBEzO7Dl3X
	oTzzZCylISifGOBQ0fIEwzBrB8L6ZDEHZGaqAlWxDVNpB182GupmHjLujmHQURo=
X-Google-Smtp-Source: AGHT+IHH5vfdUbKdl4OijcycyqkYsKiP+5hhbqtQ2CuHYNyXjTyq4MYLhWC7cf27g1ji8Gj5TgrYyg==
X-Received: by 2002:a05:6512:1285:b0:539:9ee4:baab with SMTP id 2adb3069b0e04-53b348daf62mr12360026e87.30.1730277913850;
        Wed, 30 Oct 2024 01:45:13 -0700 (PDT)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\))
Subject: Re: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive types
From: Christian Lindig <christian.lindig@cloud.com>
In-Reply-To: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
Date: Wed, 30 Oct 2024 08:45:01 +0000
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Juergen Gross <jgross@suse.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 =?utf-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
 Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.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>
Content-Transfer-Encoding: quoted-printable
Message-Id: <D9462785-D2AF-4354-8B07-69413E952B88@cloud.com>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
X-Mailer: Apple Mail (2.3774.600.62)



> On 29 Oct 2024, at 18:16, Alejandro Vallejo =
<alejandro.vallejo@cloud.com> wrote:
>=20
>=20
> The invariant I'd like to (slowly) introduce and discuss is that =
fields may
> have bitflags (e.g: a packed array of booleans indexed by some =
enumerated
> type), but not be mixed with wider fields in the same primitive type. =
This
> ensures any field containing an integer of any kind can be referred by =
pointer
> and treated the same way as any other with regards to sizeof() and the =
like.

Acked-by: Christian Lindig <christian.lindig@cloud.com>


Fine with me but the OCaml part is not very exposed to this.

=E2=80=94 C=


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 08:59:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 08:59:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827923.1242688 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t64Y6-0003Ac-OM; Wed, 30 Oct 2024 08:59:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827923.1242688; Wed, 30 Oct 2024 08: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 1t64Y6-0003AV-LZ; Wed, 30 Oct 2024 08:59:30 +0000
Received: by outflank-mailman (input) for mailman id 827923;
 Wed, 30 Oct 2024 08:59: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t64Y5-0003AP-Uv
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 08:59:29 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 42e072c3-969d-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 09:59:24 +0100 (CET)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a9a156513a1so994439366b.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 01:59:24 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1e1a6bfesm556135566b.19.2024.10.30.01.59.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 01:59:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42e072c3-969d-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmIiLCJoZWxvIjoibWFpbC1lajEteDYyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQyZTA3MmMzLTk2OWQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjc4NzY0Ljk0NzczMywic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730278764; x=1730883564; 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=UJJL7BbHzklazQyNw54jptkXrs4TvgBkQxtspX9M0BI=;
        b=XQBmdUPfvPstm/SbMkG+QL1bPseAGHZ28IHA04I+xcvh0iVttWQdtIwfgxD3VkIytu
         yKEzRRRaG7Z4UQMF1OQ2sHOzqJvF/Xcq85w5oh+oznf8iMj5UPdd6YBromdoj2IIp1rg
         g4WKj9//PMePOxvocQ2FiE5o8UYyFGwEOQkBw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730278764; x=1730883564;
        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=UJJL7BbHzklazQyNw54jptkXrs4TvgBkQxtspX9M0BI=;
        b=P2Jw8/Wkqd2IoveG33ko5VgyFOIxiLSStipaligNCAUb84eHopB38DyyA7ShwMSXMo
         qBKlvsMqgI5pDqDS4NQRsHYyJSnI1j5i64cZFk6rRPeEyOVJuWU43wZpLpnuOylIB+N4
         AN7NRuSE2tJO7yDly26l9GSumXPNwcqjed01yEB/2mwby6/VFFIMEV4NK6E+WFPlzgGW
         9I21yVf9efhuoIdYC/X4HVXFa6/ZRGb25aVYT0vCWiirSxGz3CM5zmesJC6Vyc7lJxg6
         kxFRNIz7NFHuUVG3U+FsULMBDwqTn28F24cioX3TnWP8YCtCnIfOVFTQn5CONVk4CrGi
         DxRQ==
X-Gm-Message-State: AOJu0YzUEm/sAhRhy4xHnWP36YKAzMXmOV0tuRfX1iHJV6nKuNg8ZvHd
	casScMG5fBXP9sGh9I15hrGKp5btyLJnabVUWyY9qR/WDwew+GbFS6UH/30Senk=
X-Google-Smtp-Source: AGHT+IH+6ZGwYDENhUTAH/YrLpCNO26dQ8isy3aF5wkrgKU+NuXFgBshsnXO2xmxcGkEYgcz32JtHA==
X-Received: by 2002:a17:907:971f:b0:a9a:1585:dd3b with SMTP id a640c23a62f3a-a9de5ee1a7fmr1319495066b.21.1730278764179;
        Wed, 30 Oct 2024 01:59:24 -0700 (PDT)
Date: Wed, 30 Oct 2024 09:59:23 +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>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
Message-ID: <ZyH1az6sb2wnVxgu@macbook>
References: <20241029175505.2698661-1-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: <20241029175505.2698661-1-andrew.cooper3@citrix.com>

On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
> We already have one migration case opencoded (feat.max_subleaf).  A more
> recent discovery is that we advertise x2APIC to guests without ensuring that
> we provide max_leaf >= 0xb.
> 
> In general, any leaf known to Xen can be safely configured by the toolstack if
> it doesn't violate other constraints.
> 
> Therefore, introduce guest_common_{max,default}_leaves() to generalise the
> special case we currently have for feat.max_subleaf, in preparation to be able
> to provide x2APIC topology in leaf 0xb even on older hardware.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> 
> On a KabyLake I have to hand, here's the delta in what xen-cpuid -p reports:
> 
>   git diff --no-index xen-cpuid-p-{before,after}.log
>   diff --git a/xen-cpuid-p-before.log b/xen-cpuid-p-after.log
>   index 5a76d05..24e22be 100644
>   --- a/xen-cpuid-p-before.log
>   +++ b/xen-cpuid-p-after.log
>   @@ -61,7 +61,7 @@ Host policy: 33 leaves, 2 MSRs
>      index    -> value
>      000000ce -> 0000000080000000
>      0000010a -> 000000000e000c04
>   -PV Max policy: 33 leaves, 2 MSRs
>   +PV Max policy: 58 leaves, 2 MSRs
>     CPUID:
>      leaf     subleaf  -> eax      ebx      ecx      edx
>      00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
>   @@ -75,7 +75,7 @@ PV Max policy: 33 leaves, 2 MSRs
>      0000000d:00000000 -> 00000007:00000000:00000340:00000000
>      0000000d:00000001 -> 00000007:00000000:00000000:00000000
>      0000000d:00000002 -> 00000100:00000240:00000000:00000000
>   -  80000000:ffffffff -> 80000008:00000000:00000000:00000000
>   +  80000000:ffffffff -> 80000021:00000000:00000000:00000000
>      80000001:ffffffff -> 00000000:00000000:00000123:28100800
>      80000002:ffffffff -> 65746e49:2952286c:6f655820:2952286e
>      80000003:ffffffff -> 55504320:2d334520:30333231:20367620
>   @@ -87,7 +87,7 @@ PV Max policy: 33 leaves, 2 MSRs
>      index    -> value
>      000000ce -> 0000000080000000
>      0000010a -> 000000001c020004
>   -HVM Max policy: 35 leaves, 2 MSRs
>   +HVM Max policy: 60 leaves, 2 MSRs
>     CPUID:
>      leaf     subleaf  -> eax      ebx      ecx      edx
>      00000000:ffffffff -> 0000000d:756e6547:6c65746e:49656e69
>   @@ -103,7 +103,7 @@ HVM Max policy: 35 leaves, 2 MSRs
>      0000000d:00000002 -> 00000100:00000240:00000000:00000000
>      0000000d:00000003 -> 00000040:000003c0:00000000:00000000
>      0000000d:00000004 -> 00000040:00000400:00000000:00000000
>   -  80000000:ffffffff -> 80000008:00000000:00000000:00000000
>   +  80000000:ffffffff -> 80000021:00000000:00000000:00000000
>      80000001:ffffffff -> 00000000:00000000:00000123:2c100800
>      80000002:ffffffff -> 65746e49:2952286c:6f655820:2952286e
>      80000003:ffffffff -> 55504320:2d334520:30333231:20367620
> ---
>  xen/arch/x86/cpu-policy.c | 39 +++++++++++++++++++++++++--------------
>  1 file changed, 25 insertions(+), 14 deletions(-)
> 
> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> index b6d9fad56773..78bc9872b09a 100644
> --- a/xen/arch/x86/cpu-policy.c
> +++ b/xen/arch/x86/cpu-policy.c
> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>  }
>  
> +/*
> + * Guest max policies can have any max leaf/subleaf within bounds.
> + *
> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
> + * - Some VMs we'd like to synthesise leaves not present on the host.
> + */
> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
> +}
> +
> +/* Guest default policies inherit the host max leaf/subleaf settings. */
> +static void __init guest_common_default_leaves(struct cpu_policy *p)
> +{
> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
> +}

I think this what I'm going to ask is future work.  After the
modifications done to the host policy by max functions
(calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
better be done taking into account the contents of the policy, rather
than capping to the host values?

(note this comment is strictly for guest_common_default_leaves(), the
max version is fine using ARRAY_SIZE).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 09:09:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 09:09:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827934.1242698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t64hF-0004zo-MW; Wed, 30 Oct 2024 09:08:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827934.1242698; Wed, 30 Oct 2024 09:08: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 1t64hF-0004zh-Jq; Wed, 30 Oct 2024 09:08:57 +0000
Received: by outflank-mailman (input) for mailman id 827934;
 Wed, 30 Oct 2024 09:08: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t64hE-0004zb-N4
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 09:08:56 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9464aa4d-969e-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 10:08:51 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a26a5d6bfso981087266b.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 02:08:51 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd8e7f33sm15080595e9.6.2024.10.30.02.08.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 02:08:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9464aa4d-969e-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijk0NjRhYTRkLTk2OWUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjc5MzMxLjI0MjkzNSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730279330; x=1730884130; 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=o5YlwcfciRF4BQkRbH5q08j6Jyig2HIRg3S1KpAmIP8=;
        b=VHoHI1n8mJVuvgXPGo2cDHX6IvtO6IgUym3Og5hGhQ4I1tzwfgTqHi7ChSejmbOIrW
         zvSElvWravSe8YyUJu148BF3+PgPKsvRHW9q8r0argxxhlbgshiHxuxfrww4sMIWcJ3b
         IpYktiTzYF3YgG/5dFCl3p1AklNC5xKAP7eGN9+IPZB4rTvuxvYJETKT7isZ09Ueu9Ax
         n9jzC0Z1C5LesqljY3H6RD9T+gfMsfkQ1C1LKoSyzxF3FzOkpZppecxzXPB9quyssEef
         MYjJGqAbADOr/q4o34GJDl456MiRS8nSZ+oDj32xUWorqUVYWGBUuCtYIYd3CC3wvLkm
         oYow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730279330; x=1730884130;
        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=o5YlwcfciRF4BQkRbH5q08j6Jyig2HIRg3S1KpAmIP8=;
        b=BCGdP8Z7MhIR02Pm721qDfeJuueCVWVDkclTPm1X/k0yQzHDStZTqlsmgTur6AaFUO
         TF6Phll0tpJSwo69rgWsSccjin9M02ONUclfLIyVCfdB/ETPnUupEeUWSyT2eSPryhZo
         6uwPSC6esqWGbHZFfq/8A8Qyo6GdM6UqeejuB7nAWsGZWOqUHLZHww5ix5HO+bRlayHI
         YPvbkraKc/A9q0gTUnAGBSvabEszX1rU/EJe6HGY1JAbJ4RWx8yELD3r4PQOwJc+wMxs
         4A1n5pFEfEIilbn1vvFaQInZut4Pg2vOxxF1z+ID31scWSWpkKgo2P4yP7MieRVUd+7s
         VLHA==
X-Forwarded-Encrypted: i=1; AJvYcCUi4rHnuqHANbiQW463qvgPK62+fnG/8ofjz8Tz+Za+nQv//CYruNdsCdYuIkCJmg+kx6G/IOeAyR8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxuVjA5UQUn4GQnhMghY9cPzRc3C/KZJOCZxsyAfFdvYnGGwVxS
	D8CLFWpPquoppvNLJ75RZz3B56FfVCBjFMZKAHawUow+16tNqYDdIf/QUCGawQ==
X-Google-Smtp-Source: AGHT+IEhbZH2RLRRtuQAWS3zb/obT0e8ew/cNcfqOCcmcXycyahTCqCZ3hbTGjkWZST/IPexqG22wg==
X-Received: by 2002:a17:907:2cc3:b0:a99:ee42:1f38 with SMTP id a640c23a62f3a-a9de5d91e44mr1374333866b.31.1730279330529;
        Wed, 30 Oct 2024 02:08:50 -0700 (PDT)
Message-ID: <e89ec737-9405-4969-aca8-9a89c19c9e4c@suse.com>
Date: Wed, 30 Oct 2024 10:08:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 1/6] xen/domctl: Refine grant_opts into grant_version
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
 <20241029181632.69600-2-alejandro.vallejo@cloud.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: <20241029181632.69600-2-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 19:16, Alejandro Vallejo wrote:
> grant_opts is overoptimizing for space packing in a hypercall that
> doesn't warrant the effort. Tweak the ABI without breaking it in order
> to remove the bitfield by extending it to 8 bits.
> 
> Xen only supports little-endian systems, so the transformation from
> uint32_t to uint8_t followed by 3 octets worth of padding is not an ABI
> breakage.
> 
> No functional change
> 
> Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> ---
>  xen/include/public/domctl.h | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)

This isn't a complete patch, is it? I expect it'll break the build without
users of the field also adjusted.

> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -90,11 +90,18 @@ struct xen_domctl_createdomain {
>      int32_t max_grant_frames;
>      int32_t max_maptrack_frames;
>  
> -/* Grant version, use low 4 bits. */
> -#define XEN_DOMCTL_GRANT_version_mask    0xf
> -#define XEN_DOMCTL_GRANT_version(v)      ((v) & XEN_DOMCTL_GRANT_version_mask)
> +    /*
> +     * Maximum grant table version the domain can be configured with.
> +     *
> +     * Domains always start with v1 (if CONFIG_GRANT_TABLE) and can be bumped
> +     * to use up to `max_grant_version` via GNTTABOP_set_version.
> +     *
> +     * Must be zero iff !CONFIG_GRANT_TABLE.
> +     */
> +    uint8_t max_grant_version;
>  
> -    uint32_t grant_opts;
> +    /* Unused */
> +    uint8_t rsvd0[3];
>  
>  /*
>   * Enable altp2m mixed mode.

Just to mention it: I think while binary compatible, this is still on the edge
of needing an interface version bump. We may get away without as users of the
removed identifiers will still notice by way of observing build failures.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 09:14:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 09:14:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827941.1242709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t64mS-0006Xy-8m; Wed, 30 Oct 2024 09:14:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827941.1242709; Wed, 30 Oct 2024 09:14: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 1t64mS-0006Xr-5m; Wed, 30 Oct 2024 09:14:20 +0000
Received: by outflank-mailman (input) for mailman id 827941;
 Wed, 30 Oct 2024 09:14: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t64mQ-0006Xl-IE
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 09:14:18 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 55285e8e-969f-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 10:14:14 +0100 (CET)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539fbe22ac0so6505861e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 02:14:14 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd9a9a53sm15106595e9.30.2024.10.30.02.14.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 02:14:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 55285e8e-969f-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMmEiLCJoZWxvIjoibWFpbC1sZjEteDEyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjU1Mjg1ZThlLTk2OWYtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjc5NjU0LjU1OTc3LCJzZW5kZXIiOiJqYmV1bGljaEBzdXNlLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730279654; x=1730884454; 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=77U9kJygoKk2fPUYbr6q+Ks7XvmG1zHE/5cTi75uY8o=;
        b=HKZSQ2WAptU4WA6vuMiZpYO3IE+FyyxAqlENcnWFNNP1GBgml5u3352dbfp9/gfLae
         C4iEPhBfhZfFWrei720Nvp5Cf+fxmGZBiCVI+PLGuUFgAnQK3YKXZ4PqQbPFRn4BidF4
         Egi4pvKtjEW+BKeMyP3KHFE7nkFya1ALpQoi4VvtV+rDUw30vMBXn6vbpxAF66I7HFqR
         pBJJzbKWCwtI0cD5s+8IhExo3k0tpRKHr5R2dP777bZvckGBoLCJB4yxj9wr0evnZg01
         Ztfk9JM6OSTckgEe4VNVlAssftb7wkzDPvaE+IJC8fijGxcpZNBek53snNCmlgmdRaAT
         3jtQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730279654; x=1730884454;
        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=77U9kJygoKk2fPUYbr6q+Ks7XvmG1zHE/5cTi75uY8o=;
        b=UcHHuK++XSesxxwyvlGws3aFAl97zeDrAzfherHuLB0DhHF9TsSxpuwMCB6xVe+o6K
         SxNYXZfAU2O/e6TuM/f6jwrqtHgRUamLXPEoSX0RQL22zFsbahUrJXSsDZEi36VysBqa
         vCgQSRmEZ0bki8kLuu1Bk8BeLmJNmpk/wnVSzIiA/hljLj2JaF4ki510B2zbHmn0wEcx
         8dKQykUJ2C3+h2uFi02x6SffNw5s0MTtqtoRwC/vqOSW0fX87SQSduk5L+4ouVsgHULd
         ViPt/9DHnR0iSZbMEjlC/8DAxYyyOCKbIDWjYJZ1yNkmwpy6Z8ddRvhBwk2e3r+RR4F9
         Tj3A==
X-Forwarded-Encrypted: i=1; AJvYcCV6v2/7/mS9w6HSl0+0bfet0Nbux3uP/c0SESzw4DiakwQ13cxiptx3mB3zcFO9d899lb9YTdNUVkA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyZHwplGkj5G5jm8aAN1x3zlCqyNCsnhOlNFSZkGfrTh7NtfJnt
	gNXM8WLy7mkgCE3kzHkkz3xMlaIwJvkVnyUwqJ13rMAzySU3Y2k4jHASWFe2Cw==
X-Google-Smtp-Source: AGHT+IGi+9YEwQc5FVqOQY3Z206fvhVT0CCSY4sheLj1AEqCecRhhoMs+eqf+KIqnEApxVo8XUA14w==
X-Received: by 2002:a05:6512:318c:b0:53b:1f14:e11a with SMTP id 2adb3069b0e04-53b348d0d32mr7006875e87.15.1730279653796;
        Wed, 30 Oct 2024 02:14:13 -0700 (PDT)
Message-ID: <3bf067c7-617c-42c0-bf6d-4387d97658ae@suse.com>
Date: Wed, 30 Oct 2024 10:14:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive types
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Juergen Gross
 <jgross@suse.com>, Anthony PERARD <anthony.perard@vates.tech>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Christian Lindig <christian.lindig@citrix.com>, David Scott
 <dave@recoil.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
References: <20241029181632.69600-1-alejandro.vallejo@cloud.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: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 19:16, Alejandro Vallejo wrote:
> Non-boolean bitfields in the hypercall ABI make it fairly inconvenient to
> create bindings for any language because (a) they are always ad-hoc and are
> subject to restrictions regular fields are not (b) require boilerplate that
> regular fields do not and (c) might not even be part of the core language,
> forcing avoidable external libraries into any sort of generic library.
> 
> This patch (it's a series merely to split roughly by maintainer) is one such
> case that I happened to spot while playing around. It's the grant_version
> field, buried under an otherwise empty grant_opts.
> 
> The invariant I'd like to (slowly) introduce and discuss is that fields may
> have bitflags (e.g: a packed array of booleans indexed by some enumerated
> type), but not be mixed with wider fields in the same primitive type. This
> ensures any field containing an integer of any kind can be referred by pointer
> and treated the same way as any other with regards to sizeof() and the like.

While I don't strictly mind, I'm also not really seeing why taking addresses
or applying sizeof() would be commonly necessary. Can you perhaps provide a
concrete example of where the present way of dealing with grant max version
is getting in the way? After all your use of the term "bitfield" doesn't
really mean C's understanding of it, so especially (c) above escapes me to a
fair degree.

> I'd like to have a certain consensus about this general point before going
> establishing this restriction in the IDL system I'm working on.
> 
> My preference would be to fold everything into a single patch if we decide to
> follow through with this particular case. As I said before, the split is
> artificial for review.

That's not just a preference, but a requirement, or else the build will break
in the middle of the series (harming bisection at the very least).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 09:17:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 09:17:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827949.1242719 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t64pN-0007V0-PJ; Wed, 30 Oct 2024 09:17:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827949.1242719; Wed, 30 Oct 2024 09: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 1t64pN-0007Ut-Lq; Wed, 30 Oct 2024 09:17:21 +0000
Received: by outflank-mailman (input) for mailman id 827949;
 Wed, 30 Oct 2024 09:17: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=MZK+=R2=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t64pM-0007Un-3t
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 09:17:20 +0000
Received: from EUR03-DBA-obe.outbound.protection.outlook.com
 (mail-dbaeur03on2061d.outbound.protection.outlook.com
 [2a01:111:f403:260d::61d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c19e1494-969f-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 10:17:16 +0100 (CET)
Received: from DU2PR04CA0019.eurprd04.prod.outlook.com (2603:10a6:10:3b::24)
 by DB8PR08MB5371.eurprd08.prod.outlook.com (2603:10a6:10:114::7) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.32; Wed, 30 Oct
 2024 09:17:11 +0000
Received: from DU2PEPF00028D12.eurprd03.prod.outlook.com
 (2603:10a6:10:3b:cafe::a3) by DU2PR04CA0019.outlook.office365.com
 (2603:10a6:10:3b::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.23 via Frontend
 Transport; Wed, 30 Oct 2024 09:17:11 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DU2PEPF00028D12.mail.protection.outlook.com (10.167.242.26) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Wed, 30 Oct 2024 09:17:11 +0000
Received: ("Tessian outbound 373849c2df5a:v490");
 Wed, 30 Oct 2024 09:17:10 +0000
Received: from Lbc7d2da46996.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 A0762602-75EA-49EE-B317-026554E6F14D.1; 
 Wed, 30 Oct 2024 09:17:00 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lbc7d2da46996.2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 30 Oct 2024 09:17:00 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by VE1PR08MB5661.eurprd08.prod.outlook.com (2603:10a6:800:1b3::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.32; Wed, 30 Oct
 2024 09:16:57 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.027; Wed, 30 Oct 2024
 09:16: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>
X-Inumbo-ID: c19e1494-969f-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjYwZDo6NjFkIiwiaGVsbyI6IkVVUjAzLURCQS1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6ImMxOWUxNDk0LTk2OWYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjc5ODM2Ljc5MzA4OSwic2VuZGVyIjoibHVjYS5mYW5jZWxsdUBhcm0uY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=wZM8DFpMqyehzUt9/DMFitHu+o2g4jyziu2N7AcfHzIH0+TDU2MS177i1dIZUTgTPGFsxyP5C+D+0jY2tMKMbXiQSEtzENrLw2+1z0sv6bR55ZXiFgA5wCQFnrAHprZvnDGnlnFz/iyd6qGV0+UaNKFIlbj+8aV3LsnzgNyaGweuZ8j1+7NHgFOTripIIbWtPzvtIFmSpHBxbCSjURFrC6hRKQ8Pk+75IZ6UjbdQnoGCwiBTH0Re+ECaDtf4aCaNX9tW1YQ1Hd45mjFbtEbyqoZ7pyLKoDPKf9Tdsuy/DFdSkc7/WN07/m5ZnR9uqhSLsc0QajX9hf8t8/x1mBMmMA==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=g7bUOrtY76Iolpt9WJajCbUXNXJEVthI08g2e8pk478=;
 b=ZDXjJV/cM8Msft72s+uZVAfNhtcYW+T/eNxMxTsXmSZXZaG5UlZwyGAd/o0nqZNunnHDY1wJtiLt3hL8pE47yLG6H5wh9/kjEjlDgYY+1hWK6lQDdlhCo/zJ9a2fTgalRDx5dn8jJ/e0dd+lk5Q8WxblCIErVIOEZyKTagYP1L5rVGGhXK3JRttMmXyXln2SjNAVI6mlGKxEvY9M/rb3829GfiN/+4Fnulsil7WPthbUemYQsGcdclGUtv5eKur4L9hRLNwtTKsRL/vhuOuXlqfTBAPZPUnRwEA4a2ZityCKHKb0A13g961+4auIZjQr+zQuB3M+KSN+siIRwGGiTA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=g7bUOrtY76Iolpt9WJajCbUXNXJEVthI08g2e8pk478=;
 b=dAwEbpwgQXVu/rhmMrmxn23XMYeXbSqiB9ATlSYZm91nbpr23C0dPs5fMGrY3iFzfDawM1S/eo0FvBSVL74ip2Hxjq2gjep3x6JDvsawzNhiNC87IH4nbwPjdDucDtzfuga1oqtf0iY0313zL54Wq7ot4KB1dUOlrmB0vMJaRpA=
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=arm.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: 13bdb9c6a7b1a2af
X-TessianGatewayMetadata: /wndmWs4ADyJY7QQ3NZHDPi0W4bp5kW4aDeR5anSp9PmW1kCo/5p7qDdxTyX785NpZzUa1UdHEKwsR12zwRUGRdDB7QojDjzhGuJyCQP0rKS+2XWmJfRL3isISAj6g3sTkR+kZjnqPvzMdFZNeG++Lazqck+seeTkFn8qP6gUY8=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=o3YfWKBS1odu4fwHPmYOvgc1wo7GAd0cL3HCgb7iii8x8L8JaQabuQ++7QzvwEXY4ocOYRSDVOAnhE5swsuvfaBRINsMUie/SN1ba3rxNbXSW12Q2d7aaXivx8Qfps3lWPN1f1Dx9m6S7IysaGa8Qyi1drHZPGefMEUqQFydFevbnLLkslowHBVzxpKsLteA+2fiU3lMrM6vdvGCSctXthPAshZRPZ7AvjJJHNwpGs/iCsjIo67yI64AXV0YLxjcc4ju1QwnC7BNQdpGluMx3K0Gyd1/37jKDhvcgOhp/DpBc9vUXYCmwe8AZS1Xx038bOToOzoyxJcpi5rmARDQpg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=g7bUOrtY76Iolpt9WJajCbUXNXJEVthI08g2e8pk478=;
 b=MCzwwLuUyinZkgrhxPiWn3L77Ya9/zMrnyAxxW2BX5yhFVdMVRq4rTEzq9A/GvqnENrxqbeD5ThVUpy/haVm7YTiLZbv9rgzLfnkDgRqkIwLtJ2j0INLF8vqPGP92eTmV0yPUIe8YJe2EqsxaCD1vm5kRFOMjBsm7QJCDRcVLApqvnd703db6XL5pvejEMPICLokuqaC2xWTw8k2z1FqY7t1R3bWBU3r6+VCG6ibZwiwgIV7M7fCRRTf37zHRbQkScRH6vrWEZQcubLe6qTdsvSc7MRhDEQJ2s+YhxUxM3NE6i5aJ15T0CtVNgKtQhZcZ7u4E/hgK9HBk6TA3sIKMg==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=g7bUOrtY76Iolpt9WJajCbUXNXJEVthI08g2e8pk478=;
 b=dAwEbpwgQXVu/rhmMrmxn23XMYeXbSqiB9ATlSYZm91nbpr23C0dPs5fMGrY3iFzfDawM1S/eo0FvBSVL74ip2Hxjq2gjep3x6JDvsawzNhiNC87IH4nbwPjdDucDtzfuga1oqtf0iY0313zL54Wq7ot4KB1dUOlrmB0vMJaRpA=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Ayan Kumar Halder <ayan.kumar.halder@amd.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 v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Topic: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Index: AQHbKTd3r9ds8GMpC0a1KoGz65CsELKfBnMA
Date: Wed, 30 Oct 2024 09:16:57 +0000
Message-ID: <FE41FD6C-EBCE-4EDA-ADD4-E09A58773763@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
In-Reply-To: <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3826.200.121)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|VE1PR08MB5661:EE_|DU2PEPF00028D12:EE_|DB8PR08MB5371:EE_
X-MS-Office365-Filtering-Correlation-Id: cd2e5ee5-3815-4ea4-a9d9-08dcf8c3a2c9
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|1800799024|366016|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?R2Q0eW5nSzA0ZlF2WTF4OXNTbnc4NEJ2amwydkNVdFZJckhiQjg3cWVMdGRa?=
 =?utf-8?B?QURtRy9TcHp4TGgrTTQ5cXdkM2xCVjdwclRqVmQwVFljTElBb1AyalBLOC9V?=
 =?utf-8?B?L0szdUtwSlFtNURVY05zb1hQRUo4aGpXS0tlZjZCMU9Jckd2YUxPbEpxSFNl?=
 =?utf-8?B?Q2huSTA5ZzVpbW9POFBDQ1ZkV0RPWkpValJBTzljVE84S1JNLzFqSzJYZHMz?=
 =?utf-8?B?ZVp3RXhMWG5hMHpYSjFKbmR0R2NHd0dhbUZGcVU2MEROUDVTNXlvUWJQUFlH?=
 =?utf-8?B?RnRVUjh6a2ZpYUhqQ3RKWEpyQUE2NFR2ZlNraHY0S3R1N2pHSWNobUhzNlB4?=
 =?utf-8?B?emJUdGcrQWRlUXNFQWMwcHBnZ0VwcDhoMndKczZrSkxPUEpDSUFNM0dBMS9Y?=
 =?utf-8?B?TjlZZU9ReUF1NGI4R1pQZjVXbXdyK24wUzlRalgwSkFodDcrSSsyaGpLY0Vm?=
 =?utf-8?B?S3ZTTkNGYncvOFFER082YU9ML0J4UWNTYWhRdEI3L2Nkdm9kd3dMY3JNVVN1?=
 =?utf-8?B?RHhYdTFjdjFZMkIrblhVbnZlOGdUSjdld09sT3BsWUUrSjRrNDM4dUdZSVAy?=
 =?utf-8?B?b1hFOUFwdXdTdjdlVmgrZnlVV3JaRmJhQ3ozZFp5anY3MVVybDRmK3lTb3g0?=
 =?utf-8?B?dTcwOXhWOG93RFBzZDVidmJxTkVnRjlqWUZJYnA1eUVqVms4c0x0RjNoaHU0?=
 =?utf-8?B?enFCRHpOSkZWdlJKNFlnNHI5dWNKSlhjVE9zSlllU3d6dUgvVTlac2F2aDk1?=
 =?utf-8?B?NVJHNCtGbE5NanA1UUNnOHFjN0ttNUIzeC9WZ3ZIOWkrTlZHbnZ3Vk0zbkM2?=
 =?utf-8?B?UEQrMjNjNFFZZ0NZM0lRamM3blNDaGE3ME85akhQRm9BNDRBMDJOcDZtSHVY?=
 =?utf-8?B?OHZpcXhNQWJHQ2xWb0FQd1NZRXhyREh3V08rNEgrQTBwUEJlbmdMRmZ3WUY0?=
 =?utf-8?B?aWcxZGFYM0doNk8wU3RZTjljNU40Y2JhOUtBa2JKcTVFczQyL0YwZFMxaFRR?=
 =?utf-8?B?ZUo5d3Nzbnh0enVjR0pxcTVHUTgyVlFyKzUrSnVRcUlWS0Z6TnZHY3oyclN5?=
 =?utf-8?B?ZjBZVEJXNEtOUmdpTFVVWEVNT3JMcGdUcklYN05wdFhxWXJTbW9lRDVHM29m?=
 =?utf-8?B?OEF6ZDVNSkFHeW03RlBjMVh6T3gzQUJ4UU9remloc1hEQ1pxMUJ1L2RMeU00?=
 =?utf-8?B?NngvREt4ckcxUmtRc1pMdTIvUng5bGFtZXhpTzhzMngzTU5UY0UyVENOdng0?=
 =?utf-8?B?VU5NRW5JNGtWU3RRU1lZWkZWWXJrVHlCVUpoWTdiUWdHWFI0NmhON21IWG5R?=
 =?utf-8?B?YnRHZFU3cTcyU3h3bEdsRlErZ0pZRXh4U1UyRzRsVG8raVZib3IrTzBiNDNJ?=
 =?utf-8?B?ZGZmd3crN3lvRGc0a0w4MnQ2T3A4V1dXZ2NVQTY1b2k3U3ZqMmIyR2dSTWRB?=
 =?utf-8?B?ZGhpQ3JWN25HZW9Ma0lPWERBRGlINVBMQ3JObTJqS0RiV0lkeERCQjlWUEhn?=
 =?utf-8?B?K2lkcnhVVzBNRXhSUFdlTHY3cFBBanZVR1h1Tmo5b3kzcENFdnVESHlDeVRM?=
 =?utf-8?B?T0E5NnJHb0I4OGRmRFhnQzFEaFg1bHc2ODBHS1dpck9kclV2SHZnSWpvNXJW?=
 =?utf-8?B?SWhhWHYzejVsOStxdWhDbFp6azF3bFFTL0VDNjBzN1BuWjlJYzV1UUMreFFY?=
 =?utf-8?B?a09GaWo2ZGc4MDJVbGhTZE9ETEZhVVBxdDZpaExYL0QzNTNWSEQ4aExpWFlM?=
 =?utf-8?B?L2prYzVBbmVUMHNJdlk1aXlkNzRRQkx3UVJDTUhXUnlqS3Q4c2FCaXdqQlBU?=
 =?utf-8?B?Y3BhWHpSTXNTaUNaWGV5TWpLb2hFTWVWd2tFWHgzSjBZNDZhNzlDZGxzRlUv?=
 =?utf-8?Q?sgSOwEDysdYf8?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <CECABBA2A3AE13438C6A75B5714D960F@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5661
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DU2PEPF00028D12.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	e3832a6c-2e63-4ac9-528d-08dcf8c39a55
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|36860700013|82310400026|1800799024|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?MnVib3MzNlNmKy9JTVVkMEliNmJnZVV1VitWMFBQQm5HZityZFZrbG9zdG1K?=
 =?utf-8?B?MTA1SFBrL2I1QnFValZBZFFnY1FoVGJKUVJVSXhDTjQ4K0Z2SlJ2bk4wbjlT?=
 =?utf-8?B?b3V3VlNJVEY1RjdjWVcybEFtU3J1MGtuYkVPU0NWN3lFdjczei9MWk84ZzZk?=
 =?utf-8?B?RzFVN1RBeUJFK0hjUWI2MVloSDlEbTdYRi93VjVKNFVLSVU4UURHS3BkM204?=
 =?utf-8?B?VERVaUsxN2M2eW1iV1o2R1N5Q1VudXRVZHl3L29sVmw2Y3B6M0Q2ZkdpVFpH?=
 =?utf-8?B?dVZRNGV6aFVNQXFqT21ZTjF5L3lKSzlOOWZ1cXZVQ0ZyQXhodjlNSU04SGpv?=
 =?utf-8?B?QW01NTEvcGllUWhnekFrUmV2b1Fma1BFZ2Z4a3lnZmpIUWpsN0lqZFRMMU5S?=
 =?utf-8?B?TDZVNXpBUXIvMEVyWkVPaWlTZ1ViaWpwWVhMQkFkK1Z1RlEzUktObzdFRlNH?=
 =?utf-8?B?MWlHNXo2ZGlzZ3B5Rm9EeVdLN2h5c0M5RTBUY25ORnpGNlVQLzVMN0REZm5H?=
 =?utf-8?B?MTVQK0FBU2diTW1vUEtPTmRjWk1vQnZ3LzZ4TnJKMDlWVmM2N2M1RmVLZDlh?=
 =?utf-8?B?OEhTZlZ0Y1pYWmNWUUJpTWRibVhjcmtUNGxZczZiR1lHVzdiMDZ5cTVXWU9M?=
 =?utf-8?B?cytDNjlvY0hBRXhER0tXcnVrWVVNTEtBYWszWXhXWSsrWitMR1c1eVJsVXlQ?=
 =?utf-8?B?WldBWEVYUDlTSjdUeWZzYUwwcDRNQmtwdGpycjdQK0sranovZS9Za3B2bGZI?=
 =?utf-8?B?U0VDZmkzb2FoRXNncE5nZDIzQ0l5SWhBaU1YdjExMFVNdnJRUTBJWGZsWG9B?=
 =?utf-8?B?N1pJK09tWGxmUFd4cWdRM3cxUUJudk1nTGxraFZWUk40SVZYd2x6V3UyRnps?=
 =?utf-8?B?U2FYM3Z3QzR0SzM1ejN3TFdsRTdOUkpaeFhjZ3lDL3I1SWtNdzgxK3ErY1hP?=
 =?utf-8?B?a1hDNURLMklRS2oyMEpMNkNqcWpFNk5DU2ZyeUVkTVRhdU1iQzRIcFZkbXhC?=
 =?utf-8?B?SytGbnRBQmZPOXRCZmFrdkJycWx6c0VjRXBTSWVTdVFnWExYempVMGZ5Y2pG?=
 =?utf-8?B?UjlwdWVINFZsMzR3TW5pdTJybndYL0F5WWhzakZRU2FQVys4QWdPNDVRenU2?=
 =?utf-8?B?NmNHRlloSHhxenFZa0pGck80dVdKTVAxbkpaQi9kL1RpbHEzMWRrTXFoRVBo?=
 =?utf-8?B?WXdXVk9nQXpseEkyZ1BIaEloVEJwd3g5TXIwb0I3TnFuYnUzUC80Nzd5TFo4?=
 =?utf-8?B?MUh0eXBUVnZCZXAzWnpQM2Z2dnBkckVFdWFzbVNPSWpnYkRmNDhPS1pSZEpw?=
 =?utf-8?B?dHFWL1FGdVBkcFk2eWE4UExUeWVydngzUm1SYmQ5SDdQbTlvd3JqTXJCRlZM?=
 =?utf-8?B?Q2FkOE94MkVSaHRJbktoOU1OQ0c4cGNjOXFwWUdkVmNwdEtTb2NTL0tMcXdr?=
 =?utf-8?B?bWV4WWRQUFp2aVR5UTRKQis1Y2pXMmRqQ2d3bHN0N3JNSEowZUp6N3Q1KzBu?=
 =?utf-8?B?ZmNhTzJOdjBhUDhmTzJzc05MZ0R2WkZNcTFjSUpNUi9pRFdRK09WTU0yMkVu?=
 =?utf-8?B?dXFpVXRHQWJKcVhjOXlqT1oxbzBod2MxUEQwRTliTEU0VzYreVpUSTRQM1NL?=
 =?utf-8?B?TldTMU9qTXFILy9yMWtJU1M4YU40cHdvY3dteU9sRFdSeEZjcHlMMDZOQmRG?=
 =?utf-8?B?czRqY2tIaGpCUkJESXQwOTV4d2l2alJkcitjazZ4STFySzF4NFJiZ3NtbXV0?=
 =?utf-8?B?UWtJOWUybUxqRUdXaXdvTjBPT3ExZGp4aDhtUnhIZ3JEUUZudHoveTh6cDZj?=
 =?utf-8?B?SlFMOVd2b1IraXVhT2pkMVhmRHU4T0lnaW5zcjhnek4zYXZDUTUrN0NDMGkz?=
 =?utf-8?B?b2Mxc2VXSWFBZkRwajFQdlpzenBWUWZFakFodFRhTnowQXc9PQ==?=
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:(13230040)(376014)(36860700013)(82310400026)(1800799024)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2024 09:17:11.1172
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: cd2e5ee5-3815-4ea4-a9d9-08dcf8c3a2c9
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:
	DU2PEPF00028D12.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5371

SGkgQXlhbiwNCg0KV2hpbGUgSSByZWJhc2VkIHRoZSBicmFuY2ggb24gdG9wIG9mIHlvdXIgcGF0
Y2hlcywgSSBzYXcgeW914oCZdmUgY2hhbmdlZCB0aGUgbnVtYmVyIG9mIHJlZ2lvbnMNCm1hcHBl
ZCBhdCBib290IHRpbWUsIGNhbiBJIGFzayB3aHk/IA0KDQpDb21wYXJlZCB0byBodHRwczovL3Bh
dGNod29yay5rZXJuZWwub3JnL3Byb2plY3QveGVuLWRldmVsL3BhdGNoLzIwMjMwNjI2MDMzNDQz
LjI5NDMyNzAtMjUtUGVubnkuWmhlbmdAYXJtLmNvbS86DQoNCj4gK0ZVTkMoZW5hYmxlX2Jvb3Rf
Y3B1X21tKQ0KPiArDQo+ICsgICAgLyogR2V0IHRoZSBudW1iZXIgb2YgcmVnaW9ucyBzcGVjaWZp
ZWQgaW4gTVBVSVJfRUwyICovDQo+ICsgICAgbXJzICAgeDUsIE1QVUlSX0VMMg0KPiArDQo+ICsg
ICAgLyogeDA6IHJlZ2lvbiBzZWwgKi8NCj4gKyAgICBtb3YgICB4MCwgeHpyDQo+ICsgICAgLyog
WGVuIHRleHQgc2VjdGlvbi4gKi8NCj4gKyAgICBsZHIgICB4MSwgPV9zdGV4dA0KPiArICAgIGxk
ciAgIHgyLCA9X2V0ZXh0DQo+ICsgICAgcHJlcGFyZV94ZW5fcmVnaW9uIHgwLCB4MSwgeDIsIHgz
LCB4NCwgeDUsIGF0dHJfcHJiYXI9UkVHSU9OX1RFWFRfUFJCQVINCj4gKw0KPiArICAgIC8qIFhl
biByZWFkLW9ubHkgZGF0YSBzZWN0aW9uLiAqLw0KPiArICAgIGxkciAgIHgxLCA9X3Nyb2RhdGEN
Cj4gKyAgICBsZHIgICB4MiwgPV9lcm9kYXRhDQo+ICsgICAgcHJlcGFyZV94ZW5fcmVnaW9uIHgw
LCB4MSwgeDIsIHgzLCB4NCwgeDUsIGF0dHJfcHJiYXI9UkVHSU9OX1JPX1BSQkFSDQo+ICsNCj4g
KyAgICAvKiBYZW4gcmVhZC1vbmx5IGFmdGVyIGluaXQgYW5kIGRhdGEgc2VjdGlvbi4gKFJXIGRh
dGEpICovDQo+ICsgICAgbGRyICAgeDEsID1fX3JvX2FmdGVyX2luaXRfc3RhcnQNCj4gKyAgICBs
ZHIgICB4MiwgPV9faW5pdF9iZWdpbg0KPiArICAgIHByZXBhcmVfeGVuX3JlZ2lvbiB4MCwgeDEs
IHgyLCB4MywgeDQsIHg1DQoNCiAgICAgICAgIF7igJQgdGhpcywgZm9yIGV4YW1wbGUsIHdpbGwg
YmxvY2sgWGVuIHRvIGNhbGwgaW5pdF9kb25lKHZvaWQpIGxhdGVyLCBJIHVuZGVyc3RhbmQgdGhp
cyBpcyBlYXJseWJvb3QsDQogICAgICAgICAgICAgICBidXQgSSBndWVzcyB3ZSBkb27igJl0IHdh
bnQgdG8gbWFrZSBzdWJzZXF1ZW50IGNoYW5nZXMgdG8gdGhpcyBwYXJ0IHdoZW4gaW50cm9kdWNp
bmcgdGhlDQogICAgICAgICAgICAgICBwYXRjaGVzIHRvIHN1cHBvcnQgc3RhcnRfeGVuKCkNCg0K
PiArDQo+ICsgICAgLyogWGVuIGNvZGUgc2VjdGlvbi4gKi8NCj4gKyAgICBsZHIgICB4MSwgPV9f
aW5pdF9iZWdpbg0KPiArICAgIGxkciAgIHgyLCA9X19pbml0X2RhdGFfYmVnaW4NCj4gKyAgICBw
cmVwYXJlX3hlbl9yZWdpb24geDAsIHgxLCB4MiwgeDMsIHg0LCB4NSwgYXR0cl9wcmJhcj1SRUdJ
T05fVEVYVF9QUkJBUg0KPiArDQo+ICsgICAgLyogWGVuIGRhdGEgYW5kIEJTUyBzZWN0aW9uLiAq
Lw0KPiArICAgIGxkciAgIHgxLCA9X19pbml0X2RhdGFfYmVnaW4NCj4gKyAgICBsZHIgICB4Miwg
PV9fYnNzX2VuZA0KPiArICAgIHByZXBhcmVfeGVuX3JlZ2lvbiB4MCwgeDEsIHgyLCB4MywgeDQs
IHg1DQo+ICsNCj4gKyAgICByZXQNCj4gKw0KPiArRU5EKGVuYWJsZV9ib290X2NwdV9tbSkNCg0K
SSBzdWdnZXN0IHRvIGtlZXAgZXhhY3RseSB0aGUgcmVnaW9ucyBhcyBhcmUgaW4gUGVubnnigJlz
IHBhdGNoLg0KDQpDaGVlcnMsDQpMdWNh


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 09:41:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 09:41:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827958.1242730 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65D2-0003W4-Kw; Wed, 30 Oct 2024 09:41:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827958.1242730; Wed, 30 Oct 2024 09:41: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 1t65D2-0003Vx-Gw; Wed, 30 Oct 2024 09:41:48 +0000
Received: by outflank-mailman (input) for mailman id 827958;
 Wed, 30 Oct 2024 09:41: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t65D1-0003Vr-0Z
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 09:41:47 +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 2b7dc9b6-96a3-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 10:41:42 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-4314c4cb752so61470265e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 02:41:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd8e9145sm15878755e9.1.2024.10.30.02.41.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 02:41:41 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b7dc9b6-96a3-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmEiLCJoZWxvIjoibWFpbC13bTEteDMyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjJiN2RjOWI2LTk2YTMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjgxMzAyLjc1ODUyOSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730281302; x=1730886102; 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=FDt6JJuERNz3Ufs7fDs7RchX0F5IPwSJ6EzAs3vx4ms=;
        b=SbOklfCsqW15ZUQ1a+NAPFezU2yUEkZrW6+clRtACxfDanXOeg5JKNv8Z2N3Af54+n
         QGqHMEry0kGjrxe3hGhR0+NyZtXw4870QVVz+VtRmwJAW95+gOfKbxxVWCV1tdMbJyk3
         +s0msGsPKYMVpOR0Wi9rcM6JvhmbcfdjEK9ygpg5X3YRdzZcunuM31wMK8BkCms9Ry/L
         P44RMCR1vYPKqhBdFBv/461eghzcMisSxDZP2a8Bjg4pmWhQcPhaFxZAF2UjmKx0K+ou
         DtUGokhBH3HG14d6oOuHX8GaziWb6Xa2/B8j3lICNzjO1wCvx5hnev9a81tP7JcJPJ+Y
         XoAw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730281302; x=1730886102;
        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=FDt6JJuERNz3Ufs7fDs7RchX0F5IPwSJ6EzAs3vx4ms=;
        b=BmY0EYbKqYwZgrbtSRmKy/n3AxLBSdbAZu/IuHsDsUfYUNPkratfE4pdEebRaHZ1Ka
         fioyW/hAQKVaTjg0ukyMjzmcQHe3MvbJShHelBHP2WUCQkgqpYUUbUGiMiycGPYlPH5G
         VS0ubA8fDq3XpOPz8Oq8AYREBVwl+NNEQQ4g/bcDLLqVj/vQGLZS+cXNs8U39eNEs3Ku
         LQJEfrw9z4IKSkeVEaPpF09NErUFLelH+gkhIhHglK21Wmn+tZvV+m6MYhiU50c3+eDy
         HA9gVdyM8bp8oO5FhL7F3Gpa+ia/snMtgL4+/tLNRf043Fc4uQDQEID/UwGhnXWBdd2n
         Ys3Q==
X-Forwarded-Encrypted: i=1; AJvYcCXpp6DVNr9SZbDAid2Gg40YwmfMC8prsduz042GvcXgNVb+MLdnJsRuy/KxAq1DYOhr2D3D9AadI3g=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwMXGaPWADiyyBifBPv5SAhy5Oc5jfOfZS5fo4wYBTiOGHQ7yT3
	EY2bvfPOXdGYwSWzHYTjhpX17mzUd1xtYZ1DNcOKcLIz6qC1B27KXD0XdSusUw==
X-Google-Smtp-Source: AGHT+IE+uZUUB2wOFcZmLwikecK9P+euTTC35AcFTM2ntt5Ay83c0M088+ksTo3e4ZRHVmQsJfV3Iw==
X-Received: by 2002:a05:600c:4f85:b0:42c:de34:34c1 with SMTP id 5b1f17b1804b1-4319ac7408dmr131947425e9.2.1730281302065;
        Wed, 30 Oct 2024 02:41:42 -0700 (PDT)
Message-ID: <d03f58f0-5b93-4b23-85cb-dc2c18a4eb41@suse.com>
Date: Wed, 30 Oct 2024 10:41:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241029110351.40531-1-roger.pau@citrix.com>
 <53034f16-682e-4081-ab7e-81338c700f85@suse.com> <ZyEf8hK-XyGn6Kp8@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: <ZyEf8hK-XyGn6Kp8@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29.10.2024 18:48, Roger Pau Monné wrote:
> On Tue, Oct 29, 2024 at 05:43:24PM +0100, Jan Beulich wrote:
>> On 29.10.2024 12:03, Roger Pau Monne wrote:
>> Plus with what you said
>> earlier about vector vs EOI handle, and with the code using "vector" all over the
>> place, their (non-)relationship could also do with clarifying (perhaps better in
>> a code comment in __io_apic_eoi()).
> 
> I've attempted to clarify the relation between vector vs EOI handle in
> the first paragraph, and how that applies to AMD-Vi.  I can move
> (part?) of that into the comment in __ioapic_write_entry(), maybe:
> 
> /*
>  * Might be called before io_apic_pin_eoi is allocated.  Entry will be
>  * updated once the array is allocated and there's a write against the
>  * pin.
>  *
>  * Note that the vector field is only cached for raw RTE writes when
>  * using IR.  In that case the vector field might have been repurposed
>  * to store something different than the target vector, and hence need
>  * to be cached for performing EOI.
>  */

Sounds okay to me, yet I'd prefer a comment in __io_apic_eoi(), where it
may want wording a little differently.

>>> @@ -273,6 +293,13 @@ void __ioapic_write_entry(
>>>      {
>>>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>>>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
>>> +        /*
>>> +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
>>> +         * Entry will be updated once the array is allocated and there's a
>>> +         * write against the pin.
>>> +         */
>>> +        if ( io_apic_pin_eoi )
>>> +            io_apic_pin_eoi[apic][pin] = e.vector;
>>
>> The comment here looks a little misleading to me. clear_IO_APIC_pin() calls
>> here to, in particular, set the mask bit. With the mask bit the vector isn't
>> meaningful anyway (and indeed clear_IO_APIC_pin() sets it to zero, at which
>> point recording IRQ_VECTOR_UNASSIGNED might be better than the bogus vector
>> 0x00).
> 
> Note that clear_IO_APIC_pin() performs the call to
> __ioapic_write_entry() with raw == false, at which point
> __ioapic_write_entry() will call iommu_update_ire_from_apic() if IOMMU
> IR is enabled.  The cached 'vector' value will be the IOMMU entry
> offset for the AMD-Vi case, as the IOMMU code will perform the call to
> __ioapic_write_entry() with raw == true.
> 
> What matters is that the cached value matches what's written in the
> IO-APIC RTE, and the current logic ensures this.
> 
> What's the benefit of using IRQ_VECTOR_UNASSIGNED if the result is
> reading the RTE and finding that vector == 0?

It's not specifically the vector == 0 case alone. Shouldn't we leave
the latched vector alone when writing an RTE with the mask bit set?
Any still pending EOI (there should be none aiui) can't possibly
target the meaningless vector / index in such an RTE. Perhaps it was
wrong to suggest to overwrite (with IRQ_VECTOR_UNASSIGNED) what we
have on record.

Yet at the same time there ought to be a case where the recorded
indeed moves back to IRQ_VECTOR_UNASSIGNED.

> Looking at clear_IO_APIC_pin() - I think the function is slightly
> bogus.  If entry.trigger is not set, the logic to switch the entry to
> level triggered  will fetch the entry contents without requesting a
> raw RTE, at which point the entry.vector field can not be used as
> the EOI handle since it will contain the vector, not the IR table
> offset.  I will need to make a further patch to fix this corner
> case.

Is there actually a reason not to pass IRQ_VECTOR_UNASSIGNED there,
to have __io_apic_eoi() determine the vector? (But of course we can
also latch entry.vector from the earlier raw read.)

>>> @@ -298,9 +325,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
>>>      /* Prefer the use of the EOI register if available */
>>>      if ( ioapic_has_eoi_reg(apic) )
>>>      {
>>> +        if ( io_apic_pin_eoi )
>>> +            vector = io_apic_pin_eoi[apic][pin];
>>> +
>>>          /* If vector is unknown, read it from the IO-APIC */
>>>          if ( vector == IRQ_VECTOR_UNASSIGNED )
>>> +        {
>>>              vector = __ioapic_read_entry(apic, pin, true).vector;
>>
>> Related to my comment higher up regarding vector vs EOI handle: Here we're
>> doing a raw read, i.e. we don't really fetch the vector but the EOI handle
>> in the AMD case. Why is it that this isn't sufficient for directed EOI to
>> work (perhaps with the conditional adjusted)?
> 
> It is enough, but we don't want to be doing such read for each EOI,
> hence why we cache it in io_apic_pin_eoi.

Yet then the patch is to a fair part about improving performance, when the
functionality issue could be addressed with a far less intrusive change.
Which may in particular make a difference with backporting in mind. Plus
that may want at least mentioning in the description.

>> Then again - are we ever taking this path? Certainly not when coming from
>> clear_IO_APIC_pin(), hence ...
>>
>>> +            if ( io_apic_pin_eoi )
>>
>> ... I'm unconvinced this conditional is needed.
> 
> Hm, maybe.  I can adjust but seems more fragile to trigger a
> dereference for the extra cost of a conditional in what should be a
> non-common path anyway.

Well, I was thinking of transforming the if() into ASSERT().

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 09:51:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 09:51:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827965.1242740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65Lw-0005SZ-Fx; Wed, 30 Oct 2024 09:51:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827965.1242740; Wed, 30 Oct 2024 09: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 1t65Lw-0005SS-B0; Wed, 30 Oct 2024 09:51:00 +0000
Received: by outflank-mailman (input) for mailman id 827965;
 Wed, 30 Oct 2024 09: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=dhn2=R2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t65Lv-0005SM-Qy
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 09:50: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 7547a5e7-96a4-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 10:50:55 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2fb56cb61baso49894231fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 02:50:55 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2fd4ae94efasm2178031fa.50.2024.10.30.02.50.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 02:50:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7547a5e7-96a4-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmIiLCJoZWxvIjoibWFpbC1sajEteDIyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijc1NDdhNWU3LTk2YTQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjgxODU1Ljk2Mjg3Miwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730281855; x=1730886655; 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=I9QfHiN6KO9PbsM5LkHekGj8evBN/yUgpQqO5ZsuaCM=;
        b=J2f8NU1vrckb51o2Xy2ZA5ZmSWbt0xJtm+CTfuPO4KUXROYAYGM2ldrt0B9vObIFw7
         LBNeVqmr4ORx6SLP0RGjCZLGxACQVVZdal/qUT6IbOSfv5m/eJF/AfCV9/a+rd1ASM1v
         a+vGiDrFgj56qvXzRL5W/TNXgHxEibV86vlUOf2gtDKATEs7Qs6xEsyJcGh8dQ9U0sHg
         WALbhFAlBZoaXMxoaqa0O/rY6xZdCYdykyokl0gV8iAESXK0fFcDtgN1oQDx+iPXfbFe
         Vuqi7QA9zzkVZ9iMNMCP0Nw+wBcEEtwAZTy6iIyRAdxNN1IsJzprcGMWLlpJapqHa6zL
         grgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730281855; x=1730886655;
        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=I9QfHiN6KO9PbsM5LkHekGj8evBN/yUgpQqO5ZsuaCM=;
        b=VwzAVliyNRtUKjMtJLt3kqmYdUyjFZG5UNZMdoa48Lb7E1D56IHcMGSLCJUBVg7bZm
         Z7CBBfMNO77+acoO1WiL9meP3BIayOIsxal7Q/3G03UD7Gr6XncfDTGXMyKf2Vn+/f9W
         MOZ/HjMzkztguShy38hplEq6UbMvuqSNt/8InZN+zedkYzU8eWaTMv4/7NLtESF+BfOU
         FyUJ1GQ6HvCv2l/0QK0IO4/qOVrqJUKUHQyw/TYbxL71SxTedq0SWRRNphAZanxH4q4Q
         YKJC74km73CgaCFM5fP7xIvSeB/0tCku6SibYhyuD1blw28T38AoUSeiaGmSqQ9dGQOV
         q2Kw==
X-Forwarded-Encrypted: i=1; AJvYcCXqxLKdRPcb50e6Z2Q9AecYrwLaSS0cXaWtsA586tv2Pk1pmhoIAre5/1Erskha9mOhiP91yzo1y5Q=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yytmh0737H/sSWtjwtBlUEmSG03X2Q8PFtbQmOxgtn/0ioxUnrj
	RRRP6018ypo/oqEPNV5kG3Psod1fwWdlEA17b4TTyIomEMyu8hgp
X-Google-Smtp-Source: AGHT+IFQoB1TYL2PBCcqr63uVPx7OGGJ8JYn82dW5eFmYVUYMNTnrQdDJgfsjM+XwhrTBw0cCaXXbQ==
X-Received: by 2002:a05:651c:50b:b0:2fb:6277:71d0 with SMTP id 38308e7fff4ca-2fcbdfc5d1amr78574751fa.22.1730281854951;
        Wed, 30 Oct 2024 02:50:54 -0700 (PDT)
Message-ID: <f26637fa6f315385e0c1f2cbb338389d7c8b0587.camel@gmail.com>
Subject: Re: [PATCH v1] xen/common: move gic_preinit() to common code
From: 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>, 
	xen-devel@lists.xenproject.org
Date: Wed, 30 Oct 2024 10:50:54 +0100
In-Reply-To: <a5539c03-4e19-4739-95cf-439aa0bea9a3@suse.com>
References: 
	<b1ded26dcebf9a3228fe4062825273720e0c59fe.1730220384.git.oleksii.kurochko@gmail.com>
	 <a5539c03-4e19-4739-95cf-439aa0bea9a3@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.54.1 (3.54.1-1.fc41app1) 
MIME-Version: 1.0

On Tue, 2024-10-29 at 17:57 +0100, Jan Beulich wrote:
> On 29.10.2024 17:47, Oleksii Kurochko wrote:
> > --- a/xen/common/device.c
> > +++ b/xen/common/device.c
> > @@ -4,10 +4,14 @@
> > =C2=A0=C2=A0 *=C2=A0=C2=A0 xen/arch/arm/device.c
> > =C2=A0=C2=A0 */
> > =C2=A0=20
> > +#include <xen/acpi.h>
> > =C2=A0 #include <xen/bug.h>
> > =C2=A0 #include <xen/device_tree.h>
> > =C2=A0 #include <xen/errno.h>
> > =C2=A0 #include <xen/init.h>
> > +#include <xen/kernel.h>
> > +#include <xen/lib.h>
> > +#include <xen/types.h>
>=20
> I don't think non-ACPI configs should include xen/acpi.h here. Surely
> this
> can be moved down into the ACPI-only code section?
xen/acpi.h was included as acpi_disabled is defined there and it is
needed in commom/device.c for:
```
void __init ic_preinit(void)
{
    if ( acpi_disabled )
        ic_dt_preinit();
    else
        ic_acpi_preinit();
}
```
It seems to me that ic_preinit() could be also in generic code and just
ic_acpi_preinit() to be defined in architecture specific code.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 09:52:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 09:52:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827975.1242748 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65Nj-000643-Rk; Wed, 30 Oct 2024 09:52:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827975.1242748; Wed, 30 Oct 2024 09:52: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 1t65Nj-00063w-PH; Wed, 30 Oct 2024 09:52:51 +0000
Received: by outflank-mailman (input) for mailman id 827975;
 Wed, 30 Oct 2024 09:52: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=z9hZ=R2=gmail.com=julien.grall.oss@srs-se1.protection.inumbo.net>)
 id 1t65Ni-00063K-LQ
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 09:52:50 +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 b7a20741-96a4-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 10:52:47 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4316e9f4a40so62771275e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 02:52:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b7a20741-96a4-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmUiLCJoZWxvIjoibWFpbC13bTEteDMyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImI3YTIwNzQxLTk2YTQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjgxOTY3LjMyMjUzMywic2VuZGVyIjoianVsaWVuLmdyYWxsLm9zc0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730281967; x=1730886767; 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=q7swSm+STLbVGrfCnzK0Ro2Lvvfr5C/rf6tORPnwGRk=;
        b=iMsOvq6bm3DnR05+sRfvxusk1a2HYdhN769/lizl8rVoz+0ohUnoMnHkEAGtFtyaG2
         eMRCjyegMkDXOn+Su8Asw2f3+rrjWX8hfpHyFG0bRk29L8igzuWTUHcF/3EVUY7ak9iz
         fpFoDRYZ36YOQHSON+9wvbyMy/CMTeBHnGKkNBG4dh5OUz93VxR/wZs4aOxhXb43lRIA
         AOkn4KUm3DN/Am3UEF2vYfNSFarcBrpvZF6qbQBu+no5OGDJeGY9Rl53uB5Fjq02rrwE
         FcHdl/OiouaiQMzhvtln8XY/ANND6oA/taRa6j1rix9HiK19AwxfNMAtDb10xhfES7Vc
         douw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730281967; x=1730886767;
        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=q7swSm+STLbVGrfCnzK0Ro2Lvvfr5C/rf6tORPnwGRk=;
        b=ToHH7IyMub1g1+kTKmlAQicIuxPYmnjL2ceTjwOHV27UFAx8MSd4zVfXMLaPv2AwFn
         pnvw4V+raQcCu8kDwbgpxDr4JQkbFArrk95RFHFeyXVxvNKq5HE7uqXdcyNkAI9Izww5
         ShzFFRDRIr1eUlK00JYWkPbYn/cpzrQWn+cBV7YBtXob9IMJUMUKIPkFb41kLRs6p0GM
         U9K8CzzUsaktMWkjhPdDEIcSOmMUSHsicIhzs3Q/hY/QuI19oaGgxylUfZ88WstCAhkQ
         kwUuQxrRk0HtiqHAbXKmVEVsKrnJwD4rognr1siu08aJ65ag8HXsrM/edaQW6Y3TXnYw
         fMqA==
X-Forwarded-Encrypted: i=1; AJvYcCVrPAgz3g5F3d3dWrB6WHwGYKdsWvLgzk2zdfBT+b0ZYBJ+FVlL+TKAYwl2TiuyJJo11LJsVgupvSY=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywt8URl4FsY8fix6FBDFJmeFVUEBZHSAyTBvE8W0XpL4PX52ya+
	cvKAOqJNtBRN/voKjew9VbQTylOTL5tXKmBOvw6k1jqZKzJXwYUAQv9gjgSNdnavX5twHd9oFJ1
	WmqB2uJVO7/VWURD7SM2RLNvb6P4=
X-Google-Smtp-Source: AGHT+IHmrwqQHDNqdrxmpsFxdM+4RYbmuPHYW7VA1tOdtxLFTK3I+598XhmwckqdJWp4wzu4eVf+bla0Xos7XaF3wYM=
X-Received: by 2002:a05:600c:4f87:b0:42c:b4f2:7c30 with SMTP id
 5b1f17b1804b1-4319ad1402emr103892805e9.23.1730281966661; Wed, 30 Oct 2024
 02:52:46 -0700 (PDT)
MIME-Version: 1.0
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com> <FE41FD6C-EBCE-4EDA-ADD4-E09A58773763@arm.com>
In-Reply-To: <FE41FD6C-EBCE-4EDA-ADD4-E09A58773763@arm.com>
From: Julien Grall <julien.grall.oss@gmail.com>
Date: Wed, 30 Oct 2024 09:52:34 +0000
Message-ID: <CAJ=z9a1d2vzXh-fK5E2z-k4SOjE0cjJUGfFnaJiobvQpS+Y5Rw@mail.gmail.com>
Subject: Re: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection regions
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>, 
	"xen-devel@lists.xenproject.org" <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>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, 30 Oct 2024 at 09:17, Luca Fancellu <Luca.Fancellu@arm.com> wrote:
>
> Hi Ayan,
>
> While I rebased the branch on top of your patches, I saw you=E2=80=99ve c=
hanged the number of regions
> mapped at boot time, can I ask why?

I have asked the change. If you look at the layout...

>
> Compared to https://patchwork.kernel.org/project/xen-devel/patch/20230626=
033443.2943270-25-Penny.Zheng@arm.com/:


... you have two sections with the same permissions:

xen_mpumap[1] : Xen read-only data
xen_mpumap[2] : Xen read-only after init data
xen_mpumap[3] : Xen read-write data

During boot, [2] and [3] will share the same permissions. After boot,
this will be [1] and [2]. Given the number of MPU regions is limited,
this is a bit of a waste.

We also don't want to have a hole in the middle of Xen sections. So
folding seemed to be a good idea.

>
> > +FUNC(enable_boot_cpu_mm)
> > +
> > +    /* Get the number of regions specified in MPUIR_EL2 */
> > +    mrs   x5, MPUIR_EL2
> > +
> > +    /* x0: region sel */
> > +    mov   x0, xzr
> > +    /* Xen text section. */
> > +    ldr   x1, =3D_stext
> > +    ldr   x2, =3D_etext
> > +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=3DREGION_TEX=
T_PRBAR
> > +
> > +    /* Xen read-only data section. */
> > +    ldr   x1, =3D_srodata
> > +    ldr   x2, =3D_erodata
> > +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=3DREGION_RO_=
PRBAR
> > +
> > +    /* Xen read-only after init and data section. (RW data) */
> > +    ldr   x1, =3D__ro_after_init_start
> > +    ldr   x2, =3D__init_begin
> > +    prepare_xen_region x0, x1, x2, x3, x4, x5
>
>          ^=E2=80=94 this, for example, will block Xen to call init_done(v=
oid) later, I understand this is earlyboot,
>                but I guess we don=E2=80=99t want to make subsequent chang=
es to this part when introducing the
>                patches to support start_xen()

Can you be a bit more descriptive... What will block?

>
> > +
> > +    /* Xen code section. */
> > +    ldr   x1, =3D__init_begin
> > +    ldr   x2, =3D__init_data_begin
> > +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=3DREGION_TEX=
T_PRBAR
> > +
> > +    /* Xen data and BSS section. */
> > +    ldr   x1, =3D__init_data_begin
> > +    ldr   x2, =3D__bss_end
> > +    prepare_xen_region x0, x1, x2, x3, x4, x5
> > +
> > +    ret
> > +
> > +END(enable_boot_cpu_mm)
>
> I suggest to keep exactly the regions as are in Penny=E2=80=99s patch.

See above. Without any details on the exact problem, it is difficult
to agree on your suggestion.

Cheers,


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:08:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:08:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827982.1242759 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65ct-0008QC-40; Wed, 30 Oct 2024 10:08:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827982.1242759; Wed, 30 Oct 2024 10:08: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 1t65ct-0008Q5-1D; Wed, 30 Oct 2024 10:08:31 +0000
Received: by outflank-mailman (input) for mailman id 827982;
 Wed, 30 Oct 2024 10:08: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=MZK+=R2=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t65cs-0008Pz-31
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:08:30 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on20616.outbound.protection.outlook.com
 [2a01:111:f403:2612::616])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e70c887a-96a6-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:08:26 +0100 (CET)
Received: from AM0PR02CA0226.eurprd02.prod.outlook.com (2603:10a6:20b:28f::33)
 by AS4PR08MB8022.eurprd08.prod.outlook.com (2603:10a6:20b:585::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.20; Wed, 30 Oct
 2024 10:08:20 +0000
Received: from AM3PEPF00009BA2.eurprd04.prod.outlook.com
 (2603:10a6:20b:28f:cafe::8d) by AM0PR02CA0226.outlook.office365.com
 (2603:10a6:20b:28f::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.26 via Frontend
 Transport; Wed, 30 Oct 2024 10:08:20 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM3PEPF00009BA2.mail.protection.outlook.com (10.167.16.27) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Wed, 30 Oct 2024 10:08:19 +0000
Received: ("Tessian outbound 4f9bb016c0c5:v490");
 Wed, 30 Oct 2024 10:08:19 +0000
Received: from L3f38e68b004f.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 11F92382-86A6-467D-8A67-F4F1B595F35C.1; 
 Wed, 30 Oct 2024 10:08:13 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L3f38e68b004f.2 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Wed, 30 Oct 2024 10:08:13 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by DB9PR08MB7770.eurprd08.prod.outlook.com (2603:10a6:10:396::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.20; Wed, 30 Oct
 2024 10:08:09 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.027; Wed, 30 Oct 2024
 10:08: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: e70c887a-96a6-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjYxMjo6NjE2IiwiaGVsbyI6IkVVUjA1LUFNNi1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6ImU3MGM4ODdhLTk2YTYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjgyOTA2LjI1Nzc0Niwic2VuZGVyIjoibHVjYS5mYW5jZWxsdUBhcm0uY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=UtC4ziTr2XiX4IbwM+NeW9LnnK0qfLw8LVHVsPEa1/s3tgxDcgJ7QpE4cKpfIz7MFIeHiQLcUxQkIhJTJMt7wpaNi5RycXvOCmwUSVVsxZ6QH3offVQ7CIbu2veNrbuxWMtAQ/bLybzbQnhKmEQTF6whR19PkyzRfP/rBfTEky5fQVm6ySKHXJEVDQAe0HpqS0eF5LIeanUGykOnyVJGlW2P3oWRyumr8ETPhKR1e/mgraEgCLML5sDMTB8cnTVSxCVy8WP+/8JEqtQ7sDQ8ySqG6f1GQYOtElF0J4puQfhJkRV3gKr0oY79QIeQexmYIP0vRRXoWpg8iQWa9o/WMg==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=upE9IaCDrPH45d35ED35SGKZdtetYYVzm4el82dTgTo=;
 b=aekUPiN2btp1mZGW4YzpMRXtmfdij1JWKOsq+6XlrmV6tdWiXEnF41RyXiT6/JfBRUHYHcZb5eJSUv0zJz8IrwyBs2Z9dGvlxeQHUmOktbCyzd2l6hegsKv5O9PI4B2Zi2iy/xfTMLHWtdkyH5Q5vDQxXv2I7eKYpPxlkr8C5GfE5+gn9Rm6RSJpDFHLLq2M+DqfagosrNMJZyzv4VQPKwCtAM7X67pdaRJrZyOOA9eaRBlGX4tB9HIyGtFbBSkPJxdcCq+WPJrEN4jZqfjlovR6RKi5vwK9IwbRdtzn4Nel25HKNaTAspRzegnekklO1DOQpOAK/N0FhRf8gwuvjA==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=upE9IaCDrPH45d35ED35SGKZdtetYYVzm4el82dTgTo=;
 b=eYn7cdm+kZ1GOZKwy3G5/EVnSz7b490IF0duXH6y20mxGNDXaMtglk+GC4nqudBWUuLbITuqOzzYrnCbh9ifFReARa7yBl4RfhLElcFterVhdFWr+aFdvImSTLVU980ev34o/UZI3euE0PJDzyVrJL9O1nS2/kEdn/DzZ+OnkYo=
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=arm.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: 82e2d6e56b298563
X-TessianGatewayMetadata: nB1QazjEBVMvTrPa2jS5hsJrjN95bKxoJZG6Hui7wR+TW4qC+lEx43g2Y0decRqQUDynTAl/b2oTTaHGXueyNWTg1zMQ+DAFdJ4uCbEUBF14i1nBZftA7o7DcnaDXrOcJHqFksoJjLSk1jRaw5kIP8nQexHmvYdL23Z2O1Syd9g=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=ESqhMtPgBYo0ceSj9tqHjZXbtEeXRk09kyAiUzM6DEHeXIYrdB0/0+O+x6QZTPPoMt+v1DC8Skmkl/rMYIw80jLARJ+Vl+FWmjtSMa9Arpj/hf/JAa15HKDleeaetXragHYPFnR0SYmivVmwQMvSeQ0sVbEKySyNblRFf97p1rFkVu3EpN8qPetwStzsPnFsGRK6EWXhoK/jry0IVXtNNW/BQaaoBHN3dHi5czqyaKD3RtXfcq2o//ND5zvUcbaCE2SsMHygqlKg3jsT/Qoyyce2nUYCLAsPflCta4WDMWPx0qkr9oNd9iXows4qLOYsVxUcTUzRkrK17ATWZk2Yeg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=upE9IaCDrPH45d35ED35SGKZdtetYYVzm4el82dTgTo=;
 b=qJl6BjM0/BVjfJLBnCSBvv6mESTOPmtShhVMqkaYRrVXoXQ3au+KjIqi7qeNYyHO5RYRalP5q0t//+LV60C+dThpPbeHPr0x3EG20VCwy25d3YM82eEMavrN0kTarSTJmIRWTrSvLNrlXSf5edBkW5OecPHRoB3e5imUXXCuV7BPZ+SAnjv1a18a2nCGyoS2rnb8nNuapdNs9kV/P1KMZ9XgnK/MHYptPRUXHHcFiOKASdAEGyBanxx65aUKGmY02OKEtSNln/FZ9/qo7QfFv3aE05aCiVb04zbQIo6Z/s+bvBqMuyiEBC854wAE8jMPn0hsOtj12ome4y49YzB5kw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=upE9IaCDrPH45d35ED35SGKZdtetYYVzm4el82dTgTo=;
 b=eYn7cdm+kZ1GOZKwy3G5/EVnSz7b490IF0duXH6y20mxGNDXaMtglk+GC4nqudBWUuLbITuqOzzYrnCbh9ifFReARa7yBl4RfhLElcFterVhdFWr+aFdvImSTLVU980ev34o/UZI3euE0PJDzyVrJL9O1nS2/kEdn/DzZ+OnkYo=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Julien Grall <julien.grall.oss@gmail.com>
CC: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	"xen-devel@lists.xenproject.org" <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>
Subject: Re: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Topic: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Index: AQHbKTd3r9ds8GMpC0a1KoGz65CsELKfBnMAgAAKAQCAAARNAA==
Date: Wed, 30 Oct 2024 10:08:09 +0000
Message-ID: <3963FE44-9ED1-4462-BD42-DA1B1A5040C5@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
 <FE41FD6C-EBCE-4EDA-ADD4-E09A58773763@arm.com>
 <CAJ=z9a1d2vzXh-fK5E2z-k4SOjE0cjJUGfFnaJiobvQpS+Y5Rw@mail.gmail.com>
In-Reply-To:
 <CAJ=z9a1d2vzXh-fK5E2z-k4SOjE0cjJUGfFnaJiobvQpS+Y5Rw@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.3826.200.121)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|DB9PR08MB7770:EE_|AM3PEPF00009BA2:EE_|AS4PR08MB8022:EE_
X-MS-Office365-Filtering-Correlation-Id: 65349b9d-9e21-403f-d3c6-08dcf8cac7aa
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?c1A4V2hDQVlvNVZyYlNlZ2EyZGUwYzRSdkRzSXpQSHZPUlI0a2FkZnJvbERK?=
 =?utf-8?B?VDcyVmJsdkRHZWRSNkliTUR3akFjREViKzZ3K3lyY3YxSnZVVzFrNlRXSmov?=
 =?utf-8?B?V1Q1L2E2U25YdURwdGcvVXRNVlJDdnBqRHFOeU1iQUpCU2pzMnVLZ0dKWm85?=
 =?utf-8?B?V3RRcEVidk4weUYvR3ZFZmJneW5iMWc5VXBhUk9NSmFzamxsREMwR3dPTWtD?=
 =?utf-8?B?VWF0TlA0NGRiVUdOTHphNDNxMUtLditIVUZaV2Q3RytQV2FSYmpmdTFwK1Vp?=
 =?utf-8?B?YTZJd1VUdFhCUUowcDhOT2FMZVRWclAxSStoSUJ2N21xQlVYMnJwQnR3N0Iz?=
 =?utf-8?B?Z3JUTHhWMm5KZFVYcnRGejlXdGNtUENhOXEzd0pSbSs2OGpaTVltMDhabWhJ?=
 =?utf-8?B?cGh4WC9EbCt2a0hiQ0pReEZTWlhuaTZFbFFsYkJsRGJBNE1CQnd0ZnNGMDJl?=
 =?utf-8?B?WVNIdEZWclJlUkFzZzRqS01xWlJuRWZVUkFXbC85aS95UndjajN4VHJSYzJm?=
 =?utf-8?B?K3hmMHZIU25vdWpKR2QzSDBpR2dWdDc4UTJOWXVzbmd0NzNHQURPOEdHSjFt?=
 =?utf-8?B?Nm5ma1J5NWNQT2pjbS9wUzhHSVlZZ3JsRUJEdjN0Yk5LTk1lRFU2M0Z3elM5?=
 =?utf-8?B?TU4rL0hLbWVXMFBXa1FURGtxVmlQUmc2MXdjWEVwVmc1VldKN3ZBYjFtWmhH?=
 =?utf-8?B?R05aSithRTZuSTNzVStRbXlHVkpya3RrUzBOV2RYM3pzTUcyVmxaMHdleWp0?=
 =?utf-8?B?cGp5VElBUzNhNnZ3ckFBbFpmMkozVEVuNzN5c3dqQmtsREtxV0tXYzkxUEdw?=
 =?utf-8?B?K2M0UHN1eWFhQ1FZSnFMa2dTNHNwNjBieDJ5MHVud215ZEZpVEREbFFPMzN5?=
 =?utf-8?B?VHNLbko5amo1VSs3a1BLcmRscTJPOWM4ZGt0SFBqQ0ptc3pVNVlGMnRDRm1P?=
 =?utf-8?B?OUtaS09kcVBqUzNnUTdmL2NHK0FGRTExRWp2TFFCMkI4Z2ttZFFwYnZGUU1M?=
 =?utf-8?B?TmEyU2IxSlFiODFPQWVHYlJpM3kxYnFaNWx3ZS94TWJpdUVTWWxKMi96TWZR?=
 =?utf-8?B?ckRaNU1sTW9MM3ROQm5yVDBXbnNxK1h0SWdVeVh4eS9mZ2puT09UeUV3VEJs?=
 =?utf-8?B?TmExSnQ3K3YxcFduRElpczZaelJCWkU4cDVhTUZHU1IvNnB5ZXplN1NrZXlP?=
 =?utf-8?B?NE5IZTloUmlHdEZuaXlBSFd5WGNOV0xTa1FFSGRPYk92c2M2Wmt0ZzJtOWZz?=
 =?utf-8?B?dVVMMDZSZFVxWG95V29sUmFzL3VmbXBrQ1A1dy80TVk0RndUQW5XejVSeWh6?=
 =?utf-8?B?eHpVK3JyYjFDK21BR2tzZFVrSURCeHM4QjRZZk1FcUNtdDl0dnVwbW01NVor?=
 =?utf-8?B?MHpNbU9VN3pkNkhUT0xaVFdhRWpCUktCOWtUVmVWblBqLzBwOXJMMDlVQXB2?=
 =?utf-8?B?a0hjWVRIZkQ3L05sRU11bXArbHZVSTAweFd6b3BiaHFmc0ZvaUJVVjBCZmVB?=
 =?utf-8?B?WDQwUmlRNVJQck1SbmgvODI0cUJYMDRIUitlR2JNSFpGd3dlVmlnTzRLWER0?=
 =?utf-8?B?am5zQUdlUThsRk1OK0syeHVKNll0SGcyRDVsNEFxRkIzZFZSNURjdVdvQ2NX?=
 =?utf-8?B?a3lpcXkvYjBHNjFhRVg0R1FlaWdXeGJCczM4MWYrTS80clJsSlo5b1U4TVdi?=
 =?utf-8?B?ZTNJb3k3UnhjU3VNNUZzYURoaXh1WXZuRzlpanN3UnAyMkNjUlYwellKWWJY?=
 =?utf-8?B?VE4yZnVVK1lVR3BTQjhoazdzYVFFclQzWVArS0d1MFpQV29WVjdMdk01cnFV?=
 =?utf-8?B?TWRKSDJBaWtKbXJpV3haSmp6VmhibzRQRlpJeC95SVBvNWdkc2EyT1pncjRw?=
 =?utf-8?Q?CM3XMjl/tc+/f?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <A52AAF3DDA4B5C4F951B0797960F3BD3@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7770
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM3PEPF00009BA2.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d08158e9-b80a-4273-6d9f-08dcf8cac173
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|82310400026|35042699022|376014|36860700013|1800799024;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?TUVpa24vbk9SM3J1WTRFT1pYWWhBbm5tSGZaUDRNVE9nTEtscktEOVkxd05C?=
 =?utf-8?B?MUZsazdxMFlFNmd4QUhpbU5GdzBybktqcmlyd3M0QktEVzRNUzVZUExLbmJR?=
 =?utf-8?B?ZVcrZ1REdWVmRHE4VkhNNE56d1V3NUxNZmQxdU5vVXJnNzNWUUVTQmVJK29k?=
 =?utf-8?B?Y2FrRXpOT2ppaEdteExVSXd2ak5nR2pOOUdOT0w5Mk5TbjhBcXpvYVJvTE9r?=
 =?utf-8?B?a0ZuTnFLWkIxY2NEcXRoSXJLbHFySUtnUXBkUU4yN09VWXJkTmFUbXljcHh2?=
 =?utf-8?B?TlFDM05IVHZ0a2lUL3dwTHg3Zk9zMXZxdjRvaEt4b2xCa09ER1B3Q1V5RE56?=
 =?utf-8?B?NHpGZzY3V01mMFZ0dHR2S2dVL1VIUGJlMG1td0hKZStSNzE4d2k5SDcyNnls?=
 =?utf-8?B?Z1FId3ZjVTBpdlNkWDhlSDMvVGZTbFM3WDVZTnhIUE9UaUo5bTU2RCtMMlVk?=
 =?utf-8?B?NUE3b3puVHFnb1oxaVl3Yy9VNlc1b0wxT2cyK1g1NEQxTldXc29aa2x0SXdF?=
 =?utf-8?B?bE9ZZ2ZKN21ybFZoY0JSYTVlcXFkblFRVTJWQkd0a01LTVp0eDRwbHhsallV?=
 =?utf-8?B?YTN4S21TaFppczVkR0VJY1AvVUhuZVN4Y09kS1F4K3FWc2FGYU14Q3hPVGFu?=
 =?utf-8?B?aU80dEdLOURjNlluQlpabE0ydHdSSWR1dWpiKy9HY3VHbE9jQ2NOUjlsM2lk?=
 =?utf-8?B?cDRQSXV5dzlCRFdhcGpnNU9qK0xYTk1wSElVSGcyeC9jelQzelNpVDhsYmI3?=
 =?utf-8?B?a0d5SGdLY2M1OUpuT0x5MzN2SmdjRk42ODBXdWZSeVVUQnIzQ0VYeUdRWEk5?=
 =?utf-8?B?aHh5L25RcStaQXE5cWtCMHlqVHJqbi85NlNEL1krbmk3UnR0VU5IbWFDNUMw?=
 =?utf-8?B?MGd5czAzMmRmd0w4YWdVdUNLRmlZYlJHMDNzTFp3aWxkSUpYQWE2c0NEZXJS?=
 =?utf-8?B?OG50cnFuczU0NkxPcjNTWlFxYTZsQSt6TGVYTU1abTgrWnAySHJjanpYMFRv?=
 =?utf-8?B?NFdlM2pPd2RtNFFqb3N4VytMZjFkbGltYXBEMVVzTGpTaHV6SVp1aXYxdTZP?=
 =?utf-8?B?Z2FSakNDcmV4MG9QMndjN0RmZWNFM3cwRll3R3JHamdESU4wbnhLT3V6dkxJ?=
 =?utf-8?B?QWpzNlgyQ1ZrRk1CWmtVNWg0bkQzb1hHL04wYUpvYnd0bVh5Z1lFVENnNGVl?=
 =?utf-8?B?WTlaYlRyK1lHWHZZczdObkdGcEN3T1VsS2JoM3p1VmJpci9EOFozeEdPNFdM?=
 =?utf-8?B?bkpZbjZHajBiZzVBN08rcmNxK010MmpCTmpoNDZ2dUJRT3N1YWd6RDI1UmMr?=
 =?utf-8?B?OVlHUE92cVFkQlJyNWd0YXFMVU14SjdIS3VZUGFwaGFtcm92elFDNEtMaWZU?=
 =?utf-8?B?TUdvemRWVm90aUFOVVE1QmNjTVJ6ck1JNnZpblA1SUVGMXBPRmhJbE4yMkcv?=
 =?utf-8?B?M08wSDdrVWRXMStveTZKRXVWWjJ2VlJISXB3QU9YSitvUlNWbVBUaVRHeU1C?=
 =?utf-8?B?UkpZcXZtbmh6S20yWVJlaHh4QUErTm16anBiWXpMMjJ4N3Bid2tJN2gyMGll?=
 =?utf-8?B?Qkx0am0zZkpwcTZxL1ZGQjRIV0dhNWRKV0RyeG1DSndyVlRVWkhMazhVZnh3?=
 =?utf-8?B?Rzg5K0dnZmxHdkF4VFE1MDE5WjVhYWVXOXFNZEpSSDU2U3VyK2tneGFzWmxT?=
 =?utf-8?B?UlFvZGVMQmhqRThaMFhmR0VPblJQdmRINW83K1l0ODIvZkl5SVY2SmdjL2Mw?=
 =?utf-8?B?Wm9LZmE0VGZTWFNQNEt4cHgvbHlvUm8zYVhJZjN5a2VBZ0J3WEJ3THpvVk1x?=
 =?utf-8?B?S2pQbjV3SXdhVUZtY2xjY3psU0tDTlJZeENJY1BTd2FUcWp2MnpmZWFvNTdI?=
 =?utf-8?B?RGg5VmJvQ2M3VFBqa0hwMkM1cU1scElqQnNIVW1XZEdLQmc9PQ==?=
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:(13230040)(82310400026)(35042699022)(376014)(36860700013)(1800799024);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2024 10:08:19.6086
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 65349b9d-9e21-403f-d3c6-08dcf8cac7aa
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:
	AM3PEPF00009BA2.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8022

SGkgSnVsaWVuLA0KDQo+IE9uIDMwIE9jdCAyMDI0LCBhdCAwOTo1MiwgSnVsaWVuIEdyYWxsIDxq
dWxpZW4uZ3JhbGwub3NzQGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBXZWQsIDMwIE9jdCAy
MDI0IGF0IDA5OjE3LCBMdWNhIEZhbmNlbGx1IDxMdWNhLkZhbmNlbGx1QGFybS5jb20+IHdyb3Rl
Og0KPj4gDQo+PiBIaSBBeWFuLA0KPj4gDQo+PiBXaGlsZSBJIHJlYmFzZWQgdGhlIGJyYW5jaCBv
biB0b3Agb2YgeW91ciBwYXRjaGVzLCBJIHNhdyB5b3XigJl2ZSBjaGFuZ2VkIHRoZSBudW1iZXIg
b2YgcmVnaW9ucw0KPj4gbWFwcGVkIGF0IGJvb3QgdGltZSwgY2FuIEkgYXNrIHdoeT8NCj4gDQo+
IEkgaGF2ZSBhc2tlZCB0aGUgY2hhbmdlLiBJZiB5b3UgbG9vayBhdCB0aGUgbGF5b3V0Li4uDQoN
CkFwb2xvZ2llcywgSSBkaWRu4oCZdCBzZWUgeW914oCZdmUgYXNrZWQgdGhlIGNoYW5nZQ0KDQo+
IA0KPj4gDQo+PiBDb21wYXJlZCB0byBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2pl
Y3QveGVuLWRldmVsL3BhdGNoLzIwMjMwNjI2MDMzNDQzLjI5NDMyNzAtMjUtUGVubnkuWmhlbmdA
YXJtLmNvbS86DQo+IA0KPiANCj4gLi4uIHlvdSBoYXZlIHR3byBzZWN0aW9ucyB3aXRoIHRoZSBz
YW1lIHBlcm1pc3Npb25zOg0KPiANCj4geGVuX21wdW1hcFsxXSA6IFhlbiByZWFkLW9ubHkgZGF0
YQ0KPiB4ZW5fbXB1bWFwWzJdIDogWGVuIHJlYWQtb25seSBhZnRlciBpbml0IGRhdGENCj4geGVu
X21wdW1hcFszXSA6IFhlbiByZWFkLXdyaXRlIGRhdGENCj4gDQo+IER1cmluZyBib290LCBbMl0g
YW5kIFszXSB3aWxsIHNoYXJlIHRoZSBzYW1lIHBlcm1pc3Npb25zLiBBZnRlciBib290LA0KPiB0
aGlzIHdpbGwgYmUgWzFdIGFuZCBbMl0uIEdpdmVuIHRoZSBudW1iZXIgb2YgTVBVIHJlZ2lvbnMg
aXMgbGltaXRlZCwNCj4gdGhpcyBpcyBhIGJpdCBvZiBhIHdhc3RlLg0KPiANCj4gV2UgYWxzbyBk
b24ndCB3YW50IHRvIGhhdmUgYSBob2xlIGluIHRoZSBtaWRkbGUgb2YgWGVuIHNlY3Rpb25zLiBT
bw0KPiBmb2xkaW5nIHNlZW1lZCB0byBiZSBhIGdvb2QgaWRlYS4NCj4gDQo+PiANCj4+PiArRlVO
QyhlbmFibGVfYm9vdF9jcHVfbW0pDQo+Pj4gKw0KPj4+ICsgICAgLyogR2V0IHRoZSBudW1iZXIg
b2YgcmVnaW9ucyBzcGVjaWZpZWQgaW4gTVBVSVJfRUwyICovDQo+Pj4gKyAgICBtcnMgICB4NSwg
TVBVSVJfRUwyDQo+Pj4gKw0KPj4+ICsgICAgLyogeDA6IHJlZ2lvbiBzZWwgKi8NCj4+PiArICAg
IG1vdiAgIHgwLCB4enINCj4+PiArICAgIC8qIFhlbiB0ZXh0IHNlY3Rpb24uICovDQo+Pj4gKyAg
ICBsZHIgICB4MSwgPV9zdGV4dA0KPj4+ICsgICAgbGRyICAgeDIsID1fZXRleHQNCj4+PiArICAg
IHByZXBhcmVfeGVuX3JlZ2lvbiB4MCwgeDEsIHgyLCB4MywgeDQsIHg1LCBhdHRyX3ByYmFyPVJF
R0lPTl9URVhUX1BSQkFSDQo+Pj4gKw0KPj4+ICsgICAgLyogWGVuIHJlYWQtb25seSBkYXRhIHNl
Y3Rpb24uICovDQo+Pj4gKyAgICBsZHIgICB4MSwgPV9zcm9kYXRhDQo+Pj4gKyAgICBsZHIgICB4
MiwgPV9lcm9kYXRhDQo+Pj4gKyAgICBwcmVwYXJlX3hlbl9yZWdpb24geDAsIHgxLCB4MiwgeDMs
IHg0LCB4NSwgYXR0cl9wcmJhcj1SRUdJT05fUk9fUFJCQVINCj4+PiArDQo+Pj4gKyAgICAvKiBY
ZW4gcmVhZC1vbmx5IGFmdGVyIGluaXQgYW5kIGRhdGEgc2VjdGlvbi4gKFJXIGRhdGEpICovDQo+
Pj4gKyAgICBsZHIgICB4MSwgPV9fcm9fYWZ0ZXJfaW5pdF9zdGFydA0KPj4+ICsgICAgbGRyICAg
eDIsID1fX2luaXRfYmVnaW4NCj4+PiArICAgIHByZXBhcmVfeGVuX3JlZ2lvbiB4MCwgeDEsIHgy
LCB4MywgeDQsIHg1DQo+PiANCj4+ICAgICAgICAgXuKAlCB0aGlzLCBmb3IgZXhhbXBsZSwgd2ls
bCBibG9jayBYZW4gdG8gY2FsbCBpbml0X2RvbmUodm9pZCkgbGF0ZXIsIEkgdW5kZXJzdGFuZCB0
aGlzIGlzIGVhcmx5Ym9vdCwNCj4+ICAgICAgICAgICAgICAgYnV0IEkgZ3Vlc3Mgd2UgZG9u4oCZ
dCB3YW50IHRvIG1ha2Ugc3Vic2VxdWVudCBjaGFuZ2VzIHRvIHRoaXMgcGFydCB3aGVuIGludHJv
ZHVjaW5nIHRoZQ0KPj4gICAgICAgICAgICAgICBwYXRjaGVzIHRvIHN1cHBvcnQgc3RhcnRfeGVu
KCkNCj4gDQo+IENhbiB5b3UgYmUgYSBiaXQgbW9yZSBkZXNjcmlwdGl2ZS4uLiBXaGF0IHdpbGwg
YmxvY2s/DQoNClRoaXMgY2FsbCBpbiBzZXR1cC5jOg0KICAgIHJjID0gbW9kaWZ5X3hlbl9tYXBw
aW5ncygodW5zaWduZWQgbG9uZykmX19yb19hZnRlcl9pbml0X3N0YXJ0LA0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZykmX19yb19hZnRlcl9pbml0X2VuZCwNCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9IWVBFUlZJU09SX1JPKTsNCg0KQ2Fubm90
IHdvcmsgYW55bW9yZSBiZWNhdXNlIHhlbl9tcHVtYXBbMl0gaXMgd2lkZXIgdGhhbiBvbmx5IChf
X3JvX2FmdGVyX2luaXRfc3RhcnQsIF9fcm9fYWZ0ZXJfaW5pdF9lbmQpLg0KDQpJZiB0aGF0IGlz
IHdoYXQgd2Ugd2FudCwgdGhlbiB3ZSBjb3VsZCB3cmFwIHRoZSBhYm92ZSBjYWxsIGludG8gc29t
ZXRoaW5nIE1NVSBzcGVjaWZpYyB0aGF0IHdpbGwgZXhlY3V0ZSB0aGUgYWJvdmUgY2FsbCBhbmQN
CnNvbWV0aGluZyBNUFUgc3BlY2lmaWMgdGhhdCB3aWxsIG1vZGlmeSB4ZW5fbXB1bWFwWzFdIGZy
b20gKF9zcm9kYXRhLCBfZXJvZGF0YSkgdG8gKF9zcm9kYXRhLCBfX3JvX2FmdGVyX2luaXRfZW5k
KQ0KYW5kIHhlbl9tcHVtYXBbMl0gZnJvbSAoX19yb19hZnRlcl9pbml0X3N0YXJ0LCBfX2luaXRf
YmVnaW4pIHRvIChfX3JvX2FmdGVyX2luaXRfZW5kLCBfX2luaXRfYmVnaW4pLg0KDQpQbGVhc2Us
IGxldCBtZSBrbm93IHlvdXIgdGhvdWdodHMuDQoNCkNoZWVycywNCkx1Y2ENCg0K


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:09:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:09:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.827988.1242769 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65e9-0000Wk-FQ; Wed, 30 Oct 2024 10:09:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 827988.1242769; Wed, 30 Oct 2024 10: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 1t65e9-0000WL-AZ; Wed, 30 Oct 2024 10:09:49 +0000
Received: by outflank-mailman (input) for mailman id 827988;
 Wed, 30 Oct 2024 10: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t65e7-0000V6-FE
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:09:47 +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 15ab031b-96a7-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:09:44 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5cb6704ff6bso8300793a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:09:44 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e214152adsm176141066b.92.2024.10.30.03.09.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 03:09:43 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15ab031b-96a7-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmUiLCJoZWxvIjoibWFpbC1lZDEteDUyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjE1YWIwMzFiLTk2YTctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjgyOTg0LjA3Nzk3Miwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730282984; x=1730887784; 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=h/TaqhDrJgkG90fMakbtwmrVdt8qJmsd4pUICkuBKk8=;
        b=BvA4V3M6hXoBkc73hBbtSN2HnRggAxkUfunc0FSUI8bakTzLrrL9M/c0XHOXg1d8eP
         8klxd/eKPdORuvxGwFb44RC+4y6+kp40luBWZLcQxHCaY+Dm3Fhix4CE6QaFHuDuOKwd
         QVCzH2W9QNi4+hCP4lbB12o7Q69jifwufPHS0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730282984; x=1730887784;
        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=h/TaqhDrJgkG90fMakbtwmrVdt8qJmsd4pUICkuBKk8=;
        b=uTW/LqKAe2y9LAS7DC6Wi88g9VM0YkN5G57kP8hHoZR4W7Rqjr3hJP+ZNyBGneZ6Ig
         aLu7cMYP1e0KL8W2QLAfBxur0Lgl0trQfplBhtWC3H0sgSVAI4J7B1B8NyxVdFd4dAW8
         xtgqEu+YmxyehbPC1n8xFcYK8JaeFy5zD2HkJngDDpRNsAWJKQAxw56NkaB7N2jKDJGq
         P9usgwwmF0aUVPFSexwHQsc3TW8XFufGMmDAyR9oVTGw1mNyTCs12xiAVItSPyZ5P3LH
         O0Fa1YYK6NJufwMvSMJe6+2Hn296yhguZuQTC+q+JH3epjN1HTWO3qQxYrquToJW+jV3
         iwOA==
X-Forwarded-Encrypted: i=1; AJvYcCUEysYbeRdKlHCPEjqZP3VkrytXq4FlpVYeklQI+dLyIaQ1UGa1GNbDGS13XMAxg0nPh6q6EJwFggk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwMfWn8eqOFx351GdmOJkMOHgP/0G/WUaT9yvPC7OdHVD1M6fQg
	woHukAdhoLhc0+uYiYiemkC6E+3pcIllhSeBLnCimZ/CPlYl35wu6oZL00I8bNI=
X-Google-Smtp-Source: AGHT+IGYrkxUQtxZx104qgkPVWtZc2tb1JvTGOf0UVsxgLEouGWyXnLInwUGc+//JIlzjKsJAKKVMQ==
X-Received: by 2002:a17:907:9446:b0:a9a:1165:1bb with SMTP id a640c23a62f3a-a9de619a3d1mr1297200966b.65.1730282983407;
        Wed, 30 Oct 2024 03:09:43 -0700 (PDT)
Date: Wed, 30 Oct 2024 11:09:42 +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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
Message-ID: <ZyIF5qYU8dC-yYNW@macbook>
References: <20241029110351.40531-1-roger.pau@citrix.com>
 <53034f16-682e-4081-ab7e-81338c700f85@suse.com>
 <ZyEf8hK-XyGn6Kp8@macbook>
 <d03f58f0-5b93-4b23-85cb-dc2c18a4eb41@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <d03f58f0-5b93-4b23-85cb-dc2c18a4eb41@suse.com>

On Wed, Oct 30, 2024 at 10:41:40AM +0100, Jan Beulich wrote:
> On 29.10.2024 18:48, Roger Pau Monné wrote:
> > On Tue, Oct 29, 2024 at 05:43:24PM +0100, Jan Beulich wrote:
> >> On 29.10.2024 12:03, Roger Pau Monne wrote:
> >> Plus with what you said
> >> earlier about vector vs EOI handle, and with the code using "vector" all over the
> >> place, their (non-)relationship could also do with clarifying (perhaps better in
> >> a code comment in __io_apic_eoi()).
> > 
> > I've attempted to clarify the relation between vector vs EOI handle in
> > the first paragraph, and how that applies to AMD-Vi.  I can move
> > (part?) of that into the comment in __ioapic_write_entry(), maybe:
> > 
> > /*
> >  * Might be called before io_apic_pin_eoi is allocated.  Entry will be
> >  * updated once the array is allocated and there's a write against the
> >  * pin.
> >  *
> >  * Note that the vector field is only cached for raw RTE writes when
> >  * using IR.  In that case the vector field might have been repurposed
> >  * to store something different than the target vector, and hence need
> >  * to be cached for performing EOI.
> >  */
> 
> Sounds okay to me, yet I'd prefer a comment in __io_apic_eoi(), where it
> may want wording a little differently.

OK, let me try to add another comment for __io_apic_eoi() in v4 then.

> >>> @@ -273,6 +293,13 @@ void __ioapic_write_entry(
> >>>      {
> >>>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
> >>>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> >>> +        /*
> >>> +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
> >>> +         * Entry will be updated once the array is allocated and there's a
> >>> +         * write against the pin.
> >>> +         */
> >>> +        if ( io_apic_pin_eoi )
> >>> +            io_apic_pin_eoi[apic][pin] = e.vector;
> >>
> >> The comment here looks a little misleading to me. clear_IO_APIC_pin() calls
> >> here to, in particular, set the mask bit. With the mask bit the vector isn't
> >> meaningful anyway (and indeed clear_IO_APIC_pin() sets it to zero, at which
> >> point recording IRQ_VECTOR_UNASSIGNED might be better than the bogus vector
> >> 0x00).
> > 
> > Note that clear_IO_APIC_pin() performs the call to
> > __ioapic_write_entry() with raw == false, at which point
> > __ioapic_write_entry() will call iommu_update_ire_from_apic() if IOMMU
> > IR is enabled.  The cached 'vector' value will be the IOMMU entry
> > offset for the AMD-Vi case, as the IOMMU code will perform the call to
> > __ioapic_write_entry() with raw == true.
> > 
> > What matters is that the cached value matches what's written in the
> > IO-APIC RTE, and the current logic ensures this.
> > 
> > What's the benefit of using IRQ_VECTOR_UNASSIGNED if the result is
> > reading the RTE and finding that vector == 0?
> 
> It's not specifically the vector == 0 case alone. Shouldn't we leave
> the latched vector alone when writing an RTE with the mask bit set?

I'm not sure what's the benefit of the extra logic to detect such
cases, just to avoid a write to the io_apic_pin_eoi matrix.

> Any still pending EOI (there should be none aiui) can't possibly
> target the meaningless vector / index in such an RTE. Perhaps it was
> wrong to suggest to overwrite (with IRQ_VECTOR_UNASSIGNED) what we
> have on record.
> 
> Yet at the same time there ought to be a case where the recorded
> indeed moves back to IRQ_VECTOR_UNASSIGNED.

The only purpose of the io_apic_pin_eoi matrix is to cache what's
currently in the RTE entry 'vector' field.  I don't think we should
attempt to add extra logic as to whether the entry is valid, or
masked.  Higher level layers should already take care of that.  The
only purpose of the logic added in this patch is to ensure the EOI is
performed using what's in the RTE vector field for the requested pin.
Anything else is out of scope IMO.

Another option, which would allow to make the matrix store uint8_t
elements would be to initialize it at allocation with the RTE vector
fields currently present, IOW: do a raw read of every RTE and set the
fetched vector field in io_apic_pin_eoi.  Would that be better to you,
as also removing the need to ever store IRQ_VECTOR_UNASSIGNED?

> > Looking at clear_IO_APIC_pin() - I think the function is slightly
> > bogus.  If entry.trigger is not set, the logic to switch the entry to
> > level triggered  will fetch the entry contents without requesting a
> > raw RTE, at which point the entry.vector field can not be used as
> > the EOI handle since it will contain the vector, not the IR table
> > offset.  I will need to make a further patch to fix this corner
> > case.
> 
> Is there actually a reason not to pass IRQ_VECTOR_UNASSIGNED there,
> to have __io_apic_eoi() determine the vector? (But of course we can
> also latch entry.vector from the earlier raw read.)

Yes, it should pass IRQ_VECTOR_UNASSIGNED IMO.  The extra cost of
doing the RTE read is not an issue on that init-only path.

> >>> @@ -298,9 +325,17 @@ static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int p
> >>>      /* Prefer the use of the EOI register if available */
> >>>      if ( ioapic_has_eoi_reg(apic) )
> >>>      {
> >>> +        if ( io_apic_pin_eoi )
> >>> +            vector = io_apic_pin_eoi[apic][pin];
> >>> +
> >>>          /* If vector is unknown, read it from the IO-APIC */
> >>>          if ( vector == IRQ_VECTOR_UNASSIGNED )
> >>> +        {
> >>>              vector = __ioapic_read_entry(apic, pin, true).vector;
> >>
> >> Related to my comment higher up regarding vector vs EOI handle: Here we're
> >> doing a raw read, i.e. we don't really fetch the vector but the EOI handle
> >> in the AMD case. Why is it that this isn't sufficient for directed EOI to
> >> work (perhaps with the conditional adjusted)?
> > 
> > It is enough, but we don't want to be doing such read for each EOI,
> > hence why we cache it in io_apic_pin_eoi.
> 
> Yet then the patch is to a fair part about improving performance, when the
> functionality issue could be addressed with a far less intrusive change.

More than improving performance the patch is about not degrading it by
forcing an RTE read for each EOI.

I expect there's no such read ATM, since the vector should be provided
by irq_desc.  Adding an unconditional RTE read for each EOI would be
an unjustified performance penalty for this fix to introduce.

> Which may in particular make a difference with backporting in mind. Plus
> that may want at least mentioning in the description.
> 
> >> Then again - are we ever taking this path? Certainly not when coming from
> >> clear_IO_APIC_pin(), hence ...
> >>
> >>> +            if ( io_apic_pin_eoi )
> >>
> >> ... I'm unconvinced this conditional is needed.
> > 
> > Hm, maybe.  I can adjust but seems more fragile to trigger a
> > dereference for the extra cost of a conditional in what should be a
> > non-common path anyway.
> 
> Well, I was thinking of transforming the if() into ASSERT().

See my suggestion above about getting rid of IRQ_VECTOR_UNASSIGNED in
io_apic_pin_eoi altogether.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:25:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:25:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828004.1242785 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65tK-0003jJ-T1; Wed, 30 Oct 2024 10:25:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828004.1242785; Wed, 30 Oct 2024 10:25: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 1t65tK-0003jC-QR; Wed, 30 Oct 2024 10:25:30 +0000
Received: by outflank-mailman (input) for mailman id 828004;
 Wed, 30 Oct 2024 10:25: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t65tK-0003j6-CL
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:25:30 +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 46d8438c-96a9-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 11:25:25 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2fb3debdc09so50710051fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:25:25 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd9aa09fsm16896105e9.37.2024.10.30.03.25.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 03:25:24 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 46d8438c-96a9-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmUiLCJoZWxvIjoibWFpbC1sajEteDIyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQ2ZDg0MzhjLTk2YTktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjgzOTI1LjU0NDE3NCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730283925; x=1730888725; 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=eGvHqEKMo1+jupQ/nfzRO0U7r1zxaBgcteOnvoQgPsc=;
        b=eNy+X2vS4uVmBTkYkHfinNe4sLt9UjiirjuxTQ1fuS0Z6/V11x1lZtsqzzsSyXlGmc
         FS2mel45lOZ9Igr8gFle2KjdCOmYAFE6EKrwHRCFQ6atr91UiZ/5N1XzCyICevyCS97u
         F5WaZsENQa49Wj1a7R59ahw4whkO/tPEOnlzLcngKQ2NZJHhz7ZGTslUPxFm8ENUuy2J
         OQLgSqNOokbkqHB9AglVMkKVsOw0hlJ+8151P1doqEf/JrxNFBJh9qNq87nLXQ2A+5vv
         CplACQiK6wOXKYA30MWdSmEsd3j9kcz+hsHTxJblsLrQrq++k1DCGHamk/C0sFU3I0jl
         zYyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730283925; x=1730888725;
        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=eGvHqEKMo1+jupQ/nfzRO0U7r1zxaBgcteOnvoQgPsc=;
        b=Vv963lOSkNl1n5W1J4SnKv/pwslf5Oucr+S0CjWaqkD4D0B3CB3EyVfxULj1fXBq4S
         T/FiXc4Z1+Sr67DXEW9L6SeEfwKJ/drRJDlffnrsk6QGLrGZ/9q71LKt5NKwa6OESQ5g
         2XHPvHVcx/ftKOC4cm8ISXKd1hY3QlglPEfirK9XKBASOHjgpcsdStdujh8HdIlgXkPm
         aUb2SOtli5XJSd4nQzRR4Y+yaPKQ0KTt16ElfvUOd6O64DPHadc6vgbhSN6Rn2ikND4V
         zlklJZjWptOerfV3X4P5p/8q8SXyq48lnYdC36EyQsMPREme1DM5DxsneuHEuXbXotaA
         XuBQ==
X-Forwarded-Encrypted: i=1; AJvYcCWUGOHr/4dMXEGGT+m+FM0QHmsg0sRzI568KeAoqJ+/1IpGKXHKRXwvWtwIsKjrSWTIEy92PMdLVMg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxdMFEjKrtu8L8aqKAvJ5IYen/Ja77IATU92+LqklZm5EaSeBOo
	Z7MiwZy+LtZhc+i+5T7XrC5T/qjz48SlKReTJ1cuw1MDoo/i5PC27n1zTzsqTA==
X-Google-Smtp-Source: AGHT+IF9vzvXCBX0L81knGhPLh5otjIyJOcFgEavo1DrmFLtoH6ukcYosgF6Cmcvh+IBqxhOZvjhbw==
X-Received: by 2002:a05:651c:199e:b0:2fb:5740:9f9a with SMTP id 38308e7fff4ca-2fcbe07871dmr73763581fa.29.1730283924744;
        Wed, 30 Oct 2024 03:25:24 -0700 (PDT)
Message-ID: <8ec6463e-40a8-4d60-b4c2-ea964a06c572@suse.com>
Date: Wed, 30 Oct 2024 11:25:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] xen/riscv: introduce setup_mm()
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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
 <28240dcfc04a11237db553c4e0ecb372aa0fe9ac.1729697111.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: <28240dcfc04a11237db553c4e0ecb372aa0fe9ac.1729697111.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23.10.2024 17:50, Oleksii Kurochko wrote:
> Introduce the implementation of setup_mm(), which includes:
> 1. Adding all free regions to the boot allocator, as memory is needed
>    to allocate page tables used for frame table mapping.
> 2. Calculating RAM size and the RAM end address.
> 3. Setting up direct map mappings from each RAM bank and initialize
>    directmap_virt_start (also introduce XENHEAP_VIRT_START which is
>    defined as directmap_virt_start) to be properly aligned with RAM
>    start to use more superpages to reduce pressure on the TLB.
> 4. Setting up frame table mappings from physical address 0 to ram_end
>    to simplify mfn_to_page() and page_to_mfn() conversions.
> 5. Setting up total_pages and max_page.
> 
> Update virt_to_maddr() to use introduced XENHEAP_VIRT_START.
> 
> Implement maddr_to_virt() function to convert a machine address
> to a virtual address. This function is specifically designed to be used
> only for the DIRECTMAP region, so a check has been added to ensure that
> the address does not exceed DIRECTMAP_SIZE.

I'm unconvinced by this. Conceivably the function could be used on
"imaginary" addresses, just to calculate abstract positions or e.g.
deltas. At the same time I'm also not going to insist on the removal of
that assertion, so long as it doesn't trigger.

> After the introduction of maddr_to_virt() the following linkage error starts
> to occur and to avoid it share_xen_page_with_guest() stub is added:
>   riscv64-linux-gnu-ld: prelink.o: in function `tasklet_kill':
>   /build/xen/common/tasklet.c:176: undefined reference to
>      `share_xen_page_with_guest'
>   riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol `share_xen_page_with_guest'
>     isn't defined riscv64-linux-gnu-ld: final link failed: bad value
> 
> Despite the linkger fingering tasklet.c, it's trace.o which has the undefined
> refenrece:
>   $ find . -name \*.o | while read F; do nm $F | grep share_xen_page_with_guest &&
>     echo $F; done
>                      U share_xen_page_with_guest
>     ./xen/common/built_in.o
>                      U share_xen_page_with_guest
>     ./xen/common/trace.o
>                      U share_xen_page_with_guest
>     ./xen/prelink.o
> 
> Looking at trace.i, there is call of share_xen_page_with_guest() but in case of
> when maddr_to_virt() is defined as "return NULL" compiler optimizes the part of
> common/trace.c code where share_xen_page_with_priviliged_guest() is called
> ( there is no any code in dissambled common/trace.o ) so there is no real call
> of share_xen_page_with_priviliged_guest().

I don't think it's the "return NULL", but rather BUG_ON()'s (really BUG()'s)
unreachable(). Not the least because the function can't validly return NULL,
and hence callers have no need to check for NULL.

> @@ -25,8 +27,11 @@
>  
>  static inline void *maddr_to_virt(paddr_t ma)
>  {
> -    BUG_ON("unimplemented");
> -    return NULL;
> +    unsigned long va_offset = maddr_to_directmapoff(ma);
> +
> +    ASSERT(va_offset < DIRECTMAP_SIZE);
> +
> +    return (void *)(XENHEAP_VIRT_START + va_offset);
>  }

I'm afraid I'm not following why this uses XENHEAP_VIRT_START, when
it's all about the directmap. I'm in trouble with XENHEAP_VIRT_START
in the first place: You don't have a separate "heap" virtual address
range, do you?

> @@ -37,9 +42,9 @@ static inline void *maddr_to_virt(paddr_t ma)
>   */
>  static inline unsigned long virt_to_maddr(unsigned long va)
>  {
> -    if ((va >= DIRECTMAP_VIRT_START) &&
> +    if ((va >= XENHEAP_VIRT_START) &&
>          (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
> -        return directmapoff_to_maddr(va - DIRECTMAP_VIRT_START);
> +        return directmapoff_to_maddr(va - XENHEAP_VIRT_START);

Same concern here then.

> @@ -423,3 +424,123 @@ void * __init early_fdt_map(paddr_t fdt_paddr)
>  
>      return fdt_virt;
>  }
> +
> +#ifndef CONFIG_RISCV_32

I'd like to ask that you be more selective with this #ifdef (or omit it
altogether here). setup_mm() itself, for example, looks good for any mode.
Like does ...

> +#define ROUNDDOWN(addr, size)  ((addr) & ~((size) - 1))

... this #define. Then again this macro may better be placed in
xen/macros.h anyway, next to ROUNDUP().

> +/* Map a frame table to cover physical addresses ps through pe */
> +static void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
> +{
> +    paddr_t aligned_ps = ROUNDDOWN(ps, PAGE_SIZE);
> +    paddr_t aligned_pe = ROUNDUP(pe, PAGE_SIZE);
> +    unsigned long nr_mfns = PFN_DOWN(aligned_pe - aligned_ps);
> +    unsigned long frametable_size = nr_mfns * sizeof(struct page_info);

Nit: Better sizeof(*frame_table).

> +    mfn_t base_mfn;
> +
> +    if ( frametable_size > FRAMETABLE_SIZE )
> +        panic("The frametable cannot cover the physical region [%#"PRIpaddr" - %#"PRIpaddr")\n",
> +              ps, pe);

As per prior comments of mine: Imo the message is too verbose (and too
long). "frametable cannot cover [%#"PRIpaddr", %#"PRIpaddr")\n" doesn't
leave any ambiguity, I think. (Please take this as a general remark, i.e.
potentially applicable elsewhere as well.)

Note also the adjustment to how the range is presented. As said before,
using mathematical intervals is (imo) least ambiguous.

> +    frametable_size = ROUNDUP(frametable_size, MB(2));
> +    base_mfn = alloc_boot_pages(frametable_size >> PAGE_SHIFT, PFN_DOWN(MB(2)));

The 2Mb aspect wants a (brief) comment, imo.

> +    if ( map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
> +                          PFN_DOWN(frametable_size),
> +                          PAGE_HYPERVISOR_RW) )
> +        panic("Unable to setup the frametable mappings\n");
> +
> +    memset(&frame_table[0], 0, nr_mfns * sizeof(struct page_info));
> +    memset(&frame_table[nr_mfns], -1,
> +           frametable_size - (nr_mfns * sizeof(struct page_info)));

Here (see comments on v1) you're still assuming ps == 0.

> +}
> +
> +

Nit: No double blank lines please.

> +static mfn_t __ro_after_init directmap_mfn_start = INVALID_MFN_INITIALIZER;

This is used only by __init code, and hence ought to be __initdata. In
fact as it's used by just one function afaics, it may want to move into
that function (to limit its scope).

> +vaddr_t __ro_after_init directmap_virt_start;

Even if largely benign, I think this would better be initialized to
DIRECTMAP_VIRT_START.

> +/* Map the region in the directmap area. */
> +static void __init setup_directmap_mappings(unsigned long base_mfn,
> +                                            unsigned long nr_mfns)
> +{
> +    int rc;
> +
> +    /* First call sets the directmap physical and virtual offset. */
> +    if ( mfn_eq(directmap_mfn_start, INVALID_MFN) )
> +    {
> +        directmap_mfn_start = _mfn(base_mfn);
> +
> +        /*
> +         * The base address may not be aligned to the second level
> +         * size (e.g. 1GB when using 4KB pages). This would prevent
> +         * superpage mappings for all the regions because the virtual
> +         * address and machine address should both be suitably aligned.
> +         *
> +         * Prevent that by offsetting the start of the directmap virtual
> +         * address.
> +         */
> +        directmap_virt_start = DIRECTMAP_VIRT_START + pfn_to_paddr(base_mfn);

Don't you need to mask off top bits of the incoming MFN here, or else you
may waste a huge part of direct map space?

> +    }
> +
> +    if ( base_mfn < mfn_x(directmap_mfn_start) )
> +        panic("cannot add directmap mapping at %#lx below heap start %#lx\n",
> +              base_mfn, mfn_x(directmap_mfn_start));
> +
> +    rc = map_pages_to_xen((vaddr_t)mfn_to_virt(base_mfn),
> +                          _mfn(base_mfn), nr_mfns,
> +                          PAGE_HYPERVISOR_RW);
> +    if ( rc )
> +        panic("Unable to setup the directmap mappings.\n");

Might help to also log the range in question. Also, to repeat a prior nit:
No full stop please at the end of log messages.

> +}
> +
> +/*
> + * Setup memory management
> + *
> + * RISC-V 64 has a large virtual address space (the minimum supported
> + * MMU mode is Sv39, which provides TBs of VA space).

Is it really TBs? According to my math you'd need more than 40 bits to
map a single Tb (alongside other stuff).

> + * In the case of RISC-V 64, the directmap and frametable are mapped
> + * starting from physical address 0 to simplify the page_to_mfn(),
> + * mfn_to_page(), and maddr_to_virt() calculations, as there is no need
> + * to account for {directmap, frametable}_base_pdx in this setup.

This looks somewhat stale for the directmap part, now that you have
directmap_virt_start.

> + */
> +void __init setup_mm(void)
> +{
> +    const struct membanks *banks = bootinfo_get_mem();
> +    paddr_t ram_start = INVALID_PADDR;
> +    paddr_t ram_end = 0;
> +    paddr_t ram_size = 0;
> +    unsigned int i;
> +
> +    /*
> +     * We need some memory to allocate the page-tables used for the directmap
> +     * mappings. But some regions may contain memory already allocated
> +     * for other uses (e.g. modules, reserved-memory...).
> +     *
> +     * For simplicity, add all the free regions in the boot allocator.
> +     */
> +    populate_boot_allocator();
> +
> +    total_pages = 0;
> +
> +    for ( i = 0; i < banks->nr_banks; i++ )
> +    {
> +        const struct membank *bank = &banks->bank[i];
> +        paddr_t bank_end = bank->start + bank->size;
> +
> +        ram_size += ROUNDDOWN(bank->size, PAGE_SIZE);

As before - if a bank doesn't cover full pages, this may give the impression
of there being more "total pages" than there are.

> +        ram_start = min(ram_start, bank->start);
> +        ram_end = max(ram_end, bank_end);
> +
> +        setup_directmap_mappings(PFN_DOWN(bank->start),
> +                                 PFN_DOWN(bank->size));

Similarly I don't think this is right when both start and size aren't
multiple of PAGE_SIZE. You may map an unsuable partial page at the start,
and then fail to map a fully usable page at the end.

> --- a/xen/arch/riscv/stubs.c
> +++ b/xen/arch/riscv/stubs.c
> @@ -2,7 +2,9 @@
>  #include <xen/cpumask.h>
>  #include <xen/domain.h>
>  #include <xen/irq.h>
> +#include <xen/mm.h>
>  #include <xen/nodemask.h>
> +#include <xen/sched.h>
>  #include <xen/sections.h>
>  #include <xen/time.h>
>  #include <public/domctl.h>

Neither of these are needed afaict, even without the further comment below.

> @@ -409,3 +411,11 @@ unsigned long get_upper_mfn_bound(void)
>  {
>      BUG_ON("unimplemented");
>  }
> +
> +/* mm.c */
> +
> +void share_xen_page_with_guest(struct page_info *page, struct domain *d,
> +                               enum XENSHARE_flags flags)
> +{
> +    BUG_ON("unimplemented");
> +}

Why not right in mm.c? I thought stubs.c exists only for functions which
don't have a proper "home" source file yet.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:27:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:27:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828010.1242794 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65v0-0004XL-6z; Wed, 30 Oct 2024 10:27:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828010.1242794; Wed, 30 Oct 2024 10: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 1t65v0-0004XE-47; Wed, 30 Oct 2024 10:27:14 +0000
Received: by outflank-mailman (input) for mailman id 828010;
 Wed, 30 Oct 2024 10:27: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t65uy-0004X8-V6
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:27:12 +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 8532bfad-96a9-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:27:10 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-431688d5127so60545775e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:27:10 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd97d5fcsm16981395e9.28.2024.10.30.03.27.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 03:27:09 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8532bfad-96a9-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMjkiLCJoZWxvIjoibWFpbC13bTEteDMyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijg1MzJiZmFkLTk2YTktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg0MDMwLjIwNDEsInNlbmRlciI6ImpiZXVsaWNoQHN1c2UuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730284029; x=1730888829; 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=CoSDZR5fkUvLaZGhHNLFHVwtm4OxxVMudiWlYIwHK+k=;
        b=TxDhOqv7ktDC4NF/Aw6moKGcr+6Mo5GrLeD6qhPq6iOdNmFKYwzdoftnPbeQ4+UipX
         yiQ9XPbbTcnHi+K2YaW4sTTaaUmUlA6Vkl9xFVeBRzWZkx7s0vYN1d90QJSdFmMtMFmA
         IR/Ugs5iQpUAsmeRPSJlgNK9XwNhkkEtQdxjGQZp46VUvGZiZO2CNOk9clkOJrV9MIP0
         zBoht/QVd3kXmOdBRUdAAVDWY93ZVIcXxUdYfvfz0zwGrQn3S3rXecNL8LqXatJi40NB
         f8IBo6ZjCKsprbrwAOAjVftCgeHowfrq22o+BtABuCGZXrleXNWZYCKiTXz38HEChQFw
         HD0Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730284029; x=1730888829;
        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=CoSDZR5fkUvLaZGhHNLFHVwtm4OxxVMudiWlYIwHK+k=;
        b=jyD9YVB9rH248SV8uCreZd3pHzHedUcXUfRNcmyehCwMNH6KcMGD4otCoRdt8Vp0Ol
         EQgBFDHJMXYScGW39pLdRm0WswBj6uVbX1vSBY6JbsN9JqJoVUYTq+tQTIgalzs5hlgp
         bd3F9kj0cYpS+Q9cFv4X1jJYGEGhtyayHYsjXkSK1o7cFV3vZVtlur2fy8EgnV7gGBya
         IVNKf0Ztzh244CWua2KFXUovz6fkc6Tm8e8c/TtOKs2Q5Fth9t1d1WLjBN2QpejnsqQz
         N3GCYoh6Zot/PCO5KpQk8xAjFMup1u4FkPwDroFuG7DkeO2TdNXkZuttPCtOqQD985n7
         w7yA==
X-Forwarded-Encrypted: i=1; AJvYcCVGBy6Wgh7q8DnZh6j/OEML5PVw0v0h2oEikp+vtm/pAcnp3n/M00xtL/Y+0s5LsAsXSMscrxUdG0s=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw/6JpvEU8i9FkkO1iHc3m3I6vfkrh4qp6pJW89We/El2A6MYQJ
	hiym0YMyTnucRCtHgyZyBVFksmKRucSf6wY5Wg5vwBvJC0bgugLInfqXmZpjVw==
X-Google-Smtp-Source: AGHT+IFvu7frXlQaVdF/9QsPGxpqVJKS3Oir6s6nqv6fzs+iO5j31CMDYfxJcS/Dqio5KyI/ihpjeQ==
X-Received: by 2002:a05:600c:46d4:b0:427:ff3b:7a20 with SMTP id 5b1f17b1804b1-4319ad049a8mr112151105e9.27.1730284029511;
        Wed, 30 Oct 2024 03:27:09 -0700 (PDT)
Message-ID: <7acb9088-4d46-4d06-ac47-cad9043dbd78@suse.com>
Date: Wed, 30 Oct 2024 11:27:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1] xen/common: move gic_preinit() to common code
To: 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>, xen-devel@lists.xenproject.org
References: <b1ded26dcebf9a3228fe4062825273720e0c59fe.1730220384.git.oleksii.kurochko@gmail.com>
 <a5539c03-4e19-4739-95cf-439aa0bea9a3@suse.com>
 <f26637fa6f315385e0c1f2cbb338389d7c8b0587.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: <f26637fa6f315385e0c1f2cbb338389d7c8b0587.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 10:50, oleksii.kurochko@gmail.com wrote:
> On Tue, 2024-10-29 at 17:57 +0100, Jan Beulich wrote:
>> On 29.10.2024 17:47, Oleksii Kurochko wrote:
>>> --- a/xen/common/device.c
>>> +++ b/xen/common/device.c
>>> @@ -4,10 +4,14 @@
>>>    *   xen/arch/arm/device.c
>>>    */
>>>   
>>> +#include <xen/acpi.h>
>>>   #include <xen/bug.h>
>>>   #include <xen/device_tree.h>
>>>   #include <xen/errno.h>
>>>   #include <xen/init.h>
>>> +#include <xen/kernel.h>
>>> +#include <xen/lib.h>
>>> +#include <xen/types.h>
>>
>> I don't think non-ACPI configs should include xen/acpi.h here. Surely
>> this
>> can be moved down into the ACPI-only code section?
> xen/acpi.h was included as acpi_disabled is defined there and it is
> needed in commom/device.c for:
> ```
> void __init ic_preinit(void)
> {
>     if ( acpi_disabled )
>         ic_dt_preinit();
>     else
>         ic_acpi_preinit();
> }
> ```

Oh, I see.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:30:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:30:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828015.1242805 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t65yT-00062T-L1; Wed, 30 Oct 2024 10:30:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828015.1242805; Wed, 30 Oct 2024 10:30: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 1t65yT-00062M-II; Wed, 30 Oct 2024 10:30:49 +0000
Received: by outflank-mailman (input) for mailman id 828015;
 Wed, 30 Oct 2024 10:30: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t65yS-00062G-LO
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:30:48 +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 047ededf-96aa-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:30:43 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9a2cdc6f0cso853803066b.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:30:43 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec81adsm560680666b.27.2024.10.30.03.30.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 03:30:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 047ededf-96aa-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmUiLCJoZWxvIjoibWFpbC1lajEteDYyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjA0N2VkZWRmLTk2YWEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg0MjQzLjc0NjEyLCJzZW5kZXIiOiJhbmRyZXcuY29vcGVyQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730284243; x=1730889043; 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=Tz5i/mNb7GRhZ+FQr8OH8hwL6Ideulocn0iYNfi2EEw=;
        b=p42hGVOJMDG/Y9j9lSAKA+0pSLczoyNZwRU/675zstQzMLaHV68Q2KyD2yJjJYxKUL
         2xtUOkKBA+z0+flvxXGRMp16UCEER6V+VYc3GntwGxU8846/y7ZjtvJNmFUcyOB0JFJx
         kCQN+XJq+bbuUi6sIP8y7sRj3oTBQNrFkpVLk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730284243; x=1730889043;
        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=Tz5i/mNb7GRhZ+FQr8OH8hwL6Ideulocn0iYNfi2EEw=;
        b=tsnP8Zjn79hiMtc4QlKM1d1ly7UiyUuUf4Nwirvs6JOfmoTUz9nH74hdU/my1yoW8+
         GRuuruPMsFEk4NH7r9p5xVfym+7zxdjYW+1ivCEkxjOluVIYxzGzwiaE75XuOKa6vtmF
         jjRBcWTA5HMVAUdmyv4owoBrURC/db1EW7CmLt6fGnIp7PViQh/0jJlhQtxxc64GqyKG
         bD7ccOObYflB14/OGcv6kLujayBP2emZafpXQjbc3zpw5OoZx8c2WG/hDiGwozkuP6cJ
         kxHkhB6jaTmdPkT3YowGiE37LG8WVDNKJg2e7fX2rG8NaXEnUEO57024mRgnR9xvijAd
         WihA==
X-Forwarded-Encrypted: i=1; AJvYcCVlfqtCAKVEA+MKDvhPOwKfZ8lw5Vj9sRxIkwPjRw4SJyTeWc7ALZCEBbKB/QFaDFxZSWhPxz3eQxI=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyejFa0ID8hLKjIupnBYB8SaGTEY2Uwv5PWJ8Z37/SuLA6K4xMk
	VimrP3Yxbj2j2l7y3056IYjwfeqS9mzgWRS7AdQV4JIQuLh2IH6RodIDsSPDB6Q=
X-Google-Smtp-Source: AGHT+IFfXfWqoS5NBpyRNpy6DCSDEwgabSAeDW+s4v8eQ4rJErjCrawthy6hKKjihx7mr2NcczOVDw==
X-Received: by 2002:a17:907:6d21:b0:a9a:80f9:d4e0 with SMTP id a640c23a62f3a-a9de5ee1056mr1561430566b.34.1730284243053;
        Wed, 30 Oct 2024 03:30:43 -0700 (PDT)
Message-ID: <eae9a653-eb8f-45fd-bce2-495c50f0abde@citrix.com>
Date: Wed, 30 Oct 2024 10:30:40 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <14173e8a-ec20-455a-87bf-ae6d3d9a9051@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <14173e8a-ec20-455a-87bf-ae6d3d9a9051@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 6:51 am, Jan Beulich wrote:
> On 29.10.2024 18:55, Andrew Cooper wrote:
>> We already have one migration case opencoded (feat.max_subleaf).  A more
>> recent discovery is that we advertise x2APIC to guests without ensuring that
>> we provide max_leaf >= 0xb.
>>
>> In general, any leaf known to Xen can be safely configured by the toolstack if
>> it doesn't violate other constraints.
>>
>> Therefore, introduce guest_common_{max,default}_leaves() to generalise the
>> special case we currently have for feat.max_subleaf, in preparation to be able
>> to provide x2APIC topology in leaf 0xb even on older hardware.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
>
> I'll have to update the AMX logic accordingly (maybe also the AVX10 one).

Yeah - I need to get back to your shrinking series too.

> I'd like to point out that this highlights a naming anomaly in
> x86_cpu_policies_are_compatible(): update_domain_cpu_policy() passes in
> the respective max policy as first argument. Imo the first parameter of
> the function would better be named "max" there.

That's covered in the documentation.  It made sense when I first planned
things, but that was many many iterations ago.

>
>> --- a/xen/arch/x86/cpu-policy.c
>> +++ b/xen/arch/x86/cpu-policy.c
>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>>  }
>>  
>> +/*
>> + * Guest max policies can have any max leaf/subleaf within bounds.
>> + *
>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
>> + * - Some VMs we'd like to synthesise leaves not present on the host.
>> + */
>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
>> +}
>> +
>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
>> +{
>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
>> +}
> Which sadly still leaves open how to suitably shrink the max values,
> when they're larger than necessary (for the guest).

Only the toolstack can do the shrinking, and only as the about the final
step after optional features have been activated.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:32:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:32:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828023.1242816 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6605-0006e6-4l; Wed, 30 Oct 2024 10:32:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828023.1242816; Wed, 30 Oct 2024 10:32: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 1t6604-0006dz-Vw; Wed, 30 Oct 2024 10:32:28 +0000
Received: by outflank-mailman (input) for mailman id 828023;
 Wed, 30 Oct 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=z9hZ=R2=gmail.com=julien.grall.oss@srs-se1.protection.inumbo.net>)
 id 1t6603-0006dp-1m
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:32:27 +0000
Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com
 [209.85.128.42]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3f5d1166-96aa-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 11:32:22 +0100 (CET)
Received: by mail-wm1-f42.google.com with SMTP id
 5b1f17b1804b1-4314f38d274so82329625e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:32:22 -0700 (PDT)
Received: from [10.24.67.19] ([15.248.2.239]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058bb4461sm14918691f8f.113.2024.10.30.03.32.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 03:32:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3f5d1166-96aa-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjIwOS44NS4xMjguNDIiLCJoZWxvIjoibWFpbC13bTEtZjQyLmdvb2dsZS5jb20ifQ==
X-Custom-Transaction: eyJpZCI6IjNmNWQxMTY2LTk2YWEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg0MzQyLjU2Njg4Mywic2VuZGVyIjoianVsaWVuLmdyYWxsLm9zc0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730284342; x=1730889142;
        h=content-transfer-encoding:in-reply-to: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=L33PnbqEyk+PVBpX3rxIMF4yyg9tRTkiD84adMMPIew=;
        b=kMABBaANuaPhMQBsX0V7NMir3F36eEWvogGZH19hL0zCoIeMZVln+I3aKxGKfljA8B
         uPVPDqIdLhvUQ5TvwHoCA3StSZjKMBLjKztYDCTJeNa/yDRoHMwYUa/CvIcaB6lMVqTO
         dNTGfbMJex6S1d5bnajrF0M1O6j3/T18ZeuuhpZGzfvOK4o7o+IRVSHLi5c38pYF6BKK
         3pip3Rz9Y0lHxTFaMIhfn1+DNnOz1B9g0u/ozQ3NdwzeZ7AtRyAWR25B3CILJtbEIX16
         maxYHDCd/q7qgz/Y6C9Nh3AIPt+jHhXO1Ol7sD0bisJDysbAJMI1/cLGroRyA5LNL278
         IwAQ==
X-Forwarded-Encrypted: i=1; AJvYcCUSYqG5+Bbk4pFPV+fG/jn+ZVYTS0moF1B+Nw1lJI+Px24HbtFRUl/cE2hxKzPH2/roLiCCoREZVZc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxBGjcFBLN4V1JNUn3qCKewECpEpCU7RDIxHJueUm4TAbpGC/KE
	sO6rU2ihIFV6Jh+znwqpqeDymyJu3v6jFBDd9cVUkxhlyZUMSZaT
X-Google-Smtp-Source: AGHT+IG2NLFfl4HCnpKZEDeWzsr001O6ZcoNmbbmuIw08DinBSKGJu5eklBriM0kUbU2EX6Z8FnAgw==
X-Received: by 2002:a05:600c:3b87:b0:431:59b2:f0c4 with SMTP id 5b1f17b1804b1-4319ac99158mr163563335e9.8.1730284341761;
        Wed, 30 Oct 2024 03:32:21 -0700 (PDT)
Message-ID: <8ee005f3-baf7-408a-b084-833475ced50d@xen.org>
Date: Wed, 30 Oct 2024 10:32:20 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Julien Grall <julien@xen.org>
Subject: Re: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
To: Luca Fancellu <Luca.Fancellu@arm.com>,
 Julien Grall <julien.grall.oss@gmail.com>
Cc: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
 <FE41FD6C-EBCE-4EDA-ADD4-E09A58773763@arm.com>
 <CAJ=z9a1d2vzXh-fK5E2z-k4SOjE0cjJUGfFnaJiobvQpS+Y5Rw@mail.gmail.com>
 <3963FE44-9ED1-4462-BD42-DA1B1A5040C5@arm.com>
Content-Language: en-GB
In-Reply-To: <3963FE44-9ED1-4462-BD42-DA1B1A5040C5@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 30/10/2024 10:08, Luca Fancellu wrote:
> Hi Julien,
> 
>> On 30 Oct 2024, at 09:52, Julien Grall <julien.grall.oss@gmail.com> wrote:
>>
>> On Wed, 30 Oct 2024 at 09:17, Luca Fancellu <Luca.Fancellu@arm.com> wrote:
>>>
>>> Hi Ayan,
>>>
>>> While I rebased the branch on top of your patches, I saw you’ve changed the number of regions
>>> mapped at boot time, can I ask why?
>>
>> I have asked the change. If you look at the layout...
> 
> Apologies, I didn’t see you’ve asked the change

No need to apologies! I think I asked a few revisions ago.

> 
>>
>>>
>>> Compared to https://patchwork.kernel.org/project/xen-devel/patch/20230626033443.2943270-25-Penny.Zheng@arm.com/:
>>
>>
>> ... you have two sections with the same permissions:
>>
>> xen_mpumap[1] : Xen read-only data
>> xen_mpumap[2] : Xen read-only after init data
>> xen_mpumap[3] : Xen read-write data
>>
>> During boot, [2] and [3] will share the same permissions. After boot,
>> this will be [1] and [2]. Given the number of MPU regions is limited,
>> this is a bit of a waste.
>>
>> We also don't want to have a hole in the middle of Xen sections. So
>> folding seemed to be a good idea.
>>
>>>
>>>> +FUNC(enable_boot_cpu_mm)
>>>> +
>>>> +    /* Get the number of regions specified in MPUIR_EL2 */
>>>> +    mrs   x5, MPUIR_EL2
>>>> +
>>>> +    /* x0: region sel */
>>>> +    mov   x0, xzr
>>>> +    /* Xen text section. */
>>>> +    ldr   x1, =_stext
>>>> +    ldr   x2, =_etext
>>>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
>>>> +
>>>> +    /* Xen read-only data section. */
>>>> +    ldr   x1, =_srodata
>>>> +    ldr   x2, =_erodata
>>>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_RO_PRBAR
>>>> +
>>>> +    /* Xen read-only after init and data section. (RW data) */
>>>> +    ldr   x1, =__ro_after_init_start
>>>> +    ldr   x2, =__init_begin
>>>> +    prepare_xen_region x0, x1, x2, x3, x4, x5
>>>
>>>          ^— this, for example, will block Xen to call init_done(void) later, I understand this is earlyboot,
>>>                but I guess we don’t want to make subsequent changes to this part when introducing the
>>>                patches to support start_xen()
>>
>> Can you be a bit more descriptive... What will block?
> 
> This call in setup.c:
>      rc = modify_xen_mappings((unsigned long)&__ro_after_init_start,
>                               (unsigned long)&__ro_after_init_end,
>                               PAGE_HYPERVISOR_RO);
> 
> Cannot work anymore because xen_mpumap[2] is wider than only (__ro_after_init_start, __ro_after_init_end).

Is this because the implementation of modify_xen_mappings() is only able 
to modify a full region? IOW, it would not be able to split regions 
and/or merge them?

> 
> If that is what we want, then we could wrap the above call into something MMU specific that will execute the above call and
> something MPU specific that will modify xen_mpumap[1] from (_srodata, _erodata) to (_srodata, __ro_after_init_end)
> and xen_mpumap[2] from (__ro_after_init_start, __init_begin) to (__ro_after_init_end, __init_begin).

I think it would make sense to have the call mmu/mpu specific. This 
would allow to limit the number of MPU regions used by Xen itself.

The only problem is IIRC the region is not fixed because we will skip 
empty regions during earlyboot.

Cheers,

-- 
Julien Grall



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:39:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:39:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828036.1242826 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t666m-0007kR-Q9; Wed, 30 Oct 2024 10:39:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828036.1242826; Wed, 30 Oct 2024 10: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 1t666m-0007kK-Lo; Wed, 30 Oct 2024 10:39:24 +0000
Received: by outflank-mailman (input) for mailman id 828036;
 Wed, 30 Oct 2024 10:39: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t666l-0007kE-CV
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:39:23 +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 3583c8b9-96ab-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 11:39:15 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a99f3a5a44cso790683666b.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:39:15 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f29a430sm561386166b.139.2024.10.30.03.39.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 03:39:14 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3583c8b9-96ab-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmUiLCJoZWxvIjoibWFpbC1lajEteDYyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjM1ODNjOGI5LTk2YWItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg0NzU1LjUzOTQ0Nywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730284755; x=1730889555; 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=ux4G/wWBIypqhbwYzb16HUEr9cFByYtihO4URxFZkvA=;
        b=EhDh6Ll89BVjWlzMp3xlc3WxiuOIjxO/m89h/Yv9t4tscj84ta2JPBKqiB+2/j9mZg
         j/mka/0RFXX19YXen4eqh75X86apMcyNAh09gsmhbDYy//gbw3kb0R0GcuKTv1+d1eD6
         1LfmOYtrpb91w3IF5wXesNUr7YHZnD3r0QDfo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730284755; x=1730889555;
        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=ux4G/wWBIypqhbwYzb16HUEr9cFByYtihO4URxFZkvA=;
        b=A/6vmLuvGUPw31lPox5gAhyX5sy/4186lEe0cgMwQb57e02mF7hSWH/nKUbpsM2hKW
         T06f6xwV0VTbY4CXyA4ZSU0oDfQRW6f4Er3vCYPSRARe7Q5sIE3qjISRbk8sJLb7xhUD
         iLKrYC2nj/HXhfYUnrSxLmE8PM5gBlTJ2r/jME8EyRMj3NeCg6Rtfz0E6f7dzXJeIUXr
         vWC9KLKT6F7Gtfc/dmL631GFA4nyy8b+2qq6J1pdcU2NnBNZTpLyOBPZfW+isRtITwAq
         hlLuRCjjss46ANV9YUhyLGBvvtM7XjH9/C6ePya+HMUJMr23ceHiwJUGvVf2iQ+RieE1
         Uzog==
X-Gm-Message-State: AOJu0YyaycT2bLXKKNjfGRqNCJGcyenxX4UvZuCjNa222yz8itd+/xi0
	+grTIZLnL18Jiclxw+GtunDEYSerOUMBhd62Qy2UXscQT9tSPze1H3LvNWAm84k=
X-Google-Smtp-Source: AGHT+IG7gwS0IEJc8r6EO2IP6Th2XI6GpaD7XgF9VYZ68ktNAjN5uP15CwiT8hDmK7o+2/nJq7ps4g==
X-Received: by 2002:a17:907:3ea6:b0:a9a:d52:9e79 with SMTP id a640c23a62f3a-a9de632e87cmr1467906166b.60.1730284754815;
        Wed, 30 Oct 2024 03:39:14 -0700 (PDT)
Message-ID: <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
Date: Wed, 30 Oct 2024 10:39:12 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZyH1az6sb2wnVxgu@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 8:59 am, Roger Pau Monné wrote:
> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
>> index b6d9fad56773..78bc9872b09a 100644
>> --- a/xen/arch/x86/cpu-policy.c
>> +++ b/xen/arch/x86/cpu-policy.c
>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>>  }
>>  
>> +/*
>> + * Guest max policies can have any max leaf/subleaf within bounds.
>> + *
>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
>> + * - Some VMs we'd like to synthesise leaves not present on the host.
>> + */
>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
>> +}
>> +
>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
>> +{
>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
>> +}
> I think this what I'm going to ask is future work.  After the
> modifications done to the host policy by max functions
> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
> better be done taking into account the contents of the policy, rather
> than capping to the host values?
>
> (note this comment is strictly for guest_common_default_leaves(), the
> max version is fine using ARRAY_SIZE).

I'm afraid I don't follow.

calculate_{pv,hvm}_max_policy() don't modify the host policy.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:44:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:44:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828042.1242839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66Bm-0000vC-Iz; Wed, 30 Oct 2024 10:44:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828042.1242839; Wed, 30 Oct 2024 10: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 1t66Bm-0000uM-FP; Wed, 30 Oct 2024 10:44:34 +0000
Received: by outflank-mailman (input) for mailman id 828042;
 Wed, 30 Oct 2024 10:44: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=PXHf=R2=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t66Bl-0000rj-PM
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:44:33 +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 f126811d-96ab-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:44:30 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fb6110c8faso61633221fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:44:30 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629f3c8sm4674107a12.37.2024.10.30.03.44.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 03:44:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f126811d-96ab-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmYiLCJoZWxvIjoibWFpbC1sajEteDIyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImYxMjY4MTFkLTk2YWItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg1MDcwLjE5OTQxMywic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730285069; x=1730889869; 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=O3+1hK/hSpl0jxie1PIVrii3O1vEIeG8EleIH9bDgDE=;
        b=E73DznzTawVLIhSUJQ9U4fzoFGGw9xncwq3iWhsCvs1YJRnVXxANSxK9mkL4xwUihZ
         Sr/pROi7QkIRfrQqymxjM99Jadv3S9BEcJEhLfed3/hBBCuSir68kfpfaxAVeLOyqwzx
         vtLHIS/37ELyKvoX9WFQBsElFQFFE9B/woVYM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730285069; x=1730889869;
        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=O3+1hK/hSpl0jxie1PIVrii3O1vEIeG8EleIH9bDgDE=;
        b=v4XbUW3gbN00f06g/6U5mQBtOtvIRjMTzVn6mDnrpW9VYL5B1ai/uxDS3dMnAYgoFk
         ibQK/iGw1KksM9pZlr7ngWR9JguB1eYjmrRSFT4oLoRxbCfIH+HTD14c8ue/3Nv9QrPm
         hXTqWNAW3V54QpRGrjruyuWuy43MukXBdA5mbFn3rA3ckeHIoPcLLQGS/d0+auGjslHV
         6WqSw4j8HteFALepCG8MckfOil4IyzruGNCn8JB3AW4wRNgj4jnNd3HFpz3pCKRxLOO2
         Xl4abRKaaBm/kRSTU3Bgy3GLYoEHCvzbef4AklEKyk35/zllIVIAIjV5VAh9stCA8OHx
         LIuA==
X-Gm-Message-State: AOJu0Ywy8c8yoJA0RrgvQx9Zy+05rg5Fco7U0onFEAeuKppm294Nfkrj
	Pv/ybl+cFbOrbrBRAC/ClqfyawnfZj+5ry4SYDKhX+utX46Z/9FlXsuJ6rBupCYv0jIV31W10OO
	0
X-Google-Smtp-Source: AGHT+IHTTXGIdvapWw2pNUDGaHygAoq/K39BBa6akhg1q2F6bZAAp7feRII5bWFlIw4aBDF/d0AYKw==
X-Received: by 2002:a2e:b8c3:0:b0:2fb:382e:410f with SMTP id 38308e7fff4ca-2fcbdfdb11cmr68969671fa.26.1730285069147;
        Wed, 30 Oct 2024 03:44:29 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH] x86/mm: Use standard C types for sized integers
Date: Wed, 30 Oct 2024 10:44:06 +0000
Message-Id: <20241030104406.2173357-2-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The header is already using these types.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/mm.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 2a837f3d59..71a29b2cb3 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -230,7 +230,7 @@ struct page_info
          * Only valid for: a) free pages, and b) pages with zero type count
          * (except page table pages when the guest is in shadow mode).
          */
-        u32 tlbflush_timestamp;
+        uint32_t tlbflush_timestamp;
 
         /*
          * When PGT_partial is true then the first two fields are valid and
@@ -284,8 +284,8 @@ struct page_info
          *   in use.
          */
         struct {
-            u16 nr_validated_ptes:PAGETABLE_ORDER + 1;
-            u16 :16 - PAGETABLE_ORDER - 1 - 1;
+            uint16_t nr_validated_ptes:PAGETABLE_ORDER + 1;
+            uint16_t :16 - PAGETABLE_ORDER - 1 - 1;
             uint16_t partial_flags:1;
             int16_t linear_pt_count;
         };
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:44:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:44:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828041.1242834 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66Bm-0000s4-A1; Wed, 30 Oct 2024 10:44:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828041.1242834; Wed, 30 Oct 2024 10: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 1t66Bm-0000rx-7V; Wed, 30 Oct 2024 10:44:34 +0000
Received: by outflank-mailman (input) for mailman id 828041;
 Wed, 30 Oct 2024 10:44: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=PXHf=R2=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t66Bl-0000rj-3e
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:44:33 +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 f0120920-96ab-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:44:28 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5cbb6166c06so6231675a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:44:28 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb629f3c8sm4674107a12.37.2024.10.30.03.44.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 03:44:27 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f0120920-96ab-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzQiLCJoZWxvIjoibWFpbC1lZDEteDUzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImYwMTIwOTIwLTk2YWItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg1MDY4LjQ3NDc3OCwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730285068; x=1730889868; 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=KsbfI1/ckGtkeMcdcR9rQRj5pZNXNSVLvvG6C1Ohs1U=;
        b=OetU9WwIBtMjwt6Z/G6bLzNzZYJzUBbV0s+yjq6DXKOq1TMG5M7DQKwBzufq/Z4E4I
         6rJCuVGvcTHDkAwoD/7IsFtPncEN4pW39nLAakBJI6nEQsX/vwucKKTocxLNMtPhcFDY
         N6Z6wqaFZj6t46vE47YFWZcel6R27sI6wbtAg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730285068; x=1730889868;
        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=KsbfI1/ckGtkeMcdcR9rQRj5pZNXNSVLvvG6C1Ohs1U=;
        b=PCgK+XRK6tiiImkc0pbD8sv64GZWYJ4SuFryTzGw0u7kAc0djV9vg3Y6v54fD2Ia7H
         S7fUfFAcl8tRjGG5RILIcvAhHyNL5Gt49HJQocWlqWtiNAsRmVvi6+N27GJMz4dr2pGw
         payc3C30blEAD9mOtUf94L5PzBgY5kttxohdBfta0PFDX+8RECdQhecj9Oic/DRV+brA
         dv3TuPrT9AbE4Y7qMDXTvK7dTwUN0ZAHmQFnra0BxeyzraCHEig0TfdgcbDUjuEF5zRH
         RZvRHDjxr3cLTBHf8eM4ieiky3m4GXlpgQVKDE/FhW1n/2V9lNkRFDIAcca6H2S3msGH
         biZQ==
X-Gm-Message-State: AOJu0YxAy/Pw+bvSusrRP+U+MaJRUfI1mo+SScNRNqDx9JnrqimpRUzy
	3+Sny6Pmz58ulltHOeyJLtS8TBzmI+CpemaWR/HgLHh3MvNOyVgOyRRA2AGYbQ0vBRwrz2Y6nG+
	l
X-Google-Smtp-Source: AGHT+IFu/i5m/dxLXhDcCGrhE0vLX8905Cqul3JnecwbrOAuqtCDdHGwicomn1OQ38afXAWnGcSprQ==
X-Received: by 2002:a05:6402:4407:b0:5c9:74e3:acbb with SMTP id 4fb4d7f45d1cf-5cbbf8a2109mr13108106a12.10.1730285067454;
        Wed, 30 Oct 2024 03:44:27 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH] x86/setup: Make setup.h header self contained
Date: Wed, 30 Oct 2024 10:44:05 +0000
Message-Id: <20241030104406.2173357-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The header uses rangeset structure typedef which definition
is not included.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
 xen/arch/x86/include/asm/setup.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 4874ee8936..e4e96b36bd 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -2,6 +2,7 @@
 #define __X86_SETUP_H_
 
 #include <xen/multiboot.h>
+#include <xen/rangeset.h>
 #include <asm/numa.h>
 
 extern const char __2M_text_start[], __2M_text_end[];
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:52:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:52:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828053.1242855 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66JA-0003W6-CF; Wed, 30 Oct 2024 10:52:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828053.1242855; Wed, 30 Oct 2024 10:52: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 1t66JA-0003Vz-8n; Wed, 30 Oct 2024 10:52:12 +0000
Received: by outflank-mailman (input) for mailman id 828053;
 Wed, 30 Oct 2024 10:52: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=MZK+=R2=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t66J8-0003Vt-Ri
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:52:11 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on20630.outbound.protection.outlook.com
 [2a01:111:f403:2613::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ecffa0d6-96ac-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:51:33 +0100 (CET)
Received: from AM6P193CA0076.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:88::17)
 by DU0PR08MB8090.eurprd08.prod.outlook.com (2603:10a6:10:3e9::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.32; Wed, 30 Oct
 2024 10:51:28 +0000
Received: from AMS0EPF000001A4.eurprd05.prod.outlook.com
 (2603:10a6:209:88:cafe::43) by AM6P193CA0076.outlook.office365.com
 (2603:10a6:209:88::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.20 via Frontend
 Transport; Wed, 30 Oct 2024 10:51:28 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF000001A4.mail.protection.outlook.com (10.167.16.229) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Wed, 30 Oct 2024 10:51:26 +0000
Received: ("Tessian outbound 373849c2df5a:v490");
 Wed, 30 Oct 2024 10:51:26 +0000
Received: from Lb0e164304850.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 6C593A4A-EECD-4724-9D8C-F28A2644D3E7.1; 
 Wed, 30 Oct 2024 10:51:15 +0000
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 Lb0e164304850.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 30 Oct 2024 10:51:15 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by AM9PR08MB5988.eurprd08.prod.outlook.com (2603:10a6:20b:283::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.20; Wed, 30 Oct
 2024 10:51:12 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.027; Wed, 30 Oct 2024
 10:51: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: ecffa0d6-96ac-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjYxMzo6NjMwIiwiaGVsbyI6IkVVUjA1LVZJMS1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6ImVjZmZhMGQ2LTk2YWMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg1NDkzLjE2MDYxOCwic2VuZGVyIjoibHVjYS5mYW5jZWxsdUBhcm0uY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=tQlpfEnjcNyGDyk6Nh32ig3NMllJQ79YTyVHfOUu7WSUozCqYRV9DUOOIoe7V5ZsWR5fUi/ntK08z+knN7+HZsYp9ekniIJfUDyA1Oq+JJbOheoQESQArrl9bgbTQP6M271OBKhVlHOEubJ5H7bh/vVKvi78t54qtic9Zva6sowJFgC0uQDU6R8s39X5UrYXyVScO+qOEyeVX52pB2pX84iL4h/PMuswyZe6Q6e//nWlX3fpYHbU52lGS80f2DAgslgd4c167cpqlwc8BkAeuMJh9++qWjLFs+chIXTqZWiY/KD6iwpY5rm9sX6NURu2McJQ4OBMQJbdqdHD9VL25Q==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=iufWWRFZhYo+XxtfAwDAOoMohFr9S+PMW8q/2XvrvRE=;
 b=XM9bi6HuGvyLVRJc7omiu7+GT++nAI9VR3WCdS2WQD4fZ0yxMYaSGHPu2buOy2k4iipdD4GzHGgEuGGO2VJnpT5XNhg443AcMaBYV14SIJ5SSkEMc3D/h2QiMlnO7jxSZdOl3FhdhdbmxkygWTqjMJi9anIQgmjCrcsEskmvzgxxM+vdHOHy4r7Kwi/wdLDxn7SpWbpGahI1kbexOAxrlqC3tMT0eO021jfCd60mY3Dcr5mRBbpytNnwhV4jaA9ZXtkNW9Jo/ur2SrG1QTuk3CT9Ar77iqnAxRJbE8ezXQ0+CJH0aXT7w/qZvUrtDeYAymk4qQDM0VfgAfaewuWW+A==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=iufWWRFZhYo+XxtfAwDAOoMohFr9S+PMW8q/2XvrvRE=;
 b=iNf3RcyrcBMkS3D5h5o6U/b5cP54FOHxMEF3fzSTHs18rT6HlxfWiGx7hoLYB7hXsQ6FWiYZSMMdFqSZtYVziA022h2QLCuLICRDNQPMPvbinlb8NqrC9TfRMK/p+G/2bAam/cjTDcPCrqKtUGJzmkHy8Zq0Dtr0AU0EYM+ddUQ=
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=arm.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: f3d35c9deca953d9
X-TessianGatewayMetadata: puHOz0q3jcae6/lQy3wCf9gKESQEj9XeOYZL9QjpnVFTEB9uMRam0/BjrqSFmXnZ2vq7+bkjMKGUANqkz5li4PnMBgaCUp0U/S6gqPZe0E70BtcJSjAoJHeuXr40llpJ+pcne5RV066jpoIM97JdZsxmIUm6TaaP6VOzHh9Je9w=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=SACBeeu15SwGJPDOsiVshEQv6io9B9G0UIj2UbGhanX7GXcZCjHL8w0W8YDJKRD3uaxprH50Gt6omoKtRCWbB2xqJy18tON/FGY3Sk43ymBDrqQo4FA+ZU9bk/65yX8YaOftOec3yKtavvpvrhF2bLE/3mCZgXaPOojwWrY9KYYkLGXXSN+NOuZqkxEF3mRUeW27CoCxSjI7O6GGYC6LZHYyXz5NyLqIHKujdx1GwTP/IssuFcT+aNcvWQ8UogALoWSPHI3KlybpDhcjBagt83RAVS0cXjaX7xdCmi2+7wzePQt23hsaXxyPCHMQRWpzU7F78GgUkSOZO6CyCH47NA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=iufWWRFZhYo+XxtfAwDAOoMohFr9S+PMW8q/2XvrvRE=;
 b=O9fMfwsy1YIYOm0rtCCIx8JNXAhmPRGcYmzidmQK1U4kALQVc2uyzR0uhO81mq4cKs51L4b+B1O4xTyeYex17eIEbWemwkp8m+DwizXb22EQT++0NCgt5Cg9Td+tAZw4wyj+YYnOXtglYHRHbwTmZEMjrWIWVGABCQsTpcXBZO2zUB0QxKtzT6guEPQZvmY3Ud+mltmRMmQ9OYty+yuy4BJFiY3ZfHCWviV03s9iL3HzaveVGwJimV6dTkEgxFnnkCQq3OHYrZatoQ9MgH0eer0KKamIey0D3xZEkMEZUjO8yHmoLgkxtTqLdrwnqsm6nMm8aVea8YinZBTIeHGYcw==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=iufWWRFZhYo+XxtfAwDAOoMohFr9S+PMW8q/2XvrvRE=;
 b=iNf3RcyrcBMkS3D5h5o6U/b5cP54FOHxMEF3fzSTHs18rT6HlxfWiGx7hoLYB7hXsQ6FWiYZSMMdFqSZtYVziA022h2QLCuLICRDNQPMPvbinlb8NqrC9TfRMK/p+G/2bAam/cjTDcPCrqKtUGJzmkHy8Zq0Dtr0AU0EYM+ddUQ=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Julien Grall <julien@xen.org>
CC: Julien Grall <julien.grall.oss@gmail.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>, "xen-devel@lists.xenproject.org"
	<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>
Subject: Re: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Topic: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Thread-Index: AQHbKTd3r9ds8GMpC0a1KoGz65CsELKfBnMAgAAKAQCAAARNAIAABs8AgAAFJgA=
Date: Wed, 30 Oct 2024 10:51:12 +0000
Message-ID: <19C963C9-97C2-442D-B9AC-9CE7CF3B50F2@arm.com>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
 <FE41FD6C-EBCE-4EDA-ADD4-E09A58773763@arm.com>
 <CAJ=z9a1d2vzXh-fK5E2z-k4SOjE0cjJUGfFnaJiobvQpS+Y5Rw@mail.gmail.com>
 <3963FE44-9ED1-4462-BD42-DA1B1A5040C5@arm.com>
 <8ee005f3-baf7-408a-b084-833475ced50d@xen.org>
In-Reply-To: <8ee005f3-baf7-408a-b084-833475ced50d@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.3826.200.121)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|AM9PR08MB5988:EE_|AMS0EPF000001A4:EE_|DU0PR08MB8090:EE_
X-MS-Office365-Filtering-Correlation-Id: 5eecee35-4c5e-4dc8-705f-08dcf8d0cdc3
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|376014|366016|1800799024|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?Yk5SM0N0cDByMndxSGQ0YzhGVm41NkY3V29BallLbnVYNGR5QU4veUgzUXEw?=
 =?utf-8?B?K0I0T3lBK2k2Z01RSmhZeTZQbktmdkJQbldXOTFVU09nbU1NanBXZm1iWVZw?=
 =?utf-8?B?K3IrMzN1allLRVpzcE1jbzNndi9sMlJCVW8wT3N6cU9LbkpuaytkaWpMSDNT?=
 =?utf-8?B?NFl3b2lqM2ppRVM3M1ZQMDZUOXdpcWNjYmFlRWdOeXptSE1GbVpUa1ZmbGFH?=
 =?utf-8?B?b3kvMWVka3ZXMGJlNGtSZ3FBRjZ3cU56U3VLUENUdUpubHRvT0NKeHQrK0Vu?=
 =?utf-8?B?WnJPNUlLT2taT0VoRU5pdytLQmU0eElpZUFlUElCM1o3OWNzdXhvYVNhMXZm?=
 =?utf-8?B?QmlxOE9kd1ZjR0lBdzlwNWVEdmpvYUtMZzF1VkxzT2xjSndZaFpKYVpldHRO?=
 =?utf-8?B?SGQwb2tvUTM0Y1l1NzN6K2JGVDVDNkgrR2ttTW1XMmd6WlNtSUtOeGNNZkZP?=
 =?utf-8?B?a01RVFBvV0QyRWR5b0VLQ2Z3Sy9SYjNzeklMUHRvZTl0NU5iUkVIMkFBU2lW?=
 =?utf-8?B?Zmh3Z0pGS3k3bXBDa0hHL3E4UnloWEUyTXVseDdmWlB6bmZCNXJTaXArTVJM?=
 =?utf-8?B?YUk2bVRpNTRoTnA5NjllSzJCRDVQVkNhbi9welJENlBONmZOTzJVVW9NcWl6?=
 =?utf-8?B?NzR0dU1zUnU4NkVuOFU2REY2Tlh1WUYwYnNJaWdWaWRQT0syanhmOUozMUtw?=
 =?utf-8?B?SHFXc0E4citqTDJYSjFEZU5rUXdlSUNGTmRBdmxsYVBWV0owdHlCSWphZ0Jp?=
 =?utf-8?B?WFhmR1RqQjlIYjlRa0lsM0IxbGJubVhUdlRGeCtMcmVKRitPdkxCcUw0VHBo?=
 =?utf-8?B?U1NsUHpMRkNJOFMxeTJvSVB0QlN4K21HVjE3dnJoYWUxODVtdEE5cmxmQ2FC?=
 =?utf-8?B?clhvUUV3VWhiM3pWVmhMQk5XS01ZaTZaeFhPbjB6aVlTaUcxQjBkNkFBY1pr?=
 =?utf-8?B?Z2l2ZDNSVXRlUVByOXkxNU95S0IwVmVTbTN6KzdKeHhIUHZRQ2hiWll2VEp6?=
 =?utf-8?B?M2VkNmJaZ3I4WWVlaHF0Z0R6c0RtUnNWZ2tXQmM1MGRMa0pkcCtkRGdkdTFX?=
 =?utf-8?B?TUNIOWtmd2c4RXZMZUhoVUhaV3VxalhIanJ4YlFzbU9qbkxOREx0MU1EeU9H?=
 =?utf-8?B?NEwvMHd4SXdpL3V5aytjMVNLYnhKNDJLbVVMcm1xZWVvdElNa0F1UUk4L2JG?=
 =?utf-8?B?VGpud1JNZXpuZE9Rb0xxL3hZZjNmb3JTVlkyUHhwVzhlLzJWUE1Ic1VsTnVH?=
 =?utf-8?B?MEgyMzUzUFQvbCtVYVRwWnBBcHV0Nm90UzRjRXF5NTM4dEdhY3puL2pzbVZR?=
 =?utf-8?B?SDMxNWZzeWlvNS81OENMeGpkM0M5TFNEN0hkc1k3MjBaS2RGSjl0Y0FQL2pI?=
 =?utf-8?B?RkxmcjFWdTB0YU92SytRUDYwSnhIcTJINGpCNnBvUDdXMWlqUFZnR0RpOHlj?=
 =?utf-8?B?TkNvelhMVVFXWVRXYkhDOWoyM3pSeFJ5ckJlUWMyK1ZlK0phZkRTb29aRlVt?=
 =?utf-8?B?VDIxVVhtUC9WWnBwSVFWakJ4UFJBcXpYeHpJeWhUU2FzZjFZNFYwMzJRVU0z?=
 =?utf-8?B?cVUvbGg2WURCZklGeXJoVVVGcDRRNFBHTVJHck5Xa0w3NWZBZVRKUEVDRVRI?=
 =?utf-8?B?OVdZTTBSY2R2TTNkYjFZbG1OcEl6am80MzRJdHQ0OGk3d3FHY243amlVVnBN?=
 =?utf-8?B?VHRVK3BYYk9NRXdBVWZpYXhOQ0R4Wm0rUVlaY01BVzkxTkpMOE9KZHVWNTlh?=
 =?utf-8?B?ZmVSVFZOOGlscjd2WWl3ZmhHZkFidFJEOTVKVm90WnNNOU5Ecms4SXhxUk9n?=
 =?utf-8?B?WUtBaHNjcEtJZ0ZNaTJqdz09?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <E8636130AC6522439537670D4B243937@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB5988
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A4.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	446bbb37-edec-4c52-439f-08dcf8d0c519
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|1800799024|376014|82310400026|36860700013|35042699022;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?NUZRUzBMTGJya0RsOEtYNjJLa2tXdlUxQ0I0NVJMMS9tOEIzT2ZOY0F5OGRp?=
 =?utf-8?B?cTZieDhtZVJpaW5ZNWJRK1lFZzR2ZVNPQXRock1NZGVOeHZYNHdhSWtJamlC?=
 =?utf-8?B?aTRsZG1JSlFyVytwNWlXTTcyYTRZUEhIZWYvbVgrbmlOTHJadzBIaDkzNGky?=
 =?utf-8?B?VzZKWXZCblQvQyttekNiRG13RDV2c0UwRnZKU292eVF4Wk1odVdlMjJQUmdL?=
 =?utf-8?B?WXVUV2FndGhHR0Y3eUNvMWNVVW5Sbkt6bkI0U1h0Vk8vakR4RnVrd3UzSGhm?=
 =?utf-8?B?MFl3b1pCS1hMTCtzSUZaZEhzNC9MYk5sK1A3cXJ1RHQ2clptL005SGU2NGor?=
 =?utf-8?B?Y0lsVTloMDR2NUNMcEFYZ3RFNW9KS0lxUFFsaGNUdlk1blNqaXc4elViMnZF?=
 =?utf-8?B?MHJ4Vm5KUGI1dXV3cVpGN3NCODlDTFd0cUxFUEx0dXRsY3ZXNE5uNXA2YitO?=
 =?utf-8?B?SzJqS2VwaGRFZ25NWS9Ed3c2cVM0QzcwbTBwcEFlcGR5Sm5DMXNBc3VaTDVP?=
 =?utf-8?B?WjFYNHdkM09mSEptNWhNZDJYK09QU28wT3dqaTI1bWhxY1pROW51ckwycjFz?=
 =?utf-8?B?ZnU4MDJsZmpTUkI2d1pnODRoc1dZdldzeUwvaHFEN3B5bE4wb2RyOVplMTdL?=
 =?utf-8?B?NTN0ZmlCa1A3U2hrQjNtRy9Gc1ZFODBxK1h0N2pyanlwUG5nbklRTFJxUDdI?=
 =?utf-8?B?aktGQmRHNEJJbVFVYUZrS0lQd3JXVWNFNzBRUXQyUnRMQnBwaXVSbCtMSzMy?=
 =?utf-8?B?TkduRGZZNHJhVFpHdU1wYStQNVNKNDFXUUJ0SzFNd3VyQlpXeWVxWHROSE5s?=
 =?utf-8?B?ZnRUL3JKNW5COXhTckt5U1pHT3VmSTQrQ1R1SEhXSXVvd1lnNGpDcitpTDlG?=
 =?utf-8?B?aXh5MHRDUjFqNGpHa0RQdTVVN1piSjBYcG1sVmZvRjh6RW9hQlY2dHIzNkEw?=
 =?utf-8?B?ckc4dUwwNUhYZ1hreUlzcHpVRHpDMmptdjB3L3ZmMEx1QVZKVm1ja2JFd2Rq?=
 =?utf-8?B?U213NlROUWlXeVBZUHI1Q3dBQUtwTUN1WmI5OStwZi95RlJxUWhHN3RiNmpN?=
 =?utf-8?B?L0srY1lHbmpRbjJhYTJya2ozYlovMUpySUxQWkVBbUVnbWJRWFhqTW1KWjJH?=
 =?utf-8?B?MGZKY2FUa1pIY3NaL2FOZUxJY0s1Y0JGNjgwcGlKaVRJV3NlRWlTNk1zSXR4?=
 =?utf-8?B?U2VNWGJycTBnZHJhWXVJbFFwamVEWkZualUydm5wbXEvSkIwVVRnbDRDbExv?=
 =?utf-8?B?dU01Nmt2VFVrdWlSbmZ2V1VVVXpLSWw4c0RYN1Z1bkUzWVdyWUxVdndYM0hC?=
 =?utf-8?B?ZkVYS2trYXpYMUZQVzIySkpDZVBtTExaUGhHdEtTMjJKeHNneml2TjEwV21V?=
 =?utf-8?B?MWRWeWVnZXFqT2FBNTA4MHQvdlFKeEo3QnllQ1lVbGpER2xnZW1td0Izd0lD?=
 =?utf-8?B?eVg2cUtKK1d4QUJYYnZJN2U5Nzg2MUZGdGhjbXlQNzZKYjF5aGVXTU13MzRw?=
 =?utf-8?B?V2RTR3ZaWXRncm5XQ1pEaTJJcjhCZHIvNC9OeTRac3A4RHJDby8wME1CZjAr?=
 =?utf-8?B?N0xsU2xHTmdrV1MwRHFaa1dmVGFybk5mYUxPa2lUWnVyanp5ekoxSnlrWVlu?=
 =?utf-8?B?ZTJsYUw3UmRTNUNlbzQzSnE2R2t0MnFuelBlTkQyU2E0VXNKOWd6em1kQjBL?=
 =?utf-8?B?UHRSMXNmMGFzVXU1NGttUmNjazMrbERiKzNSS29LOXJUYTF2MUZkMDhGczky?=
 =?utf-8?B?TjFxZDJGMkVzT3gwTHc0Q2pjOVNXK3FtMDUrYmYxbTlCaFFEK1BLazc3S09Q?=
 =?utf-8?Q?7RWyoFuM3UTeYiGITs2tzGSfrMsl0ebyhfQtk=3D?=
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:(13230040)(1800799024)(376014)(82310400026)(36860700013)(35042699022);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2024 10:51:26.8166
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5eecee35-4c5e-4dc8-705f-08dcf8d0cdc3
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:
	AMS0EPF000001A4.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8090

SGkgSnVsaWVuLA0KDQo+IE9uIDMwIE9jdCAyMDI0LCBhdCAxMDozMiwgSnVsaWVuIEdyYWxsIDxq
dWxpZW5AeGVuLm9yZz4gd3JvdGU6DQo+IA0KPiBPbiAzMC8xMC8yMDI0IDEwOjA4LCBMdWNhIEZh
bmNlbGx1IHdyb3RlOg0KPj4gSGkgSnVsaWVuLA0KPj4+IE9uIDMwIE9jdCAyMDI0LCBhdCAwOTo1
MiwgSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGwub3NzQGdtYWlsLmNvbT4gd3JvdGU6DQo+Pj4g
DQo+Pj4gT24gV2VkLCAzMCBPY3QgMjAyNCBhdCAwOToxNywgTHVjYSBGYW5jZWxsdSA8THVjYS5G
YW5jZWxsdUBhcm0uY29tPiB3cm90ZToNCj4+Pj4gDQo+Pj4+IEhpIEF5YW4sDQo+Pj4+IA0KPj4+
PiBXaGlsZSBJIHJlYmFzZWQgdGhlIGJyYW5jaCBvbiB0b3Agb2YgeW91ciBwYXRjaGVzLCBJIHNh
dyB5b3XigJl2ZSBjaGFuZ2VkIHRoZSBudW1iZXIgb2YgcmVnaW9ucw0KPj4+PiBtYXBwZWQgYXQg
Ym9vdCB0aW1lLCBjYW4gSSBhc2sgd2h5Pw0KPj4+IA0KPj4+IEkgaGF2ZSBhc2tlZCB0aGUgY2hh
bmdlLiBJZiB5b3UgbG9vayBhdCB0aGUgbGF5b3V0Li4uDQo+PiBBcG9sb2dpZXMsIEkgZGlkbuKA
mXQgc2VlIHlvdeKAmXZlIGFza2VkIHRoZSBjaGFuZ2UNCj4gDQo+IE5vIG5lZWQgdG8gYXBvbG9n
aWVzISBJIHRoaW5rIEkgYXNrZWQgYSBmZXcgcmV2aXNpb25zIGFnby4NCj4gDQo+Pj4gDQo+Pj4+
IA0KPj4+PiBDb21wYXJlZCB0byBodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3Qv
eGVuLWRldmVsL3BhdGNoLzIwMjMwNjI2MDMzNDQzLjI5NDMyNzAtMjUtUGVubnkuWmhlbmdAYXJt
LmNvbS86DQo+Pj4gDQo+Pj4gDQo+Pj4gLi4uIHlvdSBoYXZlIHR3byBzZWN0aW9ucyB3aXRoIHRo
ZSBzYW1lIHBlcm1pc3Npb25zOg0KPj4+IA0KPj4+IHhlbl9tcHVtYXBbMV0gOiBYZW4gcmVhZC1v
bmx5IGRhdGENCj4+PiB4ZW5fbXB1bWFwWzJdIDogWGVuIHJlYWQtb25seSBhZnRlciBpbml0IGRh
dGENCj4+PiB4ZW5fbXB1bWFwWzNdIDogWGVuIHJlYWQtd3JpdGUgZGF0YQ0KPj4+IA0KPj4+IER1
cmluZyBib290LCBbMl0gYW5kIFszXSB3aWxsIHNoYXJlIHRoZSBzYW1lIHBlcm1pc3Npb25zLiBB
ZnRlciBib290LA0KPj4+IHRoaXMgd2lsbCBiZSBbMV0gYW5kIFsyXS4gR2l2ZW4gdGhlIG51bWJl
ciBvZiBNUFUgcmVnaW9ucyBpcyBsaW1pdGVkLA0KPj4+IHRoaXMgaXMgYSBiaXQgb2YgYSB3YXN0
ZS4NCj4+PiANCj4+PiBXZSBhbHNvIGRvbid0IHdhbnQgdG8gaGF2ZSBhIGhvbGUgaW4gdGhlIG1p
ZGRsZSBvZiBYZW4gc2VjdGlvbnMuIFNvDQo+Pj4gZm9sZGluZyBzZWVtZWQgdG8gYmUgYSBnb29k
IGlkZWEuDQo+Pj4gDQo+Pj4+IA0KPj4+Pj4gK0ZVTkMoZW5hYmxlX2Jvb3RfY3B1X21tKQ0KPj4+
Pj4gKw0KPj4+Pj4gKyAgICAvKiBHZXQgdGhlIG51bWJlciBvZiByZWdpb25zIHNwZWNpZmllZCBp
biBNUFVJUl9FTDIgKi8NCj4+Pj4+ICsgICAgbXJzICAgeDUsIE1QVUlSX0VMMg0KPj4+Pj4gKw0K
Pj4+Pj4gKyAgICAvKiB4MDogcmVnaW9uIHNlbCAqLw0KPj4+Pj4gKyAgICBtb3YgICB4MCwgeHpy
DQo+Pj4+PiArICAgIC8qIFhlbiB0ZXh0IHNlY3Rpb24uICovDQo+Pj4+PiArICAgIGxkciAgIHgx
LCA9X3N0ZXh0DQo+Pj4+PiArICAgIGxkciAgIHgyLCA9X2V0ZXh0DQo+Pj4+PiArICAgIHByZXBh
cmVfeGVuX3JlZ2lvbiB4MCwgeDEsIHgyLCB4MywgeDQsIHg1LCBhdHRyX3ByYmFyPVJFR0lPTl9U
RVhUX1BSQkFSDQo+Pj4+PiArDQo+Pj4+PiArICAgIC8qIFhlbiByZWFkLW9ubHkgZGF0YSBzZWN0
aW9uLiAqLw0KPj4+Pj4gKyAgICBsZHIgICB4MSwgPV9zcm9kYXRhDQo+Pj4+PiArICAgIGxkciAg
IHgyLCA9X2Vyb2RhdGENCj4+Pj4+ICsgICAgcHJlcGFyZV94ZW5fcmVnaW9uIHgwLCB4MSwgeDIs
IHgzLCB4NCwgeDUsIGF0dHJfcHJiYXI9UkVHSU9OX1JPX1BSQkFSDQo+Pj4+PiArDQo+Pj4+PiAr
ICAgIC8qIFhlbiByZWFkLW9ubHkgYWZ0ZXIgaW5pdCBhbmQgZGF0YSBzZWN0aW9uLiAoUlcgZGF0
YSkgKi8NCj4+Pj4+ICsgICAgbGRyICAgeDEsID1fX3JvX2FmdGVyX2luaXRfc3RhcnQNCj4+Pj4+
ICsgICAgbGRyICAgeDIsID1fX2luaXRfYmVnaW4NCj4+Pj4+ICsgICAgcHJlcGFyZV94ZW5fcmVn
aW9uIHgwLCB4MSwgeDIsIHgzLCB4NCwgeDUNCj4+Pj4gDQo+Pj4+ICAgICAgICAgXuKAlCB0aGlz
LCBmb3IgZXhhbXBsZSwgd2lsbCBibG9jayBYZW4gdG8gY2FsbCBpbml0X2RvbmUodm9pZCkgbGF0
ZXIsIEkgdW5kZXJzdGFuZCB0aGlzIGlzIGVhcmx5Ym9vdCwNCj4+Pj4gICAgICAgICAgICAgICBi
dXQgSSBndWVzcyB3ZSBkb27igJl0IHdhbnQgdG8gbWFrZSBzdWJzZXF1ZW50IGNoYW5nZXMgdG8g
dGhpcyBwYXJ0IHdoZW4gaW50cm9kdWNpbmcgdGhlDQo+Pj4+ICAgICAgICAgICAgICAgcGF0Y2hl
cyB0byBzdXBwb3J0IHN0YXJ0X3hlbigpDQo+Pj4gDQo+Pj4gQ2FuIHlvdSBiZSBhIGJpdCBtb3Jl
IGRlc2NyaXB0aXZlLi4uIFdoYXQgd2lsbCBibG9jaz8NCj4+IFRoaXMgY2FsbCBpbiBzZXR1cC5j
Og0KPj4gICAgIHJjID0gbW9kaWZ5X3hlbl9tYXBwaW5ncygodW5zaWduZWQgbG9uZykmX19yb19h
ZnRlcl9pbml0X3N0YXJ0LA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWdu
ZWQgbG9uZykmX19yb19hZnRlcl9pbml0X2VuZCwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUEFHRV9IWVBFUlZJU09SX1JPKTsNCj4+IENhbm5vdCB3b3JrIGFueW1vcmUgYmVjYXVz
ZSB4ZW5fbXB1bWFwWzJdIGlzIHdpZGVyIHRoYW4gb25seSAoX19yb19hZnRlcl9pbml0X3N0YXJ0
LCBfX3JvX2FmdGVyX2luaXRfZW5kKS4NCj4gDQo+IElzIHRoaXMgYmVjYXVzZSB0aGUgaW1wbGVt
ZW50YXRpb24gb2YgbW9kaWZ5X3hlbl9tYXBwaW5ncygpIGlzIG9ubHkgYWJsZSB0byBtb2RpZnkg
YSBmdWxsIHJlZ2lvbj8gSU9XLCBpdCB3b3VsZCBub3QgYmUgYWJsZSB0byBzcGxpdCByZWdpb25z
IGFuZC9vciBtZXJnZSB0aGVtPw0KDQpZZXMsIHRoZSBjb2RlIGlzLCBhdCB0aGUgbW9tZW50LCBu
b3Qgc21hcnQgZW5vdWdoIHRvIGRvIHRoYXQsIGl0IHdpbGwgb25seSBtb2RpZnkgYSBmdWxsIHJl
Z2lvbi4NCg0KPiANCj4+IElmIHRoYXQgaXMgd2hhdCB3ZSB3YW50LCB0aGVuIHdlIGNvdWxkIHdy
YXAgdGhlIGFib3ZlIGNhbGwgaW50byBzb21ldGhpbmcgTU1VIHNwZWNpZmljIHRoYXQgd2lsbCBl
eGVjdXRlIHRoZSBhYm92ZSBjYWxsIGFuZA0KPj4gc29tZXRoaW5nIE1QVSBzcGVjaWZpYyB0aGF0
IHdpbGwgbW9kaWZ5IHhlbl9tcHVtYXBbMV0gZnJvbSAoX3Nyb2RhdGEsIF9lcm9kYXRhKSB0byAo
X3Nyb2RhdGEsIF9fcm9fYWZ0ZXJfaW5pdF9lbmQpDQo+PiBhbmQgeGVuX21wdW1hcFsyXSBmcm9t
IChfX3JvX2FmdGVyX2luaXRfc3RhcnQsIF9faW5pdF9iZWdpbikgdG8gKF9fcm9fYWZ0ZXJfaW5p
dF9lbmQsIF9faW5pdF9iZWdpbikuDQo+IA0KPiBJIHRoaW5rIGl0IHdvdWxkIG1ha2Ugc2Vuc2Ug
dG8gaGF2ZSB0aGUgY2FsbCBtbXUvbXB1IHNwZWNpZmljLiBUaGlzIHdvdWxkIGFsbG93IHRvIGxp
bWl0IHRoZSBudW1iZXIgb2YgTVBVIHJlZ2lvbnMgdXNlZCBieSBYZW4gaXRzZWxmLg0KPiANCj4g
VGhlIG9ubHkgcHJvYmxlbSBpcyBJSVJDIHRoZSByZWdpb24gaXMgbm90IGZpeGVkIGJlY2F1c2Ug
d2Ugd2lsbCBza2lwIGVtcHR5IHJlZ2lvbnMgZHVyaW5nIGVhcmx5Ym9vdC4NCg0KWWVzLCBidXQg
SSB0aGluayB3ZSBjYW4gYXNzdW1lIHRoYXQgWChfc3JvZGF0YSwgX2Vyb2RhdGEpIGFuZCBZKF9f
cm9fYWZ0ZXJfaW5pdF9zdGFydCwgX19pbml0X2JlZ2luKSB3b27igJl0IG5ldmVyIGJlIGVtcHR5
IGZvciBYZW4/DQoNCkluIHRoYXQgY2FzZSwgdGhlIGNhbGwgdG8gbXB1bWFwX2NvbnRhaW5fcmVn
aW9uKCkgc2hvdWxkIGJlIGFibGUgdG8gcmV0cmlldmUgdGhlIGZ1bGwgcmVnaW9uIFggYW5kIHRo
ZSBwYXJ0aWFsIHJlZ2lvbiBZIGFuZA0KYSBzcGVjaWZpYyBmdW5jdGlvbiBjb3VsZCBtb2RpZnkg
dGhlIHJhbmdlcyBvZiBib3RoIGdpdmVuIHRoZSByZXNwZWN0aXZlIGluZGV4ZXMuDQoNCkNvZGUg
aW4gbXkgYnJhbmNoOiBodHRwczovL2dpdGxhYi5jb20veGVuLXByb2plY3QvcGVvcGxlL2x1Y2Fm
YW5jZWxsdS94ZW4vLS9ibG9iL3I4Ml9yZWJhc2VkL3hlbi9hcmNoL2FybS9tcHUvbW0uYyNMMzgy
DQoNCg0K


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 10:57:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 10:57:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828062.1242866 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66Oa-0004hr-3a; Wed, 30 Oct 2024 10:57:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828062.1242866; Wed, 30 Oct 2024 10:57: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 1t66OZ-0004hk-Vx; Wed, 30 Oct 2024 10:57:47 +0000
Received: by outflank-mailman (input) for mailman id 828062;
 Wed, 30 Oct 2024 10:57: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t66OY-0004hb-Ht
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:57:46 +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 c8bfffe4-96ad-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 11:57:42 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4314fa33a35so60289605e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:57:42 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd9aa09fsm17751605e9.37.2024.10.30.03.57.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 03:57:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c8bfffe4-96ad-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzEiLCJoZWxvIjoibWFpbC13bTEteDMzMS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImM4YmZmZmU0LTk2YWQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg1ODYyLjA1MDYzNCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730285861; x=1730890661; 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=ZZKBVmyf2aIBR2VBNDaMsxn5lv8b+rbWNkUaD4g3FNM=;
        b=BzmA19gxaHYoVwsYkQuDobNF+ahFco/guvWkhSHtUhHK/RLn51NrW6kfoTBWXOdU+M
         HDXbchw2ovA0Xwr9ELcoYjgCvcOKo3+Q+jjOTRMPsxg2nw2wAztTJKgPi7GcVDOcAkxk
         vX8LChTd2Aqf8G89mYVjyzw0vgWI2na1Hk7uMknnw//2nxPu5SyKX4GQPnLLhlooqAaE
         /sSIAIQxkGgkkXgeumBtJue5gQwAl8A+2FP37vHfoG71DmYKYiaC0TCNa2n22AR7IXok
         ILAzJn8CX1K2+OygS0Vm6JIPk2l046j04pC0+Nbw2SJ2P4eyM8l0/TNwxvRVxxEM4dTw
         uOMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730285861; x=1730890661;
        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=ZZKBVmyf2aIBR2VBNDaMsxn5lv8b+rbWNkUaD4g3FNM=;
        b=v1tKCNS/E89TIWMs0ua+6HXZnN2Hr13AI24DmUEF7PcTbqWmHa5KqaQIFRj8oCBqaF
         B1S+ukGvPj+zrnHJ0/VXBFmqozok3nNZsZYY8W405moAXAjAPNKEwlrSvt+RXsiP8WWv
         yYkVBmCHPld9kB7aMBjIM7hkV6TsYAfeDHyKBh7GgymPsSW4EzcWww0MobG5NadB/ut8
         uX2kiRNx/k3ikVU5NgZ4Mqgxre9RFftNRLa5O32P8j9Oy/QZZeg8Tuhq5Lg2b0cQ54Pg
         iJVnkeezuwX1RwXCLUPrKeeYmchrDwBNrdMYUx/d147s8DjS+ZM69GwEE3c92J2EFoHH
         CZuQ==
X-Forwarded-Encrypted: i=1; AJvYcCVVHHasYe5rDrlQ+cpfgRgybcKzU1hOWJjR5Ae7CHIB5479Hukdn8OwylRADWxpkpb7yz9qhUSt9Og=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz20gNU7HOD+YVxVCKWHAry6FnaVg8r33Za7Xf31/PCd7l5ZtPe
	WWo+ykM++CcvPUu2jRSB7tgKIu3JOYVvZh88J0AuTdo7zrXyoRBx1waeX3sh9g==
X-Google-Smtp-Source: AGHT+IGocwZOAj0J1v/6n0fzuIqevT8l7bxxfrT8Q6AygxK29MHvYIO1jRlPiXgkTaZf+mm413mYBQ==
X-Received: by 2002:a05:600c:1c94:b0:431:59b2:f0d1 with SMTP id 5b1f17b1804b1-431bb976dd4mr24076505e9.4.1730285860849;
        Wed, 30 Oct 2024 03:57:40 -0700 (PDT)
Message-ID: <62f917f4-ff63-46b3-9b7f-f8d467bfa2f3@suse.com>
Date: Wed, 30 Oct 2024 11:57:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241029110351.40531-1-roger.pau@citrix.com>
 <53034f16-682e-4081-ab7e-81338c700f85@suse.com> <ZyEf8hK-XyGn6Kp8@macbook>
 <d03f58f0-5b93-4b23-85cb-dc2c18a4eb41@suse.com> <ZyIF5qYU8dC-yYNW@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: <ZyIF5qYU8dC-yYNW@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 11:09, Roger Pau Monné wrote:
> On Wed, Oct 30, 2024 at 10:41:40AM +0100, Jan Beulich wrote:
>> On 29.10.2024 18:48, Roger Pau Monné wrote:
>>> On Tue, Oct 29, 2024 at 05:43:24PM +0100, Jan Beulich wrote:
>>>> On 29.10.2024 12:03, Roger Pau Monne wrote:
>>>>> @@ -273,6 +293,13 @@ void __ioapic_write_entry(
>>>>>      {
>>>>>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>>>>>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
>>>>> +        /*
>>>>> +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
>>>>> +         * Entry will be updated once the array is allocated and there's a
>>>>> +         * write against the pin.
>>>>> +         */
>>>>> +        if ( io_apic_pin_eoi )
>>>>> +            io_apic_pin_eoi[apic][pin] = e.vector;
>>>>
>>>> The comment here looks a little misleading to me. clear_IO_APIC_pin() calls
>>>> here to, in particular, set the mask bit. With the mask bit the vector isn't
>>>> meaningful anyway (and indeed clear_IO_APIC_pin() sets it to zero, at which
>>>> point recording IRQ_VECTOR_UNASSIGNED might be better than the bogus vector
>>>> 0x00).
>>>
>>> Note that clear_IO_APIC_pin() performs the call to
>>> __ioapic_write_entry() with raw == false, at which point
>>> __ioapic_write_entry() will call iommu_update_ire_from_apic() if IOMMU
>>> IR is enabled.  The cached 'vector' value will be the IOMMU entry
>>> offset for the AMD-Vi case, as the IOMMU code will perform the call to
>>> __ioapic_write_entry() with raw == true.
>>>
>>> What matters is that the cached value matches what's written in the
>>> IO-APIC RTE, and the current logic ensures this.
>>>
>>> What's the benefit of using IRQ_VECTOR_UNASSIGNED if the result is
>>> reading the RTE and finding that vector == 0?
>>
>> It's not specifically the vector == 0 case alone. Shouldn't we leave
>> the latched vector alone when writing an RTE with the mask bit set?
> 
> I'm not sure what's the benefit of the extra logic to detect such
> cases, just to avoid a write to the io_apic_pin_eoi matrix.

Perhaps the largely theoretical concern towards having stale data
somewhere. Yet ...

>> Any still pending EOI (there should be none aiui) can't possibly
>> target the meaningless vector / index in such an RTE. Perhaps it was
>> wrong to suggest to overwrite (with IRQ_VECTOR_UNASSIGNED) what we
>> have on record.
>>
>> Yet at the same time there ought to be a case where the recorded
>> indeed moves back to IRQ_VECTOR_UNASSIGNED.
> 
> The only purpose of the io_apic_pin_eoi matrix is to cache what's
> currently in the RTE entry 'vector' field.  I don't think we should
> attempt to add extra logic as to whether the entry is valid, or
> masked.  Higher level layers should already take care of that.  The
> only purpose of the logic added in this patch is to ensure the EOI is
> performed using what's in the RTE vector field for the requested pin.
> Anything else is out of scope IMO.
> 
> Another option, which would allow to make the matrix store uint8_t
> elements would be to initialize it at allocation with the RTE vector
> fields currently present, IOW: do a raw read of every RTE and set the
> fetched vector field in io_apic_pin_eoi.  Would that be better to you,
> as also removing the need to ever store IRQ_VECTOR_UNASSIGNED?

... yes, that may make sense (and eliminate my concern there).

I wonder whether the allocation of the array then wouldn't better be
moved earlier, to enable_IO_APIC(), such that clear_IO_APIC_pin()
already can suitably update it. In fact, since that function writes
zero[1], no extra reads would then be needed at all, and the array could
simply start out all zeroed.

Jan

[1] With the exception of RTEs saying SMI, where - for having fully
correct data on record - we may then need to update the array slot.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:00:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:00:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828068.1242874 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66Qi-0005Jd-DT; Wed, 30 Oct 2024 11:00:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828068.1242874; Wed, 30 Oct 2024 11:00: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 1t66Qi-0005JW-Au; Wed, 30 Oct 2024 11:00:00 +0000
Received: by outflank-mailman (input) for mailman id 828068;
 Wed, 30 Oct 2024 10:59: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t66Qh-0005FP-Fu
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 10:59:59 +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 18e305f2-96ae-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 11:59:57 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-37d495d217bso5791257f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 03:59:55 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b132fbsm15114317f8f.4.2024.10.30.03.59.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 03:59:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 18e305f2-96ae-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MmQiLCJoZWxvIjoibWFpbC13cjEteDQyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjE4ZTMwNWYyLTk2YWUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg1OTk3LjAwMTc4Miwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730285995; x=1730890795; 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=B2QoleF1EN3+NxuNwheEM2xs+vG9hzrY1cF3vkFeQZo=;
        b=fhi9RE6yr6KB/ZxPeTVlZlem0ChFLGBn+dsLuloD0l4SB1VvNFum+m4lCtBK/17S4j
         vMETi35YFne0Vyn5MtcZF15bVxbV7aDsfZ+sWm2h++4kFkC1cCUeSxhp3mj7TzPD03PI
         lbbM5aAOu32fIiqEHtQ8Wo+U/6EH53ohusJ0B7QZeOF4Z11pDuR3FEUYFzcAF4oMzq9/
         Woqz6cbf85MKYKYYD7Bi+4PA9Jo7WmA1QpfbhuvjGaJFsmBg1rxngkqQnBd+K2zqfi7q
         y439ABaW9xOiV0bpAygoZ3N3YZf+r2QDQ/i8eXAexrdlPWFot+2iFThdlUWHdD2d31L8
         8+Qg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730285995; x=1730890795;
        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=B2QoleF1EN3+NxuNwheEM2xs+vG9hzrY1cF3vkFeQZo=;
        b=ntf5H+VoC2+9d7Q5KPoIgeOfWCo1RFKtXkFiMZaNsbu3BUUqbC4aS0g7biA2wcWzB1
         FF3iato8s5Tf1mImEngIuOkgjjG+GeRc455reSzkqsMn39+oOiFP4eYqLMKQWR22lVhb
         M64/9fgDrg8LQSmA/hOZVixX7GOS8x8/RHGYMXuU7BvgDM4zeclDYLRcLah0SYFPI1/o
         zrMuMxANllrXPCAoyuK99n1+za+7+9yuvgL+WBBMbuYsgFi2HMaizgCbD29eKBGYrFmW
         GnmBzuSvcvi0kTt3diEmtL67gR78jK/kLbCQOVqJkQOXiIq+Nc6E1Np+o7LoeQq9I7r8
         //zg==
X-Forwarded-Encrypted: i=1; AJvYcCWMaP91q6PCRmYx98DDqqid5RdtLD/vucZOK6LNiEYu2CAKC8HyvMMuV75f2yBHPoqKMpv/YxHj9g4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzwbV6MtxgfV7NzCfW+60xJblksjdXla+5b/SDoBeZ6+gnqH/TD
	1Fi0LKr6ylC3OJC0PyIwfxcbDYhR0eRAFQ+NtQ8n0klRMwC5Ute2NBPCZc2hTg==
X-Google-Smtp-Source: AGHT+IGqZy4zDEv+PY+voOtTEuG5sHKH5SMP/GJbGSekZo11/UlbB35p1/xQ8klJjC+OG7Qb5sUmKQ==
X-Received: by 2002:adf:e34e:0:b0:37d:5042:c8de with SMTP id ffacd0b85a97d-38061172d7dmr12856372f8f.22.1730285995344;
        Wed, 30 Oct 2024 03:59:55 -0700 (PDT)
Message-ID: <1fa03cb0-ded1-4904-8830-f3feefecc404@suse.com>
Date: Wed, 30 Oct 2024 11:59:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/setup: Make setup.h header self contained
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241030104406.2173357-1-frediano.ziglio@cloud.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: <20241030104406.2173357-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.10.2024 11:44, Frediano Ziglio wrote:
> The header uses rangeset structure typedef which definition
> is not included.

And it doesn't need to be. For

int remove_xen_ranges(struct rangeset *r);

we don't need ...

> --- a/xen/arch/x86/include/asm/setup.h
> +++ b/xen/arch/x86/include/asm/setup.h
> @@ -2,6 +2,7 @@
>  #define __X86_SETUP_H_
>  
>  #include <xen/multiboot.h>
> +#include <xen/rangeset.h>
>  #include <asm/numa.h>
>  
>  extern const char __2M_text_start[], __2M_text_end[];

... this, a mere

struct rangeset;

forward decl will suffice.

Jan



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:02:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:02:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828073.1242884 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66T2-0006pm-PM; Wed, 30 Oct 2024 11:02:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828073.1242884; Wed, 30 Oct 2024 11:02: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 1t66T2-0006pf-MB; Wed, 30 Oct 2024 11:02:24 +0000
Received: by outflank-mailman (input) for mailman id 828073;
 Wed, 30 Oct 2024 11:02: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t66T2-0006pZ-6T
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:02:24 +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 6f86b029-96ae-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 12:02:21 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-539f72c8fc1so8083215e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:02:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b70c73sm15318950f8f.72.2024.10.30.04.02.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 04:02:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6f86b029-96ae-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzYiLCJoZWxvIjoibWFpbC1sZjEteDEzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjZmODZiMDI5LTk2YWUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg2MTQxLjM0NDQxNSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730286141; x=1730890941; 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=tBrKegZzjlM9+VI8iKO9G3gNsd2neP/gFTAOb2ml2aA=;
        b=BJ4PVsEWuLAeH911EyhfLHdUcVdjOdwgGOI9iCttpxHfBeQ8vWE5Tv8NsssUXTRJ3P
         SSKjI8ln9g3Bwjo95fPk+/i5hy5g2vzJDLdYQp1lOd7gZfuxwTnpPnxOmvCK741M+GTO
         kcsyngtCchYv/hvJXKIodd9zEpzErjMsBhvcyAL6hhJ4xx4+ZQsVv6I8wPeDGiof57NY
         RoiQTA6UQv9BaTKyDNxHs/I4FA3waaYYpnBAQ03tzpbH2P+OQjkr8AKNjyzA27XsHQCR
         +AQOTfevCySGnZ3qNqv6JOeNaOTokwLCPH+fUZa9/1feStqqDhnJEDjKNb1HYNVBegdn
         mE6g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730286141; x=1730890941;
        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=tBrKegZzjlM9+VI8iKO9G3gNsd2neP/gFTAOb2ml2aA=;
        b=ZE7rIhaG+QA7fU0XOQWAADpD5ePAtW+DF23AC+pHRVL8/iR0Od2VvWbgA3rVF1fgNl
         CoSLfujTbH9MCZWLvENFPSfKAyErbczdtdfoiBe8K0htXgjWl9L2zY8yd7epcKtNMtg7
         fnw6EJtuLwpTelziE1HDiWr+PKlajBkaHi4JRjoYTZpvXFZFxqDKuQ6LUnA0wvnoD7wb
         uF7NNBBxPjcEmQlkLUI1RHsPhm4ur3NgGo7jP47Kp0WaTajU2GRFru776NNBdXD6vnJI
         wdD5EwylwwPeiEPiWE7ineB8oJtcPnpwuq520M0VO+g/1WdGJPGqjLLDJv9jCV4qlsQU
         nfDQ==
X-Forwarded-Encrypted: i=1; AJvYcCVe/NOtAwxkCECXHL/LV6aaQ41KMBmpUWRlnzSc0ysfmdk7uDiiEQ/9aX0oj/M+bjy91QizpdJ569w=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yyr5XjaWaj5ZgkhBRT5PGMnGV1uz2CdoM9iARXrSXLTXNw/EIoS
	BmVsMrb552Y0TCkLDNBNbLFh9hHmtqhYYRtcqXkFII0mwDZxE6x1Y84F8WiZBg==
X-Google-Smtp-Source: AGHT+IFYU6YOjTIUPoJ8NhVd8RVsuFRowxd6YWUIEGALaqz863eN+D6sVLVoBn3PQhnhD/0FXc7HVg==
X-Received: by 2002:ac2:4e10:0:b0:539:8a9a:4e56 with SMTP id 2adb3069b0e04-53b8767483fmr1645891e87.53.1730286140567;
        Wed, 30 Oct 2024 04:02:20 -0700 (PDT)
Message-ID: <6a7bd508-99af-4602-86aa-f46d718e36c2@suse.com>
Date: Wed, 30 Oct 2024 12:02:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: Use standard C types for sized integers
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241030104406.2173357-2-frediano.ziglio@cloud.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: <20241030104406.2173357-2-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.10.2024 11:44, Frediano Ziglio wrote:
> The header is already using these types.
> 
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

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

Nevertheless I wonder whether ...

> --- a/xen/arch/x86/include/asm/mm.h
> +++ b/xen/arch/x86/include/asm/mm.h
> @@ -230,7 +230,7 @@ struct page_info
>           * Only valid for: a) free pages, and b) pages with zero type count
>           * (except page table pages when the guest is in shadow mode).
>           */
> -        u32 tlbflush_timestamp;
> +        uint32_t tlbflush_timestamp;
>  
>          /*
>           * When PGT_partial is true then the first two fields are valid and
> @@ -284,8 +284,8 @@ struct page_info
>           *   in use.
>           */
>          struct {
> -            u16 nr_validated_ptes:PAGETABLE_ORDER + 1;
> -            u16 :16 - PAGETABLE_ORDER - 1 - 1;
> +            uint16_t nr_validated_ptes:PAGETABLE_ORDER + 1;
> +            uint16_t :16 - PAGETABLE_ORDER - 1 - 1;
>              uint16_t partial_flags:1;

... fixed width types are really needed here; afaict unsigned int ought to do.

>              int16_t linear_pt_count;

It's only here where the fixed width type is largely needed (or alternatively

            signed int linear_pt_count:16;

).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:03:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:03:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828077.1242894 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66UK-0007PC-2n; Wed, 30 Oct 2024 11:03:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828077.1242894; Wed, 30 Oct 2024 11:03: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 1t66UK-0007P5-06; Wed, 30 Oct 2024 11:03:44 +0000
Received: by outflank-mailman (input) for mailman id 828077;
 Wed, 30 Oct 2024 11:03: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t66UI-0007Ow-L7
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:03:42 +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 9e53a34a-96ae-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 12:03:39 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a0c40849cso1063623666b.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:03:39 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f0679bdsm556937766b.91.2024.10.30.04.03.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 04:03:38 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e53a34a-96ae-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MjkiLCJoZWxvIjoibWFpbC1lajEteDYyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjllNTNhMzRhLTk2YWUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg2MjE5LjgxNzA0Miwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730286219; x=1730891019; 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=MnDB8ZQEYc36yz3rtDIZyC1c9g61W2OKUWC5eAMGLNU=;
        b=gkVC0s1RYlRf+FtykkFr0Px572of+lxGiBo/+oFg3s1F1d7yb5sRs8VT8vIt+/CVJC
         3YjTZ4l8McOJgVV8wQ6aBJDlaC5/wewZnNKvZgg5uE1zyFDGPhR/BcUoVREYaEuGwfK5
         5xkD3WGpMaKrWI75Zq03ZyCm4l5iXDNDNEfRs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730286219; x=1730891019;
        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=MnDB8ZQEYc36yz3rtDIZyC1c9g61W2OKUWC5eAMGLNU=;
        b=kfYtcIBjoQ+QIDKgZfI94BHQXe5pWY+eSCpIohWeHnqPcyjySMkKi7Zw0s0uxYPbnx
         brN4Gz7VbKZckgcWb9s9JHUV3FuZXwUofxtcGxgOBZsZeR5TctN8uKiIIrbcHpnnqMCA
         tDu8o4T++vQ3AShKHqATPgbrZuwxWsDWCxW5130hhiPfUNLKRZpMk5T2bRh1n0ydajgh
         7IioDHtNLKpoNuWXO0T6KsMRljB1teXIcppbRgAJD3d/S4fcN4e10RGciQ8jCHG8zZng
         KugaayzucwT6k+2fkj9f4NJ7EeKqF0QbOoRJKxbMGBKo+xc2bGnxpr1mk81OHsB3dlZ8
         e4mg==
X-Gm-Message-State: AOJu0YzfxA4NFgaKPdqF1DbdfEeO0ubwI0PGFVkbOz3VnBCUAI86UITJ
	wBNEsUS4e25ksurZkQfP/HRLZB/MLYUyx4y5ZWQbUy/ccioTl88wguIWl5Ox5yM=
X-Google-Smtp-Source: AGHT+IHlKz7rDMIf1YsMdKaWW8HPEbjAcxN5ttO59ROjH9myEzlNYErmnQPk8BUhogB+NwUhXXKJ1Q==
X-Received: by 2002:a17:907:970e:b0:a9a:2a56:91e with SMTP id a640c23a62f3a-a9e3a574f2cmr255399066b.6.1730286219224;
        Wed, 30 Oct 2024 04:03:39 -0700 (PDT)
Date: Wed, 30 Oct 2024 12:03:38 +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>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
Message-ID: <ZyISitvz_K_XtvL5@macbook>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook>
 <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>

On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
> > On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
> >> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> >> index b6d9fad56773..78bc9872b09a 100644
> >> --- a/xen/arch/x86/cpu-policy.c
> >> +++ b/xen/arch/x86/cpu-policy.c
> >> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
> >>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
> >>  }
> >>  
> >> +/*
> >> + * Guest max policies can have any max leaf/subleaf within bounds.
> >> + *
> >> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
> >> + * - Some VMs we'd like to synthesise leaves not present on the host.
> >> + */
> >> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
> >> +}
> >> +
> >> +/* Guest default policies inherit the host max leaf/subleaf settings. */
> >> +static void __init guest_common_default_leaves(struct cpu_policy *p)
> >> +{
> >> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
> >> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
> >> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
> >> +}
> > I think this what I'm going to ask is future work.  After the
> > modifications done to the host policy by max functions
> > (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
> > better be done taking into account the contents of the policy, rather
> > than capping to the host values?
> >
> > (note this comment is strictly for guest_common_default_leaves(), the
> > max version is fine using ARRAY_SIZE).
> 
> I'm afraid I don't follow.
> 
> calculate_{pv,hvm}_max_policy() don't modify the host policy.

Hm, I don't think I've expressed myself clearly, sorry.  Let me try
again.

calculate_{hvm,pv}_max_policy() extends the host policy by possibly
setting new features, and such extended policy is then used as the
base for the PV/HVM default policies.

Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
having bits set past the max {sub,}leaf in the host policy, as it's
based in {hvm,pv}_def_cpu_policy that might have such bits set?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:10:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:10:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828093.1242907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66bD-0000kr-VD; Wed, 30 Oct 2024 11:10:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828093.1242907; Wed, 30 Oct 2024 11:10: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 1t66bD-0000kk-S9; Wed, 30 Oct 2024 11:10:51 +0000
Received: by outflank-mailman (input) for mailman id 828093;
 Wed, 30 Oct 2024 11:10: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=PXHf=R2=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t66bC-0000ip-CD
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:10:50 +0000
Received: from mail-oo1-xc2b.google.com (mail-oo1-xc2b.google.com
 [2607:f8b0:4864:20::c2b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9c0f2822-96af-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 12:10:46 +0100 (CET)
Received: by mail-oo1-xc2b.google.com with SMTP id
 006d021491bc7-5eba450531eso402600eaf.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:10:46 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c0f2822-96af-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjI2MDc6ZjhiMDo0ODY0OjIwOjpjMmIiLCJoZWxvIjoibWFpbC1vbzEteGMyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjljMGYyODIyLTk2YWYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg2NjQ2LjIzOTEzNSwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730286645; x=1730891445; 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=ej99+fg7TCmiUOQgK81G5nalwlcA0KI6JWULKjI2mcU=;
        b=b+qgfH9Z4WJkrcbMZAZzhEO5D9E8QOUnvvGgWsjXL1LoMPVHf4IrMKCiYrBuN8ixvg
         YNgeNDcC1tEPSZniGu3/hRRQ0shjdvf3fwHTCl1MXkEKzZTnyniifiAutTba1o2oB/YV
         rplN2SLaYOhPcJpPSZu65n0EBqhEwGtNV9GRo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730286645; x=1730891445;
        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=ej99+fg7TCmiUOQgK81G5nalwlcA0KI6JWULKjI2mcU=;
        b=eEt67v64vFUpO8ITELOZby1luHHQ7NfZiRpUhsmjMQyrQ8LehxzDAXUqJzPqtykf63
         3ge5oXhelOz9Ow3xttsV11Y7GzOFzS13/qmNa2c1Bss9N9Z1gaQF0utYPMYMGTdXkyHB
         B5PavCqdQvxpX55zJHstn4MS/A0YJafm9h7lT3t/rmA7us4uH3Gnx13hK6EIm4P848jX
         zIfukpViQCJ2Uvab70cyc33agbRkZgdQdlPOL5ZZoqgE8J8M8JDz+l7MBJ6WLR9+vIj9
         IYyRF+ByMBkBiFHfdEtvFkbCb7gr+/76yxG3Hp1NxvN16iVX38bufSHqBR7nqljK0oAp
         yAOQ==
X-Forwarded-Encrypted: i=1; AJvYcCVTS2xs4RHdVAuoHuukfmGw0JcqgvLsxMgpYGIGNwpYPh/893HLvucwohnoKS7Puz0Es37JmkIhCEk=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzawc2nbet4fH/1gPJSViLt1OFNrF5r6zIf5fatPa96ShdVtln+
	2Mf+QdRycwUeBcQ5PorpPc4PrVslkWJ6tTIMUmfQsew1vbNw4mwdCgCncaVQEDqTC4UTwT6k3+r
	AahgOkv3quF8GqEXM2CdNkagMknksMCo6HeXfGA==
X-Google-Smtp-Source: AGHT+IHOD5j3KTVxZOixxjNBhLOoqbh33wIKpqmnABhiSNaQzHpmsKNGaGkVdnVPHEO4L4ex1VyYseuCI0+rtyHCdXI=
X-Received: by 2002:a05:6820:1ac9:b0:5dc:99d3:d3bc with SMTP id
 006d021491bc7-5ec54dbb645mr2905645eaf.3.1730286644818; Wed, 30 Oct 2024
 04:10:44 -0700 (PDT)
MIME-Version: 1.0
References: <20241030104406.2173357-2-frediano.ziglio@cloud.com> <6a7bd508-99af-4602-86aa-f46d718e36c2@suse.com>
In-Reply-To: <6a7bd508-99af-4602-86aa-f46d718e36c2@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 30 Oct 2024 11:10:33 +0000
Message-ID: <CACHz=ZixwA4aW3RAsusb=NjR6funSTXDCyViSJRSqjM5N_114Q@mail.gmail.com>
Subject: Re: [PATCH] x86/mm: Use standard C types for sized integers
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>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 30, 2024 at 11:02=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wr=
ote:
>
> On 30.10.2024 11:44, Frediano Ziglio wrote:
> > The header is already using these types.
> >
> > Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
>
> Acked-by: Jan Beulich <jbeulich@suse.com>
>

Thanks

> Nevertheless I wonder whether ...
>
> > --- a/xen/arch/x86/include/asm/mm.h
> > +++ b/xen/arch/x86/include/asm/mm.h
> > @@ -230,7 +230,7 @@ struct page_info
> >           * Only valid for: a) free pages, and b) pages with zero type =
count
> >           * (except page table pages when the guest is in shadow mode).
> >           */
> > -        u32 tlbflush_timestamp;
> > +        uint32_t tlbflush_timestamp;
> >
> >          /*
> >           * When PGT_partial is true then the first two fields are vali=
d and
> > @@ -284,8 +284,8 @@ struct page_info
> >           *   in use.
> >           */
> >          struct {
> > -            u16 nr_validated_ptes:PAGETABLE_ORDER + 1;
> > -            u16 :16 - PAGETABLE_ORDER - 1 - 1;
> > +            uint16_t nr_validated_ptes:PAGETABLE_ORDER + 1;
> > +            uint16_t :16 - PAGETABLE_ORDER - 1 - 1;
> >              uint16_t partial_flags:1;
>
> ... fixed width types are really needed here; afaict unsigned int ought t=
o do.
>

Not for gcc/clang. Other compilers (like MS one) differs... in our
case this is not a public header and we only support gcc/clang so
unsigned/int would be the same.

> >              int16_t linear_pt_count;
>
> It's only here where the fixed width type is largely needed (or alternati=
vely
>
>             signed int linear_pt_count:16;
>

That would be different. Compilers do not allow to take addresses of bit-fi=
elds.

> ).
>
> Jan

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:16:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:16:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828098.1242917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66gO-000275-HT; Wed, 30 Oct 2024 11:16:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828098.1242917; Wed, 30 Oct 2024 11:16: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 1t66gO-00026y-Ez; Wed, 30 Oct 2024 11:16:12 +0000
Received: by outflank-mailman (input) for mailman id 828098;
 Wed, 30 Oct 2024 11:16: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=PXHf=R2=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t66gM-00026s-F0
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:16:10 +0000
Received: from mail-ot1-x335.google.com (mail-ot1-x335.google.com
 [2607:f8b0:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5b1a5781-96b0-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 12:16:06 +0100 (CET)
Received: by mail-ot1-x335.google.com with SMTP id
 46e09a7af769-7181285c7c4so3447861a34.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:16:06 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b1a5781-96b0-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjI2MDc6ZjhiMDo0ODY0OjIwOjozMzUiLCJoZWxvIjoibWFpbC1vdDEteDMzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjViMWE1NzgxLTk2YjAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg2OTY2LjcxMDEyMSwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730286965; x=1730891765; 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=K9Y79gcAUcYKBc3ZfshkScL+lq0Ehfv9KuuKW2ZFlN0=;
        b=MMnroGZYjdLFNphCIr+9gjbfkJ+UhBpiiJ1tboX3ucwv5CELL2AfXqLHc4OWEBE3ZB
         Sc6MHZE2KIG8g2SjA73RqhKFzkxb3cW5VPQBLnqyGpC2+0gdby82bjaq5PlMVqJ7t9Wo
         AK2kWM6XfTkJ98XdprGUN/eCiNqOUJFFbVRC8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730286965; x=1730891765;
        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=K9Y79gcAUcYKBc3ZfshkScL+lq0Ehfv9KuuKW2ZFlN0=;
        b=xQK8Waj+VDpuG0jVy/vxhNWqeMCkX3koRxbLJn7/hwu3tROWMVU7WlOhitbK2mLjA+
         9+a3c4LsE5Q2Bi7negZwkTWAagNJzsooA9R51FFiJnFfDBCnWLvf37l2b3q/tyTGBabX
         ZbEEpDvQVFefJKCt3hsCJ4pXeG7vkjap8/6+SWXw+8Zbc6w0Y3Af0M4/jXcNo0AE5q8Y
         1f30nkFXUEa6p9uO/kZB1PnJGwugaJi7STZyC2HWckSfcqgNi+jGRt5HdvOuPJfYu7oR
         rs1st/enO4Mly8sqYO4ScypOYFykvA36TfduVihHjsnkrlGImg6YI7ydzfM5jbEFDg2K
         /3NA==
X-Forwarded-Encrypted: i=1; AJvYcCWxkbCRaxSEBa7gaAZBvTPmVaKL3mznv4GTAidey63dhjpxG20ey/7TpISo55r9GJhDcTs7CWkQKQA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyqSjDE1WXKGQJ1jrONMviTaHISZzQ6bqxZNQ34Jg3ItIIekDbz
	GOJOkg26VCTSkwSHSIn1Ni0Lx+Dd/FV91J48MuJDt9SnJfQ0ORVXaOQIi1piw/a+NclndmGanxe
	v0YxSCqvfwJVwilWPKggRd5R7lxfxIeOLPQvSfg==
X-Google-Smtp-Source: AGHT+IFL/uG9aoX3Fw99wBeKlrXTB6yz0+oT2vuvxW6oi+Z2kOiYV05ui/prx15U99TPSXjqo+2SIrOMWtENuaKTayE=
X-Received: by 2002:a05:6830:3806:b0:717:fbc7:e3b3 with SMTP id
 46e09a7af769-71868326382mr12739206a34.20.1730286965273; Wed, 30 Oct 2024
 04:16:05 -0700 (PDT)
MIME-Version: 1.0
References: <20241030104406.2173357-1-frediano.ziglio@cloud.com> <1fa03cb0-ded1-4904-8830-f3feefecc404@suse.com>
In-Reply-To: <1fa03cb0-ded1-4904-8830-f3feefecc404@suse.com>
From: Frediano Ziglio <frediano.ziglio@cloud.com>
Date: Wed, 30 Oct 2024 11:15:54 +0000
Message-ID: <CACHz=Zh04AhAwdhYY=i4DecvJbPMF770PE6SkLG+LzQLxueOMQ@mail.gmail.com>
Subject: Re: [PATCH] x86/setup: Make setup.h header self contained
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>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Oct 30, 2024 at 10:59=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wr=
ote:
>
> On 30.10.2024 11:44, Frediano Ziglio wrote:
> > The header uses rangeset structure typedef which definition
> > is not included.
>
> And it doesn't need to be. For
>
> int remove_xen_ranges(struct rangeset *r);
>
> we don't need ...
>
> > --- a/xen/arch/x86/include/asm/setup.h
> > +++ b/xen/arch/x86/include/asm/setup.h
> > @@ -2,6 +2,7 @@
> >  #define __X86_SETUP_H_
> >
> >  #include <xen/multiboot.h>
> > +#include <xen/rangeset.h>
> >  #include <asm/numa.h>
> >
> >  extern const char __2M_text_start[], __2M_text_end[];
>
> ... this, a mere
>
> struct rangeset;
>
> forward decl will suffice.
>
> Jan
>

It's true, but for the same reason, we could avoid including
"xen/multiboot.h" and use "struct module" instead of "module_t".

Frediano


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:16:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:16:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828100.1242928 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66gg-0002WG-Qi; Wed, 30 Oct 2024 11:16:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828100.1242928; Wed, 30 Oct 2024 11:16: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 1t66gg-0002W9-Nh; Wed, 30 Oct 2024 11:16:30 +0000
Received: by outflank-mailman (input) for mailman id 828100;
 Wed, 30 Oct 2024 11:16: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t66gf-00026s-Ve
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:16:29 +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 6735a976-96b0-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 12:16:26 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-37d518f9abcso4600115f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:16:26 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b3c236sm15061806f8f.35.2024.10.30.04.16.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 04:16:25 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6735a976-96b0-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MzQiLCJoZWxvIjoibWFpbC13cjEteDQzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjY3MzVhOTc2LTk2YjAtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg2OTg2LjM3NDI0MSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730286986; x=1730891786; 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=MXqPuPi199o/qEWEhYg7YxRf9gL98Q+KOVTsqPBOLeY=;
        b=VJt++yDtzaBUMI2hl3aJ7+rvicO40zyz/SCecB0tqW1UoVIQAcd27itfcPkvUDXHC1
         44cAU2+A/K4gc8dOWSKwq5Ry950CMH9PXovqsGH0hABNh0mzzLY47a+IoYRrnWlgppZo
         MeC/puNleCs9URQdUijsdaUKwO3LXz9ddTLakpmouCMo92BdY+oQbC11OwvKig1nxnzm
         V3l+f2l3DMW+qcGlOUV10AQlLHLZkVn9yQvtAEvGvg7yakkqTkyeJy97RTC5Cd4vfZBX
         eChIefKwzO4r25UvpE8QoehzWK4pxG3daebzXw0D43QN8avSu1sv39By9fnxmGEHeDEz
         SwkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730286986; x=1730891786;
        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=MXqPuPi199o/qEWEhYg7YxRf9gL98Q+KOVTsqPBOLeY=;
        b=D3PUp0MvnlP+3WZGYdiJxJtr8D5AXux36sCoxPESPyKNOU28YeTDuTIdi1G6knecGE
         Z64z/c0NRdqp9TjydZnACbkSvT/PD+WkaX9GR8osWT/+VtkNmFr98lzYGzicdIw5d+ZO
         OxNaDuYuCkpwYg++UnI7OcxDEgKcdr+DjgVCUVRQcEyJirzb+CNPC+ccw+Epbz2kXbUx
         jvE45hgbRtViB3clwmi2O7zd8o/W5EC9jOZBniwyWz7cH/MuhaZdy1WR1URb4Et5Q5Y6
         mcR/wagnhojXZypHEIuT6oKhbcgtIufRbViIEdBwyIIGNBIFdcPj4yAljkJwxbVkJnyb
         njdQ==
X-Forwarded-Encrypted: i=1; AJvYcCUJzfODo2emVMXod26V9TSSDW+rzJPqIls4mZj2VHAvFRod+OOvTAm8TwchCl/zn3qvKHJvG1hsJn4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwiPUPoDRlqx5Np3RWITbHKRb/7Z7UMCd8HpVRcjFsZQQltn2ix
	Z3r5vEOiU5lBbUuEZj45UGI232Mg9syObirO83vHTDZiHb42c9n10KPqyC7Low==
X-Google-Smtp-Source: AGHT+IFzPkLspuHDkdv+hfYXvu0qQDWJpie8E0owVWh0gXnFq6KIEBrIIcO5byL4vlYU+58vrsEgrQ==
X-Received: by 2002:adf:f18c:0:b0:374:c621:3d67 with SMTP id ffacd0b85a97d-38061137930mr11556275f8f.24.1730286985690;
        Wed, 30 Oct 2024 04:16:25 -0700 (PDT)
Message-ID: <848bfd79-66c8-43a2-9f6a-44b87f130516@suse.com>
Date: Wed, 30 Oct 2024 12:16:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: Use standard C types for sized integers
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241030104406.2173357-2-frediano.ziglio@cloud.com>
 <6a7bd508-99af-4602-86aa-f46d718e36c2@suse.com>
 <CACHz=ZixwA4aW3RAsusb=NjR6funSTXDCyViSJRSqjM5N_114Q@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: <CACHz=ZixwA4aW3RAsusb=NjR6funSTXDCyViSJRSqjM5N_114Q@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 12:10, Frediano Ziglio wrote:
> On Wed, Oct 30, 2024 at 11:02 AM Jan Beulich <jbeulich@suse.com> wrote:
>> It's only here where the fixed width type is largely needed (or alternatively
>>
>>             signed int linear_pt_count:16;
> 
> That would be different. Compilers do not allow to take addresses of bit-fields.

Oh, right, I forgot we take the address of this field in a few places.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:17:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:17:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828107.1242938 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66hY-0003KD-4l; Wed, 30 Oct 2024 11:17:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828107.1242938; Wed, 30 Oct 2024 11:17: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 1t66hY-0003K6-1e; Wed, 30 Oct 2024 11:17:24 +0000
Received: by outflank-mailman (input) for mailman id 828107;
 Wed, 30 Oct 2024 11:17: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t66hW-0003Jo-Nv
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:17:22 +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 86db87c9-96b0-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 12:17:19 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-4315eeb2601so82659405e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:17:19 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b13223sm15121917f8f.1.2024.10.30.04.17.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 04:17:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86db87c9-96b0-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzQiLCJoZWxvIjoibWFpbC13bTEteDMzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijg2ZGI4N2M5LTk2YjAtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg3MDM5LjYyOTc2NSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730287039; x=1730891839; 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=No1FlRIfpjF/Tg6hjlLc/4nEivohUEu7B25eL3XjwMI=;
        b=XrfAy9Zn9fvgQOFVwHD7fDYj/2Q1UuYSJCAHJ4OsZZhow7HnYXpL/Cn3YoTg0Npa4A
         VksLYIn1MGqkb4QgbFnQ+UDliiLrBpKQ0FMxcpC4hmq9MHy2AjOf57WXygYwmPpgRgQu
         W7yGigMAyAm5Q2FdBs8ZFGR/DnSwqGAqQWwBriHNzB/O5Ufr+q+fYTPajJMOTuZmPmcP
         9faNlq/aFMQ4mTkS3o1yCtfHMuEsw7kgO0xyS3ivORv+vLCLczUSc2tF5s98yWwDrUua
         RoE8qw1wTi+sTo32ioGG4iev2Ce7G+feIvHJDByWy9K8k2bVkvpqXBSSS+5Ja9JCR0XQ
         HNvQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730287039; x=1730891839;
        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=No1FlRIfpjF/Tg6hjlLc/4nEivohUEu7B25eL3XjwMI=;
        b=c4XBigTsZI9gO59VeQ35XumRrpDCyZhoTNdIP0jZLEt43aZGv6j5NmYTzOBrBgz2ra
         E8l2IMV6Y4Is/Ua/VqDPJwiA9z1yNEWrsvZguilzqcbGLDaCK5aD+Q7f+EBEBroBC8pH
         Wbss1YJmmzPK0RTYKn7E+VR+bT82/NdzEhXnu/aTQZ5aHm2FK5H/De8CL4jD33dWA7Kz
         xrFruPQ3PWkMMA67XKoJK6/dNVwIbNU8BE9fHscUVZ4A+eJZlT7lJWKbjohAcRfkY/dy
         tLXUKPZuTl4LlQJX+HGhJu4FNwG66OsjuzfJhivtFEh6pGAEhHn4R7UQnIwb9LI6grSi
         h0sw==
X-Forwarded-Encrypted: i=1; AJvYcCXWk1ZUpKi6iKseo2bCwvt7yC8iGmSS5o+95If9+tN68dMseh1ldHVbysBf+83yJsZZ7XXkGunoPaE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyrkFbcWiaiHnuHjseNsX8uBOobuVPVw2apuBp37hPRsopcyGRn
	BB0BUIZvW/ymingDMxgEWf9kwVS/5eHM9qhSHULoKbrEPGDY8MZcN6sXyO8b1g==
X-Google-Smtp-Source: AGHT+IEPJKhxhxZkwkNtRT6v0X8zCRzvUBFajGfw7ykNlemdI7Gytdf6WA8vmLUVhVStiMBXi1avTA==
X-Received: by 2002:a05:6000:b88:b0:37d:397a:5a05 with SMTP id ffacd0b85a97d-38061248a2dmr12360122f8f.54.1730287038807;
        Wed, 30 Oct 2024 04:17:18 -0700 (PDT)
Message-ID: <8984f1da-d4bb-4ab7-b1dc-bcc23c180abc@suse.com>
Date: Wed, 30 Oct 2024 12:17:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/setup: Make setup.h header self contained
To: Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241030104406.2173357-1-frediano.ziglio@cloud.com>
 <1fa03cb0-ded1-4904-8830-f3feefecc404@suse.com>
 <CACHz=Zh04AhAwdhYY=i4DecvJbPMF770PE6SkLG+LzQLxueOMQ@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: <CACHz=Zh04AhAwdhYY=i4DecvJbPMF770PE6SkLG+LzQLxueOMQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 12:15, Frediano Ziglio wrote:
> On Wed, Oct 30, 2024 at 10:59 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 30.10.2024 11:44, Frediano Ziglio wrote:
>>> The header uses rangeset structure typedef which definition
>>> is not included.
>>
>> And it doesn't need to be. For
>>
>> int remove_xen_ranges(struct rangeset *r);
>>
>> we don't need ...
>>
>>> --- a/xen/arch/x86/include/asm/setup.h
>>> +++ b/xen/arch/x86/include/asm/setup.h
>>> @@ -2,6 +2,7 @@
>>>  #define __X86_SETUP_H_
>>>
>>>  #include <xen/multiboot.h>
>>> +#include <xen/rangeset.h>
>>>  #include <asm/numa.h>
>>>
>>>  extern const char __2M_text_start[], __2M_text_end[];
>>
>> ... this, a mere
>>
>> struct rangeset;
>>
>> forward decl will suffice.
>>
>> Jan
>>
> 
> It's true, but for the same reason, we could avoid including
> "xen/multiboot.h" and use "struct module" instead of "module_t".

Indeed. I'd even question the need for that typedef.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:32:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:32:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828115.1242948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66vg-0006pm-By; Wed, 30 Oct 2024 11:32:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828115.1242948; Wed, 30 Oct 2024 11: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 1t66vg-0006pf-7n; Wed, 30 Oct 2024 11:32:00 +0000
Received: by outflank-mailman (input) for mailman id 828115;
 Wed, 30 Oct 2024 11: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t66ve-0006pZ-Qw
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:31:58 +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 8f770393-96b2-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 12:31:52 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a99cc265e0aso1024467366b.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:31:52 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a081d59sm565995566b.189.2024.10.30.04.31.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 04:31:51 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f770393-96b2-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzQiLCJoZWxvIjoibWFpbC1lajEteDYzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjhmNzcwMzkzLTk2YjItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg3OTEyLjg3NDgzNywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730287912; x=1730892712; 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=thZ8ODbHtD1ftXSlRaVuX2Lz0Pd7oA1SaG4YQ9rAJpU=;
        b=YpKtPyloL5Xg6CLs7Klnisgk0iRI105q27uvtF1pwJ1Bxidt+v3AxrsfXPmMsFkexQ
         Vrcm+bymQgwP3inN1OZCQZYevxqyOIqoHu0jyAUMVxcli4pOnBbuacNCiSO1lgrwHwfz
         HQlwISvBw4BZWOGnhSIhIvpRKNdEcAQ+4QBt0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730287912; x=1730892712;
        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=thZ8ODbHtD1ftXSlRaVuX2Lz0Pd7oA1SaG4YQ9rAJpU=;
        b=gfhEj0KanUlNd+UeMLU5tnu3VAQvum0J5YObOtIIv3qnbnoEQMOFgRwU6obllKwMC3
         P91gA/z4MoeSisV0QhS99HFIk08HeJublOG0r8hK1r28vg3yp/QKd/B1+DplgsU/gwNv
         wUqdE8mcJY1J7VJZ7MKrq3K4N3tEn0bwvFN01ECsc0jcVkZS1I4ihaBpC0aXF0xlxauY
         +5vl0aaErEa0ZMqRVng8mU3pMIkVj5760kmwvvs+yZLmGh6XpUIJ9dvx+MoQUqPBdKeu
         cV5+gmzZNeh+GViRffoKNeuktE7r+PMNap5C1QmbSBQ3Qilu9pG1cpHGLAbZFUvE/1f+
         2b6A==
X-Forwarded-Encrypted: i=1; AJvYcCWvgom2NFvkP6eay/nSMpyeUdWb+RUQ3mmzv70uw55t9WCq3TXA3R2uyWWvmdu5PlxTj1vrLzYxBl8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywp0GjTzjBdL3pmeNo7zHbGJgj6eoQ0e2lIO9CFBOfiU8GL4INC
	eyJVvEZZpcgbyUTylmjC95dmdkxyPrNja2XxlgaOsp/T74AkNsvFRbmdi30fNZ8=
X-Google-Smtp-Source: AGHT+IH1iuFIGGBAcZQfm6STlnGCEHSSchu2wkaF+PBlO/ETIH3FFBRa3PH1bMPrHFx6i6uG3j6ppQ==
X-Received: by 2002:a17:907:cca3:b0:a9e:4b88:e03b with SMTP id a640c23a62f3a-a9e4b88e2famr15651366b.0.1730287912224;
        Wed, 30 Oct 2024 04:31:52 -0700 (PDT)
Message-ID: <e8e2385d-b575-4483-ba54-f80c669af9c3@citrix.com>
Date: Wed, 30 Oct 2024 11:31:50 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 04/10] tools/hvmloader: Retrieve (x2)APIC IDs from the
 APs themselves
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-5-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021154600.11745-5-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
> diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h
> index cd716bf39245..04cab1e59f08 100644
> --- a/tools/firmware/hvmloader/config.h
> +++ b/tools/firmware/hvmloader/config.h
> @@ -4,6 +4,8 @@
>  #include <stdint.h>
>  #include <stdbool.h>
>  
> +#include <xen/hvm/hvm_info_table.h>
> +
>  enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt };
>  extern enum virtual_vga virtual_vga;
>  
> @@ -48,8 +50,9 @@ extern uint8_t ioapic_version;
>  
>  #define IOAPIC_ID           0x01
>  
> +extern uint32_t cpu_to_x2apicid[HVM_MAX_VCPUS];

Just cpu_to_apic_id[] please.   The distinction between x or x2 isn't
interesting here.

HVM_MAX_VCPUS is a constant that should never have existed in the first
place, *and* its the limit we're looking to finally break when this
series is accepted.

This array needs to be hvm_info->nr_vcpus entries long, and will want to
be more than 128 entries very soon.  Just scratch_alloc() the array. 
Then you can avoid the include.

> diff --git a/tools/firmware/hvmloader/mp_tables.c b/tools/firmware/hvmloader/mp_tables.c
> index 77d3010406d0..539260365e1e 100644
> --- a/tools/firmware/hvmloader/mp_tables.c
> +++ b/tools/firmware/hvmloader/mp_tables.c
> @@ -198,8 +198,10 @@ static void fill_mp_config_table(struct mp_config_table *mpct, int length)
>  /* fills in an MP processor entry for VCPU 'vcpu_id' */
>  static void fill_mp_proc_entry(struct mp_proc_entry *mppe, int vcpu_id)
>  {
> +    ASSERT(cpu_to_x2apicid[vcpu_id] < 0xFF );

This is just going to break when we hit 256 vCPUs in a VM.

What do real systems do?

They'll either wrap around 255 like the CPUID xAPIC_ID does, or they'll
not write out MP tables at all.

> diff --git a/tools/firmware/hvmloader/smp.c b/tools/firmware/hvmloader/smp.c
> index 1b940cefd071..d63536f14f00 100644
> --- a/tools/firmware/hvmloader/smp.c
> +++ b/tools/firmware/hvmloader/smp.c
> @@ -90,10 +120,11 @@ static void boot_cpu(unsigned int cpu)
>          BUG();
>  
>      /*
> -     * Wait for the secondary processor to complete initialisation.
> +     * Wait for the secondary processor to complete initialisation,
> +     * which is signaled by its x2APIC ID being written to the LUT.

Technically all arrays are a lookup table, but I'm not sure LUT is a
common enough term to be used unqualified like this.

Just say "... signalled by writing its APIC_ID out."  The where is very
apparent by the code.

> @@ -104,6 +135,12 @@ static void boot_cpu(unsigned int cpu)
>  void smp_initialise(void)
>  {
>      unsigned int i, nr_cpus = hvm_info->nr_vcpus;
> +    uint32_t ecx;
> +
> +    cpuid(1, NULL, NULL, &ecx, NULL);
> +    has_x2apic = (ecx >> 21) & 1;
> +    if ( has_x2apic )
> +        printf("x2APIC supported\n");

You need to check max_leaf >= 0xb too.  Remember Xen might not give you
leave 0xb yet, and then you'll hit the assert for finding 0.

And has_x2apic wants to be a simple boolean.  Nothing good can come from
confusing -1 with "x2apic available".


I recommend splitting this patch into three.  Several aspects are quite
subtle.

1) Collect the APIC_IDs on APs
2) Change how callin is signalled.
3) Replace LAPIC_ID() with the collected apic_id.

but AFAICT, it can be done as a standalone series, independently of the
other Xen/toolstack work.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:35:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:35:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828123.1242959 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t66zH-0007wZ-VD; Wed, 30 Oct 2024 11:35:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828123.1242959; Wed, 30 Oct 2024 11: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 1t66zH-0007wS-Qm; Wed, 30 Oct 2024 11:35:43 +0000
Received: by outflank-mailman (input) for mailman id 828123;
 Wed, 30 Oct 2024 11:35: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t66zG-0007wK-Gi
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:35:42 +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 1514a2a6-96b3-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 12:35:37 +0100 (CET)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5c9634c9160so7440345a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:35:37 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b2fe2af5dsm570178566b.172.2024.10.30.04.35.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 04:35:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1514a2a6-96b3-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmIiLCJoZWxvIjoibWFpbC1lZDEteDUyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjE1MTRhMmE2LTk2YjMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg4MTM3LjA2NDI5LCJzZW5kZXIiOiJhbmRyZXcuY29vcGVyQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730288136; x=1730892936; 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=kkiMXBmwyQDKmvHfS1H+wZ4E1eR2+OZ2gEwbQceyg1Q=;
        b=Kxpn2IH/dmeJG4SGwM4KtIpRCWjozcTC5eosB8OaBihIYXtjofZYa2Xo/xaOdGYPDv
         pWTkFCcHvDviD4r2xLiNlM5vvUskOlY1b+PJOw44rSg1VprjDNd8fTsiBqo2/CUWIpw4
         gzfl6F6m6JIt1pulVmjcZCK8Pr67hkeGH+c90=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730288136; x=1730892936;
        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=kkiMXBmwyQDKmvHfS1H+wZ4E1eR2+OZ2gEwbQceyg1Q=;
        b=MErsQKHRHbThlV3e/sI8rmgT/qyoefXXSlq0nsEtIOBs1a+OkaYIZav6YkDYQpwQYn
         FL1hU8MUJjoLmOaZx1HhxXx70xeDqXtxaDleZcSvpxehXji3zMcUAfUILCc106pXGVYH
         4yhsFjn3aa4S6NX+ixNKng0uDTqXMjYqjyg5Pc9SB8I/6b4VbmFr4J4F2vVViJEj9SNA
         lXu8KgRBbJVKcBLGGvnd66uMdbZwDN4jJ4izNz1KPmA3dVqXO1DHaP9VeV7Mywc7QNIq
         ddSeqRXHnJVFTGKWJYWfuV3IzAesZA2HSig8ldNvFTcFbNqms8WPyrGaNzQ99/xd/6bR
         v5+g==
X-Forwarded-Encrypted: i=1; AJvYcCWR9ZGOLKxCfYFbY5mPCHauvG/IDVdbwdiOevRI+7Lpqt1dO32ElpaO3+BRNBpbzSjHl8uoQUiagrs=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyB+V5w7hNqqRRDtqG5ws4FDnEobduDS5hIaIa1s5LCi201RdjD
	c9mxxSjZgdCJB399Ql5KNvtHhEZsb4HHxw6ynlAoo6FjoD3yp3RDee3GtdklLiM=
X-Google-Smtp-Source: AGHT+IFPKET+H8JIv1p712RWXpYSeYKWdfMbNOVNd+b6NBcpUO65wnHwjIViaLdNDVJUo3Ue9CM/kg==
X-Received: by 2002:a17:906:6a28:b0:a9a:e9c:1d8d with SMTP id a640c23a62f3a-a9de5ed2633mr1407932866b.17.1730288136381;
        Wed, 30 Oct 2024 04:35:36 -0700 (PDT)
Message-ID: <89b2d609-f298-4dc8-b893-dc52468694ae@citrix.com>
Date: Wed, 30 Oct 2024 11:35:34 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/setup: Make setup.h header self contained
To: Jan Beulich <jbeulich@suse.com>,
 Frediano Ziglio <frediano.ziglio@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241030104406.2173357-1-frediano.ziglio@cloud.com>
 <1fa03cb0-ded1-4904-8830-f3feefecc404@suse.com>
 <CACHz=Zh04AhAwdhYY=i4DecvJbPMF770PE6SkLG+LzQLxueOMQ@mail.gmail.com>
 <8984f1da-d4bb-4ab7-b1dc-bcc23c180abc@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <8984f1da-d4bb-4ab7-b1dc-bcc23c180abc@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 11:17 am, Jan Beulich wrote:
> On 30.10.2024 12:15, Frediano Ziglio wrote:
>> On Wed, Oct 30, 2024 at 10:59 AM Jan Beulich <jbeulich@suse.com> wrote:
>>> On 30.10.2024 11:44, Frediano Ziglio wrote:
>>>> The header uses rangeset structure typedef which definition
>>>> is not included.
>>> And it doesn't need to be. For
>>>
>>> int remove_xen_ranges(struct rangeset *r);
>>>
>>> we don't need ...
>>>
>>>> --- a/xen/arch/x86/include/asm/setup.h
>>>> +++ b/xen/arch/x86/include/asm/setup.h
>>>> @@ -2,6 +2,7 @@
>>>>  #define __X86_SETUP_H_
>>>>
>>>>  #include <xen/multiboot.h>
>>>> +#include <xen/rangeset.h>
>>>>  #include <asm/numa.h>
>>>>
>>>>  extern const char __2M_text_start[], __2M_text_end[];
>>> ... this, a mere
>>>
>>> struct rangeset;
>>>
>>> forward decl will suffice.
>>>
>>> Jan
>>>
>> It's true, but for the same reason, we could avoid including
>> "xen/multiboot.h" and use "struct module" instead of "module_t".
> Indeed. I'd even question the need for that typedef.

Please don't got playing with includes of multiboot.h.  All you'll do is
interfere with Daniel's in-progress series.

Most includes are getting removed.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:49:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:49:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828131.1242968 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67C8-00020J-2f; Wed, 30 Oct 2024 11:49:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828131.1242968; Wed, 30 Oct 2024 11:49: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 1t67C7-00020C-Up; Wed, 30 Oct 2024 11:48:59 +0000
Received: by outflank-mailman (input) for mailman id 828131;
 Wed, 30 Oct 2024 11:48: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t67C7-000206-Bx
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:48:59 +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 f104f85a-96b4-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 12:48:55 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9a156513a1so1020781766b.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:48:55 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f028fcesm566968666b.53.2024.10.30.04.48.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 04:48:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f104f85a-96b4-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzYiLCJoZWxvIjoibWFpbC1lajEteDYzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImYxMDRmODVhLTk2YjQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg4OTM1LjU3Njg3OCwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730288934; x=1730893734; 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=fFA4KnpqYQAYG7V06hkXCF08eankx3XnmRg26x0tlVI=;
        b=PE6/O5SZUjJm5zcytYp2MfA/1J9DMGlWvhGNpx9GGY+uZMTQ+FnZz/VB2BQxqymiLG
         eR775DKLBQoF0fp+tYJC5xGrjufKPbzSKsFP9OdzChMgvNdROVarGQnnwIrLpMnlWgz4
         fOWifNpelCxs2RZ6M0iP9QvmJt67Uqx+CHfDk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730288934; x=1730893734;
        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=fFA4KnpqYQAYG7V06hkXCF08eankx3XnmRg26x0tlVI=;
        b=HKrPBzfVNdzz+oj1XLRLUjjY1pKjT1Y9YYLUnJR2d4eAUlpy/Bos2JAR0U1UWbvkeD
         HLOc0Ri+7WBDJ8CuGyWDUhhcgeTbGiNIhiaQUFtfLLYH+ZDacaJpsiihtmo8YXQQHw0f
         +OnRifiotfPtBJ14BPoF57z6DqGgmRyHN/BGfh5jheK6qzhGn8eWY1v1PeeUDkQA3YoD
         cz1Huuz1wQoNjw1/wUTNQgqvXCw6bRDcpOk2hGM45MRGaoo8OxocQhQs/B5n6biPvj4Y
         Y15jjYtDu0ZOjwcVYPVHfxTqNojzKQ9Vr0yzAQGaRn0jlRtVpEgf1hG9dGMYX5vDIYb0
         Dm6Q==
X-Gm-Message-State: AOJu0Yz9NuYwRxxyZkaR8e3JxCeEz0SgdeRQZb35kAEd+WXQgYiZK42m
	ghlq14SUhd4WnC2lOoWQdR0LaRcY8f6jVOMfbTWYduCLIJCGClT8sG9VyCrlJYb3suiKNyd0EgJ
	y
X-Google-Smtp-Source: AGHT+IEKW9z+hv1cqQeIZtcizoHAP6ApgMZ3QzzL9FXjrhDF82/rt9gl+s1ww0c30tP1lHwkbbQYvA==
X-Received: by 2002:a17:907:948b:b0:a9a:835b:fc8e with SMTP id a640c23a62f3a-a9de6330780mr1525664966b.54.1730288934508;
        Wed, 30 Oct 2024 04:48:54 -0700 (PDT)
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>
Subject: [PATCH] x86/mm: ensure L2 is always freed if empty
Date: Wed, 30 Oct 2024 12:48:52 +0100
Message-ID: <20241030114852.55530-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The current logic in modify_xen_mappings() allows for fully empty L2 tables to
not be freed and unhooked from the parent L3 if the last L2 slot is not
populated.

Ensure that even when an L2 slot is empty the logic to check whether the whole
L2 can be removed is not skipped.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
I've attempted to find a Fixes tag for this one, but I'm afraid there have been
many changes in the function, and it's possibly the code that introduced the L2
freeing (4376c05c31132) the one that failed to originally adjust this case.
---
 xen/arch/x86/mm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index d537a799bced..0f53dcebad95 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -5717,7 +5717,7 @@ int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
 
             v += 1UL << L2_PAGETABLE_SHIFT;
             v &= ~((1UL << L2_PAGETABLE_SHIFT) - 1);
-            continue;
+            goto check_l3;
         }
 
         if ( l2e_get_flags(*pl2e) & _PAGE_PSE )
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 11:58:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 11:58:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828137.1242977 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67LE-0004IG-Td; Wed, 30 Oct 2024 11:58:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828137.1242977; Wed, 30 Oct 2024 11: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 1t67LE-0004I9-R9; Wed, 30 Oct 2024 11:58:24 +0000
Received: by outflank-mailman (input) for mailman id 828137;
 Wed, 30 Oct 2024 11: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=u8xJ=R2=cloud.com=andrii.sultanov@srs-se1.protection.inumbo.net>)
 id 1t67LE-0004I2-1Y
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 11:58:24 +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 415fb12c-96b6-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 12:58:19 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fb4fa17044so65528821fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 04:58:19 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 415fb12c-96b6-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmYiLCJoZWxvIjoibWFpbC1sajEteDIyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQxNWZiMTJjLTk2YjYtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg5NDk5Ljc5NzU0LCJzZW5kZXIiOiJhbmRyaWkuc3VsdGFub3ZAY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730289499; x=1730894299; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=XpThXyDX988cmK9NZJyphkd5wgMOM+yc6RsGEfAYbmw=;
        b=DS/HjLNNnaExtFqEL73gd8IU7qsVYA4RHkXXw21XhncxhLPCFmOa8XFSH9kAyuXQqb
         a1aNKMDiOV7DJZFNmRHwptSb6bfEp+YrbQ/a3yPkdU1F2AFf+Gfr/cBORpI9oNMFm0tX
         GpPF4yD20tgbhTJz6kA35LVgp3jsfyXuHCE+s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730289499; x=1730894299;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=XpThXyDX988cmK9NZJyphkd5wgMOM+yc6RsGEfAYbmw=;
        b=mMjwUE+05hjYGh2FnrQDm0GofqzT3WHzAgwNT2863fEJxSUV4vlL8GrqrbN3BK0izR
         wcb7VzZXVmbs9It5hixAxqIpssToWvypvIlsOEXG/8K2ouUc7vnRQM/Uzm3akK1lYl+4
         1YuogM+hMiJSt/b7yQsrrNFwAD9I51IMSalK1grpI1iQ9ADES4OIBcs9YgTRxsdrCwoM
         lImAPatABuPxQzJrIs02ojtp45Kf+gxsYGoGIhT9gyafK9xvV8draCBATPJVvTSEHa+U
         1rv6zXfAL7G5/CYlw6xd+dwscuno49iYAInGDypksRayKpTQzGkzm4YPgheCWZR/a7z8
         M3hw==
X-Gm-Message-State: AOJu0Yy0EzSSk3RZPiI2vj1l8uv7a4Vre9TQ5hNQoXgwdxPeK2I9KOWm
	EGihA2YWkks2qkYAVuXANF9N1u3cIJuryMrWgi1ZwMxzxc40Otk/RKrlC6Axkw6WEFX0kBYD/eP
	oeF7ubgsXPdjtaVpP0syKAG9bYQdg4BAO3R/3zrCbh40GJPD4T4IxuQ==
X-Google-Smtp-Source: AGHT+IFvrW00b3pEqfdoK30dDTlA38ocm0qUH+/TxxMw97B4jpUNIRlz/3dIteALgrkZ33li5Vxjsa1ial15CTdsJGQ=
X-Received: by 2002:a2e:9b42:0:b0:2fb:597e:28d9 with SMTP id
 38308e7fff4ca-2fcbdfbecbcmr60798611fa.14.1730289498499; Wed, 30 Oct 2024
 04:58:18 -0700 (PDT)
MIME-Version: 1.0
From: Andrii Sultanov <andrii.sultanov@cloud.com>
Date: Wed, 30 Oct 2024 11:58:07 +0000
Message-ID: <CAAa3AOOUDB4ZKAYSyXGdFsDzqpVfJd+oeRKR3XbVOSDkiaP_Yw@mail.gmail.com>
Subject: [QUESTION] tools/xenstored: Best way to proceed with the protocol modification
To: xen-devel@lists.xenproject.org
Cc: jgross@suse.com
Content-Type: multipart/alternative; boundary="000000000000ead7e30625b06a0d"

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

Hello,

(CC-ing J=C3=BCrgen as the original author of the xenstored partial directo=
ry
patches:
https://lore.kernel.org/xen-devel/20161205074853.13268-1-jgross@suse.com/)

I'm investigating implementing XS_DIRECTORY_PART support in Oxenstored, and
have come by a possible issue - the protocol specifies that the 'offset'
parameter for each call is a "byte offset into the list of children", and
so should be calculated on the user side. This makes sense for the C side
as children are stored in a single char array separated by null characters,
but OCaml stores children in a different structure, which can't be indexed
into this way (but is searched more efficiently, etc.)

What's the best way to proceed here?

Could the protocol be redefined to:
1) turn the 'offset' into an opaque id that needs to be re-sent as-is on
the next iteration? (it would keep being interpreted as an index into an
array on the C side, and as something else on the OCaml side)
2) return the opaque 'offset' on each call alongside the string and
generation id so that it wouldn't be calculated from strlen() on the user
side anymore?

Thank you,
Andrii

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

<div dir=3D"ltr"><div>Hello,=C2=A0</div><div><br></div><div>(CC-ing J=C3=BC=
rgen as the original author of the xenstored partial directory patches: <a =
href=3D"https://lore.kernel.org/xen-devel/20161205074853.13268-1-jgross@sus=
e.com/">https://lore.kernel.org/xen-devel/20161205074853.13268-1-jgross@sus=
e.com/</a>)</div><div><br></div><div>I&#39;m investigating implementing XS_=
DIRECTORY_PART support in Oxenstored, and have come by a possible issue - t=
he protocol specifies that the &#39;offset&#39; parameter for each call is =
a &quot;byte offset into the list of children&quot;, and so should be calcu=
lated on the user side. This makes sense for the C side as children are sto=
red in a single char array separated by null characters, but OCaml stores c=
hildren in a different structure, which can&#39;t be indexed into this way =
(but is searched more efficiently, etc.)<br></div><div><br></div><div>What&=
#39;s the best way to proceed here?<br></div><div><br></div><div>Could the =
protocol be redefined to:</div><div>1) turn the &#39;offset&#39; into an op=
aque id that needs to be re-sent as-is on the next iteration? (it would kee=
p being interpreted as an index into an array on the C side, and as somethi=
ng else on the OCaml side)</div><div>2) return the opaque &#39;offset&#39; =
on each call alongside the string and generation id so that it wouldn&#39;t=
 be calculated from strlen() on the user side anymore?</div><div><br></div>=
<div>Thank you, <br></div><div>Andrii<br></div></div>

--000000000000ead7e30625b06a0d--


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 12:00:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 12:00:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828145.1242988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67NC-0005r7-Jo; Wed, 30 Oct 2024 12:00:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828145.1242988; Wed, 30 Oct 2024 12:00: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 1t67NC-0005qz-H3; Wed, 30 Oct 2024 12:00:26 +0000
Received: by outflank-mailman (input) for mailman id 828145;
 Wed, 30 Oct 2024 12: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=wQZl=R2=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t67NA-0005pM-I2
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 12:00:24 +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 85c4a7eb-96b6-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 13:00:14 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5c9634c9160so7472662a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 05:00:14 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb631af0bsm4687810a12.68.2024.10.30.05.00.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 05:00:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 85c4a7eb-96b6-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzIiLCJoZWxvIjoibWFpbC1lZDEteDUzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijg1YzRhN2ViLTk2YjYtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg5NjE0LjYzNTkxLCJzZW5kZXIiOiJhbGVqYW5kcm8udmFsbGVqb0BjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730289614; x=1730894414; darn=lists.xenproject.org;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=tPhfECUEMJ8Ej/8wBuD7qnaBPr90R+ypNal+nPLuRoA=;
        b=LJqwyrYixELxdHaQLxSpsW3GEcnEdm3zY8v7wqO+7oO2ItWVhJHR0io64JW/lZUMp/
         /8F3v9qjI0BS/vbmnTzzfwkb6Ms2c6iNIivpqu8zGaE4LbINwRAcz5TlpH+4epS5qRZA
         LFwG/MoLeWx2NSnrWUeZDQ7iyQTv9lU56YLTg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730289614; x=1730894414;
        h=in-reply-to:references:cc:to:from:subject:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=tPhfECUEMJ8Ej/8wBuD7qnaBPr90R+ypNal+nPLuRoA=;
        b=o4OVB0DKPyDEQAy9O2q0deKqqm6Z8qC2Kzy8nIqUKePcKg7ZjMFpP9JVXpjluYe+cp
         Cy8ITsg0Icoxfiiafvi7xT7B9TO86ovPnlew4it+XxFsriOQug1DE+OZ3uT7guV+zNoe
         Y/YVMPcJQbdsvG2jGdkMajPH5S3ag2RbUptIiB/ahVOS3ViNd55SLrdKprIlX9IVJUyh
         6ZLeXp7ipGC2NaMzMTT+1t8Y2WgvHSPs4PtVeLf6YqJ3e/NllZJu3oqtJ89Sy1rKa+o9
         jmf3e++NEgWzXIC+h0kp2WrUkxQRtlVYIGkgEyqcX/I/CnXHLdRiew+TL/5DIiHXOau8
         0CwA==
X-Forwarded-Encrypted: i=1; AJvYcCXMp5hqVYyHjslZYFDSvQlNVO8/6kGBt04oL5w8Ec1MZYOxDZR9wcXkq0PjKO6lsMJf9HojUSgzhGg=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzvx6fktGAwg0FQfH4PIeESLslHl8xuUW/q1fpr4Js781KQyhyy
	XTUoLYKz+yrvN996D4EGjnIoZLRfquXvtw5AgwSzdWAJ2yAZwU24NYJYci4xRok=
X-Google-Smtp-Source: AGHT+IGTFAs/iE2r07pROYhxRCBECc7gNvyY45Nxg9QbpP1UB0akG0rcW2KCIIPHHIwMjUe676zlRw==
X-Received: by 2002:a05:6402:1cc8:b0:5c2:6311:8478 with SMTP id 4fb4d7f45d1cf-5cbbf9208c3mr12449216a12.25.1730289612210;
        Wed, 30 Oct 2024 05:00:12 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 30 Oct 2024 12:00:09 +0000
Message-Id: <D594H5BKU18G.20YVS360FNF71@cloud.com>
Subject: Re: [PATCH v7 02/10] xen/x86: Add initial x2APIC ID to the
 per-vLAPIC save area
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
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>
X-Mailer: aerc 0.18.2
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-3-alejandro.vallejo@cloud.com>
 <974538f8-10b5-4fa3-9069-df6655a5d86d@citrix.com>
In-Reply-To: <974538f8-10b5-4fa3-9069-df6655a5d86d@citrix.com>

I'm fine with all suggestions, with one exception that needs a bit more
explanation...

On Tue Oct 29, 2024 at 8:30 PM GMT, Andrew Cooper wrote:
> On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
> > This allows the initial x2APIC ID to be sent on the migration stream.
> > This allows further changes to topology and APIC ID assignment without
> > breaking existing hosts. Given the vlapic data is zero-extended on
> > restore, fix up migrations from hosts without the field by setting it t=
o
> > the old convention if zero.
> >
> > The hardcoded mapping x2apic_id=3D2*vcpu_id is kept for the time being,
> > but it's meant to be overriden by toolstack on a later patch with
> > appropriate values.
> >
> > Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
>
> I'm going to request some changes, but I think they're only comment
> changes. [edit, no sadly, one non-comment change.]
>
> It's unfortunate that Xen uses an instance of hvm_hw_lapic for it's
> internal state, but one swamp at a time.
>
>
> In the subject, there's no such thing as the "initial" x2APIC ID.=C2=A0
> There's just "the x2APIC ID" and it's not mutable state as far as the
> guest is concerned=C2=A0 (This is different to the xAPIC id, where there =
is
> an architectural concept of the initial xAPIC ID, from the days when
> OSes were permitted to edit it).=C2=A0 Also, it's x86/hvm, seeing as this=
 is
> an HVM specific change you're making.
>
> Next, while it's true that this allows the value to move in the
> migration stream, the more important point is that this allows the
> toolstack to configure the x2APIC ID for each vCPU.
>
> So, for the commit message, I recommend:
>
> ---%<---
> Today, Xen hard-codes x2APIC_ID =3D vcpu_id * 2, but this is unwise and
> interferes with providing accurate topology information to the guest.
>
> Introduce a new x2apic_id field into hvm_hw_lapic.=C2=A0 This is immutabl=
e
> state from the guest's point of view, but it allows the toolstack to
> configure the value, and for the value to move on migrate.
>
> For backwards compatibility, we treat incoming zeroes as if they were
> the old hardcoded scheme.
> ---%<---
>
> > diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c
> > index 2a777436ee27..e2489ff8e346 100644
> > --- a/xen/arch/x86/cpuid.c
> > +++ b/xen/arch/x86/cpuid.c
> > @@ -138,10 +138,9 @@ void guest_cpuid(const struct vcpu *v, uint32_t le=
af,
> >          const struct cpu_user_regs *regs;
> > =20
> >      case 0x1:
> > -        /* TODO: Rework topology logic. */
> >          res->b &=3D 0x00ffffffu;
> >          if ( is_hvm_domain(d) )
> > -            res->b |=3D (v->vcpu_id * 2) << 24;
> > +            res->b |=3D vlapic_x2apic_id(vcpu_vlapic(v)) << 24;
>
> There wants to be some kind of note here, especially as you're feeding
> vlapic_x2apic_id() into a field called xAPIC ID.=C2=A0 Perhaps
>
> /* Large systems do wrap around 255 in the xAPIC_ID field. */
>
> ?
>
>
> > =20
> >          /* TODO: Rework vPMU control in terms of toolstack choices. */
> >          if ( vpmu_available(v) &&
> > @@ -310,19 +309,16 @@ void guest_cpuid(const struct vcpu *v, uint32_t l=
eaf,
> >          break;
> > =20
> >      case 0xb:
> > -        /*
> > -         * In principle, this leaf is Intel-only.  In practice, it is =
tightly
> > -         * coupled with x2apic, and we offer an x2apic-capable APIC em=
ulation
> > -         * to guests on AMD hardware as well.
> > -         *
> > -         * TODO: Rework topology logic.
> > -         */
> >          if ( p->basic.x2apic )
> >          {
> >              *(uint8_t *)&res->c =3D subleaf;
> > =20
> > -            /* Fix the x2APIC identifier. */
> > -            res->d =3D v->vcpu_id * 2;
> > +            /*
> > +             * Fix the x2APIC identifier. The PV side is nonsensical, =
but
> > +             * we've always shown it like this so it's kept for compat=
.
> > +             */
>
> In hindsight I should changed "Fix the x2APIC identifier." when I
> reworked this logic, but oh well - better late than never.
>
> /* The x2APIC_ID is per-vCPU, and fixed irrespective of the requested
> subleaf. */
>
> I'd also put a little more context in the PV side:
>
> /* Xen 4.18 and earlier leaked x2APIC into PV guests.=C2=A0 The value sho=
wn
> is nonsensical but kept as-was for compatibility. */
>
> > diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
> > index 3363926b487b..33b463925f4e 100644
> > --- a/xen/arch/x86/hvm/vlapic.c
> > +++ b/xen/arch/x86/hvm/vlapic.c
> > @@ -1538,6 +1538,16 @@ static void lapic_load_fixup(struct vlapic *vlap=
ic)
> >      const struct vcpu *v =3D vlapic_vcpu(vlapic);
> >      uint32_t good_ldr =3D x2apic_ldr_from_id(vlapic->loaded.id);
> > =20
> > +    /*
> > +     * Loading record without hw.x2apic_id in the save stream, calcula=
te using
> > +     * the traditional "vcpu_id * 2" relation. There's an implicit ass=
umption
> > +     * that vCPU0 always has x2APIC0, which is true for the old relati=
on, and
> > +     * still holds under the new x2APIC generation algorithm. While th=
at case
> > +     * goes through the conditional it's benign because it still maps =
to zero.
> > +     */
>
> It's not an implicit assumption; it's very explicit.

It's implicit because it's not mentioned anywhere else and parts of the Xen
ecosystem live under the pretense that such a thing can indeed happen.

>
> /* Xen 4.19 and earlier had no x2APIC_ID in the migration stream, and
> hard-coded "vcpu_id * 2".=C2=A0 Default back to this if we have a
> zero-extended record.=C2=A0 */
>
> But, this will go malfunction if the toolstack tries to set v!0's
> x2APIC_ID to 0.

I assume you mean vcpuN with N !=3D 0. I maintain that allowing non-monoton=
ically
increasing APIC IDs on vCPUs is technical debt disguised as a misfeature. F=
or
one, it would prevent hvmloader from asserting some sanity on its own reads=
 of
APIC IDs, but it would be a mess to debug in general. I started making real
progress on the toolstack after asserting all APs had non-zero APIC IDs.

So, while...

>
> What you need to know is whether lapic_load_hidden() had to zero-extend
> the record or not (more specifically, over this field), so you want
> h->size <=3D offsetof(x2_apicid) as the gating condition.

... this is true and a more adequate gating condition (that I'm happy to
replace the current one with), I'd still like to keep the invariant that AP=
IC
IDs must be monotonically increasing with the vCPU id, which has the side
effect of banning zero outside the BSP.

>
> This should be safe for the toolstack, I think.=C2=A0 Hypercalls prior to
> this patch will get a shorter record, and hypercalls from this patch
> onwards will get a longer record with the default x2APIC_ID =3D vcpu_id *
> 2 filled in.
>
> > +    if ( !vlapic->hw.x2apic_id )
> > +        vlapic->hw.x2apic_id =3D v->vcpu_id * 2;
> > +
> >      /* Skip fixups on xAPIC mode, or if the x2APIC LDR is already corr=
ect */
> >      if ( !vlapic_x2apic_mode(vlapic) ||
> >           (vlapic->loaded.ldr =3D=3D good_ldr) )
> > @@ -1606,6 +1616,13 @@ static int cf_check lapic_check_hidden(const str=
uct domain *d,
> >           APIC_BASE_EXTD )
> >          return -EINVAL;
> > =20
> > +    /*
> > +     * Fail migrations from newer versions of Xen where
> > +     * rsvd_zero is interpreted as something else.
> > +     */
>
> This comment isn't necessary.=C2=A0 We've got no shortage of reserved
> checks.=C2=A0 However ...
>
> > diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/publi=
c/arch-x86/hvm/save.h
> > index 7ecacadde165..1c2ec669ffc9 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;
>
> ... we do normally spell it _rsvd; to make it extra extra clear that
> people shouldn't be doing anything with it.
>
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 12:03:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 12:03:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828158.1242998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67QH-0006bH-2c; Wed, 30 Oct 2024 12:03:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828158.1242998; Wed, 30 Oct 2024 12: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 1t67QG-0006bA-WF; Wed, 30 Oct 2024 12:03:37 +0000
Received: by outflank-mailman (input) for mailman id 828158;
 Wed, 30 Oct 2024 12: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=wQZl=R2=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t67QG-0006b4-Dp
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 12:03:36 +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 fc5e104c-96b6-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 13:03:33 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2fb443746b8so61048081fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 05:03:33 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb631af38sm4700808a12.62.2024.10.30.05.03.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 05:03:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc5e104c-96b6-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMzIiLCJoZWxvIjoibWFpbC1sajEteDIzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImZjNWUxMDRjLTk2YjYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg5ODEzLjQ3MjkwNywic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730289813; x=1730894613; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=du2DzXjJp6yzynAei4vIIDyisv1OcR9Se4VuRx7GxJk=;
        b=c40fPZi4mJ+SYJfcNd1nZyUtuRI5IYWn1B+A6Cvi8iqS3t5BsPwpPbhpPcUjjoo+iF
         cdEiRvncTjgHYkLlRxIXm4Ez7a1pc71w/dAXp57uJHQ9QgwytoCjSws/78wD72y2PZ4s
         cEBtq7l+JN6OPXRpoWeFYfe8xsFAUIuFHXdE0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730289813; x=1730894613;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=du2DzXjJp6yzynAei4vIIDyisv1OcR9Se4VuRx7GxJk=;
        b=HhTtwyUH+QF5k2KaQS8YZ74bstgpcHVcfzyxkp0gNNiptfYG0hr5WSeZBPBBixMHMz
         FAQL+DlbDOtNDRD6o/8Pa5TZZhxr7eaKhdv8V8vcHc3R5R7sU6aHZOpHqk3twIwWfspj
         ya6I1ci+Qf9gIJ5NOHAo8SZj9uPNuWsnIBf9qphjnvU4QRAxJJZ35uaxrtXkkuKwYVQt
         w/I7Ong8Xd4hIIa1lcrzg6pnX9HCuWpe83GD5yO6CMVSgiu+l5zGPX7eTsoIXqpO9Eue
         FF3qRnVHEs4/ll93+5fGtc5Wo4jLGXTPjSIvWMjg3COZTAMl84zb+TAXRIciUbEyJ4I2
         0qJg==
X-Forwarded-Encrypted: i=1; AJvYcCVQnOXLO06WtrR3SqIMZA1Wtnnn1LHXc9TLR9rFP4RtWb3l9cfuN7WCEzroPx3+QjD4ZvVepM7jIHM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywf6d4IzKyMV82bfgPxpb6jwyE4APjus8YKzB5ZvZHKeGvIwhqs
	NSI/OJvXqK1MLVbv+6k7M4WWhwPk0ZM1hETJPrdY/V4TybPEEc1+VL7HAokXHc0=
X-Google-Smtp-Source: AGHT+IE+hIjYnzDkzjjQTufXCgog2RyFhYeti1ab/HABqISg+ryI2xsRaP76XRt0xcfUHfB5qpgmoA==
X-Received: by 2002:a2e:a7ca:0:b0:2f7:ad6b:a31e with SMTP id 38308e7fff4ca-2fcbe09a70fmr72073021fa.31.1730289812796;
        Wed, 30 Oct 2024 05:03:32 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 30 Oct 2024 12:03:30 +0000
Message-Id: <D594JPJZA0NY.2XQ3SJ44SY8X@cloud.com>
Cc: =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH v7 02/10] xen/x86: Add initial x2APIC ID to the
 per-vLAPIC save area
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>
X-Mailer: aerc 0.18.2
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-3-alejandro.vallejo@cloud.com>
 <974538f8-10b5-4fa3-9069-df6655a5d86d@citrix.com>
 <b143ada2-9719-4701-9a03-36ee8607958f@suse.com>
In-Reply-To: <b143ada2-9719-4701-9a03-36ee8607958f@suse.com>

Hi,

On Wed Oct 30, 2024 at 6:37 AM GMT, Jan Beulich wrote:
> On 29.10.2024 21:30, Andrew Cooper wrote:
> > On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
> >> @@ -310,19 +309,16 @@ void guest_cpuid(const struct vcpu *v, uint32_t =
leaf,
> >>          break;
> >> =20
> >>      case 0xb:
> >> -        /*
> >> -         * In principle, this leaf is Intel-only.  In practice, it is=
 tightly
> >> -         * coupled with x2apic, and we offer an x2apic-capable APIC e=
mulation
> >> -         * to guests on AMD hardware as well.
> >> -         *
> >> -         * TODO: Rework topology logic.
> >> -         */
> >>          if ( p->basic.x2apic )
> >>          {
> >>              *(uint8_t *)&res->c =3D subleaf;
> >> =20
> >> -            /* Fix the x2APIC identifier. */
> >> -            res->d =3D v->vcpu_id * 2;
> >> +            /*
> >> +             * Fix the x2APIC identifier. The PV side is nonsensical,=
 but
> >> +             * we've always shown it like this so it's kept for compa=
t.
> >> +             */
> >=20
> > In hindsight I should changed "Fix the x2APIC identifier." when I
> > reworked this logic, but oh well - better late than never.
> >=20
> > /* The x2APIC_ID is per-vCPU, and fixed irrespective of the requested
> > subleaf. */
>
> Can we perhaps avoid "fix" in this comment? "Adjusted", "overwritten", or
> some such ought to do, without carrying a hint towards some bug somewhere=
.

I understood "fix" there as "pin" rather than "unbreak". Regardless I can a=
lso
rewrite it as "The x2APIC ID is per-vCPU and shown on all subleafs"

>
> >> --- 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;
> >=20
> > ... we do normally spell it _rsvd; to make it extra extra clear that
> > people shouldn't be doing anything with it.
>
> Alternatively, to carry the "zero" in the name, how about _mbz?
>
> Jan

I'd prefer that to _rsvd, if anything to make it patently clear that leavin=
g
rubble is not ok.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 12:04:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 12:04:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828163.1243008 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67R7-00077C-Aw; Wed, 30 Oct 2024 12:04:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828163.1243008; Wed, 30 Oct 2024 12: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 1t67R7-000775-81; Wed, 30 Oct 2024 12:04:29 +0000
Received: by outflank-mailman (input) for mailman id 828163;
 Wed, 30 Oct 2024 12: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t67R6-00074O-FQ
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 12:04:28 +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 19e14d71-96b7-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 13:04:23 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4319399a411so50443145e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 05:04:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd99edebsm19581225e9.45.2024.10.30.05.04.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 05:04:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19e14d71-96b7-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzEiLCJoZWxvIjoibWFpbC13bTEteDMzMS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjE5ZTE0ZDcxLTk2YjctMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjg5ODYzLjEyODc2OSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730289862; x=1730894662; 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=cqfQ3IStKbRYRoeXW4hTyv1TuZbK6ZYqQ3juHqr1de8=;
        b=aXnPNbSASpRxp8AaYhK2UK9GnIKsBrdKaZJyLOYGt2SD+ocWfTIDOJ9qq2EJxmaszL
         CWqVoDQ9HBJuIf5BJSqAVzIElhlzNyn8JvgEBsiiNrC3icR1hcrNfwcufY1LIWkxqHnZ
         dHVks2JfuJrP2iHhhAAg0mMWw8U6D0wIWxKEb8IoHbqDsE/Gh1MZf1ykm7doIuFDBuVj
         IwLL6kGTX5oQN3tuwiZV8quGbZ5YBlH0e35ZsqgTbAibnaEE2RqeZlv2wHIljXg5guPp
         iFDQg4LwHFwpjy+aQvr+B8vDG6iBvxyJXpsVkcNxNiYr8S/ACR/47AqkPxMjSFBq7PKx
         bAkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730289862; x=1730894662;
        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=cqfQ3IStKbRYRoeXW4hTyv1TuZbK6ZYqQ3juHqr1de8=;
        b=orCekEvb/LF8Gqj7MA2k/+nyg5cu1b6Cg8h14s36hixLSxPTjkh/ZUgSRD7GjOjx9V
         DQKiItB17QH8gJN6Rf6Nfg3ZtjCTRqt2cxNVpO8azu5GO2mK++9JA83VRA02qjOiG5SL
         ZhzZL/bE2wki/0CHMJaSZPBVkDDrJCFYfTXkfM5EusIVQZqyyjX4NsyYOzp7lM5Ml6Mk
         e7leaBvr2j4edKKAOX4yiQo4oKVu/jBKh3V4gtmWkocFxYwansb7f8TISjJ0rK/XZZ63
         hrLfGmNluzHtCVeS/LJ1vkTgJ9MeE60BKxDvsGgIjJFdsnhg2sJ8Ocn/s1rFqLb3XYGj
         C5bA==
X-Forwarded-Encrypted: i=1; AJvYcCVmIhuVIJru1SuSs/kekK2yHRCDNuNvlvUX5QOT5myhmJPPHYnQ8DUUq57X5cb6rJwfwflBqY6VuG0=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyM7PtERpP1qLbMKPeCOh4pSoRk0VsCQqVEx6cGjLVwbuiYQ6T4
	llGbLVgZifyDnQUl3DN67hf2hXl3MSo1CMKw3gZt8Cz521WkirVcsfUG4zjGaQ==
X-Google-Smtp-Source: AGHT+IEiVbx+VtOMQrip7AYfKFMyIoeHLqnQKO+8x2XV2/BVpbXU+iaMH3fYD2Uw+BYEkc7bcsr8+g==
X-Received: by 2002:a05:600c:3b13:b0:42f:8515:e4a8 with SMTP id 5b1f17b1804b1-4319ac70780mr111863875e9.6.1730289862450;
        Wed, 30 Oct 2024 05:04:22 -0700 (PDT)
Message-ID: <b1332284-2ba4-44bf-ab32-dd941b60f4eb@suse.com>
Date: Wed, 30 Oct 2024 13:04:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 04/10] tools/hvmloader: Retrieve (x2)APIC IDs from the
 APs themselves
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Anthony PERARD <anthony.perard@vates.tech>, xen-devel@lists.xenproject.org
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-5-alejandro.vallejo@cloud.com>
 <e8e2385d-b575-4483-ba54-f80c669af9c3@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: <e8e2385d-b575-4483-ba54-f80c669af9c3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.10.2024 12:31, Andrew Cooper wrote:
> On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
>> --- a/tools/firmware/hvmloader/mp_tables.c
>> +++ b/tools/firmware/hvmloader/mp_tables.c
>> @@ -198,8 +198,10 @@ static void fill_mp_config_table(struct mp_config_table *mpct, int length)
>>  /* fills in an MP processor entry for VCPU 'vcpu_id' */
>>  static void fill_mp_proc_entry(struct mp_proc_entry *mppe, int vcpu_id)
>>  {
>> +    ASSERT(cpu_to_x2apicid[vcpu_id] < 0xFF );
> 
> This is just going to break when we hit 256 vCPUs in a VM.
> 
> What do real systems do?
> 
> They'll either wrap around 255 like the CPUID xAPIC_ID does, or they'll
> not write out MP tables at all.

"at all" may be going a little far. They may simply not advertise CPUs with
too wide APIC IDs there, while still allowing others to be discovered this
legacy way.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 12:06:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 12:06:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828170.1243018 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67Sb-0007hI-LQ; Wed, 30 Oct 2024 12:06:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828170.1243018; Wed, 30 Oct 2024 12:06: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 1t67Sb-0007hB-I3; Wed, 30 Oct 2024 12:06:01 +0000
Received: by outflank-mailman (input) for mailman id 828170;
 Wed, 30 Oct 2024 12:06: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=/GSA=R2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t67Sa-0007h3-JA
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 12:06: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 523aff82-96b7-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 13:05:57 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-43161c0068bso60543265e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 05:05:57 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b8ffecsm15166105f8f.91.2024.10.30.05.05.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 05:05:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 523aff82-96b7-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmUiLCJoZWxvIjoibWFpbC13bTEteDMyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjUyM2FmZjgyLTk2YjctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjg5OTU3LjY1Mzg2NSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730289957; x=1730894757; 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=xREi572Em2O2ngv3e7/gYGz8CRjkXagE7mYOq8qgSro=;
        b=Zj/EIkeaFAat73/mergHjcj+zRHlPXkk5VyVhB3EZXUnFjyhUv2yzf6fkJhdXoxH4d
         jZXqZC0BEMqimRyaAa6ug+kWVXCO1zZWSpxskAnFnfuLtktyb28EYicGLE7lSIfICjIZ
         zCUSwuE2w0QtEKM8Dbn1GdNpXRFWnJYFfXZtX7SnzdoeFJhz2cwMZ3kemyTyu64SsH7n
         8uKd0KdwcX4y0Cm3J8LrEiFDgUE/8dVcHxovkDdJr5CZSkRyEOB3bGcOIHyHyxRyp4bo
         cNcixCraGmixiIcXeaO+unwlDZ84Eu0DYUSzUDutTcBM1gWKzxIFvMnnYUfklDEzntoC
         aeZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730289957; x=1730894757;
        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=xREi572Em2O2ngv3e7/gYGz8CRjkXagE7mYOq8qgSro=;
        b=lGM0vr/VKxoDTaUYY7hC29prfDk84Dg5s+BzhV0klyt21qLaM+haoq9gP2RrVexDCl
         7Sb5GOTM2UrAPAyR11mvEiOY0IJU/awDCUboo+1dcMpoBCZ9iTpB2pCwwxAqT0LylqDG
         5j6YaTHd6JFubJVJS6mOcG07QcaCCFN/Q8SC0GWJLxNRGNXozFRaovHNoFVQYSdk38mL
         cdqMS+xRLhBgaqGK217QCZHy9zuVX9l/YUFLz0l/wjknXdqmQXVIJr+HMknCAoed3QgB
         ZEgFH7R5HzeHlesBNIfiW5c28B8SMpwJM3mJHov1ZwS5zIMUBg+7BhER2lODxfuCi77+
         Fo0A==
X-Forwarded-Encrypted: i=1; AJvYcCVEOdIqDnifUAV0R1aUnrxyNXe+cfqOvYVbcUY22KXvEOXELWcSBSe1BsVvupz1khuMIxhnH1TUMnE=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy9U5kNDUMU/pPgDftywWnaiLjbAl35G7we7ewFRPXglOmL4wMN
	rRUTeJEEWf9aiHy8Xihqdt1G0Ovcgfwp9gAF63ymi+G08RpBOzwAxDMi0FuNHw==
X-Google-Smtp-Source: AGHT+IFjaXhXLe8qNeioQfglrlg/Imr3+gGl/4mHydp/OBWgiTYbWj7d62yIRzBTnYJgQAHQIpg1cg==
X-Received: by 2002:adf:fd0a:0:b0:37d:2ceb:ef92 with SMTP id ffacd0b85a97d-38061162d5amr10801348f8f.27.1730289957061;
        Wed, 30 Oct 2024 05:05:57 -0700 (PDT)
Message-ID: <3039e4fc-8494-4d20-805f-e7379535d7ef@suse.com>
Date: Wed, 30 Oct 2024 13:05:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 02/10] xen/x86: Add initial x2APIC ID to the per-vLAPIC
 save area
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-3-alejandro.vallejo@cloud.com>
 <974538f8-10b5-4fa3-9069-df6655a5d86d@citrix.com>
 <b143ada2-9719-4701-9a03-36ee8607958f@suse.com>
 <D594JPJZA0NY.2XQ3SJ44SY8X@cloud.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: <D594JPJZA0NY.2XQ3SJ44SY8X@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.10.2024 13:03, Alejandro Vallejo wrote:
> On Wed Oct 30, 2024 at 6:37 AM GMT, Jan Beulich wrote:
>> On 29.10.2024 21:30, Andrew Cooper wrote:
>>> On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
>>>> @@ -310,19 +309,16 @@ 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;
>>>> +            /*
>>>> +             * Fix the x2APIC identifier. The PV side is nonsensical, but
>>>> +             * we've always shown it like this so it's kept for compat.
>>>> +             */
>>>
>>> In hindsight I should changed "Fix the x2APIC identifier." when I
>>> reworked this logic, but oh well - better late than never.
>>>
>>> /* The x2APIC_ID is per-vCPU, and fixed irrespective of the requested
>>> subleaf. */
>>
>> Can we perhaps avoid "fix" in this comment? "Adjusted", "overwritten", or
>> some such ought to do, without carrying a hint towards some bug somewhere.
> 
> I understood "fix" there as "pin" rather than "unbreak".

Oh, right - that possible meaning escaped me.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 12:25:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 12:25:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828184.1243027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67l2-0003Lp-46; Wed, 30 Oct 2024 12:25:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828184.1243027; Wed, 30 Oct 2024 12: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 1t67l2-0003Li-1a; Wed, 30 Oct 2024 12:25:04 +0000
Received: by outflank-mailman (input) for mailman id 828184;
 Wed, 30 Oct 2024 12:25: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=MsG/=R2=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1t67l1-0003Lc-80
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 12:25:03 +0000
Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com
 [2a00:1450:4864:20::442])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fb0e29b4-96b9-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 13:24:59 +0100 (CET)
Received: by mail-wr1-x442.google.com with SMTP id
 ffacd0b85a97d-37d533b5412so4499516f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 05:24:59 -0700 (PDT)
Received: from ?IPV6:2003:e5:8706:5100:ddd3:fe18:d0ae:c30d?
 (p200300e587065100ddd3fe18d0aec30d.dip0.t-ipconnect.de.
 [2003:e5:8706:5100:ddd3:fe18:d0ae:c30d])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38058b92958sm15207973f8f.106.2024.10.30.05.24.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 05:24:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fb0e29b4-96b9-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0NDIiLCJoZWxvIjoibWFpbC13cjEteDQ0Mi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImZiMGUyOWI0LTk2YjktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjkxMDk5LjkwMzc2MSwic2VuZGVyIjoiamdyb3NzQHN1c2UuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730291099; x=1730895899; darn=lists.xenproject.org;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:from:to:cc:subject:date
         :message-id:reply-to;
        bh=lwzgsB44jt08JcIaw89mJ8hz8xcm2wrNYbFc6tX0aSI=;
        b=eym//jX+W7AjnvlmOhrwtiuNX2ekLzGGmb/kG/yaFogjFN1V8x0muTF3gKajki01vi
         ZVx1s0HTse1K+/NX8QJkmu6s0MegEDAb/EOraeSUmhbVOiTGXaLxfIPSI2DoD3SAORRb
         qkkcmLw0WNARN0czX3lxyUR5QWOXZyaLO2k3W/ug6djaLzzmLBrvBnq4PKjrJJDte++G
         9LOmmZDTfyBmGRXkaHHAg2odNjub7rv2izfmd67azJBd43iUWyw/HmzjN8O1Wo6KlrvE
         RCge1iAXHkdc/V8TYZvoSWH/Ey+IdQFnZimIJiS9vO6OpHNmgYx45Jg72dWNDiUhvNg6
         FFGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730291099; x=1730895899;
        h=in-reply-to:autocrypt:from:content-language:references:to:subject
         :user-agent:mime-version:date:message-id:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=lwzgsB44jt08JcIaw89mJ8hz8xcm2wrNYbFc6tX0aSI=;
        b=IVEEaLkjcSJXkZ0rqf6+yl5Q2atEnedHxHVmAWT2UdqFbN36xiPe5llnOU6KlllhPU
         kHzd8Gni+ZG6BF/RpY/ymdzGQCdVBlyoQsYqcH4O2CMDM7/euaXmL7YVbxXqY5pUdjSc
         im0YtPIsO7i+89Ca5rm11Uc6X2LYpjqBtaJ1jKe2jsww3mOgeMUWc8t+ijPmmMqIPKZl
         ueW726xw/Dwn+PBcswv7fQ+C9Q8DdOweLwYcrv0HdIeBtPTtelLy1588yL2vYvAwj2NB
         kv0boBk1ccax4tGNu0ifeh/NNX8u6Qz1f/2EIqz1ePDQr6g2EwYowyNr3fr3e3I2fyDd
         QZtg==
X-Forwarded-Encrypted: i=1; AJvYcCXISnfXP8NlAC26jPkpFiNlcmthkak3UUMuphOoPZ4NNDQjGWZJ17YSqXWzRbf74bic+0o1QYxNLeQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzMvJ54SZqqK2kEsHKriC7RsQqPBR7HfCbWzsstBZTWZBexWM8C
	DHJTPktkAStj9Qx5Bj1AueKB8rewOGbp6Q5Q0pDl2zIqbfnalJ0vHWmbSHD1n3c=
X-Google-Smtp-Source: AGHT+IE//m+wXLhgspw7up1pVZCkv3SGTTwBsOlj/Wo8cTRWa+eTHRKdBX9zijI4ud3sTvCXgX1CGQ==
X-Received: by 2002:adf:cd83:0:b0:37e:d715:3f39 with SMTP id ffacd0b85a97d-380610f7bcemr10881704f8f.10.1730291097696;
        Wed, 30 Oct 2024 05:24:57 -0700 (PDT)
Message-ID: <02e4f295-4433-44e7-9c5e-15b18e3ec66e@suse.com>
Date: Wed, 30 Oct 2024 13:24:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [QUESTION] tools/xenstored: Best way to proceed with the protocol
 modification
To: Andrii Sultanov <andrii.sultanov@cloud.com>,
 xen-devel@lists.xenproject.org
References: <CAAa3AOOUDB4ZKAYSyXGdFsDzqpVfJd+oeRKR3XbVOSDkiaP_Yw@mail.gmail.com>
Content-Language: en-US
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <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: <CAAa3AOOUDB4ZKAYSyXGdFsDzqpVfJd+oeRKR3XbVOSDkiaP_Yw@mail.gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------rJJ0XYrcS4QANkiksz33oP1x"

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------rJJ0XYrcS4QANkiksz33oP1x
Content-Type: multipart/mixed; boundary="------------XQyLSQTMVbgPziZgu1jQx7HM";
 protected-headers="v1"
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
To: Andrii Sultanov <andrii.sultanov@cloud.com>,
 xen-devel@lists.xenproject.org
Message-ID: <02e4f295-4433-44e7-9c5e-15b18e3ec66e@suse.com>
Subject: Re: [QUESTION] tools/xenstored: Best way to proceed with the protocol
 modification
References: <CAAa3AOOUDB4ZKAYSyXGdFsDzqpVfJd+oeRKR3XbVOSDkiaP_Yw@mail.gmail.com>
In-Reply-To: <CAAa3AOOUDB4ZKAYSyXGdFsDzqpVfJd+oeRKR3XbVOSDkiaP_Yw@mail.gmail.com>

--------------XQyLSQTMVbgPziZgu1jQx7HM
Content-Type: multipart/mixed; boundary="------------zRdX3J5vLC0HqolOl1cXKJER"

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

T24gMzAuMTAuMjQgMTI6NTgsIEFuZHJpaSBTdWx0YW5vdiB3cm90ZToNCj4gSGVsbG8sDQo+
IA0KPiAoQ0MtaW5nIErDvHJnZW4gYXMgdGhlIG9yaWdpbmFsIGF1dGhvciBvZiB0aGUgeGVu
c3RvcmVkIHBhcnRpYWwgZGlyZWN0b3J5IA0KPiBwYXRjaGVzOiBodHRwczovL2xvcmUua2Vy
bmVsLm9yZy94ZW4tZGV2ZWwvMjAxNjEyMDUwNzQ4NTMuMTMyNjgtMS0gDQo+IGpncm9zc0Bz
dXNlLmNvbS8gPGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3hlbi1kZXZlbC8yMDE2MTIwNTA3
NDg1My4xMzI2OC0xLSANCj4gamdyb3NzQHN1c2UuY29tLz4pDQo+IA0KPiBJJ20gaW52ZXN0
aWdhdGluZyBpbXBsZW1lbnRpbmcgWFNfRElSRUNUT1JZX1BBUlQgc3VwcG9ydCBpbiBPeGVu
c3RvcmVkLCBhbmQgaGF2ZSANCj4gY29tZSBieSBhIHBvc3NpYmxlIGlzc3VlIC0gdGhlIHBy
b3RvY29sIHNwZWNpZmllcyB0aGF0IHRoZSAnb2Zmc2V0JyBwYXJhbWV0ZXIgDQo+IGZvciBl
YWNoIGNhbGwgaXMgYSAiYnl0ZSBvZmZzZXQgaW50byB0aGUgbGlzdCBvZiBjaGlsZHJlbiIs
IGFuZCBzbyBzaG91bGQgYmUgDQo+IGNhbGN1bGF0ZWQgb24gdGhlIHVzZXIgc2lkZS4gVGhp
cyBtYWtlcyBzZW5zZSBmb3IgdGhlIEMgc2lkZSBhcyBjaGlsZHJlbiBhcmUgDQo+IHN0b3Jl
ZCBpbiBhIHNpbmdsZSBjaGFyIGFycmF5IHNlcGFyYXRlZCBieSBudWxsIGNoYXJhY3RlcnMs
IGJ1dCBPQ2FtbCBzdG9yZXMgDQo+IGNoaWxkcmVuIGluIGEgZGlmZmVyZW50IHN0cnVjdHVy
ZSwgd2hpY2ggY2FuJ3QgYmUgaW5kZXhlZCBpbnRvIHRoaXMgd2F5IChidXQgaXMgDQo+IHNl
YXJjaGVkIG1vcmUgZWZmaWNpZW50bHksIGV0Yy4pDQo+IA0KPiBXaGF0J3MgdGhlIGJlc3Qg
d2F5IHRvIHByb2NlZWQgaGVyZT8NCj4gDQo+IENvdWxkIHRoZSBwcm90b2NvbCBiZSByZWRl
ZmluZWQgdG86DQo+IDEpIHR1cm4gdGhlICdvZmZzZXQnIGludG8gYW4gb3BhcXVlIGlkIHRo
YXQgbmVlZHMgdG8gYmUgcmUtc2VudCBhcy1pcyBvbiB0aGUgDQo+IG5leHQgaXRlcmF0aW9u
PyAoaXQgd291bGQga2VlcCBiZWluZyBpbnRlcnByZXRlZCBhcyBhbiBpbmRleCBpbnRvIGFu
IGFycmF5IG9uIA0KPiB0aGUgQyBzaWRlLCBhbmQgYXMgc29tZXRoaW5nIGVsc2Ugb24gdGhl
IE9DYW1sIHNpZGUpDQo+IDIpIHJldHVybiB0aGUgb3BhcXVlICdvZmZzZXQnIG9uIGVhY2gg
Y2FsbCBhbG9uZ3NpZGUgdGhlIHN0cmluZyBhbmQgZ2VuZXJhdGlvbiANCj4gaWQgc28gdGhh
dCBpdCB3b3VsZG4ndCBiZSBjYWxjdWxhdGVkIGZyb20gc3RybGVuKCkgb24gdGhlIHVzZXIg
c2lkZSBhbnltb3JlPw0KDQpBcyBsaWJ4ZW5zdG9yZSBpcyBjYWxjdWxhdGluZyB0aGUgb2Zm
c2V0IGJhc2VkIG9uIHRoZSBsZW5ndGggb2YgdGhlDQpyZXR1cm5lZCByZXN1bHQgb2YgdGhl
IHByZXZpb3VzIGNhbGwgYW5kIHRoZW4gdXNpbmcgdGhpcyB2YWx1ZSBmb3IgdGhlDQpuZXh0
IGl0ZXJhdGlvbiwgdGhlcmUgaXMgbm8gd2F5ICJvZmZzZXQiIGNvdWxkIGJlIHJlZGVmaW5l
ZCB0byBiZSBhbg0Kb3BhcXVlIGhhbmRsZSB3aXRoIGEgZGlmZmVyZW50IHZhbHVlIHRoYW4g
dG9kYXkuDQoNCk1vZGlmeWluZyB0aGUgb3V0cHV0IGZvcm1hdCBpc24ndCBwb3NzaWJsZSBl
aXRoZXIsIGFzIHdlIGhhdmUgbm8gY29udHJvbA0Kb3ZlciBhbGwgY2xpZW50cyB1c2luZyB0
aGUgY3VycmVudCBmb3JtYXQuDQoNClNvIHlvdSBuZWVkIHRvIGNvbXBseSB3aXRoIHRoZSBj
dXJyZW50IGludGVyZmFjZS4NCg0KDQpKdWVyZ2VuDQo=
--------------zRdX3J5vLC0HqolOl1cXKJER
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-----

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
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------zRdX3J5vLC0HqolOl1cXKJER--

--------------XQyLSQTMVbgPziZgu1jQx7HM--

--------------rJJ0XYrcS4QANkiksz33oP1x
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/Ey8FAmciJZgFAwAAAAAACgkQsN6d1ii/Ey+o
jgf/bwaxSr5NvOidkSSdTYykjk3suqrnmzKp21P2bT5q+bz/KowQMD/AwRIbxtMzKIReGXWDThXR
C1NBMOEAcMx4pG+DISmiWvCFPykD3taw6Re/EZkctwBDIugMebelL0knYBTIBMEwPuqTeve93Qqj
mXKSYvAja1KM5oj5oBvze5MKiCPNfwH66WNw+d85U8UIsk6ILXlThqeZMMxiRMSGiVCOQMT3cBtG
fTgvC6sbuZs/A6IrQ0dPVmqFdlc1A0GcltsbjmT8zGuqTM+oXpJi5P1l89ZN1Qb1+kj0Rn8u6D/3
bWaz40u5zsu8/iQFjWP2pBSjVT4Vdcpdvgu9WDdsjA==
=F6nX
-----END PGP SIGNATURE-----

--------------rJJ0XYrcS4QANkiksz33oP1x--


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 12:26:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 12:26:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828189.1243037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67m7-0003qs-DW; Wed, 30 Oct 2024 12:26:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828189.1243037; Wed, 30 Oct 2024 12: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 1t67m7-0003ql-AW; Wed, 30 Oct 2024 12:26:11 +0000
Received: by outflank-mailman (input) for mailman id 828189;
 Wed, 30 Oct 2024 12:26: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t67m6-0003qZ-9n
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 12:26:10 +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 1f016f6d-96ba-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 13:26:00 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c935d99dc5so7506896a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 05:26:00 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb6349675sm4640644a12.94.2024.10.30.05.25.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 05:25:58 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f016f6d-96ba-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzQiLCJoZWxvIjoibWFpbC1lZDEteDUzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjFmMDE2ZjZkLTk2YmEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjkxMTYwLjE3MTgwNCwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730291159; x=1730895959; 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=pfpHyIUjAZzZmj2Pttw0DDVLlkn6+MvdKHIUHH5RFzQ=;
        b=CVy7dDTrv8L9QiVd/LTKWFgXMpuocPcCrTosTOCd4Wgx38BKeeXPYM5XqfrK9rfXTL
         iIZlB8B+lxagkZDxMnU6Hc3Zr9pxhZostIny74k52ilucoZJrqTjBFb6nnP10/9S11O1
         TCYl7TKHNMLJn9Pie3A+9+HdZgl+0vjWB71sc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730291159; x=1730895959;
        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=pfpHyIUjAZzZmj2Pttw0DDVLlkn6+MvdKHIUHH5RFzQ=;
        b=NVLV6d1BJ2b80Qu4JADYkoTptMZ17fDedKjVAs8dwe6AIohcwxCstk5nGeYy3hd3jy
         uyXj/v86RPeJQSldWwfEwtNXxlw20F8zvZnN8GvK0xHQ/dJeApoaauF/sly27dFDccAc
         BmQzQ1P2lAcvylMXzp4xojeIKO18RTJwPHIwgAWsqIPWaX9G/Lbt+9RgR2ky2uXe0oQO
         b+h9Jn1+CXMuvHUfbVGbXl+OVaI03TaY9+mS9uRqmPOPXIwEzw1EiCYk6FsEEn2NL2+l
         L4Ww+YSfmOn2PkOx4V3GODzctOSEIybL/x1h6h7w9tM3lT7A0I/YcJ0T2Hm2DExYtfxT
         0wog==
X-Forwarded-Encrypted: i=1; AJvYcCVMVGpWXeKn+CNS/CdqQ2oeaBcU2VoOzMH0U42yS5uvtEIlHCeeBDsgzDlYiGXkyYIWxkdvu3NXz9k=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyFe5mLLm0TbqGyor1LjOSJAo+QqvQptc8MbdRA9XCETaEQXaij
	Vi9uGbWtuYaTUFDDPflyx3PA8tSPLIyIp/QNvg/L4gogJQsUQ8eGuolBf3P0A1A=
X-Google-Smtp-Source: AGHT+IGIy6ahb5rg+YGmoB7rfnzN7XEI+LmKGps+c9yJyoB+CAl2sj/PFHmVH6SAm41p+P8NoAXlig==
X-Received: by 2002:a05:6402:370c:b0:5cd:5732:ecf3 with SMTP id 4fb4d7f45d1cf-5cd5732f0e0mr1780034a12.5.1730291159411;
        Wed, 30 Oct 2024 05:25:59 -0700 (PDT)
Message-ID: <ac622c90-86e6-4f7d-8c25-d21c39ba3dea@citrix.com>
Date: Wed, 30 Oct 2024 12:25:57 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 02/10] xen/x86: Add initial x2APIC ID to the per-vLAPIC
 save area
To: Jan Beulich <jbeulich@suse.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-3-alejandro.vallejo@cloud.com>
 <974538f8-10b5-4fa3-9069-df6655a5d86d@citrix.com>
 <b143ada2-9719-4701-9a03-36ee8607958f@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <b143ada2-9719-4701-9a03-36ee8607958f@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 6:37 am, Jan Beulich wrote:
> On 29.10.2024 21:30, Andrew Cooper wrote:
>> On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
>>> @@ -310,19 +309,16 @@ 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;
>>> +            /*
>>> +             * Fix the x2APIC identifier. The PV side is nonsensical, but
>>> +             * we've always shown it like this so it's kept for compat.
>>> +             */
>> In hindsight I should changed "Fix the x2APIC identifier." when I
>> reworked this logic, but oh well - better late than never.
>>
>> /* The x2APIC_ID is per-vCPU, and fixed irrespective of the requested
>> subleaf. */
> Can we perhaps avoid "fix" in this comment? "Adjusted", "overwritten", or
> some such ought to do, without carrying a hint towards some bug somewhere.

Not really.  This is actually a good example of why "fix" as is bugfix
is a weird corner of English, despite it being common in coding circles.


"Fix" means to attach one thing to another, along with a strong
implication that the other thing doesn't move.  This comes from Latin,
and the collective term for nails/screws/bolts/etc is "fixings".

Fix as in bugfix derives from "to repair" or "to mend", which in turn
comes from the fact that even today (and moreso several hundred years
ago), many repairs/mends involve affixing one thing back to something
else that doesn't move.


In this case, it is res->d which which is fixed (as in unmoving) with
respect to the subleaf index.  It is weird even for CPUID; it's the only
example I'm aware of where the content of the world logically the same
piece of information in any subleaf.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 12:26:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 12:26:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828190.1243048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t67mC-00047A-Ks; Wed, 30 Oct 2024 12:26:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828190.1243048; Wed, 30 Oct 2024 12: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 1t67mC-000471-HR; Wed, 30 Oct 2024 12:26:16 +0000
Received: by outflank-mailman (input) for mailman id 828190;
 Wed, 30 Oct 2024 12:26: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t67mA-0003Lc-G5
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 12:26: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 25ee46a6-96ba-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 13:26:11 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5c9850ae22eso8428559a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 05:26:11 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb6319711sm4706162a12.66.2024.10.30.05.26.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 05:26:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25ee46a6-96ba-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmEiLCJoZWxvIjoibWFpbC1lZDEteDUyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjI1ZWU0NmE2LTk2YmEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjkxMTcxLjc5ODI2NCwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730291171; x=1730895971; 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=XosC4ofsdj4ddM0SddepXGJRxAECeo3pbyXOha3wJFI=;
        b=bAxUGirf3ItKKDprTKigEP7YpzoaeLdJw1u+HNg3Tv7dFjguqXQdrfQCZ/3kdC1WQt
         zYH3tUo4hGreZgbt1L5VI/FM/nKixRnTpdZYs44SZZ5gCnDGR+0HvCCKVGQwd2Chy8n6
         liWXhGp9Okgo2t6evXAAHZEfNFrSzAMgyi+60=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730291171; x=1730895971;
        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=XosC4ofsdj4ddM0SddepXGJRxAECeo3pbyXOha3wJFI=;
        b=BVcNyI+VM3CQWgPQEIriQN5556er/iRU/ZHOXR3AeUyUt+CxZ28dIBeAQfXSqKd6h3
         wgCmbBVMLEDoPFnNmngr+DUsXPq5l8K24gH6tXaiyU7Fbav1wGqjshFxdZivPo4HNPT0
         u/kESDcqRHifuxZuuMOA9L1ZfEM+ZgQctWoVfDxOwAQcykbWw8i6onVCjpO8UBhPTlrj
         jXjL61HefBhWTIWtEtYp/Ncv9I8g4SioOB2Hmy1G6FtgO+zhgZUbHf2zj7iwd+6taTr9
         KLiWa//6ow9k+Gq4N/57zRkj9Sp/tmO4YZS3nfyJPpkESZf7i9UYDRsPo+aWv7fQuK19
         lpRA==
X-Forwarded-Encrypted: i=1; AJvYcCUVdnKD8CPkvR67fuhR01xPquM3NWCSwA5ncOy+iKXKVn8UkyvMEYjzvAqOUC2rX+7S/MHXJ1E5kbc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwZ0h3XXGwuHxw2AULB5mae/QOwoZzzVGPnwIhIWLzn35gjTAjy
	So/SkaHxPzvHYG7PtsvdLjXc3GiUPk5NTDAtYQ/g5Ut1vhRvzfk81GGkJU4jR3k=
X-Google-Smtp-Source: AGHT+IG7dXCICaB+Ziyi32mg339SV2GDtROJulJvPJmXXHqpU4L3t4Jd0rqdpLd+FCsjP+3qj2fFzg==
X-Received: by 2002:a05:6402:2688:b0:5c9:8ab0:2975 with SMTP id 4fb4d7f45d1cf-5cbbf876a51mr12466175a12.6.1730291171045;
        Wed, 30 Oct 2024 05:26:11 -0700 (PDT)
Date: Wed, 30 Oct 2024 13:26:09 +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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
Message-ID: <ZyIl4azXy3ySD2SS@macbook>
References: <20241029110351.40531-1-roger.pau@citrix.com>
 <53034f16-682e-4081-ab7e-81338c700f85@suse.com>
 <ZyEf8hK-XyGn6Kp8@macbook>
 <d03f58f0-5b93-4b23-85cb-dc2c18a4eb41@suse.com>
 <ZyIF5qYU8dC-yYNW@macbook>
 <62f917f4-ff63-46b3-9b7f-f8d467bfa2f3@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <62f917f4-ff63-46b3-9b7f-f8d467bfa2f3@suse.com>

On Wed, Oct 30, 2024 at 11:57:39AM +0100, Jan Beulich wrote:
> On 30.10.2024 11:09, Roger Pau Monné wrote:
> > On Wed, Oct 30, 2024 at 10:41:40AM +0100, Jan Beulich wrote:
> >> On 29.10.2024 18:48, Roger Pau Monné wrote:
> >>> On Tue, Oct 29, 2024 at 05:43:24PM +0100, Jan Beulich wrote:
> >>>> On 29.10.2024 12:03, Roger Pau Monne wrote:
> >>>>> @@ -273,6 +293,13 @@ void __ioapic_write_entry(
> >>>>>      {
> >>>>>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
> >>>>>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
> >>>>> +        /*
> >>>>> +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
> >>>>> +         * Entry will be updated once the array is allocated and there's a
> >>>>> +         * write against the pin.
> >>>>> +         */
> >>>>> +        if ( io_apic_pin_eoi )
> >>>>> +            io_apic_pin_eoi[apic][pin] = e.vector;
> >>>>
> >>>> The comment here looks a little misleading to me. clear_IO_APIC_pin() calls
> >>>> here to, in particular, set the mask bit. With the mask bit the vector isn't
> >>>> meaningful anyway (and indeed clear_IO_APIC_pin() sets it to zero, at which
> >>>> point recording IRQ_VECTOR_UNASSIGNED might be better than the bogus vector
> >>>> 0x00).
> >>>
> >>> Note that clear_IO_APIC_pin() performs the call to
> >>> __ioapic_write_entry() with raw == false, at which point
> >>> __ioapic_write_entry() will call iommu_update_ire_from_apic() if IOMMU
> >>> IR is enabled.  The cached 'vector' value will be the IOMMU entry
> >>> offset for the AMD-Vi case, as the IOMMU code will perform the call to
> >>> __ioapic_write_entry() with raw == true.
> >>>
> >>> What matters is that the cached value matches what's written in the
> >>> IO-APIC RTE, and the current logic ensures this.
> >>>
> >>> What's the benefit of using IRQ_VECTOR_UNASSIGNED if the result is
> >>> reading the RTE and finding that vector == 0?
> >>
> >> It's not specifically the vector == 0 case alone. Shouldn't we leave
> >> the latched vector alone when writing an RTE with the mask bit set?
> > 
> > I'm not sure what's the benefit of the extra logic to detect such
> > cases, just to avoid a write to the io_apic_pin_eoi matrix.
> 
> Perhaps the largely theoretical concern towards having stale data
> somewhere. Yet ...
> 
> >> Any still pending EOI (there should be none aiui) can't possibly
> >> target the meaningless vector / index in such an RTE. Perhaps it was
> >> wrong to suggest to overwrite (with IRQ_VECTOR_UNASSIGNED) what we
> >> have on record.
> >>
> >> Yet at the same time there ought to be a case where the recorded
> >> indeed moves back to IRQ_VECTOR_UNASSIGNED.
> > 
> > The only purpose of the io_apic_pin_eoi matrix is to cache what's
> > currently in the RTE entry 'vector' field.  I don't think we should
> > attempt to add extra logic as to whether the entry is valid, or
> > masked.  Higher level layers should already take care of that.  The
> > only purpose of the logic added in this patch is to ensure the EOI is
> > performed using what's in the RTE vector field for the requested pin.
> > Anything else is out of scope IMO.
> > 
> > Another option, which would allow to make the matrix store uint8_t
> > elements would be to initialize it at allocation with the RTE vector
> > fields currently present, IOW: do a raw read of every RTE and set the
> > fetched vector field in io_apic_pin_eoi.  Would that be better to you,
> > as also removing the need to ever store IRQ_VECTOR_UNASSIGNED?
> 
> ... yes, that may make sense (and eliminate my concern there).
> 
> I wonder whether the allocation of the array then wouldn't better be
> moved earlier, to enable_IO_APIC(), such that clear_IO_APIC_pin()
> already can suitably update it. In fact, since that function writes
> zero[1], no extra reads would then be needed at all, and the array could
> simply start out all zeroed.

I agree with the suggestion to allocate and setup the io_apic_pin_eoi
matrix in enable_IO_APIC().  However, I'm not sure I follow your
suggestion about the matrix starting as all zeroes being a sane state.

I think we need to do the raw RTE reads in enable_IO_APIC() before
calling clear_IO_APIC(), otherwise clear_IO_APIC_pin() can call
__io_apic_eoi() before any __ioapic_write_entry() has been performed,
and hence the state of the RTE.vector field could possibly be out of
sync with the initial value in io_apic_pin_eoi, and the EOI not take
effect.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 13:15:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 13:15:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828212.1243057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t68XH-0003rv-AG; Wed, 30 Oct 2024 13:14:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828212.1243057; Wed, 30 Oct 2024 13:14: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 1t68XH-0003ro-7Y; Wed, 30 Oct 2024 13:14:55 +0000
Received: by outflank-mailman (input) for mailman id 828212;
 Wed, 30 Oct 2024 13:14: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=dhn2=R2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t68XG-0003rh-My
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 13:14: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 f23a0484-96c0-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 14:14:51 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2fb49510250so67513551fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 06:14:51 -0700 (PDT)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53bc0d52c15sm246912e87.154.2024.10.30.06.14.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 06:14:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f23a0484-96c0-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMzYiLCJoZWxvIjoibWFpbC1sajEteDIzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImYyM2EwNDg0LTk2YzAtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjk0MDkxLjU4NzY2NSwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730294091; x=1730898891; 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=x3YodAKAWV7uViaJXs9SCjgCFQ72aJyLCu8ZCk+VIN0=;
        b=RYObvT413p4QIADNyy5o0iUoyK+YewvkcMNPcF/vRkTdKmuRARE36w4l1PK0l5AdZP
         lvK7xQL3J8OZpdg+YAv6q+weHUq2ZAZlWoQ31hR4D/IWeaIuxK4GmKaCF6KO52C+aJib
         CsrumdaDHefCDpk+NuYOWriNQNrOSzd796UH39ZfLWwryglL2kqLHAEAGw/fENS93qa5
         IXgFUQ5hsoQSP3a7LvHRHfblMlcBNCOzTKyUUyBIiftNFJ1FiVnMWLxJNgWP/DwGnAEu
         9s0pPbeL/I42/x2Vb+RNwWTKwxMQ6AzwxcHVloLLNHZ2XvWGSLLO+ze8NZ8jG20E93iF
         gUeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730294091; x=1730898891;
        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=x3YodAKAWV7uViaJXs9SCjgCFQ72aJyLCu8ZCk+VIN0=;
        b=scFrD7Bghdj0Q/YCFep8xVAu19idc8o+m59X//57Jmu9rUzepG7QPnWyXPTMIEpLLf
         y/otIgAnXVc/ARw1ImpbGUb+tw1s5JmoJzUHXJsJlqbde8b/aobEUf2mZCykJZU7YkNi
         Iiv8WrX8IDqIWwFj7XklINJoxJl7RhZlBWc8Sb/uTSGU/lhUeQpno5iDx+P4zS0QPb/3
         5hxewjmX3aDVs0htk8oycT518jTK5RSvHhv/wgnC68qL5rxGYtCfF7GXLv6/8IlDgdhE
         BOf2Xe+eZKwAplQIh702aZ8yto61kHZtc95ttPt+2Vtw3phWWw0r5m+6xaGheG0koXQu
         FS3Q==
X-Gm-Message-State: AOJu0YwZ8AZ7vgZCqkw3mYhJn4dBBTvfkOp/QNio9QbM0WMPqT+0SaCD
	bxFCeVg8AMUxPelDvw+9w+sf+0Y7F8U22gZNa3kPTqZ/PkgZRbxiuCODnA==
X-Google-Smtp-Source: AGHT+IFeUQPerEMfaoARhTrM7z5e8snG5muD7chF11rpWvIiJE3c02VJ+GfP37JBuApshSvfQ6Hx0A==
X-Received: by 2002:a05:6512:39c7:b0:53a:d8b:95c0 with SMTP id 2adb3069b0e04-53b348d87e6mr7926235e87.30.1730294090256;
        Wed, 30 Oct 2024 06:14:50 -0700 (PDT)
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>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] xen/common: Move gic_preinit() to common code
Date: Wed, 30 Oct 2024 14:14:47 +0100
Message-ID: <e906b538aba684ab108cc70e8c60ed35ddfad74e.1730292286.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.47.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Introduce ic_preinit() in the common codebase, as it is not
architecture-specific and can be reused by both PPC and RISC-V.
This function identifies the node with the interrupt-controller property
in the device tree and calls device_init() to handle architecture-specific
initialization of the interrupt controller.

Additionally, rename gic_acpi_preinit() to ic_acpi_preinit() as it is used
by ic_preinit(), while keeping it defined in architecture-specific as this
part is architecture-specific. In case if CONFIG_ACPI=n a stub for
ic_acpi_preinit() is provided. To declaration/defintion of ic_acpi_preint()
is added `inline` to deal with the compilation issue:
  error: 'ic_acpi_preinit' defined but not used [-Werror=unused-function]

Make minor adjustments compared to the original ARM implementation of
gic_dt_preinit():
 - Remove the local rc variable in gic_dt_preinit() since it is only used once.
 - Change the prefix from gic to ic to clarify that the function is not
   specific to ARM’s GIC, making it suitable for other architectures as well.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in v2:
 - Revert changes connected to moving of gic_acpi_preinit() to common code as
   it isn't really architecture indepent part.
 - Update the commit message.
 - Move stub of ic_acpi_preinit() to <asm-generic/device.h> for the case when
   CONFIG_ACPI=n.
---
 xen/arch/arm/gic.c               | 45 +------------------------------
 xen/arch/arm/setup.c             |  3 ++-
 xen/common/device.c              | 46 ++++++++++++++++++++++++++++++++
 xen/include/asm-generic/device.h | 10 +++++++
 4 files changed, 59 insertions(+), 45 deletions(-)

diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index 3eaf670fd7..b4a1e769df 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -214,38 +214,8 @@ int gic_map_hwdom_extra_mappings(struct domain *d)
     return 0;
 }
 
-static void __init gic_dt_preinit(void)
-{
-    int rc;
-    struct dt_device_node *node;
-    uint8_t num_gics = 0;
-
-    dt_for_each_device_node( dt_host, node )
-    {
-        if ( !dt_get_property(node, "interrupt-controller", NULL) )
-            continue;
-
-        if ( !dt_get_parent(node) )
-            continue;
-
-        rc = device_init(node, DEVICE_INTERRUPT_CONTROLLER, NULL);
-        if ( !rc )
-        {
-            /* NOTE: Only one GIC is supported */
-            num_gics = 1;
-            break;
-        }
-    }
-    if ( !num_gics )
-        panic("Unable to find compatible GIC in the device tree\n");
-
-    /* Set the GIC as the primary interrupt controller */
-    dt_interrupt_controller = node;
-    dt_device_set_used_by(node, DOMID_XEN);
-}
-
 #ifdef CONFIG_ACPI
-static void __init gic_acpi_preinit(void)
+void __init ic_acpi_preinit(void)
 {
     struct acpi_subtable_header *header;
     struct acpi_madt_generic_distributor *dist;
@@ -259,21 +229,8 @@ static void __init gic_acpi_preinit(void)
     if ( acpi_device_init(DEVICE_INTERRUPT_CONTROLLER, NULL, dist->version) )
         panic("Unable to find compatible GIC in the ACPI table\n");
 }
-#else
-static void __init gic_acpi_preinit(void) { }
 #endif
 
-/* Find the interrupt controller and set up the callback to translate
- * device tree or ACPI IRQ.
- */
-void __init gic_preinit(void)
-{
-    if ( acpi_disabled )
-        gic_dt_preinit();
-    else
-        gic_acpi_preinit();
-}
-
 /* Set up the GIC */
 void __init gic_init(void)
 {
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 71ebaa77ca..1ea7db0bd4 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -38,6 +38,7 @@
 #include <asm/page.h>
 #include <asm/static-evtchn.h>
 #include <asm/current.h>
+#include <asm/device.h>
 #include <asm/setup.h>
 #include <asm/gic.h>
 #include <asm/cpuerrata.h>
@@ -359,7 +360,7 @@ void asmlinkage __init start_xen(unsigned long fdt_paddr)
 
     preinit_xen_time();
 
-    gic_preinit();
+    ic_preinit();
 
     arm_uart_init();
     console_init_preirq();
diff --git a/xen/common/device.c b/xen/common/device.c
index 33e0d58f2f..f440d8be88 100644
--- a/xen/common/device.c
+++ b/xen/common/device.c
@@ -4,10 +4,14 @@
  *   xen/arch/arm/device.c
  */
 
+#include <xen/acpi.h>
 #include <xen/bug.h>
 #include <xen/device_tree.h>
 #include <xen/errno.h>
 #include <xen/init.h>
+#include <xen/kernel.h>
+#include <xen/lib.h>
+#include <xen/types.h>
 
 #include <asm/device.h>
 
@@ -56,6 +60,40 @@ enum device_class device_get_class(const struct dt_device_node *dev)
     return DEVICE_UNKNOWN;
 }
 
+static void __init ic_dt_preinit(void)
+{
+    struct dt_device_node *node;
+    uint8_t num_gics = 0;
+
+    dt_for_each_device_node( dt_host, node )
+    {
+        if ( !dt_get_property(node, "interrupt-controller", NULL) )
+            continue;
+
+        if ( !dt_get_parent(node) )
+            continue;
+
+        if ( !device_init(node, DEVICE_INTERRUPT_CONTROLLER, NULL) )
+        {
+            /* NOTE: Only one GIC is supported */
+            num_gics = 1;
+            break;
+        }
+    }
+
+    if ( !num_gics )
+        panic("Unable to find compatible interrupt contoller"
+              "in the device tree\n");
+
+    /* Set the interrupt controller as the primary interrupt controller */
+    dt_interrupt_controller = node;
+    dt_device_set_used_by(node, DOMID_XEN);
+}
+
+#else /* !CONFIG_HAS_DEVICE_TREE */
+
+static void __init ic_dt_preinit(void) { }
+
 #endif
 
 #ifdef CONFIG_ACPI
@@ -80,3 +118,11 @@ int __init acpi_device_init(enum device_class class, const void *data, int class
 }
 
 #endif
+
+void __init ic_preinit(void)
+{
+    if ( acpi_disabled )
+        ic_dt_preinit();
+    else
+        ic_acpi_preinit();
+}
diff --git a/xen/include/asm-generic/device.h b/xen/include/asm-generic/device.h
index 1acd1ba1d8..0ce2bb3cdf 100644
--- a/xen/include/asm-generic/device.h
+++ b/xen/include/asm-generic/device.h
@@ -127,6 +127,16 @@ __section(".adev.info") = {                                         \
 
 #endif /* CONFIG_ACPI */
 
+void ic_preinit(void);
+
+#ifdef CONFIG_ACPI
+void ic_acpi_preinit(void);
+#else
+#include <xen/init.h>
+
+static inline void __init ic_acpi_preinit(void) { }
+#endif
+
 #endif /* __ASM_GENERIC_DEVICE_H__ */
 
 /*
-- 
2.47.0



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 13:25:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 13:25:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828219.1243068 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t68hq-0005lQ-7f; Wed, 30 Oct 2024 13:25:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828219.1243068; Wed, 30 Oct 2024 13:25: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 1t68hq-0005lJ-58; Wed, 30 Oct 2024 13:25:50 +0000
Received: by outflank-mailman (input) for mailman id 828219;
 Wed, 30 Oct 2024 13:25: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t68ho-0005lD-Vd
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 13:25:48 +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 76b21690-96c2-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 14:25:43 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9a0c7abaa6so803112766b.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 06:25:43 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b30f58991sm566740166b.159.2024.10.30.06.25.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 06:25:42 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 76b21690-96c2-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzYiLCJoZWxvIjoibWFpbC1lajEteDYzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijc2YjIxNjkwLTk2YzItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjk0NzQzLjI4MDA1Mywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730294743; x=1730899543; 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=MWwJthBjZktYy30sVgIXSCb27ZHwvzyeYYZ3sA+gfsw=;
        b=gAtb2P0PvbJ1rGCNi1G7Gtev7F60cJa90rfDGAM7SKLrB59+i1WTT9X7NCZoBao4du
         TlifWSpzksUdWnayYImw8w83M3oDvym5caIQBewSfses7VxLMF6v+tHpNaCJwmE0X6AM
         STKX2WNppOXpX+Iz5pEj6qCXBD9kK3EqZrAhw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730294743; x=1730899543;
        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=MWwJthBjZktYy30sVgIXSCb27ZHwvzyeYYZ3sA+gfsw=;
        b=U0jRTXOEmbnxeGLtDVyS8srtzxIgA9TtAXzRZcXqm+JfjTogPS6mxxurdvRQtaWWro
         bgImkyoz/oEdei+RCVN6bsEp4UPLioOE7noc1qAk36oMuwqPrumA3kN6z5X8hiqHX9a4
         MhSnRpSl6Son/awRGoijdcZsItNIHEhk1mt64+0f42lwTo0TRYb/DC1jOiDFgg24Cqfs
         c6mRLT6CvRklZOANRCa7df5h+BaVL8C+AT3jC6gzD+xnHIoSjiNfpjAcmZEQM4sBhAZ/
         ZZ7Ml5SUwMw5gV4BK4KYqP471sz8WEpqn4LMd2NsVh3ZVlRgVGsLLuxoQjjwots637v+
         kAQg==
X-Forwarded-Encrypted: i=1; AJvYcCVz/a6JhxV1uj2BC5+yit44q42OpqmD1n8tGa8caXcnGs0NJ/No7c8FQwfJSWX+UrJDB+qec66mkWE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxLNtIMKSeaR79ceyZ+OsXdOaGF7X9FxkIHOQy+q8Cj3ljR+p0U
	XNJTCBRQWLBnJWz7nuRSKdCtjNK7Yak8BC6ohAKMmL99gDDa0TCA0cWjXZhezXg=
X-Google-Smtp-Source: AGHT+IHs1CBHUIRoftbvNpV/DmKHTFA88zVyjWejDUwMVv8uCSPKpM55ZiyUbIcUNkmPW5Q6YUupjA==
X-Received: by 2002:a17:907:7241:b0:a9a:80cc:c972 with SMTP id a640c23a62f3a-a9de5d8691amr1450160166b.27.1730294742580;
        Wed, 30 Oct 2024 06:25:42 -0700 (PDT)
Message-ID: <227db2a2-d36f-453e-8886-b8ef0d5f9616@citrix.com>
Date: Wed, 30 Oct 2024 13:25:40 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.20 release schedule
To: oleksii.kurochko@gmail.com, Xen-devel <xen-devel@lists.xenproject.org>
Cc: Community Manager <community.manager@xenproject.org>,
 "committers @ xenproject . org" <committers@xenproject.org>
References: <e470822f190a41b2f1600821b81d7ad158ed33db.camel@gmail.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <e470822f190a41b2f1600821b81d7ad158ed33db.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 1:02 pm, oleksii.kurochko@gmail.com wrote:
> Hello everyone,
>
> As there were no objections to the proposed release schedule
> (https://lore.kernel.org/xen-devel/CAMacjJxEi6PThwH2=NwG3He8eQn39aiaxZCw3bQF7i4YcmjuNw@mail.gmail.com/
> ), I've updated the wiki with the schedule for Xen 4.20 release
> (https://wiki.xenproject.org/wiki/Xen_Project_X.YY_Release_Notes), and
> it is now accessible from
> https://xenbits.xen.org/docs/unstable-staging/support-matrix.html.

I have a blocker to raise (against myself...) and no good idea of how to
proceed.

The for_each_bit work has a unexpected bug.

    for_each_bit ( ... )
    {
        if ( ... )
            break;
    }

will fall into an infinite loop.  This is caused by for_each_bit()
hiding a double for() loop, in order to declare two scope-local
variables of different types.

The two variables are one copy of the source expression (really quite
important to keep), and one unsigned int iterator (improved optimisation
capability by not using a wider-scope variable).

Options are (off the top of my head)

1) Always take the iterator from outer scope
2) Iterator always the same type as the source expression
3) Figure out some way of expressing "once" in the outer loop

Or anything else that I've missed.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 13:49:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 13:49:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828232.1243078 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t694H-0000kL-3r; Wed, 30 Oct 2024 13:49:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828232.1243078; Wed, 30 Oct 2024 13:49: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 1t694G-0000kE-VI; Wed, 30 Oct 2024 13:49:00 +0000
Received: by outflank-mailman (input) for mailman id 828232;
 Wed, 30 Oct 2024 13:48: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=2nRj=R2=kernel.org=ardb@srs-se1.protection.inumbo.net>)
 id 1t694F-0000k8-E2
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 13:48:59 +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 b42f83ef-96c5-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 14:48:55 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 2A19C5C5A6C
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 13:48:09 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D5C2CC4CED0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 13:48:53 +0000 (UTC)
Received: by mail-lf1-f46.google.com with SMTP id
 2adb3069b0e04-539eb97f26aso6962792e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 06:48:53 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b42f83ef-96c5-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjEzOS4xNzguODQuMjE3IiwiaGVsbyI6ImRmdy5zb3VyY2Uua2VybmVsLm9yZyJ9
X-Custom-Transaction: eyJpZCI6ImI0MmY4M2VmLTk2YzUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjk2MTM1Ljg2MDIyLCJzZW5kZXIiOiJhcmRiQGtlcm5lbC5vcmciLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730296133;
	bh=l29xjMvWd5IzFEym1SdeJT/5uE5SzAyDVBZM5T+wfow=;
	h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
	b=ECSgIwLR13qCsQcxcgWKx7mLKaXwrrDJdUvpmzsgGQ4t9HeIcU5CDu02sQfbIMAmx
	 YVW2lrpSs8NnRQrjA0dscfJgAK3ZozIP40i3SGrpMiJoAnoACZbltghK8IlGpMEhPK
	 I9RUmm5zX6UqFjN6G8wtNAWtIS2XIGF+2sJDY739CoZegLmk9T0ZwYOe9DdQxqxg1+
	 0WChpy3Zm9s5Z4jik6W2sK8R4y5T136x/A4bUz3c3pXFYrb312+OBNxUcWzDD/pcgK
	 OFHU3R9pcJJMLguit0l6o/4GqvYxvd3r6mcScMZMr45abDPCpFTBQh44Iyqp3JDAZb
	 LmH4a62aIcPWg==
X-Forwarded-Encrypted: i=1; AJvYcCVYhKfW2eZmAWWmgaU/VTuycg3P7NzYWMOqImP3rFDllrIEIJjPYj5Ecff6d4tDssVOSTBS6t98E2s=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyoQScNM6ueemqxaZbb8lO+VQuDFhKpHiAkXQIywhHCCc3zXdPY
	RuDVJkIamasfeCnNKJ1RAs4swyh2V4D/Any+fw02NizVFvRSyld2vc8/ptRYHSJD9ZLt5Lrd1A3
	Z6V2OpuwR42QAxwpm+mHeDSdS5qc=
X-Google-Smtp-Source: AGHT+IFtq4EtnqrroYItyFo72u+yn8LxIyPbI0vN4T1+ioELAZ476zVUyFG3o8hJBQBfVrJOI3bVhga2K4K/hCe5Hag=
X-Received: by 2002:a05:6512:1047:b0:53a:40e:d547 with SMTP id
 2adb3069b0e04-53b7ecd58damr2272034e87.5.1730296132256; Wed, 30 Oct 2024
 06:48:52 -0700 (PDT)
MIME-Version: 1.0
References: <20241009160438.3884381-7-ardb+git@google.com> <CAMj1kXHzahaLRH_0nSQaS7L+so0WRwh4R6SLdb1R+Hm3s-o1dA@mail.gmail.com>
 <1dea1f19-c247-435b-9c73-a0181914024d@suse.com>
In-Reply-To: <1dea1f19-c247-435b-9c73-a0181914024d@suse.com>
From: Ard Biesheuvel <ardb@kernel.org>
Date: Wed, 30 Oct 2024 14:48:40 +0100
X-Gmail-Original-Message-ID: <CAMj1kXFgoEk65bJBU=eZccYUdZCqF3Bk2pMAZCA4TviC3U9ExQ@mail.gmail.com>
Message-ID: <CAMj1kXFgoEk65bJBU=eZccYUdZCqF3Bk2pMAZCA4TviC3U9ExQ@mail.gmail.com>
Subject: Re: [PATCH v3 0/5] x86/xen: Drop absolute references from startup code
To: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
Cc: Ard Biesheuvel <ardb+git@google.com>, linux-kernel@vger.kernel.org, 
	Jason Andryuk <jason.andryuk@amd.com>, Boris Ostrovsky <boris.ostrovsky@oracle.com>, x86@kernel.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, 29 Oct 2024 at 13:54, J=C3=BCrgen Gro=C3=9F <jgross@suse.com> wrote=
:
>
> On 29.10.24 13:50, Ard Biesheuvel wrote:
> > On Wed, 9 Oct 2024 at 18:09, Ard Biesheuvel <ardb+git@google.com> wrote=
:
> >>
..
> >
> > Ping?
>
> I have queued this series for 6.13.
>

Thanks!


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 13:58:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 13:58:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828238.1243088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t69DZ-0002Wj-UK; Wed, 30 Oct 2024 13:58:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828238.1243088; Wed, 30 Oct 2024 13:58: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 1t69DZ-0002Wc-RM; Wed, 30 Oct 2024 13:58:37 +0000
Received: by outflank-mailman (input) for mailman id 828238;
 Wed, 30 Oct 2024 13:58: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=wQZl=R2=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t69DY-0002WQ-Gc
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 13:58:36 +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 0c2d48c8-96c7-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 14:58:32 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9acafdb745so172493366b.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 06:58:32 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1e0b23b2sm576711766b.4.2024.10.30.06.58.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 06:58:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0c2d48c8-96c7-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmUiLCJoZWxvIjoibWFpbC1lajEteDYyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjBjMmQ0OGM4LTk2YzctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjk2NzEyLjA0NDQ3OSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730296711; x=1730901511; darn=lists.xenproject.org;
        h=in-reply-to:references:from:subject:cc:to:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=V4SZ/TzHGFzJoaz7uI1YwHvLHPV/Y2WS0NvKgFEAdVY=;
        b=IHEWwZ4nRfYfiNWlJeu4FcFp1ouV1RawRjkvoZCrAmYya3oHfy9qVz9kyU3hYdwENP
         oZI073p2MuWKq9QSDQDV6/8v2E5UI6VKIUPTlLRo+hYhDnfhkfRjYG4jsj9asAECnRkH
         UJzbrDUyGeUMSc6yG5Zb8TBTbpGuTalvCXPso=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730296711; x=1730901511;
        h=in-reply-to:references:from:subject:cc:to:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=V4SZ/TzHGFzJoaz7uI1YwHvLHPV/Y2WS0NvKgFEAdVY=;
        b=wR0XJn5qhmLW3NuihpN+TbBxa6dAev6rzycBeZd1PhggAVgVN6BpF1WCUUdPwK+NpQ
         OAbPo5Vxhbte85lXrUbMdwO4RrY8H9ziffdj9DFdoYvJiaKxUiE2MUPwkBHz4SVSIoAT
         pbapyK9AeL396GzYn/4e7z3EEm2ESEoNS5lBWJAHTZdnzzyIOfO6GWFl0r9skLLgPTw6
         TR1yJsvmfjnD1z2XFHPA/VfkfepHdJJLR4tjc0uhdFDVdjuaD6AslGWc4S0jD9k31tXH
         IhgjUpRVIAfK3SZsMeABfkpzcT6K2Wj4pXOgTQPTF/mmM87z0wzS1jv0eXHbG0Bm3SA2
         nVKg==
X-Forwarded-Encrypted: i=1; AJvYcCVoRJVbXh5ep6BvA+mecwHNb6I9ypBrVW2PRLf+Hjmqnx3jQz4HpQXVRYoD4yejqfPaEUpEc63wwQU=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwPpaQFUo9Ws2r50pK4ojTskyRPEka0l7eQfmnnRTJUD5XGoqrP
	Bal7NrMTaXY4JoV0+z28O9ddU8IAJdtd338vJd47Tgwg6xULLu94QNQB+g+SS1c=
X-Google-Smtp-Source: AGHT+IG6owuFhti0+kvaY7XH5hfRcI/nd+u3CtJ0PIniyayuIqeMkBfdHa4BVtu3idTLSaQoT5D1dQ==
X-Received: by 2002:a17:907:78c:b0:a99:f5d8:726 with SMTP id a640c23a62f3a-a9e2b62f094mr521815466b.23.1730296711245;
        Wed, 30 Oct 2024 06:58:31 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 30 Oct 2024 13:58:30 +0000
Message-Id: <D596ZR1TFSWB.2BADAOBFA66CJ@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Julien Grall"
 <julien@xen.org>, <xen-devel@lists.xenproject.org>, "Stefano Stabellini"
 <sstabellini@kernel.org>
Subject: Re: [RFC PATCH 1/6] xen/domctl: Refine grant_opts into
 grant_version
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
X-Mailer: aerc 0.18.2
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
 <20241029181632.69600-2-alejandro.vallejo@cloud.com>
 <e89ec737-9405-4969-aca8-9a89c19c9e4c@suse.com>
In-Reply-To: <e89ec737-9405-4969-aca8-9a89c19c9e4c@suse.com>

Hi,

On Wed Oct 30, 2024 at 9:08 AM GMT, Jan Beulich wrote:
> On 29.10.2024 19:16, Alejandro Vallejo wrote:
> > grant_opts is overoptimizing for space packing in a hypercall that
> > doesn't warrant the effort. Tweak the ABI without breaking it in order
> > to remove the bitfield by extending it to 8 bits.
> >=20
> > Xen only supports little-endian systems, so the transformation from
> > uint32_t to uint8_t followed by 3 octets worth of padding is not an ABI
> > breakage.
> >=20
> > No functional change
> >=20
> > Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
> > ---
> >  xen/include/public/domctl.h | 15 +++++++++++----
> >  1 file changed, 11 insertions(+), 4 deletions(-)
>
> This isn't a complete patch, is it? I expect it'll break the build withou=
t
> users of the field also adjusted.

Indeed. The non-RFC version would have everything folded in one. I just wan=
ted
to avoid Cc-ing everyone in MAINTAINERS for the same single RFC patch. It's
split by (rough) maintained area.

>
> > --- a/xen/include/public/domctl.h
> > +++ b/xen/include/public/domctl.h
> > @@ -90,11 +90,18 @@ struct xen_domctl_createdomain {
> >      int32_t max_grant_frames;
> >      int32_t max_maptrack_frames;
> > =20
> > -/* Grant version, use low 4 bits. */
> > -#define XEN_DOMCTL_GRANT_version_mask    0xf
> > -#define XEN_DOMCTL_GRANT_version(v)      ((v) & XEN_DOMCTL_GRANT_versi=
on_mask)
> > +    /*
> > +     * Maximum grant table version the domain can be configured with.
> > +     *
> > +     * Domains always start with v1 (if CONFIG_GRANT_TABLE) and can be=
 bumped
> > +     * to use up to `max_grant_version` via GNTTABOP_set_version.
> > +     *
> > +     * Must be zero iff !CONFIG_GRANT_TABLE.
> > +     */
> > +    uint8_t max_grant_version;
> > =20
> > -    uint32_t grant_opts;
> > +    /* Unused */
> > +    uint8_t rsvd0[3];
> > =20
> >  /*
> >   * Enable altp2m mixed mode.
>
> Just to mention it: I think while binary compatible, this is still on the=
 edge
> of needing an interface version bump. We may get away without as users of=
 the
> removed identifiers will still notice by way of observing build failures.
>
> Jan

If users are forced to rebuild either way, might as well prevent existing
binaries from breaking. There ought to be a strict distinction between ABI =
and
API compatibility because, while they typically move in lockstep, they don'=
t
always (and this is one such an example).

Regardless, this is a discussion for the final patch if we get there.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 14:02:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 14:02:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828249.1243107 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t69Gy-0004EG-LM; Wed, 30 Oct 2024 14:02:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828249.1243107; Wed, 30 Oct 2024 14:02: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 1t69Gy-0004E9-If; Wed, 30 Oct 2024 14:02:08 +0000
Received: by outflank-mailman (input) for mailman id 828249;
 Wed, 30 Oct 2024 14:02: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=wQZl=R2=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t69Gx-0004E3-Sw
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 14:02: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 8b50b889-96c7-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 15:02:05 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9a3dc089d8so997896966b.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 07:02:05 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f030193sm574756166b.85.2024.10.30.07.02.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 07:02:03 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8b50b889-96c7-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmQiLCJoZWxvIjoibWFpbC1lajEteDYyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjhiNTBiODg5LTk2YzctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjk2OTI1LjQzMzU0NSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730296925; x=1730901725; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=7JpuJQu3WY5NY2VFFN/Lq923sjvm6BVgBvVt779RYlU=;
        b=ChQYtJSyaRMGDc1wbv8l5RqCmyuV2VqerRRRvmhwVnXaSU8fZwuA7liXmJyiECaVGi
         Kkf4kLS77ZazSe+pqGAXjXlMbQ9hhHPtig+/MdOccLzWXPfru85v9/+PtlxdOIbFnsO9
         LoMH6IHYdEXKGFX5EYZ1ZEoQq13ikhU/Rc0l8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730296925; x=1730901725;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=7JpuJQu3WY5NY2VFFN/Lq923sjvm6BVgBvVt779RYlU=;
        b=uc/fG5O4IC72nrmXMm3Xbs0JfCQ7lO+KZPC0E4AltjQmVnw2yEbSyz8NyHRxNrDImb
         bAx3OUvwS+SxNyGGjE7Rg9UyAGJKJ0iGRh0+BqXXDjXVOikegoh2cJEvEOa5tu9vYu8H
         AnVyjN9otD22wLLJK+ZiYdBFui81nYK+Pm4Nq/82mW3vYXF7F1hDUetvj8Mo3x9XvcaN
         8vgY07h/15p8jVewPtxO7aUbNYfpJ2f4aSF/64MPAlzavkrV8HxIb799oa1TcfYUnVeP
         xKPNnIq/9l1FOY83OZZ3zmbpDmc9NrvARWfnMmtd9/KNjh3OVgKX5z7qyaaCNeGdZ7Wf
         Rc9w==
X-Gm-Message-State: AOJu0YxYWQJF12U6D780EpuzSEePUhzQ/Pe5y/jmTz4G9zQ7dA8iJ4N/
	L8b0JfGLSDkTvtyW5BQvvxkgj/kGE+0w2H+u/75Pzkg9dArak/VK4u5/PRbWhhI=
X-Google-Smtp-Source: AGHT+IF0BzqBNmTq/ik/DYT9mv5KjvvIVP15Q32x0ucJH/CkWvJ7k3dPF+v6WLyb8pf8JA8vUAdO5w==
X-Received: by 2002:a17:907:96aa:b0:a8a:8cdb:83a7 with SMTP id a640c23a62f3a-a9de61eb56bmr1589566266b.54.1730296924396;
        Wed, 30 Oct 2024 07:02:04 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 30 Oct 2024 14:02:02 +0000
Message-Id: <D5972GVM3YYS.FUTXSOS8C8D4@cloud.com>
Cc: "Xen-devel" <xen-devel@lists.xenproject.org>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>, "Jan Beulich" <jbeulich@suse.com>, "Julien
 Grall" <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>,
 "Juergen Gross" <jgross@suse.com>, "Anthony PERARD"
 <anthony.perard@vates.tech>, =?utf-8?q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, "Christian Lindig"
 <christian.lindig@citrix.com>, "David Scott" <dave@recoil.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: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive
 types
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Christian Lindig" <christian.lindig@cloud.com>
X-Mailer: aerc 0.18.2
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
 <D9462785-D2AF-4354-8B07-69413E952B88@cloud.com>
In-Reply-To: <D9462785-D2AF-4354-8B07-69413E952B88@cloud.com>

On Wed Oct 30, 2024 at 8:45 AM GMT, Christian Lindig wrote:
>
>
> > On 29 Oct 2024, at 18:16, Alejandro Vallejo <alejandro.vallejo@cloud.co=
m> wrote:
> >=20
> >=20
> > The invariant I'd like to (slowly) introduce and discuss is that fields=
 may
> > have bitflags (e.g: a packed array of booleans indexed by some enumerat=
ed
> > type), but not be mixed with wider fields in the same primitive type. T=
his
> > ensures any field containing an integer of any kind can be referred by =
pointer
> > and treated the same way as any other with regards to sizeof() and the =
like.
>
> Acked-by: Christian Lindig <christian.lindig@cloud.com>

Thanks.

>
>
> Fine with me but the OCaml part is not very exposed to this.

Yeah, OCaml is pretty far from interacting with these details at all.
>
> =E2=80=94 C

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 14:14:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 14:14:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828258.1243116 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t69SS-0006Al-Ok; Wed, 30 Oct 2024 14:14:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828258.1243116; Wed, 30 Oct 2024 14:14: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 1t69SS-0006Ae-Lv; Wed, 30 Oct 2024 14:14:00 +0000
Received: by outflank-mailman (input) for mailman id 828258;
 Wed, 30 Oct 2024 14:13: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=PXHf=R2=cloud.com=frediano.ziglio@srs-se1.protection.inumbo.net>)
 id 1t69SR-0006AY-Ah
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 14:13:59 +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 31703acb-96c9-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 15:13:53 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a9a3dc089d8so999986266b.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 07:13:53 -0700 (PDT)
Received: from fziglio-desktop.. ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a08478bsm576411566b.199.2024.10.30.07.13.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 07:13:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 31703acb-96c9-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzMiLCJoZWxvIjoibWFpbC1lajEteDYzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjMxNzAzYWNiLTk2YzktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjk3NjMzLjc0NjgwMSwic2VuZGVyIjoiZnJlZGlhbm8uemlnbGlvQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730297633; x=1730902433; 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=pN2Oe8S29+yawm9p3c07bqHt4J/ZBZsq4OxQrlPr8Lk=;
        b=UC8cIujV3GWySptI/fnc72Rs/LP+P/sE6WlaXAjIllIp/Zx4JC3SzRTASKg/27bsxr
         y0IMtEay3OKxGNbNokjvyxboF5dqWWh44peFaUIYpze3iGL4ECss8vFbt5d0kiURcH0M
         SZtgj4XqMF1DvXvawUkadskKhCMF9PRXNmPA0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730297633; x=1730902433;
        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=pN2Oe8S29+yawm9p3c07bqHt4J/ZBZsq4OxQrlPr8Lk=;
        b=xPxVakJ1FfDF8fBMD98jTXw8aBr1tvEVb6IGaXDZkAsqwEVwhJuSRsKsH7/sTIe8wm
         c+TYSWMcj+4HHG5PnDsgDtx62xO0H8fEelogJIrMUIh1gN359uvDasQB7Z+Lb7VwvvNq
         qc9wdXFwXYDVzieE57cNlLSVjnjI9w0v7dFB9x3PRMXnwcSwWHA7BpiMjBvP4GthtpZh
         gzhO4RZplSYQoQaP1awyCsAp3ctf+sG0AF187dC/qVch0Wgt1yVn0Zea5rZsl4VqFUk2
         Xtb4gdxMLcefQY9WaYop0JBJ1BJO9+i8d9X3e0Ej5rY8EYm7cC6N7Ue++p8EjRoIrJbH
         Xoig==
X-Gm-Message-State: AOJu0YxThfo2TyxeNUr0XDM9mCupAxdpjbQNDiQEd73slrYAWSJOTjE9
	8KOjsNxk3ROs4sMuP/53/9HJdtrNBKkyGTgYgoi/hkGwubbVbeFP3C4khjPOandtKoVIIDuW+Px
	R
X-Google-Smtp-Source: AGHT+IEyVntG6F08VAiDxqGqAkGcrtFbvRef0kx2BS14NuUqEZEORKN7/iGxKeY7ujaHzGW60OiEiA==
X-Received: by 2002:a17:907:3a96:b0:a9e:1fc7:fc11 with SMTP id a640c23a62f3a-a9e1fc7fd27mr448389566b.40.1730297632720;
        Wed, 30 Oct 2024 07:13:52 -0700 (PDT)
From: Frediano Ziglio <frediano.ziglio@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Frediano Ziglio <frediano.ziglio@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>
Subject: [PATCH v2] x86/setup: Make setup.h header self contained
Date: Wed, 30 Oct 2024 14:13:41 +0000
Message-Id: <20241030141341.2236343-1-frediano.ziglio@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The header uses rangeset structure pointer.
Forward declare the structure.

Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>
---
Changes since v1:
- use structure forward declaration instead of including header.
---
 xen/arch/x86/include/asm/setup.h | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 4874ee8936..d7ed4f4002 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -43,6 +43,7 @@ void *bootstrap_map_bm(const struct boot_module *bm);
 void *bootstrap_map(const module_t *mod);
 void bootstrap_unmap(void);
 
+struct rangeset;
 int remove_xen_ranges(struct rangeset *r);
 
 int cf_check stub_selftest(void);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 14:45:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 14:45:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828267.1243127 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t69ww-0002CW-2o; Wed, 30 Oct 2024 14:45:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828267.1243127; Wed, 30 Oct 2024 14:45: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 1t69wv-0002CP-WF; Wed, 30 Oct 2024 14:45:30 +0000
Received: by outflank-mailman (input) for mailman id 828267;
 Wed, 30 Oct 2024 14:45: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t69wu-0002CJ-Gb
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 14:45:28 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 97734962-96cd-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 15:45:22 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a998a5ca499so893662666b.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 07:45:22 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1dec7dacsm577392766b.9.2024.10.30.07.45.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 07:45:21 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 97734962-96cd-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijk3NzM0OTYyLTk2Y2QtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMjk5NTIyLjY4NTYyNCwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730299522; x=1730904322; 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=AldCFs3TcVsl18Unm2tnnWx5W3hkWuJpwwxBn9s4zoo=;
        b=NfyIPqXhDepn3/ObKNW7ZfyKdsjVJrY0ivMjd3PHLmZncbfHyw7r7eAELkHQFR1lFu
         h+fi+6uYFTjBaJUX7buKuiWvm1V3V0GwWNxeCfPNYKiAJqbcbj2OkMdsj7D4xDjyxn2a
         GiAz9sKTsWJr34HP4L1c6z/ysGMUClEt5vWiI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730299522; x=1730904322;
        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=AldCFs3TcVsl18Unm2tnnWx5W3hkWuJpwwxBn9s4zoo=;
        b=c0vP4X7v1CFLTKiWuwCimELjO47veSDNi3bE8DvnCsD9WreiJgBUffWrM+T/irYZWz
         0SqIiLlz92/+52/Nv7wC1f13VJYOrlJPBQt9leCngyJ3JdJKmSAXFtEasF3Da0L+WPHj
         lO/yUylUlXDLjefq4Yae60tGuVImdBRHPykZOSFXzAubvs7xDF1VXTvCSDcoJ+DVydwZ
         yREa7GYGfF+ZaJblWx4At82Y02T7Udp8ZKioIxeFK2uYtr2XatmktchD/heOFDLYjo1C
         0kw/YhFhJ5QSPH4IFFTLC3YtVcaQbva7rDLvc2i6AQcbxxlRi7KPPupkJ9vD09Y2jO69
         BmaQ==
X-Gm-Message-State: AOJu0YxRZbFvsViHmPyQhZ5E0vOcSrHnZQi74pkW/b8ZocWqmAjleCJX
	Kg9ljvv+v7F3C5j6/fKi7O0DEDtzmW3djG9akzrf8tlCv95KMjWri0VqiECMcGc=
X-Google-Smtp-Source: AGHT+IGmYwAPYJjMSaheZqWzb7hMcrtH02W8ocl2jtahptlANWnXyL78ZnJbbro1SikfQCuf/YsWMA==
X-Received: by 2002:a17:907:3e20:b0:a99:d587:6045 with SMTP id a640c23a62f3a-a9de5d977b4mr1412220266b.19.1730299522015;
        Wed, 30 Oct 2024 07:45:22 -0700 (PDT)
Message-ID: <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
Date: Wed, 30 Oct 2024 14:45:19 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook> <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZyISitvz_K_XtvL5@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 11:03 am, Roger Pau Monné wrote:
> On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
>> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
>>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
>>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
>>>> index b6d9fad56773..78bc9872b09a 100644
>>>> --- a/xen/arch/x86/cpu-policy.c
>>>> +++ b/xen/arch/x86/cpu-policy.c
>>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>>>>  }
>>>>  
>>>> +/*
>>>> + * Guest max policies can have any max leaf/subleaf within bounds.
>>>> + *
>>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
>>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
>>>> + */
>>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
>>>> +}
>>>> +
>>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
>>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
>>>> +{
>>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
>>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
>>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
>>>> +}
>>> I think this what I'm going to ask is future work.  After the
>>> modifications done to the host policy by max functions
>>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
>>> better be done taking into account the contents of the policy, rather
>>> than capping to the host values?
>>>
>>> (note this comment is strictly for guest_common_default_leaves(), the
>>> max version is fine using ARRAY_SIZE).
>> I'm afraid I don't follow.
>>
>> calculate_{pv,hvm}_max_policy() don't modify the host policy.
> Hm, I don't think I've expressed myself clearly, sorry.  Let me try
> again.
>
> calculate_{hvm,pv}_max_policy() extends the host policy by possibly
> setting new features, and such extended policy is then used as the
> base for the PV/HVM default policies.
>
> Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
> having bits set past the max {sub,}leaf in the host policy, as it's
> based in {hvm,pv}_def_cpu_policy that might have such bits set?

Oh, right.

This patch doesn't change anything WRT that.

But I think you're right that we do risk getting into that case (in
principle at least) because of how guest_common_*_feature_adjustment() work.

Furthermore, the bug will typically get hidden because we serialise
based on the max_leaf/subleaf, and will discard feature words outside of
the max_leaf/subleaf bounds.

I suppose we probably want a variation of x86_cpu_featureset_to_policy()
which extends the max_leaf/subleaf based on non-zero values in leaves. 
(This already feels like it's going to be an ugly algorithm.)

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 14:47:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 14:47:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828273.1243137 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t69ys-0002s5-Dx; Wed, 30 Oct 2024 14:47:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828273.1243137; Wed, 30 Oct 2024 14:47: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 1t69ys-0002ry-AZ; Wed, 30 Oct 2024 14:47:30 +0000
Received: by outflank-mailman (input) for mailman id 828273;
 Wed, 30 Oct 2024 14:47: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t69yq-0002ro-Kg
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 14:47:28 +0000
Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com
 [2a00:1450:4864:20::12a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dfdd6f10-96cd-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 15:47:24 +0100 (CET)
Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-539f58c68c5so11220324e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 07:47:24 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9afcef10efsm576528266b.0.2024.10.30.07.47.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 07:47:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dfdd6f10-96cd-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMmEiLCJoZWxvIjoibWFpbC1sZjEteDEyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImRmZGQ2ZjEwLTk2Y2QtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMjk5NjQ0LjA5MDAyOCwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730299643; x=1730904443; 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=pACih1qPM96gRm7S3gt1IA2s2FVUebtztqc1WeDLzkc=;
        b=NYDmxOL2bxfkkECSrEBj5aBnyWtzpwyryo9l4PdL0aTMq+KAADNLtA8MvA5HcyoBGN
         3E3WliQpnf8ZGUujHtkdyA3Qd4JOUzi+/Fv4IYZXSzDadbIdhdy588CIzeJqUwG5T/rE
         oasMDL9IvXWH+gilqfxYx1/6Lh6FT5P/bB5PM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730299643; x=1730904443;
        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=pACih1qPM96gRm7S3gt1IA2s2FVUebtztqc1WeDLzkc=;
        b=jbJTf6SUINHOJLwIgfL171HmHI4t9uHn4OxqOUFxZ6wIcuo6noAr5p2irx7Z3diJC8
         SqPstFGd+IdIy6CmTEipQ015MQU0wMGHZcbxztgnV8mpExCrTmyxq2qwZhPbIIhyabll
         ADyQxB6cnfUg5g1gBah5aLUZwAvi1bC3wjBTh575NO0lS/Ma4ywQhBVpkYY1lEiznoh6
         L2zwQIqKKFvc4OvLtYrSAVKyJVrPAFNaZHlrMOfU0T02viCYBZ5UshI0/PGTTxCvIC/g
         V0ue1Kd5Svt9JjR+W/lsCBlY764cOEKHNjHcNzMDtIcrmNvBxgzTU3bKEXIijLE5ieWY
         jxxA==
X-Forwarded-Encrypted: i=1; AJvYcCV/E+CukcZrvZd4smqZoVbDE19+TjRjh3mlZMOwFmBmJKa5TW4S26cf3kMEwIjHMK71uR7tMsALn5M=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzI+UVy+Z7hZTnX0svtwsmPqW3Kwm7+W1eRzBE3A/2JBKuYvmmh
	yihxHEYJhJH/O8QLWxKyEX4H3gHpMY3o1SlYQNwvRLjMeaYjrgm3QMCx9HhoopY=
X-Google-Smtp-Source: AGHT+IEThMGvMeiMO6AlB6wMn8GoITiB5/rLvfHoh8YIGHSMi9uU9McryaSe1L3i8Xbd5uwiOi/syQ==
X-Received: by 2002:a05:6512:e99:b0:53b:1e9b:b073 with SMTP id 2adb3069b0e04-53b348b9b96mr13725857e87.3.1730299643452;
        Wed, 30 Oct 2024 07:47:23 -0700 (PDT)
Message-ID: <34650431-195b-4096-b520-d48d62e1e3aa@citrix.com>
Date: Wed, 30 Oct 2024 14:47:21 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/setup: Make setup.h header self contained
To: Frediano Ziglio <frediano.ziglio@cloud.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: <20241030141341.2236343-1-frediano.ziglio@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241030141341.2236343-1-frediano.ziglio@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30/10/2024 2:13 pm, Frediano Ziglio wrote:
> The header uses rangeset structure pointer.
> Forward declare the structure.
>
> Signed-off-by: Frediano Ziglio <frediano.ziglio@cloud.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 14:56:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 14:56:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828279.1243147 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6A7k-0004YV-7R; Wed, 30 Oct 2024 14:56:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828279.1243147; Wed, 30 Oct 2024 14:56: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 1t6A7k-0004YO-4e; Wed, 30 Oct 2024 14:56:40 +0000
Received: by outflank-mailman (input) for mailman id 828279;
 Wed, 30 Oct 2024 14:56: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6A7i-0004YI-Tt
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 14:56:38 +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 277a54a6-96cf-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 15:56:33 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5c94c4ad9d8so8411587a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 07:56:33 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f029651sm578961666b.60.2024.10.30.07.56.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 07:56:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 277a54a6-96cf-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MjkiLCJoZWxvIjoibWFpbC1lZDEteDUyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjI3N2E1NGE2LTk2Y2YtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzAwMTkzLjkwODYwOCwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730300193; x=1730904993; 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=m7LaiAJfCAPHCGuzpQNlaRL/ijtMUi8ILqF8Cr0IakM=;
        b=Zg3bUWyTvui8mBlfpWaYVKNlCphUDv5R9auiB2RmiO11LZsbyIUPjSuKLAk0lN7AaC
         iT6CZb7IECr6O/wC786yKj/8Q5QL4/Mj2t+lceQr/ef5L61NXlt8Z7Sp4P+hhDoAmV3X
         VJGAOYi0J15RomD9VOeEsdU2t6a1LfIR5qEmU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730300193; x=1730904993;
        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=m7LaiAJfCAPHCGuzpQNlaRL/ijtMUi8ILqF8Cr0IakM=;
        b=GNT8WG9fTmP+AIWyQPrewN3Y72frg5JF7Ae+2PCtLpSXyeZfDWWh4FSVopzdsycE6U
         AEbGN+9UODPXiod9N0nasRy2QaqWl/0fZU1bxJKhPX7bJdGgW3SVHumKKSpidfO3e9mB
         5PaWuER8RQ+gQUnXLWeE4OfVs1EB32QaaW+tArQYaFgMwV9YjEm234c/QeQln46R6j0c
         GLozqYv+983OgtiprRHwCDi9dl8EY9TYpyUvyoFWU1lkOLRbWGYLdIT9AxIH4hg3BidD
         HIhNxaSRzfB/TT56/QeozBebGnEZ7skJSqv67RTI3zk+PpZtsg1mOwsH+WxBx6CF9jKE
         NyMw==
X-Forwarded-Encrypted: i=1; AJvYcCVNMocLdMYo3ILg8HrJMkx+UxMoSBlvOTjb0NgrgOqaPx3cwteBCAceF/K9mMCy8BDBq/TmTW3+p3k=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxzGNEQDxuMkpxEI/sen6+f7yzOdKfiEpg+ToLGBNOmkO9meFc9
	I2LIWUJv+ROu+Q1WpOhhysqn1jTdNbWsM/7/NzsvUOhXkZkKnyq+OYNMyNGTpqA=
X-Google-Smtp-Source: AGHT+IEsKujy50hODe26Ru2vuhA0WDoBw8aALkWZ0C3qugeLql219HZV7cGMCxGKowtsscPF7JMtsA==
X-Received: by 2002:a17:907:6d15:b0:a9a:dc3:c86e with SMTP id a640c23a62f3a-a9de5d029b1mr1591187666b.11.1730300193222;
        Wed, 30 Oct 2024 07:56:33 -0700 (PDT)
Message-ID: <8d53eeb3-700c-4190-8ad5-1a9682f185bf@citrix.com>
Date: Wed, 30 Oct 2024 14:56:31 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 05/10] tools/libacpi: Use LUT of APIC IDs rather than
 function pointer
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Anthony PERARD <anthony.perard@vates.tech>,
 Juergen Gross <jgross@suse.com>
References: <20241021154600.11745-1-alejandro.vallejo@cloud.com>
 <20241021154600.11745-6-alejandro.vallejo@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241021154600.11745-6-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 21/10/2024 4:45 pm, Alejandro Vallejo wrote:
> diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
> index e01f494b772a..aa50b78dfb89 100644
> --- a/tools/include/xenguest.h
> +++ b/tools/include/xenguest.h
> @@ -22,6 +22,8 @@
>  #ifndef XENGUEST_H
>  #define XENGUEST_H
>  
> +#include "xen/hvm/hvm_info_table.h"
> +
>  #define XC_NUMA_NO_NODE   (~0U)
>  
>  #define XCFLAGS_LIVE      (1 << 0)
> @@ -236,6 +238,9 @@ struct xc_dom_image {
>  #if defined(__i386__) || defined(__x86_64__)
>      struct e820entry *e820;
>      unsigned int e820_entries;
> +
> +    /* LUT mapping cpu id to (x2)APIC ID */
> +    uint32_t cpu_to_apicid[HVM_MAX_VCPUS];

Same note as the previous patch.

This needs to be a plain dynamically allocated array, because it mustn't
use HVM_MAX_VCPUS.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 15:08:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 15:08:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828288.1243157 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6AJT-0006iK-9R; Wed, 30 Oct 2024 15:08:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828288.1243157; Wed, 30 Oct 2024 15: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 1t6AJT-0006iD-6R; Wed, 30 Oct 2024 15:08:47 +0000
Received: by outflank-mailman (input) for mailman id 828288;
 Wed, 30 Oct 2024 15: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=wQZl=R2=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t6AJS-0006i7-Hu
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 15:08:46 +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 d927501f-96d0-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 16:08:41 +0100 (CET)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a7aa086b077so859674766b.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 08:08:41 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b30f58991sm573811366b.159.2024.10.30.08.08.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 08:08:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d927501f-96d0-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmIiLCJoZWxvIjoibWFpbC1lajEteDYyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImQ5Mjc1MDFmLTk2ZDAtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzAwOTIxLjM5OTE5Niwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730300921; x=1730905721; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=6fCPrXdzKU9A5ktmalVD/c3ZJOVao6JDehvFDz9nCs8=;
        b=W+RKsC+ur3ttlhTBFVasdndlJstog2kEhm5CTvUKcvBFB24sK+8rQMFpxUZUsiU8AG
         p9NP2q6hZ21QZ3w9Cu+Uaaw9ueLs5w4VRhYbvNdnkViq0rdIi1VJcXQ/XkAEAWf4bMqy
         fb0ZX0Ptwb1UeBTAvld+5SmI3BEzwt3N6RhxU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730300921; x=1730905721;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=6fCPrXdzKU9A5ktmalVD/c3ZJOVao6JDehvFDz9nCs8=;
        b=jvo/EjCz9iNz1lgf1Pn2Qk3M/V/uv4TVLN5i4EcevZDJ98MIRlkc3dfTh9sOl0Rn6V
         9MkPGYbfRsLTAOvxpJToGwvzejiVJKMdxtpqoiXW82UJlGCxiO64x/I/vaa8aDuuA54H
         zrrW9nRRQgK5zkTzD+SOW8JwFn4kugcq5HBENzoridjWM+LxL4Im/h3XlIFhtpXuj4oC
         pMPa6/0msVEXzakvswAkBNPsQHTsgLsfMVQTQcn6OHZ9s0riFAvo+SXixLaS5A/LXTmo
         //gvfYpahfl7XCQGUIvzvV00mb2KL0+O3Dax5r8eiBPXgnPSjgFCv1oAZsv5D/X+YhVU
         406w==
X-Forwarded-Encrypted: i=1; AJvYcCXSdyZMfWPeKf/xWA6P6xUzb3HMrlQ5MSUqauSL7DyJPy224JA2Kw4eRWBRLiqnhzdwSUVaWt9+AeQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxPygjWaCjE1MspvRI4AOed1SEzIaJsihlPhtGRPT4dWAD8MbUe
	Wiw7D2EdY8y4xmnsP24fvcprppazdHfw2Uv8cEEotxckaiMrGs8XatPg96K8d/A=
X-Google-Smtp-Source: AGHT+IFH0TZyn0X38HyeYobQOJwhcvzogUsAQ52dx7vON1fs7W4gvMkMiwVOk0Hr4yObMBW63rzT3A==
X-Received: by 2002:a17:907:6093:b0:a9a:26a5:d508 with SMTP id a640c23a62f3a-a9e3a5757c8mr323086966b.9.1730300920642;
        Wed, 30 Oct 2024 08:08:40 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 30 Oct 2024 15:08:38 +0000
Message-Id: <D598HGJY330K.3NA7GQLUSJJ9K@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Julien Grall"
 <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>, "Juergen
 Gross" <jgross@suse.com>, "Anthony PERARD" <anthony.perard@vates.tech>,
 =?utf-8?q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, "Christian Lindig"
 <christian.lindig@citrix.com>, "David Scott" <dave@recoil.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>
Subject: Re: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive
 types
X-Mailer: aerc 0.18.2
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
 <3bf067c7-617c-42c0-bf6d-4387d97658ae@suse.com>
In-Reply-To: <3bf067c7-617c-42c0-bf6d-4387d97658ae@suse.com>


In the course of preparing this answer I just noticed that altp2m_opts suff=
ers
from the exact same annoyance, with the exact same fix. I just noticed whil=
e
rebasing my Rust branch.

On Wed Oct 30, 2024 at 9:14 AM GMT, Jan Beulich wrote:
> On 29.10.2024 19:16, Alejandro Vallejo wrote:
> > Non-boolean bitfields in the hypercall ABI make it fairly inconvenient =
to
> > create bindings for any language because (a) they are always ad-hoc and=
 are
> > subject to restrictions regular fields are not (b) require boilerplate =
that
> > regular fields do not and (c) might not even be part of the core langua=
ge,
> > forcing avoidable external libraries into any sort of generic library.
> >=20
> > This patch (it's a series merely to split roughly by maintainer) is one=
 such
> > case that I happened to spot while playing around. It's the grant_versi=
on
> > field, buried under an otherwise empty grant_opts.
> >=20
> > The invariant I'd like to (slowly) introduce and discuss is that fields=
 may
> > have bitflags (e.g: a packed array of booleans indexed by some enumerat=
ed
> > type), but not be mixed with wider fields in the same primitive type. T=
his
> > ensures any field containing an integer of any kind can be referred by =
pointer
> > and treated the same way as any other with regards to sizeof() and the =
like.
>
> While I don't strictly mind, I'm also not really seeing why taking addres=
ses
> or applying sizeof() would be commonly necessary. Can you perhaps provide=
 a
> concrete example of where the present way of dealing with grant max versi=
on
> is getting in the way? After all your use of the term "bitfield" doesn't
> really mean C's understanding of it, so especially (c) above escapes me t=
o a
> fair degree.

Wall of text ahead, but I'll try to stay on point. The rationale should bec=
ome
a lot clearer after I send an RFC series with initial code to autogenerate =
some
hypercall payloads from markup. The biggest question is: Can I create a
definition language such that (a) it precisely represents the Xen ABI and (=
b)
is fully type-safe under modern strongly-typed languages?

I already have a backbone I can define the ABI in, so my options when I hit
some impedance mismatch are:

  1. Change the ABI so it matches better my means of defining it.
  2. Change the means to define so it captures the existing ABI better.

Most of the work I've done has moved in the (2) direction so far, but I fou=
nd a
number of pain points when mapping the existing ABI to Rust that, while not
impossible to work around, are quite annoying for no clear benefit. If
possible, I'd like to simplify the cognitive load involved in defining, usi=
ng
and updating hypercalls rather than bending over backwards to support a
construct that provides no real benefit. IOW: If I can define an ABI that i=
s
_simpler_, it follows that it's also easier to not make mistakes and it's
easier to generate code for it.

The use of packed fields is one such case. Even in C, we create extra macro=
s
for creating a field, modifying it, fetching it, etc. Patches 2-6 are stric=
t
code removals. And even in the most extreme cases the space savings are lar=
gely
irrelevant because the hypercall has a fixed size. We do want to pack _flag=
s_
as otherwise the payload size would explode pretty quickly on hypercalls wi=
th
tons of boolean options, but I'm not aware of that being problematic for wi=
der
subfields (like the grant max version).

Now, being more concrete...

##################################################################
# IDL is simpler if the size is a property of the type
##################################################################

Consider the definition of the (new) max_grant_version type under the IDL I=
'm
working on (it's TOML, but I don't particularly care about which markup we =
end
up using).

  [[enums]]
  name =3D "xen_domaincreate_max_grant_version"
  description =3D "Content of the `max_grant_version` field of the domain c=
reation hypercall."
  typ =3D { tag =3D "u8" }

  [[enums.variants]]
  name =3D "off"
  description =3D "Must be used with gnttab support compiled out"
  value =3D 0

  [[enums.variants]]
  name =3D "v1"
  description =3D "Allow the domain to use up to gnttab_v1"
  value =3D 1

  [[enums.variants]]
  name =3D "v2"
  description =3D "Allow the domain to use up to gnttab_v2"
  value =3D 2

Note that I can define a type being enumerated, can choose its specific
variants and its width is a property of the type itself. With bitfields you=
're
always in a weird position of the width not being part of the type that goe=
s
into it.

Should I need it as a field somewhere, then...

  [[structs.fields]]
  name =3D "max_grant_version"
  description =3D "Maximum grant table version the domain may be bumped to"
  typ =3D { tag =3D "enum", args =3D "xen_domaincreate_max_grant_version" }

... at which point the size of the field is given by an intrinsic property =
of
the type (the typ property on the enums table) I previously defined. It's
extensible, composable and allows me to generate readable code in both C an=
d
Rust.

Should I need to support full bitfields I would require a means of stating =
the
start and end bits of every field, which is very bad for the sanity of whoe=
ver
wants to maintain coherency in the ABI.

##################################################################
# Rust and Go don't like bitfields...
##################################################################

... and neither does C, even if for historic reasons they do exist in the
standard. On a slight tangent, neither Rust nor Go support bitfields in the
core language. This was a deliberate design decision of their respective
designers. I can't speak for Go as I'm not a Go developer, but Rust does ha=
ve a
very well-known, well-supported and very common external crate ("bitflags")
that allows very ergonomic semantics for definition of packed booleans. As =
an
example here's the flags for domain create, as spitted out by the generator=
 I
have.

(comments removed for brevity). This defines a bitmap indexed by the flags
type, represented by a 32bit primitive. It's type-safe from the PoV that I
can't just write 1 << 15 to a variable of this type and expect anything but
screams from the compiler.

  bitflags! {
      #[repr(C)]
      #[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
      pub struct XenDomaincreateFlags: u32 {
          const Hvm =3D 1 << 0;
          const Hap =3D 1 << 1;
          const S3Integrity =3D 1 << 2;
          const OosOff =3D 1 << 3;
          const XsDomain =3D 1 << 4;
          const Iommu =3D 1 << 5;
          const NestedVirt =3D 1 << 6;
          const Vpmu =3D 1 << 7;
      }
  }

This enables callers to have type-safe variables in a pretty ergonomic fash=
ion:

  let flags =3D XenDomainCreateFlags::Hvm |
              XenDomainCreateFlags::Hap |
              XenDomainCreateFlags::Iommu;

and assignments to its related struct would follow regular assignment rules=
.

##################################################################
# IOW
##################################################################

Supporting general bitfields is annoying, even in C. Adding support in IDL =
for
them is a headache if we want the descriptions to help us catch mistakes an=
d
language support is poor using this constructs (at best).

Can we please get rid of them?

>
> > I'd like to have a certain consensus about this general point before go=
ing
> > establishing this restriction in the IDL system I'm working on.
> >=20
> > My preference would be to fold everything into a single patch if we dec=
ide to
> > follow through with this particular case. As I said before, the split i=
s
> > artificial for review.
>
> That's not just a preference, but a requirement, or else the build will b=
reak
> in the middle of the series (harming bisection at the very least).
>
> Jan

Yes, indeed. As I said, I'm more interested in the discussion now rather th=
an
the details of committing it.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 15:13:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 15:13:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828295.1243167 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6ANg-0008Az-Q6; Wed, 30 Oct 2024 15:13:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828295.1243167; Wed, 30 Oct 2024 15:13: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 1t6ANg-0008As-MW; Wed, 30 Oct 2024 15:13:08 +0000
Received: by outflank-mailman (input) for mailman id 828295;
 Wed, 30 Oct 2024 15:13: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t6ANf-0008Am-IN
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 15:13:07 +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 75756673-96d1-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 16:13:03 +0100 (CET)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c9428152c0so7895624a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 08:13:03 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb62c9e60sm5097824a12.57.2024.10.30.08.13.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 08:13:02 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 75756673-96d1-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzYiLCJoZWxvIjoibWFpbC1lZDEteDUzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6Ijc1NzU2NjczLTk2ZDEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzAxMTgzLjY2NzgwMSwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730301183; x=1730905983; 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=VV5Hqfa2BU8MV42PML0suguD/3iV++TqZvLhao7mF9M=;
        b=CAdqs0ijiYnQRGMQGnkkZZ003IfmWdlUzSfBJ2olhTe8W0bnGV3uKa3DG2F6wzz+RN
         p7vdJKFR3aeqvTUvZI/bW7pDoPAIV/5qKHsvG6PcE36+D7Ptf0GCh3A7KH6rKb/lxPYm
         0/waFRv/kgWqXgEOa9wb+doEEUrYI0WLxPs/w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730301183; x=1730905983;
        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=VV5Hqfa2BU8MV42PML0suguD/3iV++TqZvLhao7mF9M=;
        b=puPHf3FLMj+W9xgUamx62AlrO4kEhfLMP0Sd6spMwJ8JOpGpTOufbVNkIWiVRj4j0P
         I3EBGteghscplHbS0VNWqtEdIlkAbG4zA9jMwmO0LvM2WDdUhXiOHsUcNYIug107Df7h
         lmE/LB69R4qksXjFqMSzIGOGgsQaP4c+Zwd2KpNc7DDr++lFVz4cPTA73512Shg0n0hz
         oIwXl3A1IFJsruUfWUrZMcJVQffGQO1R7yCkK7yz34h5NhqnrBbiWsIAquomOMroRWKK
         pGqS/oNuqusTbG13adqBArZg8E2UUdTITIb5PlPsJi/FOB0LOh8kRc7Zd/ZzRO3DZM0r
         5wpA==
X-Gm-Message-State: AOJu0Yz1MmBJb+AJHgsF+oEneEekqYV7j5zOO/4yhnVdzR36WbnbXDqK
	dn2Dmzdqc9yfkL9r9YL68gfwC2g0wPy9bqVu1p7f5C8m/vQKvhnSm02LLIumgQk=
X-Google-Smtp-Source: AGHT+IFT+mdONLG87tyd1oYijy2z4n5YLMt34KgcINFPM6hNVxh6d43TgxLfzY37CztkuElpwtKc6g==
X-Received: by 2002:a05:6402:26ca:b0:5cb:b80a:2283 with SMTP id 4fb4d7f45d1cf-5cbbf949eadmr13152774a12.26.1730301182869;
        Wed, 30 Oct 2024 08:13:02 -0700 (PDT)
Date: Wed, 30 Oct 2024 16:13:00 +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>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
Message-ID: <ZyJM_DLUkqolD7mD@macbook>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook>
 <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook>
 <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>

On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
> On 30/10/2024 11:03 am, Roger Pau Monné wrote:
> > On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
> >> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
> >>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
> >>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> >>>> index b6d9fad56773..78bc9872b09a 100644
> >>>> --- a/xen/arch/x86/cpu-policy.c
> >>>> +++ b/xen/arch/x86/cpu-policy.c
> >>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
> >>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
> >>>>  }
> >>>>  
> >>>> +/*
> >>>> + * Guest max policies can have any max leaf/subleaf within bounds.
> >>>> + *
> >>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
> >>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
> >>>> + */
> >>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
> >>>> +}
> >>>> +
> >>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
> >>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
> >>>> +{
> >>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
> >>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
> >>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
> >>>> +}
> >>> I think this what I'm going to ask is future work.  After the
> >>> modifications done to the host policy by max functions
> >>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
> >>> better be done taking into account the contents of the policy, rather
> >>> than capping to the host values?
> >>>
> >>> (note this comment is strictly for guest_common_default_leaves(), the
> >>> max version is fine using ARRAY_SIZE).
> >> I'm afraid I don't follow.
> >>
> >> calculate_{pv,hvm}_max_policy() don't modify the host policy.
> > Hm, I don't think I've expressed myself clearly, sorry.  Let me try
> > again.
> >
> > calculate_{hvm,pv}_max_policy() extends the host policy by possibly
> > setting new features, and such extended policy is then used as the
> > base for the PV/HVM default policies.
> >
> > Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
> > having bits set past the max {sub,}leaf in the host policy, as it's
> > based in {hvm,pv}_def_cpu_policy that might have such bits set?
> 
> Oh, right.
> 
> This patch doesn't change anything WRT that.

Indeed, didn't intend my comment to block it, just that I think at
some point the logic in guest_common_default_leaves() will need to be
expanded.

> But I think you're right that we do risk getting into that case (in
> principle at least) because of how guest_common_*_feature_adjustment() work.
> 
> Furthermore, the bug will typically get hidden because we serialise
> based on the max_leaf/subleaf, and will discard feature words outside of
> the max_leaf/subleaf bounds.

Yes, once we serialize it for toolstack consumption the leafs will be
implicitly zeroed.

> I suppose we probably want a variation of x86_cpu_featureset_to_policy()
> which extends the max_leaf/subleaf based on non-zero values in leaves. 
> (This already feels like it's going to be an ugly algorithm.)

Hm, I was thinking that we would need to adjust
guest_common_default_leaves() to properly shrink the max {sub,}leaf
fields from the max policies.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 15:59:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 15:59:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828322.1243176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6B6O-0005ir-3Z; Wed, 30 Oct 2024 15:59:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828322.1243176; Wed, 30 Oct 2024 15:59: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 1t6B6O-0005ik-0r; Wed, 30 Oct 2024 15:59:20 +0000
Received: by outflank-mailman (input) for mailman id 828322;
 Wed, 30 Oct 2024 15:59: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=wQZl=R2=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t6B6M-0005ie-Nx
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 15:59:18 +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 e8fe698c-96d7-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 16:59:14 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9aa8895facso1120916466b.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 08:59:14 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f298ef6sm583420766b.136.2024.10.30.08.59.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 08:59:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8fe698c-96d7-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmUiLCJoZWxvIjoibWFpbC1lajEteDYyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImU4ZmU2OThjLTk2ZDctMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzAzOTU0LjQ3NTI3Mywic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730303954; x=1730908754; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=U/8Xyni/EJIwcbRg2uVOJbhX3cCzajhjaR6n70X5snw=;
        b=fcZoF6G3oPPmt2J9Yo8knqL+lj0Z5A4dkN0st3CvuZ79o0YyPyoCAAK8vynxT1NA15
         UNd0xOeQ+B24MMkXl2JNCjf1C6TuoMgiCPqQ3shwjVnsfg4LP0xXZjququMN6zcBzR0e
         zyM94Wxp3SvylolskYiZYxTJ+DdQtTxgLtkS4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730303954; x=1730908754;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=U/8Xyni/EJIwcbRg2uVOJbhX3cCzajhjaR6n70X5snw=;
        b=HdZBPA4exKJo8FF/g0Fxt2F+6P3dhU+vWezd9JtgSKss1TjdMRKVMdcxSBItwudTWm
         Q1do87GdjQkckuNjIaxFUaKzK1Q1Wj7cdqLajBvpSUmQ9SSpQSJDL/ET7sb6cob/LCuz
         WNG3HvNx/okVy7R9mM/xWdZ8i6OrxuOaYf1+xDMqiVGCdKfd7f5d5sZ2eU7e45EmzzEW
         MTGyeTRWDS2/pOJjQhkFKKqIGo7zacIX1Kx3I87HjcDLrFceq2iY2X6U+9jsUqROu31S
         dAxDC4SslkDOgjwYrWfjZ5PoRywM44hNMmc/2NCinyPLPNsmjnkzejZfMlMdWcLy5DC/
         q7Jg==
X-Gm-Message-State: AOJu0Yz9dmNWtt6WgjeFgmiNAJ3sLjdxbxStZNqL3z2TLLjq/O/W/Zp/
	Xeu2nf6NppyUB3fSVkXg6WECvUvjjY16NjCNDQmEiHkzQhSkt68TCJ7YeDWnKg4=
X-Google-Smtp-Source: AGHT+IGWicuB9hlD1mSo/z6ivhFHs2nJdKmS5vPEr+nPabo+hnMeDDGAu2X/KCZ5fPoOQRPW6yjr2Q==
X-Received: by 2002:a17:907:3e10:b0:a9a:7f84:941d with SMTP id a640c23a62f3a-a9de5d659e3mr1619474966b.6.1730303953751;
        Wed, 30 Oct 2024 08:59:13 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Wed, 30 Oct 2024 15:59:12 +0000
Message-Id: <D599K64G9G59.3CGHQABTLBI4B@cloud.com>
Cc: "Xen-devel" <xen-devel@lists.xenproject.org>, "Jan Beulich"
 <JBeulich@suse.com>
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: =?utf-8?q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Andrew Cooper"
 <andrew.cooper3@citrix.com>
X-Mailer: aerc 0.18.2
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook>
 <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook>
 <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
 <ZyJM_DLUkqolD7mD@macbook>
In-Reply-To: <ZyJM_DLUkqolD7mD@macbook>

On Wed Oct 30, 2024 at 3:13 PM GMT, Roger Pau Monn=C3=A9 wrote:
> On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
> > On 30/10/2024 11:03 am, Roger Pau Monn=C3=A9 wrote:
> > > On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
> > >> On 30/10/2024 8:59 am, Roger Pau Monn=C3=A9 wrote:
> > >>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
> > >>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> > >>>> index b6d9fad56773..78bc9872b09a 100644
> > >>>> --- a/xen/arch/x86/cpu-policy.c
> > >>>> +++ b/xen/arch/x86/cpu-policy.c
> > >>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void=
)
> > >>>>      p->platform_info.cpuid_faulting =3D cpu_has_cpuid_faulting;
> > >>>>  }
> > >>>> =20
> > >>>> +/*
> > >>>> + * Guest max policies can have any max leaf/subleaf within bounds=
.
> > >>>> + *
> > >>>> + * - Some incoming VMs have a larger-than-necessary feat max_subl=
eaf.
> > >>>> + * - Some VMs we'd like to synthesise leaves not present on the h=
ost.
> > >>>> + */
> > >>>> +static void __init guest_common_max_leaves(struct cpu_policy *p)
> > >>>> +{
> > >>>> +    p->basic.max_leaf       =3D ARRAY_SIZE(p->basic.raw) - 1;
> > >>>> +    p->feat.max_subleaf     =3D ARRAY_SIZE(p->feat.raw) - 1;
> > >>>> +    p->extd.max_leaf        =3D 0x80000000U + ARRAY_SIZE(p->extd.=
raw) - 1;
> > >>>> +}
> > >>>> +
> > >>>> +/* Guest default policies inherit the host max leaf/subleaf setti=
ngs. */
> > >>>> +static void __init guest_common_default_leaves(struct cpu_policy =
*p)
> > >>>> +{
> > >>>> +    p->basic.max_leaf       =3D host_cpu_policy.basic.max_leaf;
> > >>>> +    p->feat.max_subleaf     =3D host_cpu_policy.feat.max_subleaf;
> > >>>> +    p->extd.max_leaf        =3D host_cpu_policy.extd.max_leaf;
> > >>>> +}
> > >>> I think this what I'm going to ask is future work.  After the
> > >>> modifications done to the host policy by max functions
> > >>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustme=
nts
> > >>> better be done taking into account the contents of the policy, rath=
er
> > >>> than capping to the host values?
> > >>>
> > >>> (note this comment is strictly for guest_common_default_leaves(), t=
he
> > >>> max version is fine using ARRAY_SIZE).
> > >> I'm afraid I don't follow.
> > >>
> > >> calculate_{pv,hvm}_max_policy() don't modify the host policy.
> > > Hm, I don't think I've expressed myself clearly, sorry.  Let me try
> > > again.
> > >
> > > calculate_{hvm,pv}_max_policy() extends the host policy by possibly
> > > setting new features, and such extended policy is then used as the
> > > base for the PV/HVM default policies.
> > >
> > > Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
> > > having bits set past the max {sub,}leaf in the host policy, as it's
> > > based in {hvm,pv}_def_cpu_policy that might have such bits set?
> >=20
> > Oh, right.
> >=20
> > This patch doesn't change anything WRT that.
>
> Indeed, didn't intend my comment to block it, just that I think at
> some point the logic in guest_common_default_leaves() will need to be
> expanded.
>
> > But I think you're right that we do risk getting into that case (in
> > principle at least) because of how guest_common_*_feature_adjustment() =
work.
> >=20
> > Furthermore, the bug will typically get hidden because we serialise
> > based on the max_leaf/subleaf, and will discard feature words outside o=
f
> > the max_leaf/subleaf bounds.
>
> Yes, once we serialize it for toolstack consumption the leafs will be
> implicitly zeroed.
>
> > I suppose we probably want a variation of x86_cpu_featureset_to_policy(=
)
> > which extends the max_leaf/subleaf based on non-zero values in leaves.=
=C2=A0
> > (This already feels like it's going to be an ugly algorithm.)
>
> Hm, I was thinking that we would need to adjust
> guest_common_default_leaves() to properly shrink the max {sub,}leaf
> fields from the max policies.

That would be tricky in case we end up with subleafs that are strictly
populated at runtime. Xen would have no way of knowing whether that's meant=
 to
be implemented or not. It seems safer to raise the max if we find a non-zer=
o
leaves higher than the current max.

The algorithm is probably quite simple for static data, as it's merely
traversing the raw arrays and keeping track of the last non-zero leaf.

>
> Thanks, Roger.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 16:30:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 16:30:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828335.1243187 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Baf-0002o3-D3; Wed, 30 Oct 2024 16:30:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828335.1243187; Wed, 30 Oct 2024 16:30: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 1t6Baf-0002nw-AP; Wed, 30 Oct 2024 16:30:37 +0000
Received: by outflank-mailman (input) for mailman id 828335;
 Wed, 30 Oct 2024 16:30: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t6Bad-0002nq-ND
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 16:30:35 +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 47dfbcb1-96dc-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 17:30:32 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a99ebb390a5so206023066b.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 09:30:32 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a07f804sm581381166b.188.2024.10.30.09.30.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 09:30:30 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47dfbcb1-96dc-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQ3ZGZiY2IxLTk2ZGMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzA1ODMyLjA2NTI4Miwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730305831; x=1730910631; 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=2PUkZIdOinA7Whpj0V0Ve+QM+yNTkP+c5sGRcWHa3O4=;
        b=J6YwYJCXwiUEXs3iRsGpAQiqkhwGstkL+bzqyVF0lJIgiPInJRJnI2yagC2ieYjPjO
         tBZ7KR4nvzv7vc1GweJ6H0FTfXcKpBMZ+29MdbNUadSdhwYH9RaBSSvTNgaqHaAsZjpT
         PRVPmIQhgT86ii1CaL3OSSy1Ylbohp5/u2CMs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730305831; x=1730910631;
        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=2PUkZIdOinA7Whpj0V0Ve+QM+yNTkP+c5sGRcWHa3O4=;
        b=UwqtiRvu0+bzzIQCRJ7ViZPkkV151atIsQ2zddUXpH+EMfIW/pt5BbI2TtCmhbPF7i
         s7NkVDYarlHU4a/i94vMrNhx/96Sf0ENO1oFwPUZUP27fBQ5uVIzSbKWf0rIYn4dU3rC
         /b7oG3F+fTLih0lVciWOhMUu5jLbjOshgCX/UHuKk1U7+Klz86tbMO2RqmDsg9sg40bB
         54JscMqRTs45+XAYrfMZiqGe6jiN1Nvk98DABTjEjmUutiQP9pJUQyEIvrMqk9bXTAl5
         J0XlZfWZtxKuZSzE4be3gh0aan8VoXEutU6a1pcrIfVLIDK41/pSe3wo/FyzGB97jdYC
         jKBA==
X-Forwarded-Encrypted: i=1; AJvYcCWmnN7rm28tP9LbXFWlAWG9yEvraXPjcjfSrwMNmMXSaA5UfUkwtGRP57xr6XNv+CljUfz1RTegzIU=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw7bbfXyBbgJyPqGoH3zwpsmZLQULccdyKjHWDlDbIfTEfuZFAh
	oEi+Ru5a1BJd/uigXWGk1NFe3UwyIRRc5iFub4vLwa4zDVcTsKWDSESRNpIwVDg=
X-Google-Smtp-Source: AGHT+IFWuoR7rs+V9qpDusYF3YcVnJJXj6m4HCK+/XyeFC0N695oCy7sraqbd+g2/QIgxkK9jEsX4Q==
X-Received: by 2002:a17:907:3f19:b0:a9a:babb:b916 with SMTP id a640c23a62f3a-a9e2b5a151bmr703249166b.15.1730305830877;
        Wed, 30 Oct 2024 09:30:30 -0700 (PDT)
Date: Wed, 30 Oct 2024 17:30:28 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Jan Beulich <JBeulich@suse.com>
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
Message-ID: <ZyJfJD-kxq_lwB7Z@macbook>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook>
 <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook>
 <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
 <ZyJM_DLUkqolD7mD@macbook>
 <D599K64G9G59.3CGHQABTLBI4B@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <D599K64G9G59.3CGHQABTLBI4B@cloud.com>

On Wed, Oct 30, 2024 at 03:59:12PM +0000, Alejandro Vallejo wrote:
> On Wed Oct 30, 2024 at 3:13 PM GMT, Roger Pau Monné wrote:
> > On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
> > > On 30/10/2024 11:03 am, Roger Pau Monné wrote:
> > > > On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
> > > >> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
> > > >>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
> > > >>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> > > >>>> index b6d9fad56773..78bc9872b09a 100644
> > > >>>> --- a/xen/arch/x86/cpu-policy.c
> > > >>>> +++ b/xen/arch/x86/cpu-policy.c
> > > >>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
> > > >>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
> > > >>>>  }
> > > >>>>  
> > > >>>> +/*
> > > >>>> + * Guest max policies can have any max leaf/subleaf within bounds.
> > > >>>> + *
> > > >>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
> > > >>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
> > > >>>> + */
> > > >>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
> > > >>>> +}
> > > >>>> +
> > > >>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
> > > >>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
> > > >>>> +{
> > > >>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
> > > >>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
> > > >>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
> > > >>>> +}
> > > >>> I think this what I'm going to ask is future work.  After the
> > > >>> modifications done to the host policy by max functions
> > > >>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
> > > >>> better be done taking into account the contents of the policy, rather
> > > >>> than capping to the host values?
> > > >>>
> > > >>> (note this comment is strictly for guest_common_default_leaves(), the
> > > >>> max version is fine using ARRAY_SIZE).
> > > >> I'm afraid I don't follow.
> > > >>
> > > >> calculate_{pv,hvm}_max_policy() don't modify the host policy.
> > > > Hm, I don't think I've expressed myself clearly, sorry.  Let me try
> > > > again.
> > > >
> > > > calculate_{hvm,pv}_max_policy() extends the host policy by possibly
> > > > setting new features, and such extended policy is then used as the
> > > > base for the PV/HVM default policies.
> > > >
> > > > Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
> > > > having bits set past the max {sub,}leaf in the host policy, as it's
> > > > based in {hvm,pv}_def_cpu_policy that might have such bits set?
> > > 
> > > Oh, right.
> > > 
> > > This patch doesn't change anything WRT that.
> >
> > Indeed, didn't intend my comment to block it, just that I think at
> > some point the logic in guest_common_default_leaves() will need to be
> > expanded.
> >
> > > But I think you're right that we do risk getting into that case (in
> > > principle at least) because of how guest_common_*_feature_adjustment() work.
> > > 
> > > Furthermore, the bug will typically get hidden because we serialise
> > > based on the max_leaf/subleaf, and will discard feature words outside of
> > > the max_leaf/subleaf bounds.
> >
> > Yes, once we serialize it for toolstack consumption the leafs will be
> > implicitly zeroed.
> >
> > > I suppose we probably want a variation of x86_cpu_featureset_to_policy()
> > > which extends the max_leaf/subleaf based on non-zero values in leaves. 
> > > (This already feels like it's going to be an ugly algorithm.)
> >
> > Hm, I was thinking that we would need to adjust
> > guest_common_default_leaves() to properly shrink the max {sub,}leaf
> > fields from the max policies.
> 
> That would be tricky in case we end up with subleafs that are strictly
> populated at runtime.

Maybe we need a way to expose {sub,}leaf minimum value requirements in
the gen-cpuid.py logic, so we can tie minimum required {sub,}leaf
values to features?

I would like to think that those run-time populated leafs will be tied
to features, as to have a way to account for them.

> Xen would have no way of knowing whether that's meant to
> be implemented or not. It seems safer to raise the max if we find a non-zero
> leaves higher than the current max.

Raising might be better, TBH I didn't give the exact solution much
though.  But we need to be aware that setting it to the host value is
likely something we should look into fixing, otherwise subtle bugs
might occur.

Maybe add a comment to guest_common_default_leaves() in that regard?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 16:50:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 16:50:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828348.1243196 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Bu4-0005k0-4O; Wed, 30 Oct 2024 16:50:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828348.1243196; Wed, 30 Oct 2024 16:50: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 1t6Bu4-0005jt-1f; Wed, 30 Oct 2024 16:50:40 +0000
Received: by outflank-mailman (input) for mailman id 828348;
 Wed, 30 Oct 2024 16:50: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=dhn2=R2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t6Bu2-0005jn-Kl
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 16:50:38 +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 14f39e98-96df-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 17:50:34 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2fb599aac99so65455201fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 09:50:34 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-2fd4ae6e45dsm3190541fa.27.2024.10.30.09.50.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 09:50:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 14f39e98-96df-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMmYiLCJoZWxvIjoibWFpbC1sajEteDIyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjE0ZjM5ZTk4LTk2ZGYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzA3MDM0LjYwMTgwNiwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730307034; x=1730911834; 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=h6H/kioEhec/tDUlT+W27Gdu1/z76mhnSlCWsrKvXhI=;
        b=h4vatExKix4YX8tqQGGUoXL3C1FHbJw+cWVhSaq0pNMA7h3WY1RSifbaHnQFKN7x1V
         a0bftidXZN5nrOyLmC10lmrdOSbcedMcIM0B7cCOsi4tz6YbXgaRdQ5xLXAgR4yV4Nbf
         SvTWHXo5wqEcIYjjJ8lGOHH7eGr8MBNR5vBj8vBpJNSzdJHYEhvZudUA2Yzy31p0ypJV
         bYxXTTkv3YHiqSuRAg0aGMQZ6SLfQDOjmQTeyGHvk5J747JzjCS8T6FKVtf8Y782SQoP
         AEiqPpXc8enQtxaMKhkCPSLQFgx0G7XYsGv1S3ZGos1By29uom67MI848orchIYmxYpP
         g56Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730307034; x=1730911834;
        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=h6H/kioEhec/tDUlT+W27Gdu1/z76mhnSlCWsrKvXhI=;
        b=TP5+YhSHzWDqX2OXobdv6xDfiKY8s2exu53tVGuz7K187fMqjFpQdQwQsSWuVdRUvl
         fTub5KvuqzMz6rHAxOOCftI8U+TAMQMJQFVln4KMpWGu+E8CousWxXOPt50wztBF16Zi
         Wmufxmg3R491aLUh8emZszwAfH0y6y32ncPyX36BGMwZMjyGeikPo8BHOf7nfXP3CA4L
         yHa6tVeSXNAYLl58QXeV87cfBURncci2+PPAiFZeVjGHk/ru3QtWgDNxFv+iWZirPgJx
         DzIn0xno6ZZ38Km2kS3M9TIkX56T4ZqaXznMCYHAv+mMsOgZta9M2KIkjHA/gF0TxHrm
         yD1w==
X-Forwarded-Encrypted: i=1; AJvYcCVaYpuh+SEtjK5cf88Vd/JOmdb047chtwe/tFA7NUpo8fHJvFmAJnZGqTLMdnTN8QPVM5cAjF5+P+o=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw7J1LY1rawEF0VJ3ZGsNcPYb4zt+dVNKfkQTPexfC7H+RZUvyh
	cW8vyndrg9QAxMr9+Jc23Y0W9zmufQ09h5KehDJteba4PIbDIjBmlh3OHw==
X-Google-Smtp-Source: AGHT+IEQDwR96tIXboKLMfkD6FIugHGTHkUkHz+Otn+snajhKpb7WLCX+djfne0WlfEwX3gG7JcIFQ==
X-Received: by 2002:a05:651c:1549:b0:2fb:2980:6e3d with SMTP id 38308e7fff4ca-2fcbdf9d736mr72063861fa.15.1730307033400;
        Wed, 30 Oct 2024 09:50:33 -0700 (PDT)
Message-ID: <76fc4999eded2ce74fe73bc81998e92147cf802a.camel@gmail.com>
Subject: Re: [PATCH v2 1/3] xen/riscv: introduce setup_mm()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini	 <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Wed, 30 Oct 2024 17:50:32 +0100
In-Reply-To: <8ec6463e-40a8-4d60-b4c2-ea964a06c572@suse.com>
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
	 <28240dcfc04a11237db553c4e0ecb372aa0fe9ac.1729697111.git.oleksii.kurochko@gmail.com>
	 <8ec6463e-40a8-4d60-b4c2-ea964a06c572@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.54.1 (3.54.1-1.fc41app1) 
MIME-Version: 1.0

On Wed, 2024-10-30 at 11:25 +0100, Jan Beulich wrote:
> On 23.10.2024 17:50, Oleksii Kurochko wrote:
> > Introduce the implementation of setup_mm(), which includes:
> > 1. Adding all free regions to the boot allocator, as memory is
> > needed
> > =C2=A0=C2=A0 to allocate page tables used for frame table mapping.
> > 2. Calculating RAM size and the RAM end address.
> > 3. Setting up direct map mappings from each RAM bank and initialize
> > =C2=A0=C2=A0 directmap_virt_start (also introduce XENHEAP_VIRT_START wh=
ich is
> > =C2=A0=C2=A0 defined as directmap_virt_start) to be properly aligned wi=
th RAM
> > =C2=A0=C2=A0 start to use more superpages to reduce pressure on the TLB=
.
> > 4. Setting up frame table mappings from physical address 0 to
> > ram_end
> > =C2=A0=C2=A0 to simplify mfn_to_page() and page_to_mfn() conversions.
> > 5. Setting up total_pages and max_page.
> >=20
> > Update virt_to_maddr() to use introduced XENHEAP_VIRT_START.
> >=20
> > Implement maddr_to_virt() function to convert a machine address
> > to a virtual address. This function is specifically designed to be
> > used
> > only for the DIRECTMAP region, so a check has been added to ensure
> > that
> > the address does not exceed DIRECTMAP_SIZE.
>=20
> I'm unconvinced by this. Conceivably the function could be used on
> "imaginary" addresses, just to calculate abstract positions or e.g.
> deltas. At the same time I'm also not going to insist on the removal
> of
> that assertion, so long as it doesn't trigger.
>=20
> > After the introduction of maddr_to_virt() the following linkage
> > error starts
> > to occur and to avoid it share_xen_page_with_guest() stub is added:
> > =C2=A0 riscv64-linux-gnu-ld: prelink.o: in function `tasklet_kill':
> > =C2=A0 /build/xen/common/tasklet.c:176: undefined reference to
> > =C2=A0=C2=A0=C2=A0=C2=A0 `share_xen_page_with_guest'
> > =C2=A0 riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol
> > `share_xen_page_with_guest'
> > =C2=A0=C2=A0=C2=A0 isn't defined riscv64-linux-gnu-ld: final link faile=
d: bad
> > value
> >=20
> > Despite the linkger fingering tasklet.c, it's trace.o which has the
> > undefined
> > refenrece:
> > =C2=A0 $ find . -name \*.o | while read F; do nm $F | grep
> > share_xen_page_with_guest &&
> > =C2=A0=C2=A0=C2=A0 echo $F; done
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 U share_xen_page_with_g=
uest
> > =C2=A0=C2=A0=C2=A0 ./xen/common/built_in.o
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 U share_xen_page_with_g=
uest
> > =C2=A0=C2=A0=C2=A0 ./xen/common/trace.o
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 U share_xen_page_with_g=
uest
> > =C2=A0=C2=A0=C2=A0 ./xen/prelink.o
> >=20
> > Looking at trace.i, there is call of share_xen_page_with_guest()
> > but in case of
> > when maddr_to_virt() is defined as "return NULL" compiler optimizes
> > the part of
> > common/trace.c code where share_xen_page_with_priviliged_guest() is
> > called
> > ( there is no any code in dissambled common/trace.o ) so there is
> > no real call
> > of share_xen_page_with_priviliged_guest().
>=20
> I don't think it's the "return NULL", but rather BUG_ON()'s (really
> BUG()'s)
> unreachable(). Not the least because the function can't validly
> return NULL,
> and hence callers have no need to check for NULL.
>=20
> > @@ -25,8 +27,11 @@
> > =C2=A0
> > =C2=A0static inline void *maddr_to_virt(paddr_t ma)
> > =C2=A0{
> > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > -=C2=A0=C2=A0=C2=A0 return NULL;
> > +=C2=A0=C2=A0=C2=A0 unsigned long va_offset =3D maddr_to_directmapoff(m=
a);
> > +
> > +=C2=A0=C2=A0=C2=A0 ASSERT(va_offset < DIRECTMAP_SIZE);
> > +
> > +=C2=A0=C2=A0=C2=A0 return (void *)(XENHEAP_VIRT_START + va_offset);
> > =C2=A0}
>=20
> I'm afraid I'm not following why this uses XENHEAP_VIRT_START, when
> it's all about the directmap. I'm in trouble with XENHEAP_VIRT_START
> in the first place: You don't have a separate "heap" virtual address
> range, do you?
The name may not be ideal for RISC-V. I borrowed it from Arm, intending
to account for cases where the directmap virtual start might not align
with DIRECTMAP_VIRT_START due to potential adjustments for superpage
mapping.
And my understanding is that XENHEAP =3D=3D DIRECTMAP in case of Arm64.

Let's discuss below whether XENHEAP_VIRT_START is necessary, as there
are related questions connected to it.

>=20
> > @@ -37,9 +42,9 @@ static inline void *maddr_to_virt(paddr_t ma)
> > =C2=A0 */
> > =C2=A0static inline unsigned long virt_to_maddr(unsigned long va)
> > =C2=A0{
> > -=C2=A0=C2=A0=C2=A0 if ((va >=3D DIRECTMAP_VIRT_START) &&
> > +=C2=A0=C2=A0=C2=A0 if ((va >=3D XENHEAP_VIRT_START) &&
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (va < (DIRECTMAP_VIRT_=
START + DIRECTMAP_SIZE)))
> > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return directmapoff_to_madd=
r(va - DIRECTMAP_VIRT_START);
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return directmapoff_to_madd=
r(va - XENHEAP_VIRT_START);
>=20
> Same concern here then.
>=20
> > @@ -423,3 +424,123 @@ void * __init early_fdt_map(paddr_t
> > fdt_paddr)
> > =C2=A0
> > =C2=A0=C2=A0=C2=A0=C2=A0 return fdt_virt;
> > =C2=A0}
> > +
> > +#ifndef CONFIG_RISCV_32
>=20
> I'd like to ask that you be more selective with this #ifdef (or omit
> it
> altogether here). setup_mm() itself, for example, looks good for any
> mode.
Regarding setup_mm() as they have pretty different implementations for
32 and 64 bit versions.

> Like does ...
>=20
> > +#define ROUNDDOWN(addr, size)=C2=A0 ((addr) & ~((size) - 1))
>=20
> ... this #define. Then again this macro may better be placed in
> xen/macros.h anyway, next to ROUNDUP().
I will put it there. It was put in arch specific code as for such long
existence of Xen project no one introduce that so I decided that it is
only one specific case thereby no real need to go to common.

>=20
> > +=C2=A0=C2=A0=C2=A0 frametable_size =3D ROUNDUP(frametable_size, MB(2))=
;
> > +=C2=A0=C2=A0=C2=A0 base_mfn =3D alloc_boot_pages(frametable_size >> PA=
GE_SHIFT,
> > PFN_DOWN(MB(2)));
>=20
> The 2Mb aspect wants a (brief) comment, imo.
>=20
> > +=C2=A0=C2=A0=C2=A0 if ( map_pages_to_xen(FRAMETABLE_VIRT_START, base_m=
fn,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 PFN_DOWN(frametable_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 PAGE_HYPERVISOR_RW) )
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 panic("Unable to setup the =
frametable mappings\n");
> > +
> > +=C2=A0=C2=A0=C2=A0 memset(&frame_table[0], 0, nr_mfns * sizeof(struct
> > page_info));
> > +=C2=A0=C2=A0=C2=A0 memset(&frame_table[nr_mfns], -1,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 frametabl=
e_size - (nr_mfns * sizeof(struct
> > page_info)));
>=20
> Here (see comments on v1) you're still assuming ps =3D=3D 0.
Do you refer to ?
```
> +/* Map a frame table to cover physical addresses ps through pe */
> +static void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
> +{
> +    unsigned long nr_mfns =3D mfn_x(mfn_add(maddr_to_mfn(pe), -1)) -

This looks to be accounting for a partial page at the end.

> +                            mfn_x(maddr_to_mfn(ps)) + 1;

Whereas this doesn't do the same at the start. The sole present caller
passes 0, so that's going to be fine for the time being. Yet it's a
latent pitfall. I'd recommend to either drop the function parameter, or
to deal with it correctly right away.
```
And I've added aligned_ps to cover the case that ps could be not page
aligned.

Or are you refering to 0 in memset(&frame_table[0],...)?

>=20
> > +/* Map the region in the directmap area. */
> > +static void __init setup_directmap_mappings(unsigned long
> > base_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 unsigned long nr_mfns)
> > +{
> > +=C2=A0=C2=A0=C2=A0 int rc;
> > +
> > +=C2=A0=C2=A0=C2=A0 /* First call sets the directmap physical and virtu=
al offset.
> > */
> > +=C2=A0=C2=A0=C2=A0 if ( mfn_eq(directmap_mfn_start, INVALID_MFN) )
> > +=C2=A0=C2=A0=C2=A0 {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 directmap_mfn_start =3D _mf=
n(base_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 * The base address ma=
y not be aligned to the second level
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * size (e.g. 1GB when=
 using 4KB pages). This would
> > prevent
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * superpage mappings =
for all the regions because the
> > virtual
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * address and machine=
 address should both be suitably
> > aligned.
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * Prevent that by off=
setting the start of the directmap
> > virtual
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * address.
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 directmap_virt_start =3D DI=
RECTMAP_VIRT_START +
> > pfn_to_paddr(base_mfn);
>=20
> Don't you need to mask off top bits of the incoming MFN here, or else
> you
> may waste a huge part of direct map space?
Yes, it will result in a loss of direct map space, but we still have a
considerable amount available in Sv39 mode and higher modes. The
largest RAM_START I see currently is 0x1000000000, which means we would
lose 68 GB. However, our DIRECTMAP_SIZE is 308 GB, so there is still
plenty of free space available, and we can always increase
DIRECTMAP_SIZE since we have a lot of free virtual address space in
Sv39.

That said, I=E2=80=99m not insisting on this approach.
My suggestion was to handle the addition and subtraction of
directmap_mfn_start in maddr_to_virt() and virt_to_maddr():
```
+extern mfn_t directmap_mfn_start;
 extern vaddr_t directmap_virt_start;
=20
 #define pfn_to_paddr(pfn) ((paddr_t)(pfn) << PAGE_SHIFT)
@@ -31,7 +32,7 @@ static inline void *maddr_to_virt(paddr_t ma)
=20
     ASSERT(va_offset < DIRECTMAP_SIZE);
=20
-    return (void *)(XENHEAP_VIRT_START + va_offset);
+    return (void *)(XENHEAP_VIRT_START -
(mfn_to_maddr(directmap_mfn_start)) + va_offset);
 }
=20
 /*
@@ -44,7 +45,7 @@ static inline unsigned long virt_to_maddr(unsigned
long va)
 {
     if ((va >=3D XENHEAP_VIRT_START) &&
         (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
-        return directmapoff_to_maddr(va - XENHEAP_VIRT_START);
+        return directmapoff_to_maddr(va - XENHEAP_VIRT_START +
mfn_to_maddr(directmap_mfn_start));
=20
     BUILD_BUG_ON(XEN_VIRT_SIZE !=3D MB(2));
     ASSERT((va >> (PAGETABLE_ORDER + PAGE_SHIFT)) =3D=3D
diff --git a/xen/arch/riscv/mm.c b/xen/arch/riscv/mm.c
index 262cec811e..7ef9db2363 100644
--- a/xen/arch/riscv/mm.c
+++ b/xen/arch/riscv/mm.c
@@ -450,7 +450,7 @@ static void __init
setup_frametable_mappings(paddr_t ps, paddr_t pe)
 }
=20
-static mfn_t __ro_after_init directmap_mfn_start =3D
INVALID_MFN_INITIALIZER;
+mfn_t __ro_after_init directmap_mfn_start =3D INVALID_MFN_INITIALIZER;
 vaddr_t __ro_after_init directmap_virt_start;
=20
 /* Map the region in the directmap area. */
@@ -462,6 +462,8 @@ static void __init
setup_directmap_mappings(unsigned long base_mfn,
     /* First call sets the directmap physical and virtual offset. */
     if ( mfn_eq(directmap_mfn_start, INVALID_MFN) )
     {
+        unsigned long mfn_gb =3D base_mfn & ~XEN_PT_LEVEL_SIZE(2);
+
         directmap_mfn_start =3D _mfn(base_mfn);
=20
         /*
@@ -473,7 +475,8 @@ static void __init
setup_directmap_mappings(unsigned long base_mfn,
          * Prevent that by offsetting the start of the directmap
virtual
          * address.
          */
-        directmap_virt_start =3D DIRECTMAP_VIRT_START +
pfn_to_paddr(base_mfn);
+        directmap_virt_start =3D DIRECTMAP_VIRT_START  +
+            (base_mfn - mfn_gb) * PAGE_SIZE; /*+
pfn_to_paddr(base_mfn)*/;
```

Finally, regarding masking off the top bits of mfn, I'm not entirely
clear on how this should work. If I understand correctly, if I mask off
certain top bits in mfn, then I would need to unmask those same top
bits in maddr_to_virt() and virt_to_maddr(). Is that correct?

Another point I=E2=80=99m unclear on is which specific part of the top bits
should be masked.

If you could explain this to me, I would really appreciate it, and I'll
be happy to use the masking approach.

>=20
> > +}
> > +
> > +/*
> > + * Setup memory management
> > + *
> > + * RISC-V 64 has a large virtual address space (the minimum
> > supported
> > + * MMU mode is Sv39, which provides TBs of VA space).
>=20
> Is it really TBs? According to my math you'd need more than 40 bits
> to
> map a single Tb (alongside other stuff).
I accidentally calculated it as the first 40 bits (from bits 0 to 39)
due to the "39" in Sv39. However, in reality, it=E2=80=99s actually 39 bits
(from bits 0 to 38), so it represents less than TBs, only GBs of
virtual address space.

>=20
> > + */
> > +void __init setup_mm(void)
> > +{
> > +=C2=A0=C2=A0=C2=A0 const struct membanks *banks =3D bootinfo_get_mem()=
;
> > +=C2=A0=C2=A0=C2=A0 paddr_t ram_start =3D INVALID_PADDR;
> > +=C2=A0=C2=A0=C2=A0 paddr_t ram_end =3D 0;
> > +=C2=A0=C2=A0=C2=A0 paddr_t ram_size =3D 0;
> > +=C2=A0=C2=A0=C2=A0 unsigned int i;
> > +
> > +=C2=A0=C2=A0=C2=A0 /*
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * We need some memory to allocate the page-ta=
bles used for
> > the directmap
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * mappings. But some regions may contain memo=
ry already
> > allocated
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * for other uses (e.g. modules, reserved-memo=
ry...).
> > +=C2=A0=C2=A0=C2=A0=C2=A0 *
> > +=C2=A0=C2=A0=C2=A0=C2=A0 * For simplicity, add all the free regions in=
 the boot
> > allocator.
> > +=C2=A0=C2=A0=C2=A0=C2=A0 */
> > +=C2=A0=C2=A0=C2=A0 populate_boot_allocator();
> > +
> > +=C2=A0=C2=A0=C2=A0 total_pages =3D 0;
> > +
> > +=C2=A0=C2=A0=C2=A0 for ( i =3D 0; i < banks->nr_banks; i++ )
> > +=C2=A0=C2=A0=C2=A0 {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const struct membank *bank =
=3D &banks->bank[i];
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 paddr_t bank_end =3D bank->=
start + bank->size;
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_size +=3D ROUNDDOWN(ban=
k->size, PAGE_SIZE);
>=20
> As before - if a bank doesn't cover full pages, this may give the
> impression
> of there being more "total pages" than there are.
Since it rounds down to PAGE_SIZE, if ram_start is 2K and the total
size of a bank is 11K, ram_size will end up being 8K, so the "total
pages" will cover less RAM than the actual size of the RAM bank.

>=20
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_start =3D min(ram_start=
, bank->start);
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_end =3D max(ram_end, ba=
nk_end);
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 setup_directmap_mappings(PF=
N_DOWN(bank->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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PFN_DOWN(bank->size));
>=20
> Similarly I don't think this is right when both start and size aren't
> multiple of PAGE_SIZE. You may map an unsuable partial page at the
> start,
> and then fail to map a fully usable page at the end.
ram_size should be a multiple of PAGE_SIZE because we have:
    ram_size +=3D ROUNDDOWN(bank->size, PAGE_SIZE);

Do you know of any examples where bank->start isn't aligned to
PAGE_SIZE? Should be somewhere mentioned what is legal physical address
for RAM start? If it=E2=80=99s not PAGE_SIZE-aligned, then it seems we have=
 no
choice but to use ALIGNUP(..., PAGE_SIZE), which would mean losing part
of the bank.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 16:51:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 16:51:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828353.1243206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Bv5-0006Fi-Cd; Wed, 30 Oct 2024 16:51:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828353.1243206; Wed, 30 Oct 2024 16:51: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 1t6Bv5-0006Fb-9z; Wed, 30 Oct 2024 16:51:43 +0000
Received: by outflank-mailman (input) for mailman id 828353;
 Wed, 30 Oct 2024 16:51: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6Bv4-0006DJ-Ey
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 16:51:42 +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 3a33a596-96df-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 17:51:37 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5c9454f3bfaso117013a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 09:51:37 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1e0b2307sm585561366b.8.2024.10.30.09.51.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 09:51:35 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3a33a596-96df-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmMiLCJoZWxvIjoibWFpbC1lZDEteDUyYy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjNhMzNhNTk2LTk2ZGYtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzA3MDk3LjIwMjM0NSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730307096; x=1730911896; 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=1JwQo9TFUAQkdzS/Arz/FEpvtW5po9876Py5nlhKrU0=;
        b=ZC8Yr/2RDRac5D5aKfDBjrK/1FMief1XpJfVW7U8mPBBOZLQlWnbxwrDJsMUC64dXS
         QZAjXBiwKlsWbh/EufEQBn8LHqQMBuE/YDMwB/e4ckJGRFkMQu62SSN0D3k6PONbhxDr
         M2cXzLbD71YVeeZEKPKaf/EgXV7dNQmKRGwno=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730307096; x=1730911896;
        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=1JwQo9TFUAQkdzS/Arz/FEpvtW5po9876Py5nlhKrU0=;
        b=V5baNKG8xfduOMrd4f0hsp2bXlbjd3PViGKfo211B/rza2CoBKuwcPyZzlj7H8cvM2
         5b7AYswiNsfYkV9UUGEs/n2bMJS/SETsno1on+X9kB5B8Gk4ud6bwZOpedb5yMp+7n5W
         SeM0ATdgkUAQ/UtVw/ia68ywDpjeDU+u0QYowXjWaY9dZ4XJVBrIMj0+1YSx8K5zpGGw
         wA71QQJ6+QcQ8zS/p3KpWedu1N+gxGQobJ/MRUoI0k8K24/uuz27dxCXtbc0Mcsxg2rZ
         xWbcSu8HhhfvtbMImbaqLKXEIJ9RwPLCXNHF2Fq29KZeZwa6rNYYUEQnJXyTyT2gMhhN
         2Q6w==
X-Gm-Message-State: AOJu0Yx52JaV6VWOoulkQ0RLf835E9Ai0WQw0gWsaykpCROrl2W7h4wT
	O1WY9Jd5c/0RYgS57AAK1HHBI39kp2527KoDJgwSBmxv5YwFnA/zURnnG4inKTPzmLrFgU+VQl+
	9
X-Google-Smtp-Source: AGHT+IG5dUTd0F/fJy45DlCskZ/d9fgtk32IfH7m6bYVCS3SZewfSnhQ0zlb3KZDYYgRYb62PJ+IIg==
X-Received: by 2002:a17:907:6ea8:b0:a9a:e4:fd5b with SMTP id a640c23a62f3a-a9de5f01089mr1381190866b.39.1730307096400;
        Wed, 30 Oct 2024 09:51:36 -0700 (PDT)
Message-ID: <e4d75dee-3cf6-4fc1-9277-ea16ed9e0319@citrix.com>
Date: Wed, 30 Oct 2024 16:51:34 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook> <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook> <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
 <ZyJM_DLUkqolD7mD@macbook>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZyJM_DLUkqolD7mD@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 3:13 pm, Roger Pau Monné wrote:
> On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
>> On 30/10/2024 11:03 am, Roger Pau Monné wrote:
>>> On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
>>>> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
>>>>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
>>>>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
>>>>>> index b6d9fad56773..78bc9872b09a 100644
>>>>>> --- a/xen/arch/x86/cpu-policy.c
>>>>>> +++ b/xen/arch/x86/cpu-policy.c
>>>>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>>>>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>>>>>>  }
>>>>>>  
>>>>>> +/*
>>>>>> + * Guest max policies can have any max leaf/subleaf within bounds.
>>>>>> + *
>>>>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
>>>>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
>>>>>> + */
>>>>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
>>>>>> +}
>>>>>> +
>>>>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
>>>>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
>>>>>> +{
>>>>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
>>>>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
>>>>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
>>>>>> +}
>>>>> I think this what I'm going to ask is future work.  After the
>>>>> modifications done to the host policy by max functions
>>>>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
>>>>> better be done taking into account the contents of the policy, rather
>>>>> than capping to the host values?
>>>>>
>>>>> (note this comment is strictly for guest_common_default_leaves(), the
>>>>> max version is fine using ARRAY_SIZE).
>>>> I'm afraid I don't follow.
>>>>
>>>> calculate_{pv,hvm}_max_policy() don't modify the host policy.
>>> Hm, I don't think I've expressed myself clearly, sorry.  Let me try
>>> again.
>>>
>>> calculate_{hvm,pv}_max_policy() extends the host policy by possibly
>>> setting new features, and such extended policy is then used as the
>>> base for the PV/HVM default policies.
>>>
>>> Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
>>> having bits set past the max {sub,}leaf in the host policy, as it's
>>> based in {hvm,pv}_def_cpu_policy that might have such bits set?
>> Oh, right.
>>
>> This patch doesn't change anything WRT that.
> Indeed, didn't intend my comment to block it, just that I think at
> some point the logic in guest_common_default_leaves() will need to be
> expanded.
>
>> But I think you're right that we do risk getting into that case (in
>> principle at least) because of how guest_common_*_feature_adjustment() work.
>>
>> Furthermore, the bug will typically get hidden because we serialise
>> based on the max_leaf/subleaf, and will discard feature words outside of
>> the max_leaf/subleaf bounds.
> Yes, once we serialize it for toolstack consumption the leafs will be
> implicitly zeroed.
>
>> I suppose we probably want a variation of x86_cpu_featureset_to_policy()
>> which extends the max_leaf/subleaf based on non-zero values in leaves. 
>> (This already feels like it's going to be an ugly algorithm.)
> Hm, I was thinking that we would need to adjust
> guest_common_default_leaves() to properly shrink the max {sub,}leaf
> fields from the max policies.

Hmm.  What we'd do is have default inherit max's ARRAY_SIZES(), then do
all the existing logic, then as the final step, shrink the default
policies, vaguely per Jan's plan.

i.e. we'd end up deleting guest_common_default_leaves()

That way we don't need to encode any knowledge of which feature bit
means what WRT max_leaf/subleaf.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 17:11:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 17:11:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828364.1243217 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6CDr-0000lh-2F; Wed, 30 Oct 2024 17:11:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828364.1243217; Wed, 30 Oct 2024 17:11: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 1t6CDq-0000la-VU; Wed, 30 Oct 2024 17:11:06 +0000
Received: by outflank-mailman (input) for mailman id 828364;
 Wed, 30 Oct 2024 17:11: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=rOPv=R2=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t6CDp-0000lU-7N
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 17:11:05 +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 eff1a335-96e1-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 18:11:01 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a2209bd7fso1503366b.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 10:11:01 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1f05deb6sm583328466b.88.2024.10.30.10.10.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 10:11:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eff1a335-96e1-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MjkiLCJoZWxvIjoibWFpbC1lajEteDYyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImVmZjFhMzM1LTk2ZTEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzA4MjYxLjA4NzQ4Niwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730308260; x=1730913060; 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=W7685/wE7ff7H8WooBHVpshC3WHfBsT7eWfyNzjUyPc=;
        b=MwS68bTYyJc7IxZL6alg5QQZKDf4UB2QyArkfdVGQNbLfaf0OoHao0Q5ZK/m7IHl/t
         bWyRAxn3mKIao73mUSArkGm+DPVqXI2W+7kTRan/1PEuNpu6Z9ASyZY9QYvdAiGXgH69
         snZU4AVv3HEkyK2CEEITT77gPswW/Z78gU6ss=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730308260; x=1730913060;
        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=W7685/wE7ff7H8WooBHVpshC3WHfBsT7eWfyNzjUyPc=;
        b=pZfy53RFx9XR5hxjDQ4TVprmAIx00XLQ+s0/4k+NIGSMQez5evO1SQoe7xgYK7/5oO
         DfOmIHhGKidWcHD3sOgIAordax1BwytRdJAMybu0ArRg7dF63YzfZxqHBkhgDBIh3dXc
         qQAv6SBWGAZ/gUurAX3nmvo9WB4rtlTX5HnHpFnWMUHhoWc5h2QcpdiL5vei6ErIAGI0
         FNNj+CoGg8akYV3Qvo4VTkQK6Wc4NRWEIMY8Ihhk9Ol8Dum6qkaSkqoXMmu+9kOSNhap
         YQWiZ4NdpAk4YKyH5wYMMBQIETBVIRlWr/aUkFzvM9Poh5vxx4fQhamHfbhgVnRAQiRj
         G0Cg==
X-Gm-Message-State: AOJu0YxW7DGHxhCjmK03mvR6SfifybFkX0xV0RO3P6goGK8+ajbhhTrc
	92x/E4ptKORR3aUHzIHqWsENygHctP0TEGbYVYPI+C+kCpq7zC4O6awTgRP+nF9SiKK9qSx/rvQ
	D
X-Google-Smtp-Source: AGHT+IGCIzuq1pFQVP55pT0Q9ZqpVDJdZgwbzQUXpfOI0Bw+ixw3kN6R9CDRAAIm5CwIpAx2gV2KIQ==
X-Received: by 2002:a17:907:9454:b0:a9a:6b4c:a331 with SMTP id a640c23a62f3a-a9de619e3f6mr1341904166b.54.1730308260399;
        Wed, 30 Oct 2024 10:11:00 -0700 (PDT)
Date: Wed, 30 Oct 2024 18:10:59 +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>,
	Alejandro Vallejo <alejandro.vallejo@cloud.com>
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
Message-ID: <ZyJoowmf5_ast4X3@macbook>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook>
 <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook>
 <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
 <ZyJM_DLUkqolD7mD@macbook>
 <e4d75dee-3cf6-4fc1-9277-ea16ed9e0319@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <e4d75dee-3cf6-4fc1-9277-ea16ed9e0319@citrix.com>

On Wed, Oct 30, 2024 at 04:51:34PM +0000, Andrew Cooper wrote:
> On 30/10/2024 3:13 pm, Roger Pau Monné wrote:
> > On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
> >> On 30/10/2024 11:03 am, Roger Pau Monné wrote:
> >>> On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
> >>>> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
> >>>>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
> >>>>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
> >>>>>> index b6d9fad56773..78bc9872b09a 100644
> >>>>>> --- a/xen/arch/x86/cpu-policy.c
> >>>>>> +++ b/xen/arch/x86/cpu-policy.c
> >>>>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
> >>>>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
> >>>>>>  }
> >>>>>>  
> >>>>>> +/*
> >>>>>> + * Guest max policies can have any max leaf/subleaf within bounds.
> >>>>>> + *
> >>>>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
> >>>>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
> >>>>>> + */
> >>>>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
> >>>>>> +}
> >>>>>> +
> >>>>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
> >>>>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
> >>>>>> +{
> >>>>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
> >>>>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
> >>>>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
> >>>>>> +}
> >>>>> I think this what I'm going to ask is future work.  After the
> >>>>> modifications done to the host policy by max functions
> >>>>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
> >>>>> better be done taking into account the contents of the policy, rather
> >>>>> than capping to the host values?
> >>>>>
> >>>>> (note this comment is strictly for guest_common_default_leaves(), the
> >>>>> max version is fine using ARRAY_SIZE).
> >>>> I'm afraid I don't follow.
> >>>>
> >>>> calculate_{pv,hvm}_max_policy() don't modify the host policy.
> >>> Hm, I don't think I've expressed myself clearly, sorry.  Let me try
> >>> again.
> >>>
> >>> calculate_{hvm,pv}_max_policy() extends the host policy by possibly
> >>> setting new features, and such extended policy is then used as the
> >>> base for the PV/HVM default policies.
> >>>
> >>> Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
> >>> having bits set past the max {sub,}leaf in the host policy, as it's
> >>> based in {hvm,pv}_def_cpu_policy that might have such bits set?
> >> Oh, right.
> >>
> >> This patch doesn't change anything WRT that.
> > Indeed, didn't intend my comment to block it, just that I think at
> > some point the logic in guest_common_default_leaves() will need to be
> > expanded.
> >
> >> But I think you're right that we do risk getting into that case (in
> >> principle at least) because of how guest_common_*_feature_adjustment() work.
> >>
> >> Furthermore, the bug will typically get hidden because we serialise
> >> based on the max_leaf/subleaf, and will discard feature words outside of
> >> the max_leaf/subleaf bounds.
> > Yes, once we serialize it for toolstack consumption the leafs will be
> > implicitly zeroed.
> >
> >> I suppose we probably want a variation of x86_cpu_featureset_to_policy()
> >> which extends the max_leaf/subleaf based on non-zero values in leaves. 
> >> (This already feels like it's going to be an ugly algorithm.)
> > Hm, I was thinking that we would need to adjust
> > guest_common_default_leaves() to properly shrink the max {sub,}leaf
> > fields from the max policies.
> 
> Hmm.  What we'd do is have default inherit max's ARRAY_SIZES(), then do
> all the existing logic, then as the final step, shrink the default
> policies, vaguely per Jan's plan.
> 
> i.e. we'd end up deleting guest_common_default_leaves()
> 
> That way we don't need to encode any knowledge of which feature bit
> means what WRT max_leaf/subleaf.

What about Alejandro's concern about runtime populated {sub,}leafs,
won't we risk shrinking too much if the last leaf intended to be kept
happens to be a fully runtime populated one?

Do we need some kind of special magic for fully run-time populated
leafs (like the topology ones IIRC?) in order to account for them when
doing those max calculations?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 17:25:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 17:25:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828372.1243226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6CRO-0002Zn-7Q; Wed, 30 Oct 2024 17:25:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828372.1243226; Wed, 30 Oct 2024 17:25: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 1t6CRO-0002Zg-4T; Wed, 30 Oct 2024 17:25:06 +0000
Received: by outflank-mailman (input) for mailman id 828372;
 Wed, 30 Oct 2024 17:25: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6CRM-0002ZY-1a
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 17:25:04 +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 e1a96566-96e3-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 18:24:56 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5cbb0900c86so194783a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 10:24:56 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb62c14c4sm4897361a12.44.2024.10.30.10.24.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 30 Oct 2024 10:24:54 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1a96566-96e3-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmYiLCJoZWxvIjoibWFpbC1lZDEteDUyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImUxYTk2NTY2LTk2ZTMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzA5MDk2LjE4MTcwMiwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730309095; x=1730913895; 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=Avim1aPV5ri8Sfq5tKjy5h2HsteLlOLsZYKaUY4qjGo=;
        b=eyBEXrPQ+sUAu+Em0YoRmCJCQN4YxfAK9C9mIMn0mm7rUpDiQrhnLWSs7xphMQyBd9
         JPGeAqhvT+Z7XHVLlztvfSyxAf/qmgrknXlDvNCZW5g3GlrnITmYADLVH4OSuUkiGNeP
         MQJat9GZHw7TPXB3YP7FlGKM9OIVFJLgwWzpk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730309095; x=1730913895;
        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=Avim1aPV5ri8Sfq5tKjy5h2HsteLlOLsZYKaUY4qjGo=;
        b=VPgStBLVGEPpGKBA/oHRlAB4MgiLJixIbVSWC60NVc+OXXMTgcXNQBPC39KX4aiLpP
         oni8NzSwWXDYczTv3A+uz6TeNV9YxrLXlqZI/42uedoJkgvrTeS9MZ8k0VgjZJpSog1T
         0aGo7la7Ua9SAZklPv7bcz22qDsILXzQoDpOoC0CUZhH4I0P2gsVoUJBWUZKdVdGvlKt
         p9tywvxcoCi4/nP+1H7NX28BnFcC+ncAvGbYqmC6l1HyHaHXy9TMW+G7VBQ+eHcpTqrE
         fSZHJeqYzc0wc5MBaCVOSiGJiJGHDknOCixwZnQO5AIeWJy8wJClP8kQyXw8Wyq6rM96
         1L7Q==
X-Gm-Message-State: AOJu0YzOiMLJIMM6mB5VvJVzFBS9nsVoaqsRd4OqLeVLAkLe8dIcjprg
	eb7V7HIvihE9u9Zml3tE0clFHisKwZ4r1gRax0DVp4KlH3dKDOkbn8cFy9Mihms=
X-Google-Smtp-Source: AGHT+IF5IG5urUcFqTlm5uge7UTOVAFgQ6Q7oPMsHrvj8UoUPr2aVbANKKWeXpv2cMBnb8ltoxK4Tw==
X-Received: by 2002:a05:6402:4305:b0:5c9:3818:35e8 with SMTP id 4fb4d7f45d1cf-5cbbfa6ef44mr13407760a12.28.1730309095383;
        Wed, 30 Oct 2024 10:24:55 -0700 (PDT)
Message-ID: <87716274-f504-41a4-a0e8-15a98a7e3266@citrix.com>
Date: Wed, 30 Oct 2024 17:24:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook> <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook> <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
 <ZyJM_DLUkqolD7mD@macbook> <e4d75dee-3cf6-4fc1-9277-ea16ed9e0319@citrix.com>
 <ZyJoowmf5_ast4X3@macbook>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <ZyJoowmf5_ast4X3@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 5:10 pm, Roger Pau Monné wrote:
> On Wed, Oct 30, 2024 at 04:51:34PM +0000, Andrew Cooper wrote:
>> On 30/10/2024 3:13 pm, Roger Pau Monné wrote:
>>> On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
>>>> On 30/10/2024 11:03 am, Roger Pau Monné wrote:
>>>>> On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
>>>>>> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
>>>>>>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
>>>>>>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
>>>>>>>> index b6d9fad56773..78bc9872b09a 100644
>>>>>>>> --- a/xen/arch/x86/cpu-policy.c
>>>>>>>> +++ b/xen/arch/x86/cpu-policy.c
>>>>>>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>>>>>>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>>>>>>>>  }
>>>>>>>>  
>>>>>>>> +/*
>>>>>>>> + * Guest max policies can have any max leaf/subleaf within bounds.
>>>>>>>> + *
>>>>>>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
>>>>>>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
>>>>>>>> + */
>>>>>>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
>>>>>>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
>>>>>>>> +{
>>>>>>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
>>>>>>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
>>>>>>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
>>>>>>>> +}
>>>>>>> I think this what I'm going to ask is future work.  After the
>>>>>>> modifications done to the host policy by max functions
>>>>>>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
>>>>>>> better be done taking into account the contents of the policy, rather
>>>>>>> than capping to the host values?
>>>>>>>
>>>>>>> (note this comment is strictly for guest_common_default_leaves(), the
>>>>>>> max version is fine using ARRAY_SIZE).
>>>>>> I'm afraid I don't follow.
>>>>>>
>>>>>> calculate_{pv,hvm}_max_policy() don't modify the host policy.
>>>>> Hm, I don't think I've expressed myself clearly, sorry.  Let me try
>>>>> again.
>>>>>
>>>>> calculate_{hvm,pv}_max_policy() extends the host policy by possibly
>>>>> setting new features, and such extended policy is then used as the
>>>>> base for the PV/HVM default policies.
>>>>>
>>>>> Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
>>>>> having bits set past the max {sub,}leaf in the host policy, as it's
>>>>> based in {hvm,pv}_def_cpu_policy that might have such bits set?
>>>> Oh, right.
>>>>
>>>> This patch doesn't change anything WRT that.
>>> Indeed, didn't intend my comment to block it, just that I think at
>>> some point the logic in guest_common_default_leaves() will need to be
>>> expanded.
>>>
>>>> But I think you're right that we do risk getting into that case (in
>>>> principle at least) because of how guest_common_*_feature_adjustment() work.
>>>>
>>>> Furthermore, the bug will typically get hidden because we serialise
>>>> based on the max_leaf/subleaf, and will discard feature words outside of
>>>> the max_leaf/subleaf bounds.
>>> Yes, once we serialize it for toolstack consumption the leafs will be
>>> implicitly zeroed.
>>>
>>>> I suppose we probably want a variation of x86_cpu_featureset_to_policy()
>>>> which extends the max_leaf/subleaf based on non-zero values in leaves. 
>>>> (This already feels like it's going to be an ugly algorithm.)
>>> Hm, I was thinking that we would need to adjust
>>> guest_common_default_leaves() to properly shrink the max {sub,}leaf
>>> fields from the max policies.
>> Hmm.  What we'd do is have default inherit max's ARRAY_SIZES(), then do
>> all the existing logic, then as the final step, shrink the default
>> policies, vaguely per Jan's plan.
>>
>> i.e. we'd end up deleting guest_common_default_leaves()
>>
>> That way we don't need to encode any knowledge of which feature bit
>> means what WRT max_leaf/subleaf.
> What about Alejandro's concern about runtime populated {sub,}leafs,
> won't we risk shrinking too much if the last leaf intended to be kept
> happens to be a fully runtime populated one?
>
> Do we need some kind of special magic for fully run-time populated
> leafs (like the topology ones IIRC?) in order to account for them when
> doing those max calculations?

No.

Xen shrinks the default policies only, as part of calculating them on
boot, in order to make them look more plausible.

The toolstack shrinks the guest policy as part of domain construction.


In both cases, shrinking is probably the final action in curating the
policy, after all other "turns this on, turn that off" has been taken
into account.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 18:00:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 18:00:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828382.1243236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Cz7-0007Nu-Pw; Wed, 30 Oct 2024 17:59:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828382.1243236; Wed, 30 Oct 2024 17: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 1t6Cz7-0007Nn-NT; Wed, 30 Oct 2024 17:59:57 +0000
Received: by outflank-mailman (input) for mailman id 828382;
 Wed, 30 Oct 2024 17:59: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6Cz6-0007Nh-Rk
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 17:59:56 +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 c26a5ff9-96e8-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 18:59:51 +0100 (CET)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5c957d8bce2so98972a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 10:59:51 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5cbb6319711sm4926486a12.66.2024.10.30.10.59.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 10:59:49 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c26a5ff9-96e8-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzEiLCJoZWxvIjoibWFpbC1lZDEteDUzMS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImMyNmE1ZmY5LTk2ZTgtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzExMTkxLjIzMzI1OSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730311190; x=1730915990; 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=T9SR3Yd/ffMhp+UMSgdVbSs+H3lztPmbEiuOsacROSM=;
        b=GIK2dK4RH11xg5aqTU9TGWu59S7BAhAcOYOmdPXJocbn/0LTVLqzFTmMJN3218isEB
         7rmBBOmVUKqYt2nGyeHmId/xUoc5GQjNST3l3zobgVpbMSh5yiPiPcEfWxVtduxM652C
         vp5TZPBCOfe5a8xREtKIpBZKAiO3BSNI7ezZE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730311190; x=1730915990;
        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=T9SR3Yd/ffMhp+UMSgdVbSs+H3lztPmbEiuOsacROSM=;
        b=GzRjcMp79NwWhfMUhuS2XB5rKx5HwgfcrG8SiGl2UG14Oa5f7ZScQjBdCKTqHBQgwF
         VarowXAJK4VeE8JzyvIVByXt+7e/VQIARknKSyRCcpdosjI+ArcoEEJjQoqBaRJcE7DI
         Kn2gYRbSVaLAm6ja3lCrVOImbA79cTpUvqWHr1qRUSpNPx0ORPTF3n57vGx+1fKbf6Yi
         EY2o/reVkbgggaRoPn8VAtncP/Z83UQrmo4JBoe4t7vIl1EtoXLDtObqIRqdTBDiqVZj
         HCB0uJpVHdHGty3d6VQfwCq0YXBti946LJEDs1P58niRTmTZkNwNuHePS3sW7iFfCplf
         MACQ==
X-Gm-Message-State: AOJu0YwUk1yIvT/8JF4gLgNOkrdEOuBOaemnTgl3bF0uVsA/ZqT7lr4k
	56OpWTNoqQ5P1hjQ+IOLehTe+NmpIFVFs/6CVRb/9/MSFD8Ykf/nLyXgdep60zVCfVbrVlDiNYw
	N
X-Google-Smtp-Source: AGHT+IFlwedm5GSwYrFlcfJMdlBHhy4jWWaQdKIHIUZF01OzBDUnHjhqrQzwz05xTn4T2d+2xZRXnA==
X-Received: by 2002:a05:6402:2707:b0:5c9:44bc:f9b3 with SMTP id 4fb4d7f45d1cf-5cbbf8a4b69mr14848717a12.11.1730311190110;
        Wed, 30 Oct 2024 10:59:50 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Jan Beulich <JBeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>
Subject: [PATCH] Config: Update MiniOS revision
Date: Wed, 30 Oct 2024 17:59:44 +0000
Message-Id: <20241030175944.2726594-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Commit 6d5159e8410b ("Add missing symbol exports for grub-pv")

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Juergen Gross <jgross@suse.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
---
 Config.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Config.mk b/Config.mk
index 6dd2f9439cfc..f1eab9a20a66 100644
--- a/Config.mk
+++ b/Config.mk
@@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
 QEMU_UPSTREAM_REVISION ?= master
 
 MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
-MINIOS_UPSTREAM_REVISION ?= 80ef70f92cb7b95ef48deea1157f2194b10b8c05
+MINIOS_UPSTREAM_REVISION ?= 6d5159e8410be16a47433bac1627e63f8adc7cd9
 
 SEABIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/seabios.git
 SEABIOS_UPSTREAM_REVISION ?= rel-1.16.3

base-commit: bb7296d77f171c7bfbafab30ed51e9be29660e39
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 18:03:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 18:03:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828387.1243247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6D2m-0000Xh-8d; Wed, 30 Oct 2024 18:03:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828387.1243247; Wed, 30 Oct 2024 18:03: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 1t6D2m-0000Xa-62; Wed, 30 Oct 2024 18:03:44 +0000
Received: by outflank-mailman (input) for mailman id 828387;
 Wed, 30 Oct 2024 18:03: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6D2l-0000XB-BQ
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 18:03:43 +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 49a10237-96e9-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 19:03:38 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a9932aa108cso8435166b.2
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 11:03:38 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b1e75ff3bsm588693266b.1.2024.10.30.11.03.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 11:03:36 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49a10237-96e9-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmQiLCJoZWxvIjoibWFpbC1lajEteDYyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQ5YTEwMjM3LTk2ZTktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzExNDE4LjA0NDU3Nywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730311417; x=1730916217; 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=Nb6McFM7jDV7KGX5nUJbpRNVXqqSWbqonW1RqwdBEYU=;
        b=pO/g6zlTYT4AlOQtKIEWMZwz9djoOc8QFBETRi/CWc9/Hx2i/LVWntctSURYFmEUeA
         tKmvCj00AksdS10oqXQzqFCZGvERE6fNEcqgfUPLUiiwDf4X9Q4NzzW1qz4sZgNK4n2J
         /Iw+Hb3dSknKucjkOPKY1jBpCI67C1umeyK/8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730311417; x=1730916217;
        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=Nb6McFM7jDV7KGX5nUJbpRNVXqqSWbqonW1RqwdBEYU=;
        b=MD5igr4kgps7Md8L1QtH8adzZFrR6Ok23nfue166JZcJtM2j8QhPFovqwhOezFjGsQ
         t/OHqM6udj3QB5M5XuYiGhYSbMyX4S93F+h8QnKLPRf6LTPVwL/+VfOkv6AMBht2uUkn
         lSwACixnB77doaucLXmN9xJUyEw8QnBJ8iV62d3hp9y1llPZF1ByVokIQb/Ss6qUN8m2
         FLza1k9JcT1Ty5mcmBPjqOrlWlyUuwRqA38SjyC5tnqRd7QJPn8YEqGB/MSB2uJqnFnV
         gGKVhri8H1KIbAeY1pkMU6nsa7ioGB8J0oPN1L2fzM8KM4+mqfh0eTcOI0KIS26bFlU8
         fAJg==
X-Gm-Message-State: AOJu0YwNUlqkM+FpMFFzViDHl60SvC3d3/PGZEVMcmpBW4qNZ26ZwDC+
	MOa5N9gofciZA0el5T2gOZdeKxuTJeiMeBp3DXMyw4Tkw91zF4KRtGSfoT4WmvSH9ry63tBLqKF
	1
X-Google-Smtp-Source: AGHT+IEAyP2OqI5xUptQxiME+wnp4NUI10nWUWIuu9eFDQPQyMiQObDGAAHi3TVbZ5Ue/is1JOWJhQ==
X-Received: by 2002:a17:907:2d8e:b0:a9a:3705:9ad9 with SMTP id a640c23a62f3a-a9e50b95730mr29714766b.50.1730311416901;
        Wed, 30 Oct 2024 11:03:36 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Jan Beulich <JBeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>
Subject: [PATCH for-4.19] Config: Update MiniOS revision
Date: Wed, 30 Oct 2024 18:03:32 +0000
Message-Id: <20241030180332.2726909-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

A new branch from xen-RELEASE-4.19.0, for now containing commit
a400dd517068 ("Add missing symbol exports for grub-pv").

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Juergen Gross <jgross@suse.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
---
 Config.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Config.mk b/Config.mk
index 03a89624c77f..aa3d5843f1ed 100644
--- a/Config.mk
+++ b/Config.mk
@@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
 QEMU_UPSTREAM_REVISION ?= qemu-xen-4.19.0
 
 MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
-MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.19.0
+MINIOS_UPSTREAM_REVISION ?= xen-stable-4.19
 
 SEABIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/seabios.git
 SEABIOS_UPSTREAM_REVISION ?= rel-1.16.3

base-commit: fadbc7e32e42f1a4199b854a895744f026803320
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 19:45:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 19:45:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828409.1243268 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Ecc-0005Sq-Cv; Wed, 30 Oct 2024 19:44:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828409.1243268; Wed, 30 Oct 2024 19:44: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 1t6Ecc-0005Sj-AP; Wed, 30 Oct 2024 19:44:50 +0000
Received: by outflank-mailman (input) for mailman id 828409;
 Wed, 30 Oct 2024 19:44: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=LV2z=R2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6Ecb-0005Rr-4F
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 19:44:49 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6858263a-96f7-11ef-99a3-01e77a169b0f;
 Wed, 30 Oct 2024 20:44:42 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-539f2b95775so227507e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 30 Oct 2024 12:44:42 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9b3a088adesm594815866b.222.2024.10.30.12.44.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 30 Oct 2024 12:44:40 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6858263a-96f7-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzAiLCJoZWxvIjoibWFpbC1sZjEteDEzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjY4NTgyNjNhLTk2ZjctMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzE3NDgyLjQ4NTkzNywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730317481; x=1730922281; 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=9qA4Y0k56pJdKOhEG8laINea+E3H+cDEFib+L14O9Kc=;
        b=lPMgUJ4+Bz3ruaYmiXBmMMphkcWp7yzKh0e/8qI4j9T2Y0Cm5JV/791mXENeaTDR27
         nfZEAVssCFs/ITL7na0phJHn2NS+nrs+Mq2QeeLU99a5h4WvwFwRuEkHdyJY7scVC8MG
         aY9VQTKxCXpcd+oShw7ieiYoVSior2RkRyKsc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730317481; x=1730922281;
        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=9qA4Y0k56pJdKOhEG8laINea+E3H+cDEFib+L14O9Kc=;
        b=UU9iPZJXOQkK186m9CpyDLrSQRRbt9ayEZrCJBuEV8MQcEYlsyrddnZ+scPx+fcFc6
         G4OzjP8EXiZgF4NvGzgwLayAqHgDq/i4NhzeXKynRZbHHNSix7ZjpQ+SxfGycE10gTg5
         pTJz+s6a6uMtQltX+Hty7iA0Yb4gpk6uI1GqNAoVAHFbZjNWsgxxzBVhBdMOde/YsYox
         Ird63JgmaZNOQsWuKQOSYTGI2vXsiMx3JbAhiFXaWuUpOxvmmmiM/f6iVvD5NMzKi/OU
         i+2o+l+yt5x93vIZVY7FrnqrWa1PFIRgbJ3lSYwdJV67daDIvqolnMrWYhMbfsTRilz5
         F9zw==
X-Gm-Message-State: AOJu0Yw9gYMEs1lfydar9N899ANywlFkLXjl9y2Gfvnb679SdsjNXkcM
	FLQeVyfRr/mdslwP3xRoR2Sht/E1ye2NpJs6lmgszDAlQSZeaKkhGmV83rfuAbq5GyBbw9aZanG
	X
X-Google-Smtp-Source: AGHT+IEd7p/h1h626YohcpNZc0DXBOWph7qKoLa6zj59b8SJ4DbHAbUzU6q6SII+9k8KH+0hnpwVdQ==
X-Received: by 2002:a05:6512:1282:b0:53b:1fd1:df34 with SMTP id 2adb3069b0e04-53b3491e0eamr14605494e87.45.1730317481252;
        Wed, 30 Oct 2024 12:44:41 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Juergen Gross <jgross@suse.com>,
	Jan Beulich <JBeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>
Subject: [PATCH] scripts: Fix git-checkout.sh to work with branches other than master
Date: Wed, 30 Oct 2024 19:44:38 +0000
Message-Id: <20241030194438.2733973-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Xen uses master for QEMU_UPSTREAM_REVISION, and has done for other trees too
in the path.  Apparently we've never specified a different branch, because the
git-clone rune only pulls in the master branch; it does not pull in diverging
branches.  Fix this by stating which branch/tag is wanted.

$TAG is really a committish, and git-clone's -b/--branch takes a committish
too.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Juergen Gross <jgross@suse.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>

Found while trying to test the MiniOS fixes in Gitlab.  This is a example run
with most stubdom builds passing:

  https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1520611847

and all of them successfully cloned.
---
 scripts/git-checkout.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
index fd4425ac4ee8..3796cbfe39a7 100755
--- a/scripts/git-checkout.sh
+++ b/scripts/git-checkout.sh
@@ -14,7 +14,7 @@ set -e
 if test \! -d $DIR-remote; then
 	rm -rf $DIR-remote $DIR-remote.tmp
 	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
-	$GIT clone $TREE $DIR-remote.tmp
+	$GIT clone -b $TAG $TREE $DIR-remote.tmp
 	if test "$TAG" ; then
 		cd $DIR-remote.tmp
 		$GIT branch -D dummy >/dev/null 2>&1 ||:

base-commit: bb7296d77f171c7bfbafab30ed51e9be29660e39
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Wed Oct 30 21:20:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 21:20:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828415.1243278 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6G6p-00013Z-Vr; Wed, 30 Oct 2024 21:20:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828415.1243278; Wed, 30 Oct 2024 21: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 1t6G6p-00012w-Sn; Wed, 30 Oct 2024 21:20:07 +0000
Received: by outflank-mailman (input) for mailman id 828415;
 Wed, 30 Oct 2024 21: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=O59d=R2=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t6G6o-0000uR-MX
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 21:20:06 +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 b8e59803-9704-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 22:20:02 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 690455C4BA8;
 Wed, 30 Oct 2024 21:19:15 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E764C4CECE;
 Wed, 30 Oct 2024 21:19:59 +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: b8e59803-9704-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjEzOS4xNzguODQuMjE3IiwiaGVsbyI6ImRmdy5zb3VyY2Uua2VybmVsLm9yZyJ9
X-Custom-Transaction: eyJpZCI6ImI4ZTU5ODAzLTk3MDQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzIzMjAyLjE1OTI3NCwic2VuZGVyIjoic3N0YWJlbGxpbmlAa2VybmVsLm9yZyIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730323200;
	bh=lgopff5Pnfe2wUBMG2Knn2kGc7pasLUhz65Afmuch3k=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=XdEH+GQ0kog3xTlWNlIbnnKMHy4sx02LE2/cLff1sSJ7qkAwmREME0MEh1Q0Zhewx
	 1Jt1axPMX6p75uEI4gSXTzHer8RnQzGBwC2pdWgDuBROjPEFarXZ+1sGwPUntbtlxJ
	 P2NLhBxDGEgXYXZhHL95rvHBz+PqKOODkp3Gep6N9kOnCjHFqW1wR1GsJ7stTvqIkB
	 0WX8MeMPSAhM8lpnTbRxtX7kTM5u13Ltkt1gwWwhbwQaIgFhJ+60FHAb+VKYiS20ul
	 Wpz/zuGXF0y2w7rL3l3VvIIapZfUNfaUFWA/Chtksu0A2WWNQ3QLto42h4ww7tPMnW
	 3LSFGSUL4v0fg==
Date: Wed, 30 Oct 2024 14:19:57 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Xen-devel <xen-devel@lists.xenproject.org>, 
    Anthony PERARD <anthony.perard@vates.tech>, 
    Juergen Gross <jgross@suse.com>, Jan Beulich <JBeulich@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
Subject: Re: [PATCH] scripts: Fix git-checkout.sh to work with branches other
 than master
In-Reply-To: <20241030194438.2733973-1-andrew.cooper3@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410301419430.2525410@ubuntu-linux-20-04-desktop>
References: <20241030194438.2733973-1-andrew.cooper3@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Wed, 30 Oct 2024, Andrew Cooper wrote:
> Xen uses master for QEMU_UPSTREAM_REVISION, and has done for other trees too
> in the path.  Apparently we've never specified a different branch, because the
> git-clone rune only pulls in the master branch; it does not pull in diverging
> branches.  Fix this by stating which branch/tag is wanted.
> 
> $TAG is really a committish, and git-clone's -b/--branch takes a committish
> too.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Well spotted!

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Juergen Gross <jgross@suse.com>
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien@xen.org>
> 
> Found while trying to test the MiniOS fixes in Gitlab.  This is a example run
> with most stubdom builds passing:
> 
>   https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1520611847
> 
> and all of them successfully cloned.
> ---
>  scripts/git-checkout.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
> index fd4425ac4ee8..3796cbfe39a7 100755
> --- a/scripts/git-checkout.sh
> +++ b/scripts/git-checkout.sh
> @@ -14,7 +14,7 @@ set -e
>  if test \! -d $DIR-remote; then
>  	rm -rf $DIR-remote $DIR-remote.tmp
>  	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
> -	$GIT clone $TREE $DIR-remote.tmp
> +	$GIT clone -b $TAG $TREE $DIR-remote.tmp
>  	if test "$TAG" ; then
>  		cd $DIR-remote.tmp
>  		$GIT branch -D dummy >/dev/null 2>&1 ||:
> 
> base-commit: bb7296d77f171c7bfbafab30ed51e9be29660e39
> -- 
> 2.39.5
> 


From xen-devel-bounces@lists.xenproject.org Wed Oct 30 22:17:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 30 Oct 2024 22:17:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828423.1243288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6H0d-0007zH-0V; Wed, 30 Oct 2024 22:17:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828423.1243288; Wed, 30 Oct 2024 22: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 1t6H0c-0007zA-Tm; Wed, 30 Oct 2024 22:17:46 +0000
Received: by outflank-mailman (input) for mailman id 828423;
 Wed, 30 Oct 2024 22:17: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=8sgq=R2=kernel.org=helgaas@srs-se1.protection.inumbo.net>)
 id 1t6H0b-0007yl-FD
 for xen-devel@lists.xenproject.org; Wed, 30 Oct 2024 22:17:45 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org
 [2604:1380:45d1:ec00::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c73ae9c3-970c-11ef-a0c3-8be0dac302b0;
 Wed, 30 Oct 2024 23:17:41 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 1B8A0A4362E;
 Wed, 30 Oct 2024 22:15:44 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3913FC4CECE;
 Wed, 30 Oct 2024 22:17: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: c73ae9c3-970c-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjI2MDQ6MTM4MDo0NWQxOmVjMDA6OjMiLCJoZWxvIjoibnljLnNvdXJjZS5rZXJuZWwub3JnIn0=
X-Custom-Transaction: eyJpZCI6ImM3M2FlOWMzLTk3MGMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzI2NjYyLjAwNjA4Miwic2VuZGVyIjoiaGVsZ2Fhc0BrZXJuZWwub3JnIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730326659;
	bh=hmCcTNJwyZk0ee56ytBk9i4eOtptK5uTArpnChQPbzk=;
	h=Date:From:To:Cc:Subject:In-Reply-To:From;
	b=oGnfP7ArKKdfSdgdnkKr7SkEnhwI4nY+JGypMiyscKrSh2koWdUM4bEIYHcoVRtmA
	 HuGtZd7+EhsSZKGsSElcy0Ekf1Ww0XJz+CC/k+Lyv93Pjy1sctZPVHq2ye34KwR2cM
	 BK6k4mDq37WcoKSeIdS6Dykd1seb3K6MaOqwt7pucQeiJF9BIdqo96G1NTsjD7AK/F
	 RSMAKuBU3/553ttm2CAep19cPgSP8wuqNrGnio71malobZI2XoVqqJ3i5mKV/tHQzD
	 b+pchDCDpw/vI+Q3mqbdXkWdGIm9PhoPKYSd9frqB8SQkOwkBxe7BOOJjjYvM4WuEB
	 3GNefMYxm1CyQ==
Date: Wed, 30 Oct 2024 17:17:37 -0500
From: Bjorn Helgaas <helgaas@kernel.org>
To: Philipp Stanner <pstanner@redhat.com>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>,
	Sergey Shtylyov <s.shtylyov@omp.ru>,
	Basavaraj Natikar <basavaraj.natikar@amd.com>,
	Jiri Kosina <jikos@kernel.org>,
	Benjamin Tissoires <bentiss@kernel.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,
	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rasesh Mody <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com,
	Igor Mitsyanko <imitsyanko@quantenna.com>,
	Sergey Matyukevich <geomatsi@gmail.com>,
	Kalle Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>,
	Shyam Sundar S K <Shyam-sundar.S-k@amd.com>,
	Jon Mason <jdmason@kudzu.us>, Dave Jiang <dave.jiang@intel.com>,
	Allen Hubbe <allenbh@gmail.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Chen Ni <nichen@iscas.ac.cn>,
	Mario Limonciello <mario.limonciello@amd.com>,
	Ricky Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>,
	Breno Leitao <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ilpo =?utf-8?B?SsOkcnZpbmVu?= <ilpo.jarvinen@linux.intel.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Mostafa Saleh <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>,
	Yi Liu <yi.l.liu@intel.com>, Christian Brauner <brauner@kernel.org>,
	Ankit Agrawal <ankita@nvidia.com>,
	Eric Auger <eric.auger@redhat.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Ye Bin <yebin10@huawei.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Peter Ujfalusi <peter.ujfalusi@linux.intel.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Kai Vehmanen <kai.vehmanen@linux.intel.com>,
	Rui Salvaterra <rsalvaterra@gmail.com>, linux-ide@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-input@vger.kernel.org,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	ntb@lists.linux.dev, linux-pci@vger.kernel.org, kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH 00/13] Remove implicit devres from pci_intx()
Message-ID: <20241030221737.GA1223682@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20241015185124.64726-1-pstanner@redhat.com>

On Tue, Oct 15, 2024 at 08:51:10PM +0200, Philipp Stanner wrote:
> @Driver-Maintainers: Your driver might be touched by patch "Remove
> devres from pci_intx()". You might want to take a look.
> 
> Changes since the RFC [1]:
>   - Add a patch deprecating pci{m}_intx(). (Heiner, Andy, Me)
>   - Add Acked-by's already given.
>   - Export pcim_intx() as a GPL function. (Alex)
>   - Drop patch for rts5280, since this driver will be removed quite
>     soon. (Philipp Hortmann, Greg)
>   - Use early-return in pci_intx_unmanaged() and pci_intx(). (Andy)
> 
> Hi all,
> 
> this series removes a problematic feature from pci_intx(). That function
> sometimes implicitly uses devres for automatic cleanup. We should get
> rid of this implicit behavior.
> 
> To do so, a pci_intx() version that is always-managed, and one that is
> never-managed are provided. Then, all pci_intx() users are ported to the
> version they need. Afterwards, pci_intx() can be cleaned up and the
> users of the never-managed version be ported back to pci_intx().
> 
> This way we'd get this PCI API consistent again.
> 
> Patch "Remove devres from pci_intx()" obviously reverts the previous
> patches that made drivers use pci_intx_unmanaged(). But this way it's
> easier to review and approve. It also makes sure that each checked out
> commit should provide correct behavior, not just the entire series as a
> whole.
> 
> Merge plan for this is to enter through the PCI tree.
> 
> [1] https://lore.kernel.org/all/20241009083519.10088-1-pstanner@redhat.com/

I *think* this series depends on resolution of Takashi's "Restore the
original INTX_DISABLE bit by pcim_intx()" patch [2], right?

For now I'm postponing this series, but let me know if that's not the
right thing.

[2] https://lore.kernel.org/r/20241024155539.19416-1-tiwai@suse.de

> Philipp Stanner (13):
>   PCI: Prepare removing devres from pci_intx()
>   ALSA: hda_intel: Use always-managed version of pcim_intx()
>   drivers/xen: Use never-managed version of pci_intx()
>   net/ethernet: Use never-managed version of pci_intx()
>   net/ntb: Use never-managed version of pci_intx()
>   misc: Use never-managed version of pci_intx()
>   vfio/pci: Use never-managed version of pci_intx()
>   PCI: MSI: Use never-managed version of pci_intx()
>   ata: Use always-managed version of pci_intx()
>   wifi: qtnfmac: use always-managed version of pcim_intx()
>   HID: amd_sfh: Use always-managed version of pcim_intx()
>   Remove devres from pci_intx()
>   PCI: Deprecate pci_intx(), pcim_intx()
> 
>  drivers/ata/ahci.c                            |  2 +-
>  drivers/ata/ata_piix.c                        |  2 +-
>  drivers/ata/pata_rdc.c                        |  2 +-
>  drivers/ata/sata_sil24.c                      |  2 +-
>  drivers/ata/sata_sis.c                        |  2 +-
>  drivers/ata/sata_uli.c                        |  2 +-
>  drivers/ata/sata_vsc.c                        |  2 +-
>  drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +--
>  drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c |  2 +-
>  .../wireless/quantenna/qtnfmac/pcie/pcie.c    |  2 +-
>  drivers/pci/devres.c                          | 29 +++++--------------
>  drivers/pci/pci.c                             | 19 ++++--------
>  include/linux/pci.h                           |  1 +
>  sound/pci/hda/hda_intel.c                     |  2 +-
>  14 files changed, 26 insertions(+), 47 deletions(-)
> 
> -- 
> 2.47.0
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 03:34:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 03:34:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828431.1243298 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6LxI-0004H8-3x; Thu, 31 Oct 2024 03:34:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828431.1243298; Thu, 31 Oct 2024 03: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 1t6LxI-0004H1-0n; Thu, 31 Oct 2024 03:34:40 +0000
Received: by outflank-mailman (input) for mailman id 828431;
 Thu, 31 Oct 2024 03:34: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=SwVf=R3=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t6LxH-0004Gv-Cp
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 03:34:39 +0000
Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 07376621-9739-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 04:34:31 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.162.254])
 by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Xf8gw2BpVzpXgN;
 Thu, 31 Oct 2024 11:32:28 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id AA015180115;
 Thu, 31 Oct 2024 11:34:23 +0800 (CST)
Received: from [10.67.109.254] (10.67.109.254) by
 kwepemg200008.china.huawei.com (7.202.181.35) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Thu, 31 Oct 2024 11:34:21 +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: 07376621-9739-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjQ1LjI0OS4yMTIuMTg4IiwiaGVsbyI6InN6eGdhMDItaW4uaHVhd2VpLmNvbSJ9
X-Custom-Transaction: eyJpZCI6IjA3Mzc2NjIxLTk3MzktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzQ1NjcyLjAzNDMzMSwic2VuZGVyIjoicnVhbmppbmppZUBodWF3ZWkuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
Message-ID: <d1293fb3-6516-8680-d676-a68d648b904b@huawei.com>
Date: Thu, 31 Oct 2024 11:34:21 +0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [PATCH -next v4 01/19] arm64: ptrace: Replace
 interrupts_enabled() with regs_irqs_disabled()
Content-Language: en-US
To: Mark Rutland <mark.rutland@arm.com>
CC: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<catalin.marinas@arm.com>, <sstabellini@kernel.org>, <maz@kernel.org>,
	<tglx@linutronix.de>, <peterz@infradead.org>, <luto@kernel.org>,
	<kees@kernel.org>, <wad@chromium.org>, <akpm@linux-foundation.org>,
	<samitolvanen@google.com>, <arnd@arndb.de>, <ojeda@kernel.org>,
	<rppt@kernel.org>, <hca@linux.ibm.com>, <aliceryhl@google.com>,
	<samuel.holland@sifive.com>, <paulmck@kernel.org>, <aquini@redhat.com>,
	<petr.pavlu@suse.com>, <viro@zeniv.linux.org.uk>,
	<rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-2-ruanjinjie@huawei.com>
 <ZyDu9XHNmxMHBMSI@J2N7QTR9R3.cambridge.arm.com>
From: Jinjie Ruan <ruanjinjie@huawei.com>
In-Reply-To: <ZyDu9XHNmxMHBMSI@J2N7QTR9R3.cambridge.arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.67.109.254]
X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To
 kwepemg200008.china.huawei.com (7.202.181.35)



On 2024/10/29 22:19, Mark Rutland wrote:
> On Fri, Oct 25, 2024 at 06:06:42PM +0800, Jinjie Ruan wrote:
>> Implement regs_irqs_disabled(), and replace interrupts_enabled() macro
>> with regs_irqs_disabled() all over the place.
>>
>> No functional changes.
>>
> 
> Please say why, e.g.
> 
> | The generic entry code expects architecture code to provide
> | regs_irqs_disabled(regs), but arm64 does not have this and provides
> | interrupts_enabled(regs), which has the opposite polarity.
> | 
> | In preparation for moving arm64 over to the generic entry code,
> | replace arm64's interrupts_enabled() with regs_irqs_disabled() and
> | update its callers under arch/arm64.
> |
> | For the moment, a definition of interrupts_enabled() is provided for
> | the GICv3 driver. Once arch/arm implement regs_irqs_disabled(), this
> | can be removed.
> 

Thank you！ Will expand the commit message and describe the cause of the
patch also for other patches.

>> Suggested-by: Mark Rutland <mark.rutland@arm.com>
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>> ---
> 
> [...]
> 
>>  arch/arm/include/asm/ptrace.h       | 4 ++--
>>  arch/arm/kernel/hw_breakpoint.c     | 2 +-
>>  arch/arm/kernel/process.c           | 2 +-
>>  arch/arm/mm/alignment.c             | 2 +-
>>  arch/arm/mm/fault.c                 | 2 +-
> 
>>  drivers/irqchip/irq-gic-v3.c        | 2 +-
> 
> I hadn't realised that the GICv3 driver was using this and hence we'd
> need to update a few places in arch/arm at the same time. Please update
> just the arch/arm64 bits, and add:
> 
> | /* 
> |  * Used by the GICv3 driver, can be removed once arch/arm implements
> |  * regs_irqs_disabled() directly.
> |  */
> | #define interrupts_enabled(regs)	(!regs_irqs_disabled(regs))
> 
> ... and then once 32-bit arm implements this we can update the GIC
> driver and remove the architecture definitions.
> 
> That way we avoid the risk of conflicts with 32-bit arm.
> 
> Mark.
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 03:35:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 03:35:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828434.1243309 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6LyI-0004l1-CS; Thu, 31 Oct 2024 03:35:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828434.1243309; Thu, 31 Oct 2024 03:35: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 1t6LyI-0004ku-9p; Thu, 31 Oct 2024 03:35:42 +0000
Received: by outflank-mailman (input) for mailman id 828434;
 Thu, 31 Oct 2024 03: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=SwVf=R3=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t6LyH-0004jo-Gv
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 03:35:41 +0000
Received: from szxga04-in.huawei.com (szxga04-in.huawei.com [45.249.212.190])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2e888b49-9739-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 04:35:35 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.162.112])
 by szxga04-in.huawei.com (SkyGuard) with ESMTP id 4Xf8kG6rGLz20qff;
 Thu, 31 Oct 2024 11:34:30 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 0C6891401F3;
 Thu, 31 Oct 2024 11:35:31 +0800 (CST)
Received: from [10.67.109.254] (10.67.109.254) by
 kwepemg200008.china.huawei.com (7.202.181.35) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Thu, 31 Oct 2024 11:35:28 +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: 2e888b49-9739-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjQ1LjI0OS4yMTIuMTkwIiwiaGVsbyI6InN6eGdhMDQtaW4uaHVhd2VpLmNvbSJ9
X-Custom-Transaction: eyJpZCI6IjJlODg4YjQ5LTk3MzktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzQ1NzM3LjIwNjQ1MSwic2VuZGVyIjoicnVhbmppbmppZUBodWF3ZWkuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
Message-ID: <69389d62-a520-fb1a-2c73-fecc9bc8a71f@huawei.com>
Date: Thu, 31 Oct 2024 11:35:28 +0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [PATCH -next v4 02/19] arm64: entry: Refactor the entry and exit
 for exceptions from EL1
Content-Language: en-US
To: Mark Rutland <mark.rutland@arm.com>
CC: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<catalin.marinas@arm.com>, <sstabellini@kernel.org>, <maz@kernel.org>,
	<tglx@linutronix.de>, <peterz@infradead.org>, <luto@kernel.org>,
	<kees@kernel.org>, <wad@chromium.org>, <akpm@linux-foundation.org>,
	<samitolvanen@google.com>, <arnd@arndb.de>, <ojeda@kernel.org>,
	<rppt@kernel.org>, <hca@linux.ibm.com>, <aliceryhl@google.com>,
	<samuel.holland@sifive.com>, <paulmck@kernel.org>, <aquini@redhat.com>,
	<petr.pavlu@suse.com>, <viro@zeniv.linux.org.uk>,
	<rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-3-ruanjinjie@huawei.com>
 <ZyDyS4TT6xgRIN1w@J2N7QTR9R3.cambridge.arm.com>
From: Jinjie Ruan <ruanjinjie@huawei.com>
In-Reply-To: <ZyDyS4TT6xgRIN1w@J2N7QTR9R3.cambridge.arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.67.109.254]
X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To
 kwepemg200008.china.huawei.com (7.202.181.35)



On 2024/10/29 22:33, Mark Rutland wrote:
> On Fri, Oct 25, 2024 at 06:06:43PM +0800, Jinjie Ruan wrote:
>> These changes refactor the entry and exit routines for the exceptions
>> from EL1. They store the RCU and lockdep state in a struct
>> irqentry_state variable on the stack, rather than recording them
>> in the fields of pt_regs, since it is safe enough for these context.
> 
> In general, please descirbe *why* we want to make the change first, e.g.
> 
> | The generic entry code uses irqentry_state_t to track lockdep and RCU
> | state across exception entry and return. For historical reasons, arm64
> | embeds similar fields within its pt_regs structure.
> |
> | In preparation for moving arm64 over to the generic entry code, pull
> | these fields out of arm64's pt_regs, and use a seperate structure,
> | matching the style of the generic entry code.
> 
>> Before:
>> 	struct pt_regs {
>> 		...
>> 		u64 lockdep_hardirqs;
>> 		u64 exit_rcu;
>> 	}
>>
>> 	enter_from_kernel_mode(regs);
>> 	...
>> 	exit_to_kernel_mode(regs);
>>
>> After:
>> 	typedef struct irqentry_state {
>> 		union {
>> 			bool    exit_rcu;
>> 			bool    lockdep;
>> 		};
>> 	} irqentry_state_t;
>>
>> 	irqentry_state_t state = enter_from_kernel_mode(regs);
>> 	...
>> 	exit_to_kernel_mode(regs, state);
> 
> I don't think this part is necessary.

Thank you, will remove it and explain why.

> 
>>
>> No functional changes.
>>
>> Suggested-by: Mark Rutland <mark.rutland@arm.com>
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>> ---
>>  arch/arm64/include/asm/ptrace.h  |  11 ++-
>>  arch/arm64/kernel/entry-common.c | 129 +++++++++++++++++++------------
>>  2 files changed, 85 insertions(+), 55 deletions(-)
>>
>> diff --git a/arch/arm64/include/asm/ptrace.h b/arch/arm64/include/asm/ptrace.h
>> index 3e5372a98da4..5156c0d5fa20 100644
>> --- a/arch/arm64/include/asm/ptrace.h
>> +++ b/arch/arm64/include/asm/ptrace.h
>> @@ -149,6 +149,13 @@ static inline unsigned long pstate_to_compat_psr(const unsigned long pstate)
>>  	return psr;
>>  }
>>  
>> +typedef struct irqentry_state {
>> +	union {
>> +		bool	exit_rcu;
>> +		bool	lockdep;
>> +	};
>> +} irqentry_state_t;
> 
> AFAICT this can be moved directly into arch/arm64/kernel/entry-common.c.
> 
>> +
>>  /*
>>   * This struct defines the way the registers are stored on the stack during an
>>   * exception. struct user_pt_regs must form a prefix of struct pt_regs.
>> @@ -169,10 +176,6 @@ struct pt_regs {
>>  
>>  	u64 sdei_ttbr1;
>>  	struct frame_record_meta stackframe;
>> -
>> -	/* Only valid for some EL1 exceptions. */
>> -	u64 lockdep_hardirqs;
>> -	u64 exit_rcu;
>>  };
>>  
>>  /* For correct stack alignment, pt_regs has to be a multiple of 16 bytes. */
>> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
>> index c547e70428d3..68a9aecacdb9 100644
>> --- a/arch/arm64/kernel/entry-common.c
>> +++ b/arch/arm64/kernel/entry-common.c
>> @@ -36,29 +36,36 @@
>>   * This is intended to match the logic in irqentry_enter(), handling the kernel
>>   * mode transitions only.
>>   */
>> -static __always_inline void __enter_from_kernel_mode(struct pt_regs *regs)
>> +static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
>>  {
>> -	regs->exit_rcu = false;
>> +	irqentry_state_t ret = {
>> +		.exit_rcu = false,
>> +	};
> 
> I realise that the generic entry code calls this 'ret' in
> irqentry_enter() and similar, but could we please use 'state'
> consistently in the arm64 code?
> 
> [...]
> 
>>  /*
>> @@ -190,9 +199,11 @@ asmlinkage void noinstr asm_exit_to_user_mode(struct pt_regs *regs)
>>   * mode. Before this function is called it is not safe to call regular kernel
>>   * code, instrumentable code, or any code which may trigger an exception.
>>   */
>> -static void noinstr arm64_enter_nmi(struct pt_regs *regs)
>> +static noinstr irqentry_state_t arm64_enter_nmi(struct pt_regs *regs)
>>  {
>> -	regs->lockdep_hardirqs = lockdep_hardirqs_enabled();
>> +	irqentry_state_t irq_state;
> 
> Likewise, please use 'state' rather than 'irq_state'.
> 
> In future we should probably have a separate structure for the NMI
> paths, and get rid of the union, which would avoid the possiblity of
> using mismatched helpers.
> 
> Mark.
> 
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 03:41:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 03:41:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828446.1243319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6M3N-0006XD-25; Thu, 31 Oct 2024 03:40:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828446.1243319; Thu, 31 Oct 2024 03:40: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 1t6M3M-0006X6-VS; Thu, 31 Oct 2024 03:40:56 +0000
Received: by outflank-mailman (input) for mailman id 828446;
 Thu, 31 Oct 2024 03:40: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=SwVf=R3=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t6M3M-0006X0-4f
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 03:40:56 +0000
Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ea2cff12-9739-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 04:40:50 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.162.254])
 by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4Xf8pw1JPKz1T9TY;
 Thu, 31 Oct 2024 11:38:32 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id E13B4180103;
 Thu, 31 Oct 2024 11:40:43 +0800 (CST)
Received: from [10.67.109.254] (10.67.109.254) by
 kwepemg200008.china.huawei.com (7.202.181.35) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Thu, 31 Oct 2024 11:40:41 +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: ea2cff12-9739-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjQ1LjI0OS4yMTIuMjU1IiwiaGVsbyI6InN6eGdhMDgtaW4uaHVhd2VpLmNvbSJ9
X-Custom-Transaction: eyJpZCI6ImVhMmNmZjEyLTk3MzktMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzQ2MDUyLjQyMDc1Mywic2VuZGVyIjoicnVhbmppbmppZUBodWF3ZWkuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
Message-ID: <bcce44bc-5047-18d9-6cb3-4e664d99a129@huawei.com>
Date: Thu, 31 Oct 2024 11:40:40 +0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [PATCH -next v4 03/19] arm64: entry: Remove
 __enter_from_user_mode()
Content-Language: en-US
To: Mark Rutland <mark.rutland@arm.com>
CC: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<catalin.marinas@arm.com>, <sstabellini@kernel.org>, <maz@kernel.org>,
	<tglx@linutronix.de>, <peterz@infradead.org>, <luto@kernel.org>,
	<kees@kernel.org>, <wad@chromium.org>, <akpm@linux-foundation.org>,
	<samitolvanen@google.com>, <arnd@arndb.de>, <ojeda@kernel.org>,
	<rppt@kernel.org>, <hca@linux.ibm.com>, <aliceryhl@google.com>,
	<samuel.holland@sifive.com>, <paulmck@kernel.org>, <aquini@redhat.com>,
	<petr.pavlu@suse.com>, <viro@zeniv.linux.org.uk>,
	<rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-4-ruanjinjie@huawei.com>
 <ZyD0WJeAhESLIBJp@J2N7QTR9R3.cambridge.arm.com>
From: Jinjie Ruan <ruanjinjie@huawei.com>
In-Reply-To: <ZyD0WJeAhESLIBJp@J2N7QTR9R3.cambridge.arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.67.109.254]
X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To
 kwepemg200008.china.huawei.com (7.202.181.35)



On 2024/10/29 22:42, Mark Rutland wrote:
> On Fri, Oct 25, 2024 at 06:06:44PM +0800, Jinjie Ruan wrote:
>> The __enter_from_user_mode() is only called by enter_from_user_mode(),
>> so replaced it with enter_from_user_mode().
> 
> As with the next two patches, all the __enter_from_*() and __exit_to_*()
> are supposed to handle the raw entry, closely matching the generic code,
> and the non-underscored enter_from_*() and exit_to_*() functions are
> supposed to be wrappers that handle (possibly instrumentable)

Sure, the __enter_from_*() and __exit_to_*() is all about the generic
code, and the enter_from_*() and exit_to_*() includes arm64-specific MTE
  check.

> arm64-specific post-entry and pre-exit logic.
> 
> I would prefer to keep that split, even though enter_from_user_mode() is
> a trivial wrapper.
> 
> Am I missing some reason we must remove the wrappers?

It is not necessary to remove these functions, just found it by chance
and cleanup them by the way, originally I thought that removing the
underline function might make the relative order of the MTE functions
look clearer.

> 
> Mark.
> 
>>
>> No functional changes.
>>
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>> ---
>>  arch/arm64/kernel/entry-common.c | 7 +------
>>  1 file changed, 1 insertion(+), 6 deletions(-)
>>
>> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
>> index 68a9aecacdb9..ccf59b44464d 100644
>> --- a/arch/arm64/kernel/entry-common.c
>> +++ b/arch/arm64/kernel/entry-common.c
>> @@ -109,7 +109,7 @@ static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
>>   * Before this function is called it is not safe to call regular kernel code,
>>   * instrumentable code, or any code which may trigger an exception.
>>   */
>> -static __always_inline void __enter_from_user_mode(void)
>> +static __always_inline void enter_from_user_mode(struct pt_regs *regs)
>>  {
>>  	lockdep_hardirqs_off(CALLER_ADDR0);
>>  	CT_WARN_ON(ct_state() != CT_STATE_USER);
>> @@ -118,11 +118,6 @@ static __always_inline void __enter_from_user_mode(void)
>>  	mte_disable_tco_entry(current);
>>  }
>>  
>> -static __always_inline void enter_from_user_mode(struct pt_regs *regs)
>> -{
>> -	__enter_from_user_mode();
>> -}
>> -
>>  /*
>>   * Handle IRQ/context state management when exiting to user mode.
>>   * After this function returns it is not safe to call regular kernel code,
>> -- 
>> 2.34.1
>>
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 03:56:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 03:56:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828452.1243329 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6MIb-0008Rr-BH; Thu, 31 Oct 2024 03:56:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828452.1243329; Thu, 31 Oct 2024 03:56: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 1t6MIb-0008Rk-7A; Thu, 31 Oct 2024 03:56:41 +0000
Received: by outflank-mailman (input) for mailman id 828452;
 Thu, 31 Oct 2024 03:56: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=SwVf=R3=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t6MIa-0008Re-0A
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 03:56:40 +0000
Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1ca236c1-973c-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 04:56:33 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.162.254])
 by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Xf99P0nw3zpXgL;
 Thu, 31 Oct 2024 11:54:33 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 7F04D180103;
 Thu, 31 Oct 2024 11:56:28 +0800 (CST)
Received: from [10.67.109.254] (10.67.109.254) by
 kwepemg200008.china.huawei.com (7.202.181.35) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Thu, 31 Oct 2024 11:56:26 +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: 1ca236c1-973c-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjQ1LjI0OS4yMTIuMTg4IiwiaGVsbyI6InN6eGdhMDItaW4uaHVhd2VpLmNvbSJ9
X-Custom-Transaction: eyJpZCI6IjFjYTIzNmMxLTk3M2MtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzQ2OTk0LjI1MDA0Niwic2VuZGVyIjoicnVhbmppbmppZUBodWF3ZWkuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
Message-ID: <49e78df6-91bf-7c63-b2d0-f36a301535da@huawei.com>
Date: Thu, 31 Oct 2024 11:56:25 +0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [PATCH -next v4 04/19] arm64: entry: Remove
 __enter_from_kernel_mode()
Content-Language: en-US
To: Mark Rutland <mark.rutland@arm.com>
CC: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<catalin.marinas@arm.com>, <sstabellini@kernel.org>, <maz@kernel.org>,
	<tglx@linutronix.de>, <peterz@infradead.org>, <luto@kernel.org>,
	<kees@kernel.org>, <wad@chromium.org>, <akpm@linux-foundation.org>,
	<samitolvanen@google.com>, <arnd@arndb.de>, <ojeda@kernel.org>,
	<rppt@kernel.org>, <hca@linux.ibm.com>, <aliceryhl@google.com>,
	<samuel.holland@sifive.com>, <paulmck@kernel.org>, <aquini@redhat.com>,
	<petr.pavlu@suse.com>, <viro@zeniv.linux.org.uk>,
	<rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-5-ruanjinjie@huawei.com>
 <ZyDzNmSgmYkXWcdD@J2N7QTR9R3.cambridge.arm.com>
From: Jinjie Ruan <ruanjinjie@huawei.com>
In-Reply-To: <ZyDzNmSgmYkXWcdD@J2N7QTR9R3.cambridge.arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.67.109.254]
X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To
 kwepemg200008.china.huawei.com (7.202.181.35)



On 2024/10/29 22:37, Mark Rutland wrote:
> On Fri, Oct 25, 2024 at 06:06:45PM +0800, Jinjie Ruan wrote:
>> The __enter_from_kernel_mode() is only called by enter_from_kernel_mode(),
>> remove it.
> 
> The point of this split is to cleanly separate the raw entry logic (in
> __enter_from_kernel_mode() from pieces that run later and can safely be
> instrumented (later in enter_from_kernel_mode()).

Hi, Mark,

I reviewed your commit bc29b71f53b1 ("arm64: entry: clarify entry/exit
helpers"), and keep these functions is to make instrumentation
boundaries more clear, and will not change them.

> 
> I had expected that a later patch would replace
> __enter_from_kernel_mode() with the generic equivalent, leaving
> enter_from_kernel_mode() unchanged. It looks like patch 16 could do that
> without this patch being necessary -- am I missing something?

Yes, you are right! these useless cleanup patches will be removed.

And when switched to generic syscall, I found that proper refactoring
would also facilitate clear code switching.

Thank you.

> 
> Mark.
> 
>>
>> No functional changes.
>>
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
>> ---
>>  arch/arm64/kernel/entry-common.c | 9 +--------
>>  1 file changed, 1 insertion(+), 8 deletions(-)
>>
>> diff --git a/arch/arm64/kernel/entry-common.c b/arch/arm64/kernel/entry-common.c
>> index ccf59b44464d..a7fd4d6c7650 100644
>> --- a/arch/arm64/kernel/entry-common.c
>> +++ b/arch/arm64/kernel/entry-common.c
>> @@ -36,7 +36,7 @@
>>   * This is intended to match the logic in irqentry_enter(), handling the kernel
>>   * mode transitions only.
>>   */
>> -static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs *regs)
>> +static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
>>  {
>>  	irqentry_state_t ret = {
>>  		.exit_rcu = false,
>> @@ -55,13 +55,6 @@ static __always_inline irqentry_state_t __enter_from_kernel_mode(struct pt_regs
>>  	rcu_irq_enter_check_tick();
>>  	trace_hardirqs_off_finish();
>>  
>> -	return ret;
>> -}
>> -
>> -static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
>> -{
>> -	irqentry_state_t ret = __enter_from_kernel_mode(regs);
>> -
>>  	mte_check_tfsr_entry();
>>  	mte_disable_tco_entry(current);
>>  
>> -- 
>> 2.34.1
>>
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 04:02:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 04:02:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828457.1243338 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6MOE-0001hX-Sv; Thu, 31 Oct 2024 04:02:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828457.1243338; Thu, 31 Oct 2024 04:02: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 1t6MOE-0001hQ-QH; Thu, 31 Oct 2024 04:02:30 +0000
Received: by outflank-mailman (input) for mailman id 828457;
 Thu, 31 Oct 2024 04:02: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=SwVf=R3=huawei.com=ruanjinjie@srs-se1.protection.inumbo.net>)
 id 1t6MOD-0001hK-Fd
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 04:02:29 +0000
Received: from szxga05-in.huawei.com (szxga05-in.huawei.com [45.249.212.191])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e6ca413c-973c-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 05:02:24 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.88.214])
 by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4Xf9Dy16cqz1HLs6;
 Thu, 31 Oct 2024 11:57:38 +0800 (CST)
Received: from kwepemg200008.china.huawei.com (unknown [7.202.181.35])
 by mail.maildlp.com (Postfix) with ESMTPS id 6EF5E1A016C;
 Thu, 31 Oct 2024 12:02:07 +0800 (CST)
Received: from [10.67.109.254] (10.67.109.254) by
 kwepemg200008.china.huawei.com (7.202.181.35) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1544.11; Thu, 31 Oct 2024 12:02:05 +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: e6ca413c-973c-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjQ1LjI0OS4yMTIuMTkxIiwiaGVsbyI6InN6eGdhMDUtaW4uaHVhd2VpLmNvbSJ9
X-Custom-Transaction: eyJpZCI6ImU2Y2E0MTNjLTk3M2MtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzQ3MzQ0Ljg5NzQyNSwic2VuZGVyIjoicnVhbmppbmppZUBodWF3ZWkuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
Message-ID: <dac18e2f-b40d-d02b-dad4-a849a6e6a764@huawei.com>
Date: Thu, 31 Oct 2024 12:02:04 +0800
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101
 Thunderbird/102.2.0
Subject: Re: [PATCH -next v4 06/19] arm64: entry: Move
 arm64_preempt_schedule_irq() into exit_to_kernel_mode()
Content-Language: en-US
To: Mark Rutland <mark.rutland@arm.com>
CC: <oleg@redhat.com>, <linux@armlinux.org.uk>, <will@kernel.org>,
	<catalin.marinas@arm.com>, <sstabellini@kernel.org>, <maz@kernel.org>,
	<tglx@linutronix.de>, <peterz@infradead.org>, <luto@kernel.org>,
	<kees@kernel.org>, <wad@chromium.org>, <akpm@linux-foundation.org>,
	<samitolvanen@google.com>, <arnd@arndb.de>, <ojeda@kernel.org>,
	<rppt@kernel.org>, <hca@linux.ibm.com>, <aliceryhl@google.com>,
	<samuel.holland@sifive.com>, <paulmck@kernel.org>, <aquini@redhat.com>,
	<petr.pavlu@suse.com>, <viro@zeniv.linux.org.uk>,
	<rmk+kernel@armlinux.org.uk>, <ardb@kernel.org>,
	<wangkefeng.wang@huawei.com>, <surenb@google.com>,
	<linus.walleij@linaro.org>, <yangyj.ee@gmail.com>, <broonie@kernel.org>,
	<mbenes@suse.cz>, <puranjay@kernel.org>, <pcc@google.com>,
	<guohanjun@huawei.com>, <sudeep.holla@arm.com>,
	<Jonathan.Cameron@huawei.com>, <prarit@redhat.com>, <liuwei09@cestc.cn>,
	<dwmw@amazon.co.uk>, <oliver.upton@linux.dev>, <kristina.martsenko@arm.com>,
	<ptosi@google.com>, <frederic@kernel.org>, <vschneid@redhat.com>,
	<thiago.bauermann@linaro.org>, <joey.gouly@arm.com>,
	<liuyuntao12@huawei.com>, <leobras@redhat.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<xen-devel@lists.xenproject.org>
References: <20241025100700.3714552-1-ruanjinjie@huawei.com>
 <20241025100700.3714552-7-ruanjinjie@huawei.com>
 <ZyD2pk285YeVmZTm@J2N7QTR9R3.cambridge.arm.com>
From: Jinjie Ruan <ruanjinjie@huawei.com>
In-Reply-To: <ZyD2pk285YeVmZTm@J2N7QTR9R3.cambridge.arm.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.67.109.254]
X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To
 kwepemg200008.china.huawei.com (7.202.181.35)



On 2024/10/29 22:52, Mark Rutland wrote:
> On Fri, Oct 25, 2024 at 06:06:47PM +0800, Jinjie Ruan wrote:
>> Move arm64_preempt_schedule_irq() into exit_to_kernel_mode(), so not
>> only __el1_irq() but also every time when kernel mode irq return,
>> there is a chance to reschedule.
> 
> We use exit_to_kernel_mode() for every non-NMI exception return to the
> kernel, not just IRQ returns.

Yes, it it not only irq but other non-NMI exception, will update it.

> 
>> As Mark pointed out, this change will have the following key impact:
>>
>>     "We'll preempt even without taking a "real" interrupt. That
>>     shouldn't result in preemption that wasn't possible before,
>>     but it does change the probability of preempting at certain points,
>>     and might have a performance impact, so probably warrants a
>>     benchmark."
> 
> For anyone following along at home, I said that at:
> 
>   https://lore.kernel.org/linux-arm-kernel/ZxejvAmccYMTa4P1@J2N7QTR9R3/
> 
> ... and there I specifically said:

Thank you!

This one and the next patch will be merged as you suggested.

I would have thought it would have been clearer to put it in
__exit_to_kernel_mode() and move it to interrupt enabled block in two steps.

> 
>> I's suggest you first write a patch to align arm64's entry code with the
>> generic code, by removing the call to arm64_preempt_schedule_irq() from
>> __el1_irq(), and adding a call to arm64_preempt_schedule_irq() in
>> __exit_to_kernel_mode(), e.g.
>>
>> | static __always_inline void __exit_to_kernel_mode(struct pt_regs *regs)
>> | {
>> | 	...
>> | 	if (interrupts_enabled(regs)) {
>> | 		...
>> | 		if (regs->exit_rcu) {
>> | 			...
>> | 		}
>> | 		...
>> | 		arm64_preempt_schedule_irq();
>> | 		...
>> | 	} else {
>> | 		...
>> | 	}
>> | }
> 
> [...]
> 
>> +#ifdef CONFIG_PREEMPT_DYNAMIC
>> +DEFINE_STATIC_KEY_TRUE(sk_dynamic_irqentry_exit_cond_resched);
>> +#define need_irq_preemption() \
>> +	(static_branch_unlikely(&sk_dynamic_irqentry_exit_cond_resched))
>> +#else
>> +#define need_irq_preemption()	(IS_ENABLED(CONFIG_PREEMPTION))
>> +#endif
>> +
>> +static void __sched arm64_preempt_schedule_irq(void)
>> +{
>> +	if (!need_irq_preemption())
>> +		return;
>> +
>> +	/*
>> +	 * Note: thread_info::preempt_count includes both thread_info::count
>> +	 * and thread_info::need_resched, and is not equivalent to
>> +	 * preempt_count().
>> +	 */
>> +	if (READ_ONCE(current_thread_info()->preempt_count) != 0)
>> +		return;
>> +
>> +	/*
>> +	 * DAIF.DA are cleared at the start of IRQ/FIQ handling, and when GIC
>> +	 * priority masking is used the GIC irqchip driver will clear DAIF.IF
>> +	 * using gic_arch_enable_irqs() for normal IRQs. If anything is set in
>> +	 * DAIF we must have handled an NMI, so skip preemption.
>> +	 */
>> +	if (system_uses_irq_prio_masking() && read_sysreg(daif))
>> +		return;
>> +
>> +	/*
>> +	 * Preempting a task from an IRQ means we leave copies of PSTATE
>> +	 * on the stack. cpufeature's enable calls may modify PSTATE, but
>> +	 * resuming one of these preempted tasks would undo those changes.
>> +	 *
>> +	 * Only allow a task to be preempted once cpufeatures have been
>> +	 * enabled.
>> +	 */
>> +	if (system_capabilities_finalized())
>> +		preempt_schedule_irq();
>> +}
>> +
>>  /*
>>   * Handle IRQ/context state management when exiting to kernel mode.
>>   * After this function returns it is not safe to call regular kernel code,
>> @@ -72,6 +114,8 @@ static noinstr irqentry_state_t enter_from_kernel_mode(struct pt_regs *regs)
>>  static void noinstr exit_to_kernel_mode(struct pt_regs *regs,
>>  					irqentry_state_t state)
>>  {
>> +	arm64_preempt_schedule_irq();
> 
> This is broken; exit_to_kernel_mode() is called for any non-NMI return
> excpetion return to the kernel, and this doesn't check that interrupts
> were enabled in the context the exception was taken from.
> 
> This will preempt in cases where we should not, e.g. if we WARN() in a section with
> IRQs disabled.
> 
> Mark.
> 


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 07:58:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 07:58:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828465.1243350 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Q47-0003TY-8u; Thu, 31 Oct 2024 07:57:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828465.1243350; Thu, 31 Oct 2024 07: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 1t6Q47-0003TR-4s; Thu, 31 Oct 2024 07:57:59 +0000
Received: by outflank-mailman (input) for mailman id 828465;
 Thu, 31 Oct 2024 07: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6Q45-0003TL-Pv
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 07:57:57 +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 d3d67fc3-975d-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 08:57:51 +0100 (CET)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-37d447de11dso567457f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 00:57:51 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c10d414csm1310391f8f.26.2024.10.31.00.57.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 00:57:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d3d67fc3-975d-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MzIiLCJoZWxvIjoibWFpbC13cjEteDQzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImQzZDY3ZmMzLTk3NWQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzYxNDcxLjU5MjkzLCJzZW5kZXIiOiJqYmV1bGljaEBzdXNlLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730361471; x=1730966271; 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=g8LurPKQp5zGBpHmwHjAhja8F8uIzUPnbeGeIdUEaTI=;
        b=PDOZDWbis1V2a6dOK4cQf25R7cLoxfaKMVIvK/Ezmd7+4puOXd6O7FyxTPSegQM4ed
         ibs/JqI5bGQO9WKNvrG2LdrygqAIMj4COqHkoxcnxuF0EZoLYYBmzoHlBIHiiC3rsVFQ
         K+70A4Fc7xqjTkyk8zO7JFwPC+wAtcyg/yb1wNZxEdQ/T2y9dJ2PD+BR0bxvQtffA/Xo
         hvs6b67cyZkCve9KXqwC2NU993YaVljOcX/l+nk/CBBz8QMBK4LL4nkhAl3IzLvxqUuy
         cp4TuBlYeyImE6k82v4KGyji9Eh3fT4NfIZLhwpmo2hgZ8LykwxpWAh1VEsUbc3TkwWR
         y+pw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730361471; x=1730966271;
        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=g8LurPKQp5zGBpHmwHjAhja8F8uIzUPnbeGeIdUEaTI=;
        b=cjRdH44reAoZOvEnkS2fI4HB0U72BcezNtfB3gZekrGfWx0lnj6SVuYRios/jLIwW6
         ga6i31NSkp+uaRtXtaqBI1WoJ9r7UtkgnGimxhbZuKxoOJE3BvI95hxjNFm0fPUUlBdD
         gorRG/3NYurVX7Ql3zRBXUsIoxCT5AwkhFC7fFnYqp8dQw1Z3pXMC/4R2mNgBsMdGsP9
         rk+dT0wZsMmrCjYW7YXBEQzDOvZ1+0n5QvYmLrhgs/GNe0bo70AuRD5Bnef5iNp2td5x
         qaOUhsUorkTjWmxdb2kTMe/ZVlXUJ/cHIJfQnS3RX1tLhO95xEe5cDL5fX+rY9s7s77j
         YBhA==
X-Forwarded-Encrypted: i=1; AJvYcCWClkJ/2U6VceusY3FiPL/gSu+nJZGedaf/UkdVn1fiW8DhujrVEPWvqXdLHWzEHFcHWHd62GPX+KM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzI6Bv/475xzxj5eg5R91R3mFo8urBN/o6T8hRzklgtAzjYCPD+
	SrXj0izaY+P4tD5ouIIZwP/2giHIoY7uMVJ3syX4MLfZCU2B/N/lUhGCptbtnw==
X-Google-Smtp-Source: AGHT+IEXb74iUv83Sx2QCFIUFKu/OTG9k9HPuj36tYd8R3BIVWhBlUMGvuwxPUntU6YJUTKhg/+XmQ==
X-Received: by 2002:a05:6000:2805:b0:37d:4657:ea7d with SMTP id ffacd0b85a97d-381bea26687mr1303924f8f.49.1730361470757;
        Thu, 31 Oct 2024 00:57:50 -0700 (PDT)
Message-ID: <dbc778eb-0c5f-4b99-ab04-020f8b69738b@suse.com>
Date: Thu, 31 Oct 2024 08:57:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive types
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Juergen Gross
 <jgross@suse.com>, Anthony PERARD <anthony.perard@vates.tech>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>,
 Christian Lindig <christian.lindig@citrix.com>, David Scott
 <dave@recoil.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
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
 <3bf067c7-617c-42c0-bf6d-4387d97658ae@suse.com>
 <D598HGJY330K.3NA7GQLUSJJ9K@cloud.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: <D598HGJY330K.3NA7GQLUSJJ9K@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.10.2024 16:08, Alejandro Vallejo wrote:
> 
> In the course of preparing this answer I just noticed that altp2m_opts suffers
> from the exact same annoyance, with the exact same fix. I just noticed while
> rebasing my Rust branch.

Hardly the only other one. See GTF_type_mask or XEN_DOMCTL_PFINFO_LTAB_MASK.

> On Wed Oct 30, 2024 at 9:14 AM GMT, Jan Beulich wrote:
>> On 29.10.2024 19:16, Alejandro Vallejo wrote:
>>> Non-boolean bitfields in the hypercall ABI make it fairly inconvenient to
>>> create bindings for any language because (a) they are always ad-hoc and are
>>> subject to restrictions regular fields are not (b) require boilerplate that
>>> regular fields do not and (c) might not even be part of the core language,
>>> forcing avoidable external libraries into any sort of generic library.
>>>
>>> This patch (it's a series merely to split roughly by maintainer) is one such
>>> case that I happened to spot while playing around. It's the grant_version
>>> field, buried under an otherwise empty grant_opts.
>>>
>>> The invariant I'd like to (slowly) introduce and discuss is that fields may
>>> have bitflags (e.g: a packed array of booleans indexed by some enumerated
>>> type), but not be mixed with wider fields in the same primitive type. This
>>> ensures any field containing an integer of any kind can be referred by pointer
>>> and treated the same way as any other with regards to sizeof() and the like.
>>
>> While I don't strictly mind, I'm also not really seeing why taking addresses
>> or applying sizeof() would be commonly necessary. Can you perhaps provide a
>> concrete example of where the present way of dealing with grant max version
>> is getting in the way? After all your use of the term "bitfield" doesn't
>> really mean C's understanding of it, so especially (c) above escapes me to a
>> fair degree.
> 
> Wall of text ahead, but I'll try to stay on point. The rationale should become
> a lot clearer after I send an RFC series with initial code to autogenerate some
> hypercall payloads from markup. The biggest question is: Can I create a
> definition language such that (a) it precisely represents the Xen ABI and (b)
> is fully type-safe under modern strongly-typed languages?
> 
> I already have a backbone I can define the ABI in, so my options when I hit
> some impedance mismatch are:
> 
>   1. Change the ABI so it matches better my means of defining it.
>   2. Change the means to define so it captures the existing ABI better.
> 
> Most of the work I've done has moved in the (2) direction so far, but I found a
> number of pain points when mapping the existing ABI to Rust that, while not
> impossible to work around, are quite annoying for no clear benefit. If
> possible, I'd like to simplify the cognitive load involved in defining, using
> and updating hypercalls rather than bending over backwards to support a
> construct that provides no real benefit. IOW: If I can define an ABI that is
> _simpler_, it follows that it's also easier to not make mistakes and it's
> easier to generate code for it.
> 
> The use of packed fields is one such case. Even in C, we create extra macros
> for creating a field, modifying it, fetching it, etc. Patches 2-6 are strict
> code removals. And even in the most extreme cases the space savings are largely
> irrelevant because the hypercall has a fixed size. We do want to pack _flags_
> as otherwise the payload size would explode pretty quickly on hypercalls with
> tons of boolean options, but I'm not aware of that being problematic for wider
> subfields (like the grant max version).
> 
> Now, being more concrete...
> 
> ##################################################################
> # IDL is simpler if the size is a property of the type
> ##################################################################
> 
> Consider the definition of the (new) max_grant_version type under the IDL I'm
> working on (it's TOML, but I don't particularly care about which markup we end
> up using).
> 
>   [[enums]]
>   name = "xen_domaincreate_max_grant_version"
>   description = "Content of the `max_grant_version` field of the domain creation hypercall."
>   typ = { tag = "u8" }
> 
>   [[enums.variants]]
>   name = "off"
>   description = "Must be used with gnttab support compiled out"
>   value = 0
> 
>   [[enums.variants]]
>   name = "v1"
>   description = "Allow the domain to use up to gnttab_v1"
>   value = 1
> 
>   [[enums.variants]]
>   name = "v2"
>   description = "Allow the domain to use up to gnttab_v2"
>   value = 2
> 
> Note that I can define a type being enumerated, can choose its specific
> variants and its width is a property of the type itself. With bitfields you're
> always in a weird position of the width not being part of the type that goes
> into it.
> 
> Should I need it as a field somewhere, then...
> 
>   [[structs.fields]]
>   name = "max_grant_version"
>   description = "Maximum grant table version the domain may be bumped to"
>   typ = { tag = "enum", args = "xen_domaincreate_max_grant_version" }
> 
> ... at which point the size of the field is given by an intrinsic property of
> the type (the typ property on the enums table) I previously defined. It's
> extensible, composable and allows me to generate readable code in both C and
> Rust.
> 
> Should I need to support full bitfields I would require a means of stating the
> start and end bits of every field, which is very bad for the sanity of whoever
> wants to maintain coherency in the ABI.
> 
> ##################################################################
> # Rust and Go don't like bitfields...
> ##################################################################
> 
> ... and neither does C, even if for historic reasons they do exist in the
> standard.

I don't think that's just for historic reasons. To interface with hardware,
alternative approaches are often more cumbersome. See how we're (slowly)
moving to using bitfields more in Xen, in favor of tons of #define-s and
more or less open-coded masking operations.

> On a slight tangent, neither Rust nor Go support bitfields in the
> core language. This was a deliberate design decision of their respective
> designers. I can't speak for Go as I'm not a Go developer, but Rust does have a
> very well-known, well-supported and very common external crate ("bitflags")
> that allows very ergonomic semantics for definition of packed booleans. As an
> example here's the flags for domain create, as spitted out by the generator I
> have.
> 
> (comments removed for brevity). This defines a bitmap indexed by the flags
> type, represented by a 32bit primitive. It's type-safe from the PoV that I
> can't just write 1 << 15 to a variable of this type and expect anything but
> screams from the compiler.
> 
>   bitflags! {
>       #[repr(C)]
>       #[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
>       pub struct XenDomaincreateFlags: u32 {
>           const Hvm = 1 << 0;
>           const Hap = 1 << 1;
>           const S3Integrity = 1 << 2;
>           const OosOff = 1 << 3;
>           const XsDomain = 1 << 4;
>           const Iommu = 1 << 5;
>           const NestedVirt = 1 << 6;
>           const Vpmu = 1 << 7;
>       }
>   }
> 
> This enables callers to have type-safe variables in a pretty ergonomic fashion:
> 
>   let flags = XenDomainCreateFlags::Hvm |
>               XenDomainCreateFlags::Hap |
>               XenDomainCreateFlags::Iommu;
> 
> and assignments to its related struct would follow regular assignment rules.
> 
> ##################################################################
> # IOW
> ##################################################################
> 
> Supporting general bitfields is annoying, even in C. Adding support in IDL for
> them is a headache if we want the descriptions to help us catch mistakes and
> language support is poor using this constructs (at best).
> 
> Can we please get rid of them?

I remain undecided. If we set forth as a goal to avoid such in the new ABI
that has been mentioned for many years, that would be a more clear cut.

Just taking the example of the gnttab max version: By switching to

    uint8_t max_grant_version;
    uint8_t rsvd0[3];

you actively make it more cumbersome to re-use the rest of the 32-bit field
as (boolean) flags. It may reasonably work for the first 8, with early
provisions it may also work for 16, yet it'll be harder / uglier for more
than that. Allowing such is, after all, the idea behind the present
"packing". (The issue would similarly exist in the new ABI, yet we could
simply decide up front that we're willing to pay that price, perhaps even
outlining up front how to best limit undesirable effects when doing so.)

Just to mention it - you didn't really answer the sizeof() / address-taking
question I raised. You provided a lot of other _useful_ background though.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 08:37:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 08:37:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828476.1243359 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6QgR-000191-BS; Thu, 31 Oct 2024 08:37:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828476.1243359; Thu, 31 Oct 2024 08:37: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 1t6QgR-00018u-8q; Thu, 31 Oct 2024 08:37:35 +0000
Received: by outflank-mailman (input) for mailman id 828476;
 Thu, 31 Oct 2024 08:37: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6QgQ-00018o-DA
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 08:37:34 +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 5da68267-9763-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 09:37:30 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-539d9fffea1so636445e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 01:37:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4327d6852c3sm17071585e9.38.2024.10.31.01.37.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 01:37:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5da68267-9763-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzQiLCJoZWxvIjoibWFpbC1sZjEteDEzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjVkYTY4MjY3LTk3NjMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzYzODUwLjIyODg4NCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730363849; x=1730968649; 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=DweqSoc2+xeO9frtw7UMPvB3jd1GLOMseumyZSAPWrw=;
        b=QB1d5gK1lQOP/aWmQ1zH+AobbY2BPWLGe9cZ0xpQEj/r8PkRJYt7Y5irPRxlQaTvRV
         yVTys3rpcBRXRzvtcuswZG8L/CPo1B/zeqQEJT3T241OigcnT+nS/ttI5BRlNYAyk9Jg
         dz1B8BUjzOfxWNgvklnqBALXLb8vVMkykw6du3ELBRgpNakMoT44Vf71367Q/SluSuzY
         9hj+z6nue8iU8iyDDYyew843Xv0PaPyb5OZfrStF5vc9EWB2NOmrvyn284H6wkXHAV6W
         875BgO/Jg0+elUSyAcqp5bbHvyYIciArrzd8/kFXqm9eJzlSHp66lW9IH5oDYOZtkeei
         JScg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730363849; x=1730968649;
        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=DweqSoc2+xeO9frtw7UMPvB3jd1GLOMseumyZSAPWrw=;
        b=SJA5oIHiQB9EECDO3AaMUHUjkXafI5ImoBO5kSWD3nEl2C4gjlUnYbpn1ps2MPcUBd
         HoWD2xjI+Jpx3qb9poRGRUfbIV6tmeuoNGkX24qb5sUFAcUQruXqrhe121vpG2nd0myu
         LaphTN/5VQhcoTxK4rkaznsCmFUDm/XOrkunG67GXn7j3IWTUycCBHtZpFYSMp3lC87r
         AcAJRvQy/GlyGJKGV8g0bq3Y7P17zUBDSfvf9Ouj1xhllwvknt3W3keczqcgZC+/X/Rp
         kxnWsGmQejHYVBlxmvcJJZTuyf30K3Hm8GX5CzIj7EL8KjTq+6TTb0kRd58B4TYppf9B
         4kRw==
X-Forwarded-Encrypted: i=1; AJvYcCXOePuKajhln80mHFJW2cit4ROWRSc2tvDtPYElr0iQpMfMEQoa02GytzflVv45F5D6qPUW/hATPmw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyU0XaX/PVtl/yC+Gob4NxYJgqBkgdiIA+zISVm9LBmvX9XIqpG
	DyxXJLajMzWtMyAhuAYm/pTuzQmSejEy2bvdzauomGsMKjeCHLr+5QbjJ0AzAw==
X-Google-Smtp-Source: AGHT+IFTXjSUWO/dQB0f65M6SLyPAWnTWlIG0fXf0drDNkJqFr02wvIxAX4WVWYi3CIZCPYeetEBSQ==
X-Received: by 2002:a05:6512:1188:b0:539:fc26:74bd with SMTP id 2adb3069b0e04-53b3490ee7dmr8646968e87.27.1730363849428;
        Thu, 31 Oct 2024 01:37:29 -0700 (PDT)
Message-ID: <e385c60d-b1ab-4b85-9908-e88345b4bb20@suse.com>
Date: Thu, 31 Oct 2024 09:37:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/io-apic: fix directed EOI when using AMD-Vi
 interrupt remapping
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Willi Junga
 <xenproject@ymy.be>, David Woodhouse <dwmw@amazon.co.uk>,
 xen-devel@lists.xenproject.org
References: <20241029110351.40531-1-roger.pau@citrix.com>
 <53034f16-682e-4081-ab7e-81338c700f85@suse.com> <ZyEf8hK-XyGn6Kp8@macbook>
 <d03f58f0-5b93-4b23-85cb-dc2c18a4eb41@suse.com> <ZyIF5qYU8dC-yYNW@macbook>
 <62f917f4-ff63-46b3-9b7f-f8d467bfa2f3@suse.com> <ZyIl4azXy3ySD2SS@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: <ZyIl4azXy3ySD2SS@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 13:26, Roger Pau Monné wrote:
> On Wed, Oct 30, 2024 at 11:57:39AM +0100, Jan Beulich wrote:
>> On 30.10.2024 11:09, Roger Pau Monné wrote:
>>> On Wed, Oct 30, 2024 at 10:41:40AM +0100, Jan Beulich wrote:
>>>> On 29.10.2024 18:48, Roger Pau Monné wrote:
>>>>> On Tue, Oct 29, 2024 at 05:43:24PM +0100, Jan Beulich wrote:
>>>>>> On 29.10.2024 12:03, Roger Pau Monne wrote:
>>>>>>> @@ -273,6 +293,13 @@ void __ioapic_write_entry(
>>>>>>>      {
>>>>>>>          __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
>>>>>>>          __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
>>>>>>> +        /*
>>>>>>> +         * Called in clear_IO_APIC_pin() before io_apic_pin_eoi is allocated.
>>>>>>> +         * Entry will be updated once the array is allocated and there's a
>>>>>>> +         * write against the pin.
>>>>>>> +         */
>>>>>>> +        if ( io_apic_pin_eoi )
>>>>>>> +            io_apic_pin_eoi[apic][pin] = e.vector;
>>>>>>
>>>>>> The comment here looks a little misleading to me. clear_IO_APIC_pin() calls
>>>>>> here to, in particular, set the mask bit. With the mask bit the vector isn't
>>>>>> meaningful anyway (and indeed clear_IO_APIC_pin() sets it to zero, at which
>>>>>> point recording IRQ_VECTOR_UNASSIGNED might be better than the bogus vector
>>>>>> 0x00).
>>>>>
>>>>> Note that clear_IO_APIC_pin() performs the call to
>>>>> __ioapic_write_entry() with raw == false, at which point
>>>>> __ioapic_write_entry() will call iommu_update_ire_from_apic() if IOMMU
>>>>> IR is enabled.  The cached 'vector' value will be the IOMMU entry
>>>>> offset for the AMD-Vi case, as the IOMMU code will perform the call to
>>>>> __ioapic_write_entry() with raw == true.
>>>>>
>>>>> What matters is that the cached value matches what's written in the
>>>>> IO-APIC RTE, and the current logic ensures this.
>>>>>
>>>>> What's the benefit of using IRQ_VECTOR_UNASSIGNED if the result is
>>>>> reading the RTE and finding that vector == 0?
>>>>
>>>> It's not specifically the vector == 0 case alone. Shouldn't we leave
>>>> the latched vector alone when writing an RTE with the mask bit set?
>>>
>>> I'm not sure what's the benefit of the extra logic to detect such
>>> cases, just to avoid a write to the io_apic_pin_eoi matrix.
>>
>> Perhaps the largely theoretical concern towards having stale data
>> somewhere. Yet ...
>>
>>>> Any still pending EOI (there should be none aiui) can't possibly
>>>> target the meaningless vector / index in such an RTE. Perhaps it was
>>>> wrong to suggest to overwrite (with IRQ_VECTOR_UNASSIGNED) what we
>>>> have on record.
>>>>
>>>> Yet at the same time there ought to be a case where the recorded
>>>> indeed moves back to IRQ_VECTOR_UNASSIGNED.
>>>
>>> The only purpose of the io_apic_pin_eoi matrix is to cache what's
>>> currently in the RTE entry 'vector' field.  I don't think we should
>>> attempt to add extra logic as to whether the entry is valid, or
>>> masked.  Higher level layers should already take care of that.  The
>>> only purpose of the logic added in this patch is to ensure the EOI is
>>> performed using what's in the RTE vector field for the requested pin.
>>> Anything else is out of scope IMO.
>>>
>>> Another option, which would allow to make the matrix store uint8_t
>>> elements would be to initialize it at allocation with the RTE vector
>>> fields currently present, IOW: do a raw read of every RTE and set the
>>> fetched vector field in io_apic_pin_eoi.  Would that be better to you,
>>> as also removing the need to ever store IRQ_VECTOR_UNASSIGNED?
>>
>> ... yes, that may make sense (and eliminate my concern there).
>>
>> I wonder whether the allocation of the array then wouldn't better be
>> moved earlier, to enable_IO_APIC(), such that clear_IO_APIC_pin()
>> already can suitably update it. In fact, since that function writes
>> zero[1], no extra reads would then be needed at all, and the array could
>> simply start out all zeroed.
> 
> I agree with the suggestion to allocate and setup the io_apic_pin_eoi
> matrix in enable_IO_APIC().  However, I'm not sure I follow your
> suggestion about the matrix starting as all zeroes being a sane state.
> 
> I think we need to do the raw RTE reads in enable_IO_APIC() before
> calling clear_IO_APIC(), otherwise clear_IO_APIC_pin() can call
> __io_apic_eoi() before any __ioapic_write_entry() has been performed,
> and hence the state of the RTE.vector field could possibly be out of
> sync with the initial value in io_apic_pin_eoi, and the EOI not take
> effect.

Oh, you're right of course. That's a (side) effect of wanting to always
use the cached value in __io_apic_eoi(), and hence never reading the RTE
there.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 08:57:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 08:57:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828482.1243368 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Qzc-0004ER-TL; Thu, 31 Oct 2024 08:57:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828482.1243368; Thu, 31 Oct 2024 08:57: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 1t6Qzc-0004EK-Qp; Thu, 31 Oct 2024 08:57:24 +0000
Received: by outflank-mailman (input) for mailman id 828482;
 Thu, 31 Oct 2024 08:57: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=XIyL=R3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t6Qzb-0004EE-L7
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 08:57:23 +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 229626d4-9766-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 09:57:19 +0100 (CET)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-5c9150f9ed4so976856a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 01:57:19 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e56645dcbsm43101266b.177.2024.10.31.01.57.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 01:57:18 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 229626d4-9766-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzYiLCJoZWxvIjoibWFpbC1lZDEteDUzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjIyOTYyNmQ0LTk3NjYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzY1MDM5LjYyMTIxNSwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730365039; x=1730969839; 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=3uizCbIY2s+221YKyswHMeA/NQsRqfyL2z9npNMZBLs=;
        b=CyOC8RWGuIHxNX7nYU+rjhkjHQRcB8KpcP4GWokakMhCTm8ZZhsRig6f7Y/FBHJ0yO
         qyCfz+1DjkqmtowKIRDhhtqN/KM2I0LxxNKNg56t2rlnAH+3pRdEqq0+df0pkiVgFb9G
         tcKyiq/EJtVd0Ts5HDCHhrwEAwvFO5e8g6LCE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730365039; x=1730969839;
        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=3uizCbIY2s+221YKyswHMeA/NQsRqfyL2z9npNMZBLs=;
        b=Fh1m0h7D1VMmt1PMzVB6vIwvNRORwEMAIyUI+RrRjBxHy6MoIO2RY4JZxeN8GpwDM8
         CuIjnqEkOown6GAprE7WXyBy3TB4sVRQ2Q9pKYsr4Z2zAb503oroenyIjzg8fisePJK+
         e2dXdWDKpYy2sNA0YD8dzyvtIOvySCmpPn6b4q8mi9NQ2w0VUHM/czZoQKOVPdvuR6eI
         EGcQl0ujwuwadTaaJhfKnktyROKvNlFlXpNXT755hkiXAjYbCE08WBEu8qlKlDjkuQ7w
         0X1UNFlImN9EVB/A80GUq01zqTkH7UCfs3KZ5EJ8G+wO9al1Cab00kdYlvUoKZcJyUya
         SIpw==
X-Gm-Message-State: AOJu0Ywz6+et33T76VnIHmTlIZTYARDXh7/glvtA7pnkGp55K5B6fZY+
	JFRpSfNIqHut5PojVlOS/w0J6K88qivGf+TTR/90GoMqWdKPHk7hs5hnjnkaZoB3znjd4nIwe17
	U
X-Google-Smtp-Source: AGHT+IE5P3Oc9RQt3z9HwuijyhXGCE0M0uw/3AfDk+hylBvDGef/9D3D7SXdf0BNoeM5at29INqNNQ==
X-Received: by 2002:a17:907:970a:b0:a9a:4a:284a with SMTP id a640c23a62f3a-a9de5d8690amr1839220466b.26.1730365038748;
        Thu, 31 Oct 2024 01:57:18 -0700 (PDT)
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>,
	Willi Junga <xenproject@ymy.be>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4] x86/io-apic: fix directed EOI when using AMD-Vi interrupt remapping
Date: Thu, 31 Oct 2024 09:57:13 +0100
Message-ID: <20241031085713.6156-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.46.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When using AMD-Vi interrupt remapping the vector field in the IO-APIC RTE is
repurposed to contain part of the offset into the remapping table.  Previous to
2ca9fbd739b8 Xen had logic so that the offset into the interrupt remapping
table would match the vector.  Such logic was mandatory for end of interrupt to
work, since the vector field (even when not containing a vector) is used by the
IO-APIC to find for which pin the EOI must be performed.

A simple solution wold be to read the IO-APIC RTE each time an EOI is to be
performed, so the raw value of the vector field can be obtained.  However
that's likely to perform poorly.  Instead introduce a cache to store the
EOI handles when using interrupt remapping, so that the IO-APIC driver can
translate pins into EOI handles without having to read the IO-APIC RTE entry.
Note that to simplify the logic such cache is used unconditionally when
interrupt remapping is enabled, even if strictly it would only be required
for AMD-Vi.

Reported-by: Willi Junga <xenproject@ymy.be>
Suggested-by: David Woodhouse <dwmw@amazon.co.uk>
Fixes: 2ca9fbd739b8 ('AMD IOMMU: allocate IRTE entries instead of using a static mapping')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v3:
 - Remove the usage of a sentinel value (again).
 - Allocate an initialize the cache in enable_IO_APIC().
 - Fix MISRA compliance.
 - Use xvmalloc.

Changes since v2:
 - Restore sentinel value.

Changes since v1:
 - s/apic_pin_eoi/io_apic_pin_eoi/.
 - Expand comment about io_apic_pin_eoi usage and layout.
 - Use uint8_t instead of unsigned int as array type.
 - Do not use a sentinel value.
---
 xen/arch/x86/io_apic.c | 76 +++++++++++++++++++++++++++++++++++++++---
 1 file changed, 71 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index e40d2f7dbd75..4e5ee2b890a0 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -29,6 +29,7 @@
 #include <xen/acpi.h>
 #include <xen/keyhandler.h>
 #include <xen/softirq.h>
+#include <xen/xvmalloc.h>
 
 #include <asm/hpet.h>
 #include <asm/mc146818rtc.h>
@@ -71,6 +72,24 @@ static int apic_pin_2_gsi_irq(int apic, int pin);
 
 static vmask_t *__read_mostly vector_map[MAX_IO_APICS];
 
+/*
+ * Store the EOI handle when using interrupt remapping.
+ *
+ * If using AMD-Vi interrupt remapping the IO-APIC redirection entry remapped
+ * format repurposes the vector field to store the offset into the Interrupt
+ * Remap table.  This breaks directed EOI, as the CPU vector no longer matches
+ * the contents of the RTE vector field.  Add a translation cache so that
+ * directed EOI uses the value in the RTE vector field when interrupt remapping
+ * is enabled.
+ *
+ * Intel VT-d Xen code still stores the CPU vector in the RTE vector field when
+ * using the remapped format, but use the translation cache uniformly in order
+ * to avoid extra logic to differentiate between VT-d and AMD-Vi.
+ *
+ * The matrix is accessed as [#io-apic][#pin].
+ */
+static uint8_t **io_apic_pin_eoi;
+
 static void share_vector_maps(unsigned int src, unsigned int dst)
 {
     unsigned int pin;
@@ -273,6 +292,17 @@ void __ioapic_write_entry(
     {
         __io_apic_write(apic, 0x11 + 2 * pin, eu.w2);
         __io_apic_write(apic, 0x10 + 2 * pin, eu.w1);
+        /*
+         * Might be called before io_apic_pin_eoi is allocated.  Entry will be
+         * initialized to the RTE value once the cache is allocated.
+         *
+         * The vector field is only cached for raw RTE writes when using IR.
+         * In that case the vector field might have been repurposed to store
+         * something different than the CPU vector, and hence need to be cached
+         * for performing EOI.
+         */
+        if ( io_apic_pin_eoi )
+            io_apic_pin_eoi[apic][pin] = e.vector;
     }
     else
         iommu_update_ire_from_apic(apic, pin, e.raw);
@@ -288,18 +318,36 @@ static void ioapic_write_entry(
     spin_unlock_irqrestore(&ioapic_lock, flags);
 }
 
-/* EOI an IO-APIC entry.  Vector may be -1, indicating that it should be
+/*
+ * EOI an IO-APIC entry.  Vector may be -1, indicating that it should be
  * worked out using the pin.  This function expects that the ioapic_lock is
  * being held, and interrupts are disabled (or there is a good reason not
  * to), and that if both pin and vector are passed, that they refer to the
- * same redirection entry in the IO-APIC. */
+ * same redirection entry in the IO-APIC.
+ *
+ * If using Interrupt Remapping the vector is always ignored because the RTE
+ * remapping format might have repurposed the vector field and a cached value
+ * of the EOI handle to use is obtained based on the provided apic and pin
+ * values.
+ */
 static void __io_apic_eoi(unsigned int apic, unsigned int vector, unsigned int pin)
 {
     /* Prefer the use of the EOI register if available */
     if ( ioapic_has_eoi_reg(apic) )
     {
-        /* If vector is unknown, read it from the IO-APIC */
-        if ( vector == IRQ_VECTOR_UNASSIGNED )
+        if ( io_apic_pin_eoi )
+            /*
+             * If the EOI handle is cached use it. When using AMD-Vi IR the CPU
+             * vector no longer matches the vector field in the RTE, because
+             * the RTE remapping format repurposes the field.
+             *
+             * The value in the RTE vector field must always be used to signal
+             * which RTE to EOI, hence use the cached value which always
+             * mirrors the contents of the raw RTE vector field.
+             */
+            vector = io_apic_pin_eoi[apic][pin];
+        else if ( vector == IRQ_VECTOR_UNASSIGNED )
+             /* If vector is unknown, read it from the IO-APIC */
             vector = __ioapic_read_entry(apic, pin, true).vector;
 
         *(IO_APIC_BASE(apic)+16) = vector;
@@ -1317,12 +1365,30 @@ void __init enable_IO_APIC(void)
             vector_map[apic] = vector_map[0];
     }
 
+    if ( iommu_intremap != iommu_intremap_off )
+    {
+        io_apic_pin_eoi = xvmalloc_array(typeof(*io_apic_pin_eoi), nr_ioapics);
+        BUG_ON(!io_apic_pin_eoi);
+    }
+
     for(apic = 0; apic < nr_ioapics; apic++) {
         int pin;
-        /* See if any of the pins is in ExtINT mode */
+
+        if ( io_apic_pin_eoi )
+        {
+            io_apic_pin_eoi[apic] = xvmalloc_array(typeof(**io_apic_pin_eoi),
+                                                   nr_ioapic_entries[apic]);
+            BUG_ON(!io_apic_pin_eoi[apic]);
+        }
+
+        /* See if any of the pins is in ExtINT mode and cache EOI handle */
         for (pin = 0; pin < nr_ioapic_entries[apic]; pin++) {
             struct IO_APIC_route_entry entry = ioapic_read_entry(apic, pin, false);
 
+            if ( io_apic_pin_eoi )
+                io_apic_pin_eoi[apic][pin] =
+                    ioapic_read_entry(apic, pin, true).vector;
+
             /* If the interrupt line is enabled and in ExtInt mode
              * I have found the pin where the i8259 is connected.
              */
-- 
2.46.0



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:08:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:08:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828492.1243379 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RAI-0006Ij-Sp; Thu, 31 Oct 2024 09:08:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828492.1243379; Thu, 31 Oct 2024 09: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 1t6RAI-0006Ic-Pz; Thu, 31 Oct 2024 09:08:26 +0000
Received: by outflank-mailman (input) for mailman id 828492;
 Thu, 31 Oct 2024 09:08: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6RAH-0006IW-Gi
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:08:25 +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 ad51bd88-9767-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 10:08:21 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4315f24a6bbso5377765e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:08:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4327d5e7c51sm17838615e9.25.2024.10.31.02.08.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:08:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad51bd88-9767-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzEiLCJoZWxvIjoibWFpbC13bTEteDMzMS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImFkNTFiZDg4LTk3NjctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzY1NzAxLjk3MTYwMSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730365701; x=1730970501; 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=cZEWSP3mjYpMtJHQX7RTabuBeg1mBuVEQL7ca+gHe0E=;
        b=druEu0Eajn399uN6pMp/ywWBfOuCuAedqrHVcTFjgQvvSM6vFClKndOX8BBOD6WVcj
         lyEgZVM3vMG7q3izWdkqrDQP7smiIAQifJnIt2E3sz8y3/VgdS3qUhFyersHCCWdpOH9
         5m/s1Fp+va+cQCYfTfozAT3hKwg8PwxbY/vh79kz9tmv8yIIcAoapECFS/6906P6QW0+
         kEOetHwFxmVOkN+kWuMkAVUX7N6Tv/tN87JbSRIfyA8XdXcJiWwWTeUswAIpjYHu9IYN
         r87GWQ7aYqdY6jDtpk2BWIeYhQ89SiEzch6Nbho9XSpG6QVIpxCQfUenMATan1n7hr8e
         9wQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730365701; x=1730970501;
        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=cZEWSP3mjYpMtJHQX7RTabuBeg1mBuVEQL7ca+gHe0E=;
        b=w7Qx18onoYzo0MzLJY20/Ri2f4OhyGhT4gNGKnOoZS0tYV+C/REWmdn/i+Fjit/qFK
         nur67Shw8mbb/hrrVBM8YafED/guh7mrtfJ3RDEhj8GCgG/1tNfsBX9drRWLvX31ZIvx
         fmnUCoS/3AsBIs+bXjdQ9DcLz2WF7Hc+8eVgEZLvQ6s1U96s7GLfl5U5oYGGjvyEOA/0
         eHlOL9Q9IknN5KEyTHAry2WKkEVcH8UvXlSYKvZ2oaIr5Phc2J9HGto4dW37BdLes5kv
         /7XEYDW8+A9O4K/BwwN5cp8tLGUtngBhLGvKquCClq/YZj3CCIP/+fUtNUIrtBys41tY
         0qbA==
X-Forwarded-Encrypted: i=1; AJvYcCVJxwOHphEf7Cdt7AiS36EFwAtwnq2hnnSpV3txErGxvbGaYxMJgucmCE/Dq8FjORRZcikqHTeFvHw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwoDdD0wgdDWBgoALN3I+dNidyWyKdN8dzHM9uQQ2yFtpJRlllU
	F0V6i2tXwM15KFvbmOXh1Ctj6QJu8kPBVdS8dbG0v1jxzaQdiVNotIce6iTc9w==
X-Google-Smtp-Source: AGHT+IHohCX5UV8MKdZ9JumM9RZH2+TbNsj56rXIhz0v/uN4tOf2x0nyvf18WyY+I9RSVuG7ANgsog==
X-Received: by 2002:a05:600c:358c:b0:431:5522:e009 with SMTP id 5b1f17b1804b1-4319ac9a91cmr157676855e9.12.1730365700918;
        Thu, 31 Oct 2024 02:08:20 -0700 (PDT)
Message-ID: <e067e169-3e63-4d01-963f-9dde3bb8e3b7@suse.com>
Date: Thu, 31 Oct 2024 10:08:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] xen/riscv: introduce setup_mm()
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
 <28240dcfc04a11237db553c4e0ecb372aa0fe9ac.1729697111.git.oleksii.kurochko@gmail.com>
 <8ec6463e-40a8-4d60-b4c2-ea964a06c572@suse.com>
 <76fc4999eded2ce74fe73bc81998e92147cf802a.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: <76fc4999eded2ce74fe73bc81998e92147cf802a.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 17:50, oleksii.kurochko@gmail.com wrote:
> On Wed, 2024-10-30 at 11:25 +0100, Jan Beulich wrote:
>> On 23.10.2024 17:50, Oleksii Kurochko wrote:
>>> @@ -25,8 +27,11 @@
>>>  
>>>  static inline void *maddr_to_virt(paddr_t ma)
>>>  {
>>> -    BUG_ON("unimplemented");
>>> -    return NULL;
>>> +    unsigned long va_offset = maddr_to_directmapoff(ma);
>>> +
>>> +    ASSERT(va_offset < DIRECTMAP_SIZE);
>>> +
>>> +    return (void *)(XENHEAP_VIRT_START + va_offset);
>>>  }
>>
>> I'm afraid I'm not following why this uses XENHEAP_VIRT_START, when
>> it's all about the directmap. I'm in trouble with XENHEAP_VIRT_START
>> in the first place: You don't have a separate "heap" virtual address
>> range, do you?
> The name may not be ideal for RISC-V. I borrowed it from Arm, intending
> to account for cases where the directmap virtual start might not align
> with DIRECTMAP_VIRT_START due to potential adjustments for superpage
> mapping.
> And my understanding is that XENHEAP == DIRECTMAP in case of Arm64.

Just to mention it: If I looked at Arm64 in isolation (without also
considering Arm32, and hence the desire to keep code common where possible),
I'd consider the mere existence of XENHEAP_VIRT_START (without an
accompanying XENHEAP_VIRT_SIZE) a mistake. Therefore for RISC-V its
introduction may be justified by (remote) plans to also cover RV32 at some
point. Yet such than needs sayin explicitly in the description.

>>> @@ -423,3 +424,123 @@ void * __init early_fdt_map(paddr_t
>>> fdt_paddr)
>>>  
>>>      return fdt_virt;
>>>  }
>>> +
>>> +#ifndef CONFIG_RISCV_32
>>
>> I'd like to ask that you be more selective with this #ifdef (or omit
>> it
>> altogether here). setup_mm() itself, for example, looks good for any
>> mode.
> Regarding setup_mm() as they have pretty different implementations for
> 32 and 64 bit versions.

Not setup_mm() itself, it seems. Its helpers - sure.

>>> +    if ( map_pages_to_xen(FRAMETABLE_VIRT_START, base_mfn,
>>> +                          PFN_DOWN(frametable_size),
>>> +                          PAGE_HYPERVISOR_RW) )
>>> +        panic("Unable to setup the frametable mappings\n");
>>> +
>>> +    memset(&frame_table[0], 0, nr_mfns * sizeof(struct
>>> page_info));
>>> +    memset(&frame_table[nr_mfns], -1,
>>> +           frametable_size - (nr_mfns * sizeof(struct
>>> page_info)));
>>
>> Here (see comments on v1) you're still assuming ps == 0.
> Do you refer to ?
> ```
>> +/* Map a frame table to cover physical addresses ps through pe */
>> +static void __init setup_frametable_mappings(paddr_t ps, paddr_t pe)
>> +{
>> +    unsigned long nr_mfns = mfn_x(mfn_add(maddr_to_mfn(pe), -1)) -
> 
> This looks to be accounting for a partial page at the end.
> 
>> +                            mfn_x(maddr_to_mfn(ps)) + 1;
> 
> Whereas this doesn't do the same at the start. The sole present caller
> passes 0, so that's going to be fine for the time being. Yet it's a
> latent pitfall. I'd recommend to either drop the function parameter, or
> to deal with it correctly right away.
> ```
> And I've added aligned_ps to cover the case that ps could be not page
> aligned.

Not this, no, but ...

> Or are you refering to 0 in memset(&frame_table[0],...)?

... this. If the start address wasn't 0, you'd need to invalidate a
region at the start of the table, just as you invalidate a region at the
end.

>>> +/* Map the region in the directmap area. */
>>> +static void __init setup_directmap_mappings(unsigned long
>>> base_mfn,
>>> +                                            unsigned long nr_mfns)
>>> +{
>>> +    int rc;
>>> +
>>> +    /* First call sets the directmap physical and virtual offset.
>>> */
>>> +    if ( mfn_eq(directmap_mfn_start, INVALID_MFN) )
>>> +    {
>>> +        directmap_mfn_start = _mfn(base_mfn);
>>> +
>>> +        /*
>>> +         * The base address may not be aligned to the second level
>>> +         * size (e.g. 1GB when using 4KB pages). This would
>>> prevent
>>> +         * superpage mappings for all the regions because the
>>> virtual
>>> +         * address and machine address should both be suitably
>>> aligned.
>>> +         *
>>> +         * Prevent that by offsetting the start of the directmap
>>> virtual
>>> +         * address.
>>> +         */
>>> +        directmap_virt_start = DIRECTMAP_VIRT_START +
>>> pfn_to_paddr(base_mfn);
>>
>> Don't you need to mask off top bits of the incoming MFN here, or else
>> you
>> may waste a huge part of direct map space?
> Yes, it will result in a loss of direct map space, but we still have a
> considerable amount available in Sv39 mode and higher modes. The
> largest RAM_START I see currently is 0x1000000000, which means we would
> lose 68 GB. However, our DIRECTMAP_SIZE is 308 GB, so there is still
> plenty of free space available, and we can always increase
> DIRECTMAP_SIZE since we have a lot of free virtual address space in
> Sv39.

Wow, 68 out of 308 - that's more than 20%. I'm definitely concerned of
this then.

> Finally, regarding masking off the top bits of mfn, I'm not entirely
> clear on how this should work. If I understand correctly, if I mask off
> certain top bits in mfn, then I would need to unmask those same top
> bits in maddr_to_virt() and virt_to_maddr(). Is that correct?
> 
> Another point I’m unclear on is which specific part of the top bits
> should be masked.

You want to "move" the directmap such that the first legitimate RAM
page is within the first (large/huge) page mapping of the directmap.
IOW the "virtual" start of the directmap would move down in VA space.
That still leaves things at a simple offset calculation when
translating VA <-> PA.

To give an example: Let's assume RAM starts at 61.5 Gb, and you want to
use 1Gb mappings for the bulk of the directmap. Then the "virtual" start
of the directmap would shift down to DIRECTMAP_VIRT_START - 60Gb,
such that the first RAM page would be mapped at
DIRECTMAP_VIRT_START + 1.5Gb. IOW it would be the low 30 address bits of
the start address that you use (30 - PAGE_SHIFT for the MFN), with the
higher bits contributing to the offset involved in the VA <-> PA
translation. Values used depend on the (largest) page size you mean to
use for the direct map: On systems with terabytes of memory (demanding
Sv48 or even Sv57 mode) you may want to use 512Gb mappings, and hence
you'd then need to mask the low 39 bits (or 48 for 256Tb mappings).

>>> +void __init setup_mm(void)
>>> +{
>>> +    const struct membanks *banks = bootinfo_get_mem();
>>> +    paddr_t ram_start = INVALID_PADDR;
>>> +    paddr_t ram_end = 0;
>>> +    paddr_t ram_size = 0;
>>> +    unsigned int i;
>>> +
>>> +    /*
>>> +     * We need some memory to allocate the page-tables used for
>>> the directmap
>>> +     * mappings. But some regions may contain memory already
>>> allocated
>>> +     * for other uses (e.g. modules, reserved-memory...).
>>> +     *
>>> +     * For simplicity, add all the free regions in the boot
>>> allocator.
>>> +     */
>>> +    populate_boot_allocator();
>>> +
>>> +    total_pages = 0;
>>> +
>>> +    for ( i = 0; i < banks->nr_banks; i++ )
>>> +    {
>>> +        const struct membank *bank = &banks->bank[i];
>>> +        paddr_t bank_end = bank->start + bank->size;
>>> +
>>> +        ram_size += ROUNDDOWN(bank->size, PAGE_SIZE);
>>
>> As before - if a bank doesn't cover full pages, this may give the
>> impression
>> of there being more "total pages" than there are.
> Since it rounds down to PAGE_SIZE, if ram_start is 2K and the total
> size of a bank is 11K, ram_size will end up being 8K, so the "total
> pages" will cover less RAM than the actual size of the RAM bank.

ram_start at 2k but bank size being 13k would yield 2 usable pages
(first partial page of 2k unusable and last partial page of 3k
unusable), yet ram_size of 12k (3 pages). You need to consider the
common case; checking things work for a randomly chosen example isn't
enough.

>>> +        ram_start = min(ram_start, bank->start);
>>> +        ram_end = max(ram_end, bank_end);
>>> +
>>> +        setup_directmap_mappings(PFN_DOWN(bank->start),
>>> +                                 PFN_DOWN(bank->size));
>>
>> Similarly I don't think this is right when both start and size aren't
>> multiple of PAGE_SIZE. You may map an unsuable partial page at the
>> start,
>> and then fail to map a fully usable page at the end.
> ram_size should be a multiple of PAGE_SIZE because we have:
>     ram_size += ROUNDDOWN(bank->size, PAGE_SIZE);
> 
> Do you know of any examples where bank->start isn't aligned to
> PAGE_SIZE?

Question is the other way around: Is it specified anywhere that start (and
size) _need_ to be aligned? And if it is - do all firmware makers play by
that (on x86 at least specifications often mean pretty little to firmware
people, apparently)?

> Should be somewhere mentioned what is legal physical address
> for RAM start? If it’s not PAGE_SIZE-aligned, then it seems we have no
> choice but to use ALIGNUP(..., PAGE_SIZE), which would mean losing part
> of the bank.

Correct - partial pages simply cannot be used (except in adhoc ways, which
likely isn't very desirable).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:16:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:16:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828502.1243389 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RHs-00080Z-N5; Thu, 31 Oct 2024 09:16:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828502.1243389; Thu, 31 Oct 2024 09:16: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 1t6RHs-00080S-KK; Thu, 31 Oct 2024 09:16:16 +0000
Received: by outflank-mailman (input) for mailman id 828502;
 Thu, 31 Oct 2024 09:16: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6RHr-00080M-74
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:16:15 +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 c4f70f94-9768-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 10:16:11 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-37d4b0943c7so428577f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:16:11 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c113e67csm1504893f8f.75.2024.10.31.02.16.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:16:10 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c4f70f94-9768-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MmYiLCJoZWxvIjoibWFpbC13cjEteDQyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImM0ZjcwZjk0LTk3NjgtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzY2MTcxLjA3MTczNywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730366170; x=1730970970; 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=rvtwV5MEtl3Wpwsvg9gUoJDgTgrZsbjGx9k5Vq15b5g=;
        b=JnMvEF/3MuzgfH7AyMsokyd5lHl26iJvS+5zZSMLbzYeMYJBE5raoCEat+aRezAfrb
         ceo+Ea5r0vnmjNZUktYjpj9Pmq0fzXZTC25Qscs5J7SaTWBfyCxkKtQ8sCc/m9SsUNS7
         CqVBWpCNPRWWsyP5pCmBnIuvDR2Cu/yoL45aMJ9V1+Ds95IX+JHPqpqOSLmfxk0fEoRl
         KV6JiPxGPiNhhaUYYsjXVZ+SgxgO9RLCTGs2zjJtdHl3bBg48mZcF0vSCRsnCFQHE1gs
         UjHc2dJ+XN6LPAqk3leB+smFAG90lcw4X2aVPUcOgrBH9Haki07Rn0u2PJrqcC6zIH8q
         dd+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730366170; x=1730970970;
        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=rvtwV5MEtl3Wpwsvg9gUoJDgTgrZsbjGx9k5Vq15b5g=;
        b=sY+jp2X4qcJqPwrjwH04noisinEhFhdcJRlAIkkeWYcgp49D4qBSaMHJNitBTr07UO
         Wl+DI+7BzJCjymvk+4PEmEAL1QqA6JTGgQZp9Bn+3FiORB5dn182eGBWAGoyptEvR7Z4
         ZIU7m4BYEKFGST7oFe6j0Rx4s/dkXdAn1XTYcGuhpNR8/NMAgbqkLaq063vqT5BE1HqT
         QUb2wcTYu9l4S50PgVQAunEeIk0HvNKH31ZcaPzbL0pM/IJ8sri8D/euM890f6HFozLm
         nsqRGTx+UEOfSC0xWDS6NGXyn9FqRDBELMGAcFzhGmNDGLtljzDURM3b2X8j97X7uTFQ
         Xj0A==
X-Gm-Message-State: AOJu0YxuDGg/eiMnq3Xxd2YU9XkuJTN3lFQcfmaCpPvDr9QI22cmoHUn
	BSw0rpd/qa4Llmap6vOsgIqv/qHzw1Eb09Z5e5Iqf/MCAqjgGy46jnnnmrDesg==
X-Google-Smtp-Source: AGHT+IFedjwCO4XZM57pkpII234KEYhbW9XY8yCGBY+O15rgN5GUZcmL4+3voO59uttIzvrPqlBUZA==
X-Received: by 2002:a05:6000:188c:b0:381:c5ee:9c00 with SMTP id ffacd0b85a97d-381c5ee9c52mr216352f8f.47.1730366170348;
        Thu, 31 Oct 2024 02:16:10 -0700 (PDT)
Message-ID: <cb97f3b1-2fad-47f7-9d9f-386914623518@suse.com>
Date: Thu, 31 Oct 2024 10:16:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook> <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook> <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
 <ZyJM_DLUkqolD7mD@macbook> <e4d75dee-3cf6-4fc1-9277-ea16ed9e0319@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: <e4d75dee-3cf6-4fc1-9277-ea16ed9e0319@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 17:51, Andrew Cooper wrote:
> On 30/10/2024 3:13 pm, Roger Pau Monné wrote:
>> On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
>>> On 30/10/2024 11:03 am, Roger Pau Monné wrote:
>>>> On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
>>>>> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
>>>>>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
>>>>>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
>>>>>>> index b6d9fad56773..78bc9872b09a 100644
>>>>>>> --- a/xen/arch/x86/cpu-policy.c
>>>>>>> +++ b/xen/arch/x86/cpu-policy.c
>>>>>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>>>>>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>>>>>>>  }
>>>>>>>  
>>>>>>> +/*
>>>>>>> + * Guest max policies can have any max leaf/subleaf within bounds.
>>>>>>> + *
>>>>>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
>>>>>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
>>>>>>> + */
>>>>>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
>>>>>>> +}
>>>>>>> +
>>>>>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
>>>>>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
>>>>>>> +{
>>>>>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
>>>>>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
>>>>>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
>>>>>>> +}
>>>>>> I think this what I'm going to ask is future work.  After the
>>>>>> modifications done to the host policy by max functions
>>>>>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
>>>>>> better be done taking into account the contents of the policy, rather
>>>>>> than capping to the host values?
>>>>>>
>>>>>> (note this comment is strictly for guest_common_default_leaves(), the
>>>>>> max version is fine using ARRAY_SIZE).
>>>>> I'm afraid I don't follow.
>>>>>
>>>>> calculate_{pv,hvm}_max_policy() don't modify the host policy.
>>>> Hm, I don't think I've expressed myself clearly, sorry.  Let me try
>>>> again.
>>>>
>>>> calculate_{hvm,pv}_max_policy() extends the host policy by possibly
>>>> setting new features, and such extended policy is then used as the
>>>> base for the PV/HVM default policies.
>>>>
>>>> Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
>>>> having bits set past the max {sub,}leaf in the host policy, as it's
>>>> based in {hvm,pv}_def_cpu_policy that might have such bits set?
>>> Oh, right.
>>>
>>> This patch doesn't change anything WRT that.
>> Indeed, didn't intend my comment to block it, just that I think at
>> some point the logic in guest_common_default_leaves() will need to be
>> expanded.
>>
>>> But I think you're right that we do risk getting into that case (in
>>> principle at least) because of how guest_common_*_feature_adjustment() work.
>>>
>>> Furthermore, the bug will typically get hidden because we serialise
>>> based on the max_leaf/subleaf, and will discard feature words outside of
>>> the max_leaf/subleaf bounds.
>> Yes, once we serialize it for toolstack consumption the leafs will be
>> implicitly zeroed.
>>
>>> I suppose we probably want a variation of x86_cpu_featureset_to_policy()
>>> which extends the max_leaf/subleaf based on non-zero values in leaves. 
>>> (This already feels like it's going to be an ugly algorithm.)
>> Hm, I was thinking that we would need to adjust
>> guest_common_default_leaves() to properly shrink the max {sub,}leaf
>> fields from the max policies.
> 
> Hmm.  What we'd do is have default inherit max's ARRAY_SIZES(), then do
> all the existing logic, then as the final step, shrink the default
> policies, vaguely per Jan's plan.

Yet, beyond what my present patch has, not below anything the tool stack
has asked for explicitly.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:18:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:18:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828507.1243399 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RKO-0000S2-4U; Thu, 31 Oct 2024 09:18:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828507.1243399; Thu, 31 Oct 2024 09:18: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 1t6RKO-0000Rv-1U; Thu, 31 Oct 2024 09:18:52 +0000
Received: by outflank-mailman (input) for mailman id 828507;
 Thu, 31 Oct 2024 09:18: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=Uh3x=R3=suse.de=tiwai@srs-se1.protection.inumbo.net>)
 id 1t6RKN-0000Rp-GC
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:18:51 +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 21c63721-9769-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 10:18:46 +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 316DC1F835;
 Thu, 31 Oct 2024 09:18: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 AB49F136A5;
 Thu, 31 Oct 2024 09:18: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 uBqmKHNLI2f+JgAAD6G6ig
 (envelope-from <tiwai@suse.de>); Thu, 31 Oct 2024 09:18: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: 21c63721-9769-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE5NS4xMzUuMjIzLjEzMSIsImhlbG8iOiJzbXRwLW91dDIuc3VzZS5kZSJ9
X-Custom-Transaction: eyJpZCI6IjIxYzYzNzIxLTk3NjktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzY2MzI2Ljk3NjU5MSwic2VuZGVyIjoidGl3YWlAc3VzZS5kZSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1730366325; 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=8flyOdsN1Wv/gVQcgw6n18uLkNhAqVdP/ybYJ4cMEt4=;
	b=Ea95kNviZxvF/MWH1YNektTuRzffklUHTKPVt+MLD8KNcUuk+RAFwME8rOfLDmUgeoNZCY
	uHKrZVrKtjwKmHCfcdY6P5Xf2yD0jxjFQO3JjxZEAJHe6L/4OpVl2MN++X5CKYP5BBRjwP
	GYrY0rVxH2Fcy1Msv0+vT1N9t5TR4LA=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1730366325;
	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=8flyOdsN1Wv/gVQcgw6n18uLkNhAqVdP/ybYJ4cMEt4=;
	b=+lYYZtpATJvtnnHjt9JH6YqR8hovRj92QK7IQ/MlTx3aBUOCUlkgzMYDVjUJg00CqGIqAq
	nLXkrGkIXGcGRXDg==
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.de header.s=susede2_rsa header.b=Ea95kNvi;
	dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=+lYYZtpA
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1730366325; 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=8flyOdsN1Wv/gVQcgw6n18uLkNhAqVdP/ybYJ4cMEt4=;
	b=Ea95kNviZxvF/MWH1YNektTuRzffklUHTKPVt+MLD8KNcUuk+RAFwME8rOfLDmUgeoNZCY
	uHKrZVrKtjwKmHCfcdY6P5Xf2yD0jxjFQO3JjxZEAJHe6L/4OpVl2MN++X5CKYP5BBRjwP
	GYrY0rVxH2Fcy1Msv0+vT1N9t5TR4LA=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1730366325;
	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=8flyOdsN1Wv/gVQcgw6n18uLkNhAqVdP/ybYJ4cMEt4=;
	b=+lYYZtpATJvtnnHjt9JH6YqR8hovRj92QK7IQ/MlTx3aBUOCUlkgzMYDVjUJg00CqGIqAq
	nLXkrGkIXGcGRXDg==
Date: Thu, 31 Oct 2024 10:19:47 +0100
Message-ID: <87plngwrws.wl-tiwai@suse.de>
From: Takashi Iwai <tiwai@suse.de>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: Philipp Stanner <pstanner@redhat.com>,	Damien Le Moal
 <dlemoal@kernel.org>,	Niklas Cassel <cassel@kernel.org>,	Sergey Shtylyov
 <s.shtylyov@omp.ru>,	Basavaraj Natikar <basavaraj.natikar@amd.com>,	Jiri
 Kosina <jikos@kernel.org>,	Benjamin Tissoires <bentiss@kernel.org>,	Arnd
 Bergmann <arnd@arndb.de>,	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alex Dubov <oakad@yahoo.com>,	Sudarsana Kalluru <skalluru@marvell.com>,
	Manish Chopra <manishc@marvell.com>,	"David S. Miller"
 <davem@davemloft.net>,	Eric Dumazet <edumazet@google.com>,	Jakub Kicinski
 <kuba@kernel.org>,	Paolo Abeni <pabeni@redhat.com>,	Rasesh Mody
 <rmody@marvell.com>,	GR-Linux-NIC-Dev@marvell.com,	Igor Mitsyanko
 <imitsyanko@quantenna.com>,	Sergey Matyukevich <geomatsi@gmail.com>,	Kalle
 Valo <kvalo@kernel.org>,	Sanjay R Mehta <sanju.mehta@amd.com>,	Shyam Sundar
 S K <Shyam-sundar.S-k@amd.com>,	Jon Mason <jdmason@kudzu.us>,	Dave Jiang
 <dave.jiang@intel.com>,	Allen Hubbe <allenbh@gmail.com>,	Bjorn Helgaas
 <bhelgaas@google.com>,	Alex Williamson <alex.williamson@redhat.com>,
	Juergen Gross <jgross@suse.com>,	Stefano Stabellini
 <sstabellini@kernel.org>,	Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>,	Jaroslav Kysela <perex@perex.cz>,	Takashi
 Iwai <tiwai@suse.com>,	Chen Ni <nichen@iscas.ac.cn>,	Mario Limonciello
 <mario.limonciello@amd.com>,	Ricky Wu <ricky_wu@realtek.com>,	Al Viro
 <viro@zeniv.linux.org.uk>,	Breno Leitao <leitao@debian.org>,	Kevin Tian
 <kevin.tian@intel.com>,	Thomas Gleixner <tglx@linutronix.de>,	Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>,	Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>,	Mostafa Saleh
 <smostafa@google.com>,	Jason Gunthorpe <jgg@ziepe.ca>,	Yi Liu
 <yi.l.liu@intel.com>,	Christian Brauner <brauner@kernel.org>,	Ankit Agrawal
 <ankita@nvidia.com>,	Eric Auger <eric.auger@redhat.com>,	Reinette Chatre
 <reinette.chatre@intel.com>,	Ye Bin <yebin10@huawei.com>,	Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,	Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>,	Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>,	Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,	Rui Salvaterra <rsalvaterra@gmail.com>,
	linux-ide@vger.kernel.org,	linux-kernel@vger.kernel.org,
	linux-input@vger.kernel.org,	netdev@vger.kernel.org,
	linux-wireless@vger.kernel.org,	ntb@lists.linux.dev,
	linux-pci@vger.kernel.org,	kvm@vger.kernel.org,
	xen-devel@lists.xenproject.org,	linux-sound@vger.kernel.org
Subject: Re: [PATCH 00/13] Remove implicit devres from pci_intx()
In-Reply-To: <20241030221737.GA1223682@bhelgaas>
References: <20241015185124.64726-1-pstanner@redhat.com>
	<20241030221737.GA1223682@bhelgaas>
User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0
MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue")
Content-Type: text/plain; charset=US-ASCII
X-Rspamd-Queue-Id: 316DC1F835
X-Spam-Score: -3.51
X-Rspamd-Action: no action
X-Spamd-Result: default: False [-3.51 / 50.00];
	BAYES_HAM(-3.00)[100.00%];
	MID_CONTAINS_FROM(1.00)[];
	NEURAL_HAM_LONG(-1.00)[-1.000];
	R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	NEURAL_HAM_SHORT(-0.20)[-1.000];
	MIME_GOOD(-0.10)[text/plain];
	MX_GOOD(-0.01)[];
	DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	FREEMAIL_ENVRCPT(0.00)[gmail.com];
	RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_DN_SOME(0.00)[];
	FUZZY_BLOCKED(0.00)[rspamd.com];
	MIME_TRACE(0.00)[0:+];
	ARC_NA(0.00)[];
	FREEMAIL_CC(0.00)[redhat.com,kernel.org,omp.ru,amd.com,arndb.de,linuxfoundation.org,yahoo.com,marvell.com,davemloft.net,google.com,quantenna.com,gmail.com,kudzu.us,intel.com,suse.com,epam.com,perex.cz,iscas.ac.cn,realtek.com,zeniv.linux.org.uk,debian.org,linutronix.de,linux.intel.com,ziepe.ca,nvidia.com,huawei.com,invisiblethingslab.com,linux.dev,vger.kernel.org,lists.linux.dev,lists.xenproject.org];
	RCVD_TLS_ALL(0.00)[];
	DKIM_TRACE(0.00)[suse.de:+];
	RCVD_COUNT_TWO(0.00)[2];
	FROM_EQ_ENVFROM(0.00)[];
	FROM_HAS_DN(0.00)[];
	SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	TO_MATCH_ENVRCPT_SOME(0.00)[];
	RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	RCPT_COUNT_GT_50(0.00)[67];
	R_RATELIMIT(0.00)[to_ip_from(RLrrkwc4rnabsqsjbq9gcqj97h)];
	RCVD_VIA_SMTP_AUTH(0.00)[];
	DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:mid,suse.de:dkim]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Flag: NO
X-Spam-Level: 

On Wed, 30 Oct 2024 23:17:37 +0100,
Bjorn Helgaas wrote:
> 
> On Tue, Oct 15, 2024 at 08:51:10PM +0200, Philipp Stanner wrote:
> > @Driver-Maintainers: Your driver might be touched by patch "Remove
> > devres from pci_intx()". You might want to take a look.
> > 
> > Changes since the RFC [1]:
> >   - Add a patch deprecating pci{m}_intx(). (Heiner, Andy, Me)
> >   - Add Acked-by's already given.
> >   - Export pcim_intx() as a GPL function. (Alex)
> >   - Drop patch for rts5280, since this driver will be removed quite
> >     soon. (Philipp Hortmann, Greg)
> >   - Use early-return in pci_intx_unmanaged() and pci_intx(). (Andy)
> > 
> > Hi all,
> > 
> > this series removes a problematic feature from pci_intx(). That function
> > sometimes implicitly uses devres for automatic cleanup. We should get
> > rid of this implicit behavior.
> > 
> > To do so, a pci_intx() version that is always-managed, and one that is
> > never-managed are provided. Then, all pci_intx() users are ported to the
> > version they need. Afterwards, pci_intx() can be cleaned up and the
> > users of the never-managed version be ported back to pci_intx().
> > 
> > This way we'd get this PCI API consistent again.
> > 
> > Patch "Remove devres from pci_intx()" obviously reverts the previous
> > patches that made drivers use pci_intx_unmanaged(). But this way it's
> > easier to review and approve. It also makes sure that each checked out
> > commit should provide correct behavior, not just the entire series as a
> > whole.
> > 
> > Merge plan for this is to enter through the PCI tree.
> > 
> > [1] https://lore.kernel.org/all/20241009083519.10088-1-pstanner@redhat.com/
> 
> I *think* this series depends on resolution of Takashi's "Restore the
> original INTX_DISABLE bit by pcim_intx()" patch [2], right?

IIUC, it's not really dependent, as pcim_intx() has been used in
pci_intx() internally when the PCI device is already managed.
My patch is to correct the already existing behavior.  So I guess you
can take this series, and I'll post the revised patch later (sorry, I
was too busy for other tasks).


thanks,

Takashi

> 
> For now I'm postponing this series, but let me know if that's not the
> right thing.
> 
> [2] https://lore.kernel.org/r/20241024155539.19416-1-tiwai@suse.de
> 
> > Philipp Stanner (13):
> >   PCI: Prepare removing devres from pci_intx()
> >   ALSA: hda_intel: Use always-managed version of pcim_intx()
> >   drivers/xen: Use never-managed version of pci_intx()
> >   net/ethernet: Use never-managed version of pci_intx()
> >   net/ntb: Use never-managed version of pci_intx()
> >   misc: Use never-managed version of pci_intx()
> >   vfio/pci: Use never-managed version of pci_intx()
> >   PCI: MSI: Use never-managed version of pci_intx()
> >   ata: Use always-managed version of pci_intx()
> >   wifi: qtnfmac: use always-managed version of pcim_intx()
> >   HID: amd_sfh: Use always-managed version of pcim_intx()
> >   Remove devres from pci_intx()
> >   PCI: Deprecate pci_intx(), pcim_intx()
> > 
> >  drivers/ata/ahci.c                            |  2 +-
> >  drivers/ata/ata_piix.c                        |  2 +-
> >  drivers/ata/pata_rdc.c                        |  2 +-
> >  drivers/ata/sata_sil24.c                      |  2 +-
> >  drivers/ata/sata_sis.c                        |  2 +-
> >  drivers/ata/sata_uli.c                        |  2 +-
> >  drivers/ata/sata_vsc.c                        |  2 +-
> >  drivers/hid/amd-sfh-hid/amd_sfh_pcie.c        |  4 +--
> >  drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c |  2 +-
> >  .../wireless/quantenna/qtnfmac/pcie/pcie.c    |  2 +-
> >  drivers/pci/devres.c                          | 29 +++++--------------
> >  drivers/pci/pci.c                             | 19 ++++--------
> >  include/linux/pci.h                           |  1 +
> >  sound/pci/hda/hda_intel.c                     |  2 +-
> >  14 files changed, 26 insertions(+), 47 deletions(-)
> > 
> > -- 
> > 2.47.0
> > 


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:20:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:20:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828513.1243409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RMI-0001ua-Eo; Thu, 31 Oct 2024 09:20:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828513.1243409; Thu, 31 Oct 2024 09:20: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 1t6RMI-0001uT-Bq; Thu, 31 Oct 2024 09:20:50 +0000
Received: by outflank-mailman (input) for mailman id 828513;
 Thu, 31 Oct 2024 09:20: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6RMH-0001uN-0v
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:20:49 +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 683a9ec3-9769-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 10:20:44 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-37d538fe5f2so525398f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:20:44 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4327d5e7a13sm18452935e9.22.2024.10.31.02.20.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:20:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 683a9ec3-9769-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MmEiLCJoZWxvIjoibWFpbC13cjEteDQyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjY4M2E5ZWMzLTk3NjktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzY2NDQ0Ljk4OTY1Niwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730366444; x=1730971244; 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=O4XG4HaRC3YF4RTfDVDxvjujivPPVXX8uXA9RnYso+w=;
        b=Hq75u+rtZeDqGW5IRb3WlCzNoGZZG3U/DWZO1fveGKs2SxDCAMIxvHVp2Aeniu1ISm
         cpyoAq60Bk8lRppoFzj3TZQBmLT6R44HrWiZ84cukbQBy1wLRbOwr9I8UrIlDX3XTjLZ
         Mh8GSbAR+k24w6Jpqjuk74doB0Jcf6rK6D9g/pfUoMxHrRe0A7I2UpqrMKWL+w5RP2xV
         djRrImuqrFwmbIC15E7/dhvmcGd+g+71jQ0nkTya5jgZFKLmMz/hwyLrvyxVIJ53TfG3
         ed646vJ8FK3hlh+60oPCSuFe61xnu2/M0af4IsA0vFSZcPA0gNzf6rL27VQMa+/b/MPk
         gNdw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730366444; x=1730971244;
        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=O4XG4HaRC3YF4RTfDVDxvjujivPPVXX8uXA9RnYso+w=;
        b=Wt8LQiOf/YahGo2KxVoP1oRqiEag8gAO0w45Z0lFKln/2l3fJb8HYKX8KrPuFcnOpF
         X4sp/xYNmU0pzAkeBgnSwf6mIvXKc+sucNgk909eUrWE0AtTqcZ0a8EfTji3heiwQFLQ
         0UoAhrIJRU0eBd7fLnUi3+uwrgndfYcQaQy8qWO4XSdus/dThC9k3yTDH9JYARag+lbp
         EUOsTTx1jZFqpe982xeWjwZDyuk/IL9KuNBXPOosAwrZtXyWwuaipsFdfMV+sMsAc+DE
         n2iRuJsDgZnYL1vz4aQ4GzhcprIlKMFmWsdik+MyApk7ieswDp19Jdy3VXmUVF1sjnaH
         MXeA==
X-Gm-Message-State: AOJu0YzxAct4FbjDEJZOsyopxDsxfZRGlEEWWm5Dg4IqIpdmWnIWkVE9
	yyKX39O+s75t6z2CusrjMgPoKPO3V4X/BKlqrjtdox7csBUATwbOTAcx14robg==
X-Google-Smtp-Source: AGHT+IElPof94xQEjT9uFMGltWcLgdjR1de6tKNiNHLMaUIKBmCVq4DQGH2N64q4tR2HUmr+ShOhMQ==
X-Received: by 2002:a5d:5988:0:b0:37d:30e7:3865 with SMTP id ffacd0b85a97d-381be7d63e0mr1997778f8f.34.1730366444312;
        Thu, 31 Oct 2024 02:20:44 -0700 (PDT)
Message-ID: <20b8e7be-4922-4f42-9a0d-176dcb1cb9a8@suse.com>
Date: Thu, 31 Oct 2024 10:20:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpu-policy: Extend the guest max policy max
 leaf/subleaves
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>
References: <20241029175505.2698661-1-andrew.cooper3@citrix.com>
 <ZyH1az6sb2wnVxgu@macbook> <f6494fa2-6de0-4ded-864a-9c011d9ad5f2@citrix.com>
 <ZyISitvz_K_XtvL5@macbook> <3effac8c-b4cf-4d96-a5f6-99def9f7ec1c@citrix.com>
 <ZyJM_DLUkqolD7mD@macbook> <e4d75dee-3cf6-4fc1-9277-ea16ed9e0319@citrix.com>
 <ZyJoowmf5_ast4X3@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: <ZyJoowmf5_ast4X3@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 18:10, Roger Pau Monné wrote:
> On Wed, Oct 30, 2024 at 04:51:34PM +0000, Andrew Cooper wrote:
>> On 30/10/2024 3:13 pm, Roger Pau Monné wrote:
>>> On Wed, Oct 30, 2024 at 02:45:19PM +0000, Andrew Cooper wrote:
>>>> On 30/10/2024 11:03 am, Roger Pau Monné wrote:
>>>>> On Wed, Oct 30, 2024 at 10:39:12AM +0000, Andrew Cooper wrote:
>>>>>> On 30/10/2024 8:59 am, Roger Pau Monné wrote:
>>>>>>> On Tue, Oct 29, 2024 at 05:55:05PM +0000, Andrew Cooper wrote:
>>>>>>>> diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
>>>>>>>> index b6d9fad56773..78bc9872b09a 100644
>>>>>>>> --- a/xen/arch/x86/cpu-policy.c
>>>>>>>> +++ b/xen/arch/x86/cpu-policy.c
>>>>>>>> @@ -391,6 +391,27 @@ static void __init calculate_host_policy(void)
>>>>>>>>      p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
>>>>>>>>  }
>>>>>>>>  
>>>>>>>> +/*
>>>>>>>> + * Guest max policies can have any max leaf/subleaf within bounds.
>>>>>>>> + *
>>>>>>>> + * - Some incoming VMs have a larger-than-necessary feat max_subleaf.
>>>>>>>> + * - Some VMs we'd like to synthesise leaves not present on the host.
>>>>>>>> + */
>>>>>>>> +static void __init guest_common_max_leaves(struct cpu_policy *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        = 0x80000000U + ARRAY_SIZE(p->extd.raw) - 1;
>>>>>>>> +}
>>>>>>>> +
>>>>>>>> +/* Guest default policies inherit the host max leaf/subleaf settings. */
>>>>>>>> +static void __init guest_common_default_leaves(struct cpu_policy *p)
>>>>>>>> +{
>>>>>>>> +    p->basic.max_leaf       = host_cpu_policy.basic.max_leaf;
>>>>>>>> +    p->feat.max_subleaf     = host_cpu_policy.feat.max_subleaf;
>>>>>>>> +    p->extd.max_leaf        = host_cpu_policy.extd.max_leaf;
>>>>>>>> +}
>>>>>>> I think this what I'm going to ask is future work.  After the
>>>>>>> modifications done to the host policy by max functions
>>>>>>> (calculate_{hvm,pv}_max_policy()) won't the max {sub,}leaf adjustments
>>>>>>> better be done taking into account the contents of the policy, rather
>>>>>>> than capping to the host values?
>>>>>>>
>>>>>>> (note this comment is strictly for guest_common_default_leaves(), the
>>>>>>> max version is fine using ARRAY_SIZE).
>>>>>> I'm afraid I don't follow.
>>>>>>
>>>>>> calculate_{pv,hvm}_max_policy() don't modify the host policy.
>>>>> Hm, I don't think I've expressed myself clearly, sorry.  Let me try
>>>>> again.
>>>>>
>>>>> calculate_{hvm,pv}_max_policy() extends the host policy by possibly
>>>>> setting new features, and such extended policy is then used as the
>>>>> base for the PV/HVM default policies.
>>>>>
>>>>> Won't the resulting policy in calculate_{hvm,pv}_def_policy() risks
>>>>> having bits set past the max {sub,}leaf in the host policy, as it's
>>>>> based in {hvm,pv}_def_cpu_policy that might have such bits set?
>>>> Oh, right.
>>>>
>>>> This patch doesn't change anything WRT that.
>>> Indeed, didn't intend my comment to block it, just that I think at
>>> some point the logic in guest_common_default_leaves() will need to be
>>> expanded.
>>>
>>>> But I think you're right that we do risk getting into that case (in
>>>> principle at least) because of how guest_common_*_feature_adjustment() work.
>>>>
>>>> Furthermore, the bug will typically get hidden because we serialise
>>>> based on the max_leaf/subleaf, and will discard feature words outside of
>>>> the max_leaf/subleaf bounds.
>>> Yes, once we serialize it for toolstack consumption the leafs will be
>>> implicitly zeroed.
>>>
>>>> I suppose we probably want a variation of x86_cpu_featureset_to_policy()
>>>> which extends the max_leaf/subleaf based on non-zero values in leaves. 
>>>> (This already feels like it's going to be an ugly algorithm.)
>>> Hm, I was thinking that we would need to adjust
>>> guest_common_default_leaves() to properly shrink the max {sub,}leaf
>>> fields from the max policies.
>>
>> Hmm.  What we'd do is have default inherit max's ARRAY_SIZES(), then do
>> all the existing logic, then as the final step, shrink the default
>> policies, vaguely per Jan's plan.
>>
>> i.e. we'd end up deleting guest_common_default_leaves()
>>
>> That way we don't need to encode any knowledge of which feature bit
>> means what WRT max_leaf/subleaf.
> 
> What about Alejandro's concern about runtime populated {sub,}leafs,
> won't we risk shrinking too much if the last leaf intended to be kept
> happens to be a fully runtime populated one?
> 
> Do we need some kind of special magic for fully run-time populated
> leafs (like the topology ones IIRC?) in order to account for them when
> doing those max calculations?

Contrary to Andrew's reply I think we will need to take runtime-populated
leaves into account specially, as you suggest. Just thinking of something
APIC-ID-like in a very high leaf, which (presumably) ought to be zero in
max/default. While keeping such fields at zero in max/default for external
exposure, filling them with a non-zero value at policy creation (maybe
simply their max value) might help keep the shrinking logic agnostic to
such special cases.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:21:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:21:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828521.1243418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RNJ-0002Uq-Qi; Thu, 31 Oct 2024 09:21:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828521.1243418; Thu, 31 Oct 2024 09:21: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 1t6RNJ-0002Uj-No; Thu, 31 Oct 2024 09:21:53 +0000
Received: by outflank-mailman (input) for mailman id 828521;
 Thu, 31 Oct 2024 09:21: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6RNI-0001uN-Bn
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:21:52 +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 8e3ca0f6-9769-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 10:21:48 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-539f72c913aso1113447e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:21:48 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c116b11esm1507049f8f.104.2024.10.31.02.21.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:21:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8e3ca0f6-9769-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzYiLCJoZWxvIjoibWFpbC1sZjEteDEzNi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjhlM2NhMGY2LTk3NjktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzY2NTA4LjY4NjMwNCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730366508; x=1730971308; 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=0Zwnf0906TY1Sfo/7v7GteN1T7sobQlT1JZYgzFblhI=;
        b=bK6Q7tIhLgCQe8lyUk8eeRNQeWGiOoD/Z3uxEubec3wbvfsLWuMXjxEen1fxN7P1HC
         WMXjSugJFFYWiWQW/Pj+U5HnSz+XMvMHwMhGt259g3tfl2ZDuAxui8gUw4T6+G3r3b4t
         zHvLh8xMGUhvOswzMDm3BH8/Ym03Y81Z5JsEdgBrBnP+n8nGp2DiIb/bJ7pQAfvdX/9s
         ClgREuF9bK7XR1P78Lo/UO69WeNxylJ4Y0+2W9/zgbOII2ZtAhlzeDga/ycSvS3kRvvx
         z9IBCMEHYh9awXFbD3mkAaiwhjrrjprx2sfS2uhoSqoZA1lWjMgOExB1yClqKwIhZvpo
         LkOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730366508; x=1730971308;
        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=0Zwnf0906TY1Sfo/7v7GteN1T7sobQlT1JZYgzFblhI=;
        b=l6/2a6ga5pYjzrz+IXcwDjum8tCJM/dneQnqORN4f1Gbr7vpLdtu6Wx2Yrna67MDAM
         0VUVLePEKfGBrX3Nj/ZS3gq2fyCm1nrC1mMjOAph+quitL5RyVH9v8NHXr0I0c6DoWB+
         K/XkuvUSZfdXkoxdGm/mxO5wXtwYN8BOxSUVfSJ9taPp6oJ190f5hyXXLX/h3CUA1HZZ
         gWZExv56kPajP9KcM3mrLDZYcihDOC6pl6RxF6Kpu0dQ7h9ncRQxhoQig9V/REg9sX45
         qrtF4DjYRUbrUSnTRDIdGRJnFRGpeIHrd9AQFj7KMZmdr6I6/DMrILrJPv8mWrg5meEW
         aD5A==
X-Forwarded-Encrypted: i=1; AJvYcCVkyqjflqICdK33eYD9tShQU8WN68r7Gi8vIy4UEmqgiWkQwTrQN0u92C4W7RObkeULHW03b5sPBDc=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxgfGqw2FR1rTjIORyI+iZivgQoOxnr0G9LDFyEktyVAcAwNE3s
	w/IeZIAD4/nHLPuX/IdfDuyy1ESy/qtp8VtDbBpdUcHlpg+zi9xsF6UdonvVZw==
X-Google-Smtp-Source: AGHT+IHqwl6C2/XUC1zrYhtVzXMSOmqxjtdQrIJ8R0jDKAluz4pbnt3vF6yxLjJRwjzsTB4k3pMLCg==
X-Received: by 2002:a05:6512:3b0f:b0:539:fc42:e5ee with SMTP id 2adb3069b0e04-53b348e3390mr8514976e87.29.1730366507994;
        Thu, 31 Oct 2024 02:21:47 -0700 (PDT)
Message-ID: <9efa4bea-adbf-4ef9-b8c4-68f28652eb22@suse.com>
Date: Thu, 31 Oct 2024 10:21:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] Config: Update MiniOS revision
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241030175944.2726594-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: <20241030175944.2726594-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.10.2024 18:59, Andrew Cooper wrote:
> Commit 6d5159e8410b ("Add missing symbol exports for grub-pv")
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

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




From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:25:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:25:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828528.1243428 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RQV-00037p-7O; Thu, 31 Oct 2024 09:25:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828528.1243428; Thu, 31 Oct 2024 09:25: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 1t6RQV-00037i-4X; Thu, 31 Oct 2024 09:25:11 +0000
Received: by outflank-mailman (input) for mailman id 828528;
 Thu, 31 Oct 2024 09:25: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6RQT-00037c-LP
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:25:09 +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 0427d3db-976a-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 10:25:06 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-4314f38d274so7539195e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:25:06 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd8e8471sm50009015e9.4.2024.10.31.02.25.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:25:05 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0427d3db-976a-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmIiLCJoZWxvIjoibWFpbC13bTEteDMyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjA0MjdkM2RiLTk3NmEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzY2NzA2LjU2ODg1Nywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730366706; x=1730971506; 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=hkf7lG1zWO8DO93RD+O3P9VXv5hCLPLpU6OE5KDrcP8=;
        b=HAqtTfkYSbZUiP89SvTgFOszmVPXfcKSzALTN2kho5PrtUZ3baWS2IFBi8yVlftNoG
         NF5FcK+LSEcVUONXZqE4YOzqM5hrgwqrwpzeu24CBvCUx0F7gtnI0nK0Cj22L1faeknY
         SvQfBecJmCW4FV3qpAEaafXu+A8L3GvNjks/w1Oaf2A+AuErff0DWGFPeI/J85ZBJOrn
         VVpYn1WHY6KSbmS/pcIaNqW0kgqko36/X42awKm7F7tkeha+xXaCQRW/wnZIK7RNJfLs
         m3TKPf4rn7r/5dY5O5LwD9yrotJ4Jv7Q54gkI9zaaHibAQ9+nIgDXaJmBBI9Rj1/0tcU
         bxbg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730366706; x=1730971506;
        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=hkf7lG1zWO8DO93RD+O3P9VXv5hCLPLpU6OE5KDrcP8=;
        b=FHMQVthBKNm2FxMSUMcWi303bzrh5iPYnlqvGq/aO1+n/cUqzVyGoYpbCASIk6q2d5
         PeZQ29fjz24X0sbT1zuBOIaMAWsZBw2llcHYupRwFQV2Jy01YPvjxw3BGkAJIu7bDROM
         jo47wbpqBqzcxcvKPeNSG6NSGqirjoicx2CkWHutc0sXCGLhix1Paqa5TekYjpRM/QNp
         EN7V35puUeI9jgzqXAahuGoqjNT/dZfAtll5z2g9MFWe1YciIuz/FKVBM8kXRi+asBNw
         xE9mXLSlYONos84ZeDCeX9Pk16G5q+sDMLOQQw8eSVh5ekQtdQgfjvxwqp+FTLjKvjfU
         MrCA==
X-Forwarded-Encrypted: i=1; AJvYcCXqh9kP9i0wIccqJq/c7dY6wP06DucKA0xaKjvPpk5WEtFVRr/jIY0jYhq97WZBwsN/RYfzNfb5iUs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yz2WmIYIqgpPxNjlonF+FvrX/9FEqVnYeo//rlTvZdJxRBnURYc
	xXiiU1mXi7bmNJ9qvkzBY12oZ2VmfJ4GUG0B8pAeIMDc/ta1MoN7hWG2nRJ9Eg==
X-Google-Smtp-Source: AGHT+IFDOW6LLAxpKccukgXQWnMeODNqR5AIvIVpjNMnVUiRdpaaLrmDLLUyynKv3NG71Gk7dftVPg==
X-Received: by 2002:a05:600c:4f4a:b0:431:4b88:d407 with SMTP id 5b1f17b1804b1-4319ac6f874mr205247235e9.5.1730366706055;
        Thu, 31 Oct 2024 02:25:06 -0700 (PDT)
Message-ID: <a76d84a3-d150-4836-8ad2-ee0eeabe557b@suse.com>
Date: Thu, 31 Oct 2024 10:25:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.19] Config: Update MiniOS revision
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241030180332.2726909-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: <20241030180332.2726909-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.10.2024 19:03, Andrew Cooper wrote:
> A new branch from xen-RELEASE-4.19.0, for now containing commit
> a400dd517068 ("Add missing symbol exports for grub-pv").
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Juergen Gross <jgross@suse.com>
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien@xen.org>
> ---
>  Config.mk | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Config.mk b/Config.mk
> index 03a89624c77f..aa3d5843f1ed 100644
> --- a/Config.mk
> +++ b/Config.mk
> @@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
>  QEMU_UPSTREAM_REVISION ?= qemu-xen-4.19.0
>  
>  MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
> -MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.19.0
> +MINIOS_UPSTREAM_REVISION ?= xen-stable-4.19

Wouldn't we better use a hash here, like we do on staging? There had been
cases where it wasn't safe for the used commit to move "automatically", and
the same could occur on a stable branch. The hash would then be replaced by
a release tag when a release is being prepared (again like on staging).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:28:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:28:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828532.1243438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RTx-0004HZ-Lx; Thu, 31 Oct 2024 09:28:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828532.1243438; Thu, 31 Oct 2024 09: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 1t6RTx-0004HS-JN; Thu, 31 Oct 2024 09:28:45 +0000
Received: by outflank-mailman (input) for mailman id 828532;
 Thu, 31 Oct 2024 09:28: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=sKGZ=R3=redhat.com=pstanner@srs-se1.protection.inumbo.net>)
 id 1t6RTv-0004HM-TW
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:28:43 +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 8238b9a4-976a-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 10:28:39 +0100 (CET)
Received: from mail-lj1-f199.google.com (mail-lj1-f199.google.com
 [209.85.208.199]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-554-QN7-STtIOQWMNkok5CaQMA-1; Thu, 31 Oct 2024 05:28:35 -0400
Received: by mail-lj1-f199.google.com with SMTP id
 38308e7fff4ca-2fb58980614so4514231fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:28:35 -0700 (PDT)
Received: from dhcp-64-16.muc.redhat.com (nat-pool-muc-t.redhat.com.
 [149.14.88.26]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4327d5e94cdsm18626575e9.28.2024.10.31.02.28.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 02:28:32 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8238b9a4-976a-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE3MC4xMC4xMzMuMTI0IiwiaGVsbyI6InVzLXNtdHAtZGVsaXZlcnktMTI0Lm1pbWVjYXN0LmNvbSJ9
X-Custom-Transaction: eyJpZCI6IjgyMzhiOWE0LTk3NmEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzY2OTE5LjEzNDc4MSwic2VuZGVyIjoicHN0YW5uZXJAcmVkaGF0LmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1730366917;
	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=d6wn1lKONgblnZ++1qSDC4UeXUH/h7Owd02AbOfZVIQ=;
	b=O1Hgo5JC6FUyTNgc9e8DRsrVBH3XjpdkBRq56cQs26Z96zCNPjyrQonIkEUaWvXo6OfysK
	/r8s5Mn6pOHx86PYvyn0rblxTG+sBJuGXwpseiwGBm8a+0+mGJ2hfoUDzBWcYsRJHcbbDs
	A3vEQ1E4S9QZgLYCWrViN3YKnD6hEKo=
X-MC-Unique: QN7-STtIOQWMNkok5CaQMA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730366914; x=1730971714;
        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=d6wn1lKONgblnZ++1qSDC4UeXUH/h7Owd02AbOfZVIQ=;
        b=CCi9DymkUOimLlw2bzVd8XufAPCKXaNyMIr/QaLTAFLbcDTrgPSRSQzcA/rW4ZJqew
         N+jnRk19JpubIel/SG/z29ZeWoTSHuqR0UlOkMZ42Z5XJQfqX0xMc0xZcvkxAFtkiSiq
         Or8WbxKkcMKFXOKfyUldmc1moUrrtwgxAgLm3gjhsAdJF3r4DQBHVPH1/pUBjjyS209o
         J8Cqfsz1EfBBqnHuHko5OmlKRPpdJ1hV4PWsRXQFuQ9kJgal5f37kzGIuTmtk/zZD9YN
         CgpOrRG8fDWdhxWCLMrl1FptZPKui8qcPlfDpMeW6fbxt/4dOC+m4+l8az5giES9rlic
         7ICA==
X-Forwarded-Encrypted: i=1; AJvYcCWuBCdH5k0DZcZLfY30kQww1rSVjZ8UEcsDvi/CgfpjAK28eReyy/oSuUDToDBExKpepprWHYxeZxQ=@lists.xenproject.org
X-Gm-Message-State: AOJu0YygHSfWfqmtD4QvQms011AGUZpvHpRzPjs+n0A5gbFNKJkltasF
	9wa/QbAVcW7SWcNT7Tq9a6/vBB6ni9Xm3delgOUA9+iTHVUf2EMddpm3FLIEBsu0zd3fmjA6zEA
	7PgHpimXDiYOtmekwMkIX+fIKVEc9udM2kAaLCy3k5ngrqZWiFr8iyCzw1A8kDWCv
X-Received: by 2002:a2e:b8cf:0:b0:2fb:58b1:3731 with SMTP id 38308e7fff4ca-2fd058fbda2mr43394621fa.6.1730366913672;
        Thu, 31 Oct 2024 02:28:33 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEinR4wm9boDAsEkZ9V3ivoUKK9VQmKYoIEQNVXO7Y2sjsmX4v4AmQcNIDCbC3ckt5R0LeFLA==
X-Received: by 2002:a2e:b8cf:0:b0:2fb:58b1:3731 with SMTP id 38308e7fff4ca-2fd058fbda2mr43394381fa.6.1730366913125;
        Thu, 31 Oct 2024 02:28:33 -0700 (PDT)
Message-ID: <f13c91f2d1e7672e1d9983425117eeb6347c0ea1.camel@redhat.com>
Subject: Re: [PATCH 00/13] Remove implicit devres from pci_intx()
From: Philipp Stanner <pstanner@redhat.com>
To: Takashi Iwai <tiwai@suse.de>, Bjorn Helgaas <helgaas@kernel.org>
Cc: Damien Le Moal <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, 
 Sergey Shtylyov <s.shtylyov@omp.ru>, Basavaraj Natikar
 <basavaraj.natikar@amd.com>, Jiri Kosina <jikos@kernel.org>,  Benjamin
 Tissoires <bentiss@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg
 Kroah-Hartman <gregkh@linuxfoundation.org>, Alex Dubov <oakad@yahoo.com>,
 Sudarsana Kalluru <skalluru@marvell.com>, Manish Chopra
 <manishc@marvell.com>, "David S. Miller" <davem@davemloft.net>, Eric
 Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>, Paolo
 Abeni <pabeni@redhat.com>, Rasesh Mody <rmody@marvell.com>,
 GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko <imitsyanko@quantenna.com>,
 Sergey Matyukevich <geomatsi@gmail.com>, Kalle Valo <kvalo@kernel.org>,
 Sanjay R Mehta <sanju.mehta@amd.com>, Shyam Sundar S K
 <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave Jiang
 <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn Helgaas
 <bhelgaas@google.com>, Alex Williamson <alex.williamson@redhat.com>,
 Juergen Gross <jgross@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>, Mario Limonciello
 <mario.limonciello@amd.com>, Ricky Wu <ricky_wu@realtek.com>, Al Viro
 <viro@zeniv.linux.org.uk>, Breno Leitao <leitao@debian.org>, Kevin Tian
 <kevin.tian@intel.com>, Thomas Gleixner <tglx@linutronix.de>, Ilpo
 =?ISO-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@linux.intel.com>, Andy
 Shevchenko <andriy.shevchenko@linux.intel.com>, Mostafa Saleh
 <smostafa@google.com>, Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu
 <yi.l.liu@intel.com>,  Christian Brauner <brauner@kernel.org>, Ankit
 Agrawal <ankita@nvidia.com>, Eric Auger <eric.auger@redhat.com>, Reinette
 Chatre <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>,  Rui Salvaterra <rsalvaterra@gmail.com>,
 linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org, 
 linux-input@vger.kernel.org, netdev@vger.kernel.org, 
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org,  kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Date: Thu, 31 Oct 2024 10:28:29 +0100
In-Reply-To: <87plngwrws.wl-tiwai@suse.de>
References: <20241015185124.64726-1-pstanner@redhat.com>
	 <20241030221737.GA1223682@bhelgaas> <87plngwrws.wl-tiwai@suse.de>
User-Agent: Evolution 3.52.4 (3.52.4-1.fc40)
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 Thu, 2024-10-31 at 10:19 +0100, Takashi Iwai wrote:
> On Wed, 30 Oct 2024 23:17:37 +0100,
> Bjorn Helgaas wrote:
> >=20
> > On Tue, Oct 15, 2024 at 08:51:10PM +0200, Philipp Stanner wrote:
> > > @Driver-Maintainers: Your driver might be touched by patch
> > > "Remove
> > > devres from pci_intx()". You might want to take a look.
> > >=20
> > > Changes since the RFC [1]:
> > > =C2=A0 - Add a patch deprecating pci{m}_intx(). (Heiner, Andy, Me)
> > > =C2=A0 - Add Acked-by's already given.
> > > =C2=A0 - Export pcim_intx() as a GPL function. (Alex)
> > > =C2=A0 - Drop patch for rts5280, since this driver will be removed
> > > quite
> > > =C2=A0=C2=A0=C2=A0 soon. (Philipp Hortmann, Greg)
> > > =C2=A0 - Use early-return in pci_intx_unmanaged() and pci_intx().
> > > (Andy)
> > >=20
> > > Hi all,
> > >=20
> > > this series removes a problematic feature from pci_intx(). That
> > > function
> > > sometimes implicitly uses devres for automatic cleanup. We should
> > > get
> > > rid of this implicit behavior.
> > >=20
> > > To do so, a pci_intx() version that is always-managed, and one
> > > that is
> > > never-managed are provided. Then, all pci_intx() users are ported
> > > to the
> > > version they need. Afterwards, pci_intx() can be cleaned up and
> > > the
> > > users of the never-managed version be ported back to pci_intx().
> > >=20
> > > This way we'd get this PCI API consistent again.
> > >=20
> > > Patch "Remove devres from pci_intx()" obviously reverts the
> > > previous
> > > patches that made drivers use pci_intx_unmanaged(). But this way
> > > it's
> > > easier to review and approve. It also makes sure that each
> > > checked out
> > > commit should provide correct behavior, not just the entire
> > > series as a
> > > whole.
> > >=20
> > > Merge plan for this is to enter through the PCI tree.
> > >=20
> > > [1]
> > > https://lore.kernel.org/all/20241009083519.10088-1-pstanner@redhat.co=
m/
> >=20
> > I *think* this series depends on resolution of Takashi's "Restore
> > the
> > original INTX_DISABLE bit by pcim_intx()" patch [2], right?
>=20
> IIUC, it's not really dependent, as pcim_intx() has been used in
> pci_intx() internally when the PCI device is already managed.
> My patch is to correct the already existing behavior.

IOW, pcim_intx() does not behave correctly, independently from removing
the call to it in pci_intx().

> =C2=A0 So I guess you
> can take this series, and I'll post the revised patch later (sorry, I
> was too busy for other tasks).
>=20
>=20
> thanks,
>=20
> Takashi
>=20
> >=20
> > For now I'm postponing this series, but let me know if that's not
> > the
> > right thing.

There are still several reviews / acks missing from the respective
driver maintainers, so there's no hurry with this series regarding your
side ;)

Regards
P.


> >=20
> > [2] https://lore.kernel.org/r/20241024155539.19416-1-tiwai@suse.de
> >=20
> > > Philipp Stanner (13):
> > > =C2=A0 PCI: Prepare removing devres from pci_intx()
> > > =C2=A0 ALSA: hda_intel: Use always-managed version of pcim_intx()
> > > =C2=A0 drivers/xen: Use never-managed version of pci_intx()
> > > =C2=A0 net/ethernet: Use never-managed version of pci_intx()
> > > =C2=A0 net/ntb: Use never-managed version of pci_intx()
> > > =C2=A0 misc: Use never-managed version of pci_intx()
> > > =C2=A0 vfio/pci: Use never-managed version of pci_intx()
> > > =C2=A0 PCI: MSI: Use never-managed version of pci_intx()
> > > =C2=A0 ata: Use always-managed version of pci_intx()
> > > =C2=A0 wifi: qtnfmac: use always-managed version of pcim_intx()
> > > =C2=A0 HID: amd_sfh: Use always-managed version of pcim_intx()
> > > =C2=A0 Remove devres from pci_intx()
> > > =C2=A0 PCI: Deprecate pci_intx(), pcim_intx()
> > >=20
> > > =C2=A0drivers/ata/ahci.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=C2=A0=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=A0drivers/ata/ata_piix.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > > =C2=A0drivers/ata/pata_rdc.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > > =C2=A0drivers/ata/sata_sil24.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 |=C2=A0 2 +-
> > > =C2=A0drivers/ata/sata_sis.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > > =C2=A0drivers/ata/sata_uli.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > > =C2=A0drivers/ata/sata_vsc.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=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 +-
> > > =C2=A0drivers/hid/amd-sfh-hid/amd_sfh_pcie.c=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 |=C2=A0 4 +--
> > > =C2=A0drivers/hid/amd-sfh-hid/sfh1_1/amd_sfh_init.c |=C2=A0 2 +-
> > > =C2=A0.../wireless/quantenna/qtnfmac/pcie/pcie.c=C2=A0=C2=A0=C2=A0 |=
=C2=A0 2 +-
> > > =C2=A0drivers/pci/devres.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 29 +++++--------
> > > ------
> > > =C2=A0drivers/pci/pci.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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 19 ++++--------
> > > =C2=A0include/linux/pci.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=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 +
> > > =C2=A0sound/pci/hda/hda_intel.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=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 |=C2=A0 2 +-
> > > =C2=A014 files changed, 26 insertions(+), 47 deletions(-)
> > >=20
> > > --=20
> > > 2.47.0
> > >=20
>=20



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:34:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:34:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828543.1243460 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RZW-0006Av-CF; Thu, 31 Oct 2024 09:34:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828543.1243460; Thu, 31 Oct 2024 09:34: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 1t6RZW-0006Ao-9M; Thu, 31 Oct 2024 09:34:30 +0000
Received: by outflank-mailman (input) for mailman id 828543;
 Thu, 31 Oct 2024 09:34: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6RZV-0006Ai-Pd
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:34:29 +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 50ef035a-976b-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 10:34:24 +0100 (CET)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-539f84907caso774650e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:34:24 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c10e734csm1554683f8f.60.2024.10.31.02.34.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:34:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50ef035a-976b-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzIiLCJoZWxvIjoibWFpbC1sZjEteDEzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjUwZWYwMzVhLTk3NmItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzY3MjY0LjgxNDIzLCJzZW5kZXIiOiJqYmV1bGljaEBzdXNlLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730367264; x=1730972064; 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=typLIZP/MMzWQHxa3dozJ8ah4urFEFoF37pwxUrpcoA=;
        b=ahx1y60ioLeE4c5KF5tI6iXszzrmT+GN25xlOvLG4IxxsWk96V7QMYOcWM8ZrtqLyc
         C2acGtcvYabnttLeygfd63tI8TcogApySvEEMyc4h7lWsqeHiu6OwFbWn+SLDEhnNuDy
         PKZXlMX4oRn1/NZLyvO6mPeJr1jbC2CRzwyMJYPslOA8KycRdpcg5PBTZsiqEFtmDGWb
         5JRn53QCBsSxdci5PI/XNtzaIvAKtGaUz8OICM9Fg7NQ3BzLM4IBPak9g/UhJTbf9Fsp
         Dj/a9oaQ8hie33mJS/jCEaIjZdpvKOlI7WT+xXsBd5doD+FGJcyAmCiN7FP7ogYixI35
         QRqg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730367264; x=1730972064;
        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=typLIZP/MMzWQHxa3dozJ8ah4urFEFoF37pwxUrpcoA=;
        b=WGzUhrHAZCCZ1B4TOawjRXNR4xi4QoeMIlGUP/Bgd+Fvq308XxPfmWHJe754Sc4kAi
         6I12k8eH2YYWl8gIP03d2Nt59EQTPzSmrz5efJFGdoBtnTfzJxAs2wlwP4uf3swE/Neo
         vK5EL4FUuh391qEPiWaSBxrBro711jdf5XQbJamVxj34nB4nn/IOjk6Cxb3XYQPqsJNn
         78KaBmUWoVRaGhuuR44sPV+rwtMh6dWSdptlyd9u5q/FNV6+Lk4elAfYFrJ2xN/TtM52
         W1BV8sEomrDuslNafHUTafylGrqX1n1uvHfwYSMi+ivj/q/9MQk6V4bVp32FuIAafDt0
         s/vQ==
X-Forwarded-Encrypted: i=1; AJvYcCWCO4wZwM0+PMen3PAP/I6iJ1xmpoO2lIr5ewvxffE9stxTFGd9FoX/QeLNYsCPpP7dHccEj/0w5Gg=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyMNDMUITjf/G0UxS/Q5DNMsrmiDO0mOE8OpO6IQ2TyF99vSBYU
	fFKtEWunXGr5Y1zXoXlPn/qgM+ATKU17vzN45T+Tl1uvqPbIx+gf6fNx4uWreA==
X-Google-Smtp-Source: AGHT+IEgayhKxHFJmNN6Ovp5H1MhTchYfR1FplToSOh7uzRgnNYn07QfVv8gUBESsjJ6nr7onJsvgA==
X-Received: by 2002:a05:6512:3b98:b0:539:fb56:7790 with SMTP id 2adb3069b0e04-53b348ec010mr10540758e87.6.1730367264068;
        Thu, 31 Oct 2024 02:34:24 -0700 (PDT)
Message-ID: <6461a47f-759a-4138-970c-4e5f68b07bae@suse.com>
Date: Thu, 31 Oct 2024 10:34:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/common: Move gic_preinit() to common code
To: 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>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <e906b538aba684ab108cc70e8c60ed35ddfad74e.1730292286.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: <e906b538aba684ab108cc70e8c60ed35ddfad74e.1730292286.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 14:14, Oleksii Kurochko wrote:
> Introduce ic_preinit() in the common codebase, as it is not
> architecture-specific and can be reused by both PPC and RISC-V.
> This function identifies the node with the interrupt-controller property
> in the device tree and calls device_init() to handle architecture-specific
> initialization of the interrupt controller.
> 
> Additionally, rename gic_acpi_preinit() to ic_acpi_preinit() as it is used
> by ic_preinit(), while keeping it defined in architecture-specific as this
> part is architecture-specific. In case if CONFIG_ACPI=n a stub for
> ic_acpi_preinit() is provided. To declaration/defintion of ic_acpi_preint()
> is added `inline` to deal with the compilation issue:
>   error: 'ic_acpi_preinit' defined but not used [-Werror=unused-function]
> 
> Make minor adjustments compared to the original ARM implementation of
> gic_dt_preinit():
>  - Remove the local rc variable in gic_dt_preinit() since it is only used once.
>  - Change the prefix from gic to ic to clarify that the function is not
>    specific to ARM’s GIC, making it suitable for other architectures as well.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in v2:
>  - Revert changes connected to moving of gic_acpi_preinit() to common code as
>    it isn't really architecture indepent part.
>  - Update the commit message.
>  - Move stub of ic_acpi_preinit() to <asm-generic/device.h> for the case when
>    CONFIG_ACPI=n.
> ---
>  xen/arch/arm/gic.c               | 45 +------------------------------
>  xen/arch/arm/setup.c             |  3 ++-
>  xen/common/device.c              | 46 ++++++++++++++++++++++++++++++++
>  xen/include/asm-generic/device.h | 10 +++++++
>  4 files changed, 59 insertions(+), 45 deletions(-)

Looks largely okay to me now, with a question and a nit at the bottom. The
question is mainly to Arm folks, where the code is coming from, and DT
maintainers: Is a file named device.c really an appropriate "home" for
IC-related code? If IC is a common thing in the DT world, would such code
maybe better live under common/device-tree/?

> --- a/xen/include/asm-generic/device.h
> +++ b/xen/include/asm-generic/device.h
> @@ -127,6 +127,16 @@ __section(".adev.info") = {                                         \
>  
>  #endif /* CONFIG_ACPI */
>  
> +void ic_preinit(void);
> +
> +#ifdef CONFIG_ACPI
> +void ic_acpi_preinit(void);
> +#else
> +#include <xen/init.h>
> +
> +static inline void __init ic_acpi_preinit(void) { }
> +#endif

I don't think there's a need to have __init on an empty inline stub. That'll
then also eliminate the need for the extra #include.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:46:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:46:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828553.1243471 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6RlW-00006u-HG; Thu, 31 Oct 2024 09:46:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828553.1243471; Thu, 31 Oct 2024 09:46: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 1t6RlW-00006n-Ds; Thu, 31 Oct 2024 09:46:54 +0000
Received: by outflank-mailman (input) for mailman id 828553;
 Thu, 31 Oct 2024 09:46: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6RlV-00006R-EG
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:46:53 +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 0c682d29-976d-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 10:46:50 +0100 (CET)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-53b34ed38easo615571e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:46:50 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd947bf4sm50473595e9.27.2024.10.31.02.46.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:46:47 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0c682d29-976d-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMzMiLCJoZWxvIjoibWFpbC1sZjEteDEzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjBjNjgyZDI5LTk3NmQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzY4MDEwLjA5ODk0LCJzZW5kZXIiOiJhbmRyZXcuY29vcGVyQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730368008; x=1730972808; 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=d083J0Qsv4GOhbNwD3J4VxLjKt7VnKAN8bclVp8ujXE=;
        b=GtF9LK4Hou5a8KPw9YRu2loL2K4MFoCAzYrUGgt+QJTy1OpHRGiAmbvmOO0mDvBrK7
         aP1Fm37gy1u9/AQYj4AgP2hsQL4T4cnv0QywPKr7WfPzj6tzyd4rkcvaOY4Ux7K+CUwx
         egbFSE+TiXyw9dJZNVB9spMWqLiKmwloyzGHo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730368008; x=1730972808;
        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=d083J0Qsv4GOhbNwD3J4VxLjKt7VnKAN8bclVp8ujXE=;
        b=cTVmJTpjkPRuQ9RqtsEo6DBBxe0kzS5jbfqrssco7ozNfCy7wBxRP5SFY37tbCPaMy
         Rpa6rvbg/8dcD4EguKPXJLr6PA+QnOSqDIa90oAaFLmlT+64KGeRIiLI6maZP8AE/sah
         rWGU/tgxf5tiOJ+K2aikMovGIUlpFxZtOYw6cUYB8n2gdOzD1UC95G4NGVM1nYT5muNe
         9jGaMjinyPo7T9jKKFQFDgVj5vkcmRtTXykXutS4+Mf9q0c5l3ySOIrsMGpoKtB0dlrj
         6YmYBKQZfNuMYSj4iw3Gf1KTWym5Ll8wjs2dloIOBi4blFVFyOXW2paoc8MB6DtKLd9V
         8Alg==
X-Forwarded-Encrypted: i=1; AJvYcCVcx4JPcvu5qsFs3RpRhC2Trb7JRW2u8H0W7wO3bOi/fgLABbAswQFe4u3C9IlIi2Oen6yBQbhHNcM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzPaBH6tx1v3E3lvErOvJiHU7WMLAzTkh/VFx79GVXjIdNIY77Y
	oFKufHjLhAJnYCXe1yvi6gQ6i2KG6OnDBevHHt1kj9lBAaXE5IkjyaeIgIUxAgc=
X-Google-Smtp-Source: AGHT+IEYTiqYXVWZfySnkP3dtE7Tmc/ORAHSK5eOnvSYSYUKKQfoMsO4cx94DSSFwJmCaFCJZ6h9yQ==
X-Received: by 2002:a05:6512:4022:b0:539:e333:1822 with SMTP id 2adb3069b0e04-53b348b7dc7mr9700016e87.4.1730368008098;
        Thu, 31 Oct 2024 02:46:48 -0700 (PDT)
Message-ID: <c84ef564-98de-451d-af4e-04e824231ea6@citrix.com>
Date: Thu, 31 Oct 2024 09:46:46 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.19] Config: Update MiniOS revision
To: Jan Beulich <jbeulich@suse.com>
Cc: Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20241030180332.2726909-1-andrew.cooper3@citrix.com>
 <a76d84a3-d150-4836-8ad2-ee0eeabe557b@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <a76d84a3-d150-4836-8ad2-ee0eeabe557b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 9:25 am, Jan Beulich wrote:
> On 30.10.2024 19:03, Andrew Cooper wrote:
>> A new branch from xen-RELEASE-4.19.0, for now containing commit
>> a400dd517068 ("Add missing symbol exports for grub-pv").
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Juergen Gross <jgross@suse.com>
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Stefano Stabellini <sstabellini@kernel.org>
>> CC: Julien Grall <julien@xen.org>
>> ---
>>  Config.mk | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/Config.mk b/Config.mk
>> index 03a89624c77f..aa3d5843f1ed 100644
>> --- a/Config.mk
>> +++ b/Config.mk
>> @@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
>>  QEMU_UPSTREAM_REVISION ?= qemu-xen-4.19.0
>>  
>>  MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
>> -MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.19.0
>> +MINIOS_UPSTREAM_REVISION ?= xen-stable-4.19
> Wouldn't we better use a hash here, like we do on staging? There had been
> cases where it wasn't safe for the used commit to move "automatically", and
> the same could occur on a stable branch. The hash would then be replaced by
> a release tag when a release is being prepared (again like on staging).

It will only be getting build fixes, not new content.  So it will be
stable-enough in that regard.

Otherwise, its hedging my bets as to whether other changes will be
needed before we cut releases.  All of this comes from the fact that
we've got a couple of rolling distros which end up up-to-date even on
the oldest trees.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 09:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 09:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828559.1243481 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Rxu-0002gM-Is; Thu, 31 Oct 2024 09:59:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828559.1243481; Thu, 31 Oct 2024 09: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 1t6Rxu-0002gF-Fo; Thu, 31 Oct 2024 09:59:42 +0000
Received: by outflank-mailman (input) for mailman id 828559;
 Thu, 31 Oct 2024 09:59: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6Rxt-0002g9-Bs
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 09:59:41 +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 d6d5b8f4-976e-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 10:59:38 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-37d538fe5f2so551239f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 02:59:38 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd947c26sm50700845e9.26.2024.10.31.02.59.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 02:59:37 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d6d5b8f4-976e-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MzAiLCJoZWxvIjoibWFpbC13cjEteDQzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImQ2ZDViOGY0LTk3NmUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzY4Nzc4LjExOTY2Miwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730368777; x=1730973577; 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=3gOw0xV3V6YPYlSOEqd0FZorfzusHbr/CPQhBKNW5Q8=;
        b=edJzMaLGGqfEBmSjlsJIjy7bPUzH402KpwbeBSt9yCtzh3bC6hcPYZ64KrIWA1NK1m
         jLCO+uvHC0hg9DJ+uzmorf9Vb2gzsj/onQiBkwUrP7ph64UWzWFQWMHHJDi3mgug0oHr
         bM2WCyS/ceNF15rYRvguaBhTjlXSL3udFlTbfhLB9VFkvE5Ipw85h5PG2AIEfi4Ly+uT
         KpHx/TcR2cx3NrJ34qVyXMFRtFgoNA0ACPPi+c6vPfw46ZBiQkmZu56Y1yM0djq4tZkF
         /BqsJxH+gjMGJjY8syS+cvL6DdHPstjSp+3BLo/0d2Jl9azUGElal/KKJULCUI3O8qBv
         vKUA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730368777; x=1730973577;
        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=3gOw0xV3V6YPYlSOEqd0FZorfzusHbr/CPQhBKNW5Q8=;
        b=ZIrFB7GIucaQ483RPdvtqXti8LXVVAa+Tz2szi+xjzsG/G4XdpY7IISotDqV0MKkiz
         33/a4pUYAVdjKTb1CImRHZpKz4dYVBymVouwAGMR2aJ6G1wIKjnKPsS87xAerkFTgQqR
         W/PLFtEToVxtmfdhVwcJ4rDUzKGRXYANGUKU5Weo4ufREhshs76zxw5jyl80KHeDEm/z
         sS4s2uNXHrZhSGKO5N7AofOUoP84UPgIGbrHByV/fb4U39W+ERwVmQx3NSPYkuLqELMn
         3B3LlvQau9633583S7OA5izcFVMBMhvR76QRFcOX7IPTIPz6fNNKp7JxaX23QSC4dYHU
         /70g==
X-Forwarded-Encrypted: i=1; AJvYcCVpGOczo9dnCwqER2rzjrU7JGw2cJz1TrANHZqWbEMYPHysVu4n0DhL34yITyd3cgU/A286TImTBs4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyTCBCCouyDbnMPGYV+mj6ylynJ0/C6f2hbSQ1cQzS06QzY7snk
	SgpmpeoscQzYzW6xjrkKr9tTr0IiVn+Th0q+UoFxajPXWKt6GrjBfMTPkibO4g==
X-Google-Smtp-Source: AGHT+IH3upsQUHAohRvoNQuI6AVtnT2e0+6KIyOOYU2mUTxTr+/QLZsXpAUqzIPxZluzyM6Ggvz6xw==
X-Received: by 2002:a05:6000:1a8e:b0:368:37ac:3f95 with SMTP id ffacd0b85a97d-381be7d8f8bmr2133782f8f.31.1730368777392;
        Thu, 31 Oct 2024 02:59:37 -0700 (PDT)
Message-ID: <90996cfa-1c41-4113-846c-eade5c849104@suse.com>
Date: Thu, 31 Oct 2024 10:59:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: ensure L2 is always freed if empty
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20241030114852.55530-1-roger.pau@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: <20241030114852.55530-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.10.2024 12:48, Roger Pau Monne wrote:
> The current logic in modify_xen_mappings() allows for fully empty L2 tables to
> not be freed and unhooked from the parent L3 if the last L2 slot is not
> populated.
> 
> Ensure that even when an L2 slot is empty the logic to check whether the whole
> L2 can be removed is not skipped.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

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

> ---
> I've attempted to find a Fixes tag for this one, but I'm afraid there have been
> many changes in the function, and it's possibly the code that introduced the L2
> freeing (4376c05c31132) the one that failed to originally adjust this case.

Yes, that looks to be the one. It has been a long while, but I think it was
(wrong) similarity considerations with the corresponding L3E handling (near
the top of the main loop) that resulted in me not touching that "continue".
We certainly don't want to ever free L3 tables (vacating L4 entries); since
the 32-bit case still mattered back then, the "continue" also couldn't have
been simply replaced (as there that same consideration applied to L2 tables
and L3 entries, for further extended reasons imposed by PAE).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 10:02:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 10:02:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828564.1243491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6S0f-0004Fv-Uz; Thu, 31 Oct 2024 10:02:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828564.1243491; Thu, 31 Oct 2024 10:02: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 1t6S0f-0004Fo-SD; Thu, 31 Oct 2024 10:02:33 +0000
Received: by outflank-mailman (input) for mailman id 828564;
 Thu, 31 Oct 2024 10:02: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6S0e-0004FG-HJ
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 10:02:32 +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 3cfe3116-976f-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 11:02:29 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-43163667f0eso6158255e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 03:02:29 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c10e734csm1622111f8f.60.2024.10.31.03.02.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 03:02:28 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3cfe3116-976f-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmQiLCJoZWxvIjoibWFpbC13bTEteDMyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjNjZmUzMTE2LTk3NmYtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzY4OTQ5LjQxODQxOCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730368949; x=1730973749; 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=0SWslnV9luPAdTz71bVyVI7Tj1sZxXCCqRyOQgNEpD4=;
        b=aewqf/y1P5etVAOOt9LFKYsigpu8WBC2AxGHuMl+QvEWinGPGaPikDoEZoApikNqLK
         j1x7JV65JyB6BFcnFoX+n4mfTl3b3eguq+1qPqq1IiqVl8s+R5cFa3f797cOP86K2IHj
         /+h74jJUFXa4e8KmFUn7P1LcpBx9alu9dHiJa8BbYzSK89lSRSB1mk1pnwqRm7SPu1OJ
         iURK2Qy+b86uEH2I3feWeNQGPj0AGQCvXeew4KlbBRuSsK+rQqfwdL3B+rOxLoueUfGj
         3Mk3lmfZ+XOzlaXKhegvDRsoegX1rZWSrNKFJZjjW/19DX7x7KDvFWf1QRp+dPyWhzz3
         yYzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730368949; x=1730973749;
        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=0SWslnV9luPAdTz71bVyVI7Tj1sZxXCCqRyOQgNEpD4=;
        b=mBgNMbPozI66RVwkKHHdxGLRZvPoduMAfFXVwhwMalydEShcI4lQUBiUjNijGDq0+T
         6Ie3dOUp9QaxiG1cOJwtWUg0gLijppYkwqZ4nKvioaSKdMAjaxpGJeZlYX0RHzFG7TMD
         AVOHq5NR+Fglr3lXUW6XXnw+0nAi6Y/Il2sxlw0qXOArQo4r/ilzGhcC4cpoCaXQPucQ
         dl6SyFOddZzCp42FjONH1DJ98t8eKrjdd6VoNK2uQmrCPF2+TLqAp1MlUmtykT7Tli4J
         cGZa5yTwGAP1d22hvbtYwbxH0Yb+okXDW2fPnd28TwlYYvZ6CyivixIbzhKzpDgwyRjK
         W2hg==
X-Forwarded-Encrypted: i=1; AJvYcCWOwWkzJbqgGM5l+NpWiMIg0m7ut4MnqWpZVCSaPtoVgV+1lEPisspCN05Zj9T4+Ne0mzjP4IAfOKo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzX49FWjEbjGJJJNhqfGPbYbu5Cye3RIF4OeNjjb2eI4SJySiaM
	oB1LOjPr7fd1mnlnXiFUZt4Ym3Stai+3VFjQkIPUdowU9+W3QpxLj9DWHfzYXw==
X-Google-Smtp-Source: AGHT+IEuVytajJr/S/oOcEqAToZ6eKdRU5tuO7rNZuaU6t0xJeHUeZg4cF0UILJzkokz4L/65ez3kw==
X-Received: by 2002:a05:600c:3488:b0:431:5ce5:4864 with SMTP id 5b1f17b1804b1-4319ad36982mr136371965e9.35.1730368948859;
        Thu, 31 Oct 2024 03:02:28 -0700 (PDT)
Message-ID: <701da657-a709-4c2b-908f-2bfe193948ca@suse.com>
Date: Thu, 31 Oct 2024 11:02:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.19] Config: Update MiniOS revision
To: Andrew Cooper <andrew.cooper3@citrix.com>, Juergen Gross
 <jgross@suse.com>, Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20241030180332.2726909-1-andrew.cooper3@citrix.com>
 <a76d84a3-d150-4836-8ad2-ee0eeabe557b@suse.com>
 <c84ef564-98de-451d-af4e-04e824231ea6@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: <c84ef564-98de-451d-af4e-04e824231ea6@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31.10.2024 10:46, Andrew Cooper wrote:
> On 31/10/2024 9:25 am, Jan Beulich wrote:
>> On 30.10.2024 19:03, Andrew Cooper wrote:
>>> A new branch from xen-RELEASE-4.19.0, for now containing commit
>>> a400dd517068 ("Add missing symbol exports for grub-pv").
>>>
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>> CC: Juergen Gross <jgross@suse.com>
>>> CC: Jan Beulich <JBeulich@suse.com>
>>> CC: Stefano Stabellini <sstabellini@kernel.org>
>>> CC: Julien Grall <julien@xen.org>
>>> ---
>>>  Config.mk | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/Config.mk b/Config.mk
>>> index 03a89624c77f..aa3d5843f1ed 100644
>>> --- a/Config.mk
>>> +++ b/Config.mk
>>> @@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
>>>  QEMU_UPSTREAM_REVISION ?= qemu-xen-4.19.0
>>>  
>>>  MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
>>> -MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.19.0
>>> +MINIOS_UPSTREAM_REVISION ?= xen-stable-4.19
>> Wouldn't we better use a hash here, like we do on staging? There had been
>> cases where it wasn't safe for the used commit to move "automatically", and
>> the same could occur on a stable branch. The hash would then be replaced by
>> a release tag when a release is being prepared (again like on staging).
> 
> It will only be getting build fixes, not new content.  So it will be
> stable-enough in that regard.

Hmm, can we really expect it to only ever be build fixes, not fixes of any
other kind (which then may have dependencies)? Jürgen, Samuel, what's your
take?

Jan

> Otherwise, its hedging my bets as to whether other changes will be
> needed before we cut releases.  All of this comes from the fact that
> we've got a couple of rolling distros which end up up-to-date even on
> the oldest trees.
> 
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 10:24:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 10:24:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828571.1243501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6SLh-0008BZ-JX; Thu, 31 Oct 2024 10:24:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828571.1243501; Thu, 31 Oct 2024 10: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 1t6SLh-0008BS-H1; Thu, 31 Oct 2024 10:24:17 +0000
Received: by outflank-mailman (input) for mailman id 828571;
 Thu, 31 Oct 2024 10: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6SLf-0008BL-SU
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 10:24: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 43f1dd40-9772-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 11:24:09 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2fb5fa911aaso10639341fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 03:24:09 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e564c4fc6sm50716066b.69.2024.10.31.03.24.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 03:24:08 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 43f1dd40-9772-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoyMzAiLCJoZWxvIjoibWFpbC1sajEteDIzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQzZjFkZDQwLTk3NzItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzcwMjQ5LjQ5MTA2Nywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730370249; x=1730975049; 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=7mArC1vUBz+lNBISIxc6efpudfS/T7AiVoWNFagJAnY=;
        b=Praqn9XK7PSSXPRFSEsJQkENN6Ip+NEIOM2s52osTOCFvEucxxWiSkdaRcm8FK4BSS
         dXM4poK0zdr7NC3FJAeNieY6wdoCal18gP4I3hwlRRLPVyplftUACyrDomdtI71FOBaU
         u7XAYRcm9EnGKla//L3cGq47djtQY30f9HpoA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730370249; x=1730975049;
        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=7mArC1vUBz+lNBISIxc6efpudfS/T7AiVoWNFagJAnY=;
        b=fnH1snvoAreRV8xYpj79QR2ID8t2brz/VPAUDF6S4o5cP6lVGT/kDa7Bx205MetRJq
         2uDlQWxIn/O+ypCe0rkRPZdHXiRwi5aMkdWJe2MTx9uu+3gT4RqOzs46cSnPen9od12J
         HLHQfo1vUEwd1I9BqgQaQ36cKbdHlVdEudHIoTWwXbsZ4RIOy5LLvzIHhK/1ez2PcpjU
         dDLdnsbIIB7S/voZaG9g4GEV1ojQqmGws7IszvzSHMaIZ3Jig82LSYZCGwOT04Wb4zs4
         FsRzRjyqdP45jvcnzZsj7jo2gkvbeWEZ8g84P7vhf1CIsVnGAzGjTCU2JtmNNwfos+9e
         Xhgg==
X-Forwarded-Encrypted: i=1; AJvYcCVnOKh30j55LMjOjOLc3Zmt5MXtgBmV77E7OhNm8Y1uUYIX5JypOirzEvwwsfXeGlTDFQIoYS+khhs=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy8cMU3hww8yas0wWnirAgaf9ga6nyLuF92D1ydWs8eLBxbDxQy
	iahjvdYX2XIGZCfT60j3eW9XbqqHsjJWmJc6NeP/eyFqpTpadbkEHTGzGk3nn6Q=
X-Google-Smtp-Source: AGHT+IGMBWWyi4tDRXHH+AohzOL2wp06uKxlNm4IYkXKaRXuRjpks2KAXpy5puccfla9IRs3p4wg2Q==
X-Received: by 2002:a05:651c:1509:b0:2fb:5bd:8ff2 with SMTP id 38308e7fff4ca-2fcbdf9d41amr146718101fa.16.1730370248816;
        Thu, 31 Oct 2024 03:24:08 -0700 (PDT)
Message-ID: <9ad2c3b7-ef2a-4888-a24f-77aebfedb6fe@citrix.com>
Date: Thu, 31 Oct 2024 10:24:06 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.19] Config: Update MiniOS revision
To: Jan Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20241030180332.2726909-1-andrew.cooper3@citrix.com>
 <a76d84a3-d150-4836-8ad2-ee0eeabe557b@suse.com>
 <c84ef564-98de-451d-af4e-04e824231ea6@citrix.com>
 <701da657-a709-4c2b-908f-2bfe193948ca@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <701da657-a709-4c2b-908f-2bfe193948ca@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 10:02 am, Jan Beulich wrote:
> On 31.10.2024 10:46, Andrew Cooper wrote:
>> On 31/10/2024 9:25 am, Jan Beulich wrote:
>>> On 30.10.2024 19:03, Andrew Cooper wrote:
>>>> A new branch from xen-RELEASE-4.19.0, for now containing commit
>>>> a400dd517068 ("Add missing symbol exports for grub-pv").
>>>>
>>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>>> ---
>>>> CC: Juergen Gross <jgross@suse.com>
>>>> CC: Jan Beulich <JBeulich@suse.com>
>>>> CC: Stefano Stabellini <sstabellini@kernel.org>
>>>> CC: Julien Grall <julien@xen.org>
>>>> ---
>>>>  Config.mk | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/Config.mk b/Config.mk
>>>> index 03a89624c77f..aa3d5843f1ed 100644
>>>> --- a/Config.mk
>>>> +++ b/Config.mk
>>>> @@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
>>>>  QEMU_UPSTREAM_REVISION ?= qemu-xen-4.19.0
>>>>  
>>>>  MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
>>>> -MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.19.0
>>>> +MINIOS_UPSTREAM_REVISION ?= xen-stable-4.19
>>> Wouldn't we better use a hash here, like we do on staging? There had been
>>> cases where it wasn't safe for the used commit to move "automatically", and
>>> the same could occur on a stable branch. The hash would then be replaced by
>>> a release tag when a release is being prepared (again like on staging).
>> It will only be getting build fixes, not new content.  So it will be
>> stable-enough in that regard.
> Hmm, can we really expect it to only ever be build fixes, not fixes of any
> other kind (which then may have dependencies)? Jürgen, Samuel, what's your
> take?

The reason I needed to make a branch (and I've got 4.18 (shared with
4.17) and 4.16 also queued up) is to avoid taking intermediate changes
while backporting a build fix.

The last time this happened was Xen 4.6.

The reasoning would be different if we backported new features, but we
don't as a matter of course.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 10:29:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 10:29:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828581.1243511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6SQX-0000u6-8F; Thu, 31 Oct 2024 10:29:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828581.1243511; Thu, 31 Oct 2024 10:29: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 1t6SQX-0000tx-5a; Thu, 31 Oct 2024 10:29:17 +0000
Received: by outflank-mailman (input) for mailman id 828581;
 Thu, 31 Oct 2024 10:29: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=wFO/=R3=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1t6SQW-0000tR-9o
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 10:29:16 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20615.outbound.protection.outlook.com
 [2a01:111:f403:2413::615])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f591936d-9772-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 11:29:08 +0100 (CET)
Received: from BL1P222CA0001.NAMP222.PROD.OUTLOOK.COM (2603:10b6:208:2c7::6)
 by DS0PR12MB6632.namprd12.prod.outlook.com (2603:10b6:8:d0::9) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8093.24; Thu, 31 Oct 2024 10:29:04 +0000
Received: from BL6PEPF0001AB72.namprd02.prod.outlook.com
 (2603:10b6:208:2c7:cafe::ce) by BL1P222CA0001.outlook.office365.com
 (2603:10b6:208:2c7::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.17 via Frontend
 Transport; Thu, 31 Oct 2024 10:29:04 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL6PEPF0001AB72.mail.protection.outlook.com (10.167.242.165) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.8114.16 via Frontend Transport; Thu, 31 Oct 2024 10:29:04 +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.39; Thu, 31 Oct
 2024 05:29:04 -0500
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.39 via Frontend
 Transport; Thu, 31 Oct 2024 05:29:02 -0500
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f591936d-9772-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjQxMzo6NjE1IiwiaGVsbyI6Ik5BTTEwLURNNi1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6ImY1OTE5MzZkLTk3NzItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzcwNTQ4LjY2NTk0OSwic2VuZGVyIjoibWljaGFsLm9yemVsQGFtZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=HmbCvpwZHW+5CjuI0ZhsHM/Det2bGWo6RPqlAX2b6/F8b6h7IHtiqCABqdZRZmj8J+0QQixd93Eg4g+A3cWmlv4VOg5WxFXrCNh3ZDdLSshA78InTuXy3FzALIubRvQXV+DEHT/wx5HJ+mVPRS0XCtSrKH637QWV89mz0x40iAVlqb4Imfa6m7JvShmurygWukg5hinaCz38/uS+ofbbR4vKy4pPNXIb/ZIg8ZKMNV9Hf2G/3IUOoaDsp+zDuUMfFg7Ir7bTBVhP9LiPVi3+S5fFAvkFUBRJrvOojK23sAGgPkt5WafdCf16QRYFGgCgtgK1+T82DbrWFXwcWtJpkg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=6D13RHuKFNutF6U+Uy+kHpAoeuJDEwedRhhiK/+uX4U=;
 b=fZ0fUNfcdie21jiKg/Q1volfllCJThxfj4vgRMfkpcrj/kvzcQOIVfnBXncOWVHYAGdsjUoZD7jdSvL2zqbw5ch/E5fPjmrCPnlcuz8UXhrT8tiBQgZWTdvvm19k5R/r1rx8QF2Sf2UjjRh2Ve8GBlQW072dmCi8AHdsDdj6PiVkkSclANcUI5mL/cRdkCw1riLooMFiSxtVp2inuuhNxYT2j+zc57A9es173QARUbi5zLGOIuRGXgCBw+jOhY/73Yp8i+CIM1wGq4OUfayeogMNv+Da11By01NQzt9423fvnAbQ8OeqvdL/pcMscXdxqkpBzG0/hsMSnO4EansRjA==
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=6D13RHuKFNutF6U+Uy+kHpAoeuJDEwedRhhiK/+uX4U=;
 b=GdJ6RrJSACzCBVpmwPxisz/H7IdHaa85/6TuEfiB1F7K1CTG6guSxi2FAjRpTU0CQVLUC3q2r/Zk5RzuaG/9jS9ahUhdtimgzwKwQ92hYodDGtcfA73945b6sY94O+63SnRdqNxENu77jLCobU0Srw61NJW7/mXWVkqIaXEWkpg=
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: <c400bd0f-1360-45ea-bd29-bf7883debd93@amd.com>
Date: Thu, 31 Oct 2024 11:29:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/common: Move gic_preinit() to common code
To: Jan Beulich <jbeulich@suse.com>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, <xen-devel@lists.xenproject.org>
References: <e906b538aba684ab108cc70e8c60ed35ddfad74e.1730292286.git.oleksii.kurochko@gmail.com>
 <6461a47f-759a-4138-970c-4e5f68b07bae@suse.com>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <6461a47f-759a-4138-970c-4e5f68b07bae@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Received-SPF: None (SATLEXMB03.amd.com: michal.orzel@amd.com does not
 designate permitted sender hosts)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB72:EE_|DS0PR12MB6632:EE_
X-MS-Office365-Filtering-Correlation-Id: 6172155a-a863-41bc-8894-08dcf996d83a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|1800799024|82310400026|36860700013;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?eFFSTEFwZzFDaXlqZ29ubzNtbWF1S3dFTzF4OWhodTdUUlIybDRndlh0L28w?=
 =?utf-8?B?QkJIWXg5Q1AvOGErTDY1clRhRE44QzNHcGVjOXIwWmJpUENVTGFZM2EyS1FK?=
 =?utf-8?B?MXJKM2trUVVBZzB3VzZ5MzdFL3dvYmpydXBPaTVqamRXWFlSMG9wdHBEYkVv?=
 =?utf-8?B?MXdjNy9wL3EycVFhdXNMWG1Ddkd1c1VBd3NHMjladFVtOU9Cd3dvVVJuSlZC?=
 =?utf-8?B?Y1RkOVhpQUtZZmpqZVVTUFVaZzNTTENSbjlENWZTbnMrQlhWY1pIVXVEenY4?=
 =?utf-8?B?dWV5WGRvY3huV0djVUNiWnptUk4rbzN2NG0wNGdyWSs4ckErUVhrNEhoc283?=
 =?utf-8?B?QnZ2Y3pxbTI1c2dkUTNIMmxaaGhYMzlWemhvZFZrdThoKy91NFdNU20rYklw?=
 =?utf-8?B?WDBsaDhMOHUzclUwbDZnU2t3d3NMOW82cURkTlU5U2JsYkpWZm5oQ1ZqQUhG?=
 =?utf-8?B?L00rM0REZjdUUE9RbU1YekJpWWt3SERhZSt0bTVlYmVqRUtuQTFpaUtUM2gw?=
 =?utf-8?B?WlZBMEp5b2F1K08vU1N5cTk0VTBIM29hVnJEQllXMDNBem9CbmhrTFF2QWFo?=
 =?utf-8?B?L3ZUVllLVkVxVExpRjBRQXdpRzRwTmt5TUs1VUZrL3JPMzdkR0tabGF0TG5k?=
 =?utf-8?B?UDRxL2VJZEx5bDZTVTZuV1pPQ1JDZnRBU0tlZ0M0ZGlTTHBOSDRkV3A3RDZZ?=
 =?utf-8?B?eHI1YXA2UGRsQk1SVkdzaDc0endodFVkMk5xbStFbEVGdXlsQ3JLWmlnUXZy?=
 =?utf-8?B?cmtaVjM5L2VaZmZVOFhYdGZYZHl1dnFnbzlDVGlLNDZVNHMyTERwU3U2V1ht?=
 =?utf-8?B?dWxuNzh6c21kbXh3UUFQN05nVXRDQ2t0NjdlTEhZOWlYNkxNYVQ5c2lsMlow?=
 =?utf-8?B?cHBCTXV5NldGVDVyZUpxSy9BQW1UMWp1QXVNUXRTSmZRd1hnckVqdWx1dFZG?=
 =?utf-8?B?WEsrTmxlZExtRXRKc1lLMHg5TWxSMStOQVRTYzMwWUFVb0VsVTNhQVN6VkRi?=
 =?utf-8?B?NFMzK0RjR2pVdjJPWHpyZkM3YUpGeW9EQ0FENHQ4b0V5cktqTFJJSnNDc2sv?=
 =?utf-8?B?d1pGZ0RJeEU5Rk0rckNKRm5JZnVBaDFaUVZGZnpYUlZteTRaZE5ScnF0dWMx?=
 =?utf-8?B?djlxN2RJbFR2SmF1bEpvdXFDalh3bDRoKzRXQzN4L2FHRzFrczRHUHZnaDNZ?=
 =?utf-8?B?U2RlZE1tS3pYK0F0ZlVEb0hsM2hMRHFtYVZZZ0lKRktaMmgvWlJ4cTRuRzND?=
 =?utf-8?B?VXFRM05OalhuT3I3S2hjMzIxOThEVGtUZDJ6WjZiTGFwbG01ZytZclRYT3VJ?=
 =?utf-8?B?eUx6ZUVqTWhteWQyZ2ZBWEJjWmVGM3R5Y0I4ZSsrZGVNcCtrN21TMVhadVdT?=
 =?utf-8?B?N2x6U2xINW5vMWlrcm5mb0RQU205WlNQU1N3R3l6NVRyN04zaDFsaVFBbDRl?=
 =?utf-8?B?clE1VmxzQStzNmdtOEhpTGlQOHhwK2VZV0ZCRk9lcm5IV3R5dlBHcDB3dzVW?=
 =?utf-8?B?ZWRPSXNQWTF1cE9pL0pPTXFPWVJOR0RhUmRLRG5obGhmcHpRTE9VSEF1ZW8w?=
 =?utf-8?B?bmpIcjZBSTNqSTRKclp4VFljRUJRMm9EZktqTDMyS3F0Z0h1WFVtK3NXNjdU?=
 =?utf-8?B?QnpIZG9YR1JZbzlPVVVZakc5Wm5KN05NcmY4Y1dtbThjVXJFK0dvbHBUL1ph?=
 =?utf-8?B?cTE4RUg2R1FEQjJ4OGIzS1lCSHV5dmdYLzNLWVNZeHg5UVdLZldzcjdkRE4x?=
 =?utf-8?B?anc3NVBkdmVwU08rcXR4T2xkNHJIZDR0TUdFeDMzUFRmc1U0NjRWRSsyVllE?=
 =?utf-8?B?eU5sZjNEeUZMUlVmQVZEbXFUVHF2MlNMRUhwVmN3WVFtNExEMlhwQnZyU1RL?=
 =?utf-8?B?VEZjTjhIc3ZLeXFrQ0kxZWEyVWZOZHB6RFBJSWhiN2RaM2c9PQ==?=
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:(13230040)(376014)(1800799024)(82310400026)(36860700013);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2024 10:29:04.7111
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6172155a-a863-41bc-8894-08dcf996d83a
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:
	BL6PEPF0001AB72.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6632



On 31/10/2024 10:34, Jan Beulich wrote:
> 
> 
> On 30.10.2024 14:14, Oleksii Kurochko wrote:
>> Introduce ic_preinit() in the common codebase, as it is not
>> architecture-specific and can be reused by both PPC and RISC-V.
>> This function identifies the node with the interrupt-controller property
>> in the device tree and calls device_init() to handle architecture-specific
>> initialization of the interrupt controller.
>>
>> Additionally, rename gic_acpi_preinit() to ic_acpi_preinit() as it is used
>> by ic_preinit(), while keeping it defined in architecture-specific as this
>> part is architecture-specific. In case if CONFIG_ACPI=n a stub for
>> ic_acpi_preinit() is provided. To declaration/defintion of ic_acpi_preint()
>> is added `inline` to deal with the compilation issue:
>>   error: 'ic_acpi_preinit' defined but not used [-Werror=unused-function]
>>
>> Make minor adjustments compared to the original ARM implementation of
>> gic_dt_preinit():
>>  - Remove the local rc variable in gic_dt_preinit() since it is only used once.
>>  - Change the prefix from gic to ic to clarify that the function is not
>>    specific to ARM’s GIC, making it suitable for other architectures as well.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> ---
>> Changes in v2:
>>  - Revert changes connected to moving of gic_acpi_preinit() to common code as
>>    it isn't really architecture indepent part.
>>  - Update the commit message.
>>  - Move stub of ic_acpi_preinit() to <asm-generic/device.h> for the case when
>>    CONFIG_ACPI=n.
>> ---
>>  xen/arch/arm/gic.c               | 45 +------------------------------
>>  xen/arch/arm/setup.c             |  3 ++-
>>  xen/common/device.c              | 46 ++++++++++++++++++++++++++++++++
>>  xen/include/asm-generic/device.h | 10 +++++++
>>  4 files changed, 59 insertions(+), 45 deletions(-)
> 
> Looks largely okay to me now, with a question and a nit at the bottom. The
> question is mainly to Arm folks, where the code is coming from, and DT
> maintainers: Is a file named device.c really an appropriate "home" for
> IC-related code? If IC is a common thing in the DT world, would such code
> maybe better live under common/device-tree/?
I think we will have more interrupt related dt stuff common, so it would make sense to create
device-tree/irq.c or intc.c.

@Olku, can you please s/ic/intc/ ? It's much more common abbreviation for interrupt controller.
You can do e.g. grep -Rw "ic" vs grep -Rw "intc" in Linux Documentation/devicetree/bindings/interrupt-controller.

~Michal


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 10:37:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 10:37:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828589.1243521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6SY1-0002rj-4Y; Thu, 31 Oct 2024 10:37:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828589.1243521; Thu, 31 Oct 2024 10:37: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 1t6SY1-0002rc-01; Thu, 31 Oct 2024 10:37:01 +0000
Received: by outflank-mailman (input) for mailman id 828589;
 Thu, 31 Oct 2024 10:37: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=XIyL=R3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1t6SY0-0002qE-4n
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 10:37:00 +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 0d216a80-9774-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 11:36:56 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-539f58c68c5so1394852e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 03:36:56 -0700 (PDT)
Received: from localhost ([213.195.115.182]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e56643f70sm52624866b.173.2024.10.31.03.36.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 03:36:55 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0d216a80-9774-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMmYiLCJoZWxvIjoibWFpbC1sZjEteDEyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjBkMjE2YTgwLTk3NzQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzcxMDE2LjQ3ODkzMiwic2VuZGVyIjoicm9nZXIucGF1QGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730371016; x=1730975816; 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=OvaWco0QKxR3BWCfgIeB1KDP/z7NvTZm7IV/OSfo/EI=;
        b=MTMn1WVu10UiQIHMf1jqL7itrd1QJ2pzXyDUb4xnqRRfgjz0MV2o+OiZTjIF54mDCa
         ajIFZ1I9YFtlDUBfXz2sSzRFQJ5cjoTZP0U4ftmA3igHYlMPPREFeSRYqqHv6lV4TqAV
         +pLAfYS2Fyu2CcI+Ze11mqW/aXx4sjkfGZa0E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730371016; x=1730975816;
        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=OvaWco0QKxR3BWCfgIeB1KDP/z7NvTZm7IV/OSfo/EI=;
        b=uMXerfaskXuFcM4B2fAWTJMFsQw6GjFkI5+uu2voRHujrNktndtU3SXMJkRU3AfP3v
         VS+VqdEZaJJl1q94+H6bq6/QKv1KafQ2OWHvijpaqubseumOkO2T7kx94Svxd81tWg/m
         enAQzIKpv5h+Z5zA1V7M+Tqbx37sLZy7CdZoBnN5wdx3oaEy1ilUQSe6jotRv0mAJwSv
         bsLb/WvtaSKPtyCgTY7lHpixrOZH0gy5fpKvF6Vmp3uFPAa3hf/xCDjgp0/uXz5wUOdn
         caDNjju7Q7TLV2M+c1/sZ9hOfdcekyLvPGOwMWk2Q95UAwHasV1i+uyOWetRfFcwUQ/G
         QaIQ==
X-Forwarded-Encrypted: i=1; AJvYcCWGq8XhZjJYkA4e09LZDu4wcbjTMCXEISqqPsfACZhN0qzi7oIPCFWyt/+aR9XctUynHvSJy2kjomA=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywy4wBH7/9jC8AA/eDyJ6ZrNlJw3DBxSdoaNpVUy8WjqNlM7vD8
	WSOxWYt1JUdAZHT+E3f106SHMuoIRpVh4pHH8QbWcthoMXSuUcOUF8TYZAboTUA=
X-Google-Smtp-Source: AGHT+IHMPOCJ35h3v+D/D6gkdqEOs2HZqffUxwbpzrjmDQdhNenyjelSjHPwgwtjj+1uzNXy46WRfw==
X-Received: by 2002:a05:6512:334f:b0:53b:4a6c:1849 with SMTP id 2adb3069b0e04-53b4a6c6093mr5540591e87.35.1730371015789;
        Thu, 31 Oct 2024 03:36:55 -0700 (PDT)
Date: Thu, 31 Oct 2024 11:36:54 +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
Subject: Re: [PATCH] x86/mm: ensure L2 is always freed if empty
Message-ID: <ZyNdxj8XMV7OIjdN@macbook.local>
References: <20241030114852.55530-1-roger.pau@citrix.com>
 <90996cfa-1c41-4113-846c-eade5c849104@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <90996cfa-1c41-4113-846c-eade5c849104@suse.com>

On Thu, Oct 31, 2024 at 10:59:36AM +0100, Jan Beulich wrote:
> On 30.10.2024 12:48, Roger Pau Monne wrote:
> > The current logic in modify_xen_mappings() allows for fully empty L2 tables to
> > not be freed and unhooked from the parent L3 if the last L2 slot is not
> > populated.
> > 
> > Ensure that even when an L2 slot is empty the logic to check whether the whole
> > L2 can be removed is not skipped.
> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> 
> > ---
> > I've attempted to find a Fixes tag for this one, but I'm afraid there have been
> > many changes in the function, and it's possibly the code that introduced the L2
> > freeing (4376c05c31132) the one that failed to originally adjust this case.
> 
> Yes, that looks to be the one. It has been a long while, but I think it was
> (wrong) similarity considerations with the corresponding L3E handling (near
> the top of the main loop) that resulted in me not touching that "continue".
> We certainly don't want to ever free L3 tables (vacating L4 entries); since
> the 32-bit case still mattered back then, the "continue" also couldn't have
> been simply replaced (as there that same consideration applied to L2 tables
> and L3 entries, for further extended reasons imposed by PAE).

I agree we don't want to free L3 tables and thus zap L4 entries.

Feel free to add:

Fixes: 4376c05c3113 ('x86-64: use 1GB pages in 1:1 mapping if available')

If you want.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 10:59:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 10:59:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828602.1243539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Sts-0006YV-TX; Thu, 31 Oct 2024 10:59:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828602.1243539; Thu, 31 Oct 2024 10:59: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 1t6Sts-0006YO-Qf; Thu, 31 Oct 2024 10:59:36 +0000
Received: by outflank-mailman (input) for mailman id 828602;
 Thu, 31 Oct 2024 10:59: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6Stq-0006Xh-VZ
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 10:59:34 +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 3533f127-9777-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 11:59:32 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-4316cce103dso8323425e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 03:59:32 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd9ca8eesm52336995e9.43.2024.10.31.03.59.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 03:59:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3533f127-9777-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzAiLCJoZWxvIjoibWFpbC13bTEteDMzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjM1MzNmMTI3LTk3NzctMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzcyMzcyLjM3MDU5Nywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730372372; x=1730977172; 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=87y4U5te/Z8O4jq7dLR7SHK9bZ6w4rkat3T91hrF7Yc=;
        b=SLhusn4ZLisehV2fO1hD3llSq3wr0pvU8JiwIICin2EsfGV0Fm4wIlEVZvZDcYI37u
         JtJUWHOQXTNEaqDaV9O2gXCgp0hp5YF6worazmMpvRomi5B6eDBY/hMJBBfx7FFFUflC
         puSTG0nWs+klRVSciO6HS+eMJkhGuqFq5d7q4EcknnpJ/Qj/jPyNEliClCpgao+TXpPh
         7loNsSVU9Ioygnz0EtOz0AwYnNTjBv3uyU4zfrRMz7zByX5j+iGMueOmX/KqWUgVwzxr
         WXEN+ly1pTNhiQDQUXyK92HWZQdtkQcH0ZNZ+0w/GHXNA31Quc1TE02VnFh2Zxl94ZbW
         d2Kg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730372372; x=1730977172;
        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=87y4U5te/Z8O4jq7dLR7SHK9bZ6w4rkat3T91hrF7Yc=;
        b=wxqWWjZPgN91NoJifFN1ei9alwL3tNoHvLvOdwNdgjO2cFUnbw8ftazmMbopdTeSbu
         XyKYHXlNqE+HZ94ZqqjAMGIYQuSPg8j5lXfkrVMFJ569WBuO3Dm0vIotKBp71FIgRMyb
         HXVgVJupDoXaiA35Jovc69pKUUp9Qfmsl+kTC30fAjzrQNKQA0nqV2YJv+Avxp48t5q/
         GrY0H8VgKEGCy6snCt9Y6M2DzXRoo6Xfb44rhTvjO/mIT1bn+wZETz9UuwH4qKZ5DMm7
         2mV38snakQg/3oor4DRrMOghguyHuuL0MYksQyXMUgsbzNsD0WEuT9PHJgsHSKq9nEQq
         xrug==
X-Forwarded-Encrypted: i=1; AJvYcCVqg4BukDuwb2ZZxDtp50kkjMASeDgyuIvvfJ8awqz4IUQH+jNqeAdy0/JSl+a2D4Q8s549CRCIlCo=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yxp/LUhdrWkzL1CgIsLrVqHsxcFxmDf7Ojw+PQRWLHufS2g3eMo
	bzI71/J+uqH331oXzUAyx1sRpN2UHwrv0yuz04sEwX9MZYHtTth+BF/XOSq2kQ==
X-Google-Smtp-Source: AGHT+IH3UqaKYwxsxjy3PVic2JOCLPwVMkztnBPulXBeXYUUEbzD1RQI5FxwPHj05t3zWbN6pSud4A==
X-Received: by 2002:a05:600c:3c8c:b0:42b:ac3d:3abc with SMTP id 5b1f17b1804b1-4319ad068f6mr203762995e9.24.1730372371688;
        Thu, 31 Oct 2024 03:59:31 -0700 (PDT)
Message-ID: <6823a222-63ad-4a5a-83d2-70c6f39f38c0@suse.com>
Date: Thu, 31 Oct 2024 11:59:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/6] xen: add bitmap to indicate per-domain state changes
To: Juergen Gross <jgross@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-3-jgross@suse.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: <20241023131005.32144-3-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23.10.2024 15:10, Juergen Gross wrote:
> Add a bitmap with one bit per possible domid indicating the respective
> domain has changed its state (created, deleted, dying, crashed,
> shutdown).
> 
> Registering the VIRQ_DOM_EXC event will result in setting the bits for
> all existing domains and resetting all other bits.

That's furthering the "there can be only one consumer" model that also
is used for VIRQ_DOM_EXC itself. I consider the existing model flawed
(nothing keeps a 2nd party with sufficient privilege from invoking
XEN_DOMCTL_set_virq_handler a 2nd time, taking away the notification
from whoever had first requested it), and hence I dislike this being
extended. Conceivably multiple parties may indeed be interested in
this kind of information. At which point resetting state when the vIRQ
is bound is questionable (or the data would need to become per-domain
rather than global, or even yet more fine-grained, albeit
->virq_to_evtchn[] is also per-domain, when considering global vIRQ-s).

> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -138,6 +138,22 @@ bool __read_mostly vmtrace_available;
>  
>  bool __read_mostly vpmu_is_available;
>  
> +static DECLARE_BITMAP(dom_state_changed, DOMID_MASK + 1);

While it won't alter the size of the array, I think DOMID_FIRST_RESERVED
would be more logical to use here and ...

> +void domain_reset_states(void)
> +{
> +    struct domain *d;
> +
> +    bitmap_zero(dom_state_changed, DOMID_MASK + 1);

... here.

> +    rcu_read_lock(&domlist_read_lock);
> +
> +    for_each_domain ( d )
> +        set_bit(d->domain_id, dom_state_changed);

d is used only here, so could be pointer-to-const?

> --- a/xen/common/event_channel.c
> +++ b/xen/common/event_channel.c
> @@ -1296,6 +1296,8 @@ long do_event_channel_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>          rc = evtchn_bind_virq(&bind_virq, 0);
>          if ( !rc && __copy_to_guest(arg, &bind_virq, 1) )
>              rc = -EFAULT; /* Cleaning up here would be a mess! */
> +        if ( !rc && bind_virq.virq == VIRQ_DOM_EXC )
> +            domain_reset_states();

evtchn_bind_virq() isn't static, so callers beyond the present ones could
appear without noticing the need for this special casing. Is there a reason
the check can't move into the function? Doing the check in spite of the
copy-out failing is imo still reasonable behavior.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 11:16:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 11:16:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828609.1243549 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6TAC-0001Ij-9o; Thu, 31 Oct 2024 11:16:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828609.1243549; Thu, 31 Oct 2024 11:16: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 1t6TAC-0001Ib-68; Thu, 31 Oct 2024 11:16:28 +0000
Received: by outflank-mailman (input) for mailman id 828609;
 Thu, 31 Oct 2024 11:16: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6TAA-0001HC-3A
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 11:16:26 +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 8ee285b3-9779-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 12:16:21 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-4316cce103dso8492965e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 04:16:21 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4327d5ab297sm22619415e9.8.2024.10.31.04.16.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 04:16:20 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ee285b3-9779-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzUiLCJoZWxvIjoibWFpbC13bTEteDMzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjhlZTI4NWIzLTk3NzktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzczMzgxLjc4OTQwNiwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730373381; x=1730978181; 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=g3odNZV4CogQF3+Zos5AOhrfJMGrmNPdP21SWJ1C5ZQ=;
        b=MYhbEIIPLpsOV8pWJTAr44Q42VQW0DTj/QOOxjYWhA50Orj8r/1VlMtrs6WEknZcNP
         asGt7FoceJ6Yim4XrcBp595UzPwwb5cZyJt9XBOoq0QKo46F9QxiT0KsB2gQ7RIPiBrn
         EDJBWysAf/OmsmcQnkiR3WBCBf5PtN57bjfMkMVyCyhay7rWDvOaFvZBsnp99ZeuoKD0
         xQfCCWPlMn8MTi7+7mY0pVbAqS3YLWtt4GWk0btiKIS+Xa+8tAKstYUPgIZtT13WW3fC
         6r0o2RfIHrew69d9HUrnAe+GgNs+fKQOJ5exJA/fB4teuBv1rfQ/ehfuWYe4TIuTF9Jr
         uwuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730373381; x=1730978181;
        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=g3odNZV4CogQF3+Zos5AOhrfJMGrmNPdP21SWJ1C5ZQ=;
        b=LK7eyC/3BvZlz/+iZGu4KU8ALtNeH+AFZOejeDWD9yCKDASdFDGLOjIMFmMRGLzKWD
         nTHVwiuhdASBQWcPLPyXK6TNiMLfThPoCTV6FKzZk1OSdA8NB9FX0ys006AUcRvGGRD7
         vosZjY1CLxDzZkl/uQzWpN/7CkkBblhibhxZoYXvmsjH9iojKmPoMb89M8xj4Gh0rztU
         C79U8PD5L572+A2LlpVMlMZs+tR0D26C2FDKZlV8SaZa6v1L/KH7PwFlFEdp+QR3+XK0
         PSPzfbHgq/fe6S4sBdPuLdgI/IwlYgJcfTAwVO0FS8H3g9i0aGt771ZosM0iaIDpFH+c
         BbSg==
X-Forwarded-Encrypted: i=1; AJvYcCXtjQobdcoz+Yr6JIKjVCsHJCg6PqZmzo0Yp0blD7fsSkKNlCM/bHuDyKzbC7neV4Zf0qboyBozCi8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxMrj9kn+HUEG/FLEeMIf3xrHsQUQGtir3vqKHwtpPV05Hp4TT3
	jOJBrr1UrpJlyQLilMbzVO8mP7LA3bFArE3VTtpgccHHxYAesOT2Do6Li1WdvtTO/KN0xaSwqpM
	=
X-Google-Smtp-Source: AGHT+IFmqsY38XzEmBBMpJBk9xl/sTzz+97kh2j6A/8BOFZRdiHbJdWF0c7nth/NylU/zFxGXa44Yg==
X-Received: by 2002:a05:600c:4fce:b0:431:4f29:9539 with SMTP id 5b1f17b1804b1-4319ad29f7cmr210715865e9.32.1730373381075;
        Thu, 31 Oct 2024 04:16:21 -0700 (PDT)
Message-ID: <f4791b83-67ce-4530-8ea3-581ee8c90631@suse.com>
Date: Thu, 31 Oct 2024 12:16:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/6] xen: add new domctl get_changed_domain
To: Juergen Gross <jgross@suse.com>
Cc: "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-4-jgross@suse.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: <20241023131005.32144-4-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23.10.2024 15:10, Juergen Gross wrote:
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -154,6 +154,57 @@ void domain_reset_states(void)
>      rcu_read_unlock(&domlist_read_lock);
>  }
>  
> +static void set_domain_state_info(struct xen_domctl_get_domain_state *info,
> +                                  const struct domain *d)
> +{
> +    info->state = XEN_DOMCTL_GETDOMSTATE_STATE_EXIST;
> +    if ( d->is_shut_down )
> +        info->state |= XEN_DOMCTL_GETDOMSTATE_STATE_SHUTDOWN;
> +    if ( d->is_dying == DOMDYING_dead )
> +        info->state |= XEN_DOMCTL_GETDOMSTATE_STATE_DYING;
> +    info->unique_id = d->unique_id;
> +}
> +
> +int get_domain_state(struct xen_domctl_get_domain_state *info, struct domain *d)
> +{
> +    unsigned int dom;
> +
> +    memset(info, 0, sizeof(*info));

Would this better go into set_domain_state_info()? Ah, no, you ...

> +    if ( d )
> +    {
> +        set_domain_state_info(info, d);
> +
> +        return 0;
> +    }
> +
> +    while ( (dom = find_first_bit(dom_state_changed, DOMID_MASK + 1)) <
> +            DOMID_FIRST_RESERVED )
> +    {
> +        d = rcu_lock_domain_by_id(dom);

... acquiring the lock early and then ...

> +        if ( test_and_clear_bit(dom, dom_state_changed) )
> +        {
> +            info->domid = dom;
> +            if ( d )
> +            {
> +                set_domain_state_info(info, d);

... potentially bypassing the call (with just the domid set) requires it
that way.

As to the point in time when the lock is acquired: Why is that, seeing that
it complicates the unlocking a little, by requiring a 2nd unlock a few
lines down?

> +                rcu_unlock_domain(d);
> +            }
> +
> +            return 0;
> +        }
> +
> +        if ( d )
> +        {
> +            rcu_unlock_domain(d);
> +        }

Nit: No need for the braces.

> --- a/xen/common/event_channel.c
> +++ b/xen/common/event_channel.c
> @@ -969,11 +969,18 @@ static struct domain *global_virq_handlers[NR_VIRQS] __read_mostly;
>  
>  static DEFINE_SPINLOCK(global_virq_handlers_lock);
>  
> +struct domain *get_global_virq_handler(uint32_t virq)
> +{
> +    ASSERT(virq_is_global(virq));
> +
> +    return global_virq_handlers[virq] ?: hardware_domain;
> +}
> +
>  void send_global_virq(uint32_t virq)
>  {
>      ASSERT(virq_is_global(virq));
>  
> -    send_guest_global_virq(global_virq_handlers[virq] ?: hardware_domain, virq);
> +    send_guest_global_virq(get_global_virq_handler(virq), virq);
>  }

Is this a stale leftover from an earlier version? There's no other caller of
get_global_virq_handler() here, hence the change looks unmotivated here.

> @@ -1236,7 +1237,37 @@ struct xen_domctl_dt_overlay {
>  };
>  #endif
>  
> +/*
> + * XEN_DOMCTL_get_domain_state (stable interface)
> + *
> + * Get state information of a domain.
> + *
> + * In case domain is DOMID_INVALID, return information about a domain having
> + * changed state and reset the state change indicator for that domain. This
> + * function is usable only by a domain having registered the VIRQ_DOM_EXC
> + * event (normally Xenstore).
> + *
> + * Supported interface versions: 0x00000000
> + */
> +#define XEN_DOMCTL_GETDOMSTATE_VERS_MAX    0
> +struct xen_domctl_get_domain_state {
> +    domid_t domid;

Despite the DOMID_INVALID special case the redundant domid here is odd.
You actually add the new sub-op to the special casing of op->domain at the
top of do_domctl(), so the sole difference to most other sub-ops would be
that this then is an IN/OUT (rather than the field here being an output
only when DOMID_INVALID was passed in via the common domid field).

> +    uint16_t state;
> +#define XEN_DOMCTL_GETDOMSTATE_STATE_EXIST     0x0001  /* Domain is existing. */
> +#define XEN_DOMCTL_GETDOMSTATE_STATE_SHUTDOWN  0x0002  /* Shutdown finished. */
> +#define XEN_DOMCTL_GETDOMSTATE_STATE_DYING     0x0004  /* Domain dying. */
> +    uint32_t pad1;           /* Returned as 0. */
> +    uint64_t unique_id;      /* Unique domain identifier. */
> +    uint64_t pad2[6];        /* Returned as 0. */
> +};

What are the intentions with this padding array?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 11:23:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 11:23:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828618.1243559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6TH8-0003KX-2H; Thu, 31 Oct 2024 11:23:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828618.1243559; Thu, 31 Oct 2024 11:23: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 1t6TH7-0003KQ-V6; Thu, 31 Oct 2024 11:23:37 +0000
Received: by outflank-mailman (input) for mailman id 828618;
 Thu, 31 Oct 2024 11:23: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6TH7-0003KK-82
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 11:23:37 +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 90b398bb-977a-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 12:23:34 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-53a097aa3daso762136e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 04:23:34 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c10e7387sm1825245f8f.51.2024.10.31.04.23.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 04:23:33 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90b398bb-977a-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMmYiLCJoZWxvIjoibWFpbC1sZjEteDEyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjkwYjM5OGJiLTk3N2EtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzczODE0LjI2MjkwMiwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730373814; x=1730978614; 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=gEOEfNpnkuvrVo2CgWf3xid2FWrodfagnMjFyDGiISQ=;
        b=FQv9AX9OHuxWT6y3WU84/3DhgHW4Y80C7WACfON+10ufdHPkgK6vFoQv9/ZpZ3c2TQ
         k1iqFtxSHKYgz7D8KkwgXG/yQOtOBd+hgLMJ+SK7c7/5XsL1KOoan4bgYDHHw1yj8aSO
         e34W6FiJefppUYPGRhRRA04FwZUZEVRE4lHS0lpZQWi1SkoR5JpLHq7HzeMczUjsiqWT
         9k5Uvu0yx68fLc1+fBLJe4BRCqAKAWGRt7e7v4UhGbkT2VklDjLoJh4+70Ft7K7ubAT0
         MM8niGUsRAym5YYP1nlN4di259+L7qzHWV3ymgsOiobXmKmZGxi33swQ2vTqUE1JexdK
         iPLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730373814; x=1730978614;
        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=gEOEfNpnkuvrVo2CgWf3xid2FWrodfagnMjFyDGiISQ=;
        b=PbAbIV3Vl4KE18g1uIlwJJUAyKFw2wk8gZ/oVQS0Du5FpjZ8aQ6PMl95HqPTnTEa2k
         259FHYOYCO5qeR2hePJSZ4bmfwyp/f4lSAvrH+L4X/9RCYpjF0huKgrwJqrwqRd/Frr8
         ac4Mr71pWiFhFQu8ef1XLYkDlkjGvm5rtdEhsqgsqJymReYOS+JUwr13VlPec7vMxzBc
         GMYtVuleCDAWMlGgSNHBRgrAM8ekqcGJDsJQAyKspTvqndsfljzBTTdwRdftWlrxjFQA
         F3JfdpNACUG5Sc7jgnI9KhpO/a65Mim8b5rHANX6L/813mCIDEugnr+0J4JeLXcUablU
         E46Q==
X-Forwarded-Encrypted: i=1; AJvYcCUJjZA+HKtDD2Su0kg1pVJnzRuuv+T81VhUasYIou+gFMpCLOrsy6cJM/4ToQ+RSHev4oEXrQ6xzNo=@lists.xenproject.org
X-Gm-Message-State: AOJu0YyUPc+ha4pVnUaONaKn3LjK+2jFzxeORTByIw1aA0vjThoHwJVp
	qNYsD6cIP6JnXui0P5v97epTZgmrnvo5hjDH5tivqpKaFOqgaiNLz85sOq7CkeLmpEg4mpfdRd0
	=
X-Google-Smtp-Source: AGHT+IGLMbeqerpJ6vt0l91TEj9kC3M3vJtgSZKOOOoI5a9HsIZ0Z1Gg78hzGjiJjuxlinnHG1aGSA==
X-Received: by 2002:a05:6512:3d8e:b0:536:54c2:fb83 with SMTP id 2adb3069b0e04-53b348cef78mr10007674e87.23.1730373813582;
        Thu, 31 Oct 2024 04:23:33 -0700 (PDT)
Message-ID: <56b2b751-74bc-4b47-a966-2c8a6ef2b35d@suse.com>
Date: Thu, 31 Oct 2024 12:23:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/7] byteorder: replace __u16
From: Jan Beulich <jbeulich@suse.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
 <a7b6fc68-a568-4b61-895d-c295ba3d3095@citrix.com>
 <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@suse.com>
 <f5572afc-7c9e-4c2e-ba3f-6ce4f3b71d59@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: <f5572afc-7c9e-4c2e-ba3f-6ce4f3b71d59@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.10.2024 11:37, Jan Beulich wrote:
> On 09.10.2024 15:34, Jan Beulich wrote:
>> On 09.10.2024 15:20, Andrew Cooper wrote:
>>> On 09/10/2024 10:21 am, Jan Beulich wrote:
>>>> In {big,little}_endian.h the changes are entirely mechanical, except for
>>>> dealing with casting away of const from pointers-to-const on lines
>>>> touched anyway.
>>>>
>>>> In swab.h the casting of constants is done away with as well - I simply
>>>> don't see what the respective comment is concerned about in our
>>>> environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
>>>> architecture, sizeof(long long) >= 8). The comment is certainly relevant
>>>> in more general cases. Excess parentheses are dropped as well,
>>>> ___swab16()'s local variable is renamed, and __arch__swab16()'s is
>>>> dropped as being redundant with ___swab16()'s.
>>>>
>>>> With that no uses of the type remain, so it moves to linux-compat.h.
>>>>
>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>> ---
>>>> I'm unconvinced of the need of the separate ___constant_swab16(). I'm
>>>> also unconvinced of the need for said constants (that even had casts on
>>>> them).
>>>
>>> There is a still-good series deleting the whole of byteorder/ and
>>> replacing it with a few-hundred line single header.
>>>
>>> It is the second thing stalled on a governance change (prohibited
>>> reasons to object to a change) which clearly no-one gives a damn about
>>> fixing.  In fact double spite because it denied a good engineer his
>>> first changes in Xen.
>>>
>>>
>>> I don't particularly feel like trying to polish byteorder.  I'm inclined
>>> to rebase+repost Lin's patches, at which point the majority of this
>>> series simply disappears.
>>
>> I wouldn't mind you doing so, as long as that other series then progresses.
>> What I don't want to get into is the other series being stuck rendering this
>> one stuck, too. Then it would imo be better to take this one first, rebase
>> the other on top, and work towards it becoming unstuck (whatever that takes;
>> I have no recollection of what the issue was back at the time, all I recall
>> is that, yes, there was such work at some point).
> 
> Just to have a clear picture: Was your reply an objection, with you indeed
> meaning me to hold back this tidying work? If so, can you please indicate
> when, at least roughly, you mean to re-post what you think wants re-posting?
> If not, can you please indicate so, for me to commit stuff that's otherwise
> ready to go in (and which that other work should be easy to re-base over)?

Just to mention here - short of an answer I'm going to commit this with the
R-b from Frediano that I've got.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 11:29:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 11:29:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828623.1243569 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6TMm-0004Qg-Lf; Thu, 31 Oct 2024 11:29:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828623.1243569; Thu, 31 Oct 2024 11:29: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 1t6TMm-0004QZ-In; Thu, 31 Oct 2024 11:29:28 +0000
Received: by outflank-mailman (input) for mailman id 828623;
 Thu, 31 Oct 2024 11:29: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6TMl-0004QT-Q0
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 11:29:27 +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 6108cdaa-977b-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 12:29:23 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-43169902057so6611885e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 04:29:23 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c10b7bf7sm1876635f8f.9.2024.10.31.04.29.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 04:29:22 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6108cdaa-977b-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmQiLCJoZWxvIjoibWFpbC13bTEteDMyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjYxMDhjZGFhLTk3N2ItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzc0MTYzLjg0OTYzOCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730374163; x=1730978963; 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=MFYxgL7EbXbaBOApnXIMRn1/932VR/yWe7WQlOIWzvQ=;
        b=fdeZjJN82rXYkMUJFSbTaOuaHHo37J16BHyaiK/Jko0pbpL+XfPebpZaVux2YXb352
         YMcCphFaKGUHKfZHCPM3Ja5uu7vrHCIqO/Yyg+cjf01HBZSLgmSsa8kgsJwEc/LfYYl4
         hVtEbiErbsYvInG0VOaqxQuiDGiY79mL8pcVG1qVHV9BcPyVK+ySd/PHLlQ/pywXtshA
         NxZAslLflNtXC3Ej2utjhTmkcAuuoM7PlEif1azGgU9yeTRckpk3ZnSM+AlaVKlDg4ar
         y6vZoGOpIEsNuV+rpexH4PnvR0aM7nSd7+kqjFNr1i/h5aT46Jct5KcCd596+sC8zjVM
         dXwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730374163; x=1730978963;
        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=MFYxgL7EbXbaBOApnXIMRn1/932VR/yWe7WQlOIWzvQ=;
        b=uk3jz41quyHOAOsL81Rh+06Kod1USEXxTjvDHsP+270rkrk1LUiRnq2rroYPSoT6Iu
         49Et6bRUVvBEzibrZs6TYAY+vsuUfn9r/vmJNFoUuy/p8qqi3F+I+2D8CuR1H6vSe7wJ
         2Ni56DonkoToZR7MPP83TGBCMWzZb40Z1hb2ikZXP1PqVuqnoqdCkmpWTTwalHXI7qZn
         4FzE4g7BpmTGB7mkqtwNqAFrtEiVrJhvV6EA/SALMNlMdZyGSN4uKK4XW+U8FDtgFV7S
         erQTNLE6ftBjPKIxUISm4xRW6hPNkOCszTd5vu6WH3/XmduCr6b1FGHFwxp5NrXSSnt3
         +ecw==
X-Forwarded-Encrypted: i=1; AJvYcCUc122QtGELeg4QwWmNvnI8vZQfv1s52O9WGyyW/nl3RX/VdTnqVHfUMEtfEUOx1tNmLfEfmI9wEh4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwZAolOl8FTQRlVxk4XXucyfTc2RyKTr0P1m5lMa9DO6ZCyea0Z
	T9uiZ1BrXgTSl2/g8+aecWDzzSwYnqNCok3hrFefXfYi2zEfykPxsEQljrHK0w==
X-Google-Smtp-Source: AGHT+IF6aOIsDZ/mmN276jBrWealKn3MOe884c0xZMKye1ASn+6zdvpp3L9n9YX1RiBqjw52AlZohw==
X-Received: by 2002:a05:600c:548c:b0:430:4db0:3fef with SMTP id 5b1f17b1804b1-431bb98f341mr55582465e9.15.1730374163225;
        Thu, 31 Oct 2024 04:29:23 -0700 (PDT)
Message-ID: <f1219d7f-3133-44e3-bfed-bbc6db3a486c@suse.com>
Date: Thu, 31 Oct 2024 12:29:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 1/3] x86/msi: harden stale pdev handling
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
References: <20241018203913.1162962-1-stewart.hildebrand@amd.com>
 <20241018203913.1162962-2-stewart.hildebrand@amd.com>
 <fdb156eb-ea82-4afa-afa6-105e605eba6d@suse.com> <Zx_PrF9_ITzfcCcI@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: <Zx_PrF9_ITzfcCcI@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.10.2024 18:53, Roger Pau Monné wrote:
> Anyway, no strong opinion about the commit message adjustment, so with
> the type changed:

Btw, while preparing this patch for committing I ended up confused by this:
I can't find any request to adjust the commit message. The only other thing
I had asked for where plain int -> unsigned int adjustments.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 11:33:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 11:33:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828629.1243579 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6TR8-00060Y-6V; Thu, 31 Oct 2024 11:33:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828629.1243579; Thu, 31 Oct 2024 11:33: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 1t6TR8-00060R-3h; Thu, 31 Oct 2024 11:33:58 +0000
Received: by outflank-mailman (input) for mailman id 828629;
 Thu, 31 Oct 2024 11:33: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6TR6-00060J-Bc
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 11:33:56 +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 018d8446-977c-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 12:33:53 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-37d462c91a9so535399f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 04:33:53 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c10b7c08sm1852248f8f.17.2024.10.31.04.33.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 04:33:52 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 018d8446-977c-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MzMiLCJoZWxvIjoibWFpbC13cjEteDQzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjAxOGQ4NDQ2LTk3N2MtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzc0NDMzLjE1NTEyMywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730374432; x=1730979232; 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=AGZawdrmFZ3Pnq2rK0/jBp8T9Jdapq0vEH2+KmRzTZ8=;
        b=MEPUgB7QvBdA7j+0QMFlC2iStE/Viv9om+eGG6SghFrQrV+nwtQJ+u01NAiMvczo2p
         9WJ6eFpho8PLcvAGDrlcuzN9nQ3JehHnL0bKmfbFCK6hIj9HWClaf4VYO/tpLA/xBec4
         UFtCzM5BXn6VF1tQ4LQ2sNqFw0yYEe6+Igpt/ufZS8JulCjLOQAfbd9sTcxig6iX6haB
         4vo9ZFHmcAbP7glPZt5HGFcslMcdRPhgFlE/DLAGBgqPoydGUuchx1p3KVs/R3+H/btp
         SZ56GQEqsCnAzDCeC0A7zq+dRNibBrksD/JlDQJfyF415RvjeJ6uybMjBTr6B7abOUP0
         y97A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730374432; x=1730979232;
        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=AGZawdrmFZ3Pnq2rK0/jBp8T9Jdapq0vEH2+KmRzTZ8=;
        b=oO3AwIHERpzSQKKEB03Epvr7eK6u/zpnZCpIQRlaGcbVEU8l60s7Uq5e6Knm8Lt4Ix
         /aFlDALeNntZRuJjg/dce2WrsYxVO+50ieJ3K628AMNwTyNSoAtNNZe2v3tRIOuHztMS
         ffI3XezDVuVXvFZymkIIwGfcDN6Qf5z2tu+D+z07RstAd7ZkcOGjnZkfybINerbBflAq
         LOWpIhhxXKl5X06FpYUNL1fkHvmAWbiF22NtyAG+zsrawGpdG7fNgUA3vJzxx5Qu1DYx
         9JYzQa48+jO/DvP7HU32hHpoH8La7Bl45UesgycOjuCpxyaSunGUCeq6Y/XOAFeckY0v
         Ke9Q==
X-Forwarded-Encrypted: i=1; AJvYcCXfEjtiyynYJAHDNusIeBHuRlhx05tqHJZj39NcsRN4LoU/XTrcUBAySvnr0/DF9bavb4n7sChzmVY=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzKFhhPCnF9WWZuE8V6Nyaa7Ra/UEy4ynxWadnMl/InrEnRYi+V
	9sdFxjric7CCnjyFTNOI+sEZ2LycJ+qGdMlnoF7JFwCeg7anSapCQYYNKe/zrg==
X-Google-Smtp-Source: AGHT+IFZMsXE1JMntHnsAjT68px+ELbbRnrxpHMipnal3B7pTkwSrugub8tDlED5WuF26MSale2low==
X-Received: by 2002:a5d:6388:0:b0:374:c059:f2c5 with SMTP id ffacd0b85a97d-381b7076de7mr4297529f8f.22.1730374432406;
        Thu, 31 Oct 2024 04:33:52 -0700 (PDT)
Message-ID: <ab469fd2-158a-48fd-b6e7-22c6e1c84c82@suse.com>
Date: Thu, 31 Oct 2024 12:33:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] NUMA: Introduce NODE_DATA->node_present_pages(RAM
 pages)
From: Jan Beulich <jbeulich@suse.com>
To: Bernhard Kaindl <bernhard.kaindl@cloud.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 xen-devel@lists.xenproject.org
References: <20241027144305.1839348-1-bernhardkaindl7@gmail.com>
 <edab5ea3-1f69-49f3-8b1d-b3376c3f6027@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: <edab5ea3-1f69-49f3-8b1d-b3376c3f6027@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.10.2024 16:53, Jan Beulich wrote:
> On 27.10.2024 15:43, Bernhard Kaindl wrote:
>> From: Bernhard Kaindl <bernhard.kaindl@cloud.com>
>>
>> At the moment, Xen keeps track of the spans of PFNs of the NUMA nodes.
>> But the PFN span sometimes includes large MMIO holes, so these values
>> might not be an exact representation of the total usable RAM of nodes.
>>
>> Xen does not need it, but the size of the NUMA node's memory can be
>> helpful for management tools and HW information tools like hwloc/lstopo
>> with its Xen backend for Dom0: https://github.com/xenserver-next/hwloc/
>>
>> First, introduce NODE_DATA(nodeid)->node_present_pages to node_data[],
>> determine the sum of usable PFNs at boot and update them on memory_add().
>>
>> (The Linux kernel handles NODE_DATA->node_present_pages likewise)
>>
>> Signed-off-by: Bernhard Kaindl <bernhard.kaindl@cloud.com>
>> ---
>> Changes in v3:
>> - Use PFN_UP/DOWN, refactored further to simplify the code while leaving
>>   compiler-level optimisations to the compiler's optimisation passes.
>> Changes in v4:
>> - Refactored code and doxygen documentation according to the review.
>> ---
>>  xen/arch/x86/numa.c      | 13 +++++++++++++
>>  xen/arch/x86/x86_64/mm.c |  3 +++
>>  xen/common/numa.c        | 36 +++++++++++++++++++++++++++++++++---
>>  xen/include/xen/numa.h   | 21 +++++++++++++++++++++
>>  4 files changed, 70 insertions(+), 3 deletions(-)
>>
>> diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
>> index 4b0b297c7e..3c0574f773 100644
>> --- a/xen/arch/x86/numa.c
>> +++ b/xen/arch/x86/numa.c
>> @@ -100,6 +100,19 @@ unsigned int __init arch_get_dma_bitsize(void)
>>                   + PAGE_SHIFT, 32);
>>  }
>>  
>> +/**
>> + * @brief Retrieves the RAM range for a given index from the e820 memory map.
>> + *
>> + * This function fetches the start and end address (exclusive) of a RAM range
>> + * specified by the given index idx from the e820 memory map.
> 
> I think the use of (exclusive) here leaves room for ambiguity (as it may,
> unusually, apply to start as well then). Imo it would better be put ...
> 
>> + * @param idx The index of the RAM range in the e820 memory map to retrieve.
>> + * @param start Pointer to store the start address of the RAM range.
>> + * @param end Pointer to store the end address of the RAM range.
> 
> ... here, just like you have it ...
> 
>> + * @return 0 on success, -ENOENT if the index is out of bounds,
>> + *         or -ENODATA if the memory map at index idx is not of type E820_RAM.
>> + */
>>  int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t *end)
>>  {
>>      if ( idx >= e820.nr_map )
>> --- a/xen/common/numa.c
>> +++ b/xen/common/numa.c
>> @@ -4,6 +4,7 @@
>>   * Adapted for Xen: Ryan Harper <ryanh@us.ibm.com>
>>   */
>>  
>> +#include "xen/pfn.h"
>>  #include <xen/init.h>
>>  #include <xen/keyhandler.h>
>>  #include <xen/mm.h>
>> @@ -499,15 +500,44 @@ int __init compute_hash_shift(const struct node *nodes,
>>      return shift;
>>  }
>>  
>> -/* Initialize NODE_DATA given nodeid and start/end */
>> +/**
>> + * @brief Initialize a NUMA node's node_data structure at boot.
>> + *
>> + * It is given the NUMA node's index in the node_data array as well
>> + * as the start and exclusive end address of the node's memory span
>> + * as arguments and initializes the node_data entry with this information.
>> + *
>> + * It then initializes the total number of usable memory pages within
>> + * the NUMA node's memory span using the arch_get_ram_range() function.
>> + *
>> + * @param nodeid The index into the node_data array for the node.
>> + * @param start The starting physical address of the node's memory range.
>> + * @param end The exclusive ending physical address of the node's memory range.
> 
> ... here.
> 
>> + */
>>  void __init setup_node_bootmem(nodeid_t nodeid, paddr_t start, paddr_t end)
>>  {
>>      unsigned long start_pfn = paddr_to_pfn(start);
>>      unsigned long end_pfn = paddr_to_pfn(end);
>> +    struct node_data *numa_node = NODE_DATA(nodeid);
>> +    paddr_t start_ram, end_ram;
>> +    unsigned int idx = 0;
>> +    unsigned long *pages = &numa_node->node_present_pages;
>>  
>> -    NODE_DATA(nodeid)->node_start_pfn = start_pfn;
>> -    NODE_DATA(nodeid)->node_spanned_pages = end_pfn - start_pfn;
>> +    numa_node->node_start_pfn = start_pfn;
>> +    numa_node->node_spanned_pages = end_pfn - start_pfn;
>> +
>> +    /* Calculate the number of present RAM pages within the node: */
>> +    *pages = 0;
>> +    do {
>> +        int err = arch_get_ram_range(idx++, &start_ram, &end_ram);
>> +
>> +        if (err == -ENOENT)
>> +            break;
>> +        if ( err || start_ram >= end || end_ram <= start )
>> +            continue;  /* range is outside of the node, or not usable RAM */
>>  
>> +        *pages += PFN_DOWN(min(end_ram, end)) - PFN_UP(max(start_ram, start));
>> +    } while (1);
> 
> Nit: While we have ample bad examples, I think even in such while() uses style
> ought to be followed (i.e. "while ( 1 )"). Personally, since this looks a little
> odd to me, I generally prefer "for ( ; ; )" in such cases.
> 
> With respective adjustments (which I'm happy to make while committing, so long
> as you agree):

Ah, no, I take that back. Alejandro's comments also want addressing, one way or
another.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 11:48:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 11:48:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828645.1243625 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Tey-0000ff-RW; Thu, 31 Oct 2024 11:48:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828645.1243625; Thu, 31 Oct 2024 11:48: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 1t6Tey-0000fY-Ng; Thu, 31 Oct 2024 11:48:16 +0000
Received: by outflank-mailman (input) for mailman id 828645;
 Thu, 31 Oct 2024 11:48: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6Tey-0000fS-Bz
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 11:48:16 +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 0238aadb-977e-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 12:48:13 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-37d5aedd177so630037f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 04:48:13 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c113e69fsm1872533f8f.69.2024.10.31.04.48.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 04:48:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0238aadb-977e-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MmQiLCJoZWxvIjoibWFpbC13cjEteDQyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjAyMzhhYWRiLTk3N2UtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzc1MjkzLjM4NzY5OSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730375292; x=1730980092; 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=DMCDBOWUI09z9Jlcqj1rkmnaoRWuUUDa5AthHtb0/4g=;
        b=AdWct1dPpHz11R/HRX48+Q8CkRH01icCO+1BRNo808+LylfdNAo9goBaAcEZiYzdWz
         so7cpHhuIMH/1NqfXJWia4eJfunknrBWcdR20t5Bje1dARBRlttLiGzWd/g+GuU8WOqs
         wHz30sZOEmtpOwFVVjpxrPqF5miVI4nlrjxwfZLJvgcmaRXVv7zPvzKpZ2Lw3klBDgyA
         KZPXAp90YqXSkVIrq37+wCIekE4EaBU92ET34pbxU4DPdUsoqQMcUwsOQMTr+ykav5FN
         igF0gygGKtrffwqhkzwX91+Pj+D9hgGNGz7w49GRdHljjMZF6lpoMp7SDA1OZ3PCT9X3
         UaQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730375292; x=1730980092;
        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=DMCDBOWUI09z9Jlcqj1rkmnaoRWuUUDa5AthHtb0/4g=;
        b=wF0lsNuUsQc7pV4YJ/0QxQI/USsVj01reYxdeCccYmfRcP7NV3LE0AsGf5Q0kpJMk0
         T6YXxFCNSOxKMcPJKgbhLunRF25XUdYwtcuoYVGeGIcDH8M+vN4wD54ErJxyLKH7oAAd
         tXUQI7A8fD9x0bFcnR82ICN9M9d5MtX6v9zxnPLb3DcKVbplXom6MaSiXhcqAxwz+tAe
         djdNg7NJ+HqHhnfSQxVAcyOL+Fh5GlblMBtH9NoHrGxY/U1hXDRR9hJLjIqUginWhiX1
         xzsX2dZNRs2VS4kffjN/lsEOEU7GOu29zGLvd720DpinS5sqNyfCTen+mv4y0/lae1Hg
         /SQg==
X-Forwarded-Encrypted: i=1; AJvYcCVGE3RyPfmebVzISEYL175GAxfjr1o4vLHsoBcw4v+trXx9+gFZBLyORSYVGA0DTfhGFr9Td3cShmA=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzLggf7rG1xBv2VgcjSGYuyNqPyXDbHo8/u7OeXk7/jHcAVxnKs
	4Vpj9vGQuW3tN3cFmQqbdmU9B2nKmAGjIvvcHAVQ0h10ulOP3lZKQ745kfCQ2A==
X-Google-Smtp-Source: AGHT+IGKsLVZWcRBvVB3pSbJ8xbFqJKGocXFtnHwV+7s/ZNk4YdvYbJthu0dbptM1UKhAq/LJNMeBQ==
X-Received: by 2002:a05:6000:188f:b0:37c:cd71:2b96 with SMTP id ffacd0b85a97d-381be906966mr2389533f8f.36.1730375292627;
        Thu, 31 Oct 2024 04:48:12 -0700 (PDT)
Message-ID: <6aa697a2-a0bf-4135-89ee-8c2c2f0e0fcf@suse.com>
Date: Thu, 31 Oct 2024 12:48:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: ensure L2 is always freed if empty
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20241030114852.55530-1-roger.pau@citrix.com>
 <90996cfa-1c41-4113-846c-eade5c849104@suse.com>
 <ZyNdxj8XMV7OIjdN@macbook.local>
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: <ZyNdxj8XMV7OIjdN@macbook.local>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31.10.2024 11:36, Roger Pau Monné wrote:
> On Thu, Oct 31, 2024 at 10:59:36AM +0100, Jan Beulich wrote:
>> On 30.10.2024 12:48, Roger Pau Monne wrote:
>>> The current logic in modify_xen_mappings() allows for fully empty L2 tables to
>>> not be freed and unhooked from the parent L3 if the last L2 slot is not
>>> populated.
>>>
>>> Ensure that even when an L2 slot is empty the logic to check whether the whole
>>> L2 can be removed is not skipped.
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>
>> Reviewed-by: Jan Beulich <jbeulich@suse.com>
>>
>>> ---
>>> I've attempted to find a Fixes tag for this one, but I'm afraid there have been
>>> many changes in the function, and it's possibly the code that introduced the L2
>>> freeing (4376c05c31132) the one that failed to originally adjust this case.
>>
>> Yes, that looks to be the one. It has been a long while, but I think it was
>> (wrong) similarity considerations with the corresponding L3E handling (near
>> the top of the main loop) that resulted in me not touching that "continue".
>> We certainly don't want to ever free L3 tables (vacating L4 entries); since
>> the 32-bit case still mattered back then, the "continue" also couldn't have
>> been simply replaced (as there that same consideration applied to L2 tables
>> and L3 entries, for further extended reasons imposed by PAE).
> 
> I agree we don't want to free L3 tables and thus zap L4 entries.
> 
> Feel free to add:
> 
> Fixes: 4376c05c3113 ('x86-64: use 1GB pages in 1:1 mapping if available')
> 
> If you want.

Done so. Despite the tag I'm uncertain whether to backport.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 11:58:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 11:58:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828654.1243635 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Toz-0002oa-SI; Thu, 31 Oct 2024 11:58:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828654.1243635; Thu, 31 Oct 2024 11:58: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 1t6Toz-0002oT-OJ; Thu, 31 Oct 2024 11:58:37 +0000
Received: by outflank-mailman (input) for mailman id 828654;
 Thu, 31 Oct 2024 11:58: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=35SK=R3=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t6Toy-0002oN-Hk
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 11:58: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 73c75abb-977f-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 12:58:33 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a9a6acac4c3so143024166b.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 04:58:33 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e565df901sm60037066b.117.2024.10.31.04.58.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 04:58:26 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73c75abb-977f-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzIiLCJoZWxvIjoibWFpbC1lajEteDYzMi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjczYzc1YWJiLTk3N2YtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzc1OTEzLjQzNTczNiwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730375913; x=1730980713; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=0bggf4DF2cHqh5fhuHFkq3Qfu6vouzBgGcSzOsgxzj0=;
        b=DE6bljpK1uVAtRsdnj1MPSEndT3xdx+EYn5cGGzX4T3tS7CKrcTHi7Vv20s2hU4adT
         QMAHO3Ikckwy9bu8WI6tv4FBytuVTHuGvKSt0Nnsh5akEjoMfsNmbLiUW+5IeHlJ259V
         4+J+GQSBMDjqpXnFl2ZHkDwyf3D52d6Z/93IA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730375913; x=1730980713;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=0bggf4DF2cHqh5fhuHFkq3Qfu6vouzBgGcSzOsgxzj0=;
        b=LzL1WhHZvpy3Pjm3w9C5H+w7CCddWyyp5ffjjrObsamcfEHC97i0nrcYjBhAsjzXo1
         P7kosrQCPjXVjW82Hv/nrPHLmO2LLEpa/RB1dhRjw/8IRV8WO3710X5V/1qT6RF3w9cb
         6h+qfvwIQH7S/u5ImqDhR5qnZq8X+nkshQpP+uL+3Q/8e+PRl4MkQ/1TvmhNOuiffGfN
         xBB+NvjsAOvogGNr+WqEC7Ke5EwzOKLPZYOFNC5+d9FpGhN0B5gAgHNOi7E80O/PoNid
         Tnuije3Ce66AJir5ACD4d0R+oKRGnU4ek72HLeQrp7hgb5Lpo1Keh5wDYh8PxpNNLsOc
         ZzjQ==
X-Forwarded-Encrypted: i=1; AJvYcCXuIN79XhcXkPnd/xIis/2Khr5FnmmZMzoUeNVd4Z6Ha5HSuF+pMLs/ejF9OMIkPCtdOp0kkQFVqQM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzfnhVao3H7Z0blxVjHvcHD7+dx35D8leB/g49kzMLSMeIRlKDc
	risDb0fJ4+QEZZqWnlk+Un3Hh/MdW/vdixXbU5MSl+nMZ+jZ8S8hCPN9WSQYxoE=
X-Google-Smtp-Source: AGHT+IF1j9izE0WXvoANcdKytXIJchxPRBiXi5Bz4CrFOO1vinmwjcVRYth4SBuq0QUS4IVgGPpdMQ==
X-Received: by 2002:a17:907:9729:b0:a9a:7f92:782 with SMTP id a640c23a62f3a-a9de61ea441mr1756943466b.52.1730375907140;
        Thu, 31 Oct 2024 04:58:27 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Thu, 31 Oct 2024 11:58:24 +0000
Message-Id: <D59Z2CO4QOAK.KWLIRVJEV4XY@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Jan Beulich"
 <jbeulich@suse.com>, "Julien Grall" <julien@xen.org>, "Stefano Stabellini"
 <sstabellini@kernel.org>
Subject: Re: [PATCH 1/6] xen: add a domain unique id to each domain
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Juergen Gross" <jgross@suse.com>, <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241023131005.32144-1-jgross@suse.com>
 <20241023131005.32144-2-jgross@suse.com>
 <D538TV4LGFZF.J375ZVYWPIHO@cloud.com>
 <cc607d38-1638-4f43-b0d3-b03842e8d9b9@suse.com>
In-Reply-To: <cc607d38-1638-4f43-b0d3-b03842e8d9b9@suse.com>

On Wed Oct 23, 2024 at 3:27 PM BST, Juergen Gross wrote:
> On 23.10.24 16:08, Alejandro Vallejo wrote:
> > On Wed Oct 23, 2024 at 2:10 PM BST, Juergen Gross wrote:
> >> Xenstore is referencing domains by their domid, but reuse of a domid
> >> can lead to the situation that Xenstore can't tell whether a domain
> >> with that domid has been deleted and created again without Xenstore
> >> noticing the domain is a new one now.
> >>
> >> Add a global domain creation unique id which is updated when creating
> >> a new domain, and store that value in struct domain of the new domain.
> >> The global unique id is initialized with the system time and updates
> >> are done via the xorshift algorithm which is used for pseudo random
> >> number generation, too (see https://en.wikipedia.org/wiki/Xorshift).
> >>
> >> Signed-off-by: Juergen Gross <jgross@suse.com>
> >> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> >> ---
> >> V1:
> >> - make unique_id local to function (Jan Beulich)
> >> - add lock (Julien Grall)
> >> - add comment (Julien Grall)
> >> ---
> >>   xen/common/domain.c     | 20 ++++++++++++++++++++
> >>   xen/include/xen/sched.h |  3 +++
> >>   2 files changed, 23 insertions(+)
> >>
> >> diff --git a/xen/common/domain.c b/xen/common/domain.c
> >> index 92263a4fbd..3948640fb0 100644
> >> --- a/xen/common/domain.c
> >> +++ b/xen/common/domain.c
> >> @@ -562,6 +562,25 @@ static void _domain_destroy(struct domain *d)
> >>       free_domain_struct(d);
> >>   }
> >>  =20
> >> +static uint64_t get_unique_id(void)
> >> +{
> >> +    static uint64_t unique_id;
> >> +    static DEFINE_SPINLOCK(lock);
> >> +    uint64_t x =3D unique_id ? : NOW();
> >> +
> >> +    spin_lock(&lock);
> >> +
> >> +    /* Pseudo-randomize id in order to avoid consumers relying on seq=
uence. */
> >> +    x ^=3D x << 13;
> >> +    x ^=3D x >> 7;
> >> +    x ^=3D x << 17;
> >> +    unique_id =3D x;

How "unique" are they? With those shifts it's far less obvious to know how =
many
times we can call get_unique_id() and get an ID that hasn't been seen since
reset. With sequential numbers it's pretty obvious that it'd be a
non-overflowable monotonic counter. Here's it's far less clear, particularl=
y
when it's randomly seeded.

I don't quite see why sequential IDs are problematic. What is this
(pseudo)randomization specifically trying to prevent? If it's just breaking=
 the
assumption that numbers go in strict sequence you could just flip the high =
and
low nibbles (or any other deterministic swapping of counter nibbles)

Plus, with the counter going in sequence we could get rid of the lock becau=
se
an atomic fetch_add() would do.

> >> +
> >> +    spin_unlock(&lock);
> >> +
> >> +    return x;
> >> +}
> >> +
> >>   static int sanitise_domain_config(struct xen_domctl_createdomain *co=
nfig)
> >>   {
> >>       bool hvm =3D config->flags & XEN_DOMCTL_CDF_hvm;
> >> @@ -654,6 +673,7 @@ struct domain *domain_create(domid_t domid,
> >>  =20
> >>       /* Sort out our idea of is_system_domain(). */
> >>       d->domain_id =3D domid;
> >> +    d->unique_id =3D get_unique_id();
> >>  =20
> >>       /* Holding CDF_* internal flags. */
> >>       d->cdf =3D flags;
> >> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> >> index 90666576c2..1dd8a425f9 100644
> >> --- a/xen/include/xen/sched.h
> >> +++ b/xen/include/xen/sched.h
> >> @@ -370,6 +370,9 @@ struct domain
> >>       domid_t          domain_id;
> >>  =20
> >>       unsigned int     max_vcpus;
> >> +
> >> +    uint64_t         unique_id;       /* Unique domain identifier */
> >> +
> >=20
> > Why not xen_domain_handle_t handle, defined later on? That's meant to b=
e a
> > UUID, so this feels like a duplicate field.
>
> It is an input value for create domain. So there is absolutely no
> guarantee that it is unique.
>
> It can especially be specified in the xl config file, so you could have
> a host running multiple guests all with the same UUID (even if this might
> be rejected by libxl, destroying a guest and then recreating it with the
> same UUID is possible, but Xenstore would need to see different unique Id=
s
> for those 2 guests).

Fair points. With that into account, I wouldn't mind seeing a wider comment=
 on
top of unique_id explaining how these IDs are meant to be non-repeatable
between resets and meant to have the same lifetime as their corresponding
domain_id.

>
>
> Juergen

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 12:20:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 12:20:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828664.1243644 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6UA1-0007QS-KI; Thu, 31 Oct 2024 12:20:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828664.1243644; Thu, 31 Oct 2024 12: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 1t6UA1-0007QL-Hd; Thu, 31 Oct 2024 12:20:21 +0000
Received: by outflank-mailman (input) for mailman id 828664;
 Thu, 31 Oct 2024 12:20: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6U9z-0007Pn-RJ
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 12:20:19 +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 7a4c96d9-9782-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 13:20:12 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a99ebb390a5so353282266b.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 05:20:12 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e56643823sm63106466b.167.2024.10.31.05.20.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 05:20:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7a4c96d9-9782-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzMiLCJoZWxvIjoibWFpbC1lajEteDYzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjdhNGM5NmQ5LTk3ODItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzc3MjEyLjY4MjMzNCwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730377212; x=1730982012; 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=bVB9tHkGO39zqh9mVC6LawxLpz+l3TbDyTfpeZ5bylU=;
        b=p0GIWVzfcSHgMX+i0IUIhZNhP0TaqMd2rrSkret4Zryb1sSetU2ojxw7Au7yJJ6nbK
         m9Qm/fTQqX+ZyTbn7fzATCmD8YfVVDaBSymm+YKGjfGstq1FUILIl8KYjCzUrqppNSOd
         EE03jZSzzmPoKTMYnLkGoSr0Q4gLweuXL7WAM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730377212; x=1730982012;
        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=bVB9tHkGO39zqh9mVC6LawxLpz+l3TbDyTfpeZ5bylU=;
        b=pqAq6Y7c1J2nKW3jGbmIt4GLndE3U4GI+6OOcmbSSRVOWjqt8lYoMMRm/t6OZ4s9sm
         I5K0weJ3dcx+IMGsklfKtTfZMLc0ho6QOI/jvbrFjV1E4Z8+QQseh5yZRW0Q1WwvfFr6
         u8uW3hfV4uYU/dSUo4o64OKx/IEC2HWaS2BP5hkaueMZpL48OKv15AOSdWd8MbxjMsBZ
         UKk2OoRKEdRQGVu494Ao8XY3B3DtY/DCmiy7H0fPEBdrHZyXg3IVyb8RgOBUuoY0+GlU
         WznDLy8xUF8Vmrtyu9qngWmidlJ1Bz5zhnj/AQtdgPh3lfUV3yopVki1ahg/3Ymk+snY
         qTwQ==
X-Forwarded-Encrypted: i=1; AJvYcCUEQZ0PnDmyvF6UgVDTT2Lo5n7LFXQtMhD7ii2KM6pzrb1mPxOXSCYj1XtEVT2bGP7YTzR8V9amDrM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzA8dPFuYy/g88E/1z+hI2GZnt+rlTmwHN14A14YRd7z2075YZb
	0Ajr8MjS02OnW6R+yiz0cJWs/fBUiAP9O4A78NQEHL1anIxGltQPjgoAZM9C2S8=
X-Google-Smtp-Source: AGHT+IEw5uFC02NQaozJAwONi4yVgOvYxi3XluBI9PAQ5g1vVd5vvkT/1LYObi0isfYq7JaxYypNCQ==
X-Received: by 2002:a17:907:cca3:b0:a9a:eeb:b26a with SMTP id a640c23a62f3a-a9e559e0da2mr170253366b.1.1730377212049;
        Thu, 31 Oct 2024 05:20:12 -0700 (PDT)
Message-ID: <f105fe2f-1b76-4f0d-889b-ec12e95a0ac8@citrix.com>
Date: Thu, 31 Oct 2024 12:20:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/7] byteorder: replace __u16
To: Jan Beulich <jbeulich@suse.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
 <a7b6fc68-a568-4b61-895d-c295ba3d3095@citrix.com>
 <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@suse.com>
 <f5572afc-7c9e-4c2e-ba3f-6ce4f3b71d59@suse.com>
 <56b2b751-74bc-4b47-a966-2c8a6ef2b35d@suse.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <56b2b751-74bc-4b47-a966-2c8a6ef2b35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 11:23 am, Jan Beulich wrote:
> On 16.10.2024 11:37, Jan Beulich wrote:
>> On 09.10.2024 15:34, Jan Beulich wrote:
>>> On 09.10.2024 15:20, Andrew Cooper wrote:
>>>> On 09/10/2024 10:21 am, Jan Beulich wrote:
>>>>> In {big,little}_endian.h the changes are entirely mechanical, except for
>>>>> dealing with casting away of const from pointers-to-const on lines
>>>>> touched anyway.
>>>>>
>>>>> In swab.h the casting of constants is done away with as well - I simply
>>>>> don't see what the respective comment is concerned about in our
>>>>> environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
>>>>> architecture, sizeof(long long) >= 8). The comment is certainly relevant
>>>>> in more general cases. Excess parentheses are dropped as well,
>>>>> ___swab16()'s local variable is renamed, and __arch__swab16()'s is
>>>>> dropped as being redundant with ___swab16()'s.
>>>>>
>>>>> With that no uses of the type remain, so it moves to linux-compat.h.
>>>>>
>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>> ---
>>>>> I'm unconvinced of the need of the separate ___constant_swab16(). I'm
>>>>> also unconvinced of the need for said constants (that even had casts on
>>>>> them).
>>>> There is a still-good series deleting the whole of byteorder/ and
>>>> replacing it with a few-hundred line single header.
>>>>
>>>> It is the second thing stalled on a governance change (prohibited
>>>> reasons to object to a change) which clearly no-one gives a damn about
>>>> fixing.  In fact double spite because it denied a good engineer his
>>>> first changes in Xen.
>>>>
>>>>
>>>> I don't particularly feel like trying to polish byteorder.  I'm inclined
>>>> to rebase+repost Lin's patches, at which point the majority of this
>>>> series simply disappears.
>>> I wouldn't mind you doing so, as long as that other series then progresses.
>>> What I don't want to get into is the other series being stuck rendering this
>>> one stuck, too. Then it would imo be better to take this one first, rebase
>>> the other on top, and work towards it becoming unstuck (whatever that takes;
>>> I have no recollection of what the issue was back at the time, all I recall
>>> is that, yes, there was such work at some point).
>> Just to have a clear picture: Was your reply an objection, with you indeed
>> meaning me to hold back this tidying work? If so, can you please indicate
>> when, at least roughly, you mean to re-post what you think wants re-posting?
>> If not, can you please indicate so, for me to commit stuff that's otherwise
>> ready to go in (and which that other work should be easy to re-base over)?
> Just to mention here - short of an answer I'm going to commit this with the
> R-b from Frediano that I've got.

nack.

The reason there's even anything to do here is, in part, because you
were obstructive to Lin's series.

It wasn't only you, but the maintainers (plural) behaviour on that
series was so outrageous that it started the effort to governance to
prohibit certain classes of feedback, to make Xen a less toxic place to
contribute to.

I will get to it when I get to it.   You can use the time to reflect on
how you could have been more helpful in the past, and avoided this whole
issue.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 13:19:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 13:19:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828683.1243655 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6V50-0007IV-J1; Thu, 31 Oct 2024 13:19:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828683.1243655; Thu, 31 Oct 2024 13: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 1t6V50-0007IO-GP; Thu, 31 Oct 2024 13:19:14 +0000
Received: by outflank-mailman (input) for mailman id 828683;
 Thu, 31 Oct 2024 13:19: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=khX/=R3=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t6V4z-0007Hq-H3
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 13:19:13 +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 b6553012-978a-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 14:19:09 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-539fe02c386so1834536e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 06:19:09 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53c7bde3376sm196039e87.292.2024.10.31.06.19.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 06:19:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b6553012-978a-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMmUiLCJoZWxvIjoibWFpbC1sZjEteDEyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImI2NTUzMDEyLTk3OGEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzgwNzQ5LjM1NzQ1Nywic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730380749; x=1730985549; 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=h1jKEF9vIzFBNQxbeI9MOUWtJY7wHKKC0+/cA9iQv5c=;
        b=al55euI17IFF5pVnrBmmj2Q2BQeTMf4pyn3XedJRzq70qGKrBRrKSUk+ebJxi3O0Ao
         QOfa20M96oVkLD/3X8XoEhL+dwOCNJcj6/uZPiKwL7lCaB1ZpuIlkgX0D5DYo6otwrh1
         JxgUIEwkTjacCAK7wkowRfJbvJfyrJPt6aIG2dr1R11LokyyMcbFYau50FNtolk5TvNa
         fq72sKgZ77pJB+A1rQNKr1+Isvh3Ru9+n/SZca3rLoANdgGYdghSDm+e3HGa2gPwVyvS
         tZ/ttDA09Z8QO19pGeTkRW1yoMecjlwFdDJPz2viZudyjvQ4ky65oZ9Ie4ek9qTYMeqs
         iNkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730380749; x=1730985549;
        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=h1jKEF9vIzFBNQxbeI9MOUWtJY7wHKKC0+/cA9iQv5c=;
        b=MNEqZfFQ1r5XWbikXPLRwQjRZp26FencG/Q0YEwftn408MlaFCvnPMeAFtzopUVmpo
         cziamL9HRewBQjtG9uLRydOeXsIYZutFnHryIQSUPM4flD7/Ok9EvdrM18Vd1ADty3uY
         wTgxdcXoeBx7v1GKVcSJRpN3qvYMKVtkUGrX4bc3heeYemSiEk/MVXMO/fZWxZsmwzMH
         uz3fEFd53Cgmx6n75HbierFhV058uh5qnikM5ho0RrF2q4GK5tfKsD32PkCZHdTylBsj
         tllL2GZ7Q01x8PVZlKSF0ucP65wMA1kO9VBXyLdbP3L07e+PpDylOSfpB66Gl0HfivNN
         wC8A==
X-Forwarded-Encrypted: i=1; AJvYcCVCPrWa7uVm0ik7hRjJDTLxXKi7m5SAbYc8NEO9a5LCGCwj4Jbqj3waVkUeneYu0bdoDP+A7p0qPIk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzEtNz0d6Ki7HiuNwIwnrp+pbYO/D0PluGsn9pK+s49px91dzAY
	/2zoMnguVdIb3p+RSFp5B7EE2ZQpxE1yClv8IbZtvwvd+G11MRju
X-Google-Smtp-Source: AGHT+IFQmxTSyAkCvMFHPC8uUAzkW6gY3mZAfEQfLGdsQl4bxjUylZJW3EgOY7Pps+TfZYiOSM485g==
X-Received: by 2002:a05:6512:ea8:b0:539:f6b1:2d05 with SMTP id 2adb3069b0e04-53c7bbd0882mr908551e87.9.1730380748187;
        Thu, 31 Oct 2024 06:19:08 -0700 (PDT)
Message-ID: <878409fe69f7af07120f53ec7d2a58bf348b179c.camel@gmail.com>
Subject: Re: [PATCH v2 1/3] xen/riscv: introduce setup_mm()
From: 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>, Julien Grall <julien@xen.org>, Stefano
 Stabellini	 <sstabellini@kernel.org>, xen-devel@lists.xenproject.org
Date: Thu, 31 Oct 2024 14:19:07 +0100
In-Reply-To: <e067e169-3e63-4d01-963f-9dde3bb8e3b7@suse.com>
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
	 <28240dcfc04a11237db553c4e0ecb372aa0fe9ac.1729697111.git.oleksii.kurochko@gmail.com>
	 <8ec6463e-40a8-4d60-b4c2-ea964a06c572@suse.com>
	 <76fc4999eded2ce74fe73bc81998e92147cf802a.camel@gmail.com>
	 <e067e169-3e63-4d01-963f-9dde3bb8e3b7@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.54.1 (3.54.1-1.fc41app1) 
MIME-Version: 1.0

> > >=20
> > > >=20
>=20
> > Finally, regarding masking off the top bits of mfn, I'm not
> > entirely
> > clear on how this should work. If I understand correctly, if I mask
> > off
> > certain top bits in mfn, then I would need to unmask those same top
> > bits in maddr_to_virt() and virt_to_maddr(). Is that correct?
> >=20
> > Another point I=E2=80=99m unclear on is which specific part of the top =
bits
> > should be masked.
>=20
> You want to "move" the directmap such that the first legitimate RAM
> page is within the first (large/huge) page mapping of the directmap.
> IOW the "virtual" start of the directmap would move down in VA space.
> That still leaves things at a simple offset calculation when
> translating VA <-> PA.
>=20
> To give an example: Let's assume RAM starts at 61.5 Gb, and you want
> to
> use 1Gb mappings for the bulk of the directmap. Then the "virtual"
> start
> of the directmap would shift down to DIRECTMAP_VIRT_START - 60Gb,
> such that the first RAM page would be mapped at
> DIRECTMAP_VIRT_START + 1.5Gb. IOW it would be the low 30 address bits
> of
> the start address that you use (30 - PAGE_SHIFT for the MFN), with
> the
> higher bits contributing to the offset involved in the VA <-> PA
> translation. Values used depend on the (largest) page size you mean
> to
> use for the direct map: On systems with terabytes of memory
> (demanding
> Sv48 or even Sv57 mode) you may want to use 512Gb mappings, and hence
> you'd then need to mask the low 39 bits (or 48 for 256Tb mappings).
Thanks a lot for clarification. IIUC then not to many things should be
changed, only directmap mapping virtual address and calculation of
proper virtual address start of directmap:
   --- a/xen/arch/riscv/mm.c
   +++ b/xen/arch/riscv/mm.c
   @@ -457,6 +457,7 @@ vaddr_t __ro_after_init directmap_virt_start;
    static void __init setup_directmap_mappings(unsigned long base_mfn,
                                                unsigned long nr_mfns)
    {
   +    unsigned long base_addr =3D mfn_to_maddr(_mfn(base_mfn));
        int rc;
   =20
        /* First call sets the directmap physical and virtual offset. */
   @@ -473,14 +474,14 @@ static void __init
   setup_directmap_mappings(unsigned long base_mfn,
             * Prevent that by offsetting the start of the directmap
   virtual
             * address.
             */
   -        directmap_virt_start =3D DIRECTMAP_VIRT_START +
   pfn_to_paddr(base_mfn);
   +        directmap_virt_start =3D DIRECTMAP_VIRT_START - (base_addr &
   ~XEN_PT_LEVEL_SIZE(HYP_PT_ROOT_LEVEL));
        }
   =20
        if ( base_mfn < mfn_x(directmap_mfn_start) )
            panic("cannot add directmap mapping at %#lx below heap start
   %#lx\n",
                  base_mfn, mfn_x(directmap_mfn_start));
   =20
   -    rc =3D map_pages_to_xen((vaddr_t)mfn_to_virt(base_mfn),
   +    rc =3D map_pages_to_xen(DIRECTMAP_VIRT_START + (base_addr &
   XEN_PT_LEVEL_SIZE(HYP_PT_ROOT_LEVEL)),
                              _mfn(base_mfn), nr_mfns,
                              PAGE_HYPERVISOR_RW);
  =20

And of course then use directmap_virt_start in maddr_to_virt() and
virt_to_maddr():
   @@ -31,7 +31,7 @@ static inline void *maddr_to_virt(paddr_t ma)
   =20
        ASSERT(va_offset < DIRECTMAP_SIZE);
   =20
   -    return (void *)(XENHEAP_VIRT_START + va_offset);
   +    return (void *)(directmap_virt_start + va_offset);
    }
   =20
    /*
   @@ -44,7 +44,7 @@ static inline unsigned long virt_to_maddr(unsigned
   long va)
    {
        if ((va >=3D XENHEAP_VIRT_START) &&
            (va < (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE)))
   -        return directmapoff_to_maddr(va - XENHEAP_VIRT_START);
   +        return directmapoff_to_maddr(va - directmap_virt_start);

>=20
> > > > +void __init setup_mm(void)
> > > > +{
> > > > +=C2=A0=C2=A0=C2=A0 const struct membanks *banks =3D bootinfo_get_m=
em();
> > > > +=C2=A0=C2=A0=C2=A0 paddr_t ram_start =3D INVALID_PADDR;
> > > > +=C2=A0=C2=A0=C2=A0 paddr_t ram_end =3D 0;
> > > > +=C2=A0=C2=A0=C2=A0 paddr_t ram_size =3D 0;
> > > > +=C2=A0=C2=A0=C2=A0 unsigned int i;
> > > > +
> > > > +=C2=A0=C2=A0=C2=A0 /*
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0 * We need some memory to allocate the pag=
e-tables used
> > > > for
> > > > the directmap
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0 * mappings. But some regions may contain =
memory already
> > > > allocated
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0 * for other uses (e.g. modules, reserved-=
memory...).
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0 *
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0 * For simplicity, add all the free region=
s in the boot
> > > > allocator.
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0 */
> > > > +=C2=A0=C2=A0=C2=A0 populate_boot_allocator();
> > > > +
> > > > +=C2=A0=C2=A0=C2=A0 total_pages =3D 0;
> > > > +
> > > > +=C2=A0=C2=A0=C2=A0 for ( i =3D 0; i < banks->nr_banks; i++ )
> > > > +=C2=A0=C2=A0=C2=A0 {
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const struct membank *b=
ank =3D &banks->bank[i];
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 paddr_t bank_end =3D ba=
nk->start + bank->size;
> > > > +
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_size +=3D ROUNDDOWN=
(bank->size, PAGE_SIZE);
> > >=20
> > > As before - if a bank doesn't cover full pages, this may give the
> > > impression
> > > of there being more "total pages" than there are.
> > Since it rounds down to PAGE_SIZE, if ram_start is 2K and the total
> > size of a bank is 11K, ram_size will end up being 8K, so the "total
> > pages" will cover less RAM than the actual size of the RAM bank.
>=20
> ram_start at 2k but bank size being 13k would yield 2 usable pages
> (first partial page of 2k unusable and last partial page of 3k
> unusable), yet ram_size of 12k (3 pages). You need to consider the
> common case; checking things work for a randomly chosen example isn't
> enough.
Then I have to check separately the start and end of bank and check if
ram_size should be reduced in case if the start or end isn't properly
aligned.

>=20
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_start =3D min(ram_s=
tart, bank->start);
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ram_end =3D max(ram_end=
, bank_end);
> > > > +
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 setup_directmap_mapping=
s(PFN_DOWN(bank->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=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PFN_DOWN(bank->size));
> > >=20
> > > Similarly I don't think this is right when both start and size
> > > aren't
> > > multiple of PAGE_SIZE. You may map an unsuable partial page at
> > > the
> > > start,
> > > and then fail to map a fully usable page at the end.
> > ram_size should be a multiple of PAGE_SIZE because we have:
> > =C2=A0=C2=A0=C2=A0 ram_size +=3D ROUNDDOWN(bank->size, PAGE_SIZE);
> >=20
> > Do you know of any examples where bank->start isn't aligned to
> > PAGE_SIZE?
>=20
> Question is the other way around: Is it specified anywhere that start
> (and
> size) _need_ to be aligned? And if it is - do all firmware makers
> play by
> that (on x86 at least specifications often mean pretty little to
> firmware
> people, apparently)?
Yes, I understand that, I tried to find that somewhere in priv/unpriv
spec and wasn't able to find that. And that is why I asked if it should
be mentioned somewhere. Anyway, I think that it will be better just to
update the code and make it working in any case.

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 13:27:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 13:27:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828689.1243668 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6VD7-0000nW-4T; Thu, 31 Oct 2024 13:27:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828689.1243668; Thu, 31 Oct 2024 13:27: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 1t6VD7-0000nP-1J; Thu, 31 Oct 2024 13:27:37 +0000
Received: by outflank-mailman (input) for mailman id 828689;
 Thu, 31 Oct 2024 13:27: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=/WFF=R3=bounce.vates.tech=bounce-md_30504962.672385c1.v1-fc8f500813b641e78d4a28924803cef7@srs-se1.protection.inumbo.net>)
 id 1t6VD5-0000nJ-Up
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 13:27:35 +0000
Received: from mail133-1.atl131.mandrillapp.com
 (mail133-1.atl131.mandrillapp.com [198.2.133.1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e0e03c15-978b-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 14:27:30 +0100 (CET)
Received: from pmta13.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail133-1.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4XfPtT0wYPzBsVxXD
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 13:27:29 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 fc8f500813b641e78d4a28924803cef7; Thu, 31 Oct 2024 13:27: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: e0e03c15-978b-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE5OC4yLjEzMy4xIiwiaGVsbyI6Im1haWwxMzMtMS5hdGwxMzEubWFuZHJpbGxhcHAuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImUwZTAzYzE1LTk3OGItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzgxMjUxLjE4MjM4OSwic2VuZGVyIjoiYm91bmNlLW1kXzMwNTA0OTYyLjY3MjM4NWMxLnYxLWZjOGY1MDA4MTNiNjQxZTc4ZDRhMjg5MjQ4MDNjZWY3QGJvdW5jZS52YXRlcy50ZWNoIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1730381249; x=1730641749;
	bh=3WoDEAuSo8T4/6RaJ2IOg/766Bng7fAW5f6keDMPO14=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=PS914ClSibG3/XmWmCowywVNj+R/3YZwArsr24rQs4Yrc5P0/DxQmXWsAVDNZEl1F
	 RV7gEY0T+RBqpChUT0uJM0vXnNtIvXPO2Jh0zQCYJ/rknIVqnFCvCvy+3VMvGColVY
	 N5O+4qIo1Kr9Lms1LcqfrXTC8htjE3DCs2qD06bKqtJiJTTFJo+oNdCbmUMSIFWphW
	 iZyx570EJC9IGMkX6ifk26tIr/y9yD2YJxX71IPG1KX10BkyVkU1FMbJ0TTm7rCVLK
	 QypbuVK/eFZCbvSR65p7MV+8TOQikY8UdR8/M1oXnUcT8g7E5dmyE3kdby/2TVbIEZ
	 ztjlFT6pboYrw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1730381249; x=1730641749; i=teddy.astie@vates.tech;
	bh=3WoDEAuSo8T4/6RaJ2IOg/766Bng7fAW5f6keDMPO14=;
	h=From:Subject:To:Cc:Message-Id:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=0iP56Bv8YZtw6zHzXic8bIiAo7mJnm5Z41yuL0DJxesxC6x6JpeQlRN231zhxtYi4
	 YRe7MXO4xXSS+sOBEwvfFPfnX3tiFvWGSjX197vu2geLnUIqIe05nMVKNU+Jx47NUl
	 uGwx8DuPSCruBjnvQasp+EH3Q+Z1PXRJ8ZEVQUNbow7XfNcjqp75wZjFXoGl0y2IvH
	 1oTbdAH1xZwaluHjVh6Vp4RTCbe270iW8UQxZ8w83Egb2JXLpecY8sompD4wdrKg1Q
	 Rf/BXhj8cSDjecHPJDp8IJWy1WMSf4ksWFYcGIO/cERTkbFDKD4JnrI5/3O+GG0Ln6
	 NlIYUTLGGggQg==
From: "Teddy Astie" <teddy.astie@vates.tech>
Subject: =?utf-8?Q?[XEN=20PATCH]=20x86/hvm:=20Use=20constants=20for=20x86=20modes?=
X-Mailer: git-send-email 2.45.2
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1730381248095
To: xen-devel@lists.xenproject.org
Cc: "Teddy Astie" <teddy.astie@vates.tech>, "Jan Beulich" <jbeulich@suse.com>, "Andrew Cooper" <andrew.cooper3@citrix.com>, =?utf-8?Q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Paul Durrant" <paul@xen.org>
Message-Id: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@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.fc8f500813b641e78d4a28924803cef7?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20241031:md
Date: Thu, 31 Oct 2024 13:27:29 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

In many places of x86 HVM code, constants integer are used to indicate in what mode is
running the CPU (real, v86, 16-bits, 32-bits, 64-bits). However, these constants are
are written directly as integer which hides the actual meaning of these modes.

This patch introduces X86_MODE_* macros and replace those occurences with it.

Signed-off-by Teddy Astie <teddy.astie@vates.tech>
---
I am not sure of other places that uses these integer constants.
---
 xen/arch/x86/hvm/emulate.c           | 16 ++++++++--------
 xen/arch/x86/hvm/hypercall.c         | 13 +++++++------
 xen/arch/x86/hvm/viridian/viridian.c |  9 +++++----
 xen/arch/x86/hvm/vmx/vmx.c           |  9 +++++----
 xen/arch/x86/hvm/vmx/vvmx.c          |  5 +++--
 xen/arch/x86/include/asm/hvm/hvm.h   |  6 ++++++
 6 files changed, 34 insertions(+), 24 deletions(-)

diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
index ecf83795fa..60a7c15bdc 100644
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -2433,14 +2433,14 @@ static void cf_check hvmemul_put_fpu(

         switch ( mode )
         {
-        case 8:
+        case X86_MODE_64BIT:
             fpu_ctxt->fip.addr = aux->ip;
             if ( dval )
                 fpu_ctxt->fdp.addr = aux->dp;
             fpu_ctxt->x[FPU_WORD_SIZE_OFFSET] = 8;
             break;

-        case 4: case 2:
+        case X86_MODE_32BIT: case X86_MODE_16BIT:
             fpu_ctxt->fip.offs = aux->ip;
             fpu_ctxt->fip.sel  = aux->cs;
             if ( dval )
@@ -2451,7 +2451,7 @@ static void cf_check hvmemul_put_fpu(
             fpu_ctxt->x[FPU_WORD_SIZE_OFFSET] = mode;
             break;

-        case 0: case 1:
+        case X86_MODE_REAL: case X86_MODE_V86:
             fpu_ctxt->fip.addr = aux->ip | (aux->cs << 4);
             if ( dval )
                 fpu_ctxt->fdp.addr = aux->dp | (aux->ds << 4);
@@ -2952,11 +2952,11 @@ static const char *guest_x86_mode_to_str(int mode)
 {
     switch ( mode )
     {
-    case 0:  return "Real";
-    case 1:  return "v86";
-    case 2:  return "16bit";
-    case 4:  return "32bit";
-    case 8:  return "64bit";
+    case X86_MODE_REAL:  return "Real";
+    case X86_MODE_V86:  return "v86";
+    case X86_MODE_16BIT:  return "16bit";
+    case X86_MODE_32BIT:  return "32bit";
+    case X86_MODE_64BIT:  return "64bit";
     default: return "Unknown";
     }
 }
diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 81883c8d4f..e0e9bcd22d 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -11,6 +11,7 @@
 #include <xen/ioreq.h>
 #include <xen/nospec.h>

+#include <asm/hvm/hvm.h>
 #include <asm/hvm/emulate.h>
 #include <asm/hvm/support.h>
 #include <asm/hvm/viridian.h>
@@ -112,23 +113,23 @@ int hvm_hypercall(struct cpu_user_regs *regs)

     switch ( mode )
     {
-    case 8:
+    case X86_MODE_64BIT:
         eax = regs->rax;
         fallthrough;
-    case 4:
-    case 2:
+    case X86_MODE_32BIT:
+    case X86_MODE_16BIT:
         if ( currd->arch.monitor.guest_request_userspace_enabled &&
             eax == __HYPERVISOR_hvm_op &&
-            (mode == 8 ? regs->rdi : regs->ebx) == HVMOP_guest_request_vm_event )
+            (mode == X86_MODE_64BIT ? regs->rdi : regs->ebx) == HVMOP_guest_request_vm_event )
             break;

         if ( likely(!hvm_get_cpl(curr)) )
             break;
         fallthrough;
-    default:
+    case X86_MODE_V86:
         regs->rax = -EPERM;
         return HVM_HCALL_completed;
-    case 0:
+    case X86_MODE_REAL:
         break;
     }

diff --git a/xen/arch/x86/hvm/viridian/viridian.c b/xen/arch/x86/hvm/viridian/viridian.c
index 21480d9ee7..0e3b824bf0 100644
--- a/xen/arch/x86/hvm/viridian/viridian.c
+++ b/xen/arch/x86/hvm/viridian/viridian.c
@@ -16,6 +16,7 @@
 #include <asm/paging.h>
 #include <asm/p2m.h>
 #include <asm/apic.h>
+#include <asm/hvm/hvm.h>
 #include <public/sched.h>
 #include <public/hvm/hvm_op.h>

@@ -933,13 +934,13 @@ int viridian_hypercall(struct cpu_user_regs *regs)

     switch ( mode )
     {
-    case 8:
+    case X86_MODE_64BIT:
         input.raw = regs->rcx;
         input_params_gpa = regs->rdx;
         output_params_gpa = regs->r8;
         break;

-    case 4:
+    case X86_MODE_32BIT:
         input.raw = (regs->rdx << 32) | regs->eax;
         input_params_gpa = (regs->rbx << 32) | regs->ecx;
         output_params_gpa = (regs->rdi << 32) | regs->esi;
@@ -1038,11 +1039,11 @@ int viridian_hypercall(struct cpu_user_regs *regs)

     switch ( mode )
     {
-    case 8:
+    case X86_MODE_64BIT:
         regs->rax = output.raw;
         break;

-    case 4:
+    case X86_MODE_32BIT:
         regs->rdx = output.raw >> 32;
         regs->rax = (uint32_t)output.raw;
         break;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 12f8a66458..b77f135a2d 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -886,14 +886,15 @@ int cf_check vmx_guest_x86_mode(struct vcpu *v)
     unsigned long cs_ar_bytes;

     if ( unlikely(!(v->arch.hvm.guest_cr[0] & X86_CR0_PE)) )
-        return 0;
+        return X86_MODE_REAL;
     if ( unlikely(guest_cpu_user_regs()->eflags & X86_EFLAGS_VM) )
-        return 1;
+        return X86_MODE_V86;
     __vmread(GUEST_CS_AR_BYTES, &cs_ar_bytes);
     if ( hvm_long_mode_active(v) &&
          likely(cs_ar_bytes & X86_SEG_AR_CS_LM_ACTIVE) )
-        return 8;
-    return (likely(cs_ar_bytes & X86_SEG_AR_DEF_OP_SIZE) ? 4 : 2);
+        return X86_MODE_64BIT;
+    return (likely(cs_ar_bytes & X86_SEG_AR_DEF_OP_SIZE)
+            ? X86_MODE_32BIT : X86_MODE_16BIT);
 }

 static void vmx_save_dr(struct vcpu *v)
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index c05e0e9326..5032fc3a45 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -411,7 +411,7 @@ static int decode_vmx_inst(struct cpu_user_regs *regs,
     }
     else
     {
-        bool mode_64bit = (vmx_guest_x86_mode(v) == 8);
+        bool mode_64bit = (vmx_guest_x86_mode(v) == X86_MODE_64BIT);

         decode->type = VMX_INST_MEMREG_TYPE_MEMORY;

@@ -2073,7 +2073,8 @@ int nvmx_handle_vmx_insn(struct cpu_user_regs *regs, unsigned int exit_reason)

     if ( !(curr->arch.hvm.guest_cr[4] & X86_CR4_VMXE) ||
          !nestedhvm_enabled(curr->domain) ||
-         (vmx_guest_x86_mode(curr) < (hvm_long_mode_active(curr) ? 8 : 2)) ||
+         (vmx_guest_x86_mode(curr) < (hvm_long_mode_active(curr) ? X86_MODE_64BIT
+                                                                 : X86_MODE_16BIT)) ||
          (exit_reason != EXIT_REASON_VMXON && !nvmx_vcpu_in_vmx(curr)) )
     {
         hvm_inject_hw_exception(X86_EXC_UD, X86_EVENT_NO_EC);
diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/asm/hvm/hvm.h
index dd7d4872b5..29ae23617e 100644
--- a/xen/arch/x86/include/asm/hvm/hvm.h
+++ b/xen/arch/x86/include/asm/hvm/hvm.h
@@ -26,6 +26,12 @@ extern bool opt_hvm_fep;
 #define opt_hvm_fep 0
 #endif

+#define X86_MODE_REAL  0
+#define X86_MODE_V86   1
+#define X86_MODE_16BIT 2
+#define X86_MODE_32BIT 4
+#define X86_MODE_64BIT 8
+
 /* Interrupt acknowledgement sources. */
 enum hvm_intsrc {
     hvm_intsrc_none,
--
2.45.2



Teddy Astie | Vates XCP-ng Intern

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 13:45:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 13:45:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828701.1243678 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6VU7-00049E-NF; Thu, 31 Oct 2024 13:45:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828701.1243678; Thu, 31 Oct 2024 13:45: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 1t6VU7-000497-KG; Thu, 31 Oct 2024 13:45:11 +0000
Received: by outflank-mailman (input) for mailman id 828701;
 Thu, 31 Oct 2024 13:45: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=uKj0=R3=linutronix.de=tglx@srs-se1.protection.inumbo.net>)
 id 1t6VU6-000491-FK
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 13:45:10 +0000
Received: from galois.linutronix.de (galois.linutronix.de
 [2a0a:51c0:0:12e:550::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5588df2a-978e-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 14:45:05 +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: 5588df2a-978e-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMGE6NTFjMDowOjEyZTo1NTA6OjEiLCJoZWxvIjoiZ2Fsb2lzLmxpbnV0cm9uaXguZGUifQ==
X-Custom-Transaction: eyJpZCI6IjU1ODhkZjJhLTk3OGUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzgyMzA1LjI4NjM5NSwic2VuZGVyIjoidGdseEBsaW51dHJvbml4LmRlIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
From: Thomas Gleixner <tglx@linutronix.de>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020; t=1730382304;
	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=eEO4GUXIuQTW+sY+/WiYJk1PjJtbzNP/nS0HeFEOI6A=;
	b=yoCNsTYAFyyFk5pGSYkD1piEjw8MOo53vDo2YkXW02EDMHDlaOfzFQIBgvw62YeQnStj0R
	qkY5Ky9UOyVC1w3OVKBzXSwejc99F3AGpf5zUOBwsDyJSVfTnZWMWet1KTbQJOfOLCVNhV
	cy7TVNur5FmVBVRh+KOvfZ/CNyLR8SNv9i7yqNqrq5kD5xMENaMe0V6OpvokmfW/Ob9QM/
	5un8Zwrlq9QRR3JPr7QuSkLpK98KMG43mFh0DMvW9yQHq+GuztrjGuFKrW+m4h5GhCy/Ac
	kp1SwmKR/ksHOOv6R90FQYE4O+PRPlazUvlT9/6ThYdYhTcp0TO69X6RMhaPYQ==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020e; t=1730382304;
	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=eEO4GUXIuQTW+sY+/WiYJk1PjJtbzNP/nS0HeFEOI6A=;
	b=tnv8I/cOG9O9Bmuz6A4PtC/V6UOPd//2+oyqsIznzxGGzis4KZd76yQ3kxGFswkP13hKpV
	nr8ioE+FYr3wlOBw==
To: Philipp Stanner <pstanner@redhat.com>, Damien Le Moal
 <dlemoal@kernel.org>, Niklas Cassel <cassel@kernel.org>, Sergey Shtylyov
 <s.shtylyov@omp.ru>, Basavaraj Natikar <basavaraj.natikar@amd.com>, Jiri
 Kosina <jikos@kernel.org>, Benjamin Tissoires <bentiss@kernel.org>, Arnd
 Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
 Alex Dubov <oakad@yahoo.com>, Sudarsana Kalluru <skalluru@marvell.com>,
 Manish Chopra <manishc@marvell.com>, "David S. Miller"
 <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>, Jakub Kicinski
 <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>, Rasesh Mody
 <rmody@marvell.com>, GR-Linux-NIC-Dev@marvell.com, Igor Mitsyanko
 <imitsyanko@quantenna.com>, Sergey Matyukevich <geomatsi@gmail.com>, Kalle
 Valo <kvalo@kernel.org>, Sanjay R Mehta <sanju.mehta@amd.com>, Shyam
 Sundar S K <Shyam-sundar.S-k@amd.com>, Jon Mason <jdmason@kudzu.us>, Dave
 Jiang <dave.jiang@intel.com>, Allen Hubbe <allenbh@gmail.com>, Bjorn
 Helgaas <bhelgaas@google.com>, Alex Williamson
 <alex.williamson@redhat.com>, Juergen Gross <jgross@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Oleksandr Tyshchenko
 <oleksandr_tyshchenko@epam.com>, Jaroslav Kysela <perex@perex.cz>, Takashi
 Iwai <tiwai@suse.com>, Chen Ni <nichen@iscas.ac.cn>, Mario Limonciello
 <mario.limonciello@amd.com>, Philipp Stanner <pstanner@redhat.com>, Ricky
 Wu <ricky_wu@realtek.com>, Al Viro <viro@zeniv.linux.org.uk>, Breno Leitao
 <leitao@debian.org>, Kevin Tian <kevin.tian@intel.com>, Ilpo =?utf-8?Q?J?=
 =?utf-8?Q?=C3=A4rvinen?=
 <ilpo.jarvinen@linux.intel.com>, Andy Shevchenko
 <andriy.shevchenko@linux.intel.com>, Mostafa Saleh <smostafa@google.com>,
 Jason Gunthorpe <jgg@ziepe.ca>, Yi Liu <yi.l.liu@intel.com>, Christian
 Brauner <brauner@kernel.org>, Ankit Agrawal <ankita@nvidia.com>, Eric
 Auger <eric.auger@redhat.com>, Reinette Chatre
 <reinette.chatre@intel.com>, Ye Bin <yebin10@huawei.com>, Marek
 =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
 Pierre-Louis
 Bossart <pierre-louis.bossart@linux.dev>, Peter Ujfalusi
 <peter.ujfalusi@linux.intel.com>, Maarten Lankhorst
 <maarten.lankhorst@linux.intel.com>, Kai Vehmanen
 <kai.vehmanen@linux.intel.com>, Rui Salvaterra <rsalvaterra@gmail.com>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org,
 linux-input@vger.kernel.org, netdev@vger.kernel.org,
 linux-wireless@vger.kernel.org, ntb@lists.linux.dev,
 linux-pci@vger.kernel.org, kvm@vger.kernel.org,
 xen-devel@lists.xenproject.org, linux-sound@vger.kernel.org
Subject: Re: [PATCH 01/13] PCI: Prepare removing devres from pci_intx()
In-Reply-To: <20241015185124.64726-2-pstanner@redhat.com>
References: <20241015185124.64726-1-pstanner@redhat.com>
 <20241015185124.64726-2-pstanner@redhat.com>
Date: Thu, 31 Oct 2024 14:45:03 +0100
Message-ID: <87cyjgwfmo.ffs@tglx>
MIME-Version: 1.0
Content-Type: text/plain

On Tue, Oct 15 2024 at 20:51, Philipp Stanner wrote:
> +/**
> + * pci_intx - enables/disables PCI INTx for device dev, unmanaged version

mismatch vs. actual function name.

> + * @pdev: the PCI device to operate on
> + * @enable: boolean: whether to enable or disable PCI INTx
> + *
> + * Enables/disables PCI INTx for device @pdev
> + *
> + * This function behavios identically to pci_intx(), but is never managed with
> + * devres.
> + */
> +void pci_intx_unmanaged(struct pci_dev *pdev, int enable)

This is a misnomer. The function controls the INTX_DISABLE bit of a
PCI device. Something like this:

void __pci_intx_control()
{
}

static inline void pci_intx_enable(d)
{
        __pci_intx_control(d, true);
}

.....

makes it entirely clear what this is about.

Hmm?

Thanks,

        tglx


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 13:47:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 13:47:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828705.1243688 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6VW4-0004vh-1y; Thu, 31 Oct 2024 13:47:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828705.1243688; Thu, 31 Oct 2024 13:47: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 1t6VW3-0004va-VY; Thu, 31 Oct 2024 13:47:11 +0000
Received: by outflank-mailman (input) for mailman id 828705;
 Thu, 31 Oct 2024 13:47: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6VW3-0004vS-5c
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 13:47:11 +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 9d875907-978e-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 14:47:05 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a99ea294480so65737966b.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 06:47:05 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ceac770226sm596716a12.37.2024.10.31.06.47.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 06:47:04 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d875907-978e-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MjkiLCJoZWxvIjoibWFpbC1lajEteDYyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjlkODc1OTA3LTk3OGUtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzgyNDI1Ljc0MTgxNiwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730382425; x=1730987225; 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=8Z6OYI4AxlFsbpsPGyN28CVgDDbQygAFzxphBread0w=;
        b=Fr0UHWMIbQG8AYVg2OZRKK//ubMleONbpeQXuDB0tek6forV8xpjmEpOhCL9mbkuwh
         kqOPDw45zEzTykM4RQJOi4cnsMB7Nmer9DWho0zyG4tIgvNbNVlotSsd8UJBe2GdvQeR
         F/eeQFC+q1eQXeRXg/PMpuqTem764bRT1dB9I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730382425; x=1730987225;
        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=8Z6OYI4AxlFsbpsPGyN28CVgDDbQygAFzxphBread0w=;
        b=bp4ngqObrYiOo5655tKVrek8tgLin2dYWqZQkQr+ctyOCgQ7Z/occGurHozmDwiFEi
         uA0TEqmVKA4V5kZdDRbnbmzl+3nHwkwXnmdLWsU7XcAZBW7d/odGV24zLE/vUhx5BfR6
         62idpYb38Qwfhkd4l4EgYeBe1b2vqlq1K+tVP2+vS278BrUWBJFWBRtbW3qIfiYmkEry
         zib0dBv/COr7kW3PZ6hkACynlC356uAmkh5TbKA+tPtouVNeUamQjIu3RbPWTYCZGipl
         YyLNIaGf6PZDtHrzdt5L2ZI5+XSgtkInaV4l+uAEDaD3JYOLmvJSfbjXYJAvMEkQbtnF
         jZqQ==
X-Gm-Message-State: AOJu0YwTYDfRFngufaBkcn7nHdbZhpUEm7CR9KZnRXDRG6pUsWEK2vVq
	UNkxmflGEU8xUGfuBINzFlfGUkLRdLVK6gTG186iax3BSfcZx3lbAQGbPrAnr6AhV8zm0O4eomA
	o
X-Google-Smtp-Source: AGHT+IE+LigPaB/SE/U+rD9aS8XeCHqhS72C9rcVyIEq1BY+tD4cdgHwmQEHJmDSWLTWApo7tndlCA==
X-Received: by 2002:a05:6402:40cb:b0:5ce:afba:f48a with SMTP id 4fb4d7f45d1cf-5ceafbb03b7mr1998093a12.27.1730382424681;
        Thu, 31 Oct 2024 06:47:04 -0700 (PDT)
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>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>
Subject: [PATCH] scripts: Refine git-checkout.sh change for different branches
Date: Thu, 31 Oct 2024 13:47:02 +0000
Message-Id: <20241031134702.2913536-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The change works for divergent branches, but doesn't work for explicit SHAs.

Instead of passing `-b $TAG` to clone, explicitly fetch the $TAG we want after
cloning.

Fixes: c554ec124b12 ("scripts: Fix git-checkout.sh to work with branches other than master")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>

Speculative fix, pending CI:
  https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1521847529
---
 scripts/git-checkout.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
index 3796cbfe39a7..9f8f2bd04fca 100755
--- a/scripts/git-checkout.sh
+++ b/scripts/git-checkout.sh
@@ -14,9 +14,10 @@ set -e
 if test \! -d $DIR-remote; then
 	rm -rf $DIR-remote $DIR-remote.tmp
 	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
-	$GIT clone -b $TAG $TREE $DIR-remote.tmp
+	$GIT clone $TREE $DIR-remote.tmp
 	if test "$TAG" ; then
 		cd $DIR-remote.tmp
+                $GIT fetch origin $TAG
 		$GIT branch -D dummy >/dev/null 2>&1 ||:
 		$GIT checkout -b dummy $TAG
 		cd -

base-commit: 9a2a50d5de7647bfb529867fdce47ec64b07f06a
prerequisite-patch-id: ef7a8f78a2a3bfb35a2835ce8c2ec97d95f1267e
prerequisite-patch-id: 8c25962203bdb283a9c95328fb0867ffa3da8b95
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 13:55:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 13:55:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828714.1243698 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Vdv-0006lH-QV; Thu, 31 Oct 2024 13:55:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828714.1243698; Thu, 31 Oct 2024 13: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 1t6Vdv-0006lA-Nh; Thu, 31 Oct 2024 13:55:19 +0000
Received: by outflank-mailman (input) for mailman id 828714;
 Thu, 31 Oct 2024 13:55: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=35SK=R3=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t6Vdu-0006kc-KW
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 13:55:18 +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 c0a37e3b-978f-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 14:55:14 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c935d99dc5so1246426a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 06:55:14 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e5649405dsm73003866b.10.2024.10.31.06.55.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 06:55:12 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0a37e3b-978f-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmUiLCJoZWxvIjoibWFpbC1lZDEteDUyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImMwYTM3ZTNiLTk3OGYtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzgyOTE0LjE1NjcyOCwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730382913; x=1730987713; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=YiCRnpXsSiY6bncEVllpoxXx/3NG00oLxBsTZ3Gkekw=;
        b=fAcc0cO5oLiW2CKg9raFgLLf1dlrAhet3X15wzt4Lpt4TclDAZQh2TXlDFCivdF91M
         D3pgtjKBeJTvC3xUfVFEMoK4QoflB8CbRSbVTSjaf1ifl93mO//RUexKaxD3KWTJetxZ
         SZcIEd5eXxrg7jP+e9KUBSM/1zdLepiYoMf5g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730382913; x=1730987713;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=YiCRnpXsSiY6bncEVllpoxXx/3NG00oLxBsTZ3Gkekw=;
        b=ookeDfKk4di4WxacywzkMLfAO5bQBq9nQH9IbfTl0HOVo9Gwxi6LgWiFKLtTAvFipG
         ajZx0R6TUxUF8hN2JyVaGWiKGUyQSYMtO8U24IqyN8Gwg8qMGH9xT63Ko3sl29+eLFCe
         jFEKioImo5U0H/S4E5i/1+X3HLld9ntVrSB9ZFha2f039BzP8da/+q7f7DIbJ5P1bSay
         qVDiEfvxt0JGKMiaer2LMLANlL0wdyKs9NFP5tX2+wuxj8kESMlWdUqo1jqSumOU2md1
         GjID1xttGZEgWHm11CpahsehfbvZsY17UTpnqkvW8buhx1PzeNXW87b3HkIRLDXyG5B+
         6PRA==
X-Forwarded-Encrypted: i=1; AJvYcCUI67xsHyC8MFfltBHVKjGyKqVyMnhije57OKSSPWqL8uWh5jl4sGL+nonlDupYAVUqJzwlTWqKIs4=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yw+KHW2aHQyChik1cEAmGBcoyV+NUacyKzOOgIvrPTflnrAcI7j
	mvEhWu5ZaWXNry/YvUVih+SQgaKjvOf72X8jTi/HDmI7R5Tu1TVRlU+lCwsYRKk=
X-Google-Smtp-Source: AGHT+IGyJ654FLwZob/s13RukOu0q09Ahoz34ujpCPTeT1dTKazZUq1igw/Nkzcqf/66c6dcB7Keug==
X-Received: by 2002:a17:907:ea0:b0:a99:f9d6:5590 with SMTP id a640c23a62f3a-a9de6331185mr1861225066b.60.1730382913361;
        Thu, 31 Oct 2024 06:55:13 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Thu, 31 Oct 2024 13:55:10 +0000
Message-Id: <D5A1JR5UB8PT.HIR8RAR7ZJBS@cloud.com>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Julien Grall"
 <julien@xen.org>, "Stefano Stabellini" <sstabellini@kernel.org>, "Juergen
 Gross" <jgross@suse.com>, "Anthony PERARD" <anthony.perard@vates.tech>,
 =?utf-8?q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, "Christian Lindig"
 <christian.lindig@citrix.com>, "David Scott" <dave@recoil.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>
Subject: Re: [RFC PATCH 0/6] xen/abi: On wide bitfields inside primitive
 types
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Jan Beulich" <jbeulich@suse.com>
X-Mailer: aerc 0.18.2
References: <20241029181632.69600-1-alejandro.vallejo@cloud.com>
 <3bf067c7-617c-42c0-bf6d-4387d97658ae@suse.com>
 <D598HGJY330K.3NA7GQLUSJJ9K@cloud.com>
 <dbc778eb-0c5f-4b99-ab04-020f8b69738b@suse.com>
In-Reply-To: <dbc778eb-0c5f-4b99-ab04-020f8b69738b@suse.com>

On Thu Oct 31, 2024 at 7:57 AM GMT, Jan Beulich wrote:
> On 30.10.2024 16:08, Alejandro Vallejo wrote:
> >=20
> > In the course of preparing this answer I just noticed that altp2m_opts =
suffers
> > from the exact same annoyance, with the exact same fix. I just noticed =
while
> > rebasing my Rust branch.
>
> Hardly the only other one. See GTF_type_mask or XEN_DOMCTL_PFINFO_LTAB_MA=
SK.
>
> > On Wed Oct 30, 2024 at 9:14 AM GMT, Jan Beulich wrote:
> >> On 29.10.2024 19:16, Alejandro Vallejo wrote:
> >>> Non-boolean bitfields in the hypercall ABI make it fairly inconvenien=
t to
> >>> create bindings for any language because (a) they are always ad-hoc a=
nd are
> >>> subject to restrictions regular fields are not (b) require boilerplat=
e that
> >>> regular fields do not and (c) might not even be part of the core lang=
uage,
> >>> forcing avoidable external libraries into any sort of generic library=
.
> >>>
> >>> This patch (it's a series merely to split roughly by maintainer) is o=
ne such
> >>> case that I happened to spot while playing around. It's the grant_ver=
sion
> >>> field, buried under an otherwise empty grant_opts.
> >>>
> >>> The invariant I'd like to (slowly) introduce and discuss is that fiel=
ds may
> >>> have bitflags (e.g: a packed array of booleans indexed by some enumer=
ated
> >>> type), but not be mixed with wider fields in the same primitive type.=
 This
> >>> ensures any field containing an integer of any kind can be referred b=
y pointer
> >>> and treated the same way as any other with regards to sizeof() and th=
e like.
> >>
> >> While I don't strictly mind, I'm also not really seeing why taking add=
resses
> >> or applying sizeof() would be commonly necessary. Can you perhaps prov=
ide a
> >> concrete example of where the present way of dealing with grant max ve=
rsion
> >> is getting in the way? After all your use of the term "bitfield" doesn=
't
> >> really mean C's understanding of it, so especially (c) above escapes m=
e to a
> >> fair degree.
> >=20
> > Wall of text ahead, but I'll try to stay on point. The rationale should=
 become
> > a lot clearer after I send an RFC series with initial code to autogener=
ate some
> > hypercall payloads from markup. The biggest question is: Can I create a
> > definition language such that (a) it precisely represents the Xen ABI a=
nd (b)
> > is fully type-safe under modern strongly-typed languages?
> >=20
> > I already have a backbone I can define the ABI in, so my options when I=
 hit
> > some impedance mismatch are:
> >=20
> >   1. Change the ABI so it matches better my means of defining it.
> >   2. Change the means to define so it captures the existing ABI better.
> >=20
> > Most of the work I've done has moved in the (2) direction so far, but I=
 found a
> > number of pain points when mapping the existing ABI to Rust that, while=
 not
> > impossible to work around, are quite annoying for no clear benefit. If
> > possible, I'd like to simplify the cognitive load involved in defining,=
 using
> > and updating hypercalls rather than bending over backwards to support a
> > construct that provides no real benefit. IOW: If I can define an ABI th=
at is
> > _simpler_, it follows that it's also easier to not make mistakes and it=
's
> > easier to generate code for it.
> >=20
> > The use of packed fields is one such case. Even in C, we create extra m=
acros
> > for creating a field, modifying it, fetching it, etc. Patches 2-6 are s=
trict
> > code removals. And even in the most extreme cases the space savings are=
 largely
> > irrelevant because the hypercall has a fixed size. We do want to pack _=
flags_
> > as otherwise the payload size would explode pretty quickly on hypercall=
s with
> > tons of boolean options, but I'm not aware of that being problematic fo=
r wider
> > subfields (like the grant max version).
> >=20
> > Now, being more concrete...
> >=20
> > ##################################################################
> > # IDL is simpler if the size is a property of the type
> > ##################################################################
> >=20
> > Consider the definition of the (new) max_grant_version type under the I=
DL I'm
> > working on (it's TOML, but I don't particularly care about which markup=
 we end
> > up using).
> >=20
> >   [[enums]]
> >   name =3D "xen_domaincreate_max_grant_version"
> >   description =3D "Content of the `max_grant_version` field of the doma=
in creation hypercall."
> >   typ =3D { tag =3D "u8" }
> >=20
> >   [[enums.variants]]
> >   name =3D "off"
> >   description =3D "Must be used with gnttab support compiled out"
> >   value =3D 0
> >=20
> >   [[enums.variants]]
> >   name =3D "v1"
> >   description =3D "Allow the domain to use up to gnttab_v1"
> >   value =3D 1
> >=20
> >   [[enums.variants]]
> >   name =3D "v2"
> >   description =3D "Allow the domain to use up to gnttab_v2"
> >   value =3D 2
> >=20
> > Note that I can define a type being enumerated, can choose its specific
> > variants and its width is a property of the type itself. With bitfields=
 you're
> > always in a weird position of the width not being part of the type that=
 goes
> > into it.
> >=20
> > Should I need it as a field somewhere, then...
> >=20
> >   [[structs.fields]]
> >   name =3D "max_grant_version"
> >   description =3D "Maximum grant table version the domain may be bumped=
 to"
> >   typ =3D { tag =3D "enum", args =3D "xen_domaincreate_max_grant_versio=
n" }
> >=20
> > ... at which point the size of the field is given by an intrinsic prope=
rty of
> > the type (the typ property on the enums table) I previously defined. It=
's
> > extensible, composable and allows me to generate readable code in both =
C and
> > Rust.
> >=20
> > Should I need to support full bitfields I would require a means of stat=
ing the
> > start and end bits of every field, which is very bad for the sanity of =
whoever
> > wants to maintain coherency in the ABI.
> >=20
> > ##################################################################
> > # Rust and Go don't like bitfields...
> > ##################################################################
> >=20
> > ... and neither does C, even if for historic reasons they do exist in t=
he
> > standard.
>
> I don't think that's just for historic reasons. To interface with hardwar=
e,
> alternative approaches are often more cumbersome. See how we're (slowly)
> moving to using bitfields more in Xen, in favor of tons of #define-s and
> more or less open-coded masking operations.
>
> > On a slight tangent, neither Rust nor Go support bitfields in the
> > core language. This was a deliberate design decision of their respectiv=
e
> > designers. I can't speak for Go as I'm not a Go developer, but Rust doe=
s have a
> > very well-known, well-supported and very common external crate ("bitfla=
gs")
> > that allows very ergonomic semantics for definition of packed booleans.=
 As an
> > example here's the flags for domain create, as spitted out by the gener=
ator I
> > have.
> >=20
> > (comments removed for brevity). This defines a bitmap indexed by the fl=
ags
> > type, represented by a 32bit primitive. It's type-safe from the PoV tha=
t I
> > can't just write 1 << 15 to a variable of this type and expect anything=
 but
> > screams from the compiler.
> >=20
> >   bitflags! {
> >       #[repr(C)]
> >       #[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
> >       pub struct XenDomaincreateFlags: u32 {
> >           const Hvm =3D 1 << 0;
> >           const Hap =3D 1 << 1;
> >           const S3Integrity =3D 1 << 2;
> >           const OosOff =3D 1 << 3;
> >           const XsDomain =3D 1 << 4;
> >           const Iommu =3D 1 << 5;
> >           const NestedVirt =3D 1 << 6;
> >           const Vpmu =3D 1 << 7;
> >       }
> >   }
> >=20
> > This enables callers to have type-safe variables in a pretty ergonomic =
fashion:
> >=20
> >   let flags =3D XenDomainCreateFlags::Hvm |
> >               XenDomainCreateFlags::Hap |
> >               XenDomainCreateFlags::Iommu;
> >=20
> > and assignments to its related struct would follow regular assignment r=
ules.
> >=20
> > ##################################################################
> > # IOW
> > ##################################################################
> >=20
> > Supporting general bitfields is annoying, even in C. Adding support in =
IDL for
> > them is a headache if we want the descriptions to help us catch mistake=
s and
> > language support is poor using this constructs (at best).
> >=20
> > Can we please get rid of them?
>
> I remain undecided. If we set forth as a goal to avoid such in the new AB=
I
> that has been mentioned for many years, that would be a more clear cut.

That's the direction I want to move on, but there's a chicken-and-egg
situation. I want to avoid the effort I'm putting in adding cross-language
support to the hypercall boundary to be necessarily gated on introducing a
whole new ABI that hasn't yet been openly discussed. And at the same time, =
I'd
like the IDL to provide comfortable means to statically validate the invari=
ants
we impose on the new ABI. Simpler semantics make for simpler validation.

IOW, it's not modifying EVERYTHING so it fits in my little hole that I'm af=
ter,
but a general nod that for future changes this would be taken into account =
to
avoid taking one forward and two back every other fortnight

>
> Just taking the example of the gnttab max version: By switching to
>
>     uint8_t max_grant_version;
>     uint8_t rsvd0[3];
>
> you actively make it more cumbersome to re-use the rest of the 32-bit fie=
ld
> as (boolean) flags.

Only the following 8 bits. The last 16 can become a uint16_t worth of flags
without issues. Note that this minor annoyance is becasuse of the redefinit=
ion
of a uint32_t as a composite, not because of having unpacked fields.

> It may reasonably work for the first 8, with early
> provisions it may also work for 16, yet it'll be harder / uglier for more
> than that.

But at that point you're discussing the effects of a binary-compatible
re-definition of an existing field, not the effects of new fields on any
hypercall. While stylistically desirable, nothing forces grant-related fiel=
ds
to be adjacent in the struct.

You are right that should we need 20 new bits this reserved array wouldn't =
be
very adequate to hold them. But it doesn't have to. We're free to allocate =
a
new field, just as we would if we needed 31 new bits rather than 20. In
practice when we need a few bits in the future I'd expect to just allocate
the last 16bits out of the array, turn them into a uint16_t, and use that a=
s a
flags field.

Or I can redefine the whole 32bits to be the max_grant_version/altp2m_mode.

Both options are binary compatible, and I went for this one in order to giv=
e
back some unused space.

> Allowing such is, after all, the idea behind the present
> "packing". (The issue would similarly exist in the new ABI, yet we could
> simply decide up front that we're willing to pay that price, perhaps even
> outlining up front how to best limit undesirable effects when doing so.)

Just a note that adding fields need not break the ABI. It happens to do so =
in
this hypercall because "arch" can itself change, but that wouldn't be an AB=
I
breakage if it was passed as a pointer instead (which we ought to do if we
happen to break the ABI again before new ABI lands).

>
> Just to mention it - you didn't really answer the sizeof() / address-taki=
ng
> question I raised. You provided a lot of other _useful_ background though=
.
>
> Jan

There's nothing major in those two. It's an existing restriction on packed
fields we could lift by unpacking them. The real meat is in the rest of the
background rationale.

Things are slightly more annoying in Rust because I might be forced to give=
 a
mutable reference to the whole packed field (and hope the callee only mutat=
es
what I want it to) in cases where I would rather give a single mutable
reference to one of its constituents instead. Not major, but annoying.

By far the biggest sigh would be having to describe hypercalls by bit offse=
ts
rather than simpler primitive types.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:13:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:13:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828722.1243708 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6VvQ-00022U-7U; Thu, 31 Oct 2024 14:13:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828722.1243708; Thu, 31 Oct 2024 14:13: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 1t6VvQ-00022N-4B; Thu, 31 Oct 2024 14:13:24 +0000
Received: by outflank-mailman (input) for mailman id 828722;
 Thu, 31 Oct 2024 14:13: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6VvP-00022H-4P
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:13:23 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4660f39d-9792-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 15:13:17 +0100 (CET)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a9a0f198d38so146836466b.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:13:17 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e565df8d8sm73108466b.131.2024.10.31.07.13.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:13:16 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4660f39d-9792-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmEiLCJoZWxvIjoibWFpbC1lajEteDYyYS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQ2NjBmMzlkLTk3OTItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzgzOTk3LjUxNzUzNiwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730383997; x=1730988797; 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=8mOnPmxDxbKmJU/WxTohbDYJBWCkpxZOLE78JOwgCW0=;
        b=G6ibcnneiBgVq24XlCWh9H/Q0fXDQk8isQaZaDO/n1NLIFfLUylXQIdLfvw2vpH1fB
         gioJzGQ95LkJEBCFO8r4N3VvDSQblIrdDkBqs/uHDRssCUaNrOVCVvEr4mcKw8nNZdKm
         Qo7gepWsQ2QhYGIKAVFxHjSbQZlg86LPKDsQQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730383997; x=1730988797;
        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=8mOnPmxDxbKmJU/WxTohbDYJBWCkpxZOLE78JOwgCW0=;
        b=QZ2eGXlRYTs/kSc9MQG+YWEN0zpKwm49GZ0fJo36Zv0rm+kpFe7Lmb8DE9k/4QRV4L
         tt+vJ96BUXk98+W/jkN2JjlYv3vy/ZB1NxqbwmJicDsKz3sbm3aRvngPPQVCIR3Txy53
         SxAivuC607v3dowGy7UnRo1FDH65tfFS9dP8fP2bSCpJ9dWLeLzT0JHrWSo9jyrcJIUh
         +rf23a6eYtRqdjwohhOP3PlS0qOboQVXHuPMAsrIYyBtVOHmLwTgCOOyR2jmcu4Dwd0D
         6/OoPYI8fjHXGUJ/o5FmJzWGdOoWtMt44EIVYNVvUlNtvv1vI8wqZGxiTmsoUCkmzhp7
         H9ug==
X-Forwarded-Encrypted: i=1; AJvYcCV+46BL1ESDkJ5pDJB3PBJxFfBI3LkFmDXi1Yl3LrKtEa+PHHjhgHL7Ny7txBufwGgwBk3Q+QC8N+Y=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxfQ3JinZkVBh5wuKl75XiI0od6sjD2d1B0NxcxvuZESfL2rVv+
	JNcN/slfO7/xq0K8pROgW71vVCrK67vDgMc0BPEleWe6J9z9TckEN9itY8P832s=
X-Google-Smtp-Source: AGHT+IE0SoWM2L8pPOc+BN55vKSizyE7OKwI5nqXhkLk41cQcrrIfsSYOLn3GPcOi5fVX0zfovO1Jw==
X-Received: by 2002:a17:906:f596:b0:a99:5773:3612 with SMTP id a640c23a62f3a-a9e65507131mr10408666b.36.1730383996883;
        Thu, 31 Oct 2024 07:13:16 -0700 (PDT)
Message-ID: <0f41efad-8eac-4b77-a974-e5a2798dbf8a@citrix.com>
Date: Thu, 31 Oct 2024 14:13:14 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH] x86/hvm: Use constants for x86 modes
To: Teddy Astie <teddy.astie@vates.tech>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Paul Durrant <paul@xen.org>
References: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@vates.tech>
Content-Language: en-GB
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: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 1:27 pm, Teddy Astie wrote:
> In many places of x86 HVM code, constants integer are used to indicate in what mode is
> running the CPU (real, v86, 16-bits, 32-bits, 64-bits). However, these constants are
> are written directly as integer which hides the actual meaning of these modes.
>
> This patch introduces X86_MODE_* macros and replace those occurences with it.
>
> Signed-off-by Teddy Astie <teddy.astie@vates.tech>
> ---
> I am not sure of other places that uses these integer constants.

I think you've got most of them.

The problem (and it's preexisting, not something with your change), is
that these aren't actually modes.  They're all a combination of certain
aspects of various modes settings.

https://sandpile.org/x86/mode.htm has a pretty complete breakdown of modes.

The problem is that here, we mostly want a shorthand for "code segment
size", but including some aspects of how segmentation works.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:17:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:17:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828729.1243717 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Vz7-00030W-Sc; Thu, 31 Oct 2024 14:17:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828729.1243717; Thu, 31 Oct 2024 14:17: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 1t6Vz7-00030P-Pi; Thu, 31 Oct 2024 14:17:13 +0000
Received: by outflank-mailman (input) for mailman id 828729;
 Thu, 31 Oct 2024 14:17: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=35SK=R3=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t6Vz7-00030J-4g
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:17:13 +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 d116edf6-9792-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 15:17:10 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5cb615671acso618076a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:17:10 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e5663d3f7sm73679666b.146.2024.10.31.07.17.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:17:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d116edf6-9792-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmQiLCJoZWxvIjoibWFpbC1lZDEteDUyZC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImQxMTZlZGY2LTk3OTItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg0MjMwLjIzMzk0OSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730384230; x=1730989030; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=6rtUDKr30bxi4YmQ24DyvStSXJ3uyydsDun3k1F5D9w=;
        b=WTwNJMc+VOXrRuJ1DfM8w19UVbceAJC/vpEliWFJj+PlZmzKeBFrRyQ6fdgB8tdRpC
         nUUxDaHC9HbjkNHtr2t61KxQ5Lf5A5jcmxRsysmJR8rT3aQdeCKjXbrSFtzO8dy/FQaW
         Td6g/v0+fzsN3nUGS1czZpQm507oHRgsO0b1k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730384230; x=1730989030;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=6rtUDKr30bxi4YmQ24DyvStSXJ3uyydsDun3k1F5D9w=;
        b=uxx+6nyueN9w/vlLZ4UEJSInQY0wTyfJ2Q4GS2i8bEDPIkenQH+Ue8DXtfV+Mo/ykf
         OUUPY1JFLAon67O1ClciHE7/7C49REYfpHSUIzCbMyzUvJDw7iPUV84+WBMGDJPHI/W+
         B8eQk5O978mjXGpRFkWpT/fFNGIQzq5f8SL00I83AGrj/EOLXd/tPHegYe8086m9hcxZ
         2TnJgy9AG8EYQDrLL0zNSN/oHBzhi38bWNx91G0IslkK0dJeHFNpbDrcJLEFshAOdA4m
         5RSOQtH0AMWhu5g7HoWl6vUj5rAQ+2yQA/5xe4FqHB9Tvdxncz4OeTrUZU+oA7wsC7q5
         PPZg==
X-Forwarded-Encrypted: i=1; AJvYcCUIdhLF3crZAA4KoWBK9c6xR2BtvIxBtCIA46hHOyoV28Gu5Srg37Gaa0zt00C/gJoUsZai0ZbeULM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yym8iVYLBlV0JBfTsU59e41msJlc7s9TIi9+dy4igUijk0MYC2z
	DDeSChlJeF3x0JD49mIfxRkYCJBk2/7r8ztqGdUohnD0AOrc9fd78BgryysSwCc=
X-Google-Smtp-Source: AGHT+IF4jfbUZ37P80z83ulS9GSPTHBiLdKHJCTmJh6vDg2rMrSZmnSUkN5GRVqPfA9+2IGdNzKUAA==
X-Received: by 2002:a05:6402:278e:b0:5c9:5745:de9a with SMTP id 4fb4d7f45d1cf-5cbbf8a40c4mr17446581a12.9.1730384228085;
        Thu, 31 Oct 2024 07:17:08 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Thu, 31 Oct 2024 14:17:06 +0000
Message-Id: <D5A20JD5PC3G.22TWXL5RY7PQD@cloud.com>
Cc: "Jan Beulich" <JBeulich@suse.com>, "Stefano Stabellini"
 <sstabellini@kernel.org>, "Julien Grall" <julien@xen.org>
Subject: Re: [PATCH] scripts: Refine git-checkout.sh change for different
 branches
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241031134702.2913536-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241031134702.2913536-1-andrew.cooper3@citrix.com>

On Thu Oct 31, 2024 at 1:47 PM GMT, Andrew Cooper wrote:
> The change works for divergent branches, but doesn't work for explicit SH=
As.
>
> Instead of passing `-b $TAG` to clone, explicitly fetch the $TAG we want =
after
> cloning.
>
> Fixes: c554ec124b12 ("scripts: Fix git-checkout.sh to work with branches =
other than master")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien@xen.org>
>
> Speculative fix, pending CI:
>   https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/152184752=
9
> ---
>  scripts/git-checkout.sh | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
> index 3796cbfe39a7..9f8f2bd04fca 100755
> --- a/scripts/git-checkout.sh
> +++ b/scripts/git-checkout.sh
> @@ -14,9 +14,10 @@ set -e
>  if test \! -d $DIR-remote; then
>  	rm -rf $DIR-remote $DIR-remote.tmp
>  	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
> -	$GIT clone -b $TAG $TREE $DIR-remote.tmp
> +	$GIT clone $TREE $DIR-remote.tmp

Can this be shallow (--depth 1) clone instead to avoid pulling for whole
history in CI? There's probably some ENV variable that  could be recovered
from.

>  	if test "$TAG" ; then
>  		cd $DIR-remote.tmp
> +                $GIT fetch origin $TAG
>  		$GIT branch -D dummy >/dev/null 2>&1 ||:
>  		$GIT checkout -b dummy $TAG
>  		cd -
>
> base-commit: 9a2a50d5de7647bfb529867fdce47ec64b07f06a
> prerequisite-patch-id: ef7a8f78a2a3bfb35a2835ce8c2ec97d95f1267e
> prerequisite-patch-id: 8c25962203bdb283a9c95328fb0867ffa3da8b95



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:18:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:18:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828734.1243727 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Vzx-0003Wp-4v; Thu, 31 Oct 2024 14:18:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828734.1243727; Thu, 31 Oct 2024 14: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 1t6Vzx-0003Wi-1v; Thu, 31 Oct 2024 14:18:05 +0000
Received: by outflank-mailman (input) for mailman id 828734;
 Thu, 31 Oct 2024 14: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6Vzw-0003Ub-26
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:18:04 +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 efb824ac-9792-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 15:18:01 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-53a097aa3daso958244e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:18:01 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd9a9faesm57818665e9.35.2024.10.31.07.18.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:18:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: efb824ac-9792-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMmIiLCJoZWxvIjoibWFpbC1sZjEteDEyYi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImVmYjgyNGFjLTk3OTItMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg0MjgxLjUyOTYxMywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730384281; x=1730989081; 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=7JvtvPfUj51h9Hw/gq3o2g1USb7SgwrVFE4xQiogMyc=;
        b=EBAGPX6qSevAz4wBgIycXISUa4tokLu44bAOvfwUDs3U1B74+VMV59OiVcSi6drbA+
         9BAOSjt+9JUC8nALZ70RyS9LveL92JnZk/JIVcLsyL03uRwO4293pNaqP8ryY/+AE/JA
         MfBHibbCQ6IfzhcLTn1x9OKkJEo8nKqCRt2lu3/iwR9QwXVVw4JZdBPlcDOO9MA4q5dw
         bWZWIiX9gG5OidVONUj2h38jA+9NFs/Vuca7sTdbB51qHakR5lfWjcFSY7uVw5047azW
         rebDLAqyFssTiSmdpoJUUz3lObJeGWH84Peasey6AWGTmNrWVgd0seMdcSEswg9a9aO4
         DItA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730384281; x=1730989081;
        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=7JvtvPfUj51h9Hw/gq3o2g1USb7SgwrVFE4xQiogMyc=;
        b=Hcm2kM/6IbBS/TCE2zaECpScNyvaHxgyh06s7JtNODnVkFhb6ZZqph4cVJ2i9+sI6u
         UelaPZQJfwY9sMHM7GPRok8hT9HkKsH5Pa9qT8SzUJ3T6YgvEQn5WHU6jU+J9G0rA4X4
         8meQiQEc418wzyZGcZwVaCRu8CUqRci04pEnYQtXzzzrgF5BebZYCTldbRvzaaIxlc/Q
         1oypbhrIKM5Lzg+f/qYMNHiYo7TsaUWucuu9MhjMeuZy7KVBgYhXjVeOvk1lLFujwSVc
         q0krTD25IG1fhVN53ndOkXj80jLdfcJulQ9+fT3cgbXNE/sN3DIp5ZTisVeXfzqhouGP
         afYg==
X-Forwarded-Encrypted: i=1; AJvYcCXsJwS2ZKYSHf9UunrFezVKvmUEVV8olY3kqTJ3KXgMfghid2ITi437tuFf9lTyLv++VAKmhpT27hM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxDj/QKaADyMu2i0Aurkagpl6faLfwOr73m8lOV/PcdAUz69LAI
	lqmhmEST7mJEnCauGmyicEA8PNJj3RPBpPiBEl67puAGz7tHRpghkmLo2fqeMA==
X-Google-Smtp-Source: AGHT+IG7BkcG8XeQoz0g+hHLj4vVu2eyFv/psc68qPnSIJCENmJxzN14q7X+ilJ25n4NpgOW8GowcA==
X-Received: by 2002:a05:6512:b83:b0:535:66ff:c681 with SMTP id 2adb3069b0e04-53d65e1ab82mr73488e87.48.1730384280945;
        Thu, 31 Oct 2024 07:18:00 -0700 (PDT)
Message-ID: <438b5872-58b2-45df-a949-7f606b22922a@suse.com>
Date: Thu, 31 Oct 2024 15:17:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH] x86/hvm: Use constants for x86 modes
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Teddy Astie <teddy.astie@vates.tech>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Paul Durrant <paul@xen.org>, xen-devel@lists.xenproject.org
References: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@vates.tech>
 <0f41efad-8eac-4b77-a974-e5a2798dbf8a@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: <0f41efad-8eac-4b77-a974-e5a2798dbf8a@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31.10.2024 15:13, Andrew Cooper wrote:
> On 31/10/2024 1:27 pm, Teddy Astie wrote:
>> In many places of x86 HVM code, constants integer are used to indicate in what mode is
>> running the CPU (real, v86, 16-bits, 32-bits, 64-bits). However, these constants are
>> are written directly as integer which hides the actual meaning of these modes.
>>
>> This patch introduces X86_MODE_* macros and replace those occurences with it.
>>
>> Signed-off-by Teddy Astie <teddy.astie@vates.tech>
>> ---
>> I am not sure of other places that uses these integer constants.
> 
> I think you've got most of them.
> 
> The problem (and it's preexisting, not something with your change), is
> that these aren't actually modes.  They're all a combination of certain
> aspects of various modes settings.
> 
> https://sandpile.org/x86/mode.htm has a pretty complete breakdown of modes.
> 
> The problem is that here, we mostly want a shorthand for "code segment
> size", but including some aspects of how segmentation works.

Hence how about

#define X86_CODE_REAL  0
#define X86_CODE_VM86  1
#define X86_CODE_16BIT 2
#define X86_CODE_32BIT 4
#define X86_CODE_64BIT 8

?


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:21:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:21:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828738.1243738 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6W2y-00055Q-IC; Thu, 31 Oct 2024 14:21:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828738.1243738; Thu, 31 Oct 2024 14:21: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 1t6W2y-00055J-FD; Thu, 31 Oct 2024 14:21:12 +0000
Received: by outflank-mailman (input) for mailman id 828738;
 Thu, 31 Oct 2024 14:21: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6W2x-00055D-PD
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:21:11 +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 5efffbab-9793-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 15:21:08 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-431616c23b5so6278635e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:21:08 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd8e848csm58235845e9.3.2024.10.31.07.21.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:21:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5efffbab-9793-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMzMiLCJoZWxvIjoibWFpbC13bTEteDMzMy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjVlZmZmYmFiLTk3OTMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzg0NDY4LjM1Njk3OCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730384468; x=1730989268; 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=ttPQVvr5GfpYlgGI1A2RmqfbqxMRHl7OX20gcgA8NdI=;
        b=Hl4lxCWh1EiMzNZVrFo1QaOc1UFDCs32ffytcl6p6IVYlGCSZ87QgVVBdojKoJyMeL
         Tz3K86gCyMGL6aZG0vftGQ6eHS5OPpsyddJ1kZPtn5KVITb3LGF1e9UvxKT7o6tLs9mr
         ceXhWfgO0Li1ofSekMERJuPX2b97JXgSs0nZxayyy/nuUDLC/pwV7chKPA5mBCrFF+8N
         rNf3RomOUOVIzMjOx9UKtHNVFMNoH0Xe+o3Vj7Y2+BXYqe6mKW6MQfpsV8geLEAlMtbe
         fnQ6Q97yy3zy2y9edyvkEeZcMFJQ2wUzBFQTDo6GGkdMZVq4LUkoGgJlMY15QZFiIVl+
         XVBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730384468; x=1730989268;
        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=ttPQVvr5GfpYlgGI1A2RmqfbqxMRHl7OX20gcgA8NdI=;
        b=HBRDC/6y6RthUU4ELrPVAk8Q15VeBuFztrNxIoYH2LCYFDP7s1alc8mwSz/xLvGaX6
         1XEt9HQV/cbh6orknUxW4VDO6kVNlc9reotB0buiEDjagCGkcJMtDsiybDC3KTF0/Pea
         3I4tn2jhMSFVChFAZyrBI3E0bzcPPmNJOaz4szBfn+Buaj5yfP//TVJ8oFJ3ELvh6MCu
         3B2cypLsFHDtBn6/Ce7dceJsJSNvprDcd7n+z4QeVdFgRO9Rcdh9A7bDdIk34YWBAZHx
         qGR22MQmC/wKuasCFbdnbnRFt8uAXRtvajdDEa097X7Zei1nDy21EiYAMjF+B2iq8wib
         XwnA==
X-Forwarded-Encrypted: i=1; AJvYcCWxFrvzgn5A3VlYsLKI3+J/lQr2/M9EKfK/UmATplzkKTJboE9iJR9wq2PWtIXPqdRhQ4smGCGqTWM=@lists.xenproject.org
X-Gm-Message-State: AOJu0YywzjhGAwjh4BrwEZRsX8l8GCLFtA4ISwDeafU8/38KbAqkl7SK
	4UWeNct67BFgf01W3Dq0jtmzzES8xKwdYQh1JFGRk0A1QhwlNWavsn3vKhjs2g==
X-Google-Smtp-Source: AGHT+IGLi/I4hZuVp+hTtmQDK4XGjnWTsmD0Q//CE6nVFxlDeU3TCwz7VIZAmm9H8XPPkKIL6ao9Yw==
X-Received: by 2002:a05:600c:4301:b0:431:4e25:fe31 with SMTP id 5b1f17b1804b1-4328308555cmr1676005e9.12.1730384467753;
        Thu, 31 Oct 2024 07:21:07 -0700 (PDT)
Message-ID: <9d556053-1d97-429b-8153-c9f53b31b13c@suse.com>
Date: Thu, 31 Oct 2024 15:21:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH] x86/hvm: Use constants for x86 modes
To: Teddy Astie <teddy.astie@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org, Paul Durrant <paul@xen.org>
References: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@vates.tech>
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: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@vates.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 31.10.2024 14:27, Teddy Astie wrote:
> In many places of x86 HVM code, constants integer are used to indicate in what mode is
> running the CPU (real, v86, 16-bits, 32-bits, 64-bits). However, these constants are
> are written directly as integer which hides the actual meaning of these modes.
> 
> This patch introduces X86_MODE_* macros and replace those occurences with it.
> 
> Signed-off-by Teddy Astie <teddy.astie@vates.tech>
> ---
> I am not sure of other places that uses these integer constants.

At the very least svm_guest_x86_mode() also wants changing.

> @@ -2952,11 +2952,11 @@ static const char *guest_x86_mode_to_str(int mode)
>  {
>      switch ( mode )
>      {
> -    case 0:  return "Real";
> -    case 1:  return "v86";
> -    case 2:  return "16bit";
> -    case 4:  return "32bit";
> -    case 8:  return "64bit";
> +    case X86_MODE_REAL:  return "Real";
> +    case X86_MODE_V86:  return "v86";
> +    case X86_MODE_16BIT:  return "16bit";
> +    case X86_MODE_32BIT:  return "32bit";
> +    case X86_MODE_64BIT:  return "64bit";

Please don't break columnar alignment here. As hinted at in the other reply
already, personally I'd prefer VM86 anyway.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:21:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:21:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828741.1243748 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6W3W-0005Ua-Rb; Thu, 31 Oct 2024 14:21:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828741.1243748; Thu, 31 Oct 2024 14:21: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 1t6W3W-0005UT-NY; Thu, 31 Oct 2024 14:21:46 +0000
Received: by outflank-mailman (input) for mailman id 828741;
 Thu, 31 Oct 2024 14:21: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6W3V-0005Tz-JK
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:21:45 +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 72cd7931-9793-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 15:21:41 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-539e7e73740so927933e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:21:41 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ceac789152sm613833a12.43.2024.10.31.07.21.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:21:39 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 72cd7931-9793-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMmYiLCJoZWxvIjoibWFpbC1sZjEteDEyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjcyY2Q3OTMxLTk3OTMtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg0NTAxLjQ2MzQ2OSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730384501; x=1730989301; 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=xcdgomyU3F8z/NntrMSM58zQsgwCn+NZWvvNttM4QiA=;
        b=qrJdR64xoEnriOlY+GX+4SU8QeTr0Lddk3Y9K/OikvyDGqJBs89ddp50ng00YJItoJ
         /liNJA7z6IgEh9RwRaS1ctxgyJl05XOTPp/2mem3L2MwhnKOL/qe8p/JtEGYdzGaw2xx
         5B0Ifcb65byKBx+Gj7qoJfe5lg5eQdi1UzrIM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730384501; x=1730989301;
        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=xcdgomyU3F8z/NntrMSM58zQsgwCn+NZWvvNttM4QiA=;
        b=ByiYynX6ZrzYgvr4mAsU25rM/Rbn2IB8dlWRZOBrQXPAUsiErsXgyt+9Irb5Bu5E38
         7Ro05yCukSYBBEf0vDJ8Udc5J2idALYpJOBvxe6PH1Bj3Ke/2yaFeP2+2vEYWk2Px87m
         94ZRLAeW7vyNeaidejMjaZPOnXTdfsi9BQgZ/PWq/1p49Zmc2h4nDnQf9n4SIcaEWtrJ
         1K7eZXmXuLHGIAUO9/iblWV2MHi0rtr9leJmLUOSozn8tI9tuO+ATEjONZ7/dXFwO2oM
         +AmNgWuNXHTywXXaS/pF7dqjdsCXyss90FI3K0P+xqo3RYzml/v9wF1GddWx1a8OTCSC
         39Nw==
X-Forwarded-Encrypted: i=1; AJvYcCVcjTR3MLXtcDr5Wz45KKORHoORmZTsNdp2cUqxVRmal6rdnfAxG/Zru27dMfl6tquogTNvRp+YeWk=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxsSC2k03bWWiQhEJQr/0m9AV0cmMiswsVe7BGGpSEQftBf/iok
	JbAMmf464aiy+DMFRKoc1ylu4Pqy1XU9qynFm/kUNvN6WNJhiBf5cDIe9sMlcxW0w08YZqAJmsF
	F
X-Google-Smtp-Source: AGHT+IHjIOf4VwvdQSvXBNvJ3oY2DFzdCu4y/2cc4o/FBto4dc4O2fYk1cAMT7y47lPOZXme9kmV8g==
X-Received: by 2002:a05:6512:130f:b0:539:fbf7:38d1 with SMTP id 2adb3069b0e04-53b7ecd5970mr4368469e87.2.1730384500907;
        Thu, 31 Oct 2024 07:21:40 -0700 (PDT)
Message-ID: <dbf733c0-14a4-40cd-8849-29a87b45c64c@citrix.com>
Date: Thu, 31 Oct 2024 14:21:36 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] scripts: Refine git-checkout.sh change for different
 branches
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
References: <20241031134702.2913536-1-andrew.cooper3@citrix.com>
 <D5A20JD5PC3G.22TWXL5RY7PQD@cloud.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <D5A20JD5PC3G.22TWXL5RY7PQD@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 2:17 pm, Alejandro Vallejo wrote:
> On Thu Oct 31, 2024 at 1:47 PM GMT, Andrew Cooper wrote:
>> The change works for divergent branches, but doesn't work for explicit SHAs.
>>
>> Instead of passing `-b $TAG` to clone, explicitly fetch the $TAG we want after
>> cloning.
>>
>> Fixes: c554ec124b12 ("scripts: Fix git-checkout.sh to work with branches other than master")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Stefano Stabellini <sstabellini@kernel.org>
>> CC: Julien Grall <julien@xen.org>
>>
>> Speculative fix, pending CI:
>>   https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1521847529
>> ---
>>  scripts/git-checkout.sh | 3 ++-
>>  1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
>> index 3796cbfe39a7..9f8f2bd04fca 100755
>> --- a/scripts/git-checkout.sh
>> +++ b/scripts/git-checkout.sh
>> @@ -14,9 +14,10 @@ set -e
>>  if test \! -d $DIR-remote; then
>>  	rm -rf $DIR-remote $DIR-remote.tmp
>>  	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
>> -	$GIT clone -b $TAG $TREE $DIR-remote.tmp
>> +	$GIT clone $TREE $DIR-remote.tmp
> Can this be shallow (--depth 1) clone instead to avoid pulling for whole
> history in CI? There's probably some ENV variable that  could be recovered
> from.

Maybe, but not here.  One swamp at a time.

More specifically, my first iteration of this fix did use --depth 1, but
it broke QEMU's submodules.  I'm not debugging that as a prerequisite of
fixing other CI breakages.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:26:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:26:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828754.1243757 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6W8B-0006So-Dt; Thu, 31 Oct 2024 14:26:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828754.1243757; Thu, 31 Oct 2024 14: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 1t6W8B-0006Sh-B5; Thu, 31 Oct 2024 14:26:35 +0000
Received: by outflank-mailman (input) for mailman id 828754;
 Thu, 31 Oct 2024 14: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6W89-0006Qr-LK
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:26:33 +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 1f1097da-9794-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 15:26:30 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-37ed3bd6114so565643f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:26:30 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c113dd8asm2242115f8f.73.2024.10.31.07.26.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:26:29 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f1097da-9794-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo0MmYiLCJoZWxvIjoibWFpbC13cjEteDQyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjFmMTA5N2RhLTk3OTQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg0NzkwLjU5MDgzNywic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730384790; x=1730989590; 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=Qal1gIjXdA4vh02b5fd6E5qWbvDTN6ixswVz4acBsXg=;
        b=Y/MTFHb32uilnmlNbH4wDuC1RYa3kSLe48dUseUkAHQJobJRCZhlh2BNJfWYABGZaM
         pBhjRQFX0iV1/QNincCzcRKbF0XcGnct9124r3No0tIWTd4H9ijXb24PLetnJwXO7XEp
         Z4iKl14pehbkMJjb6h0nVXTjit7g2ddqJDIjpwV8BTgJRqizYDDfa/mDyxFZJHvGv845
         qe/yZO0ZEnGgEZnnJR1ziengFNgXBWVRtIGscKdwowlr5p3+uP7dcn0sA/iStvan+1lR
         Z/nw11AeqrEV75Bd1epo5gc4TqqacWwllCvby8MKdxIv8AAcOJSth5jEL7/N0atAq0DR
         TNZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730384790; x=1730989590;
        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=Qal1gIjXdA4vh02b5fd6E5qWbvDTN6ixswVz4acBsXg=;
        b=Q2kjKnc8opf5gQ8E4ZjY+PhbFUT6/nYJ1Qtktbsh48AK3v9OnQFy8zWGersKqgD+Ke
         UsNOtjVdGavzRhLIbIhU3K0xfUmYGKJKeZjKtExROJRcxEOPim/dl+ayR58+dTXMYfRA
         eLrkTepo5bYdeX3nxxXCj9HQwf6PaJR1YyHy7oSxPd8Z8aNKnRjLVugw2fJAXNx+Vwzc
         Xyb6JcChaG6Ry6LmqPwGst/om48sbyNrBbNC52qpPA8/kYlTPkLifvZqYO3kT2JpmXJ1
         NhblPwVtNr+5ttkGw3YlHPcCBkOrR8hgK1GymaEjgqOE7yXfL4rYM9eBFiyP0lFCdV4t
         QpyA==
X-Forwarded-Encrypted: i=1; AJvYcCU8qHF1rkE1IXwR5K+KymN+g1wVbsAzpcuMkQZJ4ElmGiTyvH6Q8XS/DqZQVJQFiX4+fAX/uRIEfXE=@lists.xenproject.org
X-Gm-Message-State: AOJu0YzWLpgLKQ8I73Kd0psj/0iDKMyVLKNESh1HFgye+kOFEa1VgH2m
	P3oGzMOpq0VRHFRGnSKVTUSnHB2X6FaQ0mCpT5IonZecQsLE/Q0T0mcXnYNQkg==
X-Google-Smtp-Source: AGHT+IFx5wwPdzST4N+1Nd30O3An4sG7tr6TWWwq0FzZnXuzvw9ipp4m9huJDdaAUqoG/Ki0puaqGg==
X-Received: by 2002:a05:6000:4007:b0:37d:5232:a963 with SMTP id ffacd0b85a97d-381c7a4a492mr122628f8f.14.1730384789746;
        Thu, 31 Oct 2024 07:26:29 -0700 (PDT)
Message-ID: <59142741-ba58-4c26-b965-950b5c527c62@suse.com>
Date: Thu, 31 Oct 2024 15:26:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/7] byteorder: replace __u16
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <17b6b894-9b41-4e8c-a3a9-ce837797eac3@suse.com>
 <dee82fce-ffc8-493e-8d99-f5c3b321e5b3@suse.com>
 <a7b6fc68-a568-4b61-895d-c295ba3d3095@citrix.com>
 <b5b20a0c-7584-4885-b7b0-c4b1cba8c0bd@suse.com>
 <f5572afc-7c9e-4c2e-ba3f-6ce4f3b71d59@suse.com>
 <56b2b751-74bc-4b47-a966-2c8a6ef2b35d@suse.com>
 <f105fe2f-1b76-4f0d-889b-ec12e95a0ac8@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: <f105fe2f-1b76-4f0d-889b-ec12e95a0ac8@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31.10.2024 13:20, Andrew Cooper wrote:
> On 31/10/2024 11:23 am, Jan Beulich wrote:
>> On 16.10.2024 11:37, Jan Beulich wrote:
>>> On 09.10.2024 15:34, Jan Beulich wrote:
>>>> On 09.10.2024 15:20, Andrew Cooper wrote:
>>>>> On 09/10/2024 10:21 am, Jan Beulich wrote:
>>>>>> In {big,little}_endian.h the changes are entirely mechanical, except for
>>>>>> dealing with casting away of const from pointers-to-const on lines
>>>>>> touched anyway.
>>>>>>
>>>>>> In swab.h the casting of constants is done away with as well - I simply
>>>>>> don't see what the respective comment is concerned about in our
>>>>>> environment (sizeof(int) >= 4, sizeof(long) >= {4,8} depending on
>>>>>> architecture, sizeof(long long) >= 8). The comment is certainly relevant
>>>>>> in more general cases. Excess parentheses are dropped as well,
>>>>>> ___swab16()'s local variable is renamed, and __arch__swab16()'s is
>>>>>> dropped as being redundant with ___swab16()'s.
>>>>>>
>>>>>> With that no uses of the type remain, so it moves to linux-compat.h.
>>>>>>
>>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>>> ---
>>>>>> I'm unconvinced of the need of the separate ___constant_swab16(). I'm
>>>>>> also unconvinced of the need for said constants (that even had casts on
>>>>>> them).
>>>>> There is a still-good series deleting the whole of byteorder/ and
>>>>> replacing it with a few-hundred line single header.
>>>>>
>>>>> It is the second thing stalled on a governance change (prohibited
>>>>> reasons to object to a change) which clearly no-one gives a damn about
>>>>> fixing.  In fact double spite because it denied a good engineer his
>>>>> first changes in Xen.
>>>>>
>>>>>
>>>>> I don't particularly feel like trying to polish byteorder.  I'm inclined
>>>>> to rebase+repost Lin's patches, at which point the majority of this
>>>>> series simply disappears.
>>>> I wouldn't mind you doing so, as long as that other series then progresses.
>>>> What I don't want to get into is the other series being stuck rendering this
>>>> one stuck, too. Then it would imo be better to take this one first, rebase
>>>> the other on top, and work towards it becoming unstuck (whatever that takes;
>>>> I have no recollection of what the issue was back at the time, all I recall
>>>> is that, yes, there was such work at some point).
>>> Just to have a clear picture: Was your reply an objection, with you indeed
>>> meaning me to hold back this tidying work? If so, can you please indicate
>>> when, at least roughly, you mean to re-post what you think wants re-posting?
>>> If not, can you please indicate so, for me to commit stuff that's otherwise
>>> ready to go in (and which that other work should be easy to re-base over)?
>> Just to mention here - short of an answer I'm going to commit this with the
>> R-b from Frediano that I've got.
> 
> nack.

Too late.

> The reason there's even anything to do here is, in part, because you
> were obstructive to Lin's series.
> 
> It wasn't only you, but the maintainers (plural) behaviour on that
> series was so outrageous that it started the effort to governance to
> prohibit certain classes of feedback, to make Xen a less toxic place to
> contribute to.
> 
> I will get to it when I get to it.   You can use the time to reflect on
> how you could have been more helpful in the past, and avoided this whole
> issue.

Do you really think that with this kind of reply you do any better than
what you complain about in my (supposed) earlier behavior? I can't help
the impression that you simply can't live with views differing from your
own in certain cases. If you have specific, reasonably objective comments
on that past communication (which I no longer have to hand), I may
certainly try to do better in the future. Blanket statements like those
above simply aren't actionable (and wording-wise close to a conduct
violation imo).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:28:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:28:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828760.1243768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6WAN-0007PH-P4; Thu, 31 Oct 2024 14:28:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828760.1243768; Thu, 31 Oct 2024 14:28: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 1t6WAN-0007PA-M3; Thu, 31 Oct 2024 14:28:51 +0000
Received: by outflank-mailman (input) for mailman id 828760;
 Thu, 31 Oct 2024 14:28: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6WAM-0007P0-FW
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:28: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 701fbadf-9794-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 15:28:46 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-43167ff0f91so8921125e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:28:46 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-381c10e7449sm2255349f8f.49.2024.10.31.07.28.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:28:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 701fbadf-9794-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmUiLCJoZWxvIjoibWFpbC13bTEteDMyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjcwMWZiYWRmLTk3OTQtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzg0OTI2LjYwNTI4MSwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730384926; x=1730989726; 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=7HhDJdsRUZ7MkrObfIta2eHYhMvisiT4vdzG/csGb0Q=;
        b=WQcMpD1Sifxm1fuqkzPOydFFCRZ9iAv706xoGHBGcAqvEEOwfVmJw/O5O25zE4htP0
         VNiQBZDfiF3FDTboVxsApbKJKvYKGFgCZOfOL8HOqrwg9VA0j/bqYO7BxWS+dexjgCcm
         IuxS+q/5HmRrzpz9Z4C4PHZpykXO3huxD+caSQGKdj8NCw2z/OBipY6vUfLkHdwVge5q
         9f8GODpCC2y1e1zR8GiL4t4BCKZw/GnUo5BiLs1OqljjIrWwRcWMqqp2OUozI/W3k8RR
         Ab+w3sPKAS2/NX2eUUUQwxazrjAnr3Nq9actJ92HWqwXaHFGbr5A313YROjmgZ6Jd3/l
         2xTQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730384926; x=1730989726;
        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=7HhDJdsRUZ7MkrObfIta2eHYhMvisiT4vdzG/csGb0Q=;
        b=gJMTLj9trGsdYyZ1/fIX70aM3SHG/j2/ytEnxbiB2qum/2mnU4t8H31me/2eR1xs+j
         MSE7jJRwIcegK6bsfNHvdY3v15HdHduqym3zLvrd+TegAZdaEoFno786U7QCxPoLIQ2Q
         SGgoQZW4fUcp+fTR5VuBXevRcqO401h9XZt44MwrJQDfGo9fhQDrJzixfPmQlJ68WDTL
         hC2f5cBZLieYuCyXx2t2In5tlHQFP9yt3tNtpfLt7Ipjfw5rtdp3Y62y3j2PihB3Xbus
         kuZtIHIJMUBI+tFqZB8Z0hRjYcfumvL0FZkycxK6grXPQxHMCoKBQ8Jz/WjKJVZ4IMDG
         Y4AA==
X-Forwarded-Encrypted: i=1; AJvYcCXfW9jov+o1Zk0nS1MWuRgvH+ZgrITeRkP33o0LSPhurKVbgEzlIRADJnwzdYL36xzB00oweU80ySw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwcCEqrbxIjtioRHAXIaQqIW05izCf/Zva4Dm8JREoaZUoYrJlq
	4iIfNPAfGpMzbCO0W/uaPiHOSj/IaNm0R2ENTAuDXDxYKgUDN9jAku98jQPaiA==
X-Google-Smtp-Source: AGHT+IG22g8mwwtOWhVSZHdSzdfhXylDaoZlO4VJsrAj1/kqYxU6tcFWWxx/ozDoZtsbZm5mv3o5RQ==
X-Received: by 2002:a5d:47ab:0:b0:381:b1b4:8ba1 with SMTP id ffacd0b85a97d-381bea1c104mr2843239f8f.39.1730384924415;
        Thu, 31 Oct 2024 07:28:44 -0700 (PDT)
Message-ID: <4fc6dd84-a0cd-4369-9e58-2871bbe1088c@suse.com>
Date: Thu, 31 Oct 2024 15:28:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] xen/riscv: introduce setup_mm()
To: 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>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org
References: <cover.1729697111.git.oleksii.kurochko@gmail.com>
 <28240dcfc04a11237db553c4e0ecb372aa0fe9ac.1729697111.git.oleksii.kurochko@gmail.com>
 <8ec6463e-40a8-4d60-b4c2-ea964a06c572@suse.com>
 <76fc4999eded2ce74fe73bc81998e92147cf802a.camel@gmail.com>
 <e067e169-3e63-4d01-963f-9dde3bb8e3b7@suse.com>
 <878409fe69f7af07120f53ec7d2a58bf348b179c.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: <878409fe69f7af07120f53ec7d2a58bf348b179c.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31.10.2024 14:19, oleksii.kurochko@gmail.com wrote:
>>>>> +void __init setup_mm(void)
>>>>> +{
>>>>> +    const struct membanks *banks = bootinfo_get_mem();
>>>>> +    paddr_t ram_start = INVALID_PADDR;
>>>>> +    paddr_t ram_end = 0;
>>>>> +    paddr_t ram_size = 0;
>>>>> +    unsigned int i;
>>>>> +
>>>>> +    /*
>>>>> +     * We need some memory to allocate the page-tables used
>>>>> for
>>>>> the directmap
>>>>> +     * mappings. But some regions may contain memory already
>>>>> allocated
>>>>> +     * for other uses (e.g. modules, reserved-memory...).
>>>>> +     *
>>>>> +     * For simplicity, add all the free regions in the boot
>>>>> allocator.
>>>>> +     */
>>>>> +    populate_boot_allocator();
>>>>> +
>>>>> +    total_pages = 0;
>>>>> +
>>>>> +    for ( i = 0; i < banks->nr_banks; i++ )
>>>>> +    {
>>>>> +        const struct membank *bank = &banks->bank[i];
>>>>> +        paddr_t bank_end = bank->start + bank->size;
>>>>> +
>>>>> +        ram_size += ROUNDDOWN(bank->size, PAGE_SIZE);
>>>>
>>>> As before - if a bank doesn't cover full pages, this may give the
>>>> impression
>>>> of there being more "total pages" than there are.
>>> Since it rounds down to PAGE_SIZE, if ram_start is 2K and the total
>>> size of a bank is 11K, ram_size will end up being 8K, so the "total
>>> pages" will cover less RAM than the actual size of the RAM bank.
>>
>> ram_start at 2k but bank size being 13k would yield 2 usable pages
>> (first partial page of 2k unusable and last partial page of 3k
>> unusable), yet ram_size of 12k (3 pages). You need to consider the
>> common case; checking things work for a randomly chosen example isn't
>> enough.
> Then I have to check separately the start and end of bank and check if
> ram_size should be reduced in case if the start or end isn't properly
> aligned.

All I think you need to do is align bank start up to a page boundary and
align bank end down to a page boundary.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:33:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:33:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828768.1243778 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6WEu-0000dD-AZ; Thu, 31 Oct 2024 14:33:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828768.1243778; Thu, 31 Oct 2024 14:33: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 1t6WEu-0000d6-7i; Thu, 31 Oct 2024 14:33:32 +0000
Received: by outflank-mailman (input) for mailman id 828768;
 Thu, 31 Oct 2024 14:33: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6WEt-0000d0-IN
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:33:31 +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 17442736-9795-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 15:33:26 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a9e44654ae3so102814266b.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:33:26 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e565f75e7sm75255766b.142.2024.10.31.07.33.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:33:23 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 17442736-9795-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzUiLCJoZWxvIjoibWFpbC1lajEteDYzNS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjE3NDQyNzM2LTk3OTUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg1MjA2Ljk2NjUyLCJzZW5kZXIiOiJhbmRyZXcuY29vcGVyQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730385205; x=1730990005; 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=yErCiHWAZMxXk6nhD76NFI2TEs6AIg98bIiV3atwjKw=;
        b=k69bBySXYnxhb0ZWFM9y33VYxVngf2MEFU6+r1MYe4G2vljaaSH4F8smah1H6MQgcb
         MtP8d5pXUTd4OA+o2fbwqGDScCP3OyT5+8h7xrwkPM5vqFYhNeTDcMX6HLiA5pKe/Bqr
         xpO4GybOSa1eJ3l8pKiqVMlya7p3JyoRfBw8w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730385205; x=1730990005;
        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=yErCiHWAZMxXk6nhD76NFI2TEs6AIg98bIiV3atwjKw=;
        b=X2b+oeDZJMs4bEokYEz/ry7ERVJlQEndTHYtlB+xA9D5n8crUMLYp5UunWymnD11hG
         K7ee1MeZkc5TmKRheG3tpRu67OPQuVAtOxVgby2GAlSS0YAc4cKRPSY+vxzBfvCATXo4
         IitTY3Aj5Z98cJXVGJviGdBasoeFtpkLtInZE8mTqcKkrmp6P87stqM7dkGdJYz44wbd
         ZJ1w0hqOuI3vkev1S+RQhQHVMqjnuQnUSQnM/QJpfWrodYFDDpELb7kMFdvYqjZnmVon
         XFiuIP81NqxwOGnKSVK+ZpzuT9HWW2Xo2ykk28HDt7oqIKdT7nblCCt/wuNumz3CzXYz
         0v2Q==
X-Gm-Message-State: AOJu0YyCPm9AotBZxqTFHLTNRjp72GrqtiPG82mXbz2JFLTKmTYLTkWE
	xkDG+RKZp6YffSMt6nZxybeHFl9q+HpMFbl+XxbOv9LIhxOeEuPg4g9Cn86AFmu+Ekh7UtR6d2k
	R
X-Google-Smtp-Source: AGHT+IHfoToWkqQrdPqTZwigfYahE4cO+G19ZAL4qbxTHX6G6GqTbVhP7p0DGvsmv5A9f7P2xscAog==
X-Received: by 2002:a17:906:478a:b0:a9a:3f9c:f892 with SMTP id a640c23a62f3a-a9e50cd5294mr286144966b.65.1730385205080;
        Thu, 31 Oct 2024 07:33:25 -0700 (PDT)
Message-ID: <5d8f492d-6fa0-434d-8d01-f28376ed20be@citrix.com>
Date: Thu, 31 Oct 2024 14:33:22 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] scripts: Refine git-checkout.sh change for different
 branches
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
References: <20241031134702.2913536-1-andrew.cooper3@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241031134702.2913536-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 1:47 pm, Andrew Cooper wrote:
> The change works for divergent branches, but doesn't work for explicit SHAs.
>
> Instead of passing `-b $TAG` to clone, explicitly fetch the $TAG we want after
> cloning.
>
> Fixes: c554ec124b12 ("scripts: Fix git-checkout.sh to work with branches other than master")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien@xen.org>
>
> Speculative fix, pending CI:
>   https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1521847529

Nope.  While this works on staging, it breaks on 4.17

Back to the drawing board.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:34:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:34:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828770.1243787 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6WFS-000189-HU; Thu, 31 Oct 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 828770.1243787; Thu, 31 Oct 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 1t6WFS-000182-En; Thu, 31 Oct 2024 14:34:06 +0000
Received: by outflank-mailman (input) for mailman id 828770;
 Thu, 31 Oct 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=35SK=R3=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t6WFR-00017s-Nw
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:34:05 +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 2be4f7fb-9795-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 15:34:01 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a0ec0a94fso138453466b.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:34:01 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e566845c1sm74133466b.210.2024.10.31.07.34.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:34:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2be4f7fb-9795-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MjkiLCJoZWxvIjoibWFpbC1lajEteDYyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjJiZTRmN2ZiLTk3OTUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg1MjQxLjY3MTU1MSwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730385241; x=1730990041; darn=lists.xenproject.org;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=w/C1uCWNQbR525Ldt5XKrfNTId8XnaGIAOWBCVbtFm0=;
        b=g2fXXZoHtjTD8mLI6ijvF23ntFHmIlAr7RfJS8r5NBq2K/wmPSMe+/wFBPhZ6w7JjU
         ICGQ5qYNOhBsBbE5GrS0DhCTsXHuNZVCSe7PjDu2g/mOv1ikGhSlJuLPb2NYN92/h+Fy
         JRHQPa7zF997jWA1ZJHnnlmYaC81DEj2kDanA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730385241; x=1730990041;
        h=in-reply-to:references:to:from:subject:cc:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=w/C1uCWNQbR525Ldt5XKrfNTId8XnaGIAOWBCVbtFm0=;
        b=iP2yq7lRo5wvHxXmOqtvzzXx4Loj7piW/duBIzO8GGggzXtDtetyKaBTYlLqMg386E
         0sfy380vC46AcZnUFWOkynrPOPp9L41xhwKSRzN0xl2C6nSAoeQNeuWI7uYhk9S+QC3k
         5BpeAeAs2MwKEfCSNuIYcIqKim/CpvlEQ/bhLlMobcc0N0bQoi6uX4rUoRHmoYThnbpc
         fi5J/X1TBXVDxJSEIJqzzrqeTSdWNa+JSlzm5eQncrNIGEkKNZknOXZQbr4+AtHBVsb5
         72w2OfF2N78SrPwJbF9h16VldPRV4GKofzfSaaZC/OGilfy6xY7EDGdlQgXfWuGN/6jG
         u2UA==
X-Forwarded-Encrypted: i=1; AJvYcCXp+Na/nUhv2rMhP4u/+JYOZXNFkN6riotSVH49vNPgkaodpvV1cdN37zRcrGmuJCt7+L/Bx4GP1B4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwMA6wzPZsHM2NWPgk1RStrA/X3TzDk4Mg3TOY/pVLP69NeOdT/
	op+f2Ki6SamNaGkCZRfx6jiGsPkuj0ss4HR+sW5cTC8n9TG5whjbxpTOqORUvDQ=
X-Google-Smtp-Source: AGHT+IFchsbaSg3ApHMZ9h1X1QoGlPnjxsHQlgT3mGgOprtKpMn6yerGs9o+ivpg3W/tO1pyndkAhQ==
X-Received: by 2002:a17:907:96a9:b0:a9a:a88a:466c with SMTP id a640c23a62f3a-a9de632e59emr1809313966b.61.1730385240895;
        Thu, 31 Oct 2024 07:34:00 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Thu, 31 Oct 2024 14:33:58 +0000
Message-Id: <D5A2DGKM2L73.Y7P349LNCAO5@cloud.com>
Cc: "Jan Beulich" <JBeulich@suse.com>, "Stefano Stabellini"
 <sstabellini@kernel.org>, "Julien Grall" <julien@xen.org>
Subject: Re: [PATCH] scripts: Refine git-checkout.sh change for different
 branches
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Andrew Cooper" <andrew.cooper3@citrix.com>, "Xen-devel"
 <xen-devel@lists.xenproject.org>
X-Mailer: aerc 0.18.2
References: <20241031134702.2913536-1-andrew.cooper3@citrix.com>
 <D5A20JD5PC3G.22TWXL5RY7PQD@cloud.com>
 <dbf733c0-14a4-40cd-8849-29a87b45c64c@citrix.com>
In-Reply-To: <dbf733c0-14a4-40cd-8849-29a87b45c64c@citrix.com>

On Thu Oct 31, 2024 at 2:21 PM GMT, Andrew Cooper wrote:
> On 31/10/2024 2:17 pm, Alejandro Vallejo wrote:
> > On Thu Oct 31, 2024 at 1:47 PM GMT, Andrew Cooper wrote:
> >> The change works for divergent branches, but doesn't work for explicit=
 SHAs.
> >>
> >> Instead of passing `-b $TAG` to clone, explicitly fetch the $TAG we wa=
nt after
> >> cloning.
> >>
> >> Fixes: c554ec124b12 ("scripts: Fix git-checkout.sh to work with branch=
es other than master")
> >> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> >> ---
> >> CC: Jan Beulich <JBeulich@suse.com>
> >> CC: Stefano Stabellini <sstabellini@kernel.org>
> >> CC: Julien Grall <julien@xen.org>
> >>
> >> Speculative fix, pending CI:
> >>   https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/152184=
7529
> >> ---
> >>  scripts/git-checkout.sh | 3 ++-
> >>  1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/scripts/git-checkout.sh b/scripts/git-checkout.sh
> >> index 3796cbfe39a7..9f8f2bd04fca 100755
> >> --- a/scripts/git-checkout.sh
> >> +++ b/scripts/git-checkout.sh
> >> @@ -14,9 +14,10 @@ set -e
> >>  if test \! -d $DIR-remote; then
> >>  	rm -rf $DIR-remote $DIR-remote.tmp
> >>  	mkdir -p $DIR-remote.tmp; rmdir $DIR-remote.tmp
> >> -	$GIT clone -b $TAG $TREE $DIR-remote.tmp
> >> +	$GIT clone $TREE $DIR-remote.tmp
> > Can this be shallow (--depth 1) clone instead to avoid pulling for whol=
e
> > history in CI? There's probably some ENV variable that  could be recove=
red
> > from.
>
> Maybe, but not here.=C2=A0 One swamp at a time.
>
> More specifically, my first iteration of this fix did use --depth 1, but
> it broke QEMU's submodules.=C2=A0 I'm not debugging that as a prerequisit=
e of
> fixing other CI breakages.
>
> ~Andrew

Fair. From inspection, pending an ok from some pipelines:

  Reviewed-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:35:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:35:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828780.1243797 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6WGe-0001s9-U2; Thu, 31 Oct 2024 14:35:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828780.1243797; Thu, 31 Oct 2024 14:35: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 1t6WGe-0001s0-Rb; Thu, 31 Oct 2024 14:35:20 +0000
Received: by outflank-mailman (input) for mailman id 828780;
 Thu, 31 Oct 2024 14:35: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=khX/=R3=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t6WGd-0001rs-Gj
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:35:19 +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 58d4fa58-9795-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 15:35:16 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a0ec0a94fso138647766b.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:35:16 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e564ccfdbsm74637866b.84.2024.10.31.07.35.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 07:35:15 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58d4fa58-9795-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzQiLCJoZWxvIjoibWFpbC1lajEteDYzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjU4ZDRmYTU4LTk3OTUtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg1MzE2Ljk3NTI4MSwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730385316; x=1730990116; 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=V6K+7/QPGO05w0Caa6O6+HpxX9BzAWkCiNdrUF60S4I=;
        b=c5xaQ2V3ryBhh1OnqVO6gR7oVYL8Zv3zT+6a34i+TsyPXXkP9N8uMmjfj8qMKvRYyQ
         Zp8/Dl56PiLVXaI/GffUc0ER9J+M8bmtet25ob5bdSZLIFXCCEJ9MDloRybz8qKpp/ja
         qC5x6U5SzIOllmlWKmp9j8HqXylfhIOaktacobw6WW1R++DcGtIFo0MAyX+sCtLrZ3Fr
         ffHsthzZuJNL/Sh37vjuQCwpnScywcEFhjLAUO2PFMtcIC5lfZuOwi/SDnEn5Fx1Ga4F
         ybzJzFA5DDJ/6U6gzPo6m7vAB4cJR0vO5lYvQ7Eqh/9mLped1IjFeRKH210QJMZ2ggOA
         VFyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730385316; x=1730990116;
        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=V6K+7/QPGO05w0Caa6O6+HpxX9BzAWkCiNdrUF60S4I=;
        b=Va2aj3F+s6kvco5nGWAXxUaXlnyhKJ7fhIA+oFyHdv/XWMVCZSYq0Epfw4cMaGTo+P
         wPK73QNoGOPaJQdwC7mMZmeSZG0d4J9oBeDzeF2s+bihCy5qaSBvc+koINaWT6DmuQo8
         RyQNtRl+/wOjGoekJR2roClORqFukXyzXV0yBTW5uigTYn02KqStMEkvsAoBSpVyWW60
         VwaQLVPsnivTtQGROEqSGOA7TuiWQ7IMdSlCfcydhCBIqkwiuJsSGDB0FOSjwDerFX3R
         zN346vVterPT+p/AThbQsncZQhrRQhdOkpqF6q+4MgR4aNoLbAOj9AaGXvpuM76ScleH
         8OwA==
X-Forwarded-Encrypted: i=1; AJvYcCXkrpm/3wwDSLXq7BadwJTu5Ow0l4WwmbIRGpE6YvnnYIBEoGOMoWzil23Ajh9wLl7e6nvTDVmJ9o8=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yzrxh39PpSMQd1o4kG3sg09yeHmBz7oP3D2CFPkGG3EEMQa9Ioq
	XaMMYqKPgUTv13bfiUeyjQeRFOZivU8V2Lz8UqCKrMzGR3k5qo3S
X-Google-Smtp-Source: AGHT+IFLf2N3pZDFy1haUgm2evSakhySBHYo/D3BEMcu32whWXi4+IPp7XpoTtOj5xYDVKaDmTC9GA==
X-Received: by 2002:a17:907:cca3:b0:a9e:4b88:e02a with SMTP id a640c23a62f3a-a9e4b88e15bmr343302666b.0.1730385316015;
        Thu, 31 Oct 2024 07:35:16 -0700 (PDT)
Message-ID: <dd07060c2d19d7af92c0531a2d560d47b39fff0f.camel@gmail.com>
Subject: Re: [PATCH v2] xen/common: Move gic_preinit() to common code
From: oleksii.kurochko@gmail.com
To: Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	 <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Date: Thu, 31 Oct 2024 15:35:14 +0100
In-Reply-To: <c400bd0f-1360-45ea-bd29-bf7883debd93@amd.com>
References: 
	<e906b538aba684ab108cc70e8c60ed35ddfad74e.1730292286.git.oleksii.kurochko@gmail.com>
	 <6461a47f-759a-4138-970c-4e5f68b07bae@suse.com>
	 <c400bd0f-1360-45ea-bd29-bf7883debd93@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.54.1 (3.54.1-1.fc41app1) 
MIME-Version: 1.0

On Thu, 2024-10-31 at 11:29 +0100, Michal Orzel wrote:
>=20
>=20
> On 31/10/2024 10:34, Jan Beulich wrote:
> >=20
> >=20
> > On 30.10.2024 14:14, Oleksii Kurochko wrote:
> > > Introduce ic_preinit() in the common codebase, as it is not
> > > architecture-specific and can be reused by both PPC and RISC-V.
> > > This function identifies the node with the interrupt-controller
> > > property
> > > in the device tree and calls device_init() to handle
> > > architecture-specific
> > > initialization of the interrupt controller.
> > >=20
> > > Additionally, rename gic_acpi_preinit() to ic_acpi_preinit() as
> > > it is used
> > > by ic_preinit(), while keeping it defined in architecture-
> > > specific as this
> > > part is architecture-specific. In case if CONFIG_ACPI=3Dn a stub
> > > for
> > > ic_acpi_preinit() is provided. To declaration/defintion of
> > > ic_acpi_preint()
> > > is added `inline` to deal with the compilation issue:
> > > =C2=A0 error: 'ic_acpi_preinit' defined but not used [-Werror=3Dunuse=
d-
> > > function]
> > >=20
> > > Make minor adjustments compared to the original ARM
> > > implementation of
> > > gic_dt_preinit():
> > > =C2=A0- Remove the local rc variable in gic_dt_preinit() since it is
> > > only used once.
> > > =C2=A0- Change the prefix from gic to ic to clarify that the function
> > > is not
> > > =C2=A0=C2=A0 specific to ARM=E2=80=99s GIC, making it suitable for ot=
her
> > > architectures as well.
> > >=20
> > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > > ---
> > > Changes in v2:
> > > =C2=A0- Revert changes connected to moving of gic_acpi_preinit() to
> > > common code as
> > > =C2=A0=C2=A0 it isn't really architecture indepent part.
> > > =C2=A0- Update the commit message.
> > > =C2=A0- Move stub of ic_acpi_preinit() to <asm-generic/device.h> for
> > > the case when
> > > =C2=A0=C2=A0 CONFIG_ACPI=3Dn.
> > > ---
> > > =C2=A0xen/arch/arm/gic.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 | 45 +-------------------------
> > > -----
> > > =C2=A0xen/arch/arm/setup.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 3 ++-
> > > =C2=A0xen/common/device.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 | 46
> > > ++++++++++++++++++++++++++++++++
> > > =C2=A0xen/include/asm-generic/device.h | 10 +++++++
> > > =C2=A04 files changed, 59 insertions(+), 45 deletions(-)
> >=20
> > Looks largely okay to me now, with a question and a nit at the
> > bottom. The
> > question is mainly to Arm folks, where the code is coming from, and
> > DT
> > maintainers: Is a file named device.c really an appropriate "home"
> > for
> > IC-related code? If IC is a common thing in the DT world, would
> > such code
> > maybe better live under common/device-tree/?
> I think we will have more interrupt related dt stuff common, so it
> would make sense to create
> device-tree/irq.c or intc.c.
>=20
> @Olku, can you please s/ic/intc/ ? It's much more common abbreviation
> for interrupt controller.
> You can do e.g. grep -Rw "ic" vs grep -Rw "intc" in Linux
> Documentation/devicetree/bindings/interrupt-controller.
Sure, intc sounds good to me.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 14:52:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 14:52:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828789.1243807 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6WWq-000601-7M; Thu, 31 Oct 2024 14:52:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828789.1243807; Thu, 31 Oct 2024 14:52: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 1t6WWq-0005zu-4V; Thu, 31 Oct 2024 14:52:04 +0000
Received: by outflank-mailman (input) for mailman id 828789;
 Thu, 31 Oct 2024 14:52: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=35SK=R3=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1t6WWp-0005zo-4H
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 14:52:03 +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 addd28df-9797-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 15:51:58 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5c9388a00cfso1223828a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 07:51:58 -0700 (PDT)
Received: from localhost ([217.156.233.154]) by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ceac7c932bsm640691a12.78.2024.10.31.07.51.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 07:51:56 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: addd28df-9797-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmUiLCJoZWxvIjoibWFpbC1lZDEteDUyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImFkZGQyOGRmLTk3OTctMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzg2MzE4LjY4Mjk0Miwic2VuZGVyIjoiYWxlamFuZHJvLnZhbGxlam9AY2xvdWQuY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1730386318; x=1730991118; darn=lists.xenproject.org;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=pOUjSVS/HCeU559kbjgkKk5OgsooeD04DRj1g81Nl/c=;
        b=WxzK6MZfr6i0Fl7uSB2G5QXzJb6bLtq3M+RuA5CJ4bsaEz3SlqasFrI4/UqkVMdUUl
         OUu32PQRB3jk1N+vR6gjSu9weFrGYzCGBzKQFLOfWOG9mTHIGnsDH9oTKEjL9Dyp7WJz
         IXTcOp++MbrM2YYl4GUklGLc8k5q+MjK0/Ukw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730386318; x=1730991118;
        h=in-reply-to:references:subject:cc:to:from:message-id:date
         :content-transfer-encoding:mime-version:x-gm-message-state:from:to
         :cc:subject:date:message-id:reply-to;
        bh=pOUjSVS/HCeU559kbjgkKk5OgsooeD04DRj1g81Nl/c=;
        b=YOcAb7yjbfTOEqm6UOkR7krgN1ooi4UTDIuivNPtP6UiDyqN+nLrGQHZxZB69gZsKe
         L6zhmegcoAlvrh2vNWxZHKUqn9QHLCpEGNChGkuH13xDBdFt3AsyU0LYL+bKy9ET45zR
         jeSO0Ie0cVGBNlb4Y64M1818pWsXlMgXPDJfYWf9Vxq6ZedYzbZM2m0DmtYrPleq8frs
         UjJi1vVGzLgUZRPVNk+iJrZMGVuVXJ7kdZL8hQChoScTv4PD6mSiLVVZR2qYtcEglmJO
         WZwLh1Gjf55xg4XtDxR2na8tWhqBZnkFbvbp34uWzCQc54Y8hEea7oIV5saNs8ajLhh1
         8HhQ==
X-Forwarded-Encrypted: i=1; AJvYcCVoX/OxEU0ZmUIaiIN1h1H3HxY1mzIfo53aAH1nwhoma9K2irwADyIqeUShBAI9rGQJDXIwcPIzp6c=@lists.xenproject.org
X-Gm-Message-State: AOJu0Ywc6G9fzOynXh06NXIDOtaWdDVBuBqP4y7TYWOzwgdavfykZUSa
	ehRJoPDPbTzMG5t/78hTUu/NW4q2y9XGc7IIyckkVSuHuMHrYdFgl1MPBT+IvEM=
X-Google-Smtp-Source: AGHT+IH3KWdZcikgQ/hfCdfsc0D2b58c38dSDKr3MqWV3ltAuUw3rZnZsVlDY4hbyvP1iq94RjXy0Q==
X-Received: by 2002:a05:6402:2114:b0:5c9:37b5:1090 with SMTP id 4fb4d7f45d1cf-5cbbf8a2716mr14103409a12.9.1730386317420;
        Thu, 31 Oct 2024 07:51:57 -0700 (PDT)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Thu, 31 Oct 2024 14:51:53 +0000
Message-Id: <D5A2R6GG6WP3.15A2Z1QLB1KFJ@cloud.com>
From: "Alejandro Vallejo" <alejandro.vallejo@cloud.com>
To: "Teddy Astie" <teddy.astie@vates.tech>, <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>, "Paul Durrant" <paul@xen.org>
Subject: Re: [XEN PATCH] x86/hvm: Use constants for x86 modes
X-Mailer: aerc 0.18.2
References: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@vates.tech>
In-Reply-To: <0ffcb0031eaa095b5864735d2f9edbe1d374e009.1730380434.git.teddy.astie@vates.tech>

On Thu Oct 31, 2024 at 1:27 PM GMT, Teddy Astie wrote:
> In many places of x86 HVM code, constants integer are used to indicate in=
 what mode is
> running the CPU (real, v86, 16-bits, 32-bits, 64-bits). However, these co=
nstants are
> are written directly as integer which hides the actual meaning of these m=
odes.

Ew. Good riddance. Just a couple of nits...

>
> This patch introduces X86_MODE_* macros and replace those occurences with=
 it.
>
> Signed-off-by Teddy Astie <teddy.astie@vates.tech>
> ---
> I am not sure of other places that uses these integer constants.
> ---
>  xen/arch/x86/hvm/emulate.c           | 16 ++++++++--------
>  xen/arch/x86/hvm/hypercall.c         | 13 +++++++------
>  xen/arch/x86/hvm/viridian/viridian.c |  9 +++++----
>  xen/arch/x86/hvm/vmx/vmx.c           |  9 +++++----
>  xen/arch/x86/hvm/vmx/vvmx.c          |  5 +++--
>  xen/arch/x86/include/asm/hvm/hvm.h   |  6 ++++++
>  6 files changed, 34 insertions(+), 24 deletions(-)
>
> diff --git a/xen/arch/x86/hvm/emulate.c b/xen/arch/x86/hvm/emulate.c
> index ecf83795fa..60a7c15bdc 100644
> --- a/xen/arch/x86/hvm/emulate.c
> +++ b/xen/arch/x86/hvm/emulate.c
> @@ -2433,14 +2433,14 @@ static void cf_check hvmemul_put_fpu(
>
>          switch ( mode )
>          {
> -        case 8:
> +        case X86_MODE_64BIT:
>              fpu_ctxt->fip.addr =3D aux->ip;
>              if ( dval )
>                  fpu_ctxt->fdp.addr =3D aux->dp;
>              fpu_ctxt->x[FPU_WORD_SIZE_OFFSET] =3D 8;
>              break;
>
> -        case 4: case 2:
> +        case X86_MODE_32BIT: case X86_MODE_16BIT:
                               ^
                               |
nit: Good time to add newline here...

>              fpu_ctxt->fip.offs =3D aux->ip;
>              fpu_ctxt->fip.sel  =3D aux->cs;
>              if ( dval )
> @@ -2451,7 +2451,7 @@ static void cf_check hvmemul_put_fpu(
>              fpu_ctxt->x[FPU_WORD_SIZE_OFFSET] =3D mode;
>              break;
>
> -        case 0: case 1:
> +        case X86_MODE_REAL: case X86_MODE_V86:
                              ^
                              |
          +-------------------+
          |
... and here.

>              fpu_ctxt->fip.addr =3D aux->ip | (aux->cs << 4);
>              if ( dval )
>                  fpu_ctxt->fdp.addr =3D aux->dp | (aux->ds << 4);
> @@ -2952,11 +2952,11 @@ static const char *guest_x86_mode_to_str(int mode=
)
>  {
>      switch ( mode )
>      {
> -    case 0:  return "Real";
> -    case 1:  return "v86";
> -    case 2:  return "16bit";
> -    case 4:  return "32bit";
> -    case 8:  return "64bit";
> +    case X86_MODE_REAL:  return "Real";
> +    case X86_MODE_V86:  return "v86";
> +    case X86_MODE_16BIT:  return "16bit";
> +    case X86_MODE_32BIT:  return "32bit";
> +    case X86_MODE_64BIT:  return "64bit";
>      default: return "Unknown";
>      }
>  }
> diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
> index 81883c8d4f..e0e9bcd22d 100644
> --- a/xen/arch/x86/hvm/hypercall.c
> +++ b/xen/arch/x86/hvm/hypercall.c
> @@ -11,6 +11,7 @@
>  #include <xen/ioreq.h>
>  #include <xen/nospec.h>
>
> +#include <asm/hvm/hvm.h>
>  #include <asm/hvm/emulate.h>
>  #include <asm/hvm/support.h>
>  #include <asm/hvm/viridian.h>
> @@ -112,23 +113,23 @@ int hvm_hypercall(struct cpu_user_regs *regs)
>
>      switch ( mode )
>      {
> -    case 8:
> +    case X86_MODE_64BIT:
>          eax =3D regs->rax;
>          fallthrough;
> -    case 4:
> -    case 2:
> +    case X86_MODE_32BIT:
> +    case X86_MODE_16BIT:
>          if ( currd->arch.monitor.guest_request_userspace_enabled &&
>              eax =3D=3D __HYPERVISOR_hvm_op &&
> -            (mode =3D=3D 8 ? regs->rdi : regs->ebx) =3D=3D HVMOP_guest_r=
equest_vm_event )
> +            (mode =3D=3D X86_MODE_64BIT ? regs->rdi : regs->ebx) =3D=3D =
HVMOP_guest_request_vm_event )
>              break;
>
>          if ( likely(!hvm_get_cpl(curr)) )
>              break;
>          fallthrough;
> -    default:
> +    case X86_MODE_V86:
>          regs->rax =3D -EPERM;
>          return HVM_HCALL_completed;
> -    case 0:
> +    case X86_MODE_REAL:
>          break;
>      }
>
> diff --git a/xen/arch/x86/hvm/viridian/viridian.c b/xen/arch/x86/hvm/viri=
dian/viridian.c
> index 21480d9ee7..0e3b824bf0 100644
> --- a/xen/arch/x86/hvm/viridian/viridian.c
> +++ b/xen/arch/x86/hvm/viridian/viridian.c
> @@ -16,6 +16,7 @@
>  #include <asm/paging.h>
>  #include <asm/p2m.h>
>  #include <asm/apic.h>
> +#include <asm/hvm/hvm.h>
>  #include <public/sched.h>
>  #include <public/hvm/hvm_op.h>
>
> @@ -933,13 +934,13 @@ int viridian_hypercall(struct cpu_user_regs *regs)
>
>      switch ( mode )
>      {
> -    case 8:
> +    case X86_MODE_64BIT:
>          input.raw =3D regs->rcx;
>          input_params_gpa =3D regs->rdx;
>          output_params_gpa =3D regs->r8;
>          break;
>
> -    case 4:
> +    case X86_MODE_32BIT:
>          input.raw =3D (regs->rdx << 32) | regs->eax;
>          input_params_gpa =3D (regs->rbx << 32) | regs->ecx;
>          output_params_gpa =3D (regs->rdi << 32) | regs->esi;
> @@ -1038,11 +1039,11 @@ int viridian_hypercall(struct cpu_user_regs *regs=
)
>
>      switch ( mode )
>      {
> -    case 8:
> +    case X86_MODE_64BIT:
>          regs->rax =3D output.raw;
>          break;
>
> -    case 4:
> +    case X86_MODE_32BIT:
>          regs->rdx =3D output.raw >> 32;
>          regs->rax =3D (uint32_t)output.raw;
>          break;
> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
> index 12f8a66458..b77f135a2d 100644
> --- a/xen/arch/x86/hvm/vmx/vmx.c
> +++ b/xen/arch/x86/hvm/vmx/vmx.c
> @@ -886,14 +886,15 @@ int cf_check vmx_guest_x86_mode(struct vcpu *v)
>      unsigned long cs_ar_bytes;
>
>      if ( unlikely(!(v->arch.hvm.guest_cr[0] & X86_CR0_PE)) )
> -        return 0;
> +        return X86_MODE_REAL;
>      if ( unlikely(guest_cpu_user_regs()->eflags & X86_EFLAGS_VM) )
> -        return 1;
> +        return X86_MODE_V86;
>      __vmread(GUEST_CS_AR_BYTES, &cs_ar_bytes);
>      if ( hvm_long_mode_active(v) &&
>           likely(cs_ar_bytes & X86_SEG_AR_CS_LM_ACTIVE) )
> -        return 8;
> -    return (likely(cs_ar_bytes & X86_SEG_AR_DEF_OP_SIZE) ? 4 : 2);
> +        return X86_MODE_64BIT;
> +    return (likely(cs_ar_bytes & X86_SEG_AR_DEF_OP_SIZE)
> +            ? X86_MODE_32BIT : X86_MODE_16BIT);
>  }
>
>  static void vmx_save_dr(struct vcpu *v)
> diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
> index c05e0e9326..5032fc3a45 100644
> --- a/xen/arch/x86/hvm/vmx/vvmx.c
> +++ b/xen/arch/x86/hvm/vmx/vvmx.c
> @@ -411,7 +411,7 @@ static int decode_vmx_inst(struct cpu_user_regs *regs=
,
>      }
>      else
>      {
> -        bool mode_64bit =3D (vmx_guest_x86_mode(v) =3D=3D 8);
> +        bool mode_64bit =3D (vmx_guest_x86_mode(v) =3D=3D X86_MODE_64BIT=
);
>
>          decode->type =3D VMX_INST_MEMREG_TYPE_MEMORY;
>
> @@ -2073,7 +2073,8 @@ int nvmx_handle_vmx_insn(struct cpu_user_regs *regs=
, unsigned int exit_reason)
>
>      if ( !(curr->arch.hvm.guest_cr[4] & X86_CR4_VMXE) ||
>           !nestedhvm_enabled(curr->domain) ||
> -         (vmx_guest_x86_mode(curr) < (hvm_long_mode_active(curr) ? 8 : 2=
)) ||
> +         (vmx_guest_x86_mode(curr) < (hvm_long_mode_active(curr) ? X86_M=
ODE_64BIT
> +                                                                 : X86_M=
ODE_16BIT)) ||
>           (exit_reason !=3D EXIT_REASON_VMXON && !nvmx_vcpu_in_vmx(curr))=
 )
>      {
>          hvm_inject_hw_exception(X86_EXC_UD, X86_EVENT_NO_EC);
> diff --git a/xen/arch/x86/include/asm/hvm/hvm.h b/xen/arch/x86/include/as=
m/hvm/hvm.h
> index dd7d4872b5..29ae23617e 100644
> --- a/xen/arch/x86/include/asm/hvm/hvm.h
> +++ b/xen/arch/x86/include/asm/hvm/hvm.h
> @@ -26,6 +26,12 @@ extern bool opt_hvm_fep;
>  #define opt_hvm_fep 0
>  #endif
>
> +#define X86_MODE_REAL  0
> +#define X86_MODE_V86   1
> +#define X86_MODE_16BIT 2
> +#define X86_MODE_32BIT 4
> +#define X86_MODE_64BIT 8
> +
>  /* Interrupt acknowledgement sources. */
>  enum hvm_intsrc {
>      hvm_intsrc_none,
> --
> 2.45.2
>
>
>
> Teddy Astie | Vates XCP-ng Intern
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech

Cheers,
Alejandro



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 15:13:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 15:13:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828798.1243818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6WrN-0001vG-PQ; Thu, 31 Oct 2024 15:13:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828798.1243818; Thu, 31 Oct 2024 15:13: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 1t6WrN-0001v9-Lo; Thu, 31 Oct 2024 15:13:17 +0000
Received: by outflank-mailman (input) for mailman id 828798;
 Thu, 31 Oct 2024 15:13: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=khX/=R3=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1t6WrL-0001v3-QB
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 15:13:15 +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 a5614424-979a-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 16:13:12 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-539f72c8fc1so1703924e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 08:13:12 -0700 (PDT)
Received: from [192.168.219.191] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-53c7bc9c0c1sm228985e87.83.2024.10.31.08.13.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 08:13:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5614424-979a-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjoxMjkiLCJoZWxvIjoibWFpbC1sZjEteDEyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImE1NjE0NDI0LTk3OWEtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzg3NTkyLjc4NzYyOSwic2VuZGVyIjoib2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1730387592; x=1730992392; 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=SL9vP7h9ip4kRGIaeQR0/0WvXyehZaWuO9a0+ofZJvU=;
        b=ZU7JSFHPFv3JKXTL7/Jitam6UoCS9R8C78CFl+mS1yUvDkmO/vpMXXV3A3pnknZPXq
         ozgHr6tmkag16F0XwsAOx9fmcs/NL3BmbiuOuxeADjQLovsCjxMZYrUTVy6S6A1ig8yy
         lvsUvKfsbLFCY7Aj49mNygzf9PjppIF3DxIXD1YfsEnMnyLqJwBxnoLE8AwgLK/cwyut
         GhC7U9C6uJcI+LG538yNmFTvmWs7DobKgyDjemdTLs/VKPUpTAHANqVZJS3GoF/5gmdj
         n9uyfhqmp+1eDvoZd2tM4xkv+OQx0IYkW1A3A/5WAv0n4/ZWxMum9hjqcMh90LmHmmt0
         Hnmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730387592; x=1730992392;
        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=SL9vP7h9ip4kRGIaeQR0/0WvXyehZaWuO9a0+ofZJvU=;
        b=fSn9ZARjShdmfsVUy11CEtxF6sOHLd+k0+zqKsgEkaoqH2pIRBm0AcEgJl/p3XkDMW
         PrcaV8h/A6YqPJeQxbLNiyGOKI27oeynyqNrr6cjNm4a771GVisQa+C7fAHKcfae24K+
         tNfvC3NpbTraLH4/F1zoDZLvnLUmERzG+PYRrKNvasZ3iaONWmDqzVnyStnzCebqnRP+
         9Xcrra95xp4Csd88oIJyPAORfDdYYooXPloDRnG12qtCvxE6bjsy129sycTs/d3wDVa1
         xcEnwVEwLowj0aedCNEkWelSn2WpbW5SwcoejkdfbsnK+6moVNHmkXzPpJubkVmhrXzy
         AUQA==
X-Forwarded-Encrypted: i=1; AJvYcCVIaK2EkA1FZgqu6SYLjZBk42y3RjhFtls6egy4reb14jpulL2HTlH8beq6/ivZ8a6T/nPKDZeXne8=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxFf7wuKBG0xzZy5i+h6u4CCqMTbEl2k8jXCfpGjdO17m0F2xWO
	5X1CbqNfgQgdTvJgOyuEViPnvJBH2kN6YLEOpaxnNEUfI3PIwsnU
X-Google-Smtp-Source: AGHT+IEzTxWPe3QeIxSPGRNNx0G5ebem+beK7CJPU+dyq1o5pAI8R5DVUHP1NRd1XtEPkqv/z/VeIA==
X-Received: by 2002:a05:6512:3d89:b0:539:ee0a:4f8f with SMTP id 2adb3069b0e04-53b7ed18669mr4090460e87.44.1730387592019;
        Thu, 31 Oct 2024 08:13:12 -0700 (PDT)
Message-ID: <5f4b8ed66e38475470cb80f04c470e12b6cb2a2e.camel@gmail.com>
Subject: Re: [PATCH v2] xen/common: Move gic_preinit() to common code
From: oleksii.kurochko@gmail.com
To: Michal Orzel <michal.orzel@amd.com>, Jan Beulich <jbeulich@suse.com>, 
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	 <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Date: Thu, 31 Oct 2024 16:13:10 +0100
In-Reply-To: <c400bd0f-1360-45ea-bd29-bf7883debd93@amd.com>
References: 
	<e906b538aba684ab108cc70e8c60ed35ddfad74e.1730292286.git.oleksii.kurochko@gmail.com>
	 <6461a47f-759a-4138-970c-4e5f68b07bae@suse.com>
	 <c400bd0f-1360-45ea-bd29-bf7883debd93@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.54.1 (3.54.1-1.fc41app1) 
MIME-Version: 1.0

On Thu, 2024-10-31 at 11:29 +0100, Michal Orzel wrote:
>=20
>=20
> On 31/10/2024 10:34, Jan Beulich wrote:
> >=20
> >=20
> > On 30.10.2024 14:14, Oleksii Kurochko wrote:
> > > Introduce ic_preinit() in the common codebase, as it is not
> > > architecture-specific and can be reused by both PPC and RISC-V.
> > > This function identifies the node with the interrupt-controller
> > > property
> > > in the device tree and calls device_init() to handle
> > > architecture-specific
> > > initialization of the interrupt controller.
> > >=20
> > > Additionally, rename gic_acpi_preinit() to ic_acpi_preinit() as
> > > it is used
> > > by ic_preinit(), while keeping it defined in architecture-
> > > specific as this
> > > part is architecture-specific. In case if CONFIG_ACPI=3Dn a stub
> > > for
> > > ic_acpi_preinit() is provided. To declaration/defintion of
> > > ic_acpi_preint()
> > > is added `inline` to deal with the compilation issue:
> > > =C2=A0 error: 'ic_acpi_preinit' defined but not used [-Werror=3Dunuse=
d-
> > > function]
> > >=20
> > > Make minor adjustments compared to the original ARM
> > > implementation of
> > > gic_dt_preinit():
> > > =C2=A0- Remove the local rc variable in gic_dt_preinit() since it is
> > > only used once.
> > > =C2=A0- Change the prefix from gic to ic to clarify that the function
> > > is not
> > > =C2=A0=C2=A0 specific to ARM=E2=80=99s GIC, making it suitable for ot=
her
> > > architectures as well.
> > >=20
> > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > > ---
> > > Changes in v2:
> > > =C2=A0- Revert changes connected to moving of gic_acpi_preinit() to
> > > common code as
> > > =C2=A0=C2=A0 it isn't really architecture indepent part.
> > > =C2=A0- Update the commit message.
> > > =C2=A0- Move stub of ic_acpi_preinit() to <asm-generic/device.h> for
> > > the case when
> > > =C2=A0=C2=A0 CONFIG_ACPI=3Dn.
> > > ---
> > > =C2=A0xen/arch/arm/gic.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 | 45 +-------------------------
> > > -----
> > > =C2=A0xen/arch/arm/setup.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 3 ++-
> > > =C2=A0xen/common/device.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 | 46
> > > ++++++++++++++++++++++++++++++++
> > > =C2=A0xen/include/asm-generic/device.h | 10 +++++++
> > > =C2=A04 files changed, 59 insertions(+), 45 deletions(-)
> >=20
> > Looks largely okay to me now, with a question and a nit at the
> > bottom. The
> > question is mainly to Arm folks, where the code is coming from, and
> > DT
> > maintainers: Is a file named device.c really an appropriate "home"
> > for
> > IC-related code? If IC is a common thing in the DT world, would
> > such code
> > maybe better live under common/device-tree/?
> I think we will have more interrupt related dt stuff common, so it
> would make sense to create
> device-tree/irq.c or intc.c.
What about the part of the code in common/device.c:
   void __init ic_preinit(void)
   {
       if ( acpi_disabled )
           ic_dt_preinit();
       else
           ic_acpi_preinit();
   }
  =20
Should it be also moved to device-tree/intc.c even ic_acpi_preinit() is
used?

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 15:21:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 15:21:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828804.1243828 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6WzB-00041h-Ga; Thu, 31 Oct 2024 15:21:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828804.1243828; Thu, 31 Oct 2024 15: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 1t6WzB-00041a-DD; Thu, 31 Oct 2024 15:21:21 +0000
Received: by outflank-mailman (input) for mailman id 828804;
 Thu, 31 Oct 2024 15:21: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6WzA-00041S-BR
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 15:21:20 +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 c38d3564-979b-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 16:21:14 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a9a6b4ca29bso115865866b.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 08:21:12 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e56681a76sm78639166b.199.2024.10.31.08.21.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 08:21:11 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c38d3564-979b-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MjkiLCJoZWxvIjoibWFpbC1lajEteDYyOS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImMzOGQzNTY0LTk3OWItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzg4MDc0LjM3Mjg1Miwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730388072; x=1730992872; 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=RJyJO+PLd+miWz+ijNCQm/KfKDxzP2ktblu2wMgxkxU=;
        b=VTFBnaVekGuMRx9qtVG6eoFE4w0egY8kkCth0eXGf7EQCVoSXkprsTL2WGwlLZSqNi
         UOVHyGKq5rtS+TX+0/Oua0AgZ+Z6S4cPjarAiOYYTL3azllZ4MZwsaJVFw9P6rREPD/2
         8HWmK1HjxlvebtOPVEJ4gdjv/aROHnBuvPRRM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730388072; x=1730992872;
        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=RJyJO+PLd+miWz+ijNCQm/KfKDxzP2ktblu2wMgxkxU=;
        b=pqNg6y26deP72FfU3oq9h+ecF2wodrEXmnXejF8CmBa6ckwKozyiTknNDef5p5c3/9
         tY2tO5F5MQL+ZYsKuueMLsZWURFWrLAPUf8Cwez0XKbepylru2ZiinyO5UlyHDlXNhqS
         yc6RUoCr4QztcNaJO8zI8RN09wVfmQA/dvmltpKCjLVjVgFhJQIpLkWJrB4f1JQY5NDL
         nN0x0yIkT6Inm+4gublEr2qxhfuUKNxbCBkPwgJvIieLG5ihWqs53BDTuCVxW+6z/zBo
         khB3bSKpbRXZumBlaqrgQmQnpNd8OWpHe+20vnwUtnNbwCAI1tgmIETXtqcwVni7qmHS
         GFUw==
X-Forwarded-Encrypted: i=1; AJvYcCXPk57NfQVaio3cULU2fmgaGQItU+AO2nAy+zkQuFHygjMioHJ4jIrEZS3j3eVXKhkQTtOFKvkMmhM=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yx2ObpedyAF0YL905NykdzqwTuUJDJRpAT9fLxG8Y93Znl1hUKN
	tRutW7ZXu6eruLMR60No7PXVUC2C8CdlUPOi58ZgE+593QJ+odLyKQuYEukRXOg=
X-Google-Smtp-Source: AGHT+IFrJdGx8j9gM+spW064VzqnyKXcezTxa2dx58yD31LGsHzhsZQrhpU5QijUmI0xesq84EkLCQ==
X-Received: by 2002:a17:907:72c4:b0:a9a:f82:7712 with SMTP id a640c23a62f3a-a9e50b672abmr317935466b.52.1730388072389;
        Thu, 31 Oct 2024 08:21:12 -0700 (PDT)
Message-ID: <a95f47b4-27e7-4d03-8be7-f2b7a1991092@citrix.com>
Date: Thu, 31 Oct 2024 15:21:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.19] Config: Update MiniOS revision
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Jan Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20241030180332.2726909-1-andrew.cooper3@citrix.com>
 <a76d84a3-d150-4836-8ad2-ee0eeabe557b@suse.com>
 <c84ef564-98de-451d-af4e-04e824231ea6@citrix.com>
 <701da657-a709-4c2b-908f-2bfe193948ca@suse.com>
 <9ad2c3b7-ef2a-4888-a24f-77aebfedb6fe@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <9ad2c3b7-ef2a-4888-a24f-77aebfedb6fe@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 10:24 am, Andrew Cooper wrote:
> On 31/10/2024 10:02 am, Jan Beulich wrote:
>> On 31.10.2024 10:46, Andrew Cooper wrote:
>>> On 31/10/2024 9:25 am, Jan Beulich wrote:
>>>> On 30.10.2024 19:03, Andrew Cooper wrote:
>>>>> A new branch from xen-RELEASE-4.19.0, for now containing commit
>>>>> a400dd517068 ("Add missing symbol exports for grub-pv").
>>>>>
>>>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>>>> ---
>>>>> CC: Juergen Gross <jgross@suse.com>
>>>>> CC: Jan Beulich <JBeulich@suse.com>
>>>>> CC: Stefano Stabellini <sstabellini@kernel.org>
>>>>> CC: Julien Grall <julien@xen.org>
>>>>> ---
>>>>>  Config.mk | 2 +-
>>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/Config.mk b/Config.mk
>>>>> index 03a89624c77f..aa3d5843f1ed 100644
>>>>> --- a/Config.mk
>>>>> +++ b/Config.mk
>>>>> @@ -224,7 +224,7 @@ QEMU_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/qemu-xen.git
>>>>>  QEMU_UPSTREAM_REVISION ?= qemu-xen-4.19.0
>>>>>  
>>>>>  MINIOS_UPSTREAM_URL ?= https://xenbits.xen.org/git-http/mini-os.git
>>>>> -MINIOS_UPSTREAM_REVISION ?= xen-RELEASE-4.19.0
>>>>> +MINIOS_UPSTREAM_REVISION ?= xen-stable-4.19
>>>> Wouldn't we better use a hash here, like we do on staging? There had been
>>>> cases where it wasn't safe for the used commit to move "automatically", and
>>>> the same could occur on a stable branch. The hash would then be replaced by
>>>> a release tag when a release is being prepared (again like on staging).
>>> It will only be getting build fixes, not new content.  So it will be
>>> stable-enough in that regard.
>> Hmm, can we really expect it to only ever be build fixes, not fixes of any
>> other kind (which then may have dependencies)? Jürgen, Samuel, what's your
>> take?
> The reason I needed to make a branch (and I've got 4.18 (shared with
> 4.17) and 4.16 also queued up) is to avoid taking intermediate changes
> while backporting a build fix.
>
> The last time this happened was Xen 4.6.
>
> The reasoning would be different if we backported new features, but we
> don't as a matter of course.

The failure to make git-checkout.sh work with branches forces an answer
here.  I'm going to need to use full SHA.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 16:17:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 16:17:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828824.1243841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Xqv-0004uH-Ix; Thu, 31 Oct 2024 16:16:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828824.1243841; Thu, 31 Oct 2024 16:16: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 1t6Xqv-0004uA-GN; Thu, 31 Oct 2024 16:16:53 +0000
Received: by outflank-mailman (input) for mailman id 828824;
 Thu, 31 Oct 2024 16:16: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=E5d+=R3=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1t6Xqt-0004tc-NA
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 16:16:51 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on2060d.outbound.protection.outlook.com
 [2a01:111:f403:2416::60d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8527f84e-97a3-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 17:16:45 +0100 (CET)
Received: from PH8PR12MB7326.namprd12.prod.outlook.com (2603:10b6:510:216::7)
 by BL3PR12MB9052.namprd12.prod.outlook.com (2603:10b6:208:3bb::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.20; Thu, 31 Oct
 2024 16:16:40 +0000
Received: from PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264]) by PH8PR12MB7326.namprd12.prod.outlook.com
 ([fe80::6d76:9c33:d230:8264%6]) with mapi id 15.20.8093.027; Thu, 31 Oct 2024
 16:16: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>
X-Inumbo-ID: 8527f84e-97a3-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjQxNjo6NjBkIiwiaGVsbyI6Ik5BTTExLUNPMS1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6Ijg1MjdmODRlLTk3YTMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzkxNDA1LjU4OTcwNiwic2VuZGVyIjoiYXlhbi5rdW1hci5oYWxkZXJAYW1kLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=bbiLlGXejenp8xQHMkT/WmUpJfasMM50Chdyk3FlKXcfsANJ3mMWUUkEizCL2saoBEOBNSRKxGNqscGZHZL0qci6DqoBMf38MEQbC4KCYomKjhNEjj8zzLKoIn9v7bjQqnPy3rz74cSc3zhraR+vpAMNBxWN9Bhf/hx9htbrKClElyWmLVemc4etATuPqnwzMMlRqe69Ssvx8km+NvOHV8tPkGV+zWGI/rOvPJZ4nZUKPjqu4z0W9bEYYdaQS54ymDq+gfgEIMKikKSkjKKu9eeoANHRon6keuYphEMBIGfAff0kO4Ww72IEvzQkYCd7Uv3eLJpwMTQ7tefaJ57ajQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=oK5ePHj6R+IDnWymbnFgCkGrzL2PdFwud30AGjWldYQ=;
 b=DJnCvaQlpKfYbkL7OjdmmJX9dG7iJNx6d7GhOZakYylG+uvYrCRkCjPeMucJ7+QKH477TOpHubK/TBbSSPg9H5pbKqQyJUWtqKf/tK9m5lOEHTqAW7O7wwFJYCG4Sd+R3zDIGFNbkPyqiioNgrlCDr7RCjn9u+vEks8DEEMWlowUwXZzQcQGsQw8ac4rU2mm0Vwkrdf9zCiN2XAkM20Zb5fjn/+mdg5ieSIhsPoTFiMPTaGKqFEV9dVAmvtWUGOx/4gjnCoLnwpAzHUL0nmINYj4+IGNZZyGGxSL37kj1NDwGtw/mS9QGzPJKbCUoM6zh60zN1MaoX6Vt0uBUrfHBg==
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=oK5ePHj6R+IDnWymbnFgCkGrzL2PdFwud30AGjWldYQ=;
 b=g8dElTVhvuK3phNToM6WQflhwVPH+lIKyHY4BGl2kbGA7XfukEOoCJE5SBWUTKMzxQ9l5WoxaW4f6A5tZ3345tNj7X41rWvrF/Yv4nzQ9Nfgl8UEpI58nhWkvaOIydf7XIvNPTMo9AbH9cgWaYpanmgv65Xm/KShytDSifa3QNE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <dc16b377-bf99-4afb-87fa-2bc45cdfa62d@amd.com>
Date: Thu, 31 Oct 2024 16:16:35 +0000
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 4/6] xen/arm: mpu: Create boot-time MPU protection
 regions
Content-Language: en-GB
To: Luca Fancellu <Luca.Fancellu@arm.com>, Julien Grall <julien@xen.org>
Cc: Julien Grall <julien.grall.oss@gmail.com>,
 Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
 "xen-devel@lists.xenproject.org" <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>
References: <20241028124547.1371867-1-ayan.kumar.halder@amd.com>
 <20241028124547.1371867-5-ayan.kumar.halder@amd.com>
 <FE41FD6C-EBCE-4EDA-ADD4-E09A58773763@arm.com>
 <CAJ=z9a1d2vzXh-fK5E2z-k4SOjE0cjJUGfFnaJiobvQpS+Y5Rw@mail.gmail.com>
 <3963FE44-9ED1-4462-BD42-DA1B1A5040C5@arm.com>
 <8ee005f3-baf7-408a-b084-833475ced50d@xen.org>
 <19C963C9-97C2-442D-B9AC-9CE7CF3B50F2@arm.com>
From: Ayan Kumar Halder <ayankuma@amd.com>
In-Reply-To: <19C963C9-97C2-442D-B9AC-9CE7CF3B50F2@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: LO4P123CA0055.GBRP123.PROD.OUTLOOK.COM
 (2603:10a6:600:153::6) To PH8PR12MB7326.namprd12.prod.outlook.com
 (2603:10b6:510:216::7)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH8PR12MB7326:EE_|BL3PR12MB9052:EE_
X-MS-Office365-Filtering-Correlation-Id: 53859b3a-2dc3-4b45-0c3d-08dcf9c766c7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?Mld1NGdhYXNtR1BHTFZmazdnQU85TlFFSTducFhtQ0hrK3RtY1hXcjZnekYy?=
 =?utf-8?B?Z1hPQWZqNm85R1BVdlZXSlZLcnNFWWU3bWxlVnFsaFAzNktvREhXOW11QWdw?=
 =?utf-8?B?U3BWblJtOW5zT0ZQbGc4d1QwNXBUT24yZVNYK0lOZFIyeWVoak4raEw0azFB?=
 =?utf-8?B?RDhkNWlCV0gvTnlHaWxDVzk0aVA4Tzd6bWpzaERab1pQTzlkY2hsTjJEMFpE?=
 =?utf-8?B?OEpnemphbHNGNm5hMldXSUNBNmI2S3QwUm5oWC9sL3J2RlY3Wi9MazlOWTVZ?=
 =?utf-8?B?S0M5SzMxZ01YWWNuUHFodzBianNuRVl0R1R0dWRYVTBXREpVSnZoUXlmby9O?=
 =?utf-8?B?QlhjV2NhLzlKYnhzdTE3Y2prYVZqZGRoSm5DaXpCMkYyQkExRWNqaC9VYXIz?=
 =?utf-8?B?RElTVlZySXF6K29wVG5PaGN6UXhRWmh2NGd5dUZHbVZqTy9wcUdhQVNFQ1pt?=
 =?utf-8?B?RXhEWXNvSWZld0hBYkJhb2ZJZWQrWDNqL29yNU5obEpKNXcyZGlVOGdxN3Az?=
 =?utf-8?B?SjBpTHdLbS9EcjBVa0dvS0t0amF6L0FISjhaN29wN1VoVkcvREU5TG1FQ2dy?=
 =?utf-8?B?RDdKWGFVYUtBUmVIbEZHVXpCSUQ4dG13b0I2TDVzNFJCQ1p4YkQzekZZUW9E?=
 =?utf-8?B?NmNid2liaHI3TDgxVGczRUxjeW05RmhmVk15SW15Yk83cjJNL3lkUENrQ0c1?=
 =?utf-8?B?RnBlUlVEeTlka1psNUx6eno0Wi8vS3YzUzdyUWwzbUk4aUNwMFJ6WFd0YUx3?=
 =?utf-8?B?YUlTenQ2TGdZamhlYzVYNjVMdXRlM2JaeXF6SjBFQ0JDZ0hObzBBcFllR2E3?=
 =?utf-8?B?T2M4clN1alZJejFyNG9nR2lISEJkdVRjSGlXZys1RTloNzRoOFp5dTJ6bi9y?=
 =?utf-8?B?MXVweUppWjBtUkx3L3E1dHJ3bEpFYWFORUNaMWNMMFl1ZUY5RHpEL2RXcHVX?=
 =?utf-8?B?RmlnN0FFc2t2Vno4bkJNYjlNR2VYbG5QSFVSZnpCRzdwUEVmWDcvci9ITzZu?=
 =?utf-8?B?enNteC84anRSY2ZrMnBMMTlRY01QOEcrSW9OYlZ2TERvaWQ0TkZVUXFlWE1q?=
 =?utf-8?B?bXM3SjJOK1FMVzBVSTJERzU4d3k2TnhwSU41VUlkdUxNTGF6WExiMnVFa2c1?=
 =?utf-8?B?d1MyTThra2tscGgxcEhXeGRiK21KMlVpcmw3bnpYb0RqZFh1WCtFdGV0TTBR?=
 =?utf-8?B?bW5JQy8xdG1WMThDV2pWd3p2Y2dDTXE5QmR6L3REMk9TTStyYURXSmpTcWJj?=
 =?utf-8?B?VksxMi90SmthY0VDOWhNUFpxSnQ0T2swTUJCbExWUUIwZEpQQXh2NHFqNzhV?=
 =?utf-8?B?TEhEa1ZoTDI0ck5wRkwzZTZFQkxWSGJzRmZJbFJ6SjlESFpJdk9XN1hRT1ls?=
 =?utf-8?B?VytNM2ZieE50SHVteGw3aVJWTGdOUEY1V254RnV0RzdPYmZ2RzRPODJRTnZN?=
 =?utf-8?B?NmFMbE93VXMwdmxHcG9ma0RWYldRYTkrTDA2dTNJa3MyZlRUbXgxbG9OSXpr?=
 =?utf-8?B?MW5TcFJtK0tCamV1V2ljeUJnaFA1QlhUejhrSDhjNmF1aUZMRmNBSnYySGRF?=
 =?utf-8?B?QVVjaVBnN2hOSEtLZnpYVVI4NnZXbVZtWXZUb2o3b1hzOGNhRVRISlNQWTZI?=
 =?utf-8?B?RTJKTWs4NDdkYWhqZXUrS1kzTUMyNndRVktUdFM4Q0ZxeFphNXdqb2ZHbllR?=
 =?utf-8?Q?VPxzOHDqT7bvVHycrBdq?=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH8PR12MB7326.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WFVGVDUxeWVoZm1qZ3NtTzcwMWlmU2ZrL09iLzVTdHIzeDFaRERCWXFTTkQv?=
 =?utf-8?B?STNlUzI3bkFqTFNQRU9wbUY5QjZnNEhXY0NVdzAwSnZYMjNISi92eGdVSDhY?=
 =?utf-8?B?Vi9sY25yT0JpSWxNRFVCbHc4cmlDRnZXbGhRdU5QcWdYRVN1UGlDdGJGSU42?=
 =?utf-8?B?aFllRnlESGxoV01ORTBHcUM1UHU2SUg5YSs4U1N5OGNja1Zwd1FVLy95dm1l?=
 =?utf-8?B?K0tyR0hzQTI3U1VyOWQrcUp5emhWTnFJek9uSU5pNG9LZUkxY1pjTXJQRkpZ?=
 =?utf-8?B?cUNPRzNJT2VCZXhueEtaOWpwT0dGYTdwV3RPY09TNUJHVit6NVNHMmk0ZnEy?=
 =?utf-8?B?aDdvY3ZPL3lGSEp6dkR0ci96RWxLY1pZVU4waUN1OTlJL0RTRE16TWpESmVC?=
 =?utf-8?B?clA1TFowR1lHdm1yRCt5Q1p5bGZuZGU4SUFqMVdRRXFCME9Td2pQL3RBQTRs?=
 =?utf-8?B?OFVYY1BmUlJmYzhvU200YmFiTkc2N1VseXNvRXdMNkxlb3V4dzRKVnMvQ0Vi?=
 =?utf-8?B?R3YrM2tDK1dqejBzK3dMMmt1WjhFb0IxNExtZk5CQ3NubHVtTnMxSmZLTmc2?=
 =?utf-8?B?N2tKNEowWDl3OVcyNjhMQWtRbklnVWxOZGt3bjl1b3dqZEJBeXdETW1ZaFd1?=
 =?utf-8?B?aW1EV1ltN3loekpNTjVzUjBySzk5N0tZMGRBSjhVRzhhY1NxTFlkQVdTSlFT?=
 =?utf-8?B?MzM4RUZ1Tmd6WWxOdjhmT3drWkZvYm5sSGJaWVk1YjNlMDJJNGhxY2wwdktG?=
 =?utf-8?B?eS9vVklZcTJSYzhkZmlKUHV1MU54K01XaEw2aURqZzZRaFVCTXZzczBqUzdR?=
 =?utf-8?B?aUdEU01rOVJESlFwTml3WENXVUFIcm5QcFcxeXVXbEJsZmwwT1hMOFF0Qzhv?=
 =?utf-8?B?ckZQbEIzWUZ0VklnVWZFOS9JeXFXUW1ES2toTDVlbzlXOTREWFcwaExKR2dX?=
 =?utf-8?B?eDZOQzA2eStBYS9vWGhVbDdUaHVjaEMyZnMrbmhPTGZHOVlrenlGcTkybjh4?=
 =?utf-8?B?RVlpS2pua0pnb0M2V0g5V3EyNzdkeW1vV1V0Y25VSytVSTdlZUllYjJ3R2RS?=
 =?utf-8?B?SXNHR0ZmSWk0dmZ5ZG5jamNOVmM5eXFUVjZxTzVBaDNkeCt4SHRYY3pZeitH?=
 =?utf-8?B?Unk4WmdDcC84bEgzc1JEMHRBZWN0MFE4RFlmZUxMNE1xdGdjUi94Z0kzZ2NQ?=
 =?utf-8?B?QXlGU0N1c1lQdGJzdmVaalVKblNBazJJYnBwQWtSYWVDVmUrYk0yYmVuYkpa?=
 =?utf-8?B?VU4zdHk2V0JVQk83UkszNmxESDZEV1ZxSHVOR2V3K2FDbllTZmJyNyt5WnY3?=
 =?utf-8?B?RGpTakhOTVBJZFRUTElDNzNpWHJ6U0lQbVRvbk55Q2Q3aitLWW9hL0pvTzVP?=
 =?utf-8?B?SjhvOWxKMGw0aWptWldXd3dpVmNudXV4d2hQd0FFbDBaN0N4SFo5UXF5VElL?=
 =?utf-8?B?NHI4U1BrN1BxNVFlZXFxV1dnMFJPa1V1RGpaeVlzSm1MUjY4L3A0citmajVW?=
 =?utf-8?B?TVBaRXZvUi9SRit5ZTlCZTFHdldSRVdxMTgxSExSb2R5ck5QOUR2eXBFVWl5?=
 =?utf-8?B?ZENyeGtJSk1aZGVGWnMzdm5sem9XY0czOTBIUlQ4Qk03amJ1Wk0zZzcrWnhX?=
 =?utf-8?B?eHhpY3JvdFMvZzVvTEcyeUIrN0JQdEZpZWwzWGhvcmhMVi9IOXROSU1iMmMy?=
 =?utf-8?B?RTFvUzZ0TGpBeUZvN3RWeVlvYi9tbld6VnAzeWp5R1FGMDI0dkdLTjd1amR4?=
 =?utf-8?B?aVZCRC9QY2xraElCR2R0T2JKVmpETER3NTdtQ2J2ZE9DT2djT3VacVJHLzVS?=
 =?utf-8?B?dnVrRFA2RXRadjhyK2xZdytlSFF3Zk5KUUx5alFRejU0Vjh6dHlmV2dnMmpN?=
 =?utf-8?B?L1hPYTVsM2ordjVSUUxzZ1FwS2J1OVlJOC9wNFlCSDJQUmJKQmtpTkdVWVZw?=
 =?utf-8?B?VVJ4ZVZpOWZZSW5JblNoUjZob3Y1blpFaEp2VnRnZHpNS2VMTEtTcEtEcEEx?=
 =?utf-8?B?SFhaSTVBN3kxYU8wd2pFRUxhMkR2aWJPb3dSekhyUGNMMldmWEd0U3NkeGFl?=
 =?utf-8?B?SFpNZ0hTVVFvZ0MwVm9ySkg0WGwydUFoVE5OT2J0YzhROUdadlZPTmxrS0RQ?=
 =?utf-8?Q?BqSR2CBwd3pSDZkBH5SRYE7fs?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 53859b3a-2dc3-4b45-0c3d-08dcf9c766c7
X-MS-Exchange-CrossTenant-AuthSource: PH8PR12MB7326.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2024 16:16:40.1133
 (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: gRvqVRVd4/jTlliV+gbBAjkCm+kied9UEgilLI8YxooMn1MK6fev9Ddw/iHNqGTFoh4h9kdeFO7F4DXTKiKxmw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB9052


On 30/10/2024 10:51, Luca Fancellu wrote:
> Hi Julien,
Hi Luca/Julien,
>
>> On 30 Oct 2024, at 10:32, Julien Grall <julien@xen.org> wrote:
>>
>> On 30/10/2024 10:08, Luca Fancellu wrote:
>>> Hi Julien,
>>>> On 30 Oct 2024, at 09:52, Julien Grall <julien.grall.oss@gmail.com> wrote:
>>>>
>>>> On Wed, 30 Oct 2024 at 09:17, Luca Fancellu <Luca.Fancellu@arm.com> wrote:
>>>>> Hi Ayan,
>>>>>
>>>>> While I rebased the branch on top of your patches, I saw you’ve changed the number of regions
>>>>> mapped at boot time, can I ask why?
>>>> I have asked the change. If you look at the layout...
>>> Apologies, I didn’t see you’ve asked the change
>> No need to apologies! I think I asked a few revisions ago.
>>
>>>>> Compared to https://patchwork.kernel.org/project/xen-devel/patch/20230626033443.2943270-25-Penny.Zheng@arm.com/:
>>>>
>>>> ... you have two sections with the same permissions:
>>>>
>>>> xen_mpumap[1] : Xen read-only data
>>>> xen_mpumap[2] : Xen read-only after init data
>>>> xen_mpumap[3] : Xen read-write data
>>>>
>>>> During boot, [2] and [3] will share the same permissions. After boot,
>>>> this will be [1] and [2]. Given the number of MPU regions is limited,
>>>> this is a bit of a waste.
>>>>
>>>> We also don't want to have a hole in the middle of Xen sections. So
>>>> folding seemed to be a good idea.
>>>>
>>>>>> +FUNC(enable_boot_cpu_mm)
>>>>>> +
>>>>>> +    /* Get the number of regions specified in MPUIR_EL2 */
>>>>>> +    mrs   x5, MPUIR_EL2
>>>>>> +
>>>>>> +    /* x0: region sel */
>>>>>> +    mov   x0, xzr
>>>>>> +    /* Xen text section. */
>>>>>> +    ldr   x1, =_stext
>>>>>> +    ldr   x2, =_etext
>>>>>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_TEXT_PRBAR
>>>>>> +
>>>>>> +    /* Xen read-only data section. */
>>>>>> +    ldr   x1, =_srodata
>>>>>> +    ldr   x2, =_erodata
>>>>>> +    prepare_xen_region x0, x1, x2, x3, x4, x5, attr_prbar=REGION_RO_PRBAR
>>>>>> +
>>>>>> +    /* Xen read-only after init and data section. (RW data) */
>>>>>> +    ldr   x1, =__ro_after_init_start
>>>>>> +    ldr   x2, =__init_begin
>>>>>> +    prepare_xen_region x0, x1, x2, x3, x4, x5
>>>>>          ^— this, for example, will block Xen to call init_done(void) later, I understand this is earlyboot,
>>>>>                but I guess we don’t want to make subsequent changes to this part when introducing the
>>>>>                patches to support start_xen()
>>>> Can you be a bit more descriptive... What will block?
>>> This call in setup.c:
>>>      rc = modify_xen_mappings((unsigned long)&__ro_after_init_start,
>>>                               (unsigned long)&__ro_after_init_end,
>>>                               PAGE_HYPERVISOR_RO);
>>> Cannot work anymore because xen_mpumap[2] is wider than only (__ro_after_init_start, __ro_after_init_end).
>> Is this because the implementation of modify_xen_mappings() is only able to modify a full region? IOW, it would not be able to split regions and/or merge them?
> Yes, the code is, at the moment, not smart enough to do that, it will only modify a full region.
>
>>> If that is what we want, then we could wrap the above call into something MMU specific that will execute the above call and
>>> something MPU specific that will modify xen_mpumap[1] from (_srodata, _erodata) to (_srodata, __ro_after_init_end)
>>> and xen_mpumap[2] from (__ro_after_init_start, __init_begin) to (__ro_after_init_end, __init_begin).
>> I think it would make sense to have the call mmu/mpu specific. This would allow to limit the number of MPU regions used by Xen itself.
>>
>> The only problem is IIRC the region is not fixed because we will skip empty regions during earlyboot.
> Yes, but I think we can assume that X(_srodata, _erodata) and Y(__ro_after_init_start, __init_begin) won’t never be empty for Xen?
>
> In that case, the call to mpumap_contain_region() should be able to retrieve the full region X and the partial region Y and
> a specific function could modify the ranges of both given the respective indexes.
>
> Code in my branch: https://gitlab.com/xen-project/people/lucafancellu/xen/-/blob/r82_rebased/xen/arch/arm/mpu/mm.c#L382

Can we keep the current patch as it is ? We can revisit 
enable_boot_cpu_mm() when we enable start_xen() for mpu.

I can send a respin once we are aligned.

- Ayan



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 16:43:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 16:43:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828832.1243852 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6YGY-0000sd-Ka; Thu, 31 Oct 2024 16:43:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828832.1243852; Thu, 31 Oct 2024 16:43: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 1t6YGY-0000sW-Gm; Thu, 31 Oct 2024 16:43:22 +0000
Received: by outflank-mailman (input) for mailman id 828832;
 Thu, 31 Oct 2024 16:43: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=zW4/=R3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1t6YGW-0000sN-UP
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 16:43:20 +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 38d0cffb-97a7-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 17:43:14 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-431695fa98bso8957335e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 09:43:14 -0700 (PDT)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-431bd9ca704sm62702955e9.41.2024.10.31.09.43.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 09:43:13 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38d0cffb-97a7-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmMiLCJoZWxvIjoibWFpbC13bTEteDMyYy5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjM4ZDBjZmZiLTk3YTctMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzkyOTk0LjI1MDE3NCwic2VuZGVyIjoiamJldWxpY2hAc3VzZS5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1730392993; x=1730997793; 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=mnCR+L3+wlaigesH59ei7uacQ15CtTjz7rfV0WvDRZI=;
        b=NCu2LZh5kKvH4VDZa1+vSnE/Z6rrWzAfMVrC3BvSB49j2PZIv8cFWLldTs2mHxYyOP
         4TfHmavACUD4mLpa0DHO39ifxkbSLp4BVaWJhP4Eb69Ey9/JBEAPhVzJ1Q/CWp4PYBD9
         4eq9psOIShxW0EsmI2CzFuctfw46g1aya+1uVZW2QFLSpVkPInyh0niqaxxf2ypuUvFK
         tTWYkvAHxYAQViVsAb5QPiPNeBmXYp0EIdQeM+/kk+zHKvnXTBW9ZeDc05dfcDWHc0Z5
         W14OawiP7TE1+J3tKeDxpTbKOs5qrawSqtWJbW44vrShhYyCQeCZlK2WLMQgjKYRp9ir
         Tp8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730392993; x=1730997793;
        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=mnCR+L3+wlaigesH59ei7uacQ15CtTjz7rfV0WvDRZI=;
        b=s/sSaJ9eYp8VjxdcQomznMPGIgOWps0HUS44uvt0vGlM4+0Vp8ZBCaJeilqtjPMuxX
         F71CmQrNj/NCwaJZ2ZTHuEelibJlJeJsfRsBE8iGomPo7iOvOyxwfN/YtBKUAIIGh3ZD
         P4KiisoeQFgwYrDngviNDiSu+CUe+8oYH7CLOYjbjAbuszTz+qvkE0ylJb0Xbx3QvCS9
         uOf0OXVeqMhByiZsiFox5lOuJCdwjfebAGDvk/tWN3AZCYvGTlHxGNcEynzGTfvrEewh
         XeIQqA1OQ7WjXJOi0aoJoLwM/0J4TCoC8dKHF+ZEmF63U2LbIJbKIyZ123tYpMFq1dql
         JX9g==
X-Forwarded-Encrypted: i=1; AJvYcCUiybGD9+aZC9r6BKKQCZW7xNwRqBL6G+81NQWpPRnDY6S4RZkeRvssuylgNxkLMLEdlzPSbqS8IFw=@lists.xenproject.org
X-Gm-Message-State: AOJu0YwOHDnDf5qA07QLx7ZgvdtHZsuw6GTzipXbGi9gsGJTi0svfFSk
	iti3rPWYe3rIx+fXLkZ39UhzIpaJzmMB2bdNZjbB5TPDfM6DYdddVygqSskipA==
X-Google-Smtp-Source: AGHT+IFIVCJ2u+3fhqtLgQHazyKiBn8RwglDEiHtTBOcbCacwpb0NZtP4EdvSyXXS4kUklZ/QgABbQ==
X-Received: by 2002:a05:600c:5249:b0:431:6052:48c3 with SMTP id 5b1f17b1804b1-4319acacd6amr203393705e9.16.1730392993423;
        Thu, 31 Oct 2024 09:43:13 -0700 (PDT)
Message-ID: <2fe01b5a-aebb-4141-9cdd-887b5984d6b8@suse.com>
Date: Thu, 31 Oct 2024 17:43:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/common: Move gic_preinit() to common code
To: oleksii.kurochko@gmail.com
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org,
 Michal Orzel <michal.orzel@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>
References: <e906b538aba684ab108cc70e8c60ed35ddfad74e.1730292286.git.oleksii.kurochko@gmail.com>
 <6461a47f-759a-4138-970c-4e5f68b07bae@suse.com>
 <c400bd0f-1360-45ea-bd29-bf7883debd93@amd.com>
 <5f4b8ed66e38475470cb80f04c470e12b6cb2a2e.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: <5f4b8ed66e38475470cb80f04c470e12b6cb2a2e.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31.10.2024 16:13, oleksii.kurochko@gmail.com wrote:
> On Thu, 2024-10-31 at 11:29 +0100, Michal Orzel wrote:
>>
>>
>> On 31/10/2024 10:34, Jan Beulich wrote:
>>>
>>>
>>> On 30.10.2024 14:14, Oleksii Kurochko wrote:
>>>> Introduce ic_preinit() in the common codebase, as it is not
>>>> architecture-specific and can be reused by both PPC and RISC-V.
>>>> This function identifies the node with the interrupt-controller
>>>> property
>>>> in the device tree and calls device_init() to handle
>>>> architecture-specific
>>>> initialization of the interrupt controller.
>>>>
>>>> Additionally, rename gic_acpi_preinit() to ic_acpi_preinit() as
>>>> it is used
>>>> by ic_preinit(), while keeping it defined in architecture-
>>>> specific as this
>>>> part is architecture-specific. In case if CONFIG_ACPI=n a stub
>>>> for
>>>> ic_acpi_preinit() is provided. To declaration/defintion of
>>>> ic_acpi_preint()
>>>> is added `inline` to deal with the compilation issue:
>>>>   error: 'ic_acpi_preinit' defined but not used [-Werror=unused-
>>>> function]
>>>>
>>>> Make minor adjustments compared to the original ARM
>>>> implementation of
>>>> gic_dt_preinit():
>>>>  - Remove the local rc variable in gic_dt_preinit() since it is
>>>> only used once.
>>>>  - Change the prefix from gic to ic to clarify that the function
>>>> is not
>>>>    specific to ARM’s GIC, making it suitable for other
>>>> architectures as well.
>>>>
>>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>>> ---
>>>> Changes in v2:
>>>>  - Revert changes connected to moving of gic_acpi_preinit() to
>>>> common code as
>>>>    it isn't really architecture indepent part.
>>>>  - Update the commit message.
>>>>  - Move stub of ic_acpi_preinit() to <asm-generic/device.h> for
>>>> the case when
>>>>    CONFIG_ACPI=n.
>>>> ---
>>>>  xen/arch/arm/gic.c               | 45 +-------------------------
>>>> -----
>>>>  xen/arch/arm/setup.c             |  3 ++-
>>>>  xen/common/device.c              | 46
>>>> ++++++++++++++++++++++++++++++++
>>>>  xen/include/asm-generic/device.h | 10 +++++++
>>>>  4 files changed, 59 insertions(+), 45 deletions(-)
>>>
>>> Looks largely okay to me now, with a question and a nit at the
>>> bottom. The
>>> question is mainly to Arm folks, where the code is coming from, and
>>> DT
>>> maintainers: Is a file named device.c really an appropriate "home"
>>> for
>>> IC-related code? If IC is a common thing in the DT world, would
>>> such code
>>> maybe better live under common/device-tree/?
>> I think we will have more interrupt related dt stuff common, so it
>> would make sense to create
>> device-tree/irq.c or intc.c.
> What about the part of the code in common/device.c:
>    void __init ic_preinit(void)
>    {
>        if ( acpi_disabled )
>            ic_dt_preinit();
>        else
>            ic_acpi_preinit();
>    }
>    
> Should it be also moved to device-tree/intc.c even ic_acpi_preinit() is
> used?

Maybe best left to each arch? device.[ch] aren't a good home for this,
just like they aren't for the actual DT implementation.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 16:55:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 16:55:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828838.1243861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6YS5-0002lk-Jz; Thu, 31 Oct 2024 16:55:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828838.1243861; Thu, 31 Oct 2024 16: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 1t6YS5-0002ld-HH; Thu, 31 Oct 2024 16:55:17 +0000
Received: by outflank-mailman (input) for mailman id 828838;
 Thu, 31 Oct 2024 16:55: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6YS3-0002lT-LI
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 16:55:15 +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 e2ffe69f-97a8-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 17:55:09 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a9a16b310f5so163278566b.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 09:55:09 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e565e0940sm85260366b.104.2024.10.31.09.55.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 09:55:07 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e2ffe69f-97a8-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MzQiLCJoZWxvIjoibWFpbC1lajEteDYzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImUyZmZlNjlmLTk3YTgtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzkzNzA5LjI0Mjk4Niwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730393708; x=1730998508; 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=09370oDJSKlXbcjbRkgjjIjt3qFIEKrQlsjk/b2aKC0=;
        b=ngTeWNDrWkiPDj6+Isu1WoPt/+MnPdJ/LumbDxBkOIvJgXbc9aCG28K3jJZ8LUNmMV
         wM1VOUrbeHwHFpZLsvIiSTt1x2tTyq3gQCGUYDYt30vv5cKyj5wovyWzmGgKIu3jr0+7
         gAJIQpsNtVvcHZjPZbU5VJPjgYXvWxSps2mNA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730393708; x=1730998508;
        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=09370oDJSKlXbcjbRkgjjIjt3qFIEKrQlsjk/b2aKC0=;
        b=qjNsbRCk/hYHbxNLIp7yvrpqPhZx4tXftOPJXNAfXCygSHhSxk8HGeTb5h0Af5K5s8
         PsW3FBLQ1+fxiS2SD0BQHiD8cpCocaJuzyhfCqjrotSkiI5jDZmbNwoohXYoBsqkYBZf
         pK2oFH/kqgFWlfEHlG8xHJZpB5mxdDA+Ar6AsZcwLFF588Yi0lVaAOHMYetL8c6d/+Yq
         7/rFCszEK8UIFUn+I9dBZiJfnwW54YHFuBpANb36f95mpKlawt9G8NJCL8MfWI8TlHLj
         sYGKEcthFZ75A3MCVLu+i4Q4R1qk3Y+rgXaG+t8aBVt/y9iceDcbwNWUBlwEkP5ixAUo
         6eYA==
X-Gm-Message-State: AOJu0YzIUJvEnx5xTD6KwGotXZXYVKmbvNiNgZdR1oeX83HB1hhGRl+R
	U+qeMmIhrAmsNRjruy7ZVqv4ofBzGHPUBEikV1PliiqMvd7Ycs3MK9O48QfjQkuVni/bOs7ZKKS
	k
X-Google-Smtp-Source: AGHT+IE81w4gpz1KZqxbqDxtYfZJOAujfRKAoZh46C9nZaY8Fki5t56vn8OhbbYaGX595T2agupaxw==
X-Received: by 2002:a17:907:1c04:b0:a9a:423:3278 with SMTP id a640c23a62f3a-a9e50b948c5mr353741866b.49.1730393708219;
        Thu, 31 Oct 2024 09:55:08 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Luca Fancellu <luca.fancellu@arm.com>,
	Jan Beulich <JBeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>
Subject: [PATCH] CI: Fix cppcheck parallel build more
Date: Thu, 31 Oct 2024 16:55:05 +0000
Message-Id: <20241031165505.3007713-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

A recent cppcheck run was found to fail:

  https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/8237167472

with:

  "type mismatch! call is<type>() before get<type>()" && is<std::string>()
  make[3]: *** [arch/x86/boot/Makefile:28: arch/x86/boot/reloc-trampoline.32.o] Error 1

This turns out to be a parallel build issue, combined with a recent change to
x86.  Notably, we now have a case where we build both:

  CC      arch/x86/boot/reloc-trampoline.32.o
  CC      arch/x86/boot/reloc-trampoline.o

from the same original C file, and cppcheck uses the source C file as the key
for generating it's intermediate files.

Switch cppcheck to use the object file as the unique key instead.

Fixes: 45bfff651173 ("xen/misra: xen-analysis.py: fix parallel analysis Cppcheck errors")
Fixes: db8acf31f96b ("x86/boot: Reuse code to relocate trampoline")
Suggested-by: Luca Fancellu <luca.fancellu@arm.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Luca Fancellu <luca.fancellu@arm.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1522120661

which seems to suggest that cppcheck is still happy.
---
 xen/tools/cppcheck-cc.sh | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/xen/tools/cppcheck-cc.sh b/xen/tools/cppcheck-cc.sh
index 16a965edb7ec..8a58c3aa86b3 100755
--- a/xen/tools/cppcheck-cc.sh
+++ b/xen/tools/cppcheck-cc.sh
@@ -26,6 +26,7 @@ EOF
 
 BUILD_DIR=""
 CC_FILE=""
+OBJ_FILE=""
 COMPILER=""
 CPPCHECK_HTML="n"
 CPPCHECK_PLAT_PATH=""
@@ -56,6 +57,7 @@ do
         then
             # This must be the path to the obj file, turn off flag and save path
             OBJTREE_PATH="$(dirname "${OPTION}")"
+            OBJ_FILE="$(basename "${OPTION}")"
             obj_arg_content="n"
         fi
         # Forward any argument to the compiler
@@ -177,12 +179,12 @@ then
     done
     if [ "${IGNORE_PATH}" = "n" ]
     then
-        JDB_FILE="${OBJTREE_PATH}/$(basename "${CC_FILE}".json)"
+        JDB_FILE="${OBJTREE_PATH}/${OBJ_FILE}.json"
 
         # Prepare the Json Compilation Database for the file
         create_jcd "${COMPILER} ${FORWARD_FLAGS}"
 
-        out_file="${OBJTREE_PATH}/$(basename "${CC_FILE%.c}".cppcheck.txt)"
+        out_file="${OBJTREE_PATH}/${OBJ_FILE}.cppcheck.txt"
 
         # Select the right target platform, ARCH is generated from Xen Makefile
         case ${ARCH} in
@@ -211,7 +213,7 @@ then
         fi
 
         # Generate build directory for the analysed file
-        cppcheck_build_dir="${BUILD_DIR}/${OBJTREE_PATH}"
+        cppcheck_build_dir="${BUILD_DIR}/${OBJTREE_PATH}/${OBJ_FILE}"
         mkdir -p "${cppcheck_build_dir}"
 
         # Shellcheck complains about missing quotes on CPPCHECK_TOOL_ARGS, but

base-commit: 2478bed83fc6d8be1d129d9a9617eda2ab3c9790
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 17:11:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 17:11:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828848.1243872 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Yhl-00060V-2v; Thu, 31 Oct 2024 17:11:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828848.1243872; Thu, 31 Oct 2024 17:11: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 1t6Yhl-00060O-04; Thu, 31 Oct 2024 17:11:29 +0000
Received: by outflank-mailman (input) for mailman id 828848;
 Thu, 31 Oct 2024 17:11: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=ojx0=R3=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1t6Yhk-00060I-AO
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 17:11:28 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on20619.outbound.protection.outlook.com
 [2a01:111:f403:2614::619])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2782439c-97ab-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 18:11:23 +0100 (CET)
Received: from DU7P191CA0007.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:54e::32)
 by GVXPR08MB10987.eurprd08.prod.outlook.com (2603:10a6:150:1fe::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.24; Thu, 31 Oct
 2024 17:11:19 +0000
Received: from DB1PEPF0003922F.eurprd03.prod.outlook.com
 (2603:10a6:10:54e:cafe::dc) by DU7P191CA0007.outlook.office365.com
 (2603:10a6:10:54e::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8114.23 via Frontend
 Transport; Thu, 31 Oct 2024 17:11:19 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB1PEPF0003922F.mail.protection.outlook.com (10.167.8.102) with
 Microsoft
 SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8114.16
 via Frontend Transport; Thu, 31 Oct 2024 17:11:18 +0000
Received: ("Tessian outbound 8223600b7a9c:v490");
 Thu, 31 Oct 2024 17:11:17 +0000
Received: from L14739bb9b04b.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 2327DFE6-8925-4AEF-B7BA-CC509C2DEF25.1; 
 Thu, 31 Oct 2024 17:11:12 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id
 L14739bb9b04b.1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384);
 Thu, 31 Oct 2024 17:11:12 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com (2603:10a6:10:1a6::21)
 by AS2PR08MB9416.eurprd08.prod.outlook.com (2603:10a6:20b:594::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8093.29; Thu, 31 Oct
 2024 17:11:09 +0000
Received: from DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632]) by DBAPR08MB5798.eurprd08.prod.outlook.com
 ([fe80::4a66:d3e2:570:9632%6]) with mapi id 15.20.8093.027; Thu, 31 Oct 2024
 17:11: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: 2782439c-97ab-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDE6MTExOmY0MDM6MjYxNDo6NjE5IiwiaGVsbyI6IkVVUjA1LURCOC1vYmUub3V0Ym91bmQucHJvdGVjdGlvbi5vdXRsb29rLmNvbSJ9
X-Custom-Transaction: eyJpZCI6IjI3ODI0MzljLTk3YWItMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzk0NjgzLjU3MDM0NCwic2VuZGVyIjoibHVjYS5mYW5jZWxsdUBhcm0uY29tIiwicmVjaXBpZW50IjoieGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIn0=
ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;
 b=H8YNunS/HbnTqD+ZIP9di+7dGnRwPcBbn6C06pUMQ+MnL7MEW6MFvqxDFkj/+0/aIEp23I5ViJbIvQLhKgkeiK+k6lyYR8Ac5ItYLeVLiarstP4+R01mYJpseckKLeoM7pBXFnkwVL+w4eOuHzvR371k7J5T5zFNAhfEI2lC3/bNZdh7rk+6bEZenecDrrqOR62cOD4pb5+8zMg8986hFzNsCNlfWY+QExwOObFrpoVxKo1v/wqRzh51NJb1hZ8X7VTQ51xT0PKoF38ZD5pOiNLB2RkPR4uEg5p91M3bnSvMqDzWHu6rHG3yHR7glK1yhwvjNV+PNZh7K59akRM6eQ==
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=2pPED0NWh0OPt5eCHNklhntRuGPQ6Ip4PqmiAe0q79U=;
 b=FqLPp3yTu8H3hgvUF3NF0XMrcZgJhYc5o2FF8lUIZJITrTQve6qicMggrpYBx8qCo6DhCzMnH4oRPQqQn2szte5Pt8w7xhucv93AAwshM64eSOMtfONrKuCCOMv9TthIw11vcT3boLrclgEofSnY8+xXb3oSs+FayfnJw6oWUWbmOXiIV9IdRaAhMv8kR+VX7VJYlK0PEm0biXPzxamES12RAD7A/stB1f/FpW6fIKprhByLTG3O2SNQigkcJ6dDwrMvJA6+m4nDtV/eAb3xmnYXs6pukCF/x5yrhZ3JOelkbsVd5kGA8ABoFLUA9vQJtcgm9lodL9WKR0MKEdSmpw==
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=arm.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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2pPED0NWh0OPt5eCHNklhntRuGPQ6Ip4PqmiAe0q79U=;
 b=J5+tB2cjDT24XR7XCJci3xOZFfhSRx3tqqHHGWrZp1HOqXspMbmoXJ9g5yEpGw43hgYm856klDW9YrWh9/EmanSfXd9uVohTZ1te+wkrnpMxjVJOagm7pIKGulmO4WG06DvFuQJwG/PV1UUvKrTw/3v1l7PDXwjVF8/yE+YtVpc=
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=arm.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: 24caffc45b8aff14
X-TessianGatewayMetadata: BJPkqSt57skSfTiiRUiSYcnCB1zduoZjwEWXLqy9TmHcUMNjmI9SVWicHhkvDJih5W+jOKuwZyaAymk/05eOZ84I773H4ORdHgh9ZTlJvyPmXs6GgcJJQk/OGcu9Xqk/XYNxPs8zg9mj5epvSVt8nX6XqP46ZKshmf0PIF/K9y4=
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=tkxTA5BjVMzSHrnDzK5Bl2iDQMdUAuxjXE1cmXLgKPXY9MYAvnvBQeH3mpZi7bTL6lX13AYCs58N9TlWAN2PVDs7+CWGnjr1AqalIlKawFLkW/ZMxdlAg5vt4e3Ag5lLYKvPcYLUnppK5cvpE/m61Xm+1MguXhmgjoWISMKA2uSao6RAW25TtZM2XEV63qqbz6J87bVanQ+vIotqvOlvDlX4tfbnPscj14j9RSVBOD0V6yTPDW9/t9dwE5WawV5AfN0w3p3Ura2H4GE3zzCg68+MmRN5R0Jhfs6J0ju68jgIX4ZPkWUV1qnR4yxprM9x+kKTb5GFTvg96Z7kQmPN1g==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
 s=arcselector10001;
 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=2pPED0NWh0OPt5eCHNklhntRuGPQ6Ip4PqmiAe0q79U=;
 b=oGbRag1DMplaav3OcSavHJdplw6q/swojX4hMbvuCTZyp3KKk4M9AeFpNRzUMIrOsK2FAHiF2aK1YzW10lrkZZU3Z4DJqzbF2Mz4gwpXKx/UeggVPTduudwrnn4pNV7VIz53JrIcRlUyS0hT09lfaz0+D1A7o6oOj6/I7V+QUz1IbMWn/Jv9+AnKMmcpGu6lYDWYop1dtBEOz5zyK0CjoCUz6QYrttv6wTI0EkkK+w1RxQ07W6zrdBP36Fb0M8tcwFE4RpLXl1838OtIEfPzFYQ5E/gRx1fjr2HPk7Xktwl/0KIvgZq/frVWU9Dn00HmsJt2O0QYn0p1Lqf3pkdd6A==
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=arm.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2pPED0NWh0OPt5eCHNklhntRuGPQ6Ip4PqmiAe0q79U=;
 b=J5+tB2cjDT24XR7XCJci3xOZFfhSRx3tqqHHGWrZp1HOqXspMbmoXJ9g5yEpGw43hgYm856klDW9YrWh9/EmanSfXd9uVohTZ1te+wkrnpMxjVJOagm7pIKGulmO4WG06DvFuQJwG/PV1UUvKrTw/3v1l7PDXwjVF8/yE+YtVpc=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Jan Beulich
	<JBeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, Julien
 Grall <julien@xen.org>
Subject: Re: [PATCH] CI: Fix cppcheck parallel build more
Thread-Topic: [PATCH] CI: Fix cppcheck parallel build more
Thread-Index: AQHbK7WmFiXt1BnVNkmuAcmSAaPqQ7KhGEkA
Date: Thu, 31 Oct 2024 17:11:09 +0000
Message-ID: <D33A8FE6-B6D7-4E6A-82C2-1DB3E24FE97F@arm.com>
References: <20241031165505.3007713-1-andrew.cooper3@citrix.com>
In-Reply-To: <20241031165505.3007713-1-andrew.cooper3@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.3826.200.121)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DBAPR08MB5798:EE_|AS2PR08MB9416:EE_|DB1PEPF0003922F:EE_|GVXPR08MB10987:EE_
X-MS-Office365-Filtering-Correlation-Id: 1757806b-91e8-4b2c-a827-08dcf9cf08df
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted:
 BCL:0;ARA:13230040|366016|1800799024|376014|38070700018;
X-Microsoft-Antispam-Message-Info-Original:
 =?utf-8?B?bmczbUZGSGsyUnoweEhxMTJ3RGNQUy8zK2lQNkk5OW1BbzRVWENmRmE0ZWJB?=
 =?utf-8?B?cHVqNG82ako1c3Y5VEhob1B5TjBuZkV0T2Rna2hVZXUxRzIzM0xaRGZsUEFl?=
 =?utf-8?B?TTVuS2VObEU1bHhMQk9rdGJyZ3I2akR5YStEVXZ1cFFTa2JkSmRHN3JZejJi?=
 =?utf-8?B?c1Z0MHJneDIvcU1tV3lZZEt1eHRYNDBLVjYzdVFPZmtpbnhRWTdETWd0a0lC?=
 =?utf-8?B?WGRGZzYydWVWWXNSZ1JmSXFRUmZselZiT3o1VzVkTlpMMm5DU0RaMDBVbDRh?=
 =?utf-8?B?RjVqaHRWOE03MlVBVDhEbWhPaDFJamc2SmUxbVJiOXFaMHpON250S3RGNkR0?=
 =?utf-8?B?WDdnN0FnY09YSDQya3ZuRmI5dmkvOFh0RTJHRzgyVXlzejcwSGFIZzJaYklk?=
 =?utf-8?B?bnpabmw0N1piUGVoM01pa2daZm10UzNIRUFnd0hpUFUzQmcxWm0wQUw5TStk?=
 =?utf-8?B?R21sSmRURk1zczVQRUFnRzZtZzVBNDlCSHdZbnRMeVEzZ2hGNWdsR1VTdk9F?=
 =?utf-8?B?MU1QVkJHWjJhTzZDR0x6WCtLTUhrd0ZHM0lleitqamR3eDJ1UmpQSG5ZcTZx?=
 =?utf-8?B?N3RVNUQ2MXNXOCtMVlhabzFNRjRYL0VuaitQcjJoOXk3U0RDV1l2Mk01VjBE?=
 =?utf-8?B?RFhIbHVQdDNzTVovdGs2UHFzcWtkUnI3dVhQVUxSdkJFaitDNGxsMVVUOVlU?=
 =?utf-8?B?VVhYaGRFNlZwMEdxM2dmOHpKMVhyTjFFdHUyNmdxZ3J6aVFJOUhkQi9IK1pN?=
 =?utf-8?B?NG82Zml6OGZheDdZQ0ZhQmwvWHNiVDF3d3Q5d3pKY2poWUd2Q2cvam96M0h0?=
 =?utf-8?B?V3dGd294WlovYWgvZThVbEZlaU03M3VtWW5DQkhBbGlTQVJCR0FJdDhkVTRP?=
 =?utf-8?B?TEtkMjBkWUdsd295bStRK0U3Y09wcis3enlQOElkSDdhWmQ3Y1ZBTFUya1Rl?=
 =?utf-8?B?OERTcDAzZmVJdFdXOWNPSmhXVWVzd1RrZ1dKd3IwRWo2M0p0RGhJbno1S25S?=
 =?utf-8?B?aFlsckFqbGxodmhUeG1RNE8vbHpNdkliTXlYdzRKanVrMzVITndadXl4cTlm?=
 =?utf-8?B?NEtSNEJTdVRqc0o2ZDN2dnFjKzVKWnoxaUVCY0pFOWZEVlpscklQdnkvQm1y?=
 =?utf-8?B?NUhUNkZacXhCcTI1eXY2UjJGTStZcFdvZHJkNFExUzEzY3RqQ2VacVBTOXBS?=
 =?utf-8?B?cWlHVy81Q3ZYUVpWdjRWSjRBOCtNRnRHOW0xOUw0cnlNS0QyNnl2Z3J2b1Q0?=
 =?utf-8?B?cG9NbXJCbTgwMVF1MG9JclpRaElBQnEwNFVxNjU3NXpUM0xtQzZVQmhSLzIx?=
 =?utf-8?B?TEZ2ZlhSVithYmRCYVBwaytCTUpIRDhETDNTWkJJbG8wY1lYSTloVTIwbHN2?=
 =?utf-8?B?KzFNVHoxNHowWWlHeG52eS9TNlRnMlg1a1pYK1dZZWsxQTJJOHllRnVIU2ov?=
 =?utf-8?B?Nkd6eUI0RzJVQXB4aDEyR0R0aHFUTGtIZ3VOOWVCN2lHSk5WTkxRbEVOMG4v?=
 =?utf-8?B?R1JJbmJncVlIVVJKOTVrNmdhcUIyU2tnVDdOVWJwaEd2OFVxZDYzMzhMZ25a?=
 =?utf-8?B?UnI4dXJSVnk3ZDIwT1UrQitIcGpzeVZua0orclpWdWwwWUYzVlJoekI2VnJv?=
 =?utf-8?B?UXJsd2RrRVUyUy9QeHM2ci8wUlR5VmZyOUlRNTlWbEUwMjVucllrVHo1emI2?=
 =?utf-8?B?QlUxM2RvVnR1VkREWDFmSWxEbmJoenl6RW9Ib0hQUEc2bldZU1Q1N3ZMVzdl?=
 =?utf-8?B?MitUa1BSUjRBWmZhTzhscVhFUTVJVVVlNDUwWUJSZjFaQ0hqY2JlNlZMYWF5?=
 =?utf-8?B?b0t1ZEt3RHRXVStzcXpNRi9lYlhxeEtMSW9CNE80c1k3S3hiemx2V3VDMll6?=
 =?utf-8?Q?iX2/o+UAgNbIT?=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBAPR08MB5798.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(376014)(38070700018);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <0F700F81D72CD24485FC1B635DB80F5D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9416
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-SkipListedInternetSender:
 ip=[2603:10a6:10:1a6::21];domain=DBAPR08MB5798.eurprd08.prod.outlook.com
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB1PEPF0003922F.eurprd03.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	5428fb61-9835-4615-7807-08dcf9cf0391
X-Microsoft-Antispam:
	BCL:0;ARA:13230040|376014|35042699022|1800799024|36860700013|82310400026;
X-Microsoft-Antispam-Message-Info:
	=?utf-8?B?c0xjbEhGUFUvdXpobWdobG1Jem1qblk1NmI2NVdQdjUxZnFXUWZha2M4ZzND?=
 =?utf-8?B?R21iVWRRczhRbkJ0MUdrOC9OWlU4UXFQYmpUbXdzclEzNnp4akVXc1pTQ0FT?=
 =?utf-8?B?NUc4R2dObnVsS20rWFJTK1FWTEFUbFBMemdFc0pBdHVocDczSU5FZTRYRHNv?=
 =?utf-8?B?MlhndWpuREQ1RkxkQkV2VkV0aTZ4R0xqY2V0Wkp6NFFRTmdDZmFReE9JekN5?=
 =?utf-8?B?RWU4U0s2c2pNUmdhQlFzRTlhMU1tdnAvbTZWNFdsTVk2SzkyU25nUDJPcFdF?=
 =?utf-8?B?TzJDYmo1clp1VUYwMWQ0YjNtK0pQWnVMYkM4ZzIrSHRYN09FdkZGb2VWZTc2?=
 =?utf-8?B?b1dwYXA2T3BJWis0WVRsWnpLVlNIbjNqeU1DRUQybVFZYVFRM3N6RE44bFNB?=
 =?utf-8?B?YXc0VGNMY0ZMUXNvMUFXbnczRllmbjNBYzEvbUtZZENMWjJiK1FvaFV2Vk1o?=
 =?utf-8?B?ekpzY1Fra284UkFiZWp5V3d4V1JzQmlzRC9STTRFeURDQ2h0N25jd3VXNnk3?=
 =?utf-8?B?VEk0Q0xmZi9MYkJDQTNiS2Vpa290RFZYUlh1ZjZpQ0oxOHZpSWN0VEF6RnNG?=
 =?utf-8?B?YmlxY0Iyb2VucnhLRlRNaUpTY3gwZDRKY3BkUG5hSnFHNm8vMjhZZ3B3cUZ3?=
 =?utf-8?B?M3cwYktHT1paN1pDOTRyenRSYVdoU3lLMHRpTDZidGVZUGlwUlNtZG1Pdk43?=
 =?utf-8?B?M1BpWkdHNC85R0s5ZkhCeG1kamZhWDVIRXQvcFh1ZXcxSWd3T1MwYXA0RWll?=
 =?utf-8?B?THplYllZNEQyWGlqZlJ4SmpGL3hMUExrZWFIUzZlbmxPamlzb1JNU1ZIVkVw?=
 =?utf-8?B?MDl4clI2VmhXcjlFV2tmRGM4OHROVkRibnFkaWYvelo0ZE9SYWxZbHpPYzlM?=
 =?utf-8?B?SWVpZHVNU1ZObll5enlvZXl4Sjlzb1llSi9VQ3dqL1FHUFVHTzBSSHFtNk1S?=
 =?utf-8?B?eTl5aUdobEdjNVZzOCtLMW84cW1iaUl2Y2gxU2xVcTZpVmJ3LzlxZHIwZ0FD?=
 =?utf-8?B?QXNFQWpQQU1GNHFsZHZFMWo3dDJudlpHSkQzV0h4QTNhWlVDWVBwdFA3Z25i?=
 =?utf-8?B?U3k1cVV1eW82UUJldnR0bDJuQ1hGQWZ6RzJUOFJJa1JNdWNMRVdldnZZQnM0?=
 =?utf-8?B?MG0veE1jWW5BaFRMekRnRExuTFExczBjYVhXQi92ekNVRURMM0dXVG1VbnBq?=
 =?utf-8?B?Y0o0NzlJUFRKVUdRZ0pDa0EwZkQvMThRbHlkeVB1WVZjZXRaNGJJMExvYUlv?=
 =?utf-8?B?cVBYRFBCaFVXWWtEODhicjFNL2xQY3lJZWw0N0o4Nk9RZWllcUgxZW85Sjhr?=
 =?utf-8?B?NVBvTlFTaDdrSGw5SnQrcEwzaGJYbVVITnhwOGVsaHJkRjJPNG1Ma3lFWWFa?=
 =?utf-8?B?UTZ3dEQzOHRJOUtYN0ZCN0dPbkNZQ0xDZnRiSFg5QWMxUy93NjhzUEFiTVFQ?=
 =?utf-8?B?bXR0RFZJNy81RXR6YmtHanVTUUgvZ3BabjhueXpBbW1QWldQQ3Z0b2xXQlBT?=
 =?utf-8?B?anJqWnB5Vml6WDM2WGVQRnBiSHY1R25YMnI4RlBmR3JBdUdybzZGVTJFcElx?=
 =?utf-8?B?UDZVbGRraGRJRnN0eWY0VDlFQ3IyY2tsRHpuWi9QZWczK1NRNHFuLzJweDJC?=
 =?utf-8?B?M3dyRE5ieEVLeU9qUmNDT0xnVkFiK2FUOU5pM1BTTjZRRitNQ0JBUlQ5TDhs?=
 =?utf-8?B?VUNEb2k4aHJlcDFBMXBLdDVoQTVqQWZnR0h1emdMNEZxaFplUXJOV0FDbjBP?=
 =?utf-8?B?OFNaNEF2WkNzMmRVdVhwZ2lxVzRta0h5STgwMmZaL0ZIWHcxdFRMR2ZUV3U4?=
 =?utf-8?B?dCt1dkg0dlRJQ1lOaDY0dXMrMS9ZM1FwQlBMWjVINEtBYzJuQ1oyT3pOcDBH?=
 =?utf-8?B?VkNPVndocjVNNlg5ZkN5UTZnTDljS1ZocG5ESGkzQkxxbGc9PQ==?=
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:ErrorRetry;CAT:NONE;SFS:(13230040)(376014)(35042699022)(1800799024)(36860700013)(82310400026);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Oct 2024 17:11:18.2189
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1757806b-91e8-4b2c-a827-08dcf9cf08df
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:
	DB1PEPF0003922F.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB10987

SGkgQW5kcmV3LA0KDQo+IE9uIDMxIE9jdCAyMDI0LCBhdCAxNjo1NSwgQW5kcmV3IENvb3BlciA8
YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4gd3JvdGU6DQo+IA0KPiBBIHJlY2VudCBjcHBjaGVj
ayBydW4gd2FzIGZvdW5kIHRvIGZhaWw6DQo+IA0KPiAgaHR0cHM6Ly9naXRsYWIuY29tL3hlbi1w
cm9qZWN0L3Blb3BsZS9hbmR5aGhwL3hlbi8tL2pvYnMvODIzNzE2NzQ3Mg0KPiANCj4gd2l0aDoN
Cj4gDQo+ICAidHlwZSBtaXNtYXRjaCEgY2FsbCBpczx0eXBlPigpIGJlZm9yZSBnZXQ8dHlwZT4o
KSIgJiYgaXM8c3RkOjpzdHJpbmc+KCkNCj4gIG1ha2VbM106ICoqKiBbYXJjaC94ODYvYm9vdC9N
YWtlZmlsZToyODogYXJjaC94ODYvYm9vdC9yZWxvYy10cmFtcG9saW5lLjMyLm9dIEVycm9yIDEN
Cj4gDQo+IFRoaXMgdHVybnMgb3V0IHRvIGJlIGEgcGFyYWxsZWwgYnVpbGQgaXNzdWUsIGNvbWJp
bmVkIHdpdGggYSByZWNlbnQgY2hhbmdlIHRvDQo+IHg4Ni4gIE5vdGFibHksIHdlIG5vdyBoYXZl
IGEgY2FzZSB3aGVyZSB3ZSBidWlsZCBib3RoOg0KPiANCj4gIENDICAgICAgYXJjaC94ODYvYm9v
dC9yZWxvYy10cmFtcG9saW5lLjMyLm8NCj4gIENDICAgICAgYXJjaC94ODYvYm9vdC9yZWxvYy10
cmFtcG9saW5lLm8NCj4gDQo+IGZyb20gdGhlIHNhbWUgb3JpZ2luYWwgQyBmaWxlLCBhbmQgY3Bw
Y2hlY2sgdXNlcyB0aGUgc291cmNlIEMgZmlsZSBhcyB0aGUga2V5DQo+IGZvciBnZW5lcmF0aW5n
IGl0J3MgaW50ZXJtZWRpYXRlIGZpbGVzLg0KPiANCj4gU3dpdGNoIGNwcGNoZWNrIHRvIHVzZSB0
aGUgb2JqZWN0IGZpbGUgYXMgdGhlIHVuaXF1ZSBrZXkgaW5zdGVhZC4NCj4gDQo+IEZpeGVzOiA0
NWJmZmY2NTExNzMgKCJ4ZW4vbWlzcmE6IHhlbi1hbmFseXNpcy5weTogZml4IHBhcmFsbGVsIGFu
YWx5c2lzIENwcGNoZWNrIGVycm9ycyIpDQo+IEZpeGVzOiBkYjhhY2YzMWY5NmIgKCJ4ODYvYm9v
dDogUmV1c2UgY29kZSB0byByZWxvY2F0ZSB0cmFtcG9saW5lIikNCj4gU3VnZ2VzdGVkLWJ5OiBM
dWNhIEZhbmNlbGx1IDxsdWNhLmZhbmNlbGx1QGFybS5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEFu
ZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+DQo+IOKAlA0KDQpMb29rcyBn
b29kIHRvIG1lIQ0KSeKAmXZlIGFsc28gY2hlY2tlZCB3aXRoIGFuZCB3aXRob3V0IHRoZSBwYXRj
aCBhbmQgSSBjYW7igJl0IHNlZSBhbnkgcmVncmVzc2lvbiBpbiB0ZXJtcyBvZiBjcHBjaGVjaw0K
aXNzdWVzIHJlcG9ydC4NCg0KUmV2aWV3ZWQtYnk6IEx1Y2EgRmFuY2VsbHUgPGx1Y2EuZmFuY2Vs
bHVAYXJtLmNvbT4NClRlc3RlZC1ieTogTHVjYSBGYW5jZWxsdSA8bHVjYS5mYW5jZWxsdUBhcm0u
Y29tPg0KDQo=


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 17:18:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 17:18:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828855.1243882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Yo9-0006sk-PP; Thu, 31 Oct 2024 17:18:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828855.1243882; Thu, 31 Oct 2024 17: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 1t6Yo9-0006sd-MS; Thu, 31 Oct 2024 17:18:05 +0000
Received: by outflank-mailman (input) for mailman id 828855;
 Thu, 31 Oct 2024 17:18: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6Yo8-0006sX-9m
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 17:18:04 +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 131ccc76-97ac-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 18:17:58 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5c9693dc739so1595266a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 10:17:58 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ceac76ff0fsm759765a12.27.2024.10.31.10.17.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 10:17:57 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 131ccc76-97ac-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MmYiLCJoZWxvIjoibWFpbC1lZDEteDUyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjEzMWNjYzc2LTk3YWMtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwMzk1MDc4LjQ3NTY5NSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730395078; x=1730999878; 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=uzRJu1sXEDeQJEF7/mCzuJgulFnuSBdDoLCl+bYEHuY=;
        b=fzVbixAViIRk82cyWeM45EjEVZJXJ78pf4VT3nE7RgaBTf2dKVllfUixuJJi8FJTWH
         A4TUVJs2MZQjcH1sL5lI1pdSmctvhE/GDEf8OLCwkoxGylDbaqBi5iRbWOjCL8WtWd10
         0p08hFQA/oV8wq6N7WJVvPNDgUIj1V4u09AWE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730395078; x=1730999878;
        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=uzRJu1sXEDeQJEF7/mCzuJgulFnuSBdDoLCl+bYEHuY=;
        b=j5Hm1LK8NfF8BrEE1uUDgpw2C7ee1olOrGXZnc53huaeqHdjGhL3OkQ6bnIiKAyxWX
         bck2dY+Nrub7crRK4JrALwr8z0BdqpzMH2swNLPK8qp7WzU1++2a5OtgwTr3Q+lBYIjh
         p+LxMlLnjh+RQM6xjxe+tfmdCnvGTTIKNArIEcS9+KrCuLJxBv/3Z34rK9826udj0mS2
         nLKZK/wuYe1i3wyX1XmWicALoieR7E5eNDDSJKOhbWKSGBr/nTpYrDeZs7gfk94W5REO
         XEtw0fotYPjG3nMtmWCzUnd9zNXMagVcLUzM9ojChx/lSNPGw7kAxAE3/2sjn/g7mgZP
         eTiQ==
X-Forwarded-Encrypted: i=1; AJvYcCXRQoePIsCz1tffVK3VhGZ8vsx8z5OoLyA9MT+X+2D6+WTKywZRlJazxueQYj7EjDxAVc1kQs5Wgtc=@lists.xenproject.org
X-Gm-Message-State: AOJu0Yy4TrxD9lNn9WwgZxPgEKsF7ugxXMzC2KgHK/QZTpX6qXzVMHPP
	4AD4/bynezyeCTjudIi37BlO8VYLSxqJWPXk8uiskOi7oQjJMVEl6bEfojqPflLKUG44kJ/DbZJ
	J
X-Google-Smtp-Source: AGHT+IHZX06NFgcBX6G648tacbpfWhzBgix2ljoVffnzG5deVBE5CD7J8Rc6Xk1lMh5AJMl1R4LjcQ==
X-Received: by 2002:a05:6402:348c:b0:5c9:5c8a:99e5 with SMTP id 4fb4d7f45d1cf-5ceb936a3d1mr364885a12.30.1730395077724;
        Thu, 31 Oct 2024 10:17:57 -0700 (PDT)
Message-ID: <6877d26c-144f-4b4e-968c-28b535cb3db1@citrix.com>
Date: Thu, 31 Oct 2024 17:17:55 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mm: ensure L2 is always freed if empty
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>
References: <20241030114852.55530-1-roger.pau@citrix.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <20241030114852.55530-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/10/2024 11:48 am, Roger Pau Monne wrote:
> The current logic in modify_xen_mappings() allows for fully empty L2 tables to
> not be freed and unhooked from the parent L3 if the last L2 slot is not
> populated.
>
> Ensure that even when an L2 slot is empty the logic to check whether the whole
> L2 can be removed is not skipped.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> I've attempted to find a Fixes tag for this one, but I'm afraid there have been
> many changes in the function, and it's possibly the code that introduced the L2
> freeing (4376c05c31132) the one that failed to originally adjust this case.
> ---
>  xen/arch/x86/mm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
> index d537a799bced..0f53dcebad95 100644
> --- a/xen/arch/x86/mm.c
> +++ b/xen/arch/x86/mm.c
> @@ -5717,7 +5717,7 @@ int modify_xen_mappings(unsigned long s, unsigned long e, unsigned int nf)
>  
>              v += 1UL << L2_PAGETABLE_SHIFT;
>              v &= ~((1UL << L2_PAGETABLE_SHIFT) - 1);
> -            continue;
> +            goto check_l3;
>          }
>  
>          if ( l2e_get_flags(*pl2e) & _PAGE_PSE )

https://gitlab.com/xen-project/hardware/xen/-/jobs/8240163332

That's hitting the BUG_ON(!nr_bootmem_regions); in alloc_boot_pages().

  [<ffff82d04060407a>] R alloc_boot_pages+0x46/0xbc
  [<ffff82d04033a76f>] S alloc_xen_pagetable+0x5e/0x60
  [<ffff82d04033a7af>] F alloc_mapped_pagetable+0xd/0x3e
  [<ffff82d04033a948>] F arch/x86/mm.c#virt_to_xen_l2e+0x78/0xec
  [<ffff82d04033ba71>] F map_pages_to_xen+0xefb/0x1079
  [<ffff82d04063d55c>] F arch/x86/setup#bootstrap_map_addr+0x95/0xff

I think what's happened is you've "freed" l2_bootmap[], causing
bootstrap_map_addr() to now need to allocate memory.

I've reverted for now, per Roger's request on Matrix.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 17:25:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 17:25:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828860.1243891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6Yuo-0008R8-Ew; Thu, 31 Oct 2024 17:24:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828860.1243891; Thu, 31 Oct 2024 17:24: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 1t6Yuo-0008R1-CF; Thu, 31 Oct 2024 17:24:58 +0000
Received: by outflank-mailman (input) for mailman id 828860;
 Thu, 31 Oct 2024 17:24: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6Yun-0008Qv-0z
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 17:24:57 +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 09b6f107-97ad-11ef-a0c3-8be0dac302b0;
 Thu, 31 Oct 2024 18:24:52 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a9a68480164so158515166b.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 10:24:52 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e56684374sm86982966b.209.2024.10.31.10.24.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 10:24:50 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 09b6f107-97ad-11ef-a0c3-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmUiLCJoZWxvIjoibWFpbC1lajEteDYyZS5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjA5YjZmMTA3LTk3YWQtMTFlZi1hMGMzLThiZTBkYWMzMDJiMCIsInRzIjoxNzMwMzk1NDkyLjEzNzQ3Nywic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730395492; x=1731000292; 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=cXE1d9PP0AYAvCI+10bUqLyytpIjhrWXmekLrQ60Am8=;
        b=emxYRe+e3XlHy1pWvxgiTxhMNz5knjkLkQ6SSiQT55wrBa1b6a74PJqCcB1sSiXXrf
         QzuxRlPrY2JGP9hlQKIOaxuIdr4QjRF4VGP3QvNDfIo/B9UD3FJNSUOPv8w/X7UBK8iA
         2NP+nn1mGDw8TsfQHkjFw4T+Ps49GVtnSj/78=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730395492; x=1731000292;
        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=cXE1d9PP0AYAvCI+10bUqLyytpIjhrWXmekLrQ60Am8=;
        b=weMKmBADDeEiAHlRurfnvsoPvgSUWCky2QwHchSg7T8nKdur50a6zw0uHq2UrdkZtL
         gpKSH7gAyVdc/RoTEbBv2pd/oJ4d+gVfauG7luXCB0b4RYqDEzHoWeCWRX5ZaMsh1ywO
         Qo4SFO9wDWlTZNBaYS5jorH6Kk06VoL94DYLd81z0Dymv9wfAbxOaAkSnGP9ozL1jSZj
         3TuU6gT6gbURn6hAbYuGWwHzhh5yHKgy4X72lf5P3WZepQQ1ETPJH3Ts1LjirLburDw7
         DL7+Wd0TCCHkcRY6N5IVZwFLhvi//eRoJPkG2SZxad4+WlmdhaN9lBxD9rLCE3s3/ElT
         bdqw==
X-Gm-Message-State: AOJu0Yy/Ze/Uvfb5SpOSZwyzMFu4rmMDTnur6Tapr5PyRqYJX5U77yfI
	3+2HXAwor96khvUilqTlUlWaVyb/ONHLR6pNed0jtqo5pQGisMtq2osQ9HsyGrQ=
X-Google-Smtp-Source: AGHT+IGcxeRtcidIzkUcA7yIPO6c+Jz3bItngEHalJwBNR35TFHNKRNTULFmQ0WegtJbilY6RewSLA==
X-Received: by 2002:a17:907:1b84:b0:a9a:bbcc:508c with SMTP id a640c23a62f3a-a9de5c91a6emr1334942566b.2.1730395491812;
        Thu, 31 Oct 2024 10:24:51 -0700 (PDT)
Message-ID: <52ddb738-7cff-4929-8ffd-3f288f87e373@citrix.com>
Date: Thu, 31 Oct 2024 17:24:48 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CI: Fix cppcheck parallel build more
To: Luca Fancellu <Luca.Fancellu@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
References: <20241031165505.3007713-1-andrew.cooper3@citrix.com>
 <D33A8FE6-B6D7-4E6A-82C2-1DB3E24FE97F@arm.com>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <D33A8FE6-B6D7-4E6A-82C2-1DB3E24FE97F@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 5:11 pm, Luca Fancellu wrote:
> Hi Andrew,
>
>> On 31 Oct 2024, at 16:55, Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>>
>> A recent cppcheck run was found to fail:
>>
>>  https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/8237167472
>>
>> with:
>>
>>  "type mismatch! call is<type>() before get<type>()" && is<std::string>()
>>  make[3]: *** [arch/x86/boot/Makefile:28: arch/x86/boot/reloc-trampoline.32.o] Error 1
>>
>> This turns out to be a parallel build issue, combined with a recent change to
>> x86.  Notably, we now have a case where we build both:
>>
>>  CC      arch/x86/boot/reloc-trampoline.32.o
>>  CC      arch/x86/boot/reloc-trampoline.o
>>
>> from the same original C file, and cppcheck uses the source C file as the key
>> for generating it's intermediate files.
>>
>> Switch cppcheck to use the object file as the unique key instead.
>>
>> Fixes: 45bfff651173 ("xen/misra: xen-analysis.py: fix parallel analysis Cppcheck errors")
>> Fixes: db8acf31f96b ("x86/boot: Reuse code to relocate trampoline")
>> Suggested-by: Luca Fancellu <luca.fancellu@arm.com>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> —
> Looks good to me!
> I’ve also checked with and without the patch and I can’t see any regression in terms of cppcheck
> issues report.
>
> Reviewed-by: Luca Fancellu <luca.fancellu@arm.com>
> Tested-by: Luca Fancellu <luca.fancellu@arm.com>
>

Thanks.  I'll get this committed right away.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 19:01:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 19:01:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828878.1243913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6aPe-0005IY-CW; Thu, 31 Oct 2024 19:00:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828878.1243913; Thu, 31 Oct 2024 19:00: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 1t6aPe-0005IR-8m; Thu, 31 Oct 2024 19:00:54 +0000
Received: by outflank-mailman (input) for mailman id 828878;
 Thu, 31 Oct 2024 19:00: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6aPd-0005IL-1Z
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 19:00:53 +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 7018956d-97ba-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 20:00:47 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-5c99be0a4bbso1810055a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 12:00:47 -0700 (PDT)
Received: from andrewcoop.eng.citrite.net ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e565e0891sm94332766b.98.2024.10.31.12.00.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 31 Oct 2024 12:00:45 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7018956d-97ba-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzQiLCJoZWxvIjoibWFpbC1lZDEteDUzNC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjcwMTg5NTZkLTk3YmEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwNDAxMjQ3LjM5NzYyNSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730401246; x=1731006046; 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=HSPYxB1TK86b4dP8NuYoBYRZTdjnpNqMJPF3eEV1fwk=;
        b=vjRLHuq50VcEzm2H/mwpM3p6zLrKYFWr2M7AsbweSD+0IKZNbFWHb3vMsdH3PmUxJz
         X1U57qOnTnfaVGvmNKshQJZVqkZ8dYbfYWgONA1luvOZnux6c4L5PuiQD+Ygvw78OmHw
         JmIyGagK4sCP4y9DOxoiAIROyOsgjFGZ62fRs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730401246; x=1731006046;
        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=HSPYxB1TK86b4dP8NuYoBYRZTdjnpNqMJPF3eEV1fwk=;
        b=HOfm/MwbVocXgsdW9VkRpzCt21uYKNfV0Gn/8931Za/efbMyK0hwqi27SH8Q419F/c
         vvLBCD7QFLXsf0wmlbbyaWmMlWGrtm7C4tEx0Otd6w01oef07C02Ay6MnM2qiMcgjfN7
         66AHDckIrcHb6KcdLmAs7y1TREJy7FpncoqbwLjsZ86xflveP11uJsdjyv/9jC0xpEEy
         6xX0k2hNu5UV54QODDtXVocLYoeCOuoH3YDa+58zndZTIZ468HyQd1j9bglkGVNx8FiE
         53pMjwHz/6xFdDT8a+g5B/39nEhurOqQVRx32p6YqgrWd6SJL7j8M7Na9N5BDCxIxMO+
         k9Sg==
X-Gm-Message-State: AOJu0YwkK7fYTHeFIYbj3/pbmW6CMdlQHNpaVw8AoygSFe4q5l2EKjnf
	LakJ5KZ6A3+VGZ3yAVXStWkrOgfN2MysSnFQ5THn3HxQO4G8R0cNAQ2W0y2eLzDK+fKjOT0/Cav
	S
X-Google-Smtp-Source: AGHT+IGKlZlyONY1Fh4qwaATUwJRX3iBK2z94KdnNv9S7V5AJnpfxRC3/Y4tfT48UgAVS1MIuASymA==
X-Received: by 2002:a17:907:1b81:b0:a9e:471e:ce4a with SMTP id a640c23a62f3a-a9e471ed2admr406154766b.11.1730401246249;
        Thu, 31 Oct 2024 12:00:46 -0700 (PDT)
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Anthony PERARD <anthony.perard@vates.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Michal Orzel <michal.orzel@amd.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Victor Lira <victorm.lira@amd.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH] CI: Drop alpine-3.18-rootfs-export and use test-artefacts
Date: Thu, 31 Oct 2024 19:00:43 +0000
Message-Id: <20241031190043.3011299-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The Argo work already moved this artefact into the new form.  Reuse that, and
drop one test job.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Anthony PERARD <anthony.perard@vates.tech>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Doug Goldstein <cardoe@cardoe.com>
CC: Victor Lira <victorm.lira@amd.com>
CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1522281815
---
 automation/gitlab-ci/build.yaml | 11 -----------
 automation/gitlab-ci/test.yaml  |  4 +++-
 2 files changed, 3 insertions(+), 12 deletions(-)

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index af2b1ceba3a4..b5ca2c3f1833 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -304,17 +304,6 @@ qemu-system-aarch64-6.0.0-arm32-export:
 
 # x86_64 test artifacts
 
-alpine-3.18-rootfs-export:
-  extends: .test-jobs-artifact-common
-  image: registry.gitlab.com/xen-project/xen/tests-artifacts/alpine:3.18
-  script:
-    - mkdir binaries && cp /initrd.tar.gz binaries/initrd.tar.gz
-  artifacts:
-    paths:
-      - binaries/initrd.tar.gz
-  tags:
-    - x86_64
-
 kernel-6.1.19-export:
   extends: .test-jobs-artifact-common
   image: registry.gitlab.com/xen-project/xen/tests-artifacts/kernel:6.1.19
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
index e8f57e87bd19..fe023dae0d42 100644
--- a/automation/gitlab-ci/test.yaml
+++ b/automation/gitlab-ci/test.yaml
@@ -11,8 +11,10 @@
   - qemu-system-aarch64-6.0.0-arm32-export
 
 .x86-64-test-needs: &x86-64-test-needs
-  - alpine-3.18-rootfs-export
   - kernel-6.1.19-export
+  - project: xen-project/hardware/test-artifacts
+    job: x86_64-rootfs-alpine-3.18
+    ref: master
 
 .qemu-arm64:
   extends: .test-jobs-common
-- 
2.39.5



From xen-devel-bounces@lists.xenproject.org Thu Oct 31 19:02:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 19:02:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828884.1243923 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6aRM-0005ok-MM; Thu, 31 Oct 2024 19:02:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828884.1243923; Thu, 31 Oct 2024 19:02: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 1t6aRM-0005od-J8; Thu, 31 Oct 2024 19:02:40 +0000
Received: by outflank-mailman (input) for mailman id 828884;
 Thu, 31 Oct 2024 19:02: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6aRL-0005oX-Q8
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 19:02:39 +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 aed312f2-97ba-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 20:02:32 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5c903f5bd0eso2150024a12.3
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 12:02:32 -0700 (PDT)
Received: from [10.125.226.166] ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5ceac74c667sm818877a12.20.2024.10.31.12.02.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 12:02:31 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aed312f2-97ba-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo1MzAiLCJoZWxvIjoibWFpbC1lZDEteDUzMC5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImFlZDMxMmYyLTk3YmEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwNDAxMzUyLjY0Mjk3OCwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730401352; x=1731006152; 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=WqWEkMhVGpBJV/aCyXRNSUlAVML40hW5M18Fxc3Z4ik=;
        b=FDJXempGEvbV68wvk9/tmEJldiIb8Vy7nN/zB7+VoPejn3vMEcdJipyfeS1qE+edc+
         rU+7ssMasGWpwmg8IRYG+LDUcw/Xbs/u0kmYWxuyNs99UrdRX+rBalbIH+x7I84Jezn2
         +JHQUec9pKR3HeExzH0Bir+46Ak6A45aP7Ehw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730401352; x=1731006152;
        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=WqWEkMhVGpBJV/aCyXRNSUlAVML40hW5M18Fxc3Z4ik=;
        b=MnkypGjat6bWguLpIJjhhsVe3FA2ZtkdM6b1FsYQVxJRJnYD/hvNMXUjheL2jj4tLG
         6bJ3aoaXVSHo6W8mFCG9XMy3jerB74SZ5/lLgIf4U0LCtNEyyQZxCSTYM/X1Naq1tRks
         v8rY578QZRiVLr+qL36v+1+gXZ3RIvl7zzewhoLc+0kj4fR1yK+uYI0lHGzuFNS3SaZY
         ff0xiGfPihT9m9hCR3i28kbbncYTToquP1OHE4nnqurnZk5rwO3tH1jAY0ukWnWKhMaK
         Xe7jT0ED5203pQRLHZpxfaGVK5YX7PCBG2HpdwciZlBqXfCUl+dML8WIhVVshKCqbnKM
         /E3g==
X-Forwarded-Encrypted: i=1; AJvYcCUbFHXeVJqpS2yLZftHwN3h0fdpRPEWIILcs5akKxSEGk6cIFsOJSCf4e3OsiJ7nJX3qrbrIEILGn4=@lists.xenproject.org
X-Gm-Message-State: AOJu0YxTbGzcXUs6AfLc35ag+UgkCBHSKhm3agbB+tq9y+gOeF/X6D2c
	BKzxdz6lf4dEnXN9E0YPjiDMpqjshed3WbmR21kAWtaBpanqBs/9yBQ7hAYxyWE=
X-Google-Smtp-Source: AGHT+IGHwYW++ALWE+WOqgw47HylAcxaD99KyI04tp5U+tvNg40ejp+CKZDef4qx7N4njp4DnC9jQw==
X-Received: by 2002:a05:6402:e09:b0:5cb:632c:c638 with SMTP id 4fb4d7f45d1cf-5cea9689dd2mr3832746a12.16.1730401352051;
        Thu, 31 Oct 2024 12:02:32 -0700 (PDT)
Message-ID: <49f258b5-c4e5-4bb7-848b-5779d43c1f58@citrix.com>
Date: Thu, 31 Oct 2024 19:02:29 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] SUPPORT.md: Argo: Upgrade status to Tech Preview
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Christopher Clark <christopher.w.clark@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Daniel Smith <dpsmith@apertussolutions.com>, Rich Persaud
 <persaur@gmail.com>, Jason Andryuk <jandryuk@gmail.com>,
 openxt@googlegroups.com
References: <20241019190652.21559-1-christopher.w.clark@gmail.com>
 <8d419b12-efbf-4314-8148-3ece0baa779b@citrix.com>
Content-Language: en-GB
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <8d419b12-efbf-4314-8148-3ece0baa779b@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21/10/2024 1:41 pm, Andrew Cooper wrote:
> On 19/10/2024 8:06 pm, Christopher Clark wrote:
>> Recent patches to xen-devel indicate active interest in Argo within the Xen
>> community, and as the feature has been documented and in use by
>> OpenXT for multiple years, update the Xen SUPPORT.md statement of status.
>>
>> Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
> We also discussed this in XenSummit didn't we?
>
> If so, I'd suggest that gets mentioned too.

Testing has now gone ahead.  I'm going take this patch so SUPPORT.md is
less far from reality.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 22:44:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 22:44:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828908.1243997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6du2-0005Cj-8l; Thu, 31 Oct 2024 22:44:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828908.1243997; Thu, 31 Oct 2024 22:44: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 1t6du2-0005Cc-4y; Thu, 31 Oct 2024 22:44:30 +0000
Received: by outflank-mailman (input) for mailman id 828908;
 Thu, 31 Oct 2024 22:44: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=XMx1=R3=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t6du0-0005CW-IV
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 22:44:28 +0000
Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aceae390-97d9-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 23:44:24 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by nyc.source.kernel.org (Postfix) with ESMTP id 737D1A4472F;
 Thu, 31 Oct 2024 22:42:27 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0CF9CC4CEC3;
 Thu, 31 Oct 2024 22:44: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: aceae390-97d9-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjE0Ny43NS4xOTMuOTEiLCJoZWxvIjoibnljLnNvdXJjZS5rZXJuZWwub3JnIn0=
X-Custom-Transaction: eyJpZCI6ImFjZWFlMzkwLTk3ZDktMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwNDE0NjY0LjM5NzMzNywic2VuZGVyIjoic3N0YWJlbGxpbmlAa2VybmVsLm9yZyIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730414662;
	bh=Y9h6mUCWj0NSxmj7P1m/mkeboHfP7U/a6mTN8EZ5YIA=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=VirnayixKru5siGZyocDMATgFchsUlka+0HV3usZGqV06HqIBN1XCdYvkY4TRNhvU
	 jVOnh6ki0Swl6e57vicALZdPQ5wjaOitn3QqwAoSiSi8+O/hoOHBJfpHs0rNdnBXRr
	 f9Uo4OUGb+fDLZiQCvueMRhHkagRt9Qer6hNjj/b5idW6i+emTDFDC9QccV95xe5pa
	 /fD3XxTngWhTxuCMoKzmwLxnYB0Vznm0BRQW/tV36LuzkHDzNZlB40Fmk45OYrBs7+
	 oTDehSNvaM7TJHs5WVoePKaDG27N04Bnvnd1rHm6R4v2+maV7thDKAEdLeLuSGWEwx
	 SMHe++nlElhuQ==
Date: Thu, 31 Oct 2024 15:44:20 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Xen-devel <xen-devel@lists.xenproject.org>, 
    Jan Beulich <JBeulich@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
Subject: Re: [PATCH] scripts: Refine git-checkout.sh change for different
 branches
In-Reply-To: <5d8f492d-6fa0-434d-8d01-f28376ed20be@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410311543430.2525410@ubuntu-linux-20-04-desktop>
References: <20241031134702.2913536-1-andrew.cooper3@citrix.com> <5d8f492d-6fa0-434d-8d01-f28376ed20be@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1271158771-1730414646=:2525410"
Content-ID: <alpine.DEB.2.22.394.2410311544110.2525410@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-1271158771-1730414646=:2525410
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2410311544111.2525410@ubuntu-linux-20-04-desktop>



On Thu, 31 Oct 2024, Andrew Cooper wrote:

> On 31/10/2024 1:47 pm, Andrew Cooper wrote:
> > The change works for divergent branches, but doesn't work for explicit SHAs.
> >
> > Instead of passing `-b $TAG` to clone, explicitly fetch the $TAG we want after
> > cloning.
> >
> > Fixes: c554ec124b12 ("scripts: Fix git-checkout.sh to work with branches other than master")
> > Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > ---
> > CC: Jan Beulich <JBeulich@suse.com>
> > CC: Stefano Stabellini <sstabellini@kernel.org>
> > CC: Julien Grall <julien@xen.org>
> >
> > Speculative fix, pending CI:
> >   https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1521847529
> 
> Nope.  While this works on staging, it breaks on 4.17
> 
> Back to the drawing board.
 
I am not certain about this but maybe we need:

  $GIT fetch origin

without the $TAG
--8323329-1271158771-1730414646=:2525410--


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 22:47:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 22:47:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828912.1244007 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6dwW-0005vp-Kg; Thu, 31 Oct 2024 22:47:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828912.1244007; Thu, 31 Oct 2024 22:47: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 1t6dwW-0005vi-HO; Thu, 31 Oct 2024 22:47:04 +0000
Received: by outflank-mailman (input) for mailman id 828912;
 Thu, 31 Oct 2024 22:47: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=XMx1=R3=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1t6dwV-0005vc-Mn
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 22:47:03 +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 09123689-97da-11ef-99a3-01e77a169b0f;
 Thu, 31 Oct 2024 23:46:59 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id BDB315CA5CC;
 Thu, 31 Oct 2024 22:46:12 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45945C4CECF;
 Thu, 31 Oct 2024 22:46:56 +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: 09123689-97da-11ef-99a3-01e77a169b0f
X-Custom-Connection: eyJyZW1vdGVpcCI6IjEzOS4xNzguODQuMjE3IiwiaGVsbyI6ImRmdy5zb3VyY2Uua2VybmVsLm9yZyJ9
X-Custom-Transaction: eyJpZCI6IjA5MTIzNjg5LTk3ZGEtMTFlZi05OWEzLTAxZTc3YTE2OWIwZiIsInRzIjoxNzMwNDE0ODE5LjQ5NTAwMSwic2VuZGVyIjoic3N0YWJlbGxpbmlAa2VybmVsLm9yZyIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1730414817;
	bh=3K2IQboHACs9WYyxjefiedhp9XVGZ7ypUXS66BGUTGs=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=a8+8eoTPu2PMYs2TVZX+hFIJhon2FC72y5AdoO4/PCQ/OjaVDPvDZh5gPp3vmrr4/
	 g83b1kGSDkAAdlukVJ/0c4eNQ2mbQ40WzVgc48kpO+5muRvUA4i9IMJEgoNIF0foA7
	 z6Dh2hL2gXkeXGNXCF34zwSVReOTZ28TYC5Wjg/tGH88Wgym3U7uvuTD/BKmWuKfhl
	 dmwuIXD7+H10LyG9aUVZZRDvWJWxATqXKJ7OqdgJfkyDa0YQzmFDnxEnLaagHvnaU9
	 tsIOgWzf1NS7dSZPY87P0S0tgcyp0qUfbamYyzrGDKNSpybpoAesDSrSkjam1zjsIt
	 HECSbngpuFafA==
Date: Thu, 31 Oct 2024 15:46:54 -0700 (PDT)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Xen-devel <xen-devel@lists.xenproject.org>, 
    Anthony PERARD <anthony.perard@vates.tech>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>, 
    Victor Lira <victorm.lira@amd.com>, 
    =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: [PATCH] CI: Drop alpine-3.18-rootfs-export and use
 test-artefacts
In-Reply-To: <20241031190043.3011299-1-andrew.cooper3@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2410311546170.2525410@ubuntu-linux-20-04-desktop>
References: <20241031190043.3011299-1-andrew.cooper3@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-1718299478-1730414817=:2525410"

  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-1718299478-1730414817=:2525410
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Thu, 31 Oct 2024, Andrew Cooper wrote:
> The Argo work already moved this artefact into the new form.  Reuse that, and
> drop one test job.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

This is good but should we also remove
automation/tests-artifacts/alpine/3.18.dockerfile since we are at it?


> ---
> CC: Anthony PERARD <anthony.perard@vates.tech>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Michal Orzel <michal.orzel@amd.com>
> CC: Doug Goldstein <cardoe@cardoe.com>
> CC: Victor Lira <victorm.lira@amd.com>
> CC: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
> 
> https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1522281815
> ---
>  automation/gitlab-ci/build.yaml | 11 -----------
>  automation/gitlab-ci/test.yaml  |  4 +++-
>  2 files changed, 3 insertions(+), 12 deletions(-)
> 
> diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
> index af2b1ceba3a4..b5ca2c3f1833 100644
> --- a/automation/gitlab-ci/build.yaml
> +++ b/automation/gitlab-ci/build.yaml
> @@ -304,17 +304,6 @@ qemu-system-aarch64-6.0.0-arm32-export:
>  
>  # x86_64 test artifacts
>  
> -alpine-3.18-rootfs-export:
> -  extends: .test-jobs-artifact-common
> -  image: registry.gitlab.com/xen-project/xen/tests-artifacts/alpine:3.18
> -  script:
> -    - mkdir binaries && cp /initrd.tar.gz binaries/initrd.tar.gz
> -  artifacts:
> -    paths:
> -      - binaries/initrd.tar.gz
> -  tags:
> -    - x86_64
> -
>  kernel-6.1.19-export:
>    extends: .test-jobs-artifact-common
>    image: registry.gitlab.com/xen-project/xen/tests-artifacts/kernel:6.1.19
> diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
> index e8f57e87bd19..fe023dae0d42 100644
> --- a/automation/gitlab-ci/test.yaml
> +++ b/automation/gitlab-ci/test.yaml
> @@ -11,8 +11,10 @@
>    - qemu-system-aarch64-6.0.0-arm32-export
>  
>  .x86-64-test-needs: &x86-64-test-needs
> -  - alpine-3.18-rootfs-export
>    - kernel-6.1.19-export
> +  - project: xen-project/hardware/test-artifacts
> +    job: x86_64-rootfs-alpine-3.18
> +    ref: master
>  
>  .qemu-arm64:
>    extends: .test-jobs-common
> -- 
> 2.39.5
> 
--8323329-1718299478-1730414817=:2525410--


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 22:53:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 22:53:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828918.1244016 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6e2O-0007kn-6f; Thu, 31 Oct 2024 22:53:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828918.1244016; Thu, 31 Oct 2024 22: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 1t6e2O-0007kg-3s; Thu, 31 Oct 2024 22:53:08 +0000
Received: by outflank-mailman (input) for mailman id 828918;
 Thu, 31 Oct 2024 22:53: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6e2M-0007kZ-Km
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 22:53:06 +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 e167e2b0-97da-11ef-a0c5-8be0dac302b0;
 Thu, 31 Oct 2024 23:53:01 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-4315baa51d8so12973145e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 15:53:01 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4327d5e7c8bsm41910345e9.26.2024.10.31.15.53.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 15:53:00 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e167e2b0-97da-11ef-a0c5-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjozMmYiLCJoZWxvIjoibWFpbC13bTEteDMyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6ImUxNjdlMmIwLTk3ZGEtMTFlZi1hMGM1LThiZTBkYWMzMDJiMCIsInRzIjoxNzMwNDE1MTgxLjQwODE1MSwic2VuZGVyIjoiYW5kcmV3LmNvb3BlckBjbG91ZC5jb20iLCJyZWNpcGllbnQiOiJ4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcifQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730415181; x=1731019981; 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=nU0ddsqSD7jM58inbL6QlbEbRm+nqHttQg+xn/YS3HY=;
        b=kc8mXnlR5XrN9E966gw+KXTisANPYlxgOu0KNRcdqVWlFs5WmMVqRJZ4bvJ8p3uec0
         +sB+FsLeGCUnRtDcgZ/fKbBwZtbLDA9a6H9V36hP46vwgAcWzf7JZuFCQ9Bxxd6hnLF8
         O5aOg3JJQ31Q1gJeAjPEiNezqvPv4LmEZvxCM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730415181; x=1731019981;
        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=nU0ddsqSD7jM58inbL6QlbEbRm+nqHttQg+xn/YS3HY=;
        b=eRQd3OK+Ph1DoyT+cctjb9XNfgIAjhth9IZvwCifuv+ND2dpez0SaqOunIOkQV37Yp
         8APNd65Br3GrLEEioTFZAOrN3N99VLwlQbtLTdnL9++HFiRo+PVmMErgCUCWNG6t8P4Y
         /c6AY3Znkk6a9DnaIeio1lg1fUeb+W4EtJW5BXKkhvvOkto5tAAZpPXnJxgzHUipSXkX
         prxDvb8z4bPO+Nl9u+HuGgcEN0S2mkoSQbId3wratWUm7sI7TEkSFszKG/hSWl2TIk2G
         7PhjVW+u8/RFy+WJXWsx7Vpzfnmx4PrOKefj/xQLKOXhojGVwbj+6nwojPNOJzpyGgUl
         oBmA==
X-Gm-Message-State: AOJu0YwOe+XTOwiP4oTJVwCghEtvXgsdzP0vUDUpUvGm3MXdyHtu9+Xj
	iZGWd16aAIgAh/Se916nYr3tzzqdv9C1MBi/jFm2UwECpvhSMSirXcNqWi8A2Z70KNs/vUeJF0K
	G
X-Google-Smtp-Source: AGHT+IHZPQAN5FEtrXs6R/hULqQQvquls7ef03DO2pfA5i/ErmgBjKLgSFwdaqsPRtxFbqFuPmyoKg==
X-Received: by 2002:a05:600c:4f85:b0:430:5887:c238 with SMTP id 5b1f17b1804b1-4327b6fd60dmr42943455e9.11.1730415180668;
        Thu, 31 Oct 2024 15:53:00 -0700 (PDT)
Message-ID: <79c9b208-05f2-4520-80c8-930ef5cc4b5a@citrix.com>
Date: Thu, 31 Oct 2024 22:52:59 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] scripts: Refine git-checkout.sh change for different
 branches
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Jan Beulich <JBeulich@suse.com>, Julien Grall <julien@xen.org>
References: <20241031134702.2913536-1-andrew.cooper3@citrix.com>
 <5d8f492d-6fa0-434d-8d01-f28376ed20be@citrix.com>
 <alpine.DEB.2.22.394.2410311543430.2525410@ubuntu-linux-20-04-desktop>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <alpine.DEB.2.22.394.2410311543430.2525410@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/10/2024 10:44 pm, Stefano Stabellini wrote:
>
> On Thu, 31 Oct 2024, Andrew Cooper wrote:
>
>> On 31/10/2024 1:47 pm, Andrew Cooper wrote:
>>> The change works for divergent branches, but doesn't work for explicit SHAs.
>>>
>>> Instead of passing `-b $TAG` to clone, explicitly fetch the $TAG we want after
>>> cloning.
>>>
>>> Fixes: c554ec124b12 ("scripts: Fix git-checkout.sh to work with branches other than master")
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>> CC: Jan Beulich <JBeulich@suse.com>
>>> CC: Stefano Stabellini <sstabellini@kernel.org>
>>> CC: Julien Grall <julien@xen.org>
>>>
>>> Speculative fix, pending CI:
>>>   https://gitlab.com/xen-project/people/andyhhp/xen/-/pipelines/1521847529
>> Nope.  While this works on staging, it breaks on 4.17
>>
>> Back to the drawing board.
>  
> I am not certain about this but maybe we need:
>
>   $GIT fetch origin
>
> without the $TAG

You need the $TAG to guide what to pull when it's not a parent of master.

For real tags (which live in a global namespace), and real SHAs (don't
need any further reference), creating a branch called `dummy` from them
works fine.

The problem for branches is that $GIT fetch origin $TAG only updates
FETCH_HEAD and doesn't create a remote branch of the same name.  You can
do that with $GIT fetch origin $TAG:$TAG but only if you know that $TAG
is really a branch in the first place.

Which circles back around to the original problem of not being able to
disambiguate what $TAG is until you've got the whole repository.

I'm not aware of any way to ask the remote "do you know what type of
object $TAG actually is?" and that's probably because it would be a
reverse lookup through refs/ to figure out if it was a branch or not.

I'm sure there must be a way of doing this...

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Oct 31 22:55:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 31 Oct 2024 22:55:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.828926.1244027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1t6e4z-0008VW-MV; Thu, 31 Oct 2024 22:55:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 828926.1244027; Thu, 31 Oct 2024 22:55: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 1t6e4z-0008VP-JL; Thu, 31 Oct 2024 22:55:49 +0000
Received: by outflank-mailman (input) for mailman id 828926;
 Thu, 31 Oct 2024 22:55: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=7hTS=R3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1t6e4y-0008VJ-Ed
 for xen-devel@lists.xenproject.org; Thu, 31 Oct 2024 22:55:48 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4352e3c9-97db-11ef-a0c5-8be0dac302b0;
 Thu, 31 Oct 2024 23:55:45 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a99f646ff1bso175398266b.2
 for <xen-devel@lists.xenproject.org>; Thu, 31 Oct 2024 15:55:45 -0700 (PDT)
Received: from [192.168.1.10] (host-92-26-98-202.as13285.net. [92.26.98.202])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-a9e564c56e2sm112228766b.64.2024.10.31.15.55.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 31 Oct 2024 15:55:44 -0700 (PDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4352e3c9-97db-11ef-a0c5-8be0dac302b0
X-Custom-Connection: eyJyZW1vdGVpcCI6IjJhMDA6MTQ1MDo0ODY0OjIwOjo2MmYiLCJoZWxvIjoibWFpbC1lajEteDYyZi5nb29nbGUuY29tIn0=
X-Custom-Transaction: eyJpZCI6IjQzNTJlM2M5LTk3ZGItMTFlZi1hMGM1LThiZTBkYWMzMDJiMCIsInRzIjoxNzMwNDE1MzQ1LjY3ODAyLCJzZW5kZXIiOiJhbmRyZXcuY29vcGVyQGNsb3VkLmNvbSIsInJlY2lwaWVudCI6Inhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyJ9
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1730415345; x=1731020145; 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=Q/7Qz+/MR47a3Vufo7EB8bZvTHFEvxP1tnYkpba4pq8=;
        b=kvylfm62EfLhvXcAMhrcfSwZbX/6IFCAR6lJg0vJ+l85Qd0TWI/3G/NoN9lo0O8SXs
         uYsXp7n1S4E+C7Tjha94Gq1TcoVe0UG2XLA7G6R06h0L48nPitRFT9iwFQGSwfaH8qh6
         pmFgYP/kwKbKPQNE/+5G81NAR4Vyx7a2ibTMg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1730415345; x=1731020145;
        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=Q/7Qz+/MR47a3Vufo7EB8bZvTHFEvxP1tnYkpba4pq8=;
        b=iDjPD1axR7drAPSS6PUBtbQhkjZDQNLhVSTjXhD6ju2kLEDGA+O0bQlGEim8TN4TCe
         hBGVjGBqG7JgizvdxnG9/ZPOQ/gvf8mV+mgv6PVo3NmsFeYBa8dSgZ2eu7IwY4b+eQWZ
         vGFT54eZZwqHcNTsDO2tFr+BzePatE2Gvgy0RLgC4DuYgyGadzhSJEVEEcazDQfPDc02
         ccK8AgDFenquQHLZyyrfQUJQT8PP2BlyEut54nyKkwnVamsQtZp2qnJAC8qgge7FK207
         lS86sRgkIJHoMYkEcQLsXZZCV1fPw2Ov9M62pidKHkQzOTMbS8k+yLEwWdIN0FMkxmXE
         CmQQ==
X-Gm-Message-State: AOJu0Yy9zT1idBsL/+i0BurOKAy+4kRmuCtcLP4Y4cpCC/dBcx381oDr
	3CO6ZqX5THUbdb2cWOBisE9B5ozQSrSfcXB97CNRqJ8KGIBx8Xugu8Xlh2+v2gM=
X-Google-Smtp-Source: AGHT+IHdDAR+gN/rf5cqX6byr10yEals8nu1MPrfkvJ1oE1govnNcuJJZHk9QGb34yqSnsklokroKw==
X-Received: by 2002:a17:907:2d88:b0:a9a:c691:dcbc with SMTP id a640c23a62f3a-a9e3a57a2e5mr946068766b.12.1730415345112;
        Thu, 31 Oct 2024 15:55:45 -0700 (PDT)
Message-ID: <86a60aec-f259-41be-92a0-ce66ce24f4ae@citrix.com>
Date: Thu, 31 Oct 2024 22:55:44 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CI: Drop alpine-3.18-rootfs-export and use test-artefacts
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Anthony PERARD <anthony.perard@vates.tech>,
 Michal Orzel <michal.orzel@amd.com>, Doug Goldstein <cardoe@cardoe.com>,
 Victor Lira <victorm.lira@amd.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20241031190043.3011299-1-andrew.cooper3@citrix.com>
 <alpine.DEB.2.22.394.2410311546170.2525410@ubuntu-linux-20-04-desktop>
Content-Language: en-GB
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 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
 6+ahAA==
In-Reply-To: <alpine.DEB.2.22.394.2410311546170.2525410@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 31/10/2024 10:46 pm, Stefano Stabellini wrote:
> On Thu, 31 Oct 2024, Andrew Cooper wrote:
>> The Argo work already moved this artefact into the new form.  Reuse that, and
>> drop one test job.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> This is good but should we also remove
> automation/tests-artifacts/alpine/3.18.dockerfile since we are at it?

Well, that's another thing that needs careful consideration.

That dockerfile needs updating in tandem with the build container (or
lib$FOO.so's don't work when running the test), and it's hard enough to
keep track of things when they're all in one repo.

~Andrew


